找回密码
 -注册-
查看: 6031|回复: 82
打印 上一主题 下一主题

来终结一个硬盘影响声音的玄学(更新的发现)

[复制链接]
跳转到指定楼层
1
发表于 2024-10-7 22:12 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式 来自 上海浦东新区
本帖最后由 wxwxwx0 于 2024-10-10 12:25 编辑



无意中看到这个旧帖子:http://erji.net/forum.php?mod=viewthread&tid=2300444
有人说:
如果你从HDD硬盘复制一个音频文件文件到SSD固态硬盘,你会发现,播放复制好的SSD上面的相同文件,会带有HDD播放同一个文件的味道;
如果你从SSD硬盘复制一个音频文件文件到HDD机械硬盘,你会发现播放HDD机械硬盘上面的同一个音频文件,会和播放SSD上面的文件声音走向近似,但是会模糊很多;
这个神奇的结论引起了我的兴趣,马上就来实践一下... 最后得到了很多有用的发现!

声明:

我相信这些发现具有一定的普遍适用性,但不保证100%适用。

配置说明:

电脑操作系统(win-server 2022)装在固态硬盘,音乐文件在机械硬盘(拷贝到固态硬盘一份),主要通过Foobar来对比

1)foobar默认配置下,hdd声音正常,ssd播放的声音会明显变糊、高频被砍(不用怀疑,这个差距巨大,听不出来你就是100%木耳)

2)反复拷贝文件实际听不出来变化,比如从hdd拷贝到ssd是ssd的声音,再拷贝回hdd就还是hdd的声音(说明帖子开头那个神奇说法不成立)

3)然而我也发现了一些更有趣的现象:实际上这个foobar只要播放过一次来自ssd的文件,之后再播放任何文件(无论hdd还是ssd)声音一律都会变糊

关掉foobar再重启就会恢复正常

4)接下来尝试下将文件预读取到缓存。在foobar设置里找到这两个文件buffer(注意这个和playback buffer不同,那个是解码后的),设置为一个比较大的值(默认是0)


你的预期是:这样下来声音就都正常了。然而事实是:这样设置后 每次foobar启动后播放任何文件就直接是糊的了(不用再去播放一次ssd才变糊了)

#3、#4这两步共同说明了:声音变糊不仅和音频文件在ssd有关,也应该和操作系统本身在ssd有关

当然也和播放器本身的工作方式有关:这些影响未必会影响所有播放器,但也不只影响foobar。比如我试了potplayer基本不受硬盘影响,但极听播放器就和foobar的表现一致

5)搜索了一下得知这种影响是因为固态硬盘开了TRIM功能(trim会提升ssd的性能,同时劣化音质)

于是我们把它关掉(用命令:fsutil behavior set disabledeletenotify 1,1是关闭0是开启)


关掉trim后就发现ssd和hdd声音完全一样了,声音不再变糊了,然而... 关掉后相比trim开启时的hdd:声音明显又变散一些、低频下潜少了

很明显这仍然是操作系统本身在ssd的缘故,关掉trim后性能受到了影响。


结论:
1 最好不要用固态硬盘,也不要ssd/hdd混用
2 如果你的系统已经安装在ssd了:
  -- trim功能保持开启
  -- 音乐文件都存到hdd
  -- 不要开foobar的文件预读buffer
  -- 建议开启foobar的那个“Prevent hard disk sleep while playing”选项,也会让声音更好


更新的发现,关于full file buffering 和read-ahead这两个选项:
1)发现两个选项对(hdd情况下)声音的影响是不同的:full file buffering是削低频、read-ahead是变糊

2)full file buffering当然就是你们说的一次加载到内存,但注意它加载的是单个文件,并且当单个文件播放完就会丢弃(所以当你改变这个选项,重新播放一下同一个文件就能听到前后变化)
read-ahead在网上几乎找不到Foobar的说明,但通常来说它的含义是:当你加载一个文件时,同时把这个它邻近的文件块加载到cache
当你改变read-ahead这个选项,可以立刻听到声音前后变化(甚至不需要暂停)

3)把虚拟内存从sdd修改设置到hdd:感觉声音似乎总体上更好了(可能是脑放),但full file buffering 和read-ahead这两个选项仍然会劣化声音


这些发现基本说明 声音的区别和播放器本身的机制、系统的存储架构(cache+内存+硬盘+虚拟内存机制)都有关

补充的建议是:
1 任何情况下都要关掉full file buffering和read-ahead
2 把系统的虚拟内存设置到hdd






83
 楼主| 发表于 2024-10-9 23:41 | 只看该作者 来自 上海浦东新区
本帖最后由 wxwxwx0 于 2024-10-9 23:55 编辑



更新的发现,关于full file buffering 和read-ahead这两个选项:

1)发现两个选项对(hdd情况下)声音的影响是不同的:full file buffering是削低频、read-ahead是变糊

2)full file buffering当然就是你们说的一次加载到内存,但注意它加载的是单个文件,并且当单个文件播放完就会丢弃(所以当你改变这个选项,重新播放一下同一个文件就能听到前后变化)

read-ahead在网上几乎找不到Foobar的说明,但通常来说它的含义是:当你加载一个文件时,同时把它邻近的文件块加载到cache
当你改变read-ahead这个选项,可以立刻听到声音前后变化(甚至不需要暂停)

3)把虚拟内存从sdd修改设置到hdd:感觉声音似乎总体上更好了(可能是脑放),但full file buffering 和read-ahead这两个选项仍然会劣化声音


这些发现基本说明 声音的区别和播放器本身的机制、系统的存储架构(cache+内存+硬盘+虚拟内存机制)都有关

所以,补充的建议是:

1 任何情况下都要关掉full file buffering和read-ahead
2 把系统的虚拟内存设置到hdd


回复

使用道具 举报

82
 楼主| 发表于 2024-10-9 19:29 | 只看该作者 来自 上海
本帖最后由 wxwxwx0 于 2024-10-9 19:44 编辑
dellmen 发表于 2024-10-9 19:26
别企图偷换概念了,你的原话是“参与cpu运算的是寄存器,不是内存”。寄存器就是cpu一部分,你是想说自己 ...


既然这样你能解释一下“参与”么 cache都没参与呢,内存又是怎么“参与”的

你家组织打扫卫生,你可以参与,你爸可以不参与。参与的对象是运算 不是cpu,你是正在学习中文么
回复

使用道具 举报

81
发表于 2024-10-9 19:26 来自手机 | 只看该作者 来自 广东
wxwxwx0 发表于 2024-10-9 19:04
不要继续忽悠了,我12年前就在用汇编语言写类操作系统的底层调度器了。
参与cpu运算的叫寄存器, ...

别企图偷换概念了,你的原话是“参与cpu运算的是寄存器,不是内存”。寄存器就是cpu一部分,你是想说自己参与自己的运算是吧?逗吗?我们一直讨论的是谁跟cpu交互,那就是内存,寄存器就是cpu本身,自己跟自己交互?你别那么搞笑好不好?
回复

使用道具 举报

80
 楼主| 发表于 2024-10-9 19:19 | 只看该作者 来自 上海
dellmen 发表于 2024-10-9 19:10
哎哟,汇编人才居然不知道寄存器就是cpu的组成部分?还参与cpu运算的寄存器,你是想笑掉我大牙吗?



我是否说寄存器是不属于cpu的?

寄存器参与cpu运算,内存不参与

请正面反驳
回复

使用道具 举报

79
发表于 2024-10-9 19:12 来自手机 | 只看该作者 来自 广东
wxwxwx0 发表于 2024-10-9 19:04
不要继续忽悠了,我12年前就在用汇编语言写类操作系统的底层调度器了。
参与cpu运算的叫寄存器, ...

来,继续你的表演,不知道寄存器就是cpu的一部分就算了,你还以为cpu能绕过内存直接跟虚拟内存运算?原来你才是高端人才啊,居然可以自创一套计算机体系。
回复

使用道具 举报

78
发表于 2024-10-9 19:10 来自手机 | 只看该作者 来自 广东
wxwxwx0 发表于 2024-10-9 19:04
不要继续忽悠了,我12年前就在用汇编语言写类操作系统的底层调度器了。
参与cpu运算的叫寄存器, ...

哎哟,汇编人才居然不知道寄存器就是cpu的组成部分?还参与cpu运算的寄存器,你是想笑掉我大牙吗?
回复

使用道具 举报

77
 楼主| 发表于 2024-10-9 19:04 | 只看该作者 来自 江苏徐州
本帖最后由 wxwxwx0 于 2024-10-9 19:08 编辑
dellmen 发表于 2024-10-9 18:55
都说了你不懂就别回答。
1、虚拟内存不是内存,不能参与cpu运算,跟cpu cache交互的内存,这是最基本的计算 ...




不要继续忽悠了,我12年前就在用汇编语言写类操作系统的底层调度器了。
参与cpu运算的叫寄存器,不是内存


回复别人前最起码先去百度一下,或者问问AI。不见得能帮你把道理讲清楚,至少不至于犯蠢
回复

使用道具 举报

76
发表于 2024-10-9 18:55 来自手机 | 只看该作者 来自 广东
都说了你不懂就别回答。
1、虚拟内存不是内存,不能参与cpu运算,跟cpu cache交互的内存,这是最基本的计算机原理,这都没搞懂就别回复了。

2、运行中的数据就是热数据,只能由内存跟cpu交互,虚拟内存根本不参与cpu运行计算,他只是在内存不足时用来暂存内存数据,等内存释放后又加载到内存继续工作。

3、当内存用完内时才会用到虚拟内存,你还整天重启对比的,这能用完你的内存?你的是小霸王配置?
回复

使用道具 举报

75
 楼主| 发表于 2024-10-9 18:28 | 只看该作者 来自 上海

以及:以上所有都是纯理论上的扯淡,与实际问题大概率无关

只要你确实读了正文,基本上就已经排除了:声音变化单纯是由于文件是从硬盘/内存读取 这个区别引起的了

回复

使用道具 举报

74
 楼主| 发表于 2024-10-9 18:09 | 只看该作者 来自 上海

1)虚拟内存是不是内存 本质上没区别,都是暂存数据的地方而已。用来匹配cpu与存储速率一致性的是cache,就连cache的本质也是暂存数据而已。
2)就像楼里回复说的,内存本身是很脏的,不是连续的一大块儿。内存播放未必就比机械硬盘实时读更好
3)“系统不会把热数据放到虚拟内存”,理论上是的,但具体系统如何决定什么是“热数据”的,我不知道。我从来不说我不清楚的东西
4)“现在的内存根本用不完,就算分配了虚拟内存,系统也不会主动去用虚拟内存” -> 会的

回复

使用道具 举报

73
发表于 2024-10-9 16:30 来自手机 | 只看该作者 来自 广东
wxwxwx0 发表于 2024-10-9 15:12
致楼里的计算机高材生:数据被交换到硬盘(虚拟内存)它不是app本身控制的,是系统决定的。

数据和指令 ...

不懂就不要瞎解释了,都已经告诉你了,虚拟内存不是内存,只是用来存内存暂时不用的数据,也就是冷数据,现在要播放的是热数据,系统不会把热数据放到虚拟内存,只可能从虚拟内存里把数据读到内存(使用过的冷数据)。但不管哪种情况,只要是一次性读完,那么产生影响的只会在切歌时候,不会在听歌的过程产生影响。何况现在的内存根本用不完,就算分配了虚拟内存,系统也不会主动去用虚拟内存,瞎扯什么呢。你要玄学就去玄学部件那里忽悠,现在计算机处理的环节,还没到数模转换呢。
回复

使用道具 举报

72
 楼主| 发表于 2024-10-9 15:12 | 只看该作者 来自 上海
本帖最后由 wxwxwx0 于 2024-10-9 15:13 编辑

