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
Application number
JP2000551315A
Other languages
English (en)
Other versions
JP2002517034A5 (ja
Inventor
ゴリシェク・ザ・フォース,フランク・ジェイ
ボスウェル,チャールズ・アール
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2002517034A publication Critical patent/JP2002517034A/ja
Publication of JP2002517034A5 publication Critical patent/JP2002517034A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent 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

(57)【要約】 ホストプロセッサ(48、152)およびエミュレーションコプロセッサ(50、150)を採用するコンピュータシステム(5)である。ホストプロセッサ(48、152)は、ホスト命令セットアーキテクチャによって定義される命令を実行するよう構成されるハードウェアを含み、エミュレーションコプロセッサ(50、150)は、ホスト命令セットアーキテクチャと異なる命令セットアーキテクチャ(「外部命令セットアーキテクチャ」)によって定義される命令を実行するよう構成されるハードウェアを含む。ホストプロセッサコア(48、152)は、オペレーティングシステムコードおよび、ホスト命令セットアーキテクチャ内にコード化されるアプリケーションプログラムを実行する。外部アプリケーションプログラムが起動されると、ホストプロセッサコア(50、150)は、エミュレーションコプロセッサコア(48、152)と交信して、エミュレーションコプロセッサコア(48、152)が外部アプリケーションプログラムを実行するようにする。したがって、外部命令セットアーキテクチャに従ってコード化されたアプリケーションプログラムは、ハードウェア内で直接に実行可能である。コンピュータシステム(5)は、異種のマルチプロセッシングシステムを特徴とし得る。エミュレーションコプロセッサ(50、150)が外部アプリケーションプログラムを実行している一方で、ホストプロセッサ(48、152)は、外部アプリケーションプログラムと関連しないオペレーティングシステムルーチンを実行することが可能であり、またはホストアプリケーションプログラムを実行することが可能である。

Description

【発明の詳細な説明】
【0001】
【発明の背景】
1.技術分野 この発明は、コンピュータシステムのためのプロセッサの分野に関し、より特
定的には、コンピュータシステム内の複数の命令セットアーキテクチャをサポー
トすることに関する。
【0002】 2.背景技術 コンピュータシステムは、多くの環境において重要な生産性ツールとなってき
ている。仕事のほぼすべてのラインが、その仕事の中心となる多くのタスクを行
なうためにコンピュータシステムから恩恵を受けている。たとえば、管理専門職
は、ビジネス上重要なデータのデータベースを管理し、書類を作成し管理するな
どのためにコンピュータシステムを使用する。技術専門職は、製品の研究、設計
および検証のためにコンピュータシステムを使用する。製造および流通センター
は、製造機械を制御し、在庫管理のために製造プロセスを通る製品を追跡し、卸
売/小売センターへの流通製品を管理するためにコンピュータシステムを使用す
る。以上のすべてが、Eメール、インターネット、イントラネットなどを介する
通信のためにもコンピュータシステムを使用するであろう。家計管理、通信およ
び娯楽を含む、コンピュータシステムの家庭での使用もまた多い。コンピュータ
システムのその他の多くの使用が存在する。
【0003】 以上が示すように、コンピュータシステムのための多様な組の使用が開発され
てきた。一般的には、これらの使用は、コンピュータシステムに設けられたオペ
レーティングシステム下で実行するよう設計されるさまざまなアプリケーション
プログラムによってサポートされる。オペレーティングシステムは、アプリケー
ションプログラムとコンピュータシステムハードウェアとの間にインターフェイ
スを与える。各コンピュータシステムは、ハードウェア構成(たとえば、メモリ
の量、入力/出力(I/O)デバイスの数およびタイプなど)においてさまざま
な差異を有するであろう。オペレーティングシステムは、ハードウェアの差異か
らアプリケーションプログラムを切り離す。したがって、アプリケーションプロ
グラムはしばしば、アプリケーションプログラムが実行するべき正確なハードウ
ェア構成に関係なしに設計され得る。加えて、オペレーティングシステムは、多
くの異なったタイプのアプリケーションプログラムが必要とするであろうさまざ
まなローレベルのサービスを与え、アプリケーションプログラムの内側にこれら
のサービスをプログラミングする代わりにアプリケーションプログラムがオペレ
ーティングシステムサービスに依存することを可能にする。一般的に、オペレー
ティングシステムは、タスクのスケジューリング(たとえば、同時に実行可能で
ある異なったアプリケーションプログラム)、I/Oデバイスおよびメモリなど
のシステム資源の管理および割当て、エラー処理(たとえば誤って動作するアプ
リケーションプログラム)などを与える。オペレーティングシステムの例は、中
でも、ウィンドウズ(Windows)オペレーティングシステム(ウィンドウズ95お
よびウィンドウズNTを含む)、UNIX、DOSおよびMAC−OSである。
反対に、アプリケーションプログラムは、特定のユーザタスクを達成するために
特定のユーザ機能を与える。ワードプロセッサ、スプレッドシート、グラフィッ
クスデザインプログラム、在庫管理プログラムなどが、アプリケーションプログ
ラムの例である。
【0004】 したがって、アプリケーションプログラムは典型的には、特定のオペレーティ
ングシステム上で動作するよう設計される。オペレーティングシステムから利用
可能であるサービス(「オペレーティングシステムルーチン」)が、アプリケー
ションプログラムによって任意で使用される。加えて、アプリケーションプログ
ラムは、オペレーティングシステムの要件に従う。
【0005】 オペレーティングシステムが典型的にアプリケーションプログラムを切り離さ
ないハードウェア特徴の1つは、コンピュータシステム内のプロセッサの命令セ
ットアーキテクチャである。一般的に、命令セットアーキテクチャは、プロセッ
サ上で実行する命令および、命令によって直接使用されるプロセッサ資源(レジ
スタなど)を定義する。アプリケーションプログラムは典型的には、命令セット
アーキテクチャによって定義される命令の組に従い、このためオペレーティング
システムは、コンピュータシステムハードウェアのこの特徴からアプリケーショ
ンプログラムを切り離さない。
【0006】 上述したように、コンピュータシステムは、広範なカスタマにとって有用であ
るように多数の異なったタイプのアプリケーションプログラムをサポートしなけ
ればならない。新しく開発された命令セットアーキテクチャを採用するプロセッ
サは、アプリケーション開発者を、新しい命令セットアーキテクチャのために設
計されたアプリケーションを開発するという困難な課題に直面させる。しかしな
がら、アプリケーションプログラムなしでは、命令セットアーキテクチャおよび
そのために設計されたプロセッサはしばしば、せいぜい限られた市場の支持しか
達成しないであろう。
【0007】 多数のアプリケーションプログラムと、各アプリケーションプログラムを新し
い命令セットアーキテクチャに「ポート」するために必要とされる時間および労
力とのために、新しい命令セットアーキテクチャを用いてアプリケーションプロ
グラムを再び作ることは、困難かつ時間のかかることである。さらに、多くのア
プリケーションプログラムについてのソースコードは、ポートを実行しようと望
んでいるものにとって利用不可能であろう。他方で、オペレーティングシステム
は(特に広範に受入れられているものについては)数がより少なく、さまざまな
命令セットアーキテクチャにポートされるであろう。たとえば、ウィンドウズN
Tは、x86アーキテクチャに加えて、デジタル・イクイップメント社(Digita
l Equipment Corporation)によって開発されたアルファ(Alpha)アーキテクチ
ャ、IBMおよびモトローラ(Motorola)によって開発されたパワーPC(Powe
r PC)アーキテクチャおよびMIPSアーキテクチャをサポートする。
【0008】 大きいアプリケーションベースを提供し、これによってより多くのアプリケー
ションプログラムが開発されるように導くであろう市場支持を生み出すために、
新しく開発された命令セットアーキテクチャを採用するプロセッサに基づくコン
ピュータシステムは、異なった命令セットアーキテクチャにコード化されたアプ
リケーションをサポートするであろう。ここでは、コンピュータシステム内のプ
ロセッサによって採用される命令セットアーキテクチャによって定義される命令
を用いるコードは、「ネイティブ」または「ホスト」と呼ばれ、異なった命令セ
ットアーキテクチャによって定義される命令を用いるコードは、「ノンネイティ
ブ」または「外部(foreign)」と呼ばれる。
【0009】 (IA−32またはAPXとも呼ばれる)x86アーキテクチャは、コンピュ
ータ史上最大のアプリケーションプログラムベースの1つである。これらのプロ
グラムの大部分が、ウィンドウズオペレーティングシステム下で実行するよう開
発されている。ウィンドウズおよびx86アプリケーションプログラムは、ここ
に例として定期的に用いられるが、ここに開示される技術およびハードウェアは
、この命令セットアーキテクチャおよびオペレーティングシステムに限られるも
のではない。いかなるオペレーティングシステムおよび命令セットアーキテクチ
ャが使用されてもよい。
【0010】 ホストプロセッサが非x86である新しいコンピュータシステムは、ウィンド
ウズオペレーティングシステム下で実行するx86(すなわち外部)アプリケー
ションプログラムに対するサポートを提供し得るが、アプリケーションプログラ
ムは非x86ホストプロセッサのために開発されている。コンピュータシステム
内で外部アプリケーションをサポートするために用いられてきた2つの方法は、
ソフトウェアエミュレーションおよびバイナリ変換である。ソフトウェアエミュ
レーションは一般的に、命令が選択され実行されるとアプリケーションプログラ
ム内の各命令を読出すことと、ホストアーキテクチャ内の等価の命令シーケンス
を実行することとを含む。バイナリ変換は一般的には、プログラムを実行するよ
り前に、アプリケーションプログラム内の各命令を等価の命令シーケンスに変換
し、次に変換されたプログラムシーケンスを実行することを伴う。
【0011】 残念ながら、各外部命令は、プログラムの実行中に調べられるので、ソフトウ
ェアエミュレーションは、外部命令セットアーキテクチャを採用するコンピュー
タシステム上で達成可能なものよりも、アプリケーションプログラムの性能が大
きく低減されている。さらに、エミュレーションプログラムを記憶しデータ構造
をサポートするために、より多くのメモリがアプリケーションプログラムを実行
するために必要とされる。アプリケーションプログラムが、リアルタイム特徴(
たとえばオーディオおよびビデオ)を含む場合、これらの特徴は、過剰な実行時
間のために不良に動作するであろう。さらになお、命令セットアーキテクチャの
プロセッサ実現化例はしばしば、ソフトウェアエミュレータによってモデリング
されなければならないさまざまなドキュメントされていない特徴(既知および未
知)を含む。さらに、(x86浮動小数点レジスタスタックなどの)複雑なハー
ドウェア特徴は、ソフトウェアエミュレータ内で正確にモデリングするのが困難
である。
【0012】 バイナリ変換もまた、いくつかの欠点がある。バイナリ変換は、ユーザには見
えない。バイナリ変換はしばしば、プログラムをうまく変換するためにアプリケ
ーションプログラムコードを介する複数の通過を必要とする。その間、ソフトウ
ェアエミュレーションを使用してアプリケーションを実行するであろう(上述し
た多くの欠点を伴う。)しばしば、完全な変換は達成されず、このためソフトウ
ェアエミュレーションがなおも必要とされる。
【0013】 上記の方式のいくつかの組合せが、コンピュータシステム会社およびオペレー
ティングシステム会社によって採用されてきた。たとえば、デジタル・イクイッ
プメント社は、FX!32システムを提供し、マイクロソフト社(Microsoft)
は、ウィンドウズNTに対するWx86拡張命令(Wx86 extension)を提供する
。しかしながら、これらの方式は機能を提供するが、外部アプリケーションに所
望される高性能は一般的には、満足されるものではない。
【0014】
【発明の開示】 以上に概略した課題は、この発明に従うホストプロセッサおよびエミュレーシ
ョンコプロセッサを採用するコンピュータシステムによって大部分解決される。
ホストプロセッサは、ホスト命令セットアーキテクチャによって定義される命令
を実行するよう構成されるハードウェアを含み、エミュレーションコプロセッサ
は、ホスト命令セットアーキテクチャと異なる命令セットアーキテクチャ(「外
部命令セットアーキテクチャ」)によって定義される命令を実行するよう構成さ
れるハードウェアを含む。ホストプロセッサは、ホスト命令セットアーキテクチ
ャ内にコード化されるアプリケーションプログラムおよびオペレーティングシス
テムコードを実行する。外部アプリケーションプログラムが起動されると、ホス
トプロセッサは、エミュレーションコプロセッサと交信して、エミュレーション
コプロセッサコアに、外部アプリケーションプログラムを実行させるようにする
【0015】 有利には、外部命令セットアーキテクチャに従ってコード化されたアプリケー
ションプログラムは、ハードウェア内で直接に実行可能である。アプリケーショ
ンプログラムの実行性能は、ソフトウェアエミュレーションまたはバイナリ変換
方法のものよりも実質的により優れているであろう。さらに、実行性能は、外部
命令セットアーキテクチャを採用するプロセッサに基づくコンピュータシステム
内のアプリケーションプログラムの実行性能と実質的に同様であり得、したがっ
ては外部アプリケーションプログラムのリアルタイム挙動の多くを保全するであ
ろう。ソフトウェアエミュレーション/バイナリ変換方法およびこれらの組合せ
は、外部アプリケーションプログラムのハードウェア実行のために、排除され得
る。エミュレーションコプロセッサは、外部命令セットアーキテクチャを実行す
るためのハードウェア機能を含むので、正確なアーキテクチャモデリングという
困難が排除され得る。これらのさまざまな利点の組合せは、高レベル性能を提供
し、外部アプリケーション実行性能がユーザに広く受入れられることを可能にす
るであろう。したがって、ホスト命令セットアーキテクチャに基づくコンピュー
タシステムの市場支持が、増大するであろう。市場支持が増大すると、ホスト命
令セットアーキテクチャのためにコード化されたアプリケーションプログラムの
数もまた増大するであろう。したがって、ホスト命令セットアーキテクチャの長
期の成功および存続可能性がより高くなるであろう。
【0016】 コンピュータシステム内に外部命令セットアーキテクチャのためのハードウェ
ア機能を設けることは、さらなる利点を生み出す。特に、このコンピュータシス
テムは、異種のマルチプロセッシングを特徴とするであろう。エミュレーション
コプロセッサが外部アプリケーションプログラムを実行している一方で、ホスト
プロセッサは、外部アプリケーションプログラムに関連しないオペレーティング
システムルーチンを実行するかまたは、ホストアプリケーションプログラムを実
行することが可能である。有利には、このコンピュータシステムは、ホストプロ
セッサのみおよび、外部命令セットアーキテクチャのためのソフトウェアエミュ
レーション/バイナリ変換を採用するコンピュータシステムによって達成可能で
あるよりも、ホストおよび外部コードの両方について実質的により高いスループ
ットを達成するであろう。
【0017】 広くには、この発明は、第1のプロセッサおよび第2のプロセッサを含むコン
ピュータシステムのための装置を企図する。第1のプロセッサは、第1の命令セ
ットアーキテクチャによって定義される第1の命令を実行するよう構成される。
コンピュータシステムによって採用されるオペレーティングシステムは、第1の
命令を用いてコード化される。第1のプロセッサに結合される、第2のプロセッ
サは、第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチ
ャによって定義される第2の命令を実行するよう構成される。オペレーティング
システム内で実行するよう設計されるアプリケーションプログラムは、第2の命
令を用いてコード化される。第2のプロセッサは、アプリケーションプログラム
を実行するよう構成されるが、その一方で第1のプロセッサはオペレーティング
システムを実行するよう構成される。加えて、第2のプロセッサは、アプリケー
ションプログラムのためのオペレーティングシステムルーチンの使用を検出する
と、第1のプロセッサと交信するよう構成される。
【0018】 この発明はさらに、第1のプロセッサと、第2のプロセッサと、オペレーティ
ングシステムと、アプリケーションプログラムとを含む異種のマルチプロセッシ
ングシステムを企図する。第1のプロセッサは、第1の命令セットアーキテクチ
ャによって定義される第1の命令を実行するよう構成される。第2のプロセッサ
は、第1のプロセッサに結合され、第1の命令セットアーキテクチャと異なる第
2の命令セットアーキテクチャによって定義される第2の命令を実行するよう構
成される。オペレーティングシステムは、第1の命令を用いてコード化されるが
、アプリケーションプログラムは、第2の命令を用いてコード化され、オペレー
ティングシステム内で実行するよう設計される。第2のプロセッサは、アプリケ
ーションプログラムを実行するよう構成されるが、第1のプロセッサは、アプリ
ケーションプログラムに関連しないプロセスを同時に実行するよう構成される。
【0019】 さらに、この発明は、第1の命令セットアーキテクチャからの命令を用いてコ
ード化され、かつ、第1の命令セットアーキテクチャと異なる第2の命令セット
アーキテクチャからの命令を用いてコード化されるオペレーティングシステム内
で実行するよう設計されるアプリケーションプログラムを実行するための方法を
企図する。アプリケーションプログラムの起動は、第2の命令セットアーキテク
チャからの命令を実行するよう構成される第1のプロセッサ上で実行するオペレ
ーティングシステムによって検出される。アプリケーションプログラムのための
コンテクストは、第1の命令セットアーキテクチャからの命令を実行するよう構
成される第2のプロセッサ内で確立される。アプリケーションプログラムは、第
2のプロセッサ上で実行される。
【0020】 この発明の他の目的および利点は、添付の図面を参照し以下の詳細な説明を読
むと明らかになるであろう。
【0021】 この発明は、さまざまな変形および代替の態様が可能であるが、その特定の実
施例が、図面の例によって示され、詳細にここに記載される。しかしながら、図
面およびその詳細な説明は、この発明を、開示される特定の態様に限定するもの
ではなく、反対に、その意図は、前掲の特許請求の範囲によって定義されるよう
なこの発明の精神および範囲内にあるすべての変形、等価および代替を含むもの
である。
【0022】
【発明を実施するモード】
図1を参照すると、バスブリッジ12を介してさまざまなシステム構成要素に
結合されるプロセッサ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に結合される。
【0023】 一般的に言って、プロセッサ10は、ホストプロセッサコアと、エミュレーシ
ョンコプロセッサコアとを含む。ホストプロセッサコアは、ホスト命令セットア
ーキテクチャによって定義される命令を実行するよう構成されるハードウェアを
含み、エミュレーションコプロセッサコアは、ホスト命令セットアーキテクチャ
と異なる命令セットアーキテクチャ(「外部命令セットアーキテクチャ」)によ
って定義される命令を実行するよう構成されるハードウェアを含む。ホストプロ
セッサコアは、オペレーティングシステムコードと、ホスト命令セットアーキテ
クチャ内にコード化されるアプリケーションプログラムとを実行する。外部アプ
リケーションプログラムが起動されると、ホストプロセッサコアは、エミュレー
ションコプロセッサコアと交信して、エミュレーションコプロセッサコアに外部
アプリケーションプログラムを実行させる。
【0024】 有利には、外部命令セットアーキテクチャに従ってコード化されたアプリケー
ションプログラムは、プロセッサ10を介してハードウェア内で直接に実行可能
である。アプリケーションプログラムの実行性能は、ソフトウェアエミュレーシ
ョンまたはバイナリ変換方法のそれよりも実質的に優れているであろう。さらに
、実行性能は、外部命令セットアーキテクチャを採用するプロセッサに基づくコ
ンピュータシステム内のアプリケーションプログラムの実行性能と実質的に同様
であろう。ソフトウェアエミュレーション/バイナリ変換方法およびそれらの組
合せは、外部アプリケーションプログラムのハードウェア実行のために、排除さ
れ得る。プロセッサ10は、外部命令セットアーキテクチャを実行するためのハ
ードウェア機能を含むので、正確なアーキテクチャモデリングという困難が排除
され得る。さらに、外部アプリケーションプログラムは、ネイティブコンピュー
タシステム内での実行と同様の時間期間内に実行するので、外部アプリケーショ
ンプログラムのリアルタイム挙動の多くが保全され得る。これらのさまざまな利
点の組合せは、高性能を提供し、外部アプリケーション実行性能がユーザに広く
受入れられることを可能とするであろう。したがって、ホスト命令セットアーキ
テクチャに基づくコンピュータシステムの市場支持が増大するであろう。市場支
持が増大すると、ホスト命令セットアーキテクチャのためにコード化されたアプ
リケーションプログラムの数も増大するであろう。したがって、ホスト命令セッ
トアーキテクチャの長期的成功および存続可能性はより高くなるであろう。
【0025】 コンピュータシステム5内に外部命令セットアーキテクチャのためのハードウ
ェア機能を与えることは、さらなる利点を生み出す。特にコンピュータシステム
5は、異種のマルチプロセッシングシステムを特徴とするであろう。エミュレー
ションコプロセッサが外部アプリケーションプログラムを実行している一方で、
ホストプロセッサは、外部アプリケーションプログラムに関連しないオペレーテ
ィングシステムルーチンを実行可能であり、またはホストアプリケーションプロ
グラムを実行可能である。有利には、コンピュータシステム5は、ホストプロセ
ッサのみ、および外部命令セットアーキテクチャのためのソフトウェアエミュレ
ーション/バイナリ変換を採用するコンピュータシステムによって達成可能であ
るよりも、ホストおよび外部コードの両方について実質的により高いスループッ
トを達成することが可能である。
【0026】 ある特定の実施例では、ホスト命令セットアーキテクチャは、デジタル・イク
イップメント社によって開発されたアルファ命令セットアーキテクチャであり、
外部命令セットアーキテクチャは、x86命令セットアーキテクチャである。し
かしながら、いかなる命令セットアーキテクチャが、ホスト命令セットアーキテ
クチャとして選択されることも可能である。たとえば、ホスト命令セットアーキ
テクチャは、パワーPCアーキテクチャ、インテル(Intel)によって開発され
たIA−64アーキテクチャ、MIPSアーキテクチャ、SPARCアーキテク
チャなどであってもよい。同様に、外部命令セットアーキテクチャは、上に列挙
した例のいずれをも含むホスト命令セットアーキテクチャ以外のいかなる命令セ
ットアーキテクチャとして選択されてもよい。
【0027】 なお、コンピュータシステム5およびプロセッサ10のいくつかの異なった実
施例がここに示される。図1および図2に示す実施例は、ここでの好ましい実施
例として考慮されるが、ここに示す実施例のいずれも、コスト、開発計画、複雑
性などを含むさまざまな設計要因に従って、好適であり得る。さらなる実施例が
、前掲の特許請求の範囲の精神および範囲内で企図される。
【0028】 オプションのL2キャッシュ38に結合されるプロセッサ10が、図1に示さ
れる。L2キャッシュ38は、このキャッシュがCPUバス34とは別個の専用
のインターフェイスを介してプロセッサ10に結合されるので、「バックサイド
L2」と呼ばれる。L2キャッシュ38は、プロセッサ10内で採用されるいか
なる内部キャッシュよりも大きく、主メモリ14から達成可能であるよりもより
高速のアクセスのためにデータを記憶するよう用いられ得る。
【0029】 ここで用いられる、「プロセッサ」という言葉は、少なくとも、特定の命令セ
ットアーキテクチャによって定義される命令を実行するためのハードウェアのこ
とを言う。したがって、以下に図2に示すプロセッサコアは、この定義の下での
プロセッサであるとみなされる。プロセッサは、所望のごとくさらなるハードウ
ェアを含んでもよい。
【0030】 バスブリッジ12は、プロセッサ10と、主メモリ14と、グラフィックスコ
ントローラ18と、PCIバス24につながれるデバイスとの間のインタフェー
スを与える。操作がバスブリッジ12に接続されるデバイスの1つから受取られ
ると、バスブリッジ12は、操作のターゲット(たとえば、特定のデバイスまた
は、PCIバス24の場合には、ターゲットはPCIバス24上にある)を特定
する。バスブリッジ12は、ターゲットされたデバイスに操作を送る。バスブリ
ッジ12は一般的には、ソースデバイスまたはバスによって使用されるプロトコ
ルからターゲットデバイスまたはバスによって使用されるプロトコルに操作を変
換する。ある実施例では、CPUバス34は、デジタル・イクイップメント社に
よって開発されたEV6バスを含み、バスブリッジ12は、アルファ(Alpha)
21171または21172コア論理チップセットを含む。しかしながら、いか
なるCPUバスおよび好適なバスブリッジが使用されてもよい。
【0031】 PCIバス24に、ISA/EISAバスへのインタフェースを与えることに
加えて、2次バスブリッジ26はさらに、所望のごとくさらなる機能を組込んで
もよい。たとえば、ある実施例では、2次バスブリッジ26は、PCIバス24
の所有権を調停するためのマスタPCIアービタ(図示せず)を含む。2次バス
ブリッジ26の外部またはこれと統合される、入力/出力コントローラ(図示せ
ず)をもコンピュータシステム5内に含めて、所望のごとく、キーボードおよび
マウス32ならびにさまざまな直列ポートおよび並列ポートのための動作上のサ
ポートを与えてもよい。他の実施例では、外部キャッシュユニット(図示せず)
が、プロセッサ10とバスブリッジ12との間にCPUバス34にさらに結合さ
れてもよい。代替的に、外部キャッシュは、バスブリッジ12に結合されてもよ
く、外部キャッシュのためのキャッシュ制御論理は、バスブリッジ122統合さ
れてもよい。
【0032】 主メモリ14は、アプリケーションプログラムが記憶され、プロセッサ10が
主に実行するメモリである。好適な主メモリ14は、DRAM(Dynamic Random
Access Memory)および、好ましくはSDRAM(Synchronous DRAM)の複数個
のバンクを含む。
【0033】 PCIデバイス22A〜22Bは、たとえば、ネットワークインターフェイス
カード、ビデオアクセラレータ、オーディオカード、ハードもしくはフロッピー
ディスクドライブまたはドライブコントローラ、SCSI(スモールコンピュー
タシステムインターフェイス)アダプタおよび電話機能カードなどの、さまざま
な周辺デバイスを例示するものである。同様に、ISAデバイス28は、モデム
、サウンドカードおよび、GPIBまたはフィールドバスインターフェイスカー
ドなどのさまざまなデータ収集カードなどの、さまざまなタイプの周辺デバイス
を例示するものである。
【0034】 グラフィックスコントローラ18は、ディスプレイ36上のテキストおよび画
像のレンダリングを制御するために設けられる。グラフィックスコントローラ1
8は、先行技術に一般的に公知の典型的なグラフィックスアクセラレータを採用
して、主メモリ14におよびそこから効果的にシフト可能である3次元のデータ
構造をレンダリングすることが可能である。したがって、グラフィックスコント
ローラ18は、バスブリッジ12内のターゲットインターフェイスへのアクセス
を要求しかつ受取ることによって主メモリ14へのアクセスを獲得することが可
能であるという点で、AGPバス20のマスタであり得る。専用のグラフィック
スバスが、主メモリ14からのデータの高速の取出しを可能とする。ある操作で
は、グラフィックスコントローラ18は、AGPバス20上のPCIプロトコル
トランザクションを生成するようさらに構成されてもよい。したがって、バスブ
リッジ12のAGPインターフェイスは、AGPプロトコルトランザクションと
、PCIプロトコルターゲットおよびイニシエータトランザクションとの両方を
サポートする機能を含み得る。ディスプレイ36は、画像またはテキストが与え
られることが可能である任意の電子ディスプレイである。好適なディスプレイ3
6は、陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)などを含む。
【0035】 なお、AGPバス、PCIバスおよびISAバスまたはEISAバスが、上記
の記載では例として用いられたが、いかなるバスアーキテクチャが所望のごとく
置換えられてもよい。さらになお、コンピュータシステム5は、付加的プロセッ
サ(たとえば、オプションのL2キャッシュ38aとともに、コンピュータシス
テム5のオプションの構成要素として示されるプロセッサ10a)を含むマルチ
プロセッシングコンピュータシステムであってもよい。プロセッサ10aは、プ
ロセッサ10と同様であってもよい。より特定的には、プロセッサ10aは、プ
ロセッサ10の同一のコピーであってもよい。図1に示すとおり、プロセッサ1
0aは、CPUバス34と同様の別個のCPUバス34aを介してバスブリッジ
12に結合される。代替的に、プロセッサ10aは、プロセッサ10とCPUバ
ス34を共有してもよい。
【0036】 図2を参照すると、プロセッサ10の第1の実施例のブロック図が示される。
他の実施例が可能であり企図される。図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との間に結
合される。
【0037】 ホストプロセッサコア48は、命令キャッシュ44からの命令をフェッチしか
つ、これらの命令を実行するよう構成される。命令は、ホストアプリケーション
プログラムの一部を含んでもよく、またはコンピュータシステム5によって採用
されるオペレーティングシステムの一部を含んでもよい。オペレーティングシス
テムのある特定の部分を用いて、外部アプリケーションプログラムの起動を含む
、プロセスを生成する。オペレーティングシステムのプロセス生成部分の実行中
に、外部アプリケーションプログラムが起動されていると検出されれば、ホスト
プロセッサコア48は、コマンドインターフェイス54を介してエミュレーショ
ンコプロセッサコア50と交信する。ホストプロセッサコア48は、起動されて
いる外部アプリケーションプログラムに対応するエミュレーションコプロセッサ
コア50内のコンテクストを確立する。コンテクスト内に含まれるのは、初期プ
ログラムカウンタアドレスであり、外部アプリケーションプログラム内の第1の
命令は、ここからフェッチされる。コンテクストが一旦確立されると、ホストプ
ロセッサコア48は、エミュレーションコプロセッサコア50にコマンドを与え
て、命令を開始する。エミュレーションコプロセッサコア50は、プログラムカ
ウンタアドレスの命令のフェッチを開始し、外部命令セットアーキテクチャに従
って命令を実行する。ここで用いられる「コンテクスト」という言葉は、プロセ
スに特定的である値を言う。コンテクストは、一般的には、プロセスに割当てら
れるメモリページと、レジスタ値とを含む。
【0038】 エミュレーションコプロセッサコア50は、外部アプリケーションプログラム
プロセス内で、ホスト命令セットアーキテクチャ内にコード化された命令への遷
移が生じているかどうかを決定するよう構成される。たとえば、外部アプリケー
ションプログラムがオペレーティングシステムルーチンをコールした場合、オペ
レーティングシステムはホスト命令セットアーキテクチャに従ってコード化され
ているので、遷移が検出される。加えて、オペレーティングシステムコードまた
は、ホスト命令セットアーキテクチャを用いる他のコードを導く例外および他の
プロセッサ事象は、遷移である。遷移が生じていると決定すると、エミュレーシ
ョンコプロセッサコア50は、コマンドインターフェイス54を介してホストプ
ロセッサコア48と、エミュレーションコプロセッサコア50が停止したことを
交信する。ホストプロセッサコア48は、停止のための理由を決定するためにコ
ンテクスト情報を要求し、対応する動作をとる(たとえば、コールされたルーチ
ンを実行するかまたは、オペレーティングシステムサービスを与える)。一旦、
ホストプロセッサコア48が、外部アプリケーションプログラムが再開可能であ
ると決定すると、ホストプロセッサコア48は、(もし必要であれば)コンテク
スト情報を与え、エミュレーションコプロセッサコア50が開始するためのコマ
ンドを与える。
【0039】 コマンドインターフェイス54は、さまざまな態様で実現可能である。たとえ
ば、コマンドインターフェイス54は、ホストプロセッサコア48とエミュレー
ションコプロセッサコア50との間の1組のハードワイヤード信号を含んでもよ
い。コマンド信号は、コマンドインターフェイス54のために定義される各コマ
ンドに割当てられてもよく、さらに、コンテクスト値を送るためのバスに割当て
られてもよい。代替的に、コマンドインターフェイス54は、プロセッサコア間
の通信のためのFIFO(すなわち、ホストプロセッサコア48からエミュレー
ションコプロセッサコア50へのメッセージのための1つ以上のFIFOおよび
、エミュレーションコプロセッサコア50からホストプロセッサコア48へのメ
ッセージのための1つ以上のFIFO)を含んでもよい。なお、コマンドインタ
ーフェイス54は、「通信チャネル」の一例であり得る。一般的に、通信チャネ
ルは、伝送器と受信器との間の接続であり、これを介してメッセージが送信され
ることが可能である。予め定義されたプロトコルを用いて、チャネルを介して伝
送されるメッセージを定義してもよい。たとえば、ハードワイヤード信号は、通
信チャネルを形成し、信号の組合せは、メッセージを伝送するために用いられる
。さらに、FIFOは、通信チャネルを形成してもよく、メッセージはFIFO
エントリとして符号化される。FIFOは単に、メモリ内のキューとして維持さ
れてもよい。
【0040】 ホストプロセッサコア48およびエミュレーションコプロセッサコア50は、
この実施例では、命令キャッシュ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からフェッチされる。
【0041】 ホストプロセッサコア48およびエミュレーションコプロセッサコア50は、
この実施例でも同様に、MMU42を共有する。MMU42は、ホストプロセッ
サコア48およびエミュレーションコプロセッサコア50内の命令の実行によっ
て生成される仮想アドレスから、主メモリ14またはL2キャッシュ38を読出
すためにバスインターフェイスユニット40が使用するであろう物理的アドレス
に変換するよう構成される。命令キャッシュ44およびデータキャッシュ46は
また、物理的アドレスにしたがって命令およびデータを記憶してもよく、この場
合には、MMU42は、命令キャッシュ44およびデータキャッシュ46に並列
にアクセス可能である。
【0042】 一般的には、ホスト命令セットアーキテクチャおよび外部命令セットアーキテ
クチャは、異なったアドレス変換メカニズムを定義する。MMU42は、ホスト
命令セットアーキテクチャによって定義されるアドレス変換メカニズムをサポー
トし得り、ホストプロセッサコア48およびエミュレーションコプロセッサコア
50の両方についての変換は、ホストアドレス変換メカニズムから与えられ得る
。異なったページサイズが、ホストおよび外部命令セットアーキテクチャについ
て定義された場合、所望であれば、変換メカニズムの保護部分は、保護情報のさ
らなるコピーで増強され、より小さいページサイズの粒度に対して独立した保護
を与えることが可能である。代替的に、MMU42は、ホスト命令セットアーキ
テクチャによって定義されるアドレス変換メカニズムと、外部命令セットアーキ
テクチャによって定義されるアドレス変換メカニズムとをサポートするよう構成
されてもよい。オペレーティングシステムは、ホスト命令セットアーキテクチャ
によって定義されるアドレス変換メカニズムにしたがって、メモリのページを仮
想アドレスのために割当ててもよい。さらなるソフトウェアまたはMMU42内
のハードウェアが、外部命令セットアーキテクチャによって定義されるアドレス
変換メカニズムを用いて対応する変換を生成してもよい。代替的に、オペレーテ
ィングシステムは、ページが外部アプリケーションプログラムによって要求され
た場合、外部命令セットアーキテクチャのアドレス変換メカニズム内のアドレス
変換を生成してもよい。
【0043】 図2に示すとおり、ホストプロセッサコア48は、フェッチ/デコードユニッ
ト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は、対応する命令セットアーキテクチャによって定義されるレジスタである
【0044】 機能ユニット62Aおよび72Aは、図2の実施例ではデータキャッシュ46
に接続されるものとして示される。これらの機能ユニットは、メモリ操作(すな
わち、ロードおよび記憶)機能を含んでもよい。代替の実施例では、他の機能ユ
ニットが同様にメモリ操作機能を含んでもよい。機能ユニット62A〜62Cの
組合せは、ホスト命令セットアーキテクチャによって定義される命令を実行する
ために用いられるハードウェアを与える。同様に、機能ユニット72A〜72C
の組合せは、外部命令セットによって定義される命令を実行するために用いられ
るハードウェアを与える。所望であれば、マイクロコード技術を採用して、機能
ユニット設計を簡素にしてもよい。なお、複数の機能ユニットが、図2のコア4
8および50の各々に示されるが、コア48および50の1つまたはその両方に
1つの機能ユニットを有する実施例を含む、より多くのまたはより少ない機能ユ
ニットを有する実施例が企図される。さらに、コア48または50のいずれかが
他方よりも多い機能ユニットを有してもよい。
【0045】 なお、1個のエミュレーションコプロセッサコアが図2に示されるが(1個の
エミュレーションコプロセッサが以下の図7、9、10、11および13に示さ
れる)、複数のエミュレーションコプロセッサが採用されてもよいことが企図さ
れる。さらに、複数の外部命令セットアーキテクチャが、複数のエミュレーショ
ンコプロセッサを用いてサポートされてもよいことが企図される。
【0046】 図3を参照すると、コンピュータシステム5のある実施例によって採用される
ソフトウェアモデルのブロック図が示される。図3は、外部アプリケーションプ
ログラム82を含むホストプロセス80を例示する。図示の実施例は、たとえば
、ホスト命令セットアーキテクチャとしてのアルファ命令セットアーキテクチャ
と、外部命令セットアーキテクチャとしてのx86命令セットアーキテクチャと
ともに、ウィンドウズNTオペレーティングシステムの動作を表わす。図3は、
他のオペレーティングシステム、ホスト命令セットアーキテクチャおよび外部命
令セットアーキテクチャをさらに表わしてもよい。他の実施例が可能であり企図
される。
【0047】 外部アプリケーション82は、外部命令セットアーキテクチャ内にコード化さ
れる1つ以上のモジュールを含む。外部アプリケーションは、オペレーティング
システムルーチンへのコールを含んでもよい。オペレーティングシステムルーチ
ンを直接コールする代わりに、各ルーチンは、「サンク(thunk)」と置換えら
れる。サンクは、これが置換わるルーチンと同じ名前(および、したがって、プ
ロセス80のアドレス空間内の同じアドレス)を有するルーチンである。この実
施例では、サンクは、特定の予め定義された違法操作コードを含み、これによっ
てエミュレーションコプロセッサは違法操作コードトラップ(または「例外」)
をとる。違法操作コードトラップをとると、エミュレーションコプロセッサは、
ホストプロセッサと交信して、外部アプリケーションが停止したことを示す。た
とえば、エミュレーションコプロセッサは、違法操作コードトラップをとるとス
トップメッセージを生成するハードウェアを含んでもよい。代替的に、違法操作
コードトラップハンドラ(違法操作コードトラップが発生するとフェッチされる
よう定義される予め定められたアドレスに記憶されるコード)が、ストップメッ
セージを与えるためにコード化されてもよい。サンクの2つの組、すなわちオペ
レーティングシステムサンク86およびプロセスサンク88が図3に示される。
オペレーティングシステムサンク86は、外部アプリケーションプログラム82
にコード化される直接オペレーティングシステムコールと、外部アプリケーショ
ンプログラム82の実行中の例外に対する応答として生じる間接オペレーティン
グシステムコールとの両方の、オペレーティングシステムコールを捕えるために
用いられる。加えて、プロセスサンク88は、プロセス内に含まれるホストコー
ド90のブロックと交信するために含まれてもよい。しかしながら、プロセスサ
ンク88およびホストコード90は、オプションである。上述したプロセスは、
外部アプリケーションコードとホストコードとの間の遷移を検出するために用い
ることが可能である。他の実施例が、遷移を検出するための他の方法を採用して
もよい。
【0048】 ホストプロセス80は、ホストプロセッサとエミュレーションコプロセッサと
の間で交信するために用いられ得るエミュレーションインターフェイスコード9
2をさらに含む。したがって、オペレーティングシステムサンク86は、エミュ
レーションインターフェイスコード92の呼出につながり、ホストプロセッサと
エミュレーションコプロセッサとの間でメッセージをやり取りし得る。さらに、
ホストプロセッサは、エミュレーションインターフェイスコード92を用いてエ
ミュレーションコプロセッサからコンテクスト情報を要求するよう構成されても
よい。外部アプリケーションプログラム82によってコールされるオペレーティ
ングシステムルーチンと、オペレーティングシステム84によって与えられる対
応するオペレーティングシステムルーチンとは同じ機能を与えるが、命令セット
アーキテクチャが異なるために、コール協定(すなわち、アプリケーションとオ
ペレーティングシステムルーチンとの間でパラメータがやり取りされる態様)は
異なっている。たとえば、レジスタの数およびタイプが異なっていると、レジス
タ内のパラメータを送る能力(メモリ場所とは対照的に)は異なる。したがって
、エミュレーションインターフェイスコード92は、コールについてのパラメー
タであるコンテクスト値を要求可能であり、パラメータをホストプロセッサ上の
対応するレジスタ内に与えることが可能である。オペレーティングシステムコー
ルは次に、ホストプロセッサによって実行され得る。その後に、オペレーティン
グシステムルーチンの結果は、コール協定の変換を逆転させることによってエミ
ュレーションコプロセッサに与えられ得る。
【0049】 さらになお、オペレーティングシステムライブラリコード94が、ホストプロ
セス80内に含まれ得る。たとえば、ウィンドウズNTオペレーティングシステ
ム内に定義されるダイナミックロードライブラリが、オペレーティングシステム
ライブラリ94を介して解決可能である。
【0050】 図4を参照すると、図1に示すコンピュータシステムのある実施例に従うアプ
リケーションプログラムの初期化を例示するフローチャートが示される。他の実
施例が可能であり企図される。いくつかのステップが、わかりやすくするために
直列順序で図4に示され得るが、いかなる好適な順序が用いられてもよい。さら
に、所望のごとくステップが並列に実行されてもよい。
【0051】 アプリケーションプログラムを起動するためにユーザからコマンドを受取ると
、オペレーティングシステムは、アプリケーションプログラムが実行するプロセ
スを生成する。オペレーティングシステムは、アプリケーションプログラムのフ
ァイルフォーマットを調べ、どのタイプのコードがアプリケーションプログラム
内に含まれるかを決定する(ステップ100)。たとえば、ウィンドウズNTオ
ペレーティングシステムを採用する実施例では、ポータブル実行フォーマットは
、どの命令セットアーキテクチャにアプリケーションプログラムがコード化され
るかについての表示を含む。ポータブル実行フォーマットは、ウィンドウズNT
によって定義されるアプリケーションプログラミングインターフェイスの一部と
して定義される。
【0052】 アプリケーションプログラムが、ホスト命令セットアーキテクチャに従ってコ
ード化されるべきであると決定されると(決定ブロック102)、オペレーティ
ングシステムは、通常のホストプロセスとしてプロセスを確立し、アプリケーシ
ョンプログラムがホストプロセッサによって実行される(ステップ104)。他
方で、アプリケーションプログラムが、ホスト命令セットアーキテクチャに従っ
てコード化されるべきでないと決定された場合、オペレーティングシステムは、
アプリケーションプログラムがコンピュータシステム内のエミュレーションコプ
ロセッサによって実行可能である外部命令セットアーキテクチャにしたがってコ
ード化されるかどうかを決定する(決定ブロック106)。外部命令セットアー
キテクチャがエミュレーションコプロセッサによって実行可能である場合、オペ
レーティングシステムは、エミュレーションコプロセッサ上の外部アプリケーシ
ョンプログラムを起動するためにエミュレーションコプロセッサインターフェイ
スコードを呼出す(ステップ108)。外部命令セットアーキテクチャがエミュ
レーションコプロセッサによって実行可能でない場合、オペレーティングシステ
ムは、メッセージをユーザに表示して、アプリケーションがサポートされていな
いことを示す(ステップ110)。アプリケーションプログラムは、この場合起
動されない。代替的に、アプリケーションのソフトウェアエミュレーションまた
はバイナリ変換が、所望であれば、ステップ110で設けられてもよい。たとえ
ば、デジタル・イクイップメント社のFX!32製品またはマイクロソフトのW
x86製品と同様の方式が採用されてもよい。
【0053】 図5を参照すると、図3に示すエミュレーションインターフェイスの呼出(た
とえば、図4に示すステップ108)のある実施例を例示するフローチャートが
示される。他の実施例が可能であり企図される。プロセスコンテクストは、(ホ
ストプロセッサとエミュレーションコプロセッサとの間のコマンドインターフェ
イスを介して伝送されるコマンドを用いて)ホストプロセッサによって確立され
る。アプリケーションプログラム内の第1の命令の仮想アドレスであるプログラ
ムカウンタレジスタについての値を含む、レジスタについての初期値が与えられ
る。コンテクストを確立した後、「ゴー」(すなわち実行の開始)コマンドが、
エミュレーションコプロセッサに与えられる(ステップ120)。
【0054】 ホストプロセッサ上で実行するエミュレーションインターフェイスコードは、
コマンドインターフェイス54をモニタして、ホストコードへの遷移が検出され
たことを示すエミュレーションコプロセッサからのメッセージを受取る(すなわ
ち、ストップメッセージがエミュレーションコプロセッサから受取られる)。ホ
ストコードへの遷移が検出されると(決定ブロック122)、ホストプロセッサ
は、遷移がプロセス脱出条件によるものかどうかを決定する(決定ブロック12
8)。図6に以下に例示するように、ストップコマンドは、停止のための理由に
ついての表示を含み得る。プロセス脱出が検出された場合、破壊プロセスメッセ
ージがオペレーティングシステムに送信され、エミュレーションインターフェイ
スコードが存在する(ステップ130)。
【0055】 他方で、プロセス脱出が検出されなかった場合、ホストプロセッサは、コマン
ドインターフェイス54を介してコンテクスト情報を集めて、どのオペレーティ
ングシステムルーチンが実行されるべきかおよび、コールパラメータは何かを決
定する(ステップ124)。ホストコードは次に、ホストプロセッサ上で実行さ
れる。コンテクスト情報は、コマンドインターフェイス54を介してエミュレー
ションコプロセッサに与えられる。オペレーティングシステムルーチンの実行に
よって与えられた結果は、適用可能であれば、この態様でエミュレーションコプ
ロセッサに送られることが可能である。次に、ゴーコマンドが与えられることに
よって、エミュレーションコプロセッサは続行し(ステップ126)、ホストプ
ロセッサは引続き、エミュレーションコプロセッサからのメッセージをモニタす
る。
【0056】 なお、外部アプリケーションプログラムによってコール可能であるオペレーテ
ィングシステムルーチンには少なくとも2つのタイプがある。第1のタイプは、
外部アプリケーションプログラム内に意図的にコード化されるオペレーティング
システムライブラリルーチンコールである。ライブラリルーチンは、多くのアプ
リケーションプログラムによって使用され得る、低レベルサービスを与えサービ
ス自体をコード化する代わりにアプリケーションプログラムによって使用される
。典型的には、ライブラリルーチンおよびルーチンによって用いられるパラメー
タは、アプリケーション開発者の使用のためにドキュメントされる。加えて、例
外処理を与えるオペレーティングシステムルーチンがコールされ得る。名前が意
味するとおり、エミュレーションコプロセッサが例外を検出したときこれらのル
ーチンは「コールされる」。たとえば、命令フェッチアドレスまたはデータアド
レスが変換を失敗したときに生じるページフォルトが、例外ルーチンを呼出しペ
ージを割当てる。
【0057】 特定のページへの初期アクセスの際にページフォルトは起こり得る。たとえば
、エミュレーションコプロセッサが、アプリケーションプログラムの第1の命令
をフェッチしようとしたとき、第1の命令を含むページはまだ、アプリケーショ
ンプログラムに割当てられていない可能性がある。したがって、フェッチアドレ
スは変換せず、ページフォルトが生じる。同様に、データが新しいページからア
クセスされるたびに、ページフォルトが起こり得る。ページがディスクに「ペー
ジアウト」されて異なったページの割当てが可能とされたときにも、ページフォ
ルトは起こり得る。
【0058】 なお、図5のフローチャートは、ウィンドウズNTなどのプリエンティティブ
・マルチタスクオペレーティングシステム下で割込まれて、ホストプロセッサが
他のタスク(たとえば、ホストアプリケーションプログラムまたは実行されてい
るアプリケーションに関連しないオペレーティングシステムルーチン)を実行す
ることを可能にすることもある。さらに、複数の外部アプリケーションが同時に
実行している場合、複数のプロセスがメッセージをモニタしている可能性がある
【0059】 ある実施例では、エミュレーションインターフェイスコードは、ウィンドウズ
NTオペレーティングシステムに対するWx86拡張命令にインターフェイスし
得る。
【0060】 図6を参照すると、コマンドインターフェイス54のある実施例によってサポ
ートされるコマンドを例示する表140が示される。異なったコマンドまたは、
異なったコマンドと表140に示す1つ以上のコマンドとの組合せを採用する他
の実施例が企図される。
【0061】 レジスタ読出コマンドが、ホストプロセッサによるエミュレーションコプロセ
ッサレジスタの読出のためにサポートされる。エミュレーションコプロセッサは
、要求されたレジスタ値を与えることによってレジスタ読出コマンドに応答する
。なお、メモリ値もまた同様に、エミュレーションコプロセッサのコンテクスト
から読出可能である。しかしながら、エミュレーションコプロセッサおよびホス
トプロセッサは、同じ物理的メモリを共有するので、ホストプロセッサは、メモ
リ値を直接に読出すことが可能である。上述したとおり、同じ変換がホストプロ
セッサおよびエミュレーションコプロセッサの両方によって共有されるか、また
は、変換は、外部アプリケーションプログラムに割当てられた各ページごとに、
ホストプロセッサの命令セットアーキテクチャおよびエミュレーションコプロセ
ッサの命令セットアーキテクチャの両方に従って生成される。したがって、ホス
トプロセッサは、外部アプリケーションのコンテクストに割当てられたメモリを
見るであろう。
【0062】 同様に、ホストプロセッサがエミュレーションコプロセッサ内のレジスタを更
新することを可能にするためにレジスタ書込コマンドがサポートされる。エミュ
レーションコプロセッサは、レジスタ書込コマンド内に与えられたデータを受取
り、受取った値で特定のレジスタを更新する。メモリの読出に関する前の記載と
同様に、ホストプロセッサは、同様に、エミュレーションコプロセッサのコンテ
クスト内のメモリを更新することが可能である。
【0063】 ゴーコマンドは、エミュレーションコプロセッサが実行を開始するべきかどう
かをエミュレーションコプロセッサに示す。エミュレーションコプロセッサにゴ
ーコマンドを送るより前に、実行ポインタが、エミュレーションコプロセッサ内
のプログラムカウンタレジスタ内に記憶される。ゴーコマンドを受取ると、エミ
ュレーションコプロセッサは、実行ポインタの命令のフェッチおよび実行を開始
する。代替的に、実行ポインタは、所望であれば、ゴーコマンド内で交信されて
もよい。
【0064】 外部アプリケーションプログラムの実行のためにアーキテクチャ的切換が実行
されるべきである(たとえば、ホストコードが実行されるべきである)ことが決
定されると、ストップコマンドがエミュレーションコプロセッサによって伝送さ
れる。ストップコマンドは、エミュレーションコプロセッサが停止したことをホ
ストプロセッサに通知し、また停止の理由を与える。停止のための様々な理由が
所望のごとく採用され得る。たとえば、停止のための理由は、(i)オペレーテ
ィングシステムコールのために(上述したような)サンクを実行すること、(ii
)外部アプリケーションプログラムの実行の終了を検出すること、または(iii
)アプリケーションプログラムの実行中に例外を経験することを含み得る。所望
であれば、レジスタ読出コマンドを用い、外部アプリケーションプログラムのメ
モリを読出して、ホストプロセッサはさらなるコンテクスト情報を集めてもよい
【0065】 なお、「メッセージ」という言葉は、ホストプロセッサとエミュレーションコ
プロセッサとの間の交信を言うものとしてここでは用いられ得る。メッセージと
いう言葉とコマンドとはこの開示では同義であることが意図される。
【0066】 図7を次に参照すると、プロセッサ10の第2の企図された実施例が示される
。図7の実施例は、たとえば、図1に示すコンピュータシステム5の実施例にお
いて採用されてもよい。図3〜図6は、一般的には、図7の実施例にも適用可能
である。他の実施例が可能であり企図される。図7に示すとおり、プロセッサ1
0は、エミュレーションコプロセッサ150と、ホストプロセッサ152と、イ
ンターフェイス論理ユニット154とを含む、エミュレーションコプロセッサ1
50およびホストプロセッサ154は、インターフェイス論理ユニット154に
結合され、これはさらにCPUバス34に結合される。ホストプロセッサ152
はさらに、バックサイドL2インターフェイス52を介してL2キャッシュ38
に結合される。
【0067】 エミュレーションコプロセッサ150は、図2に示すものと同様のエミュレー
ションコプロセッサコア50と、命令キャッシュ44およびデータキャッシュ4
6と同様のキャッシュと、MMU42と同様のMMUとを含んでもよい。ホスト
プロセッサ152は、図2に示すものと同様のホストプロセッサコア48と、命
令キャッシュ44およびデータキャッシュ46と同様のキャッシュと、MMU4
2と同様のMMUとを含んでもよい。
【0068】 ある特定の実施例に従うと、図7に示すようなプロセッサ10は、プリント回
路基板に装着される3つの別個の半導体チップを含む。プリント回路基板は、エ
ッジコネクタを含み、エンキャプシュレーションされてコンピュータシステム5
内に含まれてもよい。たとえば、プロセッサ10は、インテルおよびアドバンス
ト・マイクロ・ディバイシズ(Advanced Micro Devices)によって開発されたス
ロット1、スロットAまたはスロット2000の仕様のいずれかに従って設計さ
れてもよい。あるチップは、エミュレーションコプロセッサ150を実現する。
第2のチップは、ホストプロセッサ152を実現し、第3のチップは、インター
フェイス論理154を実現する。たとえば、エミュレーションコプロセッサ15
0およびホストプロセッサ152は、カスタムデザイン半導体チップであっても
よく、インターフェイス論理ユニット154は、特定用途向け集積回路(ASI
C)、フィールドプログラマブルゲートアレイ(FPGA)などであってもよい
。同様に、インターフェイス論理ユニット154をカスタム半導体チップとして
実現することを含む、他の構成が可能であり企図される。
【0069】 図7に示す実施例は、(異なった半導体製造プロセスを用いておそらく製造さ
れる)予め設計されたエミュレーションコプロセッサ150およびホストプロセ
ッサ152を用いてプロセッサ10を形成することを見込む。エミュレーション
コプロセッサ150およびホストプロセッサ152は各々、インターフェイス論
理ユニット154へのバスインターフェイス(それぞれ、参照番号156および
158)を与え得る。たとえば、バスインターフェイス156および158は、
CPUバス34に論理的および電気的に同一であってもよい。代替的に、バスイ
ンターフェイス156および158は、CPUバス34に専用のものとは異なっ
たバスプロトコルおよび/または電気的仕様に従って動作可能である。さらにな
お、バスインターフェイス156は、バスインターフェイス158と異なっても
よく、インターフェイス論理ユニット154は、バス上のトランザクションを、
バスブリッジ12の動作と同様の適切なプロトコルに変換可能である。
【0070】 インターフェイス論理ユニット154は、図7の実施例では、コマンドインタ
ーフェイス機能(たとえばコマンドインターフェイス54)を与える。メモリお
よびI/Oバスサイクルと異なる予め定義されたバスサイクルが、バスインター
フェイス156および158上に定義されて、エミュレーションコプロセッサ1
50とホストプロセッサ152との間にさまざまなコマンドを交信してもよい。
代替的に、コマンドインターフェイス52が、1組のFIFOを含んで、エミュ
レーションコプロセッサ150およびホストプロセッサ152はこの中にコマン
ドを書込み、エミュレーションプロセッサ150およびホストプロセッサ152
はここからコマンドを読出してもよい。
【0071】 コマンドインターフェイス機能を与えることに加えて、インターフェイス論理
ユニット154は、エミュレーションコプロセッサ150およびホストプロセッ
サ152から、CPUバス34および任意で非要求プロセッサに、非コマンド(
たとえばメモリおよびI/O)を送る。図8は、インターフェイス論理ユニット
154のある実施例に従うコマンド要求および非コマンド要求の両方を送るある
実施例を例示するフローチャートである。他の実施例が可能であり企図される。
図8に示すステップは時に、わかりやすくするために直列順で例示される。しか
しながら、ステップは、所望のごとく、いかなる好適な順序で実行されてもよく
、並列に実行されてもよい。
【0072】 (ホストプロセッサ152およびエミュレーションコプロセッサ154の両方
に送られる、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)。
【0073】 他方で、要求がエミュレーションコプロセッサ150から受取られた場合、要
求はホストプロセッサ152に送られる(ステップ168)。要求のデスティネ
ーションがホストプロセッサ152であるため、エミュレーションインターフェ
イスコマンドはホストプロセッサ152に送られる。メモリ要求およびI/O要
求は、エミュレーションコプロセッサ150がホストプロセッサ152のL2キ
ャッシュ資源(たとえばL2キャッシュ38)を共有することを可能にするため
に、ホストプロセッサ152に送られる。メモリ要求は、ホストプロセッサ15
2が要求されたデータを与えるように、コヒーレンシ要求の形でインターフェイ
ス論理ユニット154によって与えられてもよい。代替的に、インターフェイス
論理ユニット154は、バスインターフェイス158に従って与えられるバスサ
イクルとは異なる予め定義されたバスサイクルを採用して、L2キャッシュ38
の読出を要求してもよい。この態様では、コスト削減が、ホストプロセッサ15
2とエミュレーションコプロセッサ150との間で共有されるL2キャッシュを
採用することによって達成可能である。
【0074】 上述したとおり、エミュレーションコプロセッサ150からの要求は、エミュ
レーションインターフェイスについてのコマンド(たとえば、コマンドインター
フェイス54または予め定められたバスサイクルを介するホストプロセッサ15
2へのコマンド−決定ブロック170)または、メモリもしくはI/O要求のい
ずれであってもよい。要求がエミュレーションインターフェイスコマンドであっ
た場合、要求はホストプロセッサ152に送られることが可能であり(ステップ
168)、さらなる動作は必要とされないであろう。他方で、要求がエミュレー
ションインターフェイスコマンドでなかった場合、インターフェイス論理ユニッ
ト154は、これに送られるバスサイクルに対するホストプロセッサ152の応
答(ステップ168)から、要求がホストプロセッサ152によって満足され得
るかどうかを決定する(決定ブロック172)。要求がホストプロセッサ152
によって満足され得るのであれば、ホストプロセッサ152によって与えられた
データは、インターフェイス論理ユニット154を介してエミュレーションコプ
ロセッサ150に送られる(ステップ174)。要求がホストプロセッサ152
によって満足され得ないならば、要求は、インターフェイス論理ユニット154
によってCPUバス34に送られる(ステップ166)。
【0075】 次に図9を参照すると、たとえば、図1に示すコンピュータシステム5内に採
用可能であるプロセッサ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に結合され
る。
【0076】 図9の実施例は、エミュレーションコプロセッサ150とホストプロセッサ1
52との間のキャッシュ資源およびMMU資源の共有を見込む。言換えれば、エ
ミュレーションコプロセッサ150は、この実施例ではキャッシュおよびMMU
回路構成を排除するであろう。代わりに、エミュレーションコプロセッサ150
には、Iキャッシュ44、Dキャッシュ46、MMU42、および間接的にバス
インターフェイスユニット40へのアクセスが与えられるであろう。有利には、
エミュレーションコプロセッサ150を実現するために採用される回路構成の量
は、実質的に低減可能である。
【0077】 なお、エミュレーションコプロセッサ150は、図2の前の記載と同様に、さ
まざまな実施例での、データキャッシュ46または命令キャッシュ44のいずれ
かからの命令をフェッチするよう構成可能である。さらになお、エミュレーショ
ンコプロセッサ150は、命令をフェッチするために命令キャッシュを含んでも
よく、データキャッシュ46から命令キャッシュミスをフェッチしてもよい。
【0078】 プロセッサ10内にコマンドインターフェイス54を設ける代わりとして、F
IFOを主メモリ14内に維持して、ホストプロセッサ152とエミュレーショ
ンコプロセッサ150との間でコマンドメッセージをやり取りしてもよい。なお
、図9の実施例では、プロセッサ10は、とりわけ、単一の半導体基板、マルチ
チップモジュール、またはスロット1、スロットAもしくはスロット200タイ
プパッケージ内の2つ以上の半導体として実現されてもよい。
【0079】 図10を次に参照すると、コンピュータシステム5の第2の実施例のブロック
図が示される。図3〜図6は一般的に、この実施例にも適用可能である。他の実
施例が可能であり企図される。図10の実施例では、ホストプロセッサ152お
よびエミュレーションコプロセッサ150は各々、バスブリッジ12に直接結合
される。独立のCPUバス接続34および34aの代替として、ホストプロセッ
サ152およびエミュレーションコプロセッサ150は、共通のCPUバス34
を共有してもよい。さらに、ホストプロセッサ152は、L2キャッシュ38に
結合され、エミュレーションコプロセッサ150は同様に、L2キャッシュ38
aに結合される。
【0080】 図10の実施例では、ホストプロセッサ152およびエミュレーションコプロ
セッサ150は各々、内部キャッシュおよびメモリ管理ファシリティを含んでも
よい。たとえば、ホストプロセッサ152は、エミュレーションコプロセッサな
しのコンピュータシステム内に含まれるよう設計されるプロセッサであってもよ
く、同様に、エミュレーションコプロセッサ150は、(たとえば、コンピュー
タシステムの中央処理ユニットとして)ホストコンピュータなしのコンピュータ
システム内に含まれるよう設計されたプロセッサであってもよい。言換えれば、
ホストプロセッサ152およびエミュレーションコプロセッサ150は、「既製
(“off-the-shelf”)」の部品であってもよい。コマンドインターフェイス5
4が、FIFOを用いてプロセッサ間でコマンドメッセージをやり取りするなど
、主メモリ14を介して設けられてもよい。代替的に、コマンドインターフェイ
ス54は、バスブリッジ12内に設けられてもよい。さらに別の代替として、C
PUバス34および34aとは別個の専用インターフェイスを用いてコマンドイ
ンターフェイス54を設けてもよい。
【0081】 図10の実施例では、ホストプロセッサ152およびエミュレーションコプロ
セッサ150は、論理的および電気的に等価のバスインターフェイス(すなわち
CPUバス34)を含む。図11は、エミュレーションコプロセッサ150がC
PUバス34とは異なったバスインターフェイスを含むようなコンピュータシス
テム5の別の実施例である。したがって、図11に示すコンピュータシステム5
は、エミュレーションコプロセッサ150によって生成されたトランザクション
を、エミュレーションコプロセッサ150のバスインターフェイスのプロトコル
および電気的信号法特性から、CPUバス34aのそれに変換するためのバスブ
リッジ180を含む。したがって、図11の実施例は、たとえ異なったバスイン
ターフェイスがホストプロセッサおよびエミュレーションコプロセッサによって
用いられたとしても、既製のホストプロセッサ152および既製のエミュレーシ
ョンコプロセッサ150をサポートする。
【0082】 図10の実施例でのように、コマンドインターフェイス54は、図11の実施
例において主メモリ内で実現されてもよい。代替的に、コマンドインターフェイ
ス54は、バスブリッジ12内に設けられてもよい。さらに別の代替として、C
PUバス34および34aとは別個の専用インターフェイスを用いてコマンドイ
ンターフェイス54を設けてもよい。
【0083】 次に図12を参照すると、コンピュータシステム5の第4の実施例が示される
。他の実施例が可能であり企図される。図12の実施例では、エミュレーション
コプロセッサは、エミュレーションコプロセッサカード22C上に含まれる。エ
ミュレーションコプロセッサカード22Cは、図12に示すとおりPCIバス2
4に結合される。エミュレーションコプロセッサカード22Cのためのハードウ
ェアは、たとえば、カリフォルニア州のサニーベイルのリプライ社(Replay Cor
poration)によって製造されるラディアス・デタント(Radius Detente)AXま
たはMXカードであってもよい。
【0084】 図3〜図6に関して上述した操作に加えて、図12の実施例は、いくつかの他
の操作をも含む。コマンドインターフェイスは、エミュレーションコプロセッサ
カード22C上のメモリ内に維持されてもよい。加えて、エミュレーションコプ
ロセッサカード22CはI/Oデバイスであるため、エミュレーションコプロセ
ッサカード22Cにインターフェイスするために、ドライバがオペレーティング
システム内に設けられる。さらになお、エグゼクティブソフトウェアがエミュレ
ーションコプロセッサカード22Cについて設けられ、複数のアプリケーション
プログラムが同時に実行中であることを可能にする。したがって、プロセスおよ
びプロセス内のスレッドを生成しかつ破壊するためのコマンドが、図6に例示さ
れるようなエミュレーションコプロセッサとホストプロセッサとの間で交信され
得るコマンドの組に加えられ得る。加えて、コマンドがページを割当てるために
与えられ、エミュレーションコプロセッサカード22C上で実行する外部アプリ
ケーションプログラムによって使用される。エミュレーションコプロセッサカー
ド22Cは、コンピュータシステム5のオペレーティングシステムにとってはI
/Oデバイスであるように見えるので、ページがエミュレーションコプロセッサ
に割当てられると、ページは主メモリ14にロックされる(すなわち、オペレー
ティングシステムによるページ割当て要求の受信の際にディスクドライブへのペ
ージアウトのためにページが選択されない)。エミュレーションコプロセッサカ
ード上で実行するエグゼクティブは、いつページがエミュレーションコプロセッ
サ上で実行するアプリケーションプログラムによって使用されなくなるかを決定
し、もはや使用されていないことを決定するとメッセージを与えてページをロッ
ク解除する。
【0085】 さらに、エミュレーションコプロセッサカード22C内のエミュレーションコ
プロセッサは、1つ以上のキャッシュを含み、エミュレーションコプロセッサカ
ード22C上で実行するエグゼクティブは、エミュレーションプロセッサキャッ
シュと、ホストプロセッサ150およびL2キャッシュ38内(および、もし含
まれていれば、ホストプロセッサ150aおよびL2キャッシュ38a内)のキ
ャッシュとのキャッシュコヒーレンスを維持する。代替的に、エミュレーション
コプロセッサ内のキャッシュは、キャッシュコヒーレンスが問題とならないよう
に不能化されてもよい。
【0086】 ある特定の実施例では、コンピュータシステム5は、アルファ(Alpha)命令
セットアーキテクチャのためにウィンドウズNTオペレーティングシステムを採
用し、ホストプロセッサ150は、アルファ命令セットアーキテクチャを採用す
る。さらに、コンピュータシステム5によって採用されるウィンドウズNTオペ
レーティングシステムは、Wx86エミュレーション拡張命令を含む。しかしな
がら、x86プロセッサをエミュレーションするためのコードは、上述したエミ
ュレーションインターフェイスコードと置換えられる。エミュレーションコプロ
セッサカード22Cについてのドライバは、エグゼクティブからのロック要求お
よびロック解除要求に応答してページロックおよびロック解除機能を与える。よ
り特定的には、エグゼクティブは、コードまたはデータのいずれかについてロッ
クされたページを要求する。ドライバは、要求に応答して、ウィンドウズNTメ
モリマネージャ・アプリケーションプログラミングインターフェイス(API)
コールを用いてページをロックする(すなわち、ページがディスクにスワップさ
れることを防いで、異なった仮想ページがその物理的ページに割当てられること
を可能にする)。その後に、エグゼクティブは、ページがもはやアプリケーショ
ンプログラム実行のために必要とされていないこと決定し得り、ロック解除メッ
セージを送信し得る。これに応答して、ドライバは、ウィンドウズNTメモリマ
ネージャAPIを用いてページをロック解除する。加えて、ドライバは、オペレ
ーティングシステム内のカードを初期化しかつカード上にメモリをマッピングす
る責任がある。
【0087】 図12の実施例についてのドライバおよびエグゼクティブは、ウィンドウズN
Tオペレーティングシステムによって定義される(より特定的には、ウィンドウ
ズNTDDKにドキュメントされるような)パケットベースのDMAバスマスタ
モデルを基礎とする。Io割当てアダプタチャネル(Io Allocate Adapter Chan
nel)を用いてアダプタオブジェクトが生成される。MDL(メモリ記述子リス
ト)が生成され、プロセスによって用いられるページの仮想から物理的へのマッ
ピングを記述する。論理的アドレスは、Ioマップ転送(Io Map Transfer)で
生成され、エミュレーションコプロセッサカード22C上のエミュレーションコ
プロセッサに与えられる。したがって論理的アドレスの、メモリ14(すなわち
ホストシステムメモリ)内の物理的アドレスへの変換を与えるマッピングレジス
タが生成される。エミュレーションコプロセッサはこれによって、主メモリ14
にアクセスして、命令および読出/書込データを直接フェッチすることが可能で
ある。言換えれば、コードが実行され、データが主メモリ14内の適所にアクセ
スされる。これらのアクセスは、ホストシステムにとってはDMAのように見え
るかもしれない。このようにして、命令およびデータは、エミュレーションコプ
ロセッサカード22Cに与えられる。
【0088】 なお、エグゼクティブソフトウェアが、エミュレーションコプロセッサカード
22Cを制御するために記載されたが、制御の一部をハードウェアに設けるよう
な他の実施例が可能である。そのような実施例が企図される。
【0089】 次に図13を参照すると、エミュレーションコプロセッサカード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内に同様に記憶してもよい。
【0090】 上述したとおり、エミュレーションコプロセッサカード22Cは、リプライ社
によって製造されるラディアス・デタントAXまたはMXカードであってもよい
。これらの製品は、図13には示されないさらなるハードウェア特徴を含んでも
よい。ハードウェア特徴は、カードがエミュレーションコプロセッサカード22
Cとして用いられる際、所望のごとく使用されてもよいしまたは使用されなくて
もよい。
【0091】 次に図14を参照すると、エグゼクティブプログラム196のある実施例によ
って維持される制御構造を例示するブロック図が示される。他の実施例が可能で
あり企図される。図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が割当てられる。
【0092】 図14に例示されるとおり、各プロセス202A〜202Cには、他のプロセ
ス202A〜202Cとは異なった数のページ206および異なった数のスレッ
ド204が割当てられてもよい。プロセス202A〜202Cがページフォルト
を経験すると、新しいページが、コマンドキュー198を介してページを要求す
るエグゼクティブプログラム196を介してそのプロセスに割当てられ得る。ペ
ージ要求は、ページがロックされるべきであるという表示を含む。そのページ内
の処理が完了するとプロセス202A〜202Cはページを明示開放することが
可能となり(たとえば動的に割当てられるメモリ)、ここでエグゼクティブプロ
グラム196はページロック解除メッセージを伝送可能となる。さらに、ページ
は、プロセス内の特定のスレッドと関連付けられてもよい。そのようなページは
、ページが関連付けられるスレッドの脱出の際に、開放され得る。加えて、プロ
セスが破壊されると、エグゼクティブプログラム196は、そのプロセスに割当
てられる各ページについてページロック解除メッセージを伝送し得る。
【0093】 エグゼクティブプログラム196は、プロセス生成および破壊コマンドメッセ
ージのためにコマンドキュー198内にグローバルメッセージキューを維持して
もよく、各スレッドごとにコマンドキュー198内にそのスレッドのためのコマ
ンドメッセージを含むメッセージキューを維持してもよい。このようにして、エ
グゼクティブプログラムは、複数プロセス、複数スレッドのアプリケーションを
処理するよう構成可能である。スレッド専用コマンドメッセージは、各スレッド
ごとに、ページロックおよびロック解除メッセージならびに生成および破壊メッ
セージを含み、各スレッドごとにゴーおよびストップメッセージを含み得る。し
たがって、プロセススケジューリングは、コンピュータシステム5上で実行する
オペレーティングシステムによって処理可能である。ゴーメッセージおよびスト
ップメッセージは、スケジューリングを実行するために使用され得る。さらに、
表140に示すレジスタ読出および書込コマンドは、1スレッドずつのベースで
与えられてもよい。
【0094】 図15を次に参照すると、エグゼクティブプログラム196のある実施例の操
作を例示する1組のフローチャートが示される。他の実施例が可能であり企図さ
れる。図15の実施例では、第1のフローチャート220は、コプロセッサカー
ド22Cのリセットを例示し、第2のフローチャート222は、休止プロセスを
例示し、第3のフローチャート224は、エグゼクティブプログラム196の他
の局面を例示する。
【0095】 コプロセッサカード22Cがリセットされると(たとえば、コンピュータシス
テム5がブートされると)、フローチャート220が実行される。エグゼクティ
ブプログラム196は、コプロセッサカード22C上の環境を初期化する(ステ
ップ226)。たとえば、エグゼクティブプログラム196は、メモリ194を
既知の状態にクリアし、エミュレーションコプロセッサ150によって使用され
るページテーブルを生成し(および、エグゼクティブプログラム196自身によ
って使用されるエントリを初期化する)、コマンドキュー198を生成すること
が可能である。休止プロセスを初期化した後(ステップ228)、リセット処理
が完了する。フローチャート222によって例示されるように、休止プロセスは
、(たとえば、コマンドキュー198内のメッセージの受信によって)割込みさ
れるまで何もしない(ステップ230)。
【0096】 フローチャート224は、プロセスがコプロセッサカード22C内でアクティ
ブである間のエグゼクティブプログラム196の動作を例示する。フローチャー
ト224は、エグゼクティブプログラム196を呼出し得るさまざまな事象に依
存して、いくつかのエントリポイント232、234および236を含む。
【0097】 エントリポイント232は、メッセージがドライバによってコマンドキュー1
98に与えられると生じる。メッセージの受信によってエミュレーションコプロ
セッサ150の割込みが起き、この時点でエグゼクティブプログラム196が呼
出される。割込みによって呼出されると、エグゼクティブプログラム196は、
受取ったメッセージを処理する(ステップ238)。さまざまなメッセージが受
取られる可能性がある。たとえば、プロセス生成またはスレッド生成メッセージ
が受取られるであろう。プロセス生成メッセージを受取ると、エグゼクティブプ
ログラム196は、プロセス202をプロセスリスト200に加える。同様に、
スレッド生成メッセージを受取ると、エグゼクティブプログラム196は、スレ
ッド204を、スレッド生成メッセージを受取ったプロセス202に加える。コ
ンテクスト読出メッセージ(たとえばレジスタ読出コマンド)が、そのプロセス
(および/またはスレッド)と関連付けられるコンテクストデータ構造からレジ
スタを読出し、要求された情報で応答メッセージを生成することによって、エグ
ゼクティブプログラム196によって処理される。コンテクスト書込メッセージ
(たとえばレジスタ書込コマンド)が、選択されたコンテクストデータ構造に値
を書込むことによって、エグゼクティブプログラム196によって処理される。
エグゼクティブプログラム196は、ゴーメッセージに応答してレディタスクの
リストにスレッドを加え、ストップメッセージに応答してレディタスクのリスト
からスレッドを除去する。ページロック完了メッセージ(エグゼクティブプログ
ラム196によって先に送られたページロックメッセージに応答して発行された
)が、ロックされたページについての変換でページテーブルを更新し、かつペー
ジフォルトを経験したスレッドをレディタスクのリストに加えることによって、
エグゼクティブプログラム196によってサービスされる。
【0098】 メッセージを処理した後、エグゼクティブプログラム196は、レディタスク
のリストからタスクを選択し、選択されたタスクに戻る(ステップ240)。
【0099】 エントリポイント234は、ページフォルトが、エミュレーションコプロセッ
サ150によって実行されたタスク(たとえばプロセススレッド)によって経験
されると生じる。ページフォルトに応答して、エグゼクティブプログラム196
は、コマンドキュー198を介してページロックメッセージを送信する(ステッ
プ242)。ページフォルトを経験したタスクは、ページロック完了メッセージ
がページについて受取られるまで、レディタスクのリストから除去される。上述
したように、ページロック完了メッセージの受信によってタスクはレディタスク
のリストに加えられる。その後に、エグゼクティブプログラム196は、レディ
タスクのリストからタスクを選択し、選択されたタスクに戻る(ステップ240
)。
【0100】 エントリポイント236は、違法操作コードトラップ例外がエミュレーション
コプロセッサ150によって経験されると生じる。予め定義された違法操作コー
ドを用いて、サンクが入力されたことを合図する(しばしは「BOP」と呼ばれ
る)。エグゼクティブプログラム196は、予め定義された違法操作コードが検
出されたかどうかを決定する(決定ブロック244)。予め定義された違法操作
コードが検出されなければ、例外メッセージがコマンドキュー198を介して送
信され、違法操作コード例外を生成するタスクについて違法操作コード例外が送
信されたことをオペレーティングシステムに通知する(ステップ246)。予め
定義された違法操作コードが検出されなければ、ストップメッセージが送信され
、ホストコードへの遷移のためにタスクが停止したことをオペレーティングシス
テムに通知する(ステップ248)。いずれの場合でも、例外を経験したタスク
は、レディタスクのリストから除去され、レディタスクが、レディタスクのリス
トから選択される(ステップ240)。
【0101】 産業上の応用可能性 この発明は、コンピュータシステム内に応用可能である。上記の開示に従って
、ある命令セットアーキテクチャを採用するエミュレーションコプロセッサを用
いて、このために外部アプリケーションプログラムが設計されるが、第2の命令
セットアーキテクチャに従ってコード化されているオペレーティングシステムを
採用するコンピュータシステム内のその命令セットアーキテクチャ内にコード化
される外部アプリケーションプログラムを実行するような、コンピュータシステ
ムが示された。有利には、コンピュータシステムによって実行可能であるアプリ
ケーションプログラムの数は増大する。加えて、アプリケーションプログラムの
性能は、ソフトウェアエミュレーションおよび/またはバイナリ変換を用いて達
成可能であるよりも実質的により優れているであろう。さらになお、エミュレー
ションコプロセッサはアーキテクチャを実現するので、アーキテクチャ的特異性
をモデリングすることが排除される。結果として得られるコンピュータシステム
は、異種のマルチプロセッシングコンピュータシステムを形成する。
【0102】 以上の開示を完全に理解すると、多くの変形および変更が当業者には明らかと
なるであろう。前掲の特許請求の範囲は、そのようなすべての変形および変更を
含むものと解釈されるべきであることが意図される。
【図面の簡単な説明】
【図1】 コンピュータシステムのある実施例のブロック図である。
【図2】 ホストプロセッサコアおよびエミュレーションコプロセッサコア
を含む図1に示すプロセッサのある実施例のブロック図である。
【図3】 外部アプリケーションをエミュレーションするプロセスのブロッ
ク図である。
【図4】 図1に示すコンピュータシステム内のアプリケーションプログラ
ムの初期化のある実施例を例示するフローチャートである。
【図5】 図3に示すエミュレーションインターフェイスの呼出のある実施
例を例示するフローチャートである。
【図6】 図1に示すプロセッサのある実施例に従う交信コマンドを例示す
る表である。
【図7】 図1に示すプロセッサの第2の実施例のブロック図である。
【図8】 図7に示すインターフェイス論理ブロックのある実施例の操作を
例示するフローチャートである。
【図9】 図1に示すプロセッサの第3の実施例のブロック図である。
【図10】 コンピュータシステムの第2の実施例のブロック図である。
【図11】 コンピュータシステムの第3の実施例のブロック図である。
【図12】 コンピュータシステムの第4の実施例のブロック図である。
【図13】 図12に示すエミュレーションコプロセッサカードのある実施
例のブロック図である。
【図14】 図13に示すエグゼクティブプログラムのある実施例によって
維持される制御構造を例示する図である。
【図15】 図13に示すエグゼクティブプログラムのある実施例を例示す
る1組のフローチャートである。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成12年5月22日(2000.5.22)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ゴリシェク・ザ・フォース,フランク・ジ ェイ アメリカ合衆国、78749 テキサス州、オ ースティン、オアシス・ドライブ、6611 (72)発明者 ボスウェル,チャールズ・アール アメリカ合衆国、78759 テキサス州、オ ースティン、モラド・サークル、10610 Fターム(参考) 5B013 DD03 DD05 5B045 DD01 DD12 GG06 GG09 【要約の続き】 リケーションプログラムは、ハードウェア内で直接に実 行可能である。コンピュータシステム(5)は、異種の マルチプロセッシングシステムを特徴とし得る。エミュ レーションコプロセッサ(50、150)が外部アプリ ケーションプログラムを実行している一方で、ホストプ ロセッサ(48、152)は、外部アプリケーションプ ログラムと関連しないオペレーティングシステムルーチ ンを実行することが可能であり、またはホストアプリケ ーションプログラムを実行することが可能である。

