计算机体系结构的发展

1、计算机系统结构概述

  1964年,阿姆达尔(G.M.Amdahl)在介绍IBM360系统时指出:计算机体系结构是站在程序员的角度所看到的计算机属性,即程序员要能编写出可在机器上正确运行的程序所必须了解的概念性结构和功能特性。
  1982年,梅尔斯(G.J.Myers)在其所著的《计算机体系结构的进展》(Advances in Computer Architecture)一书中定义了组成计算机系统的若干层次,每一层都提供一定的功能支持它上面的一层,并把不同层之间的界面定义为某种类型的体系结构。Myres的定义发展了Amdahl的概念性结构思想,明确了传统体系结构就是指硬件与软件之间的界面,即指令集体系结构
  1984年,拜尔(J.L.Baer)在一篇题为“计算机体系结构(Computer Architecture)”的文章中给出了一个含义更加广泛的定义:体系结构由结构、组织、实现、性能4个基本方面组成。其中,结构指计算机系统各种硬件的互联,组织指各种部件的动态联系与管理,实现指各模块设计的组装完成,性能指计算机系统的行为表现。这个定义发展了Amdahl的功能特性思想。显然,这里的计算机系统组织又成为体系结构的一个子集。
  计算机体系结构、计算机组织和计算机实现三者的关系如下:
  (1)计算机体系结构(Computer Architecture)是指计算机的概念性结构和功能属性。
  (2)计算机组织(Computer Organization)是指计算机体系结构的逻辑实现,包括机器内的数据流和控制流的组成以及逻辑设计等(常称为计算机组成原理)。
  (3)计算机实现(Computer Implementation)是指计算机组织的物理实现。

2、计算机体系结构分类

  (1)从宏观上按处理机的数量进行分类,分为单处理系统、并行处理与多处理系统和分布式处理系统。
  ●单处理系统(Uni-processing System)。利用一个处理单元与其他外部设备结合起来,实现存储、计算、通信、输入与输出等功能的系统。
  ●并行处理与多处理系统(Parallel Processing and Multiprocessing System)。为了充分发挥问题求解过程中处理的并行性,将两个以上的处理机互连起来,彼此进行通信协调,以便共同求解一个大问题的计算机系统。
  ●分布式处理系统(Distributed Processing System)。指物理上远距离而松耦合的多计算机系统。其中,物理上的远距离意味着通信时间与处理时间相比已不可忽略,在通信线路上的数据传输速率要比在处理机内部总线上传输慢得多,这也正式松耦合的含义。
  (2)从微观上按并行程度分类,有Flynn分类法、冯泽云分类法、Handler分类法和Kuck分类法。
  ●Flynn分类法。1966年,M.J.Flynn提出按指令流和数据流的多少进行分类。指令流为机器之行的指令序列,数据流是由指令调用的数据序列。Flynn 把计算机系统的结构分为单指令流、单数据流(Single Instruction stream Single Data stream,SISD),单指令流、多数据流(Single Instruction stream Multiple Data stream,SIMD),多指令流、单数据流(Multiple Instruction stream Single Data stream,MISD)和多指令流、多数据流(Multiple Instruction stream Multiple Data stream,MIMD)4类。
  ●冯泽云分类法。1972年,美籍华人冯泽云(Tse-yun Feng)提出按并行度对各种计算机系统进行结构分类。所谓最大并行度Pm是指计算机系统在单位时间内能够处理的最大二进制位数。冯泽云把计算机系统分成字串行位串行(WSBS)计算机、字并行位串行(WPBS)计算机、字串行位并行(WSBP)计算机和字并行位并行(WPBP)计算机4类。
  ●Handler分类法。1977年,德国的汉德勒(Wolfgang Handler)提出一个基于硬件并行程度计算并行度的方法,把计算机的硬件结构分为3个层次:处理机级、每个处理机种的算逻单元级、每个算逻单元中的逻辑门电路级。分别计算这三级中可以并行或流水处理的程序,即可算出某系统的并行度。
  ●Kuck分类法。1978年美国的库克(David J.Kuck)提出与Flynn分类法类似的方法,用指令流和执行流(Execution Stream)及其多重性来描述计算机系统控制结构的特征。Kuck把系统结构分为单指令流单执行流(SISE)、单指令流多执行流(SIME)、多指令流单执行流(MISE)和多指令流多执行流(MIME)4类。

3、指令系统

  一个处理器支持的指令和指令的字节级编码称为其指令集体系结构(Instruction Set Architecture,ISA),不同的处理器族支持不同的指令集体系结构,因此,一个程序被编译在一种机器上运行,往往不能再另一种机器上运行。

3.1、指令集体系结构的分类

  从体系结构的观点对指令集进行分类,可以根据下述5个方面。
  (1)操作数在CPU中的存储方式,即操作数从主存中取出后保存在什么地方。
  (2)显式操作数的数量,即在典型的指令中有多少个显式命名的擦作数。
  (3)操作数的位置,即任一个ALU指令的操作数能否放在主存中,如何定位。
  (4)指令的操作,即在指令集中提供哪些操作。
  (5)操作数的类型和大小。
  按暂存机制分类,根据在CPU内部存储操作数的区别,可以把指令集体系分为3类:堆栈(Stack)、累加器(Accumulator)和寄存器组(a set of Registers)。
  通用寄存器(General-Purpose Register Machines,GPR)的关键性优点是编译程序能有效地使用寄存器,无论是计算表达式的值,还是从全局的角度使用寄存区来保存变量的值。在求解表达式时,寄存器比堆栈或者累加器能提供更加灵活的次序。更重要的是,寄存器能用来保存变量。当变量分配给寄存器时,访存流量(Memory Traffic)就会减少,程序运行就会加速,而且代码密度也会得到改善。用户可以用指令集的两个主要特征来区分GPR体系结构。第一个是ALU指令有两个或3个操作数。在三操作数格式中,指令包括两个源操作和一个目的操作数;在二操作数格式中,有一个操作数既是源操作数又是目的操作数。第二个是ALU指令中有几个操作数是存储器地址,对于典型的ALU指令,这个数可能在1~3之间。

3.2、CISC和RISC

  CISC和RISC是指令集发展的两种途径。
  (1)CISC(Complex Instruction Set Computer,复杂指令集计算机)的基本思想是进一步增强原有指令的功能,用更为复杂的新指令取代原先由软件子程序完成的功能,实现软件功能的硬化,导致机器的指令系统越来越庞大、复杂。事实上,目前使用的绝大多数计算机都属于CISC类型。
  CISC的主要弊端如下:
  ①指令集过分庞杂。
  ②微程序技术是CISC的重要支柱,每条复杂指令都要通过之行一段解释性微程序才能完成,这样需要多个CPU周期,从而降低了机器的处理速度。
  ③由于指令系统过分庞大,使高级语言编译程序选择目标指令的范围很大,并使编译程序本身冗长、复杂,从而难以优化编译使之生成真正高效的目标代码。
  ④CISC强调完善的中断控制,势必导致动作繁多、设计复杂、研制周期长。
  ⑤CISC给芯片设计带来很多困难,使芯片种类增多,出错几率增大,成本提高而成品率降低。

  (2)RISC(Reduced Instruction Set Computer,精简指令集计算机)的基本思想是通过减少指令总数和简化指令功能降低硬件设计的复杂度,使指令能单周期执行,并通过优化编译提高指令的执行速度,采用硬布线控制逻辑优化编译程序。RISC在20世纪70年代末开始兴起,导致机器的指令系统进一步精炼而简单。
  RISC的关键技术如下:
  ①重叠寄存器窗口技术。
  在伯克利的RISC项目中首先采用了重叠寄存器窗口(Overlapping Register Windows)技术。其基本思想是在处理机中设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。每个过程使用其中相邻的3个窗口和一个公共的窗口,而在这些窗口中有一个窗口是与前一个过程共用,还有一个窗口是与下一个过程共用。与前一过程共用的窗口可以用来存放前一过程传送给本过程的参数,同时也存放本过程传送给前一过程的计算结果。同样,与下一过程共用窗口可以用来存放本过程传送给下一过程的参数和存放下一过程传送给本过程的计算结果。
  ②优化编译技术。RISC使用了大量的寄存器,如何合理的分配寄存器、提高寄存器的使用效率及减少访存次数等,都应通过编译技术的优化来实现。
  ③超流水及超标量技术。为了进一步提高流水线速度而采用的技术。
  ④硬布线逻辑与微程序相结合在微程序技术中。

  (3)优化
  为了提高目标程序的实现效率,人们对大量的机器语言目标代码及其执行情况进行了统计。对程序中出现的各种指令以及指令串进行统计得到的百分比称为静态使用频度。在程序执行过程中,对出现的各种指令以及指令串进行统计得到的百分比称为动态使用频度。按静态使用频度来改进目标代码可减少目标程序所占的存储空间,按动态使用频度来改进目标代码可减少目标程序运行的执行时间。大量统计表明,动态和静态使用频度两者非常接近,最常用的指令是存、取、条件转移等。对他们加以优化,既可以减少程序所需的存储空间,又可以提高程序的执行速度。
  面向高级程序语言的优化思路是尽可能缩小高级语言与机器语言之间的语义差距,以利于支持高级语言编译系统,缩短编译程序的长度和编译所需的时间。
  面向操作系统的优化思路是进一步缩小操作系统与体系结构之间的语义差距,以利于减少操作系统运行所需的辅助时间,节省操作系统软件所占用的存储空间。操作系统的实现依赖于体系结构对它的支持。许多传统机器指令,例如算术逻辑指令、字符编辑指令、移位指令和控制转移指令等,都可用于操作系统的实现。此外,还有相当一部分指令是专门为实现操作系统的各种功能而设计的。

