CN115048043A - 基于整合存储器区描述数据的操作 - Google Patents
基于整合存储器区描述数据的操作 Download PDFInfo
- Publication number
- CN115048043A CN115048043A CN202210216809.2A CN202210216809A CN115048043A CN 115048043 A CN115048043 A CN 115048043A CN 202210216809 A CN202210216809 A CN 202210216809A CN 115048043 A CN115048043 A CN 115048043A
- Authority
- CN
- China
- Prior art keywords
- memory
- description data
- memory region
- regions
- host
- 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.)
- Pending
Links
Images
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
-
- 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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0661—Format or protocol conversion 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/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及基于整合存储器区描述数据的操作。各种实施例使得存储器子系统能够基于整合存储器区描述数据执行读取操作,所述整合存储器区描述数据可基于由主机系统提供以用于读取操作的存储器区描述数据(例如,SGL)而产生。
Description
技术领域
本公开的实施例大体上涉及存储器装置,且更确切地说,涉及基于整合存储器区描述数据而执行的存储器操作,例如读取操作。
背景技术
一种存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。大体来说,主机系统可以利用存储器子系统将数据存储在存储器装置处且从存储器装置检索数据。
非易失性存储器高速(NVMe)为支持存储器子系统与主机系统之间的交互的存储器协议的实例。NVMe协议的当前版本支持散集列表(SGL),其为用于在主机系统与存储器子系统之间传送命令和数据的机制。SGL可有助于存储器子系统处理读取或写入请求,其中SGL可描述主机系统上的存储器区列表,存储器子系统使用所述存储器区列表结合读取请求将数据发送回主机系统(例如,经由外围组件互连高速(PCIe)接口),或存储器子系统使用所述存储器区列表结合写入请求从主机系统获得(例如,读取)数据。主机系统上的存储器区中的每一者可充当存储器子系统用以将数据发送回主机系统的缓冲区(例如,SGL缓冲区)。SGL通常包括连接缓冲区的链表,且每一缓冲区大小可不同(例如,小到32字节)。在一些情况下,主机系统在主机系统上建立大量缓冲区,其可使缓冲区围绕主机系统的本地存储器分布(例如,基于空间可用性)。这可导致存储器子系统必须结合单个基于SGL的操作频繁且重复地遍历(例如,穿行)SGL。
发明内容
一方面,本公开提供一种存储器系统,其包括:存储器装置;以及处理装置,其操作性地耦合到存储器装置、配置成执行包括以下各项的操作:从主机系统接收读取存储在存储器系统上的所请求的第一数据的第一请求,所述第一请求指定与第一请求相关联的第一存储器区描述数据,所述第一存储器区描述数据描述所请求的第一数据将发送到的主机系统的第一组个别存储器区;以及响应于第一请求:基于第一存储器区描述数据,通过识别第一组连续存储器区产生第一整合存储器区描述数据,第一组连续存储器区各自包括第一组个别存储器区中的两个或更多个循序相邻存储器区,第一整合存储器区描述数据包括:用于第一组连续存储器区中的每一连续存储器区的单个描述符;以及用于第一组个别存储器区中的每一个别存储器区的单个描述符,所述每一个别存储器区被排除在第一组连续存储器区之外;以及基于在存储器系统上产生的第一整合存储器区描述数据对存储器装置执行第一读取操作。
另一方面,本公开提供一种方法,其包括:在存储器系统处从主机系统接收读取存储在存储器系统上的所请求数据的请求,所述请求指定与请求相关联的主机存储器区描述数据,所述主机存储器区描述数据描述所请求数据将发送到的主机系统的一组个别存储器区;以及响应于请求:从主机系统存取主机存储器区描述数据;通过识别一组连续存储器区产生整合存储器区描述数据,一组连续存储器区各自包括一组个别存储器区中的两个或更多个循序相邻存储器区,整合存储器区描述数据包括:用于一组连续存储器区中的每一连续存储器区的单个描述符;以及用于一组个别存储器区中的每一个别存储器区的单个描述符,所述每一个别存储器区被排除在一组连续存储器区之外;以及将整合存储器区描述数据存储在存储器系统的缓冲区上。
又一方面,本公开提供至少一种包括指令的非暂时性机器可读存储媒体,所述指令在由存储器系统的处理装置执行时使处理装置执行包括以下各项的操作:从主机系统接收读取存储在存储器系统上的所请求数据的请求,所述请求指定与请求相关联的主机存储器区描述数据,所述主机存储器区描述数据描述所请求数据将发送到的主机系统的一组个别存储器区;以及响应于请求:基于主机存储器区描述数据,通过识别一组连续存储器区产生整合存储器区描述数据,一组连续存储器区各自包括一组个别存储器区中的两个或更多个循序相邻存储器区,整合存储器区描述数据包括:用于一组连续存储器区中的每一连续存储器区的单个描述符;以及用于一组个别存储器区中的每一个别存储器区的单个描述符,所述每一个别存储器区被排除在一组连续存储器区之外;以及将整合存储器区描述数据存储在存储器系统的缓冲区上。
附图说明
根据下文给出的实施方式且根据本公开的各种实施例的附图将更加充分地理解本公开。然而,图式不应被视为将本公开限于特定实施例,而是仅用于阐释和理解。
图1为根据本公开的一些实施例的示出包含存储器子系统的实例计算系统的框图。
图2和3为根据本公开的一些实施例的用于基于描述主机系统上的一或多个存储器区的整合数据执行存储器操作的实例方法的流程图。
图4和5为根据本公开的一些实施例的示出产生整合存储器区描述数据的实例的图。
图6提供示出在一些实施例的上下文中的计算环境的组件之间的交互的交互图,其中执行用于基于描述如本文中所描述的主机系统上的一或多个存储器区的整合数据执行存储器读取操作的方法。
图7为本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的各方面涉及基于整合存储器区数据而执行的存储器操作。确切地说,各种实施例使得存储器子系统能够基于描述主机系统上的一或多个存储器区(例如,包括存储器区的整合列表的数据)的整合数据执行存储器读取操作,其中一或多个存储器区由存储器子系统用作用于将读取数据发送到主机系统的一或多个缓冲区。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。大体来说,主机系统可以利用包含一或多个组件的存储器子系统,所述一或多个组件例如存储数据的存储器装置。主机系统可将存取请求发送到存储器子系统,以便在存储器子系统处存储数据且从存储器子系统读取数据。
主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便将数据存储在存储器子系统处的存储器装置上,从存储器子系统上的存储器装置读取数据,或相对于存储器子系统上的存储器装置写入/读取构造(例如,提交和完成队列)。如由主机请求指定的待读取或写入的数据在下文中被称作“主机数据”。主机请求可以包含主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、名称空间),其为主机系统与主机数据相关联的位置。逻辑地址信息(例如,LBA、名称空间)可以是主机数据的元数据的部分。元数据还可包含错误处理数据(例如,错误校正码(ECC)码字、奇偶检验码)、数据版本(例如,用于区分所写入数据的时期)、有效位图(哪些LBA或逻辑传送单元含有有效数据)等。
如本文所用,存储器装置可以是非易失性存储器装置。
目前,存储器子系统可使用常规技术通过从主机系统的一或多个存储器区(例如,在本地存储器上)推送或拉取数据来促进数据传送。举例来说,如本文中所描述,非易失性存储器高速(NVMe)为支持存储器子系统与主机系统之间的交互的存储器协议的实例。NVMe协议的当前版本支持散集列表(SGL),其为用于在主机系统与存储器子系统之间传送命令和数据的机制。主机系统可使用散集列表(SGL)来促进存储器子系统执行读取请求,其中SGL可描述主机系统上的存储器区列表,存储器子系统使用所述存储器区列表将所请求数据发送(例如,传送)回主机系统(例如,经由外围组件互连高速(PCIe)接口)。主机系统上的存储器区中的每一者可充当存储器子系统用以将数据发送回主机系统的缓冲区(例如,SGL缓冲区)。SGL通常包括连接缓冲区的链表,且每一缓冲区大小可不同(例如,根据NVMe标准,小到1字节)。在一些情况下,主机系统在主机系统上建立大量缓冲区,其可使缓冲区围绕主机系统的本地存储器分布(例如,基于空间可用性)。这可导致存储器子系统必须结合单个基于SGL的操作频繁且重复地遍历(例如,穿行)SGL。
一般来说,由主机系统产生的每一个别存储器请求(例如,读取或写入请求)可具有存储在主机系统上的相应SGL,存储器系统可响应于个别请求而存取及使用所述相应SGL。另外,由SGL描述的存储器区中的每一者可不同地(例如,可变地)设定大小且位于主机系统的本地存储器上的不同位置(例如,逻辑或物理位置)。给定SGL通常包括各自描述主机系统上的不同存储器区的描述符列表,且给定SGL的大小可基于其相关联请求而变化。举例来说,主机系统可结合由主机系统发送到存储器系统的给定读取请求(例如,基于SGL的读取请求)而产生或建立主机系统的本地存储器上的大量小存储器区。由常规存储器系统在给定时间处置的SGL的大小和/或数目可使得存储器系统同时将SGL的所有部分存储在存储器系统上(例如,至少不增加存储器系统上存储SGL所用的存储器空间)是不可能或不可行的。因此,当结合给定SGL执行存储器操作时,常规存储器系统通常多次从主机系统存取(例如,读取和穿行或遍历)相关SGL(例如,当缓冲空间准许时)。常规存储器系统对相关SGL(和用于其它存储器操作的其它SGL)的重复存取可在执行相关读取操作时产生常规存储器系统的大量开销,此继而可降低常规存储器系统的操作效率。
本公开的各方面通过基于整合存储器区描述数据对存储器子系统执行读取或写入操作来解决以上及其它不足,所述整合存储器区描述数据可基于由主机系统提供的用于读取或写入操作的存储器区描述数据(例如,SGL)而产生。举例来说,当主机系统从存储器子系统发送读取数据的请求(例如,命令)时,主机系统可:在主机系统上创建或建立一组存储器区(例如,缓冲区)以促进响应于请求而将读取数据从存储器子系统发送到主机系统;以及产生描述创建/建立在主机系统上的一组存储器区的主机存储器区描述数据(例如,针对请求的SGL,其中SGL存储在主机系统上)。响应于请求,各种实施例从主机系统存取主机存储器区描述数据(例如,SGL)。主机存储器区描述数据可与存储在主机系统上的请求分离,在从主机系统存取时在存储器子系统上缓冲,且由存储器子系统经由主机系统与存储器子系统之间的数据总线(例如,PCIe总线)存取。对于各种实施例,主机存储器区描述数据的数据大小大于存储器子系统上用以结合读取请求存储此类数据的缓冲区。基于主机存储器区描述数据,各种实施例识别一组存储器区中的一或多个连续存储器区,其中每一连续存储器区由一组存储器区中循序相邻定位在主机系统(例如,其本地存储器)上的两个或更多个存储器区形成。各种实施例产生(且在存储器子系统上存储)整合存储器区描述数据,所述整合存储器区描述数据包括用于由主机存储器区描述数据描述的存储器区列表中识别的每一连续存储器区的单个存储器区描述符,且包括用于一组存储器区中不为所识别的连续存储器区中的一者的部分的每一存储器区的单个存储器描述符。以此方式,整合存储器区描述数据可表示由主机系统提供的主机存储器区描述数据的简化版本。
虽然本文中相对于来自主机系统或装置的读取请求描述各种实施例,但各种实施例以类似方式支持写入请求。通常,对于写入请求,存储器子系统可按顺序从主机系统检索数据,因此存储器子系统通常不必如对于读取请求一般频繁地遍历(例如,穿行)主机存储器区描述数据(例如,SGL)。尽管如此,如本文中所描述的整合存储器区描述数据可对存储器子系统执行读取和写入请求两者有利,这是因为整合存储器区描述数据可减少存储器子系统上所使用的存储且可有助于数据总线优化(例如,更好地使用经由PCIe总线发送的事务层包(TLP))。
与由主机系统提供的主机存储器区描述数据相比,所产生的整合存储器区描述数据在数据大小上可更小,这可使得能够比主机存储器区描述数据更快地遍历整合存储器区描述数据。另外,当主机存储器区描述数据无法完全存储在存储器子系统上时,较小的数据大小可准许整合存储器区描述数据完全存储在存储器子系统(例如,其指定的缓冲区)上,由此避免存储器子系统重复地存取(例如,读取和遍历)主机存储器区描述数据(例如,经由主机系统与存储器子系统之间的PCIe数据总线)的需要。另外,通过识别连续存储器区,实施例可实现提高主机系统与存储器子系统之间的数据总线效率的较大数据传送。
如本文所用,存储器区可包括主机系统的存储器装置(例如,本地存储器)上的存储器区空间。存储器区可用作主机系统上用于从存储器子系统接收所请求的读取数据的缓冲空间,或主机系统上用于将待写入的数据提供到存储器子系统的缓冲空间。如本文所用,存储器区描述数据可结合从主机系统到存储器子系统的请求描述主机系统上的一或多个存储器区(例如,作为列表)。举例来说,存储器区描述数据可包括用于每一存储器区的条目或描述符。每一条目/描述符可通过对应于主机系统的存储器(例如,本地存储器)上的存储器地址空间(针对个别存储器区)的存储器地址和通过存储器地址空间的存储器大小(例如,大小值)来限定单独存储器区。由存储器区描述数据描述的个别存储器区的大小可变化。存储器区描述数据可实施为存储器区描述符的链表。存储器区描述数据的实例可包含(不限于)与由主机系统发送到存储器子系统的请求相关联的SGL。
本文公开基于描述主机系统上的一或多个存储器区的整合数据执行存储器操作的一些实例,如本文中所描述。
图1示出根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或其组合。
存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、安全数字(SD)卡、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储器(UFS)驱动器和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1示出耦合到一个存储器子系统110的主机系统120的一个实例。如本文所用,“耦合到”或“与...耦合”一般是指组件之间的连接,所述连接可以是间接通信连接或直接通信连接(例如,无中间组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等。
主机系统120可包含处理器芯片组和由处理器芯片组执行的软件栈。处理器芯片组可以包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,NVDIMM控制器)以及存储协议控制器(例如,外围组件互连高速(PCIe)控制器、串行高级技术附件(SATA)控制器)。主机系统120使用存储器子系统110例如以将数据写入到存储器子系统110且从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于SATA接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、小型计算机系统接口(SCSI)、双数据速率(DDR)存储器总线、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR)或任何其它接口。物理主机接口可用以在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。图1将存储器子系统110示出为实例。一般来说,主机系统120可经由同一通信连接、多个独立通信连接和/或通信连接的组合来存取多个存储器子系统。
存储器装置130、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以但不限于是随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器和就地写入存储器,如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变执行位存储。另外,与许多基于闪存的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3DNAND)。
每一存储器装置130可包含一或多个存储器单元阵列。一种类型的存储器单元,例如SLC每单元可存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、TLC、四层级单元(QLC)和五层级单元(PLC)每单元可存储多个位。在一些实施例中,每一存储器装置130可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或其任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组为页,所述页可指用以存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可分组以形成块。
虽然描述了例如NAND型快闪存储器(例如,2D NAND、3D NAND)和非易失性存储器单元的3D交叉点阵列的非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器和电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处执行的读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器,或其组合。硬件可包含具有专用(即,硬编码)逻辑的数字电路系统以执行本文所描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器115可包含配置成执行存储于本地存储器119中的指令的处理器(处理装置)117。在所示出的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作,包含处置存储器子系统110与主机系统120之间的通信的各种过程、操作、逻辑流程和例程。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已示出为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可替代地依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将命令或操作转换成指令或适当命令以实现对存储器装置130和/或存储器装置140的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作和与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名称空间)与物理存储器地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统120接收到的命令转换成命令指令以存取存储器装置130和/或存储器装置140,且将与存储器装置130和/或存储器装置140相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址,且对地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,所述本地媒体控制器结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130为受管理存储器装置,其为与本地控制器(例如,本地媒体控制器135)组合以用于同一存储器装置封装内的媒体管理的原始存储器装置。受管理存储器装置的实例为受管理NAND(MNAND)装置。
存储器子系统控制器115包含存储器区描述数据整合器113,所述存储器区描述数据整合器实现或促进本文中所描述的关于存储器子系统110的各种方法。举例来说,存储器区描述数据整合器113可使存储器子系统控制器115基于由主机系统120提供的主机存储器区描述数据结合从存储器子系统110读取数据或将数据写入所述存储器子系统的请求在存储器子系统110上产生整合存储器区描述数据。另外,存储器区描述数据整合器113可使存储器子系统控制器115基于所产生的整合存储器区描述数据响应于请求而执行读取操作或写入操作。
对于一些实施例,主机系统120将请求(例如,命令)发送到存储器子系统110以从存储器子系统110上对应于存储器地址(例如,逻辑块地址)的存储器位置读取所请求数据,或将数据写入存储器子系统110上对应于存储器地址的存储器位置。结合请求,主机系统120可在主机系统120上,例如在主机系统120的本地存储器上创建或建立一组存储器区(例如,缓冲区),以有助于响应于请求将所请求的数据从存储器子系统110发送(例如,传送)到主机系统120。另外,结合请求,主机系统120可产生描述创建/建立在主机系统120上的一组存储器区的主机存储器区描述数据(例如,用于请求的SGL)。对于各种实施例,产生主机存储器区描述数据并将其存储在主机系统120的存储器(例如,本地存储器)上。在接收到请求之后,存储器子系统110可按由存储器子系统110执行请求所需直接从主机系统120(例如,经由数据总线,例如PCIe总线)存取主机存储器区描述数据。一般来说,主机存储器区描述数据的数据大小可使存储器子系统110一次性在存储器子系统110的缓冲区上本地存储所有主机存储器区描述数据不可行,尤其是当存储器子系统110同时处置各自具有相关联主机存储器区描述数据的多个请求时。
响应于请求,存储器区描述数据整合器113可使存储器子系统控制器115从主机系统120存取主机存储器区描述数据(例如,SGL)。在主机存储器区描述数据由存储器子系统110从主机系统120存取时,主机存储器区描述数据可与由存储器子系统110接收到的、存储在主机系统120的主机侧存储器(例如,本地存储器)上,且在存储器子系统110上缓冲的请求分离。主机存储器区描述数据可由存储器子系统110经由主机系统120与存储器子系统110之间的数据总线(例如,PCIe总线)存取。
存储器区描述数据整合器113可使存储器子系统控制器115基于由存储器子系统110从主机系统120存取的主机存储器区描述数据产生整合存储器区描述数据。如本文中所描述,主机存储器区描述数据的数据大小可大于存储器子系统110上用以将此类数据存储在存储器子系统110上的缓冲区。确切地说,存储器区描述数据整合器113可使存储器子系统控制器115识别由主机存储器区描述数据描述的一组存储器区中的一或多个连续存储器区,其中每一连续存储器区包括一组存储器区中循序相邻定位在主机系统120(例如,其本地存储器)上的两个或更多个存储器区。对于一些实施例,整合存储器区描述数据包括由主机存储器区描述数据描述的存储器区列表中识别的每一连续存储器区的单个描述符(例如,存储器区描述符),且包括用于一组存储器区中不为所识别的连续存储器区中的一者的部分的每一存储器区的单个存储器描述符。以此方式,整合存储器区描述数据可表示由主机系统提供的主机存储器区描述数据的简化版本。
根据各种实施例,所产生的整合存储器区描述数据的数据大小小于主机存储器区描述数据,且可具有准许其完全存储在存储器子系统110的缓冲区上的数据大小。通过使整合存储器区描述数据完全存储在存储器子系统110上,存储器子系统110可在存储器子系统110将所请求数据的部分发送到主机系统120上由整合存储器区描述数据描述的存储器区时在本地存取整合存储器区描述数据。这可使得存储器子系统控制器115能够比主机存储器区描述数据更快地遍历整合存储器区描述数据。在对整合存储器区描述数据进行本地存取的情况下,存储器子系统110可在存储器子系统110将所请求的数据的部分发送到主机系统120上的存储器区时避免从主机系统120重复存取(和缓冲)主机存储器区描述数据的开销。另外,通过识别连续存储器区,整合存储器区描述数据可使得存储器子系统控制器115能够执行提高主机系统120与存储器子系统110之间的数据总线效率的较大数据发送(例如,更好地使用经由PCIe总线发送的事务层包(TLP))。
对于一些实施例,存储器区描述数据整合器113使存储器子系统控制器115基于所产生的整合存储器区描述数据响应于请求而执行读取操作或写入操作。确切地说,存储器区描述数据整合器113使存储器子系统控制器115向存储器装置130、140中的一或多者发送用于一组逻辑块地址的一组读取命令,其中所请求的数据存储在存储器子系统110上,或用于一组逻辑块地址的一组写入命令,其中数据(例如,由主机系统120提供)将存储在存储器子系统110上。关于读取请求,存储器子系统控制器115可响应于与一组逻辑地址中的选定逻辑块地址相关联的(一组读取命令中的)读取命令中的一者而从存储器装置130、140中的一者接收选定数据。响应于接收到选定数据,存储器子系统控制器115可确定主机系统120中整合存储器区描述数据中描述的一或多个选定存储器区将从存储器子系统110接收选定数据。关于写入请求,存储器子系统控制器115可确定主机系统120中整合存储器区描述数据中描述的一或多个选定存储器区将经由一组写入命令提供待写入到存储器装置130、140中的一或多者的选定数据。
确定主机系统120的一或多个选定存储器区可包括基于整合存储器区描述数据确定(例如,计算)对应于一或多个选定存储器区的主机存储器地址的一或多个范围。整合存储器区可存储在例如存储器子系统110的缓冲区或本地存储器,例如存储器子系统控制器115的本地存储器119上。整合存储器区描述数据可包括描述每一存储器区的起始地址和存储器大小的一组存储器区描述符,存储器子系统控制器115可使用所述存储器区描述符鉴于与从存储器装置130、140中的一者接收到的选定数据相关联的选定逻辑块地址而计算一或多个主机存储器地址。具体来说,整合存储器区描述数据可由逻辑块地址索引,所述逻辑块地址可有助于确定主机存储器地址。最终,存储器子系统控制器115可将选定数据发送到本地存储器上对应于主机存储器地址的位置。本地存储器上的位置可对应于由整合存储器区描述数据描述的存储器区内的位置。存储器子系统控制器115可响应于每一读取命令发送到一或多个存储器装置130、140而接收选定数据(表示所请求数据的一部分),且对于所接收到的那些选定数据中的每一者,存储器子系统控制器115可确定主机存储器地址且将选定数据发送到对应于所确定的主机存储器地址的位置(在主机系统120的本地存储器上)。选定数据可例如使用包括选定数据的单个事务层包(TLP)发送到本地存储器上的位置,其中单个TLP可根据外围组件互连高速(PCIe)标准。
图2和3为根据本公开的一些实施例的用于基于描述主机系统上的一或多个存储器区的整合数据执行存储器操作的实例方法的流程图。方法200、300可由可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑执行。在一些实施例中,方法200、300中的至少一者由图1的存储器子系统控制器115基于存储器区描述数据整合器113执行。另外或替代地,对于一些实施例,方法200、300中的至少一者至少部分地由图1的存储器装置130的本地媒体控制器135执行。尽管以特定顺序或次序展示,但除非另外规定,否则可修改过程的次序。因此,示出的实施例应仅作为实例理解,且示出的过程可以不同次序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非每一实施例中都需要所有过程。其它过程流程是可能的。
现参看图2的方法200,在操作202处,处理装置(例如,存储器子系统控制器115的处理器117)在存储器系统(例如,130)处从主机系统(例如,120)接收读取存储在存储器系统(例如,110)上的所请求数据或将数据写入存储器系统的请求。请求可以是使用存储器区的特定类型的读取或写入请求,例如SGL读取命令/请求。对于一些实施例,来自主机系统的请求指定与请求相关联的主机存储器区描述数据。举例来说,请求可指定(例如,经由指向存储器位置的指针)主机系统上存储主机存储器区描述数据或可从其存取所述主机存储器区描述数据之处。对于一些实施例,对存储器系统(例如,110)的每一请求可与其自身的主机存储器区描述数据相关联。根据各种实施例,主机存储器区描述数据描述将由存储器系统使用(例如,作为缓冲区)以将所请求数据发送到主机系统的主机系统的本地存储器的一组个别存储器区。以此方式,存储器区中的每一者可用作主机系统(例如,120)上用以从存储器系统(例如,110)接收所请求数据的主机侧缓冲区。主机存储器区描述数据可包括存储器区描述符的链表,其中每一存储器区描述符包括对应于主机系统的本地存储器上的存储器地址空间的存储器地址(例如,指向存储器地址的指针)。如本文中所描述,主机存储器区描述数据可包括与请求相关联的SGL,其中SGL根据非易失性存储器高速(NVMe)协议。主机存储器区描述数据可由主机系统(例如,120)结合请求产生,且可将所产生的主机存储器区描述数据存储在主机系统本地的存储器(例如,主机系统120的本地存储器)上,其中存储器可由存储器系统(例如,110)存取。
响应于请求,在操作204处,处理装置(例如,117)基于由主机系统(例如,120)提供到存储器系统(例如,110)的主机存储器区描述数据产生整合存储器区描述数据。对于一些实施例,通过(在一组个别存储器区中)识别一组连续存储器区产生整合存储器区描述数据,其中每一连续存储器区包括由主机存储器区描述数据描述的一组个别存储器区中的两个或更多个循序相邻存储器区。对于一些实施例,将一组个别存储器区中的个别连续存储器区识别为从主机系统存取的主机存储器区描述数据。每一连续存储器区可表示相邻存储器区的最大序列。两个或更多个循序相邻存储器区可视为连续存储器区。对于各种实施例,整合存储器区描述数据包括用于一组连续存储器区中的每一连续存储器区的单个描述符,用于一组个别存储器区中的每一个别存储器区的单个描述符,所述每一个别存储器区被排除在一组连续存储器区之外(例如,不为其中任何连续存储器区的部分)。对于一些实施例,新描述符产生于所识别的一组连续存储器区中的每一连续存储器区的整合存储器区描述数据中,而整合存储器区描述数据中的其它单个描述符中的每一者(对于不为任何连续存储器区的部分的其它存储器区)可从主机存储器区描述数据复制。对于一些实施例,整合存储器区描述数据由逻辑块地址索引,所述逻辑块地址可有助于确定主机存储器地址。整合存储器区描述数据中描述的每一存储器区可由对应于(主机系统的本地存储器上)个别存储器地址空间的起始存储器地址和个别存储器地址空间的存储器大小限定。在整合存储器区描述数据中,每一起始存储器地址可有效地指示先前存储器区与起始存储器地址之间的中断。在已在存储器系统(例如,110)上产生整合存储器区描述数据之后,处理装置可依赖整合存储器区描述数据(代替主机存储器区描述数据)处理来自主机系统的请求,由此在所请求数据的部分发送回主机系统(例如,120)时避免处理装置重复存取主机存储器区描述数据的需要。
在操作206处,处理装置(例如,117)基于在存储器系统(例如,110)上产生的整合存储器区描述数据而对存储器系统(例如,110)的一或多个存储器装置(例如,130、140)执行存储器操作,例如读取操作或写入操作。对于一些实施例,基于整合存储器区描述数据对一或多个存储器装置(例如,130、140)执行读取操作包括:向存储器装置发送(例如,发出)用于一组逻辑块地址(例如,十个LBA)的一组读取命令(例如,十个读取命令),其中所请求数据存储在存储器系统(例如,110)上;以及响应于用于一组逻辑地址中的选定逻辑块地址的选定读取命令(例如,一组读取命令中)从存储器装置接收选定数据(例如,来自选定LBA的数据)。
一组读取命令基于通过操作202从主机系统(例如,120)接收到的请求和相关联存储器地址而产生。一组读取命令可包含到存储器系统的两个或更多个存储器装置的一或多个读取命令,且一组读取命令可经由一或多个存储器信道发送到一或多个存储器装置。一或多个存储器装置(例如,130、140)可提供所发送的读取命令中的每一者的响应或结果。可从一或多个存储器装置随机且无序地接收响应/结果。响应于一组读取命令,处理装置可从一或多个存储器装置接收对应一组响应,其中每一响应包括所请求数据的选定数据部分。响应中的每一者可指示所请求数据的选定部分所对应的逻辑块地址。对应于逻辑块地址的每一逻辑块可包括例如512字节(512B)或528字节(528B)的大小(例如,具有扩展保护信息或元数据)。
响应于从存储器装置(例如,130、140)中的一者接收到选定数据,处理装置可确定主机系统120中整合存储器区描述数据中描述的一或多个选定存储器区从存储器子系统110接收选定数据。举例来说,处理装置可确定从存储器装置中的一者接收到的选定数据(例如,LBA)将跨越两个或更多个存储器区发送和保存(例如,传送),其中存储器区中的一者可接收选定数据的部分(例如,起始部分、中间部分或结束部分)。因此,基于整合存储器区描述数据,存储器系统可确定(例如,计算)将接收选定数据的对应于一或多个选定存储器区的主机存储器地址的一或多个范围。主机存储器地址可对应于属于在主机系统上创建/建立且最初由主机存储器区描述数据描述的一组个别存储器区中的一者内的存储器位置(在主机系统的本地存储器上)。最终,处理装置可将选定数据发送到本地存储器上对应于主机存储器地址的范围的一或多个存储器位置。选定数据可使用包括选定数据的单个TLP发送到本地存储器上的位置,其中单个TLP根据PCIe标准。为了实现存储器系统与主机系统之间的数据总线的更有效使用,对于一些实施例,单个TLP包括响应于另一读取命令发送到一或多个存储器装置而从一或多个存储器装置接收到的选定数据和额外数据,所述另一读取命令与响应于由存储器系统从主机系统接收到的第二请求而对一或多个存储器装置执行的第二读取操作相关联。选定数据和额外数据可去往主机系统上的循序相邻存储器区。以此方式,各种实施例可优化从存储器系统到主机系统的PCIe传送,且每当可能时可最大化TLP的使用。
对于一些实施例,基于整合存储器区描述数据对一或多个存储器装置(例如,130、140)执行写入操作包括:确定主机系统(例如,120)中整合存储器区描述数据中描述的一或多个选定存储器区,其中一或多个选定存储器区正在存储待写入到存储器系统(例如,110)的一或多个存储器装置(例如,130、140)的数据;从一或多个选定存储器区检索数据;以及根据来自主机系统(例如,120)的请求将检索到的数据写入一或多个存储器装置。举例来说,处理装置可通过以下操作将检索到的数据写入一或多个存储器装置:将用于一组逻辑块地址(例如,两个LBA)的一组写入命令(例如,两个写入命令)发送(例如,发出)到存储器装置中的一或多者,所述一组逻辑块地址对应于检索到的数据的一部分待写入的物理位置。
现参看图3的方法300,在操作302处,处理装置(例如,存储器子系统控制器115的处理器117)在存储器系统(例如,130)处从主机系统(例如,120)接收读取存储在存储器系统(例如,110)上的所请求数据或将数据写入存储器系统的请求。对于一些实施例,操作302类似于关于图2描述的方法200的操作202。
响应于在操作302处接收到请求,在操作304处,处理装置(例如,117)从主机系统(例如,120)存取主机存储器区描述数据。对于各种实施例,处理装置(例如,117)经由数据总线(例如,PCIe总线)从主机系统(例如,120)存取主机存储器区描述数据,这使得处理装置能够按需要拉取、读取和遍历主机存储器区描述数据。根据一些实施例,处理装置(例如,117)仅存取主机存储器区描述数据一次以促进操作306。
在操作306处,处理装置(例如,117)基于由主机系统(例如,120)提供到存储器系统(例如,110)的主机存储器区描述数据产生整合存储器区描述数据。对于一些实施例,操作306类似于关于图2描述的方法200的操作204。当通过操作306产生整合存储器区描述数据时,处理装置可在操作308处将整合存储器区描述数据存储在存储器系统(例如,110)的缓冲区(例如,119)上。
在操作310处,处理装置(例如,117)基于在存储器系统(例如,110)上产生的整合存储器区描述数据而对存储器系统(例如,110)的一或多个存储器装置(例如,130、140)执行存储器操作,例如读取操作或写入操作。对于一些实施例,操作310类似于关于图2描述的方法200的操作206。
图4和5为根据本公开的一些实施例的示出产生整合存储器区描述数据的实例的图。尽管图4和5相对于执行读取操作进行描述,但各种实施例支持以类似方式使用整合存储器区描述数据执行写入操作。图4示出由主机系统结合从存储器系统读取数据的请求产生的实例主机存储器区描述数据402,其中读取数据的请求可包括存储器系统的多个LBA(八个LBA,1到8),且其中每一逻辑块具有512字节(512B)的大小。主机存储器区描述数据402可表示由主机系统产生的SGL,其中每一存储器区(例如,SGL缓冲区)具有SGL中的单独条目或描述符。如所展示,主机存储器区描述数据402描述八个存储器区,且通过个别存储器区的起始地址(A)及个别存储器区的存储器大小(LEN)来描述每一个别存储器区。确切地说,主机存储器区描述数据402描述以下个别存储器区列表:第一存储器区(A=0,LEN=32B);第二存储器区(A=32,LEN=128B);第三存储器区(A=100,LEN=96B);第四存储器区(A=196,LEN=256B);第五存储器区(A=500,LEN=512B);第六存储器区(A=1012,LEN=2048B);第七存储器区(A=2036,LEN=1000B);以及第八存储器区(A=3036,LEN=24B)。
主机存储器区描述数据404说明根据一些实施例的在已识别一或多个连续存储器区之后的主机存储器区描述数据402。确切地说,在由主机存储器区描述数据402描述的存储器区列表中识别以下连续存储器区:第一连续存储器区,其包括第一存储器区(A=0,LEN=32B)和第二存储器区(A=32,LEN=128B);第二连续存储器区,其包括第三存储器区(A=100,LEN=96B)和第四存储器区(A=196,LEN=256B);以及第三连续存储器区,其包括第五存储器区(A=500,LEN=512B)、第六存储器区(A=1012,LEN=2048B)和第七存储器区(A=2036,LEN=1000B)。
基于主机存储器区描述数据404和一或多个所识别的连续存储器区,存储器系统可产生整合存储器区描述数据406。确切地说,存储器系统可产生整合存储器区描述数据406,使得对于第一、第二和第三连续存储器区中的每一者存在单个条目/描述符,且对于不为所识别连续存储器区中的任一者的部分的其余存储器区(第八存储器区)存在单个条目/描述符。如所展示,整合存储器区描述数据406包括用于以下各者的单个条目/描述符:第一连续存储器区,其起始地址为0(A=0)且存储器大小为160B(LEN=160B);第二连续存储器区,其起始地址为100(A=100)且存储器大小为352B(LEN=352B);第三连续存储器区,其起始地址为500(A=500)且存储器大小为4072B(LEN=4072B);以及第八存储器区,其起始地址仍为3036(A=3036)且存储器大小为24B(LEN=24B),其与主机存储器区描述数据402所描述的相同。
如本文中所描述,基于整合存储器区描述数据406,存储器系统可确定(例如,计算)一或多个选定存储器区,以用于响应于读取数据的请求而将LBA(从存储器装置中的一者接收/从其返回)发送(例如,传送)到主机系统。举例来说,响应于请求,可将用于八个不同LBA的八个读取命令发送到存储器系统的一或多个存储器装置以检索由主机系统请求的读取数据,其中每一逻辑块可具有512B的大小。如本文中所描述,可不按次序(例如,随机地)从一或多个存储器装置接收响应/结果。在一或多个存储器装置返回八个LBA(LBA8)的情况下,存储器系统可确定主机系统的将接收LBA 8的一或多个选定存储器区。如本文所描述,整合存储器区描述数据406可由一或多个存储器装置返回的LBA的序数索引。举例来说,基于整合存储器区描述数据406,存储器系统可如下确定LBA8的起始主机存储器地址:
500+(8-1)×512B=4084,
其中8表示第八LBA(LBA 8)。另外,基于整合存储器区描述数据406,存储器系统可确定:4084的主机存储器地址属于第三连续存储器区,所述第三连续存储器区的起始存储器地址为500且结束存储器地址为4572,且LBA 8将跨越第三连续存储器区(在4084的主机存储器地址处开始且在4572的主机存储器地址处结束)和第八存储器区(在主机存储器地址4572处开始且在4596的主机存储器地址处结束)发送和保存(例如,传送)。结果,存储器系统可在主机系统上将LBA 8的488B从存储器系统发送(例如,传送或移动)到存储器空间,所述488B在对应于主机存储器地址4084的存储器位置处开始且在对应于主机存储器地址4572的存储器位置处结束。另外,存储器系统将在主机系统上将LBA 8的其余24B从存储器系统发送(例如,传送或移动)到存储器空间,所述24B在对应于主机存储器地址4572的存储器位置处开始且在对应于主机存储器地址4596的存储器位置处结束。
继续此实例,在一或多个存储器装置返回第一LBA(LBA 1)的情况下,存储器系统可确定主机系统的第一连续存储器区(在0的主机存储器地址处开始且在512的主机存储器地址处结束)将接收LBA 1。确切地说,基于整合存储器区描述数据406,存储器系统可如下确定LBA 1的起始主机存储器地址:
500+(1-1)×512B=0,
其中1表示第一LBA(LBA 1)。因此,存储器系统可在主机系统上将LBA 1的512B从存储器系统发送(例如,传送或移动)到存储器空间,所述512B在对应于主机存储器地址0的存储器位置处开始且在对应于主机存储器地址512的存储器位置处结束。如所展示,LBA 1的发送不跨越到另一存储器区中(即,LBA 1在第一连续存储器区内)。
图5示出由主机系统结合从存储器系统读取数据的请求产生的实例主机存储器区描述数据502,其中读取数据的请求可包括存储器系统的多个LBA(三个LBA,1-3),且其中每一逻辑块具有528字节(528B)的大小。如同图4的主机存储器区描述数据402,主机存储器区描述数据502可表示由主机系统产生的SGL,其中每一存储器区(例如,SGL缓冲区)具有SGL中的单独条目或描述符。如所展示,主机存储器区描述数据502描述以下个别存储器区列表:第一存储器区(A=5000,LEN=512B);第二存储器区(A=5512,LEN=16B);第三存储器区(A=6000,LEN=512B);第四存储器区(A=6512,LEN=16B);第五存储器区(A=7000,LEN=512B);第六存储器区(A=7512,LEN=512B)。
主机存储器区描述数据504(说明根据一些实施例的在已识别一或多个连续存储器区之后的主机存储器区描述数据502)识别以下连续存储器区:第一连续存储器区,其包括第一存储器区(A=5000,LEN=512B)和第二存储器区(A=5512,LEN=16B);第二连续存储器区,其包括第三存储器区(A=6000,LEN=512B)和第四存储器区(A=6512,LEN=16B);以及第三连续存储器区,其包括第五存储器区(A=7000,LEN=512B)和第六存储器区(A=7512,LEN=512B)。
基于主机存储器区描述数据504和一或多个所识别的连续存储器区,存储器系统可产生整合存储器区描述数据506。确切地说,存储器系统可产生整合存储器区描述数据506,使得存在用于第一、第二和第三连续存储器区中的每一者的单个条目/描述符。如所展示,整合存储器区描述数据506包括用于以下各者的单个条目/描述符:第一连续存储器区,其起始地址为5000(A=5000)且存储器大小为528B(LEN=528B);第二连续存储器区,其起始地址为6000(A=6000)且存储器大小为528B(LEN=528B);以及第三连续存储器区,其起始地址为7000(A=7000)且存储器大小为528B(LEN=528B)。
图6提供示出在一些实施例的上下文中的计算环境的组件之间的交互的交互图,其中执行用于基于描述如本文中所描述的主机系统上的一或多个存储器区的整合数据执行存储器读取操作的方法。尽管图6示出根据各种实施例执行存储器读取,但一些实施例支持以类似方式基于整合数据(描述主机系统上的一或多个存储器区)执行存储器写入。方法的操作可由可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑执行。在一些实施例中,方法由主机系统(例如,120)、存储器子系统控制器(例如,115)、存储器装置(例如,130或140)或其某一组合执行。尽管以特定顺序或次序展示操作,但除非另外规定,否则可修改过程的次序。因此,示出的实施例应仅作为实例理解,且示出的过程可以不同次序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非每一实施例中都需要所有过程。在图6所示的实例的上下文中,主机系统可以包含主机系统120,存储器子系统控制器可以包含存储器子系统控制器115,且存储器装置可以包含存储器装置140。
如图6所示,在操作602处,存储器子系统控制器115发送从存储器子系统110读取所请求数据的请求,其中请求指定与请求相关联的主机存储器区描述数据,其中主机存储器区描述数据描述待用于将所请求数据发送(例如,传送)到主机系统120的主机系统120的本地存储器的一组个别存储器区。在操作610处,存储器子系统控制器115从主机系统接收请求,且作为响应,存储器子系统控制器115在操作612处(例如,经由PCIe总线)从主机系统120存取主机存储器区描述数据。在操作604处,主机系统120提供存储器子系统110对存储在主机系统120上的主机存储器区描述数据的存取权。
基于所存取的主机存储器区描述数据,在操作614处,存储器子系统控制器115通过识别一组连续存储器区产生整合存储器区描述数据,所述一组连续存储器区各自包括一组个别存储器区中的两个或更多个循序相邻存储器区(由所存取的主机存储器区描述数据描述)。在操作616处,存储器子系统控制器115基于由存储器子系统控制器115产生的整合存储器区描述数据对存储器装置140执行读取操作。在操作630处,存储器装置140促进存储器子系统控制器115执行读取操作,其中存储器装置140可执行由存储器子系统控制器115结合读取操作发布到存储器装置140的一或多个读取命令。另外,在操作606处,主机系统120提供对主机系统120上的一或多个存储器区的存取权,以促进所请求数据(通过存储器子系统控制器115)从存储器子系统110接收到主机系统120。
图7示出呈计算机系统700的形式的实例机器,在其内可执行一组指令以使机器执行本文所论述的方法中的任何一或多个。在一些实施例中,计算机系统700可与主机系统(例如,图1的主机系统120)对应,所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行本文中所描述的操作。在替代性实施例中,机器可连接(例如,联网)到局域网(LAN)、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定待由机器采取的动作的一组指令的任何机器。此外,虽然示出了单个机器,但还应认为术语“机器”包含单独地或共同地执行一组(或多组)指令以执行本文所论述的方法中的任何一或多种的机器的任何集合。
实例计算机系统700包含经由总线730彼此通信的处理装置702、主存储器704(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器706(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储装置718。
处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置702可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实施其它指令集的处理器或实施指令集的组合的处理器。处理装置702还可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置702配置成执行指令726以用于执行本文所论述的操作和步骤。计算机系统700可进一步包含网络接口装置708以经由网络720通信。
数据存储装置718可包含机器可读存储媒体724(也称为计算机可读媒体),所述机器可读存储媒体上存储有一或多组指令726或体现本文所描述的方法或功能中的任何一或多个的软件。指令726还可在由计算机系统700执行其期间完全或至少部分地驻存于主存储器704内和/或处理装置702内,主存储器704和处理装置702还构成机器可读存储媒体。机器可读存储媒体724、数据存储装置718和/或主存储器704可对应于图1的存储器子系统110。
在一个实施例中,指令726包含用以基于描述如本文所描述的主机系统上的一或多个存储器区的整合数据而实施对应于执行存储器读取操作的功能性的指令(例如,图1的存储器区描述数据整合器113)。虽然在实例实施例中将机器可读存储媒体724展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储由机器执行的一组指令或对其进行编码且使机器执行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
已就对计算机存储器内的数据位的操作的算法和符号表示而言呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给本领域其它技术人员的方式。算法在本文中且一般被认为是产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操控的那些操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。主要出于常用的原因,已证明将这些信号称为位、值、元素、符号、字符、术语、编号或类似者有时是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便标记。本公开可涉及将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操控且变换成类似地表示为计算机系统的存储器或寄存器或其它此类信息存储系统内的物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及一种用于执行本文中的操作的设备。此设备可出于预期目的而专门构建,或其可包含由存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储于各自耦合到计算机系统总线的计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适合于存储电子指令的任何类型的媒体。
本文中呈现的算法和显示本质上并不与任何特定计算机或其它设备相关。各种通用系统可根据本文中的教示与程序一起使用,或其可以证明构造更专用的设备来执行方法是方便的。将如下文描述中所阐述的那样呈现用于各种这些系统的结构。另外,并不参考任何特定编程语言来描述本公开的实施例。应了解,可使用多种编程语言来实施如本文所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,所述计算机程序产品或软件可包含其上存储有可用以对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于存储呈机器(例如,计算机)可读形式的信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考本公开具体实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开实施例的更广精神和范围的情况下对本公开进行各种修改。因此,说明书和图式应被视为说明性的而非限制性的。
Claims (20)
1.一种存储器系统,其包括:
存储器装置;以及
处理装置,其操作性地耦合到所述存储器装置、配置成执行包括以下各项的操作:
从主机系统接收读取存储在所述存储器系统上的所请求的第一数据的第一请求,所述第一请求指定与所述第一请求相关联的第一存储器区描述数据,所述第一存储器区描述数据描述所述所请求的第一数据将发送到的所述主机系统的第一组个别存储器区;以及
响应于所述第一请求:
基于所述第一存储器区描述数据,通过识别第一组连续存储器区产生第一整合存储器区描述数据,所述第一组连续存储器区各自包括所述第一组个别存储器区中的两个或更多个循序相邻存储器区,所述第一整合存储器区描述数据包括:
用于所述第一组连续存储器区中的每一连续存储器区的单个描述符;以及
用于所述第一组个别存储器区中的每一个别存储器区的单个描述符,所述每一个别存储器区被排除在所述第一组连续存储器区之外;以及
基于在所述存储器系统上产生的所述第一整合存储器区描述数据对所述存储器装置执行第一读取操作。
2.根据权利要求1所述的存储器系统,其中所述产生所述第一整合存储器区存储器描述数据包括:
产生用于所述第一组连续存储器区中的每一连续存储器区的所述单个描述符。
3.根据权利要求1所述的存储器系统,其中所述第一存储器区描述数据存储在所述主机系统上,所述操作包括:
从所述主机系统存取所述第一存储器区描述数据。
4.根据权利要求1所述的存储器系统,其中所述第一存储器区描述数据包括存储器区描述符的链表,每一存储器区描述符包括对应于所述主机系统的本地存储器上的存储器地址空间的存储器地址。
5.根据权利要求1所述的存储器系统,其中所述第一存储器区描述数据包括根据非易失性存储器高速NVMe协议的散集列表SGL。
6.根据权利要求1所述的存储器系统,其中所述第一组个别存储器区中的每一个别存储器区由以下各者限定:
存储器地址,其对应于所述主机系统的本地存储器上的个别存储器地址空间;以及
所述个别存储器地址空间的存储器大小。
7.根据权利要求1所述的存储器系统,其中所述第一组存储器区中的每一存储器区包括所述主机系统的本地存储器上的个别存储器地址空间。
8.根据权利要求1所述的存储器系统,其中所述基于存储在所述存储器系统上的所述第一整合存储器区描述数据对所述存储器装置执行所述第一读取操作包括:
将用于一组逻辑块地址的一组读取命令发送到所述存储器装置,其中所述所请求的第一数据存储在所述存储器系统上;
响应于所述一组读取命令中的选定读取命令从所述存储器装置接收选定数据,所述选定读取命令用于所述一组逻辑地址中的选定逻辑块地址;以及
响应于接收到所述选定数据:
基于所述选定逻辑块地址和所述第一整合存储器区描述数据,确定所述主机系统上用以接收所述选定数据的一组选定存储器区;以及
将所述选定数据发送到所述一组选定存储器区。
9.根据权利要求8所述的存储器系统,其中使用包括所述选定数据的单个事务层包TLP将所述选定数据发送到本地存储器上的位置,所述单个事务层包根据外围组件互连高速PCIe标准。
10.根据权利要求9所述的存储器系统,其中所述单个事务层包包括响应于另一读取命令发送到所述存储器装置而从所述存储器装置接收到的额外数据,所述另一读取命令与对所述存储器装置执行的第二读取操作相关联,所述第二读取操作响应于由所述存储器系统从所述主机系统接收到的第二请求而执行。
11.根据权利要求1所述的存储器系统,其中所述操作包括:
接收读取存储在所述存储器系统上的所请求的第二数据的第二请求,所述第二请求指定与所述第二请求相关联的第二存储器区描述数据,所述第二存储器区描述数据描述所述所请求的第二数据将发送到的所述主机系统的第二组个别存储器区;以及
响应于所述第二请求:
通过识别第二组连续存储器区产生第二整合存储器区描述数据,所述第二组连续存储器区各自包括所述第二组个别存储器区中的两个或更多个循序相邻存储器区,所述第二整合存储器区描述数据包括:
用于所述第二组连续存储器区中的每一连续存储器区的单个描述符;以及
用于所述第二组个别存储器区的每一个别存储器区的单个描述符,所述每一个别存储器区被排除在所述第二组连续存储器区之外;以及
基于存储在所述存储器系统上的所述第二整合存储器区描述数据对所述存储器装置执行第二读取操作。
12.根据权利要求1所述的存储器系统,其中针对所述第一请求通过所述主机系统产生所述第一存储器区描述数据。
13.根据权利要求1所述的存储器系统,其中所述识别所述第一组连续存储器区包括在从所述主机系统存取所述第一存储器区描述数据时识别所述第一组个别存储器区中的个别连续存储器区。
14.根据权利要求1所述的存储器系统,其包括:
缓冲区,其用以存储由所述存储器系统产生的第一组存储器区描述符。
15.根据权利要求14所述的存储器系统,其包括:
存储器控制器,其包括所述处理装置和所述缓冲区。
16.一种方法,其包括:
在存储器系统处从主机系统接收读取存储在所述存储器系统上的所请求数据的请求,所述请求指定与所述请求相关联的主机存储器区描述数据,所述主机存储器区描述数据描述所述所请求数据将发送到的所述主机系统的一组个别存储器区;以及
响应于所述请求:
从所述主机系统存取所述主机存储器区描述数据;
通过识别一组连续存储器区产生整合存储器区描述数据,所述一组连续存储器区各自包括所述一组个别存储器区中的两个或更多个循序相邻存储器区,所述整合存储器区描述数据包括:
用于所述一组连续存储器区中的每一连续存储器区的单个描述符;以及
用于所述一组个别存储器区中的每一个别存储器区的单个描述符,所述每一个别存储器区被排除在所述一组连续存储器区之外;以及
将所述整合存储器区描述数据存储在所述存储器系统的缓冲区上。
17.根据权利要求16所述的方法,其包括响应于所述请求:
基于存储在所述缓冲区上的所述整合存储器区描述数据对所述存储器系统的存储器装置执行读取操作。
18.根据权利要求16所述的方法,其中所述主机存储器区描述数据包括存储器区描述符的链表,每一存储器区描述符包括对应于所述主机系统的本地存储器上的存储器地址空间的存储器地址。
19.根据权利要求16所述的方法,其中所述主机存储器区描述数据包括根据非易失性存储器高速NVMe协议的散集列表SGL。
20.至少一种包括指令的非暂时性机器可读存储媒体,所述指令在由存储器系统的处理装置执行时使所述处理装置执行包括以下各项的操作:
从主机系统接收读取存储在所述存储器系统上的所请求数据的请求,所述请求指定与所述请求相关联的主机存储器区描述数据,所述主机存储器区描述数据描述所述所请求数据将发送到的所述主机系统的一组个别存储器区;以及
响应于所述请求:
基于所述主机存储器区描述数据,通过识别一组连续存储器区产生整合存储器区描述数据,所述一组连续存储器区各自包括所述一组个别存储器区中的两个或更多个循序相邻存储器区,所述整合存储器区描述数据包括:
用于所述一组连续存储器区中的每一连续存储器区的单个描述符;以及
用于所述一组个别存储器区中的每一个别存储器区的单个描述符,所述每一个别存储器区被排除在所述一组连续存储器区之外;以及
将所述整合存储器区描述数据存储在所述存储器系统的缓冲区上。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/196,584 | 2021-03-09 | ||
US17/196,584 US11449272B1 (en) | 2021-03-09 | 2021-03-09 | Operation based on consolidated memory region description data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048043A true CN115048043A (zh) | 2022-09-13 |
Family
ID=83158077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210216809.2A Pending CN115048043A (zh) | 2021-03-09 | 2022-03-07 | 基于整合存储器区描述数据的操作 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11449272B1 (zh) |
CN (1) | CN115048043A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11449272B1 (en) * | 2021-03-09 | 2022-09-20 | Micron Technology, Inc. | Operation based on consolidated memory region description data |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8775718B2 (en) * | 2008-05-23 | 2014-07-08 | Netapp, Inc. | Use of RDMA to access non-volatile solid-state memory in a network storage system |
US9405725B2 (en) * | 2011-09-29 | 2016-08-02 | Intel Corporation | Writing message to controller memory space |
US10019161B2 (en) * | 2015-08-31 | 2018-07-10 | Sandisk Technologies Llc | Out of order memory command fetching |
CN109725824A (zh) * | 2017-10-27 | 2019-05-07 | 伊姆西Ip控股有限责任公司 | 用于向存储系统中的盘阵列写入数据的方法和设备 |
US11449272B1 (en) * | 2021-03-09 | 2022-09-20 | Micron Technology, Inc. | Operation based on consolidated memory region description data |
JP2023027970A (ja) * | 2021-08-18 | 2023-03-03 | キオクシア株式会社 | メモリシステム |
-
2021
- 2021-03-09 US US17/196,584 patent/US11449272B1/en active Active
-
2022
- 2022-03-07 CN CN202210216809.2A patent/CN115048043A/zh active Pending
- 2022-08-26 US US17/896,914 patent/US20220413749A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11449272B1 (en) | 2022-09-20 |
US20220291860A1 (en) | 2022-09-15 |
US20220413749A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11656983B2 (en) | Host-resident translation layer write command | |
US11113006B2 (en) | Dynamic data placement for collision avoidance among concurrent write streams | |
CN113851166B (zh) | 存储器子系统中的加速读取转译路径 | |
US11422945B2 (en) | Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes | |
US11604749B2 (en) | Direct memory access (DMA) commands for noncontiguous source and destination memory addresses | |
US20230161509A1 (en) | Dynamic selection of cores for processing responses | |
US20220050772A1 (en) | Data block switching at a memory sub-system | |
CN113934666B (zh) | 数据接口桥的预取 | |
US20240028239A1 (en) | Zone block staging component for a memory sub-system with zoned namespace | |
US20220413749A1 (en) | Operation based on consolidated memory region description data | |
US20230195350A1 (en) | Resequencing data programmed to multiple level memory cells at a memory sub-system | |
US11797198B2 (en) | Memory instruction for memory tiers | |
US11720490B2 (en) | Managing host input/output in a memory system executing a table flush | |
US11922011B2 (en) | Virtual management unit scheme for two-pass programming in a memory sub-system | |
US11847349B2 (en) | Dynamic partition command queues for a memory device | |
US11693597B2 (en) | Managing package switching based on switching parameters | |
US11275687B2 (en) | Memory cache management based on storage capacity for parallel independent threads | |
US20240103752A1 (en) | Managing trim commands in a memory sub-system | |
US20230266897A1 (en) | Dynamic zone group configuration at a memory sub-system | |
CN115729858A (zh) | 存储器中用于数据分享的散列操作 |
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 |