JP2014204403A - スイッチ装置、パケット制御方法及びデータ通信システム - Google Patents

スイッチ装置、パケット制御方法及びデータ通信システム Download PDF

Info

Publication number
JP2014204403A
JP2014204403A JP2013081634A JP2013081634A JP2014204403A JP 2014204403 A JP2014204403 A JP 2014204403A JP 2013081634 A JP2013081634 A JP 2013081634A JP 2013081634 A JP2013081634 A JP 2013081634A JP 2014204403 A JP2014204403 A JP 2014204403A
Authority
JP
Japan
Prior art keywords
packet
management
output
unit
packets
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.)
Granted
Application number
JP2013081634A
Other languages
English (en)
Other versions
JP6075169B2 (ja
Inventor
晃一 前田
Koichi Maeda
晃一 前田
昌宏 藏本
Masahiro Kuramoto
昌宏 藏本
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 JP2013081634A priority Critical patent/JP6075169B2/ja
Priority to EP14161073.3A priority patent/EP2790109A1/en
Priority to US14/226,888 priority patent/US20140304450A1/en
Publication of JP2014204403A publication Critical patent/JP2014204403A/ja
Application granted granted Critical
Publication of JP6075169B2 publication Critical patent/JP6075169B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches

Abstract

【課題】オーダリング制約を遵守するスイッチ装置、パケット制御方法及びデータ通信システムを提供する。【解決手段】ヘッダ付加部25は、複数の種類のパケットの宛先毎に、パケットに対して送信順に番号を付加する。さらに、ヘッダ付加部25は、番号を付加したパケットを種類に応じて仮想チャネル31及び32を経由させて送信する。さらに、溜込バッファ41は、調停部23により送信されたパケットを受信して蓄積する。調停部44及び管理ID制御部43は、番号を基に特定の種類のパケットが出力可能な否かを判定して、パケットの出力順を決定し、溜込バッファ41からパケットを出力させる。【選択図】図1

Description

本発明は、スイッチ装置、パケット制御方法及びデータ通信システムに関する。
計算機は機能を拡張するためのI/O(Input/Output)バスを有する。標準的なI/Oとして、例えばPCI(Peripheral Component Interconnect)(登録商標)バスやPCIe(PCI Express)(登録商標)バスがある。PCIeは、PCI−SIG(Special Interest Group)が策定した装置間を接続するバスの標準規格である。PCIeを用いることでは、PCIバスと比較してより効率よくデータ処理が行える。特に、近年のブロードバンドやデジタルメディアの普及により、各システムで短時間に大容量のデータを扱うという要求に対応して、PCIeの利用が増加している。
PCIeでは、パケット単位での通信が行われている。PCIeの仕様に準拠するパケットには、パケット間のオーダリング制約が存在する。
また、PCIeパケットをカプセル化し、PCIeとは別のプロトコルで動作するスイッチを経由させる技術が提案されている。これにより、多数のPCIeデバイスを計算機に接続することが可能となる。
このような、PCIeパケットをカプセル化したシステムでは、通信系路上でPCIeとは異なるプロトコルによる通信が介在する。発行されたPCIeパケットはオーダリング制約を遵守しなくてはならないが、別プロトコル上ではPCIeのオーダリング制約に沿った回路を搭載していないおそれがある。
そこで、オーダリング制約を遵守するために、経路を1本の伝送経路でFIFO(First In First Out)バッファで中継してPCIeパケットを送信する従来技術が提供されている。この場合、PCIeパケット間での追い越し等は発生しないため、オーダリング制約に則った通信を行うことができる。
また、通信のオーダリング制約を遵守するための他の技術として、ATMセルのヘッダに決められた数列となる監視番号を付与して送信し、受信側で受信したパケットが決められた数列になっているか否かによりエラーを検出する従来技術がある。
特開平07−30546号公報
しかしながら、伝送経路が1つの場合、ある宛先のパケットが詰まると、別の宛先へのパケットも届かなくなるなどして、デッドロックが発生してしまうおそれがある。また、監視番号の数列を維持する従来技術は、エラーを検出することはできるが、オーダリング制約を維持しながらパケットを受信することは困難である。
開示の技術は、上記に鑑みてなされたものであって、オーダリング制約を遵守するスイッチ装置、パケット制御方法及びデータ通信システムを提供することを目的とする。
本願の開示するスイッチ装置、パケット制御方法及びデータ通信システムは、一つの態様において、送信部は、複数の種類のパケットを種類に応じた経路を経由させて送信する。番号付加部は、前記パケットの宛先毎に、前記送信部が送信する前記パケットに対して送信順に番号を付加する。蓄積部は、前記送信部により送信された前記パケットを受信して蓄積する。出力部は、前記番号を基に特定の種類のパケットが出力可能な否かを判定して、パケットの出力順を決定し、前記蓄積部からパケットを出力させる。
本願の開示するスイッチ装置、パケット制御方法及びデータ通信システムの一つの態様によれば、オーダリング制約を遵守することができるという効果を奏する。
図1は、実施例1に係るデータ通信システムのブロック図である。 図2は、管理ID生成部が保持する管理IDの遷移を説明するための図である。 図3は、管理IDタグが付加されたヘッダを表す図である。 図4は、実施例1に係るデータ通信システムにおけるパケット送信の全体的な流れについて説明するための図である。 図5は、先頭パケットの管理ID及び管理ID保持回路が有する管理IDを用いたパケットの出力を説明するための図である。 図6は、出力のタイミングを説明するためのタイミングチャートである。 図7は、実施例1に係るデータ通信システムにおけるパケットの流れを説明するための図である。 図8は、送信側スイッチにおけるPCIeパケットの送受信のフローチャートである。 図9は、受信側スイッチにおけるパケットの出力のフローチャートである。 図10は、実施例2に係るデータ通信システムのブロック図である。 図11は、実施例2に係るデータ通信システムにおけるパケット送信の全体的な流れについて説明するための図である。 図12は、実施例3に係るデータ通信システムのブロック図である。
以下に、本願の開示するスイッチ装置、パケット制御方法及びデータ通信システムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するスイッチ装置、パケット制御方法及びデータ通信システムが限定されるものではない。
図1は、実施例1に係るデータ通信システムのブロック図である。図1に示すように、本実施例に係るデータ通信システムは、PCIeを用いてデータ通信を行うシステムである。
PCIeを用いたデータ通信では、PCIe規格に準拠したプロトコルであるPCIeプロトコルを用いてデータの送受信を行う。PCIeプロトコルの通信では、パケット単位で通信が行われる。以下では、PCIeプロトコル通信に用いられるパケットをPCIeパケットという。PCIeを用いたデータ通信では、PCIeパケットとして、Postedパケット、Non−Postedパケット及びCompletionパケットという3つの種類のパケットを用いてデータ通信が行われる。
3種類のPCIeパケットの間には、以下のようなオーダリング制約がある。すなわち、Postedパケット及びCompeletionパケットは、Non−Postedパケットを追い越してもよい。また、Non−Postedパケットは、Postedパケット及びCompeletionパケットを追い越してはいけない。本実施例に係るデータ通信システムは、このオーダリング制約を遵守しつつデータの送受信を行う。
以下では、Postedパケットを「Pパケット」、Compeletionパケットを「Cパケット」、Non−Postedパケットを「NPパケット」と言う。さらに、PパケットとCパケットを区別せずに、1群のパケットとして扱う場合は、「P/Cパケット」という。また、3種類全てを区別しない場合は、単に「パケット」という。
本実施例に係るデータ通信システムは、例えば、PCIeデバイス1、スイッチ2、クロスバスイッチ3、スイッチ4、ルートコンプレックス5及びCPU(Central Processing Unit)6を有している。
PCIeデバイス1は、例えばハードディスクなどのPCIeの規格に準拠した装置である。PCIeデバイス1は、PCIeプロトコルを用いてデータの送受信を行う。ここでは、PCIeデバイス1をデータの送信を行う側の装置として説明するが、PCIeデバイス1は、データの受信側になることもできる。
PCIeデバイス1は、PCIeパケットをスイッチ2へ出力する。ここで、PCIeデバイス1は、Pパケット、Cパケット及びNPパケットを出力する。
スイッチ2は、溜込バッファ21、サイドバッファ22、調停部23、管理ID(Identification)生成部24及びヘッダ付加部25を有している。
溜込バッファ21は、Pパケット、Cパケット及びNPパケットの入力をPCIeデバイスから受ける。溜込バッファ21は、受信したパケットを蓄積していく。そして、溜込バッファ21は、保持しているパケットのうち調停部23から指示された順にパケットをヘッダ付加部25へ出力する。
サイドバッファ22は、溜込バッファ21へ入力されたパケットの宛先情報を取得する。そして、サイドバッファ22は、取得した宛先情報をパケットの識別情報とともに格納する。
サイドバッファ22は、溜込バッファ21から出力されたパケットの情報を調停部23から取得する。そして、サイドバッファ22は、溜込バッファ21から出力されたパケットの宛先情報を管理ID生成部24へ出力する。
調停部23は、溜込バッファ21に格納されているパケットに対して調停を行い、出力するパケットを順次決定する。そして、調停部23は、出力するパケットとして決定したパケットの情報を溜込バッファ21に通知し、パケットの出力を指示する。また、調停部23は、出力するパケットとして決定したパケットの情報をサイドバッファ22へ通知する。
管理ID生成部24は、パケットの宛先毎に管理IDの値を表すカウンタを有している。
管理ID生成部24は、パケットの宛先情報の入力をサイドバッファ22から受ける。管理ID生成部24は、宛先情報が新規の宛先を示す場合、受信した宛先情報に対応するカウンタを生成し初期値をセットする。言い換えれば、管理ID生成部24は、全ての宛先の初期値がセットされたカウンタを有しているともいえる。管理ID生成部24は、例えば本実施例では、カウンタの初期値を1とする。
そして、管理ID生成部24は、受信した宛先情報に対応するカウンタの値を読み取り、読み取った値を管理IDとしてヘッダ付加部25へ出力する。その後、管理ID生成部24は、受信した宛先情報に対応するカウンタの値を1つインクリメントする。管理ID生成部24は、パケットの宛先のカウンタのインクリメントにあたり、Pパケット、Cパケット及びNPパケットを区別しない。
図2は、管理ID生成部が保持する管理IDの遷移を説明するための図である。ここでは、宛先として、宛先AAA,宛先BBB及び宛先CCCが有る場合で説明する。図2では、各列が各タイミングにおいて管理ID生成部24が記憶している管理IDの状態を示している。そして、図2では、表の下に進むに従い時間が経過した状態を表している。
パケットを受信していない状態では、管理ID生成部24は、列101のように各宛先のカウンタに初期値1をセットされた状態を保持している。
次に、宛先AAAのパケットが溜込バッファ21から出力されると、管理ID生成部24は、宛先AAAの宛先情報の入力をサイドバッファ22から受ける。そして、管理ID生成部24は、宛先AAAのカウンタの値である「1」を管理IDとしてヘッダ付加部25へ出力する。その後、管理ID生成部24は、宛先AAAに対応するカウンタを1つインクリメントする。この場合、管理ID生成部24が保持するカウンタは、図2の列102のように宛先AAAに対応するカウンタの値が「2」となり、他のカウンタは「1」を維持している。
続いて、宛先AAAのパケットが溜込バッファ21から出力されると、管理ID生成部24は、宛先AAAの宛先情報の入力をサイドバッファ22から受ける。そして、管理ID生成部24は、宛先AAAのカウンタの値である「2」を管理IDとしてヘッダ付加部25へ出力する。その後、管理ID生成部24は、宛先AAAに対応するカウンタを1つインクリメントする。この場合、管理ID生成部24が保持するカウンタは、図2の列103のように宛先AAAに対応するカウンタの値が「3」となり、他のカウンタは「1」を維持している。
続いて、宛先BBBのパケットが溜込バッファ21から出力されると、管理ID生成部24は、宛先BBBの宛先情報の入力をサイドバッファ22から受ける。そして、管理ID生成部24は、宛先BBBのカウンタの値である「1」を管理IDとしてヘッダ付加部25へ出力する。その後、管理ID生成部24は、宛先BBBに対応するカウンタを1つインクリメントする。この場合、管理ID生成部24が保持するカウンタは、図2の列104のように、宛先AAAに対応するカウンタの値が「3」であり、宛先BBBに対応するカウンタの値が「2」であり、宛先CCCに対応するカウンタの値が「1」である。
このようにして、管理ID生成部24は、宛先毎のカウンタをインクリメントしていくことで管理IDを生成する。そして、管理ID生成部24は、ヘッダ付加部25へ出力するパケットの管理IDを通知する。
図1に戻って説明を続ける。ヘッダ付加部25は、出力するパケットを溜込バッファ21から受信する。さらに、ヘッダ付加部25は、管理IDを管理ID生成部24から取得する。そして、ヘッダ付加部25は、出力するパケットのヘッダに管理IDを付加する。さらに、ヘッダ付加部25は、パケットの宛先を表す情報及びパケットの発行元を表す情報をヘッダに付加する。ヘッダ付加部25は、パケットをカプセル化してPCIeプロトコルとは異なるプロトコルへ変更する。
図3は、管理IDタグが付加されたヘッダを表す図である。ヘッダ110は、スイッチ2が出力するパケットのヘッダを表している。ヘッダ110は、管理IDタグ111、パケット宛先112、パケット発行元113及びPCIeヘッダ114を有している。
管理IDタグは、ヘッダ付加部25により付加された管理IDの値を格納する領域である。例えば本実施例では、管理IDタグ111は4ビットである。また、パケット宛先112は、パケットの宛先の情報を格納する領域である。例えば本実施例では、パケット宛先112は、4ビットである。また、パケット発行元113は、パケットの発行元の情報を格納する領域である。例えば本実施例では、パケット発行元113は、4ビットである。PCIeヘッダ114は、従来のPCIeのヘッダである。
ここで、管理IDタグ111、パケット宛先112及びパケット発行元113のサイズは、ヘッダ110に乗せることが可能な大きさの上限内であれば、任意の値を取ることができる。そして、管理IDタグ111、パケット宛先112及びパケット発行元113のサイズを変更することで、管理可能なデバイスの数を変更することができる。
図1に戻って説明を続ける。ヘッダ付加部25は、ヘッダを付加したパケットをクロスバスイッチ3へ出力する。
クロスバスイッチ3は、PCIeプロトコルとは異なるプロトコルを用いてデータ転送を行う装置である。クロスバスイッチ3は、仮想チャネル(VC:Virtual Channel)31及び仮想チャネル32を有している。仮想チャネル31及び32は、FIFOバッファである。
仮想チャネル31は、P/Cパケットの伝送経路である。また、仮想チャネル32は、NPパケットの伝送経路である。
クロスバスイッチ3は、スイッチ2からパケットを受信する。そして、受信したパケットがP/Cパケットの場合、クロスバスイッチ3は、仮想チャネル31を経由させてパケットをスイッチ4へ転送する。また、受信したパケットがNPパケットの場合、クロスバスイッチ3は、仮想チャネル32を経由させてパケットをスイッチ4へ転送する。
クロスバスイッチ3は、PCIeプロトコルとは異なるプロトコルを用いる装置であるため、PCIeに準拠したオーダリング制約にしたがったデータ転送は行わない。そのため、仮想チャネル31を経由するP/Cパケットの停滞などにより、仮想チャネル32を経由するNPパケットがP/Cパケットを追い越してしまうことが考えられる。したがって、スイッチ4には、オーダリング制約に従っていない順序でパケットが入力される場合がある。
スイッチ4は、溜込バッファ41、サイドバッファ42、管理ID制御部43及び調停部44を有している。
溜込バッファ41は、仮想チャネル411及び412を有している。溜込バッファ41は、スイッチ4に入力されたパケットのうちP/Cパケットを仮想チャネル411に送り蓄積していく。また、溜込バッファ41は、スイッチ4に入力されたパケットのうちNPパケットを仮想チャネル412に送り蓄積していく。
そして、溜込バッファ41は、保持しているパケットのうち調停部44から指示された順にパケットをルートコンプレックス5へ出力する。
サイドバッファ42は、仮想チャネル411及び仮想チャネル412の先頭のパケットの管理IDを有している。例えば、サイドバッファ42は、仮想チャネル411に入力されるP/Cパケットの管理IDタグから管理IDを順次取得し、順番に記憶していく。同様に、サイドバッファ42は、仮想チャネル412に入力されるNPパケットの管理IDタグから管理IDを順次取得し、順番に記憶していく。そして、サイドバッファ42は、溜込バッファ41からパケットが出力された場合、仮想チャネル411又は412のいずれからパケットが出力されたかの情報を調停部44から受信する。そして、サイドバッファ42は、パケットを出力した側の記憶している管理IDの先頭の管理IDを削除する。このようにすることで、サイドバッファ42が記憶している管理IDの先頭の管理IDが、仮想チャネル411及び412に格納されているパケットの先頭パケットの管理IDとなる。
管理ID制御部43は、管理ID保持回路431及び管理ID比較回路432を有している。
管理ID保持回路431は、一つ前のパケットの管理IDを宛先毎に保持する。ここで、一つ前のパケットとは、溜込バッファ41から出力されたパケットの中で、現在の状態において一つ前にその宛先に対して出力されたパケットを指し、言い換えれば、その宛先に向けて出力された最新のパケットである。例えば、管理ID保持回路431は、保持する宛先毎の管理IDの初期値を「0」とする。そして、管理ID保持回路431は、溜込バッファ41から出力されたパケットの管理ID及び宛先情報を調停部44から取得する。そして、管理ID保持回路431は、調停部44から管理ID及び宛先情報を取得すると、取得した宛先に対する一つ前のパケットの管理IDとして、取得した管理IDを記憶する。ここで、本実施例では、管理ID保持回路431は、P/CパケットとNPパケットとを別にして、一つ前のパケットの管理IDを記憶している。すなわち、管理ID保持回路431は、ある宛先に対する一つ前のP/Cパケットの管理IDと、ある宛先に対する一つ前のNPパケットの管理IDとを別個に記憶している。この場合、さらに、管理ID保持回路431は、一つ前のP/Cパケットと一つ前のNPパケットのいずれを後に出力したかの情報を記憶している。そして、管理ID保持回路431は、管理ID比較回路432に対して、一つ前のP/Cパケットと一つ前のNPパケットのうちより後に出力されたパケットを一つ前のパケットとして出力する。
管理ID比較回路432は、NPパケットの出力が可能か否かの判定の依頼を調停部44から受ける。依頼を受けると、管理ID比較回路432は、仮想チャネル412に格納されている先頭のNPパケットの管理IDをサイドバッファ42から取得する。以下では、ここで管理ID比較回路432がサイドバッファ42から取得したNPパケットの管理IDを、「先頭のNPパケットの管理ID」という。また、管理ID比較回路432は、サイドバッファから取得したNPパケットと同じ宛先に対する一つ前のパケットの管理IDを管理ID保持回路431から取得する。
管理ID比較回路432は、先頭のNPパケットの管理IDの値が、管理ID保持回路431から取得した管理IDの値に1を加えた値以上か否かを判定する。
先頭のNPパケットの管理IDの値が、一つ前のパケットの管理IDの値に1を加えた値以上の場合、管理ID比較回路432は、NPパケットの出力可を調停部44に通知する。これに対して、先頭のNPパケットの管理IDの値が、一つ前のパケットの管理IDの値に1を加えた値より小さい場合、管理ID比較回路432は、NPパケットの出力不可を調停部44に通知する。
調停部44は、仮想チャネル412にNPパケットがあるか否かを判定する。NPパケットがない場合、調停部44は、仮想チャネル411にP/CパケットがあればP/Cパケットを溜込バッファ41から出力させる。そして、調停部44は、出力されたP/Cパケットの宛先情報及び管理IDを管理ID保持回路431へ通知する。これに対して、仮想チャネル411にP/Cパケットがなければ、調停部44は、パケットの到着まで待機する。
一方、NPパケットがある場合、調停部44は、NPパケットの出力が可能か否かの判定を管理ID比較回路432に依頼する。そして、調停部44は、判定結果を管理ID比較回路432から受信する。
判定結果が出力可の場合、調停部44は、NPパケットを溜込バッファ41から出力させる。そして、調停部44は、出力されたNPパケットの宛先情報及び管理IDを管理ID保持回路431へ通知する。
これに対して、判定結果が出力不可の場合、調停部44は、パケットの到着まで待機する。
調停部44は、以上に説明した出力するパケットの判定を繰り返す。
次に、図4を参照して、本実施例に係るデータ通信システムにおけるパケット送信の全体的な流れについて説明する。図4は、実施例1に係るデータ通信システムにおけるパケット送信の全体的な流れについて説明するための図である。ここでは、PCIeデバイス1から1つの宛先に対してパケットが送られた場合で説明する。
状態201は、PCIeデバイス1から発行されたパケットの状態を表している。ここで、パケット301及び302の上の段に記載されている記号はパケットの種類を表している。また、パケット301及び302の下の段の下部に記載されている記号は発行元のIDを表している。PCIeデバイス1から発行された状態では、P/Cパケットであるパケット301が先頭で、NPパケットであるパケット302が次に並んでいる。
状態202は、スイッチ2から出力されるパケットの状態を表している。スイッチ2では、ヘッダ付加部25により各パケットに順番に管理IDが振られる。パケット301及び302の下の段の上部の番号が各パケットに振られた管理IDを表している。ここでは、最初のパケットであるパケット301に管理IDとして「1」が振られ、次のパケットであるパケット302に管理IDとして「2」が振られている。
状態203は、クロスバスイッチ3の仮想チャネル31を経由しているパケットの状態を表している。また、状態204は、クロスバスイッチ3の仮想チャネル32を経由しているパケットの状態を表している。仮想チャネル31にはP/Cパケットであるパケット301が通過する。また、仮想チャネル32にはNPパケットであるパケット302が通過する。
状態205は、スイッチ4の溜込バッファ41の仮想チャネル411に蓄積されているパケットの状態を表している。また、状態206は、スイッチ4の溜込バッファ41の仮想チャネル412に蓄積されているパケットの状態を表している。仮想チャネル411は、P/Cパケットであるパケット301を蓄積する。また、仮想チャネル412は、NPパケットであるパケット302を蓄積する。
ここで、クロスバスイッチ3の仮想チャネル31及び仮想チャネル32の状態により、パケット302がパケット301を追い越し、先にパケット302が仮想チャネル412に格納され、その後、パケット301が仮想チャネル411に格納されたものとする。
ここで、図5を参照して、図5の状態205及び206の状態になったスイッチ4におけるパケットの出力について説明する。図5は、先頭パケットの管理ID及び管理ID保持回路が有する管理IDを用いたパケットの出力を説明するための図である。図5は、ある宛先に対応する管理IDの遷移を示している。実際には、管理ID保持回路431は、図5のような管理IDの保持を宛先毎に行っており、管理ID比較回路432は、宛先毎にNPパケットの出力可否の判定を行っている。図5における各列が各タイミングにおいて管理ID保持回路431が保持している管理IDの値及び先頭のNPパケットの管理IDを示している。そして、図5では、表の下に進むに従い時間が経過した状態を表している。また、図5のP/Cパケットは、その時点で管理ID保持回路431が保持している一つ前のP/Cパケットの管理IDである。また、図5のNPパケットは、その時点で管理ID保持回路431が保持している一つ前のNPパケットの管理IDである。そして、図5の先頭のNPパケット番号は、その時点でサイドバッファ42が保持している先頭のNPパケットの管理IDである。
パケットを出力していない状態では、管理ID保持回路431は、列121のようにP/Cパケット及びNPパケットともに管理IDとして初期値である0を保持している。ただし、管理IDが2のNPパケットであるパケット302が仮想チャネル412に格納されているので、サイドバッファ42に格納されている先頭NPパケット番号は2である。そこで、管理ID比較回路432は、一つ前に出力されたパケットの管理IDである0に1を加えた値と、先頭のNPパケットの管理IDである2とを比較する。この場合、先頭のNPパケットの管理IDの方が小さいので、管理ID比較回路432は、NPパケットであるパケット302は出力不可と判定する。
次に、管理IDが1のP/Cパケットであるパケット301が仮想チャネル411に格納されると、調停部44は、管理IDが1のP/Cパケットであるパケット301を溜込バッファ41から出力させる。管理ID保持回路431は、出力されたパケット301の管理IDとして「1」を調停部44から受信し記憶する。この場合、列122のように、一つ前のパケットは、管理IDが1のP/Cパケットであるパケット301である。そこで、管理ID比較回路432は、一つ前のパケットの管理IDである「1」を管理ID保持回路431から取得する。次に、管理ID比較回路432は、一つ前のパケットの管理IDである1に1を加えた値と、先頭のNPパケットの管理IDである2とを比較する。この場合、先頭のNPパケットの管理IDは一つ前のパケットの管理IDである1に1を加えた値以上なので、管理ID比較回路432は、NPパケットであるパケット302は出力可と判定する。
出力可の判定を受けて、調停部44は、パケット302を溜込バッファ41から出力させる。管理ID保持回路431は、出力されたNPパケットの管理IDとして「2」を調停部44から受信し記憶する。この場合、列123のように、一つ前のパケットは、管理IDが2のパケット302である。そこで、次に、管理ID比較回路432は、一つ前のパケットの管理IDである「2」を管理ID保持回路431から取得する。このようにして、管理ID比較回路432は、NPパケットの出力可否の判定を行っている。
このようなパケット出力処理を行うことで、スイッチ4は、ルートコンプレックス5に対して、図4の状態207のように、最初にパケット301が出力し、次にパケット302を出力する。このように、分割された仮想チャネル上でNPパケットがP/Cパケットを追い越した場合にも、本実施例に係るデータ通信システムによれば、追い越したNPパケットを追い越されたPパケットの後に配置することができる。これにより、本実施例に係るデータ通信システムは、PCIeのオーダリング制約を遵守してデータ通信を行うことができる。
次に、図6を参照して、パケットの出力のタイミングについて説明する。図6は、出力のタイミングを説明するためのタイミングチャートである。図6の横軸は、時間の経過を表している。
グラフ401は、管理ID保持回路431が有するP/Cパケットの管理IDを表している。また、グラフ402は、管理ID保持回路431が有するNPパケットの管理IDを表している。また、グラフ403は、サイドバッファ42に格納されている先頭のNPパケットの管理IDを表している。また、グラフ404は、管理ID比較回路432によるNP出力判定の判定結果の出力を表している。グラフ404において、出力がHighの場合にNPパケットの出力可であり、出力がLowの場合にNPパケットの出力不可である。また、グラフ405は、スイッチ4からルートコンプレックス5へのP/Cパケットの出力を表している。グラフ405において、出力がHighのときにP/Cパケットが出力される。また、グラフ406は、スイッチ4からルートコンプレックス5へのNPパケットの出力を表している。グラフ406において、出力がHighのときにNPパケットが出力される。
パケットが出力される以前には、グラフ401及び402に示すように、管理ID保持回路431は、P/Cパケット及びNPパケットの管理IDともに初期値である0を保持している。
そして、仮想チャネル412に管理IDが「1」のNPパケットが到着する。そこで、サイドバッファ42には、仮想チャネル412に格納されたNPパケットの管理IDである「1」が格納される(ステップS1)。
サイドバッファ42に管理IDとして「1」が格納されると、管理ID比較回路432は、先頭のNPパケットの管理IDとして「1」を取得する。また、管理ID比較回路432は、一つ前のパケットの管理IDとして「0」を管理ID保持回路431から取得する。先頭のNPパケットの管理IDの「1」は、一つ前のパケットの管理IDとして「0」に1を加えた値以上であるので、管理ID比較回路432は、NPパケットの出力可の信号を出力する(ステップS2)。
NPパケットの出力可の信号を受けて、調停部44は、調停を行い、NPパケットを溜込バッファ41の仮想チャネル412から出力させる(ステップS3)。
NPパケットの出力を受けて、管理ID保持回路431は、NPパケットの管理IDとして、出力されたNPパケットの管理IDである「1」を取得する(ステップS4)。
また、仮想チャネル412の先頭のNPパケットが出力されたので、次のNPパケットが先頭のNPパケットとなる。ここでは、管理IDが「3」のNPパケットが、仮想チャネル412の先頭のNPパケットになったとする。これを受けて、サイドバッファ42は、先頭のNPパケットの管理IDとして「3」を取得する(ステップS5)。
この時、管理ID比較回路432は、先頭のNPパケットの管理IDである「3」と一つ前のパケットの管理IDである「1」に1を加えた値を比べる。この場合、先頭のNPパケットの管理IDである「3」は、一つ前のパケットの管理IDである「1」に1を加えた値よりも大きいので、管理ID比較回路432は、NPパケットの出力不可の信号を出力する(ステップS6)。
その後、仮想チャネル411に管理IDが「2」であるP/Cパケットが到着する。これをうけて、調停部44は、調停を行い、P/Cパケットを溜込バッファ41の仮想チャネル411から出力させる(ステップS7)。
NPパケットの出力を受けて、管理ID保持回路431は、P/Cパケットの管理IDとして、出力されたP/Cパケットの管理IDである「2」を取得する(ステップS8)。
管理ID保持回路431が出力されたP/Cパケットの管理IDである「2」を取得すると、管理ID比較回路432は、一つ前のパケットの管理IDとして「2」を取得する。また、管理ID比較回路432は、先頭のNPパケットの管理IDとして「3」を取得する。先頭のNPパケットの管理IDの「3」は、ひとつ前のパケットの管理IDとして「2」に1を加えた値以上であるので、管理ID比較回路432は、NPパケットの出力可の信号を出力する(ステップS9)。
NPパケットの出力可の信号を受けて、調停部44は、調停を行い、NPパケットを溜込バッファ41の仮想チャネル412から出力させる(ステップS10)。
NPパケットの出力を受けて、管理ID保持回路431は、NPパケットの管理IDとして、出力されたNPパケットの管理IDである「3」を取得する(ステップS11)。
このとき、仮想チャネル412に蓄積されているNPパケットがなくなったとする。その場合、サイドバッファ42が保持するNPパケットの管理IDが消去される(ステップS12)。
サイドバッファ42が保持するNPパケットの管理IDが消去されると、管理ID比較回路432は、NPパケットの出力不可の信号を出力する(ステップS13)。
以上のように、NPパケットの出力条件を満たさない期間Tでは、NPパケットが溜込バッファ41に存在していても、スイッチ4は、NPパケットを出力しない。これにより、スイッチ4は、オーダリング制約を遵守することができる。
次に、図7を参照して、本実施例に係るデータ通信システムにおけるパケットの出力制御の全体像について説明する。図7は、実施例1に係るデータ通信システムにおけるパケットの流れを説明するための図である。図7の縦軸は上部に記載した各装置におけるパケットの送受信のタイミングを表している。図7の縦軸は下に向かうに従い時間が経過している。図7の一点鎖線501は、P/Cパケットの送受信を表しており、図7の実線502は、NPパケットの送受信を表している。
PCIeデバイス1は、先にP/Cパケットを送信し、次に、NPパケットを送信する。
スイッチ2は、PCIeデバイス1が出力したパケットを受信する。そして、スイッチ2は、調停を行い、オーダリング制約を遵守して、先にP/Cパケットを送信し、次に、NPパケットを送信する。
クロスバスイッチ3は、スイッチ2が出力したパケットを受信する。そして、クロスバスイッチ3は、出力できるパケットから順に出力する。ここでは、P/Cパケットの出力が停滞したため、クロスバスイッチ3は、NPパケットを先に出力し、次にP/Cパケットを出力する。そのため、クロスバスイッチ3では、追い越してはいけないP/CパケットをNPパケットが追い越してしまい、オーダリング制約が守られない。
スイッチ4は、クロスバスイッチ3から出力されたNPパケットを先に受信し、次に、P/Cパケットを受信する。そして、スイッチ4は、NPパケットの出力判定を行い、本来先に出力されるはずのP/Cパケットをまず出力する。その後、スイッチ4は、NPパケットを出力する。
これにより、ルートコンプレックス5は、P/Cパケットを先に受信し、その後、NPパケットを受信する。すなわち、ルートコンプレックス5は、オーダリング制約を遵守した順番でPCIeデバイス1が出力したPCIeパケットを受信することができる。
ここで、以上の説明では、PCIeデバイス1がPCIeパケットをルートコンプレックス5へ送信する場合で説明したが、PCIeパケットは、ルートコンプレックス5からPCIeデバイスへ送信される場合もある。その場合、スイッチ4とスイッチ2との役割が入れ替わる。すなわち、スイッチ4はスイッチ2の機能も有しており、スイッチ2はスイッチ4の機能も有している。
次に、図8を参照して、送信側スイッチにおけるパケットの送信について説明する。ここで、送信側スイッチとは、PCIeデバイス1及びルートコンプレックス5の中でパケットを送信する側の装置に直接繋がるスイッチであり、例えば、図1ではスイッチ2に対応する。図8は、送信側スイッチにおけるPCIeパケットの送受信のフローチャートである。
スイッチ2は、自装置がPCIeデバイス1からのパケットの受信待ち状態か否かを判定する(ステップS101)。パケットの受信待ち状態でない場合(ステップS101:否定)、スイッチ2は、自装置がパケットの受信待ち状態になるまで待機する。
これに対して、パケットの受信待ち状態の場合(ステップS101:肯定)、スイッチ2は、PCIeデバイス1からのパケットを受信し(ステップS102)、溜込バッファ21へ蓄積する。
次に、調停部23は、溜込バッファ21に蓄積されているパケットに対して調停を行い、オーダリング制約にしたがってパケットを溜込バッファ21からヘッダ付加部25へ出力させる(ステップS103)。
管理ID生成部24は、溜込バッファ21から出力されたパケットの宛先をサイドバッファ22から受信する。そして、管理ID生成部24は、受信したパケットの宛先に対応するカウンタの値を管理IDとしてヘッダ付加部25へ出力する。ヘッダ付加部25は、管理ID生成部24から取得した宛先毎の管理IDを、溜込バッファ21から出力されたパケットのヘッダに付加する(ステップS104)。
管理ID生成部24は、出力したパケットの宛先に対応するカウンタの値を1つインクリメントする(ステップS105)。
その後、調停部23は、システムのリセットが行われたか否かを判定する(ステップS106)。システムのリセットが行われていない場合(ステップS106:否定)、調停部23は、ステップS101へ戻る。これに対して、システムのリセットが行われた場合(ステップS106:肯定)、送信側スイッチは、パケット出力の処理を終了する。
次に、図9を参照して、受信側スイッチにおけるパケットの出力について説明する。ここで、受信側スイッチとは、PCIeデバイス1及びルートコンプレックス5の中でパケットを受信する側の装置に直接繋がるスイッチであり、例えば、図1ではスイッチ4に対応する。図9は、受信側スイッチにおけるパケットの出力のフローチャートである。
調停部44は、NPパケットが溜込バッファ41に存在するか否かを判定する(ステップS201)。NPパケットが存在しない場合(ステップS201:否定)、調停部44は、P/Cパケットが溜込バッファ41に存在し、且つ、P/Cパケットの出力先のバッファに空きがあるか否かを判定する(ステップS202)。ここで、出力先のバッファとは、例えば、スイッチ4が受信側スイッチの場合、ルートコンプレックス5のバッファを指す。
P/Cパケットが存在しない又は出力先のバッファに空きがない場合(ステップS202:否定)、調停部44は、ステップS201へ戻る。
これに対して、P/Cパケットが存在し、且つ、出力先のバッファに空きがある場合(ステップS202:肯定)、調停部44は、仮想チャネル411の先頭のP/Cパケットを溜込バッファ41から出力させる(ステップS203)。
そして、調停部44は、出力されたP/Cパケットの宛先及び管理IDの情報を管理ID制御部43の管理ID保持回路431へ通知する。管理ID保持回路431は、出力されたP/Cパケットの宛先に対応するP/Cパケットの管理IDを出力されたP/Cパケットの管理IDに更新する(ステップS204)。その後、調停部44は、ステップS201へ戻る。
一方、NPパケットが存在する場合(ステップS201:肯定)、調停部44は、NPパケットの出力の可否の判定を管理ID比較回路432へ依頼する。管理ID比較回路432は、先頭のNPパケットの管理IDが出力条件を満たしているか否かを判定する(ステップS205)。具体的には、管理ID比較回路432は、サイドバッファ42が保持する先頭のNPパケットの管理IDの値と、一つ前のパケットの管理IDに1を加えた値とを比較し、先頭のNPパケットの管理IDの方が小さいか否かを判定する。
先頭のNPパケットの管理IDが出力条件を満たしていない場合(ステップS205:否定)、調停部44は、P/Cパケットが溜込バッファ41に存在し、且つ、P/Cパケットの出力先のバッファに空きがあるか否かを判定する(ステップS206)。P/Cパケットが存在しない又は出力先のバッファに空きがない場合(ステップS206:否定)、調停部44は、P/Cパケットが存在し、且つ、出力先のバッファに空きができるまで待機する。
これに対して、P/Cパケットが存在し、且つ、出力先のバッファに空きがある場合(ステップS206:肯定)、調停部44は、仮想チャネル411の先頭のP/Cパケットを溜込バッファ41から出力させる(ステップS207)。
そして、調停部44は、出力されたP/Cパケットの宛先及び管理IDの情報を管理ID制御部43の管理ID保持回路431へ通知する。管理ID保持回路431は、出力されたP/Cパケットの宛先に対応するP/Cパケットの管理IDを出力されたP/Cパケットの管理IDに更新する(ステップS208)。その後、調停部44は、ステップS201へ戻る。
一方、先頭のNPパケットの管理IDが出力条件を満たしている場合(ステップS205:肯定)、調停部44は、NPパケットの出力先のバッファに空きがあるか否かを判定する(ステップS209)。出力先のバッファに空きがない場合(ステップS209:否定)、調停部44は、P/Cパケットが溜込バッファ41に存在し、且つ、P/Cパケットの出力先のバッファに空きがあるか否かを判定する(ステップS210)。P/Cパケットが存在しない又は出力先のバッファに空きがない場合(ステップS210:否定)、調停部44は、ステップS209へ戻る。
これに対して、P/Cパケットの出力先のバッファに空きがある場合(ステップS210:肯定)、調停部44は、仮想チャネル411の先頭のP/Cパケットを溜込バッファ41から出力させる(ステップS211)。
そして、調停部44は、出力されたP/Cパケットの宛先及び管理IDの情報を管理ID制御部43の管理ID保持回路431へ通知する。管理ID保持回路431は、出力されたP/Cパケットの宛先に対応するP/Cパケットの管理IDを、出力されたP/Cパケットの管理IDに更新する(ステップS212)。
一方、NPパケットの出力先のバッファに空きがある場合(ステップS209:肯定)、調停部44は、仮想チャネル412の先頭のNPパケットを溜込バッファ41から出力させる(ステップS213)。
そして、調停部44は、出力されたNPパケットの宛先及び管理IDの情報を管理ID制御部43の管理ID保持回路431へ通知する。管理ID保持回路431は、出力されたNPパケットの宛先に対応するNPパケットの管理IDを、出力されたNPパケットの管理IDに更新する(ステップS214)。
その後、調停部44は、システムのリセットが行われたか否かを判定する(ステップS215)。システムのリセットが行われていない場合(ステップS215:否定)、調停部44は、ステップS201へ戻る。これに対して、システムのリセットが行われた場合(ステップS215:肯定)、受信側スイッチは、パケット出力の処理を終了する。
以上に説明したように、本実施例に係るデータ通信システムでは、送信側スイッチは、宛先毎に連番となる管理IDをPCIeパケットのヘッダに付加する。そして、PCIeパケットは、送信側スイッチと受信側スイッチとの間の複数の伝送経路によって転送される。これにより、本実施例に係るデータ通信システムでは、デッドロックの発生を軽減しつつPCIeパケットの転送を行うことができる。
さらに、受信側スイッチは、NPパケットの管理IDが一つ前のパケットの管理IDに1を加えた値以下の場合に宛先に対してNPパケットを出力する。これにより、本実施例に係るデータ通信システムでは、PCIeパケットの転送中にPCIeパケットのオーダリング制約の違反が発生した場合でも、宛先に対しては、オーダリング制約を遵守した状態でPCIeパケットを送信することができる。
図10は、実施例2に係るデータ通信システムのブロック図である。本実施例に係るデータ通信システムは、PCIeパケットを送信する側であるPCIeデバイスが複数になっていることが実施例1と異なる。以下では、実施例1と同様の機能を有する各部については、説明を省略する。
本実施例に係るデータ通信システムは、PCIeデバイス11及び12を備える。PCIeデバイス11及び12は、いずれもPCIeの規格に準拠した装置である。PCIeデバイス11及び12は、PCIeプロトコルを用いてデータの送受信を行う。
スイッチ2は、溜込バッファ21A及び21Bという2つのバッファを有している。
溜込バッファ21Aは、PCIeデバイス11から出力されるパケットを受信し、蓄積する。そして、溜込バッファ21Aは、調停部23からの指示を受けて、指示された順にパケットを出力する。
溜込バッファ21Bは、PCIeデバイス12から出力されるパケットを受信し、蓄積する。そして、溜込バッファ21Bは、調停部23からの指示を受けて、指示された順にパケットを出力する。
サイドバッファ22は、溜込バッファ21A及び21Bが受信した各パケットの発行元及び宛先を、各パケットの識別情報に対応させて記憶している。そして、サイドバッファ22は、溜込バッファ21A又は21Bから出力されたパケットの識別情報を調停部23から受信すると、受信した識別情報を有するパケットの発行元及び宛先の情報を管理ID生成部24へ出力する。
管理ID生成部24は、パケットの発行元と宛先の組合せ毎にカウンタを有している。例えば、AAA,BBB及びCCCという3つの宛先がある場合、管理ID生成部24は、PCIeデバイス11及びAAA、PCIeデバイス11及びBBB、並びに、PCIeデバイス11及びCCCカウンタを有している。さらに、管理ID生成部24は、PCIeデバイス12及びAAA、PCIeデバイス12及びBBB、並びに、PCIeデバイス12及びCCCカウンタを有している。
管理ID生成部24は、溜込バッファから出力されたパケットの発行元及び宛先の情報をサイドバッファ22から取得する。そして、管理ID生成部24は、取得した発行元と宛先との組合せに対応するカウンタの値を管理IDとしてヘッダ付加部25へ出力する。その後、管理ID生成部24は、発行元と宛先の組合せに対応するカウンタの値を1つインクリメントする。
ヘッダ付加部25は、溜込バッファ21A及び21Bからパケットを受信する。そして、ヘッダ付加部25は、受信したパケットのヘッダに管理ID生成部24から取得した管理IDの情報を付加する。さらに、ヘッダ付加部25は、受信したパケットのヘッダに発行元の情報及び宛先の情報を付加する。
スイッチ4の溜込バッファ41は、P/Cパケットを仮想チャネル411に蓄積し、NPパケットを仮想チャネル412に蓄積する。この時、溜込バッファ41は、発行元を区別せずに各パケットを蓄積していく。
サイドバッファ42は、仮想チャネル412が受信した各NPパケットのヘッダから宛先、発行元及び管理IDを取得し、各NPパケットの識別情報に対応させて蓄積していく。そして、サイドバッファ42は、仮想チャネル412の先頭のNPパケット出力の通知を調停部44から受けると、先頭のNPパケットの情報を削除する。
管理ID保持回路431は、溜込バッファ41から出力されたパケットの管理IDの情報を発行元及び宛先の情報とともに調停部44から受ける。そして、管理ID保持回路431は、パケットの発信元と宛先との組合せ毎に一つ前のパケットの管理IDを保持する。
管理ID比較回路432は、NPパケットの出力可否の判定依頼を調停部44から受ける。そして、管理ID比較回路432は、サイドバッファ42から先頭のNPパケットの発行元、宛先及び管理IDの情報を取得する。さらに、管理ID比較回路432は、先頭のNPパケットの発行元と宛先との組合せに対応する一つ前のパケットの管理IDの情報を管理ID保持回路431から取得する。そして、管理ID比較回路432は、先頭のNPパケットの管理IDと、管理ID保持回路431から取得した管理IDに1を加えた値を比較する。
管理ID比較回路432は、先頭のNPパケットの管理IDが管理ID保持回路431から取得した管理IDに1を加えた値以上であれば、先頭のNPパケットが出力可であると判定する。これに対して、管理ID比較回路432は、先頭のNPパケットの管理IDが管理ID保持回路431から取得した管理IDに1を加えた値未満であれば、先頭のNPパケットが出力不可であると判定する。そして、管理ID比較回路432は、判定結果を調停部44へ出力する。
調停部44は、仮想チャネル412にNPパケットがあれば、先頭のNPパケットの出力の可否判定を管理ID比較回路432へ依頼する。そして、管理ID比較回路432により出力可と判定された場合、調停部44は、NPパケットを溜込バッファ41から出力させる。
これに対して、管理ID比較回路432により出力不可と判定された場合、調停部44は、P/Cパケットが仮想チャネル411にあればP/Cパケットを溜込バッファ41から出力させる。P/Cパケットが仮想チャネル411になければ、調停部44は、P/Cパケットが仮想チャネル411に蓄積されるまで待機する。
次に、図11を参照して、本実施例に係るデータ通信システムにおけるパケット送信の全体的な流れについて説明する。図11は、実施例2に係るデータ通信システムにおけるパケット送信の全体的な流れについて説明するための図である。ここでは、PCIeデバイス11及び12から1つの宛先に対してパケットが送られた場合で説明する。図11では、PCIeデバイス11を表す発行元の情報を「A1」とし、PCIeデバイス12を表す発行元の情報を「A2」としている。
状態601は、PCIeデバイス11から発行されたパケットの状態を表している。状態602は、PCIeデバイス12から発行されたパケットの状態を表している。枠で囲われたものが各パケットを表している。ここで、パケット701〜703及び801〜803の上の段に記載されている記号はパケットの種類を表している。また、パケット701〜703及び801〜803の下の段の下部に記載されている記号は発行元のIDを表している。PCIeデバイス11から発行された状態601では、NPパケットであるパケット701が先頭で、P/Cパケットであるパケット702が次に並び、最後に、P/Cパケットであるパケット703が並んでいる。また、PCIeデバイス12から発行された状態602では、P/Cパケットであるパケット801が先頭で、P/Cパケットであるパケット802が次に並び、最後に、NPパケットであるパケット803が並んでいる。パケット701〜703には、発行元としてPCIeデバイス11を表す「A1」が付加されている。また、パケット801〜803には、発行元としてPCIeデバイス12を表す「A2」の情報が付加されている。
さらに、図11では、パケットを示す枠の上に各パケットが発行された順番を示している。ここでは、パケット701,801,802,702,703,803の順番でパケットが発行されている。
状態603は、スイッチ2から出力されるパケットの状態を表している。スイッチ2では、ヘッダ付加部25により各パケットに順番に管理IDが振られる。パケット701〜703及び801〜803の下の段の上部の番号が各パケットに振られた管理IDを表している。ここでは、PCIeデバイス11の最初のパケットであるパケット701に管理IDとして「1」が振られ、次のパケットであるパケット702に管理IDとして「2」が振られ、次のパケットであるパケット703に管理IDとして「3」が振られている。また、PCIeデバイス12の最初のパケットであるパケット801に管理IDとして「1」が振られ、次のパケットであるパケット802に管理IDとして「2」が振られ、次のパケットであるパケット803に管理IDとして「3」が振られている。
状態604は、クロスバスイッチ3の仮想チャネル31を経由しているパケットの状態を表している。また、状態605は、クロスバスイッチ3の仮想チャネル32を経由しているパケットの状態を表している。仮想チャネル31にはP/Cパケットであるパケット702,703,801及び802が通過する。また、仮想チャネル32にはNPパケットであるパケット701及び803が通過する。
状態606は、スイッチ4の溜込バッファ41の仮想チャネル411に蓄積されているパケットの状態を表している。また、状態607は、スイッチ4の溜込バッファ41の仮想チャネル412に蓄積されているパケットの状態を表している。仮想チャネル411は、P/Cパケットであるパケット801,702,703及び802を蓄積する。また、仮想チャネル412は、NPパケットであるパケット701及び803を蓄積する。
ここで、クロスバスイッチ3の仮想チャネル31及び仮想チャネル32の状態により、PCIeデバイス11及び12で各パケットが発行された順番とは異なった順番で、パケット701〜703及び801〜803がスイッチ4へ到着している。すなわち、パケット701〜703及び801〜803は、パケット801,702,701,703,803,802の順番でスイッチ4に到着している。
パケット801は、パケット701を追い越してスイッチ4に最初に到着している。パケット801はP/Cパケットであるので、調停部44は、パケット801を出力することができる。そこで、調停部44は、パケット801を溜込バッファ41から出力させる。
次に、パケット702がスイッチ4に到着する。パケット702はP/Cパケットであるので、調停部44は、パケット702を出力することができる。そこで、調停部44は、パケット702を溜込バッファ41から出力させる。ここで、パケット702は、パケット701を追い越してスイッチ4に到着しているが、Postedパケット及びCompletionパケットはNon−Postedパケットを追い越してよいというオーダリング制約の下に出力されている。
次に、パケット701がスイッチ4に到着する。パケット701はNPパケットであるので、調停部44は、管理ID比較回路432にNPパケットの出力可否の判定を依頼する。この場合、パケット701の管理IDは「1」である。そして、PCIeデバイス11が発行したパケットとして、パケット702が溜込バッファ41から出力されているので、PCIeデバイス11を発行元とするパケットにおいて一つ前のパケットの管理IDは「2」となる。この場合、先頭のNPパケットの管理IDは「1」であり、管理ID保持回路431から取得した管理IDに1を加えた値以下であるので、管理ID比較回路432は、先頭のNPパケットが出力可であると判定する。これを受けて、調停部44は、パケット702を溜込バッファ41から出力させる。
次に、パケット703がスイッチ4に到着する。パケット703はP/Cパケットであるので、調停部44は、パケット703を出力することができる。そこで、調停部44は、パケット702を溜込バッファ41から出力させる。
次に、パケット803がパケット802を追い越してスイッチ4に到着する。パケット803はNPパケットであるので、調停部44は、管理ID比較回路432にNPパケットの出力可否の判定を依頼する。この場合、パケット803の管理IDは「3」である。そして、PCIeデバイス12が発行したパケットとして、パケット801が溜込バッファ41から出力されているので、PCIeデバイス12を発行元とするパケットにおいて一つ前のパケットの管理IDは「1」となる。この場合、先頭のNPパケットの管理IDは「3」であり、管理ID保持回路431から取得した管理IDに1を加えた値より大きいので、管理ID比較回路432は、先頭のNPパケットが出力不可であると判定する。これを受けて、調停部44は、パケット803を溜込バッファ41から出力させずに、次のP/Cパケットの到着を待つ。これは、パケット803は、Non−PosetdパケットはPostedパケット及びCompletionパケットを追い越してはいけないというオーダリング制約の下出力できないためである。
次に、パケット802がスイッチ4に到着する。パケット802はP/Cパケットであるので、調停部44は、パケット802を出力することができる。そこで、調停部44は、パケット802を溜込バッファ41から出力させる。
その後、仮想バッファ412にパケット803が存在するので、調停部44は、管理ID比較回路432にNPパケットの出力可否の判定を再度依頼する。この場合、パケット803の管理IDは「3」である。そして、PCIeデバイス12が発行したパケットとして、パケット802が溜込バッファ41から出力されているので、PCIeデバイス12を発行元とするパケットにおいて一つ前のパケットの管理IDは「2」となる。この場合、先頭のNPパケットの管理IDは「3」であり、管理ID保持回路431から取得した管理IDに1を加えた値以下であるので、管理ID比較回路432は、先頭のNPパケットが出力可であると判定する。これを受けて、調停部44は、パケット803を溜込バッファ41から出力させる。
以上のような処理により、スイッチ4は、状態608で示される順番でパケット701〜703及び801〜803を出力する。このとき、状態608は、PCIeデバイス11及び12で発行されたパケットにおけるオーダリング制約を遵守した順番となっている。
以上に説明したように、本実施例に係るデータ通信システムでは、送信側スイッチにおいて、パケットの発行元及び宛先の組合せ毎に連番となる管理IDを振る。そして、受信側スイッチにおいて、先頭のNPパケットの管理IDが、先頭のNPパケットの発行元及び宛先の組合せにおいて一つ前のパケットの管理IDに1を加えた値以下の場合に出力している。これにより、本実施例に係るデータ通信システム及びスイッチ装置は、オーダリング制約を遵守した状態でPCIeパケットを送信することができる。
図12は、実施例3に係るデータ通信システムのブロック図である。本実施例に係るデータ通信システムは、PCIeパケットを受信する側であるルートコンプレックスが複数になっていることが実施例2と異なる。以下では、実施例2と同様の機能を有する各部については、説明を省略する。
本実施例に係るデータ通信システムは、スイッチ4A及び4Bという2つのスイッチを有している。
クロスバスイッチ3は、PCIeデバイス11が発行したパケットをルートコンプレックス51に接続されるスイッチ4Aへ送信する。また、クロスバスイッチ3は、PCIeデバイス12が発行したパケットをルートコンプレックス52に接続されるスイッチ4Bへ送信する。
スイッチ4Aは、パケットをクロスバスイッチ3から受信する。そして、スイッチ4Aの溜込バッファ41Aは、P/Cパケットを仮想チャネル411Aに蓄積し、NPパケットを仮想チャネル412Aに蓄積する。
そして、調停部44Aは、NPパケットの出力可否の判定を管理ID比較回路432Aに依頼し、判定結果を受けてパケットの出力の調停を行い溜込バッファ41Aからパケットを出力させる。
管理ID比較回路432Aは、先頭のNPパケットの管理IDと、先頭のNPパケットと同じ発行元及び宛先の組合せにおいて一つ前のパケットの管理IDとを比較して、先頭のNPパケットの出力可否を判定する。
スイッチ4Bも、スイッチ4Aにおける機能と同様の機能を有する。
このように、複数の送信側スイッチ及び複数の受信側スイッチを有する場合でも、本実施例に係るデータ通信システム及びスイッチ装置は、オーダリング制約を遵守した状態でPCIeパケットを送信することができる。
さらに、以上の説明では、クロスバスイッチ3を介してPCIeパケットを送信する場合で説明した。ただし、クロスバスイッチ3を有さずに、PCIeパケットスイッチの内部で複数の仮想チャネルを有する構成においても、以上に説明した各機能を備えることはでき、同様の効果を実現することもできる。
また、以上の各実施例では、仮想チャネルが2つの場合で説明したが、仮想チャネルの数は複数あってもよい。その場合も、受信側スイッチにおいて、出力しようとするNPパケットの管理IDと一つ前のパケットの管理IDとを宛先毎に比較することで、同様の効果を得ることができる。
さらに、以上の各実施例では、Postedパケット及びCompletionパケットを同じ仮想チャネルを経由させて送信したが、Postedパケット及びCompletionパケットの経路を異ならせてもよい。その場合も、出力しようとするNPパケットの管理IDと一つ前のパケットの管理IDとを宛先毎に比較することで、同様の効果を得ることができる。
1 PCIeデバイス
2 スイッチ
3 クロスバスイッチ
4,4A,4B スイッチ
5 ルートコンプレックス
6 CPU
21,21A,21B 溜込バッファ
22 サイドバッファ
23 調停部
24 管理ID生成部
25 ヘッダ付加部
31,32 仮想チャネル
41,41A,41B 溜込バッファ
42,42A,42B サイドバッファ
43,43A,43B 管理ID制御部
44,44A,44B 調停部
411,411A,411B,412,412A,412B 仮想チャネル
431,431A,431B 管理ID保持回路
432,432A,432B 管理ID比較回路

Claims (7)

  1. 複数の種類のパケットの宛先毎に、前記パケットに対して送信順に番号を付加する番号付加部と、
    番号付加部により番号が付加されたパケットを、前記パケットの種類に応じた経路を経由させて送信する送信部と、
    前記送信部により送信された前記パケットを受信して蓄積する蓄積部と、
    前記番号を基に特定の種類のパケットが出力可能な否かを判定して、パケットの出力順を決定し、前記蓄積部からパケットを出力させる出力部と
    を備えたことを特徴とするスイッチ装置。
  2. 複数の前記経路は、第1経路及び第2経路を有し、
    前記番号付加部は、第1種パケット及び前記第1種パケットの追越しが禁止されている第2種パケットの宛先毎に、前記第1種パケット及び前記第2種パケットに対して送信順に番号を付加し、
    前記送信部は、前記第1経路を経由させて前記第1種パケットを送信し、前記第2経路を経由させて前記第2種パケットを送信し、
    前記蓄積部は、前記送信部により送信された前記第1種パケット及び前記第2種パケットを受信して蓄積し、
    前記出力部は、宛先毎の前記番号を基に、前記第2種パケットが出力可能か否かを判定して、パケットの出力順を決定する
    ことを特徴とする請求項1に記載のスイッチ装置。
  3. 前記番号付加部は、前記第1種パケット及び前記第2種パケットに対して送信順に連番となる番号を付加し、
    前記出力部は、出力しようとする前記第2種パケットの番号が、当該第2種パケットと同じ宛先に一つ前に出力したパケットの番号に1を加えた値以下の場合に、当該第2種パケットを出力可能と判定する
    ことを特徴とする請求項2に記載のスイッチ装置。
  4. 前記蓄積部は、前記特定の種類のパケットと前記特定の種類のパケット以外のパケットとを異なる領域に受信順に蓄積することを特徴とする請求項1〜3のいずれか一つに記載のスイッチ装置。
  5. 前記番号付加部は、前記宛先と前記パケットの発行元との組合せ毎に、送信順に番号を付加し、
    前記出力部は、前記宛先と前記発行元の組合せ毎の前記番号を基に、特定の種類のパケットが出力可能な否かを判定する
    ことを特徴とする請求項1〜4のいずれか一つに記載のスイッチ装置。
  6. 複数の種類のパケットの宛先毎に、前記パケットに対して送信順に番号を付加し、
    前記番号が付加された前記パケットを種類に応じた経路を経由させて送信し、
    送信された前記パケットを受信してバッファに蓄積し、
    前記番号を基に特定の種類のパケットが出力可能な否かを判定して、パケットの出力順を決定し、前記バッファからパケットを出力させる
    ことを特徴とするパケット制御方法。
  7. 送信装置、送信側スイッチ、クロスバスイッチ、受信側スイッチ及び受信装置を有するデータ通信システムであって、
    前記送信装置は、第1種パケット及び第2種パケットを第1プロトコルで送信するパケット送信部を備え、
    送信側スイッチは、
    前記第1種パケット及び前記第2種パケットの宛先毎に、前記第1種パケット及び前記第2種パケットに対して送信順に番号を付加する番号付加部と、
    前記番号付加部により番号が付加された前記第1種パケット及び前記第2種パケットを第2プロトコルの形式に変換し、前記第2プロトコルの形式に変換された前記第1種パケット及び前記第2種パケットを送信する送信部とを備え、
    前記クロスバスイッチは、
    前記送信部が送信した前記第1種パケットを前記第2プロトコルで送信する第1経路と、
    前記送信部が送信した前記第2種パケットを前記第2プロトコルで送信する第2経路とを備え、
    前記受信側スイッチは、
    前記クロスバスイッチにより送信された前記第1種パケット及び前記第2種パケットを受信して蓄積する蓄積部と、
    前記番号を基に、前記第2種パケットが出力可能か否かを判定して、パケットの出力順を決定し、前記第1種パケット又は前記第2種パケットを前記第1プロトコルの形式に変換し、前記出力順に従い、前記蓄積部からパケットを出力させる出力部とを備え、
    前記受信装置は、前記第1種パケット及び前記第2種パケットを前記第1プロトコルで前記受信部から受信するパケット受信部を備えた
    ことを特徴とするデータ通信システム。
JP2013081634A 2013-04-09 2013-04-09 スイッチ装置、パケット制御方法及びデータ通信システム Active JP6075169B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013081634A JP6075169B2 (ja) 2013-04-09 2013-04-09 スイッチ装置、パケット制御方法及びデータ通信システム
EP14161073.3A EP2790109A1 (en) 2013-04-09 2014-03-21 Switching device, packet control method, and data communication system
US14/226,888 US20140304450A1 (en) 2013-04-09 2014-03-27 Switching device, packet control method, and data communication system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013081634A JP6075169B2 (ja) 2013-04-09 2013-04-09 スイッチ装置、パケット制御方法及びデータ通信システム

Publications (2)

Publication Number Publication Date
JP2014204403A true JP2014204403A (ja) 2014-10-27
JP6075169B2 JP6075169B2 (ja) 2017-02-08

Family

ID=50423979

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013081634A Active JP6075169B2 (ja) 2013-04-09 2013-04-09 スイッチ装置、パケット制御方法及びデータ通信システム

Country Status (3)

Country Link
US (1) US20140304450A1 (ja)
EP (1) EP2790109A1 (ja)
JP (1) JP6075169B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11356388B2 (en) 2017-08-18 2022-06-07 Missing Link Electronics, Inc. Real-time multi-protocol heterogeneous packet-based transport
US10708199B2 (en) 2017-08-18 2020-07-07 Missing Link Electronics, Inc. Heterogeneous packet-based transport
US11070527B2 (en) 2018-12-07 2021-07-20 Intel Corporation Securing platform link with encryption
US11743240B2 (en) 2019-03-08 2023-08-29 Intel Corporation Secure stream protocol for serial interconnect
US11449447B2 (en) 2020-12-31 2022-09-20 Texas Instruments Incorporated Latency and jitter for traffic over PCIe

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0730546A (ja) * 1993-07-08 1995-01-31 Fujitsu Ltd Atm伝送装置における監視装置
US20070280278A1 (en) * 2006-05-30 2007-12-06 Masatoshi Ezawa Switching device
JP2012529094A (ja) * 2009-06-02 2012-11-15 インターナショナル・ビジネス・マシーンズ・コーポレーション ペリフェラル・コンポーネント・インターコネクト(pci)エクスプレス・ネットワークにおける損失されたポステッド・ライト・パケットおよび順序の狂ったポステッド・ライト・パケットの検出

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447233B2 (en) * 2004-09-29 2008-11-04 Intel Corporation Packet aggregation protocol for advanced switching
US8285907B2 (en) * 2004-12-10 2012-10-09 Intel Corporation Packet processing in switched fabric networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0730546A (ja) * 1993-07-08 1995-01-31 Fujitsu Ltd Atm伝送装置における監視装置
US20070280278A1 (en) * 2006-05-30 2007-12-06 Masatoshi Ezawa Switching device
JP2007323098A (ja) * 2006-05-30 2007-12-13 Hitachi Ltd 転送処理装置
JP2012529094A (ja) * 2009-06-02 2012-11-15 インターナショナル・ビジネス・マシーンズ・コーポレーション ペリフェラル・コンポーネント・インターコネクト(pci)エクスプレス・ネットワークにおける損失されたポステッド・ライト・パケットおよび順序の狂ったポステッド・ライト・パケットの検出

Also Published As

Publication number Publication date
US20140304450A1 (en) 2014-10-09
EP2790109A1 (en) 2014-10-15
JP6075169B2 (ja) 2017-02-08

Similar Documents

Publication Publication Date Title
US8358658B2 (en) Implementing ordered and reliable transfer of packets while spraying packets over multiple links
US11258685B1 (en) Packet generation-based bidirectional forwarding detection
US20200296058A1 (en) Heterogeneous Packet-Based Transport
JP3816530B2 (ja) 低い待ち時間、高いクロック周波数、プレジオ非同期 パケット・ベースクロスバー・スイッチング・チップ・システム及び方法
JP6075169B2 (ja) スイッチ装置、パケット制御方法及びデータ通信システム
US8718065B2 (en) Transmission using multiple physical interface
US8316171B2 (en) Network on chip (NoC) with QoS features
CN110661725A (zh) 用于对出口上的网络分组进行重排序的技术
JP2009303208A (ja) シリアルデータインターフェースを使用して複数の論理データストリームのそれぞれに対応するデータを送信/受信する方法及び装置
US8050265B2 (en) Multicast data packet switching method
US10419355B2 (en) Flow control of network device
US8949501B1 (en) Method and apparatus for a configurable packet routing, buffering and scheduling scheme to optimize throughput with deadlock prevention in SRIO-to-PCIe bridges
US20140149628A1 (en) Super speed usb hub and traffic management method thereof
TWI411264B (zh) 非阻塞式網路系統及其封包仲裁方法
US20130163608A1 (en) Communication control device, parallel computer system, and communication control method
US8675683B2 (en) Implementing end-to-end credit management for enhanced large packet reassembly
JP2005518578A (ja) コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム
JP5233360B2 (ja) メモリ制御装置,メモリ制御装置の制御方法および情報処理装置
JP6254331B2 (ja) ネットワークオンチップトポロジー内のトンネリング
WO2016132402A1 (ja) 通信フレーム転送装置および通信システム
WO2022110387A1 (zh) 路由装置及片上网络的路由设备
US8730983B1 (en) Method and apparatus for a configurable packet routing, buffering and scheduling scheme to optimize throughput with deadlock prevention in SRIO-to-PCIe bridges
US8644326B2 (en) Queue processing method
US20180069790A1 (en) Packet transfer device and packet transfer method
JP2005505855A (ja) コンピュータ・システムの入出力ノード

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161226

R150 Certificate of patent or registration of utility model

Ref document number: 6075169

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150