JP2001519956A - アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ - Google Patents

アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ

Info

Publication number
JP2001519956A
JP2001519956A JP51207399A JP51207399A JP2001519956A JP 2001519956 A JP2001519956 A JP 2001519956A JP 51207399 A JP51207399 A JP 51207399A JP 51207399 A JP51207399 A JP 51207399A JP 2001519956 A JP2001519956 A JP 2001519956A
Authority
JP
Japan
Prior art keywords
memory
address
target
instruction
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.)
Granted
Application number
JP51207399A
Other languages
English (en)
Other versions
JP3615770B2 (ja
Inventor
ケリー,エドマンド・ジェイ
クメリク,ロバート・エフ
ウィング,マルコム・ジョン
Original Assignee
トランスメタ・コーポレーション
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 トランスメタ・コーポレーション filed Critical トランスメタ・コーポレーション
Publication of JP2001519956A publication Critical patent/JP2001519956A/ja
Application granted granted Critical
Publication of JP3615770B2 publication Critical patent/JP3615770B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • CCHEMISTRY; METALLURGY
    • C09DYES; PAINTS; POLISHES; NATURAL RESINS; ADHESIVES; COMPOSITIONS NOT OTHERWISE PROVIDED FOR; APPLICATIONS OF MATERIALS NOT OTHERWISE PROVIDED FOR
    • C09KMATERIALS FOR MISCELLANEOUS APPLICATIONS, NOT PROVIDED FOR ELSEWHERE
    • C09K8/00Compositions for drilling of boreholes or wells; Compositions for treating boreholes or wells, e.g. for completion or for remedial operations
    • C09K8/02Well-drilling compositions
    • C09K8/32Non-aqueous well-drilling compositions, e.g. oil-based
    • C09K8/34Organic liquids
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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
    • 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
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

(57)【要約】 アドレスされるメモリの本質に関する思索の失敗を双方共検出する装置と、かかる失敗から復元する装置とを含む、マイクロプロセッサ用メモリ・コントローラ。

Description

【発明の詳細な説明】 アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ 発明の背景発明の分野 本発明は、コンピュータ・システムに関し、更に特定すれば、マイクロプロセ ッサを改良するための方法および装置に関するものである。従来技術の歴史 特定のマイクロプロセッサ・ファミリを中心に設計された、コンピュータ上で 走るアプリケーション・プログラムは、数千種にも上る。既存のプログラムでは 、カリフォルニア州サンタクララのIntel Corporation(イン テル社)が設計し製造する、”X86”ファミリ・マイクロプロセッサ(Int el8088、Intel8086、Intel80186、Intel802 86、i386、i486、および種々のPentiumマイクロプロセッサの 発展型を含む:IntelおよびPentiumは登録商標)を用いたコンピュ ータ(IBM互換パーソナル・コンピュータと一般的に呼ばれている)上で走る ように設計されたものの数が最も多い。他のプロセッサ・ファミリを用いたコン ピュータ上で走るように設計された他のプログラムの例も多くある。これらのコ ンピュータ上で走る多くのアプリケーション・プログラムがあるので、かかるコ ンピュータ、特にX86プログラムを処理するように設計されたプログラムにお いて使用可能なマイクロプロセッサの市場は膨大である。マイクロプロセッサの 市場は大きいだけでなく、非常に収益性が高い。 多数のアプリケーション・プログラムを走らせることができるマイクロプロセ ッサの市場は大きく収益性が高いが、競争力のある新たなマイクロプロセッサを 設計することは非常に難しい。例えば、X86プロセッサ・ファミリは長年にわ たって存在し続け、これらのプロセッサは販売および使用されたコンピュータの 大部分に含まれるが、X86のプログラムを走らせることができる競合プロセッ サで成功したものは殆どない。その理由は多くある。 成功するためには、このプロセッサ・ファミリに設計されたプログラム全て( オペレーティング・システムおよび旧来のプログラムも含む)を、しかも既存の プロセッサと同じくらい速く走らせることができるマイクロプロセッサでなけれ ばならず、更に既存のプロセッサよりもコストを抑えなければならない。加えて 、経済的に成功するためには、新たなマイクロプロセッサは、これらの条件の少 なくとも1つにおいて、既存のプロセッサよりも勝っていることによって、既存 の認められているプロセッサを差し置いて新たなプロセッサを選択する理由を、 購入者に与えなければならない。 最新のマイクロプロセッサと同じ位速くマイクロプロセッサを走らせるのは困 難であり、かつ費用もかかる。プロセッサは、ロード、シフト、加算、格納のよ うな原始な動作および同様の低レベルの動作によって命令を実行し、アプリケー ション・プログラムによって与えられるいずれの命令を実行する際にも、このよ うな原始な命令にのみ応答する。例えば、X86のような、命令が比較的高いレ ベルで実行すべきプロセスを指定することができる、複雑命令セット・コンピュ ータ(CISC:complicated instruction set computer)の命令を走らせるよ うに設計されたプロセッサは、従来よりリード・オンリ・メモリ(ROM)を含 み、その中にいわゆるマイクロ命令を格納している。各マイクロ命令は、一連の 原始命令を含み、これらを連続して走らせることにより、高いレベルのCISC 命令によって命令された結果がもたらされる。典型的に、"add A to B"(AをB に加算する)というCISC命令がデコードされると、この"add A to B"命令の 機能を実行するマイクロ命令が格納されているROM内のアドレスを参照する。 このマイクロ命令がロードされ、その原始命令を順次走らせることによって、"a dd A to B"命令を実行する。このようなCISCコンピュータでは、マイクロ命 令内の原始動作は、プログラムの実行中決して変化させることはできない。各C ISC命令は、命令をデコードし、マイクロ命令をアドレスしてこれを取り込み 、当該マイクロ命令内に与えられている順序で一連の原始動作を走らせることに よってのみ、走らせることができる。マイクロ命令を走らせる毎に、同じシーケ ンスが発生しなければならない。 X86アプリケーションを走らせるための先進のプロセッサは、多数の技術を 利用し、可能な限り高速に、しかも経済的に低い価格で処理を行おうとしている 。プロセッサが走ることができる速度を加速させるための公知のハードウエア技 術を実装する新たなプロセッサは、いずれも処理ハードウエアの洗練性を高める 必要がある。これには、ハードウエア・コストの増大が必要となる。 例えば、複数の処理チャネルを用いて一度に2つ以上の動作を実行するスーパ ースカラー・マイクロプロセッサには、多数の追加要件がある。最も基本的なレ ベルでは、単純なスーパースカラー・マイクロプロセッサは、各アプリケーショ ン命令をマイクロ命令にデコードし、当該アプリケーション命令の機能を実行す ることができる。そこで、単純なスーパースカラー・マイクロプロセッサは、2 つのマイクロ命令が同じハードウエア資源を要求せず、一方のマイクロ命令の実 行が他方のマイクロ命令の処理結果に依存しないのであれば、これら2つのマイ クロ命令を一緒に走らせるようにスケジューリングを行う。 更に進んだスーパースカラー・マイクロプロセッサには、典型的に、各アプリ ケーション命令を一連の原始命令にデコードし、これらの原始命令の順序を変更 し、最も効率的な実行順序でスケジューリングを行うことを可能にするものがあ る。これには、個々の原始動作各々をアドレスし、取り込むことが必要となる。 順序変更を行うためには、プロセッサは、他の原始命令から生ずるデータを必要 とする原始命令を、他の原始命令が必要なデータを生成した後に、実行すること を保証できなければならない。このようなスーパースカラー・マイクロプロセッ サは、一緒に走らせる2つの原始命令が同じハードウエア資源を要求しないこと を保証しなければならない。また、このようなプロセッサは、条件付き分岐を解 決し、その後に分岐動作の効果が完了することを可能にしなければならない。 このように、スーパースカラー・マイクロプロセッサは、複数の原始命令の関 係を互いに比較し、これら原始命令のシーケンスを並び替え、あらゆる命令をス ケジューリングして実行するために、広範なハードウエアを必要とする。処理チ ャネル数が増大するに連れて、これらスーパースカラー加速技術を達成するため のハードウエアの量およびコストはほぼ4倍に増大する。これらのハードウエア 要件は全て、関連する回路の複雑化および高コスト化を招く。マイクロ命令を扱 う際と同様、アプリケーション命令を実行する毎に、スーパースカラー・マイク ロプロセッサは、その比較的複雑なアドレシング・ハードウエアおよび取り込み のためのハードウエアを用いてこれらの原始命令の各々を取り込まなければなら ず、他の原始命令およびハードウエアの使用状況に基づいてこれらの原始命令の 並び替えおよび再スケジュールを行わなければならず、更に、再スケジュールし た原始命令全てを実行しなければならない。各アプリケーション命令を実行する 度に、ハードウエア・シーケンス全体でこれを走らせなければならないので、ス ーパースカラー・プロセッサがその命令を実行可能な速度は限定される。 更に、これら種々のハードウエア技術が処理速度を高めるとしても、このよう なハードウエアを備えるために伴う複雑性のために、このようなマイクロプロセ ッサの大幅なコスト上昇を招くことになる。例えば、インテルi486DX4プ ロセッサは、約150万個のトランジスタを使用する。Intel Penti umのような基本的なスーパースカラー・マイクロプロセッサにおいて、2つの チャネルによって命令を処理するために必要な依存性およびスケジューリングの チェックを行うために必要なハードウエアを追加するには、300万個以上のト ランジスタの使用が必要となる。異なるターゲット命令から派生する原始命令間 の並び替えを行い、思索的実行(speculative execution)を行い、レジスタの名 称変更を可能とし、分岐予測を行うためにハードウエアを追加すると、トランジ スタ数は、Intel Pentium Pro(登録商標)では、600万個 以上にも増大する。したがって、動作速度を高めるためにハードウエアを追加す る毎に、最新のマイクロプロセッサではトランジスタ数が激増したことがわかる 。 これら公知の技術を用いても、既存のマイクロプロセッサよりも高速のマイク ロプロセッサは生産することができない場合もある。何故なら、製造者は既存の マイクロプロセッサの動作を加速させる公知の技術で、経済的に実現可能なもの を利用するからである。その結果、より速いプロセッサの設計は非常に困難であ りしかも費用がかかる作業となる。 プロセッサのコスト削減も非常に困難である。先に例示したように、十分な能 力のあるプロセッサを生産するハードウエア加速技術は非常に高価である。新た なプロセッサを設計しようとする者は、ハードウエアを生産する設備を獲得しな ければならない。このような設備の獲得は非常に困難である。何故なら、チップ 製造者は典型的に少量のデバイスに資産を費やすことはない。チップ製造設備を 生産するために必要な資本投下は非常に大きく、殆どの会社に可能な範囲を超え ている。 競合プロセッサと少なくとも同じ位速く、あるプロセッサ・ファミリに設計さ れたアプリケーション・プログラムの全てを走らせる新たなプロセッサを設計す ることができる者がいるとしても、競合プロセッサの価格は、十分な利益を含ん でおり、いずれの競合も大幅な値下げに直面することは確実である。 ハードウエアの複雑度を高めることによって競争力のあるプロセッサを設計す ることは非常に困難であるが、特定のマイクロプロセッサ・ファミリ(ターゲッ ト・マイクロプロセッサ)に設計されたアプリケーション・プログラム(ターゲ ット・アプリケーション・プログラム)を走らせる他の方法として、ソフトウエ アで他のより速いマイクロプロセッサ(ホスト・マイクロプロセッサ)上でター ゲット・マイクロプロセッサをエミュレートすることが行われてきた。これは、 格段に安価にこれらのプログラムを走らせる方法である。何故なら、より速いマ イクロプロセッサ上でアプリケーション・プログラムを走らせる、ある形態のエ ミュレーション・ソフトウエアを追加しさえすればよいからである。エミュレー タ・ソフトウエアは、ターゲット・プロセッサ・ファミリに書かれたアプリケー ション・プログラムのターゲット命令を、ホスト・プロセッサによって実行可能 なホスト命令に変更する。これら変更した命令を、より速いホスト・マイクロプ ロセッサ上のオペレーティング・システムの制御の下で走らせる。 ターゲット・コンピュータのプロセッサよりも速いプロセッサを有するホスト ・コンピュータ上で、ターゲット・アプリケーションを走らせることを可能にす る設計には、これまでにも多種多様なものがある。一般に、エミュレーション・ ソフトウエアを用いてターゲット・プログラムを実行するホスト・コンピュータ は、縮小命令セット(RISC:reduced instruction set)マイクロプロセッ サを利用する。何故なら、RISCプロセッサは、理論上他の形式のプロセッサ よりも単純で、その結果より速く走らせることができるからである。 しかしながら、エミュレータ・ソフトウエアを走らせるRISCコンピュー タ・システムは多くの場合X86(またはその他の)プログラムを走らせること ができるが、これらがこれを行うレートは、通常、技術的現状のX86コンピュ ータ・システムが同じプログラムを走らせるレートよりもはるかに遅い。更に、 これらのエミュレータ・プログラムは、入手可能なターゲット・プログラムの全 てまたは大多数を走らせることができる訳ではない。 エミュレータ・プログラムが、ターゲット・マイクロプロセッサ程速くターゲ ット・プログラムを走らせることができない理由は、非常に複雑であり、異なる エミュレーション動作の理解がある程度必要となる。図1は、複数の異なる種別 のマイクロプロセッサがターゲット・アプリケーション・プログラムを実行する 異なる方法を表す一連の図を含む。 図1(a)では、IntelX86マイクロプロセッサのような典型的なCI SCマイクロプロセッサが、当該ターゲット・プロセッサ上で走らせるために設 計されたターゲット・アプリケーション・プログラムを走らせる場合を示す。図 に見られるように、コンピュータのハードウエアへのアクセスを得るためのイン ターフェースを与えるように設計されたCISCオペレーティング・システム( X86コンピュータと共に用いられる、MS DOS、Windows3.1、 WindowsNT、およびOS/2のような)を用いて、CISCプロセッサ 上でアプリケーションを走らせる。通常、アプリケーション・プログラムの命令 は、オペレーティング・システムによって与えられるアクセスのみを通じて、コ ンピュータのデバイスを利用するように選択される。したがって、オペレーティ ング・システムは、コンピュータのメモリおよび種々の入出力デバイスへのアク セスをアプリケーションに許可する操作を処理する。ターゲット・コンピュータ は、オペレーティング・システムが認識するメモリおよびハードウエアを含み、 ターゲット・アプリケーションからオペレーティング・システムへのコールによ って、オペレーティング・システムのデバイス・ドライバは、定義されたターゲ ット・コンピュータのデバイスを用いて、予想される動作を行わせる。アプリケ ーションの命令は、プロセッサ上で実行するが、この場合、当該プロセッサが実 行可能な動作(マイクロコード、またはマイクロコードがアセンブルされる、更 に原始な動作で実体化する)にこれらは変更される。前述のように、複雑なター ゲット命令を実行する毎に、命令は、マイクロコードとして(または同じ原始動 作セットとして)格納されている同じサブルーチンをコールする。同じサブルー チンが常に実行される。プロセッサがスーパースカラーである場合、ターゲット 命令を実行するためのこれら原始動作は、多くの場合プロセッサによって並び替 えが行われ、再スケジューリングが行われ、前述と同様に種々の処理チャネルを 用いて実行可能となる。しかしながら、依然としてサブルーチンを取り込み実行 する。 図1(b)は、図1(a)のCISCプロセッサ上で走らせるように設計され た、同じターゲット・アプリケーション・プログラムを走らせる、Apple Macintoshコンピュータにおいて用いられているPowerPCマイク ロプロセッサのような典型的なRISCマイクロプロセッサを表す。図に見られ るように、当該ターゲット・アプリケーションが発生するコールの一部に応答す る、少なくとも部分的なターゲット・オペレーティング・システムを用いて、ホ スト・プロセッサ上でターゲット・アプリケーションを実行する。通常、これら は、ディスプレイ上にグラフィカル・インターフェースを備えるために用いられ る、ターゲット・オペレーティング・システムのアプリケーション状部分へのコ ール、および概してアプリケーション状の短いユーティリティ・プログラムであ る。ターゲット・アプリケーションおよびターゲット・オペレーティング・シス テムのこれらの部分は、SoftPC(登録商標)のようなソフトウエア・エミ ュレータによって変換される。ソフトウエア・エミュレータは、ターゲット・ア プリケーション・プログラムおよびアプリケーション状ターゲット・オペレーテ ィング・システム・プログラムによって与えられる命令を分解し、ホスト・プロ セッサおよびそのホスト・オペレーティング・システムが実行可能な命令にする 。ホスト・オペレーティング・システムは、RISCコンピュータのメモリおよ び入出力ハードウエアへのアクセスが得られるインターフェースを提供する。 しかしながら、ホストRISCコンピュータ内のホストRISCプロセッサお よびそれと連動するハードウエア・デバイスは、通常、ターゲット・アプリケー ションの設計対象としたプロセッサと連動するデバイスとは非常に異なっている 。更に、ターゲット・アプリケーション・プログラムによって与えられる種々の 命 令は、ターゲット・コンピュータの種々の部分にアクセスする際に、ターゲット ・オペレーティング・システムのデバイス・ドライバと協同するように設計され たものである。その結果、ターゲット・アプリケーション・プログラムの命令を 、ホスト・オペレーティング・システムが利用可能な原始ホスト命令に変換する エミュレーション・プログラムは、何らかの方法で、ターゲット・コンピュータ 内のハードウエア・デバイスを動作させるように設計された動作を、ホスト・シ ステムのハードウエア・デバイスが実現可能な動作にリンクしなければならない 。多くの場合、このために、エミュレータ・ソフトウエアは、ターゲット・アプ リケーションの命令に応答する仮想デバイスを作成し、ホスト・システムが実行 できない命令を実行するようにしなければならない。何故なら、ターゲット・デ バイスは、ホスト・コンピュータのものではないからである。時として、エミュ レータは、これら仮想デバイスからホスト・オペレーティング・システムを通じ て、存在するがホスト・オペレーティング・システムによって異なる方法でアド レスされるホスト・ハードウエア・デバイスに至るリンクを作成しなければなら ない場合もある。 このようにターゲット・プログラムを実行すると、多くの理由のため、比較的 遅く走ることになる。第1に、ターゲット・アプリケーション・プログラムおよ びターゲット・オペレーティング・システムからの各ターゲット命令は、エミュ レータによって、ホスト・プロセッサが用いるホストの原始機能に変換しなけれ ばならない。ターゲット・アプリケーションがX86のようなCISCマシンに 設計されたものである場合、ターゲット命令の長さは様々に変化し非常に複雑で あるので、これらをホストの原始命令に変換することは多くの混乱を伴う。元の ターゲット命令を最初にデコードし、当該ターゲット命令を構成する原始ホスト 命令のシーケンスを決定する。次いで、原始ホスト命令の各シーケンスのアドレ ス(または複数のアドレス)を決定し、原始ホスト命令の各シーケンスを取り込 み、これら原始ホスト命令を順番に、または順序を外して実行する。命令を実行 する毎に、ターゲット・アプリケーションおよびオペレーティング・システム命 令を、ホスト・プロセッサが理解するホスト命令に変更するために、エミュレー タに必要な膨大な追加の工程を実施しなければならず、エミュレーションのプロ セスは遅くなる。 第2に、多くのターゲット命令は、ホスト・コンピュータでは使用できない、 ターゲット・コンピュータのハードウエアにおいて、特定の方法で機能する特定 のハードウエア・デバイスが行う動作への参照を含む。この動作を実行するため に、エミュレーション・ソフトウエアは、既存のホスト・オペレーティング・シ ステムを通じて、ホスト・コンピュータのハードウエア・デバイスにソフトウエ アによる接続を行わなければならないか、あるいはエミュレーション・ソフトウ エアが仮想ハードウエア・デバイスを備えなければならない。他のコンピュータ のハードウエアをソフトウエアでエミュレートすることは、非常に困難である。 エミュレーション・ソフトウエアは、ホスト・オペレーティング・システムに対 するターゲット・アプリケーション・コールの各々に対して、仮想デバイスを生 成しなければならず、更にこれら仮想デバイスの各々が実際のホスト・デバイス にコールを与えなければならない。ハードウエア・デバイスをエミュレートする には、ターゲット命令がデバイスを使用しようとする場合に、当該命令が要求す る仮想デバイスを表すコードをメモリから取り込み、これを走らせて当該デバイ スを実現しなければならない。前述の問題を解決するこれらの方法は、いずれも 、命令のシーケンスの実行に、更に一連の動作を追加することになる。 エミュレーションの問題を複雑化するのは、ターゲット・アプリケーションが 様々な例外を発生し、コンピュータ・システムが動作するために、ターゲット・ コンピュータのハードウエアおよびターゲット・オペレーティング・システムが これを実行しなければならないためである。ターゲット・コンピュータの動作中 にターゲットの例外が発生した場合、例外の時点におけるコンピュータの状態を セーブしなければならない。通常、これを行うには、この動作を達成するための マイクロコード・シーケンスをコールする。更に、正しい例外ハンドラを検索し なければならず、例外を処理しなければならず、更にプログラムを継続するため に、プログラム内の正しい地点を発見しなければならない。時として、このため に、例外が発生した時点、および例外ハンドラが与えた分岐が行われた他の時点 のターゲット・コンピュータの状態にプログラムを逆戻りさせる必要性がある。 いずれの場合でも、これらの動作を行うために必要なターゲット・コンピュータ のハードウエアおよびソフトウエアを、何らかの方法でエミュレーションのプロ セス内に備えなければならない。適正な実行のためには、このような例外のいず れの時点においても、正しいターゲットの状態が得られなければならないので、 エミュレータは、これらの例外に正しく応答できるように、常にこの状態を精度 高く追跡することを強いられる。従来技術では、このために、ターゲット・アプ リケーションが与える順序で各命令を行う必要があった。何故なら、正しいター ゲットの状熊が維持できるのは、この方法を置いて他になかったからである。 更に、従来技術のエミュレータは、その他の理由でも、ターゲット・アプリケ ーションの実行順序を常に維持する必要があった。ターゲット命令は2つの種別 、即ち、メモリに影響を与えるものおよびメモリ・マップ入出力(I/O)デバ イスに影響を与えるものとすることができる。ある動作がメモリに影響を与える のか、またはメモリ・マップI/Oデバイスに影響を与えるのかについては、命 令を実行してみないことには、他に知る方法がない。命令がメモリ上で動作する 場合、最適化および並び替えが可能であり、システム動作の高速化に非常に役立 つ。しかしながら、I/Oデバイスに影響を与える動作は、ステップを全く除去 せずに、動作がプログラムされた順序で正確に実施しなければならない。さもな いと、I/Oデバイスの動作に何らかの悪影響を及ぼす可能性がある。例えば、 特定のI/O動作には、I/Oレジスタをクリアする結果をもたらすものもあり 得る。動作が順序通りには行われず、未だ必要な値がレジスタからクリアされた 場合、その動作の結果は、ターゲット命令が命令した動作とは異なるものとなる 可能性がある。メモリをメモリ・マップI/Oから区別する手段がないと、全て の命令を、それらがメモリ・マップI/Oに影響を与えるかのように扱うことが 必要となる。これは、達成可能な最適化を厳しく制限する。従来技術のエミュレ ータは、アドレスされたメモリの特性(nature)を検出する手段、およびこのよう な障害から復元する手段の双方を欠いているので、各動作がメモリ・マップI/ Oに影響を与えるかのように、ターゲット命令全体を通じて順次進んでいく必要 がある。これによって、ホスト命令を最適化する可能性が著しく阻害される。 従来技術のエミュレータのホスト・コードを最適化する能力を妨げる他の問題 に、自己変更コード(self-modifying code)によって発生するものがある。ター ゲット命令がホスト命令のシーケンスに変換され、次いで書き戻されて、元のタ ーゲット命令が変化した場合、ホスト命令はもはや有効ではない。その結果、エ ミュレータは、格納(store)がターゲット・コード・エリアに対するものか否か について判定を行うために、常にチェックしていなければならない。これらの問 題全てのために、この種のエミュレーションは、ターゲット・プロセッサ上でタ ーゲット・アプリケーションを走らせるよりも、大幅に遅くなる。 図1(b)に示す種類のエミュレーション・ソフトウエアの他の例が、"Talis man:Fast and Accurate Multicomputer Simulation"(タリスマン:高速で高精 度のマルチコンピュータ・シミュレーション)(R.C.Bedichek,Laboratory fo r Computer Sciences,Massachusetts Institute of Technology(R.C.ベデ ィチェック、コンピュータ科学研究所、マサチューセッツ工科大学)と題する論 文に記載されている。これは、更に複雑な変換の例であり、これは完全な開発シ ステムをエミュレートし、開発用ターゲット・オペレーティング・システムを走 らせることができる。タリスマンは、ホストUNIXオペレーティング・システ ムを用いている。 図1(c)に、他のエミュレーションの一例を示す。この場合、元のMach intoshコンピュータに用いられていたMotorola68000ファミ リCISCプロセッサ上で走るように設計されたターゲット・アプリケーション ・プログラムを走らせる、Apple Machintoshコンピュータに用 いられているPowerPCマイクロプロセッサを示している。この種の構成は 、Appleの旧来のプログラムを、RISCプロセッサを有するMachin toshコンピュータ上で走らせるために必要であった。図に見られるように、 少なくとも部分的にターゲット・オペレーティング・システムを用いて、ホスト ・プロセッサ上でターゲット・アプリケーションを走らせ、ターゲット・オペレ ーティング・システムのアプリケーション状部分に応答する。ソフトウエア・エ ミュレータには、ターゲット・アプリケーション・プログラムやアプリケーショ ン状ターゲット・オペレーティング・システム・プログラムが与える命令を、ホ スト・プロセッサやそのホスト・オペレーティング・システムが実行可能な命令 に分解するものがある。ホスト・オペレーティング・システムは、インターフ エースを与え、これを通じてホスト・コンピュータのメモリおよび入出力ハード ウエアへのアクセスが得られるようにしている。 この場合も、ホストRISCコンピュータにおけるホストRISCプロセッサ およびそれと連動するデバイスは、MotorolaのCISCプロセッサと連 動するデバイスとは全く異なり、種々のターゲット命令は、ターゲット・コンピ ュータの種々の部分にアクセスする際に、ターゲットCISCオペレーティング ・システムと協同するように設計されている。その結果、エミュレーション・プ ログラムは、ターゲット・コンピュータにおけるハードウエア・デバイスを動作 させるように設計された動作を、ホスト・システムのハードウエア・デバイスが 実現可能な動作にリンクしなければならない。このために、エミュレータは、タ ーゲット・アプリケーションの命令に応答するソフトウエアの仮想デバイスを作 成し、これらの仮想デバイスから、ホスト・オペレーティング・システムを通じ て、存在するがホスト・オペレーティング・システムによって異なる方法でアド レスされるホスト・ハードウエア・デバイスへのリンクを作成する必要がある。 このようにして走らせるターゲット・ソフトウエアは、図1(b)のエミュレ ーションが走るのが遅いのと同じ理由で、比較的走るのが遅い。第1に、ターゲ ット・アプリケーションおよびターゲット・オペレーティング・システムからの 各ターゲット命令は、当該命令を取り込むことによって変換しなければならず、 更に、命令を実行する毎に、当該命令から派生するホスト原始機能の全てを順次 走らせなければならない。第2に、エミュレーション・ソフトウエアは、ホスト ・オペレーティング・システムへのターゲット・アプリケーションのコール毎に 、仮想デバイスを生成しなければならない。更に、これら仮想デバイスの各々は 、実際のホスト・デバイスへのコールを与えなければならない。第3に、エミュ レータは、メモリ・マップI/Oデバイスに向けられた命令、またはそれが復元 することができない例外を生成する危険を処理するために、全ての命令を保存的 に処理しなければならない。最後に、エミュレータは、常に正しいターゲット状 態を維持し、格納動作は、予め当該格納がターゲット・コード・エリアに対する ものか否かについて判定するために、常にチェックしなければならない。これら の要件全ては、エミュレータのホスト・プロセッサ上で走るコードの重要な最 適化を行う能力を奪い取り、ターゲット・プロセッサ上でターゲット・アプリケ ーションを走らせるよりも、この種のエミュレータの速度を大幅に低下させる。 技術的現状のプロセッサの1/4未満のエミュレーション・レートは非常に良好 と考えられる。概して、このために、この種のエミュレーション・ソフトウエア が、他のプロセッサに設計されたアプリケーションを走らせる機能は有用ではあ るが主要ではない使用に追いやられている。 図1(d)では、ホスト・プロセッサ上でターゲット・アプリケーション・プ ログラムをエミュレーションし、非常に限られた一連のターゲット・アプリケー ションに対して比較的良好な処理能力(performance)を与える、特定の方法を示 す。ターゲット・アプリケーションは、命令をエミュレータに与え、エミュレー タはこれらの命令を、ホスト・プロセッサおよびホスト・オペレーティング・シ ステムに対する命令に変更する。ホスト・プロセッサは、Digital Eq uipment Corporation(ディジタル エクイップメント社) のAlpha RISCプロセッサであり、ホスト・オペレーティング・システ ムは、Microsoft NTである。このシステムによって走らせることが できるターゲット・アプリケーションは、Windows WIN32sに準拠 するオペレーティング・システムを有するターゲットX86プロセッサによって 実行されるように設計された32ビット・アプリケーションのみである。ホスト およびターゲット・オペレーティング・システムは殆ど同一であり、これら同じ 命令を処理するように設計されているので、エミュレータ・ソフトウエアは命令 を非常に簡単に変換することができる。更に、ホスト・オペレーティング・シス テムは、既に、ターゲット・アプリケーションが発生する同じコールに応答する ように設計されているので、仮想デバイスの生成は大幅に減少する。 これは技術的にホスト・プロセッサ上でターゲット・アプリケーションを走ら せるエミュレーション・システムであるが、非常に特殊な場合である。ここでは 、エミュレーション・ソフトウエアは、同様のアプリケーションを走らせるよう に既に設計されているホスト・オペレーティング・システム上で走っている。こ のため、ターゲット・アプリケーションからのコールを、ホストおよびホスト・ オペレーティング・システムの補正機構に向けるのが一層容易となる。更に重要 な のは、このシステムは、恐らく全てのX86アプリケーションの1パーセントに も満たない量の32ビットのWindowsアプリケーションのみを走らせるこ とである。更にまた、このシステムは、1つのオペレーティング・システム、即 ち、WindowsNT上でのみアプリケーションを走らせるが、一方X86プ ロセッサは、多数のオペレーティング・システムに設計されたアプリケーション を走らせる。したがって、このようなシステムは、この明細書で当初示した意味 の範囲内では、互換性があると見なすことはできない。したがって、このような エミュレータを走らせるプロセッサは、競合のX86プロセッサと見なすことは できない。 異なる命令セットを認識するコンピュータ上で、ソフトウエアを用いて第1命 令セットに対して書かれたアプリケーションの部分を走らせることを可能にする 他のエミュレーション方法を、図1(e)に示す。この形態のエミュレーション ・ソフトウエアは、通常、あるコンピュータ・システムから他のシステムにアプ リケーションを移植(port)しようとしているプログラマによって利用される。通 常、ターゲット・アプリケーションは、エミュレータを走らせるホスト・マシン 以外のいずれかのターゲット・コンピュータ用に設計されている。エミュレータ ・ソフトウエアは、ターゲット命令を分析し、これらの命令を、ホスト・マシン 上で走らせることができる命令に変換し、これらのホスト命令をキャッシュし、 それらを再利用可能とする。この動的な変換およびキャッシングによって、アプ リケーションの部分を非常に高速に走らせることが可能となる。この形態のエミ ュレータは、通常ソフトウエア・トレース・ツールと共に用いられ、実行中のタ ーゲット・プログラムの挙動に関する詳細な情報を提供する。一方、トレース・ ツールの出力はトレース情報を分析するアナライザ・プログラムを駆動するため に用いることができる。 実際にコードがどのように機能するのかについて判定するために、とりわけ、 この種のエミュレータは、ホスト・マシン上でホスト・オペレーティング・シス テムによって走らせ、ホスト・オペレーティング・システムが備えていない仮想 ハードウエアを与え、そうでなければ、アプリケーションの設計対象であるコン ピュータの動作を、ホスト・マシンのハードウエア資源にマップし、走らせてい るプログラムの動作を実行する。このソフトウエアによるハードウエアの仮想化 およびホスト・コンピュータへのマッピングは、非常に遅く、しかも不完全な可 能性がある。 更に、ターゲット命令の1つを実行するために複数のホスト命令を必要とする 場合が多いので、ターゲット・オペレーション・システムの例外ハンドラを必要 とするフォールトやトラップを含む例外が発生する可能性があり、ターゲット命 令の境界とは無関係な地点で、ホストにホスト命令の処理を中止させる場合があ る。これが発生した場合、例外を正しく処理することは不可能となる場合がある 。何故なら、ホスト・プロセッサおよびメモリの状態は正しくないからである。 このような場合、エミュレータを停止し、再度走らせて、例外を発生した動作を 追跡しなければならない。したがって、このようなエミュレータはターゲット・ コードのシーケンスを非常に迅速に走らせることはできるが、これらの例外から 復元する方法がなく、したがってアプリケーションの重要な部分を迅速に走らせ ることは全くできない。 これは、この形熊のエミュレータに伴う特異の問題ではない。何故なら、エミ ュレータ、トレーサおよび連動するアナライザが実行する機能は、新たなプログ ラムを発生するか、あるいは古いプログラムを別のマシンに移植して、エミュレ ータ・ソフトウエアが走る速度が殆ど問題にならないようにすることを目的とす るからである。即ち、プログラマは、エミュレータが生成したコードがホスト・ マシン上でどれ位速く走るかに常に関心がある訳ではなく、エミュレータが生成 するコードが、そのために設計した機械上で実行可能か、そして当該マシン上で 迅速に走るか否かに関心があるのである。結果的に、この種のエミュレーション ・ソフトウエアは、プログラミング以外の目的で異なる種類のマイクロプロセッ サ上で走らせるために第1命令セットで書かれたアプリケーション・プログラム を走らせる方法を提供するものではない。この種のエミュレーション・ソフトウ エアの一例が、"Shade:A First Instruction-Set Simulator for Execution Pro filing"(シェード:実行の特性を知るための高速命令セット・シミュレータ) と題するCmelik(スメリック)およびKeppel(ケッペル)の論文に記載されてい る。 技術的現状のマイクロプロセッサよりも高速でかつ安価でありながら、しかも 技術的現状のマイクロプロセッサに設計されたターゲット・アプリケーション・ プログラムと完全に互換性があり、これらのマイクロプロセッサに入手可能なあ らゆるオペレーティング・システムを走らせることができる、競争力のあるマイ クロプロセッサを提供することが望ましい。 更に特定すれば、かかるプロセッサの動作速度および互換性を高める回路を有 するホスト・プロセッサを提供することが好ましい。発明の概要 したがって、本発明の目的は、従来の技術的現状のマイクロプロセッサよりも 安価であり、しかも他のマイクロプロセッサのために設計されたアプリケーショ ン・プログラムやオペレーティング・システムと互換性があり、他のマイクロプ ロセッサよりも速いレートでこれらを走らせることが可能なマイクロプロセッサ の動作を改良する装置を備えたホスト・プロセッサを提供することである。 本発明のこの目的およびその他の目的は、アドレスされるメモリの本質に関す る思索の失敗を双方共検出する装置と、かかる失敗から復元する装置とを含む、 マイクロプロセッサ用メモリ・コントローラによって実現される。 本発明のこれらおよびその他の目的は、以下の詳細な説明を図面と共に参照す ることによって、より良く理解されよう。尚、図面においては、同様のエレメン トには種々の図にわたって同様の符号によって引用することとする。図面の簡単な説明 図1(a)ないし図1(e)は、従来技術に従って設計されたマイクロプロセ ッサの動作熊様を示す図である。 図2は、本発明に従って設計され、異なるマイクロプロセッサに設計されたア プリケーションを走らせる、マイクロプロセッサのブロック図である。 図3は、図2に示すマイクロプロセッサの一部を示す図である。 図4は、本発明に従って設計したマイクロプロセッサにおいて用いられるレジ スタ・ファイルを示すブロック図である。 図5は、本発明に従って設計したゲート格納バッファを示すブロック図である 。 図6(a)ないし図6(c)は、従来技術の様々なマイクロプロセッサおよび 本発明にしたがって設計したマイクロプロセッサにおいて用いられる命令を示す 。 図7は、本発明に従って設計したマイクロプロセッサのソフトウエア部分によ って実施される方法を示す。 図8は、本発明に従って設計したマイクロプロセッサのソフトウエア部分によ って実施される別の方法を示す。 図9は、本発明を含む改良コンピュータ・システムを示すブロック図である。 図10は、図3に示すマイクロプロセッサの一部を示すブロック図である。 図11は、図3のマイクロプロセッサ内に示す、変換ルック・アサイド・バッ ファを更に詳細に表わすブロック図である。表記および名称 以下の詳細な説明では、コンピュータ・メモリ内のデータ・ビットに対する動 作を象徴的な表現で提示する部分がある。これらの記載および表現は、データ処 理技術における当業者によって用いられ、他の当業者にそれらの動作の本質を最 も効果的に伝える手段である。動作は、物理的な量の物理的な操作を必要とする ものである。通常、これらの量は、格納、転送、結合、比較、およびそれ以外の 操作が可能な電気的または磁気的信号の形態を取るが、必ずしもそうとは限らな い。主に共通の使用という理由のために、これらの信号を、ビット、値、エレメ ント、シンボル、文字、言葉、数値等として言及すると便利であることが時とし て認められている。しかしながら、これらおよび同様の用語は全て、適切な物理 量に関連付けられており、これらの量に適用された単に便宜上の名称に過ぎない ことは、念頭に置いておくべきであろう。 更に、実行される操作は、多くの場合、加算または比較というような用語で言 及するが、これらは、人のオペレータが実行する精神的な動作と一般的に関連が ある。人のオペレータのこのような能力は、殆どの場合、本発明の一部を形成す る、ここに記載する動作のいずれにも必要でも望ましくもない。動作とは、機械 的動作である。本発明の動作を実行するために有用なマシンは、汎用ディジタル コンピュータ、またはその他の同様のデバイスを含む。全ての場合において、コ ンピュータを動作させる方法動作と、計算自体の方法との間の区別を、念頭に置 いておくべきである。本発明は、電気的またはその他の(例えば、機械的、化学 的)物理的信号を処理し、その他の所望の物理信号を発生するように、コンピュ ータを動作させる方法および装置に関するものである。 以下の説明の間、場合によっては、詳細な動作例を与えるために、ターゲット ・プログラムとは、X86マイクロプロセッサ上で実行するように設計されたプ ログラムを意味するものとする。何故なら、殆どのエミュレータはX86アプリ ケーションを走らせるからである。しかしながら、ターゲット・プログラムは、 いずれのターゲット・コンピュータ・ファミリ上で走るように設計されたもので もよい。これは、Pcodeマシン、Postscriptマシン、またはJa va仮想マシンのような、ターゲット仮想コンピュータを含む。詳細な説明 本発明は、従来技術の問題を克服し、従来技術のマイクロプロセッサよりも高 速に、従来技術の多数のファミリのマイクロプロセッサによって走らせることが できるオペレーティング・システムの全てに対してソフトウエアの全てを走らせ ることができ、しかも従来技術のマイクロプロセッサよりも安価なマイクロプロ セッサを提供する。 更に複雑化したハードウエアによってその動作を加速させるマイクロプロセッ サを用いる代わりに、本発明は、技術的現状のマイクロプロセッサよりも格段に 単純な改良ハードウエア処理部(この明細書では「モーフ・ホスト」と呼ぶ)と 、エミュレート・ソフトウエア部(この明細書では、「コード・モーフィング・ ソフトウエア」と呼ぶ)とを組み合わせ、これら2つの部分が一体となってマイ クロプロセッサとして機能し、公知のいずれの競合マイクロプロセッサよりも高 い性能を有するようにしたものである。更に具体的には、モーフ・ホストとは、 例外またはエラーが発生した場合、その後直ちにターゲット・コンピュータの状 熊を得る際に補佐するハードウエア機能強化を含むプロセッサであり、一方コー ド・モーフィング・ソフトウエアとは、ターゲット・プログラムの命令を、モー フ・ホストのためのモーフ・ホスト命令に変換し、例外およびエラーに応答して 、必要に応じてワーキング状熊を正しいターゲット状熊と置換することにより、 正しい再変換が行われるようにするソフトウエアである。また、コード・モーフ ィング・ソフトウエアは、処理速度を高めるための種々のプロセスを含むことも 可 能である。従来技術の超高速マイクロプロセッサは、その全てがハードウエアを 備えて処理速度を高めるが、その代わりに、本発明は、コード・モーフィング・ ソフトウエアによって、多数の加速補強技術を選択可能な段階において実行可能 とする。コード・モーフィング・ソフトウエアに速度補強技術を備えることによ り、複雑度が格段に低いハードウエアを用いて、モーフ・ホストを実現すること が可能となる。これは、従来技術のマイクロプロセッサのハードウエアよりも高 速であると共に大幅に安価である。比較として、入手可能なX86アプリケーシ ョン全てを走らせるように設計した本発明の一実施形態は、Pentium P roマイクロプロセッサのゲート数の約1/4を含むモーフ・ホストによって実 現され、しかもPentium Proマイクロプロセッサ、またはX86アプ リケーションを処理可能な他の公知のマイクロプロセッサのいずれよりも、これ らのアプリケーションを大幅に速く走らせる。 コード・モーフィング・ソフトウエアは、新たなソフトウエアを設計したり、 あるいは新たなハードウエアをエミュレートするプログラマによってのみ以前か ら用いられていた、ある種の技術を利用する。モーフ・ホストは、特に、コード ・モーフィング・ソフトウエアが提供する加速技術を効率的に利用可能とするよ うに構成された、複数のハードウエア機能強化を含む。これらのハードウエア機 能強化は、コード・モーフィング・ソフトウエアが、より広い範囲の命令に対し て、加速技術を実現可能とするものである。また、これらのハードウエア機能強 化は、ハードウエア・プロセッサでは得ることができず、法外なコストをかけた プロセッサでなければ実現できないような、追加の加速技術を、コード・モーフ ィング・ソフトウエアによって実施可能とする。これらの技術は、ネーティブの 命令セットの実行を行う従来技術のマイクロプロセッサの速度と比較して、本発 明のマイクロプロセッサの速度を格段に高めるものである。 例えば、改良モーフ・ホストと組み合わせたコード・モーフィング・ソフトウ エアは、大量の回路を追加する必要なく、ターゲット命令のシーケンスによって 発生した原始命令の並び替えや再スケジューリングを可能にする技術の使用を可 能にできる。多数のターゲット命令全体の並び替えおよび再スケジューリングを 可能にすることによって、他の最適化技術を用いて、ターゲット命令群を実行す るのに必要なプロセッサ・ステップ数を、ターゲット・アプリケーションを走ら せる他のいずれのマイクロプロセッサが必要とするよりも削減することができる 。 改良モーフ・ホストと組み合わせたコード・モーフィング・ソフトウエアは、 ターゲット命令を、実行中に、モーフ・ホストの命令に変換し、これらのホスト 命令をメモリ・データ構造(この明細書では、「変換バッファ」と呼ぶ)にキャ ッシュする。変換バッファを用いて変換した命令を保持することにより、どの原 始命令が各ターゲット命令を実現するために必要かを判定し、各原始命令をアド レスし、各原始命令を取り込み、原始命令のシーケンスを最適化し、各原始命令 にアセットを割り当て、原始命令を並び替え、そして各ターゲット命令を実行す る毎に、必要な原始命令の各シーケンスの各ステップを実行するという長大なプ ロセスを再度走らせることなく、命令を呼び出すことが可能となる。一旦ターゲ ット命令を変換したなら、これら無数のステップを全く必要とすることなく、変 換バッファからこれを呼び出し、実行することができる。 従来技術のエミュレーション技術の第1の問題は、これらの技術が、ターゲッ ト・プログラムの実行中に発生する例外を、良好なパーフォーマンスで処理する ことができない点にある。これは、特に、ターゲット・オペレーティング・シス テムを対象とするターゲット・アプリケーションを走らせている際に発生する例 外のときに該当する。この場合、例外およびそれに続く命令の適正な実行のため には、正しいターゲット状態が、このような例外のいずれの時点でも得ることが できなければならない。その結果、エミュレータは常にターゲット状態を高精度 に追跡することを強いられ、格納がターゲット・コード・エリアに対するものか 否かについて判定するために、常にチェックしていなければならない。他の例外 も同様の問題を引き起こす。例えば、エミュレータが、ある特定のホスト機能に よって置換された特定のターゲット動作を検出する場合に、例外が発生すること がある。即ち、ターゲット・プロセッサの種々のハードウエア動作は、エミュレ ータ・ソフトウエアが提供するソフトウエア動作で置換することができる。加え て、ターゲット命令から派生したホスト命令を実行するホスト・プロセッサも、 例外を発生する可能性がある。これらの例外は全て、エミュレータがターゲット 命令をホスト命令に変換しようとしている間、またはホスト変換がホスト・プロ セッサ上で実行されるときのいずれかに発生する可能性がある。効率的なエミュ レーションのためには、例外を正しく処理しつつ、これらの例外から効率的に復 元する何らかの方法を備える必要がある。エミュレートされ得る全てのソフトウ エアに対してこれを行うものは、従来技術にはない。 これら従来技術の限界を克服するために、改良モーフ・ホストには、多数のハ ードウエアの改善が含まれている。これらの改善には、ゲート格納バッファ(gat ed store buffer)および複数の大量の追加プロセッサ・レジスタが含まれる。追 加レジスタのいくつかによって、レジスタの名称変更を用い、同じハードウエア 資源を必要とする命令の問題を軽減することができる。また、追加レジスタによ って、ホスト命令を処理する1組のホスト・レジスタまたはワーキング・レジス タ、および1組のターゲット・レジスタを維持し、ターゲット・アプリケーショ ンを作成したターゲット・プロセッサのオフィシャル状態(official state)を保 持することができる。ターゲット(またはシャドウ)レジスタは、専用のインタ ーフェースを介して、それらのワーキング・レジスタの同等物に接続されている 。専用インターフェースは、「コミット」(commit)と呼ばれる動作によって、全 てのワーキング・レジスタの内容を素早くオフィシャル・ターゲット・レジスタ に転送させ、かつ「ロールバック」(rollback)と呼ばれる動作によって、全ての オフィシャル・ターゲット・レジスタの内容をそれらのワーキング・レジスタ同 等物に素早く逆転送させることを可能にする。ゲート格納バッファは、ハードウ エア「ゲート」の「アンコミット」側(uncommit side)のワーキング・メモリの 状熊変化を格納し、更にハードウエア・ゲートの「コミット」側のオフィシャル ・メモリの状熊変化を格納する。この場合、コミットされた格納は、主メモリに 「流出」する。コミット動作は、ゲートのアンコミット側からゲートのコミット 側に格納を転送する。一旦1つまたは1群のターゲット命令を変換し、エラーな く走らせたなら、追加のオフィシャル・レジスタおよびゲート格納バッファによ って、メモリ状熊およびターゲット・レジスタ状熊を一緒に更新することが可能 となる。 これらの更新は、コード・モーフィング・ソフトウエアによって、整数ターゲ ット命令境界(integral target instruction boundary)上で生じるように選択さ れる。したがって、一連のターゲット命令の変換を構成する原始ホスト命令が、 例外を発生せずに、ホスト・プロセッサによって走らされた場合、これらの命令 によって発生したワーキング・メモリの格納およびワーキング・レジスタ状態は 、オフィシャル・メモリに、次いでオフィシャル・ターゲット・レジスタに転送 される。このように、変換される1つまたは1組のターゲット命令の境界上にな い点において、ホスト命令を処理している際に例外が発生した場合、最後の更新 (またはコミット)におけるターゲット・レジスタ内の元の状熊は、ワーキング ・レジスタに呼び出すことができ、ゲート格納バッファ内のアンコミット・メモ リ格納を消去する(dump)ことができる。次に、発生した例外がターゲット例外で ある場合、このターゲット例外を生じたターゲット命令を1回に1つずつ再変換 し、それらがターゲット・マイクロプロセッサによって実行されるように、一連 のシーケンスで実行することができる。各ターゲット命令はエラーなく正しく実 行されるので、ターゲット・レジスタの状熊を更新でき、格納バッファ内のデー タをメモリに通過させる(gate)ことができる。次に、ホスト命令を走らせている 際に例外が再び発生した場合、ターゲット・コンピュータの正しい状態は、モー フ・ホストのターゲット・レジスタおよびメモリ内に保持され、動作を遅延なく 正しく処理することができる。この正しい変換によって得られる新たな変換の各 々は、今後のためにキャッシュしておき、それを変換する際、または一旦それを 消去する際、あるいはページ・フォールトのような稀な出来事の際に使用するこ とができる。これによって、コード・モーフィング・ソフトウエアとモーフ・ホ ストとの組み合わせによって作成したマイクロプロセッサが、元来ソフトウエア を書いた対象であるプロセッサよりも速く、命令を実行することが可能になる。 尚、本発明のマイクロプロセッサを用いてターゲット・プログラムを実行する 場合、多くの異なる種類の例外が発生する可能性があり、これらは異なる方法で 処理することを注記しておく。例えば、例外には、例外を発生するターゲット・ ソフトウエアが原因のものもあり、これにはターゲット・オペレーティング・シ ステムの例外ハンドラを利用する。このような例外ハンドラの使用では、プロセ スの処理のために、コード・モーフィング・ソフトウエアは、ターゲット・コン ピュータが備えるあらゆるハードウエアを含む、例外処理プロセス全体をエミュ レートするルーチンを含むことが必要である。このためには、コード・モーフィ ング・ソフトウエアが、ターゲット・プロセッサの状熊をセーブする機能を備え 、例外を処理し終わった後に、正しく移行できるようにする必要がある。ページ ・フォールトのように、変換されるプロセスを実施する前に、メモリの新たなペ ージにデータを取り込む必要がある例外では、例外を処理し終えた後に、変換対 象のプロセスの先頭に戻る必要がある。他の例外は、動作がハードウエアによっ て与えられない場合、ソフトウエアで特定の動作を実現する。これらは、例外ハ ンドラが、例外を処理し終えた後に、変換における次のステップに動作を戻すこ とを必要とする。これら異なる種類の例外は各々、本発明を含むマイクロプロセ ッサによって効率的に処理することができる。 加えて、例外には、ホスト・ハードウエアが発生し、種々のホストおよびター ゲット状熊を検出するものがある。また、例外には、従来のマイクロプロセッサ 上の例外のように振る舞うものもあるが、その他のものは、コード・モーフィン グ・ソフトウエアによって、種々の思索(speculation)の失敗を検出するために 用いられる。これらの場合、コード・モーフィング・ソフトウエアは、前述の状 熊セーブおよび復元機構を用いて、ターゲット状熊をその最近のオフィシャル・ バージョンに復元させ、失敗した思索を回避する新たな変換を発生しセーブする (あるいは、以前に行った安全な変換を用いる)。次に、この変換を実行する。 モーフ・ホストは、追加のハードウエア例外検出機構を含み、前述のロールバ ックおよび再変換方法と共に、一層の最適化を可能にする。例として、メモリを メモリ・マップI/Oから区別する手段、およびアドレスまたはアドレス範囲を 保護することによってメモリの参照を不要とし、ターゲット変数をレジスタに保 持可能とする手段を挙げる。 動作がメモリまたはメモリ・マップI/Oに影響を与えるか否かというように 、例外を用いて他の思索の失敗を検出する場合、新たな変換の生成によって復元 が達成されるが、メモリ動作は異なり、最適化も異なる。 図2は、図1(a)のCISCプロセッサ上で走っているのと同じアプリケー ション・プログラムを走らせる、本発明にしたがって設計したモーフ・ホスト・ ハードウエアを表わす図である。図に見られるように、マイクロプロセッサは、 前述のコード・モーフィング・ソフトウエア部と、改良ハードウエア・モーフ・ ホスト部とを含む。ターゲット・アプリケーションは、ターゲット命令をコード ・モーフィング・ソフトウエアに与え、モーフ・ホストが実行可能なホスト命令 に変換させる。その間、ターゲット・オペレーティング・システムは、ターゲッ ト・アプリケーション・プログラムからのコールを受け取り、これらをコード・ モーフィング・ソフトウエアに転送する。本発明の好適な実施形態では、モーフ ・ホストは、超長命令ワード(VLIW:very long instruction word)マイクロ プロセッサであり、複数の処理チャネルによって設計されている。このようなプ ロセッサの全体的な動作については、図6(c)に更に示されている。 図6(a)ないし図6(c)は、CISCプロセッサ、RISCプロセッサ、 およびVLIWプロセッサの各々と使用するように構成された命令を示す。図に 見られるように、CISC命令は可変長であり、より多くの原始動作(例えば、 ロードおよび加算)を複数個含むことができる。一方、RISC命令は、長さが 等しく、本質的に原始動作である。図示のVLIWプロセッサに対する単一の超 長命令は、CISCおよびRISC命令のより多くの原始動作(即ち、ロード、 格納、整数加算、比較、浮動小数点乗算、分岐)の各々を含む。図6(c)に見 られるように、一体となって単一の超長命令ワードを構成する原始命令の各々は 、他の原始命令と並列に、VLIWプロセッサの複数の別個の処理チャネルの1 つ、またはメモリのいずれかに与えられ、処理チャネルおよびメモリによって並 列に扱われる。これら並列動作の全ての結果は、マルチポート・レジスタ・ファ イルに転送される。 モーフ・ホストの基本であるVLIWプロセッサは、前述の他のプロセッサよ りもはるかに単純なプロセッサである。これは、発行依存性(issue dependency) を検出する回路も、原始命令を並び替え、最適化し、再スケジューリングする回 路も含まない。このために、元来ターゲット・アプリケーション・プログラムを 設計した対象のプロセッサや、エミュレーション・プログラムを用いてターゲッ ト・アプリケーション・プログラムを走らせるその他のプロセッサのいずれかが 可能なクロック・レートよりも高いクロック・レートで速い処理が可能となる。 しかしながら、プロセッサは、VLIWプロセッサに限定される訳ではなく、R ISCプロセッサのようなあらゆる種類のプロセッサとでも同様に機能すること ができる。 図2に示すマイクロプロセッサのコード・モーフィング・ソフトウエアは、変 換部を含む。これは、ターゲット・アプリケーションの命令をデコードし、これ らのターゲット命令を、モーフ・ホストによる実行が可能な原始ホスト命令に変 換し、ターゲット命令が要求する動作を最適化し、原始命令を並び替えスケジュ ーリングしてモーフ・ホストのVLIW命令(変換)とし、このホストVLIW 命令を実行する。変換部の動作を図7に示す。図7は、コード・モーフィング・ ソフトウエアの主ループの動作を示す。 コード・モーフィング・ソフトウエアおよび改良モーフ・ホスト・ハードウエ アを含むマイクロプロセッサの動作を加速するために、コード・モーフィング・ ソフトウエアは、図2に示すような変換バッファを含む。一実施形態の変換バッ ファは、メモリに格納可能なソフトウエア・データ構造である。特定の実施形態 では、ハードウエアのキャッシュも利用できる場合がある。変換バッファは、タ ーゲット命令の完了した変換各々を実体化するホスト命令を格納するために用い られる。図に見られるように、一旦個々のターゲット命令を変換し、得られたホ スト命令の最適化、並び替え、および再スケジューリングを行ったなら、得られ たホスト変換を変換バッファに格納する。次に、変換を構成するホスト命令を、 モーフ・ホストによって実行する。ホスト命令を実行し例外が発生しない場合、 その後ターゲット命令または命令群が必要とする動作が要求されるときにはいつ でも、変換を呼び出すことができる。 したがって、図7に示すように、アプリケーション・プログラムによってター ゲット命令のアドレスが与えられたときの、マイクロプロセッサのコード・モー フィング・ソフトウエアの典型的な動作は、最初に、当該ターゲット・アドレス におけるターゲット命令が変換されているか否かについて判定することである。 ターゲット命令が変換されていない場合、変換部によって、それおよび後続のタ ーゲット命令を取り込み、デコードし、変換し、次いで(恐らく)最適化し、並 び替え、新たなホスト変換に再スケジューリングし、変換バッファに格納する。 後でわかるであろうが、可能な最適化には様々な度合いがある。この明細書では 、 「最適化」という用語は、処理を加速するための技術のことを総称的に呼ぶため に用いることが多い。例えば、並び替えは、処理の高速化を可能とする最適化の 一形熊であり、この用語に含まれるものである。可能な最適化の多くは、コンパ イラの最適化の従来技術において説明されており、「スーパー・ブロック」(sup er-block)のように、従来技術の範囲内では実行が困難であったいくつかの最適 化が、VLIWの研究から明らかとなった。次に、制御を変換に移転し、改良モ ーフ・ホスト・ハードウエアによって実行し、再開する。 アプリケーションを走らせている際に、特定のターゲット命令シーケンスが次 に発見された場合、変換バッファ内にホスト変換が存在し、変換、最適化、並び 替えまたは再スケジュールの必要性なく、直ちに実行する。以下で述べる先進の 技術を用いることによって、ターゲット命令(一旦完全に変換された)に対する 変換は、ほぼ100万回の変換の実行毎に1回変換バッファ中に発見されること が推測されている。その結果、最初の変換後には、デコード、原始命令の取り込 み、原始命令の最適化、ホスト変換への再スケジューリング、および変換バッフ ァへの格納というような変換に必要なステップの全ては、必要な処理から除外す ることができる。ターゲット命令を書いた対象のプロセッサは、命令を実行する 毎に、各命令のデコード、取り込み、並べ替え、および再スケジューリングを行 わなければならないので、これは、ターゲット命令を実行するために必要な作業 を激減させ、改良プロセッサのマイクロプロセッサの速度を高めることになる。 従来技術のプロセッサによるターゲット・アプリケーションの実行に必要なこ れらのステップ全てを除去するため、本発明を含むマイクロプロセッサは、従来 技術において、このような動作をいずれの正当な速度でも不可能とする問題を克 服する。例えば、改良マイクロプロセッサの技術のいくつかは、アプリケーショ ンを他のシステムに移植するために用いられる、前述のエミュレータにおいて用 いられていた。しかしながら、これらのエミュレータのいくつかは、アプリケー ションの短い部分以外を走らせる方法がなかった。何故なら、変換された命令を 処理する際、種々のシステム例外ハンドラへのコールを発生する例外は、ホスト ・プロセッサの状熊が同じ命令を処理しているターゲット・プロセッサの状態に は関係がない動作時点で発生するからである。このため、このような例外が発 生する時点におけるターゲット・プロセッサの状熊はわからなかった。したがっ て、ターゲット・マシンの正しい状熊を判定することができず、動作を停止し、 再起動し、正しい状熊を把握してからでないと、例外に対処し(service)、実行 を継続することができなかった。このため、アプリケーション・プログラムをホ ストの速度で走らせることが不可能であった。 本発明のモーフ・ホスト・ハードウエアは、この問題を克服する多数の機能強 化を含む。これらの機能強化を、各々図3、図4および図5に示す。エラーが発 生した時点におけるレジスタの正しい状熊を判定するために、1組のオフィシャ ル・ターゲット・レジスタが改良ハードウエアによって与えられ、元のアプリケ ーションを設計した対象のターゲット・プロセッサのレジスタの状熊を保持する 。これらのターゲット・レジスタは、浮動小数点ユニット、あらゆる整数ユニッ トおよびその他のあらゆる実行ユニットの各々に含ませることができる。これら のオフィシャル・レジスタを本発明のモーフ・ホストに追加しつつ、通常のワー キング・レジスタ数も増加させることによって、レジスタの名称変更を含む多数 の最適化を実施可能とする。改良ハードウエアの一実施形態は、64個のワーキ ング・レジスタを整数ユニット内に、32個のワーキング・レジスタを浮動小数 点ユニット内に含む。また、この実施形熊は、補強した1組のターゲット・レジ スタも含む。その中には、ターゲット・プロセッサの状熊を与えるために必要な 、当該プロセッサの頻繁に変化するレジスタ全てが含まれる。これらには、条件 制御レジスタや、シミュレーション対象システムの制御に必要な他のレジスタが 含まれる。 尚、モーフ・ホストが利用する改良処理ハードウエアの種類によっては、変換 された命令シーケンスが、元のアプリケーションからの複数のターゲット命令を 構成する原始動作を含む場合があることを注記しておく。例えば、VLIWマイ クロプロセッサは、図6(a)ないし図6(c)に示すように、CISCまたは RISCのいずれかの複数の命令を同時に走らせることができる場合がある。モ ーフ・ホストの種類が何であれ、本発明のモーフ・ホスト・ハードウエアのター ゲット・レジスタの状熊は、整数ターゲット命令境界(integral target instruc tion boundary)以外では変化せず、次いで全てのターゲット・レジスタ は更新される。したがって、並び替えられホスト変換に再スケジューリングされ た可能性がある一連の原始命令に変換されたターゲット命令または命令群を本発 明のマイクロプロセッサが実行している場合、プロセッサがその変換された命令 シーケンスを実行し始めるとき、オフィシャル・ターゲット・レジスタは、最初 のターゲット命令がアドレスされたときに、アプリケーションの設計対象のター ゲット・プロセッサのレジスタが保持していた値を保持する。モーフ・ホストが 変換後の命令を実行し始めた後は、しかしながら、ワーキング・レジスタは、そ の時点までに実行された変換後の命令の原始動作によって決定される値を保持す る。したがって、これらのワーキング・レジスタのいくつかは、オフィシャル・ ターゲット・レジスタにおける値と同一の値を保持する可能性があるが、他のワ ーキング・レジスタはターゲット・プロセッサには無意味な値を保持する。これ は、特定のターゲット・マシンよりもはるかに多いレジスタを与え、先進の加速 技術を可能にしようとする実施例には、特に当てはまる。一旦変換後のホスト命 令が開始したなら、これらの変換後のホスト命令がワーキング・レジスタの状態 を決定し、これらのレジスタ内の値は、変換後のホスト命令が決定したいずれか の値となる。例外を発生せずに1組の変換後のホスト命令が実行された場合、こ の1組の命令の終了時に決定された新たなワーキング・レジスタ値が一緒にオフ ィシャル・ターゲット・レジスタに転送される(恐らく、ターゲット命令ポイン タ・レジスタを含む)。本発明のプロセッサのこの実施形態では、この転送は、 追加のパイプライン段において、ホスト命令の実行以外で行われるので、モーフ ・ホストの動作を遅らせることはない。 同様に、図5に示すようなゲート格納バッファを、改良マイクロプロセッサの ハードウエアにおいて利用し、データのメモリへの転送を制御する。ゲート格納 バッファは、多数のエレメントを含み、その各々はメモリ格納動作に対してアド レスおよびデータを保持することができる。これらのエレメントは、多数の異な るハードウエア構成のいずれでも実現可能であり(例えば、先入れ先出しバッフ ァ)、図示の実施形態は、ランダム・アクセス・メモリおよび3つの専用ワーキ ング・レジスタを利用して実現している。3つのレジスタは、それぞれ、メモリ 格納のキューの先頭に対するポインタ、ゲートに対するポインタ、およびメモリ 格納のキューの末尾に対するポインタを格納する。キューの先頭とゲートとの間 に位置するメモリ格納は、既にメモリにコミットされており、一方キューのゲー トと末尾との間に位置するメモリ格納は未だメモリにコミットされていない。ホ スト変換の実行中に発生したメモリ格納は、モーフ・ホストによるホスト命令の 実行中に発生した順序で、整数ユニットによって格納バッファに置かれるが、ホ スト命令においてコミット動作が見出されるまで、メモリへの書き込みは許され ない。このように、変換を実行すると、格納動作がキュー内に置かれる。これら が最初の格納であって他の格納がゲート格納バッファ内にないと仮定すると、先 頭ポインタおよびゲート・ポインタは同じ位置を示している。各格納を実行する につれて、キュー内の次の場所に置かれ、末尾ポインタが次の位置(図では上向 き)に増分される。これは、コミット・コマンドが実行されるまで続けられる。 コミット・コマンドの実行が行われるのは、通常、例外やエラー終了状態を発生 することなく、1組のターゲット命令の変換を完了したときである。エラーなく モーフ・ホストによって変換が実行された場合、実行中に発生した格納バッファ 内のメモリ格納は、一緒に格納バッファ(コミットされている)のゲートを通過 し、続いてメモリに書き込まれる。図示の実施形熊では、これは、末尾ポインタ を保持するレジスタ内の値を、ゲートポインタを保持するレジスタにコピーする ことによって行われる。 このように、ワーキング・レジスタからオフィシャル・ターゲット・レジスタ へのレジスタ状熊の転送、およびワーキング・メモリ格納のオフィシャル・メモ リへの転送の双方は、一緒に行われ、明示的なコミット動作に応答して、整数タ ーゲット命令間の境界上でのみ行われることがわかる。 これによって、マイクロプロセッサは、改良モーフ・ホストによる実行中に発 生したターゲット例外から、重大な遅延を全く伴うことなく、復元することがで きる。変換された命令または命令群のいずれかの実行中に、ターゲット例外が発 生した場合、この例外は、モーフ・ホスト・ハードウエアまたはソフトウエアに よって検出する。ターゲット例外の検出に応答して、コード・モーフィング・ソ フトウエアは、オフィシャル・レジスタ内に保持されている値を、ワーキング・ レジスタに戻し、ゲート格納バッファ内のコミットされていないメモリ格納を全 て消去する(「ロールバック」と呼ばれる動作)。図5のゲート格納バッファ内 のメモリ格納の消去は、ゲート・ポインタを保持するレジスタ内の値を、末尾ポ インタを保持するレジスタにコピーすることによって、行うことができる。 ターゲット・レジスタからワーキング・レジスタに値を移すことにより、例外 が発生したときに走っていたターゲット命令の最初のもののアドレスを、ワーキ ング命令ポインタ・レジスタ内に置くことができる。 ワーキング・レジスタ内のターゲット・プロセッサのこのオフィシャル状態か ら開始して、例外が発生したときに走っていたターゲット命令を連続順序で再変 換するが、並び替えやその他の最適化はまったく行わない。各ターゲット命令を 新たにデコードし新たなホスト変換に変換した後、ターゲット命令を表す変換さ れたホスト命令をモーフ・ホストによって実行すると、例外が発生する場合ある いは発生しない場合がある。(モーフ・ホストがVLIWプロセッサ以外である 場合、ホスト変換の原始動作の各々が順次実行される。ホスト変換を走らせてい る際に例外が発生しなかった場合、次の原始機能を走らせる。)これは、例外が 再度発生するか、あるいは単一のターゲット命令が変換され実行し終えるまで続 けられる。一実施形熊では、例外を発生せずにターゲット命令の変換が実行され た場合、ワーキング・レジスタの状熊がターゲット・レジスタに転送され、更に ゲート格納バッファ内のあらゆるデータがコミットされるので、メモリに転送す ることができる。しかしながら、変換の実行中に例外が再度発生した場合、ター ゲット・レジスタおよびメモリの状態は変化せず、例外が発生したときにターゲ ット・コンピュータ内に生じた状態と同一である。その結果、ターゲット例外が 発生した場合、この例外は、ターゲット・オペレーティング・システムによって 正しく処理される。 同様に、変換によって例外が発生した一連の命令の内第1のターゲット命令が 一旦実行され、例外が発生しなかったのであれば、ターゲット命令ポインタは、 次のターゲット命令を示す。この第2のターゲット命令は、第1の場合と同様に 、最適化または並び替えを行わず、デコードし再変換する。単一のターゲット命 令のホスト変換の各々がモーフ・ホストによって処理されていくと、ターゲット ・レジスタおよびメモリの状熊が、ターゲット・コンピュータ内に生ずる状態と 同 一である場合、何らかの例外が発生する。その結果、例外を直ちにかつ正しく処 理することができる。これら新たな変換は、ターゲット・アプリケーションにお ける命令のシーケンスに対する正しい変換として、変換バッファ内に格納され、 命令を再度走らせるときにはいつでも呼び出すことができる。 図5のゲート格納バッファと同じ結果を得る本発明の他の実施形態は、格納を 直接メモリに転送しつつ、変換の例外の結果ロールバックを必要とする例外また はエラーを生じた場合にターゲット・コンピュータの状態を復元するために十分 なデータを記録する構成を含むものとすることができよう。このような場合、変 換および実行の間に発生したいずれのメモリ格納についてもその効果を逆転させ 、変換の開始時に存在していたメモリ状態を復元しなければならない。一方、ワ ーキング・レジスタは、先に論じたように、オフィシャル・ターゲット・レジス タ内に保持されているデータを受け取らなければならない。これを行う一実施形 態は、別個のターゲット・メモリを維持して元のメモリ状態を保持しておき、ロ ールバックが発生した場合に、これを利用して、上書きされたメモリを置換する 。メモリ・ロールバックを行う他の実施形態は、各格納を記録し、メモリ・デー タが発生する毎にこれを置換し、次いでロールバックが必要な場合に、格納プロ セスを逆転させる。 本発明のコード・モーフィング・ソフトウエアは、変換されているプログラム を処理する速度を大幅に高める、追加の動作を備えている。単純に命令を変換し 、最適化し、並び替え、再スケジューリングし、キャッシュし、各変換を実行し て、1組の命令を実行する必要があるときにはいつでも再度走らせることができ るようにしておくことに加えて、変換部は異なる変換をリンクし、殆ど全ての場 合に、変換プロセスの主ループへのリターンを不要にする。図8は、このリンク ・プロセスを行う際に、コード・モーフィング・ソフトウエアの変換部が実行す るステップを示す。このリンク動作は、殆どの命令の変換について、本質的に主 ループへのリターンを不要とし、このオーバーヘッドをなくするものであること は、当業者には理解されよう。 例示の目的のために、走らせるターゲット・プログラムがX86の命令で構成 されていると仮定する。ターゲット命令のシーケンスの変換を行い、原始ホスト 命令を並び替え再スケジューリングする場合、各ホスト変換の終了時に、2つの 原始命令が発生する可能性がある。最初のものは、ターゲット・プロセッサに対 する命令ポインタの値(またはその同等物)を更新する原始命令である。この命 令は、次のターゲット命令の正しいアドレスを、ターゲット命令ポインタ・レジ スタに置くために用いられる。この原始命令に続くのは、分岐命令であり、当該 分岐に対する2つの可能なターゲットの各々のアドレスを含む。分岐命令に先立 つ原始命令がターゲット・プロセッサに対する命令ポインタの値を更新する方法 は、条件コード・レジスタ内の当該分岐に対する条件コードを試験し、分岐を制 御する条件が示す2つの分岐アドレスの一方が変換バッファ内に格納されている か否かについて判定を行うことである。最初にターゲット命令のシーケンスを変 換する場合、ホスト命令の2つの分岐ターゲットは双方とも、変換部ソフトウエ アの主ループに対して、同じホスト・プロセッサ・アドレスを保持している。 ホスト変換が完了し、変換バッファに格納され、最初に実行されるとき、ター ゲット命令ポインタ・レジスタにおいて、命令ポインタを更新し(ターゲット・ レジスタの残りと同様に)、動作は分岐して主ループに戻る。主ループでは、変 換ソフトウエアは、ターゲット命令ポインタ・レジスタ内において、次のターゲ ット命令への命令ポインタを参照する。次いで、次のターゲット命令シーケンス をアドレスする。このターゲット命令のシーケンスが未だ変換されておらず、し たがって変換が変換バッファ内にないと仮定すると、次の1組のターゲット命令 をメモリから取り込み、デコードし、変換し、最適化し、並び替え、再スケジュ ーリングを行い、変換バッファ内にキャッシュし、実行する。第2組のターゲッ ト命令が第1組のターゲット命令に続くので、第1組のターゲット命令のホスト 変換の最後の原始分岐命令は自動的に更新され、第2組のターゲット命令のホス ト変換のアドレスを、当該分岐を制御する特定の条件に対する分岐アドレスとし て置換する。 次に、第2の変換されたホスト命令が第1の変換されたホスト命令にループ・ バックする場合、第2の変換の最後における分岐動作は、主ループのアドレス、 および第1の変換のX86アドレスを、当該分岐に可能な2つのターゲットとし て含む。分岐に先立つ更新−命令−ポインタ原始動作は、条件を試験し、第1の 変換へのループ・バックを行うことを決定し、最初の変換のX86アドレスへの ターゲット命令ポインタを更新する。これによって、変換部は変換バッファを調 べ、捜索中のX86アドレスがそこにあるか否か確かめる。最初の変換のアドレ スを発見したなら、ホスト・メモリ空間内におけるその値を、第2のホスト変換 命令の最後の分岐内のX86アドレスと置換する。次に、第2のホスト変換命令 をキャッシュし実行する。これによって、第1の変換から第2の変換への分岐を 行わせる条件が満たされなくなるまで、このループを走らせ、主ループに戻る経 路を取る分岐を行う。これが行われた場合、第1の変換されたホスト命令は主ル ープに戻るように分岐し、ターゲット命令ポインタによって指定される次の1組 のターゲット命令を変換バッファ内で探索し、キャッシュからホスト変換を取り 込む。あるいは、変換バッファ内の探索が失敗した場合、ターゲット命令をメモ リから取り込み、変換する。この変換されたホスト命令が変換バッファにキャッ シュされるとき、そのアドレスが、ループを終了した分岐命令内の主ループ・ア ドレスと置換する。 このように、種々の変換されたホスト命令が互いに連鎖されているので、変換 主ループを通過する長い経路を辿る必要があるのは、リンクが存在しない場合の みである。最終的に、ホスト命令の分岐命令における主ループの参照は、殆ど完 全に無用となる。この条件に達した場合、いずれのホスト命令を走らせる前であ っても、ターゲット命令を取り込み、ターゲット命令をデコードし、当該ターゲ ット命令を構成する原始命令を取り込み、これらの原始動作を最適化し、原始動 作を並び替え、これら原始動作の再スケジュールを行うために必要な時間が不要 となる。したがって、いずれのアプリケーションの命令シーケンスを走らせる場 合にもその都度これらのステップの各々を実行しなければならない全ての従来技 術のマイクロプロセッサとは対照的に、改良マイクロプロセッサを用いれば、最 初の変換を行った後には、いずれの1組のターゲット命令を走らせるために必要 な作業も激減する。この作業は、各組の変換されたホスト命令を他の組の変換さ れたホスト命令にリンクすることによって、更に減少する。実際、アプリケーシ ョンを走らせている間、変換が必要となるのは、100万回の命令実行中1回未 満となることが推定される。 変換する各組の命令を順にキャッシュし、再度変換する必要をなくすようにす るため、このマイクロプロセッサの実現には、大きな変換バッファが必要である ことを当業者は認識するであろう。異なるシステムに対してプログラムされたア プリケーションと共に機能するように設計された変換部の支援用バッファ・メモ リに対する必要性は様々に変化する。しかしながら、X86プログラムを走らせ るように設計されたマイクロプロセッサの一実施形熊は、2メガバイトのランダ ム・アクセス・メモリを変換バッファとして利用している。 2つの追加のハードウエア機能強化が、本発明を含むマイクロプロセッサがア プリケーションを処理可能な速度を高めるのに役立つ。これらの内最初のものは 、異常/正常(A/N)保護ビットであり、ターゲット命令の物理アドレスの参 照を最初に行った変換ルック・アサイド・バッファ(TLB)(図3参照)内の 各アドレス変換と共に格納される。変換内部のターゲット・メモリの動作には、 2種類あり、一方はメモリ上で動作するもの(正常)、他方はメモリ・マップI /Oデバイス上で動作するもの(異常)とすることができる。 メモリに影響を与える正常アクセスは、正常に完了する。命令がメモリ上で動 作する場合、これらの命令の最適化および並び替えを行うことが適当であり、本 発明を含むマイクロプロセッサを用いたいずれのシステムでも、その速度を高め るのに非常に役立つ。一方、I/Oデバイスに影響を与える異常アクセスの動作 は、いずれのステップも除去することなく、これらの動作がプログラムされた正 確な順序で行わなければならない場合が多い。さもないと、I/Oデバイスに何 らかの悪影響を与える可能性がある。例えば、特定のI/O動作が、I/Oレジ スタをクリアする結果をもたらす場合があり、原始動作が順序を外して行われた 場合、動作の結果は、ターゲット命令が指令した動作とは異なる場合がある。メ モリをメモリ・マップI/Oと区別する手段がないと、メモリ・マップI/Oに 影響を与える命令を変換する際に用いられる旧来の仮定を用いて、全てのメモリ を扱わなければならない。これは、達成可能な最適性を著しく制限することにな る。従来技術のエミュレータは、アドレスされているメモリの特性に対する思索 の失敗を検出する手段、およびこのような失敗から復元する手段の双方を欠いて いたので、その処理能力には限界があった。 図11に示すマイクロプロセッサの一実施形態では、A/Nビットは、メモリ ・ページまたはメモリ・マップI/Oのいずれかを示すために、変換ルック・ア サイド・バッファ内にセットすることができるビットである。変換ルック・アサ イド・バッファは、メモリ・アクセスに対するページ・テーブル・エントリを格 納する。このようなエントリは各々、アクセスされる仮想アドレスおよび捜索中 のデータにアクセス可能な物理アドレス、ならびにエントリに関するその他の情 報を含む。本発明では、A/Nビットはその他の情報の一部であり、物理アドレ スがメモリ・アドレスかあるいはメモリ・マップI/Oアドレスかを示す。メモ リに影響を与える動作を、メモリ動作であるかのように変換することは、実際に は、この動作がメモリに影響を与えるものとする思索である。一実施形態では、 コード・モーフィング・ソフトウエアが最初に、メモリまたはメモリ・マップI /Oデバイスのいずれかのアクセスを必要とする変換を実行しようとする場合、 実際には、当該アクセスをメモリ・アクセスと仮定する。別の実施形態では、タ ーゲット・コマンドがI/Oアクセスを要求すると、ソフトウエアが仮定するこ とも可能である。そのアドレスへのアクセスが未だ行われていないと仮定すると 、変換ルック・アサイド・バッファ内にはエントリがなく、アクセスは変換ルッ ク・アサイド・バッファにおいて失敗する。この失敗のために、ソフトウエアは 、ぺージ・テーブル参照を行い、変換ルック・アサイド・バッファの格納位置に 、ページ・テーブル・エントリを入力し、仮想アドレスに対する正しい物理アド レス変換を与える。これを行う際に、ソフトウエアは、この物理アドレスに対す るA/Nビットを、変換ルック・アサイド・バッファに入力させる。次いで、ア クセスがメモリ・アドレスに対するものと仮定すると、再度アクセスを実行しよ うとする試みが行われる。アクセスが試行されると、仮定したアクセス型(正常 または異常)を、現在TLBページ・テーブル・エントリ内にあるA/N保護ビ ットと比較することによって、ターゲット・メモリ参照をチェックする。アクセ ス型がA/N保護と一致しない場合、例外が発生する。実際に動作がメモリに影 響を与える場合、前述の最適化、並び替え、および再スケジューリング技術が、 変換中に正しく適用されたことになる。しかしながら、TLB内のA/Nビット との比較が、動作がI/Oデバイスに影響を与えることが示す場合、実行によっ て 例外が発生し、変換部は、いずれの種類の最適化、並び替え、再スケジューリン グも行わず、1度に1つのターゲット命令ずつ、新たな変換を行う。同様に、変 換が、実際にはメモリに影響を与える動作をI/O動作と誤って仮定した場合、 実行によって例外が発生し、最適化技術、並び替え技術および再スケジューリン グ技術を用いて、ターゲット命令を再変換する。このように、本プロセッサは、 従来可能であった性能を超える改良をもたらすことができる。 尚、A/Nビットを用いて、アクセスがメモリまたはメモリ・マップI/Oデ バイスのどちらに対するものかについての思索が失敗したか否かを判定する技術 は、メモリ・マップ・アドレスの他の特性に関する思索にも使用可能であること は、当業者には認められよう。例えば、このような正常/異常ビットを用いて、 異なる種類のメモリを区別することができる。他の同様な使用法として、メモリ 特性を区別することも挙げられるが、当業者には理解されよう。 改良マイクロプロセッサが最も頻繁に実施する思索の1つは、変換中にターゲ ット例外が発生しないことに関するものである。これによって、従来技術に対し て格段の最適化が可能となる。第1に、ターゲット状態を各ターゲット命令境界 毎に更新する必要がなく、変換境界上に生ずるターゲット命令境界上でのみ更新 すればよい。これによって、各ターゲット命令境界毎にターゲット状態をセーブ するために必要な命令が不要となる。スケジューリングや冗長な動作を除去する ことに対する、従来では不可能であった最適化も可能となる。 驚くべきことに、改良マイクロプロセッサは、適切な変換プロセスを選択する ように構成されている。前述の変換方法によれば、最初に1組の命令を、それが メモリに影響を与えるかのように、変換することができる。次に、ホスト命令の 最適化、並び替え、および再スケジューリングを実行すると、変換ルック・アサ イド・バッファ内に備えられているA/Nビットの状態によって、I/Oデバイ スを参照するアドレスを得ることができる。A/Nビットと、ある動作がI/O 動作であることを示す変換命令アドレスとの比較により、エラー例外が発生し、 これによってソフトウエアが開始するロールバック手順が行われ、あらゆるアン コミット・メモリ格納が消去され、ターゲット・レジスタ内の値はワーキング・ レジスタ内に戻される。次に、1度に1ターゲット命令ずつ変換が開始され、最 適化、並び替え、あるいは再スケジューリングは行われない。この再変換は、I /Oデバイスに適したホスト変換である。 同様に、メモリ動作を、I/O動作として誤って変換する可能性がある。発生 するエラーを用いて、その正しい再変換を行わせ、最適化、並び替え、および再 スケジューリングを行うことにより、より速い動作を与える。 従来技術のエミュレータは、一般的に自己変更コード(self modifying code) と呼ばれるものにも苦闘していた。ターゲット・プログラムが、ターゲット命令 を収容しているメモリに書き込みを行った場合、これらのターゲット命令のため に存在する変換は「古く」なり、もはや有効でなくなる。これらの格納が発生す る際に、動的にこれらを検出する必要がある。従来技術では、各格納に対して余 分な命令を用いてこのような検出を行わなければならない。この問題は、プログ ラムがそれ自体を変更することよりも、範囲が広い。第2のプロセッサやDMA デバイスのような、メモリに書き込みを行う可能性のあるあらゆるエージェント も、この問題を発生する可能性がある。 本発明は、モーフ・ホストに対する別の機能強化によって、この問題に対処す る。同様に変換ルック・アサイド・バッファに格納することができる変換ビット (Tビット)を用いて、変換が存在する原因であるターゲット・メモリ・ページ を示す。したがって、Tビットは、ターゲット・メモリの特定のページが、ホス ト変換が存在する原因であるターゲット命令を含むことを示すことができる。こ れらのターゲット命令が上書きされた場合、変換は陳腐化することになる。メモ リ内で保護されているページに書き込みを行おうとした場合、変換ビットの存在 によって例外が発生し、これをコード・モーフィング・ソフトウエアで処理する と、該当する変換(複数の変換)を無効化し、変換バッファから除去することが できる。また、Tビットは、書き込まれていないターゲット・ページにマークを 付けるために用い、これに基づいて変換を行うことも可能である。 本発明を含むマイクロプロセッサの全体的な機能エレメントをブロック図状で 示す図3を参照することによって、これは理解することができる。モーフ・ホス トがターゲット・プログラムを実行する場合、実際には、変換されていない元の ホスト命令のみを含む、コード・モーフィング・ソフトウエアの変換部部分を走 らせる。変換されていない元のホスト命令は、事実上、モーフ・ホスト上で走る 。図の右側に、本質的に変換部および変換バッファを含むホスト部分と、ターゲ ット・オペレーティング・システムを含み、ターゲット命令およびデータを含む ターゲット部分とに分割されたメモリが示されている。モーフ・ホスト・ハード ウエアは、変換部を実行開始する際、メモリからホスト命令を取り込み、これら の命令を命令キャッシュ内に置く。変換部の命令は、メモリのターゲット部分に 格納されている最初のターゲット命令のフェッチ(fetch)を発生する。ターゲッ ト・フェッチを実行することにより、整数ユニットは、ターゲット命令の第1の アドレスを求めて、オフィシャル・ターゲット命令ポインタ・レジスタを探る。 次に、メモリ管理ユニットの変換ルック・アサイド・バッファ内の最初のアドレ スにアクセスする。メモリ管理ユニットは、ページング用ハードウエアを含み、 TLBにメモリ・マッピング機能(facilities)を与える。TLBが正しくマップ されており、ターゲット・メモリの正しいページに対する参照データを保持して いると仮定すると、ターゲット命令ポインタ値は、ターゲット命令の物理アドレ スに変換される。この時点において、変換がターゲット命令に対して行われたか 否かを示すビット(Tビット)の状態が検出されるが、アクセスは読み取り動作 であり、Tビットの例外は発生しない。アクセスがメモリまたはメモリ・マップ I/Oのどちらに対するものかを示すA/Nビットの状熊も検出される。最後に 述べたビットがメモリ位置を示すと仮定すると、変換が存在しないので、ターゲ ット・メモリ内のターゲット命令にアクセスする。このターゲット命令および後 続のターゲット命令は、モーフ・ホスト計算機ユニットへのデータとして転送さ れ、命令キャッシュに格納されている変換命令の制御の下で変換される。変換命 令は、このターゲット命令がメモリに影響を与えるかのように、並び替え技術、 最適化技術、および再スケジューリング技術を利用する。次に、ホスト命令のシ ーケンスを含む変換が得られ、これをホスト・メモリ内の変換バッファに格納す る。変換は、ゲート格納バッファを介して、ホスト・メモリ内の変換バッファに 直接転送される。一旦変換がホスト・メモリに格納されたなら、変換部は変換に 分岐し、次いでこれを実行する。この実行(および後続の実行)は、変換が例外 およびメモリに関して正しい仮定を行ったか否かについて判定を行う。変換を実 行する前に、変換したターゲット命令を収容しているターゲット・ページ(群) に対するTビットをセットする。この指示は、命令が変換されたこと、およびタ ーゲット・アドレスに対する書き込みを行おうとすると、この試行は例外を発生 し、変換が無効になるかあるいは除去される可能性があることを警告する。 モーフ・ホストに対する追加のハードウエア機能強化の1つは、通常はメモリ に格納されるが動作の実行において頻繁に用いられるデータを、実行ユニット・ レジスタ内に複製(即ち、「エイリアス」)し、各使用毎に当該データをメモリ から取り出す際に要する時間を不要にするために利用する回路である。一実施形 態においてこれを行うためには、モーフ・ソフトを「ロードおよび保護」コマン ドに応答するように設計し、図10に示す実行ユニット110内のワーキング・ レジスタ111にメモリ・データをコピーし、そのメモリ・アドレスを当該ユニ ット内のレジスタ112内に置く。アドレス・レジスタと連動するのは、比較器 113である。比較器は、変換中メモリに向けられたゲート格納バッファへのロ ードおよび格納のアドレスを受け取る。ロードまたは格納のいずれかに対するメ モリ・アドレスをレジスタ112(または実施形態によっては追加のレジスタ) 内のアドレスと比較した場合、例外が発生する。コード・モーフィング・ソフト ウエアは、メモリ・アドレスおよびレジスタが同じ正しいデータを保持している ことを確認することによって、この例外に応答する。一実施形熊では、変換をロ ール・バックし、実行レジスタ内に「エイリアス」データが全くない状態で、再 実行することによって、これを行う。この問題を補正する他の可能な方法として 、レジスタを最新のメモリ・データで更新するか、あるいはメモリを最新のロー ド・データで更新することが挙げられる。 本発明のマイクロプロセッサは、典型的なコンピュータ・エレメントを有する 回路に接続すれば、図9に示すようなコンピュータを形成可能であることは、当 業者には認められよう。図に見られるように、最近のX86コンピュータに用い る場合、マイクロプロセッサをプロセッサ・バスを介してメモリおよびバス制御 回路に結合する。メモリおよびバス制御回路は、主メモリおよび、マイクロプロ セッサと共に利用可能なキャッシュ・メモリへのアクセスを与えるように構成さ れている。また、メモリおよびバス制御回路は、PCIまたはその他のローカ ル・バスのようなバスへのアクセスも与え、このバスを通じてI/Oデバイスに アクセスすることができる。個々のコンピュータ・システムは、本発明のプロセ ッサによって置換される典型的なマイクロプロセッサと共に用いられる回路に依 存する。 本発明のプロセッサの動作、および実行の加速化を行う態様を示すために、X 86ターゲットコードの小さなサンプルのホスト原始命令への変換を、ここで提 示する。このサンプルは、X86ターゲット命令のモーフ・ホスト命令への変換 を示し、本発明のマイクロプロセッサによる、最適化、並び替え、および再スケ ジューリングのステップの様々な例を含む。例示するプロセスを追って行くこと により、ターゲット・プロセッサを用いて元の命令を実行する際に必要な動作と 、ホスト・プロセッサ上で変換を実行する際に必要な動作との間の大幅な差が、 当業者には明白となろう。 C言語のソース・コードで例示した元の命令は、非常に短いループ処理を記述 する。本質的に、各ループの後に減分される変数「n」が「0」より大きい間、 値「c」が、ポインタ「*s」が示すアドレスに格納される。ポインタ「*s」 は各ループの後に増分される。 元のCコードこのCコードをコンパイルしたコンパイラによって生成されたWin32x86 命令 表記:[...]は、メモリ・オペランドに対するアドレス表現を示す。先の例では 、メモリ・オペランドに対するアドレスは、レジスタの内容を、Oxプレフィク スが示す16進定数に加算することによって形成される。ターゲット・レジスタ は、%プレフィクスで示される。例えば、%ecxは、excレジスタを示す。動作の宛 先は左側である。 このサンプルの第1部分では、C言語の命令文によって定義される動作の実行 を行うための個々のX86アセンブリ言語の命令は各々、当該動作に対するアセ ンブリ言語のニモニックによって表に纏められており、特定の原始動作に含まれ るパラメータがこれに続く。動作の説明も、各命令毎のコメントにおいて与える ことにする。実行の順序は、ターゲット・プロセッサでは、図示のものとは異な る場合もあるが、これらのアセンブリ言語命令の各々は、ターゲットC言語命令 を実行する際に、ループを実行する毎に実行しなければならない。したがって、 ループが100回行われる場合、以上に示した各命令は100回実行されなけれ ばならない。以上に示した 各X86命令、およびそれに続いて、X86命令を実装するために 必要なホスト命令を示す。 次のサンプルは、C言語命令を実行する、同じターゲット原始命令を示す。し かしながら、各原始ターゲット命令の次に、本発明のマイクロプロセッサの一特 定実施形態において同じ動作を行うために必要な原始ホスト命令を纏めてある。 このマイクロプロセッサでは、モーフ・ホストはここに記載したように設計され たVLIWプロセッサである。オフィシャル・ターゲット・レジスタによってシ ャドウされたホスト・レジスタは、「R」で示し、その後ろにX86レジスタ名 称が続くので、例えば、Reaxは、EAXオフィシャル・ターゲット・レジス タと連動するワーキング・レジスタであることを注記しておく。 X86アドレス計算およびセグメントの上限および下限チェックを行うために必 要なホスト命令を追加する。 次のサンプルは、原始ターゲット命令の各々について、ホスト原始命令の追加 を示し、これによって、ターゲット動作に必要なアドレスを、コード・モーフィ ング・ソフトウエアによって発生することができるものである。ホスト・アドレ ス発生命令は、アドレス発生ハードウエアの代わりに、コード・モーフィング・ ソフトウエアをアドレス発生に用いるマイクロプロセッサの実施形態においての み必要となることを注記しておく。X86マイクロプロセッサのようなターゲッ ト・プロセッサでは、アドレス発生ハードウエアを用いてこれらのアドレスを発 生する。このような本発明の実施例においてアドレスが発生したときはいつでも 、計算が行われ、また、ホスト原始命令が追加され、アドレス値をチェックする ことによって、算出されたアドレスが適切なX86セグメントの限度内にあるこ とを判定する。 ターゲットX86命令ポインタ「eip」を維持するための命令、および特殊な モーフ・ホスト・ハードウエアを用いてX86の状態を更新するコミット命令を 追加する。 (コミット=ワーキング・レジスタの内容をオフィシャル・ターゲット・ レジスタにコピーし、ワーキング格納をメモリに送る) このサンプルは、原始ホスト命令の各組に2ステップを追加することによって 、ゲート格納バッファ内のアンコミット値をメモリにコミットするために必要な ホスト命令の実行後に、各原始ターゲット命令を実行し、オフィシャル・ターゲ ット・レジスタを更新することを例示する。サンプルに見られるように、各場合 において、ターゲット命令の長さを、ワーキング命令ポインタ・レジスタ(Re ip)内の値に加算する。次に、コミット命令を実行する。一実施形熊では、コ ミット命令は、連動するオフィシャル・ターゲット・レジスタにシャドウされて いる各ワーキング・レジスタの現在値をコピーし、ゲート格納バッファのゲート の位置を指定するポインタ値を、アンコミットの格納の直前から、それらの格納 の直後に移動させ、それらをメモリ内に置くようにする。 上記の最後に示した命令のリストは、元のターゲット・アセンブリ言語命令の ホスト変換を形成するために必要な命令の全てであることは認められよう。変換 がこの時点で停止した場合、原始ホスト命令の数は、ターゲット命令の数よりも はるかに多くなり(恐らく、6倍多い命令)、その実行は、ターゲット・プロセ ッサ上での実行よりも長くかかる可能性がある。しかしながら、この時点では、 並び替えや、最適化や、再スケジューリングは未だ行われていない。 命令を1度だけ走らせる場合、更に並び替えやその他の最適化も行うために要 する時間は、この時点で存在する変換を実行するための時間よりも長くなるとい うことになり得る。その場合、マイクロプロセッサの一実施形態では、この時点 で変換を中止し、変換を格納し、次いでそれを実行して例外またはエラーが発生 するか否かについて判定を行う。この実施形熊では、並び替えおよびその他の最 適化のステップが行われるのは、特定の変換をある回数走らせることまたは最適 化すべきことを決定した場合のみである。これは、例えば、ホスト命令を各変換 に置き、変換を実行した回数を数え、ある値に達したときに例外(または分岐) を発生することによって行われる。例外(または分岐)は、動作をコード・モー フィング・ソフトウエアに転送し、次いでコード・モーフィング・ソフトウエア は、以下の最適化の一部または全部、および当該変換に有用と判定されたあらゆ る追加の最適化を実現する。変換を走らせた回数を判定し、最適化を要求する第 2の方法は、ある頻度でまたはある統計的基準に基づいて、変換の実行を中断し 、その時点で走っているいずれの変換も最適化することである。これは、究極的 に、最も頻繁に走らせる命令を最適化しようとするものである。別の解決策とし て、ループを形成するものや、その他に最も頻繁に走らせる可能性があるものの ような、ある特定の形式のホスト命令の各々を最適化することも挙げられよう。 最適化 セグメント・ベース加算およびいくつかの限度チェックの除去を可能にする32 ビットのフラットなアドレス空間を仮定する。 このサンプルは、改良マイクロプロセッサを利用して実施可能な最適化の第1 段を例示する。この最適化段は、コード・モーフィング・ソフトウエアの他の動 作の多くと同様、最適な結果を想定する。特定の最適化は、X86プロセッサ・ ファミリによって与えられるフラット・メモリ・モデルに対して書かれた32ビ ット・プログラムとして開始したターゲット・アプリケーション・プログラムが 、そのようなプログラムとして継続することを想定する。このような想定は、X 86ファミリに特定なものであり、エミュレート対象の他のプロセッサ・ファミ リでは必ずしも適用される訳ではないことを注記しておく。 この想定を行った場合、X86用アプリケーションでは、全てのセグメントが 同一アドレス空間にマップされる。これによって、X86セグメンテーション・ プロセスが要求する原始ホスト命令を除去することが可能となる。サンプルに見 られるように、最初にセグメント値をゼロにセットする。次に、データのベース をゼロにセットし、限度を最大使用可能メモリにセットする。すると、ターゲッ ト原始命令を実行するための各組の原始ホスト命令において、セグメンテーショ ンに必要なセグメント・ベース値のチェック、およびセグメント・ベース・アド レスの計算双方が不要となる。これによって、アドレシング機能を必要とする各 ターゲット原始命令に対して、2つのホスト原始命令が実行すべきループを減少 する。この時点では、メモリ上限に対するホスト命令チェックは未だ存在する。 この最適化には、アプリケーションが32ビット・フラット・メモリ・モデル を利用することを記した思索を必要とすることを注記すべきであろう。これが真 でない場合、主ループが制御転送の宛先を解明し、転送元の想定が宛先の想定と 一致しないことを検出する際に、エラーが発見される。すると、新たな変換が必 要となる。この技法は非常に一般的であり、種々のセグメンテーションおよびそ の他の「モード化」の場合において、デバッグ、システム管理モード、または「 リアル」モードのように、「モード」が頻繁に変化する場合に適用可能である。 アドレスされたデータはコンピュータ・メモリの限度以外のバイトを含まないと 想定する。限度を超える可能性があるのは、メモリ上限においてメモリ参照と交 差する整合されていないページ上においてのみであり、特殊ケース用ソフトウエ アまたはハードウエアによって処理可能である。 このサンプルは、最適化の次の段階を例示する。この場合、思索的な変換(spe culative translation)によって、メモリ・アドレス空間の上端においてメモリ 参照と交差する整合されていないページに対してのみ必要な、上側のメモリ境界 チェックを不要にする。この想定の失敗は、ハードウエアまたはソフトウエアの 整合解決(fix up)によって検出される。これによって、アドレシングを必要とす る各ターゲット原始命令毎に、ホスト原始命令1つだけ変換が減少する。この最 適化は、アプリケーションが32ビット・フラット・メモリ・モデルを利用する という先に記した想定、および命令が整合されているという思索の双方を必要と する。これらが真でない場合、変換を実行した際に失敗に終わり、新たな変換が 必要となる。 冗長なアドレス算出を検出し除去する。この例は、冗長な動作を除去した後のコ ードを示す。 このサンプルは、次の最適化を例示する。この場合、共通のホスト表現を除去 する。即ち、2番目のターゲット原始命令を変換する際、ワーキング・レジスタ Rebp(X86プロセッサのスタック・ペース・ポイント・レジスタを表すワ ーキング・レジスタ)内の値を、オフセット値Ox8に加算し、ホスト・ワーキン グ・レジスタR2に置く。直前のサンプルにおいてターゲット原始命令5を変換 する際に同じ動作を行ったが、加算の結果はワーキング・レジスタR5に置かれ たことを注記しておく。その結果、ワーキング・レジスタR5に置かれる値は、 ホスト原始命令5が生じようとするときには、既にワーキング・レジスタR2に 存在する。したがって、ホストの加算命令を、ターゲット原始命令5の変換から 除去することができ、ワーキング・レジスタR2内の値をワーキング・レジスタ R5にコピーすればよい。同様に、ワーキング・レジスタRebp内の値をオフ セット値Ox10と加算するホスト命令も、ターゲット原始命令8の変換では除去す ることができる。何故なら、このステップは既にターゲット原始命令6の変換に おいて行われており、結果はレジスタR7にあるからである。この最適化は思索 に依存せず、そのため失敗や再変換がないことを注記しておく。 変換内ではターゲット例外が発生せず、したがって、eipやターゲット状態を 更新する際の遅延も発生しないと仮定する。 この例は、変換全体を構成する原始ターゲット命令の変換が、例外を発生する ことなく行うことができると思索する最適化を例示する。これが真であれば、オ フィシャル・ターゲット・レジスタを更新したり、個々のターゲット原始命令を 実行するホスト原始命令の各シーケンス毎に、その終了時に格納バッファにおけ るアンコミットの格納をコミットする必要がなくなる。思索が真であれば、ター ゲット原始命令のシーケンスの終了時に、オフィシャル・ターゲット・レジスタ だけを更新すればよく、格納をコミットするのは一度だけでよい。これによって 、各原始ターゲット命令を実行するための原始ホスト命令を2つ除去することが 可能となる。これらは、オフィシャル・ターゲット・レジスタを更新し、アンコ ミットの格納をメモリにコミットする単一のホスト原始命令と置換する。 これは、別の思索的動作であり、これも正しい思索を含む可能性が非常に高い ことは理解されよう。このステップは、思索が真であれば、従来技術のエミュレ ーション技術全てに対して、非常に大きな利点を提供することになる。これは、 ターゲット原始命令のシーケンス全体を実行する原始ホスト命令の全てを、1つ のシーケンスに集合化し、その中で個々のホスト原始命令の全てを一緒に最適化 することができる。これには、超長命令ワード技術を利用したモーフ・ホスト上 で多数の動作を並列に走らせることができるという利点がある。また、これによ って、より多数のその他の最適化も可能となる。何故なら、このような最適化に 対する選択肢が広がるからである。更にまた、しかしながら、思索が真でないこ とが判明し、ループの実行時に例外が発生した場合、オフィシャル・ターゲット ・レジスタおよびメモリは、ターゲット原始命令のシーケンスの開始時に存在し たオフィシャル・ターゲットの状態を保持している。何故なら、ホスト命令のシ ーケンスが実際に実行されるまで、コミットは生じないからである。例外から復 元するために必要な全ては、アンコミットの格納を消去し、オフィシャル・レジ スタをワーキング・レジスタにロールバックし、シーケンスの開始時にターゲッ ト原始命令の変換を再度開始することである。この再変換は、1度に1ターゲッ ト命令ずつの変換を行い、各ターゲット原始命令を表すホスト・シーケンスを変 換した後に、オフィシャル状態を更新する。次に、この変換を実行する。この 再変換において例外が発生した場合、この例外を実行するために、オフィシャル ・ターゲット・レジスタおよびメモリにおいて、正しいターゲット状態を直ちに 得ることができる。 注釈"Live Out"は、コミットの前にReaxおよびRecxを実際に正しく保持 する必要性のことを意味する。さもなければ、更なる最適化が不可能な場合もあ る。 この要約は、最適化プロセスのこの時点において残っているホスト原始命令の シーケンスを例示する。この例は、ターゲット命令ポインタ(EIP)インライ ンの維持を示すが、変換時に分岐のためのポインタEIPをライン外に維持する ことが可能である。この場合、ポインタEIP更新シーケンスをこのステップお よび本例の後続のステップから除去することができる。 レジスタ資源依存性を低下させるための名称変更。これによって、以降のスケジ ューリングが一層効果的となる。この時点以降、個々のターゲットX86命令と ホスト命令との間の関係が増々曖昧になるので、元のターゲットX86コードを 省略する。 このサンプルは、通常レジスタ名称変更と呼ばれる、最適化の次のステップを 示す。ここでは、ホスト原始命令のシーケンスにおいて1回以上の動作に用いら れるワーキング・レジスタを必要とする動作は、異なる不使用のワーキング・レ ジスタを利用するように変更され、2つのホスト命令が同じハードウエアを必要 とするという可能性をなくす。したがって、例えば、先の2つのサンプルにおい て、2番目のホスト原始命令は、オフィシャル・ターゲット・レジスタECXを 表すワーキング・レジスタRecxを使用する。10番目のホスト原始命令も、 ワーキング・レジスタRecxを使用する。2番目のホスト原始命令における動 作を変更し、R0内のアドレスによって示される値を、レジスタRecxではな く、ワーキング・レジスタR1に格納することにより、先の2つのホスト命令が 双方とも同じレジスタを使用する事態は避けられる。同様に、4番目、5番目、 および6番目の原始命令も、先のサンプルでは、全てワーキング・レジスタRe axを利用する。4番目のホスト原始命令を変更し、ワーキング・レジスタRe axの代わりに、それまで不使用のワーキング・レジスタR3を利用するように し、更に6番目のホスト原始命令を変更して、レジスタReaxの代わりに、そ れまで不使用のワーキング・レジスタR4を利用することによって、これらのハ ードウエア依存性がなくなる。 ホストVLIWハードウエア上で並列に実行可能な多数の動作として、原始ホス ト動作を組織化するスケジューリング・プロセスの後。各行は、VLIWマシン が実行する並列動作を示し、"&"は並列であることを示す。 このサンプルは、モーフ・ホスト上で実行するためのホスト原始命令のスケジ ューリングを示す。この例では、モーフ・ホストをVLIWプロセッサと仮定し 、コード・モーフィング・ソフトウエアと協同するために備えられたハードウエ ア機能強化に加えて、処理ユニットの中でもとりわけ、2つの算術および論理( ALU)ユニットが含まれている。最初の行は、モーフ・ホスト上で一緒に走る ようにスケジュールされた2つの個別の加算命令を示す。サンプルに見られるよ うに、これらは、先の要約の直前のサンプルにおける3番目および8番目の原始 ホスト命令である。2番目の行は、NOP(無動作であるが、次の命令に進む) 命令および別の加算命令を含む。NOP命令は、何らかのスケジューリング最適 化を行った後でも、一緒に走らせることができる命令が常に2つあるとは限らな いことを示す。いずれにしても、このサンプルは、この時点では9組の原始ホス ト命令のみが、元の10個のターゲット命令を実行するために残されていること を示す。 ホスト分岐ターゲットおよび連鎖格納変換の解決 このサンプルは、本質的に、ホスト原始命令の同じ組を例示するが、命令はこ の時点では、変換バッファに格納され、1回以上実行されている点で異なる。何 故なら、最後のジャンプ(jp)命令が、ここでは、変換された命令の別のシー ケンスに連鎖することによって与えられたジャンプ・アドレスを示すからである 。連鎖プロセスは、シーケンスの変換が完了していれば、変換部のメイン・ルー プから命令のシーケンスを取り出す。 進んだ最適化、逆方向コード移動 これ以降の例は、スケジューリングに先立つコードから始まる。この最適化は、 まず、コードがループであることの検出に依存する。次に、ループ本体から不変 の動作を除去し、ループ本体に入る前に1回実行することができる。 この例は、大抵は多数回繰り返されるシーケンスでのみ利用される進んだ最適 化ステップを例示する。このプロセスは、最初に、ループを形成する変換を検出 し、個々の原始ホスト命令を調べて、ループ本体内で一定の結果を生成する命令 を判定する。これらの命令をループ本体から除去し、1回だけ実行して、レジス タ内に値を置く。その時点以降、このレジスタに格納した値を用い、命令を再度 走らせることはしない。 逆方向コード移動後のループ本体のスケジューリング。例示の目的のために、ル ープ本体内のコードのみをスケジューリングして示す。 これら繰り返しのない命令をループから除去し、シーケンスを実行のためにス ケジューリングすると、スケジューリングされた命令は、この最後のサンプルの ようになる。初期の命令は実行されるが、ループの最初の繰り返しの間に1度だ けであり、その後は、図示の7つのクロック・インタバルに残っているホスト原 始命令のみが、ループの間に実行されることがわかる。したがって、実行時間は 、原始ターゲット命令を実行するために必要な10命令から、7命令インタバル に短縮した。 サンプルからわかるように、ループから除去したステップは、アドレス発生ス テップである。したがって、アドレス発生は、改良マイクロプロセッサでは、ル ープ呼び出し毎に1回だけ行えばよい。即ち、アドレス発生は1回だけ行えばよ い。一方、X86ターゲット・プロセッサのアドレス発生ハードウエアは、これ らのアドレスを、ループを実行する毎に発生しなければならない。ループを10 0回実行する場合、改良マイクロプロセッサは1回だけアドレスを発生するのに 対して、ターゲット・プロセッサは、各アドレスを100回発生することになる 。 逆方向コード移動の後 これは、変数を安全にメモリからレジスタに移動させることができる、モーフ・ ホストのレジスタ・エイリアス検出ハードウエアの使用を示す。開始点は、「逆 方向コード移動」の後のコードである。これは、ロードを除去することができる 最適化を示す。 最初にロードを実行する。エイリアス・ハードウエアによってアドレスは保護 されており、このアドレスに対する格納が行われると、「エイリアス」例外が発 生する。次に、ループ本体内のロードをコピーと置換する。ループの本体の後、 エイリアス・ハードウエアを解放する。 このサンプルは、更に進んだ最適化を例示し、本発明を含むマイクロプロセッ サによって実施することができる。このサンプルより2つ前のサンプルを再度参 照すると、最初の3つの加算命令が、スタック上のアドレスの計算を伴っていた ことに気が付くであろう。これらのアドレスは、ホスト動作のシーケンスの実行 中変化しない。つまり、これらのアドレスに格納されている値は、メモリから検 索し、実行のために直ちに得ることができるレジスタにロードしておけばよい。 サンプルに見られるように、これはホスト原始命令6,8,および10において 行われる。命令7,9および11では、メモリ・アドレスの各々に、特殊なホス ト・エイリアス・ハードウエアによって保護されているという印が付けられてお り、レジスタは、これらのメモリ・アドレスのエイリアスとして示されているの で、そのデータを変更しようとするいずれの試みも、例外の原因となる。この点 において、これらのスタック・メモリ・アドレスからのデータ移動を伴うロード 動作の各々は、単純なレジスタ間コピー動作となり、これは、メモリ・アドレス からのロードよりも格段に速く進展する。n=0まで一旦ループを実行し終えた なら、エイリアス・レジスタを他のために利用できるように、メモリ・アドレス の各々から保護を除去しなければならないことを注記しておく。 コピー伝搬 エイリアス・ハードウエアを用いて、ループ本体内のロードをコピーに転換した 後、コピー伝搬によって、いくつかのコピーを不要とすることができる。 このサンプルは、最適化の次の段階を示す。ここでは、最後のサンプルで示し た最適化においてロード命令を置換したコピー命令の殆どが不要であり、除外し てもよいことを認識する。即ち、レジスタ間コピー動作が行われると、データを コピーした元のレジスタ内に、その動作前のデータが存在する。その場合、デー タは、それがコピーされたレジスタではなく、最初のレジスタにアクセスするこ とができ、コピー動作を除去することができる。これからわかるように、最後の サンプルのループ内に示す、先頭、2番目、5番目および9番目の原始ホスト命 令が除去される。加えて、ホスト原始命令の他のものに用いられているレジスタ も変更され、当該データに対する正しいレジスタを反映する。したがって、例え ば、最初と2番目のコピー命令を除去した場合、3番目の格納命令は、データが 存在するワーキング・レジスタRc(レジスタR1ではなく)からデータをコピ ーし、ワーキング・レジスタRs(レジスタR3ではなく)内に示されるアドレ スにそのデータを置かなければならない。ワーキング・レジスタRsには、その アドレスが存在する。 ループ本体のみのスケジューリングを示す例 上のサンプルにスケジューリング後のホスト命令を示す。このシーケンスは、 ソース・コードから当初デコードされた原始ターゲット命令を実行するよりも、 ループを実行するのに必要なクロックが少なくて済むことを注記しておく。した がって、行われた他の加速化の全てとは別に、結合された動作を走らせる総回数 は、元のターゲット・コードを実行するために必要な動作よりも、単純に少なく なる。 エイリアス・ハードウエアの使用による格納の除去 このサンプルに示す最終的な最適化は、エイリアス・ハードウエアの使用によ る格納の除去である。これは、ループ本体内から格納を除去し、それらをループ の結びにおいてのみ実行する。これによって、ループ本体内のホスト命令数が、 元の10個のターゲット命令と比較して、3つに減少する。 以上、好適な実施形態に関して本発明の説明を行ったが、本発明の精神および 範囲から逸脱することなく、当業者には種々の変更や変形も可能であることは認 められよう。例えば、本発明は、X86プロセッサのエミュレーションに関して 説明したが、本発明は、同様に、他のプロセッサ・アーキテクチャに設計された プログラム、およびPコード、Postscript、またはJavaプログラムのような 仮想マシン上で実行するプログラムにも適用されることは理解されよう。したが って、本発明は、以下の請求の範囲に沿って解釈すべきものとする。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ウィング,マルコム・ジョン アメリカ合衆国カリフォルニア州94025, メンロ・パーク,ケント・プレイス 24, アパートメント 5

Claims (1)

  1. 【特許請求の範囲】 1.コンピュータにおいてメモリへのアクセスを制御するシステムであって、 命令のアドレスが、メモリまたはメモリ・マップI/Oデバイスのどちらに向 けられたものかを示すハードウエア手段と、 前記アドレスがメモリまたはI/Oであることを思索する命令を起動するソフ トウエア手段と、 前記命令に関して行った前記思索を、前記ハードウエア手段の指示と比較する 手段と、 比較が、前記思索および前記指示が異なることを示した場合、補正処置を取る 手段と、 を備えることを特徴とするシステム。 2.請求項1記載のメモリへのアクセスを制御するシステムにおいて、前記ハー ドウエア手段が、 仮想アドレスおよび関連する物理アドレスに対する複数の格納ロケーションを 含むルック・アサイド・バッファと、 前記変換ルック・アサイド・バッファの各格納ロケーションにおける格納位置 と、 を備えることを特徴とするシステム。 3.請求項1記載のメモリへのアクセスを制御するシステムにおいて、前記アド レスがメモリまたはI/Oであることを思索する命令を起動する前記ソフトウエ ア手段が、ターゲット・プロセッサに対する1組の命令から変換された、ホスト ・プロセッサに対する1組の命令であり、前記1組の命令が、当該命令によって 用いられる各アドレスに対する思索の指示を含むことを特徴とするシステム。 4.請求項1記載のメモリへのアクセスを制御するシステムにおいて、前記ハー ドウエア手段が、 仮想アドレスおよび関連する物理アドレスに対する複数の格納ロケーションを 含むルック・アサイド・バッファと、 前記変換ルック・アサイド・バッファの各格納ロケーションにおける格納位置 と、 を備え、 前記アドレスがメモリまたはI/Oであることを思索する命令を起動する前記 ソフトウエア手段が、ターゲット・プロセッサに対する1組の命令から変換され た、ホスト・プロセッサに対する1組の命令であり、前記1組の命令が、当該命 令によって用いられる各アドレスに対する思索の指示を含む、 ことを特徴とするシステム。 5.請求項4記載のメモリへのアクセスを制御するシステムにおいて、前記命令 に関して行った前記思索を、前記ハードウエア手段の指示と比較する前記手段が 、各アドレスに対する思索の指示を、一致するアドレスを格納する格納ロケーシ ョンにおける記憶位置の状態と比較するハードウエア比較器を備えることを特徴 とするシステム。 6.マイクロプロセッサ用メモリ・コントローラであって、 アドレスされるメモリの本質に関する思索の失敗を双方共検出する手段と、 かかる失敗から復元する手段と、 を備えることを特徴とするメモリ・コントローラ。 7.請求項6記載のメモリ・コントローラにおいて、アドレスされるメモリの本 質に関する思索の失敗を検出する前記手段が、 アドレスされる物理メモリの本質の指示を格納するハードウエア手段と、 前記アドレスされるメモリの本質の思索を、前記ハードウエア手段によって格 納された、前記アドレスされる物理メモリの本質の指示と比較する手段と、 を備えることを特徴とするメモリ・コントローラ。 8.請求項7記載のメモリ・コントローラにおいて、かかる失敗から復元する前 記手段が、 前記アドレスされるメモリの本質の思索を、前記アドレスされる物理メモリの 本質の指示と比較する前記手段による比較の失敗に応答し、例外を発生する手段 と、 前記例外に応答する手段と、 を備えることを特徴とするメモリ・コントローラ。 9.請求項6記載のメモリ・コントローラにおいて、アドレスされるメモリの本 質に関する思索の失敗を検出する前記手段が、 前記アドレスされる物理メモリの本質の指示を格納するハードウエア手段と、 前記アドレスされるメモリの本質に関する思索、および前記ハードウエア手段 によって格納された、前記アドレスされる物理メモリの本質の指示を比較する手 段と、 を備え、 かかる失敗から復元する前記手段が、 前記アドレスされるメモリの本質の思索を、前記アドレスされる物理メモリの 本質の指示と比較する前記手段による比較の失敗に応答し、例外を発生する手段 と、 前記例外に応答する手段と、 を備えることを特徴とするメモリ・コントローラ。 10.請求項9記載のメモリ・コントローラにおいて、前記例外に応答する前記 手段が、 前記マイクロプロセッサを利用するコンピュータの状熊を復元する手段と、 前記アドレスされるメモリの本質が前記思索とは異なると推定し、前記アドレ スにアクセスする手段と、 を備えることを特徴とするメモリ・コントローラ。 11.請求項9記載のメモリ・コントローラにおいて、かかる失敗から復元する 前記手段が、 前記アドレスされるメモリの本質に関する思索の失敗に応答して、例外を発生 する手段と、 前記アドレスされるメモリの本質に関する思索の失敗に関係する例外から復元 するためのプロセスを与える手段と、 を備えることを特徴とするメモリ・コントローラ。 12.コンピュータ用メモリ制御システムであって、 主メモリと、 メモリ・マップ入出力(I/O)デバイスと、 コマンドに、特定のアドレスにおける動作に影響を与えさせるメモリ制御ソフ トウエアと、 最近アクセスされた仮想アドレスと、これら仮想アドレスの前記コンピュータ 内部における物理アドレスへの変換とを格納するメモリ・ロケーションを含む変 換ルックアサイド・バッファと、 前記アドレスがメモリまたはメモリ・マップI/Oのどちらであると仮定した かに関する指示を記録する、各メモリ・ロケーション毎の少なくとも1つのメモ リ位置と、 を備えることを特徴とするコンピュータ用メモリ制御システム。 13.請求項12記載のメモリ制御システムであって、更に、前記変換ルックア サイド・バッファに格納されている仮想アドレスにアクセスする命令が、前記物 理アドレスが当該物理アドレスに対して記録された指示と同一であると推定する か否かを検出する比較器を備えることを特徴とするメモリ制御システム。 14.コンピュータ・システム内のメモリとしてアクセスされる構成部分の特性 に関して失敗した思索から復元する方法であって、 メモリとしてアクセスされる構成部分の特性が存在しないことに関する例外か ら復元するプロセスを与えるステップと、 あるアドレスに対するアクセスを発生し、特定のアドレスの特性に関して思索 するステップと、 前記思索を前記アドレスされる構成部分の特性と比較することによって、前記 思索の失敗を検出するステップと、 前記プロセスを走らせることによって、前記思索の失敗の検出に応答するステ ップと、 から成ることを特徴とする方法。 15.請求項14記載の失敗した思索から復元する方法において、前記思索の失 敗を検出する前記ステップが、前記思索の失敗に応答して例外を発生するステッ プを含むことを特徴とする方法。 16.請求項14記載の失敗した思索から復元する方法において、メモリとして アクセスされる構成部分の特性が存在しないことに関する例外から復元するプロ セスを与える前記ステップが、 前記思索以前に存在していた前記コンピュータ・システムの状熊の指示を格納 する、復元用例外ハンドラを格納するステップと、 前記思索以前に存在していた前記コンピュータの状熊の指示を格納するステッ プと、 を含み、 前記プロセスを走らせることによって、前記思索の失敗の検出に応答する前記 ステップが、 前記格納した状熊の指示を復元するステップと、 前記復元した状熊を利用し、前記失敗した思索が行われた地点から、前記コン ピュータの動作を継続するステップと、 を含むことを特徴とする方法。 17.マイクロプロセッサであって、 第1命令セットを実行可能なホスト・プロセッサと、 第2の異なる命令セットを有するターゲット・プロセッサに対して書かれたプ ログラムを、前記第1命令セットの命令に変換するコード・モーフィング・ソフ トウエアと、 メモリ・コントローラと、 を備え、前記メモリ・コントローラが、 最近アクセスされた仮想ターゲット・アドレスと、該仮想ターゲット・アドレ スによって表わされる物理アドレスとを記録する、複数の格納ロケーションを含 むアドレス変換バッファと、 前記格納ロケーションの各々が、物理アドレスがメモリ・アドレスまたはメモ リ・マップ入出力(I/O)アドレスのどちらであるかを示す手段を含み、 格納ロケーションにおける指示を、格納位置における仮想ターゲット・アドレ スへのアクセスがメモリまたはメモリ・マップI/Oのどちらに対するものであ るかについて行われた思索と比較し、前記アドレスにアクセスする際に行うべき 後続の動作を示す手段と、 を備えることを特徴とするマイクロプロセッサ。 18.請求項17記載のマイクロプロセッサにおいて、格納ロケーションにおけ る指示を、格納位置における仮想ターゲット・アドレスへのアクセスがメモリま たはメモリ・マップI/Oのどちらに対するものであるかについて行われた思索 と比較し、前記アドレスにアクセスする際に行うべき後続の動作を示す前記手段 が、 比較の失敗に応答して例外を発生する手段と、 前記例外に応答し、前記アドレスにアクセスする際に行うべき後続の動作を示 す手段と、 を備えることを特徴とするマイクロプロセッサ。 19.請求項18記載のマイクロプロセッサにおいて、物理アドレスがメモリ・ アドレスまたはメモリ・マップ入出力(I/O)アドレスのどちらであるかを示 す前記手段が、格納ロケーションにおける格納位置を備えることを特徴とするマ イクロプロセッサ。 20.メモリ・コントローラであって、 最近アクセスされた仮想ターゲット・アドレスと、該仮想ターゲット・アドレ スによって表わされる物理アドレスとを記録する、複数の格納ロケーションを含 むアドレス変換バッファと、 前記格納ロケーションの各々が、物理アドレスがメモリ・アドレスまたはメモ リ・マップ入出力(I/O)アドレスのどちらであるかを示す手段を含み、 格納ロケーションにおける指示を、格納位置におけるアドレスへのアクセスが メモリまたはメモリ・マップI/Oのどちらにに対するものであるかについて行 われた思索と比較し、前記アドレスにアクセスする際に行うべき後続の動作を示 す手段と、 を備えることを特徴とするメモリ・コントローラ。 21.請求項20記載のメモリ・コントローラにおいて、格納ロケーションにお ける指示を、格納位置における仮想ターゲット・アドレスへのアクセスがメモリ またはメモリ・マップI/Oのどちらにに対するものであるかについて行われた 思索と比較し、前記アドレスにアクセスする際に行うべき後続の動作を示す前記 手段が、 比較の失敗に応答して例外を発生する手段と、 前記例外に応答し、前記アドレスにアクセスする際に行うべき後続の動作を示 す手段と、 を備えることを特徴とするメモリ・コントローラ。 22.請求項20記載のメモリ・コントローラにおいて、物理アドレスがメモリ ・アドレスまたはメモリ・マップ入出力(I/O)アドレスのどちらであるかを 示す前記手段が、格納ロケーションにおける格納位置を備えることを特徴とする メモリ・コントローラ。
JP51207399A 1997-08-11 1997-08-11 アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ Expired - Fee Related JP3615770B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1997/014118 WO1999008188A1 (en) 1996-08-20 1997-08-11 A memory controller for detecting a failure of speculation of a component being addressed

Publications (2)

Publication Number Publication Date
JP2001519956A true JP2001519956A (ja) 2001-10-23
JP3615770B2 JP3615770B2 (ja) 2005-02-02

Family

ID=22261431

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51207399A Expired - Fee Related JP3615770B2 (ja) 1997-08-11 1997-08-11 アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ

Country Status (9)

Country Link
US (1) US5832205A (ja)
EP (1) EP1002271B1 (ja)
JP (1) JP3615770B2 (ja)
KR (1) KR100463810B1 (ja)
CN (1) CN1161691C (ja)
AT (1) ATE412940T1 (ja)
CA (1) CA2283559C (ja)
DE (1) DE69739078D1 (ja)
WO (1) WO1999008188A1 (ja)

Families Citing this family (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
ATE200357T1 (de) 1991-07-08 2001-04-15 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
WO1993020505A2 (en) 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
KR100248903B1 (ko) 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US6117187A (en) * 1997-09-30 2000-09-12 Hewlett-Packard Company Automatic generation of a software installation package
US6370632B1 (en) 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
US6260131B1 (en) 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6397242B1 (en) 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6205537B1 (en) 1998-07-16 2001-03-20 University Of Rochester Mechanism for dynamically adapting the complexity of a microprocessor
US6704925B1 (en) 1998-09-10 2004-03-09 Vmware, Inc. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US6308318B2 (en) * 1998-10-07 2001-10-23 Hewlett-Packard Company Method and apparatus for handling asynchronous exceptions in a dynamic translation system
ATE293808T1 (de) * 1998-10-10 2005-05-15 Transitive Ltd Programm-kode-umwandlung
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
JP3583937B2 (ja) * 1998-12-28 2004-11-04 富士通株式会社 情報処理装置
US6311326B1 (en) * 1999-01-04 2001-10-30 Emc Corporation Online debugging and tracing system and method
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
EP1151374B1 (en) * 1999-01-28 2017-08-02 Advanced Silicon Technologies, LLC Executing programs for a first computer architecture on a computer of a second architecture
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6662354B1 (en) 1999-01-29 2003-12-09 Unisys Corporation Determining destinations of a dynamic branch
US7065750B2 (en) * 1999-02-17 2006-06-20 Elbrus International Method and apparatus for preserving precise exceptions in binary translated code
US6397267B1 (en) * 1999-03-04 2002-05-28 Sun Microsystems, Inc. Redirected I/O for scalable performance storage architecture
US7058932B1 (en) 1999-04-19 2006-06-06 Unisys Corporation System, computer program product, and methods for emulation of computer programs
US6725189B2 (en) * 1999-04-22 2004-04-20 Unisys Corporation Adapter for coupling a legacy operating system to a driver of an I/O channel which has an incompatible native operating system interface
US7353163B2 (en) * 1999-04-27 2008-04-01 Transitive Limited Exception handling method and apparatus for use in program code conversion
GB2349486B (en) * 1999-04-27 2001-05-30 Univ Manchester Exception handling in program code conversion.
DE69938621D1 (de) * 1999-05-03 2008-06-12 St Microelectronics Sa Befehlausgabe in einem Rechner
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6442664B1 (en) * 1999-06-01 2002-08-27 International Business Machines Corporation Computer memory address translation system
US7634635B1 (en) 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6714904B1 (en) * 1999-10-13 2004-03-30 Transmeta Corporation System for using rate of exception event generation during execution of translated instructions to control optimization of the translated instructions
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6880152B1 (en) * 1999-10-13 2005-04-12 Transmeta Corporation Method of determining a mode of code generation
US6363336B1 (en) * 1999-10-13 2002-03-26 Transmeta Corporation Fine grain translation discrimination
JP5220974B2 (ja) 1999-10-14 2013-06-26 ブルアーク ユーケー リミテッド ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6751583B1 (en) 1999-10-29 2004-06-15 Vast Systems Technology Corporation Hardware and software co-simulation including simulating a target processor using binary translation
US6594750B1 (en) * 1999-12-08 2003-07-15 Ati International Srl Method and apparatus for handling an accessed bit in a page table entry
US6845353B1 (en) 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
JP2001195250A (ja) * 2000-01-13 2001-07-19 Mitsubishi Electric Corp 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
US7100061B2 (en) 2000-01-18 2006-08-29 Transmeta Corporation Adaptive power control
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US7085914B1 (en) 2000-01-27 2006-08-01 International Business Machines Corporation Methods for renaming stack references to processor registers
US7036106B1 (en) 2000-02-17 2006-04-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6763327B1 (en) * 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US6594821B1 (en) * 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6349361B1 (en) 2000-03-31 2002-02-19 International Business Machines Corporation Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
US7389208B1 (en) 2000-06-30 2008-06-17 Accord Solutions, Inc. System and method for dynamic knowledge construction
US7260731B1 (en) 2000-10-23 2007-08-21 Transmeta Corporation Saving power when in or transitioning to a static mode of a processor
US6772372B2 (en) * 2001-03-06 2004-08-03 Hewlett-Packard Development Company, L.P. System and method for monitoring unaligned memory accesses
US6775823B2 (en) * 2001-03-07 2004-08-10 Palmsource, Inc. Method and system for on-line submission and debug of software code for a portable computer system or electronic device
JP3610915B2 (ja) * 2001-03-19 2005-01-19 株式会社デンソー 処理実行装置及びプログラム
US7013460B2 (en) * 2001-05-15 2006-03-14 Hewlett-Packard Development Company, L.P. Specifying an invariant property (range of addresses) in the annotation in source code of the computer program
US7266811B2 (en) * 2001-09-05 2007-09-04 Conexant Systems, Inc. Methods, systems, and computer program products for translating machine code associated with a first processor for execution on a second processor
US7251594B2 (en) * 2001-12-21 2007-07-31 Hitachi, Ltd. Execution time modification of instruction emulation parameters
JP4374834B2 (ja) * 2002-08-12 2009-12-02 セイコーエプソン株式会社 カートリッジおよび記録装置
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US8108843B2 (en) 2002-09-17 2012-01-31 International Business Machines Corporation Hybrid mechanism for more efficient emulation and method therefor
US9043194B2 (en) * 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
US7146607B2 (en) * 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US20040122800A1 (en) * 2002-12-23 2004-06-24 Nair Sreekumar R. Method and apparatus for hardware assisted control redirection of original computer code to transformed code
US7024537B2 (en) * 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
JP2005032018A (ja) * 2003-07-04 2005-02-03 Semiconductor Energy Lab Co Ltd 遺伝的アルゴリズムを用いたマイクロプロセッサ
US7698539B1 (en) * 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
US7606997B1 (en) 2003-07-18 2009-10-20 Guillermo Rozas Method and system for using one or more address bits and an instruction to increase an instruction set
US8220058B2 (en) 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
US7415618B2 (en) 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
US7424620B2 (en) 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US7363620B2 (en) 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US7353499B2 (en) 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
US20050165837A1 (en) * 2004-01-22 2005-07-28 International Business Machines Corporation System and method for embedded java memory footprint performance improvement
US7383461B2 (en) * 2004-02-12 2008-06-03 International Business Machines Corporation Method and system to recover a failed flash of a blade service processor in a server chassis
US20050183077A1 (en) * 2004-02-12 2005-08-18 International Business Machines Corporation System and method for JIT memory footprint improvement for embedded java devices
US7734797B2 (en) * 2004-03-29 2010-06-08 Marvell International Ltd. Inter-processor communication link with manageability port
US7225297B2 (en) * 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
US7237085B2 (en) * 2004-05-28 2007-06-26 Oracle International Corporation Architecture for a scalable heap analysis tool
US7278014B2 (en) * 2004-12-02 2007-10-02 International Business Machines Corporation System and method for simulating hardware interrupts
GB2425372B (en) * 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
EP1752874A1 (en) * 2005-07-19 2007-02-14 Alcatel Adaptive evolutionary computer software product
US7684973B2 (en) * 2005-12-29 2010-03-23 Bull Hn Information Systems Inc. Performance improvement for software emulation of central processor unit utilizing signal handler
US9658849B2 (en) * 2006-07-06 2017-05-23 Imperas Software Ltd. Processor simulation environment
JP5226328B2 (ja) * 2007-03-27 2013-07-03 パナソニック株式会社 コード変換装置
US8266387B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8176253B2 (en) * 2007-06-27 2012-05-08 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization and emulation
US8078854B2 (en) * 2008-12-12 2011-12-13 Oracle America, Inc. Using register rename maps to facilitate precise exception semantics
US20100153776A1 (en) * 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US8959277B2 (en) * 2008-12-12 2015-02-17 Oracle America, Inc. Facilitating gated stores without data bypass
US20100162045A1 (en) * 2008-12-22 2010-06-24 Russ Craig F Method, apparatus and system for restarting an emulated mainframe iop
US9069918B2 (en) * 2009-06-12 2015-06-30 Cadence Design Systems, Inc. System and method implementing full-rate writes for simulation acceleration
US8392694B2 (en) * 2009-09-15 2013-03-05 International Business Machines Corporation System and method for software initiated checkpoint operations
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
EP2631786B1 (en) 2011-04-07 2018-06-06 VIA Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
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
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
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
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
CN103765400B (zh) 2011-04-07 2016-05-04 威盛电子股份有限公司 一种乱序执行微处理器中的有条件存储指令
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file 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
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
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
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
EP2508979B1 (en) 2011-04-07 2018-10-10 VIA Technologies, Inc. Efficient conditional alu instruction 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)
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
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
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
EP2704001B1 (en) 2012-08-31 2016-10-19 VIA Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
EP3179363B1 (en) 2012-08-31 2019-04-24 VIA Technologies, Inc. Microprocessor that enables arm isa program to access general purpose registers written by x86 isa program
US9250900B1 (en) 2014-10-01 2016-02-02 Cadence Design Systems, Inc. Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network
US20180101384A1 (en) * 2015-04-17 2018-04-12 Hewlett Packard Enterprise Development Lp Morphed instruction according to configuration update
CN110297455B (zh) * 2018-03-23 2022-08-12 欧姆龙(上海)有限公司 可编程逻辑控制器及其自检和恢复方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61166653A (ja) * 1985-01-19 1986-07-28 Panafacom Ltd アドレス変換エラー処理方法
JP2589713B2 (ja) * 1987-11-20 1997-03-12 株式会社日立製作所 データプロセッサ及びデータ処理システム
US5142672A (en) * 1987-12-15 1992-08-25 Advanced Micro Devices, Inc. Data transfer controller incorporating direct memory access channels and address mapped input/output windows
GB2260004B (en) * 1991-09-30 1995-02-08 Apple Computer Memory management unit for a computer system
US5465337A (en) * 1992-08-13 1995-11-07 Sun Microsystems, Inc. Method and apparatus for a memory management unit supporting multiple page sizes
US5442766A (en) * 1992-10-09 1995-08-15 International Business Machines Corporation Method and system for distributed instruction address translation in a multiscalar data processing system
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
US5561814A (en) * 1993-12-22 1996-10-01 Intel Corporation Methods and apparatus for determining memory operating characteristics for given memory locations via assigned address ranges
US5526510A (en) * 1994-02-28 1996-06-11 Intel Corporation Method and apparatus for implementing a single clock cycle line replacement in a data cache unit
US5566298A (en) * 1994-03-01 1996-10-15 Intel Corporation Method for state recovery during assist and restart in a decoder having an alias mechanism
US5613083A (en) * 1994-09-30 1997-03-18 Intel Corporation Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions
US5564111A (en) * 1994-09-30 1996-10-08 Intel Corporation Method and apparatus for implementing a non-blocking translation lookaside buffer

Also Published As

Publication number Publication date
EP1002271B1 (en) 2008-10-29
JP3615770B2 (ja) 2005-02-02
CN1161691C (zh) 2004-08-11
CA2283559C (en) 2004-05-25
EP1002271A4 (en) 2002-09-25
US5832205A (en) 1998-11-03
WO1999008188A1 (en) 1999-02-18
EP1002271A1 (en) 2000-05-24
CN1265204A (zh) 2000-08-30
DE69739078D1 (de) 2008-12-11
ATE412940T1 (de) 2008-11-15
CA2283559A1 (en) 1999-02-18
KR100463810B1 (ko) 2004-12-29
KR20010014095A (ko) 2001-02-26

Similar Documents

Publication Publication Date Title
JP3615770B2 (ja) アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ
JP3753743B2 (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
US5958061A (en) Host microprocessor with apparatus for temporarily holding target processor state
US7716452B1 (en) Translated memory protection apparatus for an advanced microprocessor
US6031992A (en) Combining hardware and software to provide an improved microprocessor
JP2001507151A (ja) 先進のマイクロプロセッサのためのゲート格納バッファ
JP3776132B2 (ja) マイクロプロセッサの改良
JP3621116B2 (ja) 先進のプロセッサのための変換メモリ保護装置
JP3654913B2 (ja) 一時的にターゲット・プロセッサの状態を保持する装置を備えたホスト・マイクロプロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040521

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040823

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041005

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041102

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071112

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081112

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091112

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091112

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101112

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101112

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111112

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111112

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121112

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121112

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131112

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees