Administrator
Published on 2021-07-14 / 161 Visits
0
0

1.2 计算机系统的基本组成及层次结构

1.2 计算机系统的基本组成及层次结构

这里说的计算机系统(computer system),是指电子数字通用计算机系统,3个定语分别表达了计算机系统的一个方面的特性.“电子”一词表明使用电子线路(不同于机械、继电器等)来实现计算机硬件的关键逻辑功能;“数字”一词表明使用的电子线路是数字式电路(不同于模拟电路),运算和处理的数据是二进制的离散数据(不同于连续的电压或电流量); “通用”一词表明计算机本身的功能是多样的(不是专用于某种特殊应用的特定功能),具有完成各种运算或事务处理的能力.

完整的计算机系统是由硬件(hardware)和软件(software)两大部分(即两类资源)组成的.计算机的硬件系统是计算机系统中看得见、摸得着的物理设备,是一种高度复杂的、由多种电子线路及精密机械装置等构成的、能自动并且高速地完成数据计算与处理的装置或者工具.计算机的软件系统是计算机系统中的程序和相关数据,包括完成计算机资源管理、方便用户使用的系统软件(一般由厂家提供)和完成用户预期处理的应用软件(一般由用户设计并自己使用)这样两大部分.硬件与软件二者相互依存,分工协作,缺一不可,硬件是计算机软件运行的物质基础,软件则为硬件完成预期功能提供智力支持,若进一步深入分析,还可以通过6个层次来认识计算机硬件和软件系统的组成关系,如图1.1所示.最下面的两层属于硬件内容,最上面的3层属于软件内容,中间的指令系统层连接硬件和软件两部分,与两部分都有密切关系.

img

从图1.1中可以看出,计算机系统具有6层结构,不同层次之间的关系如下:

处在上面的一层是在下一层的基础上实现的,其功能更强大,也就是说,更接近于人解决问题的思维方式和处理问题的具体过程,对使用人员来说更方便,使用本层提供的功能时,不必关心其下一层的实现细节.

处在下面的一层是上一层实现的基础,更接近于计算机硬件实现细节,其功能相对简单,人们使用这些功能时会感到更困难.

在实现本层功能时,可能尚无法了解其上一层的最终目标和将要解决的问题,也不必理解其更下一层实现中的有关细节问题,只要使用下一层所提供的功能来完成本层的功能即可.

采用这种分层次的方法来分析和解决某些问题,有利于简化待处理问题的难度,在一段时间内,在处理某一层中的问题时,只需集中精力解决当前最需要关心的核心问题即可,而不必牵扯相关上下层中的其他问题.例如,在用高级语言设计程序时,无须深入了解底层的实现细节.

第零层是硬联逻辑层,着重体现实现计算机硬件的最重要的物质材料—电子线路,能够直接处理离散的数字信号.设计计算机硬件组成的基础是数字逻辑和数字门电路,解决的基本问题包括:使用何种器件存储信息,使用何种线路传送信息,使用何种器件运算与加工信息等.

第一层是微体系结构(micro architecture)层,也称其为计算机裸机.众所周知,计算机的核心功能是执行程序,程序是按一定规则和顺序组织起来的指令序列.这一层次着重体现的是:为了执行指令,需要在计算机中设置哪些功能部件(例如,存储、运算、输入和输出、接口和总线等部件,当然还有更复杂一些的控制器部件),每个部件如何组成和怎样运行,这些部件如何实现相互连接并协同工作等方面的知识和技术.计算机硬件系统通常由运算器部件、控制器部件、存储器部件、输入设备和输出设备这5个部分组成,这些部分是计算机组成原理的主要内容.

第二层是指令系统(instruction set)层,介于硬件和软件之间.它涉及确定提供哪些指令,包括指令能够处理的数据类型和对各种类型数据可以执行的运算,每一条指令的格式和实现的功能,指出如何进行存储单元的读写操作,如何执行外围设备的输入或输出操作,对哪些数据进行运算,执行哪一种运算,如何保存计算结果等.指令系统是计算机硬件系统设计、实现的最基本和最重要的依据,与计算机硬件实现的复杂程度、程序设计的难易程度、程序占用硬件资源的多少、程序运行的效率等都直接相关,也就是说,硬件系统就是要实现每一条指令的功能,能够直接识别和执行由指令代码组成的程序.当然,指令系统与计算机软件的关系也十分密切,指令是用于程序设计的,方便程序设计、节省硬件资源、有利于提高程序运行效率是对指令系统的主要要求.一台计算机的指令系统对计算机厂家和用户来说都是很重要的事情,需要非常认真、仔细地分析和对待.指令系统设计属于计算机系统结构的范围,合理选择可用的电子元件和线路来实现每一条指令的功能则是计算机组成的主要任务(详细内容见1.4).

第三层是操作系统(operating system)层.它是计算机系统中最重要的系统软件,主要负责计算机系统中的资源管理与分配,以及向使用者提供简单、方便、高效的服务.计算机系统中包含了许多复杂的硬件资源和软件资源,不仅对于普通用户,就是水平很高的专业人员有时也难以直接控制和操作,因此由操作系统承担计算机系统的资源管理和调度执行,会使系统的运行更可靠、更高效.同时操作系统还为用户提供了编程支持,它与程序设计语言相结合,使得程序设计更简单,创建用户的应用程序和操作计算机也更方便.操作系统是依据(直接或者间接)计算机指令系统所提供的指令设计出来的程序,并把一些常用功能以操作命令或者系统调用的方式提供给使用人员.可以说,操作系统进一步扩展了原来的指令系统,提供了新的可用命令,从而构成了一台比纯硬件系统(计算机裸机)功能更加强大的计算机系统.

第四层是汇编语言(assembly language)层.计算机是由人指挥控制、供人来使用的电子设备.使用计算机的人员要想办法把自己的意图传递给计算机,为完成这种“对话”,就需要使用某种语言.如果人和计算机能直接用自然语言对话是最好的了,但遗憾的是,到目前为止计算机还不能真正意义上听懂人类的自然语言,更不可能执行人类自然语言的全部命令.最简单的解决办法是让计算机使用其硬件可以直接识别、理解的,用电子线路容易处理的一种语言,这就是计算机的机器语言,又称为二进制代码语言,也就是计算机的指令,一台计算机的全部指令的集合构成了该计算机的指令系统.由此可以看出,计算机的基础硬件实质是在机器语言的层次上设计与实现的,并且可以直接识别和执行的只能是由机器语言构成的程序.这样做的结果,计算机一方的矛盾是解决了,但是使用计算机的人员却很难接受并使用这种语言.为此,必须找出一种折中方案,使得人们使用计算机和计算机实现都相对容易,这就要用到汇编语言、高级程序设计语言以及各种专用目标语言.

汇编语言(assembly language)大体上可看做是对计算机机器语言符号化处理的结果,再增加一些为方便程序设计而实现的扩展动能.与机器语言相比,汇编语言至少有两大优点.首先,用英文单词或其缩写形式代替二进制指令代码,更容易被人们记忆和理解;其次,选用含义明确的英文单词来表示程序中用到的数据(常量和变量),可以避免程序设计人员直接为这些数据分配存储单元,这些工作由汇编程序完成.汇编语言是面向计算机硬件本身的、程序设计人员可以使用的一种计算机语言.汇编语言程序必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机机器语言后,才能在计算机的硬件系统上予以执行.

第五层是高级语言层,高级语言又称算法语言(algorithm language),它的实现思路不再是过分地向计算机指令系统“靠拢”,而是着重面向解决实际问题所用的算法,更多的是考虑如何方便程序设计人员写出能解决问题的处理方案和解题过程.目前常用的高级语言有C、C++、VC++、Java、VB、DELPHI等.用这些语言设计出来的程序通常需要经过一个称为编译程序的软件将其编译成机器语言程序,或者首先编译成汇编程序后,再经过汇编操作后得到机器语言程序,才能在计算机的硬件系统上予以执行.

人们通常把没有配备软件的纯硬件系统称为“裸机”,这是计算机系统的根基或“内核”,它的设计目标更多地集中在方便硬件实现和有利于降低成本两个方面,因此提供的功能相对较弱,只能执行由机器语言编写的程序,非常难以使用.为此,人们期望能开发出功能更强、更接近人的思维方式和使用习惯的语言,这是通过在裸机上配备适当的软件来完成的.每加一层软件就构成一个新的“虚拟计算机”,功能更强大,使用也更加方便.例如,配备了操作系统之后,就可以通过操作系统的命令(command)或者窗口上的图标方便地操作这个新的虚拟机系统;再配备汇编语言,用户就可以用它来编写用户程序,实现用户预期的处理功能;配备了高级语言之后,用户就可以使用高级语言更方便、更高效地编写程序,解决规模更为庞大、逻辑关系更为复杂的问题.由此,可以把前面说明的计算机系统中的第一至五层分别称为裸机、L1虚拟机(支持机器语言)、L2虚拟机(增加了操作系统)、L3虚拟机(支持汇编语言)、L4虚拟机(支持高级语言).

总之,我们强调要把计算机系统当做一个整体.它既包含硬件,也包含软件,软件和硬件在逻辑功能上是等效的,即某些操作由软件(也可以由硬件)实现,反之亦然.故软、硬件之间没有固定不变的分界面,主要受实际需要及系统性能价格比所支配.随着组成计算机的基本元器件的发展,其性能不断提高,价格不断下降,因此硬件成本下降.与此同时,随着应用不断发展,软件成本在计算机系统中所占比例上升.这就造成了软、硬件之间的界面推移,某些软件完成的工作由硬件去完成(即软件硬化),同时也提高了计算机的实际运行速度.


Comment