JP6905195B2 - データ転送装置、演算処理装置及びデータ転送方法 - Google Patents

データ転送装置、演算処理装置及びデータ転送方法 Download PDF

Info

Publication number
JP6905195B2
JP6905195B2 JP2017220674A JP2017220674A JP6905195B2 JP 6905195 B2 JP6905195 B2 JP 6905195B2 JP 2017220674 A JP2017220674 A JP 2017220674A JP 2017220674 A JP2017220674 A JP 2017220674A JP 6905195 B2 JP6905195 B2 JP 6905195B2
Authority
JP
Japan
Prior art keywords
request
read
transfer
packet
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017220674A
Other languages
English (en)
Other versions
JP2019091333A (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 JP2017220674A priority Critical patent/JP6905195B2/ja
Priority to US16/177,579 priority patent/US10956347B2/en
Publication of JP2019091333A publication Critical patent/JP2019091333A/ja
Application granted granted Critical
Publication of JP6905195B2 publication Critical patent/JP6905195B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Bus Control (AREA)

Description

本発明は、データ転送装置、演算処理装置及びデータ転送方法に関する。
複数バイトのバス幅のバスを介して、外部制御手段の制御に基づき転送元に格納された連続データを転送先にDMA(Direct Memory Access)転送する為の構成を備えたDMA転送制御装置が知られている(特許文献1参照)。転送パラメータ設定手段は、転送元に格納された連続データの転送元開始アドレス及び転送先の転送先開始アドレス、並びに連続データのデータサイズを外部制御手段からそれぞれ取得して設定する。データシフト手段は、この転送パラメータ設定手段に設定された転送元開始アドレスに基づき、転送元に格納された連続データをバス幅に対するアラインメント境界に合致するようデータシフトさせながら順次読み出して記憶する。そして、データシフト手段は、この記憶された連続データを転送パラメータ設定手段に設定された転送先開始アドレスに基づき、バス幅に対するアラインメント境界に合致するようデータシフトさせながら順次読み出して転送先に格納する。
また、アクセス単位が異なる二種類のメモリの間でデータ転送を行うデータ転送制御装置が知られている(特許文献2参照)。データ転送制御装置は、データの供給側メモリの任意のアドレスを開始アドレスとして順次に任意のデータ長のデータを読み出し、任意のデータ長のデータをデータの格納側メモリの任意のアドレスを開始アドレスとして順次に書き込む。
特開2006−4340号公報 特開平10−222460号公報
メモリには、メモリキャッシュに対応する読み出し単位ブロック毎に読み出しを行うメモリがある。その場合、読み出し単位ブロック内の一部のデータのみを読み出すことができない。そのため、メモリの読み出し効率が低下してしまう場合がある。
1つの側面では、本発明の目的は、メモリの読み出し効率を向上させることができるデータ転送装置、演算処理装置及びデータ転送方法を提供することである。
データ転送装置は、第1のメモリから第2のメモリにデータを転送するデータ転送装置であって、データ転送要求を第1の転送要求及び第2の転送要求を含む複数の転送要求に分割し、前記第1の転送要求に基づく読み出しデータの末尾アドレスが前記第1のメモリにおける前記第2の転送要求に基づく読み出しデータの先頭アドレスに隣接する場合、前記第1の転送要求に対して末尾隣接情報を設定するとともに、前記第2の転送要求に対して先頭隣接情報を設定する分割部と、前記第1の転送要求に前記末尾隣接情報が設定されている場合、前記第1の転送要求に基づく読み出し末尾アドレスに対応する第1の読み出し要求に対して第1の隣接情報を設定するとともに、前記第1の隣接情報が設定された前記第1の読み出し要求を出力する第1の要求出力部と、前記第2の転送要求に前記先頭隣接情報が設定されている場合、前記第2の転送要求に基づく読み出し先頭アドレスに対応する第2の読み出し要求に対して第2の隣接情報を設定するとともに、前記第2の隣接情報が設定された前記第2の読み出し要求を出力する第2の要求出力部と、前記第1の読み出し要求を入力し、前記第1の読み出し要求に前記第1の隣接情報が設定されている場合、前記第1の読み出し要求を前記第1のメモリに対して出力し、前記第1の読み出し要求に応答して前記第1のメモリから読み出された第1の読み出しデータを保持するとともに、前記第1の読み出しデータを前記第1の要求出力部に出力し、前記第2の読み出し要求を入力し、前記第2の読み出し要求に前記第2の隣接情報が設定されている場合、保持している前記第1の読み出しデータを前記第2の要求出力部に出力する第1のバッファ部とを有する。
1つの側面では、第1のメモリの読み出し効率を向上させることができる。
図1は、本実施形態による演算処理システムの構成例を示す図である。 図2は、基本技術によるネットワークコントローラの構成例を示す図である。 図3は、図2のネットワークコントローラのデータ転送方法を説明するための図である。 図4は、図2のネットワークコントローラの他のデータ転送方法を説明するための図である。 図5(A)は本実施形態によるネットワークコントローラの構成例を示す図であり、図5(B)はジョイントIDの構成例を示す図である。 図6(A)は第1のジョイントバッファの構成例を示す図であり、図6(B)は状態遷移図である。 図7は、本実施形態によるネットワークコントローラのデータ転送方法を説明するための図である。 図8は、本実施形態によるネットワークコントローラの他のデータ転送方法を説明するための図である。 図9は、コントロールマネージャの処理例を示すフローチャートである。 図10は、第1のパケットコントローラの処理例を示すフローチャートである。 図11は、第1のジョイントバッファの読み出し要求受信処理を示すフローチャートである。 図12は、第1のジョイントバッファの読み出し要求の応答受信処理を示すフローチャートである。 図13は、ネットワークコントローラの処理例を示すタイムチャートである。 図14は、ネットワークコントローラの他の処理例を示すタイムチャートである。
図1は、本実施形態による演算処理システム100の構成例を示す図である。演算処理システム100は、複数の中央演算処理装置(CPU:Central Processing Unit)101a〜101dと、複数のメモリ102a〜102dと、ネットワーク103とを有する。メモリ102aは、中央演算処理装置101aに接続される。メモリ102bは、中央演算処理装置101bに接続される。メモリ102cは、中央演算処理装置101cに接続される。メモリ102dは、中央演算処理装置101dに接続される。メモリ102a〜102dは、例えば、ランダムアクセスメモリ(RAM:Random Access Memory)である。メモリ102a〜102dの各々は、コア部111の数と同じである必要がない。中央演算処理装置101a〜101dは、相互に、ネットワーク103を介して接続される。
中央演算処理装置101a〜101dは、それぞれ、複数のコア部111と、制御部112と、ネットワークコントローラ113とを有する。複数のコア111の各々は、コア121及び1次キャッシュ122を有する。制御部112は、2次/3次キャッシュ131と、システムコントローラ132と、メモリアクセスコントローラ133とを有する。コア121は、演算処理を行う。中央演算処理装置101aの1次キャッシュ122は、メモリ102aの一部のデータを記憶する。中央演算処理装置101aの2次/3次キャッシュ131は、メモリ102aの一部のデータを記憶する。中央演算処理装置101aのシステムコントローラ132は、中央演算処理装置101aの全体を制御する。中央演算処理装置101aのメモリアクセスコントローラ133は、メモリ102aに対する読み出し及び書き込みを制御する。中央演算処理装置101b〜101dは、中央演算処理装置101aと同様の構成を有する。
ネットワークコントローラ113は、メモリ102a〜102d間のリモートダイレクトメモリアクセス(RDMA)のデータ転送を行うデータ転送装置である。RDMA転送は、メモリ102a〜102d間のデータ転送を高速に行うことができる。例えば、中央演算処理装置101aのネットワークコントローラ113は、メモリ102aからメモリ102b〜102dのいずれかへデータを転送することができる。
次に、中央演算処理装置101aのネットワークコントローラ113が、メモリ102aからメモリ102bへデータを転送する例を説明する。中央演算処理装置101aでは、コア121は、制御部112を介して、メモリ102aの命令領域にデータ転送要求(データ転送命令)を書き込み、ネットワークコントローラ113に対して起動信号を出力する。ネットワークコントローラ113は、起動信号を入力すると、制御部112を介して、メモリ102の命令領域からデータ転送要求を読み出す。また、コア121は、ネットワークコントローラ113に対して、直接、データ転送要求を出力してもよい。データ転送要求は、転送元のメモリ102aのアドレス、転送先の中央演算処理装置101bの識別子、転送先のメモリ102bのアドレス、及び転送データ長の情報を有する。ネットワークコントローラ113は、データ転送要求を基に、制御部112を介して転送元のメモリ102aからデータを読み出し、その読み出したデータを基に1個又は複数のパケット(書き込み要求を含む)を生成する。そして、ネットワークコントローラ113は、その1個又は複数のパケットを、ネットワーク103を介して転送先の中央演算処理装置101bに出力する。中央演算処理装置101bでは、ネットワークコントローラ113は、その1個又は複数のパケットを入力すると、その1個又は複数のパケットのペイロードを、制御部112を介して、メモリ102bに書き込む。
図2は、基本技術によるネットワークコントローラ113の構成例を示す図である。ネットワークコントローラ113は、コントロールマネージャ201と、第1のパケットコントローラ202aと、第1のパケットバッファ203aと、第2のパケットコントローラ202bと、第2のパケットバッファ203bと、第3のパケットコントローラ202cと、第3のパケットバッファ203cと、第4のパケットコントローラ202dと、第4のパケットバッファ203dと、セレクタ204a〜204dと、ダイレクトメモリアクセス(DMA)コントローラ205と、アービタ206と、パケットレシーバ207とを有する。
図3は、図2のネットワークコントローラ113のデータ転送方法を説明するための図である。転送元のメモリ102aは、読み出し単位ブロック(アクセス単位ブロック)301〜307の境界を示すアライン310を有する。読み出し単位ブロック301〜307のサイズは、それぞれ、キャッシュラインのサイズと同じである。中央演算処理装置101aは、キャッシュコヒーレンスの管理を効率的に行うために、メモリアクセスの粒度はキャッシュラインサイズのアライン310で制限される。例えば、キャッシュラインサイズが256バイトである場合、転送元のメモリ102aの読み出し単位ブロック301〜307は、それぞれ、256バイトとなる。転送元のメモリ102aは、読み出し単位ブロック301〜307毎に読み出しを行う。読み出し単位ブロック301内の一部のデータのみを読み出すことができない。
同様に、転送先のメモリ102bは、書き込み単位ブロック(アクセス単位ブロック)321〜327の境界を示すアライン320を有する。書き込み単位ブロック321〜327のサイズは、それぞれ、キャッシュラインのサイズと同じである。例えば、キャッシュラインサイズが256バイトである場合、書き込み単位ブロック321〜327は、それぞれ、256バイトとなる。転送先のメモリ102bは、書き込み単位ブロック321〜327毎に書き込みを行う。書き込み単位ブロック321内の一部のデータのみを書き込むことができない。
コントロールマネージャ201は、コア121が生成したデータ転送要求を入力する。データ転送要求は、転送元のメモリ102aのアドレス、転送先の中央演算処理装置101bの識別子、転送先のメモリ102bのアドレス、及び転送データ長の情報を有する。例えば、データ転送要求は、転送元のメモリ102aのペイロード(データ)311を転送先のメモリ102bに転送するための要求である。
コントロールマネージャ201は、データ転送要求を解析し、データ転送要求をパケット単位のパケットa〜gの7個のパケット転送要求に分割する。パケットa〜gの各々のペイロード長312は、それぞれ、転送先のメモリ102bの書き込み単位ブロック321の長さと同じである。ペイロード311は、ペイロード長312単位で分割される。コントロールマネージャ201は、パケットaのパケット転送要求を第1のパケットコントローラ202aに出力し、パケットbのパケット転送要求を第2のパケットコントローラ202bに出力し、パケットcのパケット転送要求を第3のパケットコントローラ202cに出力し、パケットdのパケット転送要求を第4のパケットコントローラ202dに出力する。そして、コントロールマネージャ201は、パケットeのパケット転送要求を第1のパケットコントローラ202aに出力し、パケットfのパケット転送要求を第2のパケットコントローラ202bに出力し、パケットgのパケット転送要求を第3のパケットコントローラ202cに出力する。
第1のパケットコントローラ202aは、パケットaのパケット転送要求を基に、DMAコントローラ205及び制御部112を介して、転送元のメモリ102aの読み出し単位ブロック301を読み出し、その後、転送元のメモリ102aの読み出し単位ブロック302を読み出す。次に、第1のパケットコントローラ202aは、読み出し単位ブロック301及び302を第1のパケットバッファ203aに書き込み、読み出し単位ブロック301の一部のデータと読み出し単位ブロック302の一部のデータを基にパケットaを生成する。次に、第1のパケットコントローラ202aは、セレクタ204aを介して、パケット送信要求信号をアービタ206に出力する。アービタ206は、第1〜第4のパケットコントローラ202a〜202dの複数のパケット送信要求信号が競合した場合、調停を行い、第1〜第4のパケットコントローラ202a〜202dのうちのいずれか1個に許可信号を出力する。第1のパケットコントローラ202aは、許可信号を入力すると、パケットa(書き込み要求を含む)をアービタ206及びネットワーク103を介して、転送先の中央演算処理装置101bに出力する。中央演算処理装置101bのパケットレシーバ207は、DMAコントローラ205及び制御部112を介して、パケットaのペイロードを転送先のメモリ102bの書き込み単位ブロック321として書き込む。
同様に、第2のパケットコントローラ202bは、パケットbのパケット転送要求を基に、DMAコントローラ205及び制御部112を介して、転送元のメモリ102aの読み出し単位ブロック302を読み出し、その後、転送元のメモリ102aの読み出し単位ブロック303を読み出す。次に、第2のパケットコントローラ202bは、読み出し単位ブロック302及び303を第2のパケットバッファ203bに書き込み、読み出し単位ブロック302の一部のデータと読み出し単位ブロック303の一部のデータを基にパケットbを生成する。次に、第2のパケットコントローラ202bは、セレクタ204bを介して、パケット送信要求信号をアービタ206に出力する。第2のパケットコントローラ202bは、アービタ206から許可信号を入力すると、パケットb(書き込み要求を含む)をアービタ206及びネットワーク103を介して、転送先の中央演算処理装置101bに出力する。中央演算処理装置101bのパケットレシーバ207は、DMAコントローラ205及び制御部112を介して、パケットbのペイロードを転送先のメモリ102bの書き込み単位ブロック322として書き込む。
同様に、第3のパケットコントローラ202cは、パケットcのパケット転送要求を基に、DMAコントローラ205及び制御部112を介して、転送元のメモリ102aの読み出し単位ブロック303を読み出し、その後、転送元のメモリ102aの読み出し単位ブロック304を読み出す。次に、第3のパケットコントローラ202cは、読み出し単位ブロック303及び304を第3のパケットバッファ203cに書き込み、読み出し単位ブロック303の一部のデータと読み出し単位ブロック304の一部のデータを基にパケットcを生成する。次に、第3のパケットコントローラ202cは、セレクタ204cを介して、パケット送信要求信号をアービタ206に出力する。第3のパケットコントローラ202cは、アービタ206から許可信号を入力すると、パケットc(書き込み要求を含む)をアービタ206及びネットワーク103を介して、転送先の中央演算処理装置101bに出力する。中央演算処理装置101bのパケットレシーバ207は、DMAコントローラ205及び制御部112を介して、パケットcのペイロードを転送先のメモリ102bの書き込み単位ブロック323として書き込む。
同様に、第4のパケットコントローラ202dは、パケットdのパケット転送要求を基に、DMAコントローラ205及び制御部112を介して、転送元のメモリ102aの読み出し単位ブロック304を読み出し、その後、転送元のメモリ102aの読み出し単位ブロック305を読み出す。次に、第4のパケットコントローラ202dは、読み出し単位ブロック304及び305を第4のパケットバッファ203dに書き込み、読み出し単位ブロック304の一部のデータと読み出し単位ブロック305の一部のデータを基にパケットdを生成する。次に、第4のパケットコントローラ202dは、セレクタ204dを介して、パケット送信要求信号をアービタ206に出力する。第4のパケットコントローラ202dは、アービタ206から許可信号を入力すると、パケットd(書き込み要求を含む)をアービタ206及びネットワーク103を介して、転送先の中央演算処理装置101bに出力する。中央演算処理装置101bのパケットレシーバ207は、DMAコントローラ205及び制御部112を介して、パケットdのペイロードを転送先のメモリ102bの書き込み単位ブロック324として書き込む。
同様に、第1のパケットコントローラ202aは、パケットeのパケット転送要求を基に、転送元のメモリ102aの読み出し単位ブロック305及び306を読み出し、パケットeを生成する。次に、第1のパケットコントローラ202aは、パケットe(書き込み要求を含む)を転送先の中央演算処理装置101bに出力する。中央演算処理装置101bのパケットレシーバ207は、パケットeのペイロードを転送先のメモリ102bの書き込み単位ブロック325として書き込む。
同様に、第2のパケットコントローラ202bは、パケットfのパケット転送要求を基に、転送元のメモリ102aの読み出し単位ブロック306及び307を読み出し、パケットfを生成する。次に、第2のパケットコントローラ202bは、パケットf(書き込み要求を含む)を転送先の中央演算処理装置101bに出力する。中央演算処理装置101bのパケットレシーバ207は、パケットfのペイロードを転送先のメモリ102bの書き込み単位ブロック326として書き込む。
同様に、第3のパケットコントローラ202cは、パケットgのパケット転送要求を基に、転送元のメモリ102aの読み出し単位ブロック307を読み出し、パケットgを生成する。次に、第3のパケットコントローラ202cは、パケットg(書き込み要求を含む)を転送先の中央演算処理装置101bに出力する。中央演算処理装置101bのパケットレシーバ207は、パケットgのペイロードを転送先のメモリ102bの書き込み単位ブロック327として書き込む。
上記のように、読み出し単位ブロック302〜307は、それぞれ、転送元のメモリ102aから2回ずつ読み出されている。そのため、メモリ102aのスループットが低下し、データ転送効率が低下する。
図4は、図2のネットワークコントローラ113の他のデータ転送方法を説明するための図である。図4は、図3に対して、各パケットのペイロード長412が異なる。図4の各パケットのペイロード長412は、図3の各パケットのペイロード長312と異なる。各パケットのペイロード長412は、最大転送可能ペイロード長(MTU)であり、例えば1792バイトである。ネットワークコントローラ113は、図3の場合と同様に、転送元のメモリ102aから転送先のメモリ102bにペイロード311を転送することができる。各パケットのペイロード長412を長くすることにより、パケットの数を減らすことができる。しかし、この場合も、読み出し単位ブロック302、303、306及び307は、それぞれ、転送元のメモリ102aから2回ずつ読み出され、データ転送効率が低下している。また、書き込み単位ブロック322、323、324及び327は、それぞれ、転送先のメモリ102bに2回ずつ書き込まれる。
次に、転送元のメモリ102aの読み出し効率の低下の例について説明する。例えば、ペイロード311は、2Mバイト(2097152バイト)である。読み出し単位ブロック301〜307の各々のサイズは、256バイトである。各パケットのペイロード長(MTU)412は、1792バイトである。この場合、2097152/1792≒1170.3である。したがって、2097152バイトのペイロード311は、(1792バイト×1170パケット+512バイト×1パケット)の1171パケットに分割される。2回読み出される読み出し単位ブロックの数は、例えば(パケット数−1)である。パケット数は1171パケットであるので、1171+1170回のメモリアクセスが必要になる。結果的に、2097152バイトのペイロード311を転送するため、2396672バイト(=2097152+1170×256バイト)を読み出している。メモリ102aの読み出し効率は、14%余分なデータを読み出していることになり、メモリアクセスのスループットが低下する。
図5(A)は、本実施形態によるネットワークコントローラ113の構成例を示す図である。図5(A)のネットワークコントローラ113は、図2のネットワークコントローラ113に対して、第1のジョイントバッファ501aと、第2のジョイントバッファ501bと、第3のジョイントバッファ501cと、第4のジョイントバッファ501dと、セレクタ502a〜502dと、セレクタ503a〜503dとを追加したものである。
セレクタ502aは、第1及び第2のジョイントバッファ501a及び501bが出力する読み出し要求を選択的にDMAコントローラ205に出力する。セレクタ502bは、第2及び第3のジョイントバッファ501b及び501cが出力する読み出し要求を選択的にDMAコントローラ205に出力する。セレクタ502cは、第3及び第4のジョイントバッファ501c及び501dが出力する読み出し要求を選択的にDMAコントローラ205に出力する。セレクタ502dは、第4及び第1のジョイントバッファ501d及び501aが出力する読み出し要求を選択的にDMAコントローラ205に出力する。
セレクタ503aは、第1及び第2のジョイントバッファ501a及び501bが出力する読み出し単位ブロックを選択的に第2のパケットバッファ203bに出力する。セレクタ503bは、第2及び第3のジョイントバッファ501b及び501cが出力する読み出し単位ブロックを選択的に第3のパケットバッファ203cに出力する。セレクタ503cは、第3及び第4のジョイントバッファ501c及び501dが出力する読み出し単位ブロックを選択的に第4のパケットバッファ203dに出力する。セレクタ503dは、第4及び第1のジョイントバッファ501d及び501aが出力する読み出し単位ブロックを選択的に第1のパケットバッファ203aに出力する。
図5(B)は、ジョイントID510の構成例を示す図である。コントロールマネージャ201は、第1〜第4のパケットコントローラ202a〜202dに各パケットに応じたジョイントID510を出力する。ジョイントID510は、先頭隣接フラグVF(F)と、先頭識別子ID(F)と、末尾隣接フラグVF(L)と、末尾識別子ID(L)とを有する。先頭隣接フラグVF(F)は先頭隣接情報であり、末尾隣接フラグVF(L)は末尾隣接情報である。
図6(A)は、第1のジョイントバッファ501aの構成例を示す図である。第2〜第4のジョイントバッファ501b〜501dも、第1のジョイントバッファ501aと同様の構成を有する。第1のジョイントバッファ501aは、セレクタSEL0〜SEL3と、記憶部601〜603と、バッファ604とを有する。記憶部601は、第1のジョイントバッファ501aの状態Joint_STATUSを記憶する。記憶部602は、識別子Joint_IDを記憶する。記憶部603は、隣接フラグ(隣接情報)Joint_Valid(0/1)を記憶する。バッファ604は、例えば256バイトの容量を有し、メモリ102aの読み出し単位ブロックを記憶する。
セレクタSEL0は、第1の制御信号に応じて、第1のパケットコントローラ202aからの読み出し要求をDMAコントローラ205に出力する。セレクタSEL1は、第2の制御信号に応じて、第2のパケットコントローラ202bからの読み出し要求をDMAコントローラ205に出力する。セレクタSEL2は、第3の制御信号に応じて、DMAコントローラ205又はバッファ604からの読み出し単位ブロックを第1のパケットバッファ203aに出力する。セレクタSEL3は、第4の制御信号に応じて、DMAコントローラ205又はバッファ604からの読み出し単位ブロックを第2のパケットバッファ203bに出力する。
図6(B)は、図6(A)の状態Joint_STATUSの状態遷移図である。状態Joint_STATUSは、IDLEと、DMA_WAITと、DMA_HOLDと、DMA_SENDとを有する。IDLEは、初期のアイドル状態である。DMA_WAITは、メモリ102aに対する読み出し要求の応答の待機状態である。DMA_HOLDは、バッファ604が読み出し単位ブロックを保持している状態である。DMA_SENDは、バッファ604に保持されている読み出し単位ブロックを送信可能な状態である。
図7は、本実施形態によるネットワークコントローラ113のデータ転送方法を説明するための図である。以下、図7が図3と異なる点を説明する。コントロールマネージャ201は、分割部であり、データ転送要求を解析し、データ転送要求をパケット単位のパケットa〜gの7個のパケット転送要求に分割する。パケットa〜gの各々のペイロード長312は、それぞれ、転送先のメモリ102bの書き込み単位ブロック321の長さと同じである。ペイロード311は、ペイロード長312単位で分割される。
コントロールマネージャ201は、パケットaのパケット転送要求に基づく読み出し末尾アドレスがメモリ102aの読み出し単位ブロック302内で次のパケットbのパケット転送要求に基づく読み出し先頭アドレスと隣接する場合、パケットaのパケット転送要求に対して末尾隣接フラグVF(L)及び第1の識別子ID(L)を設定し、パケットbのパケット転送要求に対して先頭隣接フラグVF(F)及び第1の識別子ID(F)を設定する。
同様に、コントロールマネージャ201は、パケットbのパケット転送要求に基づく読み出し末尾アドレスがメモリ102aの読み出し単位ブロック303内で次のパケットcのパケット転送要求に基づく読み出し先頭アドレスと隣接する場合、パケットbのパケット転送要求に対して末尾隣接フラグVF(L)及び第2の識別子ID(L)を設定し、パケットcのパケット転送要求に対して先頭隣接フラグVF(F)及び第2の識別子ID(F)を設定する。他のパケットも同様である。
パケットaのパケット転送要求は、先頭隣接フラグVF(F)が設定されず、末尾隣接フラグVF(L)が設定される。パケットb〜fのパケット転送要求は、先頭隣接フラグVF(F)及び末尾隣接フラグVF(L)が設定される。パケットgのパケット転送要求は、先頭隣接フラグVF(F)が設定され、末尾隣接フラグVF(L)が設定されない。
コントロールマネージャ201は、パケットaのパケット転送要求を第1のパケットコントローラ202aに出力し、パケットbのパケット転送要求を第2のパケットコントローラ202bに出力し、パケットcのパケット転送要求を第3のパケットコントローラ202cに出力し、パケットdのパケット転送要求を第4のパケットコントローラ202dに出力する。そして、コントロールマネージャ201は、パケットeのパケット転送要求を第1のパケットコントローラ202aに出力し、パケットfのパケット転送要求を第2のパケットコントローラ202bに出力し、パケットgのパケット転送要求を第3のパケットコントローラ202cに出力する。
第1のパケットコントローラ202aは、パケットaのパケット転送要求に先頭隣接フラグVF(F)が設定されていない場合、パケットaのパケット転送要求に基づく読み出し先頭アドレスを含むメモリ102aの読み出し単位ブロック301の第1の読み出し要求に対して先頭隣接フラグVF(F)を設定せず、読み出し要求を出力する。DMAコントローラ205は、読み出し要求に応答して、制御部112を介してメモリ102aから、先頭アドレスを含む読み出し単位ブロック301を読み出し、第1のパケットバッファ203aに出力する。
次に、第1のパケットコントローラ202aは、パケットaのパケット転送要求に末尾隣接フラグVF(L)及び第1の識別子ID(L)が設定されている場合、パケットaのパケット転送要求に基づく読み出し末尾アドレスを含むメモリ102aの読み出し単位ブロック302の読み出し要求に対して末尾隣接フラグVF(L)及び第1の識別子ID(L)を設定し、末尾隣接フラグVF(L)及び第1の識別子ID(L)が設定された読み出し要求を第1のジョイントバッファ501aに出力する。
第1のジョイントバッファ501aは、読み出し要求を入力し、読み出し要求に末尾隣接フラグVF(L)及び第1の識別子ID(L)が設定されている場合、記憶部603に隣接フラグJoint_Valid(0)として1を登録し、第1の識別子ID(L)を記憶部602に識別子Joint_IDとして登録し、読み出し要求をDMAコントローラ205に出力する。DMAコントローラ205は、読み出し要求に応答して、制御部112を介してメモリ102aから、末尾アドレスを含む読み出し単位ブロック302を読み出し、第1のジョイントバッファ501aに出力する。第1のジョイントバッファ501aは、末尾アドレスを含む読み出し単位ブロック302をバッファ604に保持すると共に、第1のパケットバッファ203aに出力する。
第1のパケットコントローラ202aは、第1のパケットバッファ203a内の先頭アドレスを含む読み出し単位ブロック301の一部と末尾アドレスを含む読み出し単位ブロック302の一部を基にパケットaを生成し、パケットaを転送先の中央演算処理装置101bのメモリ102bに出力する。中央演算処理装置101bは、パケットaのペイロードをメモリ102bの書き込み単位ブロック321として書き込む。
次に、第2のパケットコントローラ202bは、パケットbのパケット転送要求に先頭隣接フラグVF(F)及び第2の識別子ID(F)が設定されている場合、パケットbのパケット転送要求に基づく読み出し先頭アドレスを含むメモリ102aの読み出し単位ブロック302の読み出し要求に対して先頭隣接フラグVF(F)及び第1の識別子ID(F)を設定し、先頭隣接フラグVF(F)及び第1の識別子ID(F)が設定された読み出し要求を第1のジョイントバッファ501aに出力する。
第1のジョイントバッファ501aは、読み出し要求を入力し、読み出し要求に先頭隣接フラグVF(F)及び第1の識別子ID(F)が設定されており、記憶部603の隣接フラグJoint_Valid(0)に1が登録され、入力された第1の識別子ID(F)が記憶部602の識別子Joint_IDと一致する場合、バッファ604に保持されている読み出し単位ブロック302を第2のパケットバッファ203bに出力する。この際、第1のジョイントバッファ501aは、入力した読み出し要求をDMAコントローラ205に出力しない。これにより、読み出し単位ブロック302は、メモリ102aから1回だけ読み出される。
次に、第2のパケットコントローラ202bは、パケットbのパケット転送要求に末尾隣接フラグVF(L)及び第2の識別子ID(L)が設定されている場合、パケットbのパケット転送要求に基づく読み出し末尾アドレスを含むメモリ102aの読み出し単位ブロック303の読み出し要求に対して末尾隣接フラグVF(L)及び第2の識別子ID(L)を設定し、末尾隣接フラグVF(L)及び第2の識別子ID(L)が設定された読み出し要求を第2のジョイントバッファ501bに出力する。
第2のジョイントバッファ501bは、読み出し要求を入力し、読み出し要求に末尾隣接フラグVF(L)及び第2の識別子ID(L)が設定されている場合、記憶部603に隣接フラグJoint_Valid(0)として1を登録し、第2の識別子ID(L)を記憶部602に識別子Joint_IDとして登録し、読み出し要求をDMAコントローラ205に出力する。DMAコントローラ205は、読み出し要求に応答して、制御部112を介してメモリ102aから、末尾アドレスを含む読み出し単位ブロック303を読み出し、第2のジョイントバッファ501bに出力する。第2のジョイントバッファ501bは、末尾アドレスを含む読み出し単位ブロック303をバッファ604に保持すると共に、第2のパケットバッファ203bに出力する。
第2のパケットコントローラ202bは、第2のパケットバッファ203b内の先頭アドレスを含む読み出し単位ブロック302の一部と末尾アドレスを含む読み出し単位ブロック303の一部を基にパケットbを生成し、パケットbを転送先の中央演算処理装置101bのメモリ102bに出力する。中央演算処理装置101bは、パケットbのペイロードをメモリ102bの書き込み単位ブロック322として書き込む。
次に、第3のパケットコントローラ202cは、パケットcのパケット転送要求に先頭隣接フラグVF(F)及び第2の識別子ID(F)が設定されている場合、パケットcのパケット転送要求に基づく読み出し先頭アドレスを含むメモリ102aの読み出し単位ブロック303の読み出し要求に対して先頭隣接フラグVF(F)及び第2の識別子ID(F)を設定し、先頭隣接フラグVF(F)及び第2の識別子ID(F)が設定された読み出し要求を第2のジョイントバッファ501bに出力する。
第2のジョイントバッファ501bは、読み出し要求を入力し、読み出し要求に先頭隣接フラグVF(F)及び第2の識別子ID(F)が設定されており、記憶部603の隣接フラグJoint_Valid(0)に1が登録され、入力された第2の識別子ID(F)が記憶部602の識別子Joint_IDと一致する場合、バッファ604に保持されている読み出し単位ブロック303を第3のパケットバッファ203cに出力する。この際、第2のジョイントバッファ501bは、入力した読み出し要求をDMAコントローラ205に出力しない。これにより、読み出し単位ブロック303は、メモリ102aから1回だけ読み出される。他のパケットも同様である。
以上のように、読み出し単位ブロック302は、転送元のメモリ102aから1回だけ読み出され、第1のジョイントバッファ501aに保持される。第1のジョイントバッファ501aは、読み出し単位ブロック302を第1及び第2のパケットバッファ203a及び203bに出力する。
読み出し単位ブロック303は、転送元のメモリ102aから1回だけ読み出され、第2のジョイントバッファ501bに保持される。第2のジョイントバッファ501bは、読み出し単位ブロック303を第2及び第3のパケットバッファ203b及び203cに出力する。
読み出し単位ブロック304は、転送元のメモリ102aから1回だけ読み出され、第3のジョイントバッファ501cに保持される。第3のジョイントバッファ501cは、読み出し単位ブロック304を第3及び第4のパケットバッファ203c及び203dに出力する。
読み出し単位ブロック305は、転送元のメモリ102aから1回だけ読み出され、第4のジョイントバッファ501dに保持される。第4のジョイントバッファ501dは、読み出し単位ブロック305を第4及び第1のパケットバッファ203d及び203aに出力する。
読み出し単位ブロック306は、転送元のメモリ102aから1回だけ読み出され、第1のジョイントバッファ501aに保持される。第1のジョイントバッファ501aは、読み出し単位ブロック306を第1及び第2のパケットバッファ203a及び203bに出力する。
読み出し単位ブロック307は、転送元のメモリ102aから1回だけ読み出され、第2のジョイントバッファ501bに保持される。第2のジョイントバッファ501bは、読み出し単位ブロック307を第2及び第3のパケットバッファ203b及び203cに出力する。
上記のように、読み出し単位ブロック301〜307は、それぞれ、転送元のメモリ102aから1回ずつ読み出されている。そのため、メモリ102aのスループットが向上し、データ転送効率が向上する。
図8は、本実施形態によるネットワークコントローラ113の他のデータ転送方法を説明するための図である。図8は、図7に対して、各パケットのペイロード長412が異なる。図8の各パケットのペイロード長412は、図7の各パケットのペイロード長312と異なる。各パケットのペイロード長412は、最大転送可能ペイロード長(MTU)であり、例えば1792バイトである。ネットワークコントローラ113は、図7の場合と同様に、転送元のメモリ102aから転送先のメモリ102bにペイロード311を転送することができる。各パケットのペイロード長412を長くすることにより、パケットの数を減らすことができる。この場合も、読み出し単位ブロック301〜307は、それぞれ、転送元のメモリ102aから1回ずつ読み出されている。そのため、メモリ102aのスループットが向上し、データ転送効率が向上する。
次に、転送元のメモリ102aの読み出し効率の向上の例について説明する。例えば、ペイロード311は、2Mバイト(2097152バイト)である。図8では、2Mバイトのペイロード311を転送するため、2Mバイトをメモリ102aから読み出している。図8のメモリ102aの読み出し効率は、図4の場合に比べ、14%向上する。
図9は、コントロールマネージャ201の処理例を示すフローチャートである。以下、図7の処理例を説明する。ステップS901において、コントロールマネージャ201は、データ転送要求(ペイロード送信要求)を受信(入力)したか否かをチェックする。コントロールマネージャ201は、データ転送要求を受信した場合にはステップS902に進み、データ転送要求を受信していない場合には処理を終了する。
ステップS902において、コントロールマネージャ201は、パケットaのサイズを決定する。次に、ステップS903において、コントロールマネージャ201は、パケットaが先頭パケットであるので、パケットaのパケット転送要求に対して先頭隣接フラグVF(F)に0を設定し、先頭識別子ID(F)に0を設定する。そして、コントロールマネージャ201は、パケットaのパケット転送要求に基づく読み出し末尾アドレスがメモリ102aの読み出し単位ブロック302内でパケットbのパケット転送要求に基づく読み出し先頭アドレスと隣接する場合、パケットaのパケット転送要求に対して末尾隣接フラグVF(L)に1を設定し、識別子ID(L)に1を設定する。
次に、ステップS904において、コントロールマネージャ201は、第n+1のパケットコントローラ内のバッファが空くのを待って、パケットaのパケット転送要求を第n+1のパケットコントローラに出力する。nの初期値は、0である。したがって、コントロールマネージャ201は、第1のパケットコントローラ202a内のバッファが空くのを待って、パケットaのパケット転送要求を第1のパケットコントローラ202aに出力する。コントロールマネージャ201は、残ペイロード長からパケットaのサイズを減算する。残ペイロード長の初期値は、全パケットサイズである。コントロールマネージャ201は、n+1を4で割った余りを新たなnとする。例えば、nは、1になる。
次に、ステップS905において、コントロールマネージャ201は、残ペイロード長が0でない場合にはステップS902に戻り、次のパケットの処理を繰り返す。
次に、ステップS902において、コントロールマネージャ201は、パケットbのサイズを決定する。次に、ステップS903において、コントロールマネージャ201は、パケットbのパケット転送要求に基づく読み出し先頭アドレスがメモリ102aの読み出し単位ブロック302内でパケットaのパケット転送要求に基づく読み出し末尾アドレスと隣接する場合、パケットbのパケット転送要求に対して先頭隣接フラグVF(F)に1を設定し、識別子ID(F)に1を設定する。そして、コントロールマネージャ201は、パケットbのパケット転送要求に基づく読み出し末尾アドレスがメモリ102aの読み出し単位ブロック303内でパケットcのパケット転送要求に基づく読み出し先頭アドレスと隣接する場合、パケットbのパケット転送要求に対して末尾隣接フラグVF(L)に1を設定し、識別子ID(L)に2を設定する。
次に、ステップS904において、コントロールマネージャ201は、第2のパケットコントローラ202b内のバッファが空くのを待って、パケットbのパケット転送要求を第2のパケットコントローラ202bに出力する。コントロールマネージャ201は、残ペイロード長からパケットbのサイズを減算する。コントロールマネージャ201は、nを2に更新する。その後、ステップS902に戻る。
次に、ステップS902において、コントロールマネージャ201は、パケットcのサイズを決定する。次に、ステップS903において、コントロールマネージャ201は、パケットcのパケット転送要求に基づく読み出し先頭アドレスがメモリ102aの読み出し単位ブロック303内でパケットbのパケット転送要求に基づく読み出し末尾アドレスと隣接する場合、パケットcのパケット転送要求に対して先頭隣接フラグVF(F)に1を設定し、識別子ID(F)に2を設定する。そして、コントロールマネージャ201は、パケットcのパケット転送要求に基づく読み出し末尾アドレスがメモリ102aの読み出し単位ブロック304内でパケットdのパケット転送要求に基づく読み出し先頭アドレスと隣接する場合、パケットcのパケット転送要求に対して末尾隣接フラグVF(L)に1を設定し、識別子ID(L)に3を設定する。
次に、ステップS904において、コントロールマネージャ201は、第3のパケットコントローラ202c内のバッファが空くのを待って、パケットcのパケット転送要求を第3のパケットコントローラ202cに出力する。コントロールマネージャ201は、残ペイロード長からパケットcのサイズを減算する。コントロールマネージャ201は、nを3に更新する。
コントロールマネージャ201は、全てのパケットに対して、上記の処理を行う。ステップS905において、コントロールマネージャ201は、残ペイロード長が0である場合、処理を終了する。
図10は、第1のパケットコントローラ202aの処理例を示すフローチャートである。第2〜第4のパケットコントローラ202b〜202dも、第1のパケットコントローラ202aと同様である。
ステップS1001において、第1のパケットコントローラ202aは、パケット転送要求(パケット生成要求)を受信した場合にはステップS1002に進み、パケット転送要求を受信していない場合には処理を終了する。
ステップS1002において、第1のパケットコントローラ202aは、パケットaの読み出し先頭アドレスを含むメモリ102aの読み出し単位ブロック301の読み出し要求と、パケットaの読み出し末尾アドレスを含むメモリ102aの読み出し単位ブロック302の読み出し要求とを生成する。第1のパケットコントローラ202aは、パケットaのパケット転送要求に0の先頭隣接フラグVF(F)が設定されている場合、パケットaのパケット転送要求に基づく読み出し先頭アドレスを含む読み出し単位ブロック301の読み出し要求に対して0の先頭隣接フラグVF(F)を設定する。
そして、第1のパケットコントローラ202aは、パケットaのパケット転送要求に1の末尾隣接フラグVF(L)及び1の末尾識別子ID(L)が設定されている場合、パケットaのパケット転送要求に基づく読み出し末尾アドレスを含む読み出し単位ブロック302の読み出し要求に対して1の末尾隣接フラグVF(L)及び1の末尾識別子ID(L)を設定する。
また、第2のパケットコントローラ202bは、パケットbの読み出し先頭アドレスを含むメモリ102aの読み出し単位ブロック302の読み出し要求と、パケットbの読み出し末尾アドレスを含むメモリ102aの読み出し単位ブロック303の読み出し要求とを生成する。第2のパケットコントローラ202bは、パケットbのパケット転送要求に1の先頭隣接フラグVF(F)及び1の先頭識別子ID(F)が設定されている場合、パケットbのパケット転送要求に基づく読み出し先頭アドレスを含む読み出し単位ブロック302の読み出し要求に対して1の先頭隣接フラグVF(F)及び1の先頭識別子ID(F)を設定する。
そして、第2のパケットコントローラ202bは、パケットbのパケット転送要求に1の末尾隣接フラグVF(L)及び2の末尾識別子ID(L)が設定されている場合、パケットbのパケット転送要求に基づく読み出し末尾アドレスを含む読み出し単位ブロック303の読み出し要求に対して1の末尾隣接フラグVF(L)及び2の末尾識別子ID(L)を設定する。第3及び第4のパケットコントローラ202c及び202dも同様である。
次に、ステップS1003において、第1のパケットコントローラ202aは、全読み出し要求の出力を完了していない場合にはステップS1004に進み、全読み出し要求の出力を完了した場合にはステップS1005に進む。
ステップS1004において、第1のパケットコントローラ202aは、上記の読み出し単位ブロック301の読み出し要求を第4のジョイントバッファ501dに出力し、読み出し単位ブロック302の読み出し要求を第1のジョイントバッファ501aに出力する。第2のパケットコントローラ202bは、上記の読み出し単位ブロック302の読み出し要求を第1のジョイントバッファ501aに出力し、読み出し単位ブロック303の読み出し要求を第2のジョイントバッファ501bに出力する。第3及び第4のパケットコントローラ202c及び202dも同様である。
次に、ステップS1005において、第1のパケットコントローラ202aは、全読み出し要求の応答(読み出し単位ブロック301及び302)を受信していない場合にはステップS1003に戻り、全読み出し要求の応答を受信した場合にはステップS1006に進む。第2〜第4のパケットコントローラ202b〜202dも同様である。
ステップS1006において、第1のパケットコントローラ202aは、上記の読み出し要求に応答して読み出された読み出し単位ブロック301の一部と読み出し単位ブロック302の一部を含むペイロードのパケットaを生成する。そして、第1のパケットコントローラ202aは、パケットaをアービタ206及びネットワーク103を介して、転送先の中央演算処理装置101bのメモリ102bに送信する。
第2のパケットコントローラ202bは、上記の読み出し要求に応答して読み出された読み出し単位ブロック302の一部と読み出し単位ブロック303の一部を含むペイロードのパケットbを生成する。そして、第2のパケットコントローラ202bは、パケットbをアービタ206及びネットワーク103を介して、転送先の中央演算処理装置101bのメモリ102bに送信する。第3及び第4のパケットコントローラ202c及び202dも同様である。
図11は、第1のジョイントバッファ501aの読み出し要求受信処理を示すフローチャートである。第2〜第4のジョイントバッファ501b〜501dの処理も、第1のジョイントバッファ501aの処理と同様である。
ステップS1101において、第1のジョイントバッファ501aは、第1又は第2のパケットコントローラ202a又は202bから読み出し要求を受信した場合にはステップS1002に進み、読み出し要求を受信していない場合には処理を終了する。
ステップS1102において、第1のジョイントバッファ501aは、第1のパケットコントローラ202aからの読み出し要求の末尾隣接フラグVF(L)又は第2のパケットコントローラ202bからの読み出し要求の先頭隣接フラグVF(F)が1であるか否かを判定する。第1のジョイントバッファ501aは、隣接フラグVF(L)又はVF(F)が1である場合にはステップS1103に進み、隣接フラグVF(L)又はVF(F)が1でない場合にはステップS1106に進む。
ステップS1006において、第1のジョイントバッファ501aが第1のパケットコントローラ202aから読み出し要求を受信した場合、セレクタSEL0は、第1のパケットコントローラ202aからの読み出し要求を、DAMコントローラ205及び制御部112を介して、メモリ102aに出力する。
第1のジョイントバッファ501aが第2のパケットコントローラ202bから読み出し要求を受信した場合、セレクタSEL1は、第2のパケットコントローラ202bからの読み出し要求を、DAMコントローラ205及び制御部112を介して、メモリ102aに出力する。例えば、第4のジョイントバッファ501dのセレクタSEL1は、第1のパケットコントローラ202aからの読み出し単位ブロック301の読み出し要求を、DAMコントローラ205及び制御部112を介して、メモリ102aに出力する。
ステップS1003において、第1のジョイントバッファ501aは、記憶部601に記憶されている状態Joint_STATUSがIDLEであるか否かを判定する。状態Joint_STATUSの初期値は、IDLEである。第1のジョイントバッファ501aは、状態Joint_STATUSがIDLEである場合にはステップS1107に進み、状態Joint_STATUSがIDLEでない場合にはステップS1104に進む。
ステップS1107において、セレクタSEL0は、第1のパケットコントローラ202aからの読み出し単位ブロック302の読み出し要求を、DAMコントローラ205及び制御部112を介して、メモリ102aに出力する。第1のジョイントバッファ501aは、記憶部601に記憶されている状態Joint_STATUSをDMA_WAITに更新する。第1のジョイントバッファ501aは、第1のパケットコントローラ202aからの読み出し単位ブロック302の読み出し要求に設定されている末尾識別子ID(L)を、識別子Joint_IDとして記憶部602に登録する。第1のジョイントバッファ501aは、隣接フラグJoint_Valid(0)として1を記憶部603に登録する。これにより、第1のジョイントバッファ501aは、読み出し要求に対する応答(読み出し単位ブロック302)の待機状態になる。
ステップS1104において、第1のジョイントバッファ501aは、記憶部601の状態Joint_STATUSがDMA_WAITであり、かつ、記憶部602の識別子Joint_IDが受信読み出し要求の先頭隣接フラグVF(F)と一致している条件を満たすか否かを判定する。第1のジョイントバッファ501aは、上記の条件を満たす場合にはステップS1108に進み、上記の条件を満たさない場合にはステップS1105に進む。
ステップS1108において、第1のジョイントバッファ501aは、受信した読み出し要求をDMAコントローラ205に出力しない。例えば、第1のジョイントバッファ501aにおいて、セレクタSEL1は、第2のパケットコントローラ202bからの読み出し単位ブロック302の読み出し要求をDMAコントローラ205に出力しない。第1のジョイントバッファ501aは、隣接フラグJoint_Valid(1)として1を記憶部603に登録する。これにより、第1のジョイントバッファ501aは、読み出し要求に対する応答(読み出し単位ブロック302)の待機状態を維持する。
ステップS1105において、第1のジョイントバッファ501aは、記憶部601の状態Joint_STATUSがDMA_HOLDであり、かつ、記憶部602の識別子Joint_IDが受信読み出し要求の識別子ID(F)と一致している条件を満たすか否かを判定する。第1のジョイントバッファ501aは、上記の条件を満たす場合にはステップS1109に進み、上記の条件を満たさない場合にはステップS1110に進む。
ステップS1109において、第1のジョイントバッファ501aは、受信した読み出し要求をDMAコントローラ205に出力しない。例えば、第1のジョイントバッファ501aにおいて、セレクタSEL1は、第2のパケットコントローラ202bからの読み出し単位ブロック302の読み出し要求をDMAコントローラ205に出力しない。第1のジョイントバッファ501aは、隣接フラグJoint_Valid(1)として1を記憶部603に登録する。第1のジョイントバッファ501aは、記憶部601に記憶されている状態Joint_STATUSをDMA_SENDに更新する。これにより、第1のジョイントバッファ501aは、バッファ604に保持されている読み出し単位ブロック302を第2のパケットバッファ203bに送信可能な状態になる。
ステップS1110において、第1のジョイントバッファ501aが第1のパケットコントローラ202aから読み出し要求を受信した場合、セレクタSEL0は、第1のパケットコントローラ202aからの読み出し要求を、DAMコントローラ205及び制御部112を介して、メモリ102aに出力する。
第1のジョイントバッファ501aが第2のパケットコントローラ202bから読み出し要求を受信した場合、セレクタSEL1は、第2のパケットコントローラ202bからの読み出し要求を、DAMコントローラ205及び制御部112を介して、メモリ102aに出力する。
例えば、第1のジョイントバッファ501aは、読み出し単位ブロック306の読み出し要求を受信しているが、その前の読み出しブロック302の処理が終了していない状態である。その場合、第1のジョイントバッファ501aは、読み出し単位ブロック306を保持することができないので、受信した読み出し要求をDMAコントローラ205に出力する。
図12は、第1のジョイントバッファ501aの読み出し要求の応答受信処理を示すフローチャートである。第2〜第4のジョイントバッファ501b〜501dの処理も、第1のジョイントバッファ501aの処理と同様である。
ステップS1201において、第1のジョイントバッファ501aは、DMAコントローラ205及び制御部112を介してメモリ102aから、読み出し要求に応答して読み出された読み出し単位ブロックを受信したか否かを判定する。第1のジョイントバッファ501aは、読み出し単位ブロックを受信した場合にはステップS1204に進み、読み出し単位ブロックを受信していない場合にはステップS1202に進む。
ステップS1202において、第1のジョイントバッファ501aは、記憶部601の状態Joint_STATUSがDMA_SENDである場合にはステップS1203に進み、状態Joint_STATUSがDMA_SENDでない場合には処理を終了する。
ステップS1203において、第1のジョイントバッファ501aは、バッファ604に保持されている読み出し単位ブロックを読み出す。隣接フラグJoint_Valid(0)が1である場合、セレクタSEL2は、バッファ604から読み出された読み出し単位ブロックを第1のパケットバッファ203aに出力する。隣接フラグJoint_Valid(1)が1である場合、セレクタSEL3は、バッファ604から読み出された読み出し単位ブロックを第2のパケットバッファ203bに出力する。例えば、セレクタSEL3は、バッファ604から読み出された読み出し単位ブロック302を第2のパケットバッファ203bに出力する。第1のジョイントバッファ501aは、隣接フラグJoint_Valid(0)及びJoint_Valid(1)を0にリセットし、状態Joint_STATUSをIDLEに更新する。
ステップS1204において、第1のジョイントバッファ501aは、記憶部603の隣接フラグJoint_Valid(0)又はJoint_Valid(1)が1であり、かつ、記憶部602の識別子Joint_IDが受信読み出し要求の識別子ID(F)又はID(L)と一致し、かつ、状態Joint_STATUSがDMA_WAITであることの条件を満たすか否かを判定する。第1のジョイントバッファ501aは、上記の条件を満たしている場合にはステップS1206に進み、上記の条件を満たしていない場合にはステップS1205に進む。
ステップS1205において、第1のジョイントバッファ501aが第1のパケットコントローラ202aから読み出し要求を受信した場合、セレクタSEL2は、DMAコントローラ205及び制御部112を介してメモリ102aから読み出された読み出し単位ブロックを、第1のパケットバッファ203aに出力する。
第1のジョイントバッファ501aが第2のパケットコントローラ202bから読み出し要求を受信した場合、セレクタSEL3は、DMAコントローラ205及び制御部112を介してメモリ102aから読み出された読み出し単位ブロックを、第2のパケットバッファ203bに出力する。
ステップS1206において、第1のジョイントバッファ501aは、DMAコントローラ205及び制御部112を介してメモリ102aから読み出された読み出し単位ブロックを、バッファ604に書き込む。
記憶部603の隣接フラグJoint_Valid(0)が1である場合、セレクタSEL2は、DMAコントローラ205及び制御部112を介してメモリ102aから読み出された読み出し単位ブロックを、第1のパケットバッファ203aに出力する。
記憶部603の隣接フラグJoint_Valid(1)が1である場合、セレクタSEL3は、DMAコントローラ205及び制御部112を介してメモリ102aから読み出された読み出し単位ブロックを、第2のパケットバッファ203bに出力する。
次に、ステップS1207において、第1のジョイントバッファ501aは、記憶部603の隣接フラグJoint_Valid(0)及びJoint_Valid(1)が共に1であるか否かを判定する。第1のジョイントバッファ501aは、隣接フラグJoint_Valid(0)及びJoint_Valid(1)が共に1である場合にはステップS1208に進み、隣接フラグJoint_Valid(0)及びJoint_Valid(1)が共に1でない場合にはステップS1209に進む。
ステップS1208において、第1のジョイントバッファ501aは、記憶部604の隣接フラグJoint_Valid(0)及びJoint_Valid(1)を0にリセットする。第1のジョイントバッファ501aは、記憶部601の状態Joint_STATUSをIDLEに更新する。例えば、第1のジョイントバッファ501aは、第1のパケットコントローラ202aから読み出し単位ブロック302の読み出し要求を受信し、第2のパケットコントローラ202bから読み出し単位ブロック302の読み出し要求を受信し、その後、DMAコントローラ205から読み出し単位ブロック302を受信した状態である。この場合、ステップS1206において、第1のジョイントバッファ501aは、DMAコントローラ205から受信した読み出し単位ブロック302を第1及び第2のパケットバッファ203a及び203bに出力する。この処理の詳細は、後に図14を参照しながら説明する。
ステップS1209において、第1のジョイントバッファ501aは、記憶部603の隣接フラグJoint_Valid(0)及びJoint_Valid(1)を0にリセットする。第1のジョイントバッファ501aは、記憶部601の状態Joint_STATUSをDMA_HOLDに更新する。例えば、第1のジョイントバッファ501aは、第1のパケットコントローラ202aから読み出し単位ブロック302の読み出し要求を受信し、その後、DMAコントローラ205から読み出し単位ブロック302を受信した状態である。この場合、ステップS1206において、第1のジョイントバッファ501aは、DMAコントローラ205から受信した読み出し単位ブロック302をバッファ604に書き込むと共に、第1のパケットバッファ203aに出力する。この処理の詳細は、後に図13を参照しながら説明する。
図13は、図12のステップS1209に対応するネットワークコントローラ113の処理例を示すタイムチャートである。サイクル0において、第4のジョイントバッファ501dは、第1のパケットコントローラ202aからパケットaの先頭読み出し要求R0−0を受信する。先頭読み出し要求R0−0は、先頭隣接フラグVF(F)が0であり、先頭識別子ID(F)が0である。第4のジョイントバッファ501dのセレクタSEL1は、上記の受信した先頭読み出し要求R0−0をDMAコントローラ205に出力する。
サイクル0の第1のジョイントバッファ501aにおいて、状態Joint_STATUSはIDLEであり、隣接フラグJoint_Valid(0)及びJoint_Valid(1)は0である。
サイクル2において、第1のジョイントバッファ501aは、第1のパケットコントローラ202aからパケットaの末尾読み出し要求R0−1を受信する。末尾読み出し要求R0−1は、末尾隣接フラグVF(L)が1であり、末尾識別子ID(L)が1である。第1のジョイントバッファ501aのセレクタSEL0は、上記の受信した末尾読み出し要求R0−1をDMAコントローラ205に出力する。
サイクル3において、第1のジョイントバッファ501aは、状態Joint_STATUSをDMA_WAITに更新し、識別子Joint_IDとして末尾識別子ID(L)=1を登録し、隣接フラグJoint_Valid(0)を1に設定する。
サイクル5において、第4のジョイントバッファ501dは、先頭読み出し要求R0−0に応答して読み出された読み出し単位ブロック301を、DMAコントローラ205から受信する。第4のジョイントバッファ501dのセレクタSEL3は、その受信した読み出し単位ブロック301を第1のパケットバッファ203aに出力する。
サイクル7において、第1のジョイントバッファ501aは、末尾読み出し要求R0−1に応答して読み出された読み出し単位ブロック302を、DMAコントローラ205から受信する。第1のジョイントバッファ501aのセレクタSEL2は、隣接フラグJoint_Valid(0)が1であるので、その受信した読み出し単位ブロック302を第1のパケットバッファ203aに出力する。
サイクル8において、第1のジョイントバッファ501aは、状態Joint_STATUSがDMA_WAITであり、かつ、末尾識別子ID(L)=1が識別子Joint_ID=1と同じであるので、末尾読み出し要求R0−1に応答して読み出された読み出し単位ブロック302を、バッファ604に書き込む。第1のジョイントバッファ501aは、状態Joint_STATUSをDMA_HOLDに更新し、隣接フラグJoint_Valid(0)を0にリセットする。
サイクル10において、第1のジョイントバッファ501aは、第2のパケットコントローラ202bからパケットbの先頭読み出し要求R1−0を受信する。先頭読み出し要求R1−0は、先頭隣接フラグVF(F)が1であり、先頭識別子ID(F)が1である。第1のジョイントバッファ501aのセレクタSEL1は、状態Joint_STATUSがDMA_HOLDであり、かつ、先頭識別子ID(F)=1が識別子Joint_ID=1と同じであるので、上記の受信した先頭読み出し要求R1−0をDMAコントローラ205に出力しない。
サイクル11において、第1のジョイントバッファ501aは、状態Joint_STATUSをDMA_SENDに更新し、隣接フラグJoint_Valid(1)を1に設定する。第1のジョイントバッファ501aのセレクタSEL3は、状態Joint_STATUSがDMA_SENDであり、かつ、隣接フラグJoint_Valid(1)が1であるので、先頭読み出し要求R1−0に応答し、バッファ604に保持されている読み出し単位バッファ302を第2のパケットバッファ203bに出力する。
サイクル12において、第1のジョイントバッファ501aは、状態Joint_STATUSをIDLEに更新し、隣接フラグJoint_Valid(1)を0にリセットする。
第2のジョイントバッファ501bは、第2のパケットコントローラ202bからパケットbの末尾読み出し要求R1−1を受信する。ここで、末尾読み出し要求R1−1は、末尾隣接フラグVF(F)が0であり、先頭識別子ID(F)が2である場合を説明する。第2のジョイントバッファ501bのセレクタSEL0は、上記の受信した末尾読み出し要求R1−1をDMAコントローラ205に出力する。
サイクル14において、第2のジョイントバッファ501bは、末尾読み出し要求R1−1に応答して読み出された読み出し単位ブロック303を、DMAコントローラ205から受信する。第2のジョイントバッファ501bのセレクタSEL2は、その受信した読み出し単位ブロック303を第2のパケットバッファ203bに出力する。
図14は、図12のステップS1208に対応するネットワークコントローラ113の処理例を示すタイムチャートである。サイクル0において、第4のジョイントバッファ501dは、第1のパケットコントローラ202aからパケットaの先頭読み出し要求R0−0を受信する。先頭読み出し要求R0−0は、先頭隣接フラグVF(F)が0であり、先頭識別子ID(F)が0である。第4のジョイントバッファ501dのセレクタSEL1は、上記の受信した先頭読み出し要求R0−0をDMAコントローラ205に出力する。
サイクル0の第1のジョイントバッファ501aにおいて、状態Joint_STATUSはIDLEであり、隣接フラグJoint_Valid(0)及びJoint_Valid(1)は0である。
サイクル2において、第1のジョイントバッファ501aは、第1のパケットコントローラ202aからパケットaの末尾読み出し要求R0−1を受信する。末尾読み出し要求R0−1は、末尾隣接フラグVF(L)が1であり、末尾識別子ID(L)が1である。第1のジョイントバッファ501aのセレクタSEL0は、上記の受信した末尾読み出し要求R0−1をDMAコントローラ205に出力する。
サイクル3において、第1のジョイントバッファ501aは、状態Joint_STATUSをDMA_WAITに更新し、識別子Joint_IDとして末尾識別子ID(L)=1を登録し、隣接フラグJoint_Valid(0)を1に設定する。
サイクル4において、第1のジョイントバッファ501aは、第2のパケットコントローラ202bからパケットbの先頭読み出し要求R1−0を受信する。先頭読み出し要求R1−0は、先頭隣接フラグVF(F)が1であり、先頭識別子ID(F)が1である。第1のジョイントバッファ501aのセレクタSEL1は、状態Joint_STATUSがDMA_WAITであり、かつ、先頭識別子ID(F)=1が識別子Joint_ID=1と同じであるので、上記の受信した先頭読み出し要求R1−0をDMAコントローラ205に出力しない。
サイクル5において、第1のジョイントバッファ501aは、隣接フラグJoint_Valid(1)を1に設定する。
第4のジョイントバッファ501dは、先頭読み出し要求R0−0に応答して読み出された読み出し単位ブロック301を、DMAコントローラ205から受信する。第4のジョイントバッファ501dのセレクタSEL3は、その受信した読み出し単位ブロック301を第1のパケットバッファ203aに出力する。
サイクル7において、第1のジョイントバッファ501aは、末尾読み出し要求R0−1に応答して読み出された読み出し単位ブロック302を、DMAコントローラ205から受信する。第1のジョイントバッファ501aのセレクタSEL2は、隣接フラグJoint_Valid(0)が1であるので、その受信した読み出し単位ブロック302を第1のパケットバッファ203aに出力する。第1のジョイントバッファ501aのセレクタSEL3は、隣接フラグJoint_Valid(1)が1であるので、その受信した読み出し単位ブロック302を第2のパケットバッファ203bに出力する。
サイクル8において、第1のジョイントバッファ501aは、状態Joint_STATUSがDMA_WAITであり、かつ、末尾識別子ID(L)=1が識別子Joint_ID=1と同じであるので、末尾読み出し要求R0−1に応答して読み出された読み出し単位ブロック302を、バッファ604に書き込む。ただし、バッファ604の読み出し単位ブロック302は、使用されない。第1のジョイントバッファ501aは、状態Joint_STATUSをDMA_IDLEに更新し、隣接フラグJoint_Valid(0)及びJoint_Valid(1)を0にリセットする。
サイクル12において、第2のジョイントバッファ501bは、第2のパケットコントローラ202bからパケットbの末尾読み出し要求R1−1を受信する。ここで、末尾読み出し要求R1−1は、末尾隣接フラグVF(F)が0であり、先頭識別子ID(F)が2である場合を説明する。第2のジョイントバッファ501bのセレクタSEL0は、上記の受信した末尾読み出し要求R1−1をDMAコントローラ205に出力する。
サイクル14において、第2のジョイントバッファ501bは、末尾読み出し要求R1−1に応答して読み出された読み出し単位ブロック303を、DMAコントローラ205から受信する。第2のジョイントバッファ501bのセレクタSEL2は、その受信した読み出し単位ブロック303を第2のパケットバッファ203bに出力する。
以上のように、ネットワークコントローラ113は、メモリ102aの読み出し単位ブロック301〜307をそれぞれ1回ずつ読み出し、第1〜第4のジョイントバッファ501a〜501dに読み出し単位ブロック302〜307を保持させる。第1〜第4のパケットコントローラ202a〜202dは、第1〜第4のジョイントバッファ501a〜501dから必要な読み出し単位ブロック302〜307を得ることができる。これにより、メモリ102aの読み出し効率及びスループットが向上する。
また、第1〜第4のジョイントバッファ501a〜501dは、大容量のキャッシュに比べ、実装面積が小さく、制御が容易である。これにより、中央演算処理装置101a〜101dをそれぞれ高集積化することができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
101a〜101d 中央演算処理装置
102a〜102d メモリ
113 ネットワークコントローラ
201 コントロールマネージャ
202a〜202d 第1〜第4のパケットコントローラ
203a〜203d 第1〜第4のパケットバッファ
204a〜204d セレクタ
205 DMAコントローラ
206 アービタ
207 パケットレシーバ
501a〜501d 第1〜第4のジョイントバッファ
502a〜502d セレクタ
503a〜503d セレクタ

Claims (11)

  1. 第1のメモリから第2のメモリにデータを転送するデータ転送装置であって、
    データ転送要求を第1の転送要求及び第2の転送要求を含む複数の転送要求に分割し、前記第1の転送要求に基づく読み出しデータの末尾アドレスが前記第1のメモリにおける前記第2の転送要求に基づく読み出しデータの先頭アドレスに隣接する場合、前記第1の転送要求に対して末尾隣接情報を設定するとともに、前記第2の転送要求に対して先頭隣接情報を設定する分割部と、
    前記第1の転送要求に前記末尾隣接情報が設定されている場合、前記第1の転送要求に基づく読み出し末尾アドレスに対応する第1の読み出し要求に対して第1の隣接情報を設定するとともに、前記第1の隣接情報が設定された前記第1の読み出し要求を出力する第1の要求出力部と、
    前記第2の転送要求に前記先頭隣接情報が設定されている場合、前記第2の転送要求に基づく読み出し先頭アドレスに対応する第2の読み出し要求に対して第2の隣接情報を設定するとともに、前記第2の隣接情報が設定された前記第2の読み出し要求を出力する第2の要求出力部と、
    前記第1の読み出し要求を入力し、前記第1の読み出し要求に前記第1の隣接情報が設定されている場合、前記第1の読み出し要求を前記第1のメモリに対して出力し、前記第1の読み出し要求に応答して前記第1のメモリから読み出された第1の読み出しデータを保持するとともに、前記第1の読み出しデータを前記第1の要求出力部に出力し、前記第2の読み出し要求を入力し、前記第2の読み出し要求に前記第2の隣接情報が設定されている場合、保持している前記第1の読み出しデータを前記第2の要求出力部に出力する第1のバッファ部と
    を有することを特徴とするデータ転送装置。
  2. 前記分割部は、前記データ転送要求を第1の転送要求、第2の転送要求及び第3の転送要求を含む複数の転送要求に分割し、前記第2の転送要求に基づく読み出しデータの末尾アドレスが前記第1のメモリにおける前記第3の転送要求に基づく読み出しデータの先頭アドレスに隣接する場合、前記第2の転送要求に対して末尾隣接情報を設定するとともに、前記第3の転送要求に対して先頭隣接情報を設定し、
    前記第2の要求出力部は、前記第2の転送要求に前記末尾隣接情報が設定されている場合、前記第2の転送要求に基づく読み出し末尾アドレスに対応する第3の読み出し要求に対して第3の隣接情報を設定するとともに、前記第3の隣接情報が設定された前記第3の読み出し要求を出力し、
    前記データ転送装置は、
    さらに、前記第3の転送要求に前記先頭隣接情報が設定されている場合、前記第3の転送要求に基づく読み出し先頭アドレスに対応する第4の読み出し要求に対して第4の隣接情報を設定するとともに、前記第4の隣接情報が設定された前記第4の読み出し要求を出力する第3の要求出力部と、
    前記第3の読み出し要求を入力し、前記第3の読み出し要求に前記第3の隣接情報が設定されている場合、前記第3の読み出し要求を前記第1のメモリに対して出力し、前記第3の読み出し要求に応答して前記第1のメモリから読み出された第2の読み出しデータを保持するとともに、前記第2の読み出しデータを前記第2の要求出力部に出力し、前記第4の読み出し要求を入力し、前記第4の読み出し要求に前記第4の隣接情報が設定されている場合、保持している前記第2の読み出しデータを前記第3の要求出力部に出力する第2のバッファ部とを有することを特徴とする請求項1に記載のデータ転送装置。
  3. 前記第1のバッファ部は、前記第1の読み出し要求を入力し、前記第1の読み出し要求に前記第1の隣接情報が設定されている場合、前記第1の読み出し要求を前記第1のメモリに対して出力し、前記第2の読み出し要求を入力し、前記第2の読み出し要求に前記第2の隣接情報が設定されている場合、前記第1の読み出し要求に応答して前記第1のメモリから読み出された前記第1の読み出しデータを前記第1の要求出力部及び前記第2の要求出力部に出力することを特徴とする請求項1に記載のデータ転送装置。
  4. 前記第1のバッファ部は、前記第2の読み出し要求に前記第2の隣接情報が設定されている場合、前記第2の読み出し要求を前記第1のメモリに対して出力せず、保持している前記第1の読み出しデータを前記第2の要求出力部に出力することを特徴とする請求項1〜3のいずれか1項に記載のデータ転送装置。
  5. 前記分割部は、前記第1の転送要求に基づく読み出しデータの末尾アドレスが前記第1のメモリにおける前記第2の転送要求に基づく読み出しデータの先頭アドレスに隣接する場合、前記第1の転送要求に対して前記末尾隣接情報及び第1の識別子を設定するとともに、前記第2の転送要求に対して前記先頭隣接情報及び前記第1の識別子を設定し、
    前記第1の要求出力部は、前記第1の転送要求に前記末尾隣接情報及び前記第1の識別子が設定されている場合、前記第1の転送要求に基づく読み出し末尾アドレスに対応する第1の読み出し要求に対して前記第1の隣接情報及び前記第1の識別子を設定するとともに、前記第1の隣接情報及び前記第1の識別子が設定された前記第1の読み出し要求を出力し、
    前記第2の要求出力部は、前記第2の転送要求に前記先頭隣接情報及び前記第1の識別子が設定されている場合、前記第2の転送要求に基づく読み出し先頭アドレスに対応する第2の読み出し要求に対して前記第2の隣接情報及び前記第1の識別子を設定するとともに、前記第2の隣接情報及び前記第1の識別子が設定された前記第2の読み出し要求を出力し、
    前記第1のバッファ部は、前記第1の読み出し要求を入力し、前記第1の読み出し要求に前記第1の隣接情報及び前記第1の識別子が設定されている場合、前記第1の識別子を登録し、前記第1の読み出し要求を前記第1のメモリに対して出力し、前記第1の読み出し要求に応答して前記第1のメモリから読み出された前記第1の読み出しデータを保持するとともに、前記第1の読み出しデータを前記第1の要求出力部に出力し、前記第2の読み出し要求を入力し、前記第2の読み出し要求に前記第2の隣接情報が設定され、かつ前記第2の読み出し要求に設定されている前記第1の識別子が前記登録されている前記第1の識別子と同じ場合、保持している前記第1の読み出しデータを前記第2の要求出力部に出力することを特徴とする請求項1〜4のいずれか1項に記載のデータ転送装置。
  6. 前記第1の要求出力部は、前記第1の転送要求に基づく読み出し先頭アドレスに対応する第5の読み出し要求に対して隣接情報を設定せず、前記第5の読み出し要求を出力し、
    前記データ転送装置は、さらに、前記第5の読み出し要求に隣接情報が設定されていない場合、前記第5の読み出し要求を前記第1のメモリに対して出力し、前記第5の読み出し要求に応答して前記第1のメモリから読み出された読み出しデータを前記第1の要求出力部に出力する第3のバッファ部を有することを特徴とする請求項1〜5のいずれか1項に記載のデータ転送装置。
  7. 前記第1の要求出力部は、前記第1の読み出しデータの一部を含む第1のパケットを前記第2のメモリに対して出力し、
    前記第2の要求出力部は、前記第1の読み出しデータの他の一部を含む第2のパケットを前記第2のメモリに対して出力することを特徴とする請求項1〜6のいずれか1項に記載のデータ転送装置。
  8. 前記第1のパケット及び前記第2のパケットのペイロード長は、それぞれ、前記第2のメモリの書き込み単位ブロック長であることを特徴とする請求項7に記載のデータ転送装置。
  9. 前記第1のパケット及び前記第2のパケットのペイロード長は、それぞれ、最大転送可能ペイロード長であることを特徴とする請求項7に記載のデータ転送装置。
  10. 第1のメモリから第2のメモリにデータを転送するデータ転送部を有する演算処理装置であって、
    前記データ転送部は、
    データ転送要求を第1の転送要求及び第2の転送要求を含む複数の転送要求に分割し、前記第1の転送要求に基づく読み出しデータの末尾アドレスが前記第1のメモリにおける前記第2の転送要求に基づく読み出しデータの先頭アドレスに隣接する場合、前記第1の転送要求に対して末尾隣接情報を設定するとともに、前記第2の転送要求に対して先頭隣接情報を設定する分割部と、
    前記第1の転送要求に前記末尾隣接情報が設定されている場合、前記第1の転送要求に基づく読み出し末尾アドレスに対応する第1の読み出し要求に対して第1の隣接情報を設定するとともに、前記第1の隣接情報が設定された前記第1の読み出し要求を出力する第1の要求出力部と、
    前記第2の転送要求に前記先頭隣接情報が設定されている場合、前記第2の転送要求に基づく読み出し先頭アドレスに対応する第2の読み出し要求に対して第2の隣接情報を設定するとともに、前記第2の隣接情報が設定された前記第2の読み出し要求を出力する第2の要求出力部と、
    前記第1の読み出し要求を入力し、前記第1の読み出し要求に前記第1の隣接情報が設定されている場合、前記第1の読み出し要求を前記第1のメモリに対して出力し、前記第1の読み出し要求に応答して前記第1のメモリから読み出された第1の読み出しデータを保持するとともに、前記第1の読み出しデータを前記第1の要求出力部に出力し、前記第2の読み出し要求を入力し、前記第2の読み出し要求に前記第2の隣接情報が設定されている場合、保持している前記第1の読み出しデータを前記第2の要求出力部に出力する第1のバッファ部と
    を有することを特徴とする演算処理装置。
  11. 第1のメモリから第2のメモリにデータを転送するデータ転送装置のデータ転送方法であって、
    前記データ転送装置が有する分割部が、データ転送要求を第1の転送要求及び第2の転送要求を含む複数の転送要求に分割し、前記第1の転送要求に基づく読み出しデータの末尾アドレスが前記第1のメモリにおける前記第2の転送要求に基づく読み出しデータの先頭アドレスに隣接する場合、前記第1の転送要求に対して末尾隣接情報を設定するとともに、前記第2の転送要求に対して先頭隣接情報を設定し、
    前記データ転送装置が有する第1の要求出力部が、前記第1の転送要求に前記末尾隣接情報が設定されている場合、前記第1の転送要求に基づく読み出し末尾アドレスに対応する第1の読み出し要求に対して第1の隣接情報を設定するとともに、前記第1の隣接情報が設定された前記第1の読み出し要求を出力し、
    前記データ転送装置が有する第2の要求出力部が、前記第2の転送要求に前記先頭隣接情報が設定されている場合、前記第2の転送要求に基づく読み出し先頭アドレスに対応する第2の読み出し要求に対して第2の隣接情報を設定するとともに、前記第2の隣接情報が設定された前記第2の読み出し要求を出力し、
    前記データ転送装置が有する第1のバッファ部が、前記第1の読み出し要求を入力し、前記第1の読み出し要求に前記第1の隣接情報が設定されている場合、前記第1の読み出し要求を前記第1のメモリに対して出力し、前記第1の読み出し要求に応答して前記第1のメモリから読み出された第1の読み出しデータを保持するとともに、前記第1の読み出しデータを前記第1の要求出力部に出力し、前記第2の読み出し要求を入力し、前記第2の読み出し要求に前記第2の隣接情報が設定されている場合、保持している前記第1の読み出しデータを前記第2の要求出力部に出力することを特徴とするデータ転送方法。
JP2017220674A 2017-11-16 2017-11-16 データ転送装置、演算処理装置及びデータ転送方法 Active JP6905195B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017220674A JP6905195B2 (ja) 2017-11-16 2017-11-16 データ転送装置、演算処理装置及びデータ転送方法
US16/177,579 US10956347B2 (en) 2017-11-16 2018-11-01 Data transfer device, arithmetic processing device, and data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017220674A JP6905195B2 (ja) 2017-11-16 2017-11-16 データ転送装置、演算処理装置及びデータ転送方法

Publications (2)

Publication Number Publication Date
JP2019091333A JP2019091333A (ja) 2019-06-13
JP6905195B2 true JP6905195B2 (ja) 2021-07-21

Family

ID=66431345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017220674A Active JP6905195B2 (ja) 2017-11-16 2017-11-16 データ転送装置、演算処理装置及びデータ転送方法

Country Status (2)

Country Link
US (1) US10956347B2 (ja)
JP (1) JP6905195B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11256437B2 (en) 2018-11-19 2022-02-22 Micron Technology, Inc. Data migration for memory operation
US11182090B2 (en) * 2018-11-19 2021-11-23 Micron Technology, Inc. Systems, devices, and methods for data migration
US11163473B2 (en) 2018-11-19 2021-11-02 Micron Technology, Inc. Systems, devices, techniques, and methods for data migration
JP7419010B2 (ja) * 2019-10-04 2024-01-22 キヤノン株式会社 データ処理システムおよびデータ処理システムの制御方法
US11310732B1 (en) * 2020-11-23 2022-04-19 At&T Intellectual Property I, L.P. Facilitation of fast aiding radio access network intelligent controllers for 5G or other next generation network

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08152976A (ja) * 1994-11-28 1996-06-11 Fujitsu Ltd 記憶装置のアクセス方法
JP3190847B2 (ja) 1997-02-12 2001-07-23 甲府日本電気株式会社 データ転送制御装置
US7495669B2 (en) * 2002-12-26 2009-02-24 Canon Kabushiki Kaisha Image processing apparatus and image processing method
JP3918145B2 (ja) * 2001-05-21 2007-05-23 株式会社ルネサステクノロジ メモリコントローラ
JP3886800B2 (ja) * 2001-12-19 2007-02-28 株式会社リコー データ管理情報取得方法、情報再生装置、並びにデータ管理情報取得プログラム及び記録媒体
US6799241B2 (en) * 2002-01-03 2004-09-28 Intel Corporation Method for dynamically adjusting a memory page closing policy
US7149862B2 (en) * 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
JP2006004340A (ja) 2004-06-21 2006-01-05 Victor Co Of Japan Ltd Dma転送制御装置
JP5889747B2 (ja) * 2012-08-07 2016-03-22 ルネサスエレクトロニクス株式会社 半導体装置
US9092469B2 (en) * 2012-08-22 2015-07-28 Empire Technology Development Llc Partitioning sorted data sets
US9189503B2 (en) * 2012-12-06 2015-11-17 Microsoft Technology Licensing, Llc Database scale-out
JP2016134005A (ja) * 2015-01-20 2016-07-25 オリンパス株式会社 画像処理装置

Also Published As

Publication number Publication date
JP2019091333A (ja) 2019-06-13
US20190146935A1 (en) 2019-05-16
US10956347B2 (en) 2021-03-23

Similar Documents

Publication Publication Date Title
JP6905195B2 (ja) データ転送装置、演算処理装置及びデータ転送方法
US20190156180A1 (en) Neural network device
KR102499335B1 (ko) 신경망 데이터 처리 장치, 방법 및 전자 장비
US20090138570A1 (en) Method for setting parameters and determining latency in a chained device system
KR100962950B1 (ko) 데이터 전송 시스템
EP0447146A2 (en) Hardware distributor for distributing serial instruction stream data to parallel processors
US8799536B2 (en) Data processing apparatus, data processing method and computer-readable medium
KR20060116729A (ko) 데이터 전송 장치, 데이터 전송 방법 및 프로그램
US20090210397A1 (en) Data search device and gateway device in communication apparatus
CN101706760B (zh) 矩阵转置自动控制电路系统及矩阵转置方法
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JPH10124268A (ja) 印字制御装置
US10489322B2 (en) Apparatus and method to improve performance in DMA transfer of data
US8812787B2 (en) Router and many-core system
JP2008234059A (ja) データ転送装置および情報処理システム
JP6290761B2 (ja) データ転送制御システム、データ転送制御方法、及び、データ転送制御プログラム
TWI397285B (zh) 封包轉送方式
US20160085683A1 (en) Data receiving device and data receiving method
US20090289947A1 (en) System and method for processing data sent from a graphic engine
EP3588319A2 (en) Memory module
JP2017111484A (ja) ストアマージ装置、情報処理装置、およびストア制御方法、並びにコンピュータ・プログラム
JP2009205573A (ja) バッファ制御装置およびバッファ制御方法
JP5403665B2 (ja) データ転送方法
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
CN113709061A (zh) 一种报文转发的方法和电路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210520

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210607

R150 Certificate of patent or registration of utility model

Ref document number: 6905195

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150