|
|
原帖由 smilexp 于 2006-6-5 01:12 发表* X$ R I. [1 F' `9 T( H* t: ?
, a) [1 Q7 k- c! w2 ~
- v$ v* O( y U/ Z建议你去了解一下PCI总线,PCI总线是并行工作的,加上FIFO缓冲区以及DMA,数据时延没有你想像中那么严重,基本上可以认为是实时传送5 Q) P0 Q) _* W4 p3 C) a. f3 P
按照你的逻辑,ISA声卡时代莫非玩游戏都是按一下等半天才有声音出来?
2 |6 P& ?, `5 b3 A* h+ X* P( T2 R( \2 E$ D( Z
pci总线是并行总线,但pci总线也是共享总线,挂在上面的设备共同分享带宽,而pcie的一个明显好处就是各设备独享带宽,而且不像pci总线,pcie总线可以同时读写,是“全双工”。# v* E) B/ X' \8 `
t: h& R8 L e到底pci总线的实际速度有多少,我搜索了一下:
) L( W# n" v& V: |. J" I4 E" z; @! l& Q# E7 u, B# |, B {/ B1 O
我们经常提到的132MByte/s只是在数据传输Burst时达到的峰值,实际中不可能。/ W. M; Y1 F: O6 m. R
因为还要有仲裁、地址段、译码等时间。2 q6 M& k, `' V* f4 `" U
4 W( V4 c6 h- n% Z* m) v" J2 U
一般认为在一个轻载的系统中,一个设计优秀的PCI系统是可以获得40MB/s到50MB/s的
: Z' n$ [4 q! }% ~9 ~4 _实际运行带宽的。请注意一定是轻载系统。如果有大量的其他设备需要占用PCI 3 c& k- e- w! `- K% `. E x/ @
总线,那么你的设备所得到的带宽就会大大下降(例如大量的图形刷新,网络 ; i o ]: E1 P7 b( U
传输,硬盘操作等等)。
2 }3 r; i+ _/ b* t. i' U7 U2 c( s! r' }* i4 z i
你还要考虑到:# v- j6 r* T& C/ S2 f
! v1 m8 ?" f/ ?# h
Retry
: V5 `# H* ?! EWait State
0 p j8 a2 W1 r3 [) s6 P' hInterrupt service polling3 W- k8 D. l" P8 U
$ j! `0 C5 w7 `即使你能够一个接一个地传输,但是 Single Read / Single Write 将使得真正实用的带宽降到四分之一或更低。% c1 z7 O3 F% ^5 I( t" @6 w) R
% G' R. x# C7 x1 `( u2 [
如果需要 CPU 频繁地调度各个芯片之间的工作,或者是 SW/HW 有频繁的交互,即,! Q, B y& ?& | h/ q
2 p0 ]* ?* C* Z9 Y0 j
Set registers
; k) I4 c, `! K1 |" BService interrupt. w) y! O0 u D2 W+ R% C: ?
1 E* |" g r7 f6 f c5 d: G) B传输数据的带宽又被迫降低。
1 l2 Q' I# k/ S! S# z: S* [" u8 K! Y5 U2 r) K# {, f# i
更深一步看系统,如果系统的 Memory 的组织,排的不利于 Burst,那么,即使使用DMA也无济于事,过多的 Transaction Overhead 将使得使用带宽进一步下降。
! F# ^! A# @3 X* H3 }( t4 j5 s% P {# v4 } I5 B$ o" t2 y
说实话,以上的文字我看不太懂,但结论很明显。
7 M9 x2 P$ F; ~ w$ k: z
4 O% {* X, r- Q# ~- P2 a$ E要讨论延迟,总得有个参照,看和谁比,如果是听mp3,几百毫秒的延迟也不影响,因为你要关注的就是声音本身,没有其它参照;如果是看多声道电影,过高的延迟人们会察觉出来,就是音画不同步,但实际中这种情况很少见,播放软件会控制音画同步,个别情况比如mpc+创新dts硬解码,就要靠外挂的软件来实现同步,就是reclock这个滤镜。' |2 D1 j5 m: C e
+ ~ T$ K& W" I
我在顶楼说的很明白,讨论的是3D音频加速性能,就是常说的声卡游戏性能。这时候对延迟的要求就很高了,因为要求音画同步的同时对画面的帧数还有极高要求。电影的fps要么23.976要么25,游戏的fps降到这个水平就没人玩了,而且游戏的时候cpu是满载,片刻的分心就会在fps上体现出来。就是说20ms的延迟在听音乐、看电影的时候不是问题,但跑游戏的时候就是严重问题。 |
|