CN107562639B - 擦除块读请求处理方法与装置 - Google Patents
擦除块读请求处理方法与装置 Download PDFInfo
- Publication number
- CN107562639B CN107562639B CN201610509670.5A CN201610509670A CN107562639B CN 107562639 B CN107562639 B CN 107562639B CN 201610509670 A CN201610509670 A CN 201610509670A CN 107562639 B CN107562639 B CN 107562639B
- Authority
- CN
- China
- Prior art keywords
- ftl
- physical address
- entry
- request
- physical
- 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/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
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
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)
Abstract
提供了擦除块读请求处理方法与装置。所公开的处理IO请求的方法,包括:响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;若包含第一物理地址的物理块处于擦除状态,重放所述第一读请求。
Description
技术领域
本发明涉及固态存储设备,更具体地,涉及固态存储设备处理IO请求时对访问擦除块的读请求的处理。
背景技术
参看图1,展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA、IDE、USB、PCIE、NVMe(NVM Express)、SAS、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)芯片105以及可选地固件存储器110。接口103可适配于通过例如SATA、IDE、USB、PCI E、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-progra mmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Ci rcuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器。控制部件104在运行时从固件存储器110加载固件。固件存储器110可以是NOR闪存、ROM、EEPROM,也可以是NVM芯片105的部分。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
FTL表包括多个FTL表条目(或称表项)。在一个实施例中,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一个例子中,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一个实施例中,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。
图2是现有技术的控制部件访问FTL表的示意图。控制部件204包括多个CPU(CPU210、CPU 212与CPU 214)与闪存接口,控制部件的CPU通过闪存接口访问固态存储设备中的NVM芯片。在控制部件204外部的存储器中存储FTL表,FTL表包括多个表项(表项220、表项222与表项224)。多个CPU的每个能够独立的访问FTL表。由于FTL表项可能被多个CPU同时访问,为实现数据一致性,为每个F TL表项提供锁。参看图2,为更新FTL表项224,CPU 210检查FTL表项224的锁234,在锁234指示FTL表项224未被加锁的情况下,CPU 210获得锁234(例如,将锁234设置为加锁状态),并获取FTL表项224(t1时刻)。接下来,CPU 210对获取的FTL表项224进行操作,并在t4时刻更新FTL表项224,以及将锁234释放(例如,将锁234设置为未加锁状态)。在t1-t4时刻期间,其他CPU(CPU 212与CPU 214)检索到锁234的存在,而暂时放弃对FTL表项224的访问。在图2中,t2时刻,CPU 212尝试访问FTL表项224,但发现无法获得锁234,于是放弃对FTL表项224的访问。类似地,CPU214也由于无法获得锁234而放弃在t3时刻对FTL表项224的访问。而在t4时候之后,CPU 210释放锁234,CPU 212与CPU 214中抢到锁234的那个CPU,将访问FTL表项234。在另一个例子中,在t1-t4时间段内,CP U 210的一个任务获得锁234,而CPU 210中的另一个任务由于没有获得锁234而也暂时放弃对FTL表项224的访问。
FTL表项的锁可以存储在对应的FTL表项的相同位置,或者在另外的存储空间中将多个FTL表项的锁集中存储。
发明内容
在固态存储设备中,同时处理多个IO请求,几乎每个IO请求都需要访问FTL表。而锁机制使得对FTL表项的访问串行化,降低了固态存储的并行处理能力,增加了IO请求的处理延迟。
在本发明中,提供了根据本发明第一方面的第一处理IO请求的方法,包括:响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;若包含第一物理地址的物理块处于擦除状态,重放所述第一读请求。
根据本发明第一方面的第一处理IO请求的方法,提供了根据本发明第一方面的第二处理IO请求的方法,还包括:若包含第一物理地址的第一物理块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第一方面的第一或第二处理IO请求的方法,提供了根据本发明第一方面的第三处理IO请求的方法,还包括:响应于收到对第一物理块的擦除请求,将第一物理块的状态设置为擦除状态;以及响应于收到对第一物理块的编程请求,将第一物理块的状态设置为已写入状态。
根据本发明第一方面的第一至第三处理IO请求的方法之一,提供了根据本发明第一方面的第四处理IO请求的方法,其中所述重放所述读请求包括:访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;若包含第一物理地址的第一物理块处于擦除状态,重放所述第一读请求;以及若包含第一物理地址的第一物理块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第二方面,提供了根据本发明第二方面的第一处理IO请求的方法,包括:响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;若包含第一物理地址的大块处于擦除状态,重放所述第一读请求。
根据本发明第二方面的第一处理IO请求的方法,提供了根据本发明第二方面的第二处理IO请求的方法,还包括:若包含第一物理地址的大块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第二方面的第一或第二处理IO请求的方法,提供了根据本发明第二方面的第三处理IO请求的方法,还包括:响应于收到对第一大块的擦除请求,将第一大块的状态设置为擦除状态;以及响应于收到对第一大块的编程请求,将第一大块的状态设置为已写入状态。
根据本发明第二方面的第一至第三处理IO请求的方法,提供了根据本发明第二方面的第四处理IO请求的方法,其中所述重放所述读请求包括:访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;若包含第一物理地址的第一大块处于擦除状态,重放所述第一读请求;以及若包含第一物理地址的第一大块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第一或第二方面的处理IO请求的方法,提供了根据本发明第一第二方面的第五处理IO请求的方法,其中即使第一FTL表项被加锁,也获取第一FTL表项记录的第一物理地址。
根据本发明第三方面,提供了根据本发明第三方面的第一处理IO请求的方法,包括:响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;从第一物理地址读取数据。
根据本发明第三方面的第一处理IO请求的方法,提供了根据本发明第三方面的第二处理IO请求的方法,还包括:若从第一物理地址读取数据的结果指示第一物理地址所在的物理页处于擦除状态,重放所述第一读请求。
根据本发明第三方面的第二处理IO请求的方法,提供了根据本发明第三方面的第三处理IO请求的方法,还包括:响应于重放所述第一读请求,若从第一物理地址读取数据的结果指示第一物理地址所在的物理页依然处于擦除状态,指示所述第一读请求操作失败。
根据本发明第三方面的第二处理IO请求的方法,提供了根据本发明第三方面的第四处理IO请求的方法,还包括:响应于重放所述第一读请求,若从第一物理地址读取数据的结果指示第一物理地址所在的物理页依然处于擦除状态,若包含第一物理地址的物理块处于擦除状态,重放所述第一读请求。
根据本发明第三方面的第四处理IO请求的方法,提供了根据本发明第三方面的第五处理IO请求的方法,还包括:响应于重放所述第一读请求,若从第一物理地址读取数据的结果指示第一物理地址所在的物理页依然处于擦除状态,若包含第一物理地址的第一物理块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第三方面的第四处理IO请求的方法,提供了根据本发明第三方面的第六处理IO请求的方法,还包括:响应于重放所述第一读请求,若从第一物理地址读取数据的结果指示第一物理地址所在的物理页依然处于擦除状态,若包含第一物理地址的大块处于擦除状态,重放所述第一读请求。
根据本发明第三方面的第六处理IO请求的方法,提供了根据本发明第三方面的第七处理IO请求的方法,还包括:响应于重放所述第一读请求,若从第一物理地址读取数据的结果指示第一物理地址所在的物理页依然处于擦除状态,若包含第一物理地址的大块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第四方面,提供了根据本发明第四方面的第一处理IO请求的方法,包括:响应于收到写请求,访问写请求对应的第一FTL表项,若第一FTL表项未被加锁,则对第一FTL表项加锁;响应于收到读请求,访问读请求对应的第一FTL表项,若第一FTL表项被加锁,以及若包含第一物理地址的物理块处于擦除状态,重放所述第一读请求;为写请求分配第一物理地址,以第一物理地址更新第一FTL表项,对第一FTL表项解锁,向第一物理地址写入数据。
根据本发明第四方面的第一处理IO请求的方法,提供了根据本发明第四方面的第二处理IO请求的方法,还包括:响应于收到读请求,访问读请求对应的第一FTL表项,若第一FTL表项被加锁,以及若包含第一物理地址的第一物理块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第四方面的第一或第二处理IO请求的方法,提供了根据本发明第四方面的第三处理IO请求的方法,其中在处理写请求时,若第一FTL表项被加锁,中止对所述写请求的处理,直到第一FTL表项的锁被释放。
根据本发明第四方面的第三处理IO请求的方法,提供了根据本发明第四方面的第四处理IO请求的方法,其中所述第一FTL表项的锁被释放后,获取所述第一FTL表项,并对第一FTL表项加锁。
根据本发明第四方面的第一或第二处理IO请求的方法,提供了根据本发明第四方面的第五处理IO请求的方法,其中在处理写请求时,若第一FTL表项被加锁,结束对所述写请求的处理。
根据本发明第五方面,提供了根据本发明第五方面的第一处理IO请求的方法,包括:响应于收到写请求,访问写请求对应的第一FTL表项,若第一FTL表项未被加锁,则对第一FTL表项加锁;响应于收到读请求,访问读请求对应的第一FTL表项,若包含第一物理地址的物理块处于擦除状态,重放所述第一读请求;为写请求分配第一物理地址,以第一物理地址更新第一FTL表项,对第一FTL表项解锁,向第一物理地址写入数据。
根据本发明第五方面的第一处理IO请求的方法,提供了根据本发明第五方面的第二处理IO请求的方法,还包括:响应于收到读请求,访问读请求对应的第一FTL表项,若包含第一物理地址的第一物理块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第五方面的第一或第二处理IO请求的方法,提供了根据本发明第五方面的第三处理IO请求的方法,其中在处理写请求时,若第一FTL表项被加锁,中止对所述写请求的处理,直到第一FTL表项的锁被释放。
根据本发明第五方面的第三处理IO请求的方法,提供了根据本发明第五方面的第四处理IO请求的方法,其中所述第一FTL表项的锁被释放后,获取所述第一FTL表项,并对第一FTL表项加锁。
根据本发明第五方面的第一或第二处理IO请求的方法,提供了根据本发明第五方面的第五处理IO请求的方法,其中在处理写请求时,若第一FTL表项被加锁,结束对所述写请求的处理。
根据本发明第六方面,提供了根据本发明第六方面的第一处理IO请求的方法,包括:响应于收到写请求,访问写请求对应的第一FTL表项,若第一FTL表项未被加锁,则对第一FTL表项加锁;响应于收到读请求,访问读请求对应的第一FTL表项,若包含第一物理地址的第一大块处于擦除状态,重放所述第一读请求;为写请求分配第一物理地址,以第一物理地址更新第一FTL表项,对第一FTL表项解锁,向第一物理地址写入数据。
根据本发明第六方面的第一处理IO请求的方法,提供了根据本发明第六方面的第二处理IO请求的方法,还包括:响应于收到读请求,访问读请求对应的第一FTL表项,若包含第一物理地址的第一大块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
根据本发明第六方面的第一或第二处理IO请求的方法,提供了根据本发明第六方面的第三处理IO请求的方法,其中在处理写请求时,若第一FTL表项被加锁,中止对所述写请求的处理,直到第一FTL表项的锁被释放。
根据本发明第六方面的第三处理IO请求的方法,提供了根据本发明第六方面的第四处理IO请求的方法,其中所述第一FTL表项的锁被释放后,获取所述第一FTL表项,并对第一FTL表项加锁。
根据本发明第六方面的第一或第二处理IO请求的方法,提供了根据本发明第六方面的第五处理IO请求的方法,其中在处理写请求时,若第一FTL表项被加锁,结束对所述写请求的处理。
根据本发明第七方面,提供了根据本发明第七方面的第一处理IO请求的装置,包括:FTL表项获取模块,用于响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;读请求重放模块,用于若包含第一物理地址的物理块处于擦除状态,重放所述第一读请求。
根据本发明第八方面,提供了根据本发明第八方面的第一处理IO请求的装置,包括:FTL表项获取模块,用于响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;读请求重放模块,用于若包含第一物理地址的大块处于擦除状态,重放所述第一读请求。
根据本发明第九方面,提供了根据本发明第九方面的第一处理IO请求的装置,包括:FTL表项获取模块,用于响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;读取模块,用于从第一物理地址读取数据。
根据本发明第十方面,提供了根据本发明第十方面的第一处理IO请求的装置,包括:FTL表项获取模块,用于响应于收到写请求,访问写请求对应的第一FTL表项,若第一FTL表项未被加锁,则对第一FTL表项加锁;读请求重放模块,用于响应于收到读请求,访问读请求对应的第一FTL表项,若第一FTL表项被加锁,以及若包含第一物理地址的物理块处于擦除状态,重放所述第一读请求;写请求处理模块,用于为写请求分配第一物理地址,以第一物理地址更新第一FTL表项,对第一FTL表项解锁,向第一物理地址写入数据。
根据本发明第十一方面,提供了根据本发明第十一方面的第一处理IO请求的装置,包括:FTL表项获取模块,用于响应于收到写请求,访问写请求对应的第一FTL表项,若第一FTL表项未被加锁,则对第一FTL表项加锁;读请求重放模块,用于响应于收到读请求,访问读请求对应的第一FTL表项,若包含第一物理地址的物理块处于擦除状态,重放所述第一读请求;写请求处理模块,用于为写请求分配第一物理地址,以第一物理地址更新第一FTL表项,对第一FTL表项解锁,向第一物理地址写入数据。
根据本发明第十二方面,提供了根据本发明第十二方面的第一处理IO请求的装置,包括:FTL表项获取模块,用于响应于收到写请求,访问写请求对应的第一FTL表项,若第一FTL表项未被加锁,则对第一FTL表项加锁;读请求处理模块,用于响应于收到读请求,访问读请求对应的第一FTL表项,若包含第一物理地址的第一大块处于擦除状态,重放所述第一读请求;写请求处理模块,用于为写请求分配第一物理地址,以第一物理地址更新第一FTL表项,对第一FTL表项解锁,向第一物理地址写入数据。
根据本发明的第十三方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行根据本发明第一方面至第六方面提供的处理IO请求的方法。
根据本发明的第十四方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行根据本发明第一方面至第六方面提供的处理IO请求的方法。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是现有技术的存储设备的框图;
图2是现有技术的存储设备的控制部件访问FTL表的示意图;
图3A是根据本发明实施例的存储设备的控制部件访问FTL表的示意图;
图3B是根据本发明另一实施例的存储设备的控制部件访问FTL表的示意图;
图3C是根据本发明依然另一实施例的存储设备的控制部件访问FTL表的示意图;以及
图4A是根据本发明实施例的为处理写命令而访问FTL表的流程图;
图4B是根据本发明实施例的为处理读命令而访问FTL表的流程图;
图5A是根据本发明又一实施例的存储设备的控制部件访问FTL表的示意图;
图5B是根据本发明又一实施例的处理IO请求的顺序图;
图6是根据本发明的实施例将NVM的物理块组织为块条带的示意图;
图7是根据本发明依然又一实施例的存储设备的控制部件访问FTL表的示意图;
图8A是根据本发明又一实施例的为处理写命令而访问FTL表的流程图;
图8B是根据本发明又一实施例的为处理读命令而访问FTL表的流程图;
图9A是根据本发明的实施例的为处理IO命令而访问FTL表的流程图;
图9B是根据本发明的再一实施例的为处理IO命令而访问FTL表的流程图;以及
图9C是根据本发明的又一实施例的为处理IO命令而访问FTL表的流程图。
具体实施方式
在NVMe(Non-Volatile Memory express,高速非易失存储)协议中,定义了不同的IO命令类型。对于一部分IO命令,对IO命令之间的顺序性不做要求。例如,如果提交了一个对逻辑地址x的读命令,以及还提交了一个对逻辑地址x的写命令,虽然写命令的执行结果,会影响读命令的执行结果,但如果在这两个IO命令中未要求他们之间的顺序性,NVMe协议允许固态存储设备以任意顺序执行这两个IO命令。
针对NVMe协议的此特性,在根据本发明的实施例中,对IO请求的处理方式做出改进,以提升固态存储设备的IO命令处理能力,降低IO命令的处理延迟。所属领域技术人员将意识到,虽然以NVMe协议为例描述根据本发明的实施例,在其他不要求IO命令之间的执行顺序中协议中,同样可实施根据本发明的实施例。
参看图3A,示出了根据本发明实施例的存储设备的控制部件访问FTL表的示意图。固态硬盘的控制部件304包括多个CPU(CPU 310、CPU 312与CPU 314),每个CPU能够访问外部于控制部件304的FTL表。FTL表存储在例如DRAM(Dyna mic Random Access Memory,动态随机访问存储器)中。控制部件的CPU还通过闪存接口(未示出)访问NVM芯片。作为举例,CPU310处理来自主机的写命令,根据写命令指示的逻辑地址在t1时刻访问FTL表项324(由图3A的W-t1指示),来为写命令分配物理地址。为避免多个写命令同时写相同的逻辑地址,在访问FTL表项时还请求与表项对应的锁。在图3A的例子中,CPU 310访问与FTL表项324对应的锁334。在图3的例子中,锁334指示FTL表项324未被加锁,CPU 310修改锁334以指示对FTL表项324的加锁。在根据本发明的实施例中,处理写命令时,要获取写命令将修改的FTL表项的锁。在无法获取到锁时,对该写命令的处理暂时中止,并等待锁的释放。在图3A的例子中,在t1时刻后,CPU 310获得FTL表项324的锁。此时,其他CPU为处理写命令要访问FTL表项324时,由于发现锁334指示FTL表项324已被加锁,则中止对访问FTL表项324的写命令的处理。
依然参看图3A,CPU 314处理来自主机的读命令,根据该读命令的逻辑地址在t2时刻访问FTL表项324。虽然FTL表项324已被加锁,在根据本发明的实施例中,CPU 314忽略FTL表项324的锁,依然获取FTL表项324,并根据FTL表项324获取要访问的物理地址。进一步地,CPU 314或其他CPU通过该物理地址读取数据,并向主机提供读取的数据作为对读命令的响应。由于处理读命令时不检查FTL表项324上是否被加锁,使得访问FTL表项324的写命令与访问FTL表项324的一个或多个读命令能够同时执行,从而提升了IO命令的并行处理能力。以及由于在处理读命令时,无需等待FTL表项324的锁被释放,降低了读命令处理的时间。
在图3A的例子中,为处理写命令,CPU 310为写命令分配新的物理地址,并用新的物理地址更新FTL表项324,在t3时刻,CPU 310完成对FTL表项324的更新(图3中,用W-t3指示)。以及还向新的物理地址写入数据来响应写命令。可由CP U 310或其他CPU来向新的物理地址写入数据。因而,在t3时刻之前的t2时刻,CP U 314从FTL表项324中获得的是旧的物理地址,而在t3时刻之后,响应于读命令从FTL表项324中获得的是新的物理地址(被CPU310在处理写命令时更新)。因而,在处理读命令时,若CPU 314在t3时刻之前访问FTL表项324,将得到在t3时刻之后访问FTL表项324不同的物理地址,进而读取到不同的数据。这样的结果符合诸如NVMe协议等对IO命令的处理顺序没有要求的协议。
在一个例子中,锁334与FTL表项324彼此分立地存储。为处理读命令,CPU314访问FTL表项324而无需访问锁334。在另一个例子中,锁334与FTL表项324存储在相同的存储位置。在处理读命令时,CPU 314访问FTL表项324的同时将获得锁334的内容,但CPU 314无需处理锁334的内容,而仅关心FTL表项324所提供的物理地址。
继续参看图3A,锁的粒度是针对每个FTL表项。响应于IO命令,CPU 312访问FTL表项328。对于读命令,CPU 312忽略与FTL表项328所对应的锁338;对于写命令,CPU 312检查与FTL表项328所对应的锁338,在锁338指示FTL表项328未被加锁时,才继续对写命令的处理,在锁338指示FTL表项328被加锁时,暂停对写命令的处理,或推迟对FTL表项328的更新。
图3B是根据本发明另一实施例的存储设备的控制部件访问FTL表的示意图。来自主机的读命令或写命令访问不同长度的数据,并访问不同数量的FTL表项。在根据本发明的实施例中,加锁的粒度是每个FTL表项。作为举例,CPU 310处理来自主机的写命令,写命令访问3个逻辑地址,根据写命令指示的逻辑地址CPU 310在t1时刻访问FTL表项320、FTL表项322与FTL表项324(由图3B的W1-t1、W2-t1与W3-t1指示),来为写命令分配物理地址。CPU310在访问FTL表项时还请求与表项对应的锁,通过访问锁330、锁332与锁334来请求与FTL表项320、FTL表项322以及FTL表项324对应的锁。在获取到对应的锁时,CPU 310进行后续操作,分配新的物理地址并用新的物理地址更新对应的FTL表项,在无法获取到对应的锁时,C PU310中止对对应FTL表项的操作,等待对应的锁被释放。例如,CPU 310获得了FTL表项320与FTL表项322的锁,但未获得FTL表项324的锁,则CPU 310继续后续处理更新FTL表项320与FTL表项322,并中止对FTL表项324的操作,直到F TL表项324的锁334被释放并由CPU 310获得,CPU 310继续更新FTL表项324。响应于FTL表项被更新,还向新的物理地址处写入数据来响应写命令。当写命令对应的三个FTL表项的新物理地址均被写入数据后,写命令处理完成。
依然参看图3B,CPU 314处理来自主机的读命令,根据该读命令的逻辑地址在t2时刻访问FTL表项324(在图3B中,记为R-t2)。虽然FTL表项324已被CP U 310在处理写命令时加锁,在根据本发明的实施例中,CPU 314忽略FTL表项324的锁,依然获取FTL表项324,并根据FTL表项324获取要访问的物理地址。进一步地,CPU 314或其他CPU通过该物理地址读取数据,并向主机提供读取的数据作为对读命令的响应。由于处理读命令时不检查FTL表项324上是否被加锁,使得访问FTL表项324的写命令与访问FTL表项324的一个或多个读命令能够同时执行,从而提升了IO命令的并行处理能力。以及由于在处理读命令时,无需等待FTL表项324的锁被释放,降低了读命令处理的时间。
图3C是根据本发明依然另一实施例的存储设备的控制部件访问FTL表的示意图。在图3C是示出的实施例中,同一CPU上可并行处理多个IO命令。作为举例,C PU 310处理来自主机的写命令,根据写命令指示的逻辑地址CPU 310在t1时刻访问FTL表项324(由图3C的W1-t2指示),来为写命令分配物理地址。CPU310在访问FTL表项时还请求与表项对应的锁,通过访问锁334来请求与FTL表项324对应的锁。在获取到对应的锁时,CPU 310进行后续操作,分配新的物理地址并用新的物理地址在t3时刻更新对应的FTL表项324(由图3C的W3-t3指示对FTL表项324的更新)。在t1与t3时刻之间,CPU 310还响应主机的读命令,在t2时刻访问FTL表项324。虽然在t2时刻,锁334指示FTL表项324被加锁,但对于读命令,即使FTL表项324上存在锁,CPU310依然访问并使用FTL表项324,利用FTL表项324提供的物理地址读取数据。在进一步的实施例中,CPU 310缓存在t1时刻取得的FTL表项324,并在t2时刻从CPU 310的缓存中取得FTL表项324的内容。以及对于处理读命令,无论CPU 310缓存的FTL表项324是否被更新,都利用缓存的FTL表项324提供的物理地址读取数据。在t2时刻,CPU 314响应于另一读命令的逻辑地址而访问FTL表项324(图3C中,用R3-t2示出)。由于是读命令,虽然锁334指示FTL表项324被加锁,CPU 314依然访问并使用FTL表项324,并用FTL表项324提供的物理地址读取数据。
图4A是根据本发明实施例的为处理写命令而访问FTL表的流程图。在根据本发明的实施例中,响应于收到访问第一FTL表项的逻辑地址的写命令(410),检查第一FTL表项是否被加锁(420)。若第一FTL表项被加锁,中止对该第一FTL表项的后续处理,并等待第一FTL表项的锁被释放。对第一FTL表项的后续处理是该写命令的处理的一部分。若第一FTL表项未被加锁,或者第一FTL表项的锁被释放,为处理该写命令,对第一FTL表项加锁(430),以使得访问第一FTL表项的其他写命令暂时挂起。为处理该写命令,为该写命令分配第一物理地址,以第一物理地址更新第一FTL表项,将更新后的FTL表项写入FTL表,并对第一FTL表项解锁(440)。为写命令分配新的物理地址可利用所属领域中已知的多种方式。以及将该写命令对应的数据写入第一物理地址(450)。
在另一个例子中,在响应于收到第二写命令而访问写命令的逻辑地址对应的第一FTL表项时,发现第一FTL表项被加锁,则完成对第二写命令的处理,而不再为第二写命令分配物理地址,也不将第二写命令对应的数据写入非易失存储器。
图4B是根据本发明实施例的为处理读命令而访问FTL表的流程图。响应于收到读命令,读命令的逻辑地址对应第一FTL表项(432)。对于读命令,不检查第一FT L表项是否被加锁。即使由于处理写命令,第一FTL表项已被加锁(参见图4A的步骤430),在处理读命令时,也从FTL表中获取并使用被加锁的第一FTL表项(434)。以及根据第一物理地址读出数据(436)作为对读命令的响应。
在另一个例子中,为处理读命令而获取第一FTL表项时,若第一FTL表项被加锁,则表明有在执行中的写命令在访问第一FTL表,而写命令要写入的数据在缓存中。从缓存中查找访问第一FTL表的写命令要写入的数据,作为读命令的读出数据。从缓存中获取数据的速度远快于从非易失存储芯片中获取数据的速度,从而利用缓存的待写入数据作为对读命令的响应,进一步降低了读命令的处理时间。
图5A是根据本发明又一实施例的存储设备的控制部件访问FTL表的示意图。
固态硬盘的控制部件504包括多个CPU(CPU 510、CPU 512、CPU 514),每个CPU能够访问外部于控制部件504的FTL表。控制部件的CPU还通过闪存接口访问NVM芯片505。NVM芯片505包括多个存储单元,例如存储单元550、存储单元552、存储单元560以及存储单元562。作为举例,CPU 510处理来自垃圾回收任务的写命令,根据写命令指示的逻辑地址在t1时刻访问FTL表项524(由图5A的Wg-t1指示),来为写命令分配物理地址。为避免多个写命令同时写相同的逻辑地址,在访问FTL表项时还请求与表项对应的锁。在图5A的例子中,CPU 510访问与FTL表项524对应的锁534。在图5A的例子中,CPU 510修改锁534以指示对FTL表项524的加锁。
依然参看图5A,CPU 514处理来自主机的读命令,根据该读命令的逻辑地址在t2时刻访问FTL表项524(在图5A中由R-t2指示)。虽然FTL表524已被加锁,在根据本发明的实施例中,在处理读命令时,CPU 514忽略FTL表项524的锁,依然获取FTL表项524,并根据FTL表项524获取要访问的物理地址。CPU 514根据获取的物理地址,通过闪存接口访问NVM芯片505的物理地址,并获得要读取的数据。
在图5A的例子中,为处理来自垃圾回收任务的写命令,CPU 510为写命令分配新的物理地址,并用新的物理地址更新FTL表项524,在t3时刻,CPU 510完成对F TL表项524的更新(图5A中,用Wg-t3指示)。以及还向新的物理地址写入数据来响应写命令。
在一些情况下,CPU 514处理读命令时,所访问的物理地址在NVM芯片505中是处于擦除状态的物理块。处于擦除状态的物理块中不具有有效数据,不应当被读取。图5B是根据本发明又一实施例的处理IO请求的顺序图,其展示了CPU 514读到NVM芯片505中的擦除块的原因。图5B中,时间轴展示了时间的流逝方向。响应于垃圾回收(GC)写命令560,CPU 510根据写命令560指示的逻辑地址在t1时刻访问FTL表项524(由图5A的Wg-t1指示),FTL表项524被加锁,FTL表524的物理地址指示NVM芯片505的存储单元550。在处理GC写命令(560)过程中,接下来,FTL表项524被CPU 510更新,FTL表项524更新后的物理地址指示存储单元560。
在FTL表项524被加锁后,收到用户读命令(570),CPU 514处理用户读命令(570),并获取FTL表项524。由于CPU 514获取FTL表项524时忽略FTL表项524的锁534,且获取FTL表项524的时机在FTL表项524被CPU 510更新之前,因而从FTL表项524中获取的物理地址指示存储单元550。
继续参看图5B,在GC写命令(560)后,会紧跟GC擦除命令(562),响应于GC擦除命令(562),擦除GC写命令(560)的所影响的旧物理地址(存储单元550)。从而NVM芯片的存储单元550处于擦除状态。而CPU 514为处理用户读命令(570)而获得了旧的FTL表项524,并通过闪存接口向存储单元550发出读命令。CPU 514向存储单元550发出读命令与CPU 510向存储单元550发出擦除命令,这两个操作会以任意的顺序发生,使得CPU 514发出读命令时,存储单元550可能处于擦除状态,从而读命令无法被正确处理。
在根据本发明的实施例中(参看图5A),为解决上述问题,控制部件504还维护块状态表540。在块状态表540中,记录NVM芯片550的每个物理块是处于擦除状态,还是处于已经被写入状态。在一个例子中,当物理块被擦除时,更新块状态表540,以标识物理块处于被擦除状态。而当物理块被第一次写入时,更新块状态表540,以标识物理块处于已写入状态。CPU 514通过闪存接口向NVM芯片505发出读命令前,用从FTL表项524获取的物理地址得到该物理地址所在的物理块,并在块状态表540中查询该物理块的状态。若该物理块处于已写入状态,则CPU 514通过闪存接口向NVM芯片505发出读命令;若该物理块处于被擦除状态,则CPU 514指示重放读命令。作为举例,重放读命令的含义在于,控制部件504将该读命令视作新收到的读命令,并重新处理。由于重新处理需要时间,在重新获取FTL表项524时,其内容以很大概率已被更新,新获取的FTL表项524将提供更新后的物理地址,而更新后的物理地址中存储有效数据。在极少数情况下,作为举例,重新获取FTL表项524时,F TL表项524的更新依然未完成,重新获取的FTL表项依然是旧的处于被擦除状态的物理地址。在此情况下,在一个例子中,再次重放读命令,以重新获取FTL表项524;而在另一个例子中,CPU 514进一步识别与FTL表项524对应的锁534。若锁534指示FTL表项524被加锁,则CPU 514等待锁534的释放以获取更新后的FTL表项524,再用更新后的FTL表项524提供的物理地址来访问NVM芯片505;若锁534指示FTL表项524未被加锁,则立即用FTL表项524提供的物理地址来访问NVM芯片505。
图6是根据本发明的实施例将NVM的物理块组织为块条带的示意图。图6所示的固态存储设备中,在每16个逻辑单元(LUN0、LUN1、……LUN15)上构造块条带,每个逻辑单元内相同物理地址的物理块构成了“块条带”。
图6中,LUN0-LUN15中地址为0的块B0构成了块条带0,其中LUN0到LUN14的物理块B0用于存储用户数据,而LUN15的物理块B0用于存储根据块条带内的用户数据计算得到的校验数据。NVM的物理块包括多个页,块条带中具有相同地址的物理页构成页条带,为每个页条带计算校验数据。例如,在LUN15的物理块B0的每个物理页存储了该物理页所在的页条带的所有用户数据计算得到的校验数据。
类似地,图6中,LUN0-LUN15中地址为2的物理块B2块条带2。可选地,用于存储校验数据的物理块可以位于块条带中的任意LUN中。在图6的例子中,利用块条带中的校验数据,在块条带的1个物理页的数据损坏的情况下,能够从该物理页所在的页条带的其他页中恢复损坏页的数据。
所属领域技术人员将意识到,可以用多种其他的数据组织方式构造块条带。在块条带中包括多个物理块,并且在块条带中通过冗余或RAID技术提供数据保护。从而在块条带中的一个或若干物理块损坏的情况下,通过块条带的其他块能够重建虽坏的物理块的数据。按块条带为单位实施擦除。在执行擦除操作时,属于块条带的所有物理块被一起擦除。
图7是根据本发明依然又一实施例的存储设备的控制部件访问FTL表的示意图。同图5A相比,在图7的实施例中,控制部件504还包括CPU 516,以及NVM 705上包括块条带750、块条带752、块条带754与块条带756,以及记录每个块条带的状态的块条带状态表740。在块条带状态表740中,包括多个条目(条目760、条目762、条目764与条目766),每个条目记录NVM 705的对应块条带是处于擦除状态,还是处于已经被写入状态。在一个例子中,当块条带被擦除时,更新块条带状态表740,以标识块条带处于被擦除状态。而当块条带被第一次写入时,更新块条带状态表740,以标识物理块处于已写入状态。
在图7的实施例中,为处理器读命令,CPU 514访问FTL表项524,将FTL表项524提供的物理提供提供给CPU 516。CPU 516通过闪存接口向NVM 705发出读命令。CPU 516通过闪存接口向NVM 705发出读命令前,用从FTL表项524获取的物理地址得到该物理地址所在的块条带,并在块条带状态表740中查询该块条带的状态。若该块条带处于已写入状态,则CPU516通过闪存接口向NVM 705发出读命令;若该物理块处于被擦除状态,则CPU 516指示重放读命令。在极少数情况下,作为举例,重新获取FTL表项524时,FTL表项524的更新依然未完成,重新获取的FT L表项提供的依然是旧的处于被擦除状态的物理地址。在此情况下,在一个例子中,再次重放读命令,以重新获取FTL表项524;而在另一个例子中,CPU 516进一步识别与FTL表项524对应的锁534。若锁534指示FTL表项524被加锁,则CPU 614等待锁534的释放以获取更新后的FTL表项524,再将更新后的FTL表项524提供的物理地址提供给CPU 516;若锁534指示FTL表项524未被加锁,则立即将FTL表项524提供的物理地址提供给CPU 516。
图8是根据本发明又一实施例的为处理IO命令而访问FTL表的流程图。在根据图8的实施例中,响应于收到访问第一FTL表项的逻辑地址的写命令(802),检查第一FTL表项是否被加锁(804)。若第一FTL表项被加锁,中止对该第一FTL表项的后续处理,并等待第一FTL表项的锁被释放。对第一FTL表项的后续处理是该写命令的处理的一部分。若第一FTL表项未被加锁,或者第一FTL表项的锁被释放,为处理该写命令,对第一FTL表项加锁(806),以使得访问第一FTL表项的其他写命令暂时挂起。为处理该写命令,为该写命令分配第一物理地址,以第一物理地址更新第一FTL表项,将更新后的FTL表项写入FTL表,并对第一FTL表项解锁(808)。为写命令分配新的物理地址可利用所属领域中已知的多种方式。以及将该写命令对应的数据写入第一物理地址(809)。
在另一个例子中,在响应于收到第二写命令而访问写命令的逻辑地址对应的第一FTL表项时,发现第一FTL表项被加锁,则完成对第二写命令的处理,而不再为第二写命令分配物理地址,也不将第二写命令对应的数据写入非易失存储器。
继续参看图8,响应于收到读命令,读命令的逻辑地址也对应第一FTL表项(810)。对于读命令,不检查第一FTL表项是否被加锁。即使由于处理写命令,第一F TL表项已被加锁(参见图8的步骤806),在处理读命令时,也从FTL表中获取并使用被加锁的第一FTL表项,获取第一FTL表项提供的第一物理地址(820)。接下来,依据第一物理地址获取对应的物理块或块条带,从块状态表(参见图5A,540)或块条带状态表(参见图7,740)中获取对应的物理块或块条带的状态。若获取的状态指示第一物理地址所在的物理块或块条带处于被擦除状态(830),则重放读命令,换句话说,通过步骤810重新处理该读命令。若获取的状态指示第一物理地址所在的物理块或块条带处于已写入状态(830),则从第一物理地址读出数据来响应该读命令(840)。
图9A是根据本发明的实施例的为处理IO命令而访问FTL表的流程图。在图9A的实施例中,响应于收到读命令,读命令的逻辑地址对应第一FTL表项(910)。对于读命令,不检查第一FTL表项是否被加锁。即使由于处理写命令,第一FTL表项已被加锁,在处理读命令时,也从FTL表中获取并使用被加锁的第一FTL表项,获取第一FTL表项提供的第一物理地址(920)。接下来,依据第一物理地址向NV M发送读命令,以从第一物理地址读出数据(925)。在读取数据的结果中指示第一地址对应的物理页是否处于擦除状态(930)。在一个例子中,NVM芯片在读取数据的结果中提供这样的指示,来标识所读取的物理页是否处于擦除状态。在另一个例子中,控制部件的闪存接口依据从NVM芯片读出的数据判断所读出的数据是否来自处于擦除状态的物理页。
继续参看图9A,若读取数据结果指示第一物理地址对应的物理页处于擦除状态,返回步骤910,重放该读命令。若读取数据结果指示第一物理地址对应的物理页非处于已擦除状态,则所读取的数据有效,以读取的数据作为对读命令的响应,读命令处理完成(940)。
在图9A的实施例中,在获得第一物理地址后,不首先检查第一物理地址所在的物理块或块条带是否处于擦除状态。因为第一物理地址所在的物理块或块条带处于擦除状态的机率很低,在大多数情况下,检查是否处于擦除状态的操作将引入额外的延迟。在图9A的实施例中,在获得第一物理地址后,不首先检查第一物理地址所在的物理块或块条带是否处于擦除状态,而直接从第一物理地址读出数据,并依赖于读取数据结果提供的指示来判断所读取的物理页是否处于擦除状态。从而仅在所读取的物理页处于擦除状态时,进行额外的处理,降低了读命令的平均处理延迟。
图9B是根据本发明的再一实施例的为处理IO命令而访问FTL表的流程图。图9B的实施例同图9A的实施例相似,差别之处在于,当从第一物理地址读出数据,在读取数据的结果中判断第一地址对应的物理页是否处于擦除状态时(980),若读取数据结果指示第一物理地址对应的物理页处于擦除状态,依据第一物理地址获取对应的物理块或块条带,从块状态表(参见图5A,540)或块条带状态表(参见图7,740)中获取对应的物理块或块条带的状态(990)。若第一物理地址所在的物理块或块条带处于已写入状态(990),则从第一物理地址读取数据结果指示物理页处于擦除状态与第一FTL表项是否被加锁无关,而是第一物理地址所存储的数据已损坏,指示读命令处理失败作为对读命令的响应(995)。若第一物理地址所在的物理块或块条带处于被擦除状态(990),返回步骤950重放读命令。而当从第一物理地址读出数据,在读取数据的结果中判断第一地址对应的物理页是否处于擦除状态时(980),若读取数据结果指示第一物理地址对应的物理页非处于擦除状态,则以读出数据作为对读命令的响应,读命令处理完成(985)。
依然参看图9B,在另一个例子中,当第一次经过步骤980,第一次从第一物理地址读出数据,在读取数据的结果中判断第一地址对应的物理页处于被擦除状态时(980),由图9B中的虚线所示,直接重放读命令。而对于同一读命令,由于被重放,而第二次经过步骤980时,若在读取数据的结果中再次判断第一地址对应的物理页处于被擦除状态(980),才进入到步骤990,从块状态表(参见图5A,540)或块条带状态表(参见图7,740)中获取对应的物理块或块条带的状态。
在图9B的实施例,在遇到读取的物理页是处于被擦除状态的物理页时,采用不同的处理策略,以获得更佳的错误处理效率。
图9C是根据本发明的又一实施例的为处理IO命令而访问FTL表的流程图。图9B的实施例同图9C的实施例相似,差别之处在于,当从第一物理地址读出数据,在读取数据的结果中判断第一地址对应的物理页是否处于擦除状态时(980),查询第一FTL表项是否被加锁(992)。若第一FTL表项未被加锁(992),则从第一物理地址读取数据结果指示物理页处于擦除状态与第一FTL表项是否被加锁无关,而是第一物理地址所存储的数据已损坏,指示读命令处理失败作为对读命令的响应(995)。若第一FTL表项被加锁(992),则从第一物理地址读取数据结果指示物理页处于擦除状态与第一FTL表项被加锁有关,等待第一FTL表项的锁被释放,再次获取第一F TL表项并得到更新后的第一FTL提供的第二物理地址(994)。以及以第二物理地址向NVM发出访问命令,从NVM的第二物理地址读出数据(996),作为对读命令的响应。
依然参看图9C,在另一个例子中,当第一次经过步骤980,第一次从第一物理地址读出数据,在读取数据的结果中判断第一地址对应的物理页处于被擦除状态时(980),由图9C中的虚线所示,返回步骤950,直接重放读命令。而对于同一读命令,由于被重放,而第二次经过步骤980时,若在读取数据的结果中再次判断第一地址对应的物理页处于被擦除状态(980),才进入到步骤992,查询第一FTL表项是否被加锁,并进行后续处理。
在图9C的实施例,在遇到读取的物理页是处于被擦除状态的物理页时,采用不同的处理策略,以获得更佳的错误处理效率。
本发明实施例还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行上面提供的根据本发明实施例的方法之一。
本发明实施例还提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述程序使存储设备的处理器执行上面提供的根据本发明实施例的方法之一。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (9)
1.一种处理IO请求的方法,包括:
响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取
第一FTL表项记录的第一物理地址;
若包含第一物理地址的物理块处于擦除状态,重新处理所述第一读请求。
2.根据权利要求1所述的方法,还包括:
若包含第一物理地址的第一物理块处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
3.根据权利要求1-2之一所述的方法,还包括:
响应于收到对第一物理块的擦除请求,将第一物理块的状态设置为擦除状态;以及
响应于收到对第一物理块的编程请求,将第一物理块的状态设置为已写入状态。
4.一种处理IO请求的方法,包括:
响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取
第一FTL表项记录的第一物理地址;
若包含第一物理地址的块条带处于擦除状态,重新处理所述第一读请求。
5.根据权利要求4所述的方法,还包括:
若包含第一物理地址的块条带处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
6.一种处理IO请求的方法,包括:
响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;
从第一物理地址读取数据;
若从第一物理地址读取数据的结果指示第一物理地址所在的物理页处
于擦除状态,重新处理所述第一读请求。
7.一种处理IO请求的方法,包括:
响应于收到写请求,访问写请求对应的第一FTL表项,若第一FTL表项未被加锁,则对第一FTL表项加锁;
响应于收到第一读请求,访问第一读请求对应的第一FTL表项,若包含第一物理地址的第一块条带处于擦除状态,重新处理所述第一读请求;
为写请求分配第一物理地址,以第一物理地址更新第一FTL表项,对第一FTL表项解锁,向第一物理地址写入数据。
8.根据权利要求7所述的方法,还包括:
响应于收到第一读请求,访问第一读请求对应的第一FTL表项,若包含第一物理地址的第一块条带处于已写入状态,从第一物理地址读取数据以响应所述第一读请求。
9.一种处理IO请求的装置,包括:
FTL表项获取模块,用于响应于收到第一读请求,访问第一读请求对应的第一FTL表项,获取第一FTL表项记录的第一物理地址;
读请求重新处理模块,用于若包含第一物理地址的物理块处于擦除状态,重新处理所述第一读请求。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610509670.5A CN107562639B (zh) | 2016-07-01 | 2016-07-01 | 擦除块读请求处理方法与装置 |
CN202010652412.9A CN111625477B (zh) | 2016-07-01 | 2016-07-01 | 访问擦除块的读请求的处理方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610509670.5A CN107562639B (zh) | 2016-07-01 | 2016-07-01 | 擦除块读请求处理方法与装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010652412.9A Division CN111625477B (zh) | 2016-07-01 | 2016-07-01 | 访问擦除块的读请求的处理方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107562639A CN107562639A (zh) | 2018-01-09 |
CN107562639B true CN107562639B (zh) | 2020-08-11 |
Family
ID=60968557
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610509670.5A Active CN107562639B (zh) | 2016-07-01 | 2016-07-01 | 擦除块读请求处理方法与装置 |
CN202010652412.9A Active CN111625477B (zh) | 2016-07-01 | 2016-07-01 | 访问擦除块的读请求的处理方法与装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010652412.9A Active CN111625477B (zh) | 2016-07-01 | 2016-07-01 | 访问擦除块的读请求的处理方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN107562639B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968525A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | Ftl提供的缓存、其优化方法与存储设备 |
CN112558874B (zh) * | 2020-12-14 | 2022-08-19 | 杭州宏杉科技股份有限公司 | 数据销毁方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1362708A (zh) * | 2001-01-02 | 2002-08-07 | 吴秀林 | 一种闪存芯片的读写方法 |
CN101853699A (zh) * | 2009-03-04 | 2010-10-06 | 三星电子株式会社 | 非易失性存储设备及其操作方法 |
CN103514053A (zh) * | 2013-09-22 | 2014-01-15 | 中国科学院信息工程研究所 | 一种基于共享内存的进程间通讯方法 |
CN103677670A (zh) * | 2013-12-11 | 2014-03-26 | 华为技术有限公司 | 读数据的方法及装置 |
CN104102458A (zh) * | 2014-06-27 | 2014-10-15 | 北京兆易创新科技股份有限公司 | 多核cpu的负载均衡方法、多核cpu及固态硬盘 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100725390B1 (ko) * | 2005-01-06 | 2007-06-07 | 삼성전자주식회사 | 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법 |
CN101477492B (zh) * | 2009-01-21 | 2010-12-29 | 华中科技大学 | 一种用于固态硬盘的循环重写闪存均衡方法 |
KR20120081351A (ko) * | 2011-01-11 | 2012-07-19 | 에스케이하이닉스 주식회사 | Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법 |
US9740439B2 (en) * | 2011-12-23 | 2017-08-22 | International Business Machines Corporation | Solid-state storage management |
TWI475385B (zh) * | 2012-03-14 | 2015-03-01 | Phison Electronics Corp | 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置 |
CN103176858B (zh) * | 2013-03-11 | 2017-05-03 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
CN103942159A (zh) * | 2014-03-19 | 2014-07-23 | 华中科技大学 | 一种基于混合存储设备的数据读写方法与装置 |
US9612957B2 (en) * | 2014-07-30 | 2017-04-04 | Qualcomm Innovation Center, Inc. | Read disturb and data retention handling for NAND devices |
US9569114B2 (en) * | 2014-11-14 | 2017-02-14 | Sk Hynix Memory Solutions Inc. | Deduplication using a master and a slave |
CN104636285B (zh) * | 2015-02-03 | 2016-03-23 | 北京麓柏科技有限公司 | 一种闪存存储系统及其读写、删除方法 |
CN105630704A (zh) * | 2015-06-10 | 2016-06-01 | 上海磁宇信息科技有限公司 | 存储装置及使用基于块的逻辑物理地址对照表的读写方法 |
-
2016
- 2016-07-01 CN CN201610509670.5A patent/CN107562639B/zh active Active
- 2016-07-01 CN CN202010652412.9A patent/CN111625477B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1362708A (zh) * | 2001-01-02 | 2002-08-07 | 吴秀林 | 一种闪存芯片的读写方法 |
CN101853699A (zh) * | 2009-03-04 | 2010-10-06 | 三星电子株式会社 | 非易失性存储设备及其操作方法 |
CN103514053A (zh) * | 2013-09-22 | 2014-01-15 | 中国科学院信息工程研究所 | 一种基于共享内存的进程间通讯方法 |
CN103677670A (zh) * | 2013-12-11 | 2014-03-26 | 华为技术有限公司 | 读数据的方法及装置 |
CN104102458A (zh) * | 2014-06-27 | 2014-10-15 | 北京兆易创新科技股份有限公司 | 多核cpu的负载均衡方法、多核cpu及固态硬盘 |
Also Published As
Publication number | Publication date |
---|---|
CN107562639A (zh) | 2018-01-09 |
CN111625477B (zh) | 2023-09-05 |
CN111625477A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289304B2 (en) | Physical address management in solid state memory by tracking pending reads therefrom | |
US9535628B2 (en) | Memory system with shared file system | |
US20140195725A1 (en) | Method and system for data storage | |
US9116622B2 (en) | Storage system having nonvolatile semiconductor storage device with nonvolatile semiconductor memory | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
US20120059978A1 (en) | Storage array controller for flash-based storage devices | |
US10649891B2 (en) | Storage device that maintains mapping data therein | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
US11662952B2 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
US10223001B2 (en) | Memory system | |
US20190243758A1 (en) | Storage control device and storage control method | |
US11650760B2 (en) | Memory system and method of controlling nonvolatile memory with checking a total size indicative of a sum of data length specified by a write command | |
CN110569000A (zh) | 基于固态硬盘阵列的主机端raid管理方法和装置 | |
CN107562639B (zh) | 擦除块读请求处理方法与装置 | |
CN107562648B (zh) | 无锁ftl访问方法与装置 | |
CN107562654B (zh) | Io命令处理方法与装置 | |
CN108628761B (zh) | 原子命令执行方法与装置 | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
US10891239B2 (en) | Method and system for operating NAND flash physical space to extend memory capacity | |
KR20210142863A (ko) | 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법 | |
CN113051187A (zh) | 存储设备的ftl表的无锁访问 | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
EP4287028A1 (en) | Storage device providing high purge performance and memory block management method thereof | |
KR20220159270A (ko) | 스토리지 장치 및 그 동작 방법 | |
KR20230166803A (ko) | 높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법 |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 Room 302, 3 / F, building B-2, Dongsheng Science Park, 66 xixiaokou Road, Haidian District, Beijing Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd. |