JP2014041640A - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP2014041640A
JP2014041640A JP2013214320A JP2013214320A JP2014041640A JP 2014041640 A JP2014041640 A JP 2014041640A JP 2013214320 A JP2013214320 A JP 2013214320A JP 2013214320 A JP2013214320 A JP 2013214320A JP 2014041640 A JP2014041640 A JP 2014041640A
Authority
JP
Japan
Prior art keywords
loop
packet
instruction
processing
data
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
JP2013214320A
Other languages
English (en)
Inventor
Mitsuru Mushano
満 武者野
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to JP2013214320A priority Critical patent/JP2014041640A/ja
Publication of JP2014041640A publication Critical patent/JP2014041640A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】命令列を含むパケットをベースにしたデータ駆動アーキテクチャで、ループプログラムの同期処理の実現と、パケットの異常な増大を抑制する。
【解決手段】MCE300にループ制御部308を設け、ループプログラムの各ループ処理の完了を通知する”done”命令を次命令とするパケットをループ制御部308に送り、その都度、ループ制御部308はループ処理の進み具合からループIDの上限値を算出し、全PEにその上限値をブロードキャストする。PEのパケット生成部はループ処理に必要なパケットの生成をループID以内に制限することで、高速性を維持しながらパケット数を適正に抑制することが可能になる。また、ループ制御部308に届いた、ループプログラムの最後の”done”パケットのみを通過させ、それ以前の”done”パケットを消去することでループプログラムとそれ以降の処理の同期をとることが可能になる。
【選択図】図9

Description

本発明は、データ処理装置に関する。
新しいコンピュータアーキテクチャとして、従来のデータ駆動計算機を改良したアーキテクチャが特許文献1にて開示された。このアーキテクチャの特徴は、PE内にプログラムエリアを持たず、プログラムが実行すべき全ての処理命令をパケットの中に持たせたことと、メモリアクセスを一括して行うモジュールを持たせたことで、プログラム言語との親和性向上、およびロジック数の低減を果たしている。
また、特許文献2ではループ処理において、ループIDを1ずつ増加させながらループ内の処理に必要な複数のパケットをループ数だけ複製する機能を開示し、これにより高速化を果たしている。
特許第5057256号 国際公開第2013/118754号 国際公開第2013/141290号
しかしながら、特許文献2で示された方法には同期処理が考慮されておらず、例えばあるメモリエリアをループ処理を使って初期化した後で、そのメモリエリアを参照しながらさらに処理を進めるようなプログラムを作成しようとしても、ループ処理の終了が分からず、結果的にメモリエリアの初期化完了を待たずに次の処理を進めてしまう事になるため、データの不整合が起きて、まともに処理ができない。
また、ループ処理のループ数や処理の複雑さが増えると、複製するパケットが多くなり、それらを多くのPEが分担して高速に複製を繰り返した場合、短時間にデータ処理装置の処理能力を上回るほどにパケットの量が増大する。その弊害として、各PEが持っている待ち合わせ用のバッファがパケットで一杯になり、溢れたパケットがデータ処理装置内を回り続け、その結果、待ち合わせで発火する確率が低下し、処理速度が低下する。また、データ処理装置内の各所にバッファやFIFOを設けているが、これらもパケットで一杯になると最悪の場合、データ処理装置全体がデッドロックしていまう現象も発生している。
本発明による第1の態様のデータ処理装置は、データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備え、前記処理命令はループ処理の完了を通知するループ処理完了命令を含み、ループプログラムの実行に際して、ループ数を取得する手段と、ループ処理完了数をカウントするループカウンタを有するループ制御部を含み、前記ループ制御部は、次命令が前記ループ処理完了命令を有すパケットを取得し、該ループ処理完了命令の実行によりループカウンタを1加算し、該ループカウンタが前記ループ数より小さい場合は、該パケットを削除し、そうでない場合は該パケットを通過させることを特徴とするものである。
また、本発明による第2の態様のデータ処理装置は、データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備え、前記識別情報は、ループ処理ごとに設定されるループIDを含み、前記処理命令は、ループ処理の完了を通知するループ処理完了命令を含み、前記ループ処理完了命令が次命令のパケットを取得し、前記ループIDの上限値を算出するループ制御部と、前記ループIDを、前記上限値を超えない範囲で1づつ加算してループ処理に必要なパケットを生成するループパケット生成部とを備えることを特徴とするものである。
本発明によれば、ループプログラムとその後続のプログラムの同期問題を解決するだけでなく、ループプログラム処理中のパケットの増大を抑制し、処理の高速性を損なうことなく、安定した処理を実現する。
本発明のデータ処理装置を備えたデータ処理システム全体の構成を示すブロック図である。 本発明のデータ処理装置で処理されるプログラム(実行コード)の概略フォーマットの一例である。 図2に示した中間パケットリストに入っている中間パケットのフォーマットを示す図である。 命令情報の実行順を示す図である。 データ処理装置内のMCEおよびルーター間で通信される通信パケットのフォーマットを示す図である。 PE内、およびMCE内で使われる内部パケットのフォーマットを示す図である。 データ処理装置で用いられる命令セットの一例を示す図である。 データ処理装置内の構成を示すブロック図である。 MCE内の構成を示すブロック図である。 PE内の構成を示すブロック図である。 宛先情報算出部の動作の一例を説明するためのフローチャートである。 PE座標算出方法を説明するフローチャートである。 基本的な命令セットを使ったデータフロー図の一例を示す図である。 図13のデータフロー図に対応した内部パケットの動作を示す図である。 ループプログラムの動作を説明するための1例となるデータフロー図である。 ループ制御部がパケット取得後の処理を説明するためのフローチャートである。 lid上限値を算出する1例を説明するための図である。
以下、本発明の好適な実施の形態を、図1ないし図17を参照して説明する。
まず、図1を参照して、データ処理装置を備えたデータ処理システム全体の構成の概略について説明する。
図1に示されているデータ処理システムは、データ処理装置1を備えた並列コンピュータシステムであり、データ処理装置1以外に、記憶装置6、入力装置7、出力装置8、およびバス9を含んで構成されている。また、データ処理装置1、記憶装置6、入力装置7、および出力装置8は、バス9を介して互いに接続されている。なお、データ処理装置1の構成についての詳細な説明は後述する。
記憶装置6は、RAM(Random Access Memory)やROM(Read Only Memory)などで構成され、後述するプログラム(実行コード)や当該プログラムの実行に用いられるデータなどを記憶している。また、データ処理装置1は、コンピュータシステムのCPUに相当し、記憶装置6に記憶されているプログラムを実行する。なお、データ処理装置1の動作についての詳細な説明は後述する。
入力装置7は、キーボードやマウスなどで構成され、データやプログラム(実行コード)を含む情報を外部から当該データ処理システムに入力する。一方、出力装置8は、ディスプレイやプリンタなどで構成され、情報を文字や画像などとして外部に出力する。
なお、上記データ処理装置1、記憶装置6、入力装置7、および出力装置8の分類は、固定的なものではない。例えば、ハードディスクドライブや光ディスクドライブなどの補助記憶装置は、記憶装置6として用いられるが、外部との間で情報を入出力する入力装置7および出力装置8に分類してもよい。
図2はデータ処理装置1が実行可能なプログラム(実行コード)の概略データ構造図である。プログラムヘッダー400、関数情報を記述した関数ディスクリプタリスト401、プログラムの実行に必要な全ての中間パケット402で構成された中間パケットリスト402、文字列リスト403、およびグローバルデータ404から構成される。
本実施形態における中間パケット402は図3のデータ構造をしており、データ14が64ビット、後述する延長フラグ13と再延長フラグ12がそれぞれ1ビット、命令数11が4ビット、および8ビットの命令が最大8個書き込める命令情報13が64ビットで構成される。命令情報は図4に示すようにビットの下位から上位に向けて、左詰めで実行順に並んでいる。従って、命令数が1であれば、次に実行すべき次命令の命令コードは63ビット目からの8ビットであり、式で表すと命令数をnとして(71ーn*8)ビットから(64−n*8)ビットである。なお、命令セットの中には2バイト命令があり、その場合は(79−n*8)ビットから(64ーn*8)ビットが命令であるが、2バイト目はダウンカウンタ等の補助データになっており、命令コード自体は8ビットで示され、次命令としては1バイト命令の場合と同じ(71ーn*8)ビットから(64−n*8)ビットである。
図8はデータ処理装置1内部の構成を示しており、ルーター130aないし130p、PE100aないし100p、MCE300(Memory Control Element)、キャッシュメモリ制御部120、および通信路(伝送路)140で構成されている。
通信路140を流れるデータは図5に示す構造をしており、図3の中間パケットのデータに、消去フラグ22、条件フラグ21、識別情報20、宛先PEy30、宛先PEx31,及びモード32が付加されている。なお、図3と同じデータ部分は同じ符号を付している。
ここでPE100aないし100pの座標(X,Y)を図6に示すように(0,0)ないし(3,3)と表し、図5の宛先PEx31が座標Xに、宛先PEy30が座標Yに対応するデータである。
モード32は、値が1であれば次命令がMCEで実行されることを意味し、パケットはMCEに転送され、値が0であれば次命令はPEで実行されることを意味し、宛先PEx31と宛先PEy30が示す座標のPEに転送される。
図6はMCEの内部、およびPEの内部のモジュール間でやりとりされる内部パケットのデータ構成図である。内部パケットは通信パケットのデータからモード32,宛先PEx31、および宛先PEy30を削除した構造になっている。なお、図5および図6は図3と同じデータの部分には同じ符号を付けて重複説明を省いている、とともに太線で示してある。
以下、図9を参照して、本実施形態におけるMCEの構成について説明する。
図9に示されているMCE300はコマンド実行部301、パケット命令実行部302、バッファメモリ303、分配・比較・選択部304、入出力部305、メモリアクセス命令実行部307、およびループ制御部308をそれぞれ含んで構成されている。さらに入出力部305は、宛先情報算出部306を含み、ループ制御部308はlid上限値算出器309を含む。
コマンド実行部301は、例えば入力装置7を使ってオペレータから入力・指示されたコマンドを、通信路9を通して取得し、該コマンドを実行する。一例としてオペレータが、あるプログラムを指定して、その起動を指示した場合は、コマンド実行部301は指定されたプログラムのプログラムヘッダ400、および関数ディスクリプタ401をキャッシュメモリ制御部120を通して、記憶装置6から読み込み、プログラムの起動に必要なパケット列の中間パケットリスト402内のアドレスとパケット数を割り出し、その情報をパケット命令実行部302に渡してパケット生成を指示する。
パケット命令実行部302はコマンド実行部301からの命令、もしくは分配・比較・選択部304から受け取ったパケットの命令により、キャッシュメモリ制御部120を通して、記憶装置6にある図2のプログラムの中間パケットを1ないし複数読み込み、図6の内部パケット構造に変換して入出力部305に転送する。
入出力部305はパケット命令実行部302、メモリアクセス命令実行部307ないしループ制御部308から受け取った内部パケットに、後述する宛先情報算出部306で算出された宛先情報を付加して図5の通信パケット構造に変換し、隣接するルーターに転送する。ただし、ループ制御部308からは通信パケットを受け取る事があり、その場合はそのままルーターに転送する。隣接するルーターから取得した通信パケットは、モード32、宛先PEx31、および宛先PEy30を削除した図6の内部パケット構造に変換し、分配・比較・選択部304に転送する。
分配・比較・選択部304は、取得パケットを次命令に応じて他のモジュールに分配する機能と、”write”命令の待ち合わせをする機能を持っている。パケットの分配先はパケット命令実行部302、ループ制御部308、およびメモリアクセス命令実行部307であり、図7の命令セットの”Module”の列に示す”P”はパケット命令実行部302を、”L”はループ制御部308を、”M”はメモリアクセス命令実行部307を示し、次命令によりそれぞれ対応するモジュールに転送する。
待ち合わせ機能は、次命令が2入力命令である”write”命令の場合で、比較の結果ペアとなるパケットが見つからない取得パケットはバッファメモリ303に記憶し、ペアとなるパケットが見つかった(発火した)場合は、該パケットをバッファメモリ303から読み出し、取得パケットとペアにしてメモリアクセス命令実行部307に転送する。なお、パケットの比較方法は後述する。
メモリアクセス命令実行部307は分配・比較・選択部304から取得した1もしくは2個のパケットから、次命令が「read」であれば、そのパケットのデータ部に入っているアドレスから、キャッシュメモリ制御部120を通して記憶装置6のデータを読み込み、取得パケットのデータ部に読み込んだデータを上書きし、パケット中の命令数11を1減算して入出力部305に転送する。次命令が「write」であれば、左側オペランドのデータをアドレスとして、右側オペランドのデータを、キャッシュメモリ制御部120を通して記憶装置6に書き込む。その後、パケット中の命令数11を1減算して入出力部305に転送する。
以下、図10を参照して、本実施形態におけるPEの構成について説明する。
図10に示されているPE100aないし100pは、入出力部200、比較・選択部203,バッファメモリ204、処理命令実行部205、パケット生成部206、およびテンプレートバッファ207をそれぞれ含んで構成されている。入出力部200は、さらに宛先情報算出部201を含む。
入出力部200は、隣接するルーターから図5の通信パケットを入力し、図6の内部パケットに変換して比較・選択部203に転送する。また、処理命令実行部205から入力された内部パケットは、後述する宛先情報算出部201で宛先情報を算出し、その情報を該内部パケットに付加することで図5の通信パケットの形式に変換し、隣接するルーターに転送する。
比較・選択部203は、1入力命令であれば取得したパケットをそのまま処理命令実行部205に転送し、2入力命令であれば取得パケットをバッファメモリ204に記録した複数のパケットと前述した比較を行い、ペアとなるパケットが見つかればそのパケットを読み出し、取得パケットとペアにして処理命令実行部205に転送し、見つからない場合は取得パケットをバッファメモリに記録させる。
ここでパケットの比較について説明する。パケットの中の比較する部分は識別情報と処理命令である。比較しペアとなる条件は、識別情報全64ビットの一致と、処理命令については、図7の命令セットの”Compare”が”N”の場合は、次命令の左右フラグが反対であることと、該左右フラグを除く未実行命令のビット列が一致していることであり、”Compare”が”2”の場合は、次命令の左右フラグが反対であることと、2バイト命令である次命令の該左右フラグを除く15ビットのビット列が一致していることである。
パケット生成部206はテンプレートバッファ207に登録されたテンプレートを基に複数のパケットを生成し、入出力部200に転送する。テンプレートにはR−templateデータとS−templateデータの2種類があり、それぞれ”repeat”命令と”step”命令でテンプレートバッファに登録されたデータである。R−templateデータは基になるパケットにパケット生成数とlidピッチという生成条件を付加したデータで、S−templateデータはR−templateデータと同じ情報に加え、さらにデータの初期値とデータピッチという生成条件を付加したデータである。パケットの生成方法は、R−templateデータは基となるパケットのlid値を0から1ずつ増加させ、パケット生成数だけ生成する。S−templateデータは基となるパケットのlid値を0から1ずつ増加させたうえに、データ部にも生成条件の初期値からデータピッチずつ増加させたデータを書き込んだパケットをパケット生成数だけ生成するものである。
パケット生成部206はさらにlid上限値を識別情報毎に複数持つことができ、これらは初期値として0が入っている。パケット生成時はこの該当する識別情報のlid上限値を参照して、lid上限値以下のlid値を持つパケットであれば生成し、そうでない場合はlid上限値が更新されるのを待つ。MCEのループ制御部は更新したい識別情報を書き込み、それに対応するlid上限値をデータ部に書き込み、”set_limit”命令を処理命令に書き込んだパケットを全PEにブロードキャストすることでlid上限値を更新する。
図11と図12のフローチャートを参照して、図9の宛先情報算出部306と、図10の宛先情報算出部201における宛先PEx31、宛先PEy30、およびモード32のデータを算出する具体的な動作の一例について説明する。
まず、パケットが入力されると(S1)、そのパケットの命令数が0であるか判定し(S2)、0であればそのパケットを消去し(S8)、0より大きければ、次命令が命令追加命令かどうかを判定する(S3)。これは具体的には、命令数=1かつ延長フラグ=1であるか判定する。命令追加命令であれば宛先PE座標(X,Y)を算出して宛先PEx31と宛先PEy30に書き込み(S5)、モード32に0を書き込む(S6)。次命令が命令追加命令でなければ(S3のNO)、次命令がMCEで実行する命令であるかどうかを判定する(S4)。次命令が32より小さいかどうかを判定する。次命令がMCEで実行する命令であれば(S4のYES)モード32に1を書き込み、そうでなければ(S4のNO)S5に進む。
S5では宛先PE座標を算出したのち、S6に進み、モード32に0を書き込む。
前述した宛先PE座標の算出の一例を図12のフローチャートで示す。次命令が”repeat”命令であれば(S11)、ダウンカウンタ値のビット列を使って宛先PE座標を生成する(S12)。例えばPEの構成が8x8=64個であればX,Y座標はそれぞれ3ビットずつ必要なので、ダウンカウンタ値の3ビット目から5ビット目の3ビットをPEのX座標に使い、ダウンカウンタ値の0ビット目から2ビット目の3ビットをY座標に使う事ができる。これによりPEのテンプレートバッファはほぼ均一に使うことができ、パケット生成部206のパケット生成能力がほぼ均等になる。S11の分岐で”NO”の場合は、特許文献3にあるように、lidのビット列をX,Y座標それぞれの上位ビットに使い、X,Y座標それぞれの下位ビットに識別情報、および処理命令のうち次命令の左右情報を除く未実行命令を入力値とし、疑似乱数発生器で発生させた疑似乱数のビット列を使うことが有効である。これにより、PE間のパケット移動量の削減とPE負荷の均一化が得られる。
ここで、データ処理装置1で用いられる命令セットの一例を図7に示す。図7において、各命令はMCEで実行される命令とPEで実行される命令とに大別され、それぞれに1入力命令と2入力命令が含まれている。2入力命令は左側オペランドと右側オペランドがあり、データフロー図上ではノードの左側にくる矢印が左側オペランドで、ノードの右側に来る矢印が右側オペランドである。図7に示すように、”Direction”の列に”L”とあるのが左側オペランドで、”R”とあるのが右側オペランドで、空白になっている命令は1入力命令である。また”Hex”の列で、各命令に対して、オペレータ(演算子)に相当する記号と機械語における16進表記とが設定されており、これらはデータフロー図やパケット列についての説明で適宜用いられる。各命令は、例えば8ビットの固定長のコードで識別できるようになっている。”Bytes”の列は各命令のバイト数を示しており、1バイト命令を示す”1”のほかに2バイト命令を示す”2”もあるが、2バイト命令の2バイト目はダウンカウンターになっており、命令コードの部分は1バイト命令と同様に8ビットコードで識別している。
”Compare”の列は2入力命令においてペアとなるパケットを探す際の、比較する処理命令部分を示し、”N”は命令数11の数の未実行命令全てを比較するもので、”2”は次命令である2バイト命令の部分のみを比較するものである。”Module”の列は実際に命令を実行するMCE、PE内部のモジュールを示し、これらについては適宜後述する。また、”Hex”の列に示すように、各命令に対して、オペレータ(演算子)に相当する記号と機械語における16進表記とが設定されており、これらはデータフロー図やパケット列についての説明で適宜用いられる。
2入力命令については、説明の中で左右オペランドを識別する場合があり、例えば”write”命令であれば左側オペランドは”write_L”、右側オペランドは”write_R”というように左側オペランドには”_L”を、右側オペランドには”_R”を付加して示す。
なお、図7に示す命令追加命令”app”は特殊な命令となっており、延長フラグが1の場合のみ命令情報の最上位の1バイト(最後に実行すべき命令)は強制的に命令追加命令である、という規則の基で実行される命令である。この規則のため命令追加命令は8ビット全ての値を命令コードとして使えるようになっている。これにより比較・選択部においてペアとなるべき対象パケットが複数見つかり、誤選択が発生することを防いでいる。
図13のデータフロー図と図14のパケット図を参照して、基本的な命令の実行について説明する。
図13のデータフロー図は値がそれぞれ「5」と「3」の2個のデータを加算してから、その値をアドレスとするメモリのデータを読み込み、その読み込んだ値をメモリに書き込むというデータフロー図である。図中の四角はデータを表し、楕円はノード(処理命令)を表す。以降の図では図示しないが、矢印の近くの符号はその矢印の符号ではなく、その矢印上を流れるパケットの符号を示している。データ550を基に生成したパケットは”P550”、データ551を基に生成したパケットは”P551”とデータの符号の先頭に”P”を付加するものとする。また、各ノードで命令を実行後のパケットには数字の後に”a”,”b”,...とアルファベットを添えていくものとし、2入力1出力命令では左から来るパケットの符号を使って出力パケットを示す。
図14は、図13のそれぞれのパケットをパケット図として示したものである。なお、パケット図の見やすさを考慮し、説明に不要な部分はできるだけ空欄にしているが、値としては0が入っているものとする。パケットP550はデータ部が5で、命令数が3個で”write_R”、”read”、および”+_L”である。パケットP551はデータ部が3で、命令数が3個で”write_R”、”read”、および”+_R”である。この2つのパケットは”write_R”と”read”が一致し、次命令は”+”が一致し左右フラグが異なるため比較・選択部でペアと見なされ(発火し)”+”(加算)が実行される。実行後のパケットはパケットP550aに示すようにデータ部が5+3=8となり、命令数は1減算し2となる。次命令の”read”は単項演算のため、単独で実行され、その結果は一例として100という値がメモリから読み込まれたとして、パケットP550bで示すようにデータ部が100になり、命令数は1減算され1となる。この後は命令数が1で処理命令が”write_L”であるパケットとペアになり(発火し)、”write”(メモリ書き込み)を実行する事になる。
図15を参照して、ループプログラムの一例をデータフロー図で説明する。なお、ここでもパケットの符号には前述した規則を使用する。
図15で示しているのはC言語で記述されたプログラムソースコードの一部分である次の3行だけをデータフロー図で示したものである。
for( int ii=0 ; ii < 8 ; ii++ ){
buf[ii] = 0 ;
}
図15のデータフロー図の2重線の楕円は複数の2入力2出力のノードを省略して表現したもので、左から来るパケットの矢印に”L”を示し、その出力がダウンカウンターを減算しながら右から来る複数のパケットと演算を繰り返すものである。楕円が3重なっているノードはループプログラム内のノードを表し、lidの異なるループ数のパケットが実行するノードである。
データ701はループ数の8、データ702はlidピッチの1で、”pack”ノード706で1つのパケットのデータ部の上位と下位に詰める。”max_lid”ノード707でMCEのループ制御部308に最大lid値(8x1−1=7)を通知する。その後”repeat”ノード708と”step”ノード709でループ数とlidピッチを含めて、パケットP702a、P703a、およびパケットP704とパケットP705から”pack”命令と”step”命令を実行した結果のパケットP704bを、PEのテンプレートバッファ207に登録する。PEのパケット生成部206は登録されたテンプレートデータを基にlidを0から7まで変化させた8個のパケットをテンプレートデータごとに生成、さらにS−templateデータの場合はlidの変化に加え、データ部を0から7まで変化させたパケットを生成、これはソースコードの変数”ii”に相当する。
これらそれぞれ8個ずつのパケットは”+”、”write”命令を実行後、”done”命令710をMCEのループ制御部308で実行する。ループ制御部308の処理の詳細は後述するが、ループ処理の最後に届いた”done”命令710を持つパケットのみlid値を0にしたうえで、未実行の命令を処理すべく入出力部305に転送するが、それ以前に届いた”done”命令を持つパケットは全て消去する。その結果、ループプログラム以降の命令、この例では”wait”命令711を実行するパケットは1個になり、ループプログラムの外で実行できるようにlid値を0にしている。このパケットは”wait”命令の左から来るパケットなので、全ループ処理の完了を待ってから実行すべき処理のパケット群は”wait”命令の右から来るパケットにすることで同期処理を実現できる。
図16のフローチャートを参照して、MCEのループ制御部308の処理について説明する。
図16のフローチャートはループ制御部308がパケットを取得したときの処理である。ループ制御部308が処理する命令は”max_lid”もしくは”done”であるため、まず分岐S1で取得パケットの次命令から”max_lid”の処理に進む(S1のNO)。ここで初期化処理として取得パケットの識別情報の登録、lid上限値の初期化、lid上限値算出器309の初期化を行う(S2)。その後、lid上限値算出器309が算出したlid上限値を全PEにブロードキャストする。具体的には全てのPEごとにそのPE座標を宛先とするパケットを作成し、それぞれの処理命令は”set_limit”の1命令だけにして、データ部にlid上限値を書き込み、入出力部305に宛先情報算出不要の指示をして転送する。取得パケットの次命令が”done”の場合(S1のYES)は、”done”を実行した回数がこのパケットを含めてループ数に達していなければ(S4のNO)、lid上限値算出器309でlid上限値を算出し(S5)、算出した値が以前にブロードキャストしたlid上限値と同じでなければ(S6のYES)、算出したlid上限値をブロードキャストする(S3)。
なお、ここでデータ処理装置内のバッファやFIFOの状態を見て、ビジーと判断すればlid上限値をブロードキャストしないという判断を加えることも有効である。また、S4でNOの場合は取得パケットは入出力部305に転送されないためここで消去され、”done”の実行回数がループ数に達した場合(S4のYES)は、終了処理(S7)を行った後、取得パケットの命令数を1減算し、lid値を0にセットして入出力部305に転送する。
lid上限値算出器309におけるlid上限値の算出方法には以下の2つがある。
(1)”done”パケット取得数 +(PE数xN) ー1
(2)”done”が来てない最小lid値 +(PE数xN) ー1
上記”N”は整数値で、固定値のまま使う方法と、初期値からPEの処理命令実行部205の稼働率で変動させる方法の2種類がある。PE数を使うのはPE全体の負荷をできるだけ均一にするためである。その上で、(1)はlidのカウンタを使えば容易に実装できる。(2)の実装は図17に示す実線部分のlidフラグを用意し、常に0ビット目が0になるように実線エリアを図中左方向にずらし(lidフラグとしては右方向にデータをシフトする)ながら、0ビット目の破線を含めたビット位置(”done”が来ていない最小lid)を更新していくことで最小限のハードウェアリソースで実現できる。なお、実線エリアのビット数は想定される最大の(PE数xN)が必要である。(1)の欠点は、処理が進むにつれ同時に実行中のループ処理それぞれのlid値のバラツキが大きくなってきて、画像処理のようにメモリを多く使うプログラムではメモリキャッシュのヒット率が低下する傾向があることである。(2)はその欠点を補ったもので、lid値のバラツキを完全に抑制しているため安定した性能が得られる特徴がある。
なお、これまでlid上限値はPEのパケット生成部206で生成できるパケットの最大lid値として説明してきたが、これに限るものでなく、lid上限値未満のlid値まで生成できるとしてもよく、その場合、前記lid上限値の算出方法は以下になる。
(1)”done”パケット取得数 +(PE数xN)
(2)”done”が来てない最小lid値 +(PE数xN)
なお、上記実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得るとともに、本発明にはその等価物も含まれる。
1 データ処理装置
6 記憶装置
7 入力装置
8 出力装置
9 バス
10 命令情報
11 命令数
12 再延長フラグ
13 延長フラグ
14 データ
20 識別情報
21 条件フラグ
22 消去フラグ
30 宛先PEy
31 宛先PEx
32 モード
100a〜100p PE
120 キャッシュメモリ制御部
130a〜130p ルーター
140 通信路
200 入出力部(PE)
201 宛先情報算出部(PE)
203 比較・選択部
204 バッファメモリ(PE)
205 処理命令実行部
206 パケット生成部
207 テンプレートバッファ
300 MCE
301 コマンド実行部
302 パケット命令実行部
303 バッファメモリ(MCE)
304 分配・比較・選択部
305 入出力部(MCE)
306 宛先情報算出部(MCE)
307 メモリアクセス命令実行部
308 ループ制御部
309 lid上限値算出器
400 プログラムヘッダー
401 関数ディスクリプタリスト
402 中間パケットリスト
403 文字列リスト
404 グローバルデータ

Claims (2)

  1. データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備えるデータ処理装置において、
    前記処理命令はループ処理の完了を通知するループ処理完了命令を含み、
    ループ数を取得する手段と、ループ処理完了数をカウントするループカウンタを有すループ制御部を含み、
    前記ループ制御部は、次命令に前記ループ処理完了命令を有すパケットを取得し、該ループ処理完了命令の実行によりループカウンタを1加算し、該ループカウンタが前記ループ数より小さい場合は、該パケットを削除し、そうでない場合は該パケットを通過させることを特徴とするデータ処理装置。
  2. データごとに、当該データを識別する識別情報および当該データに対する1つ以上の処理命令を示す命令情報を含む拡張識別情報が付加されたパケットを処理する複数の処理部を備えるデータ処理装置において、
    前記識別情報は、ループ処理ごとに設定されるループIDを含み、
    前記処理命令は、ループ処理の完了を通知するループ処理完了命令を含み、
    前記ループ処理完了命令が次命令のパケットを取得し、前記ループIDの上限値を算出するループ制御部と、
    前記ループIDを、前記上限値以下で、1づつ加算してループ処理に必要なパケットを生成するループパケット生成部と、
    を備えることを特徴とするデータ処理装置。
JP2013214320A 2013-10-15 2013-10-15 データ処理装置 Pending JP2014041640A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013214320A JP2014041640A (ja) 2013-10-15 2013-10-15 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013214320A JP2014041640A (ja) 2013-10-15 2013-10-15 データ処理装置

