本技术涉及数据处理,具体而言,涉及一种数据访存处理方法和装置、电子设备及计算机程序产品。
背景技术:
1、随着云计算的普及和人工智能(artificial intel l igence,ai)技术的发展,无论是在移动端、桌面端还是服务器端,使用协处理器配合中央处理器的设计模式逐渐成为主流。此类设计方法在保证通用性的基础上,兼顾了对于特定运算加速能力,迎合了计算系统对于具有特定运算加速的通用处理器芯片的需求。计算系统通常包括一个或多个中央处理单元(central processing unit,cpu)处理器,其执行系统中的大部分计算,中央处理器通常是针对通用计算优化的通用处理器。在需要对某些特定运算进行优化时,计算系统需要针对某些特定任务优化的协处理器进行补充,协处理器可以比中央处理器性能更高和更高效能地执行特定任务。在工作时,中央处理器将协处理器需要执行的扩展指令发送到协处理器,对于需要访问内存的协处理器扩展指令,由协处理器独立进行内存访问。
2、虽然此类设计可以带来更高的性能和能效,但协处理器的存在也会引入问题。协处理器和中央处理器都有访问内存操作,如果协处理器和中央处理器都访问相同的内存地址,则需要一种排序机制保证内存顺序。在现有技术往往通过借用中央处理器的内存访问单元完成协处理器的内存访问操作,但是这种方式无法让中央处理器及协处理器同时进行内存访问,严重影响了对内存访问的效率。
3、针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
1、本技术实施例提供了一种数据访存处理方法和装置、电子设备及计算机程序产品,以至少解决相关技术中通过借用中央处理器的内存访问单元完成协处理器的内存访问操作,无法让中央处理器及协处理器同时进行内存访问,进而导致对内存访问的效率比较低的技术问题。
2、根据本技术实施例的一个方面,提供了一种数据访存处理方法,包括:将中央处理器对内存的目标加载指令下发至加载队列和将所述中央处理器对内存的目标存储指令下发至存储队列;将协处理器对内存的目标访存指令下发至所述存储队列和在内存顺序管理表中分配所述目标访存指令对应的地址表项,以通过所述内存顺序管理表对所述目标访存指令的执行进度进行追踪;依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果。
3、进一步地,在内存顺序管理表中分配所述目标访存指令对应的地址表项包括:确定为所述目标访存指令分配所述地址表项的目标时机;若所述目标时机为在将协处理器对内存的目标访存指令下发至所述存储队列时创建所述地址表项,则判断所述内存顺序管理表是否满足分配地址表项的预设条件;在所述内存顺序管理表满足分配地址表项的预设条件的情况下,在所述内存顺序管理表中分配所述目标访存指令对应的第一状态的地址表项,其中,所述第一状态用于表征所述地址表项对应的访存指令存储在所述存储队列中,当所述目标访存指令离开所述存储队列时,所述目标访存指令对应的地址表项的状态更新为第二状态。
4、进一步地,在所述目标时机为在将协处理器对内存的目标访存指令下发至所述存储队列时创建所述地址表项时,所述方法还包括:在所述目标访存指令下发至所述存储队列时,发起数据预取指令;依据所述数据预取指令,将所述目标访存指令待访问的访问地址对应的目标缓存行加载至目标系统中的目标缓存中,其中,所述协处理器基于所述目标缓存行执行所述目标访存指令。
5、进一步地,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:若当前待执行的指令为所述中央处理器的第一加载指令,则判断所述第一加载指令对应的第一内存地址是否满足第一预设地址条件中至少一个,其中,所述第一预设地址条件至少包括:所述第一内存地址命中所述存储队列中的中央处理器的存储指令和所述第一内存地址命中所述内存顺序管理表中的地址表项;若所述第一内存地址命中所述存储队列中的中央处理器的第一存储指令,则在所述第一存储指令离开所述存储队列时,通过所述中央处理器执行所述第一加载指令,得到所述执行结果;若所述第一内存地址命中所述内存顺序管理表中的第一地址表项,则在所述第一地址表项对应的触发时间晚于所述第一加载指令的触发时间的情况下,通过所述中央处理器执行所述第一加载指令,得到所述执行结果。
6、进一步地,若所述第一内存地址命中所述内存顺序管理表中的第一地址表项,所述方法还包括:在所述第一地址表项对应的触发时间早于所述第一加载指令的触发时间的情况下,将所述第一地址表项对应的第一表项id写入所述第一加载指令,并将第一加载指令设置为等待状态;在接收到所述内存顺序管理表发送的所述第一表项id的表项解分配指令的情况下,对所述第一加载指令进行唤醒,以通过所述中央处理器执行所述第一加载指令,得到所述执行结果。
7、进一步地,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:若当前待执行的指令为所述中央处理器的第一存储指令,则判断所述第一存储指令对应的第二内存地址是否命中所述内存顺序管理表中的第二地址表项;若所述第二内存地址命中所述第二地址表项且所述第二地址表项的状态为所述第二状态,则阻塞所述第一存储指令和锁定所述存储队列;在接收到所述内存顺序管理表发送的所述第二地址表项的表项解分配指令的情况下,解锁所述存储队列,并通过所述中央处理器执行所述第一存储指令,得到所述执行结果。
8、进一步地,在判断所述第一存储指令对应的第二内存地址是否命中所述内存顺序管理表中的第二地址表项之后,所述方法还包括:若所述第二内存地址命中所述第二地址表项且所述第二地址表项的状态为所述第一状态,则通过所述中央处理器执行所述第一存储指令,得到所述执行结果。
9、进一步地,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:若当前待执行的指令为所述协处理器的第一访存指令,则判断所述目标系统的当前状态是否满足第一预设状态条件,其中,所述第一预设状态条件至少包括:所述目标系统中触发时间早于所述第一访存指令的存储指令已执行完毕以及所述协处理器处于能够接受访存指令的状态;若所述目标系统的当前状态满足所述第一预设状态条件,则将所述第一访存指令和所述第一访存指令对应的第三地址表项的第二表项id进行打包处理,得到第一打包文件,并将所述第一打包文件发送至所述协处理器;通过所述协处理器基于所述第一打包文件执行所述第一访存指令,得到所述执行结果。
10、进一步地,在所述内存顺序管理表满足分配地址表项的预设条件的情况下,在所述内存顺序管理表中分配所述目标访存指令对应的第一状态的地址表项包括:获取所述目标访存指令对应的第一协处理器id,其中,所述第一协处理器id在将所述目标访存指令下发至所述存储队列之前生成;依据所述内存顺序管理表中已有的地址表项对应的第二协处理器id,判断是否允许在所述内存顺序管理表中分配所述第一协处理器id对应的地址表项;在所述内存顺序管理表中分配所述目标访存指令对应的第一状态的地址表项。
11、进一步地,在确定为所述目标访存指令分配所述地址表项的目标时机之后,所述方法还包括:若所述目标时机为所述目标访存指令为待执行的指令时创建所述地址表项,则判断目标系统的当前状态满足第二预设状态条件,其中,所述第二预设状态条件至少包括:所述目标系统中触发时间早于所述目标访存指令的存储指令已执行完毕以及所述协处理器处于能够接受所述目标访存指令的状态;在目标系统的状态满足第二预设状态条件的情况下,则在所述内存顺序管理表中分配所述目标访存指令对应的地址表项。
12、进一步地,在所述内存顺序管理表中分配所述目标访存指令对应的地址表项包括:判断所述目标访存指令对应的内存地址是否命中所述内存顺序管理表中的地址表项;若所述目标访存指令对应的内存地址命中所述内存顺序管理表中的第四地址表项,则判断所述第四地址表项对应的第一计数器数值是否小于第一预设阈值;若所述第一计数器数值小于所述第一预设阈值,则将所述第四地址表项作为所述目标访存指令的地址表项,并对所述第一计数器数值进行更新处理。
13、进一步地,在判断所述第四地址表项对应的第一计数器数值是否小于第一预设阈值之后,所述方法还包括:若所述第一计数器数值等于所述第一预设阈值,则锁定所述存储队列;检测所述第四地址表项对应的第二访存指令是否执行完成,若所述第二访存指令已执行完成,则对所述第一计数器数值进行减值处理,并解锁所述存储队列;在所述第一计数器数值小于所述第一预设阈值,则将所述第四地址表项作为所述目标访存指令的地址表项,并对所述第一计数器数值进行更新处理。
14、进一步地,在判断所述目标访存指令对应的内存地址是否命中所述内存顺序管理表中的地址表项之后,所述方法还包括:若所述目标访存指令对应的内存地址未命中所述内存顺序管理表中的地址表项,则判断所述内存顺序管理表中的地址表项的数量是否小于第二预设阈值;若所述内存顺序管理表中的地址表项的数量小于第二预设阈值,则在所述内存顺序管理表中分配所述目标访存指令对应的地址表项。
15、进一步地,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:若当前待执行的指令为所述中央处理器的第二加载指令,则判断所述第二加载指令对应的第三内存地址是否满足第二预设地址条件中至少一个,其中,所述第二预设地址条件至少包括:所述第三内存地址命中所述存储队列中的存储指令和所述第三内存地址命中所述内存顺序管理表中的地址表项;若所述第三内存地址命中所述存储队列中的存储指令和/或命中所述第三内存地址命中所述内存顺序管理表中的地址表项,则在所述存储队列中的存储指令离开所述存储队列时,和/或,存在所述内存顺序管理表中的地址表项对应的表项解分配指令时,通过所述中央处理器执行所述第二加载指令,得到所述执行结果。
16、进一步地,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:若当前待执行的指令为所述中央处理器的第二存储指令,则判断所述第二存储指令对应的第四内存地址是否命中内存顺序管理表中的地址表项;若所述第四内存地址命中所述内存顺序管理表中的第四地址表项,则阻塞所述第二存储指令和锁定所述存储队列;在接收到所述内存顺序管理表发送的所述第四地址表项的表项解分配指令的情况下,解锁所述存储队列,并通过所述中央处理器执行所述第二存储指令,得到所述执行结果。
17、进一步地,在所述内存顺序管理表中分配所述目标访存指令对应的地址表项之后,所述方法还包括:检测所述目标访存指令是否已执行完成;若所述目标访存指令已执行完成,则返回所述目标访存指令对应的第三表项id至所述内存顺序管理表,并依据所述第三表项id对所述目标访存指令对应的第二计数器数量更新处理;判断所述第二计数器数量是否为预设数值,若所述第二计数器数量为所述预设数值,则触发所述目标访存指令对应的表项解分配指令。
18、根据本技术实施例的另一方面,还提供了一种数据访存处理装置,包括:第一下发单元,用于将中央处理器对内存的目标加载指令下发至加载队列和将所述中央处理器对内存的目标存储指令下发至存储队列;第二下发单元,用于将协处理器对内存的目标访存指令下发至所述存储队列和在内存顺序管理表中分配所述目标访存指令对应的地址表项,以通过所述内存顺序管理表对所述目标访存指令的执行进度进行追踪;第一执行单元,用于依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果。
19、进一步地,第二下发单元包括:确定子单元,用于确定为所述目标访存指令分配所述地址表项的目标时机;下发子单元,用于若所述目标时机为在将协处理器对内存的目标访存指令下发至所述存储队列时创建所述地址表项,则判断所述内存顺序管理表是否满足分配地址表项的预设条件;分配子单元,用于在所述内存顺序管理表满足分配地址表项的预设条件的情况下,在所述内存顺序管理表中分配所述目标访存指令对应的第一状态的地址表项,其中,所述第一状态用于表征所述地址表项对应的访存指令存储在所述存储队列中,当所述目标访存指令离开所述存储队列时,所述目标访存指令对应的地址表项的状态更新为第二状态。
20、进一步地,所述装置还包括:发起单元,用于在所述目标时机为在将协处理器对内存的目标访存指令下发至所述存储队列时创建所述地址表项时,在所述目标访存指令下发至所述存储队列时,发起数据预取指令;加载单元,用于依据所述数据预取指令,将所述目标访存指令待访问的访问地址对应的目标缓存行加载至目标系统中的目标缓存中,其中,所述协处理器基于所述目标缓存行执行所述目标访存指令。
21、进一步地,第一执行单元包括:第一判断子单元,用于若当前待执行的指令为所述中央处理器的第一加载指令,则判断所述第一加载指令对应的第一内存地址是否满足第一预设地址条件中至少一个,其中,所述第一预设地址条件至少包括:所述第一内存地址命中所述存储队列中的中央处理器的存储指令和所述第一内存地址命中所述内存顺序管理表中的地址表项;第一执行子单元,用于若所述第一内存地址命中所述存储队列中的中央处理器的第一存储指令,则在所述第一存储指令离开所述存储队列时,通过所述中央处理器执行所述第一加载指令,得到所述执行结果;第二执行子单元,用于若所述第一内存地址命中所述内存顺序管理表中的第一地址表项,则在所述第一地址表项对应的触发时间晚于所述第一加载指令的触发时间的情况下,通过所述中央处理器执行所述第一加载指令,得到所述执行结果。
22、进一步地,所述装置还包括:写入单元,用于若所述第一内存地址命中所述内存顺序管理表中的第一地址表项,在所述第一地址表项对应的触发时间早于所述第一加载指令的触发时间的情况下,将所述第一地址表项对应的第一表项id写入所述第一加载指令,并将第一加载指令设置为等待状态;唤醒单元,用于在接收到所述内存顺序管理表发送的所述第一表项id的表项解分配指令的情况下,对所述第一加载指令进行唤醒,以通过所述中央处理器执行所述第一加载指令,得到所述执行结果。
23、进一步地,第一执行单元包括:第二判断子单元,用于若当前待执行的指令为所述中央处理器的第一存储指令,则判断所述第一存储指令对应的第二内存地址是否命中所述内存顺序管理表中的第二地址表项;第一阻塞子单元,用于若所述第二内存地址命中所述第二地址表项且所述第二地址表项的状态为所述第二状态,则阻塞所述第一存储指令和锁定所述存储队列;第一解锁子单元,用于在接收到所述内存顺序管理表发送的所述第二地址表项的表项解分配指令的情况下,解锁所述存储队列,并通过所述中央处理器执行所述第一存储指令,得到所述执行结果。
24、进一步地,所述装置还包括:第二执行单元,用于在判断所述第一存储指令对应的第二内存地址是否命中所述内存顺序管理表中的第二地址表项之后,若所述第二内存地址命中所述第二地址表项且所述第二地址表项的状态为所述第一状态,则通过所述中央处理器执行所述第一存储指令,得到所述执行结果。
25、进一步地,第一执行单元包括:第三判断子单元,用于若当前待执行的指令为所述协处理器的第一访存指令,则判断所述目标系统的当前状态是否满足第一预设状态条件,其中,所述第一预设状态条件至少包括:所述目标系统中触发时间早于所述第一访存指令的存储指令已执行完毕以及所述协处理器处于能够接受访存指令的状态;处理子单元,用于若所述目标系统的当前状态满足所述第一预设状态条件,则将所述第一访存指令和所述第一访存指令对应的第三地址表项的第二表项id进行打包处理,得到第一打包文件,并将所述第一打包文件发送至所述协处理器;第三执行子单元,用于通过所述协处理器基于所述第一打包文件执行所述第一访存指令,得到所述执行结果。
26、进一步地,分配子单元包括:获取模块,用于获取所述目标访存指令对应的第一协处理器id,其中,所述第一协处理器id在将所述目标访存指令下发至所述存储队列之前生成;判断模块,用于依据所述内存顺序管理表中已有的地址表项对应的第二协处理器id,判断是否允许在所述内存顺序管理表中分配所述第一协处理器id对应的地址表项;分配模块,用于在所述内存顺序管理表中分配所述目标访存指令对应的第一状态的地址表项。
27、进一步地,所述装置还包括:第一判断单元,用于在确定为所述目标访存指令分配所述地址表项的目标时机之后,若所述目标时机为所述目标访存指令为待执行的指令时创建所述地址表项,则判断目标系统的当前状态满足第二预设状态条件,其中,所述第二预设状态条件至少包括:所述目标系统中触发时间早于所述目标访存指令的存储指令已执行完毕以及所述协处理器处于能够接受所述目标访存指令的状态;第一分配单元,用于在目标系统的状态满足第二预设状态条件的情况下,则在所述内存顺序管理表中分配所述目标访存指令对应的地址表项。
28、进一步地,分配单元包括:第四判断子单元,用于判断所述目标访存指令对应的内存地址是否命中所述内存顺序管理表中的地址表项;第五判断子单元,用于若所述目标访存指令对应的内存地址命中所述内存顺序管理表中的第四地址表项,则判断所述第四地址表项对应的第一计数器数值是否小于第一预设阈值;确定子单元,用于若所述第一计数器数值小于所述第一预设阈值,则将所述第四地址表项作为所述目标访存指令的地址表项,并对所述第一计数器数值进行更新处理。
29、进一步地,所述装置还包括:锁定单元,用于在判断所述第四地址表项对应的第一计数器数值是否小于第一预设阈值之后,若所述第一计数器数值等于所述第一预设阈值,则锁定所述存储队列;第一检测单元,用于检测所述第四地址表项对应的第二访存指令是否执行完成,若所述第二访存指令已执行完成,则对所述第一计数器数值进行减值处理,并解锁所述存储队列;确定单元,用于在所述第一计数器数值小于所述第一预设阈值,则将所述第四地址表项作为所述目标访存指令的地址表项,并对所述第一计数器数值进行更新处理。
30、进一步地,所述装置还包括:第二判断单元,用于在判断所述目标访存指令对应的内存地址是否命中所述内存顺序管理表中的地址表项之后,若所述目标访存指令对应的内存地址未命中所述内存顺序管理表中的地址表项,则判断所述内存顺序管理表中的地址表项的数量是否小于第二预设阈值;第二分配单元,用于若所述内存顺序管理表中的地址表项的数量小于第二预设阈值,则在所述内存顺序管理表中分配所述目标访存指令对应的地址表项。
31、进一步地,第一执行单元包括:第六判断子单元,用于若当前待执行的指令为所述中央处理器的第二加载指令,则判断所述第二加载指令对应的第三内存地址是否满足第二预设地址条件中至少一个,其中,所述第二预设地址条件至少包括:所述第三内存地址命中所述存储队列中的存储指令和所述第三内存地址命中所述内存顺序管理表中的地址表项;第四执行子单元,用于若所述第三内存地址命中所述存储队列中的存储指令和/或命中所述第三内存地址命中所述内存顺序管理表中的地址表项,则在所述存储队列中的存储指令离开所述存储队列时,和/或,存在所述内存顺序管理表中的地址表项对应的表项解分配指令时,通过所述中央处理器执行所述第二加载指令,得到所述执行结果。
32、进一步地,第一执行单元包括:第七判断子单元,用于若当前待执行的指令为所述中央处理器的第二存储指令,则判断所述第二存储指令对应的第四内存地址是否命中内存顺序管理表中的地址表项;第二阻塞子单元,用于若所述第四内存地址命中所述内存顺序管理表中的第四地址表项,则阻塞所述第二存储指令和锁定所述存储队列;第二解锁子单元,用于在接收到所述内存顺序管理表发送的所述第四地址表项的表项解分配指令的情况下,解锁所述存储队列,并通过所述中央处理器执行所述第二存储指令,得到所述执行结果。
33、进一步地,所述装置还包括:第二检测单元,用于在所述内存顺序管理表中分配所述目标访存指令对应的地址表项之后,检测所述目标访存指令是否已执行完成;返回单元,用于若所述目标访存指令已执行完成,则返回所述目标访存指令对应的第三表项id至所述内存顺序管理表,并依据所述第三表项id对所述目标访存指令对应的第二计数器数量更新处理;第三判断单元,用于判断所述第二计数器数量是否为预设数值,若所述第二计数器数量为所述预设数值,则触发所述目标访存指令对应的表项解分配指令。
34、根据本发明实施例的另一方面,还提供了一种电子设备,包括存储器,存储有可执行程序;处理器,用于运行所述程序,其中,所述程序运行时执行上述任意一项所述的数据访存处理方法。
35、根据本发明实施例的另一方面,还提供了计算机程序产品,所述计算机程序产品包括存储的计算机程序,在所述计算机程序由处理器运行时,实现上述任意一项中任意一项所述的数据访存处理方法。
36、在本技术实施例中,采用以下步骤:将中央处理器对内存的目标加载指令下发至加载队列和将中央处理器对内存的目标存储指令下发至存储队列;将协处理器对内存的目标访存指令下发至存储队列和在内存顺序管理表中分配目标访存指令对应的地址表项,以通过内存顺序管理表对目标访存指令的执行进度进行追踪;依据内存顺序管理表执行加载队列或存储队列中的指令,得到执行结果,解决了相关技术中通过借用中央处理器的内存访问单元完成协处理器的内存访问操作,无法让中央处理器及协处理器同时进行内存访问,进而导致对内存访问的效率比较低的技术问题。在本方案中,在内存顺序管理表中分配协处理器对内存的目标访存指令对应的地址表项,内存顺序管理表对可以追踪目标访存指令的执行进度,通过内存顺序管理表实现了对中央处理器和协处理器之间访存一致性的管理,保证了中央处理器和协处理器可以独立进行内存访问,使得内存访问具有较高的运行速度,进而达到了提高对内存访问的效率的效果。
1.一种数据访存处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在内存顺序管理表中分配所述目标访存指令对应的地址表项包括:
3.根据权利要求2所述的方法,其特征在于,在所述目标时机为在将协处理器对内存的目标访存指令下发至所述存储队列时创建所述地址表项时,所述方法还包括:
4.根据权利要求2所述的方法,其特征在于,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:
5.根据权利要求4所述的方法,其特征在于,若所述第一内存地址命中所述内存顺序管理表中的第一地址表项,所述方法还包括:
6.根据权利要求2所述的方法,其特征在于,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:
7.根据权利要求6所述的方法,其特征在于,在判断所述第一存储指令对应的第二内存地址是否命中所述内存顺序管理表中的第二地址表项之后,所述方法还包括:
8.根据权利要求2所述的方法,其特征在于,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:
9.根据权利要求2所述的方法,其特征在于,在所述内存顺序管理表满足分配地址表项的预设条件的情况下,在所述内存顺序管理表中分配所述目标访存指令对应的第一状态的地址表项包括:
10.根据权利要求2所述的方法,其特征在于,在确定为所述目标访存指令分配所述地址表项的目标时机之后,所述方法还包括:
11.根据权利要求10所述的方法,其特征在于,在所述内存顺序管理表中分配所述目标访存指令对应的地址表项包括:
12.根据权利要求11所述的方法,其特征在于,在判断所述第四地址表项对应的第一计数器数值是否小于第一预设阈值之后,所述方法还包括:
13.根据权利要求11所述的方法,其特征在于,在判断所述目标访存指令对应的内存地址是否命中所述内存顺序管理表中的地址表项之后,所述方法还包括:
14.根据权利要求2所述的方法,其特征在于,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:
15.根据权利要求2所述的方法,其特征在于,依据所述内存顺序管理表执行所述加载队列或所述存储队列中的指令,得到执行结果包括:
16.根据权利要求13所述的方法,其特征在于,在所述内存顺序管理表中分配所述目标访存指令对应的地址表项之后,所述方法还包括:
17.一种数据访存处理装置,其特征在于,包括:
18.一种电子设备,其特征在于,包括:
19.一种计算机程序产品,其特征在于,所述计算机程序产品包括存储的计算机程序,在所述计算机程序由处理器运行时,实现权利要求1至16中任意一项所述的数据访存处理方法。