System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及处理器,尤其涉及一种取数指令的执行方法及其装置。
技术介绍
1、处理器存储器访问速度的发展远远跟不上处理器运算速度的发展,日益严峻的访存速度问题严重制约了处理器性能的进一步发展,降低处理器主流水线的取数指令使用延时(load-to-use latency)是提高处理器访存性能的关键。
2、对于指针、链表等数据结构的访问,访存地址本身在物理存储上表现为不连续或者没有规律性。由于指针、链表的这种非规则访存模式,造成很难做访存的优化。
3、指针、链表等数据结构的访问,前一条取数指令取到的结果是后一条取数指令的地址。即前一条取数指令写回到目的寄存器中的值,正好是后一条取数指令经过地址计算部件计算得到的取数指令的虚拟地址。这两条指令存在相关,后面指令必须等待前面指令的结果写回才能够发射执行。
技术实现思路
1、本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
2、为此,本申请的一个目的在于利用指针、链表等数据结构前一条取数指令取到的结果是后一条取数指令的地址的特性,提出一种取数指令的执行方法,达到降低处理器主流水线取数指令使用延时的目的。
3、本申请的第二个目的在于提出一种取数指令的执行装置。
4、本申请的第三个目的在于提出一种电子设备。
5、本申请的第四个目的在于提出一种非瞬时计算机可读存储介质。
6、本申请的第五个目的在于提出一种计算机程序产品。
7、为达上述目的,本申请第一
8、根据本申请的一个实施例,所述确定所述第一取数结果是否为第二取数指令的虚拟地址,包括:在所述第一取数指令携带预设标识的情况下,确定所述第一取数结果为所述第二取数指令的虚拟地址;或者,在所述第一取数指令不携带所述预设标识的情况下,确定所述第一取数结果不为所述第二取数指令的虚拟地址。
9、根据本申请的一个实施例,还包括:在程序编译阶段,若确定所述第一取数指令为取所述第二取数指令的地址的取数指令,则将所述预设标识添加至所述第一取数指令中。
10、根据本申请的一个实施例,所述确定所述第一取数结果是否为第二取数指令的虚拟地址,包括:在所述第一取数指令的程序计数器与历史表中的任一程序计数器相同的情况下,确定所述第一取数结果为所述第二取数指令的虚拟地址;或者,在所述第一取数指令的程序计数器与所述历史表中的每个程序计数器均不相同的情况下,确定所述第一取数结果不为所述第二取数指令的虚拟地址;其中,所述历史表中存储第一历史取数指令的程序计数器,所述第一历史取数指令的取数结果为第二历史取数指令的虚拟地址,所述第二历史取数指令为所述第一历史取数指令的后一条取数指令。
11、根据本申请的一个实施例,在所述确定所述第一取数结果是否为第二取数指令的虚拟地址之前,还包括:在所述第一历史取数指令的取数结果为所述第二历史取数指令的虚拟地址的情况下,对所述第一历史取数指令的程序计数器进行记录,以生成所述历史表。
12、根据本申请的一个实施例,处理器的访存系统中包括预测部件,所述预测部件位于所述数据高速缓存之后,所述确定所述第一取数结果是否为第二取数指令的虚拟地址,包括:
13、所述预测部件在确定所述第一取数指令的程序计数器与所述历史表中的任一程序计数器相同的情况下,预测所述第一取数结果为所述第二取数指令的虚拟地址;或者,所述预测部件在确定所述第一取数指令的程序计数器与所述历史表中的每个程序计数器均不相同的情况下,预测所述第一取数结果不为所述第二取数指令的虚拟地址。
14、根据本申请的一个实施例,所述获取第一取数指令的第一取数结果包括:访存指令发射队列发送所述第一取数指令;定点寄存器堆和浮点寄存器堆提供所述第一取数指令需要的源操作数;地址生成部件根据所述源操作数,计算得到所述第一取数指令的虚拟地址;数据转译后备缓冲存储器,将所述第一取数指令的虚拟地址翻译成所述第一取数指令对应的第一物理地址;从所述第一物理地址中提取出所述第一取数指令对应的第一待比较标签;标签比较部件将所述第一待比较标签与所述数据高速缓存中每路缓存对应的标签进行比较,确定所述第一取数指令对应的第一命中路信息;基于所述第一命中路信息从数据高速缓存的数据存储阵列中,读取所述第一取数结果。
15、根据本申请的一个实施例,所述基于所述第一取数结果访问数据高速缓存,以获取所述第二取数指令的第二取数结果,包括:所述数据转译后备缓冲存储器,将所述第一取数结果翻译成所述第二取数指令对应的第二物理地址;从所述第二物理地址中提取出所述第二取数指令对应的第二待比较标签;所述标签比较部件将所述第二待比较标签与所述数据高速缓存中每路缓存对应的标签进行比较,确定所述第二取数指令对应的第二命中路信息;基于所述第二命中路信息从所述数据高速缓存的数据存储阵列中,读取所述第二取数结果。
16、为达上述目的,本申请第二方面实施例提出了一种取数指令的执行装置,包括:第一获取模块,用于获取第一取数指令的第一取数结果;确定模块,用于确定所述第一取数结果是否为第二取数指令的虚拟地址,其中,所述第二取数指令为所述第一取数指令的后一条取数指令;第二获取模块,用于在所述第一取数结果为所述第二取数指令的虚拟地址的情况下,基于所述第一取数结果访问数据高速缓存,以获取所述第二取数指令的第二取数结果。
17、根据本申请的一个实施例,确定模块,用于:在所述第一取数指令携带预设标识的情况下,确定所述第一取数结果为所述第二取数指令的虚拟地址;或者,在所述第一取数指令不携带所述预设标识的情况下,确定所述第一取数结果不为所述第二取数指令的虚拟地址。
18、根据本申请的一个实施例,还包括标识模块,用于:在程序编译阶段,若确定所述第一取数指令为取所述第二取数指令的地址的取数指令,则将所述预设标识添加至所述第一取数指令中。
19、根据本申请的一个实施例,确定模块,用于:在所述第一取数指令的程序计数器与历史表中的任一程序计数器相同的情况下,确定所述第一取数结果为所述第二取数指令的虚拟地址;或者,在所述第一取数指令的程序计数器与所述历史表中的每个程序计数器均不相同的情况下,确定所述第一取数结果不为所述第二取数指令的虚拟地址;其中,所述历史表中存储第一历史取数指令的程序计数器,所述第一历史取数指令的取数结果为第二历史取数指令的虚拟地址,所述第二历史取数指令为所述第一历史取数指令的后一条取数指令。
20、根据本申请的一个实施例,还包括生成模块,用于在所述第一历史取数指令的取数结果为所述第二历史取数指令的虚拟地址的情况下,本文档来自技高网...
【技术保护点】
1.一种取数指令的执行方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述确定所述第一取数结果是否为第二取数指令的虚拟地址,包括:
3.根据权利要求2所述的方法,其特征在于,还包括:
4.根据权利要求1所述的方法,其特征在于,所述确定所述第一取数结果是否为第二取数指令的虚拟地址,包括:
5.根据权利要求4所述的方法,其特征在于,在所述确定所述第一取数结果是否为第二取数指令的虚拟地址之前,还包括:
6.根据权利要求5所述的方法,其特征在于,处理器的访存系统中包括预测部件,所述预测部件位于所述数据高速缓存之后,所述确定所述第一取数结果是否为第二取数指令的虚拟地址,包括:
7.根据权利要求1所述的方法,其特征在于,所述获取第一取数指令的第一取数结果,包括:
8.根据权利要求7所述的方法,其特征在于,所述基于所述第一取数结果访问数据高速缓存,以获取所述第二取数指令的第二取数结果,包括:
9.一种取数指令的执行装置,其特征在于,包括:
10.一种电子设备,包括:<
...【技术特征摘要】
1.一种取数指令的执行方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述确定所述第一取数结果是否为第二取数指令的虚拟地址,包括:
3.根据权利要求2所述的方法,其特征在于,还包括:
4.根据权利要求1所述的方法,其特征在于,所述确定所述第一取数结果是否为第二取数指令的虚拟地址,包括:
5.根据权利要求4所述的方法,其特征在于,在所述确定所述第一取数结果是否为第二取数指令的虚拟地址之前,还包括:
6.根据权利要求5所述的方法,其特征在于,处理器的访存系统中包括预测部件,所述预测部件位于...
【专利技术属性】
技术研发人员:李祖松,郇丹丹,
申请(专利权)人:北京微核芯科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。