• 内容讲解

总线的控制就是决定共享总线的部件如何获得总线的使用权(控制权)的问题,总线控制部件是总线的仲裁机构。

连接到总线上的功能模块有主动和被动两种模式,主动模式的模块称为主方(Master),它可以启动一个总线周期,被动模式的模块称为从方(Slave),它只能响应主方的请求。例如,CPU模块在不同的时间里既可以用作主方,也可以用作从方,而存储器模块只能用作从方。由于总线是在多个部件之间共享的,每一次总线操作只能有一个主方占用总线控制权,但是同一时间里可以有一个或多个从方。从这种意义上说,主方是那些在某个时刻独占总线的部件,一般会在占有总线之前发出总线占用请求。除了CPU模块外,I/O功能模块、DMA控制器也可以作为主方提出总线请求。

为了解决多个主设备同时竞争总线控制权的问题,必须设置总线仲裁部件,以某种方式选择其中一个主设备作为总线的下一个主方。被授权的主方在当前总线业务结束时,立即接管总线控制权,开始新的信息传送,主方持续控制总线的时间称为总线占用期。

按照总线仲裁电路位置的不同,仲裁方式分为集中式仲裁和分布式仲裁两类。

1. 集中式仲裁

在集中式仲裁中,每个功能模块有两条线连到中央仲裁器:一条是送往仲裁器的总线请求信号线BR,一条是仲裁器送出的总线授权信号线BG。对于单处理器系统总线而言,中央仲裁器又称为总线控制器,它是CPU的一部分。按照目前的总线标准,中央仲裁器一般是一个单独的功能模块,其结构如图6-8所示,图中A表示地址线,D表示数据线。

618.gif

1)链式查询方式

链式查询方式如图6-8(a)所示,总线中有一条BS线,它标明总线的状态:1表示总线正被某个主方所使用,0表示总线空闲。

链式查询方式的主要特点:总线授权信号BG采用串行方式从一个I/O接口传送到下一个I/O接口。假如BG到达的接口无总线请求,则继续往下查询;假如BG到达的接口有总线请求,BG信号便不再往下查询,这意味着该I/O接口获得了总线控制权。显然,在查询链中离中央仲裁器最近的设备具有最高优先级,离中央仲裁器越远的设备其优先级越低。因此,链式查询是通过接口的优先级排队电路来实现的。

链式查询方式的优点是只用很少几根线就能按一定的优先次序实现总线仲裁,并且这种结构很容易扩充新的设备。链式查询方式的缺点是对查询链的电路故障非常敏感,如果第i个设备的接口中有关查询链的电路发生故障,那么第i个以后的设备就都不能工作了。此外,查询链的优先级是固定的,如果优先级高的设备频繁发出总线请求,则优先级较低的设备有可能长期无法使用总线。

2)计数器定时查询方式

计数器定时查询方式如图6-8(b)所示。总线上的任一设备需要使用总线时,通过BR线发出总线请求,中央仲裁器接到请求后,在BS线为“0”的情况下让计数器开始计数,计数值通过一组地址线发向各个设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备的地址一致时,该设备将BS线置“1”,获得总线使用权,同时终止计数查询。

每次计数既可以从“0”开始,也可以从终止点开始:如果从“0”开始,各设备的优先次序与链式查询法相同,优先级的顺序是固定的;如果从终止点开始,则每个设备使用总线的优先级是相等的。计数器的初值也可用程序来设置,这样可以方便地改变优先次序,但这种灵活性是以增加线数为代价的。

3)独立请求方式

独立请求方式如图6-8(c)所示。在独立请求方式中,每一个共享总线的设备均有一对总线请求线BRi和总线授权线BGi。当设备要求使用总线时,便发出该设备的请求信号。中央仲裁器中有一个排队电路,根据自己的优先策略决定首先响应哪个设备的请求,给该设备以授权信号BGi

独立请求方式的优点首先是响应速度快,确定优先响应的设备所花费的时间少,用不着一个设备接一个设备地查询;其次,对优先次序的控制相当灵活,可以预先固定,也可以通过程序来改变,还可以用屏蔽(禁止)某个请求的办法,不响应来自无效设备的请求。因此,现代的总线标准普遍采用独立请求方式。

2. 分布式仲裁

分布式仲裁不需要中央仲裁器,每个潜在的主方功能模块都有自己的仲裁号和仲裁器。当它们有总线请求时,把它们惟一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较,如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号,最后,获胜者的仲裁号保留在仲裁总线上。显然,分布式仲裁是以优先级仲裁策略为基础的。