购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 中央处理器CPU

2.2.1 中央处理器组成

中央处理器是计算机的控制、运算中心,它主要通过总线和其他设备进行联系,另外在嵌入系统设计中,外部设备也常常直接接到中央处理器的外部I/O脚的中断脚上。

中央处理器的类型和品种非常丰富,各种中央处理器的性能差别很大,有不同的内部结构、不同的指令系统。但由于基于冯·诺依曼结构,基本部分组成相似。

1.运算器ALU(Arithmetic Logic Unit)

运算器的主要功能是在控制器的控制下完成各种算术运算、逻辑运算和其他操作。一个计算过程需要用到由加法器/累加器、数据寄存器或其他寄存器等。

加法是加法运算器的基本功能,在大多数的中央处理器中,其他计算也是经过变换后使用的,一个位加法的逻辑图,如图2-2所示。

图2-2 位加逻辑图

其中:

X i 、Y i 是加数和被加数;

C i +1是低位进位;

C i 是进位;

Z i 是和。

为完成多位数据加法,可以增加电路和部件,简单的加法器能变为串行、并行加法器,超前进位加法器等。

运算器的位数,即运算器一次能对多少位的数据做加法是衡量中央处理器的一个重要指标。

运算器可以分成单总线结构的运算器、双总线结构的运算器和三总线结构的运算器。

在单总线结构的运算器中,所有部件都接到同一总线上。这种运算器中,数据可以在任何两个寄存器之间或者在任一个寄存器和ALU之间传送。由于在同一时间内,只能有一个数据在总线上传输,所以需要分两次来把两个操作数输入到ALU,同时还需要两个缓冲寄存器。显然这样操作速度较慢。但是由于它只控制一条总线,故控制电路比较简单。

在双总线结构的运算器中,两条总线各自把其数据送至ALU的输入端,两个操作数同时加到ALU进行运算,只需一次操作控制,而且马上就可以得到运算结果。特殊寄存器分为两组,分别与一条总线交换数据。当形成操作结果输出时,两条总线都已经被输入的数据占据,所以ALU的输出不能直接加到总线上去,而是到ALU输出端设置缓冲寄存器。操作控制是首先在ALU的两个输入端输入操作数,形成结果并送入缓冲寄存器,然后把结果送入目的寄存器。如果在两个总线和ALU输入端之间增加两个输入缓冲寄存器,两个输入数先放至这两个缓冲寄存器中,ALU输出端可以直接把操作结果加到总线上。

三总线结构的运算器中,ALU的两个输入端、输出端都有独立总线相连。算术逻辑操作可以在一步的控制之内完成。由于不再需要缓存器,三总线结构运算器的特点是操作时间快。

2.控制器

控制器是中央处理器的核心,它控制和协调整个计算机的动作,控制通常需要程序计数器(PC),指令寄存器(IR),指令译码器(ID),定时与控制电路,以及脉冲源,中断等共同完成,如图2-3所示。

图2-3控制器组成

中央处理器中各组件介绍如下。

(1)指令寄存器(Instruction Register):中央处理器即将执行的操作码存在这里。

(2)指令译码器(Instruction Decoder):将操作码解码,告诉中央处理器该做什么。

(3)定时与控制电路(Programmable Logic Array):用来产生各种微操作控制信号。

(4)程序计数器(Program Counter):程序计数器中存放的是下一条指令的地址(可能是下一条指令的绝对地址,也可能是相对地址,即地址偏移量)。由于多数情况下程序是顺序执行的,所以程序计算数器设计成能自动加1的装置。当出现转移指令时,需重填程序计数器。

(5)标志寄存器(Flags Register):这个寄存器通常记录运算器的重要状态或特征,典型的是否溢出、结果为0、被0除等。这个寄存器的每一位表示一个特征。标志寄存器的典型的应用是作为跳转指令的判断条件。

(6)堆栈和堆栈指针(Stack Pointer):堆栈可以是一组寄存器或在存储器内的特定区域。由于寄存器数量总是有限,所以大多数系统采用了存储器的软件堆栈。堆栈顶部的指针称为堆栈指针。

3.寄存器组

上面提及的程序计数器、标志寄存器等为专用寄存器,它们有特定的功能和用途。

通用寄存器的功能由程序指令决定,最常见的应用是放置计算的中间结果,减少对存储器的访问次数。通常寄存器的宽度和运算器的位数相一致。

