JP6273972B2 - 情報処理装置、送受信装置、及び情報処理装置の制御方法 - Google Patents

情報処理装置、送受信装置、及び情報処理装置の制御方法 Download PDF

Info

Publication number
JP6273972B2
JP6273972B2 JP2014072110A JP2014072110A JP6273972B2 JP 6273972 B2 JP6273972 B2 JP 6273972B2 JP 2014072110 A JP2014072110 A JP 2014072110A JP 2014072110 A JP2014072110 A JP 2014072110A JP 6273972 B2 JP6273972 B2 JP 6273972B2
Authority
JP
Japan
Prior art keywords
packet
identifier
timeout
flag
cto
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
JP2014072110A
Other languages
English (en)
Other versions
JP2015194874A (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 JP2014072110A priority Critical patent/JP6273972B2/ja
Priority to US14/658,682 priority patent/US9769013B2/en
Publication of JP2015194874A publication Critical patent/JP2015194874A/ja
Application granted granted Critical
Publication of JP6273972B2 publication Critical patent/JP6273972B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal

Description

本発明は、情報処理装置、送受信装置、及び情報処理装置の制御方法に関する。
情報処理装置に搭載された演算処理装置としてのCPU(Central Processing Unit)は、入出力装置としてのIO(Input Output)装置からデータを取得して処理を行う。情報処理装置では、CPUとIO装置間の通信は、その通信用のデバイス(以降「通信装置」と表記)を介して行わせるのが普通である。その通信装置とは、具体的には、ブリッジ、或いはスイッチ等である。
各通信装置は、採用された規格に従って通信を行う。高速な処理の実現には、高速なデータ伝送が要求される。このことから、最近では、高速なデータ伝送が可能なPCIe(PCI Express)規格が採用される場合がある。
PCIeではスプリット・トランザクション方式によりデータ通信を行う。スプリット・トランザクション方式では、データを要求する側のデバイス(リクエスタ)は、ある要求のためのパケット(リクエスト)を送信した後、その応答(例えばリード要求の応答であるコンプリーション)を応答者(コンプリータ)から受信するのを待たずに別のリクエストを送信することが可能である。そのため、パケットを用いた通信をより効率的に行うことができる。応答者は、通常IO装置である。
スプリット・トランザクション方式では、1台のIO装置が処理すべきリクエストの数が複数になる場合がある。それらリクエストがリード要求のためのリクエストであった場合、それらリクエストのコンプリーションはリクエスト送信順とは異なる順序で送信されることがある。このため、リクエスタは、リクエストとコンプリーションの対応関係を特定しなければならない。それらの対応関係は、リクエストにタグと呼ばれる識別子を格納することで対応可能となっている。
タグは有限な資源である。使用可能なタグの数は例えば32、或いは256である。そのため、リクエスタは、使用可能なタグの中から一つを選択し、リクエストに付加する。一方のコンプリータは、リクエストに含まれるタグと同一のタグをコンプリーションに付加する。これにより、リクエスタは、リクエストとコンプリーションを一意に対応付けることができる。
リクエストに付加されたタグは、そのタグが付与されたコンプリーションが返信された時点で返却され、再び使用可能となる。しかし、タグは有限な資源であることから、使用可能なタグが無くなった場合、リクエスタはリクエストを生成できなくなり、新たなリクエストの発行は停止する。
伝送エラー等、何らかの原因によりコンプリーションが返信されない場合がある。コンプリーションの未返信を検出するために、PCIe規格にはCTO(Completion Timeout)と呼ぶメカニズム(オプション)がある。このCTOは、あらかじめ定められた時間内にコンプリーションが返信されなかった場合に、そのコンプリーションの未返信をエラーとして検出する。CTOが発生した場合、当該リクエストは破棄され、そのリクエストに付加されていたタグは返却される。以降、CTOはエラー種別を表す意味でも用いる。
CTOは、伝送エラー等によりリクエスト、或いはコンプリーションが消失した場合に発生する。しかし、別の要因によっても発生する可能性がある。その別の要因として、コンプリータ側の高負荷状態による応答の遅延が挙げられる。つまり、高負荷状態のコンプリータは、リクエスタ側がCTOを検出した後に、コンプリーションを送信することがある。
リクエスタ側は、CTOの検出により、再度リクエストを発行する。そのリクエスタ側がCTOを検出した時点で、そのCTOが発生したリクエストのタグは使用可能となる。そのため、その時点で使用可能なタグの数、及びその時点以降に発行されるリクエストの数の関係等により、CTOが発生したリクエストのタグがそのリクエストとは異なるリクエストに使用される可能性がある。しかし、リクエスタ側がCTOを検出した後、コンプリーションが返信される可能性がある。これらは、要求内容が異なり、且つ短時間内に発行される少なくとも2つのリクエストに同一のタグが付与される可能性があることを意味する。
コンプリータ側は、上記のように、コンプリーションをリクエスト送信順とは異なる順序で送信することがある。このため、要求内容が異なり、且つ短時間内に発行した少なくとも2つのリクエストに同一のタグを付与した場合、リクエスタ側はリクエストとコンプリーションを適切に一意に対応付けることができない。処理結果を確認できない以上、リクエスタ側はリクエストを再発行しなければならない。そのようなリクエストの再発行は、単位時間当たりに有効なリクエストをリクエスタが発行できる数を減少させることから、性能を低下させる要因となる。
CTOが発生したリクエストのタグの使用を一定時間、禁止にすれば、要求内容が異なり、且つ短時間内に発行される少なくとも2つのリクエストへの同一のタグの付与は回避させることができる。しかし、タグは有限の資源であるため、タグを一定時間、使用できなくすることは、同時に発行可能なリクエストの数を減少させることに相当する。従い、タグを一定時間、使用できなくすることは、性能を低下させる要因となりうる。
このようなことから、タグの使用の制限を抑制しつつ、言い換えれば、同時に発行可能なリクエストの数の減少を抑制しつつ、リクエストとコンプリーションの対応関係を適切に特定可能にすることが重要と思われる。
なお、特許文献1及び2には、以下の内容が開示されている。
PCI-Expressによって接続される各モジュールに固有のノードIDを設定する。また、相手モジュールにデータを書き込む(PUT転送)、相手モジュールからデータを読み出す(GET転送)のそれぞれに専用のチャネルを設け、各チャネルにチャネルIDを設定する。そして、PCI-Expressに従って転送されるトランザクションレイヤパケットのヘッダのアドレス部内に、前記ノードIDとチャネルIDを設定するとともに、リクエストであるかレスポンスであるのかを識別するパケットタイプを設定する。
そしてデータ転送には、アドレスルーティングでルーティングされるメモリライトリクエストパケットのみを使用する。また、リクエストの場合には必ずレスポンスパケット(レスポンスタイプのメモリライトリクエストパケット)により応答する。
特開2006−302250号公報 特開2007−316755号公報
一側面では、本発明は、タグの使用の制限を抑制しつつ、リクエストとコンプリーションの対応関係を適切に特定可能にするための技術を提供することを目的とする。
本発明を適用した1システムは、演算処理装置と、複数の入出力装置と、演算処理装置と複数の入出力装置間の通信をそれぞれ行う複数の通信装置とを備え、複数の通信装置のうち、第1のパケットを送信する第1の通信装置は、第1のパケットの識別用に割り当てられる第1の識別子毎に、第1の識別子と共に割り当てる第2の識別子を表す状況情報を記憶した記憶部と、第1の通信装置宛のパケットを受信する受信部と、第1のパケットが要求する処理の実行結果を表す第2のパケットの受信部による受信結果に基づき、記憶部に記憶された状況情報を更新する更新部と、記憶部に記憶された状況情報に基づき、第1のパケットに割り当てる第1の識別子と第2の識別子を決定する決定部と、決定部が決定した第1の識別子と第2の識別子とを格納した第1のパケットを生成して送信する第1の送信部とを有し、複数の通信装置のうち、第1のパケットの送信先となる第2の通信装置は、第1の通信装置が送信した第1のパケットへの応答として第2のパケットを送信する場合、第1のパケットに格納されている第2の識別子を第2のパケットに格納して送信する第2の送信部とを有する。
本発明を適用した場合には、タグの使用の制限を抑制しつつ、リクエストとコンプリーションの対応関係を適切に特定することができる。
本実施形態による情報処理装置の構成例を説明する図である。 パケット送受信装置の構成例を説明する図である。 CTOテーブルの構成例を説明する図である。 CTOが検出される場合に、リクエスタとコンプリータ間で行われる通信例を説明するシーケンス図である。 リクエストパケットの構成を説明する図である。 コンプリーションパケットの構成を説明する図である。 CTO検出時のリクエスタの動作の流れを表すフローチャートである。
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図1は、本実施形態による情報処理装置の構成例を説明する図である。本実施形態による情報処理装置1は、図1に表すように、演算処理装置としてのCPU(Central Processing Unit)11、メモリ(メモリモジュール)12、スイッチ13、及び複数のエンドポイント14(14−0〜14−3)を備えている。図1に表す構成例は1例であり、情報処理装置1の構成は図1に表す構成例に限定されない。
CPU11は、1つ以上のCPUコア110、及びルートコンプレックス111を備える。図1には、CPU11の主要な構成要素のみを表している。CPU11の構成も図1に表す構成例に限定されない。
エンドポイント14は、IO装置との接続用のインターフェースとなるデバイスである。具体的には、エンドポイント14は、グラフィックカード、LAN(Local Area Network)カード、或いは他のコントローラ等である。図1では、エンドポイント14と接続されているIO装置は省略している。
スイッチ13は、例えばPCIe規格に沿ってデータ(パケット)伝送を行う通信装置である。ルートコンプレックス111、及び各エンドポイント14もPCIe規格に沿った通信を行う通信装置である。
ルートコンプレックス111、及び各エンドポイント14は共に、状況により、処理を要求するリクエスタ、及び要求された処理を実行するコンプリータの何れの役割も担う通信装置である。つまり、PCIe規格に沿って送信されるパケットの起点、或いは終点となる通信装置である。ルートコンプレックス111、及び各エンドポイント14には、本実施形態による送受信装置であるパケット送受信装置20が搭載されている。
図2は、パケット送受信装置の構成例を説明する図である。図2に表すように、そのパケット送受信装置20は、パケット受信モジュール21、送信パケット生成モジュール22、及びタグ管理モジュール23を備えている。タグ管理モジュール23は、記憶部231、CTOテーブル更新部(図2中「CTO-Table更新」と表記)232、及び使用可能タグ管理部233を備えている。
パケット受信モジュール21は、スイッチ13から送信されたパケットを受信するためのモジュールであり、CTOを検出するためのタイマ(図2中「CTO TIMER」と表記)21aを備えている。このタイマ21aは、送信パケット生成モジュール22の制御により計時をスタートする。
送信パケット生成モジュール22は、パケットを生成して送信するモジュールである。パケットの生成指示は、リクエスタがルートコンプレックス111であった場合、CPUコア110が主に行う。リクエスタがエンドポイント14であった場合、主に接続されているIO装置の指示により、パケットが生成される。パケット受信モジュール21が受信したパケットは、パケットの生成を指示可能なCPUコア110、或いはIO装置に出力される。以降、便宜的に、リクエスタ、或いはコンプリータにパケットの送信を指示するものを「マスタデバイス」と表記する。
パケットが処理の要求のためのパケット(以降「リクエストパケット」と表記)であった場合、そのリクエストパケットには識別子とする番号であるタグが付与される。タグ管理モジュール23は、リクエストパケットに付与されるタグを管理するモジュールである。記憶部231には、タグを管理するためのCTOテーブル(図2中「CTO-Table」と表記)が記憶されている。
図3は、CTOテーブルの構成例を説明する図である。図3中、「tag」の右側に表記の「0」〜「2」、及び「n」は、それぞれタグの実際の番号を表している。それにより、CTOテーブルは、タグ毎に、「TagBusy」と表記の使用状況情報、「CTOinfo1」及び「CTOinfo2」と表記の2つのCTO状況情報を1エントリ(レコード)に格納した構成となっている。
TagBusy(使用状況情報)、CTOinfo1及びCTOinfo2の各CTO状況情報は全て1ビットの情報である。TagBusyは、対応するタグが使用中か否かを表す情報である。図3中に表記の「0」は、対応するタグが未使用であることを表している。対応するタグが使用中であった場合、TagBusyの値は1となる。
CTOinfo1は、対応するタグを付与したリクエストパケットがCTOを発生させたか否かを表す情報である。本実施形態では、CTOの発生により、再送するリクエストパケットに対し、タグとは別の識別子とする1ビットのフラグ(以降「CTO-Flag」と表記)を付与するようにしている。その1ビットのCTO-Flagの値は1である。CTOinfo2は、CTO-Flagを付与したリクエストパケットがCTOを発生させたか否かを表す情報である。
CTO-Flagが付与されたリクエストパケットを受信したコンプリータは、その応答であるパケット(以降「コンプリーションパケット」と表記)にも同じCTO-Flagを付与する。そのため、リクエスタは、同一のタグを付与した2つのリクエストパケットに対するコンプリーションパケットをそれぞれ受信したとしても、CTO-Flagによって、リクエストパケットとコンプリーションパケットの対応関係を適切に特定することができる。CTOが発生したリクエストパケットのタグは直ちに再利用が可能であり、同時に発行可能なリクエストパケットの数の減少は回避、或いは抑制させることができる。このようなことから、リクエストパケットを発行できないことによる情報処理装置1の性能劣化も回避、或いは抑制される。リクエストパケットとコンプリーションパケットの対応関係の特定はパケット受信モジュール21によって行われる。
CTOテーブル更新部232は、パケット受信モジュール21から入力する情報により、CTOテーブルを更新する。
送信パケット生成モジュール22は、リクエストパケットを生成・送信する場合、タイマ21aをスタートさせ、そのリクエストパケットに付与したタグ、及びCTO-Flagの有無をパケット受信モジュール21に通知する。それにより、パケット受信モジュール21は、CTOを検出した場合、CTOを検出したリクエストパケットに付与されたタグ、及びCTO-Flagの有無を特定する。パケット受信モジュール21は、CTOテーブル更新部232に対し、CTOを検出した旨を通知すると共に、特定したタグ、及びCTO-Flagの有無を通知する。コンプリーションパケットを受信した場合、パケット受信モジュール21は、返却する(利用可能にする)タグとして、受信したコンプリーションパケットのタグを通知する。
CTOテーブル更新部232は、パケット受信モジュール21からCTOの検出が通知された場合、通知されたCTO-Flagの有無に応じて、通知されたタグのエントリに格納されているCTOinfo1、及びCTOinfo2を更新する。その更新は、以下のようにして行われる。
(1)CTO-Flag無し、且つ(CTOinfo1,CTOinfo2)=(0,0)の場合
(CTOinfo1,CTOinfo2)=(1,0)
(2)CTO-Flag有り、且つ(CTOinfo1,CTOinfo2)=(1,)の場合
(CTOinfo1,CTOinfo2)=(1,1)
ケース(1)は、CTO-Flagを格納していないリクエストパケットにCTOが検出されたケースである。本実施形態では、コンプリーションパケットの受信によりタグを利用可能にするとき、つまりTagBusyの値を0にするとき、CTOinfo1、及びCTOinfo2の値を共に0に更新するようにしている。そのため、CTO-Flagを格納していないリクエストパケットにCTOが検出された場合、CTOinfo1、及びCTOinfo2の各値は必ず0となっている。
ケース(2)は、CTOを検出した後、CTO-Flagを格納していないリクエストパケットのコンンプリーションを受信することなく、CTO-Flagを格納したリクエストパケットに更にCTOを検出したケースである。
ケースとしては、他に、CTOを検出した後、CTO-Flagを格納していないリクエストパケットのコンンプリーションを受信し、更にその後、CTO-Flagを格納したリクエストパケットにCTOを検出したケースが考えられる。しかし、コンプリーションの受信により、タグは利用可能とされ、その後のCTOの検出、或いはコンプリーションパケットの受信により、CTOinfo1、及びCTOinfo2の更新は行われない。そのため、このケースは対象外となる。
本実施形態では、(CTOinfo1,CTOinfo2)=(1,1)となったタグは一時的に利用禁止にしている。これは、コンプリーションの受信を遅延させる要因以外の要因が考えられるためである。
一方、パケット受信モジュール21から返却する(利用可能にする)タグが通知された場合、CTOテーブル更新部232は、通知されたタグのエントリに格納されたTagBusyを0に更新する。CTOinfo1及びCTOinfo2の各値は、上記のように、それまでの値に係わらず、全て0に更新される。
送信パケット生成モジュール22は、マスタデバイスからの要求により、リクエストパケットを生成し、パケット受信モジュール21によるCTOの検出により、再送するリクエストパケットを生成する。また、マスタデバイスからの要求により、コンプリーションパケットを生成する。
マスタデバイスからリクエストパケットの送信を要求された送信パケット生成モジュール22は、使用可能タグ管理部233に、使用可能なタグを問い合わせる。使用可能タグ管理部233は、その問い合わせにより、使用可能なタグ、及びCTO-Flagの付与の有無を送信パケット生成モジュール22に通知する。このため、送信パケット生成モジュール22は、リクエストパケットに対して、使用可能タグ管理部233から指示されたタグを付与し、CTO-Flagを必要に応じて付与する。使用可能なタグが存在しない場合、使用可能タグ管理部233からその旨が送信パケット生成モジュール22に通知され、リクエストパケットは生成されない。
パケット受信モジュール21がCTOを検出した場合、その旨が例えばタグと共に送信パケット生成モジュール22に通知される。その通知により、送信パケット生成モジュール22は、必要に応じてリクエストパケットの再送を行う。そのリクエストパケットの再送のために、送信パケット生成モジュール22は、例えばCTOが検出されたリクエストパケットのタグを使用可能タグ管理部233に通知し、CTO-Flagの付与の有無を使用可能タグ管理部233に問い合わせる。このため、送信パケット生成モジュール22は、使用可能タグ管理部233からCTO-Flagの付与を指示された場合に、リクエストパケットにCTO-Flagを付与する。
CTO-Flagの付与の有無は、CTOinfo1、及びCTOinfo2から、以下のように使用可能タグ管理部233は判定する。ここでは、“CTO-Flag=0”は、CTO-Flagを付与しないことを表し、“CTO-Flag=1”はCTO-Flagを付与することを表している。
(a)(CTOinfo1,CTOinfo2)=(0,0)の場合、CTO-Flag=0
(b)(CTOinfo1,CTOinfo2)=(0,1)の場合、CTO-Flag=0
(c)(CTOinfo1,CTOinfo2)=(1,0)の場合、CTO-Flag=1
(d)(CTOinfo1,CTOinfo2)=(1,1)の場合、タグの利用禁止
本実施形態では、リクエストパケットの再送は1回のみ行うようにさせている。2回目のリクエストパケットを再送する状況では、つまり2回、送信したリクエストパケットの全てにCTOが発生した状況では、(CTOinfo1,CTOinfo2)=(1,1)となる。このことから、(CTOinfo1,CTOinfo2)=(1,1)となったタグは一時的に利用が禁止される。(CTOinfo1,CTOinfo2)=(1,1)となっている場合、使用可能タグ管理部233はリクエストパケットの送信の中止を送信パケット生成モジュール22に通知する。
使用可能タグ管理部233は、送信パケット生成モジュール22から使用可能なタグが問い合わせられた場合、記憶部231のCTOテーブルを参照し、TagBusyの値が0となっているエントリを探索する。その探索により、TagBusyの値が0となっているエントリを抽出できなかった場合、使用可能タグ管理部233は、その旨を送信パケット生成モジュール22に通知する。この結果、送信パケット生成モジュール22は、リクエストパケットの生成を停止する。
一方、探索によってTagBusyの値が0となっているエントリを抽出できた場合、使用可能タグ管理部233は、抽出できたエントリのタグを送信パケット生成モジュール22に通知し、そのエントリのTagBusyの値を1に更新する。使用可能タグ管理部233は、そのエントリのCTOinfo1、及びCTOinfo2から、CTO-Flagの付与の有無を判定し、その判定結果を送信パケット生成モジュール22に通知する。このとき、CTOinfo1、及びCTOinfo2の各値は共に0であることから、CTO-Flagは付与しないと判定される。
このようにして、リクエストパケットには、タグの他にCTO-Flagが状況に応じて割り当てられ付与(格納)される。そのため、同じタグを短時間内に複数のリクエストパケットに付与させたとしても、リクエスタは、リクエストパケットとコンプリーションパケット間の対応関係を適切に特定することができる。
図4は、CTOが検出される場合に、リクエスタとコンプリータ間で行われる通信例を説明するシーケンス図である。次に図4を参照し、CTOが検出される場合のリクエスタとコンプリータの動作について具体的に説明する。上記のように、未使用のタグmのエントリには、それぞれ値が0のTagBusy、CTOinfo1、CTOinfo2が格納されている。
リクエスタは、マスタデバイスからの要求により、CTO-Flagを格納していないリクエストパケットである第1のリクエストパケット401を生成・送信する。その第1のリクエストパケット401に付与されたのはタグmである。このため、CTOテーブルのタグmのエントリ中のTagBusyの値は、使用可能タグ管理部233によって0から1に更新される。
第1のリクエストパケット401が伝送エラー等の遅延の要因以外の要因によりコンプリータに受信されないか、或いはコンプリータが送信したコンプリーションが何らかの要因によりリクエスタに受信されない場合、リクエスタはCTOを検出する。その結果、CTOテーブルのタグmのエントリでは、CTOテーブル更新部232によってCTOinfo1の値は0から1に更新される。その更新後、リクエスタは、CTO-Flagを格納したリクエストパケットである第2のリクエストパケット402を生成・送信する。その第2のリクエストパケット402のコンプリーションがリクエスタに受信されない場合、リクエスタはCTOを検出する。その結果、CTOテーブルのタグmのエントリ中のCTOinfo2の値は、使用可能タグ管理部233によって0から1に更新される。
コンプリータは、第2のリクエストパケット402を受信した場合、マスタデバイスに対し、マスタデバイスに対応のプロトコルで第2のリクエストパケット402を送信する。その結果、マスタデバイスがコンプリーションの送信を要求した場合、コンプリータはコンプリーション403を送信する。このコンプリーション403には、タグm、及びCTO-Flagが付与される。
コンプリーション403を受信したリクエスタは、そのコンプリーション403に付与されているタグm、及びCTO-Flagから、そのコンプリーション403が第2のリクエストパケット402に対応付ける。この結果、CTOテーブルのタグmのエントリでは、CTOテーブル更新部232によって、TagBusy、CTOinfo1、及びCTOinfo2の各値は全て0に更新される。
コンプリーション403として、CTO-Flagが格納されていないコンプリーションをリクエスタが受信した場合、CTO-Flagが存在しないことにより、受信したコンプリーションは第1のリクエストパケット401と対応付けられる。
PCIe規格では、リクエストパケットとコンプリーションパケットの順序に関するルールが規定されている。その規定では、同一タグのコンプリーションパケットは受信した順番を変えることができない。そのため、第1のリクエストパケット401のコンプリーションパケットはパケットの伝送経路上に存在しない、つまり何かの原因で存在しないことが分かる。再送するリクエストパケットに同一のタグを付与するのは、このためである。前に送信したリクエストパケットに対するコンプリーションパケットの存在の確認を合わせて行えるためである。
CTO-Flagの付与により、要求内容の異なる複数のリクエストパケットにも同一のタグを付与したとしても、リクエスタは、リクエストパケットとコンプリーションパケット間の対応関係は適切に特定することができる。しかし、リクエストパケットとコンプリーションパケット間の対応関係を適切に特定できるようにするには、各リクエストパケットに付与させたタグ、及びCTO-Flagの組み合わせを表す情報を保存させておく必要がある。そのような情報をリクエストパケットとコンプリーションパケット間の対応関係の特定に用いる場合、制御が複雑になって、パケット送受信装置20の負荷は重くなる。このようなことからも、本実施形態では、再送するリクエストパケットには同一のタグを付与するようにしている。
図5は、リクエストパケットの構成を説明する図であり、図6は、コンプリーションパケットの構成を説明する図である。ここで、図5、及び図6を参照し、本実施形態によるCTO-Flagのリクエストパケット、及びコンプリーションパケットへの付与(格納)方法について具体的に説明する。
図5、及び図6には、リクエストパケット、及びコンプリーションパケットの一部であるヘッダ部分のみ表している。図5、及び図6中に表記の「R」は予約語を意味する「Reserved」の略記である。
本実施形態では、図5、及び図6にそれぞれ丸を付して表したように、ヘッダ(TLP(Transaction Layer Packet)ヘッダ)の先頭から16ビット目に予約語として確保されている1ビットにCTO-Flagを格納するようにしている。このビットの値は通常は0であることから、CTO-FLAGの値は1としている。
コンプリーションパケットのヘッダの生成には、通常、リクエストパケットのヘッダの内容が用いられる。リクエストパケットのヘッダ中の予約語は、コンプリーションパケットのヘッダにそのまま格納されるのが普通である。このことから、コンプリータに特別の機能を追加することなく、CTO-Flagが格納されたリクエストパケットに対するコンプリーションパケットにはCTO-Flagが格納される。
コンプリーションパケットには、リクエストパケットから、“Completer ID”フィールド、及び“Status”フィールド等が追加されている。“Completer ID”フィールドには、処理を行ったデバイスを表すデータが格納され、“Status”フィールドには、処理結果を表すデータが格納される。そのため、リクエスタは、コンプリーションパケットから、処理を行ったデバイス、及びその処理結果を確認することができる。
図7は、CTO検出時のリクエスタの動作の流れを表すフローチャートである。最後に図7を参照し、CTOの検出を契機にしたリクエスタの一連の動作について詳細に説明する。この図7では、同一のタグが付与されたリクエストパケットに着目し、最初のCTO検出後のリクエスタの動作の流れを抜粋する形で表している。
発生したCTOは、パケット受信モジュール21によって検出され、タグ管理モジュール23のCTOテーブル更新部232に、CTOが発生したリクエストパケットに付与されたタグ、及びCTO-Flagの有無と共に通知される。その通知により、CTOテーブル更新部232は、記憶部231に格納されているCTOテーブルの通知されたタグのエントリの更新をケース(1)のように行う(S1)。
CTOの検出により、送信パケット生成モジュール22は、そのCTOが発生したリクエストパケット(図4に表す第1のリクエストパケット401)に付与されたタグを再送するリクエストパケット(図4に表す第2のリクエストパケット402)に再利用すべきタグとして決定する(S2)。
その後、送信パケット生成モジュール22は、決定したタグをタグ管理モジュール23の使用可能タグ管理部233に通知して、CTO-Flagの付与の有無を問い合わせる。ここでは、CTOが検出されたリクエストパケットは第1のリクエストパケット401であるため、使用可能タグ管理部233は、CTO-Flagの付与を通知する。その結果、送信パケット生成モジュール22は、CTO-Flag、及び同一のタグを付与したリクエストパケット(図4に表す第2のリクエストパケット402)を生成して送信する(以上S3)。
パケット受信モジュール21は、送信パケット生成モジュール22とは独立して動作し、タイマ21aを用いて、CTOの検出を行う(S4)。そのCTOを検出した場合(S4のYES)、パケット受信モジュール21は、CTOの発生、そのCTOが発生したリクエストパケットに付与されているタグ、及びCTO-Flagの有無をCTOテーブル更新部232に通知する。その結果、(CTOinfo1,CTOinfo2)=(1,1)の組み合わせが確定し、CTOテーブル更新部232に通知されたタグの使用が一時的に禁止される(S5)。それにより、一連の動作が終了する。
一方、CTOが検出されなかった場合(S4のNO)、パケット受信モジュール21は、コンプリーションパケットが受信されたか否かの確認を行う(S6)。コンプリーションパケットを受信した場合(S6のYES)、パケット受信モジュール21は、返却する(利用可能にする)タグとして、受信したコンプリーションパケットのタグをCTOテーブル更新部232に通知する。その結果、通知されたタグが利用可能になるように、そのタグのエントリ中のTagBusy、CTOinfo1、及びCTOinfo2の各値は0に更新される(S7)。それにより、一連の動作が終了する。
コンプリーションパケットを受信していない場合(S6のNO)、パケット受信モジュール21は、タイマ21aを用いて、CTOの検出を行う(S4)。それにより、リクエスタは、CTOが検出されるか、或いはコンプリーションパケットが受信されるのを待つ。
なお、本実施形態では、CTO-Flagのビット数は1ビットとしているが、そのビット数は2ビット以上であっても良い。また、CTO-Flagは再送するリクエストパケットに無条件に付与するようにしているが、タグの利用情報に応じて、例えば利用可能なタグの数に応じて、リクエストパケットに付与するタグ、CTO-Flagの付与を決定するようにしても良い。
本実施形態では、タグとは異なる識別子であるCTO-Flagの数は1つとしているが、CTO-Flagのような識別子は複数であっても良い。使用するCTO-Flagのような識別子の数、或いはビット数は、状況に応じて変更できるようにしても良い。
第1のリクエストパケット401では、CTO-Flagが事実上、付与されていない。しかし、第1のリクエストパケット401にも、CTO-Flagのような識別子を付与させるようにしても良い。
上記以外にも、様々な変形を行うことができる。
1 情報処理装置
11 CPU
13 スイッチ
14、14−0〜14−3 エンドポイント
20 パケット送受信装置
21 パケット受信モジュール
21a タイマ
22 送信パケット生成モジュール
23 タグ管理モジュール
110 CPUコア
111 ルートコンプレックス
231 記憶部
232 CTOテーブル更新部
233 使用可能タグ管理部

Claims (4)

  1. 演算処理装置と、複数の入出力装置と、前記演算処理装置と前記複数の入出力装置間の通信をそれぞれ行う複数の通信装置とを備えた情報処理装置において、
    前記複数の通信装置のうち第1の通信装置は複数の識別子の中から選択された識別子と、前記識別子を有するパケットに対する応答の受信待ちにおいてタイムアウトが発生したか否かを示すフラグとが割り当てられた、第1のパケットを送信し、
    前記第1の通信装置は、
    前記複数の識別子それぞれに対応付けて、タイムアウトが発生したことを示すフラグを有するパケットに対する応答の受信待ちにおいてタイムアウトが発生したか否かを表す状況情報を記憶した記憶部と、
    前記第1の通信装置宛のパケットを受信する受信部と、
    前記第1のパケットが要求する処理の実行結果を表す第2のパケットの前記受信部による受信結果に基づき、前記記憶部に記憶された状況情報を更新する更新部と、
    前記記憶部に記憶された状況情報に基づき、第1のパケットに割り当てる識別子とフラグの値とを決定する決定部と、
    前記決定部が決定した識別子とフラグとを格納した第1のパケットを生成して送信する第1の送信部とを有し、
    前記複数の通信装置のうち、前記第1のパケットの送信先となる第2の通信装置は、
    前記第1の通信装置が送信した前記第1のパケットへの応答として前記第2のパケットを送信する場合、前記第1のパケットに格納されている前記フラグを前記第2のパケットに格納して送信する第2の送信部を有し、
    前記決定部は、前記受信部がタイムアウトを検出した第1のパケットの識別子を再利用する場合、タイムアウトを検出した第1のパケットとは要求内容が異なる送信対象の第1のパケットの識別子として、タイムアウトを検出した第1のパケットの識別子と同一の識別子を割り当てるとともに、送信対象の第1のパケットのフラグとして、タイムアウトが発生したことを示すフラグを割り当てることを特徴とする情報処理装置。
  2. 前記受信部は、
    前記第1のパケットが送信された後、前記第2のパケットを所定時間内に受信しない場合、タイムアウトを検出し、
    前記更新部は、
    前記受信部によるタイムアウトの検出を契機として、状況情報の更新を行う、
    ことを特徴とする請求項1記載の情報処理装置。
  3. 複数の識別子それぞれに対応付けて、タイムアウトが発生したことを示すフラグを有するパケットに対する応答の受信待ちにおいてタイムアウトが発生したか否かを表す状況情報を記憶した記憶部と、
    ケットを受信する受信部と、
    前記複数の識別子の中から選択された識別子と、前記選択された識別子を有するパケットに対する応答の受信待ちにおいてタイムアウトが発生したか否かを示すフラグとが割り当てられた、第1のパケットが要求する処理の実行結果を表す第2のパケットの前記受信部による受信結果に基づき、前記記憶部に記憶された状況情報を更新する更新部と、
    前記記憶部に記憶された状況情報に基づき、第1のパケットに割り当てる識別子とフラグの値とを決定する決定部と、
    前記決定部が決定した識別子とフラグとを格納した第1のパケットを生成して送信する第1の送信部とを有し、
    前記第1のパケットの送信先となる通信装置は、前記第1の送信部が送信した前記第1のパケットへの応答として前記第2のパケットを送信する場合、前記第1のパケットに格納されている前記フラグを前記第2のパケットに格納して送信し、
    前記決定部は、前記受信部がタイムアウトを検出した第1のパケットの識別子を再利用する場合、タイムアウトを検出した第1のパケットとは要求内容が異なる送信対象の第1のパケットの識別子として、タイムアウトを検出した第1のパケットの識別子と同一の識別子を割り当てるとともに、送信対象の第1のパケットのフラグとして、タイムアウトが発生したことを示すフラグを割り当てることを特徴とする送受信装置。
  4. 演算処理装置と、複数の入出力装置と、前記演算処理装置と前記複数の入出力装置間の通信をそれぞれ行う複数の通信装置とを備えた情報処理装置の制御方法において、
    前記複数の通信装置のうち、複数の識別子それぞれに対応付けて、タイムアウトが発生したことを示すフラグを有するパケットに対する応答の受信待ちにおいてタイムアウトが発生したか否かを表す状況情報を記憶した記憶部を有し、前記複数の識別子の中から選択された識別子と、前記選択された識別子を有するパケットに対する応答の受信待ちにおいてタイムアウトが発生したか否かを示すフラグとが割り当てられた、第1のパケットを送信する第1の通信装置が有する受信部が、前記第1の通信装置宛のパケットを受信し、
    前記第1の通信装置が有する更新部が、前記第1のパケットが要求する処理の実行結果を表す第2のパケットの前記受信部による受信結果に基づき、前記記憶部に記憶された状況情報を更新し、
    前記第1の通信装置が有する決定部が、前記記憶部に記憶された状況情報に基づき、第1のパケットに割り当てる識別子とフラグの値とを決定し、
    前記第1の通信装置が有する第1の送信部が、前記決定部が決定した識別子とフラグとを格納した第1のパケットを生成して送信し、
    前記複数の通信装置のうち、前記第1のパケットの送信先となる第2の通信装置が有する第2の送信部が、前記第1の通信装置が送信した前記第1のパケットへの応答として前記第2のパケットを送信する場合、前記第1のパケットに格納されている前記フラグを前記第2のパケットに格納して送信し、
    前記第1の通信装置が有する決定部は、前記受信部がタイムアウトを検出した第1のパケットの識別子を再利用する場合、タイムアウトを検出した第1のパケットとは要求内容が異なる送信対象の第1のパケットの識別子として、タイムアウトを検出した第1のパケットの識別子と同一の識別子を割り当てるとともに、送信対象の第1のパケットのフラグとして、タイムアウトが発生したことを示すフラグを割り当てることを特徴とする情報処理装置の制御方法。
JP2014072110A 2014-03-31 2014-03-31 情報処理装置、送受信装置、及び情報処理装置の制御方法 Active JP6273972B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014072110A JP6273972B2 (ja) 2014-03-31 2014-03-31 情報処理装置、送受信装置、及び情報処理装置の制御方法
US14/658,682 US9769013B2 (en) 2014-03-31 2015-03-16 Information processing device that generates packet including first and second identifiers, transmission and reception device, and control method of information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014072110A JP6273972B2 (ja) 2014-03-31 2014-03-31 情報処理装置、送受信装置、及び情報処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2015194874A JP2015194874A (ja) 2015-11-05
JP6273972B2 true JP6273972B2 (ja) 2018-02-07

Family

ID=54191922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014072110A Active JP6273972B2 (ja) 2014-03-31 2014-03-31 情報処理装置、送受信装置、及び情報処理装置の制御方法

Country Status (2)

Country Link
US (1) US9769013B2 (ja)
JP (1) JP6273972B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021049760A1 (ko) * 2019-09-09 2021-03-18 주식회사 엘지화학 통신 장치, 통신 방법 및 전기 차량

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6335933B1 (en) * 1999-05-21 2002-01-01 Broadcom Homenetworking, Inc. Limited automatic repeat request protocol for frame-based communication channels
JP2001016209A (ja) * 1999-06-25 2001-01-19 Sony Corp 情報処理装置および方法、並びにコンピュータ読み取り可能な媒体
JP2001216259A (ja) * 2000-02-04 2001-08-10 Hitachi Ltd マルチプロセッサシステム及びそのトランザックション制御方法
JP3772690B2 (ja) * 2001-04-25 2006-05-10 日本電気株式会社 サービスシステム及びそれに用いるサービス方法
US7350077B2 (en) * 2002-11-26 2008-03-25 Cisco Technology, Inc. 802.11 using a compressed reassociation exchange to facilitate fast handoff
JP4918284B2 (ja) 2006-05-23 2012-04-18 富士通株式会社 PCI−Express通信システム
JP4410190B2 (ja) 2005-03-24 2010-02-03 富士通株式会社 PCI−Express通信システム
US8140922B2 (en) * 2008-05-20 2012-03-20 International Business Machines Corporation Method for correlating an error message from a PCI express endpoint
TWI483117B (zh) * 2010-09-29 2015-05-01 Toshiba Kk 用於執行命令之裝置、主機控制器及用於執行命令之系統
US9654604B2 (en) * 2012-11-22 2017-05-16 Intel Corporation Apparatus, system and method of controlling data flow over a communication network using a transfer response

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021049760A1 (ko) * 2019-09-09 2021-03-18 주식회사 엘지화학 통신 장치, 통신 방법 및 전기 차량
CN113874245A (zh) * 2019-09-09 2021-12-31 株式会社Lg新能源 通信控制器、通信方法和电动车辆
CN113874245B (zh) * 2019-09-09 2024-03-01 株式会社Lg新能源 通信控制器、通信方法和电动车辆

Also Published As

Publication number Publication date
US9769013B2 (en) 2017-09-19
US20150281044A1 (en) 2015-10-01
JP2015194874A (ja) 2015-11-05

Similar Documents

Publication Publication Date Title
JP5280135B2 (ja) データ転送装置
WO2013136522A1 (ja) 計算機システム及び計算機間のデータ通信方法
WO2014038070A1 (ja) 情報処理装置,並列計算機システム及び情報処理装置の制御方法
JP2005122235A (ja) 通信バッファ予約機能を備えるストレージ装置およびシステム
JP5239966B2 (ja) 中継装置、テナント管理プログラム
US11729085B2 (en) Cluster wide packet tracing
CN103092798B (zh) 片上系统及总线下的访问设备的方法
JP2012065281A (ja) 通信プログラム、通信装置、通信方法、及び通信システム
CN110633175A (zh) 基于微服务的多机房数据处理方法、电子设备及存储介质
KR20130114892A (ko) Can 네트워크와 이더넷 네트워크 사이의 데이터 전송을 위한 방법 및 게이트웨이 장치
JP6273972B2 (ja) 情報処理装置、送受信装置、及び情報処理装置の制御方法
JP2010092336A (ja) ストレージシステム及び通信方法
CN112751724B (zh) 检测链路状态的方法及装置
JP2008129628A (ja) 複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式、及び、メッセージ中継プログラム
US9413654B2 (en) System, relay device, method, and medium
JP2017027240A (ja) ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム
US8433952B2 (en) Memory access control device, memory access control method and memory access control program
WO2016095340A1 (zh) 数据发送成功的确认方法及装置
CN105022707B (zh) 接口单元装置
JP2018182688A (ja) 情報処理装置、情報処理システムおよび情報処理システムの制御方法
CN100356363C (zh) 用于共享互连分区的动态分区管理的方法和系统
US11089540B2 (en) Variable address length communication protocol
WO2014045610A1 (ja) ルール設定方法、及び中継システム
KR20220032612A (ko) 패킷 네트워크 내에서 플러시 요청들을 프로세싱하기 위한 장치 및 방법
JP6384359B2 (ja) 分散共有メモリを有する情報処理装置、方法、および、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171006

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171225

R150 Certificate of patent or registration of utility model

Ref document number: 6273972

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150