总线

本文参考《计算机组成原理(第2版)》(唐朔飞)

总线的基本概念

  • 总线是信息传输的多个部件所互连的一组公共信号通路和计算机系统的互连机构 (总线实际上由许多传输线或通路组成,每条线可一位一位地传输二进制代码)
    • 作用:在争用总线的基础上,按系统约定分时为计算机各部件进行数据地址控制信号的发送和接收等服务
      • 在某一时刻,只允许一个部件向总线发送信息,而多个部件可同时从总线接收相同信息
      • 计算机中与总线相连的输出部件均为三态缓冲器

总线分类

传输方式 分类

  • 并行总线:多条线同时传递所有的二进制数位。速度快,结构复杂。计算机部件之间大量采用
  • 串行总线:多位二进制信息公用一位信号线传递。速度慢,但结构简单。部件之间距离较远时,用串行总线可降低成本,提高可靠性

总线位置 分类

  • 内部总线:CPU 内部连接各寄存器及运算部件之间的总线
  • 系统总线:计算机各高速部件(或主板上的各部件)之间的信息传输线
    • 数据总线双向传输,数据总线宽度 (数据总线的位数,即为 机器位数) 与机器字长、存储字长有关
      在这里插入图片描述
    • 地址总线单向传输,主要用来指出数据总线上的的源数据或目的数据在 主存 或 I/O 设备上存储单元的地址。位数与存储地址、 I/O地址有关
      • 例如, 欲将某数据写入存储器,则CPU除了需将数据送到数据总线外,还需将欲写入的存储器的地址送到地址总线上
        在这里插入图片描述
    • 控制总线:控制总线是用来发出各种控制信号的传输线
      • 通常对单一控制线而言,它的传输是单向的。例如,存储器读/写命令或I/O设备读/写命令都是由CPU发出的;但对于控制总线总体来说,又可认为是双向的。例如,当某设备准备就绪时,便向CPU发中断请求。因此对 CPU 而言,控制信号既有输出,又有输入
        在这里插入图片描述
  • I/O总线:用于 CPU 与中低速的外部设备、计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信。也称通信总线外部总线

总线结构

  • 总线组成:信号线、总线控制器、收/发电路、转换器等
  • 系统总线的结构:
    • 单总线结构:将CPU、主存、I/O设备(通过I/O接口)都挂在一组总线上;结构简单便于扩充,I/O 设备与主存交换信息原则上不会影响CPU,但所有部件连到单一总线,会增加冲突率,成为瓶颈,影响整机性能。因此多被小型或微型计算机采用
      在这里插入图片描述
    • 以 CPU 为中心的双总线结构:一组总线连接CPU和主存,称为存储总线(M总线);另一组用来建立CPU和各I/O设备之间交换信息的通道,称为 I/O 总线;这种结构增加 I/O 设备方便,但是 I/O 设备与主存交换信息需要通过 CPU,会影响 CPU 效率
      在这里插入图片描述
    • 以存储器为中心的双总线结构:存储总线速度高,只供主存与 CPU 之间传输信息。既提高了传输效率,又减轻了系统总线的负担,还保留了 I/O 设备与存储器交换信息时不经过CPU的特点
      在这里插入图片描述
    • 多总线结构:将速率不同的 I/O 设备进行分类,然后将它们连接在不同的通道上
      在这里插入图片描述
      • 共享总线架构 (shared bus architecture) 表示多个设备使用一些相同的导线传输数据。因此, 当多个设备同时需要发送数据时, 需要仲裁器决定哪个设备可以使用总线。PCIe 恰好相反, 它使用分离的端到端的链路
      • 传统 PCI 使用并行总线架构;PCIe 使用串行总线架构,这样做简单了很多,因为不用再确保所有32位在同一时刻精确地到达目的地。通过将多个数据通路并行起来,并行性仍可有效利用。例如, 可以使用32个数据通路并行传输32条消息

总线性能指标

  • 总线宽度:并行传输数据的位数,即数据总线的根数
  • 总线带宽:总线本身所能达到的最高数据传输速率 (MBps)
    总 线 带 宽 = 总 线 宽 度 × 总 线 频 率 总线带宽 = 总线宽度×总线频率 线=线×线 例如 ,总线工作频率为 33 M H z 33 MHz 33MHz, 总线宽度为 32 32 32 位, 则总线带宽为 33 × ( 32 / 8 ) = 132 M B p s 33\times(32/8) =132MBps 33×(32/8)=132MBps
  • 时钟同步/异步:总线上的数据与时钟同步的称为同步总线,与时钟不同步的称为异步总线
  • 总线复用:一条信号线上分时传送两种信号
  • 信号线数:地址总线、数据总线和控制总线三种总线数的总和
  • 总线控制方式:包括突发工作、自动配置、仲裁方式等。

总线控制

  • 由于总线上连接着多个部件,何时由哪个部件发送信息,如何定时,如何防止信息丢失,如何避免多个设备同时发送,如何规定接收部件等问题都需要总线控制器统一管理,主要包括总线的判优控制仲裁逻辑)和通信控制

总线判优控制

总线上所连接的各设备,按其对总线有无控制功能分为主设备(模块)和从设备(模块)

  • 主设备对总线有控制权由它启动总线信息传送
  • 从设备只能响应从主设备发来的总线命令,对总线没有控制权
  • 多个主设备要同时使用总线时,由总线控制器判优、仲裁,按一定的优先等级顺序确定哪个主设备能使用总线

总线判优控制

  • 集中式:将控制逻辑集中在一处(如在 CPU 中)
    常见的集中控制优先权仲裁方式有:链式查询计数器定时查询独立请求方式
  • 分布式:将控制逻辑分散在与总线连接的各个部件或设备上

链式查询

在这里插入图片描述

  • 如图所示,控制总线中有 3 根线用于总线控制( B S BS BS 总线忙、 B R BR BR 总线请求、 B G BG BG 总线同意)
  • 总线同意信号 B G BG BG 是串行地从一个 I/O 接口送到下一个 I/O 接口。如果 B G BG BG 到达的接口有总线请求, B G BG BG 信号就不再往下传,意味着该接口获得了总线使用权,并建立总线忙 B S BS BS 信号,表示已占用总线 (总线忙信号是由 获取总线控制权的设备 建立的)
  • 可见在链式查询中,离总线控制部件最近的设备具有最高的优先级。只需很少几根线就能按一定优先次序实现总线控制,并且很容易扩充设备,但对电路故障很敏感,且优先级别低时设备可能很难获得请求

计数器定时查询

在这里插入图片描述

  • 多了设备地址线,少了 B G BG BG 线
  • 总线上多个设备通过总线请求信号 B R BR BR 发出请求,中央仲裁器接收到请求信号后,在总线忙信号 B S BS BS 为 “0”的情况下,让计数器开始计数,计数值通过一组地址线发往各设备。每个设备有一个地址判别电路,如果地址线上的计数值与总线请求设备地址一致,则该设备对 B S BS BS 线置“1”,表示该设备获得了总线使用权,同时中止计数查询
  • 这种方式的特点是计数可以从 0 开始,此时一旦设备的优先次序被固定,设备的优先级就按 0 , . . . , n 0,...,n 0,...,n 的顺序降序排列,而且固定不变;计数也可以从上一次计数的终止点开始,即一种循环方法,此时设备使用总线的优先级相等;计数器的初始值还可由程序设定,故优先次序可以改变
  • 这种方式对电路故障不如链式查询方式敏感,但增加了控制线(设备地址)数,控制也较复杂
  • 总线使用权确定:约 2 + l o g 2 n 2+log_2n 2+log2n 根线, n n n 为允许的最多设备数。

独立请求方式

