要求存储器的编址单位,首先观察到计算机采用的是32位定长指令字,因此一条指令就是32位,即4B,根据表中可知一条指令所占地址空间为08048104H-08048100H=4H,因此所用的编制单位为字节(B)
将所有指令执行一遍即可发现规律
(3)
根据表中字段分析后16位OFFSET,即第六条指令的后16位即位OFFSET(注意转换成原码为-6)。
转移目标地址计算公式一般形式为目标地址=(PC)+指令字长+k*OFFSET。
(3)首先了解什么是结构相关(资源冲突),数据相关(数据冲突),控制相关(控制冲突)。
数据冲突一般是前一个指令中的数据还未写回寄存器,后面的指令就开始想要读该寄存器,此时后面的指令就得先等前一个指令写回寄存器才能开始读,这种问题可以将后面的指令暂停几个周期,或者用数据旁路技术:是一种用于解决流水线处理器中数据冒险的技术。数据旁路允许流水线中的后续指令在早期阶段就接收到所需的数据,而不是等待数据写回到寄存器文件。这样可以避免流水线停顿,提高流水线的效率。
指令2,3,4,6都读寄存器阶段都需要等前一个指令写回寄存器。发生数据冲突。
而控制冲突一般是转移指令,因此只有指令6。
根据指令流水线只要隔了三个时钟周期就不会发生数据冲突,这是因为间隔了三个时钟周期后后一条指令的读寄存器操作在前一个指令的写回寄存器操作之后。
分支指令是计算机科学中用于改变程序执行流程的指令。在高级语言中,通常使用条件语句来实现分支,而在机器语言和汇编语言中,则使用跳跃指令(jump instructions)来定义分支。分支指令可以使程序根据不同的条件跳转到不同的代码段执行,从而实现条件判断和循环等逻辑控制。
因此根据题目所说分支指令执行完以后会间隔三个时钟周期,即执行完指令六会间隔三个周期,因此不会发生数据冲突。