PCI系统结构(第四版) 第6章 之一

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

6章:主设备与目标延迟

 

第一次交易起动前的强制性延迟

   规范2.2版本规定:系统(即芯片组内的仲裁器)必须保证,在RST#无效后,PCI总线至少在五个PCI时钟周期内不能起动第一次交易。

 

总线访问延迟

   当总线主设备希望与目标PCI设备传送一块单或多数据项时,它必须从总线仲裁器请求使用总线。总线访问延迟定义为从总线主设备请求使用PCI总线到它完成交易的第一次数据传送的时间量。图6-1显示了PCI总线主设备涉及的不同器件的访问延迟。表6-1为访问延迟器中的描述。

   PCI总线主设备应该总是使用突发传输,在它与PCI设备之间传送数据块(一些设计不良的主设备采用一系列单数据段交易传送数据块)。传送可以包含一个字节到无数字节。发出请求并已经得到授权使用总线(仲裁器有效其GNT#)的主设备,直到当前总线主设备完成其进行中的交易才能开始交易。如果允许当前主设备拥有总线直到整个传送完成,那么当前主设备会让其他总线主设备等待太长时间才能使用总线,这一异常的延迟可能引起其他总线主设备(与/或它们服务的应用程序)表现出很差的性能,甚至功能混乱(可能是缓冲区溢出或不足)。

   例如,总线主设备具有缓冲区充满情况,并正在请求使用总线以卸载缓冲区内容至系统存储器,如果它在取得总线时遇到异常的延迟,才开始传送,那么当它从相关设备(如网络)收到更多数据放入缓冲区时,它会出现数据过多情况。

   为了保证总线主设备的设计者处理可预测和可管理的总线延迟,PCI规范定义了两种机理:

    主设备延迟定时器(MLT)。

    目标起动的终止。

 

防止主设备独占总线

   

   主设备必须在8个时钟周期内传送数据

 

   见图6-2,规定在任意数据段,主设备必须不保持IRDY#无效超过7PCI时钟,即它必须在进入数据段后,8个时钟之内传送一个数据项。如果主设备没有缓冲区存储读数据,它必须延迟请求总线直到有地方存储数据。在一个写交易中,主设备必须在请求总线前具有数据。

 

   在最后数据传送之后的时钟周期使IRDY#失效

   见图6-2的时钟9,在最后数据传送完成时,(IRDY#TRDY#有效而FRAME#无效),主设备必须在下一个时钟段释放IRDY#

 

   延迟定时器防止主设备独占总线

   

   主设备延迟定时器的位置和目的

   主设备延迟定时器(LT)在总线主设备配置单元作为PCI配置寄存器实现(图6-3中双字三的字节一)。它在起动时刻由配置软件初始化,或者包含硬连线的值。LT中包含的值定义了总线主设备每次取得总线所有权并起动交易时,保持总线所有权的最短时间(以PCI时钟周期计)。

   

   LT如何工作

   当总线主设备检测总线空闲(FRAME#IRDY#无效)并且其GNT#有效时,它取得总线并起动交易。在交易起动时,主设备LT的初始值是起动时配置软件写到LT的值,或硬连线值。主设备每当PCI时钟的下一个上升沿,都将LT值减一。如果主设备在突发交易之中而仲裁器取走GNT#,这表示仲裁器检测到另一个主设备的请求,并向它授予总线下一次交易的所有权,即当前主设备失去所有权,如果当前主设备的LT还没有用完(一直递减),它还没有用完时间片,并可保持总线的所有权直到:

    它完成突发交易;

    LT到期;

无论哪一个先到。如果它能在LT到期前完成交易,具有GNT#的另一个主设备当检测到当前主设备将总线返回空闲状态时获得总线所有权;如果当前主设备在LT到期前未完成交易,允许它完成下一个数据传送,然后必须交还总线。

如果当前主设备用完LT,仍具有GNT#并且还未完成突发传送,它可保持总线所有权并继续传送数据到:

    它完成全部突发传送或;

    仲裁器取走其GNT#

在后一种情况,允许当前主设备完成下一个数据传送,然后必须交回总线。应该注意,在迫使总线主设备预先终止数据传送时,它必须“记住”它在传送中的位置。在短暂间隔后,它可以重新有效REQ#,再次请求总线所有权,以便在离开的位置继续。

LT寄存器的实现是强制性的吗?

一次交易执行两个以上数据段的主设备,必须把LT作为读/写寄存器实现。这表示该寄存器是可选的,并可以硬件连线到零。如果这样做,必须注意主设备有一个时间片是零!即如果起动交易而仲裁器立即取走GNT#(因为另一个主设备请求总线),那么主设备能够执行有且只有一次数据段,并必须放弃总线。

LT数值能够硬连线吗?

能,对于一次交易执行一两个数据段的主设备,但硬件连线的值不能超过16(可以是0)。如果你选择硬连线到0值,请参考上一节。

软件如何决定分配给主设备的时间片?

参考最小授权寄存器(Mini-Gnt,总线主设备的设计者实现只读配置寄存器(见图6-3中双字15的字节二)。如果称之为时间片请求寄存器则更贴切。零值表示总线主设备对LT分配的设置没有特别的要求;非零值表示以250ns递增,主设备要求多长的时间片才能达到足够的性能。该寄存器硬连线的值是总线设计者假设总线速度是33MHZ的情况下。当选择此值时,设计者必须假设目标没有在数据段插入等待状态。

通过使用MINI-GNT寄存器的值,与PCI总线速度的BIOS知识有关。BIOS确定时间片装载到主设备的LT寄存器。这些参数用来计算请求时间片的时间(以PCI时钟滴答计)。对总线上所有主设备请求的时间片评估,以确定分配给每个主设备的实际时间片。

存储器写与使无效命令的处理

执行存储器写与使无效命令的任意主设备,直到Cache行边界才终止传送(甚至LT已到期且失去总线所有权),除非目标有效STOP#。如果它在LT到期时已到达Cache行边界,并且仲裁器已经取走其GNT#,那么主设备必须终止交易。如果目标终止存储器写与无效命令(非Cache化存储器目标有效STOP#),主设备应尽快使用存储器写命令完成存储器中的行更新。可Cache化存储器目标不必断开存储器写与使无效命令,除了在Cache行边界,即使当前禁止Cache化。由于这个原因,侦测器(即HOST/PCI桥)总能假设;如果访问在可Cache化存储器范围内,那么存储器写与使无效命令将不中断地完成。

当主设备LT到期时,如果FRAME#仍有效(即不是交易的最后数据段),并且命令是存储器写与使无效,并且GNT#无效时当前数据段已在传送当前Cache行的最后双字,那么主设备必须在下一个Cache行结束时终止交易。因为主设备通过保持FRAME#有效,传送至少一个双字给目标(并且是下一行的第一个双字),所以这是必要的。


FPGA/CPLD器件价格查询

TAG:

 

评分:0

我来说两句

显示全部

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

Open Toolbar