CN115203076B - 数据结构优化的专用存储器缓存 - Google Patents
数据结构优化的专用存储器缓存 Download PDFInfo
- Publication number
- CN115203076B CN115203076B CN202210312894.2A CN202210312894A CN115203076B CN 115203076 B CN115203076 B CN 115203076B CN 202210312894 A CN202210312894 A CN 202210312894A CN 115203076 B CN115203076 B CN 115203076B
- Authority
- CN
- China
- Prior art keywords
- cache
- data structure
- controller
- data
- caches
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000013528 artificial neural network Methods 0.000 claims description 25
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 52
- 230000004044 response Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000013598 vector Substances 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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
-
- 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/454—Vector or matrix data
Abstract
本发明公开了与缓存有关的方法和系统。一种公开的系统包括至少一个存储至少两个数据结构的存储器。所述至少两个数据结构包括第一数据结构和第二数据结构。所述系统还包括至少两个缓存,第一缓存用于缓存所述第一数据结构,第二缓存用于缓存所述第二数据结构。所述系统还包括与所述至少两个缓存通信连接的控制器。所述控制器基于所述第一数据结构单独配置所述第一缓存,并且基于所述第二数据结构单独配置所述第二缓存。所述系统还包括至少一个与所述至少两个缓存通信连接的处理器。所述处理器在执行复杂计算期间使用所述至少两个缓存访问所述至少两个数据结构中的每一个。
Description
技术领域
本发明涉及计算机缓存领域有关的方法和系统,尤其涉及数据结构优化的专用存储器缓存。
背景技术
缓存是存储数据的组件。它们可以在硬件或软件中实现。诸如处理管道(processing pipeline)、操作系统、web浏览器或其他客户端之类的计算组件可以通过向缓存发送访问请求来从缓存获取存储的数据,并通过向缓存发送存储请求来将数据存储在缓存中。缓存可以通过返回作为访问请求主题的数据或存储作为存储请求主题的数据来服务这些请求。缓存可以将数据存储在缓存存储器中,缓存存储器存储少量数据,但可以快速提供数据,或者,缓存可以将数据存储在后备存储器中,后备存储器可以存储更多数据,但提供数据的速度较慢。
图1是用于说明本发明公开中使用的一些术语的缓存操作的框图100。该框图显示了处理访问请求和检索数据的缓存操作,但类似的原则适用于处理存储请求。框图100包括客户端110,客户端110将访问请求111发送到缓存120并保持访问请求响应112。如果缓存成功,则访问请求响应112将包括所请求的数据。一旦接收到访问请求111,缓存120将从缓存存储器122检索请求的数据,或者,如果数据不在缓存存储器122中,则从后备存储器130检索请求的数据。缓存存储器122和后备存储器130的示例分别是高速静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。缓存还可以包括具有不同类型存储器的后台存储,这些存储器根据存储器的速度分为不同的级别,更高的级别被更高速度的存储器占有。如在本发明公开中所使用的,如果数据被存储为可在访问请求响应112中访问以返回,则数据被缓存存储器120“缓存”,而不管数据是存储在缓存存储器122中还是存储在后备存储器130中。
如果缓存能够预测请求哪些数据并将数据存储在更快的存储器中,则缓存可以更快地处理访问请求。当缓存成功地预测在访问请求中将请求哪些数据,并且数据可用以及数据存储在缓存存储器122中时,这可以被称为缓存“命中(hit)”。如果数据在缓存存储器122中不可用,并且缓存120必须从后备存储器130访问数据,则可以将其称为缓存“未命中(miss)”。缓存控制器121可配置为将缓存命中访问请求的比率最大化,以及将使用访问请求响应112服务来自客户端110的访问请求的总体速度最大化。缓存控制器121可以配置为利用访问请求中的预期的空间和时间局部性来改进这些度量。缓存控制器121还可以通过改变数据被标记以指示其在缓存存储器122中的存在和位置、改变当缓存存储器122中的数据被后备存储器130中的数据替换时的策略、改变存储在缓存中的数据何时直接写入后备存储器130或存储在缓存存储器122中的策略的方案和方式以及许多其他方法来配置。
发明内容
本发明公开了与计算机缓存领域有关的方法和系统。具体公开的实施例涉及具有至少两个缓存的计算系统,其中每个所述缓存专用于特定数据结构,并且针对该数据结构进行优化。所述数据结构可用于存储用于单个复杂计算的数据,该计算需要存储在至少两个缓存中的数据。所述缓存可以优化为缓存分配给它们的数据结构,以将延迟最小化并将访问请求响应的吞吐量最大化。所述优化可以包括将所述缓存的命中率和处理所述访问请求的速率最大化。所述优化可以通过基于对所述数据结构中的所述数据的评估,或基于服务于所述数据结构的所述缓存的访问请求方面性能的评估改变所述缓存来实现。
本发明的特定实施例涉及由至少一个处理器或计算节点网络以有向图的加速执行的形式执行复杂计算。在特定实施例中,所述计算节点网络包括多核处理器,其中所述计算节点为所述多核处理器中的处理核心。在特定实施例中,所述有向图可以实现人工神经网络(ANN)。在特定实施例中,所述有向图可以实现深度学习推荐模型(DLRM)。在这些实施例中,执行所述复杂计算可以包括从神经网络生成推理。在这些实施例中,所述数据结构可以是张量,所述张量存储网络数据,例如输入、权重、过滤器、累计值、嵌入向量以及从ANN推断或训练ANN所需的其他信息。在特定实施例中,一个数据结构可以是神经网络或其一部分的一层,或者是神经网络或其一部分的卷积部分的过滤器。
在本发明的特定实施例中,公开了一种系统。所述系统包括至少一个存储至少两个数据结构的存储器。所述至少两个数据结构包括第一数据结构和第二数据结构。所述系统还包括至少两个缓存。所述至少两个缓存包括缓存第一数据结构的第一缓存和缓存第二数据结构的第二缓存。所述系统还包括与所述至少两个缓存通信连接的控制器。所述控制器基于所述第一数据结构单独配置第一缓存,并且基于所述第二数据结构单独配置第二缓存。所述系统还包括至少一个与所述至少两个缓存通信连接的处理器。所述处理器在执行复杂计算期间使用所述至少两个缓存访问所述至少两个数据结构中的每一个。
在本发明的特定实施例中,公开了一种方法。所述方法包括使用控制器基于第一数据结构配置第一缓存,以及使用第一缓存缓存所述第一数据结构。所述方法还包括使用所述控制器基于第二数据结构配置第二缓存,以及使用所述第二缓存缓存所述第二数据结构。所述方法还包括使用至少一个处理器执行复杂计算;以及使用所述至少一个处理器,在执行所述复杂计算期间,访问来自所述第一数据结构的数据和来自所述第二数据结构的数据。
附图说明
图1示出了根据现有技术在处理存储器访问请求时缓存的操作框图。
图2示出了根据本文公开的本发明特定实施例的一组方法的流程图。
图3示出了根据本文公开的本发明特定实施例的用于执行复杂计算的系统。
图4示出了根据本文公开的本发明特定实施例的用于执行复杂计算的计算节点网络。
具体实施方式
本文详细公开了与根据上述发明内容的计算机缓存领域相关的方法和系统。本节中公开的方法和系统是本发明的非限制性实施例,应用于解释目的,不应用于限制本发明的全部范围。应当理解的是,所公开的实施例可以相互重叠,也可以不重叠。因此,一个实施例或其特定实施例的一部分可能在或可能不在另一个实施例或其特定实施例的范围内,反之亦然。可以分别组合或实施来自不同方面的不同实施例。在本发明的大框架内示出的代表性实施例的许多不同组合和子组合,对于本领域技术人员来说可能是显而易见的,但没有明确地示出或描述,不应被解释为排除。
如发明内容中所述,在本发明的特定实施例中,缓存可以专用于特定数据结构,并专门针对其专用数据结构进行优化。这可能是有益的,因为可由缓存控制器用于配置缓存的数据的上述方面,例如访问请求中的预期的空间和时间局部性,可基于所存储数据的特征和/或该数据的利用方式在相当大的程度上变化。本文公开的本发明的特定实施例可有益地应用于在稀疏度高度变化的大型数据结构上操作的机器学习应用,因为在这些应用中,优化缓存的标准方法经常会混淆,因为从具有这些特征的一组数据结构中为一个数据结构优化的缓存策略实际上会延迟同一组中另一个数据结构的缓存性能。
在本发明的特定实施例中,至少一个处理器将在执行复杂计算期间访问至少两个缓存。这些缓存可以专用于执行复杂计算所需的特定数据结构。至少两个缓存可以专用于特定数据结构,因为整个数据结构存储在缓存中,并且需要从数据结构中调用或存储在数据结构中的任何数据都可以从该特定缓存中检索或写入。本文的示例通常说明了具有两个缓存的系统。然而,根据执行复杂计算所需的数据结构的数量,可以使用任意数量的缓存。
数据结构和复杂计算可以呈现各种形式。数据结构可以是复杂计算源代码中的变量。数据结构可以是用于执行有向图中的张量,该有向图通过执行复杂计算得出。数据结构可以包括人工神经网络(ANN)的一层、ANN的单个权重或过滤器、ANN的一层的累计值、ANN的输入和ANN的输出。本领域的普通技术人员将认识到,用于执行实现ANN的复杂计算的张量可受制于多个访问请求,多个访问请求用于复杂计算的复合计算。例如,如果张量是ANN的一层,而ANN是卷积神经网络,那么当过滤器围绕张量滑动以执行整体卷积时,将多次访问同一张量以执行大量复合计算。因此,数据结构是许多访问请求的主题,为这些访问请求优化缓存性能可以相应地为复杂计算的执行提供很大程度的性能改进。
至少一个处理器可以采用各种形式。至少一个处理器可以包括计算节点网络,例如处理器核心网络。至少一个处理器可以包括多核处理器中的多个处理核心。在特定实施例中,至少一个处理器可以是片上网络(NoC)。尽管本文提供的一些具体示例针对以NoC的形式连接一组处理核心,本文公开的方法广泛适用于连接任何形式的计算节点的任何形式的网络,这些计算节点相互协作以执行复杂计算,并且可以相互访问专用缓存以用于数据结构。此外,根据本公开的网络可以在单芯片系统(包括晶圆级单芯片系统)、多芯片单封装系统或多芯片多封装系统中实现,其中芯片通常连接到公共的基板,诸如印刷电路板(PCB)、插入器或者硅网。根据本公开的网络还可以包括多个基板上的芯片,这些基板通过更高级别的公共基板连接在一起,例如在多个PCB的情况下,每个PCB具有一组芯片,其中多个PCB固定在公共背板上。根据本公开的网络也可以在基于芯片的系统中实现。例如,在本发明的特定实施例中,一个或多个计算节点可以由一个或多个芯片封装或实现,例如通过插入器连接芯片。
图2包括根据本发明具体实施例的一组方法的流程图200。这些方法可以由各种系统执行,例如图3中的系统300。流程图200说明了包括至少两个缓存的系统的步骤流程,而流程图200中的省略号用于说明该方法可以由任意数量的独立专用缓存执行的事实。例如,在本发明的特定实施例中,可以使用实现数百个缓存的系统来执行涉及数百个数据结构的复杂计算。流程图200包括基于第一数据结构配置第一缓存和缓存第一数据结构的步骤201和202。流程图200还包括基于第二数据结构配置第二缓存和缓存第二数据结构的步骤211和212。步骤202可由第一缓存执行。步骤212可由第二缓存执行。尽管绘制的步骤使得配置发生在缓存之前,但在本发明的特定实施例中,可以在数据已经存储在缓存中一段时间之后基于数据配置缓存,以使得专门为给定数据结构配置缓存不一定需要在缓存该数据结构之前进行。
步骤201和211可由控制器执行。控制器可以用硬件或软件实现。控制器可以由处理器上的一个或多个核心和可执行源代码实现。处理器可以是缓存的客户端。在替代实施例中,控制器可以与客户端分开实现。例如,在多核处理器中,控制器可以是一个外部控制器,负责管理多核处理器(例如,协助多核处理器各种核心的并行化和编程),或者控制器可以由多核处理器中的一个核心实现。在系统300中,控制器301由处理核心302实现,处理核心302也是缓存303和304的客户端。
流程图200继续使用至少一个处理器执行复杂计算。在图3的示例中,至少一个处理器是处理核心302。复杂计算可能涉及实现ANN的有向图的执行。处理核心302可以使用处理管道和指令序列执行复杂计算。指令序列可以包括处理管道的操作数和操作代码。操作数可以引用存储在第一缓存和第二缓存缓存的数据结构中的数据。因此,步骤203还可以涉及使用至少一个处理器并在执行复杂计算期间,在步骤204访问来自第一数据结构的数据,以及在步骤205访问来自第二数据结构的数据。该步骤可由至少一个处理器执行,因为该处理器将与缓存通信连接以向它们发送访问请求。通信连接可涉及将至少一个处理器与缓存连接的总线。通信连接还可能涉及计算节点网络的网络,其中至少一个处理器是该网络的一部分。例如,通信连接可能涉及NoC的网络层。如图3所示,这些步骤可以包括处理核心302,处理核心302向第一缓存303和第二缓存304提供访问请求310,以便访问来自第一数据结构305和第二数据结构306的数据,以及缓存在访问请求响应311中将来自那些数据结构的数据提供回处理核心302。
在本发明的特定实施例中,缓存专用于特定数据结构。例如,缓存303专用于数据结构305,缓存304专用于数据结构306。缓存专用于数据结构,因为它缓存数据结构,数据结构中的任何数据读写请求都可以由缓存处理。这种配置与传统的缓存技术不同,在传统的缓存技术中,缓存的任务是缓存复杂计算所需的所有数据,并根据整体复杂计算可能需要何时从多个结构访问数据,将数据从多个数据结构拉入缓存存储器。
所示出的方法展示了某些好处,其中数据结构305和数据结构306可以适合于高度不同的缓存配置,该配置基于数据的特征以及在复杂计算中如何使用数据结构。例如,数据结构305可以是DLRM中CNN层的输入。结果,数据结构305将以涉及高度空间局部性的方式使用,因为当CNN层的滤波器在数据结构周围滑动时,数据结构的相邻元素将一起使用。因此,缓存303的最佳缓存配置将是高度偏爱空间局部性并在缓存存储器中保持空间相关值更长时间的配置。在同一DLRM中,数据结构306可以是嵌入查找表,在顺序查找之间几乎没有任何程度的空间关系。因此,缓存303的最佳缓存配置不应应用于缓存304,因为它将导致高水平的缓存未命中,而基于序列中的访问请求和响应之间的逻辑关系的配置会导致这种高水平的缓存未命中。
在前段提到的实施例中,缓存的客户端或多个客户端将配置为保持数据结构和缓存之间的一致性,以便适当的缓存将接收访问请求。在本发明的特定实施例中,缓存在多核处理器中实现,每个缓存可以通过以一对一的对应关系的处理核心来实现,并且一个或多个单独的处理核心可以维护上述一致性,并基于该一致性将访问请求路由到适当的处理核心。或者,每个处理核心可以保持这种一致性或其一部分,并将访问请求直接路由到不同的处理核心。在这些实施例中,每个处理核心还可以配置为仅维持与在执行复杂计算期间它将需要访问的数据结构相关联的部分一致性,复杂计算可能不包括系统中的所有数据结构。例如,当复杂计算的复合计算指令分配给给定的处理核心时,与这些复合计算的操作数相关联的部分一致性可以同时加载到处理核心中。
在本发明的特定实施例中,可以基于数据结构以各种方式配置缓存。缓存可以基于数据结构的特征、缓存在缓存数据结构时观察到的性能或这些因素的组合进行配置。当数据结构首次专用于缓存时,当由数据结构的数据内容的变化触发时、当由缓存数据结构的性能度量的变化触发时、或者这些方法论的组合,可根据设定的时间表周期性地设置缓存的配置。缓存的配置可以是缓存的动态方面,并且可以在利用缓存中的数据的复杂计算的执行过程中改变,或者是缓存的固定方面,在初始设置后在计算过程中不会改变。在本发明的特定实施例中,其中基于所观察到的缓存性能来配置缓存,可以在配置缓存时以迭代方式来观察性能。换句话说,可以配置缓存,并且可以在搜索给定数据结构和/或工作负载的最佳缓存配置时观察该配置中的缓存性能。
在本发明的特定实施例中,可以偶尔基于所观察到的缓存性能的变化、访问请求特征的变化(例如,工作负载的变化)或缓存存储的数据结构的变化来不定期重新配置缓存。在特定实施例中,可以监控数据结构的特征,如果存储数据的稀疏性改变了X%,则可以选择不同的缓存策略。作为另一个示例,如果确定缓存的数据结构或工作负载已超过给定阈值,则可以触发对最优缓存配置的搜索过程,该过程涉及为缓存选择各种配置,并根据这些选择的配置监控缓存的性能。
在基于数据结构的特征配置缓存的实施例中,可以以各种方式选择和评估特征。基于数据结构配置缓存可以包括分析数据结构的数据以产生第一分析。然后可以使用分析来配置缓存。控制器可以进行分析和配置。基于数据结构的特征配置缓存的示例包括根据稀疏性、密度、体积、存储的数据类型(例如,8位整数、16位整数、浮点数、布尔值等)和其他因素分析数据结构的实际数据内容。为此目的进行的分析可能涉及通过从存储器中提取所有数据或从单独的分析引擎接收数据内容的摘要来扫描数据结构的数据内容。当进行改变数据结构内容的计算时,可以更新通过该扫描实现的分析。例如,将数据结构的一部分中的所有条目归零的操作可能会导致在将数据写回缓存时存储的数据结构内容分析的更新。缓存也可以基于数据结构的特征进行配置,即在复杂计算中如何使用数据结构。例如,如果已知数据结构的一个特征是它是ANN的卷积层的输入,则可以将缓存策略设置为有利于访问请求的空间局部性。这些类型的方法与缓存是软件可配置的方法相结合是有益的,如下所述。
在基于评估缓存在缓存数据结构中的性能来配置缓存的实施例中,可以以各种方式评估性能。基于数据结构配置缓存可以包括在缓存缓存数据结构以产生分析时分析缓存的性能度量,以及基于分析配置缓存。性能度量的分析和缓存的配置都可以由控制器进行。度量的分析也可以与缓存的客户端和/或缓存的本地控制器结合进行。评估的性能度量可以包括访问请求服务的总体吞吐量、服务特定访问请求的平均或最大延迟、缓存命中与缓存未命中的比率,以及各种其他因素。这些度量同样可以用各种方式来测量。例如,在复杂计算的第一次运行时,可以首先使用默认配置配置缓存,并且可以在整个运行过程中评估性能。然后,可以在每次运行结束时重新配置缓存,以优化下一次迭代的度量。作为另一个示例,可以在执行单个复杂计算期间评估缓存度量,并且可以在计算运行时在线更改配置。性能可以由至少一个处理器在使用本地时钟监控访问请求等待服务的时间时测量,也可以由缓存本身在计算缓存命中和缓存未命中时测量,或者由这些方法的组合来测量。
在本发明的特定实施例中,系统的各种缓存可以由控制器分别配置。例如,控制器(例如控制器301)可以通过配置缓存控制器307和缓存控制器308来分别配置缓存303和304。在特定实施例中,控制器可以是软件控制器,而且缓存控制器可以是硬件控制器。软件控制器可以使用与指定复杂计算相同级别的代码进行编程。例如,对缓存性能或数据结构的任何分析,以及作为响应而制定的任何配置,都可以在源代码中进行逻辑定义。作为一个基本示例,函数“稀疏性(A)”可以以张量“A”的形式提供数据结构的稀疏性,并且该函数可以用于定义用于根据特定策略“策略_1”配置缓存的触发器(例如,“如果稀疏性(A)>90%,则配置.缓存_A.策略_1(.cache_A.policy_1)”)。配置指令可以用于定义复杂计算的相同代码编码。因此,进行分析的时间同样可以相对于复合计算的执行进行控制,因为它们可以散布在定义复杂计算的代码行中。缓存控制器可以通过API链接到控制器,以促进此类功能。API可以发送各种度量的请求,接收响应这些请求的信息,发送配置缓存的命令,以及接收有关缓存性能或数据结构特征的推送指示。在缓存控制器是硬件控制器的情况下,API可能涉及写入配置寄存器和读取硬件缓存上的状态寄存器。在推送数据的情况下,硬件控制器可以通过专用中断线连接到控制器,或者能够通过与控制器的通信连接发送中断。
在本发明的特定实施例中,可以以各种方式配置缓存。缓存可以单独配置,以便针对缓存的数据结构进行独立优化。例如,配置缓存可以包括定义或设置缓存的策略、配置缓存内存的大小、更改缓存的缓存一致性规则、更改缓存的关联性,选择不同的物理存储器或不同类型的存储器作为缓存和不同级别的后台存储器,以及其他配置缓存的方法。更改缓存的关联性可以包括在直接映射、集合关联或完全关联的关联性方案之间切换缓存。为缓存设置策略可以包括为缓存设置替换策略(replacement policy)、更改缓存的回写策略(write back policy)、更改缓存的写通策略(write-through policy)、更改缓存的逐出策略(eviction policy),以及各种其他潜在策略。例如,替换策略可以从最近最少使用(LRU)策略更改为时间感知最近最少使用(TLRU)策略、最不频繁使用(LFU)策略或最近最不频繁使用(LFRU)策略。所有这些更改的目标都是为基于该数据结构的专用数据结构优化缓存性能。
使用上述方法,可以应用用于在缓存数据结构中评估数据结构或缓存性能以及用于响应于此配置缓存的多种方法组合。在一个特定示例中,对数据的评估可以确定数据结构的访问方式有利于保留数据结构中物理上接近最近访问的部分,而且替换策略可能会扩大,以支持保留这些部分。在另一个示例中,缓存性能的评估可以包括选择要直接映射的缓存的关联性方案,监视缓存的性能两分钟,将缓存的关联性方案更改为完全关联,监视缓存的性能另外两分钟,然后选择产生最高访问请求服务带宽的关联性方案。在特定实施例中,给定缓存将保存用于使用相同网络值生成推断数小时甚至数天的DLRM的数据结构,在不同配置中观察和监视缓存性能所花费的时间可以忽略不计。可以应用更高级的搜索算法来为给定的数据结构或工作负载找到最佳配置,该配置包括改变缓存配置的多个方面的多元搜索算法,该算法包括缓存的各种策略、大小、存储器层次结构和关联性方案。
在本发明的特定实施例中,访问专用缓存的至少一个处理器可以是计算节点网络中的计算节点。例如,至少一个处理器可以是多核处理器中的核心。计算节点可以包括任何形式的计算引擎,包括算术逻辑单元、浮点数单元以及各种形式的基本计算单元和处理管道元素。计算节点还可以包括用于与多核处理器的网络通信的硬件和相关固件或软件。
在计算节点为多核处理器中的处理核心的特定实施例中,核心可以包括各种元件。核心可以包括计算管道、存储器、总线和网络接口单元。每个核心还可以包括一个本地控制器。存储器可以是处理核心的高速缓存,例如SRAM之类的随机存取易失性存储器。核心还可以包括附加的或更具体的元件,例如更高级别的控制器、序列化器/反序列化器、用于可修改配置信息的非易失性存储器,以及任意数量的算术逻辑单元和其他基本计算单元。本地控制器可以是核心控制器,用于协调或执行核心内的操作。在特定实施例中,核心控制器可以是专用的中央处理单元(CPU)。在任何一种情况下,核心控制器或CPU都可以管理数据传输到处理核心的主处理管道。如果计算节点是处理核心,则节点的处理管道可以是处理核心的主计算管道,并且相关联的存储器可以是处理核心的主存储器,例如处理核心的缓存。处理管道可用于执行计算网络执行复合计算所需的组件计算。
在特定实施例中,计算节点网络可以是NoC。图4示出了NoC400的一部分,其中四个处理核心401、402、403和404通过网络连接。网络包括一组总线和一组路由器,用于促进处理核心之间的通信。存在与每个处理核心相关联的专用路由器,例如路由器410、411、412和413。路由器410、411、412和413使用网络接口单元(NIU)与其相关联的处理核心401、402、403和404通信。这组总线包括将路由器相互连接以及路由器与其NIU连接的电线。NIU在处理核心的硬件中实例化。处理核心使用存储器和处理管道执行分配给它们的组件计算。组件计算的输入和输出在NIUs的控制下使用路由器进行路由。处理核心中的CPU同时参与计算操作和数据流管理。
在本发明的特定实施例中,与图2相关联的过程可涉及使用至少一个存储器存储第一数据结构和第二数据结构,其中数据结构是根据上述实施例专用于特定核心的数据结构。该步骤可以作为如上所述的缓存数据结构步骤的一部分来执行。在图4的情况下,至少一个存储器可以包括核心401、402、403和404上的存储器,以及经由信道421和422连接到NoC的共享存储器420。共享存储器420可以是DRAM,而且核心401、402、403和404上的存储器可以是SRAM或SRAM和较慢存储器的组合。共享存储器420可以用作NoC400中的核心实现的一个或多个缓存的后备存储器的一部分。
在本发明的特定实施例中,计算节点网络中的计算节点可以在缓存方案和它们所属的整个系统的操作中发挥不同的作用。例如,计算节点可以是缓存的客户端,将访问请求路由到各种专用缓存,和/或实现一个或多个专用缓存。在特定实施例中,不同的计算节点可以在复杂计算的执行过程中充当不同的角色。在替代实施例中,不同的计算节点将通过执行复杂计算来维持给定的角色,但是当网络需要重新配置以执行新的复杂计算时,可以重新调整其用途。
在本发明的特定实施例中,各种计算节点可以被分配的角色将取决于它们的能力。例如,如果计算节点具有足够大的本地存储器,则计算节点可以使用其本地存储器作为缓存的缓存存储器来实现缓存。在图4的示例中,缓存存储器可以是位于已被指定实现缓存的核心上的核心401、402、403和404的任何存储器。如上所述,如果核心用于路由访问请求,那么它可以负责存储缓存和数据结构之间的并发,以及实现这些缓存的位置,以便适当地路由访问请求。如果计算节点具有复杂的控制器,则其还可以用作配置网络的各种缓存控制器的控制器301。例如,核心401、402、403和404上的任何CPU都可以用作控制器301。或者,由所有核心401、402、403和404共享的单独的高级控制器可以用作控制器301。作为另一个示例,缓存控制器可以是软件控制器,并且核心401、402、403和404中任何一个上专用于实现缓存的CPU可以用作这些缓存的缓存控制器(例如,核心401中的CPU被指定实现缓存,核心401上的CPU可以用作缓存控制器307)。
在本发明的特定实施例中,所公开的系统中的访问请求响应可以是对计算系统的存储器的请求的响应。存储器可以是分层存储器。存储器层次结构可以包括缓存存储器(例如本地SRAM存储器)、单独的随机存取存储器(例如外部DRAM存储器)、单独的非易失性存储器(例如闪存)和附加的层次结构。在本发明的特定实施例中,例如根据图4的系统的那些实施例中,层次的各种级别可以由网络中的不同处理器提供。例如,核心402可以向网络的其余部分提供服务,并用作网络的其余部分所需的大型数据结构的存储位置。因此,核心402可以用作网络中的替代节点的存储器层次的第二层,其中该替代节点的本地缓存存储器是存储器层次的第一层。在这个相同的示例中,共享存储器420可以用作存储器层次结构的第三层。注意,在本示例中,层次结构的级别遵循内存层次结构的经典特征,即访问另一计算节点的缓存存储器比访问本地SRAM慢,但比通过网络访问标准DRAM快。
在本发明的特定实施例中,计算系统包括多个计算节点,访问请求可以由这些不同的计算节点协同处理。这些节点可以是专门设计的节点,用于处理访问请求的特定方面,以及执行有向图的其他方面。这些节点还可以是通用节点,其可以配置为处理访问请求的特定方面以及有向图的执行的其他方面,例如通过向计算节点提供指令。例如,一个节点可设计或配置为执行有向图的计算,一个节点可设计或配置为处理访问请求并向适当的计算节点提供访问请求响应,以及一个节点可设计或配置为存储由访问请求标识的数据,并提供响应于从单独节点接收访问请求消息的数据。与该示例一致,在图4中,节点401可以是通过向处理核心的存储器传送指令来增强的通用处理核心,以处理访问请求。在这些实施例中,节点401可以被称为查找协调器核心。查找协调器核心的一般操作将涉及接收访问请求,然后从本地存储器为请求提供服务,或者将请求传递到替代计算节点或共享存储器。节点401可以存储上述关于复杂计算所使用的数据结构和专用于其的缓存的一致性,以及这些缓存在网络中的位置。与该示例保持一致,在图4中,核心402可以是通过向处理核心的存储器传送指令来增强的通用处理核心,以接收访问请求并返回访问请求响应。这样的核心可以称为缓存核心。在访问请求从查找协调器核心传送到替代计算节点的实施例中,计算节点可以是缓存核心,该缓存核心实现用于缓存的缓存控制器、存储数据,并且配置为通过将发送到核心的请求的预期访问时间最小化来为这些请求提供缓存服务。因此,节点401和402可以协同地处理接入请求,其中节点401向节点402发送请求并等待响应。在该示例中,共享RAM420可以通过节点402实现缓存的后备存储器。在替代实施例中,如上文所述,核心可以实现高速缓存的后备存储器。例如,节点403通过节点402实现缓存的后备存储器。
用于执行本文公开的任何方法的系统还可以包括至少一个处理器和非暂时性计算机可读介质。至少一个处理器可以包括计算节点网络中的至少一个计算节点。介质可以包括处理核心(例如图4中的第一处理核心401和第二处理核心403)上的高速缓存存储器。介质还可以包括与独特的计算节点无关的共享存储器。在诸如400的计算节点网络中,共享存储器420可以是共享随机存取存储器,并且可以是例如DDR4 DRAM。共享存储器可由诸如信道421和422的多个信道访问。非暂时性计算机可读介质可以存储系统执行有向图所需的数据、关于如何执行有向图的指令以及关于如何在计算节点之间分配数据和指令的指令。计算机可读介质还可以存储指令,当系统执行该指令时,使系统执行本文公开的方法。本文使用执行指令的概念来描述执行任何逻辑或数据移动操作的设备的操作,即使“指令”完全在硬件中指定(例如,与门执行“与”指令)。该术语并非指可编程设备的能力。
虽然已经针对本发明的特定实施例进行了详细描述,但是应当理解,本领域技术人员在理解前述内容后,可以容易地设想对这些实施例的改变、变化和等效物。例如,尽管本发明中的示例主要指多核处理器中的核心计算节点,但计算节点可以是通用处理核心、图形处理器、神经网络加速器或用于并行执行复杂计算的任何其他计算节点。尽管本文提供了用于DLRM的有向图的加速执行的示例,但所公开的方法可以有益地应用于任何有向图,其执行取决于对具有不同特征的大型数据结构的访问。本文公开的任何方法都可以由处理器与计算机可读介质结合执行,该计算机可读介质存储与上述其他硬件元件结合的方法的指令。本领域技术人员可以在不脱离本发明范围的情况下实施对本发明的这些以及其他修改和变化,本发明的范围在所附权利要求中更具体地阐述。
Claims (31)
1.一种系统,包括:
至少一个存储器,所述存储器存储至少两个数据结构,其中所述至少两个数据结构包括第一数据结构和第二数据结构;
至少两个缓存,其中所述至少两个缓存包括缓存第一数据结构的第一缓存和缓存第二数据结构的第二缓存;
与所述至少两个缓存通信连接的控制器,其中在所述系统的操作期间,所述控制器分析所述第一数据结构的数据以产生第一分析和分析所述第二数据结构的数据以产生第二分析,在分析所述第一数据结构的数据和分析所述第二数据结构的数据之后,分别:(i)基于所述第一分析配置所述第一缓存;以及(ii)基于所述第二分析配置第二缓存;和
至少一个与所述至少两个缓存通信连接的处理器,其中所述至少一个处理器(i)使用所述至少两个缓存和(ii)在执行复杂计算期间访问所述至少两个数据结构中的每一个;
其中:(i)所述第一分析确定所述第一数据结构的稀疏性;以及(ii)所述第二分析确定所述第二数据结构的稀疏性。
2.根据权利要求1所述的系统,其中:
所述第一缓存专用于所述第一数据结构;
所述第二缓存专用于所述第二数据结构;和
所述至少两个缓存都分别专用于来自所述至少两个数据结构的单个数据结构。
3.根据权利要求1所述的系统,其中:
所述至少两个缓存以一对一的对应关系缓存所述至少两个数据结构;和
所述控制器基于存储在其中的所述至少两个数据结构中的每个数据结构的特征,分别配置所述至少两个缓存中的每个缓存。
4.根据权利要求1所述的系统,其中:
所述控制器通过配置所述至少两个缓存的至少两个缓存控制器来分别配置所述至少两个缓存。
5.根据权利要求4所述的系统,其中:
所述控制器为软件控制器;和
所述至少两个缓存控制器是硬件控制器。
6.根据权利要求4所述的系统,其中:
所述控制器通过设置所述第一缓存的第一缓存控制器的策略来单独配置所述第一缓存;和
所述控制器通过设置所述第二缓存的第二缓存控制器的策略来单独配置所述第二缓存。
7.根据权利要求1所述的系统,其中:
所述控制器通过基于所述第一分析设置所述第一缓存的策略来配置所述第一缓存;和
所述控制器通过基于所述第二分析设置所述第二缓存的策略来配置所述第二缓存。
8.根据权利要求1所述的系统,其中:
所述控制器通过设置所述第一缓存的策略来配置所述第一缓存;
所述控制器通过设置所述第二缓存的策略来配置所述第二缓存;和
所述第一缓存的所述策略和所述第二缓存的所述策略是分别从以下组中选择的策略:替换策略;写通策略;以及回写策略。
9.根据权利要求1所述的系统,其中:
所述至少一个处理器是多核处理器;
所述多核处理器包括处理器核心网络;和
所述处理器核心网络中的第一处理器核心:(i)实现所述第一缓存的缓存控制器;(ii)从所述网络接收对所述第一数据结构的访问请求;以及(iii)使用所述第一缓存和所述网络服务所述访问请求。
10.根据权利要求9所述的系统,还包括:
所述处理器核心网络中的共享存储器;和
其中,所述第一处理器核心使用所述共享存储器作为所述第一缓存的后备存储器。
11.根据权利要求9所述的系统,还包括:
所述处理器核心网络中的第二处理器核心;
其中,所述第二处理器核心实现用于所述第一缓存的后备存储器。
12.根据权利要求9所述的系统,还包括:
所述处理器核心网络中的第二处理器核心;
所述处理器核心网络中的第三处理器核心;
其中,所述第二处理器核心实现所述第二缓存的第二缓存控制器;
其中,所述第三处理器核心实现所述控制器;和
其中,所述控制器使用所述网络与所述至少两个缓存通信连接。
13.根据权利要求1所述的系统,其中:
所述第一数据结构存储神经网络的层;
所述第二数据结构存储用于执行神经网络的一组累计值;和
执行复杂计算包括使用所述层和所述一组累计值从所述神经网络生成推理。
14.根据权利要求1所述的系统,其中:
所述控制器通过选择所述至少两个缓存中的一个用作第一缓存并选择所述至少两个缓存中的另一个用作第二缓存来分别配置所述至少两个缓存。
15.一种方法,包括:
使用控制器在所述控制器的操作期间分析第一数据结构的数据以产生第一分析;
使用所述控制器在所述控制器的操作期间,在分析所述第一数据结构的数据之后,基于所述第一分析配置第一缓存;
使用所述第一缓存缓存所述第一数据结构;
使用所述控制器在所述控制器的操作期间分析第二数据结构的数据以产生第二分析;
使用所述控制器在所述控制器的操作期间,在分析所述第二数据结构的数据之后,基于所述第二分析配置第二缓存;
使用所述第二缓存缓存所述第二数据结构;
使用至少一个处理器执行复杂计算;和
使用所述至少一个处理器,在所述复杂计算的执行期间,访问来自所述第一数据结构的数据和来自所述第二数据结构的数据;
其中:(i)所述第一分析确定所述第一数据结构的稀疏性;以及(ii)所述第二分析确定所述第二数据结构的稀疏性。
16.根据权利要求15所述的方法,还包括:
使用至少一个存储器存储所述第一数据结构和所述第二数据结构;和
其中,所述至少一个存储器用作所述第一缓存的第一后备存储器和所述第二缓存的第二后备存储器。
17.根据权利要求15所述的方法,其中:
所述第一缓存专用于所述第一数据结构;和
所述第二缓存专用于所述第二数据结构。
18.根据权利要求15所述的方法,其中:
使用所述控制器配置所述第一缓存是基于所述第一数据结构的特征进行配置;和
使用所述控制器配置所述第二缓存是基于所述第二数据结构的特征进行配置。
19.根据权利要求15所述的方法,其中:
所述控制器通过配置所述至少两个缓存的至少两个缓存控制器来分别配置至少两个缓存。
20.根据权利要求19所述的方法,其中:
所述控制器为软件控制器;和
所述至少两个缓存控制器是硬件控制器。
21.根据权利要求19所述的方法,其中:
使用所述控制器配置所述第一缓存包括设置所述第一缓存的第一缓存控制器的策略;和
使用所述控制器配置所述第二缓存包括设置所述第二缓存的第二缓存控制器的策略。
22.根据权利要求15所述的方法,其中:
使用所述控制器配置所述第一缓存包括基于所述第一分析设置所述第一缓存的策略;和
使用所述控制器配置所述第二缓存包括基于所述第二分析设置所述第二缓存的策略。
23.根据权利要求15所述的方法,其中:
使用所述控制器配置所述第一缓存包括设置所述第一缓存的策略;
使用所述控制器配置所述第二缓存包括设置所述第二缓存的策略;和
所述第一缓存的所述策略和所述第二缓存的所述策略是分别从以下组中选择的策略:替换策略;写通策略;以及回写策略。
24.根据权利要求15所述的方法,其中:
所述至少一个处理器是多核处理器;
所述多核处理器包括处理器核心网络;和
所述处理器核心网络中的第一处理器核心:(i)实现所述第一缓存的缓存控制器;(ii)从所述网络接收对所述第一数据结构的访问请求;以及(iii)使用所述第一缓存和网络服务所述访问请求。
25.根据权利要求24所述的方法,其中:
所述第一处理器核心使用所述处理器核心网络的共享存储器作为所述第一缓存的后备存储器。
26.根据权利要求24所述的方法,其中:
所述多核处理器包括所述处理器核心网络中的第二处理器核心;和
所述第二处理器核心实现用于所述第一缓存的后备存储器。
27.根据权利要求24所述的方法,其中:
所述多核处理器包括所述处理器核心网络中的第二处理器核心;
所述多核处理器包括所述处理器核心网络中的第三处理器核心;
所述第二处理器核心实现所述第二缓存的第二缓存控制器;
所述第三处理器核心实现所述控制器;和
所述控制器使用所述网络与所述第一缓存和所述第二缓存通信连接。
28.根据权利要求15所述的方法,其中:
所述第一数据结构存储神经网络的层;
所述第二数据结构存储用于执行所述神经网络的一组累计值;和
执行所述复杂计算包括使用所述层和所述一组累计值从所述神经网络生成推理。
29.根据权利要求15所述的方法,其中:
使用所述控制器配置所述第一缓存和第二缓存通过选择至少两个缓存中的一个用作第一缓存并选择所述至少两个缓存中的另一个用作第二缓存来进行配置。
30.一种系统,包括:
计算节点网络,所述计算节点网络包括至少一个处理器;和
所述计算节点网络中的非暂时性计算机可读介质,所述介质存储指令,当所述计算节点网络执行所述指令时,致使:
(i)控制器在所述系统的操作期间分析第一数据结构的数据以产生第一分析;
(ii)所述控制器在所述系统的操作期间并在分析所述第一数据结构的数据之后,基于所述第一分析配置第一缓存;
(iii)所述第一缓存缓存所述第一数据结构;
(iv)所述控制器在所述系统的操作期间分析第二数据结构的数据以产生第二分析;
(v)所述控制器在所述系统的操作期间并在分析所述第二数据结构的数据之后,基于所述第二分析配置第二缓存;
(vi)所述第二缓存缓存所述第二数据结构;
(vii)所述至少一个处理器执行复杂计算;和
(viii)所述至少一个处理器在执行所述复杂计算期间访问来自所述第一数据结构的数据和来自所述第二数据结构的数据;
其中:(i)所述第一分析确定所述第一数据结构的稀疏性;以及(ii)所述第二分析确定所述第二数据结构的稀疏性。
31.根据权利要求30所述的系统,其中:
所述控制器通过选择至少两个缓存中的一个用作第一缓存并选择所述至少两个缓存中的另一个用作第二缓存来配置所述第一缓存和所述第二缓存的配置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/221,523 | 2021-04-02 | ||
US17/221,523 US11520701B2 (en) | 2021-04-02 | 2021-04-02 | Data structure optimized dedicated memory caches |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115203076A CN115203076A (zh) | 2022-10-18 |
CN115203076B true CN115203076B (zh) | 2024-04-05 |
Family
ID=81326990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210312894.2A Active CN115203076B (zh) | 2021-04-02 | 2022-03-28 | 数据结构优化的专用存储器缓存 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11520701B2 (zh) |
EP (1) | EP4075286A1 (zh) |
CN (1) | CN115203076B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11874776B2 (en) * | 2021-06-25 | 2024-01-16 | Intel Corporation | Cryptographic protection of memory attached over interconnects |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434992A (en) * | 1992-09-04 | 1995-07-18 | International Business Machines Corporation | Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace |
US6678805B1 (en) * | 2000-05-25 | 2004-01-13 | Microsoft Corporation | Structure organization for improved cache performance |
CN101510176A (zh) * | 2009-03-26 | 2009-08-19 | 浙江大学 | 通用操作系统对cpu二级缓存访问的控制方法 |
WO2009129741A1 (zh) * | 2008-04-25 | 2009-10-29 | 华为技术有限公司 | 一种实现缓存策略控制的方法、系统及装置 |
CN101673247A (zh) * | 2009-09-15 | 2010-03-17 | 威盛电子股份有限公司 | 内存管理系统与方法 |
CN102160033A (zh) * | 2008-09-05 | 2011-08-17 | 超威半导体公司 | 具有稀疏和密集预测缓存的复合分支预测装置 |
CN103077128A (zh) * | 2012-12-29 | 2013-05-01 | 华中科技大学 | 一种多核环境下的共享缓存动态划分方法 |
CN105740164A (zh) * | 2014-12-10 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
CN106649145A (zh) * | 2016-12-15 | 2017-05-10 | Tcl集团股份有限公司 | 一种自适应更新缓存策略的方法及系统 |
CN110502487A (zh) * | 2019-08-09 | 2019-11-26 | 苏州浪潮智能科技有限公司 | 一种缓存管理方法与装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117437A1 (en) * | 2002-12-16 | 2004-06-17 | Exanet, Co. | Method for efficient storing of sparse files in a distributed cache |
US20060236033A1 (en) * | 2005-04-18 | 2006-10-19 | Dell Products L.P. | System and method for the implementation of an adaptive cache policy in a storage controller |
US20090248986A1 (en) * | 2008-03-26 | 2009-10-01 | Daniel Citron | Apparatus for and Method of Implementing Multiple Content Based Data Caches |
US8112585B2 (en) | 2009-04-30 | 2012-02-07 | Netapp, Inc. | Method and apparatus for dynamically switching cache policies |
US20120144117A1 (en) | 2010-12-03 | 2012-06-07 | Microsoft Corporation | Recommendation based caching of content items |
JP5593577B2 (ja) * | 2010-12-27 | 2014-09-24 | 株式会社日立製作所 | ストレージシステム及びその制御情報の管理方法 |
US10757214B2 (en) | 2013-12-20 | 2020-08-25 | Intel Corporation | Crowd sourced online application cache management |
CN106161569B (zh) | 2015-04-24 | 2019-05-28 | 华为软件技术有限公司 | 网络内容的推荐、缓存替换方法和设备 |
WO2019005088A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | HETEROGENEOUS MULTIPLIER |
US10261915B2 (en) * | 2017-09-15 | 2019-04-16 | Board Of Regents, The University Of Texas System | Intelligently partitioning data cache to allocate space for translation entries |
US10482017B2 (en) * | 2017-09-29 | 2019-11-19 | Intel Corporation | Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization |
WO2019155241A1 (en) | 2018-02-12 | 2019-08-15 | Google Llc | Caching using machine learned predictions |
US10832133B2 (en) | 2018-05-31 | 2020-11-10 | Neuralmagic Inc. | System and method of executing neural networks |
US11269628B2 (en) | 2019-06-18 | 2022-03-08 | Tenstorrent Inc. | Processor cores using packet identifiers for routing and computation |
-
2021
- 2021-04-02 US US17/221,523 patent/US11520701B2/en active Active
-
2022
- 2022-03-28 CN CN202210312894.2A patent/CN115203076B/zh active Active
- 2022-03-31 EP EP22166217.4A patent/EP4075286A1/en active Pending
- 2022-11-07 US US17/982,467 patent/US20230062891A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434992A (en) * | 1992-09-04 | 1995-07-18 | International Business Machines Corporation | Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace |
US6678805B1 (en) * | 2000-05-25 | 2004-01-13 | Microsoft Corporation | Structure organization for improved cache performance |
WO2009129741A1 (zh) * | 2008-04-25 | 2009-10-29 | 华为技术有限公司 | 一种实现缓存策略控制的方法、系统及装置 |
CN102160033A (zh) * | 2008-09-05 | 2011-08-17 | 超威半导体公司 | 具有稀疏和密集预测缓存的复合分支预测装置 |
CN101510176A (zh) * | 2009-03-26 | 2009-08-19 | 浙江大学 | 通用操作系统对cpu二级缓存访问的控制方法 |
CN101673247A (zh) * | 2009-09-15 | 2010-03-17 | 威盛电子股份有限公司 | 内存管理系统与方法 |
CN103077128A (zh) * | 2012-12-29 | 2013-05-01 | 华中科技大学 | 一种多核环境下的共享缓存动态划分方法 |
CN105740164A (zh) * | 2014-12-10 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
CN106649145A (zh) * | 2016-12-15 | 2017-05-10 | Tcl集团股份有限公司 | 一种自适应更新缓存策略的方法及系统 |
CN110502487A (zh) * | 2019-08-09 | 2019-11-26 | 苏州浪潮智能科技有限公司 | 一种缓存管理方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
US20220318144A1 (en) | 2022-10-06 |
US20230062891A1 (en) | 2023-03-02 |
CN115203076A (zh) | 2022-10-18 |
US11520701B2 (en) | 2022-12-06 |
EP4075286A1 (en) | 2022-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531617B2 (en) | Allocating and accessing memory pages with near and far memory blocks from heterogenous memories | |
US8904154B2 (en) | Execution migration | |
JP5328748B2 (ja) | キャッシュメモリにおけるキャッシュラインの置き換え | |
US7073030B2 (en) | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio | |
US8595443B2 (en) | Varying a data prefetch size based upon data usage | |
CN115443454A (zh) | 自适应高速缓存 | |
US20130067169A1 (en) | Dynamic cache queue allocation based on destination availability | |
US8566532B2 (en) | Management of multipurpose command queues in a multilevel cache hierarchy | |
KR20160081815A (ko) | 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법 | |
TW202207031A (zh) | 用於記憶體通道控制器之負載平衡 | |
CN115203076B (zh) | 数据结构优化的专用存储器缓存 | |
US10705977B2 (en) | Method of dirty cache line eviction | |
US20130080708A1 (en) | Dynamic mode transitions for cache instructions | |
US11561834B2 (en) | Methods and systems for adaptive memory-resource management | |
Chen et al. | Data prefetching and eviction mechanisms of in-memory storage systems based on scheduling for big data processing | |
CN113138851A (zh) | 一种缓存管理方法及装置 | |
US20220121576A1 (en) | Reduce Data Traffic between Cache and Memory via Data Access of Variable Sizes | |
Cui et al. | Scalable deep learning on distributed GPUs with a GPU-specialized parameter server | |
CN109710563B (zh) | 一种可重构系统的缓存分区划分方法 | |
CN117331858B (zh) | 存储装置及数据处理系统 | |
US20230100746A1 (en) | Multi-level partitioned snoop filter | |
US20240103730A1 (en) | Reduction of Parallel Memory Operation Messages | |
EP4109282A1 (en) | Methods for bias mode management in memory systems | |
CN117667329A (zh) | 一种任务管理方法及装置 | |
Park et al. | Adaptive granularity: Transparent integration of fine-and coarse-grain communication |
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 |