室内设计网站排行榜前十名有哪些汽车专业科技网站建设
计算机组成原理
 数据冒险、控制冒险、结构冒险
 

对所有用户(所有程序员)可见:PSW、PC、通用寄存器
- PSW(条件转移需要用到,程序员使用CMP指令的时候也需要用到所以是对用户可见)
 - PC(跳转指令需要使用PC+n ,所以对用户可见)
 - 通用寄存器(程序员写指令可以使用到通用寄存器R) 
- 通用寄存器:包括(数据寄存器、地址指针寄存器、变址寄存器)
 
 
对所有用户(所有程序员)透明:MAR,MDR,IR,Cache, 微程序结构和功能,控制存储器,锁存器/暂存器
- (这些都是辅助CPU工作,所以是透明的)
 - 微指令寄存器属于微程序控制器的组成部分,它是硬件设计者的任务。
 - 控制存储器:存放微指令即控制信号
 - 锁存器/暂存器:流水线间存储数据
 - MAR:存储器地址寄存器
 - MDR:存储器数据寄存器
 
1.结构冒险

结构冒险=结构冲突=资源冲突

load指令是取数指令;Store指令是存数指令
运算类指令
算术运算指令
- 加法指令 
- 用于实现两个操作数的相加操作。例如在 RISC-V 指令集中有
add指令,它可以将两个寄存器中的值相加,并将结果存放在一个寄存器中。 - 格式可能为
add rd, rs1, rs2,其中rd是目的寄存器,用于存放结果,rs1和rs2是源寄存器,提供操作数。 
 - 用于实现两个操作数的相加操作。例如在 RISC-V 指令集中有
 - 减法指令 
- 实现两个操作数的相减操作。如
sub指令,它从rs1寄存器的值中减去rs2寄存器的值,并将结果存放在rd寄存器中。 
 - 实现两个操作数的相减操作。如
 - 乘法指令 
- 完成两个操作数的乘法运算。不同的指令集可能有不同的乘法指令形式。例如,有些指令集可能有
mul指令用于无符号数乘法,imul指令用于有符号数乘法等。 
 - 完成两个操作数的乘法运算。不同的指令集可能有不同的乘法指令形式。例如,有些指令集可能有
 - 除法指令 
- 用于执行除法操作。像
div指令用于无符号数除法,idiv指令用于有符号数除法。在执行除法指令时,通常会涉及到商和余数的处理。 
 - 用于执行除法操作。像
 
逻辑运算指令
- 与指令 
- 实现按位与操作。例如
and指令,它对rs1和rs2寄存器中的对应位进行与操作,并将结果存放在rd寄存器中。 
 - 实现按位与操作。例如
 - 或指令 
- 执行按位或操作。如
or指令,将rs1和rs2寄存器中的对应位进行或操作,结果存于rd寄存器。 
 - 执行按位或操作。如
 - 非指令 
- 也叫取反指令,对一个操作数的每一位进行取反操作。在一些指令集中可能有
not指令来实现这个功能。 
 - 也叫取反指令,对一个操作数的每一位进行取反操作。在一些指令集中可能有
 - 异或指令 
- 进行按位异或操作。例如
xor指令,对rs1和rs2寄存器中的对应位进行异或操作,结果放在rd寄存器中。 
 - 进行按位异或操作。例如
 
移位运算指令
- 逻辑左移指令 
- 将一个操作数的所有位向左移动指定的位数,右边空出的位用 0 填充。例如
shl指令。 
 - 将一个操作数的所有位向左移动指定的位数,右边空出的位用 0 填充。例如
 - 逻辑右移指令 
- 把一个操作数的所有位向右移动指定的位数,左边空出的位用 0 填充。比如
shr指令。 
 - 把一个操作数的所有位向右移动指定的位数,左边空出的位用 0 填充。比如
 - 算术右移指令 
- 对于有符号数,将其所有位向右移动指定的位数,左边空出的位用符号位填充。通常有
sar指令来实现。 
 - 对于有符号数,将其所有位向右移动指定的位数,左边空出的位用符号位填充。通常有
 
2.数据冒险的分析和处理

3.控制冒险的分析和处理
注意:修改PC只在M阶段

4.采用转发技术

Load-use:load指令在M(访存阶段才会产生结果),故采用转发旁路已经不能解决数据冒险。





