版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章中央处理器6.1处理器概述6.2MIPS模型机的基本构成6.3建立模型机的数据通路6.4控制器的实现6.5多周期CPU6.6流水线CPU习题
6.1处理器概述
中央处理器(CPU)是计算机硬件的核心部分,主要由运算器、控制器、寄存器、中断控制器和内部总线构成。本章将从理论知识开始,详细介绍CPU的工作原理和实现技术,具体内容包括CPU的基本功能、内部结构、指令的执行过程、控制器的实现方法,并通过构建一个能实现基本MIPS指令的处理器实例,说明了单周期CPU和流水线CPU的实现过程。
6.1.1CPU功能
CPU在计算机中的基本功能可以归纳为以下5个方面。
1.指令控制
指令控制是指CPU按顺序执行程序中的指令。程序的功能不同,所包含的指令序列就不同,程序执行时必须严格按照程序规定的顺序执行,才能保证计算机工作的正确性。
2.操作控制
一条指令的执行需要多个部件相互配合才能完成指令的功能,对每个部件的具体操作是由操作信号控制的,而操作信号是控制器根据这条指令的功能自动产生的。
3.时序控制
每一条指令在执行的过程中,必须在规定的时间给出各部件所需操作控制的信号,才能保证指令功能的正确执行。因此,时序控制就是定时地给出各种操作信号,使计算机系统有条不紊地执行程序。
4.数据加工
数据加工是指对数据进行算术运算、逻辑运算或其他处理。
5.中断控制
CPU除了执行程序外,还需要具备对突发事件的处理能力。例如,运算器出现了结果溢出、某个部件出现了异常情况、设备需要实时的数据服务等,这就需要CPU中断正在处
理的程序,并对这些突发事件进行响应,以保证计算机的正常运转,这个能力称为中断处理能力。
总体来说,一条指令的执行过程就是在控制器的控制下,先从内存中取出指令,然后对指令进行译码,在时序发生器和控制器的控制下,在正确的时间发出指定部件的控制信号,保证各部件能够执行正确的动作,从而保证该指令功能的实现。
6.1.2CPU的内部结构
CPU的体系结构有很多种,传统的CPU包括控制器和运算器两部分,实际的CPU内部还包含一定数量的各种功能寄存器,以及为了实现中断控制功能的中断系统。
图6-1是采用系统总线(单总线系统)的计算机结构。图中,CPU由寄存器、ALU、控制器和中断系统组成。图6-1单总线系统的计算机结构
1.运算器
运算器是计算机中实现数据加工的部件,主要完成数
据的算术和逻辑运算,运算器主要包括算术逻辑单元(ALU)、数据寄存器、程序状态字PSW等。图6-2所示是一种常见的运算器内部结构。图6-2常见的运算器内部结构
PSW寄存器的每一位都是一个状态标志位,用来记录
程序的运行状态和工作方式。例如,SF表示ALU结果的符
号位,ZF表示结果是否为零,CF表示是否产生了运算进位,PF为奇偶标志位,OF表示溢出位等,除此之外PSW中还有一些其他标志位。8086CPU的PSW如图6-3所示。图6-38086CPU的PSW
2.寄存器
寄存器是CPU内部暂存各种信息和数据的部件,按照用户是否可以操作分为可见寄存器和隐含寄存器。可见寄存器,用户可以通过指令对其进行存取操作,隐含寄存器对用户是不可用的,是专供控制器使用的。
1)可见寄存器
可见寄存器通常是一组寄存器,这些寄存器可以通过程序进行访问。由于这些寄存器在编程的过程中可以暂存操作数和运算结果,也可以作为基地址寄存器、变址寄存器、计
数器等,通用性较强,因此又称为通用寄存器。
2)隐含寄存器
隐含寄存器是一组特殊的寄存器,这些寄存器中的指令在执行过程中由硬件自动控制。大多数机器都包括程序计数器PC、指令寄存器IR、程序状态字PSW、存储器地址寄
存器MAR、存储器数据寄存器MDR等。
(1)程序计数器PC:它也称为指令指针,用来指示将要执行的下一条指令在内存中的地址。
(2)指令寄存器IR:用来存放当前正在执行的指令代码。
(3)程序状态字PSW:用来记录现行程序的运行状态和当前的工作方式。
(4)存储器地址寄存器MAR:当CPU访问存储器时,首先要提供访问存储单元的地址,这个地址存放在MAR中,MAR是CPU与系统地址总线相联的寄存器。
(5)存储器数据寄存器MDR:用来存放CPU与主存交换的数据,这个寄存器是CPU与系统数据总线相连的寄存器。
3.控制器
控制器是CPU的重要组成部分,它是整个计算机的控制核心。控制器的功能就是能够按照程序预定的顺序执行每一条指令。每一条指令都是在控制器的控制下按照取指令、分析指令和执行指令的步骤依次完成的,这就需要控制器必须在正确的时间准确地产生各部件的控制信号,使整个计算机能够有条不紊的完成所有指令的功能。控制器的功能就是
完成按照每一条指令要求,把数据从源端部件准确地传输到目的端部件。
控制器应当具有PC、IR、指令译码器、节拍发生器、微操作信号发生器等模块,如图6-4所示。
图6-4中节拍发生器产生的T0~Tn
信号是计算机运行时所需要的节拍信号,用于标识指令执行过程中的不同时间段;指令译码器的输出信号I0
~Im
表示不同的指令;B0~Bk表示条件状态或控制标志信号;操作信号发生器是控制器的核心部件,输出信号C0
~Cl
是微操作控制信号,作为各部件的输入控制信号被送往计算机中的各个部件,控制着各个部件的动作或功能。图6-4控制器的内部结构
从上面的分析可以知道,控制器的输出信号Ci
与指令、节拍和状态条件信号密切相关。
控制器的设计方法有两种,即组合逻辑控制器和微程序控制器:组合逻辑控制器微操作控制信号由触发器和逻辑门电路组成;微程序控制器将执行中的微命令存放在控制存储
器CM中,在指令执行时从CM中取出各种微命令。
4.中断系统
中断系统是CPU执行中断功能必备的硬件,主要包括中断使能控制、中断优先控制中断的执行等。
6.1.3CPU的指令周期
程序是指完成特定功能的机器指令的有序集合,因此程序功能是通过执行包含在其中的每一条指令实现的,处理器一次取出一条指令并完成该指令规定的操作。
指令的执行按照如下顺序进行:
取指令→分析指令→执行指令。
指令周期是指一条指令从取出到执行完毕所需要的全部时间。不同的指令由于功能不同,所涉及的部件不同,执行的时间也会有很大差异。例如,在MIPS指令中,加法指令ADD和乘法指令MULT同样都是R型指令,但是由于加法运算的速度比乘法快,乘法指令执行时间要比较长;再如访存指令的速度一般要比非访存指令的速度慢一些。
一个完整的指令周期与CPU周期的关系如图6-5所示。其中,间址周期是在间接寻址方式时才有的,而中断周期与中断请求信号有关,因此间址周期和中断周期不是每个指令周期都必须包含的。图6-6所示的是指令周期对CPU周期的包含关系。图6-5指令周期流程图6-6指令周期与CPU周期的包含关系
6.1.4指令执行流程
指令的执行是从取指周期开始的。取指周期主要完成从内存取出要执行的指令,并使指针指向下一条指令,即PC=PC+“1”,这里的“1”表示当前这条指令的实际字长。取指完成后,对指令进行译码,再转入具体的指令执行过程。指令在执行过程中如果采用间接寻址方式,还需要增加间址周期,如图6-5所示。
图6-7所示是一个采用总线结构将运算器、寄存器连接起来的控制器内部数据通路。其各部件与内部总线IBUS和系统总线ABUS、DBUS的连接方式如图中所示,图中的“o”为控制门,在相应控制信号(信号名称标在“o”上)的控制下打开,建立各部件之间的连接。GR是通用寄存器组,X和Z是两个暂存寄存器。
这里以图6-7给出的数据通路为例,通过三条指令的执行说明指令执行过程中控制信号产生的条件。假设每个机器周期包含4个过程时钟周期。图6-7采用总线结构的控制器内部数据通路
1.指令ADDR0,(R1)
指令ADDR0,(R1)是一条RS型加法运算指令。该指令涉及的数据有寄存器,也有存储器。该指令的功能是:R
0←(R0)+M((R1)),即把R0的内容和存储器中以R1
内容为地址的存储单元中的内容相加,结果送给R0。这条指令的执行过程及其包含的机器周期如下:
2.指令SUB(R0),A(R1)
指令SUB(R0
),A(R1)是一条SS型的减法运算指令。指令的功能是:M((R0))←M((R0))-M((R1)+A),其中:A是指令中的形式地址。该指令中的操作数都在存储器中,其中,两个源操作数一个是寄存器间接寻址、另一个是变址寻址,目的操作数是寄存器间接寻址。这条指令的执行过程分析如下:
3.指令JMPA
指令JMPA是一条无条件转移指令。该指令的功能是:PC←A,其中,A是指令中的形式地址。这条指令的执行过程分析如下:
6.2MIPS模型机的基本构成
这里的模型机可以执行MIPS32指令集中的如下八条指令:
(1)基本算术逻辑运算指令ADDU、SUBU、AND、ADDIU。
(2)基本程序控制转移指令BNE、J。
(3)基本数据存取指令SW、LW。
6.2.1模型机的基本结构
模型机的内部框图如图6-8所示。模型机中的存储器将指令和数据分开存放,它是由深色背景的CPU以及指令存储器IM和数据存储器DM构成的。按照各部件的功能将模型机分成以下几个主要模块(部件):
(1)指令存取部件:由程序寄存器PC、指令存储器IM和PC更新模块构成。
(2)指令译码器ID:对当前执行的指令进行译码。
(3)寄存器组RF:由32个32位寄存器组成。
(4)运算器ALU:可以实现算术和逻辑运算。
(5)存储器:可分为数据存储器DM和指令存储器IM。
(6)其他部件。图6-8模型机的内部框图
6.2.2模型机主要功能部件
1.指令存取部件
指令存取部件的任务是从IM中取出当前的指令,并自动完成对PC的更新。为了方便后面指令执行过程的分析和控制器的设计说明,我们把这个部件分为三个部分:程序计数器PC、PC更新模块NPC和IM。IM的实现在存储器部件中讨论,这里只讨论程序计数器PC和PC更新模块的实现。
1)程序计数器PC
PC是一个受时钟信号控制且具有复位功能的32位地址寄存器,用于指示指令地址。由于MIPS32的指令长度都是32位的,因此每次从指令存储器IM中取出的指令长度都是32位的,而存储器可按字节(8b)、半字(16b)或字(32b)进行访问,因此PC的值必须是一个规则的字地址,即地址低2位必须为00B。因此,PC模块采用30位数据宽度。程序计
数器PC模块的接口定义如表6-1所示,其功能说明如表6-2所示。
例6-1下面给出PC模块的代码。
2)PC更新模块NPC
NPC模块为PC提供输入地址。根据当前执行的指令计算下一次PC的值,当执行非跳转类指令时,自动完成PC←(PC)+1,当执行跳转类指令时,根据跳转指令的要求计算
新的PC值。NPC模块的接口定义如表6-3所示,其功能说明如表6-4所示。
例6-2NPC模块的代码。
define.v文件中定义了常用的一些常量、MIPS指令操作码字段的取值,以及各种部件输入控制信号的功能取值等,该文件的完整内容如例6-3所示。
例
6-3define.v文件的完整内容。
2.指令译码器ID
指令译码器ID的功能是对从IM取出的机器码指令进行译码输出,作为寄存器、运算器和控制器的控制输入信号。ID模块的接口定义如表6-5所示,其功能说明如表6-6所示。
例6-4ID的Verilog描述。
3.寄存器组RF
寄存器组是由32个32位的寄存器组成的,也就是表6-1中描述的32个寄存器,其中,$0的值始终为0。寄存器是一个受时钟信号控制的部件,写入数据是在clk的上升沿,读出数据不受clk控制。寄存器组RF模块的接口定义如表6-7所示,其功能说明如表6-8所示。
例6-5RF的Verilog描述。
5.运算器ALU
运算器是对输入数据执行算术或逻辑运算的部件,除了要有两个输入数据和一个运算结果外,还要确定运算器执行何种具体的运算,这就要分析模型机指令集中每一条指令对
运算功能的要求。模型机算术逻辑指令中的ADDU、SUBU、AND要求运算器完成加、减、与运算;指令BNE对减法运算结果进行“为零”判断,因此运算器还需要设置结果为零的状态标志位“ZF”;访存指令SW和LW需要进行加法运算,计算存储单元的地址;J指令对运算器没有要求。因此模型机的运算器需要实现加、减和与运算的基本功能,并且有一个标志位ZF。运算器ALU模块的接口定义如表6-9所示,其功能说明如表6-10所示。
例6-6ALU的Verilog描述。
6.存储器
模型机是将程序和数据分开存放的,指令存储器IM用于存放程序,是只读存储器,其实际容量是128×32位;数据存储器DM用于存储程序运行过程中的数据,是可读写的,其实际容量是128×32位的。需要说明的是,为了简化设计,模型机中这两个存储器都是以32位编址的。
数据存储器DM模块的接口定义和功能说明分别如表6-11和表6-12所示,其Verilog模块代码如例6-7所示。
指令存储器IM模块的接口定义和功能说明分别如表6-13和表6-14所示,其Verilog模块代码如例6-8所示。
7.其他部件
模型机中还有其他部件,如符号扩展部件、多路选择器和控制器等。符号扩展部件的功能是对指令中的16位立即数根据扩展控制信号进行有符号数或无符号数扩展,得到32
位的数据。多路选择器这里不再赘述。
6.3建立模型机的数据通路
按照指令执行过程中数据从左到右的流向,我们将图6-8改变成图6-9的形式。图6-9模型机基本数据通路
图中执行一条指令采用如下典型的5个处理过程:
(1)IF:取指令。
(2)ID:指令译码。
(3)EXE:取数据并执行运算。
(4)MEM:访问存储器。
(5)WB:回写,即将数据写入寄存器中。
模型机的指令按照指令功能可以分为以下3类:
(1)基本算术逻辑运算指令ADDU、SUBU、AND、ADDIU。
(2)基本程序控制转移指令BNE、J。
(3)基本数据存取指令SW、LW。
1.ADDU
ADDU是R型指令,执行两个无符号数的加法运算。无符号加法运算指令不考虑运算过程中出现的溢出异常情况。
(1)ADDU指令的格式:
(2)指令功能描述:
PC←PC+4
R[$rd]←R[$rs]+R[$rt]
例如,汇编指令ADDU$1,$2,$3,完成$1=$2+$3的功能,机器码各字段的对应关系是:$1对应rd字段的编码00001B,$2对应rs字段的编码00010B,$3对应rt字段的编码00011B,因此,该指令的机器码为:
(3)指令执行过程分析。若汇编指令ADDU$1,$2,$3的机器码存在IM中地址为0的单元中,即在IM模块中有如下代码:
如果目前PC=0x00,那么PC就会取出这条指令并按照下面的步骤执行指令(各功能模块的实现代码见6.2.2):
①取指令:PC=0x00,取出IM中地址为00单元的指令,即取出的机器码是00430821。
②分析指令:对机器码00430821经ID译码后,输出rs=00010B,rt=00011B,rd=00001B,Opcode=00H;Funct=0x21H;分别从RF的数据1和数据2读出rs($2)和
rt($3)寄存器的值。
③执行指令:将寄存器中读出的数据送至ALU的A、B数据输入端,且使ALUOp=00,使运算器执行加法运算;控制器控制NPCOp=00,执行PC=PC+4完成PC更新。
④回写:控制器控制RFWr=1,将ALU的求和结果写入rd寄存器。
ADDU指令周期的信息流程如图6-10所示。图6-10ADDU指令周期的信息流程
(4)模型机的数据通路图。ADDU指令是模型机可以执行的第一条指令,这条指令可以用如图6-11所示的数据通路实现。图6-11指令ADDU一条指令的数据通路
(5)控制器控制信号。执行ADDU指令时控制器的输出控制信号ALUOp、RFWr和NPCOp是由控制器根据指令中的Opcode和Funct字段产生的。
执行ADDU指令控制器的输入和输出信号如表6-15所示。
带有控制器的完整的数据通路如图6-12所示。图6-12执行ADDU指令的完整的数据通路
(6)指令执行时序。在ADDU指令执行过程中,IF、ID、EXE和WB子任务段中各部件随时间的变化过程如图6-13所示。图6-13ADDU指令的执行时序
2.SUBU指令
SUBU指令也是R型指令,它是执行两个无符号数的减法运算指令。
(1)SUBU指令的格式:
(2)指令功能描述:
PC←PC+4
R[$rd]←R[$rs]-R[$rt]
(3)指令执行过程分析。SUBU指令周期的信
息流程如图6-14所示。图6-14SUBU指令周期的信息流程
(4)模型机的数据通路图。SUBU指令是模型机可以执行的第二条指令。它的执行过程与ADDU指令的执行过程基本相同,只有在EXE阶段控制ALU执行减法运算这一点差别。因此,执行ADDU和SUBU两条指令的数据通路不需要改动,还是如图6-12所示。
(5)控制器控制信号。执行ADDU和SUBU两条指令控制器的输入和输出信号如表6-16所示。
(6)指令执行时序。与ADDU指令相似,只是在EXE阶段时,运算器执行减法操作。
3.AND指令
AND指令同样是R型指令,实现对两个数据逻辑按位与运算。
(1)AND指令的格式:
(2)指令功能描述:
PC←PC+4
R[$rd]←R[$rs]&R[$rt]
(3)指令执行过程分析。AND指令周期的信息流程如图6-15所示。
AND指令与前两条指令的执行过程基本相同,只是在EXE阶段控制运算器执行逻辑与运算,即使ALU控制信号ALUOp=10图6-15AND指令周期的信息流程
(4)模型机的数据通路图。AND指令是模型机可以执行的第三条指令,数据通路仍然不需要改动,如图6-12所示。
(5)控制器控制信号。执行ADDU、SUBU和AND三条指令的控制器的输入和输出信号如表6-17所示。
(6)指令执行时序。与ADDU指令相似,只是在EXE阶段时,运算器执行逻辑与运算。
4.ADDIU指令
ADDIU指令是I型指令。它是实现一个寄存器数据和一个32位立即数相加的算术指令,其中,32位的立即数是将指令字中的16位立即数字段Imm经过符号位扩展后得到的。
(1)ADDIU指令的格式:
(2)指令功能描述:
PC←PC+4
R[$rt]←R[$rs]+sign_ext(Imm)
(3)指令执行过程分析。ADDIU指令周期的信息流程如图6-16所示。
这是模型机可以执行的第四条指令,与前3条指令相比,在EXE和WB两个过程存在如下差异:
①EXE过程中ALU的数据B是指令中立即数经过有符号扩展后得到的,即B=ign_Ext(Imm)。
②WB过程中写入RF的寄存器编号是rt字段,而ADDU和SUBU指示的写入寄存器编号是rd字段。图6-16ADDIU指令周期的信息流程
(4)模型机的数据通路图。在图6-12的基础上,需要做如下几点改动,才能使模型机完成4条指令。
①运算器的B端前加入一个二选一的数据选择器,其数据选择控制信号用ALUB_Src表示。
②RF的地址3端前加入一个二选一的数据选择器,其数据选择控制信号用RegA3_Src表示。
③加入一个符号扩展模块,实现对ID输出的IMM16数据进行有符号位扩展或无符号位扩展,其扩展方式控制端用SignExt表示。
改动后的数据通路如图6-17所示,新增加的三个控制信号的名称在图中用圆角框表示。图6-17执行四条指令的数据通路
(5)控制器控制信号。在模型机中增加部件和控制信号后,可以执行ADDU、SUBU、AND和ADDIU这4条指令的控制器输入和输出信号,如表6-18所示。
(6)指令执行时序。ADDIU的指令执行时序图如图6-18所示。图6-18ADDIU指令时序图
5.BNE指令
BNE指令是I型指令。它是条件判断转移指令。这条指令判断两个寄存器的内容是否相等,决定程序是否转移。
(1)BNE指令的格式:
(3)指令执行过程分析。从指令的功能描述中可以看出,BNE指令在执行阶段对PC的更新操作取决于指令中两个寄存器R[rs]和R[rt]是否相等。判断R[rs]和R[rt]是否相等,需要先使ALU执行R[rs]-R[rt]运算,若R[rs]=R[rt],则ALU的结果一定为“0”,此时可将ZF设置1,若结果不为“0”,则将ZF置0。BNE指令在EXE阶段首先完成R[rs]-R[rt]的运算,但是并不保存运算结果,只是根据运算结果对标志位ZF进行设置,若R[rs]-R[rt]=0,则将ZF置1,并且使PC=PC+4;否则使PC=PC+4+Sign_Ext(4*Offset)。由于BNE指令周期的信息流程如图6-19所示。BNE指令并没有将运算结果写回到寄存器中,因此指令在执行时只有IF、ID和EXE这3个步骤。ALU部件对ZF的设置见例6-6。图6-19BNE指令周期的信息流程图
(4)模型机的数据通路图。为了使控制器能够根据ZF状态实现对PC更新部件的控制,对图6-17做了如下两点改动:
①将ALU的输出标志位ZF作为控制器的输入信号,命名为Zero。
②将符号位扩展后的32位立即数送到PC更新部件的数据输入端。
改动后的数据通路如图6-20所示。图6-20执行5条指令的数据通路
(5)控制器控制信号。执行ADDU、SUBU、AND、ADDIU和BNE这5条指令控制器的输入和输出信号,如表6-19所示。
(6)指令执行时序。图6-21所示的是BNE指令执行过程的时序图。图中给出的是当寄存器不相等,即ZERO=0时,PC发生跳转的情况。图6-21BNE指令执行时序图
6.J指令
J指令是无条件转移指令。它是J型指令,可实现程序的长距离跳转。
(1)J指令的格式:
(2)指令功能描述:
PC[28:2]←Targetaddr
(3)指令执行过程分析。J指令执行时强制将PC字地址的低26位用指令中的26位立即数进行替换。J指令周期的信息流程如图6-22所示。指令功能比较简单,只有IF、和EXE这3个步骤,EXE阶段没有对寄存器和运算器的任何操作。图6-22J指令周期的信息流程
(4)模型机的数据通路图。分析J指令的信息流程和6.2.2节中NPC模块的功能:在实现J指令时,需要将转移的26位目标地址作为NPC部件的输入信号,并且在J指令的EXE阶段,将PC更新部件的控制信号NPCOp设置为10即可实现程序转移。因此需要将图6-20所示的数据通路中的译码器的IMM26作为NPC部件的输入信号。改动后的数据通路如图6-23所示。图6-23执行6条指令的数据通路
(5)控制器控制信号。执行ADDU、SUBU、AND、
ADDIU、BNE和J这6条指令控制器的输入和输出信号如表6-20所示。
(6)指令执行时序。图6-24所示是J指令执行过程的时序图。图6-24J指令执行时序图
7.LW指令
MIPS机器是典型的RISC指令系统,这类指令系统为了提高机器速度,降低硬件复杂度,只有存数和取数指令才访问存储器,其他指令的数据都在寄存器之间传送。LW指令
是一条存储器读出指令。
(1)LW指令的格式:
(2)指令功能描述:
PC←PC+4
R[rt]←MEM[R[rs]+sign_ext(Offset)]
(3)指令执行过程分析。LW指令需要从数据存储器DM中取出地址为R[rs]+Sign_Ext(Offset)的单元中的数据,在EXE阶段由ALU计算出存储单元的地址,在MEM阶段将数据从DM中取出,再在WB阶段将该数据回写到寄存器R[rt]中。相比前面几条指令,LW指令功能最为复杂,包含了IF、ID、EXE、MEM和WB所有5个步骤。LW指令周期的信息流程图如图625所示。图6-25LW指令周期的信息流程图
(4)模型机的数据通路图。分析LW指令的信息流程,图6-23需要做如下几点改动:
①需要增加一个数据存储器,即DM部件,其写入控制信号的名称为DMWr。DM模块的实现见例6-7。
②寄存器写入数据端的数据来自DM的输出,因此需要在RF的数据输入端增加一个二选一的数据选择器,其选择控制信号名称为RegD_Src。
改动后的数据通路如图6-26所示。
(5)控制器控制信号。LW指令在MEM阶段中增加了DM写控制信号DMWr以及WB的阶段寄存器写入数据源选择信号RegD_Src。由此,执行ADDU、SUBU、AND、
ADDIU、BNE、J和LW这7条指令控制器的输入和输出信号如表6-21所示。
(6)指令执行时序。图6-27所示的是LW指令执行过程中5个阶段数据变化的时序图。图6-27LW指令执行时序图
8.SW指令
SW指令是一条将数据写入存储器的指令。写入存储器的单元地址需要由ALU计算得到。
(1)SW指令的格式:
(2)指令功能描述:
PC←PC+4
MEM[R[rs]+Sign_Ext(Offset)]←R[rt]
(3)指令执行过程分析。SW指令的功能是将寄存器R[rt]的内容写入DM存储器中地址为R[rs]+Sign_Ext(Offset)的单元中去,在EXE阶段需要由ALU计算存储单元的地址,在MEM阶段将取自R[rt]的数据写入DM中。SW指令包含了IF、ID、EXE、MEM这4个步骤。SW指令周期的信息流程图如图6-28所示。
6-28SW指令周期的信息流程图
(4)模型机的数据通路图。分析SW指令的信息流程,在图6-26的基础上需要将RF的输出数据2作为输入送到DM的输入数据端口。改动后的数据通路如图6-29所示。
(5)控制器控制信号。SW指令并没有增加新的控制信号。执行ADDU、SUBU、AND、ADDIU、BNE、J、LW和SW这8条指令控制器的输入和输出信号如表6-22
所示。
(6)指令执行时序。图6-30是SW指令执行过程中各相关数据变化的时序图。
以上分析了模型机所有8条指令的执行过程,并建立了如图6-29所示可以实现模型机所有8条指令的完整的数据通路。在每个指令的执行过程中,IF、ID和EXE这3个阶段是每个指令都有的,但是MEM和WB阶段不是必需的。理论上,每个指令的实际执行时间与指令执行过程中所包含阶段是有关的,每个阶段的执行时间与硬件的关系如表6-23
所示。实际上由于时钟信号的周期是固定的,因此时钟信号周期应当取所有阶段的时间之和,即CLK=tIF+tID+tEXE+tMEM+tWB。图6-30SW指令执行时序图
6.4控制器的实现
6.4.1组合逻辑控制器在执行具体的指令时,这条指令的数据通路都是在控制器控制下建立的,具体来说,就是控制器的功能要根据指令的操作码和条件状态标志,决定每个时钟周期中需要产生的相关部件的控制信号。组合逻辑控制器的结构框图如图6-31所示。图6-31组合逻辑控制器框图
从图6-31中可以看出,控制器的输入信号有3个来源,分别是:
(1)来自操作码译码器的输出I0-In
。
(2)来自节拍发生器的时序信号T0-Tk
。
(3)来自执行部件的反馈信号B0-Bj
。
组合逻辑控制器最终的输出信号就是各个执行部件的控制信号C0
-Cm,它们用来控制机器中所有部件的操作。组合逻辑控制器产生的控制信号是译码器输出In
、时钟信号Tk和状态标志信号Bj的逻辑函数,即
模型机在建立如图6-29所示的数据通路图和指令的执行过程分析中,我们知道IF阶段根据PC从指令存储器IM中得到了指令后,机器转入到指令译码阶段,即ID阶段,这个阶段完成以下功能:
(1)识别不同指令。
(2)根据不同的指令给出所有控制信号。
(3)获取指令中的源操作数。
1.识别不同指令
模型机的8条指令都是通过指令操作码Opcode字段进行区分的,其中,R型指令的Opcode固定为000000,其具体的功能是由Funct字段确定的。因此这8条指令在硬件上
可以通过下面的式(6-1)进行
2.控制信号的产生
从表6-22可以看出,指令的执行步骤从IF、ID、EXE、MEM到WB这5个阶段中,对所有指令而言前两个阶段即IF和ID都是必需的,与这两个阶段相关的部件是指令存储器IM和指令译码器ID,不需要专门的控制信号;而每个指令在后3个阶段EXE、MEM和WB中所需的控制信号是不同的,这3个阶段控制器在识别不同指令后需要输出的8个控制信号分别是:ALUOp、NPCOp、ALUB_Src、Sign_Ext、DMWr、RFWr、RegA3_Src和RegD_Src。各指令执行时需要的控制信号如表6-24所示。
1)EXE阶段的控制信号
EXE阶段涉及到3个部件,分别是ALU、NPC和数据扩展模块,需要的控制信号有4个,分别是ALUOp、ALUB_Src、NPCOp、Sign_Ext。
(1)ALUOp:2位宽,是ALU的运算控制信号,其功能如表6-25所示。
从表6-24可以知道,只有SUBU和BNE两条指令时,ALUOp[0]=1;在执行AND指令时,ALUOp[1]=1。因此得到ALUOp的逻辑表达式为:
ALUOp[0]=SUBU+BNE
ALUOp[1]=AND
(2)ALUB_Src:1位宽,是ALU的B数据输入端的数据选择信号,其功能如表6-26所示。
分析表6-24中的ALUB_Src后可以得到其逻辑表达式为ALUB_Src=ADDIU+LW+SW
(3)NPCOp:2位宽,是PC更新部件NPC的操作控制信号,其功能如表6-27所示。
分析表6-24中的NPCOp后可以得到其逻辑表达式为
NPCOp[0]=BNE·(!Zero)
NPCOp[1]=J
(4)Sign_Ext:1位宽,是将16位立即数转换为32位数的符号扩展单元的控制信号,其功能如表6-28所示。
分析表6-24中的Sign_Ext后可以得到其逻辑表达式为
Sign_Ext=ADDIU+BNE+LW+SW
2)MEM阶段的控制信号
MEM阶段实现对数据存储器DM的访问,因此涉及的部件只有数据存储器DM,可以对DM执行读/写操作,其中,读/写操作是在DMWr的控制下完成的。当DMWr=0时,DM执行读出操作,当DMWr=1时,DM执行数据写入操作。
分析表6-24中的DMWr后可以得到其逻辑表达式为
DMWr=SW
3)WB阶段的控制信号
WB阶段的任务是将在执行阶段或MEM阶段得到的数据写回到寄存器中,因此涉及的主要部件是寄存器阵列RF,控制器要产生的控制信号有RFWr、RegA3_Src和RegD_Src。
(1)RFWr:RF写入控制信号,当RFWr=1时,RF执行数据写入操作。
分析表6-24中的RFWr后可以得到其逻辑表达式为
RFWr=ADDU+SUBU+AND+ADDIU+LW
由于所有R型指令的执行要经历WB阶段,因此表达式也可以写成:
RFWr=RType+ADDIU+LW
(2)RegA3_Src:是RF写入地址来源控制信号,是RF写入地址的二选一数据选择器的地址选择控制信号。若RegA3_Src=0时,寄存器的写入地址是指令中的rt字段,若
RegA3_Src=1时,寄存器的写入地址是指令中的rd字段。
分析表6-24中的RegA3_Src后可以得到其逻辑表达式为
RegA3_Src=RType
(3)RegD_Src:是RF写入数据来源选择信号,实际上是RF写入数据端的二选一数据选择器控制信号。若RegD_Src=0
时,将运算器的结果写入RF中;若RegD_Src=1时,将从DM读出的数据写入RF中。
分析表6-24中的RegD_Src后可以得到其逻辑表达式为
RegD_Src=LW
3.控制部件CU
控制器可以根据各指令的操作码Opcode、Funct以及状态标志Zero,再由上面写出的各控制信号的逻辑表达式,采用组合逻辑电路就可以产生所有的控制信号了。组合逻辑控制器的端口信号如图6-32所示。图6-32组合逻辑控制器的端口信号
从以上组合逻辑控制器的设计过程可以看到,所有的控制命令,都是由逻辑门电路产生的,其最大优点是速度较快,这种控制器的设计方法主要应用于RISC处理器和一些巨型计算机中,但是这种方法存在两个主要的缺点:首先,每个控制信号都有不同表达式,因此这些门电路的结构不规整,控制器功能的检查和调试也比较困难,设计效率较低;其次,一旦控制器形成后,要想修改和扩展指令功能是很困难的,因为,印刷电路板已经固定下来了,很难再对其进行修改和扩展了。
6.4.2微程序控制器
1.微程序控制器的设计思想
微程序控制的基本设计思想,是将软件设计的方法引入到硬件实现中来,也就是按照程序存储的原理,把操作控制信号(也称为微命令)排列后编写成“微指令”,存放到一个称
为“控制存储器”(简称CM)的只读存储器中,当机器运行时,从CM中按顺序一条一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作。
一条机器指令往往需要分成几步执行,如果将每一步操作所需的微命令以代码的形式放在一条微指令中,那么一条机器指令的执行过程就对应一个由若干条微指令组成的微程
序。在设计CPU时,根据指令系统的设计编写好每一条机器指令对应的微程序,并且将它们存入CM中。机器指令和微指令在机器中存放的位置和相互之间的关系可以用图6-33
表示。图6-33机器指令和微指令的关系
CM主要用来存放指令系统中每一条机器指令对应的微程序。每段微程序由一组微指令组成,每个微指令由操作控制和顺序控制字段两部分组成。操作控制字段是由一系列控
制信号组成的,每个控制信号又称为微命令,操作控制字段产生的一系列微命令可以控制计算机完成一个基本的功能部分;顺序控制字段用来指示下一条微指令的地址。通常一条微指令执行的功能对应了一个CPU周期的功能,也就是说,一个CPU周期所需的控制信号是由操作控制字段产生的。每个微指令占用一个CM单元,CM的字长就是微指令的字长。
微程序控制器常见的内部结构如图6-34所示。图6-34微程序控制器常见的内部结构
从图6-34中可以看出,微程序控制器主要由控制存储器CM、微地址顺序控制逻辑、微地址寄存器μAR、微地址译码器和微指令寄存器μIR组成。
(1)控制存储器CM。CM用来存放实现指令系统中每条机器指令对应的微程序,CM的容量由机器指令系统所需的微程序决定。由于CM存放的是指令执行时所需的控制信号,实现一条机器指令的功能是通过执行该机器指令对应的微程序来实现的,微程序中包含多条微指令,即需要多次读取CM,因此,CM的读取速度对于机器的速度影响会很大,
因此CM一般是采用高速的只读存储器。
(2)微地址顺序控制逻辑。微地址顺序控制逻辑在微程序需要分支的情况下产生所需微指令的地址。在通常情况下,微指令本身的顺序控制字段会直接给出下一条微指令的地
址。但是很多情况下微程序也会出现分支。例如,取指令周期从内存中取出的机器指令是不同的,执行该指令需要跳转到该机器指令对应的微程序的首地址,才能执行对应的微程
序,此时,微程序的首地址就是由微地址顺序控制逻辑根据IR的操作码变换得到的。
(3)微地址寄存器μAR。它用于存放微地址顺序控制逻辑生成的CM的微指令地址。
(4)微地址译码器。它对来自μAR的输出进行译码,选择CM中的某个单元。
(5)微指令寄存器μIR。它用于寄存从CM取出的一条微指令。微指令的控制字段和顺序控制字段保存在微指令寄存器中,控制字段就是各种控制指令执行的微命令,顺序控
制字段不需要转移下一条微指令的地址。
微程序控制器的特点是:
(1)将控制信号存储在由ROM实现的CM中。
(2)结构规整,只有地址译码器和控制存储器。
(3)可以灵活修改控制器的功能,便于发现存在的错误和增加新的指令。
微程序控制器设计的关键是如何对微命令进行编码以及如何形成下一条微指令的地址,这与微命令的编码方式和微地址的形成方式有关。
2.基于ROM的模型机控制器
模型机的微程序控制器框图如图6-35所示。图6-35模型机的微程序控制器框图
比较图6-35和图6-32可以看出,两个控制器的输入和输出端口信号是完全一样的,所不同的是,图6-32中的控制信号是由组合逻辑产生的,而图6-35中是将控制信号存
储在ROM中的。
微程序控制器的内部结构是由地址译码器和ROM组成的,如图6-36所示。图6-36微程序控制器的内部结构
从图6-34中可以看出,ROM存放着模型机中每条机器指令执行时所需要的控制信号,由于模型机共有8条指令,其中,BNE指令要根据Zero的状态执行不同的功能,因此其控制信号也是不同的,这样,BNE指令需要占用2个存储单元,产生模型机控制信号的ROM至少需要9个存储单元,每个存储单元的字长是由控制信号的数量决定的。表6-29列出了10个控制信号,因此每个存储单元的字长是10b,存储单元中控制信号的存储顺序可以安排如表6-29所示。将表6-24中每条指令控制信号的取值依次存放到ROM中即可。考虑到今后指令集的功能扩展,模型机的ROM容量设置为32×10。由于模型机是单周期的,因此每条机器指令只对应一个微指令,这里就不需要顺序控制字段了。
例6-9地址译码器的VerilogD描述。
6.4.3VerilogHDL实现控制器
这里的VerilogHDL控制器根据指令中的操作码Opcode、功能码Funct和标志位,产生6.2节中模型机中各指令的控制信号。
6.4.4指令周期与CPU执行时间
1.指令周期
首先介绍指令周期的概念,CPU取出并执行一条指令所需的全部时间称为指令周期,即CPU完成一条指令的时间。指令由于功能、运算、数据寻址方式的不同,运行时间会有很大差异。例如,在运算指令中,乘法指令比加法指令的执行时间要长;同样加法指令,其数据的寻址方式可以是寄存器寻址、直接寻址和间接寻址,则相应的指令周期也是不同的。
图6-37是单周期指令执行时各个阶段所需的时间。图6-37单周期指令各个阶段的工作过程示意图
从图6-37中可以看出,指令的执行过程中各个部件中的新旧指令或数据的交替过程。指令执行过程每个阶段所需的时间是由该阶段中的主要部件决定的。假设各阶段的时
间如表6-30所示。从表6-30可以看出与存储器相关的阶段所需的时间较长,ALU的时间与运算类型有关,这里的时间是由所有运算中时间最长的时间决定的,可以看出单周期
指令的时钟周期应为各阶段执行时间的总和,即800ps。表6-31列出了模型机中8条指令指令周期。
2.CPU的执行时间
由于模型机采用单周期的设计,指令执行过程的各个阶段之和为800ps,因此CPU时钟信号的最大频率是:
在这800ps中大多数的部件都处于空闲状态,例如,ALU完成一次运算只需要200ps,也就是说,如果让ALU始终处于有效的工作状态,ALU的工作频率可以达到:
从宏观上,CPU的执行时间texec是由一个程序的执行时间决定的,即:
3.影响CPU效率的因素
从式(6-2)可以看出,CPU的效率是由程序中指令的数量、CPI和时钟频率fclk决定的,下面我们再进一步的对这几个因素进行分析。
1)程序中指令的数量
程序中指令的数量是由以下几个因素决定的:
(1)任务:任务的不同,程序的复杂度不同。
(2)算法:即使相同的任务,不同的算法,其复杂度是不同的,如O(N2)与O(N)。
(3)编程语言:编程语言不同,语句和算法可能存在差异。
(4)编译器:编译器的编译结果不同。
(5)处理器的指令集:处理器的指令集不同,编写程序的执行可能存在很大差异。
2)CPI
CPI是由CPU的内部结构决定的,例如,我们前面讲的单周期模型机,CPI=1,对于多周期CPU而言,CPI>1;而对于超流水线结构,由于增加了处理器内部部件的数量,可以使得指令执行中的任一个阶段在同一时刻执行多条指令,因此CPI<1
3)时钟频率fclk
时钟频率也是由多种因素决定的,首先是处理器的内部结构,如单周期、多周期、流水线等决定的,同一个指令集如果分别采用单周期和多周期的结构,单周期的时钟频率比较低,流水线的时钟频率取决于流水线中各任务段的划分,任务划分的级数越多,其时钟信号的频率就越高;其次是指令集的选取,相比RISC,CISC指令集的时钟频率很难提高;然后就是与半导体的工艺技术有关,更先进的制造工艺还会减少处理器的功耗,从而减少其发热量,有利于提高时钟信号的频率。表6-32列出了某两个CPU中这3个参数与执行时间对比的例子。
从式(6-2)可以看出,要提高CPU的速度,就要降低程序的执行时间,可以采取的主要措施有:降低CPI、提高fs
。
6.5多周期CPU
单周期CPU用一个时钟周期执行一条指令,时钟周期的时间长度是由执行时间最长的指令决定的。多周期CPU的思想是把每一条指令的执行过程分成若干个小周期,每条指令可以根据其复杂程度,使用不同数量的小周期去执行,这样就可以提高CPU的效率。
6.5.1指令周期的分配
在单周期CPU的设计过程中,定义了5个指令执行步骤,分别是取指令(IF)、指令译码(ID)、指令执行(EXE)、存储器访问(MEM)和结果写回(WB)。在多指令周期CPU中,
给这5个步骤分别分配一个时钟周期。
在6.3节中分析了模型机中每条指令执行所需的步骤,即指令周期的时钟分配表,如表6-33所示。表6-33中可以看出每条指令根据执行的功能由3~5个时钟周期完成,大部分的指令如R型和I型指令需要4个时钟周期,而最短的BNE和J指令只需要3个时钟周期,只有LW指令需要5个时钟周期。
6.5.2多周期的数据通路
多周期的数据通路与单周期并没有本质差别,只是将单周期中一个时钟周期划分为5个新的时钟周期。新的时钟周期是由指令执行5个阶段中时间最长的任务段决定的,通常
这个时间会选取访存周期的时间。同时为了能够切分数据通路,需要在数据通路中插入寄存器,新的完整的数据通路如图6-38所示。
相比图6-29,图6-38有以下几个主要的变化:
(1)PC部件增加了写使能信号PCWr。这样做的目的是控制PC在只在PCwr有效时,PC才更新一次,也就是PC只在IF阶段发生改变,在指令的其他阶段PC保持不变的。
(2)将图6-29中的ID更名为IR(指令寄存器),并增加写使能控制信号IRwr,使该部件成为一个受时钟信号控制的指令寄存器。
(3)在寄存器文件RF的两个数据输出端增加了2个数据寄存器,分别是A和B,增加锁存控制信号En_A和En_B。
(4)在ALU数据输出端增加保存运算结果的寄存器Z,增加控制信号En_Z。
(5)在数据存储器DM的数据输出端增加了数据寄存器DR。
从图6-38中可以看到,指令执行的全部5个过程中对应的部件中,都有一个受时钟信号控制的器件。
图6-39是以ADDU为例说明指令的执行过程。图中,CLK是时钟信号,其序号1~6依次对应指令执行的6个步骤。从图中可以看出ADDU指令执行的4个阶段对应的全过程:
(1)在IF阶段中,PC中存放ADDU指令在IM中存放的地址,并送给IM,IM输出ADDU指令的机器码并送往IR。
(2)在下一个CLK上升沿,进入ID阶段,IR锁存来自IM的机器指令,并将ADDU指令的操作码送往控制器,指令中的rs、rd和rt送到RF部件,RF部件将两个源操作数取出;与此同时,PC完成更新,指向下一条指令地址。
(3)在下一个CLK上升沿,进入EXE阶段,控制寄存器A和B锁存来自RF的两个操作数,并送往ALU执行加法运算。
(4)在下一个CLK上升沿,进入WB阶段,在这阶段会将ALU的结果控制锁存到寄存器Z中。
(5)在下一个CLK上升沿,开始下一个IF阶段,将寄存器Z的结果写入RF中。图6-39ADDU指令执行过程时序示意图
6.5.3状态机的建立
1.LW指令
取数指令LW从取指令IF到写回WB的5个阶段分别用图6-40中的状态S0~S4表示,每个状态控制信号设置如表6-34所示。图6-40中的状态间的转换是按照箭头上的
条件进行的。图6-40多周期CPU的状态转移图
S0(IF):取指令状态,这个状态的功能是根据PC的当前值内容访问IM。
S1(ID):指令译码状态,这个状态中完成以下操作:
(1)将IM输出的指令锁存到IR。
(2)从RF中读出R[rs]。
(3)对指令中的立即数有符号扩展得到Sign_Ext(Offset)。
(4)更新PC的值,使PC指向下一条指令的地址。
S2(MA):计算存储单元地址状态,该状态完成以下操作:
(1)寄存器A锁存R[rs]的数据。
(2)ALU计算数据存储单元的地址,即R[rs]+Sign_Ext(Offset)。
S3(MRead):存储器读出数据状态,该状态完成以下操作:
(1)寄存器Z锁存ALU的计算结果,即Z=R[rs]+Sign_Ext(Offset)。
(2)从数据存储器DM读出数据。
S4(MWB):存储器数据写入寄存器状态,该状态完成以下操作:
将RF的写使能信号RFWr置1,在下一个时钟信号的上升沿(IF状态)将DR输出的数据写入R[rt]。
2.SW指令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业之间借款协议范本
- 三人合伙协议书2篇
- 2024年度居间服务协议:工程设计合同3篇
- 水车租赁合同电子版
- 汤姆索亚历险记课件教学
- 自动贩卖机场地协议书
- 数据保密合同
- 2024年度工程市场营销合同
- 二零二四年度工程设备采购合同标的详细描述及其服务内容扩展协议3篇
- 墙布销售的合同范本
- 宫颈癌保留生育能力的手术
- 网页设计试题及答案
- 名创优品课件教学课件
- 2024苏教版科学小学六年级上册第5单元《科技改变生活》教学设计及教学反思
- 人教版八年级英语上册期末专项复习-完形填空和阅读理解(含答案)
- 第5课 互联网接入 教学设计 2023-2024学年浙教版(2023)初中信息技术七年级上册
- 中小学劳动教育实践基地建设标准
- 传感器技术-武汉大学
- 模块二 途中导游服务
- 2024黑龙江省交通投资集团招聘38人高频500题难、易错点模拟试题附带答案详解
- 2024-2030年中国纺织服装行业市场发展分析及发展趋势与投资研究报告
评论
0/150
提交评论