CN111324556B - 用于将预定数目的数据项预取到高速缓存的方法和*** - Google Patents
用于将预定数目的数据项预取到高速缓存的方法和*** Download PDFInfo
- Publication number
- CN111324556B CN111324556B CN201911107665.1A CN201911107665A CN111324556B CN 111324556 B CN111324556 B CN 111324556B CN 201911107665 A CN201911107665 A CN 201911107665A CN 111324556 B CN111324556 B CN 111324556B
- Authority
- CN
- China
- Prior art keywords
- cache
- candidate data
- data items
- data item
- candidate
- 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 title claims abstract description 40
- 230000000717 retained effect Effects 0.000 claims abstract description 37
- 230000004044 response Effects 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 23
- 230000015654 memory Effects 0.000 claims description 15
- 239000006185 dispersion Substances 0.000 claims description 8
- 238000010801 machine learning Methods 0.000 claims description 8
- 230000007787 long-term memory Effects 0.000 claims 1
- 238000004590 computer program Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
- G06F11/3471—Address tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
-
- 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/1021—Hit rate 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/60—Details of cache memory
- G06F2212/6024—History based prefetching
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开的实施例涉及高速缓存预取。一种装置、一种计算机程序和一种方法用于将预定数目的数据项预取到高速缓存。该方法包括:获得候选数据项及其相关联的分数的列表,列表包括比待被预取到高速缓存的预定数目的数据项更多的候选数据项。该方法包括:基于候选数据项的分数来从列表中反复选择候选数据项,并且确定是否将候选数据项添加至高速缓存。确定是否将候选数据项添加至高速缓存包括:确定候选数据项是否被高速缓存所保留;以及响应于确定候选数据项未被高速缓存所保留,将候选数据项添加至高速缓存。该反复选择和确定被执行,直到预定数目的数据项被添加至高速缓存为止。
Description
技术领域
本公开大体上涉及高速缓存数据存储,并且具体涉及高速缓存预取。
背景技术
高速缓冲存储器可以是存储数据以使得可以更快地服务对该数据的未来请求的硬件组件或者软件组件。被存储在高速缓存中的数据可以是早前的计算的结果、被存储在别处的数据的副本等。当在高速缓存中可以找到所请求的数据时,会发生高速缓存命中。可以通过从高速缓存中读取数据来服务高速缓存命中,这比重新计算结果或者从较慢的数据存储库进行读取更快。因此,可以通过高速缓存来服务的请求越多,***可以执行得越快。
高速缓存已经在许多计算领域中证明了自己,因为典型的计算机应用以高度引用局部性访问数据。这种访问模式会表现出时间局部性,其中请求最近已经请求过的数据;以及空间局部性,其中请求在物理上被存储在已经请求过的数据附近的数据。
高速缓存预取可以是由计算机处理器用于以下操作的技术:通过在实际需要指令或者数据之前将指令或者数据从较慢的存储器形式的原始存储装置预取到较快的本地存储器来提高执行性能。现代计算机处理器可以具有快速的本地高速缓存存储器,在该快速的本地高速缓存存储器中,可以保留预取的数据,直到需要它为止。用于预取操作的源通常可以是主存储器。由于高速缓存存储器的设计,访问高速缓存存储器可以比访问主存储器快很多。结果,对数据进行预取,并且然后从高速缓存中访问数据可能会比直接从主存储器访问数据快许多个数量级。
发明内容
所公开的主题内容的一个示例性实施例是一种用于将预定数目的数据项预取到高速缓存的方法,其包括:获得候选数据项列表,其中候选数据项的数目大于待被预取到高速缓存的数据项的预定数目,其中每个候选数据项与分数相关联;反复从列表中选择候选数据项,并且确定是否将候选数据项添加至高速缓存,其中所述选择基于列表中的顺序,其中列表中的顺序基于候选数据项的分数,其中所述的确定是否将候选数据项添加至高速缓存包括:确定候选数据项是否被高速缓存所保留;以及响应于确定候选数据项未被高速缓存所保留,将候选数据项添加至高速缓存;其中所述的反复选择和确定被执行,直到预定数目的数据项被添加至高速缓存。
可选地,该方法还包括:响应于确定候选数据项被高速缓存保留在高速缓存行中,更新高速缓存行的疏散度量。
可选地,高速缓存是最近最少使用(LRU)高速缓存,其中疏散度量是高速缓存行的新鲜度度量。
可选地,将候选数据项添加至高速缓存需要第一处理持续时间,其中所述的更新高速缓存行的疏散度量需要第二处理持续时间,其中第二处理持续时间少于第一处理持续时间。
可选地,与每个候选数据项相关联的分数指示从高速缓存中检索到候选数据项的可能性。
可选地,与每个候选数据项相关联的分数由基于机器学习的预测器确定。
可选地,基于机器学习的预测器基于长短期记忆(LSTM)网络。
可选地,确定是否将候选数据项添加至高速缓存还包括:确定候选数据项的分数高于预定阈值。
可选地,获得列表包括:获得包括该列表和附加数据项的初始列表;以及基于候选数据项的对应分数来从初始列表中选择前N个候选数据项,由此获得该列表。
所公开的主题内容的另一示例性实施例是一种装置,该装置具有:处理器;存储器;以及高速缓存,处理器适于执行以下步骤:获得候选数据项列表,其中候选数据项的数目大于待被预取到高速缓存的数据项的预定数目,其中每个候选数据项与分数相关联;反复从列表中选择候选数据项,并且确定是否将候选数据项添加至高速缓存,其中所述选择基于列表中的顺序,其中列表中的顺序基于候选数据项的分数,其中所述的确定是否将候选数据项添加至高速缓存包括:确定候选数据项是否被高速缓存所保留;以及响应于确定候选数据项未被高速缓存所保留,将候选数据项添加至高速缓存;其中所述的反复选择和确定被执行,直到预定数目的数据项被添加至高速缓存。
所公开的主题内容的又一示例性实施例是一种计算机程序产品,该计算机程序产品包括:非瞬态计算机可读存储介质,该计算机可读存储介质保留程序指令,这些程序指令在由处理器读取时使处理器执行方法,该方法包括:获得候选数据项列表,其中候选数据项的数目大于待被预取到高速缓存的数据项的预定数目,其中每个候选数据项与分数相关联;反复从列表中选择候选数据项,并且确定是否将候选数据项添加至高速缓存,其中所述选择基于列表中的顺序,其中列表中的顺序基于候选数据项的分数,其中所述的确定是否将候选数据项添加至高速缓存包括:确定候选数据项是否被高速缓存所保留;以及响应于确定候选数据项未被高速缓存所保留,将候选数据项添加至高速缓存;其中所述的反复选择和确定被执行,直到预定数目的数据项被添加至高速缓存。
附图说明
通过结合附图的以下详细描述,将更充分地理解和了解本公开的主题内容,在这些附图中,对应的或者相同的数字或者字符表示对应的或者相同的组件。除非另有指示,否则附图提供本公开的示例性实施例或者方面,而不限制本公开的范围。在附图中:
图1示出了根据所公开的主题内容的一些示例性实施例的方法的流程图;
图2示出了根据所公开的主题内容的一些示例性实施例的在进行预取之前和之后的示例性高速缓存的示意图;以及
图3示出了根据所公开的主题内容的一些示例性实施例的装置的框图。
具体实施方式
由所公开的主题内容处理的一个技术问题是:提高高速缓存命中率。在一些示例性实施例中,当在高速缓存中可以找到所请求的数据时,会发生高速缓存命中(hit)。当在高速缓存中找不到所请求的数据时,会发生高速缓存未命中(miss)。可以通过从高速缓存中读取数据来服务高速缓存命中,这可能会比重新计算结果或者从较慢的数据存储装置进行读取等更快。结果,可以通过高速缓存来服务的请求越多,***可以执行得越快。另一方面,为了具有成本效益并且使得能够有效地使用数据,可以要求高速缓存较小。高速缓存管理***可以通过决定将什么带到高速缓存以及从高速缓存中撤出什么来尝试提高高速缓存命中率。
在一些示例性实施例中,当高速缓存客户端(诸如,中央处理单元(CPU)、web浏览器、操作***等)需要访问被假定为存在于后备存储库中的数据时;高速缓存客户端可以首先检查高速缓存。如果可以找到具有与期望数据相匹配的标签的条目,则可以代替使用该条目中的数据。这种情况被称为高速缓存命中。备选情况(当检查了高速缓存并且发现高速缓存不包括具有期望标签的任何条目时)可以被称为高速缓存未命中。这种情况可能会需要更昂贵的对后备存储库中的数据进行访问。一旦检索到所请求的数据,通常就可以将其复制到高速缓存中,为下次访问做好准备。
由所公开的主题内容处理的另一技术问题是:提高在高速缓存中搜索数据的效率。在一些示例性实施例中,在高速缓存未命中期间,可以去除一些其他先前存在的高速缓存条目以便为新检索到的数据腾出地方。用于选择进行替换的条目的启发法可以被称为替换策略。一种替换策略(“最近最少使用”(LRU))可以替换最旧的条目,相较于任何其他条目,最近较少访问该条目(参见高速缓存算法)。附加地或者备选地,高速缓存算法可以针对存储的内容的大小以及高速缓存和后备存储库两者的时延(latency)和吞吐量计算使用命中频率。然而,这种技术不能保证高效地找到被配置为即将被请求的数据。
由所公开的主题内容处理的又一技术问题是:提高高速缓存预取的性能。在一些示例性实施例中,可以在需要数据或者指令之前将数据或者指令预取到高速缓存,以便允许快速地检索数据并且提高执行性能。准确的数据预取可能会是具有挑战性的任务。在一些示例性实施例中,预取技术可以接收对预定数目的数据项进行预取的请求,并且可以对全部预定数目的项进行预取,同时覆盖高速缓存中的一些现有项。除了覆盖现有项之外,这种方法还可以减少高速缓存的覆盖范围。覆盖范围可以是由于预取而被消除的全部未命中部分。如果预取技术覆盖了可能命中的项,则覆盖范围可能会较低。此外,这种技术的准确性(该准确性可以被定义为有用的全部预取部分(例如,通过用于所进行的全部预取的程序来实际参考预取的存储器地址的数目的比率))可能会较低。
由所公开的主题内容处理的又一技术问题是:减少进行预取所需的时间。在一些示例性实施例中,可以通过提早对块进行预取的时间与实际参考块的时间的关系来测量预取时间效率。现有的预取技术可能不是具有时间效益的,特别是在对现有数据进行预取或者对在高速缓存中的不同位置中的数据进行预取的情况下。
一种技术解决方案是通过以下方法来提高高速缓存命中率:在请求之前将数据预取到高速缓存中,同时降低请求从高速缓存中撤出的数据的可能性并且根据该可能性来重新排列预取的数据的顺序。
在一些示例性实施例中,可能需要将预定数目的数据项预取到高速缓存。可以获得要在高速缓存中进行预取的候选项的列表。候选项的数目可以大于需要被预取到高速缓存的数据项的预定数目,诸如,预定数目的大约两倍、预定数目的大约三倍、10+预定数目、100+预定数目等。附加地或者备选地,可以从包括附加数据项的初始列表中选择候选项列表。可以基于初始列表中的数据项的对应分数来选择候选项列表。
在一些示例性实施例中,可以向每个候选数据项分配分数。与每个候选数据项相关联的分数可以被配置为指示从高速缓存中检索到候选数据项的可能性。分数可以由基于机器学习的预测器确定,诸如,基于长短期记忆(LSTM)的预测器。可以按照候选的分数的降序来对候选数据项列表进行排序。附加地或者备选地,分数可以指示从高速缓存中检索到候选数据项的可能性与候选数据项的大小之间的比率。作为示例,分数可以是在0与1之间的数字,其中0表示零可能性,而1表示在不久的将来请求读取候选的100%概率。
在一些示例性实施例中,可以迭代地选择具有最高分数的候选数据项以确定是否将其添加至高速缓存。在候选数据项尚未被高速缓存所保留的情况下,可以将候选数据项添加至高速缓存。在候选数据项已经被高速缓存所保留的情况下,只要可以将候选项移动至高速缓存中可以最快检索到候选项的位置,就可以更新相应数据项的高速缓存行的疏散度量。作为示例,在以与FIFO队列相同的方式起作用的先进先出(FIFO)高速缓存中,高速缓存可以被配置为逐出首先访问的第一个块,而无需考虑之前访问第一个块的频率或者次数。在这种高速缓存中,可以将候选数据项移动至高速缓存的第一个块。作为另一示例,在可以被配置为逐出最近首先访问的块,而无需考虑之前访问该块的频率或者次数的后进先出(LIFO)高速缓存中,可以将候选数据项移动至高速缓存的最后一个块(项的末尾)。作为又一示例,在疏散度量是高速缓存行的新鲜度度量的LRU高速缓存中,高速缓存可以要求追踪使用的内容并且丢弃最近最少使用的项。在这种高速缓存中,可以将候选数据项更新为使用最多的数据项。
在一些示例性实施例中,可以反复执行从其余候选数据项中选择具有最高分数的候选数据项,直到将预定数目的数据项添加至高速缓存为止。作为示例,在已经处理了具有最高分数的候选数据项(已经将其添加至高速缓存或者已经更新了其位置)之后,可以从候选数据项列表中去除候选数据项,并且在将候选数据项添加至高速缓存的情况下,可以将被***至高速缓存的若干项的计数器上升一。
在一些示例性实施例中,附加考虑因素可能影响是否将候选数据项添加至高速缓存的决定,诸如,候选数据项的大小低于预定阈值;候选数据项的分数高于预定阈值;候选数据项的大小与分数之间的比率等。
利用所公开的主题内容的一种技术效果是:提高高速缓存预取的效率。由于允许被预取的数据项的数目可能受到限制(诸如,由于高速缓存的有限可用资源),因此,对更多必要的数据项进行预取可能更加高效。所公开的方法基于请求从高速缓存中撤出候选数据项的可能性来针对每个候选数据项确定分数;并且对具有最高分数的数据项进行预取。可以将更有可能被撤出的数据项预取到高速缓存。结果,相对于通过相同的有限资源实现的相应高速缓存命中率,可以提高高速缓存命中率。
利用所公开的主题内容的另一技术效果是:减少高速缓存预取的处理时间。在所公开的主题内容中,仅未被高速缓存所保留的候选数据项可以被添加至高速缓存。可以更新已经被高速缓存所保留的数据项的高速缓存行的疏散度量。更新高速缓存行的疏散度量需要的处理持续时间少于向高速缓存添加候选数据项的处理持续时间。更新疏散度量的处理持续时间甚至可以比添加新数据项少几个数量级。作为所公开的方法,避免重新添加已经被高速缓存所保留的数据项,而是更新这种项的高速缓存行的疏散度量;所公开的方法不仅可以使得能够在同一时间内向高速缓存添加更多的数据项,而且可以减少对高速缓存进行预取所需的时间。
作为利用所公开的主题内容的又一技术效果是:降低从高速缓存中去除可能要向高速缓存请求的对象的可能性。使候选数据项提升(例如,更新数据项相关联的高速缓存行的疏散度量)降低了写入这些高速缓存行、从高速缓存中去除这些数据项等的可能性。结果,可以提高高速缓存命中率,因为可以在高速缓存中找到这种数据项。
所公开的主题内容可以提供优于任何预先存在的技术以及本领域中先前已经成为常规技术或者传统技术的任何技术的一种或者多种技术改进。
鉴于本公开,对于本领域的普通技术人员而言,其他技术问题、解决方案和效果可以是明显的。
现在参照图1,图1示出了根据所公开的主题内容的一些示例性实施例的方法的流程图。
在步骤110,可以获得待被预取到高速缓存的候选数据项列表。在一些示例性实施例中,高速缓存可以被配置为对数据项进行预取,使得可以更快地服务对数据项的未来请求。数据项可以是数据、指令等。在一些示例性实施例中,可以获得大于该列表的初始列表。可以基于候选数据项的对应分数来从初始列表中选择前N个候选数据项以便获得列表。N可以大于可以被计划为被预取到高速缓存的数据项的预定数目,诸如,预定数目的两倍、预定数目的三倍、预定数目的十倍等。
在一些示例性实施例中,每个候选数据项可以与分数相关联。与每个候选数据项相关联的分数可以被配置为指示从高速缓存中检索到候选数据项的可能性。分数可以由基于机器学习的预测器确定。在一些示例性实施例中,基于机器学习的预测器可以被配置为利用LSTM网络。LSTM网络可以是一种递归神经网络(RNN)。LSTM可以由小区、输入和输出组成。小区可以被配置为随着时间记住值,因此,可以非常适合于基于时间序列类型日期来进行预测。LSTM网络可以被配置为基于时间序列数据来对关于将从高速缓存中读取数据项的可能性进行预测。附加地或者备选地,可以使用其他算法,诸如,其他RNN、隐马尔可夫模型、序列学习方法等。
在步骤120中,可以基于列表中的顺序来选择候选数据项。在一些示例性实施例中,列表中的顺序可以基于候选数据项的分数。作为示例,可以选择具有最高分数的候选数据项。
在步骤130中,可以执行候选数据项是否被高速缓存所保留的确定。
在步骤140中,在候选不被高速缓存所保留的情况下,可以执行候选数据项的分数是否高于预定阈值的确定。作为示例,阈值可以大约是0.90、095等。
在步骤150中,响应于确定候选数据项未被高速缓存所保留并且其分数高于预定阈值,可以将候选数据项添加至高速缓存。可以基于高速缓存的预取策略来将数据项添加至高速缓存的高速缓存行。作为示例,在FIFO高速缓存中,可以将候选数据项添加至高速缓存的最后一个块。作为另一示例,在LIFO高速缓存中,可以将候选数据项移动至高速缓存的第一个块。作为又一示例,在LRU高速缓存中,可以将候选数据项更新为使用最少的数据项。
在一些示例性实施例中,为了添加新的数据项,并且为此没有空的高速缓存行,可以去除先前存在的高速缓存行以便为新的数据项腾出地方。用于选择进行替换的条目或者高速缓存行的启发法可以被称为替换策略。一种替换策略可以是LRU,该LRU可以被配置为替换最旧的条目,相较于任何其他条目,最近较少访问该条目。附加地或者备选地,高速缓存算法可以针对存储的内容的大小以及高速缓存和后备存储库两者的时延和吞吐量计算使用命中频率。
附加地或者备选地,只有在将候选添加至高速缓存之前,候选才可以被确定为未被高速缓存所保留,例如,在未执行步骤140的情况下。
在步骤160中,响应于候选数据项被高速缓存所保留,可以在高速缓存中使候选数据项提升。在一些示例性实施例中,可以通过更新数据项被保留在其中的高速缓存行的疏散度量来执行使候选数据项提升。作为示例,在FIFO高速缓存中,可以将候选数据项移动至高速缓存的第一个块。作为另一示例,在LIFO高速缓存中,可以将候选数据项移动至高速缓存的最后一个块。
在一些示例性实施例中,高速缓存可以是LRU高速缓存。疏散度量可以是高速缓存行的新鲜度度量。在LRU高速缓存中,可以将候选数据项更新为使用最多的数据项。
可以了解到:将候选数据项添加至高速缓存(例如,步骤150)所需的处理持续时间可以比更新高速缓存行的疏散度量(例如,步骤160)所需的处理持续时间大某一数量级。
在一些示例性实施例中,可以反复执行步骤120至160,直到将预定数目的数据项添加至高速缓存为止。可以了解到:可以基于其他标准(诸如,检查预定数目的推荐候选数据项;检查预定数目的数据项;时间标准等)来确定针对反复执行步骤120至160的停止条件。
现在参照图2,图2示出了根据所公开的主题内容的一些示例性实施例的在进行预取之前和之后的示例性高速缓存的示意图。
高速缓存210可以被配置为存储数据,该数据可以是较早的计算的结果、被存储在别处的数据的副本等。高速缓存210可以包括多个高速缓存行。一些高速缓存行(诸如,条目211)可以具有关联的数据(例如,数据项1)。该相关联的数据可以是在某一后备存储库中的相同数据的副本。附加地或者备选地,每个高速缓存行可以与标识符相关联。标识符可以被配置为指定在后备存储库中的数据的身份,该后备存储库中的条目是副本。附加地或者备选地,一些高速缓存行(诸如,条目216)可以是空条目,在该空条目中,可以对新数据进行预取。作为示例,高速缓存210包括7个空高速缓存行的块219。
在一些示例性实施例中,将数据项高速缓存预取到高速缓存210。待被预取的数据项的数目可以是预定的。作为示例,可以请求将4个数据项预取到高速缓存210。可以了解到:在一些情况下,待被预取的数据项的预定数目可以大于在块219中的空高速缓存行的数目。
在一些示例性实施例中,可以获得包括待被预取到高速缓存210的数据项的候选列表220,诸如,从后备存储库、存储装置、存储器、CPU等。候选列表220中的候选数据项的数目可以大于待被预取到高速缓存210的数据项的预定数目。作为示例,候选列表可以包括8个候选数据项,这大于要求被预取的4个数据项。
在一些示例性实施例中,可以根据分配给其中的数据项的分数来对候选列表220进行排序。与每个候选数据项相关联的分数可以被配置为指示从高速缓存210中检索到候选数据项的可能性。可以了解到:可以预先将分数分配给候选数据项,诸如,由候选数据项的源,由用户,由CPU等。附加地或者备选地,在每个预取迭代中,分数可以由高速缓存210、负责预取过程的实体等确定。还可以了解到:候选列表220中的候选数据项的分数高于被设置为用于预取到高速缓存210的条件的分数的预定阈值。
在一些示例性实施例中,候选列表220可以包括高速缓存210已经保留的数据项,诸如,被保留在条目212中的数据项2和被保留在条目213中的数据项3。附加地或者备选地,诸如条目221中的数据项4等新数据项具有最高分数,条目229中的数据项9具有最低分数等。
在一些示例性实施例中,在每次迭代中,可以从候选列表220中选择具有最高分数的候选数据项,并且确定是否将其添加至高速缓存210。在候选数据项未被高速缓存210所保留的情况下,可以在第一空高速缓存行中将候选数据项添加至高速缓存210。作为示例,可以将数据项4添加至高速缓存210的条目216。附加地或者备选地,在候选数据项已经被高速缓存210保留在高速缓存行中的情况下,可以更新高速缓存行的疏散度量。作为示例,在添加了数据项4和数据项5之后,可以发现数据项3被保留在条目213中。与条目213相关联的高速缓存行可以被移动至高速缓存210的顶部。
在一些示例性实施例中,可以反复执行选择数据项并且将其添加至高速缓存210,直到将预定数目的数据项添加至高速缓存210为止,例如,直到将4个新的数据项添加至高速缓存210为止。在添加了条目4和条目5并且更新了条目213的疏散度量之后,可以将数据项6添加至高速缓存210,从而达到将3个数据项添加至高速缓存210。然后,在与条目212相关联的高速缓存行中,可以发现数据项2被保留在高速缓存210中,并且因此,可以更新其疏散度量。在一些示例性实施例中,可以将疏散度量更新为在高速缓存210的顶部(例如,作为最新鲜的、最新的等),诸如,在预取的高速缓存250中。可以将已经被发现在数据项3之后的数据项2保留在高速缓存行252中,该高速缓存行252在保留数据项3的高速缓存行254之上。附加地或者备选地,可以根据数据项的分数来更新疏散度量,诸如,在预取的高速缓存240中,在该预取的高速缓存240中,可以将已经被发现在数据项3之后的数据项2保留在高速缓存行244中,该高速缓存行244在保留数据项3的高速缓存行242之下,因为数据项3的分数高于数据项2的分数。
在一些示例性实施例中,在添加了数据项4、数据项5和数据项6并且更新了条目213和条目212的疏散度量之后,可以将数据项7添加至高速缓存210,从而达到将4个数据项添加至高速缓存210。结果,可以终止预取过程以便达到将预定数目的所请求的数据项预取到高速缓存210。预取的高速缓存(例如,240或者250)仍然可以具有空高速缓存行的块249。
现在参照图3,图3示出了根据所公开的主题内容的一些示例性实施例的装置的框图。根据所公开的主题,装置300可以被配置为支持与现实世界物理***及其数字表示的并行用户交互。
在一些示例性实施例中,装置300可以包括一个或者多个处理器302。处理器302可以是中央处理单元(CPU)、微处理器、电子电路、集成电路(IC)等。处理器302可以被利用来执行装置300或者其子组件中的任何子组件所需的计算。
在所公开的主题内容的一些示例性实施例中,装置300可以包括输入/输出(I/O)模块305。I/O模块305可以被利用来向用户提供输出和接收来自用户的输入(诸如,例如,待被保存在存储装置350中的数据等)。
在所公开的主题内容的一些示例性实施例中,装置300可以包括存储装置350。存储装置350可以被配置为保留用于装置300的数据,诸如,通过处理器302的计算所生成的数据、从I/O模块305获得的数据等。
在所公开的主题内容的一些示例性实施例中,装置300可以包括高速缓存310。高速缓存310可以被配置为存储数据,使得可以更快地服务对该数据的未来请求。被存储在高速缓存310中的数据可以是早前的计算的结果或者被存储在别处(诸如,被存储在存储装置350中或者在装置300的外部的其他存储装置中)的数据的副本。可以了解到,由于高速缓存310的设计,访问高速缓存310可以比访问存储装置350快很多。
在一些示例性实施例中,高速缓存310可以是硬件高速缓存,诸如,CPU高速缓存、早期图形处理单元(GPU)高速缓存、数字信号处理器(DSP)高速缓存等。附加地或者备选地,高速缓存310可以是软件高速缓存,诸如,磁盘高速缓存、web高速缓存等。
在一些示例性实施例中,高速缓存310可以包括高速缓存行340。高速缓存行340中的每一行可以与数据相关联,该数据可以是在某一后备存储库(诸如,存储装置350)中的相同数据的副本。高速缓存行340中的每一行可以具有指定在后备存储库中的数据的身份的标识符,该后备存储库中的高速缓存行是副本。
在一些示例性实施例中,高速缓存客户端(诸如,处理器302、CPU(未示出)、web浏览器(未示出)、装置300的操作***(未示出)等)需要访问被假定为存在于存储装置350中的数据,其可以首先检查高速缓存310。如果在高速缓存行340中可以找到高速缓存行,其标识符与期望数据的标识符相匹配,则可以代替使用该高速缓存行中的数据。这种情况可以被称为高速缓存命中。引起高速缓存命中的访问的百分比可以被称为高速缓存310的命中率或者命中比率。
附加地或者备选地,当检查高速缓存310并且发现高速缓存310不包含具有期望标识符的任何高速缓存行时,其可以导致高速缓存未命中。这种情况可能需要对存储装置350中的数据的更昂贵的访问。一旦检索到所请求的数据,通常就可以将其复制到高速缓存310中,为下一次访问做好准备。
在一些示例性实施例中,高速缓存310可以被配置为执行对存储装置350中的数据进行预取,以便提高执行性能。高速缓存310可以获得用于从存储装置350进行预取的候选。
在一些示例性实施例中,高速缓存310可以包括预测器330。预测器330可以被配置为针对每个预取候选确定从高速缓存310中检索到候选的可能性的分数指示。预测器330可以被配置为执行机器学习以便对可能性进行预测。预测器330可以被配置为利用LSTM网络,以基于从高速缓存310中检索到哪些数据项的时间序列数据执行预测。
在一些示例性实施例中,高速缓存310可以被配置为基于候选数据项的对应分数,从于存储装置350获得的预取候选中选择前N个候选数据项,由此生成候选列表320。候选列表320可以包括基于其分数对其进行排序的N个候选数据项。N可以是大于需要被预取到高速缓存310的数据项的预定数目的数目。
在一些示例性实施例中,高速缓存310可以被配置为反复从候选列表320中选择候选数据项。在每次迭代中,高速缓存310可以选择尚未选择的、具有最高分数的候选数据项。高速缓存310可以被配置为确定是否将候选数据项添加至高速缓存310。高速缓存310可以被配置为确定候选数据项是否被高速缓存310所保留,例如,以确定高速缓存行340是否包括与候选数据项相应的高速缓存行。响应于确定候选数据项未被高速缓存310所保留,高速缓存310可以将候选数据项添加至高速缓存行340。可以将候选数据项添加至第一空高速缓存行,如果存在候选数据项,则可以根据高速缓存310的写入策略等来改写最后一个数据项。
附加地或者备选地,响应于确定候选数据项被高速缓存行310保留在高速缓存行中,高速缓存310可以被配置为更新高速缓存行的疏散度量。作为示例,在高速缓存310是LRU高速缓存的情况下,疏散度量可以是高速缓存行的新鲜度度量,并且可以将其更新为高速缓存行340中的最新鲜的高速缓存行。
可以了解到:高速缓存310可以被配置为反复选择并且添加候选数据项,预定数目的数据项被添加至高速高速缓存310。
在一些示例性实施例中,高速缓存310可以被配置为在向高速缓存310添加候选数据项之前检查进一步的限制,诸如,候选数据项的大小高于预定阈值,候选数据项的分数高于预定阈值等。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文所使用的术语仅出于描述特定实施例的目的,而不旨在限制本发明。如本文使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另有明确指示。还要明白,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,术语“包括(comprises)”和/或“包括(comprising)”指定存在所述特征、整数、步骤、操作、元件和/或组件,但是不排除存在或者添加一个或者多个其他特征、整数、步骤、操作、元件、组件和/或其组合。
在下面的权利要求书中的所有部件或者步骤以及功能元件的对应结构、材料、动作和等效物旨在包括用于结合如具体要求保护的其他要求保护的元件来执行功能的任何结构、材料或者动作。已经出于说明和描述之目的呈现了对本发明的描述,但是该描述不旨在是详尽的或者限于所公开的形式的本发明。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员而言将是明显的。选择并且描述了实施例以便最好地解释本发明和实际应用的原理,并且对于具有适合所设想的特定用途的各种修改的各个实施例,使本领域的其他普通技术人员能够理解本发明。
Claims (12)
1.一种用于将预定数目的数据项预取到高速缓存的方法,包括:
获得要预取的候选数据项列表,其中候选数据项的数目大于待被预取到所述高速缓存的数据项的所述预定数目,其中每个候选数据项与分数相关联,所述分数指示从高速缓存中检索到候选数据项的可能性;
从所述列表中反复选择候选数据项,并且确定是否将所述候选数据项添加至所述高速缓存,其中所述选择基于所述列表的顺序,其中所述列表的所述顺序基于所述候选数据项的分数,其中所述确定是否将所述候选数据项添加至所述高速缓存包括:
确定所述候选数据项是否被所述高速缓存所保留;以及
响应于确定所述候选数据项未被所述高速缓存所保留,将所述候选数据项添加至所述高速缓存;
其中所述反复选择和所述确定被执行,直到所述预定数目的数据项被添加至所述高速缓存为止。
2.根据权利要求1所述的方法,还包括:
响应于确定所述候选数据项被所述高速缓存保留在高速缓存行中,更新所述高速缓存行的疏散度量。
3.根据权利要求2所述的方法,其中所述高速缓存是最近最少使用LRU高速缓存,其中所述疏散度量是所述高速缓存行的新鲜度度量。
4.根据权利要求2所述的方法,其中所述将所述候选数据项添加至所述高速缓存需要第一处理持续时间,其中所述更新所述高速缓存行的所述疏散度量需要第二处理持续时间,其中所述第二处理持续时间少于所述第一处理持续时间。
5.根据权利要求1所述的方法,其中与每个候选数据项相关联的分数指示所述候选数据项从所述高速缓存中被检索到的可能性。
6.根据权利要求5所述的方法,其中与每个候选数据项相关联的所述分数由基于机器学习的预测器确定。
7.根据权利要求6所述的方法,其中基于机器学习的预测器基于长短期记忆LSTM网络。
8.根据权利要求1所述的方法,其中所述确定是否将所述候选数据项添加至所述高速缓存还包括:确定所述候选数据项的所述分数高于预定阈值。
9.根据权利要求1所述的方法,其中所述获得要预取的候选数据项列表包括:
获得包括所述列表和附加数据项的初始列表;以及
基于前N个候选数据项的对应分数来从所述初始列表中选择所述前N个候选数据项,由此获得所述列表。
10.一种用于将预定数目的数据项预取到高速缓存的装置,所述装置具有:处理器;存储器;以及高速缓存,所述处理器适于执行根据权利要求1至9中的任一项所述的方法的步骤。
11.一种计算机可读存储介质,所述计算机可读存储介质具有与其一起被实施的程序指令,所述程序指令由计算设备可执行以使所述计算设备执行根据权利要求1至9中任一项所述的方法的方法步骤。
12.一种用于将预定数目的数据项预取到高速缓存的***,所述***包括:模块,所述模块被单独配置为执行根据权利要求1至9中任一项所述的方法的每个步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/218,517 US10884938B2 (en) | 2018-12-13 | 2018-12-13 | Method and apparatus for prefetching data items to a cache |
US16/218,517 | 2018-12-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324556A CN111324556A (zh) | 2020-06-23 |
CN111324556B true CN111324556B (zh) | 2024-01-23 |
Family
ID=71072531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911107665.1A Active CN111324556B (zh) | 2018-12-13 | 2019-11-13 | 用于将预定数目的数据项预取到高速缓存的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US10884938B2 (zh) |
CN (1) | CN111324556B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11755534B2 (en) * | 2017-02-14 | 2023-09-12 | Qnap Systems, Inc. | Data caching method and node based on hyper-converged infrastructure |
JP7139719B2 (ja) * | 2018-06-26 | 2022-09-21 | 富士通株式会社 | 情報処理装置、演算処理装置及び情報処理装置の制御方法 |
US11455252B2 (en) * | 2019-06-26 | 2022-09-27 | Advanced Micro Devices, Inc. | Multi-class multi-label classification using clustered singular decision trees for hardware adaptation |
US12045169B2 (en) | 2020-12-23 | 2024-07-23 | Advanced Micro Devices, Inc. | Hardware configuration selection using machine learning model |
US20220223201A1 (en) * | 2021-01-11 | 2022-07-14 | Micron Technology, Inc. | Caching Techniques for Deep Learning Accelerator |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604055A (zh) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | 利用永久历史页表数据预取数据到高速缓存的装置和方法 |
CN101187863A (zh) * | 2006-11-17 | 2008-05-28 | 国际商业机器公司 | 数据处理***、处理器和进行数据处理的方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360299B1 (en) * | 1999-06-30 | 2002-03-19 | International Business Machines Corporation | Extended cache state with prefetched stream ID information |
US6842180B1 (en) * | 2000-09-20 | 2005-01-11 | Intel Corporation | Opportunistic sharing of graphics resources to enhance CPU performance in an integrated microprocessor |
US6615318B2 (en) * | 2002-01-22 | 2003-09-02 | International Business Machines Corporation | Cache management system with multiple cache lists employing roving removal and priority-based addition of cache entries |
US7168070B2 (en) * | 2004-05-25 | 2007-01-23 | International Business Machines Corporation | Aggregate bandwidth through management using insertion of reset instructions for cache-to-cache data transfer |
US7716424B2 (en) * | 2004-11-16 | 2010-05-11 | International Business Machines Corporation | Victim prefetching in a cache hierarchy |
JP4861338B2 (ja) * | 2005-02-15 | 2012-01-25 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 読み出し機能及びフェッチ機能を分けることによるデータ処理装置のメモリユニットの性能向上 |
US8788757B2 (en) | 2011-12-09 | 2014-07-22 | International Business Machines Corporation | Dynamic inclusive policy in a hybrid cache hierarchy using hit rate |
US9471510B2 (en) | 2013-12-20 | 2016-10-18 | Netapp, Inc. | System and method for cache monitoring in storage systems |
US9858190B2 (en) * | 2015-01-27 | 2018-01-02 | International Business Machines Corporation | Maintaining order with parallel access data streams |
US9952904B2 (en) * | 2015-08-21 | 2018-04-24 | International Business Machines Corporation | Distributing tracks to add to cache to processor cache lists based on counts of processor access requests to the cache |
US9734073B2 (en) * | 2015-10-30 | 2017-08-15 | Qualcomm Incorporated | System and method for flash read cache with adaptive pre-fetch |
US10853722B2 (en) * | 2016-12-30 | 2020-12-01 | Sanghai Cambricon Information Technology Co., Ltd. | Apparatus for executing LSTM neural network operation, and operational method |
CN107168652A (zh) | 2017-05-19 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种提升SSD Cache读性能的方法 |
-
2018
- 2018-12-13 US US16/218,517 patent/US10884938B2/en active Active
-
2019
- 2019-11-13 CN CN201911107665.1A patent/CN111324556B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604055A (zh) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | 利用永久历史页表数据预取数据到高速缓存的装置和方法 |
CN101187863A (zh) * | 2006-11-17 | 2008-05-28 | 国际商业机器公司 | 数据处理***、处理器和进行数据处理的方法 |
Also Published As
Publication number | Publication date |
---|---|
US10884938B2 (en) | 2021-01-05 |
US20200192811A1 (en) | 2020-06-18 |
CN111324556A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324556B (zh) | 用于将预定数目的数据项预取到高速缓存的方法和*** | |
US20170308468A1 (en) | Performance-driven cache line memory access | |
US9753857B2 (en) | Two handed insertion and deletion algorithm for circular buffer | |
JP2022109919A (ja) | マルチタスク再帰型ニューラルネットワーク | |
US20170103024A1 (en) | Information processing apparatus and cache control method | |
US20150195371A1 (en) | Changing a cache queue based on user interface pointer movement | |
CN111506604B (zh) | 访问数据的方法、装置和计算机程序产品 | |
KR20190038835A (ko) | 데이터 캐시 영역 프리페처 | |
CN116010300B (zh) | 一种gpu缓存方法及装置、电子设备和存储介质 | |
CN111708720A (zh) | 一种数据缓存方法、装置、设备及介质 | |
CN112925632B (zh) | 处理方法及装置、处理器、电子设备及存储介质 | |
US20190179765A1 (en) | Non-disruptive clearing of varying address ranges from cache | |
US11561796B2 (en) | Linked miss-to-miss instruction prefetcher | |
US11281588B2 (en) | Method, apparatus and computer program product for managing I/O operation using prediction model to predict storage area to be accessed | |
CN114586003A (zh) | 使用页级跟踪的加载顺序队列的推测执行 | |
KR101975101B1 (ko) | 학습을 이용한 프리페칭 장치 및 방법과 이에 관한 기록매체 | |
US11194575B2 (en) | Instruction address based data prediction and prefetching | |
CN111133424B (zh) | 开放寻址的探测屏障 | |
CN114450668A (zh) | 电路和方法 | |
US8484423B2 (en) | Method and apparatus for controlling cache using transaction flags | |
US11841799B2 (en) | Graph neural network accelerator with attribute caching | |
US11086781B2 (en) | Methods and apparatus for monitoring prefetcher accuracy information using a prefetch flag independently accessible from prefetch tag information | |
US10678699B2 (en) | Cascading pre-filter to improve caching efficiency | |
US20160041769A1 (en) | Recording medium storing access control program, access control apparatus, and access control method | |
KR102007086B1 (ko) | 프리페치 장치 및 방법과 이에 관한 기록매체 |
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 |