PCI系统结构(第四版) 第5章之二

上一篇 / 下一篇  2007-12-20 13:54:53 / 个人分类:读书笔记

公平仲裁举例

   系统可以将PCI总线上的全部总线主设备分为两部分:

1. 为了达到高性能,要求快速访问总线或高流通量的总线主设备。例如显示适配器、ATM网络接口或FDDI网络接口。

2. 不要求快速访问总线或高流通量以达到高性能的总线主设备。例如,SCSI主总线适配器或规范扩展总线主设备。

仲裁器将REQ#/GNT#分为两组,其中一组具有更大的优先权。假设总线主设备AB在要求快速访问的组中,主设备XYZ在另一组,对仲裁器编程或设计,将每个组都设计成循环优先权,而两组之间也是循环优先权,如图5-3所示。

   假设下列情况:

    在第一组中下一个接收总线的设备是主设备A

    在第二组中下一个接收总线的设备是主设备X

    在第一组中下一个接收总线的设备是某个主设备;

    所有主设备都有效REQ#并希望执行多次交易(在起动交易后,它们仍保持相应的REQ#有效)。

接收访问总线的主设备次序是:

1. 主设备A

2. 主设备B

3. 主设备X

4. 主设备A

5. 主设备B

6. 主设备Y

7. 主设备A

8. 主设备B

9. 主设备Z

10.             主设备A

11.             主设备B

12.             主设备X等。

第一组中的主设备比第二组更频繁地被允许访问总线。   

 

主设备希望执行多次交易

   如果主设备在一次交易刚起动之后有另一个交易立即执行,那么它在有效FRAME#开始当前交易时,应该保持REQ#线有效(图5-4中的时钟2)。这样它就通知了仲裁器,它希望在完成当前交易后保持总线的所有权。仲裁器是否允许取决于其他未决的请求。如果没有保持住所有权,主设备应该保持REQ#有效,直到它又成功取得了总线所有权。

   在任意时刻,只有一个总线主设备使用总线。这意味着在任意PCI时钟周期内,仲裁器仅有效一条GNT#线。

 

隐式总线仲裁

   与一些仲裁机理不同,在当前主设备正在执行数据传送时,PCI机理允许总线仲裁发生。如果仲裁器决定将下一次交易的总线所有权授予某个主设备,而不是当前交易的主设备,它从当前主设备取回GNT#(即先取得)并将之发送给总线的下一个拥有者,但是,直到当前主设备让总线空闲,下一个所有者才取得总线所有权。在执行仲裁总线周期的时间里没有浪费总线时间,这称作隐式仲裁。

 

总线停放

   主设备必须在有效其REQ#输出,表明对总线当前的需要,换言之,主设备必须不将REQ#输出“停放”在总线上。如果系统设计者实现总线停放机理,那么当没有未决的总线主设备请求时,总线仲裁器设计应该通过有效设备的GNT#信号,指出缺省总线所有者。在这种方式中,缺省总线主设备的REQ#被立即授予(如果没有其他总线主设备要求使用PCI总线)。

   如果总线仲裁器实现总线停放,那么在没有有效的REQ#线时,它有效缺省总线主设备的GNT#。这种方式下,如果缺省总线主设备要求使用总线(并且没有其他未决的高优先级请求),那么它立即得到总线。如果停放总线的主设备随后要求访问PCI总线,那么它不必有效REQ#。当采样到总线空闲时(FRAME#IRDY#无效),并且GNT#有效,它立即起动交易。选择那个主设备停放总线,由总线仲裁器的设计者定义。可以采用任意过程,如使用总线的最后一个总线主设备,或预定义的缺省总线主设备。

   当实现总线停放时,应用的方法有两种可能的情况:

   方法1:仲裁器可以监视FRAME#IRDY#,以确定在停放总线前总线是否忙。假设主设备请求总线,收到GNT#,并开始多数据段突发交易,在这次交易完成后,如果没有另一次交易,那么它在有效FRAME#时无效REQ#。在此情况下,仲裁器可以识别出总线是否忙,如果没有无效当前主设备的授权,以停放总线在另一个主设备上(极力推荐采用此法)。

   方法2:仲裁器没有监视总线空闲。假设主设备请求总线,收到GNT#并开始多数据段突发交易,在这次交易完成之后,如果没有另一次交易,那么在有效FRAME#时无效REQ#。在此情况下,虽然没有其他主设备的请求,但仲裁器仍可以从当前主设备拿走GNT#,并向准备停放总线的主设备发生GNT#。在当前主设备用完主设备延迟,并确定已经失去授权时,它被迫放弃总线,等待两个时钟,然后重新仲裁,在失去总线之处重新开始交易。

   规范建议总线应该停放在最后一个取得总线的主设备上。在第二种情况下,仲裁器连续向突发主设备发出GNT#,并能继续交易,直到交易完成或收到另一个主设备的请求。

   当仲裁器在主设备上停放总线(通过有效其授权),并且总线空闲,主设备负责保持AD总线、C/BE总线和PAR不要漂移(保持所有设备的CMOS输入缓冲区不要震荡和过大漏电流)。主设备必须使能其AD[310]C/BE[30],以及PAR输出驱动器(一个时钟之后)。主设备不必在一个时钟打开全部输出驱动器(它可以多达8个时钟,但建议两到三个时钟)。这一过程保证了在总线空闲过程总线不全漂移。如果仲裁器没有停放总线,仲裁器应该在总线空闲阶段驱动AD总线,C/BE#线和PAR

 

请求/确认时序

   当仲裁器确定主设备使用总线时,它有效主设备的GNT#线。仲裁器可以在任意PCI时钟无效主设备的GNT#。主设备必须保证在它希望起动一次交易的时钟上升沿有效其GNT#。如果GNT#无效,那么就不会进行交易。一旦仲裁器有效GNT#GNT#可以在下述情况下无效:

    如果GNT#无效且FRAME#有效,那么传送有效而且连续。仲裁器无效GNT#表明,主设备在当前交易完成时不再拥有总线;当前交易仍在过程中时,主设备保持FRAME#有效;当它准备完成最后数据段时无效FRAME#

    如果总线不在空闲状态,主设备的GNT#无效,与另一个主设备GNT#的有效同时发生。空闲状态定义为FRAME#IRDY#同时无效的时钟周期。如果总线空闲,正在失去GNT#的主设备可以使用步进驱动总线(尽管它还没有有效的FRAME#)。伴随另一个主设备的GNT#有效,此主设备GNT#同时无效,导致AD总线上的冲突。另一个主设备可能立即开始交易(因为总线在技术上是空闲的)。通过向另一个主设备延迟一个周期授权来防止这个问题。表5-1定义了FRAME#IRDY#的当前状态指出的总线状态。

    在最后数据段(FRAME#无效)GNT#可以无效,反应出当前总线主设备的REQ#无效。

 


FPGA/CPLD器件价格查询

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar