计算机系统结构总结_Instruction Set Architecture
Posted pdev
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机系统结构总结_Instruction Set Architecture相关的知识,希望对你有一定的参考价值。
Textbook:
《计算机组成与设计——硬件/软件接口》 HI
《计算机体系结构——量化研究方法》 QR
这节我们来看CPU内部的一些东西。
Instruction Set Architecture
指令集是介于硬件(CPU microarchitecture / IO / ....)和软件(compiler / OS / ....)之间的一个interface。硬件(486-586-PentiumPro)和软件(Win98-WinXP)都会更新换代,但指令集很少变化(比如x86)。现在比较流行的是General-purpose register architecture,这也是我们重点学习的。早期还有stack architecture和accumulator architecture,不过已经不流行了...
Java VM:HI P89
Register
寄存器是在cpu内部的存储单元,访问简单,速度也非常快。
和前面说的cache不同,寄存器是对软件可见的(explictly managed)。比如下面的一段程序:
1 void foo(){ 2 .... 3 } 4 5 void bar(){ 6 int a,b; 7 a=233; 8 foo(); 9 printf("%d ", a); 10 }
foo()和bar()都可能会用满所有的寄存器。那么在Line 8调用foo()之前,编译器就要手动把bar()当前运行时寄存器的值备份一下,等foo()结束后再还原回来。
Memory Addressing
指令可以分为以下几类:
- Load/Store就是在内存和寄存器之间搬运数据......
- ALU operation是用来计算的。它操作数据的主要来源是寄存器
- 在RISC中,ALU inst只能从寄存器中读写,不能读内存地址。而在x86中一条指令最多可以读写1个内存地址
那么指令是如何进行memory addressing呢?要考虑如下几个问题:
- Bytes addressed。即每个地址包含多少个byte。大多数情况下是一次读一个byte(参考这张图)。也有些奇怪的机器是一次读一个word(多个bytes)
- Little/Big Endian
- Alignment。比如4bytes alignment表示每个数据的起始地址必须是4 bytes的倍数。
Addressing Mode:(PPT P6)
Control Flow Instructions
以上是关于计算机系统结构总结_Instruction Set Architecture的主要内容,如果未能解决你的问题,请参考以下文章
计算机系统结构总结_Memory Hierarchy and Cache Optimization