JP2001195250A - 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置 - Google Patents

命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置

Info

Publication number
JP2001195250A
JP2001195250A JP2000005062A JP2000005062A JP2001195250A JP 2001195250 A JP2001195250 A JP 2001195250A JP 2000005062 A JP2000005062 A JP 2000005062A JP 2000005062 A JP2000005062 A JP 2000005062A JP 2001195250 A JP2001195250 A JP 2001195250A
Authority
JP
Japan
Prior art keywords
instruction
processor
memory
translator
instructions
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.)
Withdrawn
Application number
JP2000005062A
Other languages
English (en)
Inventor
Toyohiko Yoshida
豊彦 吉田
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2000005062A priority Critical patent/JP2001195250A/ja
Priority to US09/756,863 priority patent/US20010010072A1/en
Publication of JP2001195250A publication Critical patent/JP2001195250A/ja
Withdrawn legal-status Critical Current

Links

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/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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

(57)【要約】 【課題】 プロセッサのハードウェア自体は変更せず
に、複数個の異なる命令体系の命令からなるプログラム
をネイティブ命令を用いて高速に実行可能で、大容量の
メモリを必要としない命令トランスレータを提供する。 【解決手段】 命令トランスレータは、プロセッサが実
行すべき命令のアドレスを受けて命令メモリから対応す
る命令を読出しネイティブ命令に変換するための命令コ
ード伸長部350と、命令コード伸長部350により変
換されたネイティブ命令を、命令メモリにおけるアドレ
スと関連付けて一時的に保持するためのキャッシュメモ
リ354と、プロセッサが実行すべき命令がキャッシュ
メモリ354に保持されているか否かの判定結果にした
がって、命令コード伸長部350の出力する命令と、キ
ャッシュメモリ354に保持されていた対応のネイティ
ブ命令とを選択的に出力するためのMUX356とを含
む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はあるプロセッサに
とっての非ネイティブ命令を、そのプロセッサのネイテ
ィブ命令に変換するための命令トランスレータ、そのト
ランスレータを備えた命令トランスレータ機能付メモリ
およびそれらを用いて、非ネイティブ命令を高速に実行
することが可能なデータ処理装置に関する。
【0002】
【従来の技術】プロセッサアーキテクチャとそのプロセ
ッサで実行可能な命令体系とは密接な関係を持つ。一
方、プロセッサアーキテクチャが進化して命令体系が新
しくなると、旧命令体系で実現されたプログラムコード
はそのままでは実行不可能となることが通常である。ど
のようにして旧命令体系で実現されたプログラム資産を
有効に承継するかが問題となる。そのため、ある命令体
系を持つ新プロセッサで、旧命令体系にしたがって設計
された旧プロセッサ用に記述されたプログラムを実行す
るようにするための手法が多く開発されている。
【0003】旧プロセッサ用に記述されたプログラムを
新プロセッサで実行するために従来行なわれている代表
的な方法に、新プロセッサのハードウェアに旧プロセッ
サの機能を持たせる方法がある。図1を参照して、そう
した方法を実現する従来のデータ処理装置500は、旧
プロセッサの命令と新プロセッサの命令との双方をデコ
ードする機能を有する多機能命令デコーダ5およびそれ
ら命令を実行する機能を有する演算部6を備えたプロセ
ッサ1と、プロセッサ1に接続されるバス4と、バス4
に接続されるデータメモリ2および命令メモリ3とを含
む。
【0004】命令メモリ3は、旧プロセッサの命令と新
プロセッサの命令との双方を保持する。多機能命令デコ
ーダ5は、命令メモリ3から読出され、バス4を介して
プロセッサ1に転送された命令をデコードする。このと
き、多機能命令デコーダ5は、この命令が新プロセッサ
用のものであっても、旧プロセッサ用のものであっても
デコードすることができる。デコードされた命令は演算
部6によって実行される。データメモリ2は、新プロセ
ッサ用の命令からも、旧プロセッサ用の命令からもアク
セスできる。
【0005】このように新プロセッサのハードウェアに
旧プロセッサのハードウェアの機能を持たせる例は、た
とえば「IA-32 Application Execution Model in an IA
-64System Environment」(IA-64 Application Develop
er & Archtecture Guide, Chapter 6, May 1999)に詳
しく記載されている。
【0006】旧プロセッサ用に記述されたプログラムを
新プロセッサで実行するための従来の他の方法として、
旧プロセッサ用のソフトウェアを新プロセッサ用のソフ
トウェアに変換した後に実行する方法、および旧プロセ
ッサ用の命令の動作を新プロセッサ用のソフトウェアで
エミュレートする方法がある。この方法は例えば、Tom
Thompsonによる「An Alpha in PC Clothing (Digital E
quipment's new x86 emulator technology makes an Al
pha system a fast x86 clone)」(BYTE, pp.195-196,
February 1996)に詳しく記載されている。
【0007】ところで、ある命令体系で記述されたプロ
グラムを他の命令体系にしたがって設計されたプロセッ
サで実行することは、これ以外の場合にも有効である。
たとえば、ある命令体系のサブセットを定義してその縮
小された命令体系でプログラムを記述すると、プログラ
ムサイズを小さくすることができる。また、JAVA言
語は、仮想的なプロセッサの命令体系を定めてプログラ
ムを記述し、その同一のプログラムを複数のプロセッサ
でそれぞれのプロセッサの命令体系を用いて実行する仕
組みとなっている。このためJAVA言語で記述された
プログラムは、異なる命令体系の複数種類のプロセッサ
で共有して実行することができる。
【0008】プログラムサイズを小さくする目的でサブ
セットの縮小命令体系を作り、プロセッサの多機能命令
デコーダで非縮小命令体系の命令と縮小命令体系の命令
との双方の命令をデコードする方法は既に多数提案され
ている。たとえばJames L. Turleyによる「Thumb Squee
zes ARM Code Size (New Core Module Provides Optimi
zed Second Instruction Set)」(Micro Processor Rep
ort, Vol. 9, No. 4,pp. 1, 6-9, March 27, 1995)の
記載を参照。
【0009】
【発明が解決しようとする課題】しかし、上述したよう
な従来の手法には、いずれも以下に述べるような問題点
がある。
【0010】複数個の命令体系によって記述されたプロ
グラムを実行する機能をプロセッサのハードウェアに持
たせる場合、ハードウェアが複雑になり、かつそのサイ
ズが大きくなる。また、実行すべき命令体系を追加した
り変更したりする場合には、ハードウェア全体を設計し
直す必要があり、柔軟に対応することが困難である。
【0011】ソフトウェアによりプログラムを変換する
場合には次のような問題がある。プログラム自体を変換
する場合には、変換後プログラムを保持するために大容
量のメモリを新たに必要とする。その結果、メモリのコ
ストが増大しデータ処理装置のコストも上昇する。また
命令の動作を他の命令体系の命令でエミュレートする場
合には、演算結果をエミュレートすることが必要である
ことはもちろん、プログラムカウンタの値、および必要
がある場合にはフラグまでエミュレートしなければなら
ない。その結果、一つの命令の動作を、別の体系の多数
の命令で置換することが必要になる。その結果、動作速
度が大幅に低下するという問題がある。
【0012】この発明はこうした問題を解決するために
なされたもので、プロセッサのハードウェア自体は変更
せずに、複数個の異なる命令体系の命令からなるプログ
ラムをネイティブ命令を用いて高速に実行可能なデータ
処理装置であって、大容量のメモリを必要としないデー
タ処理装置、そのための命令トランスレータおよび命令
トランスレータ機能付メモリを提供することを目的とす
る。
【0013】
【課題を解決するための手段】請求項1に記載の発明に
かかる命令トランスレータは、第1の命令体系の命令を
ネイティブ命令として動作するプロセッサにおいて、第
1の命令体系と異なる第2の命令体系の命令を記憶する
命令メモリとともに用いられ、第1の命令体系の命令に
変換してプロセッサに与えるための命令トランスレータ
であって、プロセッサが実行すべき命令の、命令メモリ
におけるアドレスを受けて命令メモリから対応する命令
を読出し、読出された第2の命令体系の命令を第1の命
令体系の命令に変換するための変換手段と、変換手段に
より変換された後の第1の命令体系の命令を、命令メモ
リにおけるアドレスと関連付けて一時的に保持するため
の保持手段と、プロセッサが実行すべき命令のアドレス
を受けて保持手段を探索し、保持手段に当該アドレスの
命令に対応する命令が保持されているか否かの判定結果
にしたがって、変換手段の出力する命令と、保持手段に
保持されていた、対応の第1の命令体系の命令とを選択
的にプロセッサに出力するための選択手段とを含む。
【0014】請求項1に記載の発明によれば、命令トラ
ンスレータを追加することにより、プロセッサ本体の構
成を変更することなく非ネイティブ命令をネイティブ命
令に変換してプロセッサで実行することができる。ま
た、第1の命令体系に変換された命令を一時的に保持手
段に保持し、次に当該命令の読出が命令メモリから行な
われるときは、保持手段に保持されていた変換済みの第
1の命令体系の命令を出力することができるため、命令
メモリからの読出処理と変換処理とを省略することがで
き、高速に変換後の命令を出力できる。
【0015】請求項2に記載の発明にかかる命令トラン
スレータは、請求項1に記載の発明の構成に加えて、第
2の命令体系は可変長命令体系であり、変換手段は、命
令メモリから読出された第2の命令体系の命令を、読出
された第2の命令体系の命令の命令長に依存した数の第
1の命令体系の命令に変換するための可変長命令変換手
段を含む。
【0016】請求項2に記載の発明によれば、請求項1
に記載の発明の作用に加えて、非ネイティブ命令の長さ
を変換後のネイティブ命令の個数でエミュレートするた
め、非ネイティブ命令のプログラムカウンタの値を明示
的にエミュレートする必要がない。
【0017】請求項3に記載の発明にかかる命令トラン
スレータは、請求項2に記載の発明の構成に加えて、可
変長命令変換手段は、命令メモリから読出された第2の
命令体系の命令を、読出された第2の命令体系の命令の
命令長に依存し、かつそれよりも長い長さの第1の命令
体系の命令に変換するための第1の手段を含む。
【0018】請求項3に記載の発明によれば、請求項2
に記載の発明の作用に加えて、非ネイティブ命令の長さ
を、その非ネイティブ命令の長さに依存した変換後のネ
イティブ命令の長さによりエミュレートするので、非ネ
イティブ命令のプログラムカウンタの値を明示的にエミ
ュレートする必要がない。かつ変換前の非ネイティブ命
令の平均長が短くなるため、プログラムサイズが小さく
なりプログラムを保存するためのメモリが小さくてす
む。
【0019】請求項4に記載の発明にかかる命令トラン
スレータは、請求項3に記載の発明の構成に加えて、第
1の命令体系の各命令は1または複数個のサブ命令を含
み、第1の手段が変換する第1の命令体系の命令に含ま
れるサブ命令の個数は、読み出された第2の命令体系の
命令の長さに依存する。
【0020】請求項4に記載の発明によれば、請求項3
に記載の発明の作用に加えて、変換後の第1の命令体系
の命令に複数個のサブ命令を含ませることにより、複数
個の処理を指定することができる。そのため非ネイティ
ブ命令である第2の命令体系の命令のエミュレートを容
易に行なうことができる。さらに、非ネイティブ命令の
長さをサブ命令の個数に依存する第1の命令体系のネイ
ティブ命令の長さでエミュレートできる。
【0021】請求項5に記載の発明にかかる命令トラン
スレータは、請求項1に記載の発明の構成に加えて、変
換手段は、命令メモリから読出された第2の命令体系の
複数個の命令を、1つの第1の命令体系の命令に変換す
るための複数命令変換手段を含む。
【0022】請求項5に記載の発明によれば、請求項1
に記載の発明の作用に加えて、複数の非ネイティブ命令
を1つのネイティブ命令に一度に変換することができる
ので、命令の変換効率がよい。
【0023】請求項6に記載の発明にかかる命令トラン
スレータは、請求項1に記載の発明の構成に加えて、第
1の命令体系の各命令は、1または複数個のサブ命令を
含むことが可能であり、変換手段は、命令メモリから読
出された第2の命令体系の複数個の命令を、複数個の命
令の数に依存した数のサブ命令を含む第1の命令体系の
命令に変換するための手段を含む。
【0024】請求項6に記載の発明によれば、請求項1
に記載の発明の作用に加えて、複数個のサブ命令によっ
て複数個の非ネイティブ命令をエミュレートするので命
令の変換が容易であり、かつ、ネイティブ命令の長さは
そこに含まれるサブ命令の個数に依存するので、非ネイ
ティブ命令のプログラムカウンタ値を変換後のネイティ
ブ命令の長さでエミュレートすることができる。
【0025】請求項7に記載の発明にかかる命令トラン
スレータは、請求項6に記載の発明の構成に加えて、変
換後の第1の命令体系の命令に含まれるサブ命令の個数
が、複数個の命令の数と等しい。
【0026】請求項7に記載の発明によれば、請求項6
に記載の発明の作用に加えて、変換前の非ネイティブ命
令の個数と変換後のサブ命令の個数とが等しいので、非
ネイティブ命令とネイティブ命令のサブ命令とを対照さ
せることにより、変換が容易に行える。
【0027】請求項8に記載の発明にかかる命令トラン
スレータは、第1の命令体系の命令をネイティブ命令と
して動作するプロセッサにおいて、第1の命令体系と異
なる第2の命令体系の命令を記憶する命令メモリととも
に用いられ、第1の命令体系の命令に変換してプロセッ
サに与えるための命令トランスレータであって、プロセ
ッサが実行すべき命令の、命令メモリにおけるアドレス
を受けて命令メモリから対応する命令を読出し、読出さ
れた第2の命令体系の命令を第1の命令体系の1または
複数個の命令に変換する変換手段と、変換手段により変
換された後の第1の命令体系の命令を、命令メモリにお
けるアドレスと関連付けて一時的に保持するための保持
手段と、プロセッサが実行すべき命令のアドレスを受け
て保持手段を探索し、保持手段に当該アドレスの命令に
対応する命令が保持されているか否かの判定結果にした
がって、変換手段の出力する命令と、保持手段に保持さ
れていた、対応の、第1の命令体系の命令とを選択的に
プロセッサに出力するための選択手段と、保持手段に保
持されている命令を第1の条件および第2の条件のいず
れかで無効化可能なエントリとして保持するよう保持手
段を制御するための保持制御手段とを含む。
【0028】請求項8に記載の発明によれば、1つの非
ネイティブ命令を1または複数個のネイティブ命令に変
換して保持手段に保持することにより、次に同じ非ネイ
ティブ命令の読出が行なわれるときには保持手段から変
換後のネイティブ命令を高速に出力することができる。
さらに、保持手段に保持されている命令の無効化に対し
て第1の条件および第2の条件のいずれかとすることが
できるので、複数のネイティブ命令の同時無効化など、
無効化のための条件が複雑な場合でも容易に対処でき
る。
【0029】請求項9に記載の発明にかかる命令トラン
スレータは、請求項8に記載の発明の構成に加えて、第
1の条件は保持手段による所定のアルゴリズムに基づく
ハードウェア制御による保持制御の条件であり、第2の
条件は保持手段の外部からの明示的な無効化指示があっ
たという条件である。
【0030】請求項9に記載の発明によれば、請求項8
に記載の発明の作用に加えて、ハードウェア制御により
保持手段の保持内容を維持することに加えて、外部から
明示的に保持手段の内容を無効化することが可能であ
り、ソフトウェアの責任において安全に保持手段の保持
内容を維持することができる。
【0031】請求項10に記載の発明にかかる命令トラ
ンスレータは、請求項8に記載の発明の構成に加えて、
保持制御手段は第2の条件で無効化が可能なエントリを
無効化することなしに新たな命令を保持手段に保持でき
ないときにアサートされる信号を出力する。
【0032】請求項10に記載の発明によれば、請求項
8に記載の発明の作用に加えて、新たな命令を保持手段
に保持できないときには、外部に信号がアサートされ
る。この信号に応答して、無効化しても安全なエントリ
を無効化することをソフトウェア処理によって明示的に
指示して、新たな命令を保持可能とすることができる。
【0033】請求項11に記載の発明にかかるトランス
レータ付命令メモリは、第1の命令体系の命令をネイテ
ィブ命令として動作するプロセッサとともに用いられる
トランスレータ付命令メモリであって、第2の命令体系
の命令を記憶する命令記憶手段と、命令記憶手段から出
力される第2の命令体系の命令を、第1の命令体系の命
令に変換してプロセッサに与えるための命令トランスレ
ータとを含む。
【0034】請求項11に記載の発明によれば、命令記
憶手段に第2の命令体系の命令を記憶しておき、これを
命令トランスレータで第1の命令体系の命令に変換して
プロセッサに与えることができる。プロセッサの変更な
しに、非ネイティブ命令により記述されたプログラムを
実行できる。
【0035】請求項12に記載の発明にかかるトランス
レータ付命令メモリは、請求項11に記載の発明の構成
に加えて、命令トランスレータは、命令記憶手段から読
み出すべき命令のアドレスに基づいて、第2の命令体系
の命令を、第1の命令体系の命令に変換する処理と、第
2の命令体系の命令をそのまま出力する処理とのいずれ
かを選択的に実行するための手段を含む。
【0036】請求項12に記載の発明によれば、請求項
11に記載の発明の作用に加えて、第2の命令体系の命
令を第1の命令体系の命令に変換して読出すことが可能
であることに加え、第2の命令体系の命令をそのまま読
出すことも可能なので、第2の命令体系で記述されたプ
ログラムを他のメモリに転送したり、その内容を解析し
たりすることが可能になる。
【0037】請求項13に記載の発明にかかるトランス
レータ付命令メモリは、請求項11に記載の発明の構成
に加えて、命令記憶手段からの読出時にアドレス変換を
行なうためのアドレス変換手段をさらに含む。
【0038】請求項13に記載の発明によれば、請求項
11に記載の発明の作用に加えて、命令変換時と、それ
以外のときとで、トランスレータ付命令メモリに関して
異なるメモリマップを使用することができる。
【0039】請求項14に記載の発明にかかるトランス
レータ付命令メモリは、請求項11に記載の発明の構成
に加えて、命令トランスレータは、プロセッサが実行す
べき命令の、トランスレータ付命令メモリにおけるアド
レスを受けてトランスレータ付命令メモリから対応する
命令を読出し、読出された第2の命令体系の命令を第1
の命令体系の命令に変換する変換手段と、変換手段によ
り変換された後の第1の命令体系の命令を、トランスレ
ータ付命令メモリにおけるアドレスと関連付けて一時的
に保持するための保持手段と、プロセッサが実行すべき
命令のアドレスを受けて保持手段を探索し、保持手段に
当該アドレスの命令に対応する命令が保持されているか
否かの判定結果にしたがって、変換手段の出力する命令
と、保持手段に保持されていた、対応の第1の命令体系
の命令とを選択的にプロセッサに出力するための選択手
段とを含む。
【0040】請求項14に記載の発明によれば請求項1
1に記載の発明の作用に加えて、第1の命令体系の命令
に変換された命令は保持手段に保持され、次に読出が行
なわれるときにその命令が保持手段に保持されていれ
ば、あらためて命令の変換を行なうことなく、保持手段
から対応の変換後の命令が出力されるので、命令記憶手
段へのアクセスと、変換とに要する時間が不要となり、
高速に変換後の命令を出力することができる。
【0041】請求項15に記載の発明にかかるデータ処
理装置は、第1の命令体系の命令をネイティブ命令とし
て動作するプロセッサと、プロセッサが接続される信号
転送手段と、信号転送手段を介してプロセッサと相互接
続されるトランスレータ付命令メモリとを含み、トラン
スレータ付命令メモリは、プロセッサから信号転送手段
を介して転送される第2の命令体系の命令を記憶する命
令記憶手段と、命令記憶手段から出力される第2の命令
体系の命令を、第1の命令体系の命令に変換して信号転
送手段を介してプロセッサに与えるための命令トランス
レータとを含む。
【0042】請求項15に記載の発明によれば、プロセ
ッサにとって非ネイティブ命令である第2の命令体系の
命令を、プロセッサのネイティブ命令である第1の命令
体系の命令に変換する命令トランスレータが設けられて
いるので、プロセッサの構成を変更することなく、第2
の命令体系の命令で記述されたプログラムをこのプロセ
ッサで実行することが可能となる。
【0043】請求項16に記載の発明にかかるデータ処
理装置は、請求項15に記載の発明の構成に加えて、さ
らに、信号転送手段によってプロセッサと相互接続され
る第2の命令メモリを含み、第2の命令メモリは、プロ
セッサから信号転送手段を介して転送される第1の命令
体系の命令を記憶する命令記憶手段と、プロセッサから
信号転送手段を介して与えられるアドレス信号に応答し
て、命令記憶手段から出力される第1の命令体系の命令
を、信号転送手段を介してプロセッサに与えるための命
令読出手段とを含む。
【0044】請求項16に記載の発明によれば、請求項
15に記載の発明の作用に加えて、第1の命令体系の命
令で記述されたプログラムも第2の命令メモリからプロ
セッサに転送して実行できるので、プロセッサ本体の変
更なしに非ネイティブ命令もネイティブ命令も区別なく
プロセッサでデコードし実行することができる。
【0045】請求項17に記載の発明にかかるデータ処
理装置は、請求項16に記載の発明の構成に加えて、さ
らに、トランスレータ付命令メモリから読み出される命
令をプロセッサに転送するときの信号転送手段のウェイ
ト数が、第2の命令メモリから読み出される命令をプロ
セッサに転送するときの信号転送手段のウェイト数より
も多くなるように信号転送手段による転送を制御するた
めの転送制御手段を含む。
【0046】請求項17に記載の発明によれば、請求項
16に記載の発明の作用に加えて、トランスレータ付命
令メモリから読み出される命令をプロセッサに転送する
ときのウェイト数が多いので、その間に非ネイティブ命
令からネイティブ命令への変換を行なうことができ、プ
ロセッサでは読出対象となった命令が非ネイティブ命令
の場合もネイティブ命令の場合も区別なくフェッチして
デコードすることができる。
【0047】請求項18に記載の発明にかかるデータ処
理装置は、請求項16に記載の発明の構成に加えて、さ
らに、信号転送手段によってプロセッサと相互接続され
る第3のトランスレータ付命令メモリを含み、第3のト
ランスレータ付命令メモリは、プロセッサから信号転送
手段を介して転送される、第2の命令体系とは異なる第
3の命令体系の命令を記憶する命令記憶手段と、プロセ
ッサから信号転送手段を介して与えられるアドレス信号
に応答して、命令記憶手段から出力される第3の命令体
系の命令を、第1の命令体系の命令に変換して信号転送
手段を介してプロセッサに与えるための命令読出手段と
を含む。
【0048】請求項18に記載の発明によれば、請求項
16に記載の発明の作用に加えて、トランスレータ付メ
モリおよび第3のトランスレータ付命令メモリは、それ
ぞれ異なる種類の非ネイティブ命令をネイティブ命令に
変換して信号転送手段に出力するので、プロセッサはど
ちらの非ネイティブ命令が変換された命令かを区別する
ことなく、非ネイティブ命令で記述されたプログラムを
ネイティブ命令を用いて実行できる。
【0049】
【発明の実施の形態】図2を参照して、この発明の実施
の形態のデータ処理装置は、プロセッサ10と、プロセ
ッサ10に接続されたバス40と、バス40、READ
Y信号線50およびプロセッサ10に接続されたバス制
御回路20と、いずれもREADY信号線50およびバ
ス40に接続された、トランスレータ14を有する圧縮
命令用のトランスレータ付メモリ24、トランスレータ
15を有するJAVA命令用のトランスレータ付メモリ
25およびトランスレータ16を有する非ネイティブ命
令X用のトランスレータ付メモリ26と、いずれもバス
40に接続された、ネイティブ命令用RAM21、デー
タ用メモリ22および、ネイティブ命令と、圧縮命令
と、JAVA命令と、非ネイティブ命令Xと、データと
を格納するROM23とを含む。
【0050】バス制御回路20は、プロセッサ10から
バス40に出力されたアドレスをデコードしてネイティ
ブ命令用RAM21、データ用メモリ22 、ROM2
3、圧縮命令用のトランスレータ付メモリ24、JAV
A命令用のトランスレータ付メモリ25および非ネイテ
ィブ命令X用のトランスレータ付メモリ26に対してこ
れらのいずれかをアクティベイトするチップセレクト信
号CSを出力する。バス制御回路20はまた、トランス
レータ14〜16に対して、これらの命令変換機能を制
御する変換機能イネーブル信号TEを出力してトランス
レータ14〜トランスレータ16に与える。またバス制
御回路20は、トランスレータ14〜16からREAD
Y信号線50を介して与えられるREADY信号を受
け、バスサイクルの終了を示すDC信号51をプロセッ
サ10に与える。
【0051】図3を参照して、プロセッサ10は、コア
100と、命令キャッシュ101と、データキャッシュ
102と、バス40およびDC信号51に接続されたバ
スインターフェイス部103と、これらを互いに接続す
る命令アドレスバス104および命令バス105と、コ
ア100、命令キャッシュ101およびバスインターフ
ェイス部103を相互に接続してアドレスおよびデータ
を送信するためのデータアドレスバス106およびデー
タバス107とを含む。
【0052】コア100は、VLIW(Very Long Inst
ruction Word)型命令体系を有するプロセッサである。
コア100は、命令バス105から入力されたVLIW
命令をデコードするための命令デコーダ110と、命令
デコーダ110によってデコードされた命令を実行する
ためのメモリ演算部130および整数演算部140と、
メモリ演算部130および整数演算部140に複数のバ
スで接続されたレジスタファイル120とを含む。
【0053】命令デコーダ110は二つのサブ命令デコ
ーダ111および112を含む。メモリ演算部130
は、アドレス演算器131、PC演算器132、シフタ
133およびALU134などの演算器を含む。メモリ
演算部130は、サブ命令デコーダ111の出力にした
がい、メモリアクセス命令、PC制御命令、整数演算命
令などを実行するためのものである。整数演算部140
は、シフタ141、ALU142、乗算器143および
アキュムレータ144を含む。整数演算部140は、サ
ブ命令デコーダ112の出力にしたがい整数演算命令を
実行するためのものである。メモリ演算部130および
整数演算部140は、2つのサブ命令を並列に実行する
場合と、それぞれ独立に1つのサブ命令を実行する場合
とがある。
【0054】図4を参照して、プロセッサ10が有する
レジスタファイル120は、64本の汎用レジスタであ
るレジスタ150〜152、162、163a、および
163bを含む。プロセッサ10はさらに、制御レジス
タ170〜180を含む。また、図3に示すアキュムレ
ータ144はアキュムレータ144aおよびアキュムレ
ータ144bを含む。
【0055】レジスタ150は常にゼロを保持するレジ
スタである。レジスタ162は非割込処理中のスタック
トップのデータを保持するためのものである。レジスタ
163bは非割込処理中のスタックポインタでスタック
トップのすぐ下のデータのアドレスを保持するためのも
のである。レジスタ163aおよび163bは、PSW
(プロセッサステータスワード)である制御レジスタ1
70中にあるモードビットで切り替わり、割込処理中は
レジスタ163aが使用され、非割込処理中はレジスタ
163bが使用される。
【0056】制御レジスタ170〜180は、それぞれ
所定の要素のための専用のレジスタである。たとえば制
御レジスタ170はPSWであって、演算により変化す
るフラグ、割込処理処理中か否か、割込マスク中か否
か、デバック中か否かなど、プロセッサ10の動作モー
ドを示すモードビットを含む。制御レジスタ172はプ
ログラムカウンタ(PC)であり、現在実行中の命令の
アドレスを示す。制御レジスタ171および173は、
割込受付時、例外発生時、トラップ発生時にそれぞれ制
御レジスタ170および172の値をコピーして保持す
るためのものである。
【0057】アキュムレータ144aおよび144b
は、乗算結果、積和演算結果を保持するためのものであ
る。アキュムレータ144aおよび144bはそれぞ
れ、汎用レジスタの2倍のビット長である64ビットの
データを保持することができる。
【0058】図5を参照して、制御レジスタ170が保
持するPSWは32ビットであって、割込処理中か非割
込処理中かを示すモードビットであるSMビット170
aと、割込許可中か割込禁止中かを示すIEビット17
0bと、命令の実行条件を制御するF0ビット170c
およびF1ビット170dとを含む。この他に制御レジ
スタ170は、RPビット、MDビット、F2〜F7の
各ビットを含む。これらの意味については図5に示す通
りである。
【0059】図6を参照して、プロセッサ10は、命令
を以下のようにしてパイプライン処理する。プロセッサ
10は、メモリ演算部130と整数演算部140とで行
なわれるサブ命令をそれぞれ実行するためのMUパイプ
139およびIUパイプ149を含む。これらパイプは
いずれも、命令フェッチステージ191、デコードおよ
びアドレス計算ステージ192、演算およびメモリアク
セスステージ193およびライトバックステージ194
からなる。
【0060】命令フェッチステージ191は、命令をフ
ェッチして命令デコーダ110中の命令レジスタ113
に保持するステージである。デコードおよびアドレス計
算ステージ192では、この命令がサブ命令デコーダ1
11、112でデコードされ、同時にレジスタファイル
120がアクセスされてオペランドおよびPCのアドレ
ス計算が行なわれる。演算およびメモリアクセスステー
ジ193では、整数演算およびデータメモリアクセス処
理が行なわれる。ライトバックステージ194では、演
算結果およびメモリからフェッチされたデータがレジス
タファイル120に再び書込まれる。
【0061】図7を参照して、プロセッサ10の命令2
00は2ウェイのVLIW型命令であり、図示されるよ
うなフォーマットを有する。すなわち、命令200は、
各サブ命令の実行順序と長いサブ命令を定義するFMフ
ィールド201a、201bと、サブ命令を格納するL
コンテナ205およびRコンテナ206と、各サブ命令
の実行条件を指定する条件フィールド203および20
4とを含む。
【0062】条件フィールド203および204は、制
御レジスタ170であるPSW中のフラグF0およびF
1(F0ビット170cおよびF1ビット170d)の
値に依存した条件を指定する。たとえば条件フィールド
203が「000」のとき、Lコンテナ205に含まれ
るサブ命令は無条件に実行される。条件フィールド20
4が「101」のとき、Rコンテナ206に含まれるサ
ブ命令はF0=1かつF1=1のとき実行され、フラグ
F0およびF1(F0ビット170cおよびF1ビット
170d)がそれ以外の値をとる場合は無効化される。
【0063】FMフィールド201aおよび201b
は、Lコンテナ205とRコンテナ206とに含まれる
サブ命令を実行する場合の実行動作を指定する。実行動
作としては4つある。1番目は、Lコンテナ205とR
コンテナ206とに含まれるサブ命令を並列に実行する
動作である。2番目は、Lコンテナ205のサブ命令を
まず実行して次にRコンテナ206のサブ命令を実行す
る動作である。3番目は2番目の動作の逆であり、Rコ
ンテナ206のサブ命令をまず実行して次にLコンテナ
205のサブ命令を実行する動作である。4番目はLコ
ンテナ205とRコンテナ206とに分割して保持され
た1つの長いサブ命令を実行する動作である。すなわ
ち、FMフィールド201aおよびFMフィールド20
1bの値によって、上述した4つの動作のいずれかが選
択される。
【0064】図8を参照して、Lコンテナ205および
Rコンテナ206に保持されるサブ命令は以下のような
フォーマットを有する。サブ命令は28ビット長の短い
命令と54ビット長の長いサブ命令とに分類される。短
い命令は、フォーマット211〜217に示される7種
類のフォーマットを有する。短い命令フォーマットの概
略をいえば、ビット位置0−9で演算の種類が示され、
ビット位置10−27で最大3つのオペランドが指定さ
れる。長いサブ命令はフォーマット218に示されるよ
うにビット位置0−9で演算の種類が示され、ビット位
置10−53で32ビット長の即値データを含む最大3
つのオペランドが指定される。なお、長いサブ命令の3
2ビットの即値はVLIW命令ビット位置26−31、
36−43、および46−63に保持される。
【0065】フォーマット211は、メモリアクセス演
算(ロード/ストア演算)を行なうサブ命令のフォーマ
ットである。フォーマット212は汎用レジスタに保持
されたオペランド間の演算(OP演算)を行なうサブ命
令のフォーマットである。フォーマット213−217
は分岐演算を行なうサブ命令のフォーマットである。長
いサブ命令のフォーマット218は、上記した3種類の
演算全てに共通で使用される。
【0066】サブ命令を図6に示すようにプロセッサ1
0でパイプライン処理する場合には、OP演算、ロード
/ストア演算、分岐演算のサブ命令はそれぞれ図9に示
す4段のパイプライン221−223によって示される
ように4段のパイプラインステージで実行される。
【0067】FMフィールド201aおよび201bに
よりサブ命令の実行順序が指定されたときには、サブ命
令はMUパイプ139およびIUパイプ149によって
図10に示すようにパイプライン処理される。ここで、
ストールステージ234−236は、FMフィールド2
01aおよび201bの値にしたがってサブ命令に順序
をつけて実行する場合に、一方のサブ命令の実行を遅延
させるために挿入されるパイプラインステージである。
【0068】次に、プロセッサ10に対して定義された
サブ命令の一覧を示す。この一覧において、各サブ命令
のニーモニックを大文字で、その処理内容を各ニーモニ
ックの右側に、それぞれ示す。
【0069】 ロード/ストア命令 LDB 符号拡張してレジスタに1バイトをロード LDBU ゼロ拡張してレジスタに1バイトをロード LDH 符号拡張してレジスタに半ワードをロード LDHH レジスタ上位に半ワードをロード LDHU ゼロ拡張してレジスタに半ワードをロード LDW レジスタに1ワードをロード LD2W 2つのレジスタに2ワードをロード LD4BH 符号拡張して4つの半ワードレジスタに4つのバイト をロード LD4BHU ゼロ拡張して4つの半ワードレジスタに4つのバイト をロード LD2H 2つのレジスタに2つの半ワードをロード STB レジスタから1バイトをストア STH レジスタから半ワードをストア STHH レジスタ上位から半ワードをストア STW レジスタから1ワードをストア ST2W レジスタから2ワードをストア ST4HB 4つの半ワードレジスタから4つのバイトをストア ST2H 2つのレジスタから2半ワードをストア MODDEC 5ビット即値によってレジスタ値をデクリメント MODINC 5ビット即値によってレジスタ値をインクリメント 転送命令 MVFSYS 制御レジスタから汎用レジスタに転送 MVTSYS 汎用レジスタから制御レジスタに転送 MVFACC アキュムレータから1ワードを転送 MVTACC 2つの汎用レジスタから2ワードをアキュムレータに 転送 比較命令 CMPcc 比較 cc= EQ(000),NE(001),GT(010),GE(011),LT(100), LE(101),PS-both positive(110), NG-both neg ative(111) CMPUcc 符号なし比較 cc=GT(010),GE(011),LT(100),LE(101) 算術演算命令 ABS 絶対値 ADD 加算 ADDC キャリー付加算 ADDHppp 半ワード加算 ppp=LLL(000),LLH(001),LHL(010),LHH(011), HLL(100),HLH(101),HHL(110),HHH(111) ADDS 第3オペランドの符号をレジスタRbに加算 ADDS2H 2つの半ワードに符号を加算 ADD2H 2対の半ワードを加算 AVG 正の無限大方向の丸めによる平均 AVG2H 正の無限大方向の丸めにより2対の半ワードを平均 JOINpp 2つの半ワードをジョイン pp=LL(00),LH(01),HL(10),HH(11) SUB 減算 SUBB ボロー付の減算 SUBHppp 半ワードの減算 ppp=LLL(000),LLH(001),LHL(010),LHH(011), HLL(100),HLH(101),HHL(110),HHH(111) SUB2H 2対の半ワードの減算 論理演算命令 AND 論理AND OR 論理OR NOT 論理NOT XOR 排他的論理OR ANDFG フラグの論理AND ORFG フラグの論理OR NOTFG フラグの論理NOT XORFG フラグの排他的論理OR シフト演算命令 SRA 右に算術シフト SRAHp 右に半ワードを算術シフト p=L(0),H(1) SRA2H 2つの半ワードを右に算術シフト SRC レジスタを連接して右にシフト SRL 右に論理シフト SRLHp 半ワードを右に論理シフト p=L(0),H(1) SRL2H 2つの半ワードを右に論理シフト ROT 右ローテイト ROT2H 2つの半ワードを右ローテイト ビット演算命令 BCLR ビットをクリア BNOT ビットを反転 BSET ビットをセット BTST ビットをテスト 分岐命令 BRA 分岐 BRATZR ゼロなら分岐 BRATNZ ゼロでなければ分岐 BSR サブルーチンに分岐 BSRTZR ゼロならサブルーチンに分岐 BSRTNZ ゼロでなければサブルーチンに分岐 DBRA 遅延分岐 DBRAI 即値付遅延分岐 DBSR サブルーチンへの遅延分岐 DBSRI サブルーチンへの即値付遅延分岐 DJMP 遅延ジャンプ DJMPI 即値付遅延分岐 DJSR サブルーチンへの遅延ジャンプ DJSRI サブルーチンへの即値付遅延ジャンプ JMP ジャンプ JMPTZR ゼロならジャンプ JMPTNZ ゼロでなければジャンプ JSR サブルーチンに分岐 JSRTZR ゼロならサブルーチンにジャンプ JSRTNZ ゼロでなければサブルーチンにジャンプ NOP ノーオペレーション OS関連命令 TRAP トラップ REIT 例外、割込およびトラップからの復帰 DSP算術演算命令 MUL 乗算 MULX 拡張精度の乗算 MULXS 拡張精度での乗算および左へのシフト MULX2H 拡張精度で2対の半ワードを乗算 MULHXpp 拡張精度で2つの半ワードを乗算 pp=LL(00),LH(01),HL(10),HH(11) MUL2H 2対の半ワードを乗算 MACd 乗算および加算 (d=0,1) MACSd 乗算、左1ビットシフト、加算 (d=0,1) MSUBd 乗算および減算 (d=0,1) MSUBSd 乗算、左1ビットシフト、減算 (d=0,1) SAT サチュレート SATHH ワードオペランドを上位半ワードにサチュレート SAHL ワードオペランドを下位半ワードにサチュレート SATZ 正数にサチュレート SATZ2H 2つの半ワードを正数にサチュレート SAT2H 2つの半ワードオペランドをサチュレート 繰返し命令 REPEAT 1ブロックの命令を繰返す REPEATI 1ブロックの命令を即値付繰返す デバッガサポート命令 DBT デバッグトラップ RTD デバッグ割込およびトラップからの復帰 図11に、図2に示すプロセッサ10がバス40を介し
てネイティブ命令用RAM21、データ用メモリ22、
ROM23、圧縮命令用のトランスレータ付メモリ2
4、JAVA命令用のトランスレータ付メモリ25およ
び非ネイティブ命令X用のトランスレータ付メモリ26
をアクセスする場合のアドレスマップを示す。図11に
示されるように、ネイティブ命令用RAM21、データ
用メモリ22およびROM23はそれぞれ、ネイティブ
命令用アドレス領域121、データメモリ用アドレス領
域122およびROM用アドレス領域123にマップさ
れる。圧縮命令用のトランスレータ付メモリ24、JA
VA命令用のトランスレータ付メモリ25および非ネイ
ティブ命令X用のトランスレータ付メモリ26はそれぞ
れ、命令コードの変換を行なわずにリードライトする場
合には圧縮命令(直結)用アドレス領域124a、JA
VA命令用(直結)アドレス領域125aおよび非ネイ
ティブ命令X(直結)用アドレス領域126aにマップ
される。圧縮命令用のトランスレータ付メモリ24、J
AVA命令用のトランスレータ付メモリ25および非ネ
イティブ命令X用のトランスレータ付メモリ26は、命
令コードの変換を伴ってリードする場合にはそれぞれ圧
縮命令用領域(トランスレータ経由)124b、JAV
A命令(トランスレータ経由)用アドレス領域125
b、およびアドレス領域126bにそれぞれマップされ
る。
【0070】図12を参照して、圧縮命令用のトランス
レータ付メモリ24は、トランスレータ14と圧縮命令
用RAM245とを含む。トランスレータ14はトラン
スレーション回路243と、入力された値を1ビット右
シフトして1/2の値としてアドレス線253に出力す
るためのアドレス変換器241と、TE信号線250上
の変換機能イネーブル信号TEが命令の伸張を指示して
いる場合に、アドレス線253を選択して値が1/2に
されたアドレスを選択し、それ以外の場合にはアドレス
線252の値を選択して、圧縮命令用RAM245とト
ランスレーション回路243とに与えるためのMUX2
42と、圧縮命令用RAM245へデータ線259から
命令を書込むか、読出すかを指定するR/W信号251
とアドレス線252上のアドレスとに基づいて、圧縮命
令用RAM245に対して書込みがあると、トランスレ
ーション回路243中にあるキャッシュメモリの、アド
レス線252上のアドレスに対応するエントリを無効化
することを指示する制御信号257aを出力してトラン
スレーション回路243に与えるための書込検出回路2
46とを含む。制御信号257aがアサートされると、
トランスレーション回路243はそのときのアドレス線
254上のアドレスを見て、対応するキャッシュのエン
トリを無効化する。これにより、圧縮命令用RAM24
5の古い内容に基づく古い変換結果がキャッシュから読
出されることを防ぐ。また、アドレス変換器241によ
り、圧縮命令用のトランスレータ付メモリ24へのアク
セスアドレスが変更される。
【0071】圧縮命令用のトランスレータ付メモリ24
はさらに、圧縮命令用のトランスレータ付メモリ24
から命令コードを読出す場合に、圧縮命令用RAM24
5から命令コード出力線257に出力された命令コード
をそのままデータ線259へ出力するか、それをトラン
スレーション回路243で伸張した後の命令コードを伸
張後命令コード出力線258からデータ線259へ出力
するかのいずれか一方を選択するためのMUX244を
含む。トランスレーション回路243はまた、伸張後の
命令コードを出力するタイミングをバス制御回路20へ
のREADY信号線50に与えるための、トライステー
ト信号であるREADY信号をREADY信号線256
上に出力する。
【0072】プロセッサ10から見ると、 圧縮命令用
のトランスレータ付メモリ24のアドレスは圧縮命令
(直結)用アドレス領域124aと圧縮命令用領域(ト
ランスレータ経由)124bとからなる。圧縮命令(直
結)用アドレス領域124aで圧縮命令用のトランスレ
ータ付メモリ24をアクセスする場合、64kBの空間
の全バイト位置に有効なメモリがある。一方、圧縮命令
用領域(トランスレータ経由)124bで圧縮命令用の
トランスレータ付メモリ24をアクセスする場合、12
8kBの空間のアラインされた各8バイトの上位4バイ
トには有効なメモリがあるが、下位4バイトには有効な
メモリは存在しない。圧縮命令用のトランスレータ付メ
モリ24では、もともと8バイトのVLIW命令の中の
2つのサブ命令を、アドレスを変えずにそれぞれ2バイ
トに圧縮して保存しているためである。プロセッサ10
がたとえばアドレスH’20020100から圧縮され
たVLIW命令をフェッチして実行するとき、圧縮命令
用のトランスレータ付メモリ24からは2バイトの命令
2つが1つの8バイトのVLIW命令に伸張されて出力
され、プロセッサ10ではPC値を8バイト進めてアド
レスH’20020108から次の命令をフェッチして
実行する。
【0073】図13を参照して、トランスレーション回
路243は、アドレス線254から与えられるアドレス
に対応する伸張後の命令を保持している場合には伸張後
のVLIW命令を出力線359に出力し、あわせてキャ
ッシュヒット信号線357上のキャッシュヒット信号を
アサートするキャッシュメモリ354と、命令コード出
力線257から入力された2つの命令を8バイトのVL
IW命令に伸張して出力線360に出力し、あわせて命
令の伸張が終了したタイミングを示す信号をタイミング
信号線358に出力するための命令コード伸張部350
と、キャッシュメモリ354からの出力線359と命令
コード伸張部350からの出力線360との一方を選択
して出力するためのMUX356と、キャッシュメモリ
354からのキャッシュヒット信号線357と命令コー
ド伸張部350からのタイミング信号線358との論理
和を出力するためのOR回路355とを含む。命令コー
ド伸張部350は、アドレス線254上のアドレスに基
づいて、命令コード出力線257から入力された2つの
圧縮された命令の一方を選択して出力するためのMUX
351と、MUX351の出力する命令を伸張する伸張
器352とを含む。
【0074】アドレス線254から入力されたアドレス
はキャッシュメモリ354 と命令コード伸張部350
とへ入力される。キャッシュメモリ354は後述するよ
うに1エントリが8バイトで容量2kBの2ウェイセッ
トアソシアティブキャッシュである。キャッシュメモリ
354は、入力されたアドレスと同一アドレスの命令が
過去に伸張されて保持されているか否かを調べ、保持さ
れている場合には伸張後のVLIW命令を出力線359
に出力するとともに、キャッシュメモリ354がヒット
したことを示すためにキャッシュヒット信号線357上
のキャッシュヒット信号をアサートする。このキャッシ
ュヒット信号はOR回路355を経てREADY信号線
256上のREADY信号をアサートする。このとき、
MUX356は出力線359上の出力を選択してキャッ
シュメモリ354から出力された伸張後のVLIW命令
をデータ線259上に出力する。
【0075】一方、キャッシュメモリ354がミスした
ときには、命令コード伸張部350から出力線360に
出力された伸張後の8バイトのVLIW命令がMUX3
56によって選択され、データ線259に出力される。
このとき、データ線259に出力された伸張後の命令コ
ードは、キャッシュメモリ354にも転送され、対応す
るエントリに書込まれる。伸張器352での命令の伸張
が終了したタイミングで、タイミング信号線358上の
タイミング信号がアサートされる。このタイミング信号
は、OR回路355を経てREADY信号線256上の
READY信号をアサートする。
【0076】図14に、キャッシュメモリ354の詳細
を示す。図14に示されるようにキャッシュメモリ35
4は2ウェイセットアソシアティブキャッシュであっ
て、アドレス線254のうちの下位7ビットをインデッ
クスとして、各ウェイに保持されているタグおよび命令
コードをインデックスに基づいてサーチし、一致するタ
グがあるか否かを判定する。一致するタグがある場合に
は一致信号がそのウェイから出力される。この一致信号
がOR回路を経てキャッシュヒット信号線357上にキ
ャッシュヒット信号として出力される。一方、このと
き、2つのウェイの、アドレス線254のインデックス
により示されるエントリからは対応の命令コード(64
ビット)が出力され、一致信号に基づいてそのうちの一
つが選択され出力バッファを経て出力線359上に出力
される。
【0077】図15に、プロセッサ10が圧縮命令用の
トランスレータ付メモリ24 をアクセスして命令をフ
ェッチするときのバス40、READY信号線50、D
C信号51の信号変化を説明するタイミングチャートを
示す。図15を参照して、キャッシュメモリ354がヒ
ットしたとき、READY信号線50上のREADY信
号がバスサイクル開始後1クロック後にアサートされ、
バスサイクル開始の2クロック後にバス制御回路20か
らDC信号51によりバスサイクル終了がプロセッサ1
0に通知される。また、キャッシュメモリ354に保持
されていた伸張後のVLIW命令の命令コードがバスサ
イクル開始後1.5クロック後に圧縮命令用のトランス
レータ付メモリ24からデータ線259を経由してバス
40に出力され、DC信号51のサンプリングタイミン
グと同じバスサイクル開始後2クロック後にプロセッサ
10に取込まれる。
【0078】一方、キャッシュメモリ354がミスした
ときには、READY信号線50がバスサイクル開始後
1クロック後に一度ネゲートされ、バスサイクル開始後
の3クロック後にアサートされる。これによりバスサイ
クル開始の2および3クロック後はバス制御回路20か
らバスサイクルにウェイトサイクル52および53を挿
入することがDC信号51によりプロセッサ10に通知
される。バスサイクル開始の4クロック後にバス制御回
路20からDC信号51によりバスサイクル終了がプロ
セッサ10に通知される。また、 命令コード伸張部3
50 により伸張されたVLIW命令の命令コードがバ
スサイクル開始3.5クロック後に圧縮命令用のトラン
スレータ付メモリ24からデータ線259 経由でバス
40に出力され、DC信号51のサンプリングタイミン
グと同じくバスサイクル開始後4クロック後にプロセッ
サ10に取込まれる。
【0079】図16に、1つの4バイト境界にある圧縮
された二つの命令305、306が伸張後のVLIW命
令のサブ命令のフィールドと他のフィールドとにどのよ
うに対応するかを示す。図16を参照して、圧縮された
命令305および命令306との実行順序に関して、そ
のアドレス位置により論理的にまず命令305が実行さ
れ、次に命令306が実行される。伸張器352は、命
令305と命令306との内容に依存して、プロセッサ
10の命令305に対するサブ命令をLコンテナ205
またはRコンテナ206のフィールドに発生し、残った
コンテナに命令306に対応するサブ命令を発生する。
つまり、2つの命令から1つの命令が発生される。FM
フィールド201aおよび201bは命令305と命令
306とのオペランドに依存関係がなくかつプロセッサ
10で2つの命令が並列実行可能なときは「00」とな
る。オペランドに依存関係があるか、またはプロセッサ
10のハードウェア構成上並列実行不可能な場合、命令
305に対応する命令がLコンテナ205に入るときは
「10」、Rコンテナ206に入るとき「01」の値と
なる。
【0080】条件フィールド203および204はそれ
ぞれ、命令305および命令306が条件分岐命令BR
ATか、条件分岐命令BRAFか、それ以外の命令かに
したがって「000」、「001」および「010」の
値となる。
【0081】図17〜図20に、圧縮された命令がサブ
命令に伸張されるときの命令ビットパターンの対応例を
示す。図17bに示す。「Add Ra, Rc」命令が伸張され
るとサブ命令「ADD, Rx, Ry, Rz」となる。9ビットの
オペコード311は異なる9ビットのオペコード321
に変換される。4ビットのレジスタ番号Ra312は上
位に「11」を付加してレジスタ番号Rx322および
レジスタ番号Ry323 に変換される。同様に4ビッ
トのレジスタ番号Rc314はレジスタ番号Rz324
に変換される。
【0082】図18を参照して、命令「SUB Ra, #im
m:4」が伸張されるとサブ命令「SUBRx, Ry, #imm:6」に
なる。オペコード311とレジスタ番号Ra312との
変換は図17に示す場合と同様である。4ビットのリテ
ラル315は符号拡張され6ビットのリテラル325に
変換される。
【0083】図19を参照して、命令「BRA #imm:9」が
伸張されるとサブ命令「BRA #imm:18」になる。オペコ
ード311がオペコード321に変換され、9ビットの
変位316は符号拡張されて18ビットの変位326に
変換される。
【0084】図20を参照して、命令「LDW Ra, @(Rb
+)」が伸張されるとサブ命令「LDW Rx, @(Ry+, R0)」に
なる。オペコード311がオペコード321に、レジス
タ番号Ra312は上位に「11」が付加されてレジス
タ番号Rxに、それぞれ変換される。レジスタ番号Rb
314は「ADD Ra, Rc」命令の場合と異なり上位に「0
0」が付加されてレジスタ番号Ryに変換される。サブ
命令のレジスタ番号327はR0を示す番号「0000
00」となる。
【0085】以上のようにサブ命令では3オペランドが
基本であるのに対し、圧縮された命令では2オペランド
が基本である。サブ命令はオペランドとして6ビットフ
ィールドで64個の汎用レジスタを指定できるが、圧縮
された命令ではオペランドとして4ビットのフィールド
で16個の汎用レジスタしか指定できない。また、変換
時にはレジスタ番号の上位に「11」を付加してレジス
タ番号を拡張するので、圧縮された命令でオペランドと
して指定できる汎用レジスタは図21に示すように、サ
ブ命令の汎用レジスタR48〜63(153〜155、
…、162、163a、163b)に相当する。
【0086】図22を参照して、JAVA命令用のトラ
ンスレータ付メモリ25は、トランスレータ15とJA
VA命令用RAM265とを含む。
【0087】トランスレータ15 は、JAVA命令の
ためのトランスレーション回路263と、アドレス線2
72から与えられるアドレスを右に3ビットシフトし、
1/8の値としてアドレス線273に出力するためのシ
フト回路261と、変換機能制御信号線270上の変換
機能イネーブル信号TEの値に基づいて、アドレス線2
73およびアドレス線272の一方を選択し、アドレス
線274を介してJAVA命令のためのトランスレーシ
ョン回路263およびJAVA命令用RAM265に与
えるためのMUX262と、出力線277および出力線
278の一方を選択してデータ線279に出力するため
のMUX264と、R/W信号線271およびアドレス
線272に接続され、JAVA命令用RAM265に対
する書込があったことを検出してJAVA命令のための
トランスレーション回路263中にあるキャッシュメモ
リの全エントリを無効化することを指示する制御信号を
制御信号線277a 上に出力するための書込検出回路
266とを含む。
【0088】MUX262 は、変換機能イネーブル信
号TE が命令変換を指示している場合に、アドレス線
273 を選択して値が1/8にされたアドレスをアド
レス線274を介してJAVA命令用RAM265およ
びJAVA命令のためのトランスレーション回路263
に与える。またMUX262は、JAVA命令のための
トランスレーション回路263 が命令コードの変換を
行なうためにJAVA命令用RAM265を2回目以降
アクセスするとき、JAVA命令のためのトランスレー
ション回路263からアドレス線275を介して与えら
れたアドレスをアドレス線274に出力する。
【0089】MUX264は、JAVA命令用のトラン
スレータ付メモリ25から命令コードを読出す場合、J
AVA命令用RAM265から出力された出力線277
をそのままデータ線279 に出力するか、それをJA
VA命令のためのトランスレーション回路263で変換
した後の、出力線278 を介して与えられる命令コー
ドをデータ線279に出力するかを制御する。
【0090】READY信号線276上のREADY信
号は、JAVA命令のためのトランスレーション回路2
63から変換の後の命令コードを出力するタイミングを
示す。READY信号 は、READY信号線50に伝
えられ、さらにバス制御回路20に与えられるトライス
テート出力信号である。
【0091】書込検出回路266に与えられるR/W信
号線271上のR/W信号は、JAVA命令用RAM2
65へデータ線279から命令コードを書込むか、読出
すかを指定する信号である。JAVA命令用RAM26
5に対する書込があると、書込検出回路266はそれを
検知して制御信号線277a上に制御信号を出力する。
この制御信号がアサートされると、JAVA命令のため
のトランスレーション回路263では全てのキャッシュ
エントリを無効化する。この動作により、JAVA命令
用RAM265の古い内容に基づく古い変換結果がキャ
ッシュから読み出されることが防止できる。
【0092】プロセッサ10から見ると、JAVA命令
用のトランスレータ付メモリ25のアドレスは図11に
示すJAVA命令用(直結)アドレス領域125a と
JAVA命令(トランスレータ経由)用アドレス領域1
25b とからなる。JAVA命令用(直結)アドレス
領域125aでJAVA命令用のトランスレータ付メモ
リ25 をアクセスする場合、64kBの空間の全バイ
ト位置に有効なメモリがある。一方、JAVA命令(ト
ランスレータ経由)用アドレス領域125bでJAVA
命令用のトランスレータ付メモリ25をアクセスする場
合、512kBの空間のアラインされた各8バイトの上
位1バイトには有効なメモリがあるが、下位7バイトに
は有効なメモリは存在しない。
【0093】プロセッサ10 がたとえばアドレスH’
20050300から圧縮されたVLIW命令をフェッ
チして実行するとき、JAVA命令用のトランスレータ
付メモリ25からはJAVA命令が1または複数の8バ
イトのVLIW命令に伸張されて出力され、プロセッサ
10はJAVA命令1バイトにつきPC値を8バイト進
めて1または複数のVLIW命令を実行する。なお、J
AVA命令についてはTim Lindholm and Frank Yellin,
"The Java Virtual Machine Specification Second Ed
ition," Sun Microsystems, Inc., 1999に詳しく記載さ
れている。
【0094】図23を参照して、JAVA命令のための
トランスレーション回路263は、命令コード変換部3
70と、キャッシュメモリ374と、アドレス線274
から入力されたアドレスを命令コード変換部370およ
びキャッシュメモリ374に与え、さらにアドレス線2
75上に出力するためのアドレス制御回路373と、キ
ャッシュメモリ374の出力線379および命令コード
変換部370の出力線380を受け、いずれか一方から
与えられる命令コードを選択してデータ線279に出力
するためのMUX376と、キャッシュメモリ374か
らキャッシュヒット信号線377を介して与えられるヒ
ット信号と、命令コード変換部370から信号線378
を介して与えられる伸張完了を示すタイミング信号とを
受け、出力がREADY信号線276に接続されたOR
回路375とを含む。命令コード変換部370は、キュ
ー371と変換器372とを含む。
【0095】図24を参照して、キャッシュメモリ37
4は1エントリが8バイトで容量が2kBのダイレクト
マップキャッシュである。キャッシュメモリ354の各
エントリは、Vビット387およびUビット382との
2つのバリッドビットと、比較対照アドレスのタグ38
3と、命令コードであるデータ384とを含む。
【0096】図22を参照して、アドレス線272から
与えられたH’205000−H’200Cfffの一
つを示す19ビットのアドレスは、シフト回路261に
よって3ビット右にシフトされて1/8にアドレス変換
され、その有効16ビットがアドレス線274およびア
ドレス制御回路373を介してJAVA命令のためのト
ランスレーション回路263および命令コード変換部3
70に与えられる。
【0097】図24を参照して、キャッシュメモリ37
4では、このアドレスは上位8ビットのタグ385と下
位8ビットのインデックス386とに分解される。イン
デックス386はエントリの選択に使用される。タグ3
85は各エントリから読み出されたタグ383との比較
対照に用いられる。Vビット387が有効を示し、タグ
383の値とタグ385の値とが等しいエントリがあれ
ば、キャッシュヒットとなり、ヒット信号がアサートさ
れる。一方当該エントリのデータ384が命令コードと
して出力線379に出力される。図23に示されるキャ
ッシュヒット信号線377上に出力されるキャッシュヒ
ット信号は、OR回路375を経てREADY信号線2
76上のREADY信号をアサートする。
【0098】再び図23を参照して、命令コード変換部
370では、キュー371が一旦JAVA命令をキュー
に入れた後、変換器372が1バイトずつJAVA命令
を読出し、VLIW命令に変換して命令コード変換部3
70の出力線380上に出力する。変換器372の処理
クロック数はJAVA命令の長さおよび種類、並びに変
換後のVLIW命令の数および種類に依存して変わる。
【0099】キャッシュヒット信号線377上のキャッ
シュヒット信号がアサートされた場合、MUX376は
出力線379を選択して、キャッシュメモリ374から
出力された、変換後のVLIW命令をデータ線279上
に出力する。一方、キャッシュヒット信号がアサートさ
れなかったとき、すなわちキャッシュメモリ374がミ
スしたときには、MUX376は命令コード変換部37
0が命令コード変換部370の出力線380上に出力し
た変換後の8バイトのVLIW命令を選択して、データ
線279上に出力する。このとき、命令コード変換部3
70の出力線380上のVLIW命令はキャッシュメモ
リ374にも転送され、対応するエントリに書込まれ
る。また、変換が完了し命令コード変換部370の出力
線380上にVLIW命令が出力されるタイミングで信
号線378上のタイミング信号がアサートされ、このタ
イミング信号はOR回路375 を経てREADY信号
線276上のREADY信号をアサートする。
【0100】なお、JAVA命令を複数のVLIW命令
に変換する場合、命令コード変換部370はプロセッサ
10からのアクセスに関係なく変換後のVLIW命令を
全てキャッシュメモリ374に登録する。
【0101】JAVA命令は、バイト単位で命令長が可
変であり、メモリ上のどのアドレスにも配置可能であ
る。そのため2バイト以上のJAVA命令をメモリから
読出す場合、JAVA命令のアドレス位置に依存してJ
AVA命令用RAM265を2回以上アクセスしなけれ
ばならない可能性があることに注意が必要である。
【0102】たとえば、2バイトのJAVA命令J2が
8バイト境界の最後のアドレスである(8n+7)番地
にある場合を考える。このとき、JAVA命令用RAM
265では、1回目のアクセスで(8n+7)番地から
J2の最後の1バイトを読出し、2回目のアクセスで8
(n+1)番地からJ2の次の1バイトを読出す必要が
ある。この2回目のアクセスのためのアドレス8(n+
1)番地は、JAVA命令のためのトランスレーション
回路263からアドレス線275に出力される。
【0103】既に述べたように、変換器372によって
変換されたVLIW命令は、命令コード変換部370の
出力線380を経てキャッシュメモリ374に1つずつ
登録される。1つのJAVA命令を複数のVLIW命令
に変換してキャッシュメモリ374に登録する場合に
は、これら複数のVLIW命令が常に組みになってキャ
ッシュメモリ374に保持されているように配慮をする
必要がある。そのために、先頭のVLIW命令以外のエ
ントリでは、Uビット382の「1」とする。こうする
ことにより、これらを含むエントリが、キャッシュメモ
リ374においてソフトウェアの関与なしに無効化され
たり、キャッシュメモリ374から追い出されたりする
ことを禁止する。また、1つのJAVA命令を複数のV
LIW命令に変換してキャッシュメモリ374に登録す
る場合、キャッシュが一杯で先頭のVLIW命令以外の
VLIW命令がキャッシュメモリに登録できない場合も
あり得る。この場合には、FULL信号381をアサー
トし、このアサート信号に応答してソフトウェア制御に
よって先頭のVLIW命令を含むエントリを無効化す
る。
【0104】これは、1つのJAVA命令を複数のVL
IW命令に変換した場合、たとえばVLIW命令AとV
LIW命令Bとの間で割込が受付けられ、割込からの復
帰後にVLIW命令Bが実行されるときに、VLIW命
令Bがキャッシュメモリにないという事態となって、1
つのJAVA命令の途中から命令変換が行なわれること
になり間違った変換が行なわれてしまうことを防ぐため
である。JAVA命令を含め、プロセッサの命令では一
般に、途中のバイトに即値データがあり、命令の先頭バ
イトから見ない限り命令を正しく認識できないためであ
る。なお、FULL信号381がアサートされたとき
に、ソフトウェア制御によってUビット382が「1」
であるが対応する先頭のVLIW命令がキャッシュにな
いために安全に無効化が可能なエントリがある場合、そ
れらのエントリを無効化することにより、キャッシュメ
モリ374の空きエントリを増加させ、そこでFULL
信号381をアサートするきっかけとなったVLIW命
令をキャッシュメモリ374に登録するようにしてもよ
い。
【0105】さて、キャッシュメモリ374 において
従来の通常のキャッシュメモリと同様の方法でエントリ
の無効化または新規登録のためのエントリの追出しを行
なうと、割込がなくても変換器372で1つのJAVA
命令の途中から命令変換が行なわれる可能性がある。こ
れを防ぐために、本実施の形態の装置ではキャッシュメ
モリ374の各エントリにUビット382を設けた。1
つのJAVA命令から変換された、連続するアドレスに
ある複数の VLIW命令がキャッシュメモリ374に
登録されたとき、先頭のVLIW命令以外のVLIW命
令に対応するエントリではUビット382が「1」とさ
れる。Uビット382が「1」のエントリは、ソフトウ
ェアによる操作なしに無効化されたり、キャッシュメモ
リ374から追出されることはない。先にも述べたよう
にUビット382 が「1」のエントリの無効化または
追出しは、そのエントリに含まれるVLIW命令 とと
もにJAVA命令から変換された複数の VLIW命令
の先頭のVLIW命令がキャッシュメモリ374内に存
在しないときのみ可能である。これはソフトウェアによ
り管理される。
【0106】これにより、1つのJAVA命令から変換
された複数のVLIW命令の先頭のVLIW命令がキャ
ッシュメモリ374に登録されたままで、後続のVLI
W命令がキャッシュメモリ374に登録されてない状態
が発生し、変換器372がJAVA命令の途中から変換
を開始することを防ぐ。
【0107】図25を参照して、命令コード変換部37
0が変換するJAVA命令とVLIW命令との関係は以
下のとおりである。たとえば1バイトのJAVA命令4
01は8バイトのVLIW命令411に変換される。J
AVA命令401は1バイトなので、このJAVA命令
401はJAVA命令用RAM265を1回アクセスす
るだけで読出すことができる。変換後のVLIW命令4
11も8バイト境界に位置するため、キャッシュメモリ
374の1エントリに登録される。
【0108】2バイトのJAVA命令402は2つの8
バイトのVLIW命令412a、412bに変換され
る。このとき、VLIW命令412bを含むエントリで
はUビット382が「1」となる。
【0109】5バイトのJAVA命令404は3つの8
バイトのVLIW命令414a、414bおよび414
cに変換される。VLIW命令414bおよび414c
を含むエントリでは、Uビット382が共に「1」とな
る。
【0110】JAVA命令403、JAVA命令406
〜408などについても同様で、JAVA命令403は
VLIW命令413に、JAVA命令406はVLIW
命令416に、JAVA命令407はVLIW命令41
7に、JAVA命令408は3つの8バイトのVLIW
命令418a〜418cに、それぞれ変換される。VL
IW命令418bおよび418cを含むエントリでは、
Uビット382が共に「1」となる。
【0111】図26〜図31は、変換器372でJAV
A命令をVLIW命令に変換したときの具体的な例を示
す。図26を参照して、1バイトのJAVA命令「iad
d」はサブ命令「LDW R61, @(R63+, R0)」とサブ命令「A
DD R62, R62, R61」とを順に実行する1つのVLIW命
令に変換される。「iadd」はスタックトップから1番目
のデータと2番目のデータとである2つの32ビット整
数を加算してスタックに書き戻すJAVA命令である。
プロセッサ10ではスタックトップのデータはレジスタ
R62に配置され、レジスタR63がスタックトップの
次のデータのアドレスを示す。したがって、プロセッサ
10では、JAVA命令「iadd」のオペレーションを、
スタックトップから2番目の32ビットデータをレジス
タR61にロードしてレジスタR62を4インクリメン
トするオペレーションを行なうサブ命令「LDW R61, @(R
63+, R0)」と、レジスタR62とレジスタR61との2
つの32ビット整数を加算してその結果をレジスタR6
2に書込むオペレーションを行なうサブ命令「ADD R62,
R62, R61」とでエミュレートすることができる。この
とき、PC値については、1つのVLIW命令を実行し
たことによりプロセッサ10のPC値を8番地進めるこ
とで、JAVA命令「iadd」の実行に対応してPC値を
1進めることをエミュレートする。
【0112】図27を参照して、2バイトのJAVA命
令「iload」は、1つのサブ命令「ADD/CN R50, #(0||vi
ndex)」を持つVLIW命令と、サブ命令「STW R62, @
(R63-, R4)」とサブ命令「LDW R62, @(R10, R50)」とを
順次に実行するVLIW命令に変換される。「iload」
はローカル変数領域から32ビット整数をフェッチして
スタックトップに保存するJAVA命令である。プロセ
ッサ10ではこれを、レジスタR50にローカル変数の
インデックス値をロードするサブ命令「ADD/CNR50, #(0
||vindex)」と、レジスタR62をスタックトップから
2番目にプッシュするサブ命令「STW R62, @(R63-, R
4)」と、スタックトップであるレジスタR62にローカ
ル変数領域からデータをロードするサブ命令「LDW R62,
@(R10, R50)」とに分解することによりエミュレートす
る。
【0113】なお、ここでレジスタR4には、値「−
4」を保持し、レジスタR10にはローカル変数領域の
ベースアドレスを保持する。PC値については2つのV
LIW命令を実行したことによりプロセッサ10のPC
値を16番地進めることで、JAVA命令「iload」の
実行に対応してPC値を2番地進めることをエミュレー
トする。
【0114】図28を参照して、3バイトのJAVA命
令「ifeq」は、サブ命令「ADD R62,R61, R0」とサブ命
令「NOP」とを並列に実行するVLIW命令と、サブ命
令「LDW R62, @(R63+, R0)」とサブ命令「NOP」とを並
列に実行するVLIW命令と、1つのサブ命令「BRATZR
/CN R62, #(s||branchbyte1||branchbyte2)」を実行す
るVLIW命令とに分解される。命令「ifeq」はスタッ
クトップのデータが「0」なら分岐するJAVA命令で
ある。プロセッサ10ではこれを、レジスタR62をレ
ジスタR61にコピーするサブ命令「ADD R62, R61, R
0」と、スタックトップから2番目のデータをレジスタ
R62にポップするサブ命令「LDW R62, @(R63+, R0)」
と、レジスタR61がゼロなら分岐するサブ命令「BRAT
ZR/CN R62, #(s||branchbyte1||branchbyte2)」とに分
解し、これら3つのサブ命令と2つのNOP命令とを組合
せて、計3つのVLIW命令でエミュレートする。PC
値については、3つのVLIW命令を実行したことによ
りプロセッサ10のPC値を24番地進めることで、J
AVA命令「ifeq」の実行に対応してPC値を3番地進
めることをエミュレートする。
【0115】図29を参照して、5バイトのJAVA命
令「jsr_w」は、1つのサブ命令「OR R10, #(branchby
te1||branchbyte2||branchbyte3||branchbyte4)」から
なるVLIW命令と、サブ命令「STW R62, @(R63-, R
4)」とサブ命令「BSR R10」とを順次に実行するVLI
W命令と、サブ命令「BRA #3」とサブ命令「NOP」とを
並列に実行するVLIW命令とに変換される。「jsr_
w」は戻り先アドレスをスタックにプッシュして4バイ
トで指定されたアドレスのサブルーチンへジャンプする
JAVA命令である。プロセッサ10ではこの命令を、
ジャンプ先アドレスをレジスタR10にロードするサブ
命令「OR R10, #(branchbyte1||branchbyte2||branchby
te3||branchbyte4)」と、スタックトップのレジスタR
62の値をスタックトップから2番目にプッシュするサ
ブ命令「STW R62, @(R63-, R4)」と、戻り先アドレスを
スタックトップであるレジスタR62に保存してレジス
タR10で指定されたアドレスのサブルーチンへジャン
プするサブ命令「JSR R10」と、サブルーチンから復帰
した後に2つのVLIW命令をスキップするための分岐
を行なうサブ命令「BRA #3」と、サブ命令「NOP」とに
分解してエミュレートする。PC値については、3つの
VLIW命令を実行し、2つのVLIW命令をスキップ
する分岐を行なうことによりプロセッサ10のPC値を
40番地進めることで、JAVA命令「jsr_w」の実行
に対応してPC値を5番地進めることをエミュレートす
る。
【0116】図30と図31とは、複雑なJAVA命令
を、VLIW命令からなりかつJAVA命令の機能を実
行するサブルーチンをコールするVLIW命令に変換す
る例を示す。図30を参照して、この例では、浮動小数
点数の加算を行なうJAVA命令「fadd」を、スタック
トップのレジスタR62の値をスタックトップから2番
目にプッシュするサブ命令「STW R62, @(R63-, R4)」
と、戻り先アドレスをスタックトップであるレジスタR
62に保存して#faddで指定されたアドレスのサブルー
チンにジャンプするサブ命令「JSR #fadd」とを順次に
実行するVLIW命令に変換する。プロセッサ10で
は、「fadd」のオペレーションをサブルーチン中で行な
い、PC値の更新に関しては、一つのVLIW命令を実
行することでプロセッサ10のPC値を8番地進めて
「fadd」に対応するPC値を1番地進めることをエミュ
レートする。
【0117】図31に示す例では、テーブルジャンプを
行なうJAVA命令「tableswitch」を、スタックトッ
プのレジスタR62の値をスタックトップから2番目に
プッシュするサブ命令「STW R62, @(R63-, R4)」と、戻
り先アドレスをスタックトップであるレジスタR62に
保存して#tableswitchで指定されたアドレスのサブルー
チンへジャンプするサブ命令「JSR #tableswitch」とを
順次に実行するVLIW命令に変換する。プロセッサ1
0では、「tableswitch」のオペレーションとPC値の
更新との両方をサブルーチン中でJAVA命令「tables
witch」で指定された各種パラメータをアクセスしてエ
ミュレートする。このとき、プロセッサ10は、JAV
A命令用(直結)アドレス領域125aでJAVA命令
用のトランスレータ付メモリ25をアクセスしてJAV
A命令「tableswitch」で指定された各種パラメータを
データとして読出す。
【0118】図32を参照して、プロセッサ10がJA
VA命令用のトランスレータ付メモリ25を使用してJ
AVA命令で記述されたプログラムをエミュレートする
時の、プロセッサ10で実行される処理のアルゴリズム
は、以下のような制御構造を有する。まずプロセッサ1
0は、ROM23からJAVAプログラムをJAVA命
令用のトランスレータ付メモリ25 にロードする(4
20)。次にプロセッサ10は、JAVAの実行環境を
作り、エミュレーションのための初期設定を行なう(4
21)。この後、プロセッサ10はJAVA命令用のト
ランスレータ付メモリ25のアドレスにジャンプするこ
とによりエミュレーションを開始する(422)。
【0119】キャッシュメモリ374をアクセスして、
ヒットならば制御はステップ428に進み、ミスならば
制御はステップ424に進む(423)。キャッシュミ
スの場合、JAVA命令用RAM265からJAVA命
令をフェッチし、命令コード変換部370でJAVA命
令をネイティブのVLIW命令 に変換する(42
4)。キャッシュメモリ374に変換後のネイティブ命
令を登録可能ならばステップ427に進む。キャッシュ
メモリ374の対応するエントリがフルで登録不可の場
合にはFULL信号381をアサートしてプロセッサ1
0に対して割込を要求し、ソフトウェア制御でキャッシ
ュメモリ374に変換後のネイティブ命令を登録するた
めの空きエントリを作成する(425、426)。
【0120】次に、プロセッサ10で変換後のネイティ
ブ命令を実行してJAVA命令をエミュレートする(4
28)。エミュレーションが終了でないならばPC値を
進めてキャッシュメモリ374をアクセスする。エミュ
レーションが終了であればJAVA命令用のトランスレ
ータ付メモリ25の動作を終了してネイティブ命令のプ
ログラムに戻る。
【0121】ここで、ステップ420〜422、426
の処理は、JAVA命令を変換したネイティブ命令での
処理ではなく、ネイティブ命令用RAM21に存在する
ネイティブのVLIW命令のプログラムを実行すること
により行なう。
【0122】非ネイティブ命令X用のトランスレータ付
メモリ26 は、8バイトの固定長の命令Xをプロセッ
サ10のVLIW命令に変換して実行するためのもので
ある。プロセッサ10から非ネイティブ命令X用のトラ
ンスレータ付メモリ26を見た場合、そのアドレスは図
11に示す非ネイティブ命令X(直結)用アドレス領域
126aと非ネイティブ命令X(トランスレータ経由)
用アドレス領域126bとからなる。どちらのアドレス
領域で非ネイティブ命令X用のトランスレータ付メモリ
26をアクセスしても64kBの空間の全バイト位置に
有効なメモリが存在する。アドレス領域126bで非ネ
イティブ命令X用のトランスレータ付メモリ26をアク
セスする場合、命令Xがトランスレータ16でVLIW
命令に変換されて出力される。トランスレータ16の詳
細は図12に示されるトランスレータ14とほぼ同様で
ある。ただし、トランスレータ16においては、図12
に示されるアドレス変換器241、MUX242および
アドレス制御回路373に対応する回路を持たず、アド
レスが変換されずに入力されること、キャッシュメモリ
にUビット382とFULL信号381とに対応する機
能がないこと、および常に1つの命令Xが1つのVLI
W命令に変換されることがトランスレータ14と異な
る。
【0123】以上の実施の形態の装置では、キャッシュ
メモリの1エントリに1つのVLIW命令を保持する場
合について説明した。しかしこの発明はそうした構成に
は限定されず、1エントリに複数のVLIW命令を保持
するようにしてもよい。また、上記実施の形態の装置で
はJAVA命令の1バイトを1つのVLIW命令に対応
させてエミュレートしているが、JAVA命令の1バイ
トについて2または3のVLIW命令命令を対応させて
エミュレートするようにしてもよい。
【0124】さらに、上記実施の形態では変換後の命令
をキャッシュに保持する例を述べた。しかしこの発明は
そうした構成に限定されるわけではなく、このキャッシ
ュメモリはなくてもよい。また、キャッシュではなく変
換後の複数のVLIW命令を一時的に保持し、使用後は
毎回保持内容を無効化するバッファメモリを用いてもよ
い。
【0125】今回開示された実施の形態はすべての点で
例示であって制限的なものではないと考えられるべきで
ある。本発明の範囲は上記した説明ではなくて特許請求
の範囲によって示され、特許請求の範囲と均等の意味お
よび範囲内でのすべての変更が含まれることが意図され
る。
【0126】
【発明の効果】以上のように請求項1に記載の発明によ
れば、プロセッサ本体の構成を変更することなく非ネイ
ティブ命令をネイティブ命令に変換してプロセッサで実
行することができ、かつ高速に変換後の命令を出力でき
るので、効率的に非ネイティブ命令で記述されたプログ
ラムのエミュレートを行なうことができる。
【0127】請求項2に記載の発明によれば、請求項1
に記載の発明の効果に加えて、非ネイティブ命令のプロ
グラムカウンタの値を明示的にエミュレートする必要が
ない。そのため非ネイティブ命令で記述されたプログラ
ムのエミュレートが容易に行える。
【0128】請求項3に記載の発明によれば、請求項2
に記載の発明の効果に加えて、非ネイティブ命令のプロ
グラムカウンタの値を明示的にエミュレートする必要が
なくエミュレートがさらに容易に行え、かつプログラム
を保存するためのメモリが小さくてすみ、ハードウェア
のコストの増大が回避できる。
【0129】請求項4に記載の発明によれば、請求項3
に記載の発明の効果に加えて、非ネイティブ命令である
第2の命令体系の命令のエミュレートを容易に行なうこ
とができる。さらに、非ネイティブ命令の長さも第1の
命令体系のネイティブ命令の長さでエミュレートでき、
非ネイティブ命令で記述されたプログラムのエミュレー
トがさらに容易になる。
【0130】請求項5に記載の発明によれば、請求項1
に記載の発明の効果に加えて、命令の変換効率がよく、
効率的に非ネイティブ命令で記述されたプログラムのエ
ミュレートを行なうことができる。
【0131】請求項6に記載の発明によれば、請求項1
に記載の発明の効果に加えて、命令の変換が容易であ
り、かつ、非ネイティブ命令のプログラムカウンタ値を
変換後のネイティブ命令の長さでエミュレートすること
ができるので、容易に、かつ効率的に、非ネイティブ命
令で記述されたプログラムのエミュレートを行なうこと
ができる。
【0132】請求項7に記載の発明によれば、請求項6
に記載の発明の効果に加えて、非ネイティブ命令とネイ
ティブ命令のサブ命令とを対照させることにより、変換
が容易に行える。そのため、非ネイティブ命令で記述さ
れたプログラムのエミュレートをさらに容易に行なうこ
とができる。
【0133】請求項8に記載の発明によれば、変換後の
ネイティブ命令を高速にプロセッサに与えることができ
る。さらに、複数のネイティブ命令の同時無効化など、
無効化のための条件が複雑な場合でも容易に対処でき
る。その結果、非ネイティブ命令で記述されたプログラ
ムのエミュレートが高速かつ確実に行える。
【0134】請求項9に記載の発明によれば、請求項8
に記載の発明の効果に加えて、ソフトウェアの責任にお
いて安全に保持手段の保持内容を維持することができる
ので、非ネイティブ命令で記述されたプログラムのエミ
ュレートをより確実に行える。
【0135】請求項10に記載の発明によれば、請求項
8に記載の発明の効果に加えて、無効化しても安全なエ
ントリを無効化することをソフトウェア処理によって明
示的に指示して、新たな命令を保持可能とすることがで
きるので、保持手段の保持内容を安全かつ確実に維持す
ることができる。その結果、非ネイティブ命令で記述さ
れたプログラムのエミュレートをより確実にかつ高速に
行える。
【0136】請求項11に記載の発明によれば、プロセ
ッサの変更なしに、非ネイティブ命令により記述された
プログラムをプロセッサのネイティブ命令で実行でき
る。
【0137】請求項12に記載の発明によれば、請求項
11に記載の発明の効果に加えて、第2の命令体系で記
述されたプログラムを他のメモリに転送したり、その内
容を解析したりすることが可能になり、プログラム開発
および保守が容易に行える。
【0138】請求項13に記載の発明によれば、請求項
11に記載の発明の効果に加えて、命令変換時と、それ
以外のときとで、トランスレータ付命令メモリに関して
異なるメモリマップを使用することができ、トランスレ
ータ付命令メモリの用途に応じて適切にアクセスするこ
とが可能になる。
【0139】請求項14に記載の発明によれば、請求項
11に記載の発明の効果に加えて、高速に変換後の命令
を出力することができるので、非ネイティブ命令により
記述されたプログラムを高速にエミュレートすることが
できる。
【0140】請求項15に記載の発明によれば、プロセ
ッサの構成を変更することなく、第2の命令体系の命令
で記述されたプログラムをこのプロセッサで実行するこ
とが可能となり、ハードウェアの増大を招くことなく異
なる命令体系の命令で記述されたプログラムをエミュレ
ートできる。
【0141】請求項16に記載の発明によれば、請求項
15に記載の発明の効果に加えて、プロセッサ本体の変
更なしに非ネイティブ命令もネイティブ命令も区別なく
プロセッサでデコードし実行することができ、非ネイテ
ィブ命令で記述されたプログラムのエミュレートがより
容易になる。
【0142】請求項17に記載の発明によれば、請求項
16に記載の発明の効果に加えて、プロセッサでは命令
が非ネイティブ命令の場合もネイティブ命令の場合も区
別なくフェッチしてデコードすることができ、非ネイテ
ィブ命令で記述されたプログラムのエミュレートがより
容易になる。
【0143】請求項18に記載の発明によれば、請求項
16に記載の発明の効果に加えて、複数種類の非ネイテ
ィブ命令で記述されたプログラムを、区別なくネイティ
ブ命令を用いて実行でき、より幅広い範囲の非ネイティ
ブ命令で記述されたプログラムのエミュレートを容易に
行なうことができる。
【図面の簡単な説明】
【図1】 従来の旧命令エミュレーション機能付データ
処理装置の概略ブロック図である。
【図2】 本発明の1実施の形態にかかる命令トランス
レータ機能付メモリを備えたデータ処理装置のブロック
図である。
【図3】 図2に示すプロセッサ10のブロック図であ
る。
【図4】 プロセッサ10が有するレジスタの一覧を表
形式で示す図である。
【図5】 プロセッサ10の制御レジスタ170の詳細
を示す図である。
【図6】 プロセッサ10のパイプライン処理機構を説
明するための図である。
【図7】 プロセッサ10で実行可能なVLIW命令の
フォーマットを示す図である。
【図8】 プロセッサ10で実行可能なVLIW命令の
サブ命令のフォーマットを示す図である。
【図9】 プロセッサ10のサブ命令のパイプライン処
理方法を示すための図である
【図10】 プロセッサ10で2つのサブ命令をパイプ
ライン処理する方法を説明するための図である。
【図11】 図2に示すデータ処理装置のメモリマップ
を示す図である。
【図12】 図2のデータ処理装置内の、圧縮命令を伸
張する圧縮命令用のトランスレータ付メモリ24の詳細
を示す図である。
【図13】 圧縮命令を変換するためのトランスレーシ
ョン回路243の詳細を示す図である。
【図14】 図13に示すキャッシュメモリ354の詳
細を示す図である。
【図15】 図2に示すデータ処理装置のバスサイクル
のタイミングチャートである。
【図16】 2つの圧縮命令をVLIW命令に伸張する
ときのビットフィールドの対応を示す図である。
【図17】 圧縮命令を伸張する具体例を示す図であ
る。
【図18】 圧縮命令を伸張する具体例を示す図であ
る。
【図19】 圧縮命令を伸張する具体例を示す図であ
る。
【図20】 圧縮命令を伸張する具体例を示す図であ
る。
【図21】 本実施の形態のデータ処理装置において、
圧縮命令でアクセスできる汎用レジスタの一連を示す図
である。
【図22】 図2に示した、JAVA命令を変換するJ
AVA命令用のトランスレータ付メモリ25の詳細を示
す図である。
【図23】 JAVA命令のためのトランスレーション
回路263の詳細を示す図である。
【図24】 ソフトウェアでしか無効化できないエント
リを備えたキャッシュメモリ374の詳細を示す図であ
る。
【図25】 JAVA命令を1または複数のVLIW命
令に変換するときの命令間の対応を示す図である。
【図26】 JAVA命令をVLIW命令に変換する具
体例を示す図である。
【図27】 JAVA命令をVLIW命令に変換する具
体例を示す図である。
【図28】 JAVA命令をVLIW命令に変換する具
体例を示す図である。
【図29】 JAVA命令をVLIW命令に変換する具
体例を示す図である。
【図30】 JAVA命令をVLIW命令に変換する具
体例を示す図である。
【図31】 JAVA命令をVLIW命令に変換する具
体例を示す図である。
【図32】 図2に示すデータ処理装置がJAVA命令
のエミュレーションを行なう際の処理の流れを示すフロ
ーチャートである。
【符号の説明】
10 プロセッサ、 20 バス制御回路、 40 バ
ス、14、15、16命令トランスレータ、24 圧縮
命令用のトランスレータ付メモリ、21 ネイティブ命
令用RAM、22 データ用RAM、23 ROM、2
5 JAVA命令用のトランスレータ付メモリ、26
非ネイティブ命令X用トランスレータ付メモリ、24
3、263 トランスレーション回路、245 圧縮命
令用RAM、265 JAVA命令用RAM、354、
374 キャッシュメモリ、350、370 命令コー
ド伸張部。

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 第1の命令体系の命令をネイティブ命令
    として動作するプロセッサにおいて、前記第1の命令体
    系と異なる第2の命令体系の命令を記憶する命令メモリ
    とともに用いられ、前記第1の命令体系の命令に変換し
    て前記プロセッサに与えるための命令トランスレータで
    あって、 前記プロセッサが実行すべき命令の、前記命令メモリに
    おけるアドレスを受けて前記命令メモリから対応する命
    令を読出し、読出された前記第2の命令体系の命令を前
    記第1の命令体系の命令に変換するための変換手段と、 前記変換手段により変換された後の前記第1の命令体系
    の命令を、前記命令メモリにおけるアドレスと関連付け
    て一時的に保持するための保持手段と、 前記プロセッサが実行すべき命令のアドレスを受けて前
    記保持手段を探索し、前記保持手段に当該アドレスの命
    令に対応する命令が保持されているか否かの判定結果に
    したがって、前記変換手段の出力する命令と、前記保持
    手段に保持されていた、対応の前記第1の命令体系の命
    令とを選択的に前記プロセッサに出力するための選択手
    段とを含む、命令トランスレータ。
  2. 【請求項2】 前記第2の命令体系は可変長命令体系で
    あり、前記変換手段は、前記命令メモリから読出された
    前記第2の命令体系の命令を、前記読出された前記第2
    の命令体系の命令の命令長に依存した数の前記第1の命
    令体系の命令に変換するための可変長命令変換手段を含
    む、請求項1に記載の命令トランスレータ。
  3. 【請求項3】 前記可変長命令変換手段は、前記命令メ
    モリから読出された前記第2の命令体系の命令を、前記
    読出された前記第2の命令体系の命令の命令長に依存
    し、かつそれよりも長い長さの前記第1の命令体系の命
    令に変換するための第1の手段を含む、請求項2に記載
    の命令トランスレータ。
  4. 【請求項4】 前記第1の命令体系の各命令は1または
    複数個のサブ命令を含み、前記第1の手段が変換する第
    1の命令体系の命令に含まれるサブ命令の個数は、前記
    読み出された前記第2の命令体系の命令の長さに依存す
    る、請求項3に記載の命令トランスレータ。
  5. 【請求項5】 前記変換手段は、前記命令メモリから読
    出された前記第2の命令体系の複数個の命令を、1つの
    前記第1の命令体系の命令に変換するための複数命令変
    換手段を含む、請求項1に記載の命令トランスレータ。
  6. 【請求項6】 前記第1の命令体系の各命令は、1また
    は複数個のサブ命令を含むことが可能であり、 前記変換手段は、前記命令メモリから読出された前記第
    2の命令体系の複数個の命令を、前記複数個の命令の数
    に依存した数のサブ命令を含む、前記第1の命令体系の
    命令に変換するための手段を含む、請求項1に記載の命
    令トランスレータ。
  7. 【請求項7】 前記変換後の前記第1の命令体系の命令
    に含まれるサブ命令の個数が、前記複数個の命令の数と
    等しい、請求項6に記載の命令トランスレータ。
  8. 【請求項8】 第1の命令体系の命令をネイティブ命令
    として動作するプロセッサにおいて、前記第1の命令体
    系と異なる第2の命令体系の命令を記憶する命令メモリ
    とともに用いられ、前記第1の命令体系の命令に変換し
    て前記プロセッサに与えるための命令トランスレータで
    あって、 前記プロセッサが実行すべき命令の、前記命令メモリに
    おけるアドレスを受けて前記命令メモリから対応する命
    令を読出し、読出された前記第2の命令体系の命令を前
    記第1の命令体系の1または複数個の命令に変換する変
    換手段と、 前記変換手段により変換された後の前記第1の命令体系
    の命令を、前記命令メモリにおけるアドレスと関連付け
    て一時的に保持するための保持手段と、 前記プロセッサが実行すべき命令のアドレスを受けて前
    記保持手段を探索し、前記保持手段に当該アドレスの命
    令に対応する命令が保持されているか否かの判定結果に
    したがって、前記変換手段の出力する命令と、前記保持
    手段に保持されていた、対応の前記第1の命令体系の命
    令とを選択的に前記プロセッサに出力するための選択手
    段と、 前記保持手段に保持されている命令を第1の条件および
    第2の条件のいずれかで無効化可能なエントリとして保
    持するように前記保持手段を制御するための保持制御手
    段とを含む、命令トランスレータ。
  9. 【請求項9】 前記第1の条件は前記保持手段による所
    定のアルゴリズムに基づくハードウェア制御による保持
    制御の条件であり、 前記第2の条件は前記保持手段からの外部からの明示的
    な無効化指示があったという条件である、請求項8に記
    載の命令トランスレータ。
  10. 【請求項10】 前記保持制御手段は前記第2の条件で
    無効化が可能なエントリを無効化することなしに新たな
    命令を前記保持手段に保持できないときにアサートされ
    る信号を出力する、請求項8に記載の命令トランスレー
    タ。
  11. 【請求項11】 第1の命令体系の命令をネイティブ命
    令として動作するプロセッサとともに用いられる命令メ
    モリであって、 第2の命令体系の命令を記憶する命令記憶手段と、 前記命令記憶手段から出力される前記第2の命令体系の
    命令を、前記第1の命令体系の命令に変換して前記プロ
    セッサに与えるための命令トランスレータとを含む、ト
    ランスレータ付命令メモリ。
  12. 【請求項12】 前記命令トランスレータは、前記命令
    記憶手段から読み出すべき命令のアドレスに基づいて、
    前記第2の命令体系の命令を前記第1の命令体系の命令
    に変換する処理と、前記第2の命令体系の命令をそのま
    ま出力する処理とのいずれかを選択的に実行するための
    手段を含む、請求項11に記載のトランスレータ付命令
    メモリ。
  13. 【請求項13】 前記命令記憶手段からの読出時にアド
    レス変換を行なうためのアドレス変換手段をさらに含
    む、請求項11に記載のトランスレータ付命令メモリ。
  14. 【請求項14】 前記命令トランスレータは、 前記プロセッサが実行すべき命令の、前記トランスレー
    タ付命令メモリにおけるアドレスを受けて前記トランス
    レータ付命令メモリから対応する命令を読出し、読出さ
    れた前記第2の命令体系の命令を前記第1の命令体系の
    命令に変換する変換手段と、 前記変換手段により変換された後の前記第1の命令体系
    の命令を、前記トランスレータ付命令メモリにおけるア
    ドレスと関連付けて一時的に保持するための保持手段
    と、 前記プロセッサが実行すべき命令のアドレスを受けて前
    記保持手段を探索し、前記保持手段に当該アドレスの命
    令に対応する命令が保持されているか否かの判定結果に
    したがって、前記変換手段の出力する命令と、前記保持
    手段に保持されていた、対応の前記第1の命令体系の命
    令とを選択的に前記プロセッサに出力するための選択手
    段とを含む、請求項11に記載のトランスレータ付命令
    メモリ。
  15. 【請求項15】 第1の命令体系の命令をネイティブ命
    令として動作するプロセッサと、 前記プロセッサが接続される信号転送手段と、 前記信号転送手段を介して前記プロセッサと相互接続さ
    れるトランスレータ付命令メモリとを含み、 前記トランスレータ付命令メモリは、 前記プロセッサから前記信号転送手段を介して転送され
    る前記第2の命令体系の命令を記憶する命令記憶手段
    と、 前記命令記憶手段から出力される前記第2の命令体系の
    命令を、前記第1の命令体系の命令に変換して前記信号
    転送手段を介して前記プロセッサに与えるための命令ト
    ランスレータとを含む、データ処理装置。
  16. 【請求項16】 さらに、前記信号転送手段によって前
    記プロセッサと相互接続される第2の命令メモリを含
    み、 前記第2の命令メモリは、 前記プロセッサから前記信号転送手段を介して転送され
    る前記第1の命令体系の命令を記憶する命令記憶手段
    と、 前記プロセッサから前記信号転送手段を介して与えられ
    るアドレス信号に応答して、前記命令記憶手段から出力
    される前記第1の命令体系の命令を、前記信号転送手段
    を介して前記プロセッサに与えるための命令読出手段と
    を含む、請求項15に記載のデータ処理装置。
  17. 【請求項17】 さらに、前記トランスレータ付命令メ
    モリから読み出される命令を前記プロセッサに転送する
    ときの前記信号転送手段のウェイト数が、前記第2の命
    令メモリから読み出される命令を前記プロセッサに転送
    するときの前記信号転送手段のウェイト数よりも大きく
    なるように前記信号転送手段による転送を制御するため
    の転送制御手段を含む、請求項16に記載のデータ処理
    装置。
  18. 【請求項18】 さらに、前記信号転送手段によって前
    記プロセッサと相互接続される第3のトランスレータ付
    命令メモリを含み、 前記第3のトランスレータ付命令メモリは、 前記プロセッサから前記信号転送手段を介して転送され
    る、前記第2の命令体系とは異なる第3の命令体系の命
    令を記憶する命令記憶手段と、 前記プロセッサから前記信号転送手段を介して与えられ
    るアドレス信号に応答して、前記命令記憶手段から出力
    される前記第3の命令体系の命令を、前記第1の命令体
    系の命令に変換して前記信号転送手段を介して前記プロ
    セッサに与えるための命令読出手段とを含む、請求項1
    6に記載のデータ処理装置。
JP2000005062A 2000-01-13 2000-01-13 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置 Withdrawn JP2001195250A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000005062A JP2001195250A (ja) 2000-01-13 2000-01-13 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
US09/756,863 US20010010072A1 (en) 2000-01-13 2001-01-10 Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000005062A JP2001195250A (ja) 2000-01-13 2000-01-13 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置

Publications (1)

Publication Number Publication Date
JP2001195250A true JP2001195250A (ja) 2001-07-19

Family

ID=18533749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000005062A Withdrawn JP2001195250A (ja) 2000-01-13 2000-01-13 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置

Country Status (2)

Country Link
US (1) US20010010072A1 (ja)
JP (1) JP2001195250A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002116908A (ja) * 2000-10-05 2002-04-19 Arm Ltd ネイティブおよび非ネイティブの命令集合間相互呼び出し
US6801996B2 (en) 2000-02-08 2004-10-05 Kabushiki Kaisha Toshiba Instruction code conversion unit and information processing system and instruction code generation method

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2376099B (en) * 2001-05-31 2005-11-16 Advanced Risc Mach Ltd Program instruction interpretation
US20030033593A1 (en) * 2001-08-08 2003-02-13 Evelyn Duesterwald Dynamic execution layer interface for explicitly or transparently executing application or system binaries
US6928536B2 (en) * 2001-11-29 2005-08-09 Hewlett-Packard Development Company, L.P. Dynamic execution layer interface for replacing instructions requiring unavailable hardware functionality with patch code and caching
US7444471B1 (en) * 2002-12-30 2008-10-28 Transmeta Corporation Method and system for using external storage to amortize CPU cycle utilization
US20050149913A1 (en) * 2003-12-29 2005-07-07 Yun Wang Apparatus and methods to optimize code in view of masking status of exceptions
US7457940B2 (en) * 2004-11-16 2008-11-25 International Business Machines Corporation System and method for managing data
WO2008013968A2 (en) 2006-07-28 2008-01-31 Vast Systems Technology Corporation Virtual processor generation model for co-simulation
US8644305B2 (en) 2007-01-22 2014-02-04 Synopsys Inc. Method and system for modeling a bus for a system design incorporating one or more programmable processors
US8195923B2 (en) * 2009-04-07 2012-06-05 Oracle America, Inc. Methods and mechanisms to support multiple features for a number of opcodes
TWI421871B (zh) * 2009-11-27 2014-01-01 Macronix Int Co Ltd 定址一記憶積體電路之方法與裝置
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
CN103530089B (zh) * 2012-08-31 2018-06-15 威盛电子股份有限公司 微处理器及其操作方法
US9372696B2 (en) * 2013-10-18 2016-06-21 Via Technologies, Inc. Microprocessor with compressed and uncompressed microcode memories
US11803387B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. System for executing new instructions and method for executing new instructions
US11789736B2 (en) * 2020-12-29 2023-10-17 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11914997B2 (en) 2020-12-29 2024-02-27 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions
US11816487B2 (en) 2020-12-29 2023-11-14 Shanghai Zhaoxin Semiconductor Co., Ltd. Method of converting extended instructions based on an emulation flag and retirement of corresponding microinstructions, device and system using the same
US11803383B2 (en) 2020-12-29 2023-10-31 Shanghai Zhaoxin Semiconductor Co., Ltd. Method and system for executing new instructions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8205076A (nl) * 1982-12-31 1984-07-16 Philips Nv Data processor eenheid voorzien van een stuurgedeelte welk een adresgenerator bevat voor het genereren van adressen welke uit karakteristieke adresdelen zijn samengesteld.
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
US5307504A (en) * 1991-03-07 1994-04-26 Digital Equipment Corporation System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5630083A (en) * 1994-03-01 1997-05-13 Intel Corporation Decoder for decoding multiple instructions in parallel
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5875336A (en) * 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US5953520A (en) * 1997-09-22 1999-09-14 International Business Machines Corporation Address translation buffer for data processing system emulation mode
US6223254B1 (en) * 1998-12-04 2001-04-24 Stmicroelectronics, Inc. Parcel cache
US6308257B1 (en) * 1999-04-20 2001-10-23 Intel Corporation Method and apparatus for generating boundary markers for an instruction stream including variable-length instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6801996B2 (en) 2000-02-08 2004-10-05 Kabushiki Kaisha Toshiba Instruction code conversion unit and information processing system and instruction code generation method
JP2002116908A (ja) * 2000-10-05 2002-04-19 Arm Ltd ネイティブおよび非ネイティブの命令集合間相互呼び出し

Also Published As

Publication number Publication date
US20010010072A1 (en) 2001-07-26

Similar Documents

Publication Publication Date Title
JP2001195250A (ja) 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
US9003422B2 (en) Microprocessor architecture having extendible logic
JP4485198B2 (ja) Javaアクセラレータを備えたプロセッサシステム
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
JP5808348B2 (ja) マシン状態に基づいた命令の分割
JPH0926878A (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
JP2004054585A (ja) データ処理装置
US8769508B2 (en) Virtual machine hardware for RISC and CISC processors
JP2581236B2 (ja) データ処理装置
JPH10228376A (ja) 複数レジスタ命令を処理する方法及びプロセッサ
JPH01214932A (ja) データ処理装置
JP2002215387A (ja) 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置
JPH0215331A (ja) データ処理装置
KR100249631B1 (ko) 데이터 처리장치
JP5335440B2 (ja) オペランドの早期の条件付き選択
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
JP2009524167A5 (ja)
JPH09212370A (ja) ゲスト命令をエミュレートするプロセッサの性能改善方法及びシステム
JPH07120284B2 (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
US7010677B2 (en) Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block
KR100267434B1 (ko) 제 1 처리 환경내에서 제 1 명령어를 에뮬레이션 환경내에서의제 2 명령어 처리 개시에 응하여 처리하는 방법 및 시스템
JP2556182B2 (ja) デ−タ処理装置
JP2668456B2 (ja) ビット検索回路及びそれを備えたデータ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061214

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20070919