(57)【要約】【課題】トランザクション層の送信バッファが介在している場合であっても、アービタの設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停を行なうことができるデータ通信回路および調停方法を提供する。【解決手段】PCI Expressのアーキテクチャを構成するトランザクション層１５３から出力されたパケットデータを統計情報生成手段２１でモニタした結果をリアルタイムに重み情報更新手段２２に対してフィードバック制御してアービトレーションテーブル１４に反映することで、シリアル通信路を実際に転送されたパケットデータのデータ転送量に応じた優先度づけを可能とする。これにより、トランザクション層１５３の送信バッファが介在している場合であっても、アービタ１３の設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停を行なうことができる。【選択図】        図１６
2007249816.tif 000002
【特許請求の範囲】
【請求項１】
高速シリアルバスにおける１つの仮想チャネルを介して複数の通信のマスタとなるデータを入力し、入力した複数のデータをアービタにてアービトレーションテーブルに従って調停して前記高速シリアルバスに出力するデータ通信回路において、
前記高速シリアルバスのアーキテクチャを構成するトランザクション層を経たシリアル通信路上に設けられ、前記シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を生成する統計情報生成手段と、
この統計情報生成手段により生成された前記トラフィックの統計情報に基づいて、前記アービトレーションテーブルの重み情報を更新する重み情報更新手段と、
を備えることを特徴とするデータ通信回路。
【請求項２】
前記アービトレーションテーブルには、ＷＲＲ（Weighted Round Robin）アルゴリズムの重み情報が格納される、
ことを特徴とする請求項１記載のデータ通信回路。
【請求項３】
前記統計情報生成手段は、前記トランザクション層から出力されるパケットデータに割り当てられているトラフィッククラス毎にパケットデータが発行された回数をカウントして、各トラフィッククラスのカウント値を統計情報とする、
ことを特徴とする請求項１または２記載のデータ通信回路。
【請求項４】
前記統計情報生成手段は、前記トランザクション層から出力されるデータ転送リクエストパケットのLengthフィールドの値の積算値を算出し、リクエストパケットのデータサイズの比率を統計情報とする、
ことを特徴とする請求項１または２記載のデータ通信回路。
【請求項５】
前記重み情報更新手段は、通信のマスタがそれぞれ必要とするデータ転送レートの比率である参照情報と前記統計情報生成手段からの統計情報の比率とを比較して、前記アービトレーションテーブルの値を更新する、
ことを特徴とする請求項１ないし４のいずれか一記載のデータ通信回路。
【請求項６】
前記アービタの出力に設けられ、前記シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を生成する第２統計情報生成手段を更に備え、
前記重み情報更新手段は、前記第２統計情報生成手段により生成された前記トラフィックの統計情報に基づいて、高プライオリティデバイスが過剰に優先されて、低プライオリティデバイスの通信が妨げられないように、前記アービトレーションテーブルの値を更新する、
ことを特徴とする請求項１ないし５のいずれか一記載のデータ通信回路。
【請求項７】
前記第２統計情報生成手段は、前記アービタから出力されるパケットデータに割り当てられているトラフィッククラス毎にパケットデータが発行された回数をカウントして、各トラフィッククラスのカウント値を統計情報とする、
ことを特徴とする請求項６記載のデータ通信回路。
【請求項８】
前記第２統計情報生成手段は、前記アービタから出力されるデータ転送リクエストパケットのLengthフィールドの値の積算値を算出し、リクエストパケットのデータサイズの比率を統計情報とする、
ことを特徴とする請求項６記載のデータ通信回路。
【請求項９】
前記高速シリアルバスのアーキテクチャを構成するトランザクション層を経たシリアル通信路上に設けられ、前記トランザクション層におけるPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量を監視するバッファ監視手段を更に備え、
前記重み情報更新手段は、前記バッファ監視手段から入力されたPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量をもとに、Read リクエストとWriteリクエストが偏って過剰に発行されてしまわないように、前記アービトレーションテーブルの値を更新する、
ことを特徴とする請求項１ないし８のいずれか一記載のデータ通信回路。
【請求項１０】
前記高速シリアルバスは、PCI Express 規格の高速シリアルバスである、
ことを特徴とする請求項１ないし９のいずれか一記載のデータ通信回路。
【請求項１１】
高速シリアルバスにおける１つの仮想チャネルを介して複数の通信のマスタとなるデータを入力し、入力した複数のデータをアービタにてアービトレーションテーブルに従って調停して前記高速シリアルバスに出力するデータ通信回路における調停方法であって、
前記高速シリアルバスのアーキテクチャを構成するトランザクション層を経たシリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を生成する統計情報生成工程と、
この統計情報生成工程により生成された前記トラフィックの統計情報に基づいて、前記アービトレーションテーブルの重み情報を更新する重み情報更新工程と、
を含むことを特徴とする調停方法。
【請求項１２】
前記アービトレーションテーブルには、ＷＲＲ（Weighted Round Robin）アルゴリズムの重み情報が格納される、
ことを特徴とする請求項１１記載の調停方法。
【請求項１３】
前記統計情報生成工程は、前記トランザクション層から出力されるパケットデータに割り当てられているトラフィッククラス毎にパケットデータが発行された回数をカウントして、各トラフィッククラスのカウント値を統計情報とする、
ことを特徴とする請求項１１または１２記載の調停方法。
【請求項１４】
前記統計情報生成工程は、前記トランザクション層から出力されるデータ転送リクエストパケットのLengthフィールドの値の積算値を算出し、リクエストパケットのデータサイズの比率を統計情報とする、
ことを特徴とする請求項１１または１２記載の調停方法。
【請求項１５】
前記重み情報更新工程は、通信のマスタがそれぞれ必要とするデータ転送レートの比率である参照情報と前記統計情報生成工程からの統計情報の比率とを比較して、前記アービトレーションテーブルの値を更新する、
ことを特徴とする請求項１１ないし１４のいずれか一記載の調停方法。
【請求項１６】
前記アービタから出力されて前記シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を生成する第２統計情報生成工程を更に含み、
前記重み情報更新工程は、前記第２統計情報生成工程により生成された前記トラフィックの統計情報に基づいて、高プライオリティデバイスが過剰に優先されて、低プライオリティデバイスの通信が妨げられないように、前記アービトレーションテーブルの値を更新する、
ことを特徴とする請求項１１ないし１５のいずれか一記載の調停方法。
【請求項１７】
前記第２統計情報生成工程は、前記アービタから出力されるパケットデータに割り当てられているトラフィッククラス毎にパケットデータが発行された回数をカウントして、各トラフィッククラスのカウント値を統計情報とする、
ことを特徴とする請求項１６記載の調停方法。
【請求項１８】
前記第２統計情報生成工程は、前記アービタから出力されるデータ転送リクエストパケットのLengthフィールドの値の積算値を算出し、リクエストパケットのデータサイズの比率を統計情報とする、
ことを特徴とする請求項１６記載の調停方法。
【請求項１９】
前記高速シリアルバスのアーキテクチャを構成するトランザクション層におけるPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量を監視するバッファ監視工程を更に含み、
前記重み情報更新工程は、前記バッファ監視工程から入力されたPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量をもとに、Read リクエストとWriteリクエストが偏って過剰に発行されてしまわないように、前記アービトレーションテーブルの値を更新する、
ことを特徴とする請求項１１ないし１８のいずれか一記載の調停方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速シリアルバスにおける１つの仮想チャネルを介して複数の通信のマスタとなるデータを入力し、入力した複数のデータをアービタにてアービトレーションテーブルに従って調停して前記高速シリアルバスに出力するデータ通信回路および調停方法に関する。
【背景技術】
【０００２】
一般に、画像データその他のデータを扱うデジタル複写機、複合機（ＭＦＰ）等の情報処理装置では、デバイス間のインタフェースにＰＣＩ等に代表されるパラレル方式のバスが使用されている。しかし、パラレル方式のバスでは、レーシングやスキューなどの問題があり、高速・高画質の画像形成装置に使用するには、転送レートが低い段階にきており、最近では、ＰＣＩバスのようなパラレル方式のインタフェースに代えて、IEEE1394やUSB等の高速シリアルインタフェースの使用が検討されている。例えば、特許文献１によれば、内部インタフェースとして、IEEE1394やUSB等の高速シリアルインタフェースを使用することが提案されている。
【０００３】
このような高速シリアルインタフェース上で画像データとコマンドデータを分離して転送する手法としては、IEEE1394規格やUSB規格で定められたIsochronous転送モードとasynchronous転送モードを利用する方法がある。
【０００４】
しかしながら、Isochronous転送モードとasynchronous転送モードを利用してトラフィックを分離する手法では、複数の画像データがある場合などに、画像データ間での優先順位を設定することが困難である。
【０００５】
また、他の高速シリアルインタフェースとして、ＰＣＩバス方式の後継規格に当るPCI Express（登録商標）なるインタフェースも提案され、実用化の段階にきている（例えば、非特許文献１参照）。このPCI Expressシステムは、概略的には、例えば非特許文献１中の図１等に示されるようなルートコンプレックス−スイッチ（任意階層）−デバイス等のツリー構造（木構造）によるデータ通信網として構成されている。
【０００６】
このようなPCI Express規格によれば、シリアルバスを仮想チャネル（Virtual Channel）単位で時分割に使い分けることで複数トラフィックのパケットデータを伝送する仮想チャネル機能と、仮想チャネル毎にパケットデータを発行する優先度を調停するアービトレーション機能とを有しており、シリアルバスを用いてデータ転送の優先度が異なる複数トラフィックのパケットデータを同時転送させたい場合に、転送レートの調整が可能となっている。
【０００７】
より詳細には、PCI Express規格の仮想チャネルのアービトレーションのアルゴリズムでは、仮想チャネルＶＣ毎に均等な頻度でパケットデータを発行させるラウンドロビン（Round Robin）方式、仮想チャネルＶＣ毎に任意に指定可能なテーブルに従った重み付けされた頻度でパケットデータを発行させるウエイテッドラウンドロビン（Weighted Round Robin）方式、仮想チャネルＶＣ毎に固定の優先順でパケットデータを発行させるストリクト（Strict）方式があり、シリアルバス上に転送するパケットを、トランザクション単位で優先度の調整が可能である。
【０００８】
【特許文献１】特開２００１−０１６３８２号公報
【非特許文献１】“PCI Express 規格の概要”Interface誌、July’2003 里見尚志
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、例えばＤＭＡ（Direct Memory Access）転送のように１つの仮想チャネルＶＣに対して複数のデバイスを共有する場合には、PCI Express規格のアービトレーション機能を利用することができないことから、各デバイスにラウンドロビン（Round Robin）やウエイテッドラウンドロビン（Weighted Round Robin）によるアービタを設けるようにしている。
【００１０】
しかしながら、PCI Expressのアーキテクチャを構成するトランザクション層におけるバッファと発生する複数トラフィックの種類によっては、アービタの設定と実際のトラフィックのプライオリティが整合しないケースがある。これは、PCI Expressのアーキテクチャを構成するトランザクション層には送信バッファが存在するため、送信バッファによってアービタにおける調停による効果が失われる可能性があるためである。
【００１１】
本発明は、上記に鑑みてなされたものであって、トランザクション層の送信バッファが介在している場合であっても、アービタの設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停を行なうことができるデータ通信回路および調停方法を提供することである。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、請求項１にかかる発明は、高速シリアルバスにおける１つの仮想チャネルを介して複数の通信のマスタとなるデータを入力し、入力した複数のデータをアービタにてアービトレーションテーブルに従って調停して前記高速シリアルバスに出力するデータ通信回路において、前記高速シリアルバスのアーキテクチャを構成するトランザクション層を経たシリアル通信路上に設けられ、前記シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を生成する統計情報生成手段と、この統計情報生成手段により生成された前記トラフィックの統計情報に基づいて、前記アービトレーションテーブルの重み情報を更新する重み情報更新手段と、を備える。
【００１３】
仮想チャネルは、シリアル通信路を流れるパケットデータを時分割で複数のトラフィックが使いわけることで、仮想的に複数の通信路が存在するように見せる仕組みである。
【００１４】
また、請求項２にかかる発明は、請求項１記載のデータ通信回路において、前記アービトレーションテーブルには、ＷＲＲ（Weighted Round Robin）アルゴリズムの重み情報が格納される。
【００１５】
ＷＲＲ(Weighted Round Robin)アルゴリズムは、複数の入力ポートから入力されたデータを、入力ポート数よりも少ない数の出力ポート（シリアルバスへ出力する際は１つの出力ポートとなる）に出力する際に、各入力ポートからのデータ転送に競合が発生した場合、各ポートごとに設定された重み情報に基づいて、データ転送量の調停を行うアルゴリズムである。
【００１６】
また、請求項３にかかる発明は、請求項１または２記載のデータ通信回路において、前記統計情報生成手段は、前記トランザクション層から出力されるパケットデータに割り当てられているトラフィッククラス毎にパケットデータが発行された回数をカウントして、各トラフィッククラスのカウント値を統計情報とする。
【００１７】
トラフィッククラスは、シリアル通信路を複数のトラフィックが共有してデータ転送を行う際に、トラフィックを識別するためにパケットデータに付加する識別ＩＤである。
【００１８】
また、請求項４にかかる発明は、請求項１または２記載のデータ通信回路において、前記統計情報生成手段は、前記トランザクション層から出力されるデータ転送リクエストパケットのLengthフィールドの値の積算値を算出し、リクエストパケットのデータサイズの比率を統計情報とする。
【００１９】
Lengthフィールドは、データ転送リクエストパケットのヘッダ情報の一部であり、そのリクエストで要求するデータ転送量を示す情報が含まれる領域である。
【００２０】
また、請求項５にかかる発明は、請求項１ないし４のいずれか一記載のデータ通信回路において、前記重み情報更新手段は、通信のマスタがそれぞれ必要とするデータ転送レートの比率である参照情報と前記統計情報生成手段からの統計情報の比率とを比較して、前記アービトレーションテーブルの値を更新する。
【００２１】
また、請求項６にかかる発明は、請求項１ないし５のいずれか一記載のデータ通信回路において、前記アービタの出力に設けられ、前記シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を生成する第２統計情報生成手段を更に備え、前記重み情報更新手段は、前記第２統計情報生成手段により生成された前記トラフィックの統計情報に基づいて、高プライオリティデバイスが過剰に優先されて、低プライオリティデバイスの通信が妨げられないように、前記アービトレーションテーブルの値を更新する。
【００２２】
また、請求項７にかかる発明は、請求項６記載のデータ通信回路において、前記第２統計情報生成手段は、前記アービタから出力されるパケットデータに割り当てられているトラフィッククラス毎にパケットデータが発行された回数をカウントして、各トラフィッククラスのカウント値を統計情報とする。
【００２３】
また、請求項８にかかる発明は、請求項６記載のデータ通信回路において、前記第２統計情報生成手段は、前記アービタから出力されるデータ転送リクエストパケットのLengthフィールドの値の積算値を算出し、リクエストパケットのデータサイズの比率を統計情報とする。
【００２４】
また、請求項９にかかる発明は、請求項１ないし８のいずれか一記載のデータ通信回路において、前記高速シリアルバスのアーキテクチャを構成するトランザクション層を経たシリアル通信路上に設けられ、前記トランザクション層におけるPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量を監視するバッファ監視手段を更に備え、前記重み情報更新手段は、前記バッファ監視手段から入力されたPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量をもとに、Read リクエストとWriteリクエストが偏って過剰に発行されてしまわないように、前記アービトレーションテーブルの値を更新する。
【００２５】
Postedリクエストは、リクエストの要求先からの応答が必要なリクエストである。例えば、リクエストに対してデータの応答が発生する、メモリリードリクエストを指す。
【００２６】
Non-Postedリクエストは、リクエストの要求先からの応答が不要なリクエストである。例えば、リクエストとともにデータを送信して要求先からの応答が発生しない、メモリライトリクエストを指す。
【００２７】
また、請求項１０にかかる発明は、請求項１ないし９のいずれか一記載のデータ通信回路において、前記高速シリアルバスは、PCI Express 規格の高速シリアルバスである。
【００２８】
また、請求項１１にかかる発明は、高速シリアルバスにおける１つの仮想チャネルを介して複数の通信のマスタとなるデータを入力し、入力した複数のデータをアービタにてアービトレーションテーブルに従って調停して前記高速シリアルバスに出力するデータ通信回路における調停方法であって、前記高速シリアルバスのアーキテクチャを構成するトランザクション層を経たシリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を生成する統計情報生成工程と、この統計情報生成工程により生成された前記トラフィックの統計情報に基づいて、前記アービトレーションテーブルの重み情報を更新する重み情報更新工程と、を含む。
【００２９】
また、請求項１２にかかる発明は、請求項１１記載の調停方法において、前記アービトレーションテーブルには、ＷＲＲ（Weighted Round Robin）アルゴリズムの重み情報が格納される。
【００３０】
また、請求項１３にかかる発明は、請求項１１または１２記載の調停方法において、前記統計情報生成工程は、前記トランザクション層から出力されるパケットデータに割り当てられているトラフィッククラス毎にパケットデータが発行された回数をカウントして、各トラフィッククラスのカウント値を統計情報とする。
【００３１】
また、請求項１４にかかる発明は、請求項１１または１２記載の調停方法において、前記統計情報生成工程は、前記トランザクション層から出力されるデータ転送リクエストパケットのLengthフィールドの値の積算値を算出し、リクエストパケットのデータサイズの比率を統計情報とする。
【００３２】
また、請求項１５にかかる発明は、請求項１１ないし１４のいずれか一記載の調停方法において、前記重み情報更新工程は、通信のマスタがそれぞれ必要とするデータ転送レートの比率である参照情報と前記統計情報生成工程からの統計情報の比率とを比較して、前記アービトレーションテーブルの値を更新する。
【００３３】
また、請求項１６にかかる発明は、請求項１１ないし１５のいずれか一記載の調停方法において、前記アービタから出力されて前記シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を生成する第２統計情報生成工程を更に含み、前記重み情報更新工程は、前記第２統計情報生成工程により生成された前記トラフィックの統計情報に基づいて、高プライオリティデバイスが過剰に優先されて、低プライオリティデバイスの通信が妨げられないように、前記アービトレーションテーブルの値を更新する。
【００３４】
また、請求項１７にかかる発明は、請求項１６記載の調停方法において、前記第２統計情報生成工程は、前記アービタから出力されるパケットデータに割り当てられているトラフィッククラス毎にパケットデータが発行された回数をカウントして、各トラフィッククラスのカウント値を統計情報とする。
【００３５】
また、請求項１８にかかる発明は、請求項１６記載の調停方法において、前記第２統計情報生成工程は、前記アービタから出力されるデータ転送リクエストパケットのLengthフィールドの値の積算値を算出し、リクエストパケットのデータサイズの比率を統計情報とする。
【００３６】
また、請求項１９にかかる発明は、請求項１１ないし１８のいずれか一記載の調停方法において、前記高速シリアルバスのアーキテクチャを構成するトランザクション層におけるPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量を監視するバッファ監視工程を更に含み、前記重み情報更新工程は、前記バッファ監視工程から入力されたPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量をもとに、Read リクエストとWriteリクエストが偏って過剰に発行されてしまわないように、前記アービトレーションテーブルの値を更新する。
【発明の効果】
【００３７】
請求項１にかかる発明によれば、高速シリアルバスのアーキテクチャを構成するトランザクション層から出力されたパケットデータをモニタした結果をリアルタイムにフィードバック制御してアービトレーションテーブルに反映することで、シリアル通信路を実際に転送されたパケットデータのデータ転送量に応じた優先度づけを可能とすることにより、トランザクション層の送信バッファが介在している場合であっても、アービタの設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停を行なうことができるという効果を奏する。
【００３８】
また、請求項２にかかる発明によれば、仮想チャネル毎に任意に指定可能なアービトレーションテーブルに従った重み付けされた頻度でパケットデータを発行させることができるという効果を奏する。
【００３９】
また、請求項３にかかる発明によれば、シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を確実に生成することができるという効果を奏する。
【００４０】
また、請求項４にかかる発明によれば、リクエストパケットのデータサイズの比率が統計情報となり、発行するリクエストサイズが一定でない場合や、チャネル毎にリクエストするデータサイズが偏っている場合などのデータ転送量の統計情報として有効となるという効果を奏する。
【００４１】
また、請求項５にかかる発明によれば、アービトレーションテーブルの重み情報を確実に更新することができるという効果を奏する。
【００４２】
また、請求項６にかかる発明によれば、高プライオリティデバイスが過剰に優先されて、低プライオリティデバイスの通信が妨げられないように抑制することができるという効果を奏する。
【００４３】
また、請求項７にかかる発明によれば、シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を確実に生成することができるという効果を奏する。
【００４４】
また、請求項８にかかる発明によれば、リクエストパケットのデータサイズの比率が統計情報となり、発行するリクエストサイズが一定でない場合や、チャネル毎にリクエストするデータサイズが偏っている場合などのデータ転送量の統計情報として有効となるという効果を奏する。
【００４５】
また、請求項９にかかる発明によれば、リクエストパケットが必要以上にバッファを埋めて他のリクエストの発行を妨げることを防ぐことができるという効果を奏する。
【００４６】
また、請求項１０にかかる発明によれば、スケーラビリティが高い等の特徴を有するPCI Express規格の高速シリアルバスを有効に活用することにより、ライン同期転送のタイミング制約があっても、高速な画像データ出力や同時転送を行うことができるという効果を奏する。
【００４７】
また、請求項１１にかかる発明によれば、高速シリアルバスのアーキテクチャを構成するトランザクション層から出力されたパケットデータをモニタした結果をリアルタイムにフィードバック制御してアービトレーションテーブルに反映することで、シリアル通信路を実際に転送されたパケットデータのデータ転送量に応じた優先度づけを可能とすることにより、トランザクション層の送信バッファが介在している場合であっても、アービタの設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停を行なうことができるという効果を奏する。
【００４８】
また、請求項１２にかかる発明によれば、仮想チャネル毎に任意に指定可能なアービトレーションテーブルに従った重み付けされた頻度でパケットデータを発行させることができるという効果を奏する。
【００４９】
また、請求項１３にかかる発明によれば、シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を確実に生成することができるという効果を奏する。
【００５０】
また、請求項１４にかかる発明によれば、リクエストパケットのデータサイズの比率が統計情報となり、発行するリクエストサイズが一定でない場合や、チャネル毎にリクエストするデータサイズが偏っている場合などのデータ転送量の統計情報として有効となるという効果を奏する。
【００５１】
また、請求項１５にかかる発明によれば、アービトレーションテーブルの重み情報を確実に更新することができるという効果を奏する。
【００５２】
また、請求項１６にかかる発明によれば、高プライオリティデバイスが過剰に優先されて、低プライオリティデバイスの通信が妨げられないように抑制することができるという効果を奏する。
【００５３】
また、請求項１７にかかる発明によれば、シリアル通信路を転送されるパケットデータ量に基づいてトラフィックの統計情報を確実に生成することができるという効果を奏する。
【００５４】
また、請求項１８にかかる発明によれば、リクエストパケットのデータサイズの比率が統計情報となり、発行するリクエストサイズが一定でない場合や、チャネル毎にリクエストするデータサイズが偏っている場合などのデータ転送量の統計情報として有効となるという効果を奏する。
【００５５】
また、請求項１９にかかる発明によれば、リクエストパケットが必要以上にバッファを埋めて他のリクエストの発行を妨げることを防ぐことができるという効果を奏する。
【発明を実施するための最良の形態】
【００５６】
以下に添付図面を参照して、この発明にかかるデータ通信装置および調停方法の最良な実施の形態を詳細に説明する。
【００５７】
［第１の実施の形態］
本発明の第１の実施の形態を図１ないし図１６に基づいて説明する。以下では、PCI Expressの詳細について、［PCI Express規格の概要］〜［PCI Express のアーキテクチャの詳細］の欄で説明し、その後、本実施の形態のデータ通信装置について、［データ通信装置］の欄で説明する。
【００５８】
［PCI Express規格の概要］
まず、本実施の形態は高速シリアルバスの一つであるPCI Express（登録商標）を利用するものであり、本実施の形態の前提として当該PCI Express規格の概要について、非特許文献１の一部抜粋により説明する。ここに、高速シリアルバスとは、１本の伝送路を用いてシリアル（直列）伝送により高速（１００Ｍｂｐｓ程度以上）にデータをやり取りすることができるインタフェースを意味する。
【００５９】
PCI Expressは、PCIの後継規格としてコンピュータ全般に通用する標準拡張バスとして規格化されたバスであり、概略的には、低電圧差動信号伝送、ポイントツーポイントで送受信独立の通信チャネル、パケット化されたスプリットトランザクション、リンク構成の違いによる高いスケーラビリティなどの特徴を持つ。
【００６０】
図１に既存のPCIシステム、図２にPCI Expressシステムの各々の構成例を示す。既存のPCIシステムにあっては、ＣＰＵ１００やＡＧＰグラフィックス１０１やメモリ１０２が接続されたホストブリッジ１０３に対して、PCI-X（PCIの上位互換規格）デバイス１０４ａ，１０４ｂがPCI-Xブリッジ１０５ａを介して接続されたり、PCIデバイス１０４ｃ，１０４ｄが接続されたPCIブリッジ１０５ｂやPCIバススロット１０６が接続されたPCIブリッジ１０７がPCIブリッジ１０５ｃを介して接続されたりしたツリー構造（木構造）とされている。
【００６１】
これに対して、PCI Expressシステムにあっては、ＣＰＵ１１０やメモリ１１１が接続されたルートコンプレックス１１２に対して、PCI Expressグラフィックス１１３がPCI Express１１４ａにより接続され、また、エンドポイント１１５ａやレガシーエンドポイント１１６ａがPCI Express１１４ｂにより接続されたスイッチ１１７ａがPCI Express１１４ｃにより接続され、さらには、エンドポイント１１５ｂやレガシーエンドポイント１１６ｂがPCI Express１１４ｄにより接続されたスイッチ１１７ｂやPCIバススロット１１８が接続されたPCIブリッジ１１９がPCI Express１１４ｅにより接続されたスイッチ１１７ｃがPCI Express１１４ｆにより接続されたツリー構造（木構造）とされている。
【００６２】
実際に想定されるPCI Expressプラットホーム例を図３に示す。図示例は、デスクトップ／モバイルへの適用例を示し、ＣＰＵ１２１がＣＰＵホストバス１２２により接続され、メモリ１２３が接続されたメモリハブ１２４（ルートコンプレックスに相当する）に対して、例えば、グラフィックス１２５がｘ１６のPCI Express１２６ａにより接続され、また、変換機能を有するＩ／Ｏハブ１２７がPCI Express１２６ｂにより接続されている。このＩ／Ｏハブ１２７には、例えば、Serial ATA１２８によりストレージ１２９が接続され、LPC１３０によりローカルＩ／Ｏ１３１が接続され、USB 2.0１３２やPCIバススロット１３３が接続されている。さらには、Ｉ／Ｏハブ１２７には、PCI Express１２６ｃによりスイッチ１３４が接続され、このスイッチ１３４には、各々、PCI Express１２６ｄ，１２６ｅ，１２６ｆによりモバイルドック１３５、ギガビットイーサネット１３６（イーサネットは登録商標）、アドインカード１３７が接続されている。
【００６３】
即ち、PCI Expressシステムでは、従来のPCI，PCI-X，AGPといったバスがPCI Expressで置き換わり、既存のPCI／PCI-Xデバイスを接続するためにブリッジが使用される。チップセット間の接続もPCI Express接続となり、IEEE1394，Serial ATA，USB 2.0などの既存のバスはＩ／ＯハブによりPCI Expressに接続される。
【００６４】
［PCI Expressの構成要素］
Ａ．ポート（Port）／レーン（Lane）／リンク（Link）
図４に物理層の構造を示す。ポートは、物理的には同一半導体内にあり、リンクを形成するトランスミッタ／レシーバの集合で、論理的にはコンポーネント・リンク間を１対１で接続（ポイント・ツー・ポイント）するインタフェースを意味する。転送レートは、例えば片方向２．５Ｇｂｐｓとされている。レーンは、例えば０．８Ｖの差動信号ペアのセットで、送信側の信号ペア（２本）、受信側の信号ペア（２本）からなる。リンクは、２つのポートとその間を結ぶレーンの集まりであり、コンポーネント間のデュアルシンプレックス通信バスである。「ｘＮリンク」はＮ本のレーンから構成され、現在の規格では、Ｎ＝１，２，４，８，１６，３２が定義されている。図示例は、ｘ４リンク例である。例えば、図５に示すように、デバイスＡ，Ｂ間を結ぶこのレーン幅Ｎを可変することにより、スケーラブルなバンド幅を構成することが可能となる。
【００６５】
Ｂ．ルートコンプレックス（Root Complex）
ルートコンプレックス１１２は、Ｉ／Ｏ構造の最上位に位置し、ＣＰＵやメモリサブシステムをＩ／Ｏに接続する。ブロック図などでは、図３に示すように、「メモリハブ」と記述されることが多い。ルートコンプレックス１１２（又は、１２４）は、１つ以上のPCI Expressポート（ルートポート）（図２中では、ルートコンプレックス１１２中の四角で示す）を持ち、各々のポートは独立したＩ／Ｏ階層ドメインを形成する。Ｉ／Ｏ階層ドメインは、単純なエンドポイントである場合（例えば、図２中のエンドポイント１１５ａ側の例）や、多数のスイッチやエンドポイントから形成される場合（例えば、図２中のエンドポイント１１５ｂやスイッチ１１７ｂ，１１５ｃ側の例）がある。
【００６６】
Ｃ．エンドポイント（End Point）
エンドポイント１１５は、タイプ００ｈのコンフィグレーション空間ヘッダを持つデバイス（具体的には、ブリッジ以外のデバイス）で、レガシーエンドポイントとPCI Expressエンドポイントとに分けられる。両者の大きな違いは、PCI ExpressエンドポイントはＢＡＲ（ベースアドレスレジスタ）でＩ／Ｏリソースを要求せず、このためＩ／Ｏリクエストを要求しない。また、PCI Expressエンドポイントは、ロックリクエストもサポートしていない。
【００６７】
Ｄ．スイッチ（Switch）
スイッチ１１７（又は、１３４）は、２つ以上のポートを結合し、ポート間でのパケットルーティングを行う。コンフィグレーションソフトウェアからは、当該スイッチは、図６に示すように、仮想PCI-PCIブリッジ１４１の集合体として認識される。図中、両矢印はPCI Expressリンク１１４（又は、１２６）を示し、１４２ａ〜１４２ｄはポートを示す。このうち、ポート１４２ａはルートコンプレックスに近い方のアップストリームポートであり、ポート１４２ｂ〜１４２ｄはルートコンプレックスから遠い方のダウンストリームポートである。
【００６８】
Ｅ．PCI Express１１４ｅ−PCIブリッジ１１９
PCI ExpressからPCI／PCI-Xへの接続を提供する。これにより、既存のPCI／PCI-XデバイスをPCI Expressシステム上で使用することができる。
【００６９】
［階層アーキテクチャ］
従来のＰＣＩのアーキテクチャは、図７−１に示すように、プロトコルとシグナリングが密接に関連する構造であり階層という考え方はなかったが、PCI Expressでは、図７−２に示すように、一般的な通信プロトコルやInfiniBandのように、独立した階層構造とされ、各層に分けて仕様が定義されている。即ち、最上位のソフトウェア１５１、最下位の機構（メカニカル）部１５２間に、トランザクション層１５３、データリンク層１５４、物理層１５５を持つ構造とされている。これにより、各層のモジュール性が確保され、スケーラビリティを持たせることやモジュールの再利用が可能となる。例えば、新たな信号コーディング方式や伝送媒体を採用する場合、物理層を変更するだけでデータリンク層やトランザクション層は変更せずに対応できる。
【００７０】
PCI Expressのアーキテクチャの中心となるのは、トランザクション層１５３、データリンク層１５４、物理層１５５であり、各々図８を参照して説明する以下のような役割を持つ。
【００７１】
Ａ．トランザクション層１５３
トランザクション層１５３は、最上位に位置し、トランザクションレイヤパケット（ＴＬＰ）の組み立て、分解機能を持つ。トランザクションレイヤパケット（ＴＬＰ）は、リード／ライト、各種イベントといったトランザクションの伝達に用いられる。また、トランザクション層１５３は、トランザクションレイヤパケット（ＴＬＰ）のためのクレジットを用いたフロー制御を行う。各層１５３〜１５５におけるトランザクションレイヤパケット（ＴＬＰ）の概要を図９に示す（詳細は、後述する）。
【００７２】
Ｂ．データリンク層１５４
データリンク層１５４の主な役割は、エラー検出／訂正（再送）によりトランザクションレイヤパケット（ＴＬＰ）のデータ完全性を保証することと、リンク管理である。データリンク層１５４間では、リンク管理やフロー制御のためのパケットのやり取りを行う。このパケットは、トランザクションレイヤパケット（ＴＬＰ）と区別するために、データリンクレイヤパケット（ＤＬＬＰ）と呼ばれる。
【００７３】
Ｃ．物理層１５５
物理層１５５は、ドライバ、入力バッファ、パラレル−シリアル／シリアル−パラレル変換器、ＰＬＬ、インピーダンス整合回路といったインタフェース動作に必要な回路を含んでいる。また、論理的な機能としてインタフェースの初期化・保守の機能を持つ。物理層１５５は、データリンク層１５４／トランザクション層１５３を実際のリンクで使用される信号技術から独立させる役目も持っている。
【００７４】
なお、PCI Expressのハードウェア構成上、エンベデッド・クロックという技術を採用しており、クロック信号はなく、クロックのタイミングはデータ信号中に埋め込まれており、受信側でデータ信号のクロス・ポイントを基にクロックを抽出する方式とされている。
【００７５】
［コンフィグレーション空間］
PCI Expressは、従来のPCIと同様にコンフィグレーション空間を持つが、その大きさは従来のPCIが２５６バイトであるのに対して、図１０に示すように、４０９６バイトへと拡張されている。これにより、多数のデバイス固有レジスタセットを必要とするデバイス（ホストブリッジなど）に対しても、将来的に十分な空間が確保されている。PCI Expressでは、コンフィグレーション空間へのアクセスは、フラットなメモリ空間へのアクセス（コンフィグレーションリード／ライト）で行われ、バス／デバイス／機能／レジスタ番号はメモリアドレスにマップされている。
【００７６】
当該空間の先頭２５６バイトは、PCIコンフィグレーション空間として、ＢＩＯＳや従来のＯＳからＩ／Ｏポートを使用した方法でもアクセスできる。従来のアクセスをPCI Expressでのアクセスに変換する機能は、ホストブリッジ上に実装される。００ｈから３ＦｈまではPCI2.3互換のコンフィグレーションヘッダとなっている。これにより、PCI Expressで拡張された機能以外であれば、従来のＯＳやソフトウェアをそのまま使用することができる。即ち、PCI Expressにおけるソフトウェア層は、既存のPCIと互換性を保ったロード・ストア・アーキテクチャ（プロセッサが直接Ｉ／Ｏレジスタをアクセスする方式）を継承している。しかし、PCI Expressで拡張された機能（例えば、同期転送やＲＡＳ（Reliability,Availability and Serviceability）などの機能）を使用するには、４ＫバイトのPCI Express拡張空間にアクセスできるようにする必要がある。
【００７７】
なお、PCI Expressとしては様々なフォームファクタ（形状）が考えられるが、具体化している例としては、アドインカード、プラグインカード（Express Card）、Mini PCI Expressなどがある。
【００７８】
［PCI Express のアーキテクチャの詳細］
PCI Express のアーキテクチャの中心となっているトランザクション層１５３、データリンク層１５４、物理層１５５について、各々詳細に説明する。
【００７９】
Ａ．トランザクション層１５３
トランザクション層１５３の主な役割は、前述したように、上位のソフトウェア層１５１と下位のデータリンク層１５４との間でトランザクションレイヤパケット（ＴＬＰ）の組み立てと分解を行うことである。
【００８０】
ａ．アドレス空間とトランザクションタイプ
PCI Expressでは、従来のPCIでサポートされていたメモリ空間（メモリ空間とのデータ転送用）、Ｉ／Ｏ空間（Ｉ／Ｏ空間とのデータ転送用）、コンフィグレーション空間（デバイスのコンフィグレーションとセットアップ用）に加えて、メッセージ空間（PCI Expressデバイス間のインバンドでのイベント通知や一般的なメッセージ送信（交換）用…割り込み要求や確認は、メッセージを「仮想ワイヤ」として使用することにより伝達される）が追加され、４つのアドレス空間が定義されている。各々の空間に対してトランザクションタイプが定義されている（メモリ空間、Ｉ／Ｏ空間、コンフィグレーション空間は、リード／ライト、メッセージ空間は基本（ベンダ定義含む））。
【００８１】
ｂ．トランザクションレイヤパケット（ＴＬＰ）
PCI Expressは、パケット単位で通信を行う。図９に示したトランザクションレイヤパケット（ＴＬＰ）のフォーマットにおいて、ヘッダのヘッダ長は３ＤＷ（ＤＷはダブルワードの略；合計１２バイト）又は４ＤＷ（１６バイト）で、トランザクションレイヤパケット（ＴＬＰ）のフォーマット（ヘッダ長とペイロードの有無）、トランザクションタイプ、トラフィッククラス（ＴＣ）、アトリビュートやペイロード長などの情報が含まれる。パケット内の最大ペイロード長は１０２４ＤＷ（４０９６バイト）である。
【００８２】
ＥＣＲＣは、エンドツーエンドのデータ完全性を保証するためのもので、トランザクションレイヤパケット（ＴＬＰ）部分の３２ビットＣＲＣである。これは、スイッチ内部などでトランザクションレイヤパケット（ＴＬＰ）にエラーが発生した場合、ＬＣＲＣ（リンクＣＲＣ）ではエラーを検出できないためである（エラーとなったＴＬＰでＬＣＲＣが再計算されるため）。
【００８３】
リクエストは、完了パケットが不要なものと必要なものとがある。
【００８４】
ｃ．トラフィッククラス（ＴＣ）と仮想チャネル（ＶＣ）
上位のソフトウェアは、トラフィッククラス（ＴＣ）を使用することによりトラフィックの差別化（優先度をつける）を行うことができる。例えば、映像データをネットワークのデータよりも優先して転送する、といったことが可能となる。トラフィッククラス（ＴＣ）はＴＣ０からＴＣ７まで８つある。
【００８５】
仮想チャネル（ＶＣ：Vertual Channel）は、各々独立した仮想通信バス（同一のリンクを共用する複数の独立したデータ・フロー・バッファを使用するメカニズム）で、各々がリソース（バッファやキュー）を持ち、図１１に示すように、独立したフロー制御を行う。これにより、１つの仮想チャネルのバッファが満杯の状態（full）になっても、他の仮想チャネルの転送を行うことができる。つまり、物理的には１つのリンクを仮想的な複数のチャネルに分けることで、有効に使用することができる。例えば、図１１中に示すように、スイッチを経由してルートのリンクが複数のデバイスに分かれる場合、各デバイスのトラフィックの優先度を制御することができる。ＶＣ０は必須で、コストパフォーマンスのトレードオフに応じてその他の仮想チャネル（ＶＣ１〜ＶＣ７）が実装される。図１１中の実線矢印は、デフォルト仮想チャネル（ＶＣ０）を示し、破線矢印はその他の仮想チャネル（ＶＣ１〜ＶＣ７）を示している。
【００８６】
トランザクション層内では、トラフィッククラス（ＴＣ）が仮想チャネル（ＶＣ）にマッピングされる。１つの仮想チャネル（ＶＣ）に対して１つ又は複数のトラフィッククラス（ＴＣ）をマッピングできる（仮想チャネル（ＶＣ）の数が少ない場合）。単純な例では、各トラフィッククラス（ＴＣ）から各仮想チャネル（ＶＣ）に１対１、全てのトラフィッククラス（ＴＣ）を仮想チャネルＶＣ０にマッピングする、といったことが考えられる。ＴＣ０−ＶＣ０のマッピングは、必須／固定で、それ以外のマッピングは上位のソフトウェアから制御される。ソフトウェアはトラフィッククラス（ＴＣ）を利用することで、トランザクションの優先度を制御することが可能となる。
【００８７】
ｄ．フロー制御
受信バッファのオーバーフローを避け、伝送順序を確立するためにフロー制御（ＦＣ：Flow Control）が行われる。フロー制御は、リンク間のポイントツーポイントで行われ、エンドツーエンドではない。従って、フロー制御により最終的な相手（コンプリータ）にパケットが届いたことを確認することはできない。
【００８８】
PCI Expressのフロー制御は、クレジット・ベースで行われる（データ転送を始める前に、受け取り側のバッファの空き状況を確認し、オーバーフロー、アンダフローが発生しないメカニズム）。即ち、受信側はリンク初期化時にバッファ容量（クレジット値）を送信側に通知し、送信側はクレジット値と送信するパケットの長さとを比較し、一定の残りがある場合のみパケットを送信する。このクレジットには６種類ある。
【００８９】
フロー制御の情報交換はデータリンク層のデータリンクレイヤパケット（ＤＬＬＰ）を使用して行われる。フロー制御はトランザクションレイヤパケット（ＴＬＰ）のみに適用され、データリンクレイヤパケット（ＤＬＬＰ）には適用されない（ＤＬＬＰは常時送受信可能）。
【００９０】
Ｂ．データリンク層１５４
データリンク層１５４の主な役割は、前述したように、リンク上の２つのコンポーネント間での信頼性の高いトランザクションレイヤパケット（ＴＬＰ）交換機能を提供することである。
【００９１】
ａ．トランザクションレイヤパケット（ＴＬＰ）の扱い
トランザクション層１５３から受け取ったトランザクションレイヤパケット（ＴＬＰ）に対しては、先頭に２バイトのシーケンス番号、末尾に４バイトのリンクＣＲＣ（ＬＣＲＣ）を付加して、物理層１５５に渡す（図９参照）。トランザクションレイヤパケット（ＴＬＰ）は、リトライバッファに保管され、相手から受信確認（ＡＣＫ）が届くまで再送される。トランザクションレイヤパケット（ＴＬＰ）の送信に失敗が続いた場合は、リンク異常であると判断して物理層１５５に対してリンクの再トレーニングを要求する。リンクのトレーニングが失敗した場合、データリンク層１５４の状態はインアクティブに遷移する。
【００９２】
物理層１５５から受け取ったトランザクションレイヤパケット（ＴＬＰ）は、シーケンス番号とリンクＣＲＣ（ＬＣＲＣ）が検査され、正常であればトランザクション層１５３に渡され、エラーがあった場合は再送を要求する。
【００９３】
ｂ．データリンクレイヤパケット（ＤＬＬＰ）
トランザクションレイヤパケット（ＴＬＰ）は、物理層から送信されるときに自動的に図１２に示すようなデータリンクレイヤパケット（ＤＬＬＰ）に分割されて各レーンに送信される。データリンク層１５４が生成するパケットは、データリンクレイヤパケット（ＤＬＬＰ）と呼ばれ、データリンク層１５４間でやり取りされる。データリンクレイヤパケット（ＤＬＬＰ）には、
・Ack／Nak：ＴＬＰの受信確認、リトライ（再送）
・InitFC1／InitFC2／UpdateFC：フロー制御の初期化とアップデート
・電源管理のためのＤＬＬＰ
なる種類がある。
【００９４】
図１２に示すように、データリンクレイヤパケット（ＤＬＬＰ）の長さは６バイトで、種類を示すＤＬＬＰタイプ（１バイト）、ＤＬＬＰの種類で固有の情報（３バイト）、ＣＲＣ（２バイト）から構成される。
【００９５】
Ｃ．物理層−論理サブブロック１５６
図８中に示す物理層１５５の論理サブブロック１５６での主な役割は、データリンク層１５４から受け取ったパケットを電気サブブロック１５７で送信できる形式に変換することである。また、物理層１５５を制御／管理する機能も有する。
【００９６】
ａ．データ符号化とパラレル−シリアル変換
PCI Expressは、連続した“０”や“１”が続かないように（長い期間、クロス・ポイントが存在しない状態が続かないようにするため）、データ符号化に８Ｂ／１０Ｂ変換を用いる。変換されたデータは、図１３中に示すように、シリアル変換され、ＬＳＢからレーン上に送信される。ここに、レーンが複数ある場合は（図１３はｘ４リンクの場合を例示している）、符号化の前にデータがバイト単位で各レーンに割り振られる。この場合、一見パラレル・バスのようにみえるが、レーン毎に独立した転送を行うので、パラレル・バスで問題となるスキューが大幅に緩和される。
【００９７】
ｂ．電源管理とリンクステート
リンクの消費電力を低く抑えるために、図１４に示すように、Ｌ０／Ｌ０ｓ／Ｌ１／Ｌ２というリンクステートが定義されている。
【００９８】
Ｌ０が通常モードで、Ｌ０ｓからＬ２へと低消費電力となるが、Ｌ０への復帰にも時間がかかるようになる。図１５に示すように、ソフトウェアによる電源管理に加えて、アクティブステート電源管理を積極的に行うことにより、消費電力を極力小さくすることが可能となる。
【００９９】
Ｄ．物理層−電気サブブロック１５７
物理層１５５の電気サブブロック１５７での主な役割は、論理サブブロック１５６でシリアル化されたデータをレーン上に送信することと、レーン上のデータを受信して論理サブブロック１５６に渡すことである。
【０１００】
ａ．ＡＣカップリング
リンクの送信側では、ＡＣカップリング用のコンデンサが実装される。これにより、送信側と受信側のＤＣコモンモード電圧が同一である必要がなくなる。このため、送信側と受信側で異なる設計、半導体プロセス、電源電圧を使用することが可能となる。
【０１０１】
ｂ．デエンファシス
PCI Expressでは、前述したように、８Ｂ／１０Ｂエンコーディングによってできるだけ連続した“０”や“１”が続かないように処理されるが、連続した“０”や“１”が続くこともある（最大５回）。この場合、送信側はデエンファシス転送を行わなければならないことが規定されている。同一極性のビットが連続する場合は、２つ目のビットからは差動電圧レベル（振幅）を３．５±０．５ｄＢ落とすことで、受信側で受け取る信号のノイズ・マージンを稼ぐ必要がある。これを、デエンファシスという。伝送路の周波数依存性減衰のため、変化するビットの場合は高周波成分が多く、減衰により受信側の波形が小さくなるが、変化しないビットの場合は高周波成分が少なく、相対的に受信側の波形が大きくなる。このため、受信側での波形を一定とするためにデエンファシスを行う。
【０１０２】
［データ通信装置］
本実施の形態のデータ通信装置の一例について図１６を参照して説明する。図１６は、本発明の第１の実施の形態にかかるデータ通信装置１の概要を示すブロック図である。なお、本実施の形態は、ＤＭＡ（Direct Memory Access）転送のように１つの仮想チャネルに複数のデバイスを共有する場合を想定したものである。仮想チャネルについては、図１１にて説明したので、ここでの説明は省略する。
【０１０３】
図１６に示すように、PCI Express接続されるデバイスであるデータ通信装置１は、PCI Express接続のためのＰＣＩｅコア２と、PCI Expressを利用するデバイスの主要部であるユーザロジック回路３と、ＰＣＩｅコア２とユーザロジック回路３とを結ぶユーザロジックＩＦ（Interface）４とで構成されている。
【０１０４】
ＰＣＩｅコア２は、図８で説明したように、PCI Expressのアーキテクチャの中心となるトランザクション層１５３、データリンク層１５４、物理層１５５を備えている。
【０１０５】
ユーザロジック回路３は、ＰＣＩｅコア２とユーザロジック回路３との間で送受信されるデータを調停するＰＣＩｅコントローラ１１、ＤＭＡ（Direct Memory Access）転送の制御を行なうＤＭＡＣ（Direct Memory Access controller）１２、アービトレーション機能を発揮するアービタ（Arbiter）１３、アービトレーションテーブル１４を備えている。
【０１０６】
ＤＭＡＣ１２は、複数のＤＭＡチャネル（図１６中、ＤＭＡＣ１〜３）を有しており、各チャネルは１つの機器（またはチップ）によって占有されている。このＤＭＡＣ１２を介した通信マスタとなるデータは、アービタ１３を介してＰＣＩｅコントローラ１１に接続される。
【０１０７】
アービタ１３は、ＤＭＡＣ１２の複数のＤＭＡチャネル（図１６中、ＤＭＡＣ１〜３）からのデータをアービトレーションテーブル１４に従って調停して、ＰＣＩｅコントローラ１１に出力する。
【０１０８】
ここで、アービタ１３のアルゴリズムとアービトレーションテーブル１４について詳述する。アービトレーションテーブル１４には、ＷＲＲ（Weighted Round Robin）アルゴリズムの重み情報が格納される。ＷＲＲ(Weighted Round Robin)アルゴリズムは、複数の入力ポートから入力されたデータを、入力ポート数よりも少ない数の出力ポート（シリアルバスへ出力する際は１つの出力ポートとなる）に出力する際に、各入力ポートからのデータ転送に競合が発生した場合、各ポートごとに設定された重み情報に基づいて、データ転送量の調停を行うアルゴリズムである。
【０１０９】
たとえば、下記に示すように、
Weight
ＤＭＡＣ１            １
ＤＭＡＣ２            １
ＤＭＡＣ３            １
というアービトレーションテーブル１４が設定された場合、ＤＭＡＣ１２の複数のＤＭＡチャネル（ＤＭＡＣ１〜３）がともに連続のリクエストを発行していると、
ＤＡＭＣ１→ＤＭＡＣ２→ＤＭＡＣ３→ＤＭＡＣ１→ＤＭＡＣ２→ＤＭＡＣ３→・・・
の順に、均等にリクエストが、アービタ１３から発行される。
【０１１０】
また、下記に示すように、
Weight
ＤＭＡＣ１            １
ＤＭＡＣ２            ２
ＤＭＡＣ３            ３
というアービトレーションテーブル１４が設定された場合、ＤＭＡＣ１２の複数のＤＭＡチャネル（図１６中、ＤＭＡＣ１〜３）がともに連続のリクエストを発行していると、
ＤＡＭＣ１→ＤＭＡＣ２→ＤＭＡＣ３→ＤＭＡＣ２→ＤＭＡＣ３→ＤＭＡＣ３→ＤＡＭＣ１→ＤＭＡＣ２→ＤＭＡＣ３→ＤＭＡＣ２→ＤＭＡＣ３→ＤＭＡＣ３→・・・
の順に、
ＤＭＡＣ１：ＤＭＡＣ２：ＤＭＡＣ３ ＝ １：２：３
の比率でリクエストが重み付けされて、アービタ１３から発行される。
【０１１１】
ところで、上述したように、ユーザロジック回路３にＷＲＲによるアービタ１３を設けるようにした場合、ＰＣＩｅコア２のトランザクション層１５３に設けられたバッファとＤＭＡＣ１２からのトラフィックの種類によっては、アービタ１３の設定と実際のトラフィックのプライオリティが整合しないケースがある。
【０１１２】
そこで、本実施の形態においては、ＰＣＩｅコア２のトランザクション層１５３から出力されたパケットデータをモニタした結果を、アービトレーションテーブル１４に反映することで、シリアル通信路を実際に転送されたパケットデータのデータ転送量に応じた優先度づけを可能とした。
【０１１３】
より具体的には、ＰＣＩｅコア３のトランザクション層１５３の出口以降、パケットデータがシリアルになった後の経路上に、統計情報生成手段であるパケットモニタ回路２１を設け、このパケットモニタ回路２１によりトラフィックの統計情報を生成して、ユーザロジック回路３に伝達する。また、ユーザロジック回路３には、アービトレーションテーブル１４の値を更新するための参照情報を記憶した重み情報更新手段であるプライオリティ演算回路２２を設けた。
【０１１４】
まず、パケットモニタ回路２１の動作について説明する。
【０１１５】
ＤＭＡＣ１２の複数のＤＭＡチャネル（図１６中、ＤＭＡＣ１〜３）は、それぞれの発行するリクエストパケットに識別ＩＤをつける。さらに、アービタ１３から発行されたリクエストパケットは、ＰＣＩｅコントローラ１１においてＤＭＡＣ１２の識別ＩＤごとに異なるＴＣ（Traffic Class）を割り当てる。例えば、ＤＭＡＣ１のリクエストパケットはＴＣ１，ＤＭＡＣ２のリクエストパケットはＴＣ２，ＤＭＡＣ３のリクエストパケットにはＴＣ３を割り当てる。
【０１１６】
ＰＣＩｅコア２のトランザクション層１５３から出力されるパケットデータにはＴＣ番号が付加されており、パケットモニタ回路２１は、ＴＣ毎にリクエストパケットが発行された回数をカウントして、各ＴＣのカウント値を統計情報として、プライオリティ演算回路２２に出力する。
【０１１７】
パケットモニタ回路２１の統計情報としては、ＴＣごとのリクエストパケット発行回数以外に、データ転送リクエストパケットのLengthフィールドの値の積算値を用いても良い。Lengthフィールドは、データ転送リクエストパケットのヘッダ情報の一部であり、そのリクエストで要求するデータ転送量を示す情報が含まれる領域である。この場合、リクエストパケットのデータサイズの比率が統計情報となり、ＤＭＡＣ１２の発行するリクエストサイズが一定でない場合や、ＤＭＡＣ１２のチャネル毎にリクエストするデータサイズが偏っている場合などのデータ転送量の統計情報として有効となる。
【０１１８】
また、図１６の例では、パケットモニタ回路２１をＰＣＩｅコア２のトランザクション層１５３からの出力に設けている。ＰＣＩｅコア２のトランザクション層１５３には、送信バッファが存在するため、送信バッファによってアービタ１３における調停による効果が失われる可能性がある。トランザクション層１５３の出力のパケットをモニタした結果を、アービトレーションテーブル１４に反映することで、シリアル通信路を実際に転送されたパケットのデータ転送量に応じた優先度づけが可能となる。
【０１１９】
次に、プライオリティ演算回路２２の動作について説明する。プライオリティ演算回路２２には、ＤＭＡＣ１２の複数のＤＭＡチャネル（図１６中、ＤＭＡＣ１〜３）がそれぞれ必要とするデータ転送レートの比率を参照情報として記憶しておく。この参照情報と、パケットモニタ回路２１からの統計情報（各ＴＣのカウント値）の比率とを比較して、アービトレーションテーブル１４の値を更新する。以下において具体例について説明する。
【０１２０】
プライオリティ演算回路２２に記憶されている参照情報が、
ＤＭＡＣ１： ＤＭＡＣ２： ＤＭＡＣ３ ＝ １：２：３
であって、パケットモニタ回路２１からの統計情報が、
ＴＣ１：ＴＣ２：ＴＣ３ ＝ １：１：２
であった場合、アービトレーションテーブル１４のＤＭＡＣ２、ＤＭＡＣ３の値（重み情報）を大きくする。逆に、パケットモニタ回路２１からの統計情報が、
ＴＣ１：ＴＣ２：ＴＣ３ ＝ ３：２：３
のように、ＴＣ１の比率が参照情報よりも大きい場合には、アービトレーションテーブル１４のＤＭＡＣ１の値（重み情報）を小さくする。
【０１２１】
以上の処理を繰り返すことで、１つの仮想チャネルに複数のデバイスを共有する場合に各デバイスにアービタを設けるようにした場合において、ＤＭＡＣ１２の複数のＤＭＡチャネル（図１６中、ＤＭＡＣ１〜３）のデータ転送レートの比率をプライオリティ演算回路２２の参照情報として設定しておくことで、アービタの設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停が可能となる。
【０１２２】
このように本実施の形態によれば、PCI Expressのアーキテクチャを構成するトランザクション層１５３から出力されたパケットデータをモニタした結果をリアルタイムにフィードバック制御してアービトレーションテーブル１４に反映することで、シリアル通信路を実際に転送されたパケットデータのデータ転送量に応じた優先度づけを可能とすることにより、トランザクション層１５３の送信バッファが介在している場合であっても、アービタ１３の設定と実際のトラフィックのプライオリティの整合性を維持しつつ優先度の調停を行なうことができる。
【０１２３】
［第２の実施の形態］
次に、本発明の第２の実施の形態を図１７に基づいて説明する。なお、前述した第１の実施の形態と同じ部分は同じ符号で示し説明も省略する。
【０１２４】
本実施の形態は、第１の実施の形態の構成に加えて、第２のパケットモニタ回路３１をユーザロジック回路３に設けた点で第１の実施の形態とは異なるものである。
【０１２５】
図１７は、本発明の第２の実施の形態にかかるデータ通信装置１の概要を示すブロック図である。図１７に示すように、本実施の形態のデータ通信装置１においては、第２統計情報生成手段である第２のパケットモニタ回路３１が、アービタ１３の出力に設けられている。この場合、第２のパケットモニタ回路３１の統計情報として、ＤＭＡＣ ＩＤごとのリクエスト発行回数か、またはリクエストデータサイズの積算値を出力する。
【０１２６】
プライオリティ演算回路２２は、第２のパケットモニタ回路３１により生成されたトラフィックの統計情報に基づいて、高プライオリティデバイスが過剰に優先されて、低プライオリティデバイスの通信が妨げられないように、アービトレーションテーブル１４の値を更新する。
【０１２７】
このように本実施の形態によれば、高プライオリティデバイスが過剰に優先されて、低プライオリティデバイスの通信が妨げられないように抑制することができる。
【０１２８】
［第３の実施の形態］
次に、本発明の第３の実施の形態を図１８に基づいて説明する。なお、前述した第１の実施の形態または第２の実施の形態と同じ部分は同じ符号で示し説明も省略する。
【０１２９】
本実施の形態は、第１の実施の形態の構成に加えて、ＰＣＩｅコア２のトランザクション層１５３からの出力にバッファ監視回路４１を設けた点で第１の実施の形態とは異なるものである。
【０１３０】
図１８は、本発明の第３の実施の形態にかかるデータ通信装置１の概要を示すブロック図である。図１８に示すように、本実施の形態のデータ通信装置１においては、バッファ監視手段であるバッファ監視回路４１が、ＰＣＩｅコア２のトランザクション層１５３からの出力に設けられている。バッファ監視回路４１は、ＰＣＩｅコア２のトランザクション層１５３における送信バッファの空き容量を監視する。バッファの空き容量は、PCI Express規格によるPostedリクエストバッファ、Non-Postedリクエストバッファそれぞれについて検出するものとする。ここで、Postedリクエストバッファの空き容量はWriteリクエストの受け付け許容量を示し、Non-Postedリクエストバッファの空き容量はReadリクエストの受け付け許容量を示すことになる。Postedリクエストは、リクエストの要求先からの応答が必要なリクエストである。本発明では、リクエストに対してデータの応答が発生する、メモリリードリクエストを指す。Non-Postedリクエストは、リクエストの要求先からの応答が不要なリクエストである。本発明では、リクエストとともにデータを送信して要求先からの応答が発生しない、メモリライトリクエストを指す。
【０１３１】
ここで、本実施の形態におけるプライオリティ演算回路２２の動作について説明する。プライオリティ演算回路２２は、ＤＭＡＣ１２の複数のＤＭＡチャネル（図１８中、ＤＭＡＣ１〜３）がそれぞれReadリクエストを発行するか、Writeリクエストを発行するかを記憶しておくものとする。
【０１３２】
プライオリティ演算回路２２は、バッファ監視回路４１から入力されたPostedリクエストバッファおよびNon-Postedリクエストバッファのそれぞれの空き容量をもとに、ＰＣＩｅコア２のトランザクション層１５３におけるPostedリクエストバッファの空き容量が少なくなるほど、アービトレーションテーブル１４のWrite DMACのWeight設定値を小さくし、ＰＣＩｅコア２のトランザクション層１５３におけるNon-Posetedリクエストバッファの空き容量が少なくなるほど、アービトレーションテーブル１４のRead DMACのWeight設定値を小さくする。
【０１３３】
逆に、プライオリティ演算回路２２は、ＰＣＩｅコア２のトランザクション層１５３におけるPostedリクエストバッファの空き容量が多くなるほど、アービトレーションテーブル１４のWrite DMACのWeight設定値を大きくし、ＰＣＩｅコア２のトランザクション層１５３におけるNon-Posetedリクエストバッファの空き容量が多くなるほど、アービトレーションテーブルのRead DMACのWeight設定値も大きくする。
【０１３４】
以上の処理を繰り返すことによって、アービタ１３は、Read リクエストとWriteリクエストが偏って過剰に発行されてしまわないようなデータ転送の調停をすることが可能となる。
【０１３５】
このような調停が可能な回路は、特にＰＣＩｅコア２におけるリクエスト送信用のＩＦがReadとWriteリクエストで共用される回路実装において有効である。各ＤＭＡＣからのリクエストが時間で偏って発行されるような場合でも、送信バッファフルとなって他のリクエストの発行を妨げなくなる効果がある。
【０１３６】
このように本実施の形態によれば、リクエストパケットが必要以上にバッファを埋めて他のリクエストの発行を妨げることを防ぐことができる。
【０１３７】
なお、本実施の形態は、第１の実施の形態への適用例として説明したが、第２の実施の形態へ適用しても何ら問題は無い。
【図面の簡単な説明】
【０１３８】
【図１】既存PCIシステムの構成例を示すブロック図である。
【図２】PCI Expressシステムの構成例を示すブロック図である。
【図３】デスクトップ／モバイルでのPCI Expressプラットホームの構成例を示すブロック図である。
【図４】ｘ４の場合の物理層の構造例を示す模式図である。
【図５】デバイス間のレーン接続例を示す模式図である。
【図６】スイッチの論理的構造例を示すブロック図である。
【図７−１】既存のPCIのアーキテクチャを示すブロック図である。
【図７−２】PCI Expressのアーキテクチャを示すブロック図である。
【図８】PCI Expressの階層構造を示すブロック図である。
【図９】トランザクションレイヤパケットのフォーマット例を示す説明図である。
【図１０】PCI Expressのコンフィグレーション空間を示す説明図である。
【図１１】仮想チャネルの概念を説明するための模式図である。
【図１２】データリンクレイヤパケットのフォーマット例を示す説明図である。
【図１３】ｘ４リンクでのバイトストライピング例を示す模式図である。
【図１４】Ｌ０／Ｌ０ｓ／Ｌ１／Ｌ２というリンクステートの定義について説明する説明図である。
【図１５】アクティブステート電源管理の制御例を示すタイムチャートである。
【図１６】本発明の第１の実施の形態にかかるデータ通信装置の概要を示すブロック図である。
【図１７】本発明の第２の実施の形態にかかるデータ通信装置の概要を示すブロック図である。
【図１８】本発明の第３の実施の形態にかかるデータ通信装置の概要を示すブロック図である。
【符号の説明】
【０１３９】
１      データ通信回路
１３      アービタ
１４      アービトレーションテーブル
２１      統計情報生成手段
２２      重み情報更新手段
３１      第２統計情報生成手段
４１      バッファ監視手段
【図１】
2007249816.tif 000003
【図２】
2007249816.tif 000004
【図３】
2007249816.tif 000005
【図４】
2007249816.tif 000006
【図５】
2007249816.tif 000007
【図６】
2007249816.tif 000008
【図７−１】
2007249816.tif 000009
【図７−２】
2007249816.tif 000010
【図８】
2007249816.tif 000011
【図９】
2007249816.tif 000012
【図１０】
2007249816.tif 000013
【図１１】
2007249816.tif 000014
【図１２】
2007249816.tif 000015
【図１３】
2007249816.tif 000016
【図１４】
2007249816.tif 000017
【図１５】
2007249816.tif 000018
【図１６】
2007249816.tif 000019
【図１７】
2007249816.tif 000020
【図１８】
2007249816.tif 000021