(57)【要約】【課題】コストの増大を抑制でき、デバッグの実行に要する時間の低減を可能とするキャッシュシステムを提供すること。【解決手段】複数に分割されたメモリ領域を単位としてキャッシュ容量を変更可能であって、デバッグモードにおけるアクセスに関するアクセス履歴情報を作成する履歴作成手段である履歴作成部１１２を有し、デバッグモードにおいて、複数に分割されたメモリ領域のうちの少なくとも一つのメモリ領域へのキャッシュアクセスが制限され、キャッシュアクセスが制限されたメモリ領域へアクセス履歴情報が格納される。【選択図】図１
2010244327.tif 000002
【特許請求の範囲】
【請求項１】
複数に分割されたメモリ領域を単位としてキャッシュ容量を変更可能であって、
デバッグモードにおけるアクセスに関するアクセス履歴情報を作成する履歴作成手段を有し、
前記デバッグモードにおいて、複数に分割されたメモリ領域のうちの少なくとも一つのメモリ領域へのキャッシュアクセスが制限され、キャッシュアクセスが制限された前記メモリ領域へ前記アクセス履歴情報が格納されることを特徴とするキャッシュシステム。
【請求項２】
アクセスされたアドレスに応じて、キャッシュアクセスの対象となるインデックスを生成するインデックス生成手段を有し、
前記デバッグモードにおいて、前記インデックス生成手段は、キャッシュアクセスが制限された前記メモリ領域以外のメモリ領域をキャッシュアクセスの対象とするインデックスを生成することを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
前記アクセス履歴情報が格納される対象とする少なくとも一つのアドレスをターゲットとして設定可能であって、
前記デバッグモードにおいて、前記ターゲットに設定されたアドレスへのアクセスに対して、前記メモリ領域へ前記アクセス履歴情報が格納されることを特徴とする請求項１又は２に記載のキャッシュシステム。
【請求項４】
前記メモリ領域へ格納される前記アクセス履歴情報が制限容量を超える場合に、前記メモリ領域へ格納されている前記アクセス履歴情報を記憶手段へ退避させることを特徴とする請求項１又は２に記載のキャッシュシステム。
【請求項５】
キャッシュラインごとに前記アクセス履歴情報が格納され、キャッシュミスによるリフィルが発生する場合に、前記キャッシュラインへ格納されている前記アクセス履歴情報を記憶手段へ退避させることを特徴とする請求項１、２又は４に記載のキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュシステムに関する。
【背景技術】
【０００２】
複数のプロセッサコアを備えるマルチコアアーキテクチャとして、例えば、複数のコアでキャッシュメモリを共有するシステムがある。各コアが同時にキャッシュメモリへアクセスすると、あるコアによりデータが更新された場合に、更新前のデータを保持するコアとの間にデータの不一致が生じることとなる。このようにして生じるデータの不一致に対処する手段として、データの一貫性を確保するキャッシュコヒーレンシの制御がある。
【０００３】
ハードウェア構成によりキャッシュコヒーレンシを実現する場合、システムの大型化、アクセスレイテンシの増加によりコストが増大すること、性能の悪化を招くことが課題となる。ソフトウェアによりキャッシュコヒーレンシを実現する場合、例えばプロトコルが順守されない等、動作に不具合があった場合のデバッグが非常に困難であることが課題となる。特に、マルチコアアーキテクチャを構成するコアが多数であるほど、共有リソースへのアクセス情報の量が増大するため、デバッグのために必要となるデータの保持先の確保が困難となる、データの転送速度が追いつかなくなるという問題を生じる。アクセス情報の扱いをハードウェア構成によりサポートしようとすると、結局コストが増大することとなる。
【０００４】
例えば、特許文献１には、複数のプロセッサがメモリを共有する構成において、デバッグに必要となるデータを収集する収集手段を備えるデバッグ支援装置の技術が開示されている。かかる技術の場合、収集手段でデータを収集するためにはメインバスを介したデータの転送が必要となることから、デバッグの実行に要する時間が長期化するという問題を生じる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１６５６７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、コストの増大を抑制でき、デバッグの実行に要する時間の低減を可能とするキャッシュシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願発明の一態様によれば、複数に分割されたメモリ領域を単位としてキャッシュ容量を変更可能であって、デバッグモードにおけるアクセスに関するアクセス履歴情報を作成する履歴作成手段を有し、前記デバッグモードにおいて、複数に分割されたメモリ領域のうちの少なくとも一つのメモリ領域へのキャッシュアクセスが制限され、キャッシュアクセスが制限された前記メモリ領域へ前記アクセス履歴情報が格納されることを特徴とするキャッシュシステムが提供される。
【発明の効果】
【０００８】
本発明によれば、コストの増大を抑制でき、デバッグの実行に要する時間を低減できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施の形態に係るキャッシュシステムを備えるプロセッサシステムの構成を示すブロック図である。
【図２】図２は、アドレスのうちタグを表すビット、インデックスを表すビットの位置の一例を示す図である。
【図３】図３は、インデックス生成器の構造例を示す図である。
【図４】図４は、タグメモリの１ワード分のフォーマットを示す図である。
【図５】図５は、デバッグモードにおけるデータメモリ１の１ワード分のフォーマットを示す図である。
【図６】図６は、第２の実施の形態に係るキャッシュシステムを備えるプロセッサシステムの構成を示すブロック図である。
【図７】図７は、ターゲット保持部の内部構造の例を示す図である。
【図８】図８は、デバッグモードにおけるデータメモリ１の１ワード分のフォーマットを示す図である。
【図９】図９は、第３の実施の形態に係るキャッシュシステムを備えるプロセッサシステムの構成を示すブロック図である。
【図１０】図１０は、デバッグモードにおけるデータメモリ１の１ワード分のフォーマットを示す図である。
【図１１】図１１は、データメモリ１からメモリへアクセス履歴情報を退避させる際の１ワード分のフォーマットを示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明の実施の形態に係るキャッシュシステムを詳細に説明する。
【００１１】
（第１の実施の形態）
図１は、本発明の第１の実施の形態に係るキャッシュシステム１１１を備えるプロセッサシステムの構成を示すブロック図である。プロセッサシステムは、複数のプロセッサコア１０１（本実施の形態では、例えば４つのコア０〜３）、アービタ１０２、及びキャッシュシステム１１１を備える。キャッシュシステム１１１は、複数のプロセッサコア１０１に共有されている。
【００１２】
各プロセッサコア１０１は、プロセッサシステムの動作を制御するためのＣＰＵ（Central  Processing  Unit）であり、メインメモリに格納されたプログラムを実行する。アービタ１０２は、複数のプロセッサコア１０１からキャッシュメモリ１１１へのアクセスが競合した場合に、規定の方法によりアクセスを割り当てる。キャッシュシステム１１１は、バスを介してメインメモリ（図示省略）等に接続されている。
【００１３】
キャッシュシステム１１１は、デバッグモードレジスタ１０３、タイマ１０４、タグメモリ１０５、タグ比較器１０９、データメモリ１０７、インデックス生成器１１０、及び履歴作成部１１２を備える。タグメモリ１０５は、キャッシュライン単位でタグを格納する。タグ比較器１０９は、キャッシュシステム１１１へキャッシュアクセスされたアドレスのタグと、タグメモリ１０５から読み出されたタグ情報とを比較する。データメモリ１０７は、キャッシュライン単位でデータを格納する。
【００１４】
キャッシュシステム１１１は、最大容量時のメモリ領域を複数（本実施の形態では２つ）に分割して得られるメモリ領域を単位として、キャッシュ容量を動的に変更可能である。タグメモリ１０５は、インデックスの前半分が割り当てられたタグメモリ０と、後半分が割り当てられたタグメモリ１とに分割されている。データメモリ１０７は、インデックスの前半分が割り当てられたデータメモリ０と、後半分が割り当てられたデータメモリ１とに分割されている。
【００１５】
インデックス生成器１１０は、複数のプロセッサコア１０１からアクセスされたアドレスに応じて、キャッシュアクセスの対象となるインデックスを生成するインデックス生成手段として機能する。デバッグモードレジスタ１０３は、デバッグを実行するデバッグモードであるか否かを示す。タイマ１０４は、現在の時刻を管理する。履歴作成部１１２は、デバッグモードにおける複数のプロセッサコア１０１からのアクセスに関するアクセス履歴情報を作成する履歴作成手段として機能する。
【００１６】
本実施の形態で説明するプロセッサシステムにおけるアドレス空間は３２ビット（バイトアドレス）、プロセッサコア１０１からのアクセスは６４バイト単位とする。キャッシュシステム１１１は、例えば４ウェイのセットアソシアティブ方式を採用する。キャッシュシステム１１１のキャッシュサイズは４メガバイト、ラインサイズは２５６バイトとする。
【００１７】
本実施の形態で説明する構成は、本発明が属する分野の技術者によって、以下の説明要綱に基づき、適宜変形可能である。例えば、プロセッサコア１０１の数は４つである場合に限られず、１つ以上であれば良い。キャッシュシステム１１１のメモリ領域の分割数は２つである場合に限られず、複数であれば良く、例えば４つとしても良い。キャッシュシステム１１１は、４ウェイ以外のセットアソシアティブ方式、フルアソシアティブ方式、ダイレクトマップ方式のいずれの連想度を採用するものへも変形可能である。従って、以下の説明は、当該分野に対して開示される内容として広く理解されるべきであり、本発明を限定するものではない。
【００１８】
図２は、アドレスのうちタグを表すビット、インデックスを表すビットの位置の一例を示す図である。本実施の形態において、インデックスとしては、アドレスの８ビット目から１９ビット目までの１２ビットが使用される。タグとしては、アドレスの２０ビット目から３１ビット目までの１２ビットが使用される。
【００１９】
デバッグモードレジスタ１０３は、通常モードにおいて、「０」をセットする。通常モードは、デバッグモード以外のモードであって、プロセッサシステム上においてソフトウェアを動作させる場合をいうものとする。通常モードにおいてソフトウェアの実行に不具合が発生した場合、デバッグモードレジスタ１０３は、「１」をセットする。デバッグモードレジスタ１０３に「１」をセットした状態で再度ソフトウェアを実行させることにより、デバッグが開始される。
【００２０】
図３は、インデックス生成器１１０の構造例を示す図である。デバッグモードレジスタ１０３の値が「０」である通常モードでは、プロセッサコア１０１からアクセスされたアドレスの８ビット目から１９ビット目までをそのままインデックスとして出力する。タグメモリ１０５からは、アクセスがあったインデックスについて各ウェイのタグが読み出される。アクセスされたアドレスのタグと、タグメモリから読み出されたタグとは、タグ比較器１０９で比較される。そして、タグ比較器１０９での比較結果に応じて、データメモリ１０７へのアクセスがなされる。通常モードでは、タグメモリ０及び１、データメモリ０及び１のいずれもキャッシュアクセスの対象とされる。
【００２１】
デバッグモードレジスタ１０３の値が「１」であるデバッグモードでは、プロセッサコア１０１からアクセスされたアドレスの８ビット目から１９ビット目までの１２ビットのうち最上位である１９ビット目が「０」に固定される。インデックス生成器１１０は、アクセスされたアドレスの８ビット目から１８ビット目までと、「０」に固定された１９ビット目とを、インデックスとして出力する。
【００２２】
１２ビットの最上位が「０」に固定されることにより、インデックスの範囲は、通常時の前半分である、０〜２０４７を示すこととなる。これにより、デバッグモードでは、メモリ領域のうちインデックスの前半分が割り当てられたタグメモリ０、データメモリ０へのキャッシュアクセスとなり、インデックスの後半分が割り当てられたタグメモリ１、データメモリ１へのキャッシュアクセスが制限される。デバッグモードにおいて、インデックス生成器１１０は、キャッシュアクセスが制限されたメモリ領域以外のメモリ領域をキャッシュアクセスの対象とするインデックスを生成する。
【００２３】
キャッシュシステム１１１は、デバッグモードにおいて、キャッシュアクセスが制限されたメモリ領域であるタグメモリ１及びデータメモリ１を、アクセス履歴情報の格納に利用する。なお、ここで説明するインデックス生成器１１０の構造は、２分割されたメモリ領域の一方へデバッグ履歴情報を格納する場合の例であって、デバッグに割り当られるキャッシュ容量に応じて適宜変形しても良い。
【００２４】
ここで、プロセッサコア１０１のうちのコア０がアドレス「０ｘ４５０ｆ＿６ａ００」へアクセスした場合を例として、デバッグモードにおけるキャッシュシステム１１１の動作を説明する。アドレス「０ｘ４５０ｆ＿６ａ００」は、８ビット目から１９ビット目までの１２ビット「０ｘｆ６ａ」のうち最上位ビットが「０」へ変化することにより、インデックスは「０ｘ７６ａ」となる。タグメモリ０からは、インデックス「０ｘ７６ａ」のタグが読み出される。このとき、タグメモリ０からのタグの読み出しと同時に、タグメモリ１からは、通常モードにおけるインデックス「０ｘｆ６ａ」のタグが読み出される。タグメモリ１におけるインデックス「０ｘｆ６ａ」と、タグメモリ０におけるインデックス「０ｘ７６ａ」とは、単位となるメモリ領域内の互いに同様の位置にあって、対応関係にある。なお、デバッグモードでは、タグは、通常モードよりも１ビット増え、１３ビットとなる。
【００２５】
図４は、タグメモリ１０５の１ワード分（１回のアクセス単位）のフォーマット４０１、４０２を示す図である。通常モードにおけるフォーマット４０１は、ウェイ（ｗａｙ）ごとに、タグ（Ｔａｇ）ビットとして１３ビット、ダーティ（Ｄ）ビットとして１ビット、及びバリッド（Ｖ）ビットとして１ビットが確保されている。タグビットは、キャッシュラインのタグを示す。ダーティビットは、キャッシュラインのデータが更新されることにより、キャッシュラインのデータを下位の階層にあるメモリに書き戻す必要があるか否かを示す。バリッドビットは、格納されているデータがタグとして有効であるか否かを示す。タグビットは、デバッグモードにおけるビット数に合わせて、１３ビットが確保されている。フォーマット４０１は、各ウェイについて１５ビットが割り当てられ、合計６０ビットで構成されている。
【００２６】
デバッグモードにおけるフォーマット４０２には、ウェイごとに複数のカウンタ（Ｃｎｔ）が確保されている。本実施の形態では、フォーマット４０２には、例えば４つのカウンタ０〜３が確保されている。各カウンタは、例えば３ビットが割り当てられる。カウンタは、後述するフィールドに格納されたアクセス履歴情報の数をカウントする。６０ビットのうち、各ウェイについては１５ビットが割り当てられている。各ウェイについて割り当てられた１５ビットのうち、カウンタとして割り当てられた１２ビット（３ビット×４）以外の３ビットは、使用されない。
【００２７】
タグ比較器１０９は、アクセスされたアドレスのタグと、タグメモリ０から読み出された各ウェイについてのタグとを比較する。タグ比較器１０９における比較の結果、例えば、ウェイ０がヒットした場合、データメモリ０のうち、インデックス番号とウェイ番号とで決定されるアクセス番地のキャッシュデータへのアクセスがなされる。データメモリ１０７へのアクセス単位は、例えば５１２ビットとする。このとき、データメモリ０へのアクセスと同時に、データメモリ１へデバッグ履歴情報が書き込まれる。データメモリ１のうちデバッグ履歴情報が書き込まれるアクセス番地と、データメモリ０のうちアクセスがあったアクセス番地とは、単位となるメモリ領域内の互いに同様の位置にあって、対応関係にある。
【００２８】
図５は、デバッグモードにおけるデータメモリ１の１ワード分（１回のアクセス単位）のフォーマット５０１を示す図である。フォーマット５０１は、複数のフィールドにより構成されている。本実施の形態では、フォーマット５０１は、例えば８つのフィールド０〜７で構成されている。各フィールドは、例えば、６４ビットが割り当てられる。各フィールドは、ＩＤビットとして２ビット、タグ（Ｔａｇ）ビットとして１３ビット、Ｔｉｍｅビットとして３２ビットが確保されている。
【００２９】
ＩＤビットは、アクセス元のプロセッサコア１０１を識別するためのものである。本実施の形態では、４つのプロセッサコア１０１（コア０〜３）を識別するために、ＩＤビットとして２ビットが確保される。タグビットは、現在アクセスしているタグを示す。Ｔｉｍｅビットは、アクセス時点におけるタイマ１０４の数値である。Ｔｉｍｅビットは、タイマ１０４のビット数と同じとされ、例えば３２ビットとする。履歴作成部１１２は、デバッグモードレジスタ１０３の値が「１」とされたことを受けて、デバッグ履歴情報として、ＩＤビット、タグビット、Ｔｉｍｅビットの各データを作成する。各フィールドの６４ビットのうち、残りの１７ビットは、無効ビットとされる。
【００３０】
フォーマット５０１を構成する８つのフィールドのうち、デバッグ履歴情報が書き込まれるフィールドは、タグメモリ１から読み出したフォーマット４０２（図４参照）に含まれる１６個のカウンタにより決定される。ここで説明する例では、ウェイ０へのアクセスであることから、１６個のカウンタのうちウェイ０に割り当てられた４つのカウンタがまず選択される。４つのカウンタの位置は、２５６バイトのキャッシュラインのうち、プロセッサコア１０１からの６４バイトのアクセス単位の位置を示している。キャッシュラインにおけるアクセス単位の位置は、プロセッサコア１０１からアクセスされたアドレスのうち、６ビット目及び７ビット目の２ビットにより示される。
【００３１】
ここで説明する例では、アドレス「０ｘ４５０ｆ＿６ａ００」のうち６ビット目及び７ビット目の２ビットが「０ｘ０」であることから、４つのカウンタのうち０番目のカウンタ０が選択される。ウェイ０のカウンタ０の値が「０」であるとした場合、０番目のフィールド０にアクセス履歴情報が書き込まれる。ＩＤビットとしては、４つのプロセッサコア１０１のうちコア０を示す「０ｘ０」が書き込まれる。
【００３２】
タグビットとしては、アドレス「０ｘ４５０ｆ＿６ａ００」のうち２０ビット目から３１ビット目までの１２ビット「０ｘ４５０」の下位に、元の１９ビット目の「１」が追加された１３ビットである「０ｘ８ａ１」が書き込まれる。Ｔｉｍｅビットとしては、タイマ１０４の数値が書き込まれる。そして、アクセス履歴情報の書き込みと同時に、ウェイ０のカウンタ０の値は、「０」から「１」へインクリメントされる。キャッシュアクセスのヒット、キャッシュミスのいずれの場合もアクセス履歴情報は書き込まれ、カウンタの値はインクリメントされる。
【００３３】
以上説明したコア０によるアクセスに続けて、コア２が同じアドレス「０ｘ４５０ｆ＿６ａ００」へアクセスしたとする。この場合も、ウェイ０がヒットすることとなるため、データメモリ１のうちコア０のときと同じアクセス番地へのアクセスがなされる。ウェイ０のカウンタ０の値は「１」であるから、１番目のフィールド１にアクセス履歴情報が書き込まれる。ＩＤビットとしては、４つのプロセッサコア１０１のうちコア２を示す「０ｘ２」が書き込まれる。タグビットとしては、コア０の場合と同じ「０ｘ８ａ１」が書き込まれる。Ｔｉｍｅビットとしては、タイマ１０４の数値が書き込まれる。そして、アクセス履歴情報の書き込みと同時に、ウェイ０のカウンタ０の値は、「１」から「２」へインクリメントされる。
【００３４】
以上説明したコア２によるアクセスに続けて、コア１がアドレス「０ｘ１３４７＿６ａ００」へアクセスしたとする。アドレス「０ｘ１３４７＿６ａ００」は、８ビット目から１９ビット目までの１２ビット「０ｘ７６ａ」のうち最上位ビットが「０」のまま変化しないことから、アドレス「０ｘ４５０ｆ＿６ａ００」へのアクセスの場合と同様に、インデックスは「０ｘ７６ａ」となる。
【００３５】
ここで、アクセスされたアドレスのタグと、タグメモリ０から読み出された各ウェイについてのタグとを比較した結果、例えば、キャッシュミスによりウェイ０の書き換えが発生したとする。この場合、データメモリ１のうちアドレス「０ｘ１３４７＿６ａ００」へのアクセスの場合と同じアクセス番地の、ウェイ０へのアクセスがなされる。ウェイ０のカウンタ０の値は「２」であるから、２番目のフィールド２にアクセス履歴情報が書き込まれる。ＩＤビットとしては、４つのプロセッサコア１０１のうちコア１を示す「０ｘ１」が書き込まれる。
【００３６】
タグビットとしては、アドレス「０ｘ１３４７＿６ａ００」のうち２０ビット目から３１ビット目までの１２ビット「０ｘ１３４」の下位に、元の１９ビット目の「０」が追加された１３ビット「０ｘ２６８」が書き込まれる。Ｔｉｍｅビットとしては、タイマ１０４の数値が書き込まれる。そして、アクセス履歴情報の書き込みと同時に、ウェイ０のカウンタ０の値は、「２」から「３」へインクリメントされる。
【００３７】
キャッシュシステム１１１は、以上の動作を繰り返すことにより、データメモリ１における６４バイトのフィールドごとに、最新の８回のアクセス履歴情報を格納することができる。格納されたアクセス履歴情報は、ソフトウェアのデバッグに活用することができる。本実施の形態に係るキャッシュシステム１１１は、キャッシュアクセスと同時に、キャッシュシステム１内部にアクセス履歴情報を格納することにより、データの転送による実行時間の長期化を回避できる。
【００３８】
また、アクセス履歴情報の格納のための要素を別途用意する必要がないため、システムの大型化、アクセスレイテンシの増加によるコストの増大を抑制することもできる。これにより、コストの増大を抑制でき、デバッグの実行に要する時間を低減できるという効果を奏する。キャッシュシステム１１１は、複数に分割されたメモリ領域のうち少なくとも一つへのキャッシュアクセスが制限され、他のメモリ領域へのキャッシュアクセスが可能であれば良く、メモリ領域の分割数に応じて適宜変形しても良い。
【００３９】
（第２の実施の形態）
図６は、本発明の第２の実施の形態に係るキャッシュシステム６０１を備えるプロセッサシステムの構成を示すブロック図である。本実施の形態に係るキャッシュシステム６０１は、ターゲットとして設定されたアドレスへのアクセスに対してアクセス履歴情報が格納されることを特徴とする。第１の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。ターゲット保持部６０２は、ターゲットとして設定されたアドレスを保持する。例えば、通常モードにおけるソフトウェアの実行により不具合が発生し、バグが発生していると思われるアドレスが絞り込まれた場合に、そのアドレスがターゲットとして設定される。
【００４０】
図７は、ターゲット保持部６０２の内部構造の例を示す図である。ターゲット保持部６０２は、ターゲットとして設定されたアドレスを保持する部分と、保持されたアドレスに対応するカウンタとを備える。ターゲット保持部６０２は、少なくとも１つのアドレス（本実施の形態では、例えば２つのアドレス）を保持可能とされる。アドレスを保持する部分は、アドレスごとに、アドレス空間に合わせて３２ビットが確保されている。各カウンタは、例えば８ビットが確保されている。カウンタは、ターゲットとされたアドレスごとにアクセス履歴情報の数をカウントする。カウンタのビット数の最大値は、以下の式により決定される。
（カウンタのビット数の最大値）＝（アクセス履歴情報の格納に割り当てられたキャッシュ容量）／（ターゲットとして設定可能なアドレスの数）／（１回のアクセスにより書き込まれるデータ単位）
【００４１】
本実施の形態の場合、アクセス履歴情報の格納に割り当てられたキャッシュ容量は２メガバイト、ターゲットとして設定可能なアドレスの数は２、１回のアクセスにより書き込まれるデータ単位は８バイト（６４ビット）である。（２メガバイト）／２／（８バイト）＝２５６であるから、カウンタは８ビットとされる。キャッシュシステム６０１は、ターゲットとして設定された２つのアドレスへのアクセスについて、最新の２５６回のアクセス履歴情報を格納することができる。
【００４２】
例えば、アドレス「０ｘ１２３４＿５６００」、「０ｘａｂｃｄ＿ｅｆ００」がターゲットとして設定され、デバッグモードにおいて、プロセッサコア１０１のうちのコア１がアドレス「０ｘａｂｃｄ＿ｅｆ００」へアクセスしたとする。また、アドレス「０ｘ１２３４＿５６００」についてカウンタの値が「０ｘ７３」、アドレス「０ｘａｂｃｄ＿ｅｆ００」についてカウンタの値が「０ｘ２１」であったとする。
【００４３】
本実施の形態の場合も、デバッグモードにおいて、タグメモリ１、データメモリ１へのキャッシュアクセスが制限される。アクセスされたアドレスのタグと、タグメモリ０から読み出された各ウェイについてのタグとを比較した結果、例えば、ウェイ１がヒットしたとする。この場合、データメモリ０のうち、インデックス番号とウェイ番号とで決定されるアクセス番地のキャッシュデータへのアクセスがなされる。このとき、データメモリ０へのアクセスと同時に、データメモリ１へデバッグ履歴情報が書き込まれる。
【００４４】
図８は、デバッグモードにおけるデータメモリ１の１ワード分（１回のアクセス単位）のフォーマット８０１を示す図である。フォーマット８０１は、６４ビットで構成されている。フォーマット８０１は、ＩＤビットとして２ビット、ウェイ（ｗａｙ）ビットとして２ビット、Ｔｉｍｅビットとして３２ビットが確保されている。ＩＤビットは、アクセス元のプロセッサコア１０１を識別するためのものである。本実施の形態でも、４つのプロセッサコア１０１（コア０〜３）を識別するために、ＩＤビットとして２ビットが確保される。ウェイビットは、アクセス先のウェイを識別するためのものである。本実施の形態では、４つのウェイ（ウェイ０〜３）を識別するために、ウェイビットとして２ビットが確保される。Ｔｉｍｅビットは、アクセス時点におけるタイマ１０４の数値である。履歴作成部１１２は、デバッグモードレジスタ１０３の値が「１」とされたことを受けて、デバッグ履歴情報として、ＩＤビット、ウェイビット、Ｔｉｍｅビットの各データを作成する。フォーマット８０１の６４ビットのうち、残りの２８ビットは、無効ビットとされる。
【００４５】
ここで説明する例では、ターゲットに設定された２つのアドレスについてデータメモリ１を分割して使用する。例えば、データメモリ１のメモリ領域のうち、インデックスの前半分の１メガバイトがアドレス「０ｘ１２３４＿５６７８」へのアクセスにおけるデバッグ履歴情報の格納に、インデックスの後半分の１メガバイトがアドレス「０ｘａｂｃｄ＿ｅｆ００」へのアクセスにおけるデバッグ履歴情報の格納に、それぞれ使用される。
【００４６】
データメモリ１においてデータを書き込む位置は、ターゲット保持部６０２のうちアドレスごとのカウンタの値により決定される。アドレス「０ｘａｂｃｄ＿ｅｆ００」についてのカウンタの値「０ｘ２１」に対して、アドレス「０ｘａｂｃｄ＿ｅｆ００」へのアクセスによるデバッグ履歴情報は、０ｘ２１番目のフィールドに書き込まれる。１メガバイトのメモリ領域は、６４ビットごとのフィールドであるものとする。そして、アクセス履歴情報の書き込みと同時に、アドレス「０ｘａｂｃｄ＿ｅｆ００」についてのカウンタの値は、「０ｘ２１」から「０ｘ２２」にインクリメントされる。
【００４７】
プロセッサコア１０１からアクセスされたアドレスが、ターゲットとして設定されているいずれのアドレスとも一致しない場合、アクセス履歴情報の格納はなされない。本実施の形態に係るキャッシュシステム６０１も、第１の実施の形態の場合と同様に、コストの増大を抑制でき、デバッグの実行に要する時間を低減できる。さらに、任意に設定されたアドレスへのアクセスについて多くのアクセス履歴情報を格納することができ、長期間に渡るアクセス履歴情報を参照することが可能となる。これにより、時間間隔の広いアクセス間の競合による不具合の解析が可能となる。
【００４８】
なお、ターゲット保持部６０２は、キャッシュシステム６０１を構成する他の要素とは別に設けられる場合に限られない。ターゲット保持部６０２は、キャッシュシステム６０１を構成するいずれの要素に格納することとしても良い。例えば、本実施の形態では、デバッグモードにおいてタグメモリ１からのタグの読み出しを行わないことから、タグメモリ１にターゲット保持部６０２を格納することとしても良い。ターゲットとして設定されるアドレスは２つである場合に限られず、１つ以上であれば良い。
【００４９】
（第３の実施の形態）
図９は、本発明の第３の実施の形態に係るキャッシュシステム９０１を備えるプロセッサシステムの構成を示すブロック図である。本実施の形態に係るキャッシュシステム９０１は、特定の条件が満たされる場合に、データメモリ１に格納されているアクセス履歴情報をメモリ９０３へ退避させることを特徴とする。第１の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。記憶手段であるメモリ９０３は、データメモリ１０７から出力されたアクセス履歴情報を格納する。アドレス設定部９０２は、メモリ９０３のうちアクセス履歴情報を格納するアドレスを設定し、設定されたアドレスを保持する。
【００５０】
図１０は、デバッグモードにおけるデータメモリ１の１ワード分（１回のアクセス単位）のフォーマット９１０を示す図である。フォーマット９１０は、複数のフィールドにより構成されている。本実施の形態では、フォーマット９１０は、例えば８つのフィールド０〜７で構成されている。各フィールドは、例えば、６４ビットが割り当てられる。各フィールドは、ＩＤビットとして２ビット、タグ（Ｔａｇ）ビットとして１３ビット、Ｔｉｍｅビットとして３２ビットに加えて、バリッド（Ｖ）ビット１ビットが確保されている。
【００５１】
バリッドビットは、当該フィールドに書き込まれているデータがアクセス履歴情報として有効であるか否かを示す。例えば、アクセス履歴情報は、バリッドビットが「０」である場合に、当該フィールドへ書き込まれる。当該フィールドへアクセス情報が書き込まれると、バリッドビットには、アクセス履歴情報として有効であることを示す「１」がセットされる。
【００５２】
キャッシュシステム９０１は、以下の２つの条件の少なくとも一方を満足する場合に、データメモリ１からメモリ９０３へアクセス履歴情報を退避させる。
（１）データメモリ１に格納されたアクセス履歴情報が制限容量を超える場合
（２）キャッシュミスによるリフィルが発生する場合
【００５３】
（１）は、例えば、フォーマット４０２（図４参照）におけるカウンタの値が「７」であるフィールドへアクセス履歴情報が書き込まれる場合である。この場合、カウンタの値をインクリメントすると、桁が不足するために値は「０」に戻り、フィールドに格納されているアクセス履歴情報に新たなアクセス履歴情報が上書きされることとなる。このため、データメモリ１に格納されている６４バイトのアクセス履歴情報をメモリ９０３へ出力し、改めて０番目のフィールド０に新たなアクセス履歴情報を書き込む。
【００５４】
（２）は、キャッシュミスにより、有効なキャッシュラインが無効化される場合である。この場合、アクセス履歴情報が書き込まれるキャッシュラインが変わることにより、互いに異なるアドレスへのアクセス履歴情報が同じキャッシュラインに格納されることとなる。このため、データメモリ１に格納されている２５６バイトのアクセス履歴情報をメモリ９０３へ出力し、改めて０番目のフィールド０に新たなアクセス履歴情報を書き込む。
【００５５】
（１）、（２）のいずれの場合も、アクセス履歴情報をメモリ９０３へ退避させるのと同時に、退避させたフィールドのバリッドビットは全て「０」にセットする。また、メモリ９０３においてアクセス履歴情報が書き込まれるアドレスは、アドレス設定部９０２により指定される。データメモリ１からメモリ９０３へのアクセス履歴情報の転送が終了した後、アドレス設定部９０２は、転送されたデータに相当する分、アドレスを加算する。
【００５６】
図１１は、データメモリ１からメモリ９０３へアクセス履歴情報を退避させる際の１ワード分（１回のアクセス単位）のフォーマット９１１を示す図である。フォーマット９１１は、複数のフィールドにより構成されている。本実施の形態では、フォーマット９１１は、例えば８つのフィールド０〜７で構成されている。各フィールドは、例えば、６４ビットが割り当てられる。各フィールドは、ＩＤビットとして２ビット、タグ（Ｔａｇ）ビットとして１３ビット、Ｔｉｍｅビットとして３２ビット、バリッド（Ｖ）ビットとして１ビットが確保されている。
【００５７】
０番目のフィールドには、さらに、インデックス（Ｉｎｄｅｘ）ビットとして１１ビットと、オフセット（ｏｆｆｓｅｔ）ビットとして２ビットが確保されている。インデックス、オフセットビットは、フォーマット９１１がいずれのアドレスのアクセス履歴情報であるかを示す。デバッグモードでは、インデックスビットは、アドレスの８ビット目から１８ビット目までの１１ビットとなる。オフセットビットは、２５６バイトのキャッシュラインのうち、プロセッサコア１０１からの６４バイトのアクセス単位の位置を表すものであって、アドレスの６ビット目及び７ビット目の２ビットとなる。
【００５８】
本実施の形態に係るキャッシュシステム９０１も、第１の実施の形態の場合と同様に、コストの増大を抑制でき、デバッグの実行に要する時間を低減できる。さらに、（１）の条件によるアクセス履歴情報の退避により、長期間に渡るアクセス履歴情報を参照することが可能となる。これにより、アクセスされるアドレスに関わらず、時間間隔の広いアクセス間の競合による不具合の解析が可能となる。（２）の条件によるアクセス履歴情報の退避により、インデックス単位ではなくキャッシュライン単位のアクセス履歴情報を得られる。これにより、さらに詳細なアクセス履歴情報を参照することが可能となる。
【００５９】
本実施の形態に係るキャッシュシステム９０１は、（１）、（２）の少なくとも一方を満足する特定の条件化にのみメモリ９０３へアクセス履歴情報を転送するため、デバッグの実行時間への悪影響を少なくすることができる。なお、キャッシュシステム９０１は、データメモリ１からアクセス履歴情報を退避させる条件として（１）及び（２）を採用する場合に限られず、（１）及び（２）の少なくとも一方を採用するものであれば良い。記憶手段は、アクセス履歴情報を格納する専用のメモリ９０３とする他、バスを介して接続されるメインメモリ等であっても良い。
【符号の説明】
【００６０】
１０３  デバッグモードレジスタ、１１０  インデックス生成器、１１１、６０１、９０１  キャッシュシステム、１１２  履歴作成部、６０２  ターゲット保持部、９０３  メモリ。
【図１】
2010244327.tif 000003
【図２】
2010244327.tif 000004
【図３】
2010244327.tif 000005
【図４】
2010244327.tif 000006
【図５】
2010244327.tif 000007
【図６】
2010244327.tif 000008
【図７】
2010244327.tif 000009
【図８】
2010244327.tif 000010
【図９】
2010244327.tif 000011
【図１０】
2010244327.tif 000012
【図１１】
2010244327.tif 000013