【技术实现步骤摘要】
一种面向蒙特卡罗粒子输运的处理器缓存配置方法
[0001]本专利技术涉及一种面向蒙特卡罗粒子输运的处理器私有缓存和共享缓存配置方法,属于计算机体系结构领域。
技术介绍
[0002]蒙特卡罗粒子输运程序被广泛应用于核模拟、生物医学等领域,其通过大量中子、电子、质子等粒子的统计行为求得问题的解,由于粒子的独立性,蒙特卡罗粒子输运程序具有天然的并行性,可以很好地在多核处理器上实现线程级并行,然而由于其非规则访存、分支多等特征,很难实现数据级并行,从而难以发挥通用处理器和高性能协处理器内部向量单元的性能,使得在这些处理器上蒙特卡罗粒子输运程序的执行效率特别低。改进当前X86、ARM等处理器是提高蒙特卡罗粒子输运程序执行效率的重要途径,业界主要通过gem5、McPAT等模拟器探索处理器的前端、流水线、缓存等参数,通过改变处理器配置,观测程序的性能,进而选择最优的参数配置以提高执行效率。缓存配置是面向蒙特卡罗粒子输运程序的处理器设计的重要部分,缓存通常包含多个层次,主流的多核处理器大都采用3级缓存,越靠近处理器核,延迟越低容量也越小。处理器在访问内存获取需要的数据时,首先从一级缓存(L1 Cache)中寻找,如果发生缺失则从二级缓存(L2 Cache)中寻找,如果L2发生缺失则从三级缓存(L3 Cache)中寻找,若仍缺失则访问内存。通常L1 Cache和L2 Cache为各个处理器核私有,L3 Cache为所有处理器共享,由于主流多核处理器通常采用总线监听(Snoopy)一致性协议,写回操作可能会作废L1 Cache和L2 C ...
【技术保护点】
【技术特征摘要】
1.一种面向蒙特卡罗粒子输运的处理器缓存配置方法,其特征在于包括以下步骤:第一步,确定针对蒙特卡罗粒子输运的处理器即目标处理器的关键设计指标,包括确定目标处理器的核数N
core
,N
core
为正整数;确定目标处理器的私有缓存的组相联缓存结构中每组中的缓存行数W;确定私有缓存的缺失率设计目标、私有缓存容量设计上限;确定目标处理器的共享缓存的组相联结构中每组缓存行数Q;确定共享缓存的缓存缺失率设计目标和共享缓存容量上限;确定目标处理器的私有缓存和共享缓存的缓存行大小H;第二步,选择支持运行Intel pin工具的X86多核处理器作为参考处理器;参考处理器用于执行蒙特卡罗粒子输运程序,并获得执行过程中的访存历史;第三步,将蒙特卡罗粒子输运程序按照粒子输运的核心过程分为6个核心子程序,方法是:将蒙特卡罗粒子输运程序按照输运的6个核心过程分为6个核心子程序,将每个粒子经过的粒子初始化、宏观截面计算、移动粒子、穿越表面、碰撞、死亡6个核心过程作为6个核心子程序;第四步,使用Pin工具采集参考处理器上多核执行时所有线程的核心子程序的访存历史,将所有线程的访存记录存储到访存历史表,访存历史表的共有II个访存记录,每个访存记录包括四个域,分别为访存类型m、访存地址x、所属核心子程序的名字e以及所属线程号t;访存类型包含读数据Read、写数据Write2种;第五步,从小到大遍历目标处理器中N
core
个处理器核的私有缓存容量,预测N
core
个处理器核的私有缓存缺失率,确定N
core
个处理器核的最优私有缓存容量,方法是:5.1将N
core
个处理器核的私有缓存容量M初始化为16KB,令缓存行大小等于目标处理器的私有缓存的缓存行大小H,初始化N
core
个处理器核私有缓存为W路组相联结构,即S组W行,S为私有缓存的组数,W为每组中缓存行数,满足S
×
W=M/H;5.2初始化N
core
个处理器核的共享访存记录表为空,令共享访存记录表的表项序号q=1;令CMR
p
[N
core
]为记录处理器核私有缓存缺失率的数组,包含N
core
个元素,第n
core
个元素记录第n
core
个处理器核私有缓存缺失率,1≤n
core
≤N
core
,初始化CMR
p
[N
core
]各元素为0;令CM
p
[N
core
][6]为记录处理器核私有缓存缺失次数的二维数组,包含N
core
×
6个元素,CM
p
[n
core
][e]记录第n
core
个处理器核第e种核心子程序的私有缓存缺失次数,0≤e≤5,e表示第i个访存记录所属的子程序序号,初始化CM
p
[N
core
][6]各元素为0;初始化记录处理器核访存数量的数组MA[N
core
]中各元素为0,MA[n
core
]记录第n
core
个处理器核的访存指令数量;5.3初始化处理器核序号n
core
=1;5.4初始化访存记录序号i=1,其中,i表示访存历史表中第i个访存记录;5.5初始化私有访存哈希表H
inv
(访存地址)的值为(1,Null,Null),其中Null表示值为“空”,H
inv
(访存地址)表示根据访存地址找到访存私有缓存三元组,访存私有缓存三元组为(有效标志,上次访问H
inv
(访存地址)中访存地址的线程号,当前处理器核上次访问H
inv
(访存地址)中访存地址的访存记录编号),有效标志使用0或1表示,1表示该地址的内容在私有缓存中失效,0表示该地址的内容在私有缓存中有效;5.6若第i个访存记录所属线程分配在第n
core
个处理器核上,即n
core
=t
i mod N
core
,t
i
为第i个访存记录中的线程号,转步骤5.8;若访存历史表中第i个访存记录的线程不在第n
core
个处理器核上,即n
core
≠t
i mod N
core
,且访存类型为写数据Write,转步骤5.7;
5.7令H
inv
(x
i
)=(1,t
i
,Null),1表示第i个访存记录中的访存地址x
i
的数据在序号为n
core
的处理器核失效,x
i
为第i个访存记录中的访存地址;转步骤5.13;5.8令序号为n
core
的处理器核的访存指令数量增加1,即令MA[n
core
]=MA[n
core
]+1;若访存历史表中第i个访存记录对应的H
inv
(x
i
)的有效标志为0,转步骤5.10;若访存历史表中第i个访存记录对应的H
inv
(x
i
)的有效标志为1,说明序号为n
core
的处理器核私有缓存中x
i
失效,即该缓存内容首次访问或已经被其他线程更改,转步骤5.9;5.9此时第i个访存记录对内存地址x
i
的私有缓存发生访存缺失,记录和处理私有缓存访存缺失,方法是:5.9.1令CM
p
[n
core
][e]=CM
p
[n
core
][e]+1;e为第i个访存记录所属的子程序序号;5.9.2令访存历史表中第i个访存记录的私有堆栈重用距离PSD(i)为0,并令H
inv
(x
i
)=(0,t
i
,i),即更新上次访问x
i
的线程号和上次访问x
i
的访存记录编号;5.9.3将第i个访存记录的访存地址x
i
、所属核心子程序的名字存储到共享访存记录表的第q个表项中,令q=q+1;转步骤5.13;5.10计算第i个访存记录关于访存地址x
i
的私有时间重用距离PRD(i),PRD(i)=序号为n
core
的处理器核上次访问x
i
的访存记录序号,该访存记录序号为H
inv
(x
i
)得到的三元组的第三个域的值;令H
inv
(x
i
)=(0,t
i
,i),即更新H
inv
(x
i
)中记录的上次访问x
i
的线程号和上次访问x
i
的访存记录编号;5.11令s=x
i
%S,即将第i个访存记录的访存地址x
i
映射到第n
core
个处理器核私有缓存的第s组;根据第i个访存记录的私有时间重用距离PRD(i)计算私有堆栈距离PSD(i),即针对序号为n
core
的处理器核的私有缓存第s组的访存记录中,上次访问同一地址的访存记录的私有时间重用距离PRD(i)与第i个访存记录之间不同访存地址的数量,具体公式为:其中,PSD(i)为第i个访存记录的私有堆栈距离,PRD(j)为第j个访存记录的私有时间重用距离,F(x)为指示函数,当表达式x为真时取值为1,否则为0;PRD(j)<PRD(i)表示PRD(j)不在PRD(i)与第i个访存记录之间,PRD(i)是第i个访存记录的私有时间重用距离;x
j
%S=s表示第j个访存记录的地址x
j
映射到私有缓存的第s组;t
j mod N
core
=n
core
表示第j个访存记录所属线程被分配在序号为n
core
的处理器核上;5.12若PSD(t)≤W,表示缓存命中,转步骤5.13;若PSD(i)>W,则发生私有缓存访存缺失,则记录和处理私有缓存访存缺失:5.12.1令CM
p
[n
core
][e]=C
p
[n
core
][e]+1;5.12.2令访存历史表中PSD(i)为0,并更新H
inv
(x
i
)中记录的上次访问x
i
的线程号和上次访问x
i
的访存记录编号,即令H
inv
(x
i
)=(0,t
i
,i);5.12.3将发生缺失的第i个访存记录的访存地址x
i
、所属核心子程序的名字存储到共享访存记录表的第q个表项中,令q=q+1;5.13若i<II,令i=i...
【专利技术属性】
技术研发人员:杨博,马东辉,刘杰,王庆林,张庆阳,陈琳,龚春叶,陈旭光,肖调杰,潘冬梅,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。