(57)【特許請求の範囲】
【請求項１】
エミュレートされた共有メモリ（ＥＳＭ）アーキテクチャのためのプロセッサアーキテクチャ配置体であって、
インタリーブ型スレッド間パイプライン（４００、５００）をそれぞれ備えた、いくつかの、好ましくは複数のマルチスレッド型プロセッサを含み、
前記パイプライン（４００、５００）が、算術演算、論理演算、および必要に応じてさらに別の演算をデータに対して実行するための直列に配置された複数の機能ユニット（４０２、４０２ｂ、４０２ｃ、５０２ａ）を含み、よりレイテンシの短い１つまたは複数の機能ユニット（４０２）が、前記パイプライン中でメモリアクセスセグメント（４１２）の動作より前に動作し、より長いレイテンシに関連するより複雑な演算を実行する１つまたは複数の長レイテンシユニット（４０２ｂ、５０２ａ）が、前記メモリアクセスセグメント（４１２）と並列に動作する、プロセッサアーキテクチャ配置体。
【請求項２】
いくつかの機能ユニット（４０２ｃ）が、機能上、前記パイプライン中で前記メモリアクセスセグメント（４１２）の動作より後に動作する、請求項１に記載のプロセッサアーキテクチャ配置体。
【請求項３】
少なくとも２つの長レイテンシユニットが連結され、長レイテンシユニットが、連結内の後続のユニットに、演算の結果を引き渡すように構成される、請求項１から２のいずれか一項に記載のプロセッサアーキテクチャ配置体。
【請求項４】
よりレイテンシの短い１つまたは複数の機能ユニットが、少なくとも１つの整数算術のためのＡＬＵを含む、請求項１から３のいずれか一項に記載のプロセッサアーキテクチャ配置体。
【請求項５】
前記パイプラインが、少なくとも２つの並列ブランチ（５００ａ、５００ｂ）を組み込んでおり、各ブランチが、前記メモリアクセスセグメント（４１２）と並列な少なくとも１つの長レイテンシユニット（５０２ａ、５０２ｂ）を含む、請求項１から４のいずれか一項に記載のプロセッサアーキテクチャ。
【請求項６】
少なくとも２つのブランチが、前記パイプラインに対する前記メモリアクセスセグメントを超えて延在し、その延在部が、前記メモリアクセスセグメントの動作の前および／または後に動作する、請求項５に記載のプロセッサアーキテクチャ配置体。
【請求項７】
ブランチ内のいくつかの機能ユニットが、機能上、前記メモリアクセスセグメントの動作より実質的に前および／または後に動作する、請求項６に記載のプロセッサアーキテクチャ配置体。
【請求項８】
演算実行レイテンシの点で相互に異なる前記メモリアクセスセグメントと並列な少なくとも２つの長レイテンシユニット（４０２ｂ）を含む、請求項１から７のいずれか一項に記載のプロセッサアーキテクチャ配置体。
【請求項９】
より長いレイテンシに関連する長レイテンシユニットが、論理的には、メモリアクセスセグメントの終端部分と並列に、かつより短いレイテンシに関連する長レイテンシユニットの動作の後に動作する、請求項８に記載のプロセッサアーキテクチャ配置体。
【請求項１０】
１つまたは複数の機能ユニットが、命令語（４０８）のいくつかの動作選択フィールドを介して制御される、請求項１から９のいずれか一項に記載のプロセッサアーキテクチャ配置体。
【請求項１１】
機能ユニットのためのいくつかの変数が、命令語中に与えられるいくつかの変数選択フィールドに従って、前記パイプラインの変数選択ステージ（４０６）中で決定される、請求項１から１０のいずれか一項に記載のプロセッサアーキテクチャ配置体。
【請求項１２】
少なくとも１つの長レイテンシユニットが、除算、ルート計算または特定用途用に設計される、請求項１から１１のいずれか一項に記載のプロセッサアーキテクチャ配置体。
【請求項１３】
入力データに対して１つまたは複数の演算を実行するように構成された少なくとも１つの長レイテンシユニットと、入力データに対して１つまたは複数のその他の演算を実行するように構成された少なくとも１つの他の長レイテンシユニットとを含む、請求項１から１２のいずれか一項に記載のプロセッサアーキテクチャ配置体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ科学およびコンピュータアーキテクチャに関する。特に、本発明は、エミュレートされた共有メモリアーキテクチャに関連する長レイテンシ演算の実行に関する。
【背景技術】
【０００２】
ＳＭＡ（共有メモリアーキテクチャ）では、データおよびプログラムのパーティショニングは、通常は、複数のスレッドによる処理を必要とするデータを共有メモリ内に配置し、プログラムをさらに独立して複数のプロセッサに分割することによって実施され、したがって処理が常にローカルで行われ、プログラマがデータの移動も担当するメッセージ引渡し（ＭＰＡ）アーキテクチャと比較してプログラミングを容易にしている。残念ながら、ほとんどのＳＭＡは、複数の相互接続されたプロセッサ／キャッシュ対からなる分散型共有メモリアーキテクチャを使用しており、このアーキテクチャでは、キャッシュコヒーレンス（と、ひいてはレイテンシトレランス）および同期性維持が、非常に高価なものになる。このことは、通信量の多い問題において性能を損なうこともある。
【０００３】
例えば上記の問題に取り組むために、エミュレートされた共有メモリ（ＥＳＭ）アーキテクチャまたは共有メモリエミュレーションアーキテクチャが導入されている。これらは、高スループット相互通信ネットワークを介して共通の一様かつ同時にアクセス可能な共有メモリに接続される１組のマルチスレッド型プロセッサのセットを組み込んでいる、メモリシステムのレイテンシは、進行中の複数のメモリ参照を重複させることによって隠し、特殊な低コスト同期機構を確立して、機械命令レベルの同期性を保証する。ＥＳＭシステムは、実際のハードウェアアーキテクチャが物理的に分散したメモリを含んでいる場合でも、ユーザに理想的な共有メモリであると感じさせる。理論的な見地から言えば、これらのアーキテクチャは、計算問題の固有の並列性と、並列アルゴリズムを実行する際の性能およびコストとを記述および分析するためのモデルとして共通に使用される抽象的な並列ランダムアクセス機械（ＰＲＡＭ）を、その簡潔性および表現性のためにエミュレートしようとしている。「ＰＲＡＭモデル」とは、一般に、同じクロックの下で、またそれらが接続された一様なシングルステップアクセス可能な共有メモリの下で動作する、１組のプロセッサのセットを指す。
【０００４】
したがって、ＥＳＭは、機械命令の実行時の暗黙の同期性、効率的なレイテンシ隠し技術、およびランダムかつ同時のアクセス作業負荷が重くても全てのメモリ参照を経路指定するのに十分な帯域幅をもたらすので、チップマルチプロセッサ（ＣＭＰ）のプログラマビリティおよび性能スケーラビリティの問題に対処するための実現可能な技術である。同期実行は、プログラマがそれぞれの大域メモリアクセスの後で明示的に実行スレッドを同期させる必要がなく、その自動的な処理をハードウェアに依拠することができるので、プログラミングをより容易にすると考えられるが、例えばメッセージ引渡しアーキテクチャ（ＭＰＡ）では、プログラマは、通信を明示的に定義し、サブタスクを同期させ、スレッド間のデータおよびプログラムのパーティショニングを記述する責任があり、これにより、ＭＰＡはプログラムすることが困難になっている。共有メモリエミュレーションで使用されるレイテンシ隠しでは、１つのスレッドが大域共有メモリを参照している間に他のスレッドが実行される、高スループット計算方式を使用する。このスループット計算方式では、利用可能なスレッドレベルの並列性から抽出される並列スラックネスを利用するので、スヌーピングまたはディレクトリ型のキャッシュコヒーレンス機構に依拠し、したがって帯域幅の制限またはディレクトリアクセスの遅延、および重いコヒーレンストラフィックの維持という問題がある、従来の対称マルチプロセッサおよび不均一メモリアクセス（ＮＵＭＡ）システムとは対照的なスケーラビリティの向上が得られると考えられる。
【０００５】
近年、特定のケースではプログラミングをさらに簡略化し、対数関数的に性能を向上させるＰＲＡＭの同時読取り同時書込み（ＣＲＣＷ）メモリアクセスの変形形態を実施するステップキャッシュを組み込んだ、スケーラブルなＥＳＭアーキテクチャが提案されている。また、ＰＲＡＭモデルのさらに強力な多重処理同時読取り同時書込み（ＭＣＲＣＷ）変形形態を実施する一定実行時間マルチ（プレフィックス）動作をサポートする機構も、ステップキャッシュの関連性に境界を付けるためにステップキャッシュに取り付けられたスクラッチパッドを援用して実施されている。例えば、出版物１：M. Forsell, Step Caches - a Novel Approach to Concurrent Memory Access on Shared Memory MP-SOCs, In the Proceedings of the 23th IEEE NORCHIP Conference, November 21-22, 2005, Oulu, Finland, 74-77、２：M. Forsell, Reducing the associativity and size of step caches in CRCW operation, In the Proceeding of 8th Workshop on Advances in Parallel and Distributed Computational Models (in conjunction with the 20th IEEE International Parallel and Distributed Processing Symposium, IPDPS'06), April 25, 2006, Rhodes, Greece、３：M. Forsell, Realizing Multioperations for Step Cached MP-SOCs, In the Proceedings of the International Symposium on System-on-Chip 2006 (SOC'06), November 14-16, 2006, Tampere, Finland, 77-82、４：M. Forsell, TOTAL ECLIPSE - An Efficient Architectural Realization of the Parallel Random Access Machine, In Parallel and Distributed Computing Edited by Alberto Ros, IN-TECH, Vienna, 2010, 39-64、および５：M. Forsell and J. Roivainen, Supporting Ordered Multiprefix Operations in Emulated Shared Memory CMPs, In the Proceedings of the 2011 International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'11), July 18-21, 2011, Las Vegas, USA, 506-512は、このような解決策の様々な態様を企図しており、したがって、参照によりその全体を本明細書に組み込む。マルチ（プレフィックス）動作は、例えばＡＤＤ、ＳＵＢ、ＭＡＸなど多数の基本演算について定義することができ、並列アルゴリズムを表現することができることから、並列プリミティブと見なすことができる。これらは、複数のスレッドを非同期に実行するアーキテクチャの競合条件およびその他の異常なしに複数のプロセッサから同時にアクセスされる、同期および並列データ構造に使用することができる。
【０００６】
図１に、シリコンプラットフォーム上に共有メモリをエミュレートするスケーラブルなアーキテクチャのハイレベル図を示す。このアーキテクチャは、物理的にスケーラブルな高帯域幅相互接続ネットワーク１０８を介して、物理的には分散しているが論理的には共有される（データ）メモリＭ１、Ｍ２、Ｍ３、…Ｍｐ１１２に接続された、１組のプロセッサ（コア）Ｐ１、Ｐ２、Ｐ３、…、Ｐｐ１０２のセットを含む。データメモリ１１２と接続されたアクティブなメモリユニット１１０は、メモリ参照を処理するために利用されるメモリ制御論理ユニットと見なすことができる。アクティブなメモリユニット１１０は、例えばマルチ（プレフィックス）動作中など複数のメモリ参照が同じメモリ位置に向けられるケースに関係する計算を管理するように配列される。命令メモリモジュールＩ１、Ｉ２、Ｉ３、…、Ｉｐ１０４は、各プロセッサ１０２のプログラムコードを担持するように構成される。分散メモリ型の実施態様で効率的に共有メモリをエミュレートするために、プロセッサ１０２は、Ｔｐステージの巡回的なインタリーブ型スレッド間パイプライン（Ｔｐ≧ネットワークの平均レイテンシ）を利用してマルチスレッド化される。ＰＲＡＭモデルは、パイプラインのフルサイクルが通常は１ＰＲＡＭステップに対応するように、このアーキテクチャとリンクされる。（パイプライン全体、すなわち実際の実行ステージを含む全てのパイプラインステージに関する）マルチスレッド型実行ステップ中に、ＣＭＰの各プロセッサの各スレッドは、せいぜい１つしか共有メモリ参照サブ命令を含まない命令を実行する。したがって、１ステップが、複数のクロックサイクル、少なくともＴｐ＋１クロックサイクルにわたって続く。
【０００７】
図示のアーキテクチャでは、ステップキャッシュは、一般に、進行中のマルチスレッド型実行ステップの終了時までしかデータが有効でない連想メモリバッファである。同時アクセスに対するステップキャッシュの主な寄与は、参照された各メモリ位置について最初の参照以外の全てを段階的にフィルタリングして除去することである。これにより、位置あたりの要求数が、Ｔｐ≧Ｐと仮定して、ＰＴｐからＰに減少し、それらの要求をシングルポートメモリモジュールで順番に処理することが可能になる。スクラッチパッドは、ステップキャッシュと多重処理のための実際のプロセッサ内およびプロセッサ間の計算を処理する最小限のオンコアおよびオフコアのＡＬＵ（算術論理ユニット）とを援用した多重処理を実施する際に、メモリアクセスデータを記憶してステップキャッシュの連想性を限定されたものにするために使用される、アドレス指定可能なメモリバッファである。スクラッチパッドをステップキャッシュと結合して、いわゆるスクラッチパッド／ステップキャッシュユニットＳ１、Ｓ２、Ｓ３、…Ｓｐ１０６を確立することもできる。
【０００８】
考察した解決策の基礎をなす１つの考えは、実際は、インタリーブ式に効率的に実行される１組のスレッドのセットを有する各プロセッサコア１０２の割振りと、ネットワークのレイテンシを隠す（見えなくする）こととにある。１つのスレッドがメモリ参照を行うと、実行されるスレッドが変わり、次のスレッドがそのメモリ要求を行うことができるようになり、これが以下同様に続いていく。スレッドのメモリ参照の応答が、そのスレッドが実行状態に戻される前にプロセッサコアに到着すれば、メモリ遅延は発生しない。これには、ネットワークの帯域幅が十分に高く、パイプライン化されたメモリアクセストラフィックのホットスポットを回避することができることが必要である。連続した命令の間の同期性は、例えばステップ間で弾性同期波を使用することによって保証することができる。
【０００９】
図２は、２００として、例えばデータメモリモジュール１１２と関連付けられた前述のアクティブなメモリユニット１１２Ｂ（ＡＬＵおよびフェッチャを備える）と、スクラッチパッド２０６Ｂとを組み込んだＥＳＭ  ＣＭＰアーキテクチャの一例を示す図である。ネットワーク１０８は、スイッチ１０８Ｂを備えた高帯域幅パイプライン型メモリシステムとして作用するメッシュ状の相互接続ネットワークとすることができる。メモリアクセスのレイテンシは、１つのスレッドがネットワーク１０８を介して一様アクセス可能な分散型共有メモリを参照している間に他のスレッドを実行することによって隠される。参照の輻輳、および通信のホットスポットは、高帯域幅（２分割ＢＷ≧Ｐ／４）と、これらの分散型メモリモジュールにわたるメモリ位置のランダムハッシングとを特徴とする、効率的なデッドロックのない相互通信アーキテクチャによって回避することができる。命令の実行は、各スレッドが１つの命令を実行する１ＰＲＡＭステップに対応するステップで行われる。
【００１０】
上述した多数の利点にもかかわらず、ＥＳＭシステムは、真に最適な形で実現することは困難であるように思われてきた。ステップキャッシュおよびスクラッチパッド技術を利用して強力な同時メモリアクセスおよびマルチ（プレフィックス）動作をサポートする物理的に実現可能なメモリユニット（ＭＵ）が、基本的には構成可能なＥＳＭであるＲＥＰＬＩＣＡ（ＲＥｍｏｖｉｎｇ  Ｐｅｒｆｏｒｍａｎｃｅ  ａｎｄ  ｐｒｏｇｒａｍｍａｂｉｌｉｔｙ  ＬＩｍｉｔａｔｉｏｎｓ  ｏｆ  Ｃｈｉｐ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ）のような強力なエミュレートされた共有メモリアーキテクチャの１つの重要な構成要素であることは容易に理解できる。このようなＭＵは、例えば、出力メモリ参照を共有メモリシステムに送信し、共有メモリシステムからの起こり得る応答を待機して受信するように構成することができる。
【００１１】
図３は、３００として、例えばステップキャッシュを利用する典型的なＭＣＲＣＷ  ＥＳＭプロセッサのハイレベルブロック図およびパイプラインを示している。ステップキャッシュ型ＭＣＲＣＷ  （Ｃ）ＥＳＭ  ＣＭＰのプロセッサは、Ａ個のＡＬＵと、Ｍ個のメモリユニット（ＭＵ）と、分散型または一体型レジスタブロックと、シーケンサと、何らかのグルーロジックとを含む。この図では、Ａｘ３０２は、ＡＬＵｘを示し、ＩＦ３０８は、命令フェッチ論理を示し、ＭＥＭ３０４は、メモリユニットステージを示し、ＯＳ３０６は、変数（オペランド）選択論理を示し、ＳＥＱ３１０は、シーケンサを示している。この図に示すように、ＡＬＵ３０２は、論理的には、メモリユニット待機セグメントの動作の前後に動作する。
【００１２】
一般に、最近のプロセッサアーキテクチャでＡＬＵによって処理される整数に基づく算術演算は、加算、減算、乗算、および除算を含む。さらに、ＡＬＵは、しばしば、例えば２つのデータ要素を互いに比較して、どちらが小さい／大きいか、またはそれらが等しいかどうかを整理し、その比較の結果に基づいて関連する判断を下すことを含むこともある論理演算の実行を担う。
【００１３】
さらに、例えば、特定の複雑さを有する計算を含む特定の具体的なタスクおよび演算を実行するために、特殊な機能ユニットを割り振ることができる。このような複雑な、またはその他の点で特殊な演算を実行するには、追加の論理またはハードウェアが必要になることもあり、また、例えば基本的なＡＬＵ演算と対比して、完了するのにより多くのクロックサイクルを要する、または一般により長い時間がかかる、すなわちより長いレイテンシを生じることもある。
【００１４】
プロセッサアーキテクチャでは、その特定の経路上に配置されたハードウェアを使用して実行される特殊な目的または特殊なタスクをそれぞれ備える可能性がある、いくつかの並列処理経路を提供することができる。しかしながら、関連する要素およびそれらの経路で行われる関連する処理によって生じるレイテンシにより、しばしば、プロセッサパイプライン構造で進行している命令の総実行時間が長くなる。
【発明の概要】
【発明が解決しようとする課題】
【００１５】
目的は、既知のＥＳＭ配列ではまだ十分に満足できるほど対処されていない上述した１つまたは複数の問題を少なくとも軽減し、そのために、効果的に、除算または特定用途向け演算などの長レイテンシ演算を実行するための実現可能な解決策を提供することである。
【課題を解決するための手段】
【００１６】
この目的は、本発明によるプロセッサアーキテクチャの実施形態によって達成される。
【００１７】
したがって、本発明の１つの態様では、エミュレートされた共有メモリ（ＥＳＭ）アーキテクチャのプロセッサアーキテクチャ配置体は、
インタリーブ型スレッド間パイプラインをそれぞれ備えた、いくつかの、好ましくは複数のマルチスレッド型プロセッサを含み、
前記パイプラインは、算術演算、論理演算、および必要に応じてさらに別の演算をデータに対して実行するための直列に配置された複数の機能ユニットを含み、よりレイテンシの低い１つまたは複数の機能ユニットは、前記パイプライン中でメモリアクセスセグメントの動作より前に動作し、より長いレイテンシに関連するより複雑な演算を実行する１つまたは複数の長レイテンシユニットは、前記メモリアクセスセグメントと並列に動作する。
【００１８】
必要に応じて、メモリアクセスセグメントより機能上後に位置する複数の機能ユニットには、好ましくは少なくとも一般的には、すなわち少なくともほとんどのこのようなユニットに関しては、より低いレイテンシを有する１つまたは複数の機能ユニットもある。
【００１９】
１実施形態では、この複数の機能ユニットは、いくつかのＡＬＵを含む。
【００２０】
別の補足的または代替的な実施形態では、少なくとも１つのユニットを含む追加のいくつかの長レイテンシユニットが、上記の１つまたは複数の長レイテンシユニットと並列に動作する。必要に応じて、パイプラインは、これにより、少なくともメモリアクセスセグメント中に（それと並列に）２つ以上のブランチまたはブランチ部分を含むことがあり、各ブランチは、メモリアクセス中に動作するように構成された専用の長レイテンシユニットを少なくとも１つ組み込んでいる。論理上は、これらの相互に並列なブランチは、メモリアクセスセグメントの前後の残りの機能ユニットと直列に位置することができる。
【００２１】
別の実施形態では、上記の含まれる長レイテンシユニットのうちの少なくとも２つ以上が、１つのユニットから別のユニットにデータを引き渡すことができる少なくとも１本のチェーンに連結（連鎖）される。連結された機能ユニットは、例えば入力データ（変数）に対して相互に異なる演算を実行するように構成することができる。
【００２２】
さらに別の実施形態では、上記の機能ユニットの少なくとも一部は、１つまたは複数の所定の（サブ）命令動作フィールドおよび命令または「命令語」中に与えられる関連する値を介して制御される。
【００２３】
さらに別の実施形態では、機能ユニットの変数（オペランド、被演算子）は、パイプラインの変数選択ステージで、命令（語）中に与えられる１つまたは複数の変数選択フィールド（値）に従って決定される。機能ユニットの変数は、同じチェーン内でその機能ユニットに接続されている以前の機能ユニットから引き継ぐこともできる。機能ユニット間の接続は、命令語によって制御されるいくつかのマルチプレクサによって可能にすることができる。
【００２４】
別の実施形態では、少なくとも１つの長レイテンシユニットは、除算、平方根、または特定用途向け演算を実行するように構成される。長レイテンシユニットは、汎用的な算術、または一般的には演算サポートを、パイプラインおよび当該のプロセッサアーキテクチャ全体に導入する際に（より従来的な）１つまたは複数のＡＬＵを補うことができる。
【００２５】
別の実施形態では、少なくとも１つの長レイテンシユニットは、内部でパイプライン化される。
【００２６】
本発明の有用性は、実施形態によって決まるいくつかの問題によるものである。基本的には、エミュレートされた共有メモリコンピュータにおける除算などの長レイテンシ演算は、通常は複数の実行ステップを必要とするが、それらの演算をシングルステップのマルチスレッド型実行で実行することを可能にする。パイプラインのメモリ待機セグメントは、実際には長レイテンシ演算を実施する論理とマージすることができるので、プログラマは、長レイテンシ演算がシングルステップで実行されるのを見ることができ、この実行により生じるレイテンシは、メモリアクセスによって生じる任意の場合のレイテンシに隠れる。こうして得られる性能向上面の利点は、例えばマルチコアプロセッサ型コンピュータおよびそれらのプログラミングの状況で明らかである。
【００２７】
「いくつかの」という表現は、本明細書では、１から始まり、例えば１、２、または３などまでの任意の正の整数を指している。
【００２８】
「複数の」という表現は、本明細書では、２から始まり、例えば２、３、または４などまでの任意の正の整数を指している。
【００２９】
「動作上」、「論理上」および「機能上」という用語は、本明細書では、特に「並列性」、「並列な要素」、「並列な機能」に関する表現に関しては、物理的な、または単なる物理的な並列性、すなわち要素の物理的に並列なレイアウトと区別するために、交換可能に使用されているものである。
【００３０】
本発明の様々な実施形態は、従属請求項に開示されている。
【００３１】
次に、添付の図面を参照して、本発明についてさらに詳細に説明する。
【図面の簡単な説明】
【００３２】
【図１】シリコンプラットフォーム上で共有メモリをエミュレートする実現可能なスケーラブルアーキテクチャを示すブロック図である。
【図２】基本的にＣＭＰ  ＥＳＭアーキテクチャである、実現可能なＥＳＭアーキテクチャを示す別の表現を示す図である。
【図３】ＭＣＲＣＷ  ＥＳＭプロセッサの実施形態を示すハイレベルブロック図およびパイプライン表現である。
【図４】本発明によるパイプラインアーキテクチャの実施形態を示す図である。
【図５】本発明によるパイプラインアーキテクチャの別の実施形態を示す図である。
【発明を実施するための形態】
【００３３】
図１から図３については、本明細書では、本発明の成り立ちに関する背景および過去のデータの説明に関連して既に考察した。
【００３４】
図４は、複数（Ｎ個）の長レイテンシユニット（ＬＬＵ）４０２ｂと、（通常レイテンシまたは低レイテンシの）ＡＬＵ４０２、４０２ｃなどのその他の機能ユニット（ＦＵ）とを備えたＥＳＭパイプラインアーキテクチャ４００を組み込んだ本発明の１実施形態を示す図である。これらのＡＬＵなどのその他の機能ユニットのうち、ユニット４０２は、メモリアクセスセグメント４１２、したがってＬＬＵ４０２ｂの動作の前に動作することができ、ユニット４０２ｃは、メモリアクセスセグメント４１２、したがってＬＬＵ４０２ｂの動作の前に動作することができる。
【００３５】
この図における機能ユニット４０２、４０２ｂおよび４０２ｃのレイアウトは単なる例示であり、他の実施形態では、それらの配置、数、および性質／レイテンシは、図示したものと異なっていてもよい。機能ユニット４０２、４０２ｂ、４０２ｃは、一般識別子Ａ（ＬＵ）およびＬＬＵと関連する一意識別子が与えられており、これらのユニット４０２、４０２ｂ、４０２ｃが、同じ一般タイプ（Ａ／ＬＬＵ）内でも構造および／または機能の面で相互に異なるものである可能性があるということを示している。ただし、ユニット４０２、４０２ｂ、４０２ｃのうちの少なくとも一部が、構造および／または動作の面で相互に類似していることもある。
【００３６】
ＩＦ４０８は、命令フェッチ論理を示し、ＭＥＭ４１２ａは、通常は１クロックサイクルだけ続く１つのメモリユニットステージを示し、ＯＳ４０６は、レジスタファイル読取り／書込みアクセスアクションを備える変数選択論理を示している。ＳＥＱ４１０は、シーケンサを示している。
【００３７】
一般に、変数は、パイプラインの開始時に、命令語中の１つまたは複数の対応する変数選択フィールドに従って担当の論理４０６によって選択される。変数は、いくつかのレジスタパイプを介して機能ユニットに引き渡すことができる。
【００３８】
既に述べたように、長レイテンシユニット４０２ｂは、例えば除算および特定用途向け演算など、さらに複雑な演算を実行するように設計されていることもあり、場合によっては、メモリユニット待機セグメントと並列に存在する１つまたは複数のユニットチェーンとして構成し、ＡＬＵチェーンまたはパイプライン構造４１４の全体の真ん中に接続することもできる。
【００３９】
図４に示すように、少なくともいくつかの長レイテンシユニット４０２ｂを、複数のメモリ（待機）ステージ４１２ａを組み込んだメモリアクセスセグメント４１２と機能的かつ時間的に並列に動作することにより、長レイテンシ演算の実行時間を、単一のＥＳＭステップまでスケールダウンすることができる。ＬＬＵ４０２ｂは、それらのタスクをメモリアクセス動作と同時に実行することができるので有利である。
【００４０】
１つまたは複数のＬＬＵを必要とする命令実行プロセスをさらに詳細に考察すると、ＬＬＵ４０２ｂは、ＥＳＭの機能ユニットの残りの部分と同じように、命令語中の１つまたは複数の専用フィールドで制御されることが好ましい。これらの演算の変数は、パイプラインの変数選択（ＯＳ）ステージ４０６で選択してもよいし、あるいは、チェーン中でメモリ待機セグメント４１２より前に存在するＡＬＵ４０２が生成した結果から引き継ぐこともできる。
【００４１】
次いで、長レイテンシ演算の実行時間が、ＬＬＵ４０２ｂの配置および／またはそれらの接続によって指定される順序で実行される。
【００４２】
一般に、ＬＬＵ、または例えばＡＬＵ４０２および４０２ｃとＬＬＵ４０２ｂの組合せなど、２つ以上の機能ユニット４０２、４０２ｂ、４０２ｃ（相互に類似している、または異なる）を、１つのユニットから別のユニットにデータを引き渡すことができるように連結することができる。連結された機能ユニットは、入力データ（変数）に対して相互に異なる演算を実行するように構成することができる。
【００４３】
長レイテンシ演算の結果は、例えば、ＡＬＵ４０２ｃの残りまたはシーケンサ４１０のための変数として使用することができる。フルスループットを得るためには、ＬＬＵ４０２ｂは、内部でパイプライン化されるものとする。
【００４４】
その結果として、プログラマは、１実行ステップの間に、最大でＮ個の長レイテンシ演算を適用することができる。これらの演算は、相応にユニットチェーン状に配置されている場合には、互いに依存することもできる。特筆すべきは、ここで提案する解決策では、一般にプロセッサパイプラインが長くなることがない点である。もちろん、実行されるメモリ動作は、実行ステップ内でその間に実行される長レイテンシ演算から独立しているものとする。
【００４５】
ＬＬＵ４０２ｂおよびＡＬＵ４０２、４０２ｃなどの機能ユニットを表す図示の要素の様々な物理的寸法は、適用されるＬＬＵ４０２ｂおよび／またはその他の機能ユニット４０２、４０２ｃの複雑さまたはレイテンシも相互に様々である可能性があることを示している。枠が占める面積／枠の縦方向の長さは、対応するユニットの実行時間またはレイテンシを意味している。すなわち、より短いレイテンシに関連するＡＬＵ４０２、４０２ｃは、ＬＬＵ４０２ｂより短い／小さい枠として示してある。
【００４６】
いくつかの実施形態では、ＬＬＵ４０２ｂなどいくつかの機能ユニットは、（実行フローを考慮して）より複雑な／より長いレイテンシを生じる１つまたは複数のユニットが、複雑さが少ない／レイテンシが短い１つまたは複数のユニットより後に動作するように、パイプラインに導入することができる。また、特にメモリアクセスセグメント４１２については、その１つまたは複数のより複雑なユニットは、例えば、より単純なユニットの後に続くセグメントの末端部分と実質的に並列に配置することができる。
【００４７】
図５は、本発明によるパイプラインアーキテクチャ５００の別の実施形態を示す図である。
【００４８】
本実施形態でも、ＩＦ４０８は、命令フェッチ論理を示し、ＭＥＭ４１２ａは、通常は１クロックサイクルだけ続く１つのメモリユニットステージを示し、ＯＳ４０６は、レジスタファイル読取り／書込みアクセスアクションを備える変数選択論理を示し、ＳＥＱ４１０は、シーケンサを示している。
【００４９】
本実施形態では、パイプラインは、関連する長レイテンシ演算をそれぞれ実行する長レイテンシユニット（ＬＬＵ）５０２ａ、５０２ｂの別個の機能的および論理的に並列なブランチ５００ａ、５００ｂを含む。ブランチ５０２ａ、５０２ｂは、ＬＬＵを１つしか含まないことも複数含むこともあり、必要に応じて、そのブランチに与えられるデータに対して所定の算術演算および論理演算などの演算を実行する複数のＡＬＵなど１つまたは複数のその他の機能ユニット（ＦＵ）を含むこともある。ブランチは、限られた長さを有することができ、１つまたは複数の共通の共有パイプラインセグメントがその前にある、かつ／またはその後に続くことがある。
【００５０】
パイプラインの並列ブランチ５００ａおよび５００ｂは、メモリアクセスセグメント４１２と並列に存在するだけであってもよいし（図示の場合）、メモリアクセスセグメント４１２を超えて延びていてもよく、したがって、メモリアクセスセグメント４１２の前または後にある可能性もある。一方、いくつかの実施形態では、これらのブランチは、メモリアクセスセグメント４１２より短いパイプラインセグメントを画定することもある。したがって、並列ブランチ５００ａ内に位置するＬＬＵなどの実際の機能ユニットは、ＬＬＵ５０２ａ、５０２ｂがパイプラインに対して完全に並列に示されているこの図に示すように、相互に実質的に（機能的／時間的に）並列に構成することもできる。
【００５１】
例えば、個々の機能ユニットそれぞれのレイテンシまたは複雑さは、この図でも、対応するブロックのサイズまたは長さで示してある。図示の実施形態では、ブランチは、複雑さの同じ（同じ、または同様のレイテンシを生じる）ＬＬＵ５０２を同数だけ含んでいるが、その他の様々な可能な実施形態では、ブランチ内および／またはブランチ間のいくつかのＬＬＵは、相互に異なる複雑さ／レイテンシを有するものであってもよいことを、当業者なら理解するであろう。いくつかの実施形態では、これらのブランチ内に位置するＬＬＵは、これらの並列なブランチによって生じるレイテンシが実質的に等しく、かつ／またはメモリアクセスセグメント４１２の全持続時間内に収まるように選択される。いくつかの実施形態では、レイテンシの長いＬＬＵは、パイプライン内で、レイテンシの短いＬＬＵの動作より後に動作する。
【００５２】
各ブランチ５００ａ、５００ｂに配置された２つ以上のＬＬＵ５０２ａ、５０２ｂ、必要に応じて全て５０２ａ、５０２ｂは、上述した原理に従って連結されて、それらの間でデータを引き渡したりすることができる。連結によって、利用可能な仮想命令レベルの並列化を活用することにより、得られる性能を高めることができる。
【００５３】
一般に、機能ユニット４０２、４０２ｂ、４０２ｃ、５０２ａ、５０２ｂは、例えばＶＬＩＷ型のサブ命令動作フィールドによって制御することができる。１つの機能ユニットによって目標の演算が実行された後、その結果は、例えば現在の命令語によって制御されるマルチプレクサなどの要素を介して、それぞれのチェーン内でそのユニットより後に位置する１つまたは複数の機能ユニットが利用できるようにすることができる。
【００５４】
最後に、当業者なら、本開示および一般的知識に基づいて、個々の特定のユースケースで、必要な修正、削除、および追加があればそれらを行って、添付の特許請求の範囲によって定義される本発明の範囲を実施するために与えた教示を適用することができる。一般に、本明細書に記載する様々な原理は、本明細書で採用したＥＳＭの定義に留まらない様々なプロセッサアーキテクチャでも、少なくとも選択的には利用することができることは、当業者なら容易に理解するであろう。
【符号の説明】
【００５５】
１００  シリコンプラットフォーム上に共有メモリをエミュレートするスケーラブルなアーキテクチャ
１０２  プロセッサ
１０４  命令メモリモジュール
１０６  スクラッチパッド／ステップキャッシュユニット
１０８  高帯域幅同期ネットワーク
１０８Ｂ  スイッチ
１１０  メモリユニット
１１２  データメモリ
１１２Ｂ  メモリユニット
２００  ＥＳＭ  ＣＭＰアーキテクチャ
２０６Ｂ  スクラッチパッド
３００  ＭＣＲＣＷ  ＥＳＭプロセッサ
３０２  ＡＬＵ
３０４  ＭＥＭ
３０６  ＯＳ
３０８  ＩＦ
３１０  ＳＥＱ
４００  ＥＳＭパイプラインアーキテクチャ
４０２  ＡＬＵ
４０２ｂ  長レイテンシユニット
４０２ｃ  ＡＬＵ
４０６  ＯＳ
４０８  ＩＦ
４１０  ＳＥＱ
４１２  メモリアクセスセグメント
４１２ａ  ＭＥＭ
５００  パイプラインアーキテクチャ
５００ａ  ブランチ
５００ｂ  ブランチ
５０２ａ  長レイテンシユニット
５０２ｂ  長レイテンシユニット
【図１】
0006568859.tif 000002
【図２】
0006568859.tif 000003
【図３】
0006568859.tif 000004
【図４】
0006568859.tif 000005
【図５】
0006568859.tif 000006