PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

【原创】通往崭新的世界 - 固态硬盘

  [复制链接]
跳转到指定楼层
1#
neeyuese 发表于 2010-12-10 05:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:17002|回复数:29
本帖最后由 neeyuese 于 2010-12-10 11:45 编辑

机械硬盘 vs. 固态硬盘 :连续传输 vs. 并行传输


我们知道,机械硬盘是在旋转的盘片上连续传输的,不管一个硬盘里包含了多少个盘片,同一时间只有一个磁头可以读写数据。因此,不管如何复杂的数据结构,都不能做到并行传输,除非许多的机械硬盘组成一个阵列。固态硬盘完全改变了这种传输架构,当前主流的固态硬盘主控制器拥有8~10通道NAND接口,每个接口一般都是8bit(1字节),这对性能的影响是巨大的。而机械硬盘的传输率则取决于盘片上的扇区和密度,所以外圈的传输率高于内圈。

而在固态硬盘上,理论传输率取决于数据总线的频率和颗粒的时钟速率。目前典型的频率在40~50MHz范围,8bit的话就是峰值带宽40~50MB/s。这些只是理论值,因为实际使用不可能有程序能完全的利用到所有的带宽,不过这样解释的话应该很清楚的明白4通道的8bit主控和NAND间的带宽就是接近于200MB/s,而8通道的就是400MB/s了。目前最新的同步NAND颗粒,例如三星的Toggle模式颗粒或者某些IM的ONFI 2.x颗粒,频率从原本的50MHz提高到66MHz,83MHz甚至100MHz,并且同步模式可以一个时钟周期处理2次信息(DDR),这样的话4通道就有533MB/s~800MB/s的带宽,而8通道更有最大1600MB/s带宽。

固态硬盘上没有机械硬盘的外圈传输率大于内圈传输率的说法,事实上主控制器对每个块都一视同仁(速度相等),但是还有些别的因素影响着。



扇区(sectors) vs. 页(pages)


典型的机械硬盘在盘片上分成一个个扇区,每个512B,扇区是最小的物理存储单元。可以想象以512B为单位的扇区来管理,是极其不方便的,特别是对于那些非常大的文件。因此把扇区组起来变成一个新的分配单位“簇”,而“簇”的尺寸取决于文件系统的和盘的容量。

而NAND闪存,应该说是由块(blocks),页(pages)组成的。一个典型的page大小为4KB,一个典型的块包含256个pages,也就是1MB大小。(L63B) 块为最小可擦除单位,页为最小读写单位。




最小可擦除数据尺寸和写入放大(Host Write vs. NAND Write)

一些早期的SSD主控制器使用固定的通道系统,也就是说,如果控制器采用8通道的话,那就是一直使用8通道操作。因此,每次传输都是发送4KB X 8的地址,也就是最小32KB一次的写入。针对这个情况,写入空数据就是写入"FF"到所有地址,也就是啥都不会被改变,"FF"在NAND里是默认“已擦除”的值。这种操作方法的后果是啥?即使我只想擦除一个块,固定8通道操作意味着一次要擦除8MB的容量。这样就造成工作量大增,严重消耗了主控的带宽/性能,而且也严重影响了整个固态硬盘的耐久度。目前更先进的主控制器可以把8个通道独立开来各自执行读写命令。


这个所谓最小可擦除尺寸会影响写入放大。写入放大指的是主机写入量和实际NAND写入量之比。从另个角度上来说,如果主控制器足够聪明的利用多通道操作优势(独立的合理分配每个通道工作),写入1KB数据意味着实际占用1/4 page容量,写入放大是4倍。当然这要比总是以8通道固定操作的好多了,那个就是1/32了,写入放大32倍。



重新定义写入缓存的作用

大多数情况下主机传输到控制器的数据为随机的大小,也就是无法匹配4KB page单位大小。为了简单操作,当前大多主控制器定义了写入只能以page为单位写入。很常见的情况,打个比方,主机要求写入几个字节的数据(log之类),需要很快的写入NAND里,如果之间缺少缓存,会很快造成系统堵塞。由于主控制器不能保持这样的写入一直持续下去,当排队的请求过多,主机总线控制器就会让系统暂时停止响应等待操作以防止造成操作系统损坏。这个典型的问题多发生在初代固态硬盘上。如果这里有写入缓存的帮助,那么小文件或者文件碎片就可以合并成4KB大小写入NAND颗粒。当然,即使用上当前最好的策略,装满pages的效率也只是在90-95%附近,造成内部还有到处有0.5KB和3.5KB之类的碎片。

一些缓存可能来自系统,比如Win7的系统文件缓存。那是操作系统用一个特定区域的系统缓存来合并处理后间隙的写入主控制器,这样就可以避免直接向主控发送很多碎小的文件,靠着主控上的缓存处理并合并写入。从系统文件缓存往主控制器传输叫做cache flushing“缓存转储”(这里指从系统文件缓存 -》主控制器缓存),它的基本原则为“lazy writer”策略。“lazy writer”策略有平衡负载的作用,并会动态调节速率。



磨损平衡,
预留空间和块的改组

磨损平衡可以让所有的NAND颗粒块都达到最大使用率,不造成“资源浪费”,是保证固态硬盘耐久度的最关键技术,可以这么说,没磨损平衡的固态硬盘是不能买的。磨损平衡会产生一些有趣的现象。在普通机械硬盘上,逻辑扇区和物理扇区映射是固定的,不会随着数据的存储发生改变。而在固态硬盘上,页和文件系统的逻辑块没有固定的映射关系,所有的映射都是逻辑和抽象层面上的。这样就代表了,对固态硬盘分区,并不会影响磨损平衡,因为磨损平衡机制是对整个固态硬盘的机制,而非某一分区,因此固态硬盘里的块使用分布不会受到系统分区影响,也就是说前面分区的块和后面分区的块相互关联。说的通俗点就是:如果你的固态硬盘分有2个区,系统区和数据区,即使系统区数据更新比数据区频繁的多(读写次数多),应该来说如果磨损平衡算法是成熟的话,2个区的磨损度还是应该接近的。由于这个特性,就产生了一种技术叫“预留空间”,简单来说就是预留空间越大,用户可访问区域越小。打个比方,120G的固态硬盘可以在固件里设置预留空间为60G。预留空间的用处主要有这2点:

1.用来替换磨损度高的NAND块地址。(提升磨损平衡效率)
2.提升垃圾回收的效率。(保持性能和减少写入放大)

可以看下面2张图:



用户使用空间为96G的时候,160G的X25-M有8300IOPS,当用户用满160G的时候,IOPS就跌到1400了。(官标)



用户使用空间为96G的时候,160G的X25-M可以写入耐久度150TB,当用户使用空间为全部160G时候,写入耐久度只有29TB。(官标)

也就是说如果买回个160G的X25-M,分区只分96G使用的话,性能理论就能达到图上最高值。


原生命令行队列(NCQ)



NCQ技术让硬盘用第三方DMA协议把一批传输过来的数据放在一个特别的地方,并对他们进行排序优化,如果是机械硬盘,自然会按照逻辑块地址和盘片上的对应位置做出最优化磁头移动操作。对于没有碟片的固态硬盘来说,由于固态硬盘对所有块一视同仁,操作速度都相同,那么就要对NCQ的操作模式稍加改动,比如改变数据位置,处理顺序来充分利用多通道提升性能。


打个比方说,如果有一个20KB的数据要求写入,接下来又传过来24KB,8KB,12KB的文件要求写入,也就是说是4个数据请求,5,6,2,3pages的写入,对于8通道的SSD主控来说,如果用NCQ技术,把这几个数据排序成5和3pages,6和2pages写入(一次每个通道写1个page),这样只需要2个周期就能搞定这本应该4个周期的数据传输。


错误检查和纠正技术(ECC)

和SRAM和DRAM那种拥有几乎完美的数据完整性不同,NAND的数据完整性和80年代的DRAM差不多(需要校验模块来保证工作稳定)。当前的NAND架构,造成了几乎30%的读取都可能有缺陷,如果没有ECC技术的帮助,那么很可能造成1bit甚至更多bit的错误,后果不堪设想。目前最典型的ECC算法为-所罗门算法。Solomon algorithms,然而随着工艺的更新,错误率越来越高,需要使用更高级的算法-BCH算法。而随着同步颗粒的出现,传输率更高,对算法的要求又提出了新的要求,这个就让专家们去搞定吧,我是不懂了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2活跃度 +102 收起 理由
无心飘落 + 52 精品文章
overthink + 50 精品文章

查看全部评分

2#
cz33 发表于 2010-12-10 09:04 | 只看该作者
复杂,固态硬盘还是趋势
3#
tactus 发表于 2010-12-10 09:12 | 只看该作者
板凳? 浴大的文章要顶!  96/160=0.6   60%的分区率适合其他主控的SSD吗?

感觉固态硬盘最大的障碍还是颗粒寿命问题,如果能解决寿命问题就可以像普通硬盘那样分区和使用,很多问题就能解决了。
4#
liwenchao 发表于 2010-12-10 09:27 | 只看该作者
就是现在的价格太高了。
5#
无心飘落 发表于 2010-12-10 10:11 | 只看该作者
顶司令的帖,非常感谢!
6#
kinno 发表于 2010-12-10 10:58 | 只看该作者
支持一下,备用
7#
liwenchao 发表于 2010-12-10 10:59 | 只看该作者
浴室的签名照怎么又没有了?
8#
westmere 发表于 2010-12-10 11:03 | 只看该作者
应该会继续更新的吧?
9#
solonace 发表于 2010-12-10 11:34 | 只看该作者
已拜读 顶一下
10#
smatk768 发表于 2010-12-10 19:12 | 只看该作者
固态硬盘肯定会继续普及.  固态系统+机械仓库,依然成为趋势
11#
大D来了 发表于 2010-12-10 19:22 | 只看该作者
普通用户颗粒寿命不需要考虑...
3年内果断不会坏...
要说3年后?我会换硬盘的~~
12#
overthink 发表于 2010-12-10 20:40 | 只看该作者
回复 1# neeyuese


   也就是说固态硬盘如果接近写满,寿命会大受影响?
13#
michaeljames 发表于 2010-12-10 23:46 | 只看该作者
那80G的硬盘只能用48G吗。。。
14#
lk111wlq 发表于 2010-12-11 01:47 | 只看该作者
强技术贴~!!!
15#
karl.12 发表于 2010-12-11 05:23 | 只看该作者
也就是说寻道时间没有了~
那延迟潜伏期呢?
16#
neeyuese  楼主| 发表于 2010-12-11 06:33 | 只看该作者
寻道是指针移动的速度,延迟潜伏期是看盘的转速,当然都不会有。:L
17#
luruijing 发表于 2010-12-11 18:38 | 只看该作者
寻道是指针移动的速度,延迟潜伏期是看盘的转速,当然都不会有。
neeyuese 发表于 2010-12-11 06:33



    镁光新的c300出来了 价格稍微便宜了贵了一点点 换颗粒了?

参数是这样写的 Sequential Access - Read: up to 355MB/s Sequential Access - Write: up to 140MB/s Features: Performance – Improve boot up and application load times Reliability – Withstand extreme shock and vibration Compatibility – SATA 6Gb/s, backward compatible to SATA 3Gb/s Quality – Crucial is a trusted name in DRAM and NAND products Random 4K Read/Write: 60K / 30K IOPS ATA-8 w/TRIM, SMART Command Support, High-speed Synchronous NAND Data Transfer Kit: Cloning Parts: 3 years limited Model #: CTFDDAC128MAG-1G1CCA
18#
kinno 发表于 2010-12-11 19:48 | 只看该作者
现在的机械硬盘同样一点都不让人放心啊,我是说里面存有重要数据的话
19#
右撇子 发表于 2010-12-11 23:09 | 只看该作者
浴室分析的是原理,最本质的东西,我喜欢这种文章。虽然不是每个人都能看懂,至少我是看懂了,非常尊敬浴室的钻研精神
20#
neeyuese  楼主| 发表于 2010-12-12 07:20 | 只看该作者
C300新版?没听过,只是带了个USB线和软件让你转数据用的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部