给网站做广告,实验室网站建设的调查报告,网站的建设价格,网络开发定制SSD与RAM的原理有些类似#xff0c;RAM使用晶体管和电容来表示0或1#xff0c;晶体管用于将电荷转移到电容器或从电容器中吸取电荷#xff0c;并且电荷必须每几微秒刷新一次。
而SSD相比于RAM的非易失性来自于其使用的浮栅晶体管。其创造了一个小笼子#xff0c;不需要外界…SSD与RAM的原理有些类似RAM使用晶体管和电容来表示0或1晶体管用于将电荷转移到电容器或从电容器中吸取电荷并且电荷必须每几微秒刷新一次。
而SSD相比于RAM的非易失性来自于其使用的浮栅晶体管。其创造了一个小笼子不需要外界的电容来保持充电并通过鼓励电子通过量子隧穿效应来进出笼子。
储存介质
NOR
使用晶体管最简单的方法是将每一行和每一列连接在一起以便读取每个单独的位。这种特殊的布局在NOR flash中使用。连接每一行的电路称为“word line”而连接每一列的电路称为“bit line”。读取操作在这种情况下非常简单:对每个word line施加一个电压bit line将根据每个单元格存储的是0还是1来显示电压(或不显示)。
为了更详细地理解它是如何工作的我们必须首先了解浮栅晶体管。一个普通的晶体管有三种连接方式根据所用技术的不同分别命名为gate、drain和source
当电压加到gate时电流就可以从source流向drain。当在栅极上施加低电压时从source流向drain的电压与栅极电压成比例变化(因此低栅极电压导致source流向drain的低电流高电压导致高电流)。当栅极电压足够高时比例响应停止。这使得晶体管既可以用作放大器(应用于门极的小信号会在source极产生成比例的大信号)也可以用作开关(仅在门极使用高电压或零电压source极和drain之间要么有大电流要么没有电流)。
浮动栅极位于栅极和晶体管的其余部分之间它在一个重要的方面改变了栅极的行为。所述晶体管的浮栅部分中包含的电荷改变所述晶体管的电压阈值。当栅极电压高于某个值(称为Vread)时通常在0.5 V左右开关将始终闭合。当栅极电压低于这个值时开关的开度由浮动栅极决定。
如果浮栅没有电荷那么在栅上施加一个低电压仍然可以关闭开关并允许电流从source流向drain。如果浮栅确实储存一个电荷那么完整的Vread电压需要被施加到栅极以使电流流动。也就是说无论浮栅是否包含电荷晶体管的栅极必须施加多少电压才能导通或不导通。
在cell的网格中word line与晶体管的gate相连接。bit line与drain相连。source连接到第三组线称为source line。与bit line一样同一列中的所有晶体管的source都连接在一起。
我们可以通过在门上施加低电压来读取单元的内容看看是否有电流流过。具体来说所述单元所连接的word line被通电到Vread以下的某个电压。当且仅当电池的浮栅不含电荷(a 1)时电流将流过电池source line到其连接的bit line。如果浮栅含电荷(a 0)则整个电池的电压阈值过高小电压无法克服。然后检查连接到该cell的bit line的电流。如果它有电流则将其视为逻辑1;如果没有则为逻辑0。
这种晶体管的排列方式在NOR flash中使用。它被命名为NOR的原因是它类似于字行上的逻辑NOR- low电流与浮栅中的电荷无关。如果你应用Vread浮栅没有电荷那么位线显示电荷(0或0 1)而浮栅不会传导低读电流如果它包含电荷(0或1 0)。
NOR虽然设计概念简单但芯片本身相当复杂因为NOR闪存要占用大量的word line和bit line连接——每个晶体管都必须有这些连接这导致了大量的连接。实际上我们不需要那种极端粒度的访问相反用户一次只能读写整个扇区就够了 NAND flash
NAND相比于NOR其bit line发生了改变——每一列中的晶体管串联起来一个晶体管的drain与另一个晶体管的source相连。 为了读取栅格内的单个位bit line select和source select晶体管都被打开。然后所有没有读取的字行都被应用了Vread迫使晶体管导电不管它们的浮动门是否有电荷。只有感兴趣的比特的word line有较低的电压。如果该位有一个存储电荷(因此是逻辑上的0)晶体管将保持开路状态没有电流通过晶体管链。如果它没有储存电荷(因此是逻辑1)晶体管将关闭电流将流过。在位线上检测到电流的存在或不存在并分别视为1或0。所有位线将同时并行地传递一个信号。
与NOR flash相比将flash单元的列串联起来可以消除大量的结构用NAND flash构建的给定容量的存储空间比用NOR flash构建的相同结构所占用的物理空间少60%。
但也有一个缺点那就是失去了单独读写每个比特位的能力。NAND flash一次只能读写一页(一行)的数据。与传统观点相反NAND flash的布局本身并没有阻止单个单元格的读写相反为了坚持NAND flash的设计目标即比NOR flash更简单、更小NAND芯片可以接受和理解的标准化命令的结构使页面成为最小的可寻址单元。这节省了存储更多指令所需的硅空间并能够保存单元到页的映射。
MLC
浮栅晶体管具有存储少量电荷的能力而少量并不意味着单个事实上还可以储存多个电荷水平这就引入了MLC
相比于SLC
MLC读取读取更复杂。需要依次测量每个可能的阈值电压看看哪一个足以使晶体管打开。SLC更可靠、更简单、错误率更低。MLC更便宜
读写
覆盖
SSD能读写页但却不能覆盖页。空页储存了11可以在页级别转换为0但这个过程是单向的也就是将0转换为1将是一个潜在的危险操作因为这会使用高压电高压电将会使得相邻的cell也发生改变。当然也可以通过隧道抑制来防止——对周围的所有细胞施加非常大的电压这样它们的电子就不会随着目标细胞一起隧穿——但这会导致cell上的的压力被清除。因此为了避免损坏ssd只能以整个块的增量进行擦除而不是不需要耗能的隧道抑制 顺便说一句虽然NOR闪存允许逐位写入但它保留了其他限制:1s只能被0覆盖并且将0重置为1s需要一次擦除整个块这也是由于高压和如果以较小粒度执行会损坏相邻单元的风险。 这意味着SSD必须先擦除再写入。比如在8192(2^13)byte每页256页每块的情况下写入8kb的文件会先复制2MB的数据到缓存然后擦除整块并重写这2MB数据。
这样带来的不利之处在于除非SSD有一个可用的已擦除页面准备就绪并等待数据否则它不能立即执行写操作。如果没有已擦除的页面它将不得不找到一个未使用(但尚未擦除)页面的块擦除整个块然后将块的旧内容与新页面一起写入。那么ssd会越使用越慢。
弊端
SSD尽管速度快然而只能用于有限数量的写入。
我们已经知道SSD中数据是通过改变单元行和列的电压来读取的在写入的时候要通过量子隧穿效应迁移电子。
然而当每次电池经过程序/擦除周期时一些电荷被捕获在构成浮栅的材料的介电层中。这种被捕获的电荷改变了栅极的电阻。随着电阻的变化改变栅极状态所需的电流增加栅极翻转需要更长的时间。随着时间的推移这种电阻的变化变得足够显著以至于将0写入单元所需的电压量变得如此之高并且单元更改所需的时间变得如此之长以至于单元作为快速数据存储设备的组件变得毫无价值
而MLC ssd比SLC ssd更容易退化因为MLC驱动器中的每个单元有四种可能的状态并存储两个比特因此每个单元对剩余电荷的变化更敏感或者难以添加新电荷。此外随着半导体工艺尺寸路线图的进一步缩小闪存单元的尺寸也在不断减小。因为它们在物理上更小在变得太无反应而无用之前可以吸收更少的剩余电荷。
权衡
对于SSD有两大问题——块级别擦除、有限生命周期
为了权衡采用了以下方案
over-provisioning: 总容量预留部分空间方便写入garable collection回收那些过时的页也就是该页已经不是最新被修改过的。现在操作系统一般都不实际删除文件在配置TRIM的情况下操作系统可以发送SSD表明页不包含有效内容那样SSD可以对这些操作系统认为删除的数据进行垃圾回收
写放大
写放大是逻辑写入次数和实际写入次数的差异。比如说要写入x1逻辑上只要写入一次但实际上可能还有垃圾回收、块擦除等写入。
在SSD中会进行持续迁移因此逻辑写入128KB数据实际每次都会大于128KB
在ssd中写放大有以下情况引发
垃圾回收若一个驱动正在努力保持最大可用空间并由TRIM辅助那么将会在没有任何用户输入的情况下执行大量写入导致高写放大以及降低cell寿命磨损均衡磨损均衡是SSD维持所有cell使用情况在同一水平线的手段会尽量占用那些使用比较少的cell进行储存无空闲页在无空闲页的情况下每次写入将会先读再擦最后重写
Ref
https://arstechnica.com/information-technology/2012/06/inside-the-ssd-revolution-how-solid-state-disks-really-work/