计算机体系结构是指根据属性和功能不同而划分的计算机理论组成部分及计算机基本工作原理、理论的总称。其中计算机理论组成部分并不单与某一个实际硬体相挂鈎,如存储部分就包括暂存器、记忆体、硬碟等。
基本介绍
- 中文名:计算机体系结构
- 外文名:Computer Architecture
- 内容:软、硬体的系统结构
- 属性:8种属性
- 发展阶段:4大阶段
- 划分依据:属性、功能
简介
计算机体系结构是程式设计师所看到的计算机的属性,即计算机的逻辑结构和功能特徵,包括其各个硬部件和软部件之间的相互关係。对计算机系统设计者,计算机体系结构是指研究计算机的基本设计思想和由此产生的逻辑结构;对程式设计者是指对系统的功能描述(如指令集、编制方式等)。
基本概念
计算机体系结构指软、硬体的系统结构,有两方面的含义:一是从程式设计者的角度所见的系统结构,它是研究计算机体系的概念性结构和功能特性,关係到软体设计的特性;二是从硬体设计者的角度所见的系统结构,实际上是计算机体系的组成或实现(参见计算机组织),主要着眼于性能价格比的合理性。亚当(Adam)等人为了说明和研究从程式设计角度所看到的计算机的属性(外特性),在1964年最先提出计算机系统结构的概念。
概念性结构与功能特性,这是从程式设计者角度所看到的计算机属性。它包括机器内的数据表示、定址方式以及对这些数据的运算和控制这些运算的执行等(即指令系统)。对于通用型机器,一般包括数据表示、定址方式、暂存器定义、指令系统、中断机构、机器工作状态的定义和状态切换、机器级的输入、输出结构以及对信息保护的支持等。
计算机体系结构主要研究软体、硬体功能分配和对软体、硬体界面的确定。20世纪70年代以来,在计算机软体方面有了显着的进展。计算机在性能、速度、价格、可靠性和组织、实现技术上虽比20世纪50年代末有了巨大的突破,但它们的系统结构却并没有什幺明显的、突破性的进展。绝大多数机器的系统结构仍然没有脱离冯·诺伊曼型的範围。程式设计者所见的系统结构和20世纪50年代末相比变化不大。例如,对于指令系统,程式设计者基本上仍然立足于20世纪50年代末的计算机系统结构观点来设计複杂得多的软体。传统计算机的硬体组成与高级语言和作业系统之间的严重脱节,给软体的可靠性、源程式编译效率以及系统的解题效率等方面带来不利的影响,这是计算机系统结构需要解决的重要课题。20世纪70年代出现的数据流计算机系统结构思想,把传统计算机的指令控制流控制方法改变为数据控制流的控制方法,从而有可能自动排除运算相关性的障碍,达到高度并行的目的。
计算机软、硬体功能分配,主要应从实现费用、对速度的影响和其他性能要求来考虑,亦即考虑如何分配能提高性能价格比。作业系统的基本的、通用的功能的硬化或固化,有利于提高作业系统的执行效率和速度,减少开销;而功能不稳定,即需要不断变化的,用软体实现有利于提供应有的灵活性。实现费用包括研製费用和重複生产费用。硬体的设计费用和重複生产费用都比软体大,宜于硬体实现的功能应该是稳定的、常用的、比较小的,而且是软体实现的速度下降会对计算机系统性能有较大影响的那些功能。硬体实现只是对产量大的计算机系统才有经济效益。
计算机体系结构

八种属性
1·机内数据表示:硬体能直接辨识和操作的数据类型和格式

2·定址方式:最小可定址单位、定址方式的种类、地址运算
3·暂存器组织:操作暂存器、变址暂存器、控制暂存器及专用暂存器的定义、数量和使用规则
4·指令系统:机器指令的操作类型、格式、指令间排序和控制机构
5·存储系统:最小编址单位、编址方式、主存容量、最大可编址空间
6·中断机构:中断类型、中断级别,以及中断回响方式等
7·输入输出结构:输入输出的连线方式、处理机/存储器与输入输出设备间的数据交换方式、数据交换过程的控制
8·信息保护:信息保护方式、硬体信息保护机制。
研究内容
计算机的概念性结构和功能特性,这是指系统程式设计者眼中的计算机系统的属性,也包括机器设计者所看到的计算机系统的逻辑结构。简言之,是组成计算机的各部分之间的相互关係的详细说明,它是硬体、软体、算法和语言的综合性概念。计算机体系结构这一术语也称作计算机系统结构。它已发展为一门内容广泛的学科,并成为高等学校计算机专业学生的必修课。它所研究的主要内容如下:
1.指令系统包括机器指令的操作类型、格式、定址等。
2.存储系统包括多级存储层次、虚拟存储器结构、高速缓冲存储器结构及存储保护等。
3.输入输出系统包括通道结构、输入输出处理机结构等。
4.中央处理机结构包括冯·诺依曼结构、非冯·诺依曼结构、重叠结构、流水结构、并行处理结构等。
5.多机系统包括互连技术,多处理机结构、分布处理结构、计算机网路结构等。
6.人机通信联繫包括人-机接口、计算机可靠性、可用性和可维护性(这三者称为RAS技术)、容错技术、故障诊断等。
此外,还研究计算机硬体描述语言、计算机系统性能评价等内容。
发展历程
计算机体系结构已经经历了四个不同的发展阶段。

