第六章 - 总线系统

  1. 系统总线按照传输信息内容分类
    • 数据总线
      • 唯一的双向传输的总线
      • 位数(根数)与机器字长、存储字长有关(非相等)
    • 地址总线
      • 单向
      • 位数(根数)与主存地址空间大小及设备数量有关
        • 如根数与主存能保存的地址个数的表示位数一致,或者地址总线上连接设备的个数一致.
    • 控制总线
      • 单向
      • CPU发出控制信号,设备返回CPU的回馈信号
  2. 系统总线的结构(按照CPU、I/O设备、主存之间有几组总线进行连接来划分)
    • 单总线结构单总线结构
      • 并非只有一条信号线,而是CPU、I/O设备、主存之间通过一组系统总线(包含数据、地址、控制总线)连接.
      • CPU、I/O设备、主存之间可直接交换信息,不同I/O之间也可直接交换信息
      • 优点
        • 结构简单、成本低、方便新设备接入
      • 缺点
        • 带宽低、负载重、不支持并行传输
        • 比较快速的总线受到慢速设备的制约
    • 双总线结构双总线结构
      • 分为主存总线(CPU、主存、通道)和I/O总线(I/O、通道)
      • 通道程序放在主存当中
      • 主存总线支持突发(猝发)传送。即CPU发出一个地址、主存返回多个地址连续的数据。
      • 优点
        • 将慢速设备与高速的主存总线分离开来
      • 缺点
        • 需要增加通道等硬件设备
    • 三总线结构三总线结构
      • 分别位主存总线、I/O总线、DMA总线
      • 回想操作系统,DMA总线使得I/O和主存之间能够在CPU极少干预下实现传输
      • 优点
        • 提高了I/O设备的性能、使其更快响应命令、提高了系统吞吐量
      • 缺点
        • 系统工作效率较低(三总线只能有一条总线正在工作)
        • 那DMA传输过程中CPU怎么使用内存?通常采用以下三种方法。
          • 停止CPU访内存
          • 周期挪用
          • DMA与CPU交替访问内存
    • 四在线结构四在线结构
      • 桥接器(北桥、南桥)
        • 连接不同总线,具有数据缓存、转换和控制功能
      • 该结构不重要
  3. 总线的性能指标
    • 总线传输周期
      • 一次总线操作所需要的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段
      • 一条总线有32条线,一个传输周期即可传送32bit的信息
      • 一个传输周期可能由若干总线时钟周期构成,但:
        • 也有可能只由一个总线时钟周期构成
        • 也有可能一个总线时钟周期内包含多个总线传输周期
          • 原因:一个时钟周期是一个上升沿和一个下降沿的过程,而可能总线检测到一次跳变就进行传输,所以一个时钟周期内有两个传输周期
    • 总线时钟周期
      • 即机器的时钟周期
      • 现代计算机中,时钟信号也有可能是桥接器提供的
    • 总线的工作频率
    • 总线的时钟频率
    • 总线宽度
      • 通常不包含地址总线和控制总线
    • 总线带宽
      • 例题
        • 1个时钟周期传送32 * 2 = 64bit的数据,时钟频率66MHz,所以总线带宽 = 66M * 64 (bit/s)
        • 128 / 32 = 4次占两个时钟周期,一个时钟周期 = 1/66MHz ≈ 15ns,CPU发生首地址占用一个时间周期,传输数据花费2个时钟周期,所以(1+2)*15 = 45ns
  4. 串行总线与并行总线的速度对比
    • 在频率相等的情况下,显然并行更快
    • 但实际情况下并行线路中存在干扰,因此频率不能很高,不一定并行就比串行更快
  5. 总线仲裁
    • 主设备:获得总线控制权的设备
    • 从设备:被主设备访问的设备,只能被动响应从主设备发来的各自总线命令
    • 总线仲裁分类
      • 集中式仲裁(由总线控制器来判断)
        • 链式查询
          1. 设备向BR(总线请求)发出请求。
          2. 总线控制器向BG(总线允许)发出信号,信号来到设备0,若设备0没有发出请求则不应答,信号到了后面的设备。直到遇到发出过请求的设备。
          3. 第一个遇到允许信号的设备会向BS(设备忙)发出信号,表示占用。同时还会截断总线允许信号,防止后面设备接收到。
          • 离总线控制器远的设备其优先级会较低
          • 当线路上游的设备出现问题时,之后的线路都会崩溃(信号需要上游设备转发)
        • 计数器定时查询
          1. 总线控制器接收到请求,判断总线空闲
          2. 总线控制器从0开始计数,依次询问总线上的设备是否需要使用
          3. 设备接到总线控制器的询问信号,发现其数据与自身编号一致,且此时本设备需要使用总线,于是向BS总线忙发出信号表示占用。
          • 计数器可以每次从0开始,也可以从上一次的终点开始,还可以通过程序进行控制
          • 没有链式敏感,前面设备坏了后面设备依然能收到信号
          • 控制线数会增多
        • 独立请求
          1. 每个设备都有总线请求BR总线允许BG两条专用线路,同时也都连接在总线忙BS线上(图中未画出)
          2. 设备的请求会放到总线控制器里的等待队列,由总线控制器选出设备并发出允许信号,设备接收到后占用总线忙BS
          • 速度快、优先级控制灵活
          • 控制线数量极多,设备有n个,就需要2n+1的控制线。且控制逻辑复杂
      • 分布式仲裁(每个设备具有仲裁器和仲裁号)
        1. 设备发出自己唯一的仲裁号到共享的仲裁总线上。
        2. 每个设备的仲裁器将由仲裁总线上得到仲裁号与自己的仲裁号进行比较、观察优先级。
        3. 若自己的仲裁号优先级更低,就自觉撤销仲裁信号
        4. 最终,优先级最高的设备的仲裁号会保留在仲裁总线上
  6. 总线的操作和定时
    • 总线周期的四个阶段
      • 申请分配阶段
        • 可细分为传输请求总线仲裁两个阶段
      • 寻址阶段
        • 主设备通过总线发出从设备地址信息和相关命令,启动本次传输的从设备
      • 传输阶段
        • 主设备和从设备进行数据交换(数据总线:可双向)
      • 结束阶段
        • 主设备相关信息从系统总线上撤销,让出总线使用权
    • 总线定时(总线两端双方交换数据的过程中需要在时间上有所配合)
      • 同步通信
        • 统一的时钟信号控制
        • 优点
          • 速度快、较高传输速率;总线控制逻辑简单
        • 缺点
          • 主从设备是强制性同步,若主从设备没对上节拍就会传输失败;不能及时校验数据、可靠性差。
        • 适合总线长度短总线所接设备的存取时间相近的系统
      • 异步通信
        • 采用应答方式,通过握手协议控制
        1. 主从设备分别发生请求和应答信号
        2. 根据“请求”和“回答”信号的撤销是否互锁进行分类
          1. 不互锁(速度最快,可靠性最差)
            • 主设备:发出请求,不等待回答,而是经过一段时间后就撤销请求
            • 从设备:接收请求,发出回答,经过一段时间后撤销回答。双方不存在互锁。
          2. 半互锁
            • 主设备:发出请求等待回答,接收到回答之后才会撤销请求,有互锁。
            • 从设备:接收请求,发出回答,经过一段时间后撤销回答,不互锁。
          3. 全互锁(速度最慢,可靠性最强)
            • 主设备:发出请求,等待回答,接收到回答之后才会撤销请求,有互锁。
            • 从设备:接收请求,发出回答,同时必须获知到主设备的请求已经撤销后才能撤销回答,有互锁。
        • 优点:总线周期长度可变、自由适应时间配合。
        • 缺点:控制更复杂、速度比同步更慢
      • 半同步通信
        • 同步、异步结合
        • 增加一个wait信号,当主从设备速度不匹配时放慢速度。
      • 分离式通信
        • 从设备准备数据时,总线其实是空闲的
        1. 因此在主设备申请占用总线,发送完从设备地址和控制信息后立即放弃总线
        2. 从设备准备数据时,其它主设备就可以占用总线
        3. 然后从设备申请占用总线,变为主设备,向原来的主设备发生数据
  7. 总线标准(了解
  8. 为何串行总线取代并行总线

第七章- 输入输出系统

  1. I/O接口: 也叫I/O控制器、设备控制器;负责协调主机与外部设备之间的数据传输。
  2. I/O接口具有数据、控制、状态寄存器。
  3. I/O指令:
  4. 显示存储器(VRANM):也叫刷新存储器,为了存储了一帧的图像信息,VRAM容量 = 分辨率 × 灰度级位数,同时VRAM带宽 = VRAM容量 × 刷新率(帧频)
  5. 磁盘阵列(RAID)
  6. I/O接口的作用
    • 数据缓存:通过数据缓冲寄存器(DBR)达到主机和外设间速度的匹配
    • 错误和状态检测:状态寄存器反馈设备的各种错误、状态信息,供CPU查用
    • 控制和定时: 接收从控制总线发来的控制信号、时钟信号
    • 数据格式转换:串-并、并-串等格式转换
    • 与主机和设备通信:实现主机 - I/O设备 - I/O设备 - I/O设备的通信
  7. I/O接口的结构
    • 内部接口(接口面向主机的部分):2010年前大多采用并行,但之后逐渐向串行转变
    • 外部接口(设备侧):I/O接口可能连接多个设备
  8. 一次I/O过程
    1. CPU发出命令字I/O控制寄存器,该过程需要驱动程序的协助(不同设备命令字集各不相同,需要厂家提供驱动)。如我要打印文档
    2. CPU从状态寄存器中读取对应设备的状态字,获得设备或I/O控制器的状态信息。1号打印机状态正常,空闲中,准备就绪
    3. 从数据缓冲寄存器中读取或发送数据,完成主机与外设的信息交换。发送文档数据到数据缓冲寄存器,由地址译码和I/O控制逻辑负责控制打印过程
    4. 完成后可通过处理机轮询或中断请求等方法告知CPU。
    • 当CPU发出控制信号给控制寄存器之后,设备会开始准备可用资源,并通过状态寄存器告知CPU一些信息。这两者之间是错开的,因此,可以将状态寄存器和控制寄存器合二为一。
    • 数据线指明:读写数据、状态字、控制字、中断类型号
    • 地址线指明I/O端口(哪个设备)
    • 控制线指明读写信号,中断请求信号
  9. I/O编址(区分设备地址)
    • 统一编制:在内存划分出一部分区域用来存放设备地址,但其在内存中的地址从高位开始(相当于绝对地址)
      • 常见于RISC指令集,不需要专门的I/O指令
      • 地址位多,地址译码就慢
    • 独立编址:在内存划分出一部分区域用来存放设备地址,但其在内存中的地址从零位开始(相当于相对地址)
      • Q:独立编址中访问0号地址怎么区分是设备区还是内存区?
      • A:通过指令类型,如IN和OUT这两种I/O指令会自动去设备区找。
      • 常见于CISC指令集,需要专门的I/O指令
      • 地址位少(只需要表示出相对地址位,即不用考虑内存区的部分),译码快
      • I/O指令类型不能过多(否则区分也要时间),程序设计灵活性差;增加了控制逻辑电路的复杂性。
  10. 程序查询方式(轮询)流程(以打印字符a为例):
    1. 字符数据a被读入到CPU的寄存器中
    2. CPU得出控制字/命令字(由驱动程序协助提供),发给控制寄存器,我要打印文档;通过地址线告知I/O控制器以设备地址,用啥打印;通过控制线告知I/O控制器具体操作,微操,怎么打印
      • 后两步在I/O设备准备好之后才执行
    3. 设备控制器得到命令后会去准备设备,设备准备好后通过状态寄存器告知CPU以设备状态,设备X准备好了
    4. CPU轮询访问状态寄存器检查需要使用的设备准备好没
      • 这期间CPU无法干其他工作。
    5. I/O控制器将CPU写入数据缓冲寄存器的数据转发到设备。
  11. 中断
    • PSW(程序状态字)中的IF(Interrupt Flag)字段标识了此时是否开中断(1开0关)
    • 中断服务程序:处理中断的程序;当响应中断时,取出中断服务程序的入口地址并传送给程序计数器PC。
      • 中断向量:中断服务程序的入口地址
      • 中断向量地址:中断服务程序的入口地址的地址
      1. 发生中断时,由中断向量地址形成部件将不同的中断信号映射为中断向量(不同中断处理方法不同),中断向量即对应中断服务程序的入口地址。
      2. 通过这个中断向量(中断服务程序地址),找到服务程序所在的内存位置,开始执行。
      3. 为什么不能让中断向量地址生成部件直接产生入口地址300,而要产生13H再指向300?
        • 因为当服务程序的地址发生变动时,地址生成部件的映射方式也要改变,但地址生成部件是硬件!!!逻辑电路不能随意修改…
  12. 多重中断
    • 当执行中断服务程序时,依然能够响应中断信号(利用堆栈)
    • 屏蔽字:也叫中断屏蔽字,屏蔽优先级更低的中断信号。
      1. 可以理解为A最先执行,但D的中断会打断A
      2. B先运行5us后被D打断,处理完D时是30us处,35us处B再次被A打断…
  13. DMA控制器
    • CPU可向DMA控制器指明:要输入还是输出、要传送多少数据、数据在主存和外设中的位置
    • DMA与磁盘是逐字传输,与内存是逐块传输
    • 传输过程
      1. 外设发出DMA请求(也就是传送一个字)
      2. DMA向CPU发出总线请求,CPU响应后得到总线控制权,进入DMA周期
      3. 确定传送数据的主存单元地址及长度(由CPU提前告知),并且DMA能够自动修改主存地址计数和传送长度计数。
      4. DMA规定每次主存与外设间的传输方向,发出读写等控制信号,执行数据传输操作。
      5. 向CPU报告DMA结束(中断),移交总线控制权。
    • 结构
      • “控制/状态”逻辑:负责存放状态字和控制字的寄存器。
      • DMA请求触发器:每当I/O设备准备好数据时,向其发送一个控制信号,令其置位触发,就会发送一个状态信号给状态寄存器,CPU就知道准备好了。
      • 传送长度计数器:归0后传送完成,自动向CPU发出中断请求信号。
    • DMA和CPU的访存冲突

补充考点

  • 固态硬盘SSD:
  • SISD、SIMD、MISD、MIMD:看同时执行几个指令,有多少个处理器。

tool

四号红: <font color=red size=4></font>
四号绿: <font color=green size=4></font>
四号蓝: <font color=blue size=4></font>
红:    <font color=red></font> 
绿:    <font color=green></font>
蓝:    <font color=blue></font>

分割线:  

----------------------------

表格:  
|        |      |       |
| ----- | --:  | :----: |
|       |       |       |
|       |       |       |
|       |       |       |

拼图
{% gi 2 2 %}

{% endgi %}

便签:  
{% note success %}  

{% endnote %}

链接:  
🔗