资源简介 (共243张PPT)第6章 控 制 器6.1 CPU的功能和组成6.2 控制器的时序系统和控制方式6.3 指令流程图6.4 微程序控制器6.5 组合逻辑控制器6.6 门阵列控制器6.7 流水线处理技术6.8 多媒体技术6.9 典型CPU简介关联习题6.1 CPU的功能和组成6.1.1 CPU的功能 CPU由运算器和控制器两大部分组成,其基本任务是执行程序,而程序是指令的有序集合,因此,CPU的基本功能体现在两个方面:一方面是如何保证程序中指令执行顺序的正确,另一方面是如何实现一条指令的功能。其具体功能如下: 1.指令控制 按照冯·诺依曼“存储程序”的思想,程序被装入主存后,计算机应能按其预先设定的要求有条不紊地执行指令,才可完成具体的任务。因此,严格控制程序的执行顺序,是CPU的首要任务。指令控制能实现对程序中指令的执行顺序进行控制。程序中的指令有两大类,一是顺序执行的指令,二是转移指令。对于顺序执行的指令,当CPU执行完此指令后,该指令下面的一条指令便是CPU要执行的下一条指令,由于程序的连续存放,可以通过设置一个程序计数器PC或指令指针(Program Counter)进行控制,且PC具有自动加1的功能,因此,PC始终指向的是下一条CPU将要执行的指令。 对于转移指令,当CPU执行完此指令后,将转移的目的指令所在的地址送PC,便可实现转移指令的正确转移。 2.操作控制 一条指令的执行要涉及到计算机中的若干个部件。指令不同,控制完成指令的功能所涉及的部件不同,控制这些部件就需要各种不同的操作控制信号。因此,一条指令对应一组操作控制信号。指令不同,指令的操作码不同,指令所对应的一组操作控制信号也就不同。因此,操作控制是对指令的操作码进行译码来产生该指令所需要的一组操作控制信号。 3.时序控制 在操作控制的基础上,需要对各种操作控制信号的产生时间、稳定时间、撤销时间及相互之间的关系进行严格控制,因为指令所对应的一组操作控制信号并不是同时作用于相应的各个部件。这种对操作控制信号施加时间上的控制,称为时序控制。实现时序控制需要设置时序产生器和操作控制器。只有严格地进行时序控制,才能保证各功能部件组合构成有机的计算机系统。 4.数据加工 数据加工是对数据进行算术运算和逻辑运算,它是CPU的根本任务,也是运算器的基本功能,而运算器是CPU组成的一个部分,因此,数据加工不可避免地会涉及到运算器和寄存器。6.1.2 CPU的基本组成 CPU是运算器和控制器的总称,它既具有运算器的功能,又具有控制器的功能。欲实现控制器的功能,则控制器应由程序计数器PC(Program Counter)、指令寄存器IR(Instrack Register)、指令译码器、时序产生器和操作控制器组成。欲实现运算器的功能,则运算器应由算术逻辑单元ALU、累加寄存器(简称累加器AC(Accunulator))、数据缓冲寄存器DR(Data Register)、状态寄存器SR(Stru Register)组成。CPU主要组成部件逻辑结构示意图如图6-1所示。图6-1 CPU主要组成部件逻辑结构示意图 1.指令的执行过程 1) 取指令 根据指令所在存储器单元的地址(由PC提供),将PC中的指令地址送AR,此后,PC自动加1,AR的内容经地址总线和地址译码器选中指令所在的存储单元,CPU发出读命令,将该指令从主存中取出,经数据总线送到DR中,由于所取的是指令而不是数据,因此,再将DR中的指令送往IR,从而完成取指令。由此可见: (1) 所有指令的取指令阶段是完全相同的; (2) CPU当前正在执行的指令是指令寄存器中的指令; (3) PC始终指向的是下一条CPU将要执行的指令。 2) 分析指令 对IR中指令的操作码进行译码分析,产生该指令所需要的一组操作控制信号(译码信号),再经时序产生器和操作控制器形成时序控制信号(控制命令);通过对IR中指令的地址码进行分析,形成操作对象(操作数)的有效地址,并按此地址去读取操作数或形成转移地址,以实现程序的转移。 3) 执行指令 时序控制信号(控制命令)作用于相应的各个部件,使各个部件产生相应的动作,从而完成指令的功能,并根据需要,保存操作结果。 一条指令执行结束,若没有异常情况和特殊请求,则按程序顺序,再取出并执行下一条指令。控制器就是按取指令、分析指令、执行指令这样的步骤进行周而复始的控制过程,直到完成程序所规定的任务并停机为止。 2.CPU内部寄存器 CPU内部寄存器用以保存运算和控制过程中的中间结果、最后结果和控制状态信息。不同的CPU,其内部寄存器可能有所差异,但不论是哪一种CPU,其内部寄存器至少要有以下六类寄存器。 1) 数据缓冲寄存器DR 数据缓冲寄存器用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中。数据缓冲寄存器的作用是:? (1) 作为CPU和内存、外部设备之间信息传送的中转站; (2) 补偿CPU和内存、外围设备之间在操作速度上的差别; (3) 在单累加器结构的运算器中,数据缓冲寄存器还可兼作操作数寄存器 2) 指令寄存器IR 指令寄存器用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。 3) 程序计数器PC 为了保证程序中指令执行顺序的正确,CPU必须设置一个计数器,用来指示CPU将要执行的下一条指令,起这种作用的计数器通常称为指令计数器,简称PC。在程序开始执行前,必须将程序的起始地址装入PC,即程序的一条指令所在内存单元地址送入PC。当执行指令时,CPU将自动修改PC的内容,使其保持的总是将要执行的下一条指令的地址,由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC加1。但是,当遇到转移指令时,后继指令的地址(即PC的内容)必须从指令的地址码取得,在这种情况下,下一条从内存取出的指令将由转移指令来规定,不同于顺序指令只是简单地对PC加1。因此,程序计数器的结构应当是具有寄存和计数两种功能的结构。 4) 地址寄存器AR 地址寄存器用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以,必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。当CPU访问主存时,即CPU对主存存/取数据或者CPU从主存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,当CPU访问外设时,同样要使用地址寄存器和数据缓冲寄存器。 5) 累加器AC 累加器是累加寄存器的简称,是一个通用寄存器。其功能是:当运算器进行算术或逻辑运算时,累加器一方面作为ALU的一个输入端,为ALU提供一个操作数;另一方面作为ALU的一个输出端,用来存放ALU运算的结果。显然,运算器中至少要有一个累加器,当运算器内部只有一个累加器时,我们称之为单累加器结构的运算器或CPU。目前,CPU中的累加器多达16个、32个甚至更多,当使用多个累加器时,就变成通用寄存器堆结构,其中任何一个既可存放源操作数,也可存放目的操作数。 6) 状态寄存器SR 状态寄存器也称为程序状态字,简称PSW,用来保存CPU在执行算术指令和逻辑指令时建立的各种条件码内容,如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为零标志(Z)、运算结果为负标志(N)等等。这些标志位通常分别由 1位触发器保存。除此之外,状态寄存器还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器工作状态和程序运行状态。因此,状态寄存器是一个由各种状态条件标志拼凑而成的寄存器。 3.控制器的分类 根据时序控制信号或控制命令产生方法的不同,可以将控制器分为组合逻辑控制器、微程序控制器和门阵列控制器三种。本章将重点讨论组合逻辑控制器和微程序控制器。 1) 组合逻辑控制器 组合逻辑控制器是采用组合逻辑技术来产生控制命令,是分立元件时代的产物,其最大优点是速度快,但结构不规整,设计、调试和维修较困难,难以实现设计自动化,目前只有一些巨型机和RISC机为了追求高速度仍采用组合逻辑控制器。 2) 微程序控制器 微程序控制器是采用存储逻辑来产生控制命令,它是将控制命令代码化,机器指令转化成一段微程序,并存于控制存储器中,通过执行控存中的微程序来产生机器指令所需的一组控制命令。它与组合逻辑控制器的设计思想截然不同,微程序控制器设计规整,调试、维修以及更改、扩充指令方便,易于实现自动化设计,已成为当前控制器的主流。 3) 门阵列控制器 门阵列控制器实质上也是一种组合逻辑控制器,但它与传统的组合逻辑控制器不同,它是程序可编的,并吸收了前两种控制器的设计思想,被广泛应用于嵌入式系统。6.2 控制器的时序系统和控制方式6.2.1 有关周期的基本概念 1. 指令周期 指令周期是指从取指令、分析指令到执行完该指令所需的全部时间。一个指令周期一般包含若干个CPU周期。由于指令的操作功能不同,有的简单,有的复杂,因此不同指令的指令周期不尽相同。 2. CPU周期 一个CPU周期又称一个机器周期,与机器的一个基本操作相对应,结合机器的基本操作,一般机器的CPU周期有取指周期、取数周期、执行周期、中断周期等。由于CPU内部的操作速度较快,而CPU访问一次内存所花的时间较长,因此,通常用从内存读取一条指令字的最短时间来规定CPU周期。 3.节拍 在一个CPU周期内要完成一个基本操作,由于一个基本操作又包含若干个微操作,这些微操作不但需要占用一定的时间,而且有一定的先后次序。因此,需要把一个CPU周期等分成若干个时间小段,每一小段称为一个节拍,一个节拍对应一个电位信号,控制一个或几个微操作的执行。 4.脉冲 在一个节拍内,有时还需要设置一个或几个工作脉冲,工作脉冲也称为时钟周期或T周期。 上述指令周期、CPU周期、时钟周期间的关系如图6-2所示。一个指令周期包含两个CPU周期,每个CPU周期包含四个时钟周期。图6-2 指令周期、CPU周期、时钟周期间的关系6.2.2 时序信号与体制 时序信号是对操作控制信号实施时间控制而形成的信号,是利用定时脉冲的顺序和不同的脉冲间隔,有条理、有节奏地指挥机器的动作,规定在这个脉冲到来时做什么,在那个脉冲到来时又做什么,给计算机各部分提供工作所需的时间标志。为此,需要采用周期、节拍、脉冲多级时序体制。 至于计算机内存中所存放的二进制形式的指令和数据的区分问题,我们可以从两个层面上进行区分,一是从时间上来说,取指令是发生在指令周期的第一个CPU周期中,即发生在“取指令”阶段,而取数据是发生在指令周期的后面几个CPU周期中,即发生在“执行指令”阶段;二是从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。由此可见,时间控制对计算机来说是十分重要,计算机的协调动作需要时间标志,而时间标志则是用时序信号来体现的,控制器所产生的各种控制信号都是时间因素(时序信号)和空间因素(部件)的函数。 时序信号最基本的体制是电位—脉冲制,该体制下最容易理解的例子是寄存器之间的数据传送,数据加在触发器的电位输入端,用电位的高低来表示数据是“1”还是“0”;而打入数据的控制信号加在触发器的时钟输入端,且要求打入数据的控制信号到来之前,电位信号必须是稳定的,只有电位信号先建立,打入到寄存器中的数据才是可靠的。 在组合逻辑控制器中,时序信号的体制往往采用周期—节拍—脉冲三级体制,即一个CPU周期包含多个节拍,每个节拍又允许包含多个脉冲。图6-3中,一个CPU周期包含4个节拍,每个节拍又包含1个脉冲。图6-3 节拍与脉冲之间的时序关系 在微程序控制器中,时序信号比较简单,一般采用节拍—脉冲二级体制。6.2.3 时序信号发生器 时序信号发生器的电路是不相同的,组合逻辑控制器的时序电路复杂,而微程序控制器的时序电路简单,但无论哪一种控制器,其内部的时序信号发生器最基本的构成都是一样的,是由时钟源、环形脉冲发生器、节拍脉冲和读写时序译码逻辑、启停控制逻辑等部分组成的,如图6-4所示。图6-4 时序信号发生器组成 1.时钟源 时钟源用来为环形脉冲发生器提供频率稳定且电平匹配的方波时钟脉冲信号。它通常由石英晶体振荡器和与非门组成的正反馈振荡电路组成,其输出送至环形脉冲发生器。? 2.环形脉冲发生器 环形脉冲发生器用来产生一组有序的间隔相等或不等的脉冲序列,以便通过译码电路来产生最后所需的节拍脉冲。为了在节拍脉冲上不带干扰毛刺,环形脉冲发生器通常采用循环移位寄存器形式。典型的环形脉冲发生器及其译码逻辑如图6-5所示。图6-5 环形脉冲发生器及其译码逻辑 假设时钟源产生的时钟信号为5 MHz(时钟周期200 ns),当控制台发出总清信号使触发器C4置“1”时,门3打开,第一个正脉冲f 通过门3,使触发器C1~C3清“0”。经过半个脉冲周期(100 ns)的延迟,触发器C4由“1”状态翻到“0”状态,再经半个脉冲周期(100 ns)的延迟,第二个正脉冲的上升沿(即第一个f 的后沿)作移位信号,使触发器C1~C3变为“100”状态。此后,第二个f 、第三个f 连续通过门2形成移位信号,使触发器C1~C3相继变为“110”、“111”状态。当C3变为“1”状态时,对应第四个正脉冲,其状态便反映到触发器C4的D端,因而第四个正脉冲的下降沿又将C4置“1”,门3再次打开,第五个正脉冲便通过门3,形成清“0”脉冲,使触发器C1~C3清“0”。于是下一个循环再度开始。其过程如图6-3所示。 3.节拍脉冲和读/写时序的译码 节拍脉冲和读/写时序的译码逻辑如图6-5的上半部所示。假设一个CPU周期产生4个等间隔的节拍,根据图6-3节拍与脉冲之间的时序关系,其译码逻辑可表示为: 需要注意的是: (1) 节拍脉冲间的逻辑关系。图6-6 启停控制逻辑节拍 、 、 、与图6-3中的节拍T1、T2、T3、T4在逻辑关系上完全相同,只是后者是经过启停控制逻辑中的与门输出的。 (2) 节拍脉冲宽度。一个CPU周期为800 ns,在周期—节拍—脉冲三级体制中,一个CPU周期包含4个节拍,每一个节拍包含一个脉冲(时钟周期),因此,节拍 、 、 、 的脉冲宽度均为200 ns。 (3) 读/写控制信号。由图6-3可以看出,信号RD/WE的持续时间为一个CPU周期。根据图6-4,可知信号RD°/WE°受控于信号RD/WE,只有当RD/WE有效后才会产生RD°/WE°,结合图6-6,读/写信号RD/WE是RD°/WE°经过启停控制逻辑中的与非门输出的。 4.启停控制逻辑 启停控制逻辑电路如图6-6所示。其核心是触发器Cr,当触发器Cr为“1”时,原始的节拍 、 、 、 和读/写时序信号RD°/WE°通过门电路转变为CPU真正需要的节拍T1、T2、T3、T4和读/写时序信号RD/WE;否则,当触发器Cr为“0”时,将关闭时序信号发生器。为了保证时序信号发生器产生完整的脉冲,在T1的前沿启动时序信号发生器,在T4的后沿关闭时序信号发生器,在触发器Cr的下面加上一个RS触发器,且用作为触发器Cr的时钟控制端。6.2.4 控制方式 控制方式是指对各种操作在时间上所进行的控制,其实质反映了时序信号的定时方式。常用的控制方式有同步控制、异步控制和联合控制。 1.同步控制方式同步控制方式是指任何指令的执行或指令中各个具体操作的执行均由确定统一的时间基准信号所控制,尽管指令功能不同,但在同步控制方式下,指令在执行时所需的机器周期数和时钟周期数都固定不变,即完全同步控制方式。此方式的优点是时序关系简单、控制方便,但会造成大量时间的浪费。这是因为大多数简单指令的很多节拍是不用的,处于等待状态。因此,在实际应用中往往采取折中的方案。常用以下几种方法。 1) 采用中央控制与局部控制相结合的方法 根据周期—节拍—脉冲三级体制,一个CPU周期包含多个节拍。大多数指令的CPU周期均采用统一的节拍,称为中央控制;对于少数在统一节拍内不能完成的指令,需要延长节拍或增加节拍,使之在延长节拍内完成指令,并再返回到中央控制,这种通过延长节拍或增加节拍来控制完成指令称为局部控制。 2) 采用不同的机器周期和延长节拍的方法 不同指令的指令周期可以划分为若干个CPU周期,如取指、取数、执行等周期,根据执行指令的需要,可选取不同的CPU周期数。在节拍安排上,每个CPU周期划分为固定的节拍,每个节拍都可根据需要延长一个节拍。 3) 采用分散节拍的方法 分散节拍方法是指操作需要多少节拍,时序发生器就产生多少节拍,这样可以做到完全避免节拍轮空,是提高指令运行速度的有效方法,但这种方法会使时序发生器复杂化,同时也无法解决节拍内那些简单操作因等待所浪费的时间。 2.异步控制方式 异步控制方式是根据每条指令或每个操作的实际需要,需要多少时间就分配多少时间。这意味着每条指令的指令周期可由不等的机器周期数组成;也可以是当控制器发出某一操作控制信号后,等待执行部件完成操作后发“回答”信号,再开始新的操作。显然,用这种方式形成的操作控制序列没有固定的CPU周期数(节拍电位)或严格的时钟周期(节拍脉冲)与之同步。 3.联合控制方式 联合控制方式是同步控制与异步控制相结合的方式。现代计算机中没有完全采用同步或完全采用异步的控制方式,大多数都采用联合控制方式,即在功能部件内部采用同步控制方式或以同步控制方式为主的控制方式,在功能部件之间采用异步控制方式。6.3 指 令 流 程 图 指令流程图是控制器设计的基础,是用方框图语言来表示的指令周期。结合图6-1所示的CPU的结构模型,分析常用指令的指令周期,并在此基础上画出指令流程图。6.3.1 典型指令及周期分析 典型指令包括非访内指令(CLA指令)、直接访内指令(ADD指令)、写存指令(STA指令)、转移指令(JMP指令)和空操作指令(NOP指令),共五类。这些指令的存储见表6-1,其具体周期分析如下所述。表6-1 典型指令存储表 1.CLA指令周期 CLA指令是一条非访内指令。此类指令的指令周期需要两个CPU周期,第一个CPU周期完成取指和译码操作,第二个CPU周期用作指令的执行操作。 CLA指令周期如图6-7所示。非访内指令包括寄存器之间的数据传送指令、对累加器操作的指令和其他一些零地址指令,下面以CLA指令为例来说明非访内指令的两个CPU周期所进行的具体操作。图6-7 CLA指令的指令周期 1) 取指周期 CLA指令的第一个CPU周期为取指周期,此周期完成取指令并对指令的操作码进行译码。假设程序计数器PC的内容为020Q,正指向CLA指令,则取指周期所进行的具体操作如图6-8所示。操作步骤如下: ① 将程序计数器PC的内容020Q送入地址寄存器AR(PC→AR); ② 程序计数器PC的值加1,使PC指向下一条CPU将要执行的指令(PC+1); ③ 将地址寄存器AR的内容送到地址总线上(AR→ABUS); ④ CPU发出读命令,将所选主存地址为020的单元内容“250 000”读出,经过数据总线,传送给数据缓冲寄存器DR(R/W=1); ⑤ 数据缓冲寄存器的内容“250 000”送给指令寄存器IR(DR→IR)。图6-8 CLA取指周期阶段 指令译码器ID对指令寄存器中操作码进行译码,产生出该指令所需的所有控制信号,以便执行指令操作。由于所有指令的指令周期中第一个CPU周期都是取指周期,该周期所进行的操作都相同,因此,取指周期作为指令流程图的公共部分,任何一条指令执行结束时必须返回到取指周期,以便继续取下一条指令。 2) 执行周期 CLA指令的第二个CPU周期为执行周期,此周期完成对累加器AC的清0。其具体操作如图6-9所示。操作步骤如下: ① 操作控制器送CLA相应的控制信号给算术逻辑单元ALU(0→AC); ② ALU响应该控制信号,将累加器AC的内容清0(AC=0)。图6-9 CLA执行周期 2.ADD指令周期 ADD指令是一条直接访内指令,此类指令的指令周期需要三个CPU周期,第一个CPU周期完成取指和译码操作,第二个CPU周期将指令寄存器IR中的地址码送往地址寄存器,第三个CPU周期从内存中取出操作数并完成相加操作。ADD指令周期如图6-10所示图6-10 ADD指令的指令周期 1) 取指周期 在取得前一条指令CLA后,程序计数器PC的值已经加1,修改为021Q,正指向当前ADD指令。经ADD指令的第一个CPU周期后,取出021Q单元的内容“030 030”(ADD 30指令)送指令寄存器IR,PC的值加1,即PC的值修改为22,指向下一条CPU将要执行的指令,经指令译码器得出该指令的功能,即将累加器的内容和主存030单元的内容相加。由于ADD指令的取指、译码操作过程与CLA指令的第一个CPU周期完全相同,此处不再重复。 2) 将指令寄存器IR中的地址码装入地址寄存器AR(IRAddr→AR) ADD指令的第二个CPU周期完成指令寄存器IR中的地址码(030)装入地址寄存器AR,表示为030→AR,其中030为内存中存放操作数的地址。具体操作如图6-11所示。图6-11 指令寄存器IR中的地址码(030)装入地址寄存器AR 根据图6-1所示的CPU模型,对于单累加器结构的CPU,一个操作数必然隐含在累加器AC中,另一个操作数只能来源于数据缓冲寄存器DR,因此,对于直接寻址指令而言,都会面临一个相同的操作,即将指令寄存器IR中的地址码装入地址寄存器AR(IRAddr→AR),在此,我们将此操作理解为一个机器周期或CPU周期。 3) 两操作数相加 ADD指令的第三个CPU周期主要完成取操作数并执行加法操作。其具体操作如图6-12所示。操作步骤如下: ① 把地址寄存器AR中的操作数的地址(30)送地址总线(AR→ABUS); ② CPU发出读命令,将主存地址为30的单元内容6读出,经过数据总线送给数据缓冲寄存器DR(R/=1); ③ 执行加法运算。数据缓冲寄存器的内容6为算术逻辑单元提供一个操作数,累加器为ALU提供另一个操作数,两个操作数经ALU相加,并把加法的结果送给累加器,此时,累加器的内容为6(“+”)。图6-12 两操作数相加 3.STA指令周期 STA指令是一条间接访内指令,该指令的指令周期由四个CPU周期组成,如图6-13所示。第一个CPU周期完成取指和译码操作,第二个CPU周期将指令寄存器IR中指令的地址码送往地址寄存器,第三个CPU周期从内存中取出操作数的地址并送往地址寄存器,第四个CPU周期将累加器AC的内容写入内存单元。图6-13 STA指令的指令周期 1) 取指周期 STA指令的第一个CPU周期仍为取指周期,将当前PC所指的主存单元中的指令“STA I 30”(机器码为“021031”)取出并译码,PC的值加1,指向下一条CPU将要执行的指令。由于STA指令的第一个CPU周期与CLA、ADD指令的第一个CPU周期的操作完全相同,所以此处不再重复。 2) 将指令寄存器IR中的地址码装入地址寄存器AR(IRAddr→AR) STA指令的第二个CPU周期将指令寄存器IR中的地址码(031)装入地址寄存器AR(031→AR)。由于STA指令的第二个CPU周期与ADD指令的第二个CPU周期的操作完全相同,所以此处也不再重复。只是强调:ADD指令中的地址码030是操作数所在内存单元的地址,而STA指令中的地址码31并不是操作数所在内存单元的地址,而是操作数所在内存单元的地址所在的内存单元的地址。简单地讲,STA指令中的地址码31是操作数所在内存单元地址的地址。 3) 取操作数的地址并送往地址寄存器 STA指令的第三个CPU周期主要完成从内存单元地址为31的单元中取出操作数地址40,其具体操作如图6-14所示。操作步骤如下: ① 地址寄存器的内容31发送到地址总线(AR→ABUS); ② CPU发出读命令,将选中的地址为31内存单元的内容40读到数据总线上(R/=1); ③ 把数据总线上的内容装入地址寄存器AR,于是40进入地址寄存器,替代原来的内容31(DBUS→AR)。图6-14 取操作数的地址并送往地址寄存器 4) 累加器AC的内容写入内存单元 STA指令的第四个CPU周期主要完成累加器AC的内容写入内存单元。其具体操作如图6-15所示。操作步骤如下: ① 把累加器AC的内容6送给数据缓冲寄存器DR(AC→DR); ② 把地址寄存器AR的内容40送到地址总线上(AR→ABUS); ③ 把数据缓冲寄存器DR的内容6发送到数据总线(DR→DBUS); ④ CPU发出写命令,将数据总线上的内容写入到所选的主存单元中,即将数据6写入地址为40的主存单元(R/W=0)。图6-15 累加器AC的内容写入内存单元 4.JMP指令周期 JMP指令可以是直接寻址,也可以是间接寻址。此JMP指令采用直接寻址,该指令的指令周期需要两个CPU周期,第一个CPU周期完成取指和译码操作,第二个CPU周期将指令寄存器IR中指令的地址码送往地址寄存器AR和程序计数器PC。JMP指令的指令周期如图6-16所示。图6-16 JMP指令的指令周期 1) 取指周期 JMP指令的第一个CPU周期仍为取指周期,即将当前PC所指的主存单元中的指令“JMP 21”(机器码为“140 021”)取出并译码,PC的值加1。由于JMP指令的第一个CPU周期与CLA、ADD、STA指令的第一个CPU周期的操作完全相同,所以此处不再重复。 2) 将指令寄存器IR中的地址码装入地址寄存器AR和程序计数器PC(IRAddr→AR、PC) JMP指令的第二个CPU周期将指令寄存器IR中的地址码(021)装入地址寄存器AR和程序计数器PC(IRAddr→AR、PC)。类似于ADD、STA指令的第二个CPU周期,所不同的是,指令寄存器IR中的地址码(021)不仅装入地址寄存器AR,还要装入程序计数器PC,从而代替了PC原来的内容24,这样,下一条CPU将要执行的指令不是24单元中的指令,而是21单元中的指令,从而改变了程序原来的执行顺序,实现了程序的转移。 5.NOP指令周期 NOP指令是一条空操作指令,也是非访内指令。此指令的指令周期由两个CPU周期组成,第一个CPU周期完成取指和译码操作,第二个CPU周期用作指令的执行操作。由于NOP指令是一条空操作指令,所以,在第二个CPU周期中不产生任何控制信号。NOP指令的指令周期与CLA指令的指令周期相同,此处不再重复。6.3.2 指令周期流程 通过分析典型指令的指令周期,使我们对每一条指令的取指过程和执行过程有了较为深刻的印象。为了便于进行控制器的设计,指令周期可以采用类似程序流程图的形式进行描述。指令周期流程图主要由方框、棱形框、有向线段和公共操作符 组成。其中,一个方框代表一个CPU周期,表示某些具体的操作;棱形框表示某种判断或测试,不单独占用一个CPU周期;有向线段表示时间的先后顺序;公共操作符 表示一条指令执行结束,转入公操作。 由于所有指令的取指令阶段完全相同,并且是指令的第一个CPU周期,因此,取指令可以作为公操作。指令不同只是指令的执行阶段不同,可以根据指令的操作码转向不同指令的执行阶段。我们把CLA、ADD、STA、JMP四条典型指令的指令周期进行归纳后,画出了指令周期流程图,如图6-17所示。图6-17 指令周期流程图 在图6-17中,由于ADD、STA、JMP指令的寻址方式不同,既可以采用直接寻址,也可以采用间接寻址,因此,指令流程图出现了分支。请读者对其中哪个分支是直接寻址,哪个分支是间接寻址进行分析。 【例6-1】 图6-18所示为双总线结构机器的数据通路,IR为指令寄存器,PC为程序计数器(具有自增功能),M为主存(受R/W信号控制),AR为地址寄存器,DR为数据缓冲寄存器,ALU由加、减控制信号决定完成何种操作,控制信号G控制的是一个门电路。另外,线上标注有小圈表示有控制信号,yi表示y寄存器的输入控制信号,R1o为寄存器R1的输出控制信号,未标字符的线为直通线,不受控制。 (1) 画出“ADD R0,R2”的指令周期流程图,并列出相应的操作控制信号序列。假设该指令的地址已放入PC中。 (2) 画出“SUB R1,R3”的指令周期流程图,并列出相应的操作控制信号序列。假设该指令的地址已放入PC中。图6-18 双总线结构机器的数据通路 解:(1) “ADD R0,R2”指令是一条加法指令,其功能为(R0)+(R2)→R0,根据给定的数据通路,“ADD R0,R2”的指令周期流程如图6-19(a)所示,该图的右侧注明了相应的操作控制信号序列。图6-19 指令周期流程图 (2) “SUB R1,R3”指令是一条减法指令,其功能为(R1)-(R3)→R3,其指令周期流程如图6-19(b)所示,该图的右侧注明了相应的操作控制信号序列。6.4 微程序控制器 微程序控制器因其具有规整性、灵活性、可维护性等一系列优点而被广泛应用。早在1951年,英国剑桥大学的M.V.Wilkes教授就提出了微程序设计。微程序设计的实质是用程序设计的思想方法来组织操作控制逻辑,把各条指令的微操作序列编制成微程序,并存放在控制存储器中,在执行机器指令时,通过读取并执行相应的微程序来实现这条机器指令的功能。6.4.1 基本概念 1.微命令和微操作 我们可以把组成计算机的各个部分划分为两大类,一类是控制部件,另一类是执行部件。控制器就是控制部件,而运算器、存储器、外围设备相对控制器来讲,就是执行部件,控制部件与执行部件之间的联系依靠的是控制信号线,我们通常把控制部件通过控制信号线向执行部件发出各种控制命令称为微命令,由此可见,微命令是构成控制信号序列的最小单位。而执行部件接受微命令后所进行的操作称为微操作,微操作是执行部件中最基本的操作。微操作可以分为相容性和相斥性两种。所谓相容性的微操作,是指同时或在同一个CPU周期内可以并行执行的微操作。所谓相斥性的微操作,是指不能同时或不能在同一个CPU周期内可以并行执行的微操作。 图6-20给出了一个简单的运算器模型,其中ALU为算术逻辑单元,R1、R2、R3为三个寄存器,三个寄存器的内容可以通过多路开关从ALU的X输入端或Y输入端送至ALU,而ALU的输出可以送往任何一个寄存器或同时送往R1、R2、R3三个寄存器。多路开关的每个控制门是一个常闭的开关,它的一个输入端代表来自寄存器的信息,而另一个输入端是控制端,一旦两个输入端都有输入信号,多路开关则处于开的状态,才会产生输出。图中每一个开关门都由相应的微命令来控制,例如,开关门4由编号为4的微命令控制,开关门5由编号为5的微命令控制,如此等等。三个寄存器R1、R2、R3分别由1、2、3微命令控制,以便在ALU运算完毕时,将运算结果打入到某一寄存器。另外,ALU只有+、-和M三种操作。Cy为进位触发器,只有ALU产生进位时该触发器的状态为“1”。图6-20 简单运算器模型 由此可见,ALU的操作(+、-、M)在同一个CPU周期中只能选择一种,所以,+、-、M三个微操作是相斥性的微操作。另外,4、6、8三个微操作是相斥性的微操作,5、7、9三个微操作也是相斥性的微操作。微操作1、2、3是可以同时进行的,所以是相容性的微操作。另外,ALU的X输入微操作4、6、8分别与Y输入的微操作5、7、9任意两个微操作都是相容性的微操作。 2.微指令和微程序 微指令是指在一个CPU周期中能够实现一定操作功能的一组微命令。而微程序则是微指令序列。我们知道,一条机器指令的指令周期包含多个CPU周期,根据微指令的概念,一个CPU周期对应一条微指令,因此,一条机器指令的功能是由多条微指令组成的序列来实现的。作为微指令,一方面要形成后继微地址,即执行完某一条微指令后,必须给出下一条微指令的地址,下一条微指令的地址也称为后继微地址,以便当前微指令执行完毕后能正确取出下一条微指令;另一方面要产生一组微命令。 因此,微指令的格式应至少包含操作控制字段和顺序控制字段两部分。操作控制字段用来产生微命令,顺序控制字段用来形成后继微地址。某一具体微指令格式如图6-21所示。其微指令长度为23位,包含操作控制字段和顺序控制字段两部分。其中操作控制字段占17位,每一位表示一个微命令。当操作控制字段某一位为“1”时,则表示发出该位相应的微命令;否则,则表示不发出该位相应的微命令。例如,当微指令第一位为“1”时,表示发出LDR1' 微命令,运算器执行ALU→R1的微操作。同样,当微指令第十位为“1”时,表示向ALU发出“+”微命令, ALU则执行“+”微操作。图6-21 微指令格式 微指令的顺序控制字段占6位。其中4位(20~23)用来直接形成后继微地址;第18、19位作为判断测试标志,当此两位都为“0”时,表示不进行测试,直接将微指令中第20~23位作为后继微地址;当此两位都为“1”时,表示要进行P1或P2的判断测试,即根据测试结果,需要对微指令中第20~23位的某一位或某几位进行修改,将修改后的地址作为后继微地址。 3.机器指令与微指令 机器指令与微指令的关系如图6-22所示。图6-22 机器指令与微指令的关系 1) 机器指令与微指令所处的位置不同 机器指令在程序中位于主存储器内,该机器指令的第一个CPU周期完成取指和译码,即将机器指令从主存中取出,并送到指令寄存器IR中,再对IR中的指令操作码进行译码,从而识别出是什么机器指令。而微指令在微程序中位于控制存储器内,在一个微周期中完成从控制存储器取出微指令,并存放于微指令寄存器 IR,再执行 IR中的微指令。 2) 机器指令与微程序的对应关系 一条机器指令对应一个微程序,也就是说,一条机器指令是由一个微程序负责解释执行的。 在控制存储器中存在着所有机器指令的微程序,如何实现不同的机器指令转去执行相应的微程序呢?在机器指令的第一个CPU周期完成取指和译码后,由于机器指令不同,其指令的操作码也不同,因此,可以根据指令寄存器IR中的指令操作码去产生该机器指令相应的微程序入口地址。具体而言,可以把机器指令的操作码直接作为该机器指令相应的微程序入口地址,也可以通过映射存储器来实现操作码与微程序入口地址之间的转换。产生该机器指令相应的微程序入口地址后,将该微程序入口地址送到微地址寄存器 AR中,从而实现机器指令正确转移到相应的微程序。 3) 公共的取指微指令 由于所有机器指令的第一个CPU周期所进行的操作都完全相同,结合微指令的定义,可知一个CPU周期对应一条微指令,因此,所有机器指令相应微程序的第一条微指令完全相同。为了节约控制存储器的存储容量,将微程序的第一条微指令(即取指微指令)设置为公共微指令,任何一个微程序执行完毕后都转到该公共的取指微指令,以完成下一条机器指令的读取操作。6.4.2 微程序控制器基本原理 1.微程序控制器的组成 微程序控制器的组成与结构如图6-23所示。它主要由控制存储器、微指令寄存器和微指令地址形成部件三大部分组成。 1) 控制存储器CM 控制存储器用来存放指令系统所对应的全部微程序,它是一种读出时间较快的只读存储器,其容量视指令系统而定,其字长取决于控制命令的多少、微指令的编码格式以及下址字段的宽度。图6-23 微程序控制器的组成与结构 2) 微指令寄存器 IR 微指令寄存器用来存放从控制存储器读出的一条微指令。微指令由操作控制字段和顺序控制字段构成,其中顺序控制字段用来产生将要执行的下一条微指令的地址,操作控制字段则用来产生一组微命令。 3) 微指令地址形成部件 微指令地址形成部件又称微指令地址发生器或后继微地址形成部件,是用来形成将要执行的下一条微指令的地址(简称后继微地址)。一般情况下,下一条微指令的地址由上一条微指令的顺序控制字段直接决定。当微程序出现分支时,将由状态条件的反馈信息形成转移地址;当取指令公共操作完成后,可以根据指令的操作码产生微指令入口地址。图6-24仅给出了上述三种后继微地址的形成方式,根据计算机规模不同,还可以有更多的后继微地址形成方式。图6-24 微命令直接表示法 2.微程序的执行过程 微程序的执行过程类似于CPU对程序的执行,它一方面要控制微程序中微指令的执行顺序,另一方面要控制执行微指令,其具体过程如下: 1) 读取并执行公共的“取指令”微指令 该过程是指从控制存储器中取出一条公共的“取指令”微指令,并送到微指令寄存器 IR中。由于这是一条公用的微指令,一般存放于控制存储器的0号或1号地址单元。CPU在执行微指令寄存器 IR中的微指令时,操作控制字段产生相关的微命令,这些微命令实现从主存中读取机器指令并将其送到指令寄存器IR。 2) 形成微程序入口地址 根据指令寄存器IR中的指令操作码,通过微地址形成线路产生相应的微程序入口地址,并将微程序入口地址送往微地址寄存器 AR。 3) 执行微程序 根据微地址寄存器 AR中的微地址,取出微程序中第一条微指令并送入微指令寄存器 IR,开始执行 IR中的微指令,操作控制字段产生微命令,顺序控制字段形成后继微地址。该微指令执行结束时,将顺序控制字段所形成的后继微地址再送入微地址寄存器 AR,去读取下一条微指令。如此重复,直至微程序中的最后一条微指令。 4) 实现返回 执行完一条机器指令对应的一段微程序后,返回0号或1号微地址单元,读取并执行“取指令”微指令。 由此可见,微程序控制器的工作过程涉及到两个层面:一个层面是程序员所看到的传统机器级,包括指令、程序、主存储器;另一个层面是设计者所看到的微程序级,包括微指令、微程序、控制存储器(相对程序员是“透明”的)。6.4.3 微程序设计 微程序设计的关键是如何设计微指令的结构。与微指令结构相关的因素较多,除机器硬件外,还要考虑如何缩短微指令字的长度,如何提高微程序的执行速度,如何有利于对微指令的修改,以便提高微程序设计的灵活性。 1.微命令编码 微命令编码是指对微指令中的操作控制字段所进行的编码,其编码方法有直接表示法、编码表示法、混合表示法。 1) 直接表示法 操作控制字段中的每一位代表一个微命令的编码方法称为微命令的直接表示法。直接表示法对微命令不需要译码。其优点是简单、直观,输出可直接用于控制,一条微指令可以定义并执行多个并行的微命令。微指令的直接表示法如图6-24所示。显然,当微指令中的微命令增多时,会导致微指令字加长,使控制存储器的容量加大。因此,直接表示法只适用于微命令数量不多的CPU。对于微命令较多的CPU而言,常采用编码表示法。 2) 编码表示法 编码表示法把一组相斥性的微命令组成一个字段,然后通过微命令译码器对每一个字段进行译码,译码输出作为微命令。编码表示法的微指令结构如图6-25所示。采用编码表示法,可以用较少的二进制信息位表示较多的微命令。例如,某个3位的二进制信息字段,经译码后可以表示8个微命令;4位的二进制信息字段,经译码后可以表示16个微命令。与直接表示法相比,编码表示法可使微指令字大大缩短,但由于增加了译码电路,编码表示法比直接表示法的速度要慢一些。 3) 混合表示法 混合表示法把直接表示法和编码表示法相混合使用,以便能综合考虑微指令字长、灵活性和执行速度等方面的要求。 另外,在微指令中还增加一个常数字段,该字段可作为操作数送入ALU运算,也可作为计数器的初值用来控制微程序循环次数。图6-25 微命令的编码表示法 2.后续微地址的形成方法 微指令执行的顺序控制问题,实际上是如何确定下一条微指令的地址问题。通常,产生后续微地址的方法有计数器方式、增量方式与断定方式结合、多路转移方式三种。 1) 计数器方式 计数器方式与用程序计数器PC来产生后续指令地址的方法类似。计算机加电后执行的第一条微指令地址(微程序入口)来自专门的硬件电路,控制实现取指令操作,然后由指令操作码产生后续微地址。若是顺序执行微指令,则将现行微地址(在微地址计数器μPC中)加1产生后续微地址;若遇到转移类微指令,则由μPC与形成转移微地址的逻辑电路组合成后续微地址,例如利用该逻辑电路的输出与μPC低位进行逻辑加,形成后续微地址。这种方式可使微指令的下址字段很短,仅起选择作用。其缺点是微程序转移不灵活,使得微程序在控制存储器中的空间分配较困难。计数器方式的原理如图6-26所示。图6-26 计数器方式 在图6-26中,μPC兼作控制存储器的地址寄存器,其输入有4个。下址字段仅有两位,其功能是选择3个输入源的一个作为μPC的输入,而微程序入口是由专门的硬件电路产生,不受下址字段控制。 计数器方式的基本特点是:微指令的顺序控制字段较短,微地址产生机构简单。但是多路并行转移功能较弱,速度较慢,灵活性较差。 2) 增量方式与断定方式的结合 在这种方式中,微指令顺序控制字段又分为条件选择字段和转移地址字段两部分,其中条件选择字段用来规定“条件转移”微指令要测试的外部条件;转移地址字段可用作后继微地址,当转移条件满足时,用它作下一个微地址,即将“转移地址”送给微程序计数器μPC;当转移条件不满足时,则使用微程序计数器μPC提供下一条微指令的地址。增量方式与断定方式结合形成后续微地址的原理图如图6-27所示。图6-27 增量方式与断定方式结合形成后续微地址的原理图 μPC是微程序计数器,具有计数和并行接收数据的功能;μIR是微指令寄存器。当μIR中的转移条件(条件选择)字段指出一次转移时,微指令“转移地址”字段的内容就被送入μPC。“条件选择”字段用来控制一个多路开关,根据外部的状态条件信息,多路开关将所选的某一路数据并行打入μPC中。 假设必须测试的两个状态条件变量为V1和V2,故需使用一个两位的条件选择字段S1S0:① 当S1S0 =00时,微程序不转移。② 当S1S0 =01时,如果V1=1则转移,否则顺序执行。③ 当S1S0 =10时,如果V2=1则转移,否则顺序执行。④ 当S1S0 =11时,无条件转移。与此对应,多路开关有4个输入X0、X1、X2、X3,其中X0=0,X1=V1,X2=V2,X3=1。因此,当S1S0 =i时,它选通多路开关输出Xi。从而控制“转移地址”字段的内容送入或不送入μPC。 3) 多路转移方式 在执行一条微指令时,可能会遇到从若干个微地址中选择一个作为后续微地址的情况,这种转移方式称为多路转移。例如,微指令在执行时,有时要根据某些硬件状态来决定后续微地址,属于这些状态的可以是根据运算结果所置的标志位、计数器状态、数据通道状态等。一种状态(0或1)可以用来选择两个微地址之一,即两路转移;而两种状态可以用来选择4个微地址之一,即四路选择。微程序设计实践表明,实现两路转移的情况较多,其次是四路转移,而四路以上转移的情况比较少见。 两路转移只涉及微地址的一位;四路转移涉及微地址的两位,一般就定在微地址的最后两位。也就是说,当执行转移微指令时,根据条件可转移到4个微地址中的一个,这4个微地址的高位部分相同,仅是最低两位不同。实现多路转移可以减少微指令的长度,对于一般条件转移微指令(相当于两路转移)来说,需要两条微指令来完成上述四路转移的功能。 多路转移方式的特点是:能与较短的顺序控制字段配合,实现多路并行转移,灵活性好,速度快,但转移地址逻辑需要用组合逻辑方法实现。3.微指令的格式 微指令的格式大体分成两类:水平型微指令和垂直型微指令。 1) 水平型微指令 水平型微指令是指一次能定义并执行多个并行操作微命令的微指令。其格式如下: 按照控制字段的编码方法不同,水平型微指令可分为直接表示水平型微指令、字段译码水平型微指令和混合表示水平型微指令,这些微指令在介绍微命令表示法时已作叙述,在此不作重复。 2) 垂直型微指令 微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令。其格式类似于机器指令,它有操作码,在一条微指令中只有1~2个微命令,每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多,它是采用较长的微程序结构去换取较短的微指令结构。下面介绍4条垂直型微指令。设微指令字长为16位,微操作码为3位。 (1) 寄存器—寄存器传送型微指令。其格式如下: 其功能是把源寄存器中的数据传送到目标寄存器。15~13位为微操作码,源寄存器和目标寄存器编址各5位,可指定32个寄存器。 (2) 运算控制型微指令。其格式如下: 其功能是选择ALU的左、右两个输入源,按ALU字段所指定的运算功能(8种操作)进行处理,并将结果送入暂存器中。左、右输入源编址可指定32种信息源之一。 (3) 访存微指令。其格式如下: 其功能是将主存中一个单元的信息送入寄存器或者将寄存器的数据送往主存。存储器编址是指按规定的寻址方式进行编址。第2位指定读操作或写操作。 (4) 条件转移微指令。其格式如下: 其功能是根据测试条件决定是转移到D所指定的微地址单元,还是顺序执行下一条微指令。9位D字段不足以表示一个完整的微地址,但可以用来替代现行μPC的低位地址。测试条件字段有4位,可规定16种测试条件。 由此可见,水平型微指令和垂直型微指令各有所长。第一,水平型微指令并行操作能力强,效率高,灵活性强,而垂直型微指令则较差;第二,水平型微指令执行一条指令的时间短,而垂直型微指令执行时间长;第三,水平型微指令编写的微程序较短,而垂直型微指令编写的微程序较长;第四,水平型微指令用户难以掌握,而垂直型微指令与机器指令相似,相对比较容易掌握。6.4.4 微程序设计举例 我们知道微程序设计的关键是设计微指令的结构,而微指令的结构设计又取决于控制器和运算器的结构。在此我们以图6-20所示的运算器和图6-21所示的微指令格式为例,来具体说明“十进制加法”指令的微程序设计过程。 1.十进制加法指令的功能 十进制加法指令的功能是用BCD码来完成一位十进制数的加法运算。当两个一位十进制数进行相加运算时,如果和数大于9,其运算结果是错误的,必须对错误的结果进行加6修正,方可得到正确的结果;如果和数小于或等于9,十进制运算的结果是正确的,无需进行修正。 2.十进制加法指令的微程序流程图 假设两个一位十进制数a和b已存放在图6-20中的R1和R2寄存器中,数6存放在R3寄存器中。其算法采用先进行a+b+6运算,再判断结果有无进位,若有进位Cy=1,不减6;若无进位Cy=0,减去6。因此,完成十进制加法指令的微程序流程如图6-28所示。图6-28 十进制加法指令的微程序流程3.十进制加法指令的微程序 根据图6-28,可知十进制加法指令的微程序由4条微指令组成。 第一条微指令是完成取指操作,该微指令所在控制存储器的地址为0000,其编码为 这条微指令在执行时,一方面操作控制字段产生5个微命令,分别是LDAR' 、RD' 、LDDR' 、LDIR' 、PC+1。LDAR' 执行PC→AR;PC+1执行PC+1→PC;RD' 和LDDR' 执行M→DR;LDIR' 执行DR→IR。假设十进制加法指令的操作码为1000,那么指令寄存器IR中的指令操作码是1000。另一方面,顺序控制字段指明下一条微指令的地址为0000。由于判断字段中P1=1,表示测试的“状态条件”是指令寄存器IR中的指令操作码1000,即用指令操作码1000作为下一条微指令的地址,因此,此微指令的下址0000并不是下一条微指令的真正地址。下一条微指令的真正地址是指令的操作码1000,于是,微地址寄存器 AR的内容修改为1000。 第二条微指令是完成a+b运算操作,该微指令的微地址为1000,其编码为 根据微地址寄存器 AR的内容1000,取出第二条微指令并执行。执行时,一方面操作控制字段产生4个微命令,分别是R1→X、R2→Y、+、LDR2' 。于是,运算器完成R1+R2→R2的操作。另一方面,顺序控制字段中判断测试字段P1和P2均为0,表示不进行测试,于是,该微指令的下址字段1001直接作为下一条微指令的地址,并传送到微地址寄存器 AR。 第三条微指令是完成a+b+6运算操作,该微指令的微地址为1001,其编码为 根据微地址寄存器 AR的内容1001,取出第三条微指令并执行。执行时,一方面操作控制字段产生4个微命令,分别是R2→X、R3→Y、+、LDR2'。于是,运算器完成R2+R3→R2的操作。另一方面,顺序控制字段中判断测试字段P2为1,表示对P2进行测试,测试的“状态条件”为进位标志Cy,根据进位标志Cy的状态来修改微地址寄存器 AR的最后一位:若Cy=0时,下一条微指令的地址为0001;若Cy=1时,下一条微指令的地址为0000。由此可见,该微指令的下址0000并不是下一条微指令的真正地址。下一条微指令的真正地址是对下址0000的修改。在此假设Cy=0,则要执行的下一条微指令的地址为0001,送到微地址寄存器 AR。 第四条微指令是完成a+b-6运算操作,该微指令的微地址为0001,其编码为 根据微地址寄存器 AR的内容0001,取出第四条微指令并执行。执行时,一方面操作控制字段产生4个微命令,分别是R2→X、R3→Y、-、LDR2' 。于是,运算器完成R2-R3→R2的操作。另一方面,顺序控制字段中判断测试字段P1和P2均为0,表示不进行测试,于是,该微指令的下址字段0000直接作为下一条微指令的地址,并传送到微地址寄存器 AR,按该地址取出的微指令为“取指”微指令。 如果第三条微指令进行测试时,Cy=1,那么,下一条微指令的地址为0000,将不执行第四条微指令,而是直接由第三条微指令就转向“取指”微指令,便开始从内存中取第二条机器指令,再转去执行该机器指令相应的微程序。 【例6-2】 设某运算器的结构如图6-29(a)所示,其中,ALU为16位算术逻辑单元,SA、SB为16位暂存器,4个通用寄存器由D触发器组成,其读/写控制功能见表6-2。机器采用串行微程序控制方式,其微指令周期如图6-29(b)所示。其中读ROM是从控制存储器中读出一条微指令的时间为1 ms;ALU做加法运算时间为500 ns;m1是读寄存器的时间为500 ns;m2是写寄存器的工作脉冲宽度为100 ns。表6-2 通用寄存器读写控制功能图6-29 16位的运算器 微指令字长为12位,其格式如下:(未考虑顺序控制字段)其中,RA0RA1:读R0~R3的选择控制;WA0WA1:写R0~R3的选择控制;R:寄存器读命令;W:寄存器写命令;LDSA:打入SA的控制信号;LDSB:打入SB的控制信号;SB→ALU:传送SB的控制信号;SB→ALU:传送SB的控制信号并使ALU最低位加1;Reset:清暂存器SB为0的信号;~:一段微程序结束,转入取指令的控制信号。 要求用二进制代码写出以下机器指令的微程序: (1) ADD R0,R1;(R0)+(R1)→R1 (2) SUB R2,R3;(R3)-(R2)→R3 (3) MOV R2,R3;(R2)→(R3) 解:首先根据机器指令的功能,画出三条机器指令的微程序流程图,如图6-30所示。其中未考虑公共的取指周期和顺序控制问题,在每个方框的右上角仅用数字标号表示微指令的顺序。其次根据机器指令的微程序流程图,设计微程序,表6-3给出了三条机器指令的微程序,其中×表示任意设置(0或1均可)。可以看出:ADD和SUB指令的微程序由三条微指令构成,MOV指令的微程序由两条微指令构成。图6-30 微程序流程图表6-3 三条机器指令的微程序6.4.5 微程序控制器设计步骤 微程序控制器设计的最主要任务是编写所有机器指令对应的微程序。具体微程序控制器设计步骤如下。 1.设计微指令的结构 设计微程序结构时,首先分析机器的组成结构,拟定微命令集,找出相容性和相斥性微命令,选择以微指令的执行方式(串行方式还是并行方式),确定微命令的编码方式和字段的划分;其次分析测试条件,以确定后续微地址的形成方法(增量方式、断定方式)。 2.画出微程序流程图 在分析所有机器指令功能的基础上,合理安排控制存储器中的微程序,画出微程序流程图。 3.编制微程序 根据微指令格式和微程序流程图编写微程序,并对所有微程序进行优化和代码化。 4.写控制存储器 将指令系统中所有机器指令的微程序进行二进制编码,并写入控制存储器。如果控制存储器采用只读存储器,一旦写入,其内容将不会改变,此控制器为静态微程序控制器;如果控制存储器采用随机存储器,则为动态微程序控制器。6.5 组合逻辑控制器 组合逻辑控制器也称为硬布线控制器,是早期设计计算机的一种方法,这种方法是把控制部件看做为产生专门固定时序控制信号的逻辑电路,而此逻辑电路以使用最少元件和取得最高操作速度为设计目标,一旦控制部件构成后,除非重新设计和物理上对它重新布线,否则要想增加新的控制功能是不可能的,这种缺陷使得组合逻辑控制器的设计和调试变得非常复杂,而且代价巨大,所以,组合逻辑控制器后来被微程序控制器所取代。但随着新一代计算机和VLSI技术的发展,组合逻辑控制器又得到了重视,如RISC精简指令系统计算机广泛使用这种控制器。 组合逻辑控制器由组合逻辑线路、模k时序产生器和1/k译码器等部件组成,其原理如图6-31所示。图6-31 组合逻辑控制器原理框图 图6-31中,组合逻辑线路的输入信号有:来自指令译码器的输出Im、来自执行部件的反馈信息Bj、来自时序产生器的节拍脉冲信号Tk;组合逻辑线路的输出信号就是微操作控制信号,用来对执行部件进行控制。某一微操作控制信号Cn是指令操码译码器的输出Im、节拍脉冲信号Tk和反馈信息Bj的逻辑函数,即Cn=f (Im,Tk,Bj)。为了说明组合逻辑控制器的工作原理,假设简化的CPU模型为如图6-32所示。指令的执行过程如图6-33所示。其中前3步为取指令,对所有指令来说是相同的,后3步为执行指令,随指令功能的差异而变化。根据指令ADD、AND、STA、LDA、JMP、JMPZ、COM的功能,我们可以画出指令的流程图,如图6-34所示。图中微操作决定了在CPU中所需的控制信号和控制点图6-32 简化的CPU模型图6-33 指令的执行过程 我们假定读主存和写主存的操作在两个单位时间内完成,其他微操作都可以在一个单位时间内执行完毕。由指令流程图可以看出,ADD、AND、STA、LDA指令需要8个单位时间,其中取指周期需要4个单位时间,执行周期需要4个单位时间;而JMP、JMPZ、COM指令只需5个单位时间,4个单位时间用于取指,一个单位时间用于执行。假定一个单位时间用一个节拍脉冲的时序信号来体现,因此需要一个模8计数器。图6-34 指令的流程图 显然,根据指令流程图,可以确定在指令周期中各时刻必须激活某一指令的某些操作信号。例如,对引起一次内存读操作的操作信号C3来说,当T2=1,取指令时被激活;而当T6=1,3条指令(LDA、ADD、AND)取操作数时也被激活,此时,指令译码器的LDA、ADD、AND输出为“1”,因此,C3的逻辑表达式为:C3 = T2 + T6(LDA + ADD + AND) 一般来说,控制信号Cn=∑(Ti∑Im)。其中,Im为指令译码器的输出。在要求i图6-35 实现7条指令的组合逻辑控制器6.6 门阵列控制器 采用通用可编程逻辑器件可以实现组合逻辑,也可以实现时序逻辑,从而可以满足计算机系统中对随机逻辑功能的需要,即可用来设计操作控制器。由于通用可编程逻辑器件由大量的与门、或门阵列等电路构成,所以简称为门阵列器件。为了与早期的组合逻辑控制器相区别,用门阵列设计的操作控制器称为门阵列控制器。6.6.1 可编程逻辑阵列PLA PLA逻辑结构如图6-36所示,它是多个“与”门电路的集合,并且可以在任何一个输出端上进行“或”运算。PLA器件有四个输入变量x1、x2、x3、x4,每个变量有原码和反码两个输出,三个和项f1~f3(“或”逻辑)中每一个可以包含8个乘积项y1~y8(“与”逻辑),每个和项fi控制一个输出函数,它可用外界电脉冲编制程序。交叉线上的圆点在矩阵上部相当于“与”门,而在矩阵下部的则相当于“或”门。输入变量的每一行可以被地址矩阵的每一列识别为逻辑“1”、“0”或者任意值(用d表示)。图6-36 PLA逻辑电路 例如对于乘积项y2有:x1=1、x2=0、x3=1、x4=d、f1=1、f2=0、f3=0,对于输出函数f1而言,由3个乘积项组成,分别是y2、y3和y6,因此,输出函数f1为其中,括号表示变量的真值可以为任意值,既可以为“1”,也可以为“0”。 由此可见,PLA在实现任意逻辑函数时与PROM类似,但在逻辑结构上却与PROM有着本质区别。第一,PLA中的输出函数并不一定包含所有乘积项,它只对必要的乘积项进行编程,而在PROM中则应对所有乘积项进行编程;第二,在PROM中,要用固定地址译码器来进行寻址,而PLA利用可编程的地址矩阵来选择所需要的乘积项。因此,要实现同样的逻辑函数,用PLA要比用PROM所需的位数少,译码逻辑也较少。6.6.2 基本思想 我们知道微操作控制信号既是操作码的函数,又是节拍电位、节拍脉冲和反馈条件等因素的函数。因此,在设计门阵列控制器时,通常把指令的操作码、节拍电位、节拍脉冲和反馈条件作为门阵列的输入,再按一定的“与或”关系来编排逻辑阵列的输出,便是所需要的微操作控制信号。假设某一微操作控制信号C6发生在指令A(设OP为I1I2)的节拍电位M2、节拍脉冲T4时间,也发生在指令B(设OP为I1I2)的节拍电位M3、节拍脉冲T2时间,且进位触发位Cy为“1”,那么C6的逻辑表达式如下:C6 = I1I2·M2·T4 + I1I2·M3·T2·Cy 将上述输入变量送入门阵列电路进行编排,就可产生所需要的微操作控制信号。6.7 流水线处理技术6.7.1 指令执行方式 指令执行方式是指令执行过程之间的衔接关系。由于一条指令的执行过程大体上可分为取指令、分析指令和执行指令三个阶段,所以,指令执行方式可以分为顺序、重叠和流水三种方式。 1.顺序执行方式 顺序执行方式是指各条指令执行过程之间是顺序串行执行的,即只有一条指令执行完后,才能取下一条指令来执行。顺序执行方式控制简单,但执行速度慢,效率低。顺序执行指令的方式如图6-37所示。图6-37 顺序执行方式 2.重叠执行方式 重叠执行方式是指在前一条指令执行完成之前,就开始取下一条指令并执行,即相邻两条指令的执行过程在时间上发生重叠。重叠执行方式根据重叠程度,可分为一次重叠和二次重叠,如图6-38所示。图6-38 重叠执行方式 3.流水执行方式 流水执行方式是对重叠执行方式的进一步发展,采用类似生产流水线方式来控制指令的执行过程。它是把指令的执行工作划分为若干个复杂程度相当、处理时间大致相等的子任务,每一个子任务由一个独立的功能部件来完成。由于流水线上各个功能部件的并行工作,使得机器执行指令的速度大大提高。假设一条指令的指令周期包含五个子过程:取指(IF)、译码(ID)、取数(OF)、执行(EX)、写回(WB),而每一个子过程对应一个功能部件Si,这五个功能部件便组成一个五段指令流水线,如图6-39(a)所示。其指令的流水处理过程如图6-39(b)所示。图6-39 五段指令流水方式 从五段指令流水执行方式可以看出,在一个时钟周期内同时有五条指令分别在不同的功能部件上进行解释执行,等流水线工作稳定后,每一个时钟周期都会有一条指令的执行结果从流水线流出。假设各个功能段所需时间相等,均为一个时钟周期 t,则在理想情况下,流水线吞吐率(单位时间内所处理的指令条数)为1/ t。如果采用顺序执行方式,则一条指令的执行时间为5 t,显然,流水线方式将会大大提高机器的吞吐率。6.7.2 流水线的分类 1.按等级分类 算术流水线是将复杂的运算过程组成流水线工作方式。如浮点数的加法运算可分成0检查、对阶、尾数求和、规格化和溢出五个子过程,组成五级流水加法器;还有流水乘法器、流水除法器等。现代计算机中已广泛采用了流水的算术运算器。 1) 指令流水线 指令流水线是将指令的整个执行过程分为若干个子过程,如取指、译码、执行、写回等几个并行处理的子过程。目前,几乎所有的高性能计算机都采用了指令流水线。 2) 宏流水线 处理机流水线又称为宏流水线,它是指程序步骤的并行,由一串级联的处理机PE(Processor Element)构成流水线,每台处理机PE负责完成某一特定的任务,并将结果输出到共享存储器SM(Shared Memory)。数据流从第一台处理机输入,经处理后被送入共享存储器SM中;第二台处理机从共享存储器SM中取出数据进行处理,然后送给共享存储器SM中,如此串联下去。随着高档微处理器芯片的出现,处理机流水线被广泛应用在多机系统中。 2.按流水线结构分类 根据流水线中各功能段之间是否存在反馈,可以将流水线分为线性流水线和非线性流水线两种。 1) 线性流水线 线性流水线是指流水线中的每个功能部件在处理流水任务时,最多只执行一次,且没有反馈回路。 2) 非线性流水线 非线性流水线是指流水线中的一些功能部件在处理流水任务时,可以通过反馈回路多次被执行。6.7.3 线性流水线 1.线性流水线时空图 线性流水线在执行多个任务时,多个任务从线性流水线的入口鱼贯而入,经各个功能部件处理,到达一定的时间后,线性流水线的出口就会每经过一个时间片完成一个任务。对于图6-40(a)所示的四段线性指令流水线而言,在经过4个Δt之后,每一个Δt就会执行完一条指令,这个过程可以用线性流水线时空图进行描述,如图6-40(b)所示。图6-40 线性流水线时空图 2.线性流水线的主要技术指标 1) 吞吐率(Tp) 吞吐率是指单位时间内线性流水线所能完成的指令数、任务数或输出结果的数量。对于m段线性流水线,如果线性流水线中各个功能部件所占时间均为Δt,那么,吞吐率Tp可按下式进行计算: 2) 加速比(SP)3) 效率(η) 【例6-3】 设有100条指令的程序经过图6-39(a)所示的五段指令流水线,试求出完成该程序的流水时间、流水线的实际吞吐率、加速比和效率(假设Δt=10 ns)。 解:流水总时间TC= mΔt + (n-1)Δt =5×10+99×10 =1040 ns 非流水总时间TS= n×5×Δt =100×5×10=5000 nsη= TP×Δt≈100% 3.高级流水线 为了提高流水线的处理速度,目前主要采取的措施有:超流水技术、超长指令字技术和超标量技术,在此只对其进行简单介绍,详细内容请参考“计算机系统结构”课程的相关章节。 1) 超流水技术超流水技术主要体现在时间上的进一步重叠,即进一步细化流水线的功能段,增加功能段数量。 2) 超长指令字技术 超长指令字技术简称VLIW,用于指令系统的进一步重叠,即通过增加超长指令来改善流水性能。具体而言,超长指令字技术经过编译优化,将多条能够并行执行的指令合并成一条具有多个操作码的超长指令。 3) 超标量技术 超标量技术是通过重复设置流水线,来进一步加快流水处理速度。如Pentium微处理器,其内部采用了两套流水线(U、V流水线),从而进一步提高了运算器的运算速度。 6.7.4 流水线中的相关问题 流水线技术可以提高运行效率,但由于流水线中存在相关问题,将会严重影响流水线的运行速度。所谓相关,是指一段程序的相近指令之间存在某种依赖关系,这种依赖关系会影响指令的并行执行。流水线中的相关问题主要指资源相关、数据相关和控制相关。 1.资源相关 资源相关是指多条指令进入流水线后,在同一机器时钟周期内争用同一个功能部件所发生的冲突。假定一条指令流水线由五段组成。由表6-4可以看出,在时钟4时,I1与I4两条指令发生争用存储器资源的相关冲突。表6-4 两条指令同时访问内存发生资源相关冲突 解决资源相关冲突的办法:一是第I4条指令停顿一拍后再启动;二是增设一个存储器,将指令和数据分别放在两个存储器中。 2.数据相关 在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关的。在流水计算机中,指令的处理是重叠进行的,前一条指令还没有结束,第二、三条指令就陆续地开始工作。由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突。如表6-5所示,ADD指令与SUB指令就发生了数据相关冲突。表6-5 两条指令发生数据相关冲突 解决数据相关冲突的办法:在流水CPU的运算器中设置若干运算结果缓冲寄存器,暂时保留运算结果,以便于后继指令直接使用,这称为“向前”或“定向”传送技术。 3.控制相关 控制相关是由转移指令引起的,所以也称控制转移相关。当CPU执行转移取指令时,依据转移条件的产生结果,可能为顺序取下条指令,也可能转移到新的目标地址取指令,从而使流水线发生断流。为了减小转移指令对流水线性能的影响,常用以下两种转移处理技术。 1) 延迟转移法 由编译程序重排指令序列来实现,其基本思想是“先执行再转移”,即发生转移时并不排空指令流水线,而是让紧跟在转移指令Ib之后已进入流水线的少数几条指令继续完成,如果这些指令是与Ib结果无关的有用指令,那么延迟损失时间片正好得到了有效的利用。 2) 转移预测法 用硬件方法来实现,依据指令过去的行为来预测将来的行为。通过使用转移取和顺序取两路指令预取队列器以及目标指令Cache,可将转移预测提前到取指阶段进行,以获得良好的效果。6.8 多 媒 体 技 术 媒体一词在涉及信息传递的领域中是指传递信息的媒介,它包括存储信息的实体与传递信息的载体两部分。磁盘、光盘等皆属于存储信息的实体,而载体则指用来表达信息的形体,如数值、文字、声音、图形与动静图像等。? 多媒体技术是指计算机把各种不同的电子媒质集成起来,统一进行存储、处理和传输。这些电子媒质包括计算机屏幕显示、视频光盘、CD-ROM以及语言和声音的综合,同时在这些部件之间建立逻辑连接,从而使整个系统具有交互性。显然,多媒体技术使计算机进一步摆脱了“计算工具”的传统观念,成为处理各种信息的强有力工具。 1.图像与声音的压缩技术 多媒体技术很重要的内容是对图像与声音进行操作、存储与传送。这就需要将每幅图像从模拟量转换成数字量,然后进行图像处理,与图形文字等复合,再存储在机器内。但是进行管理、操作、存储的图像并不只是数量很少的静止图像,而是符合视频标准的每秒30帧的彩色图像。如果由多媒体计算机存储器能演放1秒钟的音像制品,则信息量就高达22.5 MB,而光盘CD-ROM容量只有550 MB。 可见如不对图像采用压缩技术,仅存储图像的要求这一点就无法达到,何况CD-ROM的数据传输率也只有150 KB/s,无法做到多幅图像的实时再现。图像数据如不压缩,则实现多媒体通信也就不可能。图像压缩是将图像用像素存储的方式,经过图像变换、量化、高效编码等处理,转换成特殊形式的编码。这样一来,计算机所需存储与实时传送的数据量就可大大降低。 2.适应多媒体技术的软件技术 为适应多媒体技术发展,一是需要开发具有多媒体功能OS(操作系统),二是开展以编辑工具为中心的软件技术研究。对第一个课题,Microsoft开发的视窗95至视窗2000系列多媒体OS版获得了很大成功;对第二个课题,编辑工具必须将图形、文档、声音、图像、视像等多种媒质联系在一起,为实际应用提供方便。 3.计算机系统结构方面的技术? 为了在算机系统中增加多媒体数据的获取功能、压缩解压功能、实时处理功能、多媒体数据的I/O与通信功能,在计算机系统结构领域需要做以下三方面的改进: 第一,选择专用芯片和专用插卡来扩充功能,如声卡、视频卡、网卡、内接或外接调制解调器; 第二,进一步改善总线的结构和性能,如加宽系统总线,提高时钟速率; 第三,将一些重要的多媒体技术融合到 CPU芯片或设计全新的多媒体CPU芯片。 4.MMX技术 MMX技术是多媒体扩展结构技术,应用此技术,可极大地提高计算机在多媒体和通信应用方面的功能。带有MMX技术的CPU特别适合于数据量很大的图形、图像数据处理,从而使三维图形、图画、运动图像为目标的MPEG视频、音乐合成、语音识别、虚拟现实等数据处理的速度有了很大提高。MMX技术集成到新一代Pentium CPU时,主要体现在以下三个方面: 1) MMX数据类型 MMX技术定义了三种打包的数据类型和一种64位字长的数据类型。打包数据类型中的每个元素以及64位数都是带符号或不带符号的定点整数(字节、字、双字、四字)。四种数据类型定义如下:? (1) 紧缩字节类型:8个字节打包成一个64位数据。 (2) 紧缩字类型:4个字打包成一个64位数据。 (3) 紧缩双字类型:两个32位的双字打包成一个64位数据。 (4) 四字类型:一个64位数。 2) MMX寄存器 8个MMX寄存器MM0~MM7的宽度为64位,借用浮点处理单元中的8 个(80位)数据寄存器,它是通过使用“别名”的办法来实现的。这样,8个字节或4个字或2个双字被打包装入一个64位的MMX寄存器,一旦执行一条MMX指令,将所有这些8个、4个或2个的数据同时取出,进行数学运算或逻辑操作。事实上,这种运算处理过程是一种并行处理过程,故称为SIMD(单指令多数据)的并行处理。 3) MMX指令集 MMX指令的先进性体现在: (1) SIMD结构。SIMD结构是单指令多数据的系统结构,MMX指令可以充分利用64位带宽的处理能力,一次可以并行处理8个8位、4个16位或2个32位数据。而以前我们遇到的计算机是SISD(单指令单数据)的系统结构。 (2) 饱和运算方式。饱和运算方式是运算发生溢出时使用的处理方法,由于不需要进行溢出处理,所以提高了处理能力。饱和运算适合于面向像素数据的处理。6.9 典型CPU简介6.9.1 8086 CPU 8086 CPU是40条引脚的双列直插式组件,采用单一的+5 V电源和5 MHz的单相时钟,具有20位地址总线,可寻址的内存地址空间达1 MB,可寻址的I/O地址空间为64 KB,其内部结构如图6-41所示。 从图6-41中可看出,8086 CPU是由两个独立的功能部件构成,它们是指令执行部件EU(Execution Unit)和总线接口部件BIU(Bus Interface Unit)。执行单元EU由算术逻辑运算单元ALU、16位标志寄存器FR、通用寄存器组和EU控制器等四个部件组成,其主要功能是执行指令。总线接口单元BIU由地址加法器、专用寄存器组、指令队列和总线控制电路等四个部件组成,其主要功能是形成访问存储器的物理地址以访问存储器,从存储器取出的指令暂存到指令队列中等待执行;配合EU部件访问存储器或I/O端口,读取操作数参加EU中的运算或存放运算结果。图6-41 8086CPU的内部结构图 指令执行单元EU和总线执行单元BIU的操作各自独立进行,两者也可并行工作,使取指令和执行指令两个操作过程重叠进行,从而有效加快了系统的运算速度。执行单元EU执行指令时,不必访问存储器去取指令,而是直接从指令队列中取得指令代码,并分析执行它。若在指令执行过程中需要访问存储器或I/O端口,EU只需向BIU送出访问存储器的逻辑地址,BIU根据EU的要求形成访问存储器的物理地址,然后根据物理地址去访问存储器或I/O端口,取得操作数送到EU中去参加运算。必要时,可将运算结果写回到存储器中去,所以EU单元实际上不与外界打交道,所有与外部的操作都是在BIU控制下完成。 1.指令执行单元EU 指令执行单元EU只负责执行指令。一般情况下指令按顺序执行,EU可源源不断地从指令队列中取得执行指令,而省去访问存储器取指令所需的时间。如果在执行指令过程中需要访问存储器取操作数,那么EU将访问地址送给BIU后,将要等待操作数到来后才能继续操作,遇到转移类指令,要将指令队列中的后续指令作废,等待BIU重新从存储器取出目标地址中的指令代码进入指令队列后,EU才能继续执行指令。这种情况下,EU和BIU的并行操作会受到一定的影响。这是采用并行操作方式不可避免的现象,只要转移指令出现概率不是很高,两者的并行操作仍然会取得良好的效果。 EU中的算术逻辑单元(ALU)可完成16位或8位的二进制运算,运算结果可通过内部总线送到通用寄存器组或BIU的内部寄存器中等待写入存储器。16位暂存器用来暂存参加运算的操作数。经ALU运算后的结果特征送入标志寄存器FR中保存。 EU控制器负责从BIU的指令队列中取指令,并对指令进行译码,根据指令要求向EU内部各部件发出控制命令以完成各条指令的功能。 2.总线接口单元BIU 总线接口单元BIU负责与存储器或I/O端口打交道,正常情况下,BIU通过地址加法器形成指令所在存储器中的物理地址后,启动存储器,从给定地址的存储器中取出指令代码送指令队列中等待执行,一旦指令队列中空出2个字节,BIU将自动进入读指令操作以填满指令队列。只要收到EU送来的操作数地址,BIU将立即形成操作数的物理地址,完成读/写操作数或运算结果的功能。遇到转移类指令,BIU将指令队列中尚存的指令废除,重新从存储器目标地址中取指令并送到指令队列中。 BIU的指令队列可存放6字节的指令代码,一般情况下,应保证指令队列中总是填满指令,使EU连续不断地得到待执行的指令。16位地址加法器专门用来完成逻辑地址变换成物理地址的功能,实际上是进行一次地址加法,将两个16位的逻辑地址变换成20位的物理地址,以达到寻址1 MB的存储空间。 总线控制电路将8086CPU的内部总线与外部总线相连,是8086CPU与外部交换数据的通道,它包括16条数据总线,20条地址总线和若干条控制总线,CPU通过这些总线与外部设备取得联系,并与外部设备一起形成各种规模的8086微型计算机系统。6.9.2 Pentium微处理器 按照80x86的逻辑,80486之后的下一个CPU名字应是80586,但是Intel公司决定不再采用数字命名,原因是为了保护商标版权,所以Intel为了获得新一代CPU的商标专利,将其取名为Pentium,它来源于希腊字“Pente”,其意思为5,现在人们习惯上也将Pentium叫做586,或称做奔腾586或P5(Pentium未正式命名前的称呼)。1.Pentium微处理器内部结构 Pentium微处理器是1993年投入使用的,与80x86系列保持完全兼容,其内部结构如图4-42所示。采用0.8 mm的Bi-CMOS技术,使芯片集成度达到310万个晶体管。全部引脚被封装在一个大型的237针PGA中。时钟频率有60 MHz、66 MHz、75 MHz、90 MHz、100 MHz、120 MHz、133 MHz、150 MHz及166 MHz等多种,其中Pentium-66的运算速度为112 MIPS。业内人士认为Pentium是一个划时代的微处理器,它的性能已超过了原有的工作站及超级小型机。 2.Pentium微处理器技术特点 1) 超标量双流水线结构 超标量流水线设计是Pentium微处理器技术的核心。所谓超标量,就是处理器内部含有多个执行单元来完成多条指令的同时执行。Pentium有两条分别称为U和V的指令流水线,各自有独立的算术逻辑单元ALU及高速缓存结构。这种双流水线并行作业的方式,使得Pentium在每个时钟周期内可同时执行两条指令。此外,还有一个执行单元,保证同时完成一条浮点运算指令。图6-42 Pentium CPU的内部结构 2) 分支预测技术 为了减少由于转移导致流水线的效率损失,Pentium采用分支预测技术来动态预测指令的目标地址,从而节省了CPU的执行时间。通常在用户程序中包含不少的条件转移指令,在流水线计算机中,这些转移指令由于产生分支可能使码取和译码指令作废。 Pentium内部有两个予取指令缓冲队列,在执行条件转移指令前,一个以顺序方式予取指令,另一个以转移方式予取指令,后者也称作分支目标缓冲器BTB(Branch Target Buffer),这是一个小的Cache,它基于转移指令,尤其是循环转移的固有特点,可以认为在大多数情况下,当一条转移指令被再次执行时,其成功与否及转移目标与上次相同。据此可构造动态的分支目标预测硬件。BTB是一种效果较好的硬件机制,统计表明BTB的容量较大时(如超过256项)预测准确率可达90%。通过这种动态分支预测技术,不管是否产生转移,所需指令都在执行前取好。 3) 双Cache Pentium内部有两个Cache,每个8 KB。一个Cache用于指令高速缓存,另一个用于数据高速缓存。这两个高速缓存可同时存取,前者可提供多达32位的原始操作码,后者每个时钟周期内可以提供两次存取的数据。这种双路高速缓存结构减少了争用高速缓存所造成的冲突,改进了处理器性能。 4) 更快的浮点运算单元 浮点运算过程分为八个流水步级,前四步同整数流水线,接下来两步为二级浮点操作,最后两步为写结果、出错报告等。浮点运算单元对一些常用指令如ADD、MUL等不是采用微程序,而是由硬件实现,使浮点运算速度更快。 5) 固化常用指令 Pentium对一些常用指令如MOV、PUSH、POP、INC、DEC、及JMP等改用硬件实现,而不使用微操作,加快了指令的执行速度。 6) 增加总线宽度 Pentium内部总线与80386、80486一样,数据线和地址线的宽度都为32位,但CPU和内存进行数据交换的外部数据总线为64位,提高了读/写存储器的速度,使得一个总线周期内的数据传输量提高了一倍。例如,在主频66 MHz时,内部64位总线使CPU与内存可一次传送8个字节数据,这样,Pentium传送数据的速度达528 MB/s(8字节 × 66 MHz)。此外,Pentium还支持一种叫突发式的总线周期,该模式可在一个总线周期内传送4个64位数。 在存储管理中,Pentium的页面大小除可采用80386、80486的4 KB页面外,还可选用高达4 MB的页面。页面尺寸由控制寄存器CR4中的PSE位来选择。当选用4 MB页面时,只需用页组目录项表来寻址4 MB页面,无需页表,从而极大地减少了内存用量,并加快访问内存的速度。关 联习 题 6.1 控制器的基本功能是什么?它由哪些基本部件组成?各部件的作用是什么? 6.2 CPU中有哪几个最主要的寄存器?它们的主要作用是什么? 6.3 什么是同步控制?什么是异步控制?什么是联合控制?在同步控制方式中,什么是三级时序系统? 6.4 试述指令周期、CPU周期、节拍周期三者的关系。 6.5 按图6-9所示的CPU结构框图,试写出执行下面各条指令的控制信号序列。 (1) ADD R0,R1; (2) ADD (R0),R1; (3) ADD (R0)+,R1。 注:指令中第一个地址为源地址,第二个地址为目标地址。 6.6 试分析在模型机中执行下列指令的操作流程 (1) ADD (R0),R1; (2) SUB X(R0),R1 ; (3) MOVR0+,R1。 6.7 试述组合逻辑控制器与微程序控制器的组成差别。 6.8 何谓微命令、微操作、微指令、微周期? 6.9 微指令编码有哪几种常用方式?在分段编码方法中,分段的原则是什么? 6.10 什么是起始微地址?什么是后继微地址?有哪几种形成方法? 6.11 试写出在微程序控制的模型机中执行下列指令的微程序流程。 (1) ADD (R0),R1; (2) SUB X(R0),R1; (3) MOV (R0)+,R1。6.12 题6.12图为一CPU的结构框图。题6.12图(1) 标明图中a、b、c、d四个寄存器的名称;(2) 简述取指令的操作流程;(3) 若加法指令格式与功能如下:其功能为:(AC)+(D)→AC,试分析执行加法指令的操作流程。 6.13 某计算机有如下部件:ALU、移位寄存器、指令寄存器IR、主存储器M、主存数据寄存器MDR、主存地址寄存器MAR、通用寄存器R0~R3、暂存器C和D。试将各逻辑部件组成一个数据通路,并标明数据流动方向。 6.14 设R1、R2、R3、R4 是CPU中的通用寄存器,请使用机器周期流程框图分别表示下列指令的执行流程。 (1) 取数指令:LDA (R1), R2该指令是S-R型双操作数指令,R1为源操作数,R2为目的操作数。 (2) 存数指令:STA R3,(R4)该指令是R-S型双操作数指令,R3为源操作数,R4为目的操作数。 6.15 某计算机的运算器为三总线(B1、B2、B3)结构,B1和B3通过控制信号G连通。算术逻辑部件ALU具有ADD、SUB、AND、OR、XOR等五种运算功能。其中SUB运算时,ALU输入端为B1-B2模式,移位器SH可进行直送(DM)、左移一位(SL)、右移一位(SR)三种操作。通用寄存器R0、R1、R2都有输入/输出控制信号,用于控制寄存器的接收与发送,如题6.15图所示。题6.15图试分别写出实现下列功能所需的操作序列。(1) 4(R0)+(R1)→R1;(2) [(R2)-(R1)]/2→R1;(3) (R0)→R2;(4) (R0)∧(R1)→R0;(5) (R2)∨(R1)→R2;(6) (R2)(R0)→R0;(7) 0→R0。说明:∧表示与操作,∨表示或操作,表示异或操作。 6.16 现给出8条微指令I1~I8及所涉及的微命令(如表题6.16所示)。请设计微指令控制字段格式,要求所使用的控制位最少,并其保持微指令自身内在的并行性。题6.16表 6.17 请按断定方式实现题6.17图的微程序流程的顺序控制,要求: (1) 给出微指令顺序控制字段格式(假定mMAR为6位)。 (2) 给出各类微指令的二进制地址并编写实现此流程的微程序。 (3) 画出地址修改逻辑电路。 说明:图中每个方框代表一条微指令,分支点a由指令寄存器IR6 IR5两位决定,分支点b由进位标志Cj决定。 6.18 说明相关性对流水线的影响,并给出一些常用的解决方法。 6.19 假定某计算机的指令按取指、分析和执行三步骤处理,每步所需时间分别为tf、td、te,请分别计算满足下列要求时,执行100条指令所花费的时间。 (1) 依次串行执行。 (2) 仅K+1取指与K执行重叠。 (3) 仅K+2取指、K+1译码、K执行重叠。 6.20 在图6-53所示的流水线上处理下述程序段时会出现什么问题?如何解决这些问题? (1) ADD R1, R2; (2) MOV R3, R1; (3) ADD R0, R4; (4) MOV (R4),R5。说明:前一个操作数为目的数,后一个操作数为源数。6.21 单选题。(1) 程序计数器的功能是 。 A. 存放微指令地址 B. 计算程序长度 C. 存放指令 D. 存放下条机器指令的地址(2) CPU从主存取出一条指令并执行该指令的所有时间称为 。 A. 时钟周期 B. 节拍 C. 机器周期 D. 指令周期(3) 主存中的程序被执行时,首先要将从内存中读出的指令存放到 。 A.程序计数器 B. 地址寄存器 C. 指令译码器 D. 指令寄存器(4) 在下列部件中,不属于控制器的是 。 A. 程序计数器 B. 数据缓冲器 C. 指令译码器 D. 指令寄存器(5) 为了确定下一条微指令的地址而采用的断定方式的基本思想是 。 A. 用程序计数器PC来产生后继微指令地址 B. 用微程序计数器mPC来产生后继微指令地址 C. 通过微指令顺序控制字段由设计者指定或由设计者指定的判别字段控制产生后继微指令地址 D. 通过指令中指定一个专门字段来控制产生后继微指令地址 (6) 构成控制信号序列的最小单位是 。A. 微程序 B. 微指令 C. 微命令 D. 机器指令 (7) 微程序控制器中,机器指令与微指令的关系是 。 A. 每一条机器指令由一条微指令来执行 B. 每一条机器指令由一段用微指令编成的微程序来解释执行 C. 一段机器指令组成的程序可由一条微 展开更多...... 收起↑ 资源预览