您的位置:首页 > 理论基础

计算机组成原理(第八章: CPU的结构和功能)

2017-06-14 19:06 555 查看

第八章: CPU的结构和功能

1.CPU的功能

1.取指令
2.分析指令
3.执行指令
CPU必须具有控制程序的顺序执行(指令控制)产生完成每条指令所需的控制命令(操作命令)对各种加以时间上的控制(时间控制)对数据进行算术运算和逻辑运算(数据加工)以及处理中断的能力
CPUI必须有一个寄存器专用于存放当前指令的地址, 要分析指令, 必须有存放当前指令的寄存器和对指令操作进行译码的部件, 要执行指令, 必须有一个能发出各种操作命令序列的控制部件


2.CPU的寄存器

首先我们来看一下寄存器的形式, 首先第一类为用户可见的寄存器, 这种寄存器是面向用户的, 用户可以对这些寄存器进行编程, 并且以优化CPU的寄存器而减少主存的访问次数.   第二类是属于 控制和状态寄存器, 用户不呢个对这些编程, 因为其已经固定好功能, 用来控制CPU的操作. 或者控制程序的执行.

用户可见的寄存器
1.通用寄存器: 可以满足设计者指定许多功能. 例如存放操作数, 存放数据地址
2.数据寄存器: 数据寄存器用于存放操作数, 其位数满足多数数据类型的数值范围
3.地址寄存器: 用于存放地址
4.条件寄存器: 存放条件码, 对用户来说是透明的,  其中条件码是CPU根据运算结果由硬件设置的.

控制和状态寄存器
1.MAR: 存储器地址寄存器, 存储单元的地址
2.MDR: 存储器数据寄存器, 最近从存储器读出的数据或者从CPU准备存放的数据
3.PC: 程序计数器, 存放现行指令的地址,具有具有计数功能,
4.IR: 指令寄存器, 存放当前欲执行的指令.

大概流程: 现在将指令从PC送至MAR, 启动存储器作读书操作, 存储器就可以将指定地址单元内的指令读至MDR , 再由MDR送至IR.


3.指令周期

基本概念:
指令周期: CPU每去除并执行一条指令所需要的全部时间称为指令周期.
取值周期: 在取值周期完成取指令和分析指令的操作.
执行周期: 执行阶段完成执行指令的操作
中断周期: 当CPU采用中断的方式与I/O设备进行设备信息交换时, 在执行指令阶段CPU都要发出检测中断信号来看谁提出了中断, 如果有请求, 就进入中断响应阶段.


4.指令周期的数据流

http://blog.csdn.net/u011240016/article/details/52733857

没这个心机写哈, 别人总结得很好!借鉴一下~~~


5.指令流水

首先说说其原理把, 什么是流水呢, 其实很简单, 就是相当于工厂的流水线, 首先我们观察非流水是怎样的, 有4个工人, 他们完成一个任务的话, 需要4个人同时待命,1号工人完成第一项任务, 但是234号工人在待命什么都没干, 然后到2号工人完成任务, 134号工人什么也不做在待命 ,如此类推一直到4号工人完成自己的任务.

从上面那个故事可以发现, 有一个人在工作, 但是另外3个人就待命了什么也不做, 这样很浪费时间的资源. 所以流水线就产生了.

流水线工作流程: 装配线利用了在装配的不同的阶段其装配过程不同这一特点, 使不同产品处在不同的装配段上, 即每个装配同时对不同产品进行加工.

因为CPU无非工作就是取指令, 执行指令, 所以如果采用多级流水处理任务的话, 如果执行部件空闲, 就将暂存的指令传给执行部件执行. 与此同时, 指令部件又可取下一条指令并暂存起来.

但是发现了2个问题:
1.指令的执行时间一般大于取址时间, 因此取址阶段可能要等待一段时间, 也就是存放在指令部件的缓冲区的指令不能立即传给执行部件, 缓冲区不能空出.
2.当遇到条件转移指令的时候, 下一条的指令是未知的, 因为必须等待到执行阶段结束后,  才能知道指令是否成立, 从而执行下一条指令, 造成时间损失.

影响流水线的因素
1.结构相关: 当多条指令进入流水线之后, 硬件资源满足不了指令重叠的执行要求产生的
2.数据相关: 当指令在流水线重叠执行时, 当后继指令需要用到前面指令的执行结果时产生的.
3.控制相关: 当流水线遇到分支指令和其他改变PC值的指令时产生的.


6.中断系统

中断的作用毋庸置疑, 简直一把神剑, 实现了各个处理器之间的信息交流和任务切换.
引起中断的因素:
1.人为设置中断(就好像你编程一样)
2.程序性事故(各种溢出, 各种非法操作)
3.硬件故障(多得是拉)
4.I/O设备提出的中断请求(CPU与I/O设备之间的信息交互)
5.外部事件(用户通过键盘实现的中断,具体我也不知道)

OK,当有中断来时, CPU到底需要怎么handle这个中断请求
按照书上的例子就是: 这么多中断请求,我该选择那个, 什么时候去应答,应答前该做什么, 华友如何回复等等问题.


6.1中断请求标记和中断判优逻辑

中断请求标记: 为了判断中断请求源提出请求, 在中断系统中必须设置中断请求标记触发器. 简称中断请求触发器. 记作"INTR", 当其状态为1时,表示有中断源请求, 这个触发器呢, 既可以才能在于CPU的中断系统中,也可以分散到各个中断源中.

中断判优逻辑: 在任意一个时刻, 只能响应一个中断源的请求, 中断系统必须按其优先顺序给予回应.
1.硬件排队:一种链式排队器. 一种是设在CPU内, 当最高优先级的中断源有请求时INTR=1, 就可以封住比它等级低的中断源请求.
2.软件排队: 通过编写查询程序来实现. 按照中断源的优先级顺序从高到低查询各个中断源是否有请求.


6.2中断服务程序入口地址的寻求

由于不同的中断源对应不同的中断服务程序, 所以准确找i到 服务程序的入口地址是中断的核心问题

1.硬件向量法: 利用硬件产生向量地址, 再由向量地址找到中断服务程序的入口地址.
2.软件查询法: 用软件寻找中断服务程序的入口地址, 安排一条转移指令, 直接指向此中断源的中断服务程序入口地址, 机器便能自动进入中断处理.


6.3中断响应

中断隐指令: CPU在响应中断后, 进入中断周期, 在中断周期内CPU要完成的事.

1.保护程序断点: 将当前程序计数器PC的内容保存到存储器中, 可以存入堆栈.
2.寻找中断服务程序的入口地址: (6.2讲过了)
3.关中断: 当CPU进入了中断周期, 就要组织别的中断请求再次发送而发生干扰. 所以就要关闭CPU响应中断请求的功能.


6.4保护现场

包括: 保护程序断点和 保护CPU内部寄存器内容

恢复现场指的是在中断返回之前, 必须将寄存器的内容恢复到中断处理前的状态.


6.5中断屏蔽技术

这个技术主要应用于多重中断.

"多重中断"到底是什么鬼: 当CPU正在执行一个中断服务程序时, 另外一个中断源又提出了新的中断请求, 而CPU又响应了这个请求, 暂时停止正在运行的服务程序, 转去执行新的中断服务程序.

实现"多重中断", 要具备以下条件.
1.提前设置"开中断"指令: 若CPU想响应新的中断请求, 就必须开中断(因为之前关了嘛)

2.优先级别高的中断源有权中断级别低的中断源

3.屏蔽技术: 屏蔽触发器和屏蔽字:程序中断接口电路中,完成触发器D,中断请求触发器INTR和屏蔽触发器MASK。当中断源被屏蔽时(MASK=1),此时即使D=1,中断查询信号到来时刻只能将INTR置“0”,CPU接收不到该中断源的中断请求,即它被屏蔽。若该中断源未被屏蔽(MASK=0),当设备工作已完成时(D=1),中断查询信号则将INTR置“1”,表示该中断源向CPU发出中断请求,该信号送至排队器进行优先级判断。显然,对于每个中断请求触发器就有一个屏蔽触发器,将所有屏蔽触发器组合在一起,便构成了一个屏蔽寄存器。屏蔽寄存器的内容称为屏蔽字。屏蔽字与中断源的优先级是一一对应的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: