第8章 冯-诺依曼模型_第1页
第8章 冯-诺依曼模型_第2页
第8章 冯-诺依曼模型_第3页
第8章 冯-诺依曼模型_第4页
第8章 冯-诺依曼模型_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章第八章 冯冯诺依曼(诺依曼(Von NeumannVon Neumann)模)模 型型 存储程序计算机模型存储程序计算机模型 第七章,第七章,判定元件和存储元件判定元件和存储元件 基于约翰基于约翰冯冯诺依曼(诺依曼(John Von John Von NeumannNeumann)提出的存储程序计算机模型)提出的存储程序计算机模型 现代计算机的构建思想现代计算机的构建思想 1943: 1943: ENIACENIAC 十进制,电子管十进制,电子管 硬连线程序硬连线程序 设置开关设置开关 1944: EDVAC1944: EDVAC开始研制开始研制 Electronic Discrete

2、Variable Automatic Computer,Electronic Discrete Variable Automatic Computer,电电 子离散变量自动计算机子离散变量自动计算机 程序存储于程序存储于memorymemory之中之中 1945: John von Neumann1945: John von Neumann First Draft of a Report on EDVAC, First Draft of a Report on EDVAC, 关于关于EDVACEDVAC的报告的报告 草案草案 John von NeumannJohn von Neumann (

3、19031957),出生于匈牙出生于匈牙 利,利,20世纪最杰出的数世纪最杰出的数 学家之一学家之一 在计算机科学、经济、在计算机科学、经济、 物理学中的量子力学及物理学中的量子力学及 几乎所有数学领域都作几乎所有数学领域都作 过重大贡献过重大贡献 冯冯诺依曼模型诺依曼模型 由指令组成的程序和由指令组成的程序和 程序所需的数据位于程序所需的数据位于 存储器存储器中中 指令的执行由指令的执行由处理单处理单 元元完成完成 指令执行的顺序由指令执行的顺序由控控 制单元制单元来控制来控制 输入设备输入设备将程序和所将程序和所 需的数据送入计算机需的数据送入计算机 之中之中 输出设备输出设备将执行结果将

4、执行结果 送出计算机之外送出计算机之外 注意:处理单元和控注意:处理单元和控 制单元是制单元是CPU的主要的主要 组成部分组成部分 存储器存储器 处理单元处理单元 ALU Reg 输出设备输出设备 *显示器显示器 *打印机打印机 *磁盘磁盘 输入设备输入设备 *键盘键盘 *鼠标鼠标 *扫描仪扫描仪 *磁盘磁盘 控制单元控制单元 PC CPU 存储器存储器 能够存储信息的二维阵列能够存储信息的二维阵列 每一行每一行,存储单元(存储单元(Memory LocationMemory Location) 可使用一个唯一的标识符进行识别可使用一个唯一的标识符进行识别,地址地址 包含一定大小的内容包含一定

5、大小的内容 指令指令 数据数据 地址和内容地址和内容 x0000 0000 x0000 0001 x4000 0000 x4000 0001 x4000 0002 x4000 0003 xFFFF FFFF x4000 0003 x0000 0001 x1000 0000 x1100 0001 存储器存储器 2 232 32 8 8位,一共有位,一共有2 232 32个存储单元,每个存储单 个存储单元,每个存储单 元可以存储元可以存储8 8个比特个比特 有有2 232 32个不同存储单元的地址空间和 个不同存储单元的地址空间和8 8位的寻址位的寻址 能力,可称为能力,可称为4G4G字节(缩写为

6、字节(缩写为GBGB)的存储器)的存储器 要确定要确定2 232 32个地址,就必须使用 个地址,就必须使用3232位二进制数表位二进制数表 示示 处理单元处理单元 计算机里信息的处理是由处理单元执行的计算机里信息的处理是由处理单元执行的 现代计算机的处理单元可以包含许多复杂的功现代计算机的处理单元可以包含许多复杂的功 能单元,每个都能够执行一个特定的运算(除能单元,每个都能够执行一个特定的运算(除 法,平方根等)法,平方根等) 最简单的单元最简单的单元ALUALU(Arithmetic and Logic UnitArithmetic and Logic Unit, 算术和逻辑单元)算术和逻

7、辑单元) 寄存器堆寄存器堆/ /文件文件 RegReg ALUALU附近,附近,临时存取临时存取数据数据 例如,计算例如,计算(A+B)(A+B)C C,先在存储器中存储,先在存储器中存储A+BA+B的的 结果,随后结果,随后读取出来,再读取出来,再和和C C相乘相乘 访问存储器的时间远长于执行加法或乘法的时间访问存储器的时间远长于执行加法或乘法的时间 使用使用临时存储空间存储临时存储空间存储A+BA+B的结果的结果 字字 ALUALU正常处理的信息量的大小通常被称为计算正常处理的信息量的大小通常被称为计算 机的机的字长字长(word length)(word length),每一个元素被称为

