计算机各个部件连接有2种方式:
- 分散连接(两两连接)
- 总线连接
但分散连接有许多缺点:
- 布线复杂性:由于存在大量的独立连接线路,系统的布线会变得复杂,增加了设计和维护的难度
- 资源竞争:如果系统中存在大量的分散连接,可能会导致连接资源的竞争,降低系统的性能
- 可扩展性差,增加新的模块难度大 所以现代计算机中更常用的是总线连接。
总线就是指信号的公共传输线,传输方式主要有2种: 总线连接可以采用不同的传输方式,具体取决于所连接的设备、系统的需求以及性能要求。以下是常见的总线连接传输方式:
- 并行总线:多个数据位同时通过总线传输。每个数据位都有自己的信号线,因此可以同时传输多个数据位。并行总线通常用于机器内部的连接和信息传输。
- 串行总线:多个数据位依次通过总线传输。数据位按照顺序传输,每个数据位都使用单独的信号线。串行总线通常用于机器间的连接和信息传输。
总线按照位置可以分为:
- 片内总线:总线位于cpu芯片内部,连接芯片内部各个模块
- 系统总线:连接计算机各个部件之间的总线,位于主板上。包括双向传输的数据总线、单向传输的地址总线以及控制总线
- 通信总线:提供设备之间或者计算机系统和其他系统的通信功能。位置取决于它所连接的设备和系统。既可以位于计算机主板上也可以位于连接到主板上的扩展卡上
系统总线的结构
- 单总线:所有的部件都连接到同一根总线上,结构简单,容易实现。但由于同一时间总线只能被一对设备使用,容易引起总线竞争和性能瓶颈
2. 双总线结构:
- 将速度较低的 I/O 设备从单总线上分离出来,形成主存总线与 I/O 总线分开的结构。通道是一个具有特殊功能的处理器,CPU 将一部分功能下放给通道,使其对 I/O 设备具有统一管理的功能,以完成外部设备与主存之间的数据传送
3. 三总线结构:
- 处理器与高速缓冲存储器 Cache 之间有一条局部总线,它将 CPU 与 Cache 或与更多的局部设备连接,Cahce 和主存都连接到系统总线上,而且 I/O 与主存之间的传输也不必通过 CPU,还有一条扩展总线将局域网、小型计算机接口、调制解调器以及串行接口等都连接起来。扩展总线由通过扩展总线接口与系统总线相连,由此实现这两种总线之间的信息传递。
4. 四总线结构
- 增加一条与计算机系统紧密相连的高速总线,在高速总线上挂接一些高速性能的外设,而一些低速的设备仍然挂在扩展总线上,将高速设备与低速设备进行分类组织,并由扩展总线接口与高速总线相连,使数据传输效率更高。
总线上的设备之间需要通信,其中需要解决的一个问题就是:总线的判优控制:谁能使用总线?
按其对总线有无控制功能可分为主设备和从设备两种。
- 主设备(模块):对总线有控制器
- 从设备(模块):响应从主设备发来的总线命令
总线判优控制可分为集中式和分布式两种,集中式又分为链式查询、计数器定时查询和独立请求方式三种
上图为链式查询,控制总线中有三根线用于总线控制(BS总线忙、BR总线请求、BG总线同意),其中总线同意信号 BG 是串行地从一个 IO 接口送到下一个 IO 接口。如果 BG 到达的接口有总线请求,BG 信号就不再往下传,意味着该接口获得了总线使用权,并建立总线忙 BS 信号,表示它占用了总线。可见在查询链中,离总线控制部件最近的设备具有最高的优先级。这种方式的特点是:只需银少几根线就能按一定优先次序实现总线控制,并且很容易扩充设备,但对电路故障很敏感。
上面为计数器定时查询,与链式查询相比,多了一组设备地址线,少了一根总线同意线BG。总线控制部件接到由 BR 送来的总线请求信号后,在总线未被使用(BS-0)的情况下,由计数器开始计数,向各设备发出一组地址信号。当某个有总线请求的设备地址与计数值一致时,便获得总线使用权,此时终止计数查询。这种方式的特点是:计数可以从“0”开始,此时设备的优先次序是固定的;计数也可以从终止点开始,即是一种循环方法,此时设备使用总线的优先级相等;计数器的初始值还可由程序设置,故优先次序可以改变。此外,对电路故障不如链式查询方式敏感,但增加了主控制线(设备地址)数,控制也较复杂
上图为独立请求方式,每一设备均有一对总线请求线 BRi 和总线同意线 BGi 。当设备要求使用总线时,便发出该设备的请求信号。总线控制部件中有一排队电路,可根据优先次序确定响应哪一设备的请求。这种方式的特点是:响应速度快,优先次序控制灵活(通过程序改变),但控制线数量多,总线控制更复杂。链式查询中仅用两根线确定总线使用权属于哪个设备,在计数查询中大致用 log2n 根线,其中 n 是允许接纳的最大设备数,而独立请求方式需采用 2n 根线。
除了总线判有控制。总线上的设备要通信还要解决的一个问题是:如何完成通信过程(总线通信控制,解决通信双方协调配合问题)?
总线的一次信息传输可分为4个阶段:
- 申请分配阶段:主模块提出申请,总线仲裁决定
- 寻址阶段:主模块向从模块给出地址和命令
- 传输阶段:主模块和从模块交换数据
- 结束阶段:主模块撤销有关信息
总线通信方式
- 同步通信
输入
T1:主模块发地址
T2:主模块发读命令
T3:从模块提供数据
T4:主模块撤消读命令
输出
T1:主模块发地址
T1.5:主模块提供数据
T2:主模块发出写命令,从模块接收到命令后,必须在规定时间内将数据总线上的数据写到地址总线所指明的单元中
T4:主模块撤消写命令和数据等信号
优点是规定明确、统一。模块间的配合简单一致。缺点是主从模块时间配合属性强制性 “同步” ,必须在限定时间内完成规定的要求。并且对所有从模块都用同一限时,这就势必造成对各不相同速度的部件而言,必须按最慢速度部件来设计公共时钟,严重影响总线的工作效率,也给设计带来了局限性,缺乏灵活性
- 异步通信
允许各模块速度的不一致性,没有公共的时钟标准,不要求所有部件严格的统一动作时间,而是采用应答方式(又称握手方式),即当主模块发出请求信号时,一直等待从模块反馈回来 “响应” 信息后,才开始通信。
分为不互锁,半互锁以及全互锁3种
不互锁:主模块发出请求信息后,不等待接到从模块的回答信号,而是经过一段时间,确认从模块已收到请求信息后,便撤消其请求信号;从设备接到请求信号后,在条件允许时发出回答信号,并且经过一段时间,确认设备已收到回答信号后,自动撤消回答信号
半互锁:主模块发出请求信号,待接到从模块的回答信号后再撤消其请求信号,存在着简单的互锁关系;而从模块发出回答信号后,不等待主模块回答,在一段时间后便撤消其回答信号,无互锁关系。
全互锁:主模块发出请求信号,待从模块回答后再撤消其请求信号;从模块发出回答信号,待主模块获知后,再撤消其回答信号。
- 半同步通信
综合了同步和异步的优点,既保留了同步通信的基本特点,如发送方用系统时钟前沿发信号,而接收方用系统时钟后沿判断、识别。同时又像异步通信那样,允许不同速度的模块和谐工作。为此增设了一条 “等待”(WAIT)响应信号线。但对系统时钟频率不能要求太高
- 分离式通信
上面3种方式在从模块内部读出过程并无实质性的信息传输,纯属空闲等待。所以出现了分离式通信。将一个传输周期分成了2个子周期:
- 第一个子周期:主模块申请占用总线,使用完后,即放弃总线的使用权
- 第二个子周期:从模块申请占用总线(这个时候从模块实际变成了主模块),将各种信息送至总线上