|
|
原帖由 smilexp 于 2006-6-5 01:12 发表
+ D& Q: N( u5 M5 g* {/ r: b$ D$ }7 C/ Y9 V, J4 m' L1 w
' ~- j! g2 E! c) E+ w
建议你去了解一下PCI总线,PCI总线是并行工作的,加上FIFO缓冲区以及DMA,数据时延没有你想像中那么严重,基本上可以认为是实时传送
6 t; c! ~- b1 _8 Q' Z- L. M按照你的逻辑,ISA声卡时代莫非玩游戏都是按一下等半天才有声音出来?
& X. B! S9 E6 I# I: f4 R; O% ~
& ?0 P7 I8 c# t6 F$ e) b gpci总线是并行总线,但pci总线也是共享总线,挂在上面的设备共同分享带宽,而pcie的一个明显好处就是各设备独享带宽,而且不像pci总线,pcie总线可以同时读写,是“全双工”。4 r4 L6 h& S0 F! |. J
4 k; y+ b7 g+ {- L8 f, y% P
到底pci总线的实际速度有多少,我搜索了一下:8 @0 P j$ x7 u- `9 O1 q
' B( b3 _$ q0 {1 d5 }" |我们经常提到的132MByte/s只是在数据传输Burst时达到的峰值,实际中不可能。
" S4 q, {. s2 E因为还要有仲裁、地址段、译码等时间。
1 z/ W7 V3 ^+ C0 f5 `+ q: l( E4 n( c# j2 O4 ~# i
一般认为在一个轻载的系统中,一个设计优秀的PCI系统是可以获得40MB/s到50MB/s的 $ o. }7 Q1 W( D3 U
实际运行带宽的。请注意一定是轻载系统。如果有大量的其他设备需要占用PCI . Z& i }' z Y
总线,那么你的设备所得到的带宽就会大大下降(例如大量的图形刷新,网络
; w& J7 _ z1 N* s7 ~+ M传输,硬盘操作等等)。
/ M2 ]7 k) R- @0 k! w# l6 u7 z
6 t0 X$ O% |7 y" d) q+ V. w/ h你还要考虑到:4 P6 R% j8 q# w8 q
. W8 _+ `. f* B9 g8 M* A# t
Retry
4 w6 p' V" m5 M6 ?! N3 V: KWait State, F9 |9 G$ O0 l( [+ K
Interrupt service polling
, D; C9 M! M4 v% X$ \
+ _" l* v) r: D# y& b2 M即使你能够一个接一个地传输,但是 Single Read / Single Write 将使得真正实用的带宽降到四分之一或更低。. Y9 i( V' J- E& K1 v
6 P: a [' z9 o, {% p如果需要 CPU 频繁地调度各个芯片之间的工作,或者是 SW/HW 有频繁的交互,即,6 r4 y3 X# u7 D& S9 B N
: M6 l) S9 T" }7 ?; }. }
Set registers! V' o3 M) P5 k5 S. B& W
Service interrupt
' L7 o# y' ?1 {* S0 p( W8 j) G
# N0 l* I, k3 Y I传输数据的带宽又被迫降低。8 Q6 [' Z: J" [5 y( N7 u$ K8 @+ z
6 l# v9 ?' ]0 g7 ~8 u6 B! Z9 N6 f8 E" ^
更深一步看系统,如果系统的 Memory 的组织,排的不利于 Burst,那么,即使使用DMA也无济于事,过多的 Transaction Overhead 将使得使用带宽进一步下降。$ B4 q. W. M; d! _$ E( [9 E2 {
4 O6 B0 t7 i1 U5 r" x说实话,以上的文字我看不太懂,但结论很明显。) U' G8 y8 u3 G: N3 C2 v
e" G/ [. z7 j要讨论延迟,总得有个参照,看和谁比,如果是听mp3,几百毫秒的延迟也不影响,因为你要关注的就是声音本身,没有其它参照;如果是看多声道电影,过高的延迟人们会察觉出来,就是音画不同步,但实际中这种情况很少见,播放软件会控制音画同步,个别情况比如mpc+创新dts硬解码,就要靠外挂的软件来实现同步,就是reclock这个滤镜。& J$ z* U4 U+ O- x5 S. e4 L
; ^7 A6 S4 } W/ ^$ L6 N% z1 T
我在顶楼说的很明白,讨论的是3D音频加速性能,就是常说的声卡游戏性能。这时候对延迟的要求就很高了,因为要求音画同步的同时对画面的帧数还有极高要求。电影的fps要么23.976要么25,游戏的fps降到这个水平就没人玩了,而且游戏的时候cpu是满载,片刻的分心就会在fps上体现出来。就是说20ms的延迟在听音乐、看电影的时候不是问题,但跑游戏的时候就是严重问题。 |
|