CN111796759A - 多平面上的片段数据读取的计算机可读取存储介质及方法 - Google Patents
多平面上的片段数据读取的计算机可读取存储介质及方法 Download PDFInfo
- Publication number
- CN111796759A CN111796759A CN201911076916.4A CN201911076916A CN111796759A CN 111796759 A CN111796759 A CN 111796759A CN 201911076916 A CN201911076916 A CN 201911076916A CN 111796759 A CN111796759 A CN 111796759A
- Authority
- CN
- China
- Prior art keywords
- read
- data
- command
- plane
- reading
- 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.)
- Granted
Links
- 239000012634 fragment Substances 0.000 title claims abstract description 43
- 238000000034 method Methods 0.000 title claims description 17
- 230000015654 memory Effects 0.000 claims abstract description 92
- 238000012545 processing Methods 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims abstract description 7
- 238000005056 compaction Methods 0.000 claims abstract description 3
- 239000010410 layer Substances 0.000 claims 2
- 239000002356 single layer Substances 0.000 claims 1
- 210000004027 cell Anatomy 0.000 description 20
- 238000010586 diagram Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 5
- 210000000352 storage cell Anatomy 0.000 description 5
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
Abstract
本发明提出一种多平面上的片段数据读取的计算机可读取存储介质,用于存储能够被处理单元执行的计算机程序代码,并且该计算机程序代码被该处理单元执行时实现以下步骤:提供调度数据表;将命令队列中的每个存储器操作命令依据其物理地址信息安排到调度数据表中的存储格;依据调度数据表的内容为一个逻辑单元号挑选两个或以上的存储器操作命令;驱动闪存接口来完成多页面读取精简操作,从逻辑单元号读取所述挑选的存储器操作命令请求的数据;以及回复读取的数据给主机。通过使用调度数据表将两个或两个以上的片段读取操作搜集成为一个多页面读取精简操作,可以提升短数据读取的效能。
Description
技术领域
本发明涉及数据存储装置,尤指多平面上的片段数据读取的计算机可读取存储介质及方法。
背景技术
闪存存储装置通常分为NOR闪存存储装置与NAND闪存存储装置。NOR闪存存储装置为随机存取装置,主机(Host)可于地址引脚上提供任何存取NOR闪存存储装置的地址,并及时地从NOR闪存存储装置的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存存储装置并非随机存取,而是串行存取。NAND闪存存储装置无法像NOR闪存存储装置一样,可以存取任何随机地址,主机反而需要写入串行的字节(Bytes)的值到NAND闪存存储装置中,用以定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存存储装置中写入操作的最小数据块)或一个区块(闪存存储装置中抹除操作的最小数据块)。
传统的NAND闪存存储器(NAND flash memory)提供的读取命令,通常让控制器能够读取一整个跨平面页面的数据。然而,随着NAND闪存存储装置中的跨平面页面的长度(如16KB)已经超过主机执行的操作***所管理的逻辑区块地址(Logical Block AddressLBA)的数据长度(如4KB),传统每次都要读取一整个跨平面页面数据的读取操作在处理主机的短数据读取命令时可能降低NAND闪存存储器的整体效能。因此,本发明实施例提出一种多平面上的片段数据读取的计算机可读取存储介质及方法,针对拥有较长跨平面页面的NAND闪存存储器进行优化的数据读取操作。
发明内容
有鉴于此,如何减轻或消除所述相关领域的缺失,实为有待解决的问题。
本发明涉及一种多平面上的片段数据读取的计算机可读取存储介质,用于存储能够被处理单元执行的计算机程序代码,并且该计算机程序代码被该处理单元执行时实现以下步骤:提供调度数据表;将命令队列中的每个存储器操作命令依据其物理地址信息安排到调度数据表中的存储格;依据调度数据表的内容为一个逻辑单元号挑选两个或以上的存储器操作命令;驱动闪存接口来完成多页面读取精简操作,从逻辑单元号读取挑选的存储器操作命令请求的数据;以及回复读取的数据给主机。
本发明涉及一种多平面上的片段数据读取方法,该方法由处理单元执行,包含以下步骤:提供调度数据表;将命令队列中的每个存储器操作命令依据其物理地址信息安排到调度数据表中的存储格;依据调度数据表的内容为一个逻辑单元号挑选两个或以上的存储器操作命令;驱动闪存接口来完成多页面读取精简操作,从逻辑单元号读取挑选的存储器操作命令请求的数据;以及回复读取的数据给主机。
上述实施例的优点之一,通过使用调度数据表将两个或两个以上的片段读取操作搜集成为一个多页面读取精简操作,可以提升短数据读取的效能。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的闪存存储***架构图。
图2为闪存接口与逻辑单元号(Logical Unit Number LUN)之间的连接示意图。
图3为命令队列示意图。
图4为LUN的数据组织示意图。
图5为闪存接口操作的片段读取的时序图。
图6为页面中的区段示意图。
图7为闪存接口操作的多页面读取精简的时序图。
图8为LUN中的平面及跨平面页面的组织示意图。
图9为依据一些实施方式的存储器操作命令调度示意图。
图10为依据本发明实施例的存储器操作命令调度方法的流程图。
图11及图12为依据本发明实施例的存储器操作命令调度示意图。
图13及图14为依据本发明实施例的存储器操作命令挑选示意图。
【附图标记列表】
100 闪存存储***架构
110 主机
130 控制器
131 主机接口
133-0、133-1 处理器核心
135 命令队列
136 数据缓存
137 闪存接口
138 DMA控制器
139 数据缓存器
150 LUNs
150#0~150#11 LUN
CH#0~CH#3 通道CH
CE#0~CE#2 芯片使能控制信号
CQT、CQH 指针
139#0 存取子接口
410#0~470#m 平面
P#0~P#(n) 页面
490#1~490#n 超页面
tWB、tRSNAP、tDBSY、tPR 时间区间
900 调度数据表
S1010~S1090 方法步骤
1100、1200 MPR-Lite调度数据表
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示时间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。使用于描述组件之间关系的其他语词也可类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图1。闪存存储***架构100包含主机(Host)110、控制器(Controller,或称装置端Device)130及逻辑单元号(Logical Block Number,LUN)150。此***架构可实施于个人计算机、笔记本计算机(Laptop PC)、平板计算机、移动电话、数字相机、数字摄影机等电子产品。控制器130可包含多核处理器133,为单一运算组件,搭配两个用于加载固件或软件模块的程序代码的独立处理器核心133-0及133-1。处理器核心133-0可通过主机接口131使用通用闪存记忆存储(Universal Flash Storage,UFS)、快速非易失存储器(Non-VolatileMemory Express,Nvme)、通用串行总线(Universal Serial Bus,USB)、先进技术附件(Advanced Technology Attachment,ATA)、串行先进技术附件(Serial AdvancedTechnology Attachment,SATA)、快速外设组件互联(Peripheral ComponentInterconnect Express,PCI-E)或其他接口协议,与主机110彼此通信。处理器核心133-1可通过闪存接口137使用双倍数据率(Double Data Rate,DDR)通信协议,例如,开放NAND闪存(Open NAND Flash Interface,ONFI)、双倍数据率开关(DDR Toggle)或其他接口协议,与LUN 110彼此通信。
逻辑单元号(Logical Unit Number,LUN)150提供大量的存储空间,通常是数百Gigabytes,甚至是Terabytes,可用于存储大量的用户数据,例如高分辨率图片、影片等。LUN 150中包含控制电路以及存储器数组,存储器数组中的存储单元可为三层式单元(Triple Level Cells,TLCs)或四层式单元(Quad-Level Cells,QLCs)。数据缓存器(DataBuffer)139可用于缓存从LUN150读取并即将敲出给主机110的用户数据。参考图2,闪存接口137可包含四个输出输入通道(I/O Channels,以下简称信道CH),包括信道CH#0至CH#3,每一个通道CH连接三个LUN,例如,通道CH#0连接LUN150#0、150#4及150#8。处理器核心133-1可驱动闪存接口137发出启动信号CE#0至CE#2中的一个来启动LUN 150#0至150#3、LUN150#4至150#7、或LUN 150#8至150#11,接着以并行的方式从启动的LUN读取用户数据。为了简化说明,在下述仅以通道CH#0至CH#1以及CE#0至CE#1来启动LUN 150#0~1以及LUN 150#4~5为例进行说明,但不以此为限。
控制器130可配置命令队列135,用于存储多个闪存存储器操作命令,闪存存储器操作命令例如是读取页面(Read Page)命令、页面编程(Program Page)命令、擦除区块(Erase Block)命令等等。闪存存储器操作命令可以关联于主机110发出的但尚未处理的主机命令(Host Commands),例如是主机读取命令、主机写入命令等等,亦可以是控制器130所自主发出的命令。
命令队列135可实施于静态随机存取存储器(Static Random Access Memory,SRAM),包含多笔项目(Entry)的集合。命令队列135中的每一笔项目可存储一个闪存存储器操作命令及相关信息。集合中的闪存存储器操作命令可依据到达时间依序存放。集合的操作基本原则是由处理器核心133-0从结束位置(如指针CQT所指的位置)新增闪存存储器操作命令(可称为入列),并且由处理器核心133-1从开始位置(如指针CQH所指的位置)移除闪存存储器操作命令(可称为出列)。然而,为了优化数据读取操作,第一个新增至命令队列135的闪存存储器操作命令,不一定会是第一个被移出的。另外,控制器130亦可使用堆栈(Stack)以存储上述的闪存存储器操作命令,并不以此为限。
LUN 150包含多个平面(Planes),参考图4,以LUN 150#0为例,其包含4个平面(Planes),包括:平面410至470。每一平面包含多个物理区块(Physical Blocks,简称为区块),以平面410为例,其包含区块410#0~m,m为正整数。每个区块包含多个页面(Pages),以区块410#0为例,其包含页面P#0至P#n,n为正整数。每个页面P包含多个NAND存储器单元(Memory Cells),并且NAND存储器单元可为三层式单元或四层式单元。于一些实施例中,当每一个NAND存储器单元为三层式单元而可记录8个状态时,一个字符线可包含页面P#0(可称为最低比特页面,MSB page)、页面P#1(可称为中间比特页面,CSB,Center SignificantBit page)及页面P#2(可称为最高比特页面,LSB page)。当每一个NAND存储器单元为四层式单元而可记录16个状态时,除了MSB、CSB以及LSB页面之外,还包括TSB(可称为顶部比特,TSB,Top Significant Bit)页面。同一LUN 150中的不同平面中一个的区块可虚拟形成大区块(Big Block),不同LUN 150中的大区块(Big Block)可虚拟形成超级区块(SuperBlock)。
数据缓存136和/或数据缓存器(Data Buffer)139可存储数据读取时所需查找的逻辑-物理映射表(Logical-Physical Mapping Table,L2P映射表),L2P映射表记录每一笔数据的逻辑地址与物理地址的映射信息。数据缓存136可实施于SRAM,数据缓存器139可实施于动态随机存取存储器(Dynamic Random Access Memory,DRAM)中的预先分配局部。
虽然每个区块或页面中的存储器单元为TLCs或QLCs,但是,控制器130可采用单层式单元(Single Logical Cells,SLCs)模式以将数据编程至区块或页面中,用以提升数据读取及数据编程的速度。为了方便区块编程模式的管理,控制器130较佳建立并维护物理配置数据表(Physical Configuration Table)以记录每一区块的编程模式,即默认模式(TLC或QLC)或SLC模式,并将物理配置数据表存储至数据缓存136中。在数据读取操作中,控制器130可通过搜索物理配置数据表来辨认每个区块或页面的编程模式,如此一来,再以适当的读取方式来读取区块或页面的数据。
控制器130可输出读取页面命令,用以读取LUN 150中一个平面中的一个区块的一个页面,亦可输出读取页面多平面(Read Page Multi-plane)命令以读取不同平面的一个区块的一个页面的数据。然而,有时候主机110并不需要一整个页面数据,而是仅需要一个页面中的4KB数据。此时,控制器130可利用片段读取(Snap Read)命令以读取一个页面中的部分数据。关于片段读取操作,参考图5。波型510显示耦接于LUN 150及闪存接口137间的数据线DQ[7:0]的时钟类型,以1个“CMD”时钟指出从闪存接口137传送的主要命令,5个“Addr”时钟指出从闪存接口137传送想要读取的LUN 137的物理地址,再以1个“CMD”时钟指出从闪存接口137传送的确认(Confirm)命令,最后,“DOUT”表示从LUN 150所输出的数据。波型520为波型510的示范片段读取命令,主要命令为00h,确认命令为20h,因此,LUN 150判断此操作命令为片段读取命令,为读取指定页面(物理地址)的部分页面数据。
部分页面数据例如为16KB页面数据中的8KB数据,参考图6,其中,8KB数据可选自页面中的三种不同的区段:前8KB区段625,中间8KB区段645,及后8KB区段665,每一8KB区段的长度较佳大于等于8KB。另外,部分页面数据也可例如为16KB页面数据中的4KB数据,即将16KB页面区分成第一4KB区段、第二4KB区段、第三4KB区段以及第四4KB区段,每一4KB区段的长度较佳大于等于4KB。
另外,由于LUN 150包含多个平面(Planes),因此,控制器130可输出多页面读取精简(Multi-Page Read Lite,MPR-Lite)命令,用以读取LUN 150中多个平面中的页面上的片段数据,参考图6,例如:平面810及830的页面P#0中的前8KB区段625,平面830及850的页面P#1的后8KB区段665。MPR-Lite命令可提升片段数据的读取效能。
参考图1,以数据读取为例,处理器核心133-0可通过主机接口131取得来自主机110的数据读取命令,其中,数据读取命令提供目标数据的逻辑地址。处理器核心133-0通过查找L2P映射表以及逻辑地址可取得目标数据在LUN150中的页面位置(物理地址),并通过物理配置表可得知目标数据的编程模式。接着,处理器核心133-0产生闪存存储器操作命令至命令队列135,其中,闪存存储器操作命令包括目标数据的物理地址。
控制器130可利用命令队列135以存储多个闪存存储器操作命令,例如:64个闪存存储器操作命令。处理器核心133-1可在数据缓存136中建立并维护调度表(SchedulingTable)900和/或待命表(Standby Table)910,用以排序命令队列135中闪存存储器操作命令,使得闪存存储器操作命令的执行更具效率。参考图9,例如,命令队列135目前存储13个读取页面命令,标号分别为“a”~“m”。处理器核心133-1将读取特定LUN 150的读取页面命令记录至调度表900中的特定字段,例如,将读取页面命令“b”、“a”、“d”排入调度表900中,以分别读取LUN 150#0、LUN 150#4以及LUN 150#1的页面,如此一来,处理器核心133-1可以同步以及交错(Interleaving)的操作方式将读取页面命令“b”、“a”、“d”输出至LUN 150#0、LUN 150#4以及LUN 150#1。处理器核心133-1将读取页面命令“c”、“e”~“m”排入待命表,当调度表900中的读取页面命令“b”、“a”、“d”执行完毕之后,再将待命表中的读取页面命令“e”、“c”、“g”排入至调度表900。之后,再将待命表中的读取页面命令“j”、“f”、“k”排入至调度表900,最后,将待命表中的读取页面命令“i”、“m”排入至调度表900。因此,13个读取页面命令需要4个周期才能执行完毕。于一些实施方式中,处理器核心133-1仅建立并维护调度表900,并将闪存存储器操作命令依序存储至调度表900,处理器核心133-1执行完第一列闪存存储器操作命令后,继续执行下一列闪存存储器操作命令,以此类推。
如果目标数据为一个页面中的4KB或8KB数据时,则控制器130可利用命令队列135以存储片段读取命令而非读取页面命令。或是,以MPR-Lite命令来执行命令队列135中的片段读取命令,即将多个片段读取命令整合成一个MPR-Lite命令。当多个片段读取命令整合成一个MPR-Lite命令时,控制器130需将多个片段读取命令变更成多个读取页面多平面命令,确认命令为32h,而最后一个片段读取命令不变更,确认命令为20h,如此一来,控制器130不但可以同步以及交错的操作方式来执行片段读取命令,还可以增加片段读取命令的执行效率。参考图11,片段读取命令“b”为读取LUN 150#0中目标数据,片段读取命令“a”和“h”为读取LUN 150#4中不同平面的目标数据,片段读取命令“d”和“g”为读取LUN 150#1中不同平面的目标数据,因此,控制器130可将片段读取命令“a”、“b”、“d”、“h”以及“g”以MPR-Lite命令来执行,因此,控制器130可一并执行5个片段读取命令,而非3个片段读取命令,换句话说,MPR-Lite命令可将片段读取命令的执行效率提升66%。
在一些实施例中,为因应如上所述的MPR Lite命令,处理器核心133-1可于加载并执行特定软件或固件命令时实施如图10所示的闪存存储器操作命令排序功能。
步骤S1010:处理器核心133-1于数据缓存136中提供MPR-Lite调度数据表。相较于图9所示的调度表900及待命表910,MPR-Lite调度数据表针对每个LUN提供还细致的区分,有利于将两个或以上的片段读取命令整合成一个MPR-lite操作。
参考图11所示的MPR-Lite调度数据表1100,针对每个LUN,可包含两栏“Plane0/1”及“Plane2/3”,用于将片段读取命令依据其欲读取的物理地址区分到其中一栏的存储格中。例如,MPR-Lite调度数据表1100中第三栏的存储格用于记录读取平面810和/或平面830上数据的片段读取命令;而其中第四栏的存储格用于记录读取平面850和/或平面870上数据的片段读取命令。
此外,由于数据编程至区块时,可能是采用默认编程模式,例如:TLC或QLC模式,亦可能是采用SLC模式。不同的编程模式需使用不同的数据读取方式方能正确地读取数据,因此,将多个片段读取命令整合成一个MPR-Lite命令时,为了正确地读取数据,多个片段读取命令所欲读取的目标数据必需采用相同编程模式,因此,MPR-Lite调度数据表1100可略作调整而成为MPR-Lite调度数据表1200,参考图12所示,针对每个LUN,可包含三栏“Main P0/1”、“SLC P2/3”及“QLC P2/3”,用于将每个闪存存储器操作命令依据其欲读取的物理地址及使用的模式区分到其中一栏的存储格中。例如,MPR-lite调度数据表1200中第四栏的存储格用于记录读取平面810和/或平面830上数据的闪存存储器操作命令,而不管使用的读取模式为何;其中第五栏的存储格用于记录使用SLC模式读取平面850和/或平面870上数据的闪存存储器操作命令;而其中第六栏的存储格用于记录使用QLC模式读取平面850和/或平面870上数据的闪存存储器操作命令。
接着,参考图10,处理器核心133-1反复执行一个循环(步骤S1030至S1090),用于将命令队列135中的每个闪存存储器操作命令安排到MPR-Lite调度数据表中的适当存储格。于每个回合,详细说明如下:
步骤S1030:处理器核心133-1从命令队列135中取得一个或多个尚未排序的闪存存储器操作命令的物理地址信息。如果一个闪存存储器操作命令指示读取平面830以及平面850上的数据,处理器核心133-1可将此闪存存储器操作命令安排到关联于平面830的字段中的存储格,例如图11中的栏“Plane0/1”或图12中的栏“Main P0/1”。
步骤S1070:以及依据物理地址及其他相关信息将每一个闪存存储器操作命令安排到MPR-Lite调度数据表中的适当存储格。参考图11的使用案例,MPR-Lite调度数据表1100中第三栏的存储格用于记录读取平面810和/或平面830上数据的片段读取命令“a”、“c”及“f”;而其中第四栏的存储格用于记录读取平面850和/或平面870上数据的片段读取命令“h”及“i”。
在步骤S1070的另一些实施例中,存储器操作命令的其他相关信息可包含此闪存存储器操作命令使用何种模式进行读取。处理器核心133-1可搜索数据缓存136中物理配置数据表的内容,依据物理地址对应到的区块的编程模式,得知此闪存存储器操作命令需要使用何种模式进行读取。参考图12的使用案例,MPR-Lite调度数据表1200中第四栏的存储格用于记录读取平面810和/或平面830上数据的片段读取命令“a”及“f”;其中第五栏的存储格用于记录使用SLC模式读取平面850和/或平面870上数据的片段读取命令“h”及“i”;而其中第六栏的存储格用于记录使用QLC模式读取平面850和/或平面870上数据的片段读取命令“c”。
接续图11所述的排序结果,图13显示挑选闪存存储器操作命令的使用案例。例如,在一个批次中,处理器核心133-1驱动闪存接口137发送读取页面命令给LUN 150#0,用于读取片段读取命令“b”指定的物理地址的数据;发送读取页面多平面命令给LUN 150#4,用于读取片段读取命令“a”及“h”指定的物理地址的数据,发送读取页面多平面命令给LUN 150#1,用于读取片段读取命令“d”指定的物理地址的数据,以及发送片段读取命令给LUN 150#1,用于读取存储器操作命令“g”指定的物理地址的数据,以形成一个MPR-lite操作。
接续图12所述的排序结果,图14显示挑选存储器操作命令的使用案例。例如,在一个批次中,处理器核心133-1判断目标数据的编程为SLC模式,因此,驱动闪存接口137发送读取页面多平面命令给LUN 150#0,用于读取片段读取命令“b”指定的物理地址的数据;发送读取页面多平面命令给LUN 150#4,用于片段读取命令“a”及“h”指定的物理地址的数据,发送片段读取命令给LUN 150#1,用于读取片段读取命令“d”指定的物理地址的数据,以形成一个MPR-lite操作。
通过参考MPR-Lite调度数据表的排序结果,处理器核心133-1可逐批次执行如上所述的片段读取命令,但是,当处理器核心133-1改以MPR-Lite命令来读取多平面上页面的片段数据,不但可提升数据读取的效率,更提升片段读取操作的效率。在4K随机读取Q64/T4测试中,相较于片段读取命令,MPR-Lite命令可提升将近30~50%的平均读取数据命中率。一次读取的命中率定义为通过闪存接口137从LUN 150中读取数据被保留下来以回复给主机110的比例。例如,当片段读取命令读取的8K数据全部都保留下来以回复给主机110时,则这次读取的命中率为100%。当片段读取命令读取的8K数据只保留一半以回复给主机110时,则这次读取的命中率为50%。
本发明所述的方法中的全部或部分步骤可以计算器程序代码实现,例如计算机的操作***、计算机中特定硬件的驱动程序代码、或软件程序代码。此外,也可实现于如上所示的其他类型程序。所属技术领域中的技术人员可将本发明实施例的方法撰写成计算器程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算器程序可存储于适当的计算机可读取数据载体,例如DVD、CD-ROM、USB、硬盘,亦可置于可通过网络(例如,互联网,或其他适当载体)存取的网络服务器。
虽然图1中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图10的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不因此而局限。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用于限制本发明。相反地,此发明涵盖了所属技术领域中的技术人员显而易见的修改与相似设置。所以,本申请的保护范围当以权利要求所界定者的范围为准。
Claims (10)
1.一种多平面上的片段数据读取的计算机可读取存储介质,用于存储能够被处理单元执行的计算机程序代码,其特征在于,所述计算机程序代码被所述处理单元执行时实现以下步骤:
提供调度数据表;
将命令队列中的每个存储器操作命令依据所述存储器操作命令的物理地址信息安排到所述调度数据表中的一个存储格;
依据所述调度数据表的内容为逻辑单元号挑选两个或以上的存储器操作命令,其中每个所述挑选的存储器操作命令请求读取少于一个跨平面页面的长度的数据;
驱动闪存接口来完成多页面读取精简操作,从所述逻辑单元号读取所述挑选的存储器操作命令请求的数据;以及
回复读取的数据给主机。
2.如权利要求1所述的多平面上的片段数据读取的计算机可读取存储介质,其特征在于,所述多页面读取精简操作,包含:驱动所述闪存接口发送一个或多个读取页面多平面命令后发送片段读取命令给所述逻辑单元号,读取所述挑选的存储器操作命令指定的物理地址的数据。
3.如权利要求2所述的多平面上的片段数据读取的计算机可读取存储介质,其特征在于,所述读取页面多平面命令及所述片段读取命令分别用于读取不同跨平面页面上的片段数据。
4.如权利要求2所述的多平面上的片段数据读取的计算机可读取存储介质,其特征在于,所述读取页面多平面命令及所述片段读取命令运行在一个模式下。
5.如权利要求4所述的多平面上的片段数据读取的计算机可读取存储介质,其特征在于,所述模式为单层式单元、三层式单元或四层式单元模式。
6.一种多平面上的片段数据读取方法,由处理单元执行,其特征在于,该方法包含:
提供调度数据表;
将命令队列中的每个存储器操作命令依据所述存储器操作命令的物理地址信息安排到所述调度数据表中的一个存储格;
依据所述调度数据表的内容为逻辑单元号挑选两个或以上的存储器操作命令,其中每个所述挑选的存储器操作命令请求读取少于一个跨平面页面的长度的数据;
驱动闪存接口来完成多页面读取精简操作,从所述逻辑单元号读取所述挑选的存储器操作命令请求的数据;以及
回复读取的数据给主机。
7.如权利要求6所述的多平面上的片段数据读取方法,其特征在于,所述多页面读取精简操作,包含:驱动所述闪存接口发送一个或多个读取页面多平面命令后发送片段读取命令给所述逻辑单元号,读取所述挑选的存储器操作命令指定的物理地址的数据。
8.如权利要求7所述的多平面上的片段数据读取方法,其特征在于,所述读取页面多平面命令需要的等待数据就绪时间比所述片段读取命令需要的等待数据就绪时间短。
9.如权利要求6所述的多平面上的片段数据读取方法,其特征在于,所述调度数据表中的每一栏用于记录读取特定逻辑单元号中特定平面上的存储器操作命令的信息。
10.如权利要求6所述的多平面上的片段数据读取方法,其特征在于,所述调度数据表中的每一栏用于记录读取特定逻辑单元号中第一平面、第二平面并使用第一模式、或所述第二平面并使用第二模式的存储器操作命令的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/730,159 US11216189B2 (en) | 2019-04-01 | 2019-12-30 | Method and computer program product for reading partial data of a page on multiple planes |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962827317P | 2019-04-01 | 2019-04-01 | |
US62/827,317 | 2019-04-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111796759A true CN111796759A (zh) | 2020-10-20 |
CN111796759B CN111796759B (zh) | 2023-11-07 |
Family
ID=72805449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911076916.4A Active CN111796759B (zh) | 2019-04-01 | 2019-11-06 | 多平面上的片段数据读取的计算机可读取存储介质及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111796759B (zh) |
TW (1) | TWI737031B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112513988A (zh) * | 2020-11-06 | 2021-03-16 | 长江存储科技有限责任公司 | 伪异步多平面独立读取 |
CN114546289A (zh) * | 2022-02-27 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种读取数据的方法、***、设备以及介质 |
CN114546294A (zh) * | 2022-04-22 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种固态硬盘读方法、***及相关组件 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11756644B2 (en) | 2021-06-23 | 2023-09-12 | International Business Machines Corporation | Triage of multi-plane read requests |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040010612A1 (en) * | 2002-06-11 | 2004-01-15 | Pandya Ashish A. | High performance IP processor using RDMA |
US20130246732A1 (en) * | 2012-03-14 | 2013-09-19 | Phison Electronics Corp. | Method of programming memory cells and reading data, memory controller and memory storage apparatus using the same |
TW201346755A (zh) * | 2011-12-20 | 2013-11-16 | Intel Corp | 用於順序指令管線中的亂序預取指令的系統與方法 |
US20140149665A1 (en) * | 2012-11-29 | 2014-05-29 | Infinidat Ltd. | Storage System Capable of Managing a Plurality of Snapshot Families and Method of Operating Thereof |
US8924675B1 (en) * | 2010-09-24 | 2014-12-30 | Emc Corporation | Selective migration of physical data |
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
CN107589905A (zh) * | 2016-07-08 | 2018-01-16 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
-
2019
- 2019-11-06 TW TW108140180A patent/TWI737031B/zh active
- 2019-11-06 CN CN201911076916.4A patent/CN111796759B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040010612A1 (en) * | 2002-06-11 | 2004-01-15 | Pandya Ashish A. | High performance IP processor using RDMA |
US8924675B1 (en) * | 2010-09-24 | 2014-12-30 | Emc Corporation | Selective migration of physical data |
TW201346755A (zh) * | 2011-12-20 | 2013-11-16 | Intel Corp | 用於順序指令管線中的亂序預取指令的系統與方法 |
US20130246732A1 (en) * | 2012-03-14 | 2013-09-19 | Phison Electronics Corp. | Method of programming memory cells and reading data, memory controller and memory storage apparatus using the same |
US20140149665A1 (en) * | 2012-11-29 | 2014-05-29 | Infinidat Ltd. | Storage System Capable of Managing a Plurality of Snapshot Families and Method of Operating Thereof |
US9383942B2 (en) * | 2012-11-29 | 2016-07-05 | Infinidat Ltd. | Storage system capable of managing a plurality of snapshot families and method of operating thereof |
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
CN107589905A (zh) * | 2016-07-08 | 2018-01-16 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112513988A (zh) * | 2020-11-06 | 2021-03-16 | 长江存储科技有限责任公司 | 伪异步多平面独立读取 |
CN114546289A (zh) * | 2022-02-27 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种读取数据的方法、***、设备以及介质 |
CN114546289B (zh) * | 2022-02-27 | 2023-06-02 | 苏州浪潮智能科技有限公司 | 一种读取数据的方法、***、设备以及介质 |
CN114546294A (zh) * | 2022-04-22 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种固态硬盘读方法、***及相关组件 |
CN114546294B (zh) * | 2022-04-22 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种固态硬盘读方法、***及相关组件 |
Also Published As
Publication number | Publication date |
---|---|
TWI737031B (zh) | 2021-08-21 |
CN111796759B (zh) | 2023-11-07 |
TW202038097A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216189B2 (en) | Method and computer program product for reading partial data of a page on multiple planes | |
CN107844431B (zh) | 映射表更新方法、存储器控制电路单元与存储器存储装置 | |
US8429358B2 (en) | Method and data storage device for processing commands | |
US8054686B2 (en) | Flash memory storage apparatus, flash memory controller, and switching method thereof | |
EP2248023B1 (en) | Extended utilization area for a memory device | |
US8417875B2 (en) | Non-volatile memory controller processing new request before completing current operation, system including same, and method | |
US8762703B2 (en) | Boot partitions in memory devices and systems | |
CN111796759B (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
US10572379B2 (en) | Data accessing method and data accessing apparatus | |
CN111459844B (zh) | 数据储存装置及用于存取逻辑至物理地址映射表的方法 | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
US20130013853A1 (en) | Command executing method, memory controller and memory storage apparatus | |
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 | |
CN114371812B (zh) | 控制器及其操作方法 | |
CN115113799A (zh) | 主机命令的执行方法及装置 | |
KR20200114212A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US10776280B1 (en) | Data storage device and method for updating logical-to-physical mapping table | |
US11494113B2 (en) | Computer program product and method and apparatus for scheduling execution of host commands | |
CN109542336B (zh) | 存储设备及其操作方法 | |
CN113448487A (zh) | 写入闪存管理表的计算机可读取存储介质、方法及装置 | |
CN113495850A (zh) | 管理垃圾回收程序的方法、装置及计算机可读取存储介质 | |
US20240201902A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for executing host write commands | |
US20240202112A1 (en) | Method and non-transitory computer-readable storage medium and apparatus for executing host write commands | |
CN116149540A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |