CN116134475A - 计算机存储器扩展设备及其操作方法 - Google Patents
计算机存储器扩展设备及其操作方法 Download PDFInfo
- Publication number
- CN116134475A CN116134475A CN202180059852.6A CN202180059852A CN116134475A CN 116134475 A CN116134475 A CN 116134475A CN 202180059852 A CN202180059852 A CN 202180059852A CN 116134475 A CN116134475 A CN 116134475A
- Authority
- CN
- China
- Prior art keywords
- memory
- commit
- payload
- cache
- nvm
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种与主机计算机系统一起操作的存储器扩展设备包括非易失性存储器(NVM)子系统、高速缓冲存储器和控制逻辑,该控制逻辑可被设置为从主机接收提交,该提交包括读取命令并指定该NVM子系统中的有效载荷和该有效载荷中的需求数据。该控制逻辑被设置为请求与该有效载荷相对应的一组高速缓冲存储器线的所有权,在获取该一组高速缓冲存储器线的所有权之后指示该提交的完成,以及将该有效载荷加载到该高速缓冲存储器。该一组高速缓冲存储器线对应于相干存储器空间中的一组高速缓冲存储器线。该控制逻辑还被设置为在指示该提交的完成之后,以及响应于该主机读取该有效载荷的需求数据的请求,在确定该需求数据已经被加载到该高速缓冲存储器中之后,从该高速缓冲存储器返回该需求数据。
Description
技术领域
本申请中描述的各种实施例一般涉及计算机存储器,更具体地,涉及计算机存储器扩展设备及其操作方法。
背景技术
云计算、人工智能和机器学习等新兴应用正在推动数据处理的速度升级。随着每个插槽在更高时钟频率下运行的内核数量的增加,以及图形处理单元(graphicprocessing unit,简称“GPU”)、现场可编程门阵列(FPGA)、数据处理单元(DPU)等加速器的帮助,处理器速度和/或每个插槽的活动线程数每两年翻一倍。处理器功率的增加对内存容量、内存速度或带宽提出了越来越高的要求,但不幸的是,这些要求并没有以相同的速度增加。通常,较高的内存速度意味着较低的内存容量,随着内存容量的增加以跟上处理器速度的增加,内存延迟(完成内存操作所需的时间)也以每两年1.1倍的速度增加。因此,解决内存容量和带宽差距问题对数据处理系统的性能至关重要。
使用非易失性存储器快速固态驱动器(NVMe SSD)的软件定义内存(SDM)扩展提供了更好的经济性,但存在各种性能问题,例如不同工作载荷之间效率低下、由于延迟高导致的预先获取质量差、页面故障的延迟惩罚大以及将数据移动到相干主机内存中效率低下。
发明内容
在一些实施例中,高密度、高带宽和低成本存储器扩展设备包括非易失性存储器(NVM,例如NAND闪存)作为用于低成本虚拟存储器容量扩展的第1层存储器,可选动态随机存取存储器(DRAM)作为用于物理存储器容量和带宽扩展的第2层相干存储器,以及高速缓冲存储器作为用于低延迟的第3层相干存储器。
在一些实施例中,存储器扩展设备可在计算机系统中操作,该计算机系统包括主机和专用总线。该存储器扩展设备包括接口电路,被设置为基于预定义协议经由该专用总线与该主机通信,NVM子系统,高速缓冲存储器,和耦合到所该接口电路、该高速缓冲存储器和该NVM子系统的控制逻辑,其中该控制逻辑被设置为:从该主机接收第一提交,该第一提交包括第一读取命令并指定该NVM子系统中的第一有效载荷,和响应于该第一提交具有第一优先级,请求与该第一有效载荷相对应的第一高速缓冲存储器线的所有权,在获取该第一高速缓冲存储器线的该所有权之后指示完成该第一提交,并将该第一有效载荷加载到该高速缓冲存储器,该第一高速缓冲存储器线对应于该主机可访问的第一相干目的地存储空间中的高速缓冲存储器线。
在一些实施例中,该存储器扩展设备经由计算机快速链路(CXL)总线耦合到该主机,该接口电路在该控制逻辑和该CXL总线之间提供CXL接口,并且该主机可使用CXL协议访问该第一相干目的地存储空间。
在一些实施例中,该控制逻辑还被设置为从该主机处的归属代理请求该第一高速缓冲存储器线的该所有权。
在一些实施例中,该第一提交进一步指定该第一有效载荷中的需求数据。该控制逻辑被设置为在将该第一有效载荷加载到该高速缓冲存储器之前,发出第一NVM读取命令以从该NVM子系统读取该第一有效载荷,该第一NVM读取命令被写入与该NVS子系统相关联的命令队列中。该控制逻辑还被设置为当发出该第一NVM读取命令时,优先从该NVM子系统读取该需求数据,使得在该NVM子系统中与包括该需求数据的逻辑块相对应的逻辑块地址在与该第一有效载荷中与其他逻辑块对应的逻辑块地址之前被读取。
在一些实施例中,该控制逻辑被设置为在确定该第一有效载荷已被加载到该高速缓冲存储器中之前指示该第一提交的完成。
在一些实施例中,该控制逻辑还被设置为在指示完成该第一提交之后并且响应于来自该主机的存储器读取请求以读取该有效载荷中的需求数据;确定该需求数据是否已加载在该高速缓冲存储器中;和响应于该需求数据已经被加载到该高速缓冲存储器中,将该需求数据从该高速缓冲存储器返回。
在一些实施例中,该控制逻辑还被设置为在返回该需求数据之后,至少将该第一有效载荷的未读部分传送到该第一高速缓冲存储器线中的对应高速缓冲存储器线。
在一些实施例中,该存储器扩展设备还包括提供该第一相干目的地存储空间的本地存储器。
在一些实施例中,该第一高速缓冲存储器线对应于主机存储器中的地址范围,并且该第一有效载荷的剩余部分经由该接口电路被传送到该主机。
在一些实施例中,该控制逻辑还被设置为:从该主机接收第二提交,该第二提交包括第二读取命令并指定该NVM子系统中的第二有效载荷;响应于该第二提交具有第二优先级,将该第二有效载荷加载到与该第二有效载荷相对应的第二相干目的地存储空间中,并且在该第二有效载荷已经加载到该第二相干目标地存储器空间中之后指示该第二提交的完成。
在一些实施例中,该控制逻辑被设置为在将该第一有效载荷加载到该高速缓冲存储器中之前发出第一NVM读取命令以从该NVM子系统读取该第一有效载荷,并且在将该第二有效载荷加载到该第二相干目的地存储空间中之前发出第二NVM读取命令以从该NVM子系统读取该第二有效载荷。在一些实施例中,该第一NVM读取命令被写入与该NVM子系统相关联的第一命令队列中,该第二NVM读取命令被写入与该NVM子系统相关联的第二命令队列中,该第一命令队列具有比该第二命令队列更高的优先级。
在一些实施例中,该存储器扩展设备还包括控制器存储器缓冲(CMB),该CMB包括可由该主机访问的提交队列,该提交队列至少包括用于对该第一优先级的提交进行排队的第一提交队列和用于对所二优先级的提交排队的第二提交队列,其中该第一提交在该第一提交队列中排队,该第二提交在该第二提交队列中排队。
在一些实施例中,该存储器扩展设备还包括耦合到该控制逻辑的设备存储器,其中CMB占据该设备存储器中的指定存储器位置。在一些实施例中,该高速缓冲存储器包括与该CMB同步的CMB高速缓冲存储器,并且包括分别对应于CMB中的提交队列的镜像提交队列,并且控制逻辑还被设置为将该CMB高速缓冲存储器与该CMB同步。
在一些实施例中,该控制逻辑被设置为将该CMB存储器空间的所选部分保持在共享状态,从而响应于该主机修改该所选部分的高速缓冲存储器线而导致与该高速缓冲存储器线相对应的共享状态无效,该控制逻辑被设置为重新获取该高速缓冲存储器线以恢复该共享状态。
在一些实施例中,该控制逻辑还包括相干NVM主机控制器接口规范(cNVMe)控制器,该cNVMe控制器被设置为响应于该高速缓冲存储器中的第一镜像提交队列中的第一提交的值被写入该寄存器而读取该高速缓冲存储器中的该第一镜像提交队列中的该第一提交,并且控制该第一有效载荷向该高速缓冲存储器的传输。在一些实施例中,该控制逻辑被设置为通过写入该CMB的完成队列并更新与该完成队列相关联的指针来指示提交的完成。
在一些实施例中,该控制逻辑还被设置为通过读取已由该主机写入该一个或多个提交队列的该第二提交队列中的该第二提交来从该主机接收该第二提交。在一些实施例中,该控制逻辑还被设置为响应于该第一提交已经被该主机写入到该第一提交队列中,确定该第一提交具有该第一优先级,并且响应于该第二提交已经被该主机写入该第二提交队列中,确定该第二提交具有该第二优先级。
在一些实施例中,该存储器扩展设备还包括耦合到该控制逻辑的本地存储器,其中该第一相干目的地存储空间和该第二相干目的地存储空间中的一个或两个由该本地存储器提供。
在一些实施例中,响应于该第二提交具有该第二优先级并且包括一个或多个提示,该控制逻辑被设置为使用该一个或多个提示来准备该第二高速缓冲存储器线。在一些实施例中,响应于该第二提交具有该第二优先级并且包括一个或多个提示,该控制逻辑被设置为使用该一个或多个提示将该第二有效载荷写入该第二高速缓冲存储器线。
在一些实施例中,该控制逻辑还被设置为从该主机接收第三提交,该第三提交包括第三读取命令并指定第三有效载荷;响应于该第三提交具有低于该第二优先级的第三优先级,基于预定标准确定是否获取该第三有效载荷;和响应于确定要获取第三有效载荷,获取该第三有效载荷,并将该第三有效载荷加载到对中央处理器(CPU)隐藏的专用存储器空间中。在一些实施例中,该控制逻辑还被设置为无论基于该预定标准确定是否要获取该第三有效载荷,指示该第三提交的完成。
在一些实施例中,该专用存储器空间由该本地存储器提供,并且与该第一相干目的地存储空间和该第二相干目的地存储空间不同。
在一些实施例中,该控制逻辑被设置为在将该第一有效载荷加载到该高速缓冲存储器之前,确定该第一有效载荷是否已被预先获取并存储在该专用存储器空间中;和/或在将该第二有效载荷加载到第二高速缓冲存储器线之前,确定该第二有效载荷是否已被预先获取并存储在该专用存储器空间中。在一些实施例中,该控制逻辑被设置为响应于确定该第一有效载荷已经被预先获取并存储在该专用存储器空间中,将该第一有效载荷从该专用存储器空间复制到该高速缓冲存储器;和/或响应于确定该第二有效载荷已经被预先获取并存储在该专用存储器空间中,将该第二有效载荷从该专用存储空间复制到该第二相干目的地存储空间。在一些实施例中,该控制逻辑还被设置为响应于确定该第一有效载荷尚未被预先获取并存储在该专用存储器空间中,从该NVM子系统读取该第一有效载荷;和/或响应于确定该第二有效载荷尚未被预先获取并存储在该专用存储器空间中,从该NVM子系统读取该第二有效载荷。
在一些实施例中,该本地存储器包括双倍数据速率(DDR)存储器,和动态随机存取存储器(DRAM)。
在一些实施例中,该存储器扩展设备还包括可由该主机访问的CMB,其中该CMB包括提交队列,并且该控制逻辑被设置为响应于该第一提交已经被写入用于对该第一优先级的提交进行排队的第一提交队列,确定该第一提交具有该第一优先权;响应于该第二提交已被写入用于对该第二优先级的提交进行排队的第二提交队列,确定该第二提交具有该第二优先级;和响应于该第三提交已被写入用于对该第三优先级的提交进行排队的第三提交队列,确定该第三提交具有该第三优先级。
在一些实施例中,存储器扩展设备该控制逻辑包括集成电路芯片上的逻辑电路。在一些实施例中,该高速缓冲存储器包括该集成电路芯片上的静态随机存取存储器(SRAM)。在一些实施例中,该高速缓冲存储器包括耦合到该集成电路芯片的高带宽存储器(HBM)。
在一些实施例中,一种可在计算机系统中操作的存储器扩展设备,该计算机系统包括主机和专用总线,该存储器扩展设备包括:
接口电路,被设置为基于预定义协议经由该专用总线与该主机通信;
NVM子系统;
提供该主机可访问的相干存储空间的本地存储器;
高速缓冲存储器;和
耦合到该接口电路、该高速缓冲存储器和该NVM子系统的控制逻辑,其中该控制逻辑被设置为:
从该主机接收提交,该提交包括读取命令并指定该NVM子系统中的有效载荷和该有效载荷中的需求数据;
请求与该有效载荷相对应的一组高速缓冲存储器线的所有权,该一组高速缓冲存储器线对应于该相干存储器空间中的一组高速缓冲存储器线;
在获取该一组高速缓冲存储器线的所有权之后指示该提交的完成;
发出一组NVM读取命令以从该NVM子系统读取该有效载荷,该一组NVM读取命令被写入与该NVM子系统相关联的命令队列中,其中在该有效载荷中的其他逻辑块之前从该NVM子系统读取与该需求数据相对应的一个或多个逻辑块;
将该有效载荷加载到该高速缓冲存储器;
从该主机接收读取该有效载荷中的该需求数据的请求;和
在确定该需求数据已经被加载到该高速缓冲存储器中之后,从该高速缓冲存储器返回该需求数据。
在一些实施例中,该控制逻辑被设置为在确定该需求数据已经被加载到该高速缓冲存储器中之前指示该提交的完成。
在一些实施例中,一种方法,应用于经由专用总线耦合到主机的存储器扩展设备,该存储器扩展设备包括接口电路、NVM子系统、提供该主机可访问的相干存储空间的本地存储器和高速缓冲存储器,该方法包括:
从该主机接收提交,该提交包括读取命令并指定该NVM子系统中的有效载荷和该有效载荷中的需求数据;
请求与该有效载荷相对应的一组高速缓冲存储器线的所有权,该一组高速缓冲存储器线对应于该相干存储器空间中的一组高速缓冲存储器线;
在获取该一组高速缓冲存储器线的所有权之后指示该提交的完成;
发出一组NVM读取命令以从该NVM子系统读取该有效载荷,该一组NVM读取命令被写入与该NVM子系统相关联的命令队列中,其中在该有效载荷中的其他逻辑块之前从该NVM子系统读取与该需求数据相对应的一个或多个逻辑块;
将该有效载荷加载到该高速缓冲存储器;
从该主机接收读取该有效载荷中的该需求数据的请求;和
在确定该需求数据已经被加载到该高速缓冲存储器中之后,从该高速缓冲存储器返回该需求数据。
在一些实施例中,在确定该需求数据已经被加载到该高速缓冲存储器中之前指示该提交的完成。
因此,在一些实施例中,CXL存储器扩展设备通过使用NVMe基线通信层来优化SDM通信层,以最小化软件开发/移植工作,同时提供用于SDM虚拟存储器管理的新机制,包括SDM预测算法、SDM数据迁移和相干高速缓冲存储器管理,以及SDM服务质量(QoS)。在一些实施例中,CXL存储器扩展设备还优化数据管线以最小化关键延迟,从而改善页面故障恢复时间和改善NVM读取延迟。
在一些实施例中,CXL存储器扩展设备使用CXL相干性协议来实现相干性混合数据传输,并支持主机高速缓冲存储器和设备高速缓冲存储器之间的直接高速缓冲存储器到高速缓冲存储器的传输。高速缓冲存储器由SDM软件管理,以改善SDM软件的预测行为。可选设备DRAM显示为主机处理器(或CPU)可访问的附加相干主机存储器。在一些实施例中,CXL存储器还包括控制逻辑,该控制逻辑可设置为控制计算机系统中各种存储器资源的数据传输。
在一些实施例中,该存储器扩展设备支持NVMe扩展,例如中央NVMe快速(cNVMex)扩展,该扩展是NVMe协议的专有扩展,将相干主机存储器与NVM预先获取提示紧密耦合,以允许SDM跨内存层影响数据和高速缓冲存储器管理,减少预先获取加载延迟,并提高SDM预测算法的质量和有效性。同时,还为相干内存传输提供QoS,其中SDM软件指示数据优先级,码分多址(cDMA)引擎优化高速缓冲存储器线访问模式。因此,低优先级数据被保留在设备存储器层中,中等优先级数据被传输到主机存储器或设备DRAM而不会使CPU数据/相干性结构过载,高优先级需求数据被传输至高速缓冲存储器,从而提高了性能。
附图说明
本实施例在附图的附图中以示例而非限制的方式示出,其中相似的附图标记指示相似的元件,并且其中:
图1是根据一些实施例的包括经由专用链路耦合到主机计算机系统的软件定义的存储器扩展设备(例如,CXL卡)的计算机系统的框图;
图2示出了根据一些实施例的包括CXL存储器扩展卡的计算机系统的存储器映射;
图3A是根据一些实施例的软件定义的存储器扩展设备的示意图;
图3B是示出根据一些实施例的与软件定义的存储器扩展设备相关联的相干互连结构的示意图;
图4示出了根据一些实施例的计算机系统中的存储器空间;
图5示出了根据一些实施例的由存储器扩展设备的本地存储器提供的存储器空间;
图6示出根据一些实施例的来自主机的提交;
图7示出了根据一些实施例的CMB、CMB高速缓冲存储器、NVM命令和完成队列;
图8A-8B和图9示出了根据一些实施例的存储器扩展设备的各种操作;
图10A-10D是根据一些实施例的由存储器扩展设备执行的服务质量(QoS)处理的流程图;
图11A-11B是根据一些实施例的具有减少的请求获取延迟的页面故障恢复过程的流程图;
图12示出了根据一些实施例的使用设备高速缓冲存储器来服务从非易失性存储器(NVM)传送的按需数据和使用设备DRAM来存储低优先级数据;
图13示出了经由PCIe总线耦合到计算机系统的常规存储器扩展设备的操作;
图14是示出了根据一些实施例的存储器扩展设备的一些优点的时序图;
图15示出了根据一些实施例的存储器扩展设备的操作;
图16示出了根据一些实施例的计算机系统的存储器映射;
图17示出了根据一些实施例的存储器扩展设备相关延迟的操作;
图18A-18B是根据一些实施例的具有减少的请求获取延迟的页面故障恢复过程的流程图;
图19示出了根据一些实施例的使用设备高速缓冲存储器来服务从非易失性存储器(NVM)传送的按需数据以及将低优先级数据传送到主机存储器;和
图20示出了经由PCIe总线耦合到计算机系统的常规存储器扩展设备的操作。
具体实施方式
图1是根据一些实施例的计算机系统101的框图,该计算机系统101包括主机110和经由专用总线105(例如CXL总线)耦合到该主机110的相干存储器扩展设备(CMX设备)100,CPU 112经由该专用总线105访问该CMX设备100。如图所示,该主机110包括一个或多个CPU112(其包括一个或者多个CPU高速缓冲存储器113),并且还可以包括经由系统总线115耦合到该CPU 112的主机存储器116,例如DDR存储器和DRAM。主该机110还可以包括经由例如一个或多个外围组件互连快速或PCIe链路117耦合到该CPU 112的存储设备118(例如,串行高级技术附件(SATA)驱动器和/或NVMe SSD)。
如图1所示,该CMX设备100包括相干存储器扩展控制器(CMXC)120(其包括高速缓冲存储器或设备高速缓冲存储器127),并且可以进一步包括或访问本地存储器130(例如,DDR DRAM)和/或NVM 140(例如,NAND闪存)。图1还示出该CMXC 120包括总线接口122和控制逻辑(例如,逻辑电路)125,并且保持该计算机系统101中的该设备高速缓冲存储器127和其他高速缓冲存储器(例如CPU高速缓冲存储器113)的相干性以及映射到该本地存储器130的至少一部分的存储器空间的相干性。此处“相干性”或“相干”可能意味着共享资源数据的相干性,这些共享资源数据可能最终存储在不同的高速缓冲存储器中。该CMXC 120还可以包括被设置为在该控制逻辑125和该本地存储器130之间接口的存储器控制器(例如,DDR存储器控制器)和/或被设置为该控制逻辑125与该NVM 140之间接口的NVM介质控制器128。
在一些实施例中,该CMXC 120可以在专用集成电路(ASIC)芯片中实现,并且该设备高速缓冲存储器127包括ASIC芯片上的SRAM。在一些实施例中,该CMX设备100还包括具有连接器108的电路板150(例如,印刷电路板),该连接器108包括可以插入该计算机系统101的扩展槽(未示出)中的边缘连接,以在该总线接口122与该专用总线105之间提供电连接。在一些实施例中,该CMXC 120、该NVM 140和该DRAM安装在该电路板150上,并且经由该电路板150中和/或该电路板150上的导线彼此耦合并耦合到该连接器108。
图2示出了根据一些实施例的SDM映射200。如图2所示,在该CPU 112上运行的SDM软件201将该计算机系统101中的各种存储器和/或存储资源汇集在一起,并将它们呈现为可由该CPU 112上的统一存储器访问(UMA)应用程序访问的虚拟存储器空间210。该虚拟存储器空间210的一部分通过该主机存储器116被映射到与SATA关联的物理存储器空间222和/或与NVME SSD关联的物理存储空间224,而该虚拟存储器空间210的另一部分通过该本地存储器130(和/或该高速缓冲存储器127)被映射到和该NVM 140关联的物理内存空间230。例如,该NVM 140可以对应于由该SDM软件201管理的2TB或4TB虚拟存储器空间,并且数据可以在该控制逻辑125的控制下在该NVM 140和该本地存储器130或该主机存储器116之间移动,如下所述。
图3A是根据一些实施例的CMXC 120的示意图。如图所示,在一些实施例中,该专用总线105是CXL总线305,并且该CMX设备100被实现为要插入该计算机系统101的CXL扩展槽中的CXL存储器扩展设备或CXL卡。计算机快速链接TM(CXLTM)是业界支持的用于处理器、内存扩展和加速器的高速缓冲存储器相干互连。CXL技术提供了链路级数据传输机制,同时保持了中央处理单元(CPU)内存空间和连接设备上的内存之间的内存相干性,这允许资源共享以实现更高的性能、更低的软件堆栈复杂性和更低的总体系统成本。这允许用户只关注目标工作载荷,而不是加速器中的冗余内存管理硬件。该CXL总线305是基于该CXL协议的,在CPU和设备之间或者CPU和存储器之间的高速互连或链路,其中该CXL协议包括可以同时使用的子协议CXL.io、CXL.cache和CXL.memory。其中该CXL.io协议与第5代高速串行计算机扩展总线标准(PCIe)向下兼容。CXL高速缓冲存储器将主机CPU(例如,该CPU 112)连接到外部处理设备(例如该CXL卡100和/或其他类型的加速器、专用存储处理器等)中的高速缓冲存储器(例如,按需读取高速缓冲存储器327B)。该CXL高速缓冲存储器还可用于将计算存储设备链接到主机服务器。该CXL.memory协议使主机CPU(例如该CPU 112)能够访问该CXL卡100上的存储器资源。
如图3A所示,在一些实施例中,该总线接口122被设置为与该CXL总线305相连,并且包括物理层304,例如,CXL物理层和CXL协议层306,其被配置为经由该CXL协议经由该CXL总线305与该主机110通信,并且包括分别对应于一组子协议的一组接口,例如CXL规范2.1评测版和CXL 1.1勘误表中规定的CXL.cache和CXL.memory协议,可访问https://www.computeexpresslink.org/,并通过引用并入本文。
如图3A所示,该CMXC 120中的该控制逻辑125包括CXL桥310、设备相干性引擎(DCOH)312、偏置表314、监听单元316、一个或多个高速缓冲存储器控制器318、包括一个或多个直接存储器访问(DMA)引擎的DMA通道320以及相干NVMe(cNVMe)控制器322。还如图3A所示,该高速缓冲存储器127可以包括CMB高速缓冲存储器327A和该按需读取高速缓冲存储器327B,该本地存储器130可以包括一个或多个DRAM模块或单元,例如DRAM模块130A、130B,并且该NVM介质控制器128包括或耦合到相关联的NVM命令队列328。在一些实施例中,该NVM介质控制器128、其相关联的NVM命令队列328和NVM 140的组合在本文中有时被称为NVM子系统340。
在一些实施例中,如图3B所示,该CXL桥310、该DCOH312、该偏置表314、该监听单元316和该高速缓冲存储器控制器318嵌入该计算机系统101的相干性互连结构(CIF)300中,以便保持该高速缓冲存储器127和该本地存储器130的至少一部分以及诸如CPU中的一个或多个处理器核112-1、112-2、…、112-n的高速缓冲存储器113-1、113-2、……、113-n和该系统存储器116的其他高速缓冲存储器和存储器的相干性。
在一些实施例中,该CXL桥310包括请求和缓冲代理,其被设置为处理CXL信用管理并执行该CXL协议层306的低延迟CXL协议和该CIF 300的高速缓冲存储器相干性协议之间的转换。在一些实施例中,该DCOH 312被设置为向该CIF 300提供相干性点和串行化点,使得对于该主机110对该CMX设备100上的存储器资源的任何给定访问,该DCOH 112被设置为解析该CIF 300上的每个高速缓冲存储器代理的状态并保持存储器的相干视图。在一些实施例中,如果多个代理试图访问同一高速缓冲存储器线,则该DCOH 312被设置为串行化访问,以确保一次只允许一次访问,并且为每次访问保持相干性。
在一些实施例中,该一个或多个处理器核心112-1、112-2、…、112-n可以通过分页(例如,使页面移入和移出存储器)来访问物理存储器,其中页面是由处理器从虚拟地址映射到物理地址的存储器的最小分区,并且可以包括多个高速缓冲存储器线。在一些实施例中,该偏置表314被设置为维护跟踪该主机110是否拥有页面的一个或多个高速缓冲存储器线的页面级粒度跟踪器。在一些实施例中,该DCOH 312还被设置为监听该CIF 300中的高速缓冲存储器代理以查找其尚未获取的高速缓冲存储器线,并且该监听单元316包括监听过滤器,该监听过滤器被设置为跟踪哪些高速缓冲存储器代理已获取相干存储器空间中的哪些高速缓冲存储器线。该监听单元316可以包括被设置为跟踪哪些高速缓冲存储器线被该主机110拥有的远程窥探过滤器,以及被设置为追踪哪些高速缓冲存储器线由该CMX设备100上的高速缓冲存储器代理(例如,经由该高速缓冲存储器控制器318的该高速缓冲存储器存储器127)拥有的本地窥探过滤器。
在一些实施例中,该CMX设备100允许该主机110访问其存储资源(例如,该NVM140),并使用例如NVMe协议将其呈现为存储器,以简化SDM软件开发人员的采用。NVMe是允许主机软件与NVM子系统通信的接口。当前的NVMe规范版本(即NVMe 1.4a规范)定义了主机软件如何通过PCI 总线与NVM通信,可在https://nvmexpress.org/developers/nvme-specification/,并通过引用并入本文。除了该NVMe协议之外,该CMX设备100还提供额外的相干性机制,并允许该SDM软件在主机NVMe提交中包括额外的扩展(或提示)。在一些实施例中,该SDM软件201通过将提交写入到该CMX设备100上的CMB中的一个或多个提交队列中,来发起向该NVM 140的数据传输和从该NVM 140传出的数据传输,该CMX设备100通过将完成写入到CMB中的一个或多个完成队列中来指示提交的完成。
在一些实施例中,该cNVMe控制器322被设置为通过NVMe排队机制在该CMXC 120和该SDM软件201之间提供接口,从提交队列接收NVMe命令并返回写入完成队列的那些NVMe命令的完成,以及构造NVM命令并将其发送到该NVM子系统340,并通过与该NVM子系统340相关联的一个或多个完成队列从该NVM子系统340接收返回的完成状态。该cNVMe控制器322还被设置为使用该DMA信道320促进该NVM子系统340与该设备高速缓冲存储器127和/或该本地存储器130之间的数据移动。
在一些实施例中,该CMXC 120的一部分或全部包括专用ASIC管芯或芯片,并且该控制逻辑125的一部分或者全部可以被实现为芯片上的逻辑电路。在一些实施例中,该CMB高速缓冲存储器127A和/或该按需读取高速缓冲存储器327B包括SRAM。在一些实施例中,该CMB高速缓冲存储器127A和/或该按需读取高速缓冲存储器327B包括耦合到ASIC芯片的HBM。
图4示出了根据一些实施例的该计算机系统101中的各种存储器空间。如图所示,该存储器空间包括由该主机存储器116提供的相干主机存储器空间410、由该本地存储器130提供的相干设备存储器空间420以及同样由该本地存储器120提供的专用存储器空间450。该相干主机存储器空间410和该相干设备存储器空间420位于该主机110可访问的相干存储器空间400中。在一些实施例中,包括提交队列432和完成队列434的CMB占据该相干设备存储器空间420中的CMB空间430。在一些实施例中,该相干存储器空间400包括高速缓冲存储器线,例如高速缓冲存储器线421和高速缓冲存储器线422,用于存储需求和预测数据以及其他应用数据。在一些实施例中,专用存储器空间450对该主机110是隐藏的,使得它可由该控制逻辑125访问,但不可由该CPU 112访问。该专用存储器空间450可用于存储推测读取数据,如下面进一步讨论的。
图5示出了根据一些实施例的与该本地存储器130相关联并且可由该控制逻辑125访问的存储器空间。如图所示,该本地存储器130提供该相干设备存储器空间420和该专用存储器空间450。图5还将该CMB空间430示出为包括与多个提交队列相对应的空间,例如,一个或多个需求队列531、一个或多个预测队列532和一个或多个推测队列533以及一个或多个完成队列560。该CMB空间430还包括对应于一个或多个提交或完成队列中的每一个相关联的头指针和尾指针的空间,以及与该一个或多个完成队列560中的一个相关联的头指针560H和尾指针560T。在一些实施例中,更新与队列相关联的头部指针以指示队列中的新可用空间,并且更新与队列关联的尾部指针以指示新项目被写入队列。
图6示出了根据一些实施例的来自该主机110的提交600。如图所示,在一些实施例中,该提交600包括在多个字段(包括标准字段610和定制(或供应商指定)字段620)中组织的特定大小(例如,64字节)的一组数据位。在一些实施例中,该标准字段610包括用于命令611的命令字段(例如,一个NVMe读取或写入命令),以及具体说明有效载荷规范613的一个或多个字段,其指定与该命令611相关联的该NVM子系统340中的有效载荷630,还有具体说明存储器位置规范615的一个或多个字段,该字段指定有效载荷将被传送到或来自的相干存储器空间中的高速缓冲存储器线。在一些实施例中,该可定制字段620包括用于传送一个或多个提示的一个或多个字段620,该提示可用于在数据传输期间提高性能。在一些实施例中,该有效载荷630对应于该NVM 130中相应逻辑块地址(LBA),例如LBA-1、LBA-2、…、LBA-n处的多个逻辑块,并且可以由起始逻辑块(例如LBA-1)的LBA和起始逻辑块处的逻辑块数量n来指定。
在一些实施例中,来自该主机110的提交是针对按需读取(例如,响应于在该主机110处发生的页面错误而进行的NVM读取),并且可以指定多个逻辑块中的哪个块包括请求数据631(例如,该主机110解决页面错误所需的数据)。在一些实施例中,LBA的大小可以是例如至少512字节,并且起始LBA的最低有效9位通常为零,因此被该NVM子系统340忽略。这些最低有效位可用于指定包含该需求数据631的逻辑块,使得从该NVM子系统340读取逻辑块优先于从该NVM子系统340读取其他逻辑块。例如,如果有效载荷包括四个逻辑块,则使用起始LBA的两个最低有效位:LBA[1:0]=00可以用于指示第一逻辑块具有较高优先级并且将首先被传送,然后是具有较低优先级的其他逻辑块;LBA[1:0]=01可用于指示第二逻辑块具有更高的优先级并且将首先被传送,然后是具有更低优先级的其他逻辑块;LBA[1:0]=10可用于指示第三逻辑块具有更高的优先级并且将首先被传送,然后是具有更低优先级的其他逻辑块;并且LBA[1:0]=11可以用于指示第四逻辑块具有更高的优先级并且将首先被传送,然后是具有更低优先级的其他逻辑块。
除了按需读取(例如,在主机上解决页面错误的操作),该CMX设备100还便于预测读取(例如,基于预测时间帧中可能需要有效载荷的预测,在该相干主机存储器空间410和该相干设备存储器空间420中加载有效载荷的操作)和推测读取(例如,基于推测在推测时间帧中可能需要有效载荷的推测,在该专用存储器空间450中加载有效载荷的操作)。在一些实施例中,该控制逻辑控制逻辑125被设置为基于提交是用于按需读取、预测读取还是推测读取,以特定优先级处理来自该主机110的提交。
在一些实施例中,如图7所示,该CMB高速缓冲存储器327A与该CMB空间430同步,并且包括一个或多个同步(或镜像)提交队列731、732、733,分别对应于CMB中的一个或多个提交队列,例如,该一个或多个需求队列531、该一个或多个预测队列532和该一个或多个推测队列533。在一些实施例中,该CMB高速缓冲存储器327A还包括同步的头/尾指针,例如分别对应于CMB中的头/尾部指针531H/531T、532H/532T、533H/533T的头/尾端指针1231H/1231T、1232H/1232T、1233H/1233T。在一些实施例中,该CMB高速缓冲存储器327A还包括一个或多个同步(或镜像)完成队列760,以及它们各自的头/尾指针760H/760T,分别对应于CMB中的一个或多个完成队列560和它们各自的头部/尾指针560H/560T。
在一些实施例中,该高速缓冲存储器控制器318被设置为将CMB存储器空间的选定部分保持在共享状态。如果该CPU 112修改了该CMB存储器空间的选定部分的任何高速缓冲存储器线,则该高速缓冲存储器控制器318中的共享状态无效,并且该高速缓冲存储器控制器318将再次以共享状态重新获取高速缓冲存储器线。如果重新获取的高速缓冲存储器线中的数据与其先前的值发生了变化,则表明CPU已在更新提交条目或头或尾指针的过程中写入高速缓冲存储器线。在一些实施例中,该cNVMe控制器322包括分别对应于CMB中的头/尾指针的寄存器322R,并且该高速缓冲存储器控制器318还被设置为在新提交被写入CMB或被镜像到该CMB高速缓冲存储器327A中时通过例如写入该cNVMe控制器322的对应该寄存器322R来警告该cNVMe控制器322。作为响应,该cNVMe控制器322将从该CMB高速缓冲存储器327A读取NVMe提交,并通过例如向该NVM子系统340发出NVM读或写命令,并根据NVMe提交指示该DMA通道320在不同的存储器和存储资源之间移动数据,开始向该NVM 140或从该NVM140传输数据。在一些实施例中,该高速缓冲存储器控制器318还被设置为获取由该cNVMe控制器322请求的高速缓冲存储器线的所有权,并控制用于缓冲按需读取数据的该按需读取高速缓冲存储器327B,如上文和下文所述。
在一些实施例中,如图7所示,该NVM队列328包括一个或多个NVM命令队列,例如NVM命令排队751、752、753,分别对应于CMB中的一个或多个提交队列,例如该一个或多个需求队列531、该一个或多个预测队列532和该一个或多个推测队列533,或者对应于该CMB高速缓冲存储器327A中的一个或多个镜像提交队列。在一些实施例中,在该NVM命令队列751中排队的NVM命令由该NVM子系统340以比在该NVM命令队列752中排队的NVM命令更高的优先级来处理,并且在该NVM队列752内排队的NVM命令由NVM子系统340处理,以比在该NVM命令队列753内排队的NVM命令更高优先级来处理。因此,该cNVMe控制器322可以通过将与按需读取相关联的NVM命令写入该NVM命令队列751、将与预测读取相关的NVM命令写入NVM命令队列752,以及与推测读取相关的NVM命令写入NVM命令队列753。在一些实施例中,该NVM队列328还包括一个或多个完成队列780,并且该NVM子系统340可以通过将完成写入完成队列780之一来指示NVM读或写命令的完成。如图所示,该NVM队列328还包括分别与NVM队列751、752、753、780相关联的头/尾指针751H/751T、752H/752T、753H/775T、780H/780T。
在一些实施例中,响应于按需读取和指定请求数据的提交,该cNVMe控制器322还被设置为将请求数据从该NVM子系统340传输到该按需读取高速缓冲存储器327B的优先级高于其余有效载荷。例如,该cNVMe控制器322可以通过在将与有效载荷数据中的其他逻辑块相对应的NVM读取命令写入该NVM命令队列751之前,将与包括需求数据的逻辑块相对的NVM读取命令写入该NVM命令队列751中来实现。
在一些实施例中,该控制逻辑125被设置为根据提交是用于按需读取、预测读取还是推测读取来不同地处理提交。如图8A所示,响应于提交为按需读取的第一提交801,该控制逻辑125被设置为将该第一提交801中指定的有效载荷811从该NVM 140传送到该按需读取高速缓冲存储器327B,并且响应于来自该CPU 112的请求810返回该第一提交801中所指定的请求数据812。该请求810例如可以是使用CXL.memory协议的存储器读取命令的形式。在一些实施例中,该控制逻辑125还被设置为将该有效载荷811的至少未读部分813传送到该设备存储器420。与该有效载荷811的该至少部分813相关的后续读/写操作814可以经由CXL.memory协议在该CPU 112和该设备存储器420之间进行。
在一些实施例中,如图8B所示,响应于提交为预测读取的第二提交802,该控制逻辑125被设置为将该第二提交802中指定的有效载荷821从该NVM 140传送到该设备存储器420。与该有效载荷821相关的后续读/写操作823可以经由CXL.memory协议在该CPU 112和该设备存储器420之间进行。
在一些实施例中,如图5所示,与该本地存储器130相关联的物理存储器空间500包括可由该CPU 112访问的该相干存储器空间420和对该CPU 112隐藏的该专用存储器空间450。如图9所示,可以认为该本地存储器130包括与该相干存储器空间420相对应的存储器部分(或设备存储器)910和与该专用存储器空间450相对应的存储部分(或专用存储器)920。在一些实施例中,响应于提交为推测读取的第三提交903,该控制逻辑125被设置为将提交903中指定的有效载荷931从该NVM 140传送到与该专用存储器空间450相对应的存储部分920。随后,当在按需读取的提交中指定了部分或全部有效载荷932时,将部分或全部该有效载荷932从与该专用存储器空间450相对应的存储部分920传送到该按需读取高速缓冲存储器327B。当有效载荷933的一部分或全部在用于预测读取的提交中被指定时,该有效载荷933的全部的一部分被从与该专用存储器空间450相对应的存储部分920传送到与该相干存储器空间420相对应的存储器部分910。
图10A是根据一些实施例的响应于该主机110提交有效载荷而由该控制逻辑125执行的服务质量(QoS)过程1000的流程图。如图所示,该QoS过程1000包括接收(1001)包括读取命令(例如,读取命令611)和指定有效载荷(例如,有效载荷630)的提交(例如,提交600)。在一些实施例中,该接收(1001)提交包括该cNVMe控制器322读取(1002)提交(例如,从该CMB高速缓冲存储器327A)以确定命令、有效载荷规范(例如,起始逻辑块地址和逻辑块的数量)以及提交中包括的提示。该cNVMe控制器322然后根据提交的优先级启动至少两个不同过程中的一个。在一些实施例中,基于提交已写入哪个提交队列来确定提交的优先级。
例如,如果提交被确定为具有第一优先级(例如,提交是为了解决主机110处的页面错误),则由该控制逻辑125执行按需读取过程1010,并且如果提交被决定为具有第二优先级(例如提交是为了预测性地从存储中获取数据),预测读取过程1020由该控制逻辑125执行。在一些实施例中,该CMX设备100还响应于提交具有第三优先级(例如,提交是基于在未来的预定推测时间段中可能需要数据的推测来预先获取数据)而促进推测读取过程1030。在一些实施例中,基于提交是在需求队列531、预测队列532还是推测队列533中排队,确定提交是第一优先级、第二优先级或第三优先级。
图10B是根据一些实施例的按需读取过程1010的流程图。如图所示,该过程1010包括请求(1012)与提交(例如,提交630)中指定的有效载荷630相对应的未决高速缓冲存储器线(例如,该高速缓冲存储器线421)的所有权。在一些实施例中,该cNVMe控制器322被设置为在读取提交之后确定未决高速缓冲存储器线,并且该高速缓冲存储器控制器318被设置为使用该相干互连结构300的高速缓冲存储器相干性协议从归属代理350请求未决高速缓冲存储器线的所有权。如图10B所示,在获取未决高速缓冲存储器线的所有权之后,该过程1010进行到通过例如写入该CMB空间430的完成队列560来指示(1013)提交完成的操作。该过程1010还包括打开(1011)跟踪器条目以跟踪未决的高速缓冲存储器线,以及将有效载荷加载(1014)到设备高速缓冲存储器中等操作。在一些实施例中,该高速缓冲存储器控制器318包括并管理分别与未决高速缓冲存储器线相关联的跟踪器条目。在一些实施例中,有效载荷中的每个逻辑块对应于一个或多个未决高速缓冲存储器线。在一些实施例中,未决高速缓冲存储器线对应于该主机110可访问的相干目的地存储空间中的高速缓冲存储器线(例如,该高速缓冲存储器线421),其可以是由该本地存储器130提供的该相干存储器空间420,或者,当该本地存储器130不可用或不提供时,对应于该主机存储器116的该相干存储空间410。
在一些实施例中,如图10B所示,将该有效载荷630加载(1014)到该高速缓冲存储器(或设备高速缓冲存储器)127(例如,该按需读取高速缓冲存储器327B)包括,可选地,确定有效载荷是否已被预先获取并存储在与该专用存储器空间450相对应的存储部分920中,将数据从与该专用存储器空间450相对应的存储部分920复制到该按需读取高速缓冲存储器327B。否则,或者如果没有做出这样的确定,则加载(1014)该有效载荷620的操作包括从该NVM子系统340读取该有效载荷620的操作和将该有效载荷620写入该按需读取高速缓冲存储器327的操作。
如图10B所示,该过程1010还包括在该有效载荷620的相应部分被加载到该设备高速缓冲存储器(例如,该按需读取高速缓冲存储器327B)中之后关闭(1018)跟踪器条目的操作。在一些实施例中,从该NVM子系统340逐逻辑块读取该有效载荷620,并通过高速缓冲存储器线将其写入按需读取高速缓冲存储器327B中。当对应于未决高速缓冲存储器线的部分载荷一次一个高速缓冲存储器线加载到该按需读取高速缓冲存储器327B中时,该高速缓冲存储器控制器318可以逐个关闭跟踪器条目。该高速缓冲存储器控制器318可以一次一组地关闭跟踪器条目,使得该高速缓冲存储器控制器318将在从该NVM子系统340读取逻辑块并将其加载到按该需读取高速缓冲存储器327B中之后,关闭与对应于逻辑块的一个或多个未决高速缓冲存储器线相关联的一个或者多个磁道条目。
如图10B所示,指示(1012)提交完成的操作可以触发CPU发送对至少需求数据的请求,该请求可以在该需求数据被加载到该按需读取高速缓冲存储器327B之前发送,因为指示(1012)提交结完成的操作通常发生在该需求数据加载到该按需读取高速缓冲存储器327B之前。CPU对至少需求数据的请求继而将触发另一个过程1019,在该过程中,该控制逻辑125响应于从该主机110接收到至少需求数据(其可以对应于一个或多个高速缓冲存储器线)的请求,并且将检查与一个或多个高速缓冲存储器线相关联的一个或一个以上跟踪器条目是否已关闭,指示对应于一个或多个高速缓冲存储器线的数据已经被加载到该按需读取高速缓冲存储器327B中。基于一个或多个跟踪器条目是否已被关闭,该控制逻辑125将响应于请求返回与一个或多个高速缓冲存储器线相对应的数据,或者继续检查一个或一个以上跟踪器条目并在一个或以上跟踪器条目关闭后返回数据。
图10C是根据一些实施例的预测读取过程1020的流程图。如图所示,该过程1020包括将有效载荷(例如,有效载荷630)加载(1022)到目的地相干存储器空间(例如,该存储器空间420)中的对应高速缓冲存储器线(例如,该高速缓冲存储器线422)中的操作,如提交中所指定的。在一些实施例中,提交可以包括一个或多个第一提示,该第一提示指定在将有效载荷加载到其中之前应该如何准备相应的高速缓冲存储器线以提高性能。因此,将有效载荷加载(1022)到相应的高速缓冲存储器线中可选地包括使用一个或多个第一提示来准备高速缓冲存储器线的操作。在一些实施例中,该CMX设备100进一步便于推测读取过程,并且当前提交的有效载荷可能已经在先前的推测读取过程中被预先获取。因此,该过程1020可选地包括确定有效载荷的一部分或全部是否已被预先获取并存储在与该专用存储器空间450相对应的存储部分920中,并且响应于肯定的确定结果,将有效载荷的部分或全部从专用存储器复制到目的地相干存储器空间中的高速缓冲存储器线中。否则,或者如果没有做出肯定的确定结果,或者如果仅从专用存储器复制了部分有效载荷,则该过程1020包括从该NVM子系统340读取(1025)部分或全部有效载荷,并将数据写入相应的高速缓冲存储器线的操作。在一些实施例中,提交可以包括关于如何从该NVM子系统340读取有效载荷和/或将有效载荷写入相应的高速缓冲存储器线以提高性能的一个或多个第二提示,和/或使用该一个或多个第二提示来执行将数据写入对应的高速缓冲存储器线。一旦该有效载荷被加载到提交中指定的高速缓冲存储器线中,该过程1020还包括通过例如写入CMB的完成队列560来指示提交的完成。
图10D是示出根据某些实施例的推测读取过程1030的流程图。如图所示,过程1030包括通过例如向CMB的完成队列560中写入来指示(1031)提交的完成,以及基于预定义的标准来确定(1033)是否应当获取有效载荷。在一些实施例中,预定义的标准可以包括,例如,是否可以在预定时间段内从该NVM子系统340获取有效载荷并将其加载到与该专用存储器空间450相对应的存储部分920中,而不会对CMX设备100处未决的更高优先级进程的性能产生显著的负面影响。如果判断结果是肯定的,则该过程1030进行到将有效载荷加载(1035)到与该专用存储器空间450相对应的存储部分920中,这可以包括通过将NVM读取命令放置在用于低优先级操作的NVM命令队列753中并从该NVM子系统340接收有效载荷来从NVM子系统340获取(1037)有效载荷的操作,以及将有效载荷写入(1039)与该专用存储器空间450相对应的存储部分920中的操作。
图11A是根据一些实施例的使用该CMX设备100的具有减少的请求获取延迟的页面故障恢复过程1100A的流程图。如图11A所示,当在该CPU 112上运行的应用程序的线程(例如,线程a)请求(1102)不在该CPU高速缓冲存储器113或该主机存储器116中的数据(例如,高速缓冲存储器线或列地址选通脉冲延迟(CL)为‘z’)时,在该CPU 112处运行的页面处理程序1101发出(1104)页面错误并使线程休眠(1106)。作为响应,该SDM软件201发送(1108)对包含CL‘z’的页面(例如,页面x)的请求,例如,通过将提交写入该CMB空间430中的需求队列531。在接收到请求后,该CMX设备100处的该CMXC 120同时或并行地启动两个子进程,第一子进程将页面x加载到设备高速缓冲存储器中,第二子进程唤醒线程a,在时间段T内,至少部分该第一子进程与至少部分该第二子进程重叠。因此,代替在唤醒线程A之前等待直到页面x被加载到CPU高速缓冲存储器中,唤醒线程A的子进程可以在页面x的至少一部分被从该NVM子系统340加载到该按需读取高速缓冲存储器327B时运行。
第一子过程由该控制逻辑125命令(1110)NVM 140输出页面x开始,该页面x包括所请求的数据或需求数据(例如,高速缓冲存储器线“z”)和其他高速缓冲存储器线。当页面“x”从该NVM 140被传送(1116)到该按需读取高速缓冲存储器327B时,该控制逻辑125通过在该CPU 112处从归属代理350请求(1112)与页面“x’相关联的高速缓冲存储器线(包括CL‘z’)的所有权来执行第二子过程。当从该CPU 112接收到(1113)所有权被授予的确认时,该控制逻辑125通过例如在CMB中的完成队列中写入(1118)提交完成来通知SDM软件201该页面已准备好。作为响应,该SDM软件201通过向页面处理程序1101指示(1119)页面已准备好来关闭循环,从而使该页面处理程序1110唤醒(1120)线程A,然后该线程A向控制逻辑125发送(1122)请求以返回所请求的数据(例如,CL‘z’)。在一些实施例中,使用例如CXL.memory或CXL.cache协议将所请求的数据CL‘z’从设备高速缓冲存储器直接传输(1124)到CPU高速缓冲存储器113。页面x的至少一个未读部分随后可以在后台处理中以低优先级传输(1126)到该设备存储器420。然后,该CPU 112可以通过该CXL总线305访问任何其他高速缓冲存储器线。
图11B是根据一些实施例的使用该CMX设备100的具有进一步减少的请求获取延迟的页面故障恢复过程1100B的流程图。如图11A和图11B所示,该过程1100B类似于过程1100A,除了在该过程1100B中,当向该NVM子系统340发出命令以从该NVM子系统340读取页面时,该控制逻辑125将首先发出(1110A)与包括所请求的高速缓冲存储器线“z”的逻辑块的高优先级LBA相对应的命令,随后是用于其它LBA的命令(1111)。结果,对应于高优先级LBA的逻辑块从该NVM子系统340输出,并在第'x页中的其他逻辑块之前加载(1116)到该按需读取高速缓冲存储器327B中。”
因此,如图12所示,所请求的页面1211(例如,4kB页面填充有效载荷)被移动到相干的该按需读取高速缓冲存储器327B,其用于经由低延迟高速缓冲存储器到高速缓冲存储器(例如,64B高速缓冲存储器线)传输以提供关键需求数据1212,以使该需求数据1212立即可用于该CPU 112,同时降低剩余低优先级数据1221的优先级以防止CPU数据/相关性结构拥塞。同样如图12所示,该页面1211的全部或剩余部分可以被移动到该设备存储器420,并且可以从该按需读取高速缓冲存储器327B提供对需求数据1212(热数据)的存储器访问,而从该设备存储器420以低延迟提供非关键数据1222(温数据),如图12中所示。相比之下,如图13所示,传统的基于NVMe的存储器扩展控制器没有虚拟存储器,也没有设备高速缓冲存储器或存储器。所有数据都从耦合到NVMe控制器的NVM中提取,并在CPU随后可以访问来自主机存储器的数据之前传输到主机存储器,从而导致需求数据和CPU数据/相干性结构拥塞的延迟增加。
图14是示出根据一些实施例的CMX设备100的一些优点的时序图。如图所示,使用过程1100A或1100B,如果页面未被预先获取并存储在专用存储器920中,则当使用消息信号中断(MS I)来唤醒线程时,在页面故障之后线程获得需求数据所需的时间减少了约44%。在页面已被预先获取并存储在该专用存储器空间450相对应的存储部分920中的情况下,页面故障后线程获取需求数据所需的时间减少了约56%,特别是当mWake(CPU中的一种机制,允许软件监视提交队列并在头/尾指针更新时唤醒线程)用于唤醒线程时。
图15示出了根据一些实施例的具有CMXC 1520的CMX设备1500的操作,该CMXC1520包括或耦合到设备高速缓冲存储器(或按需读取高速缓冲存储器)1527。在一些实施例中,该CMX设备1500类似于CMX设备100,除了该CMX设备1500不提供本地DRAM存储器以存储有效载荷和/或控制到或来自本地DRAM内存的数据传输的相关逻辑。在一些实施例中,该CMXC 1520中的控制逻辑可设置为:经由该CXL总线305从该CPU 112接收提交1501;从该NVM140读取有效载荷1511;将该有效载荷1511加载到设备高速缓冲存储器1527中;并且经由该CXL总线305将该有效载荷1511的至少请求部分1512从该设备高速缓冲存储器1527传送到该CPU 112;并且将该有效载荷1511的至少未请求部分1514传送到可由该CPU 112访问的DRAM(例如主机存储器116)中。至少请求部分1512经由专用链路(例如该CXL总线305)从该设备高速缓冲存储器1527传输到该CPU 112,而不经过存储器通道(例如该系统总线115)。
在一些实施例中,在一个或多个后台操作中将该有效载荷1511的至少未请求部分1514传送到该主机存储器116,而无需来自该CPU 112的特定请求。如果需要,该CPU 112随后可以通过向该主机存储器316发出读取命令(1505)来访问该有效载荷1511的至少未请求部分1514,这使得该主机存储器316经由存储器通道或该系统总线115向CPU输出数据。
因此,该CMX设备1500在该按需读取高速缓冲存储器1527和该NVM 140之间提供改进的SDM请求路径和专用反向信道。需求数据可以直接在该按需读取高速缓冲存储器1527和该CPU 112之间传输,而低优先级数据被偶然地移动到主机DRAM 116中。在一些实施例中,该CMX设备1500可以用作传统SDM(例如NVMe)扩展设备的直接替代品,并为所有支持的工作载荷提供优于传统SDM扩展设备的改进性能。该CMX设备1500还支持传统SDM扩展设备不可行的额外工作载荷。
图16示出了根据一些实施例的包括该CMX设备1500的计算机系统的存储器映射1600。如图16所示,SDM软件1602将计算机系统中的存储器和存储资源汇集在一起,并将它们作为可由在该CPU 112处运行的一个或多个统一存储器访问(UMA)应用1601访问的虚拟存储器1610呈现给该CPU 112。例如,NVM 140可以对应于由该SDM软件1602管理的16TB虚拟存储器空间,并且数据可以经由设备高速缓冲存储器1527在NVM 140和主机DRAM 1516之间移动。因此,CMX设备1500允许SDM通过该设备高速缓冲存储器1527将数据从NVM 140迁移到主机存储器116中。如下所述,CMXC控制器1520与该设备高速缓冲存储器1527一起,通过SDM智能预先获取以及数据获取过程与唤醒请求线程的过程的重叠,提供了增强的性能。
在一些实施例中,如图17所示,将数据从该NVM 140传输到CPU的过程1700包括从运行在该CPU 112上的SDM 1602接收(1710)访问存储器映射中的位置处的数据或使NVM有效载荷失效的请求。在一些实施例中,可以基于CXL.memory协议或NVMe提交将请求作为一个或多个cDMA命令发送。如图17所示,该过程1700还包括通过例如该CMXC 1520使用例如cDMA高速缓冲存储器填充过程将包括需求数据的NVM页(或NVM有效载荷)加载(1720)到该设备高速缓冲存储器1527中。该过程1700还包括基于例如CXL高速缓冲存储器协议实现(1730)需求数据到CPU高速缓冲存储器1513(例如,L1-L3高速缓冲存储器)的直接高速缓存传输,以及在低优先级后台写回过程中将NVM页中的额外未使用数据同步(1740)到该主机存储器116。然后,该CPU 112可以经由存储器通道(例如,该系统总线115)读取(1750)附加数据。
在一些实施例中,如图17所示,近命中延迟t1(例如,直接从主机存储器116获取需求数据的延迟)约为,例如225纳秒(ns),远命中延迟t2(例如,直接从设备高速缓冲存储器1527获取需求数据的延迟)约为,例如210ns,并且远未命中延迟t3(例如,将数据从NVM 140传送到设备高速缓冲存储器1527以及从设备高速缓冲存储器1527传送到CPU高速缓冲存储器1513的延迟)约为,例如2100ns。假设需求数据在主机存储器116中容易获得的概率为75%,需求数据在设备高速缓冲存储器1527中容易获得的概率为15%,以及需求数据既不在该主存储器116中也不在该设备高速缓冲存储器1527内且因此必须从该NVM 140传输的概率为10%,用于获取需求数据的结果平均延迟约为,例如410ns。
图18A是根据一些实施例的使用CMX设备1500的具有减少的请求获取延迟的页面故障恢复过程1800A的流程图。如图18A所示,当在该CPU 112上运行的应用程序的线程(例如,线程a)请求(1802)不在该CPU高速缓冲存储器1513或该主机存储器116中的数据(例如,高速缓冲存储器线或CL‘z’)时,在该CPU 112处运行的页面处理器1801发出(1804)页面错误并使线程休眠(1806)。作为响应,该SDM软件201发送(1808)对包含CL‘z’的页面(例如,页面x)的请求,例如,通过将提交写入该CMX设备1500中的请求队列。在一些实施例中,除了该设备高速缓冲存储器1527之外,该CMX设备1500还包括用于存储可由该CPU 112访问的请求队列或提交队列(例如,一个或多个需求队列531、一个或多个预测队列532和一个多个推测队列533以及一个或多个完成队列560)的附加高速缓冲存储器(例如,SRAM或HBM)。在接收到请求后,该CMX设备1500处的该CMXC 1520同时或并行地启动两个子进程,第一子进程将页面x加载到设备高速缓冲存储器1527中,第二子进程唤醒线程a。第一子进程的至少一部分与第二子过程的至少一部分重叠。因此,不是在唤醒线程A之前等待页面x被加载到CPU高速缓冲存储器中,而是唤醒线程A的子进程可以在页面x的至少一部分被从该NVM 140加载到该设备高速缓冲存储器1527时运行。
第一子过程由该CMXC 1520命令(1810)该NVM 140输出页面x开始,页面x包括所请求的数据或需求数据(例如,高速缓冲存储器线“z”)和其他高速缓冲存储器线。当页面“x”正从该NVM 140传送(1816)到该按需读取高速缓冲存储器327B时,该CMXC 1520通过在该CPU 112处从归属代理350请求(1812)与页面“x’相关联的高速缓冲存储器线(包括CL‘z’)的所有权来执行第二子过程。当从该CPU 112接收到(1813)所有权被授予的确认时,该CMXC1520通过例如在CMB中的完成队列中写入(1818)提交完成来通知该SDM软件201该页面已准备好。作为响应,该SDM软件201通过向页面处理器1801指示(1819)页面已准备好来关闭循环,从而使该页面处理器1801唤醒(1820)线程A,然后该线程A向该CMXC 1520发送(1822)请求以返回所请求的数据(例如,CL‘z’)。在一些实施例中,使用例如CXL.memory或CXL.cache协议将所请求的数据CL‘z’从该设备高速缓冲存储器1527直接传输(1824)到该CPU高速缓冲存储器113。页面x的至少一个未读部分随后可以在后台进程中以低优先级传输(1826)到该主机存储器116。然后,该CPU 112可以经由该系统总线115访问任何其他高速缓冲存储器线。
图18B是根据一些实施例的使用CMX设备1500的具有进一步减少的请求获取延迟的页面故障恢复过程1800B的流程图。如图18A和18B所示,过程1800B类似于过程1800A,除了在过程1800B中,当向该NVM子系统340发出命令以从该NVM子系统340读取页面时,该CMXC1520将首先发出(1810A)与包括所请求的高速缓冲存储器线“z”的逻辑块的高优先级LBA相对应的命令,随后是用于其它LBA的命令(1811)。结果,对应于高优先级LBA的逻辑块从该NVM子系统340输出,并在第'x'页中的其他逻辑块之前加载(1816)到该设备高速缓冲存储器1527中。
该CMX设备1500与基于NVMe的传统SDM相比具有若干优点。例如,如图19所示,该设备高速缓冲存储器1527用于通过低延迟高速缓冲存储器到高速缓冲存储器传输来提供关键需求数据1920,同时降低剩余低优先级数据1930的优先级以防止CPU数据/相干结构拥塞。相比之下,如图20所示,传统的基于NVMe的解决方案要求在请求需求数据的应用程序能够经由主机存储器通道访问需求数据之前,将来自NVM的完整4kB页面从NVM传输到主机DRAM,从而导致需求数据和CPU数据/相干性结构拥塞的延迟增加。
应当理解,尽管术语第一、第二等在一些情况下用于描述各种元件,但这些元件不应受到这些术语的限制。这些术语仅用于区分一个元素和另一个元素。例如,第一UV灯可以被称为第二UV灯,并且类似地,第二UV灯可被称为第一UV灯,而不脱离各种所描述的实施例的范围。第一个小部件和第二个小部件都是小部件,它们不是相同的,除非明确说明。
在本文中描述各种所描述的实施例中使用的术语仅用于描述特定实施例的目的,而不是为了限制。如在各种所描述的实施例和所附权利要求的描述中所使用的,单数形式“一个”、“该”和“所述”也意图包括复数形式,除非上下文有明确的单数指示。还应理解,此处使用的术语“和/或”是指并包括一个或多个相关列出项目的任何和所有可能的组合。将进一步理解,当在本说明书中使用时,术语“包括”、“包括”、“包含”和/或“包含”指定了所述特征、整体、步骤、操作、元素和/或组件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或其组合。
为了解释的目的,已经参考具体实施例进行了描述。然而,上述说明性描述并不旨在穷尽或将权利要求的范围限制于所公开的具体形式。鉴于上述教导,许多修改和变化是可能的。上述实施例是为了最好地解释权利要求及其实际应用的原理,从而使本领域的其他技术人员能够最好地使用具有各种修改的实施例,这些修改适用于预期的特定用途。
Claims (35)
1.一种可在计算机系统中操作的存储器扩展设备,所述计算机系统包括主机和专用总线,所述存储器扩展设备包括:
接口电路,被设置为基于预定义协议经由所述专用总线与所述主机通信;
非易失性存储器NVM子系统;
高速缓冲存储器;和
耦合到所述接口电路、所述高速缓冲存储器和所述NVM子系统的控制逻辑,其中所述控制逻辑被设置为:
从所述主机接收第一提交,所述第一提交包括第一读取命令并指定所述NVM子系统中的第一有效载荷;和
响应于所述第一提交具有第一优先级,请求与所述第一有效载荷相对应的第一高速缓冲存储器线的所有权,在获取所述第一高速缓冲存储器线的所述所有权之后指示完成所述第一提交,并将所述第一有效载荷加载到所述高速缓冲存储器,所述第一高速缓冲存储器线对应于所述主机可访问的第一相干目的地存储空间中的高速缓冲存储器线。
2.根据权利要求1所述的存储器扩展设备,其中,所述存储器扩展设备经由计算机快速链路CXL总线耦合到所述主机,所述接口电路在所述控制逻辑和所述CXL总线之间提供CXL接口,并且所述主机可使用CXL协议访问所述第一相干目的地存储空间。
3.根据权利要求1或2中任一项所述的存储器扩展设备,其中,所述控制逻辑还被设置为从所述主机处的归属代理请求所述第一高速缓冲存储器线的所述所有权。
4.根据权利要求1至3中任一项所述的存储器扩展设备,其中:
所述第一提交进一步指定所述第一有效载荷中的需求数据;
所述控制逻辑被设置为在将所述第一有效载荷加载到所述高速缓冲存储器之前,发出第一NVM读取命令以从所述NVM子系统读取所述第一有效载荷,所述第一NVM读取命令被写入与所述NVS子系统相关联的命令队列中;
所述控制逻辑还被设置为当发出所述第一NVM读取命令时,优先从所述NVM子系统读取所述需求数据,使得在所述NVM子系统中与包括所述需求数据的逻辑块相对应的逻辑块地址在与所述第一有效载荷中与其他逻辑块对应的逻辑块地址之前被读取。
5.根据权利要求1至4中任一项所述的存储器扩展设备,其中,所述控制逻辑被设置为在确定所述第一有效载荷已被加载到所述高速缓冲存储器中之前指示所述第一提交的完成。
6.根据权利要求1至5中任一项所述的存储器扩展设备,其中,所述控制逻辑还被设置为在指示完成所述第一提交之后并且响应于来自所述主机的存储器读取请求以读取所述有效载荷中的需求数据:
确定所述需求数据是否已加载在所述高速缓冲存储器中;和
响应于需求数据已经被加载到高速缓冲存储器中,将所述需求数据从高速缓冲存储器返回。
7.根据权利要求6所述的存储器扩展设备,其中,所述控制逻辑还被设置为在返回所述需求数据之后,至少将所述第一有效载荷的未读部分传送到所述第一高速缓冲存储器线中的对应高速缓冲存储器线。
8.根据权利要求7所述的存储器扩展设备,还包括提供所述第一相干目的地存储空间的本地存储器。
9.根据权利要求7所述的存储器扩展设备,其中所述第一高速缓冲存储器线对应于主机存储器中的地址范围,并且所述第一有效载荷的剩余部分经由所述接口电路被传送到所述主机。
10.根据权利要求1至7中任一项所述的存储器扩展设备,其中,所述控制逻辑还被设置为:
从所述主机接收第二提交,所述第二提交包括第二读取命令并指定所述NVM子系统中的第二有效载荷;
响应于所述第二提交具有第二优先级,将所述第二有效载荷加载到与所述第二有效载荷相对应的第二相干目的地存储空间中,并且在所述第二有效载荷已经加载到所述第二相干目标地存储器空间中之后指示所述第二提交的完成。
11.根据权利要求10所述的存储器扩展设备,还包括耦合到所述控制逻辑并提供所述第二相干目的地存储空间的本地存储器。
12.根据权利要求10或11中任一项所述的存储器扩展设备,其中所述控制逻辑被设置为在将所述第一有效载荷加载到所述高速缓冲存储器中之前发出第一NVM读取命令以从所述NVM子系统读取所述第一有效载荷,并且在将所述第二有效载荷加载到所述第二相干目的地存储空间中之前发出第二NVM读取命令以从所述NVM子系统读取所述第二有效载荷,其中:
所述第一NVM读取命令被写入与所述NVM子系统相关联的第一命令队列中;和
所述第二NVM读取命令被写入与所述NVM子系统相关联的第二命令队列中,所述第一命令队列具有比所述第二命令队列更高的优先级。
13.根据权利要求11或12中任一项所述的存储器扩展设备,还包括控制器存储器缓冲CMB,所述CMB包括可由所述主机访问的提交队列,所述提交队列至少包括用于对所述第一优先级的提交进行排队的第一提交队列和用于对所二优先级的提交排队的第二提交队列,其中所述第一提交在所述第一提交队列中排队,所述第二提交在所述第二提交队列中排队。
14.根据权利要求13所述的存储器扩展设备,其中所述CMB占据所述本地存储器中的CMB空间。
15.根据权利要求14所述的存储器扩展设备,其中,所述控制逻辑被设置为将所述CMB存储器空间的所选部分保持在共享状态,从而响应于所述主机修改所述所选部分的高速缓冲存储器线而导致与所述高速缓冲存储器线相对应的共享状态无效,所述控制逻辑被设置为重新获取所述高速缓冲存储器线以恢复所述共享状态。
16.根据权利要求15所述的存储器扩展设备,其中,所述控制逻辑还包括相干NVM主机控制器接口规范cNVMe控制器,所述cNVMe控制器被设置为响应于所述高速缓冲存储器中的第一镜像提交队列中的第一提交的值被写入所述寄存器而读取所述高速缓冲存储器中的所述第一镜像提交队列中的所述第一提交,并且控制所述第一有效载荷向所述高速缓冲存储器的传输。
17.根据权利要求13所述的存储器扩展设备,其中,所述控制逻辑被设置为通过写入所述CMB的完成队列并更新与所述完成队列相关联的指针来指示提交的完成。
18.根据权利要求13所述的存储器扩展设备,其中,所述控制逻辑还被设置为通过读取已由所述主机写入所述一个或多个提交队列的所述第二提交队列中的所述第二提交来从所述主机接收所述第二提交。
19.根据权利要求18所述的存储器扩展设备,其中,所述控制逻辑还被设置为响应于所述第一提交已经被所述主机写入到所述第一提交队列中,确定所述第一提交具有所述第一优先级,并且响应于所述第二提交已经被所述主机写入所述第二提交队列中,确定所述第二提交具有所述第二优先级。
20.根据权利要求10所述的存储器扩展设备,还包括耦合到所述控制逻辑的本地存储器,其中所述第一相干目的地存储空间和所述第二相干目的地存储空间中的一个或两个由所述本地存储器提供。
21.根据权利要求20所述的存储器扩展设备,其中,响应于所述第二提交具有所述第二优先级并且包括一个或多个提示,所述控制逻辑被设置为使用所述一个或多个提示来准备所述第二高速缓冲存储器线。
22.根据权利要求20所述的存储器扩展设备,其中,响应于所述第二提交具有所述第二优先级并且包括一个或多个提示,所述控制逻辑被设置为使用所述一个或多个提示将所述第二有效载荷写入所述第二高速缓冲存储器线。
23.根据权利要求20所述的存储器扩展设备,其中,所述控制逻辑还被设置为:
从所述主机接收第三提交,所述第三提交包括第三读取命令并指定第三有效载荷;
响应于所述第三提交具有低于所述第二优先级的第三优先级,基于预定标准确定是否获取所述第三有效载荷;和
响应于确定要获取第三有效载荷,获取第三有效载荷,并将所述第三有效载荷加载到对中央处理器CPU隐藏的专用存储器空间中。
24.根据权利要求23所述的存储器扩展设备,其中所述控制逻辑还被设置为无论基于所述预定标准确定是否要获取所述第三有效载荷,指示所述第三提交的完成。
25.根据权利要求23所述的存储器扩展设备,其中所述专用存储器空间由所述本地存储器提供,并且与所述第一相干目的地存储空间和所述第二相干目的地存储空间不同。
26.根据权利要求23所述的存储器扩展设备,其中所述控制逻辑被设置为:
在将所述第一有效载荷加载到所述高速缓冲存储器之前,确定所述第一有效载荷是否已被预先获取并存储在所述专用存储器空间中;和/或
在将第二有效载荷加载到第二高速缓冲存储器线之前,确定第二有效载荷是否已被预先获取并存储在所述专用存储器空间中。
27.根据权利要求26所述的存储器扩展设备,其中,所述控制逻辑被设置为:
响应于确定所述第一有效载荷已经被预先获取并存储在所述专用存储器空间中,将所述第一有效载荷从所述专用存储器空间复制到所述高速缓冲存储器;和/或
响应于确定所述第二有效载荷已经被预先获取并存储在所述专用存储器空间中,将所述第二有效载荷从所述专用存储空间复制到所述第二相干目的地存储空间。
28.根据权利要求26所述的存储器扩展设备,其中,所述控制逻辑还被设置为:
响应于确定所述第一有效载荷尚未被预先获取并存储在所述专用存储器空间中,从所述NVM子系统读取所述第一有效载荷;和/或
响应于确定所述第二有效载荷尚未被预先获取并存储在所述专用存储器空间中,从所述NVM子系统读取所述第二有效载荷。
29.根据权利要求20所述的存储器扩展设备,其中所述本地存储器包括双倍数据速率DDR存储器,和动态随机存取存储器DRAM。
30.根据权利要求23所述的存储器扩展设备,还包括可由所述主机访问的CMB,其中所述CMB包括提交队列,并且所述控制逻辑被设置为:
响应于所述第一提交已经被写入用于对所述第一优先级的提交进行排队的第一提交队列,确定所述第一提交具有所述第一优先权;
响应于所述第二提交已被写入用于对所述第二优先级的提交进行排队的第二提交队列,确定所述第二提交具有所述第二优先级;和
响应于所述第三提交已被写入用于对所述第三优先级的提交进行排队的第三提交队列,确定所述第三提交具有所述第三优先级。
31.根据权利要求1至30中任一项所述的存储器扩展设备,其中所述控制逻辑包括集成电路芯片上的逻辑电路。
32.根据权利要求31所述的存储器扩展设备,其中所述高速缓冲存储器包括所述集成电路芯片上的静态随机存取存储器SRAM。
33.根据权利要求31所述的存储器扩展设备,其中所述高速缓冲存储器包括耦合到所述集成电路芯片的高带宽存储器HBM。
34.一种可在计算机系统中操作的存储器扩展设备,所述计算机系统包括主机和专用总线,所述存储器扩展设备包括:
接口电路,被设置为基于预定义协议经由所述专用总线与所述主机通信;
NVM子系统;
提供所述主机可访问的相干存储空间的本地存储器;
高速缓冲存储器;和
耦合到所述接口电路、所述高速缓冲存储器和所述NVM子系统的控制逻辑,其中所述控制逻辑被设置为:
从所述主机接收提交,所述提交包括读取命令并指定所述NVM子系统中的有效载荷和所述有效载荷中的需求数据;
请求与所述有效载荷相对应的一组高速缓冲存储器线的所有权,所述一组高速缓冲存储器线对应于所述相干存储器空间中的一组高速缓冲存储器线;
在获取所述一组高速缓冲存储器线的所有权之后指示所述提交的完成;
发出一组NVM读取命令以从所述NVM子系统读取所述有效载荷,所述一组NVM读取命令被写入与所述NVM子系统相关联的命令队列中,其中在所述有效载荷中的其他逻辑块之前从所述NVM子系统读取与所述需求数据相对应的一个或多个逻辑块;
将所述有效载荷加载到所述高速缓冲存储器;
从所述主机接收读取所述有效载荷中的所述需求数据的请求;和
在确定所述需求数据已经被加载到所述高速缓冲存储器中之后,从所述高速缓冲存储器返回所述需求数据;
其中所述控制逻辑被设置为在确定所述需求数据已经被加载到所述高速缓冲存储器中之前指示所述提交的完成。
35.一种方法,应用于经由专用总线耦合到主机的存储器扩展设备,所述存储器扩展设备包括接口电路、NVM子系统、提供所述主机可访问的相干存储空间的本地存储器和高速缓冲存储器,所述方法包括:
从所述主机接收提交,所述提交包括读取命令并指定所述NVM子系统中的有效载荷和所述有效载荷中的需求数据;
请求与所述有效载荷相对应的一组高速缓冲存储器线的所有权,所述一组高速缓冲存储器线对应于所述相干存储器空间中的一组高速缓冲存储器线;
在获取所述一组高速缓冲存储器线的所有权之后指示所述提交的完成;
发出一组NVM读取命令以从所述NVM子系统读取所述有效载荷,所述一组NVM读取命令被写入与所述NVM子系统相关联的命令队列中,其中在所述有效载荷中的其他逻辑块之前从所述NVM子系统读取与所述需求数据相对应的一个或多个逻辑块;
将所述有效载荷加载到所述高速缓冲存储器;
从所述主机接收读取所述有效载荷中的所述需求数据的请求;和
在确定所述需求数据已经被加载到所述高速缓冲存储器中之后,从所述高速缓冲存储器返回所述需求数据;
其中,在确定所述需求数据已经被加载到所述高速缓冲存储器中之前指示所述提交的完成。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063032484P | 2020-05-29 | 2020-05-29 | |
US63/032,484 | 2020-05-29 | ||
PCT/US2021/035317 WO2021243340A1 (en) | 2020-05-29 | 2021-06-01 | Computer memory expansion device and method of operation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116134475A true CN116134475A (zh) | 2023-05-16 |
Family
ID=78706348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180059852.6A Pending CN116134475A (zh) | 2020-05-29 | 2021-06-01 | 计算机存储器扩展设备及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11500797B2 (zh) |
EP (1) | EP4158486A1 (zh) |
CN (1) | CN116134475A (zh) |
WO (1) | WO2021243340A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737604A (zh) * | 2023-08-15 | 2023-09-12 | 苏州浪潮智能科技有限公司 | 内存控制芯片、服务器的内存模组以及服务器 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11782832B2 (en) * | 2021-08-25 | 2023-10-10 | Vmware, Inc. | Low latency host processor to coherent device interaction |
US11860799B2 (en) * | 2021-12-20 | 2024-01-02 | Micron Technologies, Inc. | Memory request modulation |
US11836096B2 (en) * | 2021-12-22 | 2023-12-05 | Micron Technology, Inc. | Memory-flow control register |
US20230236994A1 (en) * | 2022-01-27 | 2023-07-27 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for queue management with a coherent interface |
US11966590B2 (en) | 2022-02-25 | 2024-04-23 | Samsung Electronics Co., Ltd. | Persistent memory with cache coherent interconnect interface |
US20230384960A1 (en) * | 2022-05-31 | 2023-11-30 | Samsung Electronics Co., Ltd. | Storage system and operation method therefor |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6829683B1 (en) * | 2000-07-20 | 2004-12-07 | Silicon Graphics, Inc. | System and method for transferring ownership of data in a distributed shared memory system |
WO2014065880A1 (en) * | 2012-10-22 | 2014-05-01 | Robert Beers | Coherence protocol tables |
CN105453056B (zh) * | 2013-09-19 | 2019-05-17 | 英特尔公司 | 用于在多高速缓存环境中管理高速缓冲存储器的方法和装置 |
US20150193907A1 (en) * | 2014-01-08 | 2015-07-09 | Nvidia Corporation | Efficient cache management in a tiled architecture |
US10949358B2 (en) * | 2019-09-25 | 2021-03-16 | Intel Corporaton | Secure address translation services using message authentication codes and invalidation tracking |
-
2021
- 2021-06-01 CN CN202180059852.6A patent/CN116134475A/zh active Pending
- 2021-06-01 WO PCT/US2021/035317 patent/WO2021243340A1/en unknown
- 2021-06-01 US US17/336,262 patent/US11500797B2/en active Active
- 2021-06-01 US US18/000,125 patent/US20230214326A1/en active Pending
- 2021-06-01 EP EP21812705.8A patent/EP4158486A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737604A (zh) * | 2023-08-15 | 2023-09-12 | 苏州浪潮智能科技有限公司 | 内存控制芯片、服务器的内存模组以及服务器 |
Also Published As
Publication number | Publication date |
---|---|
US20230214326A1 (en) | 2023-07-06 |
US20210374080A1 (en) | 2021-12-02 |
EP4158486A1 (en) | 2023-04-05 |
WO2021243340A1 (en) | 2021-12-02 |
US11500797B2 (en) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230342305A1 (en) | Victim cache that supports draining write-miss entries | |
CN116134475A (zh) | 计算机存储器扩展设备及其操作方法 | |
CN102804152B (zh) | 对存储器层次结构中的闪存的高速缓存一致性支持 | |
JP3280207B2 (ja) | I/oチャネル・コントローラ、多重プロセッサ・システム、キャッシュ・コヒーレンシを維持する方法、i/o同期を提供する方法 | |
US8370533B2 (en) | Executing flash storage access requests | |
US6295582B1 (en) | System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available | |
JP3067112B2 (ja) | 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法 | |
CN114756502A (zh) | 片上原子事务引擎 | |
JPH0272453A (ja) | 共有メモリ及び私用キャッシュメモリを有するマルチプロセッサコンピュータシステム | |
US6751705B1 (en) | Cache line converter | |
US11816032B2 (en) | Cache size change | |
US11599483B2 (en) | Dedicated cache-related block transfer in a memory system | |
CN116601613A (zh) | 利用分组元数据的数据放置 | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
US11054993B2 (en) | Mass storage system having peer-to-peer data movements between a cache and a backend store | |
JP2003242028A (ja) | 複数のタグおよび細分化された大容量アレイへの複数のエントリの使用による簡易化したキャッシュ階層 | |
CN115729860A (zh) | 处理系统、处理方法及电子设备 | |
JPH11149409A (ja) | メモリコントローラおよびコンピュータシステム |
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 |