1.3.1 计算机系统抽象层的转换
图1.10是计算机系统抽象层及其转换示意图,描述了从最终用户希望计算机完成的应用(问题)到电子工程师使用器件完成基本电路设计的整个转换过程。
希望计算机完成或解决的任何应用(问题)最开始形成时通常用自然语言描述,但是,计算机硬件只能理解机器语言。要将一个自然语言描述的应用问题转换为机器语言程序,需要经过应用问题描述、算法抽象、高级语言程序设计、将高级语言源程序转换为特定机器语言目标程序等多个抽象层的转换。
图1.10 计算机系统抽象层及其转换
在进行高级语言程序设计时,需要有相应的程序开发支撑环境。需要一个程序编辑器,以方便源程序的编写;需要一套翻译转换软件,以处理各类源程序,包括预处理程序、编译器、汇编器、链接器等;还需要一个可以执行各类程序的用户界面,如GUI方式下的图形用户界面或CLI方式下的命令行用户界面(如shell程序)。提供程序编辑器和各类翻译转换软件的工具包统称为语言处理系统;而具有人机交互功能的用户界面和底层系统调用服务例程则由操作系统提供。
当然,所有的语言处理系统都必须在操作系统提供的计算机环境中运行,操作系统是对计算机底层结构和计算机硬件的一种抽象,这种抽象构成了可以让程序员使用的虚拟机(virtual machine)。
从应用问题到机器语言程序的每次转换所涉及的概念都属于软件的范畴,而机器语言程序所运行的计算机硬件和软件之间需要有一个“桥梁”,这个在软件和硬件之间的界面就是指令集体系结构(Instruction Set Architecture,ISA),简称指令系统,也称为架构,它是软件和硬件之间接口的一个完整定义。ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。ISA规定的内容包括:数据类型及格式,指令格式,寻址方式和可访问地址空间大小,程序可访问的通用寄存器的个数、位数和编号,状态/控制寄存器的定义,I/O空间的编址方式,中断结构,机器工作状态的定义和切换,I/O传送方式,存储保护方式等。因此,指令集体系结构是指软件能感知到的部分,也称软件可见部分。
机器语言程序就是一个ISA规定的指令序列,因此,计算机硬件执行机器语言程序的过程就是执行一条条指令的过程。ISA是对指令系统的一种规定或结构规范,实现ISA的具体逻辑结构称为计算机组织(computer organization)或微体系结构(micro-architecture),简称微架构。ISA和微体系结构是不同层面上的两个概念,微体系结构是软件不可感知的部分。例如,加法器采用串行进位方式还是并行进位方式实现属于微体系结构考虑的问题,与程序的编写没有关系,机器级代码程序员只知道ISA中是否有加法指令,而不知道机器是采用哪种进位方式实现加法器的。相同的ISA可能具有不同的微体系结构,例如,对于Intel x86这种ISA,很多处理器的组织方式不同,即具有不同的微架构,但因为它们具有相同的ISA,因此,在一种处理器上运行的程序,在另一种处理器上也能运行。
微体系结构最终由逻辑电路(logic circuit)实现,当然,微架构中的功能部件可以由不同的逻辑来实现,用不同的逻辑实现方式得到的性能和成本也有所差异。
最后,每个基本的逻辑电路都是按照特定的器件技术(device technology)实现的。