(57)【要約】【課題】チェックサム生成回路を有する装置を提供する。【解決手段】装置は、命令に応答してデータ処理を実行する処理回路２と、処理回路の動作を制御するための内部状態を格納する少なくとも１つの制御記憶素子７４と、少なくとも１つの制御記憶素子７４に格納された少なくとも１つの内部状態の項目に基づいてチェックサムを生成するためのチェックサム生成回路７０と、を有する。チェックサムは、診断制御エージェント（例えば、処理回路で実行されるソフトウェアおよび／または外部デバイス）から情報にアクセスできる診断記憶場所７２に格納される。これにより、ハードウェア障害を検出するためのソフトウェアテストライブラリの設計がより効率的になる。【選択図】図２
2020113266.tif 000002
【特許請求の範囲】
【請求項１】
命令に応答してデータ処理を実行する処理回路と、
前記処理回路の動作を制御するための内部状態を格納する少なくとも１つの制御記憶素子と、
前記処理回路による一連の命令の処理に続いて前記少なくとも１つの制御記憶素子に格納された内部状態の少なくとも１つの項目を受け取り、前記内部状態の少なくとも１つの項目に基づいてチェックサムを生成するチェックサム生成回路と、
を含む装置であって、
前記チェックサム生成回路は、情報が診断制御エージェントからアクセス可能な診断記憶場所に前記チェックサムを格納するように構成され、前記診断制御エージェントは、前記処理回路で実行されるソフトウェアおよび外部デバイスの少なくとも一方を含む、装置。
【請求項２】
前記チェックサム生成回路は、複数の制御記憶素子から受け取った内部状態の複数の項目の中から前記内部状態の少なくとも１つの項目を選択するセレクタを含み、
前記セレクタは、前記診断制御エージェントによって設定された、または前記診断制御エージェントによって設定された構成情報に基づいて生成された選択制御信号に基づいて、前記内部状態の少なくとも１つの項目を選択するように構成される、
請求項１に記載の装置。
【請求項３】
前記選択制御信号は、ソフトウェア書き込み可能レジスタに格納された選択制御値から導出される、請求項２に記載の装置。
【請求項４】
前記チェックサム生成回路は、前記診断制御エージェントによって設定された、または前記診断制御エージェントによって設定された構成情報に基づいて生成されたチェックサム更新イネーブル信号に基づいて、前記内部状態の少なくとも１つの項目に応答して前記チェックサムを更新するかどうかを制御するように構成される、請求項１から３のいずれか一項に記載の装置。
【請求項５】
ソフトウェア書き込み可能レジスタへの書き込みに応答して、前記チェックサム更新イネーブル信号をアサートする回路を含む、請求項４に記載の装置。
【請求項６】
前記診断記憶場所は、前記処理回路によって実行されるソフトウェアからアクセス可能な、ソフトウェアでアクセス可能なレジスタを含む、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記処理回路によるデータ処理を監視し、かつ、前記処理回路によって実行される前記データ処理の特性または前記データ処理中に発生するイベントを示すトレースデータをトレースバッファに出力するトレース回路を含み、
前記診断記憶場所は前記トレースバッファを含む、請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記チェックサム生成回路は、前記チェックサムの以前の値および前記内部状態の少なくとも１つの項目に依存するチェックサム関数を使用して、前記チェックサムの新しい値を生成するように構成される、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記少なくとも１つの制御記憶素子に格納された前記内部状態は、前記診断制御エージェントからアクセス不能である、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記少なくとも１つの制御記憶素子は、
前記処理回路によって処理されたそれぞれの命令間のレジスタハザードを検出するためのレジスタ追跡情報を格納するレジスタハザード回路と、
メモリシステムによってサービスされるそれぞれのメモリアクセス要求間のアドレスハザードを検出するためのアドレス追跡情報を格納するメモリハザード回路と、
キャッシュによるサービスを待機している要求、前記キャッシュへの割り当てを待機しているデータ、またはメモリへのライトバックを待機しているデータに関する情報を格納するキャッシュバッファと、
バスに対して行われたバス要求に関する情報を格納するバス制御回路と、
メモリに対して行われたメモリアクセス要求に関する情報を格納するメモリコントローラと、
のうちの少なくとも１つを含む、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
命令に応答してデータ処理を実行する処理回路と、前記処理回路の動作を制御するための内部状態を格納する少なくとも１つの制御記憶素子と、を含む装置の診断テストのための方法であって、
前記方法は、
前記処理回路による一連の命令の処理に続いて前記少なくとも１つの制御記憶素子に格納された内部状態の少なくとも１つの項目に基づいてチェックサムを生成するために、前記装置のチェックサム生成回路を制御するステップと、
診断制御エージェントがアクセス可能な診断記憶場所から前記チェックサム生成回路によって生成された前記チェックサムを読み取るステップであって、前記診断制御エージェントは、前記処理回路で実行されるソフトウェアおよび外部デバイスの少なくとも一方を含む、ステップと、
前記処理回路による前記一連の命令の前記処理中に関心のあるイベントが発生したかどうかを判定するために、前記診断記憶場所から読み取られた前記チェックサムを目標値と比較するステップと、
を含む方法。
【請求項１２】
前記診断制御エージェントによって設定された選択制御情報に基づいて、前記装置の複数の制御記憶素子に格納された内部状態の複数の項目の中から前記内部状態の少なくとも１つの項目を選択するステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
請求項１１および１２のいずれか一項に記載の方法を実行するように装置を制御するためのコンピュータプログラム。
【請求項１４】
前記コンピュータプログラムは、ソフトウェアテストライブラリ（ＳＴＬ）プログラムを含む、請求項１３に記載のコンピュータプログラム。
【請求項１５】
請求項１３および１４のいずれか一項に記載のコンピュータプログラムを格納する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、データ処理の分野に関する。
【背景技術】
【０００２】
データ処理装置は、命令に応答してデータ処理を実行する処理回路を有することができる。装置はまた、処理回路の動作を制御するための内部状態を格納する少なくとも１つの制御記憶素子を含むことができる。このような制御記憶素子の中には、特定の命令に応答して生成される処理結果に直接影響を与えない状態を格納する場合があるが、命令の処理時に達成される性能に影響を与える場合がある。
【発明の概要】
【０００３】
少なくともいくつかの例は装置を提供し、装置は、命令に応答してデータ処理を実行する処理回路と、処理回路の動作を制御するための内部状態を格納する少なくとも１つの制御記憶素子と、処理回路による一連の命令の処理に続いて前記少なくとも１つの制御記憶素子に格納された内部状態の少なくとも１つの項目を受け取り、内部状態の少なくとも１つの項目に基づいてチェックサムを生成するチェックサム生成回路と、を含み、チェックサム生成回路は、情報が診断制御エージェントからアクセス可能な診断記憶場所に前記チェックサムを格納するように構成され、前記診断制御エージェントは、処理回路で実行されるソフトウェアおよび外部デバイスの少なくとも一方を含む。
【０００４】
少なくともいくつかの例は、命令に応答してデータ処理を実行する処理回路と、処理回路の動作を制御するための内部状態を格納する少なくとも１つの制御記憶素子と、を含む装置の診断テストのための方法を提供し、本方法は、処理回路による一連の命令の処理に続いて前記少なくとも１つの制御記憶素子に格納された内部状態の少なくとも１つの項目に基づいてチェックサムを生成するために、装置のチェックサム生成回路を制御するステップと、診断制御エージェントがアクセス可能な診断記憶場所からチェックサム生成回路によって生成されたチェックサムを読み取るステップであって、診断制御エージェントは、処理回路および外部デバイスで実行されるソフトウェアの少なくとも１つを含む、ステップと、処理回路による一連の命令の処理中に関心のあるイベントが発生したかどうかを判定するために、診断記憶場所から読み取られたチェックサムを目標値と比較するステップと、を含む。
【０００５】
上述の方法を実行するために制御装置にコンピュータプログラムを提供することができる。コンピュータプログラムは、記憶媒体に格納されてもよい。記憶媒体は、非一時的な記憶媒体であってもよい。
【０００６】
本技術のさらなる態様、特徴および利点は、添付の図面と併せて読まれる例の以下の説明から明らかになろう。
【図面の簡単な説明】
【０００７】
【図１】データ処理装置の例を概略的に示す図である。
【図２】内部状態の少なくとも１つの項目に基づいてチェックサムを生成するためのチェックサム生成回路を有する装置の例を示す図である。
【図３】チェックサム生成回路の例をより詳細に示す図である。
【発明を実施するための形態】
【０００８】
いくつかの理由により、データ処理装置の機能に関する情報が、処理回路または外部デバイスで実行されるソフトウェアなどの診断制御エージェントに公開される診断技術を提供することが有用となり得る。例えば、特定のプロセッサで実行することを目的としたソフトウェアのソフトウェア開発中に、外部診断デバイスは、プロセッサに組み込まれたトレースモジュールを制御して、命令の実行方法の態様をプローブし、トレースモジュールが出力するトレースデータに基づいてソフトウェアのバグを特定することができる。また、フィールドでデバイスが動作可能になると、エレクトロマイグレーションなどの経年変化の影響によりランダムに発生する可能性のあるハードウェア障害を検出するための診断手段が提供される。例えば、いくつかのセーフティクリティカルなアプリケーションでは、ソフトウェア内蔵セルフテスト（ＳＢＩＳＴ）アルゴリズムとも呼ばれるソフトウェアテストライブラリ（ＳＴＬ）を実行することが望ましい場合があり、ソフトウェアテストライブラリ（ＳＴＬ）は、ブート時にプロセッサ上で実行されるか、通常の動作中に定期的に実行され、例えば０または１でスタックしたゲートなどのハードウェア障害をスクラブする。
【０００９】
診断制御エージェントが、特定のプロセッサに提供される処理ロジックの一部に関連する障害を検出することは比較的簡単であり、これらの障害は、処理回路によって実行される命令によって生成される処理結果から視認可能である。しかし、処理回路の動作を制御するための内部状態を格納する他の素子が存在する場合があるが、診断アルゴリズムではカバーするのがはるかに困難である。例えば、ソフトウェアテストライブラリ用のソフトウェアコードを開発する場合、ロジックの特定の部分（例えば約６０％）をカバーするテストを記述するのは比較的簡単で費用対効果が高くなるが、カバレッジをロジックの７０〜８０％に到達するように増やすことはますます難しくなり、費用がかかる。したがって、ソフトウェアテストライブラリの開発におけるソフトウェア開発時間の大部分は、この到達困難な状態のプローブに費やされ得る。また、そのような到達困難な状態をカバーすることができる場合でも、その状態のエラーをプローブするように設計されたアルゴリズムに必要な命令の数は非常に多くなる可能性がある（例えば、コードループの多くの反復と、ハードウェア障害によって引き起こされる可能性のあるエラーをプローブするための時間ベースの測定が必要である）。より長いテストアルゴリズムが必要になると、ソフトウェアテストライブラリの実行に関連する待ち時間が増加して、例えばデバイスがテストのために使用されない期間が長くなり、テストコードを格納するメモリオーバーヘッドも増加する。
【００１０】
以下に説明する技術では、処理装置は、処理回路による一連の命令の処理に続いて、少なくとも１つの制御記憶素子に格納された内部状態の少なくとも１つの項目を受け取るチェックサム生成回路を含む。チェックサム生成回路は、受け取った内部状態の少なくとも１つの項目に基づいてチェックサムを生成する。チェックサムは、診断制御エージェントが情報にアクセスすることができる診断記憶場所に格納される。診断制御エージェントは、処理回路上で実行されるソフトウェアと外部デバイスの少なくとも一方であってもよい。
【００１１】
したがって、従来の診断方法では到達が困難な内部状態の素子は、ハードウェアのチェックサム生成回路でプローブすることができ、チェックサムは外部デバイスまたは診断制御エージェントとして機能するソフトウェアに公開することができる。内部状態を直接公開するのではなく、内部状態に基づいてチェックサムを生成することにより、潜在的に大量の内部状態でエラーチェックを実行することに関連するオーバーヘッドを削減することができる。チェックサムは、診断制御エージェントがチェックする必要のあるビット数を減らすために、チェックサム生成回路に渡される内部状態の１つまたは複数の項目のダイジェストとして効果的に機能する。
【００１２】
したがって、チェックサム生成回路により、多くの追加の回路オーバーヘッドを必要とせずに診断スキームでカバーすることができる処理ロジックの量を増やすことができ、これは、上述の理由でソフトウェアテストライブラリのカバレッジを強化するのに特に役立ち得る。
【００１３】
いくつかの実施態様では、チェックサム生成回路は内部状態の特定の項目に固有である可能性があるため、チェックサム生成回路を複数のタイプの内部状態に適用する機能はない。
【００１４】
他の例では、チェックサム生成回路は、いくつかの異なる制御記憶素子から内部状態の複数の項目を受け取ることができる場合がある。これにより、診断スキームの対象範囲を拡大することができる。
【００１５】
内部状態の複数の項目がチェックサム生成回路に提供される場合に、１つのアプローチは、それらの項目のそれぞれに基づいてチェックサムを生成することであり、それらの項目のどの特定のサブセットをチェックサムの計算に使用するかを選択する能力はない。
【００１６】
しかし、多くの制御記憶素子から受け取った内部状態の２つ以上の項目の中から内部状態の少なくとも１つの項目（これからチェックサムが生成される）を選択するセレクタをチェックサム生成回路に設けることが有用であり得る。セレクタは、診断制御エージェントによって設定されるか、または診断制御エージェントによって設定される構成情報に基づいて自動的に生成される選択制御信号に基づいて、内部状態の少なくとも１つの項目を選択することができる。これにより、診断制御エージェントは、特定のテストまたは調査の処理ロジックの特定領域のエラーに集中することができるように、内部状態の特定の項目を使用してチェックサムを生成することができる。これにより、エラーの場所をより正確に特定することができる。
【００１７】
一例では、選択制御信号は、ソフトウェア書き込み可能レジスタに格納されている選択制御値から導出されてもよい。これは、上述のソフトウェアテストライブラリをサポートするのに役立ち、ソフトウェアテストライブラリは、ソフトウェア書き込み可能なレジスタに書き込んで、チェックサムの生成に使用する内部状態の項目を選択することができ、その後に、いくつかのテストを実行し、診断記憶場所で対応して生成されたチェックサムをキャプチャし、診断記憶場所から値を読み取り、それを期待値と比較して障害があったかどうかを判断する。
【００１８】
いくつかの例では、チェックサム生成回路は、診断制御エージェントによって設定された、または診断制御エージェントによって設定された構成情報に基づいて生成されたチェックサム更新イネーブル信号に基づいて、内部状態の少なくとも１つの項目に応答してチェックサムを更新するかどうかを制御することができる。これにより、診断制御エージェントは、チェックサム生成回路がアクティブかどうかを設定したり、チェックサムが更新されるタイミングを指定したりすることができる。繰り返すが、チェックサム更新イネーブル信号は、ソフトウェア書き込み可能レジスタへの書き込みに基づいて更新イネーブル信号を制御する回路によってアサートすることができる。チェックサム更新イネーブル信号がデアサートされると、チェックサムの以前の値が更新されずに診断記憶場所に保持されてもよい。
【００１９】
一例では、診断記憶場所は、処理回路によって実行されるソフトウェアがアクセス可能な、ソフトウェアアクセス可能性を備えていてもよい。これにより、上記で説明したソフトウェアテストライブラリなどの、処理回路で実行されるソフトウェアによってチェックサムが読み取り可能になる。このように内部状態に基づいて生成されたチェックサムをソフトウェアに公開することは異例であると見なされる場合がある。一部のシステムでは、一時的な障害（宇宙線や粒子の衝突による単一イベントの混乱など）から保護するために、チェックサム生成器が既に設けられている場合があるが、これは通常、このような障害の発生を検出し、ソフトウェアに対して透過的な方法で障害を静かに修正して、障害が発生しなかったかのように処理を続行することができるようにするために使用される。これは、多くの内部状態から導出されたチェックサムが処理回路で実行されているソフトウェアにアクセス可能になる、上記のチェックサム生成器とはまったく異なり、これは、処理回路ロジックの一部の到達困難な部分でエラーをプローブすることができるように大きなコードサイズを必要としない、より効率的なソフトウェアテストライブラリをサポートするのに役立ち得る。
【００２０】
他の例では、診断記憶場所は、処理回路によって実行されるデータ処理の特性または処理回路によって実行されるデータ処理中に発生するイベントを示すトレースデータを格納するためにトレース回路によって使用されるトレースバッファを含むことができる。
【００２１】
ソフトウェア開発を支援するために、処理回路によるデータ処理を監視し、処理中に発生した特定のイベントを示すトレースパケットを出力するオンチップトレースモジュールをプロセッサに含めることが有用であり得る。例えば、トレースパケットは、所与のアプリケーションのソフトウェアを実行するときに処理回路によって実行された命令の正確なシーケンスをトレースアナライザが再構築することができるようにするトレース情報を提供する。例えば、トレースパケットは、条件分岐の結果、例外または割り込みの発生、またはアクセスされたデータアドレスに関する情報を示すことができる。
【００２２】
多くの内部制御状態から導出されたチェックサムをトレースバッファに出力することにより、特定の制御バッファがいっぱいになることによって生じる性能の損失などの、命令トレース自体から直接見えないイベントの視認性をトレースアナライザに提供することができる。また、チェックサムは、内部状態の項目の特定の組み合わせ（異なる記憶素子からの内部状態、または異なる時間にキャプチャされた同じ記憶素子からの内部状態の一連の値）から導出することができ、また、これにより、イベントのより複雑な組み合わせをチェックサム値から識別することができるが、これは他のトレースデータとは解析が異なる。これは、トレースデータの特定のパターンが識別されたときに、診断アクション（例えば、デバッグモードへの切り替え、トレースバッファから外部デバイスへのトレースデータの出力の開始または停止）をトリガーするトレーストリガーイベントを設定するのに役立ち得る。トレースバッファにチェックサムを提供することにより、トレーストリガーイベントを、特定の条件（目的の特定の値と一致するなど）を満たすチェックサムを条件とすることができ、これにより、追加のトリガー条件をより柔軟にサポートすることができる。これにより、特定のソフトウェアプログラムが実行されているときに何が起きているかを調査するトレースアナライザの機能が向上する。
【００２３】
トレースバッファへのチェックサムの出力は、上記のソフトウェアでアクセス可能なレジスタへのチェックサムの出力に加えて実行することができる。あるいは、いくつかの実施形態では、ソフトウェアでアクセス可能なレジスタおよびトレースバッファの一方のみが、チェックサム生成回路によってチェックサムが出力される診断記憶場所として使用されてもよい。
【００２４】
いくつかの実施態様では、チェックサム生成回路は、チェックサムの以前の値と内部状態の少なくとも１つの項目に依存するチェックサム関数を使用して、チェックサムの新しい値を生成してもよい。したがって、チェックサム関数は、チェックサムの最新値が次のチェックサム計算への入力として返される循環関数であってもよい。例えば、チェックサムは巡回冗長検査（ＣＲＣ）関数を使用することができる。これは、一定期間にわたって記録された内部状態の一連の値に依存するチェックサムを生成するのに役立つことができ、これは、最終チェックサムの単一の値をチェックすることにより、これらの値のいずれかにエラーが存在するかどうかをチェックすることができるためである。周期的なチェックサム生成関数は、異なる記憶素子に格納された異なる内部状態の複数のピースからチェックサムを導出する場合にも役立ち得る。この場合、上記のセレクタを使用して、それぞれの記憶素子から内部状態の異なる項目を選択するサイクルを実行することができ、最終チェックサムが内部状態の選択されたすべての項目に依存するまで、次の内部状態の項目でチェックサムの更新が折り返されるたびに、単一のチェックサム値が繰り返し計算され、状態のこれらの項目のエラーは、最終チェックサムが期待される結果と一致するかどうかから検出することができる。繰り返すが、エラーをプローブしたり、トレーストリガーイベントを検出したりするためにチェックする必要がある状態のビットが少ないため、ソフトウェアテストライブラリまたはトレースインフラストラクチャの設計が簡素化される。
【００２５】
原則として、チェックサム生成回路は、プロセッサの任意の記憶素子に格納されたプロセッサの状態の任意の項目に適用することができる。しかし、実際には、プロセッサ内の多くの記憶素子は、処理回路上で実行されるソフトウェアによって書き込みまたは読み取りが可能で、外部診断デバイスがデバッグモードを使用してプローブすることができるレジスタなど、診断制御エージェントから既にアクセス可能であってもよい。したがって、実際には、チェックサム生成回路をチェックサム生成回路以外のメカニズムを介して診断制御エージェントがアクセスできない、内部状態がその素子に記憶される、少なくとも１つの制御記憶素子に、チェックサム生成回路を適用することが有用であり得る。
【００２６】
特に、プロセッサの状態の少なくとも１つの項目は、プロセッサのマイクロアーキテクチャ状態であってもよい。所与の命令セットアーキテクチャと互換性を保つためにプロセッサで提供する必要があり、かつ、通常、処理回路の少なくとも１つの動作状態で実行されるソフトウェアによって直接読み取り／書き込みが可能であるアーキテクチャ状態とは異なり、マイクロアーキテクチャの状態は、プロセッサの特定のハードウェア実装で提供される状態であり、プロセッサがサポートする命令セットアーキテクチャでは直接必要がない。マイクロアーキテクチャの状態は命令の実行に影響を与える可能性があるが、命令はそのマイクロアーキテクチャの状態を直接読み書きすることはできない。このようなマイクロアーキテクチャの状態は、そのような状態記憶素子のエラーが必ずしも誤った処理結果をもたらすとは限らず、性能の損失を引き起こす可能性があるため、理由がより診断困難であり得る従来の診断方法を使用してプローブするのは比較的難しい場合がある。
【００２７】
このような到達困難な制御記憶素子の例は、
・処理回路によって処理されたそれぞれの命令間のレジスタハザードを検出するためのレジスタ追跡情報を格納するレジスタハザード回路と、
・メモリシステムによってサービスされるそれぞれのメモリアクセス要求間のアドレスハザードを検出するためのアドレス追跡情報を格納するメモリハザード回路と、
・キャッシュによるサービスを待機している要求、キャッシュへの割り当てを待機しているデータ、またはメモリへのライトバックを待機しているデータに関する情報を格納するキャッシュバッファ（ラインフィルバッファまたはライトバックバッファなど）と、
・バスに対して行われたバス要求に関する情報を格納するバス制御回路と、
・メモリに対して行われたメモリアクセス要求に関する情報を格納するメモリコントローラと、
のいずれかであってもよい。
【００２８】
上記の制御記憶素子のタイプの１つからチェックサム生成回路に状態を公開し、チェックサムにソフトウェアからアクセスすることができるようにすることで、ソフトウェアテストライブラリ（ＳＴＬ）の設計を大幅に簡素化し、これらの素子のエラーをプローブするためのＳＴＬアルゴリズムをより効率的にする。
【００２９】
図１は、プロセッサコア２の構成要素の一例を示している。プロセッサコアは、いくつかのパイプラインステージを有する処理パイプラインを含むことができ、パイプラインステージは、命令キャッシュ６から命令をフェッチするためのフェッチステージ４、フェッチされた命令をデコードして、どの処理操作を実行する必要があるかを特定し、適切な処理操作を実行するためにパイプラインの下流ステージを制御するための制御信号を生成するためのデコードステージ８、必要なオペランドが利用可能になると実行する命令を発行する発行ステージ１０、レジスタ１４から読み取られたオペランドに対してデータ処理操作を実行するための命令を実行して、処理結果を生成する実行ステージ１２、および、処理結果をレジスタ１４に書き戻すライトバックステージ１６を含む。これは潜在的なパイプラインアーキテクチャの単なる一例であり、他の例はパイプラインステージの構成が異なる場合があることを理解されたい。例えば、アウトオブオーダープロセッサでは、命令によって指定されたアーキテクチャレジスタをハードウェアに備えられた物理レジスタ１４にマッピングするためのレジスタリネームステージがあってもよい。また、実行ステージ１２は、いくつかの実行パイプラインステージに分割されてもよい。
【００３０】
実行ステージ１２は、例えば算術演算または論理演算を実行するための算術／論理ユニット（ＡＬＵ）２０、浮動小数点数として表されるデータ値を含む演算を実行するための浮動小数点ユニット２２、および、メモリシステムからレジスタ１４にデータをロードしたり、レジスタ１４からメモリシステムにデータを格納したりするためのメモリアクセス操作を処理するロード／ストアユニット２４を含む、いくつかの実行ユニットを含む。メモリシステムは、命令キャッシュ６、データキャッシュ３０（および潜在的にさらなるレベルのキャッシュ）、ならびにＤＲＡＭユニットまたは他の形態メモリなどの、プロセッサコアの外側に配置され得るメモリシステム３２の残りの部分を含んでもよい。図１に示す実行ユニット２０、２２、２４の特定のセットおよび特定のメモリ階層６、３０、３２は、単なる一例であることが理解されよう。
【００３１】
図１に示すように、プロセッサコアは、プロセッサパイプラインによる処理命令を制御するために使用される内部状態の項目を格納するいくつかの制御記憶素子を含んでもよい。これらは、パイプラインによって実行されるソフトウェア命令からは見えないマイクロアーキテクチャ状態の項目であってもよい（すなわち、プロセッサがサポートする命令セットアーキテクチャの命令には、このマイクロアーキテクチャ状態に値を書き込むか、このマイクロアーキテクチャ状態から読み取ることを要求するアーキテクチャ定義がない）。例えば、命令キャッシュ６およびデータキャッシュ３０は、実際のデータまたは命令を格納するキャッシュ記憶３４に加えて、キャッシュに対してまたはキャッシュによって行われた要求をバッファリングするための１つまたは複数のバッファを含むことができる。例えば、命令キャッシュ６は、フェッチステージ４からのフェッチ要求をバッファリングしてキャッシュから命令をフェッチするための要求バッファ３６を含むことができる。データキャッシュ３０は、ロード／ストアユニット２４によってキャッシュに対してなされた読み取りまたは書き込み要求をバッファリングするための同様の要求バッファ３６を有することができる。また、キャッシュ６、３０は、メモリシステム３２から読み取られたがキャッシュ記憶３４への割り当てを待っているデータまたは命令をバッファリングするためのラインフィルバッファ３８を有することができる。データキャッシュ３０は、メモリ３２に書き戻されるデータの要求をバッファリングするライトバックバッファ４０を含むこともできる。
【００３２】
制御記憶素子の別の例は、レジスタハザードロジック４２であり、それは、パイプライン内で待機している命令間の書き込み後の読み取り（ＲＡＷ）、読み取り後の書き込み（ＷＡＲ）、または書き込み後の書き込み（ＷＡＷ）ハザードを識別するために発行ステージ１０で使用することができる。例えば、レジスタハザードロジックは、実行の発行を待っている命令によって読み書きされるレジスタのレジスタ番号を追跡するためのバッファ４４を有してもよい。レジスタハザードロジック４２は、以前の命令が完了するまで、後続の命令が、実行のために発行される以前の命令と同じレジスタに読み書きするのを防ぐことができる。
【００３３】
また、ロード／ストアユニット２４は、同じアドレスを指定するそれぞれのメモリアクセス命令間のデータハザードを検出するためのメモリハザードロジック４６に関連付けられてもよい。例えば、メモリハザードロジック４６は、メモリシステムにストア要求がまだ発行されていないストア命令のアドレスを追跡するストアバッファ４８を含むことができるので、同じアドレスへの後続のロード命令が生じた場合には、ストア命令に応答して格納されたデータ値を使用してロードを処理することができ、また、以前のストアの同じアドレスへの後続のストア命令が生じた場合には、これら２つのストア命令のメモリに格納されるデータ値をメモリへの単一の要求に結合することができる。また、メモリアクセス要求が適切な順序で処理されるように、メモリハザードロジックを使用することができる。
【００３４】
図２に示すように、プロセッサコア２は、より大きなデータ処理システム内に含まれてもよく、外部メモリ５２と共に使用される。コア２は、バスユニット５４およびメモリコントローラ５６を介してメモリにアクセスすることができる。図２はシステム５０内の単一のプロセッサコア２のみを示しているが、他の例では、これは、２つ以上のプロセッサコアがバスユニット５４を介して通信し、共有メモリ５２にアクセスするマルチプロセッサシステムであってもよい。また、ディスプレイコントローラ、グラフィックス処理ユニットなどのような他のマスターデバイスをバスユニットに結合することもでき、バスユニット５４は周辺機器などの他のスレーブデバイスへのアクセスを制御することもできる。図２に示すように、バスユニット５４またはメモリコントローラ５６内には、バス上またはメモリへの要求をそれぞれバッファリングする要求キュー６０、６２などの内部制御状態の項目がさらに存在してもよい。
【００３５】
したがって、プロセッサコアでの命令の処理に影響を与える値を格納する可能性があるシステム全体の内部状態の部分が多数存在する可能性がある。このような内部状態の項目はハードウェア障害に対して脆弱である可能性があり、例えば、エレクトロマイグレーションなどの経年変化の影響により、特定のゲートがバイナリ０またはバイナリ１などの特定の値にスタックし、内部状態の所与の部分に誤った値が格納される場合がある。安全性が重要なアプリケーションの場合、このようなハードウェア障害をプローブするためのソフトウェアテストライブラリ（ＳＴＬ）を提供すると有用であり得る。しかし、上記の内部制御状態のタイプをプローブすることができるＳＴＬを開発することは困難である。通常、ロジックの約６０％をカバーするテストを記述するのは比較的簡単で費用対効果が高くなるが、７０〜８０％のカバレッジを達成することは非常に困難で高価である。
【００３６】
図２に示すように、プロセッサコア２には、小さな内部チェックサムエンジンとして機能するチェックサム生成器７０を備えることができる。プロセッサコア２および周囲の処理システムの様々なユニット７４（例えば、上述の素子３６、３８、４０、４２、４６、６０、６２のいずれか）は、それらの内部状態の複数ビットをチェックサムユニット７０に公開することができる。診断制御エージェント（プロセッサコア２で実行されるＳＴＬソフトウェアなど）は、チェックサム生成器７０を使用してチェックサム値を生成するために使用する特定の内部状態を選択することができる。チェックサム値は、ソフトウェアでアクセス可能なチェックサムレジスタ７２に格納され、そこからＳＴＬソフトウェアによって読み取られ、期待値と比較されて、この到達困難な状態の障害を識別することができる。
【００３７】
したがって、ラインフィルバッファの制御ビット、バス制御ユニットの識別子ビットなど、内部状態に到達しにくいものは、テストソフトウェアで視認可能になる。これにより、カバレッジが向上すると共に、ＳＴＬコードサイズと開発時間が削減されるが、これは、複数のループを使用する代替技術と高価な時間ベースのチェックをＳＴＬで使用して、内部状態のこれらの項目をプローブする場合よりもはるかに少ない命令で到達困難な領域をテストすることができるためである。
【００３８】
図３は、チェックサム生成ロジック７０をより詳細に示す。セレクタ８０は、上述のように、様々な制御記憶素子７４から内部状態のいくつかの項目８２を受け取る。所与の実施態様では、上記の制御記憶素子３６、３８、４２、４６、４０、６０、６２のすべてがそれらの値をチェックサム生成器７０に提供する必要はないことが理解されよう（制御記憶素子７４は、これらの要素のサブセットであっても、他の要素を含んでもよい）。セレクタ８０は、チェックサム計算器８４に供給されるこれらの状態項目の１つを選択し、この選択は、ソフトウェアで書き込み可能な選択制御レジスタ８８に基づいて設定された選択制御信号８６に基づいて行われる。したがって、ＳＴＬコードは、制御値を選択制御レジスタ８８に書き込んで、チェックサムを計算するためにどの内部状態の項目を使用すべきかを指定することができる。
【００３９】
チェックサム計算器８４は、チェックサム８６の以前の値およびチェックサム８０によって選択された内部状態８８の選択された項目に依存する循環関数を使用して、チェックサムの新しい値を計算する。ＣＲＣまたは類似の関数などの既知のチェックサム関数を使用することができる。チェックサムの新しい値は、チェックサムレジスタ７２に書き込まれる。チェックサムレジスタが更新されるかどうか７２は、チェックサムイネーブル信号９０に依存し、これは、プロセッサ２で実行されるソフトウェアからアクセス可能なソフトウェア書き込み可能レジスタ９２に再び依存する。例えば、ソフトウェア書き込み可能レジスタ９２の特定のビットに書き込むことにより、そのビットに書き込まれた値に依存して、チェックサムイネーブル信号がアサートまたはデアサートされるようにトリガーすることができる。チェックサムレジスタ７２は、非同期に更新されるレジスタとして実装することができ、チェックサムイネーブル信号９０がアサートされるたびに、チェックサム機能８４をチェックサムの以前の値に適用した結果およびセレクタによって提供される内部状態８９の現在選択されている項目に基づいてチェックサム値が更新される。あるいは、チェックサムレジスタ７２は、チェックサムイネーブル信号９０がアサートされた場合にクロック信号の各立ち上がりエッジ（または各立ち下がりエッジ）がチェックサムレジスタの次の更新をトリガーし、一方、イネーブル信号９０がデアサートされた場合にクロック信号のクロックパルスに関係なく、レジスタが現在の状態を保持する、同期レジスタであってもよい。
【００４０】
したがって、１つまたは複数の内部状態から導出されたチェックサムをソフトウェアに公開するためにハードウェア内にチェックサム生成器を設けることで、ソフトウェアテストライブラリの開発を大幅に簡素化することができる。
【００４１】
特定のアプリケーションでは、チェックサム生成器を使用して、プロセッサパイプラインのレジスタハザードを解析し、パイプラインをストールするか、プロデューサからコンシューマの命令にデータを転送することにより、検出されたハザードに応答するレジスタハザードロジック４２のカバレッジを増やすことができる。このようなハザードロジックでは、２種類の障害が発生する可能性がある。第一に、例えば、レジスタ追跡バッファ４４の記憶素子で発生した０または１のスタックエラーにより、ハザードロジックが、ハザードがないと誤って判断するが、実際にはハザードが存在する障害が存在する場合がある。第２のタイプの障害は、ハザードロジック４２がハザードがあると誤って判断するが、ハザードは実際には存在しない場合がある。第１のタイプの障害は、データの破損につながるため、ＳＴＬで比較的簡単に検出することができる。これは、ＳＴＬに含めるのが比較的簡単で費用効率の高いチェックサムを計算するためのソフトウェアベースのアルゴリズムを使用して検出することができる。しかし、第２のタイプの障害は、完全なデッドロックが発生しない限り、これらの障害が、計時しチェックするのが困難であり得るわずかな性能の低下を引き起こすだけであるため、ＳＴＬで検出するのがはるかに困難であるが、それはキャッシュミスなど、他のいくつかの要因が影響するからである。第２のタイプの障害については、チェックサム生成器を備えた上記の技術を使用して、ハザードロジック４２の内部状態をチェックサムテストハードウェアに公開することができる。小さなコードを実行すると、レジスタ追跡データから導出されたチェックサムが予想されるチェックサムと一致しないことにより、誤ったハザードを特定することができる。したがって、これにより、第２のタイプの障害のカバレッジが拡大し、第１のタイプの障害をプローブするためのコードサイズが小さくなる場合がある。これは大きな利点となり得る。例えば、上記のチェックサム生成回路７０を有さず、（データの破損を引き起こす）第１のタイプの障害のみをカバーして、（性能の低下のみを引き起こす）第２のタイプの障害を無視する、特定のプロセッサ設計のハードウェア障害から保護するように設計されたＳＴＬの場合では、ＳＴＬは、コードベースの大部分が専用であるにもかかわらず、レジスタハザードロジック４２のカバレッジの約５０％にしか到達することができなかった。プロセッサ設計にチェックサム生成インフラストラクチャ７０を含めることにより、第１のタイプの障害のカバレッジははるかに少ないコードしか必要とせず、また第２のタイプの障害のより大きなカバレッジも可能である。これはほんの一例であり、チェックサム生成器７０を使用して上記で説明した内部状態の他の項目を調べることで、同様の利点が得ることができる。
【００４２】
図２を参照すると、チェックサム生成回路７０によって生成されたチェックサムを診断制御エージェントに公開する別の方法は、診断上の理由でプロセッサコアの動作を監視するトレースモジュール１０２によって使用され得るトレースバッファ１００にチェックサムを提供することであってもよい。トレースモジュール１０２がコアの動作を監視し、トレースパケットをトレースバッファ１００に出力するように、ソフトウェア開発を支援するためにトレースモジュール１０２を設けることができる。トレースパケットは、所与のソフトウェアが実行されたときに発生したイベントに関する情報を提供する。例えば、トレースデータには、例えば実行された命令内の条件分岐の結果、および／または例外の発生を追跡することによって、実行された命令の正確な（命令ごとの）シーケンスを再構築できる情報を記録することができる。また、トレースモジュールは、アクセスされたデータアドレスまたは他の情報を記録することができる。通常、トレースモジュールは、処理回路内の制御インフラストラクチャに関連する、上述のマイクロアーキテクチャ状態７４の項目には関係しない、というのはこれらがプログラムのバグを反映するとは予想されないからである。しかし、チェックサムをトレースバッファに公開することにより、特定のイベントパターンが検出されたときにトレースモジュールが何らかのアクションを実行するのに役立つ可能性がある特定のイベントの組み合わせを検出することができる。トレースバッファ１００からのデータは、例えば、外部からアクセス可能な出力ポートを介して読み出すことにより、外部診断装置からアクセス可能であってもよい。同様に、外部診断デバイスは、トレースモジュール内の構成レジスタを構成して、検出するトレーストリガーイベントの定義や、トレースバッファ１００にキャプチャされる情報の種類の構成などの設定を構成することができる。したがって、トレースバッファ１００は、チェックサム生成器７０が生成器チェックサムを書き込み、診断制御エージェントからアクセスできるようにする診断記憶場所の別の例である。図２は、チェックサムがチェックサムレジスタ７２とトレースバッファ１００の両方に書き込まれる例を示しているが、他の例ではこれら２つのオプションのうちの１つしか提供できないことが理解されよう。
【００４３】
本出願では、「〜するように構成される」という語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。これに関連して、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または方法を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有してもよく、あるいはプロセッサまたは他の処理装置が機能を実行するようにプログラムされてもよい。「するように構成される」は、定義された動作を提供するために装置要素が何らかの方法で変更される必要があることを意味しない。
【００４４】
本発明の例示的な実施形態を添付の図面を参照しながら本明細書で詳細に説明したが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の範囲および趣旨から逸脱することなく、当業者によって様々な変更および修正がその中で達成され得ることを理解されたい。
【符号の説明】
【００４５】
２  プロセッサコア
４  フェッチステージ
６  命令キャッシュ
８  デコードステージ
１０  発行ステージ
１２  実行ステージ
１４  物理レジスタ
１６  ライトバックステージ
２０  算術／論理ユニット（ＡＬＵ）
２２  浮動小数点ユニット
２４  ロード／ストアユニット
３０  データキャッシュ
３２  メモリシステム
３４  キャッシュ記憶
３６  要求バッファ、制御記憶素子
３８  ラインフィルバッファ、制御記憶素子
４０  ライトバックバッファ、制御記憶素子
４２  レジスタハザードロジック、制御記憶素子
４４  レジスタ追跡バッファ
４６  メモリハザードロジック、制御記憶素子
４８  ストアバッファ
５０  システム
５２  外部メモリ、共有メモリ
５４  バスユニット
５６  メモリコントローラ
６０  要求キュー、制御記憶素子
６２  要求キュー、制御記憶素子
７０  チェックサム生成器
７２  チェックサムレジスタ
７４  マイクロアーキテクチャ状態、制御記憶素子、ユニット
８０  セレクタ、チェックサム
８２  内部状態の項目
８４  チェックサム機能、チェックサム計算器
８６  チェックサム、選択制御信号
８８  選択制御レジスタ、内部状態
８９  内部状態
９０  チェックサムイネーブル信号
９２  ソフトウェア書き込み可能レジスタ
１００  トレースバッファ
１０２  トレースモジュール
【図１】
2020113266.tif 000003
【図２】
2020113266.tif 000004
【図３】
2020113266.tif 000005
【外国語明細書】
2020113266000001.pdf