(57)【要約】  本発明を適用した１システムは、データ処理を行う処理装置から送信された通信単位データを受信した場合に、受信した通信単位データから予め定めたデータをトレース情報として抽出し、受信した通信単位データを計数する。受信した通信単位データの履歴情報は、抽出されたトレース情報、及び計数結果から得られる統計情報のなかから選択する。選択した履歴情報は、処理装置が使用可能な記憶装置に記録する。
2012108024.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を行う処理装置から送信された通信単位データを受信した場合に、該受信した通信単位データから予め定めたデータをトレース情報として抽出する情報抽出手段と、
前記処理装置が使用可能な記憶装置にアクセスするアクセス手段と、
前記受信した通信単位データを計数する計数手段と、
前記情報抽出手段が抽出したトレース情報、及び前記計数手段による計数結果から得られる統計情報のなかで前記記憶装置に格納すべき対象を前記受信した通信単位データの履歴情報として選択し、該選択した履歴情報を前記アクセス手段により前記記憶装置に格納させる情報選択手段と、
を具備することを特徴とする中継装置。
【請求項２】
請求項１記載の中継装置であって、
前記情報抽出手段は、予め設定された内容に従って、前記受信した通信単位データのなかから選択した通信単位データのトレース情報を抽出する。
【請求項３】
請求項１記載の中継装置であって、
前記計数手段は、前記受信した通信単位データを予め指定された種類毎に分けて計数する。
【請求項４】
請求項１、２、または３記載の中継装置であって、
前記記憶装置へのアクセスが行われる状況を表す状況情報を取得する情報取得手段、を更に具備し、
前記情報選択手段は、前記情報取得手段が取得した状況情報を基に、前記トレース情報、及び前記統計情報のなかから前記履歴情報とする対象を選択する。
【請求項５】
請求項４記載の中継装置であって、
前記アクセス手段は、前記記憶装置へのアクセスの内容を表す要求データを格納する記憶手段を有し、
前記情報取得手段は、前記状況情報として、前記記憶手段に格納された要求データのなかで未処理の要求データの数が所定数以上か否かを表す要求量情報を取得し、
前記情報選択手段は、前記情報取得手段が取得した前記要求量情報が表す未処理の要求データの数が前記所定数以上か否かにより、前記履歴情報として前記トレース情報、あるいは前記統計情報を選択する。
【請求項６】
請求項１、４、または５記載の中継装置であって、
接続された外部装置と通信を行う通信手段と、
前記記憶装置からデータを読み出す要求を前記外部装置から前記通信手段が受信した場合に、前記アクセス手段に前記記憶装置からデータを読み出させ、読み出されたデータを前記通信手段に出力して、該通信手段を介して、該読み出されたデータを前記外部装置に送信させるアクセス制御手段と、
を更に具備する。
【請求項７】
データ処理を行う処理装置から送信された通信単位データを受信して中継する中継装置が、
前記処理装置から送信された前記通信単位データを受信した場合に、該受信した通信単位データから予め定めたデータをトレース情報として抽出し、
前記受信した通信単位データを予め指定された種類毎に計数し、
前記トレース情報、及び前記種類毎の計数結果から得られる統計情報のなかで選択した対象を中継の履歴情報として前記中継装置がアクセス可能な記憶装置に格納させる、
ことを特徴とする中継履歴記録方法。
【請求項８】
データ処理を行う複数の処理装置と、
前記複数の処理装置のうちの１つ以上が使用可能な記憶装置と、
請求項１記載の中継装置と、
を具備することを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理を行う処理装置間で送受信される通信単位データ（例えばパケット）を中継する技術に関する。
【背景技術】
【０００２】
データ処理を行う処理装置間では、データはパケットに代表される予め定めた形式の通信単位データ（以降「パケット」と表記）に分けて送受信される。通常、処理装置内でのデータの転送速度は、処理装置間を結ぶ通信経路のデータの転送速度と比較して非常に高速である。このこともあり、処理装置におけるパケットの送受信は中継装置を介して行うようになっているのが普通である。【０００３】
中継装置のなかには、障害発生時の対応等のために、パケットの中継動作を表す履歴情報を記録できるものがある。履歴情報の記録・保存には、ＲＡＭ等の比較的に高速なメモリが用いられるのが普通である。大量の履歴情報を記録する場合、中継装置と接続されたメモリが履歴情報の記録に用いられる。中継装置とは別に用意されたメモリに履歴情報を記録するのは、大容量のメモリが安価に入手できるようになったのが理由の一つである。【０００４】
中継装置に大容量のメモリを搭載させるような場合、中継装置の製造コストは大幅に上昇し、開発期間もより長くなる。このようなことから、安価に入手できるメモリの採用には、中継装置に大容量のメモリを搭載させる場合と比較して、製造コストをより抑えることができる、開発期間をより短縮できる、といった利点がある。【０００５】
中継装置と接続されたメモリは、履歴情報の記録のみに用いられるとは限らない。つまり履歴情報を記録させるメモリは、中継装置が他の用途に、或いは中継装置とは別の装置により使用されることが考えられる。そのように複数用途に用いられるメモリ（以降便宜的に「共有メモリ」と表記）では、例えば中継装置とは別の装置によるアクセスが共有メモリに集中する。つまり、共有メモリでは単位時間当たりのアクセス要求数が非常に多くなる可能性がより高くなる。【０００６】
別の装置による共有メモリへのアクセスが集中している状況下での中継装置による履歴情報の記録は、別の装置による共有メモリへのアクセスを阻害させることになる。別の装置がＣＰＵ（Central Processing Unit）のようなデータ処理を行う処理装置であれば、ＣＰＵによる共有メモリへのアクセスが阻害されることにより、データの処理速度が大きく低下する可能性がある。ＣＰＵにおけるデータの処理速度の大幅な低下は、装置全体の性能を大きく悪化させる可能性があることから、望ましくない。それにより、共有メモリに履歴情報を記録する場合、中継装置とは別の装置によるアクセスを考慮することが重要と考えられる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−３０７６８１号公報
【特許文献２】特開平１１−３１２０９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、複数用途に用いられるメモリへのアクセス状況に対応して、メモリに通信単位データの中継動作を表す履歴情報を記録できる技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明を適用した１システムでは、データ処理を行う処理装置から送信された通信単位データ（例えばパケット）を受信した場合に、該受信した通信単位データから予め定めたデータをトレース情報として抽出する情報抽出手段と、処理装置が使用可能な記憶装置にアクセスするアクセス手段と、受信した通信単位データを計数する計数手段と、情報抽出手段が抽出したトレース情報、及び計数手段による計数結果から得られる統計情報のなかで記憶装置に格納すべき対象を受信した通信単位データの履歴情報として選択し、該選択した履歴情報をアクセス手段により記憶装置に格納させる情報選択手段と、を具備する。
【発明の効果】
【００１０】
本発明を適用した１システムでは、複数用途に用いられるメモリへのアクセス状況に対応して、メモリに通信単位データの中継動作を表す履歴情報を記録できる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態によるデータ処理装置の構成を説明する図である。
【図２】本実施形態による中継装置を搭載したＮＣ（ノードコントローラ）により中継されるパケットの構成を説明する図である。
【図３】本実施形態による中継装置を搭載のＮＣに接続されたメモリのアドレスマップを説明する図である。
【図４】本実施形態による中継装置を搭載のＮＣの構成を説明する図である。
【図５】トレース記録回路、ＭＣの構成を説明する図である。
【図６】トレース記録回路の具体的な構成例を説明する図である。
【図７】比較部の構成を説明する図である。
【図８】トレース記録回路の設定に用いられる設定ファイルの内容を説明する図である。
【図９】本実施形態による中継装置を搭載のＮＣによりメモリに格納される履歴情報を説明する図である。
【図１０】トレース記録回路を設定する場合に実行される処理の流れを表すフローチャートである。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態によるデータ処理装置の構成を説明する図である。
データ処理装置（コンピュータ）は、それぞれが１台のコンピュータに相当する複数のシステムボード１をグローバルシステムバス２に接続することにより、システムボード１間でのデータの送受信が可能な構成となっている。ここでは、システムボード１としてシステムボード１ａ〜１ｃの３つを図１に表している。【００１３】
各システムボード１には、ＣＰＵ１１と、ＣＰＵ１１に接続されたメモリ（例えばＳＤＲＡＭモジュール）１２、１３とを含むノード（図１には２つ表記）が複数、搭載され、各ノードのＣＰＵ１１は互いに接続されている。それにより、図１のコンピュータではNUMA（Non-Uniform Memory Access）が採用されている。また、各ノードのＣＰＵ１１はＮＣ（ノードコントローラ）１４と接続され、ＮＣ１４にもメモリ（例えばＳＤＲＡＭモジュール）１５、１６が少なくとも接続されている。ここでは便宜的に、各ＣＰＵ１１に接続されたメモリ１２、１３、及びＮＣ１４に接続されたメモリ１５、１６には、例えば信頼性（安全性）の向上のために、同じデータが格納されると想定する。【００１４】
各ＣＰＵ１１には、メモリ１２、１３にアクセスするためにＭＣ（Memory Controller）１１ａが搭載されている。各ＣＰＵ１１は、例えばＳＳＤ（Solid State Drive）、或いはハードディスク装置であるストレージ１８が接続可能であり、システムボード１ｃでは、ＣＰＵ１１にストレージ１８が接続されている。【００１５】
特には図示していないが、各ＣＰＵ１１、或いは所定のＣＰＵ１１には、起動用のＢＩＯＳ（Basic Input/Output System）等が格納された例えばＲＯＭが接続されている。例えばＲＯＭは、システムボード１毎に少なくとも１つのＣＰＵ１１に接続されている。これは、システムボード１内のＣＰＵ１１間の通信により、システムボード１内の全てのＣＰＵ１１がＲＯＭのＢＩＯＳをロードできるようにするためである。ＢＩＯＳをロードしたＣＰＵ１１は別のシステムボード１等からのデータの取得が可能になるため、ＯＳ（Operating System）、及びアプリケーションプログラム等は任意の場所に格納させることができる。【００１６】
各ＮＣ１４にもストレージ１７が接続可能であり、図１の例では、システムボード１ｃに搭載されたＮＣ１４にはストレージ１７が接続されている。ＮＣ１４は、システムボード１間のグローバルシステムバス２を介したデータの送受信を中継する。それにより、本実施形態による中継装置はＮＣ１４に搭載されている。本実施形態によるデータ処理装置は、このＮＣ１４を搭載することで実現されている。【００１７】
データの送受信は、図２に表すような構成の通信単位データであるパケットを用いて行われる。このパケットは、図２に表すように、パケットの宛先となるＣＰＵ１１を表す宛先ＩＤ、パケットの送信元ＣＰＵ１１を表す送信元ＩＤ、パケットの識別用のユニークなＩＤ（図２中「ＵＩＤ」と表記）、パケットにより要求される内容を表すリクエストタイプ（図２中「Ｒｅｑ  Ｔｙｐｅ」と表記）、リクエストタイプにより指定される内容のアクセスを行うべきアドレス、及びデータ本体が格納されるデータ部を備えた構成となっている。宛先ＩＤ、送信元ＩＤ、ＵＩＤ、リクエストタイプ、及びアドレスはヘッダ部を構成する。【００１８】
パケットの構成は、図２に表すようなものに限定されない。また、通信単位データは、パケット以外のものであっても良い。
図２に表すようなパケットを用いたデータの送受信は、以下のようにして行われる。ここではシステムボード１ａの１つのＣＰＵ１１がシステムボード１ｂの１つのＣＰＵ１１ｂからデータを取得する場合を例にとって説明する。図１中、システムボード１ａのデータを要求する要求元のＣＰＵ１１ａは「リクエスタ」と表記している。【００１９】
システムボード１ａのＣＰＵ１１は、システムボード１ｂのＣＰＵ１１宛てに、必要なデータの送信を要求するパケットを生成してシステムボード１ａのＮＣ１４に送信する（シーケンスＳ１）。このとき生成されるパケットの宛先ＩＤ、送信元ＩＤは、システムボード１ａ内部で用いられるものである。このことから、システムボード１ａのＮＣ１４は、システムボード１ａのＣＰＵ１１ａから受信したパケットの宛先ＩＤ、送信元ＩＤをシステムボード１間で用いられるものに変換し、この変換を行った後のパケットをグローバルシステムバス２に出力する。それにより、システムボード１ｂのＮＣ１４は、システムボード１ａからグローバルシステムバス２に出力されたパケットを取り込む（以上、シーケンスＳ２）。【００２０】
システムボード１ｂのＮＣ１４は、取り込んだパケットの宛先ＩＤ、送信元ＩＤをシステムボード１ｂ内部で用いられるものに変換し、変換を行った後のパケットをシステムボード１ｂのＣＰＵ１１ｂに送信する（シーケンスＳ３）。パケットを受信したＣＰＵ１１ｂは、そのパケットで指定されたデータを例えば自身に接続されているメモリ１２、或いは１３から読み出し、読み出したデータをデータ部に格納したパケットを生成し、ＮＣ１４に送信する（シーケンスＳ４）。【００２１】
システムボード１ｂのＮＣ１４は、受信したパケットの宛先ＩＤ、送信元ＩＤをシステムボード１間で用いられるものに変換し、変換を行った後のパケットをグローバスシステムバス２に出力する。それにより、システムボード１ａのＮＣ１４は、グローバルシステムバス２に出力されたパケットを取り込む（以上、シーケンスＳ５）。【００２２】
システムボード１ａのＮＣ１４は、取り込んだパケットの宛先ＩＤ、送信元ＩＤをシステムボード１ａ内部で用いられるものに変換し、変換を行った後のパケットをＣＰＵ（リクエスタ）１１ａに送信する（シーケンスＳ６）。それにより、ＣＰＵ１１ａは、指定したデータをシステムボード１ｂのＣＰＵ１１ｂから取得する。【００２３】
図１に表すような構成のデータ処理装置では、上記のようにシステムボード１間でパケット（データ）の送受信が行われる。パケットの送受信は、比較的に伝送速度が低速なグローバルシステムバス２を介して行われるため、システムボード１、及びデータ処理装置の各処理性能にグローバルシステムバス２を介したパケットの送受信が大きく影響する。このこともあり、各システムボード１のＮＣ１４は、パケットの中継動作を表す履歴情報をメモリ１５、１６に記録する。記録した履歴情報は、次期製品の開発時のシミュレーション、発生したエラーの原因の究明、性能問題を発生させるアクセスパターンの解析等に用いられる。【００２４】
図３は、ＮＣ１４に接続されたメモリ１５、１６のアドレスマップを説明する図である。メモリ１５、１６には、図３に表すように、パケットの中継動作を表す履歴情報の格納用にトレース（Ｔｒａｃｅ）記録領域が設けられ、他の領域は例えば各システムボード１の各ＣＰＵ１１が使用可能になっている。図３に表記の「ＯＳが使用可」は各ＣＰＵ１１が使用可能であることを表している。また、「ＯＳが使用不可」は、ここではＮＣ１４のみが使用可能であることを表している。ＮＣ１４のみが使用可能とは、より具体的には、ＮＣ１４のみがデータを格納できることを意味する。「開始Ａｄｄｒｅｓｓ」はトレース記録領域における先頭アドレス、「上限Ａｄｄｒｅｓｓ」はトレース記録領域における最終アドレスである。【００２５】
複数のシステムボード１は、複数のパーティションに分割される場合がある。その場合、各システムボード１のＮＣ１４に接続されたメモリ１５、１６は、同じパーティションに属する各システムボード１に搭載された各ＣＰＵ１１が使用可能となる。ここでは便宜的に、各システムボード１のＮＣ１４に接続されたメモリ１５、１６は、全てのシステムボード１に搭載された全てのＣＰＵ１１が使用可能と想定する。【００２６】
図３に表すように、各ＮＣ１４が履歴情報を格納するメモリ１５、１６は各システムボード１の各ＣＰＵ１１も使用可能となっている。そのように複数の装置が使用可能、つまり複数の用途に用いられるメモリ１５、１６では、単位時間当たりのアクセス要求数が非常に多くなる可能性がある。メモリ１５、１６を使用可能な１つ以上のＣＰＵ１１によるアクセスが集中している状況下でのＮＣ１４による履歴情報の記録は、そのＣＰＵ１１によるアクセスを阻害させることになる。このアクセスの阻害は、ＣＰＵ１１、更にはデータ処理装置全体の処理能力を低下させる。このことから、本実施形態では、ＮＣ１４に、メモリ１５、１６へのアクセスの状況に応じた履歴情報を自動的に格納できるようにしている。以降、ＮＣ１４について詳細に説明する。【００２７】
図４は、ＮＣ１４の構成を説明する図である。
図４に表すように、ＮＣ１４は、ＣＰＵ１１から送信されたパケットを受信するパケット受信部４１、ＣＰＵ１１にパケットを送信するパケット送信部４２、グローバルシステムバス２に伝送されたパケットを受信するパケット受信部４３、グローバルシステムバス２にパケットを出力するパケット送信部４４、パケットの中継を制御するパケット制御部４５を備える。更に、メモリ１５、１６にアクセスするＭＣ（Memory Controller）４６、履歴情報の格納を制御するトレース記録回路４７、及びマネジメントボード２１との接続用のＳＣ（Sideband Controller）４８を備える。マネジメントボード２１は、例えばデータ処理装置を管理するための装置である。図４では、同じシステムボード１内に存在するＣＰＵ１１は便宜的に一つのみ表しているが、ＣＰＵ１１はシステムボード内に複数存在する。パケット受信部４１及びパケット送信部４２もＣＰＵ１１毎に存在する。【００２８】
パケット制御部４５は、パケット判定部４５ａ、スヌープ発行部４５ｂ、リクエスト変換部４５ｃ、及び２つのセレクタ４５ｄ、４５ｅを備える。
パケット判定部４５ａは、パケット受信部４１或いは４３からパケットを入力すると、入力したパケットが要求する内容を特定し、スヌープ発行部４５ｂあるいはリクエスト変換部４５ｃのうちの少なくとも一方に指示する。【００２９】
複数のＣＰＵが存在するデータ処理装置では、或るメモリに格納されたデータを１つ以上のＣＰＵがキャッシュメモリに保存している場合がある。このため、キャッシュメモリとメモリのコヒーレンシを保つ必要がある。本実施形態では、このコヒーレンシの実現にスヌープ方式を採用している。スヌープ発行部４５ｂは、コヒーレンシを実現させるためにパケットの１種であるスヌープ・メッセージを発行する。コヒーレンシの実現は、スヌープ方式以外の方式を用いて行っても良い。ディレクトリ方式等の他の既存の方式を採用しても良い。【００３０】
キャッシュメモリ中のデータ（キャッシュライン）は、Ｍ（Modified）、Ｅ（Exclusive）、Ｓ（Shared）、Ｉ（Invalid）の４状態の何れかの状態となっている。Ｍ状態とは、データが当該キャッシュメモリのみに存在し、メモリ（データが格納されたメモリ）上の値からデータが変更されている状態である。Ｅ状態とは、データは当該キャッシュメモリのみに存在するが、メモリ上の値と一致している状態である。Ｓ状態とは、複数のキャッシュメモリにデータが存在している状態である。Ｉ状態とは、キャッシュメモリ内のデータが無効となっている状態である。これら４状態の何れであるかを表す情報は、通常、キャッシュラインのタグに格納される。パケットでは、この情報はリクエストタイプに反映される。【００３１】
例えばＭ状態のデータをメモリ１２、１３から取得する場合、メモリ１２、１３からデータを読み出す前に、キャッシュメモリに存在する変更されたデータをメモリ１２、１３に書き込まなければならない。また、Ｓ状態のデータをメモリ１２、１３に書き込む場合、他のキャッシュメモリに存在するデータはＩ状態に移行させなければならない。このようなことから、コヒーレンシを実現させるためのスヌープ・メッセージもグローバルシステムバス２に出力される。それにより、パケット判定部４５ａは、パケット受信部４３からパケットの他に、スヌープ・メッセージを入力する。割り込み用のメッセージであるパケットもパケット受信部４３からパケット判定部４５ａに出力される。【００３２】
パケット判定部４５ａは、パケット受信部４３からスヌープ・メッセージを入力した場合、スヌープ発行部４５ｂに指示して、スヌープ・メッセージを発行させる。このスヌープ・メッセージは、例えば同じシステムボード１内の各ＣＰＵ１１に送信させるものである。それにより、発行させたスヌープ・メッセージは、セレクタ４５ｄ、及びパケット送信部４２を介して、同じシステムボード１内の各ＣＰＵ１１に送信させる。【００３３】
パケット受信部４３からスヌープ・メッセージとは異なるパケットを入力した場合には、パケット判定部４５ａは、入力したパケットをリクエスト変換部４５ｃに出力し、宛先ＩＤ、送信元ＩＤを変換させたパケットをリクエスト変換部４５ｃに生成させる。生成されたパケットはセレクタ４５ｄ及び対応するパケット送信部４２を介して対応するＣＰＵ１１に送信される。宛先ＩＤ、送信元ＩＤの変換は、例えば宛先ＩＤは同じシステムボード１内で用いられるローカルなＣＰＵ１１のＩＤに、送信元ＩＤはＮＣ１４自身のローカルなＩＤに置き換えることで行われる。【００３４】
パケットをパケット受信部４１から入力した場合、パケット判定部４５ａは、スヌープ・メッセージを発行させるべきか否か判定することにより、必要に応じて、スヌープ・メッセージの発行をスヌープ発行部４５ｂに指示する。スヌープ・メッセージを発行させる場合、パケット判定部４５ａは、セレクタ４５ｅを介してスヌープ・メッセージをグローバルシステムバス２に出力させた後、入力したパケットをリクエスト変換部４５ｃに出力し、宛先ＩＤ、送信元ＩＤを変換させたパケットをリクエスト変換部４５ｃに生成させる。リクエスト変換部４５ｃにより生成されたパケットはセレクタ４５ｅを介してグローバルシステムバス２に出力される。スヌープ・メッセージを発行させる必要がない場合、パケット判定部４５ａは、入力したパケットを直ちにリクエスト変換部４５ｃに出力し、宛先ＩＤ、送信元ＩＤを変換させたパケットをリクエスト変換部４５ｃに生成させる。宛先ＩＤ、送信元ＩＤの変換は、例えば宛先ＩＤは、送信すべきシステムボード１のＣＰＵ１１に割り当てられたシステムボード１間に用いられるグローバルなＩＤに、送信元ＩＤは、ＮＣ１４自身のグローバルなＩＤに置き換えることで行われる。【００３５】
パケット受信部４１及び４３が受信するパケットのなかには、ＮＣ１４に接続されたメモリ１５、１６へのアクセスを要求するものがありうる。そのようなパケットを入力した場合、パケット判定部４５ａは、ＭＣ４６にメモリ１５、１６へのアクセスを指示する。そのアクセスを行った結果がＭＣ４６から通知されるのを待って、パケット判定部４５ａはリクエスト変換部４５ｃに指示し、応答となるパケットを生成させる。生成させたパケットはセレクタ４５ｅを介してグローバルシステムバス２に出力させるか、或いはセレクタ４５ｄ及び対応するパケット送信部４２を介して対応するＣＰＵ１１に送信させる。図４中に表記の「NC DIMM  アクセス」は、メモリ１５、１６にデータを書き込む、或いはデータを読み出すアクセスである。【００３６】
パケット判定部４５ａは、パケット受信部４１或いは４３からパケットを受信した場合、受信したパケットをトレース記録回路４７に出力する。本実施形態では、パケットのヘッダ部（図２）のみを履歴情報として格納する対象としている。以降、パケットのヘッダ部は「トレースデータ」と呼び、パケット判定部４５ａはトレースデータのみトレース記録回路４７に出力すると想定する。なお、トレースデータは、パケット全体であっても良い。この場合、パケットから格納すべき対象となるデータを抽出しなくとも良い。また、トレースデータはヘッダ部の一部を省いたものであっても良い。【００３７】
トレース記録回路４７は、パケット判定部４５ａから入力したトレースデータを履歴情報として一時的に保存するか、或いはトレースデータを用いて別の履歴情報を生成し、ＭＣ４６を介してメモリ１５、１６に格納する。図４中に表記の「Write  リクエスト」は、メモリ１５、１６に履歴情報を格納させるためのリクエストである。生成する履歴情報、及び履歴情報のメモリ１５、１６への格納に係る設定は、ＳＣ４８に接続されたマネジメントボード２１を用いて行うことができる。また、ＣＰＵ１１により、パケット制御部４５を介して行わせることもできる。【００３８】
図５は、トレース記録回路、ＭＣの構成を説明する図である。
トレース記録回路４７は、トレースバッファ４７ａ、イベント(Event）カウンタ４７ｂ、リクエスト生成回路４７ｃ、アドレス（Address）カウンタ４７ｄ、及び収集モードレジスタ４７ｃを備えている。図５中の「Trace Data」は、履歴情報として格納する対象となりうるデータである。上記のように、ここでは「Trace Data」はパケットのヘッダ部が相当する。【００３９】
トレースバッファ４７ａは、パケットのなかで履歴情報として格納する対象となるデータを一時的に保存するためのバッファである。本実施形態では、パケットのなかでヘッダ部、つまりトレースデータのみが一時保存の対象となる。【００４０】
イベントカウンタ４７ｂは、予め指定した種類のパケットが出現した回数をカウントするためのものである。本実施形態では、イベントカウンタ４７ｂによるカウント値（計数値）も履歴情報として格納可能としている。このカウント値は、特定のパケットが出現した頻度を表す累積（統計）情報である。【００４１】
履歴情報は、図３に表すように、メモリ１５、１６に設けられたトレース記録領域に格納する。本実施形態では、メモリ１５、１６の上限アドレスまで履歴情報を格納すると、開始アドレスから履歴情報を記録（上書き）するようにしている。アドレスカウンタ４７ｄは、そのようにサイクリックにトレース記録領域への履歴情報の格納を実現させるためのものである。収集モードレジスタ４７ｅは、履歴情報の記録（収集）に係わる収集モードを表す値の格納用である。【００４２】
本実施形態では、収集モードとして２種類を用意している。一つは、履歴情報の収集を優先させるトレース優先モードであり、もう一つは、メモリ１５、１６へのアクセスを優先させるアクセス優先モードである。トレース優先モードの設定時には、収集モードレジスタ４７ｅには論理値の１が格納され、アクセス優先モードの設定時には、収集モードレジスタ４７ｅには論理値の０が格納される。以降「論理値」は単に「値」とも表記する。【００４３】
リクエスト生成回路４７ｃは、収集モードレジスタ４７ｅに格納された値に応じて、トレースバッファ４７ａに保存されたトレースデータ、及びイベントカウンタ４７ｂによるカウント値の何れかをメモリ１５、１６に格納すべき対象として選択する。【００４４】
トレースデータ、及びカウント値の何れも、パケットの中継動作を表す履歴情報である。しかし、データ量は大きく異なる。例えば宛先ＩＤ、送信元ＩＤ、ＵＩＤ、リクエストタイプ、及びアドレスにそれぞれ１、１、０．５、０．５及び５バイトが割り当てられている場合、トレースデータとして記録されるヘッダ部全体は８バイトのデータとなる。それにより、１パケット毎に、履歴情報の格納に８バイトの領域が必要となる。【００４５】
これに対し、カウント値では、例えば４バイトを割り当てると、４．２×１０９以上のパケットに対応できることとなる。このため、たとえイベントカウンタ４７ｂを多数、用意したとしても、ヘッダ部を用いたトレースデータをパケット毎に格納する場合と比較して、全体のデータ量は大幅に抑えられる。従って、トレースデータをパケット毎に格納する場合と比較して、メモリ１５、１６にアクセスする頻度も大幅に抑えることができる。【００４６】
このようなことから、本実施形態では、トレース優先モードではトレースデータを履歴情報として記録し、アクセス優先モードではカウント値を履歴情報として記録するようにしている。それにより、メモリ１５、１６へのアクセスが集中する、つまり単位時間当たりのアクセス要求数が非常に多い状況下であっても、そのアクセスが集中する度合いを抑えつつ、履歴情報の収集を行えるようにしている。このため、メモリ１５、１６を使用可能なＣＰＵ１１にとっては、履歴情報の記録によってメモリ１５、１６へのアクセスが阻害されるのが抑えられることになる。この結果、ＣＰＵ１１が使用するメモリ１５、１６を履歴情報の記録に使用したとしても、ＣＰＵ１１の処理速度の低下、更にはデータ処理装置全体の処理速度の低下が共に抑えられることとなる。【００４７】
メモリ１５、１６にデータを書き込む単位データに複数のトレースデータを格納できる場合、１単位データに１トレースデータのみを格納するのは効率的ではない。このことから、本実施形態では、トレースバッファ４７ａはメモリ１５、１６の単位データ分のトレースデータをまとめる用途にも用いている。ここでは便宜的に、単位データは６４バイト、１トレースデータは８バイトと想定する。この想定では、１単位データに最大８トレースデータを格納することができる。【００４８】
上記のような構成のトレース記録回路４７は、パケット制御部４５を介した設定に従って動作させることができる。図５中に表記の「Enable/Disable」は、履歴情報の記録を有効にさせるか否かの設定が可能であることを表している。【００４９】
ＭＣ４６は、リクエストバッファ（図５中「Ｒｅｑ  Ｂｕｆｆｅｒ」と表記）４６ａ、ライトデータバッファ（図５中「Ｗｒｉｔｅ  Ｄａｔａ  Ｂｕｆｆｅｒ」と表記）４６ｂ、リードデータバッファ（図５中「Ｒｅａｄ  Ｄａｔａ  Ｂｕｆｆｅｒ」と表記）４６ｃ、及びＩＯ部４６ｄを備えている。【００５０】
リクエストバッファ４６ａは、リクエストの内容を表すリクエストデータを複数、格納可能なバッファである。ライトデータバッファ４６ｂは、メモリ１５、１６に格納する対象となるデータを複数、格納可能なバッファである。リードデータバッファ４６ｃは、メモリ１５、１６から読み出されたデータが複数、格納可能なバッファである。ＩＯ部４６ｄは、リクエストバッファ４６ａに格納されたリクエストデータを参照し、リクエストデータに従ってメモリ１５、１６にアクセスする装置である。【００５１】
リクエストバッファ４６ａに格納されるリクエストデータは、例えばアクセスの種類、及びアクセスすべきアドレスを少なくとも表すものである。パケット制御部４５から出力されるリクエストデータ（図５中「ＤＩＭＭ  リード／ライトリクエスト」と表記）は、例えばパケットのヘッダ部から生成される。パケットのデータ部に格納されたデータは、ライトデータバッファ４６ｂに格納させるデータ（図５中「ＤＩＭＭライトＤａｔａ」と表記）となりうる。リードデータバッファ４６ｃから読み出されたデータ（図５中「ＤＩＭＭリードＤａｔａ」と表記）は、パケットのデータ部に格納するデータとなりうる。【００５２】
ＩＯ部４６ｄは、リクエストバッファ４６ａから未処理のリクエストデータを取得し、取得したリクエストデータが指定するアクセスをメモリ１５、１６に対して行う。例えばリクエストデータがライトアクセスを指定していた場合、ＩＯ部４６ｄは、ライトデータバッファ４６ｂの対応するエントリからデータを取得し、リクエストデータが指定するメモリ１５、１６のアドレスに取得したデータを書き込む。また、リクエストデータがリードアクセスを指定していた場合、ＩＯ部４６ｄは、リクエストデータが指定するメモリ１５、１６のアドレスに格納されたデータを読み出し、リードデータバッファ４６ｃの対応するエントリに読み出したデータを書き込む。そのようにして、リクエストデータが指定するアクセスを行った後、ＩＯ部４６ｄは、アクセスの完了をリクエストバッファ４６ａに通知する。その通知により、リクエストバッファ４６ａは、リクエストされたアクセスの完了を通知するメッセージである完了通知をパケット制御部４５に出力する。この完了通知は、例えばリクエストデータを用いて生成されるものである。【００５３】
トレース記録回路４７のリクエスト生成回路４７ｃは、アドレスカウンタ４７ｄが出力するアドレスの値を用いてリクエストデータを生成し、生成したリクエストデータをＭＣ４６に出力する。出力されたリクエストデータは、ＭＣ４６のリクエストバッファ４６ａのなかで空いているエントリに格納される。トレースバッファ４７ａに格納されたトレースデータ、及びイベントカウンタ４７ｂのカウント値は、ライトデータバッファ４６ａに格納すべきデータとしてＭＣ４６に出力される。【００５４】
リクエストバッファ４６ａは、例えばリクエストデータを格納するエントリに空きが無くなるか、或いはエントリの空きが設定値以下となった場合、その旨を表すビジー（Ｂｕｓｙ）信号をアクティブにする。アクティブとしたビジー信号は、エントリの空きが設定値以上となった場合に、イナクティブとされる。【００５５】
このようなことから、ビジー信号がアクティブとなっている状況では、メモリ１５、１６へのアクセスが集中していることになる。そのような状況では、ＣＰＵ１１によるメモリ１５、１６へのアクセスを阻害させないようにするのが望ましい。このため、本実施形態では、ビジー信号がアクティブとなった場合、収集モードの設定に係わらず、履歴情報としてイベントカウンタ４７ｂのカウント値を格納するようにしている。それにより、ビジー信号がアクティブの状況下では、ＣＰＵ１１によるメモリ１５、１６へのアクセスを優先させるようにして、ＣＰＵ１１の処理速度の低下を抑えるようにしている。そのようにメモリ１５、１６に記録すべき履歴情報を自動的に選択することから、複数用途に用いられるメモリ１５、１６へのアクセス状況に適切に対応できることとなる。ビジー信号は、例えばアクティブのときの論理値は１、イナクティブのときの論理値は０の信号である。【００５６】
ビジー信号は、トレースバッファ４７ａに未格納のトレースデータが存在する状況でアクティブになる可能性がある。このことから、本実施形態では、リクエストバッファ４７ａは、リクエストデータを格納するエントリの空きが設定値以下となった場合に、ビジー信号をアクティブにする。それにより、リクエスト生成回路４７ｃは、ビジー信号がアクティブとなった場合、トレースバッファ４７ａに格納されているトレースデータをメモリ１５、１６に格納させる。【００５７】
図６は、トレース記録回路の具体的な構成例を説明する図である。次に図６を参照して、トレース記録回路４７の具体的な構成について詳細に説明する。
パケット制御部４５から入力したトレースデータは、ＯＲゲート６２に出力される。ＯＲゲート６２は、例えばトレースデータの各ビットの値の論理和をＡＮＤゲート６３に出力する。トレースデータの何れかのビットの論理値は１となる。このため、パケット制御部４５からトレースデータが入力された場合、ＯＲゲート６２は論理値が１の論理和を出力することとなる。【００５８】
ＡＮＤゲート６３は、ＯＲゲート６２の出力する論理和の他に、トレース指示レジスタ６１に格納された値の反転された値を入力し、論理積をカウンタ６４に出力する。トレース指示レジスタ６１は、複数ビットのデータを格納できるレジスタであり、履歴情報の記録を行わせるか否かの設定に用いられる。【００５９】
例えばトレース指示レジスタ６１に１ビットのデータを格納させる場合、履歴情報を記録させるためには「０」、履歴情報を記録させないためには「１」を格納させる。ＡＮＤゲート６３には、１ビットの値が反転されて入力される。このため、履歴情報を記録させない設定が行われていた場合、ＡＮＤゲート６３が出力する論理積の値は常に０となる。履歴情報を記録させる設定が行われていた場合、ＯＲゲート６２が出力する論理和の値が１となることで、ＡＮＤゲート６３が出力する論理積の値は１となる。【００６０】
カウンタ６４は、ＡＮＤゲート６３が出力する論理積の値が１となる度に、カウント値をインクリメントする。このため、カウンタ６４のカウント値は、パケット制御部４５がトレース記録回路４７に出力したトレースデータ数に一致する。カウンタ６４は、カウント値が上限値に達すると、カウント値を０にする。それにより、カウンタ６４は、パケット制御部４５がトレース記録回路４７に出力したトレースデータ数をサイクリックに計数する。カウンタ６４のカウント値は統計情報用バッファ６５に出力される。【００６１】
パケット制御部４５から入力したトレースデータは、マスク回路８２にも出力される。マスク回路８２は、ＡＮＤゲート６３が出力する論理積の値が１となっている場合に、入力したトレースデータを出力する回路である。マスク回路８２から出力されたトレースデータは、比較部６６、複数のイベントカウンタ７７、及びトレースバッファ６９にそれぞれ入力される。【００６２】
比較部６６は、パケット制御部４５が出力したトレースデータのなかから履歴情報として記録する対象となりうるトレースデータを抽出するためのものである。具体的には、例えば図７に表すような構成が採用されている。ここで図７を参照して、比較部６６の構成について詳細に説明する。【００６３】
比較部６６は、図７に表すように、３つの部分比較部９１〜９３、及び各部分比較部９１〜９３の出力信号の論理積を取るＡＮＤゲート９４を備えている。ＡＮＤゲート９４が出力する論理積が、比較部６６の出力信号となる。【００６４】
トレースデータ、つまりパケットのヘッダ部は、図２に表すような構成となっている。このことから本実施形態では、履歴情報として記録する対象となりうるトレースデータは、宛先ＩＤ、送信元ＩＤ、及びリクエストタイプの組み合わせで指定できるようにしている。それにより、３つの部分比較部９１〜９３は、宛先ＩＤ、送信元ＩＤ、及びリクエストタイプのデータ別に、トレースデータが指定されたものか否かを特定するために設けている。ここでは便宜的に、部分比較部９１〜９３はそれぞれ、宛先ＩＤ用、送信元ＩＤ用、及びリクエストタイプ用と想定する。【００６５】
部分比較部９１の変換器１０１は、トレースデータ中の宛先ＩＤを抽出し、抽出した宛先ＩＤを、その複数ビットのなかで１ビットのみ値を１とする表現に変換する。このような変換を行うため、宛先ＩＤに１バイトが割り当てられている場合、変換器１０１は２５６ビットのなかの１ビットのみ値を１とすることで宛先ＩＤを変換する。例えば、宛先ＩＤの値が０であれば、宛先ＩＤの２５６ビットのうち、最下位に位置するビットの値のみ１とする。宛先ＩＤの値が１であれば、宛先ＩＤの２５６ビットのうち、最下位の１つ上に位置するビットの値のみ１とする。宛先ＩＤの値が２５５であれば、宛先ＩＤの２５６ビットのうち、最上位に位置するビットの値のみ１とする。変換器１０１が出力する各１ビットの値はそれぞれ、対応付けられたＡＮＤゲート１０４に出力される。例えば宛先ＩＤの最下位のビットの値はＡＮＤゲート１０４−１に出力され、最下位の１つ上に位置するビットの値はＡＮＤゲート１０４−２に出力される。ＡＮＤゲート１０４は変換器１０１が宛先ＩＤのビット数（＝２５６）分、存在することから、ＡＮＤゲート１０４−１〜ＮのＮの値は２５６となる。【００６６】
レジスタ１０３は、宛先ＩＤのビット数分のデータを格納できるレジスタである。レジスタ１０３は、例えば宛先ＩＤのビットのなかで有効とすべきビットを指定するデータが格納されるレジスタである。上記のように変換器１０１が２５６ビットの値を出力する場合、例えば宛先ＩＤが０のトレースデータのみを対象とするのであれば、レジスタ１０３には、最下位のビットのみ値が１のデータが格納される。全ての宛先ＩＤのトレースデータを対象とするのであれば、全てのビットの値が１のデータがレジスタ１０３に格納される。【００６７】
レジスタ１０３の各ビットの値はそれぞれ、対応付けられたＡＮＤゲート１０４に入力される。それにより、例えばレジスタ１０３の最下位に位置するビットの値はＡＮＤゲート１０４−１に入力される。このため、各ＡＮＤゲート１０４は、変換器１０１から出力される１ビットの値と、レジスタ１０３の１ビットの値との論理積を出力する。ＯＲゲート１０５は、各ＡＮＤゲート１０４が出力する論理積を入力し、入力した論理積の論理和を出力する。この論理和が部分比較部９１の出力信号としてＡＮＤゲート９４に入力される。【００６８】
特定の宛先ＩＤを持つトレースデータを記録させる場合、ユーザーであるオペレータは、その宛先ＩＤを値として指定する。その値の指定により、レジスタ１０３には指定された値に応じたデータが格納される。このため、各ＡＮＤゲート１０４−１〜Ｎのうちの一つが出力する論理積の値は１となり、ＯＲゲート１０５の出力する論理和の値も１となる。この結果、部分比較部９１は、トレースデータの選択が有効となっている場合、レジスタ１０３によって指定される宛先ＩＤのトレースデータが比較部６６に入力されることによって、値が１の信号を出力することとなる。【００６９】
レジスタ１０３に全てのビットが０のデータを格納させた場合、変換器１０１が出力するビットの値に係わらず、各ＡＮＤゲート１０４−１〜Ｎの出力する論理積の値は０となる。このため、ＯＲゲート１０５の出力する論理和の値も常に０となる。【００７０】
他の部分比較部９２及び９３も部分比較部９１と同様の構成である。このため、便宜的に部分比較部９１の構成要素に付した符号をそのまま用いて、部分比較部９２及び９３を説明する。【００７１】
トレースデータの選択が有効となっている状況では、部分比較部９２は、レジスタ１０３により指定される送信元ＩＤのトレースデータの入力によって、値が１の信号を出力する。同様に部分比較部９３は、レジスタ１０３により指定されるリクエストタイプのトレースデータの入力によって、値が１の信号を出力する。このようなことから、ＡＮＤゲート９４の出力する論理積、つまり比較部６６の出力する信号の値は、予め指定された宛先ＩＤ、送信元ＩＤ、及びリクエストタイプを全て備えたトレースデータの入力によって１となる。【００７２】
上記のような構成、及び動作の比較部６６は、イベントカウンタ７７にも比較部７７ａとして含まれる。このため、比較部７７ａの説明でも、便宜的に部分比較部９１の構成要素に付した符号をそのまま用いる。【００７３】
各イベントカウンタ７７の比較部７７ａは、比較部６６と同様に、オペレータが指定した宛先ＩＤ、送信元ＩＤ、及びリクエストタイプを全て備えたトレースデータの入力によって値が１の信号を出力する。比較部７７ａの３つの部分比較部９１〜９３のうちの何れかのレジスタ１０３の値が０になると、比較部７７ａの出力信号の値は常に０となる。【００７４】
比較部７７ａの出力信号は、ＡＮＤゲート７７ｂに入力される。ＡＮＤゲート７７ｂは、比較部７７ａの出力信号と、ＡＮＤゲート７９の出力する論理積の値を反転させた値の論理積を出力する。ＡＮＤゲート７９の出力する論理積はカウンタ７７ｃに出力される。カウンタ７７ｃは、値が１の信号を入力する度に、カウント値をインクリメントするカウンタである。カウンタ７７ｃのカウント値は、パルス発生器８０の出力する信号パルスによってクリアされる。パルス発生器８０は、ＡＮＤゲート７９の論理積の値の１から０への変化を検出して信号パルスを出力する。このため、トレース優先モードの設定時において、カウンタ７７ｃは、ビジー信号がアクティブとなってからイナクティブとなるまでの期間（以降「ビジー期間」と呼ぶ）、オペレータが指定のトレースデータがトレース記録回路４７に入力された回数を計数することとなる。カウンタ７７ｃ、つまりイベントカウンタ７７が計数を行っている期間は「計数対象期間」と総称する。ビジー情報がイナクティブとなる前に履歴情報を記録させない設定が行われた場合には、計数対象期間はビジー情報がアクティブとなってから設定変更によるトレース指示レジスタ６１の値の書き換えが行われるまでの間となる。カウンタ７７ｃのカウント値は統計情報用バッファ６５に出力される。履歴情報を記録させない設定とは、トレース指示レジスタ６１の値を１から０に書き換えることに相当する。【００７５】
カウンタ７７ｃのカウント値は、比較部７７ａにより、オペレータが指定した宛先ＩＤ、送信元ＩＤ、及びリクエストタイプを全て備えたトレースデータが計数対象期間内にトレース記録回路４７に入力された数となる。それにより、各イベントカウンタ７７は、オペレータの指定別に、トレースデータを計数することができる。宛先ＩＤ、送信元ＩＤ、及びリクエストタイプの組み合わせ毎に、各イベントカウンタ７７にトレースデータの計数を行わせることができる。このため、各イベントカウンタ７７によるカウント値は、オペレータの分類に応じた統計情報となる。【００７６】
上記のように、比較部７７ａの３つの部分比較部９１〜９３のうちの何れかのレジスタ１０３の値が０となっている状況では、比較部７７ａの出力信号の値は常に０となる。このため、ＡＮＤゲート７７ｂは値が１の論理積を出力しない。それにより、レジスタ１０３の何れか一つでも０が格納されているイベントカウンタ７７は機能しないこととなる。このため、レジスタ１０３は、イベントカウンタ７７を機能させるか否かの制御に用いられる。【００７７】
上記比較部６６の出力する信号はＡＮＤゲート６７に入力される。ＡＮＤゲート６７には他に、ＡＮＤゲート７９の出力する論理積が入力される。ＡＮＤゲート７９は、収集モードレジスタ７８に格納されたデータとビジー信号の論理積を出力する。収集モードレジスタ７８に格納されたデータの値は設定されている収集モードの種類を表す。上記のように、収集モードレジスタ７８に格納される値は、トレース優先モードの設定時には１、アクセス優先モードの設定時には０である。ビジー信号の値は、アクティブ時には０、イナクティブ時には１である。このため、比較部６６から論理値が１の信号を入力している状況では、トレース優先モードが設定され、且つビジー信号がイナクティブとなっている場合に、ＡＮＤゲート６７の出力する論理積の値は１となる。【００７８】
ＡＮＤゲート６７の出力する論理積は、カウンタ６８に入力される。カウンタ６８が出力するカウント値は、トレースバッファ６９に入力される。トレースバッファ６９には、マスク回路８２を介してトレースデータが出力される。【００７９】
上記のように、メモリ１５、１６にデータを書き込む単位は６４バイトである。トレースデータは８バイトである。このようなデータ量の違いにより、トレースバッファ６９は６４バイト（＝８トレースデータ）分のトレースデータをまとめる用途で用いられる。カウンタ６８が出力するカウント値は、トレースバッファ６９内にトレースデータを格納する場所（レコード）の指定に用いられる。このために、カウンタ６８はＡＮＤゲート６７から入力する論理積の値が１になる度に、カウント値をインクリメントする。カウント値は比較器７１の出力する信号の値が例えば１となった場合にクリア、つまりカウント値を０にセットする。【００８０】
比較器７１は、格納数レジスタ７０のデータの値とカウンタ６８のカウント値を比較し、両者が一致した場合に、値が１の信号を出力する。８トレースデータをトレースバッファ６９に格納させる場合、カウンタ６８に０〜７の間のカウント値を出力させれば良い。このため、格納数レジスタ７０には値が７のデータを格納すれば良い。それにより、カウンタ６８が７のカウント値を出力した場合、トレースバッファ６９には８個目のトレースデータが格納され、その後にカウント値は０にセットされる。【００８１】
比較器７１の出力信号は、カウンタ７５に入力される。カウンタ７５は、メモリ１５、１６に履歴情報を格納すべきアドレスを生成するためのものである。メモリ１５、１６に格納する単位データは６４バイトであることから、カウンタ７５は、比較器７１の出力信号の値が１となる度に、それまでのカウント値に６４を加算する。【００８２】
比較器７１の出力信号はリクエスト出力部８３に入力される。リクエスト出力部８３は、他にカウンタ７５のカウント値を入力する。それにより、リクエスト出力部８３は、比較器７１の出力信号の値が１になる度に、入力したカウント値を用いてリクエストデータを生成し、ＭＣ４６に出力する。【００８３】
カウンタ７５には、開始アドレスレジスタ７３、及び比較器７４が接続されている。比較器７４は、カウンタ７５の出力するカウント値と上限アドレスレジスタ７２に格納された値とを比較し、両者が一致した場合に、値が１の信号を出力する。【００８４】
開始アドレスレジスタ７３にデータとして格納される値は、メモリ１５、１６に確保されたトレース記録領域の先頭アドレスを表すものである（図３）。上限アドレスレジスタ７２にデータとして格納される値は、メモリ１５、１６に確保されたトレース記録領域の上限アドレスに１を加算した値を表すものである（図３）。そのような値を条件アドレスレジスタ７２に格納するのは、メモリ１５、１６に格納するデータは６４バイト単位だからである。【００８５】
カウンタ７５は、比較器７４の出力信号の値が１となった場合、開始アドレスレジスタ７３に格納された値を設定する。それにより、カウンタ７５は、開始アドレスレジスタ７３の値を初期値、上限アドレスレジスタ７２の値を上限値として、６４単位でカウント値をアップさせるカウンタとして機能する。【００８６】
リクエスト出力部８３は、値が１の信号を入力する度に、カウンタ７５のカウント値をアドレスとするリクエストデータを生成する。カウンタ７５は、その後、それまでのカウント値に６４を加える。６４を加えたカウント値が上限アドレスレジスタ７２の値と等しい場合、比較器７４が出力する信号の値が１となって、カウンタ７５は開始アドレスレジスタ７３の値をカウント値として初期設定する。このようなことから、上限アドレスレジスタ７２に格納する値は、トレース記録領域の上限アドレスに１を加算した値となる。【００８７】
上記比較部６６、イベントカウンタ７７（比較部７７ａ）、トレース指示レジスタ６１、上限アドレスレジスタ７２、及び開始アドレスレジスタ７３の設定は、図８に表すような設定ファイルを用いて行われる。より具体的には、例えばシステムボード１に搭載されたＣＰＵ１１のうちの一つが設定ファイルを参照し、パケット制御部４５を介して各設定を行う。【００８８】
この設定ファイルには、図８に表すように、履歴情報の記録に係わる基本情報、履歴情報を記録させるか否かに係わるイベント設定情報、記録対象とすべきトレースデータに係わるトレースマスク（Ｔｒａｃｅ  Ｍａｓｋ）情報、取得すべき統計情報に係わるＰＡ（Ｐａｃｋｅｔ  Ａｃｃｕｍｕｌａｔｉｏｎ）設定情報、が記述される。【００８９】
基本情報としては、初期設定すべき収集モードを指定するトレースモード情報、トレース記憶領域のサイズを指定するトレースサイズ情報、トレース記憶領域を開始アドレス及び上限アドレスで指定するためのアドレス情報、が存在する。図８中に表記の「Ｔｒａｃｅ開始  Ｓｙｓｔｅｍ  Ａｄｄｒｅｓｓ」「Ｔｒａｃｅ開始  Ｓｙｓｔｅｍ  Ａｄｄｒｅｓｓ」はそれぞれ、開始アドレス用のアドレス情報、上限アドレス用のアドレス情報を表している。トレースサイズ情報、及びアドレス情報は、一方により他方の内容を特定できることから、そのうちの一つを記述すれば良い。【００９０】
イベント情報（図８中「初期Ｅｖｅｎｔ」と表記）は、トレース指示レジスタ６１に初期値として格納すべき値を指定する。図８中の「開始Ｅｖｅｎｔ」「停止Ｅｖｅｎｔ」はそれぞれ、履歴情報の記録を行う設定、履歴情報の記録を行わない設定、を表している。トレース指示レジスタ６１には、「開始Ｅｖｅｎｔ」の設定時には０、「停止Ｅｖｅｎｔ」の設定時には１が書き込まれる。【００９１】
トレースマスク情報は、比較部６６の設定に係わる。比較部６６では、対象とすべきパケットの宛先ＩＤ、送信元ＩＤ、及びリクエストタイプをそれぞれ設定することができる。このことから、トレースマスク情報として、対象とすべき宛先ＩＤ、送信元ＩＤ、及びリクエストタイプをそれぞれ数値で記述することができる。【００９２】
宛先ＩＤ、送信元ＩＤ、及びリクエストタイプの数値による記述は、変換器１０１による変換結果を想定して行われる。それにより、記述された数値の２進数表現のデータがレジスタ１０３に格納される。【００９３】
変換器１０１は、上記のように、出力対象とするビットのなかで１ビットのみ値を１にする。このため、パケットの指定を有効とさせる場合、レジスタ１０３に記述される数値は１以上となる。出力対象とするビットのなかで１ビットのみ値を１にすることから、変換器１０１が１６ビットで値を表現するのであれば（出力対象とするビット数が１６であれば）、図８中に表記の「０ｘＦＦＦＦ」は、全てのパケットを記録対象にすることを表している。つまり、例えば宛先ＩＤでは、トレースマスク情報の値が「０ｘＦＦＦＦ」になっている場合、全ての宛先ＩＤを、その値に係わらず全て記録対象にすることを表している。図８では、宛先ＩＤ、送信元ＩＤ、及びリクエストタイプとしてそれぞれ「０ｘＦＦＦＦ」を表記している。この表記は、ここでは全てのトレースデータが記録対象であることを表すために行っている。【００９４】
トレースマスクに記述された数値が０であれば、対応するレジスタ１０３には全てのビットの値が０のデータが格納される。比較部６６が有するレジスタ１０３のなかで全てのビットの値が０のデータが格納されたレジスタ１０３が存在する場合、比較部６６は値が１の信号を出力しない。このため、記録対象とするパケットを指定する場合、トレースマスク情報では、宛先ＩＤ、送信元ＩＤ、及びリクエストタイプの何れも１以上の数値を記述させることが必要となっている。【００９５】
ＰＡ設定情報は、イベントカウンタ７７毎に記述される。上記のように、各イベントカウンタ７７には比較部７７ａが含まれている。比較部７７ａは比較部６６と基本的に同じ構成である。このため、ＰＡ設定情報でも、イベントカウンタ７７毎に、対象とすべき宛先ＩＤ、送信元ＩＤ、及びリクエストタイプをそれぞれ数値で記述するようになっている。「カウンタ１」〜「カウンタ３」はそれぞれ、異なるイベントカウンタ７７を表している。イベントカウンタ７７を機能させない場合、ＰＡ設定情報のうち、例えば宛先ＩＤ、送信元ＩＤ、及びリクエストタイプのうちの少なくとも一つの数値を０にすれば良い。有効とさせるイベントカウンタ７７の選択は、その選択用の情報を用意して、用意した情報により行えるようにしても良い。【００９６】
図６の説明に戻る。
ＭＣ４６は、リクエストデータの入力により、メモリ１５、１６に格納すべきデータを取り込む。入力したリクエストデータは、リクエストバッファ４６ａに格納され、取り込まれたデータはライトデータバッファ４６ｂに格納される（図５）。【００９７】
ＭＣ４６が取り込むデータは、セレクタ７６から出力される。セレクタ７６は、トレースバッファ６９のデータ、及び統計情報用バッファ６５のデータのうちの一方を選択して出力する。【００９８】
統計情報用バッファ６５には、カウンタ６４のカウント値、各イベントカウンタ７７のカウント値が出力され、各パルス発生器８０、８１の出力する信号パルスに応じたカウント値を取り込む。【００９９】
パルス発生器８０は、ＡＮＤゲート７９の論理積の値の１から０への変化を検出して信号パルスを出力する。これに対し、パルス発生器８１は、ＡＮＤゲート７９の論理積の値の０から１への変化を検出して信号パルスを出力する。このため、パルス発生器８１は、トレース優先モードの設定時において、ビジー信号がアクティブからイナクティブに変化することで信号パルスを出力する。【０１００】
統計情報用バッファ６５は、パルス発生器８０の出力する信号パルスにより、カウンタ６４のカウント値を取り込む。パルス発生器８１の出力する信号パルスにより、カウンタ６４のカウント値、及び各イベントカウンタ７７のカウント値を取り込む。各パルス発生器８０、８１の出力する信号パルスによりカウンタ６４のカウント値をそれぞれ取り込むのは、計数対象期間、例えばビジー信号がアクティブとなっている期間、トレース記録回路４７に出力されたトレースデータの数を特定できるようにするためである。それにより、トレース記録回路４７に出力されたトレースデータのなかで、各イベントカウンタ７７によって計数されたトレースデータの割合を把握することができる。【０１０１】
セレクタ７６は、通常、トレースバッファ６９のデータを選択し、パルス発生器８１が信号パルスを出力した場合に、統計情報用バッファ６５のデータを選択する。また、パルス発生器８０、８１の出力する信号パルスは、リクエスト出力部８３、及びカウンタ６４にそれぞれ入力される。このため、ビジー信号がアクティブとなってパルス発生器８０がパルス信号を出力した場合、リクエスト出力部８３はリクエストデータをＭＣ４６に出力し、トレースバッファ６９のデータはセレクタ７６を介してＭＣ４６に取り込まれることになる。その後、ビジー信号がイナクティブとなってパルス発生器８１がパルス信号を出力した場合、リクエスト出力部８３はリクエストデータをＭＣ４６に出力し、統計情報用バッファ６５のデータはセレクタ７６を介してＭＣ４６に取り込まれることになる。【０１０２】
図９は、メモリ１５、１６に記録される履歴情報を説明する図である。図９中「Ｎｏｔ  Ｂｕｓｙ」「Ｂｕｓｙ」はそれぞれ、イナクティブのビジー信号、アクティブのビジー信号を表している。各ラインは、メモリ１５、１６に一度に書き込まれる単位データを表している。図９は、トレース優先モードの設定時において、ビジー信号がイナクティブの状態→アクティブの状態→イナクティブの状態に順次変化した場合に、各状態、及び状態変化時に単位データとしてメモリ１５、１６に書き込まれる履歴情報を表している。【０１０３】
ビジー信号がイナクティブの状態では、図９に表すように、１単位データとして８トレースデータ、つまり８パケット分のヘッダ部がメモリ１５、１６に書き込まれる。ビジー信号がアクティブになると、その時にトレースバッファ６４に格納されているトレースデータが１単位データとしてメモリ１５、１６に書き込まれる。図９では、ビジー信号がアクティブになった時には、１単位データに６トレースデータのみが含まれている。【０１０４】
ビジー信号がアクティブになると、統計情報用バッファ６５にはカウンタ６４のカウント値が格納される。その後、ビジー信号がイナクティブになると、カウンタ６４のカウント値、及び各イベントカウンタ７７のカウント値が統計情報用バッファ６５に格納され、統計情報用バッファ６５に格納されたデータはセレクタ７６を介してＭＣ４６に出力される。このため、統計情報用バッファ６５に格納されたデータが１単位データとしてメモリ１５、１６に書き込まれる。図９に２つ表記した「パケットカウント値」は、端に位置する方はビジー信号がアクティブになったことで統計情報用バッファ６５に格納されたカウンタ６４のカウント値、他方はビジー信号がイナクティブになったことで統計情報用バッファ６５に格納されたカウンタ６４のカウント値をそれぞれ表している。また、「第１のカウント値」「第２のカウント値」はそれぞれ、異なるイベントカウンタ７７のカウント値を表している。【０１０５】
図９に表すように、ビジー信号がアクティブになると、ビジー信号がイナクティブになるまでの間、トレース記録回路４６がデータ（履歴情報）の書き込みを要求するのは１回だけである。この１回の要求により、トレースバッファ６９に格納されているトレースデータをメモリ１５、１６に書き込ませる。このため、ＣＰＵ１１によるメモリ１５、１６へのアクセスを阻害するのを大幅に抑えることができる。それにより、履歴情報の記録に伴うデータ処理装置の性能悪化も最小限に抑えることができる。【０１０６】
アクセス優先モードの設定時には、ＡＮＤゲート７９の出力する論理積の値はビジー信号の値に係わらず、常に０になる。このため、各イベントカウンタ７７にカウントを行わせることは可能であるが、各イベントカウンタ７７のカウント値はそのままではメモリ１５、１６に記録されない。従って、履歴情報の記録によってＣＰＵ１１のメモリ１５、１６へのアクセスが阻害されるようなことを回避させることができる。それにより、中継するパケットが多いシステムボード１では、ＮＣ１４にアクセス優先モードを設定すれば良い。図６には、アクセス優先モードの設定時に各イベントカウンタ７７のカウント値をメモリ１５、１６に記録させるための構成要素は省略しているが、マネジメントボード２１は各イベントカウンタ７７のカウント値を取得することが可能となっている。【０１０７】
図５及び図６では省略しているが、ＮＣ１４は、ＭＣ４６を介してメモリ１５、１６からデータを読み出すためのリード回路８４を備えている。リード回路８４は、サイドバンドコントローラ４８と接続されており、サイドバンドコントローラ４８と通信可能な装置（ここではマネジメントボード２１）からの要求に応じてＭＣ４６に対し、データの読み出しを要求するためのリクエストデータ（図６中「Ｒｅａｄ  Ｒｅｑｕｅｓｔ」と表記）を出力する。リクエストデータの出力により得られたデータは、リード回路８４からサイドバンドコントローラ４８に出力され、サイドバンドコントローラ４８を介して、データの読み出しを要求したマネジメントボード２１に送信される。【０１０８】
このようにして、ＮＣ１４と接続された装置、つまりマネジメントボード２１は、ＮＣ１４を介してメモリ１５、１６にアクセスできるようになっている。それにより、マネジメントボード２１は、ＣＰＵ１１にメモリ１５、１６へのアクセスのための処理を行わせることなく、メモリ１５、１６にアクセスできるようになっている。このため、メモリ１５、１６に記録された履歴情報を取得する場合、何れのシステムボード１上のＣＰＵ１１に対しても処理の実行を阻害させない。従って、接続された外部装置が直接的にＮＣ１４を介してメモリ１５、１６にアクセス可能にすると、データ処理装置全体の処理速度が低下する状況となるのをより回避させることができる。【０１０９】
図６では、ＳＣ４８からトレース指示レジスタ６１を指す矢印を描いている。これは、マネジメントボード２１への操作により、ＳＣ４８を介してトレース指示レジスタ６１の値を書き換えられることを表している。他にトレース記録回路４７が備えた各種レジスタの値もＳＣ４８を介して書き換えることができる。それにより、オペレータは、記録すべきトレースデータの種類、カウントすべきトレースデータの種類を随時、変更させることもできる。【０１１０】
図６に表すような構成において、図５に表す構成との対応関係は、例えば次のように云うことができる。即ちトレースバッファ４７ａはトレースバッファ６９に相当すると云うことができる。イベントカウンタ４７ｂは全てのイベントカウンタ７７に相当すると云うことができる。アドレスカウンタ４７ｄは上限アドレスレジスタ７２、開始アドレスレジスタ７３、及びカウンタ７５に相当すると云うことができる。収集モードレジスタ４７ｅは収集モードレジスタ７８に相当すると云うことができる。図６のトレース記録回路４７の他の構成要素は、リクエスト生成回路４７ｃに相当すると云うことができる。【０１１１】
上記のように、トレース記録回路４７への設定は、図８に表す設定ファイルを参照して行われる。次に図１０を参照して、トレース記録回路４７に設定を行う動作について詳細に説明する。図１０は、トレース記録回路４７を設定する場合に実行される処理の流れを表すフローチャートである。図１０では、各システムボード１の１つのＣＰＵ１１が、起動時に、ＢＩＯＳによって予め定めた格納場所に格納されている設定ファイルを読み出してトレース記録装置４７の設定を行うことを想定している。【０１１２】
オペレータは、例えばマネジメントボード２１を操作して、格納場所に設定ファイルが存在していなければその格納場所に設定ファイルを作成し、各情報として所望の内容を記述する。格納場所に既に設定ファイルが存在していれば、設定ファイルを編集し、変更すべき情報の記述を更新する。そのようにして、所望の内容の設定ファイルを用意する（以上、Ｓ１１）。【０１１３】
ＢＩＯＳをロードしたＣＰＵ１１は別のシステムボード１に存在するストレージ（例えば図１に表すストレージ１７、１８）、及びマネジメントボード２１がアクセス可能なストレージ２２の何れからもデータを取得することができる。このため、設定ファイルの格納場所は特に限定されるものではない。ストレージ２２から設定ファイルを読み出すようにした場合、データ処理装置の電源をオフさせた状態でも設定ファイルの作成、及び編集を行うことができる。【０１１４】
所望の内容の設定ファイルを用意したオペレータは、例えばマネジメントボード２１からデータ処理装置のリセットを指示する（Ｓ１２）。ここでのリセットとは、例えばデータ処理装置への電源の投入、或いは再起動である。このリセットの指示は、マネジメントボード２１とは別のコンソールが存在するのであれば、マネジメントボード２１以外のコンソールを用いて行っても良い。設定ファイルの作成、或いは編集も、マネジメントボード２１以外のコンソールを用いて行えるのであれば、マネジメントボード２１を用いずに行っても良い。【０１１５】
上記リセットの指示により、各システムボード１の各ＣＰＵ１１は再起動を行い、ＢＩＯＳをロードする（Ｓ１４）。ＢＩＯＳをロードしたＣＰＵ１１は、必要なプログラム（ドライバ）の導入等を含むシステムの初期化処理を行い（Ｓ１２）、メモリ１２、１３、更にはメモリ１５、１６のテスト、及び初期化を行う（Ｓ１３）。その後、ＣＰＵ１１は、メモリ１５、１６のなかでＮＣ１４が使用可能とするトレース記録領域（図３）を割り当てる（Ｓ１６）。このときの割り当ては、予め設定された内容に従って行うデフォルト設定であり、この割り当てによって、トレース記録回路４７の上限アドレスレジスタ７２、開始アドレスレジスタ７３にそれぞれ値が格納される。上限アドレスレジスタ７２、開始アドレスレジスタ７３への値の格納は、パケット制御部４５を介して行われる。【０１１６】
次にＣＰＵ１１は、予め設定された格納場所から設定ファイルを読み込む（Ｓ１７）。その読み込みによって設定ファイルを取得したＣＰＵ１１は、設定ファイルに従って、トレース記録回路４７の設定を行う（Ｓ１８）。この設定により、パケット制御部４５を介してトレース記録回路４７の各種レジスタに格納すべき値が格納される。このため、トレース指示レジスタ６１に値として０が格納された場合、収集モードレジスタ７８に格納された値に応じて、トレースバッファ６９へのトレースデータの格納、或いはイベントカウンタ７７によるカウントが開始されることとなる。【０１１７】
図１０に表す各処理において、Ｓ１１及びＳ１２は、マネジメントボード２１等のコンソールを使用するユーザー（オペレータ）の操作に応じて、そのコンソールによって実行される。Ｓ１３〜Ｓ１８は、ユーザーの指示によって、ＢＩＯＳをロードするＣＰＵ１１によって実行される。Ｓ１３〜Ｓ１８は、データ処理装置への電源投入時にもＣＰＵ１１によって実行される。Ｓ１７、Ｓ１８は、必要に応じてマネジメントボード２１に実行させるようにしても良い。【０１１８】
なお、本実施形態では、トレース優先モードの設定時、ビジー期間のみ各イベントカウンタ７７に計数を行わせるようにしているが、これはビジー期間以外ではトレースデータを履歴情報として記録するためである。つまり、ビジー期間以外にＮＣ１４が受信したパケットは、記録されたトレースデータによって特定できるからである。しかし、ビジー期間でもイベントカウンタ７７に計数を行わせ、例えば一定時間毎にカウント値を記録できるようにしても良い。このカウント値は、ビジー信号のイナクティブからアクティブへの変化により記録させるようにしても良い。【０１１９】
イベントカウンタ７７のカウント値はそのまま統計情報用バッファ６５に記録させている。これは、カウンタ６４のカウント値はビジー信号がアクティブになった時、ビジー信号がイナクティブになった時の両方で記録させるためである。ビジー信号がアクティブになっていたビジー期間内にトレース記録回路４７にパケット制御部４５から出力されたトレースデータ数を用いて、各イベントカウンタ７７がカウントしたトレースデータが出現する頻度等を特定できるためである。しかし、この頻度、つまりイベントカウンタ７７がカウントしたトレースデータが全体に占める割合はカウント値よりも少ないビット数で表現させても良いことから、カウント値の代わりに頻度等を統計情報として記録させるようにしても良い。カウンタ６４にビジー期間のトレースデータを計数させることにより、カウント６４の１カウント値のみを記録させるようにしても良い。【０１２０】
履歴情報として記録対象とする情報の切り換えは、ＭＣ４６（図５）が出力するビジー信号に着目して行っている。これは、ビジー信号はメモリ１５、１６へのアクセスを要求する余裕の有無を正確に表す情報だからである。メモリ１５、１６へのアクセスは、ＮＣ１４が単位時間当たりに受信するパケット数が多くなるほど多くなると考えられる。このことから、メモリ１５、１６へのアクセスを要求する余裕の有無は、例えばトレース記録回路４７にパケット制御部４５が出力するトレースデータ数を単位時間毎に計数し、その計数結果から判定するようにしても良い。【０１２１】
本実施形態によるデータ処理装置は、システムボード１を複数グローバルシステムバス２に接続した構成となっているが、システムボード１以外の処理装置を複数、接続した構成であっても良い。パケットを実際に生成する処理装置もＣＰＵに限定されるものではない。例えば処理装置はＧＰＵ（Graphics Processing Unit）であっても良い。中継装置は、ＣＰＵ、或いはＧＰＵから直接的にパケットを受信するものであっても良い。
【図１】
2012108024.tif 000003
【図２】
2012108024.tif 000004
【図３】
2012108024.tif 000005
【図４】
2012108024.tif 000006
【図５】
2012108024.tif 000007
【図６】
2012108024.tif 000008
【図７】
2012108024.tif 000009
【図８】
2012108024.tif 000010
【図９】
2012108024.tif 000011
【図１０】
2012108024.tif 000012
【国際調査報告】
2012108024.tif 000013
2012108024.tif 000014