计算机概念
重要的思想:我们用语言来描述的一个问题,计算机如何通过电子运转来解决这个问题?‘
7级转换层次 |
---|
通用语言将问题提出 |
算法描述(流程化、步骤清晰) |
语言(编程语言,通常指高级语言) |
机器(ISA)结构(程序和计算机硬件之间接口) |
微结构(实现的具体组织) |
电路(逻辑电路,如加法器、锁存器等) |
器件(MOS管、电阻、电容等) |
冯.诺伊曼模型
指令周期
指令的处理过程是在控制单元的控制下,精确地、一步一步地完成。
主要包括如下6个步骤:
1 取指令;从内存中读取下一条待执行的指令。
1) 将PC中的值装入MAR寄存器;2) PC++;
3)将该地址中的内容存入MDR寄存器; 4) 控制单元将MDR内容装入IR寄存器;
2 译码;分析检查指令的类型,依据操作码确定指令想干什么。
3 地址计算;如果指令执行存在地址计算操作,则在此节拍完成。 (依据寻址方式而定)
4 取操作数;指令包括操作码、 源操作数、目标操作数三部分 。该节拍负责读取指令所需要的源操作数。
5 执行; 负责指令的执行,主要在处理单元完成。
6 存放结果;将之前节拍的结果写入目的寄存器。
存储器设计
ISA与汇编语言
在通用寄存器结构中:根据操作数来源的不同,又进一步可分为寄存器-存储器型结构和寄存器-寄存器型结构;
在堆栈型结构中,操作数都是隐式的,需通过pop/push指令访问存储器,将堆栈的栈顶和次栈顶中的数据运算后写入栈顶;
在累加器型结构中,一个操作数是隐式的,即累加器,另外一个是显式给出的,是一个存储单元,运算结果送回到累加器;
程序跳转
打破程序依据PC++方式顺序执行方式的操作:条件跳转,无条件跳转,子程序(函数),TRAP,中断返回。
条件跳转:处理器通过检测条件码寄存器来决定是否修改PC寄存器内容,通常有跳转范围的限制;
非条件跳转:可以使程序执行流跳转到内存空间的任何位置;
TRAP和子程序
由于硬件寄存器是不允许用户级程序员读写,其是有特权的。TRAP指令的任务是改变PC的内容,使其指向操作系统所在的空间,即以当前用户程序的身份跳转至操作系统的某个代码入口开始执行,从而激活了操作系统的服务调用。
下面以LC-3计算机为例,其地址线16位,对应内存空间如下所示:
服务程序:由操作系统提供,以用户身份执行;
服务程序的起始地址:位于陷入矢量表中;
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]代表条件码;
将这两个寄存器的值被压入超级用户栈。
以上为个人整理理解,如有错误和补充,请批评指正。