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

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

《新编计算机科学概论》一2.2  计算机体系结构概述

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

2.2  计算机体系结构概述

体系结构的概念是从软件设计者的角度对计算机硬件系统的观察和分析。结构是指各部分之间的关系。通过分析系统的组成和结构,可以指导更好地进行软件设计。

2.2.1 计算机体系结构的基本概念

  1. 计算机体系结构
    计算机体系结构(computer architecture)通常是指程序设计人员所见到的计算机系统的属性,是硬件子系统的结构概念及其功能特性。经典的“计算机体系结构”定义是1964年C. M. Amdahl在介绍IBM 360系统时提出的。

按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。例如,传统机器程序员所看到计算机的主要属性是该机指令集的功能特性;而高级语言虚拟机程序员所看到的计算机的主要属性是该机所配置的高级语言所具有的功能特性。显然,不同的计算机系统,从传统机器级程序员或汇编语言程序员角度看,是具有不同属性的。但是,从高级语言(如Pascal)程序员角度看,它们就几乎没有什么差别,是具有相同属性的。或者说,这些传统机器级所存在的差别是高级语言程序员所“看不见”的,也是不需要他们知道的。在计算机技术中,对这种本来是存在的事物或属性,但从某种角度看是不存在的或不需要了解的概念称为透明性。通常,在一个计算机系统中,低层机器的属性对高层机器的程序员往往是透明的,如传统机器级的概念性结构和功能特性,对高级语言程序员来说是透明的。
由此看出,在层次结构的各个级上都有它的体系结构。本书讨论的体系结构是指传统机器级的体系结构,即一般所说的机器语言程序员所看到的传统机器级所具有的属性。这些属性是机器语言程序设计者(或者编译程序生成系统)为使其所设计(或生成)的程序能在机器上正确运行,所需遵循的计算机属性,包含其概念性结构和功能特性两个方面。这些属性是计算机系统中由硬件或固件完成的功能,程序员在了解这些属性后才能编出在传统机器上正确运行的程序。因此,经典计算机体系结构概念的实质是计算机系统中软硬件接口的确定,其接口之上的是软件的功能,接口之下的是硬件和固件的功能。
这里比较全面地讨论了经典的计算机体系结构概念。随着计算机技术的发展,计算机体系结构所包含的内容也不断变化和发展。目前经常使用的是广义的计算机体系结构的概念,它既包括经典的计算机体系结构的概念范畴,还包括了对计算机组成和计算机实现技术的研究。
这其中最重要的问题都直接与计算机的指令系统有关。例如,计算机的字长,计算机硬件能够直接识别和处理的数据类型及其表示、存储、读写方式,指令系统的组成,指令类别、格式和功能,支持的寻址方式,存储器、输入输出设备和CPU之间数据传送的方式和控制,中断的类型和处理流程,对各种运行异常或者出错的检测和处理方案等等,这些都是程序设计人员编写出高质量程序并确保其正常运行必须深入了解的计算机属性。计算机体系结构主要研究硬件和软件功能的划分,确定硬件和软件的界面,即哪些功能应划分给硬件子系统完成,哪些功能应划分到软件子系统中完成。

  1. 计算机组成
    计算机组成(computer organization)是在计算机体系结构确定并且分配了硬件系统的概念结构和功能特性的基础上,设计计算机各部件的具体组成、它们之间的连接关系,实现机器指令级的各种功能和特性。同时,为实现指令的控制功能,还需要设计相应的软件系统来构成一个完整的运算系统。在第3章我们将讨论计算机的硬件组成。

从这一点又可以说,计算机组成是计算机体系结构的逻辑实现。为了实现相同的计算机体系结构所要求的功能,完全可以有多种不同的计算机组成设计方案。半导体器件性能的提高,新的技术成果的面世,或者新的价格性能比需求的出现,都会带来计算机组成的变化。
计算机组成是计算机体系结构的逻辑实现。为了实现相同的计算机体系结构所要求的功能,完全可以有多种不同的计算机组成设计方案。一种体系结构可以有多种组成。

  1. 计算机实现
    计算机实现(computer implementation)是计算机组成的物理实现。包括中央处理器、主存储器、输入输出接口和设备的物理结构,所选用的半导体器件的集成度和速度,器件、模块、插件、底板的划分,电源、冷却、装配等技术,生产工艺和系统调试等各种问题,一句话,就是把完成逻辑设计的计算机组成方案转换为真实的计算机,也就是把满足设计和运行、价格等各项要求的计算机系统真正地制作并调试出来。

计算机中控制数据操作的电路称为中央处理器(CPU,通常简称为处理器)。在20世纪中期,CPU属于大部件,由若干机架中的电子线路组成,也反映了该部件的重要性。不过,科技进步已经极大地缩小了这些部件。今天PC中的处理器(如英特尔公司或Athlon公司生产的奔腾处理器和Celeron处理器以及AMD公司生产的Sempron处理器)都是很小的正方形薄片(大约是2×2英寸),它的引脚插在计算机主电路板(称为主板)的插座上。
如图2?2所示,CPU由两部分组成:一是算术/逻辑部件,包含执行数据操作的电路(如加法和减法运算);另一部分是控制部件,包括协调计算机活动的电路。为了临时存储信息,CPU包含类似于主存储器单元的单元,或称为寄存器。这些寄存器可分为通用寄存器或者专用寄存器(我们将在第3章中详细讨论计算机硬件)。
通用寄存器用于临时存储由CPU正在操作的数据。这些寄存器存储算术/逻辑部件电路的输入值以及该部件所产生的结果。为了操作存储在主存储器中的数据,控制部件要把存储器里的数据传送到通用寄存器,通知算术/逻辑部件由哪些寄存器保存数据,激活算术/逻辑部件中有关的电路,并告知算术/逻辑部件哪个寄存器将接收结果。
为了传输位模式,计算机CPU和主存储器通过一组称为总线的线路进行连接。利用总线,CPU给出相关存储单元的地址以及读信号,从主存储器中取出数据(读),同理,CPU可以向主存储器中放入数据,方法是给出目标文件单元和待存储数据的地址以及写信号(写),如图2?2所示。

screenshot

基于此设计,完成存储在主存储器中的两个数值相加的任务就不仅仅是执行加法运算的问题,实际上,其全部过程可分为5个步骤(见图2?3)。简言之,数据必须从主存储器传输到CPU中的寄存器,数值必须与写入寄存器中的结果相加,最后所得结果必须存储到主存储器单元。
screenshot

早期计算机不是很灵活——每个设备所执行的步骤都被存入控制部件,作为计算机的一部分。为了增加其灵活性,早期电子计算机的设计使得控制部件可以方便地重新布线。其灵活性通过插拔装置实现,类似于老式的电话交换台上把跳线的端子插到接线孔中。
计算机体系结构、计算机组成和计算机实现是3个不同的概念,各自有不同的含义,但是又有着密切的联系,而且随着时间的推移和技术的进步,这些含义也会有所改变。体系结构在整个计算机系统中占据核心地位,是设计和理解计算机的基础。在某些情况下,有时也无须特意地区分计算机体系结构和计算机组成的不同含义。

2.2.2 相关概念

在计算机工业发展的过程中,各种产品实现了相应的计算机体系结构,而在产业中人们通常用下列三个名词来表述与计算机体系结构相关的概念。

  1. 系列机
    同一个计算机体系结构可以对应多个不同的计算机组成,最典型的例子就是系列机(family computer)。系列机的出现被认为是计算机发展史上的一个重要里程碑。直到现在,各计算机厂家仍按系列机的思想发展自己的计算机产品。现代计算机不但系统系列化,其构成部件也系列化,如处理器、硬盘等。至今对计算机领域影响最大也是产量最大的系列计算机是IBM PC及其兼容系列机和Intel的80x86系列微处理器。

所谓系列机,就是指在一个厂家内生产的具有相同的体系结构,但具有不同组成和实现的一系列不同型号的机器。如IBM 370系列有370/115、125、135、145、158、168等一系列从低速到高速的各种型号。它们各有不同的性能和价格,采用不同的组成和实现技术,但程序设计者所看到的机器属性却是相同的。在中央处理器中,它们都执行相同的指令集,但在低档机上可以采用指令分析和指令执行顺序进行的方式,而在高档机上则采用重叠、流水和其他并行处理方式等。

  1. 软件兼容
    系列机从程序设计者的角度看都具有相同的机器属性,因此按这个属性(体系结构)编制的机器语言程序以及编译程序都能通用于各档机器,我们称这种情况下的各机器是软件兼容的,即同一个软件可以不加修改地运行于体系结构相同的各档机器上,而且它们所获得的结果一样,差别只在于运行时间的不同。长期以来,软件工作者希望有一个稳定的环境,使他们编制出来的程序能得到广泛的应用,机器设计者又希望根据硬件技术和器件技术的发展不断地推出新的机器,而系列机的出现较好地解决了软件要求环境稳定和硬件、器件技术迅速发展之间的矛盾,对计算机的发展起到了重要的推动作用。

系列机为了保证软件的兼容,要求体系结构不改变,这无疑又妨碍了计算机体系结构的发展。实际上,系列机的软件兼容还有向上兼容、向下兼容、向前兼容和向后兼容之分。所谓向上(下)兼容指的是按某档机器编制的程序,不加修改就能运行于比它高(低)档的机器。所谓向前(后)兼容指的是按某个时期投入市场的某种型号机器编制的程序,不加修改就能运行于在它之前(后)投入市场的机器。如图2?4所示。

screenshot

为了适应系列机中性能不断提高和应用领域不断扩大的要求,后续各档机器的体系结构也是可以改变的。如增加浮点运算指令以提高速度,或者增加事务处理指令以满足事务处理方面的需要等。但这种改变必须是原有体系结构的扩充,而不是任意地更改或缩小。这样,对系列机的软件向下和向前兼容可以不做要求,向上兼容在某种情况下可能做不到(如在低档机器上增加了面向事务处理的指令),但向后兼容却是肯定要做到的。因此,可以说向后兼容是软件兼容的根本特征,也是系列机的根本特征。一个系列机的体系结构设计得好坏,是否有生命力,就看是否能在保证向后兼容的前提下不断地改进其组成和实现。

  1. 兼容机
    同一种组成可以有多种物理实现。有些计算机厂家为了能利用大的计算机厂家的开发成果,也研制一些通称实现软件兼容的计算机产品。我们把不同厂家生产的具有相同体系结构的计算机称为兼容机(compatible machine)。一方面,兼容机厂家采用更普及、成本更低廉的配件实现技术要求,因此具有较高的性能价格比;另一方面兼容机又可能对原有的体系结构进行某种扩充,使它具有更强的功能,因此在市场上有较强的竞争能力。

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

分享:

华章出版社

官方博客
官网链接