目录
一、总线的基本概念
1.分散连接和总线连接
2.总线的特点和组成
二、总线的分类
1. 片内总线
2. 系统总线
3. 通信总线
三、总线结构
1. 单总线结构
2. 双总线结构
3. 三总线结构
四、总线的性能指标
五、总线标准
六、总线判优(总线仲裁)
1. 链式查询
2. 计数器定时查询
3. 独立请求方式
七、总线事务和总线周期
八、总线通信控制(总线定时)
1. 同步通信
2. 异步通信
3. 半同步通信
4. 分离式通信
一、总线的基本概念
1.分散连接和总线连接
计算机系统的五大部件之间的互连方式有两种,一种是各部件之间使用单独的连线,称为 分散连接; 另一种则是将各部件连到一组公共信息传输线上,称为 总线连接。
早期的计算机大多数用分散连接方式,以运算器为中心的结构,其内部连线十分复杂,尤其是当 I/O 与存储器交换信息时,都需经过运算器,致使运算器停止运算,严重影响了CPU的工作效率。
后来,虽然改进为以存储器为中心的分散连接结构,I/O 与主存交换信息可以不经过运算器,又采用了中断、DMA 等技术,使 CPU 工作效率得到很大的提高,但是仍无法解决I/O设备与主机之间连接的灵活性。
随着计算机应用领域的不断扩大,I/O 设备的种类和数量也越来越多,采用分散连接方式很难实现随时增添或减撤设备,而总线连接方式则可以解决这个问题。
总线是连接多个部件的信息传输线,是各部件共享的传输介质。
2.总线的特点和组成
当多个部件连接到总线上时,如果两个或两个以上部件同时向总线发送信息,就会导致信号冲突,传输无效。因此,在某一时刻,只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接收相同的信息。
所以,分时 和 共享 是总线的两个特点。
总线实际上是由许多传输线或通路组成,每条线都可以通过电信号传递一位二进制代码;对于一串二进制代码,可以在一段时间内一位一位传输完成。多条传输线,则可以同时传输多位二进制代码。
二、总线的分类
总线可以应用在各种场景,从不同角度可以有不同的分类方法。
-
按数据传送方式:并行传输总线 和 串行传输总线。
-
按传输数据宽度:在并行传输总线中,又可按宽度分为 8 位、16 位、32 位、64 位等传输总线。
-
按使用范围:计算机总线、测控总线、网络通信总线 等。
而更加常用的一种分类方式,则是按连接部件的不同,可以分为三类:片内总线、系统总线 和 通信总线。
1. 片内总线
片内总线是指芯片内部的总线,如在 CPU 芯片内部,寄存器与寄存器之间、寄存器与运算逻辑单元 ALU 之间,都是由片内总线连接的。
2. 系统总线
系统总线是指 CPU、主存、I/O 设备各大部件之间的 信息传输线。由于这些部件通常都安放在主板或各个插件板(插卡)上,故又称 板级总线或 板间总线。从物理上看,就是由许多导线直接印制在电路板上,延伸到各个部件。
在系统总线中,按系统总线传输信息的不同,又可分为三类:数据总线、地址总线 和 控制总线。
(1)数据总线
数据总线用来传输各功能部件之间的 数据信息,它是双向传输总线,其位数与机器字长、存储字长有关,一般为 8 位、16 位或 32 位。
数据总线的位数称为 数据总线宽度,它是衡量系统性能的一个重要参数。如果数据总线的宽度为 8 位,指令字长为 16 位,那么,CPU 在取指阶段必须两次访问主存。
(2)地址总线
地址总线主要用来指出数据总线上的源数据或目的数据在 主存存储单元的地址 或 I/O 设备的地址。
地址总线上的二进制码就是一个 地址,由 CPU 输出,单向传输。地址线的位数与存储单元的个数有关。
(3)控制总线
控制总线是用来发出各种 控制信号 的传输线。
由于数据总线、地址总线都是被挂在总线上的所有部件共享的,要使各部件能在不同时刻占有总线使用权,就需要依靠控制总线来完成分配和调度。
通常对任一控制线而言,它的传输是单向的。但对于控制总线总体来说,又可认为是双向的。例如,CPU 可以向主存、I/O 设备发出读/写控制信号,也可以接收外部设备发来的中断请求。
3. 通信总线
这类总线用于计算机系统之间,或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信。
通信总线通常按传输方式分为两种:串行通信 和 并行通信。
-
串行通信:是指数据在单条 1 位宽的传输线上,一位一位地按顺序分时传送。
-
并行通信:是指数据在多条并行的 1 位宽传输线上,同时由源传送到目的地。
并行通信适宜于近距离的数据传输,通常小于30m;串行通信适宜于远距离传送,可以从几米达数千公里。通信总线的数据传输速率一般都与距离成反比。
三、总线结构
总线结构通常可以分为 单总线结构 和 多总线结构。
1. 单总线结构
单总线结构将 CPU、主存、I/O 设备(通过I/O接口)都挂在一组总线上,允许 I/O 设备之间、I/O 设备与 CPU之间或 I/O 设备与主存之间直接交换信息。
这种结构简单,也便于扩充,但所有的传送都通过这组共享总线,因此极易形成计算机系统的瓶颈。
它也不允许两个以上的部件在同一时刻向总线传输信息,这就必然会影响系统工作效率的提高。这类总线多数被小型计算机或微型计算机所采用。
2. 双总线结构
双总线结构的特点是,将速度较低的 I/O 设备从单总线上分离出来,形成 主存总线 与 I/O总线 分开的结构。
中通道是一个具有特殊功能的处理器,CPU 将一部分功能下放给通道,让通道来统一管理 I/O 设备;这样就可以不经过 CPU,直接完成外部设备与主存储器之间的数据传送,其系统的吞吐能力可以相当大。这种结构大多用于大、中型计算机系统。
3. 三总线结构
如果继续将速率不同的 I/O 设备进行分类,然后将它们连接到不同的通道上,就可以进一步提升计算机的效率。这样就发展出了三总线结构。
主存总线用于 CPU 与主存之间的传输;I/O 总线供 CPU 与各类 I/O 设备之间传递信息;DMA 总线用于高速 I/O 设备(磁盘、磁带等)与主存之间直接交换信息。在三总线结构中,任一时刻只能使用一种总线。主存总线与 DMA 总线不能同时对主存进行存取,I/O 总线只有在 CPU 执行 I/O 指令时才能用到。
如果将高速缓存 Cache 的数据交换也考虑进来,又可以构建出不同的三总线结构,甚至可以进一步发展出四总线结构。
四、总线的性能指标
1.总线宽度
通常是指数据总线的根数,用 bit(位)表示,如 8 位、16 位、32 位、64 位(即 8 根、16 根、32 根、64 根数据总线)。
2. 总线带宽
总线带宽代表了总线的 数据传输速率,即单位时间内总线上传输数据的位数,通常用每秒传输信息的字节数来衡量,单位用 MB/s(兆字节每秒)表示。
例如,总线工作频率为 33 MHz,总线宽度为 32 位,则总线带宽为
3. 信号线数
地址总线、数据总线和控制总线三种总线数的总和。
4. 时钟同步/异步
总线上的数据与时钟同步工作的总线,称为 同步总线;与时钟不同步工作的总线称为 异步总线。
5. 总线复用
一条信号线上分时传送两种信号。
例如,通常地址总线与数据总线在物理上是分开的两种总线,地址总线传输地址码,数据总线传输数据信息。为了提高总线的利用率,可以让地址总线和数据总线共用一组物理线路,在这组物理线路上分时传输地址信号和数据信号,即为总线的多路复用。
6. 总线控制方式
包括突发工作、自动配置、仲裁方式、逻辑方式、计数方式等。
其中,突发传输方式也称为 猝发传输,指对于在主存中连续存放的数据,访问时只需要给出一个首地址,耗费一个时钟周期;然后每个数据传送各占一个时钟周期,不必再给出地址就可以传输多个连续的数据。这样就可以大大提升数据传输速率。
五、总线标准
总线标准,就是系统与各模块、以及各模块之间进行连接的一个标准界面。
这个界面对两端的模块来说,都是透明的,只需要按照总线标准完成自己的接口功能即可。这就使得计算机软硬件的接口设计更加通用和方便。
常见的总线标准有:
(1)ISA
ISA 总线也称 AT 总线,由 IBM 公司推出,用于早期的 8 位 / 16 位计算机。它使用独立的总线时钟,因此 CPU 的时钟频率可以更高,有利于 CPU 性能的提高。不过 ISA 总线没有总线仲裁的硬件逻辑,因此不支持多台主设备系统;而且数据传送必须通过 CPU 管理,传输效率不够高。
ISA 总线时钟频率为 8 MHz,最大传输率为 16 MBps,数据线 16 位,地址线 24 位。
(2)EISA
EISA 总线是一种在 ISA 基础上扩展的总线标准,与 ISA 完全兼容。EISA 总线从 CPU 中分离出了总线控制权,有效提升了传输效率;并且支持多个总线主控器和突发传输方式。
EISA 总线时钟频率为 8 MHz,最大传输率为 33 MBps,数据线 32 位,地址线 32 位。
(3)VESA(VL-BUS)
VESA 总线是由视频电子标准协会(Video Electronic Standard Association,VESA)提出的局部总线标准,由 CPU 总线演化而来。所谓 局部总线,是指不连接 CPU、而是为其它重要模块(比如显卡)提供直接相连的高速数据传输通道的总线。
VESA 总线时钟频率达 33 MHz,最大传输率达 133 MBps,数据线 32 位,并且可通过扩展槽扩展至 64 位。
(4)PCI
PCI(Peripheral Component Interconnect,外围部件互连)是 Intel 公司 90 年代提出的高性能局部总线标准,支持突发传输方式,兼容性好、支持即插即用。
PCI 总线提供了一个高速数据传输通道,自身采用 33 MHz 和 66 MHz 总线时钟,与 CPU 时钟频率无关,数据线为 32 位,且可扩展至 64 位。PCI 总线的数据传输速率为 132 MBps(33 MHz 时钟,32 位数据通路),可以升级至 528 MBps(66 MHz 时钟,64 位数据通路)。
之后 Intel 又推出了 PCI - Express(PCIe)总线,采用串行传输方式进一步提升了传输速率,最新版本的 PCIe 总线数据传输速率可达 8 GBps,已经成为如今应用最为广泛的总线标准。
(5)AGP
AGP(Accelerated Graphics Port,加速图形端口)是 Intel 公司推出的显卡专用局部总线标准,基于 PCI 2.1 版规范扩充修改而成。
AGP 总线采用点对点通道方式,以 66.7 MHz 的频率直接与主存相连,以主存作为帧缓冲器实现高速存取。AGP 的数据线为 32 位,最大数据传输速率为 266 MBps。此外 AGP 还采用了一种新技术,能在一个时钟信号的上下沿双向传输数据,这称为 ”双激励“ 技术,这样 AGP 实际的传输频率就达到了 133 MHz,最大传输速率增至 533 MBps。后来推出的 AGP 新版本,数据传输速率又有进一步的提升,可达 2.1 GBps。
不过随着 PCIe 的出现,AGP 总线的应用已经越来越少了。
(6)RS-232C
RS-232C 是由美国电子工业协会 EIA 推荐的一种串行通信总线标准,它是应用于串行二进制数据交换的数据终端设备(DTE)和数据通信设备(DCE)之间的标准接口。
RS-232C 命名中,”RS“ 指 ”Recommended Standard“(推荐标准),232 为标识号,C 表示修改次数。RS-232-C 总线标准设有25条信号线,包括一个主通道和一个辅助通道,一般用于 20m 以内的通信。
(7)USB
USB(Universal Serial Bus,通用串行总线)是 Compaq、Intel、IBM、Microsoft、DEC、NEC 和 Northern Telecom 七大公司联合推出的计算机串行接口总线标准,1996 年发布了 USB 1.0 版本。
USB 基于通用连接技术,做到了真正的即插即用,具有很强的连接和扩展能力,标准统一而且可以为外设提供 +5V 电源,给用户使用提供了极大方便。标准 USB 低速传输距离为 5m,通过 HUB 或中继器可达 30m。USB 1.0 的数据传输速率,采用普通无屏蔽双绞线时为 1.5 Mbps,采用带屏蔽双绞线可达 12 Mbps;USB 2.0 数据传输率可达 480 Mbps(60 MBps),USB 3.0 更是可以高达 5.0 Gbps(500 MBps)。
六、总线判优(总线仲裁)
总线上连接的各种设备,一些是对总线有控制权的,称为 主设备(主模块);另一类则对总线没有控制权,只能响应从主设备发来的命令,称为 从设备(从模块)。
总线上信息的传递都是由主设备发起的;当某个主设备需要占用总线向另一个设备发送信息时,首先需要发出 总线请求信号。如果多个主设备同时发出请求、希望占用总线,就需要一个专门的 总线控制器 来做出判断, 按照一定的优先级确定哪个主设备可以使用总线。这个过程就称为 总线判优,或者 总线仲裁。
总线判优的实现可以分为两种形式:
-
集中式:将控制逻辑集中在一处(比如 CPU 中);
-
分布式:将控制逻辑分散在与总线连接的各个部件或者设备上。
以集中式为例,常见的总线判优方式有以下三种。
1. 链式查询
顾名思义,链式查询的硬件连接方式就是将设备接口电路排成一条链,依次进行查询。原理跟中断判优的 ”链式排队器“ 类似。
上图中,控制总线中有 3 根线专门用于总线的控制:
-
BS(Bus State,总线状态):为 1 时表示 ”总线忙“,即总线已被占用;为 0 时表示 ”总线空闲“;
-
BR(Bus Request,总线请求):传递各设备接口电路发来的总线请求信号;
-
BG(Bus Grant,总线同意):由总线控制器经过总线判优之后、发出的允许某个设备使用总线的信号。
BG 信号是按照链式排列顺序,串行地依次向下传递的。
I/O 设备 0 的优先级最高,因此 BG 先到达 I/O 接口 0。如果这时接口 0 有总线请求,那么 BG 就不再向下传递,并且发出 ”总线忙“ BS 信号,表示设备 0 获得了总线使用权。如果接口 0 没有总线请求,则 BG 信号继续传递至 I/O 接口 1,依次查询判断。
可见,链式查询中,设备距离总线控制器 越近,优先级就 越高。
这种方式实现简单,很容易实现扩展;但对电路故障很敏感,而且优先级低的设备可能很难获取总线使用权。
2. 计数器定时查询
计数器定时查询的基本思路是,为每个设备定一个 设备地址,总线控制器中设置一个 计数器,按照设备地址号依次计数;当计数器的值是某个设备的地址时,该设备的总线请求就可以被响应、从而获取总线的使用权。
跟链式查询相比,计数器定时查询增加了一组 设备地址线,省去了总线同意信号线 BG。
当总线控制部件接收到 BR 上的总线请求时,如果当前总线没有被占用(BS = 0),那么就让计数器开始计数;并通过设备地址线,发出一组地址信号。如果地址线选中的设备,发出了总线请求信号,那么就可以获得总线使用权,此时计数器停止计数。
-
如果我们设定计数器每次都从 ”0“ 开始计数,那么设备的优先级就是按照地址 0,1,2,... 依次排列;
-
如果我们每次停止计数后不清零 、而是继续循环计数,那就相当于所有设备可以轮流占用总线、优先级相同;
-
如果我们通过程序来设置计数器的初始值,还可以灵活改变优先级;
这种方式对电路故障没有那么敏感,不过增加了控制线的数量(设备地址线一般有多条),控制也比较复杂。
3. 独立请求方式
这种方式更加直接,每个设备独立发出总线请求;总线控制器内设置排队电路,根据优先级单独向每个设备发送总线同意信号。
上图中,每个设备都有一对总线请求线 BR~i~ 和总线同意线 BG~i~ 。当某个设备要使用总线时,就通过自己的请求线发出请求信号;总线控制器通过内部的排队电路进行判优,决定响应哪一个设备的请求,发出对应的同意信号。
这种方式响应速度快,优先次序也可以通过程序设置灵活改变,但控制线数量更多、总线控制更加复杂。
对于 n 个设备的系统,要确定总线使用权属于哪个设备,链式查询只用了 2 条线(BR、BG);计数器定时查询则需要进行设备编址,大致需要 log2 n 条设备地址线和 1 条 BR 线;而独立请求方式则需要 2n 条线。
七、总线事务和总线周期
从一个设备发出总线请求、获取到总线使用权,到使用完成、将总线释放,这个完整的过程就是一次 总线操作,一般称为 总线事务。完成一次总线事务的时间,就称为 总线周期。
总线事务中包括一些具体操作,对应着总线周期中的不同阶段:
-
申请分配阶段:主设备发出 总线请求,经过总线控制器中总线仲裁机构的 判优,决定将总线使用权交给某个设备(申请者);
-
寻址阶段:取得使用权的主设备,通过总线发出要访问的从设备地址和有关命令,启动从设备;
-
传输阶段:主设备和从设备进行数据交换,数据从源模块发出,经数据总线流入目的模块;
-
结束阶段:系统总线上撤除主设备的有关信息,让出总线的使用权。
八、总线通信控制(总线定时)
在总线周期中,核心阶段是数据的传输。由于涉及到两个不同模块,因此双方在交换数据时什么时候传输开始、什么时候传输结束,以及如何进行协调配合,应该有一个统一的规则。这被称为 总线通信控制;因为主要涉及的是时间上的控制协调,所以也叫 总线定时。
总线通信控制通常有四种方式:同步通信、异步通信、半同步通信 和 分离式通信。
1. 同步通信
通信双方由统一时钟信号来控制数据传送,这种方式称为 同步通信。
时钟信号通常由 CPU 的总线控制部件发出,送到总线上的所有部件;也可以由每个部件各自的时序发生器发出,但必须由总线控制部件发出的时钟信号对它们进行同步。
-
优点:规定明确、统一,模块间的配合简单一致;
-
缺点:主、从模块时间配合属于强制性“同步”,必须在限定时间内完成规定的要求;并且对所有从模块都用同一限时,这就势必造成,对各不相同速度的部件而言,必须按最慢速度的部件来设计公共时钟,严重影响总线的工作效率,也给设计带来了局限性,缺乏灵活性。
同步通信一般用于总线长度较短、各部件存取时间比较一致的场合。
2. 异步通信
异步通信则没有公共的时钟标准,不要求所有部件严格的统一操作时间,而是采用 应答方式(又称 握手方式),当主模块发出 请求(Request)信号时,一直等待从模块反馈回来 “响应”(Acknowledge)信号后,才开始通信。
异步通信克服了同步通信的缺点,允许各模块速度的不一致性,给设计者充分的灵活性和选择余地。但要求主、从模块之间增加两条应答线(握手交互信号线),而且控制逻辑更加复杂,数据传输率也不及同步传输。
异步通信的应答方式,又可分为 不互锁、半互锁 和 全互锁 三种类型。
(1)不互锁方式
主设备发出请求信号后,不必等待接到从设备的响应信号,而是经过一段时间便撤销其请求信号;从设备接到请求信号后,发出响应信号,并且经过一段时间自动撤销响应信号。
可见通信双方完全独立,没有互锁关系。
(2)半互锁方式
主设备发出请求信号,必须等接到从设备的响应信号后,再撤销其请求信号,因此有互锁关系;
而从设备在接到请求信号后,发出响应信号,但不必等待主设备撤销请求信号,而是隔一段时间后自动撤销其响应信号:这两者之间没有互锁关系。
因此这种方式称为 半互锁方式。
(3)全互锁方式
主设备发出请求信号,必须等从设备回答后,再撤销其请求信号;
同样,从设备发出回答信号,必须等主设备撤销请求信号后,再撤销其回答信号。
双方存在互锁关系,所以称为 全互锁方式。
3. 半同步通信
半同步通信是同步通信和异步通信的结合。
半同步通信既保留了同步通信的基本特点,如所有的地址、命令、数据信号的发出时间,都严格参照系统时钟的某个前沿开始,而接收方都采用系统时钟后沿时刻来进行判断识别;同时又像异步通信那样,允许不同速度的模块和谐地工作,为此需要增设一条 “等待”(WAIT)响应信号线。
4. 分离式通信
分离式通信的基本思想是,将一个传输周期(或者总线周期)分解为两个子周期。
在第一个子周期,主设备 A 获取总线使用权后,将命令、地址及其它有关信息都发到系统总线上,经总线传输,由从设备 B 接收下来。这些信息的传输只占很短的时间,发送完后 A 立即放弃总线使用权,交给其它模块使用。
在第二个子周期,设备 B 接收到了 A 发来的所有信息,经过一系列内部操作,将 A 需要的数据准备好;此时便由 B 重新申请总线使用权,获准之后再进行数据传输。
这样,节省了等待 B 准备数据的时间,两个子周期中总线上都只有单向的信息流,两个设备都成为了主设备。