CN111694508B - 在基于NVMe的SSD中管理LBA重叠检查的方法和系统 - Google Patents
在基于NVMe的SSD中管理LBA重叠检查的方法和系统 Download PDFInfo
- Publication number
- CN111694508B CN111694508B CN201910688350.4A CN201910688350A CN111694508B CN 111694508 B CN111694508 B CN 111694508B CN 201910688350 A CN201910688350 A CN 201910688350A CN 111694508 B CN111694508 B CN 111694508B
- Authority
- CN
- China
- Prior art keywords
- command
- overlap
- lba
- count value
- outstanding
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000013403 standard screening design Methods 0.000 title description 6
- 239000007787 solid Substances 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 description 7
- 239000002184 metal Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009118 appropriate response Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/064—Management of blocks
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Programmable Controllers (AREA)
- Information Transfer Systems (AREA)
Abstract
一种用于在基于非易失性存储器快速(NVMe)的固态驱动器(SSD)中管理逻辑块地址(LBA)范围重叠检查的方法,包括:由LBA重叠检查(LOC)模块检测进入命令的LBA范围与SSD控制器中至少一个未完成命令的LBA范围之间的重叠,由LOC模块确定与进入命令相对应的重叠计数值,其中该重叠计数值指示进入命令的LBA范围和至少一个未完成命令的LBA范围之间出现重叠,并且由SSD控制器基于与进入命令相对应的重叠计数值来执行进入命令。
Description
相关申请的交叉引用
本申请以2019年3月13日向印度知识产权局提交的第No.201941009763号印度专利申请为基础,并要求该专利申请的优先权,该专利申请的公开内容通过整体引用并入本文。
技术领域
本文发明构思的示例性实施例涉及基于非易失性存储器快速(Non-VolatileMemory express,NVMe)的固态驱动器(Solid State Drive,SSD),并且更具体地,涉及在支持多路径输入/输出(Input/Output,I/O)的裸金属多内核的基于外围组件互连快速(Peripheral Component Interconnect express,PCIe)的NVMe SSD中管理逻辑块地址(Logical Block Address,LBA)重叠检查的方法和系统。
背景技术
能够按照NVMe规范通过传送命令与控制器进行交互的实体可以被称为主机。NVM主机控制器接口(NVM Host Controller Interface,NVMHCI)规范是一种逻辑设备接口规范,用于访问通过PCIe总线附接的非易失性存储介质。基于NVMe的SSD包括主机控制器,该主机控制器包括多个内核。SSD中的主机控制器可以执行诸如命令验证、命令执行、LBA重叠出现管理、与主机的数据传输等功能。控制器能够有效利用SSD中的闪存。多个内核可以允许同时或并行地执行多个命令,这需要访问SSD的闪存中的逻辑块。主机控制器可以基于命令中指定的起始逻辑块地址(Starting Logical Block Address,SLBA)和逻辑块数量(Number of Logical Blocks,NLB)来识别和/或访问逻辑块。
考虑以下情况:由控制器的相同或不同内核处理的多个命令试图访问相同命名空间的相同逻辑块,例如,命令的LBA范围与来自相同命名空间的、另一命令的LBA范围重叠。这种情况可以被称为LBA重叠的出现,其中具有重叠LBA范围的命令在控制器中未完成。当检测到LBA重叠情况时,可能会阻止其它命令的执行。
其它命令可能在继多个命令之后到达控制器,并且可以尝试访问闪存的不同逻辑块。由后续命令访问的逻辑块可能不同于由LBA范围相互重叠的命令访问的逻辑块。
在检测到LBA重叠之后,可能会阻止后续命令的执行,以确保SSD的闪存中数据的完整性,防止数据损坏、错误出现等。这可能导致后续命令的执行的延迟增加。在最坏的情况下,LBA重叠可能导致后续命令的执行超时。
图1描绘了主机和控制器之间的接口。控制器可以与可以处理命令的单个PCIe功能相关联,并且可以按照NVMe规范向主机传送适当的响应。
图2描绘了具有单个控制器的SSD。如果SSD不支持单根输入/输出虚拟化(SingleRoot Input/Output Virtualization,SRIOV)能力或使用物理端口的多路径能力,则SSD可能具有单个控制器。
图3描绘了支持SRIOV的主机设备接口。如果基于PCIe的SSD支持多路径IO和SRIOV能力,则该SSD可以具有多个控制器。支持SRIOV的基于PCIe的SSD可以支持多种功能。基于PCIe的SSD可能具有一个物理功能和四个虚拟功能。NVMe控制器与每个虚拟功能相关联,并且每个NVMe控制器可以具有私有命名空间(例如,NS A到NS D),并且可以访问由所有控制器共享的命名空间(例如,NS E)。
发明目的
本文实施例的主要目的是公开用于在支持多路径I/O的裸金属多内核的基于PCIe的NVMe SSD中管理LBA重叠检查的方法和系统。
本文实施例的另一目的是使得能够顺序执行在相同逻辑块上执行操作的命令;并且无缝执行在不同逻辑块上执行操作的命令。
本文实施例的另一目的是保持与提交给控制器的[读、写和比较]命令中的每一个相对应的重叠计数值。当每个命令到达控制器中时,针对该命令计算或更新重叠计数值,其中与当前命令相对应的重叠计数值指示当前命令的LBA范围与控制器中未完成的其它命令的LBA范围的重叠。如果控制器中未完成的其它命令在控制器侧被完全处理,则重叠计数值递减。
发明内容
根据本发明构思的示例性实施例,一种用于在基于非易失性存储器快速(NVMe)的固态驱动器(SSD)中管理逻辑块地址(LBA)范围重叠检查的方法可以包括:由LBA重叠检查(LBA-Overlap Check,LOC)模块检测进入命令的LBA范围与SSD控制器中至少一个未完成命令的LBA范围之间的重叠,由LOC模块确定与进入命令相对应的重叠计数值,其中该重叠计数值指示进入命令的LBA范围与至少一个未完成命令的LBA范围之间出现重叠,并且由SSD控制器基于与进入命令相对应的重叠计数值来执行进入命令。
根据本发明构思的示例性实施例,在能够管理逻辑块地址(LBA)范围重叠检查的基于非易失性存储器快速(NVMe)的固态驱动器(SSD)中,该基于NVMe的SSD被配置为由LBA重叠检查(LOC)模块检测进入命令的LBA范围与SSD控制器中至少一个未完成命令的LBA范围之间的重叠,由LOC模块确定与进入命令相对应的重叠计数值,其中该重叠计数值指示进入命令的LBA范围与至少一个未完成命令的LBA范围之间出现重叠;并且由SSD控制器基于与进入命令相对应的重叠计数值来执行进入命令。
当结合以下描述和附图考虑时,将更好地理解和明白本文实施例的这些和其它方面。然而,应该理解的是,以下描述虽然指示了实施例及其许多具体细节,但其是作为说明性而非限制性给出的。在不脱离本文实施例的精神的情况下,可以在本文实施例范围内进行许多改变和修改,并且本文实施例包括所有这种修改。
附图说明
通过参考附图详细描述本发明构思的示例性实施例,本发明构思的上述和其它特征将变得更加明显。
图1描绘了主机和非易失性存储器快速(NVMe)控制器之间的接口。
图2描绘了具有单个控制器的固态驱动器(SSD)。
图3描绘了支持单根输入/输出虚拟化(SRIOV)的主机设备接口。
图4a-图4d描绘了根据本发明构思的示例性实施例的用于处理多个命令的逻辑块地址(LBA)范围之间的重叠的阶段。
图5描绘了根据本发明构思的示例性实施例的SSD中用于管理LBA重叠情况的LBA重叠检查(LOC)模块。
图6是描绘根据本发明构思的示例性实施例的用于管理图5的SSD的控制器中命令的LBA范围之间出现重叠的方法的流程图。
具体实施方式
本发明构思的示例性实施例提供了用于在支持多路径输入/输出(I/O)的裸金属多内核的基于外围组件互连快速(PCIe)的非易失性存储器快速(NVMe)固态驱动器(SSD)中管理逻辑块地址(LBA)重叠检查的方法和系统。
本发明构思的示例性实施例使得能够顺序执行在相同逻辑块上执行操作的命令,并且无缝执行在不同逻辑块上执行操作的命令。
可以检测到进入命令的LBA范围和SSD的控制器中未完成的至少一个命令的LBA范围之间的重叠。控制器中未完成的至少一个命令可以在进入命令之前到达。控制器中未完成的至少一个命令可以被称为至少一个未完成命令。
可以保持重叠计数,该重叠计数可以指示进入命令的LBA范围与控制器中待完成的至少一个未完成命令的LBA范围之间出现重叠或不存在重叠。例如,可以保持与提交给控制器的读、写和比较命令中的每一个命令相对应的重叠计数。
当进入命令到达SSD的控制器时,可以设置重叠计数。当每个命令到达控制器中时,可以针对该命令计算或更新重叠计数。
当至少一个未完成命令被完全处理并且从控制器发出响应时,重叠计数可以递减。
命令的完成可以指示或意味着该命令已经被处理。
当重叠计数为零时,可以执行进入命令。可以为其LBA范围与控制器中相对未完成的其它命令的LBA范围重叠的所有命令保留重叠计数。这些命令可以在它们各自的重叠计数为零时执行。因此,可以按顺序执行其LBA范围与未完成命令的LBA范围重叠的命令。另一方面,可以并行执行其LBA范围与未完成命令的LBA范围不重叠的命令。
以下将参考附图更全面地描述本发明构思的示例性实施例。在本申请中,相同的附图标记可以指代相同的元件。
图4a-图4d描绘了根据本发明构思的示例性实施例的用于处理多个命令的LBA范围之间的重叠的阶段。
到达SSD的控制器中的进入命令可能试图执行至少一个操作,诸如读、写等。该至少一个操作可以在设备的逻辑块上执行。该逻辑块可以由LBA范围指定。LBA范围可以是与命令相关联的参数。当该命令的LBA范围与控制器中另一命令的LBA范围重叠时,检测到LBA重叠情况。
如图4a所描绘的,命令到达控制器中的次序是标签0、标签1、标签2和标签3。到达控制器中的每个命令可以与一个标签相关联。命令可以与各自的LBA范围相关联,LBA范围指定了命名空间的逻辑块,命令将在其中执行操作。
与标签0、标签1、标签2和标签3相关联的命令各自的LBA范围是0-10、25-30、5-9和7-26。因为与标签0相关联的命令的LBA范围和与标签1相关联的命令的LBA范围不重叠,所以标签0和标签1的重叠计数是0。换句话说,因为与标签0相关联的命令是第一个到达的,所以标签0的重叠计数将是0。因为与标签1相关联的命令的LBA范围和与标签0相关联的命令的LBA范围不重叠,所以标签1的重叠计数是0。
与标签2相关联的命令的LBA范围是5-9,并且与标签0相关联的命令的LBA范围是0-10。因此,出现了LBA重叠情况。因为与标签0相关联的命令比与标签2相关联的命令更早到达,并且与标签2相关联的命令的LBA范围和与标签0相关联的命令的LBA范围重叠,所以标签2的重叠计数是1。
与标签3相关联的命令的LBA范围是7-26。与标签0、标签1和标签2相关联的命令的LBA范围分别是0-10、25-30以及5-9。因此,出现了LBA重叠情况。与标签3相关联的命令的LBA范围和与标签0、标签1和标签2相关联的命令的LBA范围重叠。因为与标签0、标签1和标签2相关联的命令比与标签3相关联的命令更早到达,并且与标签3相关联的命令的LBA范围和与标签0、标签1和标签2相关联的命令的LBA范围重叠,所以标签3的重叠计数是3。
完成表用于指示已经从控制器侧完全处理的命令。最初,由于没有一个命令从控制器侧完成,因此完成表为空。当与命令相关联的标签的重叠计数为0时,那么该命令可以前进到执行的进一步处理阶段。这里假设首先执行与标签0相关联的命令,接着执行与标签1相关联的命令。
在本发明构思的示例性实施例中,如果与标签0和标签1相关联的命令基本上同时到达,则命令可以并行执行。
如图4b所描绘的,当与标签0相关联的命令完成时,标签2和标签3的重叠计数各自递减1。标签2的重叠计数为0,并且标签3的重叠计数为2。这是因为,与标签2相关联的命令的LBA范围和与标签0相关联的命令的LBA范围之间不再出现重叠。与标签3相关联的命令的LBA范围和与标签0相关联的命令的LBA范围之间也不再出现重叠。与标签3相关联的命令的LBA范围仍然和与标签1和标签2相关联的命令的LBA范围重叠。当与标签0相关联的命令被完全处理时,完成表的第一个条目被与标签0相关联的命令填充。现在可以执行与标签2相关联的命令。
在本发明构思的示例性实施例中,与标签1和标签2相关联的命令在此阶段可以并行执行,因为标签1和标签2的命令的重叠计数都为0。
如图4c所描绘的,随着与标签1相关联的命令被完全处理,标签3的重叠计数进一步递减1。标签3的重叠计数为1。这是因为与标签3相关联的命令和与标签1相关联的命令的LBA范围之间不再出现重叠。此时,与标签3相关联的命令的LBA范围仅仅和与标签2相关联的命令的LBA范围重叠。当与标签1相关联的命令被完全处理时,完成表包括与标签0和标签1相关联的命令。
如图4d所描绘的,当标签2的命令被完全处理时,标签3的重叠计数进一步递减1。此时标签3的重叠计数为0。这是因为与标签3相关联的命令和与标签2相关联的命令LBA范围之间不再出现重叠。与标签3相关联的命令的LBA范围不再与任何命令的LBA范围重叠。当与标签2相关联的命令被完全处理时,完成表包括与标签0、标签1和标签2相关联的命令。
图5描绘了根据本发明构思的示例性实施例的在SSD 500中用于管理LBA重叠情况的LBA重叠检查(LOC)模块502。LOC模块502可以是SSD 500中的控制器501的一部分。LOC模块502可以管理控制器501中不同命令的LBA范围之间的重叠情况。LOC模块502可以使得能够无缝并行地执行其LBA范围与其它命令的LBA范围不重叠的命令。LOC模块502可以使得能够顺序执行其LBA范围与其它命令的LBA范围重叠的那些命令。命令的执行次序基于该命令到达控制器501的LOC模块502。
当进入命令到达控制器501中时,LOC模块502可以检测进入命令的LBA范围与控制器501中未完成的其它命令的LBA范围之间是否存在重叠。控制器中未完成的其它命令可以称为未完成命令。例如,在进入命令到达之前,多个命令可能已经到达控制器501,并且在控制器501中是未完成的。基于LBA范围,控制器501中的每个命令可以与重叠计数值相对应。
LOC模块502可以确定与进入命令相对应的重叠计数值。重叠计数值指示进入命令的LBA范围与控制器501中未完成的多个命令的LBA范围之间是否存在重叠。例如,如果与进入命令相对应的重叠计数值为0,则可以推断进入命令的LBA范围不与多个未完成命令的LBA范围重叠。例如,如果与进入命令相对应的重叠计数值为3,则可以推断进入命令的LBA范围与多个未完成命令中三个未完成命令的LBA范围重叠。
回到图4a,进入命令可以与标签3相关联。在进入命令之前到达的多个命令可以与标签0、标签1和标签2相关联。如图4a所描绘的,标签3的LBA范围与标签0、标签1和标签2的LBA范围重叠。因此,所确定的标签3的重叠计数为3。
可以注意到,到达控制器501中的所有命令可以与重叠计数参数相关联,该重叠计数参数是在每个命令到达LOC模块502时由LOC模块502确定的。
当进入命令到达控制器501的LOC模块502时,LOC模块502可以确定与进入命令相对应的重叠计数。当重叠的多个未完成命令中的每一个被完成时,LOC模块502可以递减与进入命令相对应的重叠计数。
当与进入命令相对应的重叠计数为零时,LOC模块502允许执行进入命令。LOC模块502允许并行地执行其LBA范围与其它命令的LBA范围不重叠的命令;而顺序执行其LBA范围与其它命令的LBA范围重叠的命令。
图5示出SSD 500的示例性单元,但是本发明构思不限于此。在本发明构思的示例性实施例中,SSD 500可以包括更少或更多的单元。此外,单元的标签或名称仅用于说明目的而不限制本发明构思的范围。一个或多个单元可以组合在一起,以执行与SSD 500中相同或基本相似的功能。
图6是描绘根据本发明构思的示例性实施例的用于管理图5的SSD 500的控制器501中的命令的LBA范围之间出现重叠的方法的流程图。在方法600中,在操作601处,方法600包括检测进入命令的LBA范围与控制器中至少一个未完成命令的LBA范围之间的重叠。可以假设进入命令在至少一个未完成命令到达之后到达控制器501。由于在至少一个未完成命令的LBA范围和进入命令的LBA范围之间出现重叠,所以方法600以顺序的次序执行至少一个未完成命令和进入命令。
在操作602处,方法600包括给进入命令分配重叠计数参数,以指示进入命令的LBA范围与至少一个未完成命令的LBA范围之间的重叠。可以注意到,重叠计数参数由控制器501的LOC模块502分配给控制器501中的所有命令。
在操作603处,方法600包括确定与进入命令相对应的重叠计数值。为了简单起见,只考虑与进入命令相对应的重叠计数值。然而,方法600包括确定控制器501中的所有命令的重叠计数值。与进入命令相对应的重叠计数值指示进入命令的LBA范围是否与在进入命令之前已经到达的至少一个未完成命令的LBA范围重叠。如果至少一个未完成命令被完全处理,则进入命令的重叠计数值可以递减。
在一个示例中,考虑与进入命令相关联的LBA范围和与三个未完成命令相关联的LBA范围重叠。在这种情况下,与进入命令相对应的重叠计数值将为3。当三个未完成命令中的一个被完全处理时,与进入命令相对应的重叠计数值递减为2。类似地,当所有三个未完成命令都被完全处理时,重叠计数值递减为0。
在操作604处,方法600包括确定与进入命令相对应的重叠计数值是否为0。如果确定重叠计数值为0,则方法600包括在操作605处执行进入命令。如果确定重叠计数值为非零,则方法600包括再次执行操作604。
可以注意到,控制器501中具有不与任何其它命令的LBA范围重叠的LBA范围的命令可以被并行地执行。
方法600中的各种动作可以以所呈现的次序、不同的次序或同时执行。此外,在本发明概念的示例性实施例中,可以省略图6中列出的一些操作。
本文公开的发明构思的示例性实施例可以通过在至少一个硬件设备上运行并执行管理功能以控制存储元件的至少一个软件程序来实施。图5所示的元件包括可以是硬件设备(例如电路)或硬件设备和软件模块的组合中的至少一个的块。
本文公开的发明构思的示例性实施例描述了用于在基于NVMe的SSD中管理LBA重叠检查的方法和系统。因此,应当理解,保护范围被扩展到其中具有消息的程序和计算机可读存储装置,这种计算机可读存储装置包含程序代码,用于当该程序在服务器、桌面或任何合适的可编程设备上运行时,实现该方法的一个或多个操作。该方法可以通过用例如超高速集成电路硬件描述语言(Very High Speed Integrated Circuit HardwareDescription Language,VHDL)或另一种编程语言编写的软件程序来实施或与该软件程序一起实施,或者由在至少一个硬件设备上执行的一个或多个VHDL或几个软件模块来实施。该至少一个硬件设备可以是可编程的任何类型的便携式设备。该设备还可以包括硬件装置,诸如专用集成电路(Application-specific Integrated Circuit,ASIC),或者硬件和软件装置的组合,诸如ASIC、至少一个微处理器和其中具有软件模块的至少一个存储器。本文描述的方法可以部分用硬件实施,部分用软件实施。可选地,本发明构思可以在不同的硬件设备上实施,例如,使用多个CPU。
因此,本发明构思的示例性实施例提供了用于在裸金属多内核的基于PCIe的NVMeSSD中管理LBA重叠检查的方法和系统,从而使得能够无缝执行其LBA范围与未完成命令的LBA范围不重叠的命令。可以顺序执行其LBA范围与SSD中未完成命令的LBA范围重叠的命令。当进入命令到达SSD的控制器时,可以确定进入命令的LBA范围与未完成命令的LBA范围之间的重叠。可以保持进入命令的LBA范围与在进入命令之前已经到达的未完成命令的LBA范围重叠的实例的重叠计数。当未完成命令被SSD完全处理时,重叠计数可以递减。当重叠计数为零时,可以执行进入命令。
虽然已经参照本发明构思的示例性实施例示出和描述了本发明构思,但是本领域普通技术人员将理解,在不脱离所附权利要求中阐述的本发明构思的精神和范围的情况下,可以对其进行形式和细节上的各种改变。
Claims (9)
1.一种用于在基于非易失性存储器快速(NVMe)的固态驱动器(SSD)中管理逻辑块地址(LBA)范围重叠检查的方法,所述方法包括:
由LBA重叠检查(LOC)模块检测进入命令的LBA范围与SSD控制器中的至少一个未完成命令的LBA范围之间的重叠;
由LOC模块确定与所述进入命令相对应的重叠计数值,其中,所述重叠计数值指示所述进入命令的LBA范围和所述至少一个未完成命令的LBA范围之间出现重叠;
当所述至少一个未完成命令被处理时,由所述LOC模块调整与所述进入命令相对应的重叠计数值;以及
当与所述进入命令相对应的调整后的重叠计数值等于预定值时,由所述SSD控制器执行所述进入命令。
2.根据权利要求1所述的方法,其中,所述至少一个未完成命令在所述进入命令之前到达所述SSD控制器。
3.根据权利要求1所述的方法,其中所述调整包括:
当所述至少一个未完成命令被处理时,由所述LOC模块递减与所述进入命令相对应的重叠计数值,
其中,当与所述进入命令相对应的重叠计数值为零时,执行所述进入命令。
4.根据权利要求1所述的方法,其中,确定所述重叠计数值包括:
确定具有与所述进入命令的LBA范围重叠的LBA范围的未完成命令的数量;以及
将与所述进入命令相对应的重叠计数值分配为等于所述未完成命令的数量。
5.一种能够管理逻辑块地址(LBA)范围重叠检查的基于非易失性存储器快速(NVMe)的固态驱动器(SSD),其中,所述基于NVMe的SSD被配置为:
由LBA重叠检查(LOC)模块检测进入命令的LBA范围与SSD控制器中的至少一个未完成命令的LBA范围之间的重叠;
由LOC模块确定与所述进入命令相对应的重叠计数值,其中,所述重叠计数值指示具有与所述进入的LBA范围重叠的LBA范围的未完成命令的数量;以及
由所述SSD控制器基于与所述进入命令相对应的重叠计数值来执行所述进入命令。
6.根据权利要求5所述的基于NVMe的SSD,其中,所述至少一个未完成命令在所述进入命令之前到达所述SSD控制器。
7.根据权利要求5所述的基于NVMe的SSD,其中,所述LOC模块被配置为当所述至少一个未完成命令被处理时,递减与所述进入命令相对应的重叠计数值,并且
其中,当与所述进入命令相对应的重叠计数值为零时,执行所述进入命令。
8.根据权利要求5所述的基于NVMe的SSD,其中,所述重叠计数值通过以下确定:
由所述LOC模块确定具有与所述进入命令的LBA范围重叠的LBA范围的未完成命令的数量;以及
由所述LOC模块将与所述进入命令相对应的重叠计数值分配为等于所述未完成命令的数量。
9.一种用于在基于非易失性存储器快速(NVMe)的固态驱动器(SSD)中管理逻辑块地址(LBA)范围重叠检查的方法,所述方法包括:
由LBA重叠检查(LOC)模块检测进入命令的LBA范围与SSD控制器中的至少一个未完成命令的LBA范围之间的重叠;
由LOC模块确定与所述进入命令相对应的重叠计数值,其中,所述重叠计数值指示所述进入命令的LBA范围和所述至少一个未完成命令的LBA范围之间出现重叠;
当所述至少一个未完成命令被处理时,由所述LOC模块递减与所述进入命令相对应的重叠计数值;以及
由所述SSD控制器基于与所述进入命令相对应的重叠计数值为零来执行所述进入命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201941009763 | 2019-03-13 | ||
IN201941009763 | 2019-03-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111694508A CN111694508A (zh) | 2020-09-22 |
CN111694508B true CN111694508B (zh) | 2023-12-26 |
Family
ID=72423383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910688350.4A Active CN111694508B (zh) | 2019-03-13 | 2019-07-29 | 在基于NVMe的SSD中管理LBA重叠检查的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10922022B2 (zh) |
CN (1) | CN111694508B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11301370B2 (en) * | 2020-03-24 | 2022-04-12 | Samsung Electronics Co., Ltd. | Parallel overlap management for commands with overlapping ranges |
US11640264B2 (en) | 2021-08-30 | 2023-05-02 | Western Digital Technologies, Inc. | Parallel commands overlap detection based on queue-depth |
CN113791741B (zh) * | 2021-11-17 | 2022-02-22 | 苏州浪潮智能科技有限公司 | 固态硬盘的数据巡检方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102257483A (zh) * | 2008-12-18 | 2011-11-23 | 桑迪士克公司 | 管理对存储器件中的地址范围的访问 |
CN105190526A (zh) * | 2013-02-08 | 2015-12-23 | 微软技术许可有限责任公司 | 对用于非易失性存储设备的存储器重新编址 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9063561B2 (en) | 2009-05-06 | 2015-06-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Direct memory access for loopback transfers in a media controller architecture |
US20150253992A1 (en) * | 2014-03-10 | 2015-09-10 | Kabushiki Kaisha Toshiba | Memory system and control method |
US9697141B2 (en) * | 2014-10-17 | 2017-07-04 | Sk Hynix Memory Solutions Inc. | LBA blocking table for SSD controller |
US10733100B2 (en) * | 2017-06-12 | 2020-08-04 | Western Digital Technologies, Inc. | Method and apparatus for classifying and buffering write commands |
KR102694483B1 (ko) * | 2018-08-14 | 2024-08-13 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
US10761978B2 (en) * | 2018-10-25 | 2020-09-01 | Micron Technology, Inc. | Write atomicity management for memory subsystems |
-
2019
- 2019-05-20 US US16/416,668 patent/US10922022B2/en active Active
- 2019-07-29 CN CN201910688350.4A patent/CN111694508B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102257483A (zh) * | 2008-12-18 | 2011-11-23 | 桑迪士克公司 | 管理对存储器件中的地址范围的访问 |
CN105190526A (zh) * | 2013-02-08 | 2015-12-23 | 微软技术许可有限责任公司 | 对用于非易失性存储设备的存储器重新编址 |
Also Published As
Publication number | Publication date |
---|---|
US20200293226A1 (en) | 2020-09-17 |
CN111694508A (zh) | 2020-09-22 |
US10922022B2 (en) | 2021-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111694508B (zh) | 在基于NVMe的SSD中管理LBA重叠检查的方法和系统 | |
US9619308B2 (en) | Executing a kernel device driver as a user space process | |
US8949486B1 (en) | Direct memory access to storage devices | |
US10942874B2 (en) | Methods and systems that manage fetching of commands by a controller from queues of a host | |
US9753655B2 (en) | Computing system with write buffer including speculative storage write and method of operation thereof | |
US20180225065A1 (en) | Method and system for handling an asynchronous event request command in a solid-state drive | |
US10423563B2 (en) | Memory access broker system with application-controlled early write acknowledgment support and identification of failed early write acknowledgment requests to guarantee in-order execution of memory requests of applications | |
US11199992B2 (en) | Automatic host buffer pointer pattern detection | |
US20190155765A1 (en) | Operation method of host system including storage device and operation method of storage device controller | |
TWI685744B (zh) | 指令處理方法及使用所述方法的儲存控制器 | |
US9529536B2 (en) | Semiconductor memory device, memory system including the same, and operating method thereof | |
US10592113B2 (en) | Method for transferring command from host to device controller and system using the same | |
CN101639810A (zh) | 一种访问pci存储空间的方法和装置 | |
US10896139B2 (en) | Methods and apparatus for host register access for data storage controllers for ongoing standards compliance | |
US8156260B2 (en) | Data transfer device and method for selecting instructions retained in channel unit based on determined priorities due to the number of waiting commands/instructions | |
US6732212B2 (en) | Launch raw packet on remote interrupt | |
US20080147906A1 (en) | DMA Transferring System, DMA Controller, and DMA Transferring Method | |
US20160292090A1 (en) | Data processing system capable of controlling peripheral devices using group identification information and control method thereof | |
CN110780803A (zh) | 改进主机总线适配器后面的sata存储装置上的读取性能 | |
CN111433738A (zh) | 控制器事件队列 | |
US11620083B2 (en) | Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device | |
US7568121B2 (en) | Recovery from failure in data storage systems | |
CN118151851B (zh) | 固态硬盘读取方法、装置、设备及可读存储介质 | |
JP6384359B2 (ja) | 分散共有メモリを有する情報処理装置、方法、および、プログラム | |
US9189173B2 (en) | Memory system |
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 |