JP2008536240A - Microprocessor access using native instructions to the operand stack as a register file - Google Patents
Microprocessor access using native instructions to the operand stack as a register file Download PDFInfo
- Publication number
- JP2008536240A JP2008536240A JP2008506461A JP2008506461A JP2008536240A JP 2008536240 A JP2008536240 A JP 2008536240A JP 2008506461 A JP2008506461 A JP 2008506461A JP 2008506461 A JP2008506461 A JP 2008506461A JP 2008536240 A JP2008536240 A JP 2008536240A
- Authority
- JP
- Japan
- Prior art keywords
- java
- register
- instructions
- native
- microprocessor
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 10
- 101001075561 Homo sapiens Rho GTPase-activating protein 32 Proteins 0.000 claims 1
- 102100020900 Rho GTPase-activating protein 32 Human genes 0.000 claims 1
- 230000001404 mediated effect Effects 0.000 claims 1
- 238000000090 raster image correlation spectroscopy Methods 0.000 claims 1
- 230000007246 mechanism Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
結合されたネイティブ(RISCまたはCISC)マイクロプロセッサおよびスタック(Java(登録商標))マシン(10,11,13)は、Java(登録商標)VM命令がハードウェアで実行され得るように構築される。ほとんどのJava(登録商標)命令は直接実行され(54)、その一方でより複雑なJava(登録商標)命令、たとえばJava(登録商標)オブジェクトを操作する命令はネイティブマイクロコード(56)として実行される。ネイティブマイクロコード命令がJava(登録商標)オペランドスタックにアクセスするために、Java(登録商標)オペランドスタックポインタ(22,102)が、現在のスタックトップ(ToS)であるレジスタファイル(15,90)位置を指定する一方、状態レジスタ(101)の再マップビット(RM)は、ネイティブ命令において特定されるレジスタが、Java(登録商標)オペランドスタックポインタ最大値からJava(登録商標)オペランドスタックポインタの現在の値を引き算したものとして再マップされる(90a)ことを表わす。 The combined native (RISC or CISC) microprocessor and stack (Java®) machine (10, 11, 13) are constructed so that Java® VM instructions can be executed in hardware. Most Java instructions are executed directly (54), while more complex Java instructions, such as instructions that operate on Java objects, are executed as native microcode (56). The Register file (15, 90) location where the Java (registered trademark) operand stack pointer (22, 102) is the current stack top (ToS) for native microcode instructions to access the Java (registered trademark) operand stack The remapping bit (RM) of the status register (101) indicates that the register specified in the native instruction is the current value of the Java (registered trademark) operand stack pointer from the maximum value of the Java (registered trademark) operand stack pointer. Remapping as a value subtracted (90a).
Description
技術分野
この発明は、メモリ指向のアーキテクチャを備えたマイクロプロセッサ(たとえば複数命令セットコンピュータすなわちCISCマシン)およびロード・ストアアーキテクチャを備えたマイクロプロセッサ(たとえば縮小命令セットコンピュータ、すなわちRISCマシン)を含むマイクロプロセッサ、ならびにJava(登録商標)仮想マシンコアアーキテクチャを有するものを含むスタックマシンの、レジスタファイルスタックへのアクセスに関する。RISCまたはCISC状態およびJava(登録商標)状態でも動作可能な結合アーキテクチャが特に適切である。より特定的には、この発明は、RISC状態からJava(登録商標)オペランドスタックにアクセスするなどの、アーキテクチャにネイティブな命令を用いてオペランドスタックにアクセスすることに関する。
TECHNICAL FIELD This invention relates to a microprocessor comprising a microprocessor (eg, a multiple instruction set computer or CISC machine) with a memory-oriented architecture and a microprocessor (eg, a reduced instruction set computer or RISC machine) with a load store architecture. , As well as access to the register file stack of stack machines, including those having the Java virtual machine core architecture. Particularly suitable is a combined architecture that can also operate in RISC or CISC state and Java state. More specifically, the present invention relates to accessing an operand stack using architecture native instructions, such as accessing a Java operand stack from a RISC state.
背景技術
マイクロプロセッサはいくつかの基本カテゴリに分類することができる。スタックマシンでは、すべての算術論理演算装置(ALU)演算がオペランドスタックの最上位のレジスタで行われる。CISCマシンではメモリにおいて直接演算が行われる(すなわち、オペランドはメモリからアクセスされ、結果がメモリに格納される)。RISCマシンでは、中央処理装置(CPU)に存在するアドレス可能なレジスタ上ですべての演算が実行される。初期のマイクロプロセッサはスタックマシンであったが、今日ではほとんどのマイクロプロセッサはCISCまたはRISCマシンのいずれかである。時間とともにCISCマシンとRISCマシンとは設計において互いに近づき、最も近代のCISCマシンもまた演算が実行されるレジスタファイルを有する。サンマイクロシステムズ(Sun Microsystems)によるJava(登録商標)プログラミング言語およびJava(登録商標)仮想マシン(Java(登録商標)VM)の採用により、近代のマイクロプロセッサにスタックマシンが再び採用された。Java(登録商標)VMがソフトウェアとして動くように本来意図されていたにもかかわらず、ハードウェアによる実現例もいくつか存在する。
Microprocessors can be divided into several basic categories. In a stack machine, all arithmetic logic unit (ALU) operations are performed on the top register of the operand stack. In a CISC machine, operations are performed directly in memory (ie, operands are accessed from memory and results are stored in memory). In a RISC machine, all operations are performed on addressable registers residing in a central processing unit (CPU). Early microprocessors were stack machines, but today most microprocessors are either CISC or RISC machines. Over time, CISC machines and RISC machines approach each other in design, and most modern CISC machines also have register files on which operations are performed. With the adoption of the Java® programming language and Java® virtual machine (Java® VM) by Sun Microsystems, stack machines have again been adopted for modern microprocessors. Although the Java (registered trademark) VM was originally intended to run as software, there are several hardware implementations.
サンマイクロシステムズによって開発されたJava(登録商標)はオブジェクト指向のプログラミング言語であってネットワークプログラミングにおけるデファクトスタンダードになっており、さらに組込システムの分野でも利用され始めている。Java(登録商標)バイトコードは、Java(登録商標)仮想マシンと呼ばれるソフトウェア層において一般に実行され、その仕様はサンマイクロシステムズによって発行されている。Java(登録商標)バイトコードを実行するためには、好ましくは、潜在的なプログラムフローのボトルネックを分析するための何らかの形の先読み技術と関連して、インタープリタもしくは「ジャスト・イン・タイム」コンパイラ、または特定のハードウェアプラットフォームのためのクロスコンパイラが用いられ得る。代替的には、Java(登録商標)はシリコンチップにおいて直接実行することができる。いくつかのJava(登録商標)ハードウェアプロセッサは、いくつかの命令が1つの命令として組合わされ、実行されることを意味する、フォールディング機構を有する。しかしながら、ほとんどのJava(登録商標)プロセッサはインタープリタとして動作し、そこでは各命令コードが読出され、次に命令を実行するために適切な処置が講じられる。 Java (registered trademark) developed by Sun Microsystems is an object-oriented programming language, has become the de facto standard in network programming, and is beginning to be used in the field of embedded systems. Java (registered trademark) bytecode is generally executed in a software layer called a Java (registered trademark) virtual machine, and its specifications are issued by Sun Microsystems. In order to execute Java® bytecode, an interpreter or “just-in-time” compiler, preferably in conjunction with some form of read-ahead technique for analyzing potential program flow bottlenecks Or a cross-compiler for a specific hardware platform may be used. Alternatively, Java can be run directly on a silicon chip. Some Java® hardware processors have a folding mechanism that means that several instructions are combined and executed as one instruction. However, most Java processors operate as interpreters, where each instruction code is read and then appropriate action is taken to execute the instruction.
Java(登録商標)が組込システムにおいて実現される場合、ハードウェア手法が好ましい技術的解決法であり、近年、Java(登録商標)仮想マシンのいくつかのハードウェアバージョンが組込プロセッサプラットフォーム用に開発されている。Java(登
録商標)命令の直接の実行をサポートするこれらのプロセッサは、通常は32ビットのスタックマシンとして設計されている。そのいくつかは、直接アドレス指定およびビット操作命令などの特徴を提供するために、Java(登録商標)バイナリフォーマットへの拡張に依存する。他のものはJava(登録商標)バイナリコードを直接実行はしないが極めて近いアーキテクチャ上の一致を有し、それによって仮想マシンの性能を向上させる。
If Java is implemented in an embedded system, the hardware approach is the preferred technical solution, and several hardware versions of Java virtual machines have recently been developed for embedded processor platforms. Has been developed. These processors that support the direct execution of Java instructions are usually designed as 32-bit stack machines. Some of them rely on extensions to the Java® binary format to provide features such as direct addressing and bit manipulation instructions. Others do not directly execute Java® binary code, but have very close architectural matches, thereby improving virtual machine performance.
ハードウェアにおいてJava(登録商標)VMの実現を試みるときの主な難問は、いくつかのJava(登録商標)命令が高度な意味内容を有し、そのために不可分な命令として実行するのが非常に困難なことである。複雑なJava(登録商標)命令をトラップし、ホストアーキテクチャにネイティブな命令を用いてソフトウェアルーチンとしてそれらを実行することが、可能な解決法である。しかし、これを行うためには、ネイティブな(RISCまたはCISC)命令を用いてJava(登録商標)オペランドスタックにアクセスするための機構が必要である。 The main challenge when trying to implement a Java VM in hardware is that some Java instructions have a high semantic content, so it is very difficult to execute as an inseparable instruction. It is difficult. Trapping complex Java instructions and executing them as software routines using instructions native to the host architecture is a possible solution. However, in order to do this, a mechanism for accessing the Java operand stack using native (RISC or CISC) instructions is required.
2001年4月23日に出願された米国仮出願番号第60/286,197号の優先権を伴って2002年4月1日に出願された、本譲受人の先の米国特許出願番号第10/114,678号であって2004年1月22日にUS2004/0015678Alとして発行された、「バイトコンパイルされたJava(登録商標)コードを実行するためのマイクロプロセッサ(Microprocessor for executing byte compiled Java(登録商標)code)」と題された出願、および2002年10月31日にWO2002/086699A3として発行された対応する国際出願において、RISCマシンをJava(登録商標)VMと組合わせる概念が記載されている。当該以前に発行された出願において、ハードウェアで実現されるRISCマイクロプロセッサとJava(登録商標)VMとが、ハードウェアがRISC状態またはJava(登録商標)状態のいずれかにおいても動作することができるように、結合される。RISCマイクロプロセッサがJava(登録商標)オペランドスタックにアクセスして複雑なJava(登録商標)命令をRISCソフトウェアルーチンとして実行するために、2つのビット「X」および「Y」が状態レジスタに設定されて、対応するX引数またはY引数が、オペランドスタックポインタによって指定されたレジスタ番号と置換えられることを可能にする。 Assignee's earlier US Patent Application No. 10 filed April 1, 2002 with the priority of US Provisional Application No. 60 / 286,197, filed April 23, 2001. / 114,678, which was issued as US 2004/0015678 Al on January 22, 2004, "Microprocessor for executing byte compiled Java (registered) (Trademark) code) "and the corresponding international application published as WO2002 / 086699A3 on October 31, 2002, describes the concept of combining a RISC machine with a Java VM. . In the previously issued application, a RISC microprocessor implemented in hardware and a Java VM can operate in either the RISC state or the Java state. So that they are combined. Two bits "X" and "Y" are set in the status register for the RISC microprocessor to access the Java operand stack and execute complex Java instructions as RISC software routines. Allows the corresponding X or Y argument to be replaced with the register number specified by the operand stack pointer.
プロセッサのRISC(またはCISC)状態からJava(登録商標)オペランドスタックへのアクセスを向上させるために、これらの結合マイクロプロセッサのための付加的な機構が求められる。 In order to improve access to the Java operand stack from the RISC (or CISC) state of the processor, additional mechanisms for these combined microprocessors are required.
発明の概要
この発明は、同じマイクロプロセッサコアにおいてRISC(またはCISC)マシンおよび(Java(登録商標)VMなどの)スタックマシンの両方を実現する。マイクロプロセッサはレジスタファイルを含む。先行するRISC(またはCISC)マシンと同じように、レジスタファイル上で演算する命令は、オペランドの出所および結果の行先であるレジスタ番号を特定する。スタックマシンは、Java(登録商標)オペランドスタックを保持する同じレジスタファイルの部分(たとえば下半分)を用いる。Java(登録商標)オペランドスタックポインタレジスタが与えられ、それはスタックトップを指定し、したがって、プロセッサがJava(登録商標)状態である場合は常に、いずれのレジスタにおいて動作されるかを決定する。状態レジスタは、プロセッサがJava(登録商標)状態にあるときを特定するビットを含んでいるだけでなく、プロセッサがJava(登録商標)スタックにアクセスするためにRISC(またはCISC)状態である時に用いられるJava(登録商標)レジスタ再マップビットを含む。RISC(またはCISC)状態において、再マップビットは、設定されると、命令で特定されたレジスタ番号
が、Java(登録商標)オペランドスタックのレジスタに対応する場合は、常に、そのレジスタ番号がスタックトップに関連するアクセスレジスタに再マップされるようにする。すなわち、アクセスされたレジスタ番号は、オペランドスタックポインタの最大値からオペランドスタックポインタ値を引いた値である。再マップビットがゼロにリセットされている場合、アクセスされたレジスタ番号は命令で特定されるものである。再マップビットはJava(登録商標)状態では無視される。再マップビットは、RISC(またはCISC)命令がJava(登録商標)スタックのオペランドにアクセスすることを有効に可能にする。たとえば、いずれのレジスタが実際にスタックトップ値を保持しているかにかかわらず、スタックトップからオペランドを、かつスタックトップより下位の要素を得て、結果をスタックトップに置くことを可能にする。
SUMMARY OF THE INVENTION The present invention implements both a RISC (or CISC) machine and a stack machine (such as a Java VM) in the same microprocessor core. The microprocessor includes a register file. As with previous RISC (or CISC) machines, instructions that operate on a register file specify the source of the operand and the register number that is the destination of the result. The stack machine uses the same register file portion (eg, lower half) that holds the Java® operand stack. A Java (R) operand stack pointer register is provided, which specifies the stack top, and thus determines in which register whenever the processor is in the Java (R) state. The status register not only contains a bit that identifies when the processor is in Java state, but is also used when the processor is in RISC (or CISC) state to access the Java stack. Java (R) register remapping bits. In the RISC (or CISC) state, when the remapping bit is set, whenever the register number specified in the instruction corresponds to a register in the Java operand stack, that register number is always the stack top. To be remapped to the access register associated with That is, the accessed register number is a value obtained by subtracting the operand stack pointer value from the maximum value of the operand stack pointer. If the remapping bit is reset to zero, the accessed register number is the one specified in the instruction. The remapping bit is ignored in the Java state. The remapping bit effectively enables RISC (or CISC) instructions to access the operands of the Java stack. For example, regardless of which register actually holds the stack top value, it is possible to get operands from the stack top and elements below the stack top and place the result on the stack top.
発明の詳細な説明
この発明は、結合RISC/Java(登録商標)プロセッサアーキテクチャまたは結合CISC/Java(登録商標)プロセッサアーキテクチャのいずれかに、またはより一般にはスタックマシンとネイティブRISCまたはネイティブCISCプロセッサとの任意の結合に適合され得る。既に説明されたように、この発明は、プロセッサがそのスタックマシンまたはJava(登録商標)状態であるときだけでなく、プロセッサがそのネイティブRISCまたはネイティブCISC状態であるときも、オペランドスタックへのアクセスのための技術を特に含む。例示目的のために、説明の残りの部分は結合RISC/Java(登録商標)プロセッサアーキテクチャに注目し、そのコンテキストにおける創造性のある技術を示す。当業者は、この発明に説明されたRISC/Java(登録商標)バージョンを他の適用可能な処理アーキテクチャでの使用に適応させる方法を容易に理解するだろう。
DETAILED DESCRIPTION OF THE INVENTION The present invention relates to either a combined RISC / Java® processor architecture or a combined CISC / Java® processor architecture, or more generally between a stack machine and a native RISC or native CISC processor. Any combination can be adapted. As already described, the present invention provides access to the operand stack not only when the processor is in its stack machine or Java state, but also when the processor is in its native RISC or native CISC state. In particular including technology for. For illustrative purposes, the remainder of the description focuses on the combined RISC / Java processor architecture and shows the creative techniques in that context. Those skilled in the art will readily understand how to adapt the RISC / Java® version described in this invention for use with other applicable processing architectures.
Java(登録商標)VM命令セットは現在201の命令コードを含んでいる。命令セットの大部分はタイプ固有であり、したがって、同じ意味を有するが異なるオペランドタイプに適用されるJava(登録商標)命令が多い。RISCプロセッサの命令セットは各アーキテクチャの特定の設計特微によって異なるが、典型的なRISC命令セットは、LOAD、STORE、MOVE、ADD、SUBTRACT、MULTIPLY、DIVIDE、NEGATE、AND、OR、XOR、COMPARE、SHIFT、ROTATE、SET、CLEAR、JUMPおよびRETURNなどの命令を含み得る。典型的なRISC命令セットの大部分はJava(登録商標)VM命令セットと重複する。たとえば、Java(登録商標)およびRISC状態の両方において最も頻繁に実行される命令はロード/ストア命令であり、それは両方の状態下で同じ意味内容を有し、結合RISC/Java(登録商標)アーキテクチャにおいて同じハードウェア資源を共有することができる。同様に、基本的な算術演算および論理演算は同じ意味を共有し、共有される算術論理演算装置(ALU)を同じ方法で利用する。しかしながら、いくらかの低レベルビット操作命令はRISC命令セットでのみ見つけることができ、Java(登録商標)VMでは見つからない。同様に、Java(登録商標)は、典型的なRISC命令セットには見つからない高レベルのオブジェクト生成および操作命令を含む。 The Java (R) VM instruction set currently contains 201 instruction codes. Most of the instruction set is type specific, so there are many Java instructions that have the same meaning but apply to different operand types. Although the RISC processor instruction set varies depending on the specific design characteristics of each architecture, typical RISC instruction sets are LOAD, STORE, MOVE, ADD, SUBTRACT, MULTIPLY, DIVIDE, NEGATE, AND, OR, XOR, COMPARE, It may include instructions such as SHIFT, ROTATE, SET, CLEAR, JUMP, and RETURN. Most of the typical RISC instruction set overlaps the Java VM instruction set. For example, the most frequently executed instruction in both Java and RISC states is the load / store instruction, which has the same semantic content under both states, and is a combined RISC / Java architecture. Can share the same hardware resources. Similarly, basic arithmetic and logical operations share the same meaning and utilize shared arithmetic and logic units (ALUs) in the same way. However, some low-level bit manipulation instructions can only be found in the RISC instruction set and not in Java VM. Similarly, Java® includes high level object creation and manipulation instructions that are not found in the typical RISC instruction set.
Java(登録商標)VM命令セットは、ハードウェアで実現するのが困難な高度な意味内容を有するいくつかの命令を含む。単一のクロックサイクルでそのような高レベルの命令を実行することは通常は実現可能ではなく、それらをいくつかのさほど複雑でない命令に分割する作業は資源の割振りとタイミングの制約との点で困難である。その代り、これらのJava(登録商標)命令は、ハードウェアのオーバーヘッドを減じるために、結合RISC/Java(登録商標)プロセッサにおける小さなRISCプログラムとしてトラップされて実行されてもよい。トラップされる命令は、典型的には、すべての実行された命令の10%未満になる。個々のそのような命令のRISCプログラムは、プロセッ
サにアクセス可能なプログラムメモリに格納され、プログラマによって必要に応じて変更されてもよい。これは、Java(登録商標)命令セットのいかなる将来的な拡張に対しても十分な柔軟性を与える。しかし、高レベルなJava(登録商標)命令をRISCプログラムとして実行することは、結合プロセッサがRISC状態に切替わる場合は常に、それらの命令を実行するために結合プロセッサがなおJava(登録商標)オペランドスタックにアクセスできることを必要とする。プロセッサがJava(登録商標)状態に戻るときは、演算結果もスタックからアクセスされる必要がある。
The Java (R) VM instruction set includes a number of instructions with high semantic content that are difficult to implement in hardware. Executing such high-level instructions in a single clock cycle is usually not feasible, and the task of dividing them into several less complex instructions is in terms of resource allocation and timing constraints. Have difficulty. Instead, these Java instructions may be trapped and executed as a small RISC program in a combined RISC / Java processor to reduce hardware overhead. The instructions that are trapped will typically be less than 10% of all executed instructions. The RISC program for each such instruction is stored in a program memory accessible to the processor and may be modified as needed by the programmer. This provides sufficient flexibility for any future extension of the Java instruction set. However, executing a high level Java instruction as a RISC program means that whenever the combined processor switches to the RISC state, the combined processor still executes the Java operand to execute those instructions. Requires access to the stack. When the processor returns to the Java (registered trademark) state, the operation result also needs to be accessed from the stack.
図1を参照して、この発明を利用するために適合され得る典型的な結合RISC/Java(登録商標)マイクロプロセッサは、RISCプロセッサ、RISCプロセッサにおいてJava(登録商標)命令の第1のセットを実行するためのJava(登録商標)モジュール、RISCプロセッサにおいてJava(登録商標)命令の第2のセットをマイクロコードとして実行するためのRISCモジュール、および、両方のモジュールによって共有される、RISCプロセッサにおけるデータパスを含み得、データパスはレジスタファイルを含む。図1に見られるように、この発明によるマイクロプロセッサ10は、Java(登録商標)制御部11およびRISC制御部13の両方を含み、それは共通のデータパスを共有する。2つの制御部11および13は独立して動作するが、プロセッサを同時に動作することはない。プロセッサ10は、他のJava(登録商標)プロセッサのようにJava(登録商標)バイナリフォーマットへの翻訳または拡張には依存しないが、2つの直交するプログラムモデルを提供する。プロセッサ10は、データと命令との両方のための共通バスを共有する基本的なノイマンアーキテクチャ(von-Neumann Architecture)として構築することができ、または個別のデータおよび命令バスを備えたハーバードアーキテクチャ(Harvard Architecture)に容易に拡張することができる。プロセッサは高いクロック周波数および単一のサイクル実行を達成するためにパイプライン化することができる。
Referring to FIG. 1, a typical combined RISC / Java microprocessor that can be adapted to utilize the present invention is a RISC processor, a first set of Java instructions in a RISC processor. A Java module for execution, a RISC module for executing the second set of Java instructions as microcode in the RISC processor, and data in the RISC processor shared by both modules A path may include a data path, including a register file. As can be seen in FIG. 1, the
マイクロプロセッサは、データバス30に接続されたレジスタファイル15を含む。プログラムカウンタ16、リンクレジスタ17およびスタックポインタ18は、任意の数の汎用レジスタ19と共に、ファイル15にマップされてもよい。レジスタファイル15へのこのマッピングは、プログラムカウンタ16、リンクレジスタ17およびスタックポインタ18が汎用レジスタ19と同じ方法でアドレスされることを可能にし、その結果、通常の命令は、所望の場合は常にこれらのレジスタを用いることができる。スタックポインタ18を通常のレジスタとしてアドレスできることにより、ローカル変数およびパラメータの割当ておよびアクセスが簡単になる。スタックポインタ18は、いくつかの命令によって暗黙に用いられてもよい。プログラムカウンタ16は、実行されている命令のアドレスを包含する。メモリ空間はバイト単位でアドレス指定される。Java(登録商標)状態を除いて、命令のサイズは2バイトの倍数であり、プログラムカウンタの最下位ビットはゼロに固定されている。プログラムカウンタ16がレジスタファイル15にマップされるので、それはレジスタオペランドを用いるすべての命令(たとえばロード/ストア、算術および論理命令)において出所または行先オペランドとして用いることができる。プログラムカウンタ16をその行先レジスタとして用いる命令はジャンプ命令と同じ方法で処理され、新しいプログラムカウンタ値によって特定されたアドレスにおいてパイプラインが消去され、実行が再開される。リンクレジスタ17は、監視プログラム呼出しと同様に、サブルーチン呼び出し、割込みリクエスト、および例外処理の戻りアドレスを保持するために用いられる。リンクレジスタ位置は他のすべての場合に汎用レジスタとして用いることができる。割込みモードおよび例外モードについては、より低い割込みレイテンシでのより高い性能を可能にするために、個別のレジスタファイルが含まれてもよい。
The microprocessor includes a
状態レジスタ21はレジスタファイル15から区別され、その代わり、Java(登録商標)オペランドスタックポインタ22、Java(登録商標)ローカル変数レジスタ2
3、およびJava(登録商標)トラップ基底アドレスレジスタ24とともにシステムレジスタ空間20にマップされることができる。状態レジスタ21は、通常の算術論理演算フラグ(たとえば、飽和、オーバーフロー、符号、ゼロおよびキャリーフラグ)、モードビット設定(たとえばアプリケーション、監視プログラム、割込みおよび例外モード)、デバッグ状態ビット、ならびに割込み、例外、およびデバッグマスキングビットを含んでいてもよい。さらに、この発明に特に関連して、状態レジスタ21はJava(登録商標)状態ビットおよびJava(登録商標)レジスタ再マップビットを含む。プロセッサ10は、状態レジスタ21においてJava(登録商標)状態ビットが設定されているときに限り、その場合は常に、Java(登録商標)状態である。このビットはリセットにおいてクリアされ、Java(登録商標)実行が完了したとき、または割込みおよび例外によって、または定義済み命令(たとえばJCALLまたはRETJなど、前者はJava(登録商標)状態を始めるために用いられ、後者は命令トラップ後にJava(登録商標)状態に戻るために用いられる)によってのみ、変更されるべきである。このJava(登録商標)状態ビットを手動で変更しようとするユーザによる試みは、結果として未定義動作を生じ得る。Java(登録商標)レジスタ再マップビットが設定される場合は常に、スタックマシンにおけるのと同様に、レジスタファイル15は変数にアクセスするために再マップされる。このビットはリセットにおいてクリアされる。このビットがJava(登録商標)VMの外部に書き出される場合、結果として未定義動作が生じ得る。この再マップビットの効果はより詳細に以下に記載される。システムレジスタ空間20のJava(登録商標)オペランドスタックポインタ22は、現在のJava(登録商標)オペランドスタックトップのレジスタファイル空間で位置を保持するために用いられる。Java(登録商標)トラップ基底アドレスレジスタ24は、トラップされたJava(登録商標)命令のためのプログラムコードへの基底アドレスを包含している。Java(登録商標)ローカル変数レジスタ23は、一時的なJava(登録商標)ローカル変数を格納する。追加的に、Java(登録商標)トラップエントリポイントレジスタは、基底アドレスポインタから実現されていないJava(登録商標)命令のエントリポイント用の例外ルーチンまでの、オフセットを包含してもよい。必要に応じて特定のハードウェアプロセッサ設計によって他のシステムレジスタが与えられてもよい。
The status register 21 is distinguished from the
3 and Java ™ trap
RISCおよびJava(登録商標)状態の両方で用いられる算術論理演算装置(ALU)25はレジスタファイル15に接続され、ALUの出力はデータバス30に与えられる。典型的なALUは32ビットの加算器、32ビットのバレルシフタ、およびハードウェア乗算を含むことができる。算術論理演算は単一クロックサイクルにおいて実行する。32ビットワードサイズのデータタイプに加えて、プロセッサは典型的には、コードサイズまたは性能における制約なく、ハーフワードおよびバイトのデータタイプをサポートする。メモリのロードおよびストア動作は、典型的には、バイト、ハーフワード、ワード、ならびに、バイトおよびハーフワードデータの自動的な符号拡張またはゼロ拡張を備えたダブルワードのデータを与える。
An arithmetic logic unit (ALU) 25 used in both the RISC and Java (registered trademark) state is connected to the
プログラムカウンタ16および関連するレジスタファイルの出力は、アドレスマルチプレクサ33に至る加算器36を通って処理される。アドレスマルチプレクサ33もアドレスバス40に接続される。命令フェッチデコーダ35はデータバス30から信号を受け取り、スタック制御部37に出力を与える。この発明と共に、プロセッサアーキテクチャのこの、または他の典型的な構成が用いられ得る。
The output of the
RISCの大部分とJava(登録商標)VM命令セットとが重複するので、結合RISC/Java(登録商標)プロセッサはハードウェア資源を共有するが、個別のJava(登録商標)命令デコーダと、プロセッサがそのJava(登録商標)状態にあるときに実行を引き継ぐ制御モジュール11とを備える。プロセッサは、その状態レジスタ21を通じて実行状態の経過を追い、実行状態を継目なく変更することができる。プロセッサ
をその一部に含むより大きなランタイムシステムでは、典型的には異なるプロセスの経過を追い、負荷配分するオペレーティングシステムがある。Java(登録商標)プログラムは典型的にはそのようなプロセスのいくつかのうちの1つである。ネイティブプロセス(RISCまたはCISC)へのコンテキスト切替と比較して、Java(登録商標)プロセスへのコンテキスト切替に関連する余分のオーバーヘッドは、たとえあったとしても僅かである。さらに、プロセッサが命令デコーダを切り替える(RISC制御モジュール13からJava(登録商標)制御モジュール11へ、またはその逆に)とき、それはシステムによって設定されたセキュリティレベルに影響しない。さらに、Java(登録商標)プログラムは、原則的には、プロセッサのモード設定と干渉することなく異なる割込みレベルから実行することができるが、対応するRISC割込みルーチンに比較してレイテンシが増大しているので、一般に割込みルーチンがJava(登録商標)で書かれることは推奨されない。
Because the majority of RISC overlaps with the Java VM instruction set, the combined RISC / Java processor shares hardware resources, but separate Java instruction decoders and processors And a control module 11 that takes over execution when in the Java (registered trademark) state. The processor keeps track of the execution state through the state register 21 and can change the execution state seamlessly. In larger runtime systems that include processors as part of them, there are typically operating systems that keep track of the different processes and distribute the load. A Java program is typically one of several such processes. Compared to context switching to a native process (RISC or CISC), there is little, if any, overhead associated with context switching to a Java process. Furthermore, when the processor switches instruction decoders (from
図2を参照して、マイクロプロセッサは、初期化コードを実行するためにRISC状態で起動する(51)。初期化52の後に、マイクロプロセッサは正常なRISCプロセッサとしてアプリケーションを実行することができ、またはJava(登録商標)状態に切替わって(53)Java(登録商標)プログラムの実行を開始してもよい(54)。Java(登録商標)プログラムを呼び出すために、他のアプリケーションと同じくJava(登録商標)VMが呼び出される。特に、Java(登録商標)VMは初期化ルーチンを実行し、次に、クラスを解析してJava(登録商標)プログラムの実行を開始するのに必要なレジスタを初期化するクラスローダが後続する。クラスローダにおける最後の命令は、プロセッサをJava(登録商標)状態に設定するjcall命令である。これは、命令デコーダがここではネイティブRISC命令コードの代わりにJava(登録商標)命令コードをデコードすることを意味する。マイクロプロセッサは、以下の事象のうち1つが生じるまでJava(登録商標)状態で動作し続ける:RISCモードに切替わって戻るための指定Java(登録商標)命令コード(58)、割込みリクエスト(59)、または実現されていないJava(登録商標)命令(60)である。これらの事象のうちいずれかが生じれば、プロセッサは定義済みのアドレスにジャンプし、RISCモードに切替わって(55)このやり方で事象を処理する。RISCルーチンを終了する際(56)、プロセッサはRETJ命令を用いてJava(登録商標)状態に戻り(57)、それが終わった時点においてJava(登録商標)コードを実行し続ける。
Referring to FIG. 2, the microprocessor starts in a RISC state to execute initialization code (51). After
このように、プロセッサはJava(登録商標)状態でプログラムのJava(登録商標)部分を実行することができる。このような部分は、企業のソフトウェアライブラリにおいて既に実現されているネットワーク能力またはアルゴリズムであってもよく、再使用のためのレガシーソフトウェア(legacy software)のモジュールを構成することができる。プロセッサのRISC状態は、複雑なJava(登録商標)命令をRISCマイクロコードとして実行することによって(60)Java(登録商標)コードの実行を補助する。それはさらに、たとえばセンサおよびアクチュエータなどの高度に専門化された周辺機器を制御するために用いることができる柔軟なハードウェアインタフェースをも与える。 In this way, the processor can execute the Java (registered trademark) part of the program in the Java (registered trademark) state. Such a portion may be a network capability or algorithm already implemented in the enterprise software library, and may constitute a legacy software module for reuse. The RISC state of the processor assists in the execution of (60) Java code by executing complex Java instructions as RISC microcode. It also provides a flexible hardware interface that can be used to control highly specialized peripherals such as sensors and actuators.
Java(登録商標)VM仕様と互換性を有するために、すべてのJava(登録商標)命令を実現する必要がある。しかしながら、中小のアプリケーションをターゲットにした組込プロセッサにおいては、Java(登録商標)仮想マシンにサポートされる数の書式のいくつかは限度を越えている。たとえば、このセグメントでは浮動小数点ユニットを提供するプロセッサはほとんどない。Java(登録商標)のより複雑な命令のいくつかはトラップされてマイクロコードとして実行されなければならない。「複雑な」というのは、単一のJava(登録商標)命令が、実行のために複数のマシンクロックサイクルを必要とすることを意味する。Java(登録商標)プログラムの実行中、プロセッサがハ
ードウェアでサポートされないバイトコードに遭遇する場合は常に、命令デコーダは自動的にこれらのバイトコードを認識し、プロセッサをそのRISC状態に切り替えて、同時に、定義済みのエントリポイント(Java(登録商標)トラップ基底アドレスシステムレジスタに格納されたアドレスに相対して定義され、オフセットは特定のトラップされた命令に依存して基底アドレスに適用される)にジャンプする。次いで、それはトラップされたバイトコードの意味を実施するRISCソフトウェアルーチンを実行する。終了すると、ルーチンはJava(登録商標)状態に戻る命令(RETJ)で終わる。
In order to be compatible with the Java (registered trademark) VM specification, it is necessary to implement all Java (registered trademark) instructions. However, in embedded processors targeting small and medium applications, some of the number formats supported by the Java virtual machine are beyond limits. For example, few processors provide floating point units in this segment. Some of Java's more complex instructions must be trapped and executed as microcode. “Complex” means that a single Java instruction requires multiple machine clock cycles for execution. During the execution of a Java program, whenever the processor encounters bytecodes that are not supported in hardware, the instruction decoder automatically recognizes these bytecodes and switches the processor to its RISC state at the same time. Jump to a predefined entry point (defined relative to the address stored in the Java trap base address system register, offset applied to the base address depending on the particular trapped instruction) To do. It then executes a RISC software routine that implements the meaning of the trapped bytecode. When finished, the routine ends with an instruction (RETJ) to return to the Java state.
いずれのJava(登録商標)命令をトラップするか、またいずれをハードウェアで直接実現するかは、通常、設計者によって決定される実現形態固有の問題である。典型的には、Java(登録商標)オブジェクトを生成したり操作したりする命令がトラップされる。他のトラップされる命令は、長い(64ビットまたはマルチワード)データタイプで動作するもの、浮動およびダブルのタイプのもの、および設計されたアーキテクチャと互換性がないものを含むことができる。 Which Java (registered trademark) instructions are trapped and which are directly implemented in hardware are usually implementation-specific issues determined by the designer. Typically, instructions for creating and manipulating Java objects are trapped. Other trapped instructions can include those that operate on long (64-bit or multiword) data types, those that are floating and double types, and those that are not compatible with the designed architecture.
この発明は、本願明細書に記載されたRISCアーキテクチャに加えて他の型のRISCアーキテクチャと共に用いることもできるので、いずれのRISC命令セットを用いるかは選ばれるRISCモデルに依存する。(上述のように、この発明はまた、CISCアーキテクチャおよび命令セットとともに使用するようにも適合可能である。)
図3を参照して、プロセッサのレジスタファイルは、そのJava(登録商標)状態においてプッシュポップスタックの機能を有するが、ネイティブRISC状態においては従来のロード/ストアレジスタファイルとして機能する。これはさらに、2つの仮想プロセッサが通信することを可能にするモジュールでもあり、Java(登録商標)スタックにおいて与えられた値はRISC状態のプロセッサによってアクセスされ得る。図3は、RISCモードおよびJava(登録商標)モードから見られるようにレジスタファイルの半分を示す。レジスタ80、81、…、82は、Java(登録商標)制御部61および回路71のRISC部分の両方から見られる。
Since the present invention can be used with other types of RISC architectures in addition to the RISC architecture described herein, which RISC instruction set is used depends on the RISC model chosen. (As mentioned above, the present invention is also adaptable for use with CISC architectures and instruction sets.)
Referring to FIG. 3, the processor register file has a push-pop stack function in its Java (registered trademark) state, but functions as a conventional load / store register file in the native RISC state. This is also a module that allows two virtual processors to communicate, and the values given in the Java stack can be accessed by processors in the RISC state. FIG. 3 shows half of the register file as seen from the RISC mode and Java mode.
レジスタファイルアーキテクチャのRISC図71は、ロード/ストアレジスタ0からMまでのセットとしてレジスタ要素80、81、…、82を見、RISCアーキテクチャは、特定のレジスタを出所または行先として指定する対応するロード/ストア命令72、73、…、74を用いてこれらのレジスタをデータメモリとインターフェイスする。プログラムカウンタ、リンクレジスタおよびスタックポインタが汎用レジスタと一緒にレジスタファイルに含まれることを思い出されたい。直交性(orthogonality)を保つために、これらの特別なレジスタは他の任意のレジスタと同じくアクセス可能である。
RISC FIG. 71 of register file architecture sees register
Java(登録商標)制御部61は、典型的には約(M+l)/2のレジスタ要素を備えた同じレジスタファイルをプッシュポップスタックとして見る。データはレジスタスタックにプッシュされ(62)、レジスタスタックからJava(登録商標)制御部へポップする(63)。とりわけ、プログラムカウンタ、スタック制御レジスタおよび一時的スクラッチパッドレジスタ用に、残りのレジスタが用いられてもよい。スタックは循環スタックとして実現され、必要とされるスタックのサイズは比較的小さい。スタックのサイズはスケーラブルであり、スタック要素の数は実現形態固有の問題として残される。スタックオーバーフロー/アンダフローは、オーバーフロー/アンダフロー機構を通してメモリ83内にコピーすることができる。あり得るスタックオーバーフロー/アンダフロー機構も場合に応じた態様で開発することができる。
The Java (registered trademark)
図4は、マイクロプロセッサを1つの状態から別の状態へ変換するための機構の1つの可能な実現形態を示す。Java(登録商標)制御モジュール120およびRISC制御モジュール122は、マルチプレクサ124を通してプロセッサの共用データパスに至る
制御線130に接続される。状態レジスタ126は、Java(登録商標)制御モジュール120およびRISC制御モジュール122に与えられるJava(登録商標)状態ビット128を包含し、かつこれらの制御部のいずれが動作中かを決定する。Java(登録商標)状態ビット128は、マルチプレクサ124による選択制御としても機能する。制御は両方の制御モジュールにおいて定義済みの状態で変換される。したがって制御は同期して変換され、両方の機械が定義された同じ状態になる。
FIG. 4 shows one possible implementation of a mechanism for converting a microprocessor from one state to another. The Java
Java(登録商標)命令トラップは典型的な割込み機構のステップに類似のステップを含む。実現されない命令が発生すると、JAVA(登録商標)制御モジュールはこれを検出し、戻りアドレスがスタックトップに格納される。次いで、プロセッサはRISCモードに切替わり、メモリの定義済みの位置からジャンプアドレスをフェッチする。次いで、RISCモジュールは、最後のステップでフェッチされたアドレスにおいて実行を継続する。最初の第1のジャンプアドレスだけが設計中に事前定義されるので、トラップ機構が割込み機構に類似していることにより最大の柔軟度を達成する。これはソフトウェアリンカが、プログラム内に実際に存在するJava(登録商標)命令コード用のRISCルーチンのみをリンクすることによりメモリ使用量を最適に計画することを可能にし、したがって貴重なメモリ空間を節約する。RISCルーチンは、スタックトップからプログラムカウンタをポップしてプログラムカウンタレジスタ内に保存することにより終了すべきである。これは、Java(登録商標)プログラムが正しい場所で継続することを確実にする。さらに、マイクロプロセッサはスタックオーバーフロー/アンダフロー処理機構を有する。Java(登録商標)プッシュポップスタックにおけるこの機構は、命令トラップ用の既存の論理を再使用することにより実現することができる。オーバーフローが発生すると、プロセッサはオーバーフローフラグをトラップして定義済みアドレスにジャンプし、そこでオーバーフロー/アンダフロー条件を処理するソフトウェア手順へのジャンプベクタを見つける。 Java instruction traps contain steps similar to those of a typical interrupt mechanism. When an unrealized instruction occurs, the JAVA (registered trademark) control module detects this, and the return address is stored at the top of the stack. The processor then switches to RISC mode and fetches the jump address from a predefined location in memory. The RISC module then continues execution at the address fetched in the last step. Since only the first first jump address is predefined during the design, the trap mechanism is similar to the interrupt mechanism to achieve maximum flexibility. This allows the software linker to optimally plan memory usage by linking only RISC routines for Java instruction code that actually exist in the program, thus saving valuable memory space. To do. The RISC routine should end by popping the program counter from the top of the stack and storing it in the program counter register. This ensures that the Java program continues in the right place. Further, the microprocessor has a stack overflow / underflow processing mechanism. This mechanism in the Java push pop stack can be implemented by reusing existing logic for instruction traps. When an overflow occurs, the processor traps the overflow flag and jumps to a predefined address where it finds a jump vector to the software procedure that handles the overflow / underflow condition.
図5を参照して、Java(登録商標)状態とRISC状態とではレジスタファイルの機能が異なる。既に上述されたように、両方の状態において、プログラムカウンタ(PC)、リンクレジスタ(LR)、およびシステムまたはアプリケーションスタックポインタ(SP)に対して3つのレジスタ(ここではR15−R13)が専ら与えられる。RISC状態においては、レジスタファイル90の他のレジスタ(ここではR12−R0)は、アドレス指定オペランドなどの正常なRISC動作に利用可能である。Java(登録商標)状態では、Java(登録商標)VMはゼロオペランドスタックマシンとして実行するので、レジスタファイル機能はプッシュポップスタックを容易にするために変更され、そこでオペランドスタックの現在のトップはToSからToS−7(ここではレジスタR7−R0を使用)のいずれかであり得る。さらに、他のレジスタ(R9およびR8など)は、Java(登録商標)ローカル変数0(システムレジスタ空間100における7つのJava(登録商標)ローカル変数レジスタ104のうち1つ)を指定する現在のフレームのためのアドレスを包含するフレームレジスタとして、かつ現在のJava(登録商標)クラスの定数プールへのアドレスを包含する定数プールレジスタとして、Java(登録商標)において用いられてもよい。Java(登録商標)ローカル変数レジスタに加えて、システムレジスタ空間100は、現在のオペランドスタックトップ(ここでもToSからToS−7までのいずれか)を指定するオペランドスタックポインタ102を含む。
Referring to FIG. 5, the function of the register file is different between the Java (registered trademark) state and the RISC state. As already mentioned above, in both states, three registers (here R15-R13) are given exclusively to the program counter (PC), link register (LR), and system or application stack pointer (SP). . In the RISC state, the other registers in register file 90 (here R12-R0) are available for normal RISC operations such as addressing operands. In the Java state, since the Java VM runs as a zero operand stack machine, the register file function has been changed to facilitate push-pop stacks, where the current top of the operand stack is from ToS. It can be any of ToS-7 (here, registers R7-R0 are used). In addition, other registers (such as R9 and R8) have a current local frame 0 that specifies Java local variable 0 (one of the seven Java local
Java(登録商標)オペランドスタック(ToSからToS−7)は、Java(登録商標)命令によって動作される値および動作の結果を保持する。オペランドスタックは現在の方法フレームの一部であり、オペランドスタックの一部は動作を促進するためにレジスタファイルに保持される。ここに示されるように、レジスタファイルは典型的にはオペランドスタックの最大8つの要素を保持し、スタックの残りはJava(登録商標)VMフレームの一部としてメモリに格納されている。(フレームは、Java(登録商標)
メソッドの実行をサポートするためのすべての変数および基準値を保持するランタイムデータ構造であり、メソッドへの入力引数と同様に、呼び出されたメソッドから出力される引数も包含することができる。メソッドが呼び出されるとフレームが割り付けられ、プログラムがメソッドから戻ると破棄される。例示的なフレームは、オペランドスタック、ローカル変数、次のフレームが置かれ得る自由なメモリ空間へのポインタ、メソッドへの戻りアドレス、前のメソッドのためのフレームポインタ、ならびに前のメソッドのための一定のプールポインタおよびスタックポインタを含み得る。システムレジスタ100は、2つの機能を有するJava(登録商標)オペランドスタックポインタ102を含む。それはオペランドスタック上の要素の数を示し、かつ現在のスタックトップを保持するレジスタを(たとえばビット[2:0]で)指定する。オペランドスタックポインタが0値に初期化され、これはオペランドスタックが空であることを意味する。オペランドスタックがオーバーフローするかアンダフローした場合は例外が生成され、例外ルーチンは、オペランドスタックのコンテンツをレジスタファイルからメモリに格納された現在のメソッドフレームにコピーすることを担う(たとえば、最大8つの要素のスタックを包含するレジスタファイルにおいて、第9の要素がスタックにプッシュされる場合は常にオーバーフロー条件が生じる。空のスタックからアクセスが試みられる場合はアンダフロー条件が生じる)。
The Java (R) operand stack (ToS to ToS-7) holds the values and the results of operations performed by Java (R) instructions. The operand stack is part of the current method frame, and part of the operand stack is kept in a register file to facilitate operation. As shown here, a register file typically holds up to eight elements of an operand stack, with the remainder of the stack being stored in memory as part of a Java VM frame. (The frame is Java (registered trademark).
A runtime data structure that holds all variables and reference values to support method execution, and can include arguments output from the invoked method as well as input arguments to the method. A frame is allocated when the method is called, and discarded when the program returns. An exemplary frame includes an operand stack, local variables, a pointer to free memory space where the next frame can be placed, a return address to the method, a frame pointer for the previous method, and a constant for the previous method Pool pointers and stack pointers. The system register 100 includes a Java (registered trademark)
トラップルーチンは、プロセッサのRISC状態においてJava(登録商標)オペランドスタックにアクセスする必要がある。Java(登録商標)オペランドスタックポインタ102を読出し、それを正しいレジスタに翻訳しなければならないという厄介なプロセスを回避するために、プロセッサのJava(登録商標)制御部は、制御をRISCユニットに転送することに先立って、再マップされたレジスタファイル90aを生成するレジスタ再マップ動作を実行し、それはスタックトップ(ToS)が常にレジスタR7にあり、ToS−1が常にレジスタR6にある、などと続くことを確実にする。状態レジスタ101では再マップビットRMが与えられる。プロセッサがスタックマシンとして動く場合、すなわちJava(登録商標)状態では常にこの再マップビットRMは無視される。しかしながら、プロセッサのネイティブRISC状態では、再マップビットRMは下記の意味を有する:
if RM is 0, then
アクセスされるレジスタ番号=特定されるレジスタ番号
(すなわち再マップは生じない);
if RM is 1, then
アクセスされるレジスタ番号=オペランドスタックポインタの最大値−オペランドスタックポインタ値。
The trap routine needs to access the Java (R) operand stack in the processor's RISC state. To avoid the cumbersome process of having to read the Java
if RM is 0, then
Register number accessed = Register number specified (ie no remapping occurs);
if RM is 1, then
Register number to be accessed = maximum value of operand stack pointer−operand stack pointer value.
たとえば、ToSからToS−7までの8つのレジスタスタックでは、オペランドスタックポインタの最大値は7である。再マップビットRMが「1」に設定されると、R7からR0へのレジスタ番号は、ToSからToS−7までのスタック要素をそれぞれ保持するレジスタにアクセスする。add R7, R6というRISC命令は、ToSおよびToS−1を有効に加算する。オペランドスタックポインタがレジスタR3を指定した場合、ToSおよびToS−1が格納される実際のレジスタはそれぞれR3およびR2であり、加算演算器はこれら2つの物理レジスタを加算演算に用いる。 For example, in the eight register stacks from ToS to ToS-7, the maximum value of the operand stack pointer is 7. When the remapping bit RM is set to “1”, the register number from R7 to R0 accesses the registers respectively holding the stack elements from ToS to ToS-7. The RISC instructions add R7 and R6 effectively add ToS and ToS-1. When the operand stack pointer specifies the register R3, the actual registers in which ToS and ToS-1 are stored are R3 and R2, respectively, and the adder uses these two physical registers for the addition operation.
図7は、再マップ装置173がRISCプロセッサの制御部171の外部に取付けられる典型的な配列を示す。各再マップ装置173を形成する論理回路は、レジスタファイル175にある読書きポートの数と同じ回数反復実行される。各再マップ装置173は、制御入力RM(RM=1であれば再マップ動作を可能にし、RM=0であれば再マップなく受取られるレジスタアドレスをパスする)および、スタックトップの位置を表示するJava(登録商標)オペランドスタックポインタ(図5の102)からのJOSPを有する
。(JOSPは、一般に再マップ可能なレジスタ位置の数に対応するマルチビット信号である。)各再マップ装置173はレジスタアドレス入力173Iおよびレジスタアドレス出力173Oを有する。レジスタアドレス入力173Iはプロセッサ制御論理171から個別のレジスタアドレスを受取る。次いで、レジスタアドレス出力173Oは、対応する物理レジスタアドレスをレジスタファイル171のポートに出力する。図5において与えられた例では、Java(登録商標)オペランドスタックポインタ102はスタックトップ値3を与え(JOSP=3)、次いでRM=1の場合は常に、レジスタアドレス入力173Iがそれぞれ7および6であれば(たとえばadd R7, R6という命令について)、レジスタアドレス出力173Oは、レジスタファイル175のレジスタR3およびR2にアクセスするために、実際の物理的位置として再マップされた値3および2を与える。
FIG. 7 shows a typical arrangement in which the remapping device 173 is mounted outside the
オペランドスタックに対して新しい値をプッシュするとき、スタックの一貫性を確実にするために、特別な、インクリメントJava(登録商標)オペランドスタックポインタ命令「incjosp」を用いなければならない。この命令は、オペランドスタックポインタ102を特定された量Nずつインクリメントし、それにより、すべてのオペランドスタック要素をN要素分だけ下にプッシュする。これは、スタックトップのN要素を自在にする。スタックの上に進む値は、その後R7に移動させることができる。オペランドスタックポインタをディクリメントすることにより、スタックから要素をポップするためにincjosp命令を用いることもできる。命令はさらに、以前に記載された態様でスタックのオーバーフロー/アンダフロー条件が生じれば、これを自動的に処理する。
When pushing a new value on the operand stack, a special increment Java operand stack pointer instruction “incjosp” must be used to ensure stack consistency. This instruction increments the
さらに、Java(登録商標)ローカル変数は、システムレジスタ104が最初の8つの変数についてそうであるように、RISCトラップルーチンに対してアクセス可能である。より多くの変数については、それらはメモリにおける現在のフレームにおいてアクセス可能である。 In addition, Java local variables are accessible to the RISC trap routine, as is the system register 104 for the first eight variables. For more variables, they are accessible in the current frame in memory.
図6を参照して、このプロセッサ概念を備えたシステムのための典型的なランタイム環境が示される。開発者は、通常のJava(登録商標)コンパイラ142にJava(登録商標)ソースコード141をコンパイルし、Java(登録商標)バイトコード144を得ることができる。プロセッサが、ファイルローダおよび自動メモリ管理システムを備えたオペレーティングシステムを収容する場合、このプロセスの残りはダイナミックにかつ自動的に生じることができる。しかしながら、小さな組込システムはしばしばオペレーティングシステムを必要としないので、このプロセスの残りは、プログラムのメモリ画像を外部プラットフォーム上に形成しなければならないという意味で、手動で行われなければならない。Java(登録商標)バイトコード144はリンカ148を通して解析しなければならない。リンカを通して走るプログラムは、(1)バイトコードがいかなる不法な命令コードも包含していないことを証明し、使用先ソリューションに依存してコードまたはオペランドを修正し、(2)アプリケーションを特定されたJava(登録商標)クラスランタイムライブラリ145とリンクし、(3)アセンブリコードをRISC部分143にリンクし、ヒープ領域を設定し、ブランチアドレスおよびジャンプアドレスをセットアップし、メモリマップを作る。リンカからの出力は、組込システム152におけるROMまたはフラッシュメモリ151に転送することができるメモリイメージである。Java(登録商標)プロセッサを作る目的の大部分は、プログラマができるだけ制約なくJava(登録商標)プログラミング言語を用いることができることである。しかしながら、この場合、サポートされたタイプしか用いることができず、限定されたランタイムライブラリのみが利用可能である。しかしながらこれらの制約は、Java(登録商標)の主な特徴の使用については限定的ではない。
Referring to FIG. 6, a typical runtime environment for a system with this processor concept is shown. A developer can compile Java (registered trademark)
Java(登録商標)VM仕様は現在201の命令を包含しており、その多くはタイプ固有であってさまざまなデータタイプのために本質的に複製する。ハードウェアで実現さ
れる命令の数およびトラップされる命令の数は、用いられるRISCアーキテクチャに依存する。他の型のRISCアーキテクチャは、ハードウェアで実現され、トラップされる多くの命令に影響する。以下の命令は、小さな組込プロセッサにおいては重要なものと考慮されないので、この発明の好ましい実施例においてハードウェアで実現されない。「浮動」タイプのすべての命令、「ダブル」タイプのすべての命令、「長い」タイプのすべての命令である。これにより、201のあり得るJava(登録商標)命令からおよそ90の命令がなくなる。残りの命令のうち、68の命令がJava(登録商標)仮想マシンで実現され、43の命令がトラップされてRISCルーチンとして実行される。トラップされ、RISCルーチンとして実行されたJava(登録商標)命令は、以下の表1で示される。
The Java VM specification currently contains 201 instructions, many of which are type specific and essentially duplicate for various data types. The number of instructions implemented in hardware and the number of instructions trapped depends on the RISC architecture used. Other types of RISC architectures are implemented in hardware and affect many instructions that are trapped. The following instructions are not implemented in hardware in the preferred embodiment of the present invention because they are not considered critical in small embedded processors. All instructions of "floating" type, all instructions of "double" type, all instructions of "long" type. This eliminates approximately 90 instructions from 201 possible Java (registered trademark) instructions. Of the remaining instructions, 68 instructions are realized in the Java (registered trademark) virtual machine, and 43 instructions are trapped and executed as a RISC routine. Java instructions that have been trapped and executed as a RISC routine are shown in Table 1 below.
これらの実現例選択で、一般にJava(登録商標)命令の少なくとも70%はプロセッサにおいて直接実行される一方、最大30%がトラップされてRISCプログラムとし
て実行される。これらの率は動的な測定から派生し、典型的にはほとんどのJava(登録商標)プログラムについて約90%と10%とになるだろう。いずれのJava(登録商標)命令をトラップしてRISCプログラムとして実行するべきかに関する他の選択は、ハードウェア設計およびレイテンシ要件に大部分依存して行なうことができる。
With these implementation choices, typically at least 70% of Java instructions are executed directly in the processor, while up to 30% are trapped and executed as a RISC program. These rates are derived from dynamic measurements and will typically be about 90% and 10% for most Java programs. Other choices regarding which Java instructions to trap and execute as a RISC program can be made largely depending on hardware design and latency requirements.
この発明は、トラップされたJava(登録商標)命令の実行中、Java(登録商標)オペランドスタック値へのRISCアクセスを向上させる。レジスタ位置の再マップは、トラップされた命令のRISC実行がJava(登録商標)オペランドスタックトップに正確にアクセスし、Java(登録商標)状態に戻る際にトラップされた動作の結果がアクセス可能であることを確実にする。 The present invention improves RISC access to Java operand stack values during execution of trapped Java instructions. Register location remapping allows the RISC execution of the trapped instruction to accurately access the Java operand stack top, and the result of the trapped operation is accessible when returning to the Java state. Make sure.
Claims (23)
プロセッサコアと、
前記プロセッサコアにおいてJava(登録商標)命令の第1のセットを実行するためのJava(登録商標)制御モジュールと、
前記プロセッサコアにおいてネイティブ命令を実行するため、かつ前記プロセッサコアにおいてJava(登録商標)命令の第2のセットをネイティブマイクロコードとして実行するための、ネイティブ制御モジュールと、
前記Java(登録商標)制御モジュールおよびネイティブ制御モジュールにアクセス可能なシステムレジスタのセットとを含み、前記セットは、前記制御モジュールのいずれが所与の時間に動作可能であるかを指定するプロセッサ状態制御情報を包含する状態レジスタを含み、さらに
前記プロセッサコアのデータパスにありかつ両方の制御モジュールによってアクセス可能なレジスタファイルを含み、前記レジスタファイルは複数のレジスタ要素を含み、前記ネイティブ制御モジュールは複数のレジスタ要素をストレージレジスタとして見なし、Java(登録商標)制御モジュールはレジスタ要素の第1の部分をJava(登録商標)オペランドスタックとして、かつレジスタ要素の第2の部分をストレージレジスタとして見なし、
前記システムレジスタのセットは、現在のスタックトップである前記レジスタファイルのそのレジスタ要素を指定するJava(登録商標)オペランドスタックポインタをも含み、前記状態レジスタはJava(登録商標)レジスタ再マップビットをも包含し、それにより再マップビットが設定されると常に、前記第2のセットのJava(登録商標)命令をネイティブマイクロコードとして実行する前記ネイティブ制御モジュールは、ネイティブマイクロコードで命令によって特定されるレジスタ番号をスタックトップに対して特定されたレジスタ要素に対応するよう処理する、マイクロプロセッサ。 A microprocessor for executing byte-compiled Java (registered trademark) code as hardware,
A processor core,
A Java control module for executing a first set of Java instructions in the processor core;
A native control module for executing native instructions in the processor core and for executing a second set of Java instructions as native microcode in the processor core;
A set of system registers accessible to the Java® control module and a native control module, wherein the set specifies which of the control modules is operational at a given time A status register containing information, further including a register file in the data path of the processor core and accessible by both control modules, the register file including a plurality of register elements, and the native control module including a plurality of The register element is considered as a storage register, the Java control module regards the first part of the register element as a Java operand stack and the second part of the register element as a storage register;
The set of system registers also includes a Java operand stack pointer that points to that register element of the register file that is the current stack top, and the status register also has a Java register remap bit. And the native control module that executes the second set of Java instructions as native microcode whenever a remapping bit is set is included in the register specified by the instruction in the native microcode. A microprocessor that processes numbers to correspond to register elements specified for the stack top.
(a)Java(登録商標)命令の第1のサブセットの前記マイクロプロセッサによる直接の実行を制御するためのJava(登録商標)制御モジュールと、ネイティブ命令の前記マイクロプロセッサによる直接の実行を制御するためのネイティブ制御モジュールとを与えるステップを含み、前記ネイティブ制御モジュールは、Java(登録商標)命令の第2のサブセットのネイティブマイクロコードとしての実行をも制御し、マイクロプロセッサはマイクロプロセッサのデータパスにおけるレジスタファイルとシステムレジスタのセットとを有し、両方とも前記Java(登録商標)制御モジュールおよび前記ネイティブ制御モジュールによってアクセス可能であり、前記レジスタファイルは複数のレジスタ要素を含み、したがって前記ネイティブ制御モジュールは複数のレジスタ要素をストレージレジスタとして見なし、Java(登録商標)制御モジュールはレジスタ要素の第1の部分をJava(登録商標)オペランドスタックとして見なし、かつレジスタ要素の第2の部分をストレージレジスタとして見なし、システムレジスタのセットはJava(登録商標)オペランドスタックポインタを含み、ポインタは現在のスタックトップであるレジスタファイルにおけるレジスタ要素を指定し、システムレジスタのセットはJava(登録商標)レジスタ再マップビットを包含する状態レジスタをも含み、さらに
(b)第2のセットのJava(登録商標)命令が認識されるまで、Java(登録商標)制御モジュールの制御下においてJava(登録商標)命令の第1のセットをマイクロプロセッサによって実行するステップと、
(c)前記第2のセットのJava(登録商標)命令を認識する際に、そのJava(登録商標)命令のための対応するネイティブマイクロコードにアクセスし、Java(登録商標)レジスタ再マップビットを設定し、前記ネイティブ制御部に動作を引き渡してネイティブマイクロコードを実行するステップを含み、そのため、前記マイクロコードにおいてネイティブ命令を実行するとき、これらのネイティブ命令によって特定されるレジスタは、現在のスタックトップに対する前記レジスタファイルの特定されたレジスタ要素に対応するよう処理され、さらに
(d)前記第2のセットのJava(登録商標)命令のためのマイクロコード完了の際、前記Java(登録商標)制御部に動作を戻し、次のJava(登録商標)命令において実行を再開するステップと、
(e)すべてのJava(登録商標)命令が完了するまで(b)から(d)までのステップを繰返すステップとを含む、方法。 A method of executing Java instructions on a microprocessor, wherein a subset of the Java instructions is executed as microcode native to the microprocessor, the method comprising:
(A) a Java control module for controlling the direct execution of a first subset of Java instructions by the microprocessor, and for controlling the direct execution of native instructions by the microprocessor; A native control module that also controls the execution of the second subset of Java instructions as native microcode, wherein the microprocessor is a register in the microprocessor data path. A file and a set of system registers, both of which are accessible by the Java control module and the native control module, the register file including a plurality of register elements, and thus the The active control module regards multiple register elements as storage registers, the Java ™ control module regards the first part of the register elements as a Java operand stack, and the second part of the register elements as storage Regarded as registers, the set of system registers includes a Java operand stack pointer, the pointer specifies a register element in the register file that is the current stack top, and the set of system registers is a Java register remapping A status register containing the bits; and (b) the Java instruction's first instruction under control of the Java control module until a second set of Java instructions is recognized. 1's Performing a Tsu bets by the microprocessor,
(C) Upon recognizing the second set of Java instructions, the corresponding native microcode for the Java instruction is accessed and the Java register remap bit is set. Set and pass operations to the native controller to execute native microcode, so when executing native instructions in the microcode, the registers specified by these native instructions are the current stack top And (d) upon completion of the microcode for the second set of Java instructions, the Java controller is processed to correspond to the specified register element of the register file for In the next Java (registered trademark) instruction A step to resume execution;
(E) repeating the steps (b) to (d) until all Java instructions are completed.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/107,235 US7478224B2 (en) | 2005-04-15 | 2005-04-15 | Microprocessor access of operand stack as a register file using native instructions |
PCT/US2006/008991 WO2006112978A2 (en) | 2005-04-15 | 2006-03-08 | Microprocessor access of operand stack as a register file using native instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008536240A true JP2008536240A (en) | 2008-09-04 |
Family
ID=37109920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008506461A Abandoned JP2008536240A (en) | 2005-04-15 | 2006-03-08 | Microprocessor access using native instructions to the operand stack as a register file |
Country Status (9)
Country | Link |
---|---|
US (1) | US7478224B2 (en) |
EP (1) | EP1875338A4 (en) |
JP (1) | JP2008536240A (en) |
KR (1) | KR20070118663A (en) |
CN (1) | CN101156131A (en) |
CA (1) | CA2604250A1 (en) |
NO (1) | NO20075885L (en) |
TW (1) | TW200705263A (en) |
WO (1) | WO2006112978A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016539423A (en) * | 2013-11-27 | 2016-12-15 | シャンハイ シンハオ マイクロエレクトロニクス カンパニー リミテッド | Instruction set conversion system and method |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
KR20020028814A (en) | 2000-10-10 | 2002-04-17 | 나조미 커뮤니케이션즈, 인코포레이티드 | Java hardware accelerator using microcode engine |
US7478224B2 (en) | 2005-04-15 | 2009-01-13 | Atmel Corporation | Microprocessor access of operand stack as a register file using native instructions |
US20070282928A1 (en) * | 2006-06-06 | 2007-12-06 | Guofang Jiao | Processor core stack extension |
US7979685B1 (en) | 2007-11-27 | 2011-07-12 | Oracle America, Inc. | Multiple instruction execution mode resource-constrained device |
CN101216756B (en) * | 2007-12-28 | 2011-03-23 | 中国科学院计算技术研究所 | RISC processor processor arrangement and its floating point stack manipulation simulation method |
US10802990B2 (en) * | 2008-10-06 | 2020-10-13 | International Business Machines Corporation | Hardware based mandatory access control |
US8639882B2 (en) * | 2011-12-14 | 2014-01-28 | Nvidia Corporation | Methods and apparatus for source operand collector caching |
CN102722353B (en) * | 2012-05-22 | 2015-09-23 | 广州晶锐信息技术有限公司 | Floating-point unit of Java processor and control method thereof |
US9405534B2 (en) | 2013-01-21 | 2016-08-02 | Tom Yap | Compound complex instruction set computer (CCISC) processor architecture |
US9110657B2 (en) | 2013-01-21 | 2015-08-18 | Tom Yap | Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture |
US20160381050A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
MA44821A (en) * | 2016-02-27 | 2019-01-02 | Kinzinger Automation Gmbh | PROCESS FOR ALLOCATING A STACK OF VIRTUAL REGISTERS IN A BATTERY MACHINE |
FR3070775B1 (en) * | 2017-09-04 | 2019-08-23 | Vsora | DYNAMIC ALLOCATION USING MULTIPLE BATTERIES |
CN111625328B (en) * | 2020-05-15 | 2023-06-02 | 芯来智融半导体科技(上海)有限公司 | Interrupt device, system and method suitable for RISC-V architecture |
CN112199160B (en) * | 2020-10-16 | 2021-12-28 | 常熟理工学院 | Virtual instruction recovery method, device, equipment and storage medium |
CN112199116B (en) * | 2020-10-16 | 2023-08-11 | 常熟理工学院 | Operand stack register identification method, device, equipment and storage medium |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058473A (en) * | 1993-11-30 | 2000-05-02 | Texas Instruments Incorporated | Memory store from a register pair conditional upon a selected status bit |
US6076155A (en) * | 1995-10-24 | 2000-06-13 | S3 Incorporated | Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets |
US5701508A (en) * | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
KR100513138B1 (en) * | 1996-01-24 | 2005-09-07 | 선 마이크로시스템즈 인코퍼레이티드 | A processor for executing instruction sets received from a network or from a local memory |
US6038643A (en) * | 1996-01-24 | 2000-03-14 | Sun Microsystems, Inc. | Stack management unit and method for a processor having a stack |
US6026485A (en) * | 1996-01-24 | 2000-02-15 | Sun Microsystems, Inc. | Instruction folding for a stack-based machine |
DE69734399D1 (en) * | 1996-01-24 | 2006-03-02 | Sun Microsystems Inc | METHOD AND DEVICE FOR STACKING CACHE STORAGE |
JP3635153B2 (en) * | 1996-05-28 | 2005-04-06 | 株式会社東芝 | Electron gun for cathode ray tube and cathode ray tube |
US5812868A (en) * | 1996-09-16 | 1998-09-22 | Motorola Inc. | Method and apparatus for selecting a register file in a data processing system |
US5937193A (en) * | 1996-11-27 | 1999-08-10 | Vlsi Technology, Inc. | Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof |
US6513156B2 (en) * | 1997-06-30 | 2003-01-28 | Sun Microsystems, Inc. | Interpreting functions utilizing a hybrid of virtual and native machine instructions |
US5978901A (en) * | 1997-08-21 | 1999-11-02 | Advanced Micro Devices, Inc. | Floating point and multimedia unit with data type reclassification capability |
US6038463A (en) * | 1997-09-26 | 2000-03-14 | Medtronic, Inc. | Medical electrical lead |
JP3377419B2 (en) * | 1997-11-11 | 2003-02-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Instruction string generation method and apparatus, conversion method, and computer |
US6654954B1 (en) * | 1998-02-17 | 2003-11-25 | International Business Machines Corporation | Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute |
US6256725B1 (en) * | 1998-12-04 | 2001-07-03 | Agere Systems Guardian Corp. | Shared datapath processor utilizing stack-based and register-based storage spaces |
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
US6826749B2 (en) * | 1998-12-08 | 2004-11-30 | Nazomi Communications, Inc. | Java hardware accelerator using thread manager |
US6338160B1 (en) * | 1998-12-08 | 2002-01-08 | Nazomi Communications, Inc. | Constant pool reference resolution method |
US6651159B1 (en) * | 1999-11-29 | 2003-11-18 | Ati International Srl | Floating point register stack management for CISC |
AU2001241487A1 (en) | 2000-02-14 | 2001-08-27 | Chicory Systems, Inc. | Transforming a stack-based code sequence to a register based code sequence |
US6990567B1 (en) * | 2000-12-22 | 2006-01-24 | Lsi Logic Corporation | Use of internal general purpose registers of a processor as a Java virtual machine top of stack and dynamic allocation of the registers according to stack status |
KR20040034601A (en) | 2001-04-23 | 2004-04-28 | 아트멜 코포레이숀 | Microprocessor for executing byte compiled java code |
US7434030B2 (en) * | 2001-09-12 | 2008-10-07 | Renesas Technology Corp. | Processor system having accelerator of Java-type of programming language |
JP2003280894A (en) * | 2002-03-27 | 2003-10-02 | Hitachi Ulsi Systems Co Ltd | Instruction set converter |
EP1387250B8 (en) * | 2002-07-31 | 2012-02-29 | Texas Instruments Inc. | Processor that accomodates multiple instruction sets and multiple decode modes |
EP1387249B1 (en) * | 2002-07-31 | 2019-03-13 | Texas Instruments Incorporated | RISC processor having a stack and register architecture |
EP1391821A3 (en) * | 2002-07-31 | 2007-06-06 | Texas Instruments Inc. | A multi processor computing system having a java stack machine and a risc based processor |
EP1387247A3 (en) * | 2002-07-31 | 2007-12-12 | Texas Instruments Inc. | System and method to automatically stack and unstack java local variables |
US7478224B2 (en) | 2005-04-15 | 2009-01-13 | Atmel Corporation | Microprocessor access of operand stack as a register file using native instructions |
DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
-
2005
- 2005-04-15 US US11/107,235 patent/US7478224B2/en active Active
-
2006
- 2006-03-08 JP JP2008506461A patent/JP2008536240A/en not_active Abandoned
- 2006-03-08 KR KR1020077024684A patent/KR20070118663A/en not_active Application Discontinuation
- 2006-03-08 CA CA002604250A patent/CA2604250A1/en not_active Abandoned
- 2006-03-08 WO PCT/US2006/008991 patent/WO2006112978A2/en active Application Filing
- 2006-03-08 CN CNA2006800116957A patent/CN101156131A/en active Pending
- 2006-03-08 EP EP06738096A patent/EP1875338A4/en not_active Withdrawn
- 2006-04-11 TW TW095112785A patent/TW200705263A/en unknown
-
2007
- 2007-11-15 NO NO20075885A patent/NO20075885L/en not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016539423A (en) * | 2013-11-27 | 2016-12-15 | シャンハイ シンハオ マイクロエレクトロニクス カンパニー リミテッド | Instruction set conversion system and method |
Also Published As
Publication number | Publication date |
---|---|
US7478224B2 (en) | 2009-01-13 |
EP1875338A4 (en) | 2008-07-30 |
WO2006112978A2 (en) | 2006-10-26 |
US20060236077A1 (en) | 2006-10-19 |
WO2006112978A3 (en) | 2007-06-21 |
CA2604250A1 (en) | 2006-10-26 |
CN101156131A (en) | 2008-04-02 |
NO20075885L (en) | 2007-11-15 |
KR20070118663A (en) | 2007-12-17 |
EP1875338A2 (en) | 2008-01-09 |
TW200705263A (en) | 2007-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008536240A (en) | Microprocessor access using native instructions to the operand stack as a register file | |
US11422837B2 (en) | Virtual machine coprocessor for accelerating software execution | |
JP3786644B2 (en) | Microprocessor for executing byte-compiled Java (R) code | |
US7243213B2 (en) | Process for translating instructions for an arm-type processor into instructions for a LX-type processor; relative translator device and computer program product | |
US6332215B1 (en) | Java virtual machine hardware for RISC and CISC processors | |
US9495183B2 (en) | Instruction set emulation for guest operating systems | |
AU2004200608B2 (en) | Extreme pipeline and optimized reordering technology | |
EP1622009A1 (en) | JSM architecture and systems | |
JP2902402B2 (en) | Data processing device | |
US20070033572A1 (en) | Method, apparatus, and computer program product for adaptively generating code for a computer program | |
US20070288909A1 (en) | Hardware JavaTM Bytecode Translator | |
JP2008510238A (en) | operating system | |
GB2367654A (en) | Translating instructions to store stack operands in registers | |
Probst | Dynamic binary translation | |
EP1283465A2 (en) | Transforming & caching computer programs | |
Fog | Optimizing software in C++ | |
Klimiankou | Design and implementation of port-mapped IO management subsystem and kernel Interface for true microkernels on IA-32 processors | |
WO2002071211A2 (en) | Data processor having multiple operating modes | |
JP4755371B2 (en) | Computer system | |
Groote et al. | The Raspberry Pi and the ARM processor | |
Feeley | The CPSC 213 Companion | |
Standard | User's Guide | |
Viot | Meet the 68HC12 | |
Wang et al. | MTX in 32-bit Protected Mode | |
Penneman | A virtualisation framework for embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A625 | Written request for application examination (by other person) |
Free format text: JAPANESE INTERMEDIATE CODE: A625 Effective date: 20090306 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090407 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20090527 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20090527 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20090605 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090605 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20100203 |