复试 -- 计算机组成原理

一、概述

计算机系统的组成

硬件系统和软件系统共同构成了一个完整的计算机系统。

冯诺依曼机的特点

1)计算机由运算器、存储器、控制器、输入设备和输出设备五大部分组成;
2)指令和数据存储在存储器中,并可以按地址访问;
3)指令和数据均以二进制表示;
4)指令由操作码和地址码构成,操作码指明操作的性质,地址码表示操作数在存储器中的位置;
5)指令在存储器内按顺序存放,通常按自动的顺序取出执行;
6)机器以运算器为中心,I/O设备与存储器交换数据也要通过运算器。(因此,后来有了以存储器为中心的计算机结构)

现代计算机的组成框图

由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,通常将它们合起来统称为中央处理器,简称CPU,把输入输出设备简称为I/O设备,这样现代计算机可以认为由三大部分组成:CPU与主存储器可以称为主机,I/O设备称为外部设备,结构图如下

关于存储器相关概念

存储器的功能:

存储器是计算机系统中的记忆设备,用来存放程序(指令)和数据(二进制代码形式存放)。

存储器中最小单位就是存储元,可以存储一个二进制代码(0或1),即1个 bit

什么是存储单元、存储字、存储字长、存储体?
存储单元:存储一个存储字并具有特定存储地址的存储单位;
存储字:一个存储单元中存放的所有的二进制数据,按照某个地址访问某个存储单元获取的二进制数据。
存储字长:存储字中二进制数据的位数,即按照某个地址访问某个存储单元获取的二进制数据的位数;
存储体:由多个存储单元构成的存储器件。

什么是机器字长,指令字长和存储字长?
机器字长:CPU一次能够处理的二进制数据的位数。
存储字长:一个存储单元存储二进制代码的长度。
指令字长:一个指令字中包含二进制代码的位数。

主存储器中,什么是MAR,什么是MDR,存储器的最大容量由什么决定?
1)MAR:存储地址寄存器,保存需要访问的存储单元地址。反映存储单元的个数。
2)MDR:存储数据寄存器,缓存读出/写入存储单元的数据。反映存储字长。
3)存储器的最大容量由MAR寄存器的位数和MDR寄存器的位数决定。

CPU如何区分当前读取的是指令还是数据?

根据时间判断,当前工作时间是在取指阶段,从内存中读取出来的一定是指令,当前工作时间是在执行阶段,从内存中读取出来的一定是数据。

一条指令在CPU的执行过程

几乎所有的冯·诺伊曼型计算机的CPU,其工作都可以分为5个阶段:

取指令 --> 指令译码 --> 执行指令 --> 访存取数 --> 结果写回

1.取指令阶段
    取指令(Instruction Fetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。
    程序计数器PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增。
    //PC -> AR -> Memory
    //Memory -> IR
2.指令译码阶段
    取出指令后,计算机立即进入指令译码(Instruction Decode,ID)阶段。
    在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别区分出不同的指令类别以及各种获取操作数的方法。
    //                        { 1.Ad
    //Memory -> IR -> ID ->   { 2.PC变化 
    //                        { 3.CU(Control Unit)
3.访存取数阶段
    根据指令需要,有可能要访问主存,读取操作数,这样就进入了访存取数(Memory,MEM)阶段。
    此阶段的任务是:根据指令地址码,得到操作数在主存中的地址,并从主存中读取该操作数用于运算。
    //Ad -> AR -> AD -> Memory
4.执行指令阶段
    执行指令(Execute,EX)阶段,此阶段的任务是完成指令所规定的各种操作,具体实现指令的功能。为此,CPU的不同部分被连接起来,以执行所需的操作。
    //Memory -> DR -> ALU 
5.结果写回阶段
    结果写回(Writeback,WB)阶段把执行指令阶段的运行结果数据“写回”到内存中。
    //DR -> Memory
6.循环阶段
    在指令执行完毕、结果数据写回之后,若无意外事件(如结果溢出等)发生,计算机就接着从程序计数器PC中取得下一条指令地址,开始新一轮的循环,下一个指令周期将顺序取出下一条指令。
    //重复 1~5
    //遇hlt(holt on)停止

性能指标

主频 CPU工作主时钟的频率,机器主频Rc

CPI 执行一条指令所需时钟周期数

MIPS 每秒执行多少百万条指令

FLOPS 每秒执行多少次浮点运算

时钟周期 节拍脉冲,CPU中最小的时间单位

二、数据的表示和运算

数制与编码

数值

BCD码

8421码:本质就是十六进制

	加法修正:

		大于(1010)_2的时候需要加6修正
		(1010)_2到(1111)_2为无效码

字符和字符串

  • ASCII码:

    有7位,用一个字节可以表示(最高位不用,为0)

  • 字符串的存放(大端,小端)

大端模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;(符合人的正常思维)

一个字节一个字节的倒着放。(注:一个字节=2位16进制=8位2进制)

小端模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

常用校验码

  • 奇偶校验码

      奇校验码:整个校验码(有效位和信息位)中“1”的个数为奇数
    
      偶校验码:整个校验码(有效位和信息位)中“1”的个数为偶数
    
      优缺点:只能检错,不能纠错
    
  • 海明(汉明)校验码

      分组多个校验位
    
      优缺点:能发现2位错误,纠正一位错误
    
  • 循环冗余校验(CRC)码

      K位信息位后再拼接R位的校验码,整个编码长度为N位
    
      优缺点:可以纠正一位或多位错误(与多项式的选取有关
    

定点数

定点数:小数点固定在某个位置上的数据。 就好像 0.0000001 ,0.0001111;

二进制的原码,反码及补码

原码

例如:

X=+101011 , [X]原= 0010_1011
X=-101011 , [X]原= 1010_1011 

位数不够的用0补全。

PS:正数的原、反、补码都一样,0的原码跟反码都有两个,因为这里0被分为+0和-0。

反码

例如:

X=-101011 , [X]原= 1010_1011 ,[X]反=1101_0100

补码

例如:

X=-101011 , [X]原= 1010_1011 ,[X]反=1101_0100,[X]补=1101_0101

PS:0的补码是唯一的,如果机器字长为8那么[0]补=0000_0000。

除此之外,还可以用 [1000_0000]补 表示-128:

(-1) + (-127) = [1000_0001]原 + [1111_1111]原 = [1111_1111]补 + [1000_0001]补 = [1000_0000]补

-1-127的结果应该是-128,在用补码运算的结果中, [1000_0000]补 就代表-128。

注意,-128并没有原码和反码表示。

使用补码不仅仅修复了0的符号以及存在两个编码的问题,而且还能够多表示一个最低数,这就是为什么8位二进制使用原码或反码表示的范围为 [-127, +127],而使用补码表示的范围为 [-128, 127] 的原因。

移码

移码最简单了,不管正负数,只要将其补码的符号位取反即可。

例如:

X=-101011 , [X]原= 1010_1011 ,[X]反=1101_0100,[X]补=1101_0101,[X]移=0101_0101

浮点数

小数点位置可以浮动的数据。就像数学中的 1222.2103也可以表示为1.2222106;

IEEE754表示浮点数

EEE754标准包含一组实数的二进制表示法。它有三部分组成:

  • 符号位
  • 指数位
  • 尾数位

三种精度的浮点数各个部分位数如下:

IEEE 754标准中定义浮点数的表示范围为:

单精度浮点数

± (2-2-23) × 2127

双精度浮点数

± (2-2-52) × 21023

三、存储系统

存储器分类

按在计算机中的作用分类
(1)主存
(a)RAM:操作系统被加载到RAM
SRAM:(Static Random Access Memory)静态随机存储器。常用制作二级缓存。不必刷新电路就能保存数据。但体积大,集成度低
DRAM:(Dynamic Random Access Memory)动态随机存取存储器。常用语制作系统内存。DRAM用电容存储数据,需要定时充电,刷新电路,否则出处的数据丢失。集成度高
(b)ROM:存储机器自检和引导程序,BIOS等程序
MROM:(Mask Read-Only Memory)掩模式只读存储器。MROM的内容在出厂前一次写入,之后不能更改
PROM:(Programmable Read-Only Memory)-可编程只读存储器。只能写入一次数据的只读存储器,写入错误只能更换存储芯片
EPROM:(Erasable Programmable Read Only Memory)可擦除可编程只读寄存器
EEPROM: (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器。SSD
(2)辅存
磁盘,磁带,光盘

存储器的存储结构

主存中存储单元地址的分配

(1)寻址的个数有2个因素:
(a)地址线的个数:这是内存中总的可寻址字节数
(b)一个地址所占用的字节数:表明了一个内存单元,占用多少个字节

(2)内存可寻址的总字节数 ÷ 多少字节形成一个内存单元=可寻址数

(3)eg:地址线24根,按字节寻址,可寻址224=16M224=16M个
若字长为16位,按字寻址,可寻址8M个
若字长为32位,按字寻址,可寻址4M个

主存的指标

(1)存储容量:存放二进制代码的总位数。存储字数\times字长

(2)存取速度:数据的宽度/存取周期
存取时间:存储器的访问时间(读出时间,写入时间)
存取周期:连续两次独立的读写存储器操作之间,最小的时间间隔。用于读电路,写电路,地址电路清空一次

(3)存储器带宽 (位/秒)

半导体随机存储器

SRAM

(1)SRAM:静态随机存储器,不用刷新电路,使用双稳态管存储数据,不掉电情况下数据存在。
(2)SRAM基本电路

DRAM

(1)DRAM:动态随机存储器,定时刷新电路,使用电容存储数据,不掉电情况下也需要定时对电容充电。
(2)DRAM的存储矩阵是二维的,有行有列。所以要对行和列进行片选。行列片选的片选片进行复用,即同一个针脚,先选择行,后选择列。
(3)动态RAM刷新 (刷新与行地址有关:默认数据能保持2ms)

(a)集中刷新(存取周期0.5μs)
集中刷新是一次刷新存储矩阵中所有的存储单元。即,在数据能保持的这2ms内,分为能读写的周期时间,和不能读写的电路刷新时间。这个刷新时间,也称为"死区“。
(b)分散刷新(存取周期为1μs)
分散刷新是,在每次读写数据后,立刻刷新该行存储矩阵。即一个存取周期=读写时间+电路刷新时间。而读写时间等于电路刷新时间,所以,1个存取周期等于2个读写时间,为2*0.5=1μsμs。
分散刷新不存在死区,但是使得一次存取时间变成原来的2倍
(c)异步刷新
异步刷新不在一次刷新所有行,也不再每次读写后立刻刷新,而是保证在2ms内,每一行得到刷新即可。所以其死区时间为0.5μs。如果将刷新安排在指令译码阶段,则不会有死区时间(指令译码阶段,不产生cpu去内存的io)

主存与CPU的连接

存储容量的扩展

(1)位扩展

(2)字扩展(增加存储字的数量)

(3)字位扩展

连线

数据总线(连着CPU MDR)

读/写控制线(CPU控制主存)

地址总线(连着CPU MAR,CPU提供主存地址)

存取速度的提升

双端口RAM

存储器有两个独立的端口,两组线,可以异步的被使用。

访问冲突:

同时 同一地址 写入 会发生写入错误

同时 同一地址 一写一读 会发生读出错误

解决访问冲突:

BUSY#信号

多模块存储器

单体多字

一个存取周期取出连续的多个字

优缺点:连续存取速度快,但是必须是连续的。

多体并行

多个存储体独立工作

优缺点:不同的请求源可以请求不同的存储体。

  • 高位交叉编址(顺序存储)
    高位作为选择存储体的信号,低位是体内地址。
    优缺点:有利于存储器的扩充。
  • 低位交叉编址(交叉存储)
    低位作为选择存储体的信号,高位是体内地址。
    优缺点:连续读取速度快,大大增加了储存器的带宽。
    可能的访存冲突 如果相邻的访问序列中(体数个相邻),储存体体号相同。

Cache

引入目的:解决主机与CPU在速度上的矛盾。

利用局部性原理

  • 空间局部
  • 时间局部

工作原理

(1)主存单位称为块,cache称为行,实质是一个东西

(2)CPU读主存时,把地址同时送给cache和主存,cache通过地址查看此字是否在cache中,若在则立即传送给cpu。若不在,则用主存读周期把此字从主存中读出送到cpu,与此同时,把含有此字的整个数据块从主存读出送到cache的行中。

Cache层次结构

(1)cache是分层次的:L1 cache,L2 cache,L3 cache。

(2)寄存器取值时,先从L1取,去不到则向下层的L2 cache取,L2再取不到,去内存取。

(3)每个核心享有独自的L1 cache和L2 cache,所有核心共享L3 cache。 L1,L2cache是片内cache

(4)L1 cache分为L1P和L1D,分开存储指令和数据。使指令和数据可以同时读取

现代CPU多级Cache的策略

按离CPU远近命名为 L1 Cache,L2 Cache,L3 Cache

L1最近

L1对L2使用全写法,L2对主存使用写回法

cache与内存的映射关系(读方式)

(1)全关联:full associative cache

主存中的字块可以被映射到任意Cache块

(2)直接映射:Direct Associated Cache

一个Cache快对应多个主存块

(3)组相联:Set Associated Cache

将Cache块分组,组件是直接映射,组内是全相联映射。

Cache中主存块的替换算法

  • 随机算法

实现简单,没有依据局部性原理,可能命中率较低。

  • 先进先出算法

比较容易实现,也没有依据局部性原理,可能会吧需要经常使用的快替换掉。(比如循环程序)

  • 近期最少用算法

依据了局部性原理,平均命中率比FIFO高,是堆栈类算法。

  • 最不经常使用算法

采用计数器,每次替换计数最小的。

虚拟存储器

虚地址 (逻辑地址) 实地址 (物理地址)

主存地址空间 (实地址空间) 虚拟空间 (程序空间)

页式虚拟存储器

虚拟地址结构

虚页号+页内地址

页表

页表基址寄存器:存放页表的起始地址

页表行:虚页号,装入位,实页号

地址映射过程

  1. 取出页表基址寄存器里的页表起始地址。
  2. 根据页表起始地址加上虚页号在页表里面找到对应的实页号。
  3. 页表里装入位表示该页是否已装入,未装入则需装入。
  4. 实页号拼接上页内地址就是物理地址。

优缺点

要查表,增加了访问主存次数。

长度固定,页表简单,调入方便。

页面不可能完全被利用,空间浪费。

段式虚拟存储器

虚拟地址结构

段号+段内地址

段表

段表基址寄存器:存放段表起始地址

段表行:段号、装入位、段起点、段长

地址映射过程

  1. 根据段号与段表起始地址得到对应的段表行。
  2. 根据装入位判断是否已装入。
  3. 段起点+段内地址=物理地址

段页式虚拟存储器

程序分段,段的基本单位是页

虚拟地址结构

段号+段内页号+页内地址

地址映射过程

根据段号得到段表行,段表行取出页表起始地址,与段内页号一起得到页表行,从页表行中取出实页号,与页内地址拼接为物理地址。

置换算法

  • OPT:选择以后不用的页面
  • FIFO:选择最先装入的页面
  • LRU:选择最近最久未用的页面
  • CLOCK:选择最近未用的页面
  • 改进型CLOCK:考虑页面修改问题

快表TLB

虚拟存储器中总是要查表,使用高速的缓冲区存储经常访问的页对应的页表项,就是快表。以前的表(在内存中)叫做慢表(Page)。

快表根据内容指定地址,使用相联存储器。

查找时,快表慢表一起工作,快表找到慢表的工作就作废。

命中的关系

Cache命中,Page必然命中

Cache命中,说明有主存地址了,必然被调入主存了

TLB命中,Page必然命中

TLB是Page的子集

Page不命中,Cache和TLB不会命中

Page不命中则没有调入主存,没有主存地址Cache不会命中

地址翻译:TLB --> 页表 --> Cache --> 主存 --> 外存

四、指令系统

指令格式

基本格式

操作码+地址码

操作码

  • 指出指令执行什么操作
  • 提供区分地址码组成信息

地址码

被操作的数的地址

指令寻址方式

采用不同寻址方式的目的

缩短指令字长,扩大寻址空间,提高编程灵活性。

指令寻址

  • 顺序寻址
  • 跳跃寻址

数据寻址

与数据有关的寻址方式划分为三类:立即寻址方式,寄存器寻址方式,存储器寻址方式。

可以划分为下列与数据有关的寻址方式:

  • 隐含寻址
  • 立即寻址(Immediate addressing)
  • 间接寻址
  • 直接寻址(Direct addressing)
  • 寄存器寻址
  • 寄存器间接寻址
  • 相对寻址
  • 基址寻址
  • 变址寻址

CISC与RISC

CISC和RISC的比较

CISC

设置更复杂的新指令来实现软件功能的硬化。

主要特点

  1. 指令复杂,数目多
  2. 指令长度不固定,指令格式多,寻址方式多
  3. 可以访存的指令不受限制
  4. 各种指令使用频率相差大(2-8定律)
  5. 各种指令执行时间相差大,大多数指令需要多个时钟周期
  6. 控制器大多采用微程序控制
  7. 难以优化为高效的程序

RISC

减少指令种类,简化指令功能,从而提高指令的执行速度。

主要特点

  1. 选取使用频率最高的简单指令,复杂指令功能由简单指令组合来实现
  2. 指令长度固定,指令格式种类少,寻址方式少
  3. 只有Load/Store 指令访存,其余指令的操作都在寄存器之间进行
  4. CPU中寄存器数量多
  5. 一定使用指令流水线技术,大部分指令在一个时钟周期内完成
  6. 以硬布线控制为主,不用或少用微程序控制
  7. 特别重视编译优化,以减少程序执行时间

五、中央处理器

基本结构

运算器:对数据进行加工和处理

控制器:发出每条指令对应的操作序列对计算机进行控制

指令的执行

指令周期

  • 取址周期
  • 间址周期
  • 执行周期
  • 中断周期

三种周期

  1. 指令周期:
    (1)指令从取指,分析指令,到执行完成的全过程所需的全部时间。
    (2)有时指令周期还包括间指周期(间接寻址访问主存)和中断周期(响应中断)
    (3)执行完指令后才能进入中断周期,响应中断
  2. 机器周期:
    (1)通常把一个指令周期划分为若干个机器周期,每个机器周期完成一个基本操作
    (2)不同的指令包含不同个数的机器周期
    (3)因为指令的而全部过程有多个步骤,取耗时最长的那个步骤作为机器周期
  3. 时钟周期(节拍)
    (1)一个机器周期内,要完成若干个微操作,每个微操作要耗费1个节拍,一个节拍就是一个时钟周期

机器速度与机器主频的关系
(1)机器主频高,使得节拍耗时短,此时相同指令在执行过程中每个阶段虽然节拍数一样,但是每个节拍的耗时变短了。

(2)但是机器速度不只与机器主频有关,还与指令集有关。指令集每个阶段的微操作数越少,机器速度越快

指令执行方案

管理多个需要执行的指令的执行步骤顺序和时间。

  • 单指令周期
  • 多指令周期
  • 流水线方案

控制器

控制器的结构

程序计数器、控制信号产生电路、指令寄存器

硬布线控制器

输入:节拍发生器、操作码译码器

处理:硬布线控制器

输出:控制信号

优缺点:

  • 控制器的速度取决于电路延迟,所以速度快。
  • 不能修改添加新功能

微程序控制器

指令作为微程序存储,然后被执行。

一条机器指令对应一个微程序(微程序可以由更小的微程序组成,如取址),微程序存储在控制存储器(ROM)中。

一个微程序里面包含多个微指令

一个微指令对应一个或多个微操作(M(MAR)\toMDR)

一个微操作对应一个微命令

一个微命令就是发出一个控制信号

一条机器指令执行过程

  1. 执行取指微程序,获得一条机器指令
    • 取指微程序的地址送入CMAR
    • CM(CMAR)\toCMDR
    • 执行取指微程序,主存中的一条机器指令就送入了指令寄存器(IR)
  2. 得到机器指令对应的微程序
    机器指令的操作码字段 通过 微地址形成部件 产生对应的微程序的入口地址 送入 CMAR
  3. 执行微程序中的微指令序列
  4. 执行完继续第1步

微程序与硬布线的区别

  • 微指令执行控制方式

硬布线什么时候执行什么,有时序逻辑控制。

微程序每次执行完一条微指令需要给出下一条微指令的地址。特别地,写在ROM中的微程序(取指微程序)它的每一条指令的下一个指令地址写在每个指令的下地址字段中(写在ROM中)。

取指微程序执行完之后,其后继微指令的地址是由微地址形成部件形成的。

是由取指微程序放在CMAR中

  • 取指阶段

硬布线在取指阶段把指令操作码送至译码器,再由译码器译码之后作为CU的输入生成下个控制信号。

微程序在取指阶段(取指微程序运行时)把指令的操作码送到微地址形成部件,生成执行周期微程序的首地址。

指令流水线

把指令分成更小的过程(段),多条指令的某些过程可以并行运行,达到提高计算机运行速度的目的。

指令分段:

  • IF:取指周期
  • ID:译码/读寄存器堆
  • EX:执行/访存有效地址计算
  • MEM:存储器访问
  • WB:写回寄存器

影响流水线的因素和解决办法

  1. 结构相关(资源冲突)

    两个指令都要用一个资源

解决:

1.排队,后面的等

2.增加资源
  1. 数据相关(数据冲突)

    后面的指令依赖前面指令的执行结果,不能并行运行。

WAR 读后写相关

WAW 写后写相关

解决:

1.后面等

2.数据旁路技术,两个指令直接私下交流

3.编译器优化,调整指令顺序
  1. 控制相关(控制冲突)

    碰见转移指令,流水线后面的指令都作废了

解决:

1.分支预测

	静态预测:总是预测条件不满足

	动态预测:根据历史情况

2.两个分支的指令都先存着

3.加快形成条件码

4.提高分支预测的猜中率

流水线的性能指标

  • 吞吐率(TP) 单位时间流水线完成的任务数量
  • 加速比(S) 不使用流水线和使用流水线所用时间之比
  • 效率(E) 流水线中各功能段的利用率

流水线中的多发技术

超标量技术、超流水线技术、超长指令字

六、总线

总线概念

定义

(1)总线是连接各个部件的信息传输线

(2)总线是各个部件共享的传输介质

(3)总线上信息的传送分为串行和并行。(eg:usb串行,数据总线,地址总线并行传输)

(4)总线上的多个部件只能分时的向总线发送数据,但可以同时从总线上传输数据

引入总线结构的好处:

  1. 简化系统结构
  2. 减少连线数目,提高系统可靠性
  3. 便于接口设计
  4. 便于系统扩充,易于实现系统地模块化
  5. 便于故障的诊断和维修

总线分类

(1)片内总线:芯片内部的总线
(2)系统总线:计算机各部件之间的信息传输总线
(a)数据总线:双向,与机器字长,存储字长有关
(b)地址总线:单向,与存储地址,IO地址有关
(c)控制总线:有出有入。(入的为中断响应)
(3)通信总线:用于计算机系统之间的通信(控制仪表盘,移动通信等)

总线的特性和性能指标

(1)总线宽度:数据线的根数

(2)总线带宽:每秒传输的最大字节数(Mbps)

	总线带宽 = 总线宽度 * 总线频率

总线仲裁 (总线的控制)

总线的判优控制 (由哪个部件发数据)

主设备(模块):该模块对总线有控制权

从设备(模块):响应从主设备发送来的总线命令

仲裁方式:

集中式 :

  • 链式查询:
  • 计数器定时查询
  • 独立请求方式

分布式

总线周期

  • 申请分配阶段
  • 寻址阶段
  • 传输阶段
  • 结束阶段

一个总线设备在某一时刻可以有多对主从设备进行同行吗?

不可以,在某一时刻,总线上只有一个主设备控制总线,选择一个从设备与之进行通信(即一对一关系),或对所有设备进行广播通信(即一对多关系)。所以不能有多对主从设备同时进行通信。

七、I/O系统

IO设备与主机信息传送的控制方式

程序查询

CPU不断查询IO设备是否ready,CPU工作效率不高,是串行工作方式。

程序中断

IO设备发出中断请求,予以响应,大大提高了工作效率,是并行工作方式。

工作流程

  1. CPU响应中断
  2. 中断隐指令(硬件实现的)
  3. 转去执行中断服务程序

大部分中断处理的大致流程

中断隐指令:

  1. 关中断
    保存现场之前要关中断,CPU不能响应更高级中断源的请求。
  2. 保存断点
    将原来程序的指令地址保存下来
  3. 引出中断服务程序

中断服务程序的入口地址叫做中断向量

所有的中断向量存在中断向量表

中断服务程序:

  1. 进入中断服务程序时保存现场和屏蔽字
  2. 开中断(可以实现多重中断)
  3. 中断事件处理
  4. 关中断
  5. 恢复现场和屏蔽字
  6. 开中断,中断返回

多重中断和中断屏蔽

中断源与屏蔽字与优先级

例如有四个中断源A、B、C、D

优先级 D>A>C>B

D的中断屏蔽字为:1 1 1 1 屏蔽所有

A的中断屏蔽字为:1 1 1 0 屏蔽ABC

DMA方式

主存与IO设备之间有一条数据通路,如果CPU和DMA同时访问主存,让给DMA。

DMA方式只用于传数据,鼠标和键盘不能用DMA,他们要处理事件

传送方式

  • 停止CPU访问主存

  • DMA与CPU交替访问访存

  • 周期挪用

    CPU不在访存时

    CPU正在访存

    CPU和IO同时发出请求

传送过程

  1. 预处理
    CPU执行IO指令设置DMA控制器的寄存器初值和传送方向,启动DMA控制器。等到IO设备准备好要发送的数据,接收的数据,IO设备向DMA控制器发出DMA请求,DMA向CPU发出总线请求。
  2. 数据传送
    完全由DMA控制器实现
  3. 后处理
    DMA向CPU发出中断请求,DMA执行中断服务程序做DMA结束处理(数据校验…)。

猜你喜欢

转载自blog.csdn.net/Ronnyz/article/details/89467949