在这里插入图片描述

  • 每个连接到总线的设备都有一组单独的总线请求信号 B R i BR_i BRi 与总线授权信号 B G i BG_i BGi。每个设备请求使用总线时,它们各自发出自己的总线请求信号。中央仲裁器中设置了一个专门的排队电路,由它根据一定的优先次序决定优先响应哪个设备的请求,然后给该设备总线授权信号 B G i BG_i BGi
  • 总线使用权确定: 2 n + 1 2 n+1 2n+1 根线(一根公用的 “总线占用” 线), n n n 为允许的最多设备数。
  • 响应速度快(集中式总线仲裁中,独立请求的响应速度最快),优先次序控制灵活(通过程序改变)

分布仲裁方式

  • 分布式仲裁不需要中央仲裁器,而是让各个主设备功能模块都有自己的仲裁号和仲裁电路。需要使用总线时,各个设备的功能模块将自己唯一的仲裁号发送到共享的总线上,各自的仲裁电路再将从仲裁总线上获得的仲裁号和自己的仲裁号相对比,获胜的仲裁号将保留在仲裁总线上,相应设备的总线请求获得响应
  • 与集中式总线仲裁相比,分布式总线仲裁方式要求的总线信号更多、控制电路也更复杂,但它能够有效地防止总线仲裁时间上的浪费

总线通信控制 (定时)

定时:指事件出现在总线上的时间关系


  • 众多部件共享总线,在争夺总线使用权时,应按各部件的优先等级来解决。
  • 在通信时间上,则应按分时方式来处理,即以获得总线使用权的先后顺序分时占用总线

通常将完成一次总线操作的时间称为总线周期,可分为以下 4 个阶段

  • 申清分配阶段:由需要使用总线的主模块提出申请,经总线仲裁机构决定下一传输周期的总线使用权授予某一申请者
  • 寻址阶段:取得了使用权的主模块通过总线发出本次要访问的从模块)的地址及有关命令,启动参与本次传输的从模块
  • 传数阶段:主模块和从模块进行数据交换,数据由源模块发出,经数据总线流入目的模块
  • 结束阶段:主模块的有关信息均从系统总线撤除,让出总线使用权

对于仅有一个主模块的简单系统,无须申请分配和撤除,总线使用权始终归它占有。对于包含中断、DMA 控制或多处理器的系统,还需要有其他管理机构来参与

同步通信 (同步定时方式)

  • 以时钟周期为划分时间段的基准,要求所有的模块由统一的时钟脉冲进行操作的控制
  • 各模块的所有动作均在时钟周期的开始产生,并且多数动作在一个时钟周期内完成

同步方式数据输入

在这里插入图片描述

  • 总线传输周期 是连接在总线上的两个部件完成一次完整且可靠的信息传输时间,它包含4个时钟周期 T 1 , T 2 , T 3 , T 4 T_1,T_2,T_3,T_4 T1,T2,T3,T4
  • CPU 在 T 1 T_1 T1 上升沿发出地址信息;在 T 2 T_2 T2 的上升沿发出读命令,与地址信号相符合的输入设备按命令进行一系列内部操作,且必须在 T 3 T_3 T3 的上升沿到来之前将 CPU 所需的数据送到数据总线上, CPU 在 T 3 T_3 T3 时钟周期内,将数据线上的信息送到其内部寄存器中; CPU 在 T 4 T_4 T4 的上升沿撤销读命令,输入设备不再向数据总线上传送数据,撤销它对数据总线的驱动。如果总线采用三态驱动电路,则从 T 4 T_4 T4 起,数据总线呈浮空状态
  • 同步通信在系统总线设计时,对 T 1 , T 2 , T 3 , T 4 T_1,T_2,T_3,T_4 T1,T2,T3,T4 都有明确、唯一的规定。对于读命令,传输周期如下:
    • T 1 T_1 T1 :主模块发地址
    • T 2 T_2 T2 :主模块发读命令
    • T 3 T_3 T3 :从模块提供数据
    • T 4 T_4 T4 :主模块撤销读命令,从模块撤销数据
  • 注意:
    在这里插入图片描述

同步方式数据输出
在这里插入图片描述
对于写命令,传输周期如下:

  • T 1 T_1 T1 :主模块发地址
  • T 1.5 T_{1.5} T1.5 :主模块提供数据
  • T 2 T_2 T2 :主模块发写命令,从模块接收到命令后,必须在规定时间内将数据总线上的数据写到地址总线所指明的单元中
  • T 4 T_4 T4 :主模块撤销写命令和数据等信号

同步定时的主要特点

  • 较高的传输频率
  • 同步定时适用于总线长度较短各功能模块存取时间比较接近的情况
  • 由于同步总线必须按最慢的模块来设计公共时钟,当各功能模块存取时间相差很大时,会使总线效率降低


假设总线的时钟频率为 100 MHz, 总线的传输周期为4个时钟周期,总线的宽度为32位,试求总线的数据传输率,若想提高一倍数据传输率,可采取什么措施?

  • 总线时钟频率为 100 MHz , 因此 1个时钟周期为 1 / 100 M H z = 0.01 μ s 1/100 MHz =0.01μs 1/100MHz=0.01μs,总线传输周期为 0.01 μ s × 4 = 0.04 μ s 0.01μs\times 4 =0. 04μs 0.01μs×4=0.04μs。由于总线的宽度为 32 32 32 位 = 4 B 4 B 4B(字节),故总线的数据传输率为 4 B / 0.04 μ s = 100 M B p s 4 B/0.04μs = 100 MBps 4B/0.04μs=100MBps
  • 若想提高一倍数据传输率,可以在不改变总线时钟频率的前提下,将数据线的宽度改为 64 位,也可以仍保持数据宽度为 32 位,但使总线的时钟频率常加到 200 M H z 200 MHz 200MHz

异步通信 (异步定时方式)

  • 异步通信允许各模块速度的不一致性,是一种应答方式或者互锁机制的定时方式,操作的发生由主设备或从设备的的特定信号来确定
  • 一个事件出现在总线上的时刻取决于前一个事件的发生,双方互相提供联络信号
    • 非时钟定时,没有公共的时钟标准
    • 采用握手协议应答方式)。当主模块发出请求(Request)信号时, 一直等待从模块反馈回来 “响应"(Acknowledge)信号后,才开始通信。当然,这就要求主、从摸块之间增加两条应答线(握手交互信号线Handshaking)

异步总线操作可采用箭头表示事件起始和结束的因果(即应答)信号的关系。一般将异步应答关系分为不互锁、半互锁和全互锁三种类型

在这里插入图片描述

不互锁方式
  • 设备1 (主模块) 发出请求信号后不必等接到设备2 (从模块) 的回答信号,而是经过一段时间后就认定设备2收到了请求信号,并撤销请求信号
  • 设备2在接到请求信号后,在条件允许时发出回答信号,并且经过一段时间(这段时间的设置对不同设备而言是不同的)确认主模块已收到回答信号后,自动撤销回答信号
  • 可见通信双方并无互锁关系

在这里插入图片描述

半互锁方式
  • 设备1发出请求信号后,必须待接到设备2的回答信号后才撤销请求信号,有互锁关系
  • 设备2在接到请求信号后,发出回答信号,但不必等待设备1的请求信号撤销,而是隔一段时间便自动撤销回答信号

在这里插入图片描述

全互锁方式
  • 设备1发出请求信号后,必须等设备2回答后才撤销请求信号
  • 设备2发出回答信号,也必须等到获知设备1的请求信号已撤销后,再撤销其回答信号
  • 双方存在互锁关系
    在这里插入图片描述
