JPH0638234B2 - 変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法 - Google Patents

変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法

Info

Publication number
JPH0638234B2
JPH0638234B2 JP4507853A JP50785392A JPH0638234B2 JP H0638234 B2 JPH0638234 B2 JP H0638234B2 JP 4507853 A JP4507853 A JP 4507853A JP 50785392 A JP50785392 A JP 50785392A JP H0638234 B2 JPH0638234 B2 JP H0638234B2
Authority
JP
Japan
Prior art keywords
instruction
code
write
instructions
execution
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.)
Expired - Lifetime
Application number
JP4507853A
Other languages
English (en)
Other versions
JPH05505693A (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 JPH05505693A publication Critical patent/JPH05505693A/ja
Publication of JPH0638234B2 publication Critical patent/JPH0638234B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Investigating, Analyzing Materials By Fluorescence Or Luminescence (AREA)
  • Luminescent Compositions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Retry When Errors Occur (AREA)
  • Diaphragms For Electromechanical Transducers (AREA)
  • Debugging And Monitoring (AREA)
  • Noodles (AREA)

Description

【発明の詳細な説明】 発明の背景 この発明は、プログラムコードを異なったコンピュータ
システムで実行できるように適合させるためのシステム
および方法に関する。より具体的には、ある命令セット
に基づくコードを、命令状態不可分最小単位を保持しな
がら、総体的に簡易な命令セットによるコードに変換す
るためのシステムと方法に関する。
コンピュータプログラミングの歴史の初期においては、
コンピュータプログラムのための命令はマイクロコード
のレベルで生成されていた。ソフトウェア工学が発展・
成長するに従って、単一の複雑命令内により多くのタス
クが結合され、複雑命令用に設計されたハードウェア・
アーキテクチャを有するコンピュータで実行されるよう
になった。
命令の複雑性が増大したことによって、一般的には、コ
ンピュータハードウェア開発環境における価格性能比が
向上した。その結果、複雑命令セットコード(CIS
C)は広く受け入れられるところとなった。
しかしながら、命令の複雑性が増大するにつれて、さら
に高速での実行が可能なハードウェアシステムを設計す
ることが次第に難かしくなってきた。そして、代わり
に、簡易化命令セットコード(RISC)がRISC用
として設計されたハードウェアアーキテクチャを有する
コンピュータ上で使用されるようになり、性能価格比を
非常に向上させる手段として受け入れられるようになっ
た。
RISCシステムでは、一般に、より簡易な基本命令を
用いて所望の演算を行う。1つのRISC命令は通常は
メモリへのアクセスを高々1回しか行わないような1つ
の演算を行う。また、RISCシステムでは各々の基本
命令に用いられるレジスタを備えている。しかし、RI
SC命令セットにおける命令はマイクロコードレベルと
比較すると依然としてずっと複雑である。
典型的なCISCシステムにおいては、1つの命令は一
連の複雑な演算の集合より成り、メモリへの直接的なア
クセスを何回も行う。従って、1つのRISC命令でで
きる演算をRISC命令で行わせようとすると数個のR
ISC命令が必要となる。
RISCシステムでは一般的に、より高速なシステム動
作が可能なように、また総合的なシステム性能がより良
くなるように、そして現存のハードウェア価格および性
能と比較してより低価格となるように、ソフトウェアと
ハードウェアとのトレードオフの最適化がなされてい
る。
CISCシステムからRISCシステムへ切り替えよう
とするときの1つの障害は、CISCシステムには膨大
なソフトウェアライブライが存在しており、これらの多
くはRISCシステムではまだ利用できるようにはなっ
ていないことである。コンピュータシステムのユーザが
新しいコンピュータシステムが入手しようとするときの
ユーザの主要な関心の1つはアプリケーションプログラ
ムのユーザライブラリが新しいコンピュータシステムで
使えるように変換が可能であるかどうかということであ
る。あるいは、もし、そのライブラリを置き換えるとし
たら価格はいくらかかってしまうのかということであ
る。だから、RISCコンピュータシステムによってよ
り良い価格性能比を得ようと望んでいるコンピュータシ
ステムユーザにとって、アプリケーションプログラムの
ユーザライブラリをRISCコンピュータシステム上で
実行できるように適合・移行させることは非常に重要な
こととなっている。
このような移行をするにはいくつかの方法がある。その
1つは、再コンパイルまたは再コーティングを行うこと
である。しかし、この方法は一般には、ハードウェアの
細部に依存しないような、また現存のどのような機種に
対しても機種依存性なしに入手によるプログラム変更が
可能であるような、例えばフォートランのような高級言
語で書かれたプログラムに対する移行技術である。さら
に、この再コンパイル・再コーディングによる方法で
は、一般にプログラム変更とその結果のプログラムがど
のような振る舞いをするかはすべてユーザの責任となっ
ている。
他の方法は、翻訳(インタープリテーション)であろ
う。しかしこの方法の欠点は翻訳プログラムは一般にそ
の性能が元のものより低下してしまうことである。
もっと具体的に述べると、翻訳処理手順とは、コンピュ
ータで翻訳処理手順のソフトウェアプログラムを走らせ
て、原命令ストリームを(その命令は異機種のコンピュ
ータ用命令であってよい)データとして読み込み、各々
の原命令に対してそれが何を意味するかを解釈してそれ
を実行することである。そのような翻訳処理手順は一般
には、1つの原命令を解釈するのに10から100もの
マシーン命令の実行が必要となる。従って、翻訳処理手
順は、機能的に等価なコードをコンピュータで直接に実
行させるのと比較すると、本質的にプログラム性能の低
下をもたらしてしまう。
最も有効な効果的な移行の方法の1つは、コード変換を
行うことである。コード変換の方法では、現行のプログ
ラムの命令の各々を目的新コンピュータで用いる言語の
1つ以上の命令に変換する。従って、CISCプログラ
ムをRISCプログラムへと変換すると、あるいはもっ
と一般的には比較的簡易な命令セットを有する新しいコ
ードへプログラムを変換すると、元のコードの1つの命
令が、新しいコードの複数の命令に変換されることにな
る。しかしながら、「1対複数」あるいはCISCから
RISCへのコード変換を行うに際し、CISCあるい
は他の比較的複雑なコードの命令が保証していた元々の
その振る舞いすべてにわたって保持することは一般には
困難である。
変換において普通に生じる困難の1つは、1つのCIS
C命令が実行されている間はその命令が開始されて終了
するまでは他のCISC命令あるいは他のCISC命令
の一部が実行されるようなことがあってはならないとい
う要求である。従って、CISCからRISCへの変換
に当たっては、このような意味での命令のまとまり性
(顆粒性)を保持することが本質的に必要である。この
ような命令のまとまり性(顆粒性)を保持するために
は、対応する状態あるいはメモリのまとまりを保持する
ことが必要である。従って、変換後のコードにおいて、
命令のメモリへのアクセスは全てが完全に行われるか、
さもなければ全くメモリのアクセスを行わないかどちら
かでなければならない。
変換において命令の顆粒性(まとまり性)を保持するに
際しては、元の複雑命令の各々の命令に対応する変換後
の1の顆粒あるいはまとまりごとに、対応する元の複雑
命令が実行されたときに得られる結果と全く同じ結果
が、変換後の命令まとまりを実行したときに得られるこ
とが保証されていなければならない。こうすると、とき
には、より簡単な変換後の命令の「顆粒」を実行してい
る際に、まるで非同期現象が生じたかのように見える。
上記の相互参照を行っている同時出願中の出願(187
0−0410)は、コード変換および変換されたコード
の実行に際しての命令まとまりの保持のための特許であ
る。さらに、(1870−0410特許出願は)一般に
状態まとまりの保持、特に、CISCあるいはその他の
変換すべきコードが1書き込み命令の場合における状態
まとまりの確保のための機構と処理手順とについて開示
している。
1書き込み命令は、無制限に状態書き込みができる1つ
の例外の場合を除いては、高々1つの状態書き込みを含
む。2つの種類の状態書き込みが重複して存在してはな
らない。ここでの「例外」という用語は、命令の実行を
続行させるのを妨げるようなすべての条件を意味してい
る。典型的な例外としては以下のものがある。
a.ページフォルトあるいはアクセス違反などのメモリ
例外 b.浮動小数点オーバフローあるいは0による割り算な
どの算術演算例外 c.違法なオペレーション・コードあるいは実行中断命
令などの命令例外状態まとまりは、1870−0410
特許出願において、変換・実行すべき1書き込み命令の
場合における命令まとまりと等価である。しかしなが
ら、他の種類の変換すべき命令で、状態まとまりの保持
および命令まとまりの保持を達成する上で特別は問題を
生じるようなシーケンスを含んでいるものがある。この
ような命令は次のようなものを含んでいる令名である。
すなわち a.「インタロック」される、読みとり−変換−書き込
みシーケンス、あるいは、他のプロセッサによる介入書
き込みなしでマルチプロセッサシステムで実行される、
部分的メモリーワード書き込みを要求するような読み取
り−変更−書き込みシーケンス b.すべてが起こるか、さもなければ、全く起こらない
かどちらかでなければならない、例外に出合うであろう
ような複雑状態書き込み を含むようなものである。
このような特殊な場合においては、変換されたコードに
おける状態まとまりおよび命令まとまりを達成しようと
すると、直面している特殊な状況と取り組むための、さ
らに特別な機構と処理手順とが必要となる。複雑状態書
き込みを含んでいる命令の場合では、少なくとも1つが
終了した後に全ての状態(メモリあるいはレジフタ)書
き込みが終了する前の、命令シーケンスが実行されてい
る間に非同期事象が起こるような所で状態まとまりの問
題が生じる。このような、命令まとまりの実行が打ち切
られるか続行されると、1つの状態書き込みがすでに実
行されて回復不可能な状態変化がすでに起こってしまっ
ているために状態エラーが発生するようなシーケンスの
実行が、変換コー命令において続けられると、どこかの
コード命令において例外が生じる。
共通メモリを有するマルチプロセッサシステムで変換コ
ードを実行する場合には状態まとまり問題が生じる可能
性がある。その理由は、変換コードを実行している第1
のプロセッサが、ある命令まとまりの読みとり−変更−
書き込みシーケンスを部分的に実行し、その読みとり−
変更−書き込みシーケンスがまだ終了していないとき
に、続けて他のプロセッサが、その読みとり−変更−書
き込みシーケンスがアドレス指定している状態位置へ書
き込みを行ってしまう可能性があるからである。ここ
で、他のプロセッサによる対立する状態アクセスが行わ
れた後に、もしさらに再びその命令まとまりが続行され
るかあるいは打ち切られるかすると、すでに回復可能な
状態変化が起こってしまっているから、状態エラーが発
生する。
従って、本発明は、現存の複雑命令セットコードをより
簡易な命令セットコードに変換実行するにあたって、複
数書き込みあるいは部分書き込み、インタロック命令、
マルチプロセッサによる実行環境なのような特殊な状況
を含んでいる命令のコードの命令まとまりを保持しなが
らコードの変換・実行を行うための構成と処理手順とを
めざしたものである。従って、本発明は、このような特
殊な状況が存在する場合であってもアプリケーションコ
ードへの投資を無駄にすることなく、コンピュータシス
テムの価格/性能比の改善の実現を可能とするものであ
る。
発明の要約 第1のプログラムコードを第2のプログラムコードに変
換し、前記第1のコードの命令状態まとまりを保持しな
がら、前記第2のプログラムコードを実行するためのシ
ステムおよび方法とが提供せられる。ここで、第1のプ
ログラムコードは第1の命令セットに対して適合された
第1のアーキテクチャを有するコンピュータ上で実行が
可能であり、また第2のプログラムコードは、第1の命
令セットと比較して簡易な第2の命令セットに対して適
合された第2のアーキテクチャとを有し、またメモリお
よびレジスタ状態を有するコンピュータ上で実行が可能
である。第1のコンピュータは、第2の命令コードを用
いて第1のコード命令を定義したパターンコードに従っ
て、第1のコード命令を対応する第2のコード命令に変
換する。第1のコード命令の各々に対応する第2のコー
ド例は、状態の更新以外の命令実行を行いその命令実行
後に状態エラーを発生する危険なしに実行打ち切りが可
能な命令コード含んでいる第1のグループと、変換され
た第1のコード命令を実行するために必要となるすべて
の特殊な書き込み命令を含めすべてのメモリおよびレジ
スタ状態更新命令を含む第2のグループとの少なくとも
2つのグループに、順序正しく整列させた命令まとまり
シーケンス(顆粒命令シーケンス)に組織化される。
第1の特殊書き込み命令は、第1のメモリ位置に単一書
き込みを行う第1のサブシーケンスを含むように構成さ
れ、ここで、この書き込みは一切の割り込みなしに、ま
たそのメモリ状態に結合することが可能な他のプロセッ
サによる前記第1のメモリ位置への対立する書き込み介
入が一切なされることなしに、前記のサブシーケンスが
実行されるようになされている。さらに第2の特殊書き
込み命令は、一切の割り込みなしに実行される複数書き
込みを行う第2のサブシーケンスを含むように構成され
る。
第2のコンピュータシステムは第2のプログラムコード
を実行するための第2のアーキテクチャに対して適合さ
れている。第2のコードを実行するにあたって、第2の
コードの実行中の各非同期事象の発生を検出する手段、
および他のプロセッサがもしメモリ状態と結合して第1
のメモリ位置へ対立する書き込みを発生したような場合
にその発生を検出する手段とが備えられている。
すべての第2のコード命令シーケンスは、そのシーケン
スの実行中において、もし第1のグループの命令の全て
が終了する前に非同期事象割り込みが発生した際には、
あるいは例外に至るであろうような第2のグループのど
れかの命令が実行される前に第1のグループの命令の実
行が終了した際には、第1のコード命令の状態まとまり
と第1のコードの命令まとまりとを保持するようにし
て、そのシーケンスは実行が打ち切られて、後に再試行
がなされる。第1のサブシーケンスを含むどのような第
2のコード命令シーケンスまとまりにおける第1の特殊
命令サブシーケンスも、もし、この第1のサブシーケン
スの実行が終了する前に他のプロセッサによって対立す
る書き込みがなされた場合には、この第1のサブシーケ
ンスの実行を打ち切って、うまく実行が終了するまで再
試行を行う。第1のサブシーケンスを含むどのような第
2のコード命令シーケンスまとまりも、もし、第1のサ
ブシーケンスの実行が試みられている間に非同期事象割
り込みが発生したときには、これらを打ち切り再試行を
行う。
もしも、A)第2のサブシーケンスが命令シーケンスま
とまりに含まれており、またもし、非同期事象割り込み
が、第2の命令シーケンスの実行中における最初の書き
込みの後に起こるか、または、もし、B)例外に至るで
あろうような第2のグループの全ての状態更新命令が実
行された後に非同期事象割り込みが起こると、非同期事
象割り込み処理の実施を遅延させて、実行中のすべての
第2のコード命令シーケンスまとまりの実行を完了させ
る。
図面の簡単な説明 この明細書に併合され、この明細書の一部を構成する添
付図面は、本発明の一実施態様を示したものであり、明
細書と共に本発明の目的、利点および原理を説明するた
めのものである。図において: 図1は、アプリケーションプログラムが、a)(第1の
命令セットを有し、Xと表わされた)第1のコンピュー
タシステムによって実行するために生成され、また、
b)相対的に簡易な命令セットを有する(Yと表され
た)別のコンピュータシステムで実行するために本発明
に従ってX命令状態まとまりおよび命令まとまりを変換
する際の全体的な方法を示した総合機能ブロック図であ
る。
図2は、好適なX−Y変換プログラムの一般化された機
能ブロック図、および、X命令状態まとまりを用い、Y
実行可能アプリケーションコードを生成するX−Y変換
プログラムを実行するための汎用コンピュータシステム
を示している。図3は、本発明によるX−Y変換プログ
ラムの全体のフローチャートを示している。
図4は、Yコンピュータシステムについての機能ブロッ
ク図であり、ここでYコンピュータは、命令まとまり制
御プログラム(IGC)によってロードされた変換Yコ
ードと、特権アーキテクチャライブラリ(PAL)コー
ドルーチン、および、命令まとまりおよび状態まとまり
を本発明に従って保持しつつYコードを実行する際のY
コード実行制御のためロードロックされた条件シーケン
スが格納されている。
図5Aおよび5Bは、IGCプログラムが実行する機能
ステップを表すフローチャートを示す。
図6は、複数書き込みを含むX−Yコード命令変換、お
よびそれへの非同期事象の関係とをシンボル化した図で
ある。
図7は、図4におけるPALコードルーチンの詳細につ
いて示したものであり、複数メモリ書き込みの場合にお
いて、本発明によって状態まとまりおよび命令まとまり
をどのよう保持するかの、その方法を示したものであ
る。
図8は、図4におけるロックされたロード/条件付き格
納シーケンスの詳細を示すフローチャートであり、部分
的書き込みおよびインタロックれた更新命令の場合にお
いて、本発明によって状態まとまりおよび命令まとまり
をどのように保持するかの、その方法を示したものであ
る。
好適な実施例の説明 図1に示されているように、ソースコードで書かれたア
プリケーションプログラム10は、Xコンピュータシス
テム12で実行するためにユーザプログラムライブラリ
に保持されている多数のアプリケーションプログラムの
中の1つである。Xコンピュータシステム12のハード
ウェアアーキテクチャは、プログラム10あるいはユー
ザライブラリ中の他のアプリケーションプログラムを実
行可能な形に生成するのに採用されているX命令セット
による演算を行うように適合されている。
プログラム10をYコンピュータシステム20で使用で
きるように適合するためには、実行可能形式プログラム
10を、Yコンピュータシステムのハードウェアアーキ
テクチャが適合されているY命令セットを用いたY実行
可能コード22として与えることが必要である。
Y命令セットは一般に、X命令セットが待っているより
も少ない基本命令から成っており、YコードからYコー
ドへの変換は「1から多数へ」の命令変換を必要とす
る。X命令セットとしてはCISC命令セットを、Y命
令セットとしてRISC命令セットを用いることができ
る。図1に特に説明のための目的に示されているよう
に、例えば、XシステムとしてはVAX?アーキテクチ
ャを採用することができ、またYシステムとしてはVA
X?RISCアーキテクチャを採用することができる。
なお、これらいずれのシステムも本発明の権利譲り受け
人であるディジタル・イクイップメント・コーポレーシ
ョンから供給されているものである。
図1に示されているように、アプリケーションプログラ
ム10は、間接的なパス24によるか、あるいは直接的
なパス26によるかの、いずれによって、Y実行可能コ
ード22に変換することが可能である。直接変換は、Y
コンパイラ28およびYリンカ30を用いることによっ
て構成される。結果として得られるY実行可能コードは
参照番号22Bによって表わされている。
もし、Yコンパイラ28およびYリンカ30が開発され
ていないか、あるいは利用できないか、さもなくば、関
連する欠点のためにユーザが直接変換パス26を選ばな
かった場合には、間接変換パス24を用いて、本発明に
よるXアプリケーションプログラムのYシステムへの移
行が行われ、プログラム投資の節約とシステム特性の向
上との両方の達成が図られる。
間接パスの場合においては、プログラム10は、Xコン
パイラ16およびXリンカ18によって、まず、Xコン
ピュータシステム用の実行可能コード14に変換され
る。その結果、Xコンピュータシステム上で走らせるこ
とができるX実行可能コード14が得られる。
好適な実施態様ではX−Y変換器32が備えられてお
り、これによってX実行可能コード14を、参照番号2
2Aで表された、対応するY実行可能アプリケーション
に変換する。このコード変換は、Yコードが簡易命令セ
ットに基づいたものである場合であっても、命令まとま
りおよび状態まとまりに対してXコードが得る結果と正
確に同じ結果をYコードの実行によって得られるように
なされなければならない。
XアプリケーションコードからYアプリケーションコー
ドへの変換 コード変換システム40(図2)は図1において言及さ
れた変換器32を実行するために用いられる。変換シス
テム40は、プロセッサ42を有する通常の汎用コンピ
ュータと、メモリシステム44と、およびXアプリケー
ションコード43を変換のために入力するのに用いる各
種の入出力装置とを有している。
変換結果は本発明に従って、順序づけられているか、さ
もなければ、コードの変換を厳格に保証するように定義
づけられた構成のYコード45として生成される。特
に、Yコード45は、Yコードが実際に実行される際に
X命令まとまりおよび状態まとまりの保持が容易に保証
されるように構成される。厳格なCISC保証の例とし
て、VAX?アーキテツチャは以下のような保証および
標準を有している。
1. 1つの命令は、それが全部完全に実行されるか、さ
もなければ、全く実行されないかのどちらかでなければ
ならず、命令の一部を実行してからそれを中断し、他の
命令を実行して、結局また中断していた途中の命令を再
開させることは許されない。
2. メモリは仮想メモリとなっており、どのようなメモ
リアクセスに対しても、ページフォールトあるいはアク
セス保護例外に出会ったために命令が終了することがで
きないといったことのないようになされている。
3. 1つの命令は、複数のメモリ位置への書き込みが許
容されている。全ての書き込みがなされるか、さもなけ
れば、全く書き込みがなされないかのどちらかでなけれ
ばならない。もし、書き込みが全くなされなかった場合
には、書き込みが失敗した点から再開するのではなく、
命令は最初からやり直される。
4. メモリオペランドは(部分的に)重複することが許
される。複数の書き込み中のある1つの書き込みを行っ
てから中断して、ソースオペランドを重ね書きして命令
の再実行がなされないようになされる。
5. 1つの命令は、読みとり−変更−書き込みシーケン
スを行うことができる。
6. 実際のメモリのハードウェアは、典型的には、整数
個の整列した通常4あるいは8バイトから成るメモリワ
ードを読み込んだりあまいは書き込んだりしかできない
が、命令のオペランドは、任意のバイトアドレスにおい
て、任意のバイト長をとることが許される。従って、1
つのオペランドは2つあるいはそれ以上のメモリワード
にまたがることができ、1つのオペランドのアクセス
は、最初と最後のメモリワードにさらにアクセスをする
ことができる。
7. マルチプロセッサシステムにおいては、異なるプロ
セッサによる隣接バイトへのアクセスは互いに独立にな
されなければならない、すなわち、両方のプロセッサに
よる書き込みが、同じメモリワードへの読みとり−変更
−書き込みシーケンスを含んでいるときでさえも、ある
プロセッサの書き込みバイト5は他のプロセッサに書き
込みバイト6に干渉をしてはならない。
8. マルチプロセッサシステムにおいては、インタロッ
クされた命令によるアクセスは不可分不可分性を保って
発生しなければならない。すなわち、あるプロセッサの
バイト4に対する読みとり−変更−書き込みは、他のプ
ロセッサの同じ位置へのインタロックされた読みとり−
変更−書き込みへ干渉してはならない。
メモリシステム44は、いろいろなセクションを含んで
いるが、それらの中に、従来型データ記憶セクション4
6、およびコンピュータオペレーティングシステムが記
憶されているセクション48とがある。X−Yコード変
換に採用されている基本的な要素は、他のメモリセクシ
ョンに記憶されている変換プログラム50である。入力
Xコード43は、Xコードリスト62として記憶されて
いる。さらに、Y命令のシーケンスを制御するために、
Y命令順序規範52が記憶されている。そして、X−Y
命令コードパターン54が記憶され、命令演算指定子お
よび命令オペランド指定子の両方の変換が可能となるよ
うになされている。
図3は、好適な形態における変換プログラム50に対す
る全体のフローチャートを示したものである。ブロック
60において、記憶されたXコードリスト62から、一
連のX命令が、プログラムループ64の処理を行うため
に、順次入力される。
ループ64の中の機能ブロック66において、現在処理
ささているX命令に対応するY命令演算指定子およびオ
ペランド指定子とが生成される。これらの指定子は記憶
されたX−Yコードパターン54(図2)に従って生成
される。次に、機能ブロック68に示されているよう
に、生成されたYコードは、あらかじめ定められた規範
に従って順序づけられ、後に実際にYコードを実行する
際にX命令の顆粒性の保持が促進せられる。
図6に、X−Y命令変換を図式的に示してある。
どのX命令も一般には、入力、入力されたものの変形加
工、および結果の一時記憶装置への記憶の基本的なタス
ク含んでおり、またメモリおよびレジスタ位置の状態更
新も含んでいる。X命令が「複数」のY命令に変換され
たときには、Y命令を好適に構成するために採用されて
いる順序規範52(図2)に従って、以下に示すよう
に、現在変換されているX命令(複合命令)に対するY
コードの中のY命令をグループ化し、順序づける。
1. Yコードの中の、第1の命令グループGIは、入力
を得、これらの得られた入力を一時記憶装置に記憶させ
る命令である。
2. Yコードの中の、第2の命令グループG2は、入力
に対して演算処理を行って変形加工された結果を生成
し、この結果を一時記憶装置に記憶させる命令である。
3. Yコードの中の、第3の命令グループG3は、X状
態(メモリまたはレジスタ)の更新を行う、(以下にお
いて定義されるような)例外処理に出会う可能性のある
命令である。
4. Yコードの中の、最後の第4の命令グループG4
は、X状態(メモリまたはレジスタ)の更新を行うが、
例外処理には出会わないような命令である。
図4において参照番号95で表されたXメモリ状態、お
よび図4において参照記号97で表されたXレジスタ状
態は、Xコードにける記憶位置が、Yマシーンにおいて
は、それらがどのようなメモリあるいはレジスタ構造に
対応するのかを参照するためのものである。また、Xメ
モリ状態およびレジスタ状態は、Xアーキテクチャから
見ることも可能なようなメモリ状態およびレジスタ状態
とすることもできる。
上記のようなやり方で変換コード命令を構成することの
利点、特に単純な1書き込みY命令の場合における利点
については、参照している1870−0410特許出願
において、さらに述べられている。
状態不可分性は本質的に、X命令における状態アクセス
の全てが干渉なしに現れるか、あるいはさもなければ、
全く現れないかのいずれかでなければならないことを要
求する。この条件は、X命令の顆粒性を実現する際に必
要である。以下に述べる特殊な場合においては、X状態
不可分性はX命令の顆粒性を実現させる本発明による演
算処理によって達成される。
図3を再び参照する。いったん、機能ブロック68が、
上記のように、Y命令コードの順序づけを行うと、テス
トブロック70は、現在のY命令が境界であるのかどう
か、すなわち、そのY命令が由来しているX命令の「X
顆粒命令」の境界標識なのかどうかを判定する。好適に
は、続けて次に処理されるY命令に対するテストを行
い、その結果の肯定ビットあるいは否定ビットをX境界
命令ビットマップに機能ブロック72によって記録す
る。
次に、変換処理分岐のうちのいずれを次に実施すべかを
決定するための、一連のテストを行う。各々の分岐は、
一般に、あらかじめ定義された変換の場合分け(すなわ
ち、X命令の種類)に対応し、これらの場合分けは、メ
モリ不可分性を保持しようとしたときに必要となる特別
な変換処理ごとに分類がなされている。この実施態様に
おいては、3つの分岐65、67、および69のうちの
いずれかが、現在実行されているX命令の構造的特徴に
よって選択実行される。
一般に、分岐65、67、および69が各々のX命令を
処理する際において、一般的厳格保持、特に状態不可分
性についての保持がなされるように変換コードの生成を
行う。
ここで、さらに留意すべきことは、変換の目的のため
に、1つの整列倍長ワード(4バイト)または4倍長ワ
ード(8バイト)に対する1つのRISC格納命令が、
対象のすべてのバイトが同時に変更を受けるが、他のバ
イトはこの格納によっては変更を受けないという意味あ
いにおいてRISCマシーン上での最小単位であると仮
定していることである。またさらに、全ての状態はメモ
リかまたはレジスタに保持され、メモリアクセスは仮想
メモリ例外を発生させることができ、また、単なるレジ
スタ転送は例外を発生することが決してないと仮定して
いる。また、さらに、一連のRISC命令は、RISC
命令の任意のどの位置においても外部事象による割り込
みが可能であると仮定している。
図3において、テストブロック120でのテストにおい
て現在のX命令が単純な1書き込み命令であるとのテス
ト結果が得られたときには、変換分岐65へ分岐する。
この場合の処理は、相互参照をしている特許出願187
0−0410に記載されているように行われる。機能ブ
ロック122に示されているように、この場合には特別
な変換作業は必要とされないので、ブロック74に進
み、そこでさらに変換すべきX命令が存在するかどうか
の判定が行われる。もし、存在する場合にはプログラム
ループ64が反復実行される。
変換フローチャートを再度参照する。もし現在のX命令
が単純な1書き込み命令ではない場合には、テストブロ
ック124において、そのX命令が、あらかじめ定義さ
れた、1書き込みの複数存在する特殊な場合のうちの1
つであるかどうかの判定が行われる。この実施態様にお
いては、特殊な1書き込みの場合として、つぎの2つの
ものが、あらかじめ定義されている。すなわち、部分書
き込み命令、および、インタロックされた更新命令であ
る。もし、これらの特殊な1書き込み命令である場合に
は、変換分岐67へ分岐し、機能ブロック126にて、
変換コード中に状態不可分性シーケンスを挿入すること
によって状態不可分性の保持を行う。状態不可分性シー
ケンスは、(実行時において)(1)部分書き込みを完了
する、すなわち、読み込み−変更−書き込みの途中で割
り込みが発生しなければ、インタロックされた更新を行
う、あるいは(2)部分書き込みを保留する、すなわち、
読み込み−変更−書き込みの途中で割り込みが発生した
場合には、再試行を行うようにインタロックされた更新
を行う、ことを保証するものである。
ブロック126において変換命令コード中に挿入される
状態不可分性シーケンスには、好適には、ロックされた
ロード/条件付き格納シーケンスと呼ばれているものを
用いる。このシーケンスをYコンピュータシステムにお
いて実行するのに適するハードウェア機構は、参照特許
出願のデイジタル・イクイップメント・コーポレーショ
ン特許出願PD90−0259において開示されてい
る。
図8は、参照記号126Aで表された、ロックされたロ
ード/条件付き格納シーケンスによって実行される実行
時論理演算を説明するための一般化フローチャートであ
る。図示されているように、いったん、126Aのシー
ケンスが呼び出されると、機能ブロック128は、読み
出し−変更−書き込み(RMW)操作を実施しようとし
ているメモリワードのロードを行う。
ブロック130、132、および134で変更タスクが
実施される。定義されたメモリ位置へ1バイトを加える
場合について説明すると、ブロック130は、そのメモ
リワードにおけるバイト位置合わせを行うためにシフト
操作を実施する。次に、ブロック132は変更すべきバ
イトを0でマスクする。最後に、ブロック134はマス
クされたバイトをメモリワード中に置く。
もし、実行時において、RMWシーケンスが実行されて
いる最中に他のプロセッサが同じメモリ位置に対して書
き込みを行った場合には、そのRMWシーケンスは互い
に独立した2つのメモリ書き込みの間での干渉を防ぐこ
とに失敗したことになる。ブロック136は、条件付き
格納を実行して、RMWシーケンスの中の読み出し・変
更部分の実行がなされている最中に他のプロセッサが同
じメモリ位置に対して書き込みを行ったかどうかを検出
する。もし、他の書き込みがなされていない場合には、
条件付き格納を実行し、他の書き込みとの対立がないか
ら状態あるいはメモリ不可分性を維持したままで、その
変更されたメモリワードの書き込みを行う。ブロック1
38でシーケンスが終了する。現在のY命令の実行時に
おけるその後の処理は、以後にさらに詳細に説明される
顆粒命令制御プログラムによって制御される。
もし、ブロック136において、RMWシーケンスの中
の読み出し・変更部分の実行によって変更されたワード
のメモリ位置へ、他のプロセッサが書き込みを行ったと
きには、その条件付き格納は取り消され、それによって
メモリ不可分性を保持し、また後にRMWシーケンスを
再試行する。
図3の変換処理を再度参照する。現在のY命令の中にシ
ーケンス126Aがいったん組み込まれると、ブロック
74は、さらにX命令が存在するかどうかを判定する。
もし、さらに存在する場合には、分岐67は命令入力ブ
ロック60に戻ってプログラムサイクルを反復すること
ができる。
分岐67による1書き込み命令のCISCからRISC
への変換処理の場合の最後として、CISC命令が状態
への部分的な(1または2バイトの)1つの整列書き込
みを含み、その変換されたコードがマルチプロセッサに
よって実行される、あるいは、インタロックされたアク
セスを必要とするような場合がある。このような場合に
おいて、状態不可分性を保持しようとするならば、独立
したバイトアクセスおよび読み出し−変更−書き出しシ
ーケンスは正しく行われなければならない。
分岐67の1書き込みの場合において、変換は、グルー
プ1およびグループ2の命令が、更新すべきオペランド
を含む1つの倍長ワード/4倍長ワードのロックされた
ロードを含め、メモリ及び/またレジスタの更新を行う
場合を除いて、CISC命令のすべての作業を必ず行う
ようになされていなければならない。グループ3の命令
は、同じ倍長ワード/4倍長ワードに対する条件付き格
納命令を含んでいる。またグループ4の命令は、単純な
レジスタ転送に続けて開始されるシーケンスに対する失
敗分岐命令を含んでいる。
グループ3の命令が完了する前に割り込みが生じた変換
シーケンスは、それが再試行されたときには条件付き格
納に失敗し、従ってシーケンスの最初に戻るような分岐
を行うことになる。さらに、もし他のプロセッサが、ロ
ックされたロード命令の後、条件付き格納命令の前に特
定の倍長ワード/4倍長ワードに対して書き込みを行う
と、条件付き格納は失敗し、従ってシーケンスの最初に
戻る分岐を行う。
グループ3の命令が完了した後、グループ4の命令が完
了する前に、変換シーケンスが割り込みを受けると、シ
ーケンスは、相互参照出願1870−0410において
もっと完全な考察がなされているように、単純なレジス
タ転送によってさらに解釈を行う機構によってグループ
4の命令を強制的に終了するようになされる。このこと
は正味の効果は、他の変換シーケンスを行うことなし
に、また対象倍長ワード/4倍長ワードへの他の書き込
みなしに、各変換シーケンスを最初から最後まで実行す
るか、あるいは、グループ3の命令が終了する前にシー
ケンスの実行を中断して最初から再実行を行うことであ
る。
図3を再度参照する。もし、テストブロック124が、
変換中のX命令が特殊な1書き込み命令を含んでいない
と判断したときには、変換分岐69に入り、ブロック1
28は、変換しようとしているX命令が他の特殊な場合
であること、すなわち、複数書き込みX命令であるとい
う事実の登録を行う。続けて、機能ブロック130は、
変換命令コードの中に、PAL CALLルーチン13
2(図7)を挿入して、以後にもっと完全に説明する方
法で複数書き込み命令に対しての状態不可分性を保つよ
うにする。
PAL CALLルーチン132は、実行時において、
コンピュータシステム20に含まれる、通常多くのコン
ピュータアーキテキチャにおいて利用可能で、オペレー
ティングシステムの最優先順位を有するルーチンを呼出
して実行する機構を提供するための、特権アーキテクチ
ャライブラリの中から呼び出されて実行される。一般に
PAL CALLルーチン132は、もし、このルーチ
ンの呼出を行うに先だって非同期事象割り込みが発生し
なければ、また、もし現在のYコード顆粒命令の中の他
のシーケンスにおいてありえる例外が検出されなけれ
ば、状態不可分性を維持しながら全ての状態書き込みを
実行する。さもなければ、PAL CALLルーチン1
32はその実行以前に失敗となり、メモリ不可分性を引
き続き行う再試行のために保持する。
PAL CALLルーチン132は、好適には、参照特
許出願PD86−0114において開示説明されている
ハードウェア構成によって実行される。
図6を参照する。この図は、複数書き込みの場合におい
て、非同期事象とYコード命令との関係を図示的に示し
たものである。この特殊な場合において、矢印75は、
第1の書き込みが(PAL CALLルーチン132に
よって)処理された後に、PAL CALLルーチン1
32による全ての複数書き込みの実行が終了する以前に
発生する非同期事象を示している。一般に、この場合の
状態不可分性は、PAL CALLルーチン132およ
び残りの顆粒命令が実行されるまで割り込みを保留する
ことによって保持できる。
さらに具体的には、図7のPAL CALLルーチン1
32のフローチャートを参照すると、変換されたコード
の実行時において、実行されるYコード細分がPAL
CALLを呼び出すと、図示されているようにブロック
152に入る。次に、ブロック154で、RS以後PA
CALLルーチン132が呼び出されるまでの間に
割り込みが発生したかどうかが調べられる。もし発生し
ていれば、ブロック156は失敗メッセージを命令シー
ケンスに返し状態不可分性が保持されるようになされ、
制御は出口ブロック157を通して呼び出し手続き戻さ
れて、現在のYコード顆粒命令の実行において新たに試
行がなされる。
もし、PAL CALLルーチンが呼び出されるまでの
臨界時間の間に割り込みが発生していなければ、テスト
ブロック158で、残存するすべての状態アクセスが例
外の発生なしに完了することが可能であるかどうかが判
定される。もしそうでなければ、再度ブロック156で
失敗メッセージを命令シーケンスに返し、状態不可分性
の保持を行い、ブロック157を通ってルーチンから抜
けでて、Yコードシーケンスの再試行が可能なようにな
される。
残存する状態アクセスが例外の発生なしに完了すること
が可能であるときには、PAL CALLルーチン13
2の実行が開始され、もし、部分的書き込みが指定され
ているときには、最初の書き込みについて、ロックされ
たロードと変更とを行う。次に、ブロック160にて、
部分的書き込みのための条件付き格納または全ての書き
込みのための格納が実施される。
ブロック162は部分書き込みにおける条件付き格納が
失敗したかどうかを判定する。もし、失敗しているなら
ば、ルーチンは、好適には、図示されているように部分
的書き込みの再試行のためにブロック159に戻され
る。もし必要ならば、代わりに、この時点において失敗
メッセージを返すようにすることもできる。
全書き込みが格納されたか、あるいは部分書き込みがう
まく格納されたときには、複数書き込みシーケンスの中
の最初の書き込みが終了したことになり、機能ブロック
164に示されているように、Yコードシーケンスの全
ての書き込みは状態不可分性を保持するために終了して
いなければならない。
次に、Yコードシーケンスの第2の書き込みが、書き込
み前処理ブロック166によって処理され、格納あるい
は条件付き格納ブロック168の実行が行われ、そして
次に、テストブロック170にて、条件付き格納失敗の
判定がなされる。この処理はブロック158、160、
および162による第1の書き込み処理について説明し
たと同様の方法でなされる。各先行書き込みの部分的書
き込みあるいは全書き込みがうまく終了したのと同様に
して、単一の機能ブロック172で示されているよう
に、同じプロセス部分集合(すなわち、ブロック15
8、160、162に含まれているプロセス)が複数書
き込みシーケンスのあとの各々の書き込みに対して実施
される。全ての書き込みが格納されると、ブロック17
4はPAL CALLルーチン132の成功完了を表示
し、ブロック157を通ってルーチンから抜け出す。現
在のY細分命令を状態不可分性を保持しながら完了する
ことができる。
図3において、変換分岐65および67の場合における
ように、分岐69は最後にさらに変換すべき他のX命令
があるかどうかをチエックし、もしあるならば、ブロッ
ク60にて変換すべき次のX命令を入力する。
分岐69によるCISCからRISCへの変換処理の場
合についてまとめると、(複数の宛先、あるいは単一の
整列していない宛先を有するため)CISC命令は複数
の状態への書き込みを有する。インタロックされた状態
アクセスはこの場合分けには属さず、独立したバイト書
き込みが適当にハンドルされなければならない、また、
状態不可分性を保持するためには、指定された書き込み
の全てが実施されるか、さもなければ、全く実施されな
いかのいずれかでなければならない。
変換において、命令グループ1および2は必ず読み出し
・設定命令で始まるようになされる。これらのグループ
の後には、更新すべき各倍長ワード/4倍長ワードのロ
ードを含むメモリおよび/またはレジスタの状態更新を
除いたすべてのCISC命令の作業に対する命令が続
く。命令グループ3はすべての格納を指定するPAL
CALLルーチン132を含む。また命令グループ4
は、単純なレジスタ転送に続けて、シーケンスの最初に
分岐する失敗分岐を含む。
変換されたシーケンスが、命令グループ2が終了する前
に割り込みを受けると、読みだし・設定によって設定さ
れたRISC状態ビットをクリアして、PAL CAL
Lルーチン132が失敗メッセージを返し、シーケンス
の最初に分岐できるようにする。
参照特許出願PD86−0114において記述されてい
るようなハードウェア構成を用いて、PAL CALL
ルーチン132は割り込みが不可能なRISCコードの
特権シーケンスに入る。
PAL CALLルーチン132は、介入割り込みが発
生すると、すなわち、読みだし・設定によって設定され
たRISC状態ビットがクリアされると、いっさいの格
納を行わずに失敗メッセージを返す。さもなければ、可
能な仮想メモリ例外のチエックのために可能なすべての
格納位置の探査が行われる。いずれかに出会うと、PA
CALLルーチン132は完了せずに例外処理がな
され、読み出し・設定によって設定された状態ビットが
クリアされる。これによって、PAL CALLルーチ
ン132が続けて再実行されると失敗メッセージを返
し、シーケンスの最初に分岐するようになされる。さも
なければ、PAL CALLルーチン132はすべての
指示された格納を実施する。その間、共用のメモリのペ
ージテーブルが他のプロセッサによって同時に更新され
てしまうような場合においても、先の探査において用い
られた仮想メモリ情報が用いられる。従って、格納にお
いては、仮想メモリ例外は発生しない。
各部分的メモリワード格納に際しては、特権コードによ
って、ロックされたロード/変更/条件付き格納シーケ
ンスが用いられる。また何等の格納もなされていない時
に最初の条件付き格納が(変更中において、他のプロセ
ッサが同じメモリワードに書き込みを行ったために)失
敗すると、実行はPAL CALLルーチン132から
「失敗」が返されるか、あるいは、ロード/変更/条件
付き格納シーケンスを反復する。1つの格納が終了した
後、その後に続くロード/変更/条件付き格納シーケン
スが、特権コード内に成功するまで反復されなければな
らない。指定されたすべての格納が終了すると、特権コ
ードから成功裡に抜けでて、命令グループ3が終了す
る。
命令グループ3が終了した後、命令グループ4が終了す
る以前に、変換シーケンスが割り込みを受けると、相互
参照出願1870−410にもっと完全に記述されてい
るように単純なレジスタ転送解読の機構によってグルー
プ4を強制的に終了させられる。このことの正味の効果
は、他の変換シーケンスを行うことなしに、また対象メ
モリワードへの干渉書き込みなしに、シーケンスを最初
から最後まで実行するか、あるいは、グループ3の命令
が終了する前にシーケンスの実行を中断し続いて最初か
ら再試行を行うことである。
分岐65、67、および69によってすべてのX命令が
変換されると、プログラム64の反復周期的な実行が終
了し、ブロック76に示されているように、蓄積された
Yコードを出力することが可能となる。
保証されたX状態不可分性と顆粒命令とを有する、Yコ
ード変換結果の実行 図4に示されているように、Yコンピュータシステム2
0(図1)に対応するYプロセッサ80が、保持された
X状態不可分性と顆粒命令とを有する、変換結果である
Yコードの実行のために備えられている。従来型の入出
力装置82およびインタバル時計84とがYプロセッサ
80に結合されていて、これらの装置は適宜、非同期事
象割り込みを発生させて、プロセッサの演算動作を一時
的にYコードの実行から離れさす。もし本発明による保
護が保証されていないと、このような、あるいは他の割
り込みによるプロセッサの脇道への逸れは、前に記述し
たように特定の命令の実行において、X状態不可分性お
よび顆粒性とを破壊させる原因となる。
図4に示されているように、ブロック86は、入力装置
から、Yプロセッサ80に結合されたメモリシステム9
0のセクション88への、生成されたYコードの入力を
表している。またブロック87は、Yコードを実行した
結果として出力装置から生成されるデータ出力を表して
いる。また、メモリシステム90は従来型のデータセク
ション92、従来型オペレーティングシステムセクショ
ン94、および、前に述べたXメモリ状態95とを含ん
でいる。Yプロセッサ80は前に述べたXレジスタ状態
97を含んでいる。
メモリシステム90の中の顆粒命令制御プログラム(I
GC)96は、Yコードの実行において命令の顆粒性の
管理を行うように構成されている。Yコードの実行中に
おけるIGCプログラム96の働きについては、図5A
および5Bのフローチャートにもっと完全な形で示され
ている。
一般に、Yコード顆粒命令に変換された1書き込みおよ
び複数書き込みX命令は、Yコードの実行においてIG
Cプログラム96によって制御される。単純な1書き込
み命令の場合は、状態不可分性および命令顆粒性のすべ
ての制御はこの明細書および前に参照した特許出願18
70−0410に開示されているようになされる。特殊
な1書き込み命令および複数書き込み命令の場合には、
これらの命令の変換されたコードが実行される間の状態
不可分性は、図3、6、および8と結び付けてこの明細
書にて説明しているように制御されるか、さもなけれ
ば、IGCプログラム96の処理によって制御される。
さらに具体的には、IGCプログラム96(図5A)
は、非同期事象の発生によって、98と示された所から
始まる。一般には、非同期事象は、変換されたXコード
から見ることが可能なX状態変化を発生させ得るような
割り込みによって、Y命令ストリームが脇道へ逸脱する
ことと定義される。再度、図6を参照する。この図は、
非同期事象と複数書き込みを含むY命令中の顆粒X命令
との関係を説明したものである。
図5Aを引き続き参照する。機能ブロック100におい
て、非同期事象処理は一時的に保留され、機能ブロック
102において、非同期事象が発生したときに処理され
ていたY命令のメモリアドレスが記録される。
次に、ブロック104において、命令境界ビットマップ
がチェックされ、Y命令PC−AEがX命令境界である
かどうかが判定される。もしそうであるときは、テスト
ブロック106は、IGCプログラム96の実行を、パ
ス107を通してブロック108に移して、Xコード命
令顆粒性を破壊することなしに、非同期事象処理を行う
ために、Yコード命令に対して割り込むことができるよ
うにする。
もし、Y命令PC−AEがX命令境界ではない場合に
は、機能ブロック110において、次のバックアップす
なわちX命令境界となっている先行するY命令に対して
Y命令カウンタ位置合わせを行う。IGCプログラム9
6はプログラムパス111を通ってブロック108に進
み、先に述べたようにここでもまたXコード命令顆粒性
を破壊することなしに、非同期事象処理が行われるよう
になされる。この例においては、X細分化命令の中の1
つ以上のY命令が実施されたければも、まだすべての実
施が終了していない時点において非同期事象が発生し、
X命令顆粒性の保持はプログラムブロック110の実行
によって実現される。
さらに具剤的には、図5Bのブロック110に示されて
いるように、プログラムループ113のブロック112
において、Y命令の先行探査を実施し、X命令境界とな
っている次のY命令を見つけだす。テストブロック11
4は先行探査された各Y命令をチェックして、残存して
いるY命令を実行する前に割り込み処理を実行すると、
その割り込み処理を強要されたことによってYコード実
行結果が本来の結果と異なったものとなってしまうかど
うかを判定する。
先行する各Y命令のテストにおいて、テストブロック1
14は、好適いは、もし、非同期事象処理が許されYコ
ードシーケンスが後に再開されたとしたときに、これか
ら行われようとしている実行において例外条件が発生す
るかどうかを判定する。一般に、1つの命令は、それが
完了することができなかったときの1つの例外を有して
いる。以下に示したのは、先行Y命令と特定されたとき
の、X境界となっている次のバックアップY命令へのY
コード打ち切りを発生させる例外についての一般的な分
類分けである。
1)アクセス制御違反あるいはページフォールトなどの
メモリ管理例外 2)浮動少数点桁あふれ、あるいは0による割り算など
の算術演算例外 3)違法な命令コードあるいは違法な中断命令コードな
どの命令例外 本発明の好適な実施態様においては、IGCプログラム
が実行中にアクセスすることが可能な記憶装置に、変換
されるコードの有り得る例外についてのリストが配置さ
れる。かくして、記憶された例外リストに対して、先行
探査されたY命令の各々を参照して、例外判定がなされ
る。
先行探査において、一連のY命令がテストされ、もし探
査されたすべてのY命令が例外を示していなければ、非
同期事象処理がブロック108(図5A)によって実行
可能とされる以前に、先に説明したように、X命令顆粒
性を破壊することなく残りのY命令が実行される。
一方、もし、先行探査されたY命令が、ブロック114
におけるテストにおいて、例外が見いだされると機能ブ
ロック118は直ちに、X命令境界となっている次のバ
ックアップY命令まで、Yプログラムカウンタを戻し、
ブロック108において、X命令顆粒性を破壊すること
なしに非同期事象処理を可能とする。このようにして、
X命令顆粒性が破壊されることが防止される。
全体的に、本発明は「1から複数への」アプリケーショ
ンコード変換を実現するための有効な機構を提供するも
のである。生成されたコードは、正確な状態不可分性お
よび命令顆粒性とともに、実行結果において正確に元の
コードと同じものを与える。単純な1書き込み命令、お
よび、複数書き込みと読みだし−変更−書き込み単一書
き込み型を特殊命令に対して、不可分性、細分まとまり
性が保証される。従って、元のCISCあるいは類似の
コードへ投資したものが無駄にならないばかりでなく、
同時に、RISCあるいは相対的に簡易な命令セットを
有する高・価格/性能比を有するコンピュータシステム
へ、アプリケーションコードを変換することによって、
良好な価格/性能比を達成することができる。
変換プログラムに対して命令状態不可分性を保持する、
本発明による改良されたシステムおよび方法において、
多くの変形・類型が、本発明の範囲と精神を逸脱するこ
となく、当業者にとって可能である。従って、本発明
は、添付の請求範囲に記述された範囲およびそれと等価
な範囲に含まれるような変形・類型などの拡張をも包含
するものである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ウィーテック リチャード ティー アメリカ合衆国 マサチューセッツ州 01460 リトルトン シルヴァー バーチ レーン 8

Claims (34)

    【特許請求の範囲】
  1. 【請求項1】第1コンピュータを作動して第1のコード
    命令を対応する第2のコード命令に変換し、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成し、 あらかじめ定められた1書き込み命令に対する前記第2
    の命令グループの中に、どのような割り込みもなしにま
    た前記メモリ状態と結合した他のプロセッサによる第1
    のメモリ位置への対立する介入書き込みなしに第1のサ
    ブシーケンスを実行することができるようになされた、
    第1のメモリ位置への1書き込み処理を行うための第1
    のサブシーケンスを含む第1の特殊な書き込み命令を含
    めさせ、 複数書き込み命令に対する前記第2の命令グループの中
    に、どのような割り込みもなしにまた前記メモリ状態と
    結合した他のプロセッサによる対立する介入書き込みな
    しにすべての複数書き込みを実行する必要があるような
    複数書き込みを処理するための第2のサブシーケンスを
    含む第2の特殊な書き込み命令を含めさせ 前記第2のコンピュータシステムを作動させて、第2の
    プログラムコードを実行し、 第2のコードの実行中において各非同期事象の発生を判
    定し、 第2のコードの実行中において、前記のメモリ状態と前
    記の他のプロセッサが結合したときに前記第1のメモリ
    位置への前記の他のプロセッサによってなされる対立す
    る各書き込みの発生を判定し、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行
    い、 前記第1のサブシーケンスが終了する前に前記の他のプ
    ロセッサによって対立する書き込みがなされた場合に
    は、前記第1の特殊な命令サブシーケンスを含むどのよ
    うな第2のコードの顆粒命令シーケンスの中の前記第1
    の特殊な命令サブシーケンスを打ち切り、成功裡に実行
    が完了するまで再試行を行い、 前記の第1のサブシーケンスの実行が試みられている間
    に、非同期事象割り込みが発生した場合には、前記第1
    のサブシーケンスを含む第2のコードのどのような顆粒
    命令シーケンスをも打ち切って、再試行を行い、 もしも、A)前記の第2のサブシーケンスが顆粒命令シ
    ーケンスに含まれており、また前記第2の命令サブシー
    ケンスの実行において高々最初の書き込みが終了した後
    に非同期事象割り込みが発生したか、または、もしも、
    B)例外に至るであろう前記の第2のグループのすべて
    の状態更新命令が実行された後に非同期事象割り込みが
    発生した場合には、非同期事象割り込みの処理の実施を
    遅らせ、実行中であるすべての第2のコードの顆粒命令
    を完了させる ステップを含むことを特徴とする、第1の命令セットに
    適合するようになされた第1のアーキテクチャを有する
    コンピュータ上で実行することが可能な第1のプログラ
    ムコードを、第1の命令セットと比較して簡易な命令セ
    ットよりなる第2の命令セットに適合するようになされ
    た第2のアーキテクチャを有しまたメモリおよびレジス
    タ状態を有する第2のコンピュータ上で実行が可能な第
    2のプログラムコードに、第1のコードの命令の状態不
    可分性を保持しながら、変換し実行する方法。
  2. 【請求項2】前記第1のサブシーケンスが読み出し−変
    更−書き込みサブシーケンスであることを特徴とする請
    求の範囲第1項に記載の方法。
  3. 【請求項3】前記第1のサブシーケンスが、部分的書き
    込みまたはインタロックされた更新命令を実現するため
    に採用せられており、前記第1のサブシーケンスは入力
    データを読み取って変更しその変更されたデータを条件
    付き格納を行うロックされたロード・条件付き格納シー
    ケンスを含み、前記第1のサブシーケンスはその実行中
    において対立する書き込みがなされた場合には失敗不履
    行とし、実行中に対立する書き込みがなされなかった場
    合には前記第1のサブシーケンスを完了させることを特
    徴とする請求の範囲第2項に記載の方法。
  4. 【請求項4】前記第2のサブシーケンスが1つの特権ア
    ーキテクチャライブラリ(PAL)呼び出しルーチンを
    含み、このPALルーチンによって前記第2のサブシー
    ケンスの実行およびいったんこのPAL呼び出しルーチ
    ンの実行が始まった後には前記第2のサブシーケンスに
    含まれるすべての書き込みを実行し、また、前記PAL
    呼び出しルーチンの開始は、もし現在の命令シーケンス
    の実行中に何等の割り込みも発生せず、またもし例外に
    出会わせずに残りのすべての状態アクセスを完了するこ
    とができる場合において許されることを特徴とする請求
    の範囲第1項に記載の方法。
  5. 【請求項5】前記PAL呼び出しルーチンが実行すべき
    第1の書き込みが部分的書き込みであるかどうかを判定
    するためのテストを行い、もしそれが部分的書き込みで
    ある場合にはロックされたロード・条件付き格納を実施
    して前記の第1の書き込みを実行し、もし前記第1のサ
    ブルーチンの実行が試みられている間に前記の他のプロ
    セッサによる対立する状態書き込みがなされた結果とし
    て条件付き格納が失敗不履行となった場合にはロックさ
    れたロード・条件付き格納をそれが完了するまで選択的
    に再試行し、もし再試行中ではない場合における第1の
    試行中において対立する状態書き込みが発生しないかあ
    るいは再試行中の場合においては続く再試行中において
    対立する状態書き込みの発生がない場合にはロックされ
    たロード・条件付き格納を完了する、第1のサブルーチ
    ンを含み、前記PAL呼び出しルーチンは前記第1のサ
    ブルーチンが終了すると直ちに完了させるためにロック
    され、次に第2のサブルーチンが実行すべき第2の書き
    込みが部分的書き込みであるかどうかを判定するための
    テストを行い、もしそれが部分的書き込みである場合に
    はロックされたロード・条件付き格納を実施して前記第
    2の書き込みを実行し、もし前記第2のサブルーチンの
    実行が試みられている間に前記の他のプロセッサによる
    対立する状態書き込みがなされた結果として条件付き格
    納が失敗不履行となった場合にはロックされたロード・
    条件付き格納を完了するまで再試行し、すべての書き込
    みが実行されて前記PAL呼び出しが完了するまで後続
    する各々の実行すべき書き込みを本質的に前記第2のサ
    ブルーチンと等しいサブルーチンによって処理すること
    を特徴とする請求の範囲第4項に記載の方法。
  6. 【請求項6】前記第1のサブルーチンが、それが成功裡
    に終了するまで再試行されることを特徴とする請求の範
    囲第5項に記載の方法。
  7. 【請求項7】第2のコード命令を用いて第1のコード命
    令を定義したパターンコードに従って、第1のコード命
    令を対応する第2のコード命令に、第1のコンピュータ
    を用いて変換し、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成し、 どのような割り込みもなしにまた前記メモリ状態と結合
    した他のいずれのプロセッサによる第1のメモリ位置へ
    の対立する介入書き込みなしに1書き込みが実行される
    ように第1のメモリ位置への1書き込み処理を行うため
    のサブシーケンスを含むように、特殊な書き込み命令を
    構成し、 第2のアーキテクチャを適合された第2のコンピュータ
    システムを作動させて、第2のプログラムコードを実行
    し、 第2のコードの実行中において各非同期事象の発生を判
    定し、 第2のコードの実行中において、前記のメモリ状態と前
    記の他のプロセッサが結合したときに前記第1のメモリ
    位置への前記の他のプロセッサによってなされる対立す
    る各書き込みの発生を判定し、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行
    い、 前記のサブシーケンスが終了する前に前記の他のプロセ
    ッサによって対立する書き込みがなされた場合には、前
    記の特殊な命令サブシーケンスを含むような第2のコー
    ドの顆粒命令シーケンスの中の前記の特殊て命令サブシ
    ーケンスを打ち切り、成功裡に実行が完了するまで再試
    行を行い、 前記のサブシーケンスの実行が試みられている間に、非
    同期事象割り込みが発生した場合には、前記のサブシー
    ケンスを含む第2のコードのどのような顆粒命令シーケ
    ンスをも打ち切って、再試行を行い、 例外に至るであろう前記の第2のグループのすべての状
    態更新命令が実行された後に非同期事象割り込みが発生
    した場合には、非同期事象割り込み処理の実施を遅ら
    せ、実行中であるすべての第2のコードの顆粒命令を完
    了させる ステップを含むことを特徴とする、第1の命令セットに
    適合するようになされた第1おアーキテクチャを有する
    コンピュータ上で実行することが可能な第1のプログラ
    ムコードを、第1の命令セットと比較して簡易な命令セ
    ットよりなる第2の命令セットに適合するようになされ
    た第2のアーキテクチャを有しまたメモリおよびレジス
    タ状態を有する第2のコンピュータ上で実行が可能な第
    2のプログラムコードに、第1のコードの命令の状態不
    可分性を保持しながら、変換し実行をする方法。
  8. 【請求項8】前記第1のサブシーケンスが読み出し−変
    更−書き込みサブシーケンスであることを特徴とする請
    求の範囲第7項に記載の方法。
  9. 【請求項9】前記第1のサブシーケンスが、部分的書き
    込みまたはインタロックされた更新命令を実現するため
    に採用せられており、前記第1のサブシーケンスは入力
    データを読み取って変更しその変更されたデータを条件
    付き格納を行うロックされたロード・条件付き格納シー
    ケンスを含み、前記第1のサブシーケンスはその実行中
    において対立する書き込みがなされた場合には失敗不履
    行とし、実行中対立する書き込みがなされなかった場合
    には前記第1のサブシーケンスを完了させることを特徴
    とする請求の範囲第8項に記載の方法。
  10. 【請求項10】7-2]第2のコード命令を用いて第1のコ
    ード命令を定義したパターンコードに従って、第1のコ
    ード命令を対応する第2のコード命令に、第1のコンピ
    ュータを用いて変換し、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成し、 どのような割り込みもなしにすべての実行がなされなけ
    ればならない複数書き込み処理を行うためのサブシーケ
    ンスを含むように特殊な書き込み命令を構成し、 第2のアーキテクチャを適合された第2のコンピュータ
    システムを作動させて、第2のプログラムコードを実行
    し、 第2のコードの実行中において各非同期事象の発生を判
    定し、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行
    い、 もしも、A)前記のサブシーケンスが顆粒命令シーケン
    スに含まれており、また前記の命令サブシーケンスの実
    行において高々最初の書き込みが終了した後に非同期事
    象割り込みが発生したか、または、もしも、B)例外に
    至るであろう前記の第2のグループのすべての状態更新
    命令が実行された後に非同期事象割り込みが発生した場
    合には、非同期事象割り込みの処理の実施を遅らせ、実
    行中であるすべての第2のコードの顆粒命令を完了させ
    る ステップを含むことを特徴とする、第1の命令セットに
    適合するようになされた第1のアーキテクチャを有する
    コンピュータ上で実行することが可能な第1のプログラ
    ムコードを、第1の命令セットと比較して簡易な命令セ
    ットよりなる第2の命令セットに適合するようになされ
    た第2のアーキテクチャを有しまたメモリおよびレジス
    タ状態を有する第2のコンピュータ上で実行が可能な第
    2のプログラムコードに、第1のコードの命令の状態不
    可分性を保持しながら、変換し実行をする方法。
  11. 【請求項11】前記第2のサブシーケンスが1つの特権
    アーキテクチャライブラリ(PAL)呼び出しルーチン
    を含み、このPALルーチンによって前記第2のサブシ
    ーケンスの実行およびいったんこのPAL呼び出しルー
    チンの実行が始まった後には前記第2のサブシーケンス
    に含まれるすべての書き込みを実行し、また、前記PA
    L呼び出しルーチンの開始は、もし現在の命令シーケン
    スの実行中に何等の割り込みも発生せず、またもし例外
    に出会わずに残りのすべての状態アクセスを完了するこ
    とができる場合において許されることを特徴とする請求
    の範囲第10項に記載の方法。
  12. 【請求項12】前記PAL呼び出しルーチンが、実行す
    べき第1の書き込みが部分的書き込みであるかどうかを
    判定するためのテストを行い、もしそれが部分的書き込
    みである場合にはロックされたロード・条件付き格納を
    実施して前記の第1の書き込みを実行し、もし前記第1
    のサブルーチンの実行が試みられている間に前記の他の
    プロセッサによる対立する状態書き込みがなされた結果
    として条件付き格納が失敗不履行となった場合にはロッ
    クされたロード・条件付き格納をそれが完了するまで選
    択的に再試行し、もし再試行中ではない場合における第
    1の試行中において対立する状態書き込みが発生しない
    かあるいは再試行中の場合においては続く再試行中にお
    いて対立する状態書き込みの発生がない場合にロックさ
    れたロード・条件付き格納を完了する、第1のサブルー
    チンを含み、前記PAL呼び出しルーチンは前記第1の
    サブルーチンが終了すると直ちに完了させるためにロッ
    クされ、次に第2のサブルーチンが実行すべき第2の書
    き込みが部分的書き込みであるかどうかを判定するため
    のテストを行い、もしそれが部分的書き込みである場合
    にはロックされたロード・条件付き格納を実施して前記
    第2の書き込みを実行し、もし前記第2のサブルーチン
    の実行が試みられている間に前記の他のプロセッサによ
    る対立する状態書き込みがなされた結果として条件付き
    格納が失敗不履行となった場合にはロックされたロード
    ・条件付き格納を完了するまで再試行し、すべての書き
    込みが実行されて前記PAL呼び出しが完了するまで後
    続する各々の実行すべき書き込みを本質的に前記第2の
    サブルーチンと等しいサブルーチンによって処理するこ
    とを特徴とする請求の範囲第11項に記載の方法。
  13. 【請求項13】前記第1のサブルーチンが、それが成功
    裡に終了するまで再試行されることを特徴とする請求の
    範囲第12項に記載の方法。
  14. 【請求項14】第2のコード命令を用いて第1のコード
    命令を定義したパターンコードに従って、第1のコード
    命令を対応する第2のコード命令に、第1のコンピュー
    タを用いて変換し、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成し、 どのような割り込みもなしにまた前記メモリ状態と結合
    した他のいずれのプロセッサによる第1のメモリ位置へ
    の対立する介入書き込みなしに1書き込みが実行される
    ように第1のメモリ位置への1書き込み処理を行うため
    の第1のサブシーケンスを含むように、第1の特殊な書
    き込み命令を構成し、 どのような割り込みもなしにすべての実行がなされなけ
    ればならない複数書き込み処理を行うための第2のサブ
    シーケンスを含むように第2の特殊な書き込み命令を構
    成し、 前記第1のサブシーケンスの実行が終了する前に前記の
    他のプロセッサによって対立する書き込みがなされた場
    合には、前記第1のサプシーケンスを打ち切って、成功
    裡に実行が終了するまで再試行を行うように、前記第1
    のサブシーケンスを構成し、前記第1のサブシーケンス
    の実行が試みられている間に非同期事象割り込みが発生
    した場合には、前記第1のサブシーケンスを失敗不履行
    とし、これによって前記第1のサブシーケンスを含む第
    2のコードのどの顆粒命令に対してもその実行の再試行
    が可能なようになさしめるように、前記第1のサブシー
    ケンスを構成し第2のコードの実行中に発生したどのよ
    うな非同期事象割り込みの実施をも、前記第2のサブシ
    ーケンスの実行が終了するまで遅らせることができる、
    割り込み不可の特権的実行を行うように前記第2のサブ
    シーケンスを構成するステップを含むことを特徴とす
    る、第1の命令セットに適合するようになされた第1の
    アーキテクチャを有するコンピュータ上で実行すること
    が可能な第1のプログラムコードを、第1の命令セット
    と比較して簡易な命令セットよりなる第2の命令セット
    に適合するようになされた第2のアーキテクチャを有し
    またメモリおよびレジスタ状態を有する第2のコンピュ
    ータ上で実行が可能な第2のプログラムコードに変換す
    る方法において、第1のコードの状態不可分性の保持を
    容易ならしめるように変換する方法。
  15. 【請求項15】第2のアーキテクチャを適合された第2
    のコンピュータシステムを作動させて、第2のプログラ
    ムコードを実行し、 第2のコードの実行中において各非同期事象の発生を判
    定し、 第2のコードの実行中において、前記のメモリ状態と前
    記の他のプロセッサが結合したときに前記第1のメモリ
    位置への前記の他のプロセッサによってなされる対立す
    る各書き込みの発生を判定し、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行
    い、 前記第1のサブシーケンスが終了する前に前記の他のプ
    ロセッサによって対立する書き込みがなされた場合に
    は、前記第1の特殊な命令サブシーケンスを含むどのよ
    うな第2のコードの顆粒命令シーケンスの中の前記第1
    の特殊な命令サブシーケンスを打ち切り、成功裡に実行
    が完了するまで再試行を行い、 前記の第1のサブシーケンスの実行が試みられている間
    に、非同期事象割り込みが発生した場合には、前記第1
    のサブシーケンスを含む第2のコードのどのような顆粒
    命令シーケンスをも打ち切って、再試行を行い、 もしも、A)前記の第2のサブシーケンスが顆粒命令シ
    ーケンスに含まれており、また前記第2のサブシーケン
    スの実行において高々最初の書き込みが終了した後に非
    同期事象割り込みが発生したか、または、もしも、B)
    前記の特殊な命令の実行がなされた後に非同期事象割り
    込みが発生するかあるいは例外に至るであろう前記の第
    2のグループのすべての状態更新命令が実行された後に
    非同期事象割り込みが発生した場合には、非同期事象割
    り込みの処理の実施を遅らせ、実行中であるすべての第
    2のコードの顆粒命令を完了させる ステップを含むことを特徴とする、第1の命令セットに
    適合するようになされた第1のアーキテクチャを有する
    コンピュータ上で実行することが可能な第1のプログラ
    ムコードから、第1の命令セットと比較して簡易な命令
    セットよりなる第2の命令セットに適合するようになさ
    れた第2のアーキテクチャを有しまたメモリおよびレジ
    スタ状態を有する第2のコンピュータ上で実行が可能な
    第2のプログラムコードへの変換が、第1のコードの各
    々の命令に対応する第2のコード命令が状態更新以外の
    命令を行い実行後に状態エラーを発生する危険なしに中
    断することができるコード命令を含む第1のグループと
    変換される第1のコード命令を実行する際に必要となる
    特殊な書き込み命令を含むすべてのメモリおよびレジス
    タ状態更新命令を含む第2のグループとの2つのグルー
    プを少なくとも含むように順序づけられて並べられた顆
    粒命令シーケンスに編成せられ、第1の特殊な書き込み
    命令がどのような割り込みもなしにまた前記メモリ状態
    と結合した他のプロセッサによる第1のメモリ位置への
    対立する介入書き込みなしに第1のサブシーケンスを実
    行することができるようになされた第1のメモリ位置へ
    の1書き込み処理を行うための第1のサブシーケンスを
    含むようになされ、第2の特殊な書き込み命令がどのよ
    うな割り込みもなしにすべての複数書き込みを実行する
    必要があるような複数書き込みを処理するための第2の
    サブシーケンスを含むようになされた、第2のプログラ
    ムコードを実行する方法において、第2のプログラムコ
    ードが変換された元の第1のプログラムコードの状態不
    可分性を保持しながら第2のプログラムコードの実行を
    実行する方法。
  16. 【請求項16】第1のプログラムコードを第2のプログ
    ラムコードへ変換するための第1のプロセッサと、前記
    第1のプロセッサに結合された第1のメモリシステムを
    有する第1のコンピュータシステムと、前記第1のメモ
    リシステムに第2のプログラムコードとして記憶された
    前記パターンコード従って第1のコードの中の連続した
    各命令を第2のコード命令に変換するための手段と、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成するた
    めの手段と、 どのような割り込みもなしにまた前記メモリ状態と結合
    した他のいずれのプロセッサによる第1のメモリ位置へ
    の対立する介入書き込みなしに1書き込みが実行される
    ように第1のメモリ位置への1書き込み処理を行うため
    の第1のサブシーケンスを含むように、第1の特殊な書
    き込み命令を構成するための手段と、 どのような割り込みもなしにすべての実行がなされなけ
    ればならない複数書き込み処理を行うための第2のサブ
    シーケンスを含むように第2の特殊な書き込み命令を構
    成するための手段と、 前記第1のコンピュータシステムの出力として生成され
    た第2のコードを実行するための、前記第2のアーキテ
    クチャを備えまた第2のプロセッサと前記第2のプロセ
    ッサと結合した第2のメモリシステムを含むメモリおよ
    びレジスタ状態を備えた第2のコンピュータシステム
    と、 第2のコードの実行中における、すべての非同期事象の
    発生、および、前記のメモリ状態と前記の他のプロセッ
    サが結合したときに前記第1のメモリ位置への前記の他
    のプロセッサによってなされる対立するすべての書き込
    みの発生を判定するための手段と、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行う
    ための手段と、 前記第1のサブシーケンスが終了する前に前記の他のプ
    ロセッサによって対立する書き込みがなれれた場合に
    は、前記第1の特殊な命令サブシーケンスを含むどのよ
    うな第2のコードの顆粒命令シーケンスの中の前記第1
    の特殊な命令サブシーケンスをも打ち切り、成功裡に実
    行が完了するまで再試行を行うための手段と、 前記の第1のサブシーケンスの実行が試みられている間
    に、非同期事象割り込みが発生した場合には、前記第1
    のサブシーケンスを含む第2のきコードのどのような顆
    粒命令シーケンスをも打ち切って、再試行を行うための
    手段と、 もしも、A)前記の第2のサブシーケンスが顆粒命令シ
    ーケンスに含まれており、また前記第2の命令サブシー
    ケンスの実行において高々最初の書き込みが終了した後
    に非同期事象割り込みが発生したか、または、もしも、
    B)例外に至るであろう前記の第2のグループのすべて
    の状態更新命令が実行された後に非同期事象が発生した
    場合には、非同期事象割り込みの処理の実施を遅らせ、
    実行中であるすべての第2のコードの顆粒命令を完了さ
    せるための手段 を含むことを特徴とする、第1の命令セットに適合する
    ようになされた第1のアーキテクチャを有するコンピュ
    ータ上で実行することが可能な第1のプログラムコード
    を、第1の命令セットと比較して簡易な命令セットより
    なる第2の命令セットに適合するようになされた第2の
    アーキテクチャを有しまたメモリおよびレジスタ状態を
    有する第2のコンピュータ上で実行が可能な第2のプロ
    グラムコードに、第1のコードの命令の状態不可分性を
    保持しながら変換を行い、実行するためのシステム。
  17. 【請求項17】前記第1のサブシーケンスが読み出し−
    変更−書き込みサブシーケンスであることを特徴とする
    請求の範囲第16項に記載のシステム。
  18. 【請求項18】前記第1のサブシーケンスが、部分的書
    き込みまたはインタロックされた更新命令を実現するた
    めに採用せられており、前記第1のサブシーケンスは入
    力データを読み取って変更しその変更されたデータを条
    件付き格納を行うロックされたロード・条件付き格納シ
    ーケンスを含み、前記第1のサブシーケンスはその実行
    中において対立する書き込みがなされた場合には失敗不
    履行とし、実行中に対立する書き込みがなされなかった
    場合には前記第1のサブシーケンスを完了させることを
    特徴とする請求の範囲第17項に記載のシステム。
  19. 【請求項19】前記第2のサブシーケンスが1つの特権
    アーキテクチャライブラリ(PAL)呼び出しルーチン
    を含み、このPALルーチンによって前記第2のサブシ
    ーケンスの実行およびいったんこのPAL呼び出しルー
    チンの実行が始まった後には前記第2のサブシーケンス
    に含まれるすべての書き込みを実行し、また、前記PA
    L呼び出しルーチンの開始は、もし現在の命令シーケン
    スの実行中に何等の割り込みも発生せず、またもし例外
    に出会わずに残りのすべての状態アクセスを完了するこ
    とができる場合において許されることを特徴とする請求
    の範囲第16項に記載のシステム。
  20. 【請求項20】前記PAL呼び出しルーチンが、実行す
    べき第1の書き込みが部分的書き込みであるかどうかを
    判定するためのテストを行い、もしそれが部分的書き込
    みである場合にはロックされたロード・条件付き格納を
    実施して前記の第1の書き込みを実行し、もし前記第1
    のサブルーチンの実行が試みられている間に前記の他の
    プロセッサによる対立する状態書き込みがなされた結果
    として条件付き格納が失敗不履行となった場合にはロッ
    クされたロード・条件付き格納をそれが完了するまで選
    択的に再試行し、もし再試行中ではない場合における第
    1の試行中において対立する状態書き込みが発生しない
    かあるいは再試行中の場合においては続く再試行中にお
    いて対立する状態書き込みの発生がない場合にはロック
    されたロード・条件付き格納を完了する、第1のサブル
    ーチンを含み、前記PAL呼び出しルーチンは前記第1
    のサブルーチンが終了すると直ちに完了させるためにロ
    ックされ、次に第2のサブルーチンが実行すべき第2の
    書き込みが部分的書き込みであるかどうかを判定するた
    めのテストを行い、もしそれが部分的書き込みである場
    合にはロックされたロード・条件付き格納を実施して前
    記第2の書き込みを実行し、もし前記第2のサブルーチ
    ンの実行が試みられている間に前記の他のプロセッサに
    よる対立する状態書き込みがなされた結果として条件付
    き格納が失敗不履行となった場合にはロックされたロー
    ド・条件付き格納を完了するまで再試行し、すべての書
    き込みが実行されて前記PAL呼び出しが完了するまで
    後続する各々の実行すべき書き込みを本質的に前記第2
    のサブルーチンと等しいサブルーチンによって処理する
    ことを特徴とする請求の範囲第19項に記載のシステ
    ム。
  21. 【請求項21】前記第1のサブルーチンが、それが成功
    裡に終了するまで再試行されることを特徴とする請求の
    範囲第20項に記載のシステム。
  22. 【請求項22】第1のプログラムコードを第2のプログ
    ラムコードへ変換するための第1のプロセッサと、前記
    第1のプロセッサに結合された第1のメモリシステムを
    有する第1のコンピュータシステムと、前記第1のメモ
    リシステムに第2のプログラムコードとして記憶された
    前記パターンコード従って第1のコードの中の連続した
    各命令を第2のコード命令に変換するための手段と、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成するた
    めの手段と、 どのような割り込みもなしにまた前記メモリ状態と結合
    した他のいずれのプロセッサによる第1のメモリ位置へ
    の対立する介入書き込みなしに1書き込みが実行される
    ように第1のメモリ位置への1書き込み処理を行うため
    のサブシーケンスを含むように、特殊な書き込み命令を
    構成するための手段と、 前記第1のコンピュータシステムの出力として生成され
    た第2のコードを実行するための、前記第2のアーキテ
    クチャを備えまた第2のプロセッサと前記第2のプロセ
    ッサと結合した第2のメモリシステムを含むメモリおよ
    びレジスタ状態を備えた第2のコンピュータシステム
    と、 第2のコードの実行中における、すべての非同期事象の
    発生、および、前記メモリ状態と前記の他のプロセッサ
    が結合したときに前記第1のメモリ位置への前記の他の
    プロセッサによってなされる対立するすべての書き込み
    の発生を判定するための手段と、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行う
    ための手段と、 前記のサブシーケンスが終了する前に前記の他のプロセ
    ッサによって対立する書き込みがなされた場合には、前
    記の特殊な命令サブシーケンスを含むなどのような第2
    のコードの顆粒命令シーケンスの中の前記の特殊な命令
    サブシーケンスをも打ち切り、成功裡に実行が完了する
    まで再試行を行うための手段と、 前記のサブシーケンスの実行が試みられている間に、非
    同期事象割り込みが発生した場合には、前記のサブシー
    ケンスを含む第2のコードのどのような顆粒命令シーケ
    ンスをも打ち切って、再試行を行うための手段と、 例外に至るであろう前記の第2のグループのすべての状
    態更新命令が実行された後に非同期事象が発生した場合
    には、非同期事象割り込みの処理の実施を遅らせ、実行
    中であるすべての第2のコードの顆粒命令を完了させる
    ための前記第2のプロセッサと前記第2のメモリシステ
    ムとを含む手段 を含むことを特徴とする、第1の命令セットに適合する
    ようになされた第1のアーキテクチャを有するコンピュ
    ータ上で実行することが可能な第1のプログラムコード
    を、第1の命令セットと比較して簡易な命令セットより
    なる第2の命令セットに適合するようになされた第2の
    アーキテクチャを有しまたメモリおよびレジスタ状態を
    有する第2のコンピュータ上で実行が可能な第2のプロ
    グラムコードに、第1のコードの命令の状態不可分性を
    保持しながら変換を行い、実行するためのシステム。
  23. 【請求項23】前記第1のサブシーケンスが読み出し−
    変更−書き込みサブシーケンスであることを特徴とする
    請求の範囲第22項に記載システム。
  24. 【請求項24】前記第1のサブシーケンスが、部分的書
    き込みまたはインタロックされた更新命令を実現するた
    めに採用せられており、前記第1のサブシーケンスは入
    力データを読み取って変更しその変更されたデータを条
    件付き格納を行うロックされたロード・条件付き格納シ
    ーケンスを含み、前記第1のサブシーケンスはその実行
    中において対立する書き込みがなされた場合には失敗不
    履行とし、実行中に対立する書き込みがなされなかった
    場合には前記第1のサブシーケンスを完了させることを
    特徴とする請求の範囲第23項に記載のシステム。
  25. 【請求項25】第1のプログラムコードを第2のプログ
    ラムコードへ変換するための第1のプロセッサと、前記
    第1のプロセッサに結合された第1のメモリシステムを
    有する第1のコンピュータシステムと、前記第1のメモ
    リシステムに第2のプログラムコードとして記憶された
    前記パターンコード従って第1のコードの中の連続した
    各命令を第2のコード命令に変換するための手段と、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成するた
    めの手段と、 どのような割り込みもなしにすべての実行がなされなけ
    ればならない複数書き込み処理を行うためのサブシーケ
    ンスを含むように特殊な書き込み命令を構成するための
    手段と、 前記第1のコンピュータシステムの出力として生成され
    た第2のコードを実行するための、前記第2のアーキテ
    クチャを備えまた第2のプロセッサと前記第2のプロセ
    ッサと結合した第2のメモリシステムを含むメモリおよ
    びレジスタ状態を備えた第2のコンピュータシステム
    と、 第2のコードの実行中における、すべての非同期事象の
    発生を判定するための手段と、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行う
    ための手段と、 もしも、A)前記の第2のサブシーケンスが顆粒命令シ
    ーケンスに含まれており、また前記第2の命令サブシー
    ケンスの実行において高々最初の書き込みが終了した後
    に非同期事象割り込みが発生したか、または、もしも、
    B)例外に至るであろう前記の第2のグループのすべて
    の状態更新命令が実行された後に非同期事象が発生した
    場合には、非同期事象割り込みの処理の実施を遅らせ、
    実行中であるすべての第2のコード顆粒命令を完了させ
    るための前記第2のプロセッサと前記第2のメモリシス
    テムとを含む手段 を含むことを特徴とする、第1の命令セットに適合する
    ようになされた第1のアーキテクチャを有するコンピュ
    ータ上で実行することが可能な第1のプログラムコード
    を、第1の命令セットと比例して簡易な命令セットより
    なる第2の命令セットに適合するようになされた第2の
    アーキテクチャを有しまたメモリおよびレジスタ状態を
    有する第2のコンピュータ上で実行が可能な第2のプロ
    グラムコードに、第1のコードの命令の状態不可分性を
    保持しながら変換を行い、実行するためのシステム。
  26. 【請求項26】前記第2のサブシーケンスが1つの特徴
    アーキテクチャライブラリ(PAL)呼び出しルーチン
    を含み、このPALルーチンによって前記第2のサブシ
    ーケンスの実行およびいったんこのPAL呼び出しルー
    チンの実行が始まった後には前記第2のサブシーケンス
    に含まれるすべての書き込みを実行し、また、前記PA
    L呼び出しルーチンの開始は、もし現在の命令シーケン
    スの実行中に何等の割り込みも発生せず、またもし例外
    に出会わずに残りのすべての状態アクセスを完了するこ
    とができる場合において許されることを特徴とする請求
    の範囲第25項に記載のシステム。
  27. 【請求項27】前記PAL呼び出しルーチンが、実行す
    べき第1の書き込みが部分的書き込みであるかどうかを
    判定するためのテストを行い、もしそれが部分的書き込
    みである場合にはロックされたロード・条件付き格納を
    実施して前記の第1の書き込みを実行し、もし前記第1
    のサブルーチンの実行が試みられている間に前記の他の
    プロセッサによる対立する状態書き込みがなされた結果
    として条件付き格納が失敗不履行となった場合にはロッ
    クされたロード・条件付き格納をそれが完了するまで選
    択的に再試行し、もし再試行中ではない場合における第
    1の試行中において対立する状態書き込みが発生しない
    かあるいは再試行中の場合においては続く再試行中にお
    いて対立する状態書き込みの発生がない場合にはロック
    されたロード・条件付き格納を完了する、第1のサブル
    ーチンを含み、前記PAL呼び出しルーチンは前記第1
    のサブルーチンが終了すると直ちに完了させるためにロ
    ックされ、次に第2のサブルーチンが実行すべき第2の
    書き込みが部分的書き込みであるかどうかを判定するた
    めのテストを行い、もしそれが部分的書き込みである場
    合にはロックされたロード・条件付き格納を実施して前
    記第2の書き込みを実行し、もし前記第2のサブルーチ
    ンの実行が試みられている間に前記の他のプロセッサに
    よる対立する状態書き込みがなされた結果として条件付
    き格納が失敗不履行となった場合にはロックされたロー
    ド・条件付き格納を完了するまで再試行し、すべての書
    き込みが実行されて前記PAL呼び出しが完了するまで
    後続する各々の実行すべき書き込みを本質的に前記第2
    のサブルーチンと等しいサブルーチンによって処理する
    ことを特徴とする請求の範囲第26項に記載のシステ
    ム。
  28. 【請求項28】前記第1のサブルーチンが、それが成功
    裡に終了するまで再試行されることを特徴とする請求の
    範囲第27項に記載のシステム。
  29. 【請求項29】第1のプログラムコードを第2のプログ
    ラムコードへ変換するための第1のプロセッサと、前記
    第1のプロセッサに結合された第1のメモリシステムを
    有する第1のコンピュータシステムと、前記第1のメモ
    リシステムに第2のプログラムコードとして記憶された
    前記パターンコード従って第1のコードの中の連続した
    各命令を第2のコード命令に変換するための手段と、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループを、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成するた
    めの手段と、 どのような割り込みもなしにまた前記メモリ状態と結合
    した他のいずれのプロセッサによる第1のメモリ位置へ
    の対立する介入書き込みなしに1書き込みが実行される
    ように第1のメモリ位置への1書き込み処理を行うため
    の第1のサブシーケンスを含むように、第1の特殊な書
    き込み命令を構成するための手段と、 どのような割り込みもなしにすべての実行がなされなけ
    ればならない複数書き込み処理を行うための第2のサブ
    シーケンスを含むように第2の特殊な書き込み命令を構
    成するための手段と、 前記第1のサブシーケンスが終了する前に前記の他のプ
    ロセッサによって対立する書き込みがなされた場合に
    は、前記第1の特殊な命令サブシーケンスを含むどのよ
    うな第2のコードの顆粒命令シーケンスの中の前記第1
    の特殊な命令サブシーケンスをも打ち切り、成功裡に実
    行が完了するまで再試行を行うための手段と、 前記第1のサブシーケンスの実行が試みられている間
    に、非同期事象割り込みが発生した場合には、前記の第
    1のサブシーケンスを含む第2のコードのどのような顆
    粒命令シーケンスをも打ち切って、再試行を行うための
    前記第2のプロセッサと前記第2のメモリシステムを含
    む手段と、 もしも、A)前記の第2のサブシーケンスが顆粒命令シ
    ーケンスに含まれており、また前記第2の命令サブシー
    ケンスの実行において高々最初の書き込みが終了した後
    に非同期事象割り込みが発生したか、または、もしも、
    B)例外に至るであろう前記の第2のグループのすべて
    の状態更新命令が実行された後に非同期事象が発生した
    場合には、非同期事象割り込みの処理の実施を遅らせ、
    実行中であるすべての第2のコードの顆粒命令を完了さ
    せるための前記第2のプロセッサと前記第2のメモリシ
    ステムを含む手段 を含むことを特徴とする、第1の命令セットに適合する
    ようになされた第1のアーキテクチャを有するコンピュ
    ータ上で実行することが可能な第1のプログラムコード
    を、第1の命令セットと比較して簡易な命令セットより
    なる第2の命令セットに適合するようになされた第2の
    アーキテクチャを有しまたメモリおよびレジスタ状態を
    有する第2のコンピュータ上で実行が可能が第2のプロ
    グラムコードに変換するシステムにおいて、第1のコー
    ドの状態不可分性の保持を容易ならしめるように変換す
    るシステム。
  30. 【請求項30】第2のアーキテクチャを適合された第2
    のコンピュータシステムを作動させて、第2のプログラ
    ムコードを実行しする手段と、 第2のコードの実行中において各非同期事象の発生を判
    定する手段と、 第2のコードの実行中において、前記のメモリ状態と前
    記の他のプロセッサが結合したときに前記第1のメモリ
    位置への前記の他のプロセッサによってなされる対立す
    る各書き込みの発生を判定する手段と、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行う
    手段と、 前記第1のサブシーケンスが終了する前に前記の他のプ
    ロセッサによって対立する書き込みがなされた場合に
    は、前記第1の特殊な命令サブシーケンスを含むどのよ
    うな第2のコードの顆粒命令シーケンスの中の前記第1
    の特殊な命令サブシーケンスを打ち切り、成功裡に実行
    が完了するまで再試行を行う手段と、 前記の第1のサブシーケンスの実行が試みられている間
    に、非同期事象割り込みが発生した場合には、前記第1
    のサブシーケンスを含む第2のコードのどのような顆粒
    命令シーケンスをも打ち切って、再試行を行う手段と、 もしも、A)前記の第2のサブシーケンスが顆粒命令シ
    ーケンスに含まれており、また前記第2の命令サブシー
    ケンスの実行において高々最初の書き込みが終了した後
    に非同期事象割り込みが発生したか、または、もしも、
    B)前記の特殊な命令の実行がなされた後に非同期事象
    割り込みが発生するかあるいは例外に至るであろう前記
    の第2のグループのすべての状態更新命令が実行された
    後に非同期事象割り込みが発生した場合には、非同期事
    象割り込みの処理の実施を遅らせ、実行中であるすべて
    の第2のコードの顆粒命令を完了させる手段 含むことを特徴とする、第2の命令セットに適合するよ
    うになされた第1のアーキテクチャを有するコンピュー
    タ上で実行することが可能な第1のプログラムコードか
    ら、第1の命令セットと比較して簡易な命令セットより
    なる第2の命令セットに適合するようになされた第2の
    アーキテクチャを有しまたメモリおよびレジスタ状態を
    有する第2のコンピュータ上で実行が可能な第2のプロ
    グラムコードへの変換が、第1のコードの各々の命令に
    対応する第2のコード命令が状態更新以外の命令を行い
    実行後に状態エラーを発生する危険なしに中断すること
    ができるコード命令を含む第1のグループと変換される
    第1のコード命令を実行する際に必要となる特殊な書き
    込み命令を含むすべてのメモリおよびレジスタ状態更新
    命令を含む第2のグループとの2つのグループを少なく
    とも含むように順序づけられて並べられた顆粒命令シー
    ケンスに編成せられ、第1の特殊な書き込み命令がどの
    ような割り込みもなしにまた前記メモリ状態と結合した
    他のプロセッサによる第1のメモリ位置への対立する介
    入書き込みなしに第1のサブシーケンスを実行すること
    ができるようになされた第1のメモリ位置への1書き込
    み処理を行うための第1のサブシーケンスを含むように
    なされ、第2の特殊な書き込み命令がどのような割り込
    みもなしにすべての複数書き込みを実行する必要がある
    ような複数書き込みを処理するための第2のサブシーケ
    ンスを含むようになされた、第2のプログラムコードを
    実行するシステムにおいて、第2のプログラムコードが
    変換された元の第1のプログラムコードの状態不可分性
    を保持しながら第2のプログラムコードの実行を行うシ
    ステム。
  31. 【請求項31】第2のコード命令を用いて第1のコード
    命令を定義したパターンコードに従って、第1のコード
    命令を対応する第2のコード命令に、第1のコンピュー
    タを用いて変換し、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成し、 どのような対立する介入的事象もなしに処理する必要の
    あるサブシーケンスを含む第1の特殊な書き込み命令を
    少なくとも前記第2の命令グループの中に含めさせ、 第2のアーキテクチャを適合された第2のコンピュータ
    システムを作動させて、第2のプログラムコードを実行
    し、 第2のコードの実行中において、前記第1の特殊な書き
    込み命令におけるメモリ不可分性を実際に破るあるいは
    破る可能性があるすべての介入事象の発生を判定し、シ
    ーケンスの実行中において、第1のグループのすべての
    命令の実行が終了する前に非同期事象割り込みが発生し
    た場合、あるいは、第1のグループの命令の実行が終了
    した後に非同期事象処理を行わねばならなくなるような
    例外に至る第2のグループの命令が続いて待機している
    ときには、そのような第2のグループの命令が実行され
    る前に、第2のコードのすべての顆粒命令シーケンスを
    打ち切って、第1のコード命令の状態不可分性および第
    1のコード命令の顆粒性を保持し、後に再試行を行い、 前記第1のサブシーケンスが複数のステップを含む1書
    き込み命令である場合において、もし前記第1のサブシ
    ーケンスが終了する前に前記のメモリ状態と結合してい
    る前記の他のプロセッサによって対立する書き込みがな
    されたことが検出された場合には、前記第1の特殊な命
    令サブシーケンスを含むどのような第2のコードの顆粒
    命令シーケンスの中の前記第1の特殊な命令サブシーケ
    ンスをも打ち切り、成功裡に実行が完了するまで再試行
    を行い、 前記の第1のサブシーケンスが1書き込み命令である場
    合において、前記の第1のサブシーケンスの実行が試み
    られている間に、対立を生じるであろう非同期事象割り
    込みが検出された場合には、前記第1のサブシーケンス
    を含む第2のコードのどのような顆粒命令シーケンスを
    も打ち切って、再試行を行い、 もしも、A)前記第1のサブシーケンスが顆粒命令シー
    ケンスに含まれている複数書き込み命令である場合にお
    いて、もし、前記第1の命令サブシーケンスの実行にお
    いて高々最初の書き込みが終了した後に非同期事象割り
    込みが発生したか、または、もしも、B)例外に至るで
    あろう前記の第2のグループのすべての状態更新命令が
    実行された後に非同期事象割り込みが発生した場合に
    は、非同期事象割り込みの処理の実施を遅らせ、実行中
    であるすべての第2のコードの顆粒命令を完了させる ステップを含むことを特徴とする、第1の命令セットに
    適合するようになされた第1のアーキテクチャを有する
    コンピュータ上で実行することが可能な第1のプログラ
    ムコードを、第1の命令セットと比較して簡易な命令セ
    ットよりなる第2の命令セットに適合するようになされ
    た第2のアーキテクチャを有しまたメモリおよびレジス
    タ状態を有する第2のコンピュータ上で実行が可能な第
    2のプログラムコードに、第1のコードの命令の状態不
    可分性を保持しながら、変換し実行をする方法。
  32. 【請求項32】前記第1の特殊な書き込み命令が、どの
    ような割り込みなしにまた前記メモリ状態と結合してい
    る他のプロセッサによる前記第1のメモリ位置へのどの
    ような対立する介入的書き込みなしに前記第1のサブシ
    ーケンスを実行できるようになされた、第1のメモリ位
    置への1書き込みを処理するための第1のサブシーケン
    スを含む第1の特殊な書き込み命令であることを特徴と
    する請求の範囲第31項に記載の方法。
  33. 【請求項33】前記第1の特殊な書き込み命令が、どの
    ような割り込みもなしに実行することが必要な複数書き
    込みを処理するための第2のサブシーケンスを含む第2
    の特殊な書き込み命令であることを特徴とする請求の範
    囲第31項に記載の方法。
  34. 【請求項34】第1のプログラムコードを第2のプログ
    ラムコードへ変換するための第1のプロセッサと、前記
    第1のプロセッサに結合された第1のメモリシステムを
    有する第1のコンピュータシステムと、第1のコードの
    中の連続した各命令を第2のコード命令に変換するため
    の手段と、 第1のコードの各々の命令に対応する第2のコード命令
    を、状態更新以外の命令を行い実行後に状態エラーを発
    生する危険なしに中断することができるコード命令を含
    む第1のグループと、変換される第1のコード命令を実
    行する際に必要となる特殊な書き込み命令を含むすべて
    のメモリおよびレジスタ状態更新命令を含む第2のグル
    ープとの2つのグループを少なくとも含むように、順序
    づけられて並べられた顆粒命令シーケンスに編成するた
    めの手段と、 前記第1のコンピュータシステムの出力として生成され
    た第2のコードを実行するための、前記第2のアーキテ
    クチャを備えまた第2のプロセッサと前記第2のプロセ
    ッサと結合した第2のメモリシステムを含むメモリおよ
    びレジスタ状態を備えた第2のコンピュータシステム
    と、 第2のコードの実行中における、前記第1の特殊な書き
    込み命令におけるメモリ不可分性を実際に破るあるいは
    破る可能性があるすべての介入事象の発生を判定する手
    段と、 シーケンスの実行中において、第1のグループのすべて
    の命令の実行が終了する前に非同期事象割り込みが発生
    した場合、あるいは、第1のグループの命令の実行が終
    了した後に非同期事象処理を行わねばならなくなるよう
    な例外に至る第2のグループの命令が続いて待機してい
    るときには、そのような第2のグループの命令が実行さ
    れる前に、第2のコードのすべての顆粒命令シーケンス
    を打ち切って、第1のコード命令の状態不可分性および
    第1のコード命令の顆粒性を保持し、後に再試行を行う
    ための手段と、 前記第1のサブシーケンスが複数のステップを含む1書
    き込み命令である場合において、もし前記第1のサブシ
    ーケンスが終了する前に前記の他のプロセッサによって
    対立する書き込みがなされたことが検出された場合に
    は、前記第1のサブシーケンスの変形を含むどのような
    第2のコードの顆粒命令シーケンスの中の前記第1の特
    殊な命令サブシーケンスをも打ち切り、成功裡に実行が
    完了するまで再試行を行う手段と、 前記の第1のサブシーケンスが1書き込み命令である場
    合において、前記の第1のサブシーケンスの実行が試み
    られている間に、非同期事象割り込みが発生した場合に
    は、前記第1のサブシーケンスを含む第2のコードのど
    のような顆粒命令シーケンスをも打ち切って、再試行を
    行う手段と、 もしも、A)前記第1のサブシーケンスが顆粒命令シー
    ケンスに含まれている複数書き込み命令である場合にお
    いて、もし、前記第1の命令サブシーケンスの実行にお
    いて高々最初の書き込みが終了した後に非同期事象割り
    込みが発生したか、または、もしも、B)例外に至るで
    あろう前記の第2のグループのすべての状態更新命令が
    実行された後に非同期事象割り込みが発生した場合に
    は、非同期事象割り込みの処理の実施を遅らせ、実行中
    であるすべての第2のコードの顆粒命令を完了させる手
    段 を含むことを特徴とする、第1の命令セットに適合する
    ようになされた第1のアーキテクチャを有するコンピュ
    ータ上で実行することが可能な第1のプログラムコード
    を、第1の命令セットと比較して簡易な命令セットより
    なる第2の命令セットに適合するようになされた第2の
    アーキテクチャを有しまたメモリおよびレジスタ状態を
    有する第2のコンピュータ上で実行が可能な第2のプロ
    グラムコードに、第1のコードの命令の状態不可分性を
    保持しながら変換を行い、実行するためのシステム。
JP4507853A 1991-03-07 1992-03-03 変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法 Expired - Lifetime JPH0638234B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US66607191A 1991-03-07 1991-03-07
US666,071 1991-03-07
PCT/US1992/001715 WO1992015946A1 (en) 1991-03-07 1992-03-03 System and method for preserving source instruction atomicity in translated program code

Publications (2)

Publication Number Publication Date
JPH05505693A JPH05505693A (ja) 1993-08-19
JPH0638234B2 true JPH0638234B2 (ja) 1994-05-18

Family

ID=24672704

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4507853A Expired - Lifetime JPH0638234B2 (ja) 1991-03-07 1992-03-03 変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法

Country Status (15)

Country Link
US (1) US5636366A (ja)
EP (1) EP0537309B1 (ja)
JP (1) JPH0638234B2 (ja)
KR (1) KR950006616B1 (ja)
AT (1) ATE180908T1 (ja)
CA (1) CA2082408C (ja)
DE (1) DE69229319T2 (ja)
FI (1) FI925057A7 (ja)
IE (1) IE920739A1 (ja)
IL (1) IL100991A (ja)
MX (1) MX9200936A (ja)
NO (1) NO303419B1 (ja)
PT (1) PT100205A (ja)
TW (1) TW197505B (ja)
WO (1) WO1992015946A1 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3590075B2 (ja) * 1992-01-20 2004-11-17 株式会社東芝 仮想記憶方式のデータ処理装置及び方法
US6535903B2 (en) 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5778211A (en) * 1996-02-15 1998-07-07 Sun Microsystems, Inc. Emulating a delayed exception on a digital computer having a corresponding precise exception mechanism
US5875318A (en) * 1996-04-12 1999-02-23 International Business Machines Corporation Apparatus and method of minimizing performance degradation of an instruction set translator due to self-modifying code
US5764962A (en) * 1996-07-31 1998-06-09 Hewlett-Packard Company Emulation of asynchronous signals using a branch mechanism
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
US5828897A (en) * 1996-12-19 1998-10-27 Raytheon Company Hybrid processor and method for executing incrementally upgraded software
US6567910B2 (en) * 1998-02-13 2003-05-20 Texas Instruments Incorporated Digital signal processing unit with emulation circuitry and debug interrupt enable register indicating serviceable time-critical interrupts during real-time emulation mode
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
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
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
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
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
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
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
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
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
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
GB2367653B (en) 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US6829630B1 (en) * 2000-11-24 2004-12-07 Xerox Corporation Mechanisms for web-object event/state-driven communication between networked devices
US20030120899A1 (en) * 2001-12-20 2003-06-26 Stotzer Eric J. Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
US6895460B2 (en) * 2002-07-19 2005-05-17 Hewlett-Packard Development Company, L.P. Synchronization of asynchronous emulated interrupts
JP3900485B2 (ja) * 2002-07-29 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体
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
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US8726248B2 (en) * 2008-06-12 2014-05-13 Oracle America, Inc. Method and apparatus for enregistering memory locations
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US9824039B2 (en) * 2013-09-09 2017-11-21 International Business Machines Corporation Signal interrupts in a transactional memory system
US10698854B1 (en) * 2019-02-27 2020-06-30 International Business Machines Corporation Secure and efficient application data processing
US11061685B2 (en) 2019-02-27 2021-07-13 International Business Machines Corporation Extended asynchronous data mover functions compatibility indication
US11449367B2 (en) 2019-02-27 2022-09-20 International Business Machines Corporation Functional completion when retrying a non-interruptible instruction in a bi-modal execution environment

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4674038A (en) * 1984-12-28 1987-06-16 International Business Machines Corporation Recovery of guest virtual machines after failure of a host real machine
US5218712A (en) * 1987-07-01 1993-06-08 Digital Equipment Corporation Providing a data processor with a user-mode accessible mode of operations in which the processor performs processing operations without interruption
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system

Also Published As

Publication number Publication date
NO924260L (no) 1993-01-06
AU1571492A (en) 1992-10-06
KR950006616B1 (ko) 1995-06-19
ATE180908T1 (de) 1999-06-15
MX9200936A (es) 1993-04-01
DE69229319T2 (de) 2000-01-27
FI925057A0 (fi) 1992-11-06
CA2082408C (en) 1998-11-17
EP0537309A1 (en) 1993-04-21
NO303419B1 (no) 1998-07-06
TW197505B (ja) 1993-01-01
IL100991A (en) 1996-09-12
NO924260D0 (no) 1992-11-05
PT100205A (pt) 1994-04-29
DE69229319D1 (de) 1999-07-08
FI925057A7 (fi) 1992-11-06
CA2082408A1 (en) 1992-09-08
AU654707B2 (en) 1994-11-17
JPH05505693A (ja) 1993-08-19
US5636366A (en) 1997-06-03
WO1992015946A1 (en) 1992-09-17
EP0537309B1 (en) 1999-06-02
IE920739A1 (en) 1992-09-09

Similar Documents

Publication Publication Date Title
JPH0638234B2 (ja) 変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法
JP3120152B2 (ja) コンピューターシステム
JP2786574B2 (ja) コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US5307504A (en) System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
JP3093624B2 (ja) 投機例外を処理する方法及び装置
US5901308A (en) Software mechanism for reducing exceptions generated by speculatively scheduled instructions
US5692169A (en) Method and system for deferring exceptions generated during speculative execution
US7337439B1 (en) Method for increasing the speed of speculative execution
JP3753743B2 (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
US6634023B1 (en) Compile method, exception handling method and computer
US7428727B2 (en) Debugging techniques in a multithreaded environment
JP2008546086A (ja) 共有リソースのためのアクセス協調を伴うプログラムコードを変換する方法および装置
US8990786B2 (en) Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture
US20020199179A1 (en) Method and apparatus for compiler-generated triggering of auxiliary codes
JP2001519956A (ja) アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ
JPH05143332A (ja) 命令スケジユーラを備えたコンピユータ・システム及び入力命令シーケンスを再スケジユールする方法
KR100931460B1 (ko) 단일 스레드 응용을 지원하기 위한 시간-멀티플렉스된스펙큘레이티브 멀티 스레딩
JP2001519953A (ja) マイクロプロセッサの改良
US7730463B2 (en) Efficient generation of SIMD code in presence of multi-threading and other false sharing conditions and in machines having memory protection support
CN111133418A (zh) 在例外屏蔽更新指令之后允许未中止的事务处理
JP2001519955A (ja) 先進のプロセッサのための変換メモリ保護装置
JPH04266125A (ja) ディジタルコンピュータの操作方法
US7890740B2 (en) Processor comprising a first and a second mode of operation and method of operating the same
JPH06290057A (ja) ループ最適化方法
JPH04365133A (ja) プレロード命令実行装置及びプログラム修正装置