Publications (1)

Publication Number Publication Date
JP2014041640A true JP2014041640A (ja) 2014-03-06

Family

ID=50393780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013214320A Pending JP2014041640A (ja) 2013-10-15 2013-10-15 データ処理装置

Country Status (1)

Country Link
JP (1) JP2014041640A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04127387A (ja) * 1990-09-19 1992-04-28 Sanyo Electric Co Ltd データ駆動型データ処理装置
WO2013118754A1 (ja) * 2012-02-08 2013-08-15 株式会社Mush-A データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04127387A (ja) * 1990-09-19 1992-04-28 Sanyo Electric Co Ltd データ駆動型データ処理装置
WO2013118754A1 (ja) * 2012-02-08 2013-08-15 株式会社Mush-A データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法

Similar Documents

Publication Publication Date Title
US11516129B2 (en) Packet edit processing method and related device
TWI489779B (zh) 狀態機晶格中之布林邏輯
KR101603751B1 (ko) 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법
JPWO2019241425A5 (ja)
US20160057256A1 (en) Information processing apparatus, communication method and storage medium
US11625393B2 (en) High performance computing system
JP2009048252A (ja) プログラム変換装置及びコンパイラプログラム
CN103065069A (zh) 一种基于壳技术的软件保护方法
JP5807676B2 (ja) パケット分類器、パケット分類方法、及びパケット分類プログラム
JP2020503623A (ja) コンパイルデバイス及びコンパイル方法
US11614889B2 (en) Aggregating commands in a stream based on cache line addresses
WO2016070668A1 (zh) 一种实现数据格式转换的方法、装置及计算机存储介质
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP4747077B2 (ja) 演算回路
US20080184213A1 (en) Compiler device, method, program and recording medium
JP2014041640A (ja) データ処理装置
JP6298937B2 (ja) データ処理装置
JP2009301101A (ja) プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法
JP6954535B2 (ja) 通信装置
US9830161B2 (en) Tree-based thread management
JP5238876B2 (ja) 情報処理装置及び情報処理方法
JP2006120124A (ja) コンパイラ装置、コンパイル方法、コンパイラプログラム
JP2016162008A (ja) データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
JP5952239B2 (ja) トラヒック走査方法および装置
CN113485805B (zh) 基于异构加速平台的分布式计算调整方法、装置及设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181106