本文是关于计算机系统结构实验一(MIPS指令系统和MIPS体系结构)和实验二(流水线及流水线中的冲突),遇到的一些问题。

一、关于字

B:byte 字节指令

H:half word 半字节指令

W:word 字节指令

二、关于访存

按字或半字访存,无论给定地址是字(半字)中的哪一个字节的地址,都会自动转换为该字(半字)的首字节的地址。例如:MIPS中字长4字节,32位(红色框);半字2字节,16位(蓝色框)。无论你给定的是第一个红框里的7C(0x00000000)/00(0x00000001)/08(0x00000002)/24(0x00000003)的哪一的地址,只要是按字访存,都会自动转换为7C的地址0x00000000,取出的内容都是2408007C,**一定要注意,这里是小端法存储**

  • 小端法:高内存地址放整数的高位,低内存地址放整数的低位,这种方式叫倒着放,术语叫小端对齐。电脑X86和手机ARM都是小端对齐的。

  • 大端法:高内存地址放整数的低位,低内存地址放整数的高位,这种方式叫正着放,术语叫大端对齐。很多Unix服务器的cpu都是大端对齐的。

大端和小端字节序不是由操作系统决定的,而是由cpu架构决定的。

2020-04-19_150338

三、关于返回地址

关于这里的**返回地址**,后面的所有其他跳转指令的返回地址均指的是:当前指令的下一条指令的地址,也就是跳转指令如果不跳转(分支失败)的下一条指令的地址。例如:当前的指令的地址是0x00000068,那么返回地址就是0x00000072。还要注意offset要左移两位并进行符号位扩展后才能与PC相加得到转移地址。这里左移两位的目的是,将offset*4,使之成为4的倍数。也就是说PC+offset<<2代表了PC的后offset+1(因为PC+offset<<2的PC已经+1了)条指令为转移指令。

QQ图片20200419152549

四、关于定向技术

在定向技术中,因为其采用的是静态指令调度。非运算类指令必须在 ID段 得到之前指令的定向数据。并不能像运算类执行一样在 EX段 得到定向数据;如图所示:

307-实验二-第二组

五、关于STALL

“绿色ID后跟绿色ID” 和 “绿色STALL后跟绿色ID”的区别:
绿色ID表示该周期ID可以执行,但是存在RAW冲突,因此执行失败,因此紧接着要做绿色ID;
绿色STALL表示该周期由于上一条指令的红色STALL,导致该指令此周期停顿,下一周期执行绿色ID。

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

载入天数...载入时分秒...