SSD |(五)NAND闪存(下)

文章目录

📚3个与性能相关的闪存特性

🐇多Plane操作

  • 多Plane操作命令,以增加读取和写入闪存的并发度,进而提升闪存读写性能。

  • ⭐️对多 Plane写操作来说

    • SSD主控先把数据写入第一个Plane的闪存缓存中,数据保持在那里,并不立即写入闪存介质,等主控把同一个Die上的另外一个或者多个Plane 上的数据传输到相应的闪存缓存中,再统一写入闪存介质
    • 假设写入一个闪存页的时间为1.5ms,传输一个闪存页数据的时间为50μs:如果按原始的单Plane操作,写两个闪存页需要至少 ( 1.5 m s + 50 μ s ) × 2 (1.5ms+50μs)×2 (1.5ms+50μs)×2;但如果按照多 Plane操作,由于隐藏了一个闪存页的写入时间,写入两个闪存页只要 1.5 m s + 50 μ s × 2 1.5ms+50μs×2 1.5ms+50μs×2,缩减了近一半的时间,写入速度几乎翻番。
  • ⭐️对多Plane读操作来说

    • 不同Plane上的闪存页数据会在一个闪存读取时间内加载到各自的闪存缓存中,这样可用一个读取时间读取到多个闪存页的数据,读取速度加快。
    • 假设读取时间和数据传输时间一样,都是50μs,单Plane读取并传输两个闪存页需要 50 μ s x 4 = 200 μ s 50μsx4=200μs 50μsx4=200μs,多Plane则只需要 50 μ s x 2 + 50 μ s = 150 μ s 50μsx2+50μs=150μs 50μsx2+50μs=150μs,时间为前者的75%,读取速度也有较大提升。
  • 多Plane读写操作中,数据传输必须串行的原因之一是一个Die只能挂在一个闪存通道上,即同一个Die上的不同Plane共用闪存传输总线

  • 一个Die的Plane越多,多Plane操作并发度越高,闪存读写性能越好。所以,现在闪存的一个发展方向是在一个Die上提供更多的Plane,其目的就是提升闪存的整体性能。

🐇缓存读写操作

  • 每个Plane除了页缓存,还有闪存缓存,它们都是用来缓存即将写入或者读取的闪存页数据的。有了多个寄存器,就可以支持缓存读写操作了。

  • 如下图所示:

    • 缓存读操作(左)支持在将前一个闪存页(PageY)数据传输给主控的同时,从闪存介质将下一个主控需要读的闪存页(PageX)数据读取到页缓存,这样前一个闪存页(PageY)数据在闪存总线上传输的时间就可以隐藏在后一个闪存页(PageX)的读取时间里(或者相反,看哪个时间更长)。
    • 缓存写操作(右)与之类似,它支持闪存在写前一个闪存页(Pagex)数据的同时,将下一个要写的闪存页(PageY)数据传输到闪存缓存,这样下一个要写入闪存页的数据在闪存总线上传输的时间可以隐藏在前一个闪存页的写时间里。
  • 对非缓存读操作,读3个闪存页的总时间为 ( t R + t X ) × 3 (t_R+t_X)×3 (tR+tX)×3,其中 t R t_R tR是读取一个闪存页的时间, t X t_X tX为一个闪存页数据在总线上传输的时间;对缓存读操作,读取3个闪存页的总时间大约为 3 × t R + T X 3×t_R+T_X 3×tR+TX(当 t R > t X t_R>t_X tR>tX)或者 3 × t X + T R 3×t_X+T_R 3×tX+TR(当 t R < t X t_R<t_X tR<tX),总的时间比非缓存读操作要少。

🐇异步Plane操作

  • 多Plane操作在执行时有一些限制,比如要求读写的每个Plane上的内存页编号要一致,否则不能使用多Plane操作,因此多Plane操作只适合写入操作和顺序读操作,即只能提升SSD写入性能和顺序读取性能
  • 随着闪存容量的增大,现在单Die的大小可达1Tb,对小容量SSD或者移动存储设备来说,一个或者几个Die就能满足存储设备对容量的需求。由于Die个数比较少,因此随机读取并发度不高,这会严重影响小容量存储设备的随机读取性能。而随机读取性能是衡量存储设备性能的一个重要指标,和用户体验息息相关。为解决这个问题,闪存厂商近年来引入了一个新的特性------异步Plane 操作
  • 异步 Plane 操作是指用户在随机读取同一个 Die 的时候,不需要等前一个Plane 随机读操作完成,就可以把下一个随机读取命令发给别的Plane。这个时候每个Plane表现得就像Die 一样,可以独立执行随机读取命令。这样一个Die的随机并发度不是传统的"1",而是Plane个数,因而大大提升了单 Die 的随机读取并行度,从而最终提升 SSD 等存储设备的随机读取性能。
  • 如下图所示 c m d x ( p y ) cmd x(p y) cmdx(py)为读取命令,x为命令序号,y为命令目标Plane的编号。支持异步 Plane操作的闪存在执行读取命令的时候并行度翻倍(以2个Plane 为例)。Plane 个数越多,异步 Plane 操作并行度越高

📚3D闪存

🐇3D闪存存储单元

  • 随着制程越来越先进,存储单元之间的距离越来越短,存储单元之间的干扰越来越严重,数据的可靠性也越来越难以保证。
  • 3D(3维)闪存:通过闪存的堆叠技术,同样大小的晶圆能承载更多的数据。
  • 在 2D时代,闪存存储单元是浮栅(Foating Gate,FG)晶体管;而到了3D时代,人们开始使用一种名为电荷捕获(Charge Trap,CT)的新型存储单元。为方便阐述,我们把浮栅品体管技术简称为FG,把电荷捕获技术简称为CT。
  • 如下图所示,FG和CT的最大区别是存储电荷的材料不同:FG所用晶体管的浮栅极材料是导体,而CT所用晶体管存储电荷的是具有高电荷捕获密度的绝缘材料。
  • 和FG闪存一样,我们可以通过在CT所用晶体管的控制极上施加一个高电压,在强电场作用下把电子注人电荷捕获单元。CT捕获电子的材料上面就像布了很多陷阱,电子一旦陷入其中,就难以逃脱;而FG的浮栅极是导体材料,电子可以在里面自由移动,FG像水,CT像奶酪
    • 如果里面的电子本来就深陷其中,行动困难,那么就算绝缘层有问题,比如某个地方有缺陷,影响的也只是周边的电子,其他电子由于很难移动到这个缺陷附近,所以也跑不了。因此,相对FG,CT的一个优势就是:对隧道氧化层不敏感。隧道氧化层就算变薄或者因擦除导致老化,对 CT影响也不大
    • FG的浮栅极材料是导体。任何两个存储单元的浮栅极都构成一个电容器,一个浮栅极里面电荷的变化,都会引起相邻存储单元浮栅极电荷的变化;而CT存储电荷的材料是绝缘体,相邻存储单元之间的耦合电容很小,因此从这个角度来看,存储单元之间干扰变弱
    • 在编程(写入)方面,CT需要的电压比FG更小,这意味着对隧道氧化层的损伤变小,从而能提升闪存寿命
  • 在存储单元读写操作方面,CT和FG一样,但在擦除操作上,它们有一些不同:FG是使用的F-N隧道效应完成电子擦除的,而CT一般是采用热注入空穴的方式来消除存储在CT中的电子的。

🐇3D闪存存储结构

  • 如下图所示,3D闪存把2D闪存的闪存块结构立起来:图中坐标轴Z和标注的面就是3D闪存的一个闪存块,它由M+1条字线和N+1个位线组成。沿X方向排列更多的闪存块,就组成了一个 3D 闪存。

    • 每根圆柱都是一条位线。
    • 圆柱内部,由不同层次的小圆柱构成,从里到外依次为衬底、隧道氧化层、电荷捕获层和氧化层。
    • 这些圆柱和每层的控制极(图中长方体)的交叉点就是一个个存储单元。
  • 基于FG的闪存,一个闪存块位线上的各个存储单元共用衬底,但每个存储单元的浮栅层(即存储电荷的地方)都是独立的。它们必须是独立的,因为浮栅层是导体材料,如果所有存储单元共享浮栅层,那么电子来回游动,每个单元就存储不了数据了。

  • 对CT闪存来说,一个位线的所有存储单元,除了控制极不一样,其他都是共享的,包括电荷捕获层

    • 因为CT中电子捕获材料是绝缘体,电子不容易从一个存储单元跑到另一个存储单元。
    • 这样做的好处是"施工方便":对FG的圆柱来说,在浇筑时每个存储单元的浮栅层都要分别进行浇筑加工;而对CT的圆柱来说,圆柱从里到外,从上往下浇筑不同的材料就可以了。
    • CT这种组织结构虽说"施工方便",但会引入新的数据保持问题。虽然说 CT采用绝缘材料,电子在里面不易移动,但随着时间的推移,相邻存储单元之间还是会发生电子迁移的。因此,在数据保持问题上,除了传统的电子从存储层流失到衬底这个因素外,现在CT又多了一个引发数据保持问题的原因------电子侧向流失,这会在一定程度上导致CT闪存数据保持变差。

🐇3D闪存外围电路架构

  • 一个闪存,除了存储单元阵列外,还包括外围电路,用以实现控制逻辑、I/O控制、命令解析执行、电压控制、数据缓存等。
  • 随着闪存技术的发展,人们对闪存性能的要求也越来越高,其中一个用于提升闪存读写性能的方式就是增加Plane的个数,这样可以通过提升读写并行度,达到提升性能的目的。
  • 对每个Plane来说,都有若干个对应的数据缓存页,这意味着随着Plane个数的增加,相应的数据缓存页要增加,外围电路面积也要增加。但是,闪存容量也要增加,新增外围电路不能压榨存储阵列面积。容量不能少,性能也要提,这迫使闪存厂商开始思考闪存外围电路架构问题。
    • CnA(CMOS near Array)
      • CnA架构是将CMOS电路布置在存储阵列旁边,这种设计被称为"山外有山"。
      • 在这种架构中,CMOS电路和存储阵列是在同一片晶圆上,但是CMOS电路位于存储阵列的旁边,而不是下方。
      • 这种设计有助于减少芯片面积,但随着3D NAND技术堆叠层数的增加,外围电路可能会占用芯片面积的很大一部分,从而限制了存储密度的进一步提高。
    • CuA(CMOS under Array)
      • CuA架构是将CMOS电路置于存储阵列下方,这种设计被称为"楼上有楼"。
      • 在这种架构中,大部分NAND芯片的外围电路(如页缓冲器、感测放大器、充电泵等)被放置在存储单元的垂直堆叠下方,而不是旁边。这种设计可以节省大量的芯片空间,使得超过90%的芯片面积可以用于存储单元阵列。
      • CuA架构允许在芯片上集成更多的外围电路,这使得将芯片的存储阵列划分为更多的独立平面成为可能,每个平面都有自己的外围电路副本,从而提高了每个芯片的性能。
    • Xtacking
      • Xtacking是长江存储(YMTC)开发的一种3D NAND架构,它通过在两片独立的晶圆上分别制造CMOS外围电路和NAND存储阵列,然后通过数百万根金属VIA(垂直互联通道)将两者键合在一起。
      • 这种设计不仅提高了存储密度,还缩短了产品上市周期,因为外围电路和存储单元可以并行设计和制造。Xtacking技术还允许更快的NAND输入输出速度和多平面并行操作,这对于提升SSD性能至关重要。
      • Xtacking 3.0技术采用了存储单元晶圆的背面源连接(BSSC),简化了工艺并降低了成本。基于Xtacking 3.0架构的NAND芯片X3-9070采用了2x3的6平面架构,每个平面都有独立的X-DEC解码器,可以实现多平面独立异步操作,从而显著提高了IO速率。

  • 参考书籍:《深入浅出SSD:固态存储核心技术、原理与实战》(第2版)
相关推荐
魔道不误砍柴功6 小时前
在 Spring 中使用 @EhCache 注解作为缓存
java·spring·缓存
xjstddj7 小时前
【部署篇】Redis-01介绍‌
数据库·redis·缓存
tatasix8 小时前
深入解析缓存技术
后端·缓存·golang
枫叶_v9 小时前
【SpringBoot】14 缓存(cache)
spring boot·后端·缓存
凌波漫步&14 小时前
Redis持久化机制(RDB&AOF详解)
数据库·redis·缓存·redis持久化
积水成江1 天前
Springboot实现阿里云短信验证服务+Redis缓存
spring boot·redis·阿里云·缓存
我明天再来学Web渗透1 天前
【hot100-java】LRU 缓存
java·开发语言·数据结构·算法·缓存·深度优先
汪狗乖乖乖1 天前
Redis的实战篇
数据库·redis·缓存
小登ai学习1 天前
简单认识redis - 8 redis淘汰和过期策略
数据库·redis·缓存