以下に、発明を実施するための実施形態について説明する。
(1)はじめに
データ転送制御装置は、複数のデータ入出力用のポートを有し、各ポートに入力されたデータを他のポートに出力するよう、内部でのデータの転送制御を実施する。図1は、データ転送制御装置の動作を概念的に示す図である。図1に示すデータ転送制御装置は、ポート#0から#nまでのn+1個のデータ入出力用のポートを有し、ポート間で入力されたデータの転送を行う。
このようなデータ転送制御装置における、データの転送時には、例えばある1つのポートより出力するためのデータが複数のポートより同時に入力される場合が考えられる。このような場合、データ転送制御装置は、同時に入力された複数のデータ内容に鑑み、例えば各データに設定される優先度等の転送制御に係る情報に基づいて、転送スケジュールを決定し、出力先のポートにデータの転送を行う。このような処理により、単一の出力ポートに対する同タイミングでの複数のデータの転送制御が可能となる。
図2は、このような複数のデータの転送スケジュールを示す図である。図2には、ポート#0、#1及び#2から入力されたデータA乃至Dをある出力先のポートに転送する際の転送スケジュールが示される。図2の例では、データ転送制御装置は、データA乃至Dについて、受信した後に、各データに設定される優先度(Priority)に応じたバッファメモリに順次格納を行う。また、転送制御においては、優先度が高いデータから順次、バッファメモリへの格納順に出力ポートへの転送を行う。即ち、図2の例では、データの格納順は、データD、データA、データB、データCの順となる。また、各データの優先度は、データAとデータBが「高」、データCが「中」、データDが「低」のように設定される。このため、データの転送スケジュールは、データD、データA、データB、データCの順となる。
ところで、データ転送制御装置が転送を行うデータについては、リアルタイム性の高いデータを含む場合がある。このようなデータについては、例えば所定のタイミングまでに転送が実施されることを求められる場合が考えられる。図2の例では、時間を所定の期間で0、1、2、3、・・・のように区分し、時間1のタイミングで入力されたデータCについて、時間2までに転送処理を完了しなければいけない場合が考えられる。しかしながら、上述の転送スケジュールの決定法則をそのまま用いた場合、このような転送締切時間について考慮していないため、転送条件を満たすことが出来ない。
図3には、図2に示すデータA乃至Dに対して、データ転送の締切時間(Deadline)を設定した場合の転送スケジュールが示される。図3の例では、データAの締切時間は時間3、データBの締切時間は時間2、データCの締切時間は時間2、データDの締切時間は時間3である。上述したデータの優先度に応じた転送スケジュールでは、例えば、締切時間が比較的遅く、且つ優先度が低いデータDがバッファメモリへの格納順が早いために先に転送され、より優先度が高く且つ締切時間がより早いデータCが締切時間を越えて転送される。
そこで、以下では、データの優先度と締切時間とに基づく転送制御を実施可能なデータ転送制御装置についてその構成と機能とについて説明する。
(2)概要
図4を参照して、開示のデータ転送制御装置の例である、データ転送制御装置1の構成について説明する。図4は、データ転送制御装置1の構成を示す概念図である。
データ転送制御装置1は、データ入力用のポートを複数備え、該ポートに入力されるデータを出力用のポートに対して転送する。データの転送制御処理は、データの入力(又は受信)時に行われる処理と、データの出力(又は、送信)時の処理とに大別される。データ転送制御装置1は、データの入力時には、データの優先度及び締切時間に応じてデータを振り分ける処理を行い、データ出力時には、優先度と現在の時間及び締切時間の関係とに基づいてデータの転送処理を行う。
データ転送制御装置1は、ポート20a、ポート20b、ポート20c、ポート30及びスイッチ機能部10を備える。以降、便宜上、ポート20a、ポート20b、ポート20cをデータ入力用のポート、ポート30を該データの出力用のポートとして設定し、ポート20a、ポート20b又はポート20cより入力されるデータをポート30に転送する場合について説明する。例えば、ポート20a、ポート20b、ポート20c及びポート30は、実際には夫々データの入力及び出力が可能なポートであってもよく、下記に説明する方法でデータの転送を行う構成であってもよいが、上述した設定での転送において不要な構成については説明を省略することがある。
ポート20a、ポート20b、ポート20cの夫々に入力されるデータは、スイッチ機能部10を経由し、ポート30へ出力される。
スイッチ機能部10は、振り分け部100、格納部200、送信部300を備える。
振り分け部100は、データに含まれる優先度を示す情報と締切時間を示す情報とに基づいて、データを振り分けるための複数のセレクタを有する回路である。振り分け部100は、振り分けた各データを格納部200に格納する。振り分け部100は、データ入力用のポートに個別に対応して、データの振り分けを行う部位を複数有している。図4の例では、振り分け部100は、ポート20aから入力されるデータの振り分けを行う振り分け部100a、ポート20bから入力されるデータの振り分けを行う振り分け部100b、ポート20cから入力されるデータの振り分けを行う振り分け部100cを備える。
格納部200は、振り分け部100によって振り分けられたデータを格納する、バッファメモリなどのデータ格納装置である。格納部200は、データ入力用のポート、及び該ポートより入力されるデータを振り分ける振り分け部100に個別に対応して、データの格納を行うバッファメモリを備える部位を複数有する。図4の例では、格納部200は、ポート20aから入力されるデータを格納する格納部200a、ポート20bから入力されるデータを格納する格納部200b、ポート20cから入力されるデータを格納する格納部200cを備える。また、各格納部200a乃至200cは、振り分け部100a乃至100cにおいてデータを振り分ける際の基準となる優先度及び締切時間に応じた複数のバッファメモリを有する。具体的には、格納部200aは、振り分け部100aにおいてデータの振り分けを行う際の基準となる優先度の分類と締切時間の分類との夫々の組み合わせに応じた個数のバッファメモリを少なくとも有する。
送信部300は、格納部200に格納されるデータを出力用のポート30に送信するセレクタを有する回路である。送信部300は、格納部200のバッファメモリ内に格納されるデータについて、各バッファメモリが対応するデータの優先度及び締切時間に応じて送信スケジュールを決定し、送信先のポート30へデータを送信する。
上述したデータ転送制御装置1による転送制御の対象となるデータの形式について図5を参照して説明する。図5に示されるように、データは、ヘッダ部とデータ部とを備えるパケット等である。ヘッダ部は、公知のTCP/IPヘッダ等であってよい。データ部は、データの優先度を規定する情報であるPriority1(以下、P1と記載)と、データの締切時間を規定するPriority2(以下、P2と記載)との2通りのデータフィールドを有する。
P1は、データの優先度に応じて、優先度が高い=0、優先度が並み=1、優先度が低い=2との値を格納する。P2は、データ転送の締切時間を示すために、例えばクロック信号等に基づいて所定の締切時間を示す値を格納する。例えば、締切時間は、クロック信号から所定の周期を決定し、該周期をN通りに分割した時間を基準として設定する。ある周期の時間をN通りに分割した後の時間をt=0、1、2、3、・・・N−1とし、該時間に応じて締切時間を設定する。データ転送制御装置1の送信部300は、クロック信号により示される現在の時間(つまり、t=0、1、2、3、・・・N−1)と、データ毎の締切時間との関係により、データの送信スケジュールを決定する際の優先度を決定する。
以降の説明では、N=4とする。この場合、P1が0、1、2の3通りの値(言い換えれば、分類)を有し、P2が0、1、2、3の4通りの値(言い換えれば、分類)を有するための、上述した格納部200は、夫々の入力ポートに応じて、3×4=12個のバッファメモリを有する。詳細な構成及びその機能については後述する。
尚、データが有するP1とP2とのデータフィールドは、上述した態様の他、ヘッダ部に設けられていてもよく、データ内の他の部位に新たに設けられていてもよい。例えばデータとしてIPパケットを考える場合、サービスタイプフィールド内の8ビットを、P1とP2として使用してもよい。また、データ転送制御装置1内のスイッチ機能部10内において、データの種別等に応じて優先度を新たに設定し、該優先度に基づいて転送制御を行ってもよい。
上述した各部について、以下に図を参照してより詳細な構成及び機能の例について説明する。
図6は、データ転送制御装置1のスイッチ機能部10における振り分け部100が有する振り分け部100aの回路構成を示す図である。尚、振り分け部100b及び振り分け部100cも、図6と同様の構成を備える。
振り分け部100aは、抽出部110、P1セレクタ120及びP2セレクタ130、140、150を有する。
ポート20aより振り分け部100aに入力されたデータは、抽出部110と、P1セレクタ120とに入力される。
抽出部110は、データから、P1及びP2の値を抽出し、抽出した値について、P1をP1セレクタ120に、P2をP2セレクタ130乃至150に入力する。
P1セレクタ120は、データの優先度を示すP1の値に基づいて、データの振り分けを行う第1段目のセレクタである。P1セレクタ120は、ポート20aから入力されるデータを入力するための入力ポートと、P2セレクタ130乃至150の夫々に接続されるデータ出力用の3つのポート(0、1、2)とを備える。
図7(a)は、P1セレクタ120の動作に係る真理値表である。P1セレクタ120は、抽出部110より入力されるP1の値に基づいて、データを振り分け、出力用のポート0、1、2のいずれか一つより出力することで、接続されるP2セレクタ130乃至150のいずれかへ入力する。図7(a)に示されるように、P1の値が0のデータは出力用のポート0から、P1の値が1のデータは出力用のポート1から、P1の値が2のデータは出力用のポート2から、夫々出力(DT:Data Transfer)される。
図6に戻り、説明を続ける。P2セレクタ130乃至150は、データの締切時刻を示すP2の値に基づいて、データの振り分けを行う第2段目のセレクタである。P2セレクタ130乃至150の夫々は、P1セレクタ120から入力されるデータを入力するための入力ポートと、格納部200a内の対応する個別のバッファメモリ部に夫々接続されるデータ出力用の4つのポート(0、1、2、3)とを備える。
P2セレクタ130乃至150は、P1セレクタ120によって振り分けられるデータの分類の数、つまりP1の取り得る値に夫々対応している。例えば、P2セレクタ130は、P1セレクタ120の出力用のポート0に接続され、P1の値が0のデータの入力を受けて、P2の値に応じて振り分けを行う。P2セレクタ140は、P1セレクタ120の出力用のポート1に接続され、P1の値が1のデータの入力を受けて、P2の値に応じて振り分けを行う。P2セレクタ150は、P1セレクタ120の出力用のポート2に接続され、P1の値が2のデータの入力を受けて、P2の値に応じて振り分けを行う。
図7(b)は、P2セレクタ130乃至150の動作に係る真理値表である。P2セレクタ130乃至150は、抽出部110より入力されるP2の値に基づいて、データを振り分け、出力用のポート0、1、2、3のいずれか一つより出力することで、接続される格納部200a内のバッファメモリ部のいずれかへ入力する。図7(b)に示されるように、P2の値が0のデータは出力用のポート0から、P2の値が1のデータは出力用のポート1から、P2の値が2のデータは出力用のポート2から、P2の値が3のデータは出力用のポート3から、夫々出力(DT:Data Transfer)される。
図8は、データ転送制御装置1のスイッチ機能部10における格納部200の構成を示す図である。格納部200aは、P1セレクタ120及びP2セレクタ130乃至150によって振り分けられるデータの分類に対応する複数のバッファメモリ部を備える。バッファメモリ部は、P2セレクタ130乃至150の夫々の出力用のポートに接続され、入力されたデータの格納を行う。
図8の例では、格納部200aは、12個のバッファメモリ部を有する。バッファメモリ部a00は、P2セレクタ130のポート0に接続され、P1の値が0、P2の値が0のデータの入力を受け、格納する。バッファメモリ部a01は、P2セレクタ130のポート1に接続され、P1の値が0、P2の値が1のデータの入力を受け、格納する。バッファメモリ部a02は、P2セレクタ130のポート2に接続され、P1の値が0、P2の値が2のデータの入力を受け、格納する。バッファメモリ部a03は、P2セレクタ130のポート3に接続され、P1の値が0、P2の値が3のデータの入力を受け、格納する。バッファメモリ部a10は、P2セレクタ140のポート0に接続され、P1の値が1、P2の値が0のデータの入力を受け、格納する。バッファメモリ部a11は、P2セレクタ140のポート1に接続され、P1の値が1、P2の値が1のデータの入力を受け、格納する。バッファメモリ部a12は、P2セレクタ140のポート2に接続され、P1の値が1、P2の値が2のデータの入力を受け、格納する。バッファメモリ部a13は、P2セレクタ140のポート3に接続され、P1の値が1、P2の値が3のデータの入力を受け、格納する。バッファメモリ部a20は、P2セレクタ150のポート0に接続され、P1の値が2、P2の値が0のデータの入力を受け、格納する。バッファメモリ部a21は、P2セレクタ150のポート1に接続され、P1の値が2、P2の値が1のデータの入力を受け、格納する。バッファメモリ部a22は、P2セレクタ150のポート2に接続され、P1の値が2、P2の値が2のデータの入力を受け、格納する。バッファメモリ部a23は、P2セレクタ150のポート3に接続され、P1の値が2、P2の値が3のデータの入力を受け、格納する。
尚、各バッファメモリ部は、共通する構成と機能とを有する。例として、バッファメモリ部a00の構成と機能とについて、図を参照して説明する。
図9は、バッファメモリ部a00のハードウェア構成を示す図である。図9に示されるように、バッファメモリ部a00は、WADD生成部210、受信カウンタ220、メモリ部230、管理メモリ部240、RADD生成部250、送信カウンタ260、比較部270とを備える。
バッファメモリ部a00に入力されたデータは、WADD生成部210、受信カウンタ220及びメモリ部230に入力される。
WADD生成部210は、データについて、メモリ部230への書き込み時の先頭アドレスであるWriteアドレス(Write Address:WADD)とヘッダ部のlengthとを生成する。WADD生成部210は、データの入力時には、該データのWriteアドレスをメモリ部230及び管理メモリ部240に通知する。また、併せてデータより生成したlengthを書き込みデータとして管理メモリ部240に通知する。
受信カウンタ220は、有効データの入力を検出してカウントアップするカウンタである。受信カウンタ220は、データの入力時に、カウンタ値を管理メモリ部240及び比較部270に通知する。
メモリ部230は、データを格納するメモリである。メモリ部230は、データの入力時に、WADD生成部210から通知されるWriteアドレスを用いて、データを格納する。他方で、メモリ部230は、データの出力時には、後述するRADD生成部250より通知されるReadアドレスを用いてデータを読み取り、送信部300内の送信セレクタ(後述)に出力する。
管理メモリ部240は、バッファメモリ部00aにおけるメモリ部230へのデータ書き込み時のWriteアドレス及びlengthを管理するメモリである。管理メモリ部240は、データの入力時には、通知される受信カウンタ220aのカウンタ値をWriteアドレスとして、WADD生成部210より通知されるデータ書き込み時のWriteアドレス及びlengthを格納する。他方で、データの出力時には、送信カウンタ260より通知されるカウンタ値をReadアドレスとして、データ書き込み時のWriteアドレス及びlengthを読み取り、RADD生成部250に出力する。
RADD生成部250は、データ出力の際のメモリ部230のReadアドレス(Read Address:RADD)を生成する。RADD生成部250は、データの出力時に、管理メモリ部240より、データ書き込み時のWriteアドレス及びlengthの入力を受け、「書き込み時のWriteアドレスから(書き込み時のWriteアドレス+length−1)までカウンタを動作させ、該カウンタ値をメモリ部230へ通知する。また、送信部300の送信セレクタ(後述)へ出力用のデータの有効範囲を示すData Enable信号を送信する。
送信カウンタ260は、送信部300の判定収集部(後述)からのデータのリード要求に応じてカウントアップするカウンタであり、データの出力時に、カウンタ値を管理メモリ部240及び比較部270に通知する。
比較部270は、メモリ部230に格納されるデータの有無を判定する。比較部270は、データの出力時に、受信カウンタ値と送信カウンタ値とを比較することで、メモリ部230内のデータの有無を判定し、判定結果を送信部300の判定収集部(後述)に送信する。
尚、格納部200b及び格納部200cも、図8と同様の構成を備える。つまり、格納部200bは、振り分け部100bによって振り分けられるデータのP1及びP2の値に対応して、バッファメモリ部b00、b01、b02、b03、b10、b11、b12、b13、b20、b21、b22、b23を備える。同様に、格納部200cは、振り分け部100cによって振り分けられるデータのP1及びP2の値に対応して、バッファメモリ部c00、c01、c02、c03、c10、c11、c12、c13、c20、c21、c22、c23を備える。ここに、バッファメモリ部に付す番号は、左から、ポート20a乃至20cに対応するアルファベット、P1の値、P2の値を示すものである。以降はこの表記に従って、ポート、P1の値及びP2の値に対応したバッファメモリ部を記載することがある。尚、これらのバッファメモリ部について、区別せずに説明する場合には、単にバッファメモリ部と記載する。
図10は、データ転送制御装置1のスイッチ機能部10における送信部300の構成、及び格納部200と送信部300との接続の態様を示す図である。送信部300は、判定収集部310と、送信セレクタ320とを備える。
格納部200a乃至200c内のバッファメモリ部の夫々(a00乃至a23、b00乃至b23及びc00乃至c23)は、接続用のバス400、410、420及び430を介して判定収集部310及び送信セレクタ320に接続される。各バッファメモリ部は、夫々対応するP2の値に応じて、対応するバスに接続される。具体的には、格納部200aのP2の値が0のデータを格納するバッファメモリ部a00、a10、a20、a30の夫々は、バス400に接続される。格納部200aのP2の値が1のデータを格納するバッファメモリ部a01、a11、a21、a31の夫々は、バス410に接続される。格納部200aのP2の値が2のデータを格納するバッファメモリ部a02、a12、a22、a32の夫々は、バス420に接続される。格納部200aのP2の値が3のデータを格納するバッファメモリ部a03、a13、a23、a33の夫々は、バス430に接続される。格納部200b及び200cのバッファメモリ部についても同様である。
判定収集部310は、現在の時間と格納部200内の各バッファメモリ部に格納されるデータの有無とに応じて、個々のバッファメモリ部に対してデータのリード要求を行うことで、データの出力を制御する。具体的には、判定収集部310は、バス400乃至430を介して接続される36個のバッファメモリ部から現在の時間を用いて1つ送信する格納部200を選択する機能部である。
図11は、判定収集部310と、バッファメモリ部との接続及び信号の送受信の態様を示す図である。判定収集部310は、36個のバッファメモリ部(a00乃至a23、b00乃至b23及びc00乃至c23)の夫々の比較部270から、メモリ部230内部にデータが格納されているか否かの判定結果の入力を受ける。また、判定収集部310は、クロック信号生成部等より現在の時間の入力を受け、該現在の時間と、バッファメモリ部毎に設定される締切時間とに基づいて、データの出力順を決定する。そして、決定したデータの出力順に応じて、36個のバッファメモリ部の夫々の管理メモリ部240に対して、データの出力を指示するRead Data Enable信号を送信する。
判定収集部310は、例えば、現在の時間と、バッファメモリ部毎に設定される締め切り時間とを比較して、締切時間に余裕のないデータから出力されるよう指示する。出力順の決定方法の例として、各バッファメモリ部に設定される締切時間について、[(t−now+N)mod N]の値が小さい順に選択する。ここに、Nは、時間の分割数、言い換えればP2の取り得る値の数であり、tは、締め切り時間であり、nowは、現在の時間である。このため、現在の時間によりデータを送信する際のP2に応じた優先度が変更される。t=0、1、2、3の各場合における判定収集部310の動作に係る真理値表を図12から図15に示す。
図12乃至図15において、一番左の列は、各バッファメモリ部からの判定結果の参照順序を示す。中央には、各バッファメモリからの判定結果を示す。尚、該判定結果を示す欄においては、該当するバッファメモリ部にデータが格納されている場合を「1」、データが格納されていない場合を「0」としている。また、バッファメモリ部にデータが格納されているか否かの判定結果が判定収集部310の動作に関わりない部分、言い換えれば0でも1でもよい部分は「−」としている。一番右の列は、判定収集部310がデータの出力指示を行うバッファメモリ部を示す。
図12は、t=0の状態における判定収集部310の動作に係る真理値である。t=0の場合、先ず、判定収集部310は、締切時間を示すP2の値が0に設定されるバッファメモリ部(a00、b00、c00、a10、b10、c10、a20、b20、c20)について、設定されるデータの優先度を示すP1の値が低い順(つまり、0から2)に送信される判定結果を参照する。先ず、バッファメモリ部a00にデータが格納されているか否かの判定結果を参照する。バッファメモリ部a00にデータが格納されている場合(判定結果欄が「1」の場合)、バッファメモリ部a00に対してRead Data Enable信号を送信して、出力指示を行う(図12、参照順序=1の行参照)。バッファメモリ部a00にデータが格納されていない場合(判定結果欄が「0」の場合)、続いて判定収集部310は、バッファメモリ部b00にデータが格納されているか否かの判定結果を参照する。バッファメモリ部b00にデータが格納されている場合(判定結果欄が「1」の場合)、バッファメモリ部b00に対してRead Data Enable信号を送信して、出力指示を行う(図12、参照順序=2の行参照)。このように、判定収集部310は、P2の値が0であるバッファメモリ部について、P1の値が示す優先度が高い順にデータが格納されているか否かを確認し、データが格納される場合には出力指示を行う。判定収集部310は、P2の値が0である全てのバッファメモリ部にデータが格納されていないことを確認した場合、P2の値が次の締切時間を示す1であるバッファメモリ部について、P1の値が示す優先度が高い順にデータが格納されているか否かを確認し、データが格納される場合には出力指示を行う。その後、順次P2の値が2、3であるバッファメモリ部に対しても同様の処理を行うことで、各バッファメモリ部に対して、データの格納の有無の確認と、出力指示とを行う。尚、図12の例では、ポート20aに接続されるバッファメモリ部に対して優先的に処理を行っているが、ポート20b又はポート20cに接続されるバッファメモリ部を優先的に処理を行う態様であってもよく、図12は便宜上の一例であるに過ぎない。
図13は、t=1の状態における判定収集部310の動作に係る真理値である。t=1の場合、判定収集部310は、先ず、P2の値が1であるバッファメモリ部に対して、P1の値が示す優先度が高い順にデータの格納の有無の確認と、出力指示との処理を行う。続いて、P2が2、3、0である順に上述の処理を行う。P2の値が0であるバッファメモリ部の参照順序を一番最後としたのは、t=1の時点でバッファメモリ部に格納されるデータの締切時間は、所定の周期を4分割して示した締切時間の内、次の周期における時間0であると判断可能であるためである。
図14は、t=2の状態における判定収集部310の動作に係る真理値である。t=2の場合、判定収集部310は、先ず、P2の値が2であるバッファメモリ部に対して、P1の値が示す優先度が高い順にデータの格納の有無の確認と、出力指示との処理を行う。続いて、P2が3、0、1である順に上述の処理を行う。
図15は、t=3の状態における判定収集部310の動作に係る真理値である。t=3の場合、判定収集部310は、先ず、P2の値が3であるバッファメモリ部に対して、P1の値が示す優先度が高い順にデータの格納の有無の確認と、出力指示との処理を行う。続いて、P2が0、1、2である順に上述の処理を行う。
判定収集部310からのRead Data Enable信号を受信したバッファメモリ部の管理メモリ部240は、メモリ部230に対してデータの出力を指示する。出力されたデータは、バス400乃至430を介して送信セレクタ320に入力される。また、送信セレクタ320は、各バッファメモリ部から、データの有効範囲を示すData Enable信号の入力を受ける。
Data Enable信号の入力を受けた送信セレクタ320は、該Data Enable信号により指定されるバッファメモリ部のメモリ部230から入力されるデータをポート30へ出力する。図16に、送信セレクタ320とバッファメモリ部との接続の態様を示す。送信セレクタ320は、各バッファメモリ部と、バス400乃至430を介して接続し、Data Enable信号と、データとの入力を受け、選択したデータをポート30に出力する。
送信セレクタ320の動作に係る真理値表を図17に示す。図17に示されるように、Data Enable信号の入力元のバッファメモリ部からの入力データをポート30に出力する。
(3)動作例
以下、データ転送制御装置1を用いたデータ転送制御処理の流れについて、各部の詳細な動作と共に説明する。
図18に、データ転送制御処理の対象となるデータのパケットフォーマットの一例を示す。データのパケットフォーマットは、Data Frame Pulse、Data Valid Enable及びDataを含むよう規定される。Frame Pulseは、データの先頭を示すパルスである。Data Valid Enableは、データの有効無効を示すパルスである。Dataは、データそのものを示す、D0からDmまでのデータであって、D0部にP1及びP2の情報を含む。
図19は、このようなデータの入力を受ける振り分け部100aにおける信号の入出力の態様を示す機能ブロック図である。
振り分け部20aは、データの入力を受けると、該データより、データの優先度を示すP1の値と、締切時間を示すP2の値とを抽出部110において抽出する。そして、P1セレクタ120及びP2セレクタ130乃至150により、データを振り分け、格納部200a内の対応するバッファメモリ部a00乃至a23へDATA VALID ENABLE及びDATA FRAME PULSEを送信する。
図20は、上述した振り分け部100aの振り分け動作に係る真理値表である。P1をX、P2をYとおく場合、P1及びP2に応じたバッファメモリ部aXYに対して、DATA FRAME PULSE及びDATA VALID ENABLEを送信する。例えば、P1=2、P2=3の場合、バッファメモリ部a23に対してDATA FRAME PULSE及びDATA VALID ENABLEを送信する。
尚、図19では、振り分け部20aを例として示しているが、他の振り分け部についても、同様の入出力を行う。
格納部200a内のバッファメモリ部a00を例に挙げて、振り分け部20aよりデータの入力を受けた際の各部の処理について説明する。バッファメモリ部a00は、上述したように受信したデータをWADD生成部210、受信カウンタ220及びメモリ230に夫々入力する。
WADD生成部210は、入力したDataを格納するためのメモリ部230のアドレスを生成するカウンタを有する。WADD生成部210の機能ブロックを図21(a)に示す。
WADD生成部210は、データのうち、有効データの受信を示すDATA VALID ENABLEを入力して、メモリ部230のアドレスであるWrite Data Address(以降、WDAと記載)を生成する。図21(b)に、WADD生成部210における、DATA VALID ENABLEの入力と、生成されるWDAとのタイミングチャートを示す。WADD生成部210は、生成したWDAをメモリ部230、管理メモリ部240へ出力する。
受信カウンタ220は、データのうち、データの先頭を示すDATA FRAME PULSEを入力して、受信パケット数を示すカウンタ値(Receive Data Counter)をカウントアップするカウンタである。受信カウンタ220の機能ブロックを図22(a)に示す。また、図22(b)に、受信カウンタ220における、DATA FRAME PULSEの入力と、カウントされるReceive Data Counterとのタイミングチャートを示す。図22(b)に示されるように、受信カウンタ220は、DATA FRAME PULSEを受信したタイミングで、Receive Data Counterの値をカウントアップしている。受信カウンタ220は、カウントしたReceive Data Counterを適宜メモリ部230、管理メモリ部240及び比較部270へ出力する
メモリ部230は、データ内のDataを格納するメモリである。メモリ部230の機能ブロックを図23(a)に示す。
メモリ部230は、データの受信時には、データのうち、Data及び該DataのWrite Enable信号の一例であるDATA VALID ENABLE、並びにWADD生成部210より入力されるData書き込み時のWriteアドレスであるWrite Data Addressの入力を受ける。メモリ部230は、Write Data Addressにより指定されるアドレスに、DATA VALID ENABLEに応じてDataを格納する。図23(b)に、メモリ部230における、データ受信時のDATA VALID ENABLE、Data及びWrite Data Addressのタイミングチャートを示す。
メモリ部230は、データの送信時には、後述するようにRADD生成部250より入力されるRead Enable信号の一例であるRead DATA VALID ENABLE、同じく後述するように送信カウンタ260より入力されるReadアドレスの一例であるRead Address Counterの入力を受ける。メモリ部230は、Read DATA VALID ENABLE及びRead Address Counterに応じてDataを読み出し、送信部300へ出力する。図23(c)に、メモリ部230における、データ送信時のRead DATA VALID ENABLE、Data及びRead Address Counterのタイミングチャートを示す。
管理メモリ部240は、Dataが格納されるメモリ部230の先頭アドレスと、格納されるDataのデータ長を格納するメモリである。管理メモリ部240の機能ブロックを図24(a)に示す。
管理メモリ部240は、データの受信時には、データの先頭を示すDATA FRAME PULSE、WADD生成部210において生成されるWrite Data Address及びDataのlengthであるWrite Data Length、受信カウンタ220からのReceive Data Counter、の入力を受ける。図24(b)に、管理メモリ部240における、データ受信時の各信号のタイミングチャートを示す。例えば、管理メモリ部240は、データの先頭を示すDATA FRAME PULSEに基づいて、Dataのデータ長を示すパルス信号であるWrite Data Lengthを生成してもよい。例えば、1つのDataのデータ長は、該Dataの先頭を示すDATA FRAME PULSEのパルスから、次のDATA FRAME PULSEのパルスまでとなる。管理メモリ部240は、DATA FRAME PULSEをWrite Enable信号とし、Receive Data Counterを書き込みアドレスとして、メモリ部230におけるDataの書き込み時のWriteアドレスであるWrite Data Addressとデータ長であるWrite Data Lengthを格納する。
他方、管理メモリ部240は、送信部300からのデータの送信指示であるRead Enableと、送信カウンタ260からのSend Data Counterとの入力を受ける。管理メモリ部240は、送信部300からのRead EnableをReadアドレスとして、格納するDataの先頭アドレスを示すRead Data Pointerと該Dataのデータ長であるRead Data Lengthを読み出す。図24(c)に、管理メモリ部240における、データ送信時の各信号のタイミングチャートを示す。管理メモリ部240は、Read Enableが有効になった時に、あるデータXについてのRead Data Pointerを出力する。また、次にRead Enableが有効になった時に、別のデータYについてのRead Data Pointerを出力する。このときのRead Data Pointerの出力に応じて、データX及びデータYについてのRead Data Lengthを出力する。
RADD生成部250は、データの送信時に、メモリ部230に格納されるDataのReadアドレスを生成する。RADD生成部250の機能ブロックを図25(a)に示す。RADD生成部250は、カウンタ251と、Enable生成部252とを備える。
カウンタ251はLoad Enableの一例である、送信部300より入力されるRead Enableと、Load値の一例である、管理メモリ部240より入力されるRead Data Pointerとを受信する。カウンタ251は、Read Enable及びRead Data Pointerの入力に応じて、カウンタ値であるRead Address Counterを初期化し、カウントアップする。カウントされたRead Address Counterは、メモリ部230のデータを読み出す際のReadアドレスとして用いられる。また、カウンタ251は、Read Address CounterをEnable生成部252に入力する。
Enbale生成部252は、カウンタ251より入力されるRead Address Counter並びに管理メモリ部240より入力されるRead Data Pointer及びRead Data Lengthに基づいてRead DATA VALID ENABLEを生成する。Read DATA VALID ENABLEは、メモリ部230に格納されるDataを読み出すためのRead Enable信号、及び送信部300の送信セレクタ320におけるセレクト信号として用いられる。
Enable生成部252は、一例として、Read Data Pointer+Read Data LengthとRead Address Counterとの値を比較することで、Read DATA VALID ENABLEの値を決定する。例えば、Read Data Pointer+Read Data Lengthの値がRead Address Counter以下の時、メモリ部230へのRead DATA VALID ENABLEを0にする。他方、Read Data Pointer+Read Data LengthがRead Address Counterより大きい時、メモリ部230へのRead DATA VALID ENABLEを1にする。
図25(b)に、RADD生成部250における、データ送信時の各信号のタイミングチャートを示す。
送信カウンタ260は、送信部300からのデータの送信要求であるRead Enableを入力して、送信パケット数を示すカウンタ値(Send Data Counter)をカウントアップするカウンタである。送信カウンタ260の機能ブロックを図26(a)に示す。また、図26(b)に、送信カウンタ260の動作に係るタイミングチャートを示す。図26(b)に示されるように、送信カウンタ260は、Read Enableが有効となったタイミングで、Send Data Counterの値をカウントアップする。送信カウンタ260は、カウントしたSend Data Counterを適宜管理メモリ部240及び比較部270へ出力する。
比較部270は、受信カウンタ220においてカウントしたReceive Data Counterと送信カウンタ260においてカウントしたSend Data Counterとの値を比較することで、メモリ部230にデータが格納されているか否かの判定を行う。比較部270は、一例として、Receive Data CounterとSend Data Counterを比較する比較器であって、比較結果に応じて、異なる出力を行う。例えば、Receive Data Counter値とSend Data Counter値とが等しいとき、メモリ部230に格納されるDataは全て送信されていると判断し、Data無しであることを示すData Empty Flag=0を出力する。他方で、Receive Data Counter値とSend Data Counter値とが異なるとき、メモリ部230に格納された後、送信されていないDataが存在すると判断し、Data有りであることを示すData Empty Flag=1を出力する。図27(b)に、Receive Data Counter値とSend Data Counter値とに基づくData Empty Flagの出力の態様を示すタイミングチャートを示す。
送信部300は、現在の時間tの入力を受けて、バッファメモリ部へデータの読み出し要求を行う判定収集部310と、バッファメモリ部から入力されるデータを出力用のポート30に出力する送信セレクタ320を備える。
判定収集部310の機能ブロックを図28に示す。図28に示すように、判定収集部310は、各バッファメモリ部からのデータの格納の有無を示すData Empty Flagを受信して、現在の時間tに応じたバッファメモリ部に対してデータの読み出しを要求するRead Enableを送信する。判定収集部310は、上述した真理値表に基づいて、現在の時間tに応じてRead Enableを送信するバッファメモリ部を決定する。
送信セレクタ320は、各バッファメモリ部より入力される、ポート30に出力するデータの有効範囲を示すRead DATA VALID ENABLEに基づいて、対応するバッファメモリ部からのデータを選択し、ポート30へ出力する。送信セレクタ320の機能ブロックを図29に示す。
以上、説明したデータ転送制御装置1の動作について、データの入出力時の処理の流れの例を説明する。図30は、データ転送制御装置1にデータの入力があった時の、該データの転送制御に係るタイムチャートである。
図30に示す例では、以下に示すように、データA乃至Dがデータ転送制御装置1内の振り分け部100a乃至cにおいて振り分けられ、格納部200内の対応するバッファメモリ部に入力される。
時刻t1に、ポート20cを介して入力された、P1=2且つP2=3のデータDがバッファメモリ部c23に振り分けられて入力される。時刻t2に、ポート20aを介して入力された、P1=0且つP2=3のデータAがバッファメモリ部a03に振り分けられて入力される。時刻t3に、ポート20aを介して入力された、P1=0且つP2=2のデータBがバッファメモリ部a02に振り分けられて入力される。時刻t3に、ポート20bを介して入力された、P1=1且つP2=2のデータCがバッファメモリ部b12に振り分けられて入力される。
データ転送制御装置1は、所定の周期をt=0乃至3に分割して、現在の時刻及び締切時刻であるP2の値を管理している。図30の例では、t1及びt2(t2>t1)がt=0に属し、t3(t3>t2)及びt4(t4>t3)がt=1に属している。
これらのデータの入力を受けて、バッファメモリ部c23の受信カウンタ220は、時刻t1においてカウンタ値を0から1にカウントアップする。バッファメモリ部a03の受信カウンタ220は、時刻t2においてカウンタ値を0から1にカウントアップする。バッファメモリ部a02の受信カウンタ220は、時刻t3においてカウンタ値を0から1にカウントアップする。バッファメモリ部b12の受信カウンタ220は、時刻t4においてカウンタ値を0から1にカウントアップする。
また、バッファメモリ部c23のメモリ部230には、時刻t1においてデータDが格納される。バッファメモリ部a03のメモリ部230には、時刻t2においてデータAが格納される。バッファメモリ部a02のメモリ部230には、時刻t3においてデータBが格納される。バッファメモリ部b12のメモリ部230には、時刻t4においてデータCが格納される。格納されたデータは、後述するようにデータの送信されるまで、各メモリ部230に格納される。
また、バッファメモリ部c23の管理メモリ部240には、時刻t1においてデータDのメモリ部230への格納時のWrite Data Address及びデータ長であるWrite Data Lengthが格納される。バッファメモリ部a03の管理メモリ部240には、時刻t2においてデータAのメモリ部230への格納時のWrite Data Address及びデータ長であるWrite Data Lengthが格納される。バッファメモリ部a02の管理メモリ部240には、時刻t3においてデータBのメモリ部230への格納時のWrite Data Address及びデータ長であるWrite Data Lengthが格納される。バッファメモリ部b12の管理メモリ部240には、時刻t4においてデータCのメモリ部230への格納時のWrite Data Address及びデータ長であるWrite Data Lengthが格納される。
このとき、各バッファメモリ部において、メモリ部230にデータが格納された際の受信カウンタ220のカウンタ値が、該データの出力前では、送信カウンタ260のカウンタ値とは異なるものである。このため、かかる期間、比較部270は、データがメモリ部230に格納されていることを示すData Empty Flag=1を送信部300内の判定収集部310に出力する。尚、それ以外の期間には、比較部270は、Data Empty Flag=0を出力する。具体的には、バッファメモリ部c23の比較部270は、時刻t1からデータDが出力されるまでの期間、Data Empty Flag=1を出力する。バッファメモリ部a03の比較部270は、時刻t2からデータAが出力されるまでの期間、Data Empty Flag=1を出力する。バッファメモリ部a02の比較部270は、時刻t3からデータBが出力されるまでの期間、Data Empty Flag=1を出力する。バッファメモリ部b12の比較部270は、時刻t4からデータCが出力されるまでの期間、Data Empty Flag=1を出力する。
判定収集部310は、上述のように各バッファメモリ部の比較部270から出力される判定結果、並びにバッファメモリ部に設定されるP1及びP2の値に応じて、バッファメモリ部に対してRead Enableを送信することで、格納されるデータの出力指示を行う。判定収集部310は、上述したように、現在の時間t及び設定されるP2の値との関係、並びにP1の値から、優先的に判定結果を参照するバッファメモリ部を決定する。図30の例では、具体的には、時刻t1において、バッファメモリ部c23に対して、データDの出力指示を行う。データDの出力後、つまり時刻t1からデータDのデータ長に応じた送信時間の経過後である時刻t4において、バッファメモリ部a02に対して、データBの出力指示を行う。データBの出力後、つまり時刻t4からデータBのデータ長に応じた送信時間の経過後である時刻t5において、バッファメモリ部b12に対して、データCの出力指示を行う。データCの出力後、つまり時刻t5からデータCのデータ長に応じた送信時間の経過後である時刻t6において、バッファメモリ部a03に対して、データAの出力指示を行う。
判定収集部310からのRead Enableを受信することで、バッファメモリ部のメモリ部230は、格納するデータを送信部300の送信セレクタ320に出力する。このとき、送信カウンタ260は、Read Enableの受信を検出することでカウントアップを行う。具体的には、バッファメモリ部c23の送信カウンタ260は、時刻t1においてカウンタ値を0から1にカウントアップする。バッファメモリ部a02の送信カウンタ260は、時刻t4においてカウンタ値を0から1にカウントアップする。バッファメモリ部b12の送信カウンタ260は、時刻t5においてカウンタ値を0から1にカウントアップする。バッファメモリ部a03の送信カウンタ260は、時刻t6においてカウンタ値を0から1にカウントアップする。
また、Read Enableを受信した各バッファメモリ部のRADD生成部250は、メモリ部230に格納されるデータの出力を指示するRead Data Valid Enableと、出力時のReadアドレスであるRead Address Counterとを出力する。具体的には、時刻t1からt4までの間、バッファメモリ部c23のRADD生成部250は、Read Data Valid EnableとRead Address Counterとを出力する。時刻t4からt5までの間、バッファメモリ部a02のRADD生成部250は、Read Data Valid EnableとRead Address Counterとを出力する。時刻t5からt6までの間、バッファメモリ部b12のRADD生成部250は、Read Data Valid EnableとRead Address Counterとを出力する。時刻t6からデータAのデータ長に応じた送信時間が経過するまでの間、バッファメモリ部a03のRADD生成部250は、Read Data Valid EnableとRead Address Counterとを出力する。
以上の各部の処理によって、送信セレクタ320を介して出力用のポート30には、データD、データB、データC、データAの順でデータが出力される。上述したようにデータの出力スケジュールは、現在の時間tとP2との関係、及びP1に基づいて決定されるため、各データが締切時間を超過してポート30に出力されることはない。
上記の送信部300の判定収集部310及び送信セレクタ320について、図31に処理の流れを示すフローチャートを示す。
判定収集部310は、現在の時間tを確認することにより、各バッファメモリ部に格納されるデータの締切時間を示すP2の値に基づくデータ出力の優先度を決定する。
判定収集部310は、現在の時間t=0のとき(ステップS101:Yes)、図12の真理値表に基づいて、Data Empty Flagを確認するバッファメモリ部を選択する(ステップS102)。
次に、選択したバッファメモリ部から送信されるData Empty Flagの値を確認することで、該バッファメモリ部のメモリ部230内にデータが格納されているか否かを確認する(ステップS103)。Data Empty Flag=1である場合(ステップS103:Yes)、該バッファメモリ部に対してData Enableを送信し、データの出力を行わせる(ステップS104)。送信セレクタ320は、選択されたバッファメモリ部のRADD生成部250より送信されるRead Data Valid Enableに応じて、データの出力を行い、データ送信の終了を示すRead Data Valid Enable=0が送信された時点で、データの出力を終了する(ステップS105)。
続いて、判定収集部310は再度現在の時間tに応じて決定される優先度に基づいて、各バッファメモリ部からのData Empty Flagの確認を行う。
t=1のとき(ステップS201:Yes)、判定収集部310は、図13の真理値表に基づいて、Data Empty Flagを確認するバッファメモリ部を選択する(ステップS202)。その後、選択されたバッファメモリ部に対して、ステップS103乃至S104と同様の手順であるステップS203乃至ステップS204を実施することで、Read Enableを送信する。Read Enableを受信したバッファメモリ部からのデータとRead Data Valid Enableとに基づいて、送信セレクタ320は、データの出力を行う。
以降、送信部300の判定収集部310及び送信セレクタ320は、t=2の場合は、図14の真理値表に基づいて、t=3の場合は、図15の真理値表に基づいて、上述の手順を繰り返す。t=3の次は、t=0となるため、その場合、ステップS101がYesである場合の手順を行う。
(4)データ処理装置の実施例
本実施形態において、締切時間は、例えば、出力先のポート30に対して転送処理を完了することが好ましい時間(或いは、転送処理を完了しなければいけない時間)としている。
締切時間の一例として、出力先のポート30に接続されるデータ処理用の装置であって、データ転送制御装置1によって転送されるデータを用いて処理を行う装置において、該処理が開始する時間を設定してもよい。
図32に、このような装置とデータ転送制御装置1とを含むデータ処理装置1’の構成を表す図を示す。データ処理装置1’は、データ転送制御装置1と、データ転送制御装置1に対してデータの入力を行う前段処理装置2a、2b、2cと、データ転送制御装置1を介して転送されたデータを受信して処理する後段処理装置3とを含む。データ転送制御装置1が備えるデータ入力用のポート20aには、該ポート20aに対してデータを入力する前段処理装置2aが接続される。ポート20bには、該ポート20bに対してデータを入力する前段処理装置2bが接続される。ポート20cには、該ポート20cに対してデータを入力する前段処理装置2cが接続される。これらの前段処理装置2a乃至2cは、ポート20a乃至20cに対してデータの入力を行うだけでなく、データのヘッダの参照や、何らかのデータ等のパケット内へのマッピング等の処理を可能とする。また、データ転送制御装置1が備えるデータ出力用のポート30には、該ポート30から出力されるデータを受信する後段処理装置3が接続される。後段処理装置3は、受信したデータを用いて何らかの処理を可能とする。
図33に、このような後段処理装置3における処理期間と締切時間との関係を示すタイムチャートを示す。図33は、基準信号T=4msとして、ポート30に接続される後段処理装置3における処理周期が4ms、2ms、1msである場合について示している。
4ms周期毎にデータの処理をする場合のデータの締切時間は、基準信号Tに対して、0msとなる。2ms周期毎にデータの処理をする場合のデータの締切時間は、基準信号Tに対して、0ms、2msとなる。1ms周期毎にデータの処理をする場合のデータの締切時間は、基準信号Tに対して、0ms、1ms、2ms、3msとなる。
このようなデータの処理周期に基づいて、例えば、データの入力元となるポート20a乃至20cにおいて、各データにP2の値を設定してもよい。また、例えば、ポート20A乃至20Cに接続される前段処理装置2a乃至2cを用いて、出力用のポート30に接続される後段処理装置3における処理期間を考慮した締切時間を決定し、データ内部にマッピングしてもよい。以下に、IP(Internet protocol)パケットを転送制御の対象となるデータとして用いた場合に、IPパケットヘッダに対して、締切時間を示すP2の値をマッピングする例について説明する。
図34に、IPパケットヘッダのフォーマットを示す。図34に示されるように、IPパケットヘッダは、以下のデータフィールドを有するようフォーマットにより定められる。
Versionフィールドは、IPヘッダの最初の4ビットであり、IPパケットを構成するIPプロトコルのバージョンを表す値を格納する。
Header Lengthフィールドは、4ビットのフィールドであって、IPヘッダ自身の長さを表す値を格納する。
Service Typeフィールドは、8ビットのフィールドであって、IPパケットの要求するサービスの特徴を表す。例えば、このService Typeフィールドの中に、IPパケットの重要度を表すP1等の値を格納してもよい。
Identificationフィールドは、16ビットのフィールドであって、IPパケットを識別するために該IPパケットの送信側が割り当てたID番号等を格納する。
Flagフィールドは、3ビットのフィールドであって、IPパケットについてのフラグメント化に係る情報を格納する。
Flagment Offsetフィールドは、13ビットのフィールドであって、IPパケットがフラグメント化されている場合の何番目のフラグメントであるかを表す値を格納する。
Time To Live(TTL)フィールドは、8ビットのフィールドであって、IPパケットのインターネット上での生存期間を表す値を格納する。
Protocolフィールドは、8ビットのフィールドであって、IPパケットがカプセル化している上位層プロトコルの種類を表す値を格納する。
Header Checksumフィールドは、16ビットのフィールドであって、IPヘッダをCRC(Cyclic Redundancy Check:巡回冗長検査)でチェックする。
Source Addressフィールドは、IPパケットの送信元のIPアドレスを、Destination Addressは、IPパケットの送信先のIPアドレスを、夫々格納する32ビットのフィールドである。
Optionフィールドは、IPパケット配送時に特殊な処理を行なうことを指示するフィールドである。Optionsフィールドのビット長は可変であり、Optionフィールドに値を格納する場合のヘッダ長の調整のため、paddingフィールドが付加されることがある。
データ転送制御装置1の運用においては、このOptionsフィールドに締切時間を表すP2の値を格納してもよい。具体的に、Optionsフィールド内には、フラグメント情報を格納するCopy Flagフィールド、Optionの種類を示すClassフィールド及びNumberフィールド、長さを示すLengthフィールド、Optionについてのデータを格納するOption Dataフィールドが夫々定義される。ポート20A乃至20Cに接続される、前段処理装置2a乃至2cは、締切時間を示すP2をこのOption Dataフィールドにマッピングしてもよい。
(5)データ処理装置の変形例
以上、データの締切時間の設定に係る例として、入力用のポート20a乃至20cに接続される前段処理装置2a乃至2cにおいて、後段処理装置3における処理期間等を考慮して締切時間P2の設定を行う態様について説明した。データの締切時間の設定に係る他の例として、データ転送制御装置1のスイッチ機能部10において、後段処理装置3における処理期間等を考慮して締切時間P2の設定を行う態様であってもよい。
この態様では、データ転送制御装置1のスイッチ機能部10において、後段処理装置3での処理を考慮した転送制御を実現するために、予め振り分け部100に対して締切時間に相当する他の要素を定義し、データ転送の優先度を決定することが考えられる。例えば、Rapid IOなどのパケットに対し、データの締切時間と、転送先のアドレス領域を対応させ、振り分け部100で転送アドレスを締切時間に読み替えて、転送を行ってもよい。
具体的には、後段処理装置3が備える、ポート20a乃至20cから入力されるデータを格納するメモリにおいて、処理時間に応じてデータを格納するためのメモリアドレスを分割する。
例えば、図32に示すように、後段処理装置3において、4msの基準時間及び1msの処理周期を有する場合について考える。このとき、0ms、1ms、2ms及び3msの夫々の処理時間に応じて、対応するデータを格納するための領域を設けるよう、メモリアドレスの分割を行う。先ず、メモリアドレス(0x000〜0x0FF)の領域をW、メモリアドレス(0x100〜0x1FF)の領域をX、メモリアドレス(0x200〜0x2FF)の領域をY、メモリアドレス(0x300〜0x3FF)の領域をZと定義する。
そして、0msに加工処理を開始するデータはWの領域に、1msに加工処理を開始するデータはXの領域に、2msに加工処理を開始するデータはYの領域に、3msに加工処理を開始するデータはZの領域に、夫々格納するよう、各データの転送先のメモリアドレスを設定する。
図36は、このような処理の対象となるデータの一例である、Rapid IOパケットのフォーマットを示す図である。Rapid IOパケットのフォーマットでは、転送先のアドレスを指定する29ビットのAddressフィールドが定義されている。このAddressフィールドを用いて、転送先の後段処理装置3におけるメモリアドレスを指定した情報を格納する。
データ転送制御装置1の振り分け部100では、抽出部110は、Rapid IOパケットを受信した場合、転送先のメモリアドレスを締切時間を示すP2の値に読み替えて、P2情報をP2セレクタに入力する。具体的には、入力されるパケットについて、転送先のアドレス(0x000〜0x0FF)である場合、締切時間=0ms、つまりP2=0と読み替えて、読み替えたP2の値を入力する。転送先のアドレス(0x100〜0x1FF)である場合、締切時間=1ms、つまりP2=1と読み替えて、読み替えたP2の値を入力する。転送先のアドレス(0x200〜0x2FF)である場合、締切時間=2ms、つまりP2=2と読み替えて、読み替えたP2の値を入力する。転送先のアドレス(0x300〜0x3FF)である場合、締切時間=3ms、つまりP2=3と読み替えて、読み替えたP2の値を入力する。
P2セレクタ130乃至150は、入力されたP2の値を用いて、パケットをバッファメモリ部毎に振り分ける。
この態様においては、前段処理装置2a乃至2cは、出力用のポート30に接続される後段処理装置3での処理については考慮することなく、データの種類に応じた転送先の後段処理装置3のメモリアドレスをデータに付与して送信する。
本発明は、上述した実施例に限られるものではなく、請求の範囲及び明細書全体から読み取れる発明の要旨或いは思想に反しない範囲で適宜変更可能であり、そのような変更を伴うデータ転送制御装置及び方法、データ処理装置もまた本発明の技術的範囲に含まれるものである。
以上、本明細書で説明した実施形態について、以下の付記を更に記載する。
(付記1)
データを入力する複数の入力ポートと、
前記データを出力する出力ポートと、
前記データに設定される締切時間に基づいて、前記データを前記複数の入力ポートから前記出力ポートに転送する転送制御部と
を備えることを特徴とするデータ転送制御装置。
(付記2)
入力される前記データを格納する複数の格納部と
前記複数の入力ポートの夫々に対応し、入力される前記データを該データに設定される前記締切時間に対応する前記複数の格納部のいずれかに格納する振り分け部と
を更に備えることを特徴とする付記1に記載のデータ転送制御装置。
(付記3)
前記転送制御部は、前記複数の格納部に格納される前記データを、該データに設定される前記締切時間に基づいて前記出力ポートに転送する際の順番を決定することを特徴とする付記2に記載のデータ転送制御装置。
(付記4)
前記転送制御部は、前記複数の格納部に格納される前記データを、前記データに設定される前記締切時間及び現在の時刻を比較した結果に応じて、前記出力ポートに転送する際の順番を決定することを特徴とする付記3に記載のデータ転送制御装置。
(付記5)
前記複数の入力ポートより入力されたデータの数をカウントする第1カウンタと、
前記出力ポートに出力されたデータの数をカウントする第2カウンタと、
前記第1カウンタ及び前記第2カウンタのカウンタ値の比較を行う比較部と
を更に備え、
前記転送制御部は、前記比較部における比較結果に応じて、前記複数の格納部に格納される前記データを前記出力ポートに転送する際の順番を決定することを特徴とする付記2から4のいずれか一項に記載のデータ転送制御装置。
(付記6)
前記転送制御部は、前記データに設定される優先度と、前記締切時間とに基づいて、前記データを前記複数の入力ポートから前記出力ポートに転送する際の順番を決定することを特徴とする付記1から4のいずれか一項に記載のデータ転送制御装置。
(付記7)
データを複数の入力ポートより入力する入力工程と、
前記データを出力ポートより出力する出力工程と、
前記データに設定される締切時間に基づいて、前記データを前記複数の入力ポートから前記出力ポートに転送する転送制御工程と
を備えることを特徴とするデータ転送制御方法。
(付記8)
データ転送制御装置と、該データ転送制御装置を介して転送されるデータを受信する第1処理装置とを含むデータ処理装置であって、
前記データ転送制御装置は、
データを入力する複数の入力ポートと、
前記データを出力する出力ポートと、
前記データに設定される締切時間に基づいて、前記データを前記複数の入力ポートから前記出力ポートに転送する転送制御部と
を備え、
前記第1処理装置は、受信した前記データを所定のタイミングで処理することを特徴とするデータ処理装置。
(付記9)
前記データ転送制御装置を介して前記第1処理装置にデータを送信する第2処理装置を更に備え、
前記第2処理装置は、前記所定のタイミングに間に合うよう、前記データについて前記締切時間を設定した上で送信することを特徴とする付記8に記載のデータ処理装置。
(付記10)
前記データ転送制御装置を介して前記第1処理装置にデータを送信する第2処理装置を更に備え、
前記第1処理装置は、受信した前記データについて、処理する際の前記所定のタイミング毎に分類して格納し、
前記第2処理装置は、前記メモリ内における、前記所定のタイミングに応じたアドレスを指定して前記データを送信し、
前記転送制御部は、前記データについて指定される前記アドレスを前記締切時間を示す情報として用いることで、前記データを前記複数の入力ポートから前記出力ポートに転送することを特徴とする付記8に記載のデータ処理装置。