JP4024271B2 - マルチプロセッサシステムにおいて命令を処理するための方法と装置 - Google Patents

マルチプロセッサシステムにおいて命令を処理するための方法と装置 Download PDF

Info

Publication number
JP4024271B2
JP4024271B2 JP2006029779A JP2006029779A JP4024271B2 JP 4024271 B2 JP4024271 B2 JP 4024271B2 JP 2006029779 A JP2006029779 A JP 2006029779A JP 2006029779 A JP2006029779 A JP 2006029779A JP 4024271 B2 JP4024271 B2 JP 4024271B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
memory
operands
buffers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006029779A
Other languages
English (en)
Other versions
JP2006221644A (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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment 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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2006221644A publication Critical patent/JP2006221644A/ja
Application granted granted Critical
Publication of JP4024271B2 publication Critical patent/JP4024271B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

本発明は、マルチプロセシングシステムにおいて命令を処理するための方法と装置に関する。
近年、マルチメディアのアプリケーションは、ますます重要になっている。これらのアプリケーションは、極めて速い処理速度(たとえば1秒につき何千メガビットものデータ)を必要とする。速い処理速度を達成するためにシングルプロセッサを用いる演算処理システムがある一方、マルチ・プロセッサ・アーキテクチャを利用して実行するものもある。マルチ・プロセッサ・システムにおいて、複数のサブプロセッサは、所望の処理結果を達成するために、並行して(または、少なくとも協力して)動作することができる。
最先端のコンピュータ・アプリケーションはますます複雑になり、ますます増大する要求を演算処理システムに課すため、近年、より高速なコンピュータ処理のデータスループットを大きく高めることが求められている。グラフィックス・アプリケーションは、所望の視覚的効果を達成するために、比較的短い期間で膨大な数のデータ・アクセス、データ演算、およびデータ操作を必要とするため、演算処理システムに最も高い要求が与えられるものの一つである。
このように、マイクロプロセッサの設計において、命令スループット(すなわち1秒につき実行される命令の数)は、重要である。1秒につき実行される命令の数は、さまざまな手段によって増加し得る。たとえば、命令スループットを増加させることは、マイクロプロセッサが動作する周波数を増加させることによって達成することができる。しかし、動作周波数を高くすることは製造技術によって制限されており、また更に熱を発生させる結果となる。このように、いくつかののマイクロプロセッサ設計は、クロックサイクル期間につき実行される命令の平均数を増加させる設計技術を用いて、命令スループットを増加させることに焦点を合わせている。命令スループットを増加させるためのこのような技術の一つがパイプラインである。パイプラインは、各命令がいくつかの部分に分割されマイクロプロセッサを流れ、各部分がパイプラインの個々のステージで処理されるようにする。パイプラインは、実行における多数の命令をオーバーラップさせることによってマイクロプロセッサの速度を上げる。たとえば、各命令が6つのステージで実行され、各々のステージがその機能の実行に1クロックサイクルを要している場合、6つの命令は、1つの命令が各クロックサイクルで完了するよう、同時に実行され得る(各々がパイプラインの別々のステージにおいて実行される)。このシナリオでは、パイプライン化されたアーキテクチャは、6クロックサイクル毎に1つの命令を完了するパイプライン化されていないアーキテクチャの、6倍の命令スループットを有することになる。
マイクロプロセッサの速度を上げる第2の技術は、プロセッサをスーパースカラとして設計することである。スーパースカラー・アーキテクチャにおいて、複数の命令は、クロックサイクル毎に発行される。命令がフローにおいて他の命令に依存しない場合、命令スループットの増加はスケーラビリティの多重度と比例する。このように、アーキテクチャが多重度2の場合(多重度2とは、各々のクロックサイクル毎に2の命令が発行されることを意味する。)、装置の命令スループットは2倍になる。
マイクロプロセッサは、高い命令スループットを達成するため、スーパーパイプライン化(多くのステージを有する命令パイプライン)されていてもよく、スーパースカラであってもよい。しかし実際には、命令は相互依存することなく、所定の数のパイプラインステージにおいて実行されることはあまりない。むしろ命令は、命令パイプラインを流れるフローにおいて割り込みを発生する様々なリソース要求を持っている。更に、命令には概して相互依存性がある。たとえば、レジスタの値を読み込む命令は、その値を同じレジスタに書き込む1つ前の命令に依存していてもよい。このシナリオでは、第1の命令がレジスタへの書き込みが完了するまでは、第2の命令を実行することができないこととなる。
したがって、スーパーパイプライン化およびスーパースカラ技術は、マイクロプロセッサのスループットを増加させることができるが、命令スループットは、スーパーパイプライン化、またはスーパースカラー・アーキテクチャのインプリメンテーションに高く依存する。依存性その他の要因が、マイクロプロセッサの動作中にさまざまなステージを不活発にさせるため、スーパーパイプライン化されたシステムまたはスーパースカラ処理システムの効率が減少する。
従来の処理パイプラインは、命令フェッチステージ、命令デコードステージ、依存性チェックステージ、命令発行ステージおよび実行ステージを含む。周知のペンティアム・プロセッサ(ペンティアムは登録商標)では、命令バッファは、命令フェッチステージの後、命令をキューイングするために使用される。命令バッファは、複数の命令(比較的多数の命令)をキューイングするように設計されており、そこで命令は、デコード、依存性チェック、発行、および実行のいずれかのために、バッファから取り出される。この方法は広く用いられ広範な支持を達成している一方、2つの要因が、得ることができる処理能力のレベルに影響を与える。第1に、比較的大きなサイズの命令バッファを用いると、かなりの数の、可能性のある命令依存性をテストしなければならなくなる。第2に、キャッシュミスまたは分岐命令が発生する場合、命令バッファの全コンテンツが破棄され一掃されなければならない。このように、ある条件下では、従来の命令バッファ方法は望ましくない。
本発明は、従来の処理アーキテクチャに起因して処理能力が失われてしまう不利益を最小化する、処理パイプラインの改良された実装技術を提供する。
まず、本発明は、2つまたは3つの命令をキューイングするために比較的小さい命令バッファを用いる。同時にデコードし、および依存性チェックをするため、これらの命令は一度に2つ(または3つ)バッファから取り出される。特に、これによって比較的少ない数の、可能性のある命令依存性をテストするだけでよくなることにつながる。第2に、本発明は、メインプロセッサおよび共通のシステムメモリを共有している複数のサブプロセッサを有するマルチプロセッサシステムを用いる。各々のサブプロセッサは、命令を実行するためのキャッシュされることのないローカルメモリを備えていることが好ましい。一方、メインプロセッサはL2キャッシュメモリを用いる。サブプロセッサはキャッシュメモリを用いず、また、ローカルメモリはシステムメモリと比較して比較的小さいため、プログラム実行中のシステムメモリとローカルメモリとの間においてメモリの転送を最小化するために、プログラマに負担がかかる。たとえば分岐ヒント技術の使用など、システムメモリの範囲内において注意深くデータを組織化するなどの工夫が必要となる。命令バッファの実装、マルチプロセッサシステムの実装、およびプログラム技術の組合せは、従来技術と比較して高い処理能力につながる。
以下に記載する一つ以上の態様におけるある装置は、ローカルメモリと、ローカルメモリに結合された約3つのレジスタより大きくない命令バッファを含む命令パイプラインと、パイプラインにおける命令間の依存性をテストすることができる命令依存性チェック回路と、を各々のプロセッサに含む、共有メモリと機能的に通信が可能な複数の並列プロセッサを備える。各々のプロセッサは、ローカルメモリ内で一つ以上のプログラムを実行するため、共有メモリおよびそのローカルメモリの間でデータのブロックを転送することができてもよい。
各々のプロセッサの命令バッファおよび依存性チェック回路は、プロセッサ内でデータキャッシングに依存しないように一つ以上プログラムがコードされるときに、実質的に最大限の効率を持って命令が処理できるよう適合されてもよい。一つ以上の別の実施例において、命令バッファのサイズを定めるレジスタの数は、プロセッサ内でデータキャッシングに依存しないようにコードされた、前記一つ以上のプログラムの関数として最小化されてもよい。
約2つまたは約3つのレジスタより命令バッファは大きくなく、全ての命令がグループとして命令バッファのレジスタから出力されることが好ましい。
また、命令パイプラインは、命令バッファに結合する命令デコード回路を含むことができ、命令デコード回路は、命令バッファのレジスタの数と同等の数の命令を同時にデコードすることができる。
命令依存性チェック回路は、命令パイプラインの命令の依存性を並行してチェックすることができることが好ましい。
各々のプロセッサは、ダイレクト・メモリ・アクセスを使用して、共有メモリとそのローカルメモリの間でデータのブロックを転送することができることが好ましい。各々のプロセッサは、そのローカルメモリ内で一つ以上プログラムを実行することができる一方、共有メモリ内で一つ以上プログラムを実行することができない。
プロセッサおよび関連するローカルメモリは、共通の半導体回路基板に配置されることが好ましい。共有メモリは、バスを介してプロセッサに結合することが好ましい。一つ以上の実施例において、プロセッサ、関連するローカルメモリ、および共有メモリは、共通の半導体回路基板に配置される。
また、一つ以上の別の実施例におけるある装置は、プロセッサに機能的に結合し、共有メモリに結合するメインプロセッサと、メインプロセッサと関連し、共有メモリ、およびプロセッサの複数のローカルメモリの少なくとも1つから取得されたデータをキャッシュするハードウェアキャッシュメモリと、を備えていてもよく、メインプロセッサは、プロセッサを管理することができてもよい。
また、以下に記載する一つ以上の更なる態様におけるある方法は、共有メモリと、各々がローカルメモリを含む複数の並列プロセッサとの間において、一つ以上のデータのブロックを転送するステップと、プロセッサ内でデータキャッシングに依存しないように、一つ以上プログラムがコードされる、一つ以上のプロセッサのローカルメモリ内で、その一つ以上のプログラムを実行するステップと、プロセッサの命令バッファのローカルメモリから約3つより多くないの命令をバッファに保留するステップと、を備える。各々のプロセッサの命令バッファは、プロセッサ内でデータキャッシングに依存しないように前記一つ以上プログラムがコードされるときに、実質的に最大限の効率を持って命令が処理できるよう適合されてもよい。
方法は、代わりに、またはさらに、共有メモリと、各々がローカルメモリを含む一つ以上の複数の並列プロセッサとの間でデータのブロックを転送するステップと、共有メモリと、データのブロックを格納するためハードウェアキャッシュメモリに結合する少なくとも一つのメインプロセッサとの間でデータのブロックを転送するステップと、プロセッサ内でデータキャッシングに依存しないようにコードされる、一つ以上のプログラムを、一つ以上のプロセッサのローカルメモリ内で実行するステップと、プロセッサの命令バッファのローカルメモリから約3つより多くない命令をバッファに保留するステップと、を備えてもよい。
添付の図面とともに本明細書に記載される発明が理解されるとき、他の態様、特徴、効果などは当業者にとって明らかになる。
さまざまな本発明の態様を例示することのために、現在好ましい図面形式に示す。しかし、本発明が表された好適な設備や装置に限定されないことは当業者に理解されるところである。
同一構成要素には同一符号を付した図面において、本発明の一つ以上の態様を実施するに適するマルチプロセシングシステム(演算処理システムまたは装置ともいう)100を図1に示す。簡潔性および明確性のため、図1のブロック図は、マルチプロセシングシステム100としてここに記載され、参照される。しかし、この記載は、同等の方法のさまざまな態様に適用されることができることは理解されるところである。
マルチプロセシングシステム100は、複数のプロセッサ102A−Dを含む。また、関連するローカルメモリ104A−Dおよび共有メモリ106がバス108を経由して相互接続する。また、共有メモリは、本願明細書においてメインメモリまたはシステムメモリと解されてもよい。4つのプロセッサ102が例として図示されるが、本発明の趣旨および範囲から逸脱することなく、いくつ使用されてもよい。プロセッサ102の各々は、類似した構造を有していてもよく、異なる構造を有していてもよい。プロセッサ102は、システムメモリ106からデータを要求し、所望の結果を達成するためにデータを操作することが可能ないずれかの周知技術を利用して実装されてもよい。たとえば、プロセッサ102は、標準のマイクロプロセッサ、分散型マイクロプロセッサなど、ソフトウェアおよび/またはファームウェアを実行することができる周知のマイクロプロセッサのいずれかを使用して実装されてもよい。たとえば、一つ以上のプロセッサ102は、グレイスケール情報、カラー情報、テクスチャ・データ、多角形情報、ビデオフレーム情報などを含むデータ(たとえば画素データ)を要求し、操作することができる図形プロセッサであってもよい。
各ローカルメモリ104は、それぞれのプロセッサ102と同様に、好ましくは同一のチップ(同一の半導体回路基板)に配置される。しかし、ローカルメモリ104は従来のハードウェアキャッシュメモリではなく、ローカルメモリ内には、ハードウェアキャッシュメモリ機能を実現するための、オンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないことが好ましい。チップ上のスペースはしばしば制限されるため、ローカルメモリ104のサイズはシステムメモリ106より非常に小さくてもよい。
プロセッサ102は、プログラム実行およびデータ処理のためのローカルメモリ104のそれぞれに、バス108を介してシステムメモリ106からデータ(プログラムデータを含んでもよい)をコピーするデータ・アクセス要求を提供することが好ましい。データ・アクセスを容易にするプロセスは、ダイレクト・メモリ・アクセス(DMA)技術など、いずれかの周知技術を利用して行うことができる。システムメモリ106は、高バンド幅メモリ接続(図示せず)を介してプロセッサ102に結合するダイナミック・ランダム・アクセス・メモリ(DRAM)であることが好ましい。システムメモリ106はDRAMであるが、システムメモリ106は他の手段、たとえばスタティックRAM(SRAM)、磁気ランダム・アクセス・メモリ(MRAM)、光メモリ、ホログラフィック・メモリなどを使用して実装されてもよい。
図2、3において、各々のプロセッサ102は、処理パイプラインを使用して実装されることが好ましく、論理命令はパイプライン方式で処理される。パイプラインは、命令が処理されるいかなる数のステージに分割されてもよいが、パイプラインは、一般に、一つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、および命令の実行を含む。この点において、各プロセッサ102は、命令デコード回路112、依存性チェック回路114、命令バッファ110、命令発行回路116、および実行ステージ118を含んでもよい。
命令をフェッチした後(アクション300)、デコード回路112は、命令を分析して、対応する命令の機能を実行する論理マイクロ演算を生成する。たとえば、論理マイクロ演算は、算術および論理演算を特定してもよく、ローカルメモリ104に演算をロードし格納してもよく、ソース・オペランドおよび/または即値(immediate)データ・オペランドを記録してもよい。また、デコード回路112は、たとえばレジスタアドレス、構造上のリソース、機能ユニットおよび/またはバスなど、命令がどのリソースを使用するかを示してもよい。また、デコード回路112は、リソースが必要な命令パイプラインステージを示す情報を提供してもよい。命令デコード回路112は、命令バッファ110(アクション302)のレジスタの数と同等の数の命令を同時にデコードすることができることが好ましい。
依存性チェック回路114は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているか否かを判定するためのテストを実行するデジタル論理を含む。依存している場合、(たとえば、他の命令の実行が完了することを許すなどして)他のオペランドが更新されるまで、所定の命令は実行されない。依存性チェック回路は、デコード回路112(アクション304)から同時に発行される多数の命令の依存性を判定することが好ましい。所定の命令のために依存性チェック回路114によって実行される比較(たとえば排他的なOR演算)の数は、並行して発行されることが可能な命令の数を掛け、更に命令バッファ110に格納されることが可能な命令の数を掛けた、所定の命令のオペランドの数の関数である。また、命令バッファに格納できる命令の数が大きいとき、依存性チェックを実行するための比較の数は大きい。このように、提供されるべき比較の総数は、命令のとりうるオペランドの数にディスパッチされる可能性のある命令の数を掛けたものであり、さらには命令バッファ110に格納される命令の数を掛けたものである。命令バッファに格納できる命令の数が増加するにしたがって、比較するために使用される回路の総計は劇的に増加するが、それは望ましいものではない。また、このような理由により、命令バッファのサイズは最小化されることが好ましい。
命令バッファ110は、依存性チェック回路114に結合して一時的に命令(アクション306)を格納できる複数のレジスタ110A−Bを含むことが好ましい。すなわち、実質的に同時に、全ての命令がグループとしてレジスタ110A−Bから出力されるように、命令バッファ110は作動する。命令バッファが2から3くらいのレジスタより大きくないサイズで、さらに一般的にいえば、命令バッファのサイズを定めるレジスタの数が最小化されることが好ましい。以下に詳細に述べるように、プロセッサ102においてデータキャッシングに依存しないようプログラムをコードするなど、アプリケーションのプログラミングをコードする間に実施される対応措置によって命令バッファ110のサイズを最小化するならば、有利な結果が得られる。
命令発行回路116は、プロセッサ102(アクション308)の実行ステージに命令を発行することができる。プロセッサ102は、クロックサイクル毎に一つ以上の命令が発行され、プロセッサの速度は対応して増加するようなスーパースカラー・アーキテクチャであることが好ましい。命令がフロー内の他の命令に依存しない場合、命令スループットの増加は、命令発行回路116が同時に命令を発行する多重度に比例しているはずである。プロセッサ102は、たとえば2と3(クロックサイクル毎に2つまたは3つの命令を意味する)の間など、命令バッファ110からの命令の同時発行の数に略一致するスーパースカラとして動作することが好ましい。
命令バッファ110の命令の数が最小化されるにしたがって、比較的少ない数のレジスタ110A−B(たとえば2つのレジスタ)、依存性チェック回路114もまた最小化され、依存性チェックを実行するために必要なロジックの数を減らすことができる。これにより、各々のプロセッサ102は、プロセッサ内のデータキャッシングに依存しないように一つ以上のプログラムがコードされた場合、実質的には最大限の効率で命令を処理することが可能となる。実際、各々のプロセッサ102は、ローカルメモリ104内でプログラムを実行するために、共有メモリ106とそのローカルメモリ104との間でデータのブロックを転送することができるが、プロセッサ102は、共有メモリ106内でプログラムを実行することができない。このように、命令が共有メモリ106から転送され処理パイプラインにおいて実行されることにより得られる効率は、プログラマが、ローカルメモリ104にデータをキャッシングせずにブロックデータ転送を利用してプログラムをコードするときに高くなる。
別の実施例では、マルチプロセシングシステム100は、他のプロセッサ102に機能的に結合して、バス108を介して共有メモリ106に結合するメインプロセッサ(図示せず)を含むことができる。メインプロセッサは、他のプロセッサ102によるデータ処理をスケジューリングして調整することができる。しかし、他のプロセッサ102と違い、メインプロセッサは、共有メモリ106、および各プロセッサ102の複数のローカルメモリ104の少なくとも一つから得られるデータをキャッシュできるハードウェアキャッシュメモリに結合することができる。メインプロセッサは、システムメモリ106からデータ(プログラムデータを含んでもよい)をコピーするため、たとえばDMA技術など、いずれかの周知技術を利用するプログラム実行およびデータ処理を行うキャッシュメモリへバス108を介してデータ・アクセス要求を提供することができる。
ここで、上述した一つ以上の特徴の実現に適した、好適なマルチプロセッサシステムのコンピュータアーキテクチャについて説明する。一つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステムや、ホームターミナルや、PCシステムや、サーバシステムや、ワークステーションなどの豊富なメディアを有するアプリケーションのスタンドアロン型処理および/または分散型処理のためのシングルチップソリューションとして実装できる。一部のアプリケーション、例えば、アプリーケーションがゲームシステムおよびホームターミナルである場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワークを経由した画像復元、3Dコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能計算のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分の速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを終了させなければならない。
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール(またはセル)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、1以上のクライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
図4は、基本的な処理モジュールであるプロセッサエレメント(PE)500を示す。PE500は、I/Oインタフェース502と、処理ユニット(PU)504と、複数のサブ処理ユニット508、すなわち、サブ処理ユニット508Aと、サブ処理ユニット508Bと、サブ処理ユニット508Cと、サブ処理ユニット508Dとを含む。すなわち内部であるローカルPEバス512は、PU504、サブ処理ユニット508群、およびメモリインタフェース511間のデータおよびアプリケーションの伝送を行う。ローカルPEバス512は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
PE500はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、PE500はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE500はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)ロジック回路等として実装することもできる。
PE500は、広帯域メモリ接続516を介してダイナミックランダムアクセスメモリ(DRAM)514に密接に関連付けられる。共有メモリ514は好適にはダイナミックランダムアクセスメモリ(DRAM)だが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
PU504およびサブ処理ユニット508は、それぞれ、ダイレクトメモリアクセス(DMA)機能を有するメモリフローコントローラ(MFC)と接続されることが望ましい。MFCは、メモリインタフェース511と協働して、共有メモリ514、PE500におけるサブ処理ユニット508、PU504間のデータの転送を円滑にするものである。ここで、DMACおよび/またはメモリインタフェース511は、サブ処理ユニット508とPU504とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、DAMCの機能および/またはメモリインタフェース511の機能は、サブ処理ユニット508およびPU504の一つ以上(好ましくはすべて)に一体化できる。ここで、共有メモリ514もまた、PE500から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、共有メモリ514は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
PU504は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU504はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群は、好適には、一命令複数データ(SIMD)プロセッサである。PU504の制御下で、サブ処理ユニット群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。PU504としては、RISC(reduced instruction−set computing)技術を用いるマイクロプロセッサアーキテクチャとなるPowerPC(登録商標)コアを用いることが好ましい。RISCは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
ここで、PU504は、サブ処理ユニット508のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット508は、メイン処理ユニットPUによる処理、すなわち各々のサブ処理ユニット508によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、PE500内において、複数のPUを実装してもよい。
このモジュール構造では、あるコンピュータシステムで使用されるPE500の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは4つのPE500群、ワークステーションは二つのPE500群、PDAは一つのPE500を使用しうる。あるソフトウェアセルの処理に割り当てられるPE500のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
図5は、サブ処理ユニット(SPU)508の好適な構造と機能を示す図である。サブ処理ユニット508のアーキテクチャは、汎用プロセッサ(多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの)と特殊用途のプロセッサ(一つのアプリケーションにおいて高い性能を実現するように設計されている)との間に位置するものであることが望ましい。サブ処理ユニット508は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット508の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、MPEGエンコード/デコード、暗号化、デコード、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
サブ処理ユニット508は、すなわちSPUコア510Aとメモリフローコントローラ(MFC)510Bという二つの基本機能ユニットを有する。SPUコア510Aは、プログラムの実行、データの操作などを担うものであり、一方、MFC510Bは、SPUコア510Aと、システムの共有メモリ514との間のデータ転送に関連する機能を担うものである。
SPUコア510Aはローカルメモリ550と、命令(インストラクション)ユニット(IU)552と、レジスタ554と、一つ以上の浮動小数点実行ステージ556と、一つ以上の固定小数点実行ステージ558とを有する。ローカルメモリ550は、SRAMのようなシングルポートのRAMを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、SPUコア510Aは、キャッシュよりも、比較的小さいローカルメモリ550を用いる。実際には、リアルタイムのアプリケーション(およびここで言及したほかのアプリケーション)のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット508A内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット/ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算を伴うDMA転送をオーバーラップすることで、ローカルメモリSRAM550内のレイテンシを補うことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。DMA転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、SRAMローカルメモリアプローチは、DMA転送サイズが十分大きいかつ十分予測可能なとき(例えばデータが要求される前にDMAコマンドを発行することができるとき)において優位性を提供する。
サブ処理ユニット508のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ550を参照する。なお、ローカルメモリ550の各場所にはシステムの全体のメモリマップ上におけるリアルアドレス(RA)が付与されている。これは、特権レベルのソフトウェアがローカルメモリ550を一つの処理における実効アドレス(EA)にマッピングすることを可能とし、それによって二つのローカルメモリ550間のDMA転送が容易になる。PU504は、実効アドレスを用いてローカルメモリ550に直接アクセスすることもできる。ローカルメモリ550は、356キロバイトの容量を有し、レジスタ554の容量は128×128ビットであることが望ましい。
SPUコア510Aは、演算パイプラインを用いて実装されることが望ましく、その中において論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令の間の依存性のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット552は、命令バッファと、命令デコード回路と、依存性チェック回路と、命令発行回路とを含む。
命令バッファは、ローカルメモリ550と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が一つのグループとして(すなわち実質上同時に)レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ2または3以下となるようにするサイズであることが好ましい。
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理・マイクロオペレーションを発生させる。例えば、論理・マイクロペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ550へのロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび/または即値データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび/またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
依存性チェック回路は、チェック対象となる命令のオペランドがパイプラン内の他の命令のオペランドに依存するか否かを判定するためのチェックを行うデジタルロジックを含む。依存するならば、チェック対象となる命令は、これらの他のオペランドが(例えば、これらの他の命令の実行の完了を許可することによって)更新されるまで、実行されるべきではない。依存性チェック回路は、命令デコード回路112から同時に送信されてきた複数の命令の依存性を判定することが好ましい。
命令発行回路は、浮動小数点実行ステージ556および/または固定小数点実行ステージ558に命令を発行することができる。
レジスタ554は、128―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネームを必要とせずに、深くパイプライン化された高周波数の実行を可能とする。ハードウェアのリネームは、一般的に処理システムにおける実装面積と電力の高い割合を消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、優位性のあるオペレーションを実現できる。
SPUコア510Aは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。SPUコア510Aは、命令バッファから同時に送信される命令の数、例えば2と3の間(クロックサイクル毎に2つまたは3つの命令が発行されることを意味する)に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた多少なりの数の浮動小数点実行ステージ556と固定小数点実行ステージ558を用いることができる。好適な実施の形態では、浮動小数点実行ステージ556と固定小数点実行ステージ558の望ましいスピードは、それぞれ、毎秒32ギガ浮動小数点オペレーション(32 GFLOPS)と毎秒32ギガオペレーション(32 GOPS)である。
MFC510Bは、バスインターフェースユニット(BIU)564と、メモリマネジメントユニット(MMU)562と、ダイレクトメモリアクセスコントローラ(DMAC)560とを有することが望ましい。低電力消費の設計目的を達成するために、MFC510Bは、DMAC560を除いて、SPUコア510AおよびローカルPEバス512の半分の周波数(半分のスピード)で動作することが好ましい。MFC510Bは、ローカルPEバス512からサブ処理ユニット508に入るデータと命令を操作することができ、DMACのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。BIU564は、ローカルPEバス512とMMU562とDMAC560との間のインターフェースを提供する。したがって、サブ処理ユニット508(SPUコア510AとMFC510Bを含む)とDMAC560は、物理的および/または論理的にローカルPEバス512と接続されている。
MMU562は、メモリアクセスのために実効アドレス(DMAコマンドから取得される)をリアルアドレスへ変換することができるようにすることが望ましい。例えば、MMU562は、実効アドレスの比較的高いオーダのビットをリアルアドレスのビットに変換できる。なお、比較的低いオーダアドレスビットについては、変換不可であると共に、物理的におよび論理的にリアルアドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、MMU562は、64ビットのメモリマネジメントモジュールをベースにして実装でき、4Kバイト、64Kバイト、1メガバイト、16メガバイトのページサイズと256MBのセグメントサイズを有する264のバイトの実効アドレス空間を提供することができる。MMU562は、DMAコマンドのために、265までの仮想メモリと、242バイト(4テラバイト)の物理メモリをサポート可能であることが好ましい。MMU562のハードウェアは、8−エントリの完全連想SLB、256−エントリの4ウェイセット連想TLB、TLBのための4×4代替マネジメントテーブル(RMT)を含むものとすることができる。なお、RMTはハードウェアTLBミスのハンドリングに用いられるものである。
DMAC560は、SPUコア510AからのDMAコマンドと、一つ以上の、PU504および/または他のSPUのような他のデバイスからのDMAコマンドとを管理することができることが望ましい。DMAコマンドは下記の3つのカテゴリがある。すなわち、ローカルメモリ550から共有メモリ514へデータを移動させるPutコマンド、共有メモリ514からローカルメモリ550へデータを移動させるGetコマンド、SLIコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。DMAコマンドに応じて、MMU562は実効アドレスをリアルアドレスに変換し、このリアルアドレスはBIU564に転送される。
SPUコア510Aはチャンネルインターフェースとデータインターフェースとを用いて、DMAC560内のインターフェースと通信(DMAコマンド、ステータスなどの送信)することが好ましい。SPUコア510Aは、チャンネルインターフェースを介してDMAコマンドをDMAC560内のDMAキューに送信する。いったん、DMAキューに格納されたDMAコマンドは、DMAC560内の発行ロジックと完了ロジックにより操作される。一つのDMAコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がSPUコア510Aに返送される。
図6は、PU504の好ましい構造と機能を示す図である。PU504は、PUコア504Aとメモリフローコントローラ、すなわちMFC504Bとの二つの基本機能ユニットを有する。PUコア504Aは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、MFC504Bは、PUコア504Aと、マルチプロセシングシステム100のメモリスペースとの間のデータ転送に関連する機能を担うものである。
PUコア504Aは、L1キャッシュ570と、命令ユニット572と、レジスタ574と、少なくとも一つの浮動小数点実行ステージ576と、少なくとも一つの固定小数点実行ステージ578とを有する。L1キャッシュ570は、共有メモリ106、プロセッサ102、あるいはMFC504Bにおけるほかの部分のメモリスペースから受信したデータのキャッシング機能を提供する。PUコア504Aはスーパーパイプラインとして実装されることが好ましいため、命令ユニット572は、フェッチ、デコード、依存性のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。PUコア504Aは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット572から2以上の命令が発行される。高い演算能力を実現するために、浮動小数点実行ステージ576と固定小数点実行ステージ578は、パイプライン方式の多数のステージを有する。必要とされる処理能力に応じた多少なりの浮動小数点実行ステージ576と固定小数点実行ステージ578とを用いることができる。
MFC504Bは、バスインターフェースユニット(BIU)580と、L2キャッシュ582と、キャッシュ不可ユニット(NCU)584と、コアインターフェースユニット(CIU)586と、メモリマネジメントユニット(MMU)588とを有する。低電力消費の設計目的を達成するために、MFC504Bのほとんどは、PUコア504Aとバス108の半分の周波数(半分のスピード)で動作することが好ましい。
BIU580は、バス108と、L2キャッシュ582と、NCU584のロジックブロックとの間のインターフェースを提供する。BIU580は、完全一致のメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス108上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、BIU580は、L2キャッシュ582とNCU584の代わりに、バス108へのロードリクエストとストアリクエストを発信する。BIU580は、バス108へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス108上のデータオペレーションは、8ビートになるように設計されることができ、そして、BIU580は、キャッシュラインが128バイト前後であり、一貫性と同期の精度が128KBであるように設計されることが好ましい。
L2キャッシュ582(およびそれをサポートするハードウェアロジック)は、512KBデータをキャッシュするように設計されることが好ましい。例えば、L2キャッシュ582は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。L2キャッシュ582は、8ウエイセットアソシエイティブシステムであることが好ましい。L2キャッシュ582は、6つのキャストアウトキュー(例えば6つのRCマシン)に合わせた6つのリロードキューと、8つの(64バイトの幅の)ストアキューとを有することができる。L2キャッシュ582は、L1キャッシュ570の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ(動作中に変更)されたときの、復元状況において有用である。この構成は、L1キャッシュ570が、ほぼポート無しにさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる(リクエストがL2キャッシュ582で止まることができるから)。この構成は、L2キャッシュ582にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
NCU584はインターフェースによってCIU586と、L2キャッシュ582と、BIU580と接続されており、通常、PUコア504Aとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。NCU584は、PUコア504Aとの通信のうちの、L2キャッシュ582によって扱わない全ての通信を操作することが好ましい。ここで、L2キャッシュ582によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、NCU584は、半分のスピードで動作することが好ましい。
CIU586は、MFC504BとPUコア504Aとの境界線上に配置され、浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、MMU588から、L2キャッシュ582とNCU584へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。PUコア504AとMMU588はフルスピードで動作し、L2キャッシュ582とNCU584は2:1のスピード比で動作可能であることが好ましい。こうすることによって、CIU586に周波数境界線が存在することになり、この境界線は、その一つの機能により、二つの周波数領域間にリクエストの転送およびデータのリロードをする際に、周波数の交錯を適切に操作する。
CIU586は、ロードユニット、ストアユニット、リロードユニットの3つの機能ブロックから構成される。さらに、データをプリフェッチする機能がCIU586により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。CIU586は、下記の動作を実行可能であることが好ましい:(i)PUコア504AとMMU588からのロードリクエストとストアリクエストを受信する、(ii)これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する(2:1クロック周波数変換)、(iii)キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれL2キャッシュ582とNCU584へルーティングする、(iv)L2キャッシュ582とNCU584へのリクエストが均等になるように調整する、(v)リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、L2キャッシュ582とNCU584へ送信するリクエストのフローコントロールを提供する、(vi)ロードリターンデータを受信すると共に、これらのデータを浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、またはMMU588へルーティングする、(vii)スヌープリクエストを浮動小数点実行ステージ576、固定小数点実行ステージ578、命令ユニット572、またはMMU588へ転送する、(viii)ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
MMU588は、第2レベルアドレス変換手段のごとく、PUコア504Aのためにアドレス変換を提供することが好ましい。変換の第1レベルは、PUコア504A内において、セパレート命令と、MMU588より遥かに小さくてかつ速いデータERAT(実効アドレスからリアルアドレスへの変換)アレイとにより提供されることが好ましい。
PU504は64ビットで実装され、4〜6GHz、10F04(Fan−out−of−four)で動作することが好ましい。レジスタは64ビットの長さを有することが好ましく(特定用途のための一つまたはより多くのレジスタが64ビットより小さいかもしれないが)、実効アドレスは64ビットの長さを有することが好ましい。命令ユニット572、レジスタ574、浮動小数点実行ステージ576と固定小数点実行ステージ578はRISCコンピューティング技術を達成するためにPowerPC技術により実装されることが好ましい。
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第6526491号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のPEを含め、さらに、このPEに、PU、DMACおよび8個のAPUを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ(VS)の構造を有してもよく、この場合、VSに、PU、DMACおよび4つのAPUを含めてもよい。
少なくとも一つの本発明の更なる態様において、上記した方法と装置は、たとえば図において例示される適切なハードウェアを利用して提供されることができる。このようなハードウェアは、たとえば標準のデジタル回路、ソフトウェアおよび/またはファームウェアプログラムを実行することができる周知のプロセッサ、プログラム可能な読出し専用メモリ(PROM)やプログラマブルアレイ論理装置(PAL)などのプログラム可能な一つ以上のデジタル装置またはシステムなど、いずれかの周知技術を利用して実装されてもよい。さらに、図示される装置は、特定の機能的なブロックに仕切られると表されているが、このようなブロックは、別々の回路を経由して実装されてもよく、および/または一つ以上の機能ユニットに結合されてもよい。また更に、さまざまな本発明の態様は、(たとえばフレキシブル・ディスク、メモリ・チップなど)携帯性および配布性を有する適切な記憶媒体またはメディアに保存されるソフトウェアおよび/またはファームウェアプログラムとして実現されてもよい。
以上、特定の実施例を参照して本発明について説明したが、これらの実施例は、単に本発明の原理およびアプリケーションを例示するだけであることは理解されることろである。したがって、多数の変形が例示の実施例になされ得ることは理解されるところであり、請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく、他の変形例が設けられることが可能である。
一つ以上の本発明の態様と同様の二つ以上のサブプロセッサを有するマルチプロセシングシステムの構造を示す図である。 図1の演算処理システムにおけるプロセッサの一つ以上のパイプライン構造を示す図である。 本発明の一つ以上の態様に従って図1の演算処理システムによって実行されるプロセスステージ示すフローチャートである。 本発明の一つ以上の更なる態様を実行するために用いられる好適なプロセッサエレメント(PE)を示す図である。 本発明の一つ以上の更なる態様における、図4のシステムのサブ処理ユニット(SPU)の構造の一例を示す図である。 本発明の一つ以上の更なる態様おける、図4のシステムの典型的な処理ユニット(PU)の構造の一例を示す図である。
符号の説明
100 マルチプロセシングシステム、 102 プロセッサ、 104 ローカルメモリ、 106 共有メモリ、 108 バス、 110 命令バッファ、 110A レジスタ、 112 命令デコード回路、 114 依存性チェック回路、 116 命令発行回路、 500 PE、 504 PU、 508 サブ処理ユニット、 512 ローカルPEバス、 514 共有メモリ、 550 ローカルメモリ、 552 命令ユニット。

Claims (21)

  1. ハードウェアキャッシュメモリではない複数のローカルメモリと、
    各々が前記複数のローカルメモリのいずれかに関連する複数のプロセッサであって各々が共有メモリと通信可能な複数のプロセッサと、
    各々が前記複数のローカルメモリの各々に対応して設けられ、共有メモリから対応するローカルメモリへ命令を転送する複数のメモリフローコントローラと、
    を備え、
    前記複数のプロセッサの各々は、関連するローカルメモリに格納された命令をフェッチしデコードする命令デコード回路と、デコードされた命令間の依存性をテストする命令依存性チェック回路と、前記命令依存性チェック回路に結合された2つまたは3つの命令バッファと、前記2つまたは3つの命令バッファと同数の2つまたは3つの実行ステージと、を含む命令パイプラインを有し、
    前記2つまたは3つの命令バッファの各々は、それぞれに対応する実行ステージに投入すべき命令の候補を一つだけ保持するための一つのレジスタを有し、
    前記メモリフローコントローラは、対応するローカルメモリにダイレクトメモリアクセスにより、データキャッシングに依存しないようプログラミングされたプログラムの少なくとも一部である複数の命令をまとめてブロック転送し、
    前記ローカルメモリは、ブロック転送された複数の命令をキャッシングを介することなく格納し、
    前記命令デコード回路は、前記関連するローカルメモリに格納された複数の命令のうち、前記2つまたは3つの命令バッファの数と同数の命令を、キャッシングを介することなくフェッチし同時にデコードし、
    前記命令依存性チェック回路は、デコードされた2つまたは3つの命令のオペランドが前記命令パイプライン内の他の命令のオペランドに依存するか否かをチェックし、
    前記2つまたは3つの命令バッファの各々は、前記命令依存性チェック回路によって前記命令パイプライン内の他の命令との依存性がないと判定された命令を前記一つのレジスタに一つずつ格納し、前記2つまたは3つの命令バッファは、それぞれのレジスタに格納された全ての命令をグループとして出力し、
    前記2つまたは3つの実行ステージの各々は、前記2つまたは3つの命令バッファからグループとして出力された2つまたは3つの命令の各々を同時に実行し、
    前記命令依存性チェック回路によって、前記デコードされた2つまたは3つの命令のオペランドが前記命令パイプライン内の他の命令のオペランドに依存すると判定された場合は、その2つまたは3つの命令は、前記他の命令のオペランドが更新されるまで前記2つまたは3つの実行ステージに投入されないことを特徴とする装置。
  2. 前記命令依存性チェック回路は、前記命令パイプラインの命令の依存性を並行してチェックすることを特徴とする請求項1に記載の装置。
  3. 前記複数のプロセッサのいずれか、および当該プロセッサに関連するローカルメモリは、共通の半導体回路基板に配置されることを特徴とする請求項1または2に記載の装置。
  4. 前記共有メモリは、バスを介して前記複数のプロセッサの各々に結合することを特徴とする請求項1からのいずれかに記載の装置。
  5. 前記複数のプロセッサ、前記複数のローカルメモリ、および前記共有メモリは、共通の半導体回路基板に配置されることを特徴とする請求項1からのいずれかに記載の装置。
  6. ハードウェアキャッシュメモリではない複数のローカルメモリと、
    各々が前記複数のローカルメモリのいずれかに関連する複数のプロセッサであって各々が共有メモリと通信可能な複数のプロセッサと、
    各々が前記複数のローカルメモリの各々に対応して設けられ、共有メモリから対応するローカルメモリへ命令を転送する複数のメモリフローコントローラと、
    を備え、
    前記複数のプロセッサの各々は、関連するローカルメモリに格納された命令をフェッチしデコードする命令デコード回路と、デコードされた命令間の依存性をテストする命令依存性チェック回路と、前記命令依存性チェック回路に結合された複数の命令バッファであって、当該複数のレジスタが同時に発行可能な命令の数として命令スループットに基づいて算出された数の複数の命令バッファと、前記複数の命令バッファと同数の複数の実行ステージと、を含む命令パイプラインを有し、
    前記複数の命令バッファの各々は、それぞれに対応する実行ステージに投入すべき命令の候補を一つだけ保持するための一つのレジスタを有し、
    前記メモリフローコントローラは、対応するローカルメモリにダイレクトメモリアクセスにより、データキャッシングに依存しないようプログラミングされたプログラムの少なくとも一部である複数の命令をまとめてブロック転送し、
    前記ローカルメモリは、ブロック転送された複数の命令をキャッシングを介することなく格納し、
    前記命令デコード回路は、前記関連するローカルメモリに格納された複数の命令のうち、前記複数の命令バッファの数と同数の命令を、キャッシングを介することなくフェッチし同時にデコードし、
    前記命令依存性チェック回路は、デコードされた複数の命令のオペランドが前記命令パイプライン内の他の命令のオペランドに依存するか否かをチェックし、
    前記複数の命令バッファの各々は、前記命令依存性チェック回路によって前記命令パイプライン内の他の命令との依存性がないと判定された命令を前記一つのレジスタに一つずつ格納し、前記複数の命令バッファは、それぞれのレジスタに格納された全ての命令をグループとして出力し、
    前記複数の実行ステージの各々は、前記複数の命令バッファからグループとして出力された複数の命令の各々を同時に実行し、
    前記命令依存性チェック回路によって、前記デコードされた複数の命令のオペランドが前記命令パイプライン内の他の命令のオペランドに依存すると判定された場合は、その複数の命令は、前記他の命令のオペランドが更新されるまで前記複数の実行ステージに投入されないことを特徴とする装置。
  7. 前記命令パイプラインは、前記命令依存性チェック回路に結合された3つのレジスタを有することを特徴とする請求項に記載の装置。
  8. 前記命令パイプラインは、前記命令依存性チェック回路に結合された2つのレジスタを有することを特徴とする請求項に記載の装置。
  9. 前記複数のプロセッサの各々に機能的に結合し、前記共有メモリに結合するメインプロセッサと、
    前記メインプロセッサと関連し、前記共有メモリ、および各々が前記複数のプロセッサのいずれかに関連する前記複数のローカルメモリの少なくとも1つから取得されたデータをキャッシュするハードウェアキャッシュメモリと、
    を更に備えることを特徴とする請求項に記載の装置。
  10. 前記メインプロセッサは、前記複数のプロセッサを管理することを特徴とする請求項に記載の装置。
  11. ハードウェアキャッシュメモリではない複数のローカルメモリと、
    各々が前記複数のローカルメモリのいずれかに関連する複数のプロセッサであって各々が共有メモリと通信可能な複数のプロセッサと、
    各々が前記複数のローカルメモリの各々に対応して設けられ、共有メモリから対応するローカルメモリへ命令を転送する複数のメモリフローコントローラと、
    前記複数のプロセッサの各々に機能的に結合し、前記共有メモリに結合するメインプロセッサと、
    前記メインプロセッサと関連し、前記共有メモリ、および各々が前記複数のプロセッサのいずれかに関連する前記複数のローカルメモリの少なくとも1つから取得されたデータをキャッシュするハードウェアキャッシュメモリと、
    を備え、
    前記複数のプロセッサの各々は、関連するローカルメモリに格納された命令をフェッチしデコードする命令デコード回路と、デコードされた命令間の依存性をテストする命令依存性チェック回路と、前記命令依存性チェック回路に結合された2つまたは3つの命令バッファと、前記2つまたは3つの命令バッファと同数の2つまたは3つの実行ステージと、を含む命令パイプラインを有し、
    前記2つまたは3つの命令バッファの各々は、それぞれに対応する実行ステージに投入すべき命令の候補を一つだけ保持するための一つのレジスタを有し、
    前記メモリフローコントローラは、対応するローカルメモリにダイレクトメモリアクセスにより、データキャッシングに依存しないようプログラミングされたプログラムの少なくとも一部である複数の命令をまとめてブロック転送し、
    前記ローカルメモリは、ブロック転送された複数の命令をキャッシングを介することなく格納し、
    前記命令デコード回路は、前記関連するローカルメモリに格納された複数の命令のうち、前記2つまたは3つの命令バッファの数と同数の命令を、キャッシングを介することなくフェッチし同時にデコードし、
    前記命令依存性チェック回路は、デコードされた2つまたは3つの命令のオペランドが前記命令パイプライン内の他の命令のオペランドに依存するか否かをチェックし、
    前記2つまたは3つの命令バッファの各々は、前記命令依存性チェック回路によって前記命令パイプライン内の他の命令との依存性がないと判定された命令を前記一つのレジスタに一つずつ格納し、前記2つまたは3つの命令バッファは、それぞれのレジスタに格納された全ての命令をグループとして出力し、
    前記2つまたは3つの実行ステージの各々は、前記2つまたは3つの命令バッファからグループとして出力された2つまたは3つの命令の各々を同時に実行し、
    前記命令依存性チェック回路によって、前記デコードされた2つまたは3つの命令のオペランドが前記命令パイプライン内の他の命令のオペランドに依存すると判定された場合は、その2つまたは3つの命令は、前記他の命令のオペランドが更新されるまで前記2つまたは3つの実行ステージに投入されないことを特徴とする装置。
  12. 前記メインプロセッサは、ダイレクトメモリアクセスを使用して、前記共有メモリから前記キャッシュメモリへ命令を転送させることを特徴とする請求項11に記載の装置。
  13. 前記メインプロセッサ、前記複数のプロセッサ、および前記複数のローカルメモリは、共通の半導体回路基板に配置されることを特徴とする請求項11または12に記載の装置。
  14. 前記共有メモリは、バスを介して前記複数のプロセッサの各々および前記メインプロセッサに結合することを特徴とする請求項11から13のいずれかに記載の装置。
  15. 前記メインプロセッサ、前記複数のプロセッサ、前記複数のローカルメモリ、および前記共有メモリは、共通の半導体回路基板に配置されることを特徴とする請求項11から14のいずれかに記載の装置。
  16. 共有メモリから、複数のプロセッサのうちの一つのプロセッサと関連するハードウェアキャッシュメモリではないローカルメモリへ、ダイレクトメモリアクセスにより、データキャッシングに依存しないようプログラミングされたプログラムの少なくとも一部である複数の命令をまとめてブロック転送するステップと、
    ブロック転送された複数の命令をキャッシングを介することなく前記ローカルメモリへ格納するステップと、
    複数の命令がブロック転送されたローカルメモリに関連するプロセッサにおいて、関連するローカルメモリに格納された複数の命令のうち、2つまたは3つの命令バッファの数と同数の命令を、キャッシングを介することなくフェッチし同時にデコードするステップと、
    デコードされた2つまたは3つの命令のオペランドが命令パイプライン内の他の命令のオペランドに依存するか否かをチェックするステップと、
    命令パイプライン内の他の命令との依存性がないと判定された命令を、前記2つまたは3つの命令バッファの各々が有するレジスタであって、前記2つまたは3つの命令バッファの各々に対応する実行ステージに投入すべき命令の候補を一つだけ保持するための一つのレジスタに一つずつ格納するステップと、
    前記2つまたは3つの命令バッファの各々のレジスタに格納された全ての命令をグループとして出力するステップと、
    前記2つまたは3つの命令バッファからグループとして出力された2つまたは3つの命令の各々を、前記2つまたは3つの命令バッファの各々に対応する実行ステージにおいて同時に実行するステップと、
    を備え、
    前記デコードされた2つまたは3つの命令のオペランドが命令パイプライン内の他の命令のオペランドに依存すると判定された場合は、その2つまたは3つの命令は、前記他の命令のオペランドが更新されるまで、前記2つまたは3つの命令バッファの各々に対応する実行ステージに投入されないことを特徴とする方法。
  17. 命令の依存性を並行してチェックするステップを更に備えることを特徴とする請求項16に記載の方法。
  18. 共有メモリから、複数のプロセッサのうちの一つのプロセッサと関連するハードウェアキャッシュメモリではないローカルメモリへ、ダイレクトメモリアクセスにより、データキャッシングに依存しないようプログラミングされたプログラムの少なくとも一部である複数の命令をまとめてブロック転送するステップと、
    前記共有メモリから、前記複数のプロセッサの各々に機能的に結合し前記共有メモリに結合するメインプロセッサに関連するハードウェアキャッシュメモリに命令を転送するステップと、
    ブロック転送された複数の命令をキャッシングを介することなく前記ローカルメモリへ格納するステップと、
    複数の命令がブロック転送されたローカルメモリに関連するプロセッサにおいて、関連するローカルメモリに格納された複数の命令のうち、2つまたは3つの命令バッファの数と同数の命令を、キャッシングを介することなくフェッチし同時にデコードするステップと、
    デコードされた2つまたは3つの命令のオペランドが命令パイプライン内の他の命令のオペランドに依存するか否かをチェックするステップと、
    命令パイプライン内の他の命令との依存性がないと判定された命令を、2つまたは3つの命令バッファの各々が有するレジスタであって、前記2つまたは3つの命令バッファの各々に対応する実行ステージに投入すべき命令の候補を一つだけ保持するための一つのレジスタに一つずつ格納するステップと、
    前記2つまたは3つの命令バッファの各々のレジスタに格納された全ての命令をグループとして出力するステップと、
    前記2つまたは3つの命令バッファからグループとして出力された2つまたは3つの命令の各々を、前記2つまたは3つの命令バッファの各々に対応する実行ステージにおいて同時に実行するステップと、
    を備え、
    前記デコードされた2つまたは3つの命令のオペランドが命令パイプライン内の他の命令のオペランドに依存すると判定された場合は、その2つまたは3つの命令は、前記他の命令のオペランドが更新されるまで、前記2つまたは3つの命令バッファの各々に対応する実行ステージに投入されないことを特徴とする方法。
  19. 前記メインプロセッサ、前記複数のプロセッサ、および前記ローカルメモリは、共通の半導体回路基板に配置されることを特徴とする請求項18に記載の方法。
  20. 前記メインプロセッサ、前記複数のプロセッサ、前記ローカルメモリ、および前記共有メモリは、共通の半導体回路基板に配置されることを特徴とする請求項18に記載の方法。
  21. 共有メモリから、複数のプロセッサのうちの一つのプロセッサと関連するハードウェアキャッシュメモリではないローカルメモリへ、ダイレクトメモリアクセスにより、データキャッシングに依存しないようプログラミングされたプログラムの少なくとも一部である複数の命令をまとめてブロック転送する機能と、
    ブロック転送された複数の命令をキャッシングを介することなく前記ローカルメモリへ格納する機能と、
    複数の命令がブロック転送されたローカルメモリに関連するプロセッサにおいて、関連するローカルメモリに格納された複数の命令のうち、2つまたは3つの命令バッファの数と同数の命令を、キャッシングを介することなくフェッチし同時にデコードする機能と、
    デコードされた2つまたは3つの命令のオペランドが命令パイプライン内の他の命令のオペランドに依存するか否かをチェックする機能と、
    命令パイプライン内の他の命令との依存性がないと判定された命令を、前記2つまたは3つの命令バッファの各々が有するレジスタであって、前記2つまたは3つの命令バッファの各々に対応する実行ステージに投入すべき命令の候補を一つだけ保持するための一つのレジスタに一つずつ格納する機能と、
    前記2つまたは3つの命令バッファの各々のレジスタに格納された全ての命令をグループとして出力する機能と、
    前記2つまたは3つの命令バッファからグループとして出力された2つまたは3つの命令の各々を、前記2つまたは3つの命令バッファの各々に対応する実行ステージにおいて同時に実行する機能と、
    前記デコードされた2つまたは3つの命令のオペランドが命令パイプライン内の他の命令のオペランドに依存すると判定された場合に、前記他の命令のオペランドが更新された後その2つまたは3つの命令を前記2つまたは3つの命令バッファの各々に対応する実行ステージに投入する機能と、
    を含むアクションをプロセッサに実行させることを特徴とするソフトウェアプログラムが格納された記録媒体。
