【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)

配套教材:
Computer Organization and Design: The Hardware / Software Interface (5th Edition)
建议先修课程:数字逻辑电路、C / C++、汇编语言。
这是专业必修课《计算机组成原理》的复习指引。建议将本复习指导与博客中的《简明操作系统原理》配合复习。
在本文的最后附有复习指导的高清截图。需要掌握的概念在文档截图中以蓝色标识,并用可读性更好的字体显示 Linux 命令和代码。代码部分语法高亮。
计算机组成原理不是语言课,本复习指导对用到的编程语言的语法的讲解也不会很细致。如果不知道代码中的一些关键字、指令或函数的具体用法,你应该自行查找相关资料。


第四章 处理器

第一节 数据通路

1、回忆在数字逻辑电路课程中学习到的内容:集成触发器作为计算机的各种芯片中的基本部件,常采用边沿触发(edge-trigger)方式进行工作:由专门的时钟(clock)信号来控制数字电路的动作。只有时钟在上升沿(正沿)或下降沿(负沿)时,读写等动作才被允许进行。这保证了在数字电路的动作期间,输出结果不因输入的波动而引起变化,大大提高了计算机的稳定性和抗干扰能力。

2、寄存器堆(register file)指的是多个寄存器组成的阵列通常由快速的静态随机读写存储器(SRAM)实现。 这种RAM具有专门的读端口与写端口,可以多路并发访问不同的寄存器。每个寄存器用寄存器号(register number)来唯一标识。

3、数据通路(datapath),指的是指令执行过程中,数据所经过的路径,包括路径中的部件。
下图是一个数据通路的一部分。这部分用于实现程序计数器的自增(增加4)和取指令。取到的指令被数据通路的其它部分使用。
本节的图和表格的内容不用背下来,能看着图表流利说出不同的指令怎样通过数据通路即可。

4、基于MIPS指令集架构的处理器中的一个处理分支指令beq的数据通路示例如下:

取指令后,指令中刻画偏移的立即数进行带符号扩展。由于MIPS的所有指令都按4字节对齐,所以刻画偏移的立即数要左两位。这不需要用到一整个功能完全的位移单元,因为位移方向和位数都是固定的,所以可以只用高度简化的硬件。加法器用于根据基址(取指令后为PC的值+4)和偏移地址来计算出条件分支的目标地址。指令被按照指令格式分成若干部分,传入相应的端口。Read Register端输入的是寄存器号(5个bit),Read Data端用于输出读取到的数据。一个专门的ALU用于比较beq中的两个数(从寄存器传入)是否相等。比较的实现方式是相减,当两数相等时输出0。条件判定的结果会被输出到分支控制逻辑,后者决定是否跳至分支目标。ALU Operation端用于输入控制信号,ALU根据输入的不同来执行不同的运算。出于简便的考虑,ALU的端口并未全部画出。

5、MIPS指令集允许延迟分支,也就是说无论分支的条件是否成立,有一些指令总是在顺序执行或跳至分支之前先执行。

6、以下是基于MIPS的CPU的一条数据通路:

指令根据指令格式拆分成若干部分进入不同端口。R型指令的目标寄存器号和源寄存器号分别进入Write register和Read register端。虽然指令中的一部分也会一同输入Sign-extend端(当指令格式不包含16位偏移时,输入的是不正确的内容),但是接下来的MUX会根据控制信号(随指令的不同而不同)决定输出哪一路给ALU。ALU的运算结果同时输入到内存的Address端和Write data端。之后的MUX也会根据指令的类型选择正确的一路(地址或算术、逻辑等表达式的值)输出。有的指令要求将内存中的数据输出到寄存器(例如load指令),那么MentoReg和RegWrite信号输入有效,相应数据被写入寄存器。有的指令只要求将结果写入寄存器,那么MemtoReg无效,RegWrite有效,运算结果经过最右侧的MUX后被写入寄存器。

7、以下是基于MIPS的CPU中的一个数据通路的示例:

取指令的时候,指令地址由PC给出,传入指令内存的Read address端。PC的值和常数4被送入一个单独的ALU中进行PC的自增。取得的指令从指令内存送入寄存器和负责符号扩展的专用电路。如果指令包含偏移地址,那么16位的偏移地址在符号扩展后左移2位,通过专门的ALU计算新的地址。由PCSrc端输入控制信号的MUX会根据指令的类型输出新的PC值:对非跳转指令,PC正常+4;如果要求跳转,就输出跳转的目标地址。剩下的部分和上一个图相同。也就是说这个数据通路比上一个数据通路多了一个功能:处理分支。

8、以下是基于MIPS的CPU的一条更完整的数据通路:

回忆MIPS的指令格式:

可以看出,指令的高6位用于产生控制信号(用蓝色线代表传送控制信号的通路)。R型指令的最低6位,也就是funct部分来控制ALU的动作。ALUOp是高2位。ALUOp和指令的对应关系如下:(X代表无关项(don’t-care term))

funct部分的低4位与ALU执行的运算的对应关系如下:

蓝色线代表控制信号的输入位置。这7个控制信号的无效和有效分别代表的意义如下:

电路图上没有标出控制信号PCSrc:这个信号改为由右上角的与门给出。当beq指令的分支条件满足时,Branch端和ALU的0输出端同时输出高电平,与门输出高电平,PC的值为分支的目标地址。
不同类型指令的操作码和控制信号如下:

至此,一个单周期的实现就基本完成了。这条数据通路已经可以正确执行绝大多数MIPS指令。

9、我们为上面的数据通路添加无条件跳转指令。MIPS的跳转指令j的格式如下:

添加该功能后,执行j的数据通路如下:

右上角多了一个MUX。取完j指令后PC已经加了4,这部分会与跳转的左移两位后的偏移合并为新的地址。

10、虽然上述单周期设计已经能正确工作,但现今的芯片中,除非芯片非常简单,否则一般不会使用这种设计了。一个芯片能跑多高的频率,是受最长的数据通路制约的。LOAD指令经过的数据通路一般最长,比如在上述设计中,执行一次要经过5个功能模块:指令内存、寄存器堆、ALU、数据内存、寄存器堆。虽这个指令能在1周期内完成,不过就因为这个周期最长的指令,我们不能把芯片的运行频率设定得过高,否则该指令就无法在1周期内正确执行完毕。下一节我们介绍流水线,这是进一步提升性能的重要方式。
【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第1张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第2张图片在这里插入图片描述【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第3张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第4张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第5张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第6张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第7张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第8张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第9张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第10张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第11张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第12张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第13张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第14张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第15张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第16张图片【梳理】计算机组成与设计 第4章 处理器 第1节 数据通路(内附文档高清截图)_第17张图片

你可能感兴趣的:(专业课,#,计算机组成原理)