本帖最后由 neeyuese 于 2010-5-28 23:23 编辑
我个人对SandForce的算法有非常浓厚的兴趣,所以研究了不少时间,这里就分析下,也有可能完全不是这回事,有知道的欢迎一起讨论。
SandForce的主控,目前民用SSD里处理能力最强,价格最昂贵的主控,甚至有自己的专用DSP。
SandForce的主控,算法独特,首次把写入放大缩小到0.5x。(Intel官方说自己写入放大是1.1x)
采用SandForce主控的SSD,竟然没有外置缓存,由于主控太强大,内部的处理器缓存已经足够,而且压缩算法留出空闲闪存作为预留空间。
采用SandForce主控的SSD,实际RAW速度为R/W 220MB/130MB,而Compressed速度为R/W 285MB/275MB
我特地画了张草图来说明这个算法的与众不同。
以此图为例,假设我从一块机械硬盘复制一个10MB大小的EXCEL表格文件到SANDFORCE的SSD,假设这个文件进入SF主控后,经过压缩算法处理后,变成为一个2MB大小的压缩文件。然后再把这个压缩后的2MB大小的压缩文件放进闪存里,但是在操作系统的LBA里还是认为是原本的10MB(逻辑上),这样,我们就得到了8MB的空闲空间(物理上),由于这个SSD在这个操作里实际只占用了2MB的闪存空间,所以出现了以下几个优点:
1.闪存的实际磨损被减小了(这也是为啥写放大低于1的道理,压缩),间接的让MLC的写入次数达到了接近SLC的次数。
2.控制器可以清除8MB过时的“脏”数据,用来作为干净的预留空间(备用区)来提高写速度。(很像TRIM)
3.主控制器原生支持TRIM,更让这个效果得到了加强。
此主控的缺点是已经压缩过的或者被加密的数据将不能被压缩,这样就会真实反映出此主控下,SSD颗粒的真正速度(RAW)。这个速度和当前几大主流的SSD主控方案比,没太大优势。
我们继续把这个图反过来分析,既然数据是被主控压缩了存进闪存的,那么当我们想要访问这个数据时,自然需要“解压缩”才能使用了,虽然此主控有强大的处理能力,但是会造成一定的延迟,所以随机读取IOPS速度就受到了影响,造成SF主控的SSD低深度下随机读取能力并不是很出色。 |