CN113641597A - 管理数据存储的方法及装置以及计算机可读取存储介质 - Google Patents

管理数据存储的方法及装置以及计算机可读取存储介质 Download PDF

Info

Publication number
CN113641597A
CN113641597A CN202011051908.7A CN202011051908A CN113641597A CN 113641597 A CN113641597 A CN 113641597A CN 202011051908 A CN202011051908 A CN 202011051908A CN 113641597 A CN113641597 A CN 113641597A
Authority
CN
China
Prior art keywords
sub
flash memory
host
hpb
garbage collection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011051908.7A
Other languages
English (en)
Inventor
柯冠宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Silicon Motion Technology Corp
Original Assignee
Silicon Motion Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to US17/160,850 priority Critical patent/US11580017B2/en
Publication of CN113641597A publication Critical patent/CN113641597A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension

Abstract

本发明涉及一种管理数据存储的方法及装置以及计算机可读取存储介质,其中该管理数据存储的方法由闪存控制器执行,包含:获取即将启动的子区的信息,所述子区关联于一段逻辑区块地址区间;触发垃圾收集程序的背景操作,用于将所述子区关联的全部或一部分逻辑区块地址区间的用户数据迁移到闪存装置中的连续物理地址;以及依据迁移结果更新相应于所述子区的多个项目的内容,其中,每个项目包含逻辑区块地址的用户数据实际存储于闪存装置中的物理地址的信息。本发明通过如上所述垃圾收集程序的触发,让后续读取命令的执行可直接依据更新后项目的内容从闪存装置读取数据,而不需要多花费时间和运算资源从闪存装置中读取T1表和执行逻辑物理地址转换。

Description

管理数据存储的方法及装置以及计算机可读取存储介质
技术领域
本发明涉及存储装置,尤指一种管理数据存储的方法、装置以及计算机可读取存储介质。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。
为了提升闪存模块的数据写入及读取效能,装置端会以多个信道并行地执行数据写入及读取。为了达成并行处理的目的,一段连续性的数据会分散地存储到多个通道所连接的闪存单元,并使用逻辑物理对照表(Logical-to-physical,L2P Mapping Table)记录用户数据的逻辑地址(由主机端管理)与物理地址(由闪存控制器管理)间的对应关系。更进一步地,在新的规范中,闪存控制器能够将逻辑地址与物理地址间的对应关系整理成主机性能增强器项目(Host Performance Booster,HPB Entries)的格式并提供给主机端。之后,主机端可从HPB项目中取出需要的物理地址,并且将物理地址携带在发送给装置端的HPB读取命令中,使得闪存控制器可直接从闪存模块的物理地址读取用户数据并回复给主机端,而不需要像以前一样得花费时间和运算资源从闪存模块读取逻辑物理对照表并进行逻辑物理地址转换。
此外,在新的规范中,主机端可发送一个HPB读取命令给闪存控制器,用于读取两个或以上连续逻辑地址的用户数据,但其中只允许携带一个HPB项目,其关联起始逻辑地址。然而,当这些连续逻辑地址的用户数据实际上并不是存储在连续的物理地址时,闪存控制器依然需要从闪存装置读取L2P对照表才能知道之后逻辑地址的用户数据实际存储的物理地址,造成HPB读取命令的执行无法获得预期的效率。因此,本发明提出一种管理数据存储的方法、装置及计算机可读取存储介质,用于解决如上所述的问题。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。
本发明涉及一种管理数据存储的方法,由闪存控制器执行,包含:获取即将启动的子区的信息,所述子区关联于一段逻辑区块地址区间;触发垃圾收集程序的背景操作,用于将所述子区关联的全部或一部分逻辑区块地址区间的用户数据迁移到闪存装置中的连续物理地址;以及依据迁移结果更新相应于所述子区的多个项目的内容。
本发明还涉及一种计算机可读取存储介质,用于存储能够被闪存控制器的处理单元执行的计算机程序,并且当计算机程序被闪存控制器的处理单元执行时实现如上所述的管理数据存储的方法。
本发明还涉及一种管理数据存储的装置,包含:闪存接口和处理单元。处理单元用于获取即将启动的子区的信息,其中所述子区关联于一段逻辑区块地址区间;触发垃圾收集程序的背景操作,用于驱动所述闪存接口将所述子区关联的全部或一部分所述逻辑区块地址区间的用户数据迁移到闪存装置中的连续物理地址;以及依据迁移结果更新相应于所述子区的多个项目的内容。
每个所述项目包含逻辑区块地址的用户数据实际存储于闪存装置中的物理地址的信息。
上述实施例的优点之一,通过如上所述垃圾收集程序的触发,让后续读取命令的执行可直接依据更新后项目的内容读取数据,而不需要多花费时间和运算资源从闪存装置中读取T1表和执行逻辑物理地址转换。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的电子装置的系统架构图。
图2为依据本发明实施例的闪存装置的示意图。
图3为依据本发明实施例的T1表和T2表之间的关联示意图。
图4为依据本发明实施例的T1表和物理页面之间的关联示意图。
图5为依据本发明实施例的主机性能增强器(Host Performance Booster,HPB)缓存的建立与运用示意图。
图6为依据本发明实施例的HPB数据读取的操作顺序图。
图7为依据本发明实施例的应用在主机控制模式的操作顺序图。
图8为依据本发明实施例的产生和更新HPB项目的方法流程图。
图9为依据本发明实施例的读取用户数据的方法流程图。
图10为依据本发明实施例的应用在装置控制模式的操作顺序图。
其中,附图中符号的简单说明如下:
10:电子装置;110:主机装置;130:闪存控制器;131:主机接口;132:总线;134:处理单元;135:只读存储器;136:随机存取存储器;139:闪存接口;150:闪存装置;151:接口;153#0~153#15:NAND闪存单元;CH#0~CH#3:通道;CE#0~CE#3:启动信号;310:T2表;330#0~330#15:T1表;400#1:物理块;410:物理页面;430:物理地址信息;430-0:物理块编号;430-1:物理页面编号;500:HPB缓存;610~650、711~775、1011~1037:操作;S810~S830、S910~S970:方法步骤。
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图1。电子装置10包含主机装置(又可称主机端)110、闪存控制器130及闪存装置150,并且闪存控制器130及闪存装置150可合称为装置端(Device Side)。电子装置10可实施于个人计算机、笔记本计算机(Laptop PC)、平板计算机、移动电话、数字相机、数字摄影机等电子产品之中。主机装置110与闪存控制器130的主机接口(Host Interface)131可以通用闪存存储(Universal Flash Storage,UFS)等通信协议彼此通信。虽然以下实施例描述了UFS规范的主机性能增强器(Host Performance Booster,HPB)的功能,但所属技术领域人员可将本发明应用到其他规范的类似功能中,本发明并不因此受限。闪存控制器130的闪存接口139与闪存装置150可以双倍数据率(Double Data Rate,DDR)通信协议彼此通信,例如,开放NAND闪存接口(Open NAND Flash Interface,ONFI)、双倍数据率开关(DDRToggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,微控制单元、中央处理器、具有并行处理能力的多处理器、图形处理器或其他具有运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。处理单元134通过主机接口131接收HPB命令,例如HPB读取命令(HPB READ Command)、HPB读取缓冲器命令(HPB READ BUFFER Command)、HPB写入缓冲器命令(HPB WRITE BUFFERCommand)等,并执行这些命令。闪存控制器130包含随机存取存储器(Random AccessMemory,RAM)136,可实施为动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)或上述两者的结合,用于配置空间作为数据缓冲区。随机存取存储器136另可存储执行过程中需要的数据,例如,变量、数据表等。闪存控制器130包含只读存储器(Read Only Memory,ROM)135,用于存储开机时需要执行的程序代码。闪存接口139包含NAND闪存控制器(NAND Flash Controller,NFC),提供存取闪存装置150时需要的功能,例如命令串行器(Command Sequencer)、低密度奇偶校验(Low Density Parity Check,LDPC)等。
闪存控制器130中可配置总线架构(Bus Architecture)132,用于让组件之间彼此耦接以传递数据、地址、控制信号等,这些组件包含主机接口131、处理单元134、ROM 135、RAM 136、闪存接口139等。在一些实施例中,主机接口131、处理单元134、ROM 135、RAM 136与闪存接口139可通过单一总线彼此耦接。在另一些实施例中,闪存控制器130中可配置高速总线,用于让处理单元134、ROM 135与RAM 136彼此耦接,并且配置低速总线,用于让处理单元134、主机接口131与闪存接口139彼此耦接。总线包含并行的物理线,连接闪存控制器130中两个以上的组件。
闪存装置150提供大量的存储空间,通常是数百个千兆字节(Gigabytes,GB),甚至是数个兆兆字节(Terabytes,TB),用于存储大量的用户数据,例如高分辨率图片、影片等。闪存装置150中包含控制电路以及存储器数组,存储器数组中的存储单元可配置为单层式单元(Single Level Cells,SLCs)、多层式单元(Multiple Level Cells,MLCs)、三层式单元(Triple Level Cells,TLCs)、四层式单元(Quad-Level Cells,QLCs)或上述的任意组合。处理单元134通过闪存接口139写入用户数据到闪存装置150中的指定地址(目的地址),以及从闪存装置150中的指定地址(来源地址)读取用户数据和L2P对照表中的指定部分。闪存接口139使用多个电子信号来协调闪存控制器130与闪存装置150间的数据与命令传递,包含数据线(Data Line)、时钟信号(Clock Signal)与控制信号(Control Signal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(ChipEnable,CE)、地址提取启动(Address Latch Enable,ALE)、命令提取启动(Command LatchEnable,CLE)、写入启动(Write Enable,WE)等控制信号。
参考图2,闪存装置150中的接口151可包含四个输入输出通道(I/O channels,以下简称通道)CH#0至CH#3,每一个通道连接四个NAND闪存单元,例如,信道CH#0连接NAND闪存单元153#0、153#4、153#8及153#12。每个NAND闪存单元可封装为独立的芯片(die)。闪存接口139可通过接口151发出启动信号CE#0至CE#3中的一个来启动NAND闪存单元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接着以并行的方式从启动的NAND闪存单元读取用户数据,或者写入用户数据至启动的NAND闪存单元。
由于一段连续性的数据(也就是一段连续逻辑地址的数据)被分散地存储到多个通道所连接的闪存单元,闪存控制器130使用逻辑物理对照表(Logical-to-physical,L2PMapping Table)记录用户数据的逻辑地址(由主机装置110管理)与物理地址(由闪存控制器130管理)间的对应关系。L2P对照表也可称为主机闪存对照表(Host-to-flash,H2FMapping Table)。L2P对照表包含多笔记录,依逻辑地址的顺序存储每个逻辑地址的用户数据实际存储在哪个物理地址的信息。然而,由于RAM 136无法提供足够空间存储整个L2P对照表以供处理单元134将来于数据读取操作时快速查找,L2P对照表可切成多个第一表(Table 1,又可称为T1表),并存储在非易失性的闪存装置150,使得将来于数据读取操作时只要从闪存装置150读取相应的T1表至RAM 136。参考图3,整个L2P对照表可切成T1表330#0~330#15。处理单元134还维护第二表(Table 2,又可称为T2表)310,包含多个记录,依逻辑地址的顺序存储每段逻辑地址区段关联的T1表的物理地址信息。例如,第0个至第4095个逻辑区块地址(Logical Block Addresses,LBAs)的关联T1表330#0存储在特定逻辑单元号(Logical Unit Number,LUN)的特定物理块中(字母“Z”可代表LUN和物理块的编号)的第0个物理页面,第4096个至第8191个LBA的关联T1表330#1存储在特定LUN的特定物理块中的第1个物理页面,依此类推。虽然图3中只包含16个T1表,但是所属技术领域的技术人员可根据闪存装置150的容量,设置更多的T1表,本发明并不因此局限。
每个T1表所需的空间可以为4KB、8KB、16KB等。每个T1表依照LBA的顺序存储相应于每一个LBA的物理地址信息,而每一个LBA对应到一个固定大小的物理存储空间,例如4KB。参考图4,举例来说,T1表330#0依序存储从LBA#0至LBA#4095的物理地址信息。物理地址信息430可以四个字节表示:前两个字节430-0记录物理块编号(Physical BlockNumber);后两个字节430-1记录物理页面编号(Physical Page Number)。举例来说,相应于LBA#2的物理地址信息430可指向物理块400#1中的物理页面410。字节430-0记录物理块400#1的编号,字节430-1记录物理页面410的编号。
参考图5,在HPB规范中,主机端110在其系统存储器(System Memory)中配置空间作为HPB缓存500,用于暂存由装置端维护的H2F对照表的信息。HPB缓存500存储多个从装置端接收的HPB项目(HPB Entries),每个HPB项目记录相应于一个LBA的物理地址的信息。接着,主机端110可发出携带HPB项目的HPB读取命令给装置端,用于取得指定LBA的用户数据。装置端可直接根据HPB项目中的信息来驱动闪存接口139从闪存装置150读取指定LBA的用户数据,而不需要像以前一样得花费时间和运算资源从闪存装置150读取H2F对照表并进行逻辑物理地址转换后才能从闪存装置150读取指定LBA的用户数据。针对HPB缓存500的建立和运用,可分为三个阶段:
阶段I(HPB初始化):主机端110向装置端(详细来说是闪存控制器130)请求取得其装置能力并且配置HPB功能,包含HPB模式(Mode)等。
阶段II(L2P缓存管理):主机端110在系统存储器中配置空间作为HPB缓存500,用于存储HPB项目。主机端110可在配置好的模式下于需要的时间点发送HPB读取缓冲器命令(HPB READ BUFFER Command)给闪存控制器130,用于从装置端加载指定的HPB项目。接着,主机端110将这些HPB项目存储在HPB缓存500中的一个或多个子区(Sub-Regions)。在HPB规范中,每个逻辑单元(例如区段,Partition)的LBAs分为多个HPB局部,而每个HPB局部可进一步细分为多个子区。
阶段III(HPB读取命令):主机端110在HPB缓存500的HPB项目中搜索包含欲读取LBA的数据的物理区块地址(Physical Block Addresses,PBAs)的HPB项目。接着,主机端110发送HPB读取命令(HPB READ Command)给闪存控制器130,其中除了LBA、传输长度(TRANSFER LENGTH)等信息外还包含HPB项目,用于从装置端获取指定的用户数据。
虽然HPB读取命令中包含了HPB项目的信息,然而,当HPB读取命令的传输长度大于1时(也就是主机端110想要读取超过4KB的用户数据),HPB项目中的PBA只属于起始LBA,使得闪存控制器130还是需要读取关联的T1表来知道起始LBA之后的LBA的PBA。参考如图6所示的HPB数据读取的操作顺序图,详细说明如下:
操作610:主机端110从HPB缓存500获取相应于欲读取的起始LBA的HPB项目。
操作620:主机端110发送HPB读取命令给闪存控制器130,向闪存控制器130请求指定LBA的用户数据,其中包含LBA、传输长度和HPB项目。需要注意的是,HPB读取命令可代表命令UFS协议信息单元HPB读取(COMMAND UFS Protocol Information Unit,UPIU HPBRead)。传输长度可为1到8之间的任意整数。举例来说,当传输长度为1时,此HPB读取命令欲读取一个LBA的用户数据;当传输长度为2时,此HPB读取命令欲读取连续两个LBA的用户数据;依此类推。
操作630:闪存控制器130依据HPB项目的PBA从闪存装置150读取请求的用户数据。如果HPB读取命令中的传输长度大于1时,闪存控制器130还需要从闪存装置150读取相应的T1表,并且从T1表中获取之后LBA的PBA。接着,闪存控制器130依据HPB项目的PBA(当传输长度等于1)或者依据读取T1表中的PBA(当传输长度大于1)从闪存装置150读取请求的用户数据。
操作640:闪存控制器130传送一个或多个数据输入UPIU给主机端110,其中包含请求的用户数据。每个数据输入UPIU可传输4KB的用户数据。在所有请求的用户数据都传送给主机端110后,闪存控制器130传送回复UPIU给主机端110,指出HPB读取命令已经执行完的信息。
操作650:主机端110依据操作系统、驱动程序、应用程序等的需要处理这些用户数据。
从上述描述可知,当HPB读取命令中的传输长度大于1时,闪存控制器130无法节省从闪存装置150读取T1表及执行逻辑物理地址转换的时间,因而失去原来HPB功能的优点。
所属技术领域技术人员理解HPB规范的每个HPB项目的长度(例如8字节)可能大于T1表中记录的关联于每个LBA的物理地址信息的长度(例如4字节)。为了解决如上所述的问题,除了每个LBA的物理地址信息(也就是T1表中记录的此LBA的PBA信息)外,处理单元134可在HPB项目的剩余空间添加相应PBA的连续性信息,用于加速将来的HPB读取操作。每个HPB项目的连续性信息描述此LBA之后的特定LBA区间的用户数据存储在闪存装置150中的连续物理地址。
在阶段II的一些实施例中,处理单元134可在每个8字节的HPB项目填入4字节的相应PBA信息和4字节的连续长度(Continuous Length)。连续长度指出在此LBA之后有多少个LBA的数据是连续性地存储在闪存装置150中的物理地址。所以,一个HPB项目能够表达T1表中多个连续PBA的信息。HPB项目的示例如表1所示:
表1
LBA编号 T1表的PBA信息(4字节) 连续长度(4字节)
0 104560 3
1 104561 2
2 104562 1
3 116780 1
4 210611 1
5 501126 1
6 345673 1
7 41567 1
8 123345 1
9 726745 1
10 235678 1
11 212344 7
12 212345 6
13 212346 5
14 212347 4
15 212348 3
16 212349 2
17 212350 1
举例来说,表1中的第11个HPB项目关联于LBA#11,LBA#11的用户数据存储在PBA“212344”并且LBA#11~17(共7个LBA)的用户数据连续性地存储在闪存装置150中的物理地址。表1中的第12个HPB项目关联于LBA#12,LBA#12的用户数据存储在PBA“212345”并且LBA#12~17(共6个LBA)的用户数据连续性地存储在闪存装置150中的物理地址。处理单元134将来能够根据第11个HPB项目中携带的信息读取LBA#11~17的用户数据。也就是说,如果HPB读取命令指出欲读取的开始LBA为LBA#11并且传输长度小于或等于“7”时,处理单元134不需要再从闪存装置150中读取对应的T1表,而直接从闪存装置150的推测PBA读取用户数据并回复给主机端110。
在阶段II的另一些实施例中,处理单元134可在每个8字节的HPB项目填入4字节的相应PBA信息和4字节的连续比特表(Continuous Bit Table)。连续比特表用于表示此LBA的多个后续LBA(例如,32个后续LBA)的PBA连续性。例如,32个比特分别相应于32个后续LBA。HPB项目的示例如表2所示:
表2
LBA编号 T1表的PBA信息(4字节) 连续比特表(4字节)
0 104560 0x00000003
1 104561 0x00000001
2 104562 0x00000000
3 116780 0x00000000
4 210611 0x00000000
5 501126 0x00000000
6 345673 0x00000000
7 41567 0x00000000
8 123345 0x00000000
9 726745 0x00000000
10 235678 0x00000000
11 212344 0x0000003F
12 212345 0x0000001F
13 212346 0x0000000F
14 212347 0x00000007
15 212348 0x00000003
16 212349 0x00000001
17 212350 0x00000000
举例来说,表2中的第11个HPB项目关联于LBA#11,LBA#11的用户数据存储在PBA“212344”并且连续比特表存储“0x0000003F”(也就是“0b00000000000000000000000000111111”),指出LBA#11~17(共7个LBA)的用户数据连续性地存储在闪存装置150中的物理地址。
如果闪存装置150中存储的数据具有相当程度的不连续性(也可称为随机存储于闪存装置150),虽然事先提供了连续性信息给闪存控制器130,当HPB读取命令请求的传输长度大于HPB项目中携带的连续长度时,闪存控制器130也需要从闪存装置150读取相应的T1表并执行逻辑物理地址转换。例如,搭配表1或表2的示例,当主机端110请求读取LBA#3~10的用户数据时,闪存控制器130依然要从闪存装置150读取T1表330#0。也就是说,当数据是随机地存储在闪存装置150时,HPB读取命令的执行效能相比于先前的UFS读取命令几乎相同。
在一些实施例中,当闪存控制器130(更明确地说,闪存控制器130中的处理单元134在执行特定固件或软件指令期间)在阶段II中知道HPB缓存500的子区中存储的相应于多个连续LBA区间的HPB项目所对应的T1表时,闪存控制器130可分析对应T1表的内容来判断HPB缓存500的特定子区中的哪些LBA区间的用户数据是随机存储在闪存装置150中的物理地址。接着,闪存控制器130可在阶段II或阶段III中,执行垃圾收集程序的背景操作,用于将指定LBA区间的用户数据迁移(写入)到闪存装置150中的连续物理地址,并更新相应T1表和此子区的HPB项目。更新后的结果可先暂存于RAM 136。举例来说,表1的示例HPB项目可更新如表3所示:
表3
LBA编号 T1表的PBA信息(4字节) 连续长度(4字节)
0 56678 96
1 56679 95
2 56680 94
3 56681 93
4 56682 92
5 56683 91
6 56684 90
7 56685 89
8 56686 88
9 56687 87
10 56688 86
11 56689 85
12 56690 84
13 56691 83
14 56692 82
15 56693 81
16 56694 80
17 56695 79
垃圾收集程序执行完成后,闪存控制器130通知主机端110更新此子区的HPB项目。当接收到更新信息后,主机端110发出HPB读取缓冲器命令来获取更新的HPB项目,并据以更新HPB缓存500中此子区的内容。所以,主机端110发送的HPB读取命令中所请求读取的一段连续LBA区间的用户数据大多存储在闪存装置150中的连续物理地址,使得HPB读取命令的执行效能可以进一步提升。
HPB规范定义了两种取得HPB项目的模式:主机控制模式(Host Control Mode)和装置控制模式(Device Control Mode)。主机控制模式由主机端110触发,决定哪些HPB子区需要存储在HPB缓存500;而装置控制模式则由闪存控制器130触发,决定哪些HPB子区需要存储在HPB缓存500。所属技术领域人员理解,本发明实施例涵盖这两种或其他类似的控制模式。
参考如图7所示应用在主机控制模式的操作顺序图,详细说明如下:
操作711:主机端110决定哪些子区即将要启动(Activated)。
操作713:主机端110发送HPB读取缓冲器命令给闪存控制器130,向闪存控制器130请求决定子区的HPB项目。HPB读取缓冲器命令可包含10个字节,其中第0个字节记录操作码(Operation Code)“F9h”、第2和第3个字节记录即将启动HPB局部的信息以及第4和第5个字节记录即将启动子区的信息。
操作715:闪存控制器130产生相应于启动子区的HPB项目。关于产生操作715的技术细节可参考如图8所示的HPB项目的产生和更新方法的流程图,此方法由处理单元134于加载并执行相关软件或固件程序代码时实施,进一步说明如下:
步骤S810:驱动闪存接口139从闪存装置150读取特定T1表。
步骤S820:依据读取T1表的内容编排成HPB项目。为了提升读取的效率,除了PBA以外,处理单元134还在HPB项目中添加如上所述的PBA连续性信息。
步骤S830:触发相应于启动子区的垃圾收集程序的背景操作。在闪存控制器130接收到HPB读取缓冲器命令之后,闪存控制器130除了把读取的对照信息编排HPB项目以回复给主机端110外,还可触发垃圾收集程序的背景操作,用于将启动子区关联的全部或指定部分LBA区间的用户数据迁移(写入)到闪存装置150中的连续物理地址。处理单元134还可在RAM 136中维护一个变量,用于记录此启动子区的垃圾收集程序的执行状态。初始时,变量记录此启动子区没有关联到任何垃圾收集程序的信息。当垃圾收集程序触发后,变量记录此启动子区的垃圾收集程序正在执行的信息。当每个批次的迁移(写入)操作完成后,闪存控制器130更新暂存在RAM 136中的相应T1表和此子区的HPB项目,其中一个批次的迁移(写入)操作相应于启动子区中的一部分LBA区间的用户数据。当垃圾收集程序执行完毕后,闪存控制器130更新变量,用于记录此启动子区的垃圾收集程序已经执行完成的信息。
请参考回图7。操作717:闪存控制器130传送数据输入UFS协议信息单元(DATA INUFS Protocol Information Unit,UPIU)给主机端110。
如果相应垃圾收集程序尚未执行完成,则闪存控制器130先回复包含原始HPB项目(如表1所示的示例)的数据输入UPIU。之后,当从主机端110接收到相应于此启动子区的HPB读取命令时,闪存控制器130可不回复请求读取的用户数据,而是先回复信息给主机端110,请主机端110更新此启动子区的HPB项目。
如果垃圾收集程序已经执行完成,则数据输入UPIU包含更新后的HPB项目(如表3所示的示例)。在闪存控制器130将此启动子区的更新后的HPB项目传送给主机端110之后,将RAM 136中的变量更新为此启动子区没有关联到任何垃圾收集程序的信息。
操作719:主机端110存储接收到的HPB项目到HPB缓存500中的启动子区。
操作731:主机端110决定哪些局部即将要关闭(Deactivated)。在这里需要注意的是,在HPB规范中,启动是以子区为单位,而关闭是以局部为单位,主机端110可依据其算法的需求决定要启动的子区以及要关闭的局部。
操作733:主机端110发送HPB写入缓冲器命令(HPB WRITE BUFFER command)给闪存控制器130,向闪存控制器130通知关闭决定的局部。HPB读取缓冲器命令可包含10个字节,其中第0个字节记录操作码“FAh”并且在第2和第3个字节记录即将关闭局部的信息。
操作735:闪存控制器130关闭局部。举例而言,闪存控制器130在将HPB项目传送给主机端110之后,闪存控制器130可针对已启动的子区对主机端110后续的读取命令的读取流程执行优化运作,而在收到主机端110关闭局部的通知后,闪存控制器130即可终止相应于关闭局部的相关优化运作。
操作751:如果必要,闪存控制器130在执行完特定启动子区的垃圾收集程序后,驱动闪存接口139更新闪存装置150中的相应T1表的内容。此外,闪存控制器130更新RAM 136中的特定变量,指出此启动子区的垃圾收集程序已经执行完成的信息。于此需注意的是,如果特定启动子区的垃圾收集程序已经在操作715中执行完毕,则闪存控制器130不需要特别再执行更新操作751,从而之后的操作753至775也可以不需要再执行。
操作753:闪存控制器130传送回复UFS协议信息单元(RESPONSE UPIU)给主机端110,其中包含建议主机端110更新上述子区的HPB项目的信息。
操作755和757:主机端110发送HPB读取缓冲器命令给闪存控制器130,向闪存控制器130请求关联于建议子区的HPB项目。
操作771:闪存控制器130从RAM 136读取上述子区的更新后HPB项目。
操作773:闪存控制器130传送数据输入UPIU给主机端110,其中包含上述子区的更新后HPB项目。
操作775:主机端110将接收到的更新后HPB项目覆写掉HPB缓存500的启动子区中的内容。
在主机控制模式下,为了响应如上所述的背景操作,图6中的读取操作630的技术内容需要修改。参考如图9所示的用户数据读取方法的流程图,此方法由处理单元134于加载并执行相关软件或固件程序代码时实施,进一步说明如下:
步骤S910:处理单元134通过主机接口131从主机端110接收到HPB读取命令,其中包含LBA、传输长度和HPB项目。
步骤S920:处理单元134依据HPB读取命令中的LBA和传输长度决定HPB读取命令中HPB项目的所属子区。
步骤S930:处理单元134判断所属子区的HPB项目是否需要更新。如果是,流程继续进行步骤S970的处理。否则,流程继续进行步骤S950的处理。处理单元134可依据RAM 136中存储的相应于所属子区的变量进行判断。如果此变量记录所属子区没有关联到任何垃圾收集程序的信息,则代表所属子区的HPB项目不需要更新。如果此变量记录所属子区的垃圾收集程序正在执行或者已经执行完成的信息,则代表所属子区的HPB项目需要更新。
步骤S950:处理单元134依据HPB读取命令携带的HPB项目的内容,驱动闪存接口139从闪存装置150读取请求LBA区间的用户数据。需要注意的是,由于经过垃圾收集程序的背景操作后,相应于所属子区的连续LBA的用户数据大部分存储在闪存装置150中的连续物理地址,所以在大部分情况下处理单元134可直接依据HPB读取命令携带的HPB项目的内容从闪存装置150读取请求LBA区间的用户数据。
步骤S960:处理单元134驱动主机接口131传送一或多个数据输入UPIU给主机端,其中包含读出的用户数据。
步骤S970:处理单元134驱动主机接口131传送回复UPIU给主机端110,其中包含建议主机端110更新上述子区的HPB项目的信息。当主机端110接收到回复UPIU后,主机端110可执行如图7所述的发送操作755以启动上述子区的HPB项目的更新。
参考如图10所示应用在装置控制模式的操作顺序图,详细说明如下:
操作1011:闪存控制器130主动决定哪些子区即将要启动和/或哪些局部即将关闭。
操作1012:闪存控制器130产生相应于启动子区的HPB项目。关于产生操作1012的技术细节可参考如上所述图8中步骤S830的内容,为求简明不再赘述。
操作1013:闪存控制器130传送回复UPIU给主机端110,其中建议主机端110启动上述子区和/或关闭上述局部。由于在这个模式中是由装置端决定何时启动子区,所以,闪存控制器130可在相应于启动子区的垃圾收集程序的背景操作完成后再传送回复UPIU给主机端110。
操作1015:如果需要,主机端110从系统存储器中舍弃那些不再有效的HPB局部的HPB项目。
操作1031:如果需要,主机端110发送HPB读取缓冲器命令给闪存控制器130,向闪存控制器130请求建议子区的HPB项目。
操作1033:闪存控制器130从RAM 136读取请求子区的HPB项目,其中每个HPB项目包含如上所述的PBA连续性信息。
操作1035:闪存控制器130传送数据输入UPIU给主机端110,其中包含相应于上述子区的HPB项目。在传送完相应于上述子区的HPB项目后,处理单元134可更新RAM 136中相应于上述子区的变量,用于记录此子区没有关联到任何垃圾收集程序的信息。
操作1037:主机端110存储接收到的HPB项目到HPB缓存500中的启动子区。
本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如存储装置中的固件转换层(Firmware Translation Layer,FTL)、特定硬件的驱动程序、或软件程序。此外,也可实现于如上所示的其他类型程序。所属技术领域中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如DVD、CD-ROM、U盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
虽然图1至图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图8、图9的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (15)

1.一种管理数据存储的方法,由闪存控制器执行,其特征在于,包含:
获取即将启动的子区的信息,其中所述子区关联于一段逻辑区块地址区间;
触发垃圾收集程序的背景操作,用于将所述子区关联的全部或一部分所述逻辑区块地址区间的用户数据迁移到闪存装置中的连续物理地址;以及
依据迁移结果更新相应于所述子区的多个项目的内容,其中,每个所述项目包含逻辑区块地址的用户数据实际存储于所述闪存装置中的物理地址的信息。
2.如权利要求1所述的管理数据存储的方法,其特征在于,每个所述项目包含连续性信息,描述相应逻辑区块地址之后的特定逻辑区块地址区间的用户数据存储在所述闪存装置中的连续物理地址。
3.如权利要求1所述的管理数据存储的方法,其特征在于,还包含:
从主机端发送的第一读取命令中获取即将启动的所述子区的信息,其中,所述第一读取命令请求所述闪存控制器提供关联于所述子区的多个项目。
4.如权利要求3所述的管理数据存储的方法,其特征在于,还包含:
在所述垃圾收集程序执行完毕后,传送回复给所述主机端,包含建议所述主机端更新所述子区的多个项目;
从所述主机端接收第二读取命令,所述第二读取命令请求所述闪存控制器提供关联于所述子区的多个项目;
读取所述子区的更新后的项目;以及
传送所述子区的所述更新后的项目给所述主机端。
5.如权利要求3所述的管理数据存储的方法,其特征在于,还包含:
触发所述垃圾收集程序的背景操作时,更新第一变量,用于记录所述垃圾收集程序正在执行的信息;以及
在所述垃圾收集程序执行完毕后,更新所述第一变量,用于记录所述垃圾收集程序已经执行完成的信息。
6.如权利要求5所述的管理数据存储的方法,其特征在于,还包含:
从所述主机端接收第三读取命令,其中所述第三读取命令包含逻辑区块地址、传输长度和项目;
依据所述逻辑区块地址和所述传输长度决定所述项目的所属子区;以及
当相应于所述所属子区的第二变量记录相应于所述所属子区的垃圾收集程序正在执行或者已经执行完成的信息时,传送回复给所述主机端,包含建议所述主机端更新所述所属子区的多个项目。
7.如权利要求1所述的管理数据存储的方法,其特征在于,还包含:
主动决定即将启动的所述子区。
8.一种计算机可读取存储介质,用于存储能够被闪存控制器的处理单元执行的计算机程序,其特征在于,所述计算机程序被所述闪存控制器的处理单元执行时实现如权利要求1至7中任一项所述的管理数据存储的方法。
9.一种管理数据存储的装置,其特征在于,包含:
闪存接口,耦接闪存装置;以及
处理单元,耦接所述闪存接口,用于获取即将启动的子区的信息,其中所述子区关联于一段逻辑区块地址区间;触发垃圾收集程序的背景操作,用于驱动所述闪存接口将所述子区关联的全部或一部分所述逻辑区块地址区间的用户数据迁移到闪存装置中的连续物理地址;以及依据迁移结果更新相应于所述子区的多个项目的内容,其中,每个所述项目包含逻辑区块地址的用户数据实际存储于所述闪存装置中的物理地址的信息。
10.如权利要求9所述的管理数据存储的装置,其特征在于,每个所述项目包含连续性信息,描述相应逻辑区块地址之后的特定逻辑区块地址区间的用户数据存储在所述闪存装置中的连续物理地址。
11.如权利要求9所述的管理数据存储的装置,其特征在于,还包含:
主机接口,耦接主机端和所述处理单元,
其中,所述处理单元通过所述主机接口从所述主机端发送的第一读取命令中获取即将启动的所述子区的信息,其中,所述第一读取命令请求闪存控制器提供关联于所述子区的多个项目。
12.如权利要求11所述的管理数据存储的装置,其特征在于,所述处理单元在所述垃圾收集程序执行完毕后,通过所述主机接口传送回复给所述主机端,包含建议所述主机端更新所述子区的多个项目;通过所述主机接口从所述主机端接收第二读取命令,所述第二读取命令请求闪存控制器提供关联于所述子区的多个项目;读取所述子区的更新后的项目;以及通过所述主机接口传送所述子区的所述更新后的项目给所述主机端。
13.如权利要求11所述的管理数据存储的装置,其特征在于,还包含:
随机存取存储器,耦接所述处理单元,存储第一变量,
其中,所述处理单元触发所述垃圾收集程序的背景操作时,更新所述第一变量,用于记录所述垃圾收集程序正在执行的信息;以及所述处理单元在所述垃圾收集程序执行完毕后,更新所述第一变量,用于记录所述垃圾收集程序已经执行完成的信息。
14.如权利要求13所述的管理数据存储的装置,其特征在于,所述处理单元通过所述主机接口从所述主机端接收第三读取命令,其中所述第三读取命令包含逻辑区块地址、传输长度和项目;依据所述逻辑区块地址和所述传输长度决定所述项目的所属子区;以及当相应于所述所属子区的第二变量记录相应于所述所属子区的垃圾收集程序正在执行或者已经执行完成的信息时,通过所述主机接口传送回复给所述主机端,包含建议所述主机端更新所述所属子区的多个项目。
15.如权利要求9所述的管理数据存储的装置,其特征在于,所述处理单元主动决定即将启动的所述子区。
CN202011051908.7A 2020-04-27 2020-09-29 管理数据存储的方法及装置以及计算机可读取存储介质 Pending CN113641597A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/160,850 US11580017B2 (en) 2020-04-27 2021-01-28 Method and apparatus and computer program product for preparing logical-to-physical mapping information for host side

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202063015905P 2020-04-27 2020-04-27
US63/015,905 2020-04-27

Publications (1)

Publication Number Publication Date
CN113641597A true CN113641597A (zh) 2021-11-12

Family

ID=78415607

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011051908.7A Pending CN113641597A (zh) 2020-04-27 2020-09-29 管理数据存储的方法及装置以及计算机可读取存储介质

Country Status (2)

Country Link
CN (1) CN113641597A (zh)
TW (1) TWI756854B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI808011B (zh) * 2022-09-26 2023-07-01 慧榮科技股份有限公司 資料處理方法及對應之資料儲存裝置
TWI829363B (zh) * 2022-09-26 2024-01-11 慧榮科技股份有限公司 資料處理方法及對應之資料儲存裝置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275660A1 (en) * 2012-04-12 2013-10-17 Violin Memory Inc. Managing trim operations in a flash memory system
CN109426619A (zh) * 2017-08-30 2019-03-05 慧荣科技股份有限公司 访问快闪存储器模块的方法及相关闪存控制器与电子装置
CN110704330A (zh) * 2018-07-09 2020-01-17 慧荣科技股份有限公司 数据存取控制装置及方法
TW202006553A (zh) * 2017-09-22 2020-02-01 慧榮科技股份有限公司 快閃記憶體的資料內部搬移方法以及使用該方法的裝置
CN110908925A (zh) * 2018-09-17 2020-03-24 慧荣科技股份有限公司 高效能垃圾收集方法以及数据存储装置及其控制器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291194B2 (en) * 2009-11-16 2012-10-16 Mediatek Inc. Methods of utilizing address mapping table to manage data access of storage medium without physically accessing storage medium and related storage controllers thereof
US8316176B1 (en) * 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
KR102401600B1 (ko) * 2015-08-31 2022-05-25 삼성전자주식회사 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치
US10120573B2 (en) * 2015-09-14 2018-11-06 Microsoft Technology Licensing, Llc. Modular sequential writing of data to data storage devices
TWI639917B (zh) * 2017-04-25 2018-11-01 慧榮科技股份有限公司 資料儲存裝置及映射表重建方法
KR102567140B1 (ko) * 2017-11-24 2023-08-16 삼성전자주식회사 데이터 관리 방법 및 이를 수행하는 저장 장치
TWI679537B (zh) * 2018-03-09 2019-12-11 深圳大心電子科技有限公司 資料移動方法及儲存控制器
TWI671631B (zh) * 2018-08-01 2019-09-11 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器
TWI721365B (zh) * 2018-09-17 2021-03-11 慧榮科技股份有限公司 高效能垃圾收集方法以及資料儲存裝置及其控制器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275660A1 (en) * 2012-04-12 2013-10-17 Violin Memory Inc. Managing trim operations in a flash memory system
CN109426619A (zh) * 2017-08-30 2019-03-05 慧荣科技股份有限公司 访问快闪存储器模块的方法及相关闪存控制器与电子装置
TW202006553A (zh) * 2017-09-22 2020-02-01 慧榮科技股份有限公司 快閃記憶體的資料內部搬移方法以及使用該方法的裝置
CN110704330A (zh) * 2018-07-09 2020-01-17 慧荣科技股份有限公司 数据存取控制装置及方法
CN110908925A (zh) * 2018-09-17 2020-03-24 慧荣科技股份有限公司 高效能垃圾收集方法以及数据存储装置及其控制器

Also Published As

Publication number Publication date
TW202141280A (zh) 2021-11-01
TWI756854B (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
CN108021510B (zh) 操作对多重名称空间进行管理的存储装置的方法
US11650942B2 (en) Method and apparatus for data reads in host performance acceleration mode
US11675698B2 (en) Apparatus and method and computer program product for handling flash physical-resource sets
US11580017B2 (en) Method and apparatus and computer program product for preparing logical-to-physical mapping information for host side
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
CN111108488B (zh) 内存块回收方法和装置
CN112214158B (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
KR20200072639A (ko) 저장 장치 및 그것의 동작 방법
CN107943710B (zh) 存储器管理方法及使用所述方法的存储控制器
CN114063893A (zh) 数据储存装置与数据处理方法
CN113641597A (zh) 管理数据存储的方法及装置以及计算机可读取存储介质
CN113900582A (zh) 数据处理方法及对应的数据储存装置
US11544185B2 (en) Method and apparatus for data reads in host performance acceleration mode
US11544186B2 (en) Method and apparatus for data reads in host performance acceleration mode
KR20200087487A (ko) 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
CN114327240A (zh) 计算机可读存储介质、闪存存储器的数据存储方法及装置
EP3819771B1 (en) Data processing method and device, apparatus, and system
TWI795680B (zh) 主機效能加速模式的資料讀取方法及裝置
CN117632809B (zh) 存储器控制器、数据读取方法及存储装置
US20230161713A1 (en) Method and non-transitory computer-readable storage medium and apparatus for updating host-to-flash address mapping table
US11307766B2 (en) Apparatus and method and computer program product for programming flash administration tables
TW202321921A (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
CN114328297A (zh) 映射表管理方法、存储器控制电路单元与存储器存储装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination