Piecewise Linear Branch Prediction(2005)

一种理想化的分支预测器,它开发一组线性函数,每一条程序路径都对应一个被预测的分支,将“taken”的分支与“not taken”的分支分开。所有这些线性函数合在一起构成了一个分段线性决策曲面。

分段线性曲面允许预测器学习某些线性不可分的分支行为,而这是以前的神经预测器无法学习的。

分支的线性可分性:

文献[1]中定义了线性可分分支的概念为:h_{n}为全局历史中的最近 n 位,对于一个静态分支B,存在一个布尔函数f_{B}(h_{n})能够预测分支B的行为,所有的预测器都是在学习这个函数。如果该函数时线性可分的,就说分支B时线性可分分支;否则,B是线性不可分分支。

由于有许多通向B的路径,每条路径对应一个用于预测分支B的线性函数,因此有许多不同的线性函数用于预测B。作为一个整体,用于预测B的线性函数形成了一个分段线性曲面。

1 理想化算法描述

变量描述:

W:一个三维整数数组,由分支地址、路径历史中分支的地址和在历史中的位置索引。可以将W看作一组矩阵,每个分支对应一个矩阵,其列对应于路径历史中的分支,其行对应于历史中的位置。W[B,0,0]是跟踪分支B的taken趋势的权重。该权重是B的偏置权重。每个权重8-bit。

h:全局历史长度。

GHR:全局历史寄存器。

GA:分支地址阵列,每个分支执行时将其地址存入该阵列。与GHR一同给出当前要预测分支的路径历史。

output:一个整数,表示当前分支的预测结果。

2  一个实际的分段线性分支预测器

在实际的实现中主要有两个限制:有限的面积和延迟。

  • 限制数组 W 的面积开销:即限制三个维度索引的长度。将前两个索引取模两个整数n和m来限制它们,我们通过为历史长度选择合适的值h来限制第三个索引。
  • 限制预测的延迟:通过提前流水线实现。

分支预测器中提前流水线

 分支预测推测性地为当前分支未来 h 个分支计算部分计算。地址为B的分支的偏移权重现在保持在W[B mod n,B mod m,0]中,此时W数组由n模的分支地址索引。由于该索引事先未知,该算法保留n个推测预测器状态,以驱动n个可能的预测。一旦知道分支地址,它将用于选择n个预测中的一个。

另外还需要数组SR[ i , j ],用于保持用于预测未来第 j 个分支的推测部分和,其地址模n为i(类似于Fast Path-based neural predictor中的做法)。

此时的预测算法如图6所示:

 

参考文献:

【1】Neural methods for dynamic branch prediction

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值