CN101814039B - 一种基于GPU的Cache模拟器及其空间并行加速模拟方法 - Google Patents

一种基于GPU的Cache模拟器及其空间并行加速模拟方法 Download PDF

Info

Publication number
CN101814039B
CN101814039B CN2010101050940A CN201010105094A CN101814039B CN 101814039 B CN101814039 B CN 101814039B CN 2010101050940 A CN2010101050940 A CN 2010101050940A CN 201010105094 A CN201010105094 A CN 201010105094A CN 101814039 B CN101814039 B CN 101814039B
Authority
CN
China
Prior art keywords
cache
memory access
piece
gpu
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2010101050940A
Other languages
English (en)
Other versions
CN101814039A (zh
Inventor
万寒
高小鹏
王志强
李毅
龙翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN2010101050940A priority Critical patent/CN101814039B/zh
Publication of CN101814039A publication Critical patent/CN101814039A/zh
Application granted granted Critical
Publication of CN101814039B publication Critical patent/CN101814039B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提出了一种基于GPU的Cache模拟器及其空间并行加速方法,该Cache模拟器包括Cache初始化模块、Trace预处理模块、Trace基数排序模块、Cache模拟模块及Cache模拟结果统计显示模块,本发明依托GPU强大的并行处理资源,对访存序列进行预处理,利用Cache配置文件的关联性,通过运行在GPU上的基数排序算法对访存序列进行并行排序,得到映射到每一个组上的连续的访存序列,从而进行组间并行的Cache模拟,并通过不同层次不同粒度的并行模拟算法,有效的缩短了Cache模拟时间,提高了Cache的模拟效率,精确模拟Cache的行为,并且开发环境简单,易于实现。

Description

一种基于GPU的Cache模拟器及其空间并行加速模拟方法
技术领域
本发明涉及一种Cache模拟器及其加速方法,尤其涉及一种基于GPU的Trace-drivenCache模拟器及其空间并行加速方法,属于计算机体系结构与并行计算领域。
背景技术
Cache(高速缓冲存储器)技术无疑是20世纪计算机领域最伟大的发明之一,它的出现,有效的缩小了处理器和存储器之间的速度差距,极大的提升了计算机系统的性能。因此在现代处理器设计中,Cache设计已经成为计算机系统体系结构设计中的重要部分。Cache模拟器为Cache设计提供了可靠的实验数据,为Cache性能的提升提供更具有指导意义的改进方案,并有效缩短了Cache的设计周期。
模拟器根据是否有辅助的硬件部分分为硬件模拟器和软件模拟器。硬件模拟器由于其开发周期长,不易调试,代价昂贵等种种弊端,已经渐渐为广大业内人士所摒弃。而软件模拟器因其开发周期短,代价小,风险低,易于调试等诸多优点逐渐受到人们的青睐。
软件的Cache模拟器按驱动方式不同可以分为两种:执行驱动的Cache模拟器(Execution-driven Cache Simulator)和踪迹驱动的Cache模拟器(Trace-drivenCache Simulator)。前者需要模拟整个程序的执行过程,包括取址、译码、执行、写回等动作,动态的产生内存访问序列,虽然可以获得较全面的统计结果,但其模拟时间长,开发成本高。而后者则是以Trace文件(内存访问记录文件)作为输入,模拟处理器的访存动作,输出性能分析结果,其模拟效率高,可移植性好。但随着被模拟系统日益复杂,需要模拟的设计空间不断加大,Trace文件长度不断加长,导致Trace-driven Cache模拟器运行时间越来越长,滞后了研究和产品开发的周期,所以加速Trace-driven模拟器的模拟速度对研究Cache体系结构具有重要意义。
基于Trace驱动的模拟加速方法主要有三种:Trace Reduction(Trace消减)、OneSingle Pass(单趟),以及并行模拟。
Trace Reduction方法是通过减少Trace长度来缩短Cache模拟时间。Trace消减技术可以分为无损消减和有损消减。无损消减是指整个Trace数据在消减后可以被还原为消减前的Trace,而不损失Trace数据,无损消减可以通过传统的数据压缩技术结合Cache访存空间局部性来实现Trace消减,也可以先对一系列特定的Cache配置进行模拟,在每次模拟完一种Cache配置后抽掉多余的Trace,以实现Cache消减,以上两种方法虽然能实现trace的无损消减,但引入了额外的开销,影响了模拟的效率,而且灵活度不高;有损消减则不能保证消减后的Trace保留原Trace数据的所有信息,有多种方法可以实现Trace的有损消减,如Trace删除方法,基于时间采样和组采样的Trace消减方法,但有损消减终因不能保证模拟结果的精确性而被业界抛弃。
One Single Pass方法则是利用不同Cache配置参数运行结果的相关性,一趟计算出所有Cache配置的模拟结果统计信息。如森林算法和基于二叉树的算法。虽然该方法可以达到很好的效率,但其存在一定的局限性,因为要跟踪所有被模拟的Cache块的状态,每一个记录必须非常简单,否则基本无异于串行模拟所有的Cache配置。
并行模拟又分为空间并行模拟和时间并行模拟。基于时间的并行模拟是把Trace划分为若干个子序列,对于这些子序列进行并行模拟以加快模拟速度,由于Trace-driven Cache模拟器对于Trace访存序列存在偏序关系,即ti+1,其中t为时间段,ti+1表示第i+1段的trace,Trace段模拟的开始状态应该为ti Trace段模拟结束的状态,故需要在所有子Trace段模拟结束后,增加一个修正操作。基于空间的并行模拟是对Cache模拟算法进行空间划分,比如采用机群进行Cache分组模拟,前人曾做过基于GPU的Cache分组模拟的并行加速,但仅限于开发单层的Cache模拟,对于当前处理器两层甚至三层的Cache体系结构已经无法满足要求。
上述方法各自存在条件限制,如加速效果不够理想,或成本较高,有的则不灵活。没有一种模拟方法能够同时满足正确性、实用性、成本、加速效果、灵活性等方面的要求。随着GPU(图形处理器)硬件的快速发展,GPU内部聚合了越来越多的并行计算资源,同时基于GPU的编程环境的不断改善更有利于将通用计算中的并行计算部分映射到GPU平台,使得GPU加速Cache模拟成为可能。充分合理的挖掘Cache模拟的并行性,并将其映射到GPU并行编程模型中去,可以得到很好的加速效果,且规避前人方法的不足。
发明内容
本发明提出了一种基于GPU的Cache模拟器及其空间并行加速方法,该模拟器依托GPU强大的并行计算能力,对传统的Trace-driven Cache模拟器进行不同层次不同粒度的并行化改写,实现快速高效的Cache模拟。
本发明提出的一种基于GPU的Cache模拟器,包括五个模块:Cache初始化模块、Trace预处理模块、Trace基数排序模块、Cache模拟模块、Cache模拟结果统计显示模块;Cache初始化模块用于对Cache配置进行初始化,将Cache配置参数传递给Trace预处理模块和Cache模拟模块;Trace预处理模块用于从用户设定的Trace文件读取访存序列,根据Cache配置参数中的Cache的块大小和Cache组数计算访存序列中各访存记录将映射到的Cache组号,并记录映射到每个Cache组的访存记录的数量,计算每个Cache组中的第一个访存记录在整体访存序列中的下标;Trace基数排序模块用于在GPU的显存中为访存序列动态分配空间,将经过Trace预处理模块处理后的访存序列下载到分配好的GPU的显存空间,并对访存序列以组号为关键字并行地进行基数排序;Cache模拟模块,启动多个线程,并行地运行在GPU上,对于每一个访存记录,与组内的Cache块进行匹配,确定是否命中,并根据替换策略调整组内的Cache块的组织结构;Cache模拟结果统计显示模块用于对Cache模拟模块产生的各Cache组的局部统计信息进行综合,得到整个Cache模拟的统计结果和性能参数,将其保存到结果文件或输出到终端。
Cache块包括tag信息与state信息,Cache块层数由用户或Cache配置文件指定,第一层Cache块信息及局部统计信息存放在共享存储器Shared Memory里,其他层次的Cache块信息、各Cache组的历史局部统计信息与访存序列存放在全局存储器GlobalMemory中。
所述的Cache配置参数包括Cache大小、块大小、相联度、写回策略、替换策略。
本发明提出的一种基于GPU的Cache模拟器的空间并行加速模拟方法包括以下执行步骤:
步骤1:Cache模拟器启动时,Cache初始化模块对要模拟的Cache和统计信息进行初始化;
步骤1.1,从用户指定的Cache配置文件或终端输入获取Cache配置参数对Cache进行初始化,该配置参数包括Cache大小、块大小、相联度、写回策略、替换策略;
步骤1.2,初始化Cache的统计信息,包括总访存数、缺失数,块写回数、命中率,将这些参数置为0;
步骤2:Trace预处理模块从Trace文件读取访存序列,并对访存序列进行预处理,具体包括下面3个步骤:
步骤2.1,从用户指定的Trace文件读取访存序列,保存在主存里;
步骤2.2,对访存序列中的每一个访存记录,计算其将映射到的Cache组号;
步骤2.3,统计分布到各Cache组的访存记录数量,并计算每个Cache组的第一个访存记录在整体访存序列中的下标;
步骤3:Trace基数排序模块在GPU上对访存序列进行基数排序,包括以下步骤;
步骤3.1,在GPU的显存中分配空间,将访存序列由主存下载到显存;
步骤3.2,调用GPU端的基数排序Kernel函数,对访存序列以组号为关键字进行排序,排序好的访存序列存储在显存中;
步骤4:Cache模拟模块在GPU上进行实际的模拟操作,对每一个访存记录,与组内的Cache块进行匹配,确定是否命中,并调整组内的Cache块的组织结构,具体包括下面4个步骤;
步骤4.1,启动多个线程,根据Cache配置参数对线程进行组织;启动setnums个线程块,每一个线程块中开启confignum个线程,其中setnums为所要模拟Cache的组数,confignum为一次进行多少个Cache配置的模拟的数量,设定为六个,能够由用户修改设定数量,该confignum个Cache配置的参数只有相联度不同;
步骤4.2,初始化Cache组内的块信息:在模拟第一个访存记录前,对该线程要模拟的Cache组内的块进行初始化,设置每一个Cache块的标记tag为0,状态state为无效Invalid;
步骤4.3,对于每一个访存记录进行模拟;对属于该Cache组内的每一个访存记录,在该组内的块中匹配查找,判断是否命中,若命中,则更新state信息;若未命中,即缺失,则判断要替换出去的Cache块的是否是脏块。若不是脏块,则执行替换策略时直接将该块丢弃,若是脏块,则需要写回下一级Cache。然后更新Cache统计信息;根据替换策略更新Cache块的组织结构,同时以该访存记录访问下一级Cache,各级Cache模拟操作相同;
步骤4.4,在所有的访存记录模拟完毕后,将Cache中的脏块写回;
步骤5:Cache模拟结果统计显示模块将各Cache组的统计信息进行综合,得到整个Cache模拟的统计结果,并将统计结果信息保存到结果文件或直接输出到终端。
所述的一种基于GPU的Cache模拟器的空间并行加速模拟方法,其特征在于,所述的步骤4Cache模拟模块在GPU上进行模拟操作,能够分为不同的粒度进行并行模拟,一次进行单个Cache配置的模拟或者一次实现不同相联度的多个Cache配置的模拟;在多GPU环境下,将开启多个主机线程,每一个主机线程操作一个GPU进行单趟多配置模拟,运行在不同GPU上的Cache块大小不同。
相比现有技术,本发明具有以下优点和积极效果:
(1)提高模拟的效率
传统的Trace-driven Cache模拟器,大都对访存序列进行顺序模拟,存在执行时间长,效率不高的缺点,而本发明依托GPU强大的并行处理资源,充分挖掘了Cache模拟组间不相关的并行特性,对访存序列进行预处理,通过运行在GPU上的基数排序算法对访存序列进行并行排序,得到映射到每一个Cache组上的连续的访存序列,从而进行组间并行的Cache模拟,并通过不同层次不同粒度的并行模拟算法,有效的缩短了Cache模拟时间,提高了Cache的模拟效率,特别是在映射到各组的访存记录数相差不多时,加速效果更加明显。
(2)精确模拟
本发明提出的模拟方法并没有对Trace进行压缩或者对其基于时间进行划分,而只是将其按组进行排序,而采用的基数排序算法是稳定的,保证了原本映射到Cache组的访存记录的相对顺序,故本发明能够精确模拟Cache的行为,不存在采用Trace消减技术或对其进行基于时间的分段所带来的模拟不精确和误差问题。
(3)易于开发
本发明提出的基于GPU的Cache模拟器是基于GPU的CUDA(计算统一设备架构)编程环境进行开发的,CUDA是对C的扩展,不需要调用图形API(应用程序编程接口)就可在GPU上进行管理和计算,学习门槛低,而且GPU强大的并行计算资源,能有效加速并行性好、计算密度大的应用程序。另外,GPU相对机群价格相对低廉,成本低,开发人员只需要一个支持CUDA的GPU便可进行开发。
附图说明
图1是本发明提出的基于GPU的Cache模拟器的模块结构示意图;
图2是本发明提出的基于GPU的Cache模拟器的空间并行加速模拟方法的步骤流程图;
图3是本发明提出的模拟方法中步骤4Cache模拟模块的步骤流程图;
图4是本发明提出的基于GPU的Cache模拟器数据流向示意图;
图5是本发明提出的基于GPU的Cache模拟器GPU端存储示意图;
具体实施方式
下面结合附图对本发明进行进一步的详细说明。
如图1所示,本发明提出的一种基于GPU的Cache模拟器1包含五个模块:Cache初始化模块2、Trace预处理模块3、Trace基数排序模块4、Cache模拟模块5、Cache模拟结果统计显示模块6。
Cache初始化模块2,负责在Cache模拟器1启动时,执行初始化操作;在主存中为Cache分配存储空间,从终端输入7或Cache配置文件8读取要模拟的Cache的基本配置参数,对Cache进行初始化操作,同时完成对统计信息的初始化。随后将Cache配置参数传递给Trace预处理模块3和Cache模拟模块5。Cache的配置参数包括Cache大小、块大小、相联度、写回策略、替换策略等。
Trace预处理模块3,负责从Trace文件11读取访存序列,并进行预处理操作。首先从Cache初始化模块2取得Cache的配置参数,从用户设定的Trace文件11读取访存序列,并根据Cache的块大小和Cache组数计算访存序列中各访存记录将映射到的Cache组号,为Trace基数排序模块4做准备,同时记录下映射到每个Cache组的访存记录的数量,计算每个Cache组第一个访存记录在整体访存序列中的下标,在Cache模拟模块5进行模拟时,每个Cache组的模拟将从该下标开始的访存记录开始模拟,最后Trace预处理模块3将预处理后的访存序列传递给Trace基数排序模块4。其中,Cache组数=Cache大小/(相联度×块大小)。
Trace基数排序模块4,主要负责对访存序列进行基数排序,将分散到每一个组的访存序列分离开来,组织成连续的访存序列,该模块运行在GPU上,并行的进行基数排序,以缩短排序时间。Trace基数排序模块4在GPU的显存中为访存序列动态分配空间,将经过Trace预处理模块3处理后的访存序列由主存下载到分配好的GPU的显存空间,调用GPU端的基数排序Kernel函数,对访存序列以组号为关键字进行并行基数排序,排序好的访存序列存储在显存中。
Cache模拟模块5,是整个Cache模拟器1的核心模块,负责具体的模拟操作;启动setnums个线程块,每一个线程块中开启confignum)个线程,其中,setnums与confignum为设定的两个参数,setnums为所要模拟Cache的组数,confignum为一次进行多少个Cache的模拟的数量,由用户自己设定,一般为六个,这里多个Cache的配置参数只有相联度不同。在模拟开始前,先对线程内要模拟的Cache组内的块进行初始化,设置每一个Cache块的tag(标记)为0,state(状态)为Invalid(无效),定位映射到该线程所要模拟的Cache组的第一个访存记录的下标,依次读取访存记录进行模拟。对于其中每一个访存记录,先在该组内相联的Cache块中查找,判断是否命中,若命中,则根据替换算法更新Cache块的组织结构,若缺失,则判断要替换出去的Cache块的state是否为脏,如为脏,则需要写回下一级Cache,更新Cache统计信息;根据替换策略更新Cache块的组织结构同时以该访存记录访问下一级Cache,各级Cache模拟操作相同。在所有访存记录模拟结束后,将组内脏的Cache块写回。Cache模拟模块5,能够分为不同的粒度进行并行模拟,一次进行单个Cache配置的模拟或者一次实现不同相联度的多个Cache配置的模拟,在多GPU环境下,开启多个主机线程,每一个主机线程操作一个GPU进行单趟多配置模拟,运行在不同GPU上的Cache块大小不同。
Cache模拟结果统计显示模块6,负责综合各组的模拟结果,并将结果反馈给客户。Cache模拟结果统计显示模块6将Cache模拟模块5产生的各组的统计信息进行综合,得到整个Cache模拟的统计结果和性能参数,将其输出到终端输出9或结果文件10。
本发明提出的一种基于GPU的Cache模拟器的空间并行加速模拟方法,如图2所示,包含以下步骤:
步骤1:初始化;在Cache模拟器1启动时,Cache初始化模块2首先需要对要模拟的Cache和统计信息进行初始化,本步骤包含以下两个子操作:步骤1.1Cache配置参数初始化;步骤1.2统计信息初始化。
步骤1.1Cache配置参数初始化;在Cache模拟器1启动时,完成对Cache的一些基本参数的初始化,包括Cache大小、块大小、相联度、写回策略、替换策略等的初始化。配置参数可以从用户指定的Cache配置文件8读取,也可以由用户通过终端输入7在命令行输入;
步骤1.2Cache统计信息初始化;初始化Cache统计信息,包括总访存记录数、缺失数,块写回数、命中率等参数,即将以上参数置为0。
步骤2:从Trace文件11读取访存序列并进行预处理;Trace预处理模块3从Trace文件11读取访存序列,并对访存序列进行预处理,本步骤包括以下三个子步骤:步骤2.1读取Trace文件11;步骤2.2计算组号;步骤2.3计算分布到各组的访存记录数量。
步骤2.1读取Trace文件11;从用户指定的Trace文件11读取访存序列,访存序列中的各访存记录格式为:accesstype,address,nbytes,其中:accesstype为访存类型,有指令,读数据,写数据三种类型;address为要访存的地址;nbytes为此次访存要访问的字节数;
步骤2.2计算组号;对每一个访存记录,计算映射到Cache的组号,为随后的基数排序做准备,其中组号的计算公式为:(访存地址/块大小)mod Cache组数,mod表示求模,而Cache组数=Cache大小/(相联度×块大小);
步骤2.3计算分布到各组的访存记录的数量;计算分布到各Cache组的访存记录的数量,并计算经过分布后的每一Cache组第一个访存记录在整体访存序列中的下标。
步骤3:执行Trace基数排序;Trace基数排序模块4调用GPU上Kernel函数,在GPU上对访存序列进行基数排序,完成两个子步骤:步骤3.1将访存序列下载到显存;步骤3.2调用基数排序模块对访存序列进行排序。
步骤3.1将访存序列下载到显存;在显存中分配空间,访存序列由主存下载到显存,为基数排序做准备;
步骤3.2调用基数排序模块4对访存序列进行排序;调用GPU端的基数排序Kernel函数,对访存序列以组号为关键字进行并行基数排序,排序好的访存序列存储在显存中。
步骤4:在GPU上并行执行Cache模拟;本步骤是Cache模拟方法的核心,首先确定线程组织方式,对于每一个线程所要做的模拟工作如图3所示,在每一个线程模拟开始前,要对Cache组内的块信息进行初始化,对于每一个访存记录进行模拟,判断是否命中,并根据相应的替换算法和写回策略更新Cache组织信息,在模拟的最后阶段,要写回脏块。该步骤包括三个子步骤:步骤4.1确定线程组织方式步骤;4.2初始化Cache组内块信息;步骤4.3对每一个访存记录进行模拟;步骤4.4脏块写回。
步骤4.1确定线程组织方式;启动setnums个线程块,每一个线程块中开启confignum个线程,其中setnums为所要模拟Cache的组数,confignum为一次进行多少个Cache配置的模拟,注意这里多个Cache配置只有相联度不同;
步骤4.2初始化Cache组内块信息;在模拟第一个访存记录前,对该线程要模拟的Cache组内的块进行初始化,设置每一个Cache块的tag为0,状态state为Invalid,定位映射到该线程所要模拟的Cache组的第一个访存记录的下标,将依次读取访存记录进行模拟;
步骤4.3对每一个访存记录进行模拟;如图3所示,对属于一个Cache组内的每一个访存记录,取得其tag,在该Cache组内的块中匹配查找,判断是否命中,命中的判断条件为该访存记录的tag等于Cache块的tag并且该Cache块的state不为Invalid。若命中,则更新所命中的Cache块的state信息,更新Cache的统计信息及Cache块的组织结构;若未命中,即缺失,则执行替换策略替换Cache块,然后判断要替换出去的Cache块的state是否为脏,如不为脏,对该Cache块不做处理,如为脏,则需要写回下一级Cache,然后更新Cache的统计信息;根据替换策略更新Cache块的组织结构,同时以该访存记录访问下一级Cache,各级Cache模拟操作相同;模拟完一个访存记录后,判断是否还有未进行模拟的访存记录,若有,继续执行本步骤进行模拟,若没有,则该Cache组内的访存记录模拟完毕,执行下一步骤。
步骤4.4脏块写回;在所有的访存记录模拟完毕后,判断Cache内的块是否有脏块,若有,将脏块写回。
步骤5:模拟结果反馈,运行结束;该步骤包括两个子操作:步骤5.1统计信息综合;步骤5.2统计信息处理。
步骤5.1统计信息综合;Cache模拟结果统计显示模块6将各组的统计信息进行综合,得到整个Cache模拟的统计结果,如总访存记录数,缺失数,写回数等;
步骤5.2统计信息处理;Cache模拟结果统计显示模块6将统计结果信息保存到结果文件或直接输出到终端,运行结束。
本发明提出的一种基于GPU的Cache模拟器,其主要数据流向如图4所示,Trace文件11以及Cache配置文件8存储在磁盘中,Cache模拟器1启动后,读取Trace文件11中的访存序列进入主存;同时,对访存序列进行预处理,预处理完成后,在显存为其分配空间,将访存序列从主存下载至显存,调用GPU端的基数排序Kernel函数,对访存序列以组号为关键字进行并行基数排序;在Cache模拟阶段,将从显存中取访存记录进行模拟。在模拟完成后,将各个Cache组的局部统计结果从显存拷贝到主存,CPU对局部统计信息进行综合,得到整体的统计结果;最后,将在磁盘中保存结果文件。
本发明提出的一种基于GPU的Cache模拟器,为了达到较好的加速效果,对存储安排作了优化。Cache块信息包括tag信息与state信息,具体层数则是初始化时由用户从终端输入或读取配置文件得到的,可以为一层、二层、三层,目前最普遍的计算机有两层或三层。如图5所示,鉴于共享存储器(Shared Memory)和全局存储器(Global Memory)访存速度的巨大差异,Shared Memory访存速度是Global Memory访存速度的400-600倍,故将L1级Cache块信息及局部统计信息存储在Shared Memory以提高模拟速度,由于Shared Memory容量是有限的(一个多流处理器上只有16KB),其他层次的Cache块信息容量较大,只能存放在速度较慢的Global Memory,同时由于访存序列非常庞大,也必须存放在Global Memory,而因为各Cache组的局部统计信息会随着线程块的结束而消失,故要在Global Memory开辟空间以保存各Cache组的局部统计信息。

Claims (6)

1.一种基于GPU的Cache模拟器,其特征在于,包括Cache初始化模块、Trace预处理模块、Trace基数排序模块、Cache模拟模块、Cache模拟结果统计显示模块;Cache初始化模块用于对Cache配置进行初始化,将Cache配置参数传递给Trace预处理模块和Cache模拟模块;Trace预处理模块用于从用户设定的Trace文件读取访存序列,根据Cache配置参数中的Cache的块大小和Cache组数计算访存序列中各访存记录将映射到的Cache组号,并记录映射到每个Cache组的访存记录的数量,计算每个Cache组中的第一个访存记录在整体访存序列中的下标;Trace基数排序模块用于在GPU的显存中为访存序列动态分配空间,将经过Trace预处理模块处理后的访存序列下载到分配好的GPU的显存空间,并对访存序列以Cache组号为关键字并行地进行基数排序;Cache模拟模块,在GPU上启动多个线程并行地运行,并对线程内各要模拟的Cache组内的块进行初始化,设置每一个Cache块的标记tag为0,状态state为无效Invalid,定位映射到该线程要模拟的Cache组的第一个访存记录的下标,依次读取访存记录,对于每一个访存记录,与组内的Cache块进行匹配,确定是否命中,并根据替换策略调整组内的Cache块的组织结构,若命中,则更新所命中的Cache块的state信息,更新Cache统计信息及Cache块的组织结构;若缺失,则替换Cache块,判断要替换出去的Cache块是否是脏块,若不是脏块,对该Cache块不做处理,若是脏块,则写回下一级Cache,然后更新Cache统计信息及Cache块的组织结构,同时以该访存记录访问下一级Cache;Cache模拟结果统计显示模块用于对Cache模拟模块产生的各Cache组的局部统计信息进行综合,得到整个Cache模拟的统计结果和性能参数,将其保存到结果文件或输出到终端;
Cache块包括tag信息与state信息,Cache块层数由用户或Cache配置文件指定,第一层Cache块信息及各Cache组的局部统计信息存放在共享存储器Shared Memory里,其他层次的Cache块信息、各Cache组的局部统计信息与访存序列存放在全局存储器Global Memory中。
2.根据权利要求1所述的一种基于GPU的Cache模拟器,其特征在于,所述的Cache配置参数包括Cache大小、块大小、相联度、写回策略、替换策略。
3.应用权利要求1所述的一种基于GPU的Cache模拟器的空间并行加速模拟方法,其特征在于,包括以下步骤:
步骤1:Cache模拟器启动时,Cache初始化模块对模拟的Cache和统计信息进行初始化;
步骤1.1,从用户指定的Cache配置文件或终端输入获取Cache配置参数对Cache进行初始化,该配置参数包括Cache大小、块大小、相联度、写回策略、替换策略;
步骤1.2,初始化Cache的统计信息,包括总访存数、缺失数,块写回数、命中率,将这些参数置为0;
步骤2:Trace预处理模块从Trace文件读取访存序列,并对访存序列进行预处理,具体包括下面3个子步骤:
步骤2.1,从用户指定的Trace文件读取访存序列,保存在主存里;
步骤2.2,对访存序列中的每一个访存记录,计算其将映射到的Cache组号;
步骤2.3,统计分布到各Cache组的访存记录数量,并计算每个Cache组的第一个访存记录在整体访存序列中的下标;
步骤3:Trace基数排序模块在GPU上对访存序列进行基数排序,包括以下子步骤;
步骤3.1,在GPU的显存中分配空间,将访存序列由主存下载到显存;
步骤3.2,调用GPU端的基数排序Kernel函数,对访存序列以组号为关键字在GPU上并行进行排序,排序好的访存序列存储在显存中;
步骤4:Cache模拟模块在GPU上进行模拟操作,对每一个访存记录,与组内的Cache块进行匹配,确定是否命中,并调整组内的Cache块的组织结构,具体包括下面4个子步骤;
步骤4.1,启动多个线程,根据Cache配置参数对线程进行组织;启动参数setnums个线程块,每一个线程块中开启参数confignum个线程,其中,setnums为所要模拟Cache的组数,confignum为一次进行多少个Cache模拟的数量,能够由用户修改设定数量,该confignum个Cache的配置参数只有相联度不同;
步骤4.2,在模拟开始前,先对线程内要模拟的Cache组内的块进行初始化,设置每一个Cache块的标记tag为0,状态state为无效Invalid,定位映射到该线程所要模拟的Cache组的第一个访存记录的下标,依次读取访存记录进行模拟;
步骤4.3,对每一个访存记录进行模拟;对属于该Cache组内的每一个访存记录,在该组内的块中匹配查找,判断是否命中,若命中,则更新所命中的Cache块的state信息,更新Cache统计信息及Cache块的组织结构;若缺失,则替换Cache块,判断要替换出去的Cache块是否是脏块,若不是脏块,对该Cache块不做处理,若是脏块,则需要写回下一级Cache,然后更新Cache统计信息及Cache块的组织结构,同时以该访存记录访问下一级Cache,各级Cache模拟操作相同;模拟完一个访存记录后,判断是否还有未进行模拟的访存记录,若有,继续执行本步骤进行模拟,若没有,则该Cache组内的访存记录模拟完毕,执行下一步骤;
步骤4.4,在所有的访存记录模拟完毕后,判断Cache内的块是否有脏块,若有,将脏块写回;
步骤5:Cache模拟结果统计显示模块将各Cache组的统计信息进行综合,得到整个Cache模拟的统计结果,并将统计结果信息保存到结果文件或直接输出到终端,整个模拟过程结束。
4.根据权利要求3所述的空间并行加速模拟方法,其特征在于,所述的步骤4Cache模拟模块在GPU上进行模拟操作,能够根据模拟粒度分成不同的粒度进行并行模拟,一次进行单个Cache配置的模拟或者一次实现不同相联度的多个Cache配置的模拟,在多GPU环境下,将开启多个主机线程,每一个主机线程操作一个GPU进行单趟多配置模拟,运行在不同GPU上的Cache块大小不同。
5.根据权利要求3所述的空间并行加速模拟方法,其特征在于,所述的步骤2.2中计算每一个访存记录将映射到的Cache组号,其计算公式为:(访存地址/块大小)mod Cache组数,mod为求模;Cache组数=Cache大小/(相联度×块大小)。
6.根据权利要求3所述的空间并行加速模拟方法,其特征在于,步骤4.3中所述的判断是否命中,其命中条件为:该访存记录的tag等于Cache块的tag并且该Cache块的状态不为Invalid。
CN2010101050940A 2010-02-02 2010-02-02 一种基于GPU的Cache模拟器及其空间并行加速模拟方法 Expired - Fee Related CN101814039B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101050940A CN101814039B (zh) 2010-02-02 2010-02-02 一种基于GPU的Cache模拟器及其空间并行加速模拟方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101050940A CN101814039B (zh) 2010-02-02 2010-02-02 一种基于GPU的Cache模拟器及其空间并行加速模拟方法

Publications (2)

Publication Number Publication Date
CN101814039A CN101814039A (zh) 2010-08-25
CN101814039B true CN101814039B (zh) 2011-05-18

Family

ID=42621301

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101050940A Expired - Fee Related CN101814039B (zh) 2010-02-02 2010-02-02 一种基于GPU的Cache模拟器及其空间并行加速模拟方法

Country Status (1)

Country Link
CN (1) CN101814039B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102253919A (zh) * 2011-05-25 2011-11-23 中国石油集团川庆钻探工程有限公司 基于gpu和cpu协同运算的并行数值模拟方法和系统
CN103246542B (zh) * 2012-02-01 2017-11-14 中兴通讯股份有限公司 智能缓存及智能终端
CN102722446B (zh) * 2012-06-06 2015-03-25 北京航空航天大学 一种面向流处理器的局部内存访问模式动态记录器
CN102799416B (zh) * 2012-07-16 2014-09-17 中国人民解放军国防科学技术大学 面向gpu的细粒度并行应用映射方法
CN104317751B (zh) * 2014-11-18 2017-03-01 郑州云海信息技术有限公司 一种gpu上数据流处理系统及其数据流处理方法
CN106407063B (zh) * 2016-10-11 2018-12-14 东南大学 一种GPU L1 Cache处访存序列的仿真生成与排序方法
CN109614086B (zh) * 2018-11-14 2022-04-05 西安翔腾微电子科技有限公司 基于SystemC和TLM模型的GPU纹理缓冲区数据存储硬件及存储装置
CN111966405B (zh) * 2020-07-03 2022-07-26 北京航空航天大学杭州创新研究院 一种基于GPU的Polar码高速并行译码方法
CN112308978B (zh) * 2020-10-30 2021-06-15 武汉市真意境文化科技有限公司 一种对虚拟仿真空间虚拟实体的动态更新方法及系统
CN112631631B (zh) * 2020-12-29 2021-11-16 中国科学院计算机网络信息中心 一种针对gpu加速多步长前缀树的更新序列维护方法
CN112817639B (zh) * 2021-01-13 2022-04-08 中国民航大学 Gpu读写单元通过操作数收集器访问寄存器文件的方法
CN115718724B (zh) * 2023-01-09 2023-05-09 阿里巴巴(中国)有限公司 Gpu、数据选择方法及芯片
CN117271394A (zh) * 2023-11-21 2023-12-22 中电科申泰信息科技有限公司 一种基于地址存储和搜索的cache读缺失处理方法

Also Published As

Publication number Publication date
CN101814039A (zh) 2010-08-25

Similar Documents

Publication Publication Date Title
CN101814039B (zh) 一种基于GPU的Cache模拟器及其空间并行加速模拟方法
US10509876B2 (en) Simulation using parallel processors
CN102902512B (zh) 一种基于多线程编程及消息队列的多线程并行处理方法
US8738349B2 (en) Gate-level logic simulator using multiple processor architectures
CN104781786B (zh) 使用延迟重构程序顺序的选择逻辑
CN107273302A (zh) 管理工作负载存储器分配的方法、设备和系统
O'Neil et al. A parallel gpu version of the traveling salesman problem
Martín et al. Algorithmic strategies for optimizing the parallel reduction primitive in CUDA
Rui et al. Join algorithms on GPUs: A revisit after seven years
Bhatotia Incremental parallel and distributed systems
Xin et al. An implementation of GPU accelerated MapReduce: Using Hadoop with OpenCL for data-and compute-intensive jobs
Li et al. CoTrain: Efficient Scheduling for Large-Model Training upon GPU and CPU in Parallel
Passerat-Palmbach et al. Warp-level parallelism: Enabling multiple replications in parallel on GPU
Wang et al. FineQuery: Fine-grained query processing on CPU-GPU integrated architectures
Ruggiero Throttle Mechanisms for the Manchester Dataflow Machine
Bertacco et al. On the use of GP-GPUs for accelerating compute-intensive EDA applications
CN110209631A (zh) 大数据处理方法及其处理系统
CN114462612B (zh) 基于高性能异构集群的量子计算仿真原理验证方法
Huynh et al. TP-PARSEC: A task parallel PARSEC benchmark suite
Gratien An abstract object oriented runtime system for heterogeneous parallel architecture
El Zein et al. From sparse matrix to optimal gpu cuda sparse matrix vector product implementation
Qiao et al. A customizable MapReduce framework for complex data-intensive workflows on GPUs
Han et al. Using gpu to accelerate cache simulation
Terrosi et al. Modeling of GPGPU architectures for performance analysis of CUDA programs
CN101770391A (zh) 一种基于GPU的Cache模拟器及其时间并行加速模拟方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Wan Han

Inventor after: Gao Xiaopeng

Inventor after: Wang Zhiqiang

Inventor after: Li Yi

Inventor after: Long Xiang

Inventor before: Gao Xiaopeng

Inventor before: Wan Han

Inventor before: Wang Zhiqiang

Inventor before: Li Yi

Inventor before: Long Xiang

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: GAO XIAOPENG WAN HAN WANG ZHIQIANG LI YI LONG XIANG TO: WAN HAN GAO XIAOPENG WANG ZHIQIANG LI YI LONG XIANG

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110518

Termination date: 20210202