Loading... ## 总览 ![image-20241001140742184.png][1] ## 基本概念 ### 总线的定义 **总线**是一组能为多个部件**分时共享**的**公共信息传送线路**。 > 早期计算机外部设备少时大多采用分散连接方式,不易实现随时增减外部设备。为了更好地解决 I/O 设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。 ![image-20241001140855740.png][2] - 分时:同一时刻只允许有一个部件向总线发送信息。如果系统中由多个部件则它们只能分时地向总线发送信息。 - 共享:总线上可以挂接多个部件,各个部件之间互相交换的信息都可以通过这组线路分时共享。 ### 总线的特性 > 了解即可 1. 机械特性:尺寸,形状,管脚数,排列顺序等。 2. 电气特性:传输方向和有效的电平范围。 3. 功能特性:没跟传输线的功能 (地址,数据,控制) 。 4. 时间特性:信号的时序关系。 ### 总线的分类 ![image-20241001141524205.png][3] - **串行总线**:只有一根传输线,所有数据比特只能串行传输。 - 优点:只需要一条传输线,成本低廉,广泛用于长距离传输。应用于计算机内部时,可以节省布线空间。 - 缺点:再数据发送和接受的时候要进行拆卸和装配,要考虑串行 - 并行转换的问题。 - **并行总线**:有多跟传输线,可以同时发送多比特数据。 - 优点:总线的逻辑时序比较简单,电路实现起来比较容易。 - 缺点:信号线数量多,需要占用更多的布线空间;远距离传输成本高昂;由于工作频率较高时,并行的信号线之间会产生严重干扰, 对每条线等长的要求也越高,所以无法持续提升工作频率 (**并行总线不一定比串行总线快**) 。 - **片内总线**:芯片内部的总线,它是 CPU 芯片内部寄存器与寄存器之间、寄存器与 ALU 之间的公共连接线。 - **系统总线**:系统总线是计算机系统内各功能部件 ( CPU、主存、I/O 接口) 之间相互连接的总线。 按系统**总线传输信息内容**的不同,又可分为三类:**数据总线,地址总线和控制总线**。 1. **数据总线**用来传输各功能部件之间的数据信息,它是**双向传输总线**,其位数与**机器字长,存储字长**有关。 2. **地址总线**用来指出数据总线上的元数据或目的数据所在的贮存单元或 I/O 端口的地址,它是**单向**传输总线,地址总线的位数**与主存地址空间的大小有关**。 3. **控制总线**传输的是控制信息,包括 **CPU 送出的控制命令**和**主存 (或外设)** 返回 CPU 的**反馈信号**。 - **通信总线**:通信总线是用于计算机系统之间或计算机系统与其他系统 (如远程通信设备、测试设备) 之间信息传送的总线,通信总线也称为**外部总线**。 ### 系统总线的结构 - **单总线结构**:CPU ,主存,I/O 设备都连接在**一组**总线上,允许 I/O 设备之间,I/O 设备和 CPU 之间,或 I/O 设备与主存之间直接交换信息。 > 单总线并不是只有一根信号线,系统总线按传送信息的不同可以细分为地址总线,数据总线和控制总线。 ![image-20241008201111944.png][4] - 优点:结构简单,成本低,易于接入新的设备。 - 缺点:贷款地,负载重,多个部件只能争用唯一的总线,且不支持并发传送操作。 - **双总线结构**:双总线结构有两条总线,一条是**主存总线**,用于 CPU 、主存和通道之间进行数据 传送;另一条是 **I/O 总线**,用于多个外部设备与通道之间进行数据传送。 > 通道是具有特殊功能的处理器,能对 I/O 设备进行统一管理,用以平衡 I/O 设备和 CPU 之间的速度矛盾。通道程序存放在主存中。 ![image-20241008201522304.png][5] 支持突发 (猝发) 传送,即送出一个地址,可以收到多个连续地址的数据。 - 优点:将较低速的 I/O 设备从单总线上分离出来,实现存储器总线和 I/O 总线分离。 - 缺点:需要增加通道等硬件设备。 - **三总线结构**:三总线结构是在计算机系统各部件之间采用 3 条各自独立的总线来构成信息通路,这 3 条总线分别为**主存总线**、**I/O 总线**和直接内存访问 **DMA 总线**。 > DMA : Direct Memory Access,直接内存访问。 ![image-20241008201910670.png][6] - 优点:提高了 I/O 设备的性能,使其更快地响应命令,提高系统吞吐量。 - 缺点:系统工作效率较低,因为同时只能有一条总线工作。 - **四总线结构** (一般不考) ![image-20241008202226910.png][7] - 桥接器:用于连接不同的总线,具有数据缓冲,转换和公职功能。 - 靠近 CPU 的总线速度较快。 - 每级总线的设计都遵循总线标准 (大纲已删除) 。 ### 小结 ![image-20241008202424567.png][8] ## 总线的性能指标 1. 总线的**传输周期 (总线周期)** **一次总线操作所需的时间** (包括申请阶段、寻址阶段、传输阶段和结束阶段),通常由若干个总线时钟周期构成。 2. 总线的**时钟周期** 即机器的**时钟周期**。计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制。 > 大多数情况下,一个总线周期包含多个总线时钟周期;有的时候,一个总线周期就是一个总线时钟周期;有的时候,一个总线时钟周期可包含多个总线周期。 现代计算机中,总线时钟周期可能由桥接器提供。 3. 总线的**工作频率** 总线上各种操作的频率,为**总线周期的倒数**。 若总线周期 = N 个时钟周期,则总线的工作频率 = 时钟频率 / N。 实际上指一秒内传送几次数据。 4. 总线的**时钟频率** 即机器的时钟频率,为**时钟周期的倒数**。 若时钟周期为 T,则时钟频率为 1 / T。 实际上指**一秒内有多少个时钟周期**。 5. **总线宽度** 又称**总线位宽**,它是总线上**同时能够传输的数据位数**,通常是指**数据总线的根数**。如 32 根称为 32 位 (bit) 总线。 6. **总线带宽** 可理解为总线的**数据传输率**,即**单位时间内总线上可传输数据的位数**,通常用每秒钟传送信息的字节数来衡量,单位用字节 / 秒 (B / s) 表示。 > 总线带宽是指总线本身所能达到的**最高传输速率**,若需要计算**有效数据传输率**,需要用实际传输的数据量除以耗时。 7. **总线复用** 总线复用是指一种信号线在不同的时间传输不同的信息。可以使用较少的线传输更多的信息,从而节省了空间和成本。 ![image-20241008204343196.png][9] 8. **信号线数** 地址总线、数据总线和控制总线 3 种总线数的总和称为信号线数。 ## 总线仲裁 > 408 大纲已删除 总线是一种共享的资源,同一时刻只能有一个设备控制总线传输操作,可以有一个或多个设备从总线接收数据。 将总线上所连接的各类设备按其**对总线有无控制功能**分为: 1. **主设备**:获得总线控制权的设备。 2. **从设备**:被主设备访问的设备,只能响应从主设备发来的各种总线命令。 - 为什么要仲裁? 总线作为一种共享设备,不可避免地会出现同一时刻有多个主设备竞争总线控制权的问题。 - 总线仲裁的定义: 多个主设备同时竞争主线控制权时,以某种方式选择一个主设备优先获得总线控制权称为总线仲裁。 - 总线仲裁分类: - **集中仲裁方式**:链式查询方式、计数器定时查询方式、独立请求方式 - 分布仲裁方式 ### 集中仲裁方式 #### 链式查询方式 工作流程: 1. 主设备发出请求信号; 2. 若多个主设备同时要使用总线,则由总线控制器的判优、仲裁逻辑按一定的优先等级顺序确定哪个主设备能使用总线; 3. 获得总线使用权的主设备开始传送数据。 ![image-20241009004725290.png][10] > "总线忙" 信号的建立者是 获得总线控制权的设备。 - **优先级**:离总线控制器越近的部件,其优先级越高;离总线控制器越远的部件,其优先级越低。 - **优点**:链式查询方式优先级固定。 只需很少几根控制线就能按一定优先次序实现总线控制,结构简单,扩充容易。 - **缺点**:对硬件电路的故障敏感,并且优先级不能改变。 当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线。 #### 计数器查询方式 **结构特点**:用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根总线响应线 BG;它仍共用一根总线请求线。 ![image-20241009005127038.png][11] **优点**: 1. 计数初始值可以改变优先次序。 - 计数每次从“0”开始,设备的优先级就按顺序排列,固定不变; - 计数从上一次的终点开始,此时设备使用 总线的优先级相等; - 计数器的初值还可以由程序设置 2. 对电路的故障没有链式敏感。 **缺点**: 1. 增加了控制线数。 - 若设备有n个,则需 $\lceil log_2n \rceil$ 条控制线。 2. 控制相对比链式查询相对复杂。 #### 独立请求方式 结构特点:每一个设备均有一对总线请求线BRi和总线允许线 $BG_i$。 ![image-20241009005724383.png][12] **优点**: 1. 响应速度快,总线允许信号 BG 直接从控制器发送到有关设备, 不必在设备间传递或者查询。 2. 对优先次序的控制相当灵活。 **缺点**: 1. 控制线数量多。 若设备有n个,则需要 2n+1 条控制线。其中 +1 为 BS 线,用于设备向总线控制部件反馈是否正在使用总线。 2. 总线的控制逻辑更加复杂 #### 小结 ![image-20241009010119375.png][13] ### 分布仲裁方式 **特点**:不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线。 - 当设备有总线请求时,它们就把各自唯一的仲裁号发送到共享的仲裁总线上; - 每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较; - 如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号; - 最后,获胜者的仲裁号保留在仲裁总线上。 ## 总线操作和定时 ### 总线传输的四个阶段 1. **申请分配阶段**:由需要使用总线的主模块 (或主设备) 提出申请,经总线仲裁机构决定将下一传输周期的总线使用权授予某一申请者。也可将此阶段细分为**传输请求**和**总线仲裁**两个阶段。 2. **寻址阶段**:获得使用权的**主模块**通过总线**发出**本次要访问的**从模块的地址及有关命令**,启动参与本次传输的从模块。 3. **传输阶段**:主模块和从模块进行**数据交换**,可**单向或者双向**进行数据传送。 4. **结束阶段**:主模块的有关信息均从系统总线上**撤除**,让出总线使用权。 ### 总线定时 总现在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为**总线定时**。它的实质是一种协议或规则: - 同步通信 (同步定时方式) :由统一时钟控制数据传输。 - 异步通信 (异步定时方式) :采用应答方式,没有公共时钟标准。 - 半同步通信:同步,异步结合。 - 分离式通信:充分挖掘系统总线每个瞬间的潜力。 > 后两种了解即可。 #### 同步定时方式 同步定时方式是指系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。 - 若干个时钟产生相等的时间间隔,每个间隔构成一个总线周期。 - 在一个总线周期中,发送方和接收方可进行一次数据传送。 - 因为采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线传送周期开始。 读命令流程:假设 CPU 作为主设备,某个输入设备作为从设备; 1. CPU在T1时刻的上升沿给出地址信息。 2. 在 T2 的上升沿给出读命令 (低电平有效) ,与地址信息相符合的输入设备按命令进行一系列的内部操作,且必须在 T3 的上升沿来之前将 CPU 所需的数据送到数据总线上。 3. CPU 在 T3 时钟周期内,将数据线上的信息传送到其内部寄存器中。 若此时从设备无法在周期内给出数据,就会导致通信出错。 4. CPU 在 T4 的上升沿撤销读命令,输入设备不再向数据总线上传送数据,撤销它对数据总线的驱动。 ![image-20241009155907175.png][14] - **优点**:传送速度快,具有较高的传输速率;总线控制逻辑简单。 - **缺点**:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。 同步通信适用于**总线长度较短**及总线所接部件的**存取时间比较接近**的系统。 #### 异步定时方式 在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的 “握手” 信号来实现定时控制。 主设备提出交换信息的 “请求” 信号,经接口传送到从设备;从设备接到主设备的请求后,通过接口向主设备发出 “回答” 信号。 根据 “请求” 和 “回答” 信号的撤销是否互锁,分为以下3种类型: 1. **不互锁方式** > 速度最快,可靠性最差 主设备发出 “请求” 信号后,不必等到接到从设备的 “回答” 信号,而是经过一段时间,便撤销 “请求” 信号。 而从设备在接到 “请求” 信号后,发出 “回答” 信号,并经过一段时间,自动撤销 “回答” 信号。双方不存在互锁关系。 2. **半互锁方式** 主设备发出 “请求” 信号后,必须待接到从设备的 “回答” 信号后,才撤销 “请求” 信号,有互锁的关系。 而从设备在接到 “请求” 信号后,发出 “回答” 信号,但不必等待获知主设备的 “请求” 信号已经撤销,而是隔一段时间后自动撤销 “回答” 信号,不存在互锁关系。 3. **全互锁方式** > 可靠性最好,但速度最慢 主设备发出 “请求” 信号后,必须待从设备 “回答” 后,才撤销 “请求” 信号。 从设备发出 “回答” 信号,必须待获知主设备 “请求” 信号已撤销后,再撤销其 “回答” 信号。双方存在互锁关系。 优缺点: - **优点**:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行 信息交换,自动适应时间的配合。 - **缺点**:比同步控制方式稍复杂一些,速度比同步定时方式慢。 #### 半同步通信 统一时钟的基础上,增加一个“等待”响应信号 $\overline{WAIT}$ 。 ![image-20241009161231829.png][15] 通过统一节拍来同步控制,但可以控制每个总线周期内的节拍数。 #### 分离式通信 一个总线周期如下: (以输入数据为例) - 主模块发地址、命令 (使用总线) - 从模块准备数据 (**总线空闲**) - 从模块向主模块发数据 (使用总线) 分离式通信可以在从模块准备数据的时候将总线释放出来,供其他模块使用。因而分离式通信的总线周期如下: 1. 主模块申请占用总线,**使用完后放弃**总线的使用权。 2. 从模块申请占用总线,将各种信息送至总线上。 其特点如下: - 各模块均有权申请占用总线。 - 采用同步方式通信,不等对方回答。 - 各模块准备数据时,不占用总线。 - 可提高总线利用率。 ### 小结 ![image-20241009161816313.png][16] ## 总线设计标准 > 408 大纲已删除 总线标准是国际上公布或推荐的互连各个模块的标准,它是把各种不同的模块组成计算机系统时必须遵守的规范。按总线标准设计的接口可视为通用接口,在接口的两端,任何一方只需根据总线标准的要求完成自身方面的功能要求,而无须了解对方接口的要求。 根据总线在计算机系统中的位置,可分为 - **系统总线**:通常与 CPU 直接相连,用于连接 CPU 与北桥芯片、或 CPU 与主存等。 - **局部总线**:没有直接与 CPU 连接,通常是连接高速的北桥芯片,用于连接很多重要的硬件部件 (如显卡、声卡等) 。 - **设备总线、通信总线**:通常由南桥芯片控制,用于连接计算机与计算机,或连接计算机与外部 I/O 设备。 > 懒得写了,反正不考 XD [1]: https://blog.domineto.top/usr/uploads/2024/10/2880041111.png [2]: https://blog.domineto.top/usr/uploads/2024/10/1521338045.png [3]: https://blog.domineto.top/usr/uploads/2024/10/261611031.png [4]: https://blog.domineto.top/usr/uploads/2024/10/2617829555.png [5]: https://blog.domineto.top/usr/uploads/2024/10/1732347607.png [6]: https://blog.domineto.top/usr/uploads/2024/10/212289969.png [7]: https://blog.domineto.top/usr/uploads/2024/10/2997092535.png [8]: https://blog.domineto.top/usr/uploads/2024/10/959363655.png [9]: https://blog.domineto.top/usr/uploads/2024/10/2132686644.png [10]: https://blog.domineto.top/usr/uploads/2024/10/706562691.png [11]: https://blog.domineto.top/usr/uploads/2024/10/3711672413.png [12]: https://blog.domineto.top/usr/uploads/2024/10/2588174855.png [13]: https://blog.domineto.top/usr/uploads/2024/10/437269176.png [14]: https://blog.domineto.top/usr/uploads/2024/10/873532168.png [15]: https://blog.domineto.top/usr/uploads/2024/10/3020189821.png [16]: https://blog.domineto.top/usr/uploads/2024/10/3678027733.png 最后修改:2024 年 10 月 09 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