本技术涉及计算机,尤其涉及一种gpu的数据访问处理方法、装置及存储介质。
背景技术:
1、随着图形处理器(graphics processing unit,gpu)的应用越来越广泛,对gpu的性能要求也越来越高。
2、其中gpu内部通常包括多个不同的模块,多个不同的模块在跨分区(英文:partition)进行数据访问时,若模块间的距离较远,则会无法满足一定的时序要求。目前,为了满足模块间通信的时序要求,可以在模块间加入触发器(英文:filp-flop)或先进先出(first input first output,fifo)存储器。
3、但是上述方式会导致跨分区的模块从发出访问请求到接收到返回数据的时延过长,进而导致系统性能降低。基于上述问题,相关技术中尚未提供一种合理且有效的处理方法。
技术实现思路
1、有鉴于此,提出了一种gpu的数据访问处理方法、装置及存储介质。
2、第一方面,本技术的实施例提供了一种gpu的数据访问处理装置,所述装置包括:桥接模块和调度模块,所述桥接模块包括请求单元和调度复用单元,所述调度模块包括标量寄存器(slot register,srs);
3、所述桥接模块,用于通过所述请求单元输出第一访问请求,所述第一访问请求用于指示本次访问的跨分区的所述调度模块的所述srs的数据地址;
4、所述桥接模块,还用于通过所述调度复用单元对所述第一访问请求进行命中测试;
5、所述桥接模块,还用于当所述命中测试的结果为第一测试结果时,从所述调度模块的缓存行中读取并返回所述数据地址对应的数据,所述第一测试结果指示本次访问的所述数据地址命中且历史访问的数据地址命中。
6、在一种可能的实现方式中,所述桥接模块还用于:
7、根据本次访问的所述数据地址,从查找表地址队列中获取对应的第一缓存行的索引;
8、根据所述第一缓存行的索引从查找表数据队列中获取对应的数据;
9、将获取的所述数据进行打拍操作后返回,所述打拍操作用于指示将所述数据延迟k个时钟周期后输出,所述k为正整数。
10、在另一种可能的实现方式中,所述桥接模块还用于:
11、当所述命中测试的结果为第二测试结果时,将本次访问的所述数据地址存储在状态队列中,所述状态队列用于指示按照访问顺序依次返回对应的数据;
12、其中,所述第二测试结果指示本次访问的所述数据地址命中且历史访问的数据地址未命中,或者本次访问的所述数据地址未命中。
13、在另一种可能的实现方式中,所述状态队列的深度是根据从输出所述第一访问请求到返回数据的数据周期设置的。
14、在另一种可能的实现方式中,所述状态队列用于存储未命中的数据地址和在第一数据地址未命中的情况下命中的第二数据地址,所述第一数据地址为在访问所述第二数据地址之前访问的数据地址。
15、在另一种可能的实现方式中,所述状态队列的更新条件包括:
16、当所述状态队列中最早的数据地址与返回地址队列中的返回地址相同时,将所述状态队列中的数据进行更新。
17、在另一种可能的实现方式中,所述桥接模块还包括仲裁器,所述桥接模块还用于:
18、在锁标记队列中确定未锁定的第二缓存行,所述锁标记队列指示查找表地址队列中各个缓存行是否锁定;
19、将本次访问的所述数据地址更新在查找表数据队列对应的所述第二缓存行中,并将查找表有效队列中所述第二缓存行对应的有效标识更新为第一标识,所述第一标识用于指示数据无效;
20、将所述第一访问请求发送至所述仲裁器,所述仲裁器用于对多个跨分区的访问请求进行选择。
21、在另一种可能的实现方式中,所述桥接模块还包括先进先出fifo存储器,所述桥接模块还用于:
22、通过所述仲裁器命中第二访问请求,所述第二访问请求为所述多个跨分区的访问请求中的一个访问请求;
23、通过所述fifo存储器将所述第二访问请求指示的数据地址发送至所述调度模块中的所述srs;
24、根据所述srs返回的返回数据的数据地址,从查找表地址队列中获取对应的第三缓存行的索引;
25、根据所述第三缓存行的索引,将所述返回数据更新在查找表数据队列的所述第三缓存行中,并将查找表有效队列中所述第三缓存行对应的有效标识更新为第二标识,所述第二标识用于指示数据有效。
26、在另一种可能的实现方式中,所述桥接模块还包括比较单元,所述桥接模块还用于:
27、通过所述比较单元对所述状态队列、所述查找表地址队列和所述查找表有效队列进行检测;
28、当所述状态队列中最早访问的数据地址与所述查找表地址队列中的数据地址相同,且对应的有效标识指示第四缓存行中的数据有效时,从所述第四缓存行中读取并返回所述数据。
29、在另一种可能的实现方式中,所述装置通过硬件电路实现。
30、第二方面,本技术的实施例提供了一种gpu的数据访问处理方法,所述方法包括:
31、输出第一访问请求,所述第一访问请求用于指示本次访问的跨分区的标量寄存器srs的数据地址;
32、对所述第一访问请求进行命中测试;
33、当所述命中测试的结果为第一测试结果时,从缓存行中读取并返回所述数据地址对应的数据,所述第一测试结果指示本次访问的所述数据地址命中且历史访问的数据地址命中。
34、在一种可能的实现方式中,所述当所述命中测试的结果为第一测试结果时,从缓存行中读取并返回所述数据地址对应的数据,包括:
35、根据本次访问的所述数据地址,从查找表地址队列中获取对应的第一缓存行的索引;
36、根据所述第一缓存行的索引从查找表数据队列中获取对应的数据;
37、将获取的所述数据进行打拍操作后返回,所述打拍操作用于指示将所述数据延迟k个时钟周期后输出,所述k为正整数。
38、在另一种可能的实现方式中,所述方法还包括:
39、当所述命中测试的结果为第二测试结果时,将本次访问的所述数据地址存储在状态队列中,所述状态队列用于指示按照访问顺序依次返回对应的数据;
40、其中,所述第二测试结果指示本次访问的所述数据地址命中且历史访问的数据地址未命中,或者本次访问的所述数据地址未命中。
41、在另一种可能的实现方式中,所述状态队列的深度是根据从输出所述第一访问请求到返回数据的数据周期设置的。
42、在另一种可能的实现方式中,所述状态队列用于存储未命中的数据地址和在第一数据地址未命中的情况下命中的第二数据地址,所述第一数据地址为在访问所述第二数据地址之前访问的数据地址。
43、在另一种可能的实现方式中,所述状态队列的更新条件包括:
44、当所述状态队列中最早的数据地址与返回地址队列中的返回地址相同时,将所述状态队列中的数据进行更新。
45、在另一种可能的实现方式中,所述当所述命中测试的结果为第二测试结果时,将本次访问的所述数据地址存储在状态队列中之后,还包括:
46、在锁标记队列中确定未锁定的第二缓存行,所述锁标记队列指示查找表地址队列中各个缓存行是否锁定;
47、将本次访问的所述数据地址更新在查找表数据队列对应的所述第二缓存行中,并将查找表有效队列中所述第二缓存行对应的有效标识更新为第一标识,所述第一标识用于指示数据无效;
48、将所述第一访问请求发送至仲裁器,所述仲裁器用于对多个跨分区的访问请求进行选择。
49、在另一种可能的实现方式中,所述方法还包括:
50、通过所述仲裁器命中第二访问请求,所述第二访问请求为所述多个跨分区的访问请求中的一个访问请求;
51、将所述第二访问请求指示的数据地址发送至所述srs;
52、根据所述srs返回的返回数据的数据地址,从查找表地址队列中获取对应的第三缓存行的索引;
53、根据所述第三缓存行的索引,将所述返回数据更新在查找表数据队列的所述第三缓存行中,并将查找表有效队列中所述第三缓存行对应的有效标识更新为第二标识,所述第二标识用于指示数据有效。
54、在另一种可能的实现方式中,所述方法还包括:
55、对所述状态队列、所述查找表地址队列和所述查找表有效队列进行检测;
56、当所述状态队列中最早访问的数据地址与所述查找表地址队列中的数据地址相同,且对应的有效标识指示第四缓存行中的数据有效时,从所述第四缓存行中读取并返回所述数据。
57、在另一种可能的实现方式中,所述方法通过硬件电路实现。
58、第三方面,本技术的实施例提供了一种gpu的数据访问处理装置,所述装置包括:
59、处理器;
60、用于存储处理器可执行指令的存储器;
61、其中,所述处理器被配置为执行所述指令时实现第一方面或第一方面的任意一种可能的实现方式提供的方法。
62、第四方面,本技术的实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现第一方面或第一方面的任意一种可能的实现方式提供的方法。
63、第五方面,本技术的实施例提供了一种计算机程序产品,所述计算机程序产品包括计算机可读代码,或者承载有所述计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在计算机设备中运行时,所述计算机设备中的处理器执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
64、综上所述,本技术实施例通过输出第一访问请求,第一访问请求用于指示本次访问的跨分区的srs的数据地址;对第一访问请求进行命中测试;当命中测试的结果为第一测试结果时,从缓存行中读取并返回数据地址对应的数据,第一测试结果指示本次访问的数据地址命中且历史访问的数据地址命中;即提供了一种在gpu内部读缓存(英文:readcache)的硬件电路,使得在本次访问的数据地址命中且历史访问的数据地址命中的情况下,可以直接从缓存行中读取并返回数据,大大缩短了跨分区时访问srs的数据的延时,可以实现在跨分区访问数据的情况下提高gpu的系统性能。