CN116662219A - 从存储装置中动态预取数据 - Google Patents
从存储装置中动态预取数据 Download PDFInfo
- Publication number
- CN116662219A CN116662219A CN202210408168.0A CN202210408168A CN116662219A CN 116662219 A CN116662219 A CN 116662219A CN 202210408168 A CN202210408168 A CN 202210408168A CN 116662219 A CN116662219 A CN 116662219A
- Authority
- CN
- China
- Prior art keywords
- prefetch
- cache
- data
- measure
- load
- 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
- 230000004044 response Effects 0.000 claims description 21
- 238000000034 method Methods 0.000 claims description 18
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003068 static 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- 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
- 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/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
-
- 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/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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/602—Details relating to cache prefetching
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及从存储装置中动态预取数据。在一些示例中,系统基于预取缓存的过去利用率的度量,动态调整预取缓存的预取负载,其中,预取负载用于将数据从存储装置中预取到预取缓存中。
Description
背景技术
系统可以包括不同类型的存储装置。第一种类型的存储装置是用于存储相对大量数据的持久存储装置。持久存储装置可以用诸如基于磁盘的存储设备、固态驱动器等存储设备来实现。另一种类型的可以包含在系统中的存储装置是更小但更快的存储装置,其可用于缓存存储在持久存储装置中的部分数据。可以使用诸如动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备等的存储器设备来实现上述更快、更小的存储装置。
附图说明
本公开的一些实施方式参考以下附图进行描述。
图1是根据一些示例的包括具有动态预取引擎的存储系统的布置的框图。
图2是根据一些示例的动态预取引擎的过程的流程图。
图3是根据一些示例的其中动态预取引擎可以控制预取线程数量的布置的框图。
图4是根据一些示例的存储机器可读指令的存储介质的框图。
图5是根据一些示例的系统的框图。
图6是根据一些示例的过程的流程图。
在所有附图中,相同的附图标记表示相似但不一定相同的元素。这些图不一定按比例绘制,并且某些部件的尺寸可能被放大以更清楚地说明所示示例。此外,附图提供了与描述一致的示例和/或实施方式。然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
在本公开中,术语“一(a)”、“一个(an)”或“该(the)”的使用也旨在包括复数形式,除非上下文另有明确指示。此外,当在本公开中使用时,术语“包括(includes,including)”、“包含(comprises,comprising)”、“具有(have,having)”指定了所述元素的存在,但不排除其他元素的存在或添加。
可以将数据从存储装置(使用可以包括不同类型的存储设备的混合的一个或多个存储设备实现)中预取到缓存中,以提高后续接收到的请求的访问速度,这些请求可以通过从缓存中检索数据而被满足。在一些示例中,存储装置可以使用一个或多个较慢的存储设备(例如,一个或多个基于磁盘的存储设备、一个或多个固态驱动器等)来实现,而缓存可以使用一个或多个较快的存储器设备(例如,一个或多个DRAM设备、一个或多个SRAM设备、一个或多个闪存设备等)来实现。
更一般地,“缓存”可指可用于存储存在于另一个存储装置中的数据副本的任何类型的存储装置。在其他示例中,“缓存”可以存储不存在于另一个存储装置中的数据。“预取缓存”可以指用于存储预取数据(如从另一个存储装置中预取的数据)的缓存。应当注意,缓存可用于各种不同的目的,包括存储预取数据以及存储其他形式的缓存数据。
从存储装置中预取数据可以指从存储装置中检索数据,该数据当前不是来自请求者的任何访问请求的对象。访问请求可以指读请求或写请求。“请求者”可以指能够请求数据的读或写访问的任何实体。例如,请求者可以包括程序或机器。作为另一个示例,请求者可以是用户。
在给定从存储装置中访问数据的实际模式的情况下,基于预取数据有可能在相对不久的将来成为后续请求的对象的判断来预取数据。将数据从存储装置中预取到缓存允许使用缓存中的预取数据来满足后续从请求者接收的访问请求。为了满足访问请求,在缓存中访问数据。如果在接收到对数据的访问请求时缓存中不存在所请求的数据,则将所请求的数据从存储装置中检索到缓存中,然后在缓存中访问所请求的数据。如果在接收到访问请求时所请求的数据在缓存中已经存在的预取数据中,那么与响应于访问请求而首先从存储装置中检索相同数据并且然后在缓存中访问的情况相比,可以更快地访问所请求的数据。缓存通常也具有比存储装置更快的访问速度。
在一些示例中,数据的访问本质上可以是顺序的。例如,来自请求者(或来自多个请求者)的一系列访问请求可以是对存储装置中数据的连续部分的请求。存储装置中数据的连续部分可以指具有连续物理或逻辑地址、或块号、或页号、或表示由系统接收或存储的数据部分的顺序的任何其他标识符的部分。响应于第一访问请求,预取过程可以将数据的附加部分(其是数据的连续部分的一部分)预取到缓存中,伴随着期望后续接收到的请求可能是针对预取数据的。
然而,预取数据与资源的使用相关,资源包括存储资源(用于存储预取数据)、处理资源(用于实现决定预取哪些数据的逻辑)和通信资源(用于将预取数据从存储装置传输到缓存)。如果在预取数据被逐出(例如为其他输入/输出(I/O)操作提供存储空间)之前没有使用预取数据,那么与将数据预取到缓存相关联的资源使用将被浪费。如果系统的I/O负载相对较高并且缓存已满或几乎已满,则从缓存中逐出预取数据的可能性更高。
此外,在预取过程和可以共享缓存的另一个过程之间可能发生资源冲突。例如,预取过程可以将数据预取到缓存的部分中,该缓存的部分也可能是来自另一个过程的访问的对象。在一些示例中,可以将缓存布置为数据页,其中每个数据“页”具有指定大小(指定大小是固定的或可调的)。
资源冲突可能是锁冲突的形式。例如,为了访问缓存的给定页面,请求实体(例如,预取过程)可能必须获取锁,这可以防止另一个实体(例如,请求者)访问给定页面,因为该另一个实体将无法获取给定页面上的锁。
如果与缓存访问相关联的资源冲突以高速率发生,这可能会导致系统性能下降,因为预取过程可能会阻止其他请求者快速完成其输入/输出(I/O)操作或其他请求者的I/O操作会延迟预取操作的完成。
资源冲突会降低与将数据预取到缓存中相关联的好处,特别是如果使用具有相对较快访问速度的一个或多个存储设备来实现存储装置。在这样的示例中,如果系统的I/O负载相对较高并且访问缓存时资源冲突的可能性相对较高,则可以通过避免数据的预取来提高整体系统性能。如果存储装置是使用一个或多个更快的存储设备实现的,那么与从存储装置(而不是缓存)检索数据相关联的惩罚就会减少。
因为系统的I/O负载会随着时间迅速改变,因此可能难以确定何时开启或关闭预取。
根据本公开的一些实施方式,基于一个或多个度量来动态调整预取负载,所述一个或多个度量包括预取缓存的过去利用率的度量和/或在访问预取缓存时的访问冲突的度量。“预取负载”通常是指系统中正在发生或计划的预取操作的数量。
图1是包括具有前端104和存储装置106的存储系统102的示例布置的框图,存储装置106可以被认为是存储系统102的后端的一部分。存储系统102的“前端”是指存储系统102的部件的集合,其通过网络与请求者108交互并且响应于来自请求者108的请求执行操作以管理对存储装置106中的数据的访问。
存储系统102的“后端”是指存储数据的存储基础设施。存储装置106包括存储设备的集合118(一个存储设备或多个存储设备)。
在根据图1的示例中,前端104包括存储控制器110,其响应于来自请求者的请求来管理对存储装置106的访问。存储控制器110可以接收来自请求者108的请求,例如写请求或读请求。响应于该请求,存储控制器110可以通过通信链路116向存储装置106发出命令以执行数据的写入或读取。
根据本公开的一些实施方式,前端104还包括动态预取引擎112。动态预取引擎112能够基于指定的标准(下文进一步讨论)动态调整存储系统102的预取负载。
如本文所用,“引擎”可以指硬件处理电路,其可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列或其他硬件处理电路的任何或某种组合。可替代地,“引擎”可以指硬件处理电路和可在硬件处理电路上执行的机器可读指令(软件和/或固件)的组合。
前端104还包括缓存114,其可用于存储数据(例如存储在存储装置106中的数据的副本或其他数据)。在一些示例中,动态预取引擎112可以将数据从存储装置106中预取到缓存114中。缓存114因此可以存储预取数据以及其他数据。缓存114可以使用存储器设备的集合(一个存储器设备或多个存储器设备)来实现。
在一些示例中,可能存在由请求者108和/或可能涉及将相应数据存储到缓存114中的其他实体发起的多个I/O操作。多个I/O操作可以包括从存储装置106中读取数据的顺序流、从存储装置106中随机读取数据、向存储装置106写入数据等等。数据的“顺序流”可以指存储在存储装置106中的连续物理存储位置中的一系列数据部分。数据的“随机读取”可以指能够从存储装置106中的任何给定存储位置(由存储地址所指定)中访问数据的读取操作。
多个I/O操作可能与动态预取引擎112竞争访问缓存114(共享资源),这会导致缓存114处的资源冲突,特别是如果存储系统102中的I/O负载相对较重。
如上所述,当实体试图获取锁以写入缓存114中的页面时,可能由于锁冲突而发生资源冲突。当一个实体(例如,动态预取引擎112)在缓存114中的页面上持有锁以执行预取操作时,另一个实体将无法访问同一页面,这可能会延迟另一个实体的I/O操作。
作为另一个示例,在数据已经被动态预取引擎112预取到缓存114中之后,后续的I/O操作可能导致一些或全部的预取数据被从缓存114中逐出,例如当缓存114已满时。作为结果,缓存114中的预取数据可能在预取数据被读取之前被逐出,这会导致与数据的预取相关联的资源使用浪费。
为了解决前述问题,动态预取引擎112能够基于一个或多个度量来动态调整预取负载,所述一个或多个度量包括预取缓存的过去利用率的度量120和/或在访问预取缓存114时的访问冲突的度量122。
度量120和122可以被存储在存储系统102的存储器124中。存储器124可以使用存储器设备的集合(一个存储器设备或多个存储器设备)来实现。在其他示例中,度量120和122可以被存储在缓存114中或另一个存储位置中。
在一些示例中,存储系统102包括监控引擎126,其能够监控缓存114的访问以获得度量120和122。
预取缓存的过去利用率的度量120指的是例如在给定时间间隔内(例如,过去一小时、过去24小时、过去一周等),预取缓存的历史使用效率如何。在一些示例中,预取缓存的过去利用率的度量120可以包括预取缓存利用率(P)。注意,“预取缓存”可以指代被动态预取引擎112使用以用来存储预取数据的任何缓存或缓存的一部分。在一些示例中,P可以表示为百分比,例如导致预取缓存命中的存储在预取缓存中的数据的读取百分比。当从预取缓存中读取被满足时会发生“预取缓存命中”。P可以被表示为导致缓存命中的预取缓存(在给定时间间隔内)的所有访问的百分比。监控引擎126可以基于监控在给定时间间隔内对预取缓存的访问以及那些访问中的哪些访问导致缓存命中来获得预取缓存利用率(P)。
在其他示例中,预取缓存的过去利用率的度量120可以使用其他参数来表达,例如每单位时间的缓存命中的计数等。
在访问预取缓存114时的资源冲突的度量122提供了由不同实体对缓存114的访问引起的冲突量级的指示。例如,度量122可以基于一个或多个实体不能访问缓存114的事件的数量(例如,实体不能获得访问缓存114的页面的锁,因为该锁正由另一个实体例如动态预取引擎112持有)。度量122也被称为资源冲突度量(C)。例如,测量122可以基于在访问缓存114中包含预取数据的页面时读取冲突(例如由于无法获得锁)的事件的数量。作为另一示例,测量122可以基于导致冲突的缓存114中的预取数据的访问量与缓存114中的预取数据的访问总量之间的比率。
监视引擎126可以基于对缓存114中的预取数据的例如导致锁冲突的访问的观察来获得度量122(或C)。
图2是根据一些示例的由动态预取引擎112执行的过程的流程图。尽管图2以指定的顺序描绘了任务,但是注意在其他示例中,任务可以以不同的顺序执行,并且可以省略一些任务并且添加其他任务。
动态预取引擎112接收(在202处)预取缓存利用率度量(P),并且接收(在204处)资源冲突度量(C),其是在访问缓存中的预取数据时的资源冲突的度量。例如,动态预取引擎112可以通过从存储器124检索度量来接收P和C。
动态预取引擎112然后基于预取缓存利用率度量(P)和资源冲突度量(C)来决定是否执行预取负载的调整。预取负载的调整可以包括增加预取负载或减少预取负载。
为了决定是否增加或减少预取负载,动态预取引擎112将P和C的值与放大阈值(TP-up和TC-up)和缩小阈值(TP-down和TC-down)进行比较。将P和C的值与放大阈值(TP-up和TC-up)进行比较以确定是否应增加预取负载,并将P和C的值与缩小阈值(TP-down和TC-down)进行比较以确定是否应该减少预取负载。在一些示例中,TP-down和TP-up的值可以不同,并且TC-down和TC-up的值可以不同。在其他示例中,TP-down和TP-up的值可以相同,和/或,TC-down和TC-up的值可以相同。
具体地,动态预取引擎112确定(在206处)是否P<TP-down或C>TC-down。P小于TP-down表示预取缓存利用率足够低,因此应该减少预取负载。C大于TC-down表示与访问预取数据相关的资源冲突足够高,因此应该减少预取负载。
响应于确定P<TP-down或C>TC-down,动态预取引擎112减少(在208处)预取负载。在另一示例中,响应于确定P<TP-down和C>TC-down两者,减少预取负载。
假设在206处所检查的条件都不为真,动态预取引擎112确定(在210处)是否P>TP-up且C<TC-up。P大于TP-up表示预取缓存利用率高,C小于TC-up表示与访问预取数据相关的资源冲突低。如果在210处所检查的两个条件都为真,则动态预取引擎112增加(在212处)预取负载。
如果P>TP-up并且C<TC-up条件不成立,则动态预取引擎112不改变预取负载,并返回任务202。
如图3所示,在一些示例中,预取负载可以指的是主动(actively)将数据从存储装置106中预取到缓存114的预取线程304-1、304-2、……、304-N(N≥1)的数量,缓存114也被称为“预取缓存”,因为缓存114存储预取的数据(以及其他类型的数据)。
动态预取引擎112可以为动态预取引擎112已经确定的将从数据的预取中受益的每个I/O操作启动预取线程。这种I/O操作的一个示例是从存储装置106中按顺序检索数据部分的I/O操作。不同的I/O操作可以由不同的请求者108或其他实体发起。I/O操作可以使数据以I/O业务流的方式从存储装置106中被检索。
“预取线程”可以指代由动态预取引擎112针对由诸如请求者108之类的实体发起的对应I/O操作而启动的相应预取操作。动态预取引擎112可以响应于不同的I/O操作而执行单独的预取操作(以预取线程的形式)。
图3示出了N个主动将数据预取到预取缓存的预取线程304-1、304-2、……、304-N。在一些示例中,可以存在在任何给定时间可以处于活动状态的预取线程的最大数量;换言之,动态预取引擎112不允许启动超过最大数量的预取线程。
为了动态调整预取负载,动态预取引擎112可以增加或减少预取线程的数量(N)。如上所述,预取线程数量(N)的调整可以基于预取缓存利用率度量(P)和资源冲突度量(C)。
可以根据以下等式计算预取线程数量(N)的动态减少:
其中K是常数(例如,10或不同的常数),D(Step)表示每次迭代中要按比例缩小的线程数量。例如,D(Step)可以是1、2、3等等。如果在图2中的206处确定P<TP-down或C>TC-down,则使用等式1。等式1递增地减少预取线程的数量。
预取线程数量(N)的动态增加可以根据以下等式计算:
N=N+I(Step) (等式2)
其中I(Step)表示每次迭代中要增加的线程数量。例如,I(Step)可以是1、2、3等等。
如果P>TP-up且C<TC-up,如在图2中的210处所确定的那样,则使用等式2。等式2递增地增加预取线程的数量。
图4是存储机器可读指令的非暂态机器可读或计算机可读存储介质400的框图,所述机器可读指令在执行时使系统执行各种任务。
机器可读指令包括动态预取负载调整指令402以基于预取缓存的过去利用率的度量(例如,P)动态调整预取缓存的预取负载,其中预取负载用于将数据从存储装置中预取到预取缓存中。
在一些示例中,通过动态调整预取线程(例如,图3中的304-1到304-N)的数量来动态调整预取负载,这些预取线程用于将数据从存储装置中预取到预取缓存中。
在一些示例中,机器可读指令将进一步基于在访问预取缓存中的预取数据时的冲突的度量(例如,C)来动态调整预取负载。
在一些示例中,在访问预取缓存中的预取数据时的冲突的度量是基于一个或多个实体不能访问预取缓存的事件的数量。
在一些示例中,在访问预取缓存中的预取数据时的冲突的度量是基于访问预取缓存时的读冲突事件的数量。
在一些示例中,在访问预取缓存中的预取数据时的冲突的度量是基于一个或多个实体不能获得锁以访问预取缓存的事件的数量。
在一些示例中,预取缓存的过去利用率的度量是基于存储在预取缓存中的已被访问的预取数据的百分比。
在一些示例中,预取缓存的过去利用率的度量是基于存储在预取缓存中的导致缓存命中的数据的读取百分比。
在一些示例中,机器可读指令通过响应于预取缓存的过去利用率的度量满足阈值(例如,P<TP-down)而递增地减少预取负载来动态调整预取负载。
在一些示例中,机器可读指令通过响应于预取缓存的过去利用率的度量满足阈值(例如,P>TP-up)而递增地增加预取负载来动态调整预取负载。
在一些示例中,机器可读指令通过响应于预取缓存的过去利用率的度量满足第一阈值(例如,P<TP-down)来递增地减少预取负载,并且响应于预取缓存的过去利用率的度量满足不同于第一阈值的第二阈值(例如,P>TP-up)来递增地增加预取负载来动态调整预取负载。
在一些示例中,机器可读指令进一步基于在访问预取缓存中的预取数据时的冲突的度量来动态调整预取负载,预取负载的动态调整包括响应于预取缓存的过去利用率的度量满足第一缩小阈值或在访问预取缓存中的预取数据时的冲突的度量满足第二缩小阈值(例如,P<TP-down或C>TC-down)来递增地减少预取负载,并且响应于预取缓存的过去利用率的度量达到第一放大阈值并且在访问预取缓存中的预取数据时的冲突的度量满足第二放大阈值来递增地增加预取负载(例如,P>TP-up和C<TC-up)。
图5是系统500(例如,图1的存储系统102或其他计算系统)的框图。
系统500包括缓存502以存储从存储装置中预取的数据。系统500包括预取控制器504(例如,动态预取引擎112)以基于在访问缓存时的资源冲突的度量(506)动态调整缓存502的预取负载,其中预取负载用于将数据从存储装置中预取到缓存502中。
在一些示例中,预取控制器504用于进一步基于缓存中的预取数据的过去利用率的度量来动态调整预取负载。
图6是根据一些示例的过程600的流程图。过程600可以在具有硬件处理器的系统中执行。硬件处理器可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列或其他硬件处理电路。
过程600包括接收(在602处)存储从存储装置中预取的数据的缓存的过去利用率的度量。例如,可以从存储器中检索过去利用率的度量。
过程600包括接收(在604处)在访问缓存中的预取数据时的资源冲突的度量。例如,可以从存储器中检索资源冲突的度量。
过程600包括基于过去利用率的度量和资源冲突的度量动态调整(在606处)预取缓存的预取负载,其中预取负载用于将数据从存储装置中预取到缓存中。
在前述描述中,阐述了许多细节以提供对本文所公开的主题的理解。然而,可以在没有这些细节中的一些细节的情况下实现实施方式。其他实施方式可以包括对上述细节的修改和变化。所附的权利要求旨在涵盖这样的修改和变化。
Claims (20)
1.一种非暂态机器可读存储介质,包括在执行时使得系统执行以下操作的指令:
基于预取缓存的过去利用率的度量,动态调整所述预取缓存的预取负载,其中,所述预取负载用于将数据从存储装置中预取到所述预取缓存中。
2.根据权利要求1所述的非暂态机器可读存储介质,其中,所述指令通过动态调整将所述数据从所述存储装置中预取到所述预取缓存中的预取线程的数量来动态调整所述预取负载。
3.根据权利要求1所述的非暂态机器可读存储介质,其中,所述指令进一步基于在访问所述预取缓存中的预取数据时的冲突的度量来动态调整所述预取负载。
4.根据权利要求3所述的非暂态机器可读存储介质,其中,在访问所述预取缓存中的所述预取数据时的冲突的所述度量基于一个或多个实体不能访问所述预取缓存的事件的数量。
5.根据权利要求3所述的非暂态机器可读存储介质,其中,在访问所述预取缓存中的所述预取数据时的冲突的所述度量基于访问所述预取缓存时的读冲突事件的数量。
6.根据权利要求3所述的非暂态机器可读存储介质,其中,在访问所述预取缓存中的所述预取数据时的冲突的所述度量基于一个或多个实体不能获得锁以访问所述预取缓存的事件的数量。
7.根据权利要求1所述的非暂态机器可读存储介质,其中,所述预取缓存的过去利用率的所述度量基于存储在所述预取缓存中的已被访问的预取数据的百分比。
8.根据权利要求1所述的非暂态机器可读存储介质,其中,所述预取缓存的过去利用率的所述度量基于存储在所述预取缓存中的导致缓存命中的数据的读取百分比。
9.根据权利要求1所述的非暂态机器可读存储介质,其中,所述指令用于响应于将所述预取缓存的过去利用率的所述度量与阈值进行比较来动态调整所述预取负载。
10.根据权利要求9所述的非暂态机器可读存储介质,其中,所述指令通过响应于所述预取缓存的过去利用率的所述度量满足阈值而递增地减少所述预取负载来动态调整所述预取负载。
11.根据权利要求9所述的非暂态机器可读存储介质,其中,所述指令通过响应于所述预取缓存的过去利用率的所述度量满足阈值而递增地增加所述预取负载来动态调整所述预取负载。
12.根据权利要求9所述的非暂态机器可读存储介质,其中,所述阈值是第一阈值,并且其中,所述指令通过以下方式动态调整所述预取负载:
响应于所述预取缓存的过去利用率的所述度量满足所述第一阈值来递增地减少所述预取负载;以及
响应于所述预取缓存的过去利用率的所述度量满足不同于所述第一阈值的第二阈值来递增地增加所述预取负载。
13.根据权利要求1所述的非暂态机器可读存储介质,其中,所述指令进一步基于在访问所述预取缓存中的预取数据时的冲突的度量来动态调整所述预取负载,所述预取负载的所述动态调整包括:
响应于所述预取缓存的过去利用率的所述度量满足第一缩小阈值或在访问所述预取缓存中的所述预取数据时的冲突的所述度量满足第二缩小阈值来递增地减少所述预取负载;以及
响应于所述预取缓存的过去利用率的所述度量达到第一放大阈值并且在访问所述预取缓存中的所述预取数据时的冲突的所述度量满足第二放大阈值来递增地增加所述预取负载。
14.一种系统,包括:
用于存储从存储装置中预取的数据的缓存;和
预取控制器,用于:
基于在访问所述缓存时的资源冲突的度量,动态调整所述缓存的预取负载,其中,所述预取负载用于将数据从所述存储装置中预取到所述缓存中。
15.根据权利要求14所述的系统,其中,所述预取控制器用于:
进一步基于所述缓存中的预取数据的过去利用率的度量,动态调整所述预取负载。
16.根据权利要求15所述的系统,其中,所述预取控制器用于:
基于将资源冲突的所述度量与第一阈值进行比较以及将所述缓存中的所述预取数据的过去利用率的所述度量与第二阈值进行比较,动态调整所述预取负载。
17.根据权利要求16所述的系统,其中,所述第一阈值是第一缩小阈值,并且所述第二阈值是第二缩小阈值,并且其中,所述预取控制器用于通过递增地减少所述预取负载来动态调整所述预取负载。
18.根据权利要求16所述的系统,其中,所述第一阈值是第一放大阈值,并且所述第二阈值是第二放大阈值,并且其中,所述预取控制器用于通过递增地增加所述预取负载来动态调整所述预取负载。
19.一种在包括硬件处理器的系统中执行的方法,包括:
接收存储从存储装置中预取的数据的缓存的过去利用率的度量;
接收在访问所述缓存中的所述预取数据时的资源冲突的度量;以及
基于过去利用率的所述度量和资源冲突的所述度量动态调整所述缓存的预取负载,其中所述预取负载用于将数据从所述存储装置中预取到所述缓存中。
20.根据权利要求19所述的方法,其中,动态调整所述预取负载包括调整用于从所述存储装置中预取数据到所述缓存中的预取线程的数量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/651,648 | 2022-02-18 | ||
US17/651,648 US11853221B2 (en) | 2022-02-18 | 2022-02-18 | Dynamic prefetching of data from storage |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662219A true CN116662219A (zh) | 2023-08-29 |
Family
ID=87518704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210408168.0A Pending CN116662219A (zh) | 2022-02-18 | 2022-04-19 | 从存储装置中动态预取数据 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11853221B2 (zh) |
CN (1) | CN116662219A (zh) |
DE (1) | DE102022108424A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118093020A (zh) * | 2024-04-01 | 2024-05-28 | 海光信息技术股份有限公司 | 数据预取方法、装置、电子设备、电子装置和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110113199A1 (en) * | 2009-11-09 | 2011-05-12 | Tang Puqi P | Prefetch optimization in shared resource multi-core systems |
US20140101388A1 (en) * | 2012-10-10 | 2014-04-10 | Advanced Micro Devices, Inc. | Controlling prefetch aggressiveness based on thrash events |
CN104636270A (zh) * | 2013-11-14 | 2015-05-20 | Arm有限公司 | 数据处理装置中的自适应预取 |
US20180107505A1 (en) * | 2016-10-13 | 2018-04-19 | International Business Machines Corporation | Cache memory transaction shielding via prefetch suppression |
CN110869914A (zh) * | 2017-08-30 | 2020-03-06 | 甲骨文国际公司 | 硬件预取器的基于利用率的节流 |
CN113407119A (zh) * | 2021-06-28 | 2021-09-17 | 海光信息技术股份有限公司 | 数据预取方法、数据预取装置、处理器 |
US11210363B1 (en) * | 2018-04-26 | 2021-12-28 | Meta Platforms, Inc. | Managing prefetching of content from third party websites by client devices based on prediction of user interactions |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6163840A (en) | 1997-11-26 | 2000-12-19 | Compaq Computer Corporation | Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline |
US6237073B1 (en) | 1997-11-26 | 2001-05-22 | Compaq Computer Corporation | Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information |
US6549930B1 (en) | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
US6195748B1 (en) | 1997-11-26 | 2001-02-27 | Compaq Computer Corporation | Apparatus for sampling instruction execution information in a processor pipeline |
US5964867A (en) | 1997-11-26 | 1999-10-12 | Digital Equipment Corporation | Method for inserting memory prefetch operations based on measured latencies in a program optimizer |
US6092180A (en) | 1997-11-26 | 2000-07-18 | Digital Equipment Corporation | Method for measuring latencies by randomly selected sampling of the instructions while the instruction are executed |
US5809450A (en) | 1997-11-26 | 1998-09-15 | Digital Equipment Corporation | Method for estimating statistics of properties of instructions processed by a processor pipeline |
US6000044A (en) | 1997-11-26 | 1999-12-07 | Digital Equipment Corporation | Apparatus for randomly sampling instructions in a processor pipeline |
US5923872A (en) | 1997-11-26 | 1999-07-13 | Digital Equipment Corporation | Apparatus for sampling instruction operand or result values in a processor pipeline |
US6119075A (en) | 1997-11-26 | 2000-09-12 | Digital Equipment Corporation | Method for estimating statistics of properties of interactions processed by a processor pipeline |
US20130013867A1 (en) * | 2011-07-06 | 2013-01-10 | Advanced Micro Devices, Inc. | Data prefetcher mechanism with intelligent disabling and enabling of a prefetching function |
US10489297B2 (en) * | 2017-02-22 | 2019-11-26 | Intel Corporation | Prefetching time allocation |
US20190213130A1 (en) * | 2018-01-05 | 2019-07-11 | Intel Corporation | Efficient sector prefetching for memory side sectored cache |
US11593167B2 (en) * | 2019-05-09 | 2023-02-28 | International Business Machines Corporation | Thread embedded cache management |
-
2022
- 2022-02-18 US US17/651,648 patent/US11853221B2/en active Active
- 2022-04-07 DE DE102022108424.8A patent/DE102022108424A1/de active Pending
- 2022-04-19 CN CN202210408168.0A patent/CN116662219A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110113199A1 (en) * | 2009-11-09 | 2011-05-12 | Tang Puqi P | Prefetch optimization in shared resource multi-core systems |
US20140101388A1 (en) * | 2012-10-10 | 2014-04-10 | Advanced Micro Devices, Inc. | Controlling prefetch aggressiveness based on thrash events |
CN104636270A (zh) * | 2013-11-14 | 2015-05-20 | Arm有限公司 | 数据处理装置中的自适应预取 |
US20180107505A1 (en) * | 2016-10-13 | 2018-04-19 | International Business Machines Corporation | Cache memory transaction shielding via prefetch suppression |
CN110869914A (zh) * | 2017-08-30 | 2020-03-06 | 甲骨文国际公司 | 硬件预取器的基于利用率的节流 |
US11210363B1 (en) * | 2018-04-26 | 2021-12-28 | Meta Platforms, Inc. | Managing prefetching of content from third party websites by client devices based on prediction of user interactions |
CN113407119A (zh) * | 2021-06-28 | 2021-09-17 | 海光信息技术股份有限公司 | 数据预取方法、数据预取装置、处理器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118093020A (zh) * | 2024-04-01 | 2024-05-28 | 海光信息技术股份有限公司 | 数据预取方法、装置、电子设备、电子装置和介质 |
Also Published As
Publication number | Publication date |
---|---|
US20230267077A1 (en) | 2023-08-24 |
DE102022108424A1 (de) | 2023-08-24 |
US11853221B2 (en) | 2023-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10776276B2 (en) | Bypass storage class memory read cache based on a queue depth threshold | |
US11126555B2 (en) | Multi-line data prefetching using dynamic prefetch depth | |
US6813691B2 (en) | Computer performance improvement by adjusting a count used for preemptive eviction of cache entries | |
US9378153B2 (en) | Early write-back of modified data in a cache memory | |
US8949544B2 (en) | Bypassing a cache when handling memory requests | |
US6810465B2 (en) | Limiting the number of dirty entries in a computer cache | |
US7757045B2 (en) | Synchronizing recency information in an inclusive cache hierarchy | |
EP3676713B1 (en) | Utilization-based throttling of hardware prefetchers | |
EP4078387B1 (en) | Cache management based on access type priority | |
US11232035B2 (en) | Memory controller with pre-loader | |
US6959363B2 (en) | Cache memory operation | |
CN116662219A (zh) | 从存储装置中动态预取数据 | |
US20190163639A1 (en) | Caching bypass mechanism for a multi-level memory | |
US6978349B1 (en) | Adaptive cache memory management | |
US10810126B2 (en) | Cache storage techniques | |
CN112445794A (zh) | 一种大数据系统的缓存方法 | |
CN114691541B (zh) | 一种基于动态访问的dram-nvm混合内存预测器 | |
CN118093020A (zh) | 数据预取方法、装置、电子设备、电子装置和介质 | |
CN116069719A (zh) | 处理器、内存控制器、片上系统芯片和数据预取方法 | |
TW202429266A (zh) | 用於管理髒資料的系統與方法 | |
CN116841915A (zh) | Cache的控制方法、控制器、介质、电子设备 | |
CN117501231A (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 |