首先什么是PCI Latency timer ?
译成中文就是:PCI延迟时钟。 这个指pci设备独占pci总线的时间,值越大,则这个设备利用带宽越充分,但是后面排队的设备就必须等待更长的时间才能开始独占pci总线并工作;所以设置大了可以提高一个设备的速度,设置小了则提高对多个pci设备的响应效率。主板一般默认是32,Omega小组推荐设置成64。
那么回望现在的主板设计,一般新平台上pci设备已经极度缩减。对只有一块pci声卡,或pci设备很少的用户,建议调大这个值以达到更好的声卡回放听感!同时也可以解决一部分创新声卡的兼容性问题。
PCI延迟计时器是一种总线控制总线控制设备的一种机制,可以公平地共享PCI总线。在这种情况下,“公平”意味着设备不会使用如此大的可用的PCI总线带宽,而其他设备无法完成所需的工作。
它的工作原理是,每个可以在总线主控模式下运行的PCI设备都需要实现一个计时器,称为延迟计时器,它限制了设备可以容纳PCI总线的时间。当设备获得总线所有权时,计时器开始计时,并以PCI时钟的速度计数。当计数器达到零时,设备被要求释放总线。如果没有其他设备等待总线所有权,它可能会再次抓取总线并传输更多的数据。
如果延迟计时器设置得太低,PCI设备将不必要地中断它们的传输,从而降低性能。如果设置得太高,需要频繁总线访问的设备可能会溢出缓冲区,从而丢失数据。 所以从理论上讲,有一种折衷方案可以在两者之间达成,所有设备都能获得良好的性能,并有合理的保证,他们将及时获得BUS的使用权。
以下是我对你处理计时器的各种方式的最佳状况:
坏的方法是:不要设置它们(在所有情况下,我都在未设置中看到了这个结果)。
更好的方法是:选择一个值(我的代码中使用了48),并将所有的device和bridges设置成这种状态。
从理论上讲,最好的方法是:
对于每张卡片,请阅读mingnt和maxlat值,并计算以下内容:
然后,计算每个设备所需的延迟计时器值,例如: