有效
一种面向蒙特卡罗粒子输运的处理器缓存配置方法
杨博、马东辉、刘杰、王庆林、张庆阳、陈琳、龚春叶、陈旭光、肖调杰、潘冬梅
中国人民解放军国防科技大学
杨
杨博 专利 54
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
马
马东辉 专利 1
中国人民解放军国防科技大学内存访问电子数据处理计算技术
刘
刘杰 专利 102
中国人民解放军国防科技大学申请详情分析优化类型计算机辅助设计
王
王庆林 专利 87
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
张
张庆阳 专利 31
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
陈
陈琳 专利 9
中国人民解放军国防科技大学特定数据处理电子数据处理物理仪器
龚
龚春叶 专利 71
中国人民解放军国防科技大学计算机辅助设计电子数据处理计算技术
陈
陈旭光 专利 34
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
肖
肖调杰 专利 34
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
潘
潘冬梅 专利 11
西南科技大学物理仪器核物理工程裂变反应堆
摘要
本发明公开了一种面向蒙特卡罗粒子输运的处理器缓存配置方法,目的是解决现有技术无法快速配置缓存容量的问题。技术方案是:确定面向蒙特卡罗粒子输运的多核处理器即目标处理器设计指标;选择参考处理器;将蒙特卡罗粒子输运程序分为6个核心子程序;采集参考处理器多核执行时核心子程序访存历史;遍历目标处理器的处理器核私有缓存容量,预测处理器核私有缓存缺失率,确定处理器核最优私有缓存容量M;遍历共享缓存容量,预测目标处理器共享缓存缺失率,确定最优共享缓存容量M;根据M和M配置目标处理器私有和共享缓存。本发明可快速获得目标缓存缺失率时处理器私有和共享缓存的最优容量,并根据最优容量快速配置目标处理器缓存容量。
1.一种面向蒙特卡罗粒子输运的处理器缓存配置方法,其特征在于包括以下步骤:第一步,确定针对蒙特卡罗粒子输运的处理器的关键设计指标,包括确定目标处理器的核数N core ,N core 为正整数,蒙特卡罗粒子输运的处理器为目标处理器;确定目标处理器的私有缓存的组相联缓存结构中每组中的缓存行数W;确定私有缓存的缺失率设计目标、私有缓存容量设计上限;确定目标处理器的共享缓存的组相联结构中每组缓存行数Q;确定共享缓存的缓存缺失率设计目标和共享缓存容量上限;确定目标处理器的私有缓存和共享缓存的缓存行大小H;第二步,选择支持运行Intel pin工具的X86多核处理器作为参考处理器;参考处理器用于执行蒙特卡罗粒子输运程序,并获得执行过程中的访存历史;第三步,将蒙特卡罗粒子输运程序按照粒子输运的核心过程分为6个核心子程序:将蒙特卡罗粒子输运程序按照输运的6个核心过程分为6个核心子程序,将每个粒子经过的粒子初始化、宏观截面计算、移动粒子、穿越表面、碰撞、死亡6个核心过程作为6个核心子程序;第四步,使用Pin工具采集参考处理器上多核执行时所有线程的核心子程序的访存历史,将所有线程的访存记录存储到访存历史表,访存历史表共有II个访存记录,每个访存记录包括四个域,分别为访存类型m、访存地址x、所属核心子程序的序号e以及所属线程号t;访存类型包含读数据Read、写数据Write2种;II为正整数;第五步,从小到大遍历目标处理器中N core 个处理器核的私有缓存容量,预测N core 个处理器核的私有缓存缺失率,确定N core 个处理器核的最优私有缓存容量:5.1将N core 个处理器核的私有缓存容量M初始化为16KB,令缓存行大小等于目标处理器的私有缓存的缓存行大小H,初始化N core 个处理器核私有缓存为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;5.5初始化私有访存哈希表H inv (访存地址)的值为(1,Null,Null),其中Null表示值为“空”,H inv (访存地址)表示根据访存地址找到访存私有缓存三元组,访存私有缓存三元组为(有效标志,上次访问H inv (访存地址)中访存地址的线程号,当前处理器核上次访问H inv (访存地址)中访存地址的访存记录序号),有效标志使用0或1表示,1表示该地址的内容在私有缓存中失效,0表示该地址的内容在私有缓存中有效;5.6若n core =t i mod N core ,t i 为第i个访存记录中的线程号,转步骤5.8;若n core ≠t i modN 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令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记录和处理私有缓存访存缺失,方法是:5.9.1令CM p [n core ][e]=CM p [n core ][e]+1;为5.9.2令访存历史表中第i个访存记录的私有堆栈重用距离PSD(i)为0,并令H inv (x i )=(0,t i ,i),;5.9.3将第i个访存记录的访存地址x i 、所属核心子程序的序号e存储到共享访存记录表的第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);5.11令s=x i %S,;根据第i个访存记录的私有时间重用距离PRD(i)计算私有堆栈距离PSD(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 i 的私有时间重用距离;x j %S=s表示第j个访存记录的地址x j 映射到私有缓存的第s组;t j mod N core =n core 表示第j个访存记录所属线程被分配在序号为n core 的处理器核上;5.12若PSD(i)≤W,表示缓存命中,转步骤5.13;若PSD(i)>W,则发生私有缓存访存缺失,则记录和处理私有缓存访存缺失:5.12.1令CM p [n core ][e]=CM p [n core ][e]+1;5.12.2令访存历史表中第i个访存记录的PSD(i)为0,并令H inv (x i )=(0,t i ,i);5.12.3将发生缺失的第i个访存记录的访存地址x i 、所属核心子程序的序号e存储到共享访存记录表的第q个表项中,令q=q+1;5.13若i<II,令i=i+1,转步骤5.6;若i=II,转步骤5.14;5.14计算序号为n core 的处理器核上蒙特卡罗粒子输运核心程序的私有缓存缺失率CMR p [n core ],即:5.15若n core <N core ,令n core =n core +1,返回步骤5.4;若n corw =N core ,则执行步骤5.16;5.16计算N corw 个处理器核上蒙特卡罗粒子输运核心程序的平均私有缓存缺失率ACMR p ,即:5.17判断ACMR p 是否降低到了私有缓存的缓存缺失率设计目标,若达到设计目标值或私有缓存容量已经达到私有缓存容量设计上限,则选择M作为最优的私有缓存容量,令共享访存记录的访存记录总数II s =q,转第六步;若未达到私有缓存的缓存缺失率设计目标且缓存容量未达到私有缓存容量设计上限,则令私有缓存容量M=M+16KB,转步骤5.2;第六步,从小到大遍历目标处理器的共享缓存容量,预测目标处理器的共享缓存缺失率,确定目标处理器的最优共享缓存容量;方法是:6.1将目标处理器的共享缓存容量M s 初始化为N core ×2MB,令缓存行大小等于H,因此共包含M s /H个缓存行;初始化处理器核共享缓存采用P组Q行组相联结构,其中P为共享缓存的组数,Q为每组中缓存行数,满足P×Q×H=M s ;6.2令CMR s 记录目标处理器共享缓存缺失率,初始化CMR s 为0;令CM s [6]为记录目标处理器共享缓存缺失次数的数组,包含6个元素,CM s [e]记录第e种核心子程序的共享缓存缺失次数,初始化CM s [6]各元素为0;6.3初始化共享访存记录序号ii=1,其中,ii表示共享访存历史表中第ii个共享访存记录;共享访存记录表共II s 项共享访存记录;6.4初始化共享访存哈希表SH inv (访存地址)的值为(1,Null),SH inv (访存地址)表示根据SH inv (访存地址)中访存地址找到访存共享缓存二元组,访存共享缓存二元组为(有效标志,处理器上次访问SH inv (访存地址)中访存地址的共享访存记录序号),有效标志使用0或1表示,1表示该地址的内容在私有缓存中失效,0表示该地址的内容在私有缓存中有效;6.5若共享访存历史表中第ii个共享访存记录对应的SH inv (x ii )的有效标志为0,转步骤6.7;若共享访存历史表中第ii个共享访存记录对应的SH inv (x ii )的有效标志为1,说明共享缓存中x ii 失效,转步骤6.6;6.6记录和处理共享缓存访存缺失:6.6.1令CM s [e]=CM s [e]+1;;6.6.2令共享访存历史表中第ii个共享访存记录的共享堆栈重用距离SSD(ii)为0,并令SH inv (x ii )=(0,ii),即更新;转步骤6.10;6.7计算第ii个共享访存记录关于访存地址x ii 的共享时间重用距离SRD(ii),SRD(ii)=处理器上次访问x ii 的共享访存记录序号,该共享访存记录序号为SH inv (x ii )得到的二元组的第二个域的值;令SH inv (x ii )=(0,ii);6.8令p=x ii %P,;根据SRD(ii)计算第ii个访存记录的共享堆栈距离SSD(ii),具体公式为:其中,SRD(jj)为第jj个共享访存记录的共享时间重用距离;SRD(jj)<SRD(ii)表示SRD(jj)不在SRD(ii)与第ii个共享访存记录之间;x jj %P=p表示第jj个共享访存记录的地址x jj 映射到私有缓存的第p组;6.9若SSD(ii)≤Q,表示缓存命中,转步骤6.10;若SSD(ii)>Q,则发生共享缓存访存缺失,记录和处理共享缓存访存缺失:6.9.1令CM s [e]=CM s [e]+1;6.9.2令共享访存历史表中SSD(ii)为0,并令SH inv (x ii )=(0,ii);6.10若ii<II s ,令ii=ii+1,转步骤6.5;若ii=II s ,转步骤6.11;6.11计算目标处理器上蒙特卡罗粒子输运核心程序的共享缓存缺失率CMR s ,即:6.12判断共享缓存容量M s 的共享缓存缺失率CMR s 是否降低到了共享缓存的缓存缺失率设计目标,若达到设计目标值或共享缓存容量已经达到共享缓存容量设计上限,则选择M s 作为最优的缓存容量,转第七步;若未达到共享缓存的缓存缺失率设计目标且缓存容量未达到共享缓存容量设计上限,则令共享缓存容量M s =M s +(N core ×2MB),转步骤6.2;第七步,根据M和M s 配置目标处理器的私有缓存和共享缓存;7.1将目标处理器的每个处理器核的私有缓存配置为:每个缓存行大小为H字节,采用S组W行组相联结构,其中S为私有缓存的组数,W为每组中缓存行数,满足S×W×H=M;7.2将目标处理器共享缓存配置为:每个缓存行大小为H字节,采用P组Q行组相联结构,其中P为共享缓存的组数,Q为每组中缓存行数,满足P×Q×H=M s 。
2.如权利要求1所述的一种面向蒙特卡罗粒子输运的处理器缓存配置方法,其特征在于第一步所述目标处理器的私有缓存组相联缓存结构中每组中缓存行数W设置为4或8或16,私有缓存的缺失率设计目标设置为60%-80%,私有缓存容量设计上限设置为16KB-256KB;目标处理器的共享缓存的组相联结构中每组缓存行数Q设置为8或16或32;共享缓存的缓存缺失率设计目标设置为20%-40%,共享缓存容量上限设置为N core ×2MB至N core ×8MB;目标处理器的私有缓存和共享缓存的缓存行大小H设置为64字节。
3.如权利要求1所述的一种面向蒙特卡罗粒子输运的处理器缓存配置方法,其特征在于第四步所述pin工具要求3.13及以上版本。
4.如权利要求1所述的一种面向蒙特卡罗粒子输运的处理器缓存配置方法,其特征在于第四步所述使用Pin工具采集参考处理器上多核执行时所有线程的核心子程序的访存历史,将所有线程的访存记录存储到访存历史表的方法是:4.1初始化访存记录序号tt=1;令蒙特卡罗粒子输运程序正在执行的指令为当前指令;令访存历史表为空;令IntelX86处理器多核执行时的线程数为T,T为大于等于N core 的正整数;4.2若蒙特卡罗粒子输运程序运行结束,转4.4;若蒙特卡罗粒子输运程序运行未结束,利用pin工具跟踪蒙特卡罗粒子输运程序的当前指令,如果当前指令是Read或Write指令,转到4.3;否则,跳过该指令,令蒙特卡罗粒子输运程序执行的下一条指令为当前指令,转4.2;4.3将Read或Write类型访存指令存储在访存历史表的第tt个访存记录中,每个访存记录包括四个域,分别为访存类型m、访存地址x、所属核心子程序的序号e以及所属线程号t;访存类型包含读数据Read、写数据Write 2种;令访存历史表的序号tt=tt+1;令蒙特卡罗粒子输运程序执行的下一条指令为当前指令,转4.2;4.4完成对蒙特卡罗粒子输运程序全部指令的跟踪,令访存历史表的访存记录条数II=tt。



