CN103425600A - 一种固态盘闪存转换层中的地址映射方法 - Google Patents
一种固态盘闪存转换层中的地址映射方法 Download PDFInfo
- Publication number
- CN103425600A CN103425600A CN2013103715571A CN201310371557A CN103425600A CN 103425600 A CN103425600 A CN 103425600A CN 2013103715571 A CN2013103715571 A CN 2013103715571A CN 201310371557 A CN201310371557 A CN 201310371557A CN 103425600 A CN103425600 A CN 103425600A
- Authority
- CN
- China
- Prior art keywords
- lpn
- page number
- mapping relations
- buffer memory
- length
- 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
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种固态盘闪存转换层中的地址映射方法,其实施步骤如下:1)预先在SRAM中建立缓存映射表、缓存分裂表、缓存转换表和全局转换目录;2)接收IO请求,若为写请求跳转步骤3),否则跳转步骤4);3)优先在SRAM的表格中依次查找当前IO请求的命中情况,根据命中的映射信息完成写操作,并根据命中类型及阀值大小对映射信息进行缓存;4)优先在SRAM的表格中查找当前IO请求的命中情况,通过SRAM中命中的映射信息来完成读操作。本发明具有能够提高固态盘随机写性能的同时延长固态盘的使用寿命、闪存转换层效率高、SRAM内地址映射信息的命中率高、SRAM与固态盘Flash之间额外的读写操作少的优点。
Description
技术领域
本发明涉及固态盘存储技术领域,具体涉及一种固态盘闪存转换层中的地址映射方法。
背景技术
基于NAND Flash的固态盘(Solid State Drive,SSD)是一种非易失的计算机存储设备,其凭借低延迟、低功耗、高可靠性等优势,能够有效提升存储系统的性能。在企业级和消费级存储领域,固态盘正逐渐取代传统的机械硬盘,高性能固态盘系统的开发已成为当前存储领域的研究热点。
NAND Flash有读、写、擦除三种基本操作,其主要特征描述如下:
1.写前擦除机制,即对一个已写入数据的数据块重新写入新数据时,NAND Flash不能像磁盘一样直接更新原数据块,而需要将该数据块进行擦除后再重新写入新的数据。
2.单个存储单元的擦除次数有限,即NAND Flash内的每个数据块(Block)的擦除次数是有限制的,超过该擦除次数后,不能确保再次存入该数据块内数据的完整性和正确性。
3.NAND Flash以页(page)为基本读写单位,而擦除操作的基本单位是数据块。假如被擦除的数据块中还有有效数据页,则在擦除数据块之前需要这些有效页回收,写入其他位置后再执行该擦除操作,该策略严重影响了基于NAND Flash的固态盘的随机写性能。
对NAND Flash大量的随机写操作和擦除操作会导致SSD整体性能降低,造成SSD的主要性能瓶颈,这些瓶颈限制了基于NAND Flash的固态盘的迅速推广应用。
为解决以上问题,现有技术在固态盘中引入介于文件系统和底层闪存阵列之间的闪存转换层(Flash Translation Layer,FTL)。FTL的目标是将固态盘内的闪存阵列封装成一个和硬盘一样的块设备,隐藏擦除操作,为上层文件系统提供和硬盘一样的接口,从而保证现有文件系统对SSD的兼容性,并屏蔽NAND Flash的写前擦除以及其他特性。FTL的主要功能包括地址映射、垃圾回收、磨损均衡等。其中,地址映射将来自文件系统的读写请求的逻辑地址转换成固态盘内的物理地址,可以实现数据的异地更新策略并提高闪存的读写性能和使用寿命,是FTL中最重要的功能。垃圾回收是在被触发时对被选中进行擦除的块中有效数据页回收。磨损均衡策略可以保证固态盘内所有块的擦除次数相对均衡,避免一部分块擦除次数超过其寿命而影响固态盘整体性能。FTL的现有地址映射方式主要有页映射、块映射和混合映射等机制。其中页映射机制以页为基本映射粒度,在固态盘内的SRAM(静态随机存储器)中维持一个页映射表,可以将一个逻辑页映射到固态盘内任何一个物理页,以保证地址映射的效率,是目前最灵活,性能最优的地址映射方式。但随着固态盘容量的增加,需要更大的SRAM存储空间来存储更大的页映射表,造成成本增加。因此,现有固态盘的设计通常是将整个页映射表存放在NAND Flash中,根据需要选择性地读取需要的地址映射信息并缓存到SRAM中。
如图1所示,固态盘闪存转换层的主要功能包括地址映射、垃圾回收、磨损均衡等。地址映射将来自文件系统的读写请求的逻辑地址转换成固态盘内的物理地址,可以实现数据的异地更新策略并提高闪存的读写性能和使用寿命,是闪存转换层中最重要的功能。垃圾回收是在被触发时对被选中进行擦除的块中有效数据页回收。磨损均衡策略可以保证固态盘内所有块的擦除次数相对均衡,避免一部分块擦除次数超过其寿命而影响固态盘整体性能。
目前已有的页映射方法虽然可以有效缓解对于缓存空间的需求,但是由此引入的缓存与Flash之间因为地址映射未命中而产生的额外读写操作严重影响了固态盘整体性能。如何提高缓存内地址映射信息的命中率,并减少由于地址映射信息而导致的额外的读写操作对固态盘整体性能的影响至关重要。NAND Flash的特点决定了其读写性能是与负载相关的,在不同的负载下,固态盘的读写性能不同。因此如何根据NAND Flash的特点,有效利用负载的时间局部性原理和空间局部性原理,来提高页映射信息在SRAM缓存内的命中率,最终提高闪存转换层效率,已经成为一项亟待解决的关键技术问题,现有技术尚未有同时协同利用负载时间局部性原理和空间局部性原理提高闪存转换层效率的有效设计方法。
发明内容
本发明要解决的技术问题是提供一种能够提高固态盘随机写性能的同时延长固态盘使用寿命、闪存转换层效率高、SRAM内地址映射信息的命中率高、SRAM与NAND Flash之间额外的读写操作少的固态盘闪存转换层中的地址映射方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种固态盘闪存转换层中的地址映射方法,其特征在于实施步骤如下:
1)预先在固态盘的SRAM中建立缓存映射表、缓存分裂表、缓存转换表和全局转换目录,所述缓存映射表、缓存分裂表均具有起始逻辑页号、起始物理页号、长度共三个表项字段,所述缓存转换表具有逻辑页号和物理页号共两个表项字段,所述全局转换目录具有逻辑页号、逻辑页号在固态盘Flash中存放的物理页号共两个表项字段;
2)接收来自文件系统的当前IO请求,如果当前IO请求为写请求则跳转执行步骤3),否则跳转执行步骤4);
3)检查当前IO请求的所有逻辑页在缓存映射表中的命中情况,如果完全命中则跳转执行步骤3.1);如果部分命中则跳转执行步骤3.2);如果未命中则跳转执行步骤3.4);
3.1)生成两个长度不小于0的额外的子映射关系,所述第一个子映射关系包括起始逻辑页号、起始物理页号、长度三项,在对第一个子映射关系赋值时,起始逻辑页号被赋值为缓存映射表中命中映射关系表项的起始逻辑页号,起始物理页号被赋值为缓存映射表中命中映射关系表项的物理页号,长度被赋值为当前IO请求的起始逻辑页号减去缓存映射表中命中映射关系表项的起始逻辑页号得到的差值;第二个子映射关系包括起始逻辑页号、起始物理页号、长度三项,在对第二个子映射关系赋值时,起始逻辑页号被赋值为当前IO请求的起始逻辑页号与当前IO请求的长度的和,起始物理页号被赋值为缓存映射表中命中映射关系表项的物理页号与第二个子映射关系的起始逻辑页号相加后再减去缓存映射表中命中映射关系表项的起始逻辑页号得到的差值,长度被赋值为缓存映射表中命中映射关系表项的起始逻辑页号与缓存映射表中命中映射关系表项的长度相加后再减去第二个子映射关系的起始逻辑页号得到的差值;将当前IO请求的长度赋值为0、起始逻辑页号赋值为-1;跳转执行步骤3.3);
3.2)将当前IO请求根据缓存映射表映射关系表项中满足命中的范围分裂为两个子请求,所述两个子请求均包含起始逻辑页号和长度两项,第一个子请求的起始逻辑页号为当前IO请求的起始逻辑页号,第一个子请求的长度为缓存映射表的映射关系表项中满足命中部分的长度,第二个子请求的起始逻辑页号为当前IO请求的起始逻辑页号与缓存映射表的映射关系表项中满足命中部分的长度的和,第二个子请求的长度为当前IO请求的长度减去缓存映射表的映射关系表项中满足命中部分的长度得到的差值,其中缓存映射表的映射关系表项中满足命中部分的长度的值为缓存映射表中命中映射关系表项的起始逻辑页号加上缓存映射表中命中映射关系表项的长度后减去当前IO请求的起始逻辑页号得到的差值,将其中不能够满足的第二个子请求作为新的IO请求跳转执行步骤3),生成一个长度不小于0的额外的子映射关系,所述子映射关系包括起始逻辑页号、起始物理页号、长度三项,所述子映射关系的起始逻辑页号为缓存映射表中命中映射关系表项的起始逻辑页号,所述子映射关系的起始物理页号为缓存映射表中命中映射关系表项的起始物理页号,所述子映射关系的长度为缓存映射表中命中映射关系表项的长度减去缓存映射表的映射关系表项中满足命中部分的长度得到的差值,其中缓存映射表的映射关系表项中满足命中部分的长度的值为缓存映射表中命中映射关系表项的起始逻辑页号加上缓存映射表中命中映射关系表项的长度后减去当前IO请求的起始逻辑页号得到的差值;将当前IO请求的长度在原值的基础上减去缓存映射表的映射关系表项中满足命中部分的长度,将当前IO请求的起始逻辑页号在原值的基础上加上缓存映射表的映射关系表项中满足命中部分的长度,其中缓存映射表的映射关系表项中满足命中部分的长度的值为缓存映射表中命中映射关系表项的起始逻辑页号加上缓存映射表中命中映射关系表项的长度后再减去当前IO请求的起始逻辑页号得到的差值;最终跳转执行步骤3.3);
3.3)检查生成的子映射关系的长度是否大于或等于预设的阀值,如果大于或等于预设的阀值,则将所述子映射关系缓存到缓存分裂表中,否则将所述子映射关系写回固态盘的Flash中,最终跳转执行步骤3.5);
3.4)检查当前IO请求的所有逻辑页在缓存分裂表中的命中情况,如果完全命中则跳转执行步骤3.4.1),如果部分命中则跳转执行步骤3.4.2),如果未命中则跳转执行步骤3.4.3);
3.4.1)生成两个长度不小于0的额外的子映射关系,所述第一个子映射关系包括起始逻辑页号、起始物理页号、长度三项,在对第一个子映射关系赋值时,起始逻辑页号被赋值为缓存分裂表中命中映射关系表项的起始逻辑页号,起始物理页号被赋值为缓存分裂表中命中映射关系表项的起始物理页号,长度被赋值为当前IO请求的起始逻辑页号减去缓存分裂表中命中映射关系表项的起始逻辑页号得到的差值;第二个子映射关系包括起始逻辑页号、起始物理页号、长度三项,在对第二个子映射关系赋值时,起始逻辑页号被赋值为当前IO请求的起始逻辑页号与当前IO请求的长度的和,起始物理页号被赋值为缓存分裂表中命中映射关系表项的起始物理页号与第二个子映射关系的起始逻辑页号相加后再减去缓存分裂表中命中映射关系表项的起始逻辑页号得到的差值,长度被赋值为缓存分裂表中命中映射关系表项的起始逻辑页号与缓存分裂表中命中映射关系表项的长度相加后再减去第二个子映射关系的起始逻辑页号得到的差值;将当前IO请求的长度赋值为0、起始逻辑页号赋值为-1;跳转执行步骤3.4.4);
3.4.2)将当前IO请求根据缓存映射表映射关系表项中满足命中的范围分裂为两个子请求,所述两个子请求均包含起始逻辑页号和长度两项,第一个子请求的起始逻辑页号为当前IO请求的起始逻辑页号,第一个子请求的长度为缓存分裂表的映射关系表项中满足命中部分的长度,第二个子请求的起始逻辑页号为当前IO请求的起始逻辑页号与缓存分裂表的映射关系表项中满足命中部分的长度的和,第二个子请求的长度为当前IO请求的长度减去缓存分裂表的映射关系表项中满足命中部分的长度得到的差值,其中缓存分裂表的映射关系表项中满足命中部分的长度的值为缓存分裂表中命中映射关系表项的起始逻辑页号加上缓存分裂表中命中映射关系表项的长度后减去当前IO请求的起始逻辑页号得到的差值,将其中不能够满足的第二个子请求作为新的IO请求跳转执行步骤3),生成一个长度不小于0的额外的子映射关系,所述子映射关系包括起始逻辑页号、起始物理页号、长度三项,所述子映射关系的起始逻辑页号为缓存分裂表中命中映射关系表项的起始逻辑页号,所述子映射关系的起始物理页号为缓存分裂表中命中映射关系表项的起始物理页号,所述子映射关系的长度为缓存分裂表中命中映射关系表项的长度减去缓存分裂表的映射关系表项中满足命中部分的长度得到的差值,其中缓存分裂表的映射关系表项中满足命中部分的长度的值为缓存分裂表中命中映射关系表项的起始逻辑页号加上缓存分裂表中命中映射关系表项的长度后减去当前IO请求的起始逻辑页号得到的差值;将当前IO请求的长度在原值的基础上减去缓存分裂表的映射关系表项中满足命中部分的长度,将当前IO请求的起始逻辑页号在原值的基础上加上缓存分裂表的映射关系表项中满足命中部分的长度,其中缓存分裂表的映射关系表项中满足命中部分的长度的值为缓存分裂表中命中映射关系表项的起始逻辑页号加上缓存分裂表中命中映射关系表项的长度后再减去当前IO请求的起始逻辑页号得到的差值;跳转执行步骤3.4.4);
3.4.3)判断当前IO请求的起始逻辑页号是否在缓存转换表中命中,如果命中,则所述起始逻辑页号对应的物理页号即为缓存转换表中命中表项的物理页号,执行对逻辑页号为所述起始逻辑页的物理页的写操作,根据将当前IO请求的起始逻辑页号加1、长度减1,并用新的起始逻辑页号和长度将当前IO请求的剩余长度作为长度组成新的IO请求,跳转执行步骤3.5);如果未命中,则将原缓存转换表中的地址转换页写入固态盘的Flash,并根据当前IO请求的起始逻辑页号计算出对应地址映射信息所在地址转换页的逻辑页号,在全局转换目录中找到该地址转换页的物理页号,从固态盘的Flash中读取包含该起始逻辑页号的地址转换页内的所有地址映射关系并写入缓存转换表,然后跳转执行步骤3.4.3);
3.4.4)检查生成的子映射关系的长度是否大于或等于预设的阀值,如果大于或等于预设的阀值,则将所述子映射关系缓存到缓存分裂表中,否则将所述子映射关系写回固态盘的Flash中;跳转执行步骤3.5);
3.5)判断当前IO请求的长度是否大于0,如果是则跳转执行步骤3),否则检查缓存映射表中是否有空闲表项;如果有空闲表项,则跳转执行步骤3.6);如果无空闲表项,则从缓存映射表中选择并移除最近最少使用的一个映射关系表项,判断所述映射关系表项的长度是否大于预设的阀值,如果大于预设的阀值则将所述映射关系表项的映射关系缓存到缓存分裂表中,跳转执行步骤3.6),否则将所述映射关系表项的映射关系写回固态盘的Flash中,跳转执行步骤3.6);
3.6)将当前IO请求完成对固态盘Flash中数据块的写操作的起始物理页号、新写入的起始物理页号、长度组成的映射关系缓存到缓存映射表中最前端,跳转执行步骤5);
4)判断当前IO请求的起始逻辑页号是否在缓存映射表中命中,如果命中则根据缓存映射表中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为所述起始逻辑页号的页的读操作,跳转执行步骤4.1);如果未命中则跳转执行步骤4.2);
4.1)设置当前IO请求的起始逻辑页号加1、长度减1,将被命中的表项移动到缓存映射表的最前端,然后判断当前IO请求的长度是否大于0,如果长度仍大于0则跳转执行步骤4),否则跳转执行步骤5);
4.2)判断当前IO请求的起始逻辑页号是否在缓存分裂表中命中,如果命中则跳转执行步骤4.2.1),否则如果未命中,跳转执行步骤4.2.2);
4.2.1)根据缓存分裂表中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为所述起始逻辑页号的页的读操作,跳转执行步骤4.2.3);
4.2.2)判断当前IO请求的起始逻辑页号是否在缓存转换表中命中,如果命中则根据缓存转换表中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为所述起始逻辑页号的页的读操作,跳转执行步骤4.2.3);如果未命中,则将原缓存转换表中的地址转换页写入固态盘的Flash,根据当前IO请求的起始逻辑页号计算出其所对应的地址映射信息所在的地址转换页的逻辑页号,在全局转换目录中找到该地址转换页的物理页号,并从固态盘的Flash中读取包含该读请求起始逻辑页号的地址转换页内的所有地址映射关系,然后返回执行步骤4.2.2);
4.2.3)检查缓存映射表中是否有空闲表项,如果有空闲表项,则跳转执行步骤4.1);如果无空闲表项,则从缓存映射表中选择并移除最近最少使用的一个映射关系表项,判断所述映射关系表项的长度是否大于预设的阀值,如果大于预设的阀值则将所述映射关系表项缓存到缓存分裂表中,跳转执行步骤4.1);否则,将所述映射关系表项的映射关系写回固态盘的Flash中,跳转执行步骤4.1);
5)当前IO请求的任务结束,退出。
作为本发明上述技术方案的进一步改进:
所述将映射关系缓存到缓存分裂表中的详细步骤如下:
A1)判断缓存分裂表是否有空闲表项,如果有空闲表项则跳转执行步骤A3),如果缓存分裂表已达到最大长度,则跳转执行步骤A2);
A2)将缓存分裂表中最近最少使用的映射关系表项从缓存分裂表中移除,并将所述映射关系表项写回到相应的地址转换页中,跳转执行步骤A3);
A3)将待缓存的映射关系缓存到缓存分裂表中并将放至缓存分裂表的最前端。
所述将映射关系写回固态盘的Flash中的详细步骤如下:
B1)判断待写回映射关系的起始逻辑页号是否在缓存转换表中命中,如果未命中,则进入步骤B2),否则跳转至步骤B3);
B2)将当前缓存转换表中的缓存的地址转换页内的所有地址映射信息作为一个完整的页写回Flash中一个新的地址转换页中,将待写回映射关系的起始逻辑页号所在的地址转换页内的所有地址映射信息读入SRAM并缓存在缓存转换表中,跳转至步骤B3);
B3)将逻辑页号为待写回映射关系的起始逻辑页号的映射信息写入缓存转换页中对应的映射关系中;
B4)待写回映射关系的起始逻辑页号加1,待写回映射关系的长度加1;
B5)判断待写回映射关系的长度是否大于0,如果大于0则跳转执行步骤B1),否则执行步骤B6);
B6)将地址映射信息写入固态盘的Flash中,过程结束。
本发明固态盘闪存转换层中的地址映射方法具有下述技术效果:
1、本发明在固态盘SRAM中设计了缓存映射表、缓存分裂表、缓存转换表和全局转换目录,通过“缓存映射表—缓存分裂表—地址转换页”所构成的两级选择性缓存策略,能够提高地址映射信息的命中率,能够保证在缓存空间一定的情况下缓存尽可能多的映射信息,从而有效提高对于随机读写请求的命中率,尤其对固态盘的随机写性能有较大改善。
2、本发明实现了对负载的时间局部性和空间局部性原理的有效协同利用。缓存分裂表中缓存的映射信息保证了因异地更新而导致分裂操作产生的子映射串的有效缓存,对空间局部性强的负载可以提高地址映射信息的命中率,同时保证了不破坏缓存映射表中原有的基于时间局部性所缓存的映射信息的完整性和有效性。
3、本发明采用地址转换页作为缓存与固态盘的Flash之间信息交换的基本单位,对顺序读请求和顺序写请求,都可以有效减少因地址映射而导致的额外读写操作,进而减少对地址转换页的更新次数,有效减少垃圾回收次数、延长Flash使用寿命并提高缓存命中率。
附图说明
图1为现有技术固态盘的逻辑结构示意图。
图2为本发明实施例SRAM的缓存空间数据结构示意图。
图3为本发明实施例中执行写请求的流程示意图。
图4为本发明实施例中执行读请求的流程示意图。
图5为本发明实施例中将被替换出缓存的映射关系写回Flash的流程示意图。
具体实施方式
本实施例固态盘闪存转换层中的地址映射方法的实施步骤如下:
1)预先在固态盘的SRAM中建立缓存映射表(Cached Mapping Table,CMT)、缓存分裂表(Cached Split Table,CST)、缓存转换表(Cached Translation Table,CTT)和全局转换目录(GlobalTranslation Directory,GTD),缓存映射表CMT、缓存分裂表CST均具有起始逻辑页号(LogicalPage Number,LPN)、起始物理页号(Physical Page Number,PPN)、长度(SIZE)共三个表项字段,缓存转换表CTT具有逻辑页号DLPN和物理页号DPPN共两个表项字段,全局转换目录GTD具有逻辑页号MLPN、逻辑页号MLPN在固态盘Flash中存放的物理页号MPPN共两个表项字段。
如图2所示,本实施例预先在固态盘SRAM中建立缓存映射表CMT、缓存分裂表CST、缓存转换表CTT和全局转换目录GTD,并预先设置一个阀值threshold。缓存映射表和缓存分裂表具有三个表项:起始逻辑页号LPN、起始物理页号PPN、长度SIZE,其中长度SIZE指明了该映射关系中以该逻辑页号为起始页的一组起始逻辑页号和起始物理页号都连续的页的数量,长度SIZE的大小表示该映射关系的映射范围;缓存映射表CMT用于记录处于活跃状态的页映射关系,缓存分裂表主要用于记录缓存映射表中某些页映射由于部分更新分裂而成的子页映射关系;缓存转换表CTT具有两个表项:逻辑页号DLPN和物理页号DPPN,主要用于缓存从Flash(NAND Flash)中读入缓存的某个地址转换页,该地址转换页中包含了当前所需要的某个逻辑页对应的所有映射关系;全局转换目录GTD用来记录所有逻辑页对应地址映射信息在Flash中存放的物理页号,其具有MLPN和MPPN两个表项,用于存储逻辑页MLPN的目录入口(Directory Entries);阀值threshold则用来决定哪些从缓存映射表中被替换出来的映射关系或者因分裂操作而产生的子映射关系进入缓存分裂表;Flash内的存储块主要划分为数据块(Data Block)和转换块(Translation Block),Flash中数据块占据绝大部分,主要用来存储数据,转换块只占据小部分Flash空间,用来存储数据块中的所有逻辑页地址到物理页地址之间的地址映射关系。
2)接收来自文件系统的当前IO请求,IO请求携带的信息包括该IO请求的请求类型、起始逻辑页号LPN、长度SIZE。如果当前IO请求为写请求则跳转执行步骤3),否则跳转执行步骤4)。
如图3所示,本实施例中写请求的执行步骤如步骤3)~3.6)所示。
3)检查当前IO请求的所有逻辑页在缓存映射表CMT中的命中情况,如果完全命中则跳转执行步骤3.1);如果部分命中则跳转执行步骤3.2);如果未命中则跳转执行步骤3.4)。
本实施例中检查当前IO请求的所有逻辑页在缓存映射表CMT中的命中情况时,首先判断该起始逻辑页号是否在缓存映射表CMT中命中,此处命中是指该起始逻辑页号在缓存映射表CMT中某个映射关系所表示的映射范围之内,即判断该请求的起始逻辑页号是否在(LPN,LPN+SIZE-1)区间内,可以得到命中和未命中共两种结果。对命中的结果,则通过再判断该命中的地址映射信息表示的范围是否包含此IO请求的所有逻辑页,则可得到完全命中或者部分命中共两种结果。假设被命中的映射关系为(CMTLPN,CMTPPN,CMTSIZE),根据请求的SIZE以及缓存映射表CMT中命中的映射串的信息,判断该请求在CMT中命中的类型,即该命中的地址映射信息表示的范围是否包含此IO请求的所有逻辑页。如果LPN+SIZE-1小于CMTLPN+CMTSIZE则是完全命中,反之就是部分命中。
3.1)生成两个长度不小于0的额外的子映射关系,第一个子映射关系(subset1_lpn,subset1_ppn,subset1_length)包括起始逻辑页号subset1_lpn、起始物理页号subset1_ppn、长度subset1_length三项,在对第一个子映射关系赋值时,起始逻辑页号subset1_lpn被赋值为缓存映射表中命中映射关系表项的起始逻辑页号CMTLPN(subset1_lpn=CMTLPN),起始物理页号subset1_ppn被赋值为缓存映射表中命中映射关系表项的起始物理页号CMTPPN(subset1_ppn=CMTPPN),长度subset1_length被赋值为当前IO请求的起始逻辑页号LPN减去缓存映射表中命中映射关系表项的起始逻辑页号CMTLPN得到的差值(subset1_length=LPN-CMTLPN);第二个子映射关系(subset2_lpn,subset2_ppn,subset2_length)包括起始逻辑页号subset2_lpn、起始物理页号subset2_ppn、长度subset2_length三项,在对第二个子映射关系赋值时,起始逻辑页号subset2_lpn被赋值为当前IO请求的起始逻辑页号LPN与当前IO请求的长度SIZE的和(subset2_lpn=LPN+SIZE),起始物理页号subset2_ppn被赋值为缓存映射表中命中映射关系表项的起始物理页号CMTPPN与第二个子映射关系的起始逻辑页号subset2_lpn相加后再减去缓存映射表中命中映射关系表项的起始逻辑页号CMTLPN得到的差值(subset2_ppn=CMTPPN+subset2_lpn-CMTLPN),长度subset2_length被赋值为缓存映射表中命中映射关系表项的起始逻辑页号CMTLPN与缓存映射表中命中映射关系表项的长度CMTSIZE相加后再减去第二个子映射关系的起始逻辑页号subset2_lpn得到的差值(subset2_length=CMTLPN+CMTSIZE-subset2_lpn);将当前IO请求的长度赋值为0(SIZE=0)、起始逻辑页号赋值为-1(LPN=-1),跳转执行步骤3.3)。
由于NAND Flash的异地更新策略,该写请求会破坏原有映射关系中的这组页的物理页号的连续性,进而分裂成多个子映射关系;对于完全命中,将会产生两个长度不小于0的额外的子映射关系;生成的两个子映射信息分别用(subset1_lpn,subset1_ppn,subset1_length)和(subset2_lpn,subset2_ppn,subset2_length)表示,上述两个子映射关系具体如式(1)所示。
(subset1_lpn,subset1_ppn,subset1_length)=(CMTLPN,CMTPPN,LPN-CMTLPN)
(subset2_lpn,subset2_ppn,subset2_length= (1)
(LPN+SIZE,CMTPPN+subset2_lpn-CMTLPN,CMTLPN+CMTSIZE-subset2_lpn)
式(1)中,(subset1_lpn,subset1_ppn,subset1_length)和(subset2_lpn,subset2_ppn,subset2_length)为生成的两个子映射关系,subset1_lpn为第一个子映射关系的起始逻辑页号,subset1_ppn为第一个子映射关系的起始物理页号,subset1_length为第一个子映射关系的长度,subset2_lpn为第二个子映射关系的起始逻辑页号,subset2_ppn为第二个子映射关系的起始物理页号,subset2_length为第二个子映射关系的长度;CMTLPN为缓存映射表中命中映射关系表项的起始逻辑页号,CMTPPN为缓存映射表中命中映射关系表项的起始物理页号,CMTSIZE为缓存映射表中命中映射关系表项的长度,LPN为当前IO请求的起始逻辑页号,SIZE为当前IO请求的长度。本实施例通过上述赋值标记当前IO请求所请求的所有逻辑页对应的物理页号都可以在SRAM缓存的地址映射信息中命中,在完全命中后,根据当前IO请求从LPN到LPN+SIZE-1的所有逻辑页号在命中映射关系中相对于CMTLPN的相对偏移量,各起始逻辑页号对应的物理页号即可由该相对偏移量与CMTPPN相加得到。
3.2)将当前IO请求根据缓存映射表映射关系表项中满足命中的范围分裂为两个子请求,两个子请求均包含起始逻辑页号和长度两项,第一个子请求的起始逻辑页号为当前IO请求的起始逻辑页号LPN,第一个子请求的长度为缓存映射表的映射关系表项中满足命中部分的长度SIZE1,第二个子请求的起始逻辑页号为当前IO请求的起始逻辑页号LPN与缓存映射表的映射关系表项中满足命中部分的长度SIZE1的和(LPN+SIZE1),第二个子请求的长度为当前IO请求的长度SIZE减去缓存映射表的映射关系表项中满足命中部分的长度SIZE1得到的差值(SIZE-SIZE1),其中缓存映射表的映射关系表项中满足命中部分的长度SIZE1的值为缓存映射表中命中映射关系表项的起始逻辑页号CMTLPN加上缓存映射表中命中映射关系表项的长度CMTSIZE后减去当前IO请求的起始逻辑页号LPN得到的差值(SIZE1=CMTLPN+CMTSIZE-LPN),将其中不能够满足的第二个子请求作为新的IO请求跳转执行步骤3);并生成一个长度不小于0的额外的子映射关系(subset1_lpn,subset1_ppn,subset1_length),子映射关系(subset1_lpn,subset1_ppn,subset1_length)包括起始逻辑页号subset1_lpn、起始物理页号subset1_ppn、长度subset1_length三项,子映射关系的起始逻辑页号subset1_lpn为缓存映射表中命中映射关系表项的起始逻辑页号CMTLPN(subset1_lpn=CMTLPN),子映射关系的起始物理页号subset1_ppn为缓存映射表中命中映射关系表项的起始物理页号CMTPPN(subset1_ppn=CMTPPN),子映射关系的长度subset1_length为缓存映射表中命中映射关系表项的长度CMTSIZE减去缓存映射表的映射关系表项中满足命中部分的长度SIZE1得到的差值(subset1_length=CMTSIZE-SIZE1),其中缓存映射表的映射关系表项中满足命中部分的长度SIZE1的值为缓存映射表中命中映射关系表项的起始逻辑页号CMTLPN加上缓存映射表中命中映射关系表项的长度CMTSIZE后减去当前IO请求的起始逻辑页号LPN得到的差值(SIZE1=CMTLPN+CMTSIZE-LPN);
将当前IO请求的长度SIZE在原值的基础上减去缓存映射表的映射关系表项中满足命中部分的长度SIZE1,将当前IO请求的起始逻辑页号LPN在原值的基础上加上缓存映射表的映射关系表项中满足命中部分的长度SIZE1,其中缓存映射表的映射关系表项中满足命中部分的长度SIZE1的值为缓存映射表中命中映射关系表项的起始逻辑页号CMTLPN加上缓存映射表中命中映射关系表项的长度CMTSIZE后再减去当前IO请求的起始逻辑页号LPN得到的差值(SIZE1=CMTLPN+CMTSIZE-LPN);最终跳转执行步骤3.3)。
前述的两个子请求的表达式具体如式(2)所示。
SIZE1=CMTLPN+CMTSIZE-LPN
REQ1=(LPN,SIZE1) (2)
REQ2=(LPN+SIZE1,SIZE-SIZE1)
式(2)中,REQ1为分裂得到的能够满足的第一个子请求,REQ2为分裂得到的不能够满足的第二个子请求,LPN为当前IO请求的起始逻辑页号,SIZE为当前IO请求的长度;SIZE1缓存映射表的映射关系表项中满足命中部分的长度。
前述的子映射关系具体如式(3)所示。
SIZE1=CMTLPN+CMTSIZE-LPN (3)
(subset1_lpn,subset1_ppn,subset1_length)=(CMTLPN,CMTPPN,CMTSIZE-SIZE1)
式(3)中,(subset1_lpn,subset1_ppn,subset1_length)为生成的子映射关系,subset1_lpn为子映射关系的起始逻辑页号,subset1_ppn为子映射关系的起始物理页号,subset1_length为子映射关系的长度;CMTLPN为缓存映射表中命中映射关系表项的起始逻辑页号,CMTPPN为缓存映射表中命中映射关系表项的起始物理页号,CMTSIZE为缓存映射表中命中映射关系表项的长度,SIZE1为缓存映射表的映射关系表项中满足命中部分的长度;LPN为当前IO请求的起始逻辑页号。
前述的将当前IO请求的长度和起始逻辑页号进行赋值具体如式(4)所示。
SIZE1=CMTLPN+CMTSIZE-LPN
SIZE=SIZE-SIZE1 (4)
LPN=LPN+SIZE1
式(4)中,LPN为当前IO请求的起始逻辑页号,SIZE为当前IO请求的长度;CMTLPN为缓存映射表中命中映射关系表项的起始逻辑页号,CMTSIZE为缓存映射表中命中映射关系表项的长度;SIZE1为缓存映射表的映射关系表项中满足命中部分的长度。
本实施例在部分命中的情况下,设置SIZE=SIZE-(CMTLPN+CMTSIZE-LPN-1),LPN=LPN+(CMTLPN+CMTSIZE-LPN-1),其中(CMTLPN+CMTSIZE-LPN-1)为在命中映射串中可以满足的部分,本实施例用SIZE1来表示。原写请求分裂成两个子请求(LPN,SIZE1)和(LPN+SIZE1,SIZE-SIZE1)。其中子请求(LPN,SIZE1)在该映射信息内可以满足,另一子请求(LPN+SIZE1,SIZE-SIZE1)需要作为新的请求再次进行操作;对于可以满足的子请求(LPN,SIZE1),根据该子请求从LPN到LPN+SIZE1-1的所有逻辑页号在命中映射关系中相对于CMTLPN的相对偏移量,各逻辑页号对应的物理页号即可由该相对偏移量与CMTPPN相加得到;对于该新的子请求(LPN+SIZE1,SIZE-SIZE1),在经过步骤(3.5)进入步骤(7)后,该新的子请求将通过上述设置的LPN、SIZE值,在SIZE大于0的情况下作为新的请求回到步骤(3)继续执行请求。对于部分命中,将会产生一个长度不小于0的额外的子映射关系;在该部分命中情况下,由原缓存映射表CMT中被命中的映射信息生成子映射信息(subset1_lpn,subset1_ppn,subset1_length),其中子映射信息的各项信息分别被设置为subset1_lpn=CMTLPN,subset1_ppn=CMTPPN,subset1_length=CMTSIZE-SIZE1。
3.3)检查生成的子映射关系的长度(subset1_length或subset2_length)是否大于或等于预设的阀值threshold,如果大于或等于预设的阀值threshold,则将子映射关系缓存到缓存分裂表CST中,否则将子映射关系写回固态盘的Flash中,而不再将其缓存到SRAM中的其它表中;最终跳转执行步骤3.5)。
3.4)检查当前IO请求的所有逻辑页在缓存分裂表CST中的命中情况,如果完全命中则跳转执行步骤3.4.1),如果部分命中则跳转执行步骤3.4.2),如果未命中则跳转执行步骤3.4.3)。本实施例中,判断缓存分裂表CST中的命中与缓存映射表CMT中所指命中相似,是指该起始逻辑页号是否在缓存分裂表CST中某个映射关系所表示的映射范围之内,从而得到命中和未命中两种结果;针对命中的结果,通过再判断该命中的地址映射信息表示的范围能否包含此IO请求的所有逻辑页,则可得到完全命中或者部分命中共两种结果。假设被命中的映射信息为(CSTLPN,CSTPPN,CSTSIZE),根据请求的SIZE以及CST中命中的映射串的信息,判断该请求在CST中命中的类型,如果LPN+SIZE-1小于CSTLPN+CSTSIZE则是完全命中,反之就是部分命中。
3.4.1)与CMT中一样,对于写请求在CST中完全命中,生成两个长度不小于0的额外的子映射关系,第一个子映射关系(subset1_lpn,subset1_ppn,subset1_length)包括起始逻辑页号subset1_lpn、起始物理页号subset1_ppn、长度subset1_length三项,在对第一个子映射关系赋值时,起始逻辑页号subset1_lpn被赋值为缓存分裂表中命中映射关系表项的起始逻辑页号CSTLPN(subset1_lpn=CSTLPN),起始物理页号subset1_ppn被赋值为缓存分裂表CST中命中映射关系表项的起始物理页号CSTPPN(subset1_ppn=CSTPPN),长度subset1_length被赋值为当前IO请求的起始逻辑页号LPN减去缓存分裂表CST中命中映射关系表项的起始逻辑页号CSTLPN得到的差值(subset1_length=LPN-CSTLPN);第二个子映射关系(subset2_lpn,subset2_ppn,subset2_length)包括起始逻辑页号subset2_lpn、起始物理页号subset2_ppn、起始长度subset2_length三项,在对第二个子映射关系赋值时,起始逻辑页号subset2_lpn被赋值为当前IO请求的起始逻辑页号LPN与当前IO请求的长度SIZE的和(subset2_lpn=LPN+SIZE),起始物理页号subset2_ppn被赋值为缓存分裂表CST中命中映射关系表项的起始物理页号CSTPPN与第二个子映射关系的起始逻辑页号subset2_lpn相加后再减去缓存分裂表V中命中映射关系表项的起始逻辑页号CSTLPN得到的差值(subset2_ppn=CSTPPN+subset2_lpn-CSTLPN),长度subset2_length被赋值为缓存分裂表CST中命中映射关系表项的起始逻辑页号CSTLPN与缓存分裂表中命中映射关系表项的长度CSTSIZE相加后再减去第二个子映射关系的起始逻辑页号subset2_lpn得到的差值(subset2_length=CSTLPN+CSTSIZE-subset2_lpn);将当前IO请求的长度赋值为0(SIZE=0)、起始逻辑页号赋值为-1(LPN=-1),跳转执行步骤3.4.4)。
本实施例中此处与前述的缓存映射表CMT中完全命中类似,通过赋值可以标记该IO请求所请求的所有逻辑页对应的物理页号都可以在SRAM缓存的地址映射信息中命中;在完全命中后,根据该IO请求从LPN到LPN+SIZE-1的所有逻辑页号在命中映射关系中相对于CSTLPN的相对偏移量,各逻辑页号对应的物理页号即可由该相对偏移量与CSTPPN相加得到。生成两个子映射关系具体如式(5)所示。
(subset1_lpn,subset1_ppn,subset1_length)=(CSTLPN,CSTPPN,LPN-CSTLPN)
(subset2_lpn,subset2_ppn,subset2_length= (5)
(LPN+SIZE,CSTPPN+subset2_lpn-CSTLPN,CSTLPN+CSTSIZE-subset2_lpn)
式(5)中,(subset1_lpn,subset1_ppn,subset1_length)和(subset2_lpn,subset2_ppn,subset2_length)为生成的两个子映射关系,subset1_lpn为第一个子映射关系的起始逻辑页号,subset1_ppn为第一个子映射关系的起始物理页号,subset1_length为第一个子映射关系的长度,subset2_lpn为第二个子映射关系的起始逻辑页号,subset2_ppn为第二个子映射关系的起始物理页号,subset2_length为第二个子映射关系的长度;CSTLPN为缓存分裂表CST中命中映射关系表项的起始逻辑页号,CSTSIZE为缓存分裂表中命中映射关系表项的长度,LPN为当前IO请求的起始逻辑页号,SIZE为当前IO请求的长度。
3.4.2)将当前IO请求根据缓存映射表映射关系表项中满足命中的范围分裂为两个子请求,两个子请求均包含起始逻辑页号和长度两项,第一个子请求的起始逻辑页号为当前IO请求的起始逻辑页号LPN,第一个子请求的长度为缓存分裂表的映射关系表项中满足命中部分的长度SIZE1,第二个子请求的起始逻辑页号为当前IO请求的起始逻辑页号LPN与缓存分裂表的映射关系表项中满足命中部分的长度SIZE1的和(LPN+SIZE1),第二个子请求的长度为当前IO请求的长度SIZE减去缓存分裂表的映射关系表项中满足命中部分的长度SIZE1得到的差值(SIZE-SIZE1),其中缓存分裂表的映射关系表项中满足命中部分的长度SIZE1的值为缓存分裂表中命中映射关系表项的起始逻辑页号CSTLPN加上缓存分裂表中命中映射关系表项的长度CSTSIZE后减去当前IO请求的起始逻辑页号LPN得到的差值(SIZE1=CSTLPN+CSTSIZE-LPN),将其中不能够满足的第二个子请求作为新的IO请求跳转执行步骤3);生成一个长度不小于0的额外的子映射关系(subset1_lpn,subset1_ppn,subset1_length),子映射关系(subset1_lpn,subset1_ppn,subset1_length)包括起始逻辑页号subset1_lpn、起始物理页号subset1_ppn、长度subset1_length三项,子映射关系的起始逻辑页号subset1_lpn为缓存分裂表中命中映射关系表项的起始逻辑页号CSTLPN(subset1_lpn=CSTLPN),子映射关系的起始物理页号subset1_ppn为缓存分裂表中命中映射关系表项的起始物理页号CSTPPN(subset1_ppn=CSTPPN),子映射关系的长度subset1_length为缓存分裂表中命中映射关系表项的长度CSTSIZE减去缓存分裂表的映射关系表项中满足命中部分的长度SIZE1得到的差值(subset1_length=CSTSIZE-SIZE1),其中缓存分裂表的映射关系表项中满足命中部分的长度SIZE1的值为缓存分裂表中命中映射关系表项的起始逻辑页号CSTLPN加上缓存分裂表中命中映射关系表项的长度CSTSIZE后减去当前IO请求的起始逻辑页号LPN得到的差值(SIZE1=CSTLPN+CSTSIZE-LPN);将当前IO请求的长度SIZE在原值的基础上减去缓存分裂表的映射关系表项中满足命中部分的长度SIZE1,将当前IO请求的起始逻辑页号LPN在原值的基础上加上缓存分裂表的映射关系表项中满足命中部分的长度SIZE1,其中缓存分裂表的映射关系表项中满足命中部分的长度SIZE1的值为缓存分裂表中命中映射关系表项的起始逻辑页号CSTLPN加上缓存分裂表中命中映射关系表项的长度CSTSIZE后再减去当前IO请求的起始逻辑页号LPN得到的差值(SIZE1=CSTLPN+CSTSIZE-LPN);最终跳转执行步骤3.4.4)。
前述的两个子请求具体如式(6)所示。
SIZE1=CSTLPN+CSTSIZE-LPN
REQ1=(LPN,SIZE1) (6)
REQ2=(LPN+SIZE1,SIZE-SIZE1)
式(6)中,REQ1为分裂得到的能够满足的第一个子请求,REQ2为分裂得到的不能够满足的第二个子请求,LPN为当前IO请求的起始逻辑页号,SIZE为当前IO请求的长度;SIZE1为缓存分裂表的映射关系表项中满足命中部分的长度。原写请求分裂成两个子请求(LPN,SIZE1)和(LPN+SIZE1,SIZE-SIZE1)。其中(LPN,SIZE1)在该映射信息内可以满足,另一子请求(LPN+SIZE1,SIZE-SIZE1)需要作为新的请求再次进行操作;对于可以满足的子请求(LPN,SIZE1),根据该子请求从LPN到LPN+SIZE1-1的所有逻辑页号在命中映射关系中相对于CSTLPN的相对偏移量,各逻辑页号对应的物理页号即可由该相对偏移量与CSTPPN相加得到;对于该新的子请求(LPN+SIZE1,SIZE-SIZE1),该新的子请求将通过上述设置的LPN、SIZE值,在SIZE>0的情况下作为新的请求回到步骤3)继续执行请求。
前述生成的子映射关系具体如式(7)所示。
SIZE1=CSTLPN+CSTSIZE-LPN (7)
(subset1_lpn,subset1_ppn,subset1_length)=(CSTLPN,CSTPPN,CSTSIZE-SIZE1)
式(7)中,(subset1_lpn,subset1_ppn,subset1_length)为生成的子映射关系,subset1_lpn为子映射关系的起始逻辑页号,subset1_ppn为子映射关系的起始物理页号,subset1_length为子映射关系的长度;CSTLPN为缓存分裂表中命中映射关系表项的起始逻辑页号,CSTSIZE为缓存分裂表中命中映射关系表项的长度,SIZE1为缓存分裂表映射关系表项中满足命中的范围;LPN为当前IO请求的起始逻辑页号。
前述将当前IO请求的长度和起始逻辑页号进行赋值具体如式(8)所示。
SIZE1=CSTLPN+CSTSIZE-LPN
SIZE=SIZE-SIZE1 (8)
LPN=LPN+SIZE1
式(8)中,LPN为当前IO请求的起始逻辑页号,SIZE为当前IO请求的长度;CSTLPN为缓存分裂表中命中映射关系表项的起始逻辑页号,CSTSIZE为缓存分裂表中命中映射关系表项的长度;SIZE1为缓存分裂表的映射关系表项中满足命中部分的长度。
3.4.3)判断当前IO请求的起始逻辑页号LPN是否在缓存转换表CTT中命中,如果命中,则起始逻辑页号LPN对应的物理页号PPN(DLPN=LPN)即为缓存转换表CTT中命中表项的物理页号DPPN,执行对逻辑页号为起始逻辑页的物理页的写操作,根据将当前IO请求的起始逻辑页号加1(LPN=LPN+1)、长度减1(SIZE=SIZE+1),并用新的起始逻辑页号和长度将当前IO请求的剩余长度作为长度组成新的IO请求(LPN,SIZE),跳转执行步骤3.5);如果未命中,则将原缓存转换表中的地址转换页写入固态盘的Flash,并根据当前IO请求的起始逻辑页号计算出对应地址映射信息所在地址转换页的逻辑页号,在全局转换目录GTD中找到该地址转换页的物理页号,从固态盘的Flash中读取包含该起始逻辑页号的地址转换页内的所有地址映射关系并写入缓存转换表CTT,然后跳转执行步骤3.4.3);
3.4.4)检查生成的子映射关系的长度是否大于或等于预设的阀值,如果大于或等于预设的阀值,则将子映射关系缓存到缓存分裂表中,否则将子映射关系写回固态盘的Flash中,而不再将其缓存到SRAM中的其它表中;跳转执行步骤3.5);
3.5)判断当前IO请求的长度SIZE是否大于0,如果是则跳转执行步骤3),否则检查缓存映射表CMT中是否有空闲表项;如果有空闲表项,则跳转执行步骤3.6);如果无空闲表项,则从缓存映射表CMT中选择并移除最近最少使用的一个映射关系表项,判断映射关系表项的长度是否大于预设的阀值,如果大于预设的阀值则将映射关系表项的映射关系缓存到缓存分裂表CST中,跳转执行步骤3.6),否则将映射关系表项的映射关系写回固态盘的Flash中,跳转执行步骤3.6);
3.6)将当前IO请求完成对固态盘Flash中数据块的写操作的起始物理页号、新写入的起始物理页号、长度组成的映射关系缓存到缓存映射表中最前端,跳转执行步骤5)。完成对Flash中数据块的写操作后,将该请求的起始物理页号、新写入的起始物理页号、该请求的页数组成新的地址映射关系,如果缓存映射表中有空表项,则将该映射关系缓存到缓存映射表CMT中,并将该映射关系放入缓存映射链表的最前端。
如图4所示,本实施例中读请求的执行步骤如步骤4)~4.2.3)所示。
4)判断当前IO请求的起始逻辑页号LPN是否在缓存映射表CMT中命中,如果命中则根据缓存映射表CMT中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为起始逻辑页号的页的读操作,跳转执行步骤4.1);如果未命中则跳转执行步骤4.2);此处在缓存映射表CMT中的命中具体是指该逻辑页号在该映射表中某个映射关系所表示的映射范围之内,即判断该请求的起始逻辑页号是否在缓存映射表中某个映射关系(LPN,PPN,SIZE)所表示的映射区间(LPN,LPN+SIZE-1)内。
4.1)设置当前IO请求的起始逻辑页号加1(LPN++)、长度减1(SIZE--),将被命中的表项移动到缓存映射表的最前端,然后判断当前IO请求的长度SIZE是否大于0,如果长度仍大于0则跳转执行步骤4),否则跳转执行步骤5)。
4.2)判断当前IO请求的起始逻辑页号LPN是否在缓存分裂表CST中命中,如果命中则跳转执行步骤4.2.1),否则如果未命中,跳转执行步骤4.2.2);判断起始逻辑页号LPN在缓存分裂表CST中的命中与在缓存映射表CMT中所指一样,是指该起始逻辑页号LPN在缓存分裂表CST中某个映射关系所表示的映射范围之内,在此不再赘述。
4.2.1)根据缓存分裂表CST中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为起始逻辑页号LPN的页的读操作,跳转执行步骤4.2.3);
4.2.2)判断当前IO请求的起始逻辑页号LPN是否在缓存转换表CTT中命中,如果命中则根据缓存转换表CTT中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为起始逻辑页号的页的读操作,跳转执行步骤4.2.3);如果未命中,则将原缓存转换表中的地址转换页写入固态盘的Flash,根据当前IO请求的起始逻辑页号LPN计算出其所对应的地址映射信息所在的地址转换页的逻辑页号,在全局转换目录GTD中找到该地址转换页的物理页号,并从固态盘的Flash中读取包含该读请求逻辑页号的地址转换页内的所有地址映射关系,然后返回执行步骤4.2.2);
4.2.3)检查缓存映射表CMT中是否有空闲表项,如果有空闲表项,则跳转执行步骤4.1);如果无空闲表项,则从缓存映射表CMT中选择并移除最近最少使用的一个映射关系表项,判断映射关系表项的长度SIZE是否大于预设的阀值threshold,如果大于预设的阀值threshold则将映射关系表项缓存到缓存分裂表CST中,跳转执行步骤4.1);否则,将映射关系表项的映射关系写回固态盘的Flash中,跳转执行步骤4.1);
5)当前IO请求的任务结束,退出。
本实施例中,将映射关系缓存到缓存分裂表CST中的详细步骤如下:
A1)判断缓存分裂表CST是否有空闲表项,如果有空闲表项则跳转执行步骤A3),如果缓存分裂表CST已达到最大长度,则跳转执行步骤A2);
A2)将缓存分裂表CST中最近最少使用的映射关系表项从缓存分裂表CST中移除,并将映射关系表项写回到相应的地址转换页中,跳转执行步骤A3);
A3)将待缓存的映射关系缓存到缓存分裂表CST中并将放至缓存分裂表CST的最前端。
如图5所示,将映射关系(victim_lpn,victim_ppn,victim_size)写回固态盘的Flash中的详细步骤如下:
B1)判断待写回映射关系的起始逻辑页号victim_lpn是否在缓存转换表CTT中命中,此处命中是指victim_lpn在缓存转换表中有对应的表项,如果未命中,则进入步骤B2),否则跳转至步骤B3);
B2)将当前缓存转换表中的缓存的地址转换页内的所有地址映射信息作为一个完整的页写回Flash中一个新的地址转换页中,将待写回映射关系的起始逻辑页号所在的地址转换页内的所有地址映射信息读入SRAM并缓存在缓存转换表CTT中,跳转至步骤B3);
B3)将逻辑页号为待写回映射关系的起始逻辑页号victim_lpn的映射信息写入缓存转换页中对应的映射关系中;
B4)待写回映射关系的起始逻辑页号加1(victim_lpn=victim_lpn+1),待写回映射关系的长度加1(victim_size=victim_size+1);
B5)判断待写回映射关系victim_size的长度是否大于0,如果大于0则跳转执行步骤B1),否则执行步骤B6);
B6)将地址映射信息写入固态盘的Flash中,过程结束。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (3)
1.一种固态盘闪存转换层中的地址映射方法,其特征在于实施步骤如下:
1)预先在固态盘的SRAM中建立缓存映射表、缓存分裂表、缓存转换表和全局转换目录,所述缓存映射表、缓存分裂表均具有起始逻辑页号、起始物理页号、长度共三个表项字段,所述缓存转换表具有逻辑页号和物理页号共两个表项字段,所述全局转换目录具有逻辑页号、逻辑页号在固态盘Flash中存放的物理页号共两个表项字段;
2)接收来自文件系统的当前IO请求,如果当前IO请求为写请求则跳转执行步骤3),否则跳转执行步骤4);
3)检查当前IO请求的所有逻辑页在缓存映射表中的命中情况,如果完全命中则跳转执行步骤3.1);如果部分命中则跳转执行步骤3.2);如果未命中则跳转执行步骤3.4);
3.1)生成两个长度不小于0的额外的子映射关系,所述第一个子映射关系包括起始逻辑页号、起始物理页号、长度三项,在对第一个子映射关系赋值时,起始逻辑页号被赋值为缓存映射表中命中映射关系表项的起始逻辑页号,起始物理页号被赋值为缓存映射表中命中映射关系表项的起始物理页号,长度被赋值为当前IO请求的起始逻辑页号减去缓存映射表中命中映射关系表项的起始逻辑页号得到的差值;第二个子映射关系包括起始逻辑页号、起始物理页号、长度三项,在对第二个子映射关系赋值时,起始逻辑页号被赋值为当前IO请求的起始逻辑页号与当前IO请求的长度的和,起始物理页号被赋值为缓存映射表中命中映射关系表项的起始物理页号与第二个子映射关系的起始逻辑页号相加后再减去缓存映射表中命中映射关系表项的起始逻辑页号得到的差值,长度被赋值为缓存映射表中命中映射关系表项的起始逻辑页号与缓存映射表中命中映射关系表项的长度相加后再减去第二个子映射关系的起始逻辑页号得到的差值;将当前IO请求的长度赋值为0、起始逻辑页号赋值为-1;跳转执行步骤3.3);
3.2)将当前IO请求根据缓存映射表映射关系表项中满足命中的范围分裂为两个子请求,所述两个子请求均包含起始逻辑页号和长度两项,第一个子请求的起始逻辑页号为当前IO请求的起始逻辑页号,第一个子请求的长度为缓存映射表的映射关系表项中满足命中部分的长度,第二个子请求的起始逻辑页号为当前IO请求的起始逻辑页号与缓存映射表的映射关系表项中满足命中部分的长度的和,第二个子请求的长度为当前IO请求的长度减去缓存映射表的映射关系表项中满足命中部分的长度得到的差值,其中缓存映射表的映射关系表项中满足命中部分的长度的值为缓存映射表中命中映射关系表项的起始逻辑页号加上缓存映射表中命中映射关系表项的长度后减去当前IO请求的起始逻辑页号得到的差值,将其中不能够满足的第二个子请求作为新的IO请求跳转执行步骤3),生成一个长度不小于0的额外的子映射关系,所述子映射关系包括起始逻辑页号、起始物理页号、长度三项,所述子映射关系的起始逻辑页号为缓存映射表中命中映射关系表项的起始逻辑页号,所述子映射关系的起始物理页号为缓存映射表中命中映射关系表项的起始物理页号,所述子映射关系的长度为缓存映射表中命中映射关系表项的长度减去缓存映射表的映射关系表项中满足命中部分的长度得到的差值,其中缓存映射表的映射关系表项中满足命中部分的长度的值为缓存映射表中命中映射关系表项的起始逻辑页号加上缓存映射表中命中映射关系表项的长度后减去当前IO请求的起始逻辑页号得到的差值;将当前IO请求的长度在原值的基础上减去缓存映射表的映射关系表项中满足命中部分的长度,将当前IO请求的起始逻辑页号在原值的基础上加上缓存映射表的映射关系表项中满足命中部分的长度,其中缓存映射表的映射关系表项中满足命中部分的长度的值为缓存映射表中命中映射关系表项的起始逻辑页号加上缓存映射表中命中映射关系表项的长度后再减去当前IO请求的起始逻辑页号得到的差值;最终跳转执行步骤3.3);
3.3)检查生成的子映射关系的长度是否大于或等于预设的阀值,如果大于或等于预设的阀值,则将所述子映射关系缓存到缓存分裂表中,否则将所述子映射关系写回固态盘的Flash中,最终跳转执行步骤3.5);
3.4)检查当前IO请求的所有逻辑页在缓存分裂表中的命中情况,如果完全命中则跳转执行步骤3.4.1),如果部分命中则跳转执行步骤3.4.2),如果未命中则跳转执行步骤3.4.3);
3.4.1)生成两个长度不小于0的额外的子映射关系,所述第一个子映射关系包括起始逻辑页号、起始物理页号、长度三项,在对第一个子映射关系赋值时,起始逻辑页号被赋值为缓存分裂表中命中映射关系表项的起始逻辑页号,起始物理页号被赋值为缓存分裂表中命中映射关系表项的起始物理页号,长度被赋值为当前IO请求的起始逻辑页号减去缓存分裂表中命中映射关系表项的起始逻辑页号得到的差值;第二个子映射关系包括起始逻辑页号、起始物理页号、长度三项,在对第二个子映射关系赋值时,起始逻辑页号被赋值为当前IO请求的起始逻辑页号与当前IO请求的长度的和,起始物理页号被赋值为缓存分裂表中命中映射关系表项的起始物理页号与第二个子映射关系的起始逻辑页号相加后再减去缓存分裂表中命中映射关系表项的起始逻辑页号得到的差值,长度被赋值为缓存分裂表中命中映射关系表项的起始逻辑页号与缓存分裂表中命中映射关系表项的长度相加后再减去第二个子映射关系的起始逻辑页号得到的差值;将当前IO请求的长度赋值为0、起始逻辑页号赋值为-1;跳转执行步骤3.4.4);
3.4.2)将当前IO请求根据缓存映射表映射关系表项中满足命中的范围分裂为两个子请求,所述两个子请求均包含起始逻辑页号和长度两项,第一个子请求的起始逻辑页号为当前IO请求的起始逻辑页号,第一个子请求的长度为缓存分裂表的映射关系表项中满足命中部分的长度,第二个子请求的起始逻辑页号为当前IO请求的起始逻辑页号与缓存分裂表的映射关系表项中满足命中部分的长度的和,第二个子请求的长度为当前IO请求的长度减去缓存分裂表的映射关系表项中满足命中部分的长度得到的差值,其中缓存分裂表的映射关系表项中满足命中部分的长度的值为缓存分裂表中命中映射关系表项的起始逻辑页号加上缓存分裂表中命中映射关系表项的长度后减去当前IO请求的起始逻辑页号得到的差值,将其中不能够满足的第二个子请求作为新的IO请求跳转执行步骤3),生成一个长度不小于0的额外的子映射关系,所述子映射关系包括起始逻辑页号、起始物理页号、长度三项,所述子映射关系的起始逻辑页号为缓存分裂表中命中映射关系表项的起始逻辑页号,所述子映射关系的起始物理页号为缓存分裂表中命中映射关系表项的起始物理页号,所述子映射关系的长度为缓存分裂表中命中映射关系表项的长度减去缓存分裂表的映射关系表项中满足命中部分的长度得到的差值,其中缓存分裂表的映射关系表项中满足命中部分的长度的值为缓存分裂表中命中映射关系表项的起始逻辑页号加上缓存分裂表中命中映射关系表项的长度后减去当前IO请求的起始逻辑页号得到的差值;将当前IO请求的长度在原值的基础上减去缓存分裂表的映射关系表项中满足命中部分的长度,将当前IO请求的起始逻辑页号在原值的基础上加上缓存分裂表的映射关系表项中满足命中部分的长度,其中缓存分裂表的映射关系表项中满足命中部分的长度的值为缓存分裂表中命中映射关系表项的起始逻辑页号加上缓存分裂表中命中映射关系表项的长度后再减去当前IO请求的起始逻辑页号得到的差值;跳转执行步骤3.4.4);
3.4.3)判断当前IO请求的起始逻辑页号是否在缓存转换表中命中,如果命中,则所述起始逻辑页号对应的物理页号即为缓存转换表中命中表项的物理页号,执行对逻辑页号为所述起始逻辑页的物理页的写操作,根据将当前IO请求的起始逻辑页号加1、长度减1,并用新的起始逻辑页号和长度将当前IO请求的剩余长度作为长度组成新的IO请求,跳转执行步骤3.5);如果未命中,则将原缓存转换表中的地址转换页写入固态盘的Flash,并根据当前IO请求的起始逻辑页号计算出对应地址映射信息所在地址转换页的逻辑页号,在全局转换目录中找到该地址转换页的物理页号,从固态盘的Flash中读取包含该起始逻辑页号的地址转换页内的所有地址映射关系并写入缓存转换表,然后跳转执行步骤3.4.3);
3.4.4)检查生成的子映射关系的长度是否大于或等于预设的阀值,如果大于或等于预设的阀值,则将所述子映射关系缓存到缓存分裂表中,否则将所述子映射关系写回固态盘的Flash中;跳转执行步骤3.5);
3.5)判断当前IO请求的长度是否大于0,如果是则跳转执行步骤3),否则检查缓存映射表中是否有空闲表项;如果有空闲表项,则跳转执行步骤3.6);如果无空闲表项,则从缓存映射表中选择并移除最近最少使用的一个映射关系表项,判断所述映射关系表项的长度是否大于预设的阀值,如果大于预设的阀值则将所述映射关系表项的映射关系缓存到缓存分裂表中,跳转执行步骤3.6),否则将所述映射关系表项的映射关系写回固态盘的Flash中,跳转执行步骤3.6);
3.6)将当前IO请求完成对固态盘Flash中数据块的写操作的起始物理页号、新写入的起始物理页号、长度组成的映射关系缓存到缓存映射表中最前端,跳转执行步骤5);
4)判断当前IO请求的起始逻辑页号是否在缓存映射表中命中,如果命中则根据缓存映射表中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为所述起始逻辑页号的页的读操作,跳转执行步骤4.1);如果未命中则跳转执行步骤4.2);
4.1)设置当前IO请求的起始逻辑页号加1、长度减1,将被命中的表项移动到缓存映射表的最前端,然后判断当前IO请求的长度是否大于0,如果长度仍大于0则跳转执行步骤4),否则跳转执行步骤5);
4.2)判断当前IO请求的起始逻辑页号是否在缓存分裂表中命中,如果命中则跳转执行步骤4.2.1),否则如果未命中,跳转执行步骤4.2.2);
4.2.1)根据缓存分裂表中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为所述起始逻辑页号的页的读操作,跳转执行步骤4.2.3);
4.2.2)判断当前IO请求的起始逻辑页号是否在缓存转换表中命中,如果命中则根据缓存转换表中命中的表项得到当前IO请求的物理页号,完成此次读逻辑地址为所述起始逻辑页号的页的读操作,跳转执行步骤4.2.3);如果未命中,则将原缓存转换表中的地址转换页写入固态盘的Flash,根据当前IO请求的起始逻辑页号计算出其所对应的地址映射信息所在的地址转换页的逻辑页号,在全局转换目录中找到该地址转换页的物理页号,并从固态盘的Flash中读取包含该读请求起始逻辑页号的地址转换页内的所有地址映射关系,然后返回执行步骤4.2.2);
4.2.3)检查缓存映射表中是否有空闲表项,如果有空闲表项,则跳转执行步骤4.1);如果无空闲表项,则从缓存映射表中选择并移除最近最少使用的一个映射关系表项,判断所述映射关系表项的长度是否大于预设的阀值,如果大于预设的阀值则将所述映射关系表项缓存到缓存分裂表中,跳转执行步骤4.1);否则,将所述映射关系表项的映射关系写回固态盘的Flash中,跳转执行步骤4.1);
5)当前IO请求的任务结束,退出。
2.根据权利要求1所述的固态盘闪存转换层中的地址映射方法,其特征在于,所述将映射关系缓存到缓存分裂表中的详细步骤如下:
A1)判断缓存分裂表是否有空闲表项,如果有空闲表项则跳转执行步骤A3),如果缓存分裂表已达到最大长度,则跳转执行步骤A2);
A2)将缓存分裂表中最近最少使用的映射关系表项从缓存分裂表中移除,并将所述映射关系表项写回到相应的地址转换页中,跳转执行步骤A3);
A3)将待缓存的映射关系缓存到缓存分裂表中并将放至缓存分裂表的最前端。
3.根据权利要求2所述的固态盘闪存转换层中的地址映射方法,其特征在于,所述将映射关系写回固态盘的Flash中的详细步骤如下:
B1)判断待写回映射关系的起始逻辑页号是否在缓存转换表中命中,如果未命中,则进入步骤B2),否则跳转至步骤B3);
B2)将当前缓存转换表中的缓存的地址转换页内的所有地址映射信息作为一个完整的页写回Flash中一个新的地址转换页中,将待写回映射关系的起始逻辑页号所在的地址转换页内的所有地址映射信息读入SRAM并缓存在缓存转换表中,跳转至步骤B3);
B3)将逻辑页号为待写回映射关系的起始逻辑页号的映射信息写入缓存转换页中对应的映射关系中;
B4)待写回映射关系的起始逻辑页号加1,待写回映射关系的长度加1;
B5)判断待写回映射关系的长度是否大于0,如果大于0则跳转执行步骤B1),否则执行步骤B6);
B6)将地址映射信息写入固态盘的Flash中,过程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310371557.1A CN103425600B (zh) | 2013-08-23 | 2013-08-23 | 一种固态盘闪存转换层中的地址映射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310371557.1A CN103425600B (zh) | 2013-08-23 | 2013-08-23 | 一种固态盘闪存转换层中的地址映射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103425600A true CN103425600A (zh) | 2013-12-04 |
CN103425600B CN103425600B (zh) | 2016-01-20 |
Family
ID=49650373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310371557.1A Active CN103425600B (zh) | 2013-08-23 | 2013-08-23 | 一种固态盘闪存转换层中的地址映射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103425600B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955432A (zh) * | 2014-04-22 | 2014-07-30 | 深圳市硅格半导体有限公司 | 数据存储的方法及装置 |
CN104156178A (zh) * | 2014-08-11 | 2014-11-19 | 四川九成信息技术有限公司 | 一种嵌入式终端数据访问方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN105005510A (zh) * | 2015-07-02 | 2015-10-28 | 西安交通大学 | 应用于固态硬盘阻变存储器缓存的纠错保护架构及方法 |
CN105740157A (zh) * | 2014-11-03 | 2016-07-06 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN105786721A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 一种内存地址映射管理方法及处理器 |
WO2016123748A1 (zh) * | 2015-02-03 | 2016-08-11 | 北京麓柏科技有限公司 | 一种闪存存储系统及其读写、删除方法 |
CN106775466A (zh) * | 2016-12-05 | 2017-05-31 | 深圳市金泰克半导体有限公司 | 一种无dram的ftl读缓存管理方法及装置 |
CN106980577A (zh) * | 2017-03-20 | 2017-07-25 | 华为机器有限公司 | 输入输出处理方法、装置及终端 |
CN107632939A (zh) * | 2016-07-19 | 2018-01-26 | 西部数据技术公司 | 用于存储装置的映射表 |
CN107807786A (zh) * | 2016-09-08 | 2018-03-16 | 宏碁股份有限公司 | 存储装置及其资料映射方法 |
CN107943719A (zh) * | 2017-11-28 | 2018-04-20 | 杭州电子科技大学 | 一种基于请求分类的闪存转换层控制方法 |
CN108021512A (zh) * | 2017-11-22 | 2018-05-11 | 深圳忆联信息系统有限公司 | 一种固态硬盘映射管理方法及固态硬盘 |
CN108153682A (zh) * | 2017-12-12 | 2018-06-12 | 西安交通大学 | 一种利用闪存内部并行性进行闪存转换层地址映射的方法 |
CN108519860A (zh) * | 2018-03-31 | 2018-09-11 | 北京联想核芯科技有限公司 | 一种ssd读命中的处理方法和装置 |
CN108804338A (zh) * | 2017-04-28 | 2018-11-13 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN109840219A (zh) * | 2017-11-29 | 2019-06-04 | 北京忆恒创源科技有限公司 | 大容量固态存储设备的地址转换系统与方法 |
CN110262982A (zh) * | 2019-05-05 | 2019-09-20 | 杭州电子科技大学 | 一种固态硬盘地址映射的方法 |
CN110287129A (zh) * | 2019-06-27 | 2019-09-27 | 深圳忆联信息系统有限公司 | 基于固态硬盘的l2p表更新及写入管理方法和装置 |
CN110389904A (zh) * | 2018-04-20 | 2019-10-29 | 北京忆恒创源科技有限公司 | 具有压缩的ftl表的存储设备 |
CN110895445A (zh) * | 2018-09-12 | 2020-03-20 | 华为技术有限公司 | 数据处理方法和系统 |
CN110968527A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | Ftl提供的缓存 |
WO2020082449A1 (zh) * | 2018-10-24 | 2020-04-30 | 江苏华存电子科技有限公司 | 一种闪存存储中管理主机端逻辑位置对应映射表的方法 |
WO2021082109A1 (zh) * | 2019-10-31 | 2021-05-06 | 江苏华存电子科技有限公司 | 一种在静态随机存取存储器上的混合型映象表 |
CN113656332A (zh) * | 2021-08-20 | 2021-11-16 | 中国科学院上海高等研究院 | 基于合并地址差值序列的cpu缓存数据预取方法 |
CN114676072A (zh) * | 2022-05-25 | 2022-06-28 | 阿里巴巴(中国)有限公司 | 数据处理方法以及装置 |
US12130735B2 (en) | 2020-06-30 | 2024-10-29 | Huawei Technologies Co., Ltd. | Data writing method and apparatus for flash memory-based system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110072194A1 (en) * | 2009-09-23 | 2011-03-24 | Lsi Corporation | Logical-to-Physical Address Translation for Solid State Disks |
CN102866955A (zh) * | 2012-09-14 | 2013-01-09 | 记忆科技(深圳)有限公司 | 一种闪存数据管理方法及系统 |
CN102981963A (zh) * | 2012-10-30 | 2013-03-20 | 华中科技大学 | 一种固态盘的闪存转换层的实现方法 |
-
2013
- 2013-08-23 CN CN201310371557.1A patent/CN103425600B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110072194A1 (en) * | 2009-09-23 | 2011-03-24 | Lsi Corporation | Logical-to-Physical Address Translation for Solid State Disks |
CN102866955A (zh) * | 2012-09-14 | 2013-01-09 | 记忆科技(深圳)有限公司 | 一种闪存数据管理方法及系统 |
CN102981963A (zh) * | 2012-10-30 | 2013-03-20 | 华中科技大学 | 一种固态盘的闪存转换层的实现方法 |
Non-Patent Citations (1)
Title |
---|
段天权: "闪存转换层研究", 《万方数据库》 * |
Cited By (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955432B (zh) * | 2014-04-22 | 2017-09-19 | 深圳市硅格半导体有限公司 | 数据存储的方法及装置 |
CN103955432A (zh) * | 2014-04-22 | 2014-07-30 | 深圳市硅格半导体有限公司 | 数据存储的方法及装置 |
CN104156178A (zh) * | 2014-08-11 | 2014-11-19 | 四川九成信息技术有限公司 | 一种嵌入式终端数据访问方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN104268094B (zh) * | 2014-09-23 | 2017-05-03 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN105740157A (zh) * | 2014-11-03 | 2016-07-06 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
US10540289B2 (en) | 2014-11-03 | 2020-01-21 | Silicon Motion, Inc. | Data storage device and flash memory control method |
CN105740157B (zh) * | 2014-11-03 | 2018-11-16 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN105786721A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 一种内存地址映射管理方法及处理器 |
WO2016123748A1 (zh) * | 2015-02-03 | 2016-08-11 | 北京麓柏科技有限公司 | 一种闪存存储系统及其读写、删除方法 |
CN105005510B (zh) * | 2015-07-02 | 2018-07-17 | 西安交通大学 | 应用于固态硬盘阻变存储器缓存的纠错保护架构及方法 |
CN105005510A (zh) * | 2015-07-02 | 2015-10-28 | 西安交通大学 | 应用于固态硬盘阻变存储器缓存的纠错保护架构及方法 |
CN107632939A (zh) * | 2016-07-19 | 2018-01-26 | 西部数据技术公司 | 用于存储装置的映射表 |
CN107632939B (zh) * | 2016-07-19 | 2021-03-19 | 西部数据技术公司 | 用于存储装置的映射表 |
CN107807786A (zh) * | 2016-09-08 | 2018-03-16 | 宏碁股份有限公司 | 存储装置及其资料映射方法 |
CN107807786B (zh) * | 2016-09-08 | 2021-09-07 | 宏碁股份有限公司 | 存储装置及其资料映射方法 |
CN106775466A (zh) * | 2016-12-05 | 2017-05-31 | 深圳市金泰克半导体有限公司 | 一种无dram的ftl读缓存管理方法及装置 |
CN106980577B (zh) * | 2017-03-20 | 2020-04-28 | 华为机器有限公司 | 输入输出处理方法、装置及终端 |
CN106980577A (zh) * | 2017-03-20 | 2017-07-25 | 华为机器有限公司 | 输入输出处理方法、装置及终端 |
US11249917B2 (en) | 2017-04-28 | 2022-02-15 | SK Hynix Inc. | Data storage device and operating method thereof |
CN108804338A (zh) * | 2017-04-28 | 2018-11-13 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN108021512A (zh) * | 2017-11-22 | 2018-05-11 | 深圳忆联信息系统有限公司 | 一种固态硬盘映射管理方法及固态硬盘 |
CN107943719A (zh) * | 2017-11-28 | 2018-04-20 | 杭州电子科技大学 | 一种基于请求分类的闪存转换层控制方法 |
CN109840219A (zh) * | 2017-11-29 | 2019-06-04 | 北京忆恒创源科技有限公司 | 大容量固态存储设备的地址转换系统与方法 |
CN109840219B (zh) * | 2017-11-29 | 2024-04-05 | 北京忆恒创源科技股份有限公司 | 大容量固态存储设备的地址转换系统与方法 |
CN108153682B (zh) * | 2017-12-12 | 2020-10-27 | 西安交通大学 | 一种利用闪存内部并行性进行闪存转换层地址映射的方法 |
CN108153682A (zh) * | 2017-12-12 | 2018-06-12 | 西安交通大学 | 一种利用闪存内部并行性进行闪存转换层地址映射的方法 |
CN108519860B (zh) * | 2018-03-31 | 2021-01-19 | 深圳忆联信息系统有限公司 | 一种ssd读命中的处理方法和装置 |
CN108519860A (zh) * | 2018-03-31 | 2018-09-11 | 北京联想核芯科技有限公司 | 一种ssd读命中的处理方法和装置 |
CN110389904A (zh) * | 2018-04-20 | 2019-10-29 | 北京忆恒创源科技有限公司 | 具有压缩的ftl表的存储设备 |
CN110895445A (zh) * | 2018-09-12 | 2020-03-20 | 华为技术有限公司 | 数据处理方法和系统 |
CN110895445B (zh) * | 2018-09-12 | 2021-09-14 | 华为技术有限公司 | 数据处理方法和系统 |
CN110968527B (zh) * | 2018-09-30 | 2024-05-28 | 北京忆恒创源科技股份有限公司 | Ftl提供的缓存 |
CN110968527A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | Ftl提供的缓存 |
WO2020082449A1 (zh) * | 2018-10-24 | 2020-04-30 | 江苏华存电子科技有限公司 | 一种闪存存储中管理主机端逻辑位置对应映射表的方法 |
CN110262982A (zh) * | 2019-05-05 | 2019-09-20 | 杭州电子科技大学 | 一种固态硬盘地址映射的方法 |
CN110287129A (zh) * | 2019-06-27 | 2019-09-27 | 深圳忆联信息系统有限公司 | 基于固态硬盘的l2p表更新及写入管理方法和装置 |
CN110287129B (zh) * | 2019-06-27 | 2021-07-13 | 深圳忆联信息系统有限公司 | 基于固态硬盘的l2p表更新及写入管理方法和装置 |
WO2021082109A1 (zh) * | 2019-10-31 | 2021-05-06 | 江苏华存电子科技有限公司 | 一种在静态随机存取存储器上的混合型映象表 |
US12130735B2 (en) | 2020-06-30 | 2024-10-29 | Huawei Technologies Co., Ltd. | Data writing method and apparatus for flash memory-based system |
CN113656332B (zh) * | 2021-08-20 | 2023-05-26 | 中国科学院上海高等研究院 | 基于合并地址差值序列的cpu缓存数据预取方法 |
CN113656332A (zh) * | 2021-08-20 | 2021-11-16 | 中国科学院上海高等研究院 | 基于合并地址差值序列的cpu缓存数据预取方法 |
CN114676072A (zh) * | 2022-05-25 | 2022-06-28 | 阿里巴巴(中国)有限公司 | 数据处理方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103425600B (zh) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103425600B (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
CN103136121B (zh) | 一种固态盘的缓存管理方法 | |
CN102981963B (zh) | 一种固态盘的闪存转换层的实现方法 | |
Jiang et al. | S-FTL: An efficient address translation for flash memory by exploiting spatial locality | |
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
CN103164346B (zh) | 使用lba位图的方法与系统 | |
CN102768645B (zh) | 混合缓存的固态硬盘预取方法和固态硬盘ssd | |
US8364931B2 (en) | Memory system and mapping methods using a random write page mapping table | |
US8935484B2 (en) | Write-absorbing buffer for non-volatile memory | |
US20210064536A1 (en) | Sequential-write-based partitions in a logical-to-physical table cache | |
CN105094686B (zh) | 数据缓存方法、缓存和计算机系统 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN109582593B (zh) | 一种基于计算的ftl地址映射读、写方法 | |
CN105339910B (zh) | 在混合驱动器中的虚拟nand容量扩展 | |
US11194737B2 (en) | Storage device, controller and method for operating the controller for pattern determination | |
CN104166634A (zh) | 一种固态盘系统中的映射表缓存管理方法 | |
CN104102591A (zh) | 计算机子系统及在其中实现闪存转换层的方法 | |
KR20200033985A (ko) | 논리적/물리적 매핑 | |
CN104461393A (zh) | 一种闪存存储器的混合映射方法 | |
CN105493052A (zh) | 用于存储器管理的高速缓存操作 | |
CN102521160A (zh) | 写缓冲检测器、写入数据的寻址方法、并行通道写入方法 | |
CN104866428A (zh) | 数据存取方法和数据存取装置 | |
CN115203079A (zh) | 一种将数据写入固态硬盘的方法 | |
CN112612419B (zh) | Nvm的数据存储结构、存储方法、读取方法、设备及介质 | |
Park et al. | A hybrid flash translation layer design for SLC–MLC flash memory based multibank solid state disk |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |