《计算机组成与设计:软硬件接口》笔记

《计算机组成与设计:软硬件接口》笔记

记录一下关于学习计算机组成与设计的记录…

参考书籍:《计算机组成与设计硬件/软件接口》

计算机硬件的操作数

与高级语言程序不同,MIPS算术运算指令的操作数是很严格的,它们必须来自寄存器。寄存器由硬件直接构建且数量有限,是计算机硬件设计的基本元素。

可以把寄存器想象成构造计算机”建筑“的”砖块“, 在MIPS体系结构中寄存器大小为32位,32位为一组的情况经常出现,因此在MIPS体系结构中将其称为 (word)。

字:计算机中的基本访问单位,通常是 32 位为一组

高级语言的变量与寄存器的一个主要区别在千寄存器的数量有限,寄存器个数限制为32个的理由可以表示为硬件设计三条基本原则中的第二条 : 设计原则2: 越小越快,而大量的寄存器可能会使时钟周期变长,因为电信号传输更远的距离必然花费更长的时间 。

尽管可以简单使用序号0 - 31表示相应的寄存器,但MIPS约定书写指令时用 一个 $符后面跟两个字符来代表一个寄存器。

现在,我们使用$s0,$s1来表示与 C 和 Java程序中的变量所对应的寄存器,用$t0, $t1 …来表示将程序编译为MlPS指令时所需的临时寄存器。

例如:

f = (g + h) - (i + j)

变量f、g、h、i和 j 依次分配给寄存器$s0$s1$s2$s3$s4。编译后的MIPS代码是什么?

除了将变量用上述寄存器代替,将两个临时变量用$t0$t1 代替

add $t0, $s1, $s2 # g + h
add $t1, $s3, $s4 # i + j
sub $t0, $t0, $t1 # (g + h) - (i + j) 

存储器操作数

处理器只能将少量数据保存在寄存器中,但存储器有数十亿的数据元素。因此,数据结构(如数组和结构)是存放在存储器中的

如上所述,MIPS 的算术运算指令只对寄存器进行操作,因此,MIPS 必须包含在存储器和寄存器之间传送数据的指令。这些指令叫作数据传送指令(data transfer instruction)。为了访问存储器中的一个字,指令必须给出存储器地址(ad-dress)。存储器就是一个很大的下标从0开始的一维数组,地址就相当于数组的下标。例如,在图2-2中,第三个数据元素的地址为2,存放的数据为10

数据传送指令:在存储器和寄存器之间移动数据的命令。
地址:用于在存储器空间中指明某特定数据元素位置的值

数据从存储器复制到寄存器的数据传送指令通常叫取数(load)指令。取数指令的格式是操作码后接着目标寄存器,再后面是用来访问存储器的常数和寄存器。常数和第二个寄存器中的值相加即得存储器地址。实际的MIPS 取数指令助记符为Iw,为load word的缩写

与取数指令相对应的指令通常叫作存数(store)指令;它将数据从寄存器复制到存储器。存数指令的格式和取数指令相似:首先是操作码,接着是包含待存储数据的寄存器,然后是数组元素的偏量,最后是基址寄存器。同样,MIPS地址由常数和基址寄存器内容共同决定。实际的MIPS 存数指令为 sw,即 store word 的缩写

因为MIPS是按字节编址的,所以字的起始地址必 须是4的倍数。这叫对齐限制 (alignment restriction) , 许多体系结构都有这样的限制

例如

假设变量h存放在寄存器$s2中,数组A的基址放在$s3中。试编译下面的C赋值语句:

A[12] = h + A[8]

lw $t0, 32($s3) # A[8]
add $t0, $s2, $t0 # h + A[8]
sw $t0, 48($s3) # Stores h + A[8] back into A[12]

为了得到正确的字节地址,与基址寄 存器$s3相加的偏移量必须是 4 x 8, 即 32, 这样才能正确读到 A [8]

数据传送指令中的常量(本例中为8和12) 称为偏移量 (offset) , 存放基址的寄存器(本例中为$s3) 称为基址寄存器 (base register)

许多程序的变量个数要远多于计算机的寄存器个数。因此,编译器会尽量将最常用的变量保持在寄存器中,而将其他的变量放在存储器中,方法是使用取数/存数指令在寄存器和存储器之间传送变量。将不常使用的变量(或稍后才使用的变量)存回到存储器中的过程叫作寄存器溢出

寄存器与存储器相比,访问时间短、吞吐率高,寄存器中的数据访问速度快并易于利用,访问寄存器相对于访问存储器功耗更小。因此,为了获得高性能和节约功耗,指令集的体系结构必须拥有足够的寄存器,并且编译器必须高效率地利用这些寄存器。

《计算机组成与设计:软硬件接口》笔记

https://poluk2001.github.io/2024/02/share-computer-foundation.html

作者

Poluk

发布于

2024-02-29

更新于

2024-02-29

许可协议

评论