[发明专利]一种面向数据结构的图形处理器数据预取方法及装置有效
申请号: | 201811183490.8 | 申请日: | 2018-10-11 |
公开(公告)号: | CN109461113B | 公开(公告)日: | 2021-07-16 |
发明(设计)人: | 黄立波;郭辉;郑重;王志英;郭维;雷国庆;王俊辉;隋兵才;孙彩霞;王永文 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06T1/20 | 分类号: | G06T1/20 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 谭武艺 |
地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 数据结构 图形 处理器 数据 方法 装置 | ||
1.一种面向数据结构的图形处理器数据预取方法,其特征在于实施步骤包括:
1)获取监控处理器核对图数据结构的存储访问读请求的信息及读取的数据;
2)根据该存储访问请求的类型选择相应的数据预取请求生成方式:若该存储访问请求是对work list向量的普通读访问,则生成对work list向量下一项的预取请求;若该存储访问请求是对work list向量的预取访问,则生成对vertex list向量的预取请求;若该存储访问请求是对vertex list向量的预取访问,则生成对edge list向量的预取请求;若该存储访问请求是对edge list向量的预取请求,则生成对visited list向量的预取请求;且生成对visited list向量的预取请求的详细步骤包括:读取对edge list向量预取请求的返回结果作为计算预取visited list向量数据,为每一个读取到的值产生相应的访问请求地址;
3)将生成的预取请求存入预取请求队列;
步骤2)中生成对work list向量下一项的预取请求时,对work list向量下一项的预取请求的数据地址为该存储访问请求所读取的数据地址加上所读取的数据大小得到的结果;
步骤2)中生成对vertex list向量的预取请求的详细步骤包括:根据上一次产生worklist向量的预取请求时得到的节点ID来确定vertex list向量的预取请求的对应行以及下一行的地址,如果该对应行以及下一行的地址在同一个缓存块中则生成一条存储访问请求以同时取回该对应行以及下一行的地址;如果该对应行以及下一行的地址不在同一个缓存块中则生成两条存储访问请求以分别取回该对应行和下一行的地址;
步骤2)中生成对edge list向量的预取请求的详细步骤包括:根据运行时的edge list向量起始和终止索引生成单元会产生对edge list向量的预取请求,且产生请求的数量主要取决于存储这些边的数据需要多少缓存块以及进行地址对齐需要多少缓存块。
2.根据权利要求1所述的面向数据结构的图形处理器数据预取方法,其特征在于,步骤1)中获取监控处理器核对图数据结构的存储访问读请求包括:访存指令单元中的访存监视器负责监视对work list向量的普通访存读指令访问,以及访存指令单元中的访存结果缓冲记录的所有被一级缓存处理过的访存请求信息以及读取到的数据。
3.一种面向数据结构的图形处理器数据预取装置,其特征在于:包括分布在每一个处理单元中的数据预取单元,所述数据预取单元分别与访存指令单元的访存监视器、访存结果缓存以及一级缓存相连,所述数据预取单元包括:
地址空间分类器(1),用于根据处理器核对图数据结构的存储访问读请求的类型选择相应的数据预取请求生成方式;
运行时信息表(2),用于分别记录各个处理单元Warp中各种向量的运行时信息,所述各种向量的运行时信息包括work list向量的索引、vertex list向量的索引、edge list向量的起始索引和终止索引;
预取请求生成单元(3),用于根据指定执行不同的数据预取请求生成方式,若该存储访问请求是对work list向量的普通读访问,则生成对work list向量下一项的预取请求;若该存储访问请求是对work list向量的预取访问,则生成对vertex list向量的预取请求;若该存储访问请求是对vertex list向量的预取访问,则生成对edge list向量的预取请求;若该存储访问请求是对edge list向量的预取请求,则生成对visitedlist向量的预取请求;
预取请求队列(4),用于保存生成的数据预取请求;
所述运行时信息表(2)的每一项包括WID、work list向量的索引、vertex list向量的索引、edge list向量的起始索引和终止索引共五项信息,其中WID用于记录处理单元WarpID;所述运行时信息表(2)还包括选择器,所述选择器用于根据访存信息来自访存指令单元的信息中的信息来源、处理单元Warp的Warp ID、被访问数据来更新运行时信息表(2)中的对应表项,信息来源用于区别该访存信息来自访存监视器还是访存结果缓存,若来自访存监视器则判定对新节点的遍历所需的数据预取开始,将运行时信息表(2)中对应WID的条目的内容清空并将被访问的数据记录到work list索引;若来自访存结果缓存,则将被访问的数据记录到运行时信息表(2)中对应WID的条目;
所述地址空间分类器(1)包括地址空间范围表和八个地址比较器,所述地址空间范围表分别包括work list向量、vertex list向量、edge list向量、visited list向量的地址空间范围的起始地址、结束地址一一对应的八个地址,所述八个地址比较器中每一个地址比较器的一路输入为来自访存指令单元的信息中的被访问地址、另一路输入为地址空间范围表中对应的地址,且所述八个地址比较器的输出端分别与预取请求生成单元(3)相连;
所述预取请求生成单元(3)包括预取生成单元选择器(31)、work list向量预取请求生成单元(32)、vertex list向量预取请求生成单元(33)、edge list向量预取请求生成单元(34)以及visitedlist向量预取请求生成单元(35),所述预取生成单元选择器(31)根据地址空间分类器(1)输出的访存信息类型、来自访存指令单元的信息中的信息来源、运行时信息表(2)输出的运行时信息,并从work list向量预取请求生成单元(32)、vertex list向量预取请求生成单元(33)、edge list向量预取请求生成单元(34)、visitedlist向量预取请求生成单元(35)四者中选择一个来进行预取请求生成;work list向量预取请求生成单元(32)用于生成对work list向量下一项的预取请求并写入预取请求队列(4);vertex list向量预取请求生成单元(33)用于生成对vertex list向量的预取请求并写入预取请求队列(4);edge list向量预取请求生成单元(34)用于生成对edge list向量的预取请求并写入预取请求队列(4);visited list向量预取请求生成单元(35)用于生成对visited list向量的预取请求并写入预取请求队列(4);所述运行时信息表(2)的选择器通过三个输入对运行时信息表进行更新:(1)由于每个访存信息都携带Warp ID,因此选择器通过与运行时信息表中的WID进行匹配,来确定更新表中哪个条目;(2)信息来源表明该访存信息来自访存监视器还是访存结果缓存,若来自访存监视器,则说明对新节点的遍历所需的数据预取开始,表中的同一个WID的条目的内容会被清空并将被访问的数据记录到work list索引;若来自访存结果缓存,会将被访问的数据记录到表中相应的内容,相较于表中work list索引和vertex索引,因为edge list的起始索引和终止索引有可能不能同时获得,因此运行时信息输出会在edge list的起始索引和终止索引全部获取的情况下才会将它们发送给edgelist向量预取请求生成单元(34)用来生成对edge list向量的预取请求,而work list索引和vertex索引可以在更新运行时信息表的同时被转发给预取请求生成单元。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811183490.8/1.html,转载请声明来源钻瓜专利网。