408-计组-基础笔记

本文最后更新于:2022年10月10日 下午

408-计组-基础笔记

1.概述

1.1.结构

  • 冯诺依曼结构 image-20220523214318236
    1. 计算机由五大部件组成
    2. 指令和数据以同等地位存于存储器,可按地址寻访
    3. 指令和数据用二进制表示
    4. 指令由操作码和地址码组成
    5. 存储程序
    6. 以运算器为中心现代计算机以存储器为中心
  • 现代计算机结构 image-20220523215145066

1.2.硬件

  • 主存储器

    • 存储字长:存储单元中二进制代码的位数

    • MAR:地址寄存器;MDR:数据寄存器

    • 存储元:存储二进制的电子元件,每个存储元可存1bit

      MAR=4位 $\Longrightarrow$ 总共有$2^4$个存储单元
      MDR=16位 $\Longrightarrow$ 每个在储单元可存放16bit,即字长16bit。字和字节不一样

  • 运算器 image-20220523220526970 image-20220523220548546

  • 控制器 image-20220523222722763

1.3.性能指标

  • 存储器

    • MAR:存储单元个数
    • MDR:位数代表字长,即每个存储单元的大小(bit)
  • CPU

    • 主频:一个波峰是一个脉冲
    • CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期数
    • IPS(Instructions Per Second):每秒执行多少条指令
    • FLOPS:每秒执行多少次浮点运算(10进制)
  • 整体性能指标

    • 吞吐量:单位时间内处理请求的数量
    • 响应时间:CPU(运行) + 等待(磁盘访问、内存访问、I/O、操作系统开销)

      问:若A、B两个CPU的平均CPI相同,那么A一定更快吗?

      ——否!指令系统不一定一样

      问:基准程序执行得越快说明机器性能越好吗?

      ——否!基准程序语句存在频度差异

2.数据表示

2.1.进制转换

  • 10进制 转 其他:小数部分 * 基数 的整数部分就是那个进制的小数第一位 image-20220525191255701

    例:0.3 -> 2进制

    $0.3\times2=0.6=0+0.6$,$0.6\times2=1.2=1+0.2$,$0.2\times2=0.4=0+0.4$,$0.4\times2=0.8=0+0.8$……

    最终二进制:0.01001循环

2.2.编码

  • ASCII码,A-Z的前三位从010变成011就是a-z
  • GB2312 image-20220525192822977
  • 大端:数据最高有效字节存放到低地址中(也就是和内存是反着的)
  • CRC:$2^r\ge K+R+1$ 则有纠错能力,否则出错位置可以套圈。校验码是和位置一一对应,但不是直接二进制的值
    • 可检测出所有奇数个错误
    • 可检测出所有双比特的错误
    • 可检测出所有小于等于校验位长度的连续错误

2.3.二进制计算

  • 数字的表示

    • 原码

    • 定点整数认为小数点在最后,定点小数认为小数点在符号后面,$[x]_{原}=1.0010011$

    • 最高位0/1表示正负。如果没指定机器字长,不补0也行

    • $[x]_{原}=1,0010011$,那个逗号只是帮你区分符号位,没什么特别意思

    • 若字长n+1位,原码整数范围$-(2^n-1)\le x\le 2^n-1$,原码小数范围$-(1-2^{-n})\le x\le1-2^{-n}$

    • 反码:若符号位为0,则反码与原码相同;若符号位为1,则数值位全部取反

    • 补码:正数的补码=原码;负数的补码=反码+1(要考虑进位)

      已知一数补码,求其相反数的补码:符号位和数值位全部取反,再加一

    • 移码:补码的基础上将符号位取反。只能用于表示整数

      • 真值增大时,移码的数也是不断增大,很方便比大小。其本质上就是把表示范围改成从0往上增大
  • 运算

    • 算数移位:补码,负数,右移,左边要补1

      • 循环移位,可用于大小端转换 image-20220525213859456
    • 原码加减

      • 加法,如果符号相同,用绝对值算;如果符号不同,用绝对值大-小。算完添符号。同号运算有可能溢出

        • 减法,全转化为加法
      • 补码加减

        • 加法:直接加,符号位参与运算

          负数补码->原码:最右边的1,它以及右边不变,左边全部取反

        • 判断溢出:正+正=负:上溢;负+负=正:下溢

        • $V=A_sB_s\bar S_s+\bar A_s\bar B_sS_s$,0无溢出,1有溢出
        • 前面再放一位,与符号位异或,0无溢出,1有溢出
        • 双符号位,正00负11,结果的两个符号位异或运算,,0无溢出,1有溢出
    • 定点数-符号扩展

      • 正整数、正小数:原码反码补码都填0

      • 负整数:原码填0,反码和补码填1

      • 负小数:原码和补码填0,反码填1

        基本思想:补码最后一个1左边的都和补码一样,右边的都和原码一样

    • 原码乘法:符号由异或得到,每一轮被乘数和结果都逻辑右移,然后结果算加法。n轮加法、移位

      • 补码乘法:image-20220528093227601n轮加法、移位,再加一次加法
    • 原码除法

      • 恢复余数法:先默认上商1,余数<0再改上商0,把除数加到ACC里恢复被除数。逻辑左移
        • 示意图 image-20220528103239224
        • 左移n次,加法n+1次
      • 加减交替法:若余数为负,则可直接商0,并让余数左移1位再加上除数。左移n次,加减n+1或n+2次
        • 通过第一次减除数的商来判定两个数的大小,如果余数为正,说明被除数大,定点小数无法表示
    • 补码除法:加减交替法

      • 使用2位符号位 image-20220528110338042
      • 最后一位无论怎样,直接设置为1

2.4.浮点数

  • 表示格式 image-20220529141846876

    • 规格化:小数点左移:右规;小数点右移:左规。阶码也要相应地改

    • 规格化的原码尾数,最高数值位一定是1

    • 在IEEE754中,最高位1直接省略了

      0.75,也就是$(0.11)_2$,表示到浮点数里数值部分只剩.1000...,最高位1省略了

    • 规格化的补码尾数,符号位与最高数值位一定相反

    • 溢出 image-20220529143654627

    • 格式辨析 image-20220925124135216

  • IEEE 754 image-20220529144649196

    • 移码 image-20220529144459676
    • 阶码全0表示非规格化小数,也就是幂次取到最小 $(0.00XX)\times 2^{-126}$
    • 阶码全1,尾数全0,无穷大;尾数不为0,NaN
  • 加减

    • 对阶:阶数小的向大的对齐;尾数加减;规格化;舍入;判溢出

      例题 image-20220529154459014

2.5.ALU

  • 串行加法器:只有一个全加器,数据逐位串行送加法器中进行运算。进位触发器用来寄存进位信号,以便参与下一次运算
    • $S_i=A_i\oplus B_i\oplus c_{i-1},\ C_i=A_iB_i+(A_i\oplus B_i)C_{i-1}$
  • 并行进位加法器 image-20220529162531833
  • 套娃 image-20220529163652963

3.存储系统

3.1.概念

  • 随机存取存储器(内存)、串行访问存储器、相联存储器(快表)

  • 破坏性读出:读数据后需要重写(DRAM)。SRAM不需要重写

  • 存储速度:数据传输率 = 数据的宽度 / 存储周期(存取时间+恢复时间)

  • 金属引脚个数:地址线(n位地址)+数据线(字长)+片选线(1)+读写控制线(1/2)

    DRAM采用地址复用,地址线减半,但是需要一根行列通选线,替代掉了片选线

  • 各种字长

    • 地址码长度:存储器地址的二进制位数
    • 存储字长:一个存储单元中二进制码位数
    • 指令字长:一条指令的二进制位数
    • 机器字长(计算机位数):一次能处理的二进制位数,一半等于寄存器位数
    • 操作系统位数:操作系统可寻址的位数

3.2.DRAM

  • DRAM:栅极电容;SRAM:双稳态触发器
  • 地址分两次送,第一次行,第二次列
  • 每次刷新一行
  • 刷新
    • 分散刷新:读一次写一次
    • 集中刷新:一段时间专门安排刷新
    • 异步刷新:把刷新分散在刷新周期里(默认2ms)

3.3.RAM与CPU连接

  • 位扩展:每个存储芯片表示1位,多个芯片并联来达到总线带宽。0-12号线
  • 字扩展:用片选信号切换哪个芯片传送数据。13-15号线
  • 通过使能信号控制片选信号生效时间
  • 双端口存储器:优化多核CPU访问一根内存条的速度
  • 多体并行存储器:流水线读取数据。连续取n个字耗时 T+(n-1)r
    • 低位交叉存储器效果比高位交叉存储器效果好
    • 存取周期T,存取时间r,为了使流水线不间断,应保证模块数 $m\ge \frac{T}{r}$
    • 单体多字存储器:一次读一行

3.4.Cache

  • 命中率H

    • 先访问cache,平均访问时间 $t=Ht_c+(1-H)(t_c+t_m)$
    • 同时访问,平均访问时间 $t=Ht_c+(1-H)t_m$
  • 映射方式 image-20220530100935367

    • 全相联 image-20220530102415091

      • Cache存储空间利用充分,命中率高;缺点:查找“标记”最慢,有可能需要对比所有行的标记
    • 直接映射:主存块号 % cache块数 image-20220611085128126

      • 当cache块数是$2^n$,主存块号末尾n位直接反映它在cache中的位置,标记位就不存储这几位了

      • 对于任意一个地址,只需对比一个“标记”,速度最快;缺点:Cache存储空间利用不充分,命中率低

        例题:image-20220918140456110

    • 组相联:另外两种方式的折中,综合效果较好

      • n路组相联映射:每n个Cache行为一组
  • 替换算法

    • 随机替换
    • 先进先出
    • 最近最少使用 LRU

      • 命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变
      • 未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1
      • 未命中且无空闲行时,计数值最大的行的信息块被淘汰,新装行的块的计数器置0,其余全加1
    • 最不经常使用 LFU:记录每个块被访问多少次,最小的淘汰

  • cache写策略

    • 写命中

      • 全写法:命中时同时写cache和主存,通常使用写缓冲
      • 写回法:添加一个脏位,标记为修改过就写回主存,否则不用写回
    • 写不命中

      • 写分配法:先把数据调入cache,再修改,==配合写回法==
      • 非写分配法:直接写主存。==搭配全写法==

3.5.页式存储器

  • 逻辑地址:逻辑页号+页内地址(长度取决于页面多大)
  • 快表(TLB):类似于页表的cache
  • 虚拟存储器 image-20220614090410277
  • 段页式虚拟存储器:虚拟地址=段号+段内页号+页内地址

4.指令系统

4.1.指令格式

  • 零地址指令 OP:
    • 不需要操作数,如停机、空操作
    • 栈型计算机,数据隐含在栈顶
  • 一地址指令 OP A1:
    • 只需要一个操作数,如取反 OP(A1)->A1
    • 需要两个操作数,另一个隐含在寄存器里 (ACC)OP(A1)->ACC
  • 二地址指令 OP A1(目的) A2(源):
    • 需要两个操作数的算术运算、逻辑运算等 (A1)OP(A2)->A1
  • 三地址指令 OP A1 A2 A3(结果):
    • 需要两个操作数的算术运算、逻辑运算等 (A1)OP(A2)->A3
  • 四地址指令 OP A1 A2 A3(结果) A4(下址):
    • A4为下一条指令要执行的地址
    • 正常情况下,取指令之后PC+1,指向下一条指令;四地址指令将PC的值修改位A4所指地址
  • 扩展操作码 例题 image-20220614102910700

4.2.寻址

  • 指令寻址:始终由PC给出
    • 顺序寻址
    • 跳跃寻址
  • 数据寻址
    • 0000 隐含寻址
      • 指令短,但是需要增加硬件
    • 0001立即寻址:指令中包含 操作数 本身
      • # + 补码
    • 0010 直接寻址
    • 0011 间接寻址:指向一个主存单元,单元储存数据实际所在位置
    • 0100 寄存器寻址:指向一个寄存器编号,寄存器储存数据实际所在位置
      • 指令短,执行块
    • 0101 寄存器间接寻址:指向一个寄存器编号,寄存器指向一个主存单元,单元储存数据实际所在位置
    • 0110 相对寻址:以PC所指地址作为起点(相对下一条指令的偏移量)
    • 0111 基址寻址:以程序起始地址(基址寄存器BR 或 通用寄存器)作为起点。偏移量可变
    • 1000 变址寻址:程序员自己决定起点。变址寄存器IX可变
      • 此时IX视为偏移量,形式地址A视为基地址
      • 一个累加应用例子 image-20220616001903251
    • 1001 堆栈寻址

4.3.机器数运算的标志位

  • 求A+B时,进位输出为1则CF=1;进位输出为0则CF=0
  • 求A-B时,进位输出为1则CF=0;进位输出为0则CF=1

5.中央处理器

image-20220618102023456 image-20220618102234645

  • PC存放指令地址,位数取决于存储器字数
  • IR存放指令内容,位数取决于指令字长
  • MAR、MDR位数:数据总线宽度

5.1.CPU结构和功能

  • 每执行完一条指令都检查中断
  • 运算器内部结构 image-20220618181534785
  • 控制器内部结构 image-20220618181939729

5.2.指令执行过程

  • 指令周期:取指周期 FE + [间址周期 IND] + 执行周期 EX + [中断周期 INT]。单位「机器周期」,「机器周期」单位「时钟周期」

    • 每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等
  • 数据流

    • 取指 image-20220619074726782
    • 间址 image-20220619075028233
    • 中断 image-20220619075527295

5.3.数据通路

  • 寄存器之间 image-20220619081902691

  • 主存与CPU image-20220619082017895

  • 算数或逻辑运算 image-20220619082345748

    例题:ADD (R0) R1 的指令和数据流

    image-20220619083559671

5.4.控制器

  • 硬布线:取决于 指令操作码、目前的机器周期、节拍信号、机器状态条件

    • 微指令条件 image-20220619094015620
    • 可用于 RISC
  • 微程序

    • 如果某指令系统中有n条机器指令,则CM中微程序的个数至少是n+1个,微程序段的个数至少n个

      物理上,取指周期、执行周期看起来像是两个微程,但逻辑应该把它们看作一个整体。因此1条指令对应1个微程序的说法是正确的

    • 指令=微程序 > 微指令 > 微命令=微操作ADD R0 R1 > C0 > (Z)->MDR

  • 微程序设计

    • 水平型:长指令,一堆功能一条指令干完

      • 微程序短,执行快,但编写麻烦
      • 字段直接编码:分段,互斥性微操作在一个段内,相容的微操作在不同段内。每个段留出000表示无操作
      • 字段间接编码:一个字段的某些微命令需由另一个字段中的某些微命令来解释 image-20220620075247556
      • 微地址形成方式:
        • 下地址字段 指出:微指令中下地址字段直接指出。又称为断定方式
        • 由操作码经微地址形成部件形成
        • 增量计数器法:(CMAR)+1 -> CMAR
        • 分支转移:操作控制字段 + 转移方式(判别条件) + 转移地址(去向)
        • 通过测试网络:地址低位由各种条件确定
        • 硬件产生
    • 垂直型:一个微指令只对应一个微操作

      • 简单规整便于编写,但执行慢
    • 混合型

  • 控制单元设计

    • 分析每个阶段的微操作序列
    • 写出对应机器指令的微操作命令及节拍安排 image-20220620081417746
    • 确定微指令格式:操作码 + 下地址
    • 编写微指令码点

5.5.流水线

  • 性能指标

    • 吞吐率:单位时间完成指令条数
    • 加速比:不使用流水线与使用流水线所用时间之比
    • 效率:流水线设备利用率,「设备使用时间占总时间的比率」。用时空图所占面积来算
  • 影响因素

    • 资源冲突「互斥」:多条指令在同一时间争用同一资源
      • 暂停相关指令
      • 资源重复配置
    • 数据冲突「同步」
      • 硬件阻塞 stall
      • NOP空指令
      • 数据旁路(数据在寄存器内转发,省去写回内存的过程)
    • 控制冲突
      • 分支预测
      • 预取转移成功和不成功两个控制流方向上的目标指令
      • 加快和提前形成条件码
      • 提高转移方向的猜准率
  • 分类

    • 部件功能级、处理机级、处理机间级

      部件功能级:将复杂的算术逻辑运算组成流水线,如 浮点数求阶差、对阶、尾数相加、结果规格化

      处理机级:一条指令解释过程分成多个子过程,如 取指、译码、执行、访存及写回 五个过程

      处理机间级:每一个处理机完成某一专门任务

    • 单功能流水线、多功能流水线

    • 动态流水线、静态流水线

    • 线性流水线、非线性流水线

  • 多发技术

    • 超标量:每个时钟周期内可并发多条独立指令
    • 超流水:image-20220620093917471
    • 超长指令字:image-20220620094158780 image-20220620094243345

6.总线

6.1.概念

  • 分类

    • 按数据传输格式
      • 串行总线:抗干扰好,适用长距离传输,节省部件空间
      • 并行总线:逻辑时序简单,电路实现容易,布线复杂,高频率时存在干扰
    • 按总线功能
      • 片内总线:CPU内
      • 系统总线:数据、地址、控制
      • 通信总线:计算机系统之间
    • 按时序控制方式
      • 同步总线
      • 异步总线
  • 经典结构

    • 单总线:使用一组总线连接所有设备
    • 双总线:主存总线(支持突发传送)、IO总线
    • 三总线:主存总线、IO总线、DMA总线
      • 高速外设效率提升,鼠标键盘响应变快,系统吞吐量提升
      • 三个总线只能有一个在工作,系统工作效率较低
    • 桥接器:用于连接不同的总线,具有数据缓冲、转换和控制功能
  • 性能指标

    • 传输周期(总线周期):申请、寻址、传输、结束
    • 时钟周期:即机器的时钟周期
    • 工作频率:总线周期 的倒数。1秒内传送几次数据
    • 时钟频率:总线时钟周期 的倒数。1秒内有多少个时钟周期
    • 宽度:数据总线的宽度
    • 带宽:总线的数据传输率。1秒传输多少bit数据
    • 信号线数:地址 + 数据 + 控制

      例:同步总线,数据线和地址线复用,地址/数据线有32根,总线时钟频率为66MHz,每个时钟周期传送两次数据(上升沿和下降沿各传送一次数据)

      1)该总线的最大数据传输率(总线带宽)是多少?

      总线频率=2*66=132MHz

      总线宽度=32bit=4B

      带宽=132*4=528MB/s

      2)若该总线支持突发(猝发)传输方式,传输一个地址占用一个时钟周期,则一次“主存写”总线事务传输128位数据所需要的时间至少是多少?

      一次总线事务中,主设备只需给出一个首地址,设备就能从首地址开始的若干连续单元读出或写入多个数据。

      发送首地址占用1个时钟周期,128位数据需传输4次,占用2个时钟周期。

      1个时钟周期=1/66MHz~15ns,总耗时=(1+2)*15=45ns

6.2.仲裁

  • 集中仲裁

    • 链式查询:image-20220621093137446

    • 计数器定时查询:image-20220621093851290

      • 计数初始值可以改变优先次序;对n个设备需要 $log_2n+2$ 条控制线
    • 独立请求:各自有请求线和允许线,所有设备共用总线忙

      获得总线使用权的设备发出总线忙,而不是控制器

  • 分布式仲裁

    • 请求总线时把自己的号发到总线上,优先级最高的获得响应

6.3.操作和定时

  • 同步定时
    • 传送速度快,具有较高的传输速率;总线控制逻辑简单
    • 主从设备强制性同步;不能及时进行数据通信的有效性检验,可靠性较差
    • 适用于总线长度较短,总线所接部件的存取时间比较接近的系统
  • 异步定时
    • 不互锁:主从设备的信号都自动撤销,不受对方控制
    • 半互锁:主设备等到从设备的「确认」后才会撤销「请求」。从设备自己撤销信号
    • 全互锁:主从设备都等到收到对方信号后才会撤销信号
    • 周期可变,适用于速度差距大的设备。速度不如同步方式快
  • 半同步:统一时钟的基础上,增加一个“等待”响应信号 $\overline{WAIT}$
  • 分离式: 分为两个周期,主模块申请占用总线、从模块传送信息
    • 各模块均有权申请占用总线
    • 采用同步方式通信,不等对方回答
    • 各模块准备数据时,不占用总线
    • 总线利用率提高

6.4.标准

  • 概念
    • 系统总线:通常与CPU直接相连,用于连接CPU与北桥芯片、或CPU与主存等
    • 局部总线:没有直接与CPU连接,通常是连接高速的北桥芯片,用于连接了很多重要的硬件部件(如显
      卡、声卡等)
    • 设备总线、通信总线:通常由南桥芯片控制,用于连接计算机与计算机,或连接计算机与外部/O设备
  • 系统总线:ISA、EISA(带宽翻倍)、FBS、QPI
  • 局部总线:VESA(并行32位)、PCI、AGP(并行)、PCI-E(串行、全双工、热插拔)
  • 设备总线:RS-232C(串行)、SCSI(并行)、PCMCIA、USB、ATA(硬盘)、SATA(串行)

7.I/O

7.1.I/O系统基本组成

  • 三种方式
    • 程序查询:CPU等待
    • 中断:每个字符都中断。不适合快速存储器如磁盘
    • DMA:Direct Memory Access
  • DMA: image-20220626164534580

    • CPU向DMA接口发出「读/写」命令,并指明主存地址、磁盘地址、读写数据量等参数。DMA完成一整块的读写才会发一次中断
  • 通道控制方式

    • 通道:特殊功能的处理器,对I/O设备进行统一管理 image-20220626165318471
    • 适用于超多I/O设备的中型机、大型机

      • CPU向通道发出I/O指令,指明通道程序在内存中的位置、要操作的是哪个/O设备

      • 通道执行内存中的通道程序,控制I/O设备完成一系列任务

      • 通道执行完后发中断
  • I/O软件

    • I/O指令:CPU指令的一部分

      • 操作码+命令码+设备码
      • 操作码指明了CPU要对IO接口做什么,命令码指明了IO接口要对设备做什么
    • 通道指令:通道程序提前编制好放在主存中

      • 在含有通道的计算机中,CPU执行I/O指令对通道发出命令,由通道执行一系列通道指令,代替CPU管理设备

7.2.输出设备

  • VRAM最小显存:分辨率 * 灰度级位数
  • VRAM带宽 = 分辨率 灰度级位数 帧率
  • CRT
    • 字符显示器 image-20220628201743560
      • RAM存ASCII码。ROM存字形码,$m\times n$的矩阵

7.3.外存储器

  • 磁盘组成
    • 存储区域
      • 磁头数:记录面的个数,多少面
      • 柱面数:每一面盘片上有多少条磁道,多少圈
      • 扇区数:每一条磁道上有多少个扇区,一圈多少块
    • 硬盘存储器
      • 磁盘驱动器:磁头+盘片组件
      • 磁盘控制器:IO接口。SCSI、SATA等
      • 盘片本体
  • 磁盘性能指标
    • 容量:字节总数。分为非格式化容量和格式化容量
    • 记录密度:盘片单位面积上记录的二进制的信息量
      • 道密度是沿磁盘半径方向单位长度上的磁道数
      • 位密度是磁道单位长度上能记录的二进制代码位数
      • 面密度是位密度和道密度的乘积
    • 平均存取时间:寻道(会给一个平均值) + 旋转延迟(算期望用半圈时间) + 传输 + [控制器延迟]
    • 数据传输率:转数 * 磁道容量
  • 磁盘地址 image-20220629081025353
  • RAID
    • RAID 0:无冗余,无校验
    • RAID 1:镜像
    • RAID 2:海明码纠错
    • RAID 3:位交叉奇偶校验
    • RAID 4:块交叉奇偶校验
    • RAID 5:无独立校验的奇偶校验

7.4.I/O接口

  • 作用
    • 数据缓冲:通过数据缓冲寄存器达到主机和外设工作速度的匹配
    • 错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用
    • 控制和定时:接收从控制总线发来的控制信号、时钟信号
    • 数据格式转换:串并、并串等格式转换
    • 与主机和设备通信:实现 主机-I/O接口-I/O设备 之间的通信
  • 结构原理
    • 结构图 image-20220629083454406
    • 发命令:发送命令字到I/O控制寄存器,向设备发送命令(需要驱动程序的协助)
    • 读状态:从状态寄存器读取状态字,获得设备或I/O控制器的状态信息
    • 读/写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换
    • XX寄存器 有时称为 XX端口
  • I/O端口
    • 数据线:读写数据、状态字控制字、中断类型号
    • 地址线:指明I/O端口
    • 控制线:读/写IO端口的信号、中断请求信号
  • 分类
    • 统一编址:又称存储器映射方式。RISC常用
      • 优点:不需要专门的指令,编程灵活
      • 缺点:主存地址空间变小。地址位数多,地址译码速度慢,外设寻址时间长
    • 独立编址:又称I/O映射方式
      • 优点:不占用主存地址空间。译码快
      • 缺点:需要CPU提供存储器读写和IO设备读写两组信号,控制复杂

7.5.中断方式

  • 工作流程:

    • 中断请求
    • 中断响应
      • 响应中断的条件(可以关中断)
      • 中断判优(优先响应哪一个)
    • 中断处理 image-20220702140554594
      • 中断隐指令:
        • 关中断
        • 保存断点(PC)
        • 引出中断服务程序:软件查询 或 由硬件产生向量地址,再由向量地址找到入口程序
      • 中断服务程序
  • 多重中断 image-20220702143340772

    • 中断屏蔽字:一个方阵,可以被抢占设为1,不可以被抢占设为0。自身不可以被自身抢占

      一个例子:image-20220702145307593

例题:image-20220702150743918

7.6.DMA方式

  • 流程
    • CPU向DMA控制器指明要输入还是输出;要传送多少个数据;数据在主存、外设中的地址
    • 接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求
    • CPU响应此总线请求,发出总线响应信号,接管总线控制权,进DMA操作周期
    • 确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数
    • 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
  • 概念
    • DMA请求:向主存传送一字节的数据
    • DMA中断请求:全传完了
  • DMA与CPU共同使用主存的方式
    • 停止CPU访问主存:控制简单。但CPU对主存利用率不高
    • DMA与CPU交替访存:不需要总线使用权的申请、建立和归还过程。但硬件逻辑复杂
    • 周期挪用(窃取):不抢占。冲突时DMA优先
  • 与中断对比: image-20220702155649076

本博客所有文章除特别声明外均为原创,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!