(57)【要約】  【課題】  外部に取り付けた論理分析装置も追加のチップ上メモリアレイも用いずにコア命令トレースまたは相互接続トレースを収集するための方法および装置を提供する。  【解決手段】  分散型メモリを有するデータ処理システムにおいてメモリ内バストレーシングを行うための装置を開示する。この装置は、バストレースマクロ（ＢＴＭ）モジュールを含み、これは、データ処理システムにおいてメモリコントローラの１つ以上が認識するスヌープトラフィックを制御することができ、更に、トレースレコードを格納するために、メモリコントローラに取り付けられたローカルメモリを利用することができる。トレーシング動作のためＢＴＭモジュールがイネーブルされた後、ＢＴＭモジュールは相互接続上のトランザクションをスヌープし、これらのトランザクション内に含まれる情報を、メモリコントローラ内の書き込みバッファに一致する大きさのデータブロックにまとめる。【選択図】  図１
2004310749.tif 000002
【特許請求の範囲】
【請求項１】
相互接続に結合された分散型メモリを有するデータ処理システムにおいてバストレーシングを行うための装置であって、
前記相互接続に結合されたメモリコントローラと、
複数のマルチプレクサと、
前記相互接続と前記メモリコントローラとの間に、前記複数のマルチプレクサを介して接続されたバストレースマクロ（ＢＴＭ）モジュールであって、前記相互接続からのアドレストランザクションを選択的にインターセプトし、前記インターセプトしたアドレストランザクションを対応するトレースレコードに変換し、前記トレースレコードを前記メモリコントローラ内の書き込みバッファに書き込む、ＢＴＭモジュールと、
を具備する装置。
【請求項２】
前記ＢＴＭモジュールが前記選択的インターセプトを行っている場合に、前記複数のマルチプレクサは、前記アドレストランザクションが前記メモリコントローラに到達するのを防ぐ、請求項１の装置。
【請求項３】
前記マルチプレクサの１つは、前記相互接続からのスヌープアドレス／組み合わせ応答バスと、前記メモリコントローラのスヌープアドレス／組み合わせ応答インタフェースとの間の経路に配置されている、請求項１の装置。
【請求項４】
前記マルチプレクサの１つは、前記相互接続からのデータ／制御バスと、前記メモリコントローラの書き込みデータインタフェースとの間の経路に配置されている、請求項３の装置。
【請求項５】
前記ＢＴＭモジュールは、前記メモリコントローラの実メモリアドレス範囲に一致するアドレス範囲を含むためのベースアドレスレジスタを含む、請求項１の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にシステムデバッギングに関し、具体的には、相互接続のトレーシングを行うための方法および装置に関する。更に具体的には、本開示内容は、分散型メモリを有するデータ処理システムにおいてバストレーシングを行うための方法および装置に関する。
【背景技術】
【０００２】
技術が進歩するにつれて、単一のチップ内に集積しなければならない回路量はますます増えている。また、最先端の技術では、今やごく普通に、単一のモジュール基板上に多数のチップをパッケージングすることが可能となっている。更に、チップ内部およびチップ間の相互接続の双方において、動作クロック周波数はますます高くなっている。上述のような進歩は全て、より高い性能を有するシステムを生み出すものであるが、一方で、システム開発の間にいくつかの極めて難しい問題を生じる。
【０００３】
通常、新しいシステムを市場に出せるようになる前に、そのシステムのハードウエア設計に存在し得る何らかの論理的および／または電気的な欠陥を見出すため、実験室環境においてシステムの試験を行わなければならない。欠陥の一部を切り離すため、相互接続（またはバス）トランザクションの非常に長いトレースを捕捉することが、日常的に必要となる。また、システム開発中に広範囲に渡る性能モデリングおよび分析を行って、できる限り高い性能を達成可能とするように設計点を微調整する必要がある。性能モデリングおよび分析の一部として、市販のデータベースアプリケーション等の多くの一般的なアプリケーションによって用いられる典型的な命令シーケンスを表すトレースの捕捉が必要となる。時に、それらのトレースは、対象となる市販のアプリケーションを適切に表すために、極めて長くなることが避けられない。
【０００４】
従来、トレースの収集は、相互接続の外部にいくつかの論理分析装置を取り付けることによって行われている。論理分析装置は、接続されている相互接続と同じ速度でデータをサンプリングすることができなければならず、また、非常に長いトレースを格納するために極めて大きいメモリを有する必要がある。上述の技術的進展に伴って、従来のトレース収集方法は、いくつかの理由で機能しなくなっている。第１に、相互接続が高速化したため、ほとんどの既製品の論理分析装置は信頼性高くデータのサンプリングを行うには充分な速度ではなくなっており、充分に速いものであってもあまりにも高価すぎる。第２に、高速で動作可能な論理分析装置があっても、取り付けた論理分析装置によって相互接続にかかる負荷が増大し、相互接続が所望の周波数で機能しなくなるほどに相互接続の完全性が損なわれてしまう恐れがある。第３に、今日のパッケージング技術によって、相互接続は、単一のチップ内および／または多チップモジュール内に内蔵される傾向がある。このため、上述の２つの問題が克服可能であるとしても、相互接続が外部からアクセス可能でない場合には、役に立たない。
【０００５】
上述の問題を（部分的に）解決する従来の方法の１つは、チップ上の様々な重要位置にある小さいメモリのアレイの集積を利用して、内部で様々な相互接続のサンプリングを可能とするものである。かかる方法に伴う問題は、メモリアレイが極めて小さいサイズでなければならないことであり、これは、シリコン領域を追加するとコストがかかるため、記憶容量が限られていることを意味する。高度なデータ圧縮技法を用いても、それらの小さいメモリアレイの記憶容量は、複雑なシーケンスのデバッギングまたは性能分析に適したトレースの収集に有用であると考えられる記憶容量にはほど遠い。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従って、外部に取り付けた論理分析装置も追加のチップ上の小さいメモリアレイも用いることなく、非常に長いコア命令トレースまたは相互接続トレースを収集するための方法および装置を提供することが望ましいであろう。
【課題を解決するための手段】
【０００７】
本発明の好適な実施形態によれば、分散型メモリ対称型マルチプロセッサシステムは、各々がメモリモジュールに結合された多数の処理ユニットを含む。処理ユニットは各々、メモリコントローラおよびバストレースマクロ（ＢＴＭ）モジュールを含む。メモリコントローラは、対称型マルチプロセッサシステムのための相互接続に結合され、ＢＴＭモジュールは、２つのマルチプレクサを介して、相互接続とメモリコントローラとの間に接続されている。ＢＴＭモジュールは、相互接続からのアドレストランザクションを選択的にインターセプトし、インターセプトしたアドレストランザクションを対応するトレースレコードに変換する。次いで、ＢＴＭモジュールは、トレースレコードを、メモリコントローラ内に含まれる書き込みバッファ集合に書き込む。
【０００８】
本発明の全ての目的、機構、および利点は、以下の詳細な説明から明らかとなろう。
【０００９】
本発明自体、ならびにその使用の好適な形態、更に別の目的、および利点は、添付図面と関連付けて以下の例示的な実施形態の詳細な説明を読むことによって、最も良く理解されよう。
【発明を実施するための最良の形態】
【００１０】
Ｉ．分散型メモリシステム
ここで図面を参照し、特に図１を見ると、本発明の好適な実施形態を組み込んだ対称型マルチプロセッサ（ＳＭＰ）システムのブロック図が示されている。図示のように、ＳＭＰシステム１０は、相互接続２１を介して相互に接続された処理ユニット１１ａ〜１１ｎを含む。処理ユニット１１ａ〜１１ｎの各々は、中央演算処理装置（ＣＰＵ）、キャッシュメモリ、バスインタフェースユニット（ＢＩＵ）、バストレースマクロ（ＢＴＭ）モジュール、およびメモリコントローラを含む。例えば、処理ユニット１１ａは、ＣＰＵ１２ａ、キャッシュメモリ１３ａ、ＢＩＵ１４ａ、ＢＴＭモジュール１５ａ、およびメモリコントローラ１６ａを含み、処理ユニット１１ｂは、ＣＰＵ１２ｂ、キャッシュメモリ１３ｂ、ＢＩＵ１４ｂ、ＢＴＭモジュール１５ｂ、およびメモリコントローラ１６ｂを含む等である。処理ユニット１１ａから１１ｎの各々は、各メモリコントローラを介してメモリモジュールに結合されている。例えば、処理ユニット１１ａは、メモリコントローラ１６ａを介してメモルモジュール１７ａに結合され、処理ユニット１１ｂは、メモリコントローラ１６ｂを介してメモルモジュール１７ｂに結合されている等である。また、ＳＭＰシステム１０は、入力／出力チャネルコンバータ（ＩＯＣＣ）１８およびハードディスクアダプタ１９を介して相互接続２１に結合されたハードディスク２０も含む。
【００１１】
本実施形態では、ＳＭＰシステム１０の全システムメモリは、各メモリコントローラによって制御されるメモリモジュール１７ａ〜１７ｎに分散している。オペレーティングシステムは、全システムメモリのどの部分が様々なアプリケーションソフトウエアによってアクセス可能であるかを制御する。
【００１２】
ＩＩ．トレーシング装置
本発明の好適な実施形態として、ＢＴＭモジュール１５ａ〜１５ｎおよびメモリコントローラ１６ａ〜１６ｎを利用して、コアトレーシングおよび相互接続トレーシングを容易にする。全てのＢＴＭモジュール１５ａ〜１５ｎは対応する機能を提供し、全てのメモリコントローラ１６ａ〜１６ｎは対応する機能を提供するので、ＢＴＭモジュール１５ａおよびメモリコントローラ１６ａのみを詳細に説明する。ここで図２を参照すると、本発明の好適な実施形態による、メモリコントローラ１６ａに結合されたＢＳＭモジュール１５ａのブロック図が示されている。ＢＴＭモジュール１５ａは、いかなる所与の時点でも、相互接続２１からのトランザクション情報またはＣＰＵコアトレースバス２９からのＣＰＵコアトレーシング情報のいずれかを受け取ることができる。ＢＴＭモジュール１５ａのトレーシング動作は、シリアル通信（ＳＣＯＭ）バス３０を介してソフトウエアコマンドによって制御される。
【００１３】
メモリモジュール１７ａにも結合されたメモリコントローラ１６ａは、スヌープ応答インタフェース２４、スヌープアドレス／組み合わせ応答インタフェース２５、書き込みデータインタフェース２６、および読み取りデータインタフェース２７を含む。通常、相互接続２１からのトランザクション情報をスヌープした後、メモリコントローラ１６ａは、適切な時に、スヌープ応答インタフェース２４によって相互接続２１にスヌープ応答を供給することができる。更に、メモリコントローラ１６ａは、書き込みデータインタフェース２６によって相互接続２１から書き込み情報を受信し、読み取りデータインタフェース２７によって相互接続２１に読み取り情報を送信する。また、メモリコントローラ１６ａは、書き込みデータをメモリモジュール１７ａに転送する前に、書き込みデータを一時的に格納するためのいくつかの書き込みバッファ２８も含む。
【００１４】
本発明の好適な実施形態として、マルチプレクサ２２および２３を利用して、ＢＴＭモジュール１５ａのため、相互接続２１からのトランザクション情報をインターセプトする。マルチプレクサ２１は、相互接続２１からのスヌープアドレス／組み合わせ応答バス３７と、メモリコントローラ１６ａのスヌープアドレス／組み合わせ応答インタフェース２５との間の経路に配置されている。同様に、マルチプレクサ２３は、相互接続２１からのインバウンド書き込みデータ／制御バス３８と、メモリコントローラ１６ａの書き込みデータインタフェース２６との間の経路に配置されている。
【００１５】
相互接続トレーシングの間、ＢＴＭモジュール１５は、マルチプレクサ２２および２３をそれぞれ介して、相互接続２１上のどのトランザクションが、スヌープアドレス／組み合わせ応答インタフェース２５および書き込みデータインタフェース２６上でメモリコントローラ１６ａに見えるかを制御する。本実施形態では、ＢＴＭモジュール１５ａは、マルチプレクサ２２への選択線３１を用いることによって、トランザクション動作がメモリコントローラ１６ａのスヌープアドレス／組み合わせ応答インタフェース２５に届くのを防ぐことができる。同様に、ＢＴＭモジュール１５ａは、マルチプレクサ２３への選択線３１によって、書き込み情報がメモリコントローラ１６ａの書き込みデータインタフェース２６に届くのを防ぐことができる。
【００１６】
一方、ＢＴＭモジュール１５ａは、マルチプレクサ２２および２３によって、それ自身の情報をメモリコントローラ１６ａに供給することができる。本実施形態では、ＢＴＭモジュール１５ａは、書き込み線３２およびマルチプレクサ２２によって、メモリコントローラ１６ａ内に書き込みキューおよび対応する書き込みバッファ２８を割り当てることができる。同様に、ＢＴＭモジュール１５ａは、書き込み線３３およびマルチプレクサ２３によって、メモリコントローラ１６ａ内の書き込みバッファ２８にトレースレコードを書き込むことができる。
【００１７】
ＩＩＩ．基本的なトレーシング動作
相互接続トレーシングを可能とするため、ＢＴＭモジュール１５ａは、最初に、ＳＣＯＭバス３０を介して、ソフトウエアによって構成されて、ＢＴＭモジュール１５ａ内にイネーブルビット（図示せず）をセットする。また、初期構成は、ＢＴＭモジュール１５ａ内のベースアドレスレジスタ（ＢＡＲ）３４にアドレス範囲をロードして、システム初期化の間にメモリコントローラ１６ａがメモリモジュール１７ａのために最初に設定された実メモリアドレス範囲に一致させることも含む。かかるアドレス範囲は、ＳＭＰシステム（図１）の全システムメモリアドレス空間のうちの単一連続部分である。トレーシングが可能となった後、オペレーティングシステムは、他のあらゆるソフトウエアアプリケーションがメモリコントローラ１６ａおよびメモリモジュール１７ａにアクセスすることを防ぐ（他のソフトウエアアプリケーションは、メモリモジュール１７ｂ〜１７ｎ等、ＳＭＰシステム１０内の他のメモリコトローラに取り付けたメモリモジュールにはアクセスすることができる）。また、構成シーケンスは、ＢＴＭモジュール１５ａに命令し、選択線３１を介してマルチプレクサ２２および２３に指示して、インターセプト動作を開始し、メモリコントローラ１６ａのスヌープアドレス／組み合わせ応答インタフェース２５および書き込みデータインタフェース２６が相互接続２１から直接トランザクション情報を受信することができないようにする。
【００１８】
トレーシングが開始する前に、ＢＴＭモジュール１５ａは、書き込みコマンドをメモリコントローラ１６ａに送信し、これらは書き込みバッファ２８内でキューに入る。これらの書き込みコマンドに関連するアドレスは連続的であり、メモリコントローラ１６ａに設定されたメモリ空間の冒頭で開始する。次いで、キューに入った書き込み動作は、関連する書き込みデータパケットが書き込みデータインタフェース２６に到着するのを待つ。
【００１９】
ＢＴＭモジュール１５ａが、いずれかの有効なアドレストランザクションについて相互接続２１をインターセプトする用意ができると、トレーシングが開始する。有効なアドレストランザクションが検出されると、ＢＴＭモジュール１５ａは、検出したアドレストランザクションからトレースレコードを発生し、次いでこのトレースレコードを、書き込みデータインタフェース２６を介してメモリコントローラ１６ａ内の書き込みバッファ２８の１つに書き込む。
【００２０】
相互接続２１から更にアドレストランザクションがスヌープされると、ＢＴＭモジュール１５ａは、対応するトレースレコードをメモリコントローラ１６ａ内の書き込みバッファ２８に送信し続ける。書き込みバッファ２８の１つがいっぱいになると、ＢＴＭモジュール１５ａは、書き込みバッファ２８の次のものに移る。メモリ書き込みの完了時に書き込みバッファが使えるようになっていると、ＢＴＭモジュール１５ａは、書き込みコマンドをメモリコントローラ１６ａに送信して、書き込みバッファが使える状態であるのでそれらを再使用する。いったん書き込みバッファ２８の１つがいっぱいになると、メモリコントローラ１６ａは次に書き込みバッファ２８のその１つからメモリモジュール１７ａにトレースレコードを移す。書き込みコマンドをメモリコントローラ１６ａに送信する前に、ＢＴＭモジュール１５ａは、読み取り線３４を介してスヌープ応答インタフェース２４を監視して、メモリコントローラ１６ａがその時点で新しい書き込みコマンドを受け入れられるか否かを判定する。予め構成された停止点に達するまで、または（ＳＣＯＭバス３０を介して）ソフトウエアによってコマンドが発行されてＢＴＭモジュール１５ａにトレーシングの停止を命令するまで、書き込みコマンド／書き込みデータ処理はパイプラインで行われる。
【００２１】
トレーシングを停止した後、ソフトウエアは、ＢＴＭモジュール１５ａに命令し、マルチプレクサ２２および２３に指示して、インターセプト動作を停止し、メモリコントローラ１６ａのスヌープアドレス／組み合わせ応答インタフェース２５および書き込みデータインタフェース２６が相互接続２１から直接トランザクション情報を受信可能とする。この結果、メモリコントローラ１６ａは、ＳＭＰシステム１０内の他のあらゆるメモリコントローラのように、再び相互接続２１からトランザクション情報を直接スヌープすることができる。この時点で、ソフトウエアは、メモリモジュール１７ａに格納されているトレースレコードにアクセスすることができる。ソフトウエアは、すぐにトレースレコードを処理するか、または今後の処理のためにトレースレコードをハードディスク２０（図１）に移すことができる。
【００２２】
ＣＰＵコアトレースは、上述の相互接続トレースとほぼ同じ方法で、基本的にＢＴＭモジュール１５ａによって収集される。異なる点は、ＣＰＵコアトレースのためのソースが相互接続２１でなくＣＰＵコアトレースバス２９であることである。また、ＢＴＭモジュール１５ａは、いかなる所与の時点でも相互接続トレースまたはＣＰＵコアトレースのいずれかを収集することができるが、同時に双方の収集は行えない。
【００２３】
ＩＶ．トレーシング帯域幅の増大
場合によっては、特により大きなＳＭＰシステムでは、単一のＢＴＭモジュールおよび対応するメモリコントローラは、スヌープしている進行中の相互接続トランザクションと同じ速度でトレースレコードを関連する「ローカル」メモリモジュールに格納することができない場合がある。この結果、一部の相互接続トランザクションは、対応するトレースレコードがどこにも格納されていないということが起こり得る。時に、所与のＳＭＰシステム構成では、最小限のトレース情報量を省くことは許容可能であるが、相互接続使用の全てについての完全なトレースレコード範囲を有することがはるかに好ましい。このため、上述の基本的なトレーシング動作を拡張して、相互接続利用性を高めたいっそう大きなＳＭＰシステムにおいて、トレーシング帯域幅を追加し、トレースオーバーランを最小限に抑えるかまたは防止するといっそう有用であろう。
【００２４】
本発明の好適な実施形態として、２つ以上のＢＴＭモジュールを同時にイネーブルして、３２以上のメモリコントローラを有する比較的大きいＳＭＰシステム内の多数の処理ユニット間に、トレース情報収集の負担を分散させることができる。帯域幅の拡張性は、相互接続トレーシングのために多数のＢＴＭモジュールをイネーブルすることによって達成可能である。イネーブルしたＢＴＭモジュールの各々は、全ＳＭＰシステム内の全ての相互接続トランザクションのサブセットについてのトレースレコードのみを格納するように構成されている。
【００２５】
一例として、３２のメモリコントローラを有する比較的大きいＳＭＰシステムを用いて、相互接続トレーシングを行うためにＳＭＰシステムの２つのＢＴＭモジュールをイネーブルしてピークの相互接続利用に追いついていく場合、一方のＢＴＭモジュールを、偶数サイクルでスヌープされる相互接続トランザクションのみを処理するように構成することができ、他方のＢＴＭモジュールを、奇数サイクルでスヌープされる相互接続トランザクションのみを処理するように構成することができる。このように、ＢＴＭモジュールおよび関連するメモリコントローラの各々は、単独で機能する単一のＢＴＭモジュールとして、バスアクティビティの半分を処理することができれば良い。残りの３０のメモリコントローラ（および、相互接続トレーシングのためにイネーブルされていない関連するＢＴＭモジュール）は、他の通常のコンピューティングアクティビティのため、アプリケーションソフトウエアによって使用可能である。同じ原理を用いて、４つのＢＴＭモジュールおよび４つの関連するメモリコントローラをイネーブルして相互接続トレーシングを行う場合、４つのＢＴＭモジュールの各々を、４つのサイクル時間部分のうち異なる１つをトレースするように構成することができる。
【００２６】
時間分割に基づいた上述の方法に加えて、相互接続トレーシングの作業負荷の分散は、他の基準に基づくものとすることも可能である。相互接続トレーシングの作業負荷の分散は、例えば、アドレス（すなわち、偶数アドレス、奇数アドレス、特定の連続アドレス範囲等）、ＣＰＵ識別（ＩＤ）（すなわち、奇数ＣＰＵ  ＩＤ、偶数ＣＰＵ  ＩＤ、第１のＩＤから第２のＩＤのＣＰＵ  ＩＤによって供給されるトランザクション等）、トランザクションの種類（すなわち、読み取り、書き込み、ＲＷＩＴＭ、ＤＣｌａｉｍｓ等）に基づくものとすることができる。
【００２７】
相互接続トレーシングの作業負荷の分散を行うために用いられる機構は、トレース動作の開始に先立ってソフトウエアによってセットアップすることができる構成レジスタを含む。イネーブルされた各ＢＴＭモジュールは、構成レジスタの内容を復号して、どのスヌープした相互接続トランザクションをトレースレコードとして格納するか、および、どのスヌープした相互接続トランザクションを無視するかを判定することができる。その考えは、イネーブルしたＢＴＭモジュールのうち１つのみによって、各相互接続トランザクションごとのトレースレコードを発生させるということである。
【００２８】
トレーシング動作が完了した後、トレーシングに用いられた異なるメモリモジュールから収集した全ての別個のトレースレコードを、タイムスタンプに基づいてソフトウエアによってマージさせて、トレーシング動作が実行された時間ウインドウ内の全相互接続アクティビティの単一のトレースレコードを発生させることができる。
【００２９】
Ｖ．トレーシング帯域幅の低減
従来技術の相互接続トレーシング方法は、ピークバス利用よりも低いトレースレコード収集および格納レートを有する相互接続トレース収集エンジンを実施するための手段を有しない。この結果、従来技術の相互接続トレーシング方法は、ピークバス利用についていくことができなければならない。かかる機能は、当該機能が必要とされない場合に、不必要にコストおよび複雑さを増す。従って、正確さが必要とされる場合には、（上述のように多数のＢＴＭモジュールをイネーブルすることによって）トレーシング帯域幅を増大させることが間違いなく望ましいが、いくつかの論理デバッグの状況等、所々でいくつかのトレースレコードの喪失が許容可能であると見なされる場合、およびバスアクティビティの統計的サンプリングが十分である場合は、トレーシング帯域幅の低減が望ましい。更に、全システムメモリ量が限られているシステム構成においては、ＢＴＭモジュールのスケーリング方法も制限される。従って、相互接続トランザクションが脱落した場合にトレースレコードを格納するための手段が望まれる。
【００３０】
ここで図３を参照すると、本発明の好適な実施形態による、相互接続トランザクションのためのトレースレコードフォーマットの図が示されている。図示のように、トレースレコード４０は、識別子フィールド４１、トランザクション種類フィールド４２、トランザクションサイズフィールド４３、タグフィールド４４、アドレスフィールド４５、および組み合わせ応答フィールド４６を含む。識別子フィールド４１は、レコードの種類、すなわちそれがトレースレコードであるかまたはタイムスタンプレコードであるかを示す。トランザクション種類フィールド４２は、相互接続トランザクションの種類を示す。トランザクションサイズフィールド４３は、相互接続トランザクションのサイズを示す。タグフィールド４４は、相互接続トランザクションのソースを示す。アドレスフィールド４５は、相互接続トランザクションの実メモリアドレスを示す。組み合わせ応答フィールド４６は、必要な場合、相互接続トランザクションの組み合わせ応答を示す。相互接続トランザクションのトレースレコードフォーマットのみを示すが、当業者には、コアトランザクションのためのトレースレコードフォーマットが比較的類似していることは理解されよう。
【００３１】
本発明の好適な実施形態として、図２のＢＴＭモジュール１５ａ等のＢＴＭモジュール内に、スタンプ発生機構が含まれている。相互接続トランザクション間にアイドルサイクルがある場合にのみ、タイムスタンプレコードをトレース情報内に挿入する。通常の時刻の記録に加えて、かかるタイムスタンプレコードは、以前のトレースレコード以降に書き込みバッファがいっぱいである状況のために失敗した相互接続トランザクションの数を与えるためにも用いられる。
【００３２】
ここで図４を参照すると、本発明の好適な実施形態による、タイムスタンプトレースレコードフォーマットの図が示されている。図示のように、タイムスタンプトレースレコード５０は、識別子フィールド５１、スタンプ種類フィールド５２、サイクルカウンタオーバーフローフィールド５３、脱落レコードカウンタオーバーフローフィールド５４、脱落レコードフィールド５５、脱落レコードカウンタフィールド５６、およびサイクルカウンタ値フィールド５７を含む。
【００３３】
相互接続トレーシングが開始すると、ＢＴＭモジュール１５ａによって、開始スタンプフィールド５２がセットされたタイムスタンプトレースレコード５０が、トレースレコードの冒頭に挿入される。開始スタンプフィールド５２によって、後処理ソフトウエアは、多数の開始／停止を有する連続ラップモードまたは単一サンプルモードで収集されたトレースレコードを構文解析（ｐａｒｓｅ）することができる。
【００３４】
ＢＴＭモジュール１５ａは、ある相互接続トランザクション以降いくつの連続アイドルサイクルが発生したかをカウントするためのサイクルカウンタ３５（図２）を含む。次の相互接続トランザクションが現れると、ＢＴＭモジュール１５ａは、この相互接続トランザクションのためのトレースレコードを格納する前に、サイクルカウンタ値フィールド５７にアイドルサイクルカウントを含む１つのタイムスタンプトレースレコード５０を挿入する。次の相互接続トランザクションが現れる前にサイクルカウンタ３５がその最大値に達した場合は、モード選択によって、行わなければならないアクションを決定する。第１のモードでは、サイクルカウンタオーバーフローフィールド５３にサイクルカウンタオーバーフローフラグをセットし、サイクルカウンタ３５はロールオーバして、カウントを続ける。次のバストランザクションが現れた場合、タイムスタンプログは、サイクルカウント値に加えて、サイクルカウンタオーバーフローフラグを含む。第２のモードでは、アイドルサイクルカウントを最大値としてタイムスタンプを記録する。次いで、サイクルカウンタ３５をリセットし、新たにカウントを開始する。第２のモードでは、Ｎ個の連続アイドルサイクルごとにタイムスタンプを記録する。ここで、Ｎは、サイクルカウンタ３５のアイドル状態の最大カウント値である。
【００３５】
図２のメモリコントローラ１６ａ等のメモリリコントローラが、トレースレコードのブロックを図２のメモリモジュール１７ａ等の対応するメモリモジュールに格納可能な速度に応じて、更に、スヌープされた相互接続トランザクションがＢＴＭモジュール１５ａによって認識される速度に応じて、メモリコントローラ１６ａ内の全ての書き込みバッファ２８がいっぱいになる場合には、短い時間間隔が生じ得る。かかる時間間隔の間、ＢＴＭモジュール１５ａはトレースレコードを格納することができない。バスレコードのいくつかの使用法では、いくつのレコードが脱落したか、および、以前の格納されたトレースレコード（またはタイムスタンプ）と次の格納されたトレースレコード（またはタイムスタンプ）との間でいくつのサイクルが経過したかという情報が、何らかの方法でトレースレコードに供給可能である限り、いくつかのトレースレコードが脱落することは問題とはならない。
【００３６】
この情報を供給するため、サイクルカウンタ３５に加えて、ＢＴＭモジュール１５ａにおいて脱落レコードカウンタ３６（図２）を利用する。ＢＴＭモジュール１５ａが、書き込みバッファがいっぱいであるという指示をメモリコントローラ１６ａから受けると、ＢＴＭモジュール１５ａは、サイクルカウンタ３５を用いて、書き込みバッファ２８がいっぱいの状態である間に経過したサイクル数をカウントする。書き込みバッファがいっぱいである状態の間にスヌープされた相互接続トランザクションがあれば、脱落レコードカウンタ３６はインクリメントされる。書き込みバッファがいっぱいの状態が終わった後、ＢＴＭモジュール１５ａは、脱落レコードカウンタフィールド５６およびサイクルカウンタフィールド５７に、脱落レコードの数と、それらのレコードが脱落している間に経過したサイクル数とをそれぞれ格納する。書き込みバッファがいっぱいの状態の間に脱落サイクルカウンタ３６がオーバーフローした場合、脱落レコードフィールド５５にフラグをセットして、脱落サイクルカウンタ３６がオーバーフローしたことを示す。書き込みバッファがいっぱいの状態の間に経過したサイクル数が最大サイクルカウントを超えた場合、サイクルカウンタオーバーフローフィールド５３にフラグをセットして、サイクルカウンタ３５がオーバーフローしたことを示す。このため、タイムスタンプトレースレコード５０は、最後のトレースレコード（またはタイムスタンプ）が格納された時以降に脱落したレコード数を提供する。また、タイムスタンプトレースレコード５０は、上述した通常のタイムスタンプのように、最後のトレースレコード（またはタイムスタンプ）以降に経過したサイクル数も提供する。
【００３７】
各バスサイクルにおいて１つの相互接続トランザクションをスヌープし、各相互接続トランザクションごとに対応するトレースレコードを発生し格納する場合、トレースレコードと共に、またはそれらの間に、タイムスタンプを格納する必要はない。本質的に、２つの連続トレースレコードは、２つの連続バスサイクルにおいて２つの対応する相互接続トランザクションが発生したことを意味する。
【００３８】
上述のように、本発明は、分散型メモリＳＭＰシステムにおいてメモリ内命令／バストレーシングを実行するための方法および装置を提供する。本発明では、命令／バストレーシングを実行するために、論理分析装置等の追加のハードウエアは不要である。このため、相互接続に余分な電気負荷がかかってそれらの動作周波数を制限する恐れは無い。また、トレース情報を格納するためのチップ上メモリアレイは必要ない。本発明では、トレーシングのために必要な全てのハードウエアは、１つ以上のＢＴＭモジュールに構成される。ＢＴＭモジュールは完全にメモリコントローラの外部にあるので、メモリコントローラは、トレーシング動作を実行するためにいずれかのＢＴＭモジュールが用いられていることを知らず、これによってメモリコントローラ設計の複雑さが軽減される。また、本発明は、以降のオフライン処理のため、ハードディスクにトレースレコードを格納することを可能とする。
【００３９】
本発明について、好適な実施形態を参照して具体的に図示し説明してきたが、本発明の精神および範囲から逸脱することなく、形態および詳細において様々な変更を行い得ることは当業者には理解されよう。
【００４０】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４１】
（１）相互接続に結合された分散型メモリを有するデータ処理システムにおいてバストレーシングを行うための装置であって、
前記相互接続に結合されたメモリコントローラと、
複数のマルチプレクサと、
前記相互接続と前記メモリコントローラとの間に、前記複数のマルチプレクサを介して接続されたバストレースマクロ（ＢＴＭ）モジュールであって、前記相互接続からのアドレストランザクションを選択的にインターセプトし、前記インターセプトしたアドレストランザクションを対応するトレースレコードに変換し、前記トレースレコードを前記メモリコントローラ内の書き込みバッファに書き込む、ＢＴＭモジュールと、
を具備する装置。
（２）前記ＢＴＭモジュールが前記選択的インターセプトを行っている場合に、前記複数のマルチプレクサは、前記アドレストランザクションが前記メモリコントローラに到達するのを防ぐ、（１）の装置。
（３）前記マルチプレクサの１つは、前記相互接続からのスヌープアドレス／組み合わせ応答バスと、前記メモリコントローラのスヌープアドレス／組み合わせ応答インタフェースとの間の経路に配置されている、（１）の装置。
（４）前記マルチプレクサの１つは、前記相互接続からのデータ／制御バスと、前記メモリコントローラの書き込みデータインタフェースとの間の経路に配置されている、（３）の装置。
（５）前記ＢＴＭモジュールは、前記メモリコントローラの実メモリアドレス範囲に一致するアドレス範囲を含むためのベースアドレスレジスタを含む、（１）の装置。
【図面の簡単な説明】
【００４２】
【図１】本発明の好適な実施形態を組み込んだ対称型マルチプロセッサシステムのブロック図である。
【図２】本発明の好適な実施形態による、図１に示す対称型マルチプロセッサシステムの処理ユニットの１つの内部におけるバストレースマクロモジュールおよびメモリコントローラのブロック図である。
【図３】本発明の好適な実施形態による、相互接続トランザクションのためのトレースレコードフォーマットの図である。
【図４】本発明の好適な実施形態による、タイムスタンプレコードフォーマットの図である。
【図１】
2004310749.tif 000003
【図２】
2004310749.tif 000004
【図３】
2004310749.tif 000005
【図４】
2004310749.tif 000006