Claims (20)

    【特許請求の範囲】
  1. 【請求項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. 【請求項2】 前記第1のプロセッサ(48)および前記第2のプロセッサ
    (50)は、1つ以上のキャッシュ(44、46)に結合され、前記第1のプロ
    セッサ(48)および前記第2のプロセッサは、前記1つ以上のキャッシュ(4
    4、46)を共有するよう構成される、請求項1に記載の装置。
  3. 【請求項3】 前記第1のプロセッサ(48)および前記第2のプロセッサ
    (50)は、1つ以上のメモリ管理ユニット(42)に結合され、前記第1のプ
    ロセッサ(48)および前記第2のプロセッサ(50)は、前記メモリ管理ユニ
    ット(42)を共有するよう構成される、請求項2に記載の装置。
  4. 【請求項4】 前記第1のプロセッサ(48)および前記第2のプロセッサ
    (50)は、単一の半導体基板(10)上に集積される、請求項3に記載の装置
  5. 【請求項5】 前記第1のプロセッサ(152)および前記第2のプロセッ
    サ(150)は、バスブリッジ(12)に結合され、前記第1のプロセッサ(1
    52)は、CPUバス(34)を介して前記バスブリッジ(12)に結合され、
    前記第2のプロセッサ(150)は、前記CPUバス(34)と異なった信号法
    を有する周辺バス(24)を介して前記バスブリッジ(12)に結合される、請
    求項1に記載の装置。
  6. 【請求項6】 前記第2のプロセッサ(50、150)は、前記第2の命令
    をデコードするよう構成されるハードウェアデコーダ(70)を含む、請求項1
    に記載の装置。
  7. 【請求項7】 前記第1のプロセッサ(48、152)および前記第2のプ
    ロセッサ(50、150)は、予め定められた制御プロトコルを介して交信する
    よう構成される、請求項1に記載の装置。
  8. 【請求項8】 前記制御プロトコルは、前記第1のプロセッサ(48、15
    2)と前記第2のプロセッサ(50、150)との間でやり取りされるメッセー
    ジを含む、請求項7に記載の装置。
  9. 【請求項9】 前記メッセージは、前記コンピュータシステム(5)内のメ
    モリ(14)を介してやり取りされる、請求項8に記載の装置。
  10. 【請求項10】 前記メッセージは、前記第1のプロセッサ(48、152
    )と前記第2のプロセッサ(50、150)との間の専用通信チャネル(54)
    を介してやり取りされる、請求項8に記載の装置。
  11. 【請求項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. 【請求項12】 前記第2のプロセッサ(50、150)は、実行中に前記
    アプリケーションプログラム(82)による前記オペレーティングシステム(8
    4)内のオペレーティングシステムルーチン(94)の使用を検出するよう構成
    される、請求項11に記載の異種のマルチプロセッシングコンピュータシステム
  13. 【請求項13】 前記第2のプロセッサ(50、150)は、特定の違法操
    作コードを実行することによって前記使用を検出するよう構成される、請求項1
    2に記載の異種のマルチプロセッシングコンピュータシステム。
  14. 【請求項14】 前記第2のプロセッサ(50、150)は、前記使用を検
    出すると前記第1のプロセッサ(48、152)と交信するよう構成される、請
    求項12に記載の異種のマルチプロセッシングコンピュータシステム。
  15. 【請求項15】 前記第1のプロセッサ(48、152)は、前記第2のプ
    ロセッサ(50、150)からコンテクスト情報を要求し、前記オペレーティン
    グシステムルーチン(94)を実行し、前記第2のプロセッサ(50、150)
    との交信によって前記アプリケーションプログラム(82)の制御を前記第2の
    プロセッサ(50、150)に戻すよう構成される、請求項14に記載の異種の
    マルチプロセッシングコンピュータシステム。
  16. 【請求項16】 前記アプリケーションプログラム(82)と関連しない前
    記プロセス(80)は、第2のアプリケーションプログラムを含む、請求項11
    に記載の異種のマルチプロセッシングコンピュータシステム。
  17. 【請求項17】 第1の命令セットアーキテクチャからの命令を用いてコー
    ド化され、前記第1の命令セットアーキテクチャと異なる第2の命令セットアー
    キテクチャからの命令を用いてコード化されるオペレーティングシステム(84
    )内で実行するよう設計されるアプリケーションプログラム(82)を実行する
    ための方法であって、 前記アプリケーションプログラム(82)が起動されていることを検出するス
    テップを含み、前記検出は、前記第2の命令セットアーキテクチャからの命令を
    実行するよう構成される第1のプロセッサ(48、152)上で実行する前記オ
    ペレーティングシステム(84)によって行なわれ、さらに、 前記第1の命令セットアーキテクチャからの命令を実行するよう構成される第
    2のプロセッサ(50、150)内の前記アプリケーションプログラム(82)
    のためのコンテクストを確立するステップと、 前記第2のプロセッサ(50、150)上で前記アプリケーションプログラム
    (82)を実行するステップとを含む、方法。
  18. 【請求項18】 前記オペレーティングシステム(84)内のオペレーティ
    ングシステムルーチン(94)への前記アプリケーションプログラム(82)内
    の遷移を検出するステップをさらに含む、請求項17に記載の方法。
  19. 【請求項19】 前記第1のプロセッサ(48、152)上で前記オペレー
    ティングシステムルーチン(94)を実行するステップをさらに含む、請求項1
    8に記載の方法。
  20. 【請求項20】 前記オペレーティングシステムルーチン(94)を前記実
    行した後に前記第2のプロセッサ(50、150)上で実行する前記アプリケー
    ションプログラム(82)に戻るステップをさらに含む、請求項19に記載の方
    法。
JP2000551315A 1998-05-26 1999-01-25 エミュレーションコプロセッサ Pending JP2002517034A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (5)

* Cited by examiner, † Cited by third party
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