(57)【要約】【課題】ＤＭＡによるデータ転送の性能を向上させる情報処理装置、情報処理システム及び情報処理装置の制御方法を提供する。【解決手段】書込制御部１４１は、ＤＭＡのための情報が登録されたヘッダ及びメモリへ格納されるデータを含むパケットを受信する。パケットバッファ１４２は、パケットを格納する。ヘッダ制御部１４５は、パケットのヘッダ及びデータの先頭から所定長の先頭部分を取得してヘッダバッファ１４６に格納し、パケットに含まれるデータのデータ長が所定長以下の場合、ヘッダバッファ１４６からパケットに含まれるデータを読み出す。ＤＭＡ制御部１４８は、ヘッダ制御部１４５により読み出されたデータのＤＭＡによるメモリへの格納を実行する。【選択図】図３
2019159846.tif 000002
【特許請求の範囲】
【請求項１】
Direct  Memory  Access（ＤＭＡ）のための情報が登録されたヘッダ及びメモリへ格納されるデータを含むパケットを受信する受信部と、
前記受信部により受信された前記パケットを格納するパケット格納部と、
前記パケット格納部に格納された前記パケットの前記ヘッダ及び前記データの先頭から所定長の先頭部分を取得してヘッダ格納部に格納し、前記ヘッダを基に前記パケットに含まれる前記データのデータ長が前記所定長以下の場合、前記ヘッダ格納部から前記パケットに含まれる前記データを読み出すヘッダ制御部と、
前記ヘッダ制御部により読み出された前記データのＤＭＡによる前記メモリへの格納を実行するＤＭＡ制御部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記パケットに含まれる前記データを前記パケット格納部から読み出す指示を受けて、前記パケット格納部から前記データを読み出し前記ＤＭＡ制御部へ送信する送信部をさらに備え、
前記ヘッダ制御部は、前記データ長が前記所定長より長い場合、前記パケット格納部からの前記パケットの前記データの読み出しを前記送信部に指示し、
前記ＤＭＡ制御部は、前記送信部により読み出された前記データのＤＭＡによる前記メモリへの格納を実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記受信部は、前記パケットの後に、他のヘッダ及び他のデータを含む後続パケットを受信し、
前記パケット格納部は、前記パケット及び前記後続パケットを格納し、
前記ヘッダ制御部は、前記ヘッダ格納部からの前記パケットに含まれる前記データの読み出しの実行又は前記パケット格納部からの前記パケットに含まれる前記データの読み出しの指示の実行が完了後、前記パケットに対して施した処理を前記後続パケットに対して行う
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記ヘッダ制御部は、前記ヘッダとともに前記パケットに含まれる前記データの先頭から１サイクル分の長さの先頭部分を取得してヘッダ格納部に格納することを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
前記パケット格納部は、高密度実装の記憶装置であり、
前記ヘッダ格納部は、前記パケット格納部に比べてレイテンシの短い記憶装置である
ことを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項６】
Input  Output（ＩＯ）コントローラ及びメモリコントローラをさらに備え、
前記受信部は、前記ＩＯコントローラから前記パケットを受信し、
前記ＤＭＡ制御部は、前記メモリコントローラに対して前記メモリへの前記データの格納を指示することを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項７】
複数の情報処理装置を有する情報処理システムであって、
各前記情報処理装置は、
Direct  Memory  Access（ＤＭＡ）のための情報が登録されたヘッダ及びメモリへ格納されるデータを含むパケットを他の情報処理装置から受信する受信部と、
前記受信部により受信された前記パケットを格納するパケット格納部と、
前記パケット格納部に格納された前記パケットの前記ヘッダ及び前記データの先頭から所定長の先頭部分を取得してヘッダ格納部に格納し、前記ヘッダを基に前記パケットに含まれる前記データのデータ長が前記所定長以下か否の場合、前記ヘッダ格納部から前記パケットに含まれる前記データを読み出すヘッダ制御部と、
前記ヘッダ制御部により読み出された前記データのＤＭＡによる前記メモリへの格納を実行するＤＭＡ制御部と
を備えたことを特徴とする情報処理システム。
【請求項８】
Direct  Memory  Access（ＤＭＡ）のための情報が登録されたヘッダ及びメモリへ格納されるデータを含むパケットを受信し、
受信した前記パケットをパケットバッファに格納し、
前記パケットバッファに格納された前記パケットの前記ヘッダ及び前記データの先頭から所定長の先頭部分を取得してヘッダバッファに格納し、
前記ヘッダを基に前記パケットに含まれる前記データのデータ長が前記所定長以下の場合、前記ヘッダバッファから前記パケットに含まれる前記データを読み出し、
読み出した前記データのＤＭＡによる前記メモリへの格納を実行する
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
並列計算機には、計算ノードと呼ばれる計算機を複数有する装置が存在する。このような複数の計算ノードからなる並列計算機において、計算ノード間でＤＭＡ（Direct  Memory  Access）によりデータの転送が行われる場合がある。この場合、各計算ノードは、ＤＭＡコントローラを有する。
【０００３】
データの受信側の計算ノードにおけるＤＭＡコントローラは、ＩＯ（Input  Output）コントローラを介してデータの送信側の計算ノードからパケットとして転送されたデータを受信する。次に、ＤＭＡコントローラは、受信したデータを受信バッファに格納する。その後、ＤＭＡコントローラは、ＤＭＡにより受信バッファに格納されたデータのペイロード部分をメモリへ書き込む。
【０００４】
メッセージ長の長いペイロードを高スループットでＤＭＡにより転送するためには、大量のペイロードを蓄積するための受信バッファを実装することになり、情報処理装置に搭載する物量の増加につながる。物量の増加は、情報処理装置の省スペース化に対する妨げや製造コストの上昇につながる。
【０００５】
そこで、スループットを向上させつつ物量の増加を抑えるために、ＤＭＡコントローラの受信バッファには、ＳＲＡＭ（Static  Random  Access  Memory）などの高密度実装のバッファが用いられることが多い。ＤＭＡコントローラは、ＤＭＡによるデータ転送のスループットを向上させるため、ＳＲＡＭなどの高密度実装の受信バッファを用いて大量のパケットを蓄積する。受信バッファに大量のパケットを蓄積することで、ＤＭＡコントローラは、送信側にパケットの送信を待機させることを軽減でき、且つ、受信バッファに溜めたデータを次々とメモリに書き込むことでデータ転送のスループットが向上する。ただし、一般的に、ＳＲＡＭへのアクセスは、通常のフリップフロップなどで組んだ受信バッファへのアクセスに比べてレイテンシが長い。
【０００６】
このようなＤＭＡによるデータ転送において受信バッファを効率的に運用するための技術として、可変長パケット用と固定長パケット用で受信バッファを分ける従来技術がある。また、受信用バッファを宛先毎に複数設け、受信バッファにおいて転送条件が満たされた場合にその受信バッファのデータをメモリへＤＭＡにより転送する従来技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−１４６０１９号公報
【特許文献２】特開２０００−９２０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、パケットを受信バッファに蓄積してＤＭＡによるデータ転送を行う従来技術では、ＤＭＡコントローラは、受信バッファから制御情報を読み出し、読み出した制御情報に対してアドレスの解析などを行う。その後、ＤＭＡコントローラは、解析結果を用いて受信バッファに格納されたペイロードをメモリに転送する。この場合、ＤＭＡコントローラが受信バッファに対して２度のアクセスを行うため、ＤＭＡによるデータ転送におけるレイテンシが増加してしまう。
【０００９】
ＤＭＡによりメッセージ長の長いデータを転送する場合、スループットを向上させるためには従来のＤＭＡによるデータ転送を行うことが望ましい。これに対して、ＤＭＡによるデータ転送の使用用途によっては、短いペイロードを低レイテンシで転送することが望まれる場合がある。例えば、ＤＭＡによるデータ転送先のメモリアクセス完了をショートメッセージでデータの送信元に通知する場合が考えられる。このような場合、短いペイロードに関して低レイテンシ化を優先することで性能改善につながる。しかし、従来技術では短いペイロードであっても２度のアクセスを行うために、レイテンシの増加は避けられずＤＭＡによるデータ転送の性能を向上させることは困難である。
【００１０】
また、受信したパケットをペイロード長毎に分けて管理する従来技術では、ペイロード長の短い受信バッファの物量によりＩＯコントローラのアウトスタンディング数が決定される。例えば、ペイロード長の短いパケットが頻発すると、可変長パケット用の受信バッファは空いているが、固定長パケット用の受信バッファがいっぱいのため、ＩＯコントローラが処理できない状態が発生する。この状態はＤＭＡによるデータ転送で高スループットを求める場合には不利である。そこで、この状態の発生を回避するため、固定長パケット用の受信バッファの物量を増加させることになる。このように、受信したパケットをペイロード長毎に分けて管理する従来技術を用いても、物量の増加を抑えてＤＭＡによるデータ転送の性能を向上させることは困難である。
【００１１】
さらに、同様の従来技術を用いても、ヘッダの読み出し及びペイロードの読み出しという２回の受信バッファへのアクセスが行われるため、レイテンシは改善しないため、ＤＭＡによるデータ転送の性能を向上させることは困難である。
【００１２】
また、宛先毎の各受信バッファにおいて転送条件が満たされた場合にデータをメモリへ転送する従来技術を用いても、同様に物量の増加の抑制やＤＭＡによるデータ転送の性能を向上させることは困難である。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、ＤＭＡによるデータ転送の性能を向上させる情報処理装置、情報処理システム及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理装置、情報処理システム及び情報処理装置の制御方法の一つの態様において、受信部は、Direct  Memory  Access（ＤＭＡ）のための情報が登録されたヘッダ及びメモリへ格納されるデータを含むパケットを受信する。パケット格納部は、前記受信部により受信された前記パケットを格納する。ヘッダ制御部は、前記パケット格納部に格納された前記パケットの前記ヘッダ及び前記データの先頭から所定長の先頭部分を取得してヘッダ格納部に格納し、前記ヘッダを基に前記パケットに含まれる前記データのデータ長が前記所定長以下の場合、前記ヘッダ格納部から前記パケットに含まれる前記データを読み出す。ＤＭＡ制御部は、前記ヘッダ制御部により読み出された前記データのＤＭＡによる前記メモリへの格納を実行する。
【発明の効果】
【００１５】
１つの側面では、本発明は、ＤＭＡによるデータ転送の性能を向上させことができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、並列計算機の概略構成図である。
【図２】図２は、計算ノードのハードウェア構成図である。
【図３】図３は、ＤＭＡコントローラのブロック図である。
【図４】図４は、受信するパケットのフォーマットを表す図である。
【図５】図５は、パケットバッファへのパケットの格納状態の一例を表す図である。
【図６】図６は、ヘッダアドレス格納テーブルの一例を表す図である。
【図７】図７は、ヘッダ転送部からヘッダ制御部へ送られる先頭データのフォーマットの一例を表す図である。
【図８】図８は、ヘッダバッファのデータ格納状態の一例を表す図である。
【図９】図９は、ペイロード転送指示のフォーマットの一例を表す図である。
【図１０】図１０は、コマンドバスのフォーマットの一例を表す図である。
【図１１】図１１は、データバスのフォーマットの一例を表す図である。
【図１２】図１２は、書込制御部によるパケットバッファへのパケット格納処理のフローチャートである。
【図１３】図１３は、ヘッダ転送部によるヘッダ転送処理のフローチャートである。
【図１４】図１４は、ヘッダ制御部によるヘッダ制御処理のフローチャートである。
【図１５】図１５は、ペイロード転送部によるペイロード転送処理のフローチャートである。
【図１６】図１６は、ヘッダバッファからの転送を行う場合のペイロード転送を表すタイムチャートである。
【図１７】図１７は、ヘッダバッファからの転送を行わない場合のペイロード転送を表すタイムチャートである。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する情報処理装置、情報処理システム及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム及び情報処理装置の制御方法が限定されるものではない。
【実施例】
【００１８】
図１は、並列計算機の概略構成図である。情報処理システムである並列計算機１は、複数の計算ノード１０が接続される。計算ノード１０は、例えば、サーバコンピュータといった情報処理装置である。各計算ノード１０は、相互に通信を行う。例えば、各計算ノード１０は、相互にデータを転送するためにパケットを送受信する。
【００１９】
ここで、図１では、６台の計算ノード１０が接続された場合を例に示したが、計算ノード１０の数は特に制限は無い。また、計算ノード１０の接続方法にも特に制限は無い。
【００２０】
図２は、計算ノードのハードウェア構成図である。計算ノード１０は、ＣＰＵ（Central  Processing  Unit）コア１１、メモリ１２、メモリコントローラ１３、ＤＭＡコントローラ１４及びＩＯコントローラ１５を有する。
【００２１】
ＣＰＵコア１１は、演算処理装置である。ＣＰＵコア１１は、メモリ１２に格納されたデータを用いて処理を行う。例えば、ＣＰＵコア１１は、演算用のデータを用いて演算を実行する。また、ＣＰＵコア１１は、メモリ１２に格納されたショートメッセージを取得し、取得したショートメッセージに応じた処理を行う。例えば、ＣＰＵコア１１は、メモリアクセス完了を通知するショートメッセージをメモリ１２から取得する。そして、ＣＰＵコア１１は、メモリアクセスの処理の完了を確認する。さらに、ＣＰＵコア１１は、ＤＭＡによるメモリ１２へのデータの書き込みが完了した場合、ＤＭＡの完了の通知をヘッダ制御部１４５から受ける。
【００２２】
メモリコントローラ１３は、メモリ１２へのデータの格納指示をＤＭＡコントローラ１４から受ける。そして、メモリコントローラ１３は、通知されたバイトマスクを用いて、データをメモリアクセス単位毎にメモリ１２へ格納する。また、メモリコントローラ１３は、メモリ１２からのデータの読み出し指示をＤＭＡコントローラ１４から受ける。そして、メモリコントローラ１３は、指示にしたがいデータをメモリアクセス単位毎にメモリ１２から読み出してＤＭＡコントローラ１４へ出力する。そして、全てのペイロードのメモリ１２への書き込み又は読み出しが完了すると、メモリコントローラ１３は、メモリアクセス完了の通知をヘッダ制御部１４５へ通知する。
【００２３】
また、メモリコントローラ１３は、データの取得命令をＣＰＵコア１１から受ける。そして、メモリコントローラ１３は、指示されたデータをメモリ１２から読み出してＣＰＵコア１１へ出力する。
【００２４】
メモリ１２は、例えば、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）などである。
【００２５】
ＤＭＡコントローラ１４は、ＤＭＡにより他の計算ノード１０から受信したパケットの入力をＩＯコントローラ１５から受ける。そして、ＤＭＡコントローラ１４は、取得したパケットに含まれるデータをメモリ１２に格納する。このＤＭＡコントローラ１４によるメモリ１２へのデータの格納については後で詳細に説明する。
【００２６】
また、ＤＭＡコントローラ１４は、ＤＭＡによるデータ転送のためのデータの読み出しをメモリコントローラ１３に指示する。その後、ＤＭＡコントローラ１４は、ＤＭＡによるデータ転送を行うデータをメモリコントローラ１３から取得する。そして、ＤＭＡコントローラ１４は、取得したデータをＩＯコントローラ１５へ出力する。
【００２７】
ＩＯコントローラ１５は、他の計算ノード１０からＤＭＡにより転送されたデータの入力を受ける。そして、ＩＯコントローラ１５は、取得したデータをＤＭＡコントローラ１４へ出力する。また、ＩＯコントローラ１５は、ＤＭＡによりデータ転送を行うデータの入力をＤＭＡコントローラ１４から受ける。そして、ＩＯコントローラ１５は、取得したデータをＤＭＡによるデータの送信先の計算ノード１０へ送信する。
【００２８】
次に、図３を参照して、ＤＭＡコントローラ１４のメモリ１２へのデータ格納の動作について説明する。図３は、ＤＭＡコントローラのブロック図である。ＤＭＡコントローラ１４は、書込制御部１４１、パケットバッファ１４２、ヘッダ転送部１４３、ヘッダアドレス格納テーブル１４４、ヘッダ制御部１４５、ヘッダバッファ１４６、ペイロード転送部１４７及びＤＭＡ制御部１４８を有する。
【００２９】
パケットバッファ１４２は、例えばＳＤＲＡＭなどの高密度実装が可能なメモリである。このパケットバッファ１４２が、「パケット格納部」の一例にあたる。
【００３０】
書込制御部１４１は、パケットバッファ１４２に空きがあるか否かを判定する。パケットバッファ１４２に空きがない場合、書込制御部１４１は、ＩＯコントローラ１５からのパケットの受信を拒否する。
【００３１】
パケットバッファ１４２に空きがある場合、書込制御部１４１は、ＤＭＡ情報が格納されたヘッダを有するパケットの入力をＩＯコントローラ１５から受ける。ここで、ＤＭＡ情報とは、ＤＭＡによるデータ転送を行うための情報であり、ペイロード長、コマンドの種類及びアクセスを実行する先頭の物理アドレスなどである。
【００３２】
図４は、受信するパケットのフォーマットを表す図である。フォーマット２０１に示すように、本実施例では、１サイクルで８バイトのデータが処理される場合で説明する。フォーマット２０１は、１サイクル目がヘッダの格納領域である。ヘッダの格納領域は、ペイロード長、コマンド及びメモリアドレスの領域を有する。ここで、ペイロードは、実際に転送の対象となるデータである。そして、ペイロード長の領域には、ペイロードの長さが格納される。また、コマンドの領域には、コマンドの種類が格納される。コマンドの種類には、メモリ１２へのペイロードの書き込み及びメモリ１２からのペイロードの読み出しがある。メモリアドレスの領域には、アクセスを実行する先頭の物理アドレスが格納される。
【００３３】
また、フォーマット２０１は、２サイクル目以降にペイロードの領域を有する。ペイロードは、メモリ１２への書き込み時に格納される。ペイロードのサイズは可変であり、８バイト以下の場合や８バイトより大きいの場合もある。例えば、ショートメッセージは、８バイト以下のサイズを有する場合が多い。
【００３４】
図３に戻って説明を続ける。書込制御部１４１は、ＩＯコントローラ１５から取得したパケットをパケットバッファ１４２に書き込む。書込制御部１４１は、パケットバッファ１４２に空きがあれば順次パケットをＩＯコントローラ１５から受信してパケットバッファ１４２に書き込んでいく。
【００３５】
図５は、パケットバッファへのパケットの格納状態の一例を表す図である。図５では、パケットバッファ１４２におけるパケットの格納状態が模式的に表される。パケットバッファ１４２は、各格納領域に対応するアドレスを有する。そして、アドレスを有する各格納領域にデータが格納される。例えば、図５では、パケットバッファ１４２のアドレス０の格納領域に、ヘッダＡ及びペイロードＡを有するデータＡのヘッダＡが格納される。さらに、パケットバッファ１４２のアドレスが１〜８の領域には、データＡのペイロードＡが格納される。書込制御部１４１は、受信したパケットを書き込む先頭のアドレスにあたる書込アドレスを有する。そして、書込制御部１４１は、記憶する書込アドレスからパケットの格納を開始し、アドレスを加算しつつ受信したパケットをパケットバッファ１４２に格納する。最終的に、書込制御部１４１は、次のパケットの先頭の書込アドレスを有する。
【００３６】
次に、書込制御部１４１は、パケットバッファ１４２に格納したパケットのヘッダのアドレスを特定する。そして、書込制御部１４１は、特定したヘッダのアドレスをヘッダ転送部１４３へ通知する。さらに、書込制御部１４１は、ヘッダ転送部１４３に通知したヘッダのアドレスをヘッダアドレス格納テーブル１４４に書き込む。
【００３７】
図６は、ヘッダアドレス格納テーブルの一例を表す図である。上述したように、書込制御部１４１は、パケットバッファ１４２へのパケット格納後には次のパケットの書込アドレスを有する。そして、ヘッダはパケットの先頭に格納されるので、ヘッダアドレスはパケットを格納した最初の書込アドレスに一致する。そこで、書込制御部１４１は、パケットを格納した最初のアドレスを書込アドレスとして特定し、特定した書込アドレスをヘッダアドレス格納テーブル１４４に書き込む。これにより、ヘッダアドレス格納テーブル１４４には、パケットバッファ１４２に格納された各パケットのヘッダアドレスが順次格納される。この書込制御部１４１が、「受信部」の一例にあたる。
【００３８】
ヘッダ転送部１４３は、ヘッダアドレス格納テーブル１４４を参照してヘッダ制御部１４５に対して未通知のヘッダが存在するか否かを判定する。未通知のヘッダが存在する場合、ヘッダ転送部１４３は、ヘッダ制御部１４５が処理中のヘッダが存在するか否かを判定する。例えば、ヘッダ転送部１４３は、ヘッダ制御部１４５へのヘッダの通知を表すヘッダ通知数を記憶する。そして、ヘッダ通知数が０であれば、ヘッダ転送部１４３は、ヘッダ制御部１４５が処理中のヘッダが存在しないと判定する。
【００３９】
ヘッダ制御部１４５が処理中のヘッダが存在する場合、ヘッダ転送部１４３は、ヘッダ制御部１４５が処理中のヘッダが無くなるまで待機する。これに対して、ヘッダ制御部１４５が処理中のヘッダが存在しない場合、ヘッダ転送部１４３は、未通知のヘッダに対応する書込アドレスをヘッダアドレス格納テーブル１４４から取得する。そして、ヘッダ転送部１４３は、取得した書込アドレスをパケットバッファ１４２の読出アドレスにセットする。
【００４０】
次に、ヘッダ転送部１４３は、パケットバッファ１４２におけるセットした読出アドレスからヘッダを読み出すとともにヘッダに続く１エントリ分のデータをパケットバッファ１４２から読み出す。ここで、パケットバッファ１４２における１エントリ分のデータは、パケットバッファ１４２へのデータ格納時に１サイクルで格納される量のデータにあたる。以下では、ヘッダに続く１エントリ分のデータを「ペイロード先頭部」と呼ぶ。本実施例では、１サイクルで８バイトのサイズのデータを取り扱うので、ヘッダ転送部１４３は、ペイロード先頭部としてペイロードの先頭から８バイトのデータを取得する。
【００４１】
その後、ヘッダ転送部１４３は、読み出したヘッダ及びペイロードの先頭の８バイトであるペイロード先頭部を含む図７に示す先頭データ２０２をヘッダ制御部１４５へ出力する。図７は、ヘッダ転送部からヘッダ制御部へ送られる先頭データのフォーマットの一例を表す図である。図７に示すように、先頭データ２０２は、１サイクル目にメモリアドレス、コマンド及びペイロード長が格納される。また、先頭データ２０２は、２サイクル目にペイロードの先頭の８バイトであるペイロード先頭部が格納される。
【００４２】
ヘッダ制御部１４５へ先頭データ２０２を出力した後、ヘッダアドレス格納テーブル１４４の解放を指示するヘッダ解放通知をヘッダ制御部１４５から受信するまで、ヘッダ転送部１４３は、ヘッダ制御部１４５がヘッダを処理中と判定する。その後、ヘッダ転送部１４３は、ヘッダ解放通知をヘッダ制御部１４５から受けると、通知したヘッダに対応するヘッダアドレス格納テーブル１４４のエントリを解放する。
【００４３】
例えば、ヘッダ転送部１４３は、ヘッダ制御部１４５のヘッダの処理状態を以下のような方法で判定する。ヘッダ転送部１４３は、先頭データ２０２をヘッダ制御部１４５へ出力すると、ヘッダ通知数を１に設定する。その後、ヘッダ転送部１４３は、ヘッダ解放通知をヘッダ制御部１４５から受けると、ヘッダ通知数を０に戻す。その後、未通知のヘッダがあれば、ヘッダ転送部１４３は、パケットバッファ１４２から先頭データ２０２を取得しヘッダ制御部１４５へ出力する。すなわち、ヘッダ転送部１４３は、ヘッダ通知数が０であればヘッダ制御部１４５がヘッダの処理を行っていないと判定し、ヘッダ通知数が１であれば、ヘッダ制御部１４５がヘッダの処理を行っていると判定する。このように、ヘッダ転送部１４３が、パケットの処理が終わった後に次のパケットをヘッダ制御部１４５へ送信することで、ヘッダ制御部１４５は、特定のパケットを処理した後に、後続パケットに対する処理を行うことになる。
【００４４】
ここで、本実施例ではペイロード先頭部の長さを８バイトとしたが、ペイロード先頭部のサイズに特に制限は無い。ペイロード先頭部を長くすることで、後述するように、パケットバッファ１４２へのアクセス回数を減らすことができ、レイテンシの削減をより向上させることができる。ただし、ペイロードの先頭部を長くした場合、先頭データ２０２の読み出し及びヘッダバッファ１４６への格納により時間がかかる。そこで、ペイロード先頭部の長さは、レイテンシの削減の確率の向上と先頭データ２０２の読み書きにかかる時間による遅延のバランスを考えて、運用に合わせて決定されることが好ましい。このペイロード先頭部が、「データの先頭から所定長の先頭部分」の一例にあたる。
【００４５】
ヘッダバッファ１４６は、レイテンシが短い、フリップフロップなどで組まれたバッファである。ヘッダバッファ１４６は、ヘッダ制御部１４５によりデータの格納及び読み出しが行われる。このヘッダバッファ１４６が、「ヘッダ格納部」の一例にあたる。
【００４６】
ヘッダ制御部１４５は、ヘッダ及びペイロード先頭部を含む先頭データ２０２の入力をヘッダ転送部１４３から受ける。そして、ヘッダ制御部１４５は、図８に示すように先頭データ２０２に含まれるヘッダ及びペイロードをヘッダバッファ１４６に格納する。図８は、ヘッダバッファのデータ格納状態の一例を表す図である。図８は、図５のようにパケットバッファ１４２にデータが格納されている場合を例に、ヘッダ制御部１４５が、データＡの先頭データ２０２を取得してヘッダバッファ１４６に格納した状態を表す。この場合、ヘッダ制御部１４５は、データＡに含まれるヘッダＡ及びペイロードＡのペイロード先頭部を含む先頭データ２０２を取得する。そして、ヘッダ制御部１４５は、ヘッダＡとペイロードＡのペイロード先頭部とを対応付けてヘッダバッファ１４６に格納する。
【００４７】
次に、ヘッダ制御部１４５は、読出アドレスにヘッダ分のアドレスを加算してペイロードを読み出すアドレスであるペイロード読出アドレスを算出する。ここで、本実施例では、ヘッダのサイズは１つのアドレスで表される領域に対応するので、ヘッダ制御部１４５は、読み出しアドレスに１を加算してペイロード読出アドレスとする。
【００４８】
次に、ヘッダ制御部１４５は、ヘッダバッファ１４６に格納したヘッダを解析し、ＤＭＡによる転送を行うデータのサイズを取得する。そして、ヘッダ制御部１４５は、ＤＭＡにより転送されるデータのサイズがペイロード先頭部のサイズ以下か否かを判定する。
【００４９】
ＤＭＡにより転送されるデータのサイズがペイロード先頭部のサイズより大きい場合、ヘッダ制御部１４５は、図９に示すペイロードの転送を指示するペイロード転送指示２０３をペイロード転送部１４７へ出力する。図９は、ペイロード転送指示のフォーマットの一例を表す図である。ペイロード転送指示２０３は、図９に示すように、メモリアドレス、バッファアドレス及びペイロード長が格納される。バッファアドレスは、パケットバッファ１４２からペイロードを読み出すための先頭のアドレスにあたり、ペイロード読出アドレスが格納される。
【００５０】
その後、ヘッダ制御部１４５は、メモリアクセス完了の通知をメモリコントローラ１３から受ける。そして、ヘッダ制御部１４５は、ヘッダ解放通知をヘッダ転送部１４３に出力する。さらに、ヘッダ制御部１４５は、ＤＭＡによるデータ転送の完了通知をＣＰＵコア１１へ出力する。
【００５１】
これに対して、ＤＭＡによる転送を行うデータのサイズがペイロード先頭部のサイズ以下の場合、ヘッダ制御部１４５は、ヘッダバッファ１４６に格納されたペイロードをＤＭＡ制御部１４８へ出力し、ＤＭＡ制御部１４８にＤＭＡによるデータの転送を行わせる。
【００５２】
ここで、メモリコントローラ１３へのＤＭＡ要求のフォーマットは、図１０及び１１に示すコマンドバス２０４及びデータバス２０５の２つに分かれる。図１０は、コマンドバスのフォーマットの一例を表す図である。また、図１１は、データバスのフォーマットの一例を表す図である。
【００５３】
コマンドバス２０４は、図１０に示すように、コマンド、バイトマスク及びメモリアドレスが格納される。コマンドは、パケットバッファ１４２から読み出したデータをＤＭＡによりメモリ１２に書き込む処理を行わせるためのコマンドである。バイトマスクは、キャッシュラインのデータが載らない位置をマスクするための情報である。また、メモリアドレスは、アクセスを実行する先頭の物理アドレスが格納される。
【００５４】
データバス２０５は、図１１に示すように、メモリアクセス単位を最大サイズとしてペイロードが格納される。本実施例では、メモリアクセス単位が８サイクルであるので、８サイクルで転送されるサイズを最大としてペイロードが格納される。
【００５５】
ここで、ヘッダ制御部１４５によるペイロードの転送を、コマンドバス２０４及びデータバス２０５を用いて具体的に説明する。ヘッダ制御部１４５は、先頭データ２０２を格納したヘッダバッファ１４６のメモリアドレス及びペイロード長からヘッダバッファ１４６におけるバイトマスクを計算してコマンドバス２０４を生成する。そして、ヘッダ制御部１４５は、生成したコマンドバス２０４をＤＭＡ制御部１４８へ出力する。次に、ヘッダ制御部１４５は、ペイロードをヘッダバッファ１４６から読み出してデータバス２０５を生成してＤＭＡ制御部１４８へ出力する。
【００５６】
その後、ヘッダ制御部１４５は、メモリアクセス完了の通知をメモリコントローラ１３から受ける。そして、ヘッダ制御部１４５は、ヘッダ解放通知をヘッダ転送部１４３に出力する。さらに、ヘッダ制御部１４５は、ＤＭＡによるデータ転送の完了通知をＣＰＵコア１１へ出力する。
【００５７】
ペイロード転送部１４７は、ＤＭＡによる転送を行うデータのサイズがペイロード先頭部のサイズより大きい場合、ペイロード転送指示２０３の入力をヘッダ制御部１４５から受ける。そして、ペイロード転送部１４７は、ペイロード読出アドレス及びパケットバッファ１４２に格納されたペイロードの長さをペイロード転送指示２０３から取得する。
【００５８】
ペイロード転送部１４７は、取得したペイロード読出アドレス及びペイロード長からパケットバッファ１４２におけるバイトマスクを計算してコマンドバス２０４を生成する。そして、ペイロード転送部１４７は、生成したコマンドバス２０４をＤＭＡ制御部１４８へ出力する。
【００５９】
その後、ペイロード転送部１４７は、ペイロードを読み出してデータバス２０５を生成してＤＭＡ制御部１４８へ出力する。具体的には、ペイロード転送部１４７は、ＤＭＡ制御部１４８へ転送していないペイロードがメモリアクセス単位以上残っている場合、メモリ転送単位分のペイロードを読み出す。そして、メモリアクセス単位分のペイロードの読み出しが完了すると、ペイロード転送部１４７は、読み出したメモリアクセス単位分のペイロードを用いてデータバス２０５を生成しＤＭＡ制御部１４８へ出力する。また、ＤＭＡ制御部１４８へ転送していないペイロードがメモリアクセス単位未満の場合、ペイロード転送部１４７は、残りのペイロードを読み出してデータバス２０５を生成しＤＭＡ制御部１４８へ出力する。
【００６０】
データバス２０５を出力後にＤＭＡ制御部１４８へ転送していないペイロードが残っている場合、ペイロード転送部１４７は、次のコマンドバス２０４を生成しＤＭＡ制御部１４８へ送信し、データバス２０５によるペイロードの転送を繰り返す。そして、ペイロード転送部１４７は、転送したペイロードのサイズがパケットバッファ１４２に格納されたペイロードの長さに達するとペイロードの転送を終了する。このペイロード転送部１４７が、「送信部」の一例にあたる。
【００６１】
ＤＭＡ制御部１４８は、ＤＭＡによる転送を行うデータのサイズがペイロード先頭部のサイズ以下の場合、コマンドバス２０４及びデータバス２０５の入力をヘッダ制御部１４５から受ける。そして、ＤＭＡ制御部１４８は、データバス２０５により送信されたペイロードを、コマンドバス２０４に格納されたバイトマスクを用いてコマンドバス２０４に格納されたメモリアドレスへ書き込む指示をメモリコントローラ１３に通知する。
【００６２】
また、ＤＭＡ制御部１４８は、ＤＭＡによる転送を行うデータのサイズがペイロード先頭部のサイズより大きい場合、コマンドバス２０４及びデータバス２０５の入力をペイロード転送部１４７から受ける。ＤＭＡ制御部１４８は、全てのペイロードが読み出されるまで、メモリアクセス単位毎にコマンドバス２０４及びデータバス２０５の入力を受ける。そして、ＤＭＡ制御部１４８は、データバス２０５により送信されたペイロードを、コマンドバス２０４に格納されたバイトマスクを用いてコマンドバス２０４に格納されたメモリアドレスへ書き込む指示をメモリコントローラ１３に通知する。
【００６３】
次に、図１２を参照して、書込制御部１４１によるパケットバッファ１４２へのパケット格納処理の流れについて説明する。図１２は、書込制御部によるパケットバッファへのパケット格納処理のフローチャートである。
【００６４】
書込制御部１４１は、パケットバッファ１４２に空きがあるか否かを確認する（ステップＳ１０１）。パケットバッファ１４２に空きがない場合（ステップＳ１０１：否定）、書込制御部１４１は、パケットのビジーをＩＯコントローラ１５に通知し（ステップＳ１０２）、その後、ステップＳ１０１へ戻る。
【００６５】
これに対して、パケットバッファ１４２に空きがある場合（ステップＳ１０１：肯定）、書込制御部１４１は、パケットをＩＯコントローラ１５から受信する（ステップＳ１０３）。
【００６６】
次に、書込制御部１４１は、記憶する書き込みアドレスから書き込みを開始して書き込み毎にアドレスを加算しつつ受信したパケットをパケットバッファ１４２に格納する（ステップＳ１０４）。最終的に、書込制御部１４１は、次のパケットの先頭の書込アドレスを保持する。
【００６７】
次に、書込制御部１４１は、格納したパケットのヘッダの書込アドレスを特定する。そして、書込制御部１４１は、格納したパケットのヘッダの書込アドレスをヘッダ転送部１４３に通知する（ステップＳ１０５）。
【００６８】
次に、書込制御部１４１は、ヘッダ転送部１４３に通知したヘッダの書込アドレスをヘッダアドレス格納テーブル１４４に格納する（ステップＳ１０６）。
【００６９】
次に、図１３を参照して、ヘッダ転送部１４３によるヘッダ転送処理の流れについて説明する。図１３は、ヘッダ転送部によるヘッダ転送処理のフローチャートである。
【００７０】
ヘッダ転送部１４３は、ヘッダ制御部１４５に未通知のヘッダがヘッダアドレス格納テーブル１４４にあるか否かを判定する（ステップＳ２０１）。未通知のヘッダが無い場合（ステップＳ２０１：否定）、ヘッダ転送部１４３は、ヘッダ制御部１４５に未通知のヘッダがヘッダアドレス格納テーブル１４４に格納されるまで待機する。
【００７１】
これに対して、ヘッダ制御部１４５に未通知のヘッダがヘッダアドレス格納テーブル１４４にある場合（ステップＳ２０１：肯定）、ヘッダ転送部１４３は、ヘッダ通知数が０か否かを判定する（ステップＳ２０２）。ヘッダ通知数が１の場合（ステップＳ２０２：否定）、ヘッダ転送部１４３は、ヘッダ通知数が０になるまで待機する。
【００７２】
これに対して、ヘッダ通知数が０の場合（ステップＳ２０２：肯定）、ヘッダ転送部１４３は、ヘッダアドレス格納テーブル１４４に格納されたアドレスを用いて、ヘッダ及びペイロード先頭部をパケットバッファ１４２から読み出す（ステップＳ２０３）。
【００７３】
そして、ヘッダ転送部１４３は、読み出したヘッダ及びペイロード先頭部を含む先頭データ２０２をヘッダ制御部１４５へ出力する（ステップＳ２０４）。
【００７４】
次に、ヘッダ転送部１４３は、ヘッダ通知数を１に設定する（ステップＳ２０５）。
【００７５】
その後、ヘッダ転送部１４３は、ヘッダ解放通知をヘッダ制御部１４５から受信する（ステップＳ２０６）。
【００７６】
そして、ヘッダ制御部１４５は、ヘッダ通知数を０に設定し、さらに、ヘッダアドレス格納テーブル１４４のエントリを解放する（ステップＳ２０７）。
【００７７】
次に、図１４を参照して、ヘッダ制御部１４５によるヘッダ制御処理の流れについて説明する。図１４は、ヘッダ制御部によるヘッダ制御処理のフローチャートである。
【００７８】
ヘッダ制御部１４５は、先頭データ２０２をヘッダ転送部１４３から受信する（ステップＳ３０１）。
【００７９】
次に、ヘッダ制御部１４５は、受信した先頭データ２０２に含まれるヘッダ及びペイロード先頭部をヘッダバッファ１４６に格納する（ステップＳ３０２）。
【００８０】
次に、ヘッダ制御部１４５は、ヘッダ情報からＤＭＡを行うメモリアドレスを取得する（ステップＳ３０３）。
【００８１】
次に、ヘッダ制御部１４５は、パケットバッファ１４２の読出アドレスにヘッダ分のアドレスを加算して、ペイロードを読み出すアドレスであるペイロード読出アドレスを算出する（ステップＳ３０４）。
【００８２】
次に、ヘッダ制御部１４５は、ペイロード長がペイロード先頭部の長さ以下か否かを判定する（ステップＳ３０５）。ペイロード長がペイロード先頭部よりも長い場合（ステップＳ３０５：否定）、ヘッダ制御部１４５は、ペイロード読出アドレスを含むペイロード転送指示２０３をペイロード転送部１４７へ発行する（ステップＳ３０６）。
【００８３】
これに対して、ペイロード長がペイロード先頭部の長さ以下の場合（ステップＳ３０５：肯定）、ヘッダ制御部１４５は、ヘッダバッファ１４６のメモリアドレス及びデータ長からバイトマスクを計算してコマンドバス２０４を生成して、ＤＭＡ制御部１４８へ発行する（ステップＳ３０７）。
【００８４】
次に、ヘッダ制御部１４５は、ヘッダバッファ１４６に格納したペイロードを含むデータバス２０５を生成してＤＭＡ制御部１４８へ発行する（ステップＳ３０８）。
【００８５】
その後、ヘッダ制御部１４５は、ＤＭＡ完了通知をメモリコントローラ１３から受信する（ステップＳ３０９）。
【００８６】
次に、ヘッダ制御部１４５は、ヘッダの解放をヘッダ転送部１４３に通知する（ステップＳ３１０）。
【００８７】
次に、ヘッダ制御部１４５は、ペイロード長をペイロード読出アドレスに加算して次のヘッダの読出アドレスを算出する（ステップＳ３１１）。
【００８８】
次に、図１５を参照して、ペイロード転送部１４７によるペイロード転送処理の流れについて説明する。図１５は、ペイロード転送部によるペイロード転送処理のフローチャートである。
【００８９】
ペイロード転送部１４７は、ペイロード転送指示２０３をヘッダ制御部１４５から受信する（ステップＳ４０１）。
【００９０】
次に、ペイロード転送部１４７は、ペイロード転送指示２０３で指定されたペイロード読出アドレスをパケットバッファ１４２の読出アドレスに設定する（ステップＳ４０２）。
【００９１】
次に、ペイロード転送部１４７は、ペイロード転送指示２０３で指定されたメモリアドレス及びデータ長からバイトマスクを計算してコマンドバス２０４を生成する（ステップＳ４０３）。
【００９２】
次に、ペイロード転送部１４７は、パケットバッファ１４２の読出アドレスからペイロードを読み出す（ステップＳ４０４）。
【００９３】
次に、ペイロード転送部１４７は、読出アドレスに１を加算する（ステップＳ４０５）。
【００９４】
次に、ペイロード転送部１４７は、指定されたペイロード読出アドレスにペイロード長を加算した最終アドレスを算出する。そして、ペイロード転送部１４７は、最終アドレスと読出アドレスとが等しいか否かを判定する（ステップＳ４０６）。
【００９５】
最終アドレスと読出アドレスとが等しくない場合（ステップＳ４０６：否定）、ペイロード転送部１４７は、メモリアクセス単位分のペイロードの読み出しを完了したか否かを判定する（ステップＳ４０７）。メモリアクセス単位分のペイロードの読み出しが完了していない場合（ステップＳ４０７：否定）、ペイロード転送部１４７は、ステップＳ４０４へ戻る。これに対して、メモリアクセス単位分のペイロードの読み出しが完了した場合（ステップＳ４０７：肯定）、ペイロード転送部１４７は、ステップＳ４０３へ戻る。
【００９６】
一方、最終アドレスと読出アドレスとが等しい場合（ステップＳ４０６：肯定）、ペイロード転送部１４７は、ペイロード転送処理を終了する。
【００９７】
さらに、図１６及び１７を参照して、ヘッダバッファ１４６からのペイロードの転送を行う場合とヘッダバッファ１４６からのペイロードの転送を行わない場合とを比較する。図１６は、ヘッダバッファからの転送を行う場合のペイロード転送を表すタイムチャートである。図１７は、ヘッダバッファからの転送を行わない場合のペイロード転送を表すタイムチャートである。
【００９８】
図１６及び１７は横軸でクロック数を表す。また、図１６及び１７の紙面に向かって左側の記載は、タイムチャートの各段階で実行される処理の内容及び使用するアドレスを表す。ここでは、ヘッダＡ及びペイロードＡを有するパケットＡをＤＭＡにより受信する場合で説明する。また、ペイロードＡは、１サイクル分以下のサイズであり、ペイロード先頭部より短いサイズを有する。図１６及び１７では、ヘッダＡをＨＤ−Ａ、ペイロードＡをＡ００と表す。
【００９９】
図１６を用いて、ヘッダバッファ１４６からのペイロードの転送を行う場合の処理の流れについて説明する。書込制御部１４１は、最初にパケットバッファ１４２の書込アドレスとして０を有する。３クロック目で、書込制御部１４１は、ヘッダＡを受信する。４クロック目で、書込制御部１４１は、ペイロードＡを受信するとともに、書込アドレスに対応するパケットバッファ１４２の領域にヘッダＡを書き込み、書込アドレスを１つインクリメントする。５クロック目で、書込制御部１４１は、書込アドレスに対応するパケットバッファ１４２の領域にペイロードＡを書き込み、書込アドレスを１つインクリメントする。６クロック目で、書込制御部１４１は、ヘッダ書込アドレスをヘッダ転送部１４３へ通知する。７クロック目で、書込制御部１４１は、通知したヘッダ書込アドレスをヘッダアドレス格納テーブル１４４に格納する。これにより、ヘッダアドレス格納テーブル１４４にヘッダ書込アドレスとして０が格納される。
【０１００】
６クロック目で、ヘッダ転送部１４３は、ヘッダ書込アドレスの通知を書込制御部１４１から受ける。７クロック目で、ヘッダ転送部１４３は、ヘッダアドレス格納テーブル１４４における未通知のヘッダＡの存在を確認する。未通知のヘッダＡが存在するので、８クロック目で、ヘッダ転送部１４３は、パケットＡのヘッダの読出を決定する。９クロック目で、ヘッダ転送部１４３は、ヘッダアドレス格納テーブル１４４からヘッダ書込アドレスを取得して、パケットバッファ１４２に対する読出アドレスとしてセットする。１０クロック目で、ヘッダ転送部１４３は、セットした読出アドレスに対応するパケットバッファ１４２の領域からの読み出しをパケットバッファ１４２に指示する。１１クロック目で、ヘッダ転送部１４３は、読出アドレスに対応するパケットバッファ１４２の領域からヘッダＡを取得するとともに、読出アドレスを１つインクリメントする。１２クロック目で、ヘッダ転送部１４３は、読み出したヘッダＡを読出レジスタに格納するとともに、読出アドレスに対応するパケットバッファ１４２の領域からペイロードＡを取得し、読出アドレスを１つインクリメントする。１３クロック目で、ヘッダ転送部１４３は、読出レジスタに格納したヘッダＡをヘッダ制御部１４５へ送信するとともに、読み出したペイロードＡを読出レジスタに格納する。１４クロック目で、ヘッダ転送部１４３は、読出レジスタに格納したペイロードＡをヘッダ制御部１４５へ送信する。
【０１０１】
ヘッダ制御部１４５は、１３クロック目で先頭データ２０２のうちのヘッダＡを受信してヘッダバッファ１４６へ送信し、１４クロック目で先頭データ２０２のうちのペイロードＡを受信してヘッダバッファ１４６へ送信する。１４クロック目以降、ヘッダバッファ１４６にはヘッダＡが格納される。また、１５クロック目以降、ヘッダバッファ１４６にはペイロードＡが格納される。そして、１４クロック目で、ヘッダ制御部１４５は、ヘッダバッファ１４６に格納されたヘッダＡの解析を行う。１５クロック目で、ヘッダ制御部１４５は、ペイロード読出アドレスを算出する。１６クロック目で、ヘッダ制御部１４５は、ペイロードＡの長さがペイロード先頭部以下であることを確認して、自己によるペイロード転送を決定し、１７クロック目でＤＭＡ発行を決定する。
【０１０２】
１８クロック目で、ＤＭＡ制御部１４８は、ヘッダＡを含むコマンドバス２０４及びペイロードＡを含むデータバス２０５を取得する。その後、ＤＭＡ制御部１４８は、取得したコマンドバス２０４及びデータバス２０５を用いてＤＭＡによりヘッダＡ及びペイロードＡをメモリ１２に格納する。
【０１０３】
次に、図１７を用いて、ヘッダバッファ１４６からのペイロードの転送を行わない場合の処理の流れについて説明する。ここでは、本実施例に係るＤＭＡコントローラ１４が、ペイロード長がペイロード先頭部の長さ以下である場合にも、パケットバッファ１４２からペイロードを転送する場合を仮定して説明する。書込制御部１４１、ヘッダ転送部１４３及びヘッダ制御部１４５は、１５クロック目まで同様の動作を行う。そして、１６クロック目で、ヘッダ制御部１４５は、ペイロードＡの長さがペイロード先頭部以下であるが、ペイロード転送部１４７にペイロード転送させることを決定する。
【０１０４】
１７クロック目で、ペイロード転送部１４７は、ヘッダ制御部１４５から送信されたペイロード転送指示２０３を受信する。１８クロック目で、ペイロード転送部１４７は、ペイロード転送指示２０３で指定されたペイロード読出アドレスである１を読出アドレスにセットする。１９クロック目で、ペイロード転送部１４７は、セットした読出アドレスに対応するパケットバッファ１４２の領域からの読み出しをパケットバッファ１４２に指示する。２０クロック目で、ペイロード転送部１４７は、読出アドレスに対応するパケットバッファ１４２の領域からペイロードＡを取得するとともに、読出アドレスを１つインクリメントする。その後、ペイロード転送部１４７は、コマンドバス２０４及びデータバス２０５を生成してＤＭＡ制御部１４８へ出力する。
【０１０５】
１８クロック目で、ＤＭＡ制御部１４８は、ヘッダＡを含むコマンドバス２０４及びペイロードＡを含むデータバス２０５をペイロード転送部１４７から取得する。その後、ＤＭＡ制御部１４８は、取得したコマンドバス２０４及びデータバス２０５を用いてＤＭＡによりヘッダＡ及びペイロードＡをメモリ１２に格納する。
【０１０６】
ここで、図１６の処理の流れと図１７の処理の流れとを比較した場合、図１６の処理は、図１７の処理に比べて、図１６における時間Ｔ分だけレイテンシを削減することができる。従来のＤＭＡによるデータ転送においても、図１７の場合と同様に、パケットバッファ１４２に対して２回アクセスしてデータを読み出すことが行われる。すなわち、本実施例に係るＤＭＡコントローラ１４は、従来のＤＭＡコントローラに比べて、レイテンシを削減することができる。
【０１０７】
以上に説明したように、本実施例に係るＤＭＡコントローラは、ショートメッセージのように長さが短いペイロードの場合に、パケットバッファに対する１回のアクセスでペイロードの転送を実現することができる。したがって、本実施例に係るＤＭＡコントローラは、従来のＤＭＡコントローラに比べて短いペイロードの場合にレイテンシを削減することができる。ペイロードが短いメッセージには、他にも、通信の確立に用いる情報をハンドシェイクするためのメッセージや、非連続なメモリアクセスを行うプログラムが短いアクセスを何回も行うために発行するメッセージなどがある。
【０１０８】
すなわち、本実施例に係るＤＭＡコントローラは、ＤＭＡによるデータ転送において、大規模なデータを処理する場合は高密度実装のバッファからペイロードを読み出すことでスループット性能を向上させることができる。また、本実施例に係るＤＭＡコントローラは、ＤＭＡによるデータ転送において、短いデータを処理する場合は高密度実装のバッファへのアクセスを削減して、メモリアクセスを低レイテンシにすることができる。
【符号の説明】
【０１０９】
１  並列計算機
１０  計算ノード
１１  ＣＰＵコア
１２  メモリ
１３  メモリコントローラ
１４  ＤＭＡコントローラ
１５  ＩＯコントローラ
１４１  書込制御部
１４２  パケットバッファ
１４３  ヘッダ転送部
１４４  ヘッダアドレス格納テーブル
１４５  ヘッダ制御部
１４６  ヘッダバッファ
１４７  ペイロード転送部
１４８  ＤＭＡ制御部
【図１】
2019159846.tif 000003
【図２】
2019159846.tif 000004
【図３】
2019159846.tif 000005
【図４】
2019159846.tif 000006
【図５】
2019159846.tif 000007
【図６】
2019159846.tif 000008
【図７】
2019159846.tif 000009
【図８】
2019159846.tif 000010
【図９】
2019159846.tif 000011
【図１０】
2019159846.tif 000012
【図１１】
2019159846.tif 000013
【図１２】
2019159846.tif 000014
【図１３】
2019159846.tif 000015
【図１４】
2019159846.tif 000016
【図１５】
2019159846.tif 000017
【図１６】
2019159846.tif 000018
【図１７】
2019159846.tif 000019