第五章:中央处理器¶
5.1 CPU 的功能和组成¶
5.1.1 CPU 的功能¶
该节主要围绕CPU的功能展开,具体内容如下:
- CPU的定义与构成:在计算机解决问题时,需先确定算法并编写包含指令序列的程序,程序装入内存储器后,由中央处理器(CPU)自动完成取指令和执行指令任务。随着技术发展,浮点运算器、cache等逻辑功能部件常集成到CPU芯片内部,一个物理CPU芯片内也会集成多个处理器核。本章所述中央处理器指处理器核,由运算器和控制器组成,是执行指令的核心部分 。
- CPU的四大基本功能
- 指令控制:即程序的顺序控制,由于程序指令序列顺序固定,保证机器按顺序执行程序是CPU首要任务 ,确保指令按规定顺序执行。
- 操作控制:一条指令功能由若干操作信号组合实现,CPU管理并产生从内存取出的每条指令的操作信号,将其送往对应部件,控制部件按指令要求动作。
- 时间控制:对各种操作进行时间上的定时,计算机中指令的操作信号和指令执行过程都受严格时间定时,以此保障计算机自动有序运行 。
- 数据加工:对数据进行算术运算和逻辑运算处理,这是CPU的根本任务,因为原始信息经加工处理后才有实用价值。
5.1.2 CPU 的基本组成¶
该节围绕CPU的基本组成展开,具体内容如下:
- 教学内容组织与CPU模型:从教学目的出发,本章以CPU执行指令为主线组织教学内容,为帮助读者建立计算机整机概念,给出CPU模型。
- 控制器组成与功能
- 组成:控制器由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,是发布命令的“决策机构”,负责协调和指挥整个计算机系统操作。
- 功能:其一,从指令cache中取出一条指令,并明确下一条指令在指令cache中的位置;其二,对指令进行译码或测试,产生相应操作控制信号,以启动规定动作,如数据cache读写、算术逻辑运算、输入/输出操作等;其三,指挥并控制CPU、数据cache和输入/输出设备之间数据流动方向 。
- 运算器组成与功能
- 组成:运算器由算术逻辑运算单元(ALU)、通用寄存器、数据缓冲寄存器(DR)和程序状态字寄存器(PSWR)组成,是数据加工处理部件。运算器接受控制器命令进行动作,属于执行部件。
- 功能:执行所有算术运算;执行所有逻辑运算,并进行逻辑测试,如零值测试或两个值的比较 。通常,算术操作产生运算结果,逻辑操作产生判决。
- 章节重点说明:由于第2、3章已详细讨论运算器和存储器,所以本章重点聚焦于控制器。
5.1.3 CPU 中的主要寄存器¶
该节内容围绕CPU中的主要寄存器展开,介绍了CPU至少需具备的六类寄存器及其功能与结构,具体如下:
- 数据缓冲寄存器(DR):用于暂时存放ALU的运算结果、从数据存储器读出的数据字或来自外部接口的数据字。其作用包括作为ALU运算结果和通用寄存器之间信息传送的时间缓冲,以及补偿CPU和内存、外围设备之间操作速度的差别 。
- 指令寄存器(IR):保存当前正在执行的指令。执行指令时,先从指令存储器读出,再传送至该寄存器。指令由操作码和地址码字段组成,通过指令译码器对操作码进行测试和译码,产生特定操作信号,指挥操作控制器完成指令规定的动作 。
- 程序计数器(PC):也叫指令计数器,用于确定下一条指令的地址。程序执行前,将起始地址送入PC;执行指令时,CPU自动修改PC内容,一般按顺序执行指令时对PC加1,遇到转移指令则从指令寄存器的地址字段获取后继指令地址。PC需具备寄存器和计数两种功能 。
- 数据地址寄存器(AR):保存当前CPU所访问的数据存储器单元的地址,以保证对存储器阵列进行地址译码,直到完成一次读/写操作。其结构通常为单纯的寄存器结构,采用电位 - 脉冲方式存入信息 。
- 通用寄存器:在模型中有4个(R0~R3),为ALU执行算术或逻辑运算提供工作区,存放操作数和运算结果。现代CPU中通用寄存器数量可多达64个甚至更多,还可用作地址指示器、变址寄存器、堆栈指示器等,硬件结构采用通用寄存器堆,指令格式中需对寄存器号编址 。
- 程序状态字寄存器(PSWR):又称状态条件寄存器,保存由算术和逻辑运算指令结果建立的各种条件代码,如进位标志(C)、溢出标志(V)、零标志(Z)、负标志(N)等,还保存中断和系统工作状态等信息,以便CPU和系统了解机器及程序运行状态 。
5.1.4 操作控制器与时序发生器¶
该节聚焦于操作控制器与时序发生器,围绕寄存器间信息传送控制展开,介绍了数据通路、操作控制器和时序发生器,具体内容如下:
- 数据通路与操作控制器的功能:为实现CPU中各寄存器间信息传送,数据通路应运而生,它规定了信息的起始、中间传输路径及最终目的地。而操作控制器的核心任务就是建立数据通路,其功能是依据指令操作码和时序信号,生成各类操作控制信号,从而精准选择数据通路,将相关数据传输至指定寄存器,完成取指令和执行指令的控制 。
- 操作控制器的类型:根据设计方法,操作控制器分为两类。硬布线控制器(硬连线控制器),采用组合逻辑技术实现,也被称为组合逻辑控制器;微程序控制器则运用存储逻辑达成相应功能 。
- 时序发生器的作用:由于操作控制器产生的控制信号必须严格定时,所以需要时序发生器。在计算机高速运行过程中,每个动作的时间要求极为精准,时序发生器的作用就是对各种操作信号进行时间上的控制 。此外,CPU除上述组成部分外,还包含中断系统、总线接口等功能部件,将在后续章节详述。
5.2 指令周期¶
5.2.1 指令周期的基本概念¶
该节围绕指令周期的基本概念展开,主要内容如下:
- 指令与数据的识别及计算机自动工作原理:指令和数据在形式上均为二进制代码,CPU可识别并将其送往对应部件。计算机能自动工作,是因为CPU不断重复“取指令 - 执行指令”的循环,直至遇到停机指令。
- 指令周期的定义:指令周期指CPU取出一条指令并执行这条指令所需的时间。由于不同指令操作功能存在差异,所以其指令周期也各不相同。指令周期常用若干个CPU周期数表示,CPU周期又称机器周期,通常以内存中读取一个指令字的最短时间来规定。一个CPU周期又包含若干个时钟周期(T周期或节拍脉冲),这些时钟周期总和决定了CPU周期的时间宽度 。
- 不同CPU的指令周期特点
- 单周期CPU:在一个时钟周期内完成从指令取出到得到结果的所有工作,所有指令执行时间以最长指令时间为准,效率较低,目前应用较少。
- 多周期CPU:将指令执行分为多个阶段,每个阶段在一个时钟周期内完成,时钟周期短,不同指令所用周期数可不同,是本节主要讨论对象 。
- 典型指令程序示例:以由6条典型指令(涵盖RR型、RS型,包括算术逻辑、访存、程序转移指令等)组成的简单程序为例,后续将通过对CPU取出并执行指令的分解动作,具体分析每条指令的指令周期。
5.2.2 NOT 指令的指令周期¶
该节主要围绕NOT指令的指令周期展开,详细阐述了其在取指周期和执行周期的操作流程,具体内容如下:
- NOT指令周期概述:NOT指令属于RR型指令,其指令周期由两个CPU周期组成,其中取指周期和执行周期各占一个CPU周期。
- 取指周期操作:在此阶段,CPU需完成三项核心操作:
- 指令读取:从指令存储器中取出NOT指令。
- PC更新:将程序计数器PC的值加1,使其指向下一条指令地址,为后续取指令做好准备。
- 操作码处理:对取出指令的操作码进行译码或测试 ,以明确指令功能和后续需执行的操作。在第一条指令取指周期中,具体执行步骤为:
- 向PC中装入第一条指令地址101 ;
- 将PC内容传至指令地址总线ABUS(I),对指令存储器进行译码并启动读命令;
- 通过指令总线IBUS将101号地址处的MOV指令装入指令寄存器IR;
- PC内容加1变为102;
- 对IR中的操作码进行译码;
- CPU识别出是NOT指令,完成取指周期。
- 执行周期操作:CPU依据指令操作码译码结果执行具体操作。对于NOT指令,执行周期的主要任务是将通用寄存器R1的值取反后送入通用寄存器R0,具体步骤如下:
- 操作控制器OC依据指令寄存器IR中源寄存器字段的地址编码,选中通用寄存器R1作为源寄存器;
- OC向ALU发送控制信号,指定ALU执行取反操作;
- OC发出控制信号打开ALU输出三态门,将ALU运算结果传输至数据总线DBUS;
- OC控制将DBUS上的数据存入数据缓冲寄存器DR;
- OC根据指令寄存器中目标寄存器字段的地址编码,选中通用寄存器R0作为目标寄存器,并将DR中的数据打入R0,完成指令执行 。
5.2.3 LAD 指令的指令周期¶
该节围绕LAD指令的指令周期展开,介绍了指令的类型、周期构成,并详细阐述了取指周期和执行周期的操作,具体内容如下:
- LAD指令周期概述:LAD指令是RS型指令,其指令执行过程包括从指令存储器取指令,从数据存储器6号单元取出数据100装入通用寄存器R1(原R1中数据10被替换为100) 。由于一次访问指令存储器,一次访问数据存储器,所以LAD指令的指令周期需要3个CPU周期。
- LAD指令的取指周期:在LAD指令的取指周期中,CPU的动作与MOV指令取指周期相同,由程序计数器PC提供指令地址102,从指令存储器读出“LDA R1, 6”指令放入指令寄存器IR中,然后将PC的值加1变为103,为取下条ADD指令做准备。同时,后续ADD、STO、JMP三条指令的取指周期中,CPU的动作也与MOV指令一样。
- LAD指令的执行周期:LAD指令的执行周期中,CPU执行的动作如下:
- 操作控制器OC发出控制命令,打开IR输出三态门,将指令中的直接地址码6放到数据总线DBUS上;
- OC发出操作命令,将地址码6装入数存地址寄存器AR;
- OC发出读命令,将数存6号单元中的数100读出到DBUS上;
- OC发出命令,将DBUS上的数据100装入缓冲寄存器DR;
- 操作控制器OC根据指令寄存器中的目标寄存器字段的地址编码,选中通用寄存器R1为目标寄存器,并将DR中的数100装入通用寄存器R1,冲掉原来R1中的数10 。
- 因为数据总线DBUS上分时进行了地址传送和数据传送,所以这一过程需要2个CPU周期,至此LAD指令执行周期结束。
5.2.4 ADD 指令的指令周期¶
该节围绕ADD指令的指令周期展开,介绍了指令类型、周期构成,重点阐述执行周期操作,具体如下:
- ADD指令周期概述:ADD指令属于RR型指令,其指令周期包含两个CPU周期,其中取指周期与通用取指周期相同,主要介绍其执行周期操作 。
- ADD指令执行周期操作:执行周期中,操作控制器OC依据指令寄存器IR中的地址编码,协调各部件完成加法运算及结果存储,具体步骤为:
- 寄存器选择:OC根据IR中的源寄存器和目标寄存器字段地址编码,分别选中通用寄存器R1和R2,作为源寄存器和目标寄存器。
- 运算指定:OC向算术逻辑单元ALU发送控制命令,指定其对R1(值为100)和R2(值为20)进行加法操作。
- 结果传输:OC打开ALU输出三态门,将运算结果120传输至数据总线DBUS,随后数据被打入缓冲寄存器DR;同时,ALU产生的进位信号保存至状态字寄存器PSWR 。
- 结果存储:OC再次依据IR中目标寄存器字段地址编码,选中R2作为目标寄存器,将DR中的120装入R2,覆盖R2原有的内容20,至此,ADD指令执行周期结束。
5.2.5 STO 指令的指令周期¶
该节围绕STO指令的指令周期展开,介绍了指令类型、周期构成,并详细阐述了执行周期的操作,具体内容如下:
- STO指令周期概述:STO指令是RS型指令,其指令执行过程包括先从指令存储器取出STO指令,再根据通用寄存器R3的值(R3 = 30)作为地址访问数据存储器,将通用寄存器R2的值(R2 = 120)写入到数据存储器的30号单元(原数据40被冲掉) 。由于一次访问指令存储器,一次访问数据存储器,所以STO指令的指令周期需要3个CPU周期,其中执行周期为2个CPU周期,重点介绍其执行周期操作 。
- STO指令执行周期操作:执行周期中,操作控制器OC依据指令寄存器IR中的地址编码,协调各部件完成数据存储操作,具体步骤为:
- 地址寄存器选择:OC根据IR中的源寄存器字段地址编码,选中通用寄存器R3 = 30作为数据存储器的地址单元。
- 地址传输:OC发出操作命令,打开通用寄存器输出三态门(不经ALU以节省时间),将地址30放到数据总线DBUS上,随后将地址30打入地址寄存器AR,并进行数据存储器地址译码。
- 数据寄存器选择:OC根据IR中的源寄存器字段地址编码,选中通用寄存器R2 = 120作为数据存储器的写入数据。
- 数据传输:OC发出操作命令,打开通用寄存器输出三态门,将数据120放到DBUS上,然后将数据120写入数据存储器的30号单元,覆盖原有的数据40,至此,STO指令执行周期结束。
- 注意事项:由于DBUS是单总线结构,所以先送地址(30),后送数据(120),地址和数据必须分时传送 。
5.2.6 JMP 指令的指令周期¶
该节围绕JMP指令的指令周期展开,主要内容如下:
- JMP指令概述:JMP指令属于无条件转移指令,其功能在于改变程序的执行顺序 。该指令的指令周期共包含两个CPU周期,其中取指周期占1个CPU周期,执行周期占1个CPU周期。
- JMP指令执行周期操作:在执行周期,CPU的具体操作步骤如下:
- 首先,操作控制器OC发出操作控制命令,打开指令寄存器IR的输出三态门,将IR中的地址码101发送到数据总线DBUS上 。
- 接着,OC再次发出操作控制命令,把DBUS上的地址码101打入到程序计数器PC中,PC中原来的内容106被替换。这使得下一条指令不再从106号单元取出,而是转移到101号单元取出,至此,JMP指令的执行周期结束 。
- 特殊说明:执行“JMP 101”指令时,当前示例的五条指令组成的程序会进入死循环,除非人为停机,否则程序将一直运行。此处转移地址101是随意设定的,主要用于展示转移指令改变程序执行顺序的功能 。
5.2.7 用方框图语言表示指令周期¶
该节主要围绕方框图语言表示指令周期展开,具体内容如下:
- 引入方框图语言的原因:通过画示意图或数据通路图解释指令周期的取指和执行过程是为教学服务,在计算机设计中使用该方式过于烦琐且不必要,因此引入方框图语言。
- 方框图语言的表示规则:
- 方框:一个方框代表一个CPU周期,方框内的内容表示数据通路操作或某种控制操作。
- 菱形符号:用于表示判别或测试,时间上依附于紧接它前面一个方框的CPU周期,不单独占用一个CPU周期。
- 典型指令的方框图表示:对NOT、ADD、JMP、LAD和STO五条典型指令归纳,用方框图语言表示指令周期 。所有指令的取指周期完全相同,均为一个CPU周期;执行周期因指令功能不同而不同,其中NOT、ADD、JMP指令的执行周期为一个CPU周期,LAD和STO指令的执行周期为两个CPU周期。同时,介绍了方框图中DBUS(数据总线)、ABUS(D)(数存地址总线)、ABUS(I)(指存地址总线)、RD(D)(数存读命令)、WE(D)(数存写命令)、RD(I)(指存读命令)等符号的含义。
- 公操作符号及含义:“~”为公操作符号,表示指令执行完毕,转入指令结束前的公操作,主要处理外围设备请求,如中断处理、通道处理等。若无外设请求,CPU转入取指令操作 ,由于所有指令取指周期相同,所以取指令也可视为公操作。
- 例题与练习:通过【例5.1】展示了双总线结构机器数据通路下,“ADD R2, R0”和“SUB R1, R3”指令的指令周期流程图绘制及微操作控制信号序列列出。同时给出两道思考题,分别涉及缩短“ADD R2, R0”指令取指周期的数据通路修改及指令周期速度提升计算,以及支持一般化加法指令格式的数据通路修改和指令周期流程图绘制 。
5.3 时序发生器和控制方式¶
5.3.1 时序信号的作用和体制¶
该节围绕时序信号的作用和体制展开,通过与日常生活作息时间类比,介绍了时序信号的重要性、体制等内容,具体如下:
- 时序信号的作用:
- 与作息时间类比:日常生活中人们有严格作息时间以保证教学秩序等正常进行,CPU中也有类似的时序信号,计算机能准确、迅速、有条不紊工作,得益于CPU中的时序信号产生器。
- 指挥机器动作:操作控制器利用定时脉冲的顺序和不同脉冲间隔,指挥机器动作,为计算机各部分提供工作的时间标志。
- 识别指令和数据:从时间上,取指令事件发生在指令周期的第一个CPU周期(取指令阶段),取数据事件发生在执行指令阶段;从空间上,取出的代码若是指令送往指令寄存器,若是数据送往运算器,体现了时间控制的重要性。
- 时间分段约束:在一个CPU周期中,时间还分为若干小段,严格的时间约束对CPU必要,否则可能造成信息丢失或错误结果,操作控制器发出的控制信号是时间和空间因素的函数。
- 时序信号的体制:
- 电位-脉冲制:由计算机硬件的器件特性决定,时序信号最基本的体制是电位-脉冲制。例如寄存器间数据传送时,数据加在触发器电位输入端,打入数据的控制信号加在时钟输入端,电位高低表示数据,且控制信号到来前电位信号需稳定,保证打入数据可靠,虽部分部件如ALU只用电位信号工作,但最终运算结果送通用寄存器仍需脉冲信号配合。
- 硬布线控制器时序体制:在复杂的硬布线控制器中,时序信号采用主状态周期-节拍电位-节拍脉冲三级体制。节拍电位表示一个CPU周期时间(较大时间单位),其中包含若干节拍脉冲(较小时间单位),主状态周期包含若干节拍电位(最大时间单位,可用一个触发器状态持续时间表示)。
- 微程序控制器时序体制:在微程序控制器中,时序信号较简单,采用节拍电位-节拍脉冲二级体制,只有一个节拍电位(表示一个CPU周期时间),其中包含若干节拍脉冲(T周期,把一个CPU周期划分成几个较小时间间隔,间隔可相等或不等)。
5.3.2 时序信号发生器¶
该节围绕时序信号发生器展开,介绍了其功能、构成及各部分作用,具体内容如下:
- 时序信号发生器的功能:用逻辑电路实现指令周期中所需的典型时序,不同计算机的时序信号产生电路不同,一般大型计算机因操作动作多,时序电路复杂;微型机操作动作少,时序电路简单;从设计操作控制器方法看,硬布线控制器的时序电路复杂,微程序控制器的时序电路简单,但最基本的构成相同 。
- 微程序控制器中时序信号发生器的结构及各部分作用:
- 时钟源:为环形脉冲发生器提供频率稳定且电平匹配的方波时钟脉冲信号,通常由石英晶体振荡器和与非门组成的正反馈振荡电路组成,其输出送至环形脉冲发生器。
- 环形脉冲发生器:产生一组有序的间隔相等或不等的脉冲序列,用于通过译码电路产生最终所需的节拍脉冲。
- 节拍脉冲和存储器读/写时序:
- 节拍脉冲:在一个CPU周期中产生四个等间隔的节拍脉冲 \(1T^{\circ} ~ 4T^{\circ}\) (脉冲宽度均为200ns,一个CPU周期为800ns),\(T 1~T 4\) 是 \(1T^{\circ} ~ 4T^{\circ}\) 经过启停控制逻辑中与门后的输出(逻辑关系一致,忽略与门时间延迟) 。
- 存储器读/写时序:存储器读/写时序信号 \(RD^{\circ}、WE^{\circ}\) 用于进行存储器的读/写操作。在硬布线控制器中,节拍电位信号由时序产生器通过逻辑电路产生;在微程序设计的计算机中,节拍电位信号可由微程序控制器提供(持续时间通常为一个CPU周期时间)。
- 启停控制逻辑:
- 控制原理:机器接通电源自动产生原始节拍脉冲信号 \(1T^{\circ} ~ 4T^{\circ}\) ,但只有启动机器运行时,才允许时序发生器发出CPU工作所需的节拍脉冲 \(T 1~T 4\) ,对读/写时序信号也需启停逻辑控制。启停控制逻辑的核心是运行标志触发器 \(C r\) ,当 \(C r\) 为“1”时,原始节拍脉冲和读/写时序信号通过门电路发送,变为CPU所需的节拍脉冲信号和读/写时序;当 \(C r\) 为“0”时,关闭时序发生器。
- 启停要求:计算机启动要从第1个节拍脉冲前沿开始,停机要在第4个节拍脉冲结束后关闭时序产生器,以保证发送的脉冲完整。在 \(C r\) (D触发器) 下面加SR触发器,且用 \(4T^{\circ}\) 信号作 \(C r\) 触发器的时钟控制端,可保证在 \(T 1\) 的前沿开启时序发生器,在 \(T 4\) 的后沿关闭时序产生器 。
5.3.3 控制方式¶
该节主要围绕控制器的控制方式展开,介绍了三种常用控制方式,即同步控制、异步控制和联合控制,具体内容如下:
- 控制方式的定义及背景:机器指令的指令周期由不同数量的CPU周期组成,CPU周期内操作控制信号的数量和出现顺序也有差异,这表明每条指令和每个操作控制信号所需时间不同。控制不同操作序列时序信号的方法称为控制器的控制方式,其实质反映了时序信号的定时方式 。
- 同步控制方式:在任何情况下,已定指令执行所需的机器周期数和时钟周期数固定不变。有以下三种方案:
- 完全统一机器周期:所有指令周期具有相同的节拍电位数和节拍脉冲数,但对简单指令和操作会造成时间浪费。
- 不定长机器周期:大多数操作在较短机器周期内完成,对于时间紧张的操作,通过延长机器周期解决。
- 中央控制与局部控制结合:大部分指令在固定机器周期完成(中央控制),少数复杂指令(如乘、除、浮点运算)采用另外的时序定时(局部控制) 。
- 异步控制方式:特点是每条指令、每个操作控制信号需要多少时间就占用多少时间。指令周期的机器周期数不固定,控制器发出操作控制信号后,等待执行部件完成操作发回“回答”信号,再开始新操作,形成的操作控制序列没有固定的CPU周期数或严格的时钟周期与之同步 。
- 联合控制方式:同步控制和异步控制相结合的方式,有两种情况:
- 大部分操作序列在固定机器周期中,对于某些时间难以确定的操作,以执行部件的“回答”信号作为操作结束标志,如CPU访问主存时,依靠“READY”信号作为读/写周期的结束标志(半同步方式) 。
- 机器周期的节拍脉冲数固定,但各条指令周期的机器周期数不固定,如5.4节所讲的微程序控制 。
5.4 微程序控制器¶
5.4.1 微程序控制原理¶
该节主要围绕微程序控制原理展开,详细介绍了微程序控制的基本概念、组成结构、工作过程及相关关系,具体内容如下:
- 微程序控制基本思想:1951年威尔克斯教授提出微程序设计思想,将程序设计与存储逻辑结合实现操作控制器。基本思想是把机器指令操作流程分解为微操作序列,用二进制代码编成微指令 。一条机器指令对应一段微程序,所有机器指令对应的微程序存于控制器内只读存储器。执行指令时,读出微指令产生微命令,实现指令功能。与硬布线控制器相比,微程序控制器具有规整性、灵活性、可维护性等优点,适合设计复杂控制器。
- 微命令和微操作:控制部件通过控制线向执行部件发微命令,执行部件接受后进行的操作是微操作;执行部件通过反馈线向控制部件反馈操作情况,即“状态测试”。微操作分为相容性(可同时或同CPU周期并行执行)和相斥性(不可同时或同CPU周期并行执行) 。以简单运算器模型为例,ALU的加、减、传送操作是相斥性微操作,ALU的X输入和Y输入的部分微操作是相容性微操作。
- 微指令和微程序:在一个CPU周期中,一组实现一定操作功能的微命令组合构成微指令 。微指令字长23位,由操作控制(17位,每一位表示一个微命令,“1”表示发出,“0”表示不发)和顺序控制(6位,决定下一条微指令地址,含判别测试标志)两部分组成 。一条机器指令功能由微指令序列(微程序)实现,执行当前微指令时需确定后继微指令地址,可直接给出或根据判别测试修改。
- 微程序控制器原理框图:由控制存储器(存放微程序,只读,工作时读出并执行微指令,微指令周期即其工作周期,对速度要求高)、微指令寄存器(存放读出的微指令,含微地址寄存器和微命令寄存器)和地址转移逻辑(微程序分支时,根据判别测试字段和状态条件反馈信息修改微地址)三大部分组成 。
- 微程序举例:以“十进制加法”指令为例,其功能是用BCD码完成运算,和数大于9时需加6修正。微程序由四条微指令组成:
- 第一条“取指”微指令:从内存取机器指令到IR,PC加1,对指令操作码执行P1判别测试并修改微地址。
- 第二条微指令:完成6+a运算。
- 第三条微指令:完成6+a+b运算,通过P2测试进位标志Cy,根据结果决定微程序走向。
- 第四条微指令:当Cy=0时,完成R2 - R1→R2操作;当Cy=1时,不执行此条指令 。执行完后回到“取指”微指令,准备取下一条机器指令。
- CPU周期与微指令周期的关系:在串行方式的微程序控制器中,微指令周期 = 读出微指令时间 + 执行微指令时间 。为保证同步,可将微指令周期设计得与CPU周期相等,如一个CPU周期0.8μs,含四个节拍脉冲T1 - T4,用T4读取微指令,T1 + T2 + T3执行微指令 。
- 机器指令与微指令的关系:
- 一条机器指令对应一个微程序,由若干微指令序列实现其功能,“取指”等公操作也有单独微程序 。
- 指令、程序、地址与微指令、微程序、微地址分别对应内存储器和控制存储器,控存微程序类似子程序定义,内存机器指令类似子程序调用,且微程序属于硬件范畴,对软件不可见 。
- 指令周期对应微程序流程图,每个CPU周期对应一条微指令 。
5.4.2 微程序设计技术¶
该节围绕微程序设计技术展开,阐述了微指令结构设计目标,以及微命令编码、微地址形成、微指令格式等关键技术,具体内容如下:
- 微程序设计关键与目标:确定微指令的结构是微程序设计的关键。设计目标包括缩短微指令字长度、减小控制存储器容量、提高微程序执行速度、便于微指令修改以及提升微程序设计灵活性 。
- 微命令编码:对微指令操作控制字段的表示方法,主要有三种:
- 直接表示法:操作控制字段每一位代表一个微命令,优点是直观、输出可直接用于控制,缺点是微指令字长,控制存储器容量大。
- 编码表示法:将相斥性微命令信号分组,通过小组译码器译码输出控制信号。该方法能用较少二进制位表示更多微命令,可缩短微指令字长,但会使微程序执行速度稍慢,目前字段直接译码法应用较普遍。
- 混合表示法:结合直接表示法与字段编码法,综合考虑微指令字长、灵活性和执行速度等因素。此外,微指令中可设常数字段,用作操作数或计数器初值 。
- 微地址的形成方法:确定下一条微指令地址的方法主要有两种:
- 计数器方式:类似于程序计数器产生机器指令地址,顺序执行时,后继微地址由现行微地址加增量产生;非顺序执行时通过转移方式。此方法微指令顺序控制字段短,微地址产生机构简单,但多路并行转移能力弱、速度慢、灵活性差,且顺序执行的微指令序列需安排在控制存储器连续单元中。
- 多路转移方式:一条微指令可实现多个转移分支。微程序不分支时,后继微地址由顺序控制字段给出;分支时,根据“判别测试”标志和“状态条件”信息选择微地址 。n位“状态条件”标志可实现2ⁿ路转移,该方式能以短顺序控制字段实现多路并行转移,灵活性好、速度快,但转移地址逻辑需用组合逻辑设计 。
- 微指令格式:由微指令编译方法决定,分为水平型微指令和垂直型微指令:
- 水平型微指令:一次能定义并执行多个并行操作微命令,按控制字段编码方法又分为全水平型、字段译码法水平型和直接与译码混合的水平型微指令。其并行操作能力强、效率高、执行指令时间短,解释指令的微程序具有微指令字长但微程序短的特点,但用户掌握难度较大 。
- 垂直型微指令:设置微操作码字段,采用微操作码编译法规定功能,结构类似机器指令,一条微指令功能简单,实现一条机器指令的微程序较长 。具有微指令字短、微程序长的特点,与指令相似,相对容易掌握,在Pentium 4、安腾系列机中得到应用。
- 两者比较:水平型微指令在并行操作能力、执行效率和灵活性上优于垂直型;水平型执行指令时间短,垂直型需译码,执行时间长;水平型微指令字长微程序短,垂直型相反;水平型用户难掌握,垂直型较易掌握。
5.5 硬布线控制器¶
该节围绕硬布线控制器展开,详细介绍其基本思想、指令执行流程、微操作控制信号产生及基于有限状态机的设计方法,具体内容如下:
- 基本思想:硬布线控制器是早期的计算机操作控制器设计方法,将控制部件视为产生固定时序控制信号的逻辑电路,以使用最少元件、获取最高操作速度为设计目标 。其由门电路和触发器构成复杂树形逻辑网络,一旦构成,难以增加新控制功能。与微程序控制器相比,硬布线控制器设计调试复杂,但运行速度快(仅取决于电路延迟),随着VLSI技术发展等因素,重新得到广泛应用。其逻辑网络输入信号来自指令操作码译码器输出、执行部件反馈信息、时序产生器时序信号,输出信号为微操作控制信号,某一微操作控制信号是指令操作码译码器输出、时序信号和状态条件信号的逻辑函数 。
- 指令执行流程:在硬布线实现的操作控制器中,时序产生器除产生节拍脉冲信号外,还需产生节拍电位信号 。指令执行流程通常采用同步工作方式,所有指令取指周期在M1节拍完成,执行周期由M2、M3两个节拍完成 。短指令在同步方式下存在时间浪费,可通过设计跳过某些节拍来优化,但会增加节拍信号发生器电路复杂度。
- 微操作控制信号的产生:在硬布线控制器中,微操作控制信号由布尔代数表达式描述的输出函数产生 。设计方法是根据所有机器指令流程图,找出产生同一微操作信号的条件,与节拍电位和节拍脉冲组合,写出布尔代数表达式并简化,最后用门电路或可编程器件实现,同时要注意控制信号的有效形式。
- 基于有限状态机的硬布线控制器:这是当前流行的硬布线控制器设计方法,本质是组合逻辑与时序逻辑结合 。时序系统仅通过时钟周期为指令执行定时,指令执行过程由有限状态机(FSM)描述,每个时钟周期对应一个状态,每个状态输出特定微操作控制信号并实现状态转移 。该控制器由状态寄存器、状态转移逻辑和微命令发生器组成 。设计时需先根据指令执行流程画出状态转移图,再根据状态转移图和指令周期流程图得到微操作控制信号汇总表,最后实现相应逻辑电路构造控制器。
5.6 流水线技术与流水处理器¶
5.6.1 流水线原理¶
该节围绕流水线原理展开,从并行处理技术引入,详细阐述了流水线原理、分类、性能指标及特点,具体内容如下:
- 并行处理技术:计算机引入流水线旨在加快处理速度,早期串行处理各操作串行完成,而并行处理使操作能同时进行,成为计算机发展主流。并行性含同时性(同一时刻发生多个事件)和并发性(同一时间间隔内发生多个事件),并行处理技术主要有三种形式:
- 时间并行:即时间重叠,让多个处理过程在时间上相互错开,轮流重叠使用同一套硬件设备,以加快硬件周转赢得速度,实现方式是采用流水处理部件,能保证较高的性能价格比,目前高性能微型机广泛使用。
- 空间并行:指资源重复,以“数量取胜”提高处理速度,在多处理器系统、多计算机系统及单处理器系统中均有应用。
- 时间并行 + 空间并行:是前两者的综合应用,如英特尔处理器采用的超标量流水技术,可带来更好的高速效益。
- 流水线原理:流水线源于产品批量生产中的分工 - 合作关系,引入计算机内部可提高并行处理能力。实现流水需将输入任务分割为子任务,使各子任务能在流水线各阶段并发执行,连续输入任务可连续输出结果,实现子任务级并行。以指令流水线为例,其执行过程包含取指(IF)、指令分析/译码(ID)、运算执行(EX)和结果写回(WB)四个步骤,通过安排独立部件负责各子任务,由统一时钟同步,数据在各过程段间流动,一个指令周期由若干流水周期组成,流水周期取决于最慢步骤的时间 。对比非流水计算机,标量流水计算机和超标量流水计算机(具有两条或两条以上指令流水线)可大幅提高计算机速度,当前个人计算机处理器广泛采用超标量流水技术 。
- 流水线分类:
- 按应用场合和层次:可分为算术流水线(部件级,如流水加法器等)、指令流水线(处理器级,划分指令执行步骤)、处理器流水线(处理器间,程序步骤并行,应用于多机系统)。
- 按功能段连接方式:分为线性流水线(功能段顺序连接,无反馈回路,可再分为同步和异步流水线)和非线性流水线(功能段存在反馈连接,一个工作周期内可多次占用某些功能段) 。
- 按输入输出任务顺序:分为顺序流水线(输入输出任务顺序一致)和乱序流水线(允许后进入任务先完成) 。此外,还可按数据表示方式等特性分类。
- 线性流水线的性能指标:线性流水线时钟周期定义为各过程段处理时间与缓冲寄存器延时的最大值,处理频率为时钟周期的倒数 。其工作过程分为填充、稳定流水和排空三个阶段,稳定流水时间越长效率越高。理论上,k级线性流水线处理n个任务所需时钟周期数为\(k + n - 1\),非流水线处理所需时钟周期数为\(n \cdot k\),两者比值为加速比,当\(n \gg k\)时,加速比趋近于流水线级数k(潜在加速比)。流水线吞吐率是单位时间内完成的任务数量或输出结果数量,指令流水线实际吞吐率指单位时间内流出的指令数,存在最大吞吐率 。
- 流水线的特点:
- 流水线技术不能减少单个任务处理延迟,但可提高整体工作负载吞吐率,连续流水时间越长,系统效率越高。
- 适合对同一种运算进行多次重复,填充和排空流水线的时间越长,加速比越低。
- 要求各阶段处理时间大致相同,流水线速率受限于最慢的流水段,若执行时间不均衡,加速比会降低。
5.6.2 流水线的应用¶
该节内容围绕流水线的应用展开,主要介绍了浮点运算流水线和流水计算机两方面内容,具体如下:
- 浮点运算流水线
- 原理与组成:浮点加减法由0操作数检查、对阶操作、尾数操作、结果规格化及舍入处理4步完成,流水线浮点加法器可由4个过程段组成 。以两个规格化浮点数 \(x=1.1000×2^2\),\(y=1.1100×2^4\) 相加为例,需先对阶,再进行尾数相加,最后规格化得到结果 \(1.0001×2^5\) 。
- 性能计算:通过【例5.4】说明,4级流水浮点加法器中,若每个过程段所需时间不同,流水线时钟周期取各段时间与缓冲寄存器延时之和的最大值。经计算,在不同时间设定下,可得出相应的加速比,如各段时间不同时加速比为3,各段时间相同时加速比为4 。
- 向量运算应用:以【例5.5】为例,使用4段浮点加法流水线(阶码比较、对阶操作、尾数相加、规格化)实现一维向量求和运算,通过画出向量加法计算流水时空图,展示出流水线填满后,每隔一个时钟周期便输出一个运算结果,体现其在向量计算中的优越性 。
- 流水计算机
- 系统组成:现代流水计算机的CPU按流水线方式组织,通常由指令部件、指令队列、执行部件三大部分组成,可构成一个3级流水线 。程序和数据存储在主存(多采用多体交叉存储器以提高访问速度)中,cache用于弥补主存和CPU速度差异 。
- 各部件流水线:指令部件自身构成指令流水线,由取指令、指令译码、计算操作数地址、取操作数等过程段组成;指令队列是先进先出的寄存器栈,也由若干过程段组成流水线;执行部件包含多个算术逻辑运算部件,且这些部件也采用流水线方式构成 。
- 工作方式与优化:执行部件执行第\(I\)条指令时,指令队列存放\(I + 1, I + 2, …, I + k\)条指令,指令部件同时取第\(I + k + 1\)条指令 。为匹配存储器存取时间与流水线其他过程段速度,多采用多体交叉存储器;为解决执行段速度匹配问题,采用将执行部件分为定点和浮点执行部件并行工作、浮点执行部件内部分设加法和乘/除部件并行执行、浮点运算部件采用流水线工作等方法 。
5.6.3 指令流水线设计中的若干问题¶
该节围绕指令流水线设计中的若干问题展开,详细介绍了影响指令流水线性能的各种因素及解决方案,具体内容如下:
- 流水线的拥挤问题
- 问题描述:过程段划分影响流水线性能,若某一过程段处理速度慢,会成为瓶颈,导致指令流经时产生拥挤 。
- 解决方案:一是对瓶颈段进行细分,将其拆分为更小的过程段;二是重复设置瓶颈段,采用空间并行方法,为该段设置多个可并行工作的过程段,并设置数据分配器和收集器进行指令调度 。
- 资源相关
- 问题描述:又称结构相关,指多条指令在同一时钟周期争用同一个功能部件,引发硬件资源冲突。例如,当数据和指令存于同一存储器且仅有一个访问端口时,不同指令可能同时访问存储器,产生冲突 。
- 解决方案:引入暂停周期,使相关指令停顿;采用资源重复设置,使用双端口存储器或分设数据、指令存储器 。
- 数据相关
- 问题描述:指令重叠执行时,某指令依赖前面指令的执行结果数据却无法及时获取而产生的相关。根据数据存储位置,分为主存数相关和寄存器数相关;按照指令读写顺序,分为写后读(RAW)、读后写(WAR)、写后写(WAW)三类相关 。
- 解决方案:“后推法”,即加入“流水线互锁”部件,暂停后继指令;采用定向技术(旁路技术),设置运算结果缓冲寄存器或专用数据通路;利用编译器调度策略,插入空操作指令;采用动态调度方式,由硬件调整指令执行顺序 。
- 控制相关
- 问题描述:由条件转移指令或中断引发,执行此类指令时,PC值改写不确定,导致流水线断流 。
- 解决方案:冻结或排空流水线;采用延迟转移法,由编译程序重排指令序列,使转移指令后已进入流水线的有用指令继续执行;使用转移预测法,依据指令过去行为预测未来,提前判断取指位置,可通过两路指令预取队列和目标指令cache提升预测效果 。
- 相关例题
- 例5.6:通过三组指令,判断出不同指令组分别存在RAW、WAR、WAW相关 。
- 例5.7:针对超标度为2的超标量流水线,分析存在多种数据相关的6条指令序列,画出按序发射按序完成的各段推进情况图和流水线时空图,展示数据相关对指令执行顺序和流水线运行的影响 。
5.6.4 动态流水线调度¶
该节内容围绕动态流水线调度展开,详细介绍其定义、模型及各单元功能,具体如下:
- 定义:动态流水线调度是通过硬件支持对指令进行重新排序,以避免处理器阻塞的技术 。
- 模型:动态流水线调度模型中,流水线主要分为三个单元,即取指令发射单元、多个功能单元(数量可达10个或更多)和指令完成单元 。
- 取指令发射单元:负责取指令,对指令进行译码,并将指令分发到相应的功能单元执行 。
- 功能单元:每个功能单元都配备保留站,用于暂存操作数和操作指令。当保留站中操作数齐全且功能单元准备就绪,便开始计算结果。计算完成后,将结果发送到等待该结果的储存站以及指令完成单元 。
- 指令完成单元:包含重排序缓冲器,其作用是确定何时能安全地将结果存入寄存器堆或内存;重排序缓冲器也可提供操作数,工作方式类似于静态调度流水线中的旁路逻辑 。一旦结果写入寄存器堆,后续指令即可像在普通流水线中一样,直接从寄存器堆获取操作数 。
5.7 RISC 处理器¶
5.7.1 RISC 机器的特点¶
该节围绕RISC机器的特点展开,介绍了其起源、基本要素、特征,并对比了RISC与CISC的主要特征,具体内容如下:
- RISC机器的起源与基本要素:第一台RISC(精简指令系统计算机)于1981年在美国加州大学伯克利分校问世,它继承了CISC(复杂指令系统计算机)的成功技术,克服了CISC机器的缺点。RISC概括的三个基本要素为:
- 一个有限的简单的指令系统;
- CPU配备大量的通用寄存器;
- 强调对指令流水线的优化。
- RISC的目标是使处理器结构更简单、合理,具有更高性能和执行效率,降低开发成本。
- RISC机器的特征:
- 指令长度:使用等长指令,目前典型长度是4B。
- 寻址方式:寻址方式少且简单,一般两三种,最多不超过4种,无存储器间接寻址方式。
- 访存指令:只有取数指令(LOAD)、存数指令(STORE)可以访问存储器,指令中最多出现RS型指令,无SS型指令。
- 指令数目与格式:指令系统中的指令数目一般少于100种,指令格式一般少于4种。
- 指令功能与控制器:指令功能简单,控制器多采用硬布线方式,以实现更快执行速度。
- 执行时间:平均而言,所有指令的执行时间为一个处理时钟周期。
- 寄存器个数:指令格式中,用于指派整数寄存器的个数不少于32个,用于指派浮点数寄存器的个数不少于16个。
- 资源使用:强调通用寄存器资源的优化使用。
- 指令流水:支持指令流水并强调指令流水的优化使用。
- 软件系统开发:RISC技术的复杂性在它的编译程序,软件系统开发时间比CISC机器长。
- RISC与CISC的主要特征对比:
- 指令系统:CISC复杂、庞大,RISC简单、精简。
- 指令数目:CISC一般大于200,RISC一般小于100。
- 指令格式:CISC一般大于4,RISC一般小于4。
- 寻址方式:CISC一般大于4,RISC一般小于4。
- 指令字长:CISC不固定,RISC等长。
- 可访存指令:CISC不加限制,RISC只有取数/存数指令。
- 指令使用频率:CISC各种指令使用频率相差很大,RISC相差不大。
- 指令执行时间:CISC各种指令执行时间相差很大,RISC绝大多数在一个周期内完成。
- 优化编译实现:CISC很难,RISC较容易。
- 程序源代码长度:CISC较短,RISC较长。
- 控制器实现方式:CISC绝大多数为微程序控制,RISC绝大多数为硬布线控制。
- 软件系统开发时间:CISC较短,RISC较长。
5.7.2 华为鲲鹏处理器¶
该节主要介绍了华为鲲鹏处理器,涵盖处理器片上系统组织结构、内核、流水线技术及片上系统逻辑结构等内容,具体如下:
- 华为鲲鹏920处理器片上系统的组织结构:
- 基本组成:处理器内核组合由一致性互联总线包围,最多配置64个TaiShan V110处理器内核,通过分组组织;还集成多种系统和外设控制器,如DDR控制器、以太网接口等 。
- 主要亮点:
- 高性能:优化每个内核设计,采用多发射等技术提升算力;支持2路和4路片间互联,内置多种自研硬件加速引擎。
- 高吞吐率:采用CoWoS封装技术,实现多晶片合封,提升良率、控制成本,组合灵活 。
- 高集成度:集成南桥、RoCE网卡和SAS存储控制器等功能,单颗芯片实现传统4颗芯片功能。
- 高能效:能效比超主流处理器30%,48核的鲲鹏920 - 4826处理器单位功耗SPECint性能测评分高达5.03 。
- TaiShan V110处理器内核:
- 基本信息:是鲲鹏处理器基本计算单元,不同版本内置24 - 64个高性能、低功耗内核,兼容ARMv8 - A架构,融合华为海思先进技术 。
- 部件组成:
- 取指部件:从L1指令cache取指令,每个周期最多发4条,支持动态和静态分支预测,集成L1指令cache和TLB等 。
- 指令译码部件:负责A64指令集译码,支持增强SIMD及浮点指令集,完成寄存器重命名,消除WAW和WAR冒险 。
- 指令分发部件:控制指令分发时间和结果放弃时间,包含众多ARM架构定义的寄存器 。
- 整数执行部件:含三条算术逻辑运算单元流水线和一条整数乘除运算单元流水线,支持多种运算 。
- 加载/存储单元:执行加载和存储指令,包含L1数据cache相关部件 。
- 第二级存储系统:在L1 cache缺失时服务,含512KB的L2 cache,支持8路组相联操作 。
- 增强SIMD与浮点运算单元:支持增强SIMD与浮点运算类指令执行,可支持可选加密引擎 。
- 通用中断控制器CPU接口:向处理器发送中断请求 。
- 通用定时器:为事件调度提供支持,可触发中断 。
- 性能监视器PMU:为系统性能调优提供支持,可监视ARMv8 - A架构定义及鲲鹏自定义事件 。
- 调试与跟踪部件:支持ARMv8调试架构,集成基于ARM PMUv3架构的PMU和交叉触发接口 。
- 鲲鹏流水线技术:
- 总体特点:鲲鹏处理器是超标量处理器,支持多个并行流水部件,一个指令周期内可发射多条指令 。
- 八级指令流水线结构:
- 取指:从I - cache取指令字并计算下一步取指地址,借助分支预测确定下一条指令可能的PC值 。
- 译码:识别指令类型,确认操作数地址 。
- 分配/寄存器重命名:通过寄存器重命名解决乱序执行时WAW和WAR相关性冲突 。
- 分发:将译码后的指令派发到不同运算单元的等待队列 。
- 发射:指令从等待队列无序发射到运算单元执行,进入乱序执行阶段 。
- 运算:包含8个不同执行单元,每个执行单元每个周期可完成一条指令执行 。
- 写回:将运算结果写入物理寄存器 。
- 提交:将乱序执行指令恢复程序顺序,确定推测执行结果正确性并输出最终结果 。
- 鲲鹏920处理器片上系统的逻辑结构:
- 组成方式:由处理器内核集群(CCL)、I/O集群(ICL)等部件通过片上总线互联而成 。
- 集群结构:
- 内核集群:含四个处理器内核及其L1 cache和私有L2 cache 。
- 超级内核集群(SCCL):由物理位置接近并共享资源的多个内核集群组成 。
- I/O集群:由若干物理位置相近或逻辑相关的设备构成 。
- 超级I/O集群(SICL):由物理位置接近的若干I/O集群和一个Hydra接口部件组成,提供I/O接口和加速及管理功能 。