IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ フローコンピューティング オーユーの特許一覧

特許7551996TCF対応プロセッサのためのメモリアクセスを処理する方法および装置
<>
  • 特許-TCF対応プロセッサのためのメモリアクセスを処理する方法および装置 図1
  • 特許-TCF対応プロセッサのためのメモリアクセスを処理する方法および装置 図2
  • 特許-TCF対応プロセッサのためのメモリアクセスを処理する方法および装置 図3
  • 特許-TCF対応プロセッサのためのメモリアクセスを処理する方法および装置 図4
  • 特許-TCF対応プロセッサのためのメモリアクセスを処理する方法および装置 図5
  • 特許-TCF対応プロセッサのためのメモリアクセスを処理する方法および装置 図6
  • 特許-TCF対応プロセッサのためのメモリアクセスを処理する方法および装置 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】TCF対応プロセッサのためのメモリアクセスを処理する方法および装置
(51)【国際特許分類】
   G06F 9/38 20180101AFI20240910BHJP
   G06F 15/173 20060101ALI20240910BHJP
【FI】
G06F9/38 370X
G06F15/173 665D
【請求項の数】 13
(21)【出願番号】P 2021536026
(86)(22)【出願日】2019-12-20
(65)【公表番号】
(43)【公表日】2022-02-18
(86)【国際出願番号】 EP2019086516
(87)【国際公開番号】W WO2020127868
(87)【国際公開日】2020-06-25
【審査請求日】2022-11-15
(31)【優先権主張番号】18215559.8
(32)【優先日】2018-12-21
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】524306187
【氏名又は名称】フローコンピューティング オーユー
【氏名又は名称原語表記】Flow-computing Oy
【住所又は居所原語表記】Maria01, Lapinlahdenkatu 16, 00180 Helsinki, Finland
(74)【代理人】
【識別番号】100127188
【弁理士】
【氏名又は名称】川守田 光紀
(72)【発明者】
【氏名】フォーセル マルッティ
(72)【発明者】
【氏名】ロイヴァイネン ユッシ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特表2016-534433(JP,A)
【文献】国際公開第2015/059362(WO,A1)
【文献】欧州特許出願公開第02806361(EP,A1)
【文献】FORSELL, Martti et al.,Outline of a Thick Control Flow Architecture,2016 International Symposium on Computer Architecture and High Performance Computing Workshops (SBAC-PADW),米国,IEEE,2016年10月28日,pages 1-6
【文献】小池 敦 他,GPUのための並列計算モデル,電子情報通信学会技術研究報告,一般社団法人電子情報通信学会,2012年10月24日,第112巻 第272号,第53頁-第60頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30-9/38
G06F 15/173
(57)【特許請求の範囲】
【請求項1】
TCF対応プロセッサのための共有データメモリアクセスを処理する装置であって、前記装置は、ローカルメモリ(602)および関連する制御ロジックを備える少なくとも柔軟なレイテンシ処理ユニット(601)を備え、前記ローカルメモリは、共有データメモリアクセス関連データを格納するために提供され、前記装置は、少なくとも1つの命令を含む少なくとも1つのTCFを受信するように構成され、前記少なくとも1つの命令は、少なくとも1つのファイバに関連付けられ、前記柔軟なレイテンシ処理ユニットは、 共有データメモリアクセスが前記少なくとも1つの命令によって要求されるかどうか判定することと、
共有データメモリアクセスが要求される場合、共有データメモリアクセス要求を送信することと、
柔軟なレイテンシ処理ユニットを介して、前記共有データメモリアクセス要求への応答が受信されるかどうか、クロックサイクル毎に一度監視することと、
応答が受信されるまで、前記命令の実行の継続を一時停止することと、
共有データメモリアクセスに関連付けられたクロックサイクルの遅延が、実際の要求された共有データメモリアク セスレイテンシによって動的に判定され、少なくとも1クロックサイクルに相当するように、前記応答を受信した後で、前記命令の実行を継続することと、
を行うように構成される、装置
【請求項2】
前記共有データメモリアクセスは先入れ先出しの原則を用いて実装される、請求項1に記載の装置
【請求項3】
前記ローカルメモリ内の複数の命令に関するデータを格納し、もしある場合は、前記応答を受信後、前記命令の受信の順序を考慮して先入れ先出しの原則に従って実行される、各命令の実行を継続するように構成される、請求項2に記載の装置
【請求項4】
前記装置は、前記ローカルメモリ内の前記少なくとも1つの命令に関するデータを格納するように追加で構成され、前記少なくとも1つの命令に関する前記データは、前記命令を定義するデータおよび/または共有データメモリアクセスを通じてフェッチされる前記命令によって参照されるデータを備える、請求項1~3のいずれか一項に記載の装置
【請求項5】
前記TCFは、複数のファイバを備え、各ファイバは、複数の命令を含み、共有データメモリアクセス要求は、前記柔軟なレイテンシ処理ユニットを介して送信され、一連の命令の実行は、それぞれの命令に対するすべてのファイバに関連するすべての共有データメモリ参照が受信されるまで、同様のシーケンスを実行しているすべてのファイバを一時停止する、請求項1~4のいずれか一項に記載の装置
【請求項6】
前記制御ロジックは、前記ローカルメモリの前に機能的に装置された送信ロジック(604)を備え、前記送信ロジックは、共有データメモリがビジーである、および/または前記ローカルメモリが、いっぱいである場合、プロセッサパイプラインの少なくとも一部を一時停止するように構成される、請求項1~5のいずれか一項に記載の装置
【請求項7】
前記プロセッサパイプラインについては、前記送信ロジックまでもが、一時停止される、請求項6に記載の装置
【請求項8】
前記制御ロジックは、前記ローカルメモリの後に機能的に装置された受信ロジック(606)を備え、前記受信ロジックは、前記応答を受信するまで、プロセッサパイプラインの少なくとも一部を一時停止するように構成される、請求項1~7のいずれか一項に記載の装置
【請求項9】
前記柔軟なレイテンシ処理ユニットに関連付けられた読み出しユニットおよび/または前記受信ロジックに続く前記プロセッサパイプラインが、一時停止されている、請求項8に記載の装置
【請求項10】
前記装置は、前記柔軟なレイテンシ処理ユニットの前に論理的に装置された1つ以上の算術論理ユニット(ALU)からデータを受信するように構成される、請求項1~9のいずれか一項に記載の装置
【請求項11】
前記装置は、前記柔軟なレイテンシ処理ユニットの後に論理的に装置された1つ以上の算術論理ユニット(ALU)へデータを送信するように構成される、請求項1~10のいずれか一項に記載の装置
【請求項12】
2つ以上のALUが、それらの間でデータを渡すために連鎖されている、請求項10または11に記載の装置
【請求項13】
TCF対応プロセッサ内で共有データメモリアクセスを処理する方法であって、 少なくとも1つの命令を受信することであって、前記少なくとも1つの命令は、少なくとも1つのファイバに関連付けられた、受信することと、
共有データメモリアクセスが、前記少なくとも1つの命令によって要求されるかどうか判定することと、
共有データメモリアクセスが要求される場合、共有データメモリアクセス要求を送信することと、
柔軟なレイテンシ処理ユニット(601)を介して、前記共有データメモリアクセス要求への応答が受信されるかどうか、クロックサイクル毎に一度監視することと、
応答が受信されるまで、前記命令の実行の継続を一時停止することと、
前記共有データメモリアクセスに関連付けられたクロックサイクルの遅延が、実際の要求された共有データメモリアクセスレイテンシによって動的に判定され、少なくとも1クロックサイクルに相当するように、前記応答を受信した後で、前記命令の実行を継続することと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的なコンピュータ技術に関する。詳細には、本発明は、プロセッサのメモリアクセスに関する。
【背景技術】
【0002】
マルチスレッド計算を伴うソフトウェアに関連して、多数の並列スレッド間の効率的な連携の組織化は、現在のモデルの制限により、基礎的問題であった。並列の厚い制御フロー(parallel thick control flows)(TCF)の概念は、2011 International Conference on Parallel and Distributed Processing Techniques
and Applications(PDPTA'11),Las Vegas,USAの会議録540~546ページ、2011で、V.Leppanen、M.Forsell、およびJ-M.Makelaによる、「Thick Control Flows: Introduction and Prospects」において解決策として紹介された。厚い制御フロー(スレッドに類似の、ファイバの数の点で)が、プログラムの文または式を実行するとき、ファイバのすべては、同じプログラム要素を同期式に並列に実行すると考えられる。厚い制御フローの概念により、プログラマが、膨大な量の並列スレッドではなく、少数の並列の厚い制御フローの連携に集中することができる。
【0003】
TCFの概念は、有利なことに、プログラマによって利用され得るが、理論的モデルの柔軟性を支持し、ソフトウェアとハードウェア両方の冗長性を排除し、命令メモリシステムを簡素化するので、追加で、少なくともTCFについていくつかの実装の選択を伴い、従来のスレッドの概念に取って代わる概念が、プロセッサコアにとって有用であり得ることを提案する。
【0004】
TCFモデル用に書かれたプログラムを実行するためのアーキテクチャ、厚い制御フロープロセッサアーキテクチャ(TPA)は、2016 International Symposium on Computer Architecture and High Performance Computing Workshops(SBAC-PADW),Los Angeles,CA,2016,pp.1~6の、M.Forsell,J.RoivainenおよびV.Leppanenによる、「Outline
of a Thick Control Flow Architecture」において前に提案されている。
【0005】
一般的に、ほとんどのプロセッサアーキテクチャは、別個の命令フローからのPの命令が、Pの処理要素で実行される、複数命令列(MIMD)モデルを利用している。これは、自己類似性を含むコードのリソースを浪費している恐れがある。この種のコードに対するより最適な解決策は、Pのデータ要素に対する同じ命令が、Pの処理ユニットで実行される、単一命令多重データ処理(SIMD)を使用することであろう。SIMDは、コスト効率がよく、プログラムが容易で、その実装は低消費電力を特徴とするが、制御された並列処理およびスレッド間の異質を伴うコードを効率的に実行しない。別の問題面は、MIMDとSIMDのアーキテクチャの実装において、ソフトウェアスレッドの数が支持された数を超えるときに、ハードウェアスレッドの数が固定され、負荷をもたらすという事実によって生じる。
【0006】
均質、異質、スレッド数に対して異なる特性を有するコード部に対して適合し、それらを効率的に実行できるように、同じ制御経路を経由して進む均質なスレッド(または、規則的な並行プログラミングとはより無関係の「スレッド」と区別するためTCFに関連して呼ばれ得る「ファイバ」)は、TCFと呼ばれるエンティティに組み込まれ、SIMD型最適化を利用する可能性として導入され、必要な場合、MIMDモデルの多重ストリームを有する可能性を保持する。TCFモデルは、固定された数のスレッドを提供しないが、アプリケーションの必要に応じて変動し得る所定の厚さを有する複数の制御フローを提供する。
【0007】
並列計算に影響を及ぼす別の問題のセットは、総合通信の配置に関係する。共有メモリアーキテクチャ(SMA)では、データとプログラムのパーティション分割は、共有メモリへの複数スレッドによる処理を必要とするデータを配置し、プロセッサにより独立してプログラムを分割することによって通常実行されるので、処理が常にローカルで発生し、プログラマが、それに従ってデータを並べ替えることを担当するメッセージパッシング(MPA)アーキテクチャに比較してプログラミングをより簡単にする。ほとんどのSMAは、キャッシュ整合性(したがって、レイテンシ耐性)および同期性の維持を非常に高価にする、複数の相互接続したプロセッサキャッシュペアから成る分散型共有メモリアーキテクチャを使用する。これは、通信集中問題でそれらの性能を破壊さえする場合がある。
【0008】
例えば、上記問題に取り組むため、エミュレートされた共有メモリ(ESM)、または共有メモリエミュレートアーキテクチャが導入されている。それらは、一様に共通かつ同期的にアクセス可能な共有メモリに高スループット相互通信ネットワークを介して接続される1式のマルチスレッドプロセッサを組み込む。メモリシステムのレイテンシは、進行中のメモリ参照を重ねることにより隠され、特別低コスト同期化メカニズムが、機械の命令レベルで同期性を保証して確立される。ESMシステムは、実際のハードウェアアーキテクチャは物理的に分散したメモリを備える場合でも、ユーザに理想的な共有メモリの認識を与える。理論的な見地から、これらのアーキテクチャは、その単純さおよび表現度に起因して、一般に計算問題の固有の並列処理ならびに並列アルゴリズムを実行する性能およびコストを記述し分析するモデルとして使用される抽象的な並列ランダムアクセス機械(PRAM)をエミュレートすることを試す。PRAMモデルは、一般に、1式のプロセッサに接続される同じクロックかつ均一の単一ステップのアクセス可能な共有メモリの下で動作する1式のプロセッサを指す。
【0009】
したがって、ESMは、機械命令の実行、効率的レイテンシ隠蔽、および十分な帯域幅における暗黙の同調性を生み、非常にランダムで同時発生するアクセス作業負荷であってもすべてのメモリ参照をルート決めするので、チップマルチプロセッサ(CMP)のプログラム性および性能のスケーラビリティの懸念に対処する実用的技術である。同期の実行は、各グローバルメモリアクセスの後、明確に、プログラマが、実行スレッドを同期する必要がないが、ハードウェアに依存して、それを自動的に処理することができるので、より容易にプログラミングを作成するように考慮される一方で、例えば、MPAプログラマは、通信を明確に規定すること、サブタスクを同期すること、およびMPAをプログラムしにくくしているスレッド間でデータを記載するおよびパーティション分割をプログラムすることを担当する。共有メモリエミュレーションに付与されるレイテンシ隠蔽は、高スループット計算スキームを利用し、他のスレッドは、スレッドがグローバル共有メモリを参照する間に実行される。スループット計算スキームは、利用可能なスレッドレベル並列処理から抽出された並列性緩みを使用するので、スヌーピングまたはディレクトリベースのキャッシュコヒーレンスメカニズムに依存し、したがって、制限された帯域幅またはディレクトリアクセスの遅延および大量のコヒーレンス維持トラフィックに悩む従来の対称マルチプロセッサおよび不均一メモリアクセス(NUMA)と対照的に、強化されたスケーラビリティを提供するように考慮される。
【0010】
TCFモデルは、ESMおよび実装プロセッサアーキテクチャ、すなわち、TCF対応プロセッサ、例えば、TPAにリンクされ得る。これに対して必要な解決策は、従来技術では高レベルで概説されるが、実装の低レベルの詳細は説明されてない。
【0011】
共有メモリレイテンシ補正について、従来技術は、メモリ応答待機パイプラインセグメントを特徴とする。この解決策は、すべての種類の作業負荷に対して固定されたセグメント長を有する。セグメントの長さは、最悪の場合の状況の近くに応じて、設計時間で選択される。この種の解決策は、特に、低メモリ活動性、仕切られた、または場所最適化パターンで実行速度を落とす。
【発明の概要】
【0012】
本発明の目的は、既知の従来技術に関する問題の少なくともいくつかを軽くすることである。本発明の目的は、独立請求項の特徴によって達成され得る。本発明の一実施形態は、TCF対応プロセッサ(TCF-aware processor)のための共有データメモリアクセスを処理する装置を提供する。装置は、ローカルメモリおよび関連する制御ロジックを備える少なくとも柔軟なレイテンシ処理ユニットを備え、該ローカルメモリは、共有データメモリアクセス関連のデータを格納するために提供される。装置は、少なくとも1つの命令を備える少なくとも1つのTCFを受信するように構成され、少なくとも1つの命令は、少なくとも1つのファイバに関連付けられ、柔軟なレイテンシ処理ユニットは、共有データメモリアクセスが、少なくとも1つの命令によって要求されるかどうかを判定するように構成され、共有データメモリアクセスが要求される場合、共有データメモリアクセス要求を柔軟なレイテンシ処理ユニットを介して送信し、本質的に連続して監視し、共有データメモリアクセス要求に対する応答を受信した場合、応答を受信するまで命令の継続した実行を一時停止し、共有データメモリアクセスに関連付けられた遅延が、実際の要求された共有データメモリアクセスレイテンシによって動的に判定されるように応答を受信した後、命令の実行を継続する。
【0013】
方法はまた、独立請求項14に従って提供される。
【0014】
本発明の様々な実施形態の有用性を考慮すると、TCF対応プロセッサの(メモリ読み取り動作などの)共有メモリアクセスに対する装置および方法は、現在の代替品に比較して、より良好な性能、簡単なプログラム可能性、およびより良好なコスト効率を提供し得るTCF対応プロセッサの有用な部分を提供することができる。
【0015】
柔軟なレイテンシ処理ユニットは、ローカルメモリおよび制御ロジックを備える機能エンティティを検討され得る。ローカルメモリおよび制御ロジックは、別個の場所に常駐し得る別個の物理的エンティティとして実装され得るか、または共通の物理エンティティとして実装され得る。
【0016】
柔軟なレイテンシ処理ユニットのローカルメモリは、柔軟なレイテンシ処理ユニットによって少なくとも論理的に利用され得るデータメモリを備えてもよく、ローカルメモリは、複数の命令に関するデータを格納することができる。ローカルメモリは、専用メモリであってもよく、またはハードウェア、例えば、制御ロジックを実行するために使用できる、チップなどの何か他の要素に組み込まれてもよい。
【0017】
少なくとも1つの命令は、本発明の実施形態による装置によって受信されてもよく、共有データメモリアクセスが、要求されるかどうか判定することが、1つ以上の識別子、オペランド、命令語、および/または演算コードあるいは当業者には熟知であり得る何かの他の適切な方法を介する認識によって実行されてもよい。
【0018】
柔軟なレイテンシ処理ユニットは、本明細書では、柔軟なレイテンシ補正ユニット(FLCU)と呼ばれてもよい。TCF対応プロセッサという用語は、TCFモデルを実装するすべてのプロセッサおよびInternational Journal of Networking and Computing 3、1(2013)、98~115でのM.ForsellおよびV.Leppanenによる「An Extended PRAM-NUMA Model of Computation for TCF Programming」の論文に記載されたような(ESM、構成可能なESM(CESM)およびベクトル/SIMDを含むがそれに限定されない)その特別なケースを指し、それは、同様のレイテンシ補正メカニズムを使用する。したがって、言い換えると、本発明は、TCF対応プロセッサという用語によって包含される、例えば、ESM、構成可能なESM、およびベクトル/SIMDプロセッサのためのメモリアクセスも処理する方法を提供することができる。
【0019】
いくつかの実施形態では、FLCUは、パイプラインロジックによって制御される先入れ先出し(FIFO)型ローカルメモリを備えるものとして実装されてもよい。ここで、FIFO型バッファリングを利用して、実装することが容易である、および/またはシリコン面領域に関するより小さい要求を持つが、いまだ高性能を達成するなど、(他のバッファリング技術に比べて)ことによると有利さをもたらすことができる。メモリ参照結果が、任意の順で読み取られ得るものなど、他のバッファリング技術を用いると、バッファリングは、より複雑である場合があり、ことによると、例えば、2つの層を有するアドレス表の使用は、正しいバッファデータを見つけることができるように、順番に使用する必要がある。より複雑なロジックはまた、受信されたメモリ参照が、対応するメモリ参照要求とは異なる順序で実行できる、またはできないことによるその時点で、すべてのリスト化されてないルールが送信されていたことを考慮する他のバッファリングタイプで実装されなければならない。別の態様では、FIFOバッファリングは、パイプラインの残りの部分の間、ファイバの順序を維持することができるので、自然に好都合であり得る。
【0020】
いくつかの他の実施形態では、ケースシナリオを使用するが、FIFO以外のいくつかの他のバッファリング技術が使用されてもよい。代替の実施形態では、非FIFO型バッファは、例えば、より速い実行を介して、より高度な性能を達成するなど、いくつかの利点を提供することができる。
【0021】
多くの利点は、完了したメモリ参照のレイテンシにしたがって、FLCUローカルメモリ(ここでは、ローカルメモリは、バッファと呼ばれもする)から読み出すことによって達成され得る。命令が、共有メモリ読み出しサブ命令を含まない場合、完了した共有メモリ参照を待つ必要はなく、本質的に連続してFLCUローカルメモリを読み出すことによって、好ましくはクロックサイクル毎に、パイプラインの次の段階まで、実行は継続され得る。結果として、全体的な性能は、改善され得る。
【0022】
本発明の実施形態では、命令がメモリユニット/FLCUまで到達すると、可能な参照を共有データメモリシステムに送信できる。この後、可能な完了した共有データメモリ参照などの命令(命令を定義するデータ)および関連するデータは、FLCUローカルメモリ(FLCUバッファまたはFIFO型バッファリングの場合、FLCU、FIFOバッファと呼ばれてもよい)に書き込まれてもよい。FLCUローカルメモリの他の側では、FLCUローカルメモリから利用可能な最上の命令およびデータは、次の2つのケースにおいて読み込まれてもよい。
1.共有データメモリシステムから要求された応答が到着した。
2.共有データメモリシステムから応答が要求されない。
【0023】
既存の固定メモリ応答待機パイプラインセグメントと比較して、本発明は、上述の条件が、定義済み遅延を待つ特定の必要なしに、可能にするとすぐ、実行の継続を可能にし得る。
【0024】
上記に関連して、装置の一実施形態は、共有データメモリアクセス関連のデータを格納するローカルメモリを備える柔軟なレイテンシ処理ユニット(FLCU)を備え得る。追加で、その装置は、ローカルメモリにおいて少なくとも1つの受信した命令に関するデータを格納するように構成されてもよい。少なくとも1つの命令に関する格納されたデータは、命令を定義するデータおよび/または共有データメモリアクセスを介してことによるとフェッチされるべき命令によって参照されるデータを備えてもよい。
【0025】
一実施形態では、装置は、ローカルメモリにファイバを格納するように構成され得る。すでに開示されたように、命令を定義するデータは、共有データメモリシステムに可能な参照を送信した後、ローカルメモリ(「FLCUローカルメモリ」に書き込まれる)に格納されてもよく、一方で、それらはまた、メモリ参照に送信されると同時に、またはメモリ参照に送信する前に、格納されてもよい。完了したメモリ参照は、命令を定義するデータが格納されると同時に、またはそれとは異なるときに、ローカルメモリに格納されてもよい。
【0026】
本発明の実施形態を通して、ステップ(命令の実行に関連した、好ましくは複数のファイバに関連する)は、動的に長さを変動して、実行されてもよい。
【0027】
低活動性および場所最適化アクセスパターンに対してレイテンシを低く維持する能力により、本発明は、潜在的に性能を向上し、サブ機械へのプロセッサのパーティション分割を単純化する。
【0028】
パーティション分割が影響を及ぼし得るケースでは、サブ機械は、柔軟性に加えて、より小さくてもよい。
【0029】
既存の固定メモリ応答待機パイプラインセグメントと比較して、本発明は、条件が、定義済み遅延を待つ特定の必要なしに、可能にするとすぐ、実行の継続を可能にする。
【0030】
本発明を通して可能にされるメモリアクセス方法および装置の実施形態を通して、柔軟/変動する待機または遅延を有するメモリユニットが提供されてもよいが、命令の順序は変更されない。
【0031】
本発明の実施形態を通して、ファイバ実行命令は、メモリ参照が受信されるとすぐ、またはメモリ参照が受信された少なくとも次のクロックサイクルで、本質的にパイプラインに進むことができる。到着するメモリ参照を待つことに対するレイテンシまたは遅延はまた、共有メモリを形成する参照を要求されない場合、実質的に存在しなくてもよい。
【0032】
したがって、本発明は、より速い実行およびことによるとエネルギー使用の減少をもたらす可能性がある。
【0033】
一実施形態では、装置は、柔軟なレイテンシ処理ユニットで構成されてもよく、一方、他の実施形態では装置はまた他のエンティティを備えてもよい。例えば、装置は、1つ以上のプロセッサ、プロセッサコア、キャッシュ、スクラッチパッド、パイプライン構築、および/またはALU(算術論理ユニット)を含んでもよく、柔軟なレイテンシ処理ユニットの前または後に論理的に配置されてもよい。
【0034】
一実施形態では、その装置は、プロセッサ内に備えられ得る、または別個のユニットとして実装され得る、メモリユニットとして実現されてもよい。例えば、いくつかのケースでは、装置は、プロセッサとして同じ集積チップ上に組織されてもよい。
【0035】
本文献で提示される例示的な実施形態は、添付の特許請求の範囲の適用に対して制限を提示するように解釈されるものではない。「備える(to comprise)」という動詞は、本文献では、列挙されていない特徴の存在を排除しない非限定的として使用される。従属請求項に列挙された特徴は、別段の指示がない限り、相互に自由に組み合わすことができる。
【0036】
本発明の特性として考えられる新規の特徴は、具体的には添付の特許請求の範囲に記載される。しかし、本発明自体は、その構築およびその演算方法に関して、その追加の目的および利点と一緒に、添付の図面とともに読むときに、特定の例示的な実施形態の以下の説明から最もよく理解されるであろう。
【0037】
装置の様々な実施形態に関する前に提示された考察は、当業者には理解されるように、必要な変更を加えて、および逆も可能である、本方法の実施形態に柔軟に適用され得る。
【0038】
次に、添付の図面に従って、例示的な実施形態を参照して、本発明をより詳細に説明する。
【図面の簡単な説明】
【0039】
図1】シリコンプラットフォーム上に共有メモリをエミュレートするための実行可能なスケーラブルなアーキテクチャを示す。
図2】実行可能なESMアーキテクチャ、本質的にCMP、ESMアーキテクチャの別の表現である。
図3】TCFを有する機能を実行する一例を示す。
図4】TPAの全体的構造を示す。
図5】メモリからデータを取得する方法を示す。
図6】本発明の一実施形態によるメモリからデータを取得する好ましい方法を示す。
図7】本発明の一実施形態によるメモリからデータを取得する方法の1つの他の例示的な図を示す。
【発明を実施するための形態】
【0040】
最初に、ESMアーキテクチャを概説する。図1では、シリコンプラットフォーム上に共有メモリをエミュレートするためのスケーラブルなアーキテクチャの高レベルの例示が示される。それは、物理的に分散されるが、論理的に共有された(データ)メモリM1、M2、M3、…、Mp112に物理的にスケーラブルな高帯域幅相互接続ネットワーク108に接続された1式のプロセッサ(コア)P1、P2、P3、…、Pp102を備える。データメモリ112に接続するアクティブメモリユニット110は、メモリ参照を処理するために利用されるメモリ制御ロジックユニットとみなされてもよい。例えば、アクティブメモリユニット110は、複数のメモリ参照が、例えば、マルチ(プレフィックス)演算の間、同じメモリ位置に向けられるケースに関連した計算を管理するように配置される。命令メモリモジュールI1、I2、I3、…、Ip104は、各プロセッサ102にプログラムコードを搬送するように構成される。分散されたメモリベースの実装によって効率的に共有メモリをエミュレートするため、プロセッサ102は、Tp段階の周期的な、交互に配置されたスレッド間パイプライン(Tp≧ネットワークの平均レイテンシ)を利用してマルチスレッド化される。PRAMモデルは、パイプライン内の完全周期が通常単一PRAMステップに対応するようにアーキテクチャにリンクされる。マルチスレッド実行のステップの間(全体的なパイプライン、すなわち、実際の実行段階を含むすべてのパイプラインの段階、に関連する)、CMPの各プロセッサの各スレッドは、多くて1つの共有メモリ参照サブ命令を含む1つの命令を実行する。したがって、ステップは、複数回、少なくともTp+1クロックサイクル続く。
【0041】
図示のアーキテクチャでは、ステップキャッシュは、データがマルチスレッド実行の継続ステップの終わりまでだけ有効である、一般に連想メモリバッファである。ステップキャッシュの同時アクセスへの主な寄与は、それらが段階的に、各参照メモリ一の第1の参照以外のすべてをフィルタを通して取り除くことである。これにより、TpからPまで下がった位置毎の要求数を低減して、Tp≧Pと仮定する単一ポートのメモリモジュールでそれらを順次処理できるようにする。スクラッチパッドは、メモリアクセスデータを格納して、ステップキャッシュならびにマルチ演算の実際の内部プロセッサおよびプロセッサ間の計算を処理する最小オンコアおよびオフコアALU(算術論理ユニット)の助けを借りてマルチ演算の実施に限定されたステップキャッシュの連想性を維持する、アドレス指定可能メモリバッファである。スクラッチパッドは、ステップキャッシュに結合されて、いわゆる、スクラッチパッドステップキャッシュユニットS1、S2、S3、…、Sp106を確立してもよい。
【0042】
概説した解決策の1つの基礎的な考えは、実際、交互に配置された方法で効率的に実行され、ネットワークのレイテンシを隠蔽している1式のスレッドを備える各プロセッサコア102の割り当て内にある。スレッドはメモリ参照を行うとき、実行されたスレッドは交換され、次のスレッドがそのメモリ要求をすることができ、それが続く。メモリ遅延は、スレッドのメモリ参照の応答が、スレッドが実行に戻される前に、プロセッサコアに到着する場合、発生しない。これは、ネットワークの帯域幅が十分高く、ホットスポットがパイプライン化されたメモリアクセストラフィック内で回避され得ることが要求される。例えば、連続命令間の同期性は、ステップ間の弾性同期波を用いて保証することができる。
【0043】
図2は、200で、例えば、データメモリモジュール112に接続する上述のアクティブメモリユニット112B(ALUおよびフェッチャを備える)およびスクラッチパッド206Bを組み込んだ、ESM、CMPアーキテクチャの一例を示す。ネットワーク108は、スイッチ108Bを備える高帯域幅パイプライン化メモリシステムとして機能するメッシュ様相互接続ネットワークであってよい。メモリアクセスレイテンシは、一スレッドが均一にアクセス可能な分散型共有メモリをネットワーク108を介して参照している間、他のスレッドを実行することによって隠蔽される。通信する参照およびホットスポットの過密は、高帯域幅(二分割BW≧P/4)および分散されたメモリモジュールにわたるメモリ位置のランダム化ハッシングを特徴とする効率的なデッドロックフリー相互通信アーキテクチャで回避できる。命令の実行は、単一PRAMステップに対応するステップで行われ、その間に各スレッドは単一命令を実行する。
【0044】
次に、TCFの概念に移動すると、TCFモデルは、並列実行の自然な同期性を公開するため類似性を含む計算要素を一緒に詰めて、並列で実行される要素の数を動的に調整するための単純で明白なメカニズムを提供することができる。
【0045】
TCFモデルは、各計算に対する個別な制御を維持するより、単一の制御によって管理されるデータ並列エンティティへの同じ制御フローを有する均質な計算を組み合わせるプログラムモデルである。結果としてのエンティティは、TCFと呼ばれ、その構成要素は、ファイバと呼ばれる。TCF内のファイバの数は、その厚さと呼ばれる。
【0046】
厚い制御フロー(ファイバの数の点で)が、プログラムの文または式を実行するとき、ファイバのすべては、同じプログラム要素を並列に実行すると考えられる。より正確には、プログラム変数のいくつかは、固有のファイバ式の変数の例があることを概念的に意味する、複製されたファイバ式であり得るとみなされる。複製された変数を使用することに基づく表現はまた、概念的に複製される、すなわち、各ファイバを個別に評価する必要があることを意味する。同様に、文もまた複製されてよい。しかし、厚い制御フローによって実行されたすべての式または文は、複製される必要はなく、こうした非複製(通常の)プログラム要素は、ファイバ式ではなく、厚いフローによって一度自然に評価される/実行されることだけが必要である。したがって、厚いフローが、プログラムの断片にわたって進行するとき、式/文のいくつかは、単一の命令に変換されるのに、複製された物は、命令のセットに変換される。
【0047】
方法の呼出しを考えると、厚さtを有する制御フローが、方法を呼び出すとき、方法は、各ファイバと一緒に別に呼ばれずに、制御フローは、tファイバと1度だけ呼び出す。コールスタックは、各ファイバに繰り返されず、並列制御フローそれぞれに繰り返される。したがってここで、スレッドとしてのファイバの概念は、単に暗黙である。厚いファイバ式の変数は、ファイバ式の実際値を有するアレイ様の構成物である。分岐命令を実行することは、厚い制御フローをいくつかの他のフローに一時的に分割することを意味し得る。
【0048】
TCFの実行は、1つの命令を一度に行う。TCFのすべてのファイバが、一命令を実行する間の時間は、ステップと呼ばれる。TCFの実行は、SIMDの実行に類似するが、同時に実行される複数のTCFが存在してもよく、その厚さは、任意に変動してもよい。TCFモデルは、連続命令間の同期性および厳格なメモリの整合性を保証し、その結果、前に複製された命令によって始められたすべての共有メモリの働きは、現在の演算が起きる前に完了することが保証される。同期化は、ハードウェアではなくソフトウェアによって定義されたステップ毎に起きるので、これにより、ESMに関する同期化のコストは低減され得る。複数のTCFが存在する場合、それらの相互の実行順序は、厳格に定義されないが、プログラマは、明白なTCF間同期を介してある順序に従うようにそれらに命令することができる。
【0049】
TCFの厚さは、際限なくプログラマによって定義され得るので、スレッドの無くなることまたは、ソフトウェアの並列処理をループまたは明白なスレッドを有するハードウェアの並列処理と一致させる必要があることを心配することなく広範囲の本来備わっている計算論的問題の固有の並列処理を表すことは容易である。ループの数を低減することを除き、モデルは、プログラミングをスレッドに関連するインデックス計算を排除することによっても簡素化できる。
【0050】
元来、プログラムは、並列の暗黙スレッドの数で概念的に測定された1つの厚さのフローを有するとみなされる。一方法は、呼出しフローの厚さに関連する厚さを有するとみなされてもよい。フローの厚さを動的に変更するため、一ブロックに対する新しい厚さを設定する厚いブロック文、または実行される文に対する厚さを設定する厚さの文がある。厚いブロック文は、ネストが厚く、通常のブロック文が指示される。厚さTouterの厚いブロックBouterは、厚さTinnerの内部厚さブロックBinnerを含む。入れ子になったブロックは、ファイバ式ではなくフロー式を実行されるので、フローの厚さを考慮すると、フロー実行内部の厚いブロックは、厚さTinner(Touter×Tinnerではなく)を有する。実行される文の厚さを設定する文のケースでは、各コードのセグメントの厚さは、明白に指定される。
【0051】
制御文(if、switch…)は、図3に示すように、厚い制御フローをいくつかの他のフローに分割することを一時的に意味し得る。2つの連続する命令を含む厚さの第1のブロック302は、厚さ23および8の連続する命令の第2のブロック304に続いてもよい。次に、第2のブロック304は、2つの並列の第3および第4のブロック306および308に分割されてもよく、3つの命令の後、分岐命令を有する厚さの内部ブロック15を有する第3のブロック306は、その後、2つの他の内部ブロックに分割され、厚さ12および3を有する並列分岐をもたらす。並列ブロックは、分割後再度結合されてもよい。
【0052】
厚い制御フローの分割に起因する潜在的に不連続のファイバサブグループ(暗黙スレッドの不連続インデックス)は、実装にはかなりコストがかかると考えられ得る。したがって、各並列分岐は、複数の暗黙スレッドが「選択する」分岐によって決定された厚さを有する入れ子になった厚いブロックとみなされてもよい。ブロックを囲む暗黙スレッドは、分岐命令によって毛一定されたブロック内で継続しない。上記が、所与の厚さを有する複数の経路の並列実行に等しいとき、全体のフローは、制御文を介して正確に1つの経路を選択することを要求され得る。プログラマが、複数の経路を並列で実行したい場合、それに従って複数の制御フローを作成する並列文を与え、それらに厚さを設定する必要がある。現在のフローを複数の並列フローに分割するほか、並列文はまた、文の最後に呼出しフローに戻るフローの暗黙結合を実行してもよい。すべての制御フローのファイバは、動的SIMDモデルと同様に共通のプログラムコードを介して同期式に進展することを見ることができる。フローが別個のフローに分割されると、分割フローの進行速度には何も仮定されなくてもよい。すなわち、この意味で、並列フローは、互いに対して非同期式である。しかし、プログラム言語デザイナが望む場合、機械命令レベルで実行を同期式にすることができる。
【0053】
TCFモデルは、基本的に他の並列プログラミングモデル同様にプログラムされ得るが、モデルの性質は、計算の表記、作用、および/または解釈に密接な関係がある新しい慣例に対する可能性を広げる。これらは、同期並列プログラミング、並列文に対するループの低減、実行中の並列処理の容易な制御、および短いプログラムコードを含み得る。
【0054】
従来技術の論文でより広範囲にわたって概説されたESM、CESMおよびベクトル/SIMDシステムは、TCFシステムの単純版とみなされてもよい。ESMおよび構成可能なESMのケースでは、TCFの厚さは、1つであり、またスレッドと呼ばれてもよいが、ベクトル/SIMDのケースについては、TCFは、ベクトルおよびベクトルの要素としてのファイバと呼ばれてもよい。
【0055】
TCFを用いた機能は、TCF対応アーキテクチャがTCFの計算の重複を支持すると仮定すると、SIMDアーキテクチャにおける同じ機能より真のTCF対応アーキテクチャにおいてより速く実行できる。
【0056】
図4は、400で、厚い制御フロープロセッサアーキテクチャ(TPA)の全体的な例示的な構造を示し、TPAは、TCFプログラミングモデルをネイティブに実装するアーキテクチャである。命令メモリ(IM)402、プロセッサフロントエンド(FE)404、ローカルメモリ(LM)406、TCFバッファ(TB)408、プロセッサバックエンドユニット(BE)410複製された登録ブロック(RR)412、および共有メモリモジュール(SM)416が図に示される。TPAチップマルチプロセッサは、命令メモリモジュール402に取り付けられたF(超)スカラプロセッサフロントエンド404、マルチコアプロセッサ用の従来型メモリシステムとして組織されたローカルメモリ406およびTCFバッファ408、ならびに通信ネットワーク418経由の複製された登録ブロック412に取り付けられたB並列プロセッサバックエンド410および共有メモリモジュール416を含み得る。
【0057】
プロセッサフロントエンド404は、複数のTCF間の高速スイッチング、その管理、制御の実行およびその他のコードの共通部品を支持し得る。構造的に、それらは、マルチスレッドスーパースカラプロセッサに似ていてもよいが、スレッドの代わりに、それ自体の登録セットを備えるTCFは、TCFバッファに保持される。マルチスレッドプロセッサと一緒に使用される用語を模倣して、これは、マルチTCFingと呼ばれてもよい。フロントエンド404のメモリシステムは、任意のキャッシュコヒーレンス維持を伴う対称マルチプロセッサ(SMP)または不均一メモリアクセス(NUMA)規定を利用してネットワークを介して任意に相互接続された、命令メモリ402およびローカルデータメモリ406を含み得る。これは、現在のマルチコアプロセッサが、比較的小さい修正でフロントエンド404として使用できることを示唆する。
【0058】
プロセッサバックエンド410は、ファイバ式のデータを備える能率化された共有メモリシステムを支持し、コードの均質並列部分を実行することができる。その構造は、動的ファイバ実行の機能を有するエミュレートされた共有メモリ(ESM)パイプラインの構造に類似してもよい。ESMプロセッサと同様に、それらは、マルチバッファリングを介したスケーラブルなレイテンシ隠蔽、波同期化を介した基礎的同期化コスト削減、および基本単位(FU)の連鎖を介した改善された低レベル並列処理、例えば、算術理論ユニット(ALU)などを使用して、並列実行において高性能化を提供できる。
【0059】
フロントエンド404からバックエンド410まで情報を送信することおよびその逆も作業展開ネットワークおよびリターンチャネル420で処理され得る。作業展開ネットワーク420は、TCF対応プロセッサのフロントエンド404をバックエンド410に取り付けることができる。その主目的は、選択されたデータ/オペランドと一緒にバックエンドの機能ユニットに対する演算コードを渡すことである。リターンチャネル420は、バックエンドユニット410を制御している選択されたバックエンドのデータをフロントエンド404に送信する処理を行うことができる。通常、単一フロントエンド406によって制御された複数のバックエンドユニット410が存在するので、リターンチャネル420は、複数のデータ値を渡すことができるか、または代替で、低減して、単一値を取得する。
【0060】
マルチファイバリングにおける考え方は、ファイバの参照がメモリシステムで進行する間に、他のファイバを実行することである。ファイバの数が十分高く、総合通信ネットワークが密でない場合、応答は、ファイバが必要とする前に到着することができる。第1の同期化方法は、ファイバが、実行のステップ内で独立しているという事実を利用し、ステップ毎に一度だけ同期化動作を実行することができる。第2の同期化方法は、メモリ参照を伴う同期化を重複することができてもよい。これらは一緒に、同期化により生じた償却された経費が1/厚さに下落する低コスト同期化波メカニズムを定義する。低レベル並列処理の利用の考え方は、独立した演算を必要として装置を並列に接続するよりオペランドとして装置がその前の結果を使用することができるように連鎖としてFUを接続することである。これにより、パイプラインが従属のサブ命令を実行できるようにすることによってFUの利用を増加させることができる。
【0061】
フロントエンド404とバックエンド410との間の相互作用は、TCFを単一のフロントエンド404および重複した方法で複数のフロントエンド404に割り当てることによって発生し得る。この種の単一モード二重目的の演算は、二重モードの演算を回避し、ESMアーキテクチャに存在するそれらの間のオーバヘッドを切り替えることができる。際限のない厚さに対する支持は、パイプライン上に動的にファイバを生成し(または命令を複製する)、ファイバ式のデータを必要に応じて中身を外部のメモリシステムにあふれさせる特別複製登録ブロックに保存することによって実施されてもよい。
【0062】
TPAアーキテクチャにおける命令の実行は、NUMAまたはESMアーキテクチャのそれとはいくらか異なる。Fn-FU NUMAコアは、多くてFn独立(サブ)命令を並列で実行し、Fe-FU ESMは、交互に配置された方法で、ステップ毎に固定されたスレッドの数に対するFeサブ命令まで命令を実行し、TPAは、交互に配置された方法で、非一定の厚さを備えるTCFの可変数に対してフロントエンドの命令および並列のバックエンドの命令の連続を実行できる。より具体的には、フロントエンドに割り当てられた単一TCFおよびTPA内の複数のバックエンドユニットの実行は、以下のように実行され得る。
-TCFを管理することを担当するフロントエンド404は、次のTCFをそのTCFバッファから切り替えて、前の命令で要求された場合、現在のものにすることができる。そうでなければ、現在のTCFが引き続き使用される。その後、フロントエンド404は、プログラムカウンタおよび命令メモリによって定義された一連のスカラ命令を実行できる。バックエンド演算を含む命令を満たすとき、それは、そのオペランドと一緒に演算を作業展開ネットワーク420を介して関連するバックエンドユニット410に送信しようとしてもよい。ネットワークがビジーな場合、フロントエンド404は、TCFに空きがあるまで待機し、その後、明白なTCF切り替え要求があるまで継続してもよい。
-各関連するバックエンドユニット410での実行は、ユニットが空いているかどうかをチェックすることによって開始してもよい。肯定のケースでは、並列演算、オペランド、および作業展開ネットワーク420のヘッド要素上の必要なTCF情報が、すべての関連するバックエンドユニット410への実行にフェッチされてもよい。否定のケースでは、作業展開ネットワーク420の命令は、並列ユニットが空くのを待つ。
-次に、TCFは、関連するバックエンドユニット410間でできるだけ平等に分割されてよく、バックエンドは、それらが無くなるまで並列にファイバを生成し、処理し始める。
-ファイバの生成の間、各ファイバは、オペランド、ファイバ識別子およびFUに対する命令をフロントエンドによって送信されたデータから取得することができるが、ファイバ式中間結果は、複製された登録ブロック412からフェッチされる。
-その後、ファイバは、パイプラインを通って伝播されてもよく、バックエンド機能ユニットでサブ命令を実行してもよい。
【0063】
より具体的には、TPA命令は、3つのフロントエンドフェーズおよび3つのバックエンドフェーズで実行され得ることが指定されてもよい。
各アクティブフロントエンド404について、フェーズは、
F1.前の命令によって要求された場合、次のTCFをTCFバッファ408から選択することと、
F2.NUMAメモリシステムの現在のTCFのPCによって指示された(サブ)命令(複数可)をフェッチすることと、
F3.(サブ)命令(複数可)によって指定された機能ユニットのサブ命令を実行することと、を含んでもよい。メモリサブ命令は、通常SMP/NUMAメモリシステムに向けられる。命令が、バックエンド部分を含む場合、オペランドを選択し、それらを作業展開ネットワーク420を介してフロントエンド404に割り当てられたバックエンド410に対する部分と共に送信する。対応するサブ命令によって要求された場合、現在のTCFのデータをTCFバッファ408に格納し、次のTCFに切り替える。
【0064】
各バックエンド410について、フェーズは、
B1.バックエンド410が、前の命令をもはや実行していない場合、次の命令を作業展開ネットワーク420からフェッチして、バックエンドで実行されるファイバを決定する。そうでなければ、前の命令を継続して実行する。
B2.B1で決定された割り当てに従って、パイプラインされるTCFのファイバを生成する。
B3.各ファイバについて、以下のことが、行われてもよい。
B3.1 受信されたフロントエンドのデータおよび複製された登録ブロック412からオペランドを選択する。
B3.2 バックエンドのサブ命令を実行する。メモリサブ命令は、共有メモリシステムに向けられる。
B3.3 複製された登録ブロックにライトバックし、任意の応答データを作業展開ネットワーク420に組み込まれたリターンチャネルを経由してフロントエンド404に返信する。
【0065】
フロントエンド404のすべてのアクティブなTCFが単一の命令に対して実行された後、TPAは、共有メモリシステムとの間で同期化を送受信するバックエンド毎に1つの厚さの特別な同期TCFを発行してもよい。
【0066】
図5は、TCFアーキテクチャ内のバックエンドユニットで実装され得る共有メモリからデータを取得するための方法を示し、本方法は、本質的に従来技術の解決策ですでに実装されたものに対応する。例えば、ESMメモリユニットは、前に提示されていて、応答待機キューが使用される。縦線は、プロセッサパイプラインで実行され得る別個のファイバを示してもよく、パイプラインセグメント1は、メモリアクセス処理前のパイプラインの部分を表し、パイプラインセグメント2は、メモリアクセス処理後の少なくとも論理的に位置するパイプラインの部分を表し、メモリアクセス処理は、共有メモリユニットがアクセスされるメモリアクセス段階を指す。送信ロジック502は、共有メモリユニットから応答が要求される場合、共有メモリユニットに要求を送信する。メモリアクセス動作は、その動作では、既知のESMシステムの応答待機キューに本質的に対応する、L待機段階LCR1…LCRLを有する、レイテンシ補正登録転送ライン(LCRTL)を入力することができる。
【0067】
LCRTLは、Lが固定されたセグメント長さであってよいように、L段階レイテンシ補正を有する。例えば、ESMメモリユニットの応答待機キューに対応して、すべての種類の作業負荷に対するセグメント長さLは、固定される。セグメントの長さは、MUの設計時間の間、最悪のケースに近いシナリオに従って、選択されてもよい。例えば、応答を受信するには、多くて、ある特定の数のクロックサイクルがかかる可能性があると結論付けられる場合、固定された応答待機時間/セグメント長さとしてこれよりわずかに小さい数のクロックサイクルが選択されてもよい。したがって、いくつかのメモリ参照は、この時間の前に完了するので、おそらく不必要に、すべての種類のメモリ参照は、同じ所定の時間を待つ。共有メモリがビジーな場合、メモリアクセスコマンドパイプラインが、再起動され得るまで、バックエンドパイプライン全体がフリーズする。メモリ参照は、パイプラインナインを進行し、最小L段階は、すべての作業負荷に対して要求される遅延である。可能な応答がLCRLによって受信されるかどうか受信ロジック504は監視し、そうでない場合、パイプラインを凍結する。
【0068】
図6は、柔軟なレイテンシ補正ユニット(FLCU)601本発明の一実施形態によるTCFアーキテクチャに実装され得る共有メモリからデータを取得する好ましい方法を与える。FLCU601は、ローカルメモリ602を備えてもよく、ここでは、L要素FLCUバッファ602および制御ロジックと呼ばれる。ここでLは、ローカルメモリバッファ602の深さ、すなわち、いくつのメモリ参照要求を保持できるか、を指す。Lは、任意に選択されてもよいが、実際には、メモリ読み出し要求に対して、好ましくは、通信に対するトラフィックが存在しない状況に対する最大レイテンシより大きいようにLを決定するのが有利であり得る。
【0069】
制御ロジックは、機能的にローカルメモリ602の前に位置する送信ロジック604および機能的にローカルメモリ602より後に位置する受信ロジック606を備えてもよい。
【0070】
少なくとも1つのファイバが実行される場合(TCFの厚さ≧1)、TCFモデルは、有利なことに、前のステップで生成された共有メモリ参照現在のステップが始まる前に完了されるように、ステップの同期演算を可能にする。一実施形態では、FLCU601は、共有メモリ参照の結果が、現在のステップ中に、TCFのすべてのファイバに対して利用できるようにできてもよい。
【0071】
命令のステップおよび/または実行の長さは、実際の要求された共有メモリ参照のレイテンシに従って、動的に変動されてもよい。
【0072】
少なくともファイバに関して、共有メモリアクセスは、一実施形態では先入れ先出しの原則を用いて実装されてもよい。すなわち、完了した共有メモリ参照は、ファイバの一連の命令によって呼び出される順序で利用されてもよい。
【0073】
共有メモリがビジーかどうかを送信ロジック604は監視してもよく、ビジーな場合、パイプラインを送信ロジック604まで凍結する。FCLUバッファ602が、いっぱいである(すでにL要求を保持している)間に読み出される場合、同じクロックサイクルで、新しいデータが、読み出し動作を介して自由な空間に書き込まれてもよい。パイプラインはまた、送信ロジックが、FCLUバッファ602がいっぱいであることを監視する場合、およびFLCU読み出しユニットが凍結されていない場合、送信ロジックまで、凍結されてもよい。単一クロックサイクルの間データの書き込みおよび読み出しができない場合、バッファは、バッファのうちの1つが書き込まれ、別が読み出されるマルチバッファ集団として使用されてもよいことに留意すべきである。
【0074】
特に、FIFO型バッファリングが使用されるとき、メモリ参照は、FLCUメモリユニット602でアクセスされてもよく、受信ロジック606は、メモリ参照が完了したかどうかを、有利なことに毎クロックサイクルで監視してもよい。可能な応答が受信されない場合、FLCUバッファ読み出しは、応答が受信されるまで、凍結/停止されてもよい。この停止時間はまた、レイテンシまたは遅延と呼ばれてもよく、したがって、柔軟であってよく、すなわち、要求されたメモリ参照を受信するのにどれだけかかるかに応じて変動する。レイテンシはまた、メモリ参照が要求されない場合、本質的に0であってよい。
【0075】
本発明の実施形態を通して、共有データメモリアクセスに関連付けられた遅延は、例えば、図5のLCRTLなどの、例えば、メモリ応答待機パイプラインセグメントまたは予め決定されたレイテンシ登録転送ラインにわたって有利であり得る、実際の要求される共有データメモリアクセスレイテンシによって動的に判定されてもよい。
【0076】
図7は、FIFO型バッファリング(およびしたがって、ここでFLCU FIFOバッファ602と呼ばれるローカルメモリを含むFLCU601)およびパイプラインセグメントの例示的な構成要素を備える、本発明によるメモリからデータを取得する方法の1つの他の例示的な図を示す。TCFが実行されるとき、オペランド選択ロジック702は、複製された登録ブロック412から各ファイバに関連する要求されたオペランドを取得してもよい。1つ以上のプリメモリALU704は、メモリアクセス段階の前に論理的に位置付けられてもよいが、メモリアクセス後に配置されるALU706はまた、追加で付与されてもよい。ライトバックロジック708は、複製された登録ブロック412に書き込んでもよい。
【0077】
図7の実施形態では、送信ロジック604は、共有メモリがビジーか、またはFLCU
FIFOバッファ602が、いっぱいかどうか監視してもよく、いずれのケースも送信ロジック604までパイプラインを凍結する。
【0078】
メモリ参照は、FLCU FIFOバッファ602でアクセスされてもよく、受信ロジック606は、メモリ参照が完了したかどうかを、有利なことに毎クロックサイクルで監視してもよい。可能な応答が受信されない場合、FLCU FIFOバッファ読み出しは、応答が受信されるまで、凍結/停止されてもよい。
【0079】
本発明の実施形態では、TCFは、例えば、ESM、CESMまたはベクトル/SIMDに接続するより単純な実装においてさえ、柔軟な、すなわち、メモリの受信ユニットが少なくともいくつかの機能を独立して、例えば、固定された予め決定されたレイテンシ登録転送ライン/メモリ応答待機パイプラインセグメントに依存せずに処理する少なくともケースで、動的な遅延を有するメモリユニットを提供することができる。
【0080】
いくつかの実施形態では、本発明は、メモリ参照が待機される場合、非TCFプロセッサで利用されてもよく、本発明以外の場合、固定された遅延を有する登録転送ラインが利用される。
【0081】
本発明は、上述の実施形態を参照して上で説明され、本発明のいくつかの利点が論証された。本発明は、これらの実施形態にのみ制限されるものではなく、以下の特許請求の範囲を通して、本発明の精神および範囲内のすべての可能な実施形態を含むことは明らかである。
【0082】
従属請求項に列挙された特徴は、別段の指示がない限り、相互に自由に組み合わすことができる。
図1
図2
図3
図4
図5
図6
図7