JP2008009857A - キャッシュ制御回路およびプロセッサシステム - Google Patents
キャッシュ制御回路およびプロセッサシステム Download PDFInfo
- Publication number
- JP2008009857A JP2008009857A JP2006181459A JP2006181459A JP2008009857A JP 2008009857 A JP2008009857 A JP 2008009857A JP 2006181459 A JP2006181459 A JP 2006181459A JP 2006181459 A JP2006181459 A JP 2006181459A JP 2008009857 A JP2008009857 A JP 2008009857A
- Authority
- JP
- Japan
- Prior art keywords
- address
- data
- data type
- prefetch
- cache
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】簡易な手法でキャッシュメモリを制御できるようにする。
【解決手段】キャッシュ制御回路3は、メインメモリ11のアドレスとデータ種別との対応関係の情報を格納するアドレス対データ種別テーブル4と、無効化すべきデータ種別の情報を設定するデータ種別設定レジスタ5と、キャッシュメモリ2内のデータのデータ種別がデータ種別設定レジスタ5に設定されたデータ種別に一致するか否かを検出する一致検出器6と、キャッシュメモリ2をキャッシュラインごとにアクセスするためのラインインデックスを生成するラインインデックスカウンタ7とを有する。アドレス範囲とデータ種別との対応関係の情報を格納したアドレス対データ種別テーブル4を設けるため、プロセッサ1が無効にすべきデータ種別を指定すると、そのデータ種別に対応するキャッシュラインを一括して無効化でき、無効化処理を簡易かつ迅速に行うことができる。
【選択図】図1
【解決手段】キャッシュ制御回路3は、メインメモリ11のアドレスとデータ種別との対応関係の情報を格納するアドレス対データ種別テーブル4と、無効化すべきデータ種別の情報を設定するデータ種別設定レジスタ5と、キャッシュメモリ2内のデータのデータ種別がデータ種別設定レジスタ5に設定されたデータ種別に一致するか否かを検出する一致検出器6と、キャッシュメモリ2をキャッシュラインごとにアクセスするためのラインインデックスを生成するラインインデックスカウンタ7とを有する。アドレス範囲とデータ種別との対応関係の情報を格納したアドレス対データ種別テーブル4を設けるため、プロセッサ1が無効にすべきデータ種別を指定すると、そのデータ種別に対応するキャッシュラインを一括して無効化でき、無効化処理を簡易かつ迅速に行うことができる。
【選択図】図1
Description
本発明は、キャッシュメモリを制御するキャッシュ制御回路と、キャッシュメモリを備えたプロセッサシステムとに関する。
メインメモリ内の大量の主記憶領域に対応するキャッシュメモリ内の記憶領域を無効化する場合に、無効化に要する時間を短縮する手法が提案されている(特許文献1参照)。この方式では、無効にしたい記憶領域に該当するか否かをキャッシュメモリ内のすべてのキャッシュラインについて検索し、検索されたキャッシュラインを無効化する処理を行う。
特許文献1に開示された手法では、無効化する主記憶領域が連続していないと高速化が期待できないという問題がある。
また、ストリームデータなどのアクセス頻度の低い大量のデータをプロセッサで処理する場合、この種のデータがキャッシュメモリを占有してしまうと、キャッシュメモリのヒット率が低下するという問題がある。
この問題を解決するため、アクセス頻度(アクセスパターン)を動的に予測してプリフェッチを行い、キャッシュメモリのヒット率を向上させる手法が広く用いられている。ところが、この場合、キャッシュメモリの制御が複雑になるという問題がある。
この問題を解決するため、異なる複数のアクセスパターンごとに別個の記憶領域を主記憶領域に設けておき、アドレスに応じて、それぞれ異なるアクセスパターンを選択する手法も知られている。この手法では、主記憶領域の使い方が制限され、プログラミングの自由度がなくなるという問題がある。
さらに、データの種別ごとに最適なキャッシュ容量が異なるにもかかわらず、従来は、特にデータ種別を区別せずにキャッシュメモリを利用していたため、キャッシュメモリを有効利用できないという問題があった。
特許第3176255号公報
本発明は、簡易な手法でキャッシュメモリを制御可能なキャッシュ制御回路およびプロセッサシステムを提供するものである。
本発明の一態様によれば、メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲に格納されるデータのデータ種別との対応関係の情報を格納し、前記格納された情報に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリ内のデータのデータ種別を出力するデータ種別格納部と、前記データ種別格納部から出力されたデータ種別がプロセッサから指示された無効にすべきまたは書き戻すべきデータ種別と一致するか否かを検出し、一致することが検出されると、該当するデータ種別を持つ前記キャッシュメモリ内のデータを無効化する無効化信号または該データを書き戻す書き戻し信号を前記キャッシュメモリに送信する一致検出部と、を備えることを特徴とするキャッシュ制御回路が提供される。
また、本発明の一態様によれば、メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲におけるプリフェッチ範囲との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するプリフェッチ範囲を出力するプリフェッチ情報格納部と、前記プリフェッチ情報格納部から出力されたプリフェッチ範囲に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリに対するプリフェッチ範囲を指定するプリフェッチ制御信号を生成して前記キャッシュメモリに送信するプリフェッチ制御信号生成部と、を備えることを特徴とするキャッシュ制御回路が提供される。
また、本発明の一態様によれば、メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲におけるラインインデックスの生成手順との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するラインインデックスの生成手順を出力するラインインデックス生成手順格納部と、前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備えることを特徴とするキャッシュ制御回路が提供される。
また、本発明の一態様によれば、プロセッサと、前記プロセッサの主記憶領域として用いられるメインメモリと、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリと、前記メインメモリの主記憶空間における複数のアドレス範囲と、個々のアドレス範囲におけるプリフェッチ範囲との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するプリフェッチ範囲を出力するプリフェッチ情報格納部と、前記プリフェッチ情報格納部から出力されたプリフェッチ範囲に基づいて、前記キャッシュメモリに対するプリフェッチ範囲を指定するプリフェッチ制御信号を生成して前記キャッシュメモリに送信するプリフェッチ制御信号生成部と、前記メインメモリの主記憶空間における複数のアドレス範囲と、個々のアドレス範囲におけるラインインデックスの生成手順との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するラインインデックスの生成手順を出力するラインインデックス生成手順格納部と、
前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記キャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備え、前記プリフェッチ制御信号生成部の処理動作と前記ラインインデックス生成部の処理動作とは並列して行われることを特徴とするプロセッサシステムが提供される。
前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記キャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備え、前記プリフェッチ制御信号生成部の処理動作と前記ラインインデックス生成部の処理動作とは並列して行われることを特徴とするプロセッサシステムが提供される。
本発明によれば、簡易な手法でキャッシュメモリを制御することができる。
以下、図面を参照しながら、本発明の実施形態について説明する。
(第1の実施形態)
図1は本発明の第1の実施形態によるプロセッサシステムの概略構成を示すブロック図である。図1のプロセッサシステムは、キャッシュメモリに格納されたデータを、データ種別ごとに一括して無効化することができることを特徴としている。
図1は本発明の第1の実施形態によるプロセッサシステムの概略構成を示すブロック図である。図1のプロセッサシステムは、キャッシュメモリに格納されたデータを、データ種別ごとに一括して無効化することができることを特徴としている。
図1のプロセッサシステムは、プロセッサ1と、プロセッサ1の主記憶領域として用いられるメインメモリ内のデータの少なくとも一部を格納するキャッシュメモリ2と、キャッシュメモリ2を制御するキャッシュ制御回路3とを備えている。
キャッシュ制御回路3は、メインメモリ11のアドレスとデータ種別との対応関係の情報を格納するアドレス対データ種別テーブル4と、無効化すべきデータ種別の情報を設定するデータ種別設定レジスタ5と、キャッシュメモリ2内のデータのデータ種別がデータ種別設定レジスタ5に設定されたデータ種別に一致するか否かを検出する一致検出器6と、キャッシュメモリ2をキャッシュラインごとにアクセスするためのラインインデックスを生成するラインインデックスカウンタ7とを有する。
キャッシュメモリ2は、図2に詳細構成を示すように、複数ビットからなるキャッシュラインを単位としてデータを格納するデータメモリ2aと、各キャッシュラインのアドレス情報を格納するタグメモリ2bとを有する。データメモリ2aの記憶容量は例えば256kバイトである。
タグメモリ2bは、メインメモリ11の対応アドレスを格納するタグアドレス格納部D1と、対応するキャッシュラインのデータが有効であるか否かを示す情報を格納する有効フラグ格納部D2と、対応するキャッシュラインのデータをメインメモリ11に書き戻したか否かを示す情報を格納するダーティ情報格納部D3とを有する。
図3はアドレス対データ種別テーブル4の構造を示す図である。プロセッサ1は、種々のデータを扱うが、データの無効処理を行う際には、同じデータ種別のデータをまとめて無効化する場合がある。そこで、本実施形態では、同じデータ種別のデータをメインメモリ11の連続した記憶領域に割り当てて、かつデータ種別ごとに識別番号(以下、データ種別ID)を付ける。アドレス対データ種別テーブル4は、図3に示すように、各データ種別のデータが格納されるメインメモリ11上のアドレス範囲と、データ種別IDとの対応関係を記憶している。
図3において、例えばアドレス0x0000〜0x03ff、0x0400〜0x07ff、0x0800〜0x0bff、0x0c00〜0x0fffの記憶領域にはデータ種別IDが0のデータ(例えば、プログラムコード)が格納され、アドレス0x1000〜0x13ffと0x1400〜0x17ffの記憶領域にはデータ種別IDが1のデータ(例えば、通常データ)が格納され、アドレス0x1800〜0x1bff、0x1c00〜0x1fff、0x2000〜0x23ff、0x2400〜0x27ffの記憶領域にはデータ種別IDが2のデータ(例えば、映像データ)が格納される。これらは一例であり、アドレス範囲とデータ種別との対応関係は実装形態に応じて設定される。また、プロセッサ1は、アドレス対データ種別テーブル4の内容を変更可能である。さらに、データの種別ごとにどのようなデータ種別IDを割り振るかも実装形態に応じて設定すればよい。
次に、図1のプロセッサシステムの動作を説明する。プロセッサ1は、予めアドレス対データ種別テーブル4に、アドレス範囲とデータ種別IDとの対応関係の情報を格納しておく。
例えば、不図示のI/O機器がDMA(Direct Memory Access)により直接メインメモリ11を更新した場合、そのアドレスに対応するキャッシュメモリ2内のデータは無効になる。この場合、キャッシュメモリ2内のタグメモリ2bの有効フラグ情報を無効に設定しなければならない。
本実施形態のプロセッサ1は、無効にすべきデータ種別を特定するためのデータを出力する。このデータは、データ種別設定レジスタ5に設定される。
その後、プロセッサ1は、ラインインデックスカウンタ7に、無効化開始信号を供給する。この信号を受けて、ラインインデックスカウンタ7は、キャッシュメモリ2のタグメモリ2bにアクセスして、各キャッシュラインごとにタグアドレスを読み出す。読み出されたタグアドレスは、アドレス対データ種別テーブル4に入力されて、そのアドレスに対応するデータ種別が読み出される。すなわち、アドレス対データ種別テーブル4は、各キャッシュライン内のデータに対応するデータ種別を順に出力する。
一致検出器6は、アドレス対データ種別テーブル4から出力されたデータ種別を、プロセッサ1が指示してデータ種別設定レジスタ5に設定されているデータ種別と比較する。そして、両者が一致すれば、そのキャッシュラインを無効にすべく、無効化信号をキャッシュメモリ2に送信する。
キャッシュメモリ2は、無効化信号に対応するキャッシュラインを無効化すべく、タグメモリ2b内の有効フラグ情報を書き換える。
このようにして、キャッシュラインごとに、データ種別が無効にすべきものか否かをチェックして、無効にすべきキャッシュラインのみタグメモリ2b内の有効フラグ情報を更新する。
図3に示すように、アドレス対データ種別テーブル4には、アドレス範囲とデータ種別との対応関係の情報が格納されるが、アドレス範囲が小さいと、アドレス対データ種別テーブル4のデータ量も大きくなってしまう。
アドレス対データ種別テーブル4内のアドレス範囲の領域には、最も単純には、図4に示すように、キャッシュラインのタグアドレスをキャッシュラインのサイズで割った値を入れればよい。ところが、この場合、キャッシュメモリ2のデータ容量によっては、アドレス対データ種別テーブル4のデータ量が膨大になる可能性がある。例えば、メインメモリ11の全記憶容量が16Mバイトで、ラインサイズが256バイト、データ種別が4ビットの場合、アドレス対データ種別テーブル4のサイズは32kバイトとなる。
そこで、図5に示すように、キャッシュラインの先頭アドレスをラインサイズで割った値をさらに2m(mは1以上の整数)で割った値をアドレス対データ種別テーブル4のインデックスに用いてもよい。この場合、データ種別は256×2mごとにしか設定できないが、大容量のストリームデータを扱う場合には実用上大きな問題とはならない。
一方、複数のプロセッサ1を有するマルチプロセッサシステムにおける共有データなどのように、無効化するデータ種別を設定すべき記憶領域が限定されている場合、その記憶領域のみを対象としてアドレス対データ種別テーブル4を設定すればよい。
例えば、図6はメインメモリ11の一部の記憶領域のみにデータ種別を設定すべき記憶領域を設けた場合のメモリマップを示す図である。図7は図6に対応するキャッシュ制御回路3の概略構成を示すブロック図である。図7のキャッシュ制御回路3では、アドレス対データ種別テーブル4を検索するためのインデックスとして、メインメモリ11の特定アドレスの上位側ビット列を設定するレジスタ8を設けており、このレジスタ8内の上位側ビット列がプロセッサ1により指定されたアドレスの上位側ビット列と一致する場合のみ、その特定アドレスの中位側ビット列をインデックスとしてアドレス対データ種別テーブル4を検索してデータ種別IDを検出する。
一方、上位側ビット列が一致しない場合、予め定めた特定のデータ種別をセレクタ9にて選択するようにして、アドレス対データ種別テーブル4のデータ量を削減することができる。
例えば、メインメモリ11のメモリ空間を32ビットとして、アドレス0x0002_0000からの64kバイトが共有メモリ領域である場合を考える。この場合、上位ビット設定レジスタ8には、ビット数である16と値0x0002が格納される。ラインサイズが32バイトで、データ種別を4ビットとすると、ラインサイズごとにデータ種別を設定しても、テーブルサイズはせいぜい1kバイトで済む。
上述したアドレス対データ種別テーブル4は、タグメモリ2bとは別個に設けられ、タグメモリ2bにはそのコピーが格納される。図8はアドレス対データ種別テーブル4の情報を有するタグメモリ2bの一例を示す図である。図2に示したタグメモリ2bと比べて、データ種別の識別番号を格納する領域D4が追加になっている。図8のタグメモリ2bを用いれば、データ種別を検出する目的でアドレス対データ種別テーブル4にアクセスする必要がなくなり、高速処理が可能になる。また、アドレス対データ識別テーブルを別個に設けるよりも、データ量を削減でき、実装面積の削減が図れる。
この他、上述したアドレス対データ種別テーブル4は、後述する第2および第3の実施形態で説明するプリフェッチ情報やラインインデックスの生成方法を選択する場合にも用いることができ、テーブルの共用化により、実装面積をより削減できる。
また、MMU(Memory Management Unit)を用いて仮想記憶を実現する場合に用いられるページテーブル内にアドレス対データ種別テーブル4の機能を持たせてもよい。例えば、図9はアドレス対データ種別テーブル4の機能を有するページテーブル10の構造を示す図である。図示のように、図9のページテーブル10には、仮想アドレスと、物理アドレスと、データ種別との対応関係の情報が登録されている。
アドレス対データ種別テーブル4に新たなデータを登録する場合、通常のインデックスによるランダムアクセスの他に、開始テーブルインデックスと終了テーブルインデックスを設定して、一括して書き込む手法などが考えられる。
このように、第1の実施形態では、アドレス範囲とデータ種別との対応関係の情報を格納したアドレス対データ種別テーブル4を設けるため、プロセッサ1が無効にすべきデータ種別を指定すると、そのデータ種別に対応するキャッシュラインを一括して無効化でき、無効化処理を簡易かつ迅速に行うことができる。
上述した実施形態では、キャッシュメモリ2内のデータの無効化処理を行う例について説明したが、本発明は、キャッシュメモリ2内のデータを書き戻す処理を行う場合にも適用可能である。この場合、アドレス対データ種別テーブル4の構成は図1と同じであり、プロセッサ1が書き戻すべきデータ種別を指定すると、そのデータ種別に対応する全キャッシュラインのデータがメインメモリ11に書き戻される。これにより、データの書き戻し処理を簡易かつ迅速に行うことができる。
(第2の実施形態)
第2の実施形態は、データ種別に応じてプリフェッチ範囲を切り替えるものである。
第2の実施形態は、データ種別に応じてプリフェッチ範囲を切り替えるものである。
図10は本発明の第2の実施形態によるプロセッサシステムの概略構成を示すブロック図である。図10のプロセッサシステムは、メインメモリ11と、キャッシュメモリ2と、キャッシュ制御回路3とを備えている。キャッシュ制御回路3は、図1と同様のアドレス対データ種別テーブル4と、プリフェッチアドレス生成部12と、キャッシュメモリ2およびメインメモリ11に対する読み書きを制御するキャッシュコントローラ13とを有する。
プリフェッチアドレス生成部12は、個々のデータ種別ごとにプリフェッチ範囲を指定する。プロセッサ1があるアドレスを発行すると、プリフェッチアドレス生成部12は、そのアドレスに対応するデータ種別をアドレス対データ種別テーブル4に問い合わせる。対応するデータ種別がアドレス対データ種別テーブル4で検索されると、そのデータ種別に対応するプリフェッチ範囲を検出して、プリフェッチすべきアドレス範囲を出力する。
プリフェッチアドレス生成部12から出力されたアドレス範囲は、キャッシュコントローラ13を介してメインメモリ11またはキャッシュメモリ2に供給される。
以上の処理により、データ種別ごとに、プリフェッチ範囲を切り替えることができる。ここで、データ種別としては、例えば、プログラム、通常データ、映像データ、音声データである。プリフェッチアドレス生成部12は、プログラムの場合には、例えば実行アドレスの前後数ステップ先までの命令をプリフェッチする。通常データの場合には、例えばプリフェッチを行わず、音声データの場合には、例えば現在のデータ位置から数バイト先までのデータをプリフェッチし、映像データの場合には、例えば表示位置が近接した周辺データをプリフェッチする。
なお、どういうデータ種別のときにどのようなプリフェッチを行うかは、種々の変形例が考えられ、実装形態に合わせて最適なプリフェッチ範囲を選択すればよい。
図11はプリフェッチアドレス生成部12で生成されるプリフェッチ範囲を説明する図であり、1次元のストリームデータ(例えば音声データ)のプリフェッチ処理を示している。図11の例では、プロセッサ1から指示されたアドレスに対応するキャッシュライン15だけでなく、その前後に位置する数ライン分のキャッシュライン(図示のハッチング領域)をプリフェッチしている。
一方、図12は2次元のストリームデータ(例えば画像データ)のプリフェッチ処理を示している。この場合、プロセッサ1から指示されたアドレスに対応する画像データ16の表示位置に近接する領域の画像データをプリフェッチする。図12の各升目はキャッシュライン単位の画像データを示しており、ハッチング領域がプリフェッチ範囲を表している。
図11や図12の例に示すように、本実施形態では、データ種別に応じてプリフェッチ範囲を切り替えている。プリフェッチ範囲の切替処理は図10のプリフェッチアドレス生成部12にて行われる。
図13はプリフェッチアドレス生成部12の内部構成の一例を示す図である。図示のように、プリフェッチアドレス生成部12の内部には、データ種別IDとプリフェッチ対象相対アドレスとの対応関係の情報を格納するプリフェッチ位置生成テーブル21が設けられている。このテーブルには、データ種別IDごとに、例えばプリフェッチすべき相対アドレスが最大4つまで登録可能となっている。なお、登録可能な相対アドレスは必ずしも4つに限定されず、実装形態に合わせて任意に増減すればよい。
プリフェッチアドレス生成部12は、プロセッサ1からあるアドレスが指示されると、そのアドレスのデータ種別IDをアドレス対データ種別テーブル4から検索し、検索されたデータ種別IDに対応するプリフェッチすべき相対アドレスをプリフェッチ位置生成テーブル21から取得して、取得した相対アドレスをプロセッサ1が発行したアドレスに加算して、プリフェッチ対象のアドレスを生成する。
このように、第2の実施形態では、アドレス対データ種別テーブル4の他に、プリフェッチアドレス生成部12を有するため、データ種別ごとに最適なプリフェッチ範囲を設定でき、プロセッサ1の性能向上を図れる。
(第3の実施形態)
第3の実施形態は、データ種別に応じてラインインデックスの生成方法を切り替えるものである。
第3の実施形態は、データ種別に応じてラインインデックスの生成方法を切り替えるものである。
図14は本発明の第3の実施形態によるプロセッサシステムの概略構成を示すブロック図である。図14のプロセッサシステムは、キャッシュ制御回路3内の構成が図10と異なっており、図10のプリフェッチアドレス生成部12の代わりに、ラインインデックス生成部22が設けられている。
ラインインデックス生成部22は、個々のデータ種別に応じたラインインデックスを生成する。プロセッサ1があるアドレスを発行すると、ラインインデックス生成部22は、そのアドレスに対応するデータ種別をアドレス対データ種別テーブル4に問い合わせる。対応するデータ種別がアドレス対データ種別テーブル4から検索されると、ラインインデックス生成部22はそのデータ種別に対応するラインインデックスを生成する。そして、生成したラインインデックスを利用して、キャッシュメモリ2のアクセスが行われる。
図15はデータ種別が異なるストリーム1および2のラインインデックス生成方法を説明する図である。ストリーム1のラインサイズ単位のインデックスの番号はキャッシュラインインデックスの番号と同じであるのに対し、ストリーム2のラインサイズ単位のインデックスとキャッシュラインインデックスとの対応関係はランダムになっている。例えば、ストリーム2のラインサイズ単位のインデックス8はキャッシュラインインデックス1に、ラインサイズ単位のインデックス4はキャッシュラインインデックス2に、ラインサイズ単位のインデックス12はキャッシュラインインデックス3にそれぞれ対応づけられている。
このように、ストリーム1と2でラインインデックスの生成方法を変えている理由は、ストリーム1と2を同時並行的に処理する場合、それぞれのラインインデックス生成方法が異なることから、同じキャッシュラインをアクセスする可能性が低くなり、データの競合も起きにくくなって、プロセッサ1の性能が向上するためである。なお、図15の場合でも、データの競合が完全になくなるわけではない。競合が起こった場合は、後にアクセスした方がキャッシュラインを更新するため、優先的にキャッシュメモリ2を使うことになる。
図15では、ストリーム1と2のラインサイズ単位のインデックスがキャッシュラインインデックスに一対一に対応する例を説明したが、ストリームの複数のインデックスが同じキャッシュラインインデックスに対応していてもよい。例えば、図16は、ストリーム1のラインサイズ単位のインデックスはキャッシュラインインデックスに一対一に対応するが、ストリーム2のラインサイズ単位のインデックスは異なる2つが一つのキャッシュラインインデックスに対応する例を示している。
ストリーム2のラインインデックスは、アドレスの上位側ビット列だけを用いることで容易に実現できる。図16の例では、ストリーム2のラインインデックスの最下位ビットを「0」に設定しており、偶数番目のキャッシュラインのみをアクセスすることになって、キャッシュメモリ2の容量を制限できる。なお、ストリームデータごとに使用可能なウェイ(way)を制限するようにしてもよい。
図17(a)は一般的なラインインデックスの生成方法を説明する図、図17(b)は本実施形態によるラインインデックスの生成方法を説明する図である。一般的なラインインデックスは、図17(a)に示すように、プロセッサ1が発行したアドレスの一部を用いて生成される。具体的には、ラインインデックスは、タグアドレスとオフセットアドレスとの間に位置するビット列である。
一方、本実施形態によるラインインデックスは、図17(b)に示すように、タグアドレスを利用して生成される。
図15のストリーム2は、ラインインデックスとキャッシュライン番号とがランダムになっているが、これを実現するには、図17(b)に示すように、タグアドレスの各ビットをランダム化(シャッフル)してラインインデックスの各ビットに割り振ることにより実現される。
また、図16のストリーム2は、2つのラインインデックスが同じキャッシュラインに対応づけられているが、これを実現するには、図17(b)に示すように、ラインインデックスの最下位ビットに「0」または「1」を付加すればよい。
ラインインデックス生成部22の内部には、図18に示すようなラインインデックス生成方法テーブル23が設けられている。このテーブル23には、データ種別IDとラインインデックスのビット情報との対応関係の情報が格納されている。より具体的には、このテーブル23には、データ種別IDごとに、元のタグアドレスの何ビット目がラインインデックスの何ビット目に対応するかを示す情報が格納される。したがって、このテーブル23により、個々のデータ種別ごとに最適なラインインデックス方法を選択できる。
このように、第3の実施形態では、データ種別に応じてラインインデックスの生成方法を切り替えるため、キャッシュメモリ2にアクセスするデータの競合を防止できるとともに、キャッシュメモリ2を有効利用できる。
(第4の実施形態)
上述した第2および第3の実施形態を組み合わせて、プリフェッチ範囲を切り替える処理とラインインデックスの生成方法を切り替える処理とを並列的に実行してもよい。
上述した第2および第3の実施形態を組み合わせて、プリフェッチ範囲を切り替える処理とラインインデックスの生成方法を切り替える処理とを並列的に実行してもよい。
図19は本発明の第4の実施形態によるプロセッサシステムの概略構成を示すブロック図、図20は図19の処理動作を説明するフローチャートである。
図19のプロセッサシステムは、第2の実施形態で説明したプリフェッチアドレス生成部12と、第3の実施形態で説明したラインインデックス生成部22とを備えている。プリフェッチアドレス生成部12とラインインデックス生成部22は同時並行的に動作することが可能である。
以下、図20のフローチャートに基づいて、本実施形態によるプロセッサシステムの処理動作を説明する。プロセッサ1があるアドレスを発行すると、そのアドレスに対応するデータ種別IDをアドレス対データ種別テーブル4から検索する(ステップS1)。
次に、プリフェッチアドレス生成部12とラインインデックス生成部22を並行して動作させる。プリフェッチアドレス生成部12では、検索されたデータ種別IDに対応するプリフェッチ用の相対アドレスを取得し(ステップS2)、その相対アドレスを、プロセッサ1から発行されたアドレスに加算してプリフェッチ対象アドレスを生成する(ステップS3)。一方、ラインインデックス生成部22では、検索されたデータ種別IDに対応するラインインデックス生成方法を取得し(ステップS4)、そのラインインデックス生成方法を用いて、ラインインデックスを生成する(ステップS5)。
このように、第4の実施形態では、データ種別に応じたプリフェッチ範囲の設定と、データ種別に応じたラインインデックス生成方法の設定とを同時並行的に行うため、データ種別ごとに最適なプリフェッチ範囲とラインインデックス生成方法を設定でき、プロセッサ1の性能向上が図れる。
なお、図19のプロセッサシステムに第1の実施形態の機能を追加してもよい。すなわち、データ種別ごとに一括してキャッシュメモリ2を無効化できるようにしてもよい。この場合、図19の構成に、図1に示したデータ種別設定レジスタ5と一致検出器6を追加すればよい。
(第5の実施形態)
上述した第1〜第4の実施形態では、プロセッサ1を一つだけ備えたプロセッサシステムについて説明したが、本発明は複数のプロセッサ(CPU)1を備えたマルチプロセッサシステムにも適用可能である。
上述した第1〜第4の実施形態では、プロセッサ1を一つだけ備えたプロセッサシステムについて説明したが、本発明は複数のプロセッサ(CPU)1を備えたマルチプロセッサシステムにも適用可能である。
図21は本発明の第5の実施形態によるマルチプロセッサシステムの概略構成を示すブロック図である。図21のマルチプロセッサシステムは、共通のデータバスおよびアドレスバスに接続された複数のプロセッサ(CPU)1と、これらプロセッサ1が共有するメインメモリ11、キャッシュメモリ2およびキャッシュ制御回路3とを備えている。
図21に示すキャッシュメモリ2は、いわゆる二次キャッシュであり、不図示の一次キャッシュは各プロセッサ1が個別に備え、二次キャッシュを共有化することで、メモリ容量の削減を図れる。
1 プロセッサ
2 キャッシュメモリ
2a データメモリ
2b タグメモリ
3 キャッシュ制御回路
4 アドレス対データ種別テーブル
5 データ種別設定テーブル
6 一致検出器
7 ラインインデックスカウンタ
11 メインメモリ
12 プリフェッチアドレス生成部
13 キャッシュコントローラ
21 プリフェッチ位置生成テーブル
22 ラインインデックス生成部
2 キャッシュメモリ
2a データメモリ
2b タグメモリ
3 キャッシュ制御回路
4 アドレス対データ種別テーブル
5 データ種別設定テーブル
6 一致検出器
7 ラインインデックスカウンタ
11 メインメモリ
12 プリフェッチアドレス生成部
13 キャッシュコントローラ
21 プリフェッチ位置生成テーブル
22 ラインインデックス生成部
Claims (5)
- メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲に格納されるデータのデータ種別との対応関係の情報を格納し、前記格納された情報に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリ内のデータのデータ種別を出力するデータ種別格納部と、
前記データ種別格納部から出力されたデータ種別がプロセッサから指示された無効にすべきまたは書き戻すべきデータ種別と一致するか否かを検出し、一致することが検出されると、該当するデータ種別を持つ前記キャッシュメモリ内のデータを無効化する無効化信号または該データを書き戻す書き戻し信号を前記キャッシュメモリに送信する一致検出部と、を備えることを特徴とするキャッシュ制御回路。 - 前記キャッシュメモリは、
キャッシュラインを単位としてデータを格納するデータメモリと、
各キャッシュラインのタグアドレスに対応する前記メインメモリのアドレス、前記データメモリ内のデータが有効か否かを示す有効フラグ情報、および前記メインメモリへの書き戻しを行ったか否かを示すダーティ情報を格納するタグメモリと、を有し、
前記データ種別格納部に格納されたデータ種別は、前記タグメモリ内にコピーされることを特徴とする請求項1に記載のキャッシュ制御回路。 - メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲におけるプリフェッチ範囲との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するプリフェッチ範囲を出力するプリフェッチ情報格納部と、
前記プリフェッチ情報格納部から出力されたプリフェッチ範囲に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリに対するプリフェッチ範囲を指定するプリフェッチ制御信号を生成して前記キャッシュメモリに送信するプリフェッチ制御信号生成部と、を備えることを特徴とするキャッシュ制御回路。 - メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲におけるラインインデックスの生成手順との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するラインインデックスの生成手順を出力するラインインデックス生成手順格納部と、
前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備えることを特徴とするキャッシュ制御回路。 - プロセッサと、
前記プロセッサの主記憶領域として用いられるメインメモリと、
前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリと、
前記メインメモリの主記憶空間における複数のアドレス範囲と、個々のアドレス範囲におけるプリフェッチ範囲との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するプリフェッチ範囲を出力するプリフェッチ情報格納部と、
前記プリフェッチ情報格納部から出力されたプリフェッチ範囲に基づいて、前記キャッシュメモリに対するプリフェッチ範囲を指定するプリフェッチ制御信号を生成して前記キャッシュメモリに送信するプリフェッチ制御信号生成部と、
前記メインメモリの主記憶空間における複数のアドレス範囲と、個々のアドレス範囲におけるラインインデックスの生成手順との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するラインインデックスの生成手順を出力するラインインデックス生成手順格納部と、
前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記キャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備え、
前記プリフェッチ制御信号生成部の処理動作と前記ラインインデックス生成部の処理動作とは並列して行われることを特徴とするプロセッサシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006181459A JP2008009857A (ja) | 2006-06-30 | 2006-06-30 | キャッシュ制御回路およびプロセッサシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006181459A JP2008009857A (ja) | 2006-06-30 | 2006-06-30 | キャッシュ制御回路およびプロセッサシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008009857A true JP2008009857A (ja) | 2008-01-17 |
Family
ID=39067982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006181459A Pending JP2008009857A (ja) | 2006-06-30 | 2006-06-30 | キャッシュ制御回路およびプロセッサシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008009857A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011215805A (ja) * | 2010-03-31 | 2011-10-27 | Nec Corp | 情報処理装置及びデータアクセス方法 |
JP2012533811A (ja) * | 2009-07-20 | 2012-12-27 | フリースケール セミコンダクター インコーポレイテッド | プリフェッチ・モジュールを備える信号処理システムおよび集積回路、並びにそのための方法 |
US9904626B2 (en) | 2014-08-29 | 2018-02-27 | Samsung Electronics Co., Ltd. | Semiconductor device, semiconductor system and system on chip |
US10656944B2 (en) | 2014-12-27 | 2020-05-19 | Intel Corporation | Hardware apparatus and methods to prefetch a multidimensional block of elements from a multidimensional array |
-
2006
- 2006-06-30 JP JP2006181459A patent/JP2008009857A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012533811A (ja) * | 2009-07-20 | 2012-12-27 | フリースケール セミコンダクター インコーポレイテッド | プリフェッチ・モジュールを備える信号処理システムおよび集積回路、並びにそのための方法 |
US9652413B2 (en) | 2009-07-20 | 2017-05-16 | Nxp Usa, Inc. | Signal processing system and integrated circuit comprising a prefetch module and method therefor |
JP2011215805A (ja) * | 2010-03-31 | 2011-10-27 | Nec Corp | 情報処理装置及びデータアクセス方法 |
US9904626B2 (en) | 2014-08-29 | 2018-02-27 | Samsung Electronics Co., Ltd. | Semiconductor device, semiconductor system and system on chip |
US10656944B2 (en) | 2014-12-27 | 2020-05-19 | Intel Corporation | Hardware apparatus and methods to prefetch a multidimensional block of elements from a multidimensional array |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6012132A (en) | Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table | |
US10083126B2 (en) | Apparatus and method for avoiding conflicting entries in a storage structure | |
US20070130237A1 (en) | Transient cache storage | |
EP0976048A1 (en) | Page table walker which positions a sliding field in a virtual address using page size | |
JP2005302034A (ja) | メモリを管理するためのシステムおよび方法 | |
GB2468007A (en) | Data processing apparatus and method dependent on streaming preload instruction. | |
US20100011165A1 (en) | Cache management systems and methods | |
KR102478766B1 (ko) | 디스크립터 링 관리 | |
JP2008129712A (ja) | 情報処理装置およびデータ検索方法 | |
US7761665B2 (en) | Handling of cache accesses in a data processing apparatus | |
JP4009306B2 (ja) | キャッシュメモリおよびその制御方法 | |
JP2010086496A (ja) | キャッシュメモリを備えるベクトル計算機システム、及びその動作方法 | |
US7219197B2 (en) | Cache memory, processor and cache control method | |
JP2007156821A (ja) | キャッシュシステム及び共用2次キャッシュ | |
JP5319049B2 (ja) | キャッシュシステム | |
US20080016282A1 (en) | Cache memory system | |
US8266381B2 (en) | Varying an amount of data retrieved from memory based upon an instruction hint | |
JP2008009857A (ja) | キャッシュ制御回路およびプロセッサシステム | |
JP2006018841A (ja) | さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法 | |
JP3973129B2 (ja) | キャッシュメモリ装置及びそれを用いた中央演算処理装置 | |
US6574698B1 (en) | Method and system for accessing a cache memory within a data processing system | |
US7181590B2 (en) | Method for page sharing in a processor with multiple threads and pre-validated caches | |
US7900019B2 (en) | Data access target predictions in a data processing system | |
KR20070049677A (ko) | 가상 어드레스 캐시 및 고유 태스크 식별자를 이용하는데이터를 공유하기 위한 방법 | |
US20050268021A1 (en) | Method and system for operating a cache memory |