计算机组成原理-学习笔记13-总线

计算机组成原理-学习笔记13-总线

1.基础

1.类型

• 芯片内部总线:连接芯片内部的各个部分

​ • 例:CPU中连接寄存器、ALU等部分(计基讲的)

• 系统总线:连接CPU、存储器、IO控制器和其他功能设备(本节课重点)

• 通信总线:连接主机和I/O设备,或连接不同的计算机系统

2.结构

  • 数据线:在系统组件之间传输数据
    • 数据线的数量决定了一次可以传输的数据的大小。正常每次只能传1位
  • 地址线:在数据线和地址I/O端口上指定数据的来源和去向
    • 地址线的数量决定了寻址空间的大小(存地址的位数2^n)
    • 可能可以传2次,达到更大寻址空间
  • 控制线:控制对数据线和地址线的存取和使用

​ • 时钟(clock):用于总线同步操作

​ • 总线请求(bus request):表示模块需要获得对总线的控制,处理冲突

​ • 总线允许(bus grant):发出请求的设备已经被允许控制总线

​ • 中断请求(interrupt request):表示某个中断正在悬而未决

​ • 中断响应(interrupt ACK):未决的终端请求被响应

​ • 存储器读(memory read):从存储器读数据到总线

​ • 存储器写(memory write):将数据从总线写入存储器

​ • I/O读(I/O read):从I/O端口读数据到总线

​ • I/O写(I/O write):将数据从总线写入I/O端口

3.特点

  • 可以被多个设备监听,但同一时刻只能由一个设备发送数据

    • 混淆例子:走廊喊话
    • 不能抢夺
  • 如果连在总线上的某个设备希望向另一个设备发送数据,需要:

    • 1.获得总线的使用权
    • 2.通过总线传送数据
  • 如果连在总线上的某个设备希望向另一个组件请求数据,需要:

    • 获得总线的使用权
    • 通过总线向另一个设备发送请求,等待另一个设备发送数据

2.设计要素

用途

  • 专用(dedicated)总线:始终只负责一项功能,或始终分配给特定的计算机组件
    • 优点:高吞吐量,减少总线冲突
    • 缺点:增加了系统的规模和成本
  • 复用(multiplexed)总线:将同一线路用于多种用途
    • 优点:使用的布线数量少,节省空间和成本
    • 缺点:每个模块需要更复杂的控制电路,且共享可能会降低性

仲裁

  • 通过某种策略选择一个设备
  • 平衡因素
    • 优先级:优先级高的设备优先被服务
    • 公平性:优先级最低的设备不能一直被延迟

仲裁方案

  • 集中式(centralized):由仲裁器(arbiter)或总线控制器(bus controller)负责分配总线使用权

    • 链式查询 / 菊花链(daisy chain)image-20221129174524495

      • 串行连接,将允许信号从优先级最高的设备下发到优先级

        最低的设备

      • 如果某个设备收到了允许信号并且发起了总线请求,该设备将总线设置为繁忙状态,允许信号将不再被进一步传递

      • 优点:灵活,容易确定优先级

      • 缺点:不能保证公平性,对故障敏感

    • 计数器查询(query by a counter)image-20221129174517949

      • 将总线允许线替换为设备ID(地址)线

      • 总线空闲时,总线仲裁器的计数器开始计数,计数值通过设备ID线发向各个部件

      • 如果当前发送请求的设备ID等于裁决器当前的计数,裁决器将停止计数,

        设备将总线设置为繁忙

      • 优点:灵活地确定设备优先级,既可从1开始(优先级)也可从下一个设备ID开始(公平性)

      • 缺点:需要解码和比较设备ID信号

    • 独立请求(independently request)image-20221129174509347

      • 每个设备都有自己的总线请求线和总线允许线
      • 总线仲裁器决定哪个设备可以使用总线
        • 确定策略:固定优先级,公平链式,LRU,FIFO
      • 优点:可编程
      • 缺点:复杂
  • 分布式(distributed):每个设备都包含访问控制逻辑,各设备共同作用分享总线

    • 自举式(self selection)
      • 固定优先级
      • 每个设备自行判断自己是否在请求总线的设备中优先级最高(3最高)
      • image-20221129174500223
    • 冲突检测(collision detection)
      • 当一个设备想要使用总线时,它会检查总线是否繁忙
        • 如果总线空闲,设备使用总线
      • 冲突:如果两个设备发现总线空闲,它们可能同时使用总线
        • 在传输数据时,设备会监听总线,检查是否存在冲突。如果发生冲突,所有使用总线的设备将停止数据传输,并分别在随机时间间隔后再次请求总线

时序

  • 目的:确定每个总线事务的开始和结束时间
    • 总线事务:地址 + 数据 + … + 数据
  • 类型
    • 同步时序(时钟信号):时钟信号来同步

      • 共享同一个时钟(快受慢拖累)
      • image-20221204225949092
    • 异步时序(顺序):一个事件的发生取决于前一个事件的发生

      • image-20221204230401684
      • Ready提供数据,ack接收
      • 1.均为上升沿
      • 2.Ready下降沿,否则ready不知道ack收到
      • 3.ack下降沿,否则ack不知道ready撤了
      • (1开始后开始传输,即设置到数据/地址线上)
      • (读完后2开始握手通知)
      • (3开始后收回悬置,即释放数据/地址线)
      • image-20221204231730077
      • 123和567:三次握手。4:释放和过渡
    • 半同步:同步和异步相结合

      • 准备和响应信号仅在上升沿有效
      • 去除噪声
    • 事件分离:准备数据时释放总线

      • 即在4时利用总线,将一个总线事件分离为两个过程
      • 缺点:增加了每个总线事件的时间
      • image-20221204233008616

总线带宽和数据传输速率

  • 总线带宽(bus bandwidth):总线的最大数据传输速率(理想)
    • 不要考虑总线仲裁、地址传输等因素
  • 数据传输速率
    • 考虑地址传输、握手等因素(实际
  • 总线宽度(bus width):组成总线的线数
    • 数据总线越宽,一次传输的数据位数就越多
    • 地址总线越宽,一次传输的地址位数就越多、

计算题例子

  • Mbps是Million(10^6 = 2^20) bits per second的缩写

  • 时钟周期和频率:1GHz=10^3MHz=10^6KHz=10^9Hz 1000的数量级

    GHz对应的T(s)=1/(10^9Hz)=10^-9 s =1ns

    1s=10^3 ms=10^6 us=10^9 ns

  • 同步总线

    • image-20221204234131244
    • 记住:准备数据【上取整】,一个时钟周期只能做一件事
    • image-20221204234347579
  • 异步总线

    • 第一次握手后开始准备数据
    • 数据准备后才能开始传输
    • image-20221204234032663

复杂例子

image-20221204235521515

image-20221204235530559

image-20221204235556052

  • 每次读 == 每次总线时间
  • 需要考虑最后一次空闲
  • 读1-4/5-8/9-12个字时,同时传输(2)和准备(4)。最后一次只传输,故为2

提高传输率

万变不离其宗:数据量 / 耗费时间

  • 提高时钟频率,变相缩短时钟周期(时钟周期数不变的情况下)
  • 增加数据总线宽度
    • 每次传输更多位的数据(成本:更多的总线线路)
  • 块传输
    • 传输一次地址就传输一块数据(成本:高复杂性)
  • 分离总线事务
    • 减少总线空闲时间(成本:复杂性高,增加每个事务的持续时间)
  • 分离地址线和数据线
    • 同时传输地址和数据(成本:更多的总线线路)

总线层次结构

  • 单总线结构

    • CPU、存储器和 I/O 模块都连接到一条系统总线

    • 优点:简单,易于扩展

    • 缺点:

      • 连接的设备越多,总线长度越大,传输延迟也就越大

      • 聚集的传输请求接近总线容量时,总线成为瓶颈

  • 双总线结构1

    • 在CPU和存储器中间增加一个存储器总线
    • 增加CPU和存储器之间的传输效率
  • 双总线结构2

    • 将系统总线分为存储器总线、I/O 总线IOP (input/output processer)
    • 降低I/O对总线的负担
  • image-20221205000947107

  • 多总线结构1

    • 增加一个 本地总线(local bus)来连接 CPU 和 cache
    • image-20221205001159332
  • 多总线结构2

    • 将系统总线分为存储器总线、I/O 总线和 DMA 总线
    • image-20221205001149715
  • 多总线结构3

    • 增加一个 高速 I/O 总线 来连接高速设备

    image-20221205001315388

查看评论