Spatial Prefetcher

AMP Prefetcher Patent

AMPM (access map pattern matching)

https://jilp.org/vol13/v13paper3.pdf
总体上AMPM是一个检测所有可能stride的stride prefetcher

AMPM认为以前的prefetcher有几个关键问题(09年的时候)

  1. prefetcher只能检测比较简单的pattern, 所以coverage很低
  2. 在CPU使用了比较大的优化时,比如out-of-order execution, memory访问被打乱,prefetcher无法应对这种乱序
    AMPM能够比较好的处理这些问题

a. Main Com ponents

Pasted image 20230509104638.png

a.i a memory access map

Pasted image 20230509102202.png|500
memory access map是一个bitmap的形式,但是其中的每个field都是一个状态机(访问与否,prefetch与否)。
AMPM将Memory划分成一个一个的zone, 比如2KB划分一个zone。
zone可以对应一个memory access map entry。zone中的每个cache line会对应到memory access map中的一个位置,对应该位置的一个状态机。

其中状态机的状态转换如下图所示
Pasted image 20230509102432.png|400

a.ii hardware pattern matching logic

这个过程中,3个连续的zone的memory access map entry会被读入(前一个zone, 当前zone, 后一个zone),构成一个更大的memory access map。在这个map上,pattern matching logic遍历stride, 生成一些可能的prefetch requests。

stride match的逻辑如下:
t: request addr
N: the number of cache lines in one zone
k: stride
hardware pattern matching logic同时检测memory access map中t+k, t+2k, t+2k+1的状态(k=0,1...N/2-1)。
如果t+k,t+2k(或者t+2k+1)处于Access state, 那么-k是一个可能的stride, t-k会成为一个prefetch candidate

如下是一个例子
0x1, 0x3, 0x4已经被访问了
当前0x5被访问
prefetch generator生成两个candidates

b. Prefetch Degree Control调节逻辑

AMPM在工作过程中会动态调节prefetch degree
Pasted image 20230509104856.png
Pasted image 20230509104827.png

BOP

https://hal.inria.fr/hal-01254863/file/BOP_HPCA_2016.pdf

SMS

主要思想:track一个region上的访问模式,形成一个bit pattern。SMS认为如果PC和trigger offset一样的话,访问其他的region也应该是类似的bit-pattern。(Trigger offset是在这个region上第一次访问时的offset)
Pasted image 20230424103000.png

SMS最主要的结构有Accumulation Table, 记录region的bit-pattern。这个pattern训练成熟,也就是被evict的时候,会放入Pattern History Table。
Pasted image 20230424103335.png

Pattern History Table使用PC+offset索引,然后看bit-pattern中哪些位置1了,就进行prefetch
Pasted image 20230424103340.png

i. PMP

SMS用了PC+trigger offset作为匹配bit pattern的一个特征
其实还可以选择其他特征,比如用单独pc去匹配,单独用trigger offset, 或者用memory address等等

PMP论文中提出了评估这些feature好坏的两个指标,一个是Pattern collision rate, 一个是pattern duplicate rate

a. PMP整体框架

Pasted image 20230424103555.png

图左边展示了pattern的merge过程。Offset的某个取值如果新来了一个bit pattern, 先根据trigger offset进行一次anchor, 然后和之前的bit pattern相加。
在prefetch的时候,如果counter大于某一置信程度,就会在L1预取,置信程度一般般的话发给让L2预取
在trigger offset这个特征的基础上,PMP还加入了一个辅助特征PC, 他会对预取level的决策产生一些影响

SPP (Signature Path Prefethcer)

进行了一系列内存访问之后,接下来我可能访问哪些数据。
Pasted image 20230424102912.png
这个一系列内存访问被压缩成一个signature,一个signature会对应几条可能路径(接下来有多大可能性访问A,有多大可能性访问B...)
Pasted image 20230302160709.png

Components

Process

1. Learning Memory Access Patterns

ST存的是什么

ST里面存了256个最近访问的page, 每个page对应一个最后访问的相对于这个page起始地址的offset(存这个是为了计算delta), 以及一个delta signature。这个delta signature是为了访问和更新PT的

PT存的是什么

