博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Computer Organization笔记26】总线 bus :多个部件之间进行数据传送的共享通道,总线设计 - 总线仲裁、数据传输模式、提高总线性能
阅读量:2019 次
发布时间:2019-04-28

本文共 4663 字,大约阅读时间需要 15 分钟。

本次笔记内容:

P51 计算机组成原理(51)
P52 计算机组成原理(52)

我的计组笔记汇总:

视频地址:

幻灯片见我的 GitHub 仓库:

本节课幻灯片:

文章目录

主要教学内容

  • 总线概念
  • 总线分类
  • 总线组成
  • 设计总线的关键问题
    • 总线仲裁
    • 通信方式
  • 总线举例

处理器和其他组成部分的接口

  • 输入/输出系统设计受到多方面因素的影响(可扩展性,可恢复性等)
  • 性能
    • 访问延迟
    • 吞吐量
    • 设备和系统的连接关系
    • 层次存储系统
    • 操作系统
  • 用户和应用也各不相同

什么是 bus?

  • 公共汽车:一种大众交通工具
  • 一组导线
  • 共同点: 多个使用者共享通道
    • 不再是点对点连接了
    • 所有的设备都共享控制信号

计算机总线

  • 共享的信息通道
  • 用于连接计算机多个子系统(部件)
  • 总线也是连接复杂巨系统的一种基本工具
    • 功能抽象

使用总线的好处

  • 解决外部设备“杂”的问题:
    • 容易增添新的设备(遵守总线传输协议即可)
    • 使用相同总线标准的外设容易在不同计算机间兼容(有了统一标准,可以生产细分了)
  • 降低成本:
    • 总线可供多个设备共享
  • 简化设计

总线的不足

  • 容易成为信息通道的瓶颈
    • 总线带宽限制了整条总线的吞吐量
  • 总线的最高速度(性能瓶颈)主要由下列因素决定:
    • 总线长度
    • 总线负载的设备数
    • 负载设备的特性
      • 延迟是否差异较大?
      • 数据传输率差异较大?

单总线计算机:主板总线

  • 使用一条总线:
    • 处理器和主存储器之间通信
    • 主存储器和输入/输出设备之间通信
  • 优点:简单、成本低
  • 缺点:速度慢,总线将成为系统瓶颈
  • 应用: IBM PC – ISA EISA、PDP-1

在过去,CPU性能不是很高(与外设相比),因此使用这种总线问题不明显。

双总线系统

  • 输入/输出总线通过适配器和处理器-主存总线相连:
    • 处理器-主存总线:主要用于处理器和主存储器之间的通信
    • 输入/输出总线:为输入/输出设备提供信息
  • 应用举例:
    • Apple Macintosh II
      • NuBus: 处理器、主存和选定的少量I/O设备
      • SCSI总线:其余I/O设备

三总线系统

  • 主板总线连接到处理器-主存总线:
    • 处理器-主存总线主要用于处理器和主存之间数据交换
    • I/O总线连接到主板总线
  • 优点:
    • 大大减少处理器-主存总线负载
  • 例:现代PC基本采用的结构

传统的x86计算机的总线

如上,低俗设备,连接到 PCI ,称之为南桥。

满足不同外部设备被挂到总线的差异。

新的i7处理器

新x86系统的总线连接

总线类型

  • 处理器-主存总线 (专用)
    • 传输距离短、速度高
    • 主存储器专用
      • 保证主存储器-处理器之间的高带宽
    • 直接和处理器连接
    • 优化处理使之适应Cache块传送
  • 输入/输出总线(行业标准)
    • 通常距离较长,速度较慢
    • 需要适应多种输入/输出设备
    • 和处理器-主存总线通过桥连接(或通过主板总线)
  • 主板总线(行业标准或专门设计)
    • 主板:连接各部件器件的底盘
    • 应允许处理器、主存储器和输入/输出设备互连
    • 应有价格优势:所有组件连接在一条总线上

总线的一般组成

控制线:

  • 总线请求信号及数据接收信号
  • 指明数据线上传输信息的类型

数据线(在源设备和目标设备间传送信息):

  • 数据和地址
  • 复杂的命令

总线标准

  • 设备用于人机交互
  • 总线定义了交互的通信协议/标准:
    • PCI
    • EISA
    • SCSI
    • USB
    • Bluetooth

标准十分重要:

  • 不同公司设计的外部设备,应该能在同一计算机上安装使用
  • 不同公司的计算机也应该可以使用某一外部设备
  • 外部设备的通讯速度差异很大
  • 标准是抽象的设计
  • 标准可以影响性价比,可靠性等

总线结构(标准的体现)

一次传输,叫做“事务”。

总线相关概念

  • 总线主设备:有能力控制总线,发起总线事务
  • 总线从设备:响应主设备请求
  • 总线通信协议:定义总线传输中的事件顺序和时序要求
  • 异步总线传输: 控制信号(请求,应答)作为总控信号
  • 同步总线传输:使用共同的时钟信号

主设备和从设备

总线事务包括两个部分:

  • 发起命令 (和地址)
  • 传输数据

主设备总线事务的发起者:

  • 发出命令(和地址)

从设备总线事务的响应者:

  • 若主设备发出的是读命令,则将数据发送到主设备
  • 否则,接收主设备发来的写入数据

仲裁:获得总线使用权

总线设计中重要问题之一:

  • 如何为需要使用总线的设备保留总线?

可通过主—从设备的安排来避免冲突:

  • 只允许总线主设备发起总线事务,控制所有总线请求
  • 从设备响应主设备的读写请求

最简单的设计:

  • 处理器作为唯一的总线主设备
  • 所有总线请求均由处理器控制
  • 主要缺点:处理器被卷入到每一个总线事务中

多个总线主设备

  • 总线仲裁的基本要求:
    • 某总线主设备使用总线前应发出总线请求
    • 只有得到授权后,主设备才能使用总线
    • 使用完毕后,主设备应通知仲裁器
  • 总线仲裁器在以下两方面取得平衡:
    • 优先权:优先级高的设备应该得到优先服务
    • 公平性:最低优先级的设备也不能永远被排除在总线服务之外
  • 总线仲裁方式:
    • 集中仲裁和分布仲裁
      • 集中仲裁: 例如,交通警察在路口指挥交通
      • 分布仲裁: 路口没有交通警察,所有车辆先停下,确认其他方向没有来车后通行
    • 按优先级仲裁或轮循仲裁
      • 优先级仲裁:例如,救护车在道路上有高优先级

总线仲裁方式

集中仲裁:

  • 菊链仲裁
    • 所有设备共用一个总线请求信号
  • 集中平行仲裁
    • 通过集中的仲裁器进行

分布仲裁:

  • 通过自我选择进行分布式仲裁
    • 每个要使用总线的设备将自己的标识放在总线上
  • 碰撞检测
    • 以太网

菊链仲裁

  • 优点:简单
  • 缺点:
    • 无法保证公平性:低优先级设备可能得不到总线使用权
    • 总线授权信号的逐级传递限制了总线的速度

集中平行仲裁

用于几乎所有处理器:主存总线和一些高速输入/输出总线

传输:同步和异步总线

同步总线:

  • 控制线中包含有一根时钟信号线
  • 传输协议根据时钟信号制定:
    • 例如:主设备提出总线请求后5个时钟周期,可以获得能否使用总线的信号。
  • 优点:逻辑简单、高速
  • 缺点:
    • 总线上所有设备必须按时钟频率工作
    • 为防止时钟信号扭曲,高速工作时,总线距离必须足够短

异步总线:

  • 不使用统一的时钟
  • 可适应设备的不同速度
  • 不用担心时钟信号扭曲,距离可较长(如打印机)
  • 使用握手协议

最简单的总线模式(同步)

  • 所有设备同步工作
  • 所有设备以同样的速度工作
  • => 简单的协议
    • 只需管理源和目标

简单的同步协议

就是处理器-主存储器总线也比它复杂:

  • 主存(从设备)需要响应时间
  • 需要控制数据速度

典型的同步协议

  • 从设备指示何时开始传送数据
  • 实际传送开始后,按总线时钟传送数据

同步定时

典型的异步协议(握手)

  1. 主存储器收到外部设备发出的 ReadReq 信号,从数据总线读到地址,并发出 Ack 信号。
  2. 外部设备发现 Ack 信号为高 =>释放 ReadReq 和数据
  3. 主存发现 ReadReq 信号为低,将 Ack 信号置低
  4. 主存读出数据后,将数据送总线,并将 DataRdy 置高
  5. 外部设备发现 DataRdy 为高,读数据,并发出 Ack 信号
  6. 主存发现 Ack 为高,将 DataRdy 拉低,并释放数据线
  7. 外部设备发现 DataRdy 为低,拉低 Ack 信号,指示传送结束

异步定时

增加总线带宽

增加总线的宽度

  • 可增加每个周期传送数据的量
  • 提高了成本

分别设置数据总线和地址总线

  • 可同时传送数据和地址
  • 提高了成本

采用成组传送方式

  • 一个总线事务传送多个数据
  • 每次只需要在开始的时候传送一个地址
  • 直到数据传送完毕才释放总线
  • 代价
    • 复杂度提高
    • 延长后续总线请求的等待时间

多主设备总线提高事务数量

  • 仲裁重叠
    • 在当前事务时,为下一总线事务进行仲裁
  • 总线占用
    • 在没有其他主设备请求总线的情况下,某主设备一直占用总线,完成多个总线事务
  • 地址、数据传送重叠
  • 在现代内存总线上,应用了上述全部技术

PCI总线

  • 外部组件互连总线
  • 时钟频率:33MHz或66MHz(CLK)
  • 集中仲裁方式(REQ#、GNT#)
    • 和上一事务重叠
  • 32位地址和数据线互用(AD)
    • V2.1 为64位
  • 总线协议
    • 总线周期:内存读、内存写、内存成组读等(C/BE#)
    • 地址握手和保持(FRAME#、IRDY#)
    • 数据宽度(C/BE# )
    • 通过IRDY#和TRDY#握手信号传输变长的数据块
  • 最大带宽达133MB(33MHz)或528MB(66MHz)

32位PCI总线的信号

PCI 总线的读/写事务

  • 所有信号在时钟正边沿采样
  • 集中平行仲裁
    • 和上一事务重叠
  • 所有事务可无限制成组传送
  • 地址段起始于FRAME#信号有效
  • 第一时钟周期主设备发出cmd和address
  • 数据传送
    • 当主设备准备好传输数据,主设备发出IRDY# 信号
    • 从设备准备好传输数据,发出TRDY#信号
    • 上述两个信号均有效时的时钟上升沿开始传送数据
  • 主设备准备结束数据传送时,将FRAME#信号失效

PCI 总线读事务

  • 总线主设备得到授权后,将FRAME#置为有效,开始读事务。并通过AD发送要读的地址,C/BE#发送读命令
  • 从设备从AD上识别是否被选中
  • 主设备释放对AD的控制,同时,在C/BE#上给出AD上哪些位是有用的(1~4Byetes)。并置IRDY#为有效,表示已准备好,可以接收数据。
  • 被选中的从设备置DEVSEL信号,表示已收到命令并可响应。将读出的数据送AD,并置TRDY#通知主设备接收
  • 主设备可在周期4读到第一个数据。并根据需要决定是否要改变C/BE#的值
  • 如果从设备的速度不高,则需要插入等待周期。
    主设备通过FRAME信号通知从设备结束数据传输,并将IRDY置高
    从设备相应地将TRDY和DEVSEL信号置高,总线返回到空闲状态

PCI写事务

PCI优化

  • 尽量使总线有效传输
    • 可采用类似RISC技术,仲裁和数据传输并行进行
  • 总线占用
    • 为上一主设备保留总线授权,直到有其他主设备申请使用总线
    • 得到授权的主设备可在不仲裁的情况下直接开始下一传送过程
  • 仲裁时长
    • 主设备和从设备尽力延长传输流(使用xRDY)
    • 从设备使用STOP (abort or retry)信号终止连接
    • 主设备通过FRAME信号终止连接
    • 仲裁器通过GNT信号终止连接
  • 延迟(挂起, 时段分离)事务
    • 对慢速设备,在请求后暂时释放总线

PCI的其它问题

中断:

  • 用于支持控制I/O设备

Cache一致性:

  • 用于支持I/O和多处理器

加锁:

  • 支持分时操作, I/O和多处理器

可配置地址空间

总线发展趋势

  • 逻辑总线,物理交换
  • 许多总线已采用新的点到点标准
    • 3GIO
    • PCI Express
    • Serial ADA

总线参数选择

选择 提高性能 降低成本
总线宽度 将地址和数据线分开 互用地址和数据线
数据宽度 越宽越快(32位) 越窄越廉价(8位)
大小 多字可减少总线开销 传送单字传送简单
主设备 多主设备(仲裁) 单主设备
时钟 同步 异步
协议 并行 串行

DMA使用内存总线的方式

独占使用:当外设要求传送一批数据时,由DMA控制器发一个信号给CPU。DMA控制器获得总线控制权后,开始进行数据传送。一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU。

周期挪用(周期窃取):当I/O设备没有 DMA请求时,CPU按程序要求访问内存:一旦 I/O设备有DMA请求,则I/O设备挪用一个或几个周期。(随时,一旦冲突,DMA优先)

DMA与CPU交替访内:一个CPU周期可分为2个周期,一个专供DMA控制器访内,另一个专供CPU访内。不需要总线使用权的申请、建立和归还过程。

转载地址:http://ptlxf.baihongyu.com/

你可能感兴趣的文章
秒杀的基本知识点,了解一下
查看>>
Linux如何在系统启动时自动加载模块
查看>>
链路层到网络层的数据传递
查看>>
vxworks
查看>>
软件测试用例的基本要素
查看>>
关于sprintf的一些东西(在stdio.h里)
查看>>
八皇后的思考(DFS)
查看>>
机器学习:SVM(基础理解)
查看>>
linux-脚本安装包
查看>>
linux-用户组管理命令
查看>>
自制“低奢内”CSS3登入表单,包含JS验证,请别嫌弃哦。
查看>>
fedora7 安装 oracle10g、
查看>>
SQL Server实现列的自动增长
查看>>
推荐系统 - 基于物品本身的特征来(分类)推荐- 步骤与进阶的knn
查看>>
vector clear 内部过程
查看>>
Linux/Ubuntu下的用户切换
查看>>
周海汉:标准模板库stl 容器的线程安全
查看>>
python写的本地搜索小工具
查看>>
編譯android原始碼到模擬器上執行
查看>>
[Android]ListView美化:去阴影、底色、选中色
查看>>