第一讲单周期数据通路的设计第二讲单周期控制器的设计第-资料_第1页
第一讲单周期数据通路的设计第二讲单周期控制器的设计第-资料_第2页
第一讲单周期数据通路的设计第二讲单周期控制器的设计第-资料_第3页
第一讲单周期数据通路的设计第二讲单周期控制器的设计第-资料_第4页
第一讲单周期数据通路的设计第二讲单周期控制器的设计第-资料_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一讲第一讲 单周期数据通路的设计单周期数据通路的设计第二讲第二讲 单周期控制器的设计单周期控制器的设计第三讲第三讲 多周期处理器的设计多周期处理器的设计第四讲第四讲 微程序控制器设计与异常处理微程序控制器设计与异常处理Ch 6: CPU - Datapath and Control中央处理器:数据通路和控制器中央处理器:数据通路和控制器第一讲第一讲 单周期数据通路的设计单周期数据通路的设计CPU的功能及其与计算机性能的关系的功能及其与计算机性能的关系数据通路的位置数据通路的位置单周期数据通路的设计单周期数据通路的设计 数据通路的功能和实现数据通路的功能和实现-操作元件(组合逻辑部件)操作元件

2、(组合逻辑部件)-状态状态 / 存储元件(时序逻辑部件)存储元件(时序逻辑部件) 数据通路的定时数据通路的定时选择选择MIPS指令集的一个子集作为指令集的一个子集作为CPU的实现目标的实现目标 下条指令地址计算与取指令部件下条指令地址计算与取指令部件 R型指令的数据通路型指令的数据通路 访存指令的数据通路访存指令的数据通路 立即数运算指令的数据通路立即数运算指令的数据通路 分支和跳转指令的数据通路分支和跳转指令的数据通路综合所有指令的数据通路综合所有指令的数据通路主主 要要 内内 容容回顾:回顾: CPU功能及其与计算机性能的关系功能及其与计算机性能的关系与或门等与或门等(逻辑运算)(逻辑运算

3、)移位器移位器寄存器寄存器运算控制逻辑运算控制逻辑(大家都需要:多路选(大家都需要:多路选择器和传输线路等)择器和传输线路等)加法器加法器ALUALU运算部件运算部件ALU以加法器为核心以加法器为核心运算部件以运算部件以ALU/加法加法器为核心器为核心指令执行控制逻辑指令执行控制逻辑更多寄存器等更多寄存器等CPUCPU计算机性能计算机性能(程序执行快慢程序执行快慢)由三个关由三个关键因素决定(回顾)键因素决定(回顾) 指令数目、指令数目、CPI、时钟周期、时钟周期-指令数目由编译器和ISA决定 -时钟周期和CPI由CPU的实现来决定因此,因此,CPU的设的设计与实现非常重计与实现非常重要!它直

4、接影响要!它直接影响计算机的性能。计算机的性能。CPU基本组成原理图基本组成原理图执行部件执行部件控制部件控制部件CPU 由由 执行部件执行部件 和和 控制部件控制部件组成组成指令寄存器指令寄存器-IR程序计数器程序计数器-PC控制器控制器 主要由主要由 指令译码器指令译码器 和和 控控制信号形成部件制信号形成部件 组成组成CPU的工作:取指令,指令译码,的工作:取指令,指令译码,取操作数,运算,存结果(每步都取操作数,运算,存结果(每步都需检测需检测“异常异常” “中断中断”)数据通路(执行部件)的位置数据通路(执行部件)的位置计算机的五大组成部分:计算机的五大组成部分:什么是数据通路(什么

5、是数据通路(DataPath)? 指令执行过程中,数据所经过的路径,包括路径中的部件。它是指令执行过程中,数据所经过的路径,包括路径中的部件。它是指令指令的执行部件的执行部件。进行数据存储、处理、传送。进行数据存储、处理、传送控制器(控制器(Control)的功能是什么?)的功能是什么? 对指令进行译码,生成指令对应的控制信号,控制数据通路的动作。对指令进行译码,生成指令对应的控制信号,控制数据通路的动作。能对执行部件发出控制信号,是能对执行部件发出控制信号,是指令的控制部件指令的控制部件。ControlMemoryCPUInputOutputDatapathDatapath注意以下层次结构:

6、注意以下层次结构:CPU执行部件(数据通路)执行部件(数据通路) 操作元件操作元件 存储(状态)元件存储(状态)元件-寄存器寄存器控制部件(控制器)控制部件(控制器)操作元件:操作元件:组合组合逻辑电路逻辑电路加法器加法器(Adder)多路选择器多路选择器 (MUX)算逻部件算逻部件(ALU)32AB32Y32SelectMUX3232AB32ResultZeroOPALU3232AB32SumCarryAdderCarryIn3Decoderout0out1out7out2译码器译码器(Decoder)控制信号控制信号组合逻辑元件的特点:组合逻辑元件的特点:其输出只取决于当前的输入。即:若其

7、输出只取决于当前的输入。即:若输入一样,则其输出也一样输入一样,则其输出也一样定时:所有输入到达后,经过一定的定时:所有输入到达后,经过一定的逻辑门延时,输出端改变,并保持到逻辑门延时,输出端改变,并保持到下次改变,下次改变,不需要时钟信号不需要时钟信号来定时来定时状态元件:状态元件:时序时序逻辑电路逻辑电路状态(存储)元件的特点:状态(存储)元件的特点: 具有存储功能,在具有存储功能,在时钟控制下时钟控制下输入被写到电路中,直到下个时钟到达输入被写到电路中,直到下个时钟到达 输入端状态由时钟决定何时被写入,输出端状态随时可以读出输入端状态由时钟决定何时被写入,输出端状态随时可以读出定时方式:

8、规定信号何时写入状态元件或何时从状态元件读出定时方式:规定信号何时写入状态元件或何时从状态元件读出 边沿触发(边沿触发(edge-triggered)方式:)方式:-状态单元中的值只在时钟边沿改变。每个时钟周期改变一次。状态单元中的值只在时钟边沿改变。每个时钟周期改变一次。上升沿(上升沿(rising edge) 触发:在时钟正跳变时进行读触发:在时钟正跳变时进行读/写。写。下降沿(下降沿(falling edge)触发:在时钟负跳变时进行读)触发:在时钟负跳变时进行读/写。写。cycle timerising edgefalling edge状态元件中何时状态被改变?状态元件中何时状态被改变

9、?切记:状态单元的输入信息总是在一个时钟边沿到达后的切记:状态单元的输入信息总是在一个时钟边沿到达后的“Clk-to-Q”时才被写入到单元中,此时的输出才反映新的状态值时才被写入到单元中,此时的输出才反映新的状态值数据通路中的状态元件:寄存器数据通路中的状态元件:寄存器(组组) ( Latch Prop - 锁存延迟锁存延迟 )Q总是在总是在clock-to-Q后跟着后跟着D变化变化这期间这期间D的变化不影响的变化不影响Q状态元件状态元件: 寄存器和寄存器组寄存器和寄存器组寄存器(寄存器(Register) 有一个写使能(有一个写使能(Write Enable-WE)信号)信号 0: 时钟边沿

10、到来时,输出不变时钟边沿到来时,输出不变 1: 时钟边沿到来时,输出开始变为输入时钟边沿到来时,输出开始变为输入 若每个时钟边沿都写入,则不需若每个时钟边沿都写入,则不需WE信号信号寄存器组(寄存器组(Register File) 两个读口(两个读口(组合逻辑操作组合逻辑操作):):busA和和busB分别由分别由RA和和RB给出地址。地址给出地址。地址RA或或RB有效后,经一个有效后,经一个“取数时间取数时间(AccessTime)”,busA和和busB有效。有效。 一个写口(一个写口(时序逻辑操作时序逻辑操作):):写使能为写使能为1的情况下,时钟边沿到来时,的情况下,时钟边沿到来时,b

11、usW传来传来的值开始被写入的值开始被写入RW指定的寄存器中。指定的寄存器中。ClkData InWrite EnableNNData OutClkbusWWrite Enable3232busA32busB555RW RA RB32 32-bitRegisters寄存器组的内部结构寄存器组的内部结构busWCD031MUXMXURegister 0Register 1Register 30Register 31Write EnableRW32-to-1DecoderRARBbusAbusB ClkCDCDCD每个寄存器由每个寄存器由32个触发器组成个触发器组成;输入数据来自输入数据来自bus

12、W,读出数据分别送,读出数据分别送busA和和busB;WriteEnable信号控制是否写入新值。信号控制是否写入新值。Back to add理想存储器(理想存储器( idealized memory ) Data Out:读出数据 Data In: 写入数据 Address:存储器地址 读操作(组合逻辑操作):地址Address有效后,经一个“取数时间AccessTime”,Data Out上数据有效。 写操作(时序逻辑操作) :写使能为1的情况下,时钟Clk边沿到来时,Data In传来的值开始被写入Address指定的存储单元中。额外假设的状态元件额外假设的状态元件: 理想存储器理想存

13、储器 ClkData InWrite Enable3232DataOutAddress为简化数据通路操作说明,把存储器简化为带时钟信号为简化数据通路操作说明,把存储器简化为带时钟信号Clk的理想模型。并非真实存在于的理想模型。并非真实存在于CPU中!中!数据通路与时序控制数据通路与时序控制假定采用下降沿触发(负跳变)方式(也可以是上升沿方式)假定采用下降沿触发(负跳变)方式(也可以是上升沿方式) 所有状态单元在下降沿写入信息,经过所有状态单元在下降沿写入信息,经过Latch Prop (clk-to-Q) 后输出有效后输出有效 Cycle Time = Latch Prop + Longest

14、 Delay Path + Setup + Clock Skew Clk寄存器的输入可变化SetupHold.Setup Hold数据通路由数据通路由 “ + 状态元件状态元件 + 操作元件操作元件( 组合电路组合电路) + 状态元件状态元件 + ” 组成组成只有状态元件能存储信息,所有操作元件都须从状态单元接收输入,并将输出写只有状态元件能存储信息,所有操作元件都须从状态单元接收输入,并将输出写入状态单元中。其输入为前一时钟生成的数据,输出为当前时钟所用的数据入状态单元中。其输入为前一时钟生成的数据,输出为当前时钟所用的数据现代计算机的时钟周期现代计算机的时钟周期ClkClk数据通路与时序控

15、制数据通路与时序控制现代计算机都是同步系统现代计算机都是同步系统(Synchronous system) 所有动作有专门时序信号来定时所有动作有专门时序信号来定时 同步系统常用的定时信号:时钟同步系统常用的定时信号:时钟现代计算机中的现代计算机中的“指令周期指令周期” CPU取并执行一条指令的时间取并执行一条指令的时间 每条指令的指令周期肯定一样吗?每条指令的指令周期肯定一样吗?不一定不一定 一个指令周期可分为取指令、读操作数、执行并写结果等多个步一个指令周期可分为取指令、读操作数、执行并写结果等多个步骤,将在几个时钟周期内完成。骤,将在几个时钟周期内完成。准备工作:组成指令功能的四种基本操作

16、准备工作:组成指令功能的四种基本操作每条指令的功能总是由以下四种基本操作来实现:每条指令的功能总是由以下四种基本操作来实现:(1)读取某一主存单元的内容,并将其装入某个寄存器;)读取某一主存单元的内容,并将其装入某个寄存器;(2)把一个数据从某个寄存器存入给定的主存单元中;)把一个数据从某个寄存器存入给定的主存单元中;(3)把一个数据从某个寄存器送到另一个寄存器或者)把一个数据从某个寄存器送到另一个寄存器或者ALU;(4)进行某种算术运算或逻辑运算,将结果送入某个寄存器。)进行某种算术运算或逻辑运算,将结果送入某个寄存器。操作功能可形式化描述操作功能可形式化描述 描述语言称为寄存器传送语言描述

17、语言称为寄存器传送语言RTL (Register Transfer Language) 本章所用的本章所用的RTL规定如下:规定如下:(1)Rr寄存器寄存器r的内容;的内容;(2)Maddr读取主存单元读取主存单元addr的内容;的内容;(3) “”表示传送操作,传送源在右,传送目的在左;表示传送操作,传送源在右,传送目的在左;(4)PC表示程序计数器表示程序计数器PC的值;的值;(5)OPdata对数据对数据data进行进行OP操作。操作。单总线数据通路单总线数据通路 四种基本操作的时序四种基本操作的时序 在通用寄存器之间传送数据在通用寄存器之间传送数据 R0out,Yin 完成算术、逻辑运

18、算完成算术、逻辑运算R1out,YinR2out,Add,ZinZout,R3in 从主存取字从主存取字 R1out,MARinRead, WMFC (等待等待MFC)MDRout,R2in 写字到主存写字到主存R1out,MARinR2out,MDRin,Write, WMFCRR2MRR1 MRR1 RR2CPU访存有两种通信方式访存有两种通信方式早期:直接访问早期:直接访问MM, “异步异步”方式,用方式,用MFC应答信号;现在:先应答信号;现在:先Cache后后MM,“同步同步”方式,无需应答信号。方式,无需应答信号。问题:时钟周期的宽度如何确定?问题:时钟周期的宽度如何确定? 以以“

19、Riout,OP,Zin”所花时间来确定还所花时间来确定还是以是以 “Read/Write”所花时间来确定所花时间来确定? 以上四种操作各需要几个时钟周期以上四种操作各需要几个时钟周期?1Cycle?3Cycles?3Cycles?3Cycles?Read/Write时间更时间更长,故以此为准!长,故以此为准!OP: Add、Sub、And、Or 等等通通用用寄寄存存器器总线连接总线连接方式!方式!内总线内总线内总线内总线外总线外总线复习:复习:MIPS的三种指令类型的三种指令类型ADD and SUBSTRACT add rd, rs, rt sub rd, rs, rtOR Immedia

20、te: ori rt, rs, imm16LOAD and STORE lw rt, rs, imm16 sw rt, rs, imm16BRANCH: beq rs, rt, imm16JUMP: j targetoptarget address026316 bits26 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bits本讲目标:实现以上本讲目标:实现以上7条指令对应的数据通路!条指令对应的数据通路!教材中

21、实现了教材中实现了11条指令,可将条指令,可将7条指令和条指令和11条指条指令的数据通路进行对比,以深入理解设计原理。令的数据通路进行对比,以深入理解设计原理。大家记得是哪三种类型?大家记得是哪三种类型?R-Type、I-Type、J-Type设计处理器的步骤设计处理器的步骤第一步:分析每条指令的功能,并用第一步:分析每条指令的功能,并用RTL(Register Transfer Language) 来表示。来表示。第二步:根据指令的功能给出所需的元件,并考虑如何将他们互连。第二步:根据指令的功能给出所需的元件,并考虑如何将他们互连。第三步:确定每个元件所需控制信号的取值。第三步:确定每个元件

22、所需控制信号的取值。第四步:汇总所有指令所涉及到的控制信号,生成一张反映指令与控制信第四步:汇总所有指令所涉及到的控制信号,生成一张反映指令与控制信 号之间关系的表。号之间关系的表。第五步:根据表得到每个控制信号的逻辑表达式,据此设计控制器电路。第五步:根据表得到每个控制信号的逻辑表达式,据此设计控制器电路。u 处理器设计涉及到处理器设计涉及到数据通路的设计数据通路的设计和和控制器的设计控制器的设计u 数据通路中有两种元件数据通路中有两种元件 操作元件:由组合逻辑电路实现操作元件:由组合逻辑电路实现 存储(状态)元件:由时序逻辑电路实现存储(状态)元件:由时序逻辑电路实现ISA确定后,进行处理

23、器设计的大致步骤确定后,进行处理器设计的大致步骤RTL: The ADD Instruction(加法指令)(加法指令)add rd, rs, rt MPC从从PC所指的内存单元中取指令所指的内存单元中取指令 Rrd Rrs + Rrt 从从rs、rt 所指的寄存器中取数后所指的寄存器中取数后 相加。若结果不溢出,则将结果送相加。若结果不溢出,则将结果送rd 所所 指的寄存器中;若结果溢出,则不送结指的寄存器中;若结果溢出,则不送结 果,并转到果,并转到“溢出处理程序溢出处理程序”执行。执行。 PC PC + 4 PC加加4,使,使PC指向下一条指令指向下一条指令oprsrtrdshamtfu

24、nc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsRTL: The Load Instruction(装入指令)(装入指令)lwrt, rs, imm16 MPC (同加法指令同加法指令) Addr Rrs + SignExt(imm16) 计算数据地址计算数据地址 (立即数要进行符号扩展立即数要进行符号扩展) Rrt MAddr 从存储器中取出数据,装入到寄存器中从存储器中取出数据,装入到寄存器中 PC PC + 4 (同加法指令同加法指令)oprsrtimm160162126316 bits16 bits5 bits5 bits取指令部件取

25、指令部件(Instruction Fetch Unit) 每条指令都有的公共操作:每条指令都有的公共操作: 取指令取指令: MPC 更新更新PC:PC PC + 4 下地址逻辑:或者实现下地址逻辑:或者实现+4,或者在需要转移(,或者在需要转移(Branch and Jump)时)时,将将PC更新为更新为 “转移目标地址转移目标地址”32Instruction WordAddressInstructionMemoryPCClkNext AddrLogic顺序:先取指令,再改顺序:先取指令,再改PC的值的值(具体实现时,可以并行)(具体实现时,可以并行)下地址逻辑下地址逻辑取指后,各指令功能不同

26、,数取指后,各指令功能不同,数据通路也不同据通路也不同取指令部件取指令部件加法和减法指令加法和减法指令(R-type类型)类型)实现目标(实现目标(7条指令):条指令):ADD and subtract add rd, rs, rt sub rd, rs, rtOR Immediate: ori rt, rs, imm16LOAD and STORE lw rt, rs, imm16 sw rt, rs, imm16BRANCH: beq rs, rt, imm16JUMP: j target首先考虑首先考虑add和和sub指令(指令(R-Type指令的代表)指令的代表)oprsrtrdsha

27、mtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bitsoptarget address026316 bits26 bitsRR(R-type)型指令的数据通路)型指令的数据通路功能:功能:Rrd Rrs op Rrt,如:,如:add rd, rs, rt32ResultALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersrsrtrdALU不考虑公共操作,仅不考虑公共操作,仅

28、R-Type指令执行阶段的数据通路如下:指令执行阶段的数据通路如下:ALUctr,RegWr: 指令译码后产生的控制信号指令译码后产生的控制信号Ra, Rb, Rw 分别对应指令的分别对应指令的rs, rt, rd“add rd, rs, rt”控制信号为?控制信号为?ALUctr=add,RegWr=1oprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bits溢出时,不写结果并溢出时,不写结果并需转异常处理程序需转异常处理程序溢出溢出带立即数的逻辑指令(带立即数的逻辑指令(ori指令)指令)实现目标(实现目标(7 7条指

29、令)条指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate:ori rt, rs, imm16 LOAD and STORElw rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j target2. 考虑考虑ori 指令(指令(I-Type指令和逻辑指令和逻辑运算指令的代表)运算指令的代表)oprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoprsrtimmediate01

30、62126316 bits16 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The OR Immediate Instructionorirt, rs, imm16 MPC取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成) Rrt Rrs or ZeroExt(imm16) 立即数零扩展,并与立即数零扩展,并与rs内容做内容做“或或”运算运算 PC PC + 4 计算下地址(公共操作,取指部件完成)计算下地址(公共操作,取指部件完成)imm16016153116 bits16 bits0000 0000 0000

31、0000零扩展零扩展 ZeroExt(imm16)思考:应在前面数据通路上加哪些元件和连线?用何控制信号?思考:应在前面数据通路上加哪些元件和连线?用何控制信号?oprsrtimm160162126316 bits16 bits5 bits5 bits带立即数的逻辑指令的数据通路带立即数的逻辑指令的数据通路Rrt Rrs op ZeroExtimm16 Example: ori rt, rs, imm1632ResultALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersRs(Rt)ALUR-Type类型的结果写入类型的结果

32、写入RdR-Type的操作的操作数来自数来自busB应加兰色部分,完成操作应加兰色部分,完成操作数的值和结果位置的指定数的值和结果位置的指定(将(将RtypeRtype和和oriori区分开)区分开)Ori指令的控制信号:指令的控制信号:RegDst=?;?;RegWr=?;?;ALUctr=?;?;ALUSrc=?Ori指令的控制信号:指令的控制信号:RegDst=1;RegWr=1;ALUSrc=1;ALUctr=orRtRdRegDstMux01ZeroExtMux1632imm16ALUSrc01oprsrtimm160162126316 bits16 bits5 bits5 bits

33、访存指令中的数据装入指令访存指令中的数据装入指令 (lw)实现目标(实现目标(7 7条指令):条指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate:ori rt, rs, imm16 LOAD and STORElw rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j target3. 考虑考虑lw 指令(访存指令的代表)指令(访存指令的代表)oprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5

34、 bits5 bitsoprsrtimmediate0162126316 bits16 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The Load Instructionlwrt, rs, imm16 MPC 取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成) Addr Rrs + SignExt(imm16) 计算存储单元地址计算存储单元地址 (符号扩展!符号扩展!) Rrt M Addr 装入数据到寄存器装入数据到寄存器rt中中 PC PC + 4 计算下地址(公共操作,取指部件完成)计算下地址(公共操作,取

35、指部件完成)immediate016153116 bits16 bits0000 0000 00000 000000161531immediate16 bits16 bits 1111 1111 1111 11111符号扩展符号扩展 :立即数用补码表示立即数用补码表示oprsrtimmediate0162126316 bits16 bits5 bits5 bits装入装入(lw)指令的数据通路指令的数据通路Rrt M Rrs + SignExtimm16 lw rt, rs, imm1632ALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bit

36、RegistersRsRtDont Care(Rt)RdRegDstMuxMux3216imm16ALUSrcALU ExtExtOpMuxMemtoRegClkData InWrEn32 AdrDataMemory32MemWr加兰色部分。为什么?加兰色部分。为什么?控制信号控制信号RegDst, RegWr, ALUctr, ExtOp, ALUSrc, MemWr, MemtoReg 各取何值?各取何值?0101RegDst=1, RegWr=1, ALUctr=add, ExtOp=1, ALUSrc=1, MemWr=0, MemtoReg=10:零扩展,零扩展,1:符号扩展:符号扩

37、展01oprsrtimm160162126316 bits16 bits5 bits5 bits访存指令中的存数指令访存指令中的存数指令 (sw)实现目标(实现目标(7条指令):条指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate:ori rt, rs, imm16 LOAD and STORElw rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j target4. 考虑考虑sw 指令(访存指令的代表)指令(访存指令的代表)oprsrtimmedi

38、ate0162126316 bits16 bits5 bits5 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The Store Instructionswrt, rs, imm16 MPC 取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成) Addr Rrs + SignExt(imm16) 计算存储单元地址计算存储单元地址(符号扩展!)(符号扩展!) MemAddr Rrt 寄存器寄存器rt中的内容存到内存

39、单元中中的内容存到内存单元中 PC PC + 4 计算下地址(公共操作,取指部件完成)计算下地址(公共操作,取指部件完成) oprsrtimm160162126316 bits16 bits5 bits5 bits存数存数(sw)指令的数据通路指令的数据通路M Rrs + SignExtimm16 Rrt Example: sw rt, rs, imm1632ALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersRsRtRtRdRegDst ExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClk

40、Data InWrEn32 AdrDataMemory32MemWrALU0101加兰色部分。才能向存储器存数加兰色部分。才能向存储器存数RegDst=x, RegWr=0, ALUctr=add, ExtOp=1, ALUSrc=1, MemWr=1, MemtoReg=x01oprsrtimm160162126316 bits16 bits5 bits5 bits分支(条件转移)指令(相等转移:分支(条件转移)指令(相等转移:beq)实现目标(实现目标(7条指令):条指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate

41、:ori rt, rs, imm16 LOAD and STORElw rt, rs, imm16sw rt, rs, imm16 BRANCH:beq rs, rt, imm16 JUMP:j target5. 考虑考虑beq指令(条件转移指令的代表)指令(条件转移指令的代表)oprsrtimmediate0162126316 bits16 bits5 bits5 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The Bra

42、nch Instructionbeqrs, rt, imm16 MPC取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成) Cond Rrs - Rrt做减法比较做减法比较rs和和rt中的内容中的内容 if (COND eq 0)计算下地址(根据比较结果,修改计算下地址(根据比较结果,修改PC)-PC PC + 4 + ( SignExt(imm16) x 4 ) else-PC PC + 4立即数的含义是相对指令数!立即数的含义是相对指令数!立即数用补码表示立即数用补码表示oprsrtimm160162126316 bits16 bits5 bits5 bits条件转移指令的数据

43、通路条件转移指令的数据通路beq rs, rt, imm16We need to compare Rs and Rt !ALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpALUPCClkNext AddrLogic16imm16BranchTo InstructionMemoryZero思考:下址逻辑如何设计?思考:下址逻辑如何设计?RegDst=x, RegWr=0, ALUctr=sub, ExtOp=x, ALUSrc=0, Mem

44、Wr=0, MemtoReg=x, Branch=10101oprsrtimm160162126316 bits16 bits5 bits5 bits下地址计算逻辑的设计下地址计算逻辑的设计PC是一个是一个32位地址位地址:顺序执行时顺序执行时: PC = PC + 4转移执行时转移执行时: PC = PC + 4 + SignExtImm16 X 4MIPS按字节编址,每条指令为按字节编址,每条指令为32位,占位,占4个字节,故个字节,故PC的值总是的值总是4的倍数,即后两位为的倍数,即后两位为00,因此,因此,PC只需要只需要30位即可。位即可。下地址计算逻辑简化为:下地址计算逻辑简化为:

45、 顺序执行时顺序执行时: PC = PC + 1转移执行时转移执行时: PC = PC + 1 + SignExtImm16取指令时取指令时: 指令地址指令地址 = PC 串接串接 “00”PC采用采用30位后,其转移地址计算逻辑变得更加简单。位后,其转移地址计算逻辑变得更加简单。可以用简便的方式实现如下:可以用简便的方式实现如下:下址逻辑设计下址逻辑设计3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch ZeroAddrInstructionMemoryAddr“00”32Instruction(Instruction)30先根据当前先

46、根据当前PC取指令,取指令, 计算的下条指令地址在下一个时钟到来后才能写入计算的下条指令地址在下一个时钟到来后才能写入PC! 标志位标志位ZF,由,由ALU产生!产生!为什么这里没有用为什么这里没有用“ALU”而是用而是用“Adder”? “Adder”无需操作控制信号。无需操作控制信号。无条件转移指令无条件转移指令实现目标(实现目标(7 7条指令):条指令): ADD and subtractadd rd, rs, rtsub rd, rs, rt OR Immediate:ori rt, rs, imm16 LOAD and STORElw rt, rs, imm16sw rt, rs,

47、imm16 BRANCH:beq rs, rt, imm16 JUMP:j target6. 考虑考虑Jump指令(无条件转移指令的代表)指令(无条件转移指令的代表)oprsrtimmediate0162126316 bits16 bits5 bits5 bitsoprsrtrdshamtfunc0611162126316 bits6 bits5 bits5 bits5 bits5 bitsoptarget address026316 bits26 bitsRTL: The Jump Instructionjtarget MPC 取指令(公共操作,取指部件完成)取指令(公共操作,取指部件完成)

48、 PC PC 串接串接 target 计算目标地址计算目标地址optarget address026316 bits26 bits下地址逻辑的完善:下地址逻辑的完善:Instruction Fetch Unit: 取指令部件取指令部件3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030BranchZero“00”AddrInstructionMemoryAddr32InstructionInstructionimm16、Target、30264Mux10Target30JumpInstruc这是这是“取指部件取指部件”的完整设计的完整设计3 个输入个输

49、入: jump, Branch, Zero1个输出个输出: 指令字指令字PC的的改变在改变在下个下个Clk到到达后发达后发生!生!RegDst=ExtOp=ALUSrc=MemtoReg=ALUctr=x, RegWr=0, MemWr=0, Branch=0, Jump=1完整的单周期数据通路完整的单周期数据通路32ALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb- 32 32 bitRegistersRsRtRtRdRegDstExtMuxMux3216imm16ALUSrcExtOpMuxMemtoRegClkData InWrEn32AdrData

50、Memory32MemWrALUInstructionFetch UnitClkZeroInstructionJumpBranch010101Imm16RdRtRs指令执行结果总是在下个时钟到来时开始保存在指令执行结果总是在下个时钟到来时开始保存在 寄存器寄存器 或或 存储器存储器 或或 PC 中!中!下一讲考虑:如何产生控制信号!(控制器的设计内容)下一讲考虑:如何产生控制信号!(控制器的设计内容)数据通路中的关键路径数据通路中的关键路径(Load操作操作)记住:寄存器组和理想存储器的定时方式记住:寄存器组和理想存储器的定时方式 写操作时,作为时序逻辑电路。即:写操作时,作为时序逻辑电路。即

51、:-时钟到达前,输入需时钟到达前,输入需setup;到达后经;到达后经“Clk-to-Q”,写入,写入数据到达输出端数据到达输出端 读操作时,作为组合逻辑电路。即:读操作时,作为组合逻辑电路。即:-地址有效后经过地址有效后经过 “access time”,输出开始有效,输出开始有效Clk5Rw Ra Rb32 32-bitRegistersRdALUClkDataInDataOutDataAddressIdealDataMemoryInstruction busInstruction AddressIdealInstructionMemoryClkPC5Rs5Rt16Imm32323232Lo

52、ad操作:操作:RRt MRRs+Imm16第一讲小结第一讲小结 CPU设计直接决定了时钟周期宽度和设计直接决定了时钟周期宽度和CPI,所以对计算机性能非常重要!,所以对计算机性能非常重要! CPU主要由数据通路和控制器组成主要由数据通路和控制器组成数据通路数据通路:实现指令集中所有指令的操作功能:实现指令集中所有指令的操作功能控制器控制器:控制数据通路中各部件进行正确操作:控制数据通路中各部件进行正确操作 数据通路中包含两种元件数据通路中包含两种元件操作元件操作元件(组合电路):(组合电路):ALU、MUX、Ext.、Adder、Reg/Mem Read等等状态元件状态元件(时序电路):(时

53、序电路):PC、Reg/Mem Write 数据通路的定时数据通路的定时数据通路中的操作元件没有存储功能,其操作结果必须写到存储元件中数据通路中的操作元件没有存储功能,其操作结果必须写到存储元件中在在时钟时钟到达后到达后clk-to-Q时存储元件开始更新状态时存储元件开始更新状态 MIPS指令集的一个子集作为指令集的一个子集作为CPU的实现目标的实现目标公共操作:取指令和公共操作:取指令和PC+4下址计算:下址计算:30位位PC,三路选择:顺序、,三路选择:顺序、Branch(结合标志(结合标志Zero)、)、JumpR型:型:ALU两个操作数来自两个操作数来自rs和和rt,结果写到,结果写到

54、rd访存:符号扩展,数据在访存:符号扩展,数据在rt和主存单元中交换和主存单元中交换立即数:立即数:0扩展后的操作数送到扩展后的操作数送到ALU的一个输入端的一个输入端第二讲第二讲 单周期控制器的设计单周期控制器的设计 考察每条指令在数据通路中的执行过程和涉及到的控制信号的取值考察每条指令在数据通路中的执行过程和涉及到的控制信号的取值 公共操作:取指令和计算下址公共操作:取指令和计算下址PC R-Type指令(指令(add / sub) 立即数指令立即数指令 (ori) 访存指令(访存指令(lw / sw) 分支指令分支指令 (beq) 跳转指令跳转指令 (j)汇总各指令的控制信号取值汇总各指

55、令的控制信号取值 分两类控制信号:直接送往数据通路分两类控制信号:直接送往数据通路 / 送往局部控制单元送往局部控制单元分析分析ALU操作对应的控制信号与操作对应的控制信号与func字段之间的关系字段之间的关系设计设计ALU局部控制单元局部控制单元设计主控制单元设计主控制单元主主 要要 内内 容容Where are We Now? ControlDatapathMemoryProcessorInputOutput下一个目标:设计单周期数据通路的控制器。下一个目标:设计单周期数据通路的控制器。设计方法:设计方法:根据每条指令的功能,分析控制信号的取值,并在表中列出。根据每条指令的功能,分析控制信

56、号的取值,并在表中列出。根据列出的指令和控制信号的关系,写出每个控制信号的逻辑表达式。根据列出的指令和控制信号的关系,写出每个控制信号的逻辑表达式。Add / Sub操作开始时取指部件中的动作操作开始时取指部件中的动作3030SignExt3016imm16Mux01Adder“1”PCAdder3030Branch = previous Zero = previous“00”AddrInstructionMemoryAddr32Mux10264PCTarget30取指令取指令: Instruction MPC 所有指令都相同所有指令都相同Jump = previousInstructionI

57、nstruction30InstrClk新指令还没有取出译码,所以控制信号的新指令还没有取出译码,所以控制信号的值还是原来指令的旧值。值还是原来指令的旧值。新指令还没有执行,所以标志也为旧值。新指令还没有执行,所以标志也为旧值。取出指令的第取出指令的第31-26位作为操位作为操作码首先被译码。作码首先被译码。op=000000, 则为则为R-type指令指令在下个在下个Clk到来之前到来之前PC输入端的值不会写入。只要保证下个输入端的值不会写入。只要保证下个Clk来之前能产生正来之前能产生正确的信号并存入正确的确的信号并存入正确的PC即可(等待译码结果)!即可(等待译码结果)!指令译码后指令译

58、码后R型指令(型指令(Add / Sub)操作过程)操作过程32ALUctr = Add or SubClkbusWRegWr = 13232busA32busB555Rw Ra Rb32 32-bitRegistersRsRtRtRdRegDst = 1ExtMuxMux3216imm16ALUSrc = 0ExtOp = xMuxMemtoReg = 0ClkData InWrEn32AdrDataMemory32MemWr = 0ALUInstructionFetch UnitClkZeroInstructionJump = 0Branch = 0Rrd Rrs + / - Rrt010

59、101Imm16RdRtRsoprsrtrdshamtfunc061116212631R型指令(型指令(Add /Sub)最后阶段取指部件中的动作)最后阶段取指部件中的动作3030SignExt3016imm16Mux01Adder“1”PCClkAdder3030Branch = 0Zero = x“00”AddrInstructionMemoryAddr32Mux10264PCTarget30PC PC + 4 除除 Branch and Jump以外的指令都相同以外的指令都相同Jump = 0InstructionInstruction30Instruction此时控制信号已经是新的此时

60、控制信号已经是新的(译码和运算后产生译码和运算后产生), 保证了正确的保证了正确的PC值的值的产生,在足够长的时间后,下个时钟产生,在足够长的时间后,下个时钟Clk到来!到来!Register-Register(R型指令)型指令) Timing32ResultALUctrClkbusWRegWr3232busA32busB555Rw Ra Rb32 32-bitRegistersRsRtRdALUClkPCRs, Rt, Rd,Op, FuncClk-to-QALUctrInstruction Memory Access TimeOld ValueNew ValueRegWrOld Value

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论