CN112835812A - 存储器子系统内的指针解除引用 - Google Patents
存储器子系统内的指针解除引用 Download PDFInfo
- Publication number
- CN112835812A CN112835812A CN202011327595.3A CN202011327595A CN112835812A CN 112835812 A CN112835812 A CN 112835812A CN 202011327595 A CN202011327595 A CN 202011327595A CN 112835812 A CN112835812 A CN 112835812A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory address
- command
- subsystem
- memory subsystem
- 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
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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
- G06F2212/284—Plural cache memories being distributed
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本申请涉及存储器子系统内的指针解除引用。在此描述的各种实施例提供了可由主机系统请求的存储器子系统读取操作或存储器子系统写入操作,并且涉及在所述存储器子系统内部执行多级(例如两级)指针解除引用。此类实施例可至少减少主机系统发送到存储器子系统以执行多级解除引用操作的读取操作的数目。
Description
技术领域
本公开的实施例通常涉及存储器子系统,且更具体地,涉及存储器子系统内的指针解除引用(例如,数据结构解除引用)。
背景技术
存储器子系统可包括存储数据的一或多个存储器部件。存储器部件例如可以是非易失性存储器部件和易失性存储器部件。一般来说,主机系统可利用存储器子系统来将数据存储在存储器部件处并从存储器部件检索数据。
发明内容
本公开涉及用于指针解除引用的存储器子系统和非易失性计算机可读存储介质,以及存储器子系统内的指针解除引用的方法。
在本公开的一些实施例中,存储器子系统包括存储器装置集;以及处理装置,所述处理装置可操作地耦合到所述存储器装置集,并且被配置为执行以下操作:从主机系统接收用以执行解除引用读取操作的存储器子系统命令集,所述存储器子系统命令集包括用于存储在所述存储器装置集上的第一数据结构的第一存储器地址和用于存储在所述存储器装置集上的第二数据结构的第二存储器地址;使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作;在使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作之后,从所述存储器装置集读取位于所述第二存储器地址处的索引数据;基于所述第一存储器地址和所述索引数据确定解除引用存储器地址;使所述存储器子系统停滞至少针对所述第二存储器地址的写入操作,并且继续停滞至少针对所述解除引用存储器地址的写入操作;从所述存储器装置集读取位于所述解除引用存储器地址处的目标数据;以及向所述主机系统发送指示所述解除引用读取操作的执行状态的响应。
在本公开的一些实施例中,方法包括:从主机系统接收用于存储器子系统执行解除引用写入操作的存储器子系统命令集,所述存储器子系统命令集包括用于存储在所述存储器子系统的存储器装置集上的第一数据结构的第一存储器地址、用于存储在所述存储器装置集上的第二数据结构的第二存储器地址以及用于所述存储器装置集上的写入位置的第三存储器地址;使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作;在使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作之后,从所述存储器装置集读取位于所述第二存储器地址处的索引数据;基于所述第一存储器地址和所述索引数据确定解除引用存储器地址;使所述存储器子系统停滞至少针对所述第二存储器地址的写入操作,并且继续停滞至少针对所述解除引用存储器地址的写入操作;从所述存储器装置集读取位于所述第三存储器地址处的目标数据;以及将所述目标数据在所述解除引用存储器地址处写入到所述存储器装置集。
在本公开的一些实施例中,非易失性计算机可读存储介质包括指令,所述指令在由处理装置执行时使所述处理装置执行以下操作:存取软件应用程序的源代码数据,所述源代码数据包括至少一个编程语言语句,以针对通过至少解除引用第一数据结构和第二数据结构而确定的存储器地址执行读取操作或写入操作;以及将所述源代码数据编译为用于所述处理装置的可执行指令,所述可执行指令包括至少一个可执行指令,所述可执行指令在由所述处理装置执行时使所述处理装置执行第二操作,所述第二操作包括:确定所述第一数据结构的第一存储器地址;确定所述第二数据结构的第二存储器地址;以及向可操作地耦合到所述处理装置的存储器子系统发送存储器子系统命令集,以针对由所述存储器子系统基于所述第一存储器地址和所述第二存储器地址确定的解除引用存储器地址执行解除引用操作,所述存储器子系统命令集包括所述第一存储器地址和所述第二存储器地址。
附图说明
从下面给出的详细描述和本公开的各种实施例的附图,将更全面地理解本公开。然而,不应将附图视为将本公开限于特定实施例,而是仅用于解释和理解。
图1示出根据本公开的一些实施例的包括存储器子系统的示例性计算环境。
图2和3是示出根据本公开的一些实施例的主机系统请求执行针对存储器子系统的示例性存储器子系统有界的解除引用操作的示例性存储器协议的图。
图4到8是根据本公开的一些实施例的用于在存储器子系统内执行关于多级指针解除引用的操作的示例性方法的流程图。
图9A到9C提供了示出在一些实施例的上下文中计算环境的部件之间的交互的交互图,在这些实施例中,执行用于在存储器子系统内执行关于多级指针解除引用的读取操作的方法。
图10A至10C提供了示出在一些实施例的上下文中计算环境的部件之间的交互的交互图,在这些实施例中,执行用于在存储器子系统内执行关于多级指针解除引用的写入操作的方法。
图11是本公开的实施例可在其中操作的示例性计算机系统的框图。
具体实施方式
本公开的各方面针对存储器子系统内的指针解除引用(例如,数据结构解除引用)。存储器子系统可以是存储装置、存储器模块或者存储装置和存储器模块的混合。下面结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个存储器部件的存储器子系统,例如存储数据的存储器装置。
通常,例如用户级应用程序内核之类的软件应用程序使用实现数据结构的指针的多级指针解除引用,例如实现数据结构的指针的两级解除引用,其中解除引用与数据结构相关联的一个指针提供可用于解除引用与另一数据结构相关联的另一指针的索引数据(例如,索引信息)。如在高级语言语法中(例如,在用户空间或内核空间中)所表示的,两级解除引用的实例可以包括a[b[i]],其中对数组数据结构a的解除引用使用来自另一数组结构b的元素。对于由a[b[i]]引用的存储器位置(在存储器子系统中),示例性读取操作可以包括c=a[b[i]],并且示例性写入操作可以包括a[b[i]]=c。许多科学计算内核使用这种类型的二级解除引用(以存取存储器位置)结合模拟真实世界物理系统来执行计算。传统上,存取(例如,读取或写入)对应于a[b[i]]的存储器位置涉及(例如,通过主机系统)从对应于b[i]的存储器位置读取索引数据的操作,且接着(例如,主机系统)解除引用数组数据结构a的索引(使用从存储器位置b[i]读取的索引数据)以从对应于a[b[i]]的存储器位置读取数据。由于在促进由a[b[i]]进行的两级解除引用时数据结构a和b之间的依赖性,如果来自对应于b[i]的存储器位置的索引数据在存储器子系统的寄存器或高速缓冲存储器中不可用,则传统的两级解除引用可导致(主机系统的处理器的)指令流水线停滞。当数据结构a、数据结构b或两者较大或涉及存储器子系统内的索引时,不可用的索引数据可引入甚至更多的等待时间。
本公开的各方面通过使存储器子系统(例如,非易失性双列直插存储器模块(NVDIMM)装置)在存储器子系统内部应主机系统的请求执行多级(例如,两级)解除引用读取操作或多级(例如,两级)解除引用写入操作来解决上述和其它缺陷。例如,各种实施例提供了一种方法,所述方法结合两个或更多个数据结构(例如,两数组数据结构)来执行多级(例如,两级)解除引用,并且针对多级解除引用的结果来执行写入操作或读取操作。应主机系统的请求(例如,经由存储器子系统命令到存储器子系统的请求),存储器子系统可在内部执行多级解除引用读取或写入操作,同时避免主机系统的传统介入(例如,避免主机系统执行多个解除引用操作)。在此描述的多级解除引用写入操作可视为具有多级解除引用的存储器子系统有界写入操作,且在此描述的多级解除引用读取操作可视为具有多级解除引用的存储器子系统有界读取操作。虽然这里针对两级解除引用描述了各种实施例,但是可以扩展这些实施例的特征以支持三级或更多级的解除引用(例如,对应于a[b[c[i]的存储器位置的三级解除引用)。
通过使用在此描述的各种实施例,主机系统可以至少减少在执行多级解除引用操作时主机系统发送到存储器子系统的读取操作的数目。另外,在此描述的各种实施例的使用对于大的存储器子系统池可能是特别有益的,例如用于存储大数据集或与大数据集一起工作的存储器子系统池。例如,可以向池发出执行解除引用读取操作或解除引用写入操作的存储器子系统命令,并且作为响应,池可以在内部执行解除引用、解析潜在的依赖性,并且将数据(用于读取操作)或写入数据返回到存储器位置,同时减少与主机系统的交互。在这样做时,主机系统可以更快地存取和处理(在池上)的大数据集,所述大数据集涉及多级解除引用并在调节存储器子系统的处理能力的同时使用所述处理能力。
如在此使用的,数据结构可以由至少一个指针(存储存储器地址)来实现,所述指针可以由索引或键数据解除引用以存取(例如,读取或写入)数据结构的元素。索引或键数据可包括可用作存储器地址偏移的数值。数据结构的实例可以包含但不限于数组数据结构或列表数据结构。如在此使用的,索引数据可包括可用作存储器地址偏移的信息。对于在此描述的各种实施例,主机系统通知存储器子系统主机系统正在使用的存储器地址字节顺序(例如,从较低到较高按字节寻址存储器),从而使存储器子系统能够适当地应用索引数据作为存储器偏移。
在此公开了如在此描述的用于存储器子系统内的指针解除引用(例如,数据结构解除引用)的系统的一些实例。
图1示出根据本公开的一些实施例的包括存储器子系统110的示例性计算系统100。存储器子系统110可包含介质,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或其组合。
存储器子系统110可以是存储装置、存储器模块或者存储装置和存储器模块的混合。存储装置的实例包括固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器、嵌入式多介质控制器(eMMC)驱动器、通用闪存(UFS)驱动器和硬盘驱动器(HDD)。存储器模块的实例包含双列直插存储器模块(DIMM)、小外形DIMM(SO-DIMM)和非易失性双列直插存储器模块(NVDIMM)。
计算系统100可以是计算装置,诸如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人驾驶飞机、火车、汽车或其它运输工具)、物联网(IoT)使能装置、嵌入式计算机(例如,包含在交通工具、工业设备或联网商业装置中的计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含主机系统120,所述主机系统120耦合到一或多个存储器子系统110。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1示出主机系统120耦合到一个存储器子系统110的一个实例。如在此使用的,“耦合到”通常指的是部件之间的连接,所述连接可以是间接通信连接或直接通信连接(例如,没有中间部件),无论是有线的还是无线的,包含诸如电的、光的、磁的等连接。
主机系统120可以包含处理器芯片组和由处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110,例如将数据写入存储器子系统110并从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附接(SATA)接口、外围部件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM套接字接口等)。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可以进一步利用NVM高速(NVMe)接口来存取存储器部件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。
存储器装置可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任意组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含负及(NAND)型快闪存储器及就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠的交叉网格数据存取阵列来基于体电阻的改变执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在先前不擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
尽管描述了诸如3D交叉点型和NAND型快闪存储器的非易失性存储器部件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选择存储器、其它基于硫族化物的存储器、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、负或(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)。
一种类型的存储器单元,例如单级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多电平单元(MLC)、三电平单元(TLC)和四电平单元(QLC),可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或其任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分、MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于某些类型的存储器(例如,NAND),可将页分组以形成块。
存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置130通信以执行例如在存储器装置130处读取数据、写入数据或擦除数据等操作和其它此类操作。存储器子系统控制器115可以包含诸如一或多个集成电路和/或分立部件的硬件、缓冲存储器或其组合。硬件可以包含具有专用(即硬编码)逻辑的数字电路系统,以执行在此描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器115可以包含处理器(处理装置)117、所述处理器117经配置以执行存储在本地存储器119中的指令。在所示出的实例中,本地存储器119的存储器子系统控制器115包含嵌入式存储器、所述嵌入式存储器经配置以存储指令,所述指令用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例程,包括处理存储器子系统110与主机系统120之间的通信。
在一些实施例中,本地存储器119可以包含存储存储器指针、获取数据等的存储器寄存器。本地存储器119还可以包含用于存储微代码的只读存储器(ROM)。尽管在图1中示出示例性存储器子系统110包含存储器子系统控制器115,在本公开的另一实施例中,存储器子系统110可不包含存储器子系统控制器115,且可改为依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供的外部控制)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所述命令或操作变换成用于实现对存储器装置130的所期望的存取的指令或适当命令。存储器子系统控制器115可负责其它操作,例如损耗均衡操作、无用单元收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA),命名空间)与物理地址(例如,物理MU地址,物理块地址)之间的地址转换。存储器子系统控制器115可以进一步包含主机接口电路系统,以通过物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统120接收的命令变换成用于存取存储器装置130的命令指令,并且将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可以包含未示出的附加电路系统或部件。在一些实施例中,存储器子系统110可以包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址并对所述地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地介质控制器135,所述本地介质控制器135与存储器子系统控制器115一起操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行介质管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,所述受管理存储器装置为与本地控制器(例如,本地控制器135)组合以用于同一存储器装置封装内的介质管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
主机系统120包含多级解除引用软件125,所述多级解除引用软件125使得主机系统120能够支持针对存储器子系统110的多级(例如,两级)解除引用写入或读取操作(下文中,分别为解除引用读取操作和解除引用写入操作)。具体而言,多级解除引用软件125可以使得主机系统120能够向存储器子系统110发送存储器子系统命令,所述存储器子系统命令请求在存储器子系统110内部执行解除引用读取操作或解除引用写入操作。
例如,多级解除引用软件125可以将包含根据编程语言(例如高级编程语言)的一或多个语句的(软件)源代码数据编译成可由主机系统120的处理装置执行(例如在用户空间中)的一或多个指令。在编译期间,多级解除引用软件125可以将源代码数据中的编程语言语句c=a[b[i]]视为针对第一数据结构a的第一存储器地址和第二数据结构b的元素i(例如,b[i])的第二存储器地址的解除引用读取操作。多级解除引用软件125(在编译期间)可以将所述编程语言语句变换成指令(指令集体系结构(ISA)中的新型指令),所述指令使处理装置确定第一数据结构a的第一存储器地址并确定第二数据结构b的元素i的第二存储器地址,并使这些存储器地址中的每一个作为请求执行解除引用读取操作的存储器子系统命令的一部分、被提供给存储器子系统110。变换可以包括处理装置执行虚拟存储器地址到物理存储器地址的转换(例如,使用处理装置的转换后备缓冲器(TLB))以确定第一存储器地址(对于第一数据结构a)和确定第二存储器地址(对于第二数据结构b的元素i)。这样,多级解除引用软件125可以知道数据结构a和b驻留在哪个物理存储器地址位置(例如,在大的主存储器池内)。
另外,在编译期间,多级解除引用软件125可以将源代码数据中的编程语言语句a[b[i]]=c视为针对第一数据结构a的第一存储器地址,第二数据结构b的元素i的第二存储器地址以及变量c的第三存储器地址的解除引用写入命令。多级解除引用软件125(在编译期间)可以将所述编程语言语句变换成指令(指令集体系结构(ISA)中的新型指令),所述指令使处理装置确定第一数据结构a的第一存储器地址、确定第二数据结构b的元素i的第二存储器地址并且确定变量c的第三存储器地址,并使这些存储器地址中的每一个作为请求执行解除引用写入操作的存储器子系统命令的一部分、被提供给存储器子系统110。变换可以包括处理装置执行虚拟存储器地址到物理存储器地址的转换(例如,使用处理装置的转换后备缓冲器(TLB))以确定第一存储器地址(对于第一数据结构a)和确定第二存储器地址(对于第二数据结构b的元素i)。这样,多级解除引用软件125可以知道数据结构a和b驻留在哪个物理存储器地址位置(例如,在大的主存储器池内)。
可替换地,对于一些实施例,多级解除引用软件125使得在主机系统120上操作的操作系统或装置驱动器能够插入一或多个错误调用,以调用适当的一或多个中断服务例程(ISR),从而利用请求解除引用读取操作的存储器子系统命令来处理编程语言语句c=a[b[i]],或者利用请求解除引用写入操作的存储器子系统命令来处理编程语言语句a[b[i]]=c。
对于一些实施例,多级解除引用软件125使主机系统120为主机系统120的不可交换的存储器空间中的数据结构分配(例如,通过装置驱动器或锁定页面系统调用)物理页面帧,使得数据结构不能被交换。另外,对于一些实施例,多级解除引用软件125使主机系统120让数据结构不可由靠近主机系统120的处理装置的高速缓冲存储器进行高速缓存,从而使数据结构存在于存储器子系统110并避免一致性问题。
如果数据结构可以被高速缓存(到主机系统120上的高速缓冲存储器系统),则对于解除引用写入操作,多级解除引用软件125可以使对高速缓冲存储器系统的进一步读取(对于解除引用写入操作)停滞,并且存在更新处理器高速缓冲存储器系统中的修改的数据位置或使所述数据位置无效的机制。
主机系统120除了向存储器子系统110发送数据结构a和数据结构元素b[i]的存储器地址(结合用于解除引用读取操作或解除引用写入操作的存储器子系统命令)之外,主机系统120还可以发送数据结构a和b的数据类型(例如,整数、字符、浮点等)或数据大小(例如,16位、32位、64位等)。对于在此描述的各种实施例,数据类型或数据大小使得存储器子系统110能够存取针对解除引用操作所提供的存储器地址的适当存储器位置。
对于一些实施例,存储器子系统110可支持小字符顺序存储器地址、大字符顺序存储器地址或这两种类型的存储器地址。在存储器子系统110开始时,多级解除引用软件125可以使主机系统120指示将针对从主机系统120发送到存储器子系统110的解除引用操作使用的存储器地址字节顺序(例如,小字符顺序或大字符顺序)。
对于一些实施例,存储器子系统110包含前端高速缓冲存储器150,所述前端高速缓冲存储器150可用于针对存储器装置130、140存取(例如,读取或写入)数据。根据一些实施例,前端高速缓冲存储器150被配置为非阻塞高速缓冲存储器,所述非阻塞高速缓冲存储器包含至少一个用于服务输入命令请求的命令队列。例如,前端高速缓冲存储器150可包括一或多个高速缓冲存储器线,其中每个特定高速缓冲存储器线可具有可确定所述特定高速缓冲存储器线用于存取的存储器装置130、140的存储器地址的范围的相关联标记(例如,存储器地址标记)。另外,前端高速缓冲存储器150可包括一或多个命令队列(例如,未完成命令队列),可将所述命令队列中的每一个指派(例如,指定)到单独的高速缓冲存储器线且用于排列(例如,存储)将针对其各自指派的高速缓冲存储器线而执行的输入命令请求(例如,来自主机系统120的读取或写入请求)。通过将特定高速缓冲存储器线的标记与特定命令队列相关联,可以将特定命令队列指派给特定高速缓冲存储器线。对于一些实施例,命令队列比高速缓冲存储器线少(例如,每一个命令队列有4096个高速缓冲存储器线),并且因此,命令队列可以基于流入存储器子系统110的命令请求被动态地指派给高速缓冲存储器线和不被指派。如果没有剩下可用的命令队列来指派给与新的输入命令请求相关联的(当前未被指派的)高速缓冲存储器线,则可以暂停来自主机系统120的所有输入命令请求(例如,根据NVDIMM-P存储器协议、存储器子系统将不向主机系统120提供发送更多请求的信用,并且导致对主机系统120的背压)。
存储器子系统110包含多级解除引用操作执行器113,所述多级解除引用操作执行器113允许或便于存储器子系统110执行某些实施例的多级解除引用读取操作或多级解除引用写入操作。在一些实施例中,存储器子系统控制器115包含存储器子系统有界的存储器功能执行器113的至少一部分。例如,存储器子系统控制器115可以包含处理器117(处理装置),所述处理器117经配置以执行存储在本地存储器119中的指令以执行在此描述的操作。在一些实施例中,存储器子系统有界的存储器功能执行器113是主机系统110、应用程序或操作系统的一部分。
对于一些实施例,主机系统120根据例如非确定性存储器协议(例如,NVDIMM-P存储器协议)的存储器协议,通过被编码为DREAD命令的存储器子系统命令来请求存储器子系统执行多级解除引用读取操作。例如,针对NVDIMM-P存储器协议,DREAD存储器子系统命令可以类似于命令(CMD)信号线上的XWRITE型存储器子系统命令,并且用(在CMD信号线上的)DREAD存储器子系统命令发出的存储器地址是数据结构a和数据结构b的元素i中的任一个的物理存储器地址,而另一个存储器地址在数据(DQ)信号线上发出。另外,对于一些实施例,主机系统120根据例如非确定性存储器协议(例如,NVDIMM-P存储器协议)的存储器协议,通过被编码为DWRITE命令的存储器子系统命令来请求存储器子系统执行多级解除引用写入操作。例如,针对NVDIMM-P存储器协议,DWRITE存储器子系统命令可以类似于命令(CMD)信号线上的XWRITE型存储器子系统命令,并且用(在CMD信号线上的)DWRITE存储器子系统命令发出的存储器地址是数据结构a、数据结构b的元素i或变量c中的任一个的物理存储器地址,而其它的存储器地址在数据(DQ)信号线上发出。可替换地,对于一些实施例,利用DWRITE存储器子系统命令在数据(DQ)信号线上发出其它存储器地址之一(例如,数据结构元素b[i]),并且利用另一存储器子系统命令,例如在随后的命令(CMD)信号线上的同伴解除引用写入存储器子系统命令(DDWRITE存储器子系统命令),将剩余的存储器地址(例如,变量c)发出到存储器子系统110。对于各种实施例,请求多级解除引用读取操作的存储器子系统命令和请求多级解除引用写入操作的存储器子系统命令,使用存储器协议(例如,NVDIMM-P存储器协议)发送数据结构a和b[i]的存储器地址(例如,物理存储器地址),并且请求多级解除引用写入操作的存储器子系统命令进一步发送变量c的存储器地址。
响应于存储器子系统110从主机系统120接收到请求针对对应于a[b[i]]的数据结构元素的解除引用读取操作,多级解除引用操作执行器113可以使存储器子系统控制器115处理a[b[i]]的两级解除引用以从对应于a[b[i]]的存储器位置读取数据。一旦从对应于数据结构元素a[b[i]]的存储器位置读取出数据(目标数据),多级解除引用操作执行器113可以使存储器子系统控制器115从存储器子系统110(例如,NVDIMM-P目标)向主机系统120(例如,NVDIMM-P启动器)发出响应(例如,根据NVDIMM-P存储器协议的RSP_n),以指示数据(目标数据)准备好被主机系统120读取。随后,主机系统120发出发送存储器子系统命令(例如,根据NVDIMM-P存储器协议的SEND命令),并且多级解除引用操作执行器113可以使存储器子系统控制器115通过向主机系统120(例如,NVDIMM-P启动器)发送读取出数据(目标数据)来进行响应。
响应于存储器子系统110从主机系统120接收到请求针对对应于a[b[i]]和变量c的数据结构元素的解除引用写入操作,多级解除引用操作执行器113可以使存储器子系统控制器115处理a[b[i]]的两级解除引用以将数据(从变量c)写入到对应于a[b[i]]的存储器位置。一旦从对应于变量c的存储器位置读取出数据(目标数据),多级解除引用操作执行器113可以使存储器子系统控制器115将读取出数据(目标数据)写入对应于数据结构元素a[b[i]]的存储器位置。随后,多级解除引用操作执行器113可以使存储器子系统控制器115从存储器子系统110(例如,NVDIMM-P目标)向主机系统120(例如,NVDIMM-P启动器)发出响应(例如,根据NVDIMM-P存储器协议的RSP_n),以指示数据(目标数据)已经被写入。另外,响应可指示存储器子系统110准备好向主机系统120提供对应于a[b[i]]的存储器地址(基于由存储器子系统控制器115执行的两级解除引用)。因此,主机系统120发出发送存储器子系统命令(例如,根据NVDIMM-P存储器协议的SEND命令),并且多级解除引用操作执行器113可以使存储器子系统控制器115通过向主机系统120(例如,NVDIMM-P启动器)发送读取出数据(目标数据)来进行响应。如果主机系统120经设置以使得数据结构a及b可高速缓存于主机系统120上,那么可使用由存储器子系统110返回到主机系统120的a[b[i]]的存储器地址来基于a[b[i]]的存储器地址更新(例如,修改其高速缓冲存储器线或使其高速缓冲存储器线无效)主机系统120上的一或多个高速缓冲存储器。
下面描述针对多级解除参考操作执行器113和多级解除参考软件125的操作的进一步细节。
图2和3是示出根据本公开的一些实施例的主机系统请求执行针对存储器子系统的示例性存储器子系统有界的解除引用操作的示例性存储器协议的图。具体而言,图2示出了根据示例性NVDIMM-P存储器协议200的示例性存储器子系统命令,主机系统(例如,120)通过所述命令请求存储器子系统(例如,110)执行针对由a[b[i]](例如,c=a[b[i]])表示的两级解除引用的解除引用读取操作。如图所示,所请求的解除引用读取操作涉及数据结构a的第一存储器地址(ADDR(A))、对应于解除引用读取操作(DREAD)的命令编码、数据结构b的元素i的第二存储器地址(ADDR(B[I]))。尽管未示出,但解除引用读取操作还可涉及向存储器子系统(例如,110)提供数据结构a和b中的一个或两个的存储器地址的数据大小、数据类型或字节顺序(例如,小字符顺序或大字符顺序)作为示例性存储器子系统命令的一部分(例如,经由METADATA信号线)。由主机系统向存储器子系统发送以下内容来请求解除引用读取操作:ADDR(A)和对应于命令(CMD)信号线上的解除引用读取操作(DREAD)的命令编码;数据(DQ)信号线上的ADDR(B[I])。可在发送ADDR(A)和命令(CMD)信号线上的命令编码(DREAD)之后的确定性延迟之后在数据(DQ)信号线上发送ADDR(B[I])。经由CMD和DQ信号线发送ADDR(A)、DREAD和ADDR(B[I])表示根据示例性NVDIMM-P存储器协议200发送示例性存储器子系统命令以请求解除引用读取操作。在非确定性延迟之后,存储器子系统用RSP_n信号线上的信号205来响应,以向主机系统指示已经结束执行解除引用读取操作,并且由解除引用读取操作从对应于a[b[i]]的存储器位置读取的数据(目标数据)准备好被发送到主机系统。响应于信号205,主机系统可将存储器子系统发送命令(SEND)发送到存储器子系统,存储器子系统通过在确定性延迟之后将目标数据(A[B[I]]DATA)发送回在数据(DQ)信号线上的主机系统来响应所述命令。
图3示出了根据示例性NVDIMM-P存储器协议300的示例性存储器子系统命令,主机系统(例如,120)通过所述命令请求存储器子系统(例如,110)执行针对由a[b[i]](例如,c=a[b[i]])表示的两级解除引用的解除引用写入操作。如图所示,所请求的解除引用写入操作涉及数据结构a的第一存储器地址(ADDR(A))、对应于解除引用写入操作(DWRITE)的命令编码、数据结构b的元素i的第二存储器地址(ADDR(B[I]))以及变量c的第三存储器地址(ADDR(C)),数据从所述地址复制。尽管未示出,但解除引用写入操作还可涉及向存储器子系统(例如,110)提供数据结构a和b和变量c中的一或多个的存储器地址的数据大小、数据类型或字节顺序(例如,小字符顺序或大字符顺序)作为示例性存储器子系统命令的一部分(例如,经由METADATA信号线)。由主机系统向存储器子系统发送以下内容来请求解除引用写入操作:ADDR(A)和对应于命令(CMD)信号线上的解除引用读取操作(DWRITE)的命令编码;数据(DQ)信号线上的ADDR(B[I])和ADDR(C)。可在发送ADDR(A)和命令(CMD)信号线上的命令编码(DWRITE)之后的确定性延迟之后在数据(DQ)信号线上发送ADDR(B[I])和ADDR(C)。经由CMD和DQ信号线发送ADDR(A)、DWRITE、ADDR(B[I])和ADDR(C)表示根据示例性NVDIMM-P存储器协议300发送示例性存储器子系统命令以请求解除引用写入操作。在非确定性延迟之后,存储器子系统用RSP_n信号线上的信号305来响应,以向主机系统指示已经结束执行解除引用写入操作,并且数据(目标数据)已经通过解除引用写入操作从对应于c的存储器位置读取并被写入到对应于a[b[i]]的存储器位置。对于一些实施例,RSP_n信号线向主机系统指示存储器子系统准备好向主机系统提供对应于位置a[b[i]]的存储器地址(如被确定为解除引用写入操作的一部分)。响应于信号305,主机系统可将存储器子系统发送命令(SEND)发送到存储器子系统,存储器子系统通过在确定性延迟之后将a[b[i]]的存储器地址(ADDR(A[B[I]])发送回在数据(DQ)信号线上的主机系统来响应所述命令。
图4到8是根据本公开的一些实施例的用于在存储器子系统内执行关于多级指针(例如,数据结构)解除引用的操作的示例性方法的流程图。方法400、500、600、700、800可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400、500、600、700中的至少一个由图1的存储器子系统控制器115基于多级解除引用操作执行器113执行。另外地或可选地,对于一些实施例,方法400、500、600、700中的至少一个至少部分地由主机系统120执行。对于一些实施例,方法800由主机系统120执行。在一些实施例中,方法800由主机系统120基于多级解除引用软件125来执行。尽管以特定的顺序或次序示出,但是除非另外指定,否则可以修改过程的次序。因此,所示出的实施例应仅被理解为实例,且所示出的过程可以以不同次序执行,且某些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每个实施例中都需要所有的过程。其它过程流程也是可能的。
现在参考图4的方法400,在操作405,处理装置(例如,存储器子系统控制器115的处理器117)从主机系统(例如,120)接收一或多个存储器子系统命令,以执行针对存储器子系统(例如,110)的第一存储器地址(例如,第一物理存储器地址)和存储器子系统的第二存储器地址(例如,第二物理存储器地址)的解除引用读取操作。对于其中从对应于a[b[i]](对于数组数据结构a和另一数组数据结构b)的存储器位置读取解除引用读取操作数据的一些实施例,第一存储器地址包括对应于数组数据结构a的存储器地址(例如,a[]的存储器地址),且第二存储器地址包含对应于数据结构b的数据元素i的存储器地址的存储器地址(例如,b[i])。对于一些实施例,根据诸如非易失性双列直插存储器模块-P(NVDIMM-P)存储器协议的非确定性存储器协议,从主机系统接收一或多个存储器子系统命令。一或多个存储器子系统命令包括指示与第一存储器地址或第二存储器地址中的至少一个相关联的数据类型或数据大小的信息。例如,存储器协议(例如NVDIMM-P存储器协议)的数据类型位可与一或多个存储器子系统命令的有效负载一起发送,且所述数据类型位可指定第一存储器地址、第二存储器地址或两者的数据类型大小(例如,64位、32位等)。
在操作410,处理装置(例如,117)使存储器子系统(例如,110)(临时)停滞针对与在一或多个存储器子系统命令(其在操作405接收)之后接收的任何存储器子系统命令相关联的存储器地址的写入操作。在这样做时,操作410可以防止存储在对应于a[b[i]]和b[i]的存储器位置中的数据在从那些存储器位置读取出数据之前被重写入或修改。在存储器子系统包括可操作地耦合到一或多个存储器装置的高速缓冲存储器(例如,前端高速缓冲存储器150)且所述高速缓冲存储器包括一或多个命令队列的情况下,操作410可包括在所述一或多个命令队列中停滞具有作为下一命令的写入操作的任何命令队列,这样有效地(经由高速缓冲存储器)防止存储在对应于a[b[i]]和b[i]的存储器位置中的数据重写入或修改。
在操作415,处理装置(例如,117)从一或多个存储器装置(例如,130、140)读取位于第二存储器地址(例如,对应于数据结构元素b[i])的索引数据。对于一些实施例,操作415仅在执行操作410之后执行。在存储器子系统包括可操作地耦合到一或多个存储器装置的高速缓冲存储器(例如,前端高速缓冲存储器150)的情况下,在读取位于第二存储器地址处的索引数据之前,操作415包括处理装置确定位于第二存储器地址处的索引数据当前是否存储在高速缓冲存储器中,并且响应于确定位于第二存储器地址处的索引数据当前存储在高速缓冲存储器中、从高速缓冲存储器中读取索引数据。可替换地,响应于确定位于第二存储器地址处的索引数据当前未存储在高速缓冲存储器中,处理装置可使位于第二存储器地址处的索引数据从一或多个存储器装置复制到高速缓冲存储器;然后可以从高速缓冲存储器读取索引数据。
对于操作415,在高速缓冲存储器包括多个高速缓冲存储器线和一或多个命令队列的情况下,使位于第二存储器地址处的索引数据从一或多个存储器装置复制到高速缓冲存储器可包括处理装置确定一或多个命令队列中的任何命令队列是否被指派(例如,经由存储器地址标记)到与第二存储器地址(例如,对应于数据结构元素b[i])相关联的特定高速缓冲存储器线。响应于确定一或多个命令队列中的特定命令队列被指派(例如,经由存储器地址标记)到特定高速缓冲存储器线,处理装置可使读取命令被发送到特定命令队列,其中所述读取命令使索引数据从一或多个存储器装置复制到特定高速缓冲存储器线。可替换地,响应于确定一或多个命令队列中没有命令队列被指派给特定高速缓冲存储器线,高速缓冲存储器可将(一或多个命令队列中的)可用命令队列指派给特定高速缓冲存储器线,且处理装置可向指派的命令队列发送使索引数据从一或多个存储器装置复制到特定高速缓冲存储器线的读取命令。
在操作420,处理装置(例如117)基于第一存储器地址和索引数据(由操作415提供)来确定解除引用存储器地址。具体而言,处理装置可以通过将第一存储器地址偏移由索引数据提供的值来确定解除引用存储器地址。
在操作425,处理装置(例如,117)使存储器子系统(例如,110)停止停滞至少针对第二存储器地址的写入操作,并且继续停滞至少针对解除引用存储器地址的写入操作。这样一来,操作425可防止存储在对应于a[b[i]]的存储器位置中的数据在从所述存储器位置读取出数据之前被重写入或修改,且可至少启用针对对应于b[i]的存储器位置的写入操作(例如,允许其恢复)。在存储器子系统包括可操作地耦合到一或多个存储器装置的高速缓冲存储器(例如,前端高速缓冲存储器150)的情况下,在读取位于第二存储器地址处的索引数据之前,操作425包括处理装置使一或多个命令队列中的至少与第二存储器地址相关联并且不与解除引用存储器地址相关联的特定命令队列停止停滞。
在操作430,处理装置(例如,117)从一或多个存储器装置(例如,130、140)读取位于解除引用存储器地址(例如,对应于数据结构元素a[b[i]])处的目标数据。在操作435,处理装置(例如,117)向主机系统(例如,120)发送指示解除引用读取操作的执行状态的响应。对于一些实施例,响应包括根据例如非确定性存储协议(例如,NVDIMM-P存储协议)的存储协议的响应信号(例如,RSP_n的断言)。另外,对于一些实施例,响应标识已经完成存储器子系统(例如110)上的操作的一或多个存储器子系统命令,从而使主机系统120能够更新主机系统侧的相关信息。
现在参考图5的方法500,对于一些实施例,操作505到535分别类似于如上参考图4所述的方法400的操作405到435。在操作540,处理装置(例如117)从主系统(例如120)接收向主系统发送目标数据的请求。对于一些实施例,发送的请求是根据非确定性存储器协议,例如NVDIMM-P存储器协议。例如,发送的请求可以包括由NVDIMM-P存储器协议指定的SEND存储器子系统命令。
在操作545,处理装置(例如117)将目标数据发送到主机系统(例如120),以响应于在操作540接收到发送的请求。对于一些实施例,根据例如NVDIMM-P存储器协议的非确定性存储器协议将目标数据发送到主机系统。例如,根据NVDIMM-P存储器协议,响应于来自主机系统的SEND存储器子系统命令,可以在数据(DQ)信号线上将目标数据发送到主机系统。
现在参考图6的方法600,在操作605,处理装置(例如,存储器子系统控制器115的处理器117)从主机系统(例如,120)接收一或多个存储器子系统命令,以执行针对存储器子系统(例如,110)的第一存储器地址、存储器子系统的第二存储器地址和存储器子系统的第三存储器地址的解除引用写入操作。对于其中解除引用写入操作将数据(目标数据)从变量c复制到对应于a[b[i]](对于数组数据结构a和另一数组数据结构b)的存储器位置的一些实施例,第一存储器地址包括对应于数组数据结构a的存储器地址(例如,a[]的存储器地址),第二存储器地址包括对应于数据结构b的数据元素i的存储器地址的存储器地址(例如,b[i]),并且第三存储器地址包括对应于变量c的存储器地址。
在操作610,处理装置(例如,117)使存储器子系统(例如,110)(临时)停滞针对与在一或多个存储器子系统命令(其在操作605接收)之后接收的任何存储器子系统命令相关联的存储器地址的写入操作。对于一些实施例,操作610类似于如上参考图4的方法400所述的操作410。
在操作615,处理装置(例如,117)从一或多个存储器装置(例如,130、140)读取位于第二存储器地址的索引数据。对于一些实施例,操作615仅在执行操作610之后执行。另外,对于一些实施例,操作615类似于如上参考图4的方法400所述的操作415。
在操作620,处理装置(例如117)基于第一存储器地址和索引数据来确定解除引用存储器地址。具体而言,处理装置可以通过将第一存储器地址偏移由索引数据提供的值来确定解除引用存储器地址。
在操作625,处理装置(例如,117)使存储器子系统(例如,110)停止停滞至少针对第二存储器地址的写入操作,并且继续停滞至少针对解除引用存储器地址的写入操作。对于一些实施例,操作625类似于如上参考图4的方法400所述的操作425。
在操作630,处理装置(例如,117)从一或多个存储器装置(例如,130、140)读取位于第三存储器地址(例如,对应于变量c)的目标数据。如在此描述的,与第三存储器地址相关联的存储器位置提供将被复制到与解除引用存储器地址相关联的存储器位置的目标数据(由操作620确定)。在操作635,处理装置(例如,117)在解除引用存储器地址(例如,对应于数据结构元素a[b[i]])处将目标数据写入一或多个存储器装置(例如,130、140)。
现在参考图7的方法700,对于一些实施例,操作705到735分别类似于如上参考图6所述的方法600的操作605到635。
在操作740,处理装置(例如,117)向主机系统(例如,120)发送指示解除引用写入操作的执行状态的响应。对于一些实施例,响应包括根据例如非确定性存储协议(例如,NVDIMM-P存储协议)的存储协议的响应信号(例如,RSP_n的断言)。另外,对于一些实施例,响应标识已经完成存储器子系统(例如110)上的操作的一或多个存储器子系统命令,从而使主机系统120能够更新主机系统侧的相关信息。
在操作745,处理装置(例如,117)从主机系统(例如,120)接收向主机系统发送解除引用存储器地址(例如,对应于数据结构元素a[b[i]])的请求。对于一些实施例,发送的请求是根据非确定性存储器协议,例如NVDIMM-P存储器协议。例如,发送的请求可以包括由NVDIMM-P存储器协议指定的SEND存储器子系统命令。如在此描述的,由存储器子系统返回到主机系统的解除引用存储器地址可由主机系统用来基于解除引用存储器地址来更新(例如,修改其高速缓冲存储器或其高速缓冲存储器无效)主机系统上的一或多个高速缓冲存储器。
在操作750,处理装置(例如117)将解除引用地址发送到主机系统(例如120),以响应于在操作745接收到发送的请求。对于一些实施例,根据例如NVDIMM-P存储器协议的非确定性存储器协议将解除引用地址发送到主机系统。例如,根据NVDIMM-P存储器协议,响应于来自主机系统的SEND存储器子系统命令,可以在数据(DQ)信号线上将解除引用地址发送到主机系统。
现在参考图8的方法800,在操作805,处理装置(例如,主机系统120的处理器)存取软件应用程序的源代码数据。对于一些实施例,源代码数据包括至少一个编程语言语句,用于针对通过至少解除引用(例如,两级解除引用)第一数据结构和第二数据结构所确定的存储器地址执行读取操作或写入操作。在操作810,处理装置(例如,主机系统120的处理器)将源代码数据编译成用于处理装置的可执行指令,其中可执行指令包括至少一个可执行指令,所述可执行指令使处理装置根据在此描述的各个实施例执行至少第一数据结构和第二数据结构的解除引用(例如,两级解除引用)。对于一些实施例,处理装置通过基于与第一数据结构相关联的第一虚拟存储器地址执行第一虚拟存储器地址到物理存储器地址的转换来确定第一存储器地址。另外,对于一些实施例,处理装置通过基于与第二数据结构相关联的第二虚拟存储器地址执行第二虚拟存储器地址到物理存储器地址转换来确定第二存储器地址。
图9A到9C提供了示出在一些实施例的上下文中计算环境100的部件之间的交互的交互图,在这些实施例中,执行用于在存储器子系统内执行关于多级指针(例如,数据结构)解除引用的读取操作的方法。所述方法的操作可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,由主机系统(例如,120)、存储器子系统控制器(例如,115)、存储器装置(例如,130、140)或其某一组合来执行所述方法。尽管以特定的顺序或次序示出了操作,但是除非另外指定,否则可以修改过程的次序。因此,所示出的实施例应仅被理解为实例,且所示出的过程可以以不同次序执行,且某些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每个实施例中都需要所有的过程。在图9A到9C中示出的实例的上下文中,主机系统可包含主机系统120,存储器子系统控制器可包含存储器子系统控制器115,且存储器装置可包含存储器装置130或140。
如图9A中所示,在操作902,主机系统120向存储器子系统110发送一或多个存储器子系统命令,以执行针对第一存储器地址(例如,对于a[])和第二存储器地址(例如,对于b[i])的解除引用读取操作。主机系统120根据例如非确定性存储器协议(例如,NVDIMM-P存储器协议)的存储器协议将一或多个存储器子系统命令传送到存储器子系统110。在操作910,存储器子系统控制器115接收请求执行针对第一存储器地址和第二存储器地址的解除引用读取操作的一或多个存储器子系统命令。在操作912,存储器子系统控制器115使存储器子系统110停滞针对与在一或多个存储器子系统命令(其在操作910接收)之后接收的任何存储器子系统命令相关联的存储器地址的写入操作。在操作914,存储器子系统控制器115从一或多个存储器装置(例如,130、140)读取第二存储器地址(例如,对于b[i])处的索引数据。作为响应,在操作930,一或多个存储器装置(例如,130、140)提供来自一或多个存储器装置上的对应于第二存储器地址的存储器位置的索引数据。
现在参考图9B,在操作916,存储器子系统控制器115基于第一存储器地址(例如,对于a[])和索引数据(由操作914读取)来确定解除引用存储器地址(例如,对于a[b[i]])。在操作918,存储器子系统控制器115使存储器子系统110停滞至少针对第二存储器地址的写入操作,并且继续停滞至少针对解除引用存储器地址的写入操作。在操作920,存储器子系统控制器115从一或多个存储器装置(例如130、140)读取位于解除引用存储器地址(由操作916确定)的目标数据。作为响应,在操作932,一或多个存储器装置(例如,130、140)提供来自一或多个存储器装置上的对应于解除引用存储器地址的存储器位置的目标数据。
现在参考图9C,在操作922,存储器子系统控制器115向主机系统120发送指示解除引用读取操作(由存储器子系统控制器115执行)的执行状态的响应。作为响应,在操作904,主机系统120从存储器子系统110接收响应。在操作906,主机系统120向存储器子系统110发送发送目标数据的请求。作为响应,在操作924,存储器子系统控制器115接收向主机系统120发送目标数据的请求。作为响应,在操作926,存储器子系统控制器115将目标数据发送到主机系统120。作为响应,在操作908,主机系统120从存储器子系统110接收目标数据。
图10A至10C提供了示出在一些实施例的上下文中计算环境100的部件之间的交互的交互图,在这些实施例中,执行用于在存储器子系统内执行关于多级指针(例如,数据结构)解除引用的写入操作的方法。所述方法的操作可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,由主机系统(例如,120)、存储器子系统控制器(例如,115)、存储器装置(例如,130、140)或其某一组合来执行所述方法。尽管以特定的顺序或次序示出了操作,但是除非另外指定,否则可以修改过程的次序。因此,所示出的实施例应仅被理解为实例,且所示出的过程可以以不同次序执行,且某些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每个实施例中都需要所有的过程。在图9A到9C中示出的实例的上下文中,在图10A到10C,主机系统可包含主机系统120,存储器子系统控制器可包含存储器子系统控制器115,且存储器装置可包含存储器装置130或140。
如图10A中所示,在操作1002,主机系统120向存储器子系统110发送一或多个存储器子系统命令,以执行针对第一存储器地址(例如,对于a[])、第二存储器地址(例如,对于b[i])和第三存储器地址(例如,对于变量c)的解除引用写入操作。主机系统120根据例如非确定性存储器协议(例如,NVDIMM-P存储器协议)的存储器协议将一或多个存储器子系统命令传送到存储器子系统110。在操作1010,存储器子系统控制器115接收请求执行针对第一存储器地址、第二存储器地址和第三存储器地址的解除引用写入操作的一或多个存储器子系统命令。在操作1012,存储器子系统控制器115使存储器子系统110停滞针对与在一或多个存储器子系统命令(其在操作1010接收)之后接收的任何存储器子系统命令相关联的存储器地址的写入操作。在操作1014,存储器子系统控制器115从一或多个存储器装置(例如,130、140)读取第二存储器地址(例如,对于b[i])处的索引数据。作为响应,在操作1030,一或多个存储器装置(例如,130、140)提供来自一或多个存储器装置上的对应于第二存储器地址的存储器位置的索引数据。
现在参考图10B,在操作1016,存储器子系统控制器115基于第一存储器地址(例如,对于a[])和索引数据(由操作1014读取)来确定解除引用存储器地址(例如,对于a[b[i]])。在操作1018,存储器子系统控制器115使存储器子系统110停滞至少针对第二存储器地址的写入操作,并且继续停滞至少针对解除引用存储器地址的写入操作。在操作1020,存储器子系统控制器115从一或多个存储器装置(例如,130、140)读取位于第三存储器地址(例如,对于变量c)的目标数据。作为响应,在操作1032,一或多个存储器装置(例如,130、140)提供来自一或多个存储器装置上的对应于第三存储器地址的存储器位置的目标数据。
现在参考图10C,在操作1022,存储器子系统控制器115将目标数据(从第三存储器地址)写入在解除引用存储器地址(由操作1016确定)处的一或多个存储器装置(例如,130、140)。作为响应,在操作1034,一或多个存储器装置(例如,130、140)存储写入到一或多个存储器装置上对应于解除引用存储器地址的存储器位置的目标数据。在操作1024,存储器子系统控制器115向主机系统120发送指示解除引用写入操作(由存储器子系统控制器115执行)的执行状态的响应。作为响应,在操作1004,主机系统120从存储器子系统110接收响应。在操作1006,主机系统120向存储器子系统110发送发送解除引用存储器地址的请求。作为响应,在操作1026,存储器子系统控制器115接收将解除引用存储器地址(例如,主机系统120可使用所述地址来更新主机系统120上的一或多个高速缓冲存储器)发送到主机系统120的请求。作为响应,在操作1028,存储器子系统控制器115将解除引用存储器地址发送到主机系统120。作为响应,在操作1008,主机系统120从存储器子系统110接收解除引用存储器地址。
图11示出了计算机系统1100形式的示例性机器,在所述示例性机器中可以执行一组指令以使机器执行在此讨论的任何一或多个方法。在一些实施例中,计算机系统1100可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110),或者可以用于执行在此描述的操作(例如,执行操作系统以执行对应于图1的多级解除引用软件125的操作)。在备选实施例中,机器可连接(例如联网)到局域网(LAN)、内联网、外联网和/或因特网中的其它机器。所述机器可以在客户机-服务器网络环境中作为服务器或客户机,作为对等(或分布式)网络环境中的对等机器,或作为云计算基础结构或环境中的服务器或客户机来操作。
所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥,或者能够执行指定所述机器要采取的动作的指令集(按顺序或以其它方式)的任何机器。此外,虽然示出了单个机器,但是术语“机器”还应当被理解为包含单独地或共同地执行(或多个)指令集以执行在此讨论的任何一或多个方法的任何机器集合。
示例性计算机系统1100包括处理装置1102、主存储器1104(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等的动态随机存取存储器(DRAM)等)、静态存储器1106(例如,闪存、静态随机存取存储器(SRAM)等),以及数据存储设备1118,它们经由总线1130彼此通信。
处理装置1102代表一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置1102可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,实施其它指令集的处理器或实施指令集的组合的处理器。处理装置1102还可以是一或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置1102经配置以执行用于执行在此讨论的操作和步骤的指令1126。计算机系统1100可以进一步包含网络接口设备1108以通过网络1120进行通信。
数据存储装置1118可以包含机器可读存储介质1124(也被称为计算机可读介质),在其上存储了一或多个指令集1126或体现在此描述的任何一或多个方法或功能的软件。在指令1126由计算机系统1100执行期间,所述指令1126还可以完全或至少部分地驻留在主存储器1104内和/或处理装置1102内,主存储器1104和处理装置1102也构成机器可读存储介质。机器可读存储介质1124、数据存储装置1118和/或主存储器1104可以对应于图1的存储器子系统110。
在一个实施例中,指令1126包含用于实现对应于如在此描述的存储器子系统(例如,图1的多级解除引用软件125)内执行解除引用读取操作或解除引用写入操作的功能的指令。虽然在示例性实施例中,示出机器可读存储介质1124为单个介质,但是术语“机器可读存储介质”应当被认为包含存储一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”还应当被认为包含能够存储或编码用于由机器执行的一组指令并且使得机器执行本公开的任何一或多个方法的任何介质。因此,术语“机器可读存储介质”应被认为包含但不限于固态存储器、光学介质和磁性介质。
根据对计算机存储器内的数据位的操作的算法和符号表示,已经给出了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地向本领域的其它技术人员传达其工作实质的方式。这里的算法通常被认为是导致期望结果的自相容操作序列。这些操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采取能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于共同使用的原因,将这些信号称为位、值、元素、符号、字符、项、数字等有时被证明是方便的。
然而,应当记住,所有这些和类似的术语要与适当的物理量相关联,并且仅仅是应用于这些量的方便的标签。本公开可以涉及计算机系统或类似的电子计算装置的动作和过程,所述计算机系统或类似的电子计算装置对表示为计算机系统的寄存器和存储器内的物理(电子)量的数据进行操作并将其转化成类似地表示为计算机系统存储器或寄存器或的信息存储系统内的物理量的其它数据。
本公开还涉及一种用于执行这里的操作的设备。所述设备可以为预期目的而专门构造,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以存储在计算机可读存储介质中,例如但不限于任何类型的盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或者适合于存储电子指令的任何类型的介质,每个都耦合到计算机系统总线。
在此提出的算法和显示并不固有地与任何特定的计算机或其它设备相关。根据这里的教导,各种通用系统可以与程序一起使用,或者可以证明构造更专用的设备来执行方法是方便的。各种这些系统的结构将在下面的描述中阐明。另外,没有参考任何特定编程语言来描述本公开。将理解,可使用各种编程语言来实现如在此描述的本公开的教导。
本公开可提供为计算机程序产品或软件,所述计算机程序产品或软件可包含其上存储有指令的机器可读介质,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程。机器可读介质包含用于以机器(例如计算机)可读形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存部件等。
在前述说明书中,已参考本公开的特定示例性实施例描述了本公开的实施例。显然,在不脱离所附权利要求中阐述的本公开的实施例的较宽精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图被认为是说明性的而不是限制性的。
Claims (20)
1.一种存储器子系统,其包括:
存储器装置集;以及
处理装置,所述处理装置可操作地耦合到所述存储器装置集,并且被配置为执行以下操作:
从主机系统接收用以执行解除引用读取操作的存储器子系统命令集,所述存储器子系统命令集包括用于存储在所述存储器装置集上的第一数据结构的第一存储器地址和用于存储在所述存储器装置集上的第二数据结构的第二存储器地址;
使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作;
在使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作之后,从所述存储器装置集读取位于所述第二存储器地址处的索引数据;
基于所述第一存储器地址和所述索引数据确定解除引用存储器地址;
使所述存储器子系统停滞至少针对所述第二存储器地址的写入操作,并且继续停滞至少针对所述解除引用存储器地址的写入操作;
从所述存储器装置集读取位于所述解除引用存储器地址处的目标数据;以及
向所述主机系统发送指示所述解除引用读取操作的执行状态的响应。
2.根据权利要求1所述的存储器子系统,其中根据非确定性存储器协议从所述主机系统接收所述存储器子系统命令集。
3.根据权利要求1所述的存储器子系统,其中所述操作进一步包括:
从所述主机系统接收向所述主机系统发送所述目标数据的请求;以及
响应于接收到向所述主机系统发送所述目标数据的所述请求,向所述主机系统发送所述目标数据。
4.根据权利要求1所述的存储器子系统,其中所述存储器子系统命令集包括指示与所述第一存储器地址或所述第二存储器地址中的至少一个相关联的数据类型或数据大小中的至少一个的信息。
5.根据权利要求1所述的存储器子系统,其进一步包括:
可操作地耦合到所述存储器装置集的高速缓冲存储器,所述高速缓冲存储器包括命令队列集;
其中,所述使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作包括:
停滞所述命令队列集中具有作为下一个命令的写入操作的任何命令队列;以及
其中,所述使所述存储器子系统停止停滞至少针对所述第二存储器地址的写入操作,并且继续停滞至少针对所述解除引用存储器地址的写入操作包括:
使所述命令队列集中至少与所述第二存储器地址相关联且不与所述解除引用存储器地址相关联的特定命令队列停止停滞。
6.根据权利要求1所述的存储器子系统,其进一步包括:
可操作地耦合到所述存储器装置集的高速缓冲存储器,所述操作进一步包括:
在读取位于所述第二存储器地址处的所述索引数据之前,确定位于所述第二存储器地址处的所述索引数据当前是否存储在所述高速缓冲存储器中,所述读取位于所述第二存储器地址处的所述索引数据包括:
响应于确定位于所述第二存储器地址处的所述索引数据当前存储在所述高速缓冲存储器中,从所述高速缓冲存储器读取所述索引数据。
7.根据权利要求1所述的存储器子系统,其进一步包括:
可操作地耦合到所述存储器装置集的高速缓冲存储器,所述操作进一步包括:
在读取位于所述第二存储器地址处的所述索引数据之前,确定位于所述第二存储器地址处的所述索引数据当前是否存储在所述高速缓冲存储器中,所述读取位于所述第二存储器地址处的所述索引数据包括:
响应于确定位于所述第二存储器地址处的所述索引数据当前未存储于所述高速缓冲存储器中:
使位于所述第二存储器地址处的所述索引数据从所述存储器装置集复制到所述高速缓冲存储器;以及
从所述高速缓冲存储器中读取所述索引数据。
8.根据权利要求7所述的存储器子系统,其中所述高速缓冲存储器包括:
包括与所述第二存储器地址相关联的特定高速缓冲存储器线的多个高速缓冲存储器线;以及
命令队列集,所述使位于所述第二存储器地址处的所述索引数据从所述存储器装置集复制到所述高速缓冲存储器包括:
确定所述命令队列集中的任何命令队列是否被指派给所述特定高速缓冲存储器线;以及
响应于确定所述命令队列集中的特定命令队列被指派给所述特定高速缓冲存储器线,向所述特定命令队列发送读取命令,所述读取命令使所述索引数据从所述存储器装置集复制到所述特定高速缓冲存储器线。
9.根据权利要求7所述的存储器子系统,其中所述高速缓冲存储器包括:
包括与所述第二存储器地址相关联的特定高速缓冲存储器线的多个高速缓冲存储器线;以及
命令队列集,所述使位于所述第二存储器地址处的所述索引数据从所述存储器装置集复制到所述高速缓冲存储器包括:
确定所述命令队列集中的任何命令队列是否被指派给所述特定高速缓冲存储器线;以及
响应于确定所述命令队列集中没有命令队列被指派给所述特定高速缓冲存储器线:
将所述命令队列集中的可用命令队列指派给所述特定高速缓冲存储器线;以及
将读取命令发送到所述可用命令队列,所述读取命令使所述索引数据从所述存储器装置集复制到所述特定高速缓冲存储器线。
10.一种方法,其包括:
从主机系统接收用于存储器子系统执行解除引用写入操作的存储器子系统命令集,所述存储器子系统命令集包括用于存储在所述存储器子系统的存储器装置集上的第一数据结构的第一存储器地址、用于存储在所述存储器装置集上的第二数据结构的第二存储器地址以及用于所述存储器装置集上的写入位置的第三存储器地址;使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作;
在使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作之后,从所述存储器装置集读取位于所述第二存储器地址处的索引数据;
基于所述第一存储器地址和所述索引数据确定解除引用存储器地址;
使所述存储器子系统停滞至少针对所述第二存储器地址的写入操作,并且继续停滞至少针对所述解除引用存储器地址的写入操作;
从所述存储器装置集读取位于所述第三存储器地址处的目标数据;以及
将所述目标数据在所述解除引用存储器地址处写入到所述存储器装置集。
11.根据权利要求10所述的方法,其进一步包括:
向所述主机系统发送指示所述解除引用写入操作的执行状态的响应;
从所述主机系统接收向所述主机系统发送所述解除引用存储器地址的请求;以及
响应于接收到向所述主机系统发送所述目标数据的所述请求,向所述主机系统发送所述解除引用存储器地址。
12.根据权利要求10所述的方法,其中根据非确定性存储器协议从所述主机系统接收所述存储器子系统命令集。
13.根据权利要求10所述的方法,其中所述存储器子系统命令集包括指示与所述第一存储器地址、所述第二存储器地址或所述第三存储器地址中的至少一个相关联的数据类型或数据大小中的至少一个的信息。
14.根据权利要求10所述的方法,其中所述存储器子系统包括可操作地耦合到所述存储器装置集的高速缓冲存储器,所述高速缓冲存储器包括命令队列集;
其中,所述使所述存储器子系统停滞针对与在所述存储器子系统命令集之后接收的任何存储器子系统命令相关联的存储器地址的写入操作包括:
停滞所述命令队列集中具有作为下一个命令的写入操作的任何命令队列;以及
其中,所述使所述存储器子系统停止停滞至少针对所述第二存储器地址的写入操作,并且继续停滞至少针对所述解除引用存储器地址的写入操作包括:
使所述命令队列集中至少与所述第二存储器地址相关联且不与所述解除引用存储器地址相关联的特定命令队列停止停滞。
15.根据权利要求10所述的方法,其进一步包括:
在读取位于所述第二存储器地址处的所述索引数据之前,确定位于所述第二存储器地址处的所述索引数据当前是否存储在所述存储器子系统的高速缓冲存储器中,所述读取位于所述第二存储器地址处的所述索引数据包括:
响应于确定位于所述第二存储器地址处的所述索引数据当前存储在所述高速缓冲存储器中,从所述高速缓冲存储器读取所述索引数据。
16.根据权利要求10所述的方法,其进一步包括:
在读取位于所述第二存储器地址处的所述索引数据之前,确定位于所述第二存储器地址处的所述索引数据当前是否存储在所述存储器子系统的高速缓冲存储器中,所述读取位于所述第二存储器地址处的所述索引数据包括:
响应于确定位于所述第二存储器地址处的所述索引数据当前未存储于所述高速缓冲存储器中:
使位于所述第二存储器地址的所述索引数据从所述存储器装置集复制到所述高速缓冲存储器;以及
从所述高速缓冲存储器中读取所述索引数据。
17.根据权利要求16所述的方法,其中所述存储器子系统的所述高速缓冲存储器包括:包括与所述第二存储器地址相关联的特定高速缓冲存储器线的多个高速缓冲存储器线;以及
命令队列集,所述使位于所述第二存储器地址处的所述索引数据从所述存储器装置集复制到所述高速缓冲存储器包括:
确定所述命令队列集中的任何命令队列是否被指派给所述特定高速缓冲存储器线;以及
响应于确定所述命令队列集中的特定命令队列被指派给所述特定高速缓冲存储器线,向所述特定命令队列发送读取命令,所述读取命令使所述索引数据从所述存储器装置集复制到所述特定高速缓冲存储器线。
18.根据权利要求16所述的方法,其中所述存储器子系统的所述高速缓冲存储器包括:
包括与所述第二存储器地址相关联的特定高速缓冲存储器线的多个高速缓冲存储器线;以及
命令队列集,所述使位于所述第二存储器地址处的所述索引数据从所述存储器装置集复制到所述高速缓冲存储器包括:
确定所述命令队列集中的任何命令队列是否被指派给所述特定高速缓冲存储器线;以及
响应于确定所述命令队列集中没有命令队列被指派给所述特定高速缓冲存储器线:
将所述命令队列集中的可用命令队列指派给所述特定高速缓冲存储器线;以及
将读取命令发送到所述可用命令队列,所述读取命令使所述索引数据从所述存储器装置集复制到所述特定高速缓冲存储器线。
19.一种包括指令的非暂时性计算机可读存储介质,所述指令在由处理装置执行时使所述处理装置执行以下操作:
存取软件应用程序的源代码数据,所述源代码数据包括至少一个编程语言语句,以针对通过至少解除引用第一数据结构和第二数据结构而确定的存储器地址执行读取操作或写入操作;以及
将所述源代码数据编译为用于所述处理装置的可执行指令,所述可执行指令包括至少一个可执行指令,所述可执行指令在由所述处理装置执行时使所述处理装置执行第二操作,所述第二操作包括:
确定所述第一数据结构的第一存储器地址;
确定所述第二数据结构的第二存储器地址;以及
向可操作地耦合到所述处理装置的存储器子系统发送存储器子系统命令集,以针对由所述存储器子系统基于所述第一存储器地址和所述第二存储器地址确定的解除引用存储器地址执行解除引用操作,所述存储器子系统命令集包括所述第一存储器地址和所述第二存储器地址。
20.根据权利要求19所述的非暂时性计算机可读存储介质,其中所述确定所述第一存储器地址包括基于与所述第一数据结构相关联的第一虚拟存储器地址来执行第一虚拟存储器地址到物理存储器地址的转换,并且其中所述确定所述第二存储器地址包括基于与所述第二数据结构相关联的第二虚拟存储器地址来执行第二虚拟存储器地址到物理存储器地址的转换。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/694,469 | 2019-11-25 | ||
US16/694,469 US11194518B2 (en) | 2019-11-25 | 2019-11-25 | Pointer dereferencing within memory sub-system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835812A true CN112835812A (zh) | 2021-05-25 |
CN112835812B CN112835812B (zh) | 2022-07-01 |
Family
ID=75923288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011327595.3A Active CN112835812B (zh) | 2019-11-25 | 2020-11-24 | 存储器子系统内的指针解除引用 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11194518B2 (zh) |
CN (1) | CN112835812B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11573743B2 (en) | 2019-11-25 | 2023-02-07 | Micron Technology, Inc. | Pointer dereferencing within memory sub-system |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210156090A (ko) * | 2020-06-17 | 2021-12-24 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090018993A1 (en) * | 2007-07-13 | 2009-01-15 | Rapidmind, Inc. | Methods and systems for optimizing data accesses |
US20090132979A1 (en) * | 2007-11-19 | 2009-05-21 | Simon Joshua Waters | Dynamic pointer dereferencing and conversion to static hardware |
CN109219797A (zh) * | 2016-07-01 | 2019-01-15 | 英特尔公司 | 用于格式化持久性存储器文件的技术 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6848029B2 (en) * | 2000-01-03 | 2005-01-25 | Dirk Coldewey | Method and apparatus for prefetching recursive data structures |
US7203912B2 (en) * | 2004-07-21 | 2007-04-10 | Rajat Moona | Compiling memory dereferencing instructions from software to hardware in an electronic design |
US10133672B2 (en) * | 2016-09-15 | 2018-11-20 | Advanced Micro Devices, Inc. | System and method for efficient pointer chasing |
US10747474B2 (en) * | 2018-10-22 | 2020-08-18 | EMC IP Holding Company LLC | Online cluster expansion for storage system with decoupled logical and physical capacity |
US11194518B2 (en) | 2019-11-25 | 2021-12-07 | Micron Technology, Inc. | Pointer dereferencing within memory sub-system |
-
2019
- 2019-11-25 US US16/694,469 patent/US11194518B2/en active Active
-
2020
- 2020-11-24 CN CN202011327595.3A patent/CN112835812B/zh active Active
-
2021
- 2021-10-26 US US17/511,299 patent/US11573743B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090018993A1 (en) * | 2007-07-13 | 2009-01-15 | Rapidmind, Inc. | Methods and systems for optimizing data accesses |
US20090132979A1 (en) * | 2007-11-19 | 2009-05-21 | Simon Joshua Waters | Dynamic pointer dereferencing and conversion to static hardware |
CN109219797A (zh) * | 2016-07-01 | 2019-01-15 | 英特尔公司 | 用于格式化持久性存储器文件的技术 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11573743B2 (en) | 2019-11-25 | 2023-02-07 | Micron Technology, Inc. | Pointer dereferencing within memory sub-system |
Also Published As
Publication number | Publication date |
---|---|
US20220050637A1 (en) | 2022-02-17 |
CN112835812B (zh) | 2022-07-01 |
US20210157518A1 (en) | 2021-05-27 |
US11573743B2 (en) | 2023-02-07 |
US11194518B2 (en) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669265B2 (en) | Memory sub-system-bounded memory function | |
US11573743B2 (en) | Pointer dereferencing within memory sub-system | |
US20220276963A1 (en) | Prefetch buffer of memory sub-system | |
CN113010449A (zh) | 存储器子系统中命令的有效处理 | |
US11656995B2 (en) | Dynamic access granularity in a cache media | |
CN113518977A (zh) | 基于高速缓存行的扇区的修改来逐出高速缓存行 | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
CN113934666B (zh) | 数据接口桥的预取 | |
US11797198B2 (en) | Memory instruction for memory tiers | |
US20230195350A1 (en) | Resequencing data programmed to multiple level memory cells at a memory sub-system | |
WO2022027578A1 (en) | Memory overlay using host memory buffer | |
US11526299B2 (en) | Elastic buffer for media management of a memory sub-system | |
US11947453B2 (en) | Memory device with on-die cache | |
CN113918479B (zh) | 用于并行独立线程的低位密度存储器高速缓存的方法及系统 | |
US11868642B2 (en) | Managing trim commands in a memory sub-system | |
US11741008B2 (en) | Disassociating memory units with a host system | |
US11287987B2 (en) | Coherency locking schemes |
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 |