2.2.2 时序产生器和控制方式

为了使计算机各部件同步工作,计算机中都有一个脉冲源,通常是晶振。这个脉冲源产生主振脉冲,主振脉冲的时间间隔为主振周期,即时钟周期。中央处理器执行指令的时间(包括取址)为指令周期,由于指令可能有不同的复杂度,所以每种指令的指令周期可能不同。CPU周期也称机器周期,一般是从内存中读一个指令的最短时间。CPU周期又由若干个时钟周期组成,如图2-4所示。

图2-4 一个指令周期

通常把CPU执行指令的各个微操作遵循的时间顺序叫时序。时序图是形象地表示信号线上信息变化的时间序列的图形。

组合逻辑控制和微过程控制是两种基本的控制方式。

1.组合逻辑控制

组合逻辑控制是使用专门的逻辑电路。它的实现有硬件接线控制和可编程逻辑阵列两种,硬件连线法最直接,可以用较少的组件实现最快的速度,如果要更改,只有重新设计。可编程逻辑阵列采用低成本大规模集成电路的方式。组合逻辑控制灵活性很差,在复杂指令系统计算机中难以处理不断增加的复杂指令,但是它使用的电子组件少,在采用精简指令集的计算机中发挥了很大作用。

2.微过程控制

为提高控制的灵活性,许多中央处理器采用微过程控制的控制方法,先看几个概念。

微程序:微程序对应一条机器指令,若干个微指令序列形成一段微程序。而微指令又可细分为若干微操作,控制内存是存放微程序的地方。

微操作是最基本的操作,可分为兼容性微操作和不兼容性微操作,这两种微操作的区别在于该微操作是否能在一个CPU周期内并行执行。

微指令格式:

前半部分用于存放对各种控制门进行激活或关闭的控制信息;后半部分是后续微指令的地址,这实现了数据结构中单项列表。

操作控制字段的格式有两种。

(1)水平型微指令:操作控制字段的每一位控制不同的控制门,可以在一个微指令中定义,执行多个并行的微操作优点是效率高、灵活,执行时间短。

(2)垂直型微指令:和水平型相比,其格式要短,一条微指令中包括的微操作少,只有1~2个,由于其指令字短,所以比较容易掌握。

在实践中也常常使用混合型微指令,即水平型微指令和垂直型微指令的混合。

2.2.3 指令流、数据流和计算机的分类

其有关定义如下。

(1)指令流:机器执行的指令序列。

(2)数据流:由指令流调用的数据序列,包括输入数据和中间结果。

1.根据多倍性的分类

按照计算机同时处于一个执行阶段的指令或数据的最大可能个数,人们把计算机分成4种,如表2-1所示。

表2-1 指令流的分类

其中,各项说明如下。

(1)SISD:这是最简单的方式,计算机每次处理一条指令,并只对一个操作部件分配数据。

(2)SIMD:具备SIMD点的通常是并行处理机,这种处理机具备多个处理单元,每次都执行同样的指令,对不同的数据单元进行处理。这种计算机非常适合处理矩阵计算等。阵列处理机、超级向量处理机也属于SIMD。

(3)MISD:这种处理方式比较难以想象,有多个处理单元,同时执行不同的指令,针对的是单一数据。但有资料认为,流水线处理机中每个数据由不同操作部件对其进行处理。

(4)MIMD:这是一种全面的并行处理机,典型的机型是多处理机。这种计算机的设计和控制都很复杂。

2.按照程序流程机制的分类
1)控制流计算机

这是通常见到的计算机,使用程序计数器(PC)来确定下一条指令的地址。指令程序流由程序员直接控制,其主存是共享的,存储区可以被多指令修改,容易产生数据相关性,对并行性不利。

2)数据流计算机

在冯·诺依曼体系中,计算机是指令流驱动的,而数据流则处于被动地位,这看起来合理,但在某些时候也不尽然。与之相对的是数据流驱动,即一旦数据准备好,则立即开始执行相关的指令。冯·诺依曼体系仍然在探索中,其体系的改良也有相当好的成果,如流水线技术和并行计算机。

在数据流计算机中,数据不在共享的存储器中,而是在指令间传送,成为令牌。当需要使用该数据的指令收到令牌,开始执行后,该令牌消失,执行的指令将执行的结果数据当做新的令牌发送,这种方式不再需要程序计数器、共享的存储器,但是需要检测数据可用性的专门部件,建立、识别、处理数据令牌标记,需要时间和空间开销。

