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

データ処理装置 Download PDF

Info

Publication number
JP2014017019A
JP2014017019A JP2013214299A JP2013214299A JP2014017019A JP 2014017019 A JP2014017019 A JP 2014017019A JP 2013214299 A JP2013214299 A JP 2013214299A JP 2013214299 A JP2013214299 A JP 2013214299A JP 2014017019 A JP2014017019 A JP 2014017019A
Authority
JP
Japan
Prior art keywords
instruction
packet
data
processing
gate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013214299A
Other languages
English (en)
Other versions
JP6298937B2 (ja
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 JP2013214299A priority Critical patent/JP6298937B2/ja
Publication of JP2014017019A publication Critical patent/JP2014017019A/ja
Application granted granted Critical
Publication of JP6298937B2 publication Critical patent/JP6298937B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】命令列を含むパケットをベースにしたデータ駆動アーキテクチャで、条件分岐などの複雑な処理を実現する。
【解決手段】2つの処理を条件分岐して行わせるプログラムを実現するために、分岐用の条件フラグを持たせたパケットと、その条件が1(true)の場合のみパケット群を通過させ、0(false)の場合はそのパケット群を消去する”t_gate”命令と、逆に、条件が0(false)の場合のみパケット群を通過させ、1(true)の場合はそのパケット群を消去する”f_gate”命令を設け、条件分岐処理においてtrueの場合に実行させたい処理のパケット群を”t_gate”命令のノードに入れ、falseの場合に実行させたい処理のパケット群を”f_gate”命令のノードに入れ、両方のノードに条件フラグを持ったパケットを入れることで分岐処理を実現する。
【選択図】図19

Description

本発明は、データ処理装置に関する。
新しいコンピュータアーキテクチャとして、従来のデータ駆動計算機を改良したアーキテクチャが特許文献1にて開示された。このアーキテクチャの特徴は、PE内にプログラムエリアを持たず、プログラムが実行すべき全ての処理命令をパケットの中に持たせたことと、メモリアクセスを一括して行うモジュールを持たせたことで、プログラム言語との親和性向上、およびロジック数の低減を果たしている。
また、特許文献2ではループプログラムにおいて、識別情報内のループIDを1ずつ増加させながらループ処理に必要な複数のパケットをループ数だけ複製するパケット生成機能を開示し、これにより高速化を実現している。
特許第5057256号 国際公開第2013/118754号
しかしながら、特許文献1のアーキテクチャではパケット内の複数の命令は処理する順番に並んでいるだけで、条件分岐処理をどのように実現するのか開示されておらず、複雑なプログラムへの適応ができなかった。また、特許文献2では主にDoall型のループ処理の実現方法が開示されており、ループプログラムの開始時にはループ数が決まっている必要があったが、プログラムの中にはループ数が不明で、ループ条件を満たす間はループ内処理を繰り返し実行するループプログラムがある。この様な一般的なループプログラムを実現する方法はまだ開示されていない。
前述した課題を解決するため主たる本発明は、データごとに、当該データに対する1つ以上の処理命令を示す命令情報を含むパケットを処理する複数の処理部を備えるデータ処理装置において、前記パケットは条件フラグを含み、前記処理命令は2つのパケットを使って実行するゲート命令を含み、前記ゲート命令は前記2つのパケットのうち、第一のパケットの前記条件フラグに基づいて、第二のパケットを消滅状態にするか通過させるかのどちらかを実行することを特徴とするデータ処理装置である。
本発明によれば、条件分岐処理や一般的なループ処理などの複雑なプログラムの処理を実行可能にする。
本発明のデータ処理装置を備えたデータ処理システム全体の構成を示すブロック図である。 本発明のデータ処理装置で処理されるプログラム(実行コード)の概略フォーマットの一例である。 図2に示した中間パケットリストに入っている中間パケットのフォーマットを示す図である。 命令情報の実行順を示す図である。 データ処理装置内のMCEおよびルーター間で通信される通信パケットのフォーマットを示す図である。 PE内、およびMCE内で使われる内部パケットのフォーマットを示す図である。 データ処理装置で用いられる命令セットの一例を示す図である。 データ処理装置内の構成を示すブロック図である。 MCE内の構成を示すブロック図である。 PE内の構成を示すブロック図である。 宛先情報算出部の動作の一例を説明するフローチャートである。 基本的な命令セットを使ったデータフロー図の一例を示す図である。 図12のデータフロー図に対応した内部パケットの動作を示す図である。 命令追加命令の動作を説明するためのデータフロー図の一例を示す図である。 図14のデータフロー図に対応した内部パケットの動作を示す図である。 データ複製命令の動作を説明するための簡略化したデータフロー図の一例を示す図である。 データ複製命令の動作を説明するための簡略化しないデータフロー図の一例を示す図である。 図16および図17のデータフロー図に対応した内部パケットの動作を示す図である。 ゲート命令の動作を説明するためのデータフロー図の一例を示す図である。 図19のデータフロー図に対応した内部パケットの動作を示す図である。 待ち合わせ命令の動作を説明するためのデータフロー図の一例を示す図である。 第1の実施形態におけるループ処理の動作を説明するためのデータフロー図の一例を示す図である。 第2の実施形態におけるループ処理の動作を説明するためのデータフロー図の一例を示す図である。 第3の実施形態における概略データフロー図の一例を示す図である。
以下、本発明の第1の実施形態を、図1ないし図22を参照して説明する。
まず、図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、文字列リスト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と同じデータ部分は同じ符号を付している。条件フラグ21、および消去フラグ20については後述する。
ここでPE100aないし100pの座標(X,Y)を図8に示すように(0,0)ないし(3,3)と表し、図5の宛先PEx31が座標Xに、宛先PEy30が座標Yに対応するデータである。
図5のモード32は、値が1であれば次命令がMCE300で実行されることを意味し、パケットはMCE300に転送され、値が0であれば次命令はPEで実行されることを意味し、宛先PEx31と宛先PEy30が示す座標のPEに転送される。
図6はMCEの内部、およびPEの内部のモジュール間でやりとりされる内部パケットのデータ構成図である。内部パケットは通信パケットのデータからモード32,宛先PEx31、および宛先PEy30を削除した構造になっている。なお、図5および図6は図3と同じデータの部分には同じ符号を付けて重複説明を省いている、とともに太線で示してある。
以下、図9を参照して、本実施形態におけるMCEの構成について説明する。
図9に示されているMCE300はコマンド実行部301、パケット命令実行部302、バッファメモリ303、分配・比較・選択部304、入出力部305、およびメモリアクセス命令実行部307をそれぞれ含んで構成されている。さらに入出力部305は、宛先情報算出部306を含む。
コマンド実行部301は、例えば入力装置7を使ってオペレータから入力・指示されたコマンドを、通信路9を通して取得し、該コマンドを実行する。一例としてオペレータが、あるプログラムを指定して、その起動を指示した場合は、コマンド実行部301は指定されたプログラムのプログラムヘッダ400、および関数ディスクリプタ401をキャッシュメモリ制御部120を通して、記憶装置6から読み込み、プログラムの起動に必要なパケット列の中間パケットリスト402内のアドレスとパケット数を割り出し、その情報をパケット命令実行部302に渡してパケット生成を指示する。
パケット命令実行部302はコマンド実行部301からの命令、もしくは分配・比較・選択部304から受け取ったパケットの命令により、キャッシュメモリ制御部120を通して、記憶装置6にある図2のプログラムの中間パケットを1ないし複数読み込み、図6の内部パケット構造に変換して入出力部305に転送する。
入出力部305はパケット命令実行部302ないしメモリアクセス命令実行部307から受け取った内部パケットに、後述する宛先情報算出部306で算出された宛先情報を付加して図5の通信パケット構造に変換し、隣接するルーターに転送する。隣接するルーターから取得した通信パケットは、モード32、宛先PEx31、および宛先PEy30を削除した図6の内部パケット構造に変換し、分配・比較・選択部304に転送する。
分配・比較・選択部304は、取得パケットを次命令に応じて他のモジュールに分配する機能と、”write”命令の待ち合わせをする機能を持っている。パケットの分配先はパケット命令実行部302、およびメモリアクセス命令実行部307であり、図7の命令セットの”Module”の列に示す、”P”はパケット命令実行部302を、”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をそれぞれ含んで構成されている。入出力部200は、さらに宛先情報算出部201を含む。
入出力部200は、隣接するルーターから図5の通信パケットを入力し、図6の内部パケットに変換して比較・選択部203に転送する。また、処理命令実行部205から入力された内部パケットは、後述する宛先情報算出部201で宛先情報を算出し、その情報を該内部パケットに付加することで図5の通信パケットの形式に変換し、隣接するルーターに転送する。
比較・選択部203は、1入力命令であれば取得したパケットをそのまま処理命令実行部205に転送し、2入力命令であれば取得パケットの識別情報と処理命令の後述する所定部分が一致し、左右情報が異なるパケットをバッファメモリ204に探し、見つかればそのパケットを読み出し、取得パケットとペアにして処理命令実行部205に転送し、見つからない場合は取得パケットをバッファメモリに記録させる。
ここでパケットの比較について説明する。パケットの中の比較する部分は識別情報と処理命令である。比較しペアとなる条件は、識別情報全64ビットの一致と、処理命令については、図7の命令セットの”Compare”が”N”の場合は、次命令の左右フラグが反対であることと、該左右フラグを除く未実行命令のビット列が一致していることであり、”Compare”が”2”の場合は、次命令の左右フラグが反対であることと、2バイト命令である次命令の該左右フラグを除く15ビットのビット列が一致していることである。
図11のフローチャートを参照して、図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座標を算出する。この算出方法として特許文献1で開示された疑似乱数を使う方法が有効である。疑似乱数を算出する際の入力値としては、比較・選択部で説明したパケットの比較のために使用する識別情報と処理命令の所定部分と同じビット列を使うことが望ましい。これによりペアとなるべきパケットが同じPEに届けられるからである。S5を実行した後、S6に進み、モード32に0を書き込む。
ここで、データ処理装置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内部のモジュールを示し、これらについては適宜後述する。
2入力命令については、説明の中で左右オペランドを識別する場合があり、例えば”write”命令であれば左側オペランドは”write_L”、右側オペランドは”write_R”というように左側オペランドには”_L”を、右側オペランドには”_R”を付加して示す。
なお、図7に示す”app”は特殊な命令となっており、延長フラグが1の場合のみ命令情報の最上位の1バイト(最後に実行すべき命令)は強制的に命令追加命令である、という規則の基で実行される命令である。この規則のため命令追加命令は8ビット全ての値を命令コードとして使えるようになっている。これにより比較・選択部においてペアとなるべき対象パケットが複数見つかり、誤選択が発生することを防いでいる。
図12のデータフロー図と図13のパケット図を参照して、基本的な命令の実行について説明する。
図12のデータフロー図は値がそれぞれ「5」と「3」の2個のデータを加算してから、その値をアドレスとするメモリのデータを読み込み、その読み込んだ値をメモリに書き込むというデータフロー図である。図中の四角はデータを表し、楕円はノード(処理命令)を表す。以降の図では図示しないが、矢印の近くの符号はその矢印の符号ではなく、その矢印上を流れるパケットの符号を示している。データ550を基に生成したパケットは”P550”、データ551を基に生成したパケットは”P551”とデータの符号の先頭に”P”を付加するものとする。また、各ノードで命令を実行後のパケットには数字の後に”a”,”b”,...とアルファベットを添えていくものとし、2入力1出力命令では左から来るパケットの符号を使って出力パケットを示す。
図13は、図12のそれぞれのパケットをパケット図として示したものである。なお、パケット図の見やすさを考慮し、説明に不要な部分はできるだけ空欄にしているが、値としては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”(メモリ書き込み)を実行する事になる。
次に図14、および図15を参照して本実施形態における命令追加命令”app”の実行について説明する。
本実施形態における命令追加命令は、特許文献1で開示された2つの方式と異なる方式を用いている。その目的は、特許文献1の2つの方式ではデータフロー図が複雑化した場合に、データフロー図上で異なる場所で命令追加命令を実行する予定の2つのパケットの命令情報部が偶然にペアとなる条件を満たしてしまうようなミスマッチが発生し誤動作するため、命令追加命令のノード毎に異なるコードを与え、ミスマッチが発生しないように改良したものである。
図14のデータフロー図はパケットP500が最後の命令である”app_0”の実行で、パケットP501のデータ部をパケットP500の命令情報部にコピーすることで、後続の”inc”および”write_R”を実行することを示している。図中”app_0”の”0”はHexコードを示し、”app”のノード毎に割り当てた異なるコードがわかるようにしている。
図15を参照して、命令追加命令”app”の実行方法を説明する。図15にP500とP501のパケットの詳細を示す。パケットP501はデータ部にパケットP500が命令追加命令実行後に実行すべき処理命令が入っている。パケットのデータ部と命令情報部はともに64ビットなので、P501のデータ部からP500の命令情報部にそのままコピーする(P500aの命令情報部)。P500の新しい命令数は初期値を8として、新しい命令情報部の下位バイトから順番にコードが0であるたびに1ずつ減算し、0以外のコードが入っていたら処理を終了する。そうやって、この例の場合は新しい命令数は2になる(P500aの命令数)。また、P501の再延長フラグをP500の延長フラグにコピーする(P500aの延長フラグ)。これによりデータフロー図上のノードがいくら増えても処理が可能になる。
図16ないし図18を参照して、データの複製命令”dup”について説明する。
図16は図17を簡略化した図で、複製命令513aと513bをまとめて513として記述したものである。本来”dup”命令は2入力2出力命令であるが、2バイト目がダウンカウンタになっており連続して複数のパケットにデータを複製できるため513のようにまとめてN入力N出力として表現したものであり、二重線で識別できるようにしている。また、簡略化しても左右オペランドが区別できるように矢印514のように左オペランドに”L”を記載する。この簡略化は”t_gate”、”f_gate”、および”wait”でも同様に適応する。
図16では510のパケットは、自信の持つデータ”100を511と512のパケットに複製後、”app_0”に進む。511のパケットは510のデータを複製された後、”app_2”へ進む。512のパケットは510のデータを複製された後、”app_4”へ進む。
図18を参照して、具体的なパケットでさらに詳細に説明する。
図16の510ないし512に対応するパケットはそれぞれ図18のP510ないしP512である。P511とP512の命令情報部の最上位バイトには、P510とペアになるためにP510の最上位と同じ”app_0”が入っており、それぞれの進むべきノードである”app_2”、”app_4”はそれぞれのデータ部に入っている。
まず、P510とP511は次命令の左右フラグが異なり、他の処理命令が一致しているためペアとなり、実行される。”dup”実行の結果、P510はダウンカウンタが2から1になり命令数はそのままでP510aとなり、P511はデータ部を命令情報部にコピーし、その命令数1をセットし、データ部にP510のデータ部をコピーし、P511aとなる。次に、P510aはP512とペアになり、”dup”を実行した結果、ダウンカウンタを減算すると0になるため、”dup”命令は完了したことになり、2バイト命令のため命令数を2減算して1になり、P510bになる。P512はP511と同様にしてP512aとなる。
図19と図20を参照して、ゲート命令である”t_gate”、および”f_gate”の動作について説明する。
図19は動作を説明するためのデータフロー図の一例である。”t_gate”、および”f_gate”は”dup”と同じく2バイト命令でダウンカウンタを持っているため、二重線で簡略化した表現を用いている。”t_gate”は左からきたパケットの「条件フラグ」が1の場合に、右から来たパケットを通過させ、「条件フラグ」が0の場合には右から来たパケットを消滅させる命令であり、”f_gate”はその反対の動作をする命令である。”dup”命令との違いは前述したように、命令情報の中の2バイト命令の部分のみを比較してペア判定する点である。図20のパケット図における太枠の2バイトが比較部分で、上位15ビットが一致して、左右フラグが異なることがペアの条件である。
図19の520ないし523をパケット図にしたのが図20のP520ないしP523である。P520とP521は太枠部分の比較でペアとなり実行されると、P520の「条件フラグ」が1のため”t_gate”を通過(命令数を2減算)し、P521a”となる。P520はダウンカウンタを1減算してP520aとなる。P520aとP522の太枠部分はペア条件を満たすため実行され、P520の「条件フラグ」が1のためP522はP522aとなり、P521aはダウンカウンタが1減算して0になるため”t_gate”命令は完了し、命令数を2減算してP520bとなる。
P520bとP523の太枠部分の比較でペアとなり”f_gate”を実行するとP520bの条件フラグが1なのでP523は消滅することになる。P520bはダウンカウンタを1減算して0になるため”f_gate”命令は完了し、命令数を2減算すると0になるため、P520bも消滅する。
以上、説明してきたようにゲート命令”t_gate”と”f_gate”を使うことで、通過して処理を継続できるパケット群と消滅するパケット群を条件フラグでダイナミックに切り替えできるため、プログラムの条件分岐を実現することができる。また、より複雑なネスト化された複数の条件分岐を実現するために、図7の命令セットで示したように、”t_gate”と”f_gate”にはそれぞれ複数のコードを割り当てることで、2バイトのみのペア判定でもパケットのミスマッチが発生しないようにしている。
図21は待ち合わせ命令”wait”命令を使ったデータフロー図の1例である。”wait”命令はゲート命令と同様に2バイト命令で、ペア判定も2バイトで行われる。ゲート命令との違いは条件フラグ21を参照せず、全てのパケットが通過できる点で、同期をとるための待ち合わせとして使われる命令である。
図22を参照して、ループプログラムを実現する一例を説明する。
図22で示しているのはC言語で記述されたプログラムソースコードの一部分である次の3行だけをデータフロー図で示したものである。
while(val < 100){
val += val ;
”val”はプログラムの上位で値が設定されてからwhileに入ってくる変数で、ここでは値を数値化できないため図22の701で”val”という変数名のまま示す。破線で囲まれ”group1”と記述された702ないし707のパケットは図7の中間パケットリストの領域に連続に並んだ中間パケットから生成されるパケットであり、プログラム起動時には生成されず、750および751の”issue”命令でMCE300によって読み込まれ、通信パケットに変換されて、ルーター130aに転送される。そのため、700および707のデータ部には”*group1”が”group1”のアドレス、”6”がパケット数を表すデータが入っている。
パケット700はノード750で”issue”命令を実行し、パケット702ないし707が生成される。上位から来た”val”701はノード753の”app_0”命令でパケット702の処理命令を追加し、ノード752の”dup”命令で2つのパケットに”val”データを複製し、ループ条件判定用、ループ処理用、およびループプログラム終了後用の3つに分かれる。ループ条件判定754はプログラムソースコード中の”val < 100”を実行する部分で、”val”が100よりも小さければ条件フラグ21に1をセットし、そうでなければ0をセットする。ここで条件フラグが1の場合、次の”t_gate”命令では右から入ってくるパケットは全て通過し、処理を継続する。”val”データはループ処理を行い、ノード755の”wait”で待ち合わせを行った後、再びノード753の”app_0”で追加の命令を待つ。一方ノード755の待ち合わせを通過した707パケットはノード751の”issue”命令で再び”group1”のパケット生成を行うことでこれまでの一連の処理を再び繰り返すことができる。
ループ条件判定754で”val”の値が100以上になると条件フラグは0をセットされ、次の”t_gate”に右から来るパケットは全て消滅し、その次の”f_gate”に右から来るパケットは、ここで初めて通過することになる。これによりループプログラムは終了し、最終の”val”データが次の処理に進むことになる。
以上説明してきたように、本実施形態で開示した新規命令セットを使用することで、複雑な条件分岐やループプログラムでも実現可能になることがわかる。
次に、本発明の第2の実施形態を図23を参照して説明する。なお、前述した第1の実施形態と同一部分についての説明は省略する。
命令追加命令は、プログラムが長くなったり、複雑化するに伴って増大していき、命令追加命令ノードの右から来る、処理命令をデータ部に持ったパケットのデータフロー自体も長くなりすぎて、途中に命令追加命令を挿入することが発生する。これらはデータフロー図を見づらくするだけでなく、プログラムの実行時間も長くなるという課題がある。また、”dup”命令のノードに右から来るパケットも同様の課題を持っている。
この課題を解決したのが本実施形態であり、図23のデータフロー図を使って、第1の実施形態からの変更点を説明する。
ここでは新規に”barrier”命令を使用するもので、これは消去フラグが”1”のパケットは消去し、”0”のパケットを通過させる命令である。
図23は前述したプログラムソースコードと同じコードの第2の実施形態に従ったデータフロー図である。ノード851に右から来るパケット800とノード853の右から来るパケット801は”t_gate”を通らずに直接目的のノードに入ってきている。これによりパケット800とパケット801の途中に、さらに命令追加命令が挿入されるのを防いでいる。しかしこのままでは”dup”や”app_2”の左から来るはずのパケットが、”t_gate”命令の実行で消滅してしまう際に、パケット800とパケット801が未処理のままデータ処理装置内に溜まってしまうので、”t_gate”と”f_gate”ではパケットを消滅させる代わりに、そのパケットの消去フラグ22に1をセットすることとする。消去フラグが1のパケットは”barrier”命令に到達した時点で初めて消滅することにし、途中のノードでは”dup”命令と”app”命令のみが実行でき、その他の命令はスキップすることとする。
これらの変更により、ノード850の”t_gate”で消去フラグを1にセットされて通過したパケットがノード851の右に入ってきて、パケット800と”dup”を実行後、ノード852をスキップしてノード853の命令追加命令を実行し、次のノード854の”barrier”で消滅する。このときパケット800はノード851の”dup”を実行後、ノード852に右から入るため、第1の実施形態と同様にここで消滅する。また、パケット801はノード853の命令追加命令を実行後、同様に消滅する。なお、ノード855の”f_gate”に右から入るパケットは、左から入るパケットの条件フラグ21が1の間は消去フラグを1にセットされ、次のノード856の”barrier”で消滅するが、左から入るパケットの条件フラグが0になると、消去フラグが0のままなので、次のノード856で消滅せずに次の処理に進むことになる。また、パケット802がノード850の”t_gate”で消去フラグを1にセットされた後は、ノード867の”wait”もノード868の”issue”もスキップすると命令数が0になるため、この時点で自動的に消滅する。
このようにしてプログラムが複雑化しても命令追加命令の増大を抑制でき、処理速度の低下を抑制し、データフロー図の可読性を維持できる。
次に、本発明の第3の実施形態を図24を参照して説明する。
命令セット内で複数のコードが割り当てられ得ている”t_gate”、”f_gate”、”wait”や”app”命令は、プログラムが長くなると、割り当てられたコードでは足りなくなることがある。もし、プログラムの複数の箇所で同一コードの命令を使用してしまい、かつそれらに係わるパケットがデータ処理装置内に同時に存在すると、比較・選択部でパケットのペアリングミスが発生する。この問題を避けるため、プログラムコードを複数に分け、同一コードの命令を持つパケットが同時に存在しないようする方法を示したのが図24である。
図24の例ではプログラムを3つの処理に分け、”処理1”900、”処理2”901、および”処理3”902とする。”処理1”900の終了を意味するパケットが“wait”命令905に左から来ると、予め右から来て待っていた”処理2”のパケット群を読み込むためのパケット903とペアになって”wait”命令を実行し、パケット903のみが通過して”issue”命令906を実行する。その結果、”処理2”に必要なパケット群がデータ処理装置1内に読み込まれ、実行される。このとき、”処理1”と”処理2”の中に同一コード命令を持つパケットがあったとしても、すでに”処理1”のパケット群は消去されているため、ペアリングミスは発生しない。
同様に、”処理2”の終了を示すパケットと”処理3”のパケット群をデータ処理装置内に読み込むパケットを”wait”命令907で待ち合わせることで、”処理2”のパケットが消去された後で”処理3”のパケットを読み込み、実行させることができる。
また、本実施形態は逐次処理を実現するという効果も持っており、そのために使用することもできる。
なお、上記実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得るとともに、本発明にはその等価物も含まれる。
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 処理命令実行部
300 MCE
301 コマンド実行部
302 パケット命令実行部
303 バッファメモリ(MCE)
304 分配・比較・選択部
305 入出力部(MCE)
306 宛先情報算出部(MCE)
307 メモリアクセス命令実行部
400 プログラムヘッダー
401 関数ディスクリプタリスト
402 中間パケットリスト
403 文字列リスト
404 グローバルデータ

Claims (1)

  1. データごとに、当該データに対する1つ以上の処理命令を示す命令情報を含むパケットを処理する複数の処理部を備えるデータ処理装置において、
    前記パケットは条件フラグを含み、
    前記処理命令は2つのパケットを使って実行するゲート命令を含み、
    前記ゲート命令は前記2つのパケットのうち、第一のパケットの前記条件フラグに基づいて、第二のパケットを消滅状態にするか通過させるかのどちらかを実行することを特徴とするデータ処理装置。
JP2013214299A 2013-10-14 2013-10-14 データ処理装置 Active JP6298937B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013214299A JP6298937B2 (ja) 2013-10-14 2013-10-14 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013214299A JP6298937B2 (ja) 2013-10-14 2013-10-14 データ処理装置

Publications (2)

Publication Number Publication Date
JP2014017019A true JP2014017019A (ja) 2014-01-30
JP6298937B2 JP6298937B2 (ja) 2018-03-20

Family

ID=50111571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013214299A Active JP6298937B2 (ja) 2013-10-14 2013-10-14 データ処理装置

Country Status (1)

Country Link
JP (1) JP6298937B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111149333A (zh) * 2017-09-29 2020-05-12 华为技术有限公司 具有条件命令的自运行数据包

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61276033A (ja) * 1985-05-31 1986-12-06 Matsushita Electric Ind Co Ltd デ−タ処理装置
JPH01188951A (ja) * 1988-01-23 1989-07-28 Sharp Corp データフロープログラムの実行制御方式
JP2011138479A (ja) * 2009-12-02 2011-07-14 Mush-A Co Ltd データ処理装置、データ処理システム、パケット、記録媒体、記憶装置およびデータ処理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61276033A (ja) * 1985-05-31 1986-12-06 Matsushita Electric Ind Co Ltd デ−タ処理装置
JPH01188951A (ja) * 1988-01-23 1989-07-28 Sharp Corp データフロープログラムの実行制御方式
JP2011138479A (ja) * 2009-12-02 2011-07-14 Mush-A Co Ltd データ処理装置、データ処理システム、パケット、記録媒体、記憶装置およびデータ処理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111149333A (zh) * 2017-09-29 2020-05-12 华为技术有限公司 具有条件命令的自运行数据包
CN111149333B (zh) * 2017-09-29 2022-03-08 华为技术有限公司 具有条件命令的自运行数据包
US11722424B2 (en) 2017-09-29 2023-08-08 Futurewei Technologies, Inc. Execution of a command within a conditional command received in a data packet

Also Published As

Publication number Publication date
JP6298937B2 (ja) 2018-03-20

Similar Documents

Publication Publication Date Title
JP4971200B2 (ja) プログラム難読化装置
JP5057256B2 (ja) データ処理装置、データ処理システムおよびデータ処理方法
US9535671B2 (en) Parallel data processing apparatus and method
JP3901181B2 (ja) プログラム並列化装置及びその方法並びにプログラム
JP3901180B2 (ja) プログラム並列化装置及びその方法並びにプログラム
JP4979287B2 (ja) 画像処理装置及びプログラム
JP4911022B2 (ja) カウンタ制御回路、動的再構成回路およびループ処理制御方法
US9607160B2 (en) Method and apparatus for providing string encryption and decryption in program files
JP5843801B2 (ja) 情報処理装置およびデバッグ方法
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP2006018447A (ja) プログラム並列化装置及びその方法並びにプログラム
JP6298937B2 (ja) データ処理装置
JPH0522936B2 (ja)
JP2007164504A (ja) ストリームデータ処理方法およびストリームデータ処理装置
JP5125385B2 (ja) 検証シナリオ作成プログラム、該プログラムを記録した記録媒体、検証シナリオ作成装置、および検証シナリオ作成方法
JPWO2017204139A1 (ja) データ処理装置、データ処理方法、およびプログラム記録媒体
JP2014041640A (ja) データ処理装置
JP6111731B2 (ja) 並列デバッグシステム、並列デバッグ方法、及び、並列デバッグプログラム
JP5325744B2 (ja) 画像処理装置および画像処理プログラム
JP4293223B2 (ja) プログラム並列化装置及びその方法並びにプログラム
JP2001005678A (ja) ネットワーク型情報処理装置及び方法
JP2674301B2 (ja) ビット転記方式
JPH09305401A (ja) コンピュータ及びコンパイラ
KR102207775B1 (ko) 네트워크 스위치 병렬화를 위한 데이터 의존성 기반의 데이터 평면 정적 분석 방법 및 이를 이용한 병렬화 장치
JP2006099678A (ja) シミュレーションモデル作成装置及びシミュレーション装置とシステム並びに方法とプログラム

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170811

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

R150 Certificate of patent or registration of utility model

Ref document number: 6298937

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250