PT里面存的是signature,每个signature里面放了几个delta,并给出一个counter来统计可能性,每个signature也会存一个counter用来替换

流程

  1. 访问ST。L2 cache access来了之后,physical addr传入ST, page number为3, page offset为3。根据他的page number找到对应的entry。可以读到signature是0x1。
  2. 访问以及更新PT。计算delta = 3 - 1 = 2, 可以推断一系列访问使得signature为1后,会有一个delta为2的访问。由这个signature和delta访问PT,给他们增加置信度,也就是counter的值。如果发生了miss可以做replacement
  3. 更新ST。根据新的delta (+2)来更新signature。
NewSig=(OldSig3)XOR(Delta)

Pasted image 20230302161042.png|500
Pasted image 20230302162819.png|500

2. Path Confidence-based Prefetching

Note

SPP使用了一个global accuracy scaling factor α来调节lookahead的aggressiveness。
Path confidence的计算公式为

Pd=αCdPd1(α<1)

如果prefetch accuracy比较高,那么α会调节值使得Path confidence降低的比较慢。反之同理

Pasted image 20230302164436.png|500

Pasted image 20230302164451.png|500

在两种情况下,SPP会停止prefetch

  1. Low path confidence Pd
  2. Too few L2 read queue resources

3. Page Boundary Learning

增加一个记录global history的结构:Global History Register
当SPP做了一个超出page end的prediction, GHR会被更新;当访问一个新的page, GHR会被查询

Pasted image 20230324163920.png|400

GHR可以存储8个entry,每个entry存储了当前的signature, path confidence, last offset, 以及delta。

如果访问一个new page(ST miss), SPP会先在GHR搜索能跟当前访问match的GHR entry。
比如Figure7 (b)显示的,Last Offset + Delta - 64和当前对page B offset 1的访问对应。因此可以预测,Page B会产生一个对应0x52 signature的pattern
然后用0x52和delta(+3)产生一个Page B的新signature 0x293

4. Prefetch Filter

Prefetch Filter是一个direct-mapped filter, 记录当前prefetched cache lines
SPP在issue prefetch之前会先检查PF。如果PF中存在某个cache line, 那么说明这个line早就被预取了,SPP会丢弃这个redundant prefetch request。

在PF中为每个entry增加useful是为了SPP计算accuracy
SPP会记录两个global counter: Ctotal 记录prefetch request的总数,Cuseful 记录 useful prefetch的数量。
Ctotal 在SPP issue一个没有被filter的prefetch request的时候会+1
Cuseful 在L2 demand requests hit PF的时候会+1。在PF中增加useful bit是为了防止同一个cache line加多次。

Pasted image 20230324173328.png

SPP + PPF

PPF_Design.svg
H11-Make Prefetch Great Again / Improve Data Prefetching: Perceptron-based Filter in gem5 on Vimeo
目的:SPP目前的confidence-based throttling机制很复杂。accuracy和coverage是两个此消彼长的因素,很难调节。PPF可以让SPP激进的发送请求,并且将其的一些无用的request过滤掉,达到兼顾coverage和accuracy的效果

Structure

a. Perceptron

Pasted image 20230404164941.png|350
对于一个有N个feature的PPF来说,他包含

b. Prefetch Table & Reject Table

这两个Table中Prefetch Table记录了prefetch request的信息,Reject Table记录了不应该被prefetch的信息,这两个table被用来train perceptron
结构上,他们都是直接映射的结构,有1024个entry, 用addr的10位地址索引,6位做tag比较,entry中存储了各种feature相关的信息
Pasted image 20230404164953.png|350

Process

i. Interfencing

对于suggested prefetch request, 先通过perceptron中各种feature的weight计算出sum。将sum和两个threshold作比较: τhi and τlo

sum>τhi -> prefetch into L2
τlo<=sum<=τhi -> prefetch into LLC
Pasted image 20230404112020.png

ii. Recording

过程中将认为应该issue到L2的prefetch的加入prefetch table, 将其他的request加入reject table

iii. Training

主要在两个时间点进行PPF training, 一个是demand request来的时候,另一个是cache eviction的时候。
Demand request来的时候,访问prefetch table更新权重,访问reject table更新权重
同样cache eviction的时候,也做权重的更新

DSPatch

性能表现

DSPatch Design

https://people.inf.ethz.ch/omutlu/pub/DSPatch_prefetcher_micro19-talk.pdf

The key goal of DSPatch is to dynamically adapt prefetch-ing for either higher coverage or higher accuracy depending onthe DRAM bandwidth utilization.

DSPatch为每个physical page学习两个pattern, 并将这两个pattern和PC based signature相联。这两个pattern分别为

Structure

Pasted image 20230320113534.png|400

Overall Steps

Tracking Bandwidth Utilization

文章提出了一个简单的方法来跟踪DRAM带宽利用率。
在每个内存控制器中维护一个计数器,记录每个内存周期内发出的请求数量。
当计数器超过一个阈值时,认为DRAM带宽已经饱和,此时应该使用偏向于准确率的bit pattern;
当计数器低于另一个阈值时,认为DRAM带宽有空闲,此时应该使用偏向于覆盖率的bit pattern。

Anchored Spatial Bit-patterns

DSPatch uses a program access representation that is robust against reordering of accesses in the processor and the memory hierarchy

Use spatial bit-patterns anchored to the trigger (i.e.,first) access to a memory region to capture all local and global deltas from the trigger. (所有都记录相对于在该page上第一个access也就是trigger access的偏移)
Pasted image 20230324105249.png|400

The Choice of Signature and Signature-Pattern Mapping

Quantifying Accuracy and Coverage

PopCount of the predicted bit-pattern gives the prefetch count (Cpred)
PopCount of the access bit-pattern generated by the program gives the total number of accesses (Creal)
PopCount of the bitwise AND operation between the program bit-pattern and the predicted bit-pattern gives the accurate prefetch count (Cacc).
Prediction accuracyCacc/Cpred
Prediction coverage: Cacc/Creal
Pasted image 20230320141114.png|400

Pasted image 20230320153245.png

Modulated Dual Bit-patterns: Coverage-biased and Accuracy-biased

Coverage-biased Bit-pattern (CovP):

Accuracy-biased Bit-pattern (AccP)

Pasted image 20230320143442.png|500

Pasted image 20230320144503.png

IPCP Prefetcher

https://dpc3.compas.cs.stonybrook.edu/slides/bouquet.pdf

i. 四类prefetcher

1. Constant Stride (CS): only control flow

a. 目标

预取如下呈现的constant stride pattern
Pasted image 20230410162234.png

b. components

下图是constant stride (CS)下IP table的内容
Pasted image 20230410164218.png

c. process

2. Complex Stride (CPLX): control flow coupled with data flow

a. 目标

在stride不断变化的情况下取得比较好的预取效果
Pasted image 20230410163823.png

b. components

Pasted image 20230410164206.png

c. Process

d. CPLX与SPP的区别

3. Global stream (GS): control flow predicted data flow

a. 目标

b. components

Pasted image 20230410203651.png

c. Process

4. Next line

如果CS, CPLX, GS不是的话,则启用NL prefetcher。当MPKI太高的时候,不要开启NL Prefetcher

ii. IPCP整体架构

1. IPCP at L1

Pasted image 20230410210908.png

a. Components

关于IP table的替换问题:
When an IP is encountered for the first time, it is recorded in the IP table and the valid bit is set.
When another IP maps to the same entry, the valid bit is reset, but the previous entry remains active.
If the valid bit is reset when a new IP is seen then the table entry is allocated to the new IP and the valid bit is set again, ensuring that at least one of the two competing IPs is tracked in the IP table.

b. Process

  1. IP table hit, 则IPCP同时检查CS/CPLX/GS。同一时间,IP可能不属于任意一个class, 或者属于多个class。同时,检查RST并且训练
  2. IPCP看IP属于CS还是GS。如果都属于,那么IPCP会优先选择GS
  3. IPCP不属于CS和GS,看是否属于CPLX。
  4. 如果CPLX的confidence不高,则根据MPKI选择NL Prefetcher

整体上,优先级为

GS>CS>CPLX>NL

c. 一些设计问题

2. IPCP at L2

Pasted image 20230411095539.png
IPCP at L2没有CPLX, 因为测出来没啥用

a. components

b. Process

Pasted image 20230411100255.png

c. 一些设计问题