第一阶段
60年代中期以前,是计算机体系结构发展的早期时代。在这个时期通用硬体已经相当普遍,软体却是为每个具体套用而专门编写的,大多数人认为软体开发是无需预先计画的事情。这时的软体实际上就是规模较小的程式,程式的编写者和使用者往往是同一个(或同一组)人。由于规模小,程式编写起来相当容易,也没有什幺系统化的方法,对软体开发工作更没有进行任何管理。这种个体化的软体环境,使得软体设计往往只是在人们头脑中隐含进行的一个模糊过程,除了程式清单之外,根本没有其他文档资料保存下来。
第二阶段
从60年代中期到70年代中期,是计算机体系结构发展的第二代。在这10年中计算机技术有了很大进步。多道程式、多用户系统引入了人机互动的新概念,开创了计算机套用的新境界,使硬体和软体的配合上了一个新的层次。实时系统能够从多个信息源收集、分析和转换数据,从而使得进程控制能以毫秒而不是分钟来进行。线上存储技术的进步导致了第一代资料库管理系统的出现。这个阶段的一个重要特徵是出现了“软体作坊”,广泛使用产品软体。但是,“软体作坊”基本上仍然沿用早期形成的个体化软体开发方法。随着计算机套用的日益普及,软体数量急剧膨胀。在程式运行时发现的错误必须设法改正;用户有了新的需求时必须相应地修改程式;硬体或作业系统更新时,通常需要修改程式以适应新的环境。上述种种软体维护工作,以令人吃惊的比例耗费资源。更严重的是,许多程式的个体化特性使得它们最终成为不可维护的。“软体危机”就这样开始出现了。1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软体危机课题,在这次会议上正式提出并使用了“软体工程”这个名词,一门新兴的工程学科就此诞生了。
第三阶段
计算机体系结构发展的第三代从20世纪70年代中期开始,并且跨越了整整10年。在这10年中计算机技术又有了很大进步。分散式系统极大地增加了计算机系统的複杂性,区域网路、广域网、宽频数字通信以及对“即时”数据访问需求的增加,都对软体开发者提出了更高的要求。但是,在这个时期软体仍然主要在工业界和学术界套用,个人套用还很少。这个时期的主要特点是出现了微处理器,而且微处理器获得了广泛套用。以微处理器为核心的“智慧型”产品随处可见,当然,最重要的智慧型产品是个人计算机。在不到10年的时间里,个人计算机已经成为大众化的商品。
第四阶段
计算机体系结构发展的第四代从20世纪80年代中期开始,一直持续到现在。这个阶段,人们感受到的是硬体和软体的综合效果。由複杂作业系统控制的强大的桌面机及区域网路和广域网,与先进的套用软体相配合,已经成为当前的主流。计算机体系结构已迅速地从集中的主机环境转变成分布的客户机/伺服器(或浏览器/伺服器)环境。世界範围的信息网为人们进行广泛交流和资源的充分共享提供了条件。软体产业在世界经济中已经占有举足轻重的地位。随着时代的前进,新的技术也不断地涌现出来。面向对象技术已经在许多领域迅速地取代了传统的软体开发方法。
软体开发的“第四代技术”改变了软体界开发电脑程式的方式。专家系统和人工智慧软体终于从实验室中走出来进入了实际套用,解决了大量实际问题。套用模糊逻辑的人工神经网路软体,展现了模式识别与拟人信息处理的美好前景。虚拟现实技术与多媒体系统,使得与用户的通信可以採用和以前完全不同的方法。遗传算法使我们有可能开发出驻留在大型并行生物计算机上的软体。
基本原理
计算机体系结构解决的是计算机系统在总体上、功能上需要解决的问题,它和计算机组成、计算机实现是不同的概念。一种体系结构可能有多种组成,一种组成也可能有多种物理实现。

