(57)【要約】  デバッグ回路（１４）を有するデータ処理システム（１０）およびデータ処理システムを作動するための方法。システムにおいては、プロセッサ（１２）はキャッシュ・メモリ（１３）を有し、システム・バス（２０）と結合している。実効アドレスを示す命令が受信される。命令は実行され、実効アドレスがキャッシュ（１３）内でヒットになるのかミスになるのかが判定される。実効アドレスがヒットになった場合には、実効アドレスに関連するデータが、キャッシュの状態を修正しないでキャッシュからシステム・バスに提供される。命令により、リアルタイム・デバッグ回路は、値を修正しないでまたはキャッシュ（１３）の現在状態に影響を与えないで、キャッシュ階層のためにアクセスできないメモリ（１３）内の１つまたは複数の変数の現在値を見ることができる。
2010505195.tif 000002
【特許請求の範囲】
【請求項１】
システム・バスと結合し、キャッシュを有するプロセッサを作動するための方法であって、
実効アドレスを示す命令を受信するステップと、
前記命令を実行するステップであって、前記命令を実行するステップが、
前記実効アドレスがキャッシュ内でヒットとなるかミスとなるかを判定するステップと、
前記実効アドレスがヒットとなった場合に、キャッシュの状態を修正しないで、前記実効アドレスに関連するデータをキャッシュからシステム・バスに提供するステップと、
を含む方法。
【請求項２】
前記命令を実行するステップが、
前記実効アドレスがミスとなった場合に、前記実効アドレスに関連するデータをメモリからシステム・バスに選択的に提供するステップであって、前記実効アドレスに関連するデータが前記メモリからシステム・バスに提供された場合に、前記実効アドレスに関連するデータが、前記キャッシュ内に格納されないステップをさらに含む請求項１に記載の方法。
【請求項３】
前記実効アドレスがミスになった場合に、前記命令により提供されたフェッチ・インジケータに基づいて、前記実効アドレスに関連するデータを前記メモリから前記システム・バスに選択的に提供するステップを含む請求項２に記載の方法。
【請求項４】
前記フェッチ・インジケータがフェッチを示し、前記実効アドレスがミスになった場合に、前記実効アドレスに関連するデータが前記メモリから前記システム・バスに提供される請求項３に記載の方法。
【請求項５】
前記フェッチ・インジケータがフェッチを示していないで、前記実効アドレスがミスになった場合に、前記実効アドレスに関連するデータが前記メモリから前記システム・バスに提供されない請求項４に記載の方法。
【請求項６】
前記実効アドレスがヒットした場合に、前記実効アドレスに関連するデータを、前記キャッシュの状態を修正しないでキャッシュからバスに提供するステップが、
前記実効アドレスに関連するキャッシュ内のダーティ・ビットを修正しないで、前記実効アドレスに関連するデータをキャッシュからバスに提供するステップであって、前記ダーティ・ビットが、キャッシュ内に格納している実効アドレスに関連するデータが、前記実効アドレスに対応するメモリ内のメモリ位置に格納しているデータと異なっているか否かを示すステップを含む請求項１に記載の方法。
【請求項７】
前記実効アドレスがヒットになった場合に、キャッシュからシステム・バスに提供される前記実効アドレスに関連するデータが、前記実効アドレスに対応するメモリ内のメモリ位置に格納しているデータと同じ値を有する請求項１に記載の方法。
【請求項８】
前記実効アドレスを示す命令を受信するステップが、前記システム・バスと結合しているデバッグ回路から前記命令を受信するステップを含む請求項１に記載の方法。
【請求項９】
前記命令がサイズ・インジケータを提供し、前記キャッシュから前記システム・バスに提供された実効アドレスに関連するデータが、前記サイズ・インジケータに基づいて、実効アドレスに関連するすべてのキャッシュ・ライン、または前記実効アドレスに関連するすべてのキャッシュ・ラインより少ないキャッシュ・ラインを含む請求項１に記載の方法。
【請求項１０】
前記命令を実行するステップが、
変換索引バッファ（ＴＬＢ）を使用して前記実効アドレスを変換アドレスに変換するステップであって、前記実効アドレスがキャッシュ内でヒットになったのかミスになったのかを判定するステップが、前記変換アドレスを使用して、前記実効アドレスがヒットになったのかミスになったのかを判定することを含むステップをさらに含む請求項１に記載の方法。
【請求項１１】
前記命令が、前記実効アドレスがＴＬＢ内でミスになった場合に、例外とするかしないかを示すＴＬＢ例外インジケータを提供する請求項１０に記載の方法。
【請求項１２】
前記命令が、エラー更新インジケータを提供し、前記命令を実行するステップが、
前記エラー更新インジケータに基づいて、前記命令の実行中に発生するエラーに応じて前記プロセッサの条件レジスタ内のフィールドを選択的に更新するステップをさらに含む請求項１に記載の方法。
【請求項１３】
前記命令が、ブレークポイント動作不能インジケータを提供し、前記命令を実行するステップが、
前記ブレークポイント動作不能インジケータに基づいて前記命令の実行中にデータ・ブレークポイントを選択的に動作不能にするステップをさらに含む請求項１に記載の方法。
【請求項１４】
システム・バスと結合し、キャッシュを有するプロセッサを作動するための方法であって、
実効アドレスを示す命令を受信するステップと、
前記実効アドレスが前記キャッシュ内でヒットと判定するステップであって、
前記判定ステップが、前記実効アドレスに関連するキャッシュ内でヒット・エントリを識別することを含むステップと、
前記ヒット・エントリのダーティ・ビットが前記ヒット・エントリ内に格納しているデータがクリーンであると表示する場合に、前記ヒット・エントリ内に格納している前記データの少なくとも一部を、前記キャッシュから前記システム・バスに提供するステップと、
を含む方法。
【請求項１５】
前記ヒット・エントリのダーティ・ビットが前記ヒット・エントリ内に格納している前記データがクリーンであることを示している場合に、前記キャッシュのヒット・エントリ内に格納しているデータが、前記システム・バスと結合しているメモリ内の、前記実効アドレスに対応するメモリ位置のところに格納しているデータに対して修正されない請求項１４に記載の方法。
【請求項１６】
前記ヒット・エントリのダーティ・ビットが、前記ヒット・エントリ内に格納しているデータがダーティであることを示している場合に、前記実効アドレスに関連するデータの少なくとも一部をキャッシュからシステム・バスに提供するステップをさらに含む請求項１４に記載の方法。
【請求項１７】
前記ヒット・エントリ内に格納している前記実効アドレスに関連するデータの少なくとも一部が、前記ヒット・エントリのダーティ・ビットを修正しないでキャッシュからシステム・バスに提供される請求項１６に記載の方法。
【請求項１８】
前記ヒット・エントリのダーティ・ビットが、前記ヒット・エントリ内に格納しているデータがクリーンであることを示している場合に、前記ヒット・エントリ内に格納しているデータの少なくとも一部が、前記ヒット・エントリのダーティ・ビットを修正しないで、キャッシュからシステム・バスに提供される請求項１４に記載の方法。
【請求項１９】
前記命令がサイズ・インジケータを含み、前記データの少なくとも一部のサイズが、前記サイズ・インジケータに基づいて決定される請求項１４に記載の方法。
【請求項２０】
テーブル索引バッファ（ＴＬＢ）を有するプロセッサを作動するための方法であって、
実効アドレスを示し、ＴＬＢ例外インジケータを含む命令を受信するステップと、
前記実効アドレスを前記ＴＬＢに提供するステップと、
前記実効アドレスが前記ＴＬＢ内でミスになった場合に、前記ＴＬＢ例外インジケータに基づいて選択的に例外とするステップと、
前記実効アドレスが前記ＴＬＢ内でヒットになった場合に、変換アドレスを前記実効アドレスに対応する前記ＴＬＢから提供するステップと、
を含む方法。
【請求項２１】
前記実効アドレスが前記ＴＬＢ内でミスになり、前記ＴＬＢ例外インジケータに基づいて例外とされた場合に、前記実効アドレスに対応する変換アドレスを提供するために、例外を処理するステップをさらに含む請求項２０に記載の方法。
【請求項２２】
前記実効アドレスが前記ＴＬＢ内でミスになり、前記ＴＬＢ例外インジケータに基づいて例外とされなかった場合に、ノーオペレーション（ＮＯＰ）命令として命令を処理するステップをさらに含む請求項２１に記載の方法。
【請求項２３】
前記実効アドレスが前記ＴＬＢ内でミスになり、前記ＴＬＢ例外インジケータに基づいて例外とされなかった場合に、前記命令に応じて前記実効アドレスに対して変換アドレスを提供しない請求項２１に記載の方法。
【請求項２４】
データ処理システムであって、
キャッシュを有し、デバッグ回路から命令を受信し、実行するように結合しているプロセッサを備え、前記キャッシュが、
複数のキャッシュ・エントリを格納するキャッシュ・アレイと、
前記キャッシュ・アレイと結合し、前記デバッグ回路から受信した命令が示す実効アドレスが、前記キャッシュ・アレイ内でヒットになるかミスになるのかを判定するキャッシュ制御回路と、
を含み、
前記実効アドレスがヒットとなった場合に、キャッシュ制御回路が、キャッシュ・アレイを動作可能にして、キャッシュ・アレイの状態を修正しないで、プロセッサおよびデバッグ回路と結合しているシステム・バスに、前記実効アドレスに関連するデータを提供するデータ処理システム。
【請求項２５】
前記実効アドレスがミスになった場合に、前記プロセッサが、前記システム・バスと結合しているメモリから前記実効アドレスに関連するデータを選択的にフェッチすることができるようにし、前記プロセッサがメモリからシステム・バスに実効アドレスに関連するデータをフェッチすることができるようにした場合に、実効アドレスに関連するデータが、前記キャッシュ・アレイ内に格納されない請求項２４に記載のデータ処理システム。
【請求項２６】
前記プロセッサが、デバッグ回路からの命令が提供したフェッチ・インジケータに基づいて、メモリからシステム・バスへ実効アドレスに関連するデータを選択的にフェッチすることができるようにする請求項２５に記載のデータ処理システム。
【請求項２７】
前記プロセッサが、条件レジスタを備え、前記デバッグ回路が提供した命令が、エラー更新インジケータを提供し、前記プロセッサが、前記命令により提供されたエラー更新インジケータに基づいて、前記命令を実行中に起こるエラーに応じて、前記プロセッサの前記条件レジスタ内のフィールドを選択的に更新する請求項２４に記載のデータ処理システム。
【請求項２８】
前記プロセッサが、ブレークポイント情報を格納する内部デバッグ回路を備え、前記デバッグ回路が提供する前記命令がブレークポイント動作不能インジケータを提供し、前記プロセッサが、ブレークポイント動作不能インジケータに基づいて、前記命令の実行中に前記内部デバッグ回路内に格納しているデータ・ブレークポイントを選択的に動作不能にする請求項２４に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、データ処理に関し、特に、キャッシュ・メモリ・デバッグ・サポートを有するデータ処理システムおよびそのための方法に関する。
【背景技術】
【０００２】
データ処理システムは、通常、プログラマが、異なる時点でのシステム内の種々の値を決定することができるようにするためのデバッグ回路を含む。ある種のデータ処理システムの場合には、デバッグ回路をほぼ「リアルタイム」で作動することができる。現在、リアルタイムでのデバッグは、１つの変数がキャッシュされると、システムの中央処理装置（ＣＰＵ）を停止させる非常に面倒な一組の動作を行い、ＪＴＡＧ（合同検査作業グループ）ポートまたは他のデバッグ・インタフェースを通過したロードおよび格納命令を含む複数の命令の実行によりキャッシュから抽出した値を使用しない限りは、デバッグ回路は、その変数の最新の値に容易にアクセスすることができない。そのためキャッシュ・メモリ内に望ましくない状態の変化が起こる場合がある。また、ロードおよび格納命令が、帯域幅問題を起こす場合がある変数をはっきりと見せるために、リアルタイム・デバッグ追跡ユニットに対して追加のメッセージを発生させる恐れもある。さらに、ＣＰＵとデバッグ回路との間にキャッシュ階層が存在する場合には、この問題はさらに困った問題になる。さらに、キャッシュ値を決定するための現在の面倒な方法がキャッシュの状態に影響を与えるので、デバッグ動作によるキャッシュとシステムの状態の違いにより、特定のデバッグ問題を同じ方法ではっきり見せることができない場合もあるし、デバッグ中の問題が分からなくなる場合もある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
それ故、上記問題を解決するデバッグ回路および方法が求められている。
【課題を解決するための手段】
【０００４】
以下に本発明について説明するが、これは単に例示としてのものであり、類似の参照番号が類似の要素を示す添付の図面により制限を受けるものでもない。
当業者であれば、図面中の要素は、本発明を分かりやすくはっきりと説明するためのものであり、必ずしも正確な縮尺でないことを理解することができるだろう。例えば、図面中の要素のうちのいくつかの要素の寸法は、本発明の実施形態を理解しやすくするために他の要素に対して誇張されている場合がある。
【０００５】
本明細書において使用する場合には、「バス」という用語は、データ、アドレス、制御または状態のような１つまたは複数の種々のタイプの情報を転送することができる複数の信号または導体を意味する。本明細書において説明する導体は、１つの導体、複数の導体、一方向性導体または双方向性導体を意味する。しかし、異なる実施形態は、異なる導体を使用することができる。例えば、双方向性導体ではなくて別々の複数の一方向性導体を使用することもできるし、その逆を行うこともできる。また、複数の導体の代わりに、複数の信号を直列にまたは時間多重化して転送する１つの導体を使用することもできる。同様に、複数の信号を伝搬する１つの導体を、これらの信号のサブセットを伝搬する種々の異なる導体に分割することもできる。それ故、信号の転送については多くの選択肢がある。
【０００６】
一般的に言って、本発明の一実施形態は、デバッグ動作中にシステム・バス上で直接見ることができないキャッシュ・メモリからのデータ・ブロックを表示するための方法および装置を提供する。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態によるデータ処理システムのブロック図。
【図２】図１のデータ処理システムのプロセッサのブロック図。
【図３】図２のプロセッサの一部のブロック図。
【図４】本発明による命令ビット・フィールド。
【発明を実施するための形態】
【０００８】
データ・ブロックは、システム・バス上で使用できる形で図示してある。表示された場合、データ・ブロック・キャッシュ状態は、現在「ダーティ」または「クリーン」な状態であっても修正されない。一実施形態の場合には、この方法は、データ処理システムで命令として実施される。この命令により、データ・ブロックは、ＩＥＥＥ  ＩＳＴＯ−５００１準拠Ｎｅｘｕｓ（商標）デバッグ・ユニットのようなデバッグ回路により捕捉することができるシステム・バスに提示される。Ｎｅｘｕｓ（商標）は、テキサス州オースチン所在の、Ｆｒｅｅｓｃａｌｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ，Ｉｎｃ．社の商標である。各キャッシュ・エントリに関連するデータ・タグおよび状態情報ならびにキャッシュ・ミス上で次に置換されるエントリを決定するために使用するすべての置換位置ロジック（ｒｅｐｌａｃｅｍｅｎｔ  ｌｏｃａｔｉｏｎ  ｌｏｇｉｃ）を含むキャッシュの現在の状態は影響を受けない。またその値がキャッシュ内に存在しない場合には、その値をキャッシュの外部のシステムから検索することができ、そのため、その値をキャッシュに書き込まなくても、デバッグ回路がそれを見ることができるようになる。この命令により、リアルタイム・デバッグ回路は、その値を修正しないで、またはキャッシュの現在の状態に影響を与えないで、キャッシュ階層のためにアクセスすることができない場合があるメモリ内の１つまたは複数の変数の現在値を見ることができる。
【０００９】
通常、従来のシステムは、ロードおよび格納命令のような一連のメモリ・アクセス命令を使用するか、または（キャッシュすることができる）１つまたは複数のメモリ位置に含まれているオペランド値を、リアルタイム・デバッグ・ユニットが見ることができるようにするブロック・フラッシュ命令のような１つまたは複数のキャッシュ管理命令を使用する。そのため値を捕捉することもできるし、デバッグのために外部のシステムのユーザにメッセージとして送ることができる。しかし、これらの従来の方法は、システムの１つまたは複数のキャッシュと相互作用し、キャッシュ・ライン置換および割当て、およびキャッシュ・ライン状態への状態の変化のような通常の活動を引き起こし、これによりシステムを困った状態に修正してしまう。この困った修正は望ましいものではない。何故なら、このような修正は、デバッグ動作を行わなかった場合に発生するシステムの正常な動作と相互作用し、この相互作用により多数の意図しない副作用が起こる恐れがあるからである。
【００１０】
一態様においては、本発明は、システム・バスと結合していて、キャッシュを有するプロセッサを作動するための方法を提供する。この方法は、実効アドレスを示す命令を受信するステップと、命令を実行するステップとを含む。この場合、命令の実行は、実効アドレスがキャッシュ内でヒットになるかまたはミスになるかを判定するステップを含み、実効アドレスがヒットになった場合には、キャッシュの状態を修正しないでキャッシュからシステム・バスに実効アドレスと関連するデータを提供するステップを含む。
【００１１】
他の態様においては、本発明は、システム・バスと結合していて、キャッシュを有するプロセッサを作動するための方法を提供する。この方法は、実効アドレスを示す命令を受信するステップと、実効アドレスがキャッシュ内でヒットとなると判定するステップを含む。この場合、上記判定ステップは、実効アドレスと関連するキャッシュ内のヒット・エントリを識別するステップと、ヒット・エントリのダーティ・ビットが、ヒット・エントリ内に格納しているデータがクリーンであることを示している場合に、キャッシュからシステム・バスにヒット・エントリ内に格納しているデータの一部を提供するステップとを含む。
【００１２】
さらに他の態様においては、本発明は、テーブル索引バッファ（ＴＬＢ：ｔａｂｌｅ  ｌｏｏｋ−ａｓｉｄｅ  ｂｕｆｆｅｒ）を有するプロセッサを作動するための方法を提供する。この方法は、実行アドレスを示していて、ＴＬＢ例外インジケータを含む命令を受信するステップと、ＴＬＢに実効アドレスを提供するステップと、実効アドレスがＴＬＢ内でミスになった場合に、ＴＬＢ例外インジケータに基づいて選択的に例外とするステップと、実効アドレスがＴＬＢ内でヒットになった場合に、実効アドレスに対応するＴＬＢから変換したアドレスを提供するステップとを含む。
【００１３】
さらに他の態様においては、本発明は、キャッシュを有するプロセッサを備えるデータ処理システムを提供する。このプロセッサは、デバッグ回路から命令を受信し、実行するように結合している。キャッシュは、複数のキャッシュ・エントリを格納しているキャッシュ・アレイと、キャッシュ制御回路とを備える。キャッシュ制御回路は、キャッシュ・アレイと結合していて、デバッグ回路から受信した命令が表示する実効アドレスが、キャッシュ・アレイ内でヒットになるかミスになるかを判定する。実効アドレスがヒットになった場合には、キャッシュ制御回路は、キャッシュ・アレイが、キャッシュ・アレイの状態を修正しないで、プロセッサおよびデバッグ回路と結合しているシステム・バスに、実効アドレスと関連するデータを提供することができるようにする。
【００１４】
図１は、本発明の一実施形態によるデータ処理システム１０のブロック図を示す。データ処理システム１０は、プロセッサ１２と、デバッグ回路１４と、入出力（Ｉ／Ｏ）１６と、メモリ１８とを含む。これらのものはすべてバス２０に双方向で結合している。
【００１５】
一実施形態の場合には、すべてのデータ処理システム１０は、１つの集積回路上または同じデバイス内に位置することができることに留意されたい。別の方法としては、データ処理システム１０は、任意の数の別々の集積回路または相互に接続している別々のデバイスを含むことができる。例えば、一実施形態の場合には、メモリ１８は、残りのデータ処理システム１０から独立している１つまたは複数の集積回路上に位置することができる。
【００１６】
メモリ１８は、例えば、読出し専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、不揮発性メモリ（例えば、フラッシュ）等のような任意のタイプのメモリであってもよい。また、メモリ１８は、他の周辺またはスレーブ内または異なる集積回路上に位置するメモリまたは他のデータ記憶装置であってもよい。
【００１７】
一実施形態の場合には、プロセッサ１２およびデバッグ回路１４は、バス・マスタである。一実施形態の場合には、プロセッサ１２は、マイクロプロセッサ、デジタル信号プロセッサ等のような命令を実行することができるプロセッサであり、または例えば、ダイレクト・メモリ・アクセス（ＤＭＡ）コントローラ等のような任意の他のタイプのバス・マスタであってもよい。他のスレーブ・デバイスを、例えば、バス２０と結合している他のメモリ、およびシステム・バス上に常駐しているか、またはＩ／Ｏ回路１６と結合している任意のタイプの周辺回路のような、図１には図示されていないデータ処理システム１０に内蔵させることができることに留意されたい。
【００１８】
プロセッサ１２は、キャッシュ１３を含む。キャッシュ１３は、プロセッサ１２が使用するデータおよび／または命令を格納するためのレベル１（Ｌ１）キャッシュとして機能する。通常、データおよび／または命令は、プロセッサにより実行される前にメモリ１８からキャッシュ１３にロードされる。キャッシュ１３は、別々のデータ・キャッシュおよび別々の命令キャッシュを含むことができる。キャッシュ１３は、１つまたは複数のデータ・アレイ、１つまたは複数のタグ・アレイおよび１つまたは複数の状態ビット・アレイを備える。ある実施形態の場合には、タグおよび状態情報を共通のアレイ内に格納することができる。各キャッシュ・エントリは、データのブロックまたはライン、メモリアドレスを含むデータに関連するタグ値、およびキャッシュ・エントリが有効であるか否か、キャッシュ・エントリが「ダーティ」か否か、すなわち、メモリ１８または存在する場合には他の外部メモリ・ブロック内の同じアドレスに関連するデータに対して修正されているか否かを含む状態情報、および他の関連状態情報からなる。一実施形態の場合には、メモリ１８またはメモリ１８の一部をレベル２（Ｌ２）キャッシュとして特徴付けることができる。
【００１９】
入出力（Ｉ／Ｏ）モジュール１６は、バス２０および外部回路（図示せず）に双方向で接続している。Ｉ／Ｏモジュール１６は、Ｉ／Ｏモジュール１６と接続している外部回路のタイプにより異なる種々のインタフェース回路を含む。Ｉ／Ｏモジュール１６は、任意選択として、バス２０と結合している１つまたは複数の代替バス・マスタを含むことができる。
【００２０】
デバッグ回路１４は、バス１５を介してバス１３およびプロセッサ１２と双方向で接続している。デバッグ回路１４は、また、ハードウェア・テスタまたは他のデバッグ・インタフェース・ハードウェアのような外部回路（図示せず）と双方向で接続している。
【００２１】
一般に、デバッグ回路１４は、キャッシュ１３、メモリ１８およびＩ／Ｏモジュール１６へのアクセスに関連するデータ処理動作のための診断チェックとして機能し、他の実施形態の場合には、他のタイプのデータ保持回路は、データ処理システム１０により使用されるが、データ処理システム１０は、内部に位置するものであっても外部に位置するものであっても構わない。プロセッサ１２および代替バス・マスタは、必要に応じて、システム・バス２０の支配を入手し、データおよび命令を検索し格納するためにシステム・メモリ１８に選択的にアクセスする。デバッグ回路１４は、バス２０上に表示されたアドレスを監視し、バス２０上に表示された関連データ値を捕捉またはサンプリングすることにより、１つまたは複数のメモリ位置の値を捕捉するように、データ処理システム１０のユーザにより構成することができる。バス読出し動作の間、データ値は、メモリ１８のような選択されたスレーブ・デバイスにより提供される。バス書込み動作の間、データ値は、プロセッサ１２のようなバス２０のバス・マスタにより提供される。バス転送が起こると、デバッグ回路１４は、各転送を監視し、デバッグ回路１４のユーザが監視したいデータ位置に対応するデータ値を選択的に捕捉する。これらの値および状態は、図１の端末を介してデバッグ回路１４内にプログラムすることもできるし、デバッグ回路１４から転送することもできる。
【００２２】
本発明を使用すれば、従来のシステムのいくつかの限界を克服することができる。従来のシステムの場合には、データの変数または値がキャッシュ１３内に位置している場合、データ値をメモリ１８内の対応する値に対して修正することができる。すなわち、最新の（最も新しい）値はメモリ１８内に存在していないで、キャッシュ１３内だけに位置する。デバッグ回路１４が所望の変数の値を入手するためにメモリ１８にアクセスすると、デバッグ回路１４は正しいコピーを入手しない。何故なら、コピーがキャッシュ１３内で修正されるからである。
【００２３】
デバッグ回路１４がキャッシュ１３内に格納することができる値を「見る」ことができるように、データ処理システム１０内で命令が提供される。以下の説明においては、命令という用語は、「データ・キャッシュ・ブロック表示」命令を意味し、その値に対応する実効アドレスを含む。命令はプロセッサにより実行される。実効アドレスがキャッシュ内で「ヒット」または「ミス」になると命令が決まる。実効アドレスがヒットになると、その値がキャッシュ１３から実効アドレスに関連するバス２０に提供される。次に、デバッグ回路１４は、プロセッサにより提供された場合、バス２０からその値にアクセスする。一実施形態の場合には、デバッグ回路１４は、バス２０上の処理を監視し、バス転送が行われた場合、そのアドレスおよび関連データ値をサンプリングすることができる。次に、図１のデバッグ回路１４からの信号により、サンプリングの後で、デバッグ動作を行っているシステムのユーザに所望の値を転送することができる。値がバス２０上に位置している場合には、キャッシュ１３の状態は修正されない。従来のシステムの場合には、キャッシュがヒットした場合には、キャッシュ１３からバス２０上にデータ変数の値を置くことはできない。何故なら、キャッシュが、通常のロードまたは格納命令により発生した従来のロードまたは格納要求を満足させるからである。これによりデバッグ回路１４に対する問題が発生する。何故なら、捕捉するためにバス２０上の値を見ることができないからである。実効アドレスがミスになった場合には、命令の１つの機能により、例えば、メモリ１８のような他のメモリから値を検索することができる。値を他のメモリから検索した場合には、検索の間にメモリにより値がバス２０上に置かれ、デバッグ回路１４により値にアクセスすることができる。次に、値は、通常のロードおよび格納ミスにより、必要に応じてキャッシュ１３内に格納されないことに留意されたい。値はバス２０上に表示された後に破棄される。値を破棄し、通常のロードおよび格納命令により生じた通常のキャッシュ・ミスの場合のように、置換キャッシュ・エントリを割り当てないことにより、データ・キャッシュ・ブロック表示命令の実行の結果は、キャッシュの状態に最少の影響しか与えないのでシステムのデバッグが簡単になる。何故なら、デバッグ動作の悪影響が最少になるからである。ミスの際にキャッシュ・ラインは置換されず、キャッシュ内に含まれる状態ビット、データまたはタグ情報の状態は変化しない。さらに、結果がヒットであれ、ミスであれ、１つまたは複数のキャッシュ・ライン置換アルゴリズム状態変数の状態は、最も前に使用した状態ビット等のように、変化しないでそのままの状態である。
【００２４】
通常、いくつかのデータ値は変化し、実行中の命令に応じて更新される。あるデバッグ状況の場合には、キャッシュ内に常駐している場合でも値の最新のバージョンを検索することが望ましい場合がある。「ダーティ・ビット」は、キャッシュ・エントリに関連していて、実効アドレスと関連するキャッシュ内のデータが、実効アドレスに対応する、例えばメモリ１８のような他のメモリ位置のところに格納しているデータと異なるものであるか否か、（すなわち、修正されているか否か）を表示する。開示の実施形態によれば、値の実効アドレスに関連する「ダーティ・ビット」は、値がキャッシュから検索されたものであり、データ・キャッシュ・ブロック表示命令の実行に応じて、システム・バス２０に提示されたものである場合には修正されない。同様に、キャッシュ１３内の実効アドレスに関連する値が、他のメモリ位置の値と同じものである場合には、すなわち、データがクリーンである場合にはキャッシュ１３は修正されない。すなわち、ヒット・キャッシュ・エントリのダーティ・ビットが、エントリ内に格納しているデータがクリーンであることを表示している場合でも、エントリ内に格納しているデータが、バス２０に提供され、エントリは修正されない。ヒット・キャッシュ・エントリのダーティ・ビットがエントリ内に格納しているデータがダーティであることを表示している場合には、従来のキャッシュ制御命令の場合とは異なり、エントリ内に格納しているデータが依然としてバス２０に提供され、エントリは修正されず、ダーティ・ビットはクリアされない。データ・キャッシュ・ブロック表示命令については、以下にさらに詳細に説明する。
【００２５】
図２は、図１のデータ処理システム１０のプロセッサ１２のブロック図を示す。プロセッサ１２は、キャッシュ１３と、バス・インタフェース・ユニット２６と、汎用レジスタ（ＧＰＲＳ）３２と、変換索引バッファ（ＴＬＢ：ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋ−ａｓｉｄｅ  ｂｕｆｆｅｒ）３５と、内部デバッグ回路３４と、制御回路３６と、命令デコード・ユニット３８と、命令フェッチ・ユニット４０と、実行ユニット４２とを含む。図２のブロック間の接続についての以下の説明においては、種々の接続のうちのいくつかが反復されていることに留意されたい。また、種々の接続は、それぞれ複数の導体を含む。図２の場合には、キャッシュ１３は、制御回路３６、実行ユニット４２、命令フェッチ・ユニット４０、ＴＬＢ３５、ＢＩＵ２６、および内部デバッグ回路３４と双方向で結合している。ＴＬＢ３５は、制御回路３６、実行ユニット４２およびキャッシュ１３と双方向で結合している。実行ユニット４２は、キャッシュ１３、命令デコード・ユニット３８、ＴＬＢ３５、制御回路３６、およびＧＰＲＳ３２と双方向で結合している。ＢＩＵ２６は、キャッシュ１３、命令フェッチ・ユニット４０、制御回路３６、実行ユニット４２、およびバス２０と双方向で結合している。ＧＰＲＳ３２は、制御回路３６、および実行ユニット４２と双方向で結合している。内部デバッグ回路３４は、制御回路３６と双方向で結合している。制御回路３６は、命令フェッチ・ユニット４０、命令デコード・ユニット３８、ＴＬＢ３５、キャッシュ１３、ＢＩＵ２６、実行ユニット４２、内部デバッグ回路３４、およびＧＰＲＳ３２と双方向で結合している。制御回路３６は、条件レジスタ３７を含む。条件レジスタ３７は、通常、命令実行の結果を反映する。通常、これらのレジスタは、算術、論理または比較演算命令の結果として設定された関係値を含む。さらに、一実施形態の場合には、条件レジスタ３７を、データ・キャッシュ・ブロック表示命令の動作中を反映している状態で更新することができる。例えば、データ・キャッシュ・ブロック表示命令が、例えば、プロセッサ１２による実行に対するデバッグ回路１４により提供された場合には、命令の試験的実行中にエラーが発生する場合がある。条件レジスタ３７は、命令の実行中のエラーの発生に応じて、プロセッサ１２により更新することができる１つまたは複数のエラー更新インジケータを含む。命令デコード・ユニット３８は、デバッグ回路１４、命令フェッチ・ユニット４０、および実行ユニット４２と双方向で結合している。命令フェッチ・ユニット４０は、デバッグ回路１４、命令デコード・ユニット３８、キャッシュ１３、およびＢＩＵ２６と双方向で結合している。命令フェッチ・ユニット４０、命令デコード・ユニット３８および制御回路３６は、それぞれデバッグ回路１４と直接結合している。他の実施形態の場合には、プロセッサ１２は、異なる処理ブロックを有することができ、ブロック間の接続は異なるものであってもよいことに留意されたい。
【００２６】
図３は、図２のプロセッサ１２のキャッシュ１３およびＴＬＢ３５の詳細図を示す。キャッシュ１３は、キャッシュ制御回路５４と、キャッシュ・アレイ５０とを含む。ＴＬＢ３５は、ＴＬＢ制御回路５６と、バッファ５８とを含む。キャッシュ・アレイ５０は、複数のエントリとして組織されたランダム・アクセス・メモリ・セルのアレイである。一実施形態の場合には、キャッシュ５０は、ＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）メモリ・セルを含む。他の実施形態の場合には、他のメモリタイプが適している。図３の場合には、エントリ５２は、複数のエントリを表していて、「タグ・アドレス・フィールド」で示すタグ・アドレス・ビット・フィールド、「タグ状態ビット」で示すタグ状態ビット・フィールド、および「データ」で示すデータ・ビット・フィールドを含む。タグ状態ビット・フィールドは、「Ｖ」で示す有効なビット、および「Ｄ」で示すダーティ・ビットを含む。各エントリは、プロセッサ１２用の「キャッシュ・ライン」と呼ぶことができる。キャッシュ・アレイ５０は、ＢＩＵ２６を介して、キャッシュ制御回路５４およびバス２０の両方と双方向で結合している。キャッシュ制御回路５４は、制御回路３６と双方向で結合している。キャッシュ制御回路５４は、例えば、キャッシュ１３、メモリ１８またはデバッグ回路１４から受信した命令によりポイントされている実効アドレスが、キャッシュ１３内でヒットしているのかミスしているのかを判定する。ＴＬＢ３５、バッファ５８は、ＴＬＢ制御回路５６と双方向で結合していて、実行ユニット４２からの実効アドレスに対応する物理アドレスを格納するためのものである。ＴＬＢ制御回路５６は、ＴＬＢヒットまたはミス・インジケータを提供するために、制御回路３６およびキャッシュ制御回路５４の両方と結合している。ＴＬＢ制御回路５６は、また、実効アドレス（ＥＡ）に対応する物理アドレスを提供するために、キャッシュ制御回路５４と結合している。実効アドレスから物理アドレスへのアドレス変換は、当業者であれば周知の標準的な方法でＴＬＢ３５により行われる。キャッシュ制御回路５４は、ＴＬＢ３５が行ったアクセスに対する物理アドレスを、キャッシュ・アレイ５０内の１つまたは複数のタグ・エントリ内に位置する格納している値と比較することにより、命令によりポイントされた実効アドレスが、ヒットしているのかミスしているのかを判定する。ある実施形態の場合には、ＴＬＢ３５は、オプションであり、使用していない場合には、実効アドレス（ＥＡ）は、変換なしで直接キャッシュ１３に提供される。このような実施形態の場合には、格納しているタグ値は、物理アドレスへのアドレス変換なしで、直接実効アドレスに対応する。
【００２７】
図４は、本発明によるデータ・キャッシュ・ブロック表示命令ビット・フィールド６０を示す。データ・キャッシュ・ブロック表示命令は、データ処理システム１０の任意のバス・マスタにより発行することができる。図の実施形態の場合には、データ・キャッシュ・ブロック表示命令は、デバッグ回路１４により発行される。他の実施形態の場合には、１つまたは複数のデータ・キャッシュ・ブロック表示命令を、メモリ１８内に含まれるプログラムメモリ位置、またはデータ・プロセッサ１０内の他の位置に格納することができ、通常の命令ストリーム処理の一部としてプロセッサ１２により検索することができる。一実施形態の場合には、命令のビット［０−５］は、命令をデータ・キャッシュ・ブロック表示命令として識別するために使用される。図の実施形態の場合には、ビット［０−５］は０１１１１１である。他の実施形態の場合には、ビット［０−５］は異なるものであってもよい。さらに、他の実施形態の場合には、各ビット・フィールド内のビットの数は異なるものであってもよい。「＃ｏｐｔ」は、ビット［６−１０］を表し、下記の命令と一緒に５つのフィーチャのうちのどれを使用すべきなのかを示す。
【００２８】
＃ｏｐｔ＝［ｍｉｓｓ＿ｆｅｔｃｈ＿ｔｒｕｅ，  ｓｉｇｎａｌ＿ＴＬＢ＿ｅｘｃｅｐｔｉｏｎｓ，  ｓｉｚｅ＿ｏｆ＿ｓｈｏｗ，  ｍａｓｋ＿ｄａｔａ＿ｂｋｐｔ，  ｒｅｃｏｒｄ＿ｓｔａｔｕｓ］．
「ＲＡ」で示すビット［１１−１５］および「ＲＢ」で示すビット［１６−２０］は、それぞれ実効アドレスオフセットおよび実効アドレスベースレジスタ値であり、バス２０上で実効アドレスを使用することができるようにするデータの実効アドレスを計算するためのものである。「ＴＢＤ」で示すビット［２１−３０］は、この命令のためには使用されない。ビット［３１］は、命令の終わりを示す。
【００２９】
データ・キャッシュ・ブロック表示命令は、例えば、デバッグを見えるようにするためのデバッグ回路１４のようなプロセッサ１２の外部のエージェントに潜在的にキャッシュしている位置を強制的に見えるようにするためのものである。ビット［６−１０］のオプションとしてのビット・フィールド＃ｏｐｔ［ｍａｓｋ＿ｄａｔａ＿ｂｋｐｔ］が、ブレークポイントをマスクすべきであると表示している場合には、この命令の実行の一部としてデータ・ブレークポイント・イベントは発生しない。通常のロードおよび格納命令は、図２の内部デバッグ回路３４によりそうすることができる場合には、引き続きデータ・ブレークポイント・イベントを生成する。ウォッチポイント・シグナリングは、実施に依存するものであり、ある実効アドレスがデータ・アクセス発生と一致する場合には、ウォッチポイント・イベントを生成するために、図２の内部デバッグ回路３４により制御することができる。実効アドレスによりアドレスされたバイトを含むデータ・ブロックが、このプロセッサのデータ・キャッシュ内に位置していて、ＴＬＢミスまたは保護違反が発生しない場合には、アドレスされたデータ・ブロックが、例えば、メモリ１８のようなメモリ階層内のもっと高いメモリに書き込まれる。命令を実行した場合、キャッシュ１３内のデータ・ブロックの状態は変化しない。データ・ブロックは、それが「ダーティ」であっても、「クリーン」であってもバス２０に書き込まれる。
【００３０】
バス２０に書き込まれたデータ・ブロックのサイズは、フィーチャ＃ｏｐｔ［ｓｉｚｅ＿ｏｆ＿ｓｈｏｗ］により決まる。この場合、「ｓｉｚｅ＿ｏｆ＿ｓｈｏｗ」はデータ・ブロック・サイズ・インジケータである。命令により「表示された」データ・ブロックは、実効アドレスと関連するキャッシュ・ラインのすべてであってもよいし、またはサイズ・インジケータに基づくキャッシュ・ラインすべてより少ないものであってもよい。実効アドレスによりアドレスされたバイトを含むデータ・ブロックが、キャッシュ１３内に位置していない場合で、フィーチャ＃ｏｐｔ［ｍｉｓｓ＿ｆｅｔｃｈ＿ｔｒｕｅ］が、ミス・フェッチが起こっているかもしれないことを表示している場合には、アドレスされたブロックを、デバッグ回路１４により捕捉するためにバス２０上で見ることができるようにするために、メモリ１８のようなシステムの他のメモリからフェッチされ、プロセッサ１２により廃棄される。そうでない場合であって、＃ｏｐｔ［ｍｉｓｓ＿ｆｅｔｃｈ＿ｔｒｕｅ］が、ミス・フェッチが発生していないことを示している場合であって、ミスが発生している場合には、命令はＮＯＰ（動作なし）として処理され、データはバス２０に提供されない。
【００３１】
＃ｏｐｔ［ｓｉｇｎａｌ＿ＴＬＢ＿ｅｘｃｅｐｔｉｏｎｓ］が真であると設定されている場合には、実効アドレスが、ＴＬＢ３５により物理アドレスに変換され、この物理アドレスが、実効アドレスがヒットしているかまたはミスになっているかを判定するために使用される。ＴＬＢミスまたはＴＬＢ保護違反が発生した場合には、プロセッサ１２内でシグナリングされ、発生したエラー状態を処理するために、例外処理が開始される。逆に、＃ｏｐｔ［ｓｉｇｎａｌ＿ＴＬＢ＿ｅｘｃｅｐｔｉｏｎｓ］が偽であると設定されている場合には、ＴＬＢミスおよびＴＬＢ保護違反は無視され、これらの状態に遭遇した場合には、命令は１つのＮＯＰとして処理され、例外とはならない。この命令の実行の一部としてＴＬＢエラー、バスエラー、または他のエラーが発生した場合で、＃ｏｐｔ［ｒｅｃｏｒｄ＿ｓｔａｔｕｓ］が設定された場合には、エラーは制御レジスタ３７内の状態ビットを介して送られる。
【００３２】
フィーチャ＃ｏｐｔ［ｓｉｇｎａｌ＿ＴＬＢ＿ｅｘｃｅｐｔｉｏｎｓ］は、データ・キャッシュ・ブロック表示命令の他にも他の命令と一緒に使用することができる。＃ｏｐｔ［ｓｉｇｎａｌ＿ＴＬＢ＿ｅｘｃｅｐｔｉｏｎｓ］が真である場合には、命令に関連する実効アドレスがＴＬＢ３５に送られる。実効アドレスがＴＬＢ３５内でミスになった場合には、＃ｏｐｔ［ｓｉｇｎａｌ＿ＴＬＢ＿ｅｘｃｅｐｔｉｏｎｓ］が真に設定されているか偽に設定されているかにより例外となる。実効アドレスがＴＬＢ３５内でヒットとなった場合には、実効アドレスのためにＴＬＢ３５から変換されたアドレスが提供される。実効アドレスがＴＬＢ３５内でミスになり、＃ｏｐｔ［ｓｉｇｎａｌ＿ＴＬＢ＿ｅｘｃｅｐｔｉｏｎｓ］が真に設定されている場合には、命令を実行すると、ＴＬＢミス例外が送られ、プロセッサ１２により適当な例外処理動作が開始される。実効アドレスがＴＬＢ３５内でミスになり、＃ｏｐｔ［ｓｉｇｎａｌ＿ＴＬＢ＿ｅｘｃｅｐｔｉｏｎｓ］が偽に設定されている場合には、命令を実行すると、ＴＬＢミス例外が送られ、代わりに動作なしになるか、または他のデフォルト結果がプロセッサ１２により処理される。このようにして、命令指定子を、正常に発生したＴＬＢ例外状態が例外処理になるか、または動作なしのようなデフォルト結果の提供になるのかを調整するために使用することができる。
【００３３】
データ・キャッシュ・ブロック表示命令の機能は、実効アドレスによりアドレスされたバイトを含むデータ・ブロックが「ｗｒｉｔｅ  ｔｈｒｏｕｇｈ  ｒｅｑｕｉｒｅｄ」または「ｃａｃｈｉｎｇ  ｉｎｈｉｂｉｔｅｄ」として特徴付けられているか否かにより影響を受けないことに留意されたい。いずれの場合も、データ・キャッシュ・ブロック表示命令を実行すると、キャッシュの状態に影響を与えないで、デバッグ回路１４によりサンプリングされるかまたは捕捉されるデータ値をバス２０上で見ることができるようになる。ここで、本発明のデータ・キャッシュ・ブロック表示命令を使用すれば、関連するメモリ位置がキャッシュ内に常駐していてもいなくても、デバッグ回路によりサンプリングまたは捕捉するためのメモリ位置に関連する最新のデータ値をシステム・バス上で見ることができるようになることを理解されたい。常駐している場合には、データの状態がダーティであってもクリーンであっても、値を見ることができるようにするプロセス中に、現在のキャッシュ状態、データ、タグまたは状態は変化しない。このような制御により、システムをデバッグする能力が大きく改善される。
【００３４】
今まで特定の実施形態を参照しながら本発明について説明してきたが、通常の当業者であれば、添付の特許請求の範囲記載の本発明の範囲から逸脱することなしに、種々の修正および変更を行うことができることを理解することができるだろう。それ故、本明細書および図面は、例示としてのものであって本発明を制限するものではなく、このようなすべての修正は、本発明の範囲内に含まれる。
【００３５】
特定の実施形態を参照しながら、本発明の利益、他の利点および問題の解決方法について説明してきた。しかし、何らかの利益、利点または解決方法をもたらしたり、より優れたものにすることができる上記利益、利点、問題の解決方法、および任意の要素は、任意のまたはすべての請求項の重要な、必要なまたは本質的な機能または要素であると解釈すべきではない。本明細書で使用する場合、「ａ」または「ａｎ」という用語は、１つまたは２つ以上を意味する。本明細書で使用する場合、含んでいるおよび／または有しているという用語は、備えている（すなわち、一般的な言語）を意味する。本明細書で使用する場合、「備える」、「備えている」またはその任意の他の派生語は、要素のリストを備えるプロセス、方法、物品または装置が、これらの要素を含むばかりでなく、リストに明示されていないか、またはこのようなプロセス、方法、物品または装置固有の他の要素を含むことができるように、非排他的な内容を含むことができるようにするためのものである。
【図１】
2010505195.tif 000003
【図２】
2010505195.tif 000004
【図３】
2010505195.tif 000005
【図４】
2010505195.tif 000006
【国際調査報告】
2010505195.tif 000007
2010505195.tif 000008