JP5684704B2 - 実行エンジン - Google Patents

実行エンジン Download PDF

Info

Publication number
JP5684704B2
JP5684704B2 JP2011511706A JP2011511706A JP5684704B2 JP 5684704 B2 JP5684704 B2 JP 5684704B2 JP 2011511706 A JP2011511706 A JP 2011511706A JP 2011511706 A JP2011511706 A JP 2011511706A JP 5684704 B2 JP5684704 B2 JP 5684704B2
Authority
JP
Japan
Prior art keywords
data
processing element
instruction
memory
data packet
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
JP2011511706A
Other languages
English (en)
Other versions
JP2011523132A (ja
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 JP2011523132A publication Critical patent/JP2011523132A/ja
Application granted granted Critical
Publication of JP5684704B2 publication Critical patent/JP5684704B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、コンピュータ装置の分野に関し、特に、ファイングレイン並列命令(fine-grained parallel instructions)の効率的な実行に関する。
関連出願
この出願は、2008年5月27日に出願された米国の仮特許出願番号第61/130,114号、発明の名称「実行エンジン(EXECUTION ENGINE)」の優先権の利益を主張する。
代表的な汎用コンピュータは、逐次命令ストリームプロセッサ(sequential instruction stream processor)として構成され、メモリから命令をフェッチし、デコードし、これらの命令を実行する。逐次命令ストリームプロセッサは、命令が表す演算を実際に実行するときよりも多くのエネルギを、命令を管理するときに消費するので、非常に非効率的にエネルギを使用する。例えば、インテル(商標)又はAMD(商標)からの最新の汎用x86プロセッサは、重要なアルゴリズム、例えば疎行列ソルバ(sparse matrix solvers)上でのプロセッサの演算処理能力(operational throughput)によって測定されるピーク性能の10%を達成しているにすぎない。
また、これらの逐次命令ストリームプロセッサは、ファイングレイン並列計算では非常に効率が悪い。上述の疎行列ソルバにおける性能は、通常、何千個ものプロセッサが同時に用いられることを必要とする。幾つかのプロセッサは、他のプロセッサよりも前に終了したとき、残りのプロセッサと同期するためには待機する必要があり、プロセッサのグループ間で実行を同調させるためには、多くの時間と電力が浪費される。
汎用コンピュータの効率を益々悪くするようなアルゴリズムが、科学、工学及びビジネスに対して非常に重要になっている。また、データ及び必要な計算量が指数関数的に増加すると、妥当な時間内で結果を得るためには、プロセッサのグループを用いることが強いられる。重要なアルゴリズム、例えば信号処理、ソルバ、統計及びデータマイニングの多くは、ファイングレイン並列の構造を示す。これらのアルゴリズムを汎用プロセッサのネットワーク上に論理的に割り当てるには、サイズ、コスト及び消費電力の観点から問題が生じている。
本発明は、超並列ファイングレイン構造計算(highly parallel fine-grain structured computations)を効率的に実行するコンピュータ装置である。このコンピュータ装置は、このような多種多様な構造計算を効率的に実行できるようにプログラム可能である。コンピュータの電力消費量は、実行する命令の数及び必要なデータオペランドに比例する。これは、コンピュータで実行する場合、電力消費使量が、命令及びデータが移動するのに必要な時間及び距離に比例することを意味している。本発明は、空間的距離に優れた(honors)実行の物理モデルを生成し、この発明は、命令間の競合を簡単な待ち行列方式によって管理するような方法で、計算を編成する(organizes)。
発明を解決するための手段
本発明に基づくコンピュータ装置は、演算処理要素のアレイ(fabric)からデータトークンを受け取って、これらのデータトークンを、空間タグ(spatial tag)に基づいて、命令トークンと比較する演算処理要素を備える。この空間タグは、電力を反映する計算と、アルゴリズム設計者が意図した時間的最適化との間で空間関係を形成する。
幾つかの実施の形態において、演算処理素子アレイは、一連のデータストリーマ(bank of data streamers)からデータトークンが供給され、コンピュータメモリに格納されているデータ構造を、データトークンのストリームに変換する。
本発明は、以下の図面において、同じ構成要素には、同じ番号を付している。これらの図面は、本発明の選択された実施の形態を示すためのものであり、発明の範囲を制限するものではない。
幾つかの実施の形態に基づいて動作する汎用データフローコンピュータシステムのブロック図である。 幾つかの実施の形態に基づくデータストリーマのブロック図である。 幾つかの実施の形態に基づくプロセッサアレイ(processor fabric)のブロック図である。 幾つかの実施の形態に基づく演算処理要素(processing element)のブロック図である。 Aは、データパケットの特定の実施の形態を示す図であり、Bは、データトークンの特定の実施の形態を示す図であり、Cは、命令トークンの特定の実施の形態を示す図である。 命令格納部の特定の実施の形態のブロック図である。 Aは、行列−ベクトル乗算のための単一代入形式プログラム(single assignment form program)の実施例であり、Bは、関連した単一代入グラフ(single assignment graph)を2次元で示す図である。 実行エンジンを用いる方法を示すフローチャートである。
以下では、発明を完全に理解できるように、多くの特定の詳細事項を説明する。これらの特定の詳細事項がなくとも、発明を実施できることは、当業者に明らかである。本発明の特徴に注意を集めるために、様々な周知の方法、手順、部品及び回路については、余り詳細に説明しない。
実行エンジンは、アフィン変換に依存して、単一代入形式プログラムを実行する。単一代入形式(single assignment form、以下、SAFともいう。)のプログラムは、計算を、各代入(assignment)が固有の識別子(unique identifier)に表す一連の方程式として表現するアルゴリズムである。単一代入形式プログラムの代表的な表現は、左辺が固有の識別子として解釈される漸化式(recurrence equations)である。多くのアルゴリズムは、単一代入形式の自然な表現(natural expression)を有する。例えば、図7Aは、行列−ベクトル乗算のための単一代入形式プログラムの具体例を示す。図7Bは、関連した単一代入グラフ(single assignment graph、以下SAGともいう。)を示し、単一代入グラフは、ノードが計算を表し、辺がデータ移動を表すデータ流れ図(data flow graph)である。
あらゆるプログラムは、単一代入形式で表現することができる。単一代入形式アルゴリズムが、スケジュールの実行に対してあらゆる明示的な順序付け(explicit sequencing)を有しない最大限の並列設計(parallel formulation)であるので、ファイングレイン構造並列性(fine-grain structured parallelism)を有するプログラムは、単一代入形式で最も自然に表現される。これにより、実行環境は、どのようにリソース競合を管理するべきかに重点を置くことができる
単一代入形式のプログラムは、演算毎に固有の代入(unique assignment)を含んでいる。これは、演算毎のノードと、データ移動毎の辺とを含む単一代入グラフ(SAG)によって表すことができる。計算イベント(computational event)は、方程式の右辺にオペランドを有し、左辺で代入を計算するある演算として定義される。
信号伝搬の速度は制限されているので、あらゆる2つの並列計算イベント(concurrent computational events)は、時間的に又は空間的に分割される。単一代入形式プログラムを、それを実ベクトル空間として広げるR個の離散的サブグループ(discrete subgroup)として定義される理論的な格子(abstract lattice)に埋め込むことによって、アルゴリズム設計者は、依存計算(dependent computations)間の空間的距離を指定することができる。幾つかの実施の形態において、埋込みは、理論的な正規直交格子(abstract orthonormal lattice)によって達成される。正規直交格子は、全ての基底ベクトル(basis vectors)が単位長を有し、それらの内積がゼロである正規直交基底(orthonormal basis)によって定義される。単一代入グラフは、依存計算イベントが同じ格子点に存在することができないという規則に従って、正規直交格子に埋め込むことができる。これにより、各計算イベントに、正規直交格子における固有の位置(unique location)を割り当てて、物理的に分離された格子点によって、依存計算を分離し、これにより、依存オペランド(dependent operands)を交換する時間的分離明らかにする。正規直交格子におけるこの固有の位置は、計算イベントのシグニチャ(signature)と呼ばれ、シグニチャは、正規直交格子の格子点を識別するインデックスベクトル(index vector)として定義される。適切な格子の他の実施の形態としては、水晶群(crystal groups)、及び空間のカバー(cover of space)を生成するある通常セル(regular cell)によって定義される空間の他の離散サンプリング(discrete sampling)である。格子群(lattice groups)と呼ばれるこれらのサンプリングを記述した明確に定義された数学的構造(well defined mathematical structures)がある。正規直交格子は、これらのより一般的な格子群の部分集合である。
SAGをある格子に埋め込んだ後、全てのプログラム入力と全ての計算イベントは、結果をどのように依存計算イベントに送るか定義する明示的な経路選択ベクトル(explicit routing vector)を有する。計算命令がどのようにそれらの入力に依存するかを指定するので、この経路選択ベクトルは、依存ベクトル(dependency vector)と呼ばれる。空間格子への埋込みにより、アルゴリズム設計者は、条件(constraints)、例えば距離及びリソース競合を組み込むことができる。依存オペランドをやりとりするための電力消費量及び時間の両方は、距離に正比例するので、距離は、電力効率と性能の両方にとって非常に重要である。ここで、距離は、離散的経路選択網(routing network)のホップに対
して定義され、各ホップは、少なくとも1つのレジスタを介して進む必要があり、したがって、ホップの数に比例して電力を消費する。
ここに説明する実行エンジンは、理論的な空間格子に埋め込まれた上述の埋込単一代入プログラム(embedded single assignment programs)用の効率的な実行エンジンである。
図1は、幾つかの実施の形態に基づいて動作する汎用データフローコンピュータシステムのブロック図である。コンピュータシステム100は、実行するデータ及びプログラムを格納するメモリ110を備える。メモリll0は、適切なあらゆる種類のメモリで構成することができる。コントローラ120がメモリ110からプログラムを要求することによって、実行が開始する。コントローラ120は、読出要求を、バス121を介してメモリコントローラ130に出し、メモリコントローラ130は、読出要求をメモリ要求に変換し、データをコントローラ120に返す。このデータは、単一代入プログラムを実行するためのプログラム命令を含んでいる。コントローラ120は、これらのプログラム命令をデコードして、データストリーマ140用のプログラミング情報(programing information)に変換し、これらのプログラミング情報は、制御バス122を介してデータストリーマ140に送られる。同時に、コントローラ120は、プロセッサアレイ160用のプログラミング情報を、コマンドバス123を介してクロスバー150に送る。クロスバー150は、コマンドを含むプログラミング情報を、プロセッサアレイ160の適切な行及び列に送り、プロセッサアレイ160は、これらのコマンドを読み込み、単一代入プログラムを実行するために、それ自体を設定する。データ経路の全体が一旦設定されると、コントローラ120は、データストリーマ140を開始させるイベントを発行する。メモリコントローラ130は、データストリーマ140から読出要求及び書込要求を受け取って、それらをメモリ要求に変換する。データストリーマ140からの読出要求に応じて、メモリコントローラ130は、データをデータストリーマ140に送り、データストリーマ140は、データをクロスバー150に転送する。クロスバー150は、データストリームをプロセッサアレイ160で適切な行又は列にルーティングする。プロセッサアレイ160は、入力データストリームを受け取り、これらのデータストリームに対して命令を実行して、出力データストリームを生成する。これらの出力データストリームは、メモリ110に書き込まれ、すなわち、出力データストリームを、クロスバー150を横切ってデータストリーマ140に送り、データストリーマ140は、メモリアドレスを出力データストリームに関連付け、そして、出力データストリームをメモリコントローラ130に供給し、メモリコントローラ130は、出力データストリームをメモリ110に書き込む。データストリーマ140が、計算タスクの終了を一旦確認すると、通知イベント(notifier events)が、制御バス122を介してコントローラ120に返される。コマンドバス123及びイベントバス124を用いて、割込と、エラー及びパニックを知らせる他のイベントと、運用情報とがコントローラ120に送られ、コントローラ120は、これらを用いて、割り込み、又は計算を進めることができる。
次に、図2は、データストリーマ140の構成を示すブロック図である。データストリーマ140は、データトークンストリーム(data token stream)をアセンブル及び/又は逆アセンブルするストリームプログラム(stream program)を実行する。コントローラ120が、単一代入プログラムをデコードし、この単一代入プログラムをデータストリーマ140用のストリームプログラムに変換することによって、処理は開始する。コントローラ120は、このストリームプログラムを、制御バス122を介してストリームプログラム格納部(stream program store)220に書き込む。ストリームプログラムは、要求アドレス(request addresses)及び他の属性、例えばサイズ及び種類をどのように計算するべきかを詳述するものである。ストリームプログラムは、プロセッサ210によって実行される。プロセッサ210は、ストリームプログラムを実行して、メモリコントローラコマンド(memory controller commands)を生成し、メモリコントローラコマンドは、コマンドデータ待ち行列(command data queue)250に書き込まれる。同じストリームプログラムの一部として、プロセッサ210は、また、関連したトークン属性再帰識別子(associated token attributes recurrence identifier)、シグニチャ(signature)及びデータタイプ(data type)を生成する。これらの属性は、トークンアセンブリユニット230によって利用され、すなわち、トークンアセンブリユニット230は、これらの属性を、メモリコントローラ130から入力された読出データと組み合わせて、データトークンストリーム(data token stream)を生成し、データトークンストリームをクロスバー150に書き込む。同様に、クロスバー150から入力され、メモリ110に書き込む必要があるデータストリームに対して、トークン逆アセンブリユニット240は、入力データトークンからトークン属性再帰識別子、シグニチャ及びデータタイプを分離して、プロセッサ210によって更に処理するために、ストリームプログラム格納部220に書き込む。トークン逆アセンブリユニット240は、データトークンのデータペイロードを書込データ待ち行列(write data queue)270に書き込む。同時に、プロセッサ210は、書込ストリームプログラム(write stream program)を実行して、適切なメモリ書込コマンドを生成し、メモリ書込コマンドを、書込データと共に、メモリコントローラ130に供給する。
次に、図3は、N個のデータストリーマ140を、プロセッサアレイ(processor array)160内のM個の演算処理要素(processing elements、以下、PEともいう。)310に接続する相互結合網(interconnection network)を提供するクロスバー150を示す図である。データストリーマ140は、メモリ110内のフラットデータ構造(flat data structures)を、時間内に多次元データストリームに変換する。クロスバー150は、任意のデータストリーマ140の物理位置を、プロセッサアレイ160内の演算処理要素310の1つ、複数又は全ての物理位置に結び付ける。プロセッサアレイ160は、単一代入プログラムの制御の下に、これらの多次元データストリームを消費して、プロセッサアレイ160内に互いに結び付け、すなわち、コントローラ120は、メモリ110から多次元データストリームを読み出し、クロスバー150を適切な演算処理要素310に接続するために用いられるコマンドバス123に書き込まれた命令トークンストリーム(instruction token stream)によって、多次元データストリームをプロセッサアレイ160の演算処理要素310にインストールする。多次元データストリームは、演算処理要素310及び演算処理要素経路選択網(processing element routing network)320を介して流れる。PE310は、命令及びデータトークンを処理する。PE310には、命令及びデータトークンをルーティング及び格納することができる。単一代入プログラムは、データトークンをどのようにある多次元空間に結び付けるかを記述するものである。PE310は、計算イベントのシグニチャ(signature)と呼ばれる空間タグ(spatial tag)を認識して、コントローラ120によってそれらのプログラム格納部(program store)にインストールされた単一代入プログラムの制御の下に動作をする。動作は、実行中に、入力データトークンのシグニチャを、PE310に溜まった命令トークンのシグニチャと比較して、一致している場合、内部の演算処理要素経路選択網320からデータトークンを抽出することである。単一代入プログラムによって表される全体的な計算は、演算処理要素310内に組み合わされて、新たな多次元データストリームを生成する可能性があり、中間結果(intermediate results)を表す多次元データストリームとして展開されて、演算処理要素経路選択網320を介して、プロセッサアレイ160内の計算イベントの宛先に伝達される。最終結果のデータストリームは、PE310に格納された単一代入プログラムの制御の下に、演算処理要素経路選択網320及びPE310を介して、クロスバー150に流れ出す。クロスバー150は、これらのデータストリームを適切なデータストリーマ140に供給し、データストリーマ140は、これらのデータストリームを再びフラットデータ構造に変換して、メモリ110に書き込むことができる。単一代入プログラムの実行中に、エラー状態が起こる可能性があり、すなわち、コントローラ120がより良く計算を管理できるように、処理イベント(processing events)を監視することが重要である。プログラムエラーの具体例としては、アンダフロー又はオーバフローのような浮動小数点例外、ゼロによる除算のような命令例外、リソース枯渇又はタイムアウトのようなパニックイベントがある。演算処理要素経路選択網320は、そのような条件によって負の影響を受け、クリティカルイベント(critical events)の配信(delivery)及び処理に対するより良い保証を提供する可能性があるので、双方向のイベントバス124によってコントローラ120に接続された、そのようなイベント用の別の通信網(communication network)330が設けられている。双方向性のイベントバス124は、プロセッサアレイ160内に展開された計算を集め(collect)、集約し(aggregate)、進める(steer)ために、プロセッサアレイ160及びコントローラ120によって用いられる。
図4に、演算処理要素310の構造を示す。コントローラ120は、プロセッサアレイ160で計算を開始する前に、単一代入プログラムに関する制御情報を、PE310のプログラム格納部440に書き込む。プログラム格納部440に書き込まれる制御情報には、漸化式(recurrence equations)を明確にするための識別子、漸化式が有効である計算の範囲、シグニチャ更新プログラム(signature update program)及び経路選択ベクトル(routing vector)が含まれる。計算の範囲は、仕様(specification)、通常は連立不等式(system of inequalities)によって定義される拘束集合(constraint set)である。このような拘束集合の具体例は、{(i,j)|1≦i、j≦N}である。これは、図7に示す漸化式の計算の範囲である。この拘束集合は、以下の4つの連立不等式である。
1.i≧1
2.j≧1
3.i≦N
4.j≦N
この連立不等式は、以下の行列で記述することができる。
Figure 0005684704
この制限行列及び右辺のベクトルは、幾つかの実施の形態用の制限集合を指定する標準形0(normalized form)として用いることができる。このプログラミング情報(program information)は、コントローラ120によってプロセッサアレイ160に導入される制御パケットによって、PE310に配信される。各PE310のポートアービタ(port arbiter)410は、演算処理要素経路選択網320からパケットを受け取る。ポートアービタ410は、PE310のネットワークポート(network ports)から1つ以上のパケットを選択して、これらのパケットをパケットデコーダ420に転送する。パケットデコーダ420は、パケットを調べ、プログラミング情報、すなわち他の種類の制御情報を含んでいるかを判定する。パケットが制御パケットの場合、パケットデコーダ420は、制御パケットを、制御情報及びプログラムを抽出するコントローラ430と、データ経路の異なる構成要素、特にプログラム格納部440及び命令格納部(instruction store)450に送る。制御及び状態情報(control and status information)は、制御バス431を介して書き込まれる。プログラム格納部440は、漸化式毎に、すなわち単一代入プログラムの一部毎に、識別子、計算の範囲の仕様、シグニチャ更新仕様及び経路選択ベクトル
受け取る。この情報は、PE310が実行するのを助けるあるアフィン漸化式(affine recurrence equation)を定義する。通常、漸化式は、複数のPE310上で実行されるので、漸化式がプロセッサアレイ160上で実行されるというのがより自然な言い方である。コントローラ120がプロセッサアレイ160をプログラムした後、実行を開始することができる。実行は、データストリーマ140が、最初のデータパケット(first data packets)を(クロスバー150を介して)プロセッサアレイ160に導入することによって、開始される。データパケットがPE310のネットワークポートに到着したとき、ポートアービタ410は、1つ以上のパケットを選択し、それらをパケットデコーダ420に転送する。パケットデコーダ420は、パケットを調べ、それが、その特定のPE310上で実行する計算に属するデータパケットであるかを判定する。該当する場合、パケットデコーダ420は、パケットの経路選択ベクトルを抽出する。経路選択がゼロでない場合、パケットデコーダ420は、パケットをパケットルータ425に転送する。パケットルータ425は、経路の次のレッグを計算して、パケットの経路選択ベクトルを更新し、更新パケット(updated packet)を、ポートアービタ410に供給して、演算処理要素経路選択網320に再び導入する。経路選択ベクトルがゼロの場合、パケットデコーダ420は、データトークンを命令格納部450に送る。命令格納部450は、データトークンから命令タグ(instruction tag)を抽出して、データペイロードを、命令格納部450に格納されている関連した命令の適切なオペランドスロット(operand slot)に割り当て保留し、あるいは、この特定の計算イベント用に受け取った最初のデータトークンである場合、命令格納部450は、新たな命令を割り当てる。保留命令(pending instruction)が全てのそのオペランドを受け取ったとき、命令格納部450は、保留命令リスト(pending instruction list)から命令の割り当てを解除し、命令トークンを、トークン逆アセンブリユニット(token disassembly unit)460に送ることによって、実行のために待ち行列に入れる。命令トークンは、命令オペコード(instruction opcode)、漸化式の変数名(variable identifier)、この命令が表す計算イベントのシグニチャ及び構成オペランド(constituent operands)を含んでいる。トークン逆アセンブリユニット460は、命令トークンからシグニチャを抽出して、シグニチャを、変数名によってシグニチャパイプライン(signature pipeline)470に送る。シグニチャパイプライン470は、変数名をプログラム格納部440で調べ、シグニチャに適用するシグニチャ更新プログラムを検索する。シグニチャ更新プログラムは、入力シグニチャに対する簡単なアフィン変換であり、汎用記述セクション(general description section)に示されるように、ある理論的な格子の空間インデックスベクトル(spatial index vector)として解釈することができる。シグニチャパイプライン470は、入力シグニチャにこのアフィン変換を適用して、新たなシグニチャを生成する。この新たなシグニチャは、トークンアセンブリユニット490に転送される。シグニチャパイプライン470の実行と同時に、値パイプライン(value pipeline)480は、命令を実行して、新たな左辺値を生成する。トークン逆アセンブリユニット460は、命令トークンから命令オペコード及びオペランドを抽出して、値パイプライン480に転送する。値パイプライン480は、命令を実行して、結果をトークンアセンブリユニット490に転送する。トークンアセンブリユニット490は、シグニチャパイプライン470の出力と値パイプライン480の出力から、新たなデータトークンを構成する。トークンアセンブリユニット490は、この新たなデータトークンのシグニチャを、この漸化式用の計算の範囲と照合し(checks)、範囲中にある場合、データトークンをパケットルータ425に送る。経路選択ベクトルがゼロベクトル(null vector)でない場合、パケットルータ425は、データトークンをパケットに埋め込み、このパケットをポートアービタ410に転送し、ポートアービタ410は、パケットを、ある調停方針(arbitration policy)の制御の下に、演算処理要素経路選択網320に再び導入する。実施の形態は、先着順サービス(first-come-first-served)、又はサービス品質保証(quality-of-service guarantees)を実現する優先度ベースの方式(priority based schemes)である。データトークンの経路選択ベクトルがゼロの場合、それは、データトークンが現PE310中を再循環することを意味し、パケットルータ425は、データトークンを命令格納部450に送り、命令格納部450は、データトークンを命令と比較する(matched up with)。
図5Aは、演算処理要素経路選択網320を介して流れるデータパケット510の構造の考えられる実施の形態を示す図である。データパケット510が演算処理要素経路選択網320を介して流れることにより、データ値がPE310に配信される。この実施の形態では、データパケット510は、パケット識別子511と、待ち行列識別子519と、ストリーム識別子512と、漸化式識別子(recurrence equation identifier)513と、データタイプ514と、シグニチャ515と、データ値516と、経路選択ベクトル517とを含んでいる。パケット識別子511は、あらゆる計算誤差(any computational errors)を識別するのを助けるデバッグ機能(debug feature)である。プロセッサアレイ160上で単一代入プログラムを実行している間、ある時点で、何千というパケットがコンピュータシステム100内に存在することができる。このパケットの集合の中で、特定のパケットを識別できるようにするためには、固有のパケット識別子が搬送されることが必要である。この情報は、コードにおける関数問題(functional problems)をデバッグするのを助けるそのコンパイラによって、命令ストリームプロセッサ(instruction stream processor)の命令ストリーム内に導入されるデバッグ情報及び命令に類似している。リリースコード(release code)の実行中には、この固有のパケット識別子は、データパケットの一部でない。
さらに、図5Aに示すように、この例示的なデータパケット510は、4次元単一代入プログラム(4-dimensional single assignment programs)を実行する二次元プロセッサアレイで用いることができる。二次元プロセッサアレイは、経路選択ベクトル517が二次元であり、宛先PE310へのマンハッタン経路(Manhattan route)を表しているかを判定する。PE310の動作で説明したように、非ゼロ経路選択ベクトル(non-null routing vector)は、パケットデコーダ420によって検出され、パケットルータ425に転送され、パケットルータ425によって、次のPE310にルーティングされる。4次元単一代入プログラムは、4次元空間の4つの指標を表す4ベクトル(4-vector)であるシグニチャ515によって、それ自体を表している。漸化式識別子513と組み合わせられるシグニチャ515は、本発明に基づくプログラムの実行において非常に重要である。漸化式識別子513及びシグニチャ515は、単一代入プログラム内で1つの計算イベントを独自に識別する。その計算イベントの結果は、データ値516のスロットに格納され、その種類は、データタイプ514によって識別される。結果を、それが参加する次の計算イベントに配信するために、演算処理要素経路選択網320は、経路選択ベクトル517によってデータパケットをルーティングし、待ち行列識別子519を用いて、PE310のパケットルータ425を助ける。各漸化式には、コンパイラによって固有の待ち行列識別子が割り当てられており、この固有の待ち行列識別子により、パケットルータ425は、入力データパケットを、最小限のデコードハードウェアによって素早く待ち行列に入れることができる。完全に有効な二次元経路選択網(fully active 2D routing mesh)においては、4つの並列の入力パケットがあるという事実を考えると、PE310のフロントエンドに対する圧力は重要である。データパケットで待ち行列情報の一部を搬送することによって、PE310のパケットルータ425のハードウェアの複雑さは、軽減される。最終的に、ストリーム識別子512を用いて、データパケットは、フラットメモリデータ構造(flat memory data structure)に関連付けられる。データストリーマ140がフラットメモリデータ構造から多次元データストリームを生成するとき、シグニチャ515により、データ構造内の位置が識別されるが、ストリーム識別子512は、データ構造を識別するために必要である。このストリーム識別子512は、命令ストリームプロセッサで用いられる基準アドレスに類似しており、命令ストリームプロセッサでは、メモリデータ構造上で実行されるプログラムは、基準アドレス(base addresses)に対して相対的に指定される。データストリーマ140は、ストリーム識別子512により、データパケットがどこから入力されたか、そして、データパケットをメモリ110のどこに書き込むかを適切に識別することができる。
次に、図5Bは、図5Aに示すデータパケット510に用いられるデータトークン520の構造の考えられる一実施の形態を示す図である。データトークン520は、このデータ要素がどの命令に属しているかを、命令格納部450が識別するために必要な最低限の情報を搬送する。図5Aと図5Bを比較することによって分かるように、データトークン520は、データパケット510内に完全に含まれる。データトークン520の個々のフィールドは、上述したデータパケット510のフィールドと同じである。データパケット510が、実際には、データトークン520をプロセッサアレイ160の全体を通じて配信するルーチング機構(routing mechanisms)であるので、これは、異なる実施の形態間の共通構造である。データパケット510とデータトークン520間で同じ構造を用いることによって、データトークン520は、素早くアセンブル及び逆アセンブリすることができ、それによって、ハードウェアの複雑さを軽減し、処理能力及び待ち時間だけでなく、電力に関する性能も向上させることができる。データトークン520の構造により、命令格納部450の詳細な動作を決定し、それは、様々な方法で、連立アフィン漸化式(systems of affine recurrence equations)から生じる任意の単一代入プログラムの実行を可能にするコア制御機構(core control mechanism)とみなすことができる。命令格納部450は、データトークン520を構成し(organizes)、実行を保留している命令トークンをアセンブル及び構成する。図5Bに示すデータトークン520の構造に属する命令格納部450の実施の形態を図6に示す。
図6に示すように、データトークンは、データトークン逆アセンブリユニット(data token disassembly unit)610に到着する。データトークン逆アセンブリユニット610は、データトークンの異なるフィールドを抽出する。このデータトークンが配信されなければならない命令トークンを識別するために、データトークン逆アセンブリユニット610は、データトークンから漸化式識別子513及びシグニチャ515を抽出して、ルックアップユニット620に送る。ルックアップユニット620は、図4に示すプログラム格納部440に問い合わせて、命令情報(instruction information)を検索する。ルックアップユニット620は、単に漸化式識別子513とシグニチャ515を組み合わせることによって、命令タグ625を構成する。命令タグ625は、このデータトークンが参加する計算イベント用の固有の識別子である。また、ルックアップユニット620は、プログラム格納部440から、データトークンが使用する命令トークン内のスロット位置に関する情報を受け取る。この情報は、スロット割当ユニット630を制御するものであり、スロット割当ユニット630は、データトークン逆アセンブリユニット610から、データタイプ514及び生のデータ値(raw data value)516を受け取って、保留命令の適切なスロットにルーティングする。ルックアップユニット620が実行する最後の機能は、命令ヘッダ651を構成することであり、命令ヘッダ651は、保留命令を、保留命令トークン格納部(pending instruction token store)650内でどのように管理するべきかという情報を含んでいる。これで、図5Cは、保留命令トークン格納部650内で管理される命令トークン530の実施の形態を示す図である。命令ヘッダ651は、命令オペコード531と、スロット範囲フィールド(slot cover)532と、スロット占有フィールド(slot occupancy field)533とを含んでいる。命令オペコード531は、値パイプライン480の機能単位(functional units)を制御するフィールドである。命令オペコード531は、オペランドに適用する必要がある種類の演算をエンコードする。具体的な演算の種類としては、例えば加算、乗算、除算のような代表的な機能単位演算子(functional unit operators)、例えばマスクビットテスト、シフトのようなあらゆる論理演算(logic operations)がある。スロット範囲フィールド(slot cover field)532は、命令がどれくらいのオペランドを必要とするかについて指定するものである。例えば、簡単な命令に対しては、1つの入力オペランドが用いられるが、より複雑な命令に対しては、代表的な3つのオペランド構造が用いられる。スロット範囲フィールド532及びスロット占有フィールド533は、保留命令トークン格納部650内において一緒に働き、命令が全てのそのオペランドを受け取ったかを判定する。命令タグ625を組み立てて、タグCAM640に送るルックアップユニット620によって用いられるプロセスは、開始する。タグCAM640は、これらの命令タグ625によってアドレッシングされる連想メモリ(content addressable memory、以下、CAMという。)である。タグCAM640がミス(miss)を示すとき、このミスは、命令がタグCAM640にまだ割り当てられていないことを意味し、ミスのときは、タグCAM640は、保留命令(pending instruction)を割り当てる。タグCAM640がヒット(hit)を示す場合、このヒットは、データトークンを配信できる保留命令があることを意味する。タグCAM640は、この保留命令に関連した記憶領域(storage)へのポインタ(pointer)を、保留命令トークン格納部650に供給する。ルックアップユニット620は、上述したように、命令ヘッダ651を供給し、スロット割当ユニット630は、データトークン値(data token value)を保留命令の適切なスロットに書き込む。また、スロット割当ユニット630は、スロット占有フィールド533を更新して、それを、必要とされるスロット範囲フィールド532と比較する。2つのフィールドが等しい場合、全てのオペランドが受け取っており、命令は、実行する準備ができている。命令タグ645と、フィールド651、534、535、536を含み、図5Cに示す命令トークン530を構成する保留命令とは、命令トークンアセンブリユニット660に送られる。命令トークンアセンブリユニット660は、完成した命令トークンを、図4に示すように、トークン逆アセンブリユニット460によって開始する実行ユニット(execute units)に転送する。
図8は、実行エンジンを用いる方法を示すフローチャートである。ステップ800において、コントローラは、プログラムをメモリから要求し、このプログラムを実行することにより、読出要求をメモリコントローラに出し、メモリコントローラは、読出要求をメモリ要求に変換して、データをコントローラに返す。このデータには、単一代入プログラムを実行するためのプログラム命令が含まれている。ステップ802において、プログラム命令はプログラミング情報にデコードされて、データストリーマに転送及び配信される。ステップ804において、プログラミング情報は、クロスバーに送られる。ステップ806において、プログラミング情報は、クロスバーからプロセッサアレイに配信される。ステップ808において、プログラミング情報は読み込まれて、プロセッサアレイは、単一代入プログラムを実行するように構成される(configured)。ステップ810において、データ経路全体が一旦設定される(set up)と、データストリームを送ることを開始させるイベントが、コントローラからストリーマに発行される。ステップ812において、ストリーマから読出要求及び書込要求を受け取り、読出要求及び書込要求は、メモリコントローラによってメモリ要求に変換される。ステップ814において、データストリームがクロスバーによって、データストリームに対して命令を実行するプロセッサアレイの行又は列にルーティングされ、出力データストリームが生成され、この出力データストリームは、クロスバーを横切ってストリーマに供給されることによって、メモリに書き込まれ、すなわち、ストリーマは、メモリアドレスをデータストリームに関連付け、そして、データストリームをメモリコントローラに供給し、メモリコントローラは、データストリームをメモリに書き込む。ステップ816において、ストリーマが計算タスクの終了を一旦確認すると、通知イベントがコントローラに送られる。
例えば、実行エンジンがコンピュータで実現されている場合、実行エンジンを利用するために、ユーザは、実行エンジンに、プログラムを入力及び/又は開始する。そして、実行エンジンは、上述したように、プログラムを実行する。プログラムに従い、プログラムは、所望の結果を出力する。例えば、ユーザがコンピュータ的に複雑な数学方程式を実行したい場合、実行エンジンが実行した後の出力は、この方程式の結果である。
動作において、ここに説明する形式の単一代入プログラムの実行を編成する(organizing)ことにより、実行エンジンは、命令シーケンスプロセッサ(instruction sequence processor)を用いたときに遭遇する多くの問題を、解決している。実行を案内する命令ポインタ(instruction pointer)は存在しない。実行エンジンは、完全にデータ駆動型である。データ要素が利用できるようになったとき、それらのデータ要素は、依存計算(dependent computations)を起動させる。したがって、実行エンジンの機能は、データフローマシン(data flow machine)に適している。しかしながら、データフローマシンにお
いて、ルックアップは、フラットメモリアドレスに基づいて行われるので、利用する空間構成が存在しない。従来のデータフローマシンにおける第2の問題は、大規模なプログラム(large scale program)を実行できるようにするためには、保留命令を維持する連想メモリ(Content addressable memories、以下、CAMという。)を、非常に大きくする必要があるということである。CAMを大きくすると、CAMは、電力効率が悪くなり、遅くなる。データフローマシンが、フォンノイマン型アーキテクチャ(von Neumann architecture)を用いた命令シーケンスプロセッサに匹敵した性能を出せないので、CAMは、データフローマシンにおいて伝統的なボトルネックであった。実行エンジンは、フォンノイマン型アーキテクチャが誇る(honors)計算の仕様に追加できる空間条件(spatial constraints)を有し、したがって、電力条件(energy constraints)は、プログラムによって決まる可能性がある。
また、空間条件により、CAMを全ての演算処理要素に亘って分散させることができ、したがって、本発明のアーキテクチャは、並列化を更に増大(scales)させる。具体例として、小さな実行エンジンでは、4096個の演算処理要素をシングルチップ上に集積化することができる。演算処理要素の各命令格納部(instruction store)は、64個の保留命令を含むことができ、全体として、262144個の命令を並列化する。4コアチップの多重プロセッサにおける典型的な並列化尺度(concurrency measures)は、100のオーダであり、256個のプロセッサからなる超並列グラフィック処理装置(highly parallel 256 processor graphics processing units)でさえ、その並列化尺度は、10000のオーダに制限されている。本発明の実行エンジンの膨大な数の並列化を管理する能力は、前例がない。
以上、発明の構成及び動作の原理を容易に理解できるように、本発明を、詳細事項を含む特定の実施の形態について説明した。特許請求の範囲は、このような特定の実施の形態及びその詳細事項に限定されるものではない。説明した実施の形態請求は、発明の精神及び範囲から逸脱することなく、様々に変更できることは、当業者には明らかである。

Claims (14)

  1. それぞれ単一代入プログラムについてのプログラム情報を読み込ませて、設定させた、プロセッサアレイにおける複数のプロセッシングエレメントと、
    メモリからデータを読み出し、上記メモリからデータストリーマに読み出されたデータに、少なくとも、ストリーム識別子・漸化式識別子・シグニチャ・経路選択ベクトルを添付することにより、データパケットを生成するデータストリーマと、
    上記データストリーマから各プロセッシングエレメントに、上記データパケットを配信するクロスバーとを備え、
    各プロセッシングエレメントが、受信した上記データパケット内の経路選択ベクトルの値に基づき、そのデータパケットに関する計算を行うことなく上記データパケットを他のプロセッシングエレメント等に送出するか、又は、自プロセッシングエレメント内でそのデータパケットに対する計算を行うかを決定し、上記自プロセッシングエレメント内で計算する対象の上記データパケットについて、上記自プロセッシングエレメント内の命令格納部にて、命令を識別する情報と、当該データパケットに含まれていたオペランドを保持するようにし、上記命令に対する必要なオペランドの全てが揃ったときに、少なくとも、命令オペコード・ストリーム識別子・漸化式識別子・シグニチャ・全ての必要なオペランドを有する当該命令に関する命令トークンを、上記自プロセッシングエレメント内のトークン逆アセンブリユニット・値パイプライン・シグニチャパイプラインの組み合わせに送出し、上記自プロセッシングエレメント内のトークンアセンブリユニットにて、計算結果や新たなシグニチャを反映した新たなデータトークンを生成し、新たなデータパケットに対応する経路選択ベクトルの値に基づき、上記新たなデータトークンに対応する上記新たなデータパケットを他のプロセッシングエレメント等又は上記メモリ宛てに送出するか、又は、上記自プロセッシングエレメント内で上記新たなデータトークンに対する計算を行うかを決定し、各プロセッシングエレメントから上記メモリ宛てに送出された上記データパケットについて、上記データストリーマが、メモリアドレスを上記データパケットに関連付け、上記データパケットに含まれている上記データを当該メモリアドレスに書き込むように上記メモリ宛てに書き込みコマンドを送出するコンピュータ装置。
  2. 上記メモリとやりとりするメモリコントローラを更に備える請求項1記載のコンピュータ装置。
  3. コントローラが、読出要求を上記メモリコントローラに出し、上記メモリコントローラが、上記読出要求をメモリ要求に変換し、上記単一代入プログラムを実行するためのプログラム命令を上記コントローラに返すことを特徴とする請求項2記載のコンピュータ装置。
  4. コントローラは、データパス全体が一旦設定されると、上記データストリーマに、該データストリーマを開始させるイベントを発行することを特徴とする請求項2記載のコンピュータ装置。
  5. 上記クロスバーは、データストリームを上記プロセッサアレイの行又は列にルーティングすることを特徴とする請求項3記載のコンピュータ装置。
  6. 上記プロセッサアレイは、出力データストリームを生成することを特徴とする請求項5記載のコンピュータ装置。
  7. 上記出力データストリームを、上記クロスバーを横切って上記データストリーマに送り、該データストリーマは、メモリアドレスを該データストリームに関連付けて、該データストリームをメモリコントローラに供給し、該メモリコントローラは、該データストリームを上記メモリに書き込むことを特徴とする請求項6記載のコンピュータ装置。
  8. 上記データストリーマは、計算タスクの終了を一旦確認すると、通知イベントを上記コントローラに送ることを特徴とする請求項7記載のコンピュータ装置。
  9. 各プロセッシングエレメントに、連立アフィン漸化式で定義された単一代入プログラムについてのプログラム情報を読み込ませて、設定させ、
    メモリからデータストリーマにデータを読み出し、
    メモリからデータストリーマに読み出されたデータに、少なくとも、ストリーム識別子・漸化式識別子・シグニチャ・経路選択ベクトルを添付することにより、データパケットを生成し、
    データストリーマからクロスバーを介して各プロセッシングエレメントに、上記データパケットを配信し、
    データパケットを受信したプロセッシングエレメントは、当該データパケット内の経路選択ベクトルの値に基づき、そのデータパケットに関する計算を行うことなく上記データパケットを他のプロセッシングエレメント等に送出するか、又は、自プロセッシングエレメント内でそのデータパケットに対する計算を行うかを決定し、
    上記自プロセッシングエレメント内で計算する対象の上記データパケットについて、上記自プロセッシングエレメント内の命令格納部にて、命令を識別する情報と、当該データパケットに含まれていたオペランドを保持するようにし、
    上記自プロセッシングエレメント内の命令格納部にて、ある命令に対する必要なオペランドの全てが揃うときまで待ち合わせ、
    上記命令に対する必要なオペランドの全てが揃ったときに、当該命令に関する命令トークンであって、少なくとも、命令オペコード・ストリーム識別子・漸化式識別子・シグニチャ・全ての必要なオペランドを有する当該命令に関する命令トークンを、上記自プロセッシングエレメント内のトークン逆アセンブリユニット・値パイプライン・シグニチャパイプラインの組み合わせに送出し、
    上記自プロセッシングエレメント内のトークンアセンブリユニットにて、計算結果や新たなシグニチャを反映した新たなデータトークンを生成し、新たなデータパケットに対応する経路選択ベクトルの値に基づき、新たなデータトークンに対応する新たなデータパケットを他のプロセッシングエレメント等又はメモリ宛てに送出するか、又は、上記自プロセッシングエレメント内で新たなデータトークンに対する計算を行うかを決定し、
    各プロセッシングエレメントから上記メモリ宛てに送出された上記データパケットについて、上記データストリーマが、メモリアドレスを上記データパケットに関連付け、上記データパケットに含まれている上記データを当該メモリアドレスに書き込むように上記メモリ宛てに書き込みコマンドを送出する
    という一連の処理を行うプログラム実行方法。
  10. データパス全体が一旦設定されると、コントローラから上記データストリーマに、該データストリーマを開始させるイベントを発行する請求項9記載のプログラム実行方法。
  11. データストリームは、上記クロスバーによって、プロセッサアレイにおいて、プロセッシングエレメントの行又は列にルーティングされることを特徴とする請求項9記載のプログラム実行方法。
  12. 上記プロセッサアレイにおいて、出力データストリームを生成することを特徴とする請求項11記載のプログラム実行方法。
  13. 上記出力データストリームを、上記クロスバーを横切ってデータストリーマに送り、該データストリーマは、メモリアドレスを該データストリームに関連付けて、該データストリームをメモリコントローラに供給し、該メモリコントローラは、該データストリームを上記メモリに書き込むことを特徴とする請求項12記載のプログラム実行方法。
  14. 上記データストリーマは、計算タスクの終了を一旦確認すると、通知イベントをコントローラに送ることを特徴とする請求項13記載のプログラム実行方法。
JP2011511706A 2008-05-27 2009-05-18 実行エンジン Active JP5684704B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13011408P 2008-05-27 2008-05-27
US61/130,114 2008-05-27
PCT/US2009/044317 WO2009146267A1 (en) 2008-05-27 2009-05-18 Execution engine

Publications (2)

Publication Number Publication Date
JP2011523132A JP2011523132A (ja) 2011-08-04
JP5684704B2 true JP5684704B2 (ja) 2015-03-18

Family

ID=41377534

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011511706A Active JP5684704B2 (ja) 2008-05-27 2009-05-18 実行エンジン

Country Status (4)

Country Link
US (1) US8688956B2 (ja)
EP (1) EP2304577B1 (ja)
JP (1) JP5684704B2 (ja)
WO (1) WO2009146267A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092212B2 (en) 2007-05-31 2015-07-28 James Arthur Dean Wallace Anderson Processors
GB0710377D0 (en) * 2007-05-31 2007-07-11 Univ Reading The Processors
US9501448B2 (en) 2008-05-27 2016-11-22 Stillwater Supercomputing, Inc. Execution engine for executing single assignment programs with affine dependencies
TWI382348B (zh) * 2008-10-24 2013-01-11 Univ Nat Taiwan 多核心系統及其排程方法
US20110167176A1 (en) * 2010-01-06 2011-07-07 Apple Inc. Connecting multiple accessories to a portable computing device
WO2012100830A1 (en) * 2011-01-27 2012-08-02 Advantest (Singapore) Pte. Ltd. Test card for testing one or more devices under test and tester
JP6721911B2 (ja) * 2014-02-20 2020-07-15 スティルウォーター スーパーコンピューティング,インク. アフィン従属による単一割当プログラムを実行するための実行エンジン
CA2951052C (en) 2014-06-02 2023-09-26 Datex, Inc. Tokenizing network appliance and method
US10489063B2 (en) * 2016-12-19 2019-11-26 Intel Corporation Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication
AU2018248439C1 (en) * 2017-04-06 2021-09-30 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
KR102336666B1 (ko) * 2017-09-15 2021-12-07 삼성전자 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US11726757B2 (en) * 2019-08-14 2023-08-15 Nvidia Corporation Processor for performing dynamic programming according to an instruction, and a method for configuring a processor for dynamic programming via an instruction
US11848863B2 (en) * 2019-11-05 2023-12-19 Nokia Solutions And Networks Oy Universal network protocol encapsulation and methods for transmitting data
CN113722249B (zh) * 2021-11-01 2022-02-08 中科声龙科技发展(北京)有限公司 数据处理装置及数据处理方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3978452A (en) * 1974-02-28 1976-08-31 Burroughs Corporation System and method for concurrent and pipeline processing employing a data driven network
US3962706A (en) * 1974-03-29 1976-06-08 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of stored programs
US4149240A (en) * 1974-03-29 1979-04-10 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of data structure operations
JPH0632056B2 (ja) * 1985-05-31 1994-04-27 松下電器産業株式会社 デ−タ処理装置
JPS61276032A (ja) * 1985-05-31 1986-12-06 Matsushita Electric Ind Co Ltd 情報処理装置
US4972315A (en) * 1987-03-10 1990-11-20 Mitsubishi Denki Kabushiki Kaisha Data flow machine
RU2148857C1 (ru) * 1998-02-20 2000-05-10 Бурцев Всеволод Сергеевич Вычислительная система
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US6205533B1 (en) * 1999-08-12 2001-03-20 Norman H. Margolus Mechanism for efficient data access and communication in parallel computations on an emulated spatial lattice
US7581076B2 (en) * 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
CA2360712A1 (en) * 2001-10-31 2003-04-30 Sicon Video Corporation Method and apparatus for the data-driven synchronous parallel processing of digital data
US7035996B2 (en) * 2002-01-17 2006-04-25 Raytheon Company Generating data type token value error in stream computer
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US8010467B2 (en) * 2003-03-24 2011-08-30 Fiske Software Llc Active element machine computation
US7827386B2 (en) * 2003-06-30 2010-11-02 Intel Corporation Controlling memory access devices in a data driven architecture mesh array
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
JP2007004338A (ja) * 2005-06-22 2007-01-11 Renesas Technology Corp データ処理装置
US7765250B2 (en) * 2004-11-15 2010-07-27 Renesas Technology Corp. Data processor with internal memory structure for processing stream data

Also Published As

Publication number Publication date
EP2304577B1 (en) 2018-07-04
JP2011523132A (ja) 2011-08-04
US8688956B2 (en) 2014-04-01
US20090300327A1 (en) 2009-12-03
WO2009146267A1 (en) 2009-12-03
EP2304577A1 (en) 2011-04-06
EP2304577A4 (en) 2011-07-20

Similar Documents

Publication Publication Date Title
JP5684704B2 (ja) 実行エンジン
US11681650B2 (en) Execution engine for executing single assignment programs with affine dependencies
Sankaralingam et al. Distributed microarchitectural protocols in the TRIPS prototype processor
Rauber et al. Parallel programming
Keckler et al. Processor coupling: Integrating compile time and runtime scheduling for parallelism
EP2951681B1 (en) Solution to divergent branches in a simd core using hardware pointers
Silc et al. Asynchrony in parallel computing: From dataflow to multithreading
Sterling et al. Gilgamesh: A multithreaded processor-in-memory architecture for petaflops computing
TW200842715A (en) Method of optimizing multi-set context switch for embedded processors
Siracusa et al. A comprehensive methodology to optimize FPGA designs via the roofline model
US20180246847A1 (en) Highly efficient scheduler for a fine grained graph processor
EP3108358B1 (en) Execution engine for executing single assignment programs with affine dependencies
Kim et al. Introduction to parallel programming and pMatlab v2. 0
Ruggiero Throttle Mechanisms for the Manchester Dataflow Machine
JP2005508029A (ja) リコンフィギュアラブルアーキテクチャのためのプログラム変換方法
Kumar et al. Parallelization of PageRank on multicore processors
Wang et al. Computing programs containing band linear recurrences on vector supercomputers
Venkateswaran et al. Memory in processor-supercomputer on a chip: processor design and execution semantics for massive single-chip performance
Keckler et al. Architecture and Implementation of the TRIPS Processor
Schaffer Design and Implementation of a Multithreaded Associative SIMD Processor
Naveed Ul Reducing processor-memory performance gap and improving network-on-chip throughput
Mustafa Reducing Processor-Memory Performance Gap and Improving Network-on-Chip Throughput
Fung Dynamic warp formation: exploiting thread scheduling for efficient MIMD control flow on SIMD graphics hardware
GB2603151A (en) Circuitry and method
Papadopoulos et al. Parallel architectures for fluid flow simulation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120518

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140317

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150115

R150 Certificate of patent or registration of utility model

Ref document number: 5684704

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250