(57)【要約】ＯＳのドライバ、ファームウェア、アプリケーションなどのプログラムを修正することなくデバイスの障害を回避することが可能な情報処理装置を提供する。情報処理装置を、プロセッサにより制御されるデバイスに障害を発生させる場合があるシーケンスをあらかじめ記憶する第１の記憶部と、障害を回避するシーケンスを記憶する第２の記憶部と、プロセッサがデバイスを制御するために出力するシーケンスが第１の記憶部に記憶されたシーケンスであるか否かを判定する判定部と、プロセッサがデバイスを制御するために出力するシーケンスが第１の記憶部に記憶されたシーケンスであると判定された場合に、プロセッサがデバイスを制御するために出力するシーケンスを第２の記憶部に記憶されたシーケンスを用いて調整する調整部とを有する情報処理装置とする。
2016151774.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサにより制御されるデバイスに障害を発生させる場合があるシーケンスをあらかじめ記憶する第１の記憶部と、
前記障害を回避するシーケンスを記憶する第２の記憶部と、
前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶部に記憶されたシーケンスであるか否かを判定する判定部と、
前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶部に記憶されたシーケンスであると判定された場合に、前記プロセッサが前記デバイスを制御するために出力する前記シーケンスを前記第２の記憶部に記憶されたシーケンスを用いて調整する調整部と
を有する情報処理装置。
【請求項２】
前記第１の記憶部は、前記デバイスに障害を発生させる場合がある複数のシーケンスをあらかじめ記憶し、
前記判定部は、前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶部に記憶されている前記各シーケンスであるか否かの判定を並列に実行する
請求項１に記載の情報処理装置。
【請求項３】
前記判定部は、前記プロセッサが出力した第１のシーケンスが、前記第１の記憶部の第１のアドレスに記憶されたシーケンスであると判定すると、前記第１のシーケンスに後続する第２のシーケンスが前記第１の記憶部の第２のアドレスに記憶されたシーケンスであるか否かを判定する処理を所定シーケンス数分繰り返す請求項１または２に記載の情報処理装置。
【請求項４】
前記プロセッサが出力したシーケンスを格納する複数の格納部と、
前記複数の格納部を介して所定シーケンス数遅延したシーケンス、および前記第１の記憶部に記憶されたシーケンスに対応して第２の記憶部から取得されたシーケンスのいずれかを選択する選択部と、
前記複数の格納部に格納されたシーケンスの廃棄と前記選択部による選択とを制御するバッファ制御部をさらに備える
請求項１から請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記バッファ制御部は、前記シーケンスの廃棄と前記選択とによって、前記プロセッサが出力したシーケンスの遅延、廃棄、および複数のシーケンス間の入替、および複数のシーケンス間への他のシーケンスの挿入の少なくとも１つを実行する請求項４に記載の情報処理装置。
【請求項６】
情報処理装置と前記情報処理装置により使用されるデバイスとを有する情報処理システムにおいて、
前記情報処理装置は、
プロセッサと、
前記プロセッサにより制御される前記デバイスに障害を発生させる場合があるシーケンスをあらかじめ記憶する第１の記憶部と、
前記障害を回避するシーケンスを記憶する第２の記憶部と、
前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶装置に記憶されたシーケンスであるか否かを判定する判定部と、
前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶装置に記憶されたシーケンスであると判定された場合に、前記プロセッサが前記デバイスを制御するために出力する前記シーケンスを前記第２の記憶装置に記憶されたシーケンスを用いて調整する調整部と
を有する情報処理システム。
【請求項７】
情報処理装置の制御プログラムであって、
前記情報処理装置が有する第１の記憶部に、プロセッサにより制御されるデバイスに障害を発生させる場合があるシーケンスをあらかじめ記憶させ、
前記情報処理装置が有する第２の記憶部に、前記障害を回避するシーケンスを記憶させ、
前記情報処理装置が有する判定部に、前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶部に記憶されたシーケンスであるか否かを判定させ、
前記情報処理装置が有する調整部に、前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶部に記憶されたシーケンスであると判定された場合に、前記プロセッサが前記デバイスを制御するために出力するシーケンスを前記第２の記憶部に記憶されたシーケンスを用いて調整させる
情報処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスの障害を回避する情報処理装置、情報処理システムおよび情報処理装置の制御プログラムに関するものである。
【背景技術】
【０００２】
従来の情報処理装置において、稼働後にＣＰＵ（Central Processing Unit）および周辺デバイスなどの情報処理装置の構成部品に対して、製造ベンダなどから構成部品の欠陥、動作仕様の変更などの情報が提供される場合がある。これらの情報はエラッタ情報と呼ばれる。情報処理装置の製造元では、エラッタ情報に基づき事前に障害を回避する対策が採られている。これらの対策としては、障害を回避したいハードウェアに対して、例えばアドレス空間、Ｉ／Ｏ（Input/Output）空間でのアクセス順序や書込データの変更、アクセス処理の追加や削除、アクセス処理のタイミングの変更などが挙げられる。また、ＣＰＵや周辺デバイスの製造ベンダは、検証が完了した障害の発生条件および障害内容に関する情報と、障害を回避するための情報を提供している。【０００３】
従来の情報処理装置は、上記の障害の発生条件および障害内容に関する情報を用いて、実行する処理の操作手順が障害を発生させる操作手順と一致するか否かを判定する（例えば、特許文献１）。そして、例えば情報処理装置で実行されるプログラムの操作手順が障害を発生させる操作手順と一致する手順を含む場合に、操作手順の内容に応じてプログラムが修正される。このプログラムの修正には、アドレス空間やＩ／Ｏ空間に対するアクセスの追加、書込データの変更や削除、アクセスタイミング変更などが含まれる。情報処理装置は修正されたプログラムを実行することで、操作手順に応じて障害を回避する処理を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−７８６２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、プログラムを修正することで障害を回避する場合、ＯＳドライバ、ファームウェア、アプリケーションなどのプログラムが修正の対象となる。この場合、どのようにプログラムを修正するかの解析および修正の反映などの作業が発生する。また、各種アプリケーションが共通に使用するＯＳドライバやファームウェアが修正された場合、修正されたＯＳドライバやファームウェアと各アプリケーションとの間の相互運用における動作確認の作業も発生する。したがって、これらの作業が、障害を回避する処理を迅速に実行する上での支障となる可能性がある。【０００６】
本件開示の技術は、上記の事情に鑑み、ＯＳのドライバ、ファームウェア、アプリケーションなどのプログラムを修正することなくデバイスの障害を回避することが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本件開示の情報処理装置は、１つの側面では、プロセッサにより制御されるデバイスに障害を発生させる場合があるシーケンスをあらかじめ記憶する第１の記憶部と、障害を回避するシーケンスを記憶する第２の記憶部と、プロセッサがデバイスを制御するために出力するシーケンスが第１の記憶部に記憶されたシーケンスであるか否かを判定する判定部と、プロセッサがデバイスを制御するために出力するシーケンスが第１の記憶部に記憶されたシーケンスであると判定された場合に、プロセッサがデバイスを制御するために出力するシーケンスを第２の記憶部に記憶されたシーケンスを用いて調整する調整部とを有する。
【発明の効果】
【０００８】
本件開示の技術によれば、ＯＳのドライバ、ファームウェア、アプリケーションなどのプログラムを修正することなくデバイスの障害を回避することが可能な情報処理装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、一実施形態における情報処理装置の構成を示す概略構成図である。
【図２】図２は、一実施形態におけるパケット処理回路の構成を示す概略構成図である。
【図３】図３は、一実施形態における情報処理装置の機能ブロック図である。
【図４】図４は、一実施形態におけるメモリに記憶される情報の一例の概略を示す図である。
【図５】図５は、一実施形態におけるメモリに記憶される情報の一例の概略を示す図である。
【図６】図６は、一実施形態におけるパケット監視回路の構成を示す概略構成図である。
【図７】図７は、一実施形態におけるパケット処理回路により処理されるパケットのフォーマットを概略的に示す
【図８】図８は、一実施形態におけるアクセス生成回路の構成を示す概略構成図である。
【図９】図９は、一実施形態におけるバッファの構成を示す概略構成図である。
【図１０】図１０は、一実施形態における制御コードデコーダが使用する真理値表の一例を示す図である。
【図１１】図１１は、一実施形態におけるＣＰＵ＃Ａが実行する処理のフローチャートである。
【図１２】図１２は、一実施形態における情報処理装置が図１１に示すフローチャートの処理を実行するときのタイムチャートの一例を示す。
【図１３】図１３は、一変形例における情報処理システムの構成を示す概略構成図である。
【発明を実施するための形態】
【００１０】
まず、一実施形態における情報処理装置について図面を参照しながら説明する。本実施形態では、図１に概略の構成を示す情報処理装置１を用いて説明する。一例として、情報処理装置１はＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）規格に従って周辺デバイスを制御する。図１に示すように、情報処理装置１は、ＣＰＵ＃１  １ａ、メモリ＃１  １ｂ、ルートコンプレックス１ｃ、パケット処理回路１ｄ、ＰＣＩｅスイッチ１ｅ、ＳＡＳ（Serial Attached SCSI）カード１ｆ、ＬＡＮ（Local Area Network）カード１ｇ、ＵＳＢ（Universal Serial Bus）カード１ｈ、グラフィックカード１ｉ、電源制御カード１ｊなどの周辺デバイスを有する。
【００１１】
ＣＰＵ＃１  １ａは、ＳＡＳカード１ｆ、ＬＡＮカード１ｇ、ＵＳＢカード１ｈ、グラフィックカード１ｉ、電源制御カード１ｊに対するデータの読み取りおよび書き込みの各処理を制御する。メモリ＃１  １ｂは、ＣＰＵ＃１  １ａによって読み取られるデータおよび書き込まれるデータを記憶する。ルートコンプレックス１ｃは、ＣＰＵ＃１  １ａとＳＡＳカード１ｆ、ＬＡＮカード１ｇ、ＵＳＢカード１ｈ、グラフィックカード１ｉ、電源制御カード１ｊとを接続するインタフェースとして機能する。また、ルートコンプレックス１ｃは、メモリ＃１  １ｂへのアクセスを制御する。
【００１２】
パケット処理回路１ｄは、ＣＰＵ＃１  １ａからＳＡＳカード１ｆ、ＬＡＮカード１ｇ、ＵＳＢカード１ｈ、グラフィックカード１ｉ、電源制御カード１ｊに送受信されるパケットを処理する回路である。また、パケット処理回路１ｄは、メモリ＃１  １ｂとＳＡＳカード１ｆ、ＬＡＮカード１ｇ、ＵＳＢカード１ｈ、グラフィックカード１ｉ、電源制御カード１ｊの各カードとの間で送受信されるパケットも処理する。図１に示すように、パケット処理回路１ｄは、各カードと同様にＰＣＩｅスイッチ１ｅの配下に備えられるようにＰＣＩｅスイッチ１ｅと接続されている。これにより、例えばパケット処理回路１ｄがカードに対するシーケンスを追加する際に、パケット処理回路１ｄのシーケンスとしてパケットをカードに送受信できる。パケット処理回路１ｄが実行する処理の詳細については後述する。
【００１３】
ＰＣＩｅスイッチ１ｅは、パケット処理回路１ｄとＳＡＳカード１ｆ、ＬＡＮカード１ｇ、ＵＳＢカード１ｈ、グラフィックカード１ｉ、電源制御カード１ｊとの接続およびパケットの送受信を管理する。ＳＡＳカード１ｆ、ＬＡＮカード１ｇ、ＵＳＢカード１ｈ、グラフィックカード１ｉ、電源制御カード１ｊの各カードは、周知のカードであるため説明を省略する。
【００１４】
図２に、パケット処理回路１ｄの構成を概略的に示す。図２に示すように、パケット処理回路１ｄは、ＣＰＵ＃Ａ  ２ａ、ＵＳＢスロット２ｂ、ＮＶＭ（Non-volatile Memory）＃Ａ  ２ｃ、フラッシュメモリ＃Ａ  ２ｄ、パケット監視回路２ｅ、アクセス生成回路２ｆ、ＰＣＩｅコントローラ２ｇ、バッファＡ  ２ｈ、バッファＢ  ２ｉ、レシーバＡ  ２ｊ、レシーバＢ  ２ｋ、ドライバＡ  ２ｍ、ドライバＢ  ２ｎを有する。ＣＰＵ＃Ａ  ２ａは、以下に説明するパケット処理回路１ｄにおいて実行される処理を制御する。
【００１５】
ＵＳＢスロット２ｂは、情報処理装置１の外部から接続されるＵＳＢメモリ１００を受け入れる。なお、本実施形態では、ＵＳＢメモリ１００には、障害を発生させる場合がある処理のトリガに関する情報と、障害を回避するために代わりに実行する処理に関する情報とが記憶されている。なお、障害を発生させる場合がある処理のトリガに関する情報とは、以下で詳述するように、ハードウェアに障害を発生させる場合があるシーケンスの情報である。ＵＳＢメモリ１００から取得された情報は、ＮＶＭ＃Ａ  ２ｃに記憶される。
【００１６】
フラッシュメモリ＃Ａ  ２ｄには、情報処理装置１の電源投入時に実行されるＣＰＵ＃Ａ  ２ａ、パケット監視回路２ｅ、アクセス生成回路２ｆの初期化プログラムやパケット処理回路１ｄのＰＣＩ構成情報などが記憶されている。パケット監視回路２ｅは、パケット処理回路１ｄに入力されるパケットに含まれるシーケンスデータの検出および比較を行う。アクセス生成回路２ｆは、ＮＶＭ＃Ａ  ２ｃに記憶されたシーケンスデータに基づいて障害を回避するためのシーケンスデータを含むパケットを生成する。
【００１７】
バッファＡ  ２ｈ、バッファＢ  ２ｉは、アクセス生成回路２ｆによって生成されるパケットを保持する。なお、バッファＡ  ２ｈ、バッファＢ  ２ｉが格納部の一例に相当する。また、バッファＡ  ２ｈ、バッファ  Ｂ  ２ｉは、ＣＰＵ＃Ａ  ２ａの制御に従ってパケットのパージや出力を行う。ドライバＡ  ２ｍ、ドライバＢ  ２ｎは、バッファＡ  ２ｈ、バッファＢ  ２ｉから出力されるパケットを、パケット処理回路１ｄと上記の各カードとを接続するＰＣＩｅバスに出力する。レシーバＡ  ２ｊはＣＰＵ＃１  １ａから出力されるパケットを受信し、受信したパケットをパケット監視回路２ｅおよびバッファＡ  ２ｈに出力する。また、レシーバＢ  ２ｋは、上記の各カードから出力されるパケットを受信し、受信したパケットをパケット監視回路２ｅおよびバッファＢ  ２ｉに出力する。
【００１８】
図３に、本実施形態における情報処理装置１の機能ブロック図を示す。本実施形態において、例えばパケット処理回路１ｄのＣＰＵ＃Ａ  ２ａがフラッシュメモリ＃Ａ  ２ｄに格納されているプログラムを図示しないメモリに展開して実行することで、情報処理装置１が第１の記憶部２０１、第２の記憶部２０２、判定部２０３、調整部２０４、格納部２０５、選択部２０６、バッファ制御部２０７として機能する。
【００１９】
第１の記憶部２０１は、ＳＡＳカード１ｆ、ＬＡＮカード１ｇ、ＵＳＢカード１ｈ、グラフィックカード１ｉ、電源制御カード１ｊなどのハードウェアに障害を発生させる場合があるシーケンスをあらかじめ記憶する。第２の記憶部２０２は、当該障害を回避するシーケンスを記憶する。また、判定部２０３は、ＣＰＵ＃１  １ａがハードウェアを制御するために出力するシーケンスが第１の記憶部２０１に記憶されたシーケンスであるか否かを判定する。調整部２０４は、ＣＰＵ＃１  １ａから出力されたシーケンスが第１の記憶部２０１に記憶されたシーケンスであると判定された場合に、ＣＰＵ＃１  １ａから出力された当該シーケンスを第２の記憶部２０２に記憶されたシーケンスを用いて調整する。
【００２０】
格納部２０５は、ＣＰＵ＃１  １ａがハードウェアを制御するために出力するシーケンスを格納する。選択部２０６は、格納部２０５を介して所定シーケンス数遅延したシーケンス、および第１の記憶部２０１に記憶されたシーケンスに対応して第２の記憶部２０２から取得されたシーケンスのいずれかを選択する。バッファ制御部２０７は、格納部２０５に格納されたシーケンスの廃棄と選択部２０６による選択とを制御する。
【００２１】
図４に、本実施形態においてＮＶＭ＃Ａ  ２ｃに記憶される情報の一例の概略を示す。図４に示すように、ＮＶＭ＃Ａ  ２ｃの０ｈ番地から１００００００ｈ番地の間の領域はプログラム領域である。プログラム領域には、ＣＰＵ＃Ａ  ２ａにより実行されるプログラム、パケット処理回路１ｄの制御プログラム、上記の障害を発生させる場合がある処理のトリガパターンの比較メモリへのコピー、アクセス生成回路２ｆのパターン生成メモリへのコピー、バッファ領域の制御などの処理を実行するプログラムが記憶されている。
【００２２】
また、１００００００ｈ番地から２００００００ｈ番地の間の領域は、トリガ条件およびトリガ条件が満たされた場合に実行されるシーケンスの情報が記憶される領域である。なお、トリガ条件とは、情報処理装置１内の上記の各カードに対して障害を発生させる場合があるシーケンスがＣＰＵ＃１  １ａから指令された否かを判定するための条件である。また、シーケンスの情報とは、当該障害を回避するために実行されるシーケンスデータである。図４では、一例としてＵＳＢカード１ｈに対してＣＰＵ＃１  １ａから指令されるシーケンスに関するトリガ条件およびシーケンスの情報が示されている。さらに、２００００００ｈ番地から３００００００ｈ番地の間の領域は、上記のトリガ条件およびシーケンスの情報が記憶されている領域を示す情報が記憶される領域である。３００００００ｈ番地から４００００００ｈ番地の間の領域は、上記のシーケンスが実行されたときに書き込まれたデータの履歴が記憶される。
【００２３】
図４に示すように、例えばＣＰＵ＃１  １ａからＵＳＢカード１ｈに対してＸ０レジスタにデータ「ＡＡ」を書き込むシーケンスが指令されると、パケット処理回路１ｄではトリガ条件設定１「trigger setup #1」に記述されているトリガ条件が満たされ、シーケンス設定１「sequence setup #1」に記述されているシーケンスに従って、ＵＳＢカード１ｈに対してＸ１レジスタにデータ「ＢＢ」を書き込むシーケンスが追加される。
【００２４】
また、別の例として、ＣＰＵ＃１  １ａからＵＳＢカード１ｈに対してＸ２レジスタにデータ「ＣＣ」を書き込むシーケンスが指令された後に、さらにＵＳＢカード１ｈに対してＸ３レジスタにデータ「ＸＸ」（ＸＸは任意の値）を書き込むシーケンスが指令された場合が挙げられる。この場合、パケット処理回路１ｄではトリガ条件設定２「trigger setup #2」に記述されているトリガ条件が満たされる。そして、パケット処理回路１ｄでは、シーケンス設定２「sequence setup #2」に記述されているシーケンスに従って、ＵＳＢカード１ｈに対してＸ２レジスタにデータ「ＣＣ」を書き込むシーケンスとＸ３レジスタにデータ「ＸＸ」を書き込むシーケンスの順番が入れ替えられる。さらに、Ｘ２レジスタにデータ「ＣＣ」を書き込むシーケンスの生成後、１０μ秒の待機時間の後にＸ３レジスタにデータ「ＸＸ」を書き込むシーケンスが生成される。
【００２５】
図５に、本実施形態においてフラッシュメモリ＃Ａ  ２ｄに記憶される情報の一例の概略を示す。図５に示すように、フラッシュメモリ＃Ａ  ２ｄの０ｈ番地から２００００００ｈ番地の間の領域は、ＣＰＵ＃Ａ  ２ａにより実行される初期化の各種プログラムが記憶される領域である。この領域に記憶されるデータとしては、ＣＰＵ＃Ａ  ２ａの初期化、アクセス生成回路２ｆの初期化、バッファ領域の初期化などを実行するプログラムや、各初期化に使用されるパラメータが挙げられる。２００００００ｈ番地から４００００００ｈ番地の間の領域は、パケット処理回路１ｄのＰＣＩ構成情報が記憶される領域である。
【００２６】
図６に、パケット監視回路２ｅの概略の構成を示す。図６に示すように、パケット監視回路２ｅは、デシリアライザ３ａ、３ｂ、パラレルデータラッチ３ｃ、３ｄ、データ同期制御回路３ｅ、トレースメモリ３ｆ、３ｇ、Ｎ個（Ｎは自然数）のコンパレータ＃Ｎ  ３ｈ、３ｉ、Ｎ個のアドレスカウンタ＃Ｎ  ３ｊ、３ｋ、Ｎ個の比較メモリ＃Ｎ  ３ｍ、３ｎ、内部バス制御回路３ｐを有する。なお、比較メモリ＃Ｎ  ３ｍ、３ｎが、第１の記憶部の一例に相当する。また、コンパレータ＃Ｎ  ３ｈ、３ｉが判定部の一例に相当する。また、アドレスカウンタ＃Ｎ  ３ｊ、３ｋが指標部の一例に相当する。また、本実施形態では、コンパレータ＃Ｎ  ３ｈ、３ｉと、アドレスカウンタ＃Ｎ  ３ｊ、３ｋと、比較メモリ＃Ｎ  ３ｍ、３ｎとが対になっている。
【００２７】
デシリアライザ３ａ、３ｂは、パケット処理回路１ｄに入力されるパケットを取得し、取得したパケットをシリアルデータからパラレルデータに変換する。また、デシリアライザ３ａ、３ｂは、取得したパケットのパラレルデータへの変換が完了したことを示す信号（Drdy；Data Readyの略）を出力する。また、デシリアライザ３ａ、３ｂは、パケットを取得したことを示す信号（Packet#A、Packet#B）を出力する。
【００２８】
パラレルデータラッチ３ｃ、３ｄは、デシリアライザ３ａ、３ｂから出力されたパラレルデータをDrdy信号に基づいてラッチする。また、パラレルデータラッチ３ｃ、３ｄは、パケットに含まれる情報の切り出しおよび加工を行う。なお、パラレルデータラッチ３ｃ、３ｄにより切り出された情報は、コンパレータ＃Ｎ  ３ｈ、３ｉによる比較処理に使用される。図７に、パラレルデータラッチ３ｃ、３ｄにより処理されるパケットのフォーマットを概略的に示す。図７に示すようにパケットは、トランザクションレイヤ、データリンクレイヤ、フィジカルリンクレイヤに分類されている。さらに、パケットは、先頭からフレミング情報（Frame）、シーケンス番号（Sequence#）、トランザクションタイプ（Header）、転送データ（Data）、トランザクションレイヤのＣＲＣ（Cyclic Redundancy Check）計算コード（RCRC；Read Cyclic Redundancy Check）、データリンクレイヤのＲＣＲ計算コード（ＬＣＲＣ；Link Cyclic Redundancy Check）、フレミング情報（Frame）を含む。
【００２９】
トレースメモリ３ｆ、３ｇは、パラレルデータラッチ３ｃ、３ｄによりラッチされたパラレルデータを記憶する。なお、トレースメモリ３ｆ、３ｇへのデータの書き込みは、Drdy信号に同期して実行される。また、トレースメモリ３ｆ、３ｇからのデータの読み出しは、データ同期制御回路３ｅにより出力されるRtm信号に同期して実行される。データ同期制御回路３ｅは、内部バス制御回路３ｐの制御に従って、内部バスからのデータのアクセスの同期制御を行う。データ同期制御回路３ｅは、内部バスからの読み出し要求信号を内部バス制御回路３ｐを経由して受信すると、Rtm信号を出力する。
【００３０】
比較メモリ＃Ｎ  ３ｍ、３ｎには、ＮＶＭ＃Ａ  ２ｃに記憶されているトリガ条件が記憶される。なお、比較メモリ＃Ｎ  ３ｍ、３ｎの１つの比較メモリには、１つまたは複数のシーケンスが発生したか否かを判定するためのトリガ条件が記憶される。比較メモリ＃Ｎ  ３ｍ、３ｎは、内部バス制御回路３ｐからトリガ条件のデータを受信する。
【００３１】
コンパレータ＃Ｎ  ３ｈ、３ｉは、比較メモリ＃Ｎ  ３ｍ、３ｎから取得するトリガ条件と、パラレルデータラッチ３ｃ、３ｄから入力されるデータの比較を行う。具体的には、コンパレータ＃Ｎ  ３ｈ、３ｉは、パラレルデータラッチ３ｃ、３ｄから受信したデータに含まれるシーケンスと、比較メモリ＃Ｎ  ３ｍ、３ｎから取得したトリガ条件に含まれるシーケンスとを比較して、互いのシーケンスが一致するか否かを判定する。
【００３２】
コンパレータ＃Ｎ  ３ｈは、パケット処理回路１ｄに入力されるダウンストリームのパケットに対する比較を実行する。また、コンパレータ＃Ｎ  ３ｉは、パケット処理回路１ｄに入力されるアップストリームのパケットに対する比較を実行する。コンパレータ＃Ｎ  ３ｈ、３ｉは、比較の結果、上記の互いのシーケンスが一致すると判定した場合に、信号Hit-down#N、Hit-up#N（ここでＮは、コンパレータ＃ＮのＮと同じ）をそれぞれ出力する。コンパレータ＃Ｎ  ３ｈ、３ｉは、トリガ条件が一致したことを示す信号Upd#N、Upu#Nをアドレスカウンタ＃Ｎ  ３ｊ、３ｋにそれぞれ出力する。
【００３３】
ＮＶＭ＃Ａ  ２ｃに記憶されているトリガ条件について説明する。例えば、命令Ａに続いて命令Ｂが発生したことをコンパレータ＃Ｎ  ３ｈのコンパレータ＃１で比較する場合、比較メモリ＃Ｎ  ３ｍの比較メモリ＃１に記憶されるトリガ条件は、命令Ａを実行するシーケンスが発生することを第１条件として、命令Ｂを実行するシーケンスが発生することを第２条件としてそれぞれ含む。そして、本実施形態では、比較メモリ＃１と対になっているコンパレータ＃１は、第１条件、第２条件を順番に用いて比較処理を行う。
【００３４】
一例として、コンパレータ＃Ｎ  ３ｈから信号Upd#Nがアドレスカウンタ＃Ｎ  ３ｊに入力されると、アドレスカウンタ＃Ｎ  ３ｊはカウンタ値を１だけインクリメントする。アドレスカウンタ＃Ｎ  ３ｊによるインクリメント後のカウンタ値は比較メモリ＃Ｎ  ３ｍに出力される。アドレスカウンタ＃Ｎ  ３ｊのカウンタ値は、比較メモリ＃Ｎ  ３ｍのアドレスとなる。例えば、比較メモリ＃Ｎ  ３ｍのａ番地（ａは自然数）に、トリガ条件の第ａ番目の条件が記憶されている。この場合、比較メモリ＃Ｎ  ３ｍは、アドレスカウンタ＃Ｎ  ３ｊから入力されるカウンタ値がａであるときに、ａ番地に記憶されている第ａ番目の条件をコンパレータ＃Ｎ  ３ｈに出力する。
【００３５】
上記の例では、最初にアドレスカウンタ＃Ｎ  ３ｊのアドレスカウンタ＃１のカウンタ値の初期値が１に設定されている。また、比較メモリ＃Ｎ  ３ｍの比較メモリ＃１に第１条件および第２条件が記憶されている。そして、コンパレータ＃Ｎ  ３ｈのコンパレータ＃１によって第１条件が一致すると判定される。この結果、コンパレータ＃Ｎ  ３ｈのコンパレータ＃１から出力される信号Upd#1により、アドレスカウンタ＃Ｎ  ３ｊのアドレスカウンタ＃１はカウンタ値を２にインクリメントする。アドレスカウンタ＃Ｎ  ３ｊのアドレスカウンタ＃１は、カウンタ値２を比較メモリ＃Ｎ  ３ｍの比較メモリ＃１に出力する。比較メモリ＃Ｎ  ３ｍの比較メモリ＃１は、カウンタ値２に基づいて第２条件を読み出し、第２条件のデータをコンパレータ＃Ｎ  ３ｈのコンパレータ＃１に出力する。
【００３６】
図８に、アクセス生成回路２ｆの概略の構成を示す。図８に示すように、アクセス生成回路２ｆは、ゲート４ａ、４ｂ、シリアライザ４ｃ、４ｄ、ＰＣＩｅ出力制御回路４ｅ、Ｎ個（Ｎは自然数）のパターン生成メモリ＃Ｎ  ４ｆ、４ｇ、Ｎ個のアドレスカウンタ＃Ｎ  ４ｈ、４ｉ、Ｎ個の生成シーケンス制御レジスタ＃Ｎ  ４ｊを有する。なお、パターン生成メモリ＃Ｎ  ４ｆ、４ｇが第２の記憶部の一例に相当する。また、生成シーケンス制御レジスタ＃Ｎ  ４ｊが調整部の一例に相当する。
【００３７】
パターン生成メモリ＃Ｎ  ４ｆ、４ｇは、ＮＶＭ＃Ａ  ２ｃに記憶されているトリガ条件が満たされた場合に実行されるシーケンスを記憶する。なお、パターン生成メモリ＃Ｎ  ４ｆ、４ｇと比較メモリ＃Ｎ  ３ｍ、３ｎとがそれぞれ対になっている。このため、比較メモリ＃Ｎ  ３ｍ、３ｎに記憶されているトリガ条件が満たされたときに実行されるシーケンスが、パターン生成メモリ＃Ｎ  ４ｆ、４ｇにそれぞれ記憶されている。パターン生成メモリ＃Ｎ  ４ｆ、４ｇは、シーケンスのデータをＰＣＩｅパケットとするため、トランザクションレイヤ、データリンクレイヤ、フィジカルレイヤを組み立てて、パターン生成メモリ＃Ｎ  ４ｆ、４ｇに書き戻す。書き戻されたデータは、シリアライザ４ｃ、４ｄに出力される。
【００３８】
生成シーケンス制御レジスタ＃Ｎ  ４ｊは、パケット処理回路１ｄのＣＰＵ＃Ａ  ２ａから内部バスを経由して入力される命令に従って、アクセス生成回路２ｆ内の各部の動作を制御する。ＰＣＩｅ出力制御回路４ｅは、ゲート４ａ、４ｂの動作タイミングを制御し、バッファＡ  ２ｈおよびバッファＢ  ２ｉのパージ処理を制御するための信号PCIe control N#A、PCIe control N#Bを出力する。シリアライザ４ｃ、４ｄは、パターン生成メモリ＃Ｎ  ４ｆ、４ｇから入力されるシーケンスのパラレルデータをシリアルデータに変換してゲート４ａ、４ｂにそれぞれ出力する。
【００３９】
また、パターン生成メモリ＃Ｎ  ４ｆ、４ｇに記憶されるシーケンスは、複数の処理命令を有する場合がある。例えば、処理命令Ａに続いて処理命令Ｂを実行させるシーケンスがパターン生成メモリ＃Ｎ  ４ｆ、４ｇに記憶されている場合、パターン生成メモリ＃Ｎ  ４ｆ、４ｇは、アドレスカウンタ＃Ｎ  ４ｈ、４ｉから入力されるパターン生成メモリ＃Ｎ  ４ｆ、４ｇのアドレスを指定する信号に基づいて、処理命令Ａ、Ｂを順次シリアライザ４ｃ、４ｄに出力する。
【００４０】
シリアライザ４ｃは、パターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃Ｎから入力されるシーケンスの処理のデータをゲート４ａに出力すると、アドレスカウンタ＃Ｎ  ４ｈにタイミング信号Dset#Aを出力する。アドレスカウンタ＃Ｎ  ４ｈは、シリアライザ４ｃから信号Dset#Aが入力されると、カウンタ値を１だけインクリメントする。アドレスカウンタ＃Ｎ  ４ｈによるインクリメント後のカウンタ値はパターン生成メモリ＃Ｎ  ４ｆに出力される。アドレスカウンタ＃Ｎ  ４ｈのカウンタ値は、パターン生成メモリ＃Ｎ  ４ｆのアドレスとなる。例えば、パターン生成メモリ＃Ｎ  ４ｆのａ番地に（ａは自然数）、第ａ番目の処理命令が記憶されているとする。この場合、パターン生成メモリ＃Ｎ  ４ｆは、アドレスカウンタ＃Ｎ  ４ｈから入力されるカウンタ値がａであるときに、ａ番地に記憶されている第ａ番目の処理命令をシリアライザ４ｃに出力する。
【００４１】
一例として、アドレスカウンタ＃Ｎ  ４ｈのアドレスカウンタ＃１のカウンタ値の初期値は１に設定されている。また、パターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃１にシーケンスの第１番目の処理命令および第２番目の処理命令が記憶されている。そして、生成シーケンス制御レジスタ＃Ｎ  ４ｊの制御に従って、パターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃１は、第１番目の処理命令のデータをシリアライザ４ｃに出力する。
【００４２】
シリアライザ４ｃは、ゲート４ａに第１番目の処理命令のデータを出力すると、信号Dset#Aをアドレスカウンタ＃Ｎ  ４ｈのアドレスカウンタ＃１に出力する。そして、アドレスカウンタ＃Ｎ  ４ｈのアドレスカウンタ＃１は、信号Dset#Aが入力されると、カウンタ値を２にインクリメントする。アドレスカウンタ＃Ｎ  ４ｈのアドレスカウンタ＃１は、カウンタ値２をパターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃１に出力する。パターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃１は、カウンタ値２に基づいて、第２番目の処理命令のデータをシリアライザ４ｃに出力する。
【００４３】
図９に、バッファＡ  ２ｈの概略の構成を示す。図９に示すように、バッファＡ  ２ｈは、制御コードデコーダ５ａ、Ｍ個（Ｍは自然数）のＦＩＦＯ（First-In First-Out）多段バッファ＃Ｍ  ５ｂ、ドライバ５ｃ、マルチプレクサ５ｄを有する。なお、制御コードデコーダ５ａがバッファ制御部の一例に相当する。また、マルチプレクサ５ｄが選択部の一例に相当する。
【００４４】
制御コードデコーダ５ａは、アクセス生成回路２ｆからのバッファ制御信号PCIe control 0〜N#Aを、バッファＡ  ２ｈ内の各部に対する制御信号にデコードする。ＦＩＦＯ多段バッファ＃Ｍ  ５ｂは、ＣＰＵ＃１  １ａからルートコンプレックス１ｃを経由してパケット処理回路１ｄに入力される信号PCIe in #1Sをパケット単位で格納する。
【００４５】
制御コードデコーダ５ａは、ＣＰＵ  ＃Ａ  ２ａの命令に従って、ＦＩＦＯ多段バッファ＃Ｍ  ５ｂに格納されているパケットのパージを命令する。制御コードデコーダ５ａは、例えば図１０に示す真理値表を使用して、Thru pass gate信号とPacket select信号により、PCIe in #1S/#2Sからのパケットを出力するか否かを制御する。
【００４６】
図１０には、制御コードデコーダ５ａがＦＩＦＯ多段バッファ＃Ｍ  ５ｂに格納されているパケットのパージを行う際に使用する真理値表の一例と制御コードデコーダ５ａがマルチプレクサ５ｄの出力制御を行う際に使用する真理値表の一例を示す。例えば、制御コードデコーダ５ａは、アクセス生成回路２ｆから入力されるPCIe control 0〜2#Aの信号「０」または「１」の組み合わせに従って、ＦＩＦＯ多段バッファ＃Ｍ  ５ｂのＦＩＦＯ多段バッファ＃１〜＃７のパージを実行する。なお、PCIe control 0〜2#Aの信号がいずれも「０」の場合は、制御コードデコーダ５ａはＦＩＦＯ多段バッファ＃Ｍ  ５ｂのパージを実行しない。
【００４７】
また、制御コードデコーダ５ａは、アクセス生成回路２ｆから入力されるPCIe control 3〜4#Aの信号「０」または「１」の組み合わせに従って、マルチプレクサ５ｄの出力制御を行う。図１０の真理値表からわかるように、マルチプレクサ５ｄは、制御コードデコーダ５ａの出力制御に従ってＡ１〜Ａ３いずれかの入力パケットをドライバ５ｃに出力する。なお、PCIe control 3〜4#Aの信号がいずれも「０」の場合は、制御コードデコーダ５ａはマルチプレクサ５ｄからドライバ５ｃにパケットが出力されないように制御する。
【００４８】
本実施形態では、制御コードデコーダ５ａの制御により、マルチプレクサ５ｄが入力Ａ１およびＡ３の選択を組み合わせることにより、ＣＰＵ＃１  １ａが出力したシーケンスの遅延、廃棄、および複数のシーケンス間の入替、および複数のシーケンス間への他のシーケンスの挿入を行うことができる。なお、ＣＰＵ＃１  １ａが出力したシーケンスが含まれるパケットをＦＩＦＯ多段バッファ＃Ｍ  ５ｂに格納する場合、バッファリングによる遅延が発生する。そこで、制御コードデコーダ５ａの制御によりマルチプレクサ５ｄに入力Ａ２を選択させることにより、ＣＰＵ＃１  １ａが出力したシーケンスを含むパケットを、ＦＩＦＯ多段バッファ＃Ｍ  ５ｂに格納されることによる遅延を発生させることなく、パケット処理回路１ｄから出力することもできる。
【００４９】
ＦＩＦＯ多段バッファ＃Ｍ  ５ｂは、パケット単位でＦＩＦＯされる多段バッファであり、バッファ状態がフルとなった場合、Buffer full信号を出力する。また、Empty信号は、ＦＩＦＯ内のバッファが空の状態であり、前段からの出力データが入力時可能な状態を示す。Purge packet #Nは、対象のＦＩＦＯ多段バッファ内のバッファをクリアする信号であり、パージする対象パケットに対し削除処理を行う信号である。
【００５０】
ドライバ５ｃは、アクセス生成回路２ｆのＰＣＩｅ出力制御回路４ｅからの命令に従ってパケットをＰＣＩｅバスに出力する。マルチプレクサ５ｄは、図１０に示す真理値表に基づく制御コードデコーダ５ａによる制御に従って、Ａ１、Ａ２、Ａ３のいずれかの入力パケットをドライバ５ｃに出力するあるいはいずれの入力パケットもドライバ５ｃに出力しない。
【００５１】
本実施形態では、例えばパケット処理回路１ｄがシーケンスを削除する場合は、ＣＰＵ＃Ａ  ２ａ、ＰＣＩｅ出力制御回路４ｅ、生成シーケンス制御レジスタ４ｊの制御により、ＦＩＦＯ多段バッファ＃Ｍ  ５ｂのうち当該シーケンスを含むパケットが格納されているＦＩＦＯ多段バッファのパージが実行される。また、例えばパケット処理回路１ｄがシーケンスの入れ替えをする場合は、同様に当該シーケンスを含むパケットが格納されているＦＩＦＯ多段バッファのパージが実行される。さらに、入れ替え後の順番でシーケンスがPCIe data #Aとして生成されマルチプレクサ５ｄの入力Ａ３として入力された後、ドライバ５ｃを経由してＰＣＩｅスイッチ１ｅに出力される。
【００５２】
また、例えばパケット処理回路１ｄがシーケンスを追加する場合は、ＣＰＵ＃Ａ  ２ａ、ＰＣＩｅ出力制御回路４ｅ、生成シーケンス制御レジスタ４ｊの制御によりバッファ  Ａ  ２ｈからのパケット出力が一時停止される。さらに、追加のシーケンスがＰＣＩｅコントローラ２ｇを経由してＰＣＩｅスイッチ１ｅに出力される。そして、バッファ  Ａ  ２ｈからのパケット出力が再開されることにより、追加のシーケンスに続いてバッファ  Ａ  ２ｈに格納されているシーケンスをパケット処理回路１ｄから出力することができる。なお、追加のシーケンスがバッファＡ  ２ｈに入力されるように構成してもよい。この場合は、パケット処理回路１がいわゆる代理応答の機能を用いて追加のシーケンスと既存のシーケンスの順番の調整を行う。さらに、制御コードデコーダ５ａの制御によりマルチプレクサ５ｄに入力Ａ３を選択させる。これにより、追加のシーケンスがＰＣＩｅスイッチ１ｅに出力される。
【００５３】
バッファＢ  ２ｉは、バッファＡ  ２ｈと同様の構成を有するため、図示および説明を省略する。なお、バッファＢ  ２ｉは、図９に示す構成では、制御コードデコーダにPCIe control #Bが、ＦＩＦＯ多段バッファ＃Ｍ  ５ｂにPCIe in #2Sが、マルチプレクサにPCIe data #Bがそれぞれ入力される点でバッファＡ  ２ｈと異なる。さらに、バッファＢ  ２ｉは、図９に示す構成では、ＦＩＦＯ多段バッファ＃１からBuffer full1 #Bが出力される点でバッファＡ  ２ｈと異なる。
【００５４】
次に、図４に示すトリガ条件およびシーケンスを用いる場合における情報処理装置１の具体的な処理例について説明する。図１１に情報処理装置１が実行する処理例のフローチャートを示す。また、図１２に情報処理装置１が図１１に示すフローチャートの処理を実行するときのタイムチャートの一例を示す。本実施形態では、情報処理装置１の電源投入が行われると、ＣＰＵ＃Ａ  ２ａが図１１のフローチャートの処理を開始する。
【００５５】
なお、図１１、１２に示す処理例では、ＵＳＢカード１ｈの転送スピードSuperSpeed（５．０Ｇｂｐｓ）によりデータを間欠転送する場合に、Ｘ０、Ｘ２、Ｘ３の各レジスタへのアクセス時に間欠転送エラーが発生する場合の障害回避を想定する。ここで間欠転送エラーとは、一例としては、ハードウェアのレジスタに対するデータの書き込みが発生したときに、バッファＡ  ２ｈにおいてパケット単位の転送遅延が発生することによってデータ出力と間欠転送のタイミングとの不整合が生じることでデータを転送できない現象である。
【００５６】
本実施形態では、図１２に示すように、ＣＰＵ＃１  １ａからパケット処理回路１ｄに、シーケンス番号１〜６のシーケンスが出力される。シーケンス番号１のシーケンスはＵＳＢカード１ｈのＸ０レジスタにデータ「ＡＡ」を書き込むシーケンスである。また、シーケンス番号３のシーケンスは、ＵＳＢカード１ｈのＸ２レジスタにデータ「ＣＣ」を書き込むシーケンスである。また、シーケンス番号４のシーケンスは、ＵＳＢカード１ｈのＸ３レジスタにデータ「２２」を書き込むシーケンスである。ここでは、シーケンス番号１のシーケンスの実行時およびシーケンス番号２、３のシーケンスの実行時に、レジスタへのアクセスタイミングやアクセス順序などの関係で、間欠転送エラーが発生してデータが正常に転送されない障害が発生するものとする。
【００５７】
そこで本処理例では、障害回避のため、情報処理装置１は、図１２に示すようにシーケンス番号１においてＵＳＢカード１ｈのＸ０レジスタにデータ「ＡＡ」を書き込むシーケンスが発生した場合に、当該シーケンスに続いてＸ１レジスタにデータ「ＢＢ」を書込みする追加のシーケンスを実行する。また、情報処理装置１は、図１２に示すようにシーケンス番号３、４においてＸ２レジスタにデータ「ＣＣ」を書き込むシーケンスの後にＸ３を書き込むシーケンスが発生した場合に、Ｘ３レジスタへの書き込みを先に実行し、Ｘ２レジスタへの書き込みを１０μ秒以上の間隔を空けて実行する。
【００５８】
ＯＰ１０１では、情報処理装置１の電源が投入されたことを契機に、ＣＰＵ＃１  １ａにより、ＢＩＯＳ  ＲＯＭ（図示せず）に記憶されているブートローダが実行され、ＯＳなどの起動が開始される。また、フラッシュメモリ＃Ａ  ２ｄに記憶されているＰＣＩ構成情報が、起動後のＰＣＩ構成シーケンスによりＣＰＵ＃１  １ａに通知される。さらに、ＣＰＵ＃Ａ  ２ａは、図５に示すフラッシュメモリ＃Ａ  ２ｄに記憶されている初期化プログラム領域に格納されている各処理のプログラムを読み取り、各種初期化を実行する。次に、ＣＰＵ＃Ａ  ２ａは処理をＯＰ１０２に進める。ＯＰ１０２では、ＣＰＵ＃Ａ  ２ａは、図５に示すＮＶＭ＃Ａ  ２ｃに記憶されているプログラム領域に格納されている各処理のプログラムを読み取り、各種処理を実行する。さらにＣＰＵ＃Ａ  ２ａは、ＵＳＢスロット２ｂに挿入されたＵＳＢメモリ１００からトリガ条件およびシーケンスのデータを取得し、取得したデータを用いてＮＶＭ＃Ａ  ２ｃのトリガ／シーケンステーブルを作成する。本処理例では、図４に示すようにトリガ／シーケンステーブルが作成されているとする。次いで、ＣＰＵ＃Ａ  ２ａは、処理をＯＰ１０３に進める。
【００５９】
ＯＰ１０３では、ＣＰＵ＃Ａ  ２ａは、ＮＶＭ＃Ａ  ２ｃに記憶されているトリガ条件をパケット監視回路２ｅの比較メモリ＃Ｎ  ３ｍ、３ｎに記憶する。具体的には、ＣＰＵ＃Ａ  ２ａは、図４に示すトリガ／シーケンステーブル内の「trigger setup#1」のトリガ条件のデータを、パケット監視回路２ｅの比較メモリ＃Ｎ  ３ｍの比較メモリ＃１の０番地に書き込む。ここで、「trigger setup#1」のトリガ条件とは、ＣＰＵ＃１  １ａからパケット処理回路１ｄに出力されるシーケンスがＵＳＢカード１ｈのＸ０レジスタにデータ「ＡＡ」を書き込むシーケンスであるか否かを判定する条件である。また、ＣＰＵ＃Ａ  ２ａは、「trigger setup#2」の各トリガ条件のデータを、比較メモリ＃Ｎ  ３ｍの比較メモリ＃２の０番地から順に書き込む。ここで、「trigger setup#2」のトリガ条件には、ＣＰＵ＃１  １ａからパケット処理回路１ｄに出力されるシーケンスがＵＳＢカード１ｈのＸ２レジスタにデータ「ＸＸ」（ＸＸは任意の数値）を書き込むシーケンスであるか否かを判定する条件が含まれる。さらに、「trigger setup#2」のトリガ条件には、ＵＳＢカード１ｈのＸ２レジスタにデータ「ＸＸ」を書き込むシーケンスに続いて、ＵＳＢカード１ｈのＸ３レジスタにデータ「ＣＣ」を書き込むシーケンスが発生したか否かを判定する条件が含まれる。次いで、ＣＰＵ＃Ａ  ２ａは、処理をＯＰ１０４に進める。
【００６０】
ＯＰ１０４では、ＣＰＵ＃Ａ  ２ａは、パケット監視回路３ｅのアドレスカウンタ＃Ｎ  ３ｊ、３ｋおよびアクセス生成回路２ｆのアドレスカウンタ＃Ｎ  ４ｈ、４ｉをリセットする。また、ＣＰＵ＃Ａ  ２ａは、バッファＡ  ２ｈのマルチプレクサ５ｄに対して、入力Ａ１を出力するよう選択させる。また、ＣＰＵ＃Ａ  ２ａは、バッファＢ  ２ｉのマルチプレクサ５ｄに対して、入力Ａ２を出力するよう選択させる。次いで、ＣＰＵ＃Ａ  ２ａは、処理をＯＰ１０５に進める。
【００６１】
ＯＰ１０５において、ＣＰＵ＃Ａ  ２ａは、パケット監視回路３ｅからHit-down#1信号が入力されたか否かを検出する。上記の通り、Hit-down#1信号は、比較メモリ＃Ｎ  ３ｍの比較メモリ＃１に記憶された「trigger setup#1」のトリガ条件が満たされたことを示す信号である。すなわち、Hit-down#1信号は、ＣＰＵ＃１  １ａからパケット処理回路１ｄに出力されるシーケンスがＵＳＢカード１ｈのＸ０レジスタにデータ「ＡＡ」を書き込むシーケンスであると判定されたことを示す信号である。ＣＰＵ＃Ａ  ２ａは、Hit-down#1信号が入力された場合は（ＯＰ１０５：Ｙｅｓ）、処理をＯＰ１０６に進める。また、ＣＰＵ＃Ａ  ２ａは、Hit-down#1信号が入力されていない場合は（ＯＰ１０５：Ｎｏ）、処理をＯＰ１０７に進める。
【００６２】
ＯＰ１０６では、ＣＰＵ＃Ａ  ２ａは、ＮＶＭ＃Ａ  ２ｃに記憶されている「sequence setup#1」のシーケンスの処理を実行する。図４に示すように、ここで「sequence setup#1」のシーケンスは、ＵＳＢカード１ｈのＸ１レジスタにデータ「ＢＢ」を書き込む処理を追加する処理である。ＣＰＵ＃Ａ  ２ａは、ＵＳＢカード１ｈのＸ１レジスタにデータ「ＢＢ」を書き込むシーケンスをパターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃１に書き込む。パターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃１は、書き込まれたシーケンス情報に従って、当該シーケンスを含むＰＣＩｅパケットを生成する。生成されたパケットは、ＰＣＩｅコントローラ２ｇを経由してパケット処理回路１ｄから出力される。パケット処理回路１ｄから出力されたパケットは、ＰＣＩｅスイッチ１ｅを経由してＵＳＢカード１ｈに送られる。ＵＳＢカード１ｈは、入力されたパケットに含まれる上記のシーケンスに従ってＸ１レジスタに「ＢＢ」を書き込む処理を実行する。なお、ＣＰＵ＃Ａ  ２ａは、アドレスカウンタ＃Ｎ  ３ｊ、４ｈのそれぞれのアドレスカウンタ＃１をリセットする。次いで、ＣＰＵ＃Ａ  ２ａは、処理をＯＰ１０７に進める。
【００６３】
ＯＰ１０７では、ＣＰＵ＃Ａ  ２ａは、パケット監視回路２ｅからHit-down#2信号が入力されたか否かを検出する。Hit-down#2信号は、比較メモリ＃Ｎ  ３ｍの比較メモリ＃２に記憶された「trigger setup#2」のトリガ条件が満たされたことを示す信号である。すなわち、Hit-down#2信号は、ＣＰＵ＃１  １ａからパケット処理回路１ｄに出力されるシーケンスが、ＵＳＢカード１ｈのＸ２レジスタにデータ「ＸＸ」を書き込むシーケンスの後にＵＳＢカード１ｈのＸ３レジスタにデータ「ＣＣ」を書き込むシーケンスが続くものであると判定されたことを示す信号である。ＣＰＵ＃Ａ  ２ａは、Hit-down#2信号が入力された場合は（ＯＰ１０７：Ｙｅｓ）、処理をＯＰ１０８に進める。また、ＣＰＵ＃Ａ  ２ａは、Hit-down#2信号が入力されていない場合は（ＯＰ１０７：Ｎｏ）、処理をＯＰ１０５に戻す。
【００６４】
ＯＰ１０８では、ＣＰＵ＃Ａ  ２ａは、ＮＶＭ＃Ａ  ２ｃに記憶されている「sequence setup#2」のシーケンスの処理を実行する。図４に示すように、ＣＰＵ＃Ａ  ２ａは、「sequence setup#2」のシーケンスに従って、まずバッファＡ  ２ｈ内にＦＩＦＯ多段バッファ＃Ｎに格納されているパケットのうち、ＵＳＢカード１ｈのＸ２レジスタに対する書き込みのシーケンスを含むパケットとＸ３レジスタに対する書き込みのシーケンスを含むパケットをパージする。次に、ＣＰＵ＃Ａ  ２ａは、パケット監視回路２ｅのトレースメモリ３ｆからＸ２レジスタに対するデータ「ＣＣ」を書き込むシーケンスのシーケンス番号ＮとＸ３レジスタに対する書き込み対象のデータ「ＸＸ」を読み出す。なお、図１２に示す例では、シーケンス番号３において、Ｘ２レジスタに対するデータ「ＣＣ」を書き込むシーケンスが発生しているので、Ｎは３である。また、シーケンス番号４において、Ｘ３レジスタに対してデータ「２２」を書き込むシーケンスが発生しているので、ＸＸは２２である。
【００６５】
次に、図４の「sequence setup#2」のシーケンス情報に記載されているように、ＣＰＵ＃Ａ  ２ａは、上記で読み出した情報を用いて、シーケンス番号３としてＵＳＢカード１ｈのＸ３レジスタにデータ「２２」を書き込むシーケンスをパターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃２の０番地に書き込む。さらに、ＣＰＵ＃Ａ  ２ａは、シーケンス番号Ｎ＋１、すなわち図１１の例ではシーケンス番号４としてＵＳＢカード１ｈのＸ２レジスタにデータ「ＣＣ」を書き込むシーケンスをパターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃２の１番地に書き込む。
【００６６】
また、ＣＰＵ＃Ａ  ２ａは、生成シーケンス制御レジスタ＃Ｎ  ４ｊを介してＰＣＩｅ出力制御回路４ｅを制御し、バッファＡ  ２ｈ内のＦＩＦＯ多段バッファ＃Ｎ  ５ｂのパケット出力を一時停止する。パケット出力が一時停止されるのは、以下に説明するように、パケットの入れ替えを行うためである。さらに、ＣＰＵ＃Ａ  ２ａは、マルチプレクサ５ｄがＡ３から入力されたパケットを出力するように制御する。
【００６７】
次にＣＰＵ＃Ａ  ２ａは、生成シーケンス制御レジスタ＃Ｎ  ４ｊを制御してパターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃２の０番地に書き込まれた処理を実行する。これにより、パターン生成メモリ＃２から、ＵＳＢカード１ｈのＸ３レジスタにデータ「２２」を書き込むシーケンスを含むパケットがシーケンス番号３としてシリアライザ４ｃおよびマルチプレクサ５ｄを経由してパケット処理回路１ｄから出力される。
【００６８】
続いてＣＰＵ＃Ａ  ２ａは、ＵＳＢカード１ｈのＸ３レジスタにデータ「２２」を書き込むシーケンスを含むパケットがパケット処理回路１ｄから出力されてから１０μ秒待機する。そして、ＣＰＵ＃Ａ  ２ａは、生成シーケンス制御レジスタ＃Ｎ  ４ｊを制御してパターン生成メモリ＃Ｎ  ４ｆのパターン生成メモリ＃２の１番地に書き込まれた処理を実行する。これにより、パターン生成メモリ＃２から、ＵＳＢカード１ｈのＸ２レジスタにデータ「ＣＣ」を書き込むシーケンスを含むパケットがシーケンス番号４としてシリアライザ４ｃおよびマルチプレクサ５ｄを経由してパケット処理回路１ｄから出力される。
【００６９】
さらに、ＣＰＵ＃Ａ  ２ａは、バッファＡ  ２ｈ内のＦＩＦＯ多段バッファ＃Ｎ  ５ｂのパケット出力を再開し、マルチプレクサ５ｄがＡ１から入力されたパケットを出力するように制御する。これにより、図１２に示すように、ＣＰＵ＃１  １ａからパケット処理回路１ｄにシーケンス番号５として入力されたＵＳＢカード１ｈのＸ５レジスタにデータ「３３」を書き込むシーケンスを含むパケットは、ＦＩＦＯ多段バッファ＃Ｎ  ５ｂおよびマルチプレクサ５ｄを経由してシーケンス番号５としてパケット処理回路１ｄから出力される。また、ＣＰＵ＃Ａ  ２ａは、パケット監視回路２ｅのアドレスカウンタ＃Ｎ  ３ｊのアドレスカウンタ＃２およびアクセス生成回路２ｆのアドレスカウンタ＃Ｎ  ４ｈのアドレスカウンタ＃２をリセットする。
【００７０】
以上の処理により、ＣＰＵ＃１  １ａからパケット処理回路１ｄにシーケンス番号３として入力されたＵＳＢカード１ｈのＸ２レジスタにデータ「ＣＣ」を書き込むシーケンスを含むパケットがシーケンス番号４としてパケット処理回路１ｄから出力される。また、ＣＰＵ＃１  １ａからパケット処理回路１ｄにシーケンス番号４として入力されたＵＳＢカード１ｈのＸ３レジスタにデータ「２２」を書き込むシーケンスを含むパケットがシーケンス番号３としてパケット処理回路１ｄから出力される。この結果、これら２つのパケットがパケット処理回路１ｄによって入れ替えられて、ＵＳＢカード１ｈに出力される。
【００７１】
ＣＰＵ＃Ａ  ２ａは、上記のＯＰ１０８の処理を実行すると、処理をＯＰ１０９に進める。ＯＰ１０９では、ＣＰＵ＃Ａ  ２ａは、情報処理装置１のシステムを終了する処理が発生したか否かを判定する。情報処理装置１のシステムを終了する処理が発生した場合は（ＯＰ１０９：Ｙｅｓ）、ＣＰＵ＃Ａ  ２ａは本フローチャートの処理を終了する。また、情報処理装置１のシステムを終了する処理が発生していない場合は（ＯＰ１０９：Ｎｏ）、ＣＰＵ＃Ａ  ２ａは処理をＯＰ１０５に戻し、上記の処理を繰り返し実行する。
【００７２】
上記の処理が実行されることにより、パケット処理回路１ｄは、ＣＰＵ＃１  １ａから出力されるパケットに含まれるシーケンスが障害発生条件を満たすことを検出し、検出された障害発生条件に応じてシーケンスの順序やタイミングなどを調整する。そして、パケット処理回路１ｄは調整したシーケンスをパケットの送信先である情報処理装置１内のＵＳＢカード１ｈをはじめとするハードウェアに出力する。なお、上記の説明では、ダウンストリームのパケットに対する処理について説明した。ただし、アップストリームのパケットに対する処理も、ダウンストリームのパケットを処理する各構成要素に対応する構成要素によって同様に実行される。したがって、本実施形態では例えば当該ハードウェアに対するメモリ空間、Ｉ／Ｏ空間のアクセス順序や書き込みデータの変更、アクセスの削除や追加、アクセスのタイミング変更など、障害の回避策を実行するシーケンスがパケット処理回路１ｄに登録される。これにより、ハードウェアの障害回避をパケット処理回路１ｄにおいて一元管理することができる。
【００７３】
以上が本実施形態に関する説明であるが、上記の情報処理装置１などの構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、上記の説明において、トリガ条件およびトリガ条件が満たされたときに実行されるシーケンスは２種類ある場合を想定したが、トリガ条件およびシーケンスの数は上記に限定されない。例えば、第３のトリガ条件およびシーケンスが存在する場合は、上記のフローチャートにおいてＯＰ１０８に続いて、ＯＰ１０５およびＯＰ１０７と同様の判定処理と、ＯＰ１０６およびＯＰ１０８と同様の処理が実行されるように構成すればよい。
【００７４】
また、上記の情報処理装置１の構成や処理を以下に説明する変形例としての情報処理システム１０に採用することもできる。なお、以下の説明において、上記の構成要素に対応する構成要素には同一の符号を付し、詳細な説明を省略する。図１３に情報処理システム１０の概略構成図を示す。図１３に示すように、情報処理システム１０は、情報処理装置１０００、Ｉ／Ｏコントローラ２０００、ディスプレイ３０００を有する。また、情報処理装置１０００は、ＣＰＵ＃１  １ａ、メモリ＃１  １ｂ、ルートコンプレックス１ｃ、パケット処理回路１ｄを有する。本変形例において、情報処理装置１０００はＰＣＩｅケーブルによりＩ／Ｏコントローラ２０００と接続されている。Ｉ／Ｏコントローラ２０００が上記の周辺デバイスに対応する。Ｉ／Ｏコントローラ２０００は、情報処理装置１０００から入力されるシーケンスに従って、ディスプレイ３０００に対するデータの入出力を制御する。
【００７５】
本変形例において、ＣＰＵ＃１  １ａは、Ｉ／Ｏコントローラ２０００を制御するシーケンスを出力する。一例として、当該シーケンスは、Ｉ／Ｏコントローラ２０００のデータの入出力のタイミングに異常を発生させ、Ｉ／Ｏコントローラ２０００に接続されているディスプレイ３０００の画面にノイズを生じさせるシーケンスであると想定する。そして、当該シーケンスを含むパケットがパケット処理回路１ｃに入力されると、上記の処理によりシーケンスの順序やタイミングなどが調整される。この結果、調整されたシーケンスがＩ／Ｏコントローラ２０００に送信されることによって、Ｉ／Ｏコントローラ２０００における上記の障害を回避し、ディスプレイ３０００において画面にノイズが生じないようにすることができる。なお、情報処理装置１０００に接続される周辺デバイスは、Ｉ／Ｏコントローラ２０００に限られない。
【００７６】
＜コンピュータが読み取り可能な記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記情報処理装置の設定を行うための管理ツール、ＯＳその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータは、例えば、情報処理装置などである。
【００７７】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【符号の説明】
【００７８】
１、１０００    情報処理装置
１ａ    ＣＰＵ＃１
１ｄ    パケット処理回路
２ａ    ＣＰＵ＃Ａ
２ｃ    ＮＶＭ＃Ａ
２ｅ    パケット監視回路
２ｆ    アクセス生成回路
２ｈ    バッファＡ
２ｉ    バッファＢ
１０    情報処理システム
【図１】
2016151774.tif 000003
【図２】
2016151774.tif 000004
【図３】
2016151774.tif 000005
【図４】
2016151774.tif 000006
【図５】
2016151774.tif 000007
【図６】
2016151774.tif 000008
【図７】
2016151774.tif 000009
【図８】
2016151774.tif 000010
【図９】
2016151774.tif 000011
【図１０】
2016151774.tif 000012
【図１１】
2016151774.tif 000013
【図１２】
2016151774.tif 000014
【図１３】
2016151774.tif 000015
【手続補正書】
【提出日】平成29年10月6日(2017.10.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイスに対するアクセスを制御するプロセッサと、
前記プロセッサと前記デバイスとを接続する接続部と、
前記プロセッサから出力されたパケットに含まれるシーケンスを処理し、前記処理されたシーケンスを含むパケットを前記接続部を介して前記デバイスに出力するパケット処理部と
を備え、
前記パケット処理部は、
前記デバイスに障害を発生させる場合があるシーケンスをあらかじめ記憶する第１の記憶部と、
前記障害を回避するシーケンスを記憶する第２の記憶部と、
前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶部に記憶されたシーケンスであるか否かを判定する判定部と、
前記プロセッサから出力されたパケットに含まれるシーケンスが前記第１の記憶部に記憶されたシーケンスであると判定された場合に、前記デバイスに出力するパケットに含まれるシーケンスを前記第２の記憶部に記憶されたシーケンスを用いて調整する調整部と、
前記調整されたシーケンスを含むパケットを生成する生成部と
を有する情報処理装置。
【請求項２】
前記第２の記憶部は、メモリ空間、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）空間のアクセス順序、書き込みデータの変更、アクセスの削除、アクセスの追加、およびアクセスのタイミング変更の少なくとも１つの前記障害を回避するシーケンスを記憶する、請求項１に記載の情報処理装置。
【請求項３】
前記第１の記憶部は、前記デバイスに障害を発生させる場合がある複数のシーケンスをあらかじめ記憶し、
前記判定部は、前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶部に記憶されている前記各シーケンスであるか否かの判定を並列に実行する
請求項１または２に記載の情報処理装置。
【請求項４】
前記判定部は、前記プロセッサが出力した第１のシーケンスが、前記第１の記憶部の第１のアドレスに記憶されたシーケンスであると判定すると、前記第１のシーケンスに後続する第２のシーケンスが前記第１の記憶部の第２のアドレスに記憶されたシーケンスであるか否かを判定する処理を所定シーケンス数分繰り返す請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記プロセッサが出力したシーケンスを格納する複数の格納部と、
前記複数の格納部を介して所定シーケンス数遅延したシーケンス、および前記第１の記憶部に記憶されたシーケンスに対応して前記第２の記憶部から取得されたシーケンスのいずれかを選択する選択部と、
前記複数の格納部に格納されたシーケンスの廃棄と前記選択部による選択とを制御するバッファ制御部をさらに備える
請求項１から請求項４のいずれか１項に記載の情報処理装置。
【請求項６】
前記バッファ制御部は、前記シーケンスの廃棄と前記選択とによって、前記プロセッサが出力したシーケンスの遅延、廃棄、および複数のシーケンス間の入替、および複数のシーケンス間への他のシーケンスの挿入の少なくとも１つを実行する請求項５に記載の情報処理装置。
【請求項７】
情報処理装置と前記情報処理装置により使用されるデバイスとを有する情報処理システムにおいて、
前記情報処理装置は、
前記デバイスに対するアクセスを制御するプロセッサと、
前記プロセッサと前記デバイスとを接続する接続部と、
前記プロセッサから出力されたパケットに含まれるシーケンスを処理し、前記処理されたシーケンスを含むパケットを前記接続部を介して前記デバイスに出力するパケット処理部と
を備え、
前記デバイスに障害を発生させる場合があるシーケンスをあらかじめ記憶する第１の記憶部と、
前記障害を回避するシーケンスを記憶する第２の記憶部と、
前記プロセッサが前記デバイスを制御するために出力するシーケンスが前記第１の記憶装置に記憶されたシーケンスであるか否かを判定する判定部と、
前記プロセッサから出力されたパケットに含まれるシーケンスが前記第１の記憶装置に記憶されたシーケンスであると判定された場合に、前記デバイスに出力するパケットに含まれるシーケンスを前記第２の記憶装置に記憶されたシーケンスを用いて調整する調整部と、
前記調整されたシーケンスを含むパケットを生成する生成部と
を有する情報処理システム。
【請求項８】
デバイスに対するアクセスを制御するプロセッサから出力されたパケットを接続部を介して前記デバイスに出力する情報処理装置の制御プログラムであって、
コンピュータに、
前記プロセッサから出力されたシーケンスが、前記デバイスに障害を発生させる場合があるシーケンスであるか否かを判定させ、
前記プロセッサから出力されたシーケンスが前記デバイスに障害を発生させる場合があるシーケンスであると判定された場合に、前記デバイスに出力するパケットに含まれるシーケンスを、記憶部に記憶された前記障害を回避するシーケンスを用いて調整させ、
前記調整されたシーケンスを含むパケットを生成させ、
前記生成されたパケットを前記接続部を介して前記デバイスに出力させる
情報処理装置の制御プログラム。
【国際調査報告】
2016151774.tif 000016
2016151774.tif 000017
2016151774.tif 000018
2016151774.tif 000019