JP2006029779A 2005-02-08 2006-02-07 マルチプロセッサシステムにおいて命令を処理するための方法と装置 Expired - Fee Related JP4024271B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/053,487 US20060179275A1 (en) 2005-02-08 2005-02-08 Methods and apparatus for processing instructions in a multi-processor system

Publications (2)

Publication Number Publication Date
JP2006221644A JP2006221644A (ja) 2006-08-24
JP4024271B2 true JP4024271B2 (ja) 2007-12-19

Family

ID=36602746

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006029779A Expired - Fee Related JP4024271B2 (ja) 2005-02-08 2006-02-07 マルチプロセッサシステムにおいて命令を処理するための方法と装置

Country Status (3)

Country Link
US (1) US20060179275A1 (ja)
JP (1) JP4024271B2 (ja)
WO (1) WO2006085636A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959292B1 (en) * 2005-12-22 2015-02-17 The Board Of Trustees Of The Leland Stanford Junior University Atomic memory access hardware implementations
US20100242014A1 (en) * 2009-03-17 2010-09-23 Xiaohan Zhu Symmetric multi-processor operating system for asymmetric multi-processor architecture
US9251022B2 (en) * 2013-03-01 2016-02-02 International Business Machines Corporation System level architecture verification for transaction execution in a multi-processing environment
US9921982B2 (en) * 2014-06-05 2018-03-20 Microchip Technology Incorporated Device and method to assign device pin ownership for multi-processor core devices

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks

Also Published As

Publication number Publication date
US20060179275A1 (en) 2006-08-10
JP2006221644A (ja) 2006-08-24
WO2006085636A1 (en) 2006-08-17

Similar Documents

Publication Publication Date Title
JP3802042B2 (ja) キャッシュメモリ実装方法および装置、キャッシュメモリシステム
JP4322259B2 (ja) マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置
JP4386373B2 (ja) ロジカルパーティショニングされた処理環境におけるリソース管理のための方法および装置
JP4346612B2 (ja) 情報処理方法および装置
JP4421561B2 (ja) ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
US7644255B2 (en) Method and apparatus for enable/disable control of SIMD processor slices
JP4219369B2 (ja) プロセッサシステム内においてスタックを分離して管理する方法および装置
US7882379B2 (en) Power consumption reduction in a multiprocessor system
US7689784B2 (en) Methods and apparatus for dynamic linking program overlay
US7818724B2 (en) Methods and apparatus for instruction set emulation
JP2006172474A (ja) アドレスを変換するための方法および装置、情報処理装置
JP2006172468A (ja) システム内部のデータ転送を処理する装置および方法
JP2006260556A (ja) ラッチポイントを制御することにより、演算処理能力を改善する方法、装置ならびにシステム
JP4024271B2 (ja) マルチプロセッサシステムにおいて命令を処理するための方法と装置
JP2006286002A (ja) 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置
JP2006260555A (ja) 命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060815

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061013

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070706

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070712

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071002

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101012

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111012

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121012

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131012

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees