一种面向数据结构的图形处理器数据预取方法及装置制造方法及图纸

技术编号:20567312 阅读:10 留言:0更新日期:2019-03-14 09:46
本发明专利技术公开了一种面向数据结构的图形处理器数据预取方法及装置,方法包括获取监控处理器核对图数据结构的存储访问读请求的信息及读取的数据,利用宽度优先搜索定义的数据结构访问模式以及图数据结构信息来产生相应的四种向量预取请求并存入预取请求队列。装置包括分布在每一个处理单元中的数据预取单元,所述数据预取单元分别与访存指令单元的访存监视器、访存结果缓存以及一级缓存相连,所述数据预取单元包括地址空间分类器、运行时信息表、预取请求生成单元以及预取请求队列。本发明专利技术更加准确和高效地预取使用宽度优先搜索进行图遍历所需的数据,从而提高GPU处理图计算问题的性能。

【技术实现步骤摘要】
一种面向数据结构的图形处理器数据预取方法及装置
本专利技术涉及图形处理器的数据预取领域,具体涉及一种面向数据结构的图形处理器数据预取方法及装置。
技术介绍
随着图计算应用的问题规模不断增长,使用图形处理器(GPU)并行加速图计算应用成为计算机处理大规模图计算问题的关键。但是,由于大多数图计算应用是访存密集型应用,因此这些应用最大的时间开销来自于遍历图产生的存储访问。宽度优先搜索是许多图计算应用进行图遍历的基本算法。但是,由于宽度优先搜索的不规则存储访问,导致GPU对每个不规则的存储访问都要产生多于一个的存储访问请求。这个极大地影响了GPU的访存效率,进而导致GPU不能有效地加速宽度优先搜索。另外,GPU对图数据结构的访问缺乏足够的局部性,进而导致GPU对一些数据的缓存访问失效率高达80%。更糟糕的是,由于缺乏足够的算术计算,GPU无法通过大规模并行来实现延迟隐藏,流水线不得不暂停来等待数据。最终,GPU无法充分利用它的强大计算能力来加速宽度优先搜索算法。数据预取是一项有希望可以提高存储器访问和缓存效率的技术。GPU上典型的数据预取器,例如,基于步长的数据预取器、基于数据流的预取器和基于全局历史访存信息的数据预取器,都可以有效地减少应用中规则存储访问的延迟。然而,对于非规则存储访问,典型的基于预测的数据预取器的预取错误率明显高于对规则存储访问的预取。这样高的预取错误率直接导致读取过多的无用数据,进而产生严重的缓存数据污染和存储器带宽浪费。另外,由于基于访存模式识别的预取器无法准确识别出复杂多变的非规则访存模式,这些类型的数据预取器对减少访存延迟和提高GPU的执行效率几乎没有任何贡献。通常来讲,主要有三种典型的数据预取机制:基于步长的数据预取器(strideprefetcher)、基于数据流的预取器(streamprefetcher)以及基于全局历史访存信息的数据预取器(GlobalHistoryBufferprefetcher)。如图1所示,基于步长的数据预取器会使用一个表来记录局部的存储器历史访问信息。这些信息主要包括:程序计数器值(PC,作为表的索引)、最近一次访存的地址(用来计算步长和下次访存的地址)、最近两次访存地址之间的步长(最近两次访存地址的差值)以及步长有效位(标记当前记录的步长是否有效)。如果同一个PC的访存指令的访存地址具有固定步长,那么基于步长的数据预取器就会根据步长值和最近访问的地址计算出将要被预取数据的地址。如图2所示,基于数据流的预取器通常会跟踪对某一块存储区域访问的方向。当所有访存的地址都是朝着同一个方向进行连续变化,基于数据流的预取器就会按照识别出的方向将数据以缓存块为单位不断地读取到预取器的缓冲中。之所以不将预取的数据存入片上缓存,是为了避免预取的数据污染缓存中有用的数据。当某一次数据访问导致缓存失效时,缓存才会将预取的缓存块存入缓存。当识别的顺序访存模式发生改变,预取器的缓冲就会被刷新。如图3所示,基于全局历史访存信息的数据预取器使用一个全局历史访存信息缓存(GHB)来记录整个系统中所有缓存失效访问的地址信息。每个GHB项都会存储一个失效的访存地址和一个指针,这些指针会将来自同一个索引的GHB项按照时间顺序连接起来。另外,基于全局历史访存信息的数据预取器还会使用一个索引表。这张表用来存储索引GHB项的索引值,这些值可以是指令的PC值或者是访存失效的地址值。与索引值对应的是一个指向索引值对应GHB项的指针,并且通过这个指针可以将GHB中具有相同索引值的项全部找出来。基于全局历史访存信息的数据预取器可以和其他的数据预取机制搭配,例如基于步长的数据预取器和基于数据流的预取器,从而可以识别多种访存模式。由此可见,这三种典型的数据预取器都是基于一种或多种常见的规则存储访问模式设计的。但是对于宽度优先搜索的不规则存储访问模式,这三种数据预取器的预取效率是非常低效,甚至是无效的。
技术实现思路
本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种面向宽度优先搜索、能够高效地预取不规则存储访问数据、硬件结构简单、对程序员编程透明的面向数据结构的图形处理器数据预取方法及装置。为了解决上述技术问题,本专利技术采用的技术方案为:一种面向数据结构的图形处理器数据预取方法,实施步骤包括:1)获取监控处理器核对图数据结构的存储访问读请求的信息及读取的数据;2)根据该存储访问请求的类型选择相应的数据预取请求生成方式:若该存储访问请求是对worklist向量的普通读访问,则生成对worklist向量下一项的预取请求;若该存储访问请求是对worklist向量的预取访问,则生成对vertexlist向量的预取请求;若该存储访问请求是对vertexlist向量的预取访问,则生成对edgelist向量的预取请求;若该存储访问请求是对edgelist向量的预取请求,则生成对visitedlist向量的预取请求;3)将生成的预取请求存入预取请求队列。优选地,步骤1)中获取监控处理器核对图数据结构的存储访问读请求包括:访存指令单元中的访存监视器负责监视对worklist向量的普通访存读指令访问,以及访存指令单元中的访存结果缓冲记录的所有被一级缓存处理过的访存请求信息以及读取到的数据。优选地,步骤2)中生成对worklist向量下一项的预取请求时,对worklist向量下一项的预取请求的数据地址为该存储访问请求所读取的数据地址加上所读取的数据大小得到的结果。优选地,步骤2)中生成对vertexlist向量的预取请求的详细步骤包括:根据上一次产生worklist向量的预取请求时得到的节点ID来确定vertexlist向量的预取请求的对应行以及下一行的地址,如果该对应行以及下一行的地址在同一个缓存块中的生成一条存储访问请求以同时取回该对应行以及下一行的地址;如果该对应行以及下一行的地址不在同一个缓存块中的生成两条存储访问请求以分别取回该对应行和下一行的地址。优选地,步骤2)中生成对edgelist向量的预取请求的详细步骤包括:根据运行时的edgelist向量起始和终止索引生成单元会产生对edgelist向量的预取请求,且产生请求的数量主要取决于存储这些边的数据需要多少缓存块以及进行地址对齐需要多少缓存块。优选地,步骤2)中生成对visitedlist向量的预取请求的详细步骤包括:读取对edgelist向量预取请求的返回结果作为计算预取visitedlist向量数据,为每一个读取到的值产生相应的访问请求地址。一种面向数据结构的图形处理器数据预取装置,包括分布在每一个处理单元中的数据预取单元,所述数据预取单元分别与访存指令单元的访存监视器、访存结果缓存以及一级缓存相连,所述数据预取单元包括:地址空间分类器,用于根据处理器核对图数据结构的存储访问读请求的类型选择相应的数据预取请求生成方式;运行时信息表,用于分别记录各个处理单元Warp中各种向量的运行时信息,所述各种向量的运行时信息包括worklist向量的索引、vertexlist向量的索引、edgelist向量的起始索引和终止索引;预取请求生成单元,用于根据指定执行不同的数据预取请求生成方式,若该存储访问请求是对worklist向量的普通读访问,则生成对worklis本文档来自技高网
...

【技术保护点】
1.一种面向数据结构的图形处理器数据预取方法,其特征在于实施步骤包括:1)获取监控处理器核对图数据结构的存储访问读请求的信息及读取的数据;2)根据该存储访问请求的类型选择相应的数据预取请求生成方式:若该存储访问请求是对work list向量的普通读访问,则生成对work list向量下一项的预取请求;若该存储访问请求是对work list向量的预取访问,则生成对vertex list向量的预取请求;若该存储访问请求是对vertex list向量的预取访问,则生成对edge list向量的预取请求;若该存储访问请求是对edge list向量的预取请求,则生成对visited list向量的预取请求;3)将生成的预取请求存入预取请求队列。

【技术特征摘要】
1.一种面向数据结构的图形处理器数据预取方法,其特征在于实施步骤包括:1)获取监控处理器核对图数据结构的存储访问读请求的信息及读取的数据;2)根据该存储访问请求的类型选择相应的数据预取请求生成方式:若该存储访问请求是对worklist向量的普通读访问,则生成对worklist向量下一项的预取请求;若该存储访问请求是对worklist向量的预取访问,则生成对vertexlist向量的预取请求;若该存储访问请求是对vertexlist向量的预取访问,则生成对edgelist向量的预取请求;若该存储访问请求是对edgelist向量的预取请求,则生成对visitedlist向量的预取请求;3)将生成的预取请求存入预取请求队列。2.根据权利要求1所述的面向数据结构的图形处理器数据预取方法,其特征在于,步骤1)中获取监控处理器核对图数据结构的存储访问读请求包括:访存指令单元中的访存监视器负责监视对worklist向量的普通访存读指令访问,以及访存指令单元中的访存结果缓冲记录的所有被一级缓存处理过的访存请求信息以及读取到的数据。3.根据权利要求1所述的面向数据结构的图形处理器数据预取方法,其特征在于,步骤2)中生成对worklist向量下一项的预取请求时,对worklist向量下一项的预取请求的数据地址为该存储访问请求所读取的数据地址加上所读取的数据大小得到的结果。4.根据权利要求1所述的面向数据结构的图形处理器数据预取方法,其特征在于,步骤2)中生成对vertexlist向量的预取请求的详细步骤包括:根据上一次产生worklist向量的预取请求时得到的节点ID来确定vertexlist向量的预取请求的对应行以及下一行的地址,如果该对应行以及下一行的地址在同一个缓存块中的生成一条存储访问请求以同时取回该对应行以及下一行的地址;如果该对应行以及下一行的地址不在同一个缓存块中的生成两条存储访问请求以分别取回该对应行和下一行的地址。5.根据权利要求1所述的面向数据结构的图形处理器数据预取方法,其特征在于,步骤2)中生成对edgelist向量的预取请求的详细步骤包括:根据运行时的edgelist向量起始和终止索引生成单元会产生对edgelist向量的预取请求,且产生请求的数量主要取决于存储这些边的数据需要多少缓存块以及进行地址对齐需要多少缓存块。6.根据权利要求1所述的面向数据结构的图形处理器数据预取方法,其特征在于,步骤2)中生成对visitedlist向量的预取请求的详细步骤包括:读取对edgelist向量预取请求的返回结果作为计算预取visitedlist向量数据,为每一个读取到的值产生相应的访问请求地址。7.一种面向数据结构的图形处理器数据预取装置,其特征在于:包括分布在每一个处理单元中的数据预取单元,所述数据预取单元分别与访存指令单元的访存监视器、访存结果缓存以及一级缓存相连,所述数据预取单元包括:地址空间分类器(1),用于根据处理器核对图数据结构的存储访问读请求的类型选择相应的数据预取请求生成方式;运行时信息表(2),用于分别记录各个处理单元Warp中各种向量的运行时信息,所述各种向量的运行时信息包括worklist向量的索引、vertexlist向量的索引、edgelist向量的起始索引和终止索引;预取请求生成单元(3),用于根据指定执行不同的数据预取请求生成方式,若该存储访问请求...

【专利技术属性】
技术研发人员:黄立波郭辉郑重王志英郭维雷国庆王俊辉隋兵才孙彩霞王永文
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1