8、,每一个元素被称为 一个一个字字(wordword) 取决于计算机的不同用途,每一个指令集结构取决于计算机的不同用途,每一个指令集结构 都拥有自己的字长都拥有自己的字长 IntelIntel的的Pentium Pentium 处理器处理器,3232位位 SunSun的的SPARC-V9SPARC-V9和和IntelIntel的的ItaniumItanium处理处理,6464位位 寄存器堆寄存器堆/ /文件文件 典型的寄存器的大小是和典型的寄存器的大小是和ALUALU处理的值的大小处理的值的大小 一样一样 每个寄存器都包含一个字每个寄存器都包含一个字 控制单元控制单元 处理单元负责处理单元负责“

9、执行信息的实际处理执行信息的实际处理”,而控,而控 制单元则是制单元则是“指挥指挥信息的处理信息的处理” 其具体工作包括:其具体工作包括: 在执行程序的过程中,在执行程序的过程中,跟踪跟踪存储器中的指令存储器中的指令 在处理指令的过程中,在处理指令的过程中,跟踪跟踪指令的处理阶段指令的处理阶段 PCPC 跟踪存储器中的指令,确切地说是跟踪要处理跟踪存储器中的指令,确切地说是跟踪要处理 的下一条指令的下一条指令 为了跟踪哪一条指令是下一步要运行的,控制单为了跟踪哪一条指令是下一步要运行的,控制单 元有一个用来容纳下一条指令所在地址的寄存元有一个用来容纳下一条指令所在地址的寄存 器器“程序计数器程

10、序计数器”(Program CounterProgram Counter,简,简 称称PCPC)/ / “ “指令指针指令指针” 控制器控制器 控制单元可以是多个控制器,分别从属于各个控制单元可以是多个控制器,分别从属于各个 部件部件 ALUALU控制器用于控制控制器用于控制ALUALU执行何种运算执行何种运算 对于输入和输出则有专门的对于输入和输出则有专门的I/OI/O控制器控制器 输入输入/ /输出设备输出设备 要使计算机处理信息,信息必须被送入计算机要使计算机处理信息,信息必须被送入计算机 中中 为了能够使用处理后的结果,它必须能以某种为了能够使用处理后的结果,它必须能以某种 形式显示在

11、计算机以外形式显示在计算机以外 为输入和输出的目的而出现的设备在计算机术为输入和输出的目的而出现的设备在计算机术 语中被称为语中被称为外围设备外围设备(peripheralsperipherals) 输入输入/ /输出设备输出设备 外围设备外围设备(peripheralsperipherals) 键盘键盘输入;监视器(显示器)输入;监视器(显示器)输出输出 输入:输入:鼠标,数字扫描仪鼠标,数字扫描仪、磁盘磁盘 输输出:出:打印机打印机,磁盘磁盘 DLXDLX数据通路数据通路 一个采用一个采用总线结构总线结构、多时钟周期多时钟周期的实现方案的实现方案 两端都有箭头的粗黑线结构代表数据通路的两端

12、都有箭头的粗黑线结构代表数据通路的总总 线线 可用于存储器与处理器之间的通信,也可以用于可用于存储器与处理器之间的通信,也可以用于 处理器与处理器与I/OI/O设备之间的通信设备之间的通信 主要优点是功能多、成本低,主要缺点是会产生主要优点是功能多、成本低,主要缺点是会产生 通信瓶颈通信瓶颈 GateMDR 32 GateALU 32 存储器存储器 输入输入输输 出出 GatePC 32 32 控制单元控制单元 处理单元处理单元 DLXDLX总线总线 DLXDLX的总线由的总线由3232根线和相关的电子元件组成根线和相关的电子元件组成 允许将允许将3232位位信息从一个组件传输到另一个组件信息

13、从一个组件传输到另一个组件 在总线上一次只可传输一个值在总线上一次只可传输一个值 每一个提供数据给总线的组件在它的输入箭头后每一个提供数据给总线的组件在它的输入箭头后 都有一个三角形(称为都有一个三角形(称为三态设备三态设备),使计算机的使计算机的 控制逻辑一次只允许一个提供者能提供信息给总控制逻辑一次只允许一个提供者能提供信息给总 线线 从总线获得数据的组件通过将从总线获得数据的组件通过将LD.xLD.x(加载使能)(加载使能) 信号设为信号设为1 1(回忆门控锁存器),从而得到信息(回忆门控锁存器),从而得到信息 存储器:存储器:MARMAR和和MDRMDR 如果要如果要读读出某个存储单元

14、中的内容,首先把它出某个存储单元中的内容,首先把它 的地址存入的地址存入地址寄存器地址寄存器(MARMAR),然后查询存),然后查询存 储器,该地址所对应的存储单元的内容将会输储器,该地址所对应的存储单元的内容将会输 出到出到数据寄存器数据寄存器(MDRMDR)。)。 如果要如果要写写一个值到存储单元中,首先要把目的一个值到存储单元中,首先要把目的 地址存入地址存入MARMAR,把值存入,把值存入MDRMDR中,然后设中,然后设“写使写使 能能”信号为信号为1 1,查询存储器,查询存储器,MDRMDR里的信息就会里的信息就会 被写到被写到MARMAR中的地址所对应的存储单元里。中的地址所对应的

15、存储单元里。 MARMAR和和MDRMDR MARMAR:3232位位,反映了,反映了DLXDLX的存储器的地址空间是的存储器的地址空间是 2 232 32个存储单元 个存储单元 MDRMDR:3232位位,而,而DLXDLX是字节可寻址的,即每个单是字节可寻址的,即每个单 元包含元包含8 8位,因此在大多数情况下,位,因此在大多数情况下,MDRMDR包含了包含了 从从MARMAR中的地址开始的中的地址开始的4 4个连续单元的数据个连续单元的数据,有,有 时,则包含的是时,则包含的是MARMAR所指的单元中的数据(所指的单元中的数据(8 8位)位) 符号扩展的结果(符号扩展的结果(3232位)

16、位) 处理单元处理单元 ALUALU和寄存器堆和寄存器堆 ALUALU可以做加法、减法、乘法、除法、与、或、可以做加法、减法、乘法、除法、与、或、 异或、比较、移位等运算异或、比较、移位等运算 3232个整数寄存器、个整数寄存器、3232个浮点寄存器个浮点寄存器 DLXDLX子集子集 未包括整数乘法、除法及浮点数运算等操作,也未包括整数乘法、除法及浮点数运算等操作,也 未包括浮点寄存器未包括浮点寄存器 控制单元控制单元 最重要的组件是有限状态机,它指挥所有行为最重要的组件是有限状态机,它指挥所有行为 有限状态机的一个输入是有限状态机的一个输入是CLKCLK,它说明了每个时钟周,它说明了每个时钟

17、周 期持续的时间期持续的时间 为了跟踪指令的处理阶段,控制单元还需要一个指令为了跟踪指令的处理阶段,控制单元还需要一个指令 寄存器(寄存器(Instruction RegisterInstruction Register,简称,简称IRIR),用来保),用来保 存正在处理的指令。存正在处理的指令。IRIR也是有限状态机的一个输入,也是有限状态机的一个输入, 因为要处理的因为要处理的DLXDLX指令决定了计算机要执行的行为。指令决定了计算机要执行的行为。 程序计数器(程序计数器(PCPC) 记录了在当前的指令完成后,下一条要被执行的指令记录了在当前的指令完成后,下一条要被执行的指令 所在的地址所

18、在的地址 空心箭头空心箭头 实心实心箭头表示沿着相应的通路流动的是箭头表示沿着相应的通路流动的是数据元数据元 素素 空心空心箭头表示控制数据元素处理的箭头表示控制数据元素处理的控制信号控制信号 有限状态机有限状态机的所有输出都是空心箭头的所有输出都是空心箭头 控制了计算机的处理控制了计算机的处理 LD.IRLD.IR(1 1位),控制了当前时钟周期内,指令寄位),控制了当前时钟周期内,指令寄 存器(存器(IRIR)是否要从总线上加载新的指令)是否要从总线上加载新的指令 GateALUGateALU,决定,决定ALUOutALUOut的值在当前时钟周期内是的值在当前时钟周期内是 否被提供给总线否

19、被提供给总线 输入输入/ /输出设备输出设备 由键盘和显示器组成由键盘和显示器组成 最简单的键盘需要两个寄存器,一个数据寄存器最简单的键盘需要两个寄存器,一个数据寄存器 (KBDRKBDR),用来保存由键盘键入字符的),用来保存由键盘键入字符的ASCIIASCII码,码, 和一个状态寄存器(和一个状态寄存器(KBSRKBSR),用来提供键盘键入),用来提供键盘键入 字符的状态信息字符的状态信息 最简单的显示器同样需要两个寄存器,一个用来最简单的显示器同样需要两个寄存器,一个用来 保存那些将被显示在显示器上的内容的保存那些将被显示在显示器上的内容的ASCIIASCII码码 (DDRDDR),另一

20、个用来提供相关的状态信息(),另一个用来提供相关的状态信息(DSRDSR) 第第1212章章 指令处理指令处理 冯冯诺伊曼模型的主要思想诺伊曼模型的主要思想 把程序和数据都作为一个把程序和数据都作为一个二进制序列二进制序列存储在计算存储在计算 机的机的存储器存储器里,在控制单元的引导下一次执行一里,在控制单元的引导下一次执行一 条指令条指令 指令在控制单元的指挥下以一种系统的方式被指令在控制单元的指挥下以一种系统的方式被 逐步处理,根据指令处理所需进行的操作,可逐步处理,根据指令处理所需进行的操作,可 以以将一条指令的执行分解为一系列步骤将一条指令的执行分解为一系列步骤 指令处理指令处理 多时

21、钟周期多时钟周期的实现方案的实现方案 指令的每一步将占用一个时钟周期,不同的指令指令的每一步将占用一个时钟周期,不同的指令 可能被分解为不同的步骤,占用不同的时钟周期,可能被分解为不同的步骤,占用不同的时钟周期, “多周期多周期”因此得名因此得名 在现代计算机中,时钟周期以在现代计算机中,时钟周期以纳秒纳秒(或称毫微(或称毫微 秒,十亿分之一秒)为单位秒,十亿分之一秒)为单位 比如,一个比如,一个3.3GHz3.3GHz的处理器在的处理器在1 1秒内有秒内有3333亿个时亿个时 钟周期,即一个时钟周期只需钟周期,即一个时钟周期只需0.3030.303纳秒纳秒 DLXDLX指令执行阶段指令执行阶

22、段 按照按照DLXDLX指令执行的步骤,将处理指令所需的指令执行的步骤,将处理指令所需的 操作划分为以下阶段(每条操作划分为以下阶段(每条DLXDLX指令需要其中指令需要其中 的的3 3到到5 5个个阶段):阶段): 取指令(取指令(Instruction fetchInstruction fetch) 译码译码/ /取寄存器(取寄存器(Instruction decode/Register Instruction decode/Register fetchfetch) 执行执行/ /有效地址有效地址/ /完成分支完成分支(Execution/Effective (Execution/Effe

23、ctive address/Branch completion)address/Branch completion) 访问内存(访问内存(Memory accessMemory access) 写回写回(Write-backWrite-back) 指令指令 计算机处理的最基本单位计算机处理的最基本单位 计算机计算机程序程序包含了一组指令,每条指令都是由包含了一组指令,每条指令都是由 一个一个位序列位序列表示,并且整个程序被存储在计算表示,并且整个程序被存储在计算 机的存储器中机的存储器中 由两个部分组成:操作码(指令执行的内容)由两个部分组成:操作码(指令执行的内容) 和操作数(要操作的对象)

24、和操作数(要操作的对象) DLXDLX子集指令,由子集指令,由32 32 位(一个字)组成,从左位(一个字)组成,从左 向右依次编号为向右依次编号为bit31bit0bit31bit0 DLX ADDDLX ADD指令指令 需要三个操作数:两个源操作数(待加的数据)需要三个操作数:两个源操作数(待加的数据) 和一个目标操作数(在加法执行后要存储的和)和一个目标操作数(在加法执行后要存储的和) 格式:格式: 两个源操作数两个源操作数:包含在寄存器中的包含在寄存器中的值值 加法的结果加法的结果:放入放入32个寄存器的某一个个寄存器的某一个 32个寄存器个寄存器:需要需要5位位确定每一个确定每一个

25、教材订正:教材订正:R6错了错了 31 2625 21 20 16 15 1110 65 0 0 0 0 0 0 00 0 0 1 0 0 0 1 1 0 0 0 1 1 00 0 0 0 00 0 0 0 0 1 R-类型类型R2R6R6未用未用ADD bit31:26bit31:26:000000R000000R类型类型 bit5:0bit5:0:要执行的函数,要执行的函数,000001000001,是加法操,是加法操 作作 bit15:11bit15:11:存储的结果所在的位置,存储的结果所在的位置,R6R6 bit25:21bit25:21和和bit20:16bit20:16:存储两个

26、源操作数存储两个源操作数 的寄存器,的寄存器,R2R2和和R6R6 “将将R2R2(寄存器(寄存器2 2)和)和R6R6里的内容相加,结果里的内容相加,结果 存回存回R6R6里。里。” DLX LWDLX LW指令指令 L L代表代表加载加载(LoadLoad,读存储器中的值,读存储器中的值,写到寄写到寄 存器中存器中),),W W代表字代表字 “进入指定的存储单元,从该单元开始,读取进入指定的存储单元,从该单元开始,读取 连续连续4 4个存储单元里面包含的值,结果存入一个存储单元里面包含的值,结果存入一 个寄存器里个寄存器里” 需要两个操作数需要两个操作数: 从存储器读出的值和目标寄存器从存

27、储器读出的值和目标寄存器 31 26 25 2120 1615 0 0 1 1 1 0 00 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 LWR3R26 bit31:26bit31:26:011100011100,是,是I I类型的类型的LWLW指令指令 bit20:16bit20:16:指令执行结束后从存储器里读出的值将存指令执行结束后从存储器里读出的值将存 入的寄存器入的寄存器 bit25:21bit25:21和和bit15:0bit15:0:用来计算出要读取位置的地用来计算出要读取位置的地 址址 将将bit15:0bit15:0里的

28、二进制补码整数符号扩展为里的二进制补码整数符号扩展为3232位,再与位,再与 bit25:21bit25:21表示的寄存器里的数值相加,结果即为地址表示的寄存器里的数值相加,结果即为地址 “基址基址+ +偏移量偏移量”寻址模式寻址模式 “将将R3R3里的内容同数值里的内容同数值6 6相加,构成一个存储单元的地相加,构成一个存储单元的地 址,从该单元开始,读取连续址,从该单元开始,读取连续4 4个存储单元里面包含的个存储单元里面包含的 值,并加载到值,并加载到R2R2里。里。” 寻址模式寻址模式:计算将要读取的存储单元的地址的机制计算将要读取的存储单元的地址的机制 DLX BEQZDLX BEQ

29、Z指令指令(第九章)(第九章) B B代表代表分支分支(BranchBranch),),EQEQ代表代表“相等相等”,Z Z代代 表表“零零” “判断某个寄存器的值是否为零,如果等于零,判断某个寄存器的值是否为零,如果等于零, PCPC就被某条指令的地址加载就被某条指令的地址加载” 需要两个操作数需要两个操作数: 寄存器,某条指令的地址寄存器,某条指令的地址 31 2625 2120 1615 0 10100000011000000001001000110100 BEQZR3x1234 BEQZBEQZ bit31:26bit31:26:101000101000,是,是I I类型类型的的BEQ

30、ZBEQZ指令指令 bit25:21bit25:21:存储源操作数的寄存器存储源操作数的寄存器 bit15:0bit15:0:用来计算出用来计算出指令指令地址地址的值的值 将将bit15:0bit15:0里的二进制补码整数符号扩展为里的二进制补码整数符号扩展为3232 位,再与位,再与PCPC里的数值相加,结果即为地址里的数值相加,结果即为地址 PC+SEXT(IR15:0)PC+SEXT(IR15:0) “判断判断R3R3里的值里的值是否为是否为0 0?如果如果R3R3的值为的值为0 0,PCPC 就被就被计算计算得到的地址加载得到的地址加载;如果如果R3R3的值不为的值不为0 0, PCP

31、C保持不变保持不变” 1 1、取指令阶段取指令阶段 从存储器中获得下一从存储器中获得下一 条指令,放在控制单条指令,放在控制单 元的指令寄存器中元的指令寄存器中 为了执行下一条指令为了执行下一条指令 的任务,必须先确定的任务,必须先确定 它位于哪里它位于哪里 程序计数器(程序计数器(PCPC) 包含着下一条指令包含着下一条指令 的的起始起始地址(地址(DLXDLX指指 令由令由3232位组成,需位组成,需 要要4 4个连续的存储单个连续的存储单 元)元) GateMDR 32 GateALU 32 存储器存储器 输入输入输输 出出 GatePC 32 32 控制单元控制单元 处理单元处理单元

32、PC 取指令阶段取指令阶段 步骤步骤(1)(1) MARMARPCPC MDRMDRMemMARMemMAR IRIRMDRMDR 32 GateALU 输入输入输输 出出 GatePC 32 控制单元控制单元 处理单元处理单元 IR LD.IR PC GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 32 取指令阶段取指令阶段 步骤步骤(2)(2) MARMARPCPC ALUOutALUOutPC+4PC+4 MDRMDRMemMARMemMAR PCPCALUOutALUOut IRIRMDRMDR 32 GateALU 输入输入输输 出出 GatePC

33、 32 控制单元控制单元 处理单元处理单元 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU PC 4 GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 2 2、译码译码/ /取取 寄存器阶段寄存器阶段 (1)(1) 译码译码 识别指令识别指令 6-64 6-64 译码器译码器: IR31:26IR31:26 32 GateALU 输入输入输输 出出 GatePC 32 控制单元控制单元 处理单元处理单元 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU PC 4 GateMDR MDRMAR

34、 32 32 LD.MDR 存储器存储器 LD.MAR 控制器 31:26 PC 2 2、译码译码/ /取取 寄存器阶段寄存器阶段 (2)(2) 取寄存器取寄存器 为后面阶段获取为后面阶段获取 操作数操作数 A A( (IR25:21),IR25:21), B B( (IR20:16), IR20:16), ALUOutALUOutPC+ PC+ SEXT(IR15:0)SEXT(IR15:0) 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR

35、 存储器存储器 LD.MAR 控制器控制器 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 15:0 32 SR1 SR2 B.S BMUX SR1OUTSR2OUT PC 4 3232 译码译码 译码:译码:识别指令进而确定下一步要去做什么识别指令进而确定下一步要去做什么 6-646-64的译码器的译码器:IR31:26IR31:26 依据译码器的输出为依据译码器的输出为1 1的线,决定了余下的的线,决定了余下的2626位位 需要做哪些工作需要做哪些工作 取寄存器取寄存器示例示例 ADDADD指令指令 将从将从IR25:21IR25:21和和IR

36、20:16IR20:16所指示的所指示的R2R2和和R6R6中获得源操作数,传给中获得源操作数,传给ALUALU的的A A和和B B寄存寄存 器;器; 计算计算PCPC与与IR15:0IR15:0符号扩展的和符号扩展的和,结果存储于结果存储于ALUOutALUOut寄存器寄存器。 LWLW指令指令 将从将从IR25:21 IR25:21 和和IR20:16IR20:16所指示的所指示的R3R3和和R2R2中获得源操作数,传给中获得源操作数,传给ALUALU的的A A寄存器寄存器 和和B B寄存器;寄存器; 计算计算PCPC与与IR15:0IR15:0符号扩展的和符号扩展的和,结果存储于结果存储

37、于ALUOutALUOut寄存器。寄存器。 BEQZBEQZ指令指令 将从将从IR25:21 IR25:21 和和IR20:16IR20:16所指示的所指示的R3R3和和R0R0中获得源操作数,传给中获得源操作数,传给ALUALU的的A A寄存器寄存器 和和B B寄存器;寄存器; 计算计算PCPC与与IR15:0IR15:0符号扩展的和符号扩展的和,结果存储于结果存储于ALUOutALUOut寄存器。寄存器。 有的操作的结果在后面的阶段并不会用到,但这并不浪费时有的操作的结果在后面的阶段并不会用到,但这并不浪费时 间,因为这些操作是同时进行的间,因为这些操作是同时进行的 3 3、执行执行/ /

38、有效有效 地址地址/ /完成分支完成分支 根据译码产生根据译码产生的的控控 制信号制信号(空心箭头)(空心箭头) ALUOutALUOut A Op BA Op B 或或计算有效地址;计算有效地址; 或或完成分支完成分支 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 控制器控制器 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 15:0 32 SR1 SR2 B.S

39、BMUX SR1OUTSR2OUT PC 4 3232 ADDADD指令指令 ALUOutALUOut A + BA + B 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 控制器控制器 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 15:0 32 SR1 SR2 B.S BMUX SR1OUTSR2OUT 4 3232 AMUX A.S PC 2 5:0 ALU控制

40、器控制器 4 LWLW指令指令 ALUOutALUOut A A + + SEXT(IR15:0)SEXT(IR15:0) 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 控制器控制器 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 15:0 32 SR1 SR2 B.S BMUX SR1OUTSR2OUT 4 3232 AMUX A.S PC 2 5:0 4 ALU控

41、制器控制器 ALUOp 4 BEQZBEQZ指令指令 Z Z A = 0 A = 0 if(Z) if(Z) PC PC ALUOut ALUOut 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 控制器控制器 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 15:0 32 SR1 SR2 B.S BMUX SR1OUTSR2OUT 4 3232 AMUX A.S PC

42、 2 Z Z 5:0 4 ALU控制器控制器 ALUOp 4 执行执行/ /有效地址有效地址/ /完成分支完成分支 根据译码产生的控制信号,对上一阶段得到的根据译码产生的控制信号,对上一阶段得到的 A A寄存器和寄存器和B B寄存器的值执行算术寄存器的值执行算术/ /逻辑运算;逻辑运算; 或或计算出处理指令所需的存储单元的地址,即计算出处理指令所需的存储单元的地址,即 有效地址;有效地址; 或者或者完成分支跳转完成分支跳转 示例示例 ADDADD指令指令 在在ALUALU中进行加法运算,得到加法中进行加法运算,得到加法运算运算结果,存结果,存 储于储于ALUOutALUOut寄存器中寄存器中

43、LWLW指令指令 选择选择IR15:0IR15:0符号扩展的结果,在符号扩展的结果,在ALUALU中与中与A A寄存寄存 器进行加法运算,得到一个器进行加法运算,得到一个有效地址有效地址,存储于,存储于 ALUOutALUOut寄存器中寄存器中 BEQZBEQZ指令指令 如果如果A A寄存器中的值为零,寄存器中的值为零,PCPC被被ALUOutALUOut寄存器寄存器中中 的值(上一阶段计算所得)的值(上一阶段计算所得)加载加载,否则保持不变,否则保持不变 4 4、访问内存访问内存 获取内存中的数据获取内存中的数据 LWLW指令指令 把在上一阶段计算得到的把在上一阶段计算得到的ALUOutAL

44、UOut寄存器中的地址寄存器中的地址 加载到地址寄存器加载到地址寄存器MARMAR 读取存储器读取存储器,一个,一个3232位的数据被放进数据寄存器位的数据被放进数据寄存器 MDRMDR LWLW指令指令 访问访问内存内存 LWLW指令指令 MARMAR ALUOutALUOut MDRMDRMemMARMemMAR 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 控制器控制器 31:26 PC SEXT 寄存器堆

45、寄存器堆 BA LD.BLD.A 25:21 20:16 32 SR1 SR2 B.S BMUX SR1OUTSR2OUT 4 3232 AMUX A.S PC 2 Z Z 5:0 4 ALU控制器控制器 ALUOp 4 EXT.S 25:0 5 5、写回、写回 结果被写到指定的目标中结果被写到指定的目标中 LWLW指令指令 MDRMDR中的值被写入中的值被写入IR20:16IR20:16所指示的所指示的R2R2中中 ADDADD指令指令 加法运算的加法运算的ALUOutALUOut寄存器中的结果被写入寄存器中的结果被写入 IR15:11IR15:11所指示的所指示的R6R6中中 LWLW指令

46、指令 结果写到指定目标结果写到指定目标 LWLW指令指令 (IR20:16)(IR20:16)MDRMDR 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 控制器控制器 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 32 SR1 SR2 B.S BMUX SR1OUTSR2OUT 4 3232 AMUX A.S PC 2 Z Z 32 GateB MEM.EN.R.W

47、 LD.REG 5 DR 5:0 4 ALU控制器控制器 ALUOp 4 EXT.S 25:0 ADDADD指令指令 (IR15:11)(IR15:11) ALUOutALUOut 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 控制器控制器 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 32 SR1 SR2 B.S BMUX SR1OUTSR2OUT 4 3232

48、AMUX A.S PC 2 Z Z 32 GateB MEM.EN.R.W LD.REG 15:11 DR.S DRMUX 5 DR 5:0 4 ALU控制器控制器 ALUOp 4 EXT.S 25:0 下一阶段下一阶段 这五个阶段完成之后,控制单元就会从取指令这五个阶段完成之后,控制单元就会从取指令 阶段开始执行下一条指令阶段开始执行下一条指令 由于在取指令阶段由于在取指令阶段PCPC被更新,包含了存储在存被更新,包含了存储在存 储单元中的储单元中的下一条指令的地址下一条指令的地址 这样下一条指令接下来就会被读取。处理就这这样下一条指令接下来就会被读取。处理就这 样持续下去样持续下去直到被打

49、断直到被打断 不是所有的不是所有的DLXDLX指令都包括上述五个阶段。但指令都包括上述五个阶段。但 是所有指令均需要取指令阶段和译码是所有指令均需要取指令阶段和译码/ /取寄存取寄存 器阶段器阶段 ADDADD指令指令,不需要访问内存阶段不需要访问内存阶段 改变执行顺序改变执行顺序 ADDADD:处理数据的处理数据的运算指令运算指令 LWLW:把数据从一个地方移动到另一个地方的把数据从一个地方移动到另一个地方的数据传数据传 送指令送指令 BEQZBEQZ:改变指令执行的顺序改变指令执行的顺序的的控制指令控制指令 有时会需要先执行第一条指令,接着第二条,第三条,有时会需要先执行第一条指令,接着第

50、二条,第三条, 然后又执行第一条,接着第二第三,接着又是第一然后又执行第一条,接着第二第三,接着又是第一 条条,即,即循环结构循环结构 由于每条指令的执行都是从用由于每条指令的执行都是从用PCPC加载加载MARMAR开始的,因开始的,因 此,如果想要改变指令执行的顺序,就需要在此,如果想要改变指令执行的顺序,就需要在PCPC增加增加 4 4(即在取指令阶段执行时)后、执行下一指令的取(即在取指令阶段执行时)后、执行下一指令的取 指令阶段之前改变指令阶段之前改变PCPC(执行阶段改变执行阶段改变PCPC) DLX JRDLX JR指令指令 bits31:26bits31:26:101101101

51、101,JRJR bits25:21bits25:21:包含下一条将要被执行的指令包含下一条将要被执行的指令 地址的寄存器地址的寄存器 31 26 25 21 20 0 1 0 1 1 0 10 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 JRR3未用未用 “把把R3的内容加载到的内容加载到PC,这样,这样, 下一条将要被执行的指令的地址下一条将要被执行的指令的地址 就是那个包含在就是那个包含在R3中的地址中的地址” JRJR指令指令 从从PC=x80008000PC=x80008000开始开始 取指令阶段取指令阶段:IRIR被加载为被加

52、载为JRJR指令,指令,PCPC更新为地址更新为地址 x80008004x80008004 译码译码/ /取寄存器阶段取寄存器阶段:译码,并取出译码,并取出R3R3和和R0R0中的值,中的值, 计算计算PCPC与与SEXT(IR15:0)SEXT(IR15:0)的和的和 完成分支阶段完成分支阶段:PCPC被加载为被加载为x80004000 x80004000(假设在指假设在指 令开始处令开始处R3R3的内容为的内容为x80004000 x80004000) 指令执行完毕(只需要指令执行完毕(只需要3 3个阶段)个阶段) 要处理的下一条指令将位于地址要处理的下一条指令将位于地址x80004000

53、 x80004000而不是而不是 在地址在地址x80008004x80008004 DLXDLX的有限状态机的有限状态机 一条指令的执行可能包含一条指令的执行可能包含3535个阶段,每一个个阶段,每一个 阶段还由一些步骤组成,而每一个阶段的每一阶段还由一些步骤组成,而每一个阶段的每一 步都是由控制单元的有限状态机控制的步都是由控制单元的有限状态机控制的 状态在时钟控制下发生转换状态在时钟控制下发生转换 寄存器传送语言寄存器传送语言 RTLRTL(Register Transfer Register Transfer LanguageLanguage) 硬件描述语言硬件描述语言 MxxMxx表示

54、在存储器中表示在存储器中xxxx地址的值地址的值 RegxxRegxx表示寄存器表示寄存器xxxx的值的值 简化的状态图简化的状态图 MARPC ALUOutPC+4 ARegIR25:21 BRegIR20:16 ALUOutPC+SEXT(IR15:0 ) ALUOutA+ SEXT(IR15:0)ALUOutA+B MARALUOut MDRMEM PCA RegIR15:11 ALUOut 状态状态1 状态状态4 LWJRADD 取指令取指令 译码译码/取寄存器取寄存器 到状态到状态1 到状态到状态1 到状态到状态1 状态状态X RegIR20:16MDR PC ALUOut MDRM

55、MAR IRMDR 状态状态2 状态状态3 R 取指令阶段取指令阶段 需要需要多个时钟周期多个时钟周期 MARPC ALUOutPC+4 状态状态1 取指令取指令 PC ALUOut MDRMMAR IRMDR 状态状态2 状态状态3 R 状态状态1 1 第一个时钟周期第一个时钟周期 MARPC ALUOutPC+4 控制信号控制信号 GatePC=1GatePC=1 LD.MAR=1LD.MAR=1 A.S=1A.S=1 B.S=01B.S=01 ALUOp=0001ALUOp=0001 LD.ALU=1LD.ALU=1 32 GateALU 输入输入输输 出出 GatePC 32 IR L

56、D.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 有限状有限状 态机态机 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 32 SR1 SR2 B.S BMUX SR1OUTSR2OUT 4 3232 AMUX A.S PC 2 Z Z 32 GateB MEM.EN.R.W LD.REG 15:11 DR.S DRMUX 5 DR CLK 4 ALUOp 4 ALU控制器控制器 5:0 EXT.S 25:0 状态状态2 2 PC ALUO

57、ut MDR MMAR 控制信号控制信号 GateALU=1GateALU=1 LD.PC=1LD.PC=1 MEM.EN.R.W=0MEM.EN.R.W=0 LD.MDR=1LD.MDR=1 就绪信号就绪信号(R Readyeady) 32 GateALU 输入输入输输 出出 GatePC 32 IR LD.IR PC LD.PC 32 ALU 32 ALUOut LD.ALU GateMDR MDRMAR 32 32 LD.MDR 存储器存储器 LD.MAR 有限状有限状 态机态机 31:26 PC SEXT 寄存器堆寄存器堆 BA LD.BLD.A 25:21 20:16 32 SR1

58、SR2 B.S BMUX SR1OUTSR2OUT 4 3232 AMUX A.S PC 2 Z Z 32 GateB MEM.EN.R.W LD.REG 15:11 DR.S DRMUX 5 DR CLK 4 ALUOp 4 ALU控制器控制器 R R 5:0 EXT.S 25:0 状态状态2 2,有限状态机有限状态机同时同时将将 MEM.EN.R.WMEM.EN.R.W设为设为0 0,LD.MDRLD.MDR设为设为1 1 读存储器读存储器,MDRMDR被加载从存储器中读取的指令被加载从存储器中读取的指令 可能需要多个时钟周期,所以需要一个可能需要多个时钟周期,所以需要一个就绪信号就绪信号 (R Readyeady)表示是否就

温馨提示

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

评论

0/150

提交评论