程序为什么会在计算机运行?

程序为什么会在计算机运行?

计算机体系概论

计算机概念冯.诺伊曼模型指令周期

存储器设计ISA与汇编语言程序跳转TRAP和子程序中断驱动和轮询中断返回中断使能机制I/O传输的管理能力

计算机概念

重要的思想:我们用语言来描述的一个问题,计算机如何通过电子运转来解决这个问题?‘

7级转换层次通用语言将问题提出算法描述(流程化、步骤清晰)语言(编程语言,通常指高级语言)机器(ISA)结构(程序和计算机硬件之间接口)微结构(实现的具体组织)电路(逻辑电路,如加法器、锁存器等)器件(MOS管、电阻、电容等)

冯.诺伊曼模型

图一 冯诺依曼模型图

五个组成部分:内存、处理单元、输入单元、输出单元、控制单元;

指令周期

指令的处理过程是在控制单元的控制下,精确地、一步一步地完成。 主要包括如下6个步骤: 1 取指令;从内存中读取下一条待执行的指令。 1) 将PC中的值装入MAR寄存器;2) PC++; 3)将该地址中的内容存入MDR寄存器; 4) 控制单元将MDR内容装入IR寄存器; 2 译码;分析检查指令的类型,依据操作码确定指令想干什么。 3 地址计算;如果指令执行存在地址计算操作,则在此节拍完成。 (依据寻址方式而定) 4 取操作数;指令包括操作码、 源操作数、目标操作数三部分 。该节拍负责读取指令所需要的源操作数。 5 执行; 负责指令的执行,主要在处理单元完成。 6 存放结果;将之前节拍的结果写入目的寄存器。

存储器设计

图二 存储器结构图

ISA与汇编语言

图三 ISA组织架构

图四 数据搬移指令

图五 控制指令

图六 汇编指令

在通用寄存器结构中:根据操作数来源的不同,又进一步可分为寄存器-存储器型结构和寄存器-寄存器型结构; 在堆栈型结构中,操作数都是隐式的,需通过pop/push指令访问存储器,将堆栈的栈顶和次栈顶中的数据运算后写入栈顶; 在累加器型结构中,一个操作数是隐式的,即累加器,另外一个是显式给出的,是一个存储单元,运算结果送回到累加器;

程序跳转

打破程序依据PC++方式顺序执行方式的操作:条件跳转,无条件跳转,子程序(函数),TRAP,中断返回。 条件跳转:处理器通过检测条件码寄存器来决定是否修改PC寄存器内容,通常有跳转范围的限制; 非条件跳转:可以使程序执行流跳转到内存空间的任何位置;

TRAP和子程序

由于硬件寄存器是不允许用户级程序员读写,其是有特权的。TRAP指令的任务是改变PC的内容,使其指向操作系统所在的空间,即以当前用户程序的身份跳转至操作系统的某个代码入口开始执行,从而激活了操作系统的服务调用。 下面以LC-3计算机为例,其地址线16位,对应内存空间如下所示:

图七 LC-3内存映像图

图八 使用TRAP指令调用OS的服务程序

服务程序:由操作系统提供,以用户身份执行; 服务程序的起始地址:位于陷入矢量表中; TRAP指令:用户程序希望操作系统以用户身份执行某个特定的服务程序,并在执行结束后将控制权返回; 链接:通过链接返回到用户程序; TRAP指令执行过程: 1 将8位的陷入矢量零扩展为16位,并装入MAR,它代表某个陷入矢量表项的地址; 2 通过MAR将表项内的内容读入MDR; 3 将当前PC值存入通用寄存器内,以实现用户程序的链接机制; 4 将MDR中的内容装入PC,调用服务程序; 5 在服务程序内通过跳转指令,跳转返回到用户程序中;

中断驱动和轮询

两者区别:谁控制这个交互 以键盘和CPU之间的交互为例: 如果由键盘来控制交互,则处理器只顾做自己的事情,当键盘数据准备好时,它会主动通知处理器来执行。这种由外设控制的交互方式称为:中断驱动; 如果该交互方式由处理器控制,则处理器必须不断读取,测试状态寄存器的内容,直到ready位被置位,从而读取数据。这种交互方式下,处理器必须反复查询I/O状态位,费时费力。

中断返回

主要包括两部分: 1 中断使能机制,即I/O设备如何通知处理器;产生中断信号,中止当前程序; 2 传输机制,即I/O数据如何在处理器和设备之间传送;处理器处理该中断请求;

中断使能机制

是否能够中断处理器,必须具备以下几个条件: 1 I/O设备自身确实需要服务;即通过设置I/O状态和数据寄存器的ready来表示“请求服务”; 2 设备有请求服务的权限;处理器通过设置“中断使能标志位”来控制I/O设备是否有上报中断的权限; 3 设备中断请求的优先级高于当前处理器所运行程序的优先级;即中断请求比当前运行程序更紧迫; 4 对中断信号检测;在指令周期6个节拍中,在最后一个存放结果节拍的同时检测中断测试信号INT,如果变化,则改变PC值,进入中断服务程序,如果没有变化,则PC值加1,进入下一个指令周期;

I/O传输的管理能力

1 首先要做的是保存当前程序执行的状态,以使得中断处理程序返回时,能从当前的程序执行; 2 装载中断服务程序的工作状态,开始中断请求服务; 以LC-3为例:被中断程序的状态保存主要指PC和PSR寄存器。 PC寄存器:下一条待执行指令所在的内存地址; PSR寄存器: 如图所示:PSR[15]代表程序运行模式;PSR[10:8]代表正在执行程序的优先级; PSR[2:0]代表条件码; 将这两个寄存器的值被压入超级用户栈。 以上为个人整理理解,如有错误和补充,请批评指正。

相关文章