固态硬盘之技术发展与应用趋势 智能应用 影音
工研院
ADI

固态硬盘之技术发展与应用趋势

  • DIGITIMES企划

台湾科技大学信息工程系助理教授谢仁伟
台湾科技大学信息工程系助理教授谢仁伟

学术界针对当前固态硬盘(Solid State Drive,SSD)的发展上,提出应用交叉存取、分拆与管线化技术三合一的等平行化技术,并点出今日SSD卡在电脑系统南北桥的瓶颈,以及业界所提出双埠DRAM/Flash的因应方案;并讨论到如何以SLC/MLC、DRAM/PRAM等技术发展混合架构SSD,次时代非挥发性存储器的优劣,最后则提到了SSD建构的RAID磁碟阵列下,加速同步位元演算的深度技术议题的讨论…

提升固态硬盘带宽╱效能的平行化技术

台湾科技大学信息工程系助理教授谢仁伟,指出SSD采多通道(Multi-Channel)设计,SSD主控芯片透过一组汇流排连接到DUMBO,DUMBO通常设计有四组以上可独立运作的Channel Manager(通道管控电路);每个channel manager内,由控制逻辑芯片与NAND界面连接并存取1〜8个NAND Flash单元,会设计两组buffer将NAND读与写的动作区隔开来,以Interrupt-Driven(中断驱动)的I/O处理方式可提昇读、写区隔的效率。

分拆技术(Striping)则是将主控芯片的需求分拆,例如把一个写入128个磁区分拆成两个写入64个磁区的动作,交叉技术(Interleaving)则将能同时处理作业各自放到不同channel,管线化(Pipelining)则是依序将每个需求紧密且没有停滞间隔的排入单一通道。从前端先使用Interleaving将I/O需求分门别类,进行stripping分拆,分拆的子I/O需求以管线化方式排入channel,将这三种技术一并应用,整个SSD的平行化效能就得以提昇。

高效能PC与SSD运作架构探索

传统PC架构上将SSD视为等同硬盘,并连接于I/O带宽较低的南桥芯片,而南桥藉由内部DMA控制器经过SATA界面向SSD取得数据,再传输到北桥的DRAM控制器与DRAM沟通。当系统产生Page Fault时,DRAM数据不能直接跟位于SSD直接沟通,须经过DRAM控制器,传送DMA命令到南桥,接着由南桥的DMA控制器藉由SATA界面读取SSD数据,数据再从南桥DMA控制器转到北桥DRAM控制器后回存到DRAM。以目前PATA、SATAⅡ仅提供133、300MB/s传输带宽下,系统得反覆从DRAM、北桥、南桥、SSD之间的关卡层层转达而出现效能瓶颈。

因此有学者以主控界面、数据并行处理两方面着手,像提出把SSD直接连接在北桥当作高速装置,传输界面改为DDR,同时SSD读写数据的平行化处理的概念。三星提出了Dual-Port的One DRAM来搭配Dual-Port SSD,其Dual-Port DRAM具备四个可独立读写运作的Bank,而Dual Port SSD则采取双SSD界面埠设计,DDR运作的控制芯片,以双通道控制两个独立读写NAND Flash存储器单元,连接到Dual-Port DRAM做为SSD数据缓冲区,使得CPU对SSD的读写可以双向化、平行化作业。

另外学者也提出North Bridge Dual Port(NBDP)架构,把DMA控制器移至北桥芯片,并且将有内建DMA控制器的双埠SSD,直接连接道北桥,由北桥芯片DMA控制器与双埠SSD连通直接建立相互平行化联系的直通高速管道,据分析在真实工作环境下可以提昇2.67倍的带宽效能。

数据去重复技术延展SSD使用寿命

谢仁伟指出延长SSD使用寿命的三大关键为:持续写入的总数据流量、预留空间大小,以及系统韧体对garbage collection与wear-leveling机制的处理效率。像Intel SSD可预留最多25%空间做为内部bad block替换与其他运作之用。学者提出Content Access Flash Transaction Layer(CAFTL)演算架构,每次有一笔数据写入时,系统判断若SSD已有该笔数据,则仅注记而不执行写入动作,要读取该笔数据时,则藉由原先注记到找出储存该笔数据的来源去撷取。

散乱处理单元(Hashing Unit)不以单一NAND Flash分页去细分,避免造成过多的比对动作影响效能。目前Hashing Unit对每一笔数据做160bit SHA-1指纹编码与系统比对;指纹储存单元(Fingerprint Store)仅保留最近最常被读取到数据指纹,其设计上区分成N个段落,每个段落由一连串的占4KB大小的存储器数据桶(bulket)所组成,每个bulket纪录着经过存取次数排序的数据指纹对应项目,每个项目储存有个对应的锁钥配对、160bit数据指纹编码、32bit储存位置与8bit参考值,并由160bit数据指纹值做为索引。

32bit储存位置标示所对应的实体区块定址(PBA)或虚拟区块定址(VBA),8bit参考值纪录该笔数据被引用的次数。储存数据时藉由二元树(Binary Search)、限制范围或最常引用的查找法则,若没有则这笔数据配置一个新的bulket并纪录于零散链结内;如果某笔数据被引用、读写的次数较多,则经过排序之后再比较前面的储存位置并注记起来。这种机制可大致去除掉冗长反覆的数据,相对的使储存空间得以变大。

他指出CAFTL这种间阶对映的演算法,挑战在于当实体页被移到某处(例如进行garbage collection)时,必须要很快速的识别逻辑页与实体页对映并迅速更新对映状态,而该实体页正被许多逻辑页指向引用时,此时系统逆向回溯去找出原始指向该实体页的每一个逻辑页项目,而无法进行garbage collection,除非页对映状态解除。

CAFTL应用到两阶段间接对映(Two-level Indirect Mapping),传统LBA逻辑页建立第一层查询表格,里面可纪录实体页(PBA)或虚拟页(VBA),而虚拟页被引用时,还需多一道VBA转PBA的查询表格来对映到实体页,这样当有多个逻辑页(LBA)引用某个虚拟页(VBA)项目,当SSD正在做Garbage Collection时,仅需修改VBA转PBA的表格内一个项目即可。

为了不让CAFTL反覆查询数据重复性,以及索引表格建立的动作拖慢系统效能,其加速方式在于重复写入不是备份系统常见的情况,简单的方式是不需做到100%精准,仅仅将写入数据的前四个位元组做取样位元组;其次可利用SSD Controller用32bit CRC来取代160bit SHA-1指纹编码并做权重排序,则运算负担课降低10倍。第三种加速方式则是以SSD读写Cache占用95%接近满载,或降到一半以下作为depublication的关闭╱开启机制,而比对重复性数据时也可以只比对前面几页确认即可。

混合存储器架构的SSD设计

谢仁伟提到在次时代非挥发性存储器中,似乎PRAM相位变化存储器,在储存容量╱成本上比较有机会,但它仍需面对温度以及功耗的问题,短期仍无法取代掉NAND Flash,但是可应用于像DRAM搭PRAM的混合架构应用。以少数Endurance较高的SLC来搭配大量Endurance较低的MLC或TLC存储器,这一类型混合SSD架构(Hybrid SSD)的挑战在于:1.数据存放的位置。需考虑数据存取的格式与特性,像较常读写的数据、系统链结表、FAT表等放在SLC。2.数据移出。因为数据不可能都存放于容量较小的SLC,因此要有个判断机制,将一些数据移出改放在MLC。3.针对SLC、MLC特性做Wear Leveling平均抹写的机制。

Hybrid SSD能控制把最常写入的数据都写入SLC时,有用的数据区块比较不易出现在尾端,因应循序抹除的特性,SLC可以呈现比较完美的Wear-Leveling。在真实环境下像是虚拟存储器分页档案或小型的零散位址转译表,经常读写的数据热区域仅占比较少的磁区数,特别适合于写入SLC。而Hybrid SSD控制器侦测当SLC Flash损耗快超过MLC Flash时,则转向写入MLC Flash。而MLC Flash管理上使用第一阶逻辑区块转实体区块的对映机制,而Hybrid SSD可能加入第二阶对映机制来修正记忆页链结。

至于DRAM/PRAM混合架构的储存装置,以DRAM做为PRAM的快取,也有学者提出双环形快去机制(Double Circular Caching Scheme)来处理。

应用Flash特性的Partial Parity Cache机制

谢仁伟指出当前SSD越来越普及化的情况下,如何应用Flash与其他NVM特性,来降低RAID运算的负担。以RAID5(4+1)为例,有五个SSD装置(Chip0〜Chip4),分别写入D0〜D4数据,以及P0同步位元数据,同步位元会分均分配、打散到各SSD装置。工作负担在于当其中一部SSD数据D0更新成D0’时,需要先读取D0与P0,运算出新的同步位元P0’之后再把D0’、P0’写回SSD,一共有两道读取与写入的步骤。

而Partial Parity Based Delayed Parity机制,在于追加一个由以PRAM、MRAM或电池供电的DRAM做为partial parity cache(PPC),当数据有更新时,由于更新前的数据仍存放在PPC,故可就近从PPC取得旧数据并与新数据直接运算产生新的同步位元并存放于PPC,而不会额外增加读出与写入的负担。


关键字