《新编计算机科学概论》一2.4 处理器体系结构-阿里云开发者社区

开发者社区> 华章出版社> 正文

《新编计算机科学概论》一2.4 处理器体系结构

简介: 本节书摘来自华章出版社《新编计算机科学概论》一 书中的第2章,第2.4节,作者:刘艺 蔡敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.4 处理器体系结构

电子计算机自问世以来,其体系结构经历了长足的发展,到今天为止,计算机体系结构设计已发展成为计算机科学体系中的重要组成部分。
从本质上讲,计算机体系结构是一门设计计算机的学科,包括计算机的指令系统设计、结构设计、实现技术,以及与系统软件操作系统和编译器相关的一系列技术。处理器技术是计算机体系结构的核心。处理器体系结构按照指令系统结构可分为复杂指令集计算机(Complex Instruction Set Computer,CISC)和精简指令集计算机(Reduced Instruction Set Computer, RISC)两类。

2.4.1 指令系统

指令是指控制计算机执行某种操作的命令,也称为机器指令。指令的作用是协调各硬件部件之间的工作关系,它反映了计算机所拥有的基本功能,是计算机运行的最小功能单位。一台计算机中所有机器指令的集合,称为这台计算机的指令集或者指令系统。
指令系统的设计是计算机体系结构设计中的一个核心问题。体系结构是计算机设计者所面对的计算机属性,它们首先看到的是计算机的主要结构——指令系统。指令系统是传统计算机体系结构设计的任务,即程序员面对的(看得见的)指令系统的设计。一般说来,一个完善的指令系统应具有完备性、有效性、规整性和兼容性四个方面的特性。
计算机指令系统的特征一般包括以下几个方面:
1)指令格式。指令通常由操作码(也称机器字)字段和地址码字段组成。操作码的长度可以是固定的,也可能是可变长的。
2)指令长度。一个指令字中包含二进制代码的位数,称为该指令字的长度。而机器字长是指计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度,它与处理器内的寄存器长度是等价的。指令字长和机器字长是两个不同的概念,指令字长可以等于机器字长,也可以是机器字长的1.5倍或2倍等。
3)指令操作码在处理器内的存储形式。一般存放于存储器或通用寄存器中。
4)指令周期。计算机完成的基本功能是执行程序,要执行的程序由一串指令组成,并且存放在存储器中,处理器通过执行程序指定的指令来完成实际的工作。一般可以将指令的执行过程分为两步完成:第一步,从内存中读出指令并送入处理器,这个阶段称为取指阶段;第二步,对指令的操作码进行解释并完成指定的操作,这个阶段称为执行阶段。完成指令的这两个阶段所需要的时间,就构成了指令的一个指令周期。
5)指令类型。一台计算机指令系统的指令一般从几十条到几百条不等。不同类型的计算机,其硬件的功能差异很大,相应地其指令系统的差别也很大。但无论其规模大小,一般都包含有如下的一些基本功能类型的指令:
数据传送类指令。
算术运算类指令。
逻辑运算指令。
移位操作指令。
I/O类指令。
串操作指令。
程序控制转移类指令。
处理机控制类指令。
6)指令系统支持的寻址方式。所谓指令系统的寻址方式,就是形成操作数有效地址的方法。一般在指令的地址码字段中存放的并不是操作数所在内存的实际地址,一般被称为“形式地址”或“逻辑地址”。存放操作数的内存储器的地址,才是操作数的实际地址,一般称为“有效地址”。每种机器的指令系统都有自己的一套寻址方式。不同计算机的寻址方式的意义和名称并不统一,但基本上可以归结为以下几种:立即寻址、直接寻址、间接寻址、寄存器寻址、基址寻址、变址寻址、相对寻址和堆栈寻址以及它们的变形与组合。在指令中,一般需要设置一位或几位用作方式字段,用来确定当前指令使用的是何种寻址方式。
以上特征构成了一台计算机指令系统最基本的特点,根据指令系统不同的特点,计算机体系结构呈现出不同的形式。目前,根据指令系统功能结构的不同,计算机体系结构发展趋势呈现两种截然不同的方向:
复杂指令集计算技术(CISC):强化指令功能,实现软件功能向硬件功能转移。
精简指令集计算技术(RISC):尽可能地降低指令集结构的复杂性,以达到简化实现、提高性能的目的。
相同的指令系统可以通过“硬件布线”或“微程序”的方法来实现,前者通过处理器的硬件电路来实现,后者通过“微程序”来实现。如果指令集以硬连接的形式实现,那么对于复杂指令来说,电路设计就非常困难;反之,若用微程序来实现指令集,则可以实现复杂指令。现代处理器一般都使用微码(即微程序)来实现。
在使用微码技术的处理器中,实际存在着两套不同层次的指令:一套是面向程序员的高层的指令;一套是面向硬件实现的底层的微码。在指令与微码之间存在着一个“解释器”,它将指令翻译成对应的微码序列。由此可以想象,指令与微码之间的关系实际上是“子程序调用”思想的推广。
微码相对于指令的特点:
1)微码代表的是简单的基本操作,而指令可能非常复杂。
2)微码具备快速取指操作能力:所有的微码都位于ROM中,而指令位于内存中。
3)微码的格式规则、简单,易于译码。
4)微码的执行速度快,而指令相对较慢。
现代CISC处理器均采用微码实现。
2.4.2 CISC结构
CISC是早期计算机体系结构设计的主流思想,突出特点是指令系统庞大,指令格式、指令长度不统一,指令系统功能丰富强大。

  1. CISC设计思想
    CISC的设计思想兴盛于20世纪六七十年代,主要设计原则是:

1)指令越丰富功能越强,编译程序越好写,指令效率越高。
2)指令系统越丰富,越可减轻软件危机。
3)指令系统丰富,尤其是存储器操作指令的增多,可以改善系统结构的质量。
4)以微程序控制器为核心,指令存储器与数据存储器共享同一个物理存储空间。
如图2-7所示是一个典型的CISC处理器结构。

screenshot

CISC追求的目标是:强化指令功能,减少程序的指令条数,以达到提高性能的目的。
操作系统的实现在很大程度上取决于中央处理器体系结构的支持。主要表现在对以下方面的支持:
中断处理。
进程管理。
存储管理和保护。
系统工作状态的建立与切换。
美国Intel公司设计的奔腾(Pentium)处理器是CISC体系结构的优秀典范,它有191种指令和9种寻址方式。

  1. CISC的缺陷
    大量丰富的指令、可变的指令长度、多样的寻址方式是CISC的特点,但当其发展提高到一定程度后,指令系统的复杂性便成为其进一步提高功能的包袱,也就是CISC缺点所在。1979 年,以美国人David Patterson为首的一批科学家对复杂指令系统结构的合理性进行了深入研究,研究结果表明CISC结构存在下列主要问题:

指令使用率不均衡。在CISC结构的指令系统中,各种指令的使用频率相差悬殊。据统计,约有20%的指令使用频率最大,占运行时间的80%。也就是说,有80%的指令只在20%的运行时间内才会用到,即所谓的“二八定律”。
结构复杂不利于VLSI实现。CISC结构指令系统的复杂性导致整个计算机系统结构的复杂性,不仅增加了研制时间和成本,而且还容易造成设计错误。另外,CISC结构指令系统的复杂性还给VLSI设计带来了很大负担,大量的复杂指令必然增加译码的难度,不利于提高运行速度,且容易导致芯片工作不稳定。
不利于采用先进结构提高性能。在CISC结构的指令系统中,由于各条指令的功能不均衡,不利于采用先进的计算机体系结构技术(如流水线技术)来提高系统的性能,阻碍了计算机整体能力的进一步提高。
针对上述问题,人们提出了RISC结构设想。
二八定律,也叫巴莱多定律,是19世纪末20世纪初意大利经济学家巴莱多发明的。他认为,在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的,因此又称二八法则。人类的社会实践活动证明,二八法则具有广泛的适用性,不仅适用于经济学、管理学、心理学等社会科学,在计算机领域也普遍适用。

2.4.3 RISC结构

相对于CISC,RISC的指令系统相对简单,只要求硬件执行很有限且最常用的那部分指令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。

  1. RISC设计思想
    根据1979 年对复杂指令系统结构的合理性研究的成果,正式提出了RISC的概念。RISC 并非只是简单地减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理及提高运算速度上。通过优先选取使用频率最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。

RISC思想的核心是:RISC技术是一种新的计算机体系结构设计思想,它包括一切能简单有效地提高计算机性能的思想和方法。从现代计算机系统设计和应用统计得出的两个规律:“Simple is fast”和“Small is fast”,即:简单事件可以更快速处理;小规模器件的速度可以做得更快,体现了RISC思想的精髓。概括地说,RISC指令集设计时根据阿姆达尔(Amdahl)定律选择使用概率高的指令构成指令集,这些大概率指令一般是简单指令,因此控制器可以设计得简单、高速,且占处理器电路芯片的面积少,空出较多的集成电路芯片面积用来增加寄存器数量。在编译的配合下减少访存次数,减少指令间的各种相关和竞争,尽可能得到最佳指令序列,从而提高计算机系统的整体性能。
阿姆达尔(AmdahI)定律
系统优化某部件所获得的系统性能的改善程度,取决于该部件被使用的频率,或所占总执行时间的比例。
提出RISC设计的目标主要是为进一步提高处理器性能,我们首先了解一下处理器性能的计算机公式:
处理器执行时间 = IC×CPI×CC
处理器执行时间:执行一般代码所需的处理器时间(通常用时钟周期的个数计算)。
IC:代码的指令条数(Instruction Count),与指令集设计编译器的优化有关。
CPI:平均执行每条指令的时钟周期数,与指令集设计、体系结构等技术有关。
CC:时钟周期(Clock Cycle),与计算机组成、IC工艺等技术有关。
处理器执行时间决定了处理器的性能,处理器执行时间越短,表示处理器性能越卓越。根据性能公式,要缩短处理器执行时间,可以通过减小IC、CPI或者CC,由于精简IC、CC的技术手段有限,因此,缩短CPI成为缩短处理器执行时间的主要技术途径。RISC对比CISC最大的优势就是对CPI的精简能力。

  1. RISC结构特征
    从指令系统结构上看,RISC 体系结构一般具有如下特点:

1)精简指令系统。可以通过对过去大量的机器语言程序进行指令使用频度的统计,来选取其中常用的基本指令,并根据对操作系统、高级语言和应用环境等的支持增设一些最常用的指令。
2)减少指令系统可采用的寻址方式种类,一般限制在2或3种。
3)在指令的功能、格式和编码设计上尽可能地简化和规整,让所有指令尽可能等长。
4)单机器周期指令,即大多数的指令都可以在一个机器周期内完成,并且允许处理器在同一时间内执行一系列的指令。
RISC结构在使用相同的芯片技术和相同运行时钟下,其运行速度将是CISC的2 ~ 4 倍。由于RISC处理器的指令系统是精简的,因此它的内存管理单元、浮点单元等都能设计在同一块芯片上。RISC处理器比相对应的CISC处理器设计更简单,所需要的时间将变得更短,并可以应用更多先进的技术,开发更快的下一代处理器。但是RISC 结构的多指令操作使得程序开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外,RISC体系结构的处理器需要更快的内存,为解决此问题通常在处理器内部集成一级高速缓存。
如图2-8所示是一个典型的RISC处理器结构。

screenshot

RISC计算机具备结构简单、易于设计和程序执行效率高的特点,因此得到了广泛应用。当今UNIX领域64位处理器大多采用了RISC技术,代表产品有:IBM、Apple和Motorola三个公司联合开发的PowerPC系列处理器、Sun公司的SPARC处理器和SGI公司的MIPS处理器等。另外在嵌入式系统领域RISC技术也有广泛应用。
与CISC 结构相比较,尽管RISC 结构有上述的优点,但并不能认为RISC 结构就可以取代CISC 结构。事实上,RISC 和CISC 各有优势,而且两者正在逐步融合,现代的CPU 往往采用CISC 的外围,内部加入了RISC 的特性,出现了所为谓的CRIP(CISC-RISC Processor)技术,Pentium 的后期产品和以后的Pentium Pro、AMD的K5等处理器都运用了CRIP技术,它们的内核都是基于RISC体系结构的,接收CISC指令后将其分解成RISC指令以便在同一时间内能够执行多条指令。可见,处理器融合CISC与RISC两种技术,从软件与硬件两方面取长补短,将成为未来的发展方向之一。

2.4.4 并行处理与流水线技术

从20世纪40年代开始,现代计算机发展历程可以分为两个明显的发展时代:串行计算时代和并行计算时代。每一个计算时代都从体系结构发展开始,接着是系统软件(特别是编译器与操作系统)、应用软件,最后随着问题求解环境的发展而达到顶峰。
自20世纪80年代以来,单处理器的性能一直以最高速度增长。但由于计算机电路的操作速度最终取决于光速,而现在的许多电路已运行在纳秒级上,因此单处理器体系结构的发展正在接近极限。为了超越单处理器的性能,一种合乎逻辑的方法就是把多个微处理器联结起来,形成并行计算机。
并行计算机是由一组处理单元组成的。这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。因此,并行计算机的两个最主要的组成部分是计算节点和节点间的通信与协作机制。并行计算机体系结构的发展也主要体现在计算节点性能的提高以及节点间通信技术的改进两方面。

  1. 并行处理概念
    只要在同一时刻或是在同一时间间隔内完成两种或两种以上性质相同或不同的工作,它们在时间上能互相重叠,就称为并行处理。并行处理有两个不同特征:

同时性(Simultaneity):两个或多个事件在同一时刻发生。
并发性(Concurrency):两个或多个事件在同一时间间隔内发生。
对于计算机而言,并行处理可以从3个方面理解:
1)从计算机系统中执行程序的角度。包括指令内部的并行处理,一条指令内部各个微操作之间的并行;指令之间的并行,多条指令的并行执行;任务或进程之间的并行,多个任务或程序段的并行执行;以及作业或程序之间的并行,多个作业或多道程序的并行。 
2)从计算机系统中数据处理的角度。主要是字符位串和二进制位之间的并行处理。
3)计算机信息加工的各个步骤和阶段。包括存储器操作并行、处理器操作步骤并行(流水线技术)、处理器操作并行(多处理器系统)和网络节点操作并行等。

  1. 并行处理系统
    并行处理计算机结构通常包括以下3种形式:

流水线计算机:主要通过时间重叠,让多个部件在时间上交错重叠地并行执行运算和处理,以实现时间上的并行。
阵列处理机:主要通过资源重复,设置大量算术逻辑单元,在同一控制部件作用下同时运算和处理,以实现空间上的并行。
多处理器系统:主要通过资源共享,让共享输入/输出子系统、数据库资源及共享或不共享存储的一组处理机在统一的操作系统全盘控制下,实现软件和硬件各级上相互作用,达到时间和空间上的异步并行。
流水线技术在下一节介绍,阵列处理机属于并行处理结构的特例,不具有普遍意义。因此,我们着重介绍多处理器系统。
按照著名的弗林(Flynn)计算机分类模型,根据计算机的指令和数据流的并行性,把所有的计算机分为以下4类。
(1)SISD
SISD?(Single Instruction Stream Single Data Stream,单指令流单数据流)指计算机的指令部件每次只对一条指令进行译码和处理,并只对一个操作部分分配数据,是按照排序的方式进行顺序处理,也就是说通常由一个处理器和一个存储器组成。它通过执行单一的指令流对单一的数据流进行操作,指令按顺序读取,数据在每一时刻也只能读取一个,传统的冯?诺依曼机均属此类。弱点是单片处理器处理能力有限,同时,这种结构也没有发挥数据处理中的并行性潜力,在实时系统或高速系统中很少采用SISD结构。
(2)SIMD
SIMD(Single Instruction Stream Multiple Data Stream,单指令流多数据流)属于并行运算计算机,计算机有多个处理单元,由单一的指令部件控制,按照同一指令流的要求为它们分配各不相同的数据并进行处理。系统结构为由一个控制器、多个处理器、多个存储模块和一个互连总线(网络)组成。所有“活动的”处理器在同一时刻执行同一条指令,但每个处理器执行这条指令时所用的数据是从它本身的存储模块中读取的。对操作种类多的算法,当要求存取全局数据或对于不同的数据要求做不同的处理时,它是无法独立胜任的。另外,SIMD?一般都要求有较多的处理单元和极高的I/O吞吐率,如果系统中没有足够多的适合SIMD?处理的任务,采用SIMD?是不合算的,如阵列处理机、联机处理。
(3)MISD
MISD(Multiple Instruction Stream Single Data Stream,多指令流单数据流)用于流水线处理计算机:计算机具有多个处理单元,按照多条不同的指令要求同时对同一数据流及其处理输出的结果进行不同的处理,是把一个单元的输出作为另一个单元的输入。这种结构在目前常见的计算机系统中很少见,但是如果把早期的自动控制系统也作为计算机来看待的话,则在早期的自动控制系统中比较常见。
(4)MIMD
MIMD(Multiple Instruction Stream Multiple Data Stream,多指令流多数据流)又称为多处理器系统:是指能实现指令、数据作业、任务等各级全面并行计算的多机处理系统,典型的MIMD系统由多个处理器、多个存储模块和一个互联网络组成,每个处理器执行自己的指令,操作数也是各取各的。MIMD结构中每个处理器都可以单独编程,因而这种结构的可编程能力是最强的。但由于要用大量的硬件资源解决可编程问题,硬件利用率不高。常见的有MPP(Massively Parallel Processor)系统、目前科研机构中的分布式计算系统。
多核CPU
科技使得越来越多的电路可以放置在一个硅片上,以致计算机部件之间的物理差别逐渐变小,单独的一个芯片就可以包括一个CPU和主存储器,使得在单独的设备中提供一个完整的系统,并在更高的设计层面被用作一个抽象工具。在今天的技术程度下,单独的芯片可以存放不止一个完整的CPU。这就是称为多核CPU设
备的基础体系结构:在同一芯片上存在两个(或4个、8个等)CPU以及共用的高速缓冲存储器。这种设备简化了MIMD系统的构建,并已迅速应用于家用计算机。
这是对于计算机体系结构从处理器和数据流角度的一种分类模型,当前许多机器是这些类型的混合体,然而,这个模型作为体系结构设计框架还是有一定指导意义的。
许多早期的多处理器计算机属于SIMD型,到了20世纪80年代,这种模型又重新引起人们的注意。然而最近几年,MIMD开始作为一种通用多处理器体系结构出现。MIMD机器的崛起源于两个因素:
1)具有较高的灵活性。在合适的软硬件支持下,MIMD可以作为高性能单用户机使用,也能同时运行多个任务,或者是高性能多任务的组合。
2)可由具有性价比优势的微处理器建成。

  1. 流水线技术
    提高计算机执行速度并不是改进计算机性能的唯一途径,还可以通过改进机器的吞吐量,即机器在给定时间内可以完成的工作总量。

在不要求提高执行速度的前提下,增加计算机吞吐量的一个例子是流水线技术,该技术允许一个机器周期内的各步骤重叠进行。特别是当执行一条指令时,可以读取下一条指令,也就意味着,在任何一个时刻可以有不止一条指令在“流水线”上,每条指令处在不同的执行阶段。这样,即便读取和执行每条指令的时间保持不变,计算机总的吞吐量却提高了。
流水线(pipeline)技术是提高处理器性能的最重要设计之一,是现代计算机系统结构中普遍使用的一种提高处理器性能的方式。
流水线技术的基本思想在冯?诺依曼归纳的第一台存储程序计算机中已经提出,但限于当前的技术条件而没有实现。1946年,Burks等人提出的运算与输入/输出重叠操作是当今计算机中流水线技术的原始雏形。计算机的流水处理过程和工厂中的流水装配线类似,其要点是在一个任务完成以前就开始另一个新的任务。为了实现流水,首先必须把输入的任务分割为一系列子任务,使各子任务能在流水线的各个阶段并发地同时执行。将任务连续不断地输入流水线,从而实现子任务级的并行。流水处理大幅度地改善了计算机系统的性能,是用并行处理方式来改善性能的一种经济有效的方法。计算机发展到现在,流水线技术已经成为各类机器普遍采用的、用来改善性能的基本手段。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接