JP5987560B2 - データ転送装置、データ転送方法およびデータ転送プログラム - Google Patents

データ転送装置、データ転送方法およびデータ転送プログラム Download PDF

Info

Publication number
JP5987560B2
JP5987560B2 JP2012191316A JP2012191316A JP5987560B2 JP 5987560 B2 JP5987560 B2 JP 5987560B2 JP 2012191316 A JP2012191316 A JP 2012191316A JP 2012191316 A JP2012191316 A JP 2012191316A JP 5987560 B2 JP5987560 B2 JP 5987560B2
Authority
JP
Japan
Prior art keywords
data
packet
address
received
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012191316A
Other languages
English (en)
Other versions
JP2014049936A (ja
Inventor
達彦 根岸
達彦 根岸
健二 白瀬
健二 白瀬
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012191316A priority Critical patent/JP5987560B2/ja
Priority to EP13179077.6A priority patent/EP2704023A3/en
Priority to US13/960,834 priority patent/US20140064300A1/en
Publication of JP2014049936A publication Critical patent/JP2014049936A/ja
Application granted granted Critical
Publication of JP5987560B2 publication Critical patent/JP5987560B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

本発明はデータの転送を制御する技術に関する。
転送元の装置から受信したパケットをバッファに格納したあと、バッファに格納されているパケットを受信した順序で転送先の装置に送信するデータ転送装置がある。このようなデータ転送装置では、バッファに空き領域ができるとバッファが受信可能なパケット数を転送元の装置に通知し、通知したバッファが受信可能なパケット数に応じたパケットを転送元の装置から受信するクレジット方式のフロー制御が行なわれる。
関連する技術として、送信側は、受信側が誤りなく受信したデータの順序番号を知らせる情報と、受信側が解放したバッファを占有していたデータの順序番号を知らせる情報とを受信側から受信する。また、送信側は、受信した情報を用いて、受信側が誤りなく受信したデータの占有している受信バッファ数を求める。そして、送信側は、受信バッファ数が上位しきい値を上回る場合は最大値を減らし、受信バッファ数が下位しきい値を下回る場合は最大値を増やすことにより、バッファの開放速度に見合った最大スループットを実現する技術が知られている。また、受信側の装置は、受信側の装置から初期クレジット値を送信した後、受信側で最初のパケットを受信するまでの時間Taを測定する。また、受信側の装置は、1パケット分の送信時間をTp、初期クレジットの値をCi、また通信時のクレジット値をCnとした時に、Ta+Tp×(Cn−1)<Tp×Ciを満足するクレジット値Cnを求める。そして、受信側の装置は、クレジット値Cnの最大値をパケット転送に使用することにより、接続の度に、通信相手との距離と通信速度とから最適なクレジット値を設定し、常に最大スループットでの通信を行う技術が知られている(例えば、特許文献1および特許文献2参照)。
特公平8−21969号公報 特開平9−205442号公報
前述した転送技術では、例えば、転送元の装置からパケットを受信した順序と、転送先の装置へ送信するパケットの順序が異なるとき、後に受信したパケットの送信を保留するのでデータ転送のスループットが低下することがある。
上述した問題に鑑み、本明細書で後述するデータ転送装置は、データの転送におけるスループットを向上させることを目的とする。
本明細書で開示するデータ転送装置のひとつに、受信パケット格納部と、クレジット制御部と、送信部とを備えたデータ転送装置がある。ここで、受信パケット格納部は、転送元の装置から受信したパケットを格納し、格納したパケットを受信した順序とは異なる順序で取り出すことができる。そして、クレジット制御部は、受信パケット格納部に格納されているパケットの中で、転送元の装置から最初に受信したパケットである最古パケットが取り出されたときであって、かつ、最古パケットよりも後に転送元の装置から受信したパケットである後続パケットの中で、最古パケットよりも先に受信パケット格納部から取り出された追抜パケットがあるとき、追抜パケットの中で、転送元の装置から受信した順序が最後である最新追抜パケットより先に受信した後続パケットが全て取り出された状態になると、受信パケット格納部が受信可能なデータの大きさを示すクレジット値の更新要求を出力する。送信部は、クレジット制御部から出力されたクレジット値の更新要求を転送元の装置に送信する。
本明細書で後述するデータ転送装置は、データ転送におけるスループットを向上させるという効果を奏する。
データ転送装置の一実施例を示す機能ブロック図である。 受信パケット格納部の一実施例を示す機能ブロック図である。 送信パケット格納部の一実施例を示す機能ブロック図である。 データ転送装置の一実施例を示すブロック図である。 データ転送の処理内容を示すフローチャートである。 アドレステーブルのデータ例を表したテーブルである。 最古データのアドレスを特定する処理内容を示すフローチャートである。 最古データのアドレスを特定する処理の説明図である。 クレジット値の更新の処理内容を示すフローチャートである。 クレジット値の更新判定を時系列に説明する説明図である。 クレジット値の更新判定をパターンごとに説明する説明図である。 最新追抜パケットの更新を時系列に説明する説明図である。 最新追抜パケットの更新をパターンごとに説明する説明図である。 データ転送時のアドレステーブルの格納値を示すテーブルである。 データ転送時のアドレステーブルの格納値を示すテーブルである。 データ転送時のアドレステーブルの格納値を示すテーブルである。 データ転送時のアドレステーブルの格納値を示すテーブルである。 データ転送時のアドレステーブルの格納値を示すテーブルである。 実施形態のデータ転送装置をPCIeに適用したときの機能ブロック図である。 実施形態のデータ転送装置をPCIeに適用したときのメモリライト時におけるデータ転送の処理内容を示すフローチャートである。 実施形態のデータ転送装置が奏する効果を説明する説明図である。 実施形態のデータ転送装置が奏する効果を説明する説明図である。
[実施形態]
実施形態のデータ転送装置について説明する。
データ転送装置は、転送元の装置から受信したパケットを転送先の装置へ転送する装置である。
実施形態のデータ転送装置は、格納したパケットを受信した順序とは異なる順序で取り出すことができる受信バッファ(以下、受信パケット格納部という。)を備える。そして、データ転送装置は、送信元の装置からパケットを受信し、受信したパケットを受信パケット格納部に格納する。また、データ転送装置は、転送先の装置から要求された順に受信パケット格納部からパケットを取り出し、転送先の装置に送信する。
データ転送装置は、受信パケット格納部に格納されているパケットの中で、転送元の装置から最初に受信したパケット(以下、最古パケットという。)が取り出されたか否かを判定する。データ転送装置は、最古パケットが受信パケット格納部から取り出されたと判定すると、受信可能な(格納可能な)データの大きさを伝えるために、新たに格納可能となったパケットの大きさに対応する値のクレジット更新値を転送元の装置に送信する。
上記のように、実施形態のデータ転送装置は、転送先の装置の要求に応じて、最古パケットよりも後に転送元の装置から受信した後続パケットの取り出しを、最古パケットを追い越して行なうことができるので、後続パケットの送信を保留しなくて良い。したがって、実施形態のデータ転送装置は、データ転送のスループットを向上することができる。
図1は、データ転送装置の一実施例を示す機能ブロック図である。
図1において、データ転送装置1は、受信部11、受信パケット格納部12、処理部13、送信パケット格納部14、クレジット制御部15、および送信部16を備えている。なお、データ転送装置2は、データ転送装置1と同じ機能を有している。以下の説明においては、データ転送装置1の機能を説明する。データ転送装置2の機能については、データ転送装置1と同じ機能の名称を統一し、説明を省略する。また、データ転送装置2を送信元の装置として説明する。転送先の装置については、図示しないが、処理部13に含まれる、処理部13に接続されているものとする。また、データ転送装置1は、例えば、PCIe(PCI Express)のルート・コンプレックスや、周辺装置(グラフィックカード、ディスク・ドライブおよび外部入出力カード)等に適用される。
受信部11は、データ転送装置2から処理部13へのデータ処理の要求(リクエスト)を含むパケットを受信する。
データ転送装置2から送信されるパケットには、例えば、転送先の装置が転送元の装置に対して何も応答を返さないポステッドパケット、および転送先の装置が転送元の装置に対して応答を返すノンポステッドパケットがある。
そして、ポステッドパケット、およびノンポステッドパケットには、それぞれヘッダーとデータとが含まれるパケット、およびヘッダーのみでデータがないパケットがある。
受信パケット格納部12は、データ転送装置2から受信したパケットを格納する。そして、受信パケット格納部12は、格納したパケットを受信した順序とは異なる順序で取り出すことができ、処理部13からのパケットの取出要求に応じて、格納しているパケットを出力する。また、受信パケット格納部12において、パケットに含まれるヘッダーを格納する記憶領域をヘッダー格納領域という。受信パケット格納部12において、パケットに含まれるデータを格納する記憶領域をデータ格納領域という。
そして、受信パケット格納部12は、例えば、データ転送装置2からポステッドパケットと、ノンポステッドパケットとを受信する。受信パケット格納部12は、ポステッドパケットのヘッダーとデータ、およびノンポステッドパケットのヘッダーとデータとをそれぞれ別々の領域に格納する。以下の説明では、説明の簡単化のため、データ転送装置1がデータ転送装置2からポステッドパケットまたは、ノンポステッドパケットのどちらか一方のみを受信するものとして説明する。また、ポステッドパケット、およびノンポステッドパケットのことを、特に断らない限り単にパケットという。なお、データ転送装置1がポステッドパケットやノンポステッドパケットのように、複数種類のパケットを受信する場合には、受信する種類のパケットごとにヘッダー格納領域とデータ格納領域とを設ければ良い。
処理部13は、受信パケット格納部12に格納されたパケットのヘッダーに含まれるデータ処理の要求にしたがいデータ処理をする。そして、処理部13は、1つのパケットに含まれるデータのデータ処理が終了し、終了したデータ処理に連続するデータ処理があるとき、受信パケット格納部12から次のデータ処理に必要なパケットを取り出す処理をする。このとき、処理部13は、受信パケット格納部12にパケットの取り出し要求を出力する。そして、受信パケット格納部12は、処理部13からのパケットの取り出し要求が入力された順番で、取り出し要求されたパケットを処理部13に出力するので、データ転送装置2から受信した順序と異なる順序でパケットを出力することがある。
一例として、処理部13は、書込み要求を含むヘッダーと、書込むデータとが含まれたポステッドパケットが受信パケット格納部12から入力されたとき、処理部13にホストバスを介して接続された、図示しないメモリ(転送先の装置)にデータを書込む処理をする。また、処理部13は、例えば、接続されたメモリから次に読み込むべきパケットの識別子を含むパケットを受信すると、受信パケット格納部12から識別子に対応するヘッダーとデータとを取り出す処理をする。そして、処理部13は、受信パケット格納部12から取り出したヘッダーとデータとを含むパケットを生成し、ホストバスを介してメモリに送信する。なお、次に読み込むパケットの識別子としては、例えば、パケットのアドレスや、ヘッダーに含まれるシーケンス番号などがある。また、受信パケット格納部12から識別子に対応するヘッダーとデータとを取り出す処理では、パケットのアドレスや、ヘッダーに含まれるシーケンス番号などを格納する、後述のアドレステーブルを参照し、ヘッダーとデータとを抽出して取り出す。
送信パケット格納部14は、パケット格納領域を有し、データ転送装置2に送信するパケットをパケット格納領域に格納する。そして、送信パケット格納部14は、パケット格納領域に格納したパケットを格納した順序で出力する。なお、パケットごとに優先度を設け、送信パケット格納部14は、パケット格納領域に格納したパケットを、優先度の高い順に出力しても良い。
また、送信パケット格納部14は、データ転送装置2の受信部21に格納されたパケットが取り出されたことにより、受信部21に新たに受信可能となった(取り出されたパケットの数に対応する)ヘッダーの数であるヘッダーのクレジット更新値を受信する。そして、送信パケット格納部14は、受信したヘッダーのクレジット更新値を積算(カウント)して、送信可能なヘッダーの大きさを示すクレジット値を算出する。なお、送信パケット格納部14は、データ転送装置2で受信可能であるヘッダーの数を示すヘッダーのクレジット更新値を受信し、受信したヘッダーのクレジット更新値をクレジット値としても良い。以下の説明において、ヘッダーのクレジット更新値は、受信部21に新たに受信可能となった(取り出されたパケットの数に対応する)ヘッダーの数とする。
また、送信パケット格納部14は、データ転送装置2の受信部21に格納されたパケットが取り出されたことにより、受信部21に新たに受信可能となった(取り出されたパケットに対応する)データの大きさに比例した値であるデータのクレジット更新値を受信する。そして、送信パケット格納部14は、受信したデータのクレジット更新値を積算(カウント)して、送信可能なデータの大きさを示すクレジット値を算出する。なお、送信パケット格納部14は、データ転送装置2で受信可能であるデータの大きさに比例した値を示すデータのクレジット更新値を受信し、受信したデータのクレジット更新値をクレジット値としても良い。以下の説明において、データのクレジット更新値は、受信部21に新たに受信可能となった(取り出されたパケットに対応する)データの大きさに比例した値とする。
送信パケット格納部14は、データのクレジット値が送信するパケットに含まれるデータの大きさ以上のデータを送信可能であることを示し、かつ、ヘッダーのクレジット値が1以上であるときパケットを出力する。
そして、送信パケット格納部14は、パケットを出力すると、ヘッダーのクレジット値をデクリメントする。また、送信パケット格納部14は、パケットを出力すると、データの大きさに比例した値をデータのクレジット値から減算する。
また、クレジット制御部15は、受信パケット格納部に格納されているパケットの中で、転送元の装置から最初に受信したパケットである最古パケットが取り出されたとき、転送元の装置にクレジット値の更新要求を出力する。
クレジット制御部15は、後続パケットの中で最古パケットよりも先に受信パケット格納部12から取り出されたパケット(以下、追抜パケットという。)があるか判定する。また、クレジット制御部15は、追抜パケットがあるとき、追抜パケットの中で、転送元の装置から受信した順序が最後であるパケット(以下、最新追抜パケットという。)を判定する。そして、クレジット制御部15は、最古パケットが受信パケット格納部12から取り出され、かつ、最新追抜パケットより先に受信した後続パケットが全て取り出された状態になると、クレジット値の更新要求を出力しても良い。
送信部16は、クレジット制御部15から出力されたクレジット値の更新要求をデータ転送装置2に送信する。また、送信部16は、クレジット制御部15から出力されたヘッダーのクレジット更新値とデータのクレジット更新値とをデータ転送装置2に送信する。さらに、送信部16は、送信パケット格納部14から出力されたパケットをデータ転送装置2に送信する。
図2は、受信パケット格納部の一実施例を示す機能ブロック図である。
図2を参照して、実施形態の受信パケット格納部12の機能をより詳細に説明する。
図2において、受信パケット格納部12は、パケット分割部201、ヘッダーカウント部202、ヘッダーアドレス設定部203、ヘッダー格納領域204、データカウント部205、データアドレス設定部206、データ格納領域207、アドレステーブル生成部208、アドレステーブル209、および通知部210を備えている。
パケット分割部201は、データ転送装置2から受信したパケットを受信するごとに、パケットをヘッダーと、データとに分割する。そして、パケット分割部201は、分割したヘッダーをヘッダーカウント部202に出力する。また、パケット分割部201は、分割したデータをデータカウント部205に出力する。
ヘッダーカウント部202は、パケット分割部201からヘッダーが入力されると、ヘッダー格納領域204において、ヘッダーを格納する記憶領域を指定するヘッダーアドレスの数と同じ値まで、入力されたヘッダーの大きさに比例した値をサイクリックにカウントする。
一例として、ヘッダーカウント部202は、ヘッダー格納領域204の大きさが128Byteであり、ヘッダーアドレスごとに割り振られている格納領域の大きさが8Byteであるとき、128Byte/8Byte=16までカウントすることができる。このとき、ヘッダー格納領域204に設定されたヘッダーアドレスの数は16である。
さらに、ヘッダーカウント部202は、ヘッダーの大きさが16Byteであるとき、ヘッダーが入力されるたびに、ヘッダー1つを記憶するのに必要な記憶領域に対応するヘッダーアドレスの数である16Byte/8Byte=2をカウント値に加算する。なお、このときヘッダー格納領域204の大きさが128Byteであるとき、最大のクレジット値は、128Byte/16Byte=8である。
そして、ヘッダーカウント部202は、ヘッダーが入力され、新たなカウント値(ヘッダーカウント値)がカウントされるごとに、ヘッダーカウント値をヘッダーアドレス設定部203に出力する。なお、ヘッダーカウント部202は、入力されたヘッダーもヘッダーアドレス設定部203に出力する。
ヘッダーアドレス設定部203は、ヘッダーカウント部202から入力されたヘッダーを格納する記憶領域を指定するヘッダーアドレスを設定する。
また、ヘッダーアドレス設定部203は、ヘッダーカウント部202から入力されたヘッダーカウント値を保持する。そして、ヘッダーアドレス設定部203は、ヘッダーカウント部202から入力されたヘッダーに対して設定するヘッダーアドレスを、データ転送装置2から前回パケットを受信したときにヘッダーカウント部202でカウントしたヘッダーカウント値にしても良い。これにより、ヘッダーアドレス設定部203は、他のヘッダーに上書きすることなく、入力されたヘッダーをヘッダー格納領域204に格納することができる。
また、ヘッダーアドレス設定部203は、設定したヘッダーアドレスとヘッダーとをヘッダー格納領域204に出力する。さらに、ヘッダーアドレス設定部203は、設定したヘッダーアドレスをアドレステーブル生成部208に出力する。
ヘッダー格納領域204は、データ転送装置2から受信したパケットに含まれるヘッダーを格納するための記憶領域である。そして、ヘッダー格納領域204は、ヘッダーアドレス設定部203からヘッダーとヘッダーアドレスが入力されると、入力されたヘッダーアドレスの指定する領域に、入力されたヘッダーを格納する。また、ヘッダー格納領域204は、処理部13からのパケットの取り出し要求に応じて、取り出し要求されたパケットに含まれるヘッダーを処理部13に出力する。
データカウント部205は、データ格納領域207に設定されたデータアドレスの数と同じ値に、最上位ビットとして1bitを付加し、データを格納する記憶領域を指定するデータアドレスの数の2倍の値までサイクリックに値をカウントする。そして、データカウント部205は、パケット分割部201からデータが入力されると、入力されたデータの大きさを、各データアドレスに割り当てられた記憶領域の大きさで除算し、カウント値に加算する。なお、データカウント部205は、入力されたデータの大きさを、各データアドレスに割り当てられた記憶領域の大きさで除算したとき、少数以下の値が算出されると、少数以下の値を切り捨てて、カウント値の1の位を繰り上げる。また、データカウント部205は、最上位ビットの付加をなくした簡易な構成としても良い。
一例として、データカウント部205は、例えば、データ格納領域207の大きさが16384Byteであり、データアドレスごとに割り振られている記憶領域の大きさが8Byteであるとき、2(最上位ビット)*16384Byte/8Byte=4096まで値をカウントする。このとき、パケットに含まれるデータを格納する領域として、受信パケット格納部12が有するデータ格納領域207のデータアドレスの数は2048である。
また、データカウント部205は、例えば、入力されたデータの大きさが2048Byteであり、データアドレスごとに割り振られている格納領域の大きさが8Byteであるとき、カウント値を2048Byte/8Byte=256加算する。なお、データカウント部205は、例えば、入力されたデータの大きさが2044Byteであるとき、2044Byte/8Byte=255.5であるが、データアドレスごとに格納領域は割り当てられているので、カウント値を256加算する。
データカウント部205は、例えば、データ格納領域の大きさが16384Byteであり、データアドレスごとに割り振られている格納領域の大きさが8Byteであるとき、カウント値が2048(=0)に達すると、最上位ビットの0と1とを切替える。そして、データカウント部205は、最上位ビットより下位のビットをサイクリックにカウントする。
また、データカウント部205は、データが入力され、新たなカウント値(以下、データカウント値という。)が算出されるごとに、データカウント値をデータアドレス設定部206に出力する。なお、データカウント部205は、入力されたデータもデータアドレス設定部206に出力する。
データアドレス設定部206は、データカウント部205から入力されたデータを格納する記憶領域を指定するデータアドレスを設定する。
また、データアドレス設定部206は、データカウント部205から入力されたデータカウント値を保持する。そして、データアドレス設定部206は、データカウント部205から入力されたデータに設定するデータアドレスを、データ転送装置2から前回パケットを受信したときにデータカウント部205でカウントした値から最上位ビットを除いた値に設定する。これにより、データアドレス設定部206は、他のデータに上書きすることなく、入力されたデータをデータ格納領域207に格納することができる。
また、データアドレス設定部206は、設定したデータアドレスとデータとをデータ格納領域207に出力する。さらに、データアドレス設定部206は、設定した最上位ビットとデータアドレスとをアドレステーブル生成部208に出力する。
データ格納領域207は、データ転送装置2から受信したパケットに含まれるデータを格納するための記憶領域である。そして、データ格納領域207は、データアドレス設定部206からデータとデータアドレスとが入力されると、入力されたデータアドレスの指定する領域に、入力されたデータを格納する。また、データ格納領域207は、処理部13からのパケットの取り出し要求に応じて、取り出し要求されたパケットに含まれるデータを処理部13に出力する。
アドレステーブル生成部208は、ヘッダーアドレス設定部203で設定されたヘッダーアドレスと、ヘッダーアドレスの指定する記憶領域に格納されたヘッダーを識別するヘッダー識別情報とを関連付けてアドレステーブル209に出力する。さらに、アドレステーブル生成部208は、データアドレス設定部206で設定された最上位ビットおよびデータアドレスと、データアドレスの指定する記憶領域に格納されたデータを識別するデータ識別情報とを関連付けてアドレステーブル209に出力する。なお、アドレステーブル生成部208は、ヘッダー識別情報として、例えば、ヘッダーを識別することができる名称情報等の情報をヘッダーから抽出すれば良い。また、アドレステーブル生成部208は、データ識別情報として、例えば、データを識別することができる名称情報等の情報をデータから抽出すれば良い。
また、アドレステーブル生成部208は、データアドレス設定部206から前回入力されたデータアドレスを、今回入力されたデータアドレスから減算し、得られた値に各データアドレスに割り当てた記憶領域の大きさを乗算する。これにより、アドレステーブル生成部208は、今回入力されたデータの大きさを算出する。そして、アドレステーブル生成部208は、今回入力されたデータの大きさを、アドレステーブル209に出力しても良い。
なお、アドレステーブル生成部208は、ヘッダーアドレス設定部203から前回入力されたヘッダーアドレスを、今回入力されたヘッダーアドレスから減算することにより、今回入力されたヘッダーの大きさを算出し、アドレステーブル209に出力しても良い。
アドレステーブル209は、アドレステーブル生成部208から入力された情報を格納する。また、アドレステーブル209は、データアドレスに対応する記憶領域に格納されたデータが取り出し済みであるか否かを示す情報(以下、有効性という。)を格納する。
アドレステーブル209は、例えば、パケットごとに、ヘッダーアドレス、ヘッダー識別情報、ヘッダーの大きさ、データアドレス、データ識別情報、データの大きさ、および有効性を関連付けた情報を格納する。なお、アドレステーブル209には、必要に応じて、ディレクトリエントリ(パケットの名前、格納日、格納時間、および属性など)やアロケーション情報(パケットの格納領域の使用状況など)などの他のデータを格納しても良い。
通知部210は、受信パケット格納部12からパケットが取り出されたとき、アドレステーブル209を参照して、取り出されたパケットに含まれるデータのデータアドレスをクレジット制御部15に通知する。
図3は、送信パケット格納部の一実施例を示す機能ブロック図である。
図3を参照して、実施形態の送信パケット格納部14の機能をより詳細に説明する。
図3において、送信パケット格納部14は、ヘッダークレジットカウント部301、データクレジットカウント部302および送信制御部303を備えている。以下の説明では、データ転送装置1とデータ転送装置2との間で、パケットの送受信をしているものとして説明する。このとき、データ転送装置1とデータ転送装置2とは、互いに送信元の装置、および送信先の装置の2つの役割を果たしている。
ヘッダークレジットカウント部301は、データ転送装置2から受信した、ヘッダーのクレジット更新値をカウントしてヘッダーのクレジット値を算出する。
また、ヘッダークレジットカウント部301は、データ転送装置2へパケットを送信すると、ヘッダーのクレジット値をデクリメントする。
データクレジットカウント部302は、データ転送装置2から受信した、データのクレジット更新値をカウントしてデータのクレジット値を算出する。
また、データクレジットカウント部302は、データ転送装置2へパケットを送信すると、パケットに含まれるデータの大きさに比例した値をデータのクレジット値から減算する。
送信制御部303は、データのクレジット値が送信するパケットに含まれるデータの大きさ以上のデータを送信可能であることを示し、かつ、ヘッダーのクレジット値が1以上であるとき、図示しないパケット格納領域からパケットを取り出す。そして、送信制御部303は、取り出したパケットを送信部16に出力し、送信部16を介して転送先の装置へパケットを送信する制御をする。
図4は、データ転送装置の一実施例を示すブロック図である。
図4において、データ転送装置1は、制御回路401、記憶装置402および通信インターフェイス403を備えている。なお、データ転送装置2は、データ転送装置1と同じ構成を有している。よって、以下の説明においては、データ転送装置1の構成を説明し、データ転送装置2の構成について説明を省略する。
制御回路401は、データ転送装置1全体の制御をする。そして、制御回路401は、例えば、CPU、マルチコアCPU、FPGA(Field Programmable Gate Array)およびPLD(Programmable Logic Device)などである。制御回路401は、図1において、処理部13、受信パケット格納部12の一部、送信パケット格納部14の一部およびクレジット制御部15として機能する。また、制御回路401は、図2において、パケット分割部201、ヘッダーカウント部202、ヘッダーアドレス設定部203、データカウント部205、データアドレス設定部206、アドレステーブル生成部208および通知部210として機能する。さらに、制御回路401は、図3において、ヘッダークレジットカウント部301、データクレジットカウント部302、および送信制御部303として機能する。
記憶装置402は、各種データを記憶する。そして、記憶装置402は、例えば、ROM(Read Only Memory)およびRAM(Random Access Memory)などのメモリや、HD(Hard Disk)などである。そして、ROMは、ブートプログラムなどのプログラムを記憶している。RAMは、制御回路401のワークエリアとして使用される。HDは、OS(Operating System)、アプリケーションプログラム、ファームウェアなどのプログラム、および各種データを記憶している。記憶装置402は、図2において、ヘッダー格納領域204、データ格納領域207、およびアドレステーブル209として機能する。なお、アドレステーブル209は、ヘッダー格納領域204またはデータ格納領域207の一部の領域に記憶されても良いし、記憶装置402の別の記憶領域に記憶されても良い。
また、記憶装置402は、制御回路401を処理部13、受信パケット格納部12の一部、送信パケット格納部14の一部、クレジット制御部15、パケット分割部201、ヘッダーカウント部202、ヘッダーアドレス設定部203、データカウント部205、データアドレス設定部206、アドレステーブル生成部208、通知部210、ヘッダークレジットカウント部301、データクレジットカウント部302、および送信制御部303として機能させるためのデータ転送プログラムを記憶する。そして、データ転送装置1がデータ転送を開始するとき、制御回路401は、記憶装置402に記憶されたデータ転送プログラムをRAMに読み出す。これにより、制御回路401は、RAMをワークスペースとして動作することにより、データ転送装置1全体の制御をする。なお、データ転送プログラムは、制御回路401が通信インターフェイス403を介してアクセス可能であれば、ネットワーク上のサーバに記憶されていても良いし、読取装置を介して各種記録媒体に記憶されていても良い。なお、記録媒体は、例えば、図示しない読取装置を介してバスに接続され、制御回路401が読取装置を制御することにより、データのリード/ライトが行なわれる。また、記録媒体は、例えば、FD(Floppy Disk)、CD(Compact Disc)、DVD(Digital Versatile Disk)、BD(Blu−ray Disk:登録商標)、およびフラッシュメモリなどである。
通信インターフェイス403は、バス、電力線通信、LAN(Local Area Network)、無線通信、またはインターネットなどのネットワークを介してデータ転送装置1と他の装置とを通信可能に接続する。そして、通信インターフェイス403は、図1において、受信部11、および送信部16として機能する。
図5は、データ転送の処理内容を示すフローチャートである。
図5は、データ転送装置1がデータ転送装置2から受信したパケットをヘッダーとデータとに分割して、それぞれを受信パケット格納部12のヘッダー格納領域204とデータ格納領域207とに格納するまでの処理内容を示している。
データ転送装置2からデータ転送装置1の処理部13に対するリクエストを有するパケットの送信要求があると、データ転送装置1は起動する(S501)。
データ転送装置1は、起動すると、データ転送装置2にヘッダーのクレジット値と、データのクレジット値とを含む、クレジット値の初期化信号を送信する(S502)。データ転送装置2は、クレジット値の初期化信号を受信すると、受信パケット格納部22(ヘッダークレジットカウント部301、およびデータクレジットカウント部302)に格納されている、ヘッダーのクレジット値と、データのクレジット値とをクレジット値の初期化信号に示される値に更新する。クレジット値の初期化信号に示される値とは、受信パケット格納部12が格納できるヘッダー数、およびデータの大きさに応じたクレジット値の最大値であっても良いし、適宜選択された値でも良い。
そして、データ転送装置2の送信制御部303は、データのクレジット値が送信するパケットに含まれるデータの大きさ以上のデータを送信可能であることを示し、かつ、ヘッダーのクレジット値が1以上であるとき、1パケットずつデータを転送する。これにより、データ転送装置1は、データ転送装置2から送信されるパケットの受信を開始する(S503)。
データ転送装置1のパケット分割部201は、パケットを受信すると、受信したパケットをヘッダーとデータとに分割する(S504)。
そして、ヘッダーアドレス設定部203は、ヘッダーアドレスを設定して分割したヘッダーをヘッダー格納領域204に格納する(S505)。
また、データアドレス設定部206は、データアドレスを設定して分割したデータをデータ格納領域207に格納する(S506)。
次に、データ転送装置1は、転送が終了したか否かを判定(S507)し、データ転送が継続すると判定(S507にてNo)すると、S503〜S507の処理を繰り返す。
S507において、データ転送装置1は、データ転送が終了したと判定(S507にてYes)すると、データ転送処理を終了する。なお、データ転送装置1は、例えば、データ転送装置2からのデータ信号の転送を終了することを示す転送終了信号を受信することにより、データ転送が終了したと判断しても良い。
図6は、アドレステーブルのデータ例を表したテーブルである。
図6において、アドレステーブル209は、ヘッダーアドレス、データ管理アドレス(最上位ビット、およびデータアドレス)、有効性、およびデータサイズを格納している。また、図示していないが、アドレステーブル209には、ヘッダー識別情報と、データ識別情報も格納されているものとする。なお、図6において、ヘッダーアドレスとデータアドレスとは、説明の簡単化のため、10進数で表している。また、以下の説明において、アドレスごとに割り振られている格納領域の大きさは、8Byteであるものとする。ヘッダーの大きさは、16Byteであるものとする。ヘッダー格納領域の大きさは、128Byteであるものとする。データ格納領域の大きさは、16384Byteであるものとする。
図6(a)において、ヘッダーアドレスは、1つのヘッダーを格納するのに8Byte×2アドレス=16byteの記憶領域を提供していることを示している。また、ヘッダーアドレスは、128Byte/8Byte=16が最大値である。よって、ヘッダー格納領域には、最大8つのヘッダーが格納可能であることを示している。
図6(a)において、データ管理アドレスは、最上位ビットとデータアドレスとを含む。データアドレスは、データ転送装置2から受信したパケットに含まれるデータを受信パケット格納部12に格納するごとに、使用したアドレス数を加算した値となっている。最上位ビットは、データアドレスが16384Byte/8Byte=2048になるごとに0と1とが切替えられる。そして、データアドレスは、0〜2047をサイクリックにカウントする。
有効性とは、対応するヘッダーアドレスに格納されているヘッダーと、対応するデータアドレスに格納されているデータ(以下、対応するパケットという。)とが取り出し済みであるか否かを示している。有効性が0のとき、対応するパケットは取り出し済みである。有効性が1のとき、対応するパケットは格納後取り出されていないことを示している。また、有効性が0のとき、受信パケット格納部12は、対応する記憶領域にパケットを上書きすることができるようにしても良い。
データサイズとは、対応するデータアドレスに格納されているデータの大きさを示している。
図6(b)は、図6(a)の状態から、ヘッダーアドレス6〜13に格納されているヘッダーと、データアドレス740〜1729に格納されているデータとが取り出された後のアドレステーブル209の値を示している。さらに、図6(b)は、図6(a)の状態から、ヘッダーアドレス0〜7に新しいヘッダーと、データアドレス2000〜926に新しいデータとが格納された後のアドレステーブル209の値を示している。以下説明では、簡単化のため、例えば、ヘッダーアドレス6〜13に格納されているヘッダーと、データアドレス740〜1729に格納されているデータとが取り出されたことを、ヘッダーアドレス6〜13に対応するパケットが取り出されたという。
図6(b)において、最上位ビットは、データアドレス2000〜170の間で切り替わっている。これは、ヘッダーアドレス0に対応するパケットのデータは、データ格納領域207の2000〜2047、0〜170に格納されていることを示す。
図7は、最古データのアドレスを特定する処理内容を示すフローチャートである。
図7は、クレジット制御部15が受信パケット格納部12に格納されているパケットの中から、最古パケットを判定するときの処理内容を示すフローチャートである。
クレジット制御部15は、データ転送が開始される、またはクレジット値の更新要求が出力されると、受信パケット格納部12にパケットが格納されているか否かを判定する(S701)。クレジット制御部15は、受信パケット格納部12にパケットが格納されるまで、S701を繰り返す(S701にてNo)。
そして、クレジット制御部15は、受信パケット格納部12にパケットが格納されているとき(S701にてYes)、格納されているデータの最上位ビット(MSB:Most Significant Bit)が1種類であるか否かを判定する(S702)。
クレジット制御部15は、最上位ビットが1種類のとき(S702にてYes)、最後に受信したパケットに含まれたデータである最新データを格納したアドレスの最上位ビットと、同じ最上位ビットを持つデータアドレス群を最古パケットの検索対象に選択する(S703)。そして、クレジット制御部15は、選択したデータアドレス群の中で最も小さいデータアドレスのデータを含むパケットを最古パケットと判定する(S705)。
クレジット制御部15は、最上位ビットが2種類のとき(S702にてNo)、最後に受信したパケットに含まれたデータである最新データのアドレスの最上位ビットと異なる最上位ビットを持つデータアドレス群を最古パケットの検索対象に選択する(S704)。その後、クレジット制御部15は、S705の処理を行なう。
図8は、最古データのアドレスを特定する処理の説明図である。
図8(a)、(b)は、受信パケット格納部12に格納されている最上位ビットが、全て同じ(1種類)であるときについて、クレジット制御部15が受信パケット格納部12に格納されているパケットの中から最古パケットを判定するときの処理の説明図である。
クレジット制御部15は、アドレステーブル209を参照して、最新パケットが含むデータの最上位ビットと同じ最上位ビットのデータアドレス群の中から、最も小さいデータアドレスを抽出する。そして、クレジット制御部15は、抽出した最も小さいデータアドレスのデータを含むパケットを最古パケットと判定する。
図8(c)、(d)は、受信パケット格納部12に格納されている最上位ビットが、0と1(2種類)であるときについて、クレジット制御部15が受信パケット格納部12に格納されているパケットの中から最古パケットを判定するときの処理の説明図である。
クレジット制御部15は、アドレステーブル209を参照して、最新パケットが含むデータの最上位ビットと異なる最上位ビットのデータアドレス群の中から、最も小さいデータアドレスを抽出する。そして、クレジット制御部15は、抽出した最も小さいデータアドレスのデータを含むパケットを最古パケットと判定する。
なお、クレジット制御部15は、受信パケット格納部12に格納されている最上位ビットが1種類か2種類かであるかの判定は、アドレステーブル209を参照することにより行なえば良い。
図9は、クレジット値の更新の処理内容を示すフローチャートである。
図9は、図7に示す処理において、クレジット制御部15が最古パケットを判定した後、最古パケットが取りだされたとき、クレジット値の更新要求を出力するまでの処理内容を示すフローチャートである。
クレジット制御部15は、受信パケット格納部12からパケットが取り出され、通知部210から取り出されたデータに関連付けられたデータ管理アドレスの最上位ビット(以下、取り出しパケットの最上位ビットという。)とデータアドレス(以下、取り出しパケットのアドレスという。)とが通知されたか否かを判定する(S901)。そして、通知部210から取り出しパケットの最上位ビットと取り出しパケットのアドレスとが通知されるまで、クレジット制御部15は、S901の処理を繰り返す(S901にてNo)。
また、通知部210から取り出しパケットの最上位ビットとアドレスとが通知されると、クレジット制御部15は、取り出しパケットの最上位ビットが、最古パケットに含まれたデータのデータ管理アドレスの最上位ビット(以下、最古パケットの最上位ビットという。)と同じであるか判定する(S902)。ここで、クレジット制御部15は、取り出しパケットの最上位ビットと、最古パケットの最上位ビットとが異なるとき、S901〜S902の処理を繰り返す(S902にてNo)。
クレジット制御部15は、取り出しパケットの最上位ビットと、最古パケットの最上位ビットが同じとき(S902にてYes)、取り出しパケットのアドレスが、最古パケットに含まれたデータのデータアドレス(以下、最古パケットのアドレス、または最古パケットのデータアドレスともいう。)と同じであるか判定する(S903)。ここで、クレジット制御部15は、取り出しパケットのアドレスと、最古パケットのアドレスとが異なるとき、S901〜S903の処理を繰り返す(S903にてNo)。
クレジット制御部15は、取り出しパケットのアドレスと、最古パケットのアドレスが同じとき(S903にてYes)、最新追抜パケットより前に受信した追抜きパケットが全て取り出し済みであるか否かを判定する(S904)。なお、クレジット制御部15は、最新追抜パケットがどのパケットであるかを判定し、その判定結果を用いてS904の処理を実行するが、その判定方法については図10を参照して後述する。
最新追抜パケットより前に受信した追抜きパケットが全て取り出し済みでないとき(S904にてNo)、最新追抜パケットよりも後に受信したパケットが取り出されたか否かを判定する(S905)。
S905において、最新追抜パケットよりも後に受信したパケットが取り出されていないとき(S905にてNo)、クレジット制御部15は、S904の処理を実行する。
S905において、最新追抜パケットよりも後に受信したパケットが取り出されているとき(S905にてYes)、クレジット制御部15は、最新追抜パケットを最新追抜パケットよりも後に受信したパケットに更新する(S906)。そして、クレジット制御部15は、S904の処理を実行する。
S904において、最新追抜パケットより前に受信した追抜きパケットが全て取り出し済みのとき、クレジット制御部15は、クレジット値の更新要求を出力する(S907)。これにより、送信部16を介してヘッダー、およびデータのクレジット更新値がデータ転送装置2に送信され、データ転送装置2のヘッダークレジットカウント部301、およびデータクレジットカウント部302でクレジット値がカウントされる。すなわち、データ転送装置2では、ヘッダー、およびデータのクレジット値が更新されることになる。
次に、データ転送装置1は、データ転送が終了したか否かを判定する(S908)。そして、データ転送装置1は、データ転送を継続すると判定すると(S908にてNo)、S701の処理を実行する。
また、データ転送装置1は、データ転送が終了したと判定(S908にてYes)すると、データ転送処理を終了する。
なお、データカウント部205において、最上位ビットをカウントしない場合には、S902の処理を省略する。
図10は、クレジット値の更新判定を時系列に説明する説明図である。
図10は、最古パケットの最上位ビットが0、最新パケットの最上位ビットが1のとき、クレジット制御部15がクレジット値の更新要求を出力するまでの処理を説明する説明図である。図10(a)〜(d)は、それぞれ、データ格納領域207に格納されているパケットを示す。図10において、受信順とは、データ転送装置2からパケットを受信した順序のことである。MSB=0とは、最上位ビット0に対応するパケットが含むデータのデータアドレス群に対応する。また、MSB=1とは、最上位ビット1に対応するパケットが含むデータのデータアドレス群に対応する。以下、図11〜図13においても同様であるものとする。なお、時間軸は、図10(a)→(b)→(c)→(d)の順である。
図10(a)において、クレジット制御部15は、最新パケットの最上位ビットと異なるデータアドレス群の中で最も小さいデータアドレスのデータを含むパケットを最古パケットと判定している。
図10(b)において、最古パケットが取り出されたとき(S901、S902、S903にてYes)、クレジット制御部15は、最新追抜パケットを判定する。クレジット制御部15は、例えば、最新パケットと同じ最上位ビットであり、かつ追抜きパケットの中で最も大きいデータアドレスに対応するパケット2を最新追抜パケットと判定する。そして、クレジット制御部15は、パケット1が取り出されるか否かを判定することになる(S904にてNo)。なお、最新パケットと最新パケットと同じ最上位ビットの追抜パケットが無いとき、クレジット制御部15は、追抜パケットの中で最も大きいデータアドレスに対応する追抜パケットを最新追抜パケットと判定する。クレジット制御部15の最新追抜パケットの判定は、以下の説明においても同じ方法であるものとする。
図10(c)において、パケット1が取り出され、図10(d)のように、最新追抜パケットより前に受信した追抜きパケットが全て取り出し済みのとき、クレジット制御部15は、クレジット値の更新要求を出力する(S901〜S904がYes)。そして、図10(c)において、パケット1が取り出されたことにより、最古パケットがパケット3となっているので、図10(d)のように、クレジット制御部15は、パケット3を最古パケットと判定する(S701〜S705)。
なお、図10において、取り出されたパケットが空白になっているが、実際の記憶領域には、パケットを保持したままとし、アドレステーブル209の有効性を0にした状態でも良い。
図11は、クレジット値の更新判定をパターンごとに説明する説明図である。
図11(a)は、最古パケットの最上位ビットが0、最新パケットの最上位ビットが0のとき、クレジット制御部15がクレジット値の更新要求を出力するときに、取り出し済みのパケットを示す図である。図11(b)は、最古パケットの最上位ビットが1、最新パケットの最上位ビットが1のとき、クレジット制御部15がクレジット値の更新要求を出力するときに、取り出し済みのパケットを示す図である。図11(c)は、最古パケットの最上位ビットが0、最新パケットの最上位ビットが1のとき、クレジット制御部15がクレジット値の更新要求を出力するときに、取り出し済みのパケットを示す図である。図11(d)は、最古パケットの最上位ビットが1、最新パケットの最上位ビットが0のとき、クレジット制御部15がクレジット値の更新要求を出力するときに、取り出し済みのパケットを示す図である。
図11(a)〜(d)に示すように、クレジット制御部15は、最古パケットと最新追抜パケットと、最古パケットと最新追抜パケットとの間に受信したパケットが全て取り出されたとき、クレジット値の更新要求を出力する。
図12は、最新追抜パケットの更新を時系列に説明する説明図である。
図12は、最古パケットの最上位ビットが0、最新パケットの最上位ビットが0のとき、クレジット制御部15が最新追抜パケットを更新する処理を説明する説明図である。
図12(a)において、クレジット制御部15は、通知部210からパケット1が取り出されたことが通知されると、最新追抜パケットをパケット1であると判定する。
図12(b)において、クレジット制御部15は、通知部210からパケット0が取り出されたことが通知されると、パケット0の方がパケット1よりも先に受信したパケットであるので最新追抜パケットをパケット1に維持する。
図12(c)において、パケット3が取り出されて、図12(d)のようになると、パケット3の方がパケット1よりも後に受信したパケットであるので、最新追抜パケットをパケット3に更新する。
なお、図12において、取り出されたパケットが空白になっているが、実際の記憶領域には、パケットを保持したままとし、アドレステーブル209の有効性を0にした状態でも良い。
図13は、最新追抜パケットの更新をパターンごとに説明する説明図である。
図13(a)は、最古パケットの最上位ビットが0、最新パケットの最上位ビットが0のときについて、クレジット制御部15の最新追抜パケットの更新を説明する説明図である。図13(b)は、最古パケットの最上位ビットが1、最新パケットの最上位ビットが1のときについて、クレジット制御部15の最新追抜パケットの更新を説明する説明図である。図13(c)は、最古パケットの最上位ビットが0、最新パケットの最上位ビットが1のときについて、クレジット制御部15の最新追抜パケットの更新を説明する説明図である。図13(d)は、最古パケットの最上位ビットが1、最新パケットの最上位ビットが0のときについて、クレジット制御部15の最新追抜パケットの更新を説明する説明図である。
図13(a)〜(d)に示す右矢印は、パケットが取り出されたことを示す。
図13(a)〜(d)に示すように、クレジット制御部15は、最新追抜パケットよりも後に受信したパケット2、または3が受信パケット格納部12から取り出されたとき、取り出されたパケット2、または3を最新追抜パケットとする。なお、パケット2が取り出されたとき、クレジット制御部15は、パケット2を最新追抜パケットに設定する。次に、パケット3が取り出されたとき、クレジット制御部15は、パケット2よりもパケット3の方が転送元の装置から後に受信されたパケットであるので、パケット3を最新追抜パケットに設定する。
図14〜18は、データ転送時のアドレステーブルの格納値を示すテーブルである。
図14〜18を参照し、図9の処理の一実施例を説明する。なお、図14〜図17は、一連の処理におけるアドレステーブル209の格納値を示している。
図14(a)において、最古パケットのデータアドレスは、1730である。そして、最古パケットに含まれるヘッダーのヘッダーアドレス(以下、最古パケットのヘッダーアドレスという。)は、14である。
一例として、クレジット制御部15による最古パケットのデータアドレス、および最古パケットのヘッダーアドレスの判定を説明する。クレジット制御部15は、図14(a)のアドレステーブル209を参照して、有効性1に関連付けられたデーアアドレスを抽出する。さらに、クレジット制御部15は、抽出したデータアドレスと関連付けられた最上位ビットが2種類有るので、最新パケットの最上位ビットと異なる最上位ビットと関連付けられたデータアドレスを抽出する。そして、クレジット制御部15は、抽出したデータアドレスの中で一番小さいデータアドレスに該当する1730を最古パケットのデータアドレスと判定する。さらに、クレジット制御部15は、データアドレス1730に関連付けられたヘッダーアドレスを参照し、最古パケットのヘッダーアドレスを14と判定する。
図14(a)において、クレジット制御部15は、クレジット値の更新要求を出力した直後であり、データ転送装置2にヘッダーのクレジット値として3、データのクレジット値として804が格納されているものとする。なお、ヘッダーのクレジット値は、一例として、クレジット値の更新要求時の有効性0の数と同じとしている。よって、図14(a)のとき、ヘッダーのクレジット値は、3である。
また、データのクレジット値は、一例として、データ格納領域207の未使用の記憶領域に対応するデータアドレスの数に対応している。よって、図14(a)のとき、データのクレジット値は、1730−(670+256)=804である。以下、ヘッダーのクレジット値と、データのクレジット値とは、クレジット制御部15により同様に算出されているものとする。
図14(b)において、ヘッダーアドレス4に格納されたヘッダーを含むパケットが取り出されると、アドレステーブル生成部208は、アドレステーブル209におけるヘッダーアドレス4に対応する有効性を0とする。
図15(a)において、パケットを受信すると、ヘッダーアドレス設定部203は、パケットに含まれるヘッダーをヘッダーアドレス8の記憶領域に格納する。
また、図15(a)において、データアドレス設定部206は、前回パケットに含まれた2048Byteのデータをデータアドレス670に格納したとき、今回パケットに含まれるデータを格納するデータアドレスを670+2048/8=926にする。そして、アドレステーブル生成部208は、アドレステーブル209におけるヘッダーアドレス8に対応する有効性を1とする。
図15(b)において、ヘッダーアドレス0に格納されたヘッダーを含むパケットが取り出されると、アドレステーブル生成部208は、アドレステーブル209におけるヘッダーアドレス0に対応する有効性を0とする。
図16(a)において、ヘッダーアドレス14に格納されたヘッダーを含むパケットが取り出されると、アドレステーブル生成部208は、アドレステーブル209におけるヘッダーアドレス14に対応する有効性を0とする。
図16(b)において、パケットを受信すると、ヘッダーアドレス設定部203は、パケットに含まれるヘッダーをヘッダーアドレス10の記憶領域に格納する。
また、図16(b)において、データアドレス設定部206は、前回パケットに含まれた2000Byteのデータをデータアドレス926に格納したとき、今回パケットに含まれるデータを格納するデータアドレスを926+2000/8=1176にする。そして、アドレステーブル生成部208は、アドレステーブル209におけるヘッダーアドレス10に対応する有効性を1とする。
図17において、ヘッダーアドレス2に格納されたヘッダーを含むパケットが取り出されると、アドレステーブル生成部208は、アドレステーブル209におけるヘッダーアドレス14に対応する有効性を0とする。そして、クレジット制御部15は、S902〜S904がYesと判定し、クレジット値の更新要求を出力する。
このとき、クレジット制御部15は、ヘッダー格納領域204で有効性が新たに0となった、ヘッダーアドレス14、15、0〜5に格納可能なアドレス数8に格納可能なヘッダーの数4を、ヘッダーのクレジット更新値としてデータ転送装置2へ送信する。
すなわち、クレジット制御部15は、クレジット値の更新要求として、最古パケットに含まれるヘッダーのヘッダーアドレスから、次にヘッダーが格納されているヘッダーアドレスまでに関連付けられたヘッダーの数をヘッダーのクレジット更新値とする。そして、クレジット制御部15は、ヘッダーのクレジット更新値をデータ転送装置2が有するヘッダークレジットカウント部301のヘッダーのクレジット値に加算させる要求を出力する。
また、クレジット制御部15は、データ格納領域207で有効性が新たに0となったデータアドレスに対応するデータアドレスである、1730〜2047、0〜669に対応するデータアドレス数をデータのクレジット更新値としてデータ転送装置2へ送信する。なお、クレジット制御部15は、(2047−1730+1)+(669−0+1)=988をデータのクレジット更新値とする。
すなわち、クレジット制御部15は、クレジット値の更新要求として、最古パケットに含まれるデータのデータアドレスから、次にデータが格納されているデータアドレスまでに指定される記憶領域の大きさに比例した値を、データのクレジット更新値とすれば良い。そして、クレジット制御部15は、データのクレジット更新値をデータ転送装置2が有するデータクレジットカウント部302のデータのクレジット値に加算させる要求を出力する。
これにより、送信部16を介してヘッダー、およびデータのクレジット更新値がデータ転送装置2に送信され、データ転送装置2のヘッダークレジットカウント部301、およびデータクレジットカウント部302でクレジット値がカウントされる。そして、データ転送装置2では、ヘッダーのクレジット値として5、データのクレジット値として1342を格納することになる。
図18(a)は、図16(b)の次に、ヘッダーアドレス8に格納されたヘッダーを含むパケットが取り出されたときを示している。この場合、アドレステーブル生成部208は、アドレステーブル209におけるヘッダーアドレス8に対応する有効性を0とする(S905にてYes)。
このとき、クレジット制御部15は、最新追抜パケットをヘッダーアドレス8に格納されるヘッダーを含むパケットに更新する(S906)。
そして、図18(b)において、ヘッダーアドレス2とヘッダーアドレス6とに格納されたヘッダーを含むパケットが取り出されると、アドレステーブル生成部208は、それぞれに対応する有効性を0とする。そして、クレジット制御部15は、S902〜S904がYesと判定し、クレジット値の更新要求を出力する。
このとき、クレジット制御部15は、ヘッダー格納領域204で有効性が新たに0となった、ヘッダーアドレス14、15、0〜9に格納可能なアドレス数12に格納可能なヘッダーの数6を、ヘッダーのクレジット更新値としてデータ転送装置2へ送信する。
また、クレジット制御部15は、データ格納領域207で有効性が新たに0となったデータアドレスに対応するデータアドレスである、1730〜2047、0〜1175に対応するデータアドレス数をデータのクレジット更新値としてデータ転送装置2へ送信する。なお、クレジット制御部15は、(2047−1730+1)+(1175−0+1)=1494をデータのクレジット更新値とする。
これにより、送信部16を介してヘッダー、およびデータのクレジット更新値がデータ転送装置2に送信され、データ転送装置2のヘッダークレジットカウント部301、およびデータクレジットカウント部302でクレジット値がカウントされる。そして、データ転送装置2では、ヘッダーのクレジット値として7、データのクレジット値として1848を格納することになる。
図19は、実施形態のデータ転送装置をPCIeに適用したときの機能ブロック図である。
図19は、図1のデータ転送装置1の処理部13が、アドレス変換部131、ホストバス送信部132、およびホストバス受信部133を備えるものである。また、ホストバス送信部132と、ホストバス受信部133は、例えば、ホストバス3を介してメモリ4に接続されているものとする。また、ホストバス3は、要求受信部31、応答送信部32を有する。そして、メモリ4は、アドレス変換テーブル33を有する。
また、図19において、データ転送装置1は、ルート・コンプレックスであるものとする。また、データ転送装置2は、エンドポイントであるものとする。
図19において、図1にはない機能について説明する。
アドレス変換部131は、仮想アドレスが入力されると、メモリ4上のアドレス変換テーブル33をフェッチする(読み込む)要求を、ホストバス送信部132を介してメモリ4に送信する。そして、メモリ4からの応答として取得したアドレス変換テーブル33のエントリを参照して、仮想アドレスを物理アドレスに変換する。さらに、受信パケット格納部12に格納されているデータをメモリ4上の対応する物理アドレスが指定する記憶領域に記憶する要求を、ホストバス送信部132を介して送信する。
ホストバス送信部132は、データ転送装置1から出力されるデータ処理の要求を含むパケットを、ホストバス3を介してメモリ4に送信する。
ホストバス受信部133は、ホストバス3を介して送信される、メモリ4からのデータ処理の要求を含むパケットに対する応答を受信する。
要求受信部31は、ホストバス送信部132から送信されたデータ処理の要求を含むパケットを受信して、メモリ4に転送する。
応答送信部32は、メモリ4から出力されたデータ処理の要求を含むパケットに対する応答をホストバス受信部133に転送する。
アドレス変換テーブル33は、仮想アドレスを物理アドレスに変換するための、仮想アドレスと物理アドレスとを対応させたテーブルである。
なお、要求受信部31と、応答送信部32として、実施形態のデータ転送装置を用いても良い。
図20は、実施形態のデータ転送装置をPCIeに適用したときのメモリライト時におけるデータ転送の処理内容を示すフローチャートである。
データ転送装置2から、データ転送装置1にメモリ4にデータを書き込みする要求するメモリライト要求パケットが送信される。データ転送装置1は、メモリライト要求パケットを受信する(S2001にてYes)と、パケット分割部201でヘッダーとデータとにパケットを分割して、それぞれをヘッダー格納領域204とデータ格納領域207に格納する(S2002)。なお、データ転送装置1は、メモリライト要求パケットを受信するまで、S2001の処理を繰り返す(S2001にてNo)。
受信パケット格納部12は、メモリライト要求パケットに含まれる仮想アドレスを含むアドレス変換要求をアドレス変換部131に出力する(S2003)。
そして、アドレス変換部からメモリ4上のアドレス変換テーブルを読み込むためのメモリリード要求を出力し(S2004)、ホストバス送信部132を介してホストバス3の要求受信部31にメモリリード要求を送信する(S2005)。
要求受信部31は、受信したメモリリード要求をメモリ4に転送する(S2006)。
応答送信部32は、アドレス変換テーブル33を読み込むためのメモリリード要求に対する応答として、アドレス変換テーブル33に格納されている仮想アドレスと物理アドレスとの対応関係を示すアドレス変換エンティティを含む応答(応答パケット)をメモリ4から受信する。そして、応答送信部32は、ホストバス3を介して、アドレス変換エンティティを含む応答をホストバス受信部133に送信する(S2007)。
ホストバス受信部133は、アドレス変換エンティティを含む応答をアドレス変換部131に転送する(S2008)。
アドレス変換部131は、入力されたアドレス変換エンティティの情報を解釈し、仮想アドレスを物理アドレスに変換し、受信パケット格納部12に通知する(S2009)。
処理部13は、受信パケット格納部12からメモリライト要求パケットのヘッダーとデータと物理アドレスとを抽出する。処理部13は、抽出したヘッダーとデータとを取り出し、物理アドレスを保持するメモリライト要求パケットを、ホストバス送信部132に出力する(S2010)。
そして、データ転送装置1は、S701〜S705、およびS901〜S908で説明した、最古データのアドレスを特定する処理とクレジット値を更新する処理とを行なう(S2011)。なお、最古パケットを特定する処理は、S2011の前に予め行なっていても良い。
ホストバス送信部132は、ホストバス3を介して要求受信部31にメモリライト要求パケットを送信する(S2012)。
要求受信部31が受信したメモリライト要求パケットをメモリ4に転送することで、メモリライト要求パケットに含まれるデータは、メモリ4上のメモリライト要求パケットに保持された物理アドレスに対応する記憶領域に書き込まれる(S2013)。
以上に説明したデータ転送装置1は、受信パケット格納部12からのパケットの取り出しの順序を、データ転送装置2からのパケットの受信順とは異なる順序で取り出せるようにした。すなわち、データ転送装置1は、先に受信したパケットを追い抜いて後に受信したパケットを転送先の装置に転送可能な構成を有する。
上記の構成により、図21に示すように、例えば、データ転送装置1は、データ転送装置2からパケット0、パケット1の順でパケットを受信したとする。さらに、データ転送装置1は、転送先の装置(処理部13)からパケット1の取り出し要求を、パケット0の取り出し要求よりも先に受信したとする。
このとき、図21に示すように従来技術のデータ転送装置では、常に受信順でパケットを処理部に取り出すので、パケット0を取り出した後にパケット1を取り出す。これに対して、実施形態のデータ転送装置1は、転送先の装置からのパケットの取り出し要求に応じて、パケット1を取り出した後にパケット0を取り出す。すなわち、実施形態のデータ転送装置1は、転送先の装置のデータ処理で必要なパケットを、必要なときに送信する。よって、実施形態のデータ転送装置1は、パケットの取り出しのレイテンシを改善させることができる。これにより、実施形態のデータ転送装置1は、転送先の装置のデータ処理において、必要なパケットの受信待ちに起因するデータ処理の保留時間を減少させ、転送先の装置から次のパケットの受信要求を受信するまでの時間を短くすることができる。したがって、実施形態のデータ転送装置1は、データ転送におけるスループットを向上させることができる。
また、以上に説明したデータ転送装置1は、データ格納領域207に一つのデータを格納する記憶領域を固定の大きさではなく、データの大きさに応じた大きさにする構成を有する。以下に、実施形態のデータ転送装置1の構成による効果を従来技術と比較して説明する。
図22に示すように、従来技術のデータ転送装置では、パケットに含まれるデータの大きさの最大値(MPS:Maximum Payload Size)と同じ大きさの記憶領域を用いて1つのデータを格納していた。この場合、データの大きさが最大値よりも小さい場合でも、データ格納領域207の記憶領域をデータの大きさの最大値と同じだけ使用する。しかし、実際には、パケットに含まれるデータの大きさは、最大値の半分程度であることが多く、データ格納領域207の資源を有効活用できていなかった。
これに対して、実施形態のデータ転送装置1は、受信したパケットに含まれるデータの大きさに応じて、使用するデータ格納領域207の記憶領域の大きさ(アドレス数)を設定するので、データ格納領域207の資源を有効活用することができる。これにより、実施形態のデータ転送装置1は、データ格納領域207を、ヘッダーのクレジット値×MPS/2程度としても、従来技術のデータ転送装置と同程度のデータを格納することができる。
また、実施形態のデータ転送装置1は、最古パケットが取り出されたときに、追抜パケットに対応するクレジット値も一括して更新するようにした。これにより、従来技術のように、1つのパケットを取り出すたびにクレジット値の更新をするのに比較して、実施形態のデータ転送装置1は、クレジット値の更新の回数が少なくなる。このため、実施形態のデータ転送装置1は、クレジット値の更新によるオーバーヘッドを従来技術のデータ転送装置と比較して少なくすることができる。よって、実施形態のデータ転送装置1は、データ転送におけるスループットを向上させることができる。
1、2 データ転送装置
3 ホストバス
11、21 受信部
12、22 受信パケット格納部
13、23 処理部
14、24 送信パケット格納部
15、25 クレジット制御部
16、26 送信部
31 要求受信部
32 応答送信部
33 アドレス変換テーブル
131 アドレス変換部
132 ホストバス送信部
133 ホストバス受信部
201 パケット分割部
202 ヘッダーカウント部
203 ヘッダーアドレス設定部
204 ヘッダー格納領域
205 データカウント部
206 データアドレス設定部
207 データ格納領域
208 アドレステーブル生成部
209 アドレステーブル
210 通知部
301 ヘッダークレジットカウント部
302 データクレジットカウント部
303 送信制御部
401、411 制御回路
402、412 記憶装置
403、413 通信インターフェイス

Claims (12)

  1. 転送元の装置から受信したパケットを格納し、該格納したパケットを受信した順序とは異なる順序で取り出すことができる受信パケット格納部と、
    前記受信パケット格納部に格納されているパケットの中で、前記転送元の装置から最初に受信したパケットである最古パケットが取り出されたときであって、かつ、前記最古パケットよりも後に前記転送元の装置から受信したパケットである後続パケットの中で、前記最古パケットよりも先に前記受信パケット格納部から取り出された追抜パケットがあるとき、前記追抜パケットの中で、前記転送元の装置から受信した順序が最後である最新追抜パケットより先に受信した後続パケットが全て取り出された状態になると、前記受信パケット格納部が受信可能なデータの大きさを示すクレジット値の更新要求を出力するクレジット制御部と、
    前記クレジット制御部から出力された前記クレジット値の更新要求を前記転送元の装置に送信する送信部と、
    を備えることを特徴とするデータ転送装置。
  2. 前記パケットに含まれるデータを格納する記憶領域として、前記受信パケット格納部が有するデータ格納領域において、前記データを格納する記憶領域を指定するデータアドレスを設定するデータアドレス設定部と、
    前記各パケットについて、前記データアドレス設定部で設定された、前記データアドレスと、前記データアドレスの指定する記憶領域に格納されたデータを識別するデータ識別情報とを関連付けて格納したアドレステーブルを生成するアドレステーブル生成部と、
    前記受信パケット格納部からパケットが取り出されたとき、前記アドレステーブルを参照して、該パケットに含まれるデータのデータアドレスを抽出し、該抽出したデータアドレスを前記クレジット制御部に通知する通知部と、
    を備え、
    前記クレジット制御部は、
    前記データ通知部からデータアドレスが通知されたとき、アドレステーブルを参照し、該通知されたデータアドレスが前記最古パケットに含まれたデータのデータアドレスと同じ場合、前記最古パケットが前記受信パケット格納部から取り出されたと判定する
    ことを特徴とする請求項に記載のデータ転送装置。
  3. 前記転送元の装置から前記パケットを受信するごとに、前記パケットに含まれるデータの大きさを前記各データアドレスに割り当てられた記憶領域の大きさで除算した値を、前記データ格納領域に設定された前記データアドレスの数と同じ値に、最上位ビットとして1bitを付加し、前記データアドレスの数の2倍の値までサイクリックにカウントするデータカウント部を備え、
    前記データアドレス設定部は、
    前記受信したパケットに含まれるデータのデータアドレスを、前記転送元の装置から前
    回パケットを受信したとき、前記データカウント部でカウントされた値から最上位ビットを除いた値に設定し、
    前記アドレステーブル生成部は、
    前記各パケットについて、前記最上位ビットと、前記データアドレスと、前記データ識別情報とを関連付けて格納したアドレステーブルを生成し、
    前記通知部は、
    前記受信パケット格納部からパケットが取り出されたとき、前記アドレステーブルを参照して、該パケットに含まれるデータの最上位ビットとデータアドレスとを抽出し、該抽出した最上位ビットとデータアドレスとを前記クレジット制御部に通知し、
    前記クレジット制御部は、
    前記受信パケット格納部に格納されている各データのデータアドレスと関連付けられた最上位ビットが1種類のとき、前記データアドレスが一番古いデータを含むパケットを最古パケットと判定し、
    前記受信パケット格納部に格納されている各データのデータアドレスと関連付けられた最上位ビットが2種類のとき、前記転送元の装置から最後に受信した最新パケットのデータアドレスに関連付けられた最上位ビットと異なる最上位ビットが関連付けられた前記データアドレスの中で、前記データアドレスが一番古いデータを含むパケットを最古パケットと判定し、
    前記データ通知部から最上位ビットとデータアドレスとが通知されたとき、アドレステーブルを参照し、該通知された最上位ビットとデータアドレスとが前記最古パケットに含まれたデータの最上位ビットとデータアドレスとに同じ場合、前記最古パケットが前記受信パケット格納部から取り出されたと判定する
    ことを特徴とする請求項に記載のデータ転送装置。
  4. 前記クレジット制御部は、
    前記クレジット値の更新要求として、前記最古パケットに含まれるデータのデータアドレスから、次にデータが格納されているデータアドレスまでに関連付けられた記憶領域の大きさに比例した値であるデータのクレジット更新値を、前記転送元の装置が有するデータのクレジット値に加算させる要求を出力する
    ことを特徴とする請求項またはに記載のデータ転送装置。
  5. 前記パケットに含まれるヘッダーを格納する記憶領域として、前記受信パケット格納部が有するヘッダー格納領域において、前記ヘッダーを格納する記憶領域を指定するヘッダーアドレスを設定するヘッダーアドレス設定部を備え、
    前記アドレステーブル生成部は、
    前記各パケットについて、前記ヘッダーアドレス設定部で設定された、前記ヘッダーアドレスと、前記ヘッダーアドレスの指定する記憶領域に格納されたヘッダーを識別するヘッダー識別情報と、前記データアドレス設定部で設定された、前記データアドレスと、前記データ識別情報とを関連付けて格納したアドレステーブルを生成する
    ことを特徴とする請求項のいずれか一つに記載のデータ転送装置。
  6. 前記転送元の装置から前記パケットを受信するごとに、前記ヘッダー格納領域に設定された前記ヘッダーアドレスの数と同じ値まで、前記受信したヘッダーの大きさに比例した値をサイクリックにカウントするヘッダーカウント部を備え、
    前記ヘッダーアドレス設定部は、
    前記受信したパケットに含まれるヘッダーのヘッダーアドレスを、前記転送元の装置から前回パケットを受信したとき、前記ヘッダーカウント部でカウントされた値に設定する
    ことを特徴とする請求項に記載のデータ転送装置。
  7. 前記クレジット制御部は、
    前記クレジット値の更新要求として、前記最古パケットに含まれるヘッダーのヘッダーアドレスから、次にヘッダーが格納されているヘッダーアドレスまでに関連付けられたヘッダーの数であるヘッダーのクレジット更新値を、前記転送元の装置が有するヘッダーのクレジット値に加算させる要求を出力する
    ことを特徴とする請求項またはに記載のデータ転送装置。
  8. パケットの取り出しが可能になった時に、前記アドレステーブルを参照し、前記取り出し要求されたパケットのヘッダーとデータとを抽出し、該抽出したヘッダーとデータとを含むパケットを生成し、前記転送先の装置に送信する処理部を備えることを特徴とする請求項のいずれか一つに記載のデータ転送装置。
  9. 転送先の装置へ送信するパケットを格納する送信パケット格納部と、
    前記転送先の装置から受信した、前記転送先の装置が受信可能なデータの大きさに比例した値であるデータのクレジット更新値をカウントしてデータのクレジット値を求めるデータクレジットカウント部と、
    前記転送先の装置から受信した、前記転送先の装置が受信可能なヘッダーの数であるヘッダーのクレジット更新値をカウントしてヘッダーのクレジット値を求めるヘッダークレジットカウント部と、
    前記データのクレジット値が前記送信するパケットに含まれるデータの大きさ以上のデータを送信可能であることを示し、かつ、前記ヘッダーのクレジット値が1以上であるとき、前記送信パケット格納部からパケットを取り出して、送信部に出力する送信制御部と、
    を備えることを特徴とする請求項1〜のいずれか一つに記載のデータ転送装置。
  10. 転送元の装置から受信したパケットを、該パケットを格納する受信パケット格納部に格納し、
    前記受信パケット格納部に格納したパケットを取り出し可能になった順序で取り出し、
    前記受信パケット格納部に格納されているパケットの中で、前記転送元の装置から最初に受信したパケットである最古パケットが取り出されたときであって、かつ、前記最古パケットよりも後に前記転送元の装置から受信したパケットである後続パケットの中で、前記最古パケットよりも先に前記受信パケット格納部から取り出された追抜パケットがあるとき、前記追抜パケットの中で、前記転送元の装置から受信した順序が最後である最新追抜パケットより先に受信した後続パケットが全て取り出された状態になると、前記受信パケット格納部が受信可能なデータの大きさを示すクレジット値の更新要求を出力する、
    ことを特徴とするデータ転送方法。
  11. 転送元の装置から受信したパケットを、該パケットを格納する受信パケット格納部に格納し、
    前記受信パケット格納部に格納したパケットを取り出し可能になった順序で取り出し、
    前記受信パケット格納部に格納されているパケットの中で、前記転送元の装置から最初に受信したパケットである最古パケットが取り出されたときであって、かつ、前記最古パケットよりも後に前記転送元の装置から受信したパケットである後続パケットの中で、前記最古パケットよりも先に前記受信パケット格納部から取り出された追抜パケットがあるとき、前記追抜パケットの中で、前記転送元の装置から受信した順序が最後である最新追抜パケットより先に受信した後続パケットが全て取り出された状態になると、前記受信格納部が受信可能なデータの大きさを示すクレジット値の更新要求を出力する、
    処理をコンピュータに実行させることを特徴とするデータ転送プログラム。
  12. 転送元の装置から受信したパケットを格納し、該格納したパケットを受信した順序とは異なる順序で取り出すことができる受信パケット格納部と、
    前記受信パケット格納部に格納されているパケットの中で、前記転送元の装置から最初に受信したパケットである最古パケットが取り出されたとき、前記受信パケット格納部が受信可能なデータの大きさを示すクレジット値の更新要求を出力するクレジット制御部と、
    前記クレジット制御部から出力された前記クレジット値の更新要求を前記転送元の装置に送信する送信部と、
    前記パケットに含まれるデータを格納する記憶領域として、前記受信パケット格納部が有するデータ格納領域において、前記データを格納する記憶領域を指定するデータアドレスを設定するデータアドレス設定部と、
    前記各パケットについて、前記データアドレス設定部で設定された、前記データアドレスと、前記データアドレスの指定する記憶領域に格納されたデータを識別するデータ識別情報とを関連付けて格納したアドレステーブルを生成するアドレステーブル生成部と、
    前記受信パケット格納部からパケットが取り出されたとき、前記アドレステーブルを参照して、該パケットに含まれるデータのデータアドレスを抽出し、該抽出したデータアドレスを前記クレジット制御部に通知する通知部と、
    前記転送元の装置から前記パケットを受信するごとに、前記パケットに含まれるデータの大きさを前記各データアドレスに割り当てられた記憶領域の大きさで除算した値を、前記データ格納領域に設定された前記データアドレスの数と同じ値に、最上位ビットとして1bitを付加し、前記データアドレスの数の2倍の値までサイクリックにカウントするデータカウント部と、
    を備え、
    前記データアドレス設定部は、
    前記受信したパケットに含まれるデータのデータアドレスを、前記転送元の装置から前
    回パケットを受信したとき、前記データカウント部でカウントされた値から最上位ビットを除いた値に設定し、
    前記アドレステーブル生成部は、
    前記各パケットについて、前記最上位ビットと、前記データアドレスと、前記データ識別情報とを関連付けて格納したアドレステーブルを生成し、
    前記通知部は、
    前記受信パケット格納部からパケットが取り出されたとき、前記アドレステーブルを参照して、該パケットに含まれるデータの最上位ビットとデータアドレスとを抽出し、該抽出した最上位ビットとデータアドレスとを前記クレジット制御部に通知し、
    前記クレジット制御部は、
    前記受信パケット格納部に格納されている各データのデータアドレスと関連付けられた最上位ビットが1種類のとき、前記データアドレスが一番古いデータを含むパケットを最古パケットと判定し、
    前記受信パケット格納部に格納されている各データのデータアドレスと関連付けられた最上位ビットが2種類のとき、前記転送元の装置から最後に受信した最新パケットのデータアドレスに関連付けられた最上位ビットと異なる最上位ビットが関連付けられた前記データアドレスの中で、前記データアドレスが一番古いデータを含むパケットを最古パケットと判定し、
    前記データ通知部から最上位ビットとデータアドレスとが通知されたとき、アドレステーブルを参照し、該通知された最上位ビットとデータアドレスとが前記最古パケットに含まれたデータの最上位ビットとデータアドレスとに同じ場合、前記最古パケットが前記受信パケット格納部から取り出されたと判定する
    ことを特徴とするデータ転送装置。
JP2012191316A 2012-08-31 2012-08-31 データ転送装置、データ転送方法およびデータ転送プログラム Active JP5987560B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012191316A JP5987560B2 (ja) 2012-08-31 2012-08-31 データ転送装置、データ転送方法およびデータ転送プログラム
EP13179077.6A EP2704023A3 (en) 2012-08-31 2013-08-02 Data transfer apparatus, data transfer method, and data transfer program
US13/960,834 US20140064300A1 (en) 2012-08-31 2013-08-07 Data transfer apparatus, data transfer method, and computer-readable recording medium storing data transfer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012191316A JP5987560B2 (ja) 2012-08-31 2012-08-31 データ転送装置、データ転送方法およびデータ転送プログラム

Publications (2)

Publication Number Publication Date
JP2014049936A JP2014049936A (ja) 2014-03-17
JP5987560B2 true JP5987560B2 (ja) 2016-09-07

Family

ID=48915907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012191316A Active JP5987560B2 (ja) 2012-08-31 2012-08-31 データ転送装置、データ転送方法およびデータ転送プログラム

Country Status (3)

Country Link
US (1) US20140064300A1 (ja)
EP (1) EP2704023A3 (ja)
JP (1) JP5987560B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501222B2 (en) * 2014-05-09 2016-11-22 Micron Technology, Inc. Protection zones in virtualized physical addresses for reconfigurable memory systems using a memory abstraction
JP5892348B1 (ja) * 2014-11-20 2016-03-23 パナソニックIpマネジメント株式会社 無線通信装置およびその制御方法
US20220413704A1 (en) * 2021-06-25 2022-12-29 Intel Corporation Dynamically scalable and partitioned copy engine

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0821969B2 (ja) 1988-09-13 1996-03-04 日本電気株式会社 伝送制御方法
JP2929991B2 (ja) 1996-01-29 1999-08-03 日本電気株式会社 最適化クレジット制御方法
US6032272A (en) * 1997-09-05 2000-02-29 Nokia Telecommunications, Oy Method and apparatus for performing packet based policing
US7342936B2 (en) * 2002-06-17 2008-03-11 Integrated Device Technology, Inc. Method of performing deficit round-robin scheduling and structure for implementing same
US6904507B2 (en) * 2002-09-30 2005-06-07 Agilent Technologies, Inc. Buffer management architecture and method for an infiniband subnetwork
JP3807372B2 (ja) * 2003-01-28 2006-08-09 日本電気株式会社 クレジットによるフロー制御システム及びその方法
US7894340B2 (en) * 2005-02-14 2011-02-22 France Telecom Method and a device for flow management in a packet-switched telecommunications network
US20070177498A1 (en) * 2006-02-01 2007-08-02 International Business Machines Corporation Method and apparatus for implementing speculative credit flow control
US7698478B2 (en) * 2006-09-19 2010-04-13 Apple Inc. Managed credit update
US7783823B2 (en) * 2007-07-31 2010-08-24 Hewlett-Packard Development Company, L.P. Hardware device data buffer
US8213308B2 (en) * 2008-09-11 2012-07-03 Juniper Networks, Inc. Methods and apparatus for defining a flow control signal related to a transmit queue
US8045472B2 (en) * 2008-12-29 2011-10-25 Apple Inc. Credit management when resource granularity is larger than credit granularity
JP5732806B2 (ja) * 2010-10-15 2015-06-10 富士通株式会社 データ転送装置及びデータ転送方法

Also Published As

Publication number Publication date
EP2704023A2 (en) 2014-03-05
JP2014049936A (ja) 2014-03-17
US20140064300A1 (en) 2014-03-06
EP2704023A3 (en) 2014-03-19

Similar Documents

Publication Publication Date Title
TWI684099B (zh) 剖析快取替代
EP3916536A1 (en) Data processing method and nvme storage device
JP6763984B2 (ja) インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法
JP3641675B2 (ja) 分割バッファアーキテクチュア
EP4220415A2 (en) Method and apparatus for compressing addresses
US9280290B2 (en) Method for steering DMA write requests to cache memory
KR100528967B1 (ko) 가변 길이의 패킷 저장을 위한 메모리 관리 장치 및 방법
EP1528478A1 (en) Generalized addressing scheme for remote direct memory access enabled devices
WO2016093895A1 (en) Generating and/or employing a descriptor associated with a memory translation table
WO2011004511A1 (ja) アドレス変換装置
JP7074839B2 (ja) パケット処理
CN105745640A (zh) 访问文件的方法、系统和主机
CN110457251B (zh) 一种多处理器间的数据通信方法及装置
JP5987560B2 (ja) データ転送装置、データ転送方法およびデータ転送プログラム
KR20150129808A (ko) 메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치
CN115858160B (zh) 远程直接内存访问虚拟化资源分配方法及装置、存储介质
WO2021062982A1 (zh) 管理hmb内存的方法、装置、计算机设备及存储介质
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
KR20170072645A (ko) 프로세서 및 프로세서에서 데이터를 처리하는 방법
CN106294191A (zh) 处理表的方法、访问表的方法和装置
CN105765542B (zh) 访问文件的方法、分布式存储系统和存储节点
WO2019095942A1 (zh) 一种数据传输方法及通信设备
WO2022028165A1 (zh) 缓存管理方法、终端以及存储介质
JP5772132B2 (ja) データ転送装置、データ転送方法および情報処理装置
CN112799978A (zh) 缓存设计管理方法、装置、设备和计算机可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160520

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160725

R150 Certificate of patent or registration of utility model

Ref document number: 5987560

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150