《计算机组织结构》期末复习-第13讲-总线

第13讲-总线

原文链接

总线概述

  1. 类型

    • 芯片内部总线:连接芯片内部的各个部分
      • 例:CPU 中连接寄存器、ALU 等部分
    • 系统总线:连接CPU 、存储器、IO 控制器和其他功能设备
    • 通信总线:连接主机和I/O 设备,或连接不同的计算机系统
  2. 总线结构

    • 数据线:在系统组件之间传输数据
      • 数据线的数量决定了一次可以传输的数据的大小
    • 地址线:在数据线和地址I/O 端口上指定数据的来源和去向
      • 地址线的数量决定了寻址空间的大小
    • 控制线:控制对数据线和地址线的存取和使用
    • 时钟(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 端口
image-20231215210246332
  1. 总线上数据传输的特点
    • 总线可以被多个设备监听,但同一时刻只能由一个设备发送数据
      • 如果同一时刻多个设备同时发送数据,会造成数据之间的混淆
      • 使用总线进行数据传输
        • 如果连在总线上的某个设备希望向另一个设备发送数据,需要:
          • 获得总线的使用权
          • 通过总线传送数据
        • 如果连在总线上的某个设备希望向另一个组件请求数据,需要:
          • 获得总线的使用权
          • 通过总线向另一个设备发送请求,等待另一个设备发送数据
    • 当总线在被使用过程中,其它设备不可以抢占

设计要素

  1. 用途:专用总线,复用总线

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

    • 平衡因素
      • 优先级:优先级高的设备优先被服务
      • 公平性:优先级最低的设备不能一直被延迟
    • 仲裁方案
      • 集中式(centralized):由仲裁器(arbiter)或总线控制器(bus controller)负责分配总线使用权
        • 链式查询/菊花链(daisy chain)
        • 计数器查询(query by a counter)
        • 独立请求(independently request)
      • 分布式(distributed):每个设备都包含访问控制逻辑,各设备共同作用分享总线
        • 自举式(self selection)
        • 冲突检测(collision detection)
    • 链式查询
      • 所有的设备都是串行连接的,并将允许信号从优先级最高的设备下发到优先级最低的设备。
      • 总线仲裁器收到请求后,在总线不忙的前提下,发起允许信号。
      • 如果某个设备收到了允许信号并且发起了总线请求,该设备将总线设置为繁忙状态,允许信号将不再被进一步传递。
      • 优点:确定优先级很简单;可以很灵活地添加设备。
      • 缺点:不能保证公平性;对电路故障敏感;限制总线的速度。
        ee7ff247291e6eb2fe3605d298a6306
    • 计数器查询
      • 将总线允许线替换为设备ID(地址)线
      • 当总线仲裁器收到总线请求信号,判断总线空闲时,计数器开始计数,计数值通过设备ID 线发向各个部件
      • 如果当前发送请求的设备ID 等于裁决器当前的计数,裁决器将停止计数,设备将总线设置为繁忙
      • 优点
        • 通过使用不同的初始计数,可以灵活地确定设备优先级
          • 强调优先级:从1 开始
          • 强调公平性:从下一个设备的ID 开始
          • 对电路故障不敏感
      • 缺点
        • 需要添加设备ID 线
        • 需要解码和比较设备ID 信号
        • 限制总线的速度
7b58c5908dbf8d0490b1137f3f1369f
  • 独立请求
    • 每个设备都有自己的总线请求线和总线允许线

    • 当一个设备请求总线时,它通过总线请求线将请求信号发送给总线仲裁器

    • 总线仲裁器决定哪个设备可以使用总线

      • 确定策略:固定优先级,公平链式,LRU,FIFO
    • 优点:快速响应;可编程的优先级

    • 缺点:复杂的控制逻辑;更多的控制线路

a45b0f7154ac47e6ea3bd4ea0b74939
  • 自举式
  • 固定优先级
  • 每个设备在其总线请求线上发送请求
    • 最低优先级的设备没有请求线
  • 每个设备自行判断自己是否在请求总线的设备中优先级最高
862036a6fe5287ef6b619355bd58ab3
  • 冲突检测
  • 当一个设备想要使用总线时,它会检查总线是否繁忙
    • 如果总线空闲,设备使用总线
  • 冲突:如果两个设备发现总线空闲,它们可能同时使用总线
    • 在传输数据时,设备会监听总线,检查是否存在冲突
    • 如果发生冲突,所有使用总线的设备将停止数据传输,并分别在随机时间间隔后再次请求总线
  1. 时序(timing)

    • 确定每个总线事务的开始和结束时间
    • 总线事务:地址+ 数据+ … + 数据
    • 同步时序:事件的发生由时钟决定
      • 优点:更容易实现和测试
      • 缺点:所有设备共享同一个时钟;总线长度受到时钟偏差的限制
    • 异步时序:一个事件的发生取决于前一个事件的发生(顺序)
      • 握手策略

      • 异步数据传输

        1. CPU设置地址并设置 ReadReq 线
        2. 存储器读取相应地址并设置Ack 线
        3. CPU释放地址线和ReadReq 线
        4. 存储器释放Ack 线
        5. 存储器将数据传到数据线并设置DataRdy 线
        6. CPU读取数据并设置Ack 线
        7. 存储器释放数据线和dataRdy 线 CPU 释放Ack 线
          8008a65b2bba709b69858ae51276bf4
      • 优点:可以灵活地协调速度不同的设备

      • 缺点:接口逻辑复杂;对噪声敏感(被误认为信号)

    • 半同步:同步时序和异步时序相结合
      • 为了减少噪声的影响,在异步计时中使用时钟
      • 准备和响应信号在时钟上升沿有效
      • 半同步通信集同步与异步通信之优点,既保留了同步通信的基本特点
        • 所有的地址、命令、数据信号的发出时间,都严格参照系统时钟的某个前沿开始,而接收方都采用系统时钟后沿时刻来进行判断识别。
        • 同时又像异步通信那样,允许不同速度的模块和谐地工作。为此增设了一条“等待”( )响应信号线。
      • 半同步时序的读命令
        • 主模块在T1发出地址,T2发出命令
        • 从模块工作速度较慢,无法在下一时钟周期时刻提供数据,则必须在T3之前通知主模块,使其进入等待状态,此刻,从模块置 WAIT ‾ \overline{\text{WAIT}} WAIT为低电平有效。主模块在测得 WAIT ‾ \overline{\text{WAIT}} WAIT有效,则不立即从数据线上取数。
        • 主模块等待,直到测得 WAIT ‾ \overline{\text{WAIT}} WAIT为高电平即等待无效时,主模块即把此刻的下一周期当作正常周期T3,即时获取数据,T4结束传输。
          img
      • 参考文章:总线的半同步通信-CSDN博客
    • 分离事务:设备准备数据期间释放总线
      • 将一个总线事件分离为两个过程
      • 优点:增加总线利用率
      • 缺点:增加每个总线事件的持续时间和系统复杂度
        e5dc9f1eaeedae7136286233700c9c2
  2. 总线带宽(bandwidth):总线的最大数据传输速率。不要考虑总线仲裁、地址传输等因素。

  3. 数据传输速率(data transfer rate):考虑地址传输、握手等因素。

    • 例题1:假设同步总线的时钟周期为50 ns,每次传输需要一个时钟周期,异步总线每次握手需要40 ns 。两个总线都是32 位宽,内存的数据准备时间为200 ns 。当从存储器中读出一个32 位的字时,计算两个总线的数据传输速率。

      • 同步总线
        • 发送指令和地址到内存:50ns
        • 内存准备数据:200ns
        • 将数据传输到CPU:50ns
        • 数据传输速率= 32bit / (50 + 200 + 50)ns = 106.7Mbps
      • 异步总线
        • 步骤1:40 ns
        • 步骤2 、3 、4 / 数据准备:max(40ns* 3,200ns) = 200ns
        • 步骤5 、6 、7:40ns * 3 = 120ns
        • 数据传输速率= 32bit / (40 + 200 + 120)ns = 88.9Mbps
    • 例题2:假设同步总线的时钟周期为50 ns,每次传输需要一个时钟周期,异步总线每次握手需要40 ns 。两个总线都是32 位宽,存储器的数据准备时间为230 ns 。当从存储器中读出一个32 位的字时,计算两个总线的数据传输速率。

      • 同步总线:数据传输速率= 32bit / (50 + 250 + 50)ns = 91.4Mbps
        • 数据准备时间是250,因为必须必须是完整的时钟周期
      • 异步总线:数据传输速率= 32bit / (40 + 230 + 120)ns = 82.1Mbps
    • 例题3:假设系统具有以下特征
      1.它支持访问大小为4 到16 个字(每个字32 位)的块
      2.同步总线具有64 位宽和200MHz 时钟频率,需要1 个时钟周期来传输地址或64 位数据
      3.在两个总线事务之间有2 个空闲时钟周期
      4.内存访问时准备前4 个字需要200ns,后面每4 个字准备需要20ns
      5.当前面的数据在总线上传输时,内存可以同时读取后面的数据
      如果读取256 个字,分别计算每次传输4 个字和16 个字时的数据传输速率、传输时间和每秒总线事务数

      • 每次传输4 个字
        • 总线事务:地址+ 4 个字
          • 地址传输:1 个时钟周期
          • 数据准备:200ns (40 个时钟周期)
          • 数据传输:2 个时钟周期
          • 空闲:2 个时钟周期
        • 总共:256 / 4 * (1 + 40 + 2 + 2) = 2880 个时钟周期
        • 传输时间= 2880 * 5ns = 14400ns
        • 每秒总线事务数= (256 / 4) * (1s / 14400ns) = 4.44M
        • 数据传输速率= 256 * 32bit / 14400ns = 568.9Mbps
      • 每次传输16 个字
        • 总线事务:地址+ 16 个字
          • 地址传输:1 个时钟周期
          • 数据准备(前4 个字):200ns(40 个时钟周期)
          • 数据传输:2 个时钟周期(同时读取后4 个字:20ns)
          • 空闲:2 个时钟周期
        • 总共:256 / 16 * (1 + 40 + 3*max(2, 4)+ 2 + 2) = 912 个时钟周期
        • 传输时间= 912 * 5ns = 4560ns
        • 每秒总线事务数= 16 * 1s / 4560ns = 3.51M
        • 数据传输速率= 256 * 32bit / 4560ns = 1796.5Mbps
    • 提高总线的数据传输率

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

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

      • 优点:简单,易于扩展
      • 缺点:连接的设备越多,总线长度越大,传输延迟也就越大;聚集的传输请求接近总线容量时,总线成为瓶颈
    • 双总线结构I

      • 在CPU 和存储器中间增加一个存储器总线
      • 优点:增加CPU 和存储器之间的传输效率,同时降低系统总线的负担
        9194fe1c796dde6aa125281c54a038c
    • 双总线结构II

      • 将系统总线分为存储器总线、I/O 总线和IOP (input/output)
      • 优点:降低I/O 对总线的负担
        a4017a70126bfc3ae01d13b8c418ac4
    • 多总线结构I

      • 增加一个本地总线(local bus bus)来连接CPU 和cache
      • 优点:分离了CPU 和I/O 的交互
        8ba12b322f24cb25b416dee800eb747
    • 多总线结构II

      • 将系统总线分为存储器总线、I/O 总线和DMA 总线
      • 优点:增加I/O 效率
    • 多总线结构III

      • 增加一个高速I/O 总线来连接高速设备
      • 优点:增加I/O 交互效率
d43da1decbed8bba82ae3b3f586a29d
  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值