|
|
原帖由 smilexp 于 2006-6-5 01:12 发表9 t; x, F& ~; H$ d) T4 r
0 `! \2 |* ^. o
0 v. d$ A+ P/ }: u
建议你去了解一下PCI总线,PCI总线是并行工作的,加上FIFO缓冲区以及DMA,数据时延没有你想像中那么严重,基本上可以认为是实时传送
& w3 M3 K4 ?, i4 X) y按照你的逻辑,ISA声卡时代莫非玩游戏都是按一下等半天才有声音出来?
/ s( q) D/ b; l1 u. ^, Z8 J9 A) h- h! G e3 a# _1 }3 ~, {
pci总线是并行总线,但pci总线也是共享总线,挂在上面的设备共同分享带宽,而pcie的一个明显好处就是各设备独享带宽,而且不像pci总线,pcie总线可以同时读写,是“全双工”。( N* s* F1 q) B1 o3 C* {: e* E
( f1 d% a a4 T& _6 d7 k2 n+ j: }到底pci总线的实际速度有多少,我搜索了一下:
6 b7 [" {1 j' B) o( C( m' g
5 h Y3 Y( e, j/ }5 y" r我们经常提到的132MByte/s只是在数据传输Burst时达到的峰值,实际中不可能。
; U' L" k- h J因为还要有仲裁、地址段、译码等时间。+ J! Z7 b) |5 U; O( J! O! W
, U9 W* D/ j- E% d
一般认为在一个轻载的系统中,一个设计优秀的PCI系统是可以获得40MB/s到50MB/s的
) W0 S, A( a9 G( S0 ]% e! W% ~实际运行带宽的。请注意一定是轻载系统。如果有大量的其他设备需要占用PCI + q: x4 M* l) I9 R( A# S" z! H
总线,那么你的设备所得到的带宽就会大大下降(例如大量的图形刷新,网络
# B v: O, j2 Q7 i/ t; ?+ e传输,硬盘操作等等)。* C/ w) Y: U4 \3 W; }0 e
( k, R* Z# H W. ^4 I) U# O
你还要考虑到:* k+ Y& f, b1 T
p8 h7 Z8 ?7 c- D% [# [5 @Retry
% p' ]5 A8 _4 |7 c0 C3 z. R3 ?Wait State
: x3 G& R2 t3 k( _Interrupt service polling
% y" k5 V1 E r' M. V9 L! M. ?. g4 [
即使你能够一个接一个地传输,但是 Single Read / Single Write 将使得真正实用的带宽降到四分之一或更低。) T, K* f5 ?1 @9 k r1 Y( U
: E! g( j5 {6 H7 |5 E, |5 P- W如果需要 CPU 频繁地调度各个芯片之间的工作,或者是 SW/HW 有频繁的交互,即,
6 d* s/ L/ j; q7 a
5 b: I! U# B$ hSet registers
5 [, P8 f9 f+ w' L& H+ o: ?9 QService interrupt
4 E0 k7 ~, |% r' Y# N
0 ?" z; y# ]& } @: r/ |传输数据的带宽又被迫降低。% e& p/ v1 H/ ]
) ]+ T- j6 }$ X, L
更深一步看系统,如果系统的 Memory 的组织,排的不利于 Burst,那么,即使使用DMA也无济于事,过多的 Transaction Overhead 将使得使用带宽进一步下降。
8 ~6 w. w8 d4 X/ f6 V7 `3 L
. a% X8 @: v( L! g说实话,以上的文字我看不太懂,但结论很明显。, V9 {/ r9 ^ }/ s f) t
/ x t R) I/ h A5 E要讨论延迟,总得有个参照,看和谁比,如果是听mp3,几百毫秒的延迟也不影响,因为你要关注的就是声音本身,没有其它参照;如果是看多声道电影,过高的延迟人们会察觉出来,就是音画不同步,但实际中这种情况很少见,播放软件会控制音画同步,个别情况比如mpc+创新dts硬解码,就要靠外挂的软件来实现同步,就是reclock这个滤镜。6 h' ^1 q: v. `( G' A; X: I
. ]2 T7 ]+ A* u: A我在顶楼说的很明白,讨论的是3D音频加速性能,就是常说的声卡游戏性能。这时候对延迟的要求就很高了,因为要求音画同步的同时对画面的帧数还有极高要求。电影的fps要么23.976要么25,游戏的fps降到这个水平就没人玩了,而且游戏的时候cpu是满载,片刻的分心就会在fps上体现出来。就是说20ms的延迟在听音乐、看电影的时候不是问题,但跑游戏的时候就是严重问题。 |
|