固态硬盘吧 关注:896,390贴子:6,886,044

固态硬盘科普:何为NAND,何为主控,数据为何会“变冷”

只看楼主收藏回复

1.NAND闪存
首先:NAND闪存物理实体结构
闪存的内部存储结构是金属-氧化层-半导体-场效晶体管(MOSFET),里面有一个浮置栅极(Floating Gate),是真正存储数据的单元。
数据在闪存的存储单元中是以电荷(electrical charge)形式存储的。存储电荷的多少,取决于控制栅极(Controlgate)所被施加的电压,其控制了是向存储单元中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示。
对于NAND闪存的写入(编程),就是控制Control Gate去充电(对Control Gate施加电压),使得浮置栅极存储的电荷够多,超过阈值 Vth,就表示0。对于NAND Flash的擦除(Erase),就是对浮置栅极放电,低于阈值 Vth,就表示1。
而NAND的物理实体结构决定了其特性


IP属地:河北1楼2020-12-27 17:35回复
    1.NAND 闪存的物理结构主要分为物理块和物理页,整个闪存设备由多个物理块组成,每一个物理块又是由一定数目的物理页组成,每一页由两部分组成分别是数据段( Data Field) 和附加段( Spare Field) ,数据段用于存储数据,附加段用于保存闪存的管理数据,包括: ECC码、映射表信息和坏块信息。
    2.NAND闪存读写数据是以物理页为单位,擦除操作则以物理块为单位。读取一个物理页的速度较快,写入一页数据的时间则较慢,而擦除一个物理块的时间远远大于写的时间。
    3.不能直接对物理块保存的数据进行修改,必须先进行擦除操作才能写入新的数据。
    4.物理块的擦除次数有限 SLC( Single-Level Cell 单层单元) 通常在 100000次左右,MLC(Multi-Level Cell 多层单元) 通常在10000次左右,TLC(Triple-Level Cell 三层单元)通常只有1000次左右,而且NAND的原料晶圆在生产出来的时候就不是完美无瑕的,也就是任何NAND出场都会有少量坏块(取决于筛选等级,原厂自封黑白片就是从这层来的),而随着使用也会逐渐出现坏块。
    5.氧化层无法完全阻挡电子流失,存储了电子,保持了既定电位的浮置栅极会随着时间流逝而逐渐丢失电子使电位产生微小变化,当电位变化超过阈值时就会产生数据读取困难或出错的问题。
    基于特性我们可以得到使用NAND要解决的基本问题


    IP属地:河北2楼2020-12-27 17:39
    回复
      1.需要先擦除才能写入。
      2.损耗机制,有耐久度限制。
      3.读写时候造成的干扰会造成数据出错。
      4.数据的保存期。
      5.对初始和运行时候的坏块管理。
      当满足了上面的5点后,才该谈到稳定,性能,耐久度的问题
      1.SLC,MLC,TLC每个单元中存储的电荷越来越少,两个相邻阈值电压之间的间隔越来越小,绝缘氧化层越来越薄,存储单元之间的相互干扰越来越大。
      2.平衡磨损算法
      3.透过坏块管理技术确保数据的完整性。
      4.使用错误检测和校正技术
      5.写入放大
      显然NAND Flash并不是一款完美的存储介质,存在很多问题,而解决上面这些问题的,便是固态硬盘的核心组成部分:主控芯片。
      固态硬盘主控首先就是一个执行固件代码的嵌入式处理器,用来控制闪存颗粒的存储单元连接到电脑。其具体的作用表现在以下三点:


      IP属地:河北3楼2020-12-27 17:40
      回复
        1.合理调配数据在各个闪存芯片上的负荷,让所有的闪存颗粒都在一定的负荷下正常工作,协调和维护不同区块颗粒的协作,减少单个芯片的过度磨损
        2.承担数据中转,负责连接闪存芯片和外部的SATA接口
        3.负责固态硬盘内部的各项指令,比如trim、错误检查和纠正、磨损均衡、垃圾回收、加密等。
        可见固件是主控的核心,就像显卡CPU需要有驱动程序和系统才能运转起来。而固件的核心,则是FlashTranslation Layer(FLT),即闪存转换层。在整个储存体系中,FTL起着翻译官的作用,它将Host(电脑、手机等)发送至Device SSD的逻辑地址转换为写入Flash的物理地址(地址映射管理)。在进行地址转换的同时,FTL还兼顾Flash的管理,不仅需要对Flash上的各个Block进行擦写次数控制(磨损均衡),还需要管理Flash上的无用数据(垃圾回收)。下面是三个重要的概念


        IP属地:河北4楼2020-12-27 17:41
        回复
          1. 地址映射管理概念
          不同于机械硬盘的磁头直接进行数据读写,SSD或者其它以Flash作为储存介质的硬盘无法直接进行数据读写操作。解决这个问题的办法,就是FTL层管理几张逻辑映射表做一个中间转换,Host给定一个逻辑地址,FTL根据这个逻辑地址在逻辑映射表上建立映射关系,连接到Flash上的物理地址。一般来说,FTL将逻辑地址处理后,建立的映射关系包含了Flash的Block编号、Page编号等,数据读取时便根据这些信息在Flash对应的位置上找到数据,传输至Host。
          2. 磨损均衡概念
          以Flash为储存介质,其可编程次数是必须考虑的重点。拿目前的固态举例,多以TLC Flash为储存介质,其编程次数在1000-1500次之间,若对TLC Flash上的某些block擦除次数超过了次数限制,那么将导致坏块产生,所以FTL须实现磨损均衡,协调整个Flash上的Block,将使用次数少的Block拿出来分担使用次数多的Block的压力。通俗的说,磨损均衡就是以相对最优的选择使Flash上每个Block的擦除次数尽可能相同,以避免有些Block擦除次数过多成为坏块致使用户可用容量变小的问题。
          3. 垃圾回收概念
          因为储存原理的不同,删除SSD等以Flash为储存介质的硬盘上的数据时,只是删除了Host端的逻辑地址,而实际数据存在Flash的物理地址上,数据依然存在,后续数据写进来只能写到其他Block(Page)上,这就可能造成一个Block上的8M数据只有2M是有效数据,其他的都是被删除了逻辑地址的“假数据”,久而久之,就会导致空Block不够用了。解决这个问题呢,就靠垃圾回收(GC)了,它功能就是找一个空Block(目的Block),然后把那些“假数据”比较多的Block(源Block)上的有效数据搬移过来,再把源Block释放擦除,这样,一个目的Block可以容纳多个源Block的数据,达到强行一换多的目的,给用户腾出了更多的空间。
          鉴于贴吧目前的冷数据问题,在这里就不继续展开而着重探讨一下磨损均衡算法的问题


          IP属地:河北5楼2020-12-27 17:42
          回复
            磨损均衡就是将擦除/写入循环平均地分配到SSD的所有存储单元中,这样就避免了对同一个存储单元持续不断地进行擦除 / 写入操作,从而有效延长了SSD的寿命。
            磨损均衡有两种,一种是静态磨损均衡,还有一种是动态磨损均衡。
            对动态磨损均衡来说,它的测试原理就是选择写入数据的数据块,每次选择 EC(Erase Count)比较小的数据块来进行写入操作。
            而静态磨损均衡针对的是写入已很久没有变动过的数据,即所谓的冷数据。经常写入的数据,其逻辑地址所对应的物理地址就是按照动态磨损均衡 算法选取的,即所谓的热数据。冷数据因为写入时间较久,没有进行重新对写,可能其他逻辑地址已重复写入过成千上万次,但是它们从来没有移动过,导致这部分数据块利用率过低。为了避免出现这种情况,在数据块的管理中,定期检测数据块的闲置时间,一旦有数据块的闲置时间超过了上限,就会将 EC值较小的数据块搬到 EC 值较大的数据块上,将 EC 值较小的数据块放入 Free 块中,从而均衡所有存储单元的擦写次数。
            显然这只是磨损均衡算法的最底层思路,具体的实施方法与固件策略远比这复杂,而固件策略与算法每个厂家都不一样,而且属于商业机密,我是肯定搞不到内容的。但是显然这一原理需要的是固态一直处在持续擦写情境中,才能保证各项机制正常运行。


            IP属地:河北6楼2020-12-27 17:43
            收起回复
              下面是针对各种问题的个人理解,以及对一些带节奏的人的反驳
              1. 使用时间长了以后感觉性能下降,正常,原理决定的,尤其是TLC,电位复杂,干扰大,需要主控来通过算法纠正数据,保证数据读取正确,这样就会影响性能,直观感受就是固态没有刚买的时候用起来快了,但是在主控的固件算法维持下会有一个下限,不会一直掉到某些人说的比机械还垃圾,这个性能下降一般来说感知也是不明显的。
              2. 掉盘……玄学问题,硬盘本身(前面提到的FLT机制出问题),某某引导分区出问题,个人使用情景使用习惯问题,平台问题,都有可能,最简单的解决方法,换别的盘。
              3. 寿命低,没办法,成本与容量的妥协产物,事实是大部分喊垃圾TLC,SLC永远的神的人即买不起SLC,也用不完TLC的寿命,真想要寿命,最好换介质,3D-Xpoint向你招手,问题的关键是价格,一般人没必要花这个溢价。
              4. 固态存数据不靠谱,不说使用情景就黑产品的一律按耍流氓处理,机械碟片,闪存芯片的性质摆在那,自己根据使用场景与情况权衡,没必要秀优越/黑/喷。
              5. 冷数据问题
              这就不得不提到万能的HDtune基准测试与SSD Read Speed Tester,DiskFresh两兄弟,后面这两个我还专门发帖打包上传过,本意是帮吧友解决问题,没想到又成了一部分人带节奏的工具……至于跑AS SSD说掉速的,不做评价……


              IP属地:河北7楼2020-12-27 17:45
              回复
                累了,今天到此为止,明天更新冷数据问题我的个人理解,以及HD tune的基准测试原理,测试曲线的含义自己立的flag,哭着也要更完


                IP属地:河北8楼2020-12-27 17:46
                回复
                  IP属地:河北9楼2020-12-27 17:48
                  回复
                    冷数据不存在


                    IP属地:湖北10楼2020-12-27 18:05
                    回复
                      投币


                      IP属地:浙江来自iPhone客户端12楼2020-12-27 18:12
                      收起回复
                        反正第一代的固态硬盘就这样咯,后面有革命性突破了,又会不一样


                        IP属地:四川来自Android客户端13楼2020-12-27 18:42
                        收起回复
                          太长不看


                          IP属地:广东来自iPhone客户端14楼2020-12-27 19:19
                          回复
                            能不能别尬黑啊 我lemonc大神说了西数只有sata出问题 m2没有问题 是你人出问题了


                            IP属地:广东来自Android客户端15楼2020-12-27 20:14
                            收起回复
                              科普贴太硬核,不受欢迎。不如发泄情绪吸引眼球。我那实测贴都没多少人喜欢看完,没看完还理直气壮直接攻击扣帽子


                              应用达人
                              应用吧活动,去领取
                              活动截止:2100-01-01
                              去徽章馆》
                              IP属地:江苏来自Android客户端16楼2020-12-27 20:55
                              收起回复