CN113448884A - 具有重叠范围的命令的并行重叠管理 - Google Patents

具有重叠范围的命令的并行重叠管理 Download PDF

Info

Publication number
CN113448884A
CN113448884A CN202110230856.8A CN202110230856A CN113448884A CN 113448884 A CN113448884 A CN 113448884A CN 202110230856 A CN202110230856 A CN 202110230856A CN 113448884 A CN113448884 A CN 113448884A
Authority
CN
China
Prior art keywords
lba
overlap
commands
active request
ranges
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
Application number
CN202110230856.8A
Other languages
English (en)
Other versions
CN113448884B (zh
Inventor
C.帕斯夸里
R.N.德格林
A.莫汉
S.R.纳达库迪蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN113448884A publication Critical patent/CN113448884A/zh
Application granted granted Critical
Publication of CN113448884B publication Critical patent/CN113448884B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种存储设备,其包括:用于存储从主机设备接收的主机数据的一个或多个逻辑块,所述逻辑块具有逻辑块地址(LBA);LBA范围表,所述LBA范围表用于存储与通过存储接口从所述主机设备接收的一个或多个命令相关联的一个或多个LBA范围;以及重叠检查电路,所述重叠检查电路用于将与活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围进行比较,并且确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的任一者之间的重叠。

Description

具有重叠范围的命令的并行重叠管理
相关申请的交叉引用
本申请要求2020年3月24日提交的名称为“ARALLEL OVERLAP MANAGEMENT FORCOMMANDS WI TH OVERLAPPI NG RANGES”的美国临时申请编号62/994,185的优先级的权益,该申请的全部内容通过引用并入本文。
技术领域
本公开的一个或多个示例性实施例的各方面涉及存储设备,并且更具体地涉及用于管理具有重叠范围的命令的存储设备。
背景技术
存储系统通常包括主机设备和一个或多个存储设备。主机设备可通过将各种命令传输到存储设备以更新存储设备的一个或多个逻辑块来管理存储在存储设备中的数据。例如,主机设备可将UNMAP命令或REASSI GN BLOCKS命令与一个或多个逻辑块地址(LBA)或LBA范围一起传输到存储设备,使得存储设备回收(例如,UNMAP)或改变与一个或多个LBA或LBA范围相关联的逻辑块(例如REASSI GN BLOCKS)的物理位置。在这种情况下,存储设备可阻止其他命令,例如READ和WRI TE(读和写)命令,这些命令具有与UNMAP命令或REASSI GNBLOCKS命令的一个或多个重叠的LBA或LBA范围,(或可类似地阻止具有重叠的LBA或LBA范围的REASSI GN BLOCKS或UNMAP命令),以在受影响的LBA或LBA范围内维持原子性。
在背景技术部分中公开的上述信息是为了增强对本公开背景技术的理解,并且因此,它可能包含不构成现有技术的信息。
发明内容
本公开的一个或多个示例性实施例涉及一种存储设备,该存储设备包括用于检查具有多个不相交的LBA或LBA范围的命令的重叠的硬件模块(例如,LOC电路)。
本公开的一个或多个示例性实施例涉及一种存储设备,该存储设备包括硬件模块(例如,LOC电路)以使得能够执行具有非重叠LBA或LBA范围的命令,即使当相同命令的一个或多个LBA或LBA范围由重叠阻止时。
根据本公开的一个或多个示例性实施例,一种存储设备包括:一个或多个逻辑块,所述一个或多个逻辑块被配置为存储从主机设备接收的主机数据,所述逻辑块具有逻辑块地址(LBA);LBA范围表,所述LBA范围表被配置为存储与通过存储接口从所述主机设备接收的一个或多个命令相关联的一个或多个LBA范围;以及重叠检查电路,所述重叠检查电路被位置为将与活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围进行比较,并且确定与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围中的任一者之间的重叠。
在一个示例性实施例中,所述重叠检查电路可被配置为响应于确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的至少一者重叠,阻止与所述活动请求相关联的命令的执行;以及响应于确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的任一者不重叠,允许与所述活动请求相关联的命令的执行。
在一个示例性实施例中,所述一个或多个命令可对应于未决命令,所述未决命令因具有重叠LBA范围被所述重叠检查电路阻止或者正在执行中。
在一个示例性实施例中,所述活动请求可对应于通过所述存储接口从所述主机设备接收的传入命令,并且与所述活动请求相关联的所述LBA范围可包括所述传入命令的不相交LBA范围。
在一个示例性实施例中,所述重叠检查电路可被配置为对于所述不相交LBA范围中的至少第一LBA范围阻止所述传入命令的执行,并且对于所述相同传入命令的所述不相交LBA范围中的至少第二LBA范围允许所述传入命令的执行。
在一个示例性实施例中,所述重叠检查电路可包括一个或多个比较器,所述一个或多个比较器被配置为将与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围进行比较,并且所述比较器中的每一者可被配置为将与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围中的不同范围进行比较。
在一个示例性实施例中,所述重叠检查电路可被配置为维持具有重叠LBA范围的命令的执行顺序序列。
在一个示例性实施例中,所述重叠检查电路可被配置为响应于确定与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围中的至少一者重叠而设置与所述活动请求相关联的所述LBA范围的重叠计数值,并且所述重叠计数值可对应于与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围之间的重叠的数量。
在一个示例性实施例中,所述重叠检查电路可被配置为响应于具有和与所述活动请求相关联的所述LBA范围重叠的LBA范围的所述一个或多个命令中的一个命令的执行完成而减少所述重叠计数值,并且响应于所述重叠计数值减少到阈值而允许与所述活动请求相关联的所述LBA范围的执行。
在一个示例性实施例中,与所述活动请求相关联的所述LBA范围可被注册到所述LBA范围表,并且所述重叠检查电路可被配置为从所述LBA范围表中检索与所述活动请求相关联的所述LBA范围。
根据本公开的一个或多个示例性实施例,一种用于检查与主机设备向存储设备发出的命令相关联的逻辑块地址(LBA)中的重叠的方法包括:由LBA范围表存储与通过存储接口从所述主机设备接收的一个或多个命令相关联的一个或多个LBA范围;由所述存储设备的重叠检查电路将与活动请求相关联的LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围进行比较;以及由所述重叠检查电路确定与所述活动请求相关联的所述LBA范围以及与所述一个或多个命令相关联的所述一个或多个LBA范围中的任一者之间的重叠。
在一个示例性实施例中,所述方法还可包括:由所述重叠检查电路响应于确定与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围中的至少一者重叠,阻止与所述活动请求相关联的命令的执行;以及由所述重叠检查电路响应于确定与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围中的任一者不重叠,允许与所述活动请求相关联的所述命令的执行。
在一个示例性实施例中,所述一个或多个命令可对应于未决命令,所述未决命令因具有重叠LBA范围被所述重叠检查电路阻止或者正在执行中。
在一个示例性实施例中,所述活动请求可对应于通过所述存储接口从所述主机设备接收的传入命令,并且与所述活动请求相关联的所述LBA范围可包括所述传入命令的不相交LBA范围。
在一个示例性实施例中,所述方法还可包括:由所述重叠检查电路对于所述不相交LBA范围中的至少第一LBA范围阻止所述传入命令的执行;以及由所述重叠检查电路对于所述相同传入命令的所述不相交LBA范围中的至少第二LBA范围允许所述传入命令的执行。
在一个示例性实施例中,所述重叠检查电路可包括一个或多个比较器,并且所述方法还可包括:由所述比较器将与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围进行比较,并且所述比较器中的每一者可将与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围中的不同范围进行比较。
在一个示例性实施例中,所述方法还可包括:由所述重叠检查电路维持具有重叠LBA范围的命令的执行顺序序列。
在一个示例性实施例中,为了维持执行顺序序列,所述方法还可包括:由所述重叠检查电路响应于确定与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围中的至少一者重叠而设置与所述活动请求相关联的所述LBA范围的重叠计数值,并且所述重叠计数值可对应于与所述活动请求相关联的所述LBA范围和与所述一个或多个命令相关联的所述一个或多个LBA范围之间的重叠的数量。
在一个示例性实施例中,所述方法还可包括:由所述重叠检查电路响应于具有和与所述活动请求相关联的所述LBA范围重叠的LBA范围的所述一个或多个命令中的一个命令的执行完成,减少所述重叠计数值;由所述重叠检查电路响应于所述重叠计数值减少到阈值而允许与所述活动请求相关联的所述LBA范围的执行。
在一个示例性实施例中,与所述活动请求相关联的所述LBA范围可被注册到所述LBA范围表,并且所述方法还可包括:由所述重叠检查电路从所述LBA范围表中检索与所述活动请求相关联的所述LBA范围。
附图说明
通过以下参考附图对示例性实施例的详细描述,本公开的上述和其他方面以及特征对于本领域技术人员将变得更加明了。
图1是根据本公开的一个或多个示例性实施例的存储系统的系统图。
图2是示出根据本公开的一个或多个示例性实施例的存储设备的LOC电路的框图。
图3示出了根据本公开的一个或多个示例性实施例的LBA范围表的示例性格式。
图4是根据本公开的一个或多个示例性实施例的LOC电路的检查电路的框图。
图5是根据本公开的一个或多个示例性实施例的示出检查电路的检测电路的示意性电路图。
图6是根据本公开的一个或多个示例性实施例的示出检查电路的计数电路的示意性电路图。
图7是根据本公开的一个或多个示例性实施例的阻止具有重叠范围的命令的示意性示例的流程图。
具体实施方式
在下文中,将参考附图更详细地描述示例性实施例,其中相同的附图标记始终表示相同的元件。然而,本公开可以以各种不同的形式实施,并且不应该被解释为仅限于本文所示的实施例。相反,提供这些实施例作为示例以使得本公开将是彻底和完整的,并且将本公开的各方面和特征完全传达给本领域的技术人员。因此,可能不会描述对于本领域的普通技术人员完全理解本公开的各方面和特征而言不必要的过程、元件和技术。除非另有说明,否则在整个附图和书面描述中,相同的附图标记表示相同的元件,并且因此可不重复其描述。
根据本公开的一个或多个示例性实施例,主机设备(例如,主机计算机)可向存储设备发出命令以请求对存储主机数据的存储设备的一个或多个逻辑块的更新。在这种情况下,每个命令可向存储设备提供与该命令相关联的一个或多个逻辑块地址(LBA)或LBA范围的列表。例如,UNMAP命令(例如,SCSI UNMAP命令)可向存储设备提供LBA的列表,并且REASSI GN BLOCKS命令(例如,SCSI REASSI GN BLOCKS命令)可向存储设备提供LBA范围的列表。存储设备可阻止具有与REASSI GN BLOCKS命令或UNMAP命令的LBA重叠的其他命令,例如READ和WRI TE命令,(和/或可类似地阻止具有重叠LBA或LBA范围的REASSI GN BLOCKS或UNMAP命令)以在受影响的LBA或LBA范围内维持原子性。然而,这可能带来性能问题。
例如,比较存储设备可顺序检查LBA或LBA范围中的重叠,使得比较存储设备可一次处理一个LBA或LBA范围。然而,在这种情况下,即使后续命令不具有重叠的LBA或LBA范围,比较存储器设备也可阻止所有后续命令,直到具有重叠范围的命令被解决(例如,处理和/或执行)。这可降低存储设备的性能,因为并非允许执行具有非重叠LBA或LBA范围的命令(例如,立即执行),而是会阻止这些命令,直到具有重叠LBA或LBA范围的任何先前命令已经被解决并执行。类似地,对于具有多个不相交的LBA或LBA范围的命令(例如,单个命令),比较存储设备可顺序地检查LBA或LBA范围中的重叠,使得多个不相交的LBA或LBA范围中的第一LBA或LBA范围的重叠可防止比较存储设备处理多个不相交的LBA或LBA范围中的第二LBA或LBA范围,即使没有重叠影响第二LBA或LBA范围也是如此。
根据本公开的一个或多个示例性实施例,存储设备可包括硬件模块(例如,LOC电路)以同时(例如,同时或在相同时间)支持多个LBA或LBA范围的重叠检查。在这种情况下,硬件模块可阻止执行具有重叠LBA或LBA范围的命令,同时允许执行不具有重叠LBA或LBA范围的命令(例如,后续命令),即使一个或多个先前命令因具有重叠LBA或LBA范围而被阻止。因此,可提高存储设备的性能。
根据本公开的一个或多个示例性实施例,硬件模块(例如,LOC电路)可针对单个命令同时检查多个不相交的LBA或LBA范围中的重叠。例如,单个命令的LBA或LBA范围可被分为LBA范围表的多个条目,硬件模块可使用其来检查与未决命令(例如,正在执行或等待执行的命令)的那些的重叠。在一些实施例中,可阻止与未决命令中的那些中的一者或多者重叠的命令的任何LBA或LBA范围,而可允许执行与未决命令的那些不重叠的相同命令的那些(例如,可立即执行或可继续执行)。在一些实施例中,可自动阻止与进行中的命令的LBA或LBA范围重叠的任何接收命令,直到范围被完全处理为止。因此,可以改善性能。
根据本公开的一个或多个示例性实施例,硬件模块(例如,LOC电路)可从固件或软件卸载重叠检查。例如,使用固件或软件(例如,执行指令的处理器)来检查多个不相交的LBA或LBA范围中的重叠可引入延迟(例如,由于处理时间),和/或可降低存储设备的吞吐量(例如,总体吞吐量)(例如,通过利用存储设备的有限处理资源)。因此,通过将重叠检查卸载到硬件模块,可减小等待时间,和/或可改善存储设备104的吞吐量。
图1是根据本公开的一个或多个示例性实施例的存储系统的系统图。
简要概述,根据本公开的一个或多个实施例,存储系统100可包括主机设备(例如,主机计算机)102和存储设备104。主机设备102可向存储设备104发布命令,使得存储设备104根据命令来管理存储在其中的主机数据。例如,主机设备102可以可通信地连接到存储设备104(例如,通过存储接口110),并且可向存储设备104发布各种命令(例如,READ,WRITE,UNMAP,REASSI GN BLOCK,TRIM等)以及与各命令相关联的一个或多个LBA或LBA范围。存储设备104可在与一个或多个LBA或LBA范围相关联的一个或多个逻辑块中存储、更新和/或以其他方式管理主机数据。一旦执行了命令,则存储设备104可将响应传输到主机设备102,从而指示命令已成功完成。
在一个或多个示例性实施例中,存储设备104可包括硬件模块(例如,LOC电路122)以检查与传入命令相关联的一个或多个LBA或LBA范围与未决命令的那些之间的重叠,而不是使用固件或软件(例如,执行指令的处理器,诸如存储控制器114)来执行重叠检查。例如,在一些实施例中,可将与一个或多个未决命令(例如,正在执行或等待执行的进行中的一个或多个命令)相关联的LBA或LBA范围划分为表(例如,LBA范围表120)的各个条目。在这种情况下,硬件模块可将与传入命令相关联的一个或多个LBA或LBA范围与表格中的那些进行比较,以确定与传入命令相关联的一个或多个LBA或LBA范围是否与表格中的那些重叠。如果与传入命令相关联的一个或多个LBA或LBA范围与表中的那些重叠,则可阻止传入命令。另一方面,如果与传入命令相关联的一个或多个LBA或LBA范围与表中的那些中的任一者不重叠,则可执行传入命令(例如,可立即执行或可继续执行)。
在一个或多个示例性实施例中,硬件模块(例如,LOC电路122)可同时(例如,同时或在相同时间)检查与命令(例如,单个命令)相关联的多个不相交的LBA或LBA范围,并且可使得能够针对非重叠的LBA或LBA范围执行命令,同时阻止针对重叠的LBA或LBA范围执行该相同命令。因此,通过允许针对非重叠的LBA或LBA范围执行命令,同时针对重叠的LBA或LBA范围阻止执行该相同命令,可减小或最小化命令的执行时间。
更详细地,参考图1,主机设备102可包括主机处理器106和主机存储器108。主机处理器106可以是通用处理器,例如主机设备102的中央处理单元(CPU)核心。主机存储器108可被认为是主机设备102的高性能主存储器(例如,主存储器)。例如,在一些实施例中,主机存储器108可包括(或可以是)易失性存储器,例如,诸如动态随机存取存储器(DRAM)。然而,本公开不限于此,并且如本领域技术人员所知,主机存储器108可包括(或可以是)主机设备102的任何合适的高性能主存储器(例如,主存储器)替代。例如,在其他实施例中,主机存储器108可以是相对较高性能的非易失性存储器,诸如NAND闪存存储器、相变存储器(PCM)、电阻式RAM、自旋转移转矩RAM(STTRAM)、基于PCM技术、忆阻器技术的任何合适的存储器和/或电阻式随机存取存储器(ReRAM),并且可包括例如氧属化物等。
存储设备104可被视为可持久存储主机设备102可访问的数据的辅助存储器。在这种情况下,在与主机存储器108的高性能存储器相比时,存储设备104可包括(或可以是)相对较慢的存储器。例如,在一些实施例中,存储设备104可以是主机设备102的辅助存储器,例如,诸如固态驱动器(SSD)。然而,本公开不限于此,并且在其他实施例中,存储设备104可包括(或者可以是)任何合适的存储设备,例如,磁存储设备(例如,硬盘驱动器(HDD)等)、光存储设备(例如,蓝光光盘驱动器、光盘(CD)驱动器、数字多功能光盘(DVD)驱动器等)、其他种类的闪存存储器设备(例如,USB闪存驱动器等)等。在各种实施例中,存储设备104可符合大形状因数标准(例如,3.5英寸硬盘驱动器形状因数)、小形状因数标准(例如,2.5英寸硬盘驱动器形状因数)、M.2形状因数、E1.S形状因数等。在其他实施例中,存储设备104可符合这些形状因数的任何合适或期望的派生形式。为了方便起见,在下文中可在SSD的上下文中描述存储设备104,但本公开不限于此。
存储设备104可通过存储接口110可通信地连接到主机设备102。存储接口110可促进主机设备102和存储设备104之间的通信(例如,使用连接器和协议)。在一些实施例中,存储接口110可促进主机设备102和存储设备104之间的存储请求和响应的交换。例如,在一个实施例中,存储接口110(例如,连接器及其协议)可包括(或可符合)小型计算机系统接口(SCSI)、非易失性存储器Express(NVMe)等。然而,本公开不限于此,并且在其他实施例中,存储接口110(例如,连接器及其协议)可符合其他合适的存储接口,例如,外围部件互连Express(PCIe)、通过以太网的远程直接存储器存取(RDMA)、串行高级技术附件(SATA)、光纤通道、串行附接的SCSI(SAS)、通过光纤的NVMe(NVME-oF)等。在其他实施例中,存储接口110(例如,连接器及其协议)可包括(或可符合)各种通用接口,例如以太网、通用串行总线(USB)等。为了方便起见,在下文中可在SCSI接口的上下文中描述存储接口110,但本公开不限于此。
在一些实施例中,存储设备104可包括存储控制器114和存储存储器116。存储控制器114可连接到存储接口110(例如,经由命令流水线电路112),并且可响应于通过存储接口110从主机设备102接收的输入/输出(I/O)请求。存储控制器114可提供接口以控制并提供往返于存储存储器116的访问。例如,存储控制器114可包括嵌入在其上的至少一个处理电路,其用于与主机设备102和存储存储器116交接。处理电路可包括例如数字电路(例如,微控制器、微处理器、数字信号处理器或逻辑设备(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)),其能够执行数据访问指令(例如,经由固件和/或软件)以根据数据访问指令提供往返于存储在存储存储器116中的数据的访问。例如,数据访问指令可包括任何合适的数据存储和检索算法(例如,READ/WRI TE)指令,数据管理和更新算法(例如,UNMAP、REASSI GN BLOCKS、TRI M等)指令等。
存储存储器116可永久存储从主机设备102接收的数据。例如,存储存储器116可包括多个逻辑块118以存储从主机设备102接收的主机数据。在一个实施例中,存储存储器116可包括非易失性存储器,例如,NAND闪存存储器。然而,本公开不限于此,并且取决于存储设备104的类型,存储存储器116可包括任何合适的存储器。
在一个或多个示例性实施例中,存储设备104可包括LBA范围表120。LBA范围表120可包括多个单独时隙,其存储与正在进行或正在等待执行的进行中的一个或多个命令相关联的LBA或LBA范围,使得可将LBA范围表120中的LBA或LBA范围与传入命令的LBA或LBA范围进行比较。例如,在一些实施例中,LBA范围表120可存储在缓冲器中或存储设备104的易失性存储器(诸如DRAM)中。然而,本公开不限于此,并且LBA范围表120可存储在任何合适的存储器中,使得可检索LBA范围表120中的LBA或LBA范围并将其与传入命令的那些进行比较。例如,在另一个实施例中,LBA范围表120可存储在存储存储器116中。
在一个或多个示例性实施例中,存储设备104还可包括命令流水线电路112和LBA重叠检查(LOC)电路122。在一些实施例中,命令流水线电路112可通过存储接口110从主机设备102接收命令(例如,命令帧、提交队列条目等),并且可将命令(例如,经由通知)发布(例如,可传输)到存储控制器114(或使用固件或软件的另一个处理器)。在这种情况下,存储控制器114(或使用固件或软件的另一个处理器)可将与每个命令相关联的一个或多个LBA范围提交给LOC电路122以进行重叠检查。在一些实施例中,命令流水线电路112可从主机设备102接收命令(例如,命令帧、提交队列条目等),并且可解析命令(例如,确定每个命令的命令类型以及与每个命令相关联的一个或多个LBA或LBA范围)。在这种情况下,在一些实施例中,命令流水线电路112可将与每个命令相关联的一个或多个LBA或LBA范围提交给LOC电路122以进行重叠检查。在一些实施例中,命令流水线电路112和存储控制器114(或使用固件或软件的另一个处理器)中的每一者可将LBA或LBA范围提交给LOC电路122以进行重叠检查。在其他实施例中,取决于存储设备104的实现或类型,命令流水线电路112和存储控制器114(或使用固件或软件的另一个处理器)中的合适的一者可将LBA或LBA范围提交给LOC电路122以进行重叠检查。然而,本公开不限于此,并且取决于存储设备104的类型和/或实现,可省略命令流水线电路112和存储控制器114中的一者。
在一些实施例中,LOC电路122可被实现为可通信地连接到存储控制器114和/或命令流水线电路112的硬件模块(例如,电子电路),并且可从存储控制器114和/或命令流水线电路112接收重叠检查请求。LOC电路122可检查与重叠检查请求相关联的一个或多个LBA或LBA范围和来自LBA范围表120的一个或多个LBA或LBA范围之间的重叠。例如,在一个实施例中,LOC电路122可被实现为附接到(或安装在)存储设备104上的集成电路(I C)(例如,其可被嵌入在相同板或相同电路板上,像存储设备104的电路一样)。例如,LOC电路122可作为片上系统(SOC)实现在存储设备104上(例如,可附接到或安装在存储器设备上)。然而,本公开不限于此。例如,在另一个实施例中,LOC电路122可在与存储设备104的电路板分开的电路板(例如,印刷电路板PCB)上实现,并且可连接到存储控制器114和/或命令流水线电路112。
在一个或多个示例性实施例中,如下面参考图2至图7所详细讨论的,LOC电路122可从存储控制器114和/或命令流水线电路112接收请求以同时(例如,同时或在相同时间)检查多个LBA或LBA范围中的重叠。例如,存储控制器114和/或命令流水线电路112可将传入命令的LBA或LBA范围(其在下文中可统称为LBA范围)注册到LBA范围表120的各个时隙中,并且LOC电路122可使用LBA范围表120以同时检查请求中的一个或多个LBA范围与LBA范围表120中的那些的重叠。在一些实施例中,LOC电路122可阻止执行具有与LBA范围表120中的一个或多个范围重叠的LBA范围的任何命令,并且可允许执行具有与LBA范围表120中的范围不重叠的LBA范围的命令。在一些实施例中,LOC电路122可使得能够针对非重叠的LBA范围执行命令,同时阻止针对重叠的LBA范围执行相同命令。因此,可减小或最小化命令的执行时间,可减小延迟,和/或可改善吞吐量。
图2是示出根据本公开的一个或多个示例性实施例的存储设备的LOC电路的框图。
简要概述,LOC电路122可以是硬件模块(例如,电子电路),其连接到存储控制器114(例如,如实线箭头所示)和/或命令流水线电路112(例如,如虚线箭头所示),使得LOC电路122可从存储控制器114和/或命令流水线电路112接收重叠检查请求。在一些实施例中,LOC电路122可从各重叠检查请求中选择一个重叠检查请求作为活动请求,并可将与活动请求相关联的一个或多个LBA范围从LBA范围表120中取出(例如,可检索或读取)到内部表(例如,触发器的内部寄存器)中。LOC电路122可将与活动请求相关联的一个或多个LBA范围与内部表中的与其他未决命令(例如,进行中或等待执行的命令)相关联的其他LBA范围进行比较。LOC电路122可根据比较结果来确定LBA范围之间的重叠。在一些实施例中,LOC电路122可生成重叠计数,该重叠计数可用于维持具有重叠LBA范围的命令的执行顺序序列。例如,在一些实施例中,LOC电路122可包括选择电路202、获取电路204和检查电路206。
更详细地,参考图2,在一些实施例中,命令流水线电路112可通过存储接口110从主机设备102接收传入命令(例如,命令帧、提交队列条目等),例如,UNMAP命令(例如,SCSIUNMAP命令)或REASSI GN BLOCKS命令(例如,SCSI REASSI GN BLOCKS命令)。传入命令可包括与命令相关联的一个或多个LBA范围,使得存储设备104对与一个或多个LBA范围相对应的一个或多个逻辑块118执行与该命令相关联的操作。在一些实施例中,命令流水线电路112可将命令(例如,经由通知)发布(例如,可传输)到存储控制器114,使得存储控制器114可使用例如固件或软件来处理命令。在这种情况下,存储控制器114可根据命令以及与该命令相关联的一个或多个LBA范围来更新存储存储器116中的LBA范围表120。在另一个实施例中,命令流水线电路112可包括解析电路以解析命令(例如,以确定命令的类型以及与该命令相关联的一个或多个LBA范围)。在这种情况下,命令流水线电路112可根据命令以及与该命令相关联的一个或多个LBA范围来更新存储存储器116中的LBA范围表120。在另一个实施例中,命令流水线电路112和存储控制器114中的每一者可通过与传入命令相关联的LBA范围来更新存储存储器116中的LBA范围表120。在一些实施例中,命令流水线电路112和/或存储控制器114可将具有多个不相交的LBA范围的单个命令划分成LBA范围表120的各个条目。
例如,图3示出了根据本公开的一个或多个示例性实施例的LBA范围表的示例性格式。如图3中所示,LBA范围表120可包括多个条目(例如,多个单独时隙),每个条目对应于命令以及与该命令相关联的LBA范围。LBA范围表120可由命令流水线电路112和/或存储控制器114通过向LBA范围表120提供传入命令的LBA范围302来更新。例如,传入命令的LBA范围302可定义LBA范围的开始LBA和结束LBA。在另一个示例中,传入命令的LBA范围302可定义开始LBA和LBA计数。然而,本公开不限于此。例如,当LBA范围包括单个LBA时,LBA范围302可包括单个LBA(例如,代替开始LBA和结束LBA),或者开始LBA和结束LBA可包括对应于单个LBA的相同LBA。另外,如图3所示,可将具有多个不相交的LBA范围的单个命令(例如,命令2)划分成LBA范围表120的多个条目,使得相同命令的每个不相交LBA范围在LBA范围表120中具有其自身的条目。
再次参考图2,在一些实施例中,命令流水线电路112和/或存储控制器114可将重叠检查请求传输到LOC电路122。例如,选择电路202可从命令流水线电路112和/或存储控制器114接收重叠检查请求。选择电路202可选择重叠检查请求中的合适一者作为活动请求,使得LOC电路检查与活动请求相关联的一个或多个LBA范围是否与从LBA范围表120加载的一个或多个LBA范围重叠。例如,在一些实施例中,选择电路202可池化(pool)从命令流水线电路112和/或存储控制器114接收的多个重叠检查请求,并且可根据合适的选择逻辑从池中选择适当或期望的重叠检查请求。例如,根据先进先出算法、后进先出算法、加权轮询算法、与请求关联的命令类型、与请求关联的命令优先级、与请求源关联的优先级(例如,可向存储控制器114给予更高优先级)、与该请求相关联的特定LBA范围等,选择电路202可从这些从命令流水线电路112和/或存储控制器114接收的重叠检查请求中选择活动请求。然而,本公开不限于此,并且在一些实施例中,可省略选择电路202。例如,在一些实施例中,LOC电路122可按照接收重叠检查请求的顺序来处理重叠检查请求,并且在这种情况下,可省略选择电路202。
在一些实施例中,取决于原子性要求,可对具有重叠范围的不同类型的命令进行不同的处理。例如,与另一个READ命令重叠的READ命令和与WRI TE命令重叠的READ命令可能以不同的方式处理,因为修改逻辑块状态的那些命令可能会影响原子性。在这种情况下,例如,命令流水线电路112和/或存储控制器114可根据(例如,取决于)命令的类型向LOC电路122传输重叠检查请求,和/或选择电路202可根据(例如,取决于)命令的类型来选择活动请求。然而,本公开不限于此。
在某些实施例中,LOC电路122可从LBA范围表120获取(例如,读取或检索)与活动请求相关联的LBA范围,并且可将LBA范围加载到LOC电路122的内部表(例如,触发器的内部寄存器等)中以便与一个或多个未决命令的一个或多个LBA范围进行比较。例如,在一些实施例中,活动请求可包括到存储存储器116的LBA范围表120中的索引、指针等,其指定与要获取的活动请求相关联的LBA范围。在一些实施例中,获取电路204可包括内部表以存储一个或多个未决命令的一个或多个LBA范围,其可和与活动请求相关联的LBA范围进行比较。
在一些实施例中,未决命令的LBA范围可对应于已经针对重叠进行检查的先前活动请求,并且因此,可能先前已被加载到获取电路204的内部表中。在这种情况下,当未决命令中的未决命令的执行完成时,可从内部表中清除(例如,可移除或删除)未决命令,使得未决命令的LBA范围不与后续活动请求进行比较和用于阻止后续活动请求。然而,本公开不限于此,并且在另一个实施例中,每次接收到新活动请求时,获取电路204可获取(例如,可读取或可检索)来自LBA范围表120的与活动请求相关联的LBA范围以及用于比较的未决命令的LBA范围。在这种情况下,当未决命令中的未决命令的执行完成时,存储控制器114和/或命令流水线电路112可从LBA范围表120中清除(例如,可移除或可删除)未决命令,使得所述未决命令的LBA范围不会被获取以及不会将其与正在考虑的活动请求的LBA范围进行比较。
在一些实施例中,如下面参考图4所更详细讨论的,LOC电路122可将与活动请求相关联的LBA范围与未决命令的一个或多个LBA范围进行比较,以确定是否存在它们之间的重叠。例如,检查电路206可将活动请求的LBA范围与未决命令的每个LBA范围(例如,从LBA范围表120中获取)进行比较以确定活动请求的LBA范围是否与未决命令中的任何LBA范围重叠。在一些实施例中,如果活动请求的LBA范围不与未决命令的任何LBA范围重叠,则可将通知提供给与活动请求相关联的重叠检查请求的发起方(例如,提供给存储控制器114和/或命令流水线电路112),使得可执行与活动请求相关联的命令(例如,立即执行或继续执行)。在这种情况下,在一些实施例中,发起方(例如,存储控制器114和/或命令流水线电路112)可向主机设备102提供响应,从而指示该命令已成功执行。另一方面,如果活动请求的LBA范围与未决命令的任何LBA范围重叠,则可不向发起方提供通知,使得可阻止与活动请求相关联的命令。在这种情况下,在一些实施例中,检查电路206可生成重叠计数以确定与活动请求相关联的命令的执行顺序序列。
图4是根据本公开的一个或多个示例性实施例的LOC电路的检查电路的框图。
简要概述,获取电路204可接收与从存储控制器114或命令流水线电路112接收的重叠检查请求相对应的活动请求(例如,经由选择电路202)。在一些实施例中,活动请求可包括索引、指针等,其指定与活动请求相关联的一个或多个LBA范围在LBA范围表120中的位置。在一些实施例中,获取电路204可从LBA范围表120获取(例如,可读取或可检索)与活动请求相关联的一个或多个LBA范围(例如,活动范围),并且可将与活动请求相关联的一个或多个活动范围加载到内部表(例如,触发器的内部寄存器等)中。获取电路204可向检查电路206提供与活动请求相关联的一个或多个活动范围,以及与一个或多个未决命令相关联(例如,与执行中、被阻止和等待执行的命令相关联)的LBA范围Range 1至Range N(其中N是自然数),并且检查电路206可检查它们之间的重叠。例如,在一些实施例中,检查电路206可包括比较电路402、重叠位图404、检测电路406和计数电路408。
更详细地,参考图4,在一些实施例中,比较电路402可包括多个比较器Comparator1至Comparator N。比较器Comparator 1至Comparator N中的每个比较器可接收活动范围(例如,与活动请求相关联的LBA范围)以用于和与一个或多个未决命令相关联的LBA范围Range 1至Range N中的对应一者进行比较。例如,第一比较器Comparator 1可将活动范围与一个或多个未决命令中的第一LBA范围Range 1进行比较,第二比较器Comparator2可将活动范围与一个或多个未决命令中的第二LBA范围Range 2进行比较,依此类推等,使得第N个比较器Comparator N可将活动范围与一个或多个未决命令中的第N个(例如,最后一个)LBA范围Range N进行比较。在一些实施例中,比较器Comparator 1至Comparator N可彼此同时(例如,同时或在相同时间)执行比较,但是本公开不限于此。
在一些实施例中,比较器Comparator 1到Comparator N中的每一者可输出比较结果,从而指示活动范围(例如,活动请求的LBA范围)是否与一个或多个未决命令的对应LBA范围Range 1到Range N重叠。在一些实施例中,比较器Comparator 1至Comparator N的比较结果可用于生成重叠位图404。例如,在一个实施例中,如果活动范围与一个或多个未决命令的对应LBA范围Range 1至Range N重叠,则对应比较器Comparator 1至Comparator N可将重叠位图404中的对应位(0/1)设置为重叠电平(例如,高电平)。另一方面,如果活动范围与一个或多个未决命令的对应LBA范围Range 1至Range N不重叠,则对应比较器Comparator 1至Comparator N可将重叠位图404中的对应位(0/1)设置为非重叠电平(例如,低电平)。
在一些实施例中,检测电路406可根据比较电路402的比较结果来检测重叠。例如,在一些实施例中,检测电路406可根据重叠位图404输出重叠检测信号。在这种情况下,如果重叠位图404中的任何位(0/1)被设置为重叠电平(例如,高电平),则可输出重叠信号(例如,高电平信号)作为重叠检测信号,从而指示活动请求的活动范围与未决命令的LBA范围Range 1到Range N中的至少一者重叠。另一方面,如果重叠位图404中的每个位(0/1)被设置为非重叠电平(例如,低电平),则可输出有效信号(例如,低电平信号)作为重叠检测信号,从而指示活动请求的活动范围与未决命令的LBA范围Range 1至Range N不重叠。
例如,参考图5,示出了根据本公开的一个或多个示例性实施例的示出检测电路406的示意性电路图。如在图5所示,在一些实施例中,检测电路406可包括一个或多个逻辑门。例如,检测电路406可包括或逻辑门502。在这种情况下,或逻辑门502可确定是否将重叠位图404中的至少一个位(0/1)设置为重叠电平(例如,高电平),并且如果至少一个位(0/1)具有重叠电平(例如,高电平),则或逻辑门502可输出重叠信号(例如,高电平信号)作为重叠检测信号。另一方面,如果重叠位图404中的每个位(0/1)被设置为非重叠电平(例如,低电平),则或逻辑门502可输出有效信号(例如,低电平信号)作为重叠检测信号。然而,本公开不限于此,并且可根据本公开的精神和范围对检测电路406进行各种修改。例如,检测电路406可包括各种合适的硬件结构、电子元件和/或部件(例如,可用其来实现),例如,其他各种合适的逻辑门(例如,与非门、或非门、异或门、非门、异或门、异或非门等)、各种合适的开关、各种合适的晶体管、各种合适的电阻器、各种合适的电容器等,如本领域技术人员根据本公开内容的内容将了解和/或从实践本公开的一个或多个实施例中获悉的。
在一些实施例中,即使阻止多个不相交的LBA范围中的一个或多个LBA范围,比较电路402仍可使得执行具有多个不相交的LBA范围的命令。作为说明性示例,考虑具有两个不相交的LBA范围的命令,使得两个不相交的LBA范围彼此不重叠,并且假定两个不相交的LBA范围中的第一LBA范围与未决命令的一个或多个LBA范围重叠,并且两个不相交的LBA范围中的第二LBA范围不与未决命令的任何LBA范围重叠。在这种情况下,如果首先检查第一LBA范围,则可出于与未决命令的一个或多个LBA范围重叠而阻止第一LBA范围。然而,当随后针对重叠检查相同命令的第二LBA范围时,命令的第二LBA范围仍可继续执行,即使阻止了相同命令的第一LBA范围,因为第二LBA范围不与第一LBA范围或未决命令的任何LBA范围重叠。因此,可以改善性能。
再次参考图4,在一些实施例中,计数电路408可跟踪重叠计数以维持具有重叠LBA范围的命令的执行顺序序列。例如,如将在下面参考图6更详细地描述的,在一些实施例中,计数电路408可跟踪正在考虑的活动请求的活动范围和未决命令的LBA范围之间的多个重叠范围,并且可生成与重叠范围的数量相对应的重叠计数。在这种情况下,重叠计数可用于确定可执行与活动请求相对应的命令的顺序。在具有重叠范围的未决命令中的一者的执行完成之后,可减少对应请求的重叠计数,使得可维持对应请求的执行顺序序列。在这种情况下,当对应请求的重叠计数减少到0时,可接下来执行具有相同重叠范围的未决命令中的与对应请求相关联的命令。
图6是根据本公开的一个或多个示例性实施例的示出检查电路的计数电路的示意性电路图。为了方便起见,针对图6中的3位重叠位图404示出了计数电路408,但本公开不限于此。
参考图6,在一些实施例中,针对3位位图404的计数电路408可根据多个计数位的二进制计数来生成重叠计数。例如,对于示意性的3位重叠位图404,计数电路408可根据第一计数位(例如,最低有效位)S0和第二计数位(例如,更高有效位或在该示意性3位示例中为最高有效位)S1来生成重叠计数。然而,本公开不限于此,并且本领域普通技术人员将理解,计数电路408可取决于位图404的位数根据更多或更少的计数位来生成重叠计数。在一些实施例中,计数电路408可包括一个或多个逻辑电路,其具有彼此不同的电路结构以根据多个位S0和S1生成重叠计数。例如,计数电路408可包括用于生成第一计数位S0的位值的第一逻辑电路602,以及用于生成第二计数位S1的位值的第二逻辑电路604。
在此示例中,第一逻辑电路602可取决于是否将重叠位图404的位B0、B1和B2中的一者或将位B0、B1和B2的全部是否是或者将被设置为具有重叠电平(例如,高电平)而输出第一计数位S0。第二逻辑电路604可取决于位B0、B1和B2中的至少两者是否被设置为具有重叠电平(例如,高电平)而输出第二计数位S1。因此,在一些实施例中,第一逻辑电路602可具有的电路结构与第二逻辑电路604的电路结构不同。例如,在一个实施例中,第一逻辑电路602可包括第一逻辑门(例如,可用其实现),并且第二逻辑电路604可包括多个第二逻辑门606、608和610以及第三逻辑门612(例如,可用其实现)。
第一逻辑电路602的第一逻辑门可输出第一计数位S0,以具有取决于重叠位图404的位B0、B1和B2中的任何一者或者全部是否具有重叠电平(例如,高电平)的该位值。例如,在一个实施例中,第一逻辑电路602的第一逻辑门可被实现为异或门,使得如果重叠位图404的位B0、B1和B2中的任一者,或者如果位B0、B1和B2的全部具有重叠电平(例如,高电平),则第一逻辑电路602输出第一计数位S0以具有高电平(例如1)。否则,第一逻辑电路602输出第一计数位S0以具有低电平(例如0)。
第二逻辑电路604可包括多个第二逻辑门606、608和610以及第三逻辑门612(例如,可用其实现)。多个第二逻辑门606、608和610中的每一者可确定重叠位图404的位B0、B1和B2中的两个对应位是否具有重叠电平(例如,高电平),并且第三逻辑门612可根据第二逻辑门606、608和610的输出来输出第二计数位S1。例如,在一个实施例中,第二逻辑门606、608和610中的每一者可被实现为与门,并且第三逻辑门612可被实现为或门。在这种情况下,第二逻辑门606、608和610中的每一者可对重叠位图404的位B0、B1和B2的不同组执行与运算。例如,第一-第二逻辑门606可在重叠位图404的位B0、B1和B2之中的第一位B0和第二位B1之间执行与运算,第二-第二逻辑门608可在重叠位图404的位B0、B1和B2中的第二位B1和第三位B2之间执行与运算,并且第三-第二逻辑门610可在重叠位图404的位B0、B1和B2中的第一位B0和第三位B2之间执行与运算。如果第二逻辑门606、608和610中的任何一者或多者确定重叠位图404的位B0、B1和B2中的其对应两位具有重叠电平(例如,高电平),则第三逻辑门612可输出第二计数位S1以具有高电平值。否则,第三逻辑门612可输出第二计数位S1以具有低电平(例如0)。
举例来说,考虑为重叠检查依次提交4个重叠LBA范围,并且假设4个重叠LBA范围中的第一LBA范围不与任何当前未决命令重叠。在这种情况下,当检查第一LBA范围时,计数电路408可输出指示无重叠的0的重叠计数(例如,S0=0,S1=0等),使得第一LBA范围可继续执行。当检查4个重叠LBA范围中的第二LBA范围时,现在第一LBA范围可由获取电路204加载为未决命令的LBA范围中的一者(例如,正在执行中),使第二LBA范围与第一LBA范围重叠。在这种情况下,计数电路408输出重叠计数以具有值1(例如,S0=1并且S1=0),从而指示第二LBA范围与未决命令的LBA范围中的一者(例如,第一LBA范围)重叠。
同样,当检查4个重叠LBA范围中的第三LBA范围时,第二LBA范围可由获取电路204加载为未决命令的LBA范围中的一者(例如,被阻止和等待执行),使得第三LBA范围与第一LBA范围和第二LBA范围重叠。在这种情况下,计数电路408输出重叠计数以具有值2(例如,S0=0并且S1=1),从而指示第三LBA范围与未决命令的LBA范围的两者(例如,第一LBA范围和第二LBA范围)重叠。此外,当检查4个重叠LBA范围中的第四LBA范围时,第三LBA范围可由获取电路204加载为未决命令的LBA范围中的一者(例如,被阻止和等待执行),使得第四LBA范围与第一LBA范围、第二LBA范围和第三LBA范围重叠。在这种情况下,计数电路408输出重叠计数以具有值3(例如,S0=1并且S1=1),从而指示第四LBA范围与未决命令的LBA范围中的三者(例如,第一LBA范围、第二LBA范围和第三LBA范围)重叠。
在此说明性示例中,随着针对第一、第二、第三和第四LBA范围中的每一者的命令完成(例如,成功执行和/或提供给主机设备102的响应),具有重叠范围的剩余范围中的每一者的重叠计数可减少。一旦其重叠计数减少为0,对应命令就可解除阻止,使得对应命令可继续执行。例如,当成功执行了第一LBA范围的命令时,第二个LBA范围的重叠计数可从1减少为0,第三LBA范围的重叠计数可从2减少为1,并且第三LBA范围的重叠计数可从3减少为2。在这种情况下,第二LBA范围的命令可被解除阻止,使得它可继续执行,并且在其成功执行之后,可减少剩余的第三和第四重叠LBA范围中每一者的重叠计数。因为第三LBA范围的重叠计数减少为0,所以第三个LBA范围的命令可被解除阻止以继续执行,并且在其成功执行后,第四LBA范围的重叠计数可减少为0,并且作为响应,第四LBA范围可被解除阻止,并且与第四LBA范围相关联的命令可继续执行。
图7是根据本公开的一个或多个示例性实施例的阻止具有重叠范围的命令的示意性示例的流程图。
参照图7,LOC电路122的获取电路204可接收与第一命令(例如,READ命令)相对应的第一活动请求702。例如,第一活动请求可对应于第一LBA范围Range 1。获取电路204可从存储存储器116(例如,从LBA范围表120)中获取(例如,可读取或可检索)第一LBA范围Range1,并且可将第一LBA范围加载到获取电路204的内部表(例如,触发器的内部寄存器)中以进行比较。在该说明性示例中,第一LBA范围可不与任何其他范围重叠,并且因此,第一LBA范围可继续执行。
虽然第一LBA范围的第一命令是未决(例如,正在执行中),但获取电路204可接收与第二命令(例如,UNMAP命令)相对应的第二活动请求704。第二活动请求704可对应于第二LBA范围Range 2和第三LBA范围Range 3。例如,第二LBA范围Range 2和第三LBA范围Range3可以是相同第二命令的彼此不重叠的不相交LBA范围。在这种情况下,获取电路204可从存储存储器116(例如,从LBA范围表120)中获取(例如,可读取或可检索)第二和第三LBA范围Range 2和Range 3中的每一者,并且可同时(例如,同时或在相同时间)将第二和第三LBA范围Range 2和Range 3加载到内部表中。
在此说明性示例中,第二LBA范围Range 2可与第一LBA范围Range 1重叠,并且因此,第二命令的第二LBA范围Range 2可被阻止。例如,可设置(例如,通过计数电路408)与第二LBA范围Range 2相关联的重叠计数,使得第二LBA范围Range 2被阻止。另一方面,第三LBA范围Range 3可以不与任何其他范围重叠,并且从而可继续执行,即使相同命令的第二LBA范围Range 2被阻止也是如此。当与第一LBA范围Range 1相关联的第一命令完成时,第二LBA范围Range 2的重叠计数可减少,并且一旦第二LBA范围Range 2的重叠计数减少到0,则第二LBA范围Range 2可被解除阻止以继续执行。
仍参考图7,虽然第三LBA范围Range 3的第二命令是未决(例如,正在执行中),但获取电路204可接收与第三命令(例如,READ命令)相对应的第三活动请求706。第三活动请求706可对应于第四LBA范围Range 4。在这种情况下,获取电路204可从存储存储器116(例如,从LBA范围表120)中获取(例如,可读取或可检索)第四LBA范围Range 4,并且可将第四LBA范围Range 4加载到内部表中。第四LBA范围Range 4可与第三LBA范围Range 3重叠并且因此可被阻止。例如,可设置(例如,通过计数电路408)与第四LBA范围Range 4相关联的重叠计数,使得第四LBA范围Range 4被阻止。当与第三LBA范围Range 3相关联的第二命令完成时,第四LBA范围Range 4的重叠计数可减少,并且一旦第四LBA范围Range 4的重叠计数减少到0,则第四LBA范围Range 4可被解除阻止以继续执行。在这种情况下,当第二命令的对应于第三LBA范围Range 3的部分完成时,第四LBA范围Range 4可被解除阻止以继续执行,即使第二命令本身(例如,第二范围Range 2和第三范围Range 3两者的第二命令704)没有完成也是如此。
如上所讨论,根据本公开的一个或多个示例性实施例,存储设备包括LOC电路122,以同时(例如,同时或在相同时间)启用多个LBA或LBA范围的重叠检查。在一些实施例中,LOC电路122可阻止具有重叠的LBA或LBA范围的命令的执行,而允许不具有重叠LBA或LBA范围的命令(例如,相同命令和/或后续命令)的执行。因此,可提高存储设备的性能。
在图中,为清楚起见,可能会放大和/或简化元件、层和区域的相对大小。应理解,尽管在本文中术语第一、第二、第三等可用于描述各种元件、部件、区域、层和/或部分,但这些元件、部件、区域、层和/或部分应不受这些术语限制。这些术语用于将一个元件、部件、区域、层或部分与另一个元件、部件、区域、层或部分区分开来。因此,下面描述的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分,而不脱离本公开的精神和范围。
应当理解,当元件或层被称为“在…上”、“连接”或“耦接”到另一个元件或层时,其可以直接“在…上”、“连接”或“耦接”到另一元件或层,或者可以存在一个或多个中间元件或层。此外,还将理解的是,当元件或层被称为在两个元件或层“之间”时,它可以是两个元件或层之间的唯一元件或层,或者也可能存在一个或多个中间元件或层。
本文使用的术语用于描述特定实施例的目的,且并不旨在限制本公开。如本文所使用的,单数形式“一”和“一个”也旨在包括复数形式,除非上下文另有明确指示。还应理解,本说明书中使用的术语“包括(comprise)”、“包含(include)”、“具有”、”用于说明存在所述特征、整数、步骤、操作、元件和/或部件,但并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、部件和/或它们的组合。如此处所使用的,术语“和/或”包括一个或多个相关列出项目的任何和所有组合。在元件列表之后使用“至少一个”等表达时,会修饰整个元件列表,而不会修饰列表中的单个元件。
如本文所用,术语“基本上”、“约”和类似术语用作近似术语而不是程度术语,并且旨在说明测量或计算值的固有变化,这些变化会被本领域普通技术人员识别出。此外,当描述本公开的实施例时,“可”的使用是指“本公开的一个或多个实施例”。如本文所用,术语“使用(use)”、“在使用(using)”和“已使用(used)”可分别被认为与术语“利用(utilize)”、“在利用(utilizing)”和“已利用(utilized)”同义。
除非另外定义,否则本文中使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员通常理解的相同意义。将进一步理解,术语,诸如在常用字典中定义那些,应被解释为具有与其在相关领域和/或本说明书的上下文中的含义一致的含义,并且不应以理想化或过度正式的意义来解释,除非本文明确定义。
尽管已经描述了一些示例性实施例,但本领域技术人员将容易理解,在不脱离本公开的精神和范围的情况下,可对示例性实施例进行各种修改。应当理解,通常应当认为每个实施例中的各特征或各方面的描述可用于其他实施例中的其他类似特征或方面,除非另有说明。因此,应理解,前述内容是各种示例性实施例的说明,并且不应解释为限于本文公开的特定示例性实施例,并且对所公开的示例性实施例以及其他示例性实施例的各种修改旨在包括在如所附权利要求及其等同物所限定的本公开的精神和范围内。

Claims (20)

1.一种存储设备,包括:
一个或多个逻辑块,被配置为存储从主机设备接收的主机数据,所述逻辑块具有逻辑块地址LBA;
LBA范围表,被配置为存储与通过存储接口从所述主机设备接收的一个或多个命令相关联的一个或多个LBA范围;以及
重叠检查电路,被配置为将与活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围进行比较,并且确定在与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的任一者之间的重叠。
2.根据权利要求1所述的存储设备,其中所述重叠检查电路被配置为响应于确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的至少一者重叠,阻止与所述活动请求相关联的命令的执行;以及响应于确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的任一者不重叠,允许与所述活动请求相关联的命令的执行。
3.根据权利要求2所述的存储设备,其中所述一个或多个命令对应于因具有重叠LBA范围被所述重叠检查电路阻止的未决命令,或者对应于正在执行中的未决命令。
4.根据权利要求1所述的存储设备,其中所述活动请求对应于通过所述存储接口从所述主机设备接收的传入命令,并且与所述活动请求相关联的LBA范围包括所述传入命令的不相交LBA范围。
5.根据权利要求4所述的存储设备,其中所述重叠检查电路被配置为对于所述不相交LBA范围中的至少第一LBA范围阻止所述传入命令的执行,并且对于相同传入命令的所述不相交LBA范围中的至少第二LBA范围允许所述传入命令的执行。
6.根据权利要求1所述的存储设备,其中所述重叠检查电路包括一个或多个比较器,所述一个或多个比较器被配置为将与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围进行比较,并且所述比较器中的每一者被配置为将与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的不同范围进行比较。
7.根据权利要求1所述的存储设备,其中所述重叠检查电路被配置为维持具有重叠LBA范围的命令的执行顺序序列。
8.根据权利要求7所述的存储设备,其中所述重叠检查电路被配置为响应于确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的至少一者重叠而设置与所述活动请求相关联的LBA范围的重叠计数值,并且所述重叠计数值对应于与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围之间的重叠的数量。
9.根据权利要求8所述的存储设备,其中所述重叠检查电路被配置为响应于具有和与所述活动请求相关联的LBA范围重叠的LBA范围的所述一个或多个命令中的一个命令的执行完成而减少所述重叠计数值,并且响应于所述重叠计数值减少到阈值而允许与所述活动请求相关联的LBA范围的执行。
10.根据权利要求1所述的存储设备,其中与所述活动请求相关联的LBA范围被注册到所述LBA范围表,并且所述重叠检查电路被配置为从所述LBA范围表中检索与所述活动请求相关联的LBA范围。
11.一种用于检查与主机设备向存储设备发出的命令相关联的逻辑块地址LBA中的重叠的方法,所述方法包括:
由LBA范围表存储与通过存储接口从所述主机设备接收的一个或多个命令相关联的一个或多个LBA范围;
由所述存储设备的重叠检查电路将与活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围进行比较;以及
由所述重叠检查电路确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的任一者之间的重叠。
12.根据权利要求11所述的方法,还包括:
响应于确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的至少一者重叠,由所述重叠检查电路阻止与所述活动请求相关联的命令的执行;以及
响应于确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的任一者不重叠,由所述重叠检查电路允许与所述活动请求相关联的命令的执行。
13.根据权利要求12所述的方法,其中所述一个或多个命令对应于因具有重叠LBA范围被所述重叠检查电路阻止的未决命令,或者对应于正在执行中的未决命令。
14.根据权利要求11所述的方法,其中所述活动请求对应于通过所述存储接口从所述主机设备接收的传入命令,并且与所述活动请求相关联的LBA范围包括所述传入命令的不相交LBA范围。
15.根据权利要求14所述的方法,还包括:
由所述重叠检查电路对于所述不相交LBA范围中的至少第一LBA范围阻止所述传入命令的执行;以及
由所述重叠检查电路对于相同传入命令的所述不相交LBA范围中的至少第二LBA范围允许所述传入命令的执行。
16.根据权利要求11所述的方法,其中所述重叠检查电路包括一个或多个比较器,并且所述方法还包括:
由所述比较器将与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围进行比较,
其中所述比较器中的每一者将与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的不同范围进行比较。
17.根据权利要求11所述的方法,还包括:
由所述重叠检查电路维持具有重叠LBA范围的命令的执行顺序序列。
18.根据权利要求17所述的方法,其中为了维持所述执行顺序序列,所述方法还包括:
响应于确定与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围中的至少一者重叠由所述重叠检查电路设置与所述活动请求相关联的LBA范围的重叠计数值,
其中所述重叠计数值对应于与所述活动请求相关联的LBA范围和与所述一个或多个命令相关联的一个或多个LBA范围之间的重叠的数量。
19.根据权利要求18所述的方法,还包括:
响应于具有和与所述活动请求相关联的LBA范围重叠的LBA范围的所述一个或多个命令中的一个命令的执行完成,由所述重叠检查电路减少所述重叠计数值;
由所述重叠检查电路响应于所述重叠计数值减少到阈值而允许与所述活动请求相关联的LBA范围的执行。
20.根据权利要求11所述的方法,其中与所述活动请求相关联的LBA范围被注册到所述LBA范围表,并且所述方法还包括:
由所述重叠检查电路从所述LBA范围表中检索与所述活动请求相关联的LBA范围。
CN202110230856.8A 2020-03-24 2021-03-02 具有重叠范围的命令的并行重叠管理 Active CN113448884B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062994185P 2020-03-24 2020-03-24
US62/994,185 2020-03-24
US16/839,900 US11301370B2 (en) 2020-03-24 2020-04-03 Parallel overlap management for commands with overlapping ranges
US16/839,900 2020-04-03

Publications (2)

Publication Number Publication Date
CN113448884A true CN113448884A (zh) 2021-09-28
CN113448884B CN113448884B (zh) 2024-01-02

Family

ID=74859189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110230856.8A Active CN113448884B (zh) 2020-03-24 2021-03-02 具有重叠范围的命令的并行重叠管理

Country Status (6)

Country Link
US (1) US11301370B2 (zh)
EP (1) EP3885888B1 (zh)
JP (1) JP2021152900A (zh)
KR (1) KR20210119333A (zh)
CN (1) CN113448884B (zh)
TW (1) TW202207041A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11640264B2 (en) * 2021-08-30 2023-05-02 Western Digital Technologies, Inc. Parallel commands overlap detection based on queue-depth

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548795A (en) * 1994-03-28 1996-08-20 Quantum Corporation Method for determining command execution dependencies within command queue reordering process
US6490635B1 (en) * 2000-04-28 2002-12-03 Western Digital Technologies, Inc. Conflict detection for queued command handling in disk drive controller
US20110161552A1 (en) * 2009-12-30 2011-06-30 Lsi Corporation Command Tracking for Direct Access Block Storage Devices
US20130223628A1 (en) * 2012-02-28 2013-08-29 Samsung Electronics Co., Ltd. Storage device and memory controller thereof
US20150032936A1 (en) * 2013-07-23 2015-01-29 Jason K. Yu Techniques for Identifying Read/Write Access Collisions for a Storage Medium
US20150253992A1 (en) * 2014-03-10 2015-09-10 Kabushiki Kaisha Toshiba Memory system and control method
US20160110296A1 (en) * 2014-10-17 2016-04-21 Sk Hynix Memory Solutions Inc. Lba blocking table for ssd controller
US20190384719A1 (en) * 2018-06-14 2019-12-19 Western Digital Technologies, Inc. Logical block addressing rangecollision crawler

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285937B2 (en) 2010-02-24 2012-10-09 Apple Inc. Fused store exclusive/memory barrier operation
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
WO2014078481A1 (en) 2012-11-15 2014-05-22 Violin Memory Inc. Memorty array with atomic test and set
US9304937B2 (en) 2013-10-23 2016-04-05 Netapp Inc. Atomic write operations for storage devices
US20160342545A1 (en) 2014-02-12 2016-11-24 Hitachi, Ltd. Data memory device
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US9910786B2 (en) 2015-11-03 2018-03-06 Intel Corporation Efficient redundant array of independent disks (RAID) write hole solutions
US10922022B2 (en) * 2019-03-13 2021-02-16 Samsung Electronics Co., Ltd. Method and system for managing LBA overlap checking in NVMe based SSDs

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548795A (en) * 1994-03-28 1996-08-20 Quantum Corporation Method for determining command execution dependencies within command queue reordering process
US6490635B1 (en) * 2000-04-28 2002-12-03 Western Digital Technologies, Inc. Conflict detection for queued command handling in disk drive controller
US20110161552A1 (en) * 2009-12-30 2011-06-30 Lsi Corporation Command Tracking for Direct Access Block Storage Devices
US20130223628A1 (en) * 2012-02-28 2013-08-29 Samsung Electronics Co., Ltd. Storage device and memory controller thereof
US20150032936A1 (en) * 2013-07-23 2015-01-29 Jason K. Yu Techniques for Identifying Read/Write Access Collisions for a Storage Medium
US20150253992A1 (en) * 2014-03-10 2015-09-10 Kabushiki Kaisha Toshiba Memory system and control method
US20160110296A1 (en) * 2014-10-17 2016-04-21 Sk Hynix Memory Solutions Inc. Lba blocking table for ssd controller
US20190384719A1 (en) * 2018-06-14 2019-12-19 Western Digital Technologies, Inc. Logical block addressing rangecollision crawler

Also Published As

Publication number Publication date
EP3885888A1 (en) 2021-09-29
KR20210119333A (ko) 2021-10-05
US11301370B2 (en) 2022-04-12
CN113448884B (zh) 2024-01-02
JP2021152900A (ja) 2021-09-30
US20210303457A1 (en) 2021-09-30
EP3885888B1 (en) 2024-04-17
TW202207041A (zh) 2022-02-16

Similar Documents

Publication Publication Date Title
CN107025071B (zh) 非易失性存储器装置及其垃圾收集方法
US9916253B2 (en) Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US8321639B2 (en) Command tracking for direct access block storage devices
EP2546755A2 (en) Flash controller hardware architecture for flash devices
US20200004549A1 (en) Multi-threaded instruction buffer design
US20150186068A1 (en) Command queuing using linked list queues
US8645618B2 (en) Flexible flash commands
US10372446B2 (en) Technology to dynamically modulate memory device read granularity
US10599579B2 (en) Dynamic cache partitioning in a persistent memory module
KR20150050457A (ko) 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐
CN106897026B (zh) 非易失性存储器装置及其地址分类方法
EP2546756A2 (en) Effective utilization of flash interface
KR20210035910A (ko) 비-결정적 커맨드를 지원하는 메모리 서브-시스템
KR102366512B1 (ko) 논리 블록 어드레싱 범위 충돌 크롤러
US20210103445A1 (en) Method and apparatus for preprocessing data transfer commands
CN113448884B (zh) 具有重叠范围的命令的并行重叠管理
KR20210156759A (ko) 큐 가용성 모니터링을 위한 시스템, 방법 및 장치
US11604735B1 (en) Host memory buffer (HMB) random cache access
EP4016310A1 (en) Logical to physical address indirection table in a persistent memory in a solid state drive
US20170115886A1 (en) Storage device and method of performing a write operation by the same
CN106155583B (zh) 缓存固态设备读取请求结果的系统和方法
KR20220062399A (ko) 하이브리드 dimm에서 비순차적 처리를 위한 데이터 의존도 관리
US11934700B2 (en) Fused command handling
US20120131236A1 (en) Communication between a computer and a data storage device
EP4227790B1 (en) Systems, methods, and apparatus for copy destination atomicity in devices

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