分类号学校代码_第1页
分类号学校代码_第2页
分类号学校代码_第3页
分类号学校代码_第4页
分类号学校代码_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要基于闪存的固态盘(Flash-baed摘要基于闪存的固态盘(Flash-baedSolidStateDisk:)是近些年出现的一种新型存储设备。传统硬盘是由机械部件组成,而固态盘是由闪存芯片以一定结构组成的。相对于传统硬盘,固态盘在性能、能耗、可靠性、尺寸等方面有着明显的优势。现在,固态盘已逐渐成为便携计算机系统、桌面计算机系统、大型服务器系统、高性能计算系统的重要存储设备。但是闪存具有一些独特的读写特性,如:先擦后写、擦写次数有限、单个闪存芯片的读写性能有限,因此,对于固态盘组成、软件结构方面的设计应该是有针对性的,根据这些特性和外部负载的特点而进行特别“定制”。固态盘中有多个通道,每个通道由大量闪存芯片组成,闪存芯片具有多层结构,包括芯片-晶圆-分组。因此,固态盘有四个层次的并行结构:通道间并行—芯片间并行—晶圆间并行—分组间并行。有效利用这四个层次的并行是提高固态盘整体读写性能的关键。在固态盘中,闪存操作类型和分配方式影响着四层并行性的利用,如:多分组操作高级命令是利用分组间并行;交错操作高级命令是利用晶圆间并行;分配方式则是利用芯片间并行和通道间并行。但高级命令的使用有一定的限制条件,分配方式也具有多种不同的类型。所以,针对高级命令和分配方式与四层并行性之间的关系问题;针对四层并行性之间的优先级关系的问题,本文通过研究高级命令和分配方式的使用方法,来寻找四层并行之间的最佳优先级。实验数据显示,四层并行之间的最佳优先级是:通道间并行优于晶圆间并行;晶圆间并行优于分组间并行;分组间并行优于芯片间并行。固态盘中存在一个闪存转换层(FlashTranslationLayer:FTL),用于翻译上层文件系统的读写命令、管理闪存的各种操作。FTL的优劣直接影响固态盘的性能、寿命、能耗的好坏。但是,现有的FTL通常无法兼顾这三个方面的要求。为了达到兼顾性能、寿命、能耗的目标,本文提出了两种不同的FTL算法,即三层页级映射算法、隐藏翻译过程映射算法。三层页级映射算法是利用固态盘的硬件结构,将一个分组分成多个部分,从分配的角度将整个固态盘从逻辑上看成三层结构:通道—块组—页。在这个算法中,当一组逻辑页被分配到一个块组时,这些逻辑页可以分配到块组中任意一个物理页。三层页级映射减少了映射表容量,却提供了类似于纯粹页级映射的性能,是一个高性能、低成本的I映射方式。隐藏翻译过程映射算法是通过在传统固态盘结构中引入一个非易失存储器件(相变存储器),用以存放所有的页级映射关系,将读写映射关系数据的路径与读写用户数据的路径进行分离,达到了与页级映射相同的性能,减少了存放映射关系的内存容量,降低了内存的能耗,从而直接降低了固态盘的能耗。映射方式。隐藏翻译过程映射算法是通过在传统固态盘结构中引入一个非易失存储器件(相变存储器),用以存放所有的页级映射关系,将读写映射关系数据的路径与读写用户数据的路径进行分离,达到了与页级映射相同的性能,减少了存放映射关系的内存容量,降低了内存的能耗,从而直接降低了固态盘的能耗。固态盘中内存具有两个主要用途:存放映射关系数据、存放缓存数据。本文提出了自适应的动态缓存管理算法。自适应的动态缓存管理算法包括两个模找到映射关系区域大小和数据缓存区域大小的最佳比例,动态调整内存的分区;动态阈值调整算法是根据近期写请求的密度,调整提前写回的缓存数据量的阈值,利用负载的请求间歇期、固态盘的内部空闲资源,根据阈值提前写回部分缓存数据,提前释放数据缓存空间。实验表明,相比传统缓存管理算法,自适应的动态缓存管理算法可以明显提高固态盘的读写性能、使用寿命。固态盘模拟器是进行固态盘研究的重要手段。固态盘模拟器SSDsim是基于“模块化、高准确性、可配置”这一目标而设计实现的,为研究者提供了测试固态盘的时间、寿命、能耗的模拟平台。它分成三个主要部分:硬件行为层、数据缓存层、闪存转换层。为了验证SSDsim的模拟结果的准确性,本文将它的测试结果与固态盘原型系统的测试结果进行比较,结果显示SSDsim的模拟结果和固态盘原型系统的真实结果基本一致。由此,可以看到准确性的固态盘模拟工具。目前SSDsim已经开源。是一个高关键词:闪存,固态盘,并行性,闪存转换层,缓存,模拟器Flash-basedSolidStateDisk(SSD)isemergingasapromisingnonvolatilestoragedevice,whichiscomposedbymultipleflashchips.ComparedwithFlash-basedSolidStateDisk(SSD)isemergingasapromisingnonvolatilestoragedevice,whichiscomposedbymultipleflashchips.ComparedwithtraditionalHardDriverDisk(HDD),SSDprovideshigh-performance,low-energyconsumption,reliabilityandsoon.Atpresent,SSDshavebeen computingsystemsfromlow-endpersonalcomputers,medium-endserversto two characteristics,namely,write-after-eraseanderasecycle.Awriteoperationcanonlychangethevalueofeachtargetbitfromonetozero.Onceapageiswritten,itmustbeerased,whichmeansallbitsareresettoone,beforethenextwriteoperationcanbeperformedonthesamepage.Eachflashblockhasanupperlimitoferasecyclesbeforeitiswornout.Afterwearingout,ablockcannolongerstoreanydata.AtypicalMLCFlashhasanerase-cyclelimitofabout10K,whileatypicalSLCFlashhasanerase-cyclelimitofabout100K.Fortheseintrinsicflashcharacteristics,someuniqueSSDhardwarearchitecturesandsoftwaresystemsarepresented.TherearefourlevelsofparallelisminsideSSDs,includingchannel-levelparallelism,chip-levelparallelism,die-levelparallelismandplane-levelparallelism.Utilizingthesemulti-levelparallelismisthekeypointtoimprovetheperformanceofSSD.Infact,severalfactorswillimpacttheeffectivenessofparallelisminsideSSD,includingflashadvancedcommandsandallocationschemes.Flashadvanced inread/write/eraseoperations.Forexample,multi-planecommandutilizesparallelismbyexecutingmultipleread/write/eraseoperationsconcurrentlyplanes;interleavecommandutilizesdie-levelparallelismbyexecutingread/write/eraseoperationswithpipeliningstyleinseveraldies.ThereareseveralkindsofallocationschemesinSSD.Allocationschemesemploychannel-levelandchip-levelparallelism.Inthispaper,Iresearchtherelationshipbetweenseverallevelsparallelismandadvancedcommands,allocationschemes,determinethepriorityorderoftheselevelsthatoptimizestheperformanceandenduranceofSSD.MyexperimentalresultsshowthattheoptimalpriorityorderofparallelismsinSSDshouldbe(1)thechannel-levelparallelism,(2)thedie-levelparallelism,(3)theplane-levelparallelismand(4)thechip-levelparallelism.FlashTranslationLayer(FTL)isoneofthemostimportantcomponentsofSSD,whosemainpurposeistoperformtranslationfromlogicaladdresstophysicaladdressadaptingtotheunqiuephysicalcharacteristicsofflashmemeorytechnology.TwonovelFTLalgorithmshavebeenpresentedinthispaper,namelythree-levelmappingFTLschemeandhidingmappingFTLschemeandhidingaddresstranslationFTLscheme.TheutilizesthecharacteristicsofSSDhardwaresystem,partscalledblock-group.Ablock-grouphasafixedthisscheme,aseriesoflogicalpagesarestoreddividesaplaneintoseveralnumberofphysicalblocks.Ininablock-group.Insidetheblock-group,themappingrelationshipbetweenlogicalpageandphysicalpageisfullyassociative.Thisschemedecreasesthecapacityofmappingtablesignificantlyandprovidesexcellentperformanceassmoothlyaspuremappingscheme.ThelatterachievesthepuremappingFTLperformanceattheRAMcostofablock-mappingFTLwhileconsuminglowerenergy,byhidingtheaddresstranslation.Thebasicideaofthisschemeistocreateaseparateaccesspathtoread/writetheaddressmappinginformationtosignificantlyhidetheaddress-translationlatencybyincorporatingalowenergy-consumingsolid-statememorydevicethatstorestheentirepagemappingtable.Thebuffer-cacheofanSSDplaysanessentialroleinbridgingthespeedgapbetweenflashstoragemediaandthehostinterface.WhiletheexistingSSDbuffermanagementschemesaredesignedtoimproveSSDperformance,theyareoftenineffectivewhenservingthewidespreadburstsofI/Otrafficindata-intensiveworkloads.Toaddressthisproblem,thispaperproposesaProactiveandAdaptiveSSDbufferScheme(PASS)tojudiciouslyandactivelyflushdirtydatainanticipationoftrafficburstsbyexploitingthelight-trafficintervals,aswellasthechip-levelandchannel-levelparallelisminsideSSD.TheexperimentalresultsshowthatPASSsignificantlyandconsistentlyoutperformsthestate-of-the-artbufferschemesinbothresponsetimeandenduranceSSDsimisevent-driven,modularlystructure,multi-tieredandopen-sourceSSDsimulator.ItiscapableofsimulatingmostSSDhardwareplatforms,mainstreamFTLschemes,allocationschemes,buffermanagementalgorithmsandrequestschedulingalgorithms.ThethreetieredSSDsimdesignconsistsofthebuffermoduleatthetop,theFTLandallocationmoduleinthemiddle,andthelow-levelhardwareplatformmoduleatthebottom.Byfeedingblock-leveltracefilesandconfiguringtheparameterfiles,thewaitingtime,processingtime,responsetimeofeachrequest,totalerasurecount,bufferhitcountandotherdetailedinformationcanbeobtained.TovalidatetheaccuracyofSSDsim,arealSSDhardwareprototypehasbeenimplemented.TheaverageresponsetimeobtainedfromSSDsimisveryclosetothatobtainedfromtheprototype,whichindicatesthehighaccuracyofSSDsim.Keywords:Flash,Solid-StateDisk(SSD),Parallelism,FlashTranslationLayer(FTL),Databuffer,Simulator目录摘 1目录摘 1234绪 本文的研究内容和主要贡献 固态盘中并行性的研究固态盘中资源利用率及并行性的分类 各级并行性的分析 并行性利用与高级命令的关系 并行性利用与分配方式的关系 并行性利用的优先级 多层次并行固态盘的设计原则 本章小结 固态盘的高性能闪存转换层研究高性能闪存转换层的设计前 三层页级映射算法 隐藏翻译过程映射算法 系统测试 本章小结 固态盘中缓存管理算法自适应的动态缓存管理算法的设计前提 V556自适应的动态缓存管理算法的基本思想 动态内存分区调整算法 动态阈值调整算法 自适应的动态缓存管理算法的性能评价 本章小结 固态盘模拟器SSDsim的设计实现SSDsim的设计思路 SSDsim的总体框架 SSDsim的输入与输出 SSDsim的验证 SSDsim的应用与发布 本章小结 全文总结与展主要成果 下步研究展望 致 参考文献 附录附录附录攻读博士学位期间发表的学术论文 攻读博士学位期间参与的科研项目 攻读博士学位期间申请的发明专利及其他情况 1绪论 固态盘背1绪论 固态盘背景介基于闪存的固态盘具有高性能、低功耗、高可靠等诸多优点,一出现就迅速得到学术界和工业界的接受和重视,逐渐成为计算机存储系统的重要组成部分,它被认为可以在不远的将来替换磁盘,就目前的趋势来看,无论其是否能够最终替换磁盘,至少其已经在很多存储系统中成为了磁盘的有效补充。目前固态盘已经广泛的应用在银行、金融、航空、军事、通讯等各行各业中,并已经形成了每年全球上百亿的市场。著名调研机构IDC发布消息,尽管遭受了严重的金融危机,2009年全球固态盘市场的出货量仍达到了一千一百万块,相比金融危机之前的2008年增幅达14%,并且这种增长趋势将一直延续下去。截止2010年底,全球设计、生产固态盘的厂家多达200家以上,其中不乏传统芯片厂商英特尔、三星、东芝等,更甚至于包括了传统的硬盘生产厂商希捷、西数等,硬盘厂商开始固态盘的研发非常具有说明性。近些年,国内也出现了大量的固态盘生产厂商,包括忆正、源科等。基于闪存的固态盘(Flash-basedSolidStateDisk,是由一种基于闪存芯片的新型半导体存储设备[1][2][3]。闪存的出现有很长的历史。1984年,东芝公司的工程师FujioMasuoka首先提出了闪存的概念。英特尔是第一个将闪存产业化的公司,英特尔将这类闪存称为NOR型闪存。日立公司于1989年研制了一种NOR型闪存的替代者—NANDNOR型闪存还是NAND型闪存,它们的存储单元均是浮栅场效应管[1][2][3]。基于闪存的固态盘所采用的就是NAND型闪存芯片。目前单个闪存的容量、性能有限,所以基于闪存的固态盘与硬盘最大的区别在于,固态盘中没有任何机械部件。所以,相比传统硬盘,固态盘的能耗较低,可靠性更高[4]。闪存芯片具有其独特的操作特点,为了管理数量众多的闪存芯片,固态盘中需要存在一个软件层次[5],这个软件层次负责将上层文件系统的读写请求转换成闪存的操作命令,同时依据闪存的操作特点完成相应的管理。同传统存储设备一样,固态盘中也存在一个数据缓存区域[6][7],数据缓存能够减少对闪存的访问,从而提高固态盘的性能和寿命。1 固态盘的研究现目前,对固态盘的研究主要分成两个方面,即固态盘体系结构中多级并行性方面的研究和固态盘中软件算法研究。本节首先介绍固态盘的多级并行性方面的研究现状;然后介绍固态盘的软件算法研究现状;最后将介绍固态盘模拟器方面的研究现状。固态盘多级并行性方面的研究现N.Agrawal[1]L.M 固态盘的研究现目前,对固态盘的研究主要分成两个方面,即固态盘体系结构中多级并行性方面的研究和固态盘中软件算法研究。本节首先介绍固态盘的多级并行性方面的研究现状;然后介绍固态盘的软件算法研究现状;最后将介绍固态盘模拟器方面的研究现状。固态盘多级并行性方面的研究现N.Agrawal[1]L.M.Grupp[8]在其文章中提到,闪存芯片有多个层次,1.1列出了这个多层次的组织结构。从图中可以看到,闪存芯片由五个层次组成:芯片(chip)—晶圆(die)—分组(plane)—块(block)—页(page。图 闪存芯片中存储部分结构芯片(chip)层是最外层结构,通常,芯片层拥有一套完整的外围电路,外部信号线。在很多时候,闪存厂商为了节约成本和空间,将多个芯片在物理上叠加起来,叠加在一起的每个芯片有一个独立的片选信号和一个独立的工作状态信号线,外部看来这些芯片就是一个整体,被称之为颗粒(package)[10]。因为颗粒是多个芯片在物理上的几何堆砌,并无逻辑上的意义,所以不存在颗2粒这个层次。晶圆(die)层是闪存的第二层结构,晶圆层次的出现也是因为闪存厂商出于节约成本和空间的目的,将多个晶圆组合在一起,共用一套外围电路和外部信号线,但是为了执行高级命令(将在后面详细介绍,闪存厂商提供的高效的读、写、擦除方法,是对普通读、写、擦除命令的升级,每个晶圆有一个内部粒这个层次。晶圆(die)层是闪存的第二层结构,晶圆层次的出现也是因为闪存厂商出于节约成本和空间的目的,将多个晶圆组合在一起,共用一套外围电路和外部信号线,但是为了执行高级命令(将在后面详细介绍,闪存厂商提供的高效的读、写、擦除方法,是对普通读、写、擦除命令的升级,每个晶圆有一个内部的工作状态信号线(Ready/Busy,与芯片层的工作状态信号线不同的是,用户无法看到内部的工作状态信号线,它存在于芯片内部,用于查询每个晶圆的当前状态。分组(plane)层是闪存中关键层次,为了提高闪存的读写速度,在每个分组中设置了一个或者多个寄存器(目前,三星的闪存产品[11]提供一个寄存器,称之为数据寄存器—dataregister;美光的闪存产品[56]提供两个寄存器,称之为数据寄存器—dataregister和缓存寄存器—cacheregister。数据被暂存在这个寄存器中,通过I/O信号线逐步传入或传出。块(block)层是闪存中擦除操作的基本单元,通常,一个分组中有固定数量的物理块,在三星的一款产品中[11],一个分组中有2048个物理块。页(page)层是闪存中读写操作的基本单元,通常,一个物理块内有固定数量的物理页,在同样一款三星的产品中[11],一个物理块中有64个物理页。值得注意的是,分组中的寄存器大小就是一个物理页的大小,这是因为分组中的寄存器被用作读写操作时的缓存,所以寄存器的大小应该被设置成与闪存的读写操作单元大小一样。图1.2是一个页的结构示意图,在这个图中,假设页大小为2KB,其中包括正常存储空间和一个额外存储空间。额外存储空间是一个特殊的空间,它用来保存正常存储空间中数据的ECC纠错码,逻辑页号等元数据。通常每512字节的正常存储空间配备16字节的额外存储空间。图 物理页结构除此之外,部分闪存芯片存在子页的层次11,这个层次是依据传统的块设备特点设计的。如图1.2一个页中包括4个子页。在传统块设备中,一个扇区大小512字节,所以子页的大小也为512字节。3闪存芯片除了具有以上层次结构,它在使用过程中还存在两个主要特点:(1闪存芯片除了具有以上层次结构,它在使用过程中还存在两个主要特点:(1先擦后写(2擦写次数有限。先擦后写是因为闪存中的写操作(program,也称作编程操作,能将每个存储位上的1变成0,但是不能将0变成1。将存储01只能通过擦除操作,这就意味着,在写过一次的存储位上(已经10)不能紧接着再写一次(写操作无法将存储位的01,只有进行擦除操作后才能进行下一次写操作。这就是所谓的先擦后写特点;闪存的存储介质是浮栅场效应管,写、擦除操作需要通过半导体层向浮栅注入或者排出电子进行信息的保存,电子多次通过半导体之后将击穿半导体,这导致闪存的写、擦除次数有限[117]。通常,SLC[32](每个浮栅场效应管保存一位数据)类型的闪存,擦除次数为万次;MLC[32](每个浮栅场效应管保存两位数据)类型的闪存,擦除次数只有千次;最新出现的每个浮栅场效应管保存三位数据的闪存,擦除次数下降到百次[32]。为了使外部控制器的数据和控制信号能够与闪存芯片交互,闪存厂商提供了一组数据信号线和一组控制信号线以传输数据和信号。根据数据传输率的不步总线的闪存芯片上,数据通过一组异步总线进行传输;同步总线的闪存芯片上,数据通过一组带外部时钟的同步总线进行传输。前者的理论最大数据传输率为40MB/s[34],后者的理论最大数据传输率为400MB/s[33]。为了访问和管理闪存芯片中存储的数据,闪存厂商提供了一系列的闪存操作命令,包括基本命令和高级命令[11][33][34]。基本命令就是通常所说的读、写、擦除。主要的高级命令包括三种:内部数据迁移(copyback、多分组操作(multi-plane、交错操作(interleave。高级命令的设计初衷是为了高效地执行读、写、擦除操作。下面将分别简要介绍这几种操作命令。读操作[33][34]:读取闪存中的数据。完整的读操作分成三个部分:发送命令,访问介质,传输数据。写操作[33][34]:将数据存储到闪存中。完整的写操作分成三个部分,发送命令,传输数据,访问介质。擦除操作[33][34]:擦除闪存中的某个物理块。数据内部迁移(copyback)[11][33][34]:在一个分组内部,将一个物理页的数据移动到同一个分组内其他物理页。它的操作过程是:首先从源物理页中将数据读出到这个分组的寄存器,然后从这个寄存器写回到位于同一个分组的目标物理页。这个高级命令使得一次数据迁移在分组内部完成,没有占用外部数据4总线。多分组操作(multi-plane总线。多分组操作(multi-plane)[11][33][34]:一个晶圆上的多个分组同时进行多个读、写、擦除操作,它包括三个命令:多分组读(multi-planeread、多分组写(multi-planewrite、多分组擦除(multi-planeerase。多分组读的操作过程是:同一个晶圆上的多个分组同时将数据从介质中读出到该分组的寄存器中,再通过外部数据总线,依次将每个分组的寄存器中的数据传输出去。多分组写的操作过程是:依次将数据发送到同一个晶圆的多个分组的寄存器上,然后将这些寄存器中的数据同时写到介质中。多分组擦除的操作过程是:依次发送擦除命令给同一个晶圆的多个分组,然后这些分组同时执行擦除操作。多分组操作只消耗了一次读介质、写介质、擦除介质的时间,而完成了多次读、写、擦除操作。(interleave[11][33][34]:根据一个芯片由多个晶圆组成的结构特点,利用流水的方式,依次操作每个晶圆的读、写、擦除。在交错操作中,当一个晶圆处于介质访问阶段时,数据总线向同一个芯片上的另一个晶圆发送数据,当数据传输完成后,该晶圆进入介质访问阶段,然后数据总线再向同一个芯片上的第三个晶圆传输数据,如此循环往复,不同晶圆通过轮流使用外部总线,而隐藏对介质的操作过程,最终在较短时间内完成多次读写操作。所有高级命令可以组合使用,例如多分组操作和交错操作组合在一起形成:交错多分组操作,它是利用交错操作流水式地将数据传输到多个晶圆,使多个晶圆同时执行多分组操作。单个闪存的存储容量、性能有限,以三星的一款闪存芯片[11]为例,其存储容量为4GB,读写操作最大理论带宽为40MB/s。为了使固态盘提供足够的容量和性能,通常将多个芯片集合在一起,形成如图1.3所示的固态盘多通道结构[1][10][14]从图中可以看到,在固态盘中,存在三种主要部件[1][16][18]:固态盘控制器芯片、闪存芯片、内存芯片。在少数低端固态盘中,为了节约成本通常利用控制器内部的存储空间而将内存芯片省去。固态盘控制器是整个固态盘的核心,所有的软件算法全部由控制器执行。固态盘控制器中有很多逻辑单元模块[15][16][17],包括微处理器、主机接口控制器、内存控制器、DMA、多个相互独立的通道控制器等。微控制器是固态盘的计算处理单元;主机接口控制器负责从外部接口获取读写请求,然后传递给固态盘控制器内的其它模块;内存控制器是用来控制固态盘内的所有内存芯片;DMA是在固态盘内部用来控制内存芯5片数据与通道控制器FIFO数据直接存取操作的控制单元;通道控制器用来控制一系列片数据与通道控制器FIFO数据直接存取操作的控制单元;通道控制器用来控制一系列的闪存芯片。通常在固态盘中,为了提高性能和存储容量,存在多个通道,每个通道均有一个独立的通道控制器。在每个通道控制器中有一个数据缓存区(FIFO这个部分在DMA的控制下,与内存之间进行快速的数据交换固态盘中多通道结构图在固态盘中,通道的结构是影响性能的关键因素。通常,不同通道的结构是通过通道上的每个芯片的数据线、信号线的连接方式进行区别的,图1.4中列出了几种不同的通道结构[15][16][17]。从图1.4中可以看到,根据数据线、信号线的连接方式不同,通道的结构可以分成三种不同类型:全独立型、独立数据总线型、独立片选型。全独立型是给每个芯片提供一组独立的数据总线和一组信号线(片选CE和工作状态R/B,需要注意的是,在有些闪存产品中,多个芯片被叠加在一起形成一个封装,这种情况同样需要给每个芯片一组独立的数据总线和一组独立的信号总线。这种类型的连接方式使得通道控制器可以独立控制通道上的任何芯片。例如,通道控制器向通道中的某一个芯片发送写请求,然后利用这个芯片独立的数据总线发送数据,在这个过程中通道控制器可以向其他芯片发送写请求、读请求、或者擦除请求。因此全独立型的通道结构可以使得通道上所有芯片处于不同的工作状态。在全独立型的通道结构的通道控制器上,需要设置多个数据缓存(FIFO,通常有多少闪存芯片就需要有多少FIFO。独立数据总线型通道结构中,每个芯片拥有一组独立的数据总线,但是整个通道只有一条片选信号和一条工作状态信号。这意味着独立数据总线通道结构中的所有芯片的读、写、擦除操作是同时进行的,换句话说,所有芯片的相同位置的物理页组成了一个超级物理页。如1.5所示,假设单个物理页大小6为2KB,那么在一个由4个芯片组成的独立数据总线型通道中,超级页大小为8KB。在对这个通道中的芯片进行读写操作时,组成的超级页的四个物理页将被同时读写,同样擦除操为2KB,那么在一个由4个芯片组成的独立数据总线型通道中,超级页大小为8KB。在对这个通道中的芯片进行读写操作时,组成的超级页的四个物理页将被同时读写,同样擦除操作也是4个芯片相同位置的物理块同时擦除。独立数据总线型通道结构适用于每次请求的数据量较大的负载中。独立数据总线型通道结构存在的主要问题在于,当通道上某个芯片的一个物理块失效后,将导致其他芯片上相同位置的物理块无法进行正常的读写操作,这将加速降低固态盘的寿命。因为独立数据总线通道结构的所有芯片中相同位置的物理页组成了超级页,所以这种结构的通道控制器上,有一个容量与超级页相同的数据缓存(FIFO0123CECER/BR/BI/O0~I/O0~I/O7I/O0~I/O7I/O0~A.通道结构10123I/O0~I/O7I/O8~I/O15I/O23~B.通道结构20123CECER/BR/BI/O0~C.通道结构3三种不同的通道结构独立片选型通道结构中,每个芯片拥有一个独立的片选信号线和一个独立的工作状态信号线,整个通道共用一组数据总线(8位或者16位。在这种结7通道控制器通过独立的信号总通道控制器通过独立的信号总线向芯片a发送读命令,芯片a在执行读命令时需要一段时间的准备时间,即将数据从目标物理页读出到分组的寄存器,这个过程将消耗几十微秒,在这个过程中,通道控制器将向芯片b发送读命令,同样这个命令的执行需要一定的准备时间,在这个过程中,之前芯片a中读命令的数据可能已经读出到寄存器,于是将从数据总线中传输出去,当这次传输完成后,再接着传输芯片b的数据。在独立片选信号型的通道结构通道控制器上,也需要设置一个数据缓存。图 超级页组成示意多个独立通道,每个通道上有多个独立闪存芯片,每个闪存芯片存在<芯-晶圆-分组>的多层次结构,使得固态盘存在多个层次的并行,在这方面方面,有很多富有成效的研究成果。F.Chen[10]等提出了固态盘内部并行的概念,与Y.Hu[16]等提出的四层并行不同的是,F.Chen的第二层并行称之为package-levelJ.Kang[15]等提出了在高性能固态盘中利用多个通道的思想,他们提出将多个请求分别由多个通道独立完成。S.Park[17]等为多通道的固态盘设计了一个利用多通道的映射算法。J.Seol[18]等为多通道的固态盘设计了一个数据缓存区管理算法。这几种研究成果主要集中在对通道级并行、芯片级并行的研究。对固态盘中晶圆级并行、分组级并行的研究并没有充分的探索。NAgrawal[1]等提出在固态盘中存在多种类型通道结构,不同的通道结构表现出不同的系统性能。他提出了通道中的交错操作,极大地提高了单个通道的读写性能。C.Dirik[14]等考察了固态盘的硬件结构、内部带宽、并发性对固态盘性能的影响。他通过调整通道总线位数、通道结构、交错操作的方法、并发操作的数量,考查了固态盘性能的变化。8固态盘软件算法的研究现状图1.6是固态盘中软件结构示意图。在固态盘中,软件结构固态盘软件算法的研究现状图1.6是固态盘中软件结构示意图。在固态盘中,软件结构包括两个主要的模块[19][27][88]:数据缓存管理模块和闪存转换层模块(FTL,除此之外,还有其他一些辅助模块,统称为其他模块,如图1.6中阴影部分所示,软件算法方面的研究就集中在这个部分。外部请求首先经过数据缓存管理模块的处理,根据这个模块的处理结果,决定是否需要经过闪存转换层模块的处理。其他模块主要是对数据进行一些一致性,安全性方面的检查、设置,完成包括校验码生成、检验、断电保护等方面的工作[27][28]图 固态盘的软件结构示意(1)闪存转换层模块从图1.6中可以看到,闪存转换层包括三个方面的模块:地址映射[40](garbagecollection损耗均衡( mapping、垃圾回收(wear-leveling。后两个模块的设计决定于第一个模块的设计,采用不同的地址映射算法就需要设计不同的垃圾回收和损耗均衡算法。下面分别介绍这三个算法的研究进展。9地址映射地址映射是整个闪存转换层的核心部分,因为它决定了垃圾回收和损耗均衡算法。通常地址映射分成三种基本类型[5][6][39]:页级映射、块级映射、混合映射。页级映射[5][39]地址映射地址映射是整个闪存转换层的核心部分,因为它决定了垃圾回收和损耗均衡算法。通常地址映射分成三种基本类型[5][6][39]:页级映射、块级映射、混合映射。页级映射[5][39]:以物理页为基本映射单元。在这种映射方法中,逻辑页与物理页的对应关系是全相联的,即,逻辑页的数据可以存放在任何位置的物理4字节的存储容量,页级映射的映射表通常较大。映射表作为需要经常读写的元数据,在固态盘运行块级映射[6][39]:以物理块为基本映射单元,在这种映射方法中,逻辑页与物理页的对应关系是组相联的,即,逻辑页的数据只能存放在某个物理块中特定偏移的物理页中。每个逻辑块有一个映射关系,因为一个逻辑块包括几十上百个逻辑页,因此相对页级映射,块级映射的映射表较小,其大小通常是页级映射的映射表的几十上百分之一。但是,块级映射具有较差的写操作性能。混合映射[41][52]:将所有的物理块分成两个部分:日志块和数据块。日志块采用页级映射,数据块采用块级映射。混合映射固态盘的性能介于页级映射和块级映射之间。混合映射中,日志块通常数量较少,当日志块数量降低之后,需要将日志块和数据块进行合并[41],这个合并操作将导致固态盘性能明显下降。综合来说,页级映射性能好,但是其映射表较大;块级映射映射表较小,但是性能较差。混合映射的提出是为了将这两种映射算法取长补短。最基本的混合映射被称之为BAST[41]。在这种混合映射算法中,每个日志块属于一个特定的数据块,也就是说,在BAST中,只有属于这个特定数据块中的数据才能被记录到这个日志块中。日志块和它所属的数据块是一一对应的关系。当一个数据块的日志块中有效空间消耗完,但其他日志块中还有有效空间时,这个数据块无法使用其他日志块,所以这种混合映射算法不能充分利用日志块中的存储空间。S.W.Lee等提出一种新的混合映射算法FAST(FullyAssociativeSectorTranslation)[41]。在这种混合映射算法中,将所有日志块与物理块之间的关系由一一对应变为全相联,即,任何一个物理块中的数据可以写到任何一个日志块中。在这样一种混合映射算法中,提高了日志块的使用率,但是在回收日志块时,因为一个日志块中可能保存有多个数据块的数据,所以将会导致多次合并操作,混合映射中大量的合并操作将影响系统性能,所以如何减少合并操作FTL[52]FASTJUKang提出的另一种混合映射算法。在这种算法中,给M个数据块分配N个日志块,这另一种混合映射算法。在这种算法中,给M个数据块分配N个日志块,这M+N个物理块作为一个超级块。在一个超级块内,N个日志块可以被M个数据块使用;不同超级块之间的日志块和数据块不能共用。在这个算法中,将合并操作限制在一定范围内,减少了合并操作对性能的影响。页级映射是所有映射算法里面读写性能最优的算法,大量研究试图解决页级映射映射表较大的问题。A.Gupta38等提出了一种新的基于页级映射的闪存转换层:。TL是基于需求的选择性映射关系缓存映射算法的简称。在L中,将所有映射关系分成多个映射关系组,每个映射关系组中保存连续逻辑页的映射关系,每个映射关系组保存在闪存的一个物理页中,为了查找这些映射关系组,需要设置一个映射关系组的映射关系。在L中将页级映射表整体放置在闪存中,根据负载经常访问数据的情况,将经常读写的映射关系放置在内存中。当读请求到达时,首先在内存的映射关系区域寻找目标映射关系,当目标映射关系在内存中,则根据这个映射关系将目标数据读出;当目标映射关系不在内存的映射关系区域时,需要根据映射关系组的映射关系,找到目标映射关系的映射关系组在闪存中的位置,然后将目标映射关系从闪存中读出,再根据这个映射关系读出目标数据。当写请求到达,写入新的数据到闪存中时,将产生新的映射关系,如果这个映射关系在内存的映射关系区域,则将新的映射关系替换旧的映射关系;如果这个映射关系不在内存的映射关系区域,则需要首先将映射关系区域中部分旧的映射关系写回闪存,为新的映射关系腾出内存空间,然后将新的映射记录在内存的映射关系区域。L通过只在内存中保存经常用的映射关系减少内存中映射关系区域的大小,经常使用的映射关系因为保存在内存中,所以这部分数据的读写性能与纯粹的页级映射一样;但是L受负载局部性影响很严重,当映射关系不存在于内存中时,将导致一系列的额外读写操作,因此当局部性较差的负载使用L时,其性能下降比较明显。垃圾回收在基于闪存的固态盘中,因为闪存需要先擦后写,所以对固态盘的更新操作通常先写到其他空闲物理页,将之前的物理页标记为失效数据页,然后再修改映射关系。大量更新操作之后,固态盘中将出现大量失效数据页,大量失效数据页将导致固态盘中可用空间的减少。这些失效数据页分撒在固态盘的每个通道和芯片,失效数据页在没有被擦除之前将无法使用。垃圾回收就是将这些失效数据页集中起来,统一进行擦除操作,恢复固态盘中的可用空间。通常在固态盘中设置一个阈值(例如20%),当固态盘中空闲页的数量降低到这个阈值以下时,触发垃圾回收操作[5][6]失效数据页集中起来,统一进行擦除操作,恢复固态盘中的可用空间。通常在固态盘中设置一个阈值(例如20%),当固态盘中空闲页的数量降低到这个阈值以下时,触发垃圾回收操作[5][6]。垃圾回收涉及到大量的数据迁移,这个过程将占用固态盘内的大量通道、芯片资源,这势必影响固态盘对外部请求的服务。因为垃圾回收操作是固态盘内部固有操作,所以被称之为固态盘的后台操作。损耗均衡闪存具有一定的擦除次数,当闪存中的某一个物理块的擦除次数达到了极限,这个物理块将无法进行正常的读写操作,为了避免因擦除不平衡导致的部分物理块过早失效的情况,需要设计损耗均衡算法使得固态盘中每一个物理块的被擦除次数基本相同[5][6]。通常损耗均衡算法分成两种类型:动态损耗均衡和静态损耗均衡。动态损耗均衡算法是在固态盘运行过程中,实时记录每一个物理块的擦除次数,当写请求到达,需要为其分配空闲块时,找出一个擦除次数最少的物理块作为这次写操作的目标块。静态损耗均衡算法是针对那些保存有数据的物理块进行的数是有些物理块中的数据被经常性地更新。通常,不经常被更新的数据称之为冷数据,经常被更新的数据称之为热数据。存放热数据的物理块的擦除次数通常远多于存放冷数据的物理块的擦除次数。静态损耗均衡算法就是将冷热数据交换,将冷数据存放在擦除次数较多的物理块中,这样保证这些物理块在后续的操作中不再会被经常性地擦除;将热数据存放在擦除次数较少的物理块中,这样使得这些物理块在后续的操作中被经常擦除,通过这个方式,平衡物理块之间的擦除次数。损耗均衡过程也导致了大量的读写擦除操作。这些读写擦除操作也会占用大量的固态盘内部资源,这势必影响固态盘对外部请求的服务。同样,损耗均衡作为固态盘的内部操作也被称之为后台操作。(2)数据缓存管理模块与传统硬盘一样,固态盘中存在一定量的内存空间,不同的是,硬盘中的内存空间全部作为数据缓存区使用,而固态盘中的内存空间有两个主要用途:数据缓存区和映射表区域。映射表用作记录映射关系;数据缓存区存放部分经常读写的数据。在固态盘中,数据缓存区有两种主要类型:纯粹写缓存,读写混合缓存。两者的区别在于,纯粹写缓存只将写请求的数据记录在数据缓存区中,而读写混合缓存将写请求和读请求的数据均记录在数据缓存区中。数据缓存区中的数据按照一定的置换算法决定是否写回闪存,通常用到的置换算法包括:先到先服务算法(FI数据缓存区和映射表区域。映射表用作记录映射关系;数据缓存区存放部分经常读写的数据。在固态盘中,数据缓存区有两种主要类型:纯粹写缓存,读写混合缓存。两者的区别在于,纯粹写缓存只将写请求的数据记录在数据缓存区中,而读写混合缓存将写请求和读请求的数据均记录在数据缓存区中。数据缓存区中的数据按照一定的置换算法决定是否写回闪存,通常用到的置换算法包括:先到先服务算法(FIFO,最近最少用到算法(LRU,最不经常使用算法(LFU)等。数据缓存区的使用是提高固态盘性能、寿命的关键点,因为合适的数据缓存区算法可以使得大量外部请求由固态盘中内存服务,无需访问闪存介质,而内存的访问速度比闪存的访问速度快一个数量级以上,所以当大量内存操作代替闪存操作时,固态盘的读写性能将明显提高02860]。同时,当大量写请求由内存服务时,将减少对闪存的写操作,这意味着固态盘使用寿命的提高728286]。所以,因为数据缓存对性能、寿命有直接的影响,在这个方面,存在大量的重要研究成果。BPLRU[22]是H.Kim等提出的一种旨在提高随机写操作的数据缓存管理策略。这种缓存管理策略使用在基于混合映射的固态盘上,并且认为固态盘中的缓存为纯粹的写缓存。在BPLRU中,将数据缓存区中属于同一个逻辑块的数据视为一个整体,以此为单位在数据缓存区中按照LRU算法进行排序。当这个单元中的任何数据被命中时,整个单元移动到数据缓存区队列的队首。当数据缓存区被填满,又有新数据需要写到数据缓存区时,需要将缓存区队尾单元的数据写回闪存。在写回闪存之前,首先需要将这个单元所属的逻辑块的其他数据读出到内存,在内存中组成一个完整的数据块,写回时将这个完整的数据块写回。这种设计保证写回的是保存有完整最新数据的物理块,避免写回的数据需要与闪存中同物理块的其它数据进行合并操作。BPLRU提高了基于混合映射固态盘的缓存性能,但是受限于混合映射方式,其性能存在一定缺陷。PUDLRU[23]是另一个基于混合映射的数据缓存管理策略,J.Hu等基于BPLRU改进设计了这种新的纯粹写缓存算法。在PUDLRU中,将数据缓存区中的队列进行LRU排序,在写回数据时,不限定写回队尾的单元,而是综合考虑当前负载的特点,考虑物理块的擦除次数,考虑读出数据的开销等,在队尾的数据中寻找最合适的写回单元,保证写回的操作的开销最小。因为考虑了多个BPLRU未曾考虑的性能影响因素,PUDLRU的性能优于BPLRU。CFLRU[24]S.Park等提出的基于页级映射的缓存管理策略,这是一种读写混合映射策略。在这个策略中,将数据缓存区分成两个区域:工作区域和优先回写区域。当外部请求到达,需要数据缓存区空间时,首先将优先回写区域的数据写回或者直接删除。M.Huang[25]提出一种新的固态盘缓存算法,在这种算法中,数据缓存区中的数据被周期性地写回闪存,具体的周期是提前设定的,无法实时地修正。在这种算法中,固态盘被认为和磁盘一样,有空闲、工作、暂停三个状态。这个先回写区域。当外部请求到达,需要数据缓存区空间时,首先将优先回写区域的数据写回或者直接删除。M.Huang[25]提出一种新的固态盘缓存算法,在这种算法中,数据缓存区中的数据被周期性地写回闪存,具体的周期是提前设定的,无法实时地修正。在这种算法中,固态盘被认为和磁盘一样,有空闲、工作、暂停三个状态。这个算法存在的问题是,周期写回将导致写闪存次数快速增加,进而导致固态盘的寿命明显减低;并且算法的设计没有利用固态盘的并行性。固态盘模拟器的研究现状在目前的大多数固态盘研究中,为了对目标策略进行测试评价,通常有两个方法:基于真实系统进行部署、实现,完成对目标策略的测试评价;基于模拟器,用模拟器模拟固态盘的各种行为,将目标策略在模拟器上实现,最终实现对其的测试评价。因为固态盘厂商通常将固态盘的固件作为重要产品机密,市场上可以买到的固态盘通常只能作为一个黑盒子使用,无法探知其内部的硬件结构,软件算法,更无法在其上实现研究者的目标策略。有条件的研究机构和厂商可以花费一定的人力物力完成原型系统的设计实现,但是大多数研究机构、厂商在一个设计没有明确优势的前提下,为了节约开发、研究成本,通常首先使用模拟器,在模拟器上实现目标策略。只有在模拟器上证明该策略有明显优势之后才设计实现原型系统。事实上,主要的固态盘厂商均有各自的固态盘模拟器,但是这些模拟器作为公司机密,无法为外界所利用。为了方便研究界对固态盘进行全面的研究,目前,有三款开源固态盘模拟器:micro-add[47]、Micro-add是微软研究院于2008年公布的一款基于disksim[49][97]的事件驱动的固态盘模拟器,这个模拟器作为一个模块整合在disksim中,它利用了disksim的结构和函数,实现了有关固态盘的核心部分,包括:基本的读、写、擦除操作,主流的映射算法—页级映射、块级映射。Micro-add是最早出现的模拟器,它为后续的模拟器提供了一个基本的参考。Flashim是宾夕法尼亚州立大学于2009年开发的一款事件驱动固态盘模拟器,这个模拟器提供了一个固态盘模拟的基本框架和一系列的空函数。它实现了基本的读、写、擦除操作,以及页级映射等基本软件层。Flashsim是基于c++开发的,提供了良好的层次结构,为后续的二次开发提供了方便。以上两种模拟器没有考虑高级命令的模拟功能,也没有提供固态盘数据缓存区的模拟功能,而高级命令和数据缓存区是固态盘中提高性能的重要手段,并且最重要的一点是,这两种模拟器的模拟结果都没有经过验证,无法保证测试的准确性,因此在高性能固态盘的研究中使用这两种模拟器具有一定的局限性。SSDsim是华中科技大学信息存储及应用实验室于2009年开发的一款固态盘模拟器。SSDsim是一款事件驱动、模块化、可配置、高准确性的固态盘模拟器。它由三个层次组成:数据缓存层、闪存转换层、硬件行为层。最上层是数以上两种模拟器没有考虑高级命令的模拟功能,也没有提供固态盘数据缓存区的模拟功能,而高级命令和数据缓存区是固态盘中提高性能的重要手段,并且最重要的一点是,这两种模拟器的模拟结果都没有经过验证,无法保证测试的准确性,因此在高性能固态盘的研究中使用这两种模拟器具有一定的局限性。SSDsim是华中科技大学信息存储及应用实验室于2009年开发的一款固态盘模拟器。SSDsim是一款事件驱动、模块化、可配置、高准确性的固态盘模拟器。它由三个层次组成:数据缓存层、闪存转换层、硬件行为层。最上层是数拟各种映射算法的处理过程,包括块级映射,FAST,页级映射,DFTL等常见映射算法,这一个层次需要根据请求的类型和大小,选择相应的闪存命令,将该命令发送给最下层的硬件行为层。硬件行为层在接受到上层的命令后,根据不同的命令,模拟执行过程,将执行时间和能耗记录下来。最终,模拟执行完毕后,输出所有相关结果,包括负载中请求的执行时间和所耗费的能耗,缓存区域命中率,闪存擦除次数等。 本文的研究内容和主要贡献本文的研究对象是固态盘体系结构中多级并行性和软件算法,从四个方面探讨了提高固态盘性能、改善寿命、能耗的方法、技术和研究手段:从体系结构的角度研究固态盘内多级并行性对固态盘整体性能的影响方式、程度,即第二章研究讨论的各级并行性的分析、并行性与高级命令的关系、并行性与分配方式的关系,以及各层次并行性利用之间的优先级关系。利用页级映射算法所提供的高性能特点,设计基于页级映射算法的新的闪存转换层,在提供类似于页级映射算法的高性能同时,大幅降低映射表占据内存空间的比例,即第三章提出的三层页级映射算法和隐藏翻译过程映射算法。利用固态盘内部大量存在的空闲通道、空闲芯片,以及负载中普遍存在的第四章提出的自适应的动态缓存管理算法。现有的固态盘模拟器具有一定局限性,为提供一个合适的高性能固态盘模SSDsim的设计思想、实现方法。在固态盘体系结构中的多级并行性和软件算法两个层面上,以上技术分别从不同的切入点入手,相互配合,互为支撑,为构建一个高性能的固态盘提出了一种新颖有效的解决方案。具体而言,本文研究了构建高性能固态盘的三个重要问题。第一:在固态盘现有的多层次结构上,如何利用多层次结构提供的多层次并行;这些并行层次与高级命令、分配方式有什么样的联系;这个多层次并行对固态盘体系结构的设计有什么影响?第二:目前最佳的闪存转换层算法是页级映射,但是其映射表占用内存比例过大,这将导致固态盘整体成本、功耗增加,如何设计一个态盘中数据缓存对固态盘的性能、寿命提升有直接影响,而固态盘中内存空间有限,有限的内存空间需要同时存放缓存数据和映射关系,如何利用有限的内的设计思想、实现方法。在固态盘体系结构中的多级并行性和软件算法两个层面上,以上技术分别从不同的切入点入手,相互配合,互为支撑,为构建一个高性能的固态盘提出了一种新颖有效的解决方案。具体而言,本文研究了构建高性能固态盘的三个重要问题。第一:在固态盘现有的多层次结构上,如何利用多层次结构提供的多层次并行;这些并行层次与高级命令、分配方式有什么样的联系;这个多层次并行对固态盘体系结构的设计有什么影响?第二:目前最佳的闪存转换层算法是页级映射,但是其映射表占用内存比例过大,这将导致固态盘整体成本、功耗增加,如何设计一个态盘中数据缓存对固态盘的性能、寿命提升有直接影响,而固态盘中内存空间有限,有限的内存空间需要同时存放缓存数据和映射关系,如何利用有限的内存空间,设计一个高性能的固态盘数据缓存算法?本文的主要贡献包括如下四个方面。归纳总结了固态盘内部的四层并行,即通道间并行、芯片间并行、晶圆间并行、分组间并行。引入资源利用率的概念,分析研究了固态盘中多层次并行性的特点,研究了多层次并行与闪存的高级命令、固态盘的分配方式的关系,得到了一系列高级命令、分配方式的使用方法,并且寻找了使用多层次并行性的优先级,得到最优的并行性优先级是:优先使用通道间并研究了这些问题之后,根据研究结果,进一步研究在固态盘设计过程中的基本原则。充分利用固态盘内部结构特点,设计了三层页级映射算法,及与其相配套的垃圾回收、损耗均衡算法,该方法在提供高性能的同时,降低了映射表的大小;另外,利用非易失半导体存储芯片--相变存储器,改变现有固态盘结构,将读写映射关系的路径与读写用户数据的路径分离,从而在获得高性能的同时,降低内存容量,降低固态盘整体能耗。通过研究负载的特点,发现负载中普遍存在的请求不均匀的特点;通过研究固态盘内部资源利用率,发现处于工作状态的固态盘内部存在大量空闲资源。利用以上两个特点,设计了一种新的固态盘数据缓存管理算法,即自适应的动态缓存管理算法。这种算法利用负载的相对空闲时间,提前写回部分缓存数据,并且写回的数据量根据负载的需要进行动态调整,保证大量外部请求达到固态盘时能够直接由固态盘内部的内存服务,无需访问闪存,从而明显提高固态盘整体性能,并且在一定程度上提高了固态盘寿命。最后,本文介绍了一个自主设计实现的固态盘模拟器SSDsim,分别从SSDsim大量外部请求达到固态盘时能够直接由固态盘内部的内存服务,无需访问闪存,从而明显提高固态盘整体性能,并且在一定程度上提高了固态盘寿命。最后,本文介绍了一个自主设计实现的固态盘模拟器SSDsim,分别从SSDsim的设计思路、总体框架、操作流程、验证过程以及应用发布等各方面,全面的介绍了SSDsim。作为一款开源的、高准确性的固态盘模拟器,已经放在网络上供研究者自由下载。2固态盘中并行性的研究在计算机体系结构的研究中,并行性一直是主要的研究点。固态盘的硬件结构决定了固态盘内部具有天然的并行性,然而,之前固态盘的研究大部分集2固态盘中并行性的研究在计算机体系结构的研究中,并行性一直是主要的研究点。固态盘的硬件结构决定了固态盘内部具有天然的并行性,然而,之前固态盘的研究大部分集中在对闪存介质特点的利用方面,极少涉及到并行性的利用,即使涉及到了并行性也并未做系统全面的研究。本章主要研究固态盘内部的并行性。首先总结固态盘内部并行性的分类,采用资源利用率对利用各个层次并行性的效果进行量化;然后结合固态盘内每个层次并行性的具体使用方法,研究、探寻每个层次并行性的最佳使用方法,这些具体使用方法包括闪存的高级命令、固态盘逻辑页的分配方式;在得到各个层次并行性利用的最佳方式之后,研究每个层次之间的相互关系,即多个并行性之间的使用优先级;最后依据前面得到的结论,逐步推导出多层次并行性利用的设计原则。 固态盘中资源利用率及并行性的分类如第一章讨论的,固态盘由多个独立通道组成,每个独立通道拥有多个独追求最高的固态盘读写性能,就需要使固态盘内部的所有通道和芯片尽可能地长期处于工作状态。要达到这个目标,只能利用固态盘内部的并行性。这些独立通道和芯片被认为是固态盘内部的读写资源,只有当固态盘内部的资源利用率达到最高,固态盘的性能才能达到最优。为了衡量并行性提高性能的效果,在本章中使用资源利用率对并行性进行量化。在任何时刻,当通道或者芯片处于工作状态(busy),则该资源已经被占用,一段时间内,资源被占用的时间越多,说明这个资源的利用率越高。通道和芯片属于不同的资源类型,在考虑资源利用率时需要分开考虑。在本文中使用U表示在确定时间T内的资源利用率。通道、闪存芯片、固态盘的资源利用率可以使用公式2.1~2.6得到。表2.1列出公式中用到的变量。公式2.1用来计算单个通道的资源利用率,为获得某个通道在一段时间内的利用率Uchannel_x,需要统计这个通道处于有效工作状态的时间Tv_channel,将个时间除以总时间T,即得到这个通道的资源利用率。公式2.2用来计算所有通道的平均资源利用Uchannel。公式2.3为公2.4计算权值,在闪存芯片中,执行读写操作,有基本读写命令和高级读写命令的区别,基本读写道的平均资源利用Uchannel。公式2.3为公2.4计算权值,在闪存芯片中,执行读写操作,有基本读写命令和高级读写命令的区别,基本读写命令单位时间只完成一个物理页的读写,而高级命令可以同时完成多个物理页的读写(高级命令将在2.3节详细讨论,可以看到,高级命令的读写效率明显优于基本读写命令。因此权值δ用来区分读写闪存芯片的效率,其取值范围为(0,1]。公2.4用来计算一个芯片的资源利用率Uchip_j_channel_i。公式2.5根据公式2.4到的每个芯片的资源利用率得到平均的芯片资源利用率Uchip。在公2.6中,通道的资源利用率和芯片的资源利用率乘以各自的权重值,得到固态盘整体的资源利用率USSD,当将通道和芯片被视作重要程度相同的资源时,αβ将分别赋值为0.5。公2.1~2.6中用到的变量变量含义变量含义U资源利用率T计算资源利用率的总时通道x的资源利用ij的资源利用率所有通道的平均资源利用率所有芯片的平均资源利用率通道的有效工作时间芯片的有效工作时间总时间内普通读写命令可访问的物理页数量总时间内实际访问的物理页数n固态盘上通道数量m通道上芯片数量a芯片中晶圆数量b晶圆中分组数量α通道利用率权值β芯片利用率权值δ访问芯片权值固态盘的利用率图2.1是固态盘中多通道示意图,从图中可以看到每个通道拥有独立的通道控制器,当两个逻辑页(a,b)需要写到固态盘时,利用多通道的结构,将逻辑页a发送到通道0,将逻图2.1是固态盘中多通道示意图,从图中可以看到每个通道拥有独立的通道控制器,当两个逻辑页(a,b)需要写到固态盘时,利用多通道的结构,将逻辑页a发送到通道0,将逻辑页b发送到通道1,这样通道0和通道1同时服务两个逻辑页,这就是通道之间的并行。一个通道上存在多个芯片,每个芯片存在独立的片选信号,芯片之间读写介质的过程也是可以相互独立的,但是这些芯片属于同一个通道,共用同一个数据通道。例如,将逻辑页a发送到芯片0上之后,再将逻辑页b发送到芯片1上,当两个逻辑页的数据依次传输到两个芯片后,两个逻辑页的数据写到各自闪存介质的过程是相互独立的,这就是芯片之间的并行。根据闪存芯片的结构以及所提供的高级命令:多分组操作和交错操作,提供了另外两个层次的并行性。交错操作命令(interleave)可以将逻辑页a的数据写到晶圆0,逻辑页b的数据写到同一个芯片的晶圆1,两个写入介质的过程交错进行,这是晶圆之间的并行;多分组操作命令(multi-plane)将逻辑页a的数据写到分组0,逻辑页b的数据写到同一个晶圆的分组1,写入介质的过程同时进行,这就是分组之间的并行。图固态盘并行性示意图所以,综合来说,固态盘本身拥有四个层次的并行性,他们分别是:通道之间的并行芯片之间的并行晶圆之间的并行分组之间的并行下面分别讨论这四层并行的资源利用率。 通道之间的并行芯片之间的并行晶圆之间的并行分组之间的并行下面分别讨论这四层并行的资源利用率。 各级并行性的分析在闪存中,读写操作均分成三个阶段,即命令地址传输阶段、数据传输阶段、访问介质阶段。这三个阶段的时间长短不一,通常命令地址传输阶段时间1.2.1中讨论的,存在两种接口类型的闪存芯片,即异步总线接口类型和同步总线接口类型,为方便问题的描述,如没有特殊提示,在本章中采用异步总线接口的闪存芯片113334为例,并将读写操作的各个阶段的时间分别设置为传输数据阶段为5个单位时间,读介质时间为2个单位时间,写介质时间为20个单位时间,相对其他阶段,命令地址传输阶段时间很短,在这里忽略不计,但该阶段是读写操作中所必须经过的阶段,因此在本章的所有示意图中将该阶段画出,但是不计入到时间开销中。本章的所有示例中,如无特殊说明,均假设芯片中有2个晶圆,每个晶圆中有2个分组。2.2.1串行处理从图2.2中,可以看到,在写操作时,首先在命令地址传输阶段,通过数据总线发送命令和地址到闪存,然后在数据传输阶段将数据通过总线将数据传输到闪存,最后在访问介质阶段将数据写到闪存的目标地址;读操作的过程略微有差异,首先在命令地址传输阶段,通过数据总线发送命令和地址到闪存,然后在访问介质阶段将数据从闪存的目标地址读出,最后在数据传输阶段将数据传输出去。从图中可以看到,串行处理将这些阶段依次执行。在处理写操作时,串行处理对通道的资源利用率只有10%,这是因为写操作的访问介质时间较长,串行处理导致通道需要等待数据写到介质之后才能服务下一个操作;在处理读操作时,串行处理对通道的资源利用率为35.7%是因为读操作访问介质的时间较短,通道等待的时间较短。在计算写操作的芯片利用率时,利用公式2.3可以得到δ0.125(a,b,npt均为2,np1),并且在图2.2(a)中可以看到总时间T为50个单位时间,而芯片x,y的有效片利用率时,利用公式2.3可以得到δ0.125(a,b,npt均为2,np1),并且在图2.2(a)中可以看到总时间T为50个单位时间,而芯片x,y的有效读操作时的芯片利用率相类似。总的来说,串行处理使得资源的利用率普遍较低。为了提高每个资源的利用率,需要对这三个阶段进行并发、流水操作。如前面提到的,命令地址传输阶段因为时间较短,所以在固态盘中,只要使数据传输阶段和访问介质阶段并行地或者流水地操作,固态盘的读写性能就会达到最优状态。串行处理示意图2.2.2通道之间的并行性通道之间的并行利用的是固态盘提供的多个独立通道,如图2.1所示。每个通道拥有独立的通道控制器,所以通道之间的读写操作不会相互影响,因此通道之间可以并发操作。图2.3是通道之间并行操作的示意图。从图2.3(a)中可以看到,当两个写请求同时到达时,通过通道1和通道分别独立地执行写操作,写操作的三个阶段在通道1和通道2上被互不干扰地独立执行。可以看到,写操作的三个阶段被完全并发地执行了。同样的情况在读请求时出现。在这种情况的写操作下,通道的资源利用率为20.0%,芯片的资源利用率为25%(利用公式2.3和公式2.4,其中a,b,np,npt均为50个单位时间在这种情况的读操作下,通道的资源利用率为芯片的资源利用率为25%(利用公式2.3和公式2.4,其中a,b均为均chip均42个单位时间。相比串行操作,利用通道之间的并行性可以使得通道和芯片的资源利用率提高一倍以上。2.3通道之间的并行示意图2.2.3芯片之间的并行性在同一个通道上,具有多个芯片,这些芯片拥有独立的片选信号,当一个芯片开始处于工作状态时,不用等待其工作完毕,通道控制器可以使另外一个芯片的片选信号有效,控制这个芯片进入工作状态。但是同一个通道上的芯片共用同一组数据总线,因此在某个时刻该数据总线只能为一个芯片提供数据传输服务,所以同一个通道之上的不同芯片之间可以通过性可以使得通道和芯片的资源利用率提高一倍以上。2.3通道之间的并行示意图2.2.3芯片之间的并行性在同一个通道上,具有多个芯片,这些芯片拥有独立的片选信号,当一个芯片开始处于

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论