计算机组成原理 武汉科技大学 计算机科学与技术学院 计算机科学与技术专业 计算机组成原理 武汉科技大学 计算机科学与技术学院
第五章 中央处理器 本章内容 5.1 CPU的组成和功能 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 第五章 中央处理器 本章内容 5.1 CPU的组成和功能 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 5.5 微程序设计技术 5.6 硬布线控制器 5.7 传统的CPU 5.8 流水CPU 5.9 RISC CPU 5.10 多媒体CPU
传统的CPU由运算器和控制器两大部件组成,现代的CPU由运算器、控制器和Cache三大部件组成。
5.1 CPU的组成和功能 5.1.1 CPU器的功能 当用计算机解决某个问题时,我们首先必须为它编写程序。程序是一个指令序列,这个序列明确告诉计算机应该执行什么操作,在什么地方找到用来操作的数据。一旦把程序装入内存储器,就可以由计算机来自动完成取出指令和执行指令的任务。专门用来完成此项工作的计算机部件称为中央处理器,通常简称CPU。 CPU对整个计算机系统的运行是极其重要的,它具有如下四方面的基本功能: 1. 指令控制--控制程序中指令的执行顺序 程序的顺序控制称为指令控制。由于程序是一个指令序列,这些指令的相互顺序不能任意颠倒,必须严格按程序规定的顺序进行。
2. 操作控制--形成执行指令所需的控制信号并送往相应部件 一条指令的功能往往是由若干个操作信号的组合来实现的,因此,CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。 3. 时间控制--对操作控制信号加以时间上的约束 对各种操作实施时间上的定时称为时间控制。在计算机中,各种指令的操作信号以及一条指令的整个执行过程都受到时间的严格定时。 4. 数据加工--对数据进行相应的算术逻辑运算及相应加工处理 数据加工就是对数据进行算术运算和逻辑运算处理。
5.1.2 CPU的基本组成--现代CPU由运算器、cache和控制器三大部分组成。
算术逻辑单元ALU、累加寄存器AC 数据缓冲寄存器DR、状态条件寄存器PSW 组成: 运算器 作为“执行机构”接受控制器送来的命令,负责对数据进行加工处理,包括:执行所有算术、逻辑运算及比较、测试等。 功能: CPU 程序计数器PC、指令寄存器IR 指令译码器、时序产生器、操作控制器 组成: 控制器 功能: 作为“决策机构”协调和指挥整个计算机系统的操作,包括: (1)从内存中取出一条指令,并指出下一条指令在内存中的位置; (2)对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作; (3)指挥并控制CPU、内存和输入/输出设备之间数据流动的方向。
5.1.3 CPU中的主要寄存器 在CPU中至少要有六类寄存器。 这些寄存器用来暂存一个计算机字。根据需要,可以扩充其数目。 1.数据缓冲寄存器(DR) 数据缓冲寄存器用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中。 缓冲寄存器的作用是 : (1)作为CPU和内存、外部设备之间信息传送的中转站; (2)补偿CPU和内存、外围设备之间在操作速度上的差别; (3)在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。
2.指令寄存器(IR)保存现行令,并将操作码提供指令译码器译码 3.程序计数器(PC) 装入给定值,存储程序首地址,或转移目标地址 自动加1计数,每取出一条指令,自动指向下一条指令 4.地址寄存器(AR)保存当前CPU所访问的内存单元的地址 5.累加寄存器(AC)存放算术逻辑运算的操作数之一及运算结果 累加寄存器AC通常简称为累加器,它是一个通用寄存器。其功能是:当运算器的算术逻辑单元ALU)执行算术或逻辑运算时,为ALU提供一个工作区。累加寄存器暂时存放ALU运算的结果信息。显然,运算器中至少要有一个累加寄存器。 目前CPU中的累加寄存器,多达16个,32个,甚至更多。当使用多个累加器时,就变成通用寄存器堆结构,其中任何一个可存放源操作数,也可存放结果操作数。在这种情况下,需要在指令格式中对寄存器号加以编址。
6.状态条件寄存器(PSW)保存算术逻辑运算或测试的状态结果 状态条件寄存器保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,如运算结果进位标志(C),运算结果溢出标志(V),运算结果为零标 志(Z),运算结果为负标志(N)等等。这些标志位通常分别由 1位触发器保存。 除此之外,状态条件寄存器还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。因此,状态条件寄存器是一个由各种状态条件标志拼凑而成的寄存器。
5.1.4 操作控制器与时序产生器 数据通路 是许多寄存器之间传送信息的通路。 数据通路 是许多寄存器之间传送信息的通路。 信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器,都要加以控制。在各寄存器之间建立数据通路的任务,是由称为操作控制器的部件来完成的。操作控制器的功能,就是根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。 根据设计方法不同,操作控制器可分为时序逻辑型、存储逻辑型、时序逻辑与存储逻辑结合型三种。 1.硬布线控制器 --是采用时序逻辑技术来实现的; 2.微程序控制器--是采用存储逻辑来实现的; 3.前两种方式的组合
5.2 指令周期 5.2.1 指令周期的基本概念 计算机所以能自动地工作,是因为CPU能从存放程序的内存里取出一条指令并执行这条指令;紧接着又是取指令,执行指令……,如此周而复始,构成了一个封闭的循环。除非遇到停机指令,否则这个循环将一直继续下去。 指令周期 CPU从内存取出一条指令并执行这条指令的时间总和。 CPU周期 又称机器周期,CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。 时钟周期 通常称为节拍脉冲或T周期。一个CPU周期包含若干个时钟周期。
下图示出了采用定长CPU周期的指令周期示意图。 说明: (1) 指令周期由若干个CPU周期组成,第一个CPU周期为取指周期。 (2) 一条指令的CPU周期数取决于指令的复杂性,如有无操作数,操作数的多少,操作数的寻址方式等。 (3) 每个机器周期由若干个T周期构成,所含的T周期数有定长和变长两种。
5.2.2 非访内指令--CLA 的指令周期 CLA是一条非访内指令,其作用是将AC清零,它需要两个CPU 周期,其中取指令阶段需要一个CPU周期,执行指令阶段需要一个CPU周期。 1取指令阶段 (1)PC的内容20(八进制)被装入地址寄存器AR;(PC) -> AR (2)PC内容加1,变成21,为取下一条指令做好准备;(PC)+1 -> PC (3)地址寄存器的内容被放到地址总线上;(AR) -> ABUS (4)所选存储器单元20的内容经过数据总线,传送到数据缓冲寄存器DR;((AR)) -> DBUS -> DR (5)缓冲寄存器的内容传送到指令寄存器IR; (DR) -> IR (6)指令寄存器中的操作码被译码或测试; (7)CPU识别出是指令CLA,至此,取指令阶段即告结束。
2执行指令阶段 (1)操作控制器送一控制信号(清零)给算术逻辑运算单元ALU; (2)ALU响应该控制信号,将累加寄存器AC的内容全部清零,从而执行了CLA指令。
5.2.3 相加指令--ADD n 的指令周期 ADD n 指令的指令周期由三个CPU周期组成,其作用是将累加 累加器AC的内容与地址为n的存储单元的内容相加,结果仍送累加器AC,即(AC)+(n) -> AC ,以ADD 30为例说明如下:
1.送操作数地址 第二个CPU周期主要完成送操作数地址。在此阶段,CPU的动作只有一个,那就是把指令寄存器中的地址码部分(30)装入地址寄存器,其中30为内存中存放操作数的地址。(IR)中的地址码 -> AR 2.两操作数相加 第三个CPU周期主要完成取操作数并执行加法操作中。在此阶段,CPU完成如下动作: (1)把地址寄存器中的操作数的地址(30)发送到地址总线上。 (AR) -> ABUS ->存储器 (2)由存储器单元30中读出操作数(6),并经过数据总线传送到缓冲寄存器。(30) -> DBUS -> DR (3)执行加操作:由数据缓冲寄存器来的操作数(6)可送往ALU 的一个输入端,已等候在累加器内的另 一个操作数(因为CLA指令执行结束后累加器内容为零)送往ALU的另一输入端,于是ALU将两数相加,产生运算结果为0+6=6。这个结果放回累加器,替换了累加器中原先的数0 。(DR)+(AC) -> AC
5.2.4 存数指令--STA n 的指令周期 STA指令的指令周期由三个CPU周期组成,基作用是将累加器AC的内容送地址为n的存储单元,即(AC)->n,以STA 40为例。
1.送操作数地址 在执行阶段的第一个CPU周期中,CPU完成的动作是把指令寄存器中地址码部分的形式地址40装到地址寄存器。其中数字40是操作数地址。(IR)中的地址码 -> AR 2.存储和数 将累加器中的值存入指令指定的地址单元 (1)累加器的内容(6)被传送到数据缓冲寄存器DR; (AC) -> DR (2)把地址寄存器的内容(40)发送到地址总线上,40即为将要存入的数据6的内存单元号; (AR) -> ABUS (3)把缓冲寄存器的内容(6)发送到数据总线上; (DR) -> DBUS (4)数据总线上的数写入到所选中的存储器单元中,即将数6写入到存储器40号单元中。 写入 注意 :完成指令操作之后,累加器中仍然保留和数6,而存储器40号单元中原先的内容被冲掉 。
5.2.5 空操作指令--NOP和转移指令--JMP n 的指令周期 第四条指令即“NOP”指令,这是一条空操作指令。其中第一个CPU周期中取指令,CPU把23号单元的“NOP”指令取出放到指令寄存器,第二个CPU周期中执行该指令。因译码器译出是“NOP”指令,第二个CPU周期中操作控制器不发出任何控制信号。NOP指令可用来调程序占位或延时之用。 JMP指令的指令周期由两个CPU周期组成,即取指周期和执行周期。执行周期将IR中的目标地址送PC。以JMP 21为例。
1.第一个CPU周期(取指令阶段) CPU把24号单元的“JMP 21”指令取出放至指令寄存器, 同时程序计数器内容加1,变为25,从而取下一条指令做好准备。 2.第二个CPU周期(执行阶段) CPU把指令寄存器中地址码部分21送到程序计数器,从而用新内容21代替PC原先的内容25。这样,下一条指令将不从25单元读出,而是从内存21单元开始读出并执行,从而改变了程序原先的执行顺序。(IR)中的地址码 -> PC 注意 : 执行“JMP 21”指令时,我们此处所给的四条指令组成的程序进入了死循环,除非人为停机,否则这个程序将无休止地运行下去,因而内存单元40中的和数将一直不断地发生变化。当然,我们此处所举的转移地址21是随意的,仅仅用来说明转移指令能够改变程序的执行顺序而已。
5.2.6 五条指令的取指和执行过程
5.2.7 用方框图语言表示指令周期 在进行计算机设计时,可以采用方框图语言来表示一条指令的指令周期。 5.2.7 用方框图语言表示指令周期 在进行计算机设计时,可以采用方框图语言来表示一条指令的指令周期。 方框 代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作。 菱形 通常用来表示某种判别或测试,不过时间上它依附于紧接它的前面一个方框的CPU周期,而不单独占用一个CPU周期。
【例1】教材图5.15所示为双总线结构机器的数据通路,IR为指令寄存器,PC为程序计数器(具有自增功能),M为主存(受R/W信号控制),AR为地址寄存器,DR为数据缓冲寄存器, ALU由加、减控制信号决定完成何种操作,控制信号G控制的是一个门电路。另外,线上标注有小圈表示有控制信号,例中yi表示y寄存器的输入控制信号,R1o为寄存器R1的输出控制信号,未标字符的线为直通线,不受控制。
PC->AR M->DR DR->IR R2->Y R0->X R0+R2->R0 (1)“ADD R2,R0”指令完成(R0)+(R2)→R0的功能操作,画出其指令周期流程图,假设该指令的地址已放入PC中。并列出相应的微操作控制信号序列。 (2)“SUB R1,R3”指令完成(R3)-(R1)→R3的操作,画出其指令期流程图,并列出相应的微操作控制信号序列。 【解】(1)“ADD R2,R0”指令是一条加法指令,参与运算的两个数放在寄存器R2和R0中,指令周期流程图包括取指令阶段和执行指令阶段两部分(为简单起见 ,省去了“→” 号左边各寄存器代码上应加的括号)。根据给定的数据通路图,“ADD R2,R0”指令的详细指令周期流程图如图(a)所示。 PC->AR PCO,G,ARi 取指 M->DR R/W=R DR->IR DRO,G,IRi R2->Y R2O,G,Yi R0->X R0O,G,Xi R0+R2->R0 +,G,R0i
PC->AR M->DR DR->IR R3->Y R1->X R3 - R1->R3 PCO,G,ARi 图的右边部分标注了每一个机器周期中用到的微操作控制信号序列。 (2)“SUB R1,R3”指令是一条减法指令,其指令周期流程图如图(b)所示。与ADD指令不同的是:在执行指令阶段,微操作控制信号序列有所不同。 取指 M->DR R/W=R DR->IR DRO,G,IRi R3->Y R3O,G,Yi R1->X R1O,G,Xi R3 - R1->R3 -,G,R3i
5.3 时序产生器和控制方式 5.3.1 时序信号的作用和体制 时序信号 5.3 时序产生器和控制方式 5.3.1 时序信号的作用和体制 时序信号 CPU中一个类似“作息时间”的东西,使计算机可以准确、迅速、有条不紊地工作。机器一旦被启动,即CPU开始取指令并执行指令时,操作控制器就利用定时脉冲的顺序和不同的脉冲间隔,有条理、有节奏地指挥机器的动作,规定在这个脉冲到来时做什么,在那个脉冲到来时又做什么,给计算机 各部分提供工作所需的时间标志。为此,需要采用多级时序体制。 [思考] 用二进制码表示的指令和数据都放在内存里,那 么CPU是怎样识别出它们是数据还是指令呢? 从时间上来说,取指令事件发生在指令周期的第一个CPU周期中,即发生在“取指令”阶段,而取数据事件发生在指令周期的后
面几个CPU周期中,即发生在“执行指令”阶段。 从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器(IR),如果取 出的代码是数据,那么一定送往运算器(DR)。由此可见,时间控制对计算机来说是太重要了。 总之,计算机的协调动作需要时间标志,而时间标志则是用时序信号来体现的。 硬布线控制器中,时序信号往往采用主状态周期-节拍电位-节拍脉冲三级体制。一个节拍电位表示一个CPU周期的时间,它包含若干个节拍脉冲,一个主状态周期又可包含若干个节拍电位。 在微程序控制器中,时序信号比较简单,一般采用节拍电位-节拍脉冲二级体制。同样,一个节拍电位表示一个CPU周期的时间,它包含若干个节拍脉冲(时钟周期),节拍脉冲把一个CPU周期分成几个较小的时间隔,这时间间隔可是相等,也可以不相等。
5.3.2 时序信号产生器 时钟源、 环形脉冲发生器、 节拍脉冲和 读写时序译码逻辑 5.3.2 时序信号产生器 时钟源、 环形脉冲发生器、 节拍脉冲和 读写时序译码逻辑 启停控制逻辑 结构随机型的不同异,微程序控制器中使用的时序信号产生器最简单,其组成包括: 1.时钟源 作用:产生频率稳定且电平匹配的方波时钟脉冲信号,供环形脉冲发生器。 组成:石英 晶体振荡器和与非门组成的正反馈振荡电路。 2.环形脉冲发生器 作用:是产生一组有序的间隔相等或不等的脉冲序列,以便通过译码电路来产生最后所需的节拍脉冲。 组成:循环移位寄存器或计数器
3. 节拍脉冲和读写时序的译码 一个CPU周期产生四个等间隔节拍脉冲 T1o=C1C2 T2o=C2C3 T3o=C3 T4o=C1 读写时序的译码逻辑表达式: RDo=C2RD’ WEo=C3WE’
启停控制逻辑的核心是一个运行标志触发器Cr,当运行触发器Cr为“1”时,送出时序,为“0”时,阻断时序。 起停控制逻辑 一旦接通电源,就会产生原始的节拍电位信号T1o~ T4o,然而只有在启动机器运行的情况下,才允许时序产生器发出CPU工作所需的节拍脉冲,为此需要由启停控制逻辑来控制T1o~ T4o的发送。 T1 T2 T3 T4 RD WE 启停控制逻辑的核心是一个运行标志触发器Cr,当运行触发器Cr为“1”时,送出时序,为“0”时,阻断时序。 注意: 由于启停是随机的,所以必须确保时序从T1开始,到 T4才结束。故在Cr输入端引入一个RS触发器,用T4作Cr的时钟控制端。 T1o T2o T3o T4o RDo WEo Q Q Cr D R ^ T4o CLR 启动 停机 低电平触 发
5.3.3 控制方式 控制方式 即控制不同操作序列时序信号的方法。常用的有同步控制、异步控制、联合控制三种方式,其实质反映了时序信号的定时方式。 1.同步控制方式 在任何情况下,已定的指令在执行时所需的机器周期数和时钟周期数都固定不变。根据不同情况,同步控制方式可选取如下方案: (1)采用完全统一的机器周期执行各种不同的指令。 (2)采用不定长机器周期。 (3)中央控制与局部控制结合。
2.异步控制方式 其特点是:每条指令、每个操作控制信号需要多少时间就占用多少时间。这意味着每条指令的指令周期可由多少不等的机器周期数组成;也可以是当控制器发出某一操作控制信号后,等待执行部件完成操作后发“回答”信号,再开始新的操作。显然,用这种方式形成的操作控制序列没有固定的CPU周期数(节拍电位)或严格的时钟周期(节拍脉冲)与之同步。 3.联合控制方式 此为同步控制和异步控制相结合的方式。 情况(1) 大部分操作序列安排在固定的机器周期中,对某些时间难以确定的操作则以执行部件的“回答”信号作为本次操作的结束; 情况(2) 机器周期的节拍脉冲数固定,但是各条指令周期的机器周期数不固定。
5.4 微程序控制器 微程序控制器的优点:具有规整性,灵活性,可维护性。 微程序控制器的基本思想: 仿照通常的解题程序方法,把操作控制信号编成所谓的“微指令”存放在只读存储器里,当机器运行时,逐条地读出这些“微指令”,从而产生全机所需要的各种微操作控制信号,使相应部件执行规定的操作。 5.4.1 微命令和微操作 控制部件—控制器—通过控制线发出控制命令 运算器 存储器 外设 计算机 执行控制命令并通过反馈线反馈状态信息 执行部件
微命令-- 控制部件通过控制线向执行部件发出的各种控制命令。 微操作-- 执行部件接受微命令后所进行的操作。 状态测试--执行部件通过反馈线向控制部件反映操作情况,以便使控制部件根据执行部件的状态下达新的命令。 微操作类型— 相容性 在同时或同一CPU周期内可并行执行的操作 相斥性 不能在在同时或同一CPU周期内可并行执行的操作 控制线 控制部件 执行部件 反馈线 控制部件与执行部件通过控制线和反馈信息进行联系。
简单运算器的数据通路 相斥 相斥 1、2、3相容 4 、 6 、 8与5、7、9也是相容的
5.4.2 微指令和微程序 微指令 在机器的一个CPU周期中,一组实现一定操作功能的微命 令的组合。 5.4.2 微指令和微程序 微指令 在机器的一个CPU周期中,一组实现一定操作功能的微命 令的组合。 微程序 实现一条机器指令功能的许多条微指令组成的序列。 控制部件与执行部件通过控制线和反馈信息进行联系。 微指令的构成:操作控制字段 + 顺序控制字段 ’ ’ ’
4.3 微程序控制器原理框图 由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。
1.控制存储器CS 作用:用来存放实现全部指令系统的微程序 操作:只读 要求:是速度快,读出周期要短。 2.微指令寄存器μIR 作用:用来存放由控制存储器读出的一条微指令信息。 组成:微命令寄存器+微地址寄存器μAR 3.地址转移逻辑 作用:当需要转移时,根据机器指令的操作码字段OP和状态条件及P字段实现对μAR的修改。 微指令由控制存储器读出后直接给出下一条微指令的地址,即微地址,这个微地址信息就存放在微地址寄存器中。如果微程序不出现分支,那么下一条微指令的地址就直接由微地址寄存器给出。
5.4.4 微程序举例 一条机器指令对应一个微程序,而微程序的总和便可实现整个指令系统。 以“十进制”指令为例:数据通路和微指令流程图如下: 5.4.4 微程序举例 一条机器指令对应一个微程序,而微程序的总和便可实现整个指令系统。 以“十进制”指令为例:数据通路和微指令流程图如下: RD 0000 PC->AR->ABUS DBUS->DR->IR PC+1 0000 P1 1010 R1+R2->R2 1001 R2+R3->R2 0000 Cy<>0 P2 Cy=0 0001 R2-R3->R2 0000
微指令格式如下: 设数a和b已存放在上图的R1和R2寄存器中,数6存放在R3中,则完成十进制加法的微程序流程图如上图,算法要求先进行 a+b+6 运算,然后判断结果有无进位,当进位标志Cy=1,则说明结果是正确的,当Cy=0,则说明本不需加6,所以应减去6,从而得到正确的结果。 从流程图可见,“十进制加法”指令对应的微程序由四条微指令组成,每一条微指令用一个方框表示。
(1) 第一条微指令是取指周期,有三个任务: 从内存取指令到IR,对应的微命令有 对程序计数器PC加1 根据OP进行判别测试,转十进制的加法微程序 LDAR RD LDDR LDIR PC+1 所以第一条微指令的二进制代码是000 000 000 000 11111 10 0000 设十进制加法的OP为1010,在P1有效时,修改μAR的内容为1010,则第二条指令从1010处开始执行。 (2) 第二条微指令的工作是完成a+b,即R1+R2->R2, 对应的微命令为: 所以第二条微指令的二进制编码是010 100 100 100 00000 00 1001 因此时P1P2均为0,所以下一条微指令的地址由下址字段决定即1001。 (3) 第三条指令的工作是完成加6修正,即R2+R3->R3,对应的微命 R1->X R2->Y + LDR2
若Cy=1,则加6修正正确,下次执行新的一条指令,即微程序又进入取指令周期开始取下一条指令。 令为: R2->X R3->Y + LDR2 所以第三条微指令的二进制编码是010 001 001 100 00000 01 0000 若Cy=1,则加6修正正确,下次执行新的一条指令,即微程序又进入取指令周期开始取下一条指令。 若Cy=0,则不应该加6,故由P2对下址字段进行修改,改为0001,将不该加的6重新减去,所以要执行第四条指令。 (4) 第四条微指令的工作是完成减6操作,即R2+R3->R2,对应的微命令为: R2->X R3->Y - LDR2
所以第四条微指令的二制编码是 010 001 001 001 0000 00 0000 执行完第四条指令后,应转取指令操作,所以下址字段为0000,即重新开始取出下一条指令。 四条微指令的编码如下:
微指令周期 = 读出微指令的时间 + 执行该条微指令的时间 5.4.5 CPU周期与微指令周期的关系 在串行方式的微程序控制器中: 微指令周期 = 读出微指令的时间 + 执行该条微指令的时间 下图示出了某小型机中CPU周期与微指令周期的时间关系: 一个CPU周期为0.8μs,它包含四个等间隔的节拍脉冲T1—T4,每个脉冲宽度为200ns。 用T4作为读取微指令的时间,用T1+T2+T3时间作为执行微指令的时间。可用T4上升沿将运算结果打入某个寄存器。与此同时可用T4间隔读取下条微指令,经200ns时间延迟,下条微指令又从只读存储器读出,并用T1上升沿打入到微指令寄存器。 如忽略触发器的翻转延迟,那么下条微指令的微命令信号就从T1上升沿起就开始有效,直到下一条微指令读出后打入微指令寄存器为止。因此一条微指令的时间恰好是0.8μs,一个CPU周期的时间。
5.4.6 机器指令与微指令的关系 【问】一会儿取机器指令,一会儿取微指令,它们之间到底是什么关系? 【解】 5.4.6 机器指令与微指令的关系 【问】一会儿取机器指令,一会儿取微指令,它们之间到底是什么关系? 【解】 1.一条机器指令对应一个微程序,这个微程序是由若干条微指令序列组成的。因此,一条机器指令的功能是由若干条微指令组成的序列来实现的。简言之,一条机器指令所完成的 操作划分成若干条微指令来完成,由微指令进行解释和执行。 2.从指令与微指令,程序与微程序,地址与微地址的一一对应关系来看,前者与内存储器有关,后者与控制存储器有关。与此相关,也有相对应的硬设备,请参见CAI演示。3.我们在讲述本章5.2节时,曾讲述了指令与机器周期概念,并归纳了五条典型指令的指令周期,并演示了这五条指令的微程序流程图,每一个CPU周期就对应一条微指令。这就告诉我们如何设计微程序,也将使我们进一步体验到机器指令与微指令的关系。
【例2】设某计算机运算器框图如图(a)所示,其中ALU为16位的加法器(高电平工作),SA,SB为16位暂存器。4个通用寄存器由D触发器组成,Q端输出,其读、写控制功能见下表。 机器采用串行微程序控制方式,其微指令周期见图(b)。其中读ROM是从控存中读出一条微指令时间,为1μs;ALU工作是加法器做加法运算,为500ns;m1是读寄存器时间,为500ns;m2是写寄存器的工作脉冲宽度,为100ns。 微指令字长12位,微指令格式如下(未考虑顺序控制字段):
RA0RA1:读R0-R3的选择控制 WA0WA1:写R0-R3的选择控制 R:寄存器读命令 W:寄存器写命令 LDSA:打入SA的控制信号 LDSB:打入SB的控制信号 SB-ALU:传送SB的控制信号 SB-ALU:传送SB的控制信号,并使加法器最低位加1. Reset:清暂存器SB为零的信号 ~:一段微程序结束,转入取机器指令的控制信号 要求:用二进制代码写出如下指令的微程序: (1)“ ADD R0,R1 ”指令,即(R0)+(R1)→R1 (2)“ SUB R2,R3 ”指令,即(R3)-(R2)→R3 (3)“ MOV R2,R3 ”指令,即(R2)→(R3)
【解】 先画出三条指令的微指令的微程序流程图,如下图所示。 其中未考虑“取指周期”和顺序控制问题,也即微程序仅考虑“执行周期”,微指令序列的顺序用数字标号标在每条微指令的右上角。每一框表示一条微指令。 根据给定的微指令周期时间关系,完成ADD,SUB指令的执行动作需要3条微指令,MOV指令只需2条微指令。用二进制代码写出的三条指令的微程序列于下表中,其中*表示代码随意设置(0或1均可)。
1 2 3 4 5 6 7 8 9 10 11 12 R0->SA R1->SB R0,R1 SA+ SB ->R1 1 2 3 4 5 6 7 8 9 10 11 12 R0->SA R1->SB R0,R1 SA+ SB ->R1 R3->SA R2->SB R2,R3 SA- SB ->R3 R2->SA R2,R3 0->SB ,SA+ SB ->R3 1 2 3 4 5 6 7 8 9 10 11 12
5.5 微程序设计技术 微程序设计的第一步是要设计微指令结构,应当追求的目标是: 有利于缩短微指令字长度 有利于减小控制存储器的容量 有利于提高微程序的执行速度 有利于对微程序的修改 有利于提高微程序设计的灵活性
5.5.1 微命令编码 微命令编码 对微指令中的操作控制字段采用的表示方法。有三种: 5.5.1 微命令编码 微命令编码 对微指令中的操作控制字段采用的表示方法。有三种: 1.直接表示法--操作控制字段中的 每一位代表一个微命令。 优点: 简单直观,其输出直接用于控制。 缺点: 微指令字较长,因而使控制存储器容量较大。 2.编码表示法--把一组相斥性的微命令信号组成一个小组(即一个字段) ,然后通过小组(字段)译码器对每一个微命令信号进行译码 ,译码输出作为操作控制信号,其微指令结构如下图所示。
优点:可以用较小的二进制信息位表示较多的微命令信号,可使微指令字大大缩短。例如3位二进位译码后可表示7个微命令, 4位二进制位译码后可表示15个微命令。 缺点:增加译码电路,使微程序的执行速度稍稍减慢 。 目前在微程序控制器设计中,字段直接译码法使用较普遍。 3.混合表示法 这种方法是把直接表示法与字段编码法混合使用,以便能综合考虑指令字长、灵活性、执行微程序速度等方面的要求。 另外 在微指令中还可附设一个常数字段。该常数可作为操作数送入ALU运算,也可作为计数器初值用来控制微程序循环次数。
5.5.2 微地址的形成方法 1.计数器方式 将μAR改为μPC。 2.多路转移方式 一条微指令具有多个转移分支的能力称为多路转移。 5.5.2 微地址的形成方法 微指令执行的顺序控制问题,实际上是如何确定下一条微指令的地址问题。通常,产生后继微地址有两种方法: 1.计数器方式 将μAR改为μPC。 顺序执行时, μPC +1->μPC。 非顺序执行时,通过将新微地址更新μPC达到转去新的目标 计数器方式的基本特点是:微指令的顺序控制字段较短,微地址产生机构简单。但是多路并行转移功能较弱,速度较慢,灵活性较差。 2.多路转移方式 一条微指令具有多个转移分支的能力称为多路转移。 在多路转移方式中,当微程序不产生分支时,后继微地直接由微指令的顺序控制字段给出;当微程序出现分支时,有若干“候选”微地址可供选择:即按顺序控制字段的“判别测试”标志和“状态条件”信息来选择其中一个微地址。“状态条件”有n位标志,可实现微程序2n路转移,涉及微地址寄存器的n位 。 多路转移方式的特点是:能以较短的顺序控制字段配合,实现多路
并行转移,灵活性好,速度较快,但转移地址逻辑需要用组合逻辑方法设计。 【例3】微地址寄存器有6位(μA5-μA0),当需要修改其内容时,可通过某一位触发器的强置端S将其置“1”。现有三种情况: (1)执行“取指”微指令后,微程序按IR的OP字段(IR3-IR0)进行16路分支; (2)执行条件转移指令微程序时,按进位标志C的状态进行2路分支; (3)执行控制台指令微程序时,按IR4,IR5的状态进行4路分支。 请按多路转移方法设计微地址转移逻辑。 【解】 按所给设计条件,微程序有三种判别测试,分别为P1,P2,P3。 由于修改μA5 ~μA0内容具有很大灵活性,现分配如下: (1)用P1和IR3-IR0修改μA3-μA0; (2)用P2和C修改μA0; (3)用P3和IR5,IR4修改μA5,μA4。 另外还要考虑时间因素T4(假设CPU周期最后一个节拍脉冲),故转移逻辑表达式如下:
μA5=P3·IR5·T4 μA4=P3·IR4·T4 μA3=P1·IR3·T4 μA2=P1·IR2·T4 μA1=P1·IR1·T4 μA0=P1·IR0·T4+P2·C·T4 由于从触发器强置端修改,故前5个表达式可用“与非”门实现,最后一个用“与或非”门实现。 下图仅画出了μA2、μA1、μA0触发器的微地址转移逻辑图。
5.5.3 微指令格式 微指令的格式大体分成两类:水平型微指令和垂直型微指令。 1.水平型微指令 5.5.3 微指令格式 微指令的格式大体分成两类:水平型微指令和垂直型微指令。 1.水平型微指令 一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令。 其一般格式如下: 控 制 字 段 判别测试字段 下地址字段 按照控制字段的编码方法不同,水平型微指令又分为三种:全水平型(不译法)微指令,字段译码法水平型微指令,以及直接和译码相混合的水平型微指令。 2.垂直型微指令 微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能 ,称为垂直型微指令。其结构类似于机器指令的结构。它有操作码,在一条微指令中只有1—2个微操作命令,每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多。它是采用较长的微程序结构去换取较短的微指令结构。
下面举4条垂直型微指令的微指令格式加以说明。设微指令字长为16位,微操作码3位。 (1)寄存器-寄存器传送型微指令 其功能是把源寄存器数据送目标寄存器。13—15位为微操作码(下同),源寄存器和目标寄存器编址各5位,可指定31个寄存器。 (2)运算控制型微指令 其功能是选择ALU的左、右两输入源信息,按ALU字段所指定的运算功能(8种操作)进行处理,并将结果送入暂存器中。左、右输入源编址可指定31种信息源之一。 (3)访问主存微指令 其功能是将主存中一个单元的信息送入寄存器或者将寄存器的数据送往主存。存储器编址是指按规定的寻址方式进行编址。第1,2位指定读操作或写操作(取其之一)。
(1)水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。 (4)条件转移微指令 011 其功能是根据测试对象的状态决定是转移到D所指定的微地址单元,还是顺序执行下一条微指令。9位D字段不足以表示一个完整的微地址,但可以用来替代现行μPC的低位地址。 测试条件字段有4位,可规定16种测试条件。 3.水平型微指令与垂直型微指令的比较 (1)水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。 (2)水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。 (3)由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。 (4)水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。
5.5.4 动态微程序设计 微程序设计技术有静态微程序设计和动态微程序设计之分。 1.静态微程序设计 微程序设计技术有静态微程序设计和动态微程序设计之分。 1.静态微程序设计 对应于一台计算机的机器指令只有一组微程序,而且这一组微程序设计好之后,一般无须改变而且也不好改变,这种微程序设计技术称为静态微程序设计。 2.动态微程序设计 当采用EPROM作为控制存储器时,还可以通过改变微指令和微程序来改变机器的指令系统,这种微程序设计技术称为动态微程序设计。采用动态微程序设计时,微指令和微程序可以根据需要加以改变,因而可在一台机器上实现不同类型的指令系统。这种技术又称为仿真其他机器指令系统,以便扩大机器的功能。
5.6 硬布线控制器 1.基本思想 硬布线控制器是早期设计计算机的一种方法。这种方法是把控制部件看作为产生专门固定时序控制信号的逻辑电路,而此 逻辑电路以使用最少元件和取得最高 操作速度为设计目标。一旦控制部件构成后,除非重新设计和物理上对它重新布线,否则要 想增加新的控制功能是不可能的。这种逻辑电路是一种由门电路和触发器构成的复杂树形逻辑网络,故称之为硬布线控制器。 硬联线控制器结构如图:
逻辑网络的输入信号来源有三个: (1)来自指令操码译码器的输出Im; (2)来自执行部件的反馈信息Bj; (3)来自时序产生器的时序信号,包括节拍电位信号M和节拍脉冲信号T。 逻辑网络N的输出信号就是微操作控制信号,它用来对执行部件进行控制。 硬布线控制器的基本原理:C=f(Im,Mi,Tk,Bj) 规纳起来可叙述为: 某一微操作控制信号C是指令译码器输入出Im、时序信号(节拍电位Mi、节拍脉冲Tk)和状态条件信号Bj的逻辑函数。 优点:速度快 缺点:逻辑复杂,不便形成系列机。
2.指令执行流程 在用硬联线实现的操作控制器中,通常,时序产生器除了产生节拍脉冲信号外,还应当产生节拍电位信号。因为在一个指令周期中要顺序执行一系列微操作,需要设置若干节拍电位来定时。例如前面提到的五条指令的指令周期,其指令流程可用下图来表示 。
图中M1、M2、M3为三个节拍电位信号,用于定时。 由于采用同步工作方式,长指令和短指令对节拍时间的利用都是一样的。这对短指令来讲,在时间的利用上是浪费的,因而也降低了CPU的指令执行速度,影响到机器的速度指标。为了改变这种情况,在设计短指令流程时可以跳过某些节拍。当然在这种情况下,节拍信号发生器的电 路相应就要复杂一些。 节拍电位信号的产生电路与节拍脉冲产生电路十分类似,它可以在节拍脉冲信号时序器的基础上产生,运行中以循环方式工作,并与节拍脉冲保持同步。 3.微操作控制信号的产生 在微程序控制器中,微操作控制信号由微指令产生,并且可以重复使用。 在硬联线控制器中,某一微操作控制信号由布尔代数表达式描述的输出函数产生。 设计微操作控制信号的方法和过程是,根据所有机器指令流程
寻找出产生同一个微操作信号的所有条件,并与适当的节拍电位和节拍脉冲组合,从而写出其布尔代数表达式并进行简化,然后用门电路或可编程器件来实现。 为了防止遗漏,设计时可按信号出现在指令流程图中的先后次序书写,然后进行归纳和简化。要特别注意控制信号是电位有效还是脉冲有效,如果是脉冲有效,必须加入节拍脉冲信号进行相“与”。 [例4] 图5.32中五条指令的微操作控制信号举例,注意T脉冲的顺序。 LDAR = M1·T2+M2(ADD+STA)·T2 LDDR = M1·T3+M3(ADD+STA)·T3 LDIR = M1·T4 RD = M1+M3·ADD WE = M3·STA 其中M1、M2、M3是三个节拍电位信号;T3、T4为时钟周期信号;ADD、STA、JMP是指令OP字段译码器的输出信号。
5.7 传统的CPU 5.7.2 Intel 8088 CPU Intel 8088是一种通用的准16位微处理器,其内部结构为16位,与外部交换的数据为8位。它可以处理16位数据(具有16位运算指令,包括乘除法指令),也可以处理8位数据。它有20条地址线,所以直接寻址能力达到1M字节。采用40条引线封装,单相时钟,电源为5V。 8088CPU的内部结构:
CPU从功能上来说分成两大部分: 总线接口单元BIU 负责与存储器和外围设备接口; 执行单元EU 负责指令的执行。 寄存器能处理16位数据,所以最上面4个寄存器是16位数据寄存器,用以暂存16位的操作数。其中AH+AL为累加器,其他三个16位寄存器用以存放操作数。 当处理8位数时,四个16位数据寄存器可变作八个8位寄存器使用。 堆栈指针SP用来指示堆栈操作时堆栈在主存的位置,但是SP必须与堆栈段寄存器SS一起使用 。另外三个16个寄存器BP(基数指针)、SI(源变址)、DI(目的变址)用来增加几种寻址方式,从而能更灵活的寻找操作数。 指令指针IP的功能相当于一般机器的程序计数器PC,但是IP要与代码分段寄存器CS相配合才能形成真正的物理地址。 状态寄存器PSW由九个标志位组成,以反映操作结果的某些状态或机器运行状态。 四个16位的段寄存器,用来存放主存段地址(代码段CS,数据段DS,堆栈段SS,附加段ES)。 通过把某个段寄存器左移4位低位
补零后与16位偏移地址相加的方法可形成20位长度的实际地址,从而可使主存具有一兆字节(2的20次方=1M)的寻址能力。 取指令时,CPU自动选择代码分段寄存器CS,再加上由IP所决定的16位位移量,便得到所取指令的20位主存物理地址。 进行堆栈操作时,CPU自动选择堆栈分段寄存器SS,再加上SP所决定的16位偏移量,便得到堆栈操作所需要的20位物理地址。 涉及到一个操作数时,CPU自动选择数据分段寄存器DS或附加分段寄存器ES,再加上16位偏移量,便得到操作数的20位物理地址。此处的16位偏移量,可以是包含在指令中的直接地址,也可以是某一个16位地址寄存器的值,又可以是指令中的偏移量加上16位地址寄存器的值等等,这要取决于指令的寻址方式。 在不改变段寄存器值的情况下,寻址的最大范围是64KB。
5.7.4 Intel 80486 CPU 1. 486 CPU的特点 Intel 80486是32位的CPU,内部结构见文字教材图5.36。其主要特点如下: (1)通过采用流水技术,以及微程序控制和硬布线逻辑控制相结合的方式,进一步缩短可变长指令的译码时间,达到基本指令可以在一个时钟周期内完成。 (2)486芯片内部包含一个8KB的数据和指令混合性cache,为频繁访问的指令和数据提供快速的内部存储,从而使系统总线有更多的时间用于其他控制。 (3)486芯片内部包含了增强性80387协处理器,称为浮点运算部件(FPU)。由于FPU功能扩充 ,且放在CPU内部,使引线缩短,故速度比80387提高了3—5倍。 (4)486 CPU的内部数据总线宽度为64位,这也是它缩短指令周期的一个原因。而外部数据总线的宽度也可以自动转换。 (5)地址信号线扩充到32位,可以处理4GB的物理存储空间。如果利用虚拟存储器,其存储空间达64TB。 (6)486 CPU采用单倍的时钟频率,而在CLK端加入的时钟频率,就是它内部CPU的时钟频率, 因此大大增加了电路的稳定性。
2. 486 CPU的内部结构 486的内部结构包含如下九个功能部件: 总线接口部件、小容量cache、指令预取部件、指令译码器、段管理部件、页管理部件、定点运算部件ALU、浮点运算部件FPU及操作控制部件。 总线接口部件主要用来产生访问外部存储器和I/O口所需要的地址、数据、命令信号。 段管理部件用来把指令指定的逻辑地址(程序中指定的虚拟地址)变成线性地址。 页管理部件的功能是把线性地址换算成物理地址。 指令预取部件中包含了32字节的预取队列寄存器,可以存放多条指令,因而是一种流水线结构。 ALU中包含了通用寄存器组以及各种算术逻辑运算操作。
5.8 流水CPU 5.8.1 并行处理技术 并行性的两种含义: 同时性 指两个以上事件在同一时刻发生; 5.8.1 并行处理技术 并行性的两种含义: 同时性 指两个以上事件在同一时刻发生; 并发性 指两个以上事件在同一时间间隔内发生。 计算机的并行处理技术概括起来主要有以下三种形式: 1.时间并行 时间并行指时间重叠,在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。 时间并行性概念的实现方式就是采用流水处理部件。这是一种非常经济而实用的并行技术,能保证计算机系统具有较高的性能价格比。目前的高性能微型机几乎无一例外地使用了流水技术。FPU则完成浮点数运算、二进制整数运算、十进制数串运算等。 操作控制部件采用微程序控制和硬布线控制相结合的方式,因而较好地发挥了效率。
2.空间并行 空间并行指资源重复,在并行性概念中引入空间因素,以“数量取胜” 为原则来大幅度提高计算机的处理速度。大规模和超大规模集成电路的迅速发展为空间并行 技术带来了巨大生机,因而成为目前实现并行处理的一个主要途径。空间并行技术主要体现 在多处理器系统和多计算机系统。但是在单处理器系统中也得到了广泛应用。 3.时间并行+空间并行 指时间重叠和资源重复的综合应用 ,既采用时间并行性又采用空间并行性。显然,第三种并行技术带来的高速效益是最好的。
5.8.2 流水CPU的结构 1. 流水计算机的系统组成 现代流水计算机的系统组成原理如右图所示。其中CPU按流水线方式组织,通常由三部分组成: 指令部件 指令队列 执行部件 这三个功能部件可以组成一个3级流水线。
存储器加速措施: 为了使存储器的存取时间能与流水线的其他各过程段的速度相匹配,一般都采用多体交叉存器。 执行段加速措施: 执行段的速度匹配问题:通常采用并行的运算部件以及部件流水线的工作方式来解决。方法包括: (1)将执行部件分为定点执行部件和浮点执行部件两个可并行执行的部分, 分别处理定点运算指令和浮点运算指令; (2)在浮点执行部件中,又有浮点加法部件和浮点乘/除部件,它们也可以同时执行不同的指令; (3)浮点运算部件都以流水线方式工作。
把输入的任务(或过程)分割为一系列子任务; 使各子任务能在流水线的各个阶段并发地执行; 各段之间设有高速缓冲存储器,暂存上一过程段的处理结果 2. 流水CPU的时空图 计算机的流水处理过程非常类似于工厂中的流水装配线,具体措施如下: 把输入的任务(或过程)分割为一系列子任务; 使各子任务能在流水线的各个阶段并发地执行; 各段之间设有高速缓冲存储器,暂存上一过程段的处理结果 当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现了子任务级的并行性。 下面通过时空图来证明这个结论。 图(a)表示流水CPU中一个指令周期的任务分解。
图(b)表示非流水计算机的时空图。 图(c)表示流水计算机的时空图。 图(d)表示超标量流水计算机的时空图。 具有两条以上指令流水线
3. 流水线分类 一个计算机系统可以在不同的并行等级上采用流水线技术。常见的流水线形式有: 指令流水线 ----指令步骤的并行。将指令流的处理过程划分为取指令、译码、执行、写回等几个并行处理的过程段。目前,几乎所有的高性能计算机都采用了指令流水线。 算术流水线 ----运算操作步骤的并行。如流水加法器、流水乘法器、流水除法器等。 现代计算机中已广泛采用了流水的算术运算器。 处理机流水线 ----又称为宏流水线,是指程序步骤的并行。由一串级联的处理机构成流水线的各个过程段,每台处理机负责某一特定的任务。数据流从第一台处理机输入,经处理后被送入与第二台处理机相联的缓冲存储器中。第二台处理机从该存储器中取出数据进行处理,然后传送给第三台处理机,如此串联下去。随着高档微处理器芯片的出现, 构造处理机流水线将变得容易了。处理机流水线应用在多机系统中。
5.8.3 流水线中的主要问题 流水过程中通常会出现以下三种相关冲突,使流水线断流。 1. 资源相关 资源相关是指多条指令进入流水线后在同一机器时钟周期内争用同一个功能部件所发生的冲突。假定一条指令流水线由五段组成。由下表可以看出,在时钟4时,I1与I4两条指令发生争用存储器资源的相关冲突。 两条指令同时访问内存发生资源相关冲突
一是第I4条指令停顿一拍后再启动;二是增设一个存储器,将指令和数据分别放在两个存储器中。 2. 数据相关 解决资源相关冲突的办法: 一是第I4条指令停顿一拍后再启动;二是增设一个存储器,将指令和数据分别放在两个存储器中。 2. 数据相关 在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关的。 在流水计算机中,指令的处理是重叠进行的,前一条指令还没有结束,第二、三条指令就陆续地开始工作。由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突。如下表所示,ADD指令与SUB指令发生了数据相关冲突。 两条指令发生数据相关冲突 (R2)+(R3)->R1 (R1)-(R5)->R4 (R1)^(R7)->R6
解决数据相关冲突的办法: 在流水CPU的运算器中设置若干运算结果缓冲寄存器,暂时保留运算结果,以便于后继指令直接使用,这称为“向前”或定向传送技术 3. 控制相关—由转移指令引起 当执行转移指令时,依据转移条件的产生结果,可能为顺序取下条指令;也可能转移到新的目标地址取指令,从而使流水线发生断流。 解决办法:常用以下两种转移处理技术: 延迟转移法 由编译程序重排指令序列来实现。基本思想是“先执行再转移”,即发生转移时并不排空指令流水线,而是让紧跟在转移指令Ib之后已进入流水线 的少数几条指令继续完成。如果这些指令是与Ib结果无关的有用指令,那么延迟损失时间片正好得到了有效的利用。 转移预测法 用硬件方法来实现,依据指令过去的行为来预测将来的行为。通过使用转移取和顺序取两路指令预取队列器以及目标指令cache,可将转移预测提前到取指阶段进行,以获得良好的效果。
【例4】流水线中有三类数据相关冲突:写后读相关;读后写相关;写后写相关。判断以下三组指令各存在哪种类型的数据相关。 (1) I1: ADD R1,R2,R3 ; (R2) + (R3)->R1 I2: SUB R4,R1,R5 ; (R1) - (R5)->R4 (2) I3: STA M(x),R3 ; (R3)->M(x),M(x)是存储器单元 I4: ADD R3,R4,R5 ; (R4)+(R5)->R3 (3) I5: MUL R3,R1,R2 ; (R1)×(R2) -> R3 I6: ADD R3,R4,R5 ; (R4) + (R5) -> R3 【解】 第(1)组指令中,I1指令运算结果应先写入R1,然后在I2指令中读出R1内容。由于I2指令进入流水线,变成I2指令在I1指令写入R1前就读出R1内容,发生RAW相关。 第(2)组指令中,I3指令应先读出R3内容并存入存储单元M(x),然后在I4指令中将运算结果写入R3。但由于I4指令进入流水线,变成I4指令在I3指令读出R3内容前就写入R3,发生WAR相关。 第(3)组指令中,如果I6指令的加法运算完成时间早于I5指令的乘法运算时间,变成指令I6在指令I5写入R3前就写入R3,导致R3的内容错误,发生WAW相关 。
5.8.4 pentium CPU 1.pentium的技术性能 pentium是Intel公司生产的超标量流水处理器,早期使用5V工作电压,后期使用3.3V工作电压。CPU的主频是片外主总线时钟频率(60MHz或66MHz)的倍频,有120,166,200MHz等多种。 CPU内部的主要寄存器宽度为32位,故认为它是一个32位微处理器。但它通向存储器的外部数总线宽度为64位,每次总线操作可以同时传输8个字节。以主总线(存储器总线)时钟频率66MHz计算,64位数据总线可使CPU与主存的数据交换速率达到528MB/s。CPU支持多种类型的总线周期,其中一种称猝发模式,在此模式下,可在一个总线周期内读出或写入256位(32字节)的数据。 CPU外部地址总线宽度是36位,但一般使用32位宽,故物理地址空间为4096MB(4GB)。虚拟地址空间为64TB,分页模式除支持4KB页面外(与486相同),还支持2MB和4MB页面。其中2MB页面的分页模式必须使用36位地址总线。 CPU内部分别设置指令cache和数据cache,外部还可接L2cache。CPU采用U,V两条指令流水线,能在一个时钟周期内发射两条简单的整数指令,也可发射一条浮点指令。操作控制器采用硬布线控制和微程序控制相结合的方式。大多数简单指令用硬布线控制实现,在一个时钟周期内执行完毕。对微程序实现的指令,也在2—3个时钟周期内执行完毕。
pentium具有非固定长度的指令格式,9种寻址方式,191条指令,但是在每个时钟周期又能执行两条指令。因此它具有CISC和RlSC两者的特性,不过具有的CISC特性更多一些,因此被看成为一个CISC结构的处理器。以CISC结构实现超标量流水线,并有BTB方式的转移预测能力,堪称为当代CISC机器的经典之作。 2.奔腾CPU的结构框图 CPU的结构框图请参见教材。 (1)超标量流水线 超标量流水线是pentium系统结构的核心。它由U和V两条指令流水线构成,每条流水线都有自已的ALU、地址生成电路、与数据cache的接口。两个指令预取缓冲器,每个都是32字节,负责由指令cache或主存取指令并放入其中。
指令译码器除完成译码指令外,还要完成指令配对检查。两条连续的指令I1,I2前后被译码,然后判断是否将这一对指令并行发射出去。发射一对指令必须满足如下条件:(1)两 条 指令是简单指令;(2)两条指令不发生数据相关;(3)每条指令都不同时含有立即数和偏移量 ;(4)只有I1允许带有指令前缀。CPU对U,V两条流水线的调度采用按序发射按序完成策略 。检查合格的一对指令同时被发射到U,V流水线的下一段。如果不满足配对条件,只允许I1指令发射到U流水线的下一段。在指令配对条件下,流水线在每个时钟周期内执行两条简单的整数指令,但一般只能执行一条浮点数指令。原因是:浮点数指令流水线是8段,而前5段与U,V流水线(共5段)共享,而且某些浮点操作数是64位,所以浮点数指令不能与整数指令同时执行。 控制ROM属于微程序控制器,其中存放一组解释指令操作顺序的微指令代码。 两个地址生成器用于计算存储器操作数地址。各种模式下的逻辑地址最终要转换成物理地址来访问数据cache,并用转换后援缓冲器TLB来加速这种地址转换过程。寄存器堆有8个32位整数寄存器,用于地址计算、保存ALU的源操作数和目的操作数。
(2)指令cache和数据cache 80486 CPU中有8KB的指令和数据共用的cache。而奔腾CPU则分设指令cache和数据cache,各8KB。指令cache是只读的,以单端口256位(32B)向指令预取缓冲器提供超长指令字代码。数据cache是可读可写的,双端口,每个端口32位,与U,V两条流水线交换整数数据,或组合成一个64位端口与浮点运算部件交换浮点数据。两个cache与64位数据、32位地址的CPU内部总线相连接。 两个cache都是2路组相联结构,每个32字节。数据cache可设置成行写回或全写法方式,并守MESI协议来维护L1cache,L2cache的一致性。 两个cache都使用物理地址。每个cache都有一个后援缓冲器TLB,负责将TLB命中的线性地址转换成32位物理地址。 指令cache与数据cache独立设置是对标量流水线的有力支持,它不仅使指令预取和数据读写能无冲突地同时完成,而且可同时与U,V两条流水线分别交换数据。
(3)浮点运算部件 奔腾CPU内部包含了一个8段的流水浮点运算器。前4段为指令预取(PF)、指令译码(D1) 、地址生成(D2)、取操作数(EX),在U,V流水线中完成;后4段为执行1(X1)、执行2(X2)、 结果写回寄存器堆(WF)、错误报告(ER),在浮点运算部件中完成。一般只能由U流水线完成一条浮点数操作指令。 浮点部件支持IEEE754标准的单、双精度格式的浮点数,另外还使用一种称为临时实数的80位浮点数。其中有浮点专用加法器、乘法器和除法器,有8个80位寄存器组成的寄存器堆,内部的数据总线为80位宽。对于浮点数的常用指令如LOAD,ADD,MUL等采用了新的算法,用硬件来 实现,其执行速度是80486的10倍多。
(4)动态转移预测技术 执行转移指令时为了不使流水线断流,pentium采用了动态转移预测技术。转移目标缓冲器BTB一个小容量的cache。当一条指令导致程序转移时,BTB便记录这条指令及其转移目标地址。以后 遇到这条转移指令时,BTB会依据前后转移发生的历史来预测该指令这次是转移取还是顺序取。若预测为转移取,则将BTB记录的转移目标地址立即送出可用。 两个指令预取缓冲器,每个容量为32字节,当前总是使用其中一个(假设为缓冲器1)。当在指译码(D1)段译出一条转移指令时立即检索BTB。若预测为“顺序取”,则继续从缓冲器1取指令;若预测为“转移取”,则立即冻结缓冲器1,启动另一个缓冲器2,由给出的转移目标地址处开始取分支程序的指令序列。这样,保证了流线的指令预取步骤永远不会空置。并且预测转移取错误时,正确路径的指令已经在另一个冲器中,使流水线的性能损失减至最小。
5.9 RISC CPU 5.9.1 RISC CPU (1)一个有限的简单的指令集; RISC的三个要素是: (3)强调对指令流水线的优化。 基于三要素的RISC机器的特征是: (1)使用等长指令,目前的典型长度是4个字节。 (2)寻址方式少且简单,一般为2—3种,最多不超过4种,绝不出现存储器间接寻址方式。 (3)只有取数指令(LOAD)、存数指令(STORE)访问存储器。指令中最多出现RS型指令,绝不出现SS型指令。 (4)指令集中的指令数目一般少于100种,指令格式一般少于4种。 (5)指令功能简单,控制器多采用硬布线方式,以期更快的执行速度。
(6)平均而言,所有指令的执行时间为一个处理时钟周期。 (7)指令格式中用于指派整数寄存器的个数不少于32个,用于指派浮点数寄存器的个数不少于16个。 (8)强调通用寄存器资源的优化使用。 (9)支持指令流水并强调指令流水的优化使用。 (10)RlSC技术的复杂性于它的编译程序,因此软件系统开发时间比CISC机器长。
RISC与CISC的主要特征对比
5.9.2 RISC CPU实例 1.MC 88110 CPU结构框图 MC 88110 CPU是一个RISC处理器。处理器有12个执行功能部件,3个cache和1个控制部件。其结构框图请见CAI所示。
5.10 多媒体CPU 5.10.1 多媒体CPU 媒体----指传递信息的媒介,它包括存储信息的实体与传递信息的载体两部分。磁盘、光盘等皆属存储信息的实体,而载体则指用来表达信息的形体,如数值、文字、声音、图形与动静图像等。 多媒体技术是指计算机把各种不同的电子媒质集成起来,统一进行存储、处理和传输。这些电子媒质包括计算机屏幕显示、视频光盘、CD-ROM以及语言和声音的综合,同时在这些部件之间建立逻辑连接,从而使整个系统具有交互性。显然,多媒体技术使计算机进一步摆脱了“计算工具”的传统观念,成为处理各种信息的强有力工具。 多媒体技术解决的主要问题有: 1.图像与声音的压缩技术 多媒体技术很重要的内容是对图像与声音进行操作、存储与 图像与声音的压缩技术 适应多媒体技术的软件技术 计算机系统结构方面的技术
传送。这就需要将每幅图像从模拟量转换成数字量,然后进行图像处理,与图形文字等复合,再存储在机器内。但是进行管理、操作、存储的图像并不只是数量很少的静止图像,而是符合视频标准的每秒30帧的彩色图像。如果由多媒体计算机存储器能演放1秒钟的音像制品,则信息量就高达22.5兆字节,而目前用来存储图像、程序的光盘CD-ROM,容量只有550兆字节。可见如不对图像采用压缩技术,仅存储图像的要求这一点就无法达到,何况1倍速的CD-ROM的数据传输率也只有150KB/s,无法做到多幅图像的实时再现。图像数据如不压缩,则实现多媒体通信也就不可能。 图像压缩是将图像用像素存储的方式,经过图像变换、量化、高效编码等 处理,转换成特殊形式的编码。这样一来,计算机所需存储与实时传送的数据量就可大大降低。
为了在算机系统中增加多媒体数据的获取功能、压缩解压功能、实时处理功能、多媒体数据的I/O与通信功能,在计算机系统结构领域需要做三方面的改进: 2.适应多媒体技术的软件技术 为适应多媒体技术发展,一是需要开发具有多媒体功能的OS(操作系统),二是开展以编辑工具为中心的软件技术研究。对第一个课题,Microsoft开发的视窗95至视窗2000系列多媒体OS版获得了很大成功。对第二个课题,编辑工具必须将图形、文档、声音、图像、视像等多种媒质联系在一起,为实际应用提供方便。 3.计算机系统结构方面的技术 为了在算机系统中增加多媒体数据的获取功能、压缩解压功能、实时处理功能、多媒体数据的I/O与通信功能,在计算机系统结构领域需要做三方面的改进: 第一,选择专用芯片和专用插卡来扩充功能,如声卡、视频卡、网卡、内接或外接调制解调器。 第二,改善总 线的结构和性能,如加宽系统总线,提高时钟速率。 第三,将一些重要的多媒体技术融合到 CPU芯片或设计全新的多媒体CPU芯片。本节本节重点介绍多媒体CPU的系统结构特点 。
5.10.2 MMX(—Multi Medium eXtended)技术 MMX是一种多媒体扩展结构技术,它极大提高了计算机在多媒体和通信应用方面的功能。带有MMX技术的CPU特别适合于数据量很大的图形、图像数据处理,从而使三维图形、图画、运动图像为目标的MPEG视频、音乐合成、语音识别、虚拟现实等数据处理的速度有了很大提高 。 MMX技术集成到新一代pentium CPU时,主要体现在: ①采用4种新的数据类型,②使用8个64 位宽的MMX寄存器,③增设57条新指令。 1.MMX数据类型 MMX技术定义了三种打包的数据类型及一种64位字长的数据类型。打包数据类型中的每个元素以及64位数都是带符号或不带符号的定点整数(字节、字、双字、四字)。四种数据类型定义如下: 紧缩字节类型:8个字节打包成一个64位数据 紧缩字类型:4个字打包成一个64位数据 紧缩双字类型:两个32位的双字打包成一个64位数据 四字类型:一个64位数。
2.MMX寄存器 8个MMX寄存器MM0—MM7的宽度为64位,但它们没有单独设置,而是借用浮点处理单元中的8 个(80位)数据寄存器,它是通过使用“别名”的办法来实现的。即浮点单元的8个数据寄存 器被浮点指令看成ST0—ST7,被MMX指令看成是MM0—MM7 。 这样,8个字节或4个字或2个双字被打包装入一个64位的MMX寄存器,一旦执行一条MMX指令时,将所有这些8个、4个或2个的数据同时取出,进行数学运算或逻辑操作,最后结果写入MMX寄存器。事实上,这种运算处理过程是一种并行处理过程,故称为SIMD(单指令 多数据)的并行处理。 3.MMX指令集 如果一条指令支持多种数据类型:字节(B)、字(W)、双字(D)或四字(Q)的操作,则选用某一数据类型时,相应的字母B,W ,D或Q列入指令助记符的后面。对于转换指令要列入两个字母,例如WB表示把字拆成字节,而BW表示把字节拼成字。 MMX指令的先进性体现在以下五个方面: (1) SIMD结构 ,此前我们遇到的计算机是SISD(单指令单 数据)的系统结构。而SIMD结构则是单指令多数据的系统结构。MMX指令
充分利用CPU64位带 宽的处理能力,一次可以并行处理8个8位数据,或4个16位数据,或2个32位数据,因而成为提高计算性能的最基本因素。 (2) 饱和运算方式, 这是运算发生溢出时使用的处理方法。如果运算结果超过最大值,则将此值按最大值处理,低于最小值时按最小值处理。由于不需要进行溢出处理, 所以提高了处理能力。饱和运算适合于面向像素数据的处理。 (3)积和运算方式, MMX的乘法指令中,PMADDWD指令是一条关键指令,它具有乘法-累加操作动能。下图说明了它的操作功能,将两个紧缩字类型的数中相应的元素(16位)相乘,生成4个32位的积,再将左侧的两个积相加,得出一个结果;右侧的两个积相加 ,得出另一个结果。这样便生成一个紧缩双字类型的结果数据。积和运算方式特别适合于向量计算与矩阵计算。
(4)比较指令特点 ,MMX的比较指令不建立标志位,而是建立真假条件的屏蔽字,后跟一个逻辑操作,从不同的输入中选择所需要的元素,从而对输入数据并行地分别进行处理。下图表示PCMPGTW指令的功能示意,对应部分比较结果所建立的全“0”表示假条件,全“1”表示真条件。
转换指令广泛用于矩阵的行列转换;可以在每对像点之间插入新像点的插值操作;实现RGB与YUV的彩色空间转换等。 当输入数据不同而进行分别处理时,传统的做法是一条比较指令后面紧跟一条条件转移指令。条件转移指令会降低指令流水线的性能。MMX的比较指令通过条件选择能力,取消了转移指令,这是MMX技术的一个重要性能特征。 (5) 转换指令特点, MMX的转换指令,是紧缩或解紧缩指令,能方便地完成各种精度的数据转换,其中紧缩指令带有饱和操作。下图表示PACKSSDW紧缩指令的功能示意。它取出4个32位数,将其紧缩为4个16位的数。如果某个数比16位数大,则执行饱和操作。 转换指令广泛用于矩阵的行列转换;可以在每对像点之间插入新像点的插值操作;实现RGB与YUV的彩色空间转换等。
5.10.3 动态执行技术 动态执行技术 是指通过预测程序流来调整指令的执行,并分析程序的数据流来选择指令执行的最佳顺序。动态执行技术涉及数据相关性及指令调度法、转移预测法、指令的发射顺序与完成顺序等流水技术基本要素。它非常利于MMX指令的加速执行。 下图是动态执行技术的核心结构示意图。
实现动态执行的关键:取消传统的“取指” 和“执行”两阶段之间指令需要线性排列的限制,而使用一个指令缓冲池以开辟一个较长的指令窗口,以便允许执行单元能在一个较大的范围内调遣和执行已译码过的程序指令流。 与指令缓冲池相连的三个硬件单元是: 取指/译码单元 其功能是从指令cache读取程序指令流,将其译码成相应的微操作系列,以指明该指令流所需的数据流。遇到转移指令,通过转移目标缓冲器BTB来预测是否发生转移,并给出下一指令地址送往指令指针寄存器IP中。取指/译码单元是一个有序单元,它有三个并行的指令译码器ID,故一个CPU周期能向指令缓冲池同时送入3个微操作。 调遣/执行单元 其功能是从数据cache接收数据流,根据数据的相关性和资源可用性来规划微操作的执行,并暂存推测执行的结果。调遣/执行单元是一个无序单元,它包括五个端口逻辑、两个整数执行部件(IEU)、一个浮点执行部件(FEU)、一个转移部件 (JEU)、两个地址生成部件(AGU)。使用一种伪FIFO算法对它们进行调度,取得执行结果的伪 操作立即返回指令缓冲池。这个过程并不严格
按照程序中原来的顺序执行微操作,因此是一个无序完成的过程。调遣/执行单元在一个CPU周期内最多能执行5个微操作(每个端口1个),但一般是执行3个微操作,故称这种指令流水线是超标度为3的超标量结构。 回收单元 其功能是检查指令缓冲池中的微操作状态,找出那些已被执行完的微操作,并且按原始顺序对它们重新排序。如果一条指令的全部微操作均已完成,则按原始顺序逐个回收,将它们保存在回收寄存器RRF中,并删除指令缓冲池中该指令的全部微操作。然后按RRF内容将指令结果写入通用寄存器或存储器中,并设置相应的机器状态。回收单元是一个有序单元。 虽然调遣/执行单元以无序方式执行指令微操作,而回收单元保证最终能得到符合程序要求的指令执行正确结果。与流水线相对应,回收单元能够在一个CPU周期内同时回收3个微操作。
本章要点 CPU的基本功能。 现代CPU的构成 CPU中的主要寄存器及其作用 典型指令的执行过程 控制器的种类及特点 典型指令的执行过程 控制器的种类及特点 微程序控制器的组成及各组成部件的作用 流水线的种类及作用 RISC与CISC的特点及差别