如果要计算机处理广泛的问题,那么它必须能够执行用不同语言编写的程序,如C,C++,java,kotlin等。编程经验告诉我们,当一个问题比较大时,我们应该将其分解,然后逐个解决。在编程中,我们习惯把一个大问题分解成多问题,然后分别为每一个子问题设计一个模块。每一个模块处理特定的任务,模块之间的通信通过接口来实现。
根据抽象原理,我们可以想象机器是从一个层次结构中构建起来的。在这个层次结构中,每个层次都有一个特定的功能,并且作为一个不同的假想机器存在。我们把每一级的假想机器为虚拟机。每一级的虚拟机都执行自己特定的指令集,在需要时调用较低级别的机器来执行任务。
第6级,用户级
由应用程序组成。在这个级别上,我们运行诸如文字处理、图形软件包或游戏之类的程序。较低的级别在用户级别几乎是不可见的。
第5级,高级语言级
包括C、C++、Java、 Kotlin等高级语言。这些语言必须(使用编译器或解释器)翻译成机器可以理解的语言。编译语言被翻译成汇编语言,然后被汇编成机器代码(它们被翻译到下一个较低的级别。)这个级别的用户几乎看不到较低的级别。即使程序员必须知道数据类型和这些类型的可用指令,她也不需要知道这些类型具体是如何实现的。
第4级,汇编语言级
包含某种类型的汇编语言。如前所述,编译后的高级语言首先被翻译成汇编语言,然后直接翻译成机器语言。这是一种一对一的翻译,意味着一条汇编语言指令被翻译成一条机器语言指令。通过分离层次,我们可以减少高级语言(如C++)和实际机器语言(包括0和1)之间的语义鸿沟。
第3级,系统软件级
用于处理操作系统指令。这个级别负责多道程序设计、内存保护、进程同步和其他各种重要功能。通常,从汇编语言翻译成机器语言的指令都是在未经修改的情况下通过这个级别的。
第2级,指令集体系结构(ISA)或机器级
由计算机系统的特定体系结构所识别的机器语言组成。在硬连线计算机上用计算机真正的机器语言编写的程序可以由电子电路直接执行,而无需任何解释器、转换器或编译器。
第1级:控制单元级
控制单元用于确保指令被正确解码和执行,以及在应该移动数据的时间,把数据移动到应该移动的位置。控制单元一次一条地解释从上一层级传递给它的机器指令,从而执行所需的操作。控制单元可以用两种方式实现:一是硬接线的,二是微程序的。
用硬接线实现的控制单元中,控制信号由数字逻辑元件块发出。这些信号将所有数据和指令通信量引导到系统的适当部分。硬接线控制单元通常非常快,因为它们实际上是物理组件。然而,一旦实施,出于同样的原因,它们很难修改。
微程序是用低级语言编写的程序,由硬件直接实现。在第二级产生的机器指令被输入这个微程序,然后微程序通过激活适合执行原始指令的硬件来解释这些指令。一条机器级指令通常被转换成多条微码指令。这不是汇编语言和机器语言之间存在的一对一的相关性。微程序之所以流行是因为它们相对容易修改。当然,微程序设计的缺点是,额外的翻译层通常会导致指令执行速度较慢。
第0级:数字逻辑层
是计算机系统的物理组成部分:门电路和电线。这些基本的构造块是计算机系统所有通用的数学逻辑的实现。
版权归原作者 WongKyunban 所有, 如有侵权,请联系我们删除。