致楼里的计算机高材生:数据被交换到硬盘(虚拟内存)它不是app本身控制的,是系统决定的。

数据和指令也确实先要从硬盘读出来,但这个过程和app自己也没关系,也是系统做的。app访问内存时如果相应的页表不在,由系统负责把数据从硬盘调度到内存,然后程序继续执行。

所以不存在什么 播放器只要一次性把文件读到内存,就和硬盘无关了...


回复

使用道具 举报

71
发表于 2024-10-9 14:55 | 只看该作者 来自 广东
nQEC 发表于 2024-10-7 22:38
foobar设置全文件缓冲,一次性把文件全读到内存里,根本没硬盘什么事

你是学过计算机的。鉴定完毕。
回复

使用道具 举报

70
 楼主| 发表于 2024-10-9 13:43 | 只看该作者 来自 上海
向晚 发表于 2024-10-9 13:34
听觉上的东西不能短时间连续AB太多次
即使是不同耳机之间的差距 短时间多次切换AB后都会逐渐趋同 人耳自 ...



我自己也有类似体会,说得太好了!
不过觉得可能和我上一条说的有关,因为AB太多次之后人进入烦躁状态了,什么细节对你来说都是噪音了
回复

使用道具 举报

69
发表于 2024-10-9 13:34 | 只看该作者 来自 北京
wxwxwx0 发表于 2024-10-8 09:44
修改了一些配置+重启了几次电脑后,我听不出区别了...

初步怀疑这个问题和虚拟内存有关(但也不排除确实 ...

听觉上的东西不能短时间连续AB太多次
即使是不同耳机之间的差距 短时间多次切换AB后都会逐渐趋同 人耳自身的机制问题

以前看到线下盲听咸菜时也是 前五次100%正确率了 之后继续AB错误率飙升 导致最终盲听失败
好多年前隔壁搞得那个好几款5w级别dac内录盲听活动也是 初听区别很明显 多AB几次后觉得都差不多
回复

使用道具 举报

68
 楼主| 发表于 2024-10-9 12:20 | 只看该作者 来自 上海
本帖最后由 wxwxwx0 于 2024-10-9 12:24 编辑


说个不怕被笑话的观念:越是关心“声音”则越听不出区别,反而当你能心态放松和融入音乐的时候,对细节的感知会剧增

这是因为大脑在不同情况下,会把那些细节的信息处理为“无关的”(从心理的角度它就是噪声)  或“有关的”(与音乐形成有机整体的)
回复

使用道具 举报

67
 楼主| 发表于 2024-10-9 12:02 | 只看该作者 来自 上海
本帖最后由 wxwxwx0 于 2024-10-9 12:03 编辑


昨晚的实验结论:电脑刚开机一段时间ssd和hdd区别不大,比如说大概有5%的区别
和之前这个帖子里的结论一样:http://www.erji.net/forum.php?mod=viewthread&tid=2345815&extra=

但是随时间增加,区别会拉大 到10%、15% ...

回复

使用道具 举报

66
发表于 2024-10-9 11:25 来自手机 | 只看该作者 来自 广东
盐1945 发表于 2024-10-9 11:05
你说说看,硬盘你用的是什么再来聊吧。
这里声音大没啥意义,PChifi该怎么玩,前人大佬们走了很长一段路 ...

我的意思是不要浪费时间和金钱在硬盘上,没啥区别的,花钱搞声音相关的地方去,哪怕是电脑电源都比搞硬盘靠谱
回复

使用道具 举报

65
发表于 2024-10-9 11:05 | 只看该作者 来自 四川成都
dellmen2006 发表于 2024-10-8 17:42
这样说吧,要是真有影响,市面上就会出现大量的“hifi硬盘”产品,例如电源线、排插、usb线那些。奸商会 ...

你说说看,硬盘你用的是什么再来聊吧。
这里声音大没啥意义,PChifi该怎么玩,前人大佬们走了很长一段路,大佬你要是能走出一条新路来,也未尝不是好事。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2025-2-24 18:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表