一种处理器及其取指方法技术

技术编号:39824277 阅读:4 留言:0更新日期:2023-12-29 15:59
本发明专利技术提供一种处理器,包括:一个主机取指部件,用于读取所述处理器指令;一个客户机取指部件,用于读取二进制翻译后的目标指令;以及使能部件,以用于使能所述主机取指部件或者客户机取指部件;其中,所述客户机取指部件包括:一个地址转换表,用于实现源指令

【技术实现步骤摘要】
一种处理器及其取指方法


[0001]本专利技术涉及处理器领域


技术介绍

[0002]处理器能够高效地实现某个特定的指令系统,如
X86、ARM、MIPS
或者
RISCV


现有的处理器可以高效地执行设计指定的特定指令系统的代码,如果还需要执行其他指令系统的代码,通常采用软件的二进制翻译技术

[0003]不同指令系统代码二进制翻译面临的一个最大问题是翻译后的代码膨胀,即翻译后的目标指令代码比源指令代码尺寸大,导致目标指令
PC(TPC)
与源指令
PC(SPC)
不再保持简单的对应关系,无法高效地根据
SPC
直接计算出
TPC
,进而所有的分支转移和跳转指令都需要特殊处理

取指过程中,经常要返回二进制翻译程序进行地址转换,计算下一个
TPC
,导致二进制翻译效率低下

目前大部分二进制翻译器都采用软件查找进行地址转换,即在内存中维护一个很大的地址转换表,通过软件查找该地址转换表来实现
SPC

TPC
的转换

软件查找方法频繁进出二进制翻译模块,产生上下文环境切换保存的开销,以及对翻译后的基本块代码踪迹进行衔接的开销

为了加快地址转换,有些研究提出了硬件查找的方法,都是设置一个硬件的地址转换表,通过硬件查表指令来实现
SPC

TPC
的转换

硬件查找需要在翻译后的代码中增加查找指令,既增加翻译后的目标指令数量,又要求后续的跳转指令等待查找指令的查找结果

如果分支指令也采用硬件查找进行优化,则需要将其转换为间接跳转指令,不仅增加翻译后的目标指令数量,而且影响性能


技术实现思路

[0004]因此,本专利技术的目的在于克服上述现有技术的缺陷,提供一种处理器及其取指方法

[0005]根据本专利技术第一方面,提供一种处理器,包括:
[0006]一个主机取指部件,用于读取所述处理器指令;
[0007]一个客户机取指部件,用于读取二进制翻译后的目标指令;以及
[0008]使能部件,以用于使能所述主机取指部件或者客户机取指部件;
[0009]其中,所述客户机取指部件包括:
[0010]一个地址转换表,用于实现源指令
PC
到目标指令
PC
的地址转换;
[0011]一组基址寄存器,用于保存不同进程的二进制翻译后的目标指令代码缓存的指令行的起始地址;以及
[0012]一个取指地址寄存器,用于保存当前要访问的目标指令
PC
地址

[0013]根据本专利技术的一个实施例,所述主机取指部件和所述客户机取指部件共享一个一级指令高速缓存或各自有独立的一级指令高速缓存

[0014]根据本专利技术的一个实施例,所述地址转换表至少包括:有效性标识

进程标识,源指令
PC
和目标指令
PC。
[0015]根据本专利技术的一个实施例,所述异构客户机支持用户级二进制翻译的特殊的用户态,或是支持系统级二进制翻译的非根的系统态

[0016]根据本专利技术的一个实施例,所述使能部件分别设置在所述主机取指部件和所述客户机取指部件内,用于产生使能信号,以使能或关闭所述主机取指部件和所述客户机取指部件

[0017]根据本专利技术的一个实施例,所述地址转换表的组织方式为直接映射

多路组相联

全相联或
Hash


[0018]根据本专利技术的一个实施例,所述客户机取指部件的一级指令高速缓存行的最后一个字节用来指示指令的有效性

[0019]根据本专利技术的一个实施例,所述客户机取指部件的一级指令高速缓存行的第
28
字节保留为偏移量的扩展字节

[0020]根据本专利技术的第二方面,所述处理器还包括以下指令:
[0021]genter spc
:进入异构客户机状态,从
SPC
处开始执行;
[0022]gexit
:结束二进制翻译,退出异构客户机状态;
[0023]gret
:返回异构客户机状态继续执行;
[0024]gpcache index

spc
:根据当前进程号和源指令
PC
,查找地址转换表的可用表项
index

[0025]gwrcache index

spc

mtpc
:根据可用表项和当前进程号

源指令
PC、
目标指令
PC
,填写指定的地址转换表表项
index
并设置为有效;
[0026]gdelcache index
根据
index
无效指定的地址转换表表项

[0027]根据本专利技术的第三方面,还提供一种处理器的取指方法,在所述处理器处于异构客户机状态时,所述取指方法包括以下步骤:
[0028]S1:
客户机取指部件根据源指令
PC
访问地址转换表;
[0029]S2:
在地址转换表命中时,客户机取指部件根据所述地址转换表以及基址寄存器更新取指地址寄存器;
[0030]S3:
客户机取指部件根据取指地址寄存器的值取指

[0031]根据本专利技术的一个实施例,所述步骤
S2
还包括:
[0032]在地址转换表不命中时,客户机取指部件产生一个例外或用户态中断,执行二进制翻译或者查找内存的地址转换表,更新地址转换表和取指地址寄存器

[0033]本专利技术的优点在于:通过增加少量的硬件支持,可以在取指过程自动实现地址转换

与硬件查找相比,不增加额外的查找指令,减少了翻译后的目标指令数量,同时性能没有任何损失

本方案可以提高执行其他指令系统代码的效率,解决了跨指令系统的软件高效兼容问题

附图说明
[0034]以下参照附图对本专利技术实施例作进一步说明,其中:
[0035]图1为本专利技术双取指部件共享一级指令高速缓存的结构示意图;
[0036]图2为本专利技术双取指部件各自独有一级指令高速缓存的结构示意图;
[0037]图3为本专利技术主机取指部件对一级指令高速缓存行的字段示意图;
[0038]图4为本专利技术客户机取指部件对一级指令高速缓存行的字段示意图;
[0039本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种处理器,其特征在于,包括:一个主机取指部件,用于读取所述处理器指令;一个客户机取指部件,用于读取二进制翻译后的目标指令;以及使能部件,以用于使能所述主机取指部件或者客户机取指部件;其中,所述客户机取指部件包括:一个地址转换表,用于实现源指令
PC
到目标指令
PC
的地址转换;一组基址寄存器,用于保存不同进程的二进制翻译后的目标指令代码缓存的指令行的起始地址;以及一个取指地址寄存器,用于保存当前要访问的目标指令
PC
地址
。2.
根据权利要求1所述的处理器,其特征在于,所述主机取指部件和所述客户机取指部件共享一个一级指令高速缓存或各自有独立的一级指令高速缓存
。3.
根据权利要求2所述的处理器,其特征在于,所述地址转换表至少包括:有效性标识

进程标识,源指令
PC
和目标指令
PC。4.
根据权利要求3所述的处理器,其特征在于,所述异构客户机支持用户级二进制翻译的特殊的用户态,或是支持系统级二进制翻译的非根的系统态
。5.
根据权利要求1所述的处理器,其特征在于,所述使能部件分别设置在所述主机取指部件和所述客户机取指部件内,用于产生使能信号,以使能或关闭所述主机取指部件和所述客户机取指部件
。6.
根据权利要求1‑5任一所述的处理器,其特征在于,所述地址转换表的组织方式为直接映射

多路组相联

全相联或
Hash

。7.
根据权利要求1所述的处理器,其特征在于,所述客户机取指部件的一级指令高速缓存行的最后一个字节用来指示指令的有效性
。8.
根据权利要求1所述的处理器,其特征在于,所述客户机取指部件的一级指令高速缓存行的第
28
字节保留为偏移量的扩展字节

【专利技术属性】
技术研发人员:王剑
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

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

1