《新编计算机科学概论》一2.1 计算机系统的多级层次结构

时间:2024-03-28 17:03:33

2.1 计算机系统的多级层次结构

计算机是一个复杂的系统,是由硬件和软件结合而成的有机整体,如同一切复杂的自然系统和人为系统一样,计算机内部也存在多级的层次结构。这种多级层次结构是人们对于计算机一种深入的、本质的认识和应用,它是随着计算机的发展而逐步建立起来的。
要了解计算机系统的多级层次结构,需要引入“虚拟机”(Virtual Machine)概念。
最早的计算机只有机器语言,计算机能直接执行用机器语言所编的程序。机器语言是由二进制代码表示的计算机机器指令和数据组合而成。指令是用来指定计算机实现某种控制或执行某个运算的操作命令代码。一台计算机全部指令的集合,称为指令系统。不同的计算机有不同的指令系统,或者说有不同的机器语言。同一个题目到不同的计算机上计算时,必须编写不同机器语言的程序。机器语言是最低级的语言,它是面向机器的,其指令和数据都用二进制表示。使用机器语言编制程序的工作量很大,程序的书写、输入、调试和阅读都十分困难,只有少数受过专门训练的专业人员才能胜任,使用、调试和维护都需要耗费大量的人力和时间。这大大限制了计算机的应用。
到 20世纪50 年代,人们想出了用一些具有一定含义的文字、符号和数字(称为“助记符”),按规定的格式来表示各种不同的机器指令。例如,用“ADD”表示加法,“MOV”表示数据传输等。再用这些助记符来编写程序,这就是汇编语言。这种符号语言便于记忆,比直接采用机器语言编程方便多了。但计算机只“懂”机器语言,为此需要一个能够把汇编语言“翻译”成机器语言的工具。这就是“汇编程序”,它将汇编语言编写的源程序转换成为机器语言的目的程序,再在计算机上执行,从而实现了程序设计工作的部分自动化。在这种情况下,对用户来说,他所面对的是一台使用汇编语言的机器,而这台机器似乎取代了实际的机器。值得注意的是,这台汇编语言机器没有实际的机器硬件与之相对应,它的功能完全是由软件实现的,因此称为虚拟机。可以想象这台使用汇编语言的虚拟机器M2是在实际机器M1之上,如图2?1a所示。
用汇编语言编程序比用机器语言编程序进了一大步。但汇编语言还是一种很初级的语言,它的语义结构和数学语言的差别巨大;并且汇编语言与机器结合紧密,它的每条指令与机器指令几乎是一一对应的,必须清楚该机器的结构和指令系统才能使用汇编语言,这对于大多数人来说还是很费力的。为了根本变革程序设计的方式和便于程序交流,达到不学习具体的计算机结构也能方便地使用计算机的目的,一种接近于数学语言的“算法语言”被创造出来了。

《新编计算机科学概论》一2.1 计算机系统的多级层次结构

算法语言也称为高级语言,它定义了一套基本符号以及怎样使用这套基本符号设计程序的规则。算法语言比较接近数学语言,与具体机器无关,直接通过学习该高级语言的规则就可以使用计算机解决自己的问题,既方便又省事,这为计算机的推广应用提供了方便。目前常用的算法语言有BASIC、Pascal、C、Java等。用高级语言编写的程序称为源程序,机器不能直接识别执行,必须把高级语言的程序“翻译”成机器语言,计算机才能识别和执行。如图2?1b所示,对用户来说,使用高级语言时,他所面对的是使用高级语言的虚拟机器M3,图2?1b还表示了当高级语言不能直接被翻译为机器语言时的情况。高级语言先翻译为汇编语言或者某个中间语言,再经过中间语言翻译成为机器语言的目的程序,最后在机器上执行。这种翻译通常有两种方法。
1)编译法:给计算机高级语言编制一套用机器语言编写的编译程序,它先把源程序全部翻译成目的程序,再提供给机器执行。编译程序的作用类似汇编程序,但是高级语言更复杂,其“翻译”的难度较汇编要大得多。编译法只是在编译过程中需要额外时间,并且还能够在编译中优化目的程序,编译后目的程序可以多次反复执行,还可以拿到相同的其他机器上直接执行,因此执行的效率较高。Pascal、C语言等属于编译型高级语言。由于各种高级语言和各机器语言都不相同,因此对于不同的计算机和不同的高级语言都要有对应的编译程序。编译法的具体情况我们将在后续的第6章详细介绍。
2)解释法:与编译法不同,它不是先把源程序全部编译为目的程序后再执行,而是把程序的语句逐条翻译成为目的程序并且立即逐条执行,即解释一条执行一条。这种方法每运行一次就需要解释一遍,浪费许多时间,也不能优化目的程序,因此执行效率低。BASIC语言是典型的解释型高级语言。
图2?1c表示了操作系统存在时的计算机系统的层次结构划分。
1)实际机器M1:即执行机器语言的物理机,它是计算机软硬件的分界面,在它以上是各层次的软件和汇编语言(关系最直接的是汇编语言,它与机器语言有着一一对应的简单关系), 在它以下是计算机的硬件。除了计算机专业设计者之外,很少有人熟悉和了解该层次。汇编语言的编译程序必须由机器语言编制,它能够被计算机硬件直接执行,是十分难懂的二进制编码信息。
2)虚拟机器M2:即操作系统虚拟机,是计算机操作人员所熟悉的虚拟机器(他所看到的计算机是能够在键盘和鼠标操作下管理计算机资源的机器)。操作系统能够管理高级语言和汇编语言的运行,从操作系统所提供的基本操作和对计算机系统进行管理的角度来看,它是计算机软硬件功能的最直接的延伸,在高级语言和汇编语言之下,实际物理机器之上。需要提醒注意的是,操作系统中会提供很多工具,这些工具大多属于应用程序,如Windows中提供的许多附件。
3)虚拟机器M3:即汇编语言程序员所熟悉的虚拟机器(他所看到的计算机是只能进行算术运算和逻辑运算等一些简单运算和操作的机器)。该层次的程序员要用计算机解决问题,必须比较深入地了解计算机的硬件结构和善于把复杂的计算分解处理为简单的计算机运算和操作流程,才能胜任自己的工作。
4)虚拟机器M4:即高级语言程序员使用的虚拟机器(他所看到的计算机是一个能够理解接近于人类自然语言的算法语言的计算机),它可以按照程序员的要求完成运算和处理。该层次的程序员可以不完全了解计算机的硬件,也可以不完全懂得编译和操作系统的设计。
5)虚拟机器M5:运行的是为某一个具体应用专门设计的应用软件。这一层次的用户所看到的计算机是能够解决专门问题的智能机器,他对计算机的理解是建立在大量软件及硬件基础上的虚拟机器 M5 ,因此用户可以完全不理解计算机的软件和硬件而方便地使用计算机。比如我们用Word软件进行文字处理时,使用的是应用程序Word提供的控制菜单和快捷按钮。
计算机硬件由数字逻辑电路构成。实际上,现代计算机的控制器大多采用微程序控制器构造,这一层里包含有微程序层。在图2-1中没有表示该层。微程序是处理器内部用来处理外部指令的程序,也称微码,是最内层的程序,与处理器硬件直接相关,被固化于控制器内的只读存储器中,因此称为“固件”。它的任务是用软件的方法把一条机器指令分解为一系列微指令,即控制命令。除了硬件设计专业人员,一般人不知道它的存在。
在计算机的层次结构中,凡是由软件实现的机器界面称为虚拟机,即在图2-1中第2层以上均属虚拟机,需要说明的是这些层次结构中的软、硬件的界面可能存在着一定程度的交叉,并且不同的机器结构,其软、硬件之间的功能分配也不同。从理论上讲,任何可以由软件完成的功能均可由硬件来替代,反之由硬件实现的功能也完全可以用软件来模拟。硬件实现意味着高速度和高成本,软件实现则表示有较高的灵活性。最初由于硬件成本的高昂,许多工作不得不采用软件实现,随着集成电路技术向大规模/超大规模(LSI/VLSI)方向发展,硬件成本不断下降;而计算机应用领域的不断扩展,使得软件的设计成本不断上升,于是一些本来由软件完成的传统任务逐步改为硬件完成,称为软件的硬化,这造成硬件界面某种程度的上移。
对计算机结构进行层次上的划分,可以使各层相对独立,有利于简化处理问题的难度。在某一段时间处理某一层中的问题时,只需集中精力解决当前最需要关心的核心问题即可,而不必牵扯上下层中的其他问题。在这种多层次结构中,上面的一层是建立在下一层的基础上实现出来的,实现的功能更强大,更接近人解决问题的思维方式和处理问题的具体过程,对使用人员更方便,使用这一层提供的功能时不必关心下一层的实现细节。下面一层是实现上一层的基础,更接近计算机硬件实现的细节,实现的功能相对简单,人们使用这些功能更困难,但机器执行更直接。在实现这一层的功能时,可能尚无法了解其上一层的目标和将要解决的问题,也不必理解其更下一层实现中的有关细节问题,只要使用下一层所提供出来的功能来完成本层次的功能处理即可。
现代计算机是一个功能复杂的软硬件系统。从普通使用者到计算机操作员,从程序设计员到硬件工程师,所看到的计算机系统各有完全不同的属性。大家在学习使用计算机时,需要准确把握自己的定位,根据各个层次的关系,集中精力掌握好自己直接面对的层次,当然对其他层次的了解将有助于更加全面、深刻地理解计算机系统。