第五章 中央处理器 5.1 CPU的组成和功能 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 5.5 微程序设计技术 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 5.5 微程序设计技术 5.6 硬布线控制器 5.7 传统CPU 5.8 流水CPU 5.9 RISC CPU 5.10 多媒体CPU
5.1 CPU的组成和功能 5.1.1 CPU的功能 当用计算机解决某个问题时,我们首先必须为它编写程序。程序是一个指令序列,这个序列明确告诉计算机应该执行什么操作,在什么地方找到用来操作的数据。一旦把程序装入内存储器,就可以由计算机来自动完成取出指令和执行指令的任务。专门用来完成此项工作的计算机部件称为中央处理器,通常简称CPU。 CPU对整个计算机系统的运行是极其重要的,它具有如下四方面的基本功能:
★ 指令控制 程序的顺序控制称为指令控制。由于程序是一个指令序列,这些指令的相互顺序不能任意颠倒,必须严格按程序规定的顺序进行。 ★操作控制 一条指令的功能往往是由若干个操作信号的组合来实现的,因此,CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。 ★ 时间控制 对各种操作实施时间上的定时称为时间控制。在计算机中,各种指令的操作信号以及一条指令的整个执行过程都受到时间的严格定时。 ★ 数据加工 数据加工就是对数据进行算术运算和逻辑运算处理。
5.1.2 CPU的基本组成 CPU的基本部分由运算器、cache和控制器三大部分组成。 内部结构如下图。
控制器 由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。它的主要功能有: (1) 从内存中取出一条指令,并指出下一条指令在内存中的位置; (2) 对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作; (3) 指挥并控制CPU、内存和输入/输出设备之间数据流动的方向。
运算器 由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件。相对控制器而言,运算器接受控制器的命令而进行动作 ,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。 运算器有两个主要功能: (1) 执行所有的算术运算; (2) 执行所有的逻辑运算,并进行逻辑测试, 如零值测试或两个值的比较。
5.1.3 CPU中的主要寄存器 在CPU中至少要有以下六类寄存器。 这些寄存器用来暂存一个计算机字。根据需要,可以扩充其数目。 1. 数据缓冲寄存器(DR) 2. 指令寄存器(IR) 3. 程序计数器(PC) 4. 地址寄存器(AR) 5. 累加寄存器(AC) 6. 状态条件寄存器(PSW) 下面详细介绍这些寄存器的功能与结构。
1. 数据缓冲寄存器(DR) 数据缓冲寄存器用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中。 缓冲寄存器的作用是 : (1) 作为CPU和内存、外部设备之间信息传送的中转站; (2) 补偿CPU和内存、外围设备之间在操作速度上的差别; (3) 在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。
2. 指令寄存器(IR) 指令寄存器用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
3. 程序计数器(PC) 为了保证程序能连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此PC的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。 但是当遇到转移指令如JMP指令时,那么后继指令的地址(即PC的内容)必须从指令的地址段取得。在这种情况下下一条从内存取出的指令将由转移指令来规定,而不是像通常一样按顺序来取得。因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。
4. 地址寄存器(AR) 地址寄存器用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止 。 当CPU和内存进行信息交换,即CPU向内存存/取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,如果我们把外围设备的设备地址作为像内存的地址单元那样来看待,那么,当CPU和外围设备交换信息时,我们同样使用 地址寄存器和数据缓冲寄存器。 地址寄存器的结构和数据缓冲寄存器、指令寄存器一样,通常使用单纯的寄存器结构。信息的存入一般采用电位-脉冲方式,即电位输入端对应数据信息位,脉冲输入端对应控制信号,在控制信号作用下,瞬时地将信息打入寄存器。
5. 累加寄存器(AC) 累加寄存器AC通常简称为累加器,它是一个通用寄存器。其功能是:当运算器的算术逻辑单元ALU)执行算术或逻辑运算时,为ALU提供一个工作区。累加寄存器暂时存放ALU运算的结果信息。显然,运算器中至少要有一个累加寄存器。 目前CPU中的累加寄存器,多达16个,32个,甚至更多。当使用多个累加器时,就变成通用寄存器堆结构,其中任何一个可存放源操作数,也可存放结果操作数。在这种情况下,需要在指令格式中对寄存器号加以编址。
6. 状态条件寄存器(PSW) 状态条件寄存器保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,如运算结果进位标志C,运算结果溢出标志V,运算结果为零标志Z,运算结果为负标志N等等。这些标志位通常分别由 1位触发器保存。 除此之外,状态条件寄存器还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。因此,状态条件寄存器是一个由各种状态条件标志拼凑而成的寄存器。
5.1.4 操作控制器与时序产生器 数据通路 是许多寄存器之间传送信息的通路。 信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器,都要加以控制。在各寄存器之间建立数据通路的任务,是由称为操作控制器的部件来完成的。操作控制器的功能,就是根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。
根据设计方法不同,操作控制器可分为时序逻辑型、存储逻辑型、时序逻辑与存储逻辑结合型三种。第一种称为硬布线控制器,它是采用时序逻辑技术来实现的;第二种称为微程序控制器,它是采用存储逻辑来实现的;第三种是前两种方式的组合。我们重点介绍微程序控制器。 1. 硬布线控制器: 采用时序逻辑技术来实现的 操作控制器。 2. 微程序控制器: 采用存储逻辑来实现的的操 作控制器。
5.2 指令周期 5.2.1 指令周期的基本概念 计算机的CPU自动地从存放程序的内存里取出一条指令并执行这条指令;紧接着又是取指令,执行指令……,如此周而复始,构成了一个封闭的循环。 指令周期 CPU从内存取出一条指令并执行这条指令的时间总和。 CPU周期 又称机器周期,CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。 时钟周期 通常称为节拍脉冲或T周期。一个CPU周期包含若干个时钟周期。
图5.3 指令周期
下面举例来说明指令的执行周期过程。 程序指令: S1: CLA ADD 30 STA 40 NOP JMP S1 其中包含有非访内存,和访内存,程序控制转移指令。
5.2.2 非访内存指令的指令周期 CLA是一条非访内存指令,它需要两个CPU 周期,其中取指令阶段需要一个CPU周期,执行指令阶段需要一个CPU周期。 1. 取指令阶段 (1) 程序计数器PC的内容20(八进制)被装入地 址寄存器AR; (2) 程序计数器内容加1,变成21,为取下一 条指令做好准备; (3) 地址寄存器的内容被放到地址总线上;
(4) 所选存储器单元20的内容经过数据总线, 传送到数据缓冲寄存器DR; (5) 缓冲寄存器的内容传送到指令寄存器IR; (6) 指令寄存器中的操作码被译码或测试; (7) CPU识别出是指令CLA,至此,取指令阶 段即告结束。 2. 执行指令阶段 (1) 操作控制器送一控制信号给算术逻辑运算 单元ALU; (2) ALU响应该控制信号,将累加寄存器AC 的内容全部清零,从而执行了CLA指令。
5.2.3 取数指令的指令周期 ADD指令是一条访问内存取数的指令,指令周期由三个CPU周期组成,如下图所示。 1. 取指令阶段 (同上) 2. 送操作数地址 第二个CPU周期主要完成送操作数地址。在此阶段,CPU的动作只有一个,那就是把指令寄存器中的地址码部分(30)装入地址寄存器,其中30为内存中存放操作数的地址。
3. 两操作数相加 第三个CPU周期主要完成取操作数并执行加法操作中。在此阶段,CPU完成如下动作: (1) 把地址寄存器中的操作数的地址(30)发送到 地址总线上。 (2) 由存储器单元30中读出操作数(6),并经过数 据总线传送到缓冲寄存器。 (3) 执行加操作:由数据缓冲寄存器来的操作数 (6)可送往ALU 的一个输入端, 已等候在累加 器内的另 一个操作数(因为CLA指令执行结束 后累加器内容为零)送往ALU的另一输入端, 于是ALU将两数相加, 产生运算结果为0+6=6 。这个结果放回累加器,替换了累加器中原 先的数0 。
5.2.4 存数指令的指令周期 STA指令是一条访问内存存数的指令,指令周期由三个CPU周期组成,如下图所示。 1. 取指令阶段 (同上) 2. 送操作数地址 在执行阶段的第二个CPU周期中,CPU完成的动作是把指令寄存器中地址码部分的形式地址40装到地址寄存器。其中数字40是操作数地址。
执行阶段的第三个CPU周期中,累加寄存器的内容传送到缓冲寄存器,然后再存入到所选定的存储单元(40)中。CPU完成如下动作: 3. 存储和数 执行阶段的第三个CPU周期中,累加寄存器的内容传送到缓冲寄存器,然后再存入到所选定的存储单元(40)中。CPU完成如下动作: (1) 累加器的内容(6)被传送到数据缓冲寄存器 DR; (2) 把地址寄存器的内容(40)发送到地址总线上 ,40即为将要存入的数据6的内存单元号; (3) 把缓冲寄存器的内容(6)发送到数据总线上; (4) 数据总线上的数写入到所选中的存储器单 元中,即将数6写入到存储器40号单元中。 注意 在这个操作之后,累加器中仍然保留和数6,而存储器40号单元中原先的内容被冲掉 。
5.2.5 空操作指令和转移指令的指令周期 第四条指令即“NOP”指令,这是一条空操作指令。其中第一个CPU周期中取指令,CPU把23号单元的“NOP”指令取出放到指令寄存器,第二个CPU周期中执行该指令。因译码器译出是“NOP”指令,第二个CPU周期中操作控制器不发出任何控制信号。NOP指令可用来调机之用。 第五条JMP指令的指令周期由两个CPU周期组成,如下图所示。
CPU把24号单元的“JMP 21”指令取出放至指令寄存器, 同时程序计数器内容加1,变为25,从而取下一条指令做好准备。 CPU把指令寄存器中地址码部分21送到程序计数器,从而用新内容21代替PC原先的内容25。这样,下一条指令将不从25单元读出,而是从内存21单元开始读出并执行,从而改变了程序原先的执行顺序。 注意 执行“JMP 21”指令时,此处程序进入死循环,除非人为停机,否则程序将无休止地运行下去。
5.2.6 五条指令的取指和执行过程 我们把前面的五条典型指令加以归纳,其取指和执行过程如下图所示。
5.2.7 用方框图语言表示指令周期 在进行计算机设计时,可以采用方框图语言来表示一条指令的指令周期。 方框 代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作。 菱形 通常用来表示某种判别或测试,不过时间上它依附于紧接它的前面一个方框的CPU周期,而不单独占用一个CPU周期。 我们把前面的五条典型指令加以归纳,用方框图语言表示的指令周期如下图所示。
【例1】教材图5.15所示为双总线结构机器的数据通路,IR为指令寄存器,PC为程序计数器(具有自增功能),M为主存(受R/W信号控制),AR为地址寄存器,DR为数据缓冲寄存器, ALU由加、减控制信号决定完成何种操作,控制信号G控制的是一个门电路。另外,线上标注有小圈表示有控制信号,例中yi表示y寄存器的输入控制信号,R1o为寄存器R1的输出控制信号,未标字符的线为直通线,不受控制。 “ADD R2,R0”指令完成(R0)+(R2)→R0的功能操 作,画出其指令周期流程图,假设该指令的地址已放入PC中。列出相应的微操作控制信号序列。 (2) “SUB R1,R3”指令完成(R3)-(R1)→R3的操作, 画出其指令期流程图,并列出相应的微操作控制 信号序列。
【解】 (1) “ADD R2,R0”指令是一条加法指令,参与运算的两个数放在寄存器R2和R0中,指令周期流程图包括取指令阶段和执行指令阶段两部分(为简单起见 ,省去了“→” 号左边各寄存器代码上应加的括号)。根据给定的数据通路图,“ADD R2,R0”指令的详细指令周期流程图如图(a)所示,图的右边部分标注了每一个机器周期中用到的微操作控制信号序列。 (2) “SUB R1,R3”指令是一条减法指令,其指令周期流程图如图(b)所示。与ADD指令不同的是:在执行指令阶段,微操作控制信号序列有所不同。
图5.16 加法和减法指令周期流程图
5.3 时序产生器和控制方式 5.3.1 时序信号的作用和体制 5.3 时序产生器和控制方式 5.3.1 时序信号的作用和体制 时序信号 CPU中一个类似“作息时间”的东西,使计算机可以准确、迅速、有条不紊地工作。机器一旦被启动,即CPU开始取指令并执行指令时,操作控制器就利用定时脉冲的顺序和不同的脉冲间隔,有条理、有节奏地指挥机器的动作,规定在这个脉冲到来时做什么,在那个脉冲到来时又做什么,给计算机各部分提供工作所需的时间标志。为此,需要采用多级时序体制。
[思考] 用二进制码表示的指令和数据都放在内存里,那 么CPU是怎样识别出它们是数据还是指令呢? 从时间上来说,取指令事件发生在指令周期的第一个CPU周期中,即发生在“取指令”阶段,而取数据事件发生在指令周期的后面几个CPU周期中,即发生在“执行指令”阶段。 从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。由此可见,时间控制对计算机来说是太重要了。
总之,计算机的协调动作需要时间标志,而时间标志则是用时序信号来体现的。 硬布线控制器中,时序信号往往采用主状态周期-节拍电位-节拍脉冲三级体制。 在微程序控制器中,时序信号比较简单,一般采用节拍电位-节拍脉冲二级体制。
5.3.2 时序信号产生器 微程序控制器中使用的时序信号产生器由时钟源、环形脉冲发生器、节拍脉冲和读写时序译码逻辑、启停控制逻辑等部分组成。 1. 时钟源 时钟源用来为环形脉冲发生器提供频率稳定且电平匹配的方波时钟脉冲信号。它通常由石英晶体振荡器和与非门组成的正反馈振荡电路组成,其输出送至环形脉冲发生器。
2. 环形脉冲发生器与时序信号译码 环形脉冲发生器的作用是产生一组有序的间隔相等或不等的脉冲序列,以便通过译码电路来产生最后所需的节拍脉冲。 为了在节拍脉冲上不带干扰毛刺,环形脉冲发生器通常采用循环移位寄存器形式,如下图5.18所示。 如图所生产的输出节拍脉冲关系如下图5.19所示。
图5.19 节拍电位与节拍脉冲时序关系图
5.3.3 控制方式 控制方式 即控制不同操作序列时序信号的方法。常用的有同步控制、异步控制、联合控制三种方式,其实质反映了时序信号的定时方式。 1. 同步控制方式 在任何情况下,已定的指令在执行时所需的机器周期数和时钟周期数都固定不变。根据不同情况,同步控制方式可选取如下方案: (1) 采用完全统一的机器周期执行各种不同的 指令。 (2) 采用不定长机器周期。 (3) 中央控制与局部控制结合。
2. 异步控制方式 其特点是:每条指令、每个操作控制信号需要多少时间就占用多少时间。这意味着每条指令的指令周期可由多少不等的机器周期数组成;也可以是当控制器发出某一操作控制信号后,等待执行部件完成操作后发“回答”信号,再开始新的操作。显然,用这种方式形成的操作控制序列没有固定的CPU周期数(节拍电位)或严格的时钟周期(节拍脉冲)与之同步。
3. 联合控制方式 此为同步控制和异步控制相结合的方式。 情况1 大部分操作序列安排在固定的机器周 期中,对某些时间难以确定的操作则 以执行部件的“回答”信号作为本次操 作的结束; 情况2 机器周期的节拍脉冲数固定,但是各 条指令周期的机器周期数不固定。
5.4 微程序控制器 5.4.1 微命令和微操作 微命令 控制部件通过控制线向执行部件发出的各种控制命令。 微操作 执行部件接受微命令后所进行的操作。 控制部件与执行部件通过控制线和反馈信息进行联系。 简单运算器数据通路如下图所示。
5.4.2 微指令和微程序 微指令 在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合。 微程序 实现一条机器指令功能的许多条微指令组成的序列。 控制部件与执行部件通过控制线和反馈信息进行联系。 具体的微指令结构如下图所示。
5.4.3 微程序控制器原理框图 微程序控制器原理框图如下图所示。 它主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。
1. 控制存储器 控制存储器用来存放实现全部指令系统的微程序,它是一种只读存储器。一旦微程序固化,机器运行时则只读不写。其工作过程是:每读出一条微指令,则执行这条微指令;接着又读出下一条微指令,又执行这一条微指令,如此循环下去。读出一条微指令并执行该微指令的时间总和称为一个微指令周期。通常,在串行方式的微程序控制器中,微指令周期就是只读存储器的工作周期。控制存储器的字长就是微指令字的长度,其存储容量视机器指令系统而定,即取决于微程序的数量。对控制存储器的要求是速度快,读出周期要短。
2. 微指令寄存器 微指令寄存器用来存放由控制存储器读出的一条微指令信息。其中微地址寄存器决定将要访问的下一条微指令的地址,而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段的信息。
3. 地址转移逻辑 在一般情况下,微指令由控制存储器读出后直接给出下一条微指令的地址,通常我们简称微地址,这个微地址信息就存放在微地址寄存器中。如果微程序不出现分支,那么下一条微指令的地址就直接由微地址寄存器给出。当微程序出现分支时,意味着微程序出现条件转移。在这种情况下,通过判别测试字段P和执行部件的“状态条件”反馈信息,去修改微地址寄存器的内容,并按改好的内容去读下一条微指令。地址转移逻辑就承担自动完成修改微地址的任务。
5.4.4 微程序举例 我们举“十进制加法”指令为例,具体看一看微程序控制的过程。 第一条微指令的二进制编码是 000 000 000 000 11111 10 0000 第二条微指令的二进制编码是 010 100 100 100 00000 00 1001 第三条微指令的二进制编码是 010 001 001 100 00000 01 0000 第四条微指令的二进制编码是 010 001 001 001 00000 00 0000
5.4.5 CPU周期与微指令周期的关系 在串行方式的微程序控制器中: 微指令周期 = 读出微指令的时间 + 执行该条微指令的时间 下图示出了某小型机中CPU周期与微指令周期的时间关系
【分析】 一个CPU周期为0.8μs,它包含四个等间隔的节拍脉冲T1—T4,每个脉冲宽度为200ns。用T4作为读取微指令的时间,用T1+T2+T3时间作为执行微指令的时间。例如,在前600ns时间内运算器进行运算,在600ns时间的末尾运算器已经运算完毕,可用T4上升沿将运算结果打入某个寄存器。与此同时可用T4间隔读取下条微指令,经200ns时间延迟,下条微指令又从只读存储器读出,并用T1上升沿打入到微指令寄存器。如忽略触发器的翻转延迟,那么下条微指令的微命令信号就从T1上升沿起就开始有效,直到下一条微指令读出后打入微指令寄存器为止。因此一条微指令的保持时间恰好是0.8μs,也就是一个CPU周期的时间。
5.4.6 机器指令与微指令的关系 【问】一会儿取机器指令,一会儿取微指令,它们之间到底是什么关系? 【解】 1. 一条机器指令对应一个微程序,这个微程序是由若干条微指令序列组成的。因此,一条机器指令的功能是由若干条微指令组成的序列来实现的。简言之,一条机器指令所完成的 操作划分成若干条微指令来完成,由微指令进行解释和执行。 2. 从指令与微指令,程序与微程序,地址与微地址的一一对应关系来看,前者与内存储器有关,后者与控制存储器有关。
【例2】设某计算机运算器框图如图(a)所示,其中ALU为16位的加法器(高电平工作),SA,SB为16位暂存器。4个通用寄存器由D触发器组成,Q端输出,其读、写控制功能见下表。 读控制 写控制 R RA0 RA1 选择 W WA0 WA1 1 0 R0 1 R1 R2 R3 0 * 不读出 不写入
机器采用串行微程序控制方式,其微指令周期见图(b)。其中读ROM是从控存中读出一条微指令时间,为1μs;ALU工作是加法器做加法运算,为500ns;m1是读寄存器时间,为500ns;m2是写寄存器的工作脉冲宽度,为100ns。 微指令字长12位,微指令格式如下(未考虑顺序控制字段): RA0RA1 WA0WA1 R W LDSA LDSB SB-ALU Reset ~ RA0RA1:读R0-R3的选择控制 WA0WA1:写R0-R3的选择控制
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均可)。
指令 微程序代码 ADD 1.00**10100000 2.01**10010000 3.**0101001001 SUB 4.11**10100000 5.10**10010000 6.**1101000101 MOV 7.10**10100000 8.**1101001011
5.5 微程序设计技术 5.5.1 微命令编码 微命令编码 对微指令中的操作控制字段采用的表示方法。通常有以下三种方法: 1. 直接表示法 其特点是操作控制字段中的 每一位代表一个微命令。这种方法的优点是简单直观,其输出直接用于控制。缺点是微指令字较长,因而使控制存储器容量较大。
2. 编码表示法 编码表示法是把一组相斥性的微命令信号组成一个小组(即一个字段),然后通过小组译码器对每一个微命令信号进行译码,译码输出作为操作控制信号,其微指令结构如下图所示。 采用字段译码的编码方法,可以用较小的二进制信息位表示较多的微命令信号。例如3位二进位译码后可表示7个微命令,4位二进制位译码后可表示15个微命令。与直接控制法相比,字译码控制法可使微指令字大大缩短,但由于增加译码电路,使微程序的执行速度稍稍减慢。目前在微程序控制器设计中,字段直接译码法使用较普遍。
3. 混合表示法 这种方法是把直接表示法与字段编码法混合使用,以便能综合考虑指令字长、灵活性、执行微程序速度等方面的要求。 另外 在微指令中还可附设一个常数字段。该常数可作为操作数送入ALU运算,也可作为计数器初值用来控制微程序循环次数。
5.5.2 微地址的形成方法 微指令执行的顺序控制问题,实际上是如何确定下一条微指令的地址问题。通常,产生后继微地址有两种方法: 1. 计数器方式 2. 多路转移方式
1. 计数器方式 这种方法同程序计数器来产生机器指令地址的方法相类似。在顺序执行微指令时,后继微地址由现行微地址加上一个增量来产生;在非顺序执行微指令时,必须通过转移方式,使现行微指令执行后,转去执行指定后继微地址的下一条微指令。在这种方法中,微地址寄存器通常改为计数器。为此,顺序执行的微指令序列就必须安排在控制存储器的连续单元中。 计数器方式的基本特点是:微指令的顺序控制字段较短,微地址产生机构简单。但是多路并行转移功能较弱,速度较慢,灵活性较差。
2.多路转移方式 一条微指令具有多个转移分支的能力称为多路转移。在多路转移方式中,当微程序不产生分支时,后继微地址直接由顺序控制字段给出;当微程序出现分支时,有若干“后选”微地址可供选择:即按顺序控制字段的“判别测试”标志和“状态条件”信息来选择其中一个微地址。“状态条件”有n位标志则可实现微程序2的n次方路转移,涉及微地址寄存器的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 微指令格式 微指令的编译方法是决定微指令格式的主要因素。 微指令的格式大体分成两类:水平型微指令和垂直型微指令。 5.5.3 微指令格式 微指令的编译方法是决定微指令格式的主要因素。 微指令的格式大体分成两类:水平型微指令和垂直型微指令。 1. 水平型微指令 一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令。 其一般格式如下: 控制字段 判别测试字段 下一地址字段 按照控制字段的编码方法不同,水平型微指令又分为三种:全水平型(不译法)微指令, 字段译码法水平型微指令,以及直接和译码相混合的水平型微指令。
2. 垂直型微指令 微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令。 其结构类似于机器指令的结构。它有操作码,在一条微指令中只有1~2个微操作命令。每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多。它是采用较长的微程序结构去换取较短的微指令结构。 下面举4条垂直型微指令的微指令格式加以说明。设微指令字长为16位,微操作码3位。
(1) 寄存器-寄存器传送型微指令 其功能是把源寄存器数据送目标寄存器。13~15位为微操作码(下同),源寄存器和目标寄存器编址各5位,可指定31个寄存器。
(2) 运算控制型微指令 其功能是选择ALU的左、右两输入源信息,按ALU字段所指定的运算功能(8种操作)进行处理,并将结果送入暂存器中。左、右输入源编址可指定31种信息源之一。
(3) 访问主存微指令 其功能是将主存中一个单元的信息送入寄存器或者将寄存器的数据送往主存。存储器编址是指按规定的寻址方式进行编址。第1,2位指定读操作或写操作(取其之一)。
(4) 条件转移微指令 011 其功能是根据测试对象的状态决定是转移到D所指定的微地址单元,还是顺序执行下一条微指令。9位D字段不足以表示一个完整的微地址,但可以用来替代现行μPC的低位地址。 测试条件字段有4位, 可规定16种测试条件。
3. 水平型微指令与垂直型微指令的比较 (1) 水平型微指令并行操作能力强,效率高, 灵活性强,垂直型微指令则较差。 (2) 水平型微指令执行一条指令的时间短,垂 直型微指令执行时间长。 (3) 由水平型微指令解释指令的微程序,有微 指令字较长而微程序短的特点。垂直型微 指令则相反。 (4) 水平型微指令用户难以掌握,而垂直型微 指令与指令比较相似,相对来说,比较容 易掌握。
5.5.4 动态微程序设计 微程序设计技术有静态微程序设计和动态微程序设计之分。 1. 静态微程序设计 对应于一台计算机的机器指令只有一组微程序,而且这一组微程序设计好之后,一般无须改变而且也不好改变,这种微程序设计技术称为静态微程序设计。
2. 动态微程序设计 当采用EPROM作为控制存储器时, 还可以通过改变微指令和微程序来改变机器的指令系统,这种微程序设计技术称为动态微程序设计。采用动态微程序设计时,微指令和微程序可以根据需要加以改变,因而可在一台机器上实现不同类型的指令系统。这种技术又称为仿真其他机器指令系统,以便扩大机器的功能。
5.6 硬布线控制器 1. 基本思想 硬布线控制器是早期设计计算机的一种方法。这种方法是把控制部件看作为产生专门固定时序控制信号的逻辑电路,而此逻辑电路以使用最少元件和取得最高操作速度为设计目标。一旦控制部件构成后,除非重新设计和物理上对它重新布线,否则要想增加新的控制功能是不可能的。这种逻辑电路是一种由门电路和触发器构成的复杂树形逻辑网络,故称之为硬布线控制器。
图5.31 硬布线控制器结构方框图
由上图可知: 逻辑网络的输入信号来源有三个: (1) 来自指令操码译码器的输出Im; (2) 来自执行部件的反馈信息Bj; (3) 来自时序产生器的时序信号,包括节 拍电位信号M和节拍脉冲信号T。 逻辑网络N的输出信号就是微操作控制信号,它用来对执行部件进行控制。 硬布线控制器的基本原理:C=f(Im,Mi,Tk,Bj)
2. 指令执行流程 在用硬布线实现的操作控制器中,通常时序产生器除了产生节拍脉冲信号外,还应当产生节拍电位信号。因为在一个指令周期中要顺序执行一系列微操作,需要设置若干节拍电位来定时。例如前面提到的五条指令的指令周期,其指令流程可用下图来表示 。
图5.32 硬布线控制器的指令周期流程图
图中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.1 M6800 CPU M6800 CPU是一个比较典型的单总线结构的8位微理器,它通过内部的一条总线将微处理器内部的各个逻辑部件连接起来,而外部总线将CPU与外面的部件连接起来。这样,它描述了内部总线和外部总线,也描述了本章中讨论的算术逻辑运算部件ALU、各类寄存器和控制部件的关系。 M6800 CPU的逻辑框图如下:
图3.33 M6800 CPU的逻辑框图
5.7.2 Intel 8088 CPU Intel 8088 是一种通用的准16位微处理器,其内部结构为16位,与外部交换的数据为8位。它可以处理16位数据(具有16位运算指令,包括乘除法指令),也可以处理8位数据。它有20条地址线,所以直接寻址能力达到1M字节。采用40条引线封装,单相时钟,电源为5V。 8088CPU的内部结构如下:
图5.34 8088 CPU 的内部结构
5.7.3 IBM 370 系列 CPU IBM 370 系列机其字长32位,ALU部件按功能不同分为如下三个子部件: (1) 定点运算,包括整数计算和有效地址的 计算; (2) 浮点运算; (3) 变长运算,包括十进制算 术运算和字符 串操作。 IBM370 系列机的内部结构如下图所示。
图3.35 IBM 370系列计算机的CPU结构
在370机系统中,任何时刻CPU都只能处于几种控制状态中的一种。当它在执行操作系统的一段程序时,操作系统明确地控制着CPU,这时我们说CPU处于管理状态(简称管态)。某些指令只允许在这个状态下执行。当CPU在执行用户程序时,则认为处于正常的解题状态(简称目态)。CPU在任何时刻的状态都是由它的PSW来说明的。
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倍。 (5) 地址信号线扩充到32位,可以处理4GB的物理存储空间。如果利用虚拟存储器,其存储空间达64TB。 (6) 486 CPU采用单倍的时钟频率,而在CLK端加入的时钟频率,就是它内部CPU的时钟频率, 因此大大增加了电路的稳定性。
2. 486 CPU的内部结构 486的内部结构包含如下九个功能部件: 总线接口部件、小容量cache、指令预取部件、指令译码器、段管理部件、页管理部件、定点运算部件ALU、浮点运算部件FPU及操作控制部件。 总线接口部件主要用来产生访问外部存储器和I/O口所需要的地址、数据、命令信号。 段管理部件用来把指令指定的逻辑地址(程序中指定的虚拟地址)变成线性地址。
页管理部件的功能是把线性地址换算成物理地址。 指令预取部件中包含了32字节的预取队列寄存器,可以存放多条指令,因而是一种流水线结构。 ALU中包含了通用寄存器组以及各种算术逻辑运算操作。 FPU则完成浮点数运算、二进制整数运算、十进制数串运算等。 操作控制部件采用微程序控制和硬布线控制相结合的方式,因而较好地发挥了效率。
5.8 流水CPU 5.8.1 并行处理技术 并行性的两种含义: 同时性 指两个以上事件在同一时刻发生; 并发性 指两个以上事件在同一时间间隔内发生。 计算机的并行处理技术概括起来主要有以下三种形式: 1. 时间并行 2. 空间并行 3. 时间并行+空间并行
1. 时间并行 时间并行指时间重叠,在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。 时间并行性概念的实现方式就是采用流水处理部件。这是一种非常经济而实用的并行技术,能保证计算机系统具有较高的性能价格比。目前的高性能微型机几乎无一例外地使用了流水技术。
2. 空间并行 空间并行指资源重复,在并行性概念中引入空间因素,以“数量取胜” 为原则来大幅度提高计算机的处理速度。大规模和超大规模集成电路的迅速发展为空间并行 技术带来了巨大生机,因而成为目前实现并行处理的一个主要途径。空间并行技术主要体现在多处理器系统和多计算机系统。但是在单处理器系统中也得到了广泛应用。 3. 时间并行+空间并行 指时间重叠和资源重复的综合应用 ,既采用时间并行性又采用空间并行性。显然,第三种并行技术带来的高速效益是最好的。
5.8.2 流水CPU的结构 1. 流水计算机的系统组成 现代流水计算机的系统组成原理如下图所示。其中CPU按流水线方式组织,通常由三部分组成:指令部件、指令队列、执行部件。这三个功能部件可以组成一个3级流水线。
图3.37 流水计算机 系统组成原理示意图
2. 流水CPU的时空图 为了实现流水,首先把输入的任务(或过程)分割为一系列子任务,并使各子任务能在流水线的各个阶段并发地执行。当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现了子任务级的并行性。下面通过时空图来证明这个结论。 图(a)表示流水CPU中一个指令周期的任务分解。
图(b)表示非流水计算机的时空图。
图(c)表示流水计算机的时空图。
图(d)表示超标量流水计算机的时空图。
3. 流水线分类 指令流水线:指令步骤的并行。将指令流处理过程分为取指令、译码、执行、写回等几个并行处理过程段。目前几乎所有高性能计算机都采用指令流水线。 算术流水线:运算操作步骤的并行。如流水加法器、流水乘法器、流水除法器等。现代计算机中已广泛采用了流水的算术运算器。 处理机流水线:又称为宏流水线,是指程序步骤的并行。由一串级联的处理机构成流水线的各个过程段,每台处理机负责某一特定的任务。数据流从第一台处理机输入,经处理后被送入与第二台处理机相联的缓冲存储器中。第二台处理机从该存储器中取出数据进行处理,然后传送给第三台处理机,如此串联下去。随着高档微处理器芯片的出现, 构造处理机流水线将变得容易了。处理机流水线应用在多机系统中。
5.8.3 流水线中的主要问题 流水过程中通常会出现以下三种相关冲突,使流水线断流。 1. 资源相关 2. 数据相关 3. 控制相关 1. 资源相关 资源相关是指多条指令进入流水线后在同一机器时钟周期内争用同一个功能部件所发生的冲突。假定一条指令流水线由五段组成。由下表可以看出,在时钟4时,I1与I4两条指令发生争用存储器资源的相关冲突。
(2) 增设一个存储器,将指令和数据分别放在两个存储器中。 两条指令同时访问内存发生资源相关冲突 解决资源相关冲突的办法: (1) 第I4条指令停顿一拍后再启动; (2) 增设一个存储器,将指令和数据分别放在两个存储器中。
2. 数据相关 在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关的。 在流水计算机中,指令的处理是重叠进行的,前一条指令还没有结束,第二、三条指令就陆续地开始工作。由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突。如下表所示,ADD指令与SUB指令发生了数据相关冲突。
在流水CPU的运算器中设置若干运算结果缓冲寄存器,暂时保留运算结果,以便于后继指令直接使用, 这称为“向前”或定向传送技术。 两条指令发生数据相关冲突 解决数据相关冲突的办法: 在流水CPU的运算器中设置若干运算结果缓冲寄存器,暂时保留运算结果,以便于后继指令直接使用, 这称为“向前”或定向传送技术。
3. 控制相关 控制相关冲突是由转移指令引起的。当执行转移指令时,依据转移条件的产生结果,可能为顺序取下条指令;也可能转移到新的目标地址取指令,从而使流水线发生断流。 为了减小转移指令对流水线性能的影响,常用以下两种转移处理技术: (1) 延迟转移法 (2) 转移预测法
(1) 延迟转移法: 由编译程序重排指令序列来实现。基本思想是“先执行再转移”,即发生转移取时并不排空指令流水线,而是让紧跟在转移指令Ib之后已进入流水线 的少数几条指令继续完成。如果这些指令是与Ib结果无关的有用指令,那么延迟损失时间片正好得到了有效的利用。 (2) 转移预测法: 用硬件方法来实现,依据指令过去的行为来预测将来的行为。通过使用转移取和顺序取两路指令预取队列器以及目标指令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和RISC两者的特性,不过具有的CISC特性更多一些,因此被看成为一个CISC结构的处理器。以CISC结构实现超标量流水线,并有转移目标缓冲器(BTB)方式的转移预测能力,堪称为当代CISC机器的经典之作。
2. 奔腾CPU的结构框图 CPU的结构框图请参见教材。 (1) 超标量流水线 (2) 指令cache和数据cache (3) 浮点运算部件 (4) 动态转移预测技术
5.9 RISC CPU 5.9.1 RISC CPU RISC的三个要素是: (1) 一个有限的简单的指令集; (2) CPU配备大量的通用寄存器; (3) 强调对指令流水线的优化。 基于三要素的RISC机器的特征是: (1) 使用等长指令,目前的典型长度是4字节。 (2) 寻址方式少且简单,一般为2~3种,最多不 超过4种,绝不出现存储器间接寻址方式。 (3) 只有取数指令、存数指令访问存储器。指令中最多出现RS型指令,绝不出现SS型指令。
(4) 指令集中的指令数目一般少于100种,指令格式一般少于4种。 (5) 指令功能简单,控制器多采用硬布线方式,以期更快的执行速度。 (6) 平均而言,所有指令的执行时间为一个处理时钟周期。 (7) 指令格式中用于指派整数寄存器的个数不少于32个,用于指派浮点数寄存器的个数不少于16个。 (8) 强调通用寄存器资源的优化使用。 (9) 支持指令流水并强调指令流水的优化使用。 (10) RISC技术的复杂性在它的编译程序,因此软件系统开发时间比CISC机器长。
RISC与CISC的主要特征对比 RISC 简单,精简 一般小于100 一般小于4 比较内容 指令系统 指令数目 指令格式 寻址方式 指令字长 CISC 复杂,庞大 一般大于200 一般大于4 不固定 等长 只有LOAD/STORE指令 相差不大 绝大多数在一个周期内完成 较容易 较长 绝大多数为硬布线控制 可访存指令 各种指令使用频率 各种指令执行时间 优化编译实现 程序源代码长度 控制器实现方式 软件系统开发时间 不加限制 相差很大 很难 较短 绝大多数为微程序控制
5.9.2 RISC CPU实例 —— MC 88110 CPU 1. MC 88110 CPU结构框图 MC 88110 CPU是一个RISC处理器。处理器有12个执行功能部件,3个cache和1个控制部件。其结构框图如下所示。
2. MC 88110的指令流水线 由于MC 88110是超标量流水CPU,所以指令流水线在每个机器时钟周期完成两条指令。 流水线共分为三段:取指和译码(F&D)段、执行(EX)段、写回(WB)段,下图所示为 88110超标量流水线正常运行情况图。
3. 指令动态调度策略 88110采用按序发射、按序完成的指令动态调度策略。指令派遣单元总是发出单一地址,然后从指令cache取出此地址及下一地址的两条指令。译码后总是力图同一时间发射这两条指令到EX段。若这对指令的第一条指令由于资源冲突或数据相关冲突,则这一对指令都不发射,两条指令在F&D段停顿等待资源的可用或数据相关的消除。若是第一条指令能发射第二条指令不能发射则只发射第一条指令,而第二条指令停顿并与新取的指令之一进行配对等待发射,此时原第二条指令作为配对的第一条指令对待。可见,这样实现的方式是按序发射。
为了判定能否发射指令,88110使用了计分牌方法。计分牌是一个位向量,寄存器堆中每个寄存器都有一个相应位。每当一条指令发射时,它预约的目的寄存器在位向量中的相应位上置1,表示该寄存器“忙”。当指令执行完毕并将结果写回此目的寄存器时,该位被清除。于是,每当判定是否发射一条指令(STORE指令和转移指令除外)时,一个必须满足的条件是:该指令的所有目的寄存器、源寄存器在位向量中的相应位都已被清除。否则,指令必须停顿等待这些位被清除。为了减少经常出现的数据相关,流水线采用了如前面所述的定向传送技术,将前面指令执行的结果直接送给后面指令所需此源操作数的功能部件,并同时将位向量中的相应位清除。因此指令发射和定向传送是同时进行的。
如何实现按序完成呢? 88110提供了一个FIFO指令执行队列,称之为历史缓冲器。每当一条指令发射出去,它的副本就被送到FIFO队尾。队列最多能保存12条指令。只有前面的所有指令执行完,这条指令才到达队首 。当它到达队首并执行完毕后才离开队列。 对于转移处理,88110使用了延迟转移法和目标指令cache(TIC)法。延迟转移是个选项(.n)。如果采用这个选项(指令如.n),则跟随在转移指令后的指令将被发射。如果不采用这个选项,则在转移指令发射之后的转移延迟时间片内没有任何指令被发射。延迟转移通过编译程序来调度。 TIC是一个32项的全相联cache,每项能保存转移目标路径的前两条指令。当一条转移指令译码并命中cache时,能同时由TIC取来它的目标路径的前面两条指令。
【例5】 超标度为2的超标量流水线结构模型如图5 【例5】 超标度为2的超标量流水线结构模型如图5.42(a)所示。它分为4个段,即取指(F)段、 译码(D)段、执行(E)段和写回(W)段。F,D,W 段只需1个时钟周期完成。E段有多个功能部件,其中LOAD/STORE部件完成数据cache访问,只需一个时钟周期;加法器完成需2个时钟周期,乘法器需3个时钟周期,它们都已流水化。F段和D段要求成对输入。E段有内部数据定向传送,结果生成即可使用。 现有如下6条指令序列,其中I1,I2有RAW相关,I3,I4有WAR相关,I5,I6有WW相关和RAW相关。
I1 LAD R1,A ;M(A)->R1,M(A)是 存储器单元 I2 ADD R2,R1 ;(R2) + (R1)->R2 I3 ADD R3,R4 ;(R3) + (R4)->R3 I4 MUL R4,R5 ;(R4)×(R5)->R4 I5 LAD R6,B ;M(B)->R6,M(B)是 I6 MUL R6,R7 ;(R6)×(R7)->R6 请画出: (1) 按序发射按序完成各段推进情况图; (2) 按序发射按序完成的流水线时空图。
【解】 (1) 由于I1,I2间有RAW相关,I2要推迟一个时钟才能发射。类似的情况也存在于I5,I6之间; I3,I4之间有WAR相关,但按序发射,即使I3,I4并行操作,也不会导致错误;I5,I6间还有WAW相关,只要I6的完成放在I5之后,就不会出错。注意,I5实际上已在时钟6执行完毕,但一直推迟到时钟9才写回,这是为了保持按序完成。超标量流水线完成6条指令的执行任务总共需要10个时钟周期。 (2) 根据各段推进情况图可画出流水线时空图如下所示。
5.10 多媒体CPU 5.10.1 多媒体CPU 媒体一词在涉及信息传递的领域中是指传递信息的媒介,它包括存储信息的实体与传递信息的载体两部分。磁盘、光盘等皆属存储信息的实体,而载体则指用来表达信息的形体,如数值、文字、声音、图形与动静图像等。 多媒体技术是指计算机把各种不同的电子媒质集成起来,统一进行存储、处理和传输。这些电子媒质包括计算机屏幕显示、视频光盘、CD-ROM以及语言和声音的综合,同时在这些部件之间建立逻辑连接,从而使整个系统具有交互性。显然,多媒体技术使计算机进一步摆脱了“计算工具”的传统观念,成为处理各种信息的强有力工具。 多媒体技术解决的主要问题有:
1. 图像与声音的压缩技术 多媒体技术很重要的内容是对图像与声音进行操作、存储与传送。这就需要将每幅图像从模拟量转换成数字量,然后进行图像处理,与图形文字等复合,再存储在机器内。但是进行管理、操作、存储的图像并不只是数量很少的静止图像,而是符合视频标准的每秒30帧的彩色图像。如果由多媒体计算机存储器能演放1秒钟的音像制品,则信息量就高达22.5兆字节,而目前用来存储图像、程序的光盘CD-ROM,容量只有550兆字节。可见如不对图像采用压缩技术,仅存储图像的要求这一点就无法达到,何况CD-ROM的数据传输率也只有150KB/s,无法做到多幅图像的实时再现。图像数据如不压缩,则实现多媒体通信也就不可能。 图像压缩是将图像用像素存储的方式,经过图像变换、量化、高效编码等处理转换成特殊形式的编码。这样一来,计算机所需存储与实时传送的数据量就可大大降低。
2. 适应多媒体技术的软件技术 为适应多媒体技术发展,一是需要开发具有多媒体功能的OS(操作系统),二是开展以编辑工具为中心的软件技术研究。 对第一个课题,Microsoft开发的视窗95至视窗2000系列多媒体OS版获得了很大成功。对第二个课题,编辑工具必须将图形、文档、声音、图像、视像等多种媒质联系在一起,为实际应用提供方便。
3. 计算机系统结构方面的技术 为了在计算机系统中增加多媒体数据的获取功能、压缩解压功能、实时处理功能、多媒体数据的I/O与通信功能,在计算机系统结构领域需要做三方面的改进: 第一,选择专用芯片和专用插卡来扩充功能,如声卡、视频卡、网卡、内接或外接调制解调器。 第二,进一步改善总线的结构和性能,如加宽系统总线,提高时钟速率。 第三,将一些重要的多媒体技术融合到 CPU芯片或设计全新的多媒体CPU芯片。本节重点介绍多媒体CPU的系统结构特点 。
5.10.2 MMX技术 MMX是一种多媒体扩展结构技术,它极大提高了计算机在多媒体和通信应用方面的功能。带有MMX技术的CPU特别适合于数据量很大的图形、图像数据处理,从而使三维图形、图画、运动图像为目标的MPEG视频、音乐合成、语音识别、虚拟现实等数据处理的速度有了很大提高 。 MMX技术集成到新一代pentium CPU时,主要体现在: 1 采用4种新的数据类型; 2 使用8个64 位宽的MMX寄存器;3 增设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指令的先进性体现在以下五个方面: SIMD结构 饱和运算方式 积和运算方式 比较指令特点 转换指令特点
5.10.3 动态执行技术 动态执行技术是指通过预测程序流来调整指令的执行,并分析程序的数据流来选择指令执行的最佳顺序。动态执行技术涉及数据相关性及指令调度法、转移预测法、指令的发射顺序与完成顺序等流水技术基本要素。它非常利于MMX指令的加速执行。 下图是动态执行技术的核心结构示意图。
图5.46 动态执行技术核心结构示意图
实现动态执行的关键:取消传统的“取指” 和“执行”两阶段之间指令需要线性排列的限制,而使用一个指令缓冲池以开辟一个较长的指令窗口,以便允许执行单元能在一个较大的范围内调遣和执行已译码过的程序指令流。 与指令缓冲池相连的三个硬件单元是: 取指/译码单元 调遣/执行单元 回收单元
取指/译码单元 其功能是从指令cache读取程序指令流,将其译码成相应的微操作系列,以指明该指令流所需的数据流。遇到转移指令,通过转移目标缓冲器BTB来预测是否发生转移,并给出下一指令地址送往指令指针寄存器IP中。取指/译码单元是一个有序单元,它有三个并行的指令译码器ID,故一个CPU周期能向指令缓冲池同时送入3个微操作。
调遣/执行单元 其功能是从数据cache接收数据流,根据数据的相关性和资源可用性来规划微操作的执行,并暂存推测执行的结果。调遣/执行单元是一个无序单元,它包括五个端口逻辑、两个整数执行部件(IEU)、一个浮点执行部件(FEU)、一个转移部件 (JEU)、两个地址生成部件(AGU)。使用一种伪FIFO算法对它们进行调度,取得执行结果的伪操作立即返回指令缓冲池。这个过程并不严格按照程序中原来的顺序执行微操作,因此是一个无序完成的过程。调遣/执行单元在一个CPU周期内最多能执行5个微操作(每个端口1个),但一般是执行3个微操作,故称这种指令流水线是超标度为3的超标量结构。
回收单元其功能是检查指令缓冲池中的微操作状态,找出那些已被执行完的微操作,并且按原始顺序对它们重新排序。如果一条指令的全部微操作均已完成,则按原始顺序逐个回收,将它们保存在回收寄存器RRF中,并删除指令缓冲池中该指令的全部微操作。然后按RRF内容将指令结果写入通用寄存器或存储器中,并设置相应的机器状态。回收单元是一个有序单元。 虽然调遣/执行单元以无序方式执行指令微操作,而回收单元保证最终能得到符合程序要求的指令执行正确结果。与流水线相对应,回收单元能够在一个CPU周期内同时回收3个微操作。
本章小结 CPU是计算机的中央处理部件,具有指令控制、操作控制、时间控制、数据加工等 基本功能。 本章小结 CPU是计算机的中央处理部件,具有指令控制、操作控制、时间控制、数据加工等 基本功能。 早期的CPU由运算器和控制器两大部分组成。随着高密度集成电路技术的发展,当今的C PU芯片变成运算器、cache和控制器三大部分,其中还包括浮点运算器、存储管理部件等。CPU至少要有如下六类寄存器:指令寄存器、程序计数器、地址寄存器、缓冲寄存器、通用寄存器、状态条件寄存器。 CPU从存储器取出一条指令并执行这条指令的时间和称为指令周期。由于各种指令的操作功能不同,各种指令的指令周期是不尽相同的。划分指令周期,是设计操作控制器的重要依据 。
时序信号产生器提供CPU周期(也称机器周期)所需的时序信号。操作控制器利用这些时序信号进行定时,有条不紊地取出一条指令并执行这条指令。 微程序设计技术是利用软件方法设计操作控制器的一门技术,具有规整性、灵活性、可维护性等一系列优点,因而在计算机设计中得到了广泛应用,并取代了早期采用的硬布线控制器设计技术。但是随着VLSI技术的发展和对机器速度的要求,硬布线逻辑设计思想又得到了重视。硬布线控制器的基本思想是:某一微操作控制信号是指令操作码译码输出、时序信号和状态条件信号的逻辑函数,即用布尔代数写出逻辑表达式,然后用门电路和触发器等器件实现。
从简单到复杂,举出MC6800、Intel8088、IBM370、Intel80486等传统CPU的结构,目的在于使读者由浅入深地理解教学内容,也使读者了解了计算机技术的发展历程。同时也成为最基本的基础知识。 不论微型机还是巨型机,并行处理技术已成为计算机技术发展的主流。并行处理技术可贯穿于信息加工的各个步骤和阶段。概括起来,主要有三种形式:(1)时间并行,(2)空间并行, (3)时间并行+空间并行。 流水CPU是以时间并行性为原理构造的处理器,是一种非常经济而实用的并行技术。目前的高性能微处理器几乎无一例外地使用了流水技术。流水技术中的主要问题是资源相关、数据相关和控制相关,为此需要采取相应的技术对策,才能保证流水线畅通而不断流。
RISC CPU是继承CISC的成功技术并在克服CISC机器缺点的基础上发展起来的。RISC机器的三个基本要素是:(1)一个有限的简单指令集,(2)CPU配备大量的通用寄存器,(3)强调指令流水线的优化。注意,RISC机器一定是流水CPU,但流水CPU不一定是RISC机器。如奔腾CPU是流水CPU,但奔腾机是CISC机器。 多媒体CPU是带有MMX技术的处理器。MMX是一种多媒体扩展结构技术,特别适合于图像数据处理,极大地提高了计算机在多媒体和通信应用方面的功能。多媒体CPU以新一代奔腾CPU为代表,开始采用单指令流多数据流的新型结构。
作业: 第五章: 作业:2、3、5、 6、7、8、9、10、11、 12、13、16 练习:1、4、17