CN101216778A - 一种risc处理器装置及其指令地址转换查找方法 - Google Patents

一种risc处理器装置及其指令地址转换查找方法 Download PDF

Info

Publication number
CN101216778A
CN101216778A CNA2008100565406A CN200810056540A CN101216778A CN 101216778 A CN101216778 A CN 101216778A CN A2008100565406 A CNA2008100565406 A CN A2008100565406A CN 200810056540 A CN200810056540 A CN 200810056540A CN 101216778 A CN101216778 A CN 101216778A
Authority
CN
China
Prior art keywords
look
instruction
address
index
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008100565406A
Other languages
English (en)
Other versions
CN101216778B (zh
Inventor
苏孟豪
胡伟武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2008100565406A priority Critical patent/CN101216778B/zh
Publication of CN101216778A publication Critical patent/CN101216778A/zh
Priority to CA2712683A priority patent/CA2712683A1/en
Priority to US12/863,840 priority patent/US20100293545A1/en
Priority to EP08871463A priority patent/EP2249252A4/en
Priority to JP2010542496A priority patent/JP5261503B2/ja
Priority to PCT/CN2008/001907 priority patent/WO2009092180A1/zh
Priority to KR1020107013932A priority patent/KR101200083B1/ko
Application granted granted Critical
Publication of CN101216778B publication Critical patent/CN101216778B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种RISC处理器装置及其指令地址转换查找方法。该装置包括译码器,所述译码器包括查找表模块,用于利用查找表实现从X86源指令地址到MIPS目标指令地址的转换。所述查找表模块,包括查找子模块,用于根据内容索引查找表,如果命中,那么将相应的内容存入目标寄存器中;如果表项不命中,将不命中服务程序的入口地址存入目标寄存器中;索引子模块,用于根据内容索引查找表,得到该内容所在表项的索引。其在RISC处理器的X86虚拟机中,加速从X86源指令地址到MIPS目标指令地址的转换,从而提高虚拟机的性能。

Description

一种RISC处理器装置及其指令地址转换查找方法
技术领域
本发明涉及计算机处理器技术领域,特别是涉及一种精简指令集计算机(RISC)处理器装置及其指令地址转换查找方法。
背景技术
虚拟机是20世纪60年代IBM公司提出的概念,并且付诸实现。当时主流计算机是大型机,通过把大型机分割成多个虚拟机,利用虚拟机监视器(Virtual Machine Monitor,VMM)的分隔,多种不同应用或者多个用户可以共享这一稀缺资源。
但是,随着硬件成本降低和计算能力的增强,以及多任务操作系统(OS)的出现,虚拟机监视器慢慢退出历史舞台,微型计算机和个人计算机(PC)大行其道。
然而,由于虚拟机的强大和成功在于用户可以访问和利用仅仅通过指令集的组合就可以形成的功能和设备,最近几年,虚拟机监视器重新成为学术界和工业界的焦点。虚拟机监视器为现代计算机系统体系结构的限制提供一种虚拟解决方案,使其变成一个强大的工具,这一工具会大大扩展现代计算机系统的能力。
当今复杂指令集计算机(Complex Instruction Set Computing,CISC)处理器,特别是X86处理器架构在很多的应用中占据了主导的地位,很多大型的服务器类的应用都是X86架构。精简指令集计算机(Reduced Instruction SetComputing,RISC)处理器为了能够广泛地运行服务类的应用,实现与X86处理器的兼容就成为了必要的任务。另外,现有X86处理器的计算机中,应用程序更加多样化,很多商业软件都是基于X86架构的,所以RISC微处理器要想更为广泛地运行多样化的应用,也非常需要实现对X86的兼容。
MIPS指令集的RISC处理器作为RISC处理器很大的一个分支,目前有很多开源的虚拟机平台,可以实现MIPS指令集的RISC处理器到X86处理器的异构支持。
虚拟机种类繁多,但其核心就是一个翻译或者解释的过程,即从目标代码翻译或者解释成本地代码,而在本地机器上可以执行的过程。虚拟机在执行本地代码的过程中,遇到跳转指令,需要将X86源程序的指令地址转换成相对应的MIPS目标程序的指令地址,然后根据目标程序的指令地址来实现跳转。现有技术中,虚拟机采取哈希(HASH)表的方式来完成源地址到目标地址的映射,每次查表都需要约20条机器指令来完成。
现有技术的查表过程对虚拟机的性能影响较大,难以满足人们对虚拟机性能上的需求。
发明内容
本发明所要解决的问题在于提供一种RISC处理器装置及其指令地址转换查找方法。其在RISC处理器的X86虚拟机中,加速从X86源指令地址到MIPS目标指令地址的转换,从而提高虚拟机的性能。
为实现本发明而提供的一种RISC处理器装置,包括译码器,所述译码器包括查找表模块,用于利用查找表实现从X86源指令地址到MIPS目标指令地址的转换。
所述查找表模块,包括查找子模块和索引子模块,其中:
所述查找子模块,用于根据内容索引查找表,如果表项命中,那么将相应的内容存入目标寄存器中;如果表项不命中,将不命中服务程序的入口地址存入目标寄存器中;
所述索引子模块,用于根据内容索引查找表,得到该内容所在表项的索引。
所述查找表模块还包括填写子模块,用于根据查找表表项的索引填写查找表。
所述查找表模块还包括读取子模块,用于根据查找表表项的索引读取查找表内容。
所述查找表是按内容寻址的查找表,用内容可寻址存储器或随机存取存储器来实现。
所述查找表包括3个域,ASID域、SPC域和TPC域,其中:
ASID域用于存放在操作系统上启动多个X86虚拟机进程的ID号;
SPC域用于存放X86源指令地址;
TPC域用于存放MIPS目标指令地址。
所述不命中服务程序入口地址,是由虚拟机提供一个缺省值,或者保存在CP0寄存器CAM.default中;或者是存放在查找表的第0项。
为实现本发明目的还提供一种RISC处理器指令地址转换查找方法,包括下列步骤:
步骤A,在RISC处理器的X86虚拟机启动时,初始化查找表,用得到的X86虚拟机指令地址到MIPS指令地址的内容来填写查找表;
步骤B,RISC处理器的X86虚拟机的跳转指令由于需要完成从X86源指令地址到目标指令地址的转换而访问查找表。
所述步骤B包括下列步骤:
步骤B1,使用查询查找表表项值的CAMPV指令,根据寄存器中的源指令地址搜索查找表得到目标指令地址;
步骤B2,如果查找命中,则将直接得到的目标指令地址的值存入目标寄存器中,程序由跳转指令跳转至该目标地址指向的代码段执行;
步骤B3,如果查找不命中,则将得到不命中服务程序的地址,该地址由虚拟机给出,存入目标寄存器,程序跳转至不命中服务程序执行。
所述步骤B3之后还包括下列步骤:
步骤C,不命中服务程序根据虚拟机所维护的哈希表的内容而重新填写查找表。
所述步骤C包括下列步骤:
步骤C1,使用查询查找表表项索引的CAMPI指令,根据源指令地址的值得到该值所在表项的索引,并将该索引存入目标寄存器中;
步骤C2,使用根据查找表表项索引填写查找表的CAMWI指令,将进程的ASID、源指令地址以及相对应的目标指令地址,根据目标寄存器中的索引值同时填入表中。
所述步骤C2之后还包括下列步骤:
步骤D,无效查找表中的一项内容;或者根据查找表表项索引读取查找表RAM的内容。
本发明的有益效果是:本发明的RISC处理器装置及其指令地址转换查找方法,在RISC处理器中增加能够解决X86源指令地址到MIPS目标指令地址映射的查找表的结构,在RISC处理器的X86虚拟机中,加速从X86源指令地址到MIPS目标指令地址的转换,从而使用提高虚拟机的性能。
附图说明
图1是本发明RISC处理器装置译码器示意图;
图2是本发明CAMPV指令实现示例图;
图3是本发明RISC处理器装置指令地址转换查找方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种RISC处理器装置及其指令地址转换查找方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例以MIPS64指令集的RISC处理器装置为例,对本发明进行说明,但应当说明的是,其并不是对本发明的限制,本发明同样可以适用于其他指令集的RISC处理器。
如图1所示,本发明实施例的RISC处理器装置,包括译码器1,所述译码器1包括查找表模块2,用于利用查找表3实现从X86源指令地址到MIPS目标指令地址的转换。
本发明在硬件上支持了一个查找表3,对X86程序中的跳转地址到MIPS跳转地址的翻译进行快速查找,提高性能。
作为了一种可实施方式,所述查找表3可以是按内容寻址的查找表,用内容可寻址存储器/随机存取存储器(Content-Addressable Memory/RandomAccess Memory,CAM/RAM)来实现,其中,RAM是输入一个地址,输出对应地址中的数据;CAM是输入内容,输出存储了这个内容的单元的索引号或者是与这个索引号相关联的另一个单元的内容。
该查找表3可以是按内容寻址的查找表,实现X86跳转地址到MIPS调转地址翻译,即在RISC处理器的X86虚拟机中,从X86源指令地址到MIPS目标指令地址的转换。其表项如表1所示。
表1查找表表项
    ASID     SPC     TPC
如表1所述,X86源指令(SPC)到MIPS目标指令地址(TPC)转换使用3个域:ASID域、SPC域和TPC域。
其中,ASID域用于存放在操作系统上启动多个X86虚拟机进程的ID号。这几个X86虚拟机进程都需要使用查找表3时,使用操作系统为其分配的ID号(ASID)作区分,使之不会相互干扰;
SPC域用于存放X86源指令地址;
TPC域用于存放MIPS目标指令地址;
查找表模块2查找时,当前X86虚拟机进程的ASID与查表指令给出的SPC一起构成CAM的“地址”部分,送到所有表项,每个表项将自己存储的ASID、SPC与输入相比较,如果匹配就将其中存储的TPC输出。因此,就RISC处理器的X86虚拟机进程而言,只要输入它想查找的X86源指令地址,就可以从查找表3中查找到相对应的MIPS目标指令地址。
其中,查找表3中的SPC域和TPC域的值由虚拟机在初始化时进行初始化处理,而ASID域的值由本地操作系统给出。
较佳地,如图1所示,本发明的所述查找表模块2,包括查找子模块4,索引子模块5,填写子模块6和读取子模块7,其中:
所述查找子模块4,用于根据内容索引查找表3,如果命中,那么将相应的内容存入目标寄存器中;如果表项不命中,将不命中服务程序的入口地址存入目标寄存器中。
所述索引子模块5,用于根据内容索引查找表3,得到该内容所在表项的索引。
索引子模块5根据通用寄存器中的内容索引查找表3,如果表项查找命中,那么将相应表项的索引存入目标寄存器中;如果表项不命中,将目标寄存器的最高位置1。
所述填写子模块6,用于根据查找表表项的索引填写查找表3。
填写子模块6根据通用寄存器中的索引(index)值将通用寄存器中的值分别写入查找表3的CAM和RAM表项中。
所述读取子模块7,用于根据查找表3表项的索引(index)读取查找表3表项内容。
所述读取子模块7,根据通用寄存器中的索引(index)值读取查找表3的内容,并存入目标寄存器中。
作为一种可实施方式,本发明实施例中,通过四条访问或修改该查找表结构的指令实现查找子模块4,索引子模块5,填写子模块6和读取子模块7。其中:
指令一,CAMPV指令。如图2所示,该指令查询查找表RAM表项值;
该指令的格式如下所示:
CAMPV rd,rs
根据GPR[rs]中的内容索引查找表,得到RAM中的内容。根据通用寄存器GPR[rs]中的内容索引查找表。如果命中,那么将相应的RAM中的内容存入目标寄存器GPR[rd]中;如果表项不命中,将不命中服务程序的入口地址存入目标寄存器GPR[rd]中。
关于指令的执行过程,则是整个处理器指令执行的流程,包括取指译码执行等,它访问的部件就是上面所说的CAM查找表。
指令二,CAMPI指令。该指令查询查找表RAM表项的索引(index)
该指令的格式如下所示:
CAMPI rd,rs
根据GPR[rs]中的内容索引查找表,得到该内容所在表项的索引(index)。根据通用寄存器GPR[rs]中的内容索引查找表。如果命中,那么将相应表项的索引(index)存入目标寄存器GPR[rd]中;如果表项不命中,将目标寄存器rd的最高位置1。
关于指令的执行过程,则是整个处理器指令执行的流程,包括取指译码执行等,它访问的部件就是上面所说的CAM查找表。
指令三,CAMWI指令。该指令根据查找表RAM表项的索引(index)填写查找表,该指令的格式如下所示:
CAMWI rd,rs,rt
根据GPR[rd]的值填写查找表。根据通用寄存器GPR[rd]中的index值将GPR[rs]和GPR[rt]寄存器中的值分别写入查找表的CAM和RAM表项中。
如果索引(index)的值超出查找表表项的范围,则引发地址错例外。
关于指令的执行过程,则是整个处理器指令执行的流程,包括取指译码执行等,它访问的部件就是上面所说的CAM查找表。
指令四,RAMRI指令。该指令根据查找表RAM表项的索引(index)读取查找表RAM表项内容;
该指令的格式如下所示:
RAMRI rd,rs
根据GPR[rs]的值读取查找表的RAM的内容。根据通用寄存器GPR[rs]中的index值读取查找表的RAM的内容,并存入目标寄存器GPR[rd]中。
如果index的值超出查找表表项的范围,则引发地址错例外。
下面详细说明查找不命中,即查找表查找不成功时,即CAM中并没有相应进程期望的一对SPC-TPC,相应的处理过程。
当查找不成功时,即不命中时,跳转到不命中服务程序入口地址,由不命中服务程序进行处理。
不命中服务程序是现有的一种例程,是MIPS指令集的RISC处理器的一种现有标准技术,因此在本发明实施例中不再一一详细描述。
作为一种可实施方式,所述不命中服务程序的入口地址利用一个CP0寄存器CAM.default保存实现,由虚拟机提供一个缺省值,保存在CP0寄存器CAM.default中,作为不命中服务程序的入口地址。
这是处理器的一个控制寄存器,使用与其它控制寄存器相同的读写方式(只是地址不同),由虚拟机提供一个缺省值,为不命中服务程序的入口地址。当CAM执行查表而不命中时,将所述保存在CAM.default中的缺省值送到目标寄存器,这样查表程序可以在命中的情况下,跳转到MIPS指令地址执行;而在不命中的情况下,跳转到不命中服务程序的入口地址,然后利用不命中服务程序查找得到的相应的地址填入查找表中。这样也可以避免查表后加入转移指令判断是否命中。
由于此时目标地址已经存入目标寄存器中,所以利用现有的MIPS64中的直接跳转指令JR rs即可实现跳转。
其中,rs就是放由目标地址的寄存器。
作为另一种可实施方式,不命中服务程序的入口地址可以存放在查找表表项的第0项,而不是实施例一中的一个控制寄存器中。
这种方法中又设置一条新指令VJR,缺省是用了第31号通用寄存器的内容作为SPC查表,VJR的指令功能类似于第一种方法里的CAMPV+JR两条指令的功能。
该指令的格式如下所示:
VJR  rt
根据31号通用寄存器的值读取查找表的RAM的内容。根据通用寄存器GPR[31]中的值读取查找表的RAM的内容(也就是转化后的目标地址)。如果查找成功,则存入目标寄存器GPR[rt]中。然后指令根据rt寄存器的值跳转到目标地址;否则将CAM表中第0项的RAM内容存入目标寄存器GPR[rt]中。指令根据rt寄存器的值跳转到不命中服务程序处理。
关于指令的执行过程,则是整个处理器指令执行的流程,包括取指译码执行等,它访问的部件就是上面所说的CAM查找表。
当出现使用源指令地址的跳转指令时,在该指令之前由一条指令将源指令地址的值放入一固定的寄存器(如31号寄存器),例如X86中的JMP rax指令;
由两条MIPS指令实现:
Addiu  $31,r2,0x0
VJR    r4
跳转指令译码后,由VJR指令根据这个固定的寄存器中的值查表后,如果命中,就直接转换到目标指令地址指向的代码段执行;如果不命中,直接跳转到查找表的第0项,然后跳转到不命中服务程序。
下面详细描述本发明的一种RISC处理器指令地址转换查找方法,如图3所示,其包括下列步骤:
步骤S100,在RISC处理器的X86虚拟机启动时,初始化查找表,用得到的X86虚拟机指令地址到MIPS指令地址的内容来填写查找表;
在RISC处理器的X86虚拟机初始化时,利用不命中服务程序,根据不命中服务程序所维护的哈希表的内容,通过CAMPI指令和CAMWI指令初始化得到相应的X86指令地址到MIPS指令地址的查找表。
步骤S200,RISC处理器的X86虚拟机的跳转指令由于需要完成从X86源指令地址到目标指令地址的转换而访问查找表;
所述步骤S200包括下列步骤:
步骤S210,使用查询查找表表项值的CAMPV指令,根据寄存器中的源指令地址搜索查找表得到目标指令地址;
步骤S220,如果查找命中,则将直接得到的目标指令地址的值存入目标寄存器中,程序由跳转指令跳转至该目标地址指向的代码段执行;
步骤S230,如果查找不命中,则将得到不命中服务程序的地址,该地址由虚拟机给出,存入目标寄存器,程序跳转至不命中服务程序执行。
步骤S300,不命中服务程序根据虚拟机所维护的哈希表的内容而重新填写查找表;
所述步骤S300包括下列步骤:
步骤S310,使用查询查找表表项的索引的CAMPI指令,根据源指令地址的值得到该值所在表项的索引(index),并将该索引存入目标寄存器中;
步骤S320,使用根据查找表表项的索引(index)填写查找表的CAMWI指令,将进程的ASID、源指令地址以及相对应的目标指令地址,根据目标寄存器中的索引值填表同时填入表中。
较佳地,所述RISC处理器指令地址转换查找方法,还包括下列步骤:
步骤S400,无效查找表中的一项内容;或者读取查找表RAM的内容。
使用根据查找表RAM表项的索引(index)填写查找表的CAMWI指令,向指定的索引(index)的该项,填写固定的值,所述的固定的值不能与程序的源指令地址相匹配,也就是无效掉了该项。
使用根据查找表RAM表项的索引(index)读取查找表RAM表项内容的RAMRI指令,读取指定的索引(index)表项的查找表RAM的值,存入目标寄存器中,以方便调试。
本发明的RISC处理器装置及其指令地址转换查找方法,在RISC处理器中增加能够解决X86源指令地址到MIPS目标指令地址映射的查找表的结构,在RISC处理器的X86虚拟机中,加速从X86源指令地址到MIPS目标指令地址的转换,从而使用提高虚拟机的性能。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (12)

1.一种RISC处理器装置,包括译码器,其特征在于,所述译码器包括查找表模块,用于利用查找表实现从X86源指令地址到MIPS目标指令地址的转换。
2.根据权利要求1所述的RISC处理器装置,其特征在于,所述查找表模块,包括查找子模块和索引子模块,其中:
所述查找子模块,用于根据内容索引查找表,如果表项命中,那么将相应的内容存入目标寄存器中;如果表项不命中,将不命中服务程序的入口地址存入目标寄存器中;
所述索引子模块,用于根据内容索引查找表,得到该内容所在表项的索引。
3.根据权利要求2所述的RISC处理器装置,其特征在于,所述查找表模块还包括填写子模块,用于根据查找表表项的索引填写查找表。
4.根据权利要求3所述的RISC处理器装置,其特征在于,所述查找表模块还包括读取子模块,用于根据查找表表项的索引读取查找表内容。
5.根据权利要求1至4任一项所述的RISC处理器装置,其特征在于,所述查找表是按内容寻址的查找表,用内容可寻址存储器或随机存取存储器来实现。
6.根据权利要求5所述的RISC处理器装置,其特征在于,所述查找表包括3个域,ASID域、SPC域和TPC域,其中:
ASID域用于存放在操作系统上启动多个X86虚拟机进程的ID号;
SPC域用于存放X86源指令地址;
TPC域用于存放MIPS目标指令地址。
7.根据权利要求2所述的RISC处理器装置,其特征在于,所述不命中服务程序入口地址,是由虚拟机提供一个缺省值,或者保存在CP0寄存器CAM.default中;或者是存放在查找表的第0项。
8.一种RISC处理器指令地址转换查找方法,其特征在于,包括下列步骤:
步骤A,在RISC处理器的X86虚拟机启动时,初始化查找表,用得到的X86虚拟机指令地址到MIPS指令地址的内容来填写查找表;
步骤B,RISC处理器的X86虚拟机的跳转指令由于需要完成从X86源指令地址到目标指令地址的转换而访问查找表。
9.根据权利要求8所述的指令地址转换查找方法,其特征在于,所述步骤B包括下列步骤:
步骤B1,使用查询查找表表项值的CAMPV指令,根据寄存器中的源指令地址搜索查找表得到目标指令地址;
步骤B2,如果查找命中,则将直接得到的目标指令地址的值存入目标寄存器中,程序由跳转指令跳转至该目标地址指向的代码段执行;
步骤B3,如果查找不命中,则将得到不命中服务程序的地址,该地址由虚拟机给出,存入目标寄存器,程序跳转至不命中服务程序执行。
10.根据权利要求9所述的指令地址转换查找方法,其特征在于,所述步骤B3之后还包括下列步骤:
步骤C,不命中服务程序根据虚拟机所维护的哈希表的内容而重新填写查找表。
11.根据权利要求10所述的指令地址转换查找方法,其特征在于,所述步骤C包括下列步骤:
步骤C1,使用查询查找表表项的索引的CAMPI指令,根据源指令地址的值得到该值所在表项的索引,并将该索引存入目标寄存器中;
步骤C2,使用根据查找表表项索引填写查找表的CAMWI指令,将进程的ASID、源指令地址以及相对应的目标指令地址,根据目标寄存器中的索引值同时填入表中。
12.根据权利要求11所述的指令地址转换查找方法,其特征在于,所述步骤C2之后还包括下列步骤:
步骤D,无效查找表中的一项内容,或者根据查找表表项索引读取查找表RAM的内容。
CN2008100565406A 2008-01-21 2008-01-21 一种risc处理器装置及其指令地址转换查找方法 Active CN101216778B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN2008100565406A CN101216778B (zh) 2008-01-21 2008-01-21 一种risc处理器装置及其指令地址转换查找方法
CA2712683A CA2712683A1 (en) 2008-01-21 2008-11-24 A risc processor device and its instruction address conversion looking-up method
US12/863,840 US20100293545A1 (en) 2008-01-21 2008-11-24 risc processor device and its instruction address conversion looking-up method
EP08871463A EP2249252A4 (en) 2008-01-21 2008-11-24 RISC MICROPROCESSOR DEVICE AND METHOD FOR CONSULTING CONVERTING INSTRUCTION ADDRESSES
JP2010542496A JP5261503B2 (ja) 2008-01-21 2008-11-24 Riscプロセッサ装置及びその命令アドレスの変換検索方法
PCT/CN2008/001907 WO2009092180A1 (zh) 2008-01-21 2008-11-24 一种risc处理器装置及其指令地址转换查找方法
KR1020107013932A KR101200083B1 (ko) 2008-01-21 2008-11-24 Risc 프로세서 장치 및 그의 명령어 어드레스의 전환 룩업 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100565406A CN101216778B (zh) 2008-01-21 2008-01-21 一种risc处理器装置及其指令地址转换查找方法

Publications (2)

Publication Number Publication Date
CN101216778A true CN101216778A (zh) 2008-07-09
CN101216778B CN101216778B (zh) 2011-04-13

Family

ID=39623217

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100565406A Active CN101216778B (zh) 2008-01-21 2008-01-21 一种risc处理器装置及其指令地址转换查找方法

Country Status (7)

Country Link
US (1) US20100293545A1 (zh)
EP (1) EP2249252A4 (zh)
JP (1) JP5261503B2 (zh)
KR (1) KR101200083B1 (zh)
CN (1) CN101216778B (zh)
CA (1) CA2712683A1 (zh)
WO (1) WO2009092180A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009092180A1 (zh) * 2008-01-21 2009-07-30 Institute Of Computing Technology Of The Chinese Academy Of Sciences 一种risc处理器装置及其指令地址转换查找方法
CN101751345B (zh) * 2008-12-10 2012-04-11 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
CN102647484A (zh) * 2012-04-13 2012-08-22 成都安可信电子股份有限公司 一种同步通信网络终端地址搜索方法
CN103455363A (zh) * 2013-08-30 2013-12-18 华为技术有限公司 一种虚拟机的指令处理方法、装置及物理主机
CN105975252A (zh) * 2016-04-29 2016-09-28 龙芯中科技术有限公司 一种处理指令的流水线的实现方法、装置及处理器
CN107621970A (zh) * 2017-10-16 2018-01-23 郑州云海信息技术有限公司 一种异构cpu的虚拟机迁移方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105989758B (zh) * 2015-02-05 2019-03-19 龙芯中科技术有限公司 地址翻译方法和装置
WO2017153815A1 (en) 2016-03-11 2017-09-14 Lzlabs Gmbh Load module compiler

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5796973A (en) * 1993-10-29 1998-08-18 Advanced Micro Devices, Inc. Method and apparatus for decoding one or more complex instructions into concurrently dispatched simple instructions
CN1136504C (zh) * 2000-04-05 2004-01-28 黎明网络有限公司 一种动态分散信息交换方法及其实现模块
CN1607503A (zh) * 2003-10-14 2005-04-20 微软公司 在虚拟机器中使用合成指令的系统和方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3788877T2 (de) * 1987-03-24 1994-06-23 Insignia Solutions Ltd Einrichtung zur software-emulation.
JP2507756B2 (ja) * 1987-10-05 1996-06-19 株式会社日立製作所 情報処理装置
JPH05250260A (ja) * 1992-03-04 1993-09-28 Toshiba Corp 物理アドレス読出し機能を持つ仮想記憶制御方式の情報処理装置
US5442766A (en) * 1992-10-09 1995-08-15 International Business Machines Corporation Method and system for distributed instruction address translation in a multiscalar data processing system
JPH0793221A (ja) * 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
JP3713312B2 (ja) * 1994-09-09 2005-11-09 株式会社ルネサステクノロジ データ処理装置
US5835964A (en) * 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US5721927A (en) * 1996-08-07 1998-02-24 Intel Corporation Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions
US5815686A (en) * 1996-09-12 1998-09-29 Silicon Graphics, Inc. Method and apparatus for address space translation using a TLB
US5940872A (en) * 1996-11-01 1999-08-17 Intel Corporation Software and hardware-managed translation lookaside buffer
AU3536499A (en) * 1998-05-01 1999-11-23 Matsushita Electric Industrial Co., Ltd. Data processing device and method
US6615300B1 (en) * 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US20030093775A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton Processing of self-modifying code under emulation
EP1470476A4 (en) * 2002-01-31 2007-05-30 Arc Int CONFIGURABLE DATA PROCESSOR WITH MULTI-LENGTH INSTRUCTION KIT ARCHITECTURE
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US8266116B2 (en) * 2007-03-12 2012-09-11 Broadcom Corporation Method and apparatus for dual-hashing tables
CN101216778B (zh) * 2008-01-21 2011-04-13 中国科学院计算技术研究所 一种risc处理器装置及其指令地址转换查找方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5796973A (en) * 1993-10-29 1998-08-18 Advanced Micro Devices, Inc. Method and apparatus for decoding one or more complex instructions into concurrently dispatched simple instructions
CN1136504C (zh) * 2000-04-05 2004-01-28 黎明网络有限公司 一种动态分散信息交换方法及其实现模块
CN1607503A (zh) * 2003-10-14 2005-04-20 微软公司 在虚拟机器中使用合成指令的系统和方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009092180A1 (zh) * 2008-01-21 2009-07-30 Institute Of Computing Technology Of The Chinese Academy Of Sciences 一种risc处理器装置及其指令地址转换查找方法
CN101751345B (zh) * 2008-12-10 2012-04-11 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
CN102647484A (zh) * 2012-04-13 2012-08-22 成都安可信电子股份有限公司 一种同步通信网络终端地址搜索方法
CN102647484B (zh) * 2012-04-13 2014-11-26 成都安可信电子股份有限公司 一种同步通信网络终端地址搜索方法
CN103455363A (zh) * 2013-08-30 2013-12-18 华为技术有限公司 一种虚拟机的指令处理方法、装置及物理主机
CN103455363B (zh) * 2013-08-30 2017-04-19 华为技术有限公司 一种虚拟机的指令处理方法、装置及物理主机
CN105975252A (zh) * 2016-04-29 2016-09-28 龙芯中科技术有限公司 一种处理指令的流水线的实现方法、装置及处理器
CN105975252B (zh) * 2016-04-29 2018-10-09 龙芯中科技术有限公司 一种处理指令的流水线的实现方法、装置及处理器
CN107621970A (zh) * 2017-10-16 2018-01-23 郑州云海信息技术有限公司 一种异构cpu的虚拟机迁移方法和装置
CN107621970B (zh) * 2017-10-16 2021-02-05 郑州云海信息技术有限公司 一种异构cpu的虚拟机迁移方法和装置

Also Published As

Publication number Publication date
CA2712683A1 (en) 2009-07-30
US20100293545A1 (en) 2010-11-18
JP5261503B2 (ja) 2013-08-14
WO2009092180A1 (zh) 2009-07-30
KR101200083B1 (ko) 2012-11-12
EP2249252A1 (en) 2010-11-10
JP2011510385A (ja) 2011-03-31
CN101216778B (zh) 2011-04-13
KR20100090709A (ko) 2010-08-16
EP2249252A4 (en) 2012-04-18

Similar Documents

Publication Publication Date Title
CN101216778B (zh) 一种risc处理器装置及其指令地址转换查找方法
US7509475B2 (en) Virtual machine control method and virtual machine system having host page table address register
CN102473139B (zh) 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
CN103309644A (zh) 用于微处理器的转译地址高速缓存
CN101477495B (zh) 分布式内存虚拟化技术的实现方法
CN102073533B (zh) 支持动态二进制翻译的多核体系结构
CN102792286A (zh) 虚拟化处理系统中的地址映射
CN103777926A (zh) 多线程处理单元中的高效存储器虚拟化
JPH10320185A (ja) プロセッサ特定アプリケーションの実行方法
CN104487953A (zh) 用于层次型存储器系统的存储器管理
US9075634B2 (en) Minimizing overhead in resolving operating system symbols
CN102662869B (zh) 虚拟机中的内存访问方法和装置及查找器
CN105446900A (zh) 处理器和区分系统管理模式条目的方法
CN103777925A (zh) 多线程处理单元中的高效存储器虚拟化
CN105051680A (zh) 使用硬件指针的simd核心中的发散分支解决方案
CN102239478B (zh) 数据访问处理方法和设备
MX2008013345A (es) Memoria asociada de instrucciones etiquetada virtualmente con un comportamiento etiquetado fisicamente.
CN102662860A (zh) 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法
US20160103768A1 (en) TLB Management Method and Computer
JPH0512126A (ja) 仮想計算機のアドレス変換装置及びアドレス変換方法
CN101620573A (zh) X86体系结构内存管理单元虚拟化方法
US5210841A (en) External memory accessing system
CN102203737B (zh) 多线程访问多副本的方法和装置
US6792499B1 (en) Dynamic swapping of memory bank base addresses
CN108463810A (zh) 存储器地址变换管理

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
EE01 Entry into force of recordation of patent licensing contract

Assignee: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract fulfillment period: 2009.12.16 to 2028.12.31

Contract record no.: 2010990000062

Denomination of invention: RISC processor device and its instruction address conversion lookup method

License type: exclusive license

Record date: 20100128

LIC Patent licence contract for exploitation submitted for record

Free format text: EXCLUSIVE LICENSE; TIME LIMIT OF IMPLEMENTING CONTACT: 2009.12.16 TO 2028.12.31; CHANGE OF CONTRACT

Name of requester: BEIJING LOONGSON TECHNOLOGY SERVICE CENTER CO., LT

Effective date: 20100128

C14 Grant of patent or utility model
GR01 Patent grant
EC01 Cancellation of recordation of patent licensing contract

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2010990000062

Date of cancellation: 20141231

EM01 Change of recordation of patent licensing contract

Change date: 20141231

Contract record no.: 2010990000062

Assignee after: Longxin Zhongke Technology Co., Ltd.

Assignee before: Beijing Loongson Zhongke Technology Service Center Co., Ltd.

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20080709

Assignee: Longxin Zhongke Technology Co., Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Denomination of invention: RISC processor device and its instruction address conversion lookup method

Granted publication date: 20110413

License type: Common License

Record date: 20150211

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200824

Address after: 100095, Beijing, Zhongguancun Haidian District environmental science and technology demonstration park, Liuzhou Industrial Park, No. 2 building

Patentee after: LOONGSON TECHNOLOGY Corp.,Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

EC01 Cancellation of recordation of patent licensing contract
EC01 Cancellation of recordation of patent licensing contract

Assignee: LOONGSON TECHNOLOGY Corp.,Ltd.

Assignor: Institute of Computing Technology, Chinese Academy of Sciences

Contract record no.: 2015990000066

Date of cancellation: 20200928

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.