説明

優先度制御システム、スイッチ、優先度制御方法、及びプログラム

【課題】IO間アクセスが可能で、エンドポイント(EP)のリソース管理ができるPCIe(PCI Express)システムにおいて、複数の上位装置からの要求を到着順に処理するのではなく、優先度制御できるようにする。
【解決手段】PCIeシステムにおけるスイッチは、上位装置により利用されるリソースを所有するエンドポイントのリソース管理を行う。また、当該スイッチは、上位装置及びエンドポイントの各々とデータを送受信する。また、当該スイッチは、複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、優先度制御システムに関し、特にPCIe(PCI Express)システムにおける優先度制御システムに関する。
【背景技術】
【0002】
PCIe(PCI Express)システムでは、ルートに相当する部分(CPU等)を「ルートコンプレックス」、ノードに相当する部分(IOデバイス等)を「エンドポイント」と呼ぶ。
【0003】
図1を参照して、従来のPCIeシステムについて説明する。
【0004】
図1に示すPCIeスイッチは、ルートコンプレックス(RC:Root Complex)からのデータ(送信パケット)をエンドポイント(EP:End Point)に転送する機能のみ持つ。
【0005】
しかしながら、従来のPCIeシステムにおいては、次のような課題がある。
【0006】
第1の課題は、従来のPCIeシステムでは、エンドポイント(EP)のリソース管理をしているデバイスが存在しないため、余っているリソースの利用ができないということである。
【0007】
第2の課題は、従来のPCIeシステムでは、複数の機能を一つのエンドポイント(EP)に割り当てることができないということである。
【0008】
上記の課題を克服するために、エンドポイント(EP)のリソース管理をする機能を追加し、エンドポイント(EP)間通信を可能とするPCIeスイッチが考えられている。
【0009】
しかし、第3の課題は、上記のようなPCIeスイッチは、複数の上位装置からのデータ転送を、順番(早い者勝ち)で転送する機能しかなく、優先度を付与/設定することができないことである。
【0010】
関連する技術として、特許文献1(特開2010−218351号公報)にデータ転送システムが開示されている。このデータ転送システムは、マスターデバイスと当該マスターデバイスにデータを転送可能なターゲットデバイスとから構成されるデータ転送システムである。マスターデバイスは、ターゲットデバイスに、当該マスターデバイスが受信可能なデータ量を示す情報を送信後、データ転送リクエストを送信する送信手段とを具備する。ターゲットデバイスは、マスターデバイスの送信手段から送信されたデータ転送リクエストに基づいて、データ転送レートを計測する計測手段と、計測手段によって計測されたデータ転送レートの値が所定値以上である場合、データ転送リクエストの量を制限する制限リクエストをマスターデバイスに送信する送信手段とを具備する。
【0011】
また、特許文献2(特開2011−059979号公報)にデータ転送装置が開示されている。このデータ転送装置は、リードマスタと、ライトマスタと、調停手段と、バーストライト転送制御手段とを備えている。リードマスタは、リード要求を発行する。ライトマスタは、ライト要求を発行する。調停手段は、ライトマスタから発行されたライト要求とリードマスタから発行されたリード要求を調停してスプリットトランザクションの伝送路を経由させて該ライト要求と該リード要求を対向デバイスに転送するとともに、ライト要求に係るライトデータをバーストライト転送する。バーストライト転送制御手段は、バーストライト転送中に、該バーストライト転送のライト要求よりも優先度の高いリード要求がリードマスタから発行されると、該バーストライト転送を分割して中断させ、該リード要求を転送させた後、中断した該バーストライト転送の後続データのバーストライト転送を再開させる。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2010−218351号公報
【特許文献2】特開2011−059979号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
従来技術では、エンドポイント(EP)間通信ができ、リソースの柔軟な割付ができても、QoS(Quality of Service)制御ができていない。各デバイスではFIFO(First−In,First−Out:先入れ先出し)やディスクリプタといった既存の技術を使うことによって順序整理ができるが、リソースの割付が複数の上位装置にまたがる場合、複数の上位装置に対してRTI(Routing to inside)/RTO(Routing to outside)の送信部、受信部が一つしかないため、処理の重い(送信データの大きい)要求待ちが発生してしまう。
【0014】
本発明の目的は、エンドポイント(EP)のリソース管理をする機能を追加し、エンドポイント(EP)間通信を可能とするPCIeシステムにおいて、複数の上位装置からのデータ転送に優先度をつける優先度制御システムを提供することである。
【課題を解決するための手段】
【0015】
本発明に係る優先度制御システムは、上位装置と、上位装置により利用されるリソースを所有するエンドポイントと、エンドポイントのリソース管理を行い、上位装置及びエンドポイントの各々とデータを送受信し、複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送するスイッチとを含む。
【0016】
本発明に係るスイッチは、上位装置により利用されるリソースを所有するエンドポイントのリソース管理を行う手段と、上位装置及びエンドポイントの各々とデータを送受信する手段と、複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送する手段とを具備する。
【0017】
本発明に係る優先度制御方法は、スイッチにより実施される優先度制御方法であって、上位装置により利用されるリソースを所有するエンドポイントのリソース管理を行うことと、上位装置及びエンドポイントの各々とデータを送受信することと、複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送することとを含む。
【0018】
本発明に係るプログラムは、上位装置により利用されるリソースを所有するエンドポイントのリソース管理を行うステップと、上位装置及びエンドポイントの各々とデータを送受信するステップと、複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送するステップとをスイッチに実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【発明の効果】
【0019】
IO(Input/Output:入出力)間アクセスが可能で、エンドポイント(EP)のリソース管理ができるPCIeシステムにおいて、複数の上位装置からの要求を到着順に処理するのではなく、優先度制御できるようにしたことで、システムとしての拡張性や処理能力の向上が期待できる。
【図面の簡単な説明】
【0020】
【図1】従来のPCIeシステムについて説明するための図である。
【図2】本発明の第1実施形態に係る優先度制御システムの構成例について説明するための図である。
【図3】スイッチ(e2eSW3)の構成例について説明するための図である。
【図4】受信部の構成例について説明するための図である。
【図5】振り分けテーブルの構成例について説明するための図である。
【図6】送信許可テーブルの構成例について説明するための図である。
【図7】優先度テーブルの構成例について説明するための図である。
【図8】リソース管理テーブルの構成例について説明するための図である。
【図9】分岐テーブルの構成例について説明するための図である。
【図10】エンドポイント(EP)の構成例について説明するための図である。
【図11】優先度制御情報設定の動作について説明するための図である。
【図12】データ転送の動作について説明するための図である。
【図13】本発明の第2実施形態に係る優先度制御システムの構成例について説明するための図である。
【発明を実施するための形態】
【0021】
<第1実施形態>
以下に、本発明の第1実施形態について添付図面を参照して説明する。
【0022】
[優先度制御システムの構成]
図2を参照して、本発明に係る優先度制御システムの構成例について説明する。
【0023】
本発明に係る優先度制御システムは、エンドポイント(EP:End Point)のリソース管理をする機能を追加し、エンドポイント(EP)間通信を可能とする、エンドポイント(EP)リソース共有マルチホストPCIe(PCI Express)システムにおける優先度制御システムである。
【0024】
本発明に係る優先度制御システムは、スイッチ(e2eSW3)10と、エンドポイント(EP:End Point)20と、プロセッサ(CPU:Central Processing Unit)30と、ルートコンプレックス(RC:Root Complex)40と、メモリ(Mem:Memory)50を含む。
【0025】
スイッチ(e2eSW3)10は、上位装置からのデータ(送信パケット)の優先度制御を行う。ここでは、スイッチ(e2eSW3)10は、ルートコンプレックス(RC)40を介して、上位装置であるプロセッサ(CPU)30からのデータを受信する。また、スイッチ(e2eSW3)10は、当該データの優先度制御を行い、当該データをエンドポイント(EP)20に転送する。
【0026】
エンドポイント(EP)20は、スイッチ(e2eSW3)10との間でデータの送受信を行う。
【0027】
プロセッサ(CPU)30は、ルートコンプレックス(RC)40を介して、スイッチ(e2eSW3)10又はメモリ(Mem)50との間でデータの送受信を行う。ここでは、プロセッサ(CPU)30は、スイッチ(e2eSW3)10の上位装置に該当する。なお、CPUは一例に過ぎない。実際には、マイクロプロセッサ(microprocessor)、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路(IC:Integrated Circuit)等でも良い。
【0028】
ルートコンプレックス(RC)40は、プロセッサ(CPU)30からのデータをスイッチ(e2eSW3)10又はメモリ(Mem)50に転送する。
【0029】
メモリ(Mem)50は、データを記憶/蓄積する。メモリ(Mem)50の例として、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリ等の半導体記憶装置、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の補助記憶装置、又は、DVD(Digital Versatile Disk)等のリムーバブルディスクや、SDメモリカード(Secure Digital memory card)等の記憶媒体(メディア)等が考えられる。また、DAS(Direct Attached Storage)、FC−SAN(Fibre Channel − Storage Area Network)、NAS(Network Attached Storage)、IP−SAN(IP − Storage Area Network)等を用いたストレージ装置でも良い。
【0030】
なお、プロセッサ(CPU)30及びメモリ(Mem)50は、一体化していても良い。例えば、近年では、マイコン等の1チップ化が進んでいる。従って、電子機器等に搭載される1チップマイコンが、プロセッサ(CPU)30及びメモリ(Mem)50を備えている事例が考えられる。
【0031】
また、スイッチ(e2eSW3)10、エンドポイント(EP)20、プロセッサ(CPU)30、ルートコンプレックス(RC)40、及びメモリ(Mem)50の各々は、複数でも良い。
【0032】
[スイッチ(e2eSW3)の構成]
図3を参照して、スイッチ(e2eSW3)10の構成例について説明する。
【0033】
スイッチ(e2eSW3)10は、分岐制御部(VRC)11と、RTI(Routing to inside)機能部12と、RTO(Routing to outside)機能部13と、PCIeポート(PCIe Port)14と、IOポート(Port)15と、リソース管理テーブル16を備える。
【0034】
分岐制御部(VRC)11は、スイッチ(e2eSW3)10内の各部と接続されており、データの分岐を総合的に制御するための機能部(機能ブロック)である。分岐制御部(VRC)11は、エンドポイント(EP)20として実装されているデバイスと、BDF番号やリソースの残数、リソースの使用率等を管理することによって、新しく上位装置が実装された場合に、転送先のデバイスが所有するリソースを設定する。これにより、分岐制御部(VRC)11は、上位装置であるプロセッサ(CPU)30とエンドポイント(EP)20との間のデータ転送を行う際に、エンドポイント(EP)20を有効利用(考慮)したデータ転送を実施することができる。
【0035】
RTI機能部12は、送信部121と、受信部122と、分岐テーブル123と、メモリ124を備える。
【0036】
送信部121は、受信部122が受け取ったエンドポイント(EP)20からのデータをメモリ124から読み出し、エンドポイント(EP)20毎のFIFO(First−In,First−Out)に格納し、優先度が高く設定されたFIFOのデータを優先的に上位装置であるプロセッサ(CPU)30に送信する。一般的に、FIFOは、キュー(queue)と呼ばれるデータ構造により実現され、先に入力したデータが先に出力されるという特徴を持つ。
【0037】
受信部122は、エンドポイント(EP)20からデータを受信し、受信したデータを分配して、エンドポイント(EP)20毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に、RTI機能部12又はRTO機能部13のメモリに送信して格納する。
【0038】
分岐テーブル123は、上位装置であるプロセッサ(CPU)30から送信されてきたデータを、どのエンドポイント(EP)20に送付するべきかを判定するために利用されるテーブルである。例えば、RTI機能部12の送信部121は、分岐テーブル123を参照することで、該当のデバイス(上位装置)に対して、データ転送を実施する。RTO機能部13の送信部131は、分岐テーブル133を参照することで、該当のデバイス(リソース)に対して、データ転送を実施する。
【0039】
メモリ124は、受信部122が受信したデータを格納しておく記憶装置/記憶領域であり、送信部121が送信すべきデータを読み出す記憶装置/記憶領域である。
【0040】
RTO機能部13は、送信部131と、受信部132と、分岐テーブル133と、メモリ134を備える。
【0041】
送信部131は、受信部122が受け取った上位装置であるプロセッサ(CPU)30からのデータをメモリ134から読み出し、プロセッサ(CPU)30毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的にエンドポイント(EP)20に送信する。
【0042】
受信部132は、上位装置であるプロセッサ(CPU)30からデータを受信し、受信したデータを分配して、プロセッサ(CPU)30毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的にメモリ134に送信して格納する。
【0043】
分岐テーブル133は、エンドポイント(EP)20から送信されてきたデータを、どのプロセッサ(CPU)30に送付するべきかを判定するのに利用されるテーブルである。
【0044】
メモリ134は、受信部132が受信したデータを格納しておく記憶装置/記憶領域であり、送信部131が送信すべきデータを読み出す記憶装置/記憶領域である。
【0045】
このように、RTI機能部12とRTO機能部13は、用途及びデータの送信元/転送先に違いはあるが、基本的に同様の構成である。
【0046】
PCIeポート(PCIe Port)14は、PCIe(PCI Express)規格で、ルートコンプレックス(RC)40に接続するためのポートである。
【0047】
IOポート(Port)15は、エンドポイント(EP)20に接続するためのポートである。
【0048】
リソース管理テーブル16は、エンドポイント(EP)20が所有するリソースを管理するためのテーブルである。
【0049】
[受信部の構成]
図4を参照して、受信部122の構成例について説明する。
【0050】
受信部122は、FIFO振り分け部1221と、FIFO部1222と、QoS(Quality of Service)制御部1223と、メモリ送信部1224と、振り分けテーブル1225と、送信許可テーブル1226と、優先度テーブル1227を備える。
【0051】
FIFO振り分け部1221は、分岐制御部(VRC)11からの指示に従い、FIFO部1222のどの番地(アドレス)にデータを書き込むかを制御する機能部であり、入ってくるデータを逐次転送する。また、FIFO振り分け部1221は、振り分けテーブル1225を基に、FIFO部1222へのデータ書き込みを実行する。
【0052】
FIFO部1222は、所定の容量を持ったメモリ領域(レジスタ)であり、FIFO振り分け部1221からのデータをFIFOに格納する。FIFO部1222は、複数のFIFOを持つ。FIFO数は可変である。また、FIFO部1222は、送信許可テーブル1226を実装しており、送信許可テーブル1226を参照して、自分に送信許可権があるかどうかをチェック(確認)し、許可があれば指定サイズ分のデータをメモリ送信部1224へ転送する。
【0053】
QoS制御部1223は、FIFO部1222からメモリ送信部1224への転送指示を行う機能部であり、優先度テーブルの設定値に連続して動作する。また、QoS制御部1223は、送信許可テーブル1226を高速に更新し続ける。例えば、QoS制御部1223は、優先度テーブル1227を実装しており、優先度テーブル1227を参照して、FIFO部1222内のFIFOのうち、優先度の高いFIFOから使用するように、許可を与える割合を調整する。
【0054】
メモリ送信部1224は、FIFO部1222から転送されてきたデータを逐次、メモリ124又はメモリ134へ転送する。
【0055】
振り分けテーブル1225は、FIFO振り分け部1221が参照するテーブルであり、FIFO部1222の転送先番地情報として、次に書き込む番地を示すポインタや、各FIFOの先頭と末尾を示す番地情報を保持する。
【0056】
送信許可テーブル1226は、FIFO部1222が参照するテーブルであり、転送指示許可を示すビット(Bit)/フラグ(Flag)や、送信サイズを示す情報を保持する。ここでは、分岐制御部(VRC)11は、上位装置であるプロセッサ(CPU)30からの指示に従い、コンフィグレーション(設定)時に、送信許可テーブル1226の更新を実行する。QoS制御部1223は、転送指示許可を示すビット/フラグを更新する。例えば、転送指示許可を示すビット/フラグに、許可を示す「1」を上書き(Write)する。FIFO部1222は、送信許可テーブル1226を参照して、データの転送可否を判断し、転送が許可されている場合、指示された送信サイズで転送する。送信サイズとしては、1度の転送許可で転送できるサイズを示している。FIFO部1222は、データの送信完了と同時に、転送指示許可を示すビット/フラグを更新する。例えば、転送指示許可を示すビット/フラグに、不許可を示す「0」を上書き(Write)する。
【0057】
優先度テーブル1227は、QoS制御部1223が参照するテーブルであり、FIFO部1222内のFIFOの各々に対する優先度の順位付けや、割合を示す情報を保持する。ここでは、分岐制御部(VRC)11が、優先度テーブル1227を更新する。優先度の順位付けは、1から順(昇順)に割り当てられており、1が最高の優先度である。また、割合は、転送許可が与えられる割合(例えば100回のうち何回か)を示す。
【0058】
なお、図示しないが、受信部132の構成も、受信部122の構成と同様である。
【0059】
[振り分けテーブルの構成]
図5を参照して、振り分けテーブル1225の構成例について説明する。
【0060】
振り分けテーブル1225は、送信元上位装置と、書き込み先FIFO先頭アドレスと、書き込み先FIFO最終アドレスと、ポインタと、に関する情報を記憶するための領域(フィールド)を有する。
【0061】
送信元上位装置は、データの送信元である上位装置の識別情報を示す。
【0062】
書き込み先FIFO先頭アドレスは、書き込み先となるFIFO部1222内のFIFOの先頭の番地を示す。
【0063】
書き込み先FIFO最終アドレスは、書き込み先となるFIFO部1222内のFIFOの末尾の番地を示す。
【0064】
ポインタは、FIFO部1222内のFIFOの転送先番地情報として、次に書き込む番地を示す。
【0065】
[送信許可テーブルの構成]
図6を参照して、送信許可テーブル1226の構成例について説明する。
【0066】
送信許可テーブル1226は、FIFO部1222内のFIFOの各々について、送信サイズと、送信許可権と、に関する情報を記憶するための領域を有する。
【0067】
[優先度テーブルの構成]
図7を参照して、優先度テーブル1227の構成例について説明する。
【0068】
優先度テーブル1227は、FIFO部1222内のFIFOの各々について、優先度と、割合と、に関する情報を記憶するための領域を有する。
【0069】
優先度は、FIFO部1222内のFIFOの各々の優先順位を示す。
【0070】
割合は、FIFO部1222内のFIFOの各々に転送許可が与えられる割合を示す。
【0071】
例えば、QoS制御部1223は、FIFO部1222に「100回」転送許可指示を出すアクセスをする際、優先度テーブル1227を参照し、優先度が一番高い「FIFO_1」に対しては「60回」許可指示を出し、次に優先度の高い「FIFO_2」に対しては「30回」許可指示を出し、優先度が一番低い「FIFO_N」に対しては「10回」許可指示を出すといったように、順繰りに転送許可をすることで、優先度の高いものは転送許可が多く得られる仕組みとなる。
【0072】
[リソース管理テーブルの構成]
図8を参照して、リソース管理テーブル16の構成例について説明する。
【0073】
リソース管理テーブル16は、送信元アドレスと、転送先アドレスと、送信元BDFと、転送先BDFと、リソース残数と、リソース使用率と、デバイスと、に関する情報を記憶するための領域を有する。
【0074】
[分岐テーブルの構成]
図9を参照して、分岐テーブル123の構成例について説明する。なお、図示しないが、分岐テーブル133の構成も同様である。
【0075】
分岐テーブル123は、送信元アドレスと、転送先アドレスと、送信元BDFと、転送先BDFと、リソース分岐先と、デバイスと、に関する情報を記憶するための領域を有する。
【0076】
送信元アドレスは、データの送信元の所在情報を示す。例えば、MACアドレスやIPアドレス(又はドメイン名)等が考えられる。
【0077】
転送先アドレスは、データの転送先の所在情報を示す。例えば、MACアドレスやIPアドレス(又はドメイン名)等が考えられる。
【0078】
送信元BDFは、データの送信元のBDF番号を示す。BDF番号とは、バス番号(Bus Number)、デバイス番号(Device Number)、関数番号(Function Number)等を指す。
【0079】
転送先BDFは、データの転送先のBDF番号を示す。
【0080】
リソース残数は、リソースの残数を示す。
【0081】
リソース使用率は、リソースの使用率を示す。
【0082】
リソース分岐先は、分岐先となるリソースの識別情報を示す。
【0083】
デバイスは、リソースを所有しているデバイスの識別情報を示す。
【0084】
[本発明に係るテーブルについての補足]
なお、本発明に係るテーブルは、記憶装置又は記憶媒体に格納されているものとする。
【0085】
[エンドポイント(EP)の構成]
図10を参照して、エンドポイント(EP)20の構成例について説明する。
【0086】
エンドポイント(EP)20は、指示部(VEP)21と、クラスタ(Cluster)22と、IOポート(Port)23を備える。
【0087】
指示部(VEP)21は、分岐制御部(VRC)11と情報をやり取りし、自デバイスであるエンドポイント(EP)20が所有するリソース情報を提供する。
【0088】
クラスタ(Cluster)22は、上位装置であるプロセッサ(CPU)30の都合によって、エンドポイント(EP)20が所有するリソースを割り振られたリソース群を示す。クラスタ(Cluster)22は、複数でも良い。ここでは、クラスタ(Cluster)22は、リソース221を少なくとも1つ含む。リソース221は、エンドポイント(EP)20が所有するリソースである。例えば、エンドポイント(EP)20がネットワークプロセッサ(NP:Network Processor)等であれば、リソース221としてマイクロエンジン(ME:Micro Engine)等が考えられる。
【0089】
IOポート(Port)23は、スイッチ(e2eSW3)10に接続するためのポートである。
【0090】
[優先度制御情報設定]
図11に示すシーケンス図を参照して、優先度制御情報設定の動作について説明する。
【0091】
図中では、「e2eSW3」は、スイッチ(e2eSW3)10を示す。「Device#1」及び「Device#2」は、エンドポイント(EP)20を示す。「CPU1」及び「CPU2」は、プロセッサ(CPU)30を示す。
【0092】
(1)ステップS101
スイッチ(e2eSW3)10の分岐制御部(VRC)11は、エンドポイント(EP)20に対して、デバイスのリソース確認を行い、リソース管理テーブル16を作成する。
【0093】
(2)ステップS102
スイッチ(e2eSW3)10の分岐制御部(VRC)11は、上位装置であるプロセッサ(CPU)30からの必要リソース及び優先度に関する情報を確認し、RTI機能部12に対し、分岐テーブル123の作成と同時に、受信部122のテーブル類の設定を行う。受信部122のテーブル類とは、振り分けテーブル1225、送信許可テーブル1226、及び優先度テーブル1227を指す。受信部122は、データを受信した際、受信部122のテーブル類を参照することにより、エンドポイント(EP)20へのデータ転送を可能にする。同様に、スイッチ(e2eSW3)10の分岐制御部(VRC)11は、RTO機能部13に対し、分岐テーブル133の作成と同時に、受信部132のテーブル類の設定を行う。
【0094】
(3)ステップS103
スイッチ(e2eSW3)10の分岐制御部(VRC)11は、上位装置であるプロセッサ(CPU)30からの指示に従い、エンドポイント(EP)20に対して、上位装置であるプロセッサ(CPU)30が必要とするコードをロードする。例えば、分岐制御部(VRC)11は、プロセッサ(CPU)30から当該コードを受け付け、エンドポイント(EP)20にロードする。
【0095】
(4)ステップS104
スイッチ(e2eSW3)10の分岐制御部(VRC)11は、上位装置であるプロセッサ(CPU)30と制御データを共有する。
【0096】
(5)ステップS105
スイッチ(e2eSW3)10の分岐制御部(VRC)11は、複数のエンドポイント(EP)20間でのE2Eの通信が可能となり、各エンドポイント(EP)20のリソースの接続を行う。
【0097】
(6)ステップS106
また、スイッチ(e2eSW3)10の分岐制御部(VRC)11は、随時、上位装置であるプロセッサ(CPU)30から優先度制御指示を受け付け、RTI機能部12に対し、分岐テーブル123や、受信部122のテーブル類を更新する。ここでは、上位装置であるプロセッサ(CPU)30は、分岐テーブル123や、受信部122のテーブル類を更新するためのアクセスを随時実行する。スイッチ(e2eSW3)10の分岐制御部(VRC)11は、上位装置であるプロセッサ(CPU)30からのデータのパケット情報の特定のフラグ(優先度設定情報を含むことを示す)を監視しており、該当するデータが到達したときに、データに格納されている優先度情報を基に、分岐テーブル123や、受信部122のテーブル類に対して更新処理を行う。同様に、スイッチ(e2eSW3)10の分岐制御部(VRC)11は、随時、上位装置であるプロセッサ(CPU)30から優先度制御指示を受け付け、RTO機能部13に対し、分岐テーブル133や、受信部132のテーブル類を更新する。
【0098】
[データ転送]
図12に示すシーケンス図を参照して、データ転送の動作について説明する。
【0099】
図中では、「e2eSW3」は、スイッチ(e2eSW3)10を示す。「Device#1」及び「Device#2」は、エンドポイント(EP)20を示す。「CPU1」及び「CPU2」は、プロセッサ(CPU)30を示す。
【0100】
(1)ステップS201
スイッチ(e2eSW3)10のRTO機能部13の受信部133は、上位装置であるプロセッサ(CPU)30から、エンドポイント(EP)20のリソースを利用するためのアクセス命令を受け付ける。
【0101】
(2)ステップS202
スイッチ(e2eSW3)10のRTO機能部13の受信部132は、分岐テーブル133や、受信部132のテーブル類を参照して、転送先のエンドポイント(EP)20を選択し、データを転送する。
【0102】
(3)ステップS203
スイッチ(e2eSW3)10のRTO機能部13の受信部132は、エンドポイント(EP)20での処理が完了した後、エンドポイント(EP)20から処理結果の返信を受け取り、メモリ134に格納する。スイッチ(e2eSW3)10のRTO機能部13の送信部131は、その処理結果をメモリ134から読み出し、分岐テーブル133を参照して、上位装置であるプロセッサ(CPU)30に転送する。
【0103】
(4)ステップS204
スイッチ(e2eSW3)10のRTI機能部12及びRTO機能部13は、あるエンドポイント(EP)20から、他のエンドポイント(EP)20へアクセスを行うための転送リクエストを中継することで、複数のエンドポイント(EP)20間のリソースの接続を維持する。このとき、スイッチ(e2eSW3)10のRTI機能部12の受信部122は、あるエンドポイント(EP)20からのデータをRTO機能部13のメモリ134に格納する。RTO機能部13の送信部131は、メモリ124から読み出し、エンドポイント(EP)20毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に、他のエンドポイント(EP)20に送信する。
【0104】
(5)ステップS205
スイッチ(e2eSW3)10のRTO機能部13の受信部132は、エンドポイント(EP)20での処理が完了した後、エンドポイント(EP)20から処理結果の返信を受け取り、メモリ134に格納する。スイッチ(e2eSW3)10のRTO機能部13の送信部131は、その処理結果をメモリ134から読み出し、分岐テーブル133を参照して、上位装置であるプロセッサ(CPU)30に転送する。
【0105】
<第2実施形態>
以下に、本発明の第2実施形態について説明する。
【0106】
本実施形態では、スイッチ(e2eSW3)10に対して優先度制御をする機能・装置を外部に設けることにより、優先度制御をする。
【0107】
[優先度制御システムの構成]
図13を参照して、本実施形態における優先度制御システムの構成例について説明する。
【0108】
本発明に係る優先度制御システムは、スイッチ(e2eSW3)10と、エンドポイント(EP)20と、プロセッサ(CPU)30と、ルートコンプレックス(RC)40と、メモリ(Mem)50と、優先度制御装置60を含む。
【0109】
スイッチ(e2eSW3)10は、優先度制御装置60と連携可能であり、エンドポイント(EP)間通信を可能とするPCIeスイッチであれば良い。スイッチ(e2eSW3)10の構成は、第1実施形態と同様でも良いが、必須ではない。
【0110】
エンドポイント(EP)20、プロセッサ(CPU)30、ルートコンプレックス(RC)40、及びメモリ(Mem)50については、基本的に、第1実施形態と同様である。
【0111】
優先度制御装置60は、個々のスイッチ(e2eSW3)10と連携しており、第1実施形態に示すスイッチ(e2eSW3)10における優先度制御を一元的に行う。
【0112】
図示しないが、優先度制御装置60は、第1実施形態に示すスイッチ(e2eSW3)10と同様に、分岐制御部(VRC)11と、RTI(Routing to inside)機能部12と、RTO(Routing to outside)機能部13と、リソース管理テーブル16を備える。
【0113】
また、優先度制御装置60は、個々のスイッチ(e2eSW3)10と通信するために、PCIeポート(PCIe Port)14及びIOポート(Port)15のうち、少なくとも1つを備える。
【0114】
分岐制御部(VRC)11、RTI(Routing to inside)機能部12、RTO(Routing to outside)機能部13、PCIeポート(PCIe Port)14、IOポート(Port)15、及びリソース管理テーブル16については、基本的に、第1実施形態と同様である。
【0115】
このように、本実施形態では、優先度制御をする機能・装置を外部に設けるので、優先度制御対応となっていない上位装置でも、優先度制御ができる。
【0116】
<各実施形態の関係>
なお、上記の各実施形態は、組み合わせて実施することも可能である。
【0117】
<本発明の特徴>
以上のように、本発明に係る優先度制御システムは、IO間アクセスが可能で、エンドポイント(EP)のリソース管理ができるPCIeシステムにおいて、複数の上位装置からの要求を到着順に処理するのではなく、優先度制御をできるようにしたことを特徴としている。
【0118】
本発明に係る優先度制御システムでは、スイッチ(e2eSW3)が優先度制御をしているので、例えば複数の上位装置が同時にアクセスした際にスイッチ(e2eSW3)で処理待ち状態とするのではなく、優先度を高く設定された上位装置からのアクセスを優先的にエンドポイント(EP)へ転送する動作を取ることができる。その結果、システムとしての拡張性や処理能力の向上が期待できる。
【0119】
また、本発明に係る優先度制御システムでは、PCIeスイッチが、QoS制御できるように、送信部、受信部に複数のFIFOを持ち、優先度が設定されたFIFOに到着データを分配し、格納するようにする。これにより、システムとしてQoS制御ができ、実行処理の重いホスト側の要求に待たされることなく、別の処理が進行することができるようになる。
【0120】
本発明に係る優先度制御システムでは、優先度の制御ができるので、上位装置のニーズに合わせた通信処理をすることができる。
【0121】
また、本発明に係る優先度制御システムでは、複数のFIFOを持つことができる(FIFO数は可変)とすることで、上位装置の数に縛られることなく、受信部でのデータ処理を実施することができる。
【0122】
<備考>
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【0123】
10… スイッチ(e2eSW3)
11… 分岐制御部(VRC)
12… RTI(Routing to inside)機能部
13… RTO(Routing to outside)機能部
121、131… 送信部
122、132… 受信部
1221… FIFO(First−In,First−Out)振り分け部
1222… FIFO部
1223… QoS(Quality of Service)制御部
1224… メモリ送信部
1225… 振り分けテーブル
1226… 送信許可テーブル
1227… 優先度テーブル
123、133… 分岐テーブル
124、134… メモリ
14… PCIeポート(PCIe Port)
15… IOポート(Port)
16… リソース管理テーブル
20… エンドポイント(EP)
21… 指示部(VEP)
22… クラスタ(Cluster)
221… リソース
23… IOポート(Port)
30… プロセッサ(CPU)
40… ルートコンプレックス(RC)
50… メモリ(Mem)
60… 優先度制御装置

【特許請求の範囲】
【請求項1】
上位装置と、
前記上位装置により利用されるリソースを所有するエンドポイントと、
前記エンドポイントのリソース管理を行い、前記上位装置及び前記エンドポイントの各々とデータを送受信し、複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送するスイッチと
を含む
優先度制御システム。
【請求項2】
請求項1に記載の優先度制御システムであって、
前記スイッチは、前記上位装置が実装された場合に、転送先として前記エンドポイントが所有するリソースを設定し、前記上位装置と前記エンドポイントとの間のデータ転送を行う際に、前記エンドポイントを有効利用したデータ転送を実施する
優先度制御システム。
【請求項3】
請求項1又は2に記載の優先度制御システムであって、
前記スイッチは、エンドポイント間通信の際、送信元のエンドポイントからのデータを分配してエンドポイント毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先のエンドポイントへ転送する
優先度制御システム。
【請求項4】
上位装置により利用されるリソースを所有するエンドポイントのリソース管理を行う手段と、
前記上位装置及び前記エンドポイントの各々とデータを送受信する手段と、
複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送する手段と
を具備する
スイッチ。
【請求項5】
請求項4に記載のスイッチであって、
前記上位装置が実装された場合に、転送先として前記エンドポイントが所有するリソースを設定し、前記上位装置と前記エンドポイントとの間のデータ転送を行う際に、前記エンドポイントを有効利用したデータ転送を実施する手段
を更に具備する
スイッチ。
【請求項6】
請求項4又は5に記載のスイッチであって、
エンドポイント間通信の際、送信元のエンドポイントからのデータを分配してエンドポイント毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先のエンドポイントへ転送する手段
を更に具備する
スイッチ。
【請求項7】
スイッチにより実施される優先度制御方法であって、
上位装置により利用されるリソースを所有するエンドポイントのリソース管理を行うことと、
前記上位装置及び前記エンドポイントの各々とデータを送受信することと、
複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送することと
を含む
優先度制御方法。
【請求項8】
上位装置により利用されるリソースを所有するエンドポイントのリソース管理を行うステップと、
前記上位装置及び前記エンドポイントの各々とデータを送受信するステップと、
複数の送信元からデータを受信した場合、送信元からのデータを分配して送信元毎のFIFOに格納し、優先度が高く設定されたFIFOのデータを優先的に転送先へ転送するステップと
をスイッチに実行させるための
プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2013−97718(P2013−97718A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−242455(P2011−242455)
【出願日】平成23年11月4日(2011.11.4)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】