多层次计算机的抽象:
为方便程序员用更加适合人类的语言来描述算法,我们设计一种比内含的机器指令更便于人们使用的新的指令集合,将这些新的指令集合构成的语言称为L1,对应地把机器中内含的机器语言指令构成的语言称为L0。
我们可以通过解释和翻译这两种方法让只能执行用L0写的程序的计算机执行用L1写的程序。
翻译:将全部的L+1级指令转换为L级指令后,抛弃旧的L+1级指令,执行新的L级指令
解释:逐条解释L+1级指令为等效的L级指令后并执行,解释一条就执行一条,再依次取得下一条指令
想像存在一种以L1为机器语言的假想的计算机(虚拟机),定义其为M1,相应的把原来以L0为机器语言的计算机定义为M0。
我们用L1写程序,编写的程序先经由M0上的解释器解释过再执行,或翻译成L0后执行。
为使翻译或解释现实可行,L0和L1之间的差别不能太大,意味着L1并不足以达到我们最初的目的。于是我们发明一种比L1更人性化的指令集,称之为L2,对应的虚拟机称为M2。
像这样不断发明新的语言,每种新的语言都以前一种语言为基础、使每一种新的语言都比原来的语言更加好用的步骤,可以无限进行下去,直至最后找到一种合适的语言。我们可以把使用这种技术的计算机看成一系列的层。不同的层次之间以使用不同的语言作为区分。
现代多层次计算机:
第-1层:设备层,是一个硬件层
第0层:数字逻辑层,为硬件层,主要包括门、存储器、寄存器。由硬件直接执行微指令
第1层:微体系结构层,为硬件层,主要包括寄存器组、名为ALU的电路。由微程序解释机器指令系统或由硬件直接执行
这些寄存器和ALU相连形成数据通路,数据通路的基本操作是选择一个或两个寄存器,在ALU操作之后将结果存回某个寄存器
有的计算机由软件控制数据通路,采用一个叫做微程序的程序充当第2层指令的解释器,微程序通过数据通路逐条对指令进行取值、解码和执行;而有的计算机没有采用微程序逻辑,此时是由硬件直接控制数据通路
第2层:指令系统层或ISA(Instruction Set Architecture)层,由微程序解释或由硬件直接执行机器指令
第3层:操作系统机器层,是一个混合层,增加了新的指令集和一些新的功能,大部分指令和第2层相同,部分指令由微程序解释执行或由硬件直接执行,部分指令由操作系统解释执行
第4层:汇编语言层,用汇编语言编写程序,由汇编语言支持和执行。汇编语言实际上是低级语言的符号表示。用汇编语言写的程序首先被翻译成第1、2、3层的语言,然后由相应的虚拟机或硬件解释执行。
汇编器:完成翻译过程的程序
第5层:面向问题语言层,由高级语言编译支持和执行。一般用高级语言写的程序先由编译器翻译成汇编语言或第3层语言后执行,偶尔也会解释执行(如Java,它是翻译后解释执行)
一些概念:
数字计算机: 指通过执行人们给出的指令解决问题的机器
程序:描述如何完成一个确定任务的指令序列
算法:指明如何做某事的详细指令
原始指令:由每台计算机的电子电路能够识别和直接执行的有限的简单指令
机器语言:由计算机的原始指令构成的、供人和计算机之间进行交流的语言
结构化计算机组成:把计算机结构化为一系列抽象机,使每台计算机都建立在下层计算机抽象计算机基础上的方法
体系结构:由每一层抽象机的数据类型、操作和特性构成
计算机体系结构(计算机组成):是研究如何设计计算机系统的学科
硬件:由电路、存储器、输入输出设备等构成,是具体的对象
软件:由算法及其在计算机中的表示即程序组成。本质上是构成程序的指令的集合
一个重要观点:
软件和硬件在逻辑上等同: 任何由软件实现的操作可直接由硬件完成;任何由硬件实现的指令可以由软件来模拟