计算机系统结构的逻辑实现,包括机器内部数据流和控制流的组成以及逻辑设计等。其目标是合理地把各种部件、设备组成计算机,以实现特定的系统结构,同时满足所希望达到的性能价格比。一般而言,计算机组成研究的範围包括:确定数据通路的宽度、确定各种操作对功能部件的共享程度、确定专用的功能部件、确定功能部件的并行度、设计缓冲和排队策略、设计控制机构和确定採用何种可靠技术等。计算机组成的物理实现。包括处理机、主存等部件的物理结构,器件的集成度和速度,器件、模组、外挂程式、底板的划分与连线,专用器件的设计,信号传输技术,电源、冷却及装配等技术以及相关的製造工艺和技术。
分类
Flynn分类法
1966年,Michael J.Flynn提出根据指令流、数据流的并行度对计算机系统进行分类,定义如下。
·指令流:机器执行的指令序列
计算机体系结构

·数据流:由指令流调用的数据序列,包括输入数据和中间结果
·并行度:指令或数据并行执行的最大可能数目。
Flynn根据不同的指令流-数据流组织方式把计算机系统分为4类。
1·单指令流单数据流(Single Instruction Stream Single DataStream,SISD)
SISD其实就是传统的顺序执行的单处理器计算机,其指令部件每次只对一条指令进行解码,并只对一个操作部件分配数据。
2·单指令流多数据流(Single Instruction Stream Multiple Data Stream,SIMD)
SIMD以并行处理机为代表,结构如图,并行处理机包括多个重複的处理单元PU1~PUn,由单一指令部件控制,按照同一指令流的要求为它们分配各自所需的不同的数据。

3·多指令流单数据流(Multiple Instruction Stream Single Data Stream,MISD)
MISD的结构,它具有n个处理单元,按n条不同指令的要求对同一数据流及其中间结果进行不同的处理。一个处理单元的输出又作为另一个处理单元的输入。
4·多指令流多数据流(Multiple Instruction Stream Multiple Data Stream,MIMD)
MIMD的结构是指能实现作业、任务、指令等各级全面并行的多机系统,多处理机就属于MIMD。
冯式分类法
1972年冯泽云提出用最大并行度来对计算机体系结构进行分类。所谓最大并行度Pm是指计算机系统在单位时间内能够处理的最大的二进制位数。设每一个时钟周期△ti内能处理的二进制位数为Pi,则T个时钟周期内平均并行度为Pa=(∑Pi)/T(其中i为1,2,…,T)。平均并行度取决于系统的运行程度,与应用程式无关,所以,系统在周期T内的平均利用率为μ=Pa/Pm=(∑Pi)/(T*Pm)。用平面直角坐标系中的一点表示一个计算机系统,横坐标表示字宽(N位),即在一个字中同时处理的二进制位数;纵坐标表示位片宽度(M位),即在一个位片中能同时处理的字数,则最大并行度Pm=N*M。
由此得出四种不同的计算机结构:
①字串列、位串列(简称WSBS)。其中N=1,M=1。
②字并行、位串列(简称WPBS)。其中N=1,M>1。
③字串列、位并行(简称WSBP)。其中N>1,M=1。
④字并行、位并行(简称WPBP)。其中N>1,M>1。
技术革新
计算机体系结构以图灵机理论为基础,属于冯·诺依曼体系结构。本质上,图灵机理论和冯·诺依曼体系结构是一维串列的,而多核处理器则属于分散式离散的并行结构,需要解决二者的不匹配问题。
首先,串列的图灵机模型和物理上分布实现的多核处理器的匹配问题。图灵机模型意味着串列的编程模型。串列程式很难利用物理上分布实现的多个处理器核获得性能加速.与此同时,并行编程模型并没有获得很好的推广,仅仅局限在科学计算等有限的领域.研究者应该寻求合适的机制来实现串列的图灵机模型和物理上分布实现的多核处理器的匹配问题或缩小二者之间的差距,解决“并行程式编程困难,串列程式加速小”的问题。
在支持多执行绪并行套用方面,未来多核处理器应该从如下两个方向加以考虑。第一是引入新的能够更好的能够表示并行性的编程模型。由于新的编程模型支持编程者明确表示程式的并行性,因此可以极大的提升性能。比如Cell处理器提供不同的编程模型用于支持不同的套用。其难点在于如何有效推广该编程模型以及如何解决兼容性的问题。第二类方向是提供更好的硬体支持以减少并行编程的複杂性。并行程式往往需要利用锁机制实现对临界资源的同步、互斥操作,编程者必须慎重确定加锁的位置,因为保守的加锁策略限制了程式的性能,而精确的加锁策略大大增加了编程的複杂度。一些研究在此方面做了有效的探索。比如,Speculative Lock Elision机制允许在没有冲突的情况下忽略程式执行的锁操作,因而在降低编程複杂度的同时兼顾了并行程式执行的性能。这样的机制使得编程者集中精力考虑程式的正确性问题,而无须过多地考虑程式的执行性能。更激进的,Transactional Coherence and Consistency(TCC)机制以多个访存操作(Transaction)为单位考虑数据一致性问题,进一步简化了并行编程的複杂度。
主流的商业多核处理器主要针对并行套用,如何利用多核加速串列程式仍然是一个值得关注的问题。其关键技术在于利用软体或硬体自动地从串列程式中派生出能够在多核处理器上并行执行的代码或执行绪。多核加速串列程式主要有三种方法,包括并行编译器、推测多执行绪以及基于执行绪的预取机制等。在传统并行编译中,编译器需要花费很大的精力来保证拟划分执行绪之间不存在数据依赖关係。编译时存在大量模糊依赖,尤其是在允许使用指针(如C程式)的情况下,编译器不得不採用保守策略来保证程式执行的正确性。这大大限制了串列程式可以挖掘的并发程度,也决定了并行编译器只能在狭窄範围使用。为解决这些问题,人们提出推测多执行绪以及基于执行绪的预取机制等。然而,从这种概念提出到现在为止,这个方向的研究大部分局限于学术界,仅有个别商业化处理器套用了这种技术,并且仅仅局限于特殊的套用领域。我们认为动态最佳化技术和推测多执行绪(包括基于执行绪的预取机制)的结合是未来的可能发展趋势。
其次,冯·诺依曼体系结构的一维地址空间和多核处理器的多维访存层次的匹配问题。本质上,冯·诺依曼体系结构採用了一维地址空间。由于不均匀的数据访问延迟和同一数据在多个处理器核上的不同拷贝导致了数据一致性问题。该领域的研究分为两大类:一类研究主要是引入新的访存层次。新的访存层次可能採用一维分散式实现方式。典型的例子是增加分散式统一编址的暂存器网路。全局统一编址的特性避免了数据一致性的考虑。同时,相比于传统的大容量cache访问,暂存器又能提供更快的访问速度。TRIPS和RAW都有实现了类似核暂存器网路。另外,新的访存层次也可以是私有的形式。比如每个处理器核都有自己私有的访存空间。其好处是更好的划分了数据存储空间,一些y局部私有数据没有必要考虑数据一致性问题。比如Cell处理器为每个SPE核设定了私有的数据缓冲区。另一类研究主要涉及研製新的cache一致性协定。其重要趋势是放鬆正确性和性能的关係。比如推测Cache协定在数据一致性未得到确认之前就推测执行相关指令,从而减少了长迟访存操作对流水线的影响。此外,Token Coherence和TCC也採用了类似的思想。
第三,程式的多样性和单一的体系结构的匹配问题。未来的套用展现出多样性的特点。一方面,处理器的评估不仅仅局限于性能,也包括可靠性,安全性等其他指标。另一方面,即便考虑仅仅追求性能的提高,不同的应用程式也蕴含了不同层次的并行性。套用的多样性驱使未来的处理器具有可配置、灵活的体系结构。TRIPS在这方面作了富有成效的探索,比如其处理器核和片上存储系统均有可配置的能力,从而使得TRIPS能够同时挖掘指令级并行性、数据级并行性及指令级并行性。
多核和Cell等新型处理结构的出现不仅是处理器架构历史上具有里程碑式的事件,对传统以来的计算模式和计算机体系架构也是一种颠覆。
2005年,一系列具有深远影响的计算机体系结构被曝光,有可能为未来十年的计算机体系结构奠定根本性的基础,至少为处理器乃至整个计算机体系结构做出了象徵性指引。随着计算密度的提高,处理器和计算机性能的衡量标準和方式在发生变化,从套用的角度讲,讲究移动和偏向性能两者已经找到了最令人满意的结合点,并且有可能引爆手持设备的急剧膨胀。儘管现在手持设备也相对普及,在计算能力、可扩展性以及能耗上,完全起到了一台手持设备应该具备的作用;另一方面,讲究性能的伺服器端和桌面端,开始考虑减少电力消耗赶上节约型社会的大潮流。
Cell本身适应这种变化,同样也是它自己创造了这种变化。因而从它开始就强调了不一样的设计风格,除了能够很好地进行多倍扩展外,处理器内部的SPU(Synergistic Processor Unit,协同处理单元)具有很好的扩展性,因而可以同时面对通用和专用的处理,实现处理资源的灵活重构。也就意味着,通过适当的软体控制,Cell能应付多种类型的处理任务,同时还能够精简设计的複杂度。
