数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 2906|回复: 9

[银灿] 话说U盘主控有写入放大吗?

[复制链接]
发表于 2020-3-25 00:24:55 | 显示全部楼层
拿糖糖换媳妇 发表于 2020-3-24 15:38
清后写,不支持直接修改,必须擦干净才能写,这也是固态硬盘trim存在的原因,边擦边写,写入速度会慢,tri ...

你把TRIM说错了,TRIM是删除之后标记为空而不是清除内容、

我这里先科普一下闪存的写入/擦除操作:闪存并不能像硬盘那样直写,闪存的写入必须要先擦除才能写,写入以page(页)为单位,而擦除以Block(块)为单位,而一个block里包含上千上万个page...

于是,写一个4K的文件,就要先将整个block的内容复制到主控缓存或者空block区,但如果这个即将要被写入的Block当前有其它数据时候才会复制,如果当前Block是"空"时才不会被复制,是擦除然后再把数据写回block,这样算写入一个4kb文件就等同于写入16MB(一个block的大小在1-64MB不等,14年以后制程的闪存一个块16-64MB,当然比64MB更大的闪存也有)、

TRIM的作用就是把本应该删除的区块标记为空,这样主控在写入新数据的时候就不用把里面的内容读到缓存/空Block,而是直接擦除然后写入、

如果没有TRIM,当操作系统给SSD主控下达删除指令以后,主控就立刻擦除对应的区块并写入0/FF
如果删除的文件比较多比如几十GB,那主控就要执行擦除指令 擦除闪存并写入0或FF完毕之后才会发送 就绪 信号,如果在擦除的时间里有新写入事件,那就会被挂起等待,这样没能及时写入,就看起来“掉速”了。久一点就感觉卡死了似的

这里再科普一下,SSD主控在有读写入操作但操作未执行完毕的时候会对于南桥发来的新操作指令回复 忙 信号,此时主控就知道SSD在 忙 状态,不能继续执行新指令了然后挂起等待主控回复就绪信号,于是就能在任务管理器看到当前硬盘的使用率是满的,这里细节太多我就不一一细说了

你说的那个先擦后写 是模拟SLC区域转成TLC/MLC区域的过程、
模拟SLC是把浮栅按照SLC的类型分为0和1(模拟SLC的写入方式所以叫模拟SLC),填到TLC区域里,把000 001 010 011 写0,100 101 110 111写1,(MLC是00 01写0,10 11写1)这样就不用对每个浮栅进行单独充电并校验(这一步叫编程),大大减少每个浮栅的编程时间,相比一个时间周期内 就能对闪存写入更多的数据(于是写入很快)

但是问题来了,原本写入TLC 1GB的数据,等效写入4G的模拟SLC的空间(MLC是2G),当模拟SLC空间(也叫SLC Cache,高速缓存等等叫法  实际都是同一个东西)用完以后就成直写模式了,把数据写到慢的可怜的TLC里,当然TLC天生的写入慢大家都知道...这时候看曲线就是瀑布或者过山车了...

这时候当电脑空闲没有读写操作时,主控就会择机把模拟SLC空间里的数据读取出来再写回TLC空间 以腾出“高速空间”给下一次写入,当有数据写入时就又先写到高速空间里,让用户感觉这个写入很快,于是SSD就这么往复循环...

打赏

参与人数 1家元 +20 收起 理由
拿糖糖换媳妇 + 20 感谢纠正和科普

查看全部打赏

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-9-19 05:17 , Processed in 0.093600 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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