CN110221986B - 闪存逻辑物理映射表的排序方法、系统以及其闪存 - Google Patents
闪存逻辑物理映射表的排序方法、系统以及其闪存 Download PDFInfo
- Publication number
- CN110221986B CN110221986B CN201910518684.7A CN201910518684A CN110221986B CN 110221986 B CN110221986 B CN 110221986B CN 201910518684 A CN201910518684 A CN 201910518684A CN 110221986 B CN110221986 B CN 110221986B
- Authority
- CN
- China
- Prior art keywords
- flash memory
- logical
- unit
- address
- logical addresses
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种闪存逻辑物理映射表的排序方法、系统以及其闪存,涉及存储数据处理技术领域。其闪存逻辑物理映射表的排序方法的技术要点包括将一一对应于闪存单元的若干单元链表初始化;依次计算逻辑地址对应的闪存单元序号;将逻辑地址添加至对应的闪存单元序号的单元链表上;全部逻辑地址添加完毕后,逐一处理各个单元链表的全部逻辑地址,本发明具有加快大数据下排序速度的优点。
Description
技术领域
本发明涉及存储数据处理技术领域,更具体地说,它涉及一种闪存逻辑物理映射表的排序方法、系统以及其闪存。
背景技术
闪存固件内部都会有一个映射表,用来映射逻辑地址到物理地址,即通过逻辑地址查找物理地址,再对实际的闪存单元做读写访问。但是同一片的物理地址在映射表中对应的逻辑地址常常是无序随机分布的,如果每个逻辑地址都更新一次物理单元,那都要进行一次物理地址的检索,效率极低。所以我们可以收集所有在这个物理区域内的逻辑地址,一次进行更新,减少物理地址的检索量。来提高效率。
现有的对物理地址更新的方式为通过逐一比较大小实现排序,排序所需要的步骤所要操作的次数为(n+3)*n/2+2n=(n^2)/2+3.5n,n表示逻辑地址组中的逻辑地址的个数,当操作次数随着n数量的增多呈幂函数级的增加;当处理大量数据排序时,处理效率低。
发明内容
针对现有的技术问题,本发明的第一目的在于提供一种闪存逻辑物理映射表的排序方法,其具有加快大数据下排序速度的优点。
为实现上述目的,本发明提供了如下技术方案:一种闪存逻辑物理映射表的排序方法,包括:
将一一对应于闪存单元的若干单元链表初始化;
依次计算逻辑地址对应的闪存单元序号;
将逻辑地址添加至对应的闪存单元序号的单元链表上;
全部逻辑地址添加完毕后,逐一处理各个单元链表的全部逻辑地址。
通过采用上述技术方案,假设设定m个闪存单元,需要更新的逻辑地址总数为n,由于单元链表一一对应闪存单元,因此单元链表的个数也为m。则初始化单元链表的操作次数为m次;计算逻辑地址对应的闪存单元序号需要对所有的逻辑地址都读一次写一次,总共2n次;将逻辑地址添加至对应的闪存单元序号的单元链表上需要对所有的逻辑地址都读一次写一次,总共2n次;最后依次将各个单元链表的全部逻辑地址写一次完成排序,总共n次。。因此使用本技术方案进行排序的过程,对数据的操作次数为m+5n次,整体的操作次数是呈线性增长的。因此在逻辑地址m的数量增大至较大数值,也能保持相同数量级的操作次数,具有加快大数据下排序速度的效果。
本发明进一步设置为:读取各个单元链表的开始节点和结束节点;分别构成启指针表和末指针表。
通过采用上述技术方案,通过获取启指针表和末指针表,通过比较获取,能够快速获得一个新的开始节点,也能在处于结束节点时快速跳转至下单元链表。
本发明进一步设置为:逐一处理各个单元链表的全部逻辑地址包括:
获取启指针表上未处理的开始节点;
逐一处理开始节点对应的单元链表中的逻辑地址;
当处理完毕的逻辑地址属于末指针表,则获取启指针表上下一未处理的开始节点或结束流程。
通过采用上述技术方案,基于开始节点开始处理单元链表,并在处理完结束节点后处理下一单元链表,加快了链表的处理效率。
本发明进一步设置为:通过将逻辑地址右移指定位数,获得对应的闪存单元序号。
通过采用上述技术方案,一般的逻辑地址包括从左至右依次包括闪存块地址、闪存页地址和存储元地址;通过右移能够减少逻辑地址位数,便于对逻辑地址分类。
本发明进一步设置为:所述闪存单元为闪存块。
通过采用上述技术方案,逻辑地址包括闪存块地址、闪存页地址和存储元地址,将闪存块作为闪存单元,能够将一个闪存块内的逻辑地址一起更新,提高效率。
本发明进一步设置为:所述闪存单元为闪存页。
通过采用上述技术方案,闪存页相较于闪存块更小,在逻辑地址的数据量大的时候,能够更加精准的将逻辑地址,提升更新效率。
本发明的第二目的在于提供一种闪存逻辑物理映射表的排序系统,其具有加快大数据下排序速度的优点。
为实现上述目的,本发明提供了如下技术方案:一种闪存逻辑物理映射表的排序系统,包括:
若干一一对应于闪存单元的单元链表;
用于计算逻辑地址对应的闪存单元序号的计算单元;
将逻辑地址添加至对应的闪存单元序号的单元链表上的匹配单元;
逐一处理各个单元链表的全部逻辑地址的处理单元。
本发明的第三目的在于提供一种闪存逻辑物理映射表的排序系统,其具有加快大数据下排序速度的优点。
为实现上述目的,本发明提供了如下技术方案:一种闪存,其特征在于:包括指令,所述指令用于第一目的所述的方法。
与现有技术相比,本发明的有益效果是:整体的操作次数是呈线性增长的。因此在逻辑地址的数量增大至较大数值,也能保持相同数量级的操作次数,具有加快大数据下排序速度的效果。
附图说明
图1为闪存逻辑物理映射表的排序方法的流程示意图;
图2为处理各个单元链表的全部逻辑地址的流程示意图;
图3为闪存逻辑物理映射表的排序系统的结构示意图。
附图标记:601、单元链表;602、计算单元;603、匹配单元;604、处理单元。
具体实施方式
下面结合附图和实施例,对本发明进行详细描述。
一种闪存逻辑物理映射表的排序方法,如图1所示,
S100、将一一对应于闪存单元的若干单元链表初始化;
闪存以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址,闪存块地址、闪存页地址和存储元地址。为了便于解释本实施方式中以:16块闪存块、64页闪存页以及2048存储元的闪存为参考例;则在此闪存中地址的二进制数应该为4位+6位+11位=21位,其中这21位的二进制数中首端4位代表闪存块地址、中间6位代表闪存页地址、尾端11位代表存储元地址。
在一个是实施例中闪存单元为闪存块。由于单元链表和闪存块地址一一对应;因此单元链表的数量等于闪存块地址中能够表达闪存块的数量。在上述例子中闪存块的数量为16块,那么闪存块对应的逻辑地址的前四位,单元链表对应设置为16个。
而在另一个实施例中闪存单元为闪存页。由于单元链表和闪存块地址一一对应;因此单元链表的数量等于闪存块地址中能够表达闪存块的数量。在上述例子中闪存页的数量为16*64=1024页,那么闪存页对应的逻辑地址为前十位,而单元链表对应设置为1024个。
上述闪存单元为闪存块的实施例,比较适应于在逻辑地址数量级不大于1000的情况下使用;而闪存页为闪存单元的比较适合于逻辑地址数量级超过1000的情况下使用。
S200、依次计算逻辑地址对应的闪存单元序号;
一般的逻辑地址包括从左至右依次包括闪存块地址、闪存页地址和存储元地址;通过将逻辑地址右移指定位数,获得对应的闪存单元序号。右移一般通过除以指定位数获得。以上述的参考例为例,若以闪存块为闪存单元则需要右移17位获得闪存块序号,如果以闪存页为闪存单元则需右移11位获得闪存页序号。
S300、将逻辑地址添加至对应的闪存单元序号的单元链表上;
将获得的闪存单元序号和单元链表逐一匹配,并添加至对应的闪存单元序号的单元链表。
具体的,在添加逻辑地址的过程中,还将读取各个单元链表的开始节点和结束节点;分别构成启指针表和末指针表。因此在单元链表中,每添加一个逻辑地址,则启指针表和末指针表都需要更新一次,保证数据同步。
S400、全部逻辑地址添加完毕后,逐一处理各个单元链表的全部逻辑地址。
当将所有的逻辑地址添加至单元链表后,需要逐一将排序后的逻辑地址进行处理。逐一处理各个单元链表的全部逻辑地址包括:获取启指针表上未处理的开始节点;
逐一处理开始节点对应的单元链表中的逻辑地址;
当处理完毕的逻辑地址属于末指针表,则获取启指针表上下一未处理的开始节点或结束流程。
具体的执行步骤,如图2所示:
S401、获取启指针表上未处理的开始节点;
S402、处理开始节点对应的单元链表中的逻辑地址;
S403、判断处理的逻辑地址是否属于末指针表,若否跳转至步骤S404,若是跳转至步骤S405;
S404、单元链表跳转至下一指针,并执行步骤S402;
S405、判断启指针表上是否存在未处理的开始节点若是跳转至步骤S401,若否结束流程。
类比假设例:
给定数据段大小,给定逻辑地址组,将逻辑地址组中的逻辑地址按照数据段大小进行分类,并按照数据段大小进行排序,输出排序后的逻辑地址所在下标。逻辑地址组:
A={0x406,0x315,0x368,0x916,0x608,0x429,0x631,0x362,0x414,0x309,0x752,0x876}
数据段大小:0x100;其中本假设例中,第一位表示闪存块地址,第二位表示闪存页地址、第三页表示储存元地址。本类比例中以闪存块为闪存单元。
其中闪存单元序号3的逻辑地址有:0x315(1),0x368(2),0x362(7),0x309(9);
闪存单元序号4的逻辑地址有:0x406(0),0x429(5),0x414(8);
闪存单元序号6的逻辑地址有:0x608(4),0x631(6);
闪存单元序号7的逻辑地址有:0x752(10);
闪存单元序号8的逻辑地址有:0x876(11);
闪存单元序号9的逻辑地址有:0x916(3);
上述()内为逻辑地址所在存储地址。
排序完逻辑地址组:
B={0x315,0x368,0x362,0x309,0x406,0x429,0x414,0x608,0x631,0x752,0x876,0x916},
对应存储地址C={0x01,0x02,0x07,0x09;0x00,0x05,0x08;0x04,0x06;0x0A;0x0B;0x03}。
硬件通常的实现方案:
T1、将逻辑地址组A中数据右移位8比特得到每个数据所对应的闪存单元序号,逻辑地址组闪存单元序号D{4,3,3,9,6,4,6,3,4,3,7,8};
T2、对逻辑地址组D中的数据进行排序,记录每个元素排序完的下标得到存储地址组C。
效率计算:步骤T1中对每个数据各读写一次,所以总共操作12*2=24次;步骤T2中对排序算法要用到13+12+11+10+9+8+7+6+5+4+3+2=(12+3)*12/2=90次操作。所以常规操作总共要对12个数据进行(12+3)*12/2+12*2=114次操作。得到效率计算的公式:
读写总次数=(n+3)*n/2+2n=(n^2)/2+3.5n
(n表示逻辑地址组A中的逻辑地址的个数)。
本方案实施方式:
S100、将一一对应于闪存单元的单元链表初始化;
每个单元链表初始化一次;为了简化操作,当单元链表初始化时,仅初始化开始节点,因此十六个单元链表一共需要初始化十六次。
S200、依次计算逻辑地址对应的闪存单元序号;
将逻辑地址组A中数据右移位8比特得到每个数据所对应的闪存单元序号,逻辑地址组闪存单元序号D{4,3,3,9,6,4,6,3,4,3,7,8};
S300、将逻辑地址添加至对应的闪存单元序号的单元链表上;
将获得的闪存单元序号和单元链表逐一匹配,并添加至对应的闪存单元序号的单元链表。
生成包括:
启指针表:
末指针表:
存储地址指针表:
S400、全部逻辑地址添加完毕后,逐一处理各个单元链表的全部逻辑地址。
获得对应存储地址C={0x01,0x02,0x07,0x09;0x00,0x05,0x08;0x04,0x06;0x0A;0x0B;0x03}。
假设设定16个闪存单元,需要更新的逻辑地址总数为12。由于单元链表一一对应闪存单元,因此单元链表的个数也为16。则初始化单元链表的操作次数为16次;计算逻辑地址对应的闪存单元序号需要对所有的逻辑地址都读一次写一次,总共24次;将逻辑地址添加至对应的闪存单元序号的单元链表上需要对所有的逻辑地址都写一次读一次,总共24次;最后依次将各个单元链表的全部逻辑地址写一次完成排序,总共12次。因此使用本技术方案进行排序的过程,对数据的操作次数为76次。得到效率计算的公式:
读写总次数=5n+m
(n表示逻辑地址组A中的逻辑地址的个数,m表示闪存单元数量)。
通常实现方式的操作次数根据逻辑地址组A中的逻辑地址的个数成幂函数式增长;而本方案实施方式操作次数是根据逻辑地址组A中的逻辑地址的个数呈线性增长的。因此在逻辑地址组A中的逻辑地址的个数n的数量增大至较大数值,也能保持相同数量级的操作次数,具有加快大数据下排序速度的效果。
一种闪存逻辑物理映射表的排序系统,包括:
单元链表601,一一对应于闪存单元;
计算单元602,用于执行上述的步骤S200;
匹配单元603,用于执行上述的步骤S300;
处理单元604,用于执行上述的步骤S400。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读移动式存储设备中,上述提到的移动式存储设备可以是闪存。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (5)
1.一种闪存逻辑物理映射表的排序方法,其特征在于:包括:
将一一对应于闪存单元的若干单元链表初始化;
依次计算逻辑地址对应的闪存单元序号;
将逻辑地址添加至对应的闪存单元序号的单元链表上;将获得的闪存单元序号和单元链表逐一匹配,并添加至对应的闪存单元序号的单元链表;在添加逻辑地址的过程中,读取各个单元链表的开始节点和结束节点;分别构成启指针表和末指针表;
全部逻辑地址添加完毕后,逐一处理各个单元链表的全部逻辑地址;
逐一处理各个单元链表的全部逻辑地址包括:
获取启指针表上未处理的开始节点;逐一处理开始节点对应的单元链表中的逻辑地址;当处理完毕的逻辑地址属于末指针表,则获取启指针表上下一未处理的开始节点或结束流程。
2.根据权利要求1所述的闪存逻辑物理映射表的排序方法,其特征在于:通过将逻辑地址右移指定位数,获得对应的闪存单元序号。
3.根据权利要求1所述的闪存逻辑物理映射表的排序方法,其特征在于:所述闪存单元为闪存块。
4.根据权利要求1所述的闪存逻辑物理映射表的排序方法,其特征在于:所述闪存单元为闪存页。
5.一种闪存,其特征在于:包括指令,所述指令用于执行权利 要求1至4任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910518684.7A CN110221986B (zh) | 2019-06-15 | 2019-06-15 | 闪存逻辑物理映射表的排序方法、系统以及其闪存 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910518684.7A CN110221986B (zh) | 2019-06-15 | 2019-06-15 | 闪存逻辑物理映射表的排序方法、系统以及其闪存 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110221986A CN110221986A (zh) | 2019-09-10 |
CN110221986B true CN110221986B (zh) | 2021-11-16 |
Family
ID=67817217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910518684.7A Active CN110221986B (zh) | 2019-06-15 | 2019-06-15 | 闪存逻辑物理映射表的排序方法、系统以及其闪存 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110221986B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631952A (zh) * | 2020-12-25 | 2021-04-09 | 上海威固信息技术股份有限公司 | 一种固态硬盘冷热数据分离方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329656A (zh) * | 2008-05-06 | 2008-12-24 | 无锡紫芯集成电路系统有限公司 | 一种Nand-Flash存储系统的管理方法 |
CN106201906A (zh) * | 2016-07-11 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种用于闪存的冷热数据分离方法及系统 |
CN108959121A (zh) * | 2018-07-20 | 2018-12-07 | 江苏华存电子科技有限公司 | 一种利用虚拟闪存块表提升闪存快速回拷方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571275B2 (en) * | 2005-08-31 | 2009-08-04 | Hamilton Sundstrand Corporation | Flash real-time operating system for small embedded applications |
US8880776B2 (en) * | 2008-12-16 | 2014-11-04 | Sandisk Il Ltd. | Data access at a storage device using cluster information |
US8516219B2 (en) * | 2009-07-24 | 2013-08-20 | Apple Inc. | Index cache tree |
CN104679440B (zh) * | 2013-11-29 | 2017-11-10 | 深圳市国微电子有限公司 | 一种闪存阵列管理方法及装置 |
-
2019
- 2019-06-15 CN CN201910518684.7A patent/CN110221986B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329656A (zh) * | 2008-05-06 | 2008-12-24 | 无锡紫芯集成电路系统有限公司 | 一种Nand-Flash存储系统的管理方法 |
CN106201906A (zh) * | 2016-07-11 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种用于闪存的冷热数据分离方法及系统 |
CN108959121A (zh) * | 2018-07-20 | 2018-12-07 | 江苏华存电子科技有限公司 | 一种利用虚拟闪存块表提升闪存快速回拷方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110221986A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090012976A1 (en) | Data Tree Storage Methods, Systems and Computer Program Products Using Page Structure of Flash Memory | |
JP4424965B2 (ja) | 不揮発性メモリシステム内においてアウトオブシーケンス書き込みプロセスを効果的に可能にするための方法および装置 | |
US7523288B2 (en) | Dynamic fragment mapping | |
CN107622020B (zh) | 一种数据存储方法、访问方法及装置 | |
CN107526540B (zh) | 数据储存装置及其数据维护方法 | |
CN107092566B (zh) | 数据储存装置及其数据维护方法 | |
CN108304409B (zh) | 一种基于进位的Sketch数据结构的数据频度估计方法 | |
TWI614605B (zh) | 資料儲存裝置及其資料維護方法 | |
US20200265045A1 (en) | Technologies for refining stochastic similarity search candidates | |
CN109426482B (zh) | 用于在关联存储器中进行最小值-最大值计算的方法 | |
CN112085644B (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
CN108804204A (zh) | 多线程并行构造后缀数组的方法及系统 | |
CN110221986B (zh) | 闪存逻辑物理映射表的排序方法、系统以及其闪存 | |
US11989553B2 (en) | Technologies for performing sparse lifting and procrustean orthogonal sparse hashing using column read-enabled memory | |
US8515976B2 (en) | Bit string data sorting apparatus, sorting method, and program | |
CN111142794A (zh) | 一种数据分类存储的方法、装置、设备及存储介质 | |
CN106708422A (zh) | 数据储存装置及其数据维护方法 | |
CN116665772B (zh) | 一种基于内存计算的基因组图分析方法、装置和介质 | |
CN106775586A (zh) | 数据排序方法和装置 | |
CN113900622B (zh) | 一种基于fpga的数据信息快速排序方法、系统、设备及存储介质 | |
Chen et al. | An FPGA aligner for short read mapping | |
CN108595508B (zh) | 一种基于后缀数组的自适应索引构建方法及系统 | |
CN112802556A (zh) | 一种针对测序数据的多标记序列并行识别的加速器装置 | |
US20150339225A1 (en) | Memory management method, memory storage device and memory control circuit unit | |
JP5143797B2 (ja) | ビット列データソート装置、ソート方法及びプログラム |
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 |