JP2010182331A - マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法 - Google Patents

マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法 Download PDF

Info

Publication number
JP2010182331A
JP2010182331A JP2010087222A JP2010087222A JP2010182331A JP 2010182331 A JP2010182331 A JP 2010182331A JP 2010087222 A JP2010087222 A JP 2010087222A JP 2010087222 A JP2010087222 A JP 2010087222A JP 2010182331 A JP2010182331 A JP 2010182331A
Authority
JP
Japan
Prior art keywords
mob
memory
item
shared
store
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
JP2010087222A
Other languages
English (en)
Other versions
JP5116794B2 (ja
Inventor
Ravi Nair
ラヴィ・ナイア
John Kevin Obrien
ジョン・ケヴィン・オブライエン
Kathryn Mary O'brien
キャスリン・メアリー・オブライエン
Peter Howland Oden
ピーター・ハウランド・オーデン
Daniel Arthur Prener
ダニエル・アーサー・プレナー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010182331A publication Critical patent/JP2010182331A/ja
Application granted granted Critical
Publication of JP5116794B2 publication Critical patent/JP5116794B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】 ホスト・マルチプロセッシング・システムが緩やかな整合性モデルをサポートし、ターゲット・マルチプロセッシング・システムが強い整合性モデルを指定するときに、あるマルチプロセッシング・システムのメモリ整合性挙動を他のマルチプロセッシング・システム上で効果的にエミュレートするための方法および構造を提供すること。
【解決手段】 マルチプロセッサ・システムにおけるエミュレーションの方法(およびシステム)は、マルチプロセッサ・システムのホスト・マルチプロセッシング・システムが弱い整合性モデルをサポートし、マルチプロセッサ・システムのターゲット・マルチプロセッシング・システムが強い整合性モデルをサポートするエミュレーションを実行するステップを含む。
【選択図】 図8

Description

本発明は、一般に、コンピュータ・システムに関し、より具体的には、本質的に異なるメモリ共用挙動を備えた他のマルチプロセッシング・コンピューティング・システム上で、あるマルチプロセッシング・コンピューティング・システムのメモリ共用挙動をエミュレートするための方法に関する。
エミュレーションの主な動機付けは、特定のアーキテクチャ用に作成されたシステムが最小限のパフォーマンス損失で他のアーキテクチャ上で実行できるようにすることである。その場合、明らかに、エミュレーション・プロセスの効率と、結果として得られる「ホスト」コード・シーケンスの品質は、最も重要なものである。
通常、コンピューティング・システムは、プロセッサと、メモリと、入出力装置とを含む、いくつかの部分を含んでいる。あるコンピューティング・システムの挙動を他のコンピューティング・システム上でエミュレートすることが必要である場合が多い。エミュレーションの主な理由の1つは、あるシステム(たとえば、「ターゲット・コンピューティング・システム」)用に作成されたプログラムが他のシステム(たとえば、「ホスト・コンピューティング・システム」)上で実行して同じ結果が得られるようにすることである。
他のプロセッサの命令セットを使用して、あるプロセッサの命令セットをエミュレートするために、いくつかの従来技法が開発されている(たとえば、1998年2月発表のStephen A. Herrodの「Using CompleteMachine Simulation to Understand Computer System Behavior」というスタンフォード大学博士論文により開示されたSIMOS、または1987年10月4〜8日にオーランドで開催されたObject Oriented Programming Systems Languages and ApplicationsConference (OOPSLA)の会議録ならびにSpecialIssue of Sigplan Notices, vol. 22, No. 12, Dec. 1987, vol. 22, No. 7, Jun. 24におけるCathy Mayによる「Mimic: A Fast System/370 Simulator」という論文に開示されているMIMIC)。
エミュレーションを忠実に実行するためには、このようなシステム内のメモリの挙動をエミュレートすることも必要である。通常、この挙動には、プログラム指定アドレスによるメモリ内の位置の読取りおよび書込み以上のものが含まれる。
より具体的には、ある位置の内容がマルチプロセッシング・システム内の1つのプロセッサによって変更された場合、その変更をシステム内のすべてのプロセッサが監視しなければならない時期を左右する規則は、そのアーキテクチャで明確になっている。この点については、現在のほとんどのシステムは、システム内に1つのプロセッサしか存在しない場合にほぼ同様に動作する。すなわち、これらのシステムはプログラム・オーダを執行す
るが、これは単に、ステートメントS1がプログラム内に提示された命令シーケンス内の他のステートメントS2より先行する場合に、プロセッサはS2がその実行を開始する前にS1がその実行を完了したかのように動作しなければならないことを意味するだけである。これは、レジスタおよびメモリを含む、いずれかのリソースに対してS1が行った変更をS2が把握していなければならないことを暗示する。
したがって、前述のSimOSおよびSimICS技法のように、ユニプロセッシング・システム上でマルチプロセッシング・システムをエミュレートする場合であって、ターゲット・システムとホスト・システムの両方がプログラム・オーダに従う場合、エミュレーション中のメモリ・アクセスは一連のエポック101と見なすことができ、各エポック101は図1に示すようにターゲット・システム内の1つのプロセッサを表す。すなわち、そのエリア内の番号はエミュレートしたプロセッサのIDを示し、網掛けエリア100はそのシステムが他の機能を実行していることを示す。
あるエポック101中に2つ以上のプロセッサのエミュレートしたメモリ・アクセス間には同時対話がまったく存在しないので、ホスト・プロセッサ上でターゲット・プロセッサの正確なユニプロセッサ・エミュレーションを実行するだけで、プログラム・オーダを保証することができる。
このため、図1では、単一プロセッサ上で複数プロセッサをエミュレートしようと試みると、それぞれ異なる時期に異なるマルチプロセッサのインタリーブが行われる。したがって、プロセッサ1は所与の時期にエミュレートされ、次にプロセッサ2はしばらくの間エミュレートされ、次にエミュレーションは一時、プロセッサ1のエミュレーションに戻り、次にいかなるエミュレーションも行われないが、単一プロセッサが他の機能を実行している時期(たとえば、網掛けエリア100)が存在する。したがって、所与の時期の単一プロセッサは、すべてのプロセッサについてではなく、マルチプロセッサのプロセッサのうちの1つのみについてエミュレーションを実行している。
上記のインタリーブ動作はきわめて効率が悪い。しかし、あるプロセッサの「クリティカル・セクション」を他のプロセッサのクリティカル・セクションとインタリーブすることが不可能であるという長所がある。すなわち、「クリティカル・セクション」は、2つのプロセッサが同時に入ることができないセクションである。
ユニプロセッサ上では、エミュレーションを実行しているときに大したことを(たとえば、特殊なことは何も)実行する必要はない。というのは、クリティカル・セクションには2つのプロセッサが同時に入ることがないからである。ある意味で、ユニプロセッサは、クリティカル・セクションには2つのプロセッサが同時に入ることがないという条件を自動的に満足している。同じように、マルチプロセッシング・システム上で全プロセッサをエミュレートしようとする場合、状況は劇的に変化する。すなわち、問題が発生する可能性がある。
たとえば、図2は、プロセッサ201と202との共用の一例が含まれるデッカー・アルゴリズムのアプリケーションを示している。図2の例では、2つのプロセッサ201、202がクリティカル・セクションにアクセスしようと試みている。この場合も、ユニプロセッサでは、クリティカル・セクション(たとえば、ある時期に1つのプロセッサのみが入ることができるセクション)のアクセスは問題にならない(たとえば、ユニプロセッサによって自動的に克服される)。というのは、図1に示すエポックの使用により、ユニプロセッサ動作は順次動作になるからである。
このため、デッカー・アルゴリズムを使用するプログラムを実現し、それをマルチプロセッシング・マシン上で実行し、ユニプロセッサ上でエミュレーションを実行している場合、何も問題は発生しないだろう。しかし、デッカー・アルゴリズムを使用する同じプログラムをターゲット・マシン上で実行し、マルチプロセッシング・システムによってそのターゲット・マシンをエミュレートしている場合、問題が発生するだろう。デッカー・ア
ルゴリズムは、ターゲット・プロセッサ201、202としてのプロセッサ201、202上で実行しているものと見なさなければならない。
具体的には、第1のプロセッサ201は変数xを設定し、もう一方のプロセッサ202がクリティカル・セクションに入る前にそれ自身の変数yを設定していないことを保証する。第2のプロセッサ202はyを設定し、クリティカル・セクションに移る前にxが設定されないことを保証する。ユニプロセッサ上でエミュレートしているときにアプリケーション全体が完了できるようにする方法がいくつかあるが、そのうちの2つを図3に示す。上記の通り、その時期にP2がエミュレートされるエポック変化まで、P1用のオーダ1が実行される。したがって、図3の2プロセッサ・オーダでは、エポック変化が発生すると、必ずエミュレーションがもう一方のプロセッサにスイッチするので、一方のプロセッサ(たとえば、P1)がクリティカル・セクション内にあるときに、もう一方のプロセッサ(P2)がクリティカル・セクションに入れないことは明白である。
しかし、一方のプロセッサのクリティカル・セクションを第2のプロセッサのクリティカル・セクションとインタリーブすることは不可能である。というのは、これは、ホスト・プロセッサがある時期に(x=1;y=0)を確認し、他の時期に(x=0;y=1)を確認し、その間に書込みが行われていないことを暗示すると思われるからである。
図4は、図2の方法/デッカー・アルゴリズムの間違った挙動に至る可能性のある状況を示している。図4のシステム400は、共用メモリ410と、第1および第2のプロセッサ430A、430B用にそれぞれ設けられたキャッシュ420A、420Bとを含む。このため、図4の状況では、両方のプロセッサが同じ時期にクリティカル・セクション内で実行することができ、それにより問題を引き起こす。
すなわち、ターゲット・システムは、(たとえば、メモリへのストア後、他のプロセッサから肯定応答を受け取るまで待つことにより)この状況が決して発生しないことを保証する整合性モデルを有するものと想定する。このようなシステムの例としては、IBMシステム/390(商標)およびインテルx86(商標)を含む。
また、ホスト・システムは、その実現を比較的高速にしようとして、より緩やかな整合性モデルを有し、メモリへの書込みのアトミック記録を保証しないものと想定する。したがって、このようなホスト・システムによって上記の例をエミュレートすると、その結果、間違った挙動になる可能性がある。
PowerPC(商標)のように、このように緩やかな整合性モデルを有するシステムは常に、その後の命令の結果を確認する前にその命令より前のメモリ・アクションの結果がすべてのプロセッサによって確認されていることを保証する、特殊な同期化命令またはメモリ・バリア命令を提供する。
したがって、シミュレーションが正しく行われることを保証するための方法の1つは、すべてのメモリ命令の後にメモリ・バリア命令を続けることである。残念ながら、このような命令は完了するのにいくつかのサイクルを要する。しかも、メモリ命令(たとえば、メモリからのロードとメモリへのストア)はきわめて頻発するものである(たとえば、すべての命令の1/3程度の頻度)。
したがって、上記の問題の解決策を見つけることが望ましいことになる。さらに、特にターゲット・マルチプロセッシング・システム(より厳しいかまたは「強い」)に比べ、ホスト・マルチプロセッシング・システムの方が「より弱い」(より緩やかな)整合性モデルをサポートするときに、あるマルチプロセッシング・システムのメモリ整合性挙動を他のマルチプロセッシング・システム上でエミュレートする際のコストを最小限にすることが望ましいことになる。「より弱い」(または「緩やかな」)および「強い」という用語は、当業者には周知のものと思われることに留意されたい(たとえば、1996年12月発行のIEEE Computer, vol. 29, no. 12の66〜76ページに掲載されたSarita Adve他の「Shared MemoryConsistency Models: A Tutorial」という論文および1979年9月発行のIEEE Transactions on Computers, C-28, 9の690〜691ページに掲載されたL. Lamportの「How to Make a Multiprocessor Computer ThatCorrectly Executes Multiprocess Programs」という論文を参照されたい)。
したがって、従来のエミュレーション方法および技法では、様々なレベルの変換を使用して、エミュレータが生成するホスト命令のパフォーマンスを強化することができる。しかし、すべての現行技法にもかかわらず、改善の余地はたくさん残っている。
このため、本発明以前の従来の技法では、特にホストが前述の緩やかな整合性モデルをサポートし、ターゲット・システムが強い整合性モデルを使用するときに、あるシステムのメモリ整合性を他のシステム上でエミュレートするための方法および装置はまったく存在していない。
1998年2月発表のStephenA. Herrodの「Using Complete MachineSimulation to Understand Computer System Behavior」というスタンフォード大学博士論文 1987年10月4〜8日にオーランドで開催されたObject Oriented Programming Systems Languages and ApplicationsConference (OOPSLA)の会議録ならびにSpecialIssue of Sigplan Notices, vol. 22, No. 12, Dec. 1987, vol.22, No. 7, Jun. 24におけるCathy Mayによる「Mimic: A Fast System/370 Simulator」という論文 1996年12月発行のIEEEComputer, vol. 29, no. 12の66〜76ページに掲載されたSaritaAdve他の「Shared MemoryConsistency Models: A Tutorial」という論文 1979年9月発行のIEEETransactions on Computers, C-28, 9の690〜691ページに掲載されたL. Lamportの「How to Make aMultiprocessor Computer That Correctly Executes Multiprocess Programs」という論文
米国特許第6031992号
従来の方法および構造の上記その他の問題、欠点、短所を考慮して、本発明の一目的は、ホスト・マルチプロセッシング・システムが緩やかな整合性モデルをサポートし、ターゲット・マルチプロセッシング・システムが強い整合性モデルを指定するときに、あるマルチプロセッシング・システムのメモリ整合性挙動を他のマルチプロセッシング・システム上で効果的にエミュレートするための方法および構造を提供することにある。
本発明の第1の態様では、マルチプロセッサ・システムにおけるエミュレーションの方法(およびシステム)は、マルチプロセッサ・システムのホスト・マルチプロセッシング・システムが弱い整合性モデルをサポートし、マルチプロセッサ・システムのターゲット・マルチプロセッシング・システムが強い整合性モデルをサポートするエミュレーションを実行するステップを含む。
本発明の第2の態様では、ターゲット・マルチプロセッサ・コンピューティング・システムの挙動をエミュレートするためのエミュレータを含むマルチプロセッサ・コンピューティング・システムにおいて、ターゲット・マルチプロセッサ・コンピューティング・システムのメモリ整合性挙動をエミュレートするための方法は、メモリ・アクションの前にメモリ・バリア命令を実行するステップであって、メモリ・バリア命令の実行前に実行されたメモリ・アクションの結果がホスト・コンピューティング・システム内のすべてのプロセッサによって入手されていることをそのメモリ・バリア命令が保証するステップを含み、前記マルチプロセッサ・コンピューティング・システムのホスト・コンピューティング・システムが弱い整合性モデルをサポートし、マルチプロセッサ・システムのターゲット・マルチプロセッシング・システムが強い整合性モデルをサポートする。
本発明の第3の態様では、マルチプロセッサ・メモリ整合性の効率のよいエミュレーションの方法(およびシステム)は、メモリ・バリア命令の実行前に実行されたメモリ・アクションがホスト・コンピューティング・システム内のすべてのプロセッサによって登録されていることを保証するメモリ・バリア命令を形成するステップを含み、ホスト・マルチプロセッシング・システムが緩やかな整合性モデルをサポートし、ターゲット・マルチプロセッシング・システムが強い整合性モデルを指定する。
本発明の第4の態様では、マルチプロセッシング・システムにおけるメモリ整合性を保証する方法(およびシステム)は、命令がロードまたはストアであるかどうかを判定するステップと、その命令がロードまたはストアであると判定された場合に、その命令のアドレスを解明し、そのアドレスがローカル・ルックアサイド・バッファ(LLB)に記憶されているかどうかを判定するステップと、そのアドレスがLLB内にある場合に、その位置が共用読取り状態になっているかどうかを判定するステップと、その位置が共用読取り状態になっていると判定された場合に、現行アドレスが書込みであるかどうかを判定するステップと、現行アドレスが書込みではない場合に、その命令のエミュレーションを実行するステップとを含む。
本発明の第5の態様では、マルチプロセッサ・システムにおいて複数命令のグループ内の整合性を維持するためのコードを挿入する方法(およびシステム)は、命令がロードまたはストアであるかどうかを判定するステップと、その命令がロードまたはストアであると判定された場合に、そのアドレスを解明し、そのアドレスがローカル・ルックアサイド・バッファ(LLB)内にあるどうかを判定するステップと、そのアドレスがLLB内にある場合に、その位置が共用読取り状態になっているかどうかを判定するステップと、その位置が共用読取り状態になっていると判定された場合に、現行アクセスが書込みであるかどうかを判定するステップと、現行アクセスが書込みであると判定された場合に、その位置を共用書込みに設定し、現行アクセスがロード命令であるかどうかを判定するステップと、現行アクセスがロードであると判定された場合に、ロードを実行し、そのロードがメモリ・オーダ・バッファ(MOB)テーブルにより満足されたかどうかを判定するステップと、そのロードがMOBテーブルにより満足されていない場合に、メモリ順序番号で索引が付けられたMOBテーブルに対応する項目を挿入するステップとを含む。
本発明の第6の態様では、複数命令のグループ実行の終了時に共用書込みをメモリにコミットする方法(およびシステム)は、変換の終了時に、あるブロックがアクセスした「共用書込み」位置への値を他のどのプロセッサも変更していないことをチェックして保証するスタブ・コードを追加するステップを含む。
本発明の第7の態様では、共用マルチプロセッサ・システム用の記憶域参照テーブル(SRT)は、構築され、ストア参照の数と同数の項目を含むテーブルを含み、各項目が、アドレス・フィールドと、回復のために元の値を記憶するための旧値フィールドとを含む複数のフィールドを含み、そのテーブルが全項目の共用書込み状況に関する情報を記憶する。
本発明の第8の態様では、共用マルチプロセッサ・システム用のメモリ・オーダ・バッファ(MOB)は、現在参照中の位置に関する情報を共有することにより維持されるテーブルを含み、その情報が、ある項目の特定の状態が共用書込み状態を具備するかどうかを区別する情報を含む。
本発明の第9の態様では、マルチプロセッサ・システムにおけるエミュレーションのためのシステムは、マルチプロセッサ・システムのホスト・マルチプロセッシング・システムが弱い整合性モデルをサポートし、マルチプロセッサ・システムのターゲット・マルチプロセッシング・システムが強い整合性モデルをサポートするエミュレーションを実行するためのエミュレータを含む。
本発明の第10の態様では、マルチプロセッサ・システムにおけるエミュレーションの方法を実行するためにディジタル処理装置により実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体が提供され、その方法は、マルチプロセッサ・システムのホスト・マルチプロセッシング・システムが弱い整合性モデルをサポートし、マルチプロセッサ・システムのターゲット・マルチプロセッシング・システムが強い整合性モデルをサポートするエミュレーションを実行するステップを含む。
本発明の固有かつ自明ではない諸態様により、マルチプロセッシング・システム上でエミュレートされる複数のプロセッサによりクリティカル・セクションのエミュレーションを効率よく実行することができる。すなわち、本発明は、種々のプロセッサについて同時にクリティカル・セクションをエミュレートしているときに、このようなクリティカル・セクションに入るプロセッサをエミュレートすることを対象とする。この場合も、これまでは、エミュレーションが伝統的にユニプロセッサ上で実行されていたので、このような問題は検出されていなかった。この点については、本発明者らは、このような問題を認識し、固有かつ自明ではない解決策を考案した最初の者である。
前述のメモリ整合性を保証するために、第1の実施形態では、本発明は、メモリ・バリア命令の実行前に実行されたメモリ・アクションがホスト内のすべてのプロセッサによってアクセス(たとえば、登録)されていることを保証するメモリ・バリア命令を提供する。プロセッサにはこのようなメモリ・アクション/動作を登録する機会があったので、これにより、メモリ整合性の達成が保証される。
本発明は「共用書込み」状態に最も関係するものであることに留意されたい。
上記その他の目的、態様、および長所は、添付図面に関連して以下に示す本発明の好ましい実施形態の詳細な説明からより十分に理解されるだろう。
マルチプロセッサ・システムのユニプロセッサ・エミュレーションにおけるエポック101を示す図である。 第1および第2のプロセッサ201、202により実行されるプログラムで実現されたデッカー・アルゴリズムの一例を示す図である。 図2のプログラムに関しユニプロセッサ上のエミュレーションの2つのサンプル・オーダの一例を示す図である。 図2のアルゴリズムの間違った挙動に至る可能性がある、システム400内の状況を示す図である。 グローバル・ページ・テーブル項目500内の読取り/書込みマスク・フィールド570を示す図である。 あるページの共用状況を決定するための手順600を示す図である。 あるページの共用メモリ状態間の遷移を示す部分状態マシン700を示す図である。 メモリ・バリア命令の挿入プロセス800を示す図である。 メモリ・オーダ・バッファ(MOB)900を示す図である。 図9のメモリ・オーダ・バッファ900への共用メモリ・アクセスのマッピング1000を示す図である。 回復のために記憶域参照テーブル(SRT)1110へのストアを保管するプロセス1100を示す図である。 MOB900およびSRT1110を使用して複数命令のグループ内で整合性を維持するためのコードの挿入のプロセス1200を示す図である。 グループ実行の終了時に共用書込みをメモリにコミットするためのプロセス1300を示す図である。 そこに本発明を取り入れるための例示的なハードウェア/情報処理システム1400を示す図である。 本発明による方法のプログラムの諸ステップを記憶するための信号運搬媒体1500(たとえば、記憶媒体)を示す図である。
次に、添付図面、より具体的には図5〜15を参照すると、本発明による方法および構造の好ましい実施形態が示されている。
この説明のため、ターゲット・マルチプロセッシング・システムは順次整合性をサポートするものと想定する。これは、ほとんどの既知のシステムがサポートする整合性より強い形式の整合性である。順次整合性はLamportによって定義され(1979年9月発行のIEEE Transactions on Computers, C-28, 9の690〜691ページに掲載されたL. Lamportの「How to Make a Multiprocessor Computer ThatCorrectly Executes Multiprocess Programs」という論文)、どの実行の結果もすべてのプロセッサの動作が何らかの順番で実行された場合と同じになり、各個別プロセッサの動作がそのプログラムによって指定された順序で現れることを暗示する。
また、ホスト・マルチプロセッシング・システムは弱い整合性(Adve他による前述の論文に定義されたRCsc)をサポートするが、メモリ・コヒーレンス(たとえば、メモリ・コヒーレンスは、単一位置に対して行った変更の順序が、どのプロセッサから見ても同じになることを暗示する)を備えているものと想定する。
そのうえ、バリア後のすべてのメモリ動作が、すべてのプロセッサによって確認(たとえば、登録)されたバリア前のすべてのメモリ動作の後で実行されることを保証する働きをする、メモリ・バリア命令mbarの存在が想定されている。
順次整合性は、メモリにアクセスするすべての命令の後にmbar命令を続けることにより保証することができる。前述の通り、同期化命令は通常、複数サイクルを要するので、可能であれば、回避しなければならない。
第1の所見は、すべてのメモリ位置がプロセッサ間で共用されているわけではないことである。したがって、所与の位置が共用されているかどうかを確実に判定できる場合、順次整合性を維持するコストは大幅に削減されるだろう。
あるシステムのキャッシュ付きエミュレーションの場合、変換中の共用挙動を学習しても十分ではない。というのは、(a)命令が参照するアドレスが変換を実行するたびに変化する可能性があり、(b)実行の進行中にアドレスによってその共用状況が変化する可能性があるからである。その位置の共用性を動的に決定するメカニズムについて、以下に説明する。
好ましくは、現在参照中の位置に関する情報を共有することにより、テーブルが維持される。テーブルのサイズを縮小するため、位置はまとめてグループ化される。おそらくより小さい他の単位を定義することができるが、便利なグループ化の1つはページ単位である。ページ単位が便利である理由は、IBMの整理番号YOR920010535US1を有し、参照により本明細書に組み込まれる米国特許出願第10/244,559号に記載されているようなページ・テーブルおよびローカル・ルックアサイド・バッファ(LLB)内の保護およびマッピング情報の単位でもあるからである。各ページは以下にリストした5通りの状態の1つになる。
1.マッピングなし
2.排他読取り
3.排他書込み
4.共用読取り
5.共用書込み
あるページをページ・テーブルに取り込む前またはそれをページ・テーブルから排出した後、そのページは「マッピングなし」状態になる。あるプロセッサが読取りまたは書込みのためにそのページを要求すると、そのページは取り込まれる。したがって、そのページは、「排他読取り」または「排他書込み」のいずれかとしてページ・テーブル内に現れる。
各ページ・テーブル項目には、IBMの整理番号YOR920010535US1を有し、参照により本明細書に組み込まれる前述の米国特許出願第10/244,559号に記載されているようなローカル・ルックアサイド・バッファ(LLB)にそのページがリストされているプロセッサのリストが関連付けられている。
この情報はルックアサイド・マスク・フィールド内にあり、たとえば、そのフィールドの5桁目にある1は、第5のプロセッサがそのLLBのこのページを持っていることを示している。この記述は、図5のテーブル500に示すように、あるプロセッサが読取りモードまたは書込みモードのいずれでそのページにアクセスしているかに関する情報を含むように変更される。
テーブル500は、妥当性/状況ビット・フィールド510と、プロセスIDフィールド520と、仮想アドレス・フィールド530と、実アドレス・フィールド540と、保護ビット・フィールド550と、ルックアサイド・マスク・フィールド560と、読取り/書込みマスク・フィールド570と、アクセス・モード・フィールド580とを含む。
その後、あるプロセッサが、そのLLBにはないが、ページ・テーブル500にマッピングされているページへのアクセスを希望する場合、そのプロセッサはこのリスト(たとえば、プロセスIDフィールド520)に追加され、そのアクセス・モード(たとえば、フィールド580)が指定される。
この時点で、そのページの状態は、そのページにアクセスしているすべてのプロセッサが読取りモードのみでそれにアクセスできる場合は「共用読取り」に変更される。1つのプロセッサでもそのページに書込みアクセスできる場合は、そのページは「共用書込み」モードに設定される。この手順については図6の流れ図で説明する。
したがって、前述の通り、「共用書込み」状態を有するページが、本発明が考慮しなければならない主な焦点になる理由が示唆される。
さらに、前述の通り、ターゲット・システムが「順次整合性」(「強い」)をサポートし、ホストが「弱い」整合性をサポートすることなど、本発明によって所与の例示的な想定がなされている。
しかし、これは例示的なものにすぎず、間違いなく本発明はこれに限定されない。実際は、本発明は「強い」整合性と「弱い」整合性の数通りの組合せおよび順列をサポートすることに留意されたい。しかし、本発明者らは「弱」に「強」のシナリオが最も困難なケースであると認識しており、したがって、本明細書では主にこれについて述べる。その他のケース(たとえば、「強」に「強」、「弱」に「弱」、「強」に「弱」など)も同様に機能するが、より容易に機能する。
すなわち、「弱い」整合性をサポートするシステム上で「強い」整合性を有するシステムをエミュレートしようとすることは、最も困難なエミュレーション・ケースである。それが最も困難なケースである理由を示す極度に単純化した例を挙げるため、色々な人が書込みを行う黒板について検討する。「強い」整合性のケースでは、ある人が読取りを行う場合、その人は、他のすべての人がすでに書き込んだものをすべて見ることができなければならない。同様に、他の人が書込みを行う場合、その人は、書込みを始める前に他のすべての人が書込みを終了したことを確認する。これは、黒板への読取りおよび書込みの際に強いオーダが維持される「強い」整合性と呼ばれる。
「弱い」整合性(または「解放」整合性)のケースでは、それぞれの人は自分がそれを行いたいと希望するときに、いつでも書込みおよび読取りを行うことができる。この点については、その人は、自分がそれを変更する前に他の人がすでに読取り(または書込み)を行ったことを確認する必要はない。このようなケースでは、その人がそれを読み取る必要がある場合、他の人がもう一度その書戻し(たとえば、書き込まれたものの変更)を開
始する前にすでにその人がそれを読み取ったことを確認するのは、何らかの「教師」(たとえば、このケースでは何らかのプログラム)の責任である。人々は読取りと書込みを続けるので、これはより混沌とした状況になる。多くの従来のプロセッサは現在、このような「弱い」整合性モデルを使用している。というのは、それによって、プロセッサは共用する場合よりかなり高速になるからである。したがって、パフォーマンスの観点から見ると、「弱い」整合性モデルは、共用があまり行われないときには、より優れたモデルになる。
このため、いくつかの新型マシンでは、このようなモデルと動作モードを実現している。対照的に、より古い従来のマシンでは、動作が順次(ステップバイステップ式)である強い整合性を実現している。
したがって、予想されるように、非常に秩序ある動作モード(「強」)を取って、それを比較的無秩序の動作(たとえば、「弱」)に適用することは非常に困難なことである。対照的に、非常に無秩序の動作モード(「弱」)を取って、それを秩序ある動作(たとえば、「強」)に適用することは、単により多くの秩序をもたらすだけなので、より容易なことである。
したがって、「共用書込み」状態は最も重要なものである。あるページをシステムに取り込むと、システムは、そのページがどの状態を備えているかを決定することを希望する。そのページが「共用書込み」状態を備えている場合、テーブル500の読取り/書込みマスク・フィールド570に決定し示すように、このような状態にフラグを立てる。すなわち、読取り/書込みマスクにより、そのページが「共用書込み」であるかどうかを識別することができる。アクセス・モード・フィールド580は、図5のテーブル500に実際に存在するフィールドではないことに留意されたい。これは、読者が明快に理解できるようにするためにのみ示されており、単にルックアサイド・マスク560と読取り/書込みマスク570の組合せを調べることにより共用書込み状態を決定できることを記述しているだけである。
このため、図6に戻ると、方法600は、あるページの共用状況を決定するための手順を対象とする。すなわち、図6は、本質的にルックアサイド・マスクと読取り/書込みマスクを調べ、ビット位置などを決定して状態を入手することにより、テーブル500内の最後の列(たとえば、フィールド580)を決定するための技法を示している。
より具体的には、ステップ610で、ルックアサイド・マスクに複数のビットが設定されているかどうかを判定する。
ステップ610でルックアサイド・マスクに複数のビットが設定されていると判定された場合(たとえば、「YES」)、ステップ620で、読取り/書込みマスクに何らかのビットが設定されているかどうかを判定する。
ステップ620で読取り/書込みマスクにビット(複数も可)が設定されていると判定された場合(たとえば、「YES」)、ステップ630で、その状況を「共用書込み」に設定する。
ステップ620で読取り/書込みマスクにいずれのビット(複数も可)も設定されていないと判定された場合(たとえば、「NO」)、ステップ640で、その状況を「共用読取り」に設定する。
ステップ610でルックアサイド・マスクに複数のビットが設定されていないと判定された場合(たとえば、「NO」)、ステップ650で、読取り/書込みマスクに何らかのビットが設定されているかどうかを判定する。
ステップ650で読取り/書込みマスクにビット(複数も可)が設定されていると判定された場合(たとえば、「YES」)、ステップ660で、その状況を「排他書込み」に設定する。
ステップ650で読取り/書込みマスクにいずれのビット(複数も可)も設定されていないと判定された場合(たとえば、「NO」)、ステップ670で、その状況を「排他読取り」に設定する。次に、プロセスが終了する。
あるページの様々な共用メモリ状態間で起こり得る遷移を図7の部分状態マシン700に示す。様々なメモリ状態としては、「マッピングなし」710と、「排他読取り」720と、「排他書込み」730と、「共用読取り」740と、「共用書込み」750を含む。図7の「LR」はローカル読取りであり、「LW」はローカル書込みであり、「RR」はリモート読取りであり、「RW」はリモート書込みであり、「D」は何らかのLLBから脱落したページを示し、「PO」はページアウトされたページを示す。ページは、システムからページアウトされると、「マッピングなし」状態に戻ることができることに留意されたい。
「共用書込み」が最も関心のあることであっても、図7は、「共用書込み」状態に至る方法の1つとして、他の状態が必要であること(たとえば、注目すべき重要なこと)を示している。したがって、有限状態マシン700では、共用書込み状態に至るために、そのページが他の状態の1つになり、共用書込み状態への経路を示す場合もある。このため、このような他の状態についても、部分状態マシン700で注目する。
複数位置への書込みを行わない限り、記憶域の整合性の問題はまったく発生しない。すなわち、記憶域の整合性の問題は、複数の位置でその内容が変化する場合のみ発生する。所与の時点では、所与のターゲット・プロセッサの実行は正確に1つのホスト・プロセッサで行われるが、エミュレーションを実行するホスト・プロセッサそのものは、それぞれの時期にそれぞれ異なる可能性があるものと想定する。
たとえば、2つの個別プロセッサによって1つのターゲット命令の複数のオペランドを同時にフェッチすることは禁止される。また、一般的なマルチプログラム式システムの場合のように、暗黙的または明示的メモリ・バリアにはコンテキスト・スイッチが関連付けられているものと想定する。これにより、ある位置が共用されない限り、エミュレートされるターゲット・プロセッサのアクションがあるホスト・プロセッサから他のホスト・プロセッサに移行した場合でも、整合性の問題はまったく発生しないことが保証される。
上記の想定では、「共用書込み」状態になっているページに対して行われるアクセスのみに整合性の問題を限定する。したがって、すべてのこのようなアクセスの後にmbar命令を続けるだけで十分である。
命令を一度に1つずつエミュレートするときに順次整合性を保証するための手順を図8の流れ図に示す。
すなわち、図8は、メモリ整合性、より具体的には、メモリ・バリア命令(複数も可)の挿入を保証する方法800を示している。
まず、ステップ805では、その命令がロードまたはストアであるかどうかを判定する。メモリに影響する主な命令はロードとストアであるので、本発明は必ずしも他の命令に関連しない。
ステップ805でその命令がロードまたはストアではないと判定された場合(たとえば、「NO」)、プロセスはステップ840に移行し、そこで命令のエミュレーションを実行し、ステップ870でプロセスが完了する。
同じように、ステップ805でその命令がロードまたはストアであると判定された場合(たとえば、「YES」)、プロセスはステップ810に移行し、そこでアドレスを解明する。たとえば、ロード/ストア命令は通常、アドレスを作成するために、その命令によって指定された2つの数量を加算する必要がある。これらの数量がいずれも指定のレジスタ内に存在する場合もあれば、その数量の一方がその命令自体の1つのフィールドになっている場合もある。アドレスの解明とは、指定のレジスタがその内容の準備が整い、すでに加算が行われており、結果として得られる合計を実アドレスに変換するためにアドレス変換メカニズムが呼び出されたことを意味する。このため、「アドレスの解明」は、仮想アドレスを実アドレスに変換することになるだろう(たとえば、加算変位、仮想アドレス変換など)。
ステップ815では、そのアドレスがローカル・ルックアサイド・バッファ(LLB)内にあるかどうかを判定する。そのアドレスがLLB内にない場合(たとえば、「NO」)、ステップ820でLLBミスに関する手順(たとえば、グローバル・ページ・テーブルに移行することなど)を開始し、プロセスはステップ815にループバックする。
そのアドレスがLLB内にある場合(たとえば、「YES」)、ステップ825でその位置(たとえば、アドレス)が共用読取り状態になっているかどうかを判定する。
ステップ825でその位置(たとえば、アドレス)が共用読取り状態になっていると判定された場合(たとえば、「YES」)、プロセスはステップ830に進み、そこで現行アクセスが書込みであるかどうかを判定する。書込みではない場合(たとえば、「NO」)、ステップ840でその命令のエミュレーションを実行し、プロセスはステップ870で終了する。
ステップ830で現行アクセスが書込みであると判定された場合(たとえば、「YES」)、ステップ845でその位置を共用書込みに設定し、ステップ850でその命令のエミュレーションを実行し、ステップ860でmbar命令をそこに置く。次にプロセスはステップ870で終了する。
同じように、ステップ825でその位置(たとえば、アドレス)が共用読取り状態になっていないと判定された場合(たとえば、「NO」)、プロセスはステップ835に進み、そこでその位置(たとえば、現行アドレス)が共用書込みであるかどうかを判定する。
ステップ835でその位置(アドレス)が共用書込み状態であると判定された場合、プロセスはステップ850に進み、そこでその命令のエミュレーションを実行し、ステップ860でmbar命令をそこに置く。次にプロセスはステップ870で終了する。
したがって、ステップ830/835で、図8は本質的に、そのアドレスが共用書込みである可能性、またはそれがどこから来たかに応じて、その命令が共用書込みになる可能性の2通りを示している。この場合も、図7から明らかなように、共用書込みではない命令が、取られた経路に応じて、共用書込みになりうるケースがいくつかある。たとえば、「排他読取り」状態720は、図7に示すように、ローカル書込み(LW)またはリモート書込み(RW)を介して「共用書込み」750の状態に至る経路を有する。このため、共用書込み命令と、共用書込みになりうる命令(たとえば、書込み(ローカルまたはリモート)になる共用読取り740など)のために、mbar命令が必要になる。この場合も、共用読取り状態740では、LW,RWを発行後、mbarを挿入することになるだろう。共用書込みになるケースでは、同様にmbarのその他の挿入が実行されることになるだろう。
ターゲット・システム内の動作間でリオーダが許される(整合性の緩和)程度に応じて、さらにメモリ・バリア命令の数を削減することが可能になるだろう。
たとえば、システム/390では、単一命令の複数オペランドの読取り同士の順序付けを維持する必要はない。このため、システム/390のエミュレーションでは、このような読取り間に挿入されたmbarを排除することができ、それにより、第2の読取りの後にそれを保持することができる。
そのうえ、ある命令によって書き込まれる結果はその命令によって読み取られるオペランドに依存しているので、1つの390命令において複数オペランドの読取りとメモリへの結果の書込みとの間のmbarを排除することができ、書込みの後にそれを保持することができる。
上記の説明では、エミュレートしたメモリ参照のプログラム・オーダが、ターゲット・システムによって実行されたと思われるメモリ参照のプログラム・オーダと同一であると想定する。いくつかの既知の例(たとえば、参照により本明細書に組み込まれる米国特許
第6031992号を参照)に記述されているように、まとめて変換すべき複数命令のグループについて検討し、変換したグループについて最適化を実行することにより、エミュレーション・パフォーマンスを改善することが可能な場合が多い。
しかし、このような最適化では、そのグループについて好都合なスケジュールを見つけようとして、命令を移動し、それらをリオーダする傾向がある。エミュレートした参照のそれぞれの後にmbar命令を続ける場合でも、このようなリオーダは、マルチプロセッサ環境で実行したときに整合性の要件に違反する可能性がある。
図9を参照すると、本発明は、このようなリオーダが存在する場合でもエミュレーション中にメモリ動作で必要な整合性を維持するための方式を提供する。すなわち、図9は、複数の命令が1つずつ変換される図8の状況とは異なり、まとめて変換すべき複数命令のグループが存在する状況を対象とする。複数の命令をグループとしてまたは1つずつ変換できるような上記の状況の組合せが発生する可能性があることに留意されたい。このため、グループの状況では、複数参照の組合せが存在する可能性があり、そのうちの一部は共用書込みであり、一部は共用書込みではない。
簡単にするため、元の命令シーケンスは単一の入口と複数の出口を備えた複数命令の順次ストリームであり、各出口が変換済みシーケンスからの条件付き分岐に対応するものと想定する。
また、このシーケンス内の各命令はせいぜい1回実行される(すなわち、その変換内の他の命令にループバックする分岐はまったくない)ものと想定する。最後に、ターゲット命令セット内のメモリ参照はレジスタとメモリとの間のロードとストアのみであるものと想定する。(この最後の想定はいずれにしても限定的なものではない。というのは、より複雑なCISCスタイルの命令は、このようなロードおよびストア命令を含む、適切な命令シーケンスに分解できるからである。)
図9では、まず、変換の先頭にスタブ・コードを付加し、潜在的にグループ内の命令によって変更されるターゲット・プロセッサのすべてのレジスタを保管する。そのグループの推測変換を取り消す必要がある場合には、このチェックポイントは有利なものになる。
次に、その命令グループ内の各ロードと各ストアは、(a)一連のメモリ参照内のその位置を示すメモリ順序番号と、(b)一連のストア参照サブセット内のその位置を示すストア順序番号を含む、2つの数に関連付けられる。
次に、図9に示すように、メモリ・オーダ・バッファ(MOB)と呼ばれるテーブル900が構築され、その各項目は、それがロードであるかまたはストアであるかの表示910と、参照のアドレス920と、参照の長さ930と、参照に関連する値940(ロードの場合はロード値または仮定値、ストアの場合はメモリに記憶すべき値)とを含む、4つのフィールドを有する。したがって、テーブル900内のロード/ストアの数を調べると、参照のうちの3つは共用書込みであり、2つは共用書込みではない。
テーブル内の項目の数はシーケンス内のメモリ参照の数に等しい。図10は、ターゲット・コード1010と、エミュレーション・コード1020と、図9のテーブル900を示している。すなわち、メモリ参照の順序番号は、図10の構成1000に示されるようにテーブル900への索引である。このため、共用メモリ・アクセスは、図9のMOBにマッピングされる。
そのうえ、図11の構成1100に示すように、ストア参照の数と同数の項目を含むストア回復テーブル(SRT)1110が構築され、その各項目は、図11に示すようにアドレス・フィールドと旧値フィールドを含む2つのフィールドを含んでいる。したがって、図11では、ストアは回復のためにSRT1110に保管される。テーブル1110は、たとえば、問題が発生したときに有用である。
たとえば、他の人がすでに読み取ったものを誰かが書き込んで、すでに書き込まれているべきものが(「古い」ものではなく)「新しい」ものであるときに、問題が発生する可能性がある。その結果、すべての計算が間違ってしまう。このような場合、値を元に戻すことが役に立つだろう。しかも、一部の計算は実際にメモリに記憶されている可能性があり、これらの位置を前の値にリセットする(たとえば、それぞれの元の内容に戻す)ことが望ましい。このため、テーブル1110は問題を修正するためのアドレスと値を記憶するので、そのテーブルの使用は役に立つことである。
より具体的には、システムは問題を感知し、それが正しかった時期まで戻り、その値を復元しなければならない。ループバックし、ストアのそれぞれを一度に1つずつ経て(たとえば、好ましくは、最後のチェックポイントの後に最後のストアを先に実行する)、その位置と、旧値が何であったかを決定することにより、このような動作を実行する。次に、旧値をそこに挿入する。
それぞれのメモリ参照の変換時には、図12に示す形式を有するコードが含まれる。
すなわち、図12の方法1200では、MOB900とSRT1110を使用して複数命令のグループ内の整合性を維持するためにコードを挿入する。
具体的には、まず、ステップ1205で、その命令がロードまたはストアであるかどうかを判定する。この場合も、メモリに影響する主な命令はロードとストアであるので、本発明は必ずしも他の命令に関連しない。
ステップ1205でその命令がロードまたはストアではないと判定された場合(たとえば、「NO」)、プロセスはステップ1240に移行し、そこでその命令のエミュレーションを実行し、ステップ1290でプロセスが完了する。
同じように、ステップ1205でその命令がロードまたはストアであると判定された場合(たとえば、「YES」)、プロセスはステップ1210に移行し、そこでアドレスを解明する。このステップは、図8に関して前述したステップ810と同様のものである。
ステップ1215では、そのアドレスがローカル・ルックアサイド・バッファ(LLB)内にあるかどうかを判定する。そのアドレスがLLB内にない場合(たとえば、「NO」)、ステップ1220でLLBミスに関する手順(たとえば、グローバル・ページ・テーブルに移行することなど)を開始し、プロセスはステップ1215にループバックする。
そのアドレスがLLB内にある場合(たとえば、「YES」)、ステップ1225でその位置(たとえば、アドレス)が共用読取り状態になっているかどうかを判定する。
ステップ1225でその位置(たとえば、アドレス)が共用読取り状態になっていると判定された場合(たとえば、「YES」)、プロセスはステップ1230に進み、そこで現行アクセスが書込みであるかどうかを判定する。それが書込みではない場合(たとえば、「NO」)、ステップ1240でその命令のエミュレーションを実行し、プロセスはステップ1290で終了する。
ステップ1230で現行アクセスが書込みであると判定された場合(たとえば、「YES」)、ステップ1245でその位置を共用書込みに設定し、ステップ1250で現行アクセスがロード命令であるかどうかを判定する。
ステップ1250で現行アクセスがロードであると判定された場合(たとえば、「YES」)、ステップ1255でロードを実行し、そのロードがMOBにより満足されているかどうか(たとえば、そのロード/アドレスがそれ以前にMOB内に発生したか)を判定する。そのロードが満足されている場合、動作はステップ1270で終了する。
ステップ1255でそのロードがMOBにより満足されていない場合(たとえば、「NO」)、プロセスはステップ1260に進む。ステップ1260では、メモリ順序番号によって索引が付けられたMOBに項目を挿入し、プロセスはステップ1290で終了する。
ステップ1250で現行アクセスがロードではないと判定された場合(たとえば、「NO」)、ステップ1260でメモリ順序番号によって索引が付けられたMOBに項目を挿入し、プロセスはステップ1290で終了する。
同じように、ステップ1235に戻ると、その位置(アドレス)が共用書込み状態ではないと判定された場合(たとえば、「NO」)、プロセスはステップ1265に進み、そこでそのアクセスが書込みであるかどうかを判定する。
ステップ1265でそのアクセスが書込みではない場合(たとえば、「NO」)、プロセスはステップ1240に進み、そこでその命令のエミュレーションを実行し、ステップ1290でプロセスが終了する。
同じように、ステップ1265でアクセスが書込みであると判定された場合(たとえば、「YES」)、プロセスはステップ1270に進み、その時点でその位置の旧値を読み取る。次に、ステップ1275でストアを実行し、ステップ1280でストア順序番号によって索引が付けられたSRTにその旧値を挿入する。その後、ステップ1290でプロセスが終了する。
したがって、図12に示すように、このコードは、参照した位置に対応するページが「共用書込み」であるかどうかを判定し、そうである場合にスタブ・コードに分岐する。
このスタブ・コードは、メモリ参照の順序番号を使用してMOBに索引を付け、(a)それがロードまたはストアであるかどうかと、(b)参照のアドレスを記録する。参照がストアである場合、それは記憶すべき値も記録する。参照がロードである場合、それはロードを実行し、ロードした値を記録する。
特殊なケースとしては、変換時に前のストアのターゲットであった共用書込み位置へのロードがある。この場合、ロードはMOBからその内容を受け取らなければならず、ロード自体はMOBに記録されない。
参照が「共用書込み」位置に対するものではなく、それがストアである場合、ストアが実行される前に、その位置の旧値が読み取られ、SRTに記録される。
このスタブ・コードは最適化にかけられ、変換の残りとともにリオーダ可能であることに留意されたい。変換の終了時に、他のいかなるプロセッサもこのブロックがアクセスした「共用書込み」位置への値を変更していないことをチェックして保証するための他のスタブが追加される。
これは、まず他のプロセッサによるアクセスから共用メモリ位置をロックすることにより、図13に示すように行われる。各ロード位置は再ロードされ、対応するMOB項目内に記憶された値と比較される。すべての再ロードが元のロードと同じであると判明した場合、MOBからのすべてのストアをメモリ内のそれぞれの実際の位置にコミットしても差し支えない。
ロード妥当性検査プロセス中に不一致が発生した場合、そのグループの実行全体が取り消される。これは、すべてのレジスタをそれぞれの旧状態に復元し、SRT内の操作をアンドゥすることによって非「共用書込み」位置に対して行ったストアを逆転することにより実施される。システムが前に有効だった状態に戻ると、実行が再試行される。1つのグループ内での実行/取消しサイクルの繰返しを回避するため、解釈モードまたは単純変換モードのいずれかを使用して、一度に1つずつ、再実行を行うことができる。
このため、図13は計算の終了を示し、したがって、複数命令のグループをまとめて変換した後、すべての命令が実行された後であって、すべてをメモリに保管してしまう前に、計算を実行しながら、何も変化していないことを保証することが望ましい。すなわち、そのグループの実行中に他のプロセッサによって変更が行われた可能性があり、本発明では、このような変更が現在エミュレートしているプロセッサの値/命令に影響しないことを保証する必要がある。
したがって、グループ実行の終了時に共用書込みをメモリにコミットするための図13のプロセス1300をステップごとに調べると、まず、ステップ1305では、共用メモリ位置へのアクセスをロックする。
次にステップ1310ではMOB内の第1の項目にポインタを設定し、ステップ1315ではMOBの終わりに達したかどうかを判定する。ステップ1315の後のプロセスの左側はロードを対象とし、ステップ1315の後のプロセスの右側はストアを対象とすることに留意されたい。
ステップ1315で「NO」の場合、ステップ1320でMOB内のその項目が空であるかどうかを判定する。(ステップ1320で「YES」の場合、プロセスはステップ1340に移行する。)
次にステップ1325では、その項目がロードであるかどうかを判定する。ステップ1325で「NO」の場合、ステップ1340でMOBへのポインタを増分し、ステップ1315にループバックする。
同じように、ステップ1325でその項目がロードであると判定された場合(たとえば、「YES」)、ステップ1330でその項目内のアドレスからその項目を再ロードする。ステップ1335では、再ロードした値がその項目内の値と一致するかどうかを判定する。
ステップ1335で「YES」の場合、ステップ1340でMOBへのポインタを増分し、ステップ1315にループバックする。
ステップ1335で「NO」の場合、ステップ1345でロックを解除し、ステップ1350では、状態を復元し、SRTを使用して非共用書込みを復元することにより、そのグループの先頭まで回復を実行する。この時点で、エミュレートしたプログラム・カウンタがそのグループの先頭までリセットされ、実行のプロセスが再試行される。
同じように、ステップ1315で「YES」の場合、プロセスはステップ1355に移行し、そこでMOB内の第1の項目にポインタを設定する。ステップ1360では、MOBの終わりに達したかどうかを判定する。
「NO」の場合、ステップ1365でMOB内のその項目が空であるかどうかを判定する。(ステップ1365で「YES」の場合、プロセスはステップ1380に移行する。)
次にステップ1370では、MOB内のその項目がストアであるかどうかを判定する。その項目がストアである場合(たとえば、「YES」)、ステップ1375でその値をメモリに書き込み、ステップ1380でMOB内のポインタを増分し、プロセスはステップ1360にループバックする。
ステップ1370の結果が「NO」である場合、プロセスはステップ1380に進み、次にステップ1360にループバックする。ステップ1360で「YES」の場合、ステップ1385でロックを解除し、プロセスはステップ1390で完了する。
したがって、前述の通り、本発明は、複数命令を1つずつ通過するか、またはMOBとSRTを使用することによって命令グループを処理することができる。
図14は、本発明で使用するためのものであり、好ましくは少なくとも1つのプロセッサまたは中央演算処理装置(CPU)1411を有する情報処理/コンピュータ・システムの典型的なハードウェア構成を示している。
CPU1411は、システム・バス1412を介して、ランダム・アクセス・メモリ(RAM)1414、読取専用メモリ(ROM)1416、入出力(I/O)アダプタ1418(ディスク装置1421およびテープ・ドライブ1440などの周辺装置をバス1412に接続するためのもの)、ユーザ・インタフェース・アダプタ1422(キーボード1424、マウス1426、スピーカ1428、マイクロホン1432、またはその他のユーザ・インタフェース装置、あるいはそれらの組合せをバス1412に接続するためのもの)、情報処理システムをデータ処理ネットワーク、インターネット、イントラネット、パーソナル・エリア・ネットワーク(PAN)などに接続するための通信アダプタ1434、バス1412をディスプレイ装置1438またはプリンタ1439(たとえば、ディジタル・プリンタなど)あるいはその両方に接続するためのディスプレイ・アダプタ1436に相互接続されている。
上記のハードウェア/ソフトウェア環境に加え、本発明の他の態様では、上記の方法を実行するためのコンピュータ実現方法を含む。一例として、この方法は前述の特定の環境で実現することができる。
このような方法は、たとえば、ディジタル・データ処理装置によって実施されるように、一連の機械可読命令を実行するようにコンピュータを操作することにより実現することができる。このような命令は、様々なタイプの信号運搬媒体に存在することができる。
したがって、本発明のこの態様は、本発明の方法を実行するために、CPU1411および上記のハードウェアを取り入れたディジタル・データ・プロセッサにより実行可能な複数の機械可読命令からなるプログラムを具体的に実施する信号運搬媒体を含む、プログラムによる製品を対象とする。
この信号運搬媒体は、たとえば高速アクセス記憶装置によって代表されるように、たとえばCPU1411内に含まれるRAMを含むことができる。別法として、CPU1411によって直接または間接的にアクセス可能な磁気データ記憶ディスケット1500(図15)などの他の信号運搬媒体に命令を含めることもできる。
ディスケット1500に含まれるか、コンピュータ/CPU1411またはその他の場所に含まれるかにかかわらず、DASD記憶装置(たとえば、従来の「ハード・ドライブ」またはRAIDアレイ)、磁気テープ、電子読取専用メモリ(たとえば、ROM、EPROM、またはEEPROM)、光学記憶装置(たとえば、CD−ROM、WORM、DVD、ディジタル光学テープなど)、紙の「パンチ」カードなどの様々な機械可読データ記憶媒体、またはディジタルおよびアナログ通信リンクならびに無線などの伝送媒体を含むその他の適当な信号運搬媒体上に命令を記憶することができる。本発明の例証となる一実施形態では、機械可読命令は、「C」などの言語からコンパイルされたソフトウェア・オブジェクト・コードを含むことができる。
本発明の固有かつ自明ではない諸態様により、マルチプロセッシング・システム上でエミュレートされる複数のプロセッサによりクリティカル・セクションのエミュレーションを効率よく実行することができる。すなわち、本発明は、種々のプロセッサについて同時にクリティカル・セクションをエミュレートしているときに、このようなクリティカル・セクションに入るプロセッサをエミュレートすることができる。この場合も、これまでは、エミュレーションが伝統的にユニプロセッサ上で実行されていたので、このような問題は検出されていなかった。この点については、本発明者らは、このような問題を認識し、上記の固有かつ自明ではない解決策を考案した最初の者である。さらに、本発明は前述のメモリ整合性を保証することができる。
いくつかの好ましい実施形態に関して本発明を説明してきたが、当業者であれば、特許請求の範囲の精神および範囲内で変更を加えて本発明を実施できることが分かるだろう。
さらに、本出願人の意図は、権利請求中に後日補正された場合でも、すべての特許請求の範囲と同等のものを包含することであることに留意されたい。
201、430A プロセッサ1
202、430B プロセッサ2
1418 I/Oアダプタ
1422 ユーザ・インタフェース・アダプタ
1434 通信アダプタ
1436 ディスプレイ・アダプタ
1439 プリンタ

Claims (10)

  1. 複数命令のグループ実行の終了時に共用書込みをメモリにコミットする方法において、
    変換の終了時に、あるブロックがアクセスした「共用書込み」位置への値をマルチプロセッサ・システムの他のどのプロセッサも変更していないことをチェックして保証するスタブ・コードを追加するステップを具備する方法。
  2. 他のプロセッサによるアクセスから共用メモリ位置をロックするステップと、
    各ロード位置を再ロードし、対応するメモリ・オーダ・バッファ(MOB)項目内に記憶された値と比較するステップとをさらに具備し、
    すべての再ロードが元のロードと同じであると判明した場合に、前記MOBからのすべてのストアがメモリ内のそれぞれの実際の位置に対して行われる、請求項に記載の方法。
  3. ロード妥当性検査プロセス中に不一致が発生した場合に、すべてのレジスタをそれぞれの旧状態に復元し、ストア回復テーブル(SRT)内の操作をアンドゥすることによって非「共用書込み」位置に対して行った前記ストアを逆転することにより、前記グループの実行全体を取り消すステップをさらに具備する、請求項に記載の方法。
  4. 前記システムを前に有効だった状態に戻した後、実行を再試行するステップをさらに具備する、請求項に記載の方法。
  5. 共用メモリ位置へのアクセスをロックするステップと、
    メモリ・オーダ・バッファ(MOB)内の第1の項目にポインタを設定し、前記MOBの終わりに達したかどうかを判定するステップと、
    前記終わりに達していない場合に、前記MOB内のその項目が空であるかどうかを判定するステップと、
    前記項目がロードではないと判定された場合に、前記MOBへのポインタを増分するステップとをさらに具備する、請求項に記載の方法。
  6. 前記項目がロードであると判定された場合に、前記項目内のアドレスから前記項目を再ロードするステップと、
    再ロードした値が前記項目内の値と一致するかどうかを判定するステップと、
    前記値が一致した場合に、前記MOBへのポインタを増分するステップと、
    前記値が一致しない場合に、前記ロックを解除し、前記状態を復元し、ストア回復テーブル(SRT)を使用して非共用書込みを復元することにより、前記グループの先頭まで回復を実行するステップとをさらに具備する、請求項に記載の方法。
  7. 前記MOBの終わりに達している場合に、前記MOB内の前記第1の項目に前記ポインタを設定し、前記MOBの終わりに達したかどうかを判定するステップと、
    前記終わりに達していない場合に、前記MOB内の前記項目が空であるかどうかを判定するステップと、
    前記MOB内の前記項目がストアであるかどうかを判定するステップと、
    前記項目がストアである場合に、前記値をメモリに書き込み、前記MOB内の前記ポインタを増分するステップとをさらに具備する、請求項に記載の方法。
  8. 前記MOB内の前記項目がストアではない場合に、前記MOB内の前記ポインタが増分される、請求項に記載の方法。
  9. 複数の命令を1つずつ処理するステップをさらに具備する、請求項に記載の方法。
  10. メモリ・オーダ・バッファ(MOB)とストア回復テーブル(SRT)とを使用することにより、複数命令のグループ内の命令を処理するステップをさらに具備する、請求項に記載の方法。
JP2010087222A 2002-09-17 2010-04-05 マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法 Expired - Fee Related JP5116794B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/244434 2002-09-17
US10/244,434 US9043194B2 (en) 2002-09-17 2002-09-17 Method and system for efficient emulation of multiprocessor memory consistency

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006281049A Division JP4658894B2 (ja) 2002-09-17 2006-10-16 マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法

Publications (2)

Publication Number Publication Date
JP2010182331A true JP2010182331A (ja) 2010-08-19
JP5116794B2 JP5116794B2 (ja) 2013-01-09

Family

ID=32092308

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2003302164A Expired - Fee Related JP3980538B2 (ja) 2002-09-17 2003-08-26 マルチプロセッシング・システムにおけるメモリ整合性を保証する方法、マルチプロセッサ・システムにおいて複数命令のグループ内の整合性を維持するためのコードを挿入する方法、複数命令のグループ実行の終了時に共用書込みをメモリにコミットする方法
JP2006281049A Expired - Fee Related JP4658894B2 (ja) 2002-09-17 2006-10-16 マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法
JP2010087222A Expired - Fee Related JP5116794B2 (ja) 2002-09-17 2010-04-05 マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2003302164A Expired - Fee Related JP3980538B2 (ja) 2002-09-17 2003-08-26 マルチプロセッシング・システムにおけるメモリ整合性を保証する方法、マルチプロセッサ・システムにおいて複数命令のグループ内の整合性を維持するためのコードを挿入する方法、複数命令のグループ実行の終了時に共用書込みをメモリにコミットする方法
JP2006281049A Expired - Fee Related JP4658894B2 (ja) 2002-09-17 2006-10-16 マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法

Country Status (3)

Country Link
US (1) US9043194B2 (ja)
JP (3) JP3980538B2 (ja)
CN (1) CN100495342C (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198816A1 (en) * 2005-11-10 2007-08-23 Chuan-Po Ling Emulation system for a single-chip multiple-microcontroller and emulation method thereof
US7596781B2 (en) 2006-10-16 2009-09-29 International Business Machines Corporation Register-based instruction optimization for facilitating efficient emulation of an instruction stream
US8155207B2 (en) * 2008-01-09 2012-04-10 Cisco Technology, Inc. Processing and managing pictures at the concatenation of two video streams
US8873932B2 (en) 2007-12-11 2014-10-28 Cisco Technology, Inc. Inferential processing to ascertain plural levels of picture interdependencies
US8875199B2 (en) * 2006-11-13 2014-10-28 Cisco Technology, Inc. Indicating picture usefulness for playback optimization
US8416859B2 (en) * 2006-11-13 2013-04-09 Cisco Technology, Inc. Signalling and extraction in compressed video of pictures belonging to interdependency tiers
GB0623276D0 (en) * 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
US7685381B2 (en) * 2007-03-01 2010-03-23 International Business Machines Corporation Employing a data structure of readily accessible units of memory to facilitate memory access
US7899663B2 (en) * 2007-03-30 2011-03-01 International Business Machines Corporation Providing memory consistency in an emulated processing environment
US8958486B2 (en) * 2007-07-31 2015-02-17 Cisco Technology, Inc. Simultaneous processing of media and redundancy streams for mitigating impairments
US8804845B2 (en) * 2007-07-31 2014-08-12 Cisco Technology, Inc. Non-enhancing media redundancy coding for mitigating transmission impairments
WO2009052262A2 (en) * 2007-10-16 2009-04-23 Cisco Technology, Inc. Conveyance of concatenation properties and picture orderness in a video stream
US8416858B2 (en) * 2008-02-29 2013-04-09 Cisco Technology, Inc. Signalling picture encoding schemes and associated picture properties
CN101572598B (zh) * 2008-04-28 2013-03-06 国际商业机器公司 用于可靠的快速集成的方法和装置
US8886022B2 (en) 2008-06-12 2014-11-11 Cisco Technology, Inc. Picture interdependencies signals in context of MMCO to assist stream manipulation
US8699578B2 (en) 2008-06-17 2014-04-15 Cisco Technology, Inc. Methods and systems for processing multi-latticed video streams
US8971402B2 (en) 2008-06-17 2015-03-03 Cisco Technology, Inc. Processing of impaired and incomplete multi-latticed video streams
US8705631B2 (en) * 2008-06-17 2014-04-22 Cisco Technology, Inc. Time-shifted transport of multi-latticed video for resiliency from burst-error effects
EP2297964A4 (en) * 2008-06-25 2017-01-18 Cisco Technology, Inc. Support for blocking trick mode operations
JP2010102623A (ja) * 2008-10-27 2010-05-06 Nec Electronics Corp キャッシュメモリ及びその制御方法
US8681876B2 (en) * 2008-11-12 2014-03-25 Cisco Technology, Inc. Targeted bit appropriations based on picture importance
US8326131B2 (en) * 2009-02-20 2012-12-04 Cisco Technology, Inc. Signalling of decodable sub-sequences
US20100218232A1 (en) * 2009-02-25 2010-08-26 Cisco Technology, Inc. Signalling of auxiliary information that assists processing of video according to various formats
US8782261B1 (en) 2009-04-03 2014-07-15 Cisco Technology, Inc. System and method for authorization of segment boundary notifications
US8949883B2 (en) 2009-05-12 2015-02-03 Cisco Technology, Inc. Signalling buffer characteristics for splicing operations of video streams
US8279926B2 (en) 2009-06-18 2012-10-02 Cisco Technology, Inc. Dynamic streaming with latticed representations of video
CN102597972B (zh) * 2010-05-24 2016-06-08 松下电器(美国)知识产权公司 虚拟计算机系统、区域管理方法
CA2867302A1 (en) 2012-03-14 2013-09-19 Convergent .Io Technologies Inc. Systems, methods and devices for management of virtual memory systems
CN102866957B (zh) * 2012-07-31 2014-07-30 中国人民解放军国防科学技术大学 面向多核多线程微处理器的虚拟活跃页缓冲方法及装置
CN103365776B (zh) * 2013-06-28 2016-04-13 中国科学院计算技术研究所 基于确定性重放的并行系统弱一致性的验证方法和系统
US10073902B2 (en) 2014-09-24 2018-09-11 Microsoft Technology Licensing, Llc Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency
GB2533414B (en) * 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
CN106155853B (zh) * 2015-03-23 2018-09-14 龙芯中科技术有限公司 处理器ip的验证方法、装置和系统
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
KR102509988B1 (ko) 2015-12-15 2023-03-14 삼성전자주식회사 커넥션 기반 로드 밸런싱을 위한 저장 시스템 및 방법
KR102457183B1 (ko) * 2016-01-05 2022-10-21 한국전자통신연구원 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법
CN114217809B (zh) * 2021-04-14 2024-04-30 无锡江南计算技术研究所 一种无横向一致性的众核精简Cache协议实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887424A (ja) * 1994-09-16 1996-04-02 Toshiba Corp 電子計算機
JPH08272686A (ja) * 1995-03-16 1996-10-18 Internatl Business Mach Corp <Ibm> インストラクションの実行順序の一貫性を照合する方法及びシステム
WO1999003037A1 (en) * 1996-08-20 1999-01-21 Transmeta Corporation Host microprocessor with apparatus for temporarily holding target processor state

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4392196A (en) 1980-08-11 1983-07-05 Harris Corporation Multi-processor time alignment control system
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
JPS63226740A (ja) 1986-12-08 1988-09-21 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン マルチプロセツサ・コンピユータ・システムの並列シミユレーシヨン方法
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US6920416B1 (en) * 1989-08-28 2005-07-19 Texas Instruments Incorporated Electronic systems testing employing embedded serial scan generator
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JP2839201B2 (ja) * 1990-07-30 1998-12-16 株式会社日立製作所 仮想計算機システム
EP0550286A3 (en) * 1992-01-03 1993-11-03 Amdahl Corp 2-level multi-processor synchronization protocol
US5675762A (en) * 1992-04-03 1997-10-07 International Business Machines Corporation System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down
JPH0784883A (ja) * 1993-09-17 1995-03-31 Hitachi Ltd 仮想計算機システムのアドレス変換バッファパージ方法
US5392408A (en) * 1993-09-20 1995-02-21 Apple Computer, Inc. Address selective emulation routine pointer address mapping system
US5983012A (en) * 1993-09-28 1999-11-09 Bull Hn Information Systems Inc. Executing programs of a first system on a second system
US5581705A (en) 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5692193A (en) 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US5574922A (en) * 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5699538A (en) 1994-12-09 1997-12-16 International Business Machines Corporation Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5655100A (en) * 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5678032A (en) * 1995-09-06 1997-10-14 Bull Hn Information Systems Inc. Method of optimizing the execution of program instuctions by an emulator using a plurality of execution units
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
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
US5768593A (en) * 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5761734A (en) * 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6134515A (en) * 1997-06-13 2000-10-17 Telefonaktiebolaget Lm Ericsson Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch
JP3675623B2 (ja) 1997-10-31 2005-07-27 株式会社東芝 プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体
US6381682B2 (en) * 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
JP2002505471A (ja) 1998-02-26 2002-02-19 サンマイクロシステムズ インコーポレーテッド 遠隔処理の中断および継続の方法と装置
US6289419B1 (en) * 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
JPH11259437A (ja) 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
US6075937A (en) * 1998-03-18 2000-06-13 International Business Machines Corporation Preprocessing of stored target routines for controlling emulation of incompatible instructions on a target processor and utilizing target processor feedback for controlling non-sequential incompatible instruction emulation
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6240490B1 (en) * 1998-07-20 2001-05-29 International Business Machines Corporation Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment
US6158049A (en) * 1998-08-11 2000-12-05 Compaq Computer Corporation User transparent mechanism for profile feedback optimization
US6289369B1 (en) * 1998-08-25 2001-09-11 International Business Machines Corporation Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
US6738974B1 (en) * 1998-09-10 2004-05-18 International Business Machines Corporation Apparatus and method for system resource object deallocation in a multi-threaded environment
US6430657B1 (en) * 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
EP0997815A3 (en) * 1998-10-29 2004-05-26 Texas Instruments Incorporated Interactive translation system and method
US6351844B1 (en) * 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6339752B1 (en) * 1998-12-15 2002-01-15 Bull Hn Information Systems Inc. Processor emulation instruction counter virtual memory address translation
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
US6826748B1 (en) * 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
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
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
US6341371B1 (en) * 1999-02-23 2002-01-22 International Business Machines Corporation System and method for optimizing program execution in a computer system
US6470492B2 (en) * 1999-05-14 2002-10-22 Hewlett-Packard Company Low overhead speculative selection of hot traces in a caching dynamic translator
US6529862B1 (en) * 1999-06-30 2003-03-04 Bull Hn Information Systems Inc. Method and apparatus for dynamic management of translated code blocks in dynamic object code translation
US6263302B1 (en) 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
US6345351B1 (en) * 1999-11-12 2002-02-05 Telefonaktiebolaget Lm Ericsson(Publ) Maintenance of speculative state of parallel executed jobs in an information processing system
US6986128B2 (en) 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
US6934832B1 (en) * 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
JP2001249824A (ja) * 2000-03-02 2001-09-14 Hitachi Ltd 論理エミュレーションプロセッサおよびそのモジュールユニット
US6978233B1 (en) * 2000-03-03 2005-12-20 Unisys Corporation Method for emulating multi-processor environment
US6539464B1 (en) * 2000-04-08 2003-03-25 Radoslav Nenkov Getov Memory allocator for multithread environment
US6480845B1 (en) * 2000-06-14 2002-11-12 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory working spaces
US6763328B1 (en) * 2000-06-15 2004-07-13 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory utilizing threads
US6931636B2 (en) 2000-08-08 2005-08-16 Texas Instruments Incorporated Multiprocessor emulation support using dynamic linking
US6883165B1 (en) * 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US6993754B2 (en) * 2001-11-13 2006-01-31 Hewlett-Packard Development Company, L.P. Annotations to executable images for improved dynamic optimization functions
US7085705B2 (en) * 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
US6728846B2 (en) * 2000-12-22 2004-04-27 Bull Hn Information Systems Inc. Method and data processing system for performing atomic multiple word writes
US6728858B2 (en) * 2001-03-30 2004-04-27 Intel Corporation Method and apparatus including heuristic for sharing TLB entries
JP2002312180A (ja) * 2001-04-11 2002-10-25 Hitachi Ltd 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス
GB2376099B (en) * 2001-05-31 2005-11-16 Advanced Risc Mach Ltd Program instruction interpretation
US7047521B2 (en) * 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
TW499049U (en) * 2001-08-03 2002-08-11 Hon Hai Prec Ind Co Ltd Light source assembly
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US6961806B1 (en) * 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US20030171907A1 (en) * 2002-03-06 2003-09-11 Shay Gal-On Methods and Apparatus for Optimizing Applications on Configurable Processors
US20030182653A1 (en) * 2002-03-22 2003-09-25 Giuseppe Desoli Systems and methods for verifying correct execution of emulated code via dynamic state verification
US7107585B2 (en) * 2002-07-29 2006-09-12 Arm Limited Compilation of application code in a data processing apparatus
JP2006520034A (ja) * 2003-02-20 2006-08-31 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 一連のコンピュータ命令の変換
US7093231B2 (en) * 2003-05-06 2006-08-15 David H. Alderson Grammer for regular expressions
US7735073B1 (en) * 2004-02-28 2010-06-08 Oracle International Corporation Method and apparatus for data object profiling

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887424A (ja) * 1994-09-16 1996-04-02 Toshiba Corp 電子計算機
JPH08272686A (ja) * 1995-03-16 1996-10-18 Internatl Business Mach Corp <Ibm> インストラクションの実行順序の一貫性を照合する方法及びシステム
WO1999003037A1 (en) * 1996-08-20 1999-01-21 Transmeta Corporation Host microprocessor with apparatus for temporarily holding target processor state

Also Published As

Publication number Publication date
JP4658894B2 (ja) 2011-03-23
JP5116794B2 (ja) 2013-01-09
JP2007042134A (ja) 2007-02-15
JP3980538B2 (ja) 2007-09-26
JP2004110811A (ja) 2004-04-08
US20040078186A1 (en) 2004-04-22
CN1492324A (zh) 2004-04-28
CN100495342C (zh) 2009-06-03
US9043194B2 (en) 2015-05-26

Similar Documents

Publication Publication Date Title
JP5116794B2 (ja) マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法
KR100334479B1 (ko) 컴퓨터 처리 시스템에서 로드 동작의 순서 변경 방법 및 장치
Harris et al. Transactional memory
US8065490B2 (en) Hardware acceleration of strongly atomic software transactional memory
Spear et al. Conflict detection and validation strategies for software transactional memory
TWI498733B (zh) 實作有限交易式記憶體之快取元資料
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
Maranget et al. A tutorial introduction to the ARM and POWER relaxed memory models
US20090217020A1 (en) Commit Groups for Strand-Based Computing
Chen Data prefetching for high-performance processors
US20090150890A1 (en) Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
JP2002324058A (ja) パイプライン処理内の実行を順序付ける命令
KR100931460B1 (ko) 단일 스레드 응용을 지원하기 위한 시간-멀티플렉스된스펙큘레이티브 멀티 스레딩
Chatterjee et al. Shared memory consistency protocol verification against weak memory models: Refinement via model-checking
Patel et al. rePLay: A hardware framework for dynamic program optimization
Akerholt et al. Processing transactions on GRIP, a parallel graph reducer
CN114253603A (zh) 用于处理器中的用户空间对象一致性的系统、装置和方法
Ye et al. Reconciling Selective Logging and Hardware Persistent Memory Transaction
Oberhauser A simpler reduction theorem for x86-TSO
Scott et al. Architectural Background
Sun et al. Using execution graphs to model a prefetch and write buffers and its application to the Bostan MPPA
Degenbaev et al. Pervasive theory of memory
Papadimitriou et al. Exploring thread-level speculation in software: The effects of memory access tracking granularity
Hong et al. Fence-Free Synchronization with Dynamically Serialized Synchronization Variables
Nagarajan et al. Introduction to Consistency and Coherence

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120907

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: 20120925

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121016

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: 20151026

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees