CN116578501A - 用于保留高速缓存中的数据的存储器地址分配和高速缓存映射 - Google Patents
用于保留高速缓存中的数据的存储器地址分配和高速缓存映射 Download PDFInfo
- Publication number
- CN116578501A CN116578501A CN202310084347.8A CN202310084347A CN116578501A CN 116578501 A CN116578501 A CN 116578501A CN 202310084347 A CN202310084347 A CN 202310084347A CN 116578501 A CN116578501 A CN 116578501A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- processing device
- level
- computing system
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 58
- 238000013507 mapping Methods 0.000 title claims abstract description 28
- 238000012545 processing Methods 0.000 claims abstract description 126
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims description 54
- 230000001427 coherent effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 28
- 238000012546 transfer Methods 0.000 description 27
- 230000002093 peripheral effect Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000003999 initiator Substances 0.000 description 5
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/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/0871—Allocation or management of cache space
-
- 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- 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/313—In storage 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space 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
本公开涉及用于保留高速缓存中的数据的存储器地址分配和高速缓存映射。一种计算系统包括易失性存储器、与易失性存储器耦合的高速缓存、以及与高速缓存和存储设备或网络端口中的至少一个耦合的处理设备。该处理设备用于:生成多个虚拟地址,所述多个虚拟地址针对响应于输入/输出(I/O)请求而要进行被处理或被传输中的至少一个的数据而按顺序编号;针对所述数据分配所述易失性存储器的连续范围的物理地址;基于所述多个虚拟地址和所述连续范围的物理地址中的相应物理地址之间的映射,生成一组基于散列的值;确定与所述一组散列的值中的每个相应的基于散列的值相对应的所述高速缓存的特有高速缓存行;以及使得所述数据被直接存储在所述高速缓存的所述特有高速缓存行中。
Description
技术领域
至少一个实施例一般涉及计算机系统,并且更具体地但不排他地涉及改进存储器地址分配和高速缓存映射以保留高速缓存中的数据。
背景技术
固态驱动器(SSD)是大容量存储设备,其使用集成电路存储器(通常是基于负与(NAND)的闪存)来存储数据,同时提供模拟传统硬盘驱动器(HDD)的接口。与HDD相比,SSD提供更快的访问速度,更低的延迟,以及更强的抗环境干扰能力。因此,SSD在许多存储应用中正逐渐取代HDD。
由于SSD最初是为了取代HDD而设计的,因此它们通常使用与HDD相同种类的输入/输出(I/O)总线和协议,诸如串行AT附件(SATA)、串行连接的小型计算机系统接口(SCSI)(SAS)和光纤通道。随后,SSD变得可用,它们直接连接到主机的外围组件接口总线,诸如 总线。NVM Express(NVMe)为PCI Express SSD定义了寄存器接口、命令集和功能集。
高级网络接口控制器(NIC)被设计为支持远程直接存储器访问(RDMA)操作,其中NIC通过直接存储器访问将数据从一台计算机的存储器传送到另一台计算机的存储器,而不涉及目标计算机的中央处理单元(CPU)。这些RDMA操作通常用于将数据传送到主机存储器/从主机存储器传输数据,例如,随机存取存储器(RAM),尽管已经尝试调整RDMA功能以直接向或从SSD读/写数据。
此外,诸如数据处理单元(DPU)和图形处理单元(GPU)的智能NIC,例如通过支持RDMA操作和直接读取或写入连接的存储设备以响应于远程发起者请求,将关键的网络、安全和存储任务从CPU卸载。此外,智能NIC(和GPU)涉及高数据传输应用程序,这些应用程序可能仍然涉及将RAM作为临时数据的主要存储。高速缓存固定(cache pinning)并非在所有的系统都实现,或者在支持高速缓存固定的系统中,找到固定地址是一个挑战,并且整个高速缓存的固定可能不允许其他进程正常工作。此外,高速缓存固定在数据传输所需的分配量方面并不是完全有效的,需要的固定与不需要的固定之间存在最佳的平衡。结果是,在智能NIC(或类似的通信装置或设备)中,高速缓存可能会填满并且需要经历向RAM的淘汰(eviction)才能完成某些操作。由于高速缓存淘汰到NIC/GPU内的RAM所涉及的延迟大于通信设备或存储设备的延迟,因此这些高速缓存淘汰在这种高速、高数据量的NIC(或GPU)中造成了瓶颈。
附图说明
将参考附图描述根据本公开的各种实施例,其中:
图1A-1B是根据至少一些实施例的数据通信系统的示意性框图;
图2是根据至少一些实施例的示出了易失性存储器中虚拟地址(VA)和连续范围的物理地址(PA)之间基于散列的分配以便将VA映射到最后一级高速缓存(LLC)中的特有高速缓存行(unique cache lines)的操作性框图;
图3是根据至少一些实施例的操作性数据流图,其中基于图2的基于散列的分配,数据通信系统的数据从存储设备和/或网络端口直接路由通过高速缓存,而不将数据逐出到易失性存储器;
图4是根据至少一些实施例的使用所公开的基于散列的分配将VA映射到图3的特有高速缓存行的方法的流程图;
图5是根据至少一些实施例的操作性数据流图,其中基于图2的基于散列的分配,数据通信系统的数据从图形处理单元(GPU)和/或中央处理单元(CPU)直接路由通过第二最高级别的高速缓存,而不将数据逐出到易失性存储器;以及
图6是根据至少一些实施例的使用所公开的基于散列的分配将VA映射到图5的特有高速缓存行的方法的流程图。
具体实施方式
本公开的方面和实施例解决了上述瓶颈问题,即在支持高速和大量数据传输应用的智能NIC或类似装置或设备(例如,GPU)中从高速缓存逐出到例如RAM的易失性存储器。在本文公开的各种实施例中,通过分配被映射到数据的虚拟地址(VA)的易失性存储器的连续范围的物理地址,可以消除或显著减少对逐出的需要,该数据是响应于输入/输出(I/O)请求而正在处理或传输的数据之一,正如将详细解释的那样。
如前所述,一些数据通信设备(诸如智能NIC(例如, DPU))支持响应于远程发起者请求(例如,通过数据通信设备所连接的网络从设备接收到的内容传输请求),经由存储子系统直接读取或写入附连的本地外围存储设备(例如,NVMexpress(NVMe)驱动器或其他存储设备)。取决于内容传输请求的级别以及网络、存储子系统接口和本地外围存储设备的速度和带宽,存储子系统可能出现拥塞,导致系统对服务传入内容传输请求的响应变差。
例如,存储子系统可以包括随机存取存储器(RAM)(例如,双倍数据速率(DDR)存储器),其用于在数据通信设备和本地外围存储设备之间传输内容,反之亦然。在某些情况下,RAM不是瓶颈,因为本地外围存储设备的速度很慢。在其他情况下,如果外围存储设备足够快(例如,NVMe驱动器),RAM可能成为瓶颈,因为它比本地外围存储设备和服务于内容传输请求的发起者的网络端口慢。
解决这个问题的一种方法是使用高速缓存(例如,末级高速缓存(LLC)),在高速缓存中在数据通信设备和本地外围存储设备之间复制数据,反之亦然。然而,如果高速缓存变满,高速缓存条目(仍然需要使用的)可以被逐出到RAM,例如,基于最近最少使用(LRU)的原则。然后必要时,被逐出的条目会被从RAM读到高速缓存,从而导致瓶颈。一般来说,可以选择高速缓存来服务于网络带宽,并且如果数据通信设备成功地将所有条目(需要使用的)保存在高速缓存中,那么高速缓存可以以全线速度服务于内容传输请求。然而,一旦条目被从高速缓存中逐出到RAM,就可能形成恶性循环,其中可能需要很长的时间才能返回到没有条目(需要使用的)被从高速缓存中逐出的最佳性能。
因此,在某些情况下,如果尽管在高速缓存中没有足够的空间,但所有接收到的内容传输请求仍被提供服务,则高速缓存成为瓶颈,并且高速缓存条目(仍然需要使用的)被逐出到RAM。一种解决方案是请求发起者避免发送内容传输或I/O请求。然而,这种解决方案通常是不切实际的,因为发起者可能来自不同的实体或以其他方式不遵守规定。
相应地,根据各种实施例,通过处理逻辑(例如,数据通信设备的电路、固件、软件或其组合)生成虚拟地址来消除或显著减少这种高速缓存逐出瓶颈,这些虚拟地址对于响应于I/O请求而要处理/传输的数据是按顺序编号的。处理逻辑可以进一步为数据分配易失性存储器(例如,RAM)的连续范围的物理地址。根据这些实施例,一旦这样的连续范围的物理地址被分配,处理逻辑就会基于相应的物理地址或基于虚拟地址和连续范围的物理地址的相应物理地址之间的映射,来生成一组基于散列的值。这些基于散列的值(例如可以被存储在表中),可以被用于标识与一组基于散列的值中的每个相应的基于散列的值相对应的高速缓存的特有(unitque)高速缓存行(诸如LLC)。处理设备最终使数据直接存储在高速缓存的特有高速缓存行中,保留特有高速缓存行与虚拟地址的映射。
在这些实施例中,因为处理设备可以进一步将物理地址的连续范围(PA)限制为高速缓存的大小,所以不需要对该数据发生逐出,因为在任何给定的虚拟地址和已经如上所述指派的对应特有高速缓存行之间将没有冲突。在这个初始数据被处理和传输后,进一步的数据可以被类似地处理,分配给连续范围的物理地址或分配给另一个类似大小的连续范围的物理地址。如果物理地址的连续范围被重新分配到不同的范围,那么处理设备可以相应地更新该组基于散列的值,使得虚拟地址仍然映射到高速缓存的特有高速缓存行。该高速缓存或LLC通常可以被理解为离数据通信设备的处理逻辑最远的一级高速缓存。
因此,根据本公开的一些实施例实现的系统和方法的优点包括但不限于消除LLC和易失性存储器(RAM)之间逐出的必要性以及从易失性存储器中读出数据的相关必要性,减少与先前提到的高速缓存-RAM瓶颈有关的延迟。其他的优点对于下文讨论的存储器子系统领域的技术人员来说将是显而易见的。
图1A-1B是根据至少一些实施例的数据通信系统10的示意性框图。数据通信系统10包括数据通信装置12,例如,计算系统或设备,其通过分组数据网络14从一个或更多个远程设备16接收内容传输请求。该内容传输请求可以是RDMA或其他I/O请求,仅作为示例。响应于内容传输请求,数据通信装置12从与数据通信装置12耦合的(本地外围)存储设备18(例如,NVMe驱动器)读取数据和/或向其写入数据。例如,数据通信装置12被配置为从远程设备16接收数据以写入本地外围存储设备18和/或将从本地外围存储设备18读取的数据发送到远程设备16。在一些实施例中,远程设备16是存储盘、网络、CPU、GPU等。
在各种实施例中,数据通信装置12包括网络接口20、分组处理流水线22、处理电路24和存储子系统26。网络接口20包括用于连接到分组数据网络14的一个或更多个网络端口28。分组处理流水线22被配置为处理接收到的网络分组,以及处理用于以分组通过网络14发送的数据。分组处理流水线22可以包括物理层(PHY)芯片和媒体访问控制(MAC)芯片,以及其他组件。
处理电路24可以进一步处理接收到的分组数据,例如,接收到的内容传输请求或I/O请求。处理电路24可以包括一个或更多个处理器或处理器核心,例如,块处理器或ARM处理器核心的阵列等。处理电路24的功能将在下面参考图2-6进行更详细的描述,并且也可以被称为处理设备,在一些实施例中,它可以可选地还包括分组处理流水线22。
在实践中,处理电路24的一些或全部功能可以结合在单个物理组件中,或者可替代地,使用多个物理组件实现。这些物理组件可以包括硬连线或可编程设备,或两者的组合。在一些实施例中,处理电路24的至少一些功能可以由可编程的处理器在适当的软件控制下执行。该软件可以例如通过网络以电子形式下载到设备。可替代地,或附加地,该软件可以被存储在有形的、非暂时性的计算机可读存储介质中,诸如光学、磁性或电子存储器。
存储子系统26包括存储器子系统32和一个或更多个外围接口30。存储子系统26被配置为经由外围接口30(例如PCIe接口)连接到本地外围存储设备18。存储器子系统32(其参考图1B进行了更详细的描述)包括高速缓存34和随机存取存储器(RAM)36。存储器子系统32被配置为将溢出从高速缓存34逐出到RAM 36。数据经由高速缓存34和外围接口30由本地外围存储设备18读取并且由本地外围存储设备18写入。
例如,在为特定的内容传输请求提供服务时,写入本地外围存储设备18之一或从其读取的数据经由高速缓存34的部分38进行传输。高速缓存34的相同部分38(例如,相同的高速缓存行或多个相同的高速缓存行)可用于一个接一个地传输与同一内容传输请求相关联的几个数据块。例如,内容传输请求的第一数据块从本地外围存储设备18之一读取到高速缓存34的部分38-1,然后从高速缓存34的部分38-1复制到分组处理流水线22,以通过网络14发送至内容传输请求的发起者,然后该内容传输请求的第二数据块从相同的本地外围存储设备18读取到高速缓存34的相同部分38-1,然后从高速缓存34的该部分38-1复制到分组处理流水线22,以通过网络14发送给内容传输请求的发起者,等等。在其他实施例中,高速缓存34的不同部分38可用于传输与同一内容传输请求相关联的不同块。
另外参考图1B,根据至少一些实施例,处理电路24包括多个处理核心21A...21N,其中每个处理核心包括多级的片上高速缓存。例如,第一级(L1)高速缓存可以包括数据高速缓存和指令高速缓存,并且第二级(L2)高速缓存可以是靠近L1高速缓存但比L1高速缓存大的快速访问存储器。在一些实施例中,附加级别的高速缓存(L3高速缓存)可选地位于每个处理核心上。这些级别的片上高速缓存可以例如使用快速访问静态随机存取存储器(SRAM)来实现。
片外高速缓存,在本文被称为高速缓存34,可以理解为是末级高速缓存(LLC),或离处理电路24最远的高速缓存。虽然通常LLC是L3高速缓存,但在存储器子系统32中有附加的第四级(L4)高速缓存的实施例中,LLC是L4高速缓存并且L3高速缓存(以虚线框示出)被置于L2片上高速缓存和L4或LLC(高速缓存34)之间。这个LLC(或高速缓存34)在本文也将被称为离处理电路24(或处理设备)最远的一级高速缓存。L3(或L2)高速缓存,无论哪个是存储器子系统32中的倒数第二级高速缓存,为了清楚地与高速缓存34区分开来,在本文可将其称为距处理电路24(例如,处理设备)第二远级别的高速缓存。
在这些实施例中,如图1B所示,数据通信系统10进一步包括一个或更多个图形处理单元(GPU)31,其包括图形高速缓存31A,也可以访问高速缓存34。在这些实施例中,存储器子系统32进一步包括一个或更多个存储器控制器50(或MC),用于控制对易失性存储器的访问,例如,前面讨论的RAM 36。该RAM 36通常是动态RAM(DRAM),但也可以是另一种类型的易失性存储器。存储器控制器50可以被配置为将与存储在高速缓存34中的数据相关联的虚拟地址(VA)和/或高速缓存行指派和/或转换到RAM 36的物理地址(PA)。以这种方式,存储器控制器50协调逐出过程,并且连贯地追踪存储在高速缓存34中的数据和存储在RAM 36中的数据,从而从处理电路24卸载这项工作。因此,根据至少一些实施例,处理电路24可以在存储器控制器50的帮助下,确定用于映射与I/O(或内容传输)请求相关联的任何数据的虚拟地址的RAM 36内的物理地址的连续范围,这在本文讨论。
图2是根据至少一些实施例的操作性框图200,示出了在易失性存储器(或RAM)中虚拟地址(VA)和连续范围的物理地址(PA)之间的基于散列的分配,以便将VA映射到末级高速缓存(LLC)中的特有高速缓存行。如图所示,用于高速缓存到RAM或RAM到高速缓存的数据移动的X-Gbps(其中“Gbps”是“千兆位/秒”)速度比所有处理核心的V-Gpbs速度加起来要慢得多(<<),这在访问易失性存储器时产生了上述瓶颈,在本实施例中,为了简单解释,将易失性存储器示为RAM 36
在这些实施例中,处理设备(例如,至少包括处理电路24)生成虚拟地址(VA),虚拟地址(VA)针对将是响应于输入/输出(I/O)请求而要进行被处理或传输中的至少一种的数据而按顺序编号。处理设备可以进一步分配易失性存储器的连续范围的物理地址202。一旦为VA分配了该连续范围的物理地址202,处理设备可以进一步基于对连续范围的物理地址202的相应的物理地址(PA)进行散列或基于虚拟地址(VA)和连续范围的物理地址202的相应物理地址之间的映射而生成一组基于散列的值。进行散列可以理解为对每个相应的PA或对每个相应的PA和相应的PA被映射到的对应VA的组合执行散列算法。生成的基于散列的值确保在任何给定的高速缓存行上的命中不会在虚拟地址之间重叠。
一旦生成一组基于散列的值,基于散列的值就可被存储在表或其他数据结构中以供将来参考。在这些实施例中,处理设备可以进一步确定与一组基于散列的值中的每个相应的基于散列的值相对应的高速缓存34的特有高速缓存行。以这种方式,每个按顺序编号的VA之间的对应映射被映射到特有的高速缓存行,而在映射到特有高速缓存行的VA之间没有任何冲突。
在公开的实施例中,为了确保基于一组基于散列的值的高速缓存映射的特有性,处理设备可以进一步将分配给虚拟地址的物理地址202的连续范围限制为高速缓存34的大小,例如,LLC。以这种方式,有足够的高速缓存行用于虚拟地址,而虚拟地址不必共享任何高速缓存行。
此外,物理地址202的连续范围的分配可以是非一致性分配,因此处理设备可以执行确保高速缓存和RAM访问一致性的DMA指令。在各种实施例中,非设备相关的数据,例如与数据通信装置10的应用相关的数据,通常将被非一致地管理。
另外,在各种实施例中,可以使物理地址202的连续范围的大小与任何I/O请求的最大可能大小相匹配,例如,64KB、128KB、256KB等。因此,即使是最大的I/O请求的大小也可以由与高速缓存34的大小相匹配的物理地址的连续物理分配的大小来处理。物理地址202的连续范围的分配与I/O请求的最大可能大小的这种匹配确保传入的I/O(或内容传输)请求不会使得高速缓存34的任何高速缓存行的映射与另一高速缓存行的映射相冲突。
图3是根据至少一些实施例的操作性数据流图300,其中基于图2的基于散列的分配,数据通信系统10的数据从存储设备318和/或网络端口314直接路由通过高速缓存34,而不将数据逐出到易失性存储器。在一些实施例中,存储设备318是外围存储设备18中的至少一个,或者是作为远程设备16中的一个的存储设备(图1A)。在至少一个实施例中,存储设备318是管理(或被配置为管理)多个存储盘的存储集线器或网络交换机。在一些实施例中,网络端口314是连接到分组数据网络14的网络端口28中的一个或更多个(图1A),例如用于从一个或更多个网络和/或远程设备16的一个或更多个发送或接收数据。
在至少一些实施例中,处理设备(例如,处理电路24的至少一部分)使得I/O(或内容传输)请求的数据直接存储在高速缓存34的特有高速缓存行中,这些高速缓存行被确定为参考图2解释。如所解释的,因为高速缓存34具有存储所有这些数据的能力,因此向/从高速缓存34向/从存储设备318或向/从网络端口314传输数据不需要访问RAM 36,避免了与从高速缓存34逐出数据或从高速缓存34检索逐出的数据相关联的延迟。因此,处理设备可以使得数据直接从高速缓存34传送到存储设备318或网络端口314中的至少一个。此外,处理设备可以进一步改变存储在高速缓存34的特有高速缓存行中的至少一个中的数据,而不将数据逐出到电压存储器(例如,RAM 36)。
在这些实施例中,如图3所示,在RAM 36处的数据访问的X-Gbps速度仍然明显慢于以下中的任何一个:i)所有存储设备318访问组合的Y-Gbps;ii)所有网络端口314访问组合的Z-Gbps;iii)所有高速缓存34访问组合的W-Gbps;以及iv)所有处理器核心访问组合的V-Gbps。出于这个原因,消除RAM访问导致数据通信系统10的显著的数据速度和吞吐量性能增益。
在至少一些实施例中,处理电路24进一步执行调度器算法以将物理地址202的连续范围分配给特定的应用或进程,并且在完成时释放该物理地址202的连续范围,例如使得处理电路24可以将相同或不同的连续范围的物理地址分配给响应于第二I/O请求而要进行被处理或传输中的至少一个的新的(或第二)数据。在一些实施例中,例如,RAM 36被划分为N个分区,每个分区的大小用作物理地址的连续范围,并且可为其选择。如果分配给同一连续范围的物理地址202,那么处理电路24可以将多个虚拟地址指派给第二数据,同时保持该组基于散列的值,并使得相似顺序的VA的第二数据直接存储在高速缓存34的相同的特有高速缓存行中。
否则,在至少一个实施例中,如果分配给不同的连续范围的物理地址以处理随后的I/O请求,则处理电路24可以基于新的相应的物理地址或基于多个虚拟地址和新的相应的物理地址之间的映射来生成新的一组基于散列的值。然后,可以采用该新的(或不同的)一组基于散列的值来为多个虚拟地址中的每个相应的虚拟地址确定特有的高速缓存行,有效地生成一组新的VA到高速缓存行的映射,以用于索引高速缓存34内的第二数据。这些新的VA到高速缓存行的映射然后可以在延长的时间段内使用,除非有需要(例如基于调度),以分配新的连续范围的PA。
在一些实施例中,处理电路24还执行调度器算法,以还消除各种I/O(或内容)传输请求的冲突,将某些请求优先于其他请求,并且以其他方式确保优先的数据首先得到处理。例如,特定线程或应用程序的数据可以根据优先级级别进行不同标记,诸如在这种数据的分组报头中。然后,当I/O请求进来时,I/O请求本身也可以包括优先级指示符,其帮助处理电路24调度多个并发I/O请求的处理。
图4是根据至少一些实施例的用于使用所公开的基于散列的分配将VA映射到图3的特有高速缓存行的方法400的流程图。该方法400可由包括硬件、软件、固件或其任何组合的处理逻辑执行。例如,该方法400可以由数据通信系统10的处理电路24(或处理设备)执行。尽管以特定的序列或顺序显示,但除非另有规定,否则过程的顺序可以修改。因此,示出的实施例应仅被理解为示例,并且图示的过程可以以不同的顺序执行,并且一些过程可以并行地执行。此外,在各种实施例中可以省略一个或更多个过程。因此,并非每个实施例都需要所有的过程。其他的过程流程是可能的。
在操作410,处理逻辑生成多个虚拟地址,这些虚拟地址针对响应于输入/输出(I/O)请求而要进行被处理或传输中的至少一个的数据而按顺序编号。
在操作420,处理逻辑针对数据分配计算系统的易失性存储器的连续范围的物理地址。
在操作430,处理逻辑基于连续范围的物理地址中的相应物理地址或基于相应的物理地址和多个虚拟地址之间的映射,来生成一组基于散列的值。
在操作440,处理逻辑确定与一组基于散列的值中的每个相应的基于散列的值相对应的高速缓存的特有高速缓存行。
在操作450,处理逻辑使得数据被直接存储在高速缓存的特有高速缓存行中。这里,“直接存储”是指无需首先访问易失性存储器来检索数据。
图5是根据至少一些实施例的操作性数据流图500,其中基于图2的基于散列的分配,数据通信系统的数据从图形处理单元(GPU)和/或中央处理单元(CPU)直接路由通过第二最高级的高速缓存,而不将数据逐出到易失性存储器。在这些实施例中,处理电路24(例如,处理设备)与各种级别的高速缓存进行交互,包括将高速缓存34(例如,LLC)当作图3的图300中的RAM 36来对待,以及将L2(或L3)高速缓存当作图3的图300中的高速缓存34来对待。由于I/O(或内容传输)请求来自位于本地(例如作为数据通信系统10的一部分)的图形处理单元(GPU)531或中央处理单元(CPU)516中的一个或两个,所以数据无需逐出到LLC而流经的高速缓存位置的这种转变是可能的。在至少一个实施例中,CPU 516与处理电路24相同。
在这些实施例中,LLC或高速缓存34仍然被称为距处理设备最远级别的高速缓存,并且L2高速缓存(或者如果LLC是L4高速缓存,则L3高速缓存)仍然被称为距处理设备第二远级别的高速缓存,例如,在L2(或L3)高速缓存耦合在最远级别的高速缓存和处理设备之间的情况下。
在这些实施例中,处理设备(其包括处理电路24的至少一部分)被配置为生成多个虚拟地址,这些虚拟地址针对响应于来自CPU或GPU的输入输出(I/O)请求而要进行被处理或传输中的至少一个的数据而按顺序编号。处理设备可以进一步针对数据分配最远级别的高速缓存(本实施例中的LLC)的连续范围的物理地址502。处理设备可以进一步基于相应的物理地址或多个虚拟地址与连续范围的物理地址502中的相应物理地址之间的映射中的一个来生成一组基于散列的值。处理设备可以进一步确定与该组基于散列的值中的每个相应的基于散列的值相对应的第二远级别的高速缓存的特有高速缓存行,并且使得数据直接存储(例如,不访问最远级别的高速缓存)在第二远高速缓存的特有高速缓存行中。处理设备可进一步使得数据被直接传输(例如,不访问LLC)到发起请求的CPU或GPU。
在至少一些实施例中,距处理设备最远的级别的高速缓存是第三级(L3)高速缓存,而离处理设备第二远的级别的高速缓存是第二级(L2)高速缓存。在至少其他的实施例中,离处理设备最远的级别的高速缓存是第四级(L4)高速缓存,并且离处理设备的第二远的级别的高速缓存是第三级(L3)高速缓存。在一些实施例中,处理设备进一步改变存储在特有高速缓存行中的至少一个中的数据,而不将数据逐出到最远级别的高速缓存。
在一些实施例中,处理逻辑进一步接收响应于第二I/O请求而要进行被处理或传输中的至少一个的第二数据。处理设备可以进一步将多个虚拟地址指派给第二数据,同时保持一组基于散列的值。处理设备可以进一步使得第二数据直接存储在第二远的高速缓存的特有高速缓存行中。
否则,在至少一个实施例中,如果分配给不同的连续范围的物理地址,处理设备基于新的相应的物理地址或基于多个虚拟地址和新的相应的物理地址之间的映射来生成新的一组基于散列的值。新的(或不同的)这组基于散列的值然后可以被用于为多个虚拟地址中的每个相应的虚拟地址确定特有的高速缓存行,有效地生成新的一组VA到高速缓存行的映射,以用于索引在第二远级别的高速缓存(例如,L2或L3高速缓存)内的第二数据。
图6是根据至少一些实施例的用于使用所公开的基于散列的分配将VA映射到图5的特有高速缓存行的方法600的流程图。该方法600可由包括硬件、软件、固件或其任何组合的处理逻辑执行。例如,该方法600可由数据通信系统10的处理电路24(或处理设备)执行。尽管以特定的顺序或次序示出,除非另有规定,否则过程的顺序可以修改。因此,示出的实施例应仅被理解为示例,并且示出的过程可以以不同的顺序执行,并且一些过程可以并行执行。此外,在各种实施例中可以省略一个或更多个过程。因此,并非每个实施例都需要所有的过程。其他过程流程也是可能的。
在操作610,处理逻辑生成多个虚拟地址,这些虚拟地址针对响应于从CPU或GPU接收的输入输出(I/O)请求而要进行被处理或被传输中的至少一个的数据而按顺序编号。CPU可以是CPU 516(图5)中的至少一个的CPU,并且GPU可以是GPU 531(图5)中的至少一个的GPU。
在操作620,处理逻辑针对数据分配最远级别的高速缓存的连续范围的物理地址。这可以是图5中示出的LLC中的连续范围的物理地址502。
在操作630,处理逻辑基于相应的物理地址或多个虚拟地址和连续范围的物理地址中的相应物理地址之间的映射中的一个,来生成一组基于散列的值。
在操作640,处理逻辑确定与一组基于散列的值中的每个相应的基于散列的值相对应的第二远级别的高速缓存的特有高速缓存行。
在操作650,处理使得数据被直接存储在第二远的高速缓存的特有高速缓存行中。
其他变化在本公开的范围内。因此,虽然所公开的技术容易受到各种修改和替代结构的影响,但其某些示出的实施例在附图中显示,并且已经在上文详细描述。然而,应当理解的是,无意将本公开的内容限制于所公开的特定形式,相反,其意图是涵盖所有的修改、替代结构以及属于本公开的精神和范围内的等价物,如所附权利要求书中所定义的。
在描述公开的实施例的上下文中(特别是在以下权利要求的上下文中)使用术语“一个(a)”和“一个(an)”以及“该(the)”和类似的指称应被解释为涵盖单数和复数两者,除非本文另有说明或与上下文明显矛盾,而不是作为术语的定义。除非另有说明,否则术语“包括”、“具有”、“包括”和“包含”应被理解为开放式术语(意思是“包括但不限于”)。“连接”,在未经修改并指物理连接时,应理解为部分或全部包含在…内、连接至或连接在一起,即使有东西在中间。本文对数值范围的叙述只是为了作为单独提及落在范围内的每个单独的数值的一种速记方法,除非本文另有说明,并且每个单独的数值被纳入说明书,就像在这里单独叙述的一样。在至少一个实施例中,除非另有说明或与上下文相矛盾,否则使用术语“组”(例如,“一组项目”)或“子集”应被理解为包括一个或更多个成员的非空的集合。此外,除非另有说明或与上下文相矛盾,否则对应组的术语“子集”不一定表示对应组的适当子集,但子集和对应组可以相等。
连词性语言,诸如形式为“A、B和C中的至少一个”或“A、B和C中的至少一个”的短语,除非另外特别说明或另外与上下文明显矛盾,否则在上下文中被理解为一般用于表示项目、术语等可以是A或B或C,或A和B和C的集合的任何非空子集。例如,在具有三个成员的集合的说明性示例中,连词短语“A、B和C中的至少一个”和“A、B和C中的至少一个”指的是以下集合中的任何一个:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这样的连接性语言一般并不意在暗示某些实施例需要A中的至少一个、B中的至少一个和C中的至少一个各自存在。此外,除非另有说明或与上下文相矛盾,否则术语“多个”表示是复数的状态(例如,“多个项目”指示多个项目)。在至少一个实施例中,复数的项目的数量至少是两个,但在明确指示或由上下文指示时可以更多。此外,除非另有说明或从上下文中可以看出,短语“基于”是指“至少部分地基于”而不是“仅基于”。
本文描述的过程的操作可以以任何合适的顺序执行,除非本文另有说明或与上下文明显矛盾。在至少一个实施例中,诸如本文描述的那些过程(或其变化和/或组合)的过程在配置有可执行指令的一个或更多个计算机系统的控制下执行,并且被实现为通过硬件或其组合在一个或更多个处理器上集体执行的代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用程序)。在至少一个实施例中,代码例如以计算机程序的形式存储在计算机可读存储介质上,计算机程序包括可由一个或更多个处理器执行的多条指令。在至少一个实施例中,计算机可读存储介质是非暂时性的计算机可读存储介质,其不包括暂时性信号(例如,传播的瞬时电或电磁传输),但包括暂时性信号的收发器内的非暂时性数据存储电路(例如,缓冲区、高速缓存和队列)。在至少一个实施例中,代码(例如,可执行代码或源代码)被存储在一组一个或更多个非暂时性计算机可读存储介质上,这些存储介质上存储有可执行指令(或其他存储可执行指令的存储器),当可执行指令由计算机系统的一个或更多个处理器执行时(即,作为被执行的结果),使得计算机系统执行本文所述的操作。在至少一个实施例中,一组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的一个或更多个个体的非暂时性存储介质缺少所有的代码,而多个非暂时性计算机可读存储介质共同存储所有的代码。在至少一个实施例中,可执行指令被执行,使得不同的指令由不同的处理器执行。
因此,在至少一个实施例中,计算机系统被配置为实现一种或更多种服务,这些服务单独或集体地执行本文所述的过程的操作,并且这样的计算机系统被配置有能够执行操作的适用硬件和/或软件。进一步地,实现本公开的至少一个实施例的计算机系统是单个设备,并且在另一个实施例中,是分布式计算机系统,其包括以不同的方式操作的多个设备,使得分布式计算机系统执行本文所述的操作并且使得单个设备不执行所有操作。
使用本文提供的任何和所有示例或示例性语言(例如,“诸如”),仅仅是旨在更好地阐明本公开的实施例,并且不对本公开的范围构成限制,除非另有声明。说明书中的任何语言都不应被解释为指示任何未要求保护的元素对于本公开的实践是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,在此通过引用并入,其程度与每个参考文献单独并明确指示通过引用并入并且在本文完整地阐述其内容的程度相同。
在说明书和权利要求中,可以使用术语“耦合”和“连接”,以及它们的派生词。应当理解的是,这些术语可能并不旨在作为彼此的同义词。相反,在特定的示例中,“连接”或“耦合”可以用来指示两个或更多个元素彼此之间有直接或间接的物理或电气接触。“耦合”还可以表示两个或更多个元素彼此不直接接触,但仍然相互合作或相互作用。
除非另有特别说明,否则可以理解的是,在整个说明书中,诸如“处理”、“计算”、“计算”、“确定”等的术语是指计算机或计算系统或类似的电子计算设备的动作和/或过程,其将在计算系统的寄存器和/或存储器内的表示为物理量(诸如电子量)的数据操纵和/或转化为在计算系统的存储器、寄存器或其他此类信息存储、传输或显示设备内的类似表示为物理量的其他数据。
以类似方式,术语“处理器”可指处理来自寄存器和/或存储器的电子数据并将该电子数据转化为可存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性的示例,“处理器”可以是网络设备或MACsec设备。“计算平台”可以包括一个或更多个处理器。如本文所用,“软件”进程可以包括,例如随着时间推移执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。另外,每个进程可以指多个进程,用于依次或并行、连续或间歇地执行指令。在至少一个实施例中,术语“系统”和“方法”在本文可互换使用,只要系统可体现一个或更多个方法并且方法可被视为系统。
在本文中,可以提及获得、获取、接收或输入模拟或数字数据到子系统、计算机系统或计算机实现的机器。在至少一个实施例中,获得、获取、接收或输入模拟和数字数据的过程可以通过各种方式完成,例如通过接收数据作为函数调用或对应用编程接口的调用的参数。在至少一个实施例中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传输数据来完成。在至少一个实施例中,获得、获取、接收或输入模拟或数字数据的过程可以通过从提供实体到获取实体经由计算机网络传输数据来完成。在至少一个实施例中,还可以提及提供、输出、传输、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序接口或进程间通信机制的参数进行传输来完成。
尽管这里的描述阐述了所描述的技术的示例实施例,但其他架构可用于实现所描述的功能,并且旨在本公开的范围内。此外,尽管为了描述的目的可以在上面定义责任的具体分配,但是各种功能和责任可能根据情况以不同的方式分配和划分。
此外,尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解的是,在所附权利要求中要求的主题不一定限于所描述的具体特征或动作。相反,具体特征和动作作为实施权利要求的示例性形式被公开。
Claims (21)
1.一种计算系统,包括:
易失性存储器;
与所述易失性存储器耦合的高速缓存;以及
与所述高速缓存耦合的处理设备,所述处理设备与存储设备或网络端口中的至少一个耦合,并且用于:
生成多个虚拟地址,所述多个虚拟地址针对响应于输入/输出I/O请求而要进行被处理或被传输中的至少一个的数据而按顺序编号;
针对所述数据分配所述易失性存储器的连续范围的物理地址;
基于所述多个虚拟地址和所述连续范围的物理地址中的相应物理地址之间的映射,生成一组基于散列的值;
确定与所述一组散列的值中的每个相应的基于散列的值相对应的所述高速缓存的特有高速缓存行;以及
使得所述数据被直接存储在所述高速缓存的所述特有高速缓存行中。
2.根据权利要求1所述的计算系统,其中所述高速缓存是离所述处理设备最远级别的高速缓存,并且其中所述处理设备进一步用于使得所述数据直接从所述高速缓存被传送到所述存储设备或所述网络端口中的至少一个。
3.根据权利要求2所述的计算系统,其中所述处理设备进一步用于:
接收响应于第二I/O请求而要进行被处理或被传输中的至少一个的第二数据;
将所述多个虚拟地址指派给所述第二数据,同时保持所述一组基于散列的值;以及
使得所述第二数据直接存储在所述高速缓存的所述特有高速缓存行中。
4.根据权利要求1所述的计算系统,其中所述处理设备进一步用于改变存储在所述特有高速缓存行中的至少一个中的所述数据,而不将所述数据逐出到所述易失性存储器。
5.根据权利要求1所述的计算系统,其中所述高速缓存是第三级L3高速缓存或第四级L4高速缓存中的一个。
6.根据权利要求1所述的计算系统,其中所述处理设备进一步用于将分配给所述多个虚拟地址的所述物理地址的连续范围限制为所述高速缓存的大小。
7.根据权利要求1所述的计算系统,其中所述连续范围的物理地址的所述分配是非一致性的,并且其中所述连续范围的物理地址的大小与所述I/O请求的最大可能大小相匹配。
8.根据权利要求1所述的计算系统,其中所述存储设备是管理一个或更多个存储设备的网络交换机或存储集线器中的一个。
9.一种方法,包括:
由与计算系统中的高速缓存耦合的处理设备生成多个虚拟地址,所述多个虚拟地址针对响应于输入/输出I/O请求而要进行被处理或被传输中的至少一个的数据而按顺序编号;
由所述处理设备针对所述数据分配所述计算系统的易失性存储器的连续范围的物理地址;
由所述处理设备基于所述连续范围的物理地址中的相应物理地址来生成一组基于散列的值;
由所述处理设备确定与所述一组基于散列的值中的每个相应的基于散列的值相对应的所述高速缓存的特有高速缓存行;以及
由所述处理设备使得所述数据被直接存储在所述高速缓存的所述特有高速缓存行中。
10.根据权利要求9所述的方法,其中所述高速缓存是离所述处理设备最远级别的高速缓存,所述方法进一步包括使得所述数据直接从所述高速缓存传送到存储设备或网络端口中的至少一个。
11.根据权利要求10所述的方法,进一步包括:
接收响应于第二I/O请求而要进行被处理或被传输中的至少一个的第二数据;
将所述多个虚拟地址指派给所述第二数据,同时保持所述一组基于散列的值;以及
使得所述第二数据被直接存储在所述高速缓存的所述特有高速缓存行中。
12.根据权利要求9所述的方法,进一步包括改变存储在所述特有高速缓存行中的至少一个中的所述数据,而不将所述数据逐出到所述易失性存储器。
13.根据权利要求9所述的方法,其中所述高速缓存是第三级L3高速缓存或第四级L4高速缓存中的一个。
14.根据权利要求9所述的方法,进一步包括将分配给所述多个虚拟地址的所述物理地址的连续范围限制为所述高速缓存的大小。
15.根据权利要求9所述的方法,其中分配所述连续范围的物理地址是非一致性的分配,并且其中所述连续范围的物理地址的大小与所述I/O请求的最大可能大小相匹配。
16.一种计算系统,包括:
与至少一个中央处理单元CPU和至少一个图形处理单元GPU耦合的处理设备;
离所述处理设备最远级别的高速缓存;以及
耦合在所述最远级别的高速缓存和所述处理设备之间的离所述处理设备第二远级别的高速缓存;以及
其中所述处理设备用于:
生成多个虚拟地址,所述多个虚拟地址针对响应于从至少一个CPU或至少一个GPU接收到的输入输出I/O请求而要进行被处理或被传输中的至少一个的数据而按顺序编号;
针对所述数据分配所述最远级别的高速缓存的连续范围的物理地址;
基于以下中的一者生成一组基于散列的值:相应物理地址、或在所述多个虚拟地址和所述连续范围的物理地址的相应物理地址之间的映射;
确定所述第二远级别的高速缓存的与所述一组基于散列的值中的每个相应的基于散列的值相对应的特有高速缓存行;以及
使得所述数据被直接存储在第二远高速缓存的所述特有高速缓存行中。
17.根据权利要求16所述的计算系统,其中离所述处理设备最远级别的高速缓存是第三级L3高速缓存,并且离所述处理设备第二远级别的高速缓存是第二级L2高速缓存。
18.根据权利要求16所述的计算系统,其中离所述处理设备最远级别的高速缓存是第四级L4高速缓存,并且离所述处理设备第二远级别的高速缓存是第三级L3高速缓存。
19.根据权利要求16所述的计算系统,其中所述处理设备进一步用于:
接收响应于第二I/O请求而要进行被处理或被传输中的至少一个的第二数据;
将所述多个虚拟地址指派给所述第二数据,同时保持所述一组基于散列的值;以及
使得所述第二数据被直接存储在所述第二远高速缓存的所述特有高速缓存行中。
20.根据权利要求16所述的计算系统,其中所述处理设备进一步用于改变存储在所述特有高速缓存行中的至少一个中的所述数据,而不将所述数据逐出到所述最远级别的高速缓存。
21.根据权利要求16所述的计算系统,其中所述处理设备进一步用于使得所述数据直接从所述高速缓存传送到发起所述请求的所述至少一个CPU或所述至少一个GPU。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/668,803 US11954037B2 (en) | 2022-02-10 | 2022-02-10 | Memory address allocation and cache mapping to retain data in cache |
US17/668,803 | 2022-02-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116578501A true CN116578501A (zh) | 2023-08-11 |
Family
ID=87312617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310084347.8A Pending CN116578501A (zh) | 2022-02-10 | 2023-01-16 | 用于保留高速缓存中的数据的存储器地址分配和高速缓存映射 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11954037B2 (zh) |
CN (1) | CN116578501A (zh) |
DE (1) | DE102023201085A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US9405703B2 (en) * | 2014-06-04 | 2016-08-02 | Advanced Micro Devices, Inc. | Translation lookaside buffer |
US10380015B2 (en) * | 2017-06-30 | 2019-08-13 | Western Digital Technologies, Inc. | Logical address range mapping for storage devices |
US10452558B2 (en) * | 2017-06-30 | 2019-10-22 | Western Digital Technologies, Inc. | Address range mapping for storage devices |
US11314446B2 (en) * | 2020-06-25 | 2022-04-26 | Micron Technology, Inc. | Accelerated read translation path in memory sub-system |
US11221944B1 (en) * | 2020-08-25 | 2022-01-11 | Vmware, Inc. | Managing metadata for a backup data storage |
-
2022
- 2022-02-10 US US17/668,803 patent/US11954037B2/en active Active
-
2023
- 2023-01-16 CN CN202310084347.8A patent/CN116578501A/zh active Pending
- 2023-02-10 DE DE102023201085.2A patent/DE102023201085A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102023201085A1 (de) | 2023-08-10 |
US11954037B2 (en) | 2024-04-09 |
US20230251971A1 (en) | 2023-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102804152B (zh) | 对存储器层次结构中的闪存的高速缓存一致性支持 | |
US8176220B2 (en) | Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors | |
US9280290B2 (en) | Method for steering DMA write requests to cache memory | |
US20160291866A1 (en) | Command load balancing for nvme dual port operations | |
US20060236063A1 (en) | RDMA enabled I/O adapter performing efficient memory management | |
KR102064764B1 (ko) | 메시지 시그널 인터럽트의 통신 | |
US20130054896A1 (en) | System memory controller having a cache | |
US11907814B2 (en) | Data path for GPU machine learning training with key value SSD | |
US10042773B2 (en) | Advance cache allocator | |
US20160085450A1 (en) | System for providing remote memory and temporary page pool operating method for providing remote memory | |
US20230057633A1 (en) | Systems, methods, and apparatus for transferring data between interconnected devices | |
US10705985B1 (en) | Integrated circuit with rate limiting | |
EP3166019B1 (en) | Memory devices and methods | |
US10140057B2 (en) | Apparatuses and methods for multiple address registers for a solid state device | |
CN113742115B (zh) | 用于通过处理器处理页面错误的方法 | |
US11954037B2 (en) | Memory address allocation and cache mapping to retain data in cache | |
CN111913662B (zh) | Slc写性能提升方法、装置、计算机设备及存储介质 | |
CN111026680A (zh) | 将第一标识符映射到第二标识符 | |
EP4134822A2 (en) | Systems, methods, and apparatus for memory access in storage devices | |
US20240095184A1 (en) | Address Translation Service Management | |
US11327909B1 (en) | System for improving input / output performance | |
US20220342837A1 (en) | Peripheral component interconnect express device and operating method thereof | |
CN115617501A (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 |