写入闪存管理表的计算机可读取存储介质、方法及装置与流程

文档序号:26786830发布日期:2021-09-28 21:06阅读:116来源:国知局
1.本发明涉及存储装置,尤指一种写入闪存管理表的计算机可读取存储介质、方法及装置。
背景技术
::2.闪存通常分为nor闪存与nand闪存。nor闪存为随机存取装置,中央处理器(host)可于地址引脚上提供任何存取nor闪存的地址,并及时地从nor闪存的数据引脚上获得存储于该地址上的数据。相反地,nand闪存并非随机存取,而是串行存取。nand闪存无法像nor闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(bytes)的值到nand闪存中,用于定义请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。3.为了提升闪存模块的数据写入及读取效能,闪存控制器会以多个信道并行地执行数据写入及读取。为了达成并行处理的目的,一段连续性的数据会分散地存储到多个通道所连接的闪存单元,并使用闪存管理表(flashmanagementtables)记录用户数据的逻辑地址(由主机端管理)与物理地址(由闪存控制器管理)间的对应关系。然而,闪存管理表的写入也影响到整体系统的效能。因此,本发明提出一种写入闪存管理表的计算机可读取存储介质、方法及装置,用于提升系统整体效能。技术实现要素:4.有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。5.本发明涉及一种写入闪存管理表的计算机可读取存储介质,用于存储能够被闪存控制器的处理单元执行的程序代码,并且所述程序代码被所述处理单元执行时实现以下步骤:周期性检查已经写入闪存模块的当前块的用户数据是否满足随机写入条件;以及,如果是,则依据当前块的闪存-主机对照表的内容更新主机-闪存对照子表的记录。6.本发明还涉及一种写入闪存管理表的方法,由闪存控制器执行,包含:周期性检查已经写入闪存模块的当前块的用户数据是否满足随机写入条件;以及,如果是,则依据当前块的闪存-主机对照表的内容更新主机-闪存对照子表的记录。7.本发明还涉及一种写入闪存管理表的装置,包含:闪存接口和处理单元。闪存接口耦接闪存模块,并且处理单元耦接闪存接口。处理单元周期性检查已经写入闪存模块的当前块的用户数据是否满足随机写入条件;以及,如果是,则依据当前块的闪存-主机对照表的内容驱动闪存接口更新闪存模块中的主机-闪存对照子表的记录。8.上述实施例的优点之一,通过随机写入条件的检查,可避免因为大量的主机-闪存对照子表更新而延迟后续主机读命令和/或主机写命令的执行。9.本发明的其他优点将配合以下的说明和附图进行更详细的解说。附图说明10.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。11.图1为依据本发明实施例的电子装置的系统架构图。12.图2为依据本发明实施例的闪存模块的示意图。13.图3为依据本发明实施例的nand闪存单元的示意图。14.图4为依据本发明实施例的高阶对照表和主机-闪存对照子表之间的关联示意图。15.图5为依据本发明实施例的主机-闪存对照子表和物理页面之间的关联示意图。16.图6为依据本发明实施例的闪存管理表的写入方法的流程图。17.其中,附图中符号的简单说明如下:18.10:电子装置;110:主机端;130:闪存控制器;131:主机接口;132:总线;134:处理单元;136:随机存取存储器;138:直接存储存取控制器;139:闪存接口;150:闪存模块;151:接口;153#0~153#15:nand闪存单元;ch#0~ch#3:通道;ce#0~ce#3:启动信号;310、330:数据平面;310#0~310#m、330#0~330#m:物理块;p#0~p#n:物理页面;410:高阶对照表;430#0~430#15:h2f子表;510:物理页面;530:物理地址信息;530-0:物理块编号;530-1:物理页面编号;s610~s675:方法步骤。具体实施方式19.以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。20.必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。21.本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。22.必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。23.参考图1。电子装置10包含主机端(hostside)110、闪存控制器130及闪存模块150,并且闪存控制器130及闪存模块150可合称为装置端(deviceside)。电子装置10可实施于个人计算机、笔记本计算机(laptoppc)、平板计算机、移动电话、数字相机、数字摄影机等电子产品之中。主机端110与闪存控制器130的主机接口(hostinterface)131可以通用串行总线(universalserialbus,usb)、先进技术附件(advancedtechnologyattachment,ata)、串行先进技术附件(serialadvancedtechnologyattachment,sata)、快速外设组件互联(peripheralcomponentinterconnectexpress,pci-e)、通用闪存存储(universalflashstorage,ufs)、快速非易失存储器(non-volatilememoryexpress,nvme)、嵌入式多媒体卡(embeddedmulti-mediacard,emmc)等通信协议彼此通信。闪存控制器130的闪存接口(flashinterface)139与闪存模块150可以双倍数据率(doubledatarate,ddr)通信协议彼此通信,例如,开放nand闪存(opennandflashinterface,onfi)、双倍数据率开关(ddrtoggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,单处理器、具有并行处理能力的多处理器、图形处理器或其他具有运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。处理单元134通过主机接口131接收主机命令,例如读取命令(readcommand)、写入命令(writecommand)、抹除命令(erasecommand)等,调度并执行这些命令。闪存控制器130另包含随机存取存储器(randomaccessmemory,ram)136,可实施为动态随机存取存储器(dynamicrandomaccessmemory,dram)、静态随机存取存储器(staticrandomaccessmemory,sram)或上述两者的结合,用于配置空间作为数据缓冲区,存储从主机端110读取并即将写入闪存模块150的用户数据(也可称为主机数据),以及从闪存模块150读取并即将输出给主机端110的用户数据。随机存取存储器136另可存储执行过程中需要的数据,例如,变量、数据表、主机-闪存对照表(host-to-flash,h2ftable)、闪存-主机对照表(flash-to-host,f2htable)等。闪存接口139包含nand闪存控制器(nandflashcontroller,nfc),提供存取闪存模块150时需要的功能,例如命令串行器(commandsequencer)、低密度奇偶校验(lowdensityparitycheck,ldpc)等。24.闪存控制器130中可配置总线架构(busarchitecture)132,用于让组件之间彼此耦接以传递数据、地址、控制信号等,这些组件包含主机接口131、处理单元134、ram136、直接存储存取(directmemoryaccess,dma)控制器138、闪存接口139等。于一些实施例中,主机接口131、处理单元134、ram136、dma控制器138与闪存接口139可通过单一总线彼此耦接。于另一些实施例中,闪存控制器130中可配置高速总线,用于让处理单元134、dma控制器138与ram136彼此耦接,并且配置低速总线,用于让处理单元134、dma控制器138、主机接口131与闪存接口139彼此耦接。dma控制器138可依据处理单元134的指令,通过总线架构132在组件间迁移数据,例如,将主机接口131或闪存接口139中特定数据缓存器(databuffer)的数据搬到ram136中的特定地址,将ram136中特定地址的数据搬到主机接口131或闪存接口139中的特定数据缓存器等。25.总线包含并行的物理线,连接闪存控制器130中两个以上的组件。总线是一种共享的传输介质,在任意的时间上,只能有两个装置可以使用这些线来彼此通信,用于传递数据。数据及控制信号能够在组件间分别沿数据和控制线进行双向传播,但另一方面,地址信号只能沿地址线进行单向传播。例如,当处理单元134想要读取ram136的特定地址上的数据时,处理单元134在地址线传送此地址给ram136。接着,此地址的数据会在数据线上回复给处理单元134。为了完成数据读取操作,控制信号会使用控制线进行传递。26.闪存模块150提供大量的存储空间,通常是数百个千兆字节(gigabytes,gb),甚至是多个兆兆字节(terabytes,tb),用于存储大量的用户数据,例如高分辨率图片、影片等。闪存模块150中包含控制电路以及存储器数组,存储器数组中的存储单元可包含单层式单元(singlelevelcells,slcs)、多层式单元(multiplelevelcells,mlcs)、三层式单元(triplelevelcells,tlcs)、四层式单元(quad-levelcells,qlcs)或上述的任意组合。处理单元134通过闪存接口139写入用户数据到闪存模块150中的指定地址(目的地址),以及从闪存模块150中的指定地址(来源地址)读取用户数据。闪存接口139使用多个电子信号136无法提供足够空间存储整个h2f表以供处理单元134将来于数据读取操作时快速查找,h2f表可切成多个h2f子表,并存储于闪存模块150,使得将来于数据读取操作时只要从闪存模块150读取相应的h2f子表至ram136。参考图4,整个h2f表可切成h2f子表430#0~430#15。处理单元134还维护高阶对照表410,包含多个记录,依逻辑地址的顺序存储每段逻辑地址区段关联的h2f子表的物理地址信息。例如,第0个至第4095个主页面的关联h2f子表430#0存储于特定lun的特定物理块中(字母“z”可代表lun和物理块的编号)的第0个物理页面,第4096个至第8191个主页面的关联h2f子表430#1存储于特定lun的特定物理块中的第1个物理页面,依此类推。虽然图4中只包含16个h2f子表,但是所属
技术领域
:的技术人员可根据闪存模块150的容量,设置更多的h2f子表,本发明并不因此局限。31.每个h2f子表所需的空间可以为1kb、2kb、4kb、8kb等。参考图5。举例来说,h2f子表430#0依照逻辑地址的顺序存储相应于每一逻辑位置的物理位置信息。逻辑位置可以主页面编号表示,每一个主页面编号对应到一个固定大小的物理存储空间,例如4kb。所属
技术领域
:人员也使用lba来表示逻辑位置,本发明并不因此局限。举例来说,h2f子表430#0依序存储从h#0至h#4095的物理地址信息。物理地址信息530可以四个字节表示:前二个字节530-0记录物理块编号(physicalblocknumber);后二个字节530-1记录物理页面编号(physicalpagenumber)。举例来说,相应于主页面h#2的物理地址信息530可指向物理块310#1中的物理页面510。字节530-0记录物理块310#1的编号,字节530-1记录物理页面510的编号。闪存管理表可包含如上所述的f2h表、高阶对照表、h2f表、h2f子表等。32.在一些实施方式中,每当一个当前块中的所有页面都存储满用户数据之后,或者一个当前块中的剩余页面都填入虚假值之后,处理单元134才依据当前块的f2h表的内容更新h2f表。由于当前块中存储的用户数据可能牵涉到多个h2f子表,详细来说,处理单元134先搜寻高阶对照表410的内容来找出关联h2f子表的物理地址,并驱动闪存接口139从闪存模块150的这些物理地址读取关联h2f子表并存储于ram136。接着,处理单元134依据当前块的f2h表的内容更新ram136中h2f子表的关联记录的物理地址信息,并驱动闪存接口139写入更新后的h2f子表到闪存模块150的指定系统块。然而,上述实施方式在主机端110进行随机写入(randomwrite)时,由于需要更新的h2f子表太多而延迟了后续主机读命令和/或主机写命令的执行。更糟的是,后续主机写命令还可能因为等待h2f子表更新的时间过长而逾时,造成主机端110还需要花费时间和运算资源重新产生并传送主机写命令给闪存控制器130。33.为了解决如上所述实施方式的问题,本发明实施例提出一种闪存管理表的写入方法,由处理单元134加载和执行相关固件或软件指令时实施。针对闪存模块150中的每个当前块,周期性(详细来说,每当写入默认数目的主页面的用户数据到此当前块后)检查已经写入此当前块的用户数据是否满足随机写入条件。当已经写入的用户数据满足随机写入条件时,依据此当前块的f2h表的内容更新闪存模块150中存储的h2f子表及高阶对照表中的有关记录。参考图6,详细步骤说明如下:34.步骤s610:将变量c1和c2初始为0。处理单元134使用变量c1来记录从上一次检查以来已经写入的主页面数目,用于决定检查的时间点。处理单元134还使用变量c2来记录待更新的h2f子表的数目,用于判断是否满足随机写入的条件。35.步骤s620:驱动闪存接口139写入一个主页面的用户数据并更新ram136中f2h表的相关记录。例如,处理单元134驱动闪存接口139写入主页面h#10000的用户数据到当前块的第100个页面后,更新ram136中f2h表的第100个记录,用于存储主页面h#10000(也就是逻辑地址)的信息。36.步骤s630:改变变量c1=c1+1。37.步骤s640:判断新写入的用户数据所关联的h2f子表是否不属于待更新的h2f子表。如果是,流程进行步骤s645的处理;否则,流程进行步骤s650的处理。处理单元134可在ram136中维护更新比特图(updatebitmap),包含多个比特,每个比特记录闪存模块150中相应h2f子表是否需要更新的信息,“1”代表相应h2f子表需要更新,“0”代表相应h2f子表不需要更新。举例来说,为记录如图4所示的h2f子表430#0至430#15的待更新状态,更新比特图包含16个比特,初始为“0b0000000000000000”。处理单元134可依据写入的主页面编号和更新比特图的内容来判断新写入的用户数据所关联的h2f子表是否不属于待更新的h2f子表。38.步骤s645:修改待更新的h2f子表的信息,并且改变c2=c2+1。处理单元134可修改更新比特图的内容来响应新写入的用户数据。举个使用案例来说,假设更新比特图处于初始状态,而已经写入的用户数据的主页面编号为h#10000,则处理单元134可将ram136中的比特图改为“0b0001000000000000”并且改变c2为1。39.步骤s650:判断变量c1是否超过阈值th1。如果是,流程进行步骤s655的处理;否则,流程进行步骤s620的处理。处理单元134可通过这个判断决定检查时间点。例如,假设一个当前块能够存储4096个主页面的用户数据,则处理单元134可在每写入当前块的1/4空间的用户数据后就做一次判断,因此,阈值th1可设为4096/4=1024,使得处理单元134在写入1024、2048、3172和4096个主页面的用户数据后就进行一次是否满足随机写入的判断。所属
技术领域
:人员可通过改变阈值th1来改变进行上述判断的频次,当阈值th1设得较低时,就会执行更多是否满足随机写入的判断。40.步骤s655:改变变量c1=0。41.在另一些实施例中,流程可省略步骤s650和步骤s655,让处理单元134在每次写入一个主页面的用户数据后就进行是否满足随机写入的判断。42.步骤s660:判断变量c2是否超过阈值th2。如果是,流程进行步骤s665的处理;否则,流程进行步骤s670的处理。处理单元134可通过这个判断决定已经写入的用户数据是否满足随机写入条件。在一些实施例中,阈值th2设定为低于阈值th1的一个固定值,例如50、100、500、1000、1024、2048或其他的正整数。在另一些实施例中,阈值th2设定为随另一个阈值th1改变的值,公式如下:43.th2=th1/n44.其中,n可为小于th1的任意正整数,例如从2到5的任意正整数。例如,假设阈值th1=1024,n=4,则处理单元134侦测到c1超过256时(也就是更新比特表中存在超过256个比特为“1”),判定已经写入的用户数据满足随机写入的条件。综上所述,随机写入条件指已经写入闪存模块150的此当前块的用户数据所关联的主机-闪存对照子表的数目高于阈值。45.步骤s665:依据f2h表中未处理的内容驱动闪存接口139更新闪存模块150中h2f子表和高阶对照表的相关记录,改变变量c2=0,以及初始化待更新的h2f子表的信息。例如,f2h表中的未处理记录为第1025至第2048笔记录,则处理单元134只需要依据f2h表中第1025至第2048笔记录的内容更新闪存模块150中关联的h2f子表和高阶对照表的相关记录。由于闪存模块150中关联的h2f子表的内容已经更新,因此处理单元134初始化变量c2和更新比特表。46.步骤s670:判断当前块是否已经写满。如果是,流程进行步骤s675的处理;否则,流程进行步骤s620的处理。当前块可能已经写满用户数据,或者在将用户数据写入某个物理页面后将剩余的页面填入虚假值(dummyvalues)。47.步骤s675:驱动闪存接口139写入最终的f2h表至闪存模块150,并且依据f2h表中未处理的内容驱动闪存接口139更新闪存模块150中h2f子表和高阶对照表的相关记录。48.搭配图4的高阶对照表的内容,表1的一个物理块的关联示例f2h表显示已执行的主机写命令为顺序写入(也就是非随机写入):49.表150.h#100h#101h#102h#103h#104h#105h#106h#107h#108h#109h#110h#111h#112h#113h#114h#11551.虽然表2的一个物理块的关联示例f2h表显示的主页面编号并不是连续的,但是根据步骤s660的判断,已执行的主机写命令也是非随机写入:52.表253.h#100h#108h#116h#124h#132h#140h#148h#156h#164h#172h#180h#188h#196h#204h#212h#22054.搭配图4的高阶对照表的内容,由于表3的一个物理块的关联示例f2h表显示已执行的主机写命令关联到16个h2f表,因此根据步骤s660的判断,已执行的主机写命令为随机写入:55.表356.h#100h#4196h#8292h#12388h#16484h#20580h#24676h#28772h#32868h#36964h#41060h#45156h#49252h#53348h#57444h#6154057.为了让读者更容易理解,虽然图6所示的实施例以一个当前块作为例子说明写入闪存管理表的方法、计算机可读取存储介质及装置的操作细节,所属
技术领域
:人员在适当修改后可应用到能够并行写入的多个当前块的闪存管理表的写入操作,本发明并不因此受限。58.本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如存储装置中的固件转换层(firmwaretranslationlayer,ftl)、计算机中特定硬件的驱动程序等。此外,也可实现于如上所示的其他类型程序。所属
技术领域
:中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如dvd、cd-rom、u盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。59.虽然图1、图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图6的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属
技术领域
:的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属
技术领域
:的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。60.以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本技术的权利要求书所界定的范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1