接上篇
2.从语言功能角度划分的层次结构模型
计算机硬件的物理功能是执行机器语言程序,因此相对于实际机器的这一级就称为机器语言物理机。换句话说,用户在这一级上看到的是一台实际的计算机。
与实际计算机密切相关的还有汇编语言,因为它是用助记符来表示指令系统的,所以我们常将助记符描述的指令称为汇编指令。在这一层次以及后面的层次上我们使用了虚拟机的概念。所谓虚拟机,是指通过配置软件,扩充机器功能(如扩充某种语言功能)后形成的一台计算机,实际硬件在物理功能上并不具备这种语言功能。在汇编语言这一级,用户看到计算机能接受并执行用汇编语言编写的程序,但实际上物理机只能执行机器语言指令,它通过配置汇编程序才能处理汇编语言程序。所以,用户在汇编语言这一级看到的是一台能执行汇编语言功能的虚拟机。
与算法、数学模型甚至自然语言接近的程序设计语言称为高级语言,如Pascal、C、C++等通用的高级程序设计语言。用户在这一级看到的计算机是高级语言虚拟机。例如,配置了C编译程序的计算机对用户而言,能执行C语言程序,因此是一台具有C语言功能的虚拟机;配置了BASIC解释程序的计算机对用户而言,则是一台能执行BASIC语言程序的虚拟机。
对某些特殊的应用领域或者特定的用户,也可以使用某种专用语言。例如,在数字电路设计中,使用某种虚拟硬件描述语言VHDL来描述电路中的组成与连接情况;在数据库应用中,使用某种数据库语言来创建和管理数据库等。用户在这一级看到的是具有某种专用语言功能的虚拟机。
采用虚拟机概念设计算机设计中的一个重要策略,它将计算机提供给用户的功能抽象出来,脱离具体的物理机器,使用户能够摆脱机器内部具体细节的约束。例如,许多系统软件的层次结构常分为虚拟层和物理层,在虚拟层上开发的系统软件具有较强的通用性,通过标准访问物理层,只要改变其与物理层的接口,就能应用在不同的物理机上。
3.硬件、软件划分和逻辑等价
计算机系统以硬件为基础,通过配置软件扩充其功能,并采用执行程序的方式来体现其功能。一般来说,硬件只完成最基本的功能,复杂的功能往往通过软件来实现。但是硬件与软件之间的功能分配关系常常随着技术发展而变化,哪些功能分配给硬件,哪些功能分配给软件是没有固定模式的。实际上,在计算机中,有很多功能既可以直接由硬件实现,也可以在硬件的支持下依靠软件来实现,对用户而言,在功能上是等价的,这种情况称为硬件、软件在功能上的逻辑等价。
那么,在设计一个计算机时,如何恰当的分配硬件、软件的功能?这既取决于所选定的设计目标、系统的性能价格比因素,也与当时的技术水平有关。
早期曾采用“硬件软化”的技术策略。刚出现计算机时,各种基本功能均通过硬件来实现。随后为了降低造价,只让硬件完成较简单的指令操作,如传送、加法、减法,移位和基本逻辑运算,乘法、除法、浮点运算等较复杂的功能交给软件来实现。这导致了在当时条件下小型计算机的出现。“硬件软化”使小型机结构简单又具有较强的功能,推动了计算机技术的普及与应用。
随着集成电路技术的飞速发展,人们可以将功能很强的模块集成在一块芯片上,于是出现了“软件硬化”的情况,将原来依靠靠软件才能实现的一些功能改由大规模或超大规模集成电路直接实现,如浮点运算,存储管理等。这使系统具有更高的处理速度,在软件支持下有更强的功能。
微程序控制技术的出现使计算机结构和硬件、软件功能分配发生了变化,对指令的解释和执行是通过运行微程序来实现的,因此出现了另一种技术策略“软件固化”。利用程序设计技术和扩大微程序的容量,可以使原来属于软件级的一些功能纳入微程序一级。微程序类似于软件,但被固化在只读存储器中,属于硬件CPU的范畴,称为固件。这种方式使CPU的结构得到简化。另外,人们也常采用软件固化的策略,将系统软件的核心部分(如操作系统的内核、常用软件中固定不变的部分)固化在存储芯片中。从用户的角度看,它们属于系统硬件(如系统板)的一部分。例如,IBM-PC微机系统将操作系统中的基本输入/输出系统BIOS固化在系统板上,Pentium微处理器将存储管理功能集成于CPU芯片之内,等等。
CPU硬件系统的功能特性体现为指令系统,而硬件的任务就是执行指令,执行寄存器级的信息传送操作。为此,可以先将指令流程分为若干步寄存器级传送操作,再从微操作控制这一级产生微操作命令序列,控制完成寄存器级的传送操作。而微操作命令的产生,既可以通过组合逻辑控制方式实现,也可以通过微程序控制方式实现。



