JP2018521427A - 可変レーンアーキテクチャのためのシステムおよび方法 - Google Patents

可変レーンアーキテクチャのためのシステムおよび方法 Download PDF

Info

Publication number
JP2018521427A
JP2018521427A JP2018504845A JP2018504845A JP2018521427A JP 2018521427 A JP2018521427 A JP 2018521427A JP 2018504845 A JP2018504845 A JP 2018504845A JP 2018504845 A JP2018504845 A JP 2018504845A JP 2018521427 A JP2018521427 A JP 2018521427A
Authority
JP
Japan
Prior art keywords
computing nodes
computing
node
task
memory
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.)
Pending
Application number
JP2018504845A
Other languages
English (en)
Inventor
スシュマ・ウォクル
アラン・ギャザラー
アシシュ・ライ・シュリヴァスタヴァ
Original Assignee
ホアウェイ・テクノロジーズ・カンパニー・リミテッド
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 ホアウェイ・テクノロジーズ・カンパニー・リミテッド filed Critical ホアウェイ・テクノロジーズ・カンパニー・リミテッド
Publication of JP2018521427A publication Critical patent/JP2018521427A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • G06F9/3897Concurrent 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 with adaptable data path
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

可変レーンアーキテクチャのためのシステムおよび方法は、メモリバンク内に位置するメモリブロックと、タスクを実行するためのベクトル命令パイプラインを形成する1つまたは複数のコンピューティングノードであって、コンピューティングノードの各々がメモリバンク内に位置し、コンピューティングノードの各々がコンピューティングノードのうちの他のコンピューティングノードと無関係にタスクの一部分を実行する、コンピューティングノードと、タスクを実行するためのスカラー命令パイプラインを形成するグローバルプログラムコントローラユニット(GPCU)であって、GPCUがコンピューティングノードのうちの1つまたは複数においてタスク用の命令をスケジュールするように構成され、GPCUがコンピューティングノードの各々によって使用されるメモリブロック用のアドレスをコンピューティングノードにディスパッチするようにさらに構成される、GPCUとを含む。

Description

関連出願の相互参照
本出願は、2016年7月26日に出願され、「System and Method for Variable Lane Architecture」と題する、米国特許通常出願第15/220,067号の利益を主張し、第15/220,067号は、2015年7月30日に出願された米国仮特許出願第62/198,886号に対する優先権を主張し、それらの出願は参照により本明細書に組み込まれる。
本発明は、一般に、コンピュータアーキテクチャに関し、特定の実施形態では、可変レーンアーキテクチャのためのシステムおよび方法に関する。
一般に、ワイヤレスベースバンド(BB)システムなどのリアルタイムシステムは、データフローシステムである。データフローシステムでは、無線フレーム内のシンボルなどのシーケンシャルデータシンボルは普通異なり、通常、決定性計算のために共有メモリ位置から特定のメモリ位置に移動する。共有メモリは、通常、そのような計算が実施されるところから離れて位置し、特定のメモリは、通常、そのような計算が実施されるところの近くに位置する。
ワイヤレスBBシステムでは、複数のユーザは、様々な無線リソース割振りでサポートされる。これらの様々な割振りは、単一命令複数データ(SIMD)システムにおいて、いくつかの制限付きで、グループとして計算することができる。SIMD計算は、SIMD命令をサポートするために、大量のデータの移動、操作、および再編成を必要とし、それにより、電力消費が増大し、複数の場所にデータの冗長コピーを保持するために余分のメモリが必要とされる。大きなSIMDプロセッサ内のスケジューリングタスクはより複雑な場合がある。さらに、SIMDを効率的に利用するために、アルゴリズムを作成し、コンパイルしなければならない。結果として、大きなSIMDプロセッサは、データフローシステムのパフォーマンスを理論的には向上させることができるが、これらのパフォーマンス向上を得ることは非現実的かつ困難である。
本発明の好ましい実施形態によれば、プロセッサは、メモリバンク内に位置するメモリブロックと、タスクを実行するためのベクトル命令パイプラインを形成する1つまたは複数のコンピューティングノードであって、コンピューティングノードの各々がメモリバンク内に位置し、コンピューティングノードの各々がコンピューティングノードのうちの他のコンピューティングノードと無関係にタスクの一部分を実行する、コンピューティングノードと、タスクを実行するためのスカラー命令パイプラインを形成するグローバルプログラムコントローラユニット(GPCU)であって、GPCUがコンピューティングノードのうちの1つまたは複数においてタスク用の命令をスケジュールするように構成され、GPCUがコンピューティングノードの各々によって使用されるメモリブロック用のアドレスをコンピューティングノードにディスパッチするようにさらに構成される、GPCUとを含む。
本発明の好ましい実施形態によれば、方法は、タスク用のプログラムコードを受信することと、タスクを実施するように複数のコンピューティングノードを割り当てることと、複数のコンピューティングノードの各々にプログラムコード用の第1のフェッチパケットおよび第1のフェッチパケット用の第1のそれぞれのデータポインタをディスパッチすることと、各ノードがノードにディスパッチされた第1のフェッチパケットの実行を完了することに応答して、複数のコンピューティングノードの各ノードからビートを受け取ることと、受け取ったビートに従って複数のコンピューティングノードによりプログラムコードの実行を追跡することとを含む。
本発明の好ましい実施形態によれば、プログラム制御ユニットは、第1のタスク用のプログラムコードを復号するように構成された超長命令語(VLIW)バンドルディスパッチャと、プログラムコード用のデータポインタを割り当てるように構成されたデータアドレス生成および編成(DAGO)ユニットと、複数のコンピューティングノードに結合されるように構成されたスケジューラであって、スケジューラが、プログラムコードを実行するように複数のコンピューティングノードを割り振るように構成され、スケジューラが、複数のコンピューティングノードの第1のサブセットに第1のスレッドを割り振り、複数のコンピューティングノードの第2のサブセットに第2のスレッドを割り振るように構成される、スケジューラとを含む。
本発明およびその利点をより完全に理解するために、次に、添付図面と併用される以下の説明に対して参照が行われる。
データフローシステムの図である。 処理システムのブロック図である。 処理システムのブロック図である。 処理システムのブロック図である。 処理システムのブロック図である。 RIMDコンピューティングノードのブロック図である。 RIMD命令実行についてのタイミング図である。 RIMD処理方法についてのフロー図である。 処理システムのブロック図である。
様々な実施形態によれば、ベクトルデータは高速メモリおよび演算器の近くに記憶される場合がある。演算器の近くにデータを記憶すると、不均等メモリーアクセス(NUMA)アーキテクチャ上の効率的かつ決定論的なタスク実行が可能になる場合がある。高速メモリは、キャッシュ、プライベートL1(PL1)メモリなどを含む場合がある。高速メモリにデータを記憶すると、データが非常に迅速にアクセスされることが可能になるが、タスク実行より前にデータセット全体がロードされることが必要とされる場合がある。高速メモリは小さく、高速メモリに適合するタスクのサイズを制限し、高速メモリ内のデータがより大容量のメモリにフラッシュアウトされると、タスクの実行が機能停止する。ピンポンスケジューリング方式は、実行より前にデータセットをロードする待ち時間を改善することができるが、そのような方式は、現在のジョブおよび次のジョブ用のデータがメモリにロードされていることを必要とするので、必要なメモリを増大させてしまう。集中型共有メモリ方式は容量問題を解決するように試みるが、より長い待ち時間を被る場合がある。より大きいキャッシュは、容量問題および待ち時間問題を解決する助けになる場合があるが、さらなるレベルの設計を加えると、複雑度が増し、干渉問題が発生する場合がある。
図1はデータフローシステム100の図である。データフローシステム100は、ワイヤレスベースバンドシステム内のベクトル計算中に行われる動作を示す。ベクトル内の各要素は、命令が実行されるときにそこで実施される同じ計算を有する場合がある。そのため、ベクトル計算システムは複数のレーンを含むものと呼ばれる場合があり、各レーンはベクトルの要素に対する命令を実行する。データフローシステム100は、アンテナ空間と、ビーム空間と、ユーザ空間とを含む。データは送信中に各空間を通って流れる。たとえば、ベクトルデータは最初にアンテナ空間を通って流れ、アンテナが選択される。次いで、ベクトルデータはビーム空間を通って流れ、アンテナ用のビームが選択される。次いで、ベクトルデータはユーザ空間を通って流れ、ブロードキャストされるコードまたはシーケンスが選択される。アンテナ空間、ビーム空間、およびユーザ空間では、異なる計算が実施される。すなわち、データフローシステム100内のベクトルデータは、データフローシステム100のポイント102および104において、たとえば、各空間の間で、操作および/または再編成されなければならない。ベクトルデータは、各々の次の空間内のアルゴリズムのために準備され得るように操作される。たとえば、各空間内のアルゴリズムは、異なるサイズのデータベクトルに対して動作することができる。加えて、データはポイント102および104においてあらかじめフェッチされる必要があり得る。本説明はワイヤレスベースバンドシステムとの関連で提示されるが、データフローシステム100は任意のシステムの一部であり得ることを諒解されたい。
実施形態は、動的にプログラム可能で分散されたコンピューティングノードに基づくスケーラブル可変長マルチレーンアーキテクチャを提供する。実施形態のマルチレーンシステムは、「緩和命令複数データ」(RIMD)システムと呼ばれる場合がある。RIMDアーキテクチャはSIMDアーキテクチャよりも効率的であり得る。いくつかの実施形態では、RIMDコンピューティングノードはシステムメモリとコロケートされる。そのような実施形態では、RIMDコンピューティングノードは、最初に近くのメモリバンクにデータをコピーすることなく、リモートメモリバンクに直接アクセスすることができる。リモートメモリバンクから近くのメモリバンクにデータを移動またはコピーすることは、低速動作であり得る。コンピューティングノードをメモリのより近くに配置すると、データ移動の量が低減され、アクセス速度が上がる場合がある。いくつかの実施形態では、タスクまたはプログラム用の命令は、メモリを介して、グローバルプログラムコントローラユニット(GPCU)からコンピューティングノードに伝搬される。
実施形態は、プロセッサのパイプラインをスカラー処理部分とベクトル処理部分に分割する。ベクトル処理部分はRIMDパイプラインである。SIMDプロセッサは、通常、ロックステップ実行でデータベクトルに対する計算を実施し、ベクトル内の各要素はSIMDパイプラインが続く前に処理される。
実施形態は、ロックステップ実行の必要姓を取り除き、可変長マルチレーンが任意の数のコンピューティングノードを含み、したがって任意の長さのデータベクトルを処理することを可能にする。プロセッサのスカラー処理部分は、プロセッサのベクトル処理部分を構成し、ベクトル処理部分にプログラミングをディスパッチする。
RIMDパイプライン内の各コンピューティングノードは、他のコンピューティングノードと無関係な命令を実行する。いくつかの実施形態では、RIMDパイプラインのすべてのレーンは、同時に、または同じクロックサイクルで命令を実行する場合も、実行しない場合もある。そのような実施形態では、RIMDパイプラインの様々なレーンは、時間領域内でシフトされる。シフトは、コンピューティングノードにおいて命令および/またはデータをバッファリングするためにRIMDシステムの能力によって決められるように、1クロックサイクルくらい小さく、最大数のクロックサイクル以下であり得る。
コンピューティングノードは単独で実行し、様々なクロックサイクルであり得るので、コンピューティングノードは、互いに関係なく機能停止する場合があり、単一のコンピューティングノードの機能停止の全体的なパフォーマンスインパクトが低減される。コンピューティングノードは単独で命令を実行するので、リモートメモリから近くのメモリにデータを移動させることなく、メモリにアクセスすることができる。リモートメモリに対するメモリアクセス動作は低速であり得るが、メモリパフォーマンスの不利益は、データを認識しキャッシュする必要性を除去すること、およびロックステップ方式で命令を実行する必要性を除去することから実現されるパフォーマンス向上よりも小さい場合がある。コンピューティングノードはロックステップで命令を実行しないので、ベクトルパイプラインの各レーンは、システムメモリの待ち時間に適応することができる。それに応じて、RIMDプロセッサは、SIMDプロセッサと比較して全体的なパフォーマンス向上を有することができる。そのようなプロセッサは、分割遅延適応パイプライン(SLAP)プロセッサと呼ばれる場合がある。
図2は処理システム200のブロック図である。処理システム200は、データフローシステム100内の空間のうちの1つまたは複数のための複数データ計算を実施する。処理システム200は、GPCU202と、ベクトル命令パイプライン204と、メモリ206とを含む。GPCU202は、ベクトル命令パイプライン204およびメモリ206に結合される。メモリ206も、ベクトル命令パイプライン204に結合される場合がある。
GPCU202は、処理システム200内の命令の実行を追跡し管理する。データ処理は、処理システム200内のレーンのうちの1つまたは複数において機能停止する場合がある。GPCU202は各レーン内の機能停止を追跡し、各レーンの進捗に基づいて処理するために各レーンに命令を分配する。スカラー命令パイプラインを形成する機能ユニットがGPCU202とともに含まれ、それらは、ベクトル命令パイプライン204を作成し維持する制御動作を実施するために使用される場合がある。制御動作には、プログラムフローの変更、入力データアドレスおよび出力データアドレスの計算および/または操作、ローカル、集中型、または分散型のオペレーティングシステムと対話する動作、割込み処理、メモリ割振りなどが含まれる場合がある。スカラー制御動作は、Cデータタイプなどの標準のデータタイプを使用し操作する。いくつかの実施形態では、GPCU202はLinux(登録商標)などのオペレーティングシステムを実行するシステムである。
ベクトル命令パイプライン204は、各々がベクトルデータタイプに対して数学的な計算を実施する複数のレーンを含む。ベクトル命令パイプライン204は、複数のコンピューティングノードを有するRIMDパイプラインであり、各コンピューティングノードは、他のコンピューティングノードと無関係な命令を処理する。ベクトル命令パイプライン204内のコンピューティングノードは、ロックステップ方式で動作しなくてよく、各々、同じかまたは異なるサイクルで命令を実行してよい。タスクまたはスレッドは、ベクトル命令パイプライン204内の任意の数のRIMDコンピューティングノードによる実行用に構築される場合がある。詳細には、GPCU202は、ベクトル命令パイプライン204内の可変数のRIMDコンピューティングノードを動的にグループ化して、SIMDマシンと同様のパイプラインを形成することができる。形成されたパイプラインは、SIMDと互換性があるように再編成されることをデータに要求することなどの、SIMDが有する欠点をもたない場合がある。
ベクトル命令パイプライン204は、様々なタイプのアルゴリズムに対してスケーラブルで、柔軟で、効率的であり得る。特定のアルゴリズムのためにベクトル命令パイプライン204内に割り振られるRIMD計算ノードの数は可変であり得るし、そのアルゴリズム用のレーンの数を最適化するように選択される場合がある。RIMDコンピューティングノードの数を最適化すると、電力の節約が増やされる場合があり、不要なノードの電源が切られる場合がある。
メモリ206はリモートメモリであってよく、またはキャッシュなどの近くのメモリであってよい。メモリ206は複数のメモリブロックを含む共有メモリである。ベクトル命令パイプライン204内の各RIMDは、単独でメモリ206にアクセスする。そのため、ベクトル命令パイプライン204がメモリ206に正しくアクセスするために、データは、再編成、操作、または整列される必要がない場合がある。共有メモリは分散され、ベクトル命令パイプライン204内の各RIMDがアクセスする中央位置をもたなくてよい。それらは別々のブロックとして示されているが、ベクトル命令パイプライン204のコンピューティングノードはメモリ206内に位置することを諒解されたい。メモリ206内のメモリバンクまたはノードは、近くのコンピューティングノードによって共有される。ベクトル命令パイプライン204のコンピューティングノードをメモリ206内に配置すると、パフォーマンスが向上し、データ移動のコストが低減され、メモリアクセス動作の数が低減される場合がある。
図3は処理システム300のブロック図である。処理システム300は、ベクトル命令パイプライン204がコンピューティングノード302と、命令バッファ304と、データバッファ306とを含むことを除き、処理システム200と同様である。GPCU202は、コンピューティングノード302向けの命令を命令バッファ304に送る。命令バッファ304は、たとえばキューであり得る。コンピューティングノード302は、各々、それらのコンピューティングノードが現在の命令の実行を完了すると、命令バッファ304から実行用のさらなる命令をフェッチする。そのため、バッファリングされた命令はフェッチパケットと呼ばれる場合がある。データバッファ306はキューの場合があり、コンピューティングノード302がメモリ206に記憶するデータをバッファリングする。加えて、データバッファ306はメモリ206からの読込みデータをバッファリングすることができ、メモリ206から読み込まれたデータを並び替えることができる。いくつかの実施形態では、GPCU202は、データに対する読込み要求をデータバッファ306にディスパッチし、その結果、データは正しい順序で適切なコンピューティングノード302に到達する。
GPCU202は、いくつかの方式でコンピューティングノード302をスケジュールすることができる。いくつかの実施形態では、GPCU202は半ばランダムにコンピューティングノード302をスケジュールする。いくつかの実施形態では、GPCU202は、命令がアクセスするメモリ206のバンクの近くに位置するコンピューティングノード302に命令を置くことに最大限の努力をするように試みる。
ベクトル命令パイプライン204は、コンピューティングノード302に命令を効率的に分配するアービタ(図示せず)も含む。いくつかの実施形態では、コンピューティングノード302は、直接メモリアクセス(DMA)を使用して、コンピューティングノード302のうちの1つに近いメモリ206の部分から、別のコンピューティングノードに近いメモリ206の部分にデータをコピーする。データを直接コピーすると、中間コピー動作を回避することにより、メモリへのより速いアクセスが可能になる場合がある。そのような実施形態では、DMA動作は、コンピューティングノード302の中のDMAマスタの数のバランスを取って、より少ないオープンDMA接続を有するコンピューティングノード302にスケジュールされる場合がある。
図4は処理システム400のブロック図である。処理システム400は、コンピューティングノード302の各々がそれら自体の命令バッファ402およびデータバッファ404を有することを除き、処理システム300と同様である。コンピューティングノード302の各々とともに命令バッファ402を含むことにより、コンピューティングノード302は、互いおよびGPCU202からさらに分離される。そのため、ベクトル命令パイプライン204のレーンのうちの1つにおける機能停止は、他のレーンにおける機能停止を引き起こさない場合がある。
各命令バッファ402は、GPCU202がプログラム実行を記録する助けとなるビート機構を含む。命令バッファ402は、コンピューティングノード302が命令バッファ402内の命令の実行を終了するたびに、GPCU202にビートを送る。ビートは、たとえば、1ビットの偶数通知であり得る。いくつかの実施形態では、GPCU202は、命令バッファ402から送られたビートをカウントすることにより、コンピューティングノード302の各々における機能停止を追跡する。カウントされたビートの数がしきい値を超えると、たとえば、コンピューティングノード302がかなり遅れ過ぎると、GPCUは命令バッファ402への命令のスケジューリングを減速または停止することができる。いくつかの実施形態では、命令バッファ402は、各々、完全なフェッチパケットをバッファリングすることができる。
上述したように、コンピューティングノード302は、互いと無関係な命令を実行し、そのため、互いと無関係に機能停止する場合がある。無関係な機能停止は、処理システム400における機能停止の全体的な影響を低減することができる。コンピューティングノード302は同じプログラムを実行するが、コンピューティングノード302は単独で停止またはクロック制御される場合があり、それらのメモリアクセスを低減し、他のコンピューティングノード302とは異なるデータのユニークなパターンにアクセスする。そのような単独の実行および機能停止により、RIMDシステム内の電力消費が低減され、コンピューティングノード302のうちの複数が、単一の命令で同じメモリバンク内のデータにアクセスすることが可能になる場合がある。いくつかの実施形態では、コンピューティングノード302のうちの複数が同じメモリ位置に同時にアクセスするように試みると、GPCU202は、メモリ内の共通データにアクセスし、次いで、命令バッファ402を使用して、すべての要求ノードにデータをブロードキャストすることができる。そのような実施形態では、データは命令バッファ402内の命令内のフィールドであり得る。
いくつかの実施形態では、GPCU202は、命令バッファ402の各々からのビートを使用して、コンピューティングノード302のサブセットの間のバリアを形成することができる。バリアは、コンピューティングノード302をGPCU202と同期させるために使用される場合がある。GPCU202は、コンピューティングノード302のすべてが共通(バリア)命令に同期するまで、さらなる命令を送らないことにより、命令フロー内のバリアを形成する。GPCU202は、コンピューティングノード302の各々からの(上記で説明された)ビートをカウントして、各ノードが共通命令にいつ同期したかを判断する。コンピューティングノード302の各々がバリアに到達すると、GPCU202は命令を送ることを再開し、コンピューティングノード302が再び非同期的に流れることを可能にする。コンピューティングノード302を同期させると、ノードが他のノードによって以前生成された古いデータにアクセスするリスクが減少する。そのため、バリアが形成される実施形態では、コンピューティングノードからのメモリアクセス動作は、正しい順序で実施されるように同期する。
図5は処理システム500のブロック図である。処理システム500は、制御ユニット502と、ベクトル命令パイプライン504とを含む。制御ユニット502は、命令を管理し、ベクトル命令パイプライン504に命令をディスパッチする。ベクトル命令パイプライン504はメモリとともに配置され、その結果、ベクトル命令パイプライン504内のコンピューティングノードはメモリサブバンクの間で分散される。
制御ユニット502は、GPCU512と、スケジューラコア514と、部分的に復号された超長命令語(VLIW)バンドルディスパッチユニット516と、データアドレス生成および編成(DAGO)ユニット518と、VLIWバンドルおよびデータアドレスキュー520と、DMAコントローラ522とを含む。
GPCU512は命令の復号およびディスパッチを制御する。スケジューラコア514は、特定のジョブまたはタスクのために(下記で説明される)RIMDコンピューティングノード534をスケジュールする。部分的に復号されたVLIWバンドルディスパッチユニット516は、VLIW命令バンドルから命令を抽出し、それらをVLIWバンドルおよびデータアドレスキュー520に送る。DAGO518は、メモリアドレス(または「データポインタ」)を生成し、コンピューティングユニットにそれらを割り当て、それらをVLIWバンドルおよびデータアドレスキュー520に送る。DAGO518は、必要とされるメモリ動作の再編成を実施することもできる。実行用のプログラムは、グローバルコントローラおよびローカルコントローラに分割される場合がある。複雑度を緩和し、最良のパフォーマンスを実現するために、いくつかの段階の間にいくつかの重複が存在する場合がある。
ベクトル命令パイプライン504は、命令ルータ532と、RIMDコンピューティングノード534と、メモリサブバンク536と、スマートルータおよびプリフェッチャユニット538とを含む。命令ルータ532は、VLIWバンドルおよびデータアドレスキュー520から命令を受け取り、それらをRIMDコンピューティングノード534に分配する。1つまたは複数の命令ルータ532が存在する場合がある。
RIMDコンピューティングノード534の各々は、互いと無関係な命令を実行する。RIMDコンピューティングノード534の各々のためのクロックゲーティングは柔軟な場合があり、その結果、各ノードは、ノードが使用されていないときにノードのためにゲート制御されるそれ自体の入力クロック接続を有する。RIMDコンピューティングノード534は、部分的に復号されたVLIWバンドルディスパッチユニット516に結合される。RIMDコンピューティングノード534が命令の実行を終了するたびに、RIMDコンピューティングノード534は、部分的に復号されたVLIWバンドルディスパッチユニット516に通知する。いくつかの実施形態では、通知は1ビットのビートである。GPCU512はビートの数をカウントし、受け取ったビートの数に従ってベクトル命令パイプライン504にさらなる命令をディスパッチする。RIMDコンピューティングノード534はメモリサブバンク536にアクセスする。RIMDコンピューティングノード534の各々は、それぞれのRIMDコンピューティングノード534によってより迅速にアクセスされ得るメモリサブバンク536のうちの少なくとも1つの近くにある。RIMDコンピューティングノード534は、スマートルータおよびプリフェッチャユニット538を介して、さらに離れた他のメモリサブバンク536にアクセスすることができる。
メモリサブバンク536の間にRIMDコンピューティングノード534を分散させると、RIMDコンピューティングノード534が可変の待ち時間を有する結果になる場合がある。しかしながら、スカラーパイプライン(たとえば、GPCU)とベクトルパイプライン(たとえば、単独のRIMDコンピューティングノード)の間でパイプラインを分割すると、メモリ動作のいかなる追加支出にかかわらず、スケーラブルで高パフォーマンスのシステムがもたらされる場合がある。
スマートルータおよびプリフェッチャユニット538は、メモリアクセス動作をルーティングおよび仲裁し、いくつかのメモリプリフェッチング、書込みバッファリング、およびデータマージングを実施する。スマートルータおよびプリフェッチャユニット538はプログラム可能なプリフェッチャであり、RIMDコンピューティングノード534の各々とともに動作して、離れたデータノードにアクセスすることに関連する待ち時間を低減する。スマートルータおよびプリフェッチャユニット538は、ベースメモリアドレスからのストライドまたはオフセットに基づいてデータをプリフェッチする。いくつかの実施形態では、スマートルータおよびプリフェッチャユニット538は、いくつかの計算ノードからの書込み動作をマージし、それにより、メモリへのアクセスの総数が低減される場合がある。いくつかの実施形態では、DMAコントローラ522は、RIMDコンピューティングノード534がスマートルータおよびプリフェッチャユニット538を介してDMAを実施することを可能にするヘルパモジュールである。スマートルータおよびプリフェッチャユニット538は、スマートアービタおよびプリフェッチャ(SAP)と呼ばれる場合がある。
図6はRIMDコンピューティングノード600のブロック図である。RIMDコンピューティングノード600は、RIMDインターフェース602と、キュー604と、ローカルプログラム制御ユニット(LPCU)606と、計算ユニット608と、オプションのデータバッファ610とを含む。RIMDインターフェース602は、RIMDコンピューティングノード600をプロセッサ内の他のデバイス、たとえば、命令ルータ532とインターフェースする。
キュー604は、命令ルータ532から命令およびデータを受け取り、それらをバッファリングする。命令および入力データをバッファリングすると、RIMDコンピューティングノード600がRIMDプロセッサ内の他のRIMDコンピューティングノードと無関係に動作することが可能にある。キュー604はRIMDコンピューティングノード600内の任意の機能停止を局在化し、その結果、他のRIMDコンピューティングノードは影響を受けない。キュー604は、命令バッファ612(または「命令キュー」)と、入力データバッファ614(または「結果キュー」)とを含む。命令バッファ612は命令をバッファリングし、入力データバッファ614は命令を実行するために必要とされるデータをバッファリングする。
LPCU606は、命令の復号機能およびディスパッチ機能を含む。LPCU606は、RIMDコンピューティングノード600が命令バッファ612内の命令を完了するたびに、GPCU512にビートを送るロジックを含む。
計算ユニット608は、RIMDコンピューティングノード600内の主要計算を実施する機能ユニットを含む。たとえば、計算ユニット608は、多重化ユニット、レジスタ、およびロード/ストアユニットを含む。いくつかの実施形態では、計算ユニット608は、ロード/ストアユニット用の専用ロード/ストア経路を有し、その結果、計算ユニット608は、他のRIMDコンピューティングユニットと無関係にメモリにアクセスすることができる。
いくつかの実施形態はデータバッファ610を含む。データバッファ610は入力データバッファ614と同様であり得るし、メモリアクセス動作をバッファイングするためにロード/ストア経路内にあり得る。データバッファ610を使用すると、RIMDコンピューティングノード600が、別のRIMDコンピューティングノードがアクセスしているメモリにアクセスするように試みるときに、機能停止しないように防止することができる。可変メモリ待ち時間は、連続読込み動作を引き起こして、ばらばらの順序で計算ユニット608にデータを返す場合がある。一時的に読込みデータをバッファリングすると、メモリが順序正しく計算ユニット608によって読み込まれることが可能になる。データバッファ610は、たとえば、コンテンツアドレス可能メモリ(CAM)キャッシュ、先入れ先出し(FIFO)バッファなどであり得る。いくつかの実施形態では、データバッファ610は、約1キロバイト(KB)より小さいサイズなどの小ささであり得る。データバッファ610のサイズは、メモリバンクへの待ち時間に従って決定される場合がある。いくつかの実施形態では、メモリバンクへの最も離れた待ち時間は、データバッファ610のサイズを決定するために使用される場合がある。いくつかの実施形態では、データバッファ610は、命令バッファ612のサイズの約2倍以下であり得る。データバッファ610は、書込み動作もバッファリングする。
図7はRIMD命令実行についてのタイミング図700である。タイミング図700は、システムクロックおよび9つのコンピューティングノードのタイミング状態を示す。タイミング図700は、RIMDコンピューティングノードがどのように単独で命令を実行することができるかを示す。タイミング図700では、サイクル1において、プログラムがGPCUによってディスパッチされる。サイクル2において、コンピューティングノード1、2、および3がプログラムを受け取り、それを実行している。サイクル3において、コンピューティングノード4、5、および6がプログラムを受け取り、それを実行している。サイクル4において、コンピューティングノード7、8、および9がプログラムを受け取り、それを実行している。プログラムは、たとえば、コンピューティングノードがプロセッサ内のどこに物理的に位置するかに基づいて、様々な時間に様々なコンピューティングノードに到達する。さらなるノードがより高い待ち時間を有する場合がある。いつコンピューティングノードがログラムを受け取り、その実行を開始するかに、他の要因が影響する場合もある。
あるタスク用に選択されるRIMDコンピューティングノードの数は、動的に構成可能であり、たとえば、タスク要件に基づく場合がある。タイミング図700では、9つのスレッドがプログラムを実行するように構成される。この数は様々なタスクについて変化する場合がある。加えて、RIMDコンピューティングノードは、並行スレッドにさらに分割される場合がある。RIMDクラスタから割り振られる並行スレッドの数も構成可能であり、たとえば、割り振られるスレッドの数に最大限度が設けられる場合がある。たとえば、タイミング図700に示された例を続けると、RIMDクラスタはいくつかの方式で分割されている可能性がある。(1)RIMDコンピューティングノードのすべてが同じスレッドを実行している場合がある。(2)RIMDコンピューティングノードのすべてが異なるスレッドを実行している場合がある。(3)いくつかのユニットが第1のスレッドを実行している場合があり、他のユニットが第2のスレッドを実行している場合がある。(4)いくつかのユニットが第1および第2のスレッドを実行している場合があり、他のユニットの電源が切られている場合がある。他の構成も可能であり得る。
図8はRIMD処理方法800についてのフロー図である。RIMD処理方法800がステップの順番を示していないことを諒解されたい。むしろ、RIMD処理方法800内のブロックは並行して動作している可能性がある。
最初に、実行用のプログラムがGPCUによってグローバルプログラムメモリに移動する(ステップ802)。プログラムは離れたメモリ内にあってよく、またはプログラムキャッシュもしくはプログラミング用のメモリからフェッチされてよい。プログラムがメモリ内にある実施形態では、プログラムはDMAを介してフェッチされる場合がある。次に、プログラムの実行のために必要とされるデータが離れたメモリから移動する(ステップ804)。いくつかの実施形態では、移動はDMAを用いてデータをコピーすることによって遂行される場合がある。スケジューラが1つまたは複数のRIMDコンピューティングノードにおいてタスクをスケジュールする(ステップ806)。スケジューラはタスク用のコンピューティングノードの数を選択し、各ノードに識別子(ID)を割り当てる。GPCUがタスク用のプログラムコードをフェッチし、タスク用のデータアドレスとともにそれをスケジュールされたRIMDコンピューティングノードにディスパッチする(ステップ808)。次いで、プログラムコードは各RIMDコンピューティングノードにプッシュされる。RIMDコンピューティングノードは分散された共有メモリ内にあるので、プログラミングは、キャッシングまたはDMAなどの高価な動作を使用してノードにコピーされる必要がない場合がある。
各RIMDコンピューティングノードがプログラムコードおよびデータアドレスを受け取り、バッファリングする(ステップ810)。RIMDコンピューティングノードが、それらにディスパッチされたプログラムコードを復号し実行する(ステップ812)。RIMDコンピューティングノードが、各コンピューティングノードに割り当てられたIDを使用して計算されたデータアドレスからのオフセットにおいて、受け取ったデータアドレスを使用して実行中にデータにアクセスする(ステップ814)。アクセスされたデータが、SAPを用いてRIMDコンピューティングノードにより近く運ばれる場合がある(ステップ816)。SAPは、メモリ内の他のSAPと通信することによってデータをプリフェッチすることができる。各RIMDコンピューティングノードが、命令の実行またはディスパッチを終了すると、GPCUにビートを送る(ステップ818)。
GPCUが、各RIMDコンピューティングノードが送ったビートの数をカウントすることにより、各RIMDコンピューティングノードの進捗を記録する(ステップ820)。GPCUは、RIMDコンピューティングノードがそれらのバッファ内の命令を完了すると、RIMDコンピューティングノードにさらなるプログラムコードおよびデータアドレスをディスパッチする。GPCUが、必要な場合、RIMDコンピューティングノードからのビートを使用してノードを同期させることができる(ステップ822)。タスクが完了すると、ステップ802〜822を繰り返すことにより、GPCUが別のタスクのためにRIMDコンピューティングノードをスケジュールすることができるか、または、さらなるタスクが存在しない場合、ノードの電源を切ることができる(ステップ824)。
図9は、ホストデバイス内にインストールされる場合がある、本明細書に記載された方法を実施するための処理システム900のブロック図である。図示されたように、処理システム900は、図9に示されたように配置される場合も(配置されない場合も)ある、プロセッサ902と、メモリ904と、インターフェース906〜910とを含む。プロセッサ902は、計算および/または他の処理に関連するタスクを実施するように適合された任意の構成要素または構成要素の集合であり得るし、メモリ904は、プロセッサ902による実行用のプログラミングおよび/または命令を記憶するように適合された任意の構成要素または構成要素の集合であり得る。一実施形態では、メモリ904には、非一時的コンピュータ可読媒体が含まれる。インターフェース906、908、910は、処理システム900が他のデバイス/構成要素および/またはユーザと通信することを可能にする任意の構成要素または構成要素の集合であり得る。たとえば、インターフェース906、908、910のうちの1つまたは複数は、ホストデバイスおよび/またはリモートデバイスにインストールされたアプリケーションに、プロセッサ902からのデータメッセージ、制御メッセージ、または管理メッセージを通信するように適合される場合がある。別の例として、インターフェース906、908、910のうちの1つまたは複数は、ユーザまたはユーザデバイス(たとえば、パーソナルコンピュータ(PC)など)が処理システム900と対話/通信することを可能にするように適合される場合がある。処理システム900は、長期間ストレージ(たとえば、不揮発性メモリなど)などの、図9に描写されていないさらなる構成要素を含む場合がある。
いくつかの実施形態では、処理システム900は、電気通信ネットワークにアクセスするか、または場合によってはその一部であるネットワークデバイス内に含まれる。一例では、処理システム900は、基地局、中継局、スケジューラ、コントローラ、ゲートウェイ、ルータ、アプリケーションサーバ、または電気通信ネットワーク内の任意の他のデバイスなどの、ワイヤレスまたは有線の電気通信ネットワーク内のネットワーク側デバイス内にある。他の実施形態では、処理システム900は、移動局、ユーザ機器(UE)、パーソナルコンピュータ(PC)、タブレット、ウェアラブル通信デバイス(たとえば、スマートウォッチなど)、または電気通信ネットワークにアクセスするように適合された任意の他のデバイスなどの、ワイヤレスまたは有線の電気通信ネットワークにアクセスするユーザ側デバイス内にある。
例示的な実施形態では、処理システム900は、タスク用のプログラムコードを受信するコード受信モジュールと、タスクを実施するように複数のコンピューティングノードを割り当てる割当てモジュールと、複数のコンピューティングノードの各々にプログラムコード用の第1のフェッチパケットおよび第1のフェッチパケット用の第1のそれぞれのデータポインタをディスパッチするディスパッチモジュールと、各ノードがノードにディスパッチされた第1のフェッチパケットの実行を完了することに応答して、複数のコンピューティングノードの各ノードからビートを受け取るビートモジュールと、受け取ったビートに従って複数のコンピューティングノードによりプログラムコードの実行を追跡する追跡モジュールとを含む。いくつかの実施形態では、処理システム900は、実施形態に記載されたステップのうちのいずれか1つまたはステップの組合せを実施するための他のまたはさらなるモジュールを含む場合がある。
本発明は例示的な実施形態を参照して記載されているが、この説明は限定的な意味で解釈されるものではない。説明を参照すると、例示的な実施形態の様々な修正および組合せ、ならびに本発明の他の実施形態が当業者には明らかであろう。したがって、添付の特許請求の範囲が任意のそのような修正または実施形態を包含することが意図される。
100 データフローシステム
102 ポイント
104 ポイント
200 処理システム
202 グローバルプログラムコントローラユニット(GPCU)
204 ベクトル命令パイプライン
206 メモリ
300 処理システム
302 コンピューティングノード
304 命令バッファ
306 データバッファ
400 処理システム
402 命令バッファ
404 データバッファ
500 処理システム
502 制御ユニット
504 ベクトル命令パイプライン
512 GPCU
514 スケジューラコア
516 超長命令語(VLIW)バンドルディスパッチユニット
518 データアドレス生成および編成(DAGO)ユニット
520 VLIWバンドルおよびデータアドレスキュー
522 DMAコントローラ
532 命令ルータ
534 RIMDコンピューティングノード
536 メモリサブバンク
538 スマートルータおよびプリフィッチャユニット
600 RIMDコンピューティングノード
602 RIMDインターフェース
604 キュー
606 ローカルプログラム制御ユニット(LPCU)
608 計算ユニット
610 データバッファ
612 命令バッファ
614 入力データバッファ
700 タイミング図
800 RIMD処理方法
900 処理システム
902 プロセッサ
904 メモリ
906 インターフェース
908 インターフェース
910 インターフェース

Claims (20)

  1. メモリバンク内に位置するメモリブロックと、
    タスクを実行するためのベクトル命令パイプラインを形成する1つまたは複数のコンピューティングノードであって、前記コンピューティングノードの各々が前記メモリバンク内に位置し、前記コンピューティングノードの各々が前記コンピューティングノードのうちの他のコンピューティングノードと無関係に前記タスクの一部分を実行する、コンピューティングノードと、
    前記タスクを実行するためのスカラー命令パイプラインを形成するグローバルプログラムコントローラユニット(GPCU)であって、前記GPCUが前記コンピューティングノードのうちの1つまたは複数において前記タスク用の命令をスケジュールするように構成され、前記GPCUが前記コンピューティングノードの各々によって使用される前記メモリブロック用のアドレスを前記コンピューティングノードにディスパッチするようにさらに構成される、GPCUと
    を備える、プロセッサ。
  2. 前記コンピューティングノードがコンピューティングノードの複数のサブセットを備え、コンピューティングノードの前記複数のサブセットの各々が、異なる期間の間に前記タスクの異なる部分を実行する、請求項1に記載のプロセッサ。
  3. コンピューティングノードの前記複数のサブセットの各々が、コンピューティングノードの前記複数のサブセットの各々にディスパッチされた前記アドレスによって指定された前記メモリブロックにアクセスする、請求項2に記載のプロセッサ。
  4. 前記コンピューティングノードにスケジュールされた前記タスク用の命令を受け取るように構成された命令キュー
    をさらに備える、請求項1から3のいずれか一項に記載のプロセッサ。
  5. 前記1つまたは複数のコンピューティングノードの各コンピューティングノードが、
    前記コンピューティングノードにスケジュールされた前記タスクの一部分用の命令を受け取るように構成された命令キューと、
    前記命令を実行するための計算ユニットと、
    前記計算ユニットからの前記命令を実行した結果を記憶するように構成された結果キューと、
    前記計算ユニットが前記命令キューからの前記命令の実行を完了すると、前記GPCUに通知するように構成されたローカルプログラムコントローラユニット(LPCU)と
    を備える、請求項1から4のいずれか一項に記載のプロセッサ。
  6. 前記GPCUが、コンピューティングノードが前記コンピューティングノードの前記命令キュー内の前記命令の実行を完了したことの通知を受け取ると、前記コンピューティングノードにおいて前記タスク用のさらなる命令をスケジュールするようにさらに構成される、請求項5に記載のプロセッサ。
  7. 前記GPCUが前記タスク用のすべての命令を実施するようにさらに構成される、請求項1から6のいずれか一項に記載のプロセッサ。
  8. 前記1つまたは複数のコンピューティングノードが、各々、同時に異なる命令を実施する、請求項1から7のいずれか一項に記載のプロセッサ。
  9. 前記コンピューティングノードのうちの第2のコンピューティングノードから、前記コンピューティングノードのうちの第1のコンピューティングノードによって必要とされるデータをプリフェッチするように構成されたアービトレータをさらに備える、請求項1から8のいずれか一項に記載のプロセッサ。
  10. 前記GPCUが、前記タスクが完了すると、前記コンピューティングノードを同期させるようにさらに構成される、請求項1から9のいずれか一項に記載のプロセッサ。
  11. 前記コンピューティングノードのサブセットが前記タスク用にスケジュールされ、前記コンピューティングノードのうちのスケジュールされていないコンピューティングノードが、前記タスクの実行中に電源を切られる、請求項1から10のいずれか一項に記載のプロセッサ。
  12. タスク用のプログラムコードを受信するステップと、
    前記タスクを実施するように複数のコンピューティングノードを割り当てるステップと、
    前記複数のコンピューティングノードの各々に前記プログラムコード用の第1のフェッチパケットおよび前記第1のフェッチパケット用の第1のそれぞれのデータポインタをディスパッチするステップと、
    各ノードが前記ノードにディスパッチされた前記第1のフェッチパケットの実行を完了することに応答して、前記複数のコンピューティングノードの各ノードからビートを受け取るステップと、
    前記受け取ったビートに従って前記複数のコンピューティングノードにより前記プログラムコードの実行を追跡するステップと
    を備える、方法。
  13. 前記受け取ったビートに従って前記複数のコンピューティングノードを同期させるステップをさらに備える、請求項12に記載の方法。
  14. 前記第1のフェッチパケットおよび前記第1のそれぞれのデータポインタをディスパッチするステップが、前記複数のコンピューティングノードの各々のためのバッファに前記第1のフェッチパケットおよび前記第1のそれぞれのデータポインタをキューイングするステップを備える、請求項12から13のいずれか一項に記載の方法。
  15. 前記バッファ内の前記第1のフェッチパケットを実行するステップと、
    前記第1のフェッチパケット用の前記第1のそれぞれのデータポインタによって示されたメモリにアクセスするステップと
    をさらに備える、請求項14に記載の方法。
  16. 前記複数のコンピューティングノードの各ノードにより、前記ノード用の前記バッファ内の前記第1のフェッチパケットのうちの1つを完了することに応答して、前記ビートを送るステップをさらに備える、請求項14に記載の方法。
  17. 前記プログラムコードの前記実行を追跡するステップが、
    前記複数のコンピューティングノードの各ノードから受け取ったビートの数をカウントするステップと、
    カウントされたビートの前記数がしきい値を超えることに応答して、前記複数のコンピューティングノードの各々に、前記プログラムコード用の第2のフェッチパケットおよび前記第2のフェッチパケット用の第2のそれぞれのデータポインタをディスパッチするステップと
    を備える、請求項12から16のいずれか一項に記載の方法。
  18. 前記複数のコンピューティングノードの隣接コンピューティングノードから、前記複数のコンピューティングノードの第1のコンピューティングノードにデータを供給するステップをさらに備える、請求項12から17のいずれか一項に記載の方法。
  19. 第1のタスク用のプログラムコードを復号するように構成された超長命令語(VLIW)バンドルディスパッチャと、
    前記プログラムコード用のデータポインタを割り当てるように構成されたデータアドレス生成および編成(DAGO)ユニットと、
    複数のコンピューティングノードに結合されるように構成されたスケジューラであって、前記スケジューラが、前記プログラムコードを実行するように前記複数のコンピューティングノードを割り振るように構成され、前記スケジューラが、前記複数のコンピューティングノードの第1のサブセットに第1のスレッドを割り振り、前記複数のコンピューティングノードの第2のサブセットに第2のスレッドを割り振るように構成される、スケジューラと
    を備える、プログラム制御ユニット。
  20. 前記VLIWバンドルディスパッチャが、前記第1のタスク用の前記プログラムコードが完了したことの通知を前記複数のコンピューティングノードから受け取るようにさらに構成され、前記スケジュールが、第2のタスク用のプログラムコードを実行するように前記複数のコンピューティングノードを割り振るようにさらに構成される、請求項19に記載のプログラム制御ユニット。
JP2018504845A 2015-07-30 2016-07-27 可変レーンアーキテクチャのためのシステムおよび方法 Pending JP2018521427A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562198886P 2015-07-30 2015-07-30
US62/198,886 2015-07-30
US15/220,067 2016-07-26
US15/220,067 US10691463B2 (en) 2015-07-30 2016-07-26 System and method for variable lane architecture
PCT/CN2016/091922 WO2017016486A1 (en) 2015-07-30 2016-07-27 System and method for variable lane architecture

Publications (1)

Publication Number Publication Date
JP2018521427A true JP2018521427A (ja) 2018-08-02

Family

ID=57882420

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018504845A Pending JP2018521427A (ja) 2015-07-30 2016-07-27 可変レーンアーキテクチャのためのシステムおよび方法

Country Status (5)

Country Link
US (2) US10691463B2 (ja)
EP (1) EP3320429B1 (ja)
JP (1) JP2018521427A (ja)
CN (1) CN107924309B (ja)
WO (1) WO2017016486A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10331445B2 (en) * 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
CN109861781B (zh) * 2017-11-30 2021-02-12 华为技术有限公司 接口传输方法、装置及设备
GB2575289B (en) * 2018-07-04 2020-09-16 Graphcore Ltd Streaming engine
CN112099768B (zh) * 2020-08-04 2024-02-23 北京奇艺世纪科技有限公司 业务流程处理方法、装置及计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0635875A (ja) * 1992-05-22 1994-02-10 Internatl Business Mach Corp <Ibm> コンピュータ・システム
JPH11306149A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JPH11306037A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JP2003091415A (ja) * 2001-09-17 2003-03-28 Sanyo Electric Co Ltd データ処理方法と装置およびデータ変換方法
US20060206641A1 (en) * 2003-04-25 2006-09-14 Klein Dean A Active memory data compression system and method
JP2010271930A (ja) * 2009-05-21 2010-12-02 Toshiba Corp マルチコアプロセッサシステム
JP2013054625A (ja) * 2011-09-06 2013-03-21 Toyota Motor Corp 情報処理装置、情報処理方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US6026478A (en) 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
US6807614B2 (en) 2001-07-19 2004-10-19 Shine C. Chung Method and apparatus for using smart memories in computing
JP3708853B2 (ja) 2001-09-03 2005-10-19 松下電器産業株式会社 マルチプロセッサシステムおよびプログラム制御方法
CN1142484C (zh) 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
GB2399900B (en) 2003-03-27 2005-10-05 Micron Technology Inc Data reording processor and method for use in an active memory device
US7472392B2 (en) 2003-04-23 2008-12-30 Micron Technology, Inc. Method for load balancing an n-dimensional array of parallel processing elements
US7673102B2 (en) 2006-05-17 2010-03-02 Qualcomm Incorporated Method and system for maximum residency replacement of cache memory
US7676647B2 (en) 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US8180998B1 (en) 2007-09-10 2012-05-15 Nvidia Corporation System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
US7873869B2 (en) 2008-10-09 2011-01-18 International Business Machines Corporation Checkpointing a hybrid architecture computing system
US7979844B2 (en) * 2008-10-14 2011-07-12 Edss, Inc. TICC-paradigm to build formally verified parallel software for multi-core chips
CN102695249B (zh) 2011-03-23 2014-10-08 北京天地互连信息技术有限公司 IPv6无线传感器网络节能方法
CN102156637A (zh) 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
US9146747B2 (en) 2013-08-08 2015-09-29 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
US9336142B2 (en) * 2013-11-06 2016-05-10 International Business Machines Corporation Cache configured to log addresses of high-availability data via a non-blocking channel
CN104778080A (zh) 2014-01-14 2015-07-15 中兴通讯股份有限公司 基于协处理器的作业调度处理方法及装置
CN104199801A (zh) 2014-08-26 2014-12-10 山东超越数控电子有限公司 一种基于龙芯服务器的高性能计算集群的实现方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0635875A (ja) * 1992-05-22 1994-02-10 Internatl Business Mach Corp <Ibm> コンピュータ・システム
JPH11306149A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JPH11306037A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法
JP2003091415A (ja) * 2001-09-17 2003-03-28 Sanyo Electric Co Ltd データ処理方法と装置およびデータ変換方法
US20060206641A1 (en) * 2003-04-25 2006-09-14 Klein Dean A Active memory data compression system and method
JP2010271930A (ja) * 2009-05-21 2010-12-02 Toshiba Corp マルチコアプロセッサシステム
JP2013054625A (ja) * 2011-09-06 2013-03-21 Toyota Motor Corp 情報処理装置、情報処理方法

