Bootstrap

408王道计算机组成原理强化——中央处理器及大题解构_muxop

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

1.普通寄存器:一定会有控制信号控制读/写(可能分开,2bit;可能合并,1bit)

2.暂存寄存器:单总线结构下,总线只能有一个输入,但是ALU需要有两个数据,故需要通过先把一个数据放入暂存寄存器中,然后以一个数据从总线输入,一个数据从暂存寄存器输入的方式实现ALU运算

3.通用寄存器组:需要有控制信号用于选择是哪个通用寄存器

4.带有移位功能的寄存器:每左移一位,真值 * 2;每右移一位,真值 / 2

5.带自增功能的寄存器:PC寄存器可以通过自增功能自动实现PC + “1”

4和5这种带有特殊功能的寄存器需要有控制信号(至少1bit,支持的功能越多,控制信号的位数也就越多,需要保留一种状态表示什么都不做,即直送)控制其是否进行此功能:例如PC,当给它施加的op = 1时,即自增(PC++ );op = 0时,即不自增

6.带有其他功能的寄存器:取反、移位等等

数据产生变化的地方除了操作元件外,寄存器本身也可能支持对数据进行某种简单处理

4.中断

1.硬件识别:硬件检测到中断号后,根据中断号决定执行的中断处理程序在哪,并执行

2.软件识别:检测到中断后,先统一执行一个中断的入口程序,入口程序再根据当前的异常跳转到具体的中断处理程序

5.数据通路

除了控制器之外的所有用于实现指令功能的部件

6.五段式指令流水线

①数据冒险:前一条指令未写入,后一条指令就读出(后一条指令需要基于前一条指令的结果时)

(1)前面的指令:写寄存器发生在第五个段(WB)

(2)后面的指令:读(与前面指令相同的)寄存器发生在第二个段(ID)

(3)若后面的指令是前面指令的相邻三条指令之一(即后面的指令是前面的指令后的第一条、第二条、第三条指令),则会发生数据冒险;若后面的指令不是前面指令的相邻三条指令之一(即后面的指令至少是前面指令后的第四条指令),则不会发生数据冒险

(4)分析思路:一条一条指令从前往后分析,如果一条指令写了某个寄存器,则观察与之相邻的三条指令中,是否有哪一条指令读取同一寄存器

I1写入S2,I3和I4读出S2,且两者都是I1相邻的三条指令,故I1与I3,I1与I4数据冒险

I2写入S3,I3读出S3,I2是I3相邻的三条指令之一,故I2和I3数据冒险

I2只会改变S3的值,而I4中并未使用S3,故I2和I4不会数据冒险

I3写入S2,I4读出S2,I4是I2相邻的三条指令之一,故I3和I4数据冒险

②控制冒险:在上一条指令的IF阶段完成后(取值阶段),PC会自动实现+ “1”,即会指向下一条相邻指令;但当前执行的指令如果会改变PC的值,且下一条指令的IF在上一条指令的EX前进行,则会发生控制冒险;

有条件转移(M,第四个段改变PC):EX

;