CN111356991B - 逻辑块寻址范围冲突爬虫 - Google Patents
逻辑块寻址范围冲突爬虫 Download PDFInfo
- Publication number
- CN111356991B CN111356991B CN201980005750.9A CN201980005750A CN111356991B CN 111356991 B CN111356991 B CN 111356991B CN 201980005750 A CN201980005750 A CN 201980005750A CN 111356991 B CN111356991 B CN 111356991B
- Authority
- CN
- China
- Prior art keywords
- range
- logical block
- conflict
- item
- block address
- 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 claims description 64
- 238000010586 diagram Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000012005 ligant binding assay Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- IYFATESGLOUGBX-YVNJGZBMSA-N Sorbitan monopalmitate Chemical compound CCCCCCCCCCCCCCCC(=O)OC[C@@H](O)[C@H]1OC[C@H](O)[C@H]1O IYFATESGLOUGBX-YVNJGZBMSA-N 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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/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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/1008—Correctness of operation, e.g. memory ordering
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种装置具有控制器和数据表,所述控制器配置成执行存在于固件或硬件中的范围爬虫算法,所述数据表含有一或多个范围项(RE′s),其中所述RE′s中的每一个是与命令指令相关联的逻辑块地址(LBA)跨段的部分,且其中每一LBA跨段具有一或多个LBA范围,且其中每一LBA范围由一或多个依序LBA′s构成。所述装置还包含冲突位图和命令调度器,所述冲突位图配置成存储与一或多个LBA′s之间的RE冲突相关联的数据,所述命令调度器配置成释放与RE冲突不相关的所选LBA范围。所述范围爬虫算法配置成搜索所述数据表以检测所述RE′s之间的冲突。
Description
相关申请的交叉引用
本申请要求2018年9月20日申请的美国申请第16/137,261号的优先权,所述美国申请要求2018年6月14日申请的临时申请62/685,196的优先权,所述两个申请均以全文引用的方式并入本文中。
技术领域
本公开的实施例大体上涉及数据地址管理,且更具体地说,涉及当检测到冲突时调度逻辑块地址(logical block address;LBA)的部分区段。
背景技术
当两个或更多个命令指令试图同时存取存储器中的相同地址时,数据冲突发生于处理器内。当前,当通过处理器(如固态驱动器(solid state drive;SSD)控制器)检测到冲突时,一种响应是按接收次序连续执行命令指令以确保以确定性方式传送数据内容,这引起对编程性能的负面影响。另一种响应是取消两个命令指令,由此防止任一指令对存储器位置进行存取且使编程减慢。此外,对于具有分散(例如:部分或不相交)LBA范围的命令指令,处理器暂停命令指令的执行直到接收到用于全部LBA范围的数据为止。这些方法通过延迟命令接收/调度指令和降低系统的服务质量(Quality-of-Service;QoS)将延迟和低效率引入到运行环境中。
因此,所需的是增强性能、效率以及QoS的用于检测针对全部和部分LBA冲突的数据冲突且对所述数据冲突作出响应的装置和方法。
发明内容
在一个实施例中,一种装置具有控制器和数据表,所述控制器配置成执行存在于固件中的范围爬虫算法,所述数据表含有一或多个范围项(one or more range entries;RE′s),其中RE′s中的每一个是与命令指令相关联的LBA跨段的部分,且其中每一LBA跨段具有一或多个LBA范围,且其中每一LBA范围由一或多个依序LBA′s构成。所述装置还包含冲突位图和命令调度器,所述冲突位图配置成存储与一或多个LBA′s之间的RE冲突相关联的数据,所述命令调度器配置成释放与RE冲突不相关的所选LBA范围。范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突。
在另一实施例中,一种装置具有控制器和数据表,所述控制器配置成执行存在于控制器上的硬件中的范围爬虫算法,所述数据表配置成存储一或多个RE′s,其中一或多个RE′s中的每一个是与命令指令相关联的LBA跨段的部分,其中每一LBA跨段由一或多个LBA范围构成,且其中每一LBA范围由一或多个依序LBA′s构成。所述装置还包含冲突位图和命令调度器,所述冲突位图配置成存储与一或多个LBA′s之间的RE冲突相关联的数据,所述命令调度器配置成释放与RE冲突不相关的所选LBA范围,其中范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突。所述装置还包含用于检测RE′s之间的冲突且对RE′s之间的冲突作出响应的构件,其中范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突,且对冲突作出响应包含通过命令调度器来基于冲突位图而调度所选LBA跨段。
在另一实施例中,一种装置具有控制器和数据表,所述控制器配置成执行存在于与控制器分离的硬件中的范围爬虫算法,所述数据表配置成存储一或多个RE′s,其中一或多个RE′s中的每一个是与命令指令相关联的LBA跨段的部分,每一LBA跨段包含一或多个LBA范围,且每一LBA范围包含一或多个依序LBA′s。所述装置还包含冲突位图和命令调度器,所述冲突位图配置成存储与一或多个LBA′s之间的RE冲突相关联的数据,所述命令调度器配置成释放与冲突不相关的所选全部和部分LBA范围,其中范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突。
在另一实施例中,一种用于进行存储装置的冲突管理的方法,所述方法包含从控制器接收一或多个命令指令,其中每一命令指令存取LBA跨段,且其中每一LBA跨段包含多个范围。所述方法还包含:通过数据表来存储与每一LBA范围相关联的RE,通过范围爬虫算法来检测两个或更多个RE′s之间的冲突,通过控制器来基于冲突而更新冲突位图,以及通过命令调度器来基于冲突位图而将所选LBA范围调度到存储装置。
在另一实施例中,一种操作用于存储装置的范围爬虫算法的方法,所述方法包含:从数据表接收一或多个RE′s,其中每一RE含有与命令指令相关联的LBA范围;以及通过范围爬虫算法来比较两个或更多个RE′s。所述方法还包含:通过范围爬虫算法来检测两个或更多个RE′s之间的冲突,通过范围爬虫算法来基于检测到冲突而更新冲突位图,以及基于冲突位图而调度所选LBA′s范围。
附图说明
为了可以详细地了解本公开的上述特征,上文简短概述的本公开可参考实施例加以更具体地描述,其中一些实施例在附图中示出。然而,应注意,附图仅示出本公开的典型实施例且因此不应被视为限制本公开的范围,因为本公开可承认其它同等有效的实施例。
图1是示出根据一个实施例的其中存储装置与主机装置耦合的存储系统的示意性框图。
图2是示出根据一个实施例的LBA范围冲突爬虫装置的示意性框图。
图3示出根据一个实施例的LBA范围冲突爬虫的代表性操作。
图4是示出根据一个实施例的RE和与命令指令相关联的RE′s的多个列表的框图。
图5示出根据一个实施例的多个RE′s、RE′s之间的若干冲突以及所得冲突位图。
图6是示出根据一个实施例的用于出于冲突检测和命令调度目的而进行LBARE处置的方法的流程图。
图7是示出根据一个实施例的与检测和调度部分地址冲突相关联的LBA范围爬虫算法的操作的方法的流程图。
为了促进理解,已经使用相同的参考标号在可能的情况下表示图中共有的相同元件。预期一个实施例中公开的元件可有利地在其它实施例上利用而不需特定叙述。
具体实施方式
在下文中,参考本公开的实施例。然而,应理解,本公开不限于所描述的特定实施例。实际上,涵盖以下特征和元件(不管是否与不同实施例有关)的任何组合以实施和实践本公开。此外,尽管本公开的实施例可实现优于其它可能解决方案和/或优于现有技术的优点,但特定优势是否是由给定实施例实现并不限制本公开。因此,以下方面、特征、实施例以及优点仅为说明性的且不认为是所附权利要求书的元件或限制,除非权利要求中有明确陈述。同样,对“本公开”的提及不应解释为本文中所公开的任何发明性主题的一般化,且不应认为是所附权利要求书的元件或限制,除非明确地叙述于权利要求中。
本公开大体上描述一种装置,所述装置具有控制器和数据表,所述控制器配置成执行存在于固件或硬件中的范围爬虫算法,所述数据表含有一或多个RE′s,其中RE′s中的每一个是与命令指令相关联的LBA跨段的部分,且其中每一LBA跨段具有一或多个LBA范围,且其中每一LBA范围由一或多个依序LBA′s构成。所述装置还包含冲突位图和命令调度器,所述冲突位图配置成存储与一或多个LBA′s之间的RE冲突相关联的数据,所述命令调度器配置成释放与RE冲突不相关的所选LBA范围。范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突。
图1是示出根据一个实施例的其中存储装置102起存储器存储和控制或存储阵列的作用且与主机装置106耦合的存储系统100的示意性框图。存储系统100可包含多个存储装置102,存储装置102配置为共同充当用于主机装置106的大容量存储装置的独立磁盘冗余阵列(redundant array of independent disk;RAID)。在一个实施例中,主机装置106可利用存储装置102中包含的非易失性存储器装置来存储和检索数据。如图1中所示出,主机装置106经由接口1 04与存储装置102通信。主机装置106可包含广泛范围的装置中的任一个,包含计算机服务器、网络附接存储(network attached storage;NAS)单元、台式计算机、笔记本计算机(例如,膝上型计算机)计算机、平板计算机、机上盒、电话手持机(如“智能”电话)、“智能”板(pad)、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、视频流式传输装置以及类似物。
如图1中所示出,存储装置102包含接口104、存储控制器108、一或多个非易失性存储器装置110A到非易失性存储器装置110N(编号a到n)以及LBA范围冲突爬虫120。在一些实施例中,存储装置102可包含为清楚起见在图1中未示出的额外组件或模块。作为实例,存储装置102可包含印刷电路板(printed circuit board;PCB),所述印刷电路板与存储装置102的组件和模块机械地附接且包含使存储装置102的组件和模块以及类似物电互连的导电迹线。在一些实施例中,存储装置102的物理尺寸和连接器配置与一或多个标准外观尺寸相符。一些实例标准外观尺寸包含但不限于3.5″数据存储装置(例如,硬盘驱动器(harddisk drive;HDD)或SSD)、2.5″数据存储装置、1.8″数据存储装置、周边组件互连(peripheral component interconnect;PCI)装置、PCI扩展(PCI-X)装置以及PCI高速(PCIe)装置(例如,PCIe x1、x4、x8、x16、PCIe微型卡、微型PCI(MiniPCI)以及类似物)。在一些实施例中,存储装置102可直接耦合(例如,直接焊接)到主机装置106的母板。
接口104可包含用于与主机装置106交换数据的数据总线和用于与主机装置106交换命令的控制总线。接口104可根据任何适合的协议而操作。作为实例,接口104可根据以下协议中的一个或多个而操作:高级技术附接(advanced technology attachment;ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤通道协议(Fibre Channel Protocol;FCP)、小型计算机系统接口(small computer system interface;SCSI)、串行附接SCSI(serially-attached SCSI;SAS)、PCI、PCIe、非易失性存储器高速(non-volatile memory express;NVMe)以及类似协议。接口104(例如,数据总线、控制总线或两者)的电连接件电连接到存储控制器108,从而提供主机装置106与存储控制器108之间的电连接。在一些实施例中,接口104的电连接件也可允许存储装置102从主机装置106接收功率。
存储装置102包含可包含编号a到n的多个个别装置的一或多个存储器装置110A到存储器装置110N。存储器装置110A到存储器装置110N可配置成存储和/或检索数据。作为实例,一个存储器装置110A可从指示存储器装置110A存储数据的存储控制器108接收数据和消息。类似地,存储器装置110A可从指示存储器装置110A检索数据的存储控制器108接收消息。在一些实施例中,多个存储器装置110A到存储器装置110N中的每一个可称作裸片。又在一些实施例中,单个物理集成电路(IC或芯片)可包含多个裸片(即,多个存储器装置)。在一些实施例中,每一存储器装置110A到存储器装置110N可配置成存储相对大量的数据(例如,128MB、256MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB以及类似大小)。本文中列举的实例不是限制性的且其它大小是可能的。此外,在一些实施例中,每一存储器装置110A到存储器装置110N可包含任何类型的非易失性存储器,如快闪存储器装置、相变存储器(phase-change memory;PCM)装置、电阻式随机存取存储器(resistiverandom-access memory;ReRAM)装置、磁阻式随机存取存储器(magnetoresistive random-access memory;MRAM)装置、铁电随机存取存储器(ferroelectric random-accessmemory;F-RAM)装置、全息存储器装置以及任何其它类型的非易失性存储器装置。
快闪存储器装置可包含基于NAND或NOR的快闪存储器装置,且可基于用于每一存储器单元的晶体管的浮动栅极中含有的电荷而存储数据。在NAND快闪存储器装置中,快闪存储器装置可划分成可划分成多个页的多个块。特定存储器装置内的多个块的每一块可包含多个NAND单元。NAND单元的行可使用字线来电连接以限定多个页的一页。多个页中的每一个中的相应单元可电连接到相应位线。存储控制器108可将数据写入到页层级处的NAND快闪存储器装置且从页层级处的NAND快闪存储器装置读取数据,且从块层级处的NAND快闪存储器装置擦除数据。
继续图1,存储装置102包含存储控制器108和冲突爬虫120,存储控制器108管理存储装置102的一或多个操作。在一个实施例中,存储控制器108可管理从存储器装置110A到存储器装置110N读取数据和/或将数据写入到存储器装置110A到存储器装置110N。在一些实施例中,当存储装置102从主机装置106接收写入命令时,存储控制器108可启动数据存储命令以将数据存储到存储器装置110A到存储器装置110N且监测数据存储命令的进程。在至少一些实施例中,存储控制器108可确定存储系统100的至少一个操作特性且使存储系统100的至少一个操作特性存储到存储器(例如,存储到存储器装置110A到存储器装置110N)。作为实例,操作特性可包含控制器寄存器信息、固件数据结构、固件事件历史、主机配置模式设置(例如,格式化容量、功率模式、加密模式以及类似物)、装置状态(例如,所用驱动空间量、装置温度、SMART参数状态等)、主机命令序列和历史以及类似物。固件数据结构的实例可包含性能和工作量统计、误差统计以及非易失性存储器的状态信息(如有效客户数据量和准备好存储新客户数据的存储器量)。在一些实施例中,存储控制器108可在一或多个存储器装置110A到存储器装置110N的系统面积中存储操作特性。
LBA范围冲突爬虫120是执行两个或更多个LBA′s之间的数据冲突检测的算法。在一些实施例中,冲突爬虫120存在于存储控制器108中的固件中,而在其它实施例中,冲突爬虫120存在于存储控制器108中或存储控制器108外部的硬件中,如存储装置102中或存储系统100的另一模块中。在图2中进一步描述冲突爬虫的额外细节。
图2是示出根据一个实施例的图1的LBA范围冲突爬虫120的示意性框图200。冲突爬虫120包含配置成在检测数据冲突和对数据冲突作出响应中监测和控制冲突爬虫120的操作的爬虫控制器202。在一个实施例中,爬虫控制器202是冲突爬虫120内的专用处理器。在其它实施例中,爬虫控制器202的功能由图1的存储控制器108执行,其它实施例也有可能。冲突爬虫120还包含一或多个RE′s 204,一或多个RE′s 204是含有LBA范围的数据项且配置成允许冲突爬虫120检测一或多个RE′s 204之间的数据冲突。
RE′s 204通过使用起始地址和长度来表示连续LBA跨段。作为实例,具有起始值4和长度8的RE 204将在LBA 4处开始且持续8个逻辑块,在LBA 11处结束。冲突爬虫120还包含用于存储RE′s 204的一或多个数据表206。数据表206基于RE′s的相关联命令指令而存储且列出多个RE′s 204,其中根据单个命令指令相关联的所有RE′s 204构成一个列表,且RE′s 204的其它列表被形成,其中每一列表基于不同命令指令。参考图4以得到具有如本文中所描述的组织成若干列表的多个RE′s 204的数据表206的实例。
冲突爬虫120还包含一或多个范围爬虫算法208(范围爬虫),一或多个范围爬虫算法208使用一或多个RE′s 204通过比较RE 204内的LBA范围且进行检查以查看在RE′s 204中的任何一个或任何多个中是否存在由两个LBA′s范围共用的任何冲突地址来执行检测进程。任何共用LBA范围值被识别且存储在冲突位图210中,冲突位图210是本地或远程存储器中的将用于每一RE 204的LBA冲突状态记录为用于每一碰撞RE 204的独立位的位置。在一些实施例中,范围爬虫算法208使用含有单个LBA范围和相关RE 204的解析命令指令进行操作。在其它实施例中,LBA范围是分段式且不相交。又在一些实施例中,冲突位图210的多个实例是可能的,其中一个冲突位图210记录任何两个RE′s 204的比较结果,而在其它实施例中,冲突位图210含有用于单个文件中的所有RE′s 204的冲突数据。最后,冲突爬虫120包含命令调度器(调度器)212,命令调度器212配置成基于冲突位图210的内容而视需要保持和释放全部和部分LBA范围。作为实例,由于RE′s冲突位图210含有全零,由此指示无冲突,调度器212将释放RE 204,从而允许存取RE LBA′s。在图4中公开关于RE′s 204和比较数据表中的RE′s 204的其它细节。
图3示出根据一个实施例的具有命令槽列表300(又称为命令指令列表)和RE′s列表350的LBA范围冲突爬虫实例。所述范围冲突爬虫实例是图2的范围爬虫算法208的一个实施例,其它实施例也有可能。在命令槽列表300中,识别出若干列,所述若干列包含命令槽ID号302、时间戳304、命令306、起始地址308、所存取块的长度310以及列表指针312。作为实例,在命令槽302#2中,在时间戳1.004处,存在在LBA 32处开始的多描述符取消映射(Unmap)命令。所述LBA 32具有由4个RE 204(RE 2、RE 8、RE 9以及RE 10)组成的RE列表350,所述RE各自描述连续LBA跨段,取消映射命令应用于:RE 2描述LBA跨段32到LBA跨段35,RE 8描述LBA跨段40到LBA跨段43,RE 9描述LBA跨段48到LBA跨段51,且RE 10描述LBA跨段56到LBA跨段59。在这一范围冲突爬虫实例中,如果任何其它相关RE′s 204在命令槽2之后达成取消映射命令且试图在RE 2完成执行之前存取地址32到地址35,那么冲突将产生且入侵RE 204的冲突位图的位2将经过设定,从而指示不能安全地调度侵入RE 204。
LBA范围冲突爬虫实例继续RE′s列表350,其中所述列表包含标注RE索引352(用于仅本实例且所述RE′s列表350中不存在的参考)、起始LBA 354、长度356、下一RE指针358、更改数据360、时间戳362以及范围冲突位图364的列。存在与每一RE 204相关联的范围冲突位图364。作为实例,RE索引352#2在LBA 32处开始,有4个逻辑块长(逻辑块32到逻辑块35),指向RE索引352#8,且具有指示并未检测到冲突的0x0000的范围冲突位图364。在未检测到冲突的情况下,这一RE 204有资格正常地进行执行和处理。
另一实例是RE索引#3(参考366),其在地址0处开始,具有去到驱动结尾(End ofDrive;EOD)的长度(在这一实例中,128个分区),由此覆盖0分区到127分区的范围,且具有指示已检测到多个冲突的0x07A7的范围冲突位图364。用于这一RE 204的范围冲突位图以二进制形式表述为0000 0111 1010 0111b且经过读取以意谓RE′s 204 0、RE′s 204 1、RE′s 204 2、RE′s 204 5、RE′s 204 7、RE′s 204 8、RE′s 204 9以及RE′s 204 10冲突。因此,将阻止执行RE索引#3 366直到已清除所有冲突为止。如稍早所述,RE索引352中列出的每一RE 204具有相关联范围冲突位图364,从而指示用于所述特定RE 204的冲突状态。在本实例350中,RE索引#3 366尤其具有与RE索引#2的冲突。然而,由于RE索引#2在RE索引352#3 366之前,因此仅RE索引352#3 366已检测到冲突。所述冲突已记录在RE索引#3 366下的范围冲突位图364中。
由于RE′s 204执行完成,因此通过图2的调度器212从RE列表350“清除”RE′s 204执行。由于清除RE′s 204,因此针对所有RE索引352项来重新运行范围冲突爬虫算法208,且因此更新所有RE索引352项,包含更新每一范围冲突位图364。以这种方式,通过清除或更新RE′s 204来释放地址范围。由于清除或释放每一RE 204,因此重新运行范围爬虫208以更新冲突位图364。本文中公开的实例是一种实施例但其它实施例是可能的。
图4是示出根据一个实施例的RE实例400(如图2的RE 204)以及具有所示出的多个RE实例452A到RE实例452N和RE′s 452A到RE′s 452N的多个命令指令RE列表454A到命令指令RE列表454N(编号a到n)的数据表实例450(如图2的数据表206)的框图。RE实例400是总共16个字节大小的数据项,所述数据项包含7字节长的起始LBA 402、7字节长的长度404以及2字节长的下一RE 406。本实例不具限制性,然而,且其它实施例是可能的。
数据表实例450包含命令指令RE列表454A到命令指令RE列表454N。数据表206视特定操作需要而存储RE′s 452A到RE′s 452N的多个列表454A到列表454N。在一些实施例中,当数据表206写入或编辑RE 204时,执行范围爬虫算法208。在其它实施例中,范围爬虫算法在RE 204由调度器212释放时执行。在图4中,由于RE′s 452A到RE′s 452N由调度器212清除或释放,且由于新的RE′s 452A到RE′s 452N从新命令指令到达形成,因此视需要通过键入或删除RE′s 452A到RE′s 452N来更新列表454A到列表454N。
在操作中,RE′s 452A到RE′s 452N彼此进行比较以检测任何常用地址,其中比较的结果存储在冲突位图210中且如图3中所描述。数据表206存储RE′s 452A到RE′s 452N以供通过范围爬虫算法208存取。本文中所公开的装置和方法用于检测存储在用于特定命令指令的列表454A到列表454N上的RE′s 452A与RE′s 452N之间的冲突。
图5示出根据一个实施例的与多个RE′s 204相关联的数据、RE′s 204之间的若干冲突以及所得冲突位图364。实例500包含关于每一RE 502到RE 522的信息,包含但不限于标注RE索引、起始LBA、长度、下一RE、时间戳以及更改数据的列。列表500进一步划分成两个独立命令RE列表(图4的454A),其中命令RE列表实例526(编号05)含有编号00到06的RE′s204,而命令RE列表实例528(编号10)含有编号0D到10的RE′s 204。
在实例500中,存在命令RE列表526(编号05)的RE 508(编号03)与RE 516(编号0D)之间的数据冲突。存在命令RE列表528(编号10)的RE 512(编号05)与RE 520(编号0F)之间的另一冲突。由于通过(图2的)范围爬虫算法208检测的冲突,冲突位图364进行更新以反映冲突LBA′s。范围爬虫208将试图检测给定命令RE列表454N的所有RE′s 208之间的冲突,其中范围爬虫208针对每一RE 204单独地进行操作。作为实例,在17个RE′s 204的情况下,将存在17个范围爬虫208操作。
图6是示出根据一个实施例的利用冲突检测和命令调度管理进行的LBA RE处置的方法600的流程图。方法600示出示例性进程,但本文中所描述的进程不具限制性且其它实施例是可能的。方法600在框602处包含空闲循环,其中存储控制器108等待输入,如含有LBA指令的新命令指令。然后,在框604处,接收新命令指令。然后,在决策框606处,存储控制器108确定新命令指令是否含有LBA信息。如果“是”,那么方法600继续到框608,其中将命令指令添加到命令队列且RE 204由LBA信息形成。此外,在框608处,将RE 204添加到命令指令RE列表(参考图4)。如果决策框606的答案是“否”,那么方法600移动到框610,其中将命令指令添加到命令队列且形成全驱动RE 204。在框610处的任务完成后,方法600继续到如下文所描述的框616。当如在框608或框610中形成新RE 204时,方法600继续到框616,其中存储控制器108执行冲突爬虫120。冲突爬虫120视需要来检测两个或更多个RE′s 204之间的任何冲突且更新冲突位图210。然后,在框618处,调度器212释放或免去(free)LBA′s的任何非碰撞范围。
同时,方法600还包含在框620处监测含有LBA数据的新命令指令。在这发生后,方法600在框622处用与新指令相关联的新RE 204来更新命令指令RE列表454A到命令指令RE列表454N。在执行任何RE更新之后,方法600继续到框616,其中存储控制器108执行冲突爬虫120。
此外,在方法600在框604处等待新命令且在框620处等待新LBA数据时,存储控制器108在框612处监测何时完成RE 204。在这发生后,方法600在框614处从命令指令RE列表454A到命令指令RE列表454N去除或更新RE 204,且然后,在框616处通过执行如稍早所描述的范围爬虫算法208而继续。单独地,在框630处,每当完成命令指令时,方法在框632处通过从数据表206去除命令指令且去除与所述命令指令相关联的所有其余RE′s 204而继续。最后,每当在框608、框610、框614、框622或框632处修改或完成RE 204时,在框616处重新运行范围爬虫算法,更新冲突位图210,且方法通过在框618处调度所有非碰撞RE′s 204而继续。在已调度所有有资格的RE′s 204后,方法600继续到框602,其中方法600等待进一步输入。
图7是示出根据一个实施例的操作LBA范围爬虫算法208以检查在如在图6的框616处所请求而改变数据表206中的RE′s 204中的一或多个的状态的事件之后的潜在RE 204冲突的方法700的流程图。方法700在框702处开始,其中一或多个RE′s 204中的每一个通过在写入LBA范围402中的一或多个之前覆写“零”来进行初始化。然后,在框704处,范围爬虫算法208通过选择RE 204且执行RE 204中含有的LBA范围与相关联于命令RE列表454N的另一先前存储RE 204中含有的LBA范围的比较来开始操作。方法700可同时执行多个范围爬虫算法208,其中一个范围爬虫算法208视需要针对每一命令RE列表454N而运行。
然后,方法700确定在框706处所选RE 204是否是正检查的相同RE 204,这是由于RE′s 204不经受针对自身冲突的检查。如果“是”,那么方法跳过框708且继续到框710。然而,如果LBA范围比较检测RE′s 204中均存在的一或多个LBA,那么框708在与先前存储RE204相关联的位位置中用“一”来更新冲突位图210。如果LBA范围比较在RE′s中均未检测到共用LBA,那么框708在与先前存储RE 204相关联的位位置中保留“零”。
方法700在框710处继续,其中在完成冲突位图之后在框708处更新,范围爬虫算法208在框710处将RE索引增加到下一先前存储RE 204,且在框712处确定所述RE索引是否指示已针对LBA范围冲突检查了所有先前存储RE′s 204。如果RE索引参考尚未检查的先前存储RE 204,那么方法700循环回到框706以使范围爬虫算法208针对LBA冲突对所述下一先前存储RE 204进行检查。如果框712确定RE索引指示已检查所有先前存储RE′s 204,那么方法700已使用范围爬虫算法208针对所有先前存储RE′s 204检查新RE 204而完成,且在框714处现完成直到下一需要RE范围爬行的另一周期的事件发生为止。图7示出一种用于RE检查的方法,但其它实施例是可能的,且在本文中不受限制。
本公开示出用于具有LBA范围的命令指令的冲突(包含LBA范围的部分冲突)检测和管理的装置和方法。本公开允许处置所有类型的命令指令的通用冲突管理系统,所述命令指令包含具有分散LBA跨段的命令,如“取消映射(unmap)”、“写入分散(writescatter)”、“跳过(skip)”以及类似命令。这避免需要为了具有不相交LBA跨段的命令而不必要地暂停命令接收/调度操作。此外,本公开由于通过调度LBA′s的非碰撞部分来完成先前命令指令而实现对后续部分碰撞命令的更快调度。本公开还允许在其它命令指令在进行中时针对命令指令更新冲突。最后,本公开实现固定和确定性冲突检测时间,由此改进QoS。
本公开包含一种装置,所述装置具有控制器和数据表,所述控制器配置成执行存在于固件或硬件中的范围爬虫算法,所述数据表含有一或多个范围项(RE′s),其中RE′s中的每一个是与命令指令相关联的逻辑块地址(LBA)跨段的部分,且其中每一LBA跨段具有一或多个LBA范围,且其中每一LBA范围由一或多个依序LBA′s构成。所述装置还包含冲突位图和命令调度器,所述冲突位图配置成存储与一或多个LBA′s之间的RE冲突相关联的数据,所述命令调度器配置成释放与RE冲突不相关的所选LBA范围。范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突。
装置还可包含同时操作的多个范围爬虫算法。装置还可包含其中范围爬虫算法识别与冲突位图中的冲突相关联的命令指令的每一LBA范围。装置还可包含其中每当更新RE时重新运行范围爬虫算法。装置还可包含其中命令指令包含不相交LBA范围。
本公开描述一种装置,所述装置具有控制器和数据表,所述控制器配置成执行存在于控制器上的硬件中的范围爬虫算法,所述数据表配置成存储一或多个范围项(RE′s),其中一或多个RE′s中的每一个是与命令指令相关联的逻辑块地址(LBA)跨段的部分,每一LBA跨段包含一或多个LBA范围,且每一LBA范围包含一或多个依序LBA′s。所述装置还包含:冲突位图,配置成存储与一或多个LBA′s之间的RE冲突相关联的数据;命令调度器,配置成释放与RE冲突不相关的所选LBA范围,其中范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突;以及构件,用于检测RE′s之间的冲突且对RE′s之间的冲突作出响应,其中范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突,且对冲突作出响应包含通过命令调度器基于冲突位图而调度所选LBA跨段。
装置还可包含同时操作的多个范围爬虫算法,其中多个范围爬虫算法在控制器将RE添加到数据表时经由来自控制器的解析命令进行操作。装置还可包含同时操作的多个范围爬虫算法,其中多个范围爬虫算法在控制器由于数据表写入命令而将RE添加到数据表时进行操作。装置还可包含其中当相关联LBA跨段搜索已完成时从数据表去除给定RE。装置还可包含具有保留RE值的数据表,所述保留RE值配置成标记驱动宽LBA跨段直至接收到LBA范围为止。
本公开公开一种装置,所述装置具有:控制器,配置成执行存在于与控制器分离的硬件中的范围爬虫算法;数据表,配置成存储一或多个范围项(RE′s),其中一或多个RE′s中的每一个是与命令指令相关联的逻辑块地址(LBA)跨段的部分,每一LBA跨段包含一或多个LBA范围,且每一LBA范围包含一或多个依序LBA′s;冲突位图,配置成存储与一或多个LBA′s之间的RE冲突相关联的数据;以及命令调度器,配置成释放与冲突不相关的所选全部和部分LBA范围,其中范围爬虫算法配置成搜索数据表以检测RE′s之间的冲突。
装置还可包含其中控制器通过标记与那一指令相关联的全驱动LBA跨段来执行在不运行范围爬虫算法的情况下需要执行的命令指令。装置还可包含同时运行的多个范围爬虫算法。装置还可包含其中每当完成含有部分LBA范围的命令指令时重新运行范围爬虫算法。装置还可包含释放与具有全零的冲突位图相关联的所有RE′s的命令调度器。
本公开还描述一种用于进行存储装置的冲突管理的方法,所述方法包含:从控制器接收一或多个命令指令,其中每一命令指令包含逻辑块地址(LBA),且每一LBA包含多个范围;通过数据表来存储与每一LBA范围相关联的范围项(RE);通过范围爬虫算法来检测两个或更多个RE′s之间的冲突;通过控制器来基于冲突而更新冲突位图;以及通过命令调度器来基于冲突位图而将所选LBA范围调度到存储装置。
方法还可包含同时执行多个范围爬虫算法。方法还可包含释放与具有全零的冲突位图相关联的RE′s。方法还可包含当范围爬虫算法已结束时将RE′s释放到控制器。方法还可包含在执行范围爬虫算法时更新RE′s。方法还可包含其中范围爬虫算法阻止其它命令指令到与当前RE相关联的LBA范围。方法还可包含其中通过标记与那一命令指令相关联的全驱动LBA范围来执行具有优先级的命令指令。方法还可包含每当检测到冲突时重新运行范围爬虫算法。
本公开还描述一种操作用于存储装置的范围爬虫算法的方法,所述方法包含:从数据表接收一或多个范围项(RE′s),其中每一RE含有与命令指令相关联的逻辑块地址(LBA)范围;通过范围爬虫算法来比较两个或更多个RE′s;通过范围爬虫算法来检测两个或更多个RE′s之间的冲突;通过范围爬虫算法来基于检测到冲突而更新冲突位图;以及基于冲突位图而调度所选LBA′s范围。方法还可包含每当更新RE时重新运行范围爬虫算法。
虽然前述内容是针对本公开的实施例,但在不脱离本公开的基本范围的情况下,可设计出本公开的其它及另外实施例,且由所附权利要求书确定本公开的范围。
Claims (25)
1.一种装置,其包括:
控制器,配置成执行存在于所述控制器上的固件中的范围爬虫算法;
数据表,包括一或多个范围项,其中
所述一或多个范围项中的每一个是与命令指令相关联的逻辑块地址跨段的部分,
每一逻辑块地址跨段包括一或多个逻辑块地址范围,
每一逻辑块地址范围包括一或多个依序逻辑块地址;且
所述数据表包含所述范围项的范围项索引、所述范围项索引中每个范围项的起始逻辑块地址、所述范围项索引中每个范围项的逻辑块地址的长度、所述范围项索引中每个范围项的下一个范围项、所述范围项索引中每个范围项的时间戳,以及所述范围项索引中每个范围项的范围冲突位图;
冲突位图,配置成存储与一或多个逻辑块地址之间的范围项冲突相关联的数据;以及
命令调度器,配置成释放与范围项冲突不相关的所选逻辑块地址范围,其中
所述范围爬虫算法配置成搜索所述数据表以检测所述范围项之间的冲突。
2.根据权利要求1所述的装置,其进一步包括同时操作的多个范围爬虫算法。
3.根据权利要求1所述的装置,其中所述范围爬虫算法识别与所述冲突位图中的冲突相关联的所述命令指令的每一逻辑块地址范围。
4.根据权利要求1所述的装置,其中每当更新范围项时,重新运行所述范围爬虫算法。
5.根据权利要求1所述的装置,其中所述命令指令包括不相交逻辑块地址范围。
6.一种装置,其包括:
控制器,配置成执行存在于所述控制器上的硬件中的范围爬虫算法;
数据表,配置成存储一或多个范围项,其中
所述一或多个范围项中的每一个是与命令指令相关联的逻辑块地址跨段的部分,
每一逻辑块地址跨段包括一或多个逻辑块地址范围,
每一逻辑块地址范围包括一或多个依序逻辑块地址;且
所述数据表包含所述范围项的范围项索引、所述范围项索引中每个范围项的起始逻辑块地址、所述范围项索引中每个范围项的逻辑块地址的长度、所述范围项索引中每个范围项的下一个范围项、所述范围项索引中每个范围项的时间戳,以及所述范围项索引中每个范围项的范围冲突位图;
冲突位图,配置成存储与一或多个逻辑块地址之间的范围项冲突相关联的数据;
命令调度器,配置成释放与范围项冲突不相关的所选逻辑块地址范围,其中
所述范围爬虫算法配置成搜索所述数据表以检测所述范围项之间的冲突;以及
构件,用于检测范围项之间的冲突且对范围项之间的冲突作出响应,其中
所述范围爬虫算法配置成搜索所述数据表以检测所述范围项之间的冲突,且
对冲突作出响应包括通过所述命令调度器来基于所述冲突位图而调度所选逻辑块地址跨段。
7.根据权利要求6所述的装置,其进一步包括同时操作的多个范围爬虫算法,其中所述多个范围爬虫算法在所述控制器将范围项添加到所述数据表时经由来自所述控制器的解析命令来操作。
8.根据权利要求6所述的装置,其进一步包括同时操作的多个范围爬虫算法,其中所述多个范围爬虫算法在所述控制器由于数据表写入命令而将范围项添加到所述数据表时进行操作。
9.根据权利要求6所述的装置,其中当已完成与所述逻辑块地址跨段相关联的搜索时,从所述数据表去除给定范围项。
10.根据权利要求6所述的装置,其进一步包括具有保留范围项值的所述数据表,所述保留范围项值配置成标记驱动宽逻辑块地址跨段直至接收到所述逻辑块地址范围为止。
11.一种装置,其包括:
控制器,配置成执行存在于与所述控制器分离的硬件中的范围爬虫算法;
数据表,配置成存储一或多个范围项,其中
所述一或多个范围项中的每一个是与命令指令相关联的逻辑块地址跨段的部分,
每一逻辑块地址跨段包括一或多个逻辑块地址范围,
每一逻辑块地址范围包括一或多个依序逻辑块地址;且
所述数据表包含所述范围项的范围项索引、所述范围项索引中每个范围项的起始逻辑块地址、所述范围项索引中每个范围项的逻辑块地址的长度、所述范围项索引中每个范围项的下一个范围项、所述范围项索引中每个范围项的时间戳,以及所述范围项索引中每个范围项的范围冲突位图;
冲突位图,配置成存储与一或多个逻辑块地址之间的范围项冲突相关联的数据;以及
命令调度器,配置成释放与冲突不相关的所选全部和部分逻辑块地址范围,其中
所述范围爬虫算法配置成搜索所述数据表以检测所述范围项之间的冲突。
12.根据权利要求11所述的装置,其中所述控制器通过标记与命令指令相关联的全驱动逻辑块地址跨段来执行在不运行所述范围爬虫算法的情况下需要执行的所述命令指令。
13.根据权利要求11所述的装置,其进一步包括同时运行的多个范围爬虫算法。
14.根据权利要求11所述的装置,其中每当完成含有部分逻辑块地址范围的命令指令时,重新运行所述范围爬虫算法。
15.根据权利要求11所述的装置,其进一步包括释放与包括全零的冲突位图相关联的所有范围项的所述命令调度器。
16.一种用于进行存储装置的冲突管理的方法,所述方法包括:
从控制器接收一或多个命令指令,其中
每一命令指令包括逻辑块地址,且
每一逻辑块地址包括多个范围;
通过数据表来存储与每一逻辑块地址范围相关联的范围项,其中所述数据表包含所述范围项的范围项索引、所述范围项索引中每个范围项的起始逻辑块地址、所述范围项索引中每个范围项的逻辑块地址的长度、所述范围项索引中每个范围项的下一个范围项、所述范围项索引中每个范围项的时间戳,以及所述范围项索引中每个范围项的范围冲突位图;
通过范围爬虫算法来检测两个或更多个范围项之间的冲突;
通过所述控制器来基于所述冲突而更新冲突位图;以及
通过命令调度器来基于所述冲突位图而将所选逻辑块地址范围调度到所述存储装置。
17.根据权利要求16所述的方法,其进一步包括同时执行多个范围爬虫算法。
18.根据权利要求16所述的方法,其进一步包括释放与包括全零的冲突位图相关联的范围项。
19.根据权利要求16所述的方法,其进一步包括当所述范围爬虫算法已结束时将范围项释放到所述控制器。
20.根据权利要求16所述的方法,其进一步包括在执行所述范围爬虫算法时更新范围项。
21.根据权利要求16所述的方法,其中所述范围爬虫算法阻止其它命令指令到与当前范围项相关联的所述逻辑块地址范围。
22.根据权利要求16所述的方法,其中通过标记与命令指令相关联的全驱动逻辑块地址范围来执行具有优先级的所述命令指令。
23.根据权利要求16所述的方法,其进一步包括每当检测到冲突时,重新运行所述范围爬虫算法。
24.一种操作用于存储装置的范围爬虫算法的方法,所述方法包括:
从数据表接收一或多个范围项;其中每一范围项含有与命令指令相关联的逻辑块地址范围,其中所述数据表包含所述范围项的范围项索引、所述范围项索引中每个范围项的起始逻辑块地址、所述范围项索引中每个范围项的逻辑块地址的长度、所述范围项索引中每个范围项的下一个范围项、所述范围项索引中每个范围项的时间戳,以及所述范围项索引中每个范围项的范围冲突位图;
通过所述范围爬虫算法来比较两个或更多个范围项;
通过所述范围爬虫算法来检测两个或更多个范围项之间的冲突;
通过所述范围爬虫算法来基于检测到冲突而更新冲突位图;以及
基于所述冲突位图而调度所选逻辑块地址范围。
25.根据权利要求24所述的方法,其进一步包括每当更新范围项时重新运行所述范围爬虫算法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862685196P | 2018-06-14 | 2018-06-14 | |
US62/685,196 | 2018-06-14 | ||
US16/137,261 US10649909B2 (en) | 2018-06-14 | 2018-09-20 | Logical block addressing range collision crawler |
US16/137,261 | 2018-09-20 | ||
PCT/US2019/017490 WO2019240849A1 (en) | 2018-06-14 | 2019-02-11 | Logical block addressing range collision crawler |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111356991A CN111356991A (zh) | 2020-06-30 |
CN111356991B true CN111356991B (zh) | 2023-09-19 |
Family
ID=68840601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980005750.9A Active CN111356991B (zh) | 2018-06-14 | 2019-02-11 | 逻辑块寻址范围冲突爬虫 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10649909B2 (zh) |
KR (1) | KR102366512B1 (zh) |
CN (1) | CN111356991B (zh) |
DE (1) | DE112019000158T5 (zh) |
WO (1) | WO2019240849A1 (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 |
US11563570B2 (en) * | 2020-05-19 | 2023-01-24 | Western Digital Technologies, Inc. | Storage system and method for command execution ordering by security key |
US11640264B2 (en) * | 2021-08-30 | 2023-05-02 | Western Digital Technologies, Inc. | Parallel commands overlap detection based on queue-depth |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490635B1 (en) * | 2000-04-28 | 2002-12-03 | Western Digital Technologies, Inc. | Conflict detection for queued command handling in disk drive controller |
CN105843753A (zh) * | 2015-02-02 | 2016-08-10 | Hgst荷兰公司 | 用于硬盘驱动器的逻辑块地址映射 |
CN107451261A (zh) * | 2017-07-31 | 2017-12-08 | 广州探迹科技有限公司 | 一种基于对象存储的爬虫网络路径追踪方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256713B1 (en) | 1999-04-29 | 2001-07-03 | International Business Machines Corporation | Bus optimization with read/write coherence including ordering responsive to collisions |
KR20010077995A (ko) | 2000-02-04 | 2001-08-20 | 씨. 필립 채프맨 | 마이크로컨트롤러에서의 2중-포트 램 동작에 대한 충돌검출방법 |
US6963964B2 (en) * | 2002-03-14 | 2005-11-08 | International Business Machines Corporation | Method and apparatus for detecting pipeline address conflict using parallel compares of multiple real addresses |
US6981125B2 (en) * | 2003-04-22 | 2005-12-27 | International Business Machines Corporation | Method and apparatus for managing shared virtual storage in an information handling system |
US8401024B2 (en) * | 2004-01-14 | 2013-03-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Ethernet address management system |
US7278008B1 (en) * | 2004-01-30 | 2007-10-02 | Nvidia Corporation | Virtual address translation system with caching of variable-range translation clusters |
US7584194B2 (en) * | 2004-11-22 | 2009-09-01 | Truveo, Inc. | Method and apparatus for an application crawler |
US7711923B2 (en) * | 2006-06-23 | 2010-05-04 | Microsoft Corporation | Persistent flash memory mapping table |
US8806116B2 (en) * | 2008-02-12 | 2014-08-12 | Virident Systems, Inc. | Memory modules for two-dimensional main memory |
WO2009102821A2 (en) * | 2008-02-12 | 2009-08-20 | Virident Systems, Inc. | Methods and apparatus for two-dimensional main memory |
US20120131197A1 (en) * | 2010-11-23 | 2012-05-24 | Sensormatic Electronics, LLC | Method and apparatus for automatically resolving conflicting devices on a network |
US9524248B2 (en) * | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
US9323664B2 (en) * | 2013-07-23 | 2016-04-26 | Intel Corporation | Techniques for identifying read/write access collisions for a storage medium |
US9384133B2 (en) * | 2014-05-30 | 2016-07-05 | International Business Machines Corporation | Synchronizing updates of page table status indicators and performing bulk operations |
US10114752B2 (en) * | 2014-06-27 | 2018-10-30 | International Business Machines Corporation | Detecting cache conflicts by utilizing logical address comparisons in a transactional memory |
US10372627B2 (en) * | 2014-08-25 | 2019-08-06 | Western Digital Technologies, Inc. | Method to generate pattern data over garbage data when encryption parameters are changed |
US9569280B2 (en) | 2014-09-15 | 2017-02-14 | Seagate Technology Llc | Managing resource collisions in a storage compute device |
US9619401B2 (en) * | 2015-02-20 | 2017-04-11 | Wisconsin Alumni Research Foundation | Efficient memory management system for computers supporting virtual machines |
GB2536200B (en) * | 2015-03-02 | 2021-08-18 | Advanced Risc Mach Ltd | Memory management |
US10289560B2 (en) * | 2016-03-10 | 2019-05-14 | Toshiba Memory Corporation | Switch module and storage system |
US10019306B2 (en) | 2016-04-27 | 2018-07-10 | Western Digital Technologies, Inc. | Collision detection for slave storage devices |
US9927999B1 (en) * | 2016-09-09 | 2018-03-27 | Western Digital Technologies, Inc. | Trim management in solid state drives |
US10747678B2 (en) * | 2016-10-27 | 2020-08-18 | Seagate Technology Llc | Storage tier with compressed forward map |
US10108554B2 (en) * | 2016-12-05 | 2018-10-23 | Intel Corporation | Apparatuses, methods, and systems to share translation lookaside buffer entries |
US10083126B2 (en) * | 2016-12-06 | 2018-09-25 | Arm Limited | Apparatus and method for avoiding conflicting entries in a storage structure |
US10534719B2 (en) * | 2017-07-14 | 2020-01-14 | Arm Limited | Memory system for a data processing network |
US10565126B2 (en) * | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
-
2018
- 2018-09-20 US US16/137,261 patent/US10649909B2/en active Active
-
2019
- 2019-02-11 WO PCT/US2019/017490 patent/WO2019240849A1/en active Application Filing
- 2019-02-11 DE DE112019000158.2T patent/DE112019000158T5/de active Pending
- 2019-02-11 KR KR1020207014512A patent/KR102366512B1/ko active IP Right Grant
- 2019-02-11 CN CN201980005750.9A patent/CN111356991B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490635B1 (en) * | 2000-04-28 | 2002-12-03 | Western Digital Technologies, Inc. | Conflict detection for queued command handling in disk drive controller |
CN105843753A (zh) * | 2015-02-02 | 2016-08-10 | Hgst荷兰公司 | 用于硬盘驱动器的逻辑块地址映射 |
CN107451261A (zh) * | 2017-07-31 | 2017-12-08 | 广州探迹科技有限公司 | 一种基于对象存储的爬虫网络路径追踪方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111356991A (zh) | 2020-06-30 |
KR102366512B1 (ko) | 2022-02-23 |
US10649909B2 (en) | 2020-05-12 |
DE112019000158T5 (de) | 2020-07-23 |
WO2019240849A1 (en) | 2019-12-19 |
US20190384719A1 (en) | 2019-12-19 |
KR20210008826A (ko) | 2021-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102370760B1 (ko) | 존 네임스페이스에 대한 존 형성 | |
KR102569783B1 (ko) | 비순차적 구역 네임스페이스들 | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
US8769232B2 (en) | Non-volatile semiconductor memory module enabling out of order host command chunk media access | |
US20200409601A1 (en) | Hold of Write Commands in Zoned Namespaces | |
US11500727B2 (en) | ZNS parity swapping to DRAM | |
CN111356991B (zh) | 逻辑块寻址范围冲突爬虫 | |
CN114746834A (zh) | 基于分区状态的分区附加命令调度 | |
CN114730250A (zh) | 根据存储设备中的分区对读取命令加权 | |
US11656984B2 (en) | Keeping zones open with intermediate padding | |
US20230289226A1 (en) | Instant Submission Queue Release | |
US8775711B2 (en) | Solid-state disk, and user system comprising same | |
US11409459B2 (en) | Data parking for SSDs with zones | |
CN117616375A (zh) | 用于基于文件的中断合并的数据存储设备和方法 | |
CN112578993B (zh) | 多平面nvm处理编程出错的方法与存储设备 | |
US20240086108A1 (en) | Parallel fragmented sgl fetching for hiding host turnaround time | |
US11397699B2 (en) | Interrupt coalescing protection logic | |
US20240053923A1 (en) | Write coalescing via hmb to optimize write performance | |
US11861224B2 (en) | Data transfer management from host buffers | |
US20240143228A1 (en) | Fast execution of barrier command |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240828 Address after: California, USA Patentee after: SanDisk Technology Co. Country or region after: U.S.A. Address before: California, USA Patentee before: Western Digital Technologies, Inc. Country or region before: U.S.A. |