摘要:计算机体系结构1.2.1计算机体系结构的发展1.计算机系统结构概述1964年,阿姆达尔(G.M.Amdahl)在介绍IBM360系统时指出:计算机体系结构是站在程序员的角度所看到的计算机属性,即程序员要能编写出可在机器上正确运行的程序所必须了解的概念性结构和功能特性。1982年,梅尔斯(GJ.Myers)在其所著《计算机体系结构的进展》
计算机体系结构
1.2.1计算机体系结构的发展
1.计算机系统结构概述
1964年,阿姆达尔(G.M.Amdahl)在介绍IBM360系统时指出:计算机体系结构是站在 程序员的角度所看到的计算机属性,即程序员要能编写出可在机器上正确运行的程序所必须了 解的概念性结构和功能特性。
1982年,梅尔斯(GJ.Myers)在其所著《计算机体系结构的进展》(Advances in Computer
Architecture)-书中,定义了组成计算机系统的若干层次,每一层都提供一定的功能支持它上 面的一层,并把不同层之间的界面定义为某种类型的体系结构。Myers的定义发展了Amdahl的概 念性结构的思想,明确了传统体系结构就是指硬件与软件之间的界面,即指令集体系结构。
1984年,拜尔(J丄。Baer)在一篇题为“计算机体系结构(Computer Architecture)”的文 章中,给出了一个含义更加广泛的定义:体系结构是由结构、组织、实现、性能4个基本方面 组成。其中,结构指计算机系统各种硬件的互连,组织指各种部件的动态联系与管理,实现指 各模块设计的组装完成,性能指计算机系统的行为表现。这个定义发展了Amdahl的功能特性思 想。显然,这里的计算机系统组织又成为体系结构的一个子集。
关于计算机体系结构、计算机组织和计算机实现三者的关系如下。
(1)计算机体系结构(computerarchitecture)是指计算机的概念性结构和功能属性。
(2)计算机组织(computerorganization)是指计算机体系结构的逻辑实现,包括机器内的 数据流和控制流的组成以及逻辑设计等(常称为计算机组成原理)。
(3)计算机实现(computerimplementation)是指计算机组织的物理实现。
2.计算机体系结构分类
(1)宏观上按处理机的数量进行分类,分为单处理系统、并行处理与多处理系统和分布式 处理系统。
单处理系统(uniprocessing system)。利用一个处理单元与其他外部设备结合起来,实 现存储、计算、通信、输入与输出等功能的系统。
并行处理与多处理系统(parallel processing and multiprocessing system)。为 了 充分发挥 问题求解过程中处理的并行性,利用两个以上的处理机互连起来,彼此进行通信协调, 以便共同求解一个大问题的计算机系统。
分布式处理系统(distributed processing system)。指物理上远距离而松稱合的多计算机 系统。其中,物理上的远距离意味着通信时间与处理时间相比已不可忽略,在通信线 路上的数据传输速率要比在处理机内部总线上传输慢得多,这也正是松耦合的含义。
(2)微观上按并行程度分类,有Flynn分类法、冯泽云分类法、Handlei?分类法和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)提出一个基于硬件并行 程度计算并行度的方法,把计算机的硬件结构分为三个层次:处理机级、每个处理机 中的算逻单元级、每个算逻单元中的逻辑门电路级。分别计算这三级中可以并行或流 水处理的程序,即可算出某系统的并行度。
Kuck分类法。1978年,美国的库克(David J,Kuck)提出与Flynn分类法类似的方法, 用指令流和执行流(execution stream)及其多重性来描述计算机系统控制结构的特征。 Kuck把系统结构分为单指令流单执行流(SISE)、单指令流多执行流(SIME)、多指 令流单执行流(MISE)和多指令流多执行流(MIME) 4类。
3.指令系统
1)指令集体系结构的分类
从体系结构的观点对指令集进行分类,可以根据下述5种尺度。
(1)操作数在CPU中的存储方式,即操作数从主存中取来后保存在什么地方。
(2)显式操作数的数量,即在典型的指令中有多少个显式命名的操作数。
(3)操作数的位置,即任一个ALU指令的操作数能否放在主存中,如何定位。
(4)指令的操作,即在指令集中提供哪些操作。
(5)操作数的类型与大小。
按暂存机制分类,根据在CPU内部存储操作数的区别,可以把指令集体系分为三类:堆 找(stack)、累加器(accumulator)和寄存器集(a set of registers)。
通用寄存器机(General-Purpose Register Machines,GPR机)的关键性优点是编译程序能 有效地使用寄存器,无论是计算表达式的值,还是从全局的角度使用寄存器来保存变量的值。 在表达式求解时,寄存器比堆找或者累加器能提供更加灵活的次序。更重要的是,寄存器能用 来保存变量。当变量分配给寄存器时,访存流量(memory traffic)就会减少,程序运行就会加 速,而且代码密度也会得到改善。可以用指令集的两个主要特征来区分GPR体系结构。这两个 特征都是关于ALU指令,即典型的算术逻辑指令中操作数的本质。第一个是ALU指令有两个 或三个操作数^在三操作数格式中,指令包括两个源操作数和一个目的操作数;在二操作数格 式中,有一个操作数,既是源操作数又是目的操作数。第二个是ALU指令中有几个操作数是 存储器地址,对典犁的ALU指令,这个数可能在1与3之间。
2)指令格式及其优化
设计指令格式时需要优先考虑一些原则。,如指令长度、是否有足够的空间表示所有期望的 操作、存取指令速度的提高及寻址字段长度的选择等。
指令格式的优化既包括指令码的优化,也包括操作数的优化。需要从整个指令系统的利用 率角度出发,尽量设法减少指令中的冗余信息量,以便用最少的位数提供足够的操作信息和地 址信息。对指令码进行优化表示,使用频度高的指令采用短编码,反之可采用长编码。
3)指令集的复杂化
(1)CISC和RISC是指令集发展的两个途径。
CISC (Complex Instruction Set Computer,复杂指令集计算机)的基本思想是:进一步增强 原有指令的功能,用更为复杂的新指令取代原先由软件子程序完成的功能,实现软件功能的硬 化,导致机器的指令系统越来越庞大而复杂。事实上,目前使用的绝大多数计算机都属于CISC 类型。
CISC的主要弊病如下。
①指令集过分庞杂。
②微程序技术是CISC的重要支柱,每条复杂指令都要通过执行一段解释性微程序才能完 成,这就需要多个CPU周期,从而降低了机器的处理速度。
③由于指令系统过分庞大,使髙级语言编译程序选择目标指令的范围很大,并使编译程 序本身冗长而复杂,从而难以优化编译使之生成真正高效的目标代码。
④CISC强调完善的中断控制,势必导致动作繁多,设计复杂,研制周期长。
⑤CISC给芯片设计带来很多困难,使芯片种类增多,出错几率增大,成本提高而成品率 降低。‘
RISC (Reduced Instruction Set Computer,精简指令集计算机)的基本思想是:通过减少指 令总数和简化指令功能,降低硬件设计的复杂度,使指令能单周期执行,并通过优化编译,提 高指令的执行速度,采用硬线控制逻辑,优化编译程序。在20世纪70年代末开始兴起,导致 机器的指令系统进一步精炼而简单。
RISC的关键技术如下。
①重叠寄存器窗口技术。在伯克利的RISC项目中,首先采用了重叠寄存器窗口 (overlapping register windows)技术。
②优化编译技术。RISC使用了大量的寄存器,如何合理分配寄存器、提髙寄存器的使用 效率及减少访存次数等,都应通过编译技术的优化来实现。
③超流水及超标量技术。这是RISC为了进一步提高流水线速度而采用的技术。
④硬布线逻辑与微程序相结合在微程序技术中。
(2)面向目标代码的优化。
为了提高目标程序的实现效率,人们对大量的机器语言目标代码及其执行情况进行了统 计。对程序中出现的各种指令以及指令串进行统计得到的百分比称为静态使用频度。在程序执 行过程中,对出现的各种指令以及指令串进行统计得到的百分比称为动态使用频度。按静态使 用频度来改进目标代码可减少目标程序所占的存储空间,按动态使用频度来改进目标代码可减 少目标程序运行的执行时间。大量统计表明,动态和静态使用频度两者非常接近,最常用的指 令是存、取、条件转移等。对它们加以优化,既可以减少程序所需的存储空间,又可以提高程 序的执行速度。
(3)面向高级语言的优化。
尽可能缩小高级语言与机器语言之间的语义差距,以利于支持高级语言编译系统,缩短编 译程序的长度和编译所需的时间。
(4)面向操作系统的优化。
进一步缩小操作系统与体系结构之间的语义差距,以利于减少操作系统运行所需的辅助时 间,节省操作系统软件所占用的存储空间。操作系统的实现依赖于体系结构对它的支持。许多 传统机器指令,例如算术逻辑指令、字符编辑指令、移位指令和控制转移指令等,都可用于操 作系统的实现。此外,还有相当一部分指令是专门为实现操作系统的各种功能而设计的。
4)指令的流水处理
(1)指令控制方式。指令控制方式有顺序方式、重叠方式和流水方式三种。
①顺序方式。顺序方式是指各条机器指令之间顺序串行地执行,执行完一条指令后才取 下一条指令,而且每条机器指令内部的各个微操作也是顺序串行地执行。这种方式的优点是控 制简单。缺点是速度上不去,机器各部件的利用率低。
②重叠方式。重叠方式是指在解释第尺条指令的操作完成之前,就可开始解释第尤+1条 指令,如图1-2所示。通常采用的是一次重叠,即在任何时候,指令分析部件和指令执行部件 都只有相邻两条指令在重叠解释。这种方式的优点是速度有所提高,控制也不太复杂。缺点是 会出现冲突、转移和相关等问题,在设计时必须想办法解决。
在概念上,“流水”可以看成是“重叠”的延伸。差别仅在于“一次重叠”只是把一条指 令解释分解为两个子过程,而“流水”则是分解为更多的子过程。
(1)流水线的种类。
①从流水的级别上,可分为部件级、处理机级以及系统级的流水。
②从流水的功能上,可分为单功能流水线和多功能流水线。
③从流水的联接上,可分为静态流水线和动态流水线。
④从流水是否有反馈回路,可分为线性流水线和非线性流水线。
⑤从流水的流动顺序上,可分为同步流水线和异步流水线。
⑥从流水线的数据表示上,可分为标量流水线和向量流水线。
(2)流水的相关处理。
局部性相关处理由于流水机器同时解释多条指令,这些指令可能有对同一主存单元或同一 寄存器的“先写后读”的要求,这时就出现了相关。这种相关包括指令相关、访存操作数相关 以及通用寄存器组相关等,它只影响相关的两条或几条指令,而且至多影响流水线的某些段推 后工作,并不会改动指令缓冲器中预取到的指令内容,影响是局部的,所以称为局部性相关。 解决局部性相关有两种方法:推后法和通路法。推后法是推后对相关单元的读,直至写入完成。 通路法设置相关专用通路,使得不必先把运算结果写入相关存储单元,再从这里读出后才能使 用,而是经过相关专用通路直接使用运算结果,以加快速度。
返回目录:软件设计师教程之计算机系统知识专题
编辑推荐:
软考备考资料免费领取
去领取