JP2010244327A - キャッシュシステム - Google Patents
キャッシュシステム Download PDFInfo
- Publication number
- JP2010244327A JP2010244327A JP2009092855A JP2009092855A JP2010244327A JP 2010244327 A JP2010244327 A JP 2010244327A JP 2009092855 A JP2009092855 A JP 2009092855A JP 2009092855 A JP2009092855 A JP 2009092855A JP 2010244327 A JP2010244327 A JP 2010244327A
- Authority
- JP
- Japan
- Prior art keywords
- access
- cache
- history information
- bits
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】コストの増大を抑制でき、デバッグの実行に要する時間の低減を可能とするキャッシュシステムを提供すること。
【解決手段】複数に分割されたメモリ領域を単位としてキャッシュ容量を変更可能であって、デバッグモードにおけるアクセスに関するアクセス履歴情報を作成する履歴作成手段である履歴作成部112を有し、デバッグモードにおいて、複数に分割されたメモリ領域のうちの少なくとも一つのメモリ領域へのキャッシュアクセスが制限され、キャッシュアクセスが制限されたメモリ領域へアクセス履歴情報が格納される。
【選択図】図1
【解決手段】複数に分割されたメモリ領域を単位としてキャッシュ容量を変更可能であって、デバッグモードにおけるアクセスに関するアクセス履歴情報を作成する履歴作成手段である履歴作成部112を有し、デバッグモードにおいて、複数に分割されたメモリ領域のうちの少なくとも一つのメモリ領域へのキャッシュアクセスが制限され、キャッシュアクセスが制限されたメモリ領域へアクセス履歴情報が格納される。
【選択図】図1
Description
本発明は、キャッシュシステムに関する。
複数のプロセッサコアを備えるマルチコアアーキテクチャとして、例えば、複数のコアでキャッシュメモリを共有するシステムがある。各コアが同時にキャッシュメモリへアクセスすると、あるコアによりデータが更新された場合に、更新前のデータを保持するコアとの間にデータの不一致が生じることとなる。このようにして生じるデータの不一致に対処する手段として、データの一貫性を確保するキャッシュコヒーレンシの制御がある。
ハードウェア構成によりキャッシュコヒーレンシを実現する場合、システムの大型化、アクセスレイテンシの増加によりコストが増大すること、性能の悪化を招くことが課題となる。ソフトウェアによりキャッシュコヒーレンシを実現する場合、例えばプロトコルが順守されない等、動作に不具合があった場合のデバッグが非常に困難であることが課題となる。特に、マルチコアアーキテクチャを構成するコアが多数であるほど、共有リソースへのアクセス情報の量が増大するため、デバッグのために必要となるデータの保持先の確保が困難となる、データの転送速度が追いつかなくなるという問題を生じる。アクセス情報の扱いをハードウェア構成によりサポートしようとすると、結局コストが増大することとなる。
例えば、特許文献1には、複数のプロセッサがメモリを共有する構成において、デバッグに必要となるデータを収集する収集手段を備えるデバッグ支援装置の技術が開示されている。かかる技術の場合、収集手段でデータを収集するためにはメインバスを介したデータの転送が必要となることから、デバッグの実行に要する時間が長期化するという問題を生じる。
本発明は、コストの増大を抑制でき、デバッグの実行に要する時間の低減を可能とするキャッシュシステムを提供することを目的とする。
本願発明の一態様によれば、複数に分割されたメモリ領域を単位としてキャッシュ容量を変更可能であって、デバッグモードにおけるアクセスに関するアクセス履歴情報を作成する履歴作成手段を有し、前記デバッグモードにおいて、複数に分割されたメモリ領域のうちの少なくとも一つのメモリ領域へのキャッシュアクセスが制限され、キャッシュアクセスが制限された前記メモリ領域へ前記アクセス履歴情報が格納されることを特徴とするキャッシュシステムが提供される。
本発明によれば、コストの増大を抑制でき、デバッグの実行に要する時間を低減できるという効果を奏する。
以下に添付図面を参照して、本発明の実施の形態に係るキャッシュシステムを詳細に説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態に係るキャッシュシステム111を備えるプロセッサシステムの構成を示すブロック図である。プロセッサシステムは、複数のプロセッサコア101(本実施の形態では、例えば4つのコア0〜3)、アービタ102、及びキャッシュシステム111を備える。キャッシュシステム111は、複数のプロセッサコア101に共有されている。
図1は、本発明の第1の実施の形態に係るキャッシュシステム111を備えるプロセッサシステムの構成を示すブロック図である。プロセッサシステムは、複数のプロセッサコア101(本実施の形態では、例えば4つのコア0〜3)、アービタ102、及びキャッシュシステム111を備える。キャッシュシステム111は、複数のプロセッサコア101に共有されている。
各プロセッサコア101は、プロセッサシステムの動作を制御するためのCPU(Central Processing Unit)であり、メインメモリに格納されたプログラムを実行する。アービタ102は、複数のプロセッサコア101からキャッシュメモリ111へのアクセスが競合した場合に、規定の方法によりアクセスを割り当てる。キャッシュシステム111は、バスを介してメインメモリ(図示省略)等に接続されている。
キャッシュシステム111は、デバッグモードレジスタ103、タイマ104、タグメモリ105、タグ比較器109、データメモリ107、インデックス生成器110、及び履歴作成部112を備える。タグメモリ105は、キャッシュライン単位でタグを格納する。タグ比較器109は、キャッシュシステム111へキャッシュアクセスされたアドレスのタグと、タグメモリ105から読み出されたタグ情報とを比較する。データメモリ107は、キャッシュライン単位でデータを格納する。
キャッシュシステム111は、最大容量時のメモリ領域を複数(本実施の形態では2つ)に分割して得られるメモリ領域を単位として、キャッシュ容量を動的に変更可能である。タグメモリ105は、インデックスの前半分が割り当てられたタグメモリ0と、後半分が割り当てられたタグメモリ1とに分割されている。データメモリ107は、インデックスの前半分が割り当てられたデータメモリ0と、後半分が割り当てられたデータメモリ1とに分割されている。
インデックス生成器110は、複数のプロセッサコア101からアクセスされたアドレスに応じて、キャッシュアクセスの対象となるインデックスを生成するインデックス生成手段として機能する。デバッグモードレジスタ103は、デバッグを実行するデバッグモードであるか否かを示す。タイマ104は、現在の時刻を管理する。履歴作成部112は、デバッグモードにおける複数のプロセッサコア101からのアクセスに関するアクセス履歴情報を作成する履歴作成手段として機能する。
本実施の形態で説明するプロセッサシステムにおけるアドレス空間は32ビット(バイトアドレス)、プロセッサコア101からのアクセスは64バイト単位とする。キャッシュシステム111は、例えば4ウェイのセットアソシアティブ方式を採用する。キャッシュシステム111のキャッシュサイズは4メガバイト、ラインサイズは256バイトとする。
本実施の形態で説明する構成は、本発明が属する分野の技術者によって、以下の説明要綱に基づき、適宜変形可能である。例えば、プロセッサコア101の数は4つである場合に限られず、1つ以上であれば良い。キャッシュシステム111のメモリ領域の分割数は2つである場合に限られず、複数であれば良く、例えば4つとしても良い。キャッシュシステム111は、4ウェイ以外のセットアソシアティブ方式、フルアソシアティブ方式、ダイレクトマップ方式のいずれの連想度を採用するものへも変形可能である。従って、以下の説明は、当該分野に対して開示される内容として広く理解されるべきであり、本発明を限定するものではない。
図2は、アドレスのうちタグを表すビット、インデックスを表すビットの位置の一例を示す図である。本実施の形態において、インデックスとしては、アドレスの8ビット目から19ビット目までの12ビットが使用される。タグとしては、アドレスの20ビット目から31ビット目までの12ビットが使用される。
デバッグモードレジスタ103は、通常モードにおいて、「0」をセットする。通常モードは、デバッグモード以外のモードであって、プロセッサシステム上においてソフトウェアを動作させる場合をいうものとする。通常モードにおいてソフトウェアの実行に不具合が発生した場合、デバッグモードレジスタ103は、「1」をセットする。デバッグモードレジスタ103に「1」をセットした状態で再度ソフトウェアを実行させることにより、デバッグが開始される。
図3は、インデックス生成器110の構造例を示す図である。デバッグモードレジスタ103の値が「0」である通常モードでは、プロセッサコア101からアクセスされたアドレスの8ビット目から19ビット目までをそのままインデックスとして出力する。タグメモリ105からは、アクセスがあったインデックスについて各ウェイのタグが読み出される。アクセスされたアドレスのタグと、タグメモリから読み出されたタグとは、タグ比較器109で比較される。そして、タグ比較器109での比較結果に応じて、データメモリ107へのアクセスがなされる。通常モードでは、タグメモリ0及び1、データメモリ0及び1のいずれもキャッシュアクセスの対象とされる。
デバッグモードレジスタ103の値が「1」であるデバッグモードでは、プロセッサコア101からアクセスされたアドレスの8ビット目から19ビット目までの12ビットのうち最上位である19ビット目が「0」に固定される。インデックス生成器110は、アクセスされたアドレスの8ビット目から18ビット目までと、「0」に固定された19ビット目とを、インデックスとして出力する。
12ビットの最上位が「0」に固定されることにより、インデックスの範囲は、通常時の前半分である、0〜2047を示すこととなる。これにより、デバッグモードでは、メモリ領域のうちインデックスの前半分が割り当てられたタグメモリ0、データメモリ0へのキャッシュアクセスとなり、インデックスの後半分が割り当てられたタグメモリ1、データメモリ1へのキャッシュアクセスが制限される。デバッグモードにおいて、インデックス生成器110は、キャッシュアクセスが制限されたメモリ領域以外のメモリ領域をキャッシュアクセスの対象とするインデックスを生成する。
キャッシュシステム111は、デバッグモードにおいて、キャッシュアクセスが制限されたメモリ領域であるタグメモリ1及びデータメモリ1を、アクセス履歴情報の格納に利用する。なお、ここで説明するインデックス生成器110の構造は、2分割されたメモリ領域の一方へデバッグ履歴情報を格納する場合の例であって、デバッグに割り当られるキャッシュ容量に応じて適宜変形しても良い。
ここで、プロセッサコア101のうちのコア0がアドレス「0x450f_6a00」へアクセスした場合を例として、デバッグモードにおけるキャッシュシステム111の動作を説明する。アドレス「0x450f_6a00」は、8ビット目から19ビット目までの12ビット「0xf6a」のうち最上位ビットが「0」へ変化することにより、インデックスは「0x76a」となる。タグメモリ0からは、インデックス「0x76a」のタグが読み出される。このとき、タグメモリ0からのタグの読み出しと同時に、タグメモリ1からは、通常モードにおけるインデックス「0xf6a」のタグが読み出される。タグメモリ1におけるインデックス「0xf6a」と、タグメモリ0におけるインデックス「0x76a」とは、単位となるメモリ領域内の互いに同様の位置にあって、対応関係にある。なお、デバッグモードでは、タグは、通常モードよりも1ビット増え、13ビットとなる。
図4は、タグメモリ105の1ワード分(1回のアクセス単位)のフォーマット401、402を示す図である。通常モードにおけるフォーマット401は、ウェイ(way)ごとに、タグ(Tag)ビットとして13ビット、ダーティ(D)ビットとして1ビット、及びバリッド(V)ビットとして1ビットが確保されている。タグビットは、キャッシュラインのタグを示す。ダーティビットは、キャッシュラインのデータが更新されることにより、キャッシュラインのデータを下位の階層にあるメモリに書き戻す必要があるか否かを示す。バリッドビットは、格納されているデータがタグとして有効であるか否かを示す。タグビットは、デバッグモードにおけるビット数に合わせて、13ビットが確保されている。フォーマット401は、各ウェイについて15ビットが割り当てられ、合計60ビットで構成されている。
デバッグモードにおけるフォーマット402には、ウェイごとに複数のカウンタ(Cnt)が確保されている。本実施の形態では、フォーマット402には、例えば4つのカウンタ0〜3が確保されている。各カウンタは、例えば3ビットが割り当てられる。カウンタは、後述するフィールドに格納されたアクセス履歴情報の数をカウントする。60ビットのうち、各ウェイについては15ビットが割り当てられている。各ウェイについて割り当てられた15ビットのうち、カウンタとして割り当てられた12ビット(3ビット×4)以外の3ビットは、使用されない。
タグ比較器109は、アクセスされたアドレスのタグと、タグメモリ0から読み出された各ウェイについてのタグとを比較する。タグ比較器109における比較の結果、例えば、ウェイ0がヒットした場合、データメモリ0のうち、インデックス番号とウェイ番号とで決定されるアクセス番地のキャッシュデータへのアクセスがなされる。データメモリ107へのアクセス単位は、例えば512ビットとする。このとき、データメモリ0へのアクセスと同時に、データメモリ1へデバッグ履歴情報が書き込まれる。データメモリ1のうちデバッグ履歴情報が書き込まれるアクセス番地と、データメモリ0のうちアクセスがあったアクセス番地とは、単位となるメモリ領域内の互いに同様の位置にあって、対応関係にある。
図5は、デバッグモードにおけるデータメモリ1の1ワード分(1回のアクセス単位)のフォーマット501を示す図である。フォーマット501は、複数のフィールドにより構成されている。本実施の形態では、フォーマット501は、例えば8つのフィールド0〜7で構成されている。各フィールドは、例えば、64ビットが割り当てられる。各フィールドは、IDビットとして2ビット、タグ(Tag)ビットとして13ビット、Timeビットとして32ビットが確保されている。
IDビットは、アクセス元のプロセッサコア101を識別するためのものである。本実施の形態では、4つのプロセッサコア101(コア0〜3)を識別するために、IDビットとして2ビットが確保される。タグビットは、現在アクセスしているタグを示す。Timeビットは、アクセス時点におけるタイマ104の数値である。Timeビットは、タイマ104のビット数と同じとされ、例えば32ビットとする。履歴作成部112は、デバッグモードレジスタ103の値が「1」とされたことを受けて、デバッグ履歴情報として、IDビット、タグビット、Timeビットの各データを作成する。各フィールドの64ビットのうち、残りの17ビットは、無効ビットとされる。
フォーマット501を構成する8つのフィールドのうち、デバッグ履歴情報が書き込まれるフィールドは、タグメモリ1から読み出したフォーマット402(図4参照)に含まれる16個のカウンタにより決定される。ここで説明する例では、ウェイ0へのアクセスであることから、16個のカウンタのうちウェイ0に割り当てられた4つのカウンタがまず選択される。4つのカウンタの位置は、256バイトのキャッシュラインのうち、プロセッサコア101からの64バイトのアクセス単位の位置を示している。キャッシュラインにおけるアクセス単位の位置は、プロセッサコア101からアクセスされたアドレスのうち、6ビット目及び7ビット目の2ビットにより示される。
ここで説明する例では、アドレス「0x450f_6a00」のうち6ビット目及び7ビット目の2ビットが「0x0」であることから、4つのカウンタのうち0番目のカウンタ0が選択される。ウェイ0のカウンタ0の値が「0」であるとした場合、0番目のフィールド0にアクセス履歴情報が書き込まれる。IDビットとしては、4つのプロセッサコア101のうちコア0を示す「0x0」が書き込まれる。
タグビットとしては、アドレス「0x450f_6a00」のうち20ビット目から31ビット目までの12ビット「0x450」の下位に、元の19ビット目の「1」が追加された13ビットである「0x8a1」が書き込まれる。Timeビットとしては、タイマ104の数値が書き込まれる。そして、アクセス履歴情報の書き込みと同時に、ウェイ0のカウンタ0の値は、「0」から「1」へインクリメントされる。キャッシュアクセスのヒット、キャッシュミスのいずれの場合もアクセス履歴情報は書き込まれ、カウンタの値はインクリメントされる。
以上説明したコア0によるアクセスに続けて、コア2が同じアドレス「0x450f_6a00」へアクセスしたとする。この場合も、ウェイ0がヒットすることとなるため、データメモリ1のうちコア0のときと同じアクセス番地へのアクセスがなされる。ウェイ0のカウンタ0の値は「1」であるから、1番目のフィールド1にアクセス履歴情報が書き込まれる。IDビットとしては、4つのプロセッサコア101のうちコア2を示す「0x2」が書き込まれる。タグビットとしては、コア0の場合と同じ「0x8a1」が書き込まれる。Timeビットとしては、タイマ104の数値が書き込まれる。そして、アクセス履歴情報の書き込みと同時に、ウェイ0のカウンタ0の値は、「1」から「2」へインクリメントされる。
以上説明したコア2によるアクセスに続けて、コア1がアドレス「0x1347_6a00」へアクセスしたとする。アドレス「0x1347_6a00」は、8ビット目から19ビット目までの12ビット「0x76a」のうち最上位ビットが「0」のまま変化しないことから、アドレス「0x450f_6a00」へのアクセスの場合と同様に、インデックスは「0x76a」となる。
ここで、アクセスされたアドレスのタグと、タグメモリ0から読み出された各ウェイについてのタグとを比較した結果、例えば、キャッシュミスによりウェイ0の書き換えが発生したとする。この場合、データメモリ1のうちアドレス「0x1347_6a00」へのアクセスの場合と同じアクセス番地の、ウェイ0へのアクセスがなされる。ウェイ0のカウンタ0の値は「2」であるから、2番目のフィールド2にアクセス履歴情報が書き込まれる。IDビットとしては、4つのプロセッサコア101のうちコア1を示す「0x1」が書き込まれる。
タグビットとしては、アドレス「0x1347_6a00」のうち20ビット目から31ビット目までの12ビット「0x134」の下位に、元の19ビット目の「0」が追加された13ビット「0x268」が書き込まれる。Timeビットとしては、タイマ104の数値が書き込まれる。そして、アクセス履歴情報の書き込みと同時に、ウェイ0のカウンタ0の値は、「2」から「3」へインクリメントされる。
キャッシュシステム111は、以上の動作を繰り返すことにより、データメモリ1における64バイトのフィールドごとに、最新の8回のアクセス履歴情報を格納することができる。格納されたアクセス履歴情報は、ソフトウェアのデバッグに活用することができる。本実施の形態に係るキャッシュシステム111は、キャッシュアクセスと同時に、キャッシュシステム1内部にアクセス履歴情報を格納することにより、データの転送による実行時間の長期化を回避できる。
また、アクセス履歴情報の格納のための要素を別途用意する必要がないため、システムの大型化、アクセスレイテンシの増加によるコストの増大を抑制することもできる。これにより、コストの増大を抑制でき、デバッグの実行に要する時間を低減できるという効果を奏する。キャッシュシステム111は、複数に分割されたメモリ領域のうち少なくとも一つへのキャッシュアクセスが制限され、他のメモリ領域へのキャッシュアクセスが可能であれば良く、メモリ領域の分割数に応じて適宜変形しても良い。
(第2の実施の形態)
図6は、本発明の第2の実施の形態に係るキャッシュシステム601を備えるプロセッサシステムの構成を示すブロック図である。本実施の形態に係るキャッシュシステム601は、ターゲットとして設定されたアドレスへのアクセスに対してアクセス履歴情報が格納されることを特徴とする。第1の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。ターゲット保持部602は、ターゲットとして設定されたアドレスを保持する。例えば、通常モードにおけるソフトウェアの実行により不具合が発生し、バグが発生していると思われるアドレスが絞り込まれた場合に、そのアドレスがターゲットとして設定される。
図6は、本発明の第2の実施の形態に係るキャッシュシステム601を備えるプロセッサシステムの構成を示すブロック図である。本実施の形態に係るキャッシュシステム601は、ターゲットとして設定されたアドレスへのアクセスに対してアクセス履歴情報が格納されることを特徴とする。第1の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。ターゲット保持部602は、ターゲットとして設定されたアドレスを保持する。例えば、通常モードにおけるソフトウェアの実行により不具合が発生し、バグが発生していると思われるアドレスが絞り込まれた場合に、そのアドレスがターゲットとして設定される。
図7は、ターゲット保持部602の内部構造の例を示す図である。ターゲット保持部602は、ターゲットとして設定されたアドレスを保持する部分と、保持されたアドレスに対応するカウンタとを備える。ターゲット保持部602は、少なくとも1つのアドレス(本実施の形態では、例えば2つのアドレス)を保持可能とされる。アドレスを保持する部分は、アドレスごとに、アドレス空間に合わせて32ビットが確保されている。各カウンタは、例えば8ビットが確保されている。カウンタは、ターゲットとされたアドレスごとにアクセス履歴情報の数をカウントする。カウンタのビット数の最大値は、以下の式により決定される。
(カウンタのビット数の最大値)=(アクセス履歴情報の格納に割り当てられたキャッシュ容量)/(ターゲットとして設定可能なアドレスの数)/(1回のアクセスにより書き込まれるデータ単位)
(カウンタのビット数の最大値)=(アクセス履歴情報の格納に割り当てられたキャッシュ容量)/(ターゲットとして設定可能なアドレスの数)/(1回のアクセスにより書き込まれるデータ単位)
本実施の形態の場合、アクセス履歴情報の格納に割り当てられたキャッシュ容量は2メガバイト、ターゲットとして設定可能なアドレスの数は2、1回のアクセスにより書き込まれるデータ単位は8バイト(64ビット)である。(2メガバイト)/2/(8バイト)=256であるから、カウンタは8ビットとされる。キャッシュシステム601は、ターゲットとして設定された2つのアドレスへのアクセスについて、最新の256回のアクセス履歴情報を格納することができる。
例えば、アドレス「0x1234_5600」、「0xabcd_ef00」がターゲットとして設定され、デバッグモードにおいて、プロセッサコア101のうちのコア1がアドレス「0xabcd_ef00」へアクセスしたとする。また、アドレス「0x1234_5600」についてカウンタの値が「0x73」、アドレス「0xabcd_ef00」についてカウンタの値が「0x21」であったとする。
本実施の形態の場合も、デバッグモードにおいて、タグメモリ1、データメモリ1へのキャッシュアクセスが制限される。アクセスされたアドレスのタグと、タグメモリ0から読み出された各ウェイについてのタグとを比較した結果、例えば、ウェイ1がヒットしたとする。この場合、データメモリ0のうち、インデックス番号とウェイ番号とで決定されるアクセス番地のキャッシュデータへのアクセスがなされる。このとき、データメモリ0へのアクセスと同時に、データメモリ1へデバッグ履歴情報が書き込まれる。
図8は、デバッグモードにおけるデータメモリ1の1ワード分(1回のアクセス単位)のフォーマット801を示す図である。フォーマット801は、64ビットで構成されている。フォーマット801は、IDビットとして2ビット、ウェイ(way)ビットとして2ビット、Timeビットとして32ビットが確保されている。IDビットは、アクセス元のプロセッサコア101を識別するためのものである。本実施の形態でも、4つのプロセッサコア101(コア0〜3)を識別するために、IDビットとして2ビットが確保される。ウェイビットは、アクセス先のウェイを識別するためのものである。本実施の形態では、4つのウェイ(ウェイ0〜3)を識別するために、ウェイビットとして2ビットが確保される。Timeビットは、アクセス時点におけるタイマ104の数値である。履歴作成部112は、デバッグモードレジスタ103の値が「1」とされたことを受けて、デバッグ履歴情報として、IDビット、ウェイビット、Timeビットの各データを作成する。フォーマット801の64ビットのうち、残りの28ビットは、無効ビットとされる。
ここで説明する例では、ターゲットに設定された2つのアドレスについてデータメモリ1を分割して使用する。例えば、データメモリ1のメモリ領域のうち、インデックスの前半分の1メガバイトがアドレス「0x1234_5678」へのアクセスにおけるデバッグ履歴情報の格納に、インデックスの後半分の1メガバイトがアドレス「0xabcd_ef00」へのアクセスにおけるデバッグ履歴情報の格納に、それぞれ使用される。
データメモリ1においてデータを書き込む位置は、ターゲット保持部602のうちアドレスごとのカウンタの値により決定される。アドレス「0xabcd_ef00」についてのカウンタの値「0x21」に対して、アドレス「0xabcd_ef00」へのアクセスによるデバッグ履歴情報は、0x21番目のフィールドに書き込まれる。1メガバイトのメモリ領域は、64ビットごとのフィールドであるものとする。そして、アクセス履歴情報の書き込みと同時に、アドレス「0xabcd_ef00」についてのカウンタの値は、「0x21」から「0x22」にインクリメントされる。
プロセッサコア101からアクセスされたアドレスが、ターゲットとして設定されているいずれのアドレスとも一致しない場合、アクセス履歴情報の格納はなされない。本実施の形態に係るキャッシュシステム601も、第1の実施の形態の場合と同様に、コストの増大を抑制でき、デバッグの実行に要する時間を低減できる。さらに、任意に設定されたアドレスへのアクセスについて多くのアクセス履歴情報を格納することができ、長期間に渡るアクセス履歴情報を参照することが可能となる。これにより、時間間隔の広いアクセス間の競合による不具合の解析が可能となる。
なお、ターゲット保持部602は、キャッシュシステム601を構成する他の要素とは別に設けられる場合に限られない。ターゲット保持部602は、キャッシュシステム601を構成するいずれの要素に格納することとしても良い。例えば、本実施の形態では、デバッグモードにおいてタグメモリ1からのタグの読み出しを行わないことから、タグメモリ1にターゲット保持部602を格納することとしても良い。ターゲットとして設定されるアドレスは2つである場合に限られず、1つ以上であれば良い。
(第3の実施の形態)
図9は、本発明の第3の実施の形態に係るキャッシュシステム901を備えるプロセッサシステムの構成を示すブロック図である。本実施の形態に係るキャッシュシステム901は、特定の条件が満たされる場合に、データメモリ1に格納されているアクセス履歴情報をメモリ903へ退避させることを特徴とする。第1の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。記憶手段であるメモリ903は、データメモリ107から出力されたアクセス履歴情報を格納する。アドレス設定部902は、メモリ903のうちアクセス履歴情報を格納するアドレスを設定し、設定されたアドレスを保持する。
図9は、本発明の第3の実施の形態に係るキャッシュシステム901を備えるプロセッサシステムの構成を示すブロック図である。本実施の形態に係るキャッシュシステム901は、特定の条件が満たされる場合に、データメモリ1に格納されているアクセス履歴情報をメモリ903へ退避させることを特徴とする。第1の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。記憶手段であるメモリ903は、データメモリ107から出力されたアクセス履歴情報を格納する。アドレス設定部902は、メモリ903のうちアクセス履歴情報を格納するアドレスを設定し、設定されたアドレスを保持する。
図10は、デバッグモードにおけるデータメモリ1の1ワード分(1回のアクセス単位)のフォーマット910を示す図である。フォーマット910は、複数のフィールドにより構成されている。本実施の形態では、フォーマット910は、例えば8つのフィールド0〜7で構成されている。各フィールドは、例えば、64ビットが割り当てられる。各フィールドは、IDビットとして2ビット、タグ(Tag)ビットとして13ビット、Timeビットとして32ビットに加えて、バリッド(V)ビット1ビットが確保されている。
バリッドビットは、当該フィールドに書き込まれているデータがアクセス履歴情報として有効であるか否かを示す。例えば、アクセス履歴情報は、バリッドビットが「0」である場合に、当該フィールドへ書き込まれる。当該フィールドへアクセス情報が書き込まれると、バリッドビットには、アクセス履歴情報として有効であることを示す「1」がセットされる。
キャッシュシステム901は、以下の2つの条件の少なくとも一方を満足する場合に、データメモリ1からメモリ903へアクセス履歴情報を退避させる。
(1)データメモリ1に格納されたアクセス履歴情報が制限容量を超える場合
(2)キャッシュミスによるリフィルが発生する場合
(1)データメモリ1に格納されたアクセス履歴情報が制限容量を超える場合
(2)キャッシュミスによるリフィルが発生する場合
(1)は、例えば、フォーマット402(図4参照)におけるカウンタの値が「7」であるフィールドへアクセス履歴情報が書き込まれる場合である。この場合、カウンタの値をインクリメントすると、桁が不足するために値は「0」に戻り、フィールドに格納されているアクセス履歴情報に新たなアクセス履歴情報が上書きされることとなる。このため、データメモリ1に格納されている64バイトのアクセス履歴情報をメモリ903へ出力し、改めて0番目のフィールド0に新たなアクセス履歴情報を書き込む。
(2)は、キャッシュミスにより、有効なキャッシュラインが無効化される場合である。この場合、アクセス履歴情報が書き込まれるキャッシュラインが変わることにより、互いに異なるアドレスへのアクセス履歴情報が同じキャッシュラインに格納されることとなる。このため、データメモリ1に格納されている256バイトのアクセス履歴情報をメモリ903へ出力し、改めて0番目のフィールド0に新たなアクセス履歴情報を書き込む。
(1)、(2)のいずれの場合も、アクセス履歴情報をメモリ903へ退避させるのと同時に、退避させたフィールドのバリッドビットは全て「0」にセットする。また、メモリ903においてアクセス履歴情報が書き込まれるアドレスは、アドレス設定部902により指定される。データメモリ1からメモリ903へのアクセス履歴情報の転送が終了した後、アドレス設定部902は、転送されたデータに相当する分、アドレスを加算する。
図11は、データメモリ1からメモリ903へアクセス履歴情報を退避させる際の1ワード分(1回のアクセス単位)のフォーマット911を示す図である。フォーマット911は、複数のフィールドにより構成されている。本実施の形態では、フォーマット911は、例えば8つのフィールド0〜7で構成されている。各フィールドは、例えば、64ビットが割り当てられる。各フィールドは、IDビットとして2ビット、タグ(Tag)ビットとして13ビット、Timeビットとして32ビット、バリッド(V)ビットとして1ビットが確保されている。
0番目のフィールドには、さらに、インデックス(Index)ビットとして11ビットと、オフセット(offset)ビットとして2ビットが確保されている。インデックス、オフセットビットは、フォーマット911がいずれのアドレスのアクセス履歴情報であるかを示す。デバッグモードでは、インデックスビットは、アドレスの8ビット目から18ビット目までの11ビットとなる。オフセットビットは、256バイトのキャッシュラインのうち、プロセッサコア101からの64バイトのアクセス単位の位置を表すものであって、アドレスの6ビット目及び7ビット目の2ビットとなる。
本実施の形態に係るキャッシュシステム901も、第1の実施の形態の場合と同様に、コストの増大を抑制でき、デバッグの実行に要する時間を低減できる。さらに、(1)の条件によるアクセス履歴情報の退避により、長期間に渡るアクセス履歴情報を参照することが可能となる。これにより、アクセスされるアドレスに関わらず、時間間隔の広いアクセス間の競合による不具合の解析が可能となる。(2)の条件によるアクセス履歴情報の退避により、インデックス単位ではなくキャッシュライン単位のアクセス履歴情報を得られる。これにより、さらに詳細なアクセス履歴情報を参照することが可能となる。
本実施の形態に係るキャッシュシステム901は、(1)、(2)の少なくとも一方を満足する特定の条件化にのみメモリ903へアクセス履歴情報を転送するため、デバッグの実行時間への悪影響を少なくすることができる。なお、キャッシュシステム901は、データメモリ1からアクセス履歴情報を退避させる条件として(1)及び(2)を採用する場合に限られず、(1)及び(2)の少なくとも一方を採用するものであれば良い。記憶手段は、アクセス履歴情報を格納する専用のメモリ903とする他、バスを介して接続されるメインメモリ等であっても良い。
103 デバッグモードレジスタ、110 インデックス生成器、111、601、901 キャッシュシステム、112 履歴作成部、602 ターゲット保持部、903 メモリ。
Claims (5)
- 複数に分割されたメモリ領域を単位としてキャッシュ容量を変更可能であって、
デバッグモードにおけるアクセスに関するアクセス履歴情報を作成する履歴作成手段を有し、
前記デバッグモードにおいて、複数に分割されたメモリ領域のうちの少なくとも一つのメモリ領域へのキャッシュアクセスが制限され、キャッシュアクセスが制限された前記メモリ領域へ前記アクセス履歴情報が格納されることを特徴とするキャッシュシステム。 - アクセスされたアドレスに応じて、キャッシュアクセスの対象となるインデックスを生成するインデックス生成手段を有し、
前記デバッグモードにおいて、前記インデックス生成手段は、キャッシュアクセスが制限された前記メモリ領域以外のメモリ領域をキャッシュアクセスの対象とするインデックスを生成することを特徴とする請求項1に記載のキャッシュシステム。 - 前記アクセス履歴情報が格納される対象とする少なくとも一つのアドレスをターゲットとして設定可能であって、
前記デバッグモードにおいて、前記ターゲットに設定されたアドレスへのアクセスに対して、前記メモリ領域へ前記アクセス履歴情報が格納されることを特徴とする請求項1又は2に記載のキャッシュシステム。 - 前記メモリ領域へ格納される前記アクセス履歴情報が制限容量を超える場合に、前記メモリ領域へ格納されている前記アクセス履歴情報を記憶手段へ退避させることを特徴とする請求項1又は2に記載のキャッシュシステム。
- キャッシュラインごとに前記アクセス履歴情報が格納され、キャッシュミスによるリフィルが発生する場合に、前記キャッシュラインへ格納されている前記アクセス履歴情報を記憶手段へ退避させることを特徴とする請求項1、2又は4に記載のキャッシュシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009092855A JP2010244327A (ja) | 2009-04-07 | 2009-04-07 | キャッシュシステム |
US12/718,378 US20100257319A1 (en) | 2009-04-07 | 2010-03-05 | Cache system, method of controlling cache system, and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009092855A JP2010244327A (ja) | 2009-04-07 | 2009-04-07 | キャッシュシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010244327A true JP2010244327A (ja) | 2010-10-28 |
Family
ID=42827113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009092855A Abandoned JP2010244327A (ja) | 2009-04-07 | 2009-04-07 | キャッシュシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100257319A1 (ja) |
JP (1) | JP2010244327A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014106736A (ja) * | 2012-11-27 | 2014-06-09 | Canon Inc | 情報処理装置及びその制御方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5843801B2 (ja) | 2013-03-19 | 2016-01-13 | 株式会社東芝 | 情報処理装置およびデバッグ方法 |
US20150012711A1 (en) * | 2013-07-04 | 2015-01-08 | Vakul Garg | System and method for atomically updating shared memory in multiprocessor system |
JP5936152B2 (ja) * | 2014-05-17 | 2016-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリアクセストレース方法 |
US11630781B2 (en) * | 2020-06-23 | 2023-04-18 | Micron Technology, Inc. | Cache metadata management |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5596739A (en) * | 1994-02-08 | 1997-01-21 | Meridian Semiconductor, Inc. | Method and apparatus for detecting memory segment violations in a microprocessor-based system |
US7266725B2 (en) * | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
US6397301B1 (en) * | 1999-12-29 | 2002-05-28 | Intel Corporation | Preventing access to secure area of a cache |
JP2001202270A (ja) * | 2000-01-21 | 2001-07-27 | Mitsubishi Electric Corp | 内部バストレース機能付プロセッサ |
GB2396930B (en) * | 2002-11-18 | 2005-09-07 | Advanced Risc Mach Ltd | Apparatus and method for managing access to a memory |
DE60306952T2 (de) * | 2002-11-18 | 2007-02-08 | Arm Ltd., Cherry Hinton | Zuordnung von virtuellen zu physischen speicheradressen in einem system mit einem sicheren bereich und einem nicht sicheren bereich |
US7055006B1 (en) * | 2003-04-30 | 2006-05-30 | Advanced Micro Devices, Inc. | System and method for blocking cache use during debugging |
US7197745B2 (en) * | 2003-05-02 | 2007-03-27 | Microsoft Corporation | User debugger for use on processes running in a high assurance kernel in an operating system |
US8205095B2 (en) * | 2007-11-02 | 2012-06-19 | Nvidia Corporation | Method and system for remotely debugging a failed computer machine |
-
2009
- 2009-04-07 JP JP2009092855A patent/JP2010244327A/ja not_active Abandoned
-
2010
- 2010-03-05 US US12/718,378 patent/US20100257319A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014106736A (ja) * | 2012-11-27 | 2014-06-09 | Canon Inc | 情報処理装置及びその制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100257319A1 (en) | 2010-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5300407B2 (ja) | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 | |
US7426626B2 (en) | TLB lock indicator | |
US5787478A (en) | Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy | |
JP3620473B2 (ja) | 共有キャッシュメモリのリプレイスメント制御方法及びその装置 | |
CN111095222A (zh) | 使用高速缓存一致性协议数据的基于高速缓存的追踪记录 | |
CN103294616B (zh) | 信息处理设备和控制方法 | |
CN109582214B (zh) | 数据访问方法以及计算机*** | |
US20070288694A1 (en) | Data processing system, processor and method of data processing having controllable store gather windows | |
US11494308B2 (en) | Methods and devices for bypassing the internal cache of an advanced DRAM memory controller | |
US9208088B2 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
CN109952565B (zh) | 内存访问技术 | |
JP2011198091A (ja) | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム | |
TW201011537A (en) | Apparatus and method for ensuring data coherency within a cache memory hierarchy of a microprocessor | |
US20110320720A1 (en) | Cache Line Replacement In A Symmetric Multiprocessing Computer | |
JP6088951B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
JP2007048296A (ja) | 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム | |
JP2010244327A (ja) | キャッシュシステム | |
JP2004030000A (ja) | 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式 | |
US9128856B2 (en) | Selective cache fills in response to write misses | |
US7562204B1 (en) | Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory | |
JP2004199677A (ja) | キャッシュを動作させるためのシステム及び方法 | |
EP3724774B1 (en) | Rinsing cache lines from a common memory page to memory | |
US20240193092A1 (en) | Processor support for using cache way-locking to simultaneously record plural execution contexts into independent execution traces | |
US20100131718A1 (en) | Multiprocessor system | |
WO2018036486A1 (zh) | 页表缓存的访问方法、页表缓存、处理器芯片和存储单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110801 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20120316 |