1.冯·诺依曼计算机结构的主要特点
冯·诺依曼计算机结构的主要特点包括:①计算机由运算器、控制器、存储器、输入设备和输出设备5大部分组成;②指令和数据用二进制表示,两者在形式上没有差别;③指令和数据存放在存储器中,按地址访问;④指令由操作码和地址码组成,操作码指定操作性质,地址码指定操作数地址;⑤采用“存储程序”方式来工作。
2.计算机硬件的基本组成和功能
运算器用来进行各种算术逻辑运算,控制器用来对指令译码并送出操作控制信号,存储器用来存放指令和数据,输入和输出设备用来实现计算机和用户之间的信息交换。
3.程序开发和执行过程
首先用某种语言(高级语言或低级语言)编制源程序,然后用语言处理程序(编译程序或汇编程序)将源程序翻译成机器语言目标程序。通过某种方式启动目标程序(可执行代码)执行时,操作系统将指令和数据装入内存,然后从第一条指令开始执行。每条指令的执行过程为取指令、指令译码、取操作数、运算、送结果、PC指向下一条指令。可执行程序由若干指令组成,CPU周而复始地逐条执行指令,直到程序所含指令全部执行完。
4.计算机系统的层次结构
计算机系统分为软件和硬件两大部分,软件和硬件的界面是指令集体系结构(ISA)。软件部分包括低层的系统软件和高层的应用程序,汇编程序、编译程序和操作系统等这些系统软件直接在ISA上实现,系统管理员工作在操作系统层,他们看到的是配置了操作系统的虚拟机器,称为操作系统虚拟机;汇编语言程序员工作在提供汇编程序的虚拟机器级,他们看到的机器称为汇编语言虚拟机;应用程序员大多工作在提供编译器或解释器等翻译程序的语言处理系统层,因此,应用程序员大多用高级语言编写程序,因而也称为高级语言程序员,他们看到的机器称为高级语言虚拟机;最终用户则工作在最上面的应用程序层。
5.计算机系统核心层之间的关联
每种程序设计语言都有相应的标准规范,进行语言转换的编译程序前端必须按照编程语言标准规范进行设计,程序员编写程序时,也应按照编程语言标准规范进行程序开发。如果编写了不符合语言规范的高级语言源程序,则转换过程就会发生错误或转换结果为不符合程序员预期的目标代码。程序执行结果不符合程序开发者预期的原因通常有两种。一种是程序开发者不了解语言规范,另一种是程序开发者编写了含有未定义行为(undefined behavior)或未确定行为(unspecified behavior)的源程序。
编译程序后端应根据ISA规范和ABI规范进行设计实现。ABI描述了应用程序和操作系统之间、应用程序和所调用的库之间、不同组成部分(如过程或函数)之间在较低层次上的机器级代码接口。
在ISA层之上,操作系统向应用程序提供的运行时环境需符合ABI规范,同时,操作系统也需要根据ISA规范来使用硬件提供的接口,包括硬件提供的各种控制寄存器和状态寄存器、原子操作、中断机制、分段和分页存储管理部件等。如果操作系统没有按照ISA规范使用硬件接口,则无法提供操作系统的重要功能。在ISA层之下,进行处理器设计时需要根据ISA规范来设计相应的硬件接口给操作系统和应用程序使用,不符合ISA规范的处理器设计,将无法支撑操作系统和应用程序的正确运行。
总之,计算机系统能按程序员预期工作,是不同层次的多个规范(如上面提到的编程语言标准规范、ABI规范、ISA规范等)共同相互支撑的结果,计算机系统各抽象层之间如何进行转换,最终都是由这些规范定义的。不管是系统软件开发者、应用程序开发者,还是处理器设计者,都必须以规范为准绳。