异步定时方式特点
  • 优点:总线周期长度可变,不把响应时间强加到功能模块上,因而允许快速和慢速的功能模块都能连接到同一总线上
    • 异步定时通信允许各部件速度不一致,没有统一的时钟周期划分,而采用应答方式互锁机制实现总线的操作,所需时间视需要而定,有灵活性
    • 异步操作的发生由通信双方互相提供联络信号,某一个事件出现在总线上的时刻取决于前一个事件的发生
  • 缺点:增加总线的复杂性和成本

  • 异步串行通信的数据传送速率用波特率来衡量。波特率是指单位时间内传送二进制数据的位数,单位用 b p s bps bps 表示,记作波特
  • 由于异步串行通信字符格式中包含若干附加位,如起始位、终止位、校验位… 若只考虑有效数据位,可用比特率来衡量异步串行通信的数据传输速率,即单位时间内传送二进制有效数据的位数,单位用 b p s bps bps

在这里插入图片描述


在异步串行传输系统中,假设每秒传输120个数据帧,其字符格式规定包含1个起始位、7个数据位、1个奇校验位、1 个终止位,试计算波特率

一帧包含 10 位,故波特率为 10 × 120 = 1200 b p s = 1200 波 特 10\times120=1200 bps=1200波特 10×120=1200bps=1200


画图说明用异步串行传输方式发送8位十六进制数据 95 H 95H 95H。耍求字符格式为:1位起始位、8位数据位、1位偶校验位、1位终止位

在这里插入图片描述


  • 为了提高速度,将异步串行传送中的附加位去掉,就可以采用同步传送,在同步传送时,数据块开始处要用同步字符SYN来指明

在这里插入图片描述

半同步通信

  • 半同步通信既保留了同步通信的基本特点,如所有的地址、命令数据信号的发出时间,都严格参照系统时钟的某个前沿开始,而接收方都采用系统时钟后沿时刻来进行判断识别
  • 同时又像异步通信那祥,允许不同速度的模块和谐地工作
  • 为此增设了一条 等待响应信号线 W A I T ‾ \overline{WAIT} WAIT),采用插入时钟(等待)周期的措施来协调通信双方的配合问题

  • 仍以输入为例,在同步通信中,主模块在 T 1 T_1 T1 发出地址,在 T 2 T_2 T2 发出命令,在 T 3 T_3 T3 传输数据,在 T 4 T_4 T4 结束传输
  • 倘若从模块工作速度较慢,无法在 T 3 T_3 T3 时刻提供数据,则必须在 T 3 T_3 T3 到来前通知主模块,给出 W A I T ‾ \overline{WAIT} WAIT(低电平)信号。若主模块在 T 3 T_3 T3 到来时刻测得 W A I T ‾ \overline{WAIT} WAIT 为低电平,就插入一个等待周期 T W T_W TW(其宽度与时钟周期一致),不立即从数据线上取数。若主模块在下一个时钟周期到来时刻又测得 W A I T ‾ \overline{WAIT} WAIT 为低,就再插入一个 T W T_W TW 等待,这样一个时钟周期、一个时钟周期地等待,直到主模块测得 W A I T ‾ \overline{WAIT} WAIT 为高电平时,主模块即把此刻的下一个时钟周期当作正常周期 T 3 T_3 T3, 即时获取数据,在 T 4 T_4 T4 结束传输

在这里插入图片描述

  • 半同步通信控制方式比异步通信简单,适用于系统工作速度不高但又包含了由许多工作速度差异较大的各类设备组成的简单系统

分离式通信

以上三种通信方式都是从主模块发出地址和读写命令开始,直到数据传输结束,在整个传输周期中,系统总线的使用权完全由占有使用权的主模块和由它选中的从模块占用。进一步分析读命令传输周期,发现除了串请总线外,其余时间主要花费在如下3个方面:

  • 主模块通过传输总线向从模块发送地址和命令
  • 从模块按照命令进行读数据的必要准备
  • 从模块经数据总线向主模块提供数据

对系统总线而言, 从模块内部读数据过程并无实质性的信息传输,总线纯属空闲等待。为了克服和利用这种消极等待,充分挖掘系统总线每瞬间的潜力,人们提出了“分离式”的通信方式

  • 基本思想是将每个总线传输周期分为两个子周期
    • 子周期1:
      • 主模块在获得总线使用权后,将命令、地址以及其他有关信息,包括该主模块编号(当有多个主模块时,此编号尤为重要)发到系统总线上。经总线传输后,由有关的从模块接收下来
      • 主模块向系统总线发布这些信息只占用总线很短的时间, 一且发送完,立即放弃总线使用权,以便其他模块使用
    • 子周期2:
      • 从模块收到主模块发来的有关命令信号后,经过一系列内部操作,将主模块所需的数据准备好,使由从模块串请总线使用权,一且获准,从模块使将主模块的编号、从模块的地址、主模块所需的数据等一系列信息送到总线上,供主模块接收
    • 上述两个传输子周期都只有单方向的信息流,每个模块都变成了主模块

分离式通信的特点

  • 各模块均有权申请占用总线
  • 在得到总线使用权后,主模块在限定的时间内向对方传送信息,采用同步方式传送,不再等待对方的回答信号,省去了握手开销
  • 各模块准备数据时,不占用总线资源
  • 总线无空闲等待时间,提高了利用率

总线操作

  • 读和写
    • 读:将从设备(如存储器)中的数据读出并经总线传输到主设备(如CPU)
    • 写:主设备到从设备的数据传输过程
  • 块传送
    • 突发 (猝发) 传输:一次总线事务中,主设备只需给出一个首地址,从设备就能从首地址开始的若干连续单元一个一个地读出或写入多个固定长度的数据


某同步总线的时钟频率为100MHz,宽度为32位,地址/数据线复用,每传输一个地址或数据占用一个时钟周期。若该总线支持突发(猝发)传输方式,则一次“主存写”总线事务传输128位数据所需要的时间至少是多少?

总线宽度为32位,传输128位数据需要1个地址期,4个数据期,因此至少需要 50ns

总线标准

总线标准

  • 是系统与各模块、模块与模块之间的一个互连的标准界面
  • 这个界面对它两端的模块都是透明的,即界面的任一方只需根据总线标准的要求完成自身一方接口的功能要求,而无须了解对方接口与总线的连接要求。因此,按总线标准设计的接口可视为通用接口
  • 有利于保证总线性能充分发挥、兼容性等
  • 符合某种标准的总线称为标准总线

系统总线

  • ISA----工业标准体系(Industry Standard Architecture),它是最早出现的微型计算机总线标准,应用在IBM的AT机上
  • EISA----扩展工业标准体系(Extended Industry Standard Architecture),主要用于286微机。EISA对ISA完全兼容
  • PCI----外围设备互联(Peripheral Component Interconnection)
    • PCI 局部总线是高性能的 32 位或 64 位总线
    • 具有良好的兼容性,与 ISA、EISA 总线均可兼容
    • 它是专门为高集成度的外围部件、扩充插板和处理器/存储器系统而设计的互连机制
    • PCI-X、PCI-Express

设备总线

  • SCSI----(Small Computer System Interface),是一种高速总线,用在高速硬盘、扫描仪和其他需要较大带宽的设备上
  • RS-232C----(Recommended Standard-232C),是由美国电子工业协会EIA(Electronic Industries Association)推荐的一种串行通信总线标准
  • USB----(Universal Serial Bus)接口基于通用的连接技术,可实现外设的简单快速连接,以达到方便用户、降低成本、扩展微机连接外设范围的目的,可通过级联方式连接多台外设即插即用,支持热插拔;只能传送单比特数据
    • 即插即用所做的工作是, 系统自动地收集有关I/O设备的信息, 集中赋予中断级别和I/O地址, 然后通知每块卡所使用的数值
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值