zzz1111 发表于 2009-8-1 04:39:37

Jitter可以在CD,内存,硬盘和网络之间传递吗?

看到这里有好多关于完全一样的wav文件会不会有听感不同的讨论,觉得很有意思。所以特地注册一个帐号,向各位朋友汇报一点我了解的关于Jitter传递的粗浅认识,想跟有兴趣的朋友一起讨论。

先简单看看CD音轨是怎么变成硬盘文件的过程,以及Jitter在整个过程中是如何转变的吧。看看抓轨软件怎么做的,如果有兴趣,将来还可以看看其它方式比如CD对录是怎么做的。

1. CD读取:抓轨软件会对操作系统发出请求要求读取CD,光驱驱动软件会被调用,光驱控制器转动光盘按照抓轨软件要求读取一个个扇区上的音轨数据(这个过程的细节有兴趣以后可以展开谈)。这时候的读取速度一般是10到20倍于CD播放速度,也就是1.5-3M byte每秒。这时的bit time在10-100纳秒数量级上,所以Jitter也是大致这个数量级上。注意如果用1倍速读取的话,bit time就10倍20倍地增加,Jitter也会随bit time一起增加到100-1000纳秒级。光驱会把读盘得到的数据先暂存在内部缓存上,攒满一次请求的数据量,就用DMA从光驱缓存上把音轨数据读出来,通过IDE(或者SATA、SCSI)接口传送到主机内存里。这次光驱缓存对主机内存的传输速度就是IDE接口的速度,几十兆到一百多兆byte每秒的速度。

2. 内存中转:内存的访问速度以800M DDR2内存算,是800Mo每秒或者最高6.4Gbyte每秒,每个内存字之间写入的速度是跳变的,或者说写内存时有非常明显的人工制造的Jitter。当光驱完成一次DMA传输把一块CD音轨数据拷贝到内存,操作系统会通知抓轨软件“你的快递到了”。抓轨软件一次又一次地发出读光盘请求,把读到内存的音轨数据做一些检查和简单处理,攒到一定数量的音轨数据,等自己申请的内存快堆满了,就会把检查完的音轨弄成一批往硬盘写,然后继续请求读CD直到完成抓轨。写硬盘的工作,对于抓轨软件来说,要做的就是请求操作系统中的文件系统创建和打开一个硬盘文件,然后一次一次不定时地通过DMA请求把指定内存位置上的音轨数据拷贝到硬盘。其中在音轨暂存在内存里的这段时间,每过几十毫秒整个内存还会被重写一次,因为内存里每个bit就是一个爱漏电的小电容,不赶紧重写等电容充电漏光了,就不知道是0还是1了。

3.硬盘写入:硬盘驱动程序每次接到操作系统写盘请求,就会通过DMA从内存指定位置读取音轨数据,写到硬盘内的缓存上。然后硬盘控制器会根据磁头调度算法寻找合适的时机把内部缓存上的数据写到磁盘上。硬盘磁头读写盘的速度在1Gbit每秒左右,bit time是1纳秒左右,如果要讲Jitter也是这个数量级的。

上面过程我们看到了一路上Jitter的转变,从CD读出时的10-100纳秒级或者很多毫秒级(不同扇区),到内存读写的纳秒或者很多秒级(不同次读写之间),到硬盘写入的纳秒级或者很多秒级甚至分钟级,这整个过程能不能忠实地或者不太忠实地传递最初CD读盘的Jitter?

这个过程中,大家会注意到各个步骤的存取速度(或者说时钟频率)是相差很大的,有的很快有的很慢,而且那些钟是走走停停的并不连续,那么这样的操作怎么能完成的呢?这中间需要缓存和等待,很多次的缓存和等待。实际上,如果从CD上的一段音轨的角度来看:它被从碟片上读出来写入光驱缓存,然后在缓存上歇了一会儿等等后面的兄弟;等凑齐一批兄弟,就一起坐上一辆叫IDE的地铁进入主机内存继续等着;等轮到抓轨软件干活了,从内存把音轨读到CPU看看有没有问题,没什么问题就继续在内存里等着;又等了不知多少毫秒或几秒,突然跟内存里的一大批兄弟一起被写到硬盘缓存,接在又一次开始了无聊的等待;等磁头有空了闲着没事做了,或者有足够多兄弟要求去磁盘上同一个地方了,才被写入到磁盘上变成磁翻转。如果换个角度,从磁盘上写完了的一条音轨来看,它其实是被分尸成好多段,写在磁盘的不同位置上。每一段写入的时间间隔可能是连着的,也经常可能差了几百毫秒,甚至可能差了很多秒或很多分钟。

回过头来我们现在看看磁盘上一条音轨的“写入Jitter”。同一区段上的bit之间,写入jitter是1纳秒以下,不同段之间的是几毫秒到几百毫秒到很多秒不等,最气人的是,写入的顺序不一定是按音轨内容的顺序,最后一段可能是最先写入的。你说这么个乱七八糟的“磁盘写入Jitter”怎么能反映当年的CD读盘Jitter啊?其实就是当年那个CD读盘Jitter,因为是20倍速读取的,如果条件差不多,Jitter也只有1倍速读取时的20分之一左右,就算是出了奇迹带入磁盘了,也不见得比天价CD机的Jitter大。真要拿硬盘跟CD比jitter,硬盘的读写速率是1Gbps级的,CD机是1Mbps级的,硬盘的Jitter是CDjitter的千分之一(串行操作,时钟频率越高,jitter的绝对值就越小)。不过jitter是只讲相对值,不讲绝对值的,就是用UI(单位时钟间隔)做单位,不用秒做单位。换句话说不同时钟频率的信号,它们的jitter没有比较意义,也不可能传递。

实际上,Jitter只有在带有(严格或不严格的)时钟同步的操作步骤之间才能传递,比如说CD机1倍速读碟,解调解码分离出PCM数据,通过SPDIF或I2S或任何机制向DAC传递,DAC锁定并接收信号,送入DA芯片,这样一路共享或分享同一个时钟,各步骤之间存在时钟锁定,这种情况下Jitter才能传递。ASRC则是一种不严格的时钟同步,虽然每个bit可以不同步,但是宏观上是同步锁定的,如果不断线,一千年后DAC和转盘的时钟还是锁定的。

如果信号传递过程中根本没有(哪怕是不严格的)全程时钟同步,就不存在Jitter传递的命题了。比如说用低速从A传到B,歇了一会儿,又高速从B传到C,又歇了几天或几年,又高速从C传到D,最后低速从D传到E,在E点看到的Jitter,就完全是D点到E点之间产生的,跟前面的A、B、C一点关系都没有。有人要问CD上的坑的长短怎么回事,它不是能存很多年吗?其实CD上的坑的长度抖动在写入时就并不体现(或者说记录)前端信号的Jitter,而是写入过程中的各种因素影响的产物,在读出时既不唯一决定也不直接决定读出信号的Jitter特征(也就是说不同转盘或者同一转盘不同次读取,得到的Jitter特征不同),它只是众多Jitter成因中的一个,但并不是一个Jitter传递者,也不是Jitter能够在两个离线传输操作中传递的证明。

如果我们要找一次回放过程中的Jitter的话,要从回放时钟的源头开始算起,在回放时钟产生之前的步骤跟回放Jitter是没有关系的(跟读硬盘之类的操作无关的,除非你用44.1khz的时钟读硬盘再同步传输到DAC)。如果是44.1khz的音轨,我们要找44.1khz时钟的来源,是CD读取时钟,还是CD缓存后的串行化时钟,还是声卡时钟,还是操作系统软件模拟时钟,还是外部独立时钟?总之它一定要是一个44.1k或者被用于获取44.1k脉冲的时钟,而不会是内存总线时钟,不会是硬盘读写时钟,不会是墙上挂着的那个钟,因为它们都跟最终回放时钟(DA时钟)的产生没有任何关系。说到底,有时钟才有Jitter,没有时钟就没有Jitter,不相关的时钟之间不传递Jitter。

最后顺便提一下“Jitter记录”的问题吧,Jitter能被记录吗?能,但是只有傻瓜才去记录Jitter。为什么?因为记录jitter就跟记录误差一样,你说我这个电压是2.55V,误差是+0.003V,或者你说我身高是2米,误差是-20公分,这叫做记录误差。但是你为什么不说这个电压是2.553V或者你身高1.80米呢?Jitter的记录是同样的道理,如果我们知道Jitter是多少,为什么不干脆去除它,记下来当饭吃啊?如果我们要测量和记录jitter的数值来修正PCM信号的Jitter,我们就需要比主信号脉冲高得多的信号频率(比如192khz)来记录Jitter,结果是你存下了一条44.1k的音轨信号,外加一条192khz的Jitter修正信号流,你说这有趣吗,好玩吗?再说了,真要是用192khz数据流记录Jitter,对于改善44.1k的Jitter帮助也不大,只能修正1/4脉冲宽度的Jitter而已,修正后的Jitter还是可能很大,1/4UI的jitter其实在好的系统里算是大的了。如果我们脱裤子放屁用一个比主信号更高级的信号载体来记录Jitter,我们为什么不直接用这个高级信号载体记录音频信号本身啊,直接弄一条192k的音轨不好吗?就好像说,你故意用一把很不准的尺测量长度,然后再拿一把很准的尺去测量前次测量的误差,然后把不准的测量值和精准的误差值一起记录下来,你说有这么干的吗?Jitter就跟误差一样,我们知道有误差,我们甚至知道误差的可能范围(比如+/-1V什么的),但是我们不知道(条件不允许知道)具体每次误差是多少,如果我们知道的话,当初就不会记录有误差的数据了。

再加一个,PCM或者wav里面有没有记录时钟和Jitter?都有!有时钟,隐含时钟,就是说它通过控制信息告诉你,我是44.1k的或者96k的,你要用44.1k或者96k的时钟来给我作DA转换。但是它没告诉你(也没法告诉你)怎么产生一个44.1k或者96k的时钟,它也不知道你给它做DA时候加的44.1k的时钟准不准,更不知道你的时钟有没有Jitter了。那PCM信号里有记录Jitter吗?也有,也是隐含的,不过这次隐含得更彻底,根本就没写。就是0嘛,写个啥呀,你要用0的jitter来播放我。这个跟一张琴谱一样的,琴谱上也有时钟,也有Jitter,它说,我是4/4拍的,Jitter是0,你要用稳定的4/4拍来演奏。至于你怎么找到4/4拍的感觉(时钟脉冲),怎么保证节奏稳定(0的Jitter),那是你的事,琴谱(或者PCM)才不管呢。有没有琴谱上不写多少拍的呢?有。怎么办?你一定知道,猜呗!同理,也有PCM不写时钟的,但是播放它的设备能猜出来。Jitter为什么没写?因为它估计你一定猜得出来(它认为)是0啊!要是它知道当年AD时的Jitter不是0而是具体什么数值,该是多少它早就调整好了。

小白 发表于 2009-8-1 10:30:13

理论分析不难,我也不相信JITTER会在文件里保存和传递. 但不同光驱抓轨的WAV文件,不同来源的WAV文件,听感存在细微差别,而这种差别目前我们很难去解释,只能把JITTER搬出来,认为存在这种可能,听感的差异是因为不同来源数据流的JITTER特征在写入WAV文件时留下了"印记". 除非有其他合理的解释.

winter200 发表于 2009-8-1 10:35:45

头晕:Q

pcear 发表于 2009-8-1 10:43:42

原帖由 小白 于 2009-8-1 10:30 发表 http://www.headphoneclub.com/bbs/images/common/back.gif
理论分析不难,我也不相信JITTER会在文件里保存和传递. 但不同光驱抓轨的WAV文件,不同来源的WAV文件,听感存在细微差别,而这种差别目前我们很难去解释,只能把JITTER搬出来,认为存在这种可能,听感的差异是因为不同来源数 ...
在这个听感的差异方面,我认同frui的观点,虽然我个人无法实证。
jitter实际上无处不在、不可消除、而且对音质、听感的确有影响。但过于强调客观听感,扩大jitter的影响,弱化听音的主观性,是不对的。

eudemon7 发表于 2009-8-1 11:17:19

抛开论坛的争论,楼主的文章是好东西,保存了,谢谢!

anderson 发表于 2009-8-1 11:47:33

原帖由 小白 于 2009-8-1 10:30 发表 http://bbs.headphoneclub.com/images/common/back.gif
理论分析不难,我也不相信JITTER会在文件里保存和传递. 但不同光驱抓轨的WAV文件,不同来源的WAV文件,听感存在细微差别,而这种差别目前我们很难去解释,只能把JITTER搬出来,认为存在这种可能,听感的差异是因为不同来源数 ...

会不会是因为文件保存(分布)在不同的磁盘区域,磁头执行了不同的寻道路径,从而给电环境造成了不同的变化(这个有可能的吧,转盘厂商都说要少用伺服的),然后对数字输出(只有在动起来时)产生了带有一定特征的影响,然后这些jitter就一路晃悠进了解码的数字输入?

cfuer 发表于 2009-8-1 12:05:37

骑墙待红杏 发表于 2009-8-1 12:10:30

我同意原来狂版的说法, JETTER 不被传递, 但是会随机新生成。

anderson 发表于 2009-8-1 12:20:50

话说想起来一件事情,不知哪位手里还有Genesis的数字镜?这东西记得可以测量大约模的jitter么,至少不同转盘的jitter等级可以很容易的测出来。有没有可能做一下电脑数字输出这两个不同文件数字讯号时的jitter的测试呢?如果wav真的由于某种原因很明显地记录反应了转盘的素质,那jitter的等级差异一定相当大。

zzz1111 发表于 2009-8-1 12:38:26

原帖由 小白 于 2009-8-1 10:30 发表 http://bbs.headphoneclub.com/images/common/back.gif
理论分析不难,我也不相信JITTER会在文件里保存和传递. 但不同光驱抓轨的WAV文件,不同来源的WAV文件,听感存在细微差别,而这种差别目前我们很难去解释,只能把JITTER搬出来,认为存在这种可能,听感的差异是因为不同来源数 ...

换个角度,如果在法庭上审理下面这个案子,结果也许比我们现在探讨的这个无头案明显一些:

小白兄说:“虽然我也不信你会干这个,但是抽屉里的钱确实少了,又没有其他人来过,所以只能是你偷的。”
Jitter说:“为什么非得是我偷的啊?干嘛不去问问Kitter,Litter,Mitter和Nitter他们几个啊?”

基于以下的分析,对Jitter的指控其实是漏洞百出的,任何律师都会说“you don't have a case”
1. “抽屉里的钱”是不是一定少了?尽管我们可能觉得很肯定,但是有足够可靠的证据吗?如果不够,不妨先存疑的好
2. 我们肯定“没有其他人来过”吗?如果钱真的少了,会不会是其他人偷的?
3. 如果真的“没有其他人来过”,我们能证明姓J的那个冤大头就来过吗?即使他来过,就一定是他偷的吗?

回头来看我们的case,证明“听感存在细微差别”的有效证据(ABX结果)是有的,但是恕我直言是个孤证,同时注意到还有反面的有效证据(ABX结果)存在,所以难以作为充分证据采信。另外这正反两方面的ABX证据都有一个瑕疵,因为这个ABX没有做到double blind,严格讲不是双盲的ABX是没有证据价值的。所以我觉得“听感存在细微差别”还得暂时存疑,不能做出认定,是个assumption,不是个established truth。

所以钱丢没丢还不确定呢,去找谁偷的意义不大。如果我们assume,注意是assume钱确实丢了,那么我们就试试看筛选嫌犯,如果我们找来5个嫌犯,证明其中4个没偷,就能推断第5个是小偷吗?小白兄连多找一个嫌犯装装法治社会的样子都没做,就把Jitter拖出去毙了,你说阿J是不是有点冤,罪名居然是“除非有其他合理的解释”。

其实如果我们把尚未确切证实的前提作为assumption而不是conclusion或者absolute truth来进行推理验证,结果暂时没有找到“其他合理的解释”,那么逻辑上的结论只能是,for the time being,假设不成立,而不是假设成立,Jitter is guilty。

以上讨论不知小白兄是否认同,如果把“认定事实”中隐藏的“assumption”指出来还原其假设面目,会有利于我们更全面的看问题,更完整地把各种可能性放在平等的地位进行分析,更有可能得到一个更严密的结论。

我个人的分析,在这个案子里,“可闻差异”还没有有效建立,至少还需要找到更多交叉验证的有效证据,同时需要排除现有一些反面证据的有效性,否则根本不能立案,当然不用去抓贼啦。而向我这样的业余三脚猫侦探,没有case也可以调查,所以我前面发的帖子其实就是我找到的Jitter同学不在场的证据,当然只是我提交的证据,在交叉印证前有效性同样也没有建立。

所以我看这个案子的现状是:可闻差异尚需建立,案子不一定成立;Jitter是嫌犯之一,有人提供了不在场证据。如果要进一步侦察,显然有效建立本案和排查找到更多嫌犯应该是当务之急。大家的看法呢?

zzz1111 发表于 2009-8-1 12:49:57

原帖由 anderson 于 2009-8-1 11:47 发表 http://bbs.headphoneclub.com/images/common/back.gif


会不会是因为文件保存(分布)在不同的磁盘区域,磁头执行了不同的寻道路径,从而给电环境造成了不同的变化(这个有可能的吧,转盘厂商都说要少用伺服的),然后对数字输出(只有在动起来时)产生了带有一定特征的影响 ...

硬盘Jitter完全有可能影响系统电源性能和电磁环境,理论上可能影响听感,不过先不谈硬盘Jitter对听音的影响程度是不是比太阳黑子和厄尔尼诺的影响大,可以肯定的它不会形成可重复的可靠听感,

因为每次读盘时的硬盘Jitter是没有固定模式的。一次硬盘读取,可能需要寻道,可能不需要寻道(顺风车,磁头正好在那个道上),也可能根本不用磁头动作(数据在缓存上)。另外,硬盘读取,播放器读内存和播放时钟建立是3个互相独立的异步操作,之间没有时钟传递。Jitter是时钟的寄生虫,没有时钟这个宿主,Jitter这条虫是不存在的。

小白 发表于 2009-8-1 12:52:44

楼上所说我认可. 楼主涉及的问题,还处于一个大家在"推测"的阶段,没有什么定论可下. 我提出过的"jitter留痕"当时就说了只是一种假想. 连我自己都无法说服自己确认. 其实在很多领域里都存在这样类似的现象: 对一些现象我们没有确凿证据去下结论,只能提出一些假想而已.

小白 发表于 2009-8-1 12:57:34

另,我觉得楼主在一楼给出的详细描述是很有阅读价值的.

zzz1111 发表于 2009-8-1 13:02:49

原帖由 cfuer 于 2009-8-1 12:05 发表 http://bbs.headphoneclub.com/images/common/back.gif
我个人对jitter的传递是认可的。无论你用什么物理量反映0和1,两个表示同样信息(比如1)的信号的绝对值总会有差异,这根本就不能避免。而且无论如何,文件的0、1是有顺序的,这些参差的差异也是有顺序的,什么手段( ...

数字信号在同步传输状态(on the move)只有两个性质,integraty和Jitter,在停止状态(at rest)就只有一个性质,integraty,就是0或1,对或错。

数字信号的任何模拟属性,包括电压啊、边缘退化啊、脉冲宽度啊、光强度啊、色散啊什么的只会影响数字信号在当前介质中的传输(moving)或者保存(rest)的质量,传输不好会有Jitter甚至误码,保存不好会有误码。

如果像cfuer兄所断言的那样,Jitter有如此可靠可重复的传递特性的话,我们早就把jitter开发作为数字通信媒体了,用它承载信息不是成了主信号上的一条免费附加信道?就像电话线上走ADSL似的多好?

小白 发表于 2009-8-1 13:06:15

另,楼主可否推测或描述一下,当我们用数码录音机(比如Sony D50)以数字方式录制一台CD机的播放,把来自CD机的实况数据流(data stream)写成一个wav文件时,具体的过程是怎么样的. 我觉得这个过程和你一楼描述的电脑抓轨的过程,会是不同的.

电脑抓轨时,如你的描述,cd盘上的数据被先读入缓存,再读入电脑内存,再写入硬盘,是个爆发式的工作模式(数据是一阵一阵传递的),而来自cd播放器实际工作时光纤输出的data stream,是一个"涓涓细流"式的平滑匀速传递着的数据,而且这个数据流是带有时钟信息的.

这样两种工作模式下产生出来的wav文件,是否存在哪些机会,会造成差异.

[ 本帖最后由 小白 于 2009-8-1 13:10 编辑 ]
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Jitter可以在CD,内存,硬盘和网络之间传递吗?

耳机俱乐部微信
耳机俱乐部微信