固态硬盘访问方法以及使用该方法的装置与流程

文档序号:16146510发布日期:2018-12-05 16:29阅读:201来源:国知局
本发明关连于一种储存装置,特别是一种固态硬盘访问方法以及使用该方法的装置。
背景技术
:固态硬盘中通常设置nand快闪装置。nand快闪装置并非随机存取,而是序列存取。nand快闪装置无法像nor快闪装置一样,可以存取任何随机地址,主装置反而需要写入序列字节(bytes)的值到nand快闪装置中,并定义请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(在闪存中的一个写入作业的最小数据块)或一个区块(在闪存中的一个抹除作业的最小数据块)。通常,固态硬盘中的处理单元为了有效利用固态硬盘中的储存空间,需要执行一些储存优化程序,例如,垃圾回收、错误回复等。但因为无法预测主装置要求存取数据的时间点,储存优化程序可能被打断而无法达成预期效果。因此,本发明提出一种固态硬盘访问方法以及使用该方法的装置,用以解决上述的问题。技术实现要素:本发明的实施例提出一种固态硬盘访问方法,由处理单元于加载并执行驱动程序时实施,包含以下步骤:从第一及第二输出入队列中决定一者;从决定的输出入队列移出最早进入的存取命令;以及依据移出的存取命令产生并发送包含实体位置的数据存取请求给固态硬盘。第一输出入队列储存应用程序发出的多个一般存取命令,以及第二输出入队列储存多个存取优化命令。本发明的实施例提出一种固态硬盘存取装置,包含:存储器及处理单元。存储器包含第一输出入队列及第二输出入队列,其中,第一输出入队列储存应用程序发出的多个一般存取命令,以及第二输出入队列储存多个存取优化命令。处理单元耦接于存储器,用以于加载并执行驱动程序时从第一输出入队列及第二输出入队列中决定一者;从决定的输出入队列移出最早进入的存取命令;以及依据移出的存取命令产生并发送包含实体位置的数据存取请求给固态硬盘。附图说明图1系依据本发明实施例的计算机装置的系统架构图。图2系依据本发明实施例的固态硬盘的系统架构示意图。图3系依据本发明实施例的存取接口与储存单元的方块图。图4系依据本发明实施例的一个存取子接口与多个储存子单元的连接示意图。图5系依据本发明实施例的快速周边组件互联的阶层示意图。图6系依据本发明实施例的固态硬盘存取装置的方块图。图7系依据本发明实施例的固态硬盘访问方法的流程图。符号说明110处理单元(主装置);120显示单元;130输入设备;140固态硬盘;150存储器;160通讯接口;210处理单元;220动态随机存取存储器;250存取接口;270存取接口;280储存单元;270_0、…、270_j存取子接口;280_0_0、…、280_j_i储存子单元;410_0数据线;420_0_1、…、420_0_i芯片致能控制信号;510应用程序;520操作系统;530驱动程序;540传输层;550数据链结层;560物理层;651应用程序输出入队列;653垃圾收集输出入队列;655错误回复输出入队列;s710~s770方法步骤。具体实施方式以下说明系为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的
发明内容必须参考之后的权利要求范围。必须了解的是,使用于本说明书中的”包含”、”包括”等词,系用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。于权利要求中使用如“第一”、“第二”、“第三”等词系用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。图1系依据本发明实施例的计算机装置的系统架构图。此系统架构可实施于桌面计算机、笔记本电脑、平板计算机、手机计算机或其他具备运算能力的电子装置。处理单元110可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单处理器、具平行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行程序代码或软件时,提供之后所描述的功能。处理单元110可包含运算逻辑单元(alu,arithmeticandlogicunit)以及位移器(bitshifter)。运算逻辑单元负责执行布尔运算(如and、or、not、nand、nor、xor、xnor等),而位移器负责位移运算及位旋转。系统架构另包含存储器150用以储存执行过程中需要的数据,例如,变量、数据表等,以及固态硬盘(ssd,solidstatedisk)140,用以储存各式各样的电子档案,例如,网页、文件、音频文件、视讯文件等。系统架构另包含通讯接口160,让处理单元110可藉以跟其他电子装置进行沟通。通讯接口160可以是局域网络通讯模块、无线局域网络通讯模块、蓝牙通讯模块或无线电信通讯模块。输入设备130可包含键盘、鼠标、触控面板等。用户可按压键盘上的硬键来输入字符,藉由操作鼠标来控制鼠标,或者是在触控面板制造手势来控制执行中的应用程序。手势可包含单击、双击、单指拖曳、多指拖曳等,但不限定于此。显示单元320可包含显示面板(例如,薄膜液晶显示面板、有机发光二极管面板或其他具显示能力的面板),用以显示输入的字符、数字、符号、拖曳鼠标的移动轨迹、绘制的图案或应用程序所提供的画面,提供给用户观看。图2系依据本发明实施例的固态硬盘的系统架构示意图。固态硬盘140的系统架构中包含处理单元210,用以写入数据到储存单元280中的指定地址,以及从储存单元280中的指定地址读取数据。详细来说,处理单元210透过存取接口270写入数据到储存单元280中的指定地址,以及从储存单元280中的指定地址读取数据。系统架构使用数个电子信号来协调处理单元210与储存单元280间的数据与命令传递,包含数据线(dataline)、频率信号(clocksignal)与控制信号(controlsignal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片致能(chipenable,ce)、地址提取致能(addresslatchenable,ale)、命令提取致能(commandlatchenable,cle)、写入致能(writeenable,we)等控制信号。存取接口270可采用双倍数据率(doubledatarate,ddr)通讯协议与储存单元280沟通,例如,开放nand快闪(opennandflashinterface,onfi)、双倍数据率开关(ddrtoggle)或其他接口。处理单元210另可使用存取接口250透过指定通讯协议与处理单元110(又可称为主装置host)进行沟通,例如,通用串行总线(universalserialbus,usb)、先进技术附着(advancedtechnologyattachment,ata)、序列先进技术附着(serialadvancedtechnologyattachment,sata)、快速周边组件互联(peripheralcomponentinterconnectexpress,pci-e)或其他接口。储存单元280可包含多个储存子单元,每一个储存子单元实施于一个晶粒(die)上,各自使用关联的存取子接口与处理单元210进行沟通。图3系依据本发明实施例的存取接口与储存单元的方块图。固态硬盘140可包含j+1个存取子接口270_0至270_j,存取子接口又可称为通道(channel),每一个存取子接口连接i+1个储存子单元。换句话说,i+1个储存子单元共享一个存取子接口。例如,当固态硬盘140包含4个通道(j=3)且每一个通道连接4个储存子单元(i=3)时,固态硬盘140一共拥有16个储存子单元280_0_0至280_j_i。处理单元110可驱动存取子接口270_0至270_j中的一者,从指定的储存子单元读取数据。每个储存子单元拥有独立的芯片致能(ce)控制信号。换句话说,当欲对指定的储存子单元进行数据读取时,需要驱动关联的存取子接口致能此储存子单元的芯片致能控制信号。图4系依据本发明实施例的一个存取子接口与多个储存子单元的连接示意图。处理单元210可透过存取子接口270_0使用独立的芯片致能控制信号420_0_0至420_0_i来从连接的储存子单元280_0_0至280_0_i中选择出其中一者,接着,透过共享的数据线410_0从选择出的储存子单元的指定位置读取数据。于一些实施方式中,处理单元210为了有效利用储存单元280中的储存空间,需要执行一些优化程序,例如,垃圾收集、错误回复等。但是,当执行优化程序中收到主装置110数据存取请求时,优化程序可能需要中断。为了解决如上所述的问题,本发明实施例提出一种固态硬盘访问方法以及使用该方法的装置,用以由主装置110的处理单元110统整数据存取任务的排程。图5系依据本发明实施例的快速周边组件互联的阶层示意图。应用程序(application)510可透过操作系统(os,operatingsystem)520读取固态硬盘140中特定地址的数据,或写入数据到固态硬盘140的特定地址。操作系统520发出命令给驱动程序530,使得驱动程序530可产生并传送相应的读取与写入请求给传输层(transactionlayer)540。传输层(transactionlayer)540使用封包架构的分割交易(split-transaction)协议,将读取与写入请求经由数据链结层(datalinklayer)550及物理层(physicallayer)560传送至固态硬盘140。图6系依据本发明实施例的固态硬盘存取装置的方块图。存储器150可配置空间给输出入队列651至655,输出入队列651至655为先进先出的队列,用以将最新加入的数据存取命令推入队列的底端(或称为入列enqueue),以及将最早进入的数据存取命令从队列的顶端移出并处理(或称为出列dequeue)。处理单元110执行的操作系统520以及/或驱动程序530可依据数据存取命令的类型将数据存取命令推入输出入队列651至655中的适当一者。应用程序510发出的数据存取命令可依据时间顺序推入应用程序输出入队列(applicationioqueue)651。应用程序输出入队列651储存的数据存取命令可称为一般存取命令(regularaccesscommands)。于一些实施例中,一般存取命令可包含由应用程序提供的原始逻辑位置。于一些实施例中,操作系统520或驱动程序530可将应用程序提供的原始逻辑位置转换成储存单元280可辨认的实体位置。如果储存单元280中的区块的部分页面的数据已经无效(又称为过期页面),操作系统520或驱动程序530可从储存单元280读取并收集多个区块中有效数据的页面,并且重新写入空区块。接着,这些被释放的页面加上原先储存过期数据的页面,可以被收集起来形成一个空区块,供将来写入其他数据使用。以上所述的程序称为垃圾收集(gc,garbagecollection)。垃圾收集程序牵涉到从储存单元280读取数据以及重新写入数据至储存单元280。操作系统520将垃圾收集程序的数据存取命令推入垃圾收集输出入队列(gcioqueue)653。垃圾收集输出入队列653储存的数据存取命令可称为垃圾收集存取命令(gcaccesscommands),包含逻辑位置及实体位置的信息。为了确保储存消息(message)的正确性,操作系统520或驱动程序530可将应用程序510传送的原始数据加上一维或二维的错误修正码(one-dimensionalortwo-dimensionalerrorcorrectioncode,ecc)来保护。错误修正码可为单同位修正码(singleparitycorrection,spc)、rs码(reed-solomoncode)等。经过一段时间的读写,储存单元280中的数据可能发生错误。针对错误率超过阀值的数据,操作系统520或驱动程序530需要安排时间从储存单元280读取原始数据及错误修正码并进行修正,并且重新写入修正后的原始数据及错误修正码至原区块或其他空区块。以上所述的程序称为错误回复(errorrecovery)。错误回复程序也牵涉到从固态硬盘140读取数据以及重新写入数据至固态硬盘140。操作系统520或驱动程序530可将错误回复程序的数据存取命令推入错误回复输出入队列(errorrecoveryioqueue)655。错误回复输出入队列655储存的数据存取命令可称为错误回复存取命令(errorrecoveryaccesscommands),包含逻辑位置及实体位置的信息。垃圾收集存取命令及错误回复存取命令又可统称为存取优化命令(accessoptimizationcommands),且垃圾收集输出入队列653及错误回复输出入队列655可整合为一个存取优化队列(accessoptimizationqueue)。操作系统520或驱动程序530可为不同类型的存取命令制定不同的服务质量(qos,qualityofservice),使得运作时可依据服务质量及执行历史排程不同类型的数据存取命令,例如,一般存取命令、垃圾收集存取命令、错误回复存取命令等。驱动程序530另可记录不同类型的数据存取命令的执行历史。执行历史储存多笔纪录,用以包含存取类型、请求型态、运行时间及逻辑位置等信息。例如,一笔纪录储存于第一时间点为垃圾搜集程序读取特定实体位置的数据,此实体位置相应于特定逻辑位置。另一笔纪录储存于第二时间点为垃圾搜集程序写入此逻辑位置的数据至新实体位置。不同类型的服务质量及执行历史可使用特定数据结构实施,例如数据阵列、数据库数据表、档案纪录等,并储存于存储器150。为优化数据写入及读取的效率,驱动程序530可将一段具有连续逻辑区块地址的数据分散地摆放在储存单元280中的不同实体区域。动态随机存取存储器220可储存一个实体储存对照表(storagemappingtable,又称为h2fhost-to-flash表),用以指出每个逻辑区块地址的数据实际储存于储存单元280中的哪个位置。逻辑位置可以逻辑区块地址(lba,logicalblockaddress)表示,每一个逻辑区块地址对应到储存单元280中一个固定大小的实体储存空间,例如256k、512k或1024k字节(bytes)。例如,h2f表依序储存由lba0至lba65535的实体位置信息。每个逻辑区块的实体位置信息可以4个字节表示,使用2个字节511a纪录区块编号(blocknumber)及2个字节纪录单元编号(unitnumber)。于一般读取命令、垃圾收集存取命令及错误回复存取命令执行后,必要时,更新h2f表。须注意的是,因为传统主装置没有储存单元280中实际摆放数据的知识,无法由主装置执行优化程序。相较于以上所述的实施方式,透过本发明实施例的固态硬盘访问方法,可避免优化程序干扰一般存取命令的执行。图7系依据本发明实施例的固态硬盘访问方法的流程图。此方法于处理单元110加载并执行驱动程序530时实施。此方法反复执行一个循环(步骤s710至s750),用以处理应用程序610发出的数据存取命令。于每一回合中,依据服务质量及执行历史从输出入队列651至653中选择出一者(步骤s710),从选择的输出入队列中移出最早进入的数据存取命令,至少包含命令类型及逻辑位置以及/或实体位置的信息(步骤s730),以及依据移出的数据存取命令产生并发送数据存取请求给固态硬盘140,其中至少包含请求类型及实体位置的信息(步骤s750)。数据存取命令的命令类型可为数据读取、数据写入等。于步骤s710,举例来说,驱动程序530可以循环(roundrobin)的方式选择不同类型的数据存取命令,使得不同类型的数据存取命令的执行趋近于预设的比例,例如,70%的一般存取命令、20%的垃圾收集存取命令及10%的错误回复存取命令。或者,可将一般存取命令的优先级设定为最高,并保证垃圾收集存取命令及错误回复存取命令的等待时间不超过阀值,使得驱动程序530优先执行一般存取命令,但是当垃圾收集存取命令或错误回复存取命令的等待时间即将超过阀值时,优先处理即将逾时的垃圾收集存取命令或错误回复存取命令。于步骤s750,当移出的数据存取命令包含逻辑位置而没有实体位置的信息时,驱动程序530更从h2f表读取相应于逻辑位置的实体位置。固态硬盘140中的处理单元210收到数据存取请求时,不需要做逻辑及实体位置转换,可直接驱动存取接口270从实体位置读取数据,或者是写入数据到实体位置。虽然5图1~4及图6中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图7的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,本领域技术人员亦可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或平行地执行更多步骤,本发明亦不因此而局限。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了本领域技术人员显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1