计算机原理 中央处理器:数据通路和控制器.ppt

上传人:小飞机 文档编号:6342289 上传时间:2023-10-18 格式:PPT 页数:231 大小:5.78MB
返回 下载 相关 举报
计算机原理 中央处理器:数据通路和控制器.ppt_第1页
第1页 / 共231页
计算机原理 中央处理器:数据通路和控制器.ppt_第2页
第2页 / 共231页
计算机原理 中央处理器:数据通路和控制器.ppt_第3页
第3页 / 共231页
计算机原理 中央处理器:数据通路和控制器.ppt_第4页
第4页 / 共231页
计算机原理 中央处理器:数据通路和控制器.ppt_第5页
第5页 / 共231页
点击查看更多>>
资源描述

《计算机原理 中央处理器:数据通路和控制器.ppt》由会员分享,可在线阅读,更多相关《计算机原理 中央处理器:数据通路和控制器.ppt(231页珍藏版)》请在三一办公上搜索。

1、计算机原理,第六章 中央处理器:数据通路和控制器,本讲简要说明,目的与要求:了解CPU的功能,理解处理器数据通路的建立,掌握单周期数据通路的设计授课重点:单周期数据通路的建立与设计授课难点:如何在处理器中建立数据通路阅读章节:Computer Organization and Design第5章第13节,计算机原理和设计第4章第12节作业安排:P354 5.1题,数据通路的位置控制器的基本概念单周期数据通路的设计数据通路的功能和实现操作元件(组合逻辑)状态/存储元件(时序逻辑)数据通路的定时选择MIPS指令集的一个子集作为CPU的实现目标下条指令地址计算与取指令部件R型指令的数据通路访存指令的

2、数据通路立即数运算指令的数据通路分支和跳转指令的数据通路综合所有指令的数据通路,主 要 内 容,回顾存储程序计算机结构,数据通路的位置,计算机的五大组成部分 什么是数据通路(DataPath)?指令执行过程中,数据所经过的路径(包括路径中的部件),是指令的执行部件 控制器(Control)的功能对指令进行译码,生成指令对应的控制信号,控制数据通路的动作。能对指令的执行部件发出控制信号,是指令的控制部件,控制器基本概念,控制器的功能(从程序执行角度看)对指令流和数据流实施正确控制在空间上,由控制器形成受控部件的控制信号在时间上,控制器控制各种动作的执行顺序,控制器基本概念,控制器的功能(从系统设

3、计和实现的角度看)取指令(控制指令流出)分析指令(控制指令分析)执行指令,发出各种操作命令(控制指令执行)确定下一条指令的地址(控制指令流向)执行环境的建立与保护(控制执行环境的维护),存储器,运算器,控制器,控制器基本概念,PC IR ID,ALU 寄存器 XR 地址运算,中断系统,CU 时序电路,控制器的功能(从完成功能角度看),1)用户可见寄存器,(1)通用寄存器,CPU 的寄存器,存放操作数,可作 某种寻址方式所需的 专用寄存器,(2)数据寄存器,存放操作数(满足各种数据类型),两个寄存器拼接存放双倍字长数据,(3)地址寄存器,存放地址,其位数满足最大地址范围,用于特殊寻址方式 段基值

4、 栈指针,(4)条件码寄存器,存放条件码,可作程序分支的依据,如 正、负、零、溢出、进位等,控制器基本概念,2)控制和状态寄存器,(1)控制寄存器,PC,控制 CPU 操作,(2)状态寄存器,状态寄存器,其中 MAR MBR IR 用户不可见,存放条件码用户可见,PSW 寄存器,存放程序状态字用户可见,PC 用户可见,MAR,MM,MBR,IR,控制器基本概念,CPU 的寄存器,CPU基本组成原理图,CPU 由 执行部件 和 控制部件组成CPU 包含 数据通路 和 控制器,控制器 由 指令译码器 和 控制信号形成部件 等组成,CPU执行指令过程及其与计算机性能的关系,CPU执行指令的过程取指令

5、PC+1送PC指令译码进行主存地址运算取操作数进行算术/逻辑运算存结果判断和检测“异常”事件若有异常,则自动切换到异常处理程序检测是否有“中断”请求,有则转中断处理CPU的实现与计算机性能的关系计算机性能(程序执行快慢)由三个关键因素决定:指令数目、时钟周期、CPI指令数目由编译器和指令集决定时钟周期和CPI由CPU的实现来决定,CPU的设计与实现非常重要!它直接影响计算机的性能。,问题:“取指令”一定在最开始做吗?“PC+1”一定在译码之前做吗?“译码”须在指令执行前做吗?“异常”和“中断”差别是什么?,组成指令功能的四个基本操作,每条指令的功能可能由四个基本操作实现(1)读取某一主存单元的

6、内容,并将其装入某个寄存器(2)把一个数据从某个寄存器存入给定的主存单元中(3)把一个数据从某个寄存器送到另一个寄存器或ALU(4)进行某种算术或逻辑运算,将结果送入某个寄存器操作功能可形式化描述用寄存器传输语言RTL(Register Transfer Language)描述本章所用的RTL规定:用Rr表示寄存器r的内容 用Maddr表示读取主存单元addr的内容 传送方向用“”表示,传送源在右,传送目的在左 程序计数器PC直接用PC表示其内容 用OPdata表示对数据data进行OP操作,数据通路的基本结构,数据通路由两类部件组成组合逻辑元件(亦称操作元件)存储元件(亦称状态元件)元件间的

7、连接方式总线连接方式分散连接方式数据通路的构成由“操作元件”和“存储元件”通过总线或分散方式连接而成数据通路的功能进行数据存储、处理、传送,因此,数据通路是由操作元件和存储元件通过总线方式或分散方式连接而成的进行数据存储、处理、传送的路径。,操作元件:组合逻辑电路,加法器(Adder)多路选择器(MUX)算术逻辑部件(ALU),译码器(Decoder),何时要用到adder,ALU,MUX or Decoder?,组合逻辑元件的特点 其输出只取决于当前的输入 定时:所有输入到达后,经过一定的逻辑门延时,输出端改变,并保持到下次改变,不需要时钟信号来定时,二选一 或多选一,加法器需要什么控制信号

8、?,状态元件:时序逻辑电路,状态(存储)元件的特点 具有存储功能,在时钟控制下输入状态被写到电路中,直到下一个时钟到达输入端状态由时钟决定何时写入,输出端状态随时可读出定时方式:规定信号何时写入状态元件或何时从状态元件读出边沿触发(edge-triggered)方式 状态单元中的值只在时钟边沿改变。每个时钟周期改变一次最简单的状态单元 D触发器:一个时钟输入、一个状态输入、一个状态输出,上升沿(rising edge)触发:在时钟正跳变时进行读/写下降沿(falling edge)触发:在时钟负跳变时进行读/写,回顾D触发器,切记:状态单元的输入信息总是在一个时钟边沿到达后的“Clk-to-Q

9、”时才被写入到单元中,此时的输出才反映新的状态值,数据通路中的状态元件有两种:寄存器(组)+存储器,Q总是在clk-Q后跟着D变化,建立时间(Set Time):在触发时钟边沿之前输入必须稳定保持时间(Hold Time):在触发时钟边沿之后输入必须保持Clock-to-Q-time:在触发时钟边沿,输出并不能立即变化,寄存器的种类,寄存器由N位触发器构成CPU中的不同类型寄存器由锁存器构成的暂存器:带“写使能”信号用于和总线相连的、输出端带三态门的寄存器:带“三态门控”信号带复位(清0)功能的寄存器 带计数(自增)功能的寄存器 带移位功能的寄存器组合上述多个功能的寄存器:带多个控制信号寄存器

10、组有若干个寄存器组成通常是双口:两个读口+一个写口可带时钟输入信号用于控制输入信号何时被写入到寄存器中,经过一个clk-to-Q,输入信号在寄存器的输出端有效!,存储元件:寄存器和寄存器组,寄存器(Register)写使能(Write Enable-WE)信号 0:时钟边沿到时,输出不变 1:时钟边沿到时,输出开始变为输入若每个时钟边沿都写入,则不需WE信号寄存器组(Register File)两个读口(组合逻辑操作):busA和busB 分别由RA和RB给出地址。地址RA或 RB有效后,经一个“取数时间(AccessTime)”,BusA和BusB有效一个写口(时序逻辑操作):写使能 为1且

11、时钟边沿到时,busW传来的 值开始被写入RW指定的寄存器中,寄存器组的内部结构,busW,C,D,0,1,30,31,M,U,X,M,X,U,Register 0,Register 1,Register 30,Register 31,Write Enable,RW,32-to-1Decoder,RA,RB,busA,busB,C,D,C,D,C,D,每个寄存器由32个触发器组成,输入数据来自busW,读出数据分别送busA和busBWriteEnable信号控制是否写入新值,理想存储器(idealized memory)Data Out:32位读出数据Data In:32位写入数据Addre

12、ss:读写公用一个32位地址读操作(组合逻辑操作):地址Address有效后,经一个“取数时间AccessTime”,Data Out上数据有效写操作(时序逻辑操作):写使能为1且时钟Clk边沿到时,Data In传来的值开始被写入Address指定的存储单元,存储元件:理想存储器,为简化数据通路操作的说明,在此把存储器简化为带时钟信号Clk的理想模型。,数据通路与时序控制,同步系统(Synchronous system)用专门时序信号定时操作时序信号规定何时发何操作时序信号用于同步控制的定时信号指令周期取出并执行一条指令的时间不同指令的指令周期会不同早期计算机三级时序系统机器周期节拍(时钟周

13、期)脉冲指令周期分为取指令、读数、执行并存结果多个基本工作 周期,称为机器周期机器周期有取指令、存储器读/写、中断响应等类型,现代计算机已不采用三级时序系统,机器周期的概念已逐渐消失。整个数据通路中的定时信号就是时钟,一个时钟周期就是一个节拍。,SKIP,四类指令的指令周期,非访存 指令周期,直接访存 指令周期,间接访存 指令周期,转移 指令周期,指令周期,BACK,数据通路与时序控制,Clk,寄存器的输入可变化,Setup,Hold,Setup,Hold,数据通路由“+状态元件+操作元件(组合电路)+状态元件+”组成,只有状态元件能存储信息,所有操作元件都须从状态单元接收输入,并将输出写入状

14、态单元中。其输入为前一时钟生成的数据,输出为当前时钟所用的数据,现代计算机的时钟周期,Clk,Clk,假定采用下降沿触发(负跳变)方式(可以是上升沿方式)状态单元在下降沿写入信息,经Latch Prop(clk-to-Q)后输出有效 Cycle Time=Latch Prop+Longest Delay Path+Setup+Clock Skew约束条件:(Latch Prop+Shortest Delay Path-Clock Skew)Hold Time 通常Latch Prop Hold Time,故无需考虑Hold Time,早期累加器型指令系统数据通路,最简单的数据通路结构 取指令数

15、据路径 PCMAR,Read M,MMBRIBRIR取操作数、运算、送结果的数据路径 操作数地址MAR,Read M,MMBRALU输入端,ACALU输入端,ALU操作,ALU结果MBR,Write M,单总线数据通路,四种基本操作的时序在通用寄存器之间传送数据 R0out,Yin 完成算术、逻辑运算R1out,YinR2out,Add,ZinZout,R3in从主存取字 R1out,MARinRead,WMFC(等待MFC)MDRout,R2in 写字到主存R1out,MARinR2out,MDRin,Write,WMFC,RR2MRR1,MRR1 RR2,问题:时钟周期的宽度如何确定?以“

16、Riout,OP,Rjin”所花时间来确定还是以“Read/Write”所花时间来确定?以上四种操作各需要几个时钟周期?,1Cycle?,3Cycles?,3Cycles?,3Cycles?,三总线数据通路,单总线中一个时钟内只允许传一个数据,因而指令执行效率很低可采用多总线方式,同时在多个总线上传送不同数据,提高效率例:三总线数据通路总线A、B分别传送两个源操作数,总线C传送结果单总线中暂存器Y和Z可取消,Why?采用双口寄存器如何实现:RR3 RR1 op RR2R1outA,R2outB,OP,R3inC只要一个时钟周期即可,目前,大多数计算机都采用流水线方式执行指令,而上述单总线或三总

17、线数据通路很难实现指令流水执行。,Z,Y,以MIPS指令系统为例介绍非总线式CPU的设计,回顾MIPS的三种指令类型,ADD and SUBSTRACTadd rd,rs,rtsub rd,rs,rtOR Immediate ori rt,rs,imm16LOAD and STORElw rt,rs,imm16sw rt,rs,imm16BRANCH beq rs,rt,imm16JUMPj target,这些指令具有代表性!算术运算、逻辑运算;RR型、RI型;访存指令;条件转移、无条件转移,本讲重点:实现以上指令的数据通路!,MIPS有哪三种类型指令?,R-Type、I-Type、J-Typ

18、e,设计处理器的步骤,第一步:分析每条指令的功能,并用RTL(Register Transfer Language)来表示 第二步:根据指令功能给出所需元件,并考虑如何将他们互连 第三步:确定每个元件所需控制信号的取值 第四步:汇总所有指令所涉及到的控制信号,生成一张反映指令与控制信号之间关系的表 第五步:根据表得到每个控制信号的逻辑表达式,据此设计控制器电路,处理器设计涉及到数据通路的设计和控制器的设计 数据通路中有两种元件 操作元件:由组合逻辑电路实现 存储(状态)元件:由时序逻辑电路实现,SKIP,RTL:The ADD Instruction(加法指令),addrd,rs,rtMPC从

19、PC所指的内存单元中取指令Rrd Rrs+Rrt从rs、rt 所指的寄存器中取数后相加,结果送rd 所指的寄存器中PC PC+4PC加4,使PC指向下一条指令,RTL:The Load Instruction(装入指令),lwrt,rs,imm16MPC(同加法指令)Addr Rrs+SignExt(imm16)计算数据地址(立即数要进行符号扩展)Rrt MAddr 从存储器中取出数据,装入到寄存器中PC PC+4(同加法指令),BACK to design pro.,数据通路中的关键路径(Load操作),寄存器组和理想存储器的定时方式写操作时,作为时序逻辑电路 时钟到达前输入需setup;到

20、达后经“Clk-to-Q”写入数据到达输出端读操作时,作为组合逻辑电路 地址有效后经过“access time”,输出开始有效,Clk,5,Rw,Ra,Rb,32 32-bitRegisters,Rd,Clk,Data In,DataOut,DataAddress,IdealDataMemory,Instruction bus,Instruction Address,IdealInstructionMemory,Clk,PC,5,Rs,5,Rt,16,Imm,32,32,32,32,Load操作:RRt M(Rs)+Imm16,取指部件(Instruction Fetch Unit),每条指令

21、都有的公共操作取指令:MPC更新PC:PC PC+4 转移(Branch and Jump)时,PC内容再次被更新为“转移目标地址”,顺序:先取指令,再改变PC的值(具体实现可以并行)决不能先改变PC的值,再取指令,取指后,每条指令功能不同,在数据通路中信息流动过程也不同下面分别对每条指令进行数据通路设计,加法和减法指令(R-type类型),实现目标(7条指令)ADD and subtractadd rd,rs,rtsub rd,rs,rtOR Immediate ori rt,rs,imm16LOAD and STORElw rt,rs,imm16sw rt,rs,imm16BRANCH b

22、eq rs,rt,imm16JUMP j target,1.考虑add和sub指令(R-Type指令的代表),RR(R-type)型指令的数据通路,功能:Rrd Rrs op Rrt Example:add rd,rs,rt,不考虑公共操作,仅R-Type指令执行阶段的数据通路如下:,ALUctr、RegWr:指令译码后产生的控制信号,Ra,Rb,Rw 分别对应指令的rs,rt,rd,指令“add rd,rs,rt”的控制信号应为?ALUctr=add,RegWr=1,带立即数的逻辑指令(ori指令),实现目标(7条指令)ADD and subtractadd rd,rs,rtsub rd,r

23、s,rtOR Immediate ori rt,rs,imm16LOAD and STORElw rt,rs,imm16sw rt,rs,imm16BRANCH beq rs,rt,imm16JUMP j target,2.考虑ori 指令(I-Type指令和逻辑运算指令的代表),RTL:The OR Immediate Instruction,orirt,rs,imm16MPC 取指令(公共操作,取指部件完成)Rrt Rrs or ZeroExt(imm16)立即数零扩展,并与rs内容做“或”运算PC PC+4 计算下地址(公共操作,取指部件完成),思考:应在前面数据通路上加哪些元件和连线?

24、用什么控制信号来控制?,逻辑运算,立即数为逻辑数,带立即数的逻辑指令的数据通路,Rrt Rrs op ZeroExtimm16 Example:ori rt,rs,imm16,32,Result,ALUctr,Clk,busW,RegWr,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bitRegisters,Rs,Dont Care(Rt),ALU,R-Type类型的结果写入Rd,R-Type的操作数来自busB,Ori指令的控制信号:RegDst=?;RegWr=?;ALUctr=?;ALUSrc=?,Ori指令的控制信号:RegDst=1;RegWr=1

25、;ALUSrc=1;ALUctr=or,访存指令中的数据装入指令(lw),实现目标(7条指令)ADD and subtractadd rd,rs,rtsub rd,rs,rtOR Immediate:ori rt,rs,imm16LOAD and STORElw rt,rs,imm16sw rt,rs,imm16BRANCH:beq rs,rt,imm16JUMP:j target,3.考虑lw 指令(访存指令的代表),RTL:The Load Instruction,lwrt,rs,imm16MPC取指令(公共操作,取指部件完成)Addr Rrs+SignExt(imm16)计算存储单元地址

26、(符号扩展!)Rrt M Addr 装入数据到寄存器rt中PC PC+4计算下地址(公共操作,取指部件完成),符号扩展(为什么不是零扩展?),思考:应在原数据通路上加哪些元件和连线?用什么控制信号来控制?,立即数用补码表示,装入(lw)指令的数据通路,Rrt M Rrs+SignExtimm16 Example:lw rt,rs,imm16,immediate,0,16,21,26,31,6 bits,16 bits,5 bits,5 bits,32,ALUctr,Clk,busW,RegWr,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bitRegiste

27、rs,Rs,Rt,Dont Care(Rt),Rd,RegDst,Mux,Mux,32,16,imm16,ALUSrc,ALU,控制信号RegDst,RegWr,ALUctr,ExtOp,ALUSrc,MemWr,MemtoReg 各取何值?,RegDst=1,RegWr=1,ALUctr=add,ExtOp=1,ALUSrc=1,MemWr=0,MemtoReg=1,0:零扩展,1:符号扩展,访存指令中的存数指令(sw),实现目标(7条指令)ADD and subtractadd rd,rs,rtsub rd,rs,rtOR Immediate:ori rt,rs,imm16LOAD and

28、 STORElw rt,rs,imm16sw rt,rs,imm16BRANCH:beq rs,rt,imm16JUMP:j target,4.考虑sw 指令(访存指令的代表),RTL:The Store Instruction,swrt,rs,imm16MPC取指令(公共操作,取指部件完成)Addr Rrs+SignExt(imm16)计算存储单元地址(符号扩展!)MemAddr Rrt寄存器rt中的内容存到内存单元PC PC+4计算下地址(公共操作,取指部件完成),思考:应在原数据通路上加哪些元件和连线?用什么控制信号来控制?,立即数用补码表示,存数(sw)指令的数据通路,M Rrs+Si

29、gnExtimm16 Rrt Example:sw rt,rs,imm16,32,ALUctr,Clk,busW,RegWr,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bitRegisters,Rs,Rt,Rt,Rd,RegDst,Extender,Mux,Mux,32,16,imm16,ALUSrc,ExtOp,Mux,MemtoReg,Clk,Data In,WrEn,32,Adr,DataMemory,32,MemWr,ALU,控制信号RegDst,RegWr,ALUctr,ExtOp,ALUSrc,MemWr,MemtoReg 各取何值?,RegD

30、st=x,RegWr=0,ALUctr=add,ExtOp=1,ALUSrc=1,MemWr=1,MemtoReg=x,分支(条件转移)指令(相等转移:beq),实现目标(7条指令)ADD and subtractadd rd,rs,rtsub rd,rs,rtOR Immediate:ori rt,rs,imm16LOAD and STORElw rt,rs,imm16sw rt,rs,imm16BRANCH:beq rs,rt,imm16JUMP:j target,5.考虑beq指令(条件转移指令的代表),RTL:The Branch Instruction,beqrs,rt,imm16M

31、PC取指令(公共操作,取指部件完成)Cond Rrs-Rrt做减法比较rs和rt中的内容if(COND eq 0)计算下地址(根据比较结果,修改PC)PC PC+4+(SignExt(imm16)x 4)elsePC PC+4,思考:立即数的含义是什么?是相对指令数还是相对单元数?应在原数据通路上加哪些元件和连线?用什么控制信号来控制?,立即数用补码表示,条件转移指令的数据通路,beq rs,rt,imm16We need to compare Rs and Rt!,ALUctr,Clk,busW,RegWr,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bi

32、tRegisters,Rs,Rt,Rt,Rd,RegDst,Extender,Mux,Mux,32,16,imm16,ALUSrc,ExtOp,ALU,控制信号RegDst,RegWr,ALUctr,ExtOp,ALUSrc,MemWr,MemtoReg,Branch 各取何值?,RegDst=x,RegWr=0,ALUctr=sub,ExtOp=x,ALUSrc=0,MemWr=0,MemtoReg=x,Branch=1,下地址计算逻辑的设计,PC是一个32位地址:顺序执行时:PC=PC+4转移执行时:PC=PC+4+SignExtImm16*4,MIPS按字节编址,每条指令为32位,占4个

33、字节,故PC的值总是4的倍数,即后两位为00,因此,PC只需要30位即可,下地址计算逻辑简化为:顺序执行时:PC=PC+1转移执行时:PC=PC+1+SignExtImm16取指令时:指令地址=PC 串接“00”,PC采用30位后,其转移地址计算逻辑变得更加简单,采用32位PC时,可用左移2位实现“*4”操作,计算转移地址用2个加法器!用更简便的方式实现如下:,下址逻辑设计方案1:快速但昂贵,Using a 30-bit PC:顺序执行时:PC=PC+1转移执行时:PC=PC+1+SignExtImm16取指令时:指令地址=PC concat“00”,30,30,SignExt,30,16,i

34、mm16,Adder,“1”,Adder,30,30,Branch,Zero,Addr,InstructionMemory,Addr,“00”,32,Instruction,Instruction,30,先由当前PC取指令,计算的下条指令地址在下一个时钟到来后才写入PC!,标志位ZF由ALU产生!,为什么这里没有用“ALU”而是用“Adder”?“ALU”和“Adder”有什么差别?,为什么慢?只能等到“Zero”有值后才能进行地址计算对性能有没有影响?没有,因为Load指令更慢为什么便宜?“+1”操作用“进位”来实现,节省一个“Adder”,30,30,SignExt,30,16,imm16

35、,Mux,0,1,Adder,“0”,30,Branch,Zero,Addr,InstructionMemory,Addr,“00”,32,Instruction,30,“1”,Carry In,Instruction,非Branch时也不能很快得到下条指令地址,下址逻辑设计方案2:慢但便宜,无条件转移指令,实现目标(7条指令)ADD and subtractadd rd,rs,rtsub rd,rs,rtOR Immediate:ori rt,rs,imm16LOAD and STORElw rt,rs,imm16sw rt,rs,imm16BRANCH:beq rs,rt,imm16JUM

36、P:j target,6.考虑Jump指令(无条件转移指令的代表),RTL:The Jump Instruction,jtargetMPC取指令(公共操作,取指部件完成)PC PC 串接 target 计算目标地址,思考:应在原数据通路上加哪些元件和连线?用什么控制信号来控制?,想一想:跳转指令的转移范围有多大?是当前指令后的0 x00000000 xFFFFFFC 处?,不对!它不是相对寻址,而是绝对寻址,PC的改变在下个Clk到达后发生!,Instruction Fetch Unit:取指部件,30,30,SignExt,30,16,imm16,Mux,0,1,Adder,“1”,30,3

37、0,Branch,Zero,“00”,Addr,InstructionMemory,Addr,32,J targetPC PC concat target,Instruction,Instruction,30,这是“取指部件”的完整设计3 个输入:jump,Branch,Zero1个输出:指令字,RegDst,RegWr,ALUctr,ExtOp,ALUSrc,MemWr,MemtoReg,Branch,Jump 各取何值?,RegDst=ExtOp=ALUSrc=MemtoReg=ALUctr=x,RegWr=0,MemWr=0,Branch=0,Jump=1,The MIPS Subset

38、(考察实现以下指令的数据通路),ADD and subtractadd rd,rs,rtsub rd,rs,rtOR Immediate:ori rt,rs,imm16LOAD and STORElw rt,rs,imm16sw rt,rs,imm16BRANCH:beq rs,rt,imm16JUMP:j target,所有指令的数据通路都已经设计好,合起来的数据通路是什么样的?,Putting it All Together:A Single Cycle Datapath,32,ALUctr,Clk,busW,RegWr,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,

39、32 32-bitRegisters,Rs,Rt,Rt,Rd,RegDst,Extender,Mux,Mux,32,16,imm16,ALUSrc,ExtOp,Mux,MemtoReg,Clk,Data In,WrEn,32,Adr,DataMemory,32,MemWr,ALU,InstructionFetch Unit,Clk,Zero,Instruction,Jump,Branch,0,1,0,1,0,1,Imm16,Rd,Rt,Rs,指令执行结果总是在下个时钟到来时开始保存在 寄存器 或 存储器 或 PC 中!,下步考虑:如何产生控制信号!(这就是控制器的设计内容),已完成的每条指令所

40、用数据通路(元件及其互连)及其控制信号如下,第一讲 小结,CPU设计直接决定了时钟周期宽度和CPI,所以对计算机性能非常重要!CPU主要由数据通路和控制器组成数据通路:实现指令集中所有指令的操作功能控制器:控制数据通路中各部件进行正确操作数据通路的两种元件操作元件(组合电路):ALU、MUX、Ext.、Adder、Reg/Mem Read状态/存储元件(时序电路):PC、Reg/Mem Write数据通路的定时数据通路中操作元件没有存储功能,其操作结果须写到存储元件中在时钟到达后clk-to-Q时存储元件开始更新状态MIPS指令集的一个子集作为CPU的实现目标公共操作:取指令和PC+4下址计算

41、:30位PC,三路选择:顺序、Branch(结合标志Zero)、JumpR型:ALU两个操作数来自rs和rt,结果写到rd访存:符号扩展,数据在rt和主存单元中交换立即数:0扩展后的操作数送到ALU的一个输入端,谢谢!,计算机原理,第六章 中央处理器:数据通路和控制器,本讲简要说明,目的与要求:掌握单周期控制器的设计 授课重点:单周期控制器的设计 授课难点:如何设计单周期控制器阅读章节:Computer Organization and Design第5章第4节,计算机原理和设计第4章第23节作业安排:P354 5.8、5.13题(选做),主 要 内 容,考察每条指令在数据通路中的执行过程和涉

42、及到的控制信号取值公共操作:取指令和计算下址PCR-Type指令(add/sub)立即数指令(ori)访存指令(lw/sw)分支指令(beq)跳转指令(j)汇总各指令的控制信号取值两类控制信号:直接送往数据通路/送往局部控制单元分析ALU操作对应的控制信号与func字段间的关系设计ALU局部控制单元设计主控制单元,The Big Picture:Where are We Now?,The Five Classic Components of a Computer,下一个目标:设计单周期数据通路的控制器,设计方法(1)根据每条指令功能,分析控制信号取值,并在表中列出(2)根据列出的指令和控制信号

43、关系,写出每个控制信号的逻辑表达式,ADD/SUB 指令,addrd,rs,rtMPC取指(每条指令一样)Rrd Rrs+Rrt实际操作(每条指令可能不同)PC PC+4计算顺序执行时PC的值(每条指令一样),Add/Sub操作开始时取指部件中的动作,30,30,SignExt,30,16,imm16,“1”,PC,30,30,Branch=previous,Zero=previous,“00”,Addr,InstructionMemory,Addr,32,26,4,PC,Target,30,取指令:Instruction MPC所有指令都相同,Jump=previous,Instructio

44、n,Instruction,30,Instruction,Clk,新指令未取出译码,控制信号值还是原指令旧值新指令还没执行,标志亦为旧值,取出指令的第31-26位作为操作码首先被译码 op=000000,则为R-type指令,取指部件由旧控制信号控制,会不会有问题?,没有问题!Why?,指令译码后R型指令(Add/Sub)操作过程,32,ALUctr=Add or Sub,Clk,busW,RegWr=1,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bitRegisters,Rs,Rt,Rt,Rd,RegDst=1,Extender,Mux,Mux,32,1

45、6,imm16,ALUSrc=0,ExtOp=x,Mux,MemtoReg=0,Clk,Data In,WrEn,32,Adr,DataMemory,32,MemWr=0,ALU,InstructionFetch Unit,Clk,Zero,Instruction,Jump=0,Branch=0,Rrd Rrs+/-Rrt,0,1,0,1,0,1,Imm16,Rd,Rt,Rs,R型指令(Add/Sub)最后阶段取指部件中的动作,30,30,SignExt,30,16,imm16,“1”,30,30,Branch=0,Zero=x,“00”,Addr,InstructionMemory,Addr

46、,32,26,4,PC,Target,30,PC PC+4除 Branch and Jump以外的指令都相同,Instruction,Instruction,30,Instruction,因为新的控制信号保证了正确的PC值产生,在足够长的时间后,下个时钟Clk到来!,Register-Register(R型指令)Timing,32,Result,ALUctr,Clk,busW,RegWr,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bitRegisters,Rs,Rt,Rd,ALU,Clk,PC,Rs,Rt,Rd,Op,Func,Clk-to-Q,ALUct

47、r,Instruction Memory Access Time,Old Value,New Value,RegWr,Old Value,New Value,Delay through Control Logic,busA,B,Register File Access Time,Old Value,New Value,busW,ALU Delay,Old Value,New Value,Old Value,New Value,New Value,Old Value,PC+4,ori 指令译码后的执行过程,32,ALUctr=Or,Clk,busW,RegWr=1,32,32,busA,32,b

48、usB,5,5,5,Rw,Ra,Rb,32 32-bitRegisters,Rs,Rt,Rt,Rd,RegDst=0,Extender,Mux,Mux,32,16,imm16,ALUSrc=1,ExtOp=0,Mux,MemtoReg=0,Clk,Data In,WrEn,32,Adr,DataMemory,32,MemWr=0,ALU,InstructionFetch Unit,Clk,Zero,Instruction,Jump=0,Branch=0,Rrt Rrs or ZeroExtImm16,0,1,0,1,0,1,Imm16,Rd,Rt,Rs,Load指令译码后的执行过程,32,AL

49、Uctr=Add,Clk,busW,RegWr=1,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bitRegisters,Rs,Rt,Rt,Rd,RegDst=0,Extender,Mux,Mux,32,16,imm16,ALUSrc=1,ExtOp=1,Mux,MemtoReg=1,Clk,Data In,WrEn,32,Adr,DataMemory,32,MemWr=0,ALU,InstructionFetch Unit,Clk,Zero,Instruction,Jump=0,Branch=0,0,1,0,1,0,1,Imm16,Rd,Rt,Rs,Rrt

50、 Data Memory Rrs+SignExtimm16,Store指令译码后的执行过程,32,ALUctr=Add,Clk,busW,RegWr=0,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bitRegisters,Rs,Rt,Rt,Rd,RegDst=x,Extender,Mux,Mux,32,16,imm16,ALUSrc=1,ExtOp=1,Mux,MemtoReg=x,Clk,Data In,WrEn,32,Adr,DataMemory,32,MemWr=1,ALU,InstructionFetch Unit,Clk,Zero,Instruc

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号