《计算机组成与体系结构(原书第4版)》 —1.6 计算机层次结构
1.6 计算机层次结构
如果一个机器有解决各种各样问题的能力,那么它必须能够执行用不同语言编写的程序,这些语言包括Fortran、C、Lisp、Prolog等。在第3章中将看到,与我们一起工作的物理元件仅有导线和门。在这些物理元件和高级语言(如C++)之间存在着非常大的开放空间——语义鸿沟。对于一个实用系统来说,其绝大多数使用者必须看不到这个语义鸿沟。
程序设计经验告诉我们,当面对一个大问题时,应该把问题分解开并使用“分而治之”的方法。在程序设计中,我们把问题划分成模块,然后分别设计每一个模块。每个模块执行一个特定的任务,并且模块只需要知道如何与其他要用到的模块进行交互。
计算机系统组织可以用相似的方式进行处理。通过抽象原理,我们可以把机器的建造想象为由不同的层次结构组成,每一层都有一个特定的功能并且作为一个独立的假想机器存在。我们称每一层的假想计算机是虚拟机。每一层的虚拟机执行自己的特殊指令集,在需要的时候要求下层机器执行任务。通过学习计算机组织,你将看到层次结构分割方法背后的基本原理,以及如何实现层和层之间的接口。图1-3给出了普遍认可的描述抽象虚拟机的层次。
图1-3 现代计算系统的抽象层次
第6层为用户层,由应用程序组成,是每个人最熟悉的层。在这一层,我们运行程序,如文字处理器、图形软件包或游戏等。从用户层几乎看不到下面的那些层。
第5层为高级语言层,包含各种语言,如C、C++、Fortran、Lisp、Pascal和Prolog。必须使用编译器或解释器将这些语言翻译成机器可以理解的语言。编译后的语言翻译成汇编语言,然后汇编成机器代码。(它们被翻译到更下一层。)在这一层,用户看到的更低层的内容非常少。即使程序员必须知道数据类型和可用于这些数据类型的指令,也不需要知道这些类型实际上是如何实现的。
第4层为汇编语言层,包含某种汇编语言。如前所述,编译过的高级语言首先翻译为汇编语言,然后汇编语言直接翻译成机器语言。这种一对一的翻译意味着一条汇编语言指令被翻译成一条机器语言指令。通过分层,减小了高级语言(例如C++)和实际机器语言(由0和1组成)之间的语义鸿沟。
第3层为系统软件层,处理操作系统的指令。这一层负责多道程序、存储器保护、进程同步,以及其他各种重要的功能。通常,将汇编语言翻译成机器语言的指令不加修改地通过这一层。
第2层为指令集架构(ISA)或机器层,由计算机系统中特定的体系结构“认识”的机器语言组成。在硬连线计算机中用真实机器语言编写的程序不需任何解释器、翻译器或编译器就能够被电路直接执行。我们将在第4章和第5章中深入学习指令集架构。
第1层为控制层,在这一层中,控制单元要确保指令正确解码和执行,确保数据在正确的时间移动到正确的地方。控制单元解释从上层传递给它的机器指令,一次解释一条,触发需要的活动。
设计控制单元可以用硬连线方式也可以用微程序方式。在硬连线方式中,控制信号来自数字逻辑部件模块。这些信号引导所有数据和指令传输到系统的合适位置。硬连线控制单元通常运行得非常快,因为它们实际上是物理部件。然而,由于同样的原因,硬连线控制单元修改起来非常困难。
设计控制单元的另一种选择是使用微程序执行指令。微程序是用硬件能直接执行的一种低级语言编写的程序。第2层产生的机器指令被送入微程序,然后通过激活适合执行原始指令的硬件解释指令。一条机器层指令通常翻译成多条微代码指令。这种翻译不同于汇编语言和机器语言之间的一对一关系。微程序很受欢迎,因为它修改起来相对容易。微程序设计的缺点是,增加的翻译层通常会导致指令执行速度变慢。
第0层为数字逻辑层,在这一层中,我们能够找到计算机系统的物理元件:门和导线。这是制造计算机系统模块和实现算术逻辑的基础。第3章将详细介绍数字逻辑层。
- 点赞
- 收藏
- 关注作者
评论(0)