一、总线仲裁
连接到总线上的功能模块有主动和被动两种形态。
为了解决多个主设备同时竞争总线控制权,必须具有总线仲裁部件,以某种方式选择其中一个主设备作为总线的下一次主方。对多个主设备提出的占用总线请求,一般采用优先级或公平策略进行仲裁。按照总线仲裁电路的位置不同,仲裁方式分为集中式仲裁和分布式仲裁两类。
1、集中式仲裁
集中式仲裁中每个功能模块有两条线连到*仲裁器:一条是送往仲裁器的总线请求信号线BR,一条是仲裁器送出的总线授权信号线BG。
集中式仲裁的三种控制方式:
链式查询方式的主要特点:离*仲裁器最近的设备具有最高优先级,通过接口的优先级排队电路来实现。
链式查询方式的优点: 只用很少几根线就能按一定优先次序实现总线仲裁,很容易扩充设备。
链式查询方式的缺点: 对询问链的电路故障很敏感。查询链的优先级是固定的,如果优先级高的设备出现频繁的请求时,优先级较低的设备可能长期不能使用总线。
计数器的初值可用程序来设置,可以方便地改变优先次序。
独立请求方式的优点:响应时间快;对优先次序的控制相当灵活;可以用屏蔽(禁止) 响应来自无效设备的请求。
2、分布式仲裁
分布式仲裁不需要*仲裁器,每个潜在的主方功能模块都有自己的仲裁号和仲裁器。
当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。显然,分布式仲裁是以优先级仲裁策略为基础。
总线的一次信息传送过程,大致可分为如下五个阶段:请求总线,总线仲裁,寻址(目的地址),信息传送,状态返回(或错误报告)。
为了同步主方、从方的操作,必须制订定时协议。
定时:事件出现在总线上的时序关系。
数据传送时采用的定时有同步定时和异步定时两种方式。
1、同步定时
在同步定时协议中,事件出现在总线上的时刻由总线时钟信号来确定。
由于采用了公共时钟,每个功能模块什么时候发送或接收信息都由统一时钟规定,因此,同步定时具有较高的传输频率。
同步定时适用于总线长度较短、各功能模块存取时间比较接近的情况。
2、异步定时
在异步定时协议中,后一事件出现在总线上的时刻取决于前一事件的出现,即建立在应答式或互锁机制基础上。
在这种系统中,不需要统一的共公时钟信号。总线周期的长度是可变的。
异步定时的优点是总线周期长度可变,不把响应时间强加到功能模块上,因而允许快速和慢速的功能模块都能连接到同一总线上。但这以增加总线的复杂性和成本为代价。
当代的总线标准大都能支持以下四类模式的数据传送:
读操作是由从方到主方的数据传送;
写操作是由主方到从方的数据传送。
一般,主方先以一个总线周期发出命令和从方地址,经过一定的延时再开始数据传送总线周期。为了提高总线利用率,减少延时损失,主方完成寻址总线周期后可让出总线控制权,以使其他主方完成更紧迫的操作。然后再重新竞争总线,完成数据传送总线周期。
只需给出块的起始地址,然后对固定块长度的数据一个接一个地读出或写入。
对于CPU(主方)、存储器(从方)而言的块传送,常称为猝发式传送,其块长一般固定为数据线宽度(存储器字长)的4倍。
只给出地址一次,或进行先写后读操作,或进行先读后写操作。前者用于校验目的,后者用于多道程序系统中对共享存储资源的保护。这两种操作和猝发式操作一样,主方掌管总线直到整个操作完成。
一般而言,数据传送只在一个主方和一个从方之间进行。
但有的总线允许一个主方对多个从方进行写操作,这种操作称为广播。与广播相反的操作称为广集,它将选定的多个从方数据在总线上完成AND或OR操作,用以检测多个中断源。