|
原帖由 smilexp 于 2006-6-5 01:12 发表
9 n6 z- W. G% u' F6 W: d( ?2 y
, Z5 C t( P% c! k/ _' s: q
( \' s' Y2 y7 u! o, i' l5 @建议你去了解一下PCI总线,PCI总线是并行工作的,加上FIFO缓冲区以及DMA,数据时延没有你想像中那么严重,基本上可以认为是实时传送2 S; V8 w3 C% L8 k2 g+ r
按照你的逻辑,ISA声卡时代莫非玩游戏都是按一下等半天才有声音出来?
0 L* ^$ w& T, i0 D7 l8 {/ o: J+ [6 s2 e, y6 `9 ~" Y
pci总线是并行总线,但pci总线也是共享总线,挂在上面的设备共同分享带宽,而pcie的一个明显好处就是各设备独享带宽,而且不像pci总线,pcie总线可以同时读写,是“全双工”。9 g& M& I i8 |* \5 Y9 j
/ G& U, p, ]3 x3 {6 p! Y3 x7 B5 A, ?
到底pci总线的实际速度有多少,我搜索了一下:6 ^5 f% ?1 H$ D9 o
3 i. z1 U8 O9 C* ~9 e' B
我们经常提到的132MByte/s只是在数据传输Burst时达到的峰值,实际中不可能。. d7 Y0 `) c. s
因为还要有仲裁、地址段、译码等时间。7 k* p2 E E" h: q$ m l
: r" W0 m! B# ] |一般认为在一个轻载的系统中,一个设计优秀的PCI系统是可以获得40MB/s到50MB/s的 ' N* r$ T" O/ f) F
实际运行带宽的。请注意一定是轻载系统。如果有大量的其他设备需要占用PCI : k3 e+ W# k$ A9 H4 P. ^6 q
总线,那么你的设备所得到的带宽就会大大下降(例如大量的图形刷新,网络
4 h7 g% Q, F, {& [传输,硬盘操作等等)。
0 o9 B4 l' H; N- [2 {( v$ ]/ m/ S6 _* E
' \8 d* f; j; t$ h+ D你还要考虑到:
1 Z- `8 `2 s) R/ O9 V, \" ]
0 _+ H8 k$ D4 \! t: ]Retry2 o! Z' G; W2 j( s+ `% k& F- H3 [
Wait State
% t$ V8 X8 }: O( [4 |/ a$ VInterrupt service polling0 T' A$ L) g$ {. X! ^$ V5 }+ O, @
$ E8 w1 x- Y2 J( e, ~/ T1 n2 ]
即使你能够一个接一个地传输,但是 Single Read / Single Write 将使得真正实用的带宽降到四分之一或更低。2 c: ]5 M+ }& }0 P/ n# O! H* G
4 A7 X( F: @4 @3 a
如果需要 CPU 频繁地调度各个芯片之间的工作,或者是 SW/HW 有频繁的交互,即,+ f: c* q C- T- V* O% P1 f1 f# m
2 ?' h! g7 {' i- vSet registers4 S4 k, a. m1 V9 z
Service interrupt! T7 c9 @) _1 A) y
9 J1 T! Q8 Q# \1 ?
传输数据的带宽又被迫降低。
9 `0 V7 v0 L* B* h: C+ Y ]
, u4 ^7 y; x0 J1 O4 I更深一步看系统,如果系统的 Memory 的组织,排的不利于 Burst,那么,即使使用DMA也无济于事,过多的 Transaction Overhead 将使得使用带宽进一步下降。) R3 n' \7 w+ z% S
1 I4 d2 G' ~+ s% X
说实话,以上的文字我看不太懂,但结论很明显。/ ^% v7 n6 S# J
) F A! W, {8 _
要讨论延迟,总得有个参照,看和谁比,如果是听mp3,几百毫秒的延迟也不影响,因为你要关注的就是声音本身,没有其它参照;如果是看多声道电影,过高的延迟人们会察觉出来,就是音画不同步,但实际中这种情况很少见,播放软件会控制音画同步,个别情况比如mpc+创新dts硬解码,就要靠外挂的软件来实现同步,就是reclock这个滤镜。
2 E' X3 f% E; ]; a! Z' W' ?+ B4 h2 }2 i
我在顶楼说的很明白,讨论的是3D音频加速性能,就是常说的声卡游戏性能。这时候对延迟的要求就很高了,因为要求音画同步的同时对画面的帧数还有极高要求。电影的fps要么23.976要么25,游戏的fps降到这个水平就没人玩了,而且游戏的时候cpu是满载,片刻的分心就会在fps上体现出来。就是说20ms的延迟在听音乐、看电影的时候不是问题,但跑游戏的时候就是严重问题。 |
|