(57)【特許請求の範囲】
【請求項１】
第１の記憶手段と第２の記憶手段との間のデータ転送を複数のレーンからなるインターフェースを介して行う場合において、第１の記憶手段から送信されたデータに対してエラーを検出した場合に、拒否応答を送信する制御手段と、
上記制御手段により送信された拒否応答を受信した回数をカウントして、カウント値を保持する監視手段と、
上記第１の記憶手段及び上記第２の記憶手段との間のデータ転送を制御する転送制御手段とを備え、
上記制御手段は、所定の機能の実行時において上記監視手段より上記カウント値を取得し、該カウント値に基づいて帯域の低下があるかを判断し、
上記監視手段は、所定の機能の実行に関わるデータ転送ではなく、論理的アイドル状態下でのスクランブルパターンの転送時に、上記制御手段から送信されたデータを上記制御手段がエラーとして検出した回数をカウントしたカウント値を保持するとともに、上記制御手段は、将来行われる通信において帯域の低下があるかを上記監視手段により保持されたカウント値に基づいて判断する
情報処理装置。
【請求項２】
上記制御手段は、
上記カウント値が０である場合に、帯域の低下がないものと判断する
請求項１に記載の情報処理装置。
【請求項３】
上記制御手段は、
上記拒否応答を１回受信することによる転送レートの低下分と上記カウント値とを乗算した値に基づいて、帯域の低下があるかを判断する
請求項１に記載の情報処理装置。
【請求項４】
上記監視手段は、通常通信状態から同期を取り直して通信路を回復する状態に遷移した回数をカウントしたカウント値を保持し、
上記制御手段は、通信路を回復する状態に遷移した回数に係るカウント値に基づいて帯域の低下があるかを判断する
請求項１に記載の情報処理装置。
【請求項５】
制御手段により、第１の記憶手段と第２の記憶手段との間のデータ転送を複数のレーンからなるインターフェースを介して行う場合において、第１の記憶手段から送信されたデータに対してエラーを検出した場合に、拒否応答を送信するステップと、
監視手段により、上記制御手段により送信された拒否応答を受信した回数をカウントして、カウント値を保持するステップと、
上記制御手段により、所定の機能の実行時において上記監視手段より上記カウント値を取得し、該カウント値に基づいて帯域の低下があるかを判断するステップと、
上記監視手段により、所定の機能の実行に関わるデータ転送ではなく、論理的アイドル状態下でのスクランブルパターンの転送時に、上記制御手段から送信されたデータを上記制御手段がエラーとして検出した回数をカウントしたカウント値を保持するとともに、上記制御手段により、将来行われる通信において帯域の低下があるかを上記監視手段により保持されたカウント値に基づいて判断するステップとを備えた
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばPCI Express(Peripheral Component Interconnect Express)インターフェースでの通信路悪化による帯域低下で起こり得る不具合を未然に防止する情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、PCI-Expressのデータ転送方式は、ネットワークでのパケット送受信に近い形で行われている。その内部構成はネットワークに似ており、トランザクション層、データリンク層、物理層の３層構造となっている。データの送信時には、コントローラからのリクエストは、トランザクション層でパケット化された後、データリンク層に渡される。データリンク層は、接続先デバイス間との送受信の制御を担っており、パケットにシーケンス番号、CRC(Cyclic Redundancy Check)を付加して物理層に渡す。この物理層は、シリアル転送を受け持つ部分であり、8b/10b変換を行うSERDES(SERializer/DESerializer)によりパケットがシリアル・データとして送られるようになっている。
【０００３】
このPCI Expressには、データリンク層で、エラーのあるパケットを再送するためのプロトコルが用意されており、自分又は接続相手のトランスミッタ・レシーバを含む通信路の状態が悪くても、パケットを再送することで通信を継続できれば、アプリケーション・ソフトウェアには通信路の不良を通知していない。
【０００４】
また、PCI Expressは、そのプロトコル上、複数レーン(例えば４レーン)の接続能力を持ったAdd-in Cardであっても、Root Complexと１レーンでリンクを確立することが可能である。したがって、本来であれば複数レーンでのリンク確立が期待されていた場合であっても、自分又は接続相手のトランスミッタ・レシーバを含む通信路の状態が悪く１レーンでリンク確立がなされた場合には（レーンの縮退）、データ転送帯域が低下するものの、これをアプリケーション・ソフトウェアには通知していない。
【０００５】
ここで、例えば、特許文献１では、ドライバがPCI Express特有の機能に対応していない場合であっても、PCI Expressインターフェースのレーン数の縮退が発生した場合に適切な対処を行う情報処理装置が開示されている。即ち、同技術では、Negotiated Link Widthレジスタの値を参照して、該値に基づいてレーン数の縮退を検出し、デバイスを切り離す等の所定の対応を実施している。
【０００６】
【特許文献１】特開２００６−２０１８８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、例えばビデオデータ転送のように、帯域が必要とされる場合、パケットの再送回数が多いと、転送レートが低下し、画像処理に間に合わない場合が生じ得る。
【０００８】
また、あるレーン数以上の帯域でデータ転送を行った場合にのみ実行できる機能は、そのレーン数未満でリンクした場合、帯域が足りず、画像処理に間に合わなくなる。
【０００９】
そこで、本発明は、PCI Expressインターフェースでの通信路悪化による帯域低下で起こり得る不具合を未然に防止することを課題とする。
【課題を解決するための手段】
【００１０】
本発明の第１の観点による情報処理装置では、第１の記憶手段と第２の記憶手段との間のデータ転送を複数のレーンからなる所定のインターフェースを介して行う情報処理装置であって、上記第１及び第２の記憶手段との間のデータ転送を制御する第１の制御手段と、上記データ転送を行う場合において、第１の記憶手段から送信されたデータに対してエラーを検出した場合に、所定の拒否応答を送信する第２の制御手段と、上記拒否応答を受信した回数をカウントし、カウント値を保持する監視手段と、上記第１の記憶手段及び上記第２の記憶手段との間のデータ転送を制御する転送制御手段とを備え、上記第２の制御手段は、所定の機能の実行時において上記監視手段より上記カウント値を取得し、該カウント値に基づいて帯域の低下があるか否かを判断し、上記監視手段は、所定の機能の実行に関わるデータ転送ではなく、論理的アイドル状態下でのスクランブルパターンの転送時に、上記制御手段から送信されたデータを上記制御手段がエラーとして検出した回数をカウントしたカウント値を保持するとともに、上記制御手段は、将来行われる通信において帯域の低下があるかを上記監視手段により保持されたカウント値に基づいて判断する。
【００１１】
従って、データ転送が間に合わないことが原因で起こり得る機能の実行の不具合が事前に防止されることになる。
【００１２】
本発明の第２の観点による情報処理方法では、制御手段により、第１の記憶手段と第２の記憶手段との間のデータ転送を複数のレーンからなるインターフェースを介して行う場合において、第１の記憶手段から送信されたデータに対してエラーを検出した場合に、拒否応答を送信するステップと、監視手段により、上記制御手段により送信された拒否応答を受信した回数をカウントして、カウント値を保持するステップと、上記制御手段により、所定の機能の実行時において上記監視手段より上記カウント値を取得し、該カウント値に基づいて帯域の低下があるかを判断するステップと、上記監視手段により、所定の機能の実行に関わるデータ転送ではなく、論理的アイドル状態下でのスクランブルパターンの転送時に、上記制御手段から送信されたデータを上記制御手段がエラーとして検出した回数をカウントしたカウント値を保持するとともに、上記制御手段により、将来行われる通信において帯域の低下があるかを上記監視手段により保持されたカウント値に基づいて判断するステップとを備える。
【００１３】
従って、データ転送が間に合わないことが原因で起こり得る機能の実行の不具合が事前に防止されることになる。
【発明の効果】
【００１４】
本発明によれば、PCI Expressインターフェースでの通信路悪化による帯域低下で起こり得る不具合を未然に防止する情報処理装置及び情報処理方法を提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して、本発明を実施するための最良の形態（以下、単に実施の形態と称する）について詳細に説明する。
【００１６】
本発明の一実施の形態に係る情報処理装置は、PCI Express Add-in Cardで取得したPCI Expressの通信路悪化の指標となる情報を、制御部（アプリケーション・ソフトウェアを実行）に通知し、該制御部が、所定の機能を実行するのに必要な帯域が確保できるか否かを判断し、その判断結果に基づいて、ユーザーが実行できる機能を制限することを特徴の一つとする。これにより、PCI Expressインターフェースでの通信路悪化で、データ転送が間に合わないことが原因で起こり得る、アプリケーション・ソフトウェアでの不具合（例えば、ビデオ映像の乱れなど）を事前に防止する。以下、詳述する。
【００１７】
図１には、本発明の一実施の形態に係る情報処理装置の構成を示し説明する。
【００１８】
この図１に示されるように、この実施の形態に係る情報処理装置は、ワークステーション(Workstation)１とPCI Expressインターフェース１５を介して該ワークステーション１に接続され画像処理等を行うPCI Express Add-inカード２からなる。
【００１９】
このワークステーション１は、チップセット１１、磁気ディスク１２、メインＣＰＵ１３、システムメモリ１４を備えている。該システムメモリ１４には、例えば画像処理等を実行するためのアプリケーション・ソフトウェア１４ａが記憶されている。
【００２０】
PCI Express Add-inカード２は、ビデオ信号処理部２１、ビデオメモリ２２、ＤＭＡ(Direct Memory Access)コントローラ２３、ボードＣＰＵ２７、Targetアクセス制御部２８、PCI Express監視部３０を備えている。
【００２１】
トランザクション層２４、データリンク層２５、物理層２６は、PCI Expressのプロトコル階層を意味し、PCI Express base specification rev1.1で定義されている。プロトコル階層については、PCI Express IPコア内に実装されている。
【００２２】
PCI Express監視部３０は、PCI Expressの通信路の良否を判断する指標となる情報を保持するカウンタ３０ａ、カウントし保持するレジスタ３０ｂ乃至３０ｆを備えている。即ち、Negotiated Link Width３０ａは、PCI Expressでリンクを確立したレーン数(x1,x4等)を保持するレジスタである。RX NAK DLLPカウンタ３０ｂは、NAK DLLP（CRCエラーを示し、再送を促すパケット）の受信回数をカウントしカウント値を保持するレジスタである。LTSSM (Link Training and Status State Machine)Transitionカウンタ３０ｃは、LTSSMがL0 State(通常通信状態)以外の各State(例えば同期を取り直し、通信路を回復するリカバリ・ステート(Recovery State))に遷移した回数をカウントしカウント値を保持するレジスタである。Rxelecidleカウンタ３０ｄは、各レーンのレシーバが電気的アイドル状態を検出したことを示すRxelecidle信号をアサートした回数をカウントしカウント値を保持するレジスタである。Running Disparity Errorカウンタ３０ｅは、各レーンのレシーバがRunning Disparity Errorを検出した回数をカウントしカウント値を保持するレジスタである。そして、8B/10B Decoder Errorカウンタ３０ｆは、各レーンのレシーバが8B/10B Decoder Errorを検出した回数をカウントしカウント値を保持するレジスタである。
【００２３】
以下、各部の作用について詳細に説明する。
【００２４】
PCI Express Add-inカード２は、ワークステーション１の不図示のPCI Expressスロットに接続される、ビデオ信号のハードウェアCODEC(COmpresser DECompressor)を備えており、HD(High-Definition),SD SDI(Serial Digital Interface)信号の入出力端子とReference入力端子を備えたビデオ入出力ボードである。
【００２５】
ビデオ信号処理部２１は、外部からのHDまたはSD SDI信号をエンコードしビデオメモリ２２に渡したり、逆にビデオメモリ２２から圧縮データを読み出してデコードしHDまたはSD SDI信号を出力したりする。また、ビデオ信号処理部２１は、ビデオメモリ２２から非圧縮ビデオデータを読み出してエンコードしビデオメモリ２２に戻したり、逆にビデオメモリ２２から圧縮データを読み出してデコードし、ビデオメモリ２２に戻したりする。ビデオメモリ２２は、圧縮ビデオデータや非圧縮ビデオデータを一時的に蓄える機能を持つ。DMAコントローラ２３は、Add-inカード２内のビデオメモリ２２と、ワークステーション１のシステムメモリ１４との間でデータ転送を司る。
【００２６】
DMAコントローラ１４により、Add-inカード２がイニシエータとなってデータ転送を行うと、一般的に、ワークステーション１のメインCPU１３に負担をかけずに、高速な転送を行うことができる。Targetアクセス制御部２８は、ワークステーション１がイニシエータとなって、Add-inカード２と通信を行うTargetアクセスを受け持つ。TargetアクセスはDMAに比較して低速であるため、Add-inカード２を制御するためのカウンタレジスタの読み書き等に使われる。PCI Express監視部３０のレジスタ３０ａ〜３０ｆの保持している値もTargetアクセスでワークステーション１に転送される。
【００２７】
PCI Express監視部３０は、PCI Expressの通信路の良否を判断するパラメータを保存するブロックである。本ブロックは、PCI Expressの各階層から、帯域を判断するのに有用な情報を得て、レジスタに保存する。より詳細には、レジスタ３０ａが該情報を保持し、各レジスタ３０ｂ乃至３０ｆが該情報に基づいてカウントアップする。但し、レジスタ全てが、新たに実装したものではなく、PCI Express IPコアが本来的に実装しているものもある。
【００２８】
Frameカウンタ２９は、Add-inカード２の電源Onまたはリセット後の初期化終了時を0とし、Reference入力端子に入力される信号に同期して、映像信号１フレーム毎(例えば1/30秒)にカウントアップするカウンタである。本実施の形態では、PCI Express監視部３０がエラーを積算した経過時間を知るために使用している。ボードCPU２７は、Add-inカード２内の各部の制御を司るマイクロコンピュータであり、例えば、Add-inカード２がPCI Expressリンクを確立したことを検出した際に、PCI Express監視部３０の各レジスタ３０ａ〜３０ｆ及びFrameカウンタ２９の初期化を行う役割を担う。
【００２９】
一方、ワークステーション１としては、例えば、Intel（登録商標）アーキテクチャのCPUを持つ一般的なワークステーションを採用し得る。
【００３０】
ワークステーション１において、チップセット１１は、該ワークステーション１を構成する各部を相互に接続するもので、ワークステーション１のマザーボード上にある一般的なものである。チップセット１１は、PCI Expressインターフェース１５を備える。
【００３１】
また、このワークステーション１において、システムメモリ１４は、ビデオ編集ソフトウェア等のアプリケーション・ソフトウェア１４ａを保持する。メインCPU１３は、該アプリケーション・ソフトウェア１４ａを読み出し実行することで、不図示のドライバを介してPCI Express Add-inカード２を制御し、ビデオデータの転送を行う。
【００３２】
磁気ディスク１２には、アプリケーション・ソフトウェア、編集情報やビデオデータが格納される。以上のほか、ユーザは、操作入力手段としてのキーボード４、マウス５で編集ソフトを操作する。また、表示手段としてのディスプレイ３には、タイムライン等の編集情報の表示の他、編集中のビデオの再生等が行われる。
【００３３】
ワークステーション１のメインCPU１３は、アプリケーション・ソフトウェア１４ａを実行すると、Add-inカード２が取得した情報を、PCI-Expressインターフェース１５を通じて、取得し、画像処理等を行う。その際、この取得した情報を、予め定めた、各画像処理機能を行うのに必要な帯域を実現可能な閾値（この閾値は、例えば、事前に実験又は計算によりソフトウェアに保持させておく）と比較し、閾値を超えていれば、以下の処理を行う。即ち、ソフトウェア上で、ユーザーが当該機能を実行できないようにしたり、より必要な帯域が少なくて済み要求された機能に近い結果を得られる機能を代替機能として実行したり、ユーザーに通信路が悪化したこと及び実行不可或いは代替機能による実行がなされた旨を通知する。但し、これらには限定されない。
【００３４】
ここで、PCI Expressの通信路の良否を判断する指標とするパラメータにつき各レジスタ３０ａ乃至３０ｆとの関係をふまえつつ、更に詳述する。
【００３５】
（ａ）PCI Expressでリンクを確立したレーン数(x1, x4等)
PCI Expressでは、送信・受信方向のシリアル信号を合わせてレーンと称している（図１では説明の便宜上、１本で示している）。１レーンは、双方向に例えば2.5Gbpsの帯域を有する（実際には8B/10Bエンコーディングやパケットのオーバーヘッドでより少なくなる）。PCI Expressでは、複数のレーンを束ねてリンクを構成することができ、レーン数に略比例して転送速度が上がる。この為、本パラメータは、要求される転送レートが出せるか判断する場合には、必須といえる。この実施の形態に係る情報処理装置では、PCI Express監視部３０が、物理層２６を監視し、PCI Expressでリンクを確立したレーン数をNegotiated Link Width３０ａにて保持・更新する。そして、メインＣＰＵ１３が、アプリケーション・ソフトウェア１４ａの実行時等に該カウンタ３０ａのレーン数の情報を読み出し、該レーン数が本来の数よりも少ない場合であっても、帯域が十分に足りている場合には、通信を継続するよう制御する。尚、Negotiated Link Width３０ａは、PCI Express base specification rev1.1で、Link Status レジスタのフィールドとして定義されており、PCI Express IPコアが実装している。
【００３６】
（ｂ）NAK DLLP（CRCエラーを示し、再送を促すパケット）の受信回数
DMAコントローラ２３の転送制御の下、ビデオメモリ２２とシステムメモリ１４との間でデータ通信を行う場合において、ワークステーション１のメインCPU１３がAdd-inカード２側から送信されたパケットに対して、CRCエラーを発見すると、NAK(拒否)応答することになる。Add-inカード２は、PCI Express監視部３０がNAK応答を受信した回数をRX NAK DLLP カウンタ３０ｂによりカウントする。
【００３７】
本パラメータは、「Add-inカード２のトランスミッタ→ワークステーション１のレシーバ」の経路で通信路に不良があることを示す。
【００３８】
通常、Add-inカード２側では、自身のトランスミッタの不良を検出するのが難しいが、相手がパケットを拒否応答した回数で、自身のトランスミッタの不良を知ることができる。このNAK応答回数を転送レートの低下を図る指標として用いる。RX NAK DLLP カウンタ３０ｂは、PCI Express base specification rev1.1では定義されていないが、いくつかのPCI Express IPコアが既に実装している。
【００３９】
より具体的には、例えばメインCPU１３は、アプリケーション・ソフトウェア１４ａの実行時等において、RX NAK DLLP カウンタ３０ｂのカウント値を Target アクセス制御部２８を介して取得し、その値が０である場合、つまりAdd-inカード２側がNAKを全く受信していないことを帯域の低下がないことの判断の指標として用いることもできる。
【００４０】
或いは、NAKを１度受信すると、それは、パケットが１つ未転送であったことを意味し、再送のためには更に倍の時間を要することに鑑みて、転送レートの低下分×NAKの応答個数を帯域低下の判断の指標として用いてもよい。
【００４１】
（ｃ）LTSSMがL0 State（通常通信状態）以外の各State（例えば同期を取り直し、通信路を回復するRecovery State）に遷移した回数
LTSSMはPCI Expressのリンクを司る物理層２６の状態遷移を表すステートマシンであり、PCI Express base specification rev1.1で定義されている。通常、LTSSMは、一度リンクが確立されるとL0 StateでTLP(パケット)のやり取りを行うが、通信状態が悪いと所謂復旧モード等に相当するリカバリ・ステート(Recovery State)に遷移し、ビットロック、シンボルロックを取り直すことがspcecで定義されている。例えば、通信状態が悪くなり、パケットの再送回数が所定数を超えた場合にリカバリ・ステートに遷移する。
【００４２】
尚、データ転送を実施していない状態でも、定期的にスクランブルパターンの送受信を行っており、該パターンを受信できなくなったときには、電気的なアイドル状態を検出して、リカバリ・ステートに遷移し、リンクのトレーニングをし直すことがなされる。
【００４３】
実測したところ、リカバリ・ステートに遷移すると、L0 Stateに戻り、再びデータ転送が行えるようになるまでに数us程度を要している。これは、リアルタイムのデータ転送では、無視できるレベルではない。また、PCI Expressの物理層２６を構成するPHYチップ(SerDesチップ)の性能によっては、一見問題がなくても、実運用中にリカバリ・ステートへの遷移が起こることもある。このような点に着目し、この実施の形態に係る情報処理装置では、LTSSMの状態遷移でリカバリ・ステートに遷移した回数をLTSSM Transition カウンタ３０ｃでカウントし、カウント値（レジスタ値）を保持し、転送レート低下を見積もるために用いる。尚、LTSSMは、上記定義によれば、十数個の状態が定義されているが、それぞれについてカウンタを用意し、各ステートへの遷移の回数をカウントし、カウント値を保持することになる。
【００４４】
より具体的には、例えばメインCPU１３は、アプリケーション・ソフトウェア１４ａの実行時等において、LTSSM Transition カウンタ３０ｃのカウント値を Target アクセス制御部２８を介して取得し、その値が０である場合、つまりAdd-inカード２側のリカバリ・ステートへの遷移が全くないことを帯域低下がないことの判断の指標として用いることもできる。或いは、リカバリ・ステートへの遷移回数より転送レートの低下レベルを判断し、帯域低下の判断の指標として用いてもよい。
【００４５】
（ｄ）各レーンのレシーバが、電気的アイドル状態を検出したことを示す、Rxelecidle信号をアサートした回数
Rxelecidle信号とは、
資料１：Intel（登録商標）”PHY Interface for the PCI Express Architecture”  
(http://www.intel.com/technology/pciexpress/devnet/docs/PIPEMacro1_00.pdf )  
で定義されている信号であり、Add-inカード２のレシーバが、ワークステーション１からのシリアル信号を検出できず、電気的にアイドルであると判断した場合にアサートされる。本信号がアサートされると、LTSSMがリカバリ・ステートに遷移するため、本信号の監視は、（ｃ）でリカバリ・ステートへの遷移を監視する代替として使用できる。また、リカバリ・ステートへの遷移は、いくつかの要因があるが、本信号を監視することで、通信路の不良部分を、より限定することができる。PCI Express監視部３０のRxelecidleカウンタ３０ｄは、Rxelecidle信号の受信回数をカウントする。尚、各レーン毎にレシーバがあり、いずれか一つでもRxelecidle信号を受信すると、Add-inカード２側はリカバリ・ステートに遷移するように制御される。
【００４６】
（ｅ）各レーンのレシーバが、8B/10B Decoder Errorを検出した回数
（ｆ）各レーンのレシーバが、Running Disparity Errorを検出した回数
これら（ｅ）、（ｆ）は、前述した（ｂ）を補強する役割を担っている。
【００４７】
これら8B/10B Decoder Error およびRunning Disparity Error は、上記資料１で定義されている、PHYのエラーである。これらのエラーは、実際のTLP（パケット）によるデータ転送が行われていなくても、リンクがロジカル・アイドルの状態でスクランブルパターンをやりとりしていれば、受信したシンボルにエラーがあった際に検出される。このため、「Workstationのトランスミッタ→Add-inカードのレシーバ」の経路で通信路に不良があることを検出するのに非常に有効である。
【００４８】
即ち、8B/10B Decoder Error およびRunning Disparity Errorは、ワークステーション１側が送信したパケットをレシーバがエラーとして検出した回数を示唆し、Add-inカード２のレシーバがエラー検出を行う。物理層２６はシリアル／パラレル変換を行うPHYチップを備えており、その中でこれらのエラーを検出する。Running Disparity Errorカウンタ３０ｅ、8B/10B Decoder Errorカウンタ３０ｆにて、これらの回数をカウントし、該カウント値を保持し、転送レートの低下を図る指標として用いる。
【００４９】
以下、図２のフローチャートを参照して、本発明の一実施の形態に係る情報処理装置によるPCI Express を利用した帯域監視結果を用いた機能実行の可否判断についてのメインCPU１による一連の処理の流れを説明する。
【００５０】
メインCPU１３が、PCI Express Add-inカード２を介して機能Ａの実行指示を受け取ると（ステップＳ１）、メインCPU１３は、Add-inカード２内のPCI Express監視部３０の各カウント値（レジスタ値）を、システムメモリ１４側に転送するようにTargetアクセス制御部２８に対して指示する（ステップＳ２）。続いて、メインCPU１３は、DMAコントローラ２３によるビデオメモリ２２とシステムメモリ１４間の転送で、機能Ａに必要な帯域を確保できるか否かを判断する（ステップＳ３）。この判断に際しては、前述した（ａ）乃至（ｆ）のカウント値のいずれか或いは任意の組合せを用いることとする。
【００５１】
そして、メインCPU１３は、機能Ａに必要な帯域を確保できると判断した場合には機能Ａを実行し（ステップＳ４）、処理を終了することになる。一方、メインCPU１３は、機能Ａに必要な帯域を確保できないと判断した場合には、通信路悪化のため機能Ａを実行できない旨をディスプレイ３に表示し（ステップＳ５）、代替機能Ｂの実行要求を発行し（ステップＳ６）、処理を終了することになる。
【００５２】
ここで、ステップＳ３における、機能Ａに必要な帯域を確保できるか否かの判断手法について例を挙げて更に詳細に説明する。
【００５３】
第１に、例えば４レーン以上でリンクの確立が必要であり、帯域低下の原因となる通信路のエラーが全く発生していないことを条件とする場合、以下の全ての条件が成立した場合にのみ、「機能Ａの帯域が確保できる」と判断する。  
・Negotiated Link Width≧４  
・RX NAK DLLPカウンタ＝０  
・LTSSMのリカバリ・ステート遷移回数＝０  
・Rxelecidleカウンタ＝０  
・Running Disparity Error カウンタ＝０  
・8B/10B Decoder Errorカウンタ＝０  
メインCPU１３は、以上の条件がリンクを構成する全てのレーンで成立した場合、「機能Ａの帯域が確保できる」と判断することになる。
【００５４】
但し、レーン毎に設けられたカウンタは、Rxelecidleカウンタ３０ｄ、Running Disparity Errorカウンタ３０ｅ、8B/10B Decoder Errorカウンタ３０ｆのみであって、Negotiated Link Width３０ａ、RX NAK DLLPカウンタ３０ｂ、LTSSM Transitionカウンタ３０ｃはリンクについて1個ずつしか設けられていない。
【００５５】
第２に、例えばリンクしたレーン数で全くエラーがない場合に確保できる帯域から、各エラーによる帯域低下分を減算した値が、機能Ａに必要な帯域を上回ることを条件とする場合、次のように判断する。即ち、  
BW_A：機能Ａに必要な帯域  
ｌw：Negotiated Link Width  
BW(lw)：レーン数lwのリンクでエラー無の場合の実効帯域
D_i(lw, n_i) :レーン数lwのリンクでエラー種別iのエラーが単位時間あたりにn_i回発生した場合の帯域低下分
とし、次式が成立する場合に、「機能Ａの帯域が確保できる」と判断する。  
BW(lw)-Σ_i D_i(lw,n_i)≧BW_A  
尚、n_iは、以下の各エラーカウンタの値を、カウンタ起算開始時からの経過時間で除算して求めることとする。  
・RX NAK DLLPカウンタ  
・LTSSMのリカバリ・ステート遷移回数  
・各レーンのRunning Disparity Error カウンタ  
・各レーンの8B/10B Decoder Errorカウンタ
次に、図３のフローチャートを参照して、図２のステップＳ３における、メインCPU１３による帯域判定に係る他の処理を更に具体的に説明する。
【００５６】
尚、前提として、メインCPU１３による、Add-inカード内のレジスタの読み出しは、全てTargetアクセス制御部２８を介したTargetアクセスで行うものとする。また、PCI Express監視部３０のレジスタは、最も影響の大きい順に読み出し、一つでもNGの値があった場合は帯域を確保できないと判断するものとする。
【００５７】
さて、メインCPU１３は、Negotiated Link Widthのレジスタ値を読み出し（ステップＳ１１）、Negotiated Link Widthのレジスタ値が４以上であるか否かを判断する（ステップＳ１２）。ここでは、４レーン以上が必要な例を想定しているので比較する閾値は４としている。Negotiated Link Widthのレジスタ値が４未満である場合には帯域確保ができないものとして処理を終了し、４以上である場合には次のステップＳ１３に進む。
【００５８】
続いて、メインCPU１３は、Frameカウンタ２９のカウント値を読み出す（ステップＳ１３）。この例では、PCI Expressがリンクしてからの時間に比例する値として、Frameカウンタ２９のカウント値を読み出している。これ以降、読み出すエラーカウンタは、全て１フレームあたりのエラー数に正規化して判断を行う。
【００５９】
次いで、メインCPU１３は、LTSSM Transitionカウンタ３０ｃのカウント値を読み出し（ステップＳ１４）、リカバリ・ステートへの遷移回数が1/frm以上であるか否かを判断する（ステップＳ１５）。ここで、リカバリ・ステートへの遷移回数が1/frm以上であれば帯域確保できないものとして処理を終了し、リカバリ・ステートへの遷移回数が1/frm未満である場合には次のステップＳ１６に進む。
【００６０】
このステップＳ１６乃至Ｓ２１のループでは、メインCPU１３は、リンクを構成する各レーンについて個別の判断を行う。即ち、メインCPU１３は、各レーンの8B/10B Decoder Errorカウンタ３０ｆのカウント値を読み出し（ステップＳ１７）、該カウント値が10/frmよりも大きいか否かを判断する（ステップＳ１８）。ここで、8B/10B Decoder Errorカウンタ３０ｆのカウント値が10/frmよりも大きい場合には帯域確保できないものとして処理を終了し、10/frm以下である場合には各レーンのRunning Disparity Error カウンタ３０ｅのカウント値を読み出し（ステップＳ１９）、該カウント値が10/frmよりも大きいか否かを判断する（ステップＳ２０）。ここで、Running Disparity Error カウンタ３０ｅのカウント値が10/frmよりも大きい場合には帯域確保できないものとして処理を終了し、10/frm以下である場合には、ステップＳ２１に進む。
【００６１】
次いで、メインCPU１３は、RX NAK DLLPカウンタ３０ｂのカウント値を読み出し（ステップＳ２２）、該カウント値が10/frmよりも大きいか否かを判断する（ステップＳ２３）。ここで、RX NAK DLLPカウンタ３０ｂのカウント値が10/frmよりも大きい場合には帯域確保できないものとして処理を終了し、10/frm以下である場合には帯域が確保できるものと判断することになる。以上で、帯域判定処理を終了する。
【００６２】
尚、ステップＳ１４，Ｓ１５において、LTSSM Transition カウンタ３０ｃによる判定の代替として、Rxelecidleカウンタ３０ｄの値を用いて、リカバリ・ステートへの遷移を判定することもできる。この場合、ステップＳ１４に替えて、先ずメインCPU１３はRxelecidleカウンタ３０ｄのカウント値を読み出し、ステップＳ１５に替えて、該カウント値が1/fmr以上であるか否かを判断する。そして、メインCPU１３は、カウント値が1/frmよりも大きい場合には帯域確保できないものとして処理を終了し、1/frm未満である場合にはステップＳ１６に移行するように処理が置き換わることになる。
【００６３】
ところで、以上の処理を実現するためには、各レジスタの初期化を定期的に行わなければならない。そこで、図４のフローチャートを参照して、ボードCPU２７による、PCI Express監視部３０の各レジスタの初期化の処理を説明する。
【００６４】
ボードCPU２７は、LTSSM Transition カウンタ３０ｃのカウント値を読み出し（ステップＳ３１）、L0 Stateへの遷移回数を判断し（ステップＳ３２）、該遷移回数が０である場合には上記ステップＳ３１に戻り、上記処理を繰り返し、該遷移回数が０でなくなるとステップＳ３３に移行する。即ち、このステップＳ３１，Ｓ３２では、PCI Expressのリンクが確立し、データ転送可能な状態(L0 State)になるまでループする。
【００６５】
続いて、PCI Express監視部３０の各レジスタ３０ｂ乃至３０ｆのレジスタ値を０に初期化し（ステップＳ３３）、Frameカウンタ２９のカウント値を０に初期化（Frameカウンタでの計時を開始）し（ステップＳ３４）、処理を終了する。尚、レジスタ３０ａはリンク確立した瞬間に設定されるため、ステップＳ３３内では初期化されない。
【００６６】
以上詳述したように、本発明の一実施の形態によれば、第１の記憶手段としてのビデオメモリ２２と第２の記憶手段としてのシステムメモリ１４との間のデータ転送を複数のレーンからなる所定のインターフェースとしてのPCI Expressインターフェース１５を介して行う情報処理装置であって、上記ビデオメモリ２２とシステムメモリ１４との間のデータ転送を制御する第１の制御手段としてのＤＭＡコントローラ２３と、上記データ転送を行う場合において、ビデオメモリ２２から送信されたデータ（パケット）に対してエラーを検出した場合に、所定の拒否応答としてのNAK応答を送信する第２の制御手段としてのメインＣＰＵ１３と、上記NAK応答を受信した回数をカウントし、カウント値を保持する保持手段としてのRX NAK DLLP カウンタレジスタ３０ｂを備えた監視手段としてのPCI Express監視部３０とを備え、上記メインCPU１３は、所定の機能の実行時においてPCI Express監視部３０より上記カウント値を取得し、該カウント値に基づいて帯域の低下があるか否かを判断することを特徴とする情報処理装置が提供される。
【００６７】
ここで、メインCPU１３は、上記カウント値が０である場合に、或いは、上記NAK応答を１回受信することによる転送レートの低下分と上記カウント値とを乗算した値に基づいて、帯域の低下があるか否かを判断してもよい。
【００６８】
或いは、PCI Express監視部３０は、通常通信状態としてのL0 Stateから同期を取り直し通信路を回復する状態としてのリカバリ・ステートに遷移した回数をカウントし、カウント値を保持するLTSSM Transition カウンタ３０ｃを備え、上記メインCPU１３は、この回復する状態に遷移した回数に係るカウント値に基づいて帯域の低下があるか否かを判断するようにしてもよい。
【００６９】
また、PCI Express監視部３０は、所定の機能の実行に関わるデータ転送ではなく、論理的アイドル状態下でのスクランブルパターンの転送時に、上記メインCPU１３から送信されたデータをレシーバがエラーとして検出した回数をカウントするRunning Disparity Errorカウンタ３０ｅ、及び8B/10B Decoder Errorカウンタ３０ｆを備え、上記メインCPU１３は、このカウント値に基づいて帯域の低下があるか否かを判断するようにしてもよい。
【００７０】
従って、本発明の実施の形態に係る情報処理装置によれば、PCI Expressインターフェースでの通信路悪化で、データ転送が間に合わないことが原因で起こり得るアプリケーション・ソフトウェアでの不具合を事前に防止することができる。
【００７１】
以上、本発明の実施の形態について説明したが、本発明はこれに限定されることなくその趣旨を逸脱しない範囲で種々の改良・変更が可能であることは勿論である。
【００７２】
例えば、上記した指標（ａ）乃至（ｆ）のいずれか一つ或いは任意の組合せにより帯域低下を判断するようにしてもよいことは勿論である。
【００７３】
さらに、本発明の実施の形態は、情報処理装置による情報処理方法（例えば帯域判定方法）、或いは情報処理にかかるコンピュータ・プログラム、該プログラムをコンピュータにより読み取り可能に記録した記録媒体としての実行も可能であり、その場合には、前述した実施の形態に係る情報処理装置と同様の作用効果を奏することは勿論である。
【図面の簡単な説明】
【００７４】
【図１】本発明の一実施の形態に係る情報処理装置の構成図。
【図２】本発明の一実施の形態に係る情報処理装置によるPCI Express を利用した帯域監視結果を用いた機能実行の可否判断についてのメインCPUによる一連の処理の流れを説明するためのフローチャート。
【図３】図２のステップＳ３における、メインCPUによる帯域判定に係る他の処理を更に具体的に説明するためのフローチャート。
【図４】ボードCPUによる、PCI Express監視部の各レジスタの初期化の処理を説明するためのフローチャート。
【符号の説明】
【００７５】
１…ワークステーション、２…PCI Express Add-inカード、３…ディスプレイ、４…キーボード、５…マウス、１１…チップセット、１２…磁気ディスク、１３…メインＣＰＵ、１４…システムメモリ、１４ａ…アプリケーション・ソフトウェア、１５…PCI Expressインターフェース、２１…ビデオ信号処理部、２２…ビデオメモリ、２３…ＤＭＡコントローラ、２４…トランザクション層、２５…データリンク層、２６…物理層、２７…ボードＣＰＵ、２８…Targetアクセス制御部、２９…Frameカウンタ、３０…PCI Express監視部、３０ａ…Negotiated Link Width、３０ｂ…RX NAK DLLPカウンタ、３０ｃ…LTSSM Transitionカウンタ、３０ｄ…Rxelecidleカウンタ、３０ｅ…Running Disparity Errorカウンタ、３０ｆ…8B/10B Decoder Errorカウンタ
【図１】
0005125430.tif 000002
【図２】
0005125430.tif 000003
【図３】
0005125430.tif 000004
【図４】
0005125430.tif 000005