在其他一些方面,数据流计算机还有一些困难需要克服,在数据流计算机中由于没有程序计数器,使得程序的调试和诊断变得困难,没有共享的存储器,也就无法控制其分配,无法支持数组、递归等操作。

3)归约机

归约机(Reductions Machine)又称为需求驱动,是对一个操作结果的需求起动的。归约机采用一种“惰性计算”的方式,操作只有在另一条指令需要这个操作的结果时才执行。比如,在计算5+(6×2-10)时,归约机并非先去计算6×2,而是先计算整个算式,碰到(6×2-10)再启动一个过程去计算它,最后需要计算6×2,计算后一层层退回,得到整个算式的值。需求驱动可减少那些不必要的求值操作,可以提高系统效率。

归约机是一种面向函数式的语言,或以函数式语言为机器语言的机器,要有函数定义存储器和表达式存储,操作和数据合并存储。需要大容量物理存储器并采用大虚拟存储容量的虚拟存储器,来满足对动态存储分配和大容量的存储空间的需求。

2.2.4 指令系统

指令系统是中央处理器所有指令的汇集,也是高级软件编制的基础。指令系统的选择和确定涉及很多方面,是个复杂的问题。

通常一条指令可分解为

前半部分的操作码确定指令的类型,后面的地址码确定指令所要处理的数据,根据地址码的个数可以有四址指令、三址指令,甚至是0址指令。

根据指令的长度特点,一个指令系统可能是定长指令字结构,即指令系统中所有的指令的长度都相同,特点是控制简单。如果指令的长度不固定,复杂的指令长度较长,就是变长指令字结构,这个结构的指令很容易扩展,但是增加了硬件的复杂度。

1.寻址方式

根据地址码代表的地址类型,指令系统有如下几种:

1)立即寻址

地址码就是操作数,这种寻址方式不必再次访问内存去取操作数,也无须修改操作数。

2)直接寻址

地址码就是主存内数据的绝对地址,不必做任何换算。不足之处在于寻址范围有限,地址码的位数限制了寻址空间,而计算机的发展趋势是计算机拥有越来越大的内存。如果使用变长指令结构,则该指令就会变得臃肿。

3)寄存器寻址

地址码的地址是寄存器的地址。和内存寻址比较而言,访问寄存器的速度是非常快的,所以使用寄存器寻址有非常快的速度,不足之处在于寄存器的数量有限。

4)间接寻址

地址码指向主存中的数据,这个数据仍然是一个地址,这种方式提高了寻址的灵活性,扩大了寻址的范围。由于要多次读主存,速度大为降低。

5)寄存器间接寻址

地址码保存的是寄存器地址,相对应的寄存器中保存的是数据的地址,这样既快又有灵活性,是一种广泛使用的寻址方式。

6)变址寻址

变址寻址是将地址码和变址寄存器内容相加后形成数据的地址,由于变址寄存器能自动修改,这种方式对数组运算、字符串操作等批量数据的处理非常有效。

7)基址寻址

和变址寻址类似,是将变址寄存器改成基址寄存器,不同之处在于基址寄存器的内容是基本不变的,改变的是指令中地址码部分的内容,主要作用是扩大寻址空间和再定位。

8)页面寻址

页面寻址要将主存分组成若干个区,寻址时使用区码加区内偏移的方式确定位置。

9)相对寻址

相对寻址也和变址寻址类型相似,这里变址寄存器换成了程序计数器。

2.指令类型

就功能而言,常用的指令有如下几种:

1)数据传送指令

这些指令负责数据在寄存器、主存之间的传递,其中数据交换指令是数据的双向移动,而堆栈操作指令是专门对堆栈的PUSH和POP操作。

2)运算类指令

其包括算术运算、逻辑运算、移位运算方面的指令,这类指令一般会改变标志寄存器的状态。

移位运算是一种特殊的运算,分为算术移位、逻辑移位和循环移位3类。其中,算术移位中左移在空位补0,右移则补符号位;逻辑移位无论左移还是右移都补0;循环移位是把移动空位由移出的位来填补的移位,又分带符号位移动的大循环和不带符号位移动的小循环。

算术左移等于是做乘2的操作,而算术右移等于做除2的操作。

3)程序控制指令

控制程序流程改变的指令非常多,包括条件转移指令、无条件转移指令、循环控制指令、程序返回指令、中断指令等。

4)输入/输出类指令

这类指令只有输入/输出独立编码才需要,对于统一编码部分不需要。

5)数据处理类指令

数据处理类指令包括一些比较复杂的指令,如数据转换指令、字符串操作指令、压缩和扩展指令等。

2.2.5 处理器性能

计算机系统是一个极复杂的系统,不同的指令系统,不同的体系实现方式,不同数量的硬件,不同的部件组合都对计算机的性能造成这样那样的影响,而且不同的应用对处理器性能的不同方面有不同的要求。这使得处理器性能评价需要综合考虑各方面,全面地衡量处理器的性能。

1.影响处理器性能的因素

影响处理器性能的因素有以下几项:

1)基本字长

运算器进行计算的位数称为基本字长,这在运算器中已经提到过。字长越长,处理器能计算的精度就越高,当然处理器的复杂度就越高。因为基本字长增加不但要增加运算器的复杂度,而且需要同时增加寄存器和总线的宽度。

2)数据通路宽度

数据通路宽度指的是数据总线一次所能并行传送的位数,它体现了信息的传送能力,从而影响计算机的有效处理速度。在处理器内部,数据通路的宽度一般是基本字长,而外部总线的数据通路宽度则不一定。如果外部数据通路宽度小于基本字长,那么运算器需要的数据需要多次通过总线从主存传递到处理器内部。

3)指令系统

不同的指令系统对处理器的性能也有非常大的影响,我们已经讨论过精简指令系统和复杂指令系统之间的不同,另外,一些处理器对一些专门的应用增加了专门的指令,使得处理器在处理这些专门的任务时能“得心应手”。

4)时钟频率

通常来说,提高处理器的时钟频率能提高系统的性能,因为在同样的时间内,提高时钟频率,时钟周期减少,指令的执行时间减少。

5)流水线技术

处理器使用流水线技术使不同指令的不同执行部分,能使用不同的处理单元同时执行,比如将一个指令的取址、移码、取操作数、执行、写结果分别由不同的处理单元处理。这样能有效地提高处理器性能。处理器把这些不同的处理单元在硬件上重复,形成多条流水线,以期提高性能。流水线增加了处理器的复杂度,不但处理单元要分开,而且需要增加流水线管理部分的电路。

6)内部数据/指令缓存

使用存储器内部的数据或指令缓存,能减少处理器访问较慢的内存,从而提高处理器的性能,缓存当然越大越好。在缓存中失败时,就需要从主存提取数据,这个判断需要增加控制电路。如果缓存太小或管理不当,有可能对性能造成负面影响。

2.处理器性能的评价

评价处理器性能可以直接给出处理器每条指令的执行时间,或者是指令系统中的指令执行时间的某种加权评价,还有就是计算处理器每秒能执行多少条加法指令。1个MIPS指的是处理器每秒能完成1×10 6 条指令。

这样的简单评价方法随着计算机应用的不断发展显得过于简单,局限性也日益暴露。于是,很快出现了改进的方法。

1)等效指令速度法

等效指令把指令分成若干种不同的类型,分别统计各种类型指令在整个程序中的比例和执行时间来计算等效指令速度。

采用固定比率的方法来计算处理器的执行时间,不能灵活地适应不同的程序应用存在的指令频率不同,不能反映出不同处理器之间数据长度和指令功能强弱对处理器性能的影响,同时也不能反映出处理器内部数据缓存、流水线等对性能的影响。

2)数据处理速度法

这个方法试图给出处理器的“数据处理速度”,这个值考虑了不同指令及不同操作数的平均长度对处理器性能的影响。这种方法主要对处理器和主存储器的速度进行度量,没有涉及Cache、多功能部件等技术对性能的影响。

3)核心程序法

核心程序法是归纳总结应用程序中使用最为频繁的那部分程序作为核心程序,把这些程序在不同的处理器上运行,运行时间作为不同处理器的性能评价依据。使用精挑细选的核心程序,能够比较全面地评价处理器对某种应用程序的性能。和实际的应用程序相比,核心程序由于比较小,所以缓存利用率高。 R8uOv9lYi4fjpKvtanBRIe+U6lC4yCd2UL63cqGMblcrCB7syZG4aY8pRJN3Jr6J

点击中间区域
呼出菜单
上一章
目录
下一章
×