JP2001273273A - マルチプロセッシング・エンジン環境用のレジスタ・パイプ - Google Patents

マルチプロセッシング・エンジン環境用のレジスタ・パイプ

Info

Publication number
JP2001273273A
JP2001273273A JP2001044708A JP2001044708A JP2001273273A JP 2001273273 A JP2001273273 A JP 2001273273A JP 2001044708 A JP2001044708 A JP 2001044708A JP 2001044708 A JP2001044708 A JP 2001044708A JP 2001273273 A JP2001273273 A JP 2001273273A
Authority
JP
Japan
Prior art keywords
processing engine
register
pipe
processing
engine
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
JP2001044708A
Other languages
English (en)
Inventor
J Stark William
ウィリアム・ジェイ・スターク
L Temple Joseph Iii
ジョーゼフ・エル・テンプル・サード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2001273273A publication Critical patent/JP2001273273A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; 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/30098Register arrangements
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 マルチプロセッサ・コンピュータ・システム
の処理エンジンの間でレジスタ・パイプを実施する方
法、システム、およびプログラム記憶装置を提供するこ
と。 【解決手段】 レジスタ・パイプに、第1処理エンジン
の少なくとも1つの第1レジスタと、第2処理エンジン
の少なくとも1つの第2レジスタが含まれる。データ
は、第1処理エンジンと第2処理エンジンの間で、メモ
リを通過せずにレジスタ・パイプを介して転送される。
1実施形態では、第1処理エンジン内および第2処理エ
ンジン内の汎用レジスタが、レジスタ・パイプの実施に
使用される。各処理エンジン内に制御機構を設けて、マ
ルチプロセッサ・コンピュータ・システムの任意の2つ
の処理エンジンを結合するレジスタ・パイプを動的に使
用可能または使用不能にする。複数のレジスタ・パイプ
にブロードキャストし、処理エンジン自体にアドレッシ
ングされるレジスタ・パイプを使用するバリヤ同期化を
実施する技法も提供される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】関連出願の相互参照 本発明は、本発明と共通の譲受人に譲渡される関連米国
特許出願第号明細書に関連する。同明細書は、参照によ
ってその全体を本明細書に組み込まれる。
【0002】本発明は、全般的にはマルチプロセッサ・
コンピュータ・システムに関し、具体的には、マルチプ
ロセッサ・コンピュータ・システムの処理エンジンの対
の間でレジスタ・パイプ(register pipe)を選択的に
実施して、それらの間のデータの転送を容易にすること
ができるマルチプロセッサ・コンピュータ・システムに
関する。
【0003】
【従来の技術】一般的に言って、コンピュータ・プログ
ラムは、さまざまなモードでコンピュータ・システムに
よって実行され得る。たとえば、単一命令ストリーム単
一データ・ストリーム(SISD)モード、単一命令ス
トリーム複数データ・ストリーム(SIMD)モード、
単一プログラム複数データ・ストリーム(SPMD)モ
ード、または複数命令ストリーム複数データ・ストリー
ム(MIMD)モードのどれであっても、通常のコンピ
ュータ・プログラムの実行に使用することができる。
【0004】SISDモードでは、コンピュータ・プロ
グラムが、単一の命令ストリームを生成し、実行して、
単一のデータ・ストリームまたは結果を作る。これを、
一般に、古典的単一プロセッサ・モードの動作と称す
る。さらに、SISDモードでの動作は、マルチプロセ
ッサ・システムまたは並列システムであっても発生する
ことがしばしばである。これは、プログラミング技法、
アリゴリズム的直列化、または過去の実装からのレガシ
ーに起因して発生する可能性がある。
【0005】多数の多重プロセッサ・システムまたはマ
ルチプロセッサ・システムでは、コンピュータ・プログ
ラムが、SIMDモードで実行される可能性がある。こ
のモードでは、複数のデータが、単一の命令によって同
時に処理される。したがって、複数のプロセッサまたは
処理要素が、同一の命令に対して別々のデータ・ストリ
ームを操作することができる。このモードのSPMD変
形では、各プロセッサが、独立に取り出される同一のプ
ログラムを実行し、それ自体のデータ・ストリームを操
作する。SPMDモードの動作を用いると、さまざまな
プロセッサを、ローカル・メモリだけに付加することが
でき、さまざまなプロセッサが、メッセージ受け渡しフ
ァブリックまたはネットワークを介して結果を通信する
ことができるようになる。
【0006】他のマルチプロセッサ・システムでは、プ
ログラムをMIMDモードで実行することができ、この
場合、各プロセッサが、それ自体のデータ・ストリーム
を独立に操作するだけではなく、それ自体の命令ストリ
ームに対して動作する。このモードでの処理は、共用記
憶域またはプロセッサ間のメッセージ受け渡しのいずれ
かによって容易にされる。
【0007】古典的なマルチプロセッサまたは共用メモ
リ・プロセッサ(shared memory processor)(SM
P)では、プログラムをSISDモードまたはMIMD
モードのいずれかで実行することができ、時にはSPM
Dモードで実行することができる。しかし、これらの計
算機は、メモリ競合制約をこうむる。このため、並列性
の粒度が、通常は、共用メモリによって通信する複数の
プログラム管理されるスレッドまたはプロセスにとって
利益があるレベルまでに制限される。
【0008】あるプロセッサによって実行される動作の
入力値が、共用メモリ・マルチプロセッサ環境内の別の
プロセッサによって実行される別の命令の結果(すなわ
ち出力値)である時には、動作の処理がより複雑にな
る。第1に、第1のプロセッサが、入力値として使用さ
れる結果を得るために、第2のプロセッサが、まず出力
値をメモリに格納し、その結果、第1のプロセッサがそ
の結果をメモリから取り出せるようにしなければならな
い。諒解されるであろう通りに、これらの前提条件ステ
ップは、あるプロセッサからの値を格納し、別のプロセ
ッサにロードするために、追加の命令およびクロック・
サイクルを消費し、これによって、実質的な非効率性お
よび望ましくないプロセッサ能力の消費が生じる。ま
た、入力として他の実行される命令の結果を必要とする
命令の実行は、第1のプロセッサが、メモリ内の適当な
結果にアクセスし、前の古くなった値にアクセスしない
ことを保証するために、プロセッサの同期化を必要とす
る。通常、データ管理の複雑な手順を使用して、システ
ム内でメモリ・コヒーレンシが維持されることを保証す
る。
【0009】
【発明が解決しようとする課題】これらの処理の複雑さ
に鑑みて、マルチプロセッサ・コンピュータ・システム
内の処理エンジン間の情報のより効率的な転送を容易に
することが望ましい。
【0010】
【課題を解決するための手段】したがって、本明細書
で、マルチプロセッサ・コンピュータ・システム内の処
理エンジンの対の間に配置されるレジスタ・パイプ機構
を提供する。このレジスタ・パイプを用いると、第1の
処理エンジンから第2の処理エンジンへ、コンピュータ
・システムのメモリを通過せずにデータを転送できるよ
うになる。さらに、本明細書で提供するレジスタ・パイ
プは、マルチプロセッサ・コンピュータ・システム内
の、パイプによって接続される処理エンジン自体の汎用
レジスタを使用して、動的に実施することができる。
【0011】要約すると、1態様では、本明細書で、第
1処理エンジンと第2処理エンジンの間でデータを転送
する方法を提供する。この方法には、第1処理エンジン
と第2処理エンジンとの間でレジスタ・パイプを確立す
るステップであって、レジスタ・パイプが、第1処理エ
ンジン内の少なくとも1つの第1レジスタと第2処理エ
ンジン内の少なくとも1つの第2レジスタとを含むこと
ができる、ステップと、レジスタ・パイプを使用して第
1処理エンジンと第2処理エンジンとの間でデータを転
送するステップであって、データが、第1処理エンジン
および第2処理エンジンが属するマルチプロセッサ・コ
ンピュータ・システムの主記憶を通過せずに第1処理エ
ンジンと第2処理エンジンとの間で転送される、ステッ
プとが含まれる。
【0012】もう1つの態様では、第1処理エンジンと
第2処理エンジンの間でデータを転送するシステムを提
供する。このシステムには、第1処理エンジンと第2処
理エンジンの間でレジスタ・パイプを確立する手段が含
まれ、このレジスタ・パイプには、第1処理エンジンの
少なくとも1つの第1レジスタと、第2処理エンジンの
少なくとも1つの第2レジスタとを含めることができ
る。このシステムには、さらに、レジスタ・パイプを使
用して第1処理エンジンと第2処理エンジンとの間でデ
ータを転送する手段が含まれ、このデータは、第1処理
エンジンおよび第2処理エンジンが属するマルチプロセ
ッサ・コンピュータ・システムのメモリを通過せずに第
1処理エンジンと第2処理エンジンの間で転送される。
【0013】もう1つの態様では、第1処理エンジンと
第2処理エンジンを含むマルチプロセッサ・コンピュー
タ・システムを提供する。このマルチプロセッサ・コン
ピュータ・システムには、第1処理エンジンと第2処理
エンジンとの間のレジスタ・パイプが含まれ、このレジ
スタ・パイプには、第1処理エンジン内の少なくとも1
つの第1レジスタと第2処理エンジン内の少なくとも1
つの第2レジスタが含まれる。第1処理エンジンおよび
第2処理エンジンは、マルチプロセッサ・コンピュータ
・システムのメモリを介してデータを渡さずに、レジス
タ・パイプを使用してそれらの間でデータを転送するよ
うに適合されている。
【0014】もう1つの態様では、第1処理エンジンと
第2処理エンジンの間でデータを転送する方法を実行す
るための、計算機によって実行可能な命令の少なくとも
1つのプログラムを具体的に実施する、計算機によって
読取可能な少なくとも1つのプログラム記憶装置を提供
する。この方法には、第1処理エンジンと第2処理エン
ジンとの間でレジスタ・パイプを確立するステップであ
って、レジスタ・パイプが、第1処理エンジン内の少な
くとも1つの第1レジスタと第2処理エンジン内の少な
くとも1つの第2レジスタとを含むことができる、ステ
ップと、レジスタ・パイプを使用して第1処理エンジン
と第2処理エンジンとの間でデータを転送するステップ
であって、データが、第1処理エンジンおよび第2処理
エンジンが属するマルチプロセッサ・コンピュータ・シ
ステムの主記憶を通過せずに第1処理エンジンと第2処
理エンジンとの間で転送される、ステップとが含まれ
る。
【0015】言い換えると、本明細書では、マルチプロ
セッサ・コンピュータ・システムの処理エンジンの対の
間でレジスタ・パイプを確立して、たとえばコンピュー
タ・システムの主記憶を使用せずに、それらの間でのデ
ータ転送を容易にするレジスタ・パイプの機構および技
法を提供する。疎結合並列処理システムでは、本明細書
で提示されるレジスタ・パイプが、より微細な粒度(す
なわち、より小さいデータ)を使用してプロセッサ間で
データを通信するためのより高速でより効率的な手段を
提供する。具体的に言うと、疎結合計算機では、通常
は、計算機から計算機にデータを移動するのに入出力が
使用される。これは、通常は、結果がバッファリングさ
れるメモリへのデータ結果の移動と、メモリから他の計
算機へ同期式または非同期式のいずれかでデータを移動
するプログラムの実行を意味する。この手法は、データ
結果に関して単純にパイプ・レジスタをターゲットとす
る、本明細書で提示されるレジスタ・パイプ機構と対照
的である。
【0016】密結合並列処理システム(SMPまたはメ
モリ共用システム)では、本明細書に提示されるレジス
タ・パイプが、やはりより効率的である。そのようなシ
ステムでは、データ結果を、通常はメモリに格納しなけ
ればならず、その後、プロセッサを同期化し、データを
ターゲット計算機に取り出す。これは、本発明の原理に
よる、ある計算機から別の計算機へ転送されるデータに
関して単純にレジスタ・パイプをターゲットとすること
と対照的である。
【0017】上で相互参照され組み込まれた米国特許出
願第 号明細書に記載のものなどの大
規模キャッシュ計算機または他のSIMD可能計算機で
は、やはり、ジョイン(join)されたレジスタを使用し
て、データ結果を格納した後に取り出さなければならな
い。本発明によれば、データ結果は、単に結果に関して
レジスタ・パイプをターゲットにすることによって転送
される。本明細書で提示されるレジスタ・パイプは、マ
ルチプロセッサ計算機が、別のエンジンが必要とする時
にあるエンジンのデータ結果を格納した後にロードする
ことをなくすための方法である。ロードの前にデータを
格納することは、追加命令だけを必要とするが、この追
加命令は、プログラムの内側のループである場合に、足
し合わされる可能性がある。
【0018】追加の特徴および長所は、本発明の技法を
介して実現される。本発明の他の実施形態および態様
を、本明細書で詳細に説明するが、これらは、請求され
る発明の一部とみなされる。
【0019】
【発明の実施の形態】本発明の1態様によれば、レジス
タのジョインおよびフォーク(fork)に頼ることによっ
てコンピュータ・システムを動作させる技法が提供され
る。そうすることによって、本発明の技法を用いて、有
利なことに、コンピュータ・システムのプロセッサに、
レジスタがジョインされる時に同一の情報を含め、レジ
スタがフォークされる時に異なる情報を含めることがで
きるようになる。その結果、コンピュータ・システム
を、複数の動作モードの間ですばやく効率的に切り替え
ることができる。さらに、本発明は、メモリの区分を介
し、特定のセクションにローカルなプロセッサによる情
報の取出およびブロードキャストを介して、より高いメ
モリ帯域幅と、より大きくより高速のキャッシュも提供
する。
【0020】本発明の1態様に従い、図1に、単一プロ
セッサとして(すなわち、単一命令ストリームおよび単
一データ・ストリームを生成する)、および並列プロセ
ッサとして(すなわち、複数命令ストリームおよび複数
データ・ストリームを生成する)のいずれでも動作する
ことができるマルチプロセッサのコンピュータ・システ
ム100を示す。1実施形態では、コンピュータ・シス
テム100に、複数のプロセッサ110またはエンジン
(すなわち、プロセッサ00、01、10、および1
1)が含まれ、各プロセッサは、L1キャッシュ120
に関連付けられ、接続されている。この特定の実施形態
では、コンピュータ・システム100は、単一チップ上
に配置されるものとして図示されている。しかし、構成
要素を複数のチップに配置された他の実施形態が、本発
明の原理から逸脱せずに可能である。
【0021】L1キャッシュ120は、メモリ・インタ
ーフェース140を介してプロセッサ110をL2キャ
ッシュ130に接続する。メモリ・インターフェース1
40は、バス142を介して主記憶(図示せず)にも接
続される。それ自体のプロセッサ110に接続するほか
に、L2キャッシュ130を、複数の双方向バス150
を介して互いにも相互接続することができ、これによっ
て、L2キャッシュが、相対的に多量のL2キャッシュ
・メモリを有する単一のユニットとして動作することが
可能になる。しかし、単一のL2キャッシュとして動作
するほかに、L2キャッシュ130は、区分され(図1
に示された4つのユニットに)、その結果、各プロセッ
サ110に、組み合わされたL2キャッシュの特定の部
分を関連付けることができるようになる。これによっ
て、L2キャッシュ・メモリ内のどの位置に対しても高
速にアクセスでき、より高速のサイクル・タイムをもた
らすことが可能になる。それ自体のL1キャッシュに接
続されるほかに、プロセッサ110は、相互接続システ
ム160を介して互いにも相互接続される。相互接続シ
ステム160を、下で詳細に説明する。
【0022】図2に、1つのプロセッサ110と、相互
接続システム160のそれに関連する部分ならびにそれ
に関連するL1キャッシュ120を示す。各プロセッサ
110には、複数の汎用レジスタ(GPR)210、実
行ユニット220、アドレス・ユニット230、および
命令ユニット240が含まれる。さらに、各プロセッサ
110に関連するのが、複数のデータ・ブロードキャス
ト・レジスタ250および複数の命令ブロードキャスト
・レジスタ260である。
【0023】当業者に明白であるように、任意の個数、
たとえば16個のGPR210を、各プロセッサに含め
ることができる。各GPRは、さまざまな目的に使用す
ることができる。たとえば、1つまたは複数のGPR
を、アドレス・レジスタとして使用することができ、こ
れらのGPRは、単一アドレス・レジスタ命令のRBフ
ィールドまたは複数アドレス・レジスタ命令のRBフィ
ールドおよびRAフィールドによって、アドレス・レジ
スタとして指定される。同様に、本発明の説明におい
て、GPRを、ターゲット・レジスタ(すなわち、動作
を実行した後のデータのデスティネーション)として使
用することができ、このGPRは、メモリからデータを
取り出す際(すなわちRTキャッシュ)または実行ユニ
ットでの動作の完了の際(すなわちRT結果)のいずれ
かにレジスタを更新する命令のRTフィールド(一部の
アーキテクチャではRAと同一)によってターゲット・
レジスタとして指定される。さらに、GPRに格納され
た内容は、オペランドまたはアドレスとして使用するこ
とができる。最後に、当業者に既知のさまざまな実行ア
ーキテクチャが存在し、同様にさまざまなノーメンクレ
チャを使用して、GPRのさまざまな機能が記述される
ことにも留意されたい。
【0024】本発明の1実施形態によれば、各プロセッ
サの各GPRは、他のプロセッサの対応するGPRに関
連する。さらに、各プロセッサのこれらの対応するGP
Rは、フォークまたはジョインすることができ、ジョイ
ンされた時には、関連するGPRに、単一のソースから
取り出された同一のデータの同一のコピーが格納され、
フォークされた時には、GPRに、ローカル・プロセッ
サによって個別に取り出された別々のデータが格納され
る。
【0025】通常、命令ユニット240には、命令レジ
スタ242および命令カウンタ(IC)244が含まれ
る。動作中に、命令は、IC244によって参照される
位置に従ってメモリから取り出される。取り出された命
令は、命令レジスタ242にラッチされ、これによっ
て、そのプロセッサが、上で述べたRBおよびRAを使
用して、取り出された命令を実行できるようになる。
【0026】L1キャッシュ120は、情報をそこから
取り出すことができ、バス122を介してGPR210
に格納することができるように配置される。そこから、
GPR210に格納された情報を、バス212を介し
て、アドレス・ユニット230に送ってアドレスの計算
に使用するか、動作が実行される実行ユニット220に
送ることができる。アドレス・ユニット230で実行さ
れたアドレス計算の結果は、バス232を介してL1キ
ャッシュ120に格納される。その一方で、実行ユニッ
ト220で実行された動作の結果は、GPR210に格
納するか、その代わりにバス222を介してL1キャッ
シュ120に格納することができる。
【0027】情報をL1キャッシュ120から取り出し
てGPR210に格納するか実行ユニット220に入力
として提示することのほかに、情報を、データ・ブロー
ドキャスト・レジスタ250からバス256を介して取
り出すこともできる。下で説明するように、この形で受
け取られる情報は、他のプロセッサのデータ・ブロード
キャスト・レジスタからバス252を介して発する。同
様に、ローカルに格納された情報も、L1キャッシュ1
20から他のプロセッサへ、バス254を介してデータ
・ブロードキャスト・レジスタ250によって送出また
はブロードキャストすることができる。データ・ブロー
ドキャスト・レジスタ250と同様に、命令ブロードキ
ャスト・レジスタ260も、命令ユニット240からロ
ーカルに受け取った命令のバス264を介するブロード
キャスト、ならびに、他のプロセッサによってブロード
キャストされた命令のバス262を介する受取に使用す
ることができる。
【0028】本発明の1態様によれば、あるプロセッサ
から他のプロセッサへの情報ブロードキャストは、先入
れ先出し(FIFO)の形でブロード・キャスト・レジ
スタによって容易にされる。図3を参照すると、単一の
プロセッサ110の一部が、アクセス制御レジスタ(A
CR)315を含むデコーダ310と共に図示されてい
る。デコーダ310は、ラッチ320および321に接
続され、ラッチ320および321は、図3からわかる
ように、それぞれデータ・ブロードキャスト・レジスタ
250および命令ブロードキャスト・レジスタ260に
関連する。
【0029】ラッチ320および321は、バス322
を介して、プロセッサのそれぞれのデコーダに、めいめ
いのブロードキャスト・レジスタが空または満杯のどち
らであるかを示す。したがって、命令ブロードキャスト
・レジスタ260にデータ・ワードを格納すると、ラッ
チ321がセットまたはフリップされて、バス324を
介して、情報が現在命令ブロードキャスト・レジスタ2
60に保持されていることが、各プロセッサのデコーダ
に示される。それに応答して、各デコーダは、情報をそ
のブロードキャスト・レジスタに格納しなくなる。同様
の形で、情報がブロードキャスト・レジスタから取り出
され、これによってそのブロードキャスト・レジスタが
空になる時には、めいめいのラッチがフリップまたはリ
セットされて、バス326を介して、このブロードキャ
スト・レジスタが空であり、情報を受け取る準備ができ
ていることが、デコーダに示される。上記に応答して、
デコーダは、空のブロードキャスト・レジスタから情報
を取り出そうとしなくなる。ラッチ320および321
をこの形で使用することと、このパイプまたはパイプラ
イン風の形でデータ・ブロードキャスト・レジスタ25
0および命令ブロードキャスト・レジスタ260を配置
することによって、情報を、あるプロセッサから残りの
プロセッサへFIFOの形でブロードキャストすること
ができる。
【0030】本発明の1態様によれば、下で説明するよ
うに、コンピュータ・システム100が、プロセッサ1
10間の情報の動作およびフローに従って、単一命令ス
トリーム単一データ・ストリーム(SISD)モード、
単一命令ストリーム複数データ・ストリーム(SIM
D)モード、または複数命令ストリーム複数データ・ス
トリーム(MIMD)モードのいずれでも動作すること
ができる。たとえば、SISDモードでは、ローカル・
プロセッサによって取り出され、他のプロセッサにブロ
ードキャストされる単一の命令が、単一のデータに対し
てすべてのプロセッサによって実行され、このデータ
も、ローカルに取り出され、他のプロセッサにブロード
キャストされる。対照的に、SIMDモードでは、ロー
カル・プロセッサによって取り出され、他のプロセッサ
にブロードキャストされる単一の命令が、各プロセッサ
によって、それ自体によって取り出されたそれ自体のロ
ーカル・データに対して実行される。最後に、MIMD
モードでは、プロセッサのそれぞれが、それ自体の命令
を取り出し、この命令をそれ自体のローカル・データに
対して実行する。
【0031】下で図3に関して説明するように、プロセ
ッサ110のそれぞれならびにそれに関連する構成要素
の動作は、メモリから取り出された命令から受け取る入
力(すなわち、RB、RA、およびRTの値)によっ
て、ACR315に従って制御される。具体的に言う
と、メモリから取り出される通常の命令には、RBへの
参照と(一部の命令ではRAへの参照と)、RTヘの参
照が含まれ、これらの参照は、ACR315をセットす
るのに使用される。ACR315の特定のビットは、デ
ータまたは命令がローカルに取り出されるのかメモリの
リモート部分から取り出されるのか、および、データお
よび命令が別のプロセッサでの処理のために送出される
のかローカルに処理されるのかを示す。
【0032】ACR315は、GPR210の使用およ
び更新を制御するために、命令ごとにオンにセットされ
る。具体的に言うと、ACR315には、単独のGPR
(たとえばGPR 0)以外のGPRごとに2ビットが
含まれ、単独のGPRには、ACR315の単独のビッ
トが関連する。同様に、IC244も、ACR315の
単一のビットに関連する。
【0033】GPR210の動作は、ACR315に格
納された値によって指示される。たとえば、IC244
に関連するACRビットに格納された0は、命令ストリ
ームがフォークされる(すなわち、システムの各プロセ
ッサがそれ自体の命令ストリームを取り出す)ことを示
す。その一方で、IC244に関連するACRビットに
格納された1は、命令ストリームがジョインされる(す
なわち、単一のプロセッサが命令を取り出し、残りのプ
ロセッサの命令ユニットにその命令をブロードキャスト
する)ことを示す。同様の形で、図4および図5を参照
すると、GPR210に関連するACRの2ビットは、
00をセットされた時にはレジスタがフォークされ、0
1をセットされた時にはレジスタがジョインされること
を示す。ACR GPRビットの上位ビットに1をセッ
トせることによって、いくつかの状況で(すなわち、I
CレジスタがジョインされるかICに関連するACRビ
ットに1がセットされている時)ローカル・メモリに対
するインターリーブを強制することができる。
【0034】本発明のインターリーブ方式に関して、各
L1は、L2に対してローカルであり、L2は、メモリ
に対してローカルである。動作中には、コンピュータ・
システム100は、L1ミスをもたらして、L2または
メモリにアクセスする。しかし、L1ミスによってL2
またはメモリにアクセスする場合であっても、ローカル
L2またはローカル・メモリへのアクセスが、より高速
であり、したがって好ましい。この形でのメモリの分割
を、インターリーブされていると称する。
【0035】メモリがインターリーブされる時には、メ
モリ・アドレス・ビットのサブセット(たとえば、アド
レスのページ・ビット)を使用して、どのメモリにアク
セスするかを判定する。たとえば、アドレスの右端から
12番目および13番目のビットを、インターリーブ・
ビットとして使用することができる。
【0036】ローカル・メモリへのインターリーブを強
制することによって、各GPRが、ローカル・メモリか
らデータを取り出す。具体的に言うと、命令、たとえば
下で説明するload forked address命令(LFA)が、
各GPRによって生成されるアドレスのインターリーブ
・ビットにローカル・プロセッサ識別子(ID)を挿入
する。これによって、各GPRが、それ自体のローカル
・メモリからの取出を強制される。たとえば、インター
リーブを強制することによって、プロセッサ01に属す
るGPRから生成されるアドレスのインターリーブ・ビ
ットが強制的に01にされる。これによって、プロセッ
サ01の取出が、そのローカル・メモリから、言い換え
ればL2キャッシュ01から行われるようになる。した
がって、メモリへのインターリーブが強制される時に
は、プロセッサ00は、L2キャッシュ00にローカル
なメモリまたはインターリーブ00からの取出を強制さ
れ、同様に、プロセッサ01は、L2キャッシュ01に
ローカルなメモリまたはインターリーブ01からの取出
を強制される。
【0037】さらに例を示すと、GPRがジョインさ
れ、メモリ・アドレスのインターリーブ・ビットが00
である時には、00のIDを有するプロセッサが、その
ローカル・キャッシュおよびローカル・メモリから取り
出す。LFA RT、RB命令の実行によって、RTの
ACRビットに10がセットされる。その後、RTが、
そのACRビットが前に10にセットされたのでRBと
して使用される時に、GPRは、フォークされた取出を
もたらし、すべてのプロセッサがそれ自体のデータを取
り出し、アドレス・ジェネレータに、生成するアドレス
を強制的にローカルにさせる。すなわち、各プロセッサ
によって生成されるアドレスは、強制的にローカル・メ
モリ・インターリーブ・アドレスと一致するようにされ
る。後続のフォークされた取出は、ローカルである必要
はないが、リモート取出は、もはやミス・タイムを有し
ない。また、フォークされたモードでの非ローカル・メ
モリからの取出は、プロセッサが同一のメモリ位置から
の取出を試みる場合に、メモリ・インターフェースに関
する競合を引き起こす可能性がある。しかし、これによ
って、フォークされたプロセッサが、標準共用メモリ・
マルチプロセッサまたはSMPとして働くことが可能に
なる。
【0038】動作のさまざまな状態の間の遷移は、メモ
リから取り出される特定の命令に応答し、ACR315
のビットの設定に応答して発生する。図5を参照する
と、ACR ICビットに0がセットされ(複数命令ス
トリームがあることを示す)、特定のGPRのACRビ
ット(ACR GPR)に00がセットされている(そ
のGPRがフォークされることを示す)時には、GPR
から別々のアドレスが生成され、そのアドレスが、各プ
ロセッサによってメモリにアクセスするために独立に使
用される。各プロセッサが、それ自体のアドレスを生成
するので、ブロードキャストは発生しない。アドレスを
生成した後に、そのアドレスは、めいめいのターゲット
・レジスタに個別に格納される。その時点で、ターゲッ
ト・レジスタに関連するACRビットに、00がセット
され、ターゲット・レジスタがフォークされることと、
各プロセッサが独立にロードされるRTを有することが
示される。さらに、実行される命令が分岐命令である場
合には、ACR ICビットが0に更新されて、フォー
クされた命令ストリームまたは複数命令ストリームが示
される。
【0039】ACR ICビットに0がセットされ(複
数命令ストリームがあることを示す)、特定のGPRの
ACRビットに01がセットされている(GPRがジョ
インされることを示す)時には、GPRから単一のアド
レスが生成される。命令がロード命令である場合には、
アドレスは、ローカル・メモリから生成される。命令が
分岐命令である場合には、その命令は、プロセッサがそ
の命令に含まれるプロセッサIDに従ってアドレスを生
成しなければならないことを示す。このアドレスは、そ
の後、残りのプロセッサにブロードキャストされる。そ
の後、ターゲット・レジスタに関連するACRビットに
00がセットされ、ターゲット・レジスタがフォークさ
れることを示す。さらに、実行される命令が分岐命令の
場合には、ACR ICビットが1に更新され、結果の
ブロードキャストを必要とするジョインされた命令スト
リームまたは単一命令ストリームが示される。
【0040】ACR ICビットに1がセットされ(単
一命令ストリームがあることを示す)、特定のGPRの
ACRビットに00がセットされている(GPRがフォ
ークされることを示す)時には、GPRから別々のアド
レスが生成され、このアドレスが、各プロセッサによっ
て、メモリのアクセスに独立に使用される。各プロセッ
サがそれ自体のアドレスを生成するので、ブロードキャ
ストは発生しない。アドレス生成の後に、アドレスは、
めいめいのターゲット・レジスタに個別に格納される。
その時点で、ターゲット・レジスタに関連するACRビ
ットに00がセットされ、ターゲット・レジスタがフォ
ークされることを示す。さらに、実行される命令が分岐
命令である場合には、ACR ICビットが0に更新さ
れ、フォークされた命令ストリームまたは複数命令スト
リームが示される。
【0041】ACR ICビットに1がセットされ(単
一命令ストリームを示す)、特定のGPRのACRビッ
ト(ACR GPR)に01がセットされている(GP
Rがジョインされることを示す)時には、GPRから単
一のアドレスが生成される。この場合、アドレス・レジ
スタがジョインされるので、プロセッサIDを介して命
令によって示されるプロセッサが、アドレスを生成す
る。結果のアドレスは、その後、他のプロセッサにブロ
ードキャストされる。その後、ターゲット・レジスタに
関連するACRビットに01がセットされ、ターゲット
・レジスタがジョインされることが示される。さらに、
実行される命令が分岐命令の場合には、ACR ICビ
ットが1に更新され、結果のブロードキャストを必要と
する単一命令ストリームがあることが示される。
【0042】ACR ICビットに1がセットされ(単
一命令ストリームを示す)、特定のGPRのACRビッ
トに10がセットされている(ローカル・メモリへのイ
ンターリーブの強制を示す)時には、各プロセッサが、
それ自体のアドレスを生成し、生成されるアドレスは、
上で説明したインターリーブ方式に従ってローカル・メ
モリになることを強制される(すなわち、プロセッサ0
1はインターリーブ01を強制され、プロセッサ10は
インターリーブ10を強制されるなど)。そうすること
によって、ジョインされたGPRを伴うSISDプログ
ラムをフォークして、SIMDモードでの動作を開始す
ることができる。その後、ターゲット・レジスタに関連
するACRビットに00をセットして、それらがフォー
クされることを示す。さらに、実行される命令が分岐命
令である場合には、ACR ICビットを0に更新す
る。
【0043】次に、いくつかの状態が、予約済みである
かエラーをもたらすかのいずれかであり、結果的に、こ
れ以上説明されないことに留意されたい。これには、
1)ACR IC=0、ACR RB=01、2)AC
R IC=0、ACR RB=11、および3)ACR
IC=1、ACR RB=11が含まれる。
【0044】本発明の1態様によれば、Load Forked Ad
dress(LFA)命令は、データが、ローカルに取り出
された後にブロードキャストされるようにする。具体的
に言うと、この命令に含まれるインターリーブ・ビット
が、どのプロセッサが取り出すかを判定するのに使用さ
れる。これに関して、インターリーブ・ビットによって
示されるメモリに対してローカルなプロセッサが、取り
出し、残りのプロセッサにブロードキャストする。ブロ
ードキャストの後に、ターゲット・レジスタのACRビ
ットに、10がセットされる。上で述べたように、それ
に関連するACRビットに10をセットされたレジスタ
の後続の使用は、SISDモードからSIMDモードへ
の遷移を引き起こす。
【0045】Load Joined Address(LJA)命令は、
LFA命令とは異なって、GPRのACRビットに01
をセットさせる。LJA命令が実行される時には、デー
タは、プロセッサ00によってローカルに取り出され、
ブロードキャストされる。その後、ターゲットGPRに
関するACRに01がセットされる。アドレス・レジス
タとしてのそのレジスタの後続の使用は、ロードされる
アドレスに対してローカルなプロセッサによる取出およ
びブロードキャストをもたらす。この形で、フォークさ
れたGPRを伴うSIMDモードでの動作が、ジョイン
されたGPRを伴うSISDモードにシフトされる。
【0046】バリヤ命令での分岐によって、個々のプロ
セッサが同期化される。具体的に言うと、この命令によ
って、個別に実行中のプロセッサが、バリヤで一時的に
処理を停止し、その後、残りのプロセッサがそのバリヤ
に来るのを待つ。さらに、バリヤにいるプロセッサは、
限られた時間(すなわちタイムアウト期間)の間だけ、
他のプロセッサを待つことを許可される。タイムアウト
期間の終りに、少なくとも1つのプロセッサがバリヤに
到着していないと仮定すると、エラーが生成される。そ
の一方で、タイムアウトの前にすべてのプロセッサがバ
リヤに到着したと仮定すると、ICのACRビットに1
をセットすることによって、命令ストリームがジョイン
される。この形で、システムの動作を、複数命令ストリ
ームから単一命令ストリームに切り替えることができ
る。
【0047】命令ストリームをジョインするもう1つの
処理には、ジョインされたベース・レジスタを用いる分
岐命令の実行が含まれる。この技法を、図7に関して下
で詳細に説明する。
【0048】図6を参照すると、さまざまな計算機状態
(すなわち、SISDモード、SIMDモード、および
MIMDモード)と、それらのお互いとの関係が記載さ
れている。ジョインされたSISDモードでは、コンピ
ュータ・システム100が、単一プロセッサ・モードで
動作する。このモードでは、プロセッサ内の各GPR
が、残りのプロセッサの対応するGPRとジョインされ
る。動作中には、単一命令ストリームが、プロセッサに
よって実行される。具体的に言うと、命令ストリームお
よびデータ・ストリームにローカルなプロセッサが、メ
モリから命令を取り出し、実行する。したがって、命令
のアドレスおよびデータのアドレスによって、メモリに
アクセスするプロセッサが指定される。アドレスが、特
定のプロセッサの範囲外にシフトした時には、異なるプ
ロセッサが、動作を開始する。その結果、どの時点で
も、システム内の単一のプロセッサが動作する。
【0049】Load Forked Address命令の実行によっ
て、ジョインされたSISDモードからフォークされた
SISDモードへの遷移を行うことができる。上で述べ
たように、この命令は、GPRに関連するACRビット
に10をセットすることによって、ジョインされたレジ
スタをフォークする。フォークの後に、そのGPRは、
独立に働き、本発明のインターリーブ方式に従ってアド
レスをを生成する。
【0050】システムの動作は、フォークされたレジス
タを実際に使用することによって、SISDモードから
SIMDモードにシフトまたは遷移する。たとえば、上
で述べたようにLFA命令によってフォークされたレジ
スタにロードすると、各プロセッサが独立にデータを取
り出すようになる。SIMDモードでは、各プロセッサ
がメモリのそれ自体のローカル部分から取り出したデー
タを使用して、プロセッサが単一命令ストリームを実行
する(すなわち、命令が、ローカル・プロセッサによっ
て取り出され、他のプロセッサにブロードキャストされ
る)。したがって、各プロセッサは、同一の命令を受け
取るが、異なるデータ要素を操作する。
【0051】SISDモードからSIMDモードに戻る
ために、LJA命令を実行することができる。この命令
を用いると、プロセッサ00が、取出を実行し、残りの
プロセッサにブロードキャストする。他のプロセッサ
は、ブロードキャスト・データをそのターゲット・レジ
スタに格納し、これによって、これらのレジスタがジョ
インされる。さらに、このGPRに関連するACRビッ
トにも、ジョインされた状態を示す01がセットされ
る。
【0052】SIMDモードまたはフォークされたSI
SDモードで動作している間は、フォークされたRBを
伴う分岐命令の実行によって、プロセッサが分割され
る。これによって、動作がMIMDモードに切り替えら
れ、各プロセッサが、独立に取り出したデータを使用し
て、それ自体の命令ストリームを実行できるようにな
る。MIMDモードでは、プロセッサのそれぞれが、そ
れ自体の命令を取り出し、この命令を、それ自体のロー
カル・データに対して実行する。したがって、各プロセ
ッサは、独立であり、それ自体の命令およびそれ自体の
データに対して動作する。
【0053】MIMDモードから抜けるためには、バリ
ヤ命令での分岐を使用するバリヤ同期化(barrier sync
hronization)を実行する。図7を参照すると、バリヤ
命令が読み取られ、バリヤ同期化がもたらされる。この
命令を受け取るプロセッサは、スピンまたは一時停止
し、他のプロセッサに関する結果または更新を受け取る
まで、処理をやめる。この結果は、すべてのエンジンが
バリヤに到達する前にタイムアウトまたは割込みが発生
した場合には、たとえば−1である。すべてのエンジン
がタイムアウト以内にバリヤに到達した場合には、たと
えば0が返される。この時点で、ICのACRビット
に、単一命令ストリームを示す1がセットされる。
【0054】コンピュータ・システム100の動作を、
図8および図9に関して詳細に説明する。通常、コンピ
ュータ・システム100は、MIMDモードで動作を開
始する1010。MIMDモード中は、ACR ICビ
ットに0がセットされ、ACR RTビットに00がセ
ットされる。その結果、各プロセッサは、それ自体の命
令を取り出し、ローカルに取り出されたデータに対して
これらの命令を実行することによって、独立に動作す
る。
【0055】このモードでの実行中に、同期化を実行す
ることによって、または、言い換えれば、個々のプロセ
ッサの動作を同期化することによって、動作をMIMD
モードからシフトすることができる。これに関して、通
常は2つの状況が、同期化を引き起こす。第1に、ジョ
インされたGPR(すなわち、ACRビットに01がセ
ットされている)に対して実行される分岐命令1020
が、同期化1030を引き起こすことができる。この場
合、同期化に関して、エラーを返す前の比較的短いタイ
ムアウトが提供される。
【0056】もう1つの場合には、バリヤ命令での分岐
1040が、やはりエンジン0からのブロードキャスト
を介して同期化をもたらすことができる1050。上で
述べたように、この命令によって、プロセッサが同期化
するためのより長いタイムアウト期間が可能になる。同
期化された時に、任意のプロセッサ、この例ではエンジ
ン00が、命令を取り出し、残りのプロセッサにブロー
ドキャストし、したがって、命令ストリームがジョイン
される。
【0057】たとえばジョインされたGPRを用いて実
行される分岐命令またはバリヤ命令での分岐からの同期
化イベントがない場合には、処理はMIMDモードで継
続される1010。
【0058】同期化が行われる場合、ICのACRビッ
トに1がセットされ、これによって、命令ストリームが
ジョインされる1060。その時点で、処理は、RBの
状態に従って、またはLJA命令が取り出されるかどう
かに従って、SIMDモードまたはSISDモードのい
ずれかで継続される1070。具体的に言うと、LJA
命令が取り出されるか、ジョインされたGPR(ACR
ビットに01がセットされている)が使用されるかのい
ずれかの場合に、処理がSISDモードで継続される1
080。
【0059】SISDモード1080では、単一の命令
が取り出され、実行される。同様に、単一データ・スト
リームが、プロセッサによって実行される。したがっ
て、上で説明したように、命令ストリームおよびデータ
・ストリームに対してローカルなプロセッサが、本発明
のインターリーブ方式によって指示されるように、メモ
リから命令を取り出し、実行する。
【0060】その後、ステップ1090で、RAに関連
するACRビットに、それがジョインされることを示す
01がセットされているかどうかと、LJA命令が取り
出されたかどうかとによって、複製された実行を用いて
SISDモードで処理を継続する1100か、並列実行
を用いるSIMDモードで処理を継続する1140かが
示される。具体的に言うと、RAがジョインされる時、
またはLJA命令が実行される時に、処理は、複製され
た実行を用いてSISDモードで、すなわち、各プロセ
ッサが同一の動作を実行し、同一の結果をRTに格納す
る単一プロセッサ・モードでの動作で、継続される11
00。対照的に、LJA命令以外の命令が実行される時
には、並列実行を用いるSIMDモードでの処理が開始
される1140。
【0061】複製された実行を用いるSISDモード1
100から、動作は、取り出される命令がLFA命令で
ない場合1110には、SISDモードにとどまること
ができる。具体的に言うと、取り出される命令がLFA
命令でない場合には、ステップ1120でRTに関連す
るACRに01がセットされ、この場合、GPRがジョ
インされ、処理はSISDモードで継続される。
【0062】その一方で、LFA命令が取り出される場
合には、ステップ1130で、RTに関連するACRに
10がセットされる。この場合、このGPRの次の使用
が、SIMD動作をもたらし、このSIMD動作が、追
加のGPRに命令を複数命令ストリームにフォークまた
は分割させ、MIMDモードへの遷移を引き起こす。
【0063】その一方で、ステップ1090で、LJA
命令が取り出されず、ジョインされないRA(すなわ
ち、ACRビットに10または00をセットされている
ことによって示される)が使用される場合には、SIS
Dモードの処理1100の代わりに、並列実行を用いる
SIMDモードで処理が継続される1140。この場
合、ステップ1150で、RTに関連するACRビット
に00がセットされ、RTが、現在はフォークされ、各
プロセッサによって独立に取り出されるか生成される異
なるデータを含むことが示される。
【0064】ステップ1070に戻って、アドレスの生
成に使用されるGPRが、ジョインされない(すなわ
ち、このRBに関連するACRビットに01以外の値が
セットされている)場合、かつ、LJA命令以外の命令
が取り出される場合には、SISDモードに入る代わり
に、処理が、並列取出を用いるSIMDモードで継続さ
れる1160。この場合、各プロセッサが、それ自体の
データを取り出す。
【0065】並列取出を用いるSIMDモード1160
から、ステップ1170の分岐命令で、命令ストリーム
がフォークされ、ステップ1175で、ICのACRビ
ットに0をセットすることによって、その旨が示され
る。命令ストリームをフォークすることによって、処理
は、その後、MIMDモード1010に戻る。
【0066】ステップ1170で、分岐命令以外の命令
が取り出される場合には、処理は、上で述べた並列実行
を用いるSIMDモード1140で継続される。
【0067】上で説明したのは、レジスタのジョインお
よびフォークに頼ることによってコンピュータ・システ
ムを動作させるための技法および機構である。具体的に
言うと、ジョインされた時に、レジスタには同一の情報
が含まれる。これに対して、フォークされた時に、レジ
スタには、異なる情報が含まれる。レジスタをジョイン
されたモードからフォークされたモードに切り替えられ
るようにすることによって、コンピュータ・システム
を、複数の動作モードの間ですばやく効率的に切り替え
ることができる。さらに、本発明は、メモリの区分を介
し、特定のメモリ・セクションにローカルなプロセッサ
による情報の取出およびブロードキャストを介して、よ
り高いメモリ帯域幅およびより大きく高速のキャッシュ
も提供する。
【0068】図10に、本発明の1態様による、レジス
タ・パイプ機能を実施する、全般的に符号10で示され
るマルチプロセッサ・コンピュータ・システムの1実施
形態を示す。この実施形態では、CPU 0、CPU
1、CPU 2、およびCPU 3と記された4つの処
理エンジン12が、本発明に従うレジスタ・パイプ14
を使用して完全に直接に相互接続される。各使用可能に
されたレジスタ・パイプは、そのパイプが接続するCP
U IDの対によって識別される。たとえば、CPU
1とCPU 2の間の接続は、タプル(1、2)によっ
て知られる。各CPUの中では、レジスタ・パイプ14
ごとに、その特定のパイプに接続されたCPUを表す数
が識別される。完全に接続されたn個のCPUのセット
は、n(n−1)/2個の可能な直接パイプ接続を有す
る。この図に示されたCPUは、本発明の原理によるレ
ジスタ・パイプを使用して相互接続することができる処
理エンジンの1例にすぎないことに留意されたい。
【0069】本明細書で提示されるように、レジスタ・
パイプは、1実施形態では、実施されるパイプに汎用レ
ジスタ(GPR)をマッピングし、これによって2つの
処理エンジンを接続することによって構築することがで
きる。マルチプロセッサ・コンピュータ・システム内の
各プロセッサは、通常、複数の汎用レジスタを有し、た
とえば、通常のアーキテクチャで16個のGPRを設け
ることができる。例として、最初に提示した、4つの処
理エンジンの単一プロセッサ実施形態の説明を参照され
たい。汎用レジスタを特定のパイプにマッピングするこ
とによって、ある命令がその特定のGPRを指す時に必
ず、パイプがその時点で使用可能にされていると仮定し
て、そのパイプが使用される。
【0070】使用可能にされたパイプのそれぞれは、パ
イプが接続される処理エンジンのCPU IDと一致す
る下位アドレス・ビットを有するGPRとしてアドレッ
シングすることができる。16GPR計算機では、たと
えばCPU 1とCPU 2の間のパイプを、CPU
1ではGPR xx10として、CPU 2ではGPU
xx01としてアドレッシングすることができる。パ
イプにマッピングするには1つのGPRだけが必要なの
で、xxは、任意とすることができ、規則によって、1
例では11がセットされる。GPRマッピングによっ
て、パイプを、あらゆる命令のソース・レジスタまたは
ターゲット・レジスタにすることができる。前に示した
4つの処理エンジンの間のレジスタ・パイプを完全に実
施するためには、各プロセッサ内で4つのGPRが必要
になるはずである。16GPR実施形態では、これによ
って、他の処理のためにまだ8つのGPRが残されるこ
とに留意されたい。
【0071】本発明に従って、図10の符号16の第4
のGPRアドレスを、放射するまたは統合するパイプ・
アドレスとして使用することができる。たとえば、デー
タをあるCPUから他のすべてのCPUに書き込まなけ
ればならない場合には、この第4のパイプ・アドレスを
使用して、他のすべてのパイプにデータをブロードキャ
ストすることができる。逆に、たとえば上で述べたもの
などのバリヤ同期化機能を容易にするために、すべての
パイプからデータを読み取らなければならない場合に、
この第4のパイプ・アドレスを使用することができる。
このブロードキャスト/統合パイプは、1例ではパイプ
00として、各処理エンジン内で参照することができ
る。したがって、命令がパイプ00に書き込む場合に
は、データが、そのエンジンに接続されたすべての他の
パイプにブロードキャストされ、データがパイプ00か
ら読み取られる場合には、バリヤ同期化が実行される。
【0072】図11に、接続ファブリック22がマルチ
プロセッサ・コンピュータ・システムの処理エンジンに
よって共用される、本発明の代替実施形態を示す。共用
接続24が、接続ファブリック22を各処理エンジン1
2に結合する。使用可能な多数の相互接続トポロジが存
在することを、当業者は理解するであろう。例として、
接続ファブリックに、リング、ネットワーク、メッシ
ュ、または完全に接続されたスイッチ構造などの相互接
続構造を含めることができる。
【0073】図10の実施形態と共通しているのが、各
処理エンジン内で、レジスタが、所望のパイプ・レジス
タを作成するために選択的にマッピングされることであ
る。1実施形態では、パイプのこのマッピングを、命令
の処理中にレジスタ・パイプを選択的に使用可能にする
ことができるという点で、動的にすることができる。C
PU IDタプルを使用して、共通のファブリックまた
はスイッチを介してデータを経路指定することができ、
したがって、CPUの数が増える際の直接レジスタ・パ
イプ(direct register pipe)に関連するコストが回避
される。これは、マルチプロセッシング・システムの完
全な相互接続に必要なパイプの数がn2で増加するの
で、重要になる可能性がある。1実施形態では、デステ
ィネーションCPU IDを使用して、ファブリックを
制御することができ、ターゲットCPU IDを使用し
て、デスティネーション側で、到着するデータが来るパ
イプを識別することができる。低レベルのスケーリング
では、図10の完全に接続されたネットワークが、最も
高速かつ単純な動作を可能にし、より高いレベルでは、
図11の実施形態がより実用的になる可能性がある。
【0074】汎用レジスタを有するプロセッサの1つの
単純な実施形態では、汎用レジスタの1つのコピーと、
実行される命令内のレジスタ・ポインタ・フィールドに
基づいてこれらのレジスタにアクセスする単一の実行ユ
ニットがある。上で説明したレジスタ・パイプの概念
は、例示のためにそのようなアーキテクチャを使用して
示された。しかし、本発明の概念を、より複雑なアーキ
テクチャに簡単に拡張できることを、当業者は諒解する
であろう。
【0075】さらに、説明を明瞭にするために、各パイ
プが4つのレジスタを使用して実施されると仮定する。
たとえば、パイプ(0、1)は、CPU 1のイン・レ
ジスタ(in reg)に供給するCPU 0のアウト・レジ
スタ(out reg)と、CPU0のイン・レジスタに供給
するCPU 1のアウト・レジスタによって実施される
と仮定される(下の図12ないし図14を参照された
い)。レジスタ・マッピングの時には、イン・レジスタ
とアウト・レジスタのそれぞれが、それが存在するCP
U内のGPRにマッピングされる。すなわち、パイプ
(0、1)が使用可能にされる時には、CPU 0のG
PR xx01への書込が、パイプ(0、1)に関連す
るイン・レジスタに書き込まれる。同様に、GPR x
x01からの読取は、パイプが使用可能にされている時
には、パイプ(0、1)に関連するアウト・レジスタか
らデータを受け取る。
【0076】イン・レジスタ、アウト・レジスタ、およ
びGPRの物理的実施形態は、複数の形をとることがで
きる。たとえば、各プロセッサのGPRおよびイン・レ
ジスタを、GPRとして実施することができる。これに
よって、イン・レジスタの別の実装が節約され、コンテ
キスト切替え時にその内容を別に保管することも行われ
なくなる。さらに、たとえばCPU 1のアウト・レジ
スタを、CPU 0のGPRにアーキテクチャ的にマッ
ピングすることが可能である。この場合、すなわち、サ
イクル・タイム、配線長、およびロジック速度が、たと
えばCPU 1実行ユニットからCPU 0のGPRへ
の1サイクル以内のデータの直接転送を可能にする場合
に、アウト・レジスタは、タイミング目的のみのために
存在し、アーキテクチャ的には存在しない。
【0077】本発明の実施形態は、アウト・レジスタお
よびイン・レジスタを物理的に実施せずに達成すること
ができる。実用上の問題として、このタイミング状況
は、発生する可能性が低く、本発明を、CPUの命令ス
トリームの間の転送遅延およびスキューを許容するため
に2サイクルのバッファリングを有するものとして示
す。これは、データ・パイプが、コンテキスト切替えの
際にターゲットGPRに内容をフラッシュしなければな
らず、GPRの読取の前にアウト・レジスタへの書込が
許可される場合には、アウト・レジスタを別に保管しな
ければならないことを意味する。トレードオフは、CP
Uがコンテキスト切替え時に保管しなければならない
「状態」のサイズの増加と、イン・レジスタ・ステージ
およびアウト・レジスタ・ステージの間にあるパイプに
データをスタックする能力の間にある。パイプのステー
ジ数が増えるほど、より多くの状態データを保管しなけ
ればならない。
【0078】代替実施形態として、汎用レジスタのマッ
ピングを必要とせずに、直接にパイプにアクセスするよ
うに命令を構成することができる。レジスタへのマッピ
ングによって、すべての命令による柔軟なパイプの使用
が可能になるが、パイプが使用可能にされた時に、マッ
ピングされたGPRがパイプ接続専用になる。パイプ転
送用の明示的な命令を用いて、このGPRマッピングの
コストを回避する。新規のバイナリ命令アーキテクチャ
が使用可能である時には、GPRフィールドの余分のビ
ットによって、GPRではなくパイプの使用を識別する
ことができる。しかし、限られたGPRセットと、既存
の命令アーキテクチャ制約とを有する計算機の場合、G
PRの代わりにパイプを明示的にアドレッシングする命
令の追加も機能する。実際、レジスタ・マッピングが実
施される時であっても、少数のそのような命令が望まし
いことがしばしばである。
【0079】主な価値を有する命令は、パイプのロー
ド、パイプからのストア、レジスタからパイプへの移
動、およびパイプからレジスタへの移動になるはずであ
る。これらの命令は、通常の命令と同様に機能するが、
そのオペランドGPRポインタの1つが、パイプのアド
レッシングに使用される。実際、これは、命令のオペコ
ード・フィールドを使用して、GPRポインタの制限付
きの拡張を行うことである。加算、総計の比較、および
ソートなどのいくつかの命令は、パイプ構造のサブセッ
トを使用する実施に向いている。
【0080】たとえば、大量の線形代数を実行する計算
機では、「積和」命令が実施されることがしばしばであ
る。この命令は、乗算を実行し、その結果を累計レジス
タに加算する。16ウェイ・ベクトル乗算を検討された
い。単一の計算機内に、実行される16個の積和があ
る。単純にリングに接続された4個のプロセッサを有す
る計算機内では、これは、4つの積和と2つのパイピン
グされた加算によって実行することができる。パイプが
ない場合には、4ウェイ計算機は、各最終的な加算の前
にストアを実行しなければならない(RISC計算機
(IBM社が提供する)では、これがStore、Lo
ad、Addになる)。これにはメモリの共用が含まれ
るので、同期化オーバーヘッドが大きく、したがって、
コストは、単純に命令を足し合わせたものより大きい。
【0081】本発明の原理によるレジスタ・パイプを実
施するための1実施形態を、図12ないし14に関して
下で説明する。上で注記したように、本発明のレジスタ
・パイプ機能は、たとえば汎用レジスタ用の、1種のレ
ジスタ制御方式であり、これによって、情報がコンピュ
ータ・システムの主記憶を通過することを必要とせず
に、第1処理エンジンから第2処理エンジンへの情報の
直接転送が可能になる。直接接続実施形態では、レジス
タ・パイプに、第1処理エンジンと第2処理エンジンを
結合する第1パイプ・セクションと、第1処理エンジン
と第2処理エンジンを結合する第2パイプ・セクション
が含まれる。第1パイプ・セクションには、第1処理エ
ンジンの出力レジスタおよび第2処理エンジンの入力レ
ジスタを含めることができ、第2パイプ・セクションに
は、第1処理エンジンの入力レジスタおよび第2処理エ
ンジンの出力レジスタを含めることができる。
【0082】図12に、マルチプロセッシング・コンピ
ュータ・システム内のCPUなどの処理エンジン12の
1実施形態を示す。処理エンジン12には、図2に関し
て上で提供した説明に類似する形で機能する、L1キャ
ッシュ30、GPR32、および実行ユニット34が含
まれる。さらに、各プロセッサ内には、1実施形態で具
体的にGPR32にマッピングされる、パイプ・アウト
・レジスタ(pipe outregister)40およびパイプ・イ
ン・レジスタ(pipe in register)42がある。
【0083】当業者には明白であるように、任意の個数
のGPR、たとえば16個を、各プロセッサ内に含める
ことができる。各GPRは、さまざまな目的に使用する
ことができる。たとえば、1つまたは複数のGPRを、
アドレス・レジスタとして使用し、単一アドレス・レジ
スタ命令のRBフィールド、および複数アドレス・レジ
スタ命令のRBフィールドおよびRAフィールドによっ
て、その旨を指定することができる。同様に、本発明を
説明するために、GPRを、ターゲット・レジスタ(す
なわち、動作の実行後のデータのデスティネーション)
として使用し、メモリ(すなわちRTキャッシュ)から
データを取り出した時または実行ユニット内の演算の完
了時(すなわちRT結果)のいずれかにレジスタを更新
する命令のRTフィールド(一部のアーキテクチャでは
RAと同一)によってその旨を指定することができる。
さらに、GPRに含まれる内容を、オペランドまたはア
ドレスとして使用することができる。
【0084】L1キャッシュ30は、そこから情報を取
り出し、GPR32に格納するか、実行ユニット34に
転送することができるように配置される。さらに、情報
は、本発明の原理に従ってパイプ・アウト・レジスタ4
0に転送するために、L1キャッシュ30から取り出す
ことができる。別のプロセッサから受け取るデータは、
パイプ・イン・レジスタ42を介して、実行ユニット3
4のA入力およびB入力として渡される。実行ユニット
34の結果は、図示のように、L1キャッシュ30、G
PR32、またはパイプ・アウト・レジスタ40に転送
することができる。
【0085】本発明の原理によれば、3つの出力レジス
タが、3のパイプ・イン・レジスタ42と共に、マルチ
プロセッシング・コンピュータ・システムの3つの他の
処理エンジンに接続されるものとして図示されている。
やはり、レジスタは、本発明のこの態様に従ってマッピ
ングされ、その結果、GPRへの書込の代わりに、デー
タが、たとえばパイプ・アウト・レジスタに書き込まれ
る。また、データを読み取る時には、GPRからデータ
を読み取る代わりに、パイプ・イン・レジスタからデー
タを読み取ることができる。本質的に、レジスタ・パイ
プの各パイプ・セクションは、2つのレジスタすなわ
ち、第1処理エンジンの出力レジスタと第2処理エンジ
ンの入力レジスタからなる先入れ先出し(FIFO)バ
ッファである。レジスタ・パイプが満杯になったなら
ば、追加の情報をそのパイプに置く前に、他端でデータ
を読み出さなければならない。
【0086】図13および図14に、それぞれパイプ出
力レジスタおよびパイプ入力レジスタの制御方式の1実
施形態を示す。まず図13を参照すると、3つのパイプ
・アウト・レジスタ40が図示されている。セレクタS
は、L1キャッシュ30(図12)からのデータまたは
実行ユニット34(図12)からの結果の間で選択する
ために、各パイプ・アウト・レジスタ40への入力にあ
る。デコード・ユニット50からの制御信号53が、ど
のデータを出力するかを制御する。デコード・ユニット
50は、ターゲット・レジスタ(RT)の結果またはキ
ャッシュ入力と、アクセス制御信号を入力として受け取
る。デコード・ユニット内のアクセス制御レジスタ(A
CR)が、どの特定のGPRがパイプ・レジスタとして
機能するか否かを制御する。スピン(SPIN)信号
は、使用されるレジスタ・パイプが満杯であり、デステ
ィネーション・プロセッサによって空にされるのを待っ
ている時に、デコード・ユニットから出力される。ラッ
チが、各パイプ・アウト・レジスタ40に関連して、そ
のレジスタを介するデータの出力を制御する。ラッチ
は、デコード・ユニット50からのFULL信号52に
よって制御される。FULL信号は、パイプに何かがあ
ることと、そのパイプを空にしなければ追加データを書
き込めないことを示す。望むならば、代替実施形態で、
各FIFOへの複数のステージを使用することができ
る。FILL制御信号54は、データが特定のパイプ・
アウト・レジスタ40に書き込まれる時に、デコード・
ユニット50から出力される。制御信号53は、やは
り、どのソースからデータを導出するかを制御する。
【0087】3つのパイプ・アウト・レジスタをアドレ
ッシングするために、2ビットのアドレスが必要である
ことに留意されたい。2ビットのアドレスは、4つのア
ドレス可能性をもたらし、1つの余分なアドレスがある
ことを意味する。この余分なアドレスを、図10および
図11で示したように使用して、すべてのパイプに書き
込むか、すべてのパイプの間でデータを同期化するかの
いずれかを行うことができる。したがって、プロセッサ
自体のパイプ・エンジンIDに等しいRTを用いるパイ
プ書込は、3つのパイプ・アウト・レジスタ40のすべ
てへのロードを引き起こす。これは、RT結果とRTキ
ャッシュの間の直列化を引き起こし、スピンまたはプロ
セッサ・ウェイトをもたらすことができる。
【0088】図14に、本発明によるレジスタ・パイプ
を組み込んだ、マルチプロセッサ・コンピュータ・シス
テムの4プロセッサ実施形態の各プロセッサ内で実施さ
れるパイプ・イン・レジスタの1実施形態を示す。例と
して、パイプ・イン・レジスタ42は、システム内の他
のプロセッサの対応するパイプ・アウト・レジスタから
データを受け取ることができる。ソース処理エンジンが
レジスタに書き込む時にレジスタへのデータをラッチす
るために、ラッチが、各レジスタに関連する。FULL
信号62が、ラッチによってデコード・ユニット60に
供給され、ソース・プロセッサにも返される。デコード
・ユニット60は、たとえば実行ユニット34(図1
2)への送出のために、選択されたパイプ・イン・レジ
スタ42を空にするためのEMPTY信号64を開始す
る際に、やはりアクセス制御レジスタ(ACR)を使用
する。各パイプ・イン・レジスタ42の出力は、第1お
よび第2のセレクタS66に入力される。セレクタS6
6は、デコード・ユニットがread A信号またはr
ead B信号のどちらを受け取ったかに応じて、実行
ユニット34(図12)のAデータ信号線およびBデー
タ信号線にデータを出力する。
【0089】1実施形態では、アクセス制御レジスタ
(ACR)に、双方向接続ごとに1ビットが含まれる。
これは、接続に対するGPRアドレスの固定されたマッ
ピングを前提とする。したがって、完全に接続された4
ウェイ・レジスタ・パイプは、各プロセッサ内に4つの
レジスタを必要とする。やはり、余分なレジスタ・アド
レスを使用する自己接続によって、他のすべてのプロセ
ッサへのブロードキャスト、またはバリヤ同期化(上で
説明した)のいずれかが使用可能になる。表1に、アク
セス制御レジスタの状態の1例を示す。
【0090】
【表1】
【0091】上で注記したように、それ自体のパイプ・
アドレス、たとえば図10では第4のGPRアドレス1
6のパイプから読み取る処理エンジンによって、本発明
に従って独自の同期化バリヤを実施することができる。
レジスタ・パイプを使用して4つのプロセッサを完全に
接続するためには3つのアドレスが必要なので、2ビッ
トのアドレッシング方式によって、余分なパイプ・アド
レスが可能になる。この余分なアドレスは、プロセッサ
自体のパイプ・アドレスと指定され、読み取られる時
に、本発明によるバリヤ同期化が開始される。バリヤ同
期化は、図7に示し上で説明したハードウェアを使用し
て実施することができる。しかし、本発明の制御概念
は、命令ストリームまたは計算機のジョインを伴わな
い。そうではなくて、読み取られる時に、第4のGPR
アドレス16(図10)の専用パイプ・レジスタに対す
るエンジン自体のIDアドレスが、その読取を開始した
処理エンジンとの同期化の開始をもたらす。読取を行う
命令は、結果が使用可能になるまでスピンする。結果
は、すべての処理エンジンがバリヤ命令に達する前にタ
イムアウトまたは割込みが発生する場合には−1にな
る。タイムアウト期限内にすべてのエンジンがバリヤに
達する場合には、0が返される。タイムアウト期限に
は、計算機の間の同期化がその間に発生しなければなら
ない、定義済みのサイクル数を含めることができる。
【0092】動作中に、命令が実行され、それ自体の処
理エンジンのパイプ・アドレスから読み取られる時に
は、そのエンジンがバリヤ同期化の状態であることを他
の処理エンジンに知らせるためにラッチがセットされ
る。図7の論理は、マルチプロセッサ・コンピュータ・
システムの各処理エンジン内で実施され、他の処理エン
ジンは、バリヤ同期化信号を受け取る時に、それぞれが
同期化を開始する。図7の実施形態では、ANDゲート
がすべての処理エンジンに共通すると仮定され、入力と
して、各処理エンジン内の図示されたラッチからの出力
の論理和を受け取ることに留意されたい。
【0093】本発明は、たとえばコンピュータ使用可能
媒体を有する製造品(たとえば、1つまたは複数のコン
ピュータ・プログラム製品)に含めることができる。媒
体は、たとえば、本発明の機能を提供し、容易にするコ
ンピュータ可読プログラム・コード手段をその中に実施
される。製造品は、コンピュータ・システムの一部とし
て含めるか、別に販売することができる。
【0094】さらに、本発明の機能を実行するために計
算機によって実行可能な命令の少なくとも1つのプログ
ラムを具体的に実施する、計算機によって読取可能な少
なくとも1つのプログラム記憶装置を提供することがで
きる。
【0095】流れ図は、本明細書では単に例として示さ
れる。本発明の趣旨から逸脱しない、これらの図または
本明細書に記載のステップ(または動作)に対する多数
の変更形態がありえる。たとえば、ステップを異なる順
序で実行することができ、ステップの追加、削除、また
は変更が可能である。これらの変形形態のすべてが、請
求される発明の一部とみなされる。
【0096】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0097】(1)第1処理エンジンと第2処理エンジ
ンとの間でデータを転送する方法であって、前記第1処
理エンジンと前記第2処理エンジンとの間でレジスタ・
パイプを確立するステップと、前記第1処理エンジンと
前記第2処理エンジンとの間で前記レジスタ・パイプを
使用してデータを転送するステップであって、データ
が、メモリを通過せずに前記第1処理エンジンと前記第
2処理エンジンとの間で転送される、ステップとを含む
方法。 (2)前記レジスタ・パイプが、前記第1処理エンジン
内の少なくとも1つの第1レジスタと、前記第2処理エ
ンジン内の少なくとも1つの第2レジスタとを含む、上
記(1)に記載の方法。 (3)前記レジスタ・パイプが、両方向であり、前記少
なくとも1つの第1レジスタが、第1インレット・レジ
スタおよび第1アウトレット・レジスタを含み、前記少
なくとも1つの第2レジスタが、第2インレット・レジ
スタおよび第2アウトレット・レジスタを含む、上記
(2)に記載の方法。 (4)前記第1インレット・レジスタ、前記第1アウト
レット・レジスタ、前記第2インレット・レジスタ、お
よび前記第2アウトレット・レジスタが、汎用レジスタ
を含む、上記(3)に記載の方法。 (5)前記確立するステップが、前記第1処理エンジン
と前記第2処理エンジンとを結合する前記レジスタ・パ
イプとして、前記汎用レジスタをマッピングするステッ
プを含む、上記(4)に記載の方法。 (6)前記レジスタ・パイプが、前記第1処理エンジン
から前記第2処理エンジンへデータを転送するための第
1パイプ・セクションと、前記第2処理エンジンから前
記第1処理エンジンへデータを転送するための第2パイ
プ・セクションとを含み、前記第1パイプ・セクション
が、前記第1アウトレット・レジスタおよび前記第2イ
ンレット・レジスタを含む第1先入れ先出し(FIF
O)バッファを含み、前記第2パイプ・セクションが、
前記第1インレット・レジスタおよび前記第2アウトレ
ット・レジスタを含む第2FIFOバッファを含む、上
記(3)に記載の方法。 (7)前記転送するステップが、前記第2処理エンジン
に転送するために前記第1アウトレット・レジスタにデ
ータを書き込むことによって前記第1パイプ・セクショ
ンを充たすステップと、前記第1FIFOバッファが満
杯である時に必ず前記第2インレット・レジスタを介し
て前記第1FIFOバッファからデータを読み取ること
によって前記第1パイプ・セクションを空にするステッ
プとを含む、上記(6)に記載の方法。 (8)前記転送するステップが、前記第1処理エンジン
に転送するために前記第2アウトレット・レジスタにデ
ータを書き込むことによって前記第2パイプ・セクショ
ンを充たすステップと、前記第2FIFOバッファが満
杯である時に必ず前記第1インレット・レジスタを介し
て前記第2FIFOバッファからデータを読み取ること
によって前記第2パイプ・セクションを空にするステッ
プとを含む、上記(6)に記載の方法。 (9)前記第1処理エンジンおよび前記第2処理エンジ
ンが、マルチプロセッシング・エンジン環境の一部であ
り、前記確立するステップが、前記マルチプロセッシン
グ・エンジン環境内の処理エンジンの少なくともいくつ
かの対の処理エンジンの各対の間で異なるレジスタ・パ
イプをマッピングするステップを含む、上記(1)に記
載の方法。 (10)前記マルチプロセッシング処理エンジン環境
が、4つの処理エンジンを含み、前記4つの処理エンジ
ンが、前記第1処理エンジン、前記第2処理エンジン、
第3処理エンジン、および第4処理エンジンを含み、前
記確立するステップが、前記第1処理エンジンと、前記
第2処理エンジン、前記第3処理エンジン、および前記
第4処理エンジンとの間で3つのパイプ・レジスタをマ
ッピングするステップを含む、上記(9)に記載の方
法。 (11)前記確立するステップが、前記レジスタ・パイ
プを確立するために、前記第1処理エンジンの汎用レジ
スタおよび前記第2処理エンジンの汎用レジスタを動的
にマッピングするステップを含む、上記(1)に記載の
方法。 (12)前記動的にマッピングするステップが、前記第
1処理エンジンおよび前記第2処理エンジンの前記汎用
レジスタをそれぞれ前記レジスタ・パイプにマッピング
するために、前記第1処理エンジンに関連する第1制御
レジスタおよび前記第2処理エンジンに関連する第2制
御レジスタを使用するステップを含む、上記(11)に
記載の方法。 (13)前記第1処理エンジンおよび前記第2処理エン
ジンが、マルチプロセッシング・エンジン環境の一部で
あり、前記方法がさらに、前記マルチプロセッシング・
エンジン環境の少なくともいくつかの処理エンジンの間
のバリヤ同期化を実施するステップを含む、上記(1)
に記載の方法。 (14)前記実施するステップが、前記マルチプロセッ
シング・エンジン環境の少なくともいくつかの処理エン
ジンのそれぞれで、前記エンジンにアドレッシングされ
るレジスタ・パイプから読み取るために前記エンジンに
対する命令を処理するステップを含み、前記少なくとも
いくつかの処理エンジンの間の同期化が、前記少なくと
もいくつかのエンジンの各エンジンがそれにアドレッシ
ングされたそのレジスタ・パイプから読み取るために前
記命令を実行する際に確立される、上記(13)に記載
の方法。 (15)前記少なくともいくつかの処理エンジンの各処
理エンジンで、それにアドレッシングされるそれ自体の
レジスタ・パイプを確立するステップをさらに含む、上
記(14)に記載の方法。 (16)前記マルチプロセッシング・エンジン環境が、
4つの処理エンジンおよび複数のレジスタ・パイプを含
み、各処理エンジンが、4つのレジスタ・パイプをアド
レッシングし、前記4つの処理エンジンが、前記第1処
理エンジン、前記第2処理エンジン、第3処理エンジ
ン、および第4処理エンジンを含み、各処理エンジンに
よってアドレス可能な前記4つのレジスタ・パイプが、
前記処理エンジンを前記4つの処理エンジンの他の処理
エンジンに結合する3つのレジスタ・パイプと、それ自
体にアドレッシングされる第4レジスタ・パイプとを含
む、上記(13)に記載の方法。 (17)前記それ自体にアドレッシングされる第4レジ
スタ・パイプが、データを書き込むのに使用される時
に、前記データが、前記処理エンジンから前記マルチプ
ロセッシング・エンジン環境の前記他の処理エンジンに
ブロードキャストされる、上記(16)に記載の方法。 (18)前記確立するステップが、前記第1処理エンジ
ンと前記第2処理エンジンとの間で直接レジスタ・パイ
プを確立するステップを含む、上記(1)に記載の方
法。 (19)前記確立するステップが、前記第1処理エンジ
ンと前記第2処理エンジンとを結合するスイッチ・ファ
ブリックを介する、前記第1処理エンジンと前記第2処
理エンジンとの間の間接レジスタ・パイプを確立するス
テップを含む、上記(1)に記載の方法。 (20)前記確立するステップが、前記第1処理エンジ
ンと前記第2処理エンジンとの間のレジスタ・パイプの
使用を識別する命令アーキテクチャを提供するステップ
を含み、前記命令アーキテクチャが、前記レジスタ・パ
イプのアドレッシングに使用される汎用レジスタ命令内
のオペランド・フィールドを含む、上記(1)に記載の
方法。 (21)第1処理エンジンと第2処理エンジンとの間で
データを転送するシステムであって、前記第1処理エン
ジンと前記第2処理エンジンとの間でレジスタ・パイプ
を確立する手段と、前記第1処理エンジンと前記第2処
理エンジンとの間で前記レジスタ・パイプを使用してデ
ータを転送する手段であって、データが、メモリを通過
せずに前記第1処理エンジンと前記第2処理エンジンと
の間で転送される、データを転送する手段とを含むシス
テム。 (22)前記レジスタ・パイプが、前記第1処理エンジ
ン内の少なくとも1つの第1レジスタと、前記第2処理
エンジン内の少なくとも1つの第2レジスタとを含む、
上記(21)に記載のシステム。 (23)前記レジスタ・パイプが、両方向であり、前記
少なくとも1つの第1レジスタが、第1インレット・レ
ジスタおよび第1アウトレット・レジスタを含み、前記
少なくとも1つの第2レジスタが、第2インレット・レ
ジスタおよび第2アウトレット・レジスタを含む、上記
(22)に記載のシステム。 (24)前記第1インレット・レジスタ、前記第1アウ
トレット・レジスタ、前記第2インレット・レジスタ、
および前記第2アウトレット・レジスタが、汎用レジス
タを含む、上記(23)に記載のシステム。 (25)前記確立する手段が、前記第1処理エンジンと
前記第2処理エンジンとを結合する前記レジスタ・パイ
プとして、前記汎用レジスタをマッピングする手段を含
む、上記(24)に記載のシステム。 (26)前記レジスタ・パイプが、前記第1処理エンジ
ンから前記第2処理エンジンへデータを転送するための
第1パイプ・セクションと、前記第2処理エンジンから
前記第1処理エンジンへデータを転送するための第2パ
イプ・セクションとを含み、前記第1パイプ・セクショ
ンが、前記第1アウトレット・レジスタおよび前記第2
インレット・レジスタを含む第1先入れ先出し(FIF
O)バッファを含み、前記第2パイプ・セクションが、
前記第1インレット・レジスタおよび前記第2アウトレ
ット・レジスタを含む第2FIFOバッファを含む、上
記(23)に記載のシステム。 (27)前記転送する手段が、前記第2処理エンジンに
転送するために前記第1アウトレット・レジスタにデー
タを書き込むことによって前記第1パイプ・セクション
を充たす手段と、前記第1FIFOバッファが満杯であ
る時に必ず前記第2インレット・レジスタを介して前記
第1FIFOバッファからデータを読み取ることによっ
て前記第1パイプ・セクションを空にする手段とを含
む、上記(26)に記載のシステム。 (28)前記転送する手段が、前記第1処理エンジンに
転送するために前記第2アウトレット・レジスタにデー
タを書き込むことによって前記第2パイプ・セクション
を充たす手段と、前記第2FIFOバッファが満杯であ
る時に必ず前記第1インレット・レジスタを介して前記
第2FIFOバッファからデータを読み取ることによっ
て前記第2パイプ・セクションを空にする手段とを含
む、上記(26)に記載のシステム。 (29)前記第1処理エンジンおよび前記第2処理エン
ジンが、マルチプロセッシング・エンジン環境の一部で
あり、前記確立する手段が、前記マルチプロセッシング
・エンジン環境内の処理エンジンの少なくともいくつか
の対の処理エンジンの各対の間で異なるレジスタ・パイ
プをマッピングする手段を含む、上記(21)に記載の
システム。 (30)前記マルチプロセッシング処理エンジン環境
が、4つの処理エンジンを含み、前記4つの処理エンジ
ンが、前記第1処理エンジン、前記第2処理エンジン、
第3処理エンジン、および第4処理エンジンを含み、前
記確立する手段が、前記第1処理エンジンと、前記第2
処理エンジン、前記第3処理エンジン、および前記第4
処理エンジンとの間で3つのパイプ・レジスタをマッピ
ングする手段を含む、上記(29)に記載のシステム。 (31)前記確立する手段が、前記レジスタ・パイプを
確立するために、前記第1処理エンジンの汎用レジスタ
および前記第2処理エンジンの汎用レジスタを動的にマ
ッピングする手段を含む、上記(21)に記載のシステ
ム。 (32)前記動的にマッピングする手段が、前記第1処
理エンジンおよび前記第2処理エンジンの前記汎用レジ
スタをそれぞれ前記レジスタ・パイプにマッピングする
ために、前記第1処理エンジンに関連する第1制御レジ
スタおよび前記第2処理エンジンに関連する第2制御レ
ジスタを使用する手段を含む、上記(31)に記載のシ
ステム。 (33)前記第1処理エンジンおよび前記第2処理エン
ジンが、マルチプロセッシング・エンジン環境の一部で
あり、前記システムがさらに、前記マルチプロセッシン
グ・エンジン環境の少なくともいくつかの処理エンジン
の間のバリヤ同期化を実施する手段を含む、上記(2
1)に記載のシステム。 (34)前記実施する手段が、前記マルチプロセッシン
グ・エンジン環境の少なくともいくつかの処理エンジン
のそれぞれで、前記エンジンにアドレッシングされるレ
ジスタ・パイプから読み取るために前記エンジンに対す
る命令を処理する手段を含み、前記少なくともいくつか
の処理エンジンの間の同期化が、前記少なくともいくつ
かのエンジンがそれにアドレッシングされたそのレジス
タ・パイプから読み取るために前記命令を実行する際に
確立される、上記(33)に記載のシステム。 (35)前記少なくともいくつかの処理エンジンの各処
理エンジンで、それにアドレッシングされるそれ自体の
レジスタ・パイプを確立する手段をさらに含む、上記
(34)に記載のシステム。 (36)前記マルチプロセッシング・エンジン環境が、
4つの処理エンジンおよび複数のレジスタ・パイプを含
み、各処理エンジンが、4つのレジスタ・パイプをアド
レッシングし、前記4つの処理エンジンが、前記第1処
理エンジン、前記第2処理エンジン、第3処理エンジ
ン、および第4処理エンジンを含み、各処理エンジンに
よってアドレス可能な前記4つのレジスタ・パイプが、
前記処理エンジンを前記4つの処理エンジンの他の処理
エンジンに結合する3つのレジスタ・パイプと、それ自
体にアドレッシングされる第4レジスタ・パイプとを含
む、上記(33)に記載のシステム。 (37)前記それ自体にアドレッシングされる第4レジ
スタ・パイプが、データを書き込むのに使用される時
に、前記データが、前記処理エンジンから前記マルチプ
ロセッシング・エンジン環境の前記他の処理エンジンに
ブロードキャストされる、上記(36)に記載のシステ
ム。 (38)前記確立する手段が、前記第1処理エンジンと
前記第2処理エンジンとの間で直接レジスタ・パイプを
確立する手段を含む、上記(21)に記載のシステム。 (39)前記確立する手段が、前記第1処理エンジンと
前記第2処理エンジンとを結合するスイッチ・ファブリ
ックを介する、前記第1処理エンジンと前記第2処理エ
ンジンとの間の間接レジスタ・パイプを確立する手段を
含む、上記(21)に記載のシステム。 (40)前記確立する手段が、前記第1処理エンジンと
前記第2処理エンジンとの間のレジスタ・パイプの使用
を識別する命令アーキテクチャを提供する手段を含み、
前記命令アーキテクチャが、前記レジスタ・パイプのア
ドレッシングに使用される汎用レジスタ命令内のオペラ
ンド・フィールドを含む、上記(21)に記載のシステ
ム。 (41)第1処理エンジンおよび第2処理エンジンを含
むマルチプロセッサ・コンピュータ・システムであっ
て、前記第1処理エンジンと前記第2処理エンジンとの
間のレジスタ・パイプであって、前記レジスタ・パイプ
が、前記第1処理エンジン内の少なくとも1つの第1レ
ジスタと、前記第2処理エンジン内の少なくとも1つの
第2レジスタとを含む、レジスタ・パイプを含み、前記
第1処理エンジンおよび前記第2処理エンジンが、前記
マルチプロセッサ・コンピュータ・システムのメモリを
介して前記データを渡さずに、前記レジスタ・パイプを
使用して、それらの間でデータを転送するように適合さ
れているマルチプロセッサ・コンピュータ・システム。 (42)第1処理エンジンと第2処理エンジンとの間で
データを転送する方法を実行するために計算機によって
実行可能な命令の少なくとも1つのプログラムを具体的
に実施する、計算機によって可読の少なくとも1つのプ
ログラム記憶装置であって、前記方法が、前記第1処理
エンジンと前記第2処理エンジンとの間でレジスタ・パ
イプを確立するステップと、前記第1処理エンジンと前
記第2処理エンジンとの間で前記レジスタ・パイプを使
用してデータを転送するステップであって、データが、
メモリを通過せずに前記第1処理エンジンと前記第2処
理エンジンとの間で転送される、ステップとを含む、少
なくとも1つのプログラム記憶装置。 (43)前記レジスタ・パイプが、前記第1処理エンジ
ン内の少なくとも1つの第1レジスタと、前記第2処理
エンジン内の少なくとも1つの第2レジスタとを含む、
上記(42)に記載の少なくとも1つのプログラム記憶
装置。 (44)前記レジスタ・パイプが、両方向であり、前記
少なくとも1つの第1レジスタが、第1インレット・レ
ジスタおよび第1アウトレット・レジスタを含み、前記
少なくとも1つの第2レジスタが、第2インレット・レ
ジスタおよび第2アウトレット・レジスタを含む、上記
(43)に記載の少なくとも1つのプログラム記憶装
置。 (45)前記第1インレット・レジスタ、前記第1アウ
トレット・レジスタ、前記第2インレット・レジスタ、
および前記第2アウトレット・レジスタが、汎用レジス
タを含む、上記(44)に記載の少なくとも1つのプロ
グラム記憶装置。 (46)前記確立するステップが、前記第1処理エンジ
ンと前記第2処理エンジンとを結合する前記レジスタ・
パイプとして、前記汎用レジスタをマッピングするステ
ップを含む、上記(45)に記載の少なくとも1つのプ
ログラム記憶装置。 (47)前記レジスタ・パイプが、前記第1処理エンジ
ンから前記第2処理エンジンへデータを転送するための
第1パイプ・セクションと、前記第2処理エンジンから
前記第1処理エンジンへデータを転送するための第2パ
イプ・セクションとを含み、前記第1パイプ・セクショ
ンが、前記第1アウトレット・レジスタおよび前記第2
インレット・レジスタを含む第1先入れ先出し(FIF
O)バッファを含み、前記第2パイプ・セクションが、
前記第1インレット・レジスタおよび前記第2アウトレ
ット・レジスタを含む第2FIFOバッファを含む、上
記(44)に記載の少なくとも1つのプログラム記憶装
置。 (48)前記転送するステップが、前記第2処理エンジ
ンに転送するために前記第1アウトレット・レジスタに
データを書き込むことによって前記第1パイプ・セクシ
ョンを充たすステップと、前記第1FIFOバッファが
満杯である時に必ず前記第2インレット・レジスタを介
して前記第1FIFOバッファからデータを読み取るこ
とによって前記第1パイプ・セクションを空にするステ
ップとを含む、上記(47)に記載の少なくとも1つの
プログラム記憶装置。 (49)前記転送するステップが、前記第1処理エンジ
ンに転送するために前記第2アウトレット・レジスタに
データを書き込むことによって前記第2パイプ・セクシ
ョンを充たすステップと、前記第2FIFOバッファが
満杯である時に必ず前記第1インレット・レジスタを介
して前記第2FIFOバッファからデータを読み取るこ
とによって前記第2パイプ・セクションを空にするステ
ップとを含む、上記(47)に記載の少なくとも1つの
プログラム記憶装置。 (50)前記第1処理エンジンおよび前記第2処理エン
ジンが、マルチプロセッシング・エンジン環境の一部で
あり、前記確立するステップが、前記マルチプロセッシ
ング・エンジン環境内の処理エンジンの少なくともいく
つかの対の処理エンジンの各対の間で異なるレジスタ・
パイプをマッピングするステップを含む、上記(42)
に記載の少なくとも1つのプログラム記憶装置。 (51)前記マルチプロセッシング処理エンジン環境
が、4つの処理エンジンを含み、前記4つの処理エンジ
ンが、前記第1処理エンジン、前記第2処理エンジン、
第3処理エンジン、および第4処理エンジンを含み、前
記確立するステップが、前記第1処理エンジンと、前記
第2処理エンジン、前記第3処理エンジン、および前記
第4処理エンジンとの間で3つのパイプ・レジスタをマ
ッピングするステップを含む、上記(50)に記載の少
なくとも1つのプログラム記憶装置。 (52)前記確立するステップが、前記レジスタ・パイ
プを確立するために、前記第1処理エンジンの汎用レジ
スタおよび前記第2処理エンジンの汎用レジスタを動的
にマッピングするステップを含む、上記(42)に記載
の少なくとも1つのプログラム記憶装置。 (53)前記動的にマッピングするステップが、前記第
1処理エンジンおよび前記第2処理エンジンの前記汎用
レジスタをそれぞれ前記レジスタ・パイプにマッピング
するために、前記第1処理エンジンに関連する第1制御
レジスタおよび前記第2処理エンジンに関連する第2制
御レジスタを使用するステップを含む、上記(52)に
記載の少なくとも1つのプログラム記憶装置。 (54)前記第1処理エンジンおよび前記第2処理エン
ジンが、マルチプロセッシング・エンジン環境の一部で
あり、前記方法がさらに、前記マルチプロセッシング・
エンジン環境の少なくともいくつかの処理エンジンの間
のバリヤ同期化を実施するステップを含む、上記(4
2)に記載の少なくとも1つのプログラム記憶装置。 (55)前記実施するステップが、前記マルチプロセッ
シング・エンジン環境の少なくともいくつかの処理エン
ジンのそれぞれで、前記エンジンにアドレッシングされ
るレジスタ・パイプから読み取るために前記エンジンに
対する命令を処理するステップを含み、前記少なくとも
いくつかの処理エンジンの間の同期化が、前記少なくと
もいくつかのエンジンのそれぞれのエンジンがそれにア
ドレッシングされたそのレジスタ・パイプから読み取る
ために前記命令を実行する際に確立される、上記(5
4)に記載の少なくとも1つのプログラム記憶装置。 (56)前記少なくともいくつかの処理エンジンの各処
理エンジンで、それにアドレッシングされるそれ自体の
レジスタ・パイプを確立するステップをさらに含む、上
記(55)に記載の少なくとも1つのプログラム記憶装
置。 (57)前記マルチプロセッシング・エンジン環境が、
4つの処理エンジンおよび複数のレジスタ・パイプを含
み、各処理エンジンが、4つのレジスタ・パイプをアド
レッシングし、前記4つの処理エンジンが、前記第1処
理エンジン、前記第2処理エンジン、第3処理エンジ
ン、および第4処理エンジンを含み、各処理エンジンに
よってアドレス可能な前記4つのレジスタ・パイプが、
前記処理エンジンを前記4つの処理エンジンの他の処理
エンジンに結合する3つのレジスタ・パイプと、それ自
体にアドレッシングされる第4レジスタ・パイプとを含
む、上記(54)に記載の少なくとも1つのプログラム
記憶装置。 (58)前記それ自体にアドレッシングされる第4レジ
スタ・パイプが、データを書き込むのに使用される時
に、前記データが、前記処理エンジンから前記マルチプ
ロセッシング・エンジン環境の前記他の処理エンジンに
ブロードキャストされる、上記(57)に記載の少なく
とも1つのプログラム記憶装置。 (59)前記確立するステップが、前記第1処理エンジ
ンと前記第2処理エンジンとの間で直接レジスタ・パイ
プを確立するステップを含む、上記(42)に記載の少
なくとも1つのプログラム記憶装置。 (60)前記確立するステップが、前記第1処理エンジ
ンと前記第2処理エンジンとを結合するスイッチ・ファ
ブリックを介する、前記第1処理エンジンと前記第2処
理エンジンとの間の間接レジスタ・パイプを確立するス
テップを含む、上記(42)に記載の少なくとも1つの
プログラム記憶装置。 (61)前記確立するステップが、前記第1処理エンジ
ンと前記第2処理エンジンとの間のレジスタ・パイプの
使用を識別する命令アーキテクチャを提供するステップ
を含み、前記命令アーキテクチャが、前記レジスタ・パ
イプのアドレッシングに使用される汎用レジスタ命令内
のオペランド・フィールドを含む、上記(42)に記載
の少なくとも1つのプログラム記憶装置。
【図面の簡単な説明】
【図1】本発明の原理による、単一プロセッサ・モード
および並列処理モードで動作することができるコンピュ
ータ・システムの1例を示す図である。
【図2】本発明の原理による、図1のコンピュータ・シ
ステムの一部の例を示す図である。
【図3】本発明の原理による、図1および図2に示され
たプロセッサの一部の例を示す図である。
【図4】本発明の原理による、図1および図2のプロセ
ッサの汎用レジスタのさまざまな動作状態を示す図であ
る。
【図5】本発明の原理による、図1および図2のプロセ
ッサの汎用レジスタのさまざまな動作状態を示す図であ
る。
【図6】本発明の原理による、図1のコンピュータ・シ
ステムのさまざまな動作状態を示す図である。
【図7】本発明の原理による、図1のコンピュータ・シ
ステムのうちで、バリヤ同期化の実施に使用される部分
の例を示す図である。
【図8】単一プロセッサ・モードと並列処理モードの間
で切り替えるために、図1のコンピュータ・システムに
よって使用される論理の例を示す図である。
【図9】単一プロセッサ・モードと並列処理モードの間
で切り替えるために、図1のコンピュータ・システムに
よって使用される論理の例を示す図である。
【図10】本発明の原理による、CPU処理エンジンが
複数の直接レジスタ・パイプによって相互リンクされ
る、マルチプロセッサ・コンピュータ・システムの例を
示す図である。
【図11】本発明の原理による、CPU処理エンジンが
共用接続ファブリックを介して確立されるレジスタ・パ
イプを使用して間接的にリンクされる、マルチプロセッ
サ・コンピュータ・システムのもう1つの例を示す図で
ある。
【図12】本発明の原理による、図10または図11の
1つのCPU処理エンジン内の、L1キャッシュ、汎用
レジスタ(GPR)、実行ユニット、パイプ・アウト・
レジスタ、およびパイプ・イン・レジスタの例を示す図
である。
【図13】本発明の原理による、図12のパイプ・アウ
ト・レジスタの1実施形態のより詳細な概略図である。
【図14】本発明の原理による、図12のパイプ・イン
・レジスタの1実施形態のより詳細な概略図である。
【符号の説明】
100 コンピュータ・システム 110 プロセッサ 120 L1キャッシュ 160 相互接続システム 210 汎用レジスタ(GPR) 220 実行ユニット 230 アドレス・ユニット 240 命令ユニット 242 命令レジスタ 244 命令カウンタ(IC) 250 データ・ブロードキャスト・レジスタ 260 命令ブロードキャスト・レジスタ
フロントページの続き (72)発明者 ジョーゼフ・エル・テンプル・サード アメリカ合衆国12443 ニューヨーク州ハ ーリー フック・ストリート312 ピー・ オー・ボックス507

