版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、王春桃课程目标深入理解掌握CPU的工作原理理解掌握CPU的设计思想及方法理解掌握系统设计的思想和方法锻炼增强分析解决实际问题的能力内容提要回顾冯回顾冯诺依曼诺依曼CPU结构及工作原理结构及工作原理回顾计算机组成原理课程综合实验总结开放式实验CPU设计思路和方法回顾流水线工作原理,并归纳流水线设计思路无Cache流水线中结构冲突、数据相关、控制相关的解决办法设计无Cache的5段流水线2021-12-254冯诺依曼型计算机存储器输出输入运算器控制器数据信号控制信号地址信号现代CPU的结构示意图6CPU的功能1. CPU的功能指令控制(程序的顺序控制)操作控制(一条指令有若干操作信号实现)时间控制
2、(指令各个操作实施时间的定时)数据加工(算术运算和逻辑运算)执行指令取指令操作控制、时间控制7例:CPU的基本组成ALU数据缓冲寄存器状态字寄存器地址地址数据数据57061007661077304031地址地址OP码码地址码地址码101MOVR0,R1102LADR1,6103ADDR1,R2104STOR2,(R3)105JMP101106ANDR1,R3107地址寄存器程序计数器时序发生器操作控制器指令译码器OP码地址码R0R1R2R3数存cache指存cacheAR数据地址总线指令地址总线控制信号OCPCIR指令寄存器C1C2C1C2C3Cn8MOV指令的指令周期指令的指令周期-取指取指
3、 程序计数器程序计数器PC中装入第一条指令地址中装入第一条指令地址101(八进制);(八进制); PC的内容被放到指令地址总线的内容被放到指令地址总线ABUS(I)上,对指存进行译码,并启动读命令;)上,对指存进行译码,并启动读命令; 从从101号地址读出的号地址读出的MOV指令通过指令总线指令通过指令总线IBUS装入指令寄存器装入指令寄存器IR; 程序计数器内容加程序计数器内容加1,变成,变成102,为取下一条指令做好准备;,为取下一条指令做好准备; 指令寄存器中的操作码(指令寄存器中的操作码(OP)被译码;)被译码; CPU识别出是识别出是MOV指令,至此,取指周期即告结束。指令,至此,取
4、指周期即告结束。WR/RD95.2.2MOV指令的指令周期指令的指令周期-执行执行 操作控制器(操作控制器(OC)送出控制信号到通用寄存器,选择)送出控制信号到通用寄存器,选择R1(10)作源寄存器,)作源寄存器,选择选择R0作目标寄存器;作目标寄存器; OC送出控制信号到送出控制信号到ALU,指定,指定ALU做传送操作;做传送操作; OC送出控制信号,打开送出控制信号,打开ALU输出三态门,将输出三态门,将ALU输出送到数据总线输出送到数据总线DBUS上。上。注意,任何时候注意,任何时候DBUS上只能有一个数据。上只能有一个数据。 OC送出控制信号,将送出控制信号,将DBUS上的数据打入到数
5、据缓冲寄存器上的数据打入到数据缓冲寄存器DR(10);); OC送出控制信号,将送出控制信号,将DR中的数据中的数据10打入到目标寄存器打入到目标寄存器R0,R0的内容由的内容由00变为变为10。至此,。至此,MOV指令执行结束。指令执行结束。10ADD指令的指令周期指令的指令周期内容提要回顾冯诺依曼CPU结构及工作原理回顾回顾计算机组成原理计算机组成原理课程综合实验课程综合实验总结开放式实验CPU设计思路和方法回顾流水线工作原理,并归纳流水线设计思路无Cache流水线中结构冲突、数据相关、控制相关的解决办法设计无Cache的5段流水线上学期综合实验目标参考16位实验CPU的设计文档和设计,设
6、计8位的实验CPU下面以16位的实验CPU为例进行回顾,说明设计实现过程的思路和方法1. 设计指令系统指令分类及其对应的格式:单字长、双字长指令功能分组及OP码分配,形成指令总表 不同组指令的执行时长不等,为提高效率,进行时序分析与设计,以状态机形式反映上学期综合实验2. 确定CPU的结构图(亦即数据通路图)在设计时,可以先考虑比较粗的结构然后再逐渐细化例子说明控制器运算器内存上学期综合实验3. 确定控制信号与ALU运算有关的:ALU输入来源控制ALU_IN_SELALU运算类型控制AluFunc对初始进位信号的控制SCI对标志位C、Z、V、S的设置控制SST与寄存器有关的:SR、DRReg_
7、EN上学期综合实验对AR和IR接收控制REC(00无操作,01时AR接收PC,10时AR接收ALU输出,11时IR接收)对内存读写的控制/wr(0时为写内存,1时为读内存)对PC的更新控制PC_EN上学期综合实验综合上述的控制信号,可以得到该CPU的控制信号集合。在设计控制器时,只要根据相关的指令给出这些控制信号的值即可例子节拍指令编码SciSSTI7I6I5I4I3I2I1I0/WRREC注释000011110100000101AR-PC,PC-PC+1001001100000000110IR-MEM011ADD00000000000001000000100DR-DR+SRSUB000000
8、01000001000001100DR-DR-SRAND00000010000001000010100DR-DR and SRCMP00000011000000000001100DR-SRXOR00000100000001000100100DR-DR xor SRTEST00000101000000000010100DR and SR上学期综合实验4. 分析各个主要模块的功能及设计方法运算器部分包括了如下的模块:寄存器组、ALU输入复用模块、ALU运算器、标志寄存器控制部分包含了如下的模块:PC、IR、时序发生器(即TIMER)、控制单元内存部分AR在分析这些模块时,先分析它的功能,然后分析输
9、入输出信号,最后分析其实现逻辑在完成这些分析后,结合数据通路,分析各条指令的执行流程,以加深对CPU原理的理解上学期综合实验以ALU为例子功能:对两个16位的输入及低位进位输入cin,根据运算功能进行运算,产生相应的结果,并更改标志位输入输出信号:输入信号为:A、B、cin、alu_func输出信号为:Y、C、Z、V、S功能框图上学期综合实验功能实现逻辑根据alu_func进行相应的运算,如alu_func为000时进行加法运算,001时进行减法运算,如此类推根据运算结果,对标志符号C、Z、V、S进行相应的更新5. 编程实现根据上述第4点的分析,用VHDL语言编程实现6. 组装测试将各个部件通
10、过BDF方法或端口映射(port map)方式连接起来,形成一个整体的实验CPU分配管脚,并下载到实验平台上进行测试内容提要回顾冯诺依曼CPU结构及工作原理回顾计算机组成原理课程综合实验总结开放式实验总结开放式实验CPU设计思路和方法设计思路和方法回顾流水线工作原理,并归纳流水线设计思路无Cache流水线中结构冲突、数据相关、控制相关的解决办法设计无Cache的5段流水线实验CPU设计思路与方法开放式实验CPU设计可以看作是一个小规模的硬件开发项目硬件项目的开展框架与软件工程的开展相似,都遵循一定的思路与方法下面进行简要的归纳,以供参考设计方法:自顶向下、自底向上、两者结合实际应用中,多半是根
11、据需求来相应地实现,因此自顶向下更适合于根据需求进行分析设计。在完成分析设计后,进行逻辑编程实现时,这三种设计方法都可以根据实际需要而灵活使用CPU设计思路1. 设计指令系统确定指令格式。如指令总长度是多少;指令内部op码、data长度如何划分;data是1个、2个还是3个,分别占多少位等根据功能需求列出所有指令及功能,以表格形式给出进行时序分析与设计2. 设计数据通路图根据功能需求设计数据通路图可以采用由粗到精的方式展开24CPU设计思路3. 分析所需的控制信号,并针对每一条指令设定这些控制信号的具体值,为控制器的设计作好准备4. 分析各功能部件的功能与逻辑实现方法分析各功能部件的功能分析各
12、功能部件的输入输出信号设计各功能部件内部的具体实现逻辑5. 用VHDL语言编程实现各个功能部件6. 将各个功能部件用BDF方法或port map方法连接起来形成一个整体,然后分配管脚,下载到实验平台上进行仿真测试25实验CPU设计思路与方法利用这些方法,设计无cache的5段流水线内容提要回顾冯诺依曼CPU结构及工作原理回顾计算机组成原理课程综合实验总结开放式实验CPU设计思路和方法回顾流水线工作原理,并归纳流水线设计思路回顾流水线工作原理,并归纳流水线设计思路无Cache流水线中结构冲突、数据相关、控制相关的解决办法设计无Cache的5段流水线流水线的基本概念1.流水线技术把一个重复的过程分
13、解为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行进行。2.流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度。流水线的基本概念分类指令流水线部件流水线,如浮点加法流水线宏流水线一个经典的5段流水线 每一个周期作为一个流水段。在各段之间加上锁存器(流水寄存器)。 IF:取指令周期,根据PC值从内存中取指令ID:指令译码/读寄存器周期。进行指令译码,并 根据IR中的寄存器编号读出相应的数据EX:执行/有效地址计算周期。存储器访问指令:ALU把所指定的寄存
14、器的内容与偏 移量相加,形成用于访存的有效地址。寄存器寄存器ALU指令:ALU按照操作码指定的操 作对从通用寄存器组中读取的数据进行运算。寄存器立即数ALU指令:ALU按照操作码指定的操 作对从通用寄存器组中读取的第一操作数和立即数 进行运算。分支指令:ALU把偏移量与PC值相加,形成转移目标 的地址。同时,对在前一个周期读出的操作数进行 判断,确定分支是否成功。MEM:存储器访问分支完成周期。该周期处理的指令只有load、store和分支指令。 其他类型的指令在此周期不做任何操作。WB:写回周期。ALU运算指令和load指令在这个周期把结果数据写入通用寄存器组流水技术的特点流水线把一个处理过
15、程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。 时间长的段将成为流水线的瓶颈。流水线每一个功能部件的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。 作用:在相邻的两段之间传送数据,以保证提供后 面要用到的数据,并把各段的处理工作相互隔离。流水技术的特点流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。 流水线需要有通过时间和排空时间。通过时间:第一个任务从进入流水线到流出结果 所需的时间。排空时间:最后一个任务从进入流水线到流出结 果所需的时间。流水线设计思路最基本的:1
16、. 确定流水分段2. 每个流水分段用一个部件实现,各流水段间用寄存器连接起来流水线设计时需要解决的问题:各流水段的时间要近似一致,否则会存在瓶颈解决访存冲突问题解决数据相关问题解决控制相关问题1.流水线的结构冲突结构冲突举例:访存冲突 有些流水线处理机只有一个存储器,将数据和指令放在一起,访存指令会导致访存冲突。解决办法:插入暂停周期 (“流水线气泡”或“气泡”) 引入暂停后的时空图解决方法: 设置相互独立的指令存储器和数据存储器 或设置相互独立的指令Cache和数据Cache。由于访问同一个存储器而引起的结构冲突由于访问同一个存储器而引起的结构冲突 时间(时钟周期)时间(时钟周期) 1 2
17、3 4 5 6 M Reg ALU M Reg M Reg ALU M Reg M Reg ALU M Reg 7 8 load 指令指令 i+1 指令指令 i+2 暂暂 停停 M Reg ALU M 指令指令 i+3 气泡气泡 气泡气泡 气泡气泡 气泡气泡 气泡气泡 为消除结构冲突而插入的流水线气泡为消除结构冲突而插入的流水线气泡 3.4 流水线的相关与冲突引入暂停后的时空图引入暂停后的时空图指令编号指令编号 时钟周期时钟周期 1 12 23 34 45 56 67 78 89 91010指令指令i i IF IF ID ID EX EX MEM MEM WB WB 指令指令i+1 i+1
18、IF IF ID ID EX EX MEM MEM WB WB 指令指令i+2 i+2 IF IF ID ID EX EX MEM MEM WB WB WB WB 指令指令i+3 i+3 stallstall IFIFID ID EX EX MEM MEM WB WB 指令指令i+4 i+4 IFIFID ID EX EX MEM MEM WB WB 指令指令i+5 i+5 IFIFIDIDEX EX MEM MEM 有时流水线设计者允许结构冲突的存在主要原因:减少硬件成本如果把流水线中的所有功能单元完全流水化,或者 重复设置足够份数,那么所花费的成本将相当高。 2. 数据冲突 当相关的指令靠
19、得足够近时,它们在流水线中的重叠执行或者重新排序会改变指令读/写操作数的顺序,使之不同于它们非流水实现时的顺序,则发生了数据冲突。举例: DADD DADD R1R1, R2R2,R3R3 DSUB R4 DSUB R4, R1R1,R5R5 XOR R6 XOR R6, R1R1,R7R7 AND R8 AND R8, R1R1,R9R9 OR R10 OR R10,R1R1,R11R11 时间(时钟周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU DADD R1, R2, R3 DSUB
20、 R4,R1,R5 XOR R6,R1,R7 AND R8,R1,R9 IM Reg OR R10,R1,R11 流水线的数据冲突举例流水线的数据冲突举例 根据指令读访问和写访问的顺序,可以将数据冲 突分为3种类型。 考虑两条指令i和j,且i在j之前进入流水线,可能发生的数据冲突有:写后读冲突(RAW) 在 i 写入之前,j 先去读。 j 读出的内容是错误的。 这是最常见的一种数据冲突,它对应于真数据相关。 2. 数据冲突写后写冲突(WAW) 在 i 写入之前,j 先写。 最后写入的结果是 i 的。错误! 这种冲突对应于输出相关。 写后写冲突仅发生在这样的流水线中:流水线中不只一个段可以进行写
21、操作。当先前某条指令停顿时,允许其后续指令继续前进。 前面介绍的5段流水线不会发生写后写冲突。(只在WB段写寄存器) 2. 数据冲突3.4 流水线的相关与冲突读后写冲突(WAR) 在 i 读之前,j 先写。 i 读出的内容是错误的! 这种冲突仅发生在这样的情况下:有些指令的写结果操作提前了,而且有些指令的读操作滞后了。指令被重新排序了。 读后写冲突在前述5段流水线中不会发生。(读操作(在ID段)在写结果操作(在WB段)之前)通过定向技术减少数据冲突引起的停顿 (定向技术也称为旁路或短路)关键思想:在某条指令产生计算结果之前,其他指 令并不真正立即需要该计算结果,如果能够将该计 算结果从其产生的
22、地方直接送到其他指令需要它的 地方,那么就可以避免停顿。 工作过程演示2. 数据冲突 时间(时钟周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU DADD R1,R2,R3 DSUB R4,R1,R5 XOR R6,R1,R7 AND R8,R1,R9 IM Reg OR R10,R1,R11 采用定向技术后的流水线数据通路采用定向技术后的流水线数据通路 2.数据冲突当定向硬件检测到前面某条指令的结果寄存器就是当前指令的源寄存器时,控制逻辑会将前面那条指令的结果直接从其产生的地方定向到当前指
23、令所需的位置。结果数据不仅可以从某一功能部件的输出定向到其自身的输入,而且还可以定向到其他功能部件的输入。 举例: DSUB DSUB R1R1,R2R2,R3R3LD LD R5R5,0 0(R1R1)SD SD R5R5,1212(R1R1) 时间(时钟周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU LD R1,0(R2) DADD R4,R1,R5 AND R6,R1,R7 XOR R8,R1,R9 更多的定向路径更多的定向路径 需要停顿的数据冲突 并不是所有的数据冲突都可以用定向技
24、术来解决。 举例: LD LD R1R1,0 0(R2R2)DADD R4DADD R4,R1R1,R5R5AND R6AND R6,R1R1,R7R7XOR R8XOR R8,R1R1,R9R9q增加流水线互锁硬件,插入增加流水线互锁硬件,插入“暂停暂停”。 作用:作用:检测发现数据冲突,并使流水线停顿,直至检测发现数据冲突,并使流水线停顿,直至冲突消失。冲突消失。 3.4 流水线的相关与冲突 时间(时钟周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU LD R1,0(R2) DADD R
25、4,R1,R5 AND R6,R1,R7 XOR R8,R1,R9 无法将无法将LDLD指令的结果定向到指令的结果定向到DADDDADD指令指令 3.4 流水线的相关与冲突 时间(时钟周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU IM Reg LD R1,0(R2) DADD R4,R1,R5 AND R6, R1, R7 XOR R8,R1,R9 气泡 气泡 气泡 流水线互锁机制插入气泡后的执行过程流水线互锁机制插入气泡后的执行过程 LD R1LD R1,0 0(R2R2) IF IF ID ID EX EX MEM M
26、EM WB WB DADD R4DADD R4,R1R1,R5 R5 IF IF ID ID EX EX MEM MEM WB WB AND R6AND R6,R1R1,R7 R7 IF IF ID ID EX EX MEM MEM WB WB XOR R8XOR R8,R1R1,R9 R9 IF IF ID ID EX EX MEM MEM WB WB LD R1LD R1,0 0(R2R2) IF IF ID ID EX EX MEM MEM WB WB DADD R4DADD R4,R1R1,R5 R5 IF IF ID ID stall stall EX EX MEM MEM WB W
27、B AND R6AND R6,R1R1,R7 R7 IF IF stall stall ID ID EX EX MEM MEM WB WB XOR R8XOR R8,R1R1,R9 R9 stall stall IF IF ID ID EX EX MEM MEM 插入停顿前后的流水线时空图插入停顿前后的流水线时空图 LD RbLD Rb,B B IF IF ID ID EX EX MEM MEM WB WB LD RcLD Rc,C C IF IF ID ID EX EX EX EX MEM MEM WB WB WB WB DADD RaDADD Ra,RbRb,Rc Rc IF IF ID
28、ID stallstall EX EX MEM MEM WB WB SD Ra SD Ra ,A A IF IF stallstall ID ID EX EX MEM MEM WB WB 依靠编译器解决数据冲突 让编译器重新组织指令顺序来消除冲突,这种技术让编译器重新组织指令顺序来消除冲突,这种技术称为称为指令调度指令调度或或流水线调度。流水线调度。p例如:例如:采用典型的代码生成方法,采用典型的代码生成方法, 表达式表达式A AB BC C的代码会导致暂停的代码会导致暂停调度前的代码调度前的代码 调度后的代码调度后的代码 LD RbLD Rb,B BLD RcLD Rc,C CDADD Ra
29、DADD Ra,RbRb,Rc Rc SD RaSD Ra,A ALD ReLD Re,E ELD RfLD Rf,F FDSUB RdDSUB Rd,ReRe,RfRfSD RdSD Rd,D D LD RbLD Rb,B BLD RcLD Rc,C CLD ReLD Re,E E DADD RaDADD Ra,RbRb,RcRcLD RfLD Rf,F FSD RaSD Ra,A A DSUB RdDSUB Rd,ReRe,RfRfSD RdSD Rd,D D p举例:举例: 请为下列表达式生成没有暂停的指令序列请为下列表达式生成没有暂停的指令序列: : ABC ; DEF ; 假设载入延
30、迟为假设载入延迟为1 1个个时钟周期。时钟周期。 题解题解3.控制冲突执行分支指令的结果有两种分支成功:PC值改变为分支转移的目标地址。 在条件判定和转移地址计算都完成后,才改变PC值。不成功或者失败:PC的值保持正常递增, 指向顺序的下一条指令。处理分支指令最简单的方法:“冻结”或者“排空”流水线 。 优点:简单。p前述5段流水线中,改变PC值是在MEM段进行的。 给流水线带来了3个时钟周期的延迟。分支指令分支指令 IF IF ID ID EX EX MEM MEM WB WB 分支目标指令分支目标指令 IFIF stallstall stallstall IF IF ID ID EX EX
31、 MEM MEM WB WB 分支目标指令分支目标指令+1 +1 IF IF ID ID EX EX MEM MEM WB WB 分支目标指令分支目标指令+2 +2 IF IF ID ID EX EX MEM MEM 分支目标指令分支目标指令+3 +3 IF IF ID ID EX EX 分支指令分支指令 IF IF ID ID EX EX MEM MEM WB WB 分支后继指令分支后继指令 IF IF stallstall stallstall IF IF ID ID EX EX MEM MEM WB WB 分支后继指令分支后继指令+1+1 IF IF ID ID EX EX MEM ME
32、M WB WB 分支后继指令分支后继指令+2 +2 IF IF ID ID EX EX MEM MEM 分支后继指令分支后继指令+3 +3 IF IF ID ID EX EX 简单处理分支指令:分支成功的情况简单处理分支指令:分支成功的情况 简单处理分支指令:分支失败的情况简单处理分支指令:分支失败的情况 3.控制冲突把由分支指令引起的延迟称为分支延迟。分支指令在目标代码中出现的频度每34条指令就有一条是分支指令。 假设:分支指令出现的频度是30, 流水线理想 CPI1, 那么:流水线的实际 CPI 1.9。可采取两种措施来减少分支延迟。在流水线中尽早判断出分支转移是否成功;尽早计算出分支目标
33、地址。3.控制冲突下面的讨论中,我们假设: 这两步工作被提前到ID段完成,即分支指令是在ID段的末尾执行完成,所带来的分支延迟为一个时钟周期。 3.控制冲突3种通过软件(编译器)来减少分支延迟的方法 共同点:对分支的处理方法在程序的执行过程中始终不变的,是静态的。要么总是预测分支成功,要么总是预测分支失败。3种方法:(与课程设计关联很小,略去)预测分支成功预测分支失败延迟分支内容提要回顾冯诺依曼CPU结构及工作原理回顾计算机组成原理课程综合实验总结开放式实验CPU设计思路和方法回顾流水线工作原理,并归纳流水线设计思路无无Cache流水线中结构冲突、数据相关、控制相关的解决流水线中结构冲突、数据
34、相关、控制相关的解决办法办法设计无Cache的5段流水线无Cache流水CPU课程设计中,采用经典的5段流水线,但为降低复杂度,不采用Cache示意图(其中IM和DM都为内存)结构冲突的解决办法由于没有采用Cache,取指和取/存数都对内存进行操作,因此会有访问存储器的结构冲突结构冲突示意图结构冲突的解决办法解决办法:采用延迟一个周期的方法先“访存”,即先执行Mem段的任务将“取指”延后一个时钟周期,即后执行IF段的任务为此,需要做两件事:冲突检测,即判断存在有结构冲突取指延后,在检测到有结构冲突后,延后取指任务结构冲突的解决办法在MEM段时,只有load和store需要访问内存。也即是说,若
35、MEM段是load或store指令时,必定会与IF段的取值发生结构冲突基于这一点,可以设置一个标志位,指示MEM段是否需要访问内存。若是,则有结构冲突;反之,则无。冲突检测方法wMem意义00写内存(STORE)01读内存(LOAD)1不占用内存结构冲突的解决办法取指延后在每次取指时,若有冲突,则往IR中写入空指令(NOP),并保持PC不变,使取指延后一个节拍。数据相关解决办法对于前述的5段流水线,属于顺序流水线,只存在写后读冲突(RAW),对于WAW和WAR则实际上不存在因此,关键在于解决RAW数据相关为提高流水线的效率,采用定向技术(亦即旁路技术)考虑3种情况相邻指令RAW相关中间隔1条指
36、令的RAW相关中间隔2条指令的RAW相关数据相关解决办法1. 相邻指令RAW相关例:INC R0 INC R0解决方法数据相关解决办法2. 中间隔1条指令的RAW相关举例: INC R0 INC R1 INC R0解决方法数据相关解决办法3.中间隔2条指令的RAW相关例子:INC R0 INC R1 INC R2 INC R0解决方法方法1:在第4条指令的译码阶段作旁路处理,将第1条指令的回写数据作为运算器的输入送入下一级,如下图所示。方法2:考虑到读写寄存器的时间较短,因此将写寄存器的时机改在时钟下降沿。这样1、4指令就没有数据相关了。(优选)数据相关解决办法数据相关解决办法实现方法考虑到只
37、有在执行时,才能觉察到是否与其它指令构成数据相关,因此数据相关的检测放在EX流水段观察RAW相关的情况,容易发现:出现RAW相关时,后一条(不一定相邻)指令的SA(即源操作数)或DA(即目的操作数),必定与前一条指令中的DA相同在只有load/store需要从内存读/写数据的指令系统中,数据相关只发生在寄存器之间。因此需要写寄存器(如MEM段的控制信号m_wRegEn=1)时,就需要进行数据相关检测。数据相关解决办法当m_wRegEn=1时,数据相关的判断方法如下:1. 相邻指令RAW情况 如果MEM段(代表前一条指令)如需要写的SA(记作m_SA)与EX段(代表后一条指令)的SA (记作e_
38、SA)或SB(记作e_SB)相同,则存在数据相关。即有: m_SA = e_SA 或者 m_SA = e_SB 数据相关解决办法2. 中间隔1条指令的RAW相关 如果WB段(代表前2条指令)如需要写的SA(记作w_SA)与EX段(代表后2条指令)的SA (记作e_SA)或SB(记作e_SB)相同,则存在数据相关。即有: w_SA = e_SA 或者 w_SA = e_SB 3. 中间隔2条指令的RAW相关 在采用了下降沿写入寄存器的策略后,此种情况不 再存在,因此不再考虑。数据相关解决办法上述第1和2种情况可能会一同出现。这时,我们就按情况1处理。因为情况2可以理解为接连出现情况1。在检测到数
39、据相关后,根据检测到的不同类数据相关,分别将相应的结果定向回传到EX段ALU的输入端。具体结构在后面总体结构设计时再详细分析。数据相关解决办法注意事项定向技术不能完全解决数据相关问题例子:LOAD R0,R1 INC R0解决方法:在load指令后面插入一条空指令控制相关解决办法除JR外,JRZ等条件跳转需要根据当前状态位来决定是否跳转,而当前状态位是由前面最近的会影响状态位的指令(如算术指令)决定解决方法1. 碰到JRX之类的跳转指令时,延迟后边流水线的进入2. 预先获取跳转目标。即在前一条指令有运算结果后,通过定向技术(亦即旁路技术)把状态位回传给IF段,以便能及时更新下一条指令的PC值方
40、法2效率高,因此采用方法2控制相关解决办法应用方法2时,需要解决二个问题:一是需要判断是否跳转,若跳转则提供旁路二是需要选择合适的PC更新时机1. 跳转 & 旁路 只有JRX(X代表C、Z、S等标志位)指令才需要根据标志位来确定是否跳转,因此译码时(即ID流水段)根据指令产生是否修改标志位的信号,记为setFlag控制相关解决办法 因此,若碰到JRX类指令,是否跳转可作如下的判断:若setFlag=1,表明前一指令会修改标志位,则根据EX段的最新标志位(记作tFlag)来进行判断若setFlag=0,则根据保持的标志位(记作tFlag)来进行判断也就是说,ID流水段需要产生setFla
41、g的信号,并传至EX段。EX段完成ALU运算后,产生新的标志位tFlag。为方便IF段判断是否需要跳转,EX段将setFlag、新的tFlag及原来的Flag一起旁路给IF段。控制相关解决办法2. PC更新时机在最初设计时,我们考虑将PC放在时钟上升沿更新。若如此,不论JRX转移与否,都会顺序取下一指令。因此,在发生跳转时要清除已读取的指令。处理方法是,在译码时判断上一条指令是否要跳转,若是则产生doNothing信号。这样就清除了已读取的指令。如果把PC更新放在下降沿(如下图所示),则不存在上述问题。但我们担心这种处理在时间上可能会比较紧张。不过,实践表明这种处理是可行的。控制相关解决办法内
42、容提要回顾冯诺依曼CPU结构及工作原理回顾计算机组成原理课程综合实验总结开放式实验CPU设计思路和方法回顾流水线工作原理,并归纳流水线设计思路无Cache流水线中结构冲突、数据相关、控制相关的解决办法设计无设计无Cache的的5段流水线段流水线设计无Cache的5段流水CPU设计思路设计指令系统根据功能需求确定数据通路解决结构冲突,并相应地修改数据通路解决数据相关,并相应地修改数据通路解决控制相关,并相应地修改数据通路分析控制信号详细分析各个流水段的功能编程实现设计指令系统根据给定的基本指令表,设计指令系统的格式。假定指令字长为16位设计时,可以考虑分类进行。如单字长、双字长,单操作数、双操作
43、数、无操作数等确定数据通路假设采用5段经典的流水线,模型如下:确定数据通路复用寄存器和内存由于没有采用cache,因此IM和DM都是指内存,可以合并共用一个内存。ID段和WB段的Reg也是指相同的寄存器,因此也可以合并共用。综上,基本的5段流水线可修改如下:确定数据通路解决结构冲突由于没有cache,IF段的取指和MEM段的读/存数冲突解决办法:在检测到有冲突后,让MEM的先执行,IF段的插入空操作实现方法:引入一个冲突检测模块,用于检测冲突。冲突检测原理见前一内容要点中的分析,要点:MEM段的m_wrMem或者WB段的w_wrMem指示要读写内存用冲突检测结果控制是用基于PC取出的指令,还是
44、直接插入空操作确定数据通路解决数据相关解决数据相关的主要技术就是定向技术但要注意的是定向技术不能解决所有数据相关,在load指令时便必须要在其后插入空指令NOP才行。因此,冲突检测时必须处理load指令的情况,需要将指令的OP码送入冲突检测部件。检测时,若OP=load,则可利用IFFLUSH指示插入NOP因此,解决数据相关的第一个修改点:将指令的OP码作为输入送入冲突检测部件确定数据通路解决数据相关根据前一个内容要点中的分析,定向技术的具体实施条件如下:相邻指令数据相关:将ALU的输出信号ALUout反馈到ALU的输入端相隔1条指令数据相关:将MEM段的输出信号反馈回ALU的输入端相隔2条指
45、令数据相关:若采用在下降沿执行WB的话,此时的数据相关不会发生因此,定向技术的实施方法如下:判断是否需要定向技术若需要,选择合适的信号输入到ALU中确定数据通路解决数据相关这可以引入一个定向判断处理模块来实现输入信号:m_wRegEn、m_SA、 w_wRegEn、w_SA、e_SA、e_SB输出信号:指示哪个信号应该进入ALU 结合前面的分析ALU有两个输入端SA和SB。在引入了定向技术后,每个输入端都有三个信号源:来自于ID段寄存器的输出、ALU输出端的反馈信号、MEM段输出端的反馈信号确定数据通路解决数据相关因此,定向判读处理模块需要输出2个控制信号,分别控制ALU的输入端SA和SB,且
46、每个控制信号可用2个比特表示。因此,解决数据相关的第二个修改点:添加定向判断和处理模块由前所述,在EX段才能察觉是否需要定向技术,因此该模块可以放在EX段中。将这两个修改点反映到数据通路中,可得到进一步修改的数据通路,如下所示。确定数据通路解决控制相关如前一内容要点的分析,解决控制相关是提前获取转移目标,然后用旁路技术反馈回IF段。产生控制相关的有两类转移1. 绝对跳转,如JR指令2. 条件跳转,如JRC、JRNZ等1. 绝对跳转当在ID段完成译码时,已经可以获得跳转偏移量因此,为减少取指延后,可以考虑在ID段直接产生目标指令的地址,如PC+offset即可得到确定数据通路解决控制相关2. 条
47、件跳转跳转的目标地址可以在ID段计算,所需的条件要在EX段完成ALU运算后才能获取解决方法:ID段产生setFlag信号EX段经ALU产生tFlag和Flag信号将这些信号反馈回IF段,并在下降沿更新PC综上,需要作如下两个修改:1. 在ID段添加加法器,用于实现PC与offset相加2. 将EX产生的标志位反馈到IF段以更新PC确定数据通路解决控制相关数据通路修改方法:由上可知,在IF段PC的更新有两个来源,一是顺序执行的PC(即上一PC增1),一是跳转目标。为此,在IF段需要增加完成PC+1的部件,并且需要二选一复用器在ID段增加PC与offset相加的加法器,并产生setFlag信号传到
48、EX段。同时,跳转指令才需要判断是否跳转以及跳转目标如何,因此需要将OP码也回传到IF段在EX段,需要将setFlag、tFlag、Flag信号传到IF段确定数据通路其它修改当插入NOP时,如在load指令后,或者存在访问内存冲突时,PC值需要保持。因此,需要在冲突检测模块中,再产生一个输出,以控制PC的更新或保持此外,在WB段写寄存器时,需要相应的寄存器使能控制信号w_wRegEn。选择ALUout还是MemOut写到寄存器,需要控制信号w_MemToReg。ID段需要对IF段得到的指令进行译码,需要把译码得到的ALU功能选择、源寄存器、目的寄存器号等传给EX段把上述的修改进一步反映到数据通
49、路中,即得到相对完整的数据通路。确定数据通路系统总线系统总线连接CPU与内存,在该总线上传递内存地址、数据和读/写控制信号内存地址可以是指令地址,也可以是数据的地址。前者由PC给出,后者由ALUout给出。因此,需要一个复用器来复用这两种信号,并用内存读/写信号进行控制。如若MEM段的m_wrMem指示为读/写内存,则表示应该是ALUout表征的数据地址,否则为PC表征的指令地址。读/写控制信号直接由m_wrMem给出确定数据通路系统总线数据包括读和写的数据。若考虑读和写的数据分开,记读出来的数据为OutDB,写的数据位WriteData。为避免误写,在m_wrMem指示内存读时,写的数据置成高阻态“zzzz”;指示内存写时,则直接用MEM的待写数据m_RBData。因此,需要额外的一个复用器来复用这两种写数据,并用m_wrMem进行控制综上,数据通路再修改如下。分析控制信号控制信号指ID流水段产生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科学探究物质的比热容课件定稿新版沪科
- 孕期痰多的健康宣教
- 鼻部肿瘤的健康宣教
- 《机床电气线路的安装与调试》课件-第4章
- 《机械制造基础》课件-05篇 第三单元 激光加工
- 爆震性耳聋的健康宣教
- 性发育异常的临床护理
- 《操作系统类型习题》课件
- JJF(陕) 075-2021 回弹仪检定装置校准规范
- JJF(陕) 026-2020 脉冲式电火花检漏仪校准规范
- 英语B级单词大全
- 智能充电站转让协议书范本
- 低压不停电换表接插件技术规范
- DLT 5210.5-2018 电力建设施工质量验收规程 第5部分:焊接
- 劳动教育概论智慧树知到期末考试答案章节答案2024年哈尔滨工业大学
- 医疗美容操作技术规范
- 人教版五年级上册《道德与法治》期末试卷(加答案)
- HJT 166-2004 土壤环境监测技术规范(正式版)
- 中国文学经典导读智慧树知到期末考试答案章节答案2024年华东政法大学
- 2024年浙江杭州西湖云创集团有限公司招聘笔试参考题库附带答案详解
- (2024年)农作物病虫害绿色防控技术课件
评论
0/150
提交评论