1、1,第2篇 计算机系统分层结构,在本篇用3章分三个层次,即微体系结构层、指令系统层和汇编语言层讨论计算机系统的组成。微体系结构层是具体的硬件层次,可看作是指令系统的解释器。指令系统层是一个抽象的层次,其指令系统是一种硬件和编译器都可识别的机器语言。汇编语言层提供的语言,是将机器语言“符号化”以便于人们理解。用汇编语言编写的程序先由汇编器翻译成机器语言程序,再由微体系结构层解释执行。,2,第3章 微体系结构层CPU 组织,在微体系结构层 ,是从寄存器级分析CPU的结构和功能。本章主要内容: 3.1 CPU的基本组成和功能 3.2 算术逻辑部件ALU和运算方法 3.3 CPU模型机的组成及其数据通
2、路 3.4 组合逻辑控制器原理 3.5 微程序控制器原理 3.6 精简指令集计算机(RISC),3,中央处理器CPU的主要功能是从主存储器中取出指令、分析指令和执行指令,即按指令控制计算机各部件操作,并对数据进行处理。,3.1 CPU的组成和功能,4,3.1.1 CPU的组成,CPU通常由以下几部分构成:, 控制器 ;, 算术逻辑部件ALU;, 各种寄存器;, CPU内部总线。,CPU的基本组成框图,5,1ALU部件与寄存器,ALU框图,(1)ALU部件,ALU的功能是实现数据的算术与逻辑运算。,ALU的输入有两个端口,分别接收参加运算的两个操作数,通常它们来自CPU中的通用寄存器或ALU总线
3、。ALU的输出取决于对其功能的控制,当控制功能选择加、减、与、或等运算功能之一时,其输出结果将为对应的和、差、与值、或值等。,6,(2)寄存器,CPU 中的寄存器包括存放控制信息的寄存器,如指令寄存器、程序计数器和状态字寄存器;以及存放所处理数据的寄存器,如通用寄存器和暂存器。, 寄存器,通用,通常CPU内部设置有一组寄存器,每个寄存器都可以承担多种用途,因此习惯上称为通用寄存器。,通用寄存器本身在逻辑上只具有接收信息、存储信息和发送信息的功能。但通过编程以及与ALU的配合可以实现多种功能,如它们可为ALU提供操作数并存放运算结果,也可用作变址寄存器、地址指针和计数器等。, 器,暂存,在CPU
4、中一般要设置暂存器,主要是为了暂存从主存储器读出的数据 ,暂存器没有寄存器号,因此不能直接编程访问它们。,7, 寄存器IR(Instruction Register),指令,用来存放当前正在执行的一条指令。,指令可划分为操作码和地址码字段,由二进制代码组成。执行指令时必须对操作码进行译码,以识别出所要求的操作,这个功能由“指令译码器”完成。, 计数器PC(Program Counter),程序,用以存放当前或下一条指令在主存中的地址,因此又称为指令计数器或指令指针IP(Instruction Pointer)。, 寄存器,状态,CPU内部设置的状态寄存器,用来存放当前程序的运行状态和工作方式,
5、其内容称为程序状态字PSW(Program State Word),PSW是参与控制程序执行的重要依据。,8,2总线,所谓总线是一组能为多个部件分时共享的公共信息传送线路,它分时接收各部件送来的信息,并发送信息到有关部件。,由于多个部件连接在一组公共总线上,可能会出现多个部件争用总线,因此需设置总线控制逻辑以解决总线控制权的有关问题。,CPU内部总线用来连接CPU内的各寄存器与ALU ;,总线分类:,系统总线用来连接CPU、主存储器与I/O接口,它通常包括三组:数据总线、地址总线和控制总线。,按总线传送的方向可将总线分为单向总线和双向总线。,9,3CPU内部数据通路,CPU内部寄存器及ALU之
6、间通常用总线方式传送数据信息。介绍两种常见的结构。,(1)单总线数据通路结构,采用单总线结构的CPU数据通路,10,CPU数据通路结构只采用一组内总线,它是双向总线。通用寄存器组、其他寄存器和ALU均连在这组内总线上。,CPU内各寄存器间的数据传送必须通过内总线进行,ALU通过内总线得到操作数,其运算结果也经内总线输出。,(2)多组内总线结构,采用三总线结构的CPU数据通路,为了提高CPU的工作速度,一种方法是在CPU内部设置多组内总线,使几个数据传送操作能够同时进行,即实现部分并行操作。,11,3.1.2 指令执行过程,CPU的主要功能就是执行存放在存储器中的指令序列,即程序。,1指令的分段
7、执行过程,任何一条指令的执行都要经过读取指令、分析指令和执行指令3个阶段。,执行阶段还可细分为:,(1)取指令,(2)分析指令,(3)执行指令, 取操作数, 执行操作, 形成下一条指令地址,此外,CPU还应该对运行过程中出现的某些异常情况或输入/输出请求进行处理,12,2指令之间的衔接方式,指令之间的衔接方式有两种:串行的顺序安排方式与并行的重叠处理方式。,3.1.3 时序控制方式,执行一条指令的过程可分为几个阶段,而每一阶段又分为若干步基本操作,每一步操作则由控制器产生一些相应的控制信号实现。因此,每条指令都可分解为一个控制信号序列,指令的执行过程就是依次执行一个确定的控制信号序列的过程。,
8、时序控制方式就是指微操作与时序信号之间采取何种关系,它不仅直接决定时序信号的产生,也影响到控制器及其他部件的组成,以及指令的执行速度。,13,1同步控制方式,同步控制方式是指各项操作由统一的时序信号进行同步控制。,同步控制的基本特征是将操作时间分为若干长度相同的时钟周期(也称为节拍),要求在一个或几个时钟周期内完成各个微操作。在CPU内部通常是采用同步控制方式 。,同步控制方式的优点是时序关系简单,结构上易于集中,相应的设计和实现比较方便。,2同步控制方式的多级时序系统,(1)多级时序的概念,在同步控制方式中,通常将时序信号划分为几级(其中包括指令周期),称为多级时序。, 机器周期, 节拍(时
9、钟周期), 时钟脉冲信号,14,(2)多级时序信号之间的关系,三级时序信号之间的关系,15,(3)时序系统的组成,时序系统框图,16,三级时序体制(举例),一个指令周期分为若干机器周期(CPU周期);一个机器周期再划分为若干相等的时间段,每个时间段用一个电位信号来表示,称为节拍电位;在节拍中执行的微操作,需要同步定时脉冲来配合 ,称为工作脉冲。,17,时序部件,下图是组合逻辑控制器的时序部件结构图,由时钟源、启停控制逻辑、CPU周期信号发生器、节拍电位信号发生器、节拍脉冲(工作脉冲)发生器等部分组成。,时钟源用来为整个机器提供频率稳定的方波时钟脉冲信号,通常由石英晶体振荡器和与非门组成的正反馈
10、电路组成。,18,节拍脉冲信号发生器,触发器C1C0构成两位循环移位寄存器。开始时由清零信号CLR将C1C0清为00,然后在Clock上升沿和下降沿的作用下规律性地变化:00011110,译码后输出节拍脉冲P0、P1、P2、P3。,19,节拍电位信号发生器,节拍电位信号发生器可由循环移位寄存器组成。开始由清零信号CLR将移位寄存器清为0001,然后在脉冲信号clock作用下,按0001001001001000 规律变化,从而输出节拍电位T0、T1、T2、T3 。,20,CPU周期信号发生器,CPU周期信号一般设置单独的触发器表示,有几个周期就设置几个触发器。例如,某计算机系统设有取指令、取操作
11、数和执行三个CPU周期,便设立三个触发器分别表示。 每个CPU周期状态的建立信号由微操作信号发生器产生,而且是在上一个CPU周期的最后一个节拍脉冲信号的下降沿建立。,21,启停控制逻辑,计算机工作期间,要求时序信号必须是完整的。也就是说,不能从半个脉冲处开始工作;也不能在半个脉冲处结束工作。启停控制逻辑用来保证这一要求的实现。 因为T3的下降沿正是T0的上升沿,所以用T3信号作为Cr触发器的时钟端输入,就可以保证在T0的前沿开启时序部件工作,而在T3的后沿关闭时序部件。,22,时序控制方式,控制不同操作序列的时序信号的方法,称为时序控制方式。常用的控制方式有三种:同步控制、异步控制、联合控制,
12、其实质反映了时序信号的定时方式。 同步控制方式:用统一发出的时序信号对各项操作进行同步和控制,每个CPU周期中产生相同数目的节拍电位和工作脉冲。 异步控制方式:异步控制方式中没有统一的时钟信号,各部件按自身固有的速度工作。控制器发出某操作控制信号后,等待执行部件发回完成操作的 “回答”信号,再开始新的操作。 联合控制方式:联合控制是同步控制和异步控制相结合的方式。对大多数节拍数相近的指令,采用同步控制;而对于节拍数多的少数指令或节拍数不固定的指令,采用异步控制。,23,3.1.4 指令流水线,两段指令流水线,24,为获得进一步的加速,流水线可以分成更多的阶段。,取指令,计算操作数地址,译码指令
13、,写操作数,取操作数,执行指令,指令流水线操作时序图,影响流水线性能主要有以下几个因素: (1)若各个阶段不全是相等的时间 (2)流水线中的相关问题 (3)当遇到条件转移指令时 (4)当I/O设备有中断请求或机器有故障时,25,3.2 算术逻辑部件ALU和运算方法,算术逻辑部件ALU主要完成对二进制代码的定点算术运算和逻辑运算。,3.2.1 算术逻辑部件ALU,算术逻辑部件ALU的硬件实现涉及三个问题:,(1)如何构成一位二进制加法单元,即全加器。 (2)n位全加器连同进位信号传送逻辑,构成一个n位并行加法器。 (3)以加法器为核心,通过输入选择逻辑扩展为具有多种算术和逻辑运算功能的ALU。,
14、加法器(Adder)(补充),-实现两个二进制数之间的相加运算。,A : 1 1 0 1,B : 1 0 1 1,1,1,1,被加数,加数,低位进位,0,0,0,1,1,和S,进位C,加法器的功能,0,+,半加器逻辑推导,-不考虑低位进位的一位加法器,一位半加器,被加数A,加数B,和S,进位C,真值表,0 0,0 1,1 0,1 1,0,0,0,0,0,1,1,1,表达式,逻辑图,全加器逻辑推导,-考虑低位进位的一位加法器,一位全加器:,被加数,加数,和,进位,低位进位,设 为被加数、加数及和的第(i)位, 为(i)位向(i+1)位的进位。,真 值 表,0 0 0,0,0,0,0,0,0,0,
15、0,1,1,1,1,1,1,1,1,0 0 1,0 1 0,0 1 1,1 0 0,1 0 1,1 1 0,1 1 1,表达式:,全加器逻辑图,逻辑图,多位加法器,多位加法器,例:四位串行进位加法器,结构简单,加数、被加数并行输入,和数并行输出;,各位全加器间的进位需串行传递,速度较慢。,串行进位加法器,并行进位加法器,加法器(6),例:四位并行进位加法器,各位的进位输出信号只与两个相加数有关,而与低位进位信号无关。,加法器,由一位全加器的进位表达式:,绝对进位,相对进位,则:,四位加法器各位的进位为:,33,1全加器,用半加器构成的全加器,和,进位,目前,广泛采用半加器构成全加器。,通常逻辑
16、门电路都存在延迟时间,全加器电路就是一个延迟部件,正是这个延迟特性将影响全加器的速度。,34,2并行加法器与进位链结构,用n位全加器实现两个n位操作数各位同时相加,这种加法器称为并行加法器。并行加法器中全加器的位数与操作数的位数相同。,(1)基本进位公式,设相加的两个n位操作数为:,进位信号的逻辑式,可以看出C 由两部分组成:,我们定义两个辅助函数:,进位产生函数,进位传递函数,因此有:,35,(2)并行加法器的串行进位,采用串行进位的并行加法器,是将n个全加器串接起来,就可进行两个n位数相加。,由于串行进位的延迟时间较长,所以在ALU中很少采用纯串行进位的方式。但这种方式可节省器件,成本低,
17、在分组进位方式中局部采用有时也是可取的。,36,3并行进位(先行进位、同时进位),为了提高并行加法器的运算速度,就必须解决进位传递的问题。方法是让各级进位信号同时形成,而不是串行形成。,这种同时形成各位进位的方法称为并行进位或先行进位,又称为同时进位。,虽然并行进位加法器的运算速度快,但这是以增加硬件逻辑线路为代价的。两种常用的分组进位结构是:两种常用的分组进位结构是:,组内并行、组间串行的进位链。 组内并行、组间并行的进位链。,37,4ALU举例,SN74181框图,一位ALU单元,38,3.2.2 定点数运算方法,数值运算的核心是指加、减、乘、除四则算术。由于计算机中的数有定点和浮点两种表
18、示形式,因此相应有定点数的运算和浮点数的运算。,1定点加减运算,(1)原码加减运算,例如,加法指令指示做(+A)+(-B),由于一个操作数为负,实际操作是做减法(+A)-(+B),结果符号与绝对值大的符号相同。同理,在减法指令中指示做(+A)-(-B),实际操作是做加法(+A)+(+B),结果与被减数符号相同。,(2)补码加减运算, 补码加法运算,X +Y =X +Y , 补码减法运算,XY =X +(-Y ) =X +-Y ,39, 补码运算规则 根据以上讨论,可将补码加减规则归纳如下: 参加运算的操作数用补码表示。 符号位参加运算。 若指令操作码为加,则两数直接相加;若操作码为减, 则将减
19、数连同符号位一起变反加1后再与被减数相加。 运算结果用补码表示。,【例3-3】 X = 00110110,Y =11001101,求X+Y ,X-Y 。,(3) 溢出判别,例3-4 某机器字长为8位,采用补码表示,则定点整数的表示范围为-128+127.如果X =01000011,Y =01000100, 则X+Y =10000111, 结果是-121. 其实正确结果应该是+135,由于超出了补码数的表示范围,而产生溢出,从而导致结果错误。因此计算机必须判断是否产生溢出。一般两个异号数相加不会产生溢出,只有两个同号数相加才可能产生溢出。运算结果为正且大于所能表示的最大正数,称为正溢运算结果为负
20、且大于所能表示的最小负数,称为负溢,40,41,正溢,负溢,42,判断溢出的方法:,例.A有4位尾数,1位符号Sn数B有4位尾数,1位符号Sn,符号位参加运算,结果符号Sn 符号位进位Cn 尾数最高位进位Cn-1,43, 采用一个符号位判断,溢出= S +A B, 采用最高有效位的进位判断,溢出= C +C =C C, 采用变形补码判断(双符号位),用S 、Sn分别表示结果最高符号位和第2符号位,溢出=S S,44,2移位,移位操作按移位性质可分为3种类型:逻辑移位、循环移位和算术移位。,移位示意图,3定点数乘除运算,在计算机中实现定点数乘除法的三种方式: 软件实现 在原有ALU基础上增加线路
21、实现乘除法运算,8086就是这样 设置专用的乘除法器主要用于要求快速乘除运算的机器中,且设有专用的乘除指令 在此只讨论第二种方式 (1)无符号整数一位乘法,计算机中的乘法运算采用的方法是:将n位乘转换为n次“累加与移位”,即每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后右移一位。,手算(1101)x(1011)的过程1101 被乘数1011 乘数1101110100001101 10001111 乘积,46,【例3-10】 1101 1011的运算过程如图所示。,移位4次,右图是无符号整数一位乘的算法流程图。使用了3个寄存器A、B和C。B用来存放被乘数;C存放乘数;A初值为0
22、,然后存放部分积,最后存放乘积高位,C存乘积低位。乘数每乘一位该位代码就不再使用,因此用A和C寄存器联合右移以存放逐次增加的部分积,并且使每次操作依据的乘数位始终在C的最低位。乘法完成时,A与C存放的是最后乘积。,初始化:被乘数送入B、乘数送入C,A和Ca置0(进位触发器Ca保存每次累加的进位);,重复n个节拍的操作后所得到的乘积存放在A和C中。,由乘数位C0产生“加B/不加”(加0)信号,用以控制被乘数B是否与上次部分积相加产生本次部分积;,然后Ca、A、C一起右移一位;,无符号整数一位乘法硬件原理框图如下图所示。,(2)无符号整数一位除法,在计算机中实现除法运算,着重要解决如何判断够减与否
23、的问题,可以用以下两种办法: 用逻辑线路进行比较判别。将被除数或余数减去除数,如果够减就执行一次减法并商1,然后余数左移一位;如果不够减就商0,同时余数左移一位。这种方法的缺点是增加硬件代价。 直接做减法试探,不论是否够减,都将被除数或余数减去除数。若所得余数符号位为0(即正)表明够减,上商1;若余数符号位为1(即负)表明不够减,由于已做了减法,因此上商0并加上除数(即恢复余数);然后余数左移一位再做下一步。这就是恢复余数法。,通过分析恢复余数法可以发现:当余数A为正时,上商1,下一步A左移一位再减除数B,相当于执行2A-B的运算;若余数A为负,上商0,并加除数以恢复余数即A+B,下一步左移一
24、位减去除数B,这实际相当于执行 2(A+B)- B = 2A+B故在出现不够减时,并不需要恢复余数,只是下一步要进行2A+B的操作,因此称为不恢复余数法或加减交替法。n位除数存放在B中,2n位被除数存放在A和C中。除法完成后商放在C中,余数放在A中。在重复n-1次操作后,如果A中的余数为负,需要恢复余数做A+B。最后的寄存器A中应获得正确的正余数。,【例3-11】 用不恢复余数法计算000010000011。,解:A、C:00001000; B补:0011;-B补:1101。 其运算过程如右图。,1,53,3.2.3 浮点数运算方法,1浮点数加减运算,设有两个浮点数:X=Mx ,Y=My 。要
25、实现X +Y的运算,需要以下4个步骤才能完成。, 对阶操作 对阶的规则是:阶码小的数向阶码大的数对齐, 实现尾数的加(减)运算, 结果规格化和判溢出,a左规,b右规,若运算结果是非规格化的数,例如尾数是11.1xx或00.0xx形式,就需要将尾数左移,每左移一位,阶码减1,直至满足规格化条件为止(即尾数最高有效位的真值为1,或尾数符与最高有效位不等),这个过程称为左规。在左规的同时应判断结果是否会下溢,即阶码小于所能表示的最小负数。,若运算结果尾数发生溢出,例如尾数为10.xxx或01.xxx形式,这并不表明浮点结果会溢出,此时需调整阶码,将尾数右移一位,阶码加1,称为右规。右规时,应判断结果
26、是否会上溢,即阶码大于所能表示的最大正数。, 舍入操作,对阶方法 一般用减法进行阶码比较 即: 若 表示两数阶码相等,不需要对阶。若 则将原来阶码小的尾数右移 位。尾数右移时,对原码形式的尾数,符号位不参加移位,尾数最高位补0;对于补码形式的尾数,符号位保持不变并参加右移。 另外,尾数右移后,应对移掉的最低位进行舍入,常用截断法、恒置1法或0舍1入法,54,变形补码判断,一个符号位只能表示正、负两种情况,当产生溢出时会使符号位的含义产生混乱。可以将符号位扩充为两位,称为变形补码。由于采用变形补码表示计算结果,就可根据两个符号位是否一致来判断是否发生溢出。 举例:63+66=129(正溢)(-6
27、3)+(-66)=-129(负溢)00,0111111 11,1000001+00,1000000 +11,011111001,0000001 110,1111111 自然丢失 00 结果为正,无溢出;01 结果正溢出;10 结果负溢出;11 结果为负,无溢出,55,显然,当结果的两个符号位不同时,表示发生溢出,若用 、 分别表示结果最高符号位和第二个符号位,可得判断溢出的又一个逻辑式:溢出=通过分析发现,不论结果是否溢出,第一符号位总能指示结果的正确符号若采用双符号位方案,操作数及结果在寄存器中仍用一个符号位,只是在运算时扩充为双符号位而第二个符号位实际上就是计算机中状态寄存器的溢出位V,而
28、这个标志位有直接的指令支持。,56,57,下面举一个浮点加的实例。【例3-12】 设有两个浮点数X=2 0.1101012,Y=2 (-0.101011)2。,阶码 尾数 X浮=11,10; 00.110101 Y浮=11,11; 11.010101, 对阶,E =EX +-EY =1110+0001=1111,即E =-1,将MX右移一位,其阶码加1,得,=11,11;00.011011(用0舍1入法), 尾数求和,00.011011 + 11.01010111.110000, 规格化及判溢出,左规得,X+Y浮=1110;11.10000, 舍入 由于是左规,结果不需要舍入。,最后运算结果的
29、真值为 X+Y=2 (-0.100000)2。,58,2浮点数乘除运算,(1)浮点数乘法运算, 阶码相加并判溢出, 尾数相乘, 规格化处理,(2)浮点数除法运算, 求阶差, 尾数相除, 预置 检测被除数是否为0,若为0则置商为0。如果除数为0,则置0除数标志,转中断处理。, 尾数调整,59,3.2.4 十进制数加减运算,1进制转换,2直接进行十进制数运算,机器内部所处理的十进制数采用二-十进制数(BCD码)表示形式,其运算由BCD码运算指令完成。目前,计算机实现BCD码运算的方法有两种:, 机器的指令系统中设有专用进行BCD码加、减、乘、除的运算指令。, 先用二进制数的加、减、乘、除指令进行运
30、算,紧接着用BCD码校正指令对运算结果进行校正。,3BCD码的加法运算,在BCD码中,每位十进制数与小于或等于9的二进制数相同,但求得的和可能大于9,因而需要校正。,60,3.3 CPU模型机的组成及其数据通路,3.3.1 模型机的基本组成,模型机数据通路结构图,61,3.3.1 基本组成,1寄存器,(1)可编程寄存器,通用寄存器有4个:R0、R1、R2、R3;堆栈指针为SP;程序状态字寄存器为PSW;程序计数器为PC。,(2)暂存器,暂存器有3个:C、D、Z 。,(3)指令寄存器IR,指令寄存器IR用来存放当前正在执行的一条指令。,(4)与主存接口的寄存器MAR、MDR,CPU对主存的控制信
31、号有两个:读信号RD控制对主存的读操作;写信号WR控制对主存的写操作。,本节的学习目标是通过学习模型机的设计掌握计算机的设计原理和指令系统的执行原理。本模型机字长16位,采用16位地址总线,集成加法、减法及逻辑指令,集成14大类指令,6种寻址方式,采用固定长度操作码,固定字长指令,固定周期指令。,62,2运算部件,ALU的输入A来自暂存器D,输入B来自ALU总线,运算结果输出到Z 。控制ALU运算的控制信号有:ADD、SUB、AND、OR、XOR、COM、NEG、A+1、A-1、B+1、B-1,它们分别控制ALU完成加、减、与、或、异或、求负、求反等运算。,3总线与数据通路结构,(1)ALU
32、总线,CPU内部采用单总线结构,即设置一组ALU总线(也称为CPU内总线),由16根双向数据传送线组成,ALU和所有寄存器通过这组公共总线连接起来。,(2)系统总线,模型机的CPU、存储器及I/O设备分别挂接在一组系统总线上。系统总线包括:16根地址总线、16根数据总线,以及控制总线。为简单起见,模型机采用同步控制方式。,4控制器及微命令,微命令也称微操作命令通常是指直接作用于部件或控制门电路控制端的控制信号。通常是1/0,也可以称为高电平/低电平 或 有脉冲/无脉冲。例如:打开或关闭一个三态门的电位信号,或是对寄存器的打入、置位复位的脉冲信号。脉冲信号:脉冲未出现时信号电平为0V;出现时为5
33、V。脉冲需要维持的时间长短取决于硬件的速度。实质上脉冲信号是利用电平的跃变而形成的。电位信号:也称电平信号;是指用电位的高低来区分信息。5V表示1,0V表示0一些电路需要电平信号,例如门电路;而另一些电路需要脉冲信号,例如触发器。,63,64,(1)微命令的基本形式,在模型机中,微命令有两种形式。, 电位型微命令 各寄存器输出到ALU总线的控制信号有:R0OUT、R1OUT、PCOUT、SPOUT、MDROUT等。 ALU运算控制信号有:ADD、SUB、AND、OR、XOR、COM、NEG、A+1、A-1、B+1、B-1。 暂存器D的左移/右移控制信号有:SAL、SAR。 程序计数器PC的计数
34、控制信号有:PC+1。 MAR和MDR输出到系统总线的控制信号有:EMAR、EMDR。 寄存器置入控制信号有:SMDR、SPSW。 主存的读/写信号有:RD、WR。 脉冲型微命令 脉冲型微命令有:CPR0、CPR1、CPPC、CPIR、CPSP、CPMAR、CPMDR等。,备注:所有这些微命令都是计算机CPU的主要部件控制器的设计依据。控制器的设计目标就是按时序和指令节拍任务分配完成有效地控制。,65,(2)控制器,传统控制器的主要部件包括:指令寄存器IR、指令译码器、程序计数器PC、状态字寄存器PSW、时序系统和微操作信号发生器。,控制器是整机的指挥中心,其基本功能就是分析执行指令,即根据指
35、令产生控制信号序列以控制相应部件分步完成指定的操作。,66,3.3.2 模型机数据传送操作分析,1寄存器之间的数据传送,在计算机最频繁的传送数据是在寄存器之间。在模型机中,寄存器之间可直接通过ALU总线传送数据,具体传送由输出门和打入脉冲控制。,例如 :把寄存器R1的内容传送到寄存器R3,即实现传送操作R1R3所需控制信号为R1OUT、CPR3,67,2主存数据传送到CPU,主存与CPU之间通过系统总线传送数据。例如:要从存储器中取指令到指令寄存器IR,通过以下操作序列即可实现:, PCMAR ;PC中的指令地址送存储器地址寄存器 MMDRIR ;从存储器中读指令到IR,实现PCMAR的控制信
36、号:PCOUT、CPMAR 实现读操作MMDR的控制信号:EMAR、RD、SMDR 实现MDRIR的控制信号:MDROUT、CPIR,68,3CPU数据传送到主存, R1MAR ;地址送MAR R2MDR ;数据送MDR MDRM ;数据写入主存,例如:在R2中存放需写入主存的数据,存储单元地址在R1中,则写一个数据到存储器可通过以下操作序列实现:,实现R1MAR的控制信号:R1OUT、CPMAR 实现R2MDR的控制信号为R2OUT、CPMDR 实现写操作MDRM的控制信号为EMAR、EMDR、WR,69,4执行算术或逻辑操作, R1D ;把R1的内容先送到寄存器D D+ R2Z ;R2内容
37、送到ALU的B端与D内容通过ALU相加,结果送Z ZR3 ;将存放在Z中的相加结果送入R3中,例如:完成“把寄存器R1和R2的内容相加,结果送到R3”这个功能,需要分成3步执行:,实现R1D的控制信号:R1OUT、CPD 实现D + R2MDR的控制信号:R2OUT、ADD、CPZ 实现ZR3的控制信号:ZOUT、CPR3,70,3.4 组合逻辑控制器设计原理,组合逻辑控制器,又称硬布线方案控制器,是用组合逻辑的门电路实现控制信号。 组合逻辑控制器是指产生控制信号(即微命令)的部件,是用组合逻辑线路来实现。在模型机中有几十个微命令,则每个微命令都需要一组逻辑门电路,根据相应的逻辑条件(如指令的
38、操作码、寻址方式、时序信号等)产生该微命令。,本节先设计模型机的指令系统,然后设计模型机的组合逻辑控制器,以及其时序系统、指令执行流程及微命令的产生与综合。,1、组合逻辑控制器的基本组成 2、组合逻辑控制器的设计步骤,71,1、组合逻辑控制器的基本组成(1)指令寄存器:用来存放正在执行的指令。指令分成两部分:操作码和地址码。操作码用来指示指令的操作性质,如加法、减法等;地址码给出本条指令的操作数地址或形成操作数地址的有关信息(这时通过地址形成电路来形成操作数地址)。有一种指令称为转移指令,它用来改变指令的正常执行顺序,这种指令的地址码部分给出的是要转去执行的指令的地址。(2)操作码译码器:用来
39、对指令的操作码进行译码,产生相应的控制电平,完成分析指令的作用。(3)时序电路:用来产生时间标志信号。在微型计算机中,时间标志信号一般为三级:指令周期、总线周期和时钟周期。微操作令产生电路产生完成指令规定操作的各种微操作命令。这些命令产生的主要依据是时间标志和指 控制器令的操作性质。该电路实际是各微操作控制信号表达式(如上面的AL表达式)的电路实现,它是组合逻辑控制器中最为复杂的部分。(4)指令计数器:用来形成下一条要执行的指令的地址。通常,指令是顺序执行的,而指令在存储器中是顺序存放的。所以,一般情况下,下一条要执行的指令地址可通过将现行地址加1形成,微操作命令“1”就用于这个目的。如果执行
40、的是转移指令,则下一条要执行指令的地址是要转移到的地址。该地址就在本转移指令的地址码字段,因此将其直接送往指令计数器。 微程序控制器的提出是因为组合逻辑控制器设计存在不便于设计、不灵活、不易修改和扩充等缺点。,72,2、组合逻辑控制器的设计步骤设计机器的指令系统:规定指令的种类、指令的条数以及每一条指令的格式和作用。初步的总体设计:如寄存器设置、总线安排、运算器设计、部件间的连接关系等。绘制指令流程图:标出每一条指令在什么时间、什么部件进行何种操作。编排操作时间表:即根据指令流程图分解各操作为微命令,按时间段列出机器应进行的微命令。列出微操作信号表达式,化简,电路实现。,73,3.4.1 模型
41、机的指令系统设计,1指令格式,(1)双操作数指令: 其格式如下图所示,第1215位表示操作码,第611位为源操作数地址段,第05位为目的操作数地址段,在每个地址段字段中又分为两部分,其中3位表明寻址方式类型,另外3位给出所指定的寄存器编号。,前面已经给出了模型机的数据通路结构图和所有的微命令列表。下面就要根据我们的需要来设计指令系统。设计步骤如下:,74,可编程寄存器有7个,编号如下(留有一种编码未用,可扩展): 通用寄存器R0R3 000011 堆栈指针SP 100 程序状态字PSW 101 程序计数器PC 111 暂存器没有地址,用户不能存取,只能系统自动使用。,75,(2)单操作数指令,
42、第05位为地址字段,第611位空闲不用, 也可供扩展操作码用。,76,(3)转移指令,第1215位为操作码,第611位给出转移地址字段(也分为寻址方式与寄存器号两部分)。第05位则为转移条件字段。其中,第03位中有一位为1,表明转移条件进位C、溢出V、结果为零Z、结果为负N。第5位表明转移方式,若为0,表示相关标志位为0转移;若为1,表示相关标志位为1转移。若第05位全为0,表示无条件转移。,77,2寻址方式,模型机的编址为按字编址,字长16位,即主存每个单元16位。采用简单变字长指令格式,指令长度可为16位、32位(指令中含立即数或一个操作数地址)或48位(含2个操作数地址),操作数字长16
43、位。模型机寻址方式 如下表:,78, 0型 寄存器寻址方式,寻址字段编码000,汇编符号R,定义为:操作数在指定寄存器中。 1型 寄存器间接寻址方式,寻址字段编码为001,汇编符号为(R),定义为:操作数地址在指定寄存器中(或者说:寄存器的内容是操作数的地址),再按此地址访问主存,从主存读取操作数。 2型 自减型寄存器间接寻址方式,寻址字段编码为010,汇编符号为-(R),定义为:将寄存器内容减1后作为操作数地址,再按地址访问主存,从主存中读取操作数(先减后操作)。如果指定的寄存器是SP,则用于压栈操作如果指定寄存器为R0R3,则可将指定寄存器当做反向指针使用;或将它作为堆栈指针,为临时软件建
44、栈用。,79, 3型 立即/自增型寄存器间接寻址方式,寻址方式字段编码为011,汇编符号为(R)+,定义为:操作数的地址在指定寄存器中,先将这个地址送到地址总线上存取操作数,再把寄存器内容加1。这里采用合并优化技巧,即利用指定寄存器的不同,派生出立即寻址和自增型寄存器间接寻址两种方式。如果指定的寄存器为PC,为立即寻址,立即数紧跟着指令。编程时将立即数存放在紧跟指令的单元中,取指后(PC)+1-PC,将修改后的PC内容作为地址,可读取立即数。取出立即数后PC再加1,指向立即数之后的一个单元,即下一条指令。如果指定的寄存器是SP,这种自增型寄存器间接方式可以作为堆栈操作的寻址方式。如果指定的寄存
45、器为R0R3,则可将指定寄存器当做正向指针使用,或将它当成堆栈指针,用作临时软件建栈。,80, 4型 直接寻址方式,寻址字段编码为100,汇编符号为DI。定义为:操作数地址紧跟着指令,编程时将操作数地址存放在紧跟着指令的单元中,取指后PC+1,将修改后的PC内容作为地址,据此访问紧跟着当前指令的存储单元,从中取得操作数地址(称为绝对地址),据此再度访存,读得操作数,然后PC+1 5型 变址方式,寻址方式字段编码为101,汇编符号为X(R),其中X是变址的一种习惯标注符号。定义为:指定变址寄存器内容与紧跟指令的位移量相加,其结果为操作数地址,即从指定寄存器中取得变址量,从紧跟当前指令的存储单元中
46、读取位移量,二者之和为操作数地址,再据此访存,读得操作数。这里也采用了合并优化,如果指定的寄存器是程序计数器PC,这就是相对寻址。取指后PC+1,以修改后的PC内容为地址,从紧跟当前指令的存储单元中读取位移量,再与PC内容相加,获得操作数地址。因此操作数地址是以PC值为基准,加上位移量形成的。如果这段程序存在另一块存储区中,地址的相对关系不变。如果指定的寄存器为R0R3,这就是常规的变址方式。,81,3设计的指令类型,操作码共4位,现设置14种指令,余下两种操作码组合可供扩展。,(1)传送指令,MOV传送,操作码0000。,(2)双操作数算术逻辑指令,ADD加,操作码0001(带进位)。 SU
47、B减,操作码0010(带进位)。 AND逻辑与,操作码0011。 OR 逻辑或,操作码0100。 EOR逻辑异或,操作码0101。,(3)单操作数算术逻辑指令,COM求反,操作码0110。 NEG求补,操作码0111。 INC加1,操作码1000。 DEC减1,操作码1001。 SL 左移,操作码1010。 SR 右移,操作码1011。,82,(4)程序控制类指令, 转移指令JMP,操作码1100。,如上表所示,JMP指令第30位选择一位为1,表明以PSW中的某一特征作为转移条件。因此,JMP指令第30位的含义与PSW第30位含义分别相对应。例如PSW第0位是进位位C,而转移指令第0位若为1,
48、则表明以进位状态为转移条件。JMP指令第5位(IR5)决定转移条件为0转,还是为1转。若JMP指令第50位全为0,则表示无条件转移。,83, 返回指令RST,操作码1100。,RST指令与JMP指令的操作码相同,可视为一条指令。RST指令只能采用自增型寄存器间址表明转移地址,并指定寄存器为SP,即寻址方式为(SP)+。它从堆栈中取出返回地址,然后修改堆栈指针SP+1。实际上,“JMP(SP)+”指令就是一条RST指令。, 转子指令JSR,操作码1101。,执行JSR指令时,先将返回地址压栈保存,然后按寻址方式找到转移地址(即子程序入口地址),将它送入PC中。,总结:指令字段代码的分配依据自己的需求进行设置,本模型机操作码字段固定为4位,最多可以设计16条指令,目前只设计了14条指令,还有两个码位1110和1111没有使用,可以使用这两个码位用于扩展。源和目的字段也都留了相应的码位,用于扩展系统的资源和扩展CPU的能力。,