Also Published As

Publication number Publication date
WO2017016486A1 (en) 2017-02-02
EP3320429A1 (en) 2018-05-16
CN107924309B (zh) 2021-03-23
US10691463B2 (en) 2020-06-23
US10884756B2 (en) 2021-01-05
EP3320429B1 (en) 2023-05-31
US20200278869A1 (en) 2020-09-03
CN107924309A (zh) 2018-04-17
US20170031689A1 (en) 2017-02-02
EP3320429A4 (en) 2018-07-18

Similar Documents

Publication Publication Date Title
US10884756B2 (en) System and method for variable lane architecture
US20230168897A1 (en) System Having a Hybrid Threading Processor, a Hybrid Threading Fabric Having Configurable Computing Elements, and a Hybrid Interconnection Network
KR102263078B1 (ko) 복수-타일 복수-칩 프로세싱 구성에서의 동기화
JP6722251B2 (ja) マルチタイル処理アレイにおける同期化
Han et al. Microsecond-scale preemption for concurrent {GPU-accelerated}{DNN} inferences
US10445271B2 (en) Multi-core communication acceleration using hardware queue device
Ausavarungnirun et al. Exploiting inter-warp heterogeneity to improve GPGPU performance
JP6797879B2 (ja) 命令セット
KR20190044571A (ko) 칩 밖으로 데이터 송신하기
KR20190044565A (ko) 호스트 프로세서와의 동기화
KR20210030282A (ko) 게이트웨이 상의 호스트 프록시
US9405711B2 (en) On-chip traffic prioritization in memory
US20200285580A1 (en) Speculative memory activation
CN103197953A (zh) 推测执行和回滚
US8863099B2 (en) Compilation and placement of instructions in a memory system
Liu et al. Barrier-aware warp scheduling for throughput processors
JP2021528929A (ja) データ通過ゲートウェイ
KR20160081815A (ko) 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법
Sun et al. HPSO: Prefetching based scheduling to improve data locality for MapReduce clusters
Wu et al. Switchflow: preemptive multitasking for deep learning
Ausavarungnirun Techniques for shared resource management in systems with throughput processors
Lin et al. GPU performance vs. thread-level parallelism: Scalability analysis and a novel way to improve TLP
Khan et al. Data locality in Hadoop cluster systems
KR20210023904A (ko) 스트리밍 엔진
Xu et al. Application-aware NoC management in GPUs multitasking

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190322

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190722