中央处理器(2-4)数据通路结构描述.ppt

上传人:小飞机 文档编号:6542144 上传时间:2023-11-10 格式:PPT 页数:102 大小:1.86MB
返回 下载 相关 举报
中央处理器(2-4)数据通路结构描述.ppt_第1页
第1页 / 共102页
中央处理器(2-4)数据通路结构描述.ppt_第2页
第2页 / 共102页
中央处理器(2-4)数据通路结构描述.ppt_第3页
第3页 / 共102页
中央处理器(2-4)数据通路结构描述.ppt_第4页
第4页 / 共102页
中央处理器(2-4)数据通路结构描述.ppt_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《中央处理器(2-4)数据通路结构描述.ppt》由会员分享,可在线阅读,更多相关《中央处理器(2-4)数据通路结构描述.ppt(102页珍藏版)》请在三一办公上搜索。

1、Datapaths,1,指令周期,算术逻辑单元,状态条件寄存器,程序计数器PC,地址寄存器AR,地址总线ABUS,数据总线DBUS,累加器AC,缓冲寄存器DR,ALU,指令寄存器IR,指令译码器,操作控制器时序产生器,时钟,状态反馈,取指控制,执行控制,c,c,c,c,+1,20,21,22,23,24,30,40,CLA,ADD 30,STA 40,NOP,JMP 21,000 006,000 024,JMP 21,JMP 21,000 024,000 021,000 006,000 006,000 025,000 021,Datapaths,2,具体步骤如下:1)根据程序计数器PC的内容从

2、内存中取出一条指令,放置于指令寄存器IR中;2)分析IR中的操作码,决定应执行的操作;3)根据IR的地址码取出参加运算的操作数;4)对操作数进行运算;5)根据IR的地址码把运算结果存入指定地址;6)本条指令执行完毕,修改PC内容决定下一条指令所在的地址。,Datapaths,3,时序与控制方式 控制器在时钟脉冲驱动下产生节拍,一般情况下一个节拍对应于一个时钟脉冲,如下图所示。图中用step_i 代表第i个节拍,其宽度与时钟周期相等。节拍电位和其他信号相互组合用于控制操作,引导数据在数据通路中流动;而在节拍的末尾处则由时钟脉冲把运算结果(或中间结果)打入寄存器。,Datapaths,4,同步控制

3、方式,Datapaths,5,有限状态机(Finite State Machine,FSM),Datapaths,6,结构描述,Datapaths,7,组合逻辑控制器,Datapaths,8,Datapaths,9,Datapaths,10,Datapaths,11,CPU 设计,CPU 的设计可分为三部分:数据通路datapath 实现真正的数据处理.指令集 instruction set 实现程序和CPU之间的接口.控制器 control unit 使用程序员的指令告诉数据通路做什么。数据通路:ALU.寄存器.可读写的内存.,Datapaths,12,CPU?,处理器是一个很大规模的时序电

4、路.寄存器保存值,组成系统的状态 ALU 对存储在寄存器中的数据,进行数据处理.,结构描述,Datapaths,13,寄存器传送,本质上,处理器只是在寄存器间传送数据,可能在ALU 中做一些计算.引入 寄存器传送语言.对象为寄存器.基本的操作为 传送,将数据从一个寄存器复制到另一个寄存器.在传送中,利用ALU 做运算.,Datapaths,14,用两个字符表示寄存器,如 R0,R1,DR,或 SA.箭头表示 数据传送.如在一个时钟周期内复制 源寄存器 R2 到 目标寄存器 R1:R1 R2条件传送:仅当条件满足时进行传送如 K=1:传送 R3 至 R2 表示 为K=1:R2 R3在同一时钟周期

5、内进行的多个传送.R1 R2,K:R2 R3,寄存器传送语言,Datapaths,15,表示 算术操作:R1 R2+R3R3 R1-1 表示 逻辑操作:R2 R1 R2bitwise ANDR3 R0 R1bitwise OR表示移位:R2 sl R1 left shiftR2 sr R1 right shift,Register transfer operations,Datapaths,16,寄存器的方框图,如上表示一个 n-bit 的寄存器.数据:当 Load=1,数据输入.当 Load=0,寄存器保存当前值。寄存器的输出总是有效.省去时钟信号.,Datapaths,17,寄存器文件,寄

6、存器文件:当代处理器通常将多个寄存器组织到一起称为register file.与RAM类似,寄存器用地址区分。右图为2k x n 的寄存器文件:有2k 个寄存器,寄存器的地址线为k bits 长.每个寄存器存放一个n-bit 的字,,数据输入输出为 n bits 宽.,Datapaths,18,访问寄存器文件,假设:同时给出 AA 和 BA,则数据同时出现在 A 和 B 输出;当WR=1,利用DA 和 D 写入寄存器;方框图中省去了时钟信号:任何时候可以读出.但只在时钟的上升沿写入,n,n,n,k,k,k,D data,Write,D address,A address,B address,A

7、 data,B data,Register File,D,WR,DA,AA,A,B,BA,Datapaths,19,寄存器文件的内部,4个 n 位的寄存器文件,Datapaths,20,ALU,ALU的方框图:A/B 是2个 n-bit 的数值输入.FS 是 m-bit 的功能选择码,可表示 2m 个功能.F 为 n-bit 的计算结果.状态位 表示对应当前输出F 的附加状态:V=1 溢出.C 进位.N=1 结果为负.Z=1 结果 为0.,Datapaths,21,ALU 的功能,功能选择码为5 bits 长定义15种不同的功能。,Datapaths,22,第1个数据通路,最基本的数据通路:A

8、LU 的2个输入来自于寄存器文件.ALU 计算,结果存回寄存器.WR,DA,AA,BA,FS 为控制信号,决定数据通路的具体动作,如使用哪个寄存器及执行何种运算.,Datapaths,23,R0 R1+R3 AA=01 且 BA=11.R1 给 A data,R3 给 B data.ALU 功能选择码 为 FS=00010(A+B).DA=00 且 WR=1.在下一个时钟的上升沿,ALU 结果(R1+R3)存入 R0.,D data,Write,D address,A address,B address,A data,B data,Register File,WR,DA,AA,BA,A,B,A

9、LU,F,Z,N,C,V,FS,FS,00010,01,11,00,1,Datapaths,24,Two questions,需要更多的存储单元?谁来决定读写哪个寄存器及执行何种ALU 功能?,Datapaths,25,访问内存,在数据通路中加入RAM.写 RAM,需给出地址ADRS和数据DATA,分别 取自寄存器的A data.和B data 当 MW=1 时写入 RAM.,D data,Write,D address,A address,B address,A data,B data,Register File,WR,DA,AA,BA,A,B,ALU,F,Z,N,C,V,FS,FS,MD,

10、1,Datapaths,26,读RAM,读RAM,A data 提供地址.MW=0 结果存入寄存器.D data 有2个来源 ALU 或 RAM.多路选择器 MD 选择数据源:当 MD=0,ALU 输出存入寄存器.当 MD=1,RAM 输出存入寄存器.,D data,Write,D address,A address,B address,A data,B data,Register File,WR,DA,AA,BA,A,B,ALU,F,Z,N,C,V,FS,RAM,ADRS,DATA,CS,WR,OUT,MW,+5V,n,n,FS,MD,0,Datapaths,27,数据可在内存与寄存器文件之

11、间传送.ALU 不能直接访问内存.内存的容量受寄存器的限制。对于 字长为n-bit 的寄存器,只能使用2n x n 的内存.假设RAM 与CPU 时钟一样快,Datapaths,28,地址为X的内存单元的内容可表示为MX.例如:RAM 中的第1个字为 M0.若 R1 中包含内存地址,则MR1 表示 该单元的内容.,Datapaths,29,寄存器传送:R3 MR0R3 R3+1MR0 R3地址为 R0 的 RAM 的数据+1.ALU 只能对寄存器运算,RAM 必须先装入寄存器,运算后再存回RAM.假设R0 包含内存单元的地址.数据通路如何完成该操作?,Datapaths,30,R3 MR0,A

12、A=00,读 R0.R0 作为 RAM 的地址,MR0 出现在 RAM 的 OUT.MD=1,RAM 输出送到寄存器.DA=11 且 WR=1,结果存入R3MW=0,防止意外写入 RAM.没有ALU(FS)和BA.,1,11,00,1,0,D data,Write,D address,A address,B address,A data,B data,Register File,WR,DA,AA,BA,A,B,ALU,F,Z,N,C,V,FS,RAM,ADRS,DATA,CS,WR,OUT,MW,+5V,n,n,FS,n,MD,Datapaths,31,R3 R3+1,AA=11,R3 送入

13、ALU 的A 输入端.FS=00001,实现 A+1.R3+1 出现在ALU 输出端 F.MD=0,ALU 输出送回寄存器.DA=11 且 WR=1 结果写回到R3MW=0,避免意外写入内存没有使用BA.,D data,Write,D address,A address,B address,A data,B data,Register File,WR,DA,AA,BA,A,B,ALU,F,Z,N,C,V,FS,n,Q D1,D0,S,RAM,ADRS,DATA,CS,WR,OUT,MW,+5V,n,FS,MD,1,11,11,0,0,00001,Datapaths,32,MR0 R3,将R3

14、存回 RAM 中,其地址为 R0.AA=00 且 BA=11.R0 给ADRS,R3 给 DATA.MW=1,内存写.WR=0,无需写寄存器,MD 和 DA 没有用.不使用 ALU,忽略 FS,D data,Write,D address,A address,B address,A data,B data,Register File,WR,DA,AA,BA,A,B,ALU,F,Z,N,C,V,FS,RAM,ADRS,DATA,CS,WR,OUT,MW,+5V,n,n,FS,MD,0,00,1,11,Datapaths,33,加入常量,加入 常量,增加控制信号 MB.这样可以用任意值初始化寄存器

15、和内存.,MD,S D1 D0 Q,Constant,MB,Datapaths,34,Control units,数据通路的控制信号不同将执行不同的操作。谁提供控制信号?在真实的计算机中,数据通路的行为是由装入且正在执行的程序决定的.控制器 control unit 负责依据程序代码为数据通路产生正确的控制信号,Datapaths,35,小结,数据通路是处理器的一部分,完成真正的计算:基本元件为ALU,寄存器文件和内存。ALU 完成 计算,寄存器文件和内存提供对ALU 的操作数和结果的存储.不同的控制信号控制着数据通路的行为,Datapaths,36,Instruction set archi

16、tectures指令集体系结构,数据通路最终由程序员控制,Datapaths,37,编程与CPUs,用高级语言如C+,必须编译成可执行程序.可执行程序是面向 CPU的 机器语言(machine language)程序,可装入内存由处理器执行。机器语言是软硬件间的接口interface,讨论虚线以下的内容。,Datapaths,38,高级语言,High-level languages 提供很多有用的编程结构:For,while,loopsIf-then-else 函数和过程变量和数组许多语言提供一些很有用的安全性质:静态和动态类型检查垃圾收集高级语言相对来说是可移植的。理论上你可以编写一个高级语

17、言程序,然后在不同的处理器上运行。当与低级语言比较后,你才能体会到高级语言的“高级”.,Datapaths,39,低级语言,每个CPU有自己的低级指令集 instruction set,即机器语言,反映了 CPUs 的设计。这也意味着人类很难直接使用。表现在:控制流限于“jump”和“branch”,必须以此为基础构造loops 和 conditionals.对函数和过程的支持很有限.内存寻址方式必须明确显式指出,而不能简单地声明变量然后使用它们。很少提供错误检查。很难让机器语言程序在不同的处理器上运行。,Datapaths,40,汇编语言与机器语言,机器语言是二进制位串。人们使用 assem

