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

计算机概念

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

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]代表条件码;
将这两个寄存器的值被压入超级用户栈。
以上为个人整理理解,如有错误和补充,请批评指正。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值