Claims (61)

    【特許請求の範囲】
  1. 【請求項1】第1処理エンジンと第2処理エンジンとの
    間でデータを転送する方法であって、 前記第1処理エンジンと前記第2処理エンジンとの間で
    レジスタ・パイプを確立するステップと、 前記第1処理エンジンと前記第2処理エンジンとの間で
    前記レジスタ・パイプを使用してデータを転送するステ
    ップであって、データが、メモリを通過せずに前記第1
    処理エンジンと前記第2処理エンジンとの間で転送され
    る、ステップとを含む方法。
  2. 【請求項2】前記レジスタ・パイプが、前記第1処理エ
    ンジン内の少なくとも1つの第1レジスタと、前記第2
    処理エンジン内の少なくとも1つの第2レジスタとを含
    む、請求項1に記載の方法。
  3. 【請求項3】前記レジスタ・パイプが、両方向であり、
    前記少なくとも1つの第1レジスタが、第1インレット
    ・レジスタおよび第1アウトレット・レジスタを含み、
    前記少なくとも1つの第2レジスタが、第2インレット
    ・レジスタおよび第2アウトレット・レジスタを含む、
    請求項2に記載の方法。
  4. 【請求項4】前記第1インレット・レジスタ、前記第1
    アウトレット・レジスタ、前記第2インレット・レジス
    タ、および前記第2アウトレット・レジスタが、汎用レ
    ジスタを含む、請求項3に記載の方法。
  5. 【請求項5】前記確立するステップが、前記第1処理エ
    ンジンと前記第2処理エンジンとを結合する前記レジス
    タ・パイプとして、前記汎用レジスタをマッピングする
    ステップを含む、請求項4に記載の方法。
  6. 【請求項6】前記レジスタ・パイプが、前記第1処理エ
    ンジンから前記第2処理エンジンへデータを転送するた
    めの第1パイプ・セクションと、前記第2処理エンジン
    から前記第1処理エンジンへデータを転送するための第
    2パイプ・セクションとを含み、前記第1パイプ・セク
    ションが、前記第1アウトレット・レジスタおよび前記
    第2インレット・レジスタを含む第1先入れ先出し(F
    IFO)バッファを含み、前記第2パイプ・セクション
    が、前記第1インレット・レジスタおよび前記第2アウ
    トレット・レジスタを含む第2FIFOバッファを含
    む、請求項3に記載の方法。
  7. 【請求項7】前記転送するステップが、前記第2処理エ
    ンジンに転送するために前記第1アウトレット・レジス
    タにデータを書き込むことによって前記第1パイプ・セ
    クションを充たすステップと、前記第1FIFOバッフ
    ァが満杯である時に必ず前記第2インレット・レジスタ
    を介して前記第1FIFOバッファからデータを読み取
    ることによって前記第1パイプ・セクションを空にする
    ステップとを含む、請求項6に記載の方法。
  8. 【請求項8】前記転送するステップが、前記第1処理エ
    ンジンに転送するために前記第2アウトレット・レジス
    タにデータを書き込むことによって前記第2パイプ・セ
    クションを充たすステップと、前記第2FIFOバッフ
    ァが満杯である時に必ず前記第1インレット・レジスタ
    を介して前記第2FIFOバッファからデータを読み取
    ることによって前記第2パイプ・セクションを空にする
    ステップとを含む、請求項6に記載の方法。
  9. 【請求項9】前記第1処理エンジンおよび前記第2処理
    エンジンが、マルチプロセッシング・エンジン環境の一
    部であり、前記確立するステップが、前記マルチプロセ
    ッシング・エンジン環境内の処理エンジンの少なくとも
    いくつかの対の処理エンジンの各対の間で異なるレジス
    タ・パイプをマッピングするステップを含む、請求項1
    に記載の方法。
  10. 【請求項10】前記マルチプロセッシング処理エンジン
    環境が、4つの処理エンジンを含み、前記4つの処理エ
    ンジンが、前記第1処理エンジン、前記第2処理エンジ
    ン、第3処理エンジン、および第4処理エンジンを含
    み、前記確立するステップが、前記第1処理エンジン
    と、前記第2処理エンジン、前記第3処理エンジン、お
    よび前記第4処理エンジンとの間で3つのパイプ・レジ
    スタをマッピングするステップを含む、請求項9に記載
    の方法。
  11. 【請求項11】前記確立するステップが、前記レジスタ
    ・パイプを確立するために、前記第1処理エンジンの汎
    用レジスタおよび前記第2処理エンジンの汎用レジスタ
    を動的にマッピングするステップを含む、請求項1に記
    載の方法。
  12. 【請求項12】前記動的にマッピングするステップが、
    前記第1処理エンジンおよび前記第2処理エンジンの前
    記汎用レジスタをそれぞれ前記レジスタ・パイプにマッ
    ピングするために、前記第1処理エンジンに関連する第
    1制御レジスタおよび前記第2処理エンジンに関連する
    第2制御レジスタを使用するステップを含む、請求項1
    1に記載の方法。
  13. 【請求項13】前記第1処理エンジンおよび前記第2処
    理エンジンが、マルチプロセッシング・エンジン環境の
    一部であり、前記方法がさらに、前記マルチプロセッシ
    ング・エンジン環境の少なくともいくつかの処理エンジ
    ンの間のバリヤ同期化を実施するステップを含む、請求
    項1に記載の方法。
  14. 【請求項14】前記実施するステップが、前記マルチプ
    ロセッシング・エンジン環境の少なくともいくつかの処
    理エンジンのそれぞれで、前記エンジンにアドレッシン
    グされるレジスタ・パイプから読み取るために前記エン
    ジンに対する命令を処理するステップを含み、前記少な
    くともいくつかの処理エンジンの間の同期化が、前記少
    なくともいくつかのエンジンの各エンジンがそれにアド
    レッシングされたそのレジスタ・パイプから読み取るた
    めに前記命令を実行する際に確立される、請求項13に
    記載の方法。
  15. 【請求項15】前記少なくともいくつかの処理エンジン
    の各処理エンジンで、それにアドレッシングされるそれ
    自体のレジスタ・パイプを確立するステップをさらに含
    む、請求項14に記載の方法。
  16. 【請求項16】前記マルチプロセッシング・エンジン環
    境が、4つの処理エンジンおよび複数のレジスタ・パイ
    プを含み、各処理エンジンが、4つのレジスタ・パイプ
    をアドレッシングし、前記4つの処理エンジンが、前記
    第1処理エンジン、前記第2処理エンジン、第3処理エ
    ンジン、および第4処理エンジンを含み、各処理エンジ
    ンによってアドレス可能な前記4つのレジスタ・パイプ
    が、前記処理エンジンを前記4つの処理エンジンの他の
    処理エンジンに結合する3つのレジスタ・パイプと、そ
    れ自体にアドレッシングされる第4レジスタ・パイプと
    を含む、請求項13に記載の方法。
  17. 【請求項17】前記それ自体にアドレッシングされる第
    4レジスタ・パイプが、データを書き込むのに使用され
    る時に、前記データが、前記処理エンジンから前記マル
    チプロセッシング・エンジン環境の前記他の処理エンジ
    ンにブロードキャストされる、請求項16に記載の方
    法。
  18. 【請求項18】前記確立するステップが、前記第1処理
    エンジンと前記第2処理エンジンとの間で直接レジスタ
    ・パイプを確立するステップを含む、請求項1に記載の
    方法。
  19. 【請求項19】前記確立するステップが、前記第1処理
    エンジンと前記第2処理エンジンとを結合するスイッチ
    ・ファブリックを介する、前記第1処理エンジンと前記
    第2処理エンジンとの間の間接レジスタ・パイプを確立
    するステップを含む、請求項1に記載の方法。
  20. 【請求項20】前記確立するステップが、前記第1処理
    エンジンと前記第2処理エンジンとの間のレジスタ・パ
    イプの使用を識別する命令アーキテクチャを提供するス
    テップを含み、前記命令アーキテクチャが、前記レジス
    タ・パイプのアドレッシングに使用される汎用レジスタ
    命令内のオペランド・フィールドを含む、請求項1に記
    載の方法。
  21. 【請求項21】第1処理エンジンと第2処理エンジンと
    の間でデータを転送するシステムであって、 前記第1処理エンジンと前記第2処理エンジンとの間で
    レジスタ・パイプを確立する手段と、 前記第1処理エンジンと前記第2処理エンジンとの間で
    前記レジスタ・パイプを使用してデータを転送する手段
    であって、データが、メモリを通過せずに前記第1処理
    エンジンと前記第2処理エンジンとの間で転送される、
    データを転送する手段とを含むシステム。
  22. 【請求項22】前記レジスタ・パイプが、前記第1処理
    エンジン内の少なくとも1つの第1レジスタと、前記第
    2処理エンジン内の少なくとも1つの第2レジスタとを
    含む、請求項21に記載のシステム。
  23. 【請求項23】前記レジスタ・パイプが、両方向であ
    り、前記少なくとも1つの第1レジスタが、第1インレ
    ット・レジスタおよび第1アウトレット・レジスタを含
    み、前記少なくとも1つの第2レジスタが、第2インレ
    ット・レジスタおよび第2アウトレット・レジスタを含
    む、請求項22に記載のシステム。
  24. 【請求項24】前記第1インレット・レジスタ、前記第
    1アウトレット・レジスタ、前記第2インレット・レジ
    スタ、および前記第2アウトレット・レジスタが、汎用
    レジスタを含む、請求項23に記載のシステム。
  25. 【請求項25】前記確立する手段が、前記第1処理エン
    ジンと前記第2処理エンジンとを結合する前記レジスタ
    ・パイプとして、前記汎用レジスタをマッピングする手
    段を含む、請求項24に記載のシステム。
  26. 【請求項26】前記レジスタ・パイプが、前記第1処理
    エンジンから前記第2処理エンジンへデータを転送する
    ための第1パイプ・セクションと、前記第2処理エンジ
    ンから前記第1処理エンジンへデータを転送するための
    第2パイプ・セクションとを含み、前記第1パイプ・セ
    クションが、前記第1アウトレット・レジスタおよび前
    記第2インレット・レジスタを含む第1先入れ先出し
    (FIFO)バッファを含み、前記第2パイプ・セクシ
    ョンが、前記第1インレット・レジスタおよび前記第2
    アウトレット・レジスタを含む第2FIFOバッファを
    含む、請求項23に記載のシステム。
  27. 【請求項27】前記転送する手段が、前記第2処理エン
    ジンに転送するために前記第1アウトレット・レジスタ
    にデータを書き込むことによって前記第1パイプ・セク
    ションを充たす手段と、前記第1FIFOバッファが満
    杯である時に必ず前記第2インレット・レジスタを介し
    て前記第1FIFOバッファからデータを読み取ること
    によって前記第1パイプ・セクションを空にする手段と
    を含む、請求項26に記載のシステム。
  28. 【請求項28】前記転送する手段が、前記第1処理エン
    ジンに転送するために前記第2アウトレット・レジスタ
    にデータを書き込むことによって前記第2パイプ・セク
    ションを充たす手段と、前記第2FIFOバッファが満
    杯である時に必ず前記第1インレット・レジスタを介し
    て前記第2FIFOバッファからデータを読み取ること
    によって前記第2パイプ・セクションを空にする手段と
    を含む、請求項26に記載のシステム。
  29. 【請求項29】前記第1処理エンジンおよび前記第2処
    理エンジンが、マルチプロセッシング・エンジン環境の
    一部であり、前記確立する手段が、前記マルチプロセッ
    シング・エンジン環境内の処理エンジンの少なくともい
    くつかの対の処理エンジンの各対の間で異なるレジスタ
    ・パイプをマッピングする手段を含む、請求項21に記
    載のシステム。
  30. 【請求項30】前記マルチプロセッシング処理エンジン
    環境が、4つの処理エンジンを含み、前記4つの処理エ
    ンジンが、前記第1処理エンジン、前記第2処理エンジ
    ン、第3処理エンジン、および第4処理エンジンを含
    み、前記確立する手段が、前記第1処理エンジンと、前
    記第2処理エンジン、前記第3処理エンジン、および前
    記第4処理エンジンとの間で3つのパイプ・レジスタを
    マッピングする手段を含む、請求項29に記載のシステ
    ム。
  31. 【請求項31】前記確立する手段が、前記レジスタ・パ
    イプを確立するために、前記第1処理エンジンの汎用レ
    ジスタおよび前記第2処理エンジンの汎用レジスタを動
    的にマッピングする手段を含む、請求項21に記載のシ
    ステム。
  32. 【請求項32】前記動的にマッピングする手段が、前記
    第1処理エンジンおよび前記第2処理エンジンの前記汎
    用レジスタをそれぞれ前記レジスタ・パイプにマッピン
    グするために、前記第1処理エンジンに関連する第1制
    御レジスタおよび前記第2処理エンジンに関連する第2
    制御レジスタを使用する手段を含む、請求項31に記載
    のシステム。
  33. 【請求項33】前記第1処理エンジンおよび前記第2処
    理エンジンが、マルチプロセッシング・エンジン環境の
    一部であり、前記システムがさらに、前記マルチプロセ
    ッシング・エンジン環境の少なくともいくつかの処理エ
    ンジンの間のバリヤ同期化を実施する手段を含む、請求
    項21に記載のシステム。
  34. 【請求項34】前記実施する手段が、前記マルチプロセ
    ッシング・エンジン環境の少なくともいくつかの処理エ
    ンジンのそれぞれで、前記エンジンにアドレッシングさ
    れるレジスタ・パイプから読み取るために前記エンジン
    に対する命令を処理する手段を含み、前記少なくともい
    くつかの処理エンジンの間の同期化が、前記少なくとも
    いくつかのエンジンがそれにアドレッシングされたその
    レジスタ・パイプから読み取るために前記命令を実行す
    る際に確立される、請求項33に記載のシステム。
  35. 【請求項35】前記少なくともいくつかの処理エンジン
    の各処理エンジンで、それにアドレッシングされるそれ
    自体のレジスタ・パイプを確立する手段をさらに含む、
    請求項34に記載のシステム。
  36. 【請求項36】前記マルチプロセッシング・エンジン環
    境が、4つの処理エンジンおよび複数のレジスタ・パイ
    プを含み、各処理エンジンが、4つのレジスタ・パイプ
    をアドレッシングし、前記4つの処理エンジンが、前記
    第1処理エンジン、前記第2処理エンジン、第3処理エ
    ンジン、および第4処理エンジンを含み、各処理エンジ
    ンによってアドレス可能な前記4つのレジスタ・パイプ
    が、前記処理エンジンを前記4つの処理エンジンの他の
    処理エンジンに結合する3つのレジスタ・パイプと、そ
    れ自体にアドレッシングされる第4レジスタ・パイプと
    を含む、請求項33に記載のシステム。
  37. 【請求項37】前記それ自体にアドレッシングされる第
    4レジスタ・パイプが、データを書き込むのに使用され
    る時に、前記データが、前記処理エンジンから前記マル
    チプロセッシング・エンジン環境の前記他の処理エンジ
    ンにブロードキャストされる、請求項36に記載のシス
    テム。
  38. 【請求項38】前記確立する手段が、前記第1処理エン
    ジンと前記第2処理エンジンとの間で直接レジスタ・パ
    イプを確立する手段を含む、請求項21に記載のシステ
    ム。
  39. 【請求項39】前記確立する手段が、前記第1処理エン
    ジンと前記第2処理エンジンとを結合するスイッチ・フ
    ァブリックを介する、前記第1処理エンジンと前記第2
    処理エンジンとの間の間接レジスタ・パイプを確立する
    手段を含む、請求項21に記載のシステム。
  40. 【請求項40】前記確立する手段が、前記第1処理エン
    ジンと前記第2処理エンジンとの間のレジスタ・パイプ
    の使用を識別する命令アーキテクチャを提供する手段を
    含み、前記命令アーキテクチャが、前記レジスタ・パイ
    プのアドレッシングに使用される汎用レジスタ命令内の
    オペランド・フィールドを含む、請求項21に記載のシ
    ステム。
  41. 【請求項41】第1処理エンジンおよび第2処理エンジ
    ンを含むマルチプロセッサ・コンピュータ・システムで
    あって、 前記第1処理エンジンと前記第2処理エンジンとの間の
    レジスタ・パイプであって、前記レジスタ・パイプが、
    前記第1処理エンジン内の少なくとも1つの第1レジス
    タと、前記第2処理エンジン内の少なくとも1つの第2
    レジスタとを含む、レジスタ・パイプを含み、 前記第1処理エンジンおよび前記第2処理エンジンが、
    前記マルチプロセッサ・コンピュータ・システムのメモ
    リを介して前記データを渡さずに、前記レジスタ・パイ
    プを使用して、それらの間でデータを転送するように適
    合されているマルチプロセッサ・コンピュータ・システ
    ム。
  42. 【請求項42】第1処理エンジンと第2処理エンジンと
    の間でデータを転送する方法を実行するために計算機に
    よって実行可能な命令の少なくとも1つのプログラムを
    具体的に実施する、計算機によって可読の少なくとも1
    つのプログラム記憶装置であって、前記方法が、 前記第1処理エンジンと前記第2処理エンジンとの間で
    レジスタ・パイプを確立するステップと、 前記第1処理エンジンと前記第2処理エンジンとの間で
    前記レジスタ・パイプを使用してデータを転送するステ
    ップであって、データが、メモリを通過せずに前記第1
    処理エンジンと前記第2処理エンジンとの間で転送され
    る、ステップとを含む、少なくとも1つのプログラム記
    憶装置。
  43. 【請求項43】前記レジスタ・パイプが、前記第1処理
    エンジン内の少なくとも1つの第1レジスタと、前記第
    2処理エンジン内の少なくとも1つの第2レジスタとを
    含む、請求項42に記載の少なくとも1つのプログラム
    記憶装置。
  44. 【請求項44】前記レジスタ・パイプが、両方向であ
    り、前記少なくとも1つの第1レジスタが、第1インレ
    ット・レジスタおよび第1アウトレット・レジスタを含
    み、前記少なくとも1つの第2レジスタが、第2インレ
    ット・レジスタおよび第2アウトレット・レジスタを含
    む、請求項43に記載の少なくとも1つのプログラム記
    憶装置。
  45. 【請求項45】前記第1インレット・レジスタ、前記第
    1アウトレット・レジスタ、前記第2インレット・レジ
    スタ、および前記第2アウトレット・レジスタが、汎用
    レジスタを含む、請求項44に記載の少なくとも1つの
    プログラム記憶装置。
  46. 【請求項46】前記確立するステップが、前記第1処理
    エンジンと前記第2処理エンジンとを結合する前記レジ
    スタ・パイプとして、前記汎用レジスタをマッピングす
    るステップを含む、請求項45に記載の少なくとも1つ
    のプログラム記憶装置。
  47. 【請求項47】前記レジスタ・パイプが、前記第1処理
    エンジンから前記第2処理エンジンへデータを転送する
    ための第1パイプ・セクションと、前記第2処理エンジ
    ンから前記第1処理エンジンへデータを転送するための
    第2パイプ・セクションとを含み、前記第1パイプ・セ
    クションが、前記第1アウトレット・レジスタおよび前
    記第2インレット・レジスタを含む第1先入れ先出し
    (FIFO)バッファを含み、前記第2パイプ・セクシ
    ョンが、前記第1インレット・レジスタおよび前記第2
    アウトレット・レジスタを含む第2FIFOバッファを
    含む、請求項44に記載の少なくとも1つのプログラム
    記憶装置。
  48. 【請求項48】前記転送するステップが、前記第2処理
    エンジンに転送するために前記第1アウトレット・レジ
    スタにデータを書き込むことによって前記第1パイプ・
    セクションを充たすステップと、前記第1FIFOバッ
    ファが満杯である時に必ず前記第2インレット・レジス
    タを介して前記第1FIFOバッファからデータを読み
    取ることによって前記第1パイプ・セクションを空にす
    るステップとを含む、請求項47に記載の少なくとも1
    つのプログラム記憶装置。
  49. 【請求項49】前記転送するステップが、前記第1処理
    エンジンに転送するために前記第2アウトレット・レジ
    スタにデータを書き込むことによって前記第2パイプ・
    セクションを充たすステップと、前記第2FIFOバッ
    ファが満杯である時に必ず前記第1インレット・レジス
    タを介して前記第2FIFOバッファからデータを読み
    取ることによって前記第2パイプ・セクションを空にす
    るステップとを含む、請求項47に記載の少なくとも1
    つのプログラム記憶装置。
  50. 【請求項50】前記第1処理エンジンおよび前記第2処
    理エンジンが、マルチプロセッシング・エンジン環境の
    一部であり、前記確立するステップが、前記マルチプロ
    セッシング・エンジン環境内の処理エンジンの少なくと
    もいくつかの対の処理エンジンの各対の間で異なるレジ
    スタ・パイプをマッピングするステップを含む、請求項
    42に記載の少なくとも1つのプログラム記憶装置。
  51. 【請求項51】前記マルチプロセッシング処理エンジン
    環境が、4つの処理エンジンを含み、前記4つの処理エ
    ンジンが、前記第1処理エンジン、前記第2処理エンジ
    ン、第3処理エンジン、および第4処理エンジンを含
    み、前記確立するステップが、前記第1処理エンジン
    と、前記第2処理エンジン、前記第3処理エンジン、お
    よび前記第4処理エンジンとの間で3つのパイプ・レジ
    スタをマッピングするステップを含む、請求項50に記
    載の少なくとも1つのプログラム記憶装置。
  52. 【請求項52】前記確立するステップが、前記レジスタ
    ・パイプを確立するために、前記第1処理エンジンの汎
    用レジスタおよび前記第2処理エンジンの汎用レジスタ
    を動的にマッピングするステップを含む、請求項42に
    記載の少なくとも1つのプログラム記憶装置。
  53. 【請求項53】前記動的にマッピングするステップが、
    前記第1処理エンジンおよび前記第2処理エンジンの前
    記汎用レジスタをそれぞれ前記レジスタ・パイプにマッ
    ピングするために、前記第1処理エンジンに関連する第
    1制御レジスタおよび前記第2処理エンジンに関連する
    第2制御レジスタを使用するステップを含む、請求項5
    2に記載の少なくとも1つのプログラム記憶装置。
  54. 【請求項54】前記第1処理エンジンおよび前記第2処
    理エンジンが、マルチプロセッシング・エンジン環境の
    一部であり、前記方法がさらに、前記マルチプロセッシ
    ング・エンジン環境の少なくともいくつかの処理エンジ
    ンの間のバリヤ同期化を実施するステップを含む、請求
    項42に記載の少なくとも1つのプログラム記憶装置。
  55. 【請求項55】前記実施するステップが、前記マルチプ
    ロセッシング・エンジン環境の少なくともいくつかの処
    理エンジンのそれぞれで、前記エンジンにアドレッシン
    グされるレジスタ・パイプから読み取るために前記エン
    ジンに対する命令を処理するステップを含み、前記少な
    くともいくつかの処理エンジンの間の同期化が、前記少
    なくともいくつかのエンジンのそれぞれのエンジンがそ
    れにアドレッシングされたそのレジスタ・パイプから読
    み取るために前記命令を実行する際に確立される、請求
    項54に記載の少なくとも1つのプログラム記憶装置。
  56. 【請求項56】前記少なくともいくつかの処理エンジン
    の各処理エンジンで、それにアドレッシングされるそれ
    自体のレジスタ・パイプを確立するステップをさらに含
    む、請求項55に記載の少なくとも1つのプログラム記
    憶装置。
  57. 【請求項57】前記マルチプロセッシング・エンジン環
    境が、4つの処理エンジンおよび複数のレジスタ・パイ
    プを含み、各処理エンジンが、4つのレジスタ・パイプ
    をアドレッシングし、前記4つの処理エンジンが、前記
    第1処理エンジン、前記第2処理エンジン、第3処理エ
    ンジン、および第4処理エンジンを含み、各処理エンジ
    ンによってアドレス可能な前記4つのレジスタ・パイプ
    が、前記処理エンジンを前記4つの処理エンジンの他の
    処理エンジンに結合する3つのレジスタ・パイプと、そ
    れ自体にアドレッシングされる第4レジスタ・パイプと
    を含む、請求項54に記載の少なくとも1つのプログラ
    ム記憶装置。
  58. 【請求項58】前記それ自体にアドレッシングされる第
    4レジスタ・パイプが、データを書き込むのに使用され
    る時に、前記データが、前記処理エンジンから前記マル
    チプロセッシング・エンジン環境の前記他の処理エンジ
    ンにブロードキャストされる、請求項57に記載の少な
    くとも1つのプログラム記憶装置。
  59. 【請求項59】前記確立するステップが、前記第1処理
    エンジンと前記第2処理エンジンとの間で直接レジスタ
    ・パイプを確立するステップを含む、請求項42に記載
    の少なくとも1つのプログラム記憶装置。
  60. 【請求項60】前記確立するステップが、前記第1処理
    エンジンと前記第2処理エンジンとを結合するスイッチ
    ・ファブリックを介する、前記第1処理エンジンと前記
    第2処理エンジンとの間の間接レジスタ・パイプを確立
    するステップを含む、請求項42に記載の少なくとも1
    つのプログラム記憶装置。
  61. 【請求項61】前記確立するステップが、前記第1処理
    エンジンと前記第2処理エンジンとの間のレジスタ・パ
    イプの使用を識別する命令アーキテクチャを提供するス
    テップを含み、前記命令アーキテクチャが、前記レジス
    タ・パイプのアドレッシングに使用される汎用レジスタ
    命令内のオペランド・フィールドを含む、請求項42に
    記載の少なくとも1つのプログラム記憶装置。
JP2001044708A 2000-02-28 2001-02-21 マルチプロセッシング・エンジン環境用のレジスタ・パイプ Pending JP2001273273A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/514,435 US6643763B1 (en) 2000-02-28 2000-02-28 Register pipe for multi-processing engine environment
US09/514435 2000-02-28

Publications (1)

Publication Number Publication Date
JP2001273273A true JP2001273273A (ja) 2001-10-05

Family

ID=24047113

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001044708A Pending JP2001273273A (ja) 2000-02-28 2001-02-21 マルチプロセッシング・エンジン環境用のレジスタ・パイプ

Country Status (2)

Country Link
US (1) US6643763B1 (ja)
JP (1) JP2001273273A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008165756A (ja) * 2006-12-01 2008-07-17 Thomson Licensing ローカル・レジスタを有する処理要素のアレイ
US8670653B2 (en) 2005-04-15 2014-03-11 Sony Corporation Encoding apparatus and method, and decoding apparatus and method
JP2014146335A (ja) * 2013-01-28 2014-08-14 Samsung Electronics Co Ltd マルチモード支援プロセッサ及びマルチモードを支援する処理方法
JP2022545222A (ja) * 2019-12-23 2022-10-26 グラフコアー リミテッド 複数のプロセッサを有するコンピュータにおける通信

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065672B2 (en) * 2001-03-28 2006-06-20 Stratus Technologies Bermuda Ltd. Apparatus and methods for fault-tolerant computing using a switching fabric
US7240347B1 (en) * 2001-10-02 2007-07-03 Juniper Networks, Inc. Systems and methods for preserving the order of data
US7100021B1 (en) * 2001-10-16 2006-08-29 Cisco Technology, Inc. Barrier synchronization mechanism for processors of a systolic array
TW200506733A (en) * 2003-08-15 2005-02-16 Via Tech Inc Apparatus and method for the co-simulation of CPU and DUT modules
DE102004009497B3 (de) * 2004-02-27 2005-06-30 Infineon Technologies Ag Chipintegriertes Mehrprozessorsystem und Verfahren zur Kommunikation zwischen mehreren Prozessoren eines chipintegrierten Mehrprozessorsystems
US7539851B2 (en) * 2006-05-18 2009-05-26 Sun Microsystems, Inc. Using register readiness to facilitate value prediction
US8006069B2 (en) * 2006-10-05 2011-08-23 Synopsys, Inc. Inter-processor communication method
EP1927950A1 (en) * 2006-12-01 2008-06-04 Thomson Licensing Array of processing elements with local registers
US8347312B2 (en) * 2007-07-06 2013-01-01 Xmos Limited Thread communications
US7809925B2 (en) * 2007-12-07 2010-10-05 International Business Machines Corporation Processing unit incorporating vectorizable execution unit
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8880473B1 (en) * 2008-12-15 2014-11-04 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8489819B2 (en) * 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8131935B2 (en) * 2009-04-07 2012-03-06 International Business Machines Corporation Virtual barrier synchronization cache
US8095733B2 (en) * 2009-04-07 2012-01-10 International Business Machines Corporation Virtual barrier synchronization cache castout election
US8285939B2 (en) * 2009-04-08 2012-10-09 International Business Machines Corporation Lateral castout target selection
US8347036B2 (en) 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
JP5549574B2 (ja) * 2010-12-17 2014-07-16 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
US10055228B2 (en) * 2013-08-19 2018-08-21 Shanghai Xinhao Microelectronics Co. Ltd. High performance processor system and method based on general purpose units
JP6307975B2 (ja) * 2014-03-28 2018-04-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11294672B2 (en) 2019-08-22 2022-04-05 Apple Inc. Routing circuitry for permutation of single-instruction multiple-data operands
US11126439B2 (en) * 2019-11-15 2021-09-21 Apple Inc. SIMD operand permutation with selection from among multiple registers

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901230A (en) 1983-04-25 1990-02-13 Cray Research, Inc. Computer vector multiprocessing control with multiple access memory and priority conflict resolution method
US4891787A (en) 1986-12-17 1990-01-02 Massachusetts Institute Of Technology Parallel processing system with processor array having SIMD/MIMD instruction processing
US4916652A (en) 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US5212778A (en) * 1988-05-27 1993-05-18 Massachusetts Institute Of Technology Message-driven processor in a concurrent computer
US5526487A (en) 1989-02-09 1996-06-11 Cray Research, Inc. System for multiprocessor communication
US5212777A (en) 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5524255A (en) 1989-12-29 1996-06-04 Cray Research, Inc. Method and apparatus for accessing global registers in a multiprocessor system
WO1991017507A1 (en) 1990-05-07 1991-11-14 Mitsubishi Denki Kabushiki Kaisha Parallel data processing system
JP2743608B2 (ja) 1991-03-27 1998-04-22 日本電気株式会社 共有レジスタ制御方式
CA2073516A1 (en) 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
JP2642039B2 (ja) 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
US5889947A (en) 1996-12-16 1999-03-30 International Business Machines Corporation Apparatus and method for executing instructions that select a storage location for output values in response to an operation count
US5778221A (en) 1997-03-17 1998-07-07 International Business Machines Corporation System for executing asynchronous branch and link in parallel processor
US5875342A (en) 1997-06-03 1999-02-23 International Business Machines Corporation User programmable interrupt mask with timeout
US5937199A (en) 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
US6345301B1 (en) * 1999-03-30 2002-02-05 Unisys Corporation Split data path distributed network protocol

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8670653B2 (en) 2005-04-15 2014-03-11 Sony Corporation Encoding apparatus and method, and decoding apparatus and method
JP2008165756A (ja) * 2006-12-01 2008-07-17 Thomson Licensing ローカル・レジスタを有する処理要素のアレイ
JP2014146335A (ja) * 2013-01-28 2014-08-14 Samsung Electronics Co Ltd マルチモード支援プロセッサ及びマルチモードを支援する処理方法
JP2022545222A (ja) * 2019-12-23 2022-10-26 グラフコアー リミテッド 複数のプロセッサを有するコンピュータにおける通信
JP7357767B2 (ja) 2019-12-23 2023-10-06 グラフコアー リミテッド 複数のプロセッサを有するコンピュータにおける通信

Also Published As

Publication number Publication date
US6643763B1 (en) 2003-11-04

Similar Documents

Publication Publication Date Title
JP2001273273A (ja) マルチプロセッシング・エンジン環境用のレジスタ・パイプ
US6718457B2 (en) Multiple-thread processor for threaded software applications
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
US5499349A (en) Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
US6279100B1 (en) Local stall control method and structure in a microprocessor
US7254695B2 (en) Coprocessor processing instructions in turn from multiple instruction ports coupled to respective processors
US7543119B2 (en) Vector processor
US8082426B2 (en) Support of a plurality of graphic processing units
JP3771957B2 (ja) プロセッサ・アーキテクチャにおける分散制御のための装置および方法
EP2289003B1 (en) Method & apparatus for real-time data processing
TW202115575A (zh) 靜止可重組態的資料處理器
US8892824B2 (en) Store-operate-coherence-on-value
US20100110089A1 (en) Multiple GPU Context Synchronization Using Barrier Type Primitives
JPH11154144A (ja) プロセッサをコプロセッサにインタフェースするための方法および装置
US20040181652A1 (en) Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US20050138328A1 (en) Across-thread out of order instruction dispatch in a multithreaded graphics processor
EP2671150B1 (en) Processor with a coprocessor having early access to not-yet issued instructions
WO2012068494A2 (en) Context switch method and apparatus
JPH11312122A (ja) 使用者が構築可能なオンチッププログラムメモリシステム
KR20020087928A (ko) 긴밀하게 연결된 다중 프로세서들을 위한 고속 다중 스레딩
WO2000033183A9 (en) Method and structure for local stall control in a microprocessor
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
US6766437B1 (en) Composite uniprocessor
JP2001142699A (ja) パイプラインプロセッサにおける命令データの転送メカニズム
Leibson et al. Configurable processors: a new era in chip design

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050422

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050427

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050725

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060404