回复主题: 大家小心,我被雷克萨的512G TF卡玩得爽死了
作者:SONIC3D

原帖由 aironline 于 2020-11-12 17:51 发表

如果知道多大的话就可以验证前面那个说法对不对了。比如这玩意写入50M,5秒以后速度下降,那意思就是这缓存大概250M的。


你可能没完全听懂我意思。
缓存所有主控都要有,不管大小,必不可少。出现过山车主要根源不是因为缓存满了,而是主控的工作策略导致,主控的带宽被大量(甚至全部)分配给了主控缓存到TLC的写入操作中,所以USB总线到主控的I/O带宽就出现瓶颈了,等到缓存彻底被清了,这个带宽才被放出来。虽然间接上也是因为缓存被填满造成的,但是根本上是主控的工作策略导致了缓存过于容易被填满。
另一方面是,部分缓存是主控利用空余的TLC闪存的第一层模拟出的SLC来做的,本身也占用带宽(部分卡256G是240G,实际除去量产标注的坏块,剩下的16G/3,差不多5G就是当主控缓存)。

假设主控缓存分配了300兆。缓存的实际从USB总线的经主控的写入速度可以60兆每秒,也就是5秒会导致写满。而缓存到TLC的写入速度是30兆,也就是需要10秒才能写完。

那么分配策略可以是:

1. 比较保守的方式就是彻底限制这个卡的主控从USB总线接收数据的速度,卡在30兆/s这个底线,这样你即使复制整张卡的几十G内容,你看到的复制曲线都是一直线的30兆/s,因为永远不会达到TLC写入欠载临界点(如果是双通道的,那么速度就可以翻倍)。

2. 而中度保守的,就是让主控从USB接收数据的速度卡在40兆左右,这样会有10兆的数据速度差存在,这个数据差会不断堆砌累计到缓存,差不多30秒左右累满300兆,所以可以在累到250兆左右(也就是写入25秒左右)后,触发一次限制USB I/O瓶颈限制,让外部写入速度降下来降到30兆速度以下,比如降到10兆左右,这样就形成了-20兆每秒的数据差,给了主控把缓存数据写入TLC的时间。等缓存释放完后再恢复到40兆/s左右的速度。这样你就会看到一个大约25秒稳定直线,然后开始过山车下降、过一会儿再回到40兆直线25秒左右。。。这样的一根曲线。

3. 最激进的就是类似雷克沙蓝卡的策略,先主控开放USB总线全速,让它填充数据,然后一旦快满了,就极限压制USB到主控的带宽,把带宽让给缓存到TLC的写入,所以可能速度波峰会到60兆/s(这时候缓存到TLC的写入带宽不足,所以速度甚至不到30兆/s,无法足量形成了一个60-30=30兆/s的填充缓存的数据量差,可能就真的是接近60兆/s的数据量差),但是只能持续5秒不到,然后就跌下来了,接下来带宽因为全给了缓存到TLC的实际写入,过山车到谷底,差不多10秒钟后缓存空了,带宽又全部给了USB总线到主控,过山车又很快从底下回到顶端。。。。。

所以关注缓存大小不是太有必要,因为只要用了最激进的策略,多大的缓存都会让你坐过山车。

写得比较乱,但愿能看懂...
:r8:

[ 本帖最后由 SONIC3D 于 2020-11-12 19:13 编辑 ]



[登录后才可回复]