总线结构
总线结构通常可以分为单总线结构和多总线结构两种。
单总线结构
将CPU,主存,I/O设备都挂在一组总线上,这类总线多数被小型计算机或微型计算机所采用:
多总线结构
双总线结构
双总线结构的特点是将速度较低的I/O设备从单总线上分离出来,形成主存总线与I/O总线分开的结构:
三总线结构
主存总线用于CPU与主存之间的传输;I/O总线供CPU于各类I/O设备之间传递信息;DMA总线用于高速I/O设备(磁盘,磁带等)与主存之间直接交换信息。任一时刻只能使用一种总线
另一种三总线结构
处理器与Cache之间有一条局部总线,它将CPU与Cache或与更多的局部设备连接。
四总线结构
为了进一步提高I/O设备的性能,使其更快地响应命令:
总线结构举例
传统微型计算机的总线结构
易造成总线数据传输的瓶颈;
VL-BUS局部总线结构
PCI总线结构
多层PCI总线结构
总线控制
总线控制主要包括判优控制(又称仲裁逻辑)和通信控制。
总线判优控制
按设备对总线有无控制能力可分为主设备(模块)和从设备(模块)两种;主设备对总线有控制权,从设备只能响应从主设备发来的总线命令,对总线没有控制权。
总线判优控制可分集中式和分布式两种,前者将控制逻辑集中在一处(如在CPU中),后者将控制逻辑分散在与总线连接的各个部件或设备上。
常见的集中控制优先权仲裁方式有以下三种:
链式查询
控制总线中有3根线用于总线控制:
-
BS总线忙, BR总线请求,BG总线同意
同意信号BG串行地从一个I/O接口送到下一个I/O接口,如果到达的接口有总线请求,BG信号就不再往下传,意味着该接口获得了总线使用权,并建立总线忙BS信号,表示它占用了总线
在链式查询中离总线控制器越近的部件,其优先级越高;
特点:只需很少几根线就能按一定优先次序实现总线控制,并很容易扩充设备,但对电路故障很敏感,且优先级低的设备很难获得请求。
计数器定时查询
与链式查询相比,多了一组设备地址线,少了一根总线同意线BG.
总线控制部件接到由BR送来的总线请求信号后,在总线未被使用(BS=0)的情况下,总线控制部件中的计数器开始计数,并通过设备地址线,向各设备发出一组地址信号,当某个请求占用总线的设备地址与计数值一致时,便获得总线使用权,此时终止计数查询。
优点:计数器的初值可以由程序设置,因此优先次序可以改变,而且这种方式对电路的故障可以链式查询方式敏感
缺点:增加了控制线,控制也相对复杂
独立请求方式
每一个设备均有一对总线请求线BR和总线允许线BG,当总线上的部件需要使用总线时,经各自的总线请求线发送总线请求信号,在总线控制器中排队,当总线控制器按一定的优先次序决定批准某个部件的请求时,则给该部件发送总线响应信号,该部件接到信号就获得了总线使用权,开始传送数据。
优点:响应速度快,总线允许信号BG直接从控制器发送到有关设备,且对优先级的控制相对灵活。
对比项目 | 链式查询 | 计数器定时查询 | 独立请求 |
---|---|---|---|
控制线数 | 3(总线请求:1;总线忙:1;总线允许:1) | log2(n)+2(总线请求:1;总线忙:1;总线允许:log2(n)) | 2n+1(总线请求:n;总线忙:1;总线允许:n) |
优点 | 优先级固定;结构简单;扩充容易 | 优先级灵活 | 响应速度快;优先级灵活 |
缺点 | 对电路故障敏感;优先级不灵活 | 控制线多,控制复杂 | 控制线多,控制复杂 |
分布仲裁方式
分布仲裁方式不需要*仲裁器,每隔潜在的主模块都有自己的仲裁号和仲裁器。
总线通信控制
总线周期
通常将完成一次总线操作的时间称为总线周期,可分为以下4个阶段:
- 申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线总裁机构决定下一传输周期的总线使用权授予某一申请者
- 寻址阶段:取得了使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块
- 传数阶段:主模块和从模块进行数据交换,数据由源模块发出,经数据总线流入目的模块
- 结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权
总线通信控制的方式
总线通信控制主要解决通信双方如何获知传输开始和传输结束,以及通信双方如何协调如何配合;通常有以下四种方式:
同步通信
通信双方由同意的时标控制数据传送称为同步通信。时标通常由CPU的总线控制部件发出:
读(输入)命令的传输周期如下:
- T1: 主模块发地址
- T2: 主模块发读命令
- T3: 从模块提供数据
- T4: 主模块撤销读命令,从模块撤销数据
写(输出)命令的传输周期如下:
- T1:主模块发地址
- T1.5:主模块提供数据
- T2:主模块发出写命令,从模块接收到命令后,必须在规定时间内将数据总线上的数据写到地址总线所指明的单元中
- T4: 主模块撤销写命令和数据等信号
同步通信一般用于总线长度较短,各部件存取时间较一致的场合
异步通信
异步通信克服了同步通信的缺点,允许各模块速度的不一致性,它没有公共的时钟标准,不要求所有部件严格的统一操作时间,而是采用应答方式(又称握手方式),即当主模块发出请求(request)信号时,一直等待从模块反馈回来“响应”(Acckonwledge)信号时,才开始通信。当然,这就要求主、从模块之间增加两条应答线(握手交互信号线Handshaking)
异步通信的应答方式可分为以下几种:
不互锁方式:
从设备接到“请求”信号后,发出“回答”信号,不存在互锁关系。
半互锁方式:
主设备发出“请求”信号后,必需待接到从设备发出“回答”信号后,才撤销“请求”信号,不存在互锁关系。
全互锁方式:
主设备发出“请求”信号后,必需待接到从设备发出“回答”信号后,才撤销“请求”信号;从设备发出“回答”信号,,必须待获知主设备“请求”信号已撤销后,再撤销其“回答”信号。双发存在互锁关系
异步通信可用于并行传送或串行传送,约定字符格式为:1个起始位(低电平),5~8个数据位,1个奇偶校验位(作检错用),1或1.5或2个终止位(高电平);空闲位是高电平。
半同步通信
增设了一条“等待”(WAIT)响应信号线采用时钟(等待)周期的措施来协调通信双方的配合问题;
半同步通信时序可为以下形式:
T1:主模块发出地址信息
T2: 主模块发出命令
Tw:当WHAT为低电平时,进入等待,Tw的宽度与T的宽度一致
。。。
T3: 从模块提供数据
T4: 主模块撤销读命令,从模块撤销数据
以上三种通信模式的共同点:
1. 主模块通过传输总线向从模块发送地址和命令
2. 从模块按照命令进行读数据的必要准备
3. 从模块经数据总线向主模块提供数据
分离式通信
分离式通信的基本思想是将一个传输周期分解为两个子周期:
子周期1:主模块申请占用总线,使用完后即放弃总线使用权
子周期2:从模块申请占用总线,将各种信息送至总线上