JP2002517034A - エミュレーションコプロセッサ - Google Patents
エミュレーションコプロセッサInfo
- Publication number
- JP2002517034A JP2002517034A JP2000551315A JP2000551315A JP2002517034A JP 2002517034 A JP2002517034 A JP 2002517034A JP 2000551315 A JP2000551315 A JP 2000551315A JP 2000551315 A JP2000551315 A JP 2000551315A JP 2002517034 A JP2002517034 A JP 2002517034A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- application program
- instruction set
- set architecture
- operating system
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 14
- 238000000034 method Methods 0.000 claims description 85
- 230000008569 process Effects 0.000 claims description 66
- 230000007704 transition Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 10
- 239000004065 semiconductor Substances 0.000 claims description 8
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims description 3
- 230000011664 signaling Effects 0.000 claims description 2
- 238000013519 translation Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 230000000875 corresponding effect Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000035899 viability Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006266 hibernation Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
Description
定的には、コンピュータシステム内の複数の命令セットアーキテクチャをサポー
トすることに関する。
ている。仕事のほぼすべてのラインが、その仕事の中心となる多くのタスクを行
なうためにコンピュータシステムから恩恵を受けている。たとえば、管理専門職
は、ビジネス上重要なデータのデータベースを管理し、書類を作成し管理するな
どのためにコンピュータシステムを使用する。技術専門職は、製品の研究、設計
および検証のためにコンピュータシステムを使用する。製造および流通センター
は、製造機械を制御し、在庫管理のために製造プロセスを通る製品を追跡し、卸
売/小売センターへの流通製品を管理するためにコンピュータシステムを使用す
る。以上のすべてが、Eメール、インターネット、イントラネットなどを介する
通信のためにもコンピュータシステムを使用するであろう。家計管理、通信およ
び娯楽を含む、コンピュータシステムの家庭での使用もまた多い。コンピュータ
システムのその他の多くの使用が存在する。
てきた。一般的には、これらの使用は、コンピュータシステムに設けられたオペ
レーティングシステム下で実行するよう設計されるさまざまなアプリケーション
プログラムによってサポートされる。オペレーティングシステムは、アプリケー
ションプログラムとコンピュータシステムハードウェアとの間にインターフェイ
スを与える。各コンピュータシステムは、ハードウェア構成(たとえば、メモリ
の量、入力/出力(I/O)デバイスの数およびタイプなど)においてさまざま
な差異を有するであろう。オペレーティングシステムは、ハードウェアの差異か
らアプリケーションプログラムを切り離す。したがって、アプリケーションプロ
グラムはしばしば、アプリケーションプログラムが実行するべき正確なハードウ
ェア構成に関係なしに設計され得る。加えて、オペレーティングシステムは、多
くの異なったタイプのアプリケーションプログラムが必要とするであろうさまざ
まなローレベルのサービスを与え、アプリケーションプログラムの内側にこれら
のサービスをプログラミングする代わりにアプリケーションプログラムがオペレ
ーティングシステムサービスに依存することを可能にする。一般的に、オペレー
ティングシステムは、タスクのスケジューリング(たとえば、同時に実行可能で
ある異なったアプリケーションプログラム)、I/Oデバイスおよびメモリなど
のシステム資源の管理および割当て、エラー処理(たとえば誤って動作するアプ
リケーションプログラム)などを与える。オペレーティングシステムの例は、中
でも、ウィンドウズ(Windows)オペレーティングシステム(ウィンドウズ95お
よびウィンドウズNTを含む)、UNIX、DOSおよびMAC−OSである。
反対に、アプリケーションプログラムは、特定のユーザタスクを達成するために
特定のユーザ機能を与える。ワードプロセッサ、スプレッドシート、グラフィッ
クスデザインプログラム、在庫管理プログラムなどが、アプリケーションプログ
ラムの例である。
ングシステム上で動作するよう設計される。オペレーティングシステムから利用
可能であるサービス(「オペレーティングシステムルーチン」)が、アプリケー
ションプログラムによって任意で使用される。加えて、アプリケーションプログ
ラムは、オペレーティングシステムの要件に従う。
ないハードウェア特徴の1つは、コンピュータシステム内のプロセッサの命令セ
ットアーキテクチャである。一般的に、命令セットアーキテクチャは、プロセッ
サ上で実行する命令および、命令によって直接使用されるプロセッサ資源(レジ
スタなど)を定義する。アプリケーションプログラムは典型的には、命令セット
アーキテクチャによって定義される命令の組に従い、このためオペレーティング
システムは、コンピュータシステムハードウェアのこの特徴からアプリケーショ
ンプログラムを切り離さない。
るように多数の異なったタイプのアプリケーションプログラムをサポートしなけ
ればならない。新しく開発された命令セットアーキテクチャを採用するプロセッ
サは、アプリケーション開発者を、新しい命令セットアーキテクチャのために設
計されたアプリケーションを開発するという困難な課題に直面させる。しかしな
がら、アプリケーションプログラムなしでは、命令セットアーキテクチャおよび
そのために設計されたプロセッサはしばしば、せいぜい限られた市場の支持しか
達成しないであろう。
い命令セットアーキテクチャに「ポート」するために必要とされる時間および労
力とのために、新しい命令セットアーキテクチャを用いてアプリケーションプロ
グラムを再び作ることは、困難かつ時間のかかることである。さらに、多くのア
プリケーションプログラムについてのソースコードは、ポートを実行しようと望
んでいるものにとって利用不可能であろう。他方で、オペレーティングシステム
は(特に広範に受入れられているものについては)数がより少なく、さまざまな
命令セットアーキテクチャにポートされるであろう。たとえば、ウィンドウズN
Tは、x86アーキテクチャに加えて、デジタル・イクイップメント社(Digita
l Equipment Corporation)によって開発されたアルファ(Alpha)アーキテクチ
ャ、IBMおよびモトローラ(Motorola)によって開発されたパワーPC(Powe
r PC)アーキテクチャおよびMIPSアーキテクチャをサポートする。
ションプログラムが開発されるように導くであろう市場支持を生み出すために、
新しく開発された命令セットアーキテクチャを採用するプロセッサに基づくコン
ピュータシステムは、異なった命令セットアーキテクチャにコード化されたアプ
リケーションをサポートするであろう。ここでは、コンピュータシステム内のプ
ロセッサによって採用される命令セットアーキテクチャによって定義される命令
を用いるコードは、「ネイティブ」または「ホスト」と呼ばれ、異なった命令セ
ットアーキテクチャによって定義される命令を用いるコードは、「ノンネイティ
ブ」または「外部(foreign)」と呼ばれる。
ータ史上最大のアプリケーションプログラムベースの1つである。これらのプロ
グラムの大部分が、ウィンドウズオペレーティングシステム下で実行するよう開
発されている。ウィンドウズおよびx86アプリケーションプログラムは、ここ
に例として定期的に用いられるが、ここに開示される技術およびハードウェアは
、この命令セットアーキテクチャおよびオペレーティングシステムに限られるも
のではない。いかなるオペレーティングシステムおよび命令セットアーキテクチ
ャが使用されてもよい。
ウズオペレーティングシステム下で実行するx86(すなわち外部)アプリケー
ションプログラムに対するサポートを提供し得るが、アプリケーションプログラ
ムは非x86ホストプロセッサのために開発されている。コンピュータシステム
内で外部アプリケーションをサポートするために用いられてきた2つの方法は、
ソフトウェアエミュレーションおよびバイナリ変換である。ソフトウェアエミュ
レーションは一般的に、命令が選択され実行されるとアプリケーションプログラ
ム内の各命令を読出すことと、ホストアーキテクチャ内の等価の命令シーケンス
を実行することとを含む。バイナリ変換は一般的には、プログラムを実行するよ
り前に、アプリケーションプログラム内の各命令を等価の命令シーケンスに変換
し、次に変換されたプログラムシーケンスを実行することを伴う。
ェアエミュレーションは、外部命令セットアーキテクチャを採用するコンピュー
タシステム上で達成可能なものよりも、アプリケーションプログラムの性能が大
きく低減されている。さらに、エミュレーションプログラムを記憶しデータ構造
をサポートするために、より多くのメモリがアプリケーションプログラムを実行
するために必要とされる。アプリケーションプログラムが、リアルタイム特徴(
たとえばオーディオおよびビデオ)を含む場合、これらの特徴は、過剰な実行時
間のために不良に動作するであろう。さらになお、命令セットアーキテクチャの
プロセッサ実現化例はしばしば、ソフトウェアエミュレータによってモデリング
されなければならないさまざまなドキュメントされていない特徴(既知および未
知)を含む。さらに、(x86浮動小数点レジスタスタックなどの)複雑なハー
ドウェア特徴は、ソフトウェアエミュレータ内で正確にモデリングするのが困難
である。
えない。バイナリ変換はしばしば、プログラムをうまく変換するためにアプリケ
ーションプログラムコードを介する複数の通過を必要とする。その間、ソフトウ
ェアエミュレーションを使用してアプリケーションを実行するであろう(上述し
た多くの欠点を伴う。)しばしば、完全な変換は達成されず、このためソフトウ
ェアエミュレーションがなおも必要とされる。
ティングシステム会社によって採用されてきた。たとえば、デジタル・イクイッ
プメント社は、FX!32システムを提供し、マイクロソフト社(Microsoft)
は、ウィンドウズNTに対するWx86拡張命令(Wx86 extension)を提供する
。しかしながら、これらの方式は機能を提供するが、外部アプリケーションに所
望される高性能は一般的には、満足されるものではない。
ョンコプロセッサを採用するコンピュータシステムによって大部分解決される。
ホストプロセッサは、ホスト命令セットアーキテクチャによって定義される命令
を実行するよう構成されるハードウェアを含み、エミュレーションコプロセッサ
は、ホスト命令セットアーキテクチャと異なる命令セットアーキテクチャ(「外
部命令セットアーキテクチャ」)によって定義される命令を実行するよう構成さ
れるハードウェアを含む。ホストプロセッサは、ホスト命令セットアーキテクチ
ャ内にコード化されるアプリケーションプログラムおよびオペレーティングシス
テムコードを実行する。外部アプリケーションプログラムが起動されると、ホス
トプロセッサは、エミュレーションコプロセッサと交信して、エミュレーション
コプロセッサコアに、外部アプリケーションプログラムを実行させるようにする
。
ションプログラムは、ハードウェア内で直接に実行可能である。アプリケーショ
ンプログラムの実行性能は、ソフトウェアエミュレーションまたはバイナリ変換
方法のものよりも実質的により優れているであろう。さらに、実行性能は、外部
命令セットアーキテクチャを採用するプロセッサに基づくコンピュータシステム
内のアプリケーションプログラムの実行性能と実質的に同様であり得、したがっ
ては外部アプリケーションプログラムのリアルタイム挙動の多くを保全するであ
ろう。ソフトウェアエミュレーション/バイナリ変換方法およびこれらの組合せ
は、外部アプリケーションプログラムのハードウェア実行のために、排除され得
る。エミュレーションコプロセッサは、外部命令セットアーキテクチャを実行す
るためのハードウェア機能を含むので、正確なアーキテクチャモデリングという
困難が排除され得る。これらのさまざまな利点の組合せは、高レベル性能を提供
し、外部アプリケーション実行性能がユーザに広く受入れられることを可能にす
るであろう。したがって、ホスト命令セットアーキテクチャに基づくコンピュー
タシステムの市場支持が、増大するであろう。市場支持が増大すると、ホスト命
令セットアーキテクチャのためにコード化されたアプリケーションプログラムの
数もまた増大するであろう。したがって、ホスト命令セットアーキテクチャの長
期の成功および存続可能性がより高くなるであろう。
ア機能を設けることは、さらなる利点を生み出す。特に、このコンピュータシス
テムは、異種のマルチプロセッシングを特徴とするであろう。エミュレーション
コプロセッサが外部アプリケーションプログラムを実行している一方で、ホスト
プロセッサは、外部アプリケーションプログラムに関連しないオペレーティング
システムルーチンを実行するかまたは、ホストアプリケーションプログラムを実
行することが可能である。有利には、このコンピュータシステムは、ホストプロ
セッサのみおよび、外部命令セットアーキテクチャのためのソフトウェアエミュ
レーション/バイナリ変換を採用するコンピュータシステムによって達成可能で
あるよりも、ホストおよび外部コードの両方について実質的により高いスループ
ットを達成するであろう。
ピュータシステムのための装置を企図する。第1のプロセッサは、第1の命令セ
ットアーキテクチャによって定義される第1の命令を実行するよう構成される。
コンピュータシステムによって採用されるオペレーティングシステムは、第1の
命令を用いてコード化される。第1のプロセッサに結合される、第2のプロセッ
サは、第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチ
ャによって定義される第2の命令を実行するよう構成される。オペレーティング
システム内で実行するよう設計されるアプリケーションプログラムは、第2の命
令を用いてコード化される。第2のプロセッサは、アプリケーションプログラム
を実行するよう構成されるが、その一方で第1のプロセッサはオペレーティング
システムを実行するよう構成される。加えて、第2のプロセッサは、アプリケー
ションプログラムのためのオペレーティングシステムルーチンの使用を検出する
と、第1のプロセッサと交信するよう構成される。
ングシステムと、アプリケーションプログラムとを含む異種のマルチプロセッシ
ングシステムを企図する。第1のプロセッサは、第1の命令セットアーキテクチ
ャによって定義される第1の命令を実行するよう構成される。第2のプロセッサ
は、第1のプロセッサに結合され、第1の命令セットアーキテクチャと異なる第
2の命令セットアーキテクチャによって定義される第2の命令を実行するよう構
成される。オペレーティングシステムは、第1の命令を用いてコード化されるが
、アプリケーションプログラムは、第2の命令を用いてコード化され、オペレー
ティングシステム内で実行するよう設計される。第2のプロセッサは、アプリケ
ーションプログラムを実行するよう構成されるが、第1のプロセッサは、アプリ
ケーションプログラムに関連しないプロセスを同時に実行するよう構成される。
ード化され、かつ、第1の命令セットアーキテクチャと異なる第2の命令セット
アーキテクチャからの命令を用いてコード化されるオペレーティングシステム内
で実行するよう設計されるアプリケーションプログラムを実行するための方法を
企図する。アプリケーションプログラムの起動は、第2の命令セットアーキテク
チャからの命令を実行するよう構成される第1のプロセッサ上で実行するオペレ
ーティングシステムによって検出される。アプリケーションプログラムのための
コンテクストは、第1の命令セットアーキテクチャからの命令を実行するよう構
成される第2のプロセッサ内で確立される。アプリケーションプログラムは、第
2のプロセッサ上で実行される。
むと明らかになるであろう。
施例が、図面の例によって示され、詳細にここに記載される。しかしながら、図
面およびその詳細な説明は、この発明を、開示される特定の態様に限定するもの
ではなく、反対に、その意図は、前掲の特許請求の範囲によって定義されるよう
なこの発明の精神および範囲内にあるすべての変形、等価および代替を含むもの
である。
結合されるプロセッサ10を含むコンピュータシステム5のある実施例のブロッ
ク図が示される。他の実施例が可能であり企図される。例示のシステムでは、主
メモリ14が、メモリバス16を介してバスブリッジ12に結合され、グラフィ
ックスコントローラ18が、AGPバス20を介してバスブリッジ12に結合さ
れる。最後に、複数個のPCIデバイス22A〜22Bが、PCIバス24を介
してバスブリッジ12に結合される。2次バスブリッジ26をさらに設けて、E
ISA/ISAバス30を介する1つ以上のEISAまたはISAデバイスへの
電気的インターフェイスを可能としてもよい。プロセッサ10は、CPUバス3
4を介してバスブリッジ12に結合される。
ョンコプロセッサコアとを含む。ホストプロセッサコアは、ホスト命令セットア
ーキテクチャによって定義される命令を実行するよう構成されるハードウェアを
含み、エミュレーションコプロセッサコアは、ホスト命令セットアーキテクチャ
と異なる命令セットアーキテクチャ(「外部命令セットアーキテクチャ」)によ
って定義される命令を実行するよう構成されるハードウェアを含む。ホストプロ
セッサコアは、オペレーティングシステムコードと、ホスト命令セットアーキテ
クチャ内にコード化されるアプリケーションプログラムとを実行する。外部アプ
リケーションプログラムが起動されると、ホストプロセッサコアは、エミュレー
ションコプロセッサコアと交信して、エミュレーションコプロセッサコアに外部
アプリケーションプログラムを実行させる。
ションプログラムは、プロセッサ10を介してハードウェア内で直接に実行可能
である。アプリケーションプログラムの実行性能は、ソフトウェアエミュレーシ
ョンまたはバイナリ変換方法のそれよりも実質的に優れているであろう。さらに
、実行性能は、外部命令セットアーキテクチャを採用するプロセッサに基づくコ
ンピュータシステム内のアプリケーションプログラムの実行性能と実質的に同様
であろう。ソフトウェアエミュレーション/バイナリ変換方法およびそれらの組
合せは、外部アプリケーションプログラムのハードウェア実行のために、排除さ
れ得る。プロセッサ10は、外部命令セットアーキテクチャを実行するためのハ
ードウェア機能を含むので、正確なアーキテクチャモデリングという困難が排除
され得る。さらに、外部アプリケーションプログラムは、ネイティブコンピュー
タシステム内での実行と同様の時間期間内に実行するので、外部アプリケーショ
ンプログラムのリアルタイム挙動の多くが保全され得る。これらのさまざまな利
点の組合せは、高性能を提供し、外部アプリケーション実行性能がユーザに広く
受入れられることを可能とするであろう。したがって、ホスト命令セットアーキ
テクチャに基づくコンピュータシステムの市場支持が増大するであろう。市場支
持が増大すると、ホスト命令セットアーキテクチャのためにコード化されたアプ
リケーションプログラムの数も増大するであろう。したがって、ホスト命令セッ
トアーキテクチャの長期的成功および存続可能性はより高くなるであろう。
ェア機能を与えることは、さらなる利点を生み出す。特にコンピュータシステム
5は、異種のマルチプロセッシングシステムを特徴とするであろう。エミュレー
ションコプロセッサが外部アプリケーションプログラムを実行している一方で、
ホストプロセッサは、外部アプリケーションプログラムに関連しないオペレーテ
ィングシステムルーチンを実行可能であり、またはホストアプリケーションプロ
グラムを実行可能である。有利には、コンピュータシステム5は、ホストプロセ
ッサのみ、および外部命令セットアーキテクチャのためのソフトウェアエミュレ
ーション/バイナリ変換を採用するコンピュータシステムによって達成可能であ
るよりも、ホストおよび外部コードの両方について実質的により高いスループッ
トを達成することが可能である。
イップメント社によって開発されたアルファ命令セットアーキテクチャであり、
外部命令セットアーキテクチャは、x86命令セットアーキテクチャである。し
かしながら、いかなる命令セットアーキテクチャが、ホスト命令セットアーキテ
クチャとして選択されることも可能である。たとえば、ホスト命令セットアーキ
テクチャは、パワーPCアーキテクチャ、インテル(Intel)によって開発され
たIA−64アーキテクチャ、MIPSアーキテクチャ、SPARCアーキテク
チャなどであってもよい。同様に、外部命令セットアーキテクチャは、上に列挙
した例のいずれをも含むホスト命令セットアーキテクチャ以外のいかなる命令セ
ットアーキテクチャとして選択されてもよい。
施例がここに示される。図1および図2に示す実施例は、ここでの好ましい実施
例として考慮されるが、ここに示す実施例のいずれも、コスト、開発計画、複雑
性などを含むさまざまな設計要因に従って、好適であり得る。さらなる実施例が
、前掲の特許請求の範囲の精神および範囲内で企図される。
れる。L2キャッシュ38は、このキャッシュがCPUバス34とは別個の専用
のインターフェイスを介してプロセッサ10に結合されるので、「バックサイド
L2」と呼ばれる。L2キャッシュ38は、プロセッサ10内で採用されるいか
なる内部キャッシュよりも大きく、主メモリ14から達成可能であるよりもより
高速のアクセスのためにデータを記憶するよう用いられ得る。
ットアーキテクチャによって定義される命令を実行するためのハードウェアのこ
とを言う。したがって、以下に図2に示すプロセッサコアは、この定義の下での
プロセッサであるとみなされる。プロセッサは、所望のごとくさらなるハードウ
ェアを含んでもよい。
ントローラ18と、PCIバス24につながれるデバイスとの間のインタフェー
スを与える。操作がバスブリッジ12に接続されるデバイスの1つから受取られ
ると、バスブリッジ12は、操作のターゲット(たとえば、特定のデバイスまた
は、PCIバス24の場合には、ターゲットはPCIバス24上にある)を特定
する。バスブリッジ12は、ターゲットされたデバイスに操作を送る。バスブリ
ッジ12は一般的には、ソースデバイスまたはバスによって使用されるプロトコ
ルからターゲットデバイスまたはバスによって使用されるプロトコルに操作を変
換する。ある実施例では、CPUバス34は、デジタル・イクイップメント社に
よって開発されたEV6バスを含み、バスブリッジ12は、アルファ(Alpha)
21171または21172コア論理チップセットを含む。しかしながら、いか
なるCPUバスおよび好適なバスブリッジが使用されてもよい。
加えて、2次バスブリッジ26はさらに、所望のごとくさらなる機能を組込んで
もよい。たとえば、ある実施例では、2次バスブリッジ26は、PCIバス24
の所有権を調停するためのマスタPCIアービタ(図示せず)を含む。2次バス
ブリッジ26の外部またはこれと統合される、入力/出力コントローラ(図示せ
ず)をもコンピュータシステム5内に含めて、所望のごとく、キーボードおよび
マウス32ならびにさまざまな直列ポートおよび並列ポートのための動作上のサ
ポートを与えてもよい。他の実施例では、外部キャッシュユニット(図示せず)
が、プロセッサ10とバスブリッジ12との間にCPUバス34にさらに結合さ
れてもよい。代替的に、外部キャッシュは、バスブリッジ12に結合されてもよ
く、外部キャッシュのためのキャッシュ制御論理は、バスブリッジ122統合さ
れてもよい。
主に実行するメモリである。好適な主メモリ14は、DRAM(Dynamic Random
Access Memory)および、好ましくはSDRAM(Synchronous DRAM)の複数個
のバンクを含む。
カード、ビデオアクセラレータ、オーディオカード、ハードもしくはフロッピー
ディスクドライブまたはドライブコントローラ、SCSI(スモールコンピュー
タシステムインターフェイス)アダプタおよび電話機能カードなどの、さまざま
な周辺デバイスを例示するものである。同様に、ISAデバイス28は、モデム
、サウンドカードおよび、GPIBまたはフィールドバスインターフェイスカー
ドなどのさまざまなデータ収集カードなどの、さまざまなタイプの周辺デバイス
を例示するものである。
像のレンダリングを制御するために設けられる。グラフィックスコントローラ1
8は、先行技術に一般的に公知の典型的なグラフィックスアクセラレータを採用
して、主メモリ14におよびそこから効果的にシフト可能である3次元のデータ
構造をレンダリングすることが可能である。したがって、グラフィックスコント
ローラ18は、バスブリッジ12内のターゲットインターフェイスへのアクセス
を要求しかつ受取ることによって主メモリ14へのアクセスを獲得することが可
能であるという点で、AGPバス20のマスタであり得る。専用のグラフィック
スバスが、主メモリ14からのデータの高速の取出しを可能とする。ある操作で
は、グラフィックスコントローラ18は、AGPバス20上のPCIプロトコル
トランザクションを生成するようさらに構成されてもよい。したがって、バスブ
リッジ12のAGPインターフェイスは、AGPプロトコルトランザクションと
、PCIプロトコルターゲットおよびイニシエータトランザクションとの両方を
サポートする機能を含み得る。ディスプレイ36は、画像またはテキストが与え
られることが可能である任意の電子ディスプレイである。好適なディスプレイ3
6は、陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)などを含む。
の記載では例として用いられたが、いかなるバスアーキテクチャが所望のごとく
置換えられてもよい。さらになお、コンピュータシステム5は、付加的プロセッ
サ(たとえば、オプションのL2キャッシュ38aとともに、コンピュータシス
テム5のオプションの構成要素として示されるプロセッサ10a)を含むマルチ
プロセッシングコンピュータシステムであってもよい。プロセッサ10aは、プ
ロセッサ10と同様であってもよい。より特定的には、プロセッサ10aは、プ
ロセッサ10の同一のコピーであってもよい。図1に示すとおり、プロセッサ1
0aは、CPUバス34と同様の別個のCPUバス34aを介してバスブリッジ
12に結合される。代替的に、プロセッサ10aは、プロセッサ10とCPUバ
ス34を共有してもよい。
他の実施例が可能であり企図される。図2の実施例では、プロセッサ10は、バ
スインターフェイスユニット40と、メモリ管理ユニット(MMU)42と、命
令キャッシュ(Iキャッシュ)44と、データキャッシュ(Dキャッシュ)46
と、ホストプロセッサコア48と、エミュレーションコプロセッサコア50とを
含む。バスインターフェイスユニット40は、CPUバス34に、およびL2キ
ャッシュ38へのバックサイドL2インタフェース52に結合される。バスイン
タフェースユニット40はまた、MMU42に結合され、これはさらに、命令キ
ャッシュ44に、およびデータキャッシュ46に結合される。命令キャッシュ4
4およびデータキャッシュ46はどちらも、ホストプロセッサコア48に結合さ
れ、データキャッシュ46は、エミュレーションコプロセッサコア50に結合さ
れる。命令キャッシュ44は、さらに以下に詳細に記載するとおり、エミュレー
ションコプロセッサ50にオプションで結合される。図2の実施例では、プロセ
ッサ10の素子は、半導体基板上に集積される。コマンドインターフェイス54
は、ホストプロセッサコア48とエミュレーションコプロセッサ50との間に結
合される。
つ、これらの命令を実行するよう構成される。命令は、ホストアプリケーション
プログラムの一部を含んでもよく、またはコンピュータシステム5によって採用
されるオペレーティングシステムの一部を含んでもよい。オペレーティングシス
テムのある特定の部分を用いて、外部アプリケーションプログラムの起動を含む
、プロセスを生成する。オペレーティングシステムのプロセス生成部分の実行中
に、外部アプリケーションプログラムが起動されていると検出されれば、ホスト
プロセッサコア48は、コマンドインターフェイス54を介してエミュレーショ
ンコプロセッサコア50と交信する。ホストプロセッサコア48は、起動されて
いる外部アプリケーションプログラムに対応するエミュレーションコプロセッサ
コア50内のコンテクストを確立する。コンテクスト内に含まれるのは、初期プ
ログラムカウンタアドレスであり、外部アプリケーションプログラム内の第1の
命令は、ここからフェッチされる。コンテクストが一旦確立されると、ホストプ
ロセッサコア48は、エミュレーションコプロセッサコア50にコマンドを与え
て、命令を開始する。エミュレーションコプロセッサコア50は、プログラムカ
ウンタアドレスの命令のフェッチを開始し、外部命令セットアーキテクチャに従
って命令を実行する。ここで用いられる「コンテクスト」という言葉は、プロセ
スに特定的である値を言う。コンテクストは、一般的には、プロセスに割当てら
れるメモリページと、レジスタ値とを含む。
プロセス内で、ホスト命令セットアーキテクチャ内にコード化された命令への遷
移が生じているかどうかを決定するよう構成される。たとえば、外部アプリケー
ションプログラムがオペレーティングシステムルーチンをコールした場合、オペ
レーティングシステムはホスト命令セットアーキテクチャに従ってコード化され
ているので、遷移が検出される。加えて、オペレーティングシステムコードまた
は、ホスト命令セットアーキテクチャを用いる他のコードを導く例外および他の
プロセッサ事象は、遷移である。遷移が生じていると決定すると、エミュレーシ
ョンコプロセッサコア50は、コマンドインターフェイス54を介してホストプ
ロセッサコア48と、エミュレーションコプロセッサコア50が停止したことを
交信する。ホストプロセッサコア48は、停止のための理由を決定するためにコ
ンテクスト情報を要求し、対応する動作をとる(たとえば、コールされたルーチ
ンを実行するかまたは、オペレーティングシステムサービスを与える)。一旦、
ホストプロセッサコア48が、外部アプリケーションプログラムが再開可能であ
ると決定すると、ホストプロセッサコア48は、(もし必要であれば)コンテク
スト情報を与え、エミュレーションコプロセッサコア50が開始するためのコマ
ンドを与える。
ば、コマンドインターフェイス54は、ホストプロセッサコア48とエミュレー
ションコプロセッサコア50との間の1組のハードワイヤード信号を含んでもよ
い。コマンド信号は、コマンドインターフェイス54のために定義される各コマ
ンドに割当てられてもよく、さらに、コンテクスト値を送るためのバスに割当て
られてもよい。代替的に、コマンドインターフェイス54は、プロセッサコア間
の通信のためのFIFO(すなわち、ホストプロセッサコア48からエミュレー
ションコプロセッサコア50へのメッセージのための1つ以上のFIFOおよび
、エミュレーションコプロセッサコア50からホストプロセッサコア48へのメ
ッセージのための1つ以上のFIFO)を含んでもよい。なお、コマンドインタ
ーフェイス54は、「通信チャネル」の一例であり得る。一般的に、通信チャネ
ルは、伝送器と受信器との間の接続であり、これを介してメッセージが送信され
ることが可能である。予め定義されたプロトコルを用いて、チャネルを介して伝
送されるメッセージを定義してもよい。たとえば、ハードワイヤード信号は、通
信チャネルを形成し、信号の組合せは、メッセージを伝送するために用いられる
。さらに、FIFOは、通信チャネルを形成してもよく、メッセージはFIFO
エントリとして符号化される。FIFOは単に、メモリ内のキューとして維持さ
れてもよい。
この実施例では、命令キャッシュ44およびデータキャッシュ46を共有する。
ホストプロセッサコア48は、命令キャッシュ44から命令をフェッチし、デー
タキャッシュ40からの命令に応答して操作されるべきデータをフェッチする。
エミュレーションコプロセッサコア50はまた、データキャッシュ46からデー
タをフェッチする。いくつかの実施例が、エミュレーションコプロセッサコア5
0のための命令ソースについて企図される。第1の実施例では、エミュレーショ
ンコプロセッサコア50は、命令キャッシュ44から命令をフェッチし、第2の
実施例では、エミュレーションコプロセッサコア50は、データキャッシュ46
から命令をフェッチする。いくつかの要因が、エミュレーションコプロセッサコ
ア50が、命令キャッシュ44からまたはデータキャッシュ46から命令をフェ
ッチするのかについての決定に影響を及ぼし得る。たとえば、エミュレーション
コプロセッサコア50がx86命令セットアーキテクチャを実行するような実施
例では、自己変更コードなどの特徴がサポートされる。したがって、命令キャッ
シュ44は、データキャッシュ46に対する更新を詮索して、そのような状況を
検出し得る。しかしながら、ホスト命令セットアーキテクチャは、そのような特
徴をサポートしないかも知れず、命令キャッシュ44によるデータキャッシュ4
6の詮索は、不必要かもしれない。さらに、ホストプロセッサコア48は、デー
タとしてエミュレーションコプロセッサコア50によって実行されるべき命令に
アクセスし得る。たとえば、エミュレーションコプロセッサコア50によって実
行される外部アプリケーションプログラムについての例外サービスを与えるため
に、ホストプロセッサコア48は、例外が生じた命令を調べる必要がないかもし
れない。したがって、エミュレーションコプロセッサコア50についての命令は
、データキャッシュ46内に既に記憶されている可能性がある。さらに別の企図
された実施例では、エミュレーションコプロセッサコア50は、命令キャッシュ
を含み、命令キャッシュミスは、データキャッシュ46からフェッチされる。
この実施例でも同様に、MMU42を共有する。MMU42は、ホストプロセッ
サコア48およびエミュレーションコプロセッサコア50内の命令の実行によっ
て生成される仮想アドレスから、主メモリ14またはL2キャッシュ38を読出
すためにバスインターフェイスユニット40が使用するであろう物理的アドレス
に変換するよう構成される。命令キャッシュ44およびデータキャッシュ46は
また、物理的アドレスにしたがって命令およびデータを記憶してもよく、この場
合には、MMU42は、命令キャッシュ44およびデータキャッシュ46に並列
にアクセス可能である。
クチャは、異なったアドレス変換メカニズムを定義する。MMU42は、ホスト
命令セットアーキテクチャによって定義されるアドレス変換メカニズムをサポー
トし得り、ホストプロセッサコア48およびエミュレーションコプロセッサコア
50の両方についての変換は、ホストアドレス変換メカニズムから与えられ得る
。異なったページサイズが、ホストおよび外部命令セットアーキテクチャについ
て定義された場合、所望であれば、変換メカニズムの保護部分は、保護情報のさ
らなるコピーで増強され、より小さいページサイズの粒度に対して独立した保護
を与えることが可能である。代替的に、MMU42は、ホスト命令セットアーキ
テクチャによって定義されるアドレス変換メカニズムと、外部命令セットアーキ
テクチャによって定義されるアドレス変換メカニズムとをサポートするよう構成
されてもよい。オペレーティングシステムは、ホスト命令セットアーキテクチャ
によって定義されるアドレス変換メカニズムにしたがって、メモリのページを仮
想アドレスのために割当ててもよい。さらなるソフトウェアまたはMMU42内
のハードウェアが、外部命令セットアーキテクチャによって定義されるアドレス
変換メカニズムを用いて対応する変換を生成してもよい。代替的に、オペレーテ
ィングシステムは、ページが外部アプリケーションプログラムによって要求され
た場合、外部命令セットアーキテクチャのアドレス変換メカニズム内のアドレス
変換を生成してもよい。
ト60と、複数個の機能ユニット62A〜62Cと、オーダおよび依存性制御ブ
ロック64と、複数個のレジスタ66とを含む。同様に、エミュレーションコプ
ロセッサコア50は、フェッチ/デコードユニット70と、複数個の機能ユニッ
ト72A〜72Cと、オーダおよび依存性制御ブロック74と、複数個のレジス
タ76とを含むものとして示される。一般的には、フェッチ/デコードユニット
60および70は、対応する命令セットアーキテクチャによって定義される命令
をフェッチし、これらの命令をデコードしてどの対応する機能ユニット62A〜
62Cおよび72A〜72Cが命令を実行するよう構成されるかを決定するよう
構成される。フェッチ/デコードユニット60および70は、機能ユニット62
A〜62Cおよび72A〜72Cと、オーダおよび依存性制御ブロック64およ
び74とにそれぞれ、命令を与えることが可能である。オーダおよび依存性制御
ブロック64および74は、命令依存性が検出され、オペランド値についての適
切なソースが各命令ごとに与えられることを確実にするだけでなく、命令実行オ
ーダが適切に維持されることを保証する。オーダおよび依存性制御ブロック64
および74は、たとえば、リオーダバッファおよび関連する回路構成を含んでも
よい。代替的に、オーダおよび依存性制御ブロック64および74は、オーダ制
御機能および依存性制御機能を実行するためのいかなる好適な回路構成を含んで
もよい。さらに別の代替例では、オーダ操作および依存性操作は、フェッチ/デ
コードユニット60および70によって実行されてもよい。レジスタ66および
76は、対応する命令セットアーキテクチャによって定義されるレジスタである
。
に接続されるものとして示される。これらの機能ユニットは、メモリ操作(すな
わち、ロードおよび記憶)機能を含んでもよい。代替の実施例では、他の機能ユ
ニットが同様にメモリ操作機能を含んでもよい。機能ユニット62A〜62Cの
組合せは、ホスト命令セットアーキテクチャによって定義される命令を実行する
ために用いられるハードウェアを与える。同様に、機能ユニット72A〜72C
の組合せは、外部命令セットによって定義される命令を実行するために用いられ
るハードウェアを与える。所望であれば、マイクロコード技術を採用して、機能
ユニット設計を簡素にしてもよい。なお、複数の機能ユニットが、図2のコア4
8および50の各々に示されるが、コア48および50の1つまたはその両方に
1つの機能ユニットを有する実施例を含む、より多くのまたはより少ない機能ユ
ニットを有する実施例が企図される。さらに、コア48または50のいずれかが
他方よりも多い機能ユニットを有してもよい。
エミュレーションコプロセッサが以下の図7、9、10、11および13に示さ
れる)、複数のエミュレーションコプロセッサが採用されてもよいことが企図さ
れる。さらに、複数の外部命令セットアーキテクチャが、複数のエミュレーショ
ンコプロセッサを用いてサポートされてもよいことが企図される。
ソフトウェアモデルのブロック図が示される。図3は、外部アプリケーションプ
ログラム82を含むホストプロセス80を例示する。図示の実施例は、たとえば
、ホスト命令セットアーキテクチャとしてのアルファ命令セットアーキテクチャ
と、外部命令セットアーキテクチャとしてのx86命令セットアーキテクチャと
ともに、ウィンドウズNTオペレーティングシステムの動作を表わす。図3は、
他のオペレーティングシステム、ホスト命令セットアーキテクチャおよび外部命
令セットアーキテクチャをさらに表わしてもよい。他の実施例が可能であり企図
される。
れる1つ以上のモジュールを含む。外部アプリケーションは、オペレーティング
システムルーチンへのコールを含んでもよい。オペレーティングシステムルーチ
ンを直接コールする代わりに、各ルーチンは、「サンク(thunk)」と置換えら
れる。サンクは、これが置換わるルーチンと同じ名前(および、したがって、プ
ロセス80のアドレス空間内の同じアドレス)を有するルーチンである。この実
施例では、サンクは、特定の予め定義された違法操作コードを含み、これによっ
てエミュレーションコプロセッサは違法操作コードトラップ(または「例外」)
をとる。違法操作コードトラップをとると、エミュレーションコプロセッサは、
ホストプロセッサと交信して、外部アプリケーションが停止したことを示す。た
とえば、エミュレーションコプロセッサは、違法操作コードトラップをとるとス
トップメッセージを生成するハードウェアを含んでもよい。代替的に、違法操作
コードトラップハンドラ(違法操作コードトラップが発生するとフェッチされる
よう定義される予め定められたアドレスに記憶されるコード)が、ストップメッ
セージを与えるためにコード化されてもよい。サンクの2つの組、すなわちオペ
レーティングシステムサンク86およびプロセスサンク88が図3に示される。
オペレーティングシステムサンク86は、外部アプリケーションプログラム82
にコード化される直接オペレーティングシステムコールと、外部アプリケーショ
ンプログラム82の実行中の例外に対する応答として生じる間接オペレーティン
グシステムコールとの両方の、オペレーティングシステムコールを捕えるために
用いられる。加えて、プロセスサンク88は、プロセス内に含まれるホストコー
ド90のブロックと交信するために含まれてもよい。しかしながら、プロセスサ
ンク88およびホストコード90は、オプションである。上述したプロセスは、
外部アプリケーションコードとホストコードとの間の遷移を検出するために用い
ることが可能である。他の実施例が、遷移を検出するための他の方法を採用して
もよい。
の間で交信するために用いられ得るエミュレーションインターフェイスコード9
2をさらに含む。したがって、オペレーティングシステムサンク86は、エミュ
レーションインターフェイスコード92の呼出につながり、ホストプロセッサと
エミュレーションコプロセッサとの間でメッセージをやり取りし得る。さらに、
ホストプロセッサは、エミュレーションインターフェイスコード92を用いてエ
ミュレーションコプロセッサからコンテクスト情報を要求するよう構成されても
よい。外部アプリケーションプログラム82によってコールされるオペレーティ
ングシステムルーチンと、オペレーティングシステム84によって与えられる対
応するオペレーティングシステムルーチンとは同じ機能を与えるが、命令セット
アーキテクチャが異なるために、コール協定(すなわち、アプリケーションとオ
ペレーティングシステムルーチンとの間でパラメータがやり取りされる態様)は
異なっている。たとえば、レジスタの数およびタイプが異なっていると、レジス
タ内のパラメータを送る能力(メモリ場所とは対照的に)は異なる。したがって
、エミュレーションインターフェイスコード92は、コールについてのパラメー
タであるコンテクスト値を要求可能であり、パラメータをホストプロセッサ上の
対応するレジスタ内に与えることが可能である。オペレーティングシステムコー
ルは次に、ホストプロセッサによって実行され得る。その後に、オペレーティン
グシステムルーチンの結果は、コール協定の変換を逆転させることによってエミ
ュレーションコプロセッサに与えられ得る。
セス80内に含まれ得る。たとえば、ウィンドウズNTオペレーティングシステ
ム内に定義されるダイナミックロードライブラリが、オペレーティングシステム
ライブラリ94を介して解決可能である。
リケーションプログラムの初期化を例示するフローチャートが示される。他の実
施例が可能であり企図される。いくつかのステップが、わかりやすくするために
直列順序で図4に示され得るが、いかなる好適な順序が用いられてもよい。さら
に、所望のごとくステップが並列に実行されてもよい。
、オペレーティングシステムは、アプリケーションプログラムが実行するプロセ
スを生成する。オペレーティングシステムは、アプリケーションプログラムのフ
ァイルフォーマットを調べ、どのタイプのコードがアプリケーションプログラム
内に含まれるかを決定する(ステップ100)。たとえば、ウィンドウズNTオ
ペレーティングシステムを採用する実施例では、ポータブル実行フォーマットは
、どの命令セットアーキテクチャにアプリケーションプログラムがコード化され
るかについての表示を含む。ポータブル実行フォーマットは、ウィンドウズNT
によって定義されるアプリケーションプログラミングインターフェイスの一部と
して定義される。
ード化されるべきであると決定されると(決定ブロック102)、オペレーティ
ングシステムは、通常のホストプロセスとしてプロセスを確立し、アプリケーシ
ョンプログラムがホストプロセッサによって実行される(ステップ104)。他
方で、アプリケーションプログラムが、ホスト命令セットアーキテクチャに従っ
てコード化されるべきでないと決定された場合、オペレーティングシステムは、
アプリケーションプログラムがコンピュータシステム内のエミュレーションコプ
ロセッサによって実行可能である外部命令セットアーキテクチャにしたがってコ
ード化されるかどうかを決定する(決定ブロック106)。外部命令セットアー
キテクチャがエミュレーションコプロセッサによって実行可能である場合、オペ
レーティングシステムは、エミュレーションコプロセッサ上の外部アプリケーシ
ョンプログラムを起動するためにエミュレーションコプロセッサインターフェイ
スコードを呼出す(ステップ108)。外部命令セットアーキテクチャがエミュ
レーションコプロセッサによって実行可能でない場合、オペレーティングシステ
ムは、メッセージをユーザに表示して、アプリケーションがサポートされていな
いことを示す(ステップ110)。アプリケーションプログラムは、この場合起
動されない。代替的に、アプリケーションのソフトウェアエミュレーションまた
はバイナリ変換が、所望であれば、ステップ110で設けられてもよい。たとえ
ば、デジタル・イクイップメント社のFX!32製品またはマイクロソフトのW
x86製品と同様の方式が採用されてもよい。
とえば、図4に示すステップ108)のある実施例を例示するフローチャートが
示される。他の実施例が可能であり企図される。プロセスコンテクストは、(ホ
ストプロセッサとエミュレーションコプロセッサとの間のコマンドインターフェ
イスを介して伝送されるコマンドを用いて)ホストプロセッサによって確立され
る。アプリケーションプログラム内の第1の命令の仮想アドレスであるプログラ
ムカウンタレジスタについての値を含む、レジスタについての初期値が与えられ
る。コンテクストを確立した後、「ゴー」(すなわち実行の開始)コマンドが、
エミュレーションコプロセッサに与えられる(ステップ120)。
コマンドインターフェイス54をモニタして、ホストコードへの遷移が検出され
たことを示すエミュレーションコプロセッサからのメッセージを受取る(すなわ
ち、ストップメッセージがエミュレーションコプロセッサから受取られる)。ホ
ストコードへの遷移が検出されると(決定ブロック122)、ホストプロセッサ
は、遷移がプロセス脱出条件によるものかどうかを決定する(決定ブロック12
8)。図6に以下に例示するように、ストップコマンドは、停止のための理由に
ついての表示を含み得る。プロセス脱出が検出された場合、破壊プロセスメッセ
ージがオペレーティングシステムに送信され、エミュレーションインターフェイ
スコードが存在する(ステップ130)。
ドインターフェイス54を介してコンテクスト情報を集めて、どのオペレーティ
ングシステムルーチンが実行されるべきかおよび、コールパラメータは何かを決
定する(ステップ124)。ホストコードは次に、ホストプロセッサ上で実行さ
れる。コンテクスト情報は、コマンドインターフェイス54を介してエミュレー
ションコプロセッサに与えられる。オペレーティングシステムルーチンの実行に
よって与えられた結果は、適用可能であれば、この態様でエミュレーションコプ
ロセッサに送られることが可能である。次に、ゴーコマンドが与えられることに
よって、エミュレーションコプロセッサは続行し(ステップ126)、ホストプ
ロセッサは引続き、エミュレーションコプロセッサからのメッセージをモニタす
る。
ィングシステムルーチンには少なくとも2つのタイプがある。第1のタイプは、
外部アプリケーションプログラム内に意図的にコード化されるオペレーティング
システムライブラリルーチンコールである。ライブラリルーチンは、多くのアプ
リケーションプログラムによって使用され得る、低レベルサービスを与えサービ
ス自体をコード化する代わりにアプリケーションプログラムによって使用される
。典型的には、ライブラリルーチンおよびルーチンによって用いられるパラメー
タは、アプリケーション開発者の使用のためにドキュメントされる。加えて、例
外処理を与えるオペレーティングシステムルーチンがコールされ得る。名前が意
味するとおり、エミュレーションコプロセッサが例外を検出したときこれらのル
ーチンは「コールされる」。たとえば、命令フェッチアドレスまたはデータアド
レスが変換を失敗したときに生じるページフォルトが、例外ルーチンを呼出しペ
ージを割当てる。
、エミュレーションコプロセッサが、アプリケーションプログラムの第1の命令
をフェッチしようとしたとき、第1の命令を含むページはまだ、アプリケーショ
ンプログラムに割当てられていない可能性がある。したがって、フェッチアドレ
スは変換せず、ページフォルトが生じる。同様に、データが新しいページからア
クセスされるたびに、ページフォルトが起こり得る。ページがディスクに「ペー
ジアウト」されて異なったページの割当てが可能とされたときにも、ページフォ
ルトは起こり得る。
・マルチタスクオペレーティングシステム下で割込まれて、ホストプロセッサが
他のタスク(たとえば、ホストアプリケーションプログラムまたは実行されてい
るアプリケーションに関連しないオペレーティングシステムルーチン)を実行す
ることを可能にすることもある。さらに、複数の外部アプリケーションが同時に
実行している場合、複数のプロセスがメッセージをモニタしている可能性がある
。
NTオペレーティングシステムに対するWx86拡張命令にインターフェイスし
得る。
ートされるコマンドを例示する表140が示される。異なったコマンドまたは、
異なったコマンドと表140に示す1つ以上のコマンドとの組合せを採用する他
の実施例が企図される。
ッサレジスタの読出のためにサポートされる。エミュレーションコプロセッサは
、要求されたレジスタ値を与えることによってレジスタ読出コマンドに応答する
。なお、メモリ値もまた同様に、エミュレーションコプロセッサのコンテクスト
から読出可能である。しかしながら、エミュレーションコプロセッサおよびホス
トプロセッサは、同じ物理的メモリを共有するので、ホストプロセッサは、メモ
リ値を直接に読出すことが可能である。上述したとおり、同じ変換がホストプロ
セッサおよびエミュレーションコプロセッサの両方によって共有されるか、また
は、変換は、外部アプリケーションプログラムに割当てられた各ページごとに、
ホストプロセッサの命令セットアーキテクチャおよびエミュレーションコプロセ
ッサの命令セットアーキテクチャの両方に従って生成される。したがって、ホス
トプロセッサは、外部アプリケーションのコンテクストに割当てられたメモリを
見るであろう。
新することを可能にするためにレジスタ書込コマンドがサポートされる。エミュ
レーションコプロセッサは、レジスタ書込コマンド内に与えられたデータを受取
り、受取った値で特定のレジスタを更新する。メモリの読出に関する前の記載と
同様に、ホストプロセッサは、同様に、エミュレーションコプロセッサのコンテ
クスト内のメモリを更新することが可能である。
かをエミュレーションコプロセッサに示す。エミュレーションコプロセッサにゴ
ーコマンドを送るより前に、実行ポインタが、エミュレーションコプロセッサ内
のプログラムカウンタレジスタ内に記憶される。ゴーコマンドを受取ると、エミ
ュレーションコプロセッサは、実行ポインタの命令のフェッチおよび実行を開始
する。代替的に、実行ポインタは、所望であれば、ゴーコマンド内で交信されて
もよい。
されるべきである(たとえば、ホストコードが実行されるべきである)ことが決
定されると、ストップコマンドがエミュレーションコプロセッサによって伝送さ
れる。ストップコマンドは、エミュレーションコプロセッサが停止したことをホ
ストプロセッサに通知し、また停止の理由を与える。停止のための様々な理由が
所望のごとく採用され得る。たとえば、停止のための理由は、(i)オペレーテ
ィングシステムコールのために(上述したような)サンクを実行すること、(ii
)外部アプリケーションプログラムの実行の終了を検出すること、または(iii
)アプリケーションプログラムの実行中に例外を経験することを含み得る。所望
であれば、レジスタ読出コマンドを用い、外部アプリケーションプログラムのメ
モリを読出して、ホストプロセッサはさらなるコンテクスト情報を集めてもよい
。
プロセッサとの間の交信を言うものとしてここでは用いられ得る。メッセージと
いう言葉とコマンドとはこの開示では同義であることが意図される。
。図7の実施例は、たとえば、図1に示すコンピュータシステム5の実施例にお
いて採用されてもよい。図3〜図6は、一般的には、図7の実施例にも適用可能
である。他の実施例が可能であり企図される。図7に示すとおり、プロセッサ1
0は、エミュレーションコプロセッサ150と、ホストプロセッサ152と、イ
ンターフェイス論理ユニット154とを含む、エミュレーションコプロセッサ1
50およびホストプロセッサ154は、インターフェイス論理ユニット154に
結合され、これはさらにCPUバス34に結合される。ホストプロセッサ152
はさらに、バックサイドL2インターフェイス52を介してL2キャッシュ38
に結合される。
ションコプロセッサコア50と、命令キャッシュ44およびデータキャッシュ4
6と同様のキャッシュと、MMU42と同様のMMUとを含んでもよい。ホスト
プロセッサ152は、図2に示すものと同様のホストプロセッサコア48と、命
令キャッシュ44およびデータキャッシュ46と同様のキャッシュと、MMU4
2と同様のMMUとを含んでもよい。
路基板に装着される3つの別個の半導体チップを含む。プリント回路基板は、エ
ッジコネクタを含み、エンキャプシュレーションされてコンピュータシステム5
内に含まれてもよい。たとえば、プロセッサ10は、インテルおよびアドバンス
ト・マイクロ・ディバイシズ(Advanced Micro Devices)によって開発されたス
ロット1、スロットAまたはスロット2000の仕様のいずれかに従って設計さ
れてもよい。あるチップは、エミュレーションコプロセッサ150を実現する。
第2のチップは、ホストプロセッサ152を実現し、第3のチップは、インター
フェイス論理154を実現する。たとえば、エミュレーションコプロセッサ15
0およびホストプロセッサ152は、カスタムデザイン半導体チップであっても
よく、インターフェイス論理ユニット154は、特定用途向け集積回路(ASI
C)、フィールドプログラマブルゲートアレイ(FPGA)などであってもよい
。同様に、インターフェイス論理ユニット154をカスタム半導体チップとして
実現することを含む、他の構成が可能であり企図される。
れる)予め設計されたエミュレーションコプロセッサ150およびホストプロセ
ッサ152を用いてプロセッサ10を形成することを見込む。エミュレーション
コプロセッサ150およびホストプロセッサ152は各々、インターフェイス論
理ユニット154へのバスインターフェイス(それぞれ、参照番号156および
158)を与え得る。たとえば、バスインターフェイス156および158は、
CPUバス34に論理的および電気的に同一であってもよい。代替的に、バスイ
ンターフェイス156および158は、CPUバス34に専用のものとは異なっ
たバスプロトコルおよび/または電気的仕様に従って動作可能である。さらにな
お、バスインターフェイス156は、バスインターフェイス158と異なっても
よく、インターフェイス論理ユニット154は、バス上のトランザクションを、
バスブリッジ12の動作と同様の適切なプロトコルに変換可能である。
ーフェイス機能(たとえばコマンドインターフェイス54)を与える。メモリお
よびI/Oバスサイクルと異なる予め定義されたバスサイクルが、バスインター
フェイス156および158上に定義されて、エミュレーションコプロセッサ1
50とホストプロセッサ152との間にさまざまなコマンドを交信してもよい。
代替的に、コマンドインターフェイス52が、1組のFIFOを含んで、エミュ
レーションコプロセッサ150およびホストプロセッサ152はこの中にコマン
ドを書込み、エミュレーションプロセッサ150およびホストプロセッサ152
はここからコマンドを読出してもよい。
ユニット154は、エミュレーションコプロセッサ150およびホストプロセッ
サ152から、CPUバス34および任意で非要求プロセッサに、非コマンド(
たとえばメモリおよびI/O)を送る。図8は、インターフェイス論理ユニット
154のある実施例に従うコマンド要求および非コマンド要求の両方を送るある
実施例を例示するフローチャートである。他の実施例が可能であり企図される。
図8に示すステップは時に、わかりやすくするために直列順で例示される。しか
しながら、ステップは、所望のごとく、いかなる好適な順序で実行されてもよく
、並列に実行されてもよい。
に送られる、CPUバス34に対するコヒーレンシ要求以外の)要求は、ホスト
プロセッサ152またはエミュレーションコプロセッサ150のいずれかによっ
て起動される。要求がバスインターフェイス156上で受取られた場合、要求は
エミュレーションコプロセッサ150によって起動される。要求がホストプロセ
ッサ158によって受取られた場合、要求はホストプロセッサ152によって起
動される。インターフェイス論理ユニット154は、要求のイニシエータを決定
する(決定ブロック160)。要求がホストプロセッサ152によって起動され
た場合、インターフェイス論理ユニット154は、要求がエミュレーションイン
ターフェイスについてのコマンド(たとえば、コマンドインターフェイス54を
介するエミュレーションコプロセッサ150へのコマンド)であるかどうかを決
定する(決定ブロック162)。要求がエミュレーションコプロセッサ150へ
のコマンドであった場合、要求はエミュレーションコプロセッサ150に送られ
る(ステップ164)。CPUバス34は、コマンドによって影響を受けること
はないであろう。要求がエミュレーションコプロセッサ150へのコマンドでな
ければ、インターフェイス論理ユニット154は、コマンドをCPUバス34に
送る(ステップ166)。
求はホストプロセッサ152に送られる(ステップ168)。要求のデスティネ
ーションがホストプロセッサ152であるため、エミュレーションインターフェ
イスコマンドはホストプロセッサ152に送られる。メモリ要求およびI/O要
求は、エミュレーションコプロセッサ150がホストプロセッサ152のL2キ
ャッシュ資源(たとえばL2キャッシュ38)を共有することを可能にするため
に、ホストプロセッサ152に送られる。メモリ要求は、ホストプロセッサ15
2が要求されたデータを与えるように、コヒーレンシ要求の形でインターフェイ
ス論理ユニット154によって与えられてもよい。代替的に、インターフェイス
論理ユニット154は、バスインターフェイス158に従って与えられるバスサ
イクルとは異なる予め定義されたバスサイクルを採用して、L2キャッシュ38
の読出を要求してもよい。この態様では、コスト削減が、ホストプロセッサ15
2とエミュレーションコプロセッサ150との間で共有されるL2キャッシュを
採用することによって達成可能である。
レーションインターフェイスについてのコマンド(たとえば、コマンドインター
フェイス54または予め定められたバスサイクルを介するホストプロセッサ15
2へのコマンド−決定ブロック170)または、メモリもしくはI/O要求のい
ずれであってもよい。要求がエミュレーションインターフェイスコマンドであっ
た場合、要求はホストプロセッサ152に送られることが可能であり(ステップ
168)、さらなる動作は必要とされないであろう。他方で、要求がエミュレー
ションインターフェイスコマンドでなかった場合、インターフェイス論理ユニッ
ト154は、これに送られるバスサイクルに対するホストプロセッサ152の応
答(ステップ168)から、要求がホストプロセッサ152によって満足され得
るかどうかを決定する(決定ブロック172)。要求がホストプロセッサ152
によって満足され得るのであれば、ホストプロセッサ152によって与えられた
データは、インターフェイス論理ユニット154を介してエミュレーションコプ
ロセッサ150に送られる(ステップ174)。要求がホストプロセッサ152
によって満足され得ないならば、要求は、インターフェイス論理ユニット154
によってCPUバス34に送られる(ステップ166)。
用可能であるプロセッサ10の第3の実施例のブロック図が示される。図3〜図
6は一般的に、この実施例にも適用可能である。他の実施例が可能であり企図さ
れる。図9の実施例では、プロセッサ10は、エミュレーションコプロセッサ1
50とホストプロセッサ152とを含む。より詳細に示されるホストプロセッサ
152は、コア48と、Iキャッシュ44と、Dキャッシュ46と、MMU42
と、バスインターフェイスユニット40とを含む。エミュレーションコプロセッ
サ150は、コマンドインターフェイス54を含む、コプロセッサ10内の接続
を介してホストプロセッサ152に結合される。ホストプロセッサ152および
より特定的にはバスインターフェイスユニット40は、バックサイドL2インタ
ーフェイス52を介してCPUバス34におよびL2キャッシュ38に結合され
る。
52との間のキャッシュ資源およびMMU資源の共有を見込む。言換えれば、エ
ミュレーションコプロセッサ150は、この実施例ではキャッシュおよびMMU
回路構成を排除するであろう。代わりに、エミュレーションコプロセッサ150
には、Iキャッシュ44、Dキャッシュ46、MMU42、および間接的にバス
インターフェイスユニット40へのアクセスが与えられるであろう。有利には、
エミュレーションコプロセッサ150を実現するために採用される回路構成の量
は、実質的に低減可能である。
まざまな実施例での、データキャッシュ46または命令キャッシュ44のいずれ
かからの命令をフェッチするよう構成可能である。さらになお、エミュレーショ
ンコプロセッサ150は、命令をフェッチするために命令キャッシュを含んでも
よく、データキャッシュ46から命令キャッシュミスをフェッチしてもよい。
IFOを主メモリ14内に維持して、ホストプロセッサ152とエミュレーショ
ンコプロセッサ150との間でコマンドメッセージをやり取りしてもよい。なお
、図9の実施例では、プロセッサ10は、とりわけ、単一の半導体基板、マルチ
チップモジュール、またはスロット1、スロットAもしくはスロット200タイ
プパッケージ内の2つ以上の半導体として実現されてもよい。
図が示される。図3〜図6は一般的に、この実施例にも適用可能である。他の実
施例が可能であり企図される。図10の実施例では、ホストプロセッサ152お
よびエミュレーションコプロセッサ150は各々、バスブリッジ12に直接結合
される。独立のCPUバス接続34および34aの代替として、ホストプロセッ
サ152およびエミュレーションコプロセッサ150は、共通のCPUバス34
を共有してもよい。さらに、ホストプロセッサ152は、L2キャッシュ38に
結合され、エミュレーションコプロセッサ150は同様に、L2キャッシュ38
aに結合される。
セッサ150は各々、内部キャッシュおよびメモリ管理ファシリティを含んでも
よい。たとえば、ホストプロセッサ152は、エミュレーションコプロセッサな
しのコンピュータシステム内に含まれるよう設計されるプロセッサであってもよ
く、同様に、エミュレーションコプロセッサ150は、(たとえば、コンピュー
タシステムの中央処理ユニットとして)ホストコンピュータなしのコンピュータ
システム内に含まれるよう設計されたプロセッサであってもよい。言換えれば、
ホストプロセッサ152およびエミュレーションコプロセッサ150は、「既製
(“off-the-shelf”)」の部品であってもよい。コマンドインターフェイス5
4が、FIFOを用いてプロセッサ間でコマンドメッセージをやり取りするなど
、主メモリ14を介して設けられてもよい。代替的に、コマンドインターフェイ
ス54は、バスブリッジ12内に設けられてもよい。さらに別の代替として、C
PUバス34および34aとは別個の専用インターフェイスを用いてコマンドイ
ンターフェイス54を設けてもよい。
セッサ150は、論理的および電気的に等価のバスインターフェイス(すなわち
CPUバス34)を含む。図11は、エミュレーションコプロセッサ150がC
PUバス34とは異なったバスインターフェイスを含むようなコンピュータシス
テム5の別の実施例である。したがって、図11に示すコンピュータシステム5
は、エミュレーションコプロセッサ150によって生成されたトランザクション
を、エミュレーションコプロセッサ150のバスインターフェイスのプロトコル
および電気的信号法特性から、CPUバス34aのそれに変換するためのバスブ
リッジ180を含む。したがって、図11の実施例は、たとえ異なったバスイン
ターフェイスがホストプロセッサおよびエミュレーションコプロセッサによって
用いられたとしても、既製のホストプロセッサ152および既製のエミュレーシ
ョンコプロセッサ150をサポートする。
例において主メモリ内で実現されてもよい。代替的に、コマンドインターフェイ
ス54は、バスブリッジ12内に設けられてもよい。さらに別の代替として、C
PUバス34および34aとは別個の専用インターフェイスを用いてコマンドイ
ンターフェイス54を設けてもよい。
。他の実施例が可能であり企図される。図12の実施例では、エミュレーション
コプロセッサは、エミュレーションコプロセッサカード22C上に含まれる。エ
ミュレーションコプロセッサカード22Cは、図12に示すとおりPCIバス2
4に結合される。エミュレーションコプロセッサカード22Cのためのハードウ
ェアは、たとえば、カリフォルニア州のサニーベイルのリプライ社(Replay Cor
poration)によって製造されるラディアス・デタント(Radius Detente)AXま
たはMXカードであってもよい。
の操作をも含む。コマンドインターフェイスは、エミュレーションコプロセッサ
カード22C上のメモリ内に維持されてもよい。加えて、エミュレーションコプ
ロセッサカード22CはI/Oデバイスであるため、エミュレーションコプロセ
ッサカード22Cにインターフェイスするために、ドライバがオペレーティング
システム内に設けられる。さらになお、エグゼクティブソフトウェアがエミュレ
ーションコプロセッサカード22Cについて設けられ、複数のアプリケーション
プログラムが同時に実行中であることを可能にする。したがって、プロセスおよ
びプロセス内のスレッドを生成しかつ破壊するためのコマンドが、図6に例示さ
れるようなエミュレーションコプロセッサとホストプロセッサとの間で交信され
得るコマンドの組に加えられ得る。加えて、コマンドがページを割当てるために
与えられ、エミュレーションコプロセッサカード22C上で実行する外部アプリ
ケーションプログラムによって使用される。エミュレーションコプロセッサカー
ド22Cは、コンピュータシステム5のオペレーティングシステムにとってはI
/Oデバイスであるように見えるので、ページがエミュレーションコプロセッサ
に割当てられると、ページは主メモリ14にロックされる(すなわち、オペレー
ティングシステムによるページ割当て要求の受信の際にディスクドライブへのペ
ージアウトのためにページが選択されない)。エミュレーションコプロセッサカ
ード上で実行するエグゼクティブは、いつページがエミュレーションコプロセッ
サ上で実行するアプリケーションプログラムによって使用されなくなるかを決定
し、もはや使用されていないことを決定するとメッセージを与えてページをロッ
ク解除する。
プロセッサは、1つ以上のキャッシュを含み、エミュレーションコプロセッサカ
ード22C上で実行するエグゼクティブは、エミュレーションプロセッサキャッ
シュと、ホストプロセッサ150およびL2キャッシュ38内(および、もし含
まれていれば、ホストプロセッサ150aおよびL2キャッシュ38a内)のキ
ャッシュとのキャッシュコヒーレンスを維持する。代替的に、エミュレーション
コプロセッサ内のキャッシュは、キャッシュコヒーレンスが問題とならないよう
に不能化されてもよい。
セットアーキテクチャのためにウィンドウズNTオペレーティングシステムを採
用し、ホストプロセッサ150は、アルファ命令セットアーキテクチャを採用す
る。さらに、コンピュータシステム5によって採用されるウィンドウズNTオペ
レーティングシステムは、Wx86エミュレーション拡張命令を含む。しかしな
がら、x86プロセッサをエミュレーションするためのコードは、上述したエミ
ュレーションインターフェイスコードと置換えられる。エミュレーションコプロ
セッサカード22Cについてのドライバは、エグゼクティブからのロック要求お
よびロック解除要求に応答してページロックおよびロック解除機能を与える。よ
り特定的には、エグゼクティブは、コードまたはデータのいずれかについてロッ
クされたページを要求する。ドライバは、要求に応答して、ウィンドウズNTメ
モリマネージャ・アプリケーションプログラミングインターフェイス(API)
コールを用いてページをロックする(すなわち、ページがディスクにスワップさ
れることを防いで、異なった仮想ページがその物理的ページに割当てられること
を可能にする)。その後に、エグゼクティブは、ページがもはやアプリケーショ
ンプログラム実行のために必要とされていないこと決定し得り、ロック解除メッ
セージを送信し得る。これに応答して、ドライバは、ウィンドウズNTメモリマ
ネージャAPIを用いてページをロック解除する。加えて、ドライバは、オペレ
ーティングシステム内のカードを初期化しかつカード上にメモリをマッピングす
る責任がある。
Tオペレーティングシステムによって定義される(より特定的には、ウィンドウ
ズNTDDKにドキュメントされるような)パケットベースのDMAバスマスタ
モデルを基礎とする。Io割当てアダプタチャネル(Io Allocate Adapter Chan
nel)を用いてアダプタオブジェクトが生成される。MDL(メモリ記述子リス
ト)が生成され、プロセスによって用いられるページの仮想から物理的へのマッ
ピングを記述する。論理的アドレスは、Ioマップ転送(Io Map Transfer)で
生成され、エミュレーションコプロセッサカード22C上のエミュレーションコ
プロセッサに与えられる。したがって論理的アドレスの、メモリ14(すなわち
ホストシステムメモリ)内の物理的アドレスへの変換を与えるマッピングレジス
タが生成される。エミュレーションコプロセッサはこれによって、主メモリ14
にアクセスして、命令および読出/書込データを直接フェッチすることが可能で
ある。言換えれば、コードが実行され、データが主メモリ14内の適所にアクセ
スされる。これらのアクセスは、ホストシステムにとってはDMAのように見え
るかもしれない。このようにして、命令およびデータは、エミュレーションコプ
ロセッサカード22Cに与えられる。
22Cを制御するために記載されたが、制御の一部をハードウェアに設けるよう
な他の実施例が可能である。そのような実施例が企図される。
実施例のブロック図が示される。他の実施例が可能であり企図される。図13に
示すとおり、エミュレーションコプロセッサカード22Cは、PCIインターフ
ェイス190と、エミュレーションコプロセッサ150と、メモリ194とを含
む。PCIインターフェイス190は、PCIバス24、メモリ194およびエ
ミュレーションコプロセッサ150に結合される。エミュレーションコプロセッ
サ150はさらに、メモリ194に結合される。メモリ194は、エグゼクティ
ブプログラム196と、エグゼクティブプログラム196とエミュレーションコ
プロセッサカード22cのためのドライバとの間でコマンドメッセージおよびエ
ミュレーションインターフェイスコード92をやり取りするために用いられるコ
マンドキュー198とのための記憶装置を含む。言換えれば、コマンドキュー1
98は、コマンドインターフェイス54を含み得る。なお、命令およびデータは
好ましくは、主メモリ14からエミュレーションコプロセッサ150によって直
接にアクセスされるが、代替の実施例は、主メモリ14内のページから転送され
る命令およびデータをメモリ194内に同様に記憶してもよい。
によって製造されるラディアス・デタントAXまたはMXカードであってもよい
。これらの製品は、図13には示されないさらなるハードウェア特徴を含んでも
よい。ハードウェア特徴は、カードがエミュレーションコプロセッサカード22
Cとして用いられる際、所望のごとく使用されてもよいしまたは使用されなくて
もよい。
って維持される制御構造を例示するブロック図が示される。他の実施例が可能で
あり企図される。図14の実施例では、制御構造は、エミュレーションコプロセ
ッサカード22C内でアクティブであるプロセスのダブルでリンクされたリスト
であるプロセスリスト200を含む。たとえば、図14では、3つのプロセス2
02A、202Bおよび202Cがアクティブである。各プロセスは、1つ以上
のスレッドを含み得る。たとえば、プロセス202Aは、スレッド204A、2
0Bおよび204Cを含む。同様に、プロセス202Bは、スレッド204D、
204Eおよび204Fを含む。プロセス202Cは、スレッド204Gを含む
。各プロセスにはさらに、プロセスに対応する命令およびデータが記憶されてい
るメモリの1つ以上のページが割当てられてもよい。たとえば、プロセス202
Aには、ページ206A、206Bおよび206Cが割当てられる。同様に、プ
ロセス202Bには、ページ206Dおよび206Eが割当てられる。プロセス
202Cには、ページ206Fおよび206Gが割当てられる。
ス202A〜202Cとは異なった数のページ206および異なった数のスレッ
ド204が割当てられてもよい。プロセス202A〜202Cがページフォルト
を経験すると、新しいページが、コマンドキュー198を介してページを要求す
るエグゼクティブプログラム196を介してそのプロセスに割当てられ得る。ペ
ージ要求は、ページがロックされるべきであるという表示を含む。そのページ内
の処理が完了するとプロセス202A〜202Cはページを明示開放することが
可能となり(たとえば動的に割当てられるメモリ)、ここでエグゼクティブプロ
グラム196はページロック解除メッセージを伝送可能となる。さらに、ページ
は、プロセス内の特定のスレッドと関連付けられてもよい。そのようなページは
、ページが関連付けられるスレッドの脱出の際に、開放され得る。加えて、プロ
セスが破壊されると、エグゼクティブプログラム196は、そのプロセスに割当
てられる各ページについてページロック解除メッセージを伝送し得る。
ージのためにコマンドキュー198内にグローバルメッセージキューを維持して
もよく、各スレッドごとにコマンドキュー198内にそのスレッドのためのコマ
ンドメッセージを含むメッセージキューを維持してもよい。このようにして、エ
グゼクティブプログラムは、複数プロセス、複数スレッドのアプリケーションを
処理するよう構成可能である。スレッド専用コマンドメッセージは、各スレッド
ごとに、ページロックおよびロック解除メッセージならびに生成および破壊メッ
セージを含み、各スレッドごとにゴーおよびストップメッセージを含み得る。し
たがって、プロセススケジューリングは、コンピュータシステム5上で実行する
オペレーティングシステムによって処理可能である。ゴーメッセージおよびスト
ップメッセージは、スケジューリングを実行するために使用され得る。さらに、
表140に示すレジスタ読出および書込コマンドは、1スレッドずつのベースで
与えられてもよい。
作を例示する1組のフローチャートが示される。他の実施例が可能であり企図さ
れる。図15の実施例では、第1のフローチャート220は、コプロセッサカー
ド22Cのリセットを例示し、第2のフローチャート222は、休止プロセスを
例示し、第3のフローチャート224は、エグゼクティブプログラム196の他
の局面を例示する。
テム5がブートされると)、フローチャート220が実行される。エグゼクティ
ブプログラム196は、コプロセッサカード22C上の環境を初期化する(ステ
ップ226)。たとえば、エグゼクティブプログラム196は、メモリ194を
既知の状態にクリアし、エミュレーションコプロセッサ150によって使用され
るページテーブルを生成し(および、エグゼクティブプログラム196自身によ
って使用されるエントリを初期化する)、コマンドキュー198を生成すること
が可能である。休止プロセスを初期化した後(ステップ228)、リセット処理
が完了する。フローチャート222によって例示されるように、休止プロセスは
、(たとえば、コマンドキュー198内のメッセージの受信によって)割込みさ
れるまで何もしない(ステップ230)。
ブである間のエグゼクティブプログラム196の動作を例示する。フローチャー
ト224は、エグゼクティブプログラム196を呼出し得るさまざまな事象に依
存して、いくつかのエントリポイント232、234および236を含む。
98に与えられると生じる。メッセージの受信によってエミュレーションコプロ
セッサ150の割込みが起き、この時点でエグゼクティブプログラム196が呼
出される。割込みによって呼出されると、エグゼクティブプログラム196は、
受取ったメッセージを処理する(ステップ238)。さまざまなメッセージが受
取られる可能性がある。たとえば、プロセス生成またはスレッド生成メッセージ
が受取られるであろう。プロセス生成メッセージを受取ると、エグゼクティブプ
ログラム196は、プロセス202をプロセスリスト200に加える。同様に、
スレッド生成メッセージを受取ると、エグゼクティブプログラム196は、スレ
ッド204を、スレッド生成メッセージを受取ったプロセス202に加える。コ
ンテクスト読出メッセージ(たとえばレジスタ読出コマンド)が、そのプロセス
(および/またはスレッド)と関連付けられるコンテクストデータ構造からレジ
スタを読出し、要求された情報で応答メッセージを生成することによって、エグ
ゼクティブプログラム196によって処理される。コンテクスト書込メッセージ
(たとえばレジスタ書込コマンド)が、選択されたコンテクストデータ構造に値
を書込むことによって、エグゼクティブプログラム196によって処理される。
エグゼクティブプログラム196は、ゴーメッセージに応答してレディタスクの
リストにスレッドを加え、ストップメッセージに応答してレディタスクのリスト
からスレッドを除去する。ページロック完了メッセージ(エグゼクティブプログ
ラム196によって先に送られたページロックメッセージに応答して発行された
)が、ロックされたページについての変換でページテーブルを更新し、かつペー
ジフォルトを経験したスレッドをレディタスクのリストに加えることによって、
エグゼクティブプログラム196によってサービスされる。
のリストからタスクを選択し、選択されたタスクに戻る(ステップ240)。
サ150によって実行されたタスク(たとえばプロセススレッド)によって経験
されると生じる。ページフォルトに応答して、エグゼクティブプログラム196
は、コマンドキュー198を介してページロックメッセージを送信する(ステッ
プ242)。ページフォルトを経験したタスクは、ページロック完了メッセージ
がページについて受取られるまで、レディタスクのリストから除去される。上述
したように、ページロック完了メッセージの受信によってタスクはレディタスク
のリストに加えられる。その後に、エグゼクティブプログラム196は、レディ
タスクのリストからタスクを選択し、選択されたタスクに戻る(ステップ240
)。
コプロセッサ150によって経験されると生じる。予め定義された違法操作コー
ドを用いて、サンクが入力されたことを合図する(しばしは「BOP」と呼ばれ
る)。エグゼクティブプログラム196は、予め定義された違法操作コードが検
出されたかどうかを決定する(決定ブロック244)。予め定義された違法操作
コードが検出されなければ、例外メッセージがコマンドキュー198を介して送
信され、違法操作コード例外を生成するタスクについて違法操作コード例外が送
信されたことをオペレーティングシステムに通知する(ステップ246)。予め
定義された違法操作コードが検出されなければ、ストップメッセージが送信され
、ホストコードへの遷移のためにタスクが停止したことをオペレーティングシス
テムに通知する(ステップ248)。いずれの場合でも、例外を経験したタスク
は、レディタスクのリストから除去され、レディタスクが、レディタスクのリス
トから選択される(ステップ240)。
、ある命令セットアーキテクチャを採用するエミュレーションコプロセッサを用
いて、このために外部アプリケーションプログラムが設計されるが、第2の命令
セットアーキテクチャに従ってコード化されているオペレーティングシステムを
採用するコンピュータシステム内のその命令セットアーキテクチャ内にコード化
される外部アプリケーションプログラムを実行するような、コンピュータシステ
ムが示された。有利には、コンピュータシステムによって実行可能であるアプリ
ケーションプログラムの数は増大する。加えて、アプリケーションプログラムの
性能は、ソフトウェアエミュレーションおよび/またはバイナリ変換を用いて達
成可能であるよりも実質的により優れているであろう。さらになお、エミュレー
ションコプロセッサはアーキテクチャを実現するので、アーキテクチャ的特異性
をモデリングすることが排除される。結果として得られるコンピュータシステム
は、異種のマルチプロセッシングコンピュータシステムを形成する。
なるであろう。前掲の特許請求の範囲は、そのようなすべての変形および変更を
含むものと解釈されるべきであることが意図される。
を含む図1に示すプロセッサのある実施例のブロック図である。
ク図である。
ムの初期化のある実施例を例示するフローチャートである。
例を例示するフローチャートである。
る表である。
例示するフローチャートである。
例のブロック図である。
維持される制御構造を例示する図である。
る1組のフローチャートである。
Claims (20)
- 【請求項1】 コンピュータシステムのための装置であって、 第1の命令セットアーキテクチャによって定義される第1の命令を実行するよ
う構成される第1のプロセッサ(48、152)を含み、前記コンピュータシス
テム(5)によって採用されるオペレーティングシステム(84)は、前記第1
の命令を用いてコード化され、さらに、 前記第1のプロセッサ(48、152)に結合される第2のプロセッサ(50
、150)を含み、前記第2のプロセッサ(50、150)は、前記第1の命令
セットアーキテクチャと異なる第2の命令セットアーキテクチャによって定義さ
れる第2の命令を実行するよう構成され、前記オペレーティングシステム(84
)内で実行するよう設計されるアプリケーションプログラム(82)は、前記第
2の命令を用いてコード化され、 前記第2のプロセッサ(50、150)は、前記アプリケーションプログラム
(82)を実行するよう構成され、前記第1のプロセッサ(48、152)は、
前記オペレーティングシステム(84)を実行するよう構成され、前記第2のプ
ロセッサ(50、150)は、前記アプリケーションプログラム(82)のため
のオペレーティングシステムルーチン(94)の使用を検出すると前記第1のプ
ロセッサ(48、152)と交信するよう構成される、コンピュータシステムの
ための装置。 - 【請求項2】 前記第1のプロセッサ(48)および前記第2のプロセッサ
(50)は、1つ以上のキャッシュ(44、46)に結合され、前記第1のプロ
セッサ(48)および前記第2のプロセッサは、前記1つ以上のキャッシュ(4
4、46)を共有するよう構成される、請求項1に記載の装置。 - 【請求項3】 前記第1のプロセッサ(48)および前記第2のプロセッサ
(50)は、1つ以上のメモリ管理ユニット(42)に結合され、前記第1のプ
ロセッサ(48)および前記第2のプロセッサ(50)は、前記メモリ管理ユニ
ット(42)を共有するよう構成される、請求項2に記載の装置。 - 【請求項4】 前記第1のプロセッサ(48)および前記第2のプロセッサ
(50)は、単一の半導体基板(10)上に集積される、請求項3に記載の装置
。 - 【請求項5】 前記第1のプロセッサ(152)および前記第2のプロセッ
サ(150)は、バスブリッジ(12)に結合され、前記第1のプロセッサ(1
52)は、CPUバス(34)を介して前記バスブリッジ(12)に結合され、
前記第2のプロセッサ(150)は、前記CPUバス(34)と異なった信号法
を有する周辺バス(24)を介して前記バスブリッジ(12)に結合される、請
求項1に記載の装置。 - 【請求項6】 前記第2のプロセッサ(50、150)は、前記第2の命令
をデコードするよう構成されるハードウェアデコーダ(70)を含む、請求項1
に記載の装置。 - 【請求項7】 前記第1のプロセッサ(48、152)および前記第2のプ
ロセッサ(50、150)は、予め定められた制御プロトコルを介して交信する
よう構成される、請求項1に記載の装置。 - 【請求項8】 前記制御プロトコルは、前記第1のプロセッサ(48、15
2)と前記第2のプロセッサ(50、150)との間でやり取りされるメッセー
ジを含む、請求項7に記載の装置。 - 【請求項9】 前記メッセージは、前記コンピュータシステム(5)内のメ
モリ(14)を介してやり取りされる、請求項8に記載の装置。 - 【請求項10】 前記メッセージは、前記第1のプロセッサ(48、152
)と前記第2のプロセッサ(50、150)との間の専用通信チャネル(54)
を介してやり取りされる、請求項8に記載の装置。 - 【請求項11】 異種のマルチプロセッシングシステムであって、 第1の命令セットアーキテクチャによって定義される第1の命令を実行するよ
う構成される第1のプロセッサ(48、152)と、 前記第1のプロセッサ(48、152)に結合される第2のプロセッサ(50
、150)とを含み、前記第2のプロセッサ(50、150)は、前記第1の命
令セットアーキテクチャと異なる第2の命令セットアーキテクチャによって定義
される第2の命令を実行するよう構成され、さらに、 前記第1の命令を用いてコード化されるオペレーティングシステム(84)と
、 前記第2の命令セットを用いてコード化されかつ前記オペレーティングシステ
ム(84)内で実行するよう設計されるアプリケーションプログラム(82)と
を含み、 前記第2のプロセッサ(50、150)は、前記アプリケーションプログラム
(82)を実行するよう構成され、前記第1のプロセッサ(48、152)は、
前記アプリケーションプログラム(82)と関連しないプロセス(80)を同時
に実行するよう構成される、異種のマルチプロセッシングシステム。 - 【請求項12】 前記第2のプロセッサ(50、150)は、実行中に前記
アプリケーションプログラム(82)による前記オペレーティングシステム(8
4)内のオペレーティングシステムルーチン(94)の使用を検出するよう構成
される、請求項11に記載の異種のマルチプロセッシングコンピュータシステム
。 - 【請求項13】 前記第2のプロセッサ(50、150)は、特定の違法操
作コードを実行することによって前記使用を検出するよう構成される、請求項1
2に記載の異種のマルチプロセッシングコンピュータシステム。 - 【請求項14】 前記第2のプロセッサ(50、150)は、前記使用を検
出すると前記第1のプロセッサ(48、152)と交信するよう構成される、請
求項12に記載の異種のマルチプロセッシングコンピュータシステム。 - 【請求項15】 前記第1のプロセッサ(48、152)は、前記第2のプ
ロセッサ(50、150)からコンテクスト情報を要求し、前記オペレーティン
グシステムルーチン(94)を実行し、前記第2のプロセッサ(50、150)
との交信によって前記アプリケーションプログラム(82)の制御を前記第2の
プロセッサ(50、150)に戻すよう構成される、請求項14に記載の異種の
マルチプロセッシングコンピュータシステム。 - 【請求項16】 前記アプリケーションプログラム(82)と関連しない前
記プロセス(80)は、第2のアプリケーションプログラムを含む、請求項11
に記載の異種のマルチプロセッシングコンピュータシステム。 - 【請求項17】 第1の命令セットアーキテクチャからの命令を用いてコー
ド化され、前記第1の命令セットアーキテクチャと異なる第2の命令セットアー
キテクチャからの命令を用いてコード化されるオペレーティングシステム(84
)内で実行するよう設計されるアプリケーションプログラム(82)を実行する
ための方法であって、 前記アプリケーションプログラム(82)が起動されていることを検出するス
テップを含み、前記検出は、前記第2の命令セットアーキテクチャからの命令を
実行するよう構成される第1のプロセッサ(48、152)上で実行する前記オ
ペレーティングシステム(84)によって行なわれ、さらに、 前記第1の命令セットアーキテクチャからの命令を実行するよう構成される第
2のプロセッサ(50、150)内の前記アプリケーションプログラム(82)
のためのコンテクストを確立するステップと、 前記第2のプロセッサ(50、150)上で前記アプリケーションプログラム
(82)を実行するステップとを含む、方法。 - 【請求項18】 前記オペレーティングシステム(84)内のオペレーティ
ングシステムルーチン(94)への前記アプリケーションプログラム(82)内
の遷移を検出するステップをさらに含む、請求項17に記載の方法。 - 【請求項19】 前記第1のプロセッサ(48、152)上で前記オペレー
ティングシステムルーチン(94)を実行するステップをさらに含む、請求項1
8に記載の方法。 - 【請求項20】 前記オペレーティングシステムルーチン(94)を前記実
行した後に前記第2のプロセッサ(50、150)上で実行する前記アプリケー
ションプログラム(82)に戻るステップをさらに含む、請求項19に記載の方
法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/085,187 | 1998-05-26 | ||
US09/085,187 US6480952B2 (en) | 1998-05-26 | 1998-05-26 | Emulation coprocessor |
PCT/US1999/001456 WO1999061981A1 (en) | 1998-05-26 | 1999-01-25 | Emulation coprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002517034A true JP2002517034A (ja) | 2002-06-11 |
JP2002517034A5 JP2002517034A5 (ja) | 2006-03-09 |
Family
ID=22190015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000551315A Pending JP2002517034A (ja) | 1998-05-26 | 1999-01-25 | エミュレーションコプロセッサ |
Country Status (6)
Country | Link |
---|---|
US (1) | US6480952B2 (ja) |
EP (1) | EP1080407B1 (ja) |
JP (1) | JP2002517034A (ja) |
KR (1) | KR100537813B1 (ja) |
DE (1) | DE69901176T2 (ja) |
WO (1) | WO1999061981A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005071522A1 (ja) * | 2004-01-27 | 2005-08-04 | Nec Corporation | 高速再起動方法および情報処理装置ならびにプログラム |
JP2010003042A (ja) * | 2008-06-19 | 2010-01-07 | Koyo Electronics Ind Co Ltd | マルチcpuシステムおよびプログラマブルコントローラ |
Families Citing this family (104)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6842901B1 (en) * | 1999-04-23 | 2005-01-11 | Nortel Networks Limited | Thread memory reclamation |
US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US6601163B1 (en) * | 2000-05-08 | 2003-07-29 | International Business Machines Corporation | Method and system for executing adapter configuration routines utilizing different operating modes |
US6763328B1 (en) * | 2000-06-15 | 2004-07-13 | Bull Hn Information Systems Inc. | Method and data processing system for emulating virtual memory utilizing threads |
US7089538B1 (en) * | 2000-09-06 | 2006-08-08 | Quicktum Design Systems, Inc. | High speed software driven emulator comprised of a plurality of emulation processors with a method to allow memory read/writes without interrupting the emulation |
US6662253B1 (en) * | 2000-09-13 | 2003-12-09 | Stmicroelectronics, Inc. | Shared peripheral architecture |
US6671793B1 (en) * | 2000-10-02 | 2003-12-30 | International Business Machines Corporation | Method and system for managing the result from a translator co-processor in a pipelined processor |
US6691251B2 (en) * | 2000-11-30 | 2004-02-10 | Palmsource, Inc. | On-chip debugging system emulator |
US7287147B1 (en) * | 2000-12-29 | 2007-10-23 | Mips Technologies, Inc. | Configurable co-processor interface |
US7237090B1 (en) | 2000-12-29 | 2007-06-26 | Mips Technologies, Inc. | Configurable out-of-order data transfer in a coprocessor interface |
US6957428B2 (en) * | 2001-03-27 | 2005-10-18 | Sun Microsystems, Inc. | Enhanced virtual machine instructions |
US7543288B2 (en) | 2001-03-27 | 2009-06-02 | Sun Microsystems, Inc. | Reduced instruction set for Java virtual machines |
DE10116861A1 (de) * | 2001-04-04 | 2002-10-31 | Infineon Technologies Ag | Programmgesteuerte Einheit |
US7168066B1 (en) | 2001-04-30 | 2007-01-23 | Mips Technologies, Inc. | Tracing out-of order load data |
GB2376098B (en) * | 2001-05-31 | 2004-11-24 | Advanced Risc Mach Ltd | Unhandled operation handling in multiple instruction set systems |
WO2003005225A2 (en) * | 2001-07-07 | 2003-01-16 | Koninklijke Philips Electronics N.V. | Processor cluster |
US7058934B2 (en) | 2001-08-24 | 2006-06-06 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for instantiating Java objects |
US20060095723A1 (en) * | 2001-11-05 | 2006-05-04 | Moyer William C | Method and apparatus for interfacing a processor to a coprocessor |
US6907519B2 (en) * | 2001-11-29 | 2005-06-14 | Hewlett-Packard Development Company, L.P. | Systems and methods for integrating emulated and native code |
US7506321B1 (en) * | 2002-06-11 | 2009-03-17 | Unisys Corporation | Computer emulator employing direct execution of compiled functions |
GB0215033D0 (en) | 2002-06-28 | 2002-08-07 | Critical Blue Ltd | Instruction set translation method |
US6895460B2 (en) * | 2002-07-19 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Synchronization of asynchronous emulated interrupts |
EP1387250B8 (en) * | 2002-07-31 | 2012-02-29 | Texas Instruments Inc. | Processor that accomodates multiple instruction sets and multiple decode modes |
EP1387259B1 (en) * | 2002-07-31 | 2017-09-20 | Texas Instruments Incorporated | Inter-processor control |
EP1387252B1 (en) * | 2002-07-31 | 2019-02-13 | Texas Instruments Incorporated | Instruction prefix to indicate system commands |
US7124237B2 (en) * | 2002-10-03 | 2006-10-17 | Seagate Technology Llc | Virtual machine emulation in the memory space of a programmable processor |
US7600096B2 (en) * | 2002-11-19 | 2009-10-06 | Stmicroelectronics, Inc. | Coprocessor extension architecture built using a novel split-instruction transaction model |
US20040142563A1 (en) * | 2003-01-16 | 2004-07-22 | Applied Materials, Inc. | Methods and systems for exchanging messages in a controller for a substrate processing system |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US8190858B2 (en) * | 2003-02-25 | 2012-05-29 | Topside Research, Llc | Interface device for interfacing a main processor to processing engines and classifier engines, and methods for configuring and operating interface devices |
US7480786B1 (en) * | 2003-04-16 | 2009-01-20 | Xilinx, Inc. | Methods and cores using existing PLD processors to emulate processors having different instruction sets and bus protocols |
JP4224430B2 (ja) * | 2003-07-07 | 2009-02-12 | 株式会社ルネサステクノロジ | 情報処理装置 |
US20050055594A1 (en) * | 2003-09-05 | 2005-03-10 | Doering Andreas C. | Method and device for synchronizing a processor and a coprocessor |
US7293159B2 (en) * | 2004-01-15 | 2007-11-06 | International Business Machines Corporation | Coupling GP processor with reserved instruction interface via coprocessor port with operation data flow to application specific ISA processor with translation pre-decoder |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
US7167971B2 (en) * | 2004-06-30 | 2007-01-23 | International Business Machines Corporation | System and method for adaptive run-time reconfiguration for a reconfigurable instruction set co-processor architecture |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US7546441B1 (en) | 2004-08-06 | 2009-06-09 | Xilinx, Inc. | Coprocessor interface controller |
US7590823B1 (en) * | 2004-08-06 | 2009-09-15 | Xilinx, Inc. | Method and system for handling an instruction not supported in a coprocessor formed using configurable logic |
US7590822B1 (en) | 2004-08-06 | 2009-09-15 | Xilinx, Inc. | Tracking an instruction through a processor pipeline |
US7346759B1 (en) | 2004-08-06 | 2008-03-18 | Xilinx, Inc. | Decoder interface |
US20060156316A1 (en) * | 2004-12-18 | 2006-07-13 | Gray Area Technologies | System and method for application specific array processing |
JP3938580B2 (ja) * | 2004-12-21 | 2007-06-27 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、情報処理方法、半導体装置、コンピュータプログラム |
US7734895B1 (en) * | 2005-04-28 | 2010-06-08 | Massachusetts Institute Of Technology | Configuring sets of processor cores for processing instructions |
US8645964B2 (en) * | 2005-08-23 | 2014-02-04 | Mellanox Technologies Ltd. | System and method for accelerating input/output access operation on a virtual machine |
US8914618B2 (en) | 2005-12-29 | 2014-12-16 | Intel Corporation | Instruction set architecture-based inter-sequencer communications with a heterogeneous resource |
US7552283B2 (en) * | 2006-01-20 | 2009-06-23 | Qualcomm Incorporated | Efficient memory hierarchy management |
US8117554B1 (en) | 2006-04-25 | 2012-02-14 | Parallels Holdings, Ltd. | Seamless integration of non-native widgets and windows with dynamically scalable resolution into native operating system |
US8387048B1 (en) | 2006-04-25 | 2013-02-26 | Parallels IP Holdings GmbH | Seamless integration, migration and installation of non-native application into native operating system |
US20070271085A1 (en) * | 2006-05-19 | 2007-11-22 | Louenas Hamdi | Emulation of an interactive electronic form |
US8302082B2 (en) * | 2006-06-07 | 2012-10-30 | Intel Corporation | Methods and apparatus to provide a managed runtime environment in a sequestered partition |
US20070300042A1 (en) * | 2006-06-27 | 2007-12-27 | Moyer William C | Method and apparatus for interfacing a processor and coprocessor |
US7925862B2 (en) * | 2006-06-27 | 2011-04-12 | Freescale Semiconductor, Inc. | Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges |
US7805590B2 (en) * | 2006-06-27 | 2010-09-28 | Freescale Semiconductor, Inc. | Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence |
KR100781340B1 (ko) * | 2006-09-18 | 2007-11-30 | 삼성전자주식회사 | 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법 |
US8095699B2 (en) * | 2006-09-29 | 2012-01-10 | Mediatek Inc. | Methods and apparatus for interfacing between a host processor and a coprocessor |
US20080126747A1 (en) * | 2006-11-28 | 2008-05-29 | Griffen Jeffrey L | Methods and apparatus to implement high-performance computing |
US20080234998A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Coordinating instances of a thread or other service in emulation |
US9558019B2 (en) * | 2007-03-22 | 2017-01-31 | Invention Science Fund I, Llc | Coordinating instances of a thread or other service in emulation |
US20080235001A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Implementing emulation decisions in response to software evaluations or the like |
US20080235000A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Implementing security control practice omission decisions from service emulation indications |
US8874425B2 (en) * | 2007-03-22 | 2014-10-28 | The Invention Science Fund I, Llc | Implementing performance-dependent transfer or execution decisions from service emulation indications |
US9378108B2 (en) * | 2007-03-22 | 2016-06-28 | Invention Science Fund I, Llc | Implementing performance-dependent transfer or execution decisions from service emulation indications |
US8006068B1 (en) * | 2007-04-18 | 2011-08-23 | Xilinx, Inc. | Processor access to data cache with fixed or low variable latency via instructions to an auxiliary processing unit |
US8561037B2 (en) | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8122229B2 (en) * | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US9710384B2 (en) * | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8095735B2 (en) * | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US8156307B2 (en) * | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US9015399B2 (en) | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US8321861B2 (en) * | 2008-02-20 | 2012-11-27 | Arm Limited | Non-native program execution across multiple execution environments |
US20100115233A1 (en) * | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8205066B2 (en) * | 2008-10-31 | 2012-06-19 | Convey Computer | Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US20100162045A1 (en) * | 2008-12-22 | 2010-06-24 | Russ Craig F | Method, apparatus and system for restarting an emulated mainframe iop |
US9164812B2 (en) * | 2009-06-16 | 2015-10-20 | International Business Machines Corporation | Method and system to manage memory accesses from multithread programs on multiprocessor systems |
CN102804136B (zh) | 2009-06-23 | 2015-03-11 | 精工爱普生株式会社 | 副处理器、集成电路装置及电子设备 |
US8423745B1 (en) | 2009-11-16 | 2013-04-16 | Convey Computer | Systems and methods for mapping a neighborhood of data to general registers of a processing element |
US8595468B2 (en) * | 2009-12-17 | 2013-11-26 | International Business Machines Corporation | Reverse simultaneous multi-threading |
US9575801B2 (en) * | 2009-12-18 | 2017-02-21 | Seagate Technology Llc | Advanced processing data storage device |
US8959220B2 (en) | 2010-11-02 | 2015-02-17 | International Business Machines Corporation | Managing a workload of a plurality of virtual servers of a computing environment |
TWI450118B (zh) * | 2010-11-02 | 2014-08-21 | Global Unichip Corp | 混合的電子設計系統及其可重組連接矩陣 |
US9081613B2 (en) | 2010-11-02 | 2015-07-14 | International Business Machines Corporation | Unified resource manager providing a single point of control |
US8984109B2 (en) * | 2010-11-02 | 2015-03-17 | International Business Machines Corporation | Ensemble having one or more computing systems and a controller thereof |
US8966020B2 (en) | 2010-11-02 | 2015-02-24 | International Business Machines Corporation | Integration of heterogeneous computing systems into a hybrid computing system |
US9253016B2 (en) | 2010-11-02 | 2016-02-02 | International Business Machines Corporation | Management of a data network of a computing environment |
US9135213B2 (en) * | 2011-01-13 | 2015-09-15 | Xilinx, Inc. | Extending a processor system within an integrated circuit and offloading processes to process-specific circuits |
US9405550B2 (en) * | 2011-03-31 | 2016-08-02 | International Business Machines Corporation | Methods for the transmission of accelerator commands and corresponding command structure to remote hardware accelerator engines over an interconnect link |
JP2012252374A (ja) * | 2011-05-31 | 2012-12-20 | Renesas Electronics Corp | 情報処理装置 |
GB2491665B (en) | 2011-06-08 | 2014-02-26 | Inst Information Industry | Processor bridging in heterogeneous computer system |
US9417855B2 (en) | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
SE537552C2 (sv) * | 2011-12-21 | 2015-06-09 | Mediatek Sweden Ab | Digital signalprocessor |
US20140019723A1 (en) * | 2011-12-28 | 2014-01-16 | Koichi Yamada | Binary translation in asymmetric multiprocessor system |
EP2798467A4 (en) * | 2011-12-30 | 2016-04-27 | Intel Corp | CONFIGURABLE CORE WITH RESTRICTED COMMAND SET |
WO2013101146A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Using reduced instruction set cores |
EP2828747A4 (en) * | 2012-03-22 | 2016-04-20 | Intel Corp | SYSTEMS AND METHODS FOR TREATING HYBRID EMULATION AND CORE FUNCTION |
CN104335162B (zh) * | 2012-05-09 | 2018-02-23 | 英特尔公司 | 使用多个页表的执行 |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US9563561B2 (en) * | 2013-06-25 | 2017-02-07 | Intel Corporation | Initiation of cache flushes and invalidations on graphics processors |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
US11119941B2 (en) | 2017-10-31 | 2021-09-14 | Hewlett Packard Enterprise Development Lp | Capability enforcement controller |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4799150A (en) | 1985-07-29 | 1989-01-17 | Orchid Technology | Interface system between a host computer and a peripheral processor with address detection circuitry |
US4787026A (en) | 1986-01-17 | 1988-11-22 | International Business Machines Corporation | Method to manage coprocessor in a virtual memory virtual machine data processing system |
US4954949A (en) | 1988-02-05 | 1990-09-04 | Commodore-Amiga, Inc. | Universal connector device for bus networks in host computer/co-processor computer system |
US5077657A (en) | 1989-06-15 | 1991-12-31 | Unisys | Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor |
JP2834837B2 (ja) | 1990-03-30 | 1998-12-14 | 松下電工株式会社 | プログラマブルコントローラ |
GB2260429B (en) | 1991-10-11 | 1995-05-24 | Intel Corp | Versatile cache memory |
AU3616793A (en) | 1992-02-18 | 1993-09-03 | Apple Computer, Inc. | A programming model for a coprocessor on a computer system |
US5493655A (en) | 1993-02-20 | 1996-02-20 | Acer Incorporated | Method and apparatus for upgrading a data processing system from a single processor system to a multiprocessor system |
US5490279A (en) | 1993-05-21 | 1996-02-06 | Intel Corporation | Method and apparatus for operating a single CPU computer system as a multiprocessor system |
EP0671685B1 (en) | 1994-03-08 | 1998-11-04 | Digital Equipment Corporation | Method and apparatus for detecting and executing cross-domain calls in a computer system |
US5574927A (en) | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5659709A (en) | 1994-10-03 | 1997-08-19 | Ast Research, Inc. | Write-back and snoop write-back buffer to prevent deadlock and to enhance performance in an in-order protocol multiprocessing bus |
US5634073A (en) | 1994-10-14 | 1997-05-27 | Compaq Computer Corporation | System having a plurality of posting queues associated with different types of write operations for selectively checking one queue based upon type of read operation |
US5638525A (en) | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
JP3787155B2 (ja) | 1995-03-17 | 2006-06-21 | インテル・コーポレーション | ローカル・バス上の多重プロセッシング・キャッシュ・コヒーレンシ・プロトコル |
KR100513138B1 (ko) | 1996-01-24 | 2005-09-07 | 선 마이크로시스템즈 인코퍼레이티드 | 네트워크 또는 로컬 메모리로부터 수신된 명령 세트를실행하는 프로세서 및 컴퓨터 시스템 |
US5802373A (en) * | 1996-01-29 | 1998-09-01 | Digital Equipment Corporation | Method for providing a pipeline interpreter for a variable length instruction set |
US5987590A (en) | 1996-04-02 | 1999-11-16 | Texas Instruments Incorporated | PC circuits, systems and methods |
US5764934A (en) | 1996-07-03 | 1998-06-09 | Intel Corporation | Processor subsystem for use with a universal computer architecture |
US5909559A (en) | 1997-04-04 | 1999-06-01 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
US6026238A (en) | 1997-08-18 | 2000-02-15 | Microsoft Corporatrion | Interface conversion modules based upon generalized templates for multiple platform computer systems |
US6275938B1 (en) | 1997-08-28 | 2001-08-14 | Microsoft Corporation | Security enhancement for untrusted executable code |
US5923892A (en) | 1997-10-27 | 1999-07-13 | Levy; Paul S. | Host processor and coprocessor arrangement for processing platform-independent code |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
-
1998
- 1998-05-26 US US09/085,187 patent/US6480952B2/en not_active Expired - Lifetime
-
1999
- 1999-01-25 JP JP2000551315A patent/JP2002517034A/ja active Pending
- 1999-01-25 WO PCT/US1999/001456 patent/WO1999061981A1/en active IP Right Grant
- 1999-01-25 KR KR10-2000-7013237A patent/KR100537813B1/ko not_active IP Right Cessation
- 1999-01-25 EP EP99904229A patent/EP1080407B1/en not_active Expired - Lifetime
- 1999-01-25 DE DE69901176T patent/DE69901176T2/de not_active Expired - Lifetime
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005071522A1 (ja) * | 2004-01-27 | 2005-08-04 | Nec Corporation | 高速再起動方法および情報処理装置ならびにプログラム |
JPWO2005071522A1 (ja) * | 2004-01-27 | 2007-09-13 | 日本電気株式会社 | 高速再起動方法および情報処理装置ならびにプログラム |
JP4683218B2 (ja) * | 2004-01-27 | 2011-05-18 | 日本電気株式会社 | 高速再起動方法および情報処理装置ならびにプログラム |
US9298472B2 (en) | 2004-01-27 | 2016-03-29 | Nec Corporation | High-speed restart method, information processing device, and program |
JP2010003042A (ja) * | 2008-06-19 | 2010-01-07 | Koyo Electronics Ind Co Ltd | マルチcpuシステムおよびプログラマブルコントローラ |
Also Published As
Publication number | Publication date |
---|---|
KR20010043807A (ko) | 2001-05-25 |
US20020013892A1 (en) | 2002-01-31 |
WO1999061981A1 (en) | 1999-12-02 |
KR100537813B1 (ko) | 2005-12-20 |
EP1080407B1 (en) | 2002-04-03 |
DE69901176D1 (de) | 2002-05-08 |
DE69901176T2 (de) | 2002-11-14 |
EP1080407A1 (en) | 2001-03-07 |
US6480952B2 (en) | 2002-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100537813B1 (ko) | 에뮬레이션 코프로세서 | |
US6308255B1 (en) | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system | |
US9262236B2 (en) | Warning track interruption facility | |
JP6249961B2 (ja) | プログラムによる警告追跡割り込みファシリティの使用 | |
US9104509B2 (en) | Providing by one program to another program access to a warning track facility | |
AU2012366769B2 (en) | Warning track interruption facility |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060113 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060113 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061019 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061107 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070522 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080520 |