3.3、指令的流水处理

  (1)指令控制方式。指令控制方式有顺序方式、重叠方式和流水方式3种。
  ①顺序方式。顺序方式是指各条机器指令之间顺序串行地执行,执行完一条指令后才取下一条指令,而且每条机器指令内部的各个微操作也是顺序串行地执行。这种方式的优点是控制简单。缺点是速度慢,机器各部件的利用率低。
  ②重叠方式。重叠方式是指在解释第K条指令的操作完成之前就可以开始解释第K+1条指令,如下图所示。通常采用的是一次重叠,即在任何时候,指令分析部件和指令执行部件都只有相邻两条指令在重叠执行。这种方式的优点是速度有所提高,控制也不太复杂。缺点是会出现冲突、转移和相关等问题,在设计时必须想办法解决。
在这里插入图片描述

  ③流水方式。流水方式是模仿工业生产过程的流水线(如汽车装配线)而提出的一种指令控制方式。流水(Pipelining)技术是把并行性和并发性嵌入到计算机系统里的一种形式,它把重复的顺序处理过程分解为若干子过程,每个子过程能在专用的独立模块上有效地并发工作,如下图所示:
在这里插入图片描述

  在概念上,“流水”可以看成是“重叠”的延伸。差别仅在于“一次重叠”是把一条指令解释分解为两个子过程,而“流水”则是分解为更多的子过程。
  (2)流水线的种类。
  ①从流水的级别上,可分为部件级、处理机级以及系统级的流水。
  ②从流水的功能上,可分为单功能流水线和多功能流水线。
  ③从流水的连接上,可分为静态流水线和动态流水线。
  ④从流水是否有反馈回路,可分为线性流水线和非线性流水线。
  ⑤从流水的流动顺序上,可分为同步流水线和异步流水线。
  ⑥从流水线的数据表示上,可分为标量流水线和向量流水线。
  (3)流水的相关处理。
  由于流水时机器同时解多条指令,这些指令可能有对同一主存单元或同一寄存器的“先写后读”的要求,这时就出现了相关。这种相关包括指令相关、访存操作数相关以及通用寄存器组相关等,它只影响相关的两条或几条指令,而且最对影响流水线的某些段推后工作,并不会改动指令缓冲器中预取到的指令内容,影响时局部的,所以称为局部性相关。解决局部性相关有两种方法:推后法和通路法。推后法是推后对相关单元的读,直至写入完成。通路法设置相关专用通路,使得不必先把运算结果写入相关存储单元,再从这里读出后才能使用,而是经过相关专用通路直接使用运算结果,以加快速度。
  转移指令(尤其是条件转移指令)与它后面的指令之间存在关联,使之不能同时解释。执行转移指令时,可能会改动指令缓冲器中预取到的指令内容,从而会造成流水线吞吐率和效率下降,比局部性相关的影响要严重的多,所以称为全局性相关。
  解决全局性相关有3中方法:猜测转移分支、加快和提前形成条件码、加快短循环程序的处理。
  条件转移指令有两个分支,一个分支是按原来的顺序继续执行下去,称为转移不成功分支;另一个分支是按转移后的新指令序列执行,称为转移成功指令。许多流水机器都猜选转移不成功分支,若猜对的几率很大,流水线的吞吐率和效率就会比不采用猜测法时高得多。
  尽早获得条件码以便对流水线简化条件转移的处理。例如,一个乘法运算所需的时间较长,但在运算之前就能知道其结果为正或为负,或者是否为0,因此,加快单条指令内部条件码的行程,或者在一段程序内提前形成条件码,对转移问题的顺利解决是很有好处的。
  由于程序中广泛采用循环结构,因此流水线大多采用特殊措施以加快循环程序的处理。例如,使整个循环程序放入指令缓冲存储器中,对提高流水效率和吞吐率均有明显效果。中断和转移一样,也会引起流水线断流。好在中断出现的概率要比条件转移出现的概率低得多,因此只要处理好断点现场保护以中断后的恢复,尽量缩短断流时间即可。
  RISC中采用的流水技术有3种:超流水线、超标量以及超长指令字。
  ①超流水线(Super Pipe Line)技术。它通过细化流水、增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质是以时间换空间。超流水机器的特征是在所有功能单元都采用流水,并有更高的时钟频率和更深的流水深度。由于它只限于指令级的并行,所以超流水机器的CPI(Clock Cycles Per Instruction,每个指令需要的机器周期数)值稍高。
  ②超标量(Super Scalar)技术。它通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有更小的CPI。其实质是以空间换时间。
  ③超长指令字(Very Long Instruction Word,VLIW)技术。VLIW和超标量都是20世纪80年代出现的概念,其共同点是要同时执行多条指令,其不同在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件的作用,而使硬件简化,性能提高。VLIW有更小的CPI值,但需要有足够高的时钟频率。
  (4)吞吐率和流水建立时间
  吞吐率是指单位时间内流水线处理机流出的结果数。对指令而言,就是单位时间内执行的指令数。如果流水线的子过程所用时间不一样,则吞吐率p应为最长子过程的倒数,即
      p=1/max{∆t1,∆t1,…,∆tm,}
  流水线开始工作,需要经过一定时间才能达到最大吞吐率,这就是建立时间。若m个子过程所用时间一样,均为∆t0,则建立时间T0=m∆t0

4、阵列处理机、并行处理机和多处理机

  并行性包括同时性和并发性。其中,同时性是指两个或两个以上的时间在同一时刻发生,并发性是指两个或两个以上的事件在同一时间间隔内连续发生。
  从计算机信息处理的步骤和阶段的角度看,并行处理可分为如下几类。
  (1)存储器操作并行。
  (2)处理器操作步骤并行(流水线处理机)。
  (3)处理器操作并行(阵列处理机)。
  (4)指令、任务、作业并行(多处理机、分布处理系统、计算机网络)

4.1、阵列处理机

  阵列处理机将重复设置的多个处理单元(PU)按一定方式连成阵列,在单个控制部件(CU)控制下,对分配给自己的数据进行处理,并行地完成一条指令所规定的操作。这是一种单指令流多数据流计算机,通过资源重复实现并行性。

4.2、并行处理机

  SIMD和MIMD是典型的并行处理机,SIMD有共享存储器和分布存储器两种形式。
  在具有共享存储器的SIMD结构(如下图)中,将若干个存储器构成统一的并行处理机存储器,通过互联网络ICN为整个并行系统的所有处理单元共享。其中,PE为处理单元,CU为控制部件,M为共享存储器,ICN为互联网络。
在这里插入图片描述

  分布式存储器的SIMD结构如下图所示,其中,PE为处理单元,CU为控制单元,PEM为局部存储器,ICN为互联网络。含有多个同样结构的处理单元,通过寻径网络ICN以一定的方式互相连接。
在这里插入图片描述

  分布存储器的并行处理机结构中有两类存储器,一类存储器附属于主处理机,主处理机实现整个并行处理机的管理,在其附属的存储器内常驻操作系统。另一类是分布在各个处理单元上的存储器(即PEM),这类存储器用来保存程序和数据。在阵列控制部件的统一指挥下,实现并行操作。程序和数据通过主机装入控制存储器。通过控制部件的是单指令流,所以指令的执行顺序还是和单处理机一样,基本上是串行处理。指令送到控制部件进行译码。划分后的数据集合通过向量数据总线分布到所有PE的本地存储器PEM。PE通过数据寻径网络互联。数据寻径网络值性能PE间的通信。控制部件通过执行程序来控制寻径网络。PE的同步由控制部件的硬件实现。

4.3、多处理机

  多处理机系统是由多台处理机组成的系统,每台处理机有属于自己的控制部件,可以执行独立的程序,共享一个主存储器和所有的外部设备。它是多指令流多数据流计算机。在多处理机系统中,机间的互连技术决定了多处理机的性能。多处理机之间的互连要满足高频带、低成本、连接方式的多样性以及在不规则通信情况下连接的无冲突性。

4.4、 其他计算机

  集群一般是指连接在一起的两个或多个计算机(结点)。集群计算机是一种并行或分布式处理系统,由很多连接在一起的独立计算机组成,像一个单集成的计算机资源一样协同工作,主要用来解决大型计算问题。计算机结点可以是一个单处理器或多处理器的系统,拥有内存、I/O设备和操作系统。连接在一起的计算机集群对用户和应用程序来说像一个单一的系统,这样的系统可以提供一种价格合理的且可获得所需性能和快速而可靠的服务的解决方案。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值