[发明专利]一种GPU L1 Cache处访存序列的仿真生成与排序方法有效
申请号: | 201610889218.6 | 申请日: | 2016-10-11 |
公开(公告)号: | CN106407063B | 公开(公告)日: | 2018-12-14 |
发明(设计)人: | 齐志;张亚;时龙兴 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F11/26 | 分类号: | G06F11/26 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 柏尚春 |
地址: | 210088 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开的一种GPU L1 Cache处访存序列的仿真生成与排序方法,包含访存序列生成、线程调度、访存合并和访存排序共四个步骤,使用GPU功能模拟器生成GPU应用程序各线程初始的访存序列,在充分解析GPU访存系统微结构特征后,对该访存序列采取线程调度、访存合并和访存排序三大步骤,最终得到GPU应用程序在GPU L1 Cache处的仿真访存序列。该访存序列便于进行GPU L1 Cache缺失行为特征分析。 | ||
搜索关键词: | 一种 gpul1cache 处访存 序列 仿真 生成 排序 方法 | ||
【主权项】:
1.GPU L1 Cache处访存序列的仿真生成与排序方法,其特征在于,所述的访存序列是指一个线程从开始执行到结束执行对全局存储按顺序发生的所有访存请求的记录,每一次访存请求的记录包含以下信息:线程id:发出该访存请求的线程id;PC值:发出该访存请求的访存指令的程序计数器值;访存地址:访存请求的数据所在地址;数据宽度:访存请求的数据宽度,以字节为单位;数据依赖标志:取值为0或1,表示下一条访存请求之前,当前访存请求的数据是否会被其它指令使用到;其中,数据依赖标志与PC值匹配,同一个PC值下所有访存请求具有相同的数据依赖标志;包括以下步骤:1a)访存序列生成:使用GPU功能模拟器提供的接口,编写序列生成器,在GPU功能模拟器上运行GPU程序时,序列生成器自动抓取各线程发出的访存请求信息,并存储为各线程初始的访存序列;1b)线程调度:将一定数量的相邻的线程划分到同一个线程束中,根据应用程序线程块的维度设置,将一定数量相邻的线程束划分到同一个线程块中,再根据每个流多处理器上能够同时运行的最大线程块数量限制,依次将各个线程块分配到流多处理器;将位于同一流多处理器中的各线程初始的访存序列划分到一个任务组中;1c)访存合并:在同一个线程束中,执行同一条访存指令的多个线程发出的所有访存请求中,根据访存请求的数据宽度和各访存请求的访存地址分布进行访存合并,生成一个新的访存请求,并相应获得该线程束内合并后的有序的访存序列;1d)访存排序,在每个任务组内,按照来自不同线程的访存请求到达L1Cache的先后顺序,将任务组内各线程有序的访存序列合并成一个该任务组总的有序访存序列;其中,步骤1c)所述的访存合并包括下面4个子步骤:4a)创建一个用于存储合并后的有序访存请求集合,并初始化该集合为空;创建一个待合并访存请求集合,将同一个线程束内执行同一条访存指令的多个线程发出的所有访存请求存入其中,完成初始化;4b)从待合并访存请求集合中取出一个访存请求,并由该访存请求的访存地址计算访存请求的缓存行地址;4c)判断步骤4a)创建的合并后有序访存请求集合中是否存在与当前访存请求的缓存行地址相同的访存请求;若不存在,则把当前访存请求加入合并后有序访存请求集合中,并将其从待合并访存请求集合中剔除;若存在,则将合并后有序访存请求集合中同缓存行地址的原有访存请求以及当前访存请求合并,生成新的访存请求,获得对应的访存序列信息如下:取与合并前一致的PC值和数据依赖标志,取被合并两个访存请求中较小的线程id和对应的访存地址,取能够覆盖被合并两个访存请求所有访问数据的最小数据宽度,后将该被合并的当前访存请求从待合并访存请求集合中剔除;4d)如待合并访存请求集合中所有访存请求全部处理完毕,则合并后有序访存请求集合中的访存序列即为合并后的访存请求所组成的有序访存序列,如待合并访存请求集合中的访存请求未全部处理完毕,回到步骤4b)执行。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610889218.6/,转载请声明来源钻瓜专利网。