JP2016534433A - エミュレートされた共有メモリアーキテクチャのための浮動小数点サポートパイプライン - Google Patents

エミュレートされた共有メモリアーキテクチャのための浮動小数点サポートパイプライン Download PDF

Info

Publication number
JP2016534433A
JP2016534433A JP2016526075A JP2016526075A JP2016534433A JP 2016534433 A JP2016534433 A JP 2016534433A JP 2016526075 A JP2016526075 A JP 2016526075A JP 2016526075 A JP2016526075 A JP 2016526075A JP 2016534433 A JP2016534433 A JP 2016534433A
Authority
JP
Japan
Prior art keywords
memory
pipeline
functional units
floating point
subgroup
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.)
Granted
Application number
JP2016526075A
Other languages
English (en)
Other versions
JP6469674B2 (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 JP2016534433A publication Critical patent/JP2016534433A/ja
Application granted granted Critical
Publication of JP6469674B2 publication Critical patent/JP6469674B2/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
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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

Landscapes

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

Abstract

エミュレートされた共有メモリ(ESM)アーキテクチャのためのプロセッサアーキテクチャ構成体は、各々がインタリーブスレッド間パイプライン(400)と、データに算術演算および論理演算を実行するための複数の機能ユニット(402、402b、402c、404、404b、404c)とを備える複数のマルチスレッドプロセッサを備え、パイプライン(400)が少なくとも2つの動作可能に並列なパイプラインブランチ(414、416)を含み、第1のパイプラインブランチ(414)が、整数演算を実行するように配列されたALU(算術論理ユニット)などの前記複数の機能ユニット(402、402b、402c)の第1のサブグループを含み、第2のパイプラインブランチ(416)が、浮動小数点演算を実行するように配列されたFPU(浮動小数点ユニット)などの前記複数の機能ユニット(404、404b、404c)の第2の非オーバーラップのサブグループを含み、さらに、浮動小数点演算のために配列された少なくとも前記第2のサブグループの機能ユニット(404b)のうちの1つまたは複数が、パイプライン(400)のメモリアクセスセグメント(412、412a)と動作可能に並列に配置される。

Description

一般に、本発明は、コンピュータサイエンスおよびコンピュータアーキテクチャに関する。特に、本発明は、エミュレートされた共有メモリアーキテクチャに関連するパイプラインアーキテクチャの最適化に関する。
SMA(共有メモリアーキテクチャ)において、データおよびプログラム区分化は、一般に、マルチプルスレッドによる処理を必要とするデータを共有メモリに入れ、プロセッサに合わせてプログラムをより独立に分割することによって実行され、それにより、処理が常に局所的に生じそれに応じてプログラマがデータをあちこちに移動させることを担当するメッセージパッシング(MPA)アーキテクチャと比較して、プログラミングを容易にする。残念ながら、ほとんどのSMAは、多数の相互接続されたプロセッサキャッシュ対からなる分散共有メモリアーキテクチャを使用し、それが、キャッシュコヒーレンス(それゆえに、待ち時間裕度)および同時性のメンテナンスを非常に高価にする。これは、さらに通信集約問題のためにSMAの性能を破壊することがある。
例えば上述の問題に取り組むために、エミュレートされた共有メモリ(ESM)アーキテクチャ、または共有メモリエミュレーションアーキテクチャ、が導入されている。それらは、高スループット相互通信ネットワークを介して、共通の均一に同期してアクセス可能な共有メモリに接続される1組のマルチスレッド化プロセッサを組み込んでいる。メモリシステム待ち時間は、進行中のメモリ参照をオーバーラップさせることによって隠蔽され、特別な低コスト同期化機構が確立され、機械命令レベルで同時性を保証する。たとえ実際のハードウェアアーキテクチャが物理的に分散されたメモリを含んでいても、ESMシステムは、理想的な共有メモリの知覚をユーザに与える。理論的な観点から、これらのアーキテクチャは、計算問題の本質的な並列性、ならびに単純性および表現性に起因する並列アルゴリズムの実行の性能およびコストを記述し分析するためのモデルとして一般に使用される抽象並列ランダムアクセス機械(PRAM)をエミュレートしようと試みている。PRAMモデルは、一般に、同じクロックの下で動作するプロセッサと、プロセッサに接続された均一のシングルステップアクセス可能共有メモリとの組を参照する。
それに応じて、ESMは、チップマルチプロセッサ(CMP)のプログラミング性および性能スケーラビリティ問題に対処する実行可能な技法であり、その理由は、ESMが、機械命令の実行における暗黙の同期性と、効率的な待ち時間隠蔽技法と、大量のランダムで並行なアクセス作業量の場合でさえすべてのメモリ参照をルーティングするのに十分な帯域幅とをもたらすからである。同期実行は、プログラミングを容易にすると考えられ、その理由は、プログラマが、各グローバルメモリアクセスの後、実行のスレッドを明確に同期させる必要がなく、同期を自動的に管理するのにハードウェアに依拠することができ、一方、例えば、メッセージパッシングアーキテクチャ(MPA)では、プログラマが、通信を明確に規定し、サブタスクを同期させ、MPAをプログラムするのを困難にしているスレッド間のデータおよびプログラム区分化を記述することを担当するからである。共有メモリエミュレーションで使用される待ち時間隠蔽は、高スループットコンピューティング方式を利用し、ここで、あるスレッドがグローバル共有メモリを参照している間、他のスレッドが実行される。スループットコンピューティング方式は、利用可能なスレッドレベル並列性から引き出された並列性緩み(parallel slackness)を利用するので、スヌーピングまたはディレクトリベースキャッシュコヒーレンス機構に依拠しており、それゆえに、限定的な帯域幅またはディレクトリアクセス遅延、および大量のコヒーレンストラヒックメンテナンスという問題がある従来の対称マルチプロセッサおよび不均一メモリアクセス(NUMA)システムとは対照的に、スループットコンピューティング方式は強化されたスケーラビリティを提供すると考えられる。
最近、スケーラブルESMアーキテクチャがPRAMの並行読出し並行書込み(CRCW)メモリアクセス変形を実施するためにステップキャッシュを組み込むことが示唆されており、それは、プログラミングをさらに簡単にし、場合によっては対数倍で性能を向上させる。さらに、一定実行時間マルチ(プレフィックス)演算(PRAMモデルのさらに強力なマルチ演算並行読出し並行書込み(MCRCW)変形を実施する)をサポートする機構は、ステップキャッシュの結合性を制限するためにステップキャッシュに取り付けられるスクラッチパッドの助けを借りて実現されている。例えば、刊行物がある。
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, INTECH, Vienna, 2010, 39-64. M. Forsell and J. Roivainen, Supporting Or-dered 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に、シリコンプラットフォームに共有メモリをエミュレートするためのスケーラブルアーキテクチャの高レベル図が示される。それは、物理的に分散されるが、論理的に共有される(データ)メモリ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つの共有メモリ参照サブ命令を含む命令を実行する。それゆえに、ステップは、多数の、少なくとも、Tp+1のクロックサイクルの間持続する。
図示のアーキテクチャにおいて、ステップキャッシュは、一般に、連想メモリバッファであり、データは、マルチスレッド実行の進行中のステップの終了まで有効のままであるにすぎない。並行アクセスへのステップキャッシュの主要な寄与は、ステップキャッシュが、参照されたメモリ場所ごとに第1の参照以外のすべてを段階的にフィルタ除去することである。これは、場所当たりの要求の数をP TpからPまで減少させ、それにより、要求が、Tp≧Pを仮定すると単一ポート化メモリモジュールで連続して処理され得るようになる。スクラッチパッドは、アドレス指定可能メモリバッファであり、それを使用して、メモリアクセスデータを記憶し、それにより、ステップキャッシュと、マルチ演算のために実際のプロセッサ内およびプロセッサ間計算に対処する最小のオンコアおよびオフコアALU(算術論理ユニット)との助けを借りて、マルチ演算を実施する際のステップキャッシュの結合性を制限し続ける。スクラッチパッドは、いわゆるスクラッチパッドステップキャッシュユニットS1、S2、S3、…、Sp106を確立するためにステップキャッシュに結合され得る。
調査した解決策の基礎をなす1つのアイディアは、実際は、インターリーブ方法で効率的に実行され、ネットワークの待ち時間を隠蔽する1組のスレッドを各プロセッサコア102に割り当てることにある。スレッドがメモリ参照を行うとき、実行されたスレッドは変更され、次のスレッドはメモリ要求などを行うことができる。メモリ遅延は、スレッドが実行に戻される前にスレッドのメモリ参照の応答がプロセッサコアに達するならば生じないことになる。これは、ネットワークの帯域幅が十分に広く、パイプラインメモリアクセストラヒックにおいてホットスポットを避けることができることを必要とする。例えば、連続する命令の間の同時性は、ステップ間の柔軟な同期波を使用することによって保証することができる。
図2は、200において、例えば、データメモリモジュール112に接続している前述のアクティブメモリユニット112B(ALUおよびフェッチャを有する)と、スクラッチパッド206Bとを組み込んでいるESM CMPアーキテクチャの1つの具体例を示す。ネットワーク108は、スイッチ108Bをもつ高帯域パイプラインメモリシステムとして働くメッシュ様相互接続ネットワークとすることができる。メモリアクセス待ち時間は、スレッドが均一にアクセス可能な分散共有メモリをネットワーク108を介して参照している間、他のスレッドを実行することによって隠蔽される。通信における参照およびホットスポットの輻輳は、高帯域(二分BW≧P/4)と、分散型メモリモジュールにわたる記憶場所のランダム化ハッシングとを特徴とする効率的なデッドロックフリー相互通信アーキテクチャにより避けられる。命令の実行は、各スレッドが単一の命令を実行する間、単一のPRAMステップに対応するステップで生じる。
多くの前述の利点にもかかわらず、ESMシステムは、真に最適の方法で実現することが困難であるように見受けられている。強力な並行メモリアクセスおよびマルチ(プレフィックス)演算をサポートするためにステップキャッシュおよびスクラッチパッド技法を利用する物理的に実現可能なメモリユニット(MU)は、基本的に構成可能ESMであるREPLICA(チップマルチプロセッサアーキテクチャの性能およびプログラム可能性制限の除去)のような強力なエミュレートされた共有メモリアーキテクチャの1つのキー構成要素として容易に理解できる。そのようなMUは、出て行くメモリ参照を共有メモリシステムに送り、ならびに共有メモリシステムからの可能な応答を待機し受け取る。残念ながら、以下でより詳細に説明する先行技術のMU解決策では、低レベル実施態様の細部は存在せず、提案されている構成は、比較的複雑なマルチポートステップキャッシュおよびスクラッチパッドまたは複雑なソーティングアレイおよび大きいノード式バッファを必要とする。加えて、前の解決策の受取り論理は、単一のクロックサイクルの間にステップキャッシュとスクラッチパッドの両方にアクセスし、後者のものの性能は、すべてのメモリ操作に対して2ステップ最小待ち時間によって損なわれる。このすべてにより、既に利用可能なMU解決策がかなり非実用的になる。
図3は、300において、ステップキャッシュを利用する典型的なMCRCW ESMプロセッサの高レベルブロック図およびパイプラインを示す。ステップキャッシュベースMCRCW (C)ESM CMPのプロセッサは、A ALU、M メモリユニット(MU)、分散または統合レジスタブロック、シーケンサ、およびいくつかのグルー論理を含む。図において、Ax302はALUxを参照し、IF308は命令フェッチ論理を参照し、MEM304はメモリユニット段を参照し、OS306は被演算子選択論理を参照し、SEQ310はシーケンサを参照する。図において示唆されるように、メモリユニット待機セグメントの前後に論理的に位置づけられたALU302がある。
最新のプロセッサアーキテクチャにおいてALUによって処理される典型的な整数ベース算術演算には、加減乗除が含まれる。さらに、ALUは、多くの場合、例えば2つのデータ要素を互いに比較して、どちらが小さかったか/大きかったか、またはそれらが等しかったかどうかを分類することと、そのような比較の結果に基づいて関連する決定を下すこととを組み込むことができる論理演算の実行を担当する。
それにもかかわらず、10進数で同様に算術演算を実行できることは、SMAを含む多くの状況において必要であるかまたは少なくとも有用である。そのような目的のために、浮動小数点数で働く浮動小数点ユニット(FPU)と呼ばれる専門の構成要素が、過去には一般に導入された。しかしながら、吟味中の任意の特定のプロセッサアーキテクチャおよび関連するパイプライン構造にいくつかのFPUを単純に付加することは、注意深く効果的に行われる場合は軽微な作業ではない。綿密な考察なしに既存のアーキテクチャおよびパイプラインにFPUを採用するのは、さらに他の演算の待ち時間をどちらかというとかなり容易に増加させ、全体的な回路レイアウトの複雑さを不必要に付加しすぎる。
目的は、既知のESM構成によってまだ完全に十分には対処されていない上記で説明した1つまたは複数の問題を少なくとも緩和すること、およびそれによって効果的に浮動小数点演算を実行するための実現可能な解決策を提供することである。
この目的は、本発明によるプロセッサアーキテクチャの実施形態によって達成される。
それに応じて、本発明の1つの態様において、エミュレートされた共有メモリ(ESM)アーキテクチャのためのプロセッサアーキテクチャ構成体は、各々がインタリーブスレッド間パイプラインと、データに算術演算および論理演算を実行するための複数の機能ユニットとを備えるいくつかの、好ましくは複数のマルチスレッドプロセッサを備え、パイプラインが少なくとも2つの動作可能に並列なパイプラインブランチを含み、第1のパイプラインブランチが、整数演算を実行するように配列されたALUなどの前記複数の機能ユニットの第1のサブグループを含み、第2のパイプラインブランチが、浮動小数点演算を実行するように配列されたFPUなどの前記複数の機能ユニットの第2の非オーバーラップのサブグループを含み、さらに、浮動小数点演算のために配列された少なくとも前記第2のサブグループの機能ユニットのうちの1つまたは複数が、パイプラインのメモリアクセスセグメントと動作可能に並列に配置される。
好ましくは、さらに、第1のサブグループの機能ユニットのうちの1つまたは複数が、パイプラインのメモリアクセスセグメントと動作可能に並列に配置される。
1つの実施形態では、第2のサブグループの機能ユニットのうちの少なくとも2つ以上が共に連鎖される。機能ユニットの2つ以上の連鎖(ここで、データはあるユニットから別のユニットに渡され得る)が形成される。連鎖された機能ユニットは、入力データ(オペランド)に互いに異なる演算を実行するように構成することができる。
別の実施形態では、第1および/または第2のパイプラインブランチなどのブランチにおけるいくつかの機能ユニットはメモリの前に機能的に位置づけられ、いくつかはメモリアクセスセグメントと並列に機能的に位置づけられ、いくつかはオプションとして、メモリアクセスセグメントの後に機能的に位置づけられる。
さらなる実施形態では、前記第2のサブグループの少なくとも2つのユニットは、例えばクロックサイクルにおいて、決定されたそれの実行時間または待ち時間に関して互いに異なる長さのものである。より長い待ち時間をもつユニットは、より複雑な演算を実行するように構成することができ、逆もまた同様である。同様の構成は、第1のサブグループのユニットに同様に適用することができる。
さらに、さらなる実施形態では、機能ユニットの少なくとも一部は、所定の(サブ)命令演算フィールド、および命令または「命令語」に与えられている関連する値により制御される。
さらに、さらなる実施形態では、機能ユニットの被演算子(オペランド)は、命令(語)に与えられた被演算子選択フィールド(値)によりパイプラインの被演算子選択段において決定される。機能ユニットの被演算子は、連鎖においてそれに接続されている前の機能ユニットからも継承され得る。機能ユニット間の接続は、命令語によって制御されるいくつかのマルチプレクサによって可能にされ得る。
さらなる実施形態では、機能ユニットの第2のサブグループは、好ましくは、加算、減算、乗算、除算、比較、整数から浮動小数点への変換、浮動小数点から整数への変換、平方根、対数または対数演算、べき乗、および対数の整数部からなる群から選択された少なくとも1つの浮動小数点演算、例えば、算術演算および/または論理演算を実行するように構成された少なくとも1つのユニットを含む。
いくつかの実施形態では、前記第2のサブグループの第1の機能ユニットは、複数の演算を実行するように構成することができる。オプションとして、前記第2のサブグループの第2の機能ユニットは、ある演算のみを実行するように構成することができる。そのようなある演算は、前述の第1のユニットなどの単一ユニットによって潜在的に実行される加算または減算などの多くの他の演算に比べて、除算または平方根などのより複雑な、したがって一般により多くの待ち時間を導入する演算を参照することができる。オプションとして、前記第2のサブグループの第3の機能ユニットは、同じタイプ(例えば平方根)および/または複雑さ(待ち時間)のマルチプル演算を実行するように構成することができる。
本発明の有用性は、本発明の各特定の実施形態に応じた様々な性質から発生する。まず第一に、並列浮動小数点および整数パイプライン、または効果的にパイプラインセクションを導入することによって、2つは、インタリーブスレッド間パイプラインを備えたマルチスレッドプロセッサにおいて、同時に、さらにメモリアクセスセグメントの間、機能し、演算を実行することができる。スループットをさらに向上させ、汎用演算を可能にするために、機能ユニットはいくつかの連鎖に巧みに組織され得る。さらに、エミュレートされた共有メモリ実行に関連する命令レベル並列性が、当該のアプリケーションが十分なスレッドレベル並列性を含むと仮定すると、スケジュールされた浮動小数点演算が完全に従属的であるにもかかわらず、取り込まれ得る。利用可能な仮想命令レベル並列性が、示唆する解決策で首尾よく利用することができ、その結果、浮動小数点演算が、最終的に、既知の代替よりも一般に高速に動作し得る。
いくつかの実施形態では、示唆するタイプのパイプラインアーキテクチャは、ESMプロセッサおよびアーキテクチャとの関連でデータメモリアクセスを扱うように特に設計されたメモリユニットの一実施形態に関連して活用され得る。一般に、単一のメモリアドレスへの同時メモリ参照は、各プロセッサによる参照が、有利には、マルチスレッド実行の単一ステップの間1つに低減されるようにいわゆるステップキャッシュを使って実施され得る。以下でより詳細に説明するスクラッチパッドメモリは、マルチ(プレフィックス)演算の中間データを記憶するために巧みに利用することができる。メモリユニットの使用により、効率的なデータメモリアクセスのための著しく簡単なハードウェア実施態様を得ることができると同時に、変更されたステップキャッシュおよびスクラッチパッドの両方を異なるクロックサイクルの間にアクセスすることによってクロックサイクル長さ(期間)を減少させることができる。
「いくつかの」という表現は、本明細書では、1から始まる任意の正の整数、例えば、1、2、または3を参照する。
「複数の」という表現は、本明細書では、2から始まる任意の正の整数、例えば、2、3、または4を参照する。
「動作可能に」、「論理的に」、および「機能的に」という用語は、本明細書では、物理的なまたは単なる物理的な並列性、すなわち、要素の単なる物理的に並列なレイアウトと区別するために、特に、「並列性」、「並列要素」、または「並列機能性」に関連する表現に関して交換可能に使用される。
「マルチ演算」という用語は、一般に、本明細書では、実際のマルチプレフィックスなどの連想累積演算、または、マルチプレフィックスとは対照的にプロセッサに戻される戻り値がない、すなわち、それにより変更されるターゲットメモリ場所のコンテンツのみを有していること以外は対応する他の演算のことをいう。
本発明の様々な実施形態は従属請求項において開示される。
次に、本発明が、添付図面を参照してより詳細に説明される。
シリコンプラットフォームに共有メモリをエミュレートするための実現可能なスケーラブルアーキテクチャのブロック図である。 実現可能なESMアーキテクチャ、本質的にはCMP ESMアーキテクチャの別の表示の図である。 MCRCW ESMプロセッサの一実施形態の高レベルブロック図およびパイプライン表示の図である。 本発明によるパイプラインアーキテクチャの一実施形態を示す図である。 本発明によるESMプロセッサおよびパイプラインアーキテクチャのためのメモリユニットの一実施形態を示す図である。
図1〜3は、本発明の発端に関連する背景技術と歴史的データの両方の説明に関連して上文で既に考察された。
図4は、浮動小数点認識ESMパイプラインアーキテクチャ400を組み込んでいる本発明の一実施形態を示す。
パイプラインは、それぞれ、整数演算および浮動小数点演算のための別個の機能的におよび論理的に並列なブランチ414、416を含む。ブランチ414、416は、多数のALU402、402b、402cなどの複数の機能ユニット(FU)と、供給されたデータに所定の算術演算および論理演算などの演算を実行するための多数のFPU404、404b、404cとを含む。機能ユニットの待ち時間または複雑さは、対応するブロックのサイズまたは長さによって表される。
機能ユニット402、402b、402c、404、404b、404cのレイアウトは、図において単に例示であり、他の実施形態では、ブランチ414、416に配設される機能ユニットの位置付け、数、および種類/待ち時間は、図示のものと異なることがある。整数ブランチ414および浮動小数点ブランチ416の機能ユニット402、402b、402c、404、404b、404cは、一般的な識別名AおよびFに関連する固有の識別名が付いており、ユニット402、402b、402c、404、404b、404cが、構造および/または機能に関して、ブランチ414、416内においても相互に異なることがあるということを提示している。しかしながら、ユニット402、402b、402c、404、404b、404cのうちの少なくともいくつかは、構造および/または演算に関して互いに類似していることがある。
IF408は命令フェッチ論理を参照し、MEM412aは、クロックサイクルの間一般に持続する単一メモリユニット段を参照し、OS406は、今では整数および浮動小数点レジスタファイル読出し/書込みアクセスアクションの両方をもつ被演算子選択論理を参照する。浮動小数点レジスタファイルは、複数の単精度および/または二倍精度FPレジスタを含むことができ、整数パイプラインと並列に演算するように構成される。SEQ410はシーケンサを参照する。
一般に、被演算子は、命令語での対応する被演算子選択フィールドに従ってパイプラインの始めにレスポンシブル論理406によって選択される。これは、浮動小数点レジスタファイルアクセスと、浮動小数点部と整数部との間のデータ交換とを含む。被演算子は、いくつかのレジスタパイプを介して機能ユニットに渡すことができる。
パイプラインの整数ブランチ414は、算術演算および/または論理演算を含む整数演算に特化されたALU402、402b、402cなどのいくつかの機能ユニットを含むことができ、一方、浮動小数点ブランチ416は、10進数による算術演算および/または論理演算を含む浮動小数点演算に特化されたFPU404、404b、404cなどのいくつかの機能ユニットを含むことができる。異なるブランチ414、416のユニットは、演算を同時に実行するように構成することができる。
オプションとして、ブランチ414、416のいずれか、例えば浮動小数点416、または両方の機能ユニットのうちの少なくともいくつかは、パイプラインのメモリアクセスセグメント412のメモリアクセス段412aと並列に演算するように配列される。その結果として、関係する機能ユニットは、有利には、メモリアクセス操作と同時にそのタスクを実行することができる。
図示の実施形態では、整数ブランチ414は、機能ユニットの第1のサブグループを含む。さらに、機能ユニットの第1のサブグループは、各々が、好ましくは、いくつかの機能ユニット、オプションとしてALUを含む3つのセグメントなどの複数のセグメントに分割され得る。第1のセグメントが、好ましくは、メモリアクセスセグメント412の前に論理的に位置づけられた少なくとも1つの機能ユニット402を含み、第2のセグメントが、好ましくは、メモリアクセスセグメント412と論理的に並列に位置づけられた少なくとも1つの機能ユニット402bを含み(それは、第2のセグメントの機能ユニット402bが、データメモリアクセスの保留の間演算を実行することができることを意味する)、第3のセグメントが、好ましくは、メモリアクセスセグメント412の後に論理的に位置づけられた少なくとも1つの機能ユニット402cを含むように、セグメントはパイプラインに対して直列に配置することができる。
さらに、浮動小数点ブランチ416は、機能ユニットの第2のサブグループを含む。機能ユニットの第2のサブグループは、各々が、好ましくは、いくつかの機能ユニット、オプションとしてFPUを含む3つのセグメントなどの複数のセグメントに分割され得る。第1のセグメントが、好ましくは、メモリアクセスセグメント412の前に論理的に位置づけられた少なくとも1つの機能ユニット404を含み、第2のセグメントが、好ましくは、メモリアクセスセグメント412と論理的に並列に位置づけられた少なくとも1つの機能ユニット404bを含み、第3のセグメントが、好ましくは、メモリアクセスセグメント412の後に論理的に位置づけられた少なくとも1つの機能ユニット404cを含むように、セグメントはパイプラインに対して直列に配置することができる。
例えば、異なるセグメンテーションによる他の実施形態も、セグメントの位置付け、数、および構成を考慮すれば、使用シナリオに応じて実行可能な選択肢となることを当業者は理解するであろう。オプションとして、ALUおよび/またはFPUなどの機能ユニットに関して空セグメントもまた、パイプラインアーキテクチャにおいて、例えばメモリアクセスセグメント412と並列に位置づけることができる。
オプションとして、除算または(平方)根決定などのより複雑なタスクに関連するいくつかの機能ユニット402b、404bは、対応するパイプラインブランチ414、416においてメモリアクセスセグメント412の端部分と並列に配置することができる。好ましくは、そのような機能ユニット402b、404bの待ち時間は、依然として、メモリアクセスセグメント412の待ち時間よりも小さく、その結果、さらなるユニットが、パイプラインの全体的な待ち時間を増加させることなくセグメント412の第1のメモリアクセス段412aと並列に位置づけられ得る。
好ましくは、第1および/または第2のサブグループ414、416の機能ユニット402、402b、402c、404、404b、404cのうちの少なくとも2つ以上が、共に連鎖される。例えば、連鎖化は、一般に、MTACおよびMBTACプロセッサにおける整数FUのように実現され得る。それによって、機能ユニットの2つ以上の連鎖(ここで、データがあるユニットから別のユニットに渡され得る)を形成することができ、オプションとして、一方または両方のブランチ414、416につき数個の連鎖を形成することができる。そのような連鎖化は、得られる性能を、利用可能な仮想命令レベル並列性の活用により向上させることができる。機能ユニット402、402b、402c、404、404b、404cは、VLIM型サブ命令演算フィールドで制御することができる。例えば、浮動小数点演算が、対応する機能ユニット404、404b、404cで実行された後、結果は、例えば現在の命令語で制御されているマルチプレクサを含む要素を介して、それぞれの連鎖におけるそのユニットの後に置かれた機能ユニットが利用できるようになる。
浮動小数点演算は、多くの場合、実行するのに整数演算よりも多くの時間を要するので、浮動小数点機能ユニットの数は整数ユニットの数よりも少なく選択することができる。浮動小数点機能ユニットのうちのいくつかは、実際は、メモリアクセスセグメント412と時間的に並列にその演算を実行するように配置することができるので、それは、メモリ操作を伴う浮動小数点演算の連鎖化を複雑にするかまたは妨げるが、依然として、最も普及しているアーキテクチャで利用されている機能ユニットの標準並列編成よりも良好な全体的性能をもたらすことができる。
ESMコンピュータアーキテクチャおよび好ましくは前に説明したパイプライン構成に関連して、本発明のいくつかの実施形態によるメモリユニット(MU)を利用して、例えば、専用命令メモリをもつ複数のプロセッサ(コア)と、連想ステップキャッシュ(ステップ認識交換ポリシーによって管理されているようなマルチスレッド実行の進行中のステップの終了まで、中に挿入されているデータを保持する)およびプロセッサに取り付けられた非連想(スレッドアドレス指定された)スクラッチパッドバッファと、マルチメッシュ相互接続ネットワークなどの高帯域ネットワークを介してプロセッサ(コア)に結合された物理的に分散されているが論理的に共用されているデータメモリとを含むCMP(チップマルチプロセッサ)またはMP−SOC(マルチプロセッサシステムオンチップ)システムが実装される。ネットワークはプロセッサを分散型メモリモジュールに接続し、その結果、十分なスループットと許容できる待ち時間とが、十分に高い確率でランダム通信パターンに対して達成され得る。
コードの読出し集中部分のスループットを最大化するために、プロセッサからメモリまで行く参照のための、およびメモリからプロセッサまでの応答のための別個のラインが存在し得る。メモリ場所は、ランダムにまたは擬似ランダムに選ばれた多項式によってデータモジュールの端から端まで分散され得る。アーキテクチャは、好ましくは、高度化並列アルゴリズムのための並行メモリアクセスと、オプションとして一定時間にプレフィックスおよびリダクションを計算するためのマルチ演算とを実施する。
マルチ演算は、多数の、オプションとして2つの、連続する命令のシーケンスとして実施することができる。マルチプレフィックスなどのマルチ演算の実行の間に、第1のプロセッサ内マルチプレフィックスを最初に決定することができ、その結果、プロセッサに関する結果が、分散型共有メモリ要素のアクティブメモリモジュールに送出されて、そこで、プロセッサ間マルチプレフィックス(プロセッサ当たり1つの結果)を決定することができ、それに基づいて、最終マルチプレフィックスが、プロセッサ自体内で再び決定され得る。
図5を参照して、メモリユニット500の1つの実施形態がより詳細に開示される。エミュレートされた共有メモリ(ESM)アーキテクチャのインタリーブスレッド間パイプラインを備えたマルチスレッド化プロセッサのデータメモリ参照を扱うためのメモリユニット500は、マルチスレッド実行の進行中のステップの終了までデータが有効のままである連想キャッシュメモリアレイを規定するステップキャッシュ504を含むことができ、前記メモリアレイは、データフィールドをもつ複数のキャッシュラインを組み込み、各ラインは、好ましくは排他的に、アドレスタグのためのデータフィールドと、アドレスタグによって指定されたデータメモリ場所を参照する第1のスレッドのスレッドIDのためのデータフィールドとを含み、スクラッチパッド506が、中間結果などのマルチ演算の内部データを記憶するためのメモリバッファを規定し、前記バッファが、好ましくは排他的に、プロセッサのスレッドごとに単一のデータフィールドを含み、メモリユニット500は、有利には、キャッシュ探索のためのステップキャッシュ504と、異なるクロックサイクルで前記内部データを抽出または記憶するためのスクラッチパッド506とにアクセスするように構成され、マルチ演算実行の間のプロセッサパイプラインの異なる段は、プロセッサによるデータメモリ参照を含む。
オプションとして、メモリユニット500は、プロセッサのスレッドによる任意のデータメモリ参照に応答して、ステップキャッシュ504にアクセスして、参照されたメモリアドレスに一致するアドレスがその中に記憶されたアドレスタグに基づいて見いだされるかどうかを決定し、もしそうなら、すなわち、キャッシュヒットの場合には、一致するアドレスのステップキャッシュラインのスレッドIDデータフィールドからスレッドIDを取り出すように構成される。そのとき、書込みは単に無視され、一方、読出しは、キャッシュからイニシエータデータにアクセスし、応答受取りバッファから結果を抽出することによって完了する(共有メモリに参照を送る理由がない、それは、これがイニシエータスレッドによって既に行われているからである)。
逆に、キャッシュミスの場合には、手順は、現在のスレッドのスレッドIDと、ステップキャッシュ504における参照されたメモリアドレスに対応するアドレスタグとを所定のデータ交換ポリシーを使用して記憶することを含む。したがって、スレッドIDは、キャッシュ504のイニシエータフィールドに記憶される。参照情報をキャッシュラインに記憶するのと同時に、参照自体が共有メモリシステム508に送られ、ペンディングビットがセットされる。読出し操作の応答を共有メモリ508から受け取る際、データは、応答受取りバッファ512のデータフィールドに入れられ、対応するペンディングビットがクリアされる。所定のキャッシュディケイ論理(cache decay logic)が、好ましくは、マルチスレッド実行のステップの間のラインを無効にするのに使用される。
したがって、プロセッサに関連するステップキャッシュ504の各ラインは、単にイニシエータおよびアドレスタグを含むことがある。MU500は単段からのみステップキャッシュ504にアクセスする必要があるので、単一のキャッシュアレイおよび1つのアクセスポートは十分である。
オプションとして、メモリユニット500は、スレッドのための受け取ったメモリ参照データを記憶するために応答受取りバッファ512をさらに含む。バッファ512は、共有メモリシステム508からの入来(応答)メッセージを受け取るように構成される。
応答受取りバッファ512は、マルチポートバッファとすることができ、例えばデータを収容するための2つのデータアレイおよび2つのポートと、例えば2つの連続するステップに関する「ペンディング」フィールドとを含み、その結果、バッファは少なくとも非明示的にステップ認識するかまたはステップアドレス指定可能である。さらに、スレッドIDは、好ましくは、データをアクセスするために利用される。
様々な実施形態において、ステップデータは、例えばスレッド専用データフィールドまたはレジスタを使用して記憶することができる。さらに、メモリ参照メッセージは、好ましくは、ステップデータのためのフィールドを含む。
オプションとして、メモリユニット500は、メモリ書込みまたは読出し操作に関してステップキャッシュミスの場合には、それぞれ、中に記憶するかまたは応答受取りバッファ512を介して参照データを抽出するために共有メモリシステム508にメモリ参照を送るように、書込み操作に関してステップキャッシュヒットの場合には、書込み操作を無視するように、および読出し操作に関してステップキャッシュヒットの場合には、抽出または記憶されたスレッドIDを用いて応答受取りバッファ512から結果を取り上げるように構成される。
オプションとして、メモリユニット500は、マルチ演算に関連して、プロセッサ内マルチ演算結果を計算し、それを共有メモリシステム508に送るために、抽出または記憶されたスレッドIDを用いて、スクラッチパッド506にアクセスする、すなわち、それにデータを記憶し、それからデータを抽出するように構成され、メモリユニットは、最終マルチ演算結果(マルチプレフィックス)を決定するために、応答受取りバッファ512において共有メモリシステム508から受け取ったデータと前記プロセッサ内結果の両方を利用するようにさらに構成され得る。
オプションとして、メモリユニットは、本明細書で説明されるようにステップキャッシュにアクセスするように構成されたハッシュおよびコンポーズユニット(HCU:hash and compose unit)502を備える。ハッシュおよびコンポーズユニット502は、好ましくは、ハッシュおよびコンポーズユニットによって排他的に使用されるように潜在的に構成されたアクセスポート、好ましくは単一のアクセスポートを介してステップキャッシュ504に結合される。ハッシュおよびコンポーズユニット502は、プロセッサ(例えば、演算レジスタにおける)によって示されたメモリ操作、与えられたメモリアドレス(例えば、MARレジスタにおいて)、与えられたメモリデータ(例えば、MDRレジスタにおいて)、スレッドID、ステップカウンタの最下位ビット(LSB)、およびステップキャッシュアクセスの結果(すなわち、キャッシュ探索がヒットであったかまたはミスであったかに応じたキャッシュ探索の結果の種類)からなる群から選択された少なくとも1つの要素に基づいてメモリ参照メッセージを構築するように構成することができる。
HCU502は、実際は、メモリ参照のためのハッシュアドレスを計算し、MDRレジスタにおいて与えられたメモリデータ、MARレジスタにおいて与えられたメモリアドレス、スレッド識別名、演算レジスタからのメモリ操作、およびステップカウンタのLSBの所定の数値に基づいて、出て行くメモリ参照メッセージを構成し、ならびにメモリ参照の状態(マルチスレッド実行の現在のステップの間にいずれかのスレッドによって既に参照されたかまたは参照されていないか)を決定するためにステップキャッシュ504にアクセスすることができる。
いくつかの実施形態では、ステップキャッシュ504はマルチウェイセット連想ステップキャッシュ(multi-way set associative step cache)として実装することができる。
例えば、その中のアドレスは、オプションとして、ランダムに選択されたハッシング関数を利用してハッシュされ得る。次に、HCU502は、メモリ参照のためのハッシュアドレスを計算するために利用される。
オプションとして、メモリユニット500は、本明細書で説明されるように、スクラッチパッドにアクセスするように構成されたメモリ要求送出論理エンティティ510を備える。スクラッチパッドは、送出論理エンティティによって排他的に使用されるように潜在的に構成されたアクセスポート、好ましくは単一のアクセスポートを介してアクセスされ得る。
送出論理エンティティ510は、ハッシュおよびコンポーズユニット502によって供給されるメモリメッセージに従ってメモリ参照を共有メモリシステムに送るように構成することができる。メモリ操作に基づいて、送出論理510は、マルチ演算の中間結果、またはプロセッサ内結果を決定し、内部メモリ(マルチ)操作の結果などの内部データを(高速)応答として、好ましくはメモリ応答待ちキュー512bを介して応答受取りバッファ512の方に供給するように構成することができる。
関連する実施形態では、メモリユニット500は、いくつかのパイプライン段に関連する応答待ちキュー512bをさらに含み、そのキューは、メモリ要求送出論理エンティティ510と応答受取りバッファ512とを接続し、その結果、例えば、送出論理からの高速応答を、応答受取りバッファの方に適切な順序で注ぎ込んで、共有メモリから受け取った関連するメモリ参照結果を適時に抽出し、続いて、受取りALU512cを使用して最終結果を引き出すことができる。操作に基づいて、メモリ参照送出論理510は、スクラッチパッド506にアクセスし、参照を途中で共有メモリシステム508に送るか、またはスクラッチパッド506におけるデータを利用して内部メモリ操作結果を計算することができ、結果を(高速)応答としてメモリ応答待ちキュー512bにもたらす。多段応答待ちキュー512bの最終段は、同じイニシエータ(スレッドID)をもつ応答が既に到着したかどうかを決定するために応答受取りバッファ512にアクセスすることができる。否定の場合には、パイプラインは、応答が到着するまで保留することができる。さもなければ、応答は、操作に応じて受取りALU512cにおいてさらなる処理を受ける。応答バッファ512は、ペンディングビットと、マルチスレッド実行の2つの連続するステップからのデータとを記憶するので、排他的にまたは少なくとも2つのデータアレイおよび2つのポートを含むことができる。
マルチ演算は、好ましくは、内部データをスクラッチパッド506に書き込むために2つの命令のシーケンスを使用することによって実施され、イニシエータは、ステップキャッシュ504およびいわゆるイニシエータレジスタ(参照の残りをそれにリンクするための、図に示さず)に記憶され、一方、マルチ演算のためのペンディングビットは、スクラッチパッド506ではなく応答受取りバッファ512に保持され、応答データは、ステップキャッシュ504またはスクラッチパッド506ではなく応答受取りバッファ512に記憶され、マルチ演算のうちの終了演算のための応答データは、ステップキャッシュ504またはスクラッチパッド506からではなく応答受取りバッファ512から抽出される(マルチ演算の実施態様の一例に関する表1を参照)。
その結果、当業者は、この開示および一般的知識に基づいて、特定の使用事例ごとに、もしあれば、必要な変更、削除、および追加を伴って添付の特許請求の範囲によって定義されるような本発明の範囲を実施するために提供された教示を利用することができる。一般に、本明細書に記載された様々な原理は、当業者なら容易に理解されるように、1つの明確に説明されたESMアーキテクチャと異なるプロセッサアーキテクチャにおいても利用され得る。
102 プロセッサ
104 命令メモリモジュール
106 スクラッチパッドステップキャッシュユニット
108 高帯域相互接続ネットワーク
108B スイッチ
110 アクティブメモリユニット
112 データメモリ、データメモリモジュール
112B アクティブメモリユニット
200 ESM CMPアーキテクチャの1つの具体例
206B スクラッチパッド
300 高レベルブロック図およびパイプライン
302 算術論理ユニット
304 メモリユニット段
306 OS、被演算子選択論理
308 IF、命令フェッチ論理
310 SEQ、シーケンサ
400 浮動小数点認識ESMパイプラインアーキテクチャ
402、402b、402c 算術論理ユニット、機能ユニット
404、404b、404c 浮動小数点ユニット、機能ユニット
406 OS、レスポンシブル論理
408 IF、命令フェッチ論理
410 SEQ、シーケンサ
412 メモリアクセスセグメント
412a MEM、メモリアクセス段
414 整数ブランチ、第1のサブグループ
416 浮動小数点ブランチ、第2のサブグループ
500 メモリユニット
502 ハッシュおよびコンポーズユニット
504 ステップキャッシュ
506 スクラッチパッド
508 共有メモリシステム
510 メモリ要求送出論理エンティティ、メモリ参照送出論理
512 応答受取りバッファ
512b メモリ応答待ちキュー
512c 受取りALU

Claims (10)

  1. エミュレートされた共有メモリ(ESM)アーキテクチャのためのプロセッサアーキテクチャ構成体であって、
    複数のマルチスレッドプロセッサを備え、当該複数のマルチスレッドプロセッサの各々がインタリーブスレッド間パイプライン(400)と、データに算術演算および論理演算を実行するための複数の機能ユニット(402、402b、402c、404、404b、404c)とを備え、
    前記パイプライン(400)が少なくとも2つの動作可能に並列なパイプラインブランチ(414、416)を含み、第1のパイプラインブランチ(414)が、整数演算を実行するように配列された、ALU(算術論理ユニット)などの前記複数の機能ユニット(402、402b、402c)の第1のサブグループを含み、第2のパイプラインブランチ(416)が、浮動小数点演算を実行するように配列された、FPU(浮動小数点ユニット)などの前記複数の機能ユニット(404、404b、404c)の第2の非オーバーラップのサブグループを含み、
    さらに、浮動小数点演算のために配列された少なくとも前記第2のサブグループの前記機能ユニット(404b)のうちの1つまたは複数が、前記パイプライン(400)のメモリアクセスセグメント(412、412a)と動作可能に並列に配置される、プロセッサアーキテクチャ構成体。
  2. 前記第1のサブグループの前記機能ユニット(402b)のうちの1つまたは複数が、前記パイプライン(400)の前記メモリアクセスセグメント(412、412a)と動作可能に並列に配置される、請求項1に記載のプロセッサアーキテクチャ構成体。
  3. 前記第2のブランチ(416)における前記第2のサブグループの前記機能ユニットのうちの少なくとも2つ以上が共に連鎖され、機能ユニットが、演算結果を前記連鎖における後続のユニットに被演算子として渡すことができる、請求項1または2に記載のプロセッサアーキテクチャ構成体。
  4. 前記第1および/または第2のブランチ(414、416)におけるいくつかの機能ユニット(402、404)が、メモリの前に機能的に位置づけられ、いくつか(402b、404b)が、前記メモリアクセスセグメント(412、412a)と並列に機能的に位置づけられ、いくつか(402c、404c)が、オプションとして、前記メモリアクセスセグメント(412、412a)の後に機能的に位置づけられる、請求項1から3のいずれかに記載のプロセッサアーキテクチャ構成体。
  5. 前記第2のサブグループの少なくとも2つのユニット(404b、404c)が、演算実行待ち時間に関して互いに異なる複雑さのものである、請求項1から4のいずれかに記載のプロセッサアーキテクチャ構成体。
  6. より長い待ち時間に関連するユニット(404b)が、前記メモリアクセスセグメント(412、412a)の端部分と論理的に並列に配置される、請求項5に記載のプロセッサアーキテクチャ構成体。
  7. 1つまたは複数の機能ユニットが、命令語のいくつかの演算選択フィールド(408)により制御される、請求項1から6のいずれかに記載のプロセッサアーキテクチャ構成体。
  8. 機能ユニットのいくつかの被演算子が、命令語で与えられたいくつかの被演算子選択フィールドによる前記パイプラインの被演算子選択段(406)において決定される、請求項1から7のいずれかに記載のプロセッサアーキテクチャ構成体。
  9. 前記第2のブランチ(416)の前記機能ユニットの第2のサブグループが、少なくとも1つの浮動小数点演算を実行するように構成された少なくとも1つのユニット(404、404b、404c)を含み、前記少なくとも1つの浮動小数点演算は、加算、減算、乗算、除算、比較、整数から浮動小数点への変換、浮動小数点から整数への変換、平方根、対数、および、べき乗、からなる群から選択される、請求項1から8のいずれかに記載のプロセッサアーキテクチャ構成体。
  10. 前記第2のサブグループの第1の機能ユニット(404)が、複数の浮動小数点演算を実行するように構成され、前記第2のサブグループの第2の機能ユニット(404b)が、1つまたは複数の他の浮動小数点演算を実行するように構成される、請求項1から9のいずれかに記載のプロセッサアーキテクチャ構成体。
JP2016526075A 2013-10-23 2014-10-23 エミュレートされた共有メモリアーキテクチャのための浮動小数点サポートパイプライン Active JP6469674B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP13189861.1 2013-10-23
EP13189861.1A EP2866138B1 (en) 2013-10-23 2013-10-23 Floating-point supportive pipeline for emulated shared memory architectures
PCT/FI2014/050804 WO2015059362A1 (en) 2013-10-23 2014-10-23 Floating-point supportive pipeline for emulated shared memory architectures

Publications (2)

Publication Number Publication Date
JP2016534433A true JP2016534433A (ja) 2016-11-04
JP6469674B2 JP6469674B2 (ja) 2019-02-13

Family

ID=49513730

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016526075A Active JP6469674B2 (ja) 2013-10-23 2014-10-23 エミュレートされた共有メモリアーキテクチャのための浮動小数点サポートパイプライン

Country Status (6)

Country Link
US (2) US11797310B2 (ja)
EP (1) EP2866138B1 (ja)
JP (1) JP6469674B2 (ja)
KR (1) KR102279200B1 (ja)
CN (1) CN105814538B (ja)
WO (1) WO2015059362A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983932B2 (en) 2018-04-19 2021-04-20 Fujitsu Limited Processor and information processing apparatus

Families Citing this family (6)

* 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
US11106494B2 (en) * 2018-09-28 2021-08-31 Intel Corporation Memory system architecture for multi-threaded processors
EP3671457A1 (en) * 2018-12-21 2020-06-24 Teknologian tutkimuskeskus VTT Oy Method and arrangement for handling memory access for a tcf-aware processor
US11803391B2 (en) * 2020-10-20 2023-10-31 Micron Technology, Inc. Self-scheduling threads in a programmable atomic unit
CN114528101A (zh) * 2022-02-14 2022-05-24 贵州电网有限责任公司 一种应用于电力边缘计算的神经网络的结构化动态量化方法
US20240061650A1 (en) * 2022-08-18 2024-02-22 Apple Inc. Floating-Point Execution Circuitry for Subset of Binary Logarithm Input Range

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995016952A1 (en) * 1993-12-15 1995-06-22 Silicon Graphics Inc. Superscalar microprocessor instruction pipeline including instruction dispatch and release control
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US20080141253A1 (en) * 2006-12-11 2008-06-12 Luick David A Cascaded Delayed Float/Vector Execution Pipeline
JP2010073197A (ja) * 2008-09-19 2010-04-02 Internatl Business Mach Corp <Ibm> 多重プロセッサ・コア・ベクトル・モーフ結合機構

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2007059C (en) * 1989-01-27 1994-05-24 Steven P. Davies Register and arithmetic logic unit
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US5864692A (en) * 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US5922065A (en) * 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
WO2000008555A1 (en) * 1998-08-06 2000-02-17 Koninklijke Philips Electronics N.V. Data processing device
JP3770836B2 (ja) * 2002-01-23 2006-04-26 株式会社ルネサステクノロジ 高速に電源スイッチのオンオフが可能な論理回路及び同論理回路における電流低減方法
US20030154227A1 (en) * 2002-02-08 2003-08-14 Intel Corporation Multi-threaded multiply accumulator
EP1367485B1 (en) * 2002-05-31 2012-10-31 STMicroelectronics Limited Pipelined processing
US20080160496A1 (en) 2005-02-22 2008-07-03 Victor Rzepakovsky Preserved Viable Cartilage, Method for Its Preservation, and System and Devices Used Therefor
US20060200651A1 (en) * 2005-03-03 2006-09-07 Collopy Thomas K Method and apparatus for power reduction utilizing heterogeneously-multi-pipelined processor
CN101021832A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 支持局部寄存和条件执行的64位浮点整数融合运算群
CN103150146B (zh) * 2013-01-31 2015-11-25 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995016952A1 (en) * 1993-12-15 1995-06-22 Silicon Graphics Inc. Superscalar microprocessor instruction pipeline including instruction dispatch and release control
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US20080141253A1 (en) * 2006-12-11 2008-06-12 Luick David A Cascaded Delayed Float/Vector Execution Pipeline
JP2010073197A (ja) * 2008-09-19 2010-04-02 Internatl Business Mach Corp <Ibm> 多重プロセッサ・コア・ベクトル・モーフ結合機構

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
MARTTI FORSELL: "MTAC - A Multithreaded VLIW Architecture for PRAM Simulation", JOURNAL OF UNIVERSAL COMPUTER SCIENCE, vol. 3, no. 9, JPN6018032807, 28 September 1997 (1997-09-28), pages 1037 - 1055, ISSN: 0003864560 *
MARTTI FORSELL: "TOTAL ECLIPSE - An Efficient Architectural Realization of the Parallel Random Access Machine", PARALLEL AND DISTRIBUTED COMPUTING, JPN6018032808, January 2010 (2010-01-01), pages 39 - 64, XP055089190, ISSN: 0003864561, DOI: 10.5772/56724 *
MARTTI J. FORSELL: "Architectural differences of efficient sequential and parallel computers", JOURNAL OF SYSTEMS ARCHITECTURE, vol. Vol:47, Issue:13, JPN6018032809, July 2002 (2002-07-01), pages 1017 - 1041, ISSN: 0003864562 *
岡本一晃,外4名: "超並列計算機におけるマルチスレッド処理機構と基本性能", 情報処理学会論文誌, vol. 37, no. 12, JPN6018032811, 15 December 1996 (1996-12-15), JP, pages 2398 - 2407, ISSN: 0003864563 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983932B2 (en) 2018-04-19 2021-04-20 Fujitsu Limited Processor and information processing apparatus

Also Published As

Publication number Publication date
EP2866138B1 (en) 2019-08-07
WO2015059362A1 (en) 2015-04-30
US20240004666A1 (en) 2024-01-04
KR20160074638A (ko) 2016-06-28
CN105814538B (zh) 2020-04-14
EP2866138A1 (en) 2015-04-29
US11797310B2 (en) 2023-10-24
CN105814538A (zh) 2016-07-27
US20160283249A1 (en) 2016-09-29
KR102279200B1 (ko) 2021-07-19
JP6469674B2 (ja) 2019-02-13

Similar Documents

Publication Publication Date Title
JP6469674B2 (ja) エミュレートされた共有メモリアーキテクチャのための浮動小数点サポートパイプライン
US10073782B2 (en) Memory unit for data memory references of multi-threaded processor with interleaved inter-thread pipeline in emulated shared memory architectures
KR20050073484A (ko) 토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치
US11726912B2 (en) Coupling wide memory interface to wide write back paths
TWI613590B (zh) 處理器流水線中的靈活的指令執行
US11061817B2 (en) Memory node with cache for emulated shared memory computers
US10127048B2 (en) Architecture for long latency operations in emulated shared memory architectures
Duric et al. Evx: Vector execution on low power edge cores
US11960897B2 (en) Apparatus and methods employing a shared read post register file
EP3671457A1 (en) Method and arrangement for handling memory access for a tcf-aware processor
Paakkulainen et al. Outline of risc-based core for multiprocessor on chip architecture supporting moving threads
Georg Designing a Dual Core Processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170919

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190116

R150 Certificate of patent or registration of utility model

Ref document number: 6469674

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