JP6568859B2 - エミュレートされた共有メモリアーキテクチャにおける長レイテンシ演算のアーキテクチャ - Google Patents

エミュレートされた共有メモリアーキテクチャにおける長レイテンシ演算のアーキテクチャ Download PDF

Info

Publication number
JP6568859B2
JP6568859B2 JP2016541138A JP2016541138A JP6568859B2 JP 6568859 B2 JP6568859 B2 JP 6568859B2 JP 2016541138 A JP2016541138 A JP 2016541138A JP 2016541138 A JP2016541138 A JP 2016541138A JP 6568859 B2 JP6568859 B2 JP 6568859B2
Authority
JP
Japan
Prior art keywords
memory access
long latency
latency
pipeline
unit
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.)
Active
Application number
JP2016541138A
Other languages
English (en)
Other versions
JP2017500657A (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.)
Valtion Teknillinen Tutkimuskeskus
Original Assignee
Valtion Teknillinen Tutkimuskeskus
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 Valtion Teknillinen Tutkimuskeskus filed Critical Valtion Teknillinen Tutkimuskeskus
Publication of JP2017500657A publication Critical patent/JP2017500657A/ja
Application granted granted Critical
Publication of JP6568859B2 publication Critical patent/JP6568859B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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
    • 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/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、一般に、コンピュータ科学およびコンピュータアーキテクチャに関する。特に、本発明は、エミュレートされた共有メモリアーキテクチャに関連する長レイテンシ演算の実行に関する。
SMA(共有メモリアーキテクチャ)では、データおよびプログラムのパーティショニングは、通常は、複数のスレッドによる処理を必要とするデータを共有メモリ内に配置し、プログラムをさらに独立して複数のプロセッサに分割することによって実施され、したがって処理が常にローカルで行われ、プログラマがデータの移動も担当するメッセージ引渡し(MPA)アーキテクチャと比較してプログラミングを容易にしている。残念ながら、ほとんどのSMAは、複数の相互接続されたプロセッサ/キャッシュ対からなる分散型共有メモリアーキテクチャを使用しており、このアーキテクチャでは、キャッシュコヒーレンス(と、ひいてはレイテンシトレランス)および同期性維持が、非常に高価なものになる。このことは、通信量の多い問題において性能を損なうこともある。
例えば上記の問題に取り組むために、エミュレートされた共有メモリ(ESM)アーキテクチャまたは共有メモリエミュレーションアーキテクチャが導入されている。これらは、高スループット相互通信ネットワークを介して共通の一様かつ同時にアクセス可能な共有メモリに接続される1組のマルチスレッド型プロセッサのセットを組み込んでいる、メモリシステムのレイテンシは、進行中の複数のメモリ参照を重複させることによって隠し、特殊な低コスト同期機構を確立して、機械命令レベルの同期性を保証する。ESMシステムは、実際のハードウェアアーキテクチャが物理的に分散したメモリを含んでいる場合でも、ユーザに理想的な共有メモリであると感じさせる。理論的な見地から言えば、これらのアーキテクチャは、計算問題の固有の並列性と、並列アルゴリズムを実行する際の性能およびコストとを記述および分析するためのモデルとして共通に使用される抽象的な並列ランダムアクセス機械(PRAM)を、その簡潔性および表現性のためにエミュレートしようとしている。「PRAMモデル」とは、一般に、同じクロックの下で、またそれらが接続された一様なシングルステップアクセス可能な共有メモリの下で動作する、1組のプロセッサのセットを指す。
したがって、ESMは、機械命令の実行時の暗黙の同期性、効率的なレイテンシ隠し技術、およびランダムかつ同時のアクセス作業負荷が重くても全てのメモリ参照を経路指定するのに十分な帯域幅をもたらすので、チップマルチプロセッサ(CMP)のプログラマビリティおよび性能スケーラビリティの問題に対処するための実現可能な技術である。同期実行は、プログラマがそれぞれの大域メモリアクセスの後で明示的に実行スレッドを同期させる必要がなく、その自動的な処理をハードウェアに依拠することができるので、プログラミングをより容易にすると考えられるが、例えばメッセージ引渡しアーキテクチャ(MPA)では、プログラマは、通信を明示的に定義し、サブタスクを同期させ、スレッド間のデータおよびプログラムのパーティショニングを記述する責任があり、これにより、MPAはプログラムすることが困難になっている。共有メモリエミュレーションで使用されるレイテンシ隠しでは、1つのスレッドが大域共有メモリを参照している間に他のスレッドが実行される、高スループット計算方式を使用する。このスループット計算方式では、利用可能なスレッドレベルの並列性から抽出される並列スラックネスを利用するので、スヌーピングまたはディレクトリ型のキャッシュコヒーレンス機構に依拠し、したがって帯域幅の制限またはディレクトリアクセスの遅延、および重いコヒーレンストラフィックの維持という問題がある、従来の対称マルチプロセッサおよび不均一メモリアクセス(NUMA)システムとは対照的なスケーラビリティの向上が得られると考えられる。
近年、特定のケースではプログラミングをさらに簡略化し、対数関数的に性能を向上させるPRAMの同時読取り同時書込み(CRCW)メモリアクセスの変形形態を実施するステップキャッシュを組み込んだ、スケーラブルなESMアーキテクチャが提案されている。また、PRAMモデルのさらに強力な多重処理同時読取り同時書込み(MCRCW)変形形態を実施する一定実行時間マルチ(プレフィックス)動作をサポートする機構も、ステップキャッシュの関連性に境界を付けるためにステップキャッシュに取り付けられたスクラッチパッドを援用して実施されている。例えば、出版物1: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、2: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、3: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、4: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、および5: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は、このような解決策の様々な態様を企図しており、したがって、参照によりその全体を本明細書に組み込む。マルチ(プレフィックス)動作は、例えばADD、SUB、MAXなど多数の基本演算について定義することができ、並列アルゴリズムを表現することができることから、並列プリミティブと見なすことができる。これらは、複数のスレッドを非同期に実行するアーキテクチャの競合条件およびその他の異常なしに複数のプロセッサから同時にアクセスされる、同期および並列データ構造に使用することができる。
図1に、シリコンプラットフォーム上に共有メモリをエミュレートするスケーラブルなアーキテクチャのハイレベル図を示す。このアーキテクチャは、物理的にスケーラブルな高帯域幅相互接続ネットワーク108を介して、物理的には分散しているが論理的には共有される(データ)メモリM1、M2、M3、…Mp112に接続された、1組のプロセッサ(コア)P1、P2、P3、…、Pp102のセットを含む。データメモリ112と接続されたアクティブなメモリユニット110は、メモリ参照を処理するために利用されるメモリ制御論理ユニットと見なすことができる。アクティブなメモリユニット110は、例えばマルチ(プレフィックス)動作中など複数のメモリ参照が同じメモリ位置に向けられるケースに関係する計算を管理するように配列される。命令メモリモジュールI1、I2、I3、…、Ip104は、各プロセッサ102のプログラムコードを担持するように構成される。分散メモリ型の実施態様で効率的に共有メモリをエミュレートするために、プロセッサ102は、Tpステージの巡回的なインタリーブ型スレッド間パイプライン(Tp≧ネットワークの平均レイテンシ)を利用してマルチスレッド化される。PRAMモデルは、パイプラインのフルサイクルが通常は1PRAMステップに対応するように、このアーキテクチャとリンクされる。(パイプライン全体、すなわち実際の実行ステージを含む全てのパイプラインステージに関する)マルチスレッド型実行ステップ中に、CMPの各プロセッサの各スレッドは、せいぜい1つしか共有メモリ参照サブ命令を含まない命令を実行する。したがって、1ステップが、複数のクロックサイクル、少なくともTp+1クロックサイクルにわたって続く。
図示のアーキテクチャでは、ステップキャッシュは、一般に、進行中のマルチスレッド型実行ステップの終了時までしかデータが有効でない連想メモリバッファである。同時アクセスに対するステップキャッシュの主な寄与は、参照された各メモリ位置について最初の参照以外の全てを段階的にフィルタリングして除去することである。これにより、位置あたりの要求数が、Tp≧Pと仮定して、PTpからPに減少し、それらの要求をシングルポートメモリモジュールで順番に処理することが可能になる。スクラッチパッドは、ステップキャッシュと多重処理のための実際のプロセッサ内およびプロセッサ間の計算を処理する最小限のオンコアおよびオフコアのALU(算術論理ユニット)とを援用した多重処理を実施する際に、メモリアクセスデータを記憶してステップキャッシュの連想性を限定されたものにするために使用される、アドレス指定可能なメモリバッファである。スクラッチパッドをステップキャッシュと結合して、いわゆるスクラッチパッド/ステップキャッシュユニットS1、S2、S3、…Sp106を確立することもできる。
考察した解決策の基礎をなす1つの考えは、実際は、インタリーブ式に効率的に実行される1組のスレッドのセットを有する各プロセッサコア102の割振りと、ネットワークのレイテンシを隠す(見えなくする)こととにある。1つのスレッドがメモリ参照を行うと、実行されるスレッドが変わり、次のスレッドがそのメモリ要求を行うことができるようになり、これが以下同様に続いていく。スレッドのメモリ参照の応答が、そのスレッドが実行状態に戻される前にプロセッサコアに到着すれば、メモリ遅延は発生しない。これには、ネットワークの帯域幅が十分に高く、パイプライン化されたメモリアクセストラフィックのホットスポットを回避することができることが必要である。連続した命令の間の同期性は、例えばステップ間で弾性同期波を使用することによって保証することができる。
図2は、200として、例えばデータメモリモジュール112と関連付けられた前述のアクティブなメモリユニット112B(ALUおよびフェッチャを備える)と、スクラッチパッド206Bとを組み込んだESM CMPアーキテクチャの一例を示す図である。ネットワーク108は、スイッチ108Bを備えた高帯域幅パイプライン型メモリシステムとして作用するメッシュ状の相互接続ネットワークとすることができる。メモリアクセスのレイテンシは、1つのスレッドがネットワーク108を介して一様アクセス可能な分散型共有メモリを参照している間に他のスレッドを実行することによって隠される。参照の輻輳、および通信のホットスポットは、高帯域幅(2分割BW≧P/4)と、これらの分散型メモリモジュールにわたるメモリ位置のランダムハッシングとを特徴とする、効率的なデッドロックのない相互通信アーキテクチャによって回避することができる。命令の実行は、各スレッドが1つの命令を実行する1PRAMステップに対応するステップで行われる。
上述した多数の利点にもかかわらず、ESMシステムは、真に最適な形で実現することは困難であるように思われてきた。ステップキャッシュおよびスクラッチパッド技術を利用して強力な同時メモリアクセスおよびマルチ(プレフィックス)動作をサポートする物理的に実現可能なメモリユニット(MU)が、基本的には構成可能なESMであるREPLICA(REmoving Performance and programmability LImitations of Chip multiprocessor Architectures)のような強力なエミュレートされた共有メモリアーキテクチャの1つの重要な構成要素であることは容易に理解できる。このようなMUは、例えば、出力メモリ参照を共有メモリシステムに送信し、共有メモリシステムからの起こり得る応答を待機して受信するように構成することができる。
図3は、300として、例えばステップキャッシュを利用する典型的なMCRCW ESMプロセッサのハイレベルブロック図およびパイプラインを示している。ステップキャッシュ型MCRCW (C)ESM CMPのプロセッサは、A個のALUと、M個のメモリユニット(MU)と、分散型または一体型レジスタブロックと、シーケンサと、何らかのグルーロジックとを含む。この図では、Ax302は、ALUxを示し、IF308は、命令フェッチ論理を示し、MEM304は、メモリユニットステージを示し、OS306は、変数(オペランド)選択論理を示し、SEQ310は、シーケンサを示している。この図に示すように、ALU302は、論理的には、メモリユニット待機セグメントの動作の前後に動作する。
一般に、最近のプロセッサアーキテクチャでALUによって処理される整数に基づく算術演算は、加算、減算、乗算、および除算を含む。さらに、ALUは、しばしば、例えば2つのデータ要素を互いに比較して、どちらが小さい/大きいか、またはそれらが等しいかどうかを整理し、その比較の結果に基づいて関連する判断を下すことを含むこともある論理演算の実行を担う。
さらに、例えば、特定の複雑さを有する計算を含む特定の具体的なタスクおよび演算を実行するために、特殊な機能ユニットを割り振ることができる。このような複雑な、またはその他の点で特殊な演算を実行するには、追加の論理またはハードウェアが必要になることもあり、また、例えば基本的なALU演算と対比して、完了するのにより多くのクロックサイクルを要する、または一般により長い時間がかかる、すなわちより長いレイテンシを生じることもある。
プロセッサアーキテクチャでは、その特定の経路上に配置されたハードウェアを使用して実行される特殊な目的または特殊なタスクをそれぞれ備える可能性がある、いくつかの並列処理経路を提供することができる。しかしながら、関連する要素およびそれらの経路で行われる関連する処理によって生じるレイテンシにより、しばしば、プロセッサパイプライン構造で進行している命令の総実行時間が長くなる。
目的は、既知のESM配列ではまだ十分に満足できるほど対処されていない上述した1つまたは複数の問題を少なくとも軽減し、そのために、効果的に、除算または特定用途向け演算などの長レイテンシ演算を実行するための実現可能な解決策を提供することである。
この目的は、本発明によるプロセッサアーキテクチャの実施形態によって達成される。
したがって、本発明の1つの態様では、エミュレートされた共有メモリ(ESM)アーキテクチャのプロセッサアーキテクチャ配置体は、
インタリーブ型スレッド間パイプラインをそれぞれ備えた、いくつかの、好ましくは複数のマルチスレッド型プロセッサを含み、
前記パイプラインは、算術演算、論理演算、および必要に応じてさらに別の演算をデータに対して実行するための直列に配置された複数の機能ユニットを含み、よりレイテンシの低い1つまたは複数の機能ユニットは、前記パイプライン中でメモリアクセスセグメントの動作より前に動作し、より長いレイテンシに関連するより複雑な演算を実行する1つまたは複数の長レイテンシユニットは、前記メモリアクセスセグメントと並列に動作する。
必要に応じて、メモリアクセスセグメントより機能上後に位置する複数の機能ユニットには、好ましくは少なくとも一般的には、すなわち少なくともほとんどのこのようなユニットに関しては、より低いレイテンシを有する1つまたは複数の機能ユニットもある。
1実施形態では、この複数の機能ユニットは、いくつかのALUを含む。
別の補足的または代替的な実施形態では、少なくとも1つのユニットを含む追加のいくつかの長レイテンシユニットが、上記の1つまたは複数の長レイテンシユニットと並列に動作する。必要に応じて、パイプラインは、これにより、少なくともメモリアクセスセグメント中に(それと並列に)2つ以上のブランチまたはブランチ部分を含むことがあり、各ブランチは、メモリアクセス中に動作するように構成された専用の長レイテンシユニットを少なくとも1つ組み込んでいる。論理上は、これらの相互に並列なブランチは、メモリアクセスセグメントの前後の残りの機能ユニットと直列に位置することができる。
別の実施形態では、上記の含まれる長レイテンシユニットのうちの少なくとも2つ以上が、1つのユニットから別のユニットにデータを引き渡すことができる少なくとも1本のチェーンに連結(連鎖)される。連結された機能ユニットは、例えば入力データ(変数)に対して相互に異なる演算を実行するように構成することができる。
さらに別の実施形態では、上記の機能ユニットの少なくとも一部は、1つまたは複数の所定の(サブ)命令動作フィールドおよび命令または「命令語」中に与えられる関連する値を介して制御される。
さらに別の実施形態では、機能ユニットの変数(オペランド、被演算子)は、パイプラインの変数選択ステージで、命令(語)中に与えられる1つまたは複数の変数選択フィールド(値)に従って決定される。機能ユニットの変数は、同じチェーン内でその機能ユニットに接続されている以前の機能ユニットから引き継ぐこともできる。機能ユニット間の接続は、命令語によって制御されるいくつかのマルチプレクサによって可能にすることができる。
別の実施形態では、少なくとも1つの長レイテンシユニットは、除算、平方根、または特定用途向け演算を実行するように構成される。長レイテンシユニットは、汎用的な算術、または一般的には演算サポートを、パイプラインおよび当該のプロセッサアーキテクチャ全体に導入する際に(より従来的な)1つまたは複数のALUを補うことができる。
別の実施形態では、少なくとも1つの長レイテンシユニットは、内部でパイプライン化される。
本発明の有用性は、実施形態によって決まるいくつかの問題によるものである。基本的には、エミュレートされた共有メモリコンピュータにおける除算などの長レイテンシ演算は、通常は複数の実行ステップを必要とするが、それらの演算をシングルステップのマルチスレッド型実行で実行することを可能にする。パイプラインのメモリ待機セグメントは、実際には長レイテンシ演算を実施する論理とマージすることができるので、プログラマは、長レイテンシ演算がシングルステップで実行されるのを見ることができ、この実行により生じるレイテンシは、メモリアクセスによって生じる任意の場合のレイテンシに隠れる。こうして得られる性能向上面の利点は、例えばマルチコアプロセッサ型コンピュータおよびそれらのプログラミングの状況で明らかである。
「いくつかの」という表現は、本明細書では、1から始まり、例えば1、2、または3などまでの任意の正の整数を指している。
「複数の」という表現は、本明細書では、2から始まり、例えば2、3、または4などまでの任意の正の整数を指している。
「動作上」、「論理上」および「機能上」という用語は、本明細書では、特に「並列性」、「並列な要素」、「並列な機能」に関する表現に関しては、物理的な、または単なる物理的な並列性、すなわち要素の物理的に並列なレイアウトと区別するために、交換可能に使用されているものである。
本発明の様々な実施形態は、従属請求項に開示されている。
次に、添付の図面を参照して、本発明についてさらに詳細に説明する。
シリコンプラットフォーム上で共有メモリをエミュレートする実現可能なスケーラブルアーキテクチャを示すブロック図である。 基本的にCMP ESMアーキテクチャである、実現可能なESMアーキテクチャを示す別の表現を示す図である。 MCRCW ESMプロセッサの実施形態を示すハイレベルブロック図およびパイプライン表現である。 本発明によるパイプラインアーキテクチャの実施形態を示す図である。 本発明によるパイプラインアーキテクチャの別の実施形態を示す図である。
図1から図3については、本明細書では、本発明の成り立ちに関する背景および過去のデータの説明に関連して既に考察した。
図4は、複数(N個)の長レイテンシユニット(LLU)402bと、(通常レイテンシまたは低レイテンシの)ALU402、402cなどのその他の機能ユニット(FU)とを備えたESMパイプラインアーキテクチャ400を組み込んだ本発明の1実施形態を示す図である。これらのALUなどのその他の機能ユニットのうち、ユニット402は、メモリアクセスセグメント412、したがってLLU402bの動作の前に動作することができ、ユニット402cは、メモリアクセスセグメント412、したがってLLU402bの動作の前に動作することができる。
この図における機能ユニット402、402bおよび402cのレイアウトは単なる例示であり、他の実施形態では、それらの配置、数、および性質/レイテンシは、図示したものと異なっていてもよい。機能ユニット402、402b、402cは、一般識別子A(LU)およびLLUと関連する一意識別子が与えられており、これらのユニット402、402b、402cが、同じ一般タイプ(A/LLU)内でも構造および/または機能の面で相互に異なるものである可能性があるということを示している。ただし、ユニット402、402b、402cのうちの少なくとも一部が、構造および/または動作の面で相互に類似していることもある。
IF408は、命令フェッチ論理を示し、MEM412aは、通常は1クロックサイクルだけ続く1つのメモリユニットステージを示し、OS406は、レジスタファイル読取り/書込みアクセスアクションを備える変数選択論理を示している。SEQ410は、シーケンサを示している。
一般に、変数は、パイプラインの開始時に、命令語中の1つまたは複数の対応する変数選択フィールドに従って担当の論理406によって選択される。変数は、いくつかのレジスタパイプを介して機能ユニットに引き渡すことができる。
既に述べたように、長レイテンシユニット402bは、例えば除算および特定用途向け演算など、さらに複雑な演算を実行するように設計されていることもあり、場合によっては、メモリユニット待機セグメントと並列に存在する1つまたは複数のユニットチェーンとして構成し、ALUチェーンまたはパイプライン構造414の全体の真ん中に接続することもできる。
図4に示すように、少なくともいくつかの長レイテンシユニット402bを、複数のメモリ(待機)ステージ412aを組み込んだメモリアクセスセグメント412と機能的かつ時間的に並列に動作することにより、長レイテンシ演算の実行時間を、単一のESMステップまでスケールダウンすることができる。LLU402bは、それらのタスクをメモリアクセス動作と同時に実行することができるので有利である。
1つまたは複数のLLUを必要とする命令実行プロセスをさらに詳細に考察すると、LLU402bは、ESMの機能ユニットの残りの部分と同じように、命令語中の1つまたは複数の専用フィールドで制御されることが好ましい。これらの演算の変数は、パイプラインの変数選択(OS)ステージ406で選択してもよいし、あるいは、チェーン中でメモリ待機セグメント412より前に存在するALU402が生成した結果から引き継ぐこともできる。
次いで、長レイテンシ演算の実行時間が、LLU402bの配置および/またはそれらの接続によって指定される順序で実行される。
一般に、LLU、または例えばALU402および402cとLLU402bの組合せなど、2つ以上の機能ユニット402、402b、402c(相互に類似している、または異なる)を、1つのユニットから別のユニットにデータを引き渡すことができるように連結することができる。連結された機能ユニットは、入力データ(変数)に対して相互に異なる演算を実行するように構成することができる。
レイテンシ演算の結果は、例えば、ALU402cの残りまたはシーケンサ410のための変数として使用することができる。フルスループットを得るためには、LLU402bは、内部でパイプライン化されるものとする。
その結果として、プログラマは、1実行ステップの間に、最大でN個の長レイテンシ演算を適用することができる。これらの演算は、相応にユニットチェーン状に配置されている場合には、互いに依存することもできる。特筆すべきは、ここで提案する解決策では、一般にプロセッサパイプラインが長くなることがない点である。もちろん、実行されるメモリ動作は、実行ステップ内でその間に実行される長レイテンシ演算から独立しているものとする。
LLU402bおよびALU402、402cなどの機能ユニットを表す図示の要素の様々な物理的寸法は、適用されるLLU402bおよび/またはその他の機能ユニット402、402cの複雑さまたはレイテンシも相互に様々である可能性があることを示している。枠が占める面積/枠の縦方向の長さは、対応するユニットの実行時間またはレイテンシを意味している。すなわち、より短いレイテンシに関連するALU402、402cは、LLU402bより短い/小さい枠として示してある。
いくつかの実施形態では、LLU402bなどいくつかの機能ユニットは、(実行フローを考慮して)より複雑な/より長いレイテンシを生じる1つまたは複数のユニットが、複雑さが少ない/レイテンシが短い1つまたは複数のユニットより後に動作するように、パイプラインに導入することができる。また、特にメモリアクセスセグメント412については、その1つまたは複数のより複雑なユニットは、例えば、より単純なユニットの後に続くセグメントの末端部分と実質的に並列に配置することができる。
図5は、本発明によるパイプラインアーキテクチャ500の別の実施形態を示す図である。
本実施形態でも、IF408は、命令フェッチ論理を示し、MEM412aは、通常は1クロックサイクルだけ続く1つのメモリユニットステージを示し、OS406は、レジスタファイル読取り/書込みアクセスアクションを備える変数選択論理を示し、SEQ410は、シーケンサを示している。
本実施形態では、パイプラインは、関連する長レイテンシ演算をそれぞれ実行する長レイテンシユニット(LLU)502a、502bの別個の機能的および論理的に並列なブランチ500a、500bを含む。ブランチ502a、502bは、LLUを1つしか含まないことも複数含むこともあり、必要に応じて、そのブランチに与えられるデータに対して所定の算術演算および論理演算などの演算を実行する複数のALUなど1つまたは複数のその他の機能ユニット(FU)を含むこともある。ブランチは、限られた長さを有することができ、1つまたは複数の共通の共有パイプラインセグメントがその前にある、かつ/またはその後に続くことがある。
パイプラインの並列ブランチ500aおよび500bは、メモリアクセスセグメント412と並列に存在するだけであってもよいし(図示の場合)、メモリアクセスセグメント412を超えて延びていてもよく、したがって、メモリアクセスセグメント412の前または後にある可能性もある。一方、いくつかの実施形態では、これらのブランチは、メモリアクセスセグメント412より短いパイプラインセグメントを画定することもある。したがって、並列ブランチ500a内に位置するLLUなどの実際の機能ユニットは、LLU502a、502bがパイプラインに対して完全に並列に示されているこの図に示すように、相互に実質的に(機能的/時間的に)並列に構成することもできる。
例えば、個々の機能ユニットそれぞれのレイテンシまたは複雑さは、この図でも、対応するブロックのサイズまたは長さで示してある。図示の実施形態では、ブランチは、複雑さの同じ(同じ、または同様のレイテンシを生じる)LLU502を同数だけ含んでいるが、その他の様々な可能な実施形態では、ブランチ内および/またはブランチ間のいくつかのLLUは、相互に異なる複雑さ/レイテンシを有するものであってもよいことを、当業者なら理解するであろう。いくつかの実施形態では、これらのブランチ内に位置するLLUは、これらの並列なブランチによって生じるレイテンシが実質的に等しく、かつ/またはメモリアクセスセグメント412の全持続時間内に収まるように選択される。いくつかの実施形態では、レイテンシの長いLLUは、パイプライン内で、レイテンシの短いLLUの動作より後に動作する。
各ブランチ500a、500bに配置された2つ以上のLLU502a、502b、必要に応じて全て502a、502bは、上述した原理に従って連結されて、それらの間でデータを引き渡したりすることができる。連結によって、利用可能な仮想命令レベルの並列化を活用することにより、得られる性能を高めることができる。
一般に、機能ユニット402、402b、402c、502a、502bは、例えばVLIW型のサブ命令動作フィールドによって制御することができる。1つの機能ユニットによって目標の演算が実行された後、その結果は、例えば現在の命令語によって制御されるマルチプレクサなどの要素を介して、それぞれのチェーン内でそのユニットより後に位置する1つまたは複数の機能ユニットが利用できるようにすることができる。
最後に、当業者なら、本開示および一般的知識に基づいて、個々の特定のユースケースで、必要な修正、削除、および追加があればそれらを行って、添付の特許請求の範囲によって定義される本発明の範囲を実施するために与えた教示を適用することができる。一般に、本明細書に記載する様々な原理は、本明細書で採用したESMの定義に留まらない様々なプロセッサアーキテクチャでも、少なくとも選択的には利用することができることは、当業者なら容易に理解するであろう。
100 シリコンプラットフォーム上に共有メモリをエミュレートするスケーラブルなアーキテクチャ
102 プロセッサ
104 命令メモリモジュール
106 スクラッチパッド/ステップキャッシュユニット
108 高帯域幅同期ネットワーク
108B スイッチ
110 メモリユニット
112 データメモリ
112B メモリユニット
200 ESM CMPアーキテクチャ
206B スクラッチパッド
300 MCRCW ESMプロセッサ
302 ALU
304 MEM
306 OS
308 IF
310 SEQ
400 ESMパイプラインアーキテクチャ
402 ALU
402b 長レイテンシユニット
402c ALU
406 OS
408 IF
410 SEQ
412 メモリアクセスセグメント
412a MEM
500 パイプラインアーキテクチャ
500a ブランチ
500b ブランチ
502a 長レイテンシユニット
502b 長レイテンシユニット


Claims (13)

  1. エミュレートされた共有メモリ(ESM)アーキテクチャのためのプロセッサアーキテクチャ配置体であって、
    インタリーブ型スレッド間パイプライン(400、500)をそれぞれ備えた、いくつかの、好ましくは複数のマルチスレッド型プロセッサを含み、
    前記パイプライン(400、500)が、算術演算、論理演算、および必要に応じてさらに別の演算をデータに対して実行するための直列に配置された複数の機能ユニット(402、402b、402c、502a)を含み、よりレイテンシの短い1つまたは複数の機能ユニット(402)が、前記パイプライン中でメモリアクセスセグメント(412)の動作より前に動作し、より長いレイテンシに関連するより複雑な演算を実行する1つまたは複数の長レイテンシユニット(402b、502a)が、前記メモリアクセスセグメント(412)と並列に動作する、プロセッサアーキテクチャ配置体。
  2. いくつかの機能ユニット(402c)が、機能上、前記パイプライン中で前記メモリアクセスセグメント(412)の動作より後に動作する、請求項1に記載のプロセッサアーキテクチャ配置体。
  3. 少なくとも2つの長レイテンシユニットが連結され、長レイテンシユニットが、連結内の後続のユニットに、演算の結果を引き渡すように構成される、請求項1から2のいずれか一項に記載のプロセッサアーキテクチャ配置体。
  4. よりレイテンシの短い1つまたは複数の機能ユニットが、少なくとも1つの整数算術のためのALUを含む、請求項1から3のいずれか一項に記載のプロセッサアーキテクチャ配置体。
  5. 前記パイプラインが、少なくとも2つの並列ブランチ(500a、500b)を組み込んでおり、各ブランチが、前記メモリアクセスセグメント(412)と並列な少なくとも1つの長レイテンシユニット(502a、502b)を含む、請求項1から4のいずれか一項に記載のプロセッサアーキテクチャ。
  6. 少なくとも2つのブランチが、前記パイプラインに対する前記メモリアクセスセグメントを超えて延在し、その延在部が、前記メモリアクセスセグメントの動作の前および/または後に動作する、請求項5に記載のプロセッサアーキテクチャ配置体。
  7. ブランチ内のいくつかの機能ユニットが、機能上、前記メモリアクセスセグメントの動作より実質的に前および/または後に動作する、請求項6に記載のプロセッサアーキテクチャ配置体。
  8. 演算実行レイテンシの点で相互に異なる前記メモリアクセスセグメントと並列な少なくとも2つの長レイテンシユニット(402b)を含む、請求項1から7のいずれか一項に記載のプロセッサアーキテクチャ配置体。
  9. より長いレイテンシに関連する長レイテンシユニットが、論理的には、メモリアクセスセグメントの終端部分と並列に、かつより短いレイテンシに関連する長レイテンシユニットの動作の後に動作する、請求項8に記載のプロセッサアーキテクチャ配置体。
  10. 1つまたは複数の機能ユニットが、命令語(408)のいくつかの動作選択フィールドを介して制御される、請求項1から9のいずれか一項に記載のプロセッサアーキテクチャ配置体。
  11. 機能ユニットのためのいくつかの変数が、命令語中に与えられるいくつかの変数選択フィールドに従って、前記パイプラインの変数選択ステージ(406)中で決定される、請求項1から10のいずれか一項に記載のプロセッサアーキテクチャ配置体。
  12. 少なくとも1つの長レイテンシユニットが、除算、ルート計算または特定用途用に設計される、請求項1から11のいずれか一項に記載のプロセッサアーキテクチャ配置体。
  13. 入力データに対して1つまたは複数の演算を実行するように構成された少なくとも1つの長レイテンシユニットと、入力データに対して1つまたは複数のその他の演算を実行するように構成された少なくとも1つの他の長レイテンシユニットとを含む、請求項1から12のいずれか一項に記載のプロセッサアーキテクチャ配置体。
JP2016541138A 2013-12-19 2014-12-16 エミュレートされた共有メモリアーキテクチャにおける長レイテンシ演算のアーキテクチャ Active JP6568859B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP13198516.0 2013-12-19
EP13198516.0A EP2887207B1 (en) 2013-12-19 2013-12-19 Architecture for long latency operations in emulated shared memory architectures
PCT/FI2014/051002 WO2015092131A1 (en) 2013-12-19 2014-12-16 Architecture for long latency operations in emulated shared memory architectures

Publications (2)

Publication Number Publication Date
JP2017500657A JP2017500657A (ja) 2017-01-05
JP6568859B2 true JP6568859B2 (ja) 2019-08-28

Family

ID=49916857

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016541138A Active JP6568859B2 (ja) 2013-12-19 2014-12-16 エミュレートされた共有メモリアーキテクチャにおける長レイテンシ演算のアーキテクチャ

Country Status (6)

Country Link
US (1) US10127048B2 (ja)
EP (1) EP2887207B1 (ja)
JP (1) JP6568859B2 (ja)
KR (1) KR102269157B1 (ja)
CN (1) CN106030517B (ja)
WO (1) WO2015092131A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3188025A1 (en) * 2015-12-29 2017-07-05 Teknologian Tutkimuskeskus VTT Oy Memory node with cache for emulated shared memory computers
CN111797107B (zh) * 2020-07-08 2024-02-09 贵州易鲸捷信息技术有限公司 混合乐观锁和悲观锁的数据库事务并发控制方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US506512A (en) 1893-10-10 Territory
US5867649A (en) * 1996-01-23 1999-02-02 Multitude Corporation Dance/multitude concurrent computation
AU6586898A (en) * 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
WO2000008555A1 (en) * 1998-08-06 2000-02-17 Koninklijke Philips Electronics N.V. Data processing device
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor
US6895479B2 (en) * 2000-11-15 2005-05-17 Texas Instruments Incorporated Multicore DSP device having shared program memory with conditional write protection
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US7131114B2 (en) * 2001-07-16 2006-10-31 Texas Instruments Incorporated Debugger breakpoint management in a multicore DSP device having shared program memory
EP1367485B1 (en) * 2002-05-31 2012-10-31 STMicroelectronics Limited Pipelined processing
TWI361379B (en) * 2006-02-06 2012-04-01 Via Tech Inc Dual mode floating point multiply accumulate unit
US8756404B2 (en) * 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
CN101021832A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 支持局部寄存和条件执行的64位浮点整数融合运算群
US20080313438A1 (en) * 2007-06-14 2008-12-18 David Arnold Luick Unified Cascaded Delayed Execution Pipeline for Fixed and Floating Point Instructions
CN103150146B (zh) * 2013-01-31 2015-11-25 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法
US9507404B2 (en) * 2013-08-28 2016-11-29 Via Technologies, Inc. Single core wakeup multi-core synchronization mechanism

Also Published As

Publication number Publication date
US20160314001A1 (en) 2016-10-27
WO2015092131A1 (en) 2015-06-25
JP2017500657A (ja) 2017-01-05
KR102269157B1 (ko) 2021-06-24
US10127048B2 (en) 2018-11-13
EP2887207B1 (en) 2019-10-16
KR20170013196A (ko) 2017-02-06
CN106030517B (zh) 2020-02-28
EP2887207A1 (en) 2015-06-24
CN106030517A (zh) 2016-10-12

Similar Documents

Publication Publication Date Title
US20240004666A1 (en) Floating-point supportive pipeline for emulated shared memory architectures
JP5698445B2 (ja) 多重プロセッサ・コア・ベクトル・モーフ結合機構
Platzer et al. Vicuna: A timing-predictable RISC-V vector coprocessor for scalable parallel computation
EP2806361B1 (en) Memory unit for emulated shared memory architectures
JP6568859B2 (ja) エミュレートされた共有メモリアーキテクチャにおける長レイテンシ演算のアーキテクチャ
US20120221830A1 (en) Configurable vector length computer processor
US11061817B2 (en) Memory node with cache for emulated shared memory computers
Forsell TOTAL ECLIPSE–an efficient architectural realization of the parallel random access machine
KR100962932B1 (ko) Vliw 프로세서
CN113348446B (zh) 用于处理tcf感知处理器的存储器访问的方法和装置
Duric et al. Imposing coarse-grained reconfiguration to general purpose processors
EP1442362A1 (en) An arrangement and a method in processor technology
Beck et al. Automatic dataflow execution with reconfiguration and dynamic instruction merging
Unrolling Lookahead Memory Prefetching for CGRAs Using Partial Loop Unrolling
CA2751388A1 (en) Method and system for mutli-mode instruction-level streaming
JP2003345589A (ja) 情報処理装置
McCaughan Parallel Computing Models

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171023

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181219

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190329

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: 20190709

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190805

R150 Certificate of patent or registration of utility model

Ref document number: 6568859

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250