18、bly language:加入助记符.助记符与机器指令有一对一的关系,汇编程序到机器程序的转换容易。,Datapaths,41,数据操作类指令,对应于ALU 的运算 加法类似于高级语言中的R0=R1+R2操作数为寄存器.,Datapaths,42,NOTR0,R1R0 R1ADDR3,R3,#1R3 R3+1SUBR1,R2,#5R1 R2-5NOT只有一个操作数.#表示常数,Datapaths,43,与数据通路的关系,指令反映了数据通路的设计.每条指令最多有两个数据源,因为ALU 只有两个输入.两个数据源可以是两个寄存器,也可以一个是寄存器,一个是常量.复杂的操作,如:R0 R1+R2-#3

19、必须由多条指令完成.指令只有一个目的操作数,还必须是寄存器类型.,Datapaths,44,RAM?,ALU 能够直接访问的是寄存器文件。必须把RAM 的内容复制到寄存文件后,才能作为ALU的操作数。ALU 的结果必须经过寄存器才能存入内存。必须依赖于数据传送类指令将数据在内存与寄存器文件之间传送。,Datapaths,45,从RAM中传送数据到寄存器,load 指令从内存中传送数据到寄存器。LD R1,(R3)R1 MR3 RAM 的地址来自于寄存器。括号表示R3中存放的是一个内存单元的地址。,D data,Write,D address,A address,B address,A data

20、,B data,Register File,WR,DA,AA,BA,RAM,ADRS,DATA,CS,WR,OUT,MW,+5V,MD,S D1 D0 Q,Constant,MB,Datapaths,46,将寄存器中的数据存入RAM,store 指令将寄存器中的内容传送到内存 RAM.ST(R3),R1 MR3 R1RAM 地址存放在 R3 中。写入RAM 的数据存放在R1 中。,MD,S D1 D0 Q,Constant,MB,Datapaths,47,给寄存器赋值,初始化寄存器LD R1,#0 R1 0 ALU(FS=10000)“传送 B”操作。,D data,Write,D addre

21、ss,A address,B address,A data,B data,Register File,WR,DA,AA,BA,RAM,ADRS,DATA,CS,WR,OUT,MW,+5V,MD,S D1 D0 Q,Constant,MB,Datapaths,48,常量存入内存,初始化内存:ST(R3),#0MR3 0,MD,S D1 D0 Q,Constant,MB,Datapaths,49,#和()!,#和()表明了不同的寻址方式.寻址方式决定了如何寻找操作数:数据通路的设计决定了可以采用何种寻址方式.数据通路不支持第二个例子的寻址方式.Why not?,Datapaths,50,示例,M1

22、000 M1000+1等价的汇编语言:需多条指令!必须先将内存地址1000装入寄存器,然后通过寄存器访问内存。受数据通路的限制。ALU只能以寄存器的常量为操作数。CISC与RISC。,Datapaths,51,程序由指令组成,并存于内存:每条指令有一个地址;指令顺序存放。程序计数器 program counter(PC)跟踪当前指令的地址.通常,PC+1.有时需要改变程序串行执行的轨迹,需要控制流指令 control flow instructions.,控制流指令,Datapaths,52,jump 指令总是修改 PC的值。操作数表示应如何修改.通常用标号labels表示真正的地址。例如:例

23、如:重复,LD R1,#10LD R2,#3JMP LKLD R1,#20/这两条指令被跳过LD R2,#4/LADD R3,R3,R2ST(R1),R3,Jumps,LD R1,#0FADD R1,R1,#1JMP F/无限循环!,Datapaths,53,分支指令,branch 指令可能修改PC的值,依赖于条件是否成立。,LD R1,#10LD R2,#3BZ R4,L/Jump to L if R4=0KLD R1,#20/这两条指令可能被跳过,依赖于R4LD R2,#4/LADD R3,R3,R2ST(R1),R3,Datapaths,54,分支指令,Branch 条件通常根据 ALU

24、 的状态.其它分支条件(如大于/等于/小于)可以从ALU运算及以上条件中得出。,Datapaths,55,jumps 和 branches 比起高级语言的控制流结构简单得多Conditional statements.Loops,高级语言的控制流,Datapaths,56,用branch 指令转换高级语言的条件语句.,C if-then 语句的转换,Datapaths,57,C for loop 的转换,用 BGT branch 转换.,Datapaths,58,小结,机器语言是软硬件的接口.有三类主要的指令:数据操作类指令数据传送类指令控制流指令指令集ISA高度依赖于CPU的设计,Datap

25、aths,59,处理器结构,控制器control unit 连接程序和数据通路.control unit 将汇编语言的指令转换成数据通路所需的信号control words 包括 WR,DA,AA,BA,MB,FS,MW,MD.以一种正确的顺序执行程序.为数据通路提供持续的输入.数据通路也某些信息返回给控制器,例如 ALU 状态位 V,C,N,Z,branch 指令将检测这些状态信息,以修改控制流.,ControlUnit,Datapath,Control signals,Status signals,Program,Datapaths,60,从汇编语言到机器语言,machine langua

26、ge:处理器支持的汇编语言的二进制表示.上述 CPU 支持三类指令,它们有不同的操作数,因而需要不同的表示形式:Register format 需要两个源寄存器做操作数.Immediate format 需要一个源寄存器和一个常量操作数.Jump and branch format 需要一个源寄存器和一个常量地址.三种不同格式的指令使它们的二进制表示形式尽量类似:有利于使控制器的硬件设计简单.假设指令长为16位.,Datapaths,61,Register format,例如:ADD R1,R2,R3指令格式:7-bit opcode 操作码,指定操作(例如 ADD).3-bit destin

27、ation register 目的操作数 DR.两个 3-bit source registers 源操作数 SA 和 SB.,159865320,Datapaths,62,Immediate format,例如:ADD R1,R2,#3指令格式:7-bit opcode.3-bit 目的寄存器 DR.3-bit 源寄存器 SA.3-bit constant operand立即数 OP.,159865320,Datapaths,63,使用 PC相对 地址表示jumps 和 branches,即操作数表示的转移地址是相对于当前指令的.假设每条指令占一个内存字长.操作数为有符号数:jump 和 b

28、ranch 可能 向前或向后转移。向后转移可用于实现循环。,相对于PC 的 jumps 和 branches,Datapaths,64,Jump 和 branch format,例如:BZR3,-24 JMP18指令格式:7-bit 操作码。3-bit 源寄存器 SA 表示转移条件.6-bit address field,地址域AD,保存jump 或 branch 的偏移量.,159865320,Datapaths,65,地址域 AD,AD 被视为6-bit 有符号数,转移范围为(25-1)(-25).AD分成两部分,以使SA 在三种不同格式中占有同样的位置。,159865320,Datapa

29、ths,66,指令格式的一致性,不同类型指令的格式类似:Opcode 位置相同(bits 15-9).DR 位置相同.SA 位置相同。,159865320,Datapaths,67,指令格式和数据通路,指令格式与数据通路是密切相关的:由于寄存器地址(DR,SA,SB)是三位长,指令集只能支持8个寄存器常量OP 3位 长。如果ALU 的I/O 的数据宽度超过3位,常量在送入ALU 前需进行符号扩展。显然,支持更多的寄存器和更大的常量将增加机器语言指令的长度。,159865320,Datapaths,68,组织指令,如何选择操作码?通常,“类似”的指令应该选择类似的操作码,以简化控制器硬件的设计。

30、指令分成八类,每类具有类似的数据通路控制信号。,Datapaths,69,Register format 的ALU 操作,ADD R1,R2,R3所有的 register format ALU 操作需要 以下相同的控制信号:MB=0,因为操作数来自于寄存器文件.MD=0 且 WR=1,因为需将结果写回寄存器.MW=0,因为无需修改 RAM.,WR 1,Datapaths,70,内存写操作,ST(R0),R1所有的内存写操作需要以下相同的控制信号:MB=0,因为数据源是寄存器文件。MD=X 且 WR=0,因为无需修改寄存器.MW=1,更新 RAM.,WR 0,Datapaths,71,挑选操作码

31、,指令分成八类,同类型的指令应具有类似的操作码。同类型指令操作码的bits 15-13高三位相同.,Datapaths,72,ALU 与 shift instructions,对于 ALU 和 shift 操作,用操作码的bits 12-9 表示ALU的功能选择码FS3-FS0.例如,基于寄存器操作的XOR 指令,其操作码0001100.高三位表示 000 表示是基于寄存器的ALU 指令.1100 表示是 ALU XOR 操作.立即数移位指令的操作码1011000.101 表示是立即数移位操作。1000 表示为左移位.,Datapaths,73,Branch 指令,实现八种不同条件的转移指令。

32、操作码的位 11-9 表示转移条件.(bit 12不用.)例如,为0时转移指令 BZ 的操作码为 110 x011.高3位 110 表示是转移指令.011 表明为0时转移.,Datapaths,74,操作码示例,指令集中的部分指令及其操作码.某些操作码的部分位没有使用,可用于指令集在未来的扩展,如增加新指令或新的寻址方式。,Datapaths,75,汇编指令到机器码的转换:bits 8-0 取决于指令格式。,Datapaths,76,小结,指令集到机器语言的转换:不同的指令有不同的操作数和格式,尽量一致的格式有利于简化硬件的设计。同类型的指令尽量采用相似的操作码。指令的二进制编码与数据通路密切

33、相关。例如指令的长度限制了能够访问的寄存器的数目。一个关于如何定义机器语言的例子。,Datapaths,77,Control units,控制器control unit将指令的二进制代码转换成数据通路需要的控制信号。,Datapaths,78,数据通路,WR=1 写入寄存器.DA 写入寄存器的地址.AA 和 BA 选择源寄存器.MB 选择寄存器或常量.FS 选择 ALU 的功能.MW=1 写入内存.MD 选择ALU 的结果或RAM 输出.V,C,N,Z 状态位.,Datapaths,79,指令格式review,三种指令格式,指令16位长。7 位操作码,9位操作数.指令的高3位表示指令的类型。,

34、159865320,Datapaths,80,处理器结构,控制器control unit 连接程序和数据通路.control unit 将汇编语言的指令转换成数据通路所需的信号control words 包括 WR,DA,AA,BA,MB,FS,MW,MD.以一种正确的顺序执行程序.为数据通路提供持续的输入.数据通路也某些信息返回给控制器,例如 ALU 状态位 V,C,N,Z,branch instructions 将检测这些状态信息,以修改控制流.,ControlUnit,Datapath,Control signals,Status signals,Program,Datapaths,81

35、,程序放在哪儿?,哈佛结构 Harvard architecture,包含两种内存.指令存储器 instruction memory 存放程序.数据存储器 data memory 用于计算,存放数据.好处是对于指令的读和对数据的读写可以在同一时钟周期进行.省略指令RAM 的WR 和 DATA 输入信号.当代CPU 的Caches 通常采用类似的Harvard architecture.即存放程序也存放数据的内存结构,称为 Von Neumann architecture.,Datapaths,82,程序计数器Program counter,程序计数器 program counter 即 PC

36、用于寻址指令内存,跟踪当前执行指令.每个时钟周期,计数器完成下列工作之一:若 Load=0,PC+1,指向下一条指令.若 Load=1,PC 更新 为 Data,DATA 实际为 jump 或 branch 指令给定的转移地址.,ADRSInstructionRAMOUT,PC,Load,Data,Datapaths,83,指令译码器,instruction decoder 是一个组合电路,输入为机器语言,输出为数据通路的控制信号。,(to the datapath),Datapaths,84,Jumps 和 branches,转移控制单元 branch control unit 决定 PC

37、的下一个值:对于 jumps,PC 装入指令中给出目标地址.对于 branch 指令,当相应的状态位满足条件时,PC 装入指令中的目标地址。对于其它指令,PC+1.,Datapaths,85,控制器的基本结构,在每个时钟周期:1.从指令内存中读入指令.2.指令译码器产生对应该指令数据通路所需的控制字.3.数据通路的寄存器读入 ALU 或数据内存.4.ALU 或 RAM 的输出写回到寄存器.5.修改 PC,PC+1 或依据 branches 或 jumps 指令装入新值.,Datapaths,86,processor,Control Unit,Datapath,Datapaths,87,实现指令

38、译码器,如何构造指令译码器?instruction decoder 是一个组合电路,输入为机器语言16-bit 长的二进制指令,输出为数据通路的控制信号。译码器的输出称为控制字,包括:WR,DA,AA,BA,MD.FS.MW.MB,Datapaths,88,MB,MD,WR 和 MW,不同类型指令的MB,MD,WR 和 MW 信号:,Datapaths,89,八类指令,表中,可看出:.MW=1 仅当内存写入时.MB=1 仅对立即数指令有效.MD 无用,当 WR=0时.Jumps 和 branches 指令即不修改寄存器,也不修改内存.,Datapaths,90,生成 MB,MD,WR,MW信号

39、,MB=I15MD=I14WR=I14+I15 I13MW=I15 I14 I13,Datapaths,91,生成 FS 信号,例如:XOR的操作码 0001100.000 表示 ALU 指令.1100 表示XOR 功能.根据对操作码的定义,ALUs FS 的控制信号可以直接取自于指令的操作码。,Datapaths,92,branch 指令的FS,对于loads,stores 和 jumps等不包含ALU运算的指令,FS 无关紧要.但对于 branch 条件转移等依赖于ALU状态的指令,需要考虑FS例如:BZ R3,-24 R3 必须经过ALU,Z 必须正确设置。ALU 需选择功能“G=A”(

40、FS=00000 或 00111).,Datapaths,93,生成 DA,AA,BA,DA,AA and BA 直接取自16-bit 长二进制指令.bits 8-6 为目的寄存器,DA.Bits 5-3 为第1个源寄存器 AA.Bits 2-0 为第2个源寄存器 BA.,Datapaths,94,无关条件,对于 immediate-format 指令,bits 2-0 保存立即数,而不是第2个源寄存器!然而,立即数指令只使用1个源源寄存器,所以 BA 无关.同样,jump 和 branch 指令即不使用目的寄存器,也不使用第2个源寄存器.所以:,DA2 DA1 DA0=I8 I7 I6AA2

41、 AA1 AA0=I5 I4 I3BA2 BA1 BA0=I2 I1 I0,Datapaths,95,Branch control unit,Branch control 的输入信号:PL,JB,BC,AD 为译码器的输出信号,包含了当前指令相关的信息状态位 V,C,N,Z.当前的 PC 值Branch control 的输出信号:Load 装入信号 PC.当 Load=1,目标地址信号target address.,Datapaths,96,Branch control unit 的输入信号,译码器输出:PL/JB 表明指令类型.BC 编码转移条件AD 表示目标地址.,Datapaths,9

42、7,生成 PL 和 JB,指令译码器根据操作码生成 PL 和 JB 信号:PL=I15 I14JB=I13,Datapaths,98,生成 BC 和 AD,BC2 BC1 BC0=I11 I10 I9AD5 AD4 AD3 AD2 AD1 AD0=I8 I7 I6 I2 I1 I0,Datapaths,99,Jumps,若 PL=1 且 JB=1,当前指令必为 jump.将 jump的偏移量“offset”(AD)与当前PC 相加,再存回PC.branch control unit 应包含一个加法器,计算目标地址.AD 为有符号数,实现双向跳转。,Datapaths,100,Branches,

43、如果 PL=1 且 JB=0,当前指令必为条件转移指令.branch control unit 首先决定是否实现转移.检查转移类型即 BC 和状态位VCNZ.例如当 BC=011 且 Z=1,则转移条件为真,应当实现转移。然后,branch control unit 设置 PC 值.如果转移为真,将AD 与 PC相加,与jumps一样.否则PC+1,顺序执行.,Datapaths,101,小结,控制器:PC指向指令存储器.指令译码器根据指令生成数据通路的控制信号.转移控制单元处理指令执行的顺序.控制器的实现依赖于指令集的结构和数据通路仔细选择操作码和指令格式,可简化控制器的设计,Datapaths,102,组合逻辑控制器,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号