説明

データ転送制御装置、データ転送制御方法、及びそのためのプログラム

【課題】 パケット交換網を介して記憶装置間のデータ転送を行う記憶装置において、転送するデータがアドレス境界条件を満たしていない場合に、転送するデータのメモリアクセス性能を低下させないようにする。
【解決手段】 送信側転送開始アドレスと受信側転送開始アドレスとを少なくとも含むデータ転送命令に基づいて、送信側メモリアクセス単位で転送データを読み出すことを送信側メモリに要求する、データ読出要求を出力する転送命令実行部と、
送信側転送開始アドレスと受信側転送開始アドレスと受信側メモリアクセス単位とデータを送信側から受信側へ転送する際の転送パケットサイズに基づいて、データ読出要求に応答して送信側メモリから出力された転送データを、受信側メモリアクセス単位の境界で分割して転送パケットを生成し、出力する転送パケット生成部と、を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、装置間のデータ転送に係る、データ転送制御装置、データ転送制御方法、及びそのためのプログラムに関する。
【背景技術】
【0002】
記憶装置間のデータ転送に係るさまざまな関連技術が知られている。
【0003】
例えば、2つの記憶装置間においてデータの転送を行う場合、転送するデータがアドレス境界条件を満たす場合のほうが、満たさない場合に比べて、制御方法が簡単であり、かつ高速な転送が行えることは、周知である。ここで、転送するデータがアドレス境界条件を満たすとは、各記憶装置間における転送開始アドレスが、それぞれの記憶装置における転送データの読み出し書き込みのアドレス境界に一致するということである。
【0004】
しかし、記憶装置のハードウェアの制限(例えば、使用するメモリ素子の構成による制限)や、ソフトウェアのメモリ使用方法(例えば、転送データの格納場所の決定方法)によっては、必ずしもアドレス境界条件が満たされるとは限らない。そのような場合、必要なメモリアクセス性能を得られない場合があった。
【0005】
このような問題点を解決する技術が特許文献1に記載されている。特許文献1に記載のデータ転送装置は、転送データを一時的に蓄えるための、バッファを3つ以上備えている。このバッファは、任意のサイズのデータを、送信側と受信側で競合しない限り任意のタイミングで、アクセス可能なバッファである。更に、このデータ転送装置は、それらバッファを転送元記憶装置と転送先記憶装置との間で順次切り替えてデータ転送を行う、転送元側制御手段と転送先側制御手段とを有している。このような構成を有するこのデータ転送装置は、転送元及び転送先の、いずれか一方または両方の、記憶装置の転送開始アドレスがアドレス境界条件を満たしていない場合であっても、転送元記憶装置からデータ転送装置へのデータ転送と、データ転送装置から転送先記憶装置へのデータ転送を並列に実行する。こうして、このデータ転送装置は、高速なデータ転送を実現する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平7−105128号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に記載の技術は、パケット交換網を介してデータ転送を行う装置において、転送するデータがアドレス境界条件を満たしていない場合に、転送するデータのメモリアクセス性能を低下させないようにするという課題を解決していない。その理由は、特許文献1のデータ転送装置は、転送元と転送先とがバッファを直接介してデータ転送を行うものであって、所定のサイズの転送データをパケットに格納して順次転送するパケット交換方式には対応していないためである。
【0008】
本発明の目的は、上述した課題を解決するデータ転送制御装置、データ転送制御方法、及びそのためのプログラムを提供することにある。
【課題を解決するための手段】
【0009】
本発明のデータ転送制御装置は、送信側転送開始アドレスと受信側転送開始アドレスとを少なくとも含むデータ転送命令に基づいて、送信側メモリアクセス単位で転送データを読み出すことを送信側メモリに要求する、データ読出要求を出力する転送命令実行部と、
前記送信側転送開始アドレスと前記受信側転送開始アドレスと受信側メモリアクセス単位と前記データを送信側から受信側へ転送する際の転送パケットサイズに基づいて、前記データ読出要求に応答して前記送信側メモリから出力された前記転送データを、前記受信側メモリアクセス単位の境界で分割して転送パケットを生成し、出力する転送パケット生成部と、を含む。
【0010】
本発明のデータ転送制御方法は、パケット交換網を介してデータ転送を行う装置が、
送信側転送開始アドレスと受信側転送開始アドレスとを少なくとも含むデータ転送命令に基づいて、送信側メモリアクセス単位で転送データを読み出すことを送信側メモリに要求する、データ読出要求を出力し、
前記送信側転送開始アドレスと前記受信側転送開始アドレスと受信側メモリアクセス単位と前記データを送信側から受信側へ転送する際の転送パケットサイズに基づいて、前記データ読出要求に応答して前記送信側メモリから出力された前記転送データを、前記受信側メモリアクセス単位の境界で分割して転送パケットを生成し、出力する。
【0011】
本発明のプログラムは、送信側転送開始アドレスと受信側転送開始アドレスとを少なくとも含むデータ転送命令に基づいて、送信側メモリアクセス単位で転送データを読み出すことを送信側メモリに要求する、データ読出要求を出力し、
前記送信側転送開始アドレスと前記受信側転送開始アドレスと受信側メモリアクセス単位と前記データを送信側から受信側へ転送する際の転送パケットサイズに基づいて、前記データ読出要求に応答して前記送信側メモリから出力された前記転送データを、前記受信側メモリアクセス単位の境界で分割して転送パケットを生成し、出力する処理
をコンピュータに実行させる。
【発明の効果】
【0012】
本発明は、パケット交換網を介してデータ転送を行う装置において、転送するデータがアドレス境界条件を満たしていない場合に、転送するデータのメモリアクセス性能を低下させないようにするという課題を解決することが可能になるという効果がある。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施形態の構成を示すブロック図である。
【図2】本発明の第1の実施形態における、データ転送命令の例を示す図である。
【図3】本発明の第1の実施形態における、データ読出要求の例を示す図である。
【図4】本発明の第1の実施形態の送信側メモリの一部の例を示す図である。
【図5】本発明の第1の実施形態の受信側メモリの一部の例を示す図である。
【図6】本発明の第1の実施形態の動作を示すフローチャートである。
【図7】本発明の第1の実施形態の動作を示すフローチャートである。
【図8】本発明の第1の実施形態における、カレントアドレスとリミットアドレスとの具体的な例を示す図である。
【図9】本発明の第1の実施形態における、1つ目の転送パケット631の例を示す図である。
【図10】本発明の第1の実施形態における、2つ目の転送パケット632の例を示す図である。
【図11】本発明の第1の実施形態における、3つ目の転送パケット633の例を示す図である。
【図12】本発明の第1の実施形態における、4つ目の転送パケット634の例を示す図である。
【図13】本発明の第1の実施形態のプログラムにより所定の処理をコンピュータに実行させるデータ転送制御装置の構成を示すブロック図である。
【図14】本発明の第2の実施形態のデータ転送システムの構成を示すブロック図である。
【図15】本発明の第2の実施形態における、データ転送命令650の例を示す図である。
【図16】本発明の第2の実施形態のデータ転送制御装置の構成を示すブロック図である。
【図17】本発明の第2の実施形態における、データバッファ番号の例を示す図である。
【図18】本発明の第2の実施形態における、1パケット情報の例を示す図である。
【図19】本発明の第2の実施形態における、受信側パケットアドレスの例を示す図である。
【図20】本発明の第2の実施形態における、補正情報の例を示す図である。
【図21】本発明の第2の実施形態における、メモリリクエスト情報の例を示す図である。
【図22】本発明の第2の実施形態における、送信側メモリアクセス単位データの例を示す図である。
【図23】本発明の第2の実施形態における、データバッファ格納データの例を示す図である。
【図24】本発明の第2の実施形態の動作を示すフローチャートである。
【図25】本発明の第2の実施形態における、転送データをデータバッファに格納する動作を示す図である。
【図26】本発明の第2の実施形態の送信側メモリの一部の例を示す図である。
【図27】本発明の第2の実施形態の受信側メモリの一部の例を示す図である。
【図28】本発明の第2の実施形態における、格納要素番号の算出と格納バッファ番号の決定との手順を示す図である。
【図29】本発明の第2の実施形態における、格納要素番号の算出と格納バッファ番号の決定との手順を示す図である。
【図30】関連技術の、課題が解決されていない場合の記憶装置間のデータ転送において、生成される転送パケットを示す図である。
【図31】関連技術の、課題が解決されていない場合の記憶装置間のデータ転送において、転送パケットデータの受信側メモリへの書き込みの動作を示す図である。
【発明を実施するための形態】
【0014】
次に、本発明の実施形態について図面を参照して詳細に説明する。
【0015】
[第1の実施形態]
図1は、本発明の第1の実施形態の構成を示すブロック図である。図1に示すように本実施形態に係るデータ転送制御装置300は、転送命令実行部330と転送パケット生成部350とを含む。
【0016】
転送命令実行部330は、送信側転送開始アドレスと受信側転送開始アドレスとを少なくとも含むデータ転送命令に基づいて、送信側メモリアクセス単位で転送データを読み出すことを送信側メモリ(図示しない)に要求する、データ読出要求を出力する。また、転送命令実行部330は、データ転送命令に含まれる送信側転送開始アドレスと受信側転送開始アドレスとを転送パケット生成部350に出力する。図2は、データ転送命令の例を示す図である。図2に示すように、データ転送命令610は、送信側転送開始アドレス611と受信側転送開始アドレス612とを少なくとも含む。図3は、データ読出要求の例を示す図である。図3に示すように、データ読出要求620は、少なくとも読出アドレス621を含む。
【0017】
転送パケット生成部350は、送信側転送開始アドレス611と受信側転送開始アドレス612と受信側メモリアクセス単位(例えば、64バイト)と転送データを送信側から受信側へ転送する際の転送パケットサイズ(例えば、128バイト)に基づいて、データ読出要求620に応答して送信側メモリから出力された転送データを、受信側メモリアクセス単位の境界で分割して転送パケットを生成し、出力する。
【0018】
次に、本実施形態の動作について、以下の前提に基づいて、図1〜5を参照して詳細に説明する。
【0019】
送信側転送開始アドレス611及び受信側転送開始アドレス612のアドレス境界は、8バイト境界である。
【0020】
送信側メモリアクセス単位及び受信側メモリアクセス単位は、64バイトである。従って、送信側メモリアクセス境界アドレス及び受信側メモリアクセス境界アドレスのアドレス境界は、64バイト境界である。
【0021】
送信側転送開始アドレス611は、ある送信側メモリアクセス境界アドレス[A]に、「8(8バイト分のアドレス増分値)」を加えた「A+8」である。尚、“[A]”は、“A”がある送信側メモリアクセス境界アドレスの値であることを表している(以下、他の要素についても同様のことを意味する)。
【0022】
受信側転送開始アドレス612は、ある受信側メモリアクセス境界アドレス[B]に、「40(40バイト分のアドレス増分値)」を加えた「B+40」である。
【0023】
転送パケットサイズは、128バイトである。即ち、転送パケット生成用のデータバッファ(図示しない)のサイズは、128バイトである。尚、転送パケット生成部350は、複数のデータバッファを含んでいる。
【0024】
以下の説明において、データ転送命令610に基づいて転送するデータの量を示す総転送サイズは、64×58=3712バイトである。尚、転送サイズは、データ転送命令に含まれていても良いし、データ転送制御装置300の図示しない記憶部に予め保持されていてもよい。
【0025】
図4は、転送データが格納されている、送信側メモリの一部の例を示す図である。
【0026】
図4において、転送データを、送信側転送開始アドレス611のアドレス境界である8バイト境界のデータ単位(以後、このデータ単位を要素データと呼ぶ)毎に、D0〜D57の識別子を付して示す。図4を参照すると、要素データD0(D0の識別子が付された要素データ、以下同様)〜要素データD57は、送信側メモリ370の送信側メモリアクセス境界アドレス371[A]から送信側メモリアクセス境界アドレス371[A+64*7]それぞれで始まる8つの送信側メモリアクセス単位に含まれている。
【0027】
図5は、転送データが格納された、受信側メモリの一部の例を示す図である。図5を参照すると、要素データD0〜要素データD57は、受信側メモリ380の送信側メモリアクセス境界アドレス381[B]から送信側メモリアクセス境界アドレス381[B+64*7]それぞれで始まる8つの受信側メモリアクセス単位に含まれている。
【0028】
本動作の説明において、先に送信する転送パケットの転送データを格納するデータバッファをカレントデータバッファと、その次に送信する転送パケットの転送データを格納するデータバッファをネクストデータバッファと呼ぶ。
【0029】
以上を前提として、以下に動作を説明する。
【0030】
図6及び図7は、本実施形態の動作を示すフローチャートである。
【0031】
最初に、転送命令実行部330は、送信側転送開始アドレス611[A+8]を含む送信側メモリアクセス境界アドレス371[A]を、読出アドレス621として取得する(S402)。
【0032】
次に、転送命令実行部330は、読出アドレス621を含むデータ読出要求620を出力する(S404)。
【0033】
次に、転送パケット生成部350は、S404で出力されたデータ読出要求620に応答して送信側メモリ370から出力された、転送データを受け取る(S406)。前述の前提に基づいて例を示すと、例えば1回目にこのステップを実施する場合、受け取る転送データは、要素データD0〜D6である。また例えば2回目にこのステップを実施する場合、受け取る転送データは、要素データD7〜D14である。また例えば3回目にこのステップを実施する場合、受け取る転送データは、要素データD15〜D22である。
【0034】
次に、転送パケット生成部350は、受信側転送開始アドレス612[B+40]と既にカレントデータバッファに書き込んだ転送データのサイズに対応するアドレス増分値とを加算し、カレントアドレスを算出する(S408)。前述の前提に基づいて例を示すと、例えば1回目にこのステップを実施する場合、カレントアドレスは、B+40である。また例えば2回目にこのステップを実施する場合、カレントアドレスは、B+40+56である。また例えば3回目にこのステップを実施する場合、カレントアドレスは、B+40+56+64である。
【0035】
次に、転送パケット生成部350は、次の転送データを書き込むカレントデータバッファ内のアドレスをカレントアドレスに対応させた場合に、カレントデータバッファの「カレントアドレスに対応するアドレス」から「最大のアドレス+1」までの内で、最も大きな「受信側メモリアクセス境界アドレスに対応するアドレス」に対応するカレントデータバッファアドレスを、リミットアドレスとして算出する(S410)。図8は、カレントアドレスとリミットアドレスとの具体的な例を示す図である。
【0036】
図8を参照して、前述の前提に基づいて例を示すと、例えば1回目にこのステップを実施する場合、次の転送データは要素データD0である。この転送データを書き込むカレントデータバッファアドレス352は、「0」である。このカレントデータバッファアドレス352をカレントアドレス353[B+40]に対応させた場合に、カレントデータバッファアドレス352「0」からカレントデータバッファ最大+1アドレス354[8*16]までの内で対応する受信側メモリアクセス境界アドレスの内の、最も大きな受信側メモリアクセス境界アドレスである最大対応受信側メモリアクセス境界アドレス355は、「B+64*2」である。この最大対応受信側メモリアクセス境界アドレス355に対応するカレントデータバッファアドレス356、即ちリミットアドレス357は「8*11」である。
【0037】
また例えば2回目にこのステップを実施する場合、次の転送データは要素データD7である。そして、リミットアドレスは、受信側メモリアクセス境界アドレス[B+64*2]に対応するカレントデータバッファアドレスである、「8*11」である。また例えば3回目にこのステップを実施する場合、次の転送データは要素データD15であり、リミットアドレスは受信側メモリアクセス境界アドレス[B+64*4]に対応するカレントデータバッファ最大+1アドレス354である、「8*16」である。
【0038】
次に、転送パケット生成部350は、S406で受け取った転送データが、リミットアドレス未満に収まるか否かを確認する(S412)。リミットアドレス未満に収まる場合(S412でYES)、処理はS414へ進む。リミットアドレス未満に収まらない場合(S412でNO)、処理はS420へ進む。前述の前提に基づいて例を示すと、例えば1回目、2回目及び3回目にこのステップを実施する場合、それぞれ、S412でYES、S412でNO及びS412でYESである。
【0039】
S414において、転送パケット生成部350は、S404で出力されたデータ読出要求620に応答して送信側メモリ370から出力された転送データを、パケット生成用のカレントデータバッファに書き込む(S414)。前述の前提に基づいて例を示すと、例えば1回目にこのステップを実施する場合、カレントデータバッファに書き込む転送データは要素データD0〜D6である。また例えば2回目にこのステップを実施する場合、カレントデータバッファは次のデータバッファであり、カレントデータバッファに書き込む転送データは要素データD15〜D18である。
【0040】
次に、転送パケット生成部350は、カレントデータバッファのリミットアドレスの直前のアドレスまで転送データを書き込んだ(転送データ書き込み完了)か否かを確認する(S416)。書き込んだ場合(S416でYES)、処理はS430へ進む。書き込んでない場合(S416でNO)、処理はS418へ進む。前述の前提に基づいて例を示すと、例えば1回目、2回目及び3回目にこのステップを実施する場合、それぞれ、S416でNO、S416でYES及びS416でNOである。
【0041】
次に、転送パケット生成部350は、最後の転送データ(即ち、要素データD57)を書き込んだ(最後の書き込み完了)か否かを確認する(S418)。書き込んだ場合(S418でYES)、処理はS430へ進む。書き込んでない場合(S418でNO)、処理はS432へ進む。
【0042】
S420において、転送パケット生成部350は、S404で出力されたデータ読出要求620に応答して送信側メモリ370から出力された転送データを、リミットアドレス未満に収まる分の転送データと、収まらない分の転送データとに分割する(S420)。続けて転送パケット生成部350は、リミットアドレス未満に収まる分の転送データをカレントデータバッファに書き込む(S421)。更に続けて、転送パケット生成部350は、カレントデータバッファに書き込まなかった分の転送データ、即ちリミットアドレス未満に収まらない分の転送データをネクストデータバッファに書き込む(S422)。前述の前提に基づいて例を示すと、例えば1回目にこのステップを実施する場合、カレントデータバッファに書き込む転送データは要素データD0〜D6である。また例えば2回目にこのステップを実施する場合、カレントデータバッファに書き込む転送データは要素データD7〜D10であり、ネクストデータバッファに書き込む転送データは要素データD11〜D14である。
【0043】
次に、転送パケット生成部350は、カレントデータバッファの転送データ(例えば、要素データD0〜D10)に、先頭データ(例えば、要素データD0)の受信側メモリ書込アドレスを付加した転送パケットを生成し、出力する(S423)。図9は、1つ目の転送パケット631の例を示す図である。図9に示すように、転送パケット631は、受信側メモリ書込アドレスとして、受信側転送開始アドレス612である「B+40」が付加され、要素データD0からD10が格納されている。図10は、2つ目の転送パケット632の例を示す図である。図10に示すように、転送パケット632は、受信側メモリ書込アドレスとして、受信側転送開始アドレス612[B+40]に1つ目の転送パケット631で転送した転送データ長(例えば、88)を加算した値(即ち、受信側メモリアクセス境界アドレスである「B+64*2」が付加され、要素データD11からD26が格納されている。
図11は、3つ目の転送パケット633の例を示す図である。転送パケット633の詳細は、転送パケット632と同様に考えればよいため説明を省略する。
【0044】
次に、転送パケット生成部350は、ネクストデータバッファに最後の転送データ(即ち、要素データD57)を書き込んだか否かを確認する(S424)。書き込んだ場合(S424でYES)、処理はS430へ進む。書き込んでない場合(S424でNO)、処理はS426へ進む。
【0045】
S426において、転送パケット生成部350は、ネクストデータバッファをカレントデータバッファとし、更に次のデータバッファをネクストデータバッファとする(S426)。そして、処理は、S434へ進む。
【0046】
S430において、転送パケット生成部350は、カレントデータバッファの転送データ(例えば、要素データD0〜D10)に、先頭データ(即ち、要素データD0)の受信側メモリへの書き込みアドレスとして受信側転送開始アドレス612を付加した転送パケットを生成し出力する(S430)。図12は、4つ目の転送パケット634の例を示す図である。転送パケット633の詳細は、転送パケット632と同様に考えればよいため説明を省略する。
【0047】
次に、転送命令実行部330は、このデータ転送命令610の処理で転送する総転送サイズ分の転送データの読み出しを完了したか否かを確認する(S432)。完了した場合(S432でYES)、処理は終了する。完了していない場合(S432でNO)、処理はS434へ進む。
【0048】
S434において、転送命令実行部330は、読出アドレス621を更新し、データ読出要求620を出力する(S434)。そして、処理は、S404に進む。尚、転送命令実行部330は、先に出力したデータ読出要求620の読出アドレス621に送信側メモリアクセス単位(64バイト)分のアドレス増分値(例えば、64)を加算することで、読出アドレス621を更新する。
【0049】
本実施形態に係るデータ転送制御装置300は、以上説明したように動作する。
【0050】
尚、上述のデータ転送制御装置300が送信する転送パケットを受信した場合、受信側の記憶装置は、以下のように動作する。
【0051】
最初に、受信側の記憶装置は、例えばノード間ネットワーク網を介して、データ転送制御装置300が送信する転送パケット631を受信する。
【0052】
次に、受信側の記憶装置は、転送パケット631に基づいて、受信側メモリ380の受信側メモリ書込アドレスとして示される「B+40」に基づいて、要素データD0〜D10を書き込む。要素データD0〜D2及び要素データD3〜D10それぞれを書き込む領域は、受信側メモリアクセス境界アドレスをまたいでいない、即ち1つの受信側メモリアクセス単位に含まれる。従って、受信側の記憶装置は、転送パケット631で受け取った転送データを、最少の2回の書き込み動作で書き込む。
【0053】
以後、受信側の記憶装置は、転送パケット632〜634についても同様に処理する。
【0054】
次に、データ転送制御装置300を、プログラムにより所定の処理をコンピュータに実行させるように構成する場合を説明する。
【0055】
図13は、プログラムにより所定の処理をコンピュータに実行させるデータ転送制御装置300(コンピュータとも呼ばれる)の構成を示すブロック図である。
【0056】
図13を参照すると、データ転送制御装置300は、CPU(Central Processing Unit)302、ディスク装置303、記憶部304、上位インタフェース部305及びノード間ネットワークインタフェース部306を含む。
【0057】
CPU302は、ディスク装置303に格納されたプログラムを、例えば記憶部304に展開し、展開したプログラムに基づいて図6、図7に示すフローチャートに基づく処理を実行する。
【0058】
ディスク装置303は、上述したデータ転送制御装置300の処理をコンピュータに実行させるプログラムを記憶する。
【0059】
記憶部304は、そのプログラム及びプログラムが動作するための制御情報を記憶し、また上述の送信側メモリとして転送データを、及びデータバッファとして転送パケットを記憶する。
【0060】
上位インタフェース部305は、CPU302の指示に基づいて、データ転送命令を発行する回路デバイスまたは装置と送受信する。
【0061】
ノード間ネットワークインタフェース部306は、CPU302の指示に基づいて、ノード間ネットワークと送受信する。ここで、ノードとは、図1に示すデータ転送装置300を収納する送信側ノードまたは受信側ノードに対応し、ノード間ネットワークは、送信側ノードまたは受信側ノードが接続されるネットワークである。
【0062】
上述した本実施形態における効果は、パケット交換網を介してデータ転送を行う装置において、転送するデータがアドレス境界条件を満たしていない場合に、転送するデータのメモリアクセス性能を低下させないようにすることが可能になる点である。
【0063】
その理由は、転送命令実行部330が、送信側転送開始アドレス611と受信側転送開始アドレス612とに基づいて、送信側メモリアクセス単位で転送データを読み出し、転送パケット生成部350が、送信側転送開始アドレス611と受信側転送開始アドレス612と受信側メモリアクセス単位と転送パケットサイズに基づいて、転送データを、受信側メモリアクセス単位の境界で分割して転送パケットを生成するようにしたからである。
[第2の実施形態]
次に、本発明の第2の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【0064】
まず、本実施形態に係るデータ転送制御装置を適用したデータ転送システムの動作の概要を説明する。
【0065】
図14は、本実施形態に係るデータ転送制御装置を適用したデータ転送システム10の構成を示すブロック図である。図14を参照すると、データ転送システム10は、通信ノード100と通信ノード110とがノード間ネットワーク網120で接続されている。
【0066】
通信ノード100は、リクエスタ101とメモリ103とデータ転送制御装置200とを含む。
【0067】
リクエスタ101は、データ転送制御装置200にデータ転送命令を発行して、転送指示を行う。
【0068】
メモリ103は、転送データ104を記憶する。
【0069】
通信ノード110は、メモリ113と受信側パケット転送制御部112とを含む。
【0070】
メモリ113は、転送データ114を記憶する。
【0071】
ノード間ネットワーク網120は、少なくともパケット交換による通信を行う。
【0072】
尚、通信ノード100は、通信ノード110が含む要素と同様の要素を更に含んでもよい。また、通信ノード110は、通信ノード100が含む要素と同様の要素を更に含んでもよい。
【0073】
通信ノード100及び通信ノード110それぞれは、1以上の任意の台数であってよい。
【0074】
以下の説明では、通信ノード100を送信側ノードとして、通信ノード110を受信側ノードとして説明する。従って、以下の説明において、メモリ103は図4に示すような送信側メモリ370であり、メモリ113は図5に示すような受信側メモリ380である。
【0075】
まず、リクエスタ101は、データ転送命令をデータ転送制御装置200に出力する。図15は、データ転送命令650の例を示す図である。図15に示すように、データ転送命令650は、送信側転送開始アドレス611と、受信側転送開始アドレス612と、総転送サイズ613とを含む。
【0076】
次に、データ転送命令650を受け取ったデータ転送制御装置200は、総転送サイズ613を、ノード間転送の転送パケットのサイズに分解して、メモリ103から転送データ104を読み出す。
【0077】
続けて、データ転送制御装置200は、例えば転送パケット105〜108(図9から図12に示す転送パケット631〜634に対応、但し要素データの格納位置は必ずしも同一ではない)を生成しノード間ネットワーク網120に送信する。
【0078】
次に、通信ノード110の受信側パケット転送制御部112は、送信側ノードが送信した転送パケット105〜108を、ノード間ネットワーク網120から転送パケット115〜118として受け取る。
【0079】
次に、受信側パケット転送制御部112は、受け取った転送データ104を、転送パケット単位に、転送データ114としてメモリ113へ書き込む。
【0080】
上述の転送パケット105〜108の生成において、まず、データ転送制御装置200は、メモリ103から読み出した転送データ104について、8バイトを1単位とする要素データ毎に、転送パケットへの相対的な格納位置を示す番号(以下、要素番号と呼ぶ)を付加する。尚、この要素番号は、メモリ103が読出データに付加してデータ転送制御装置200に対して出力するようにしてもよい。
【0081】
続けて、データ転送制御装置200は、転送パケット105〜108の境界がメモリ113のメモリアクセス境界に一致するように要素番号を補正する。
【0082】
続けて、データ転送制御装置200は、この補正した要素番号に基づいて、転送データ104を分割し、転送パケットに格納する。
【0083】
以上が、本実施形態に係るデータ転送制御装置200を適用したデータ転送システムの動作の概要の説明である。
【0084】
次に、本実施形態に係るデータ転送制御装置200の詳細について説明する。
【0085】
図16は、本実施形態に係るデータ転送制御装置200の構成を示すブロック図である。
【0086】
図16を参照すると、本実施形態に係るデータ転送制御装置200は、命令受信発行部210、パケット分割部220、メモリリクエスト発行部230、要素番号補正部240、パケットデータ整列部250、転送パケット発行部260、補正情報生成部280及び要素番号付与部290を含む。第1の実施形態と比較すると、本実施形態に係るデータ転送制御装置200は、命令受信発行部210、パケット分割部220及びメモリリクエスト発行部230が第1の実施形態の転送命令実行部330に対応し、パケットデータ整列部250及び転送パケット発行部260が第1の実施形態の転送パケット生成部350に対応している。更に、本実施形態に係るデータ転送制御装置200は、第1の実施形態と比べて、要素番号補正部240、補正情報生成部280及び要素番号付与部290が追加されている
命令受信発行部210は、図14に示すリクエスタ101から、データ転送命令650を受け取る。そして、命令受信発行部210は、受け取ったデータ転送命令610に基づいて、パケット分割部220に送信側転送開始アドレス611と受信側転送開始アドレス612と総転送サイズ613とを出力する。また、命令受信発行部210は、補正情報生成部280に送信側転送開始アドレス611と受信側転送開始アドレス612とを出力する。
【0087】
パケット分割部220は、受け取った送信側転送開始アドレス611と受信側転送開始アドレス612と総転送サイズ613とに基づいて、ノード間転送の転送パケットサイズ単位に、図14に示すメモリ103の読出アドレス(以後、送信側パケットアドレスと呼ぶ)と受信側メモリの書込アドレス(以後、受信側パケットアドレスと呼ぶ)とを生成する。
【0088】
また、パケット分割部220は、パケットデータ整列部250に対し、1パケット分の転送データを整列させるデータバッファ要求を出力する。次に、パケット分割部220は、パケットデータ整列部250がデータバッファ要求への応答として出力したデータバッファ番号を受け取る。図17は、パケットデータ整列部250が出力するデータバッファ番号641の例を示す図である。
【0089】
尚、送信側メモリアクセス単位で読み出された転送データは、2つのパケットに分割されて格納される場合がある。このため、パケット分割部220は、カレントデータバッファ番号用とネクストデータバッファ番号用の2つのデータバッファ番号641を要求し、取得する。そして、以後、パケット分割部220は、現ネクストデータバッファ番号を次の転送パケットのカレントデータバッファ番号とし、新たにデータバッファ番号641を取得してネクストデータバッファ番号とし、使用する。
【0090】
次に、パケット分割部220は、パケット単位のメモリアクセス情報である、1パケット情報643をメモリリクエスト発行部230に出力する。図18は、1パケット情報643の例を示す図である。図18に示すように、1パケット情報643は、送信側パケットアドレス671とカレントデータバッファ番号672とネクストデータバッファ番号673とから成る、
同時に、パケット分割部220は、転送パケットのヘッダ情報となるパケット単位の受信側パケットアドレスをパケットデータ整列部250に出力する。図19は、パケット分割部220が出力する受信側パケットアドレス642の例を示す図である。
【0091】
補正情報生成部280は、送信側転送開始アドレス611と受信側転送開始アドレス612とに基づいて、補正情報(mとも呼ぶ)を算出する。図20は、補正情報生成部280が算出する補正情報675の例を示す図である。補正情報675は、送信側転送開始アドレス611とこれを含む送信側メモリアクセス単位のメモリアクセス境界アドレスとの差分を要素数で示す値と、受信側転送開始アドレス612とこれを含む受信側メモリアクセス単位のメモリアクセス境界アドレスとの差分を要素数で示す値、との差分である。そして、補正情報生成部280は、算出した補正情報675を要素番号補正部240に出力する。
【0092】
メモリリクエスト発行部230は、受け取った1パケット情報643に基づいて、送信側メモリアクセス単位にメモリリクエスト情報を生成する。図21は、メモリリクエスト情報644の例を示す図である。図21に示すように、メモリリクエスト情報644は、カレントデータバッファ番号672とネクストデータバッファ番号673とパケット内リクエスト番号674とを含む。パケット内リクエスト番号674は、1パケットの転送サイズが送信側メモリアクセス単位よりも大きい場合にメモリリクエスト発行部230が複数回発行する、1パケット内のメモリ読出リクエストの順番を0オリジンで示す番号である。
【0093】
続けて、メモリリクエスト発行部230は、送信側パケットアドレス671に基づいて、メモリ103に送信側メモリアクセス境界アドレス371を含むメモリ読出リクエストを出力する。同時に、メモリリクエスト発行部230は、メモリリクエスト情報644を、要素番号付与部290に出力する。
【0094】
メモリ103は、受け取ったメモリ読み出しリクエストに応答して、メモリ読出リクエストで指定されたアドレスに基づいて読み出した、送信側メモリアクセス単位の転送データをデータ転送制御装置200の要素番号付与部290に出力する。
【0095】
要素番号付与部290は、メモリ103から受け取った転送データから送信側メモリアクセス単位データを生成し、要素番号補正部240に出力する。図22は、送信側メモリアクセス単位データ645の例を示す図である。図22に示すように、送信側メモリアクセス単位データ645は、要素番号686及び対応する要素データ640の複数の組とカレントデータバッファ番号672とネクストデータバッファ番号673とパケット内リクエスト番号674とを含む。
【0096】
要素番号付与部290は、メモリ103から送信された送信側メモリアクセス単位の転送データを受信し、例えば以下のように、送信側メモリアクセス単位データ645を生成する。最初に、要素番号付与部290は、受け取った転送データに含まれる要素データ640に、メモリ103に格納されていた際のアドレスの若い順に、0オリジンで要素番号686を付与する。次に、要素番号付与部290は、付与した要素番号686と対応する要素データ640とを組にして並べ、更に、カレントデータバッファ番号672とネクストデータバッファ番号673とパケット内リクエスト番号674とを付加する。
【0097】
尚、要素番号付与部290は、メモリ103に含まれてもよい。
【0098】
要素番号補正部240は、データバッファ格納データを生成し、パケットデータ整列部250に出力する。
【0099】
図23は、データバッファ格納データ647の例を示す図である。図23を参照すると、データバッファ格納データ647は、格納バッファ番号649と格納要素番号688と要素データ640との組を複数含む。
【0100】
要素番号補正部240は、要素番号付与部290から受け取った送信側メモリアクセス単位データ645と、補正情報生成部280から受け取った補正情報675とに基づいて、以下のように、データバッファ格納データ647を生成する。最初にデータバッファ格納データ647は、パケット内リクエスト番号674と補正情報675とに基づいて、要素番号686を補正して格納要素番号688を算出する。続けて、要素番号補正部240は、カレントデータバッファ番号672とネクストデータバッファ番号673と格納要素番号688とに基づいて、要素データ640それぞれを格納するデータバッファの格納バッファ番号649を決定する。続けて、要素番号補正部240は、各要素データ640に格納要素番号688及び格納バッファ番号649を付加する。
【0101】
要素番号補正部240は、例えば、送信側メモリアクセス単位に含まれる要素データそれぞれに対応するデータバッファ格納要素番号演算回路を含み、各要素データに対応する格納要素番号688を並列に算出するようにしてもよい。
【0102】
パケットデータ整列部250は、データバッファ251〜254を含む。データバッファ251〜254それぞれは、「0」〜「4」のデータバッファ番号641を有する。
【0103】
パケットデータ整列部250は、受け取ったデータバッファ要求に応答して、未使用状態のデータバッファ251〜254の内のいずれかのデータバッファ番号641を出力する。また、パケットデータ整列部250は、データバッファ格納データ647を受信し、要素データ640毎に付加されている格納バッファ番号649と格納要素番号688とに基づいて、対応するデータバッファの対応する位置に要素データ640を格納する。
【0104】
転送パケット発行部260は、要素データの格納が完了したデータバッファのデータに、ヘッダ情報として受信側パケットアドレス642を付加し、転送パケットとして図12に示すノード間ネットワーク網120に送信する。そして、転送パケット発行部260は、送信処理を完了すると、データバッファを解放する。
【0105】
次に、本実施形態の動作について、図を参照して詳細に説明する。尚、本実施形態の動作の説明における前提は、第1の実施形態の動作の説明における前提と比べて、データバッファ251〜254がパケットデータ整列部250に含まれていることと、送信側メモリ370及び受信側メモリ380がメモリ103及びメモリ113にそれぞれ対応していることとである。
【0106】
図24は、本実施形態の動作を示すフローチャートである。
【0107】
まず、命令受信発行部210は、受け取ったデータ転送命令650に基づいて、パケット分割部220に送信側転送開始アドレス611と受信側転送開始アドレス612と総転送サイズ613とを、補正情報生成部280に送信側転送開始アドレス611と受信側転送開始アドレス612とを出力する(S502)。
【0108】
次に、パケット分割部220は、受け取った送信側転送開始アドレス611と受信側転送開始アドレス612と総転送サイズ613とに基づいて、送信側パケットアドレス671と受信側パケットアドレス642とを生成する(S504)。具体的には、パケット分割部220は、転送データが含まれる64バイト境界アドレスから、128バイト単位の送信側パケットアドレス671及び受信側パケットアドレス642を総転送サイズ分生成する。
【0109】
前述の前提に基づいて例を示すと、パケット分割部220は、送信側パケットアドレス671[A+64*n(n=0、2、4、6)]を生成し、受信側パケットアドレス642[B+64*n(n=0、2、4、6)]を生成する。
【0110】
次に、パケット分割部220は、パケットデータ整列部250からデータバッファ番号を取得する(S506)。尚、パケット分割部220は、S506を1回目に実行する場合は、カレントデータバッファ番号672用とネクストデータバッファ番号673用の2つのデータバッファ番号641を取得する。そして、パケット分割部220は、S506を2回目以降に実行する場合は、現在のネクストデータバッファ番号673を次のカレントデータバッファ番号672とし、次のネクストデータバッファ番号673用の1つのデータバッファ番号641を新たに取得する。
【0111】
ここで、カレントデータバッファとネクストデータバッファの2つのデータバッファ251〜254が必要な場合を具体的に説明する。
【0112】
図25は、メモリ103から読み出された転送データをデータバッファに格納する動作を示す図である。
【0113】
メモリ読出データ651〜654それぞれは、メモリ103(即ち、図4に示す送信側メモリ370)から、送信側パケットアドレス671に基づいて読み出された転送データである。
【0114】
転送パケットデータ661〜663は、メモリ113(即ち、図5に示す受信側メモリ380)へ書き込む単位で、データバッファ251〜254に格納された転送データである。
【0115】
図4と図5に示すように、送信側転送開始アドレス611[A+8]と受信側転送開始アドレス612[B+40]とは、メモリアクセス境界内の8バイト境界位置にずれがある。
【0116】
このような場合、パケットデータ整列部250は、例えば、メモリ読出データ652を転送パケットデータ661と転送パケットデータ662とに分割し、データバッファ251〜254に格納する。
【0117】
このため、パケット分割部220は、1パケット情報643にカレントデータバッファ番号672及びネクストデータバッファ番号673を含めて出力する。
【0118】
次に、パケット分割部220は、パケット単位のメモリアクセス情報である、1パケット情報643を生成し、メモリリクエスト発行部230に出力する(S508)。
【0119】
続けて、パケット分割部220は、受信側パケットアドレス642をパケットデータ整列部250に出力する(S510)。
【0120】
次に、補正情報生成部280は、送信側転送開始アドレス611と受信側転送開始アドレス612とに基づいて、補正情報675を算出し、要素番号補正部240に算出した補正情報675を出力する。(S512)。以下に、前述の前提に基づいて例を示す。
【0121】
図4に示すように送信側転送開始アドレス611は「A+8」であり、これを含む送信側メモリアクセス単位のメモリアクセス境界アドレス[A]との差分「8」の要素数は、「1」である。
【0122】
図5に示すように受信側転送開始アドレス612は「B+40」であり、これを含む受信側メモリアクセス単位のメモリアクセス境界アドレス[B]との差分「40」の要素数は、「5」である。従って、補正情報生成部280は、補正情報675[4(5−1=4)]を算出する。
【0123】
また、例えば、図26に示すように転送データが送信側メモリ370に格納され、図27に示すように転送データが受信側メモリ380に格納される場合、補正情報生成部280は、補正情報675を以下のよう算出する。但し、図26は、送信側メモリ370の一部の例を示す図である。また、図27は、受信側メモリ380の一部の例を示す図である。図26に示すように送信側転送開始アドレス611が「A+40」、図27に示すように受信側転送開始アドレス612が「B+8」の場合、補正情報生成部280は、補正情報675[−4(1−5=−4)]を算出する。
【0124】
次に、メモリリクエスト発行部230は、送信側メモリアクセス単位にメモリリクエスト情報644を生成して要素番号付与部290に出力し、メモリ103にメモリ読出リクエストを出力する(S514)。尚、前述の前提の場合、メモリリクエスト発行部230は、受け取った1パケット情報643に基づいて、メモリアクセス単位のメモリリクエスト情報644と対応するメモリ読出リクエストとの送信を、2回実行する。
【0125】
メモリ103は、受け取ったメモリ読出リクエストに応答して、メモリ読出リクエストで指定されたアドレスに基づいて読み出した、送信側メモリアクセス単位の転送データをデータ転送制御装置200に出力する(S516)。
【0126】
次に、要素番号付与部290は、送信側メモリアクセス単位データ645を生成し、要素番号補正部240に出力する(S518)。
【0127】
次に、要素番号補正部240は、データバッファ格納データ647を生成し、パケットデータ整列部250に出力する(S520)。
【0128】
以下に、前述の前提に基づいて、データバッファ格納データ647に含まれる、格納要素番号688の算出と格納バッファ番号649の決定とについて、以下に具体的な例を説明する。図28及び図29は、格納要素番号688の算出と格納バッファ番号649の決定との手順を示す図である。
【0129】
まず、要素番号補正部240は、受け取った送信側メモリアクセス単位データ645に含まれる要素番号686(j)とパケット内リクエスト番号674(h)とから、送信側パケットアドレス671で読み出された1パケット分要素番号687(k)を算出(k=j+h*8)する。具体的には、要素番号補正部240は、メモリ読出データ651の要素データそれぞれの1パケット分要素番号687として「0」〜「7」を算出し、メモリ読出データ652の要素データそれぞれの1パケット分要素番号687として「8」〜「15」を算出する。
【0130】
次に、要素番号補正部240は、1パケット分要素番号687を補正情報675で補正(k+m)し、格納要素番号688を算出する。具体的には、要素番号補正部240は、メモリ読出データ651の要素データそれぞれの格納要素番号688として「4」〜「11」を算出し、メモリ読出データ652の要素データそれぞれの格納要素番号688として「12」〜「19」を算出する。
【0131】
ここで、パケットサイズの最大は128バイトであるため、格納要素番号688の最大値は、「15」である。そこで、要素番号補正部240は、「16」〜「19」と算出した格納要素番号688を「0」〜「3」に変換する。
【0132】
こうして、要素番号補正部240は、格納要素番号688を算出する。
【0133】
次に、要素番号補正部240は、先頭の要素データ640から格納要素番号688が「15」の要素データ640までの格納バッファ番号649として、カレントデータバッファ番号672である「0」を決定する。同時に、要素番号補正部240は、格納要素番号688が「0」の要素データ640から最後の要素データ640までの格納バッファ番号649として、ネクストデータバッファ番号673である「1」を決定する。
【0134】
以下、要素番号補正部240は、次の1パケット情報643に対応するメモリ読出データ653以後についても同様に処理する。メモリ読出データ653に対応するカレントデータバッファ番号672は、メモリ読出データ651とメモリ読出データ652とに対応するネクストデータバッファ番号673と同一である。従って、メモリ読出データ653の格納要素番号688が「4」〜「11」の要素データ640は、メモリ読出データ652の格納要素番号688が「0」〜「3」の要素データ640に続けて、データバッファ番号641が「1」のデータバッファ252に格納される。
【0135】
パケットデータ整列部250は、データバッファ格納データ647を受け取り、要素データ640毎に付加されている格納バッファ番号649と格納要素番号688とに基づいて、対応するデータバッファに要素データ640を格納する。
【0136】
次に、転送パケット発行部260は、要素データの格納が完了したデータバッファのデータに、ヘッダ情報として受信側パケットアドレス642を付加し、転送パケットとしてノード間ネットワーク網120に送信する(S522)。尚、転送パケット発行部260は、送信処理を完了すると、データバッファを解放する。
【0137】
次に、パケット分割部220は、S504で生成した全ての送信側パケットアドレス671について、1パケット情報643を出力した(転送データ送信完了)か否かを確認する(S524)。送信を完了した場合(S524でYES)、処理は終了する。送信を完了していない場合(S524でNO)、処理は、S506へ進む。
【0138】
上述した本実施形態における効果は、第1の実施形態の効果に加えて、転送パケットを生成する時間を短縮することが可能になる点である。
【0139】
その理由は、要素番号付与部290が各要素データ640に要素番号686を付与し、要素番号補正部240が各要素番号686を並列に補正して格納要素番号688を算出し、パケットデータ整列部250が格納要素番号688に基づいて転送パケットを生成するようにしたからである。
【0140】
以下に、パケット交換網を介してデータ転送を行う装置において、例えば前述の実施形態1或いは実施形態2のように構成されていないために、転送するデータのメモリアクセス性能を低下させないようにするという課題が解決されていない場合について、具体的に説明する。前提条件は、前述の前提条件と同様である。
【0141】
図30は、課題が解決されていない記憶装置間のデータ転送において、生成される転送パケットを示す図である。
【0142】
図30に示すように、まず、送信側記憶装置(図示しない)は、送信側転送開始アドレス611に基づいて、送信側メモリ370からデータを読み出す。次に、送信側記憶装置は、第1転送パケットデータ〜第4転送パケットデータのように、その読み出したデータ単位で区切った転送パケットデータを生成する。
【0143】
次に、送信側記憶装置は、第1転送パケットデータ〜第4転送パケットデータそれぞれを含む第1転送パケット〜第4転送パケット(図示しない)を、パケット交換網(図示しない)を介して、受信側記憶装置(図示しない)へ転送する。
【0144】
図31は、受信側記憶装置における、転送パケットデータの受信側メモリ380への書き込みの動作を示す図である。
【0145】
受信側記憶装置は、受信側転送開始アドレス612に基づいて、例えば第1転送パケットのメモリ書き込みを3回(第1転送パケットのメモリ書き込み1〜3)実行し、例えば第2パケットのメモリ書き込みを3回(第2転送パケットのメモリ書き込み1〜3)実行する。また、例えば、第1転送パケットのメモリ書き込み3と第2転送パケットのメモリ書き込み1とは、同一メモリアクセス単位への書き込みを行うことになり、一方のメモリ書き込み中は他方のメモリ書き込みが待たされる。
【0146】
尚、例えば、受信側転送開始アドレスに基づいて、受信側記憶装置での書き込み回数を少なくなるような転送パケットを生成する場合、送信側記憶装置は同一アドレスに対して2回のメモリ読み出しを行う必要がある。その結果、送信側記憶装置側におけるメモリアクセス性能が低下する。
【0147】
上述のように、パケット交換網を介して記憶装置間のデータ転送を行う記憶装置において、例えば前述の実施形態1或いは実施形態2のように構成されていない場合、転送するデータのメモリアクセス性能を低下させないようにするという課題が解決されない。
【0148】
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されたり、一つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
【0149】
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
【0150】
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
【0151】
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
【0152】
尚、以上説明した各実施形態における各構成要素は、必要に応じ可能であれば、ハードウェアで実現されても良いし、ソフトウェアで実現されても良いし、ハードウェアとソフトウェアの混在により実現されても良い。
【0153】
また、各構成要素の物理的な構成は、以上の実施形態の記載に限定されることはなく、独立して存在しても良いし、組み合わされて存在しても良いしまたは分離して構成されても良い。
【符号の説明】
【0154】
100 通信ノード
101 リクエスタ
103 メモリ
104 転送データ
105〜108 転送パケット
110 通信ノード
112 受信側パケット転送制御部
113 メモリ
114 転送データ
115 転送パケット
120 ノード間ネットワーク網
200 データ転送制御装置
210 命令受信発行部
220 パケット分割部
230 メモリリクエスト発行部
240 要素番号補正部
250 パケットデータ整列部
251〜254 データバッファ
260 転送パケット発行部
280 補正情報生成部
290 要素番号付与部
300 データ転送制御装置
302 CPU
303 ディスク装置
304 記憶部
305 上位インタフェース部
306 ノード間ネットワークインタフェース部
330 転送命令実行部
350 転送パケット生成部
352 カレントデータバッファアドレス
353 カレントアドレス
354 カレントデータバッファ最大+1アドレス
355 最大対応受信側メモリアクセス境界アドレス
356 カレントデータバッファアドレス
357 リミットアドレス
370 送信側メモリ
371 送信側メモリアクセス境界アドレス
380 受信側メモリ
381 送信側メモリアクセス境界アドレス
610 データ転送命令
611 送信側転送開始アドレス
612 受信側転送開始アドレス
613 総転送サイズ
620 データ読出要求
621 読出アドレス
631 転送パケット
632 転送パケット
633 転送パケット
634 転送パケット
640 要素データ
641 データバッファ番号
642 受信側パケットアドレス
643 1パケット情報
644 メモリリクエスト情報
645 送信側メモリアクセス単位データ
647 データバッファ格納データ
649 格納バッファ番号
650 データ転送命令
651〜654 メモリ読出データ
661〜663 転送パケットデータ
671 送信側パケットアドレス
672 カレントデータバッファ番号
673 ネクストデータバッファ番号
674 パケット内リクエスト番号
675 補正情報
686 要素番号
687 1パケット分要素番号
688 格納要素番号

【特許請求の範囲】
【請求項1】
送信側転送開始アドレスと受信側転送開始アドレスとを少なくとも含むデータ転送命令に基づいて、送信側メモリアクセス単位で転送データを読み出すことを送信側メモリに要求する、データ読出要求を出力する転送命令実行部と、
前記送信側転送開始アドレスと前記受信側転送開始アドレスと受信側メモリアクセス単位と前記データを送信側から受信側へ転送する際の転送パケットサイズに基づいて、前記データ読出要求に応答して前記送信側メモリから出力された前記転送データを、前記受信側メモリアクセス単位の境界で分割して転送パケットを生成し、出力する転送パケット生成部と、を含む
データ転送制御装置。
【請求項2】
前記転送データに、前記送信側転送開始アドレスとなり得るアドレス境界の単位で区切られるデータを要素データとして、前記送信側メモリアクセス単位内での要素データ順を示す要素番号を各要素データに付与する要素番号付与部と、
前記送信側転送開始アドレスとこれを含む前記送信側メモリアクセス単位の境界アドレスとの差分に含まれる前記要素データの数と、前記受信側転送開始アドレスとこれを含む前記受信側メモリアクセス単位の境界アドレスとの差分に含まれる前記要素データの数との差分の数を補正情報として算出する補正情報生成部と、を更に含み、
前記転送パケット生成部は、前記補正情報に基づいて、前記要素番号を補正して格納要素番号に変換し、
前記格納要素番号に基づいて、前記転送データを前記転送パケットに格納するパケットデータ整列部とを含む
請求項1記載のデータ転送制御装置。
【請求項3】
前記要素番号付与部は、前記転送パケットサイズが前記送信側メモリアクセス単位のn(nは自然数)倍である場合に、前記送信側メモリから読み出された前記送信側メモリアクセス単位の前記転送データ毎に0からn−1のリクエスト番号を周期的に対応させて、各前記要素データに付与し、
前記要素番号補正部は、前記要素番号に前記リクエスト番号と前記送信側メモリアクセス単位に対応する前記要素データの数とを乗算した数を加算し、前記加算された要素番号を前記補正情報に基づいて補正して前記格納要素番号に変換する
請求項2記載のデータ転送制御装置。
【請求項4】
パケット交換網を介してデータ転送を行う装置が、
送信側転送開始アドレスと受信側転送開始アドレスとを少なくとも含むデータ転送命令に基づいて、送信側メモリアクセス単位で転送データを読み出すことを送信側メモリに要求する、データ読出要求を出力し、
前記送信側転送開始アドレスと前記受信側転送開始アドレスと受信側メモリアクセス単位と前記データを送信側から受信側へ転送する際の転送パケットサイズに基づいて、前記データ読出要求に応答して前記送信側メモリから出力された前記転送データを、前記受信側メモリアクセス単位の境界で分割して転送パケットを生成し、出力する
データ転送制御方法。
【請求項5】
パケット交換網を介してデータ転送を行う装置が、
前記転送データに、前記送信側転送開始アドレスとなり得るアドレス境界の単位で区切られるデータを要素データとして、前記送信側メモリアクセス単位内での要素データ順を示す要素番号を各要素データに付与し、
前記送信側転送開始アドレスとこれを含む前記送信側メモリアクセス単位の境界アドレスとの差分に含まれる前記要素データの数と、前記受信側転送開始アドレスとこれを含む前記受信側メモリアクセス単位の境界アドレスとの差分に含まれる前記要素データの数との差分の数を補正情報として算出し、
前記補正情報に基づいて、前記要素番号を補正して格納要素番号に変換し、
前記格納要素番号に基づいて、前記転送データを前記転送パケットに格納する
請求項4記載のデータ転送制御方法。
【請求項6】
パケット交換網を介してデータ転送を行う装置が、
前記転送パケットサイズが前記送信側メモリアクセス単位のn(nは自然数)倍である場合に、前記送信側メモリから読み出された前記送信側メモリアクセス単位の前記転送データ毎に0からn−1のリクエスト番号を周期的に対応させて、各前記要素データに付与し、
前記要素番号の補正は、前記要素番号に前記リクエスト番号と前記送信側メモリアクセス単位に対応する前記要素データの数とを乗算した数を加算し、前記加算された要素番号を前記補正情報に基づいて補正して前記格納要素番号に変換する
請求項5記載のデータ転送制御方法。
【請求項7】
送信側転送開始アドレスと受信側転送開始アドレスとを少なくとも含むデータ転送命令に基づいて、送信側メモリアクセス単位で転送データを読み出すことを送信側メモリに要求する、データ読出要求を出力し、
前記送信側転送開始アドレスと前記受信側転送開始アドレスと受信側メモリアクセス単位と前記データを送信側から受信側へ転送する際の転送パケットサイズに基づいて、前記データ読出要求に応答して前記送信側メモリから出力された前記転送データを、前記受信側メモリアクセス単位の境界で分割して転送パケットを生成し、出力する処理
をコンピュータに実行させるプログラム。
【請求項8】
前記転送データに、前記送信側転送開始アドレスとなり得るアドレス境界の単位で区切られるデータを要素データとして、前記送信側メモリアクセス単位内での要素データ順を示す要素番号を各要素データに付与し、
前記送信側転送開始アドレスとこれを含む前記送信側メモリアクセス単位の境界アドレスとの差分に含まれる前記要素データの数と、前記受信側転送開始アドレスとこれを含む前記受信側メモリアクセス単位の境界アドレスとの差分に含まれる前記要素データの数との差分の数を補正情報として算出し、
前記補正情報に基づいて、前記要素番号を補正して格納要素番号に変換し、
前記格納要素番号に基づいて、前記転送データを前記転送パケットに格納する処理
をコンピュータに実行させる請求項7記載のプログラム。
【請求項9】
前記転送パケットサイズが前記送信側メモリアクセス単位のn(nは自然数)倍である場合に、前記送信側メモリから読み出された前記送信側メモリアクセス単位の前記転送データ毎に0からn−1のリクエスト番号を周期的に対応させて、各前記要素データに付与し、
前記要素番号の補正は、前記要素番号に前記リクエスト番号と前記送信側メモリアクセス単位に対応する前記要素データの数とを乗算した数を加算し、前記加算された要素番号を前記補正情報に基づいて補正して前記格納要素番号に変換する処理
をコンピュータに実行させる請求項8記載のプログラム。
【請求項10】
請求項1乃至3のいずれかに記載のデータ転送制御装置を搭載した通信ノードを含む
データ転送システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate