找回密码
 -注册-
楼主: wood333
打印 上一主题 下一主题

水一贴,机械硬盘比固态硬盘作音源声音更润泽?

[复制链接]
121
发表于 2023-4-17 13:57 来自手机 | 只看该作者 来自 广西北海
再来说我问那个程序员的,RS232通信的问题。
1,有通信协议的情况下,按通信协议结束,例如规定了帧头和帧尾,或者数据长度;
2,没有通信协议,以数据串中的回车符(其次是换行符)为标志,判断数据传输结束;
3,不符合以上情况,按当前通信波特率,计算出2个字节之间的时间间隔,超过时间间隔为数据传输结束。

就是这么简单的逻辑,与编写程序所用的语言和方式完全无关,只是基础知识的问题,作为一个程序员,连最基础的串口通信都不会,开什么玩笑。
回复

使用道具 举报

122
发表于 2023-4-17 16:12 | 只看该作者 来自 北京宣武
看melco和aurender低端和高端型号的硬盘选择,固态肯定不会比机械差。
回复

使用道具 举报

123
发表于 2023-4-17 18:00 | 只看该作者 来自 亚太地区
本帖最后由 zasflower 于 2023-4-17 19:46 编辑
闪烁的夜 发表于 2023-4-17 13:50
软件的缓存机制,是一个很简单的逻辑,明白了的话,就不会去纠结什么硬盘延迟问题。
简单的解释如下:
假设 ...

软件的缓存问题实际上远比你想象的要复杂。

首先,软件内部不会频繁的去移动内存。平移内存是很费时的,而是用内存的指针地址代替。

而且软件为了不引起数据混乱,一般设计成单线程不会设计成多线程以免引起死锁和数据混乱因为频繁的在读写操作内存。DSP代码会频繁的访问和写入内存,大约每秒500万次的数据操作量。每个数据占用64bit,双精度。

首先,缓存代码创建一个96kb的内存空间。
和操作系统请求某flac文件的16kb磁盘内容。分开请求6次以免引起系统io阻塞。
这个内容是2进制对齐的。

96kb读取完毕后交给flac解码器,指示flac解码器从96kb的0开始处指针读取96kb内存,flac解码大约一秒的数据放到数据输出缓存。交给DSP程序代码。

DSP程序代码处理这1秒的音频解码后的数据。交给声卡。

现在数据扔给声卡了。96kb不一定flac解码器是刚好就是用96kb。因为虽然磁盘读取是16kb 16kb对齐的。解码器不一定。

flac解码器现在标记96kb哪一部分是脏数据(已经用完的)
在flac解码器和DSP处理程序处理数据的时候程序都不会从磁盘读取文件。以免被操作系统挂起引起声音卡顿。

现在flac解码器和DSP音效处理程序都已经处理完数据。1秒的缓冲区数据已经接近用完。
重新开始和操作系统请求磁盘数据。

假设现在延迟正常,稳定,这一切都没有问题。所以我说机械也并不是没有延迟,只是延迟稳定而已。

现在假设延迟异常。缓存代码和操作系统请求16kb新数据。
现在延迟异常,磁盘IO卡住。操作系统挂起程序,不再给程序分配CPU。
整个程序卡死。

然后声卡1秒的DSP输出声音数据播放完了。

程序仍然还被操作系统因为磁盘IO挂起卡住。声音卡住。操作系统要因为磁盘IO阻塞挂起程序,程序是没有什么办法的。

延迟正常的情况下这一切都没什么问题,延迟波动过大延迟异常的情况下操作系统将因为磁盘IO阻塞直接挂起程序。不再让程序执行CPU代码直到磁盘可以访问数据磁盘IO正常。

这就是为什么会有把磁盘文件全部缓存到内存再进行播放的操作。整个播放过程完全不和磁盘IO请求数据。程序也就不会被操作系统因为磁盘IO问题挂起导致无法在CPU执行代码整个程序完全被冻结。磁盘IO延迟异常卡住,程序就会被操作系统挂起冻结。此时整个程序无论界面,代码全部被冻结直到磁盘IO正常。

还说播放过程中请求32MB的缓存,这不扯淡么,在操作系统这32MB完全准备好和磁盘IO可用前,整个程序都被冻结。代码不执行,CPU转交给别的没有磁盘io卡住的程序使用。所以现在请求文件都是请求一小段,更新一下界面,再请求一小段。这样程序界面和代码执行才不会被系统冻结(或者被短暂冻结,比如0.02秒 0.01秒 20毫秒 10毫秒,对用户几乎不影响)。

这就是为什么磁盘永远都会有延迟。但是延迟稳定不会过大波动很重要。

和打游戏一样,服务器永远都会有延迟。程序也会设计延迟机制。但是延迟不会波动过大很重要。

你网络如果不稳定,啥视频播放器都白搭。和看直播一样,你网络不稳定画面卡顿怪视频播放器?视频播放器没缓冲区么?你自己网络的波动过大不稳定的问题而已。自己网络问题不要怪缓冲区,别人就没延迟么?但是人家延迟稳定啊,别人网络稳定的视频都不卡。

还说我拿游戏服务器举例不对。两个网络连接服务器,都有延迟。一个延迟90 100 100,有延迟,波动小,最小90,最高110。一个延迟一会20 一会500 一会1000,最小20,最大1000。是头猪都知道应该选100延迟那个服务器。

回复

使用道具 举报

124
发表于 2023-4-17 18:13 | 只看该作者 来自 亚太地区
gbsweet 发表于 2023-4-17 16:12
看melco和aurender低端和高端型号的硬盘选择,固态肯定不会比机械差。

那是人家特别订做的发烧固态硬盘

Melco人家还建议普通烧友还是用hdd
回复

使用道具 举报

125
发表于 2023-4-17 19:06 来自手机 | 只看该作者 来自 广西柳州
zasflower 发表于 2023-4-17 18:00
软件的缓存问题实际上远比你想象的要复杂。

首先,软件内部不会频繁的去移动内存。平移内存是很费时的 ...

这样吧,你喜欢偷换概念,我按上次的方式一样,换一个你不能偷换概念的方法:
首先,你一开始大篇幅的解释固态硬盘和机械硬盘读取数据的方式(延迟),目的是想证明什么(说明什么?)
回复

使用道具 举报

126
发表于 2023-4-17 19:07 | 只看该作者 来自 中国
本帖最后由 zasflower 于 2023-4-17 19:13 编辑
闪烁的夜 发表于 2023-4-17 19:06
这样吧,你喜欢偷换概念,我按上次的方式一样,换一个你不能偷换概念的方法:
首先,你一开始大篇幅的解 ...

用HDD机械硬盘更好而已。

爱用哪个用哪个。

反正我用HDD机械硬盘。

回复

使用道具 举报

127
发表于 2023-4-17 19:18 | 只看该作者 来自 黑龙江
zasflower 发表于 2023-4-16 15:41
要看程序怎么设计,程序可以把数据全部加载到内存条。老的程序不一定会针对SSD单独设计。因为程序写完的 ...

世界上第一块固态硬盘诞生在1989年,你的程序要有多老,DOS年代吗,那个年代的程序还能运行在现在64位系统上吗,就单纯的播放软件来说,这是重点,单纯的播放软件来说
回复

使用道具 举报

128
发表于 2023-4-17 19:21 | 只看该作者 来自 中国
linkoyu 发表于 2023-4-17 19:18
世界上第一块固态硬盘诞生在1989年,你的程序要有多老,DOS年代吗,那个年代的程序还能运行在现在64位系 ...

Melco人家还建议普通烧友还是用hdd

原因是什么?回答一下。Melco是1988年给的这个建议么?
回复

使用道具 举报

129
发表于 2023-4-17 19:29 | 只看该作者 来自 黑龙江
zasflower 发表于 2023-4-17 19:21
Melco人家还建议普通烧友还是用hdd

原因是什么?回答一下。Melco是1988年给的这个建议么?

大哥,我说的是播放软件
回复

使用道具 举报

130
发表于 2023-4-17 19:31 | 只看该作者 来自 黑龙江
闪烁的夜 发表于 2023-4-17 19:06
这样吧,你喜欢偷换概念,我按上次的方式一样,换一个你不能偷换概念的方法:
首先,你一开始大篇幅的解 ...

这哥们笑死我了,总是文不对题,有可能真是程序员,脑子都用在编程上了,阅读理解零分
回复

使用道具 举报

131
发表于 2023-4-17 19:35 | 只看该作者 来自 中国
linkoyu 发表于 2023-4-17 19:29
大哥,我说的是播放软件

我就问你。

Melco人家还建议普通烧友还是用hdd


原因是什么?
回复

使用道具 举报

132
发表于 2023-4-17 19:38 | 只看该作者 来自 黑龙江
zasflower 发表于 2023-4-17 19:35
我就问你。

Melco人家还建议普通烧友还是用hdd

我不知道啊,我先问的你,为什么又来问我?为什么?
回复

使用道具 举报

133
发表于 2023-4-17 19:39 来自手机 | 只看该作者 来自 广西柳州
zasflower 发表于 2023-4-17 19:07
用HDD机械硬盘更好而已。

爱用哪个用哪个。

看吧,一问到核心问题,就尴尬了吧,因为无法自圆其说。
回复

使用道具 举报

134
发表于 2023-4-17 19:42 | 只看该作者 来自 黑龙江
zasflower 发表于 2023-4-17 19:35
我就问你。

Melco人家还建议普通烧友还是用hdd

Melco是谁我都不认识,这人是在什么环境什么语境什么背景下说的这句话我都不知道,我哪知道他为啥要说这句话


出于一个人最基本的礼貌问题,是不是应该先回答我的问题,再问我问题比较好啊,朋友
回复

使用道具 举报

135
发表于 2023-4-17 19:43 来自手机 | 只看该作者 来自 广西柳州
linkoyu 发表于 2023-4-17 19:31
这哥们笑死我了,总是文不对题,有可能真是程序员,脑子都用在编程上了,阅读理解零分

他是想通过硬盘延时的方式,来炫耀一下他知道很多。
然而,有了缓存和预读之后,在读取硬盘数据时如果延时了(等待),但是播放软件却没有停止呀,还在继续读取缓存里面的数据呀。等硬盘响应过来了,自然会补充数据到缓存里面。

那哥们不不能完全理解这个逻辑,或者他自己编写的程序就是有这种BUG,不知道什么叫多任务。
回复

使用道具 举报

136
发表于 2023-4-17 19:48 | 只看该作者 来自 黑龙江
zasflower 发表于 2023-4-17 19:35
我就问你。

Melco人家还建议普通烧友还是用hdd

刚才我说到了礼貌问题,人家楼主问的是两种硬盘声音有没有区别,这都歪哪去了

对不起,我错了,您也别回复我了,到此为止,您说啥是啥
回复

使用道具 举报

137
发表于 2023-4-17 19:48 | 只看该作者 来自 中国
本帖最后由 zasflower 于 2023-4-17 19:58 编辑
闪烁的夜 发表于 2023-4-17 19:43
他是想通过硬盘延时的方式,来炫耀一下他知道很多。
然而,有了缓存和预读之后,在读取硬盘数据时如果延 ...

也是服了你的脑子。。真不知道你这脑子怎么写的程序。。。

操作系统多任务是指操作系统能同时运行多个程序。

对于单个程序而言,磁盘IO卡住就是本程序被操作系统冻结。CPU执行权限被操作系统挂起。
Windows操作系统上面所有程序界面卡死没见过?最简单的,迅雷在操作磁盘大数据的时候界面就会冻结。打开文件的时候瞬间程序冻结。

多任务人家指运行电脑同时运行多个程序。多任务都搞不明白。
连个操作系统支持多任务都不明白。Windows是一个多任务操作系统是指Windows能同时运行多个程序。


回复

使用道具 举报

138
发表于 2023-4-17 19:49 | 只看该作者 来自 黑龙江
闪烁的夜 发表于 2023-4-17 19:43
他是想通过硬盘延时的方式,来炫耀一下他知道很多。
然而,有了缓存和预读之后,在读取硬盘数据时如果延 ...

不失为一种可能
回复

使用道具 举报

139
发表于 2023-4-17 20:03 | 只看该作者 来自 中国
本帖最后由 zasflower 于 2023-4-17 20:19 编辑
闪烁的夜 发表于 2023-4-17 19:43
他是想通过硬盘延时的方式,来炫耀一下他知道很多。
然而,有了缓存和预读之后,在读取硬盘数据时如果延 ...

磁盘io都卡住了还程序执行。。。迅雷下载文件快下载完的时候迅雷界面卡死没见过是吧?

磁盘io卡住意味着程序代码会被操作系统挂起暂时不允许执行CPU。CPU被转交给别的应用程序直到磁盘IO恢复。磁盘IO恢复后操作系统重新允许程序执行。谁请求的磁盘io挂起谁。
还说请求磁盘io的时候音乐还在播放,请求磁盘io的时候程序就被暂停了,音乐还在播放是通过别的机制声音输出缓存实现的。此时声音是操作系统在播放,只是声音已经通过输出缓存提交给操作系统了。

整个程序的缓存机制根本不是你说的这样频繁平移内存,就是我上面详细说的。


回复

使用道具 举报

140
发表于 2023-4-17 20:17 来自手机 | 只看该作者 来自 广西柳州
linkoyu 发表于 2023-4-17 19:49
不失为一种可能

我把主要原理都说了一遍,相信大多数朋友已经明白,这个所谓硬盘延时是什么情况,它只是读取数据的开始阶段,类似机械硬盘的“寻道时间”这样的过程,所以有了缓存区块后,就能解决这个问题。

合理编写的软件,在遇到正常的硬盘响应延时情况时,并不会干扰软件正常运行。
如果遇到硬盘超时无响应,不管机械硬盘,还是固态硬盘,都是一个结果。
所以,通过说固态硬盘和机械硬盘延时不同的方式,来想去说明在音乐播放上导致的差异?这个就是这位朋友想要炫耀的东西。

相信,各位看贴的朋友自己心里有判断,是怎么回事了。我也不想再跟这个哥们回复了,再回复就是我在水贴了,浪费论坛资源,都有些感觉不好意思了

到次,结束,我不会再跟这个哥们回帖。在他那样的程序逻辑里面,的确300S的歌曲可能会变成301S来播放。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-2-22 04:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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