(57)【要約】【課題】簡易な手法でキャッシュメモリを制御できるようにする。【解決手段】キャッシュ制御回路３は、メインメモリ１１のアドレスとデータ種別との対応関係の情報を格納するアドレス対データ種別テーブル４と、無効化すべきデータ種別の情報を設定するデータ種別設定レジスタ５と、キャッシュメモリ２内のデータのデータ種別がデータ種別設定レジスタ５に設定されたデータ種別に一致するか否かを検出する一致検出器６と、キャッシュメモリ２をキャッシュラインごとにアクセスするためのラインインデックスを生成するラインインデックスカウンタ７とを有する。アドレス範囲とデータ種別との対応関係の情報を格納したアドレス対データ種別テーブル４を設けるため、プロセッサ１が無効にすべきデータ種別を指定すると、そのデータ種別に対応するキャッシュラインを一括して無効化でき、無効化処理を簡易かつ迅速に行うことができる。【選択図】図１
2008009857.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲に格納されるデータのデータ種別との対応関係の情報を格納し、前記格納された情報に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリ内のデータのデータ種別を出力するデータ種別格納部と、
前記データ種別格納部から出力されたデータ種別がプロセッサから指示された無効にすべきまたは書き戻すべきデータ種別と一致するか否かを検出し、一致することが検出されると、該当するデータ種別を持つ前記キャッシュメモリ内のデータを無効化する無効化信号または該データを書き戻す書き戻し信号を前記キャッシュメモリに送信する一致検出部と、を備えることを特徴とするキャッシュ制御回路。
【請求項２】
前記キャッシュメモリは、
キャッシュラインを単位としてデータを格納するデータメモリと、
各キャッシュラインのタグアドレスに対応する前記メインメモリのアドレス、前記データメモリ内のデータが有効か否かを示す有効フラグ情報、および前記メインメモリへの書き戻しを行ったか否かを示すダーティ情報を格納するタグメモリと、を有し、
前記データ種別格納部に格納されたデータ種別は、前記タグメモリ内にコピーされることを特徴とする請求項１に記載のキャッシュ制御回路。
【請求項３】
メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲におけるプリフェッチ範囲との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するプリフェッチ範囲を出力するプリフェッチ情報格納部と、
前記プリフェッチ情報格納部から出力されたプリフェッチ範囲に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリに対するプリフェッチ範囲を指定するプリフェッチ制御信号を生成して前記キャッシュメモリに送信するプリフェッチ制御信号生成部と、を備えることを特徴とするキャッシュ制御回路。
【請求項４】
メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲におけるラインインデックスの生成手順との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するラインインデックスの生成手順を出力するラインインデックス生成手順格納部と、
前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備えることを特徴とするキャッシュ制御回路。
【請求項５】
プロセッサと、
前記プロセッサの主記憶領域として用いられるメインメモリと、
前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリと、
前記メインメモリの主記憶空間における複数のアドレス範囲と、個々のアドレス範囲におけるプリフェッチ範囲との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するプリフェッチ範囲を出力するプリフェッチ情報格納部と、
前記プリフェッチ情報格納部から出力されたプリフェッチ範囲に基づいて、前記キャッシュメモリに対するプリフェッチ範囲を指定するプリフェッチ制御信号を生成して前記キャッシュメモリに送信するプリフェッチ制御信号生成部と、
前記メインメモリの主記憶空間における複数のアドレス範囲と、個々のアドレス範囲におけるラインインデックスの生成手順との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するラインインデックスの生成手順を出力するラインインデックス生成手順格納部と、
前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記キャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備え、
前記プリフェッチ制御信号生成部の処理動作と前記ラインインデックス生成部の処理動作とは並列して行われることを特徴とするプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを制御するキャッシュ制御回路と、キャッシュメモリを備えたプロセッサシステムとに関する。
【背景技術】
【０００２】
メインメモリ内の大量の主記憶領域に対応するキャッシュメモリ内の記憶領域を無効化する場合に、無効化に要する時間を短縮する手法が提案されている（特許文献１参照）。この方式では、無効にしたい記憶領域に該当するか否かをキャッシュメモリ内のすべてのキャッシュラインについて検索し、検索されたキャッシュラインを無効化する処理を行う。
【０００３】
特許文献１に開示された手法では、無効化する主記憶領域が連続していないと高速化が期待できないという問題がある。
【０００４】
また、ストリームデータなどのアクセス頻度の低い大量のデータをプロセッサで処理する場合、この種のデータがキャッシュメモリを占有してしまうと、キャッシュメモリのヒット率が低下するという問題がある。
【０００５】
この問題を解決するため、アクセス頻度（アクセスパターン）を動的に予測してプリフェッチを行い、キャッシュメモリのヒット率を向上させる手法が広く用いられている。ところが、この場合、キャッシュメモリの制御が複雑になるという問題がある。
【０００６】
この問題を解決するため、異なる複数のアクセスパターンごとに別個の記憶領域を主記憶領域に設けておき、アドレスに応じて、それぞれ異なるアクセスパターンを選択する手法も知られている。この手法では、主記憶領域の使い方が制限され、プログラミングの自由度がなくなるという問題がある。
【０００７】
さらに、データの種別ごとに最適なキャッシュ容量が異なるにもかかわらず、従来は、特にデータ種別を区別せずにキャッシュメモリを利用していたため、キャッシュメモリを有効利用できないという問題があった。
【特許文献１】特許第3176255号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、簡易な手法でキャッシュメモリを制御可能なキャッシュ制御回路およびプロセッサシステムを提供するものである。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲に格納されるデータのデータ種別との対応関係の情報を格納し、前記格納された情報に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリ内のデータのデータ種別を出力するデータ種別格納部と、前記データ種別格納部から出力されたデータ種別がプロセッサから指示された無効にすべきまたは書き戻すべきデータ種別と一致するか否かを検出し、一致することが検出されると、該当するデータ種別を持つ前記キャッシュメモリ内のデータを無効化する無効化信号または該データを書き戻す書き戻し信号を前記キャッシュメモリに送信する一致検出部と、を備えることを特徴とするキャッシュ制御回路が提供される。
【００１０】
また、本発明の一態様によれば、メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲におけるプリフェッチ範囲との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するプリフェッチ範囲を出力するプリフェッチ情報格納部と、前記プリフェッチ情報格納部から出力されたプリフェッチ範囲に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリに対するプリフェッチ範囲を指定するプリフェッチ制御信号を生成して前記キャッシュメモリに送信するプリフェッチ制御信号生成部と、を備えることを特徴とするキャッシュ制御回路が提供される。
【００１１】
また、本発明の一態様によれば、メインメモリの主記憶空間内の複数のアドレス範囲と、個々のアドレス範囲におけるラインインデックスの生成手順との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するラインインデックスの生成手順を出力するラインインデックス生成手順格納部と、前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備えることを特徴とするキャッシュ制御回路が提供される。
【００１２】
また、本発明の一態様によれば、プロセッサと、前記プロセッサの主記憶領域として用いられるメインメモリと、前記メインメモリ内のデータの少なくとも一部を格納するキャッシュメモリと、前記メインメモリの主記憶空間における複数のアドレス範囲と、個々のアドレス範囲におけるプリフェッチ範囲との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するプリフェッチ範囲を出力するプリフェッチ情報格納部と、前記プリフェッチ情報格納部から出力されたプリフェッチ範囲に基づいて、前記キャッシュメモリに対するプリフェッチ範囲を指定するプリフェッチ制御信号を生成して前記キャッシュメモリに送信するプリフェッチ制御信号生成部と、前記メインメモリの主記憶空間における複数のアドレス範囲と、個々のアドレス範囲におけるラインインデックスの生成手順との対応関係の情報を格納し、前記格納された情報に基づいて、プロセッサから指示されたアドレスに対応するラインインデックスの生成手順を出力するラインインデックス生成手順格納部と、
前記ラインインデックス生成部から出力されたラインインデックスの生成手順に基づいて、前記キャッシュメモリをアクセスするためのラインインデックスを生成して前記キャッシュメモリに送信するラインインデックス生成部と、を備え、前記プリフェッチ制御信号生成部の処理動作と前記ラインインデックス生成部の処理動作とは並列して行われることを特徴とするプロセッサシステムが提供される。
【発明の効果】
【００１３】
本発明によれば、簡易な手法でキャッシュメモリを制御することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら、本発明の実施形態について説明する。
【００１５】
（第１の実施形態）
図１は本発明の第１の実施形態によるプロセッサシステムの概略構成を示すブロック図である。図１のプロセッサシステムは、キャッシュメモリに格納されたデータを、データ種別ごとに一括して無効化することができることを特徴としている。
【００１６】
図１のプロセッサシステムは、プロセッサ１と、プロセッサ１の主記憶領域として用いられるメインメモリ内のデータの少なくとも一部を格納するキャッシュメモリ２と、キャッシュメモリ２を制御するキャッシュ制御回路３とを備えている。
【００１７】
キャッシュ制御回路３は、メインメモリ１１のアドレスとデータ種別との対応関係の情報を格納するアドレス対データ種別テーブル４と、無効化すべきデータ種別の情報を設定するデータ種別設定レジスタ５と、キャッシュメモリ２内のデータのデータ種別がデータ種別設定レジスタ５に設定されたデータ種別に一致するか否かを検出する一致検出器６と、キャッシュメモリ２をキャッシュラインごとにアクセスするためのラインインデックスを生成するラインインデックスカウンタ７とを有する。
【００１８】
キャッシュメモリ２は、図２に詳細構成を示すように、複数ビットからなるキャッシュラインを単位としてデータを格納するデータメモリ２ａと、各キャッシュラインのアドレス情報を格納するタグメモリ２ｂとを有する。データメモリ２ａの記憶容量は例えば２５６ｋバイトである。
【００１９】
タグメモリ２ｂは、メインメモリ１１の対応アドレスを格納するタグアドレス格納部Ｄ１と、対応するキャッシュラインのデータが有効であるか否かを示す情報を格納する有効フラグ格納部Ｄ２と、対応するキャッシュラインのデータをメインメモリ１１に書き戻したか否かを示す情報を格納するダーティ情報格納部Ｄ３とを有する。
【００２０】
図３はアドレス対データ種別テーブル４の構造を示す図である。プロセッサ１は、種々のデータを扱うが、データの無効処理を行う際には、同じデータ種別のデータをまとめて無効化する場合がある。そこで、本実施形態では、同じデータ種別のデータをメインメモリ１１の連続した記憶領域に割り当てて、かつデータ種別ごとに識別番号（以下、データ種別ＩＤ）を付ける。アドレス対データ種別テーブル４は、図３に示すように、各データ種別のデータが格納されるメインメモリ１１上のアドレス範囲と、データ種別ＩＤとの対応関係を記憶している。
【００２１】
図３において、例えばアドレス0x0000〜0x03ff、0x0400〜0x07ff、0x0800〜0x0bff、0x0c00〜0x0fffの記憶領域にはデータ種別ＩＤが０のデータ（例えば、プログラムコード）が格納され、アドレス0x1000〜0x13ffと0x1400〜0x17ffの記憶領域にはデータ種別ＩＤが１のデータ（例えば、通常データ）が格納され、アドレス0x1800〜0x1bff、0x1c00〜0x1fff、0x2000〜0x23ff、0x2400〜0x27ffの記憶領域にはデータ種別ＩＤが２のデータ（例えば、映像データ）が格納される。これらは一例であり、アドレス範囲とデータ種別との対応関係は実装形態に応じて設定される。また、プロセッサ１は、アドレス対データ種別テーブル４の内容を変更可能である。さらに、データの種別ごとにどのようなデータ種別ＩＤを割り振るかも実装形態に応じて設定すればよい。
【００２２】
次に、図１のプロセッサシステムの動作を説明する。プロセッサ１は、予めアドレス対データ種別テーブル４に、アドレス範囲とデータ種別ＩＤとの対応関係の情報を格納しておく。
【００２３】
例えば、不図示のＩ／Ｏ機器がＤＭＡ(Direct Memory Access）により直接メインメモリ１１を更新した場合、そのアドレスに対応するキャッシュメモリ２内のデータは無効になる。この場合、キャッシュメモリ２内のタグメモリ２ｂの有効フラグ情報を無効に設定しなければならない。
【００２４】
本実施形態のプロセッサ１は、無効にすべきデータ種別を特定するためのデータを出力する。このデータは、データ種別設定レジスタ５に設定される。
【００２５】
その後、プロセッサ１は、ラインインデックスカウンタ７に、無効化開始信号を供給する。この信号を受けて、ラインインデックスカウンタ７は、キャッシュメモリ２のタグメモリ２ｂにアクセスして、各キャッシュラインごとにタグアドレスを読み出す。読み出されたタグアドレスは、アドレス対データ種別テーブル４に入力されて、そのアドレスに対応するデータ種別が読み出される。すなわち、アドレス対データ種別テーブル４は、各キャッシュライン内のデータに対応するデータ種別を順に出力する。
【００２６】
一致検出器６は、アドレス対データ種別テーブル４から出力されたデータ種別を、プロセッサ１が指示してデータ種別設定レジスタ５に設定されているデータ種別と比較する。そして、両者が一致すれば、そのキャッシュラインを無効にすべく、無効化信号をキャッシュメモリ２に送信する。
【００２７】
キャッシュメモリ２は、無効化信号に対応するキャッシュラインを無効化すべく、タグメモリ２ｂ内の有効フラグ情報を書き換える。
【００２８】
このようにして、キャッシュラインごとに、データ種別が無効にすべきものか否かをチェックして、無効にすべきキャッシュラインのみタグメモリ２ｂ内の有効フラグ情報を更新する。
【００２９】
図３に示すように、アドレス対データ種別テーブル４には、アドレス範囲とデータ種別との対応関係の情報が格納されるが、アドレス範囲が小さいと、アドレス対データ種別テーブル４のデータ量も大きくなってしまう。
【００３０】
アドレス対データ種別テーブル４内のアドレス範囲の領域には、最も単純には、図４に示すように、キャッシュラインのタグアドレスをキャッシュラインのサイズで割った値を入れればよい。ところが、この場合、キャッシュメモリ２のデータ容量によっては、アドレス対データ種別テーブル４のデータ量が膨大になる可能性がある。例えば、メインメモリ１１の全記憶容量が１６Ｍバイトで、ラインサイズが２５６バイト、データ種別が４ビットの場合、アドレス対データ種別テーブル４のサイズは３２ｋバイトとなる。
【００３１】
そこで、図５に示すように、キャッシュラインの先頭アドレスをラインサイズで割った値をさらに２m（ｍは１以上の整数）で割った値をアドレス対データ種別テーブル４のインデックスに用いてもよい。この場合、データ種別は２５６×２mごとにしか設定できないが、大容量のストリームデータを扱う場合には実用上大きな問題とはならない。
【００３２】
一方、複数のプロセッサ１を有するマルチプロセッサシステムにおける共有データなどのように、無効化するデータ種別を設定すべき記憶領域が限定されている場合、その記憶領域のみを対象としてアドレス対データ種別テーブル４を設定すればよい。
【００３３】
例えば、図６はメインメモリ１１の一部の記憶領域のみにデータ種別を設定すべき記憶領域を設けた場合のメモリマップを示す図である。図７は図６に対応するキャッシュ制御回路３の概略構成を示すブロック図である。図７のキャッシュ制御回路３では、アドレス対データ種別テーブル４を検索するためのインデックスとして、メインメモリ１１の特定アドレスの上位側ビット列を設定するレジスタ８を設けており、このレジスタ８内の上位側ビット列がプロセッサ１により指定されたアドレスの上位側ビット列と一致する場合のみ、その特定アドレスの中位側ビット列をインデックスとしてアドレス対データ種別テーブル４を検索してデータ種別ＩＤを検出する。
【００３４】
一方、上位側ビット列が一致しない場合、予め定めた特定のデータ種別をセレクタ９にて選択するようにして、アドレス対データ種別テーブル４のデータ量を削減することができる。
【００３５】
例えば、メインメモリ１１のメモリ空間を３２ビットとして、アドレス0x0002_0000からの６４ｋバイトが共有メモリ領域である場合を考える。この場合、上位ビット設定レジスタ８には、ビット数である１６と値0x0002が格納される。ラインサイズが３２バイトで、データ種別を４ビットとすると、ラインサイズごとにデータ種別を設定しても、テーブルサイズはせいぜい１ｋバイトで済む。
【００３６】
上述したアドレス対データ種別テーブル４は、タグメモリ２ｂとは別個に設けられ、タグメモリ２ｂにはそのコピーが格納される。図８はアドレス対データ種別テーブル４の情報を有するタグメモリ２ｂの一例を示す図である。図２に示したタグメモリ２ｂと比べて、データ種別の識別番号を格納する領域Ｄ４が追加になっている。図８のタグメモリ２ｂを用いれば、データ種別を検出する目的でアドレス対データ種別テーブル４にアクセスする必要がなくなり、高速処理が可能になる。また、アドレス対データ識別テーブルを別個に設けるよりも、データ量を削減でき、実装面積の削減が図れる。
【００３７】
この他、上述したアドレス対データ種別テーブル４は、後述する第２および第３の実施形態で説明するプリフェッチ情報やラインインデックスの生成方法を選択する場合にも用いることができ、テーブルの共用化により、実装面積をより削減できる。
【００３８】
また、ＭＭＵ（Memory Management Unit）を用いて仮想記憶を実現する場合に用いられるページテーブル内にアドレス対データ種別テーブル４の機能を持たせてもよい。例えば、図９はアドレス対データ種別テーブル４の機能を有するページテーブル１０の構造を示す図である。図示のように、図９のページテーブル１０には、仮想アドレスと、物理アドレスと、データ種別との対応関係の情報が登録されている。
【００３９】
アドレス対データ種別テーブル４に新たなデータを登録する場合、通常のインデックスによるランダムアクセスの他に、開始テーブルインデックスと終了テーブルインデックスを設定して、一括して書き込む手法などが考えられる。
【００４０】
このように、第１の実施形態では、アドレス範囲とデータ種別との対応関係の情報を格納したアドレス対データ種別テーブル４を設けるため、プロセッサ１が無効にすべきデータ種別を指定すると、そのデータ種別に対応するキャッシュラインを一括して無効化でき、無効化処理を簡易かつ迅速に行うことができる。
【００４１】
上述した実施形態では、キャッシュメモリ２内のデータの無効化処理を行う例について説明したが、本発明は、キャッシュメモリ２内のデータを書き戻す処理を行う場合にも適用可能である。この場合、アドレス対データ種別テーブル４の構成は図１と同じであり、プロセッサ１が書き戻すべきデータ種別を指定すると、そのデータ種別に対応する全キャッシュラインのデータがメインメモリ１１に書き戻される。これにより、データの書き戻し処理を簡易かつ迅速に行うことができる。
【００４２】
（第２の実施形態）
第２の実施形態は、データ種別に応じてプリフェッチ範囲を切り替えるものである。
【００４３】
図１０は本発明の第２の実施形態によるプロセッサシステムの概略構成を示すブロック図である。図１０のプロセッサシステムは、メインメモリ１１と、キャッシュメモリ２と、キャッシュ制御回路３とを備えている。キャッシュ制御回路３は、図１と同様のアドレス対データ種別テーブル４と、プリフェッチアドレス生成部１２と、キャッシュメモリ２およびメインメモリ１１に対する読み書きを制御するキャッシュコントローラ１３とを有する。
【００４４】
プリフェッチアドレス生成部１２は、個々のデータ種別ごとにプリフェッチ範囲を指定する。プロセッサ１があるアドレスを発行すると、プリフェッチアドレス生成部１２は、そのアドレスに対応するデータ種別をアドレス対データ種別テーブル４に問い合わせる。対応するデータ種別がアドレス対データ種別テーブル４で検索されると、そのデータ種別に対応するプリフェッチ範囲を検出して、プリフェッチすべきアドレス範囲を出力する。
【００４５】
プリフェッチアドレス生成部１２から出力されたアドレス範囲は、キャッシュコントローラ１３を介してメインメモリ１１またはキャッシュメモリ２に供給される。
【００４６】
以上の処理により、データ種別ごとに、プリフェッチ範囲を切り替えることができる。ここで、データ種別としては、例えば、プログラム、通常データ、映像データ、音声データである。プリフェッチアドレス生成部１２は、プログラムの場合には、例えば実行アドレスの前後数ステップ先までの命令をプリフェッチする。通常データの場合には、例えばプリフェッチを行わず、音声データの場合には、例えば現在のデータ位置から数バイト先までのデータをプリフェッチし、映像データの場合には、例えば表示位置が近接した周辺データをプリフェッチする。
【００４７】
なお、どういうデータ種別のときにどのようなプリフェッチを行うかは、種々の変形例が考えられ、実装形態に合わせて最適なプリフェッチ範囲を選択すればよい。
【００４８】
図１１はプリフェッチアドレス生成部１２で生成されるプリフェッチ範囲を説明する図であり、１次元のストリームデータ（例えば音声データ）のプリフェッチ処理を示している。図１１の例では、プロセッサ１から指示されたアドレスに対応するキャッシュライン１５だけでなく、その前後に位置する数ライン分のキャッシュライン（図示のハッチング領域）をプリフェッチしている。
【００４９】
一方、図１２は２次元のストリームデータ（例えば画像データ）のプリフェッチ処理を示している。この場合、プロセッサ１から指示されたアドレスに対応する画像データ１６の表示位置に近接する領域の画像データをプリフェッチする。図１２の各升目はキャッシュライン単位の画像データを示しており、ハッチング領域がプリフェッチ範囲を表している。
【００５０】
図１１や図１２の例に示すように、本実施形態では、データ種別に応じてプリフェッチ範囲を切り替えている。プリフェッチ範囲の切替処理は図１０のプリフェッチアドレス生成部１２にて行われる。
【００５１】
図１３はプリフェッチアドレス生成部１２の内部構成の一例を示す図である。図示のように、プリフェッチアドレス生成部１２の内部には、データ種別ＩＤとプリフェッチ対象相対アドレスとの対応関係の情報を格納するプリフェッチ位置生成テーブル２１が設けられている。このテーブルには、データ種別ＩＤごとに、例えばプリフェッチすべき相対アドレスが最大４つまで登録可能となっている。なお、登録可能な相対アドレスは必ずしも４つに限定されず、実装形態に合わせて任意に増減すればよい。
【００５２】
プリフェッチアドレス生成部１２は、プロセッサ１からあるアドレスが指示されると、そのアドレスのデータ種別ＩＤをアドレス対データ種別テーブル４から検索し、検索されたデータ種別ＩＤに対応するプリフェッチすべき相対アドレスをプリフェッチ位置生成テーブル２１から取得して、取得した相対アドレスをプロセッサ１が発行したアドレスに加算して、プリフェッチ対象のアドレスを生成する。
【００５３】
このように、第２の実施形態では、アドレス対データ種別テーブル４の他に、プリフェッチアドレス生成部１２を有するため、データ種別ごとに最適なプリフェッチ範囲を設定でき、プロセッサ１の性能向上を図れる。
【００５４】
（第３の実施形態）
第３の実施形態は、データ種別に応じてラインインデックスの生成方法を切り替えるものである。
【００５５】
図１４は本発明の第３の実施形態によるプロセッサシステムの概略構成を示すブロック図である。図１４のプロセッサシステムは、キャッシュ制御回路３内の構成が図１０と異なっており、図１０のプリフェッチアドレス生成部１２の代わりに、ラインインデックス生成部２２が設けられている。
【００５６】
ラインインデックス生成部２２は、個々のデータ種別に応じたラインインデックスを生成する。プロセッサ１があるアドレスを発行すると、ラインインデックス生成部２２は、そのアドレスに対応するデータ種別をアドレス対データ種別テーブル４に問い合わせる。対応するデータ種別がアドレス対データ種別テーブル４から検索されると、ラインインデックス生成部２２はそのデータ種別に対応するラインインデックスを生成する。そして、生成したラインインデックスを利用して、キャッシュメモリ２のアクセスが行われる。
【００５７】
図１５はデータ種別が異なるストリーム１および２のラインインデックス生成方法を説明する図である。ストリーム１のラインサイズ単位のインデックスの番号はキャッシュラインインデックスの番号と同じであるのに対し、ストリーム２のラインサイズ単位のインデックスとキャッシュラインインデックスとの対応関係はランダムになっている。例えば、ストリーム２のラインサイズ単位のインデックス８はキャッシュラインインデックス１に、ラインサイズ単位のインデックス４はキャッシュラインインデックス２に、ラインサイズ単位のインデックス１２はキャッシュラインインデックス３にそれぞれ対応づけられている。
【００５８】
このように、ストリーム１と２でラインインデックスの生成方法を変えている理由は、ストリーム１と２を同時並行的に処理する場合、それぞれのラインインデックス生成方法が異なることから、同じキャッシュラインをアクセスする可能性が低くなり、データの競合も起きにくくなって、プロセッサ１の性能が向上するためである。なお、図１５の場合でも、データの競合が完全になくなるわけではない。競合が起こった場合は、後にアクセスした方がキャッシュラインを更新するため、優先的にキャッシュメモリ２を使うことになる。
【００５９】
図１５では、ストリーム１と２のラインサイズ単位のインデックスがキャッシュラインインデックスに一対一に対応する例を説明したが、ストリームの複数のインデックスが同じキャッシュラインインデックスに対応していてもよい。例えば、図１６は、ストリーム１のラインサイズ単位のインデックスはキャッシュラインインデックスに一対一に対応するが、ストリーム２のラインサイズ単位のインデックスは異なる２つが一つのキャッシュラインインデックスに対応する例を示している。
【００６０】
ストリーム２のラインインデックスは、アドレスの上位側ビット列だけを用いることで容易に実現できる。図１６の例では、ストリーム２のラインインデックスの最下位ビットを「０」に設定しており、偶数番目のキャッシュラインのみをアクセスすることになって、キャッシュメモリ２の容量を制限できる。なお、ストリームデータごとに使用可能なウェイ（way）を制限するようにしてもよい。
【００６１】
図１７（ａ）は一般的なラインインデックスの生成方法を説明する図、図１７（ｂ）は本実施形態によるラインインデックスの生成方法を説明する図である。一般的なラインインデックスは、図１７（ａ）に示すように、プロセッサ１が発行したアドレスの一部を用いて生成される。具体的には、ラインインデックスは、タグアドレスとオフセットアドレスとの間に位置するビット列である。
【００６２】
一方、本実施形態によるラインインデックスは、図１７（ｂ）に示すように、タグアドレスを利用して生成される。
【００６３】
図１５のストリーム２は、ラインインデックスとキャッシュライン番号とがランダムになっているが、これを実現するには、図１７（ｂ）に示すように、タグアドレスの各ビットをランダム化（シャッフル）してラインインデックスの各ビットに割り振ることにより実現される。
【００６４】
また、図１６のストリーム２は、２つのラインインデックスが同じキャッシュラインに対応づけられているが、これを実現するには、図１７（ｂ）に示すように、ラインインデックスの最下位ビットに「０」または「１」を付加すればよい。
【００６５】
ラインインデックス生成部２２の内部には、図１８に示すようなラインインデックス生成方法テーブル２３が設けられている。このテーブル２３には、データ種別ＩＤとラインインデックスのビット情報との対応関係の情報が格納されている。より具体的には、このテーブル２３には、データ種別ＩＤごとに、元のタグアドレスの何ビット目がラインインデックスの何ビット目に対応するかを示す情報が格納される。したがって、このテーブル２３により、個々のデータ種別ごとに最適なラインインデックス方法を選択できる。
【００６６】
このように、第３の実施形態では、データ種別に応じてラインインデックスの生成方法を切り替えるため、キャッシュメモリ２にアクセスするデータの競合を防止できるとともに、キャッシュメモリ２を有効利用できる。
【００６７】
（第４の実施形態）
上述した第２および第３の実施形態を組み合わせて、プリフェッチ範囲を切り替える処理とラインインデックスの生成方法を切り替える処理とを並列的に実行してもよい。
【００６８】
図１９は本発明の第４の実施形態によるプロセッサシステムの概略構成を示すブロック図、図２０は図１９の処理動作を説明するフローチャートである。
【００６９】
図１９のプロセッサシステムは、第２の実施形態で説明したプリフェッチアドレス生成部１２と、第３の実施形態で説明したラインインデックス生成部２２とを備えている。プリフェッチアドレス生成部１２とラインインデックス生成部２２は同時並行的に動作することが可能である。
【００７０】
以下、図２０のフローチャートに基づいて、本実施形態によるプロセッサシステムの処理動作を説明する。プロセッサ１があるアドレスを発行すると、そのアドレスに対応するデータ種別ＩＤをアドレス対データ種別テーブル４から検索する（ステップＳ１）。
【００７１】
次に、プリフェッチアドレス生成部１２とラインインデックス生成部２２を並行して動作させる。プリフェッチアドレス生成部１２では、検索されたデータ種別ＩＤに対応するプリフェッチ用の相対アドレスを取得し（ステップＳ２）、その相対アドレスを、プロセッサ１から発行されたアドレスに加算してプリフェッチ対象アドレスを生成する（ステップＳ３）。一方、ラインインデックス生成部２２では、検索されたデータ種別ＩＤに対応するラインインデックス生成方法を取得し（ステップＳ４）、そのラインインデックス生成方法を用いて、ラインインデックスを生成する（ステップＳ５）。
【００７２】
このように、第４の実施形態では、データ種別に応じたプリフェッチ範囲の設定と、データ種別に応じたラインインデックス生成方法の設定とを同時並行的に行うため、データ種別ごとに最適なプリフェッチ範囲とラインインデックス生成方法を設定でき、プロセッサ１の性能向上が図れる。
【００７３】
なお、図１９のプロセッサシステムに第１の実施形態の機能を追加してもよい。すなわち、データ種別ごとに一括してキャッシュメモリ２を無効化できるようにしてもよい。この場合、図１９の構成に、図１に示したデータ種別設定レジスタ５と一致検出器６を追加すればよい。
【００７４】
（第５の実施形態）
上述した第１〜第４の実施形態では、プロセッサ１を一つだけ備えたプロセッサシステムについて説明したが、本発明は複数のプロセッサ（ＣＰＵ）１を備えたマルチプロセッサシステムにも適用可能である。
【００７５】
図２１は本発明の第５の実施形態によるマルチプロセッサシステムの概略構成を示すブロック図である。図２１のマルチプロセッサシステムは、共通のデータバスおよびアドレスバスに接続された複数のプロセッサ（ＣＰＵ）１と、これらプロセッサ１が共有するメインメモリ１１、キャッシュメモリ２およびキャッシュ制御回路３とを備えている。
【００７６】
図２１に示すキャッシュメモリ２は、いわゆる二次キャッシュであり、不図示の一次キャッシュは各プロセッサ１が個別に備え、二次キャッシュを共有化することで、メモリ容量の削減を図れる。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図２】キャッシュメモリの詳細構成を示す図。
【図３】アドレス対データ種別テーブル４の構造を示す図。
【図４】アドレス対データ種別テーブルのアドレスを説明する図。
【図５】図４の変形例を説明する図。
【図６】メインメモリ１１の一部の記憶領域のみにデータ種別を設定すべき記憶領域を設けた場合のメモリマップを示す図。
【図７】図４の他の変形例を説明する図。
【図８】アドレス対データ種別テーブル４の情報を有するタグメモリ２ｂの一例を示す図。
【図９】アドレス対データ種別テーブル４の機能を有するページテーブル１０の構造を示す図。
【図１０】本発明の第２の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図１１】プリフェッチアドレス生成部１２で生成されるプリフェッチ範囲を説明する図。
【図１２】２次元のストリームデータのプリフェッチ処理を示す図。
【図１３】プリフェッチアドレス生成部１２の内部構成の一例を示す図。
【図１４】本発明の第３の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図１５】データ種別が異なるストリーム１および２のラインインデックス生成方法を説明する図。
【図１６】ストリーム１と２でキャッシュ容量が異なる例を説明する図。
【図１７】（ａ）は一般的なラインインデックスを説明する図、（ｂ）は本実施形態によるラインインデックスの生成方法を説明する図。
【図１８】ラインインデックス生成方法テーブルの内部構成を示す図。
【図１９】本発明の第４の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図２０】図１９の処理動作を説明するフローチャート。
【図２１】本発明の第５の実施形態によるマルチプロセッサシステムの概略構成を示すブロック図。
【符号の説明】
【００７８】
１  プロセッサ
２  キャッシュメモリ
２ａ  データメモリ
２ｂ  タグメモリ
３  キャッシュ制御回路
４  アドレス対データ種別テーブル
５  データ種別設定テーブル
６  一致検出器
７  ラインインデックスカウンタ
１１  メインメモリ
１２  プリフェッチアドレス生成部
１３  キャッシュコントローラ
２１  プリフェッチ位置生成テーブル
２２  ラインインデックス生成部
【図１】
2008009857.tif 000003
【図２】
2008009857.tif 000004
【図３】
2008009857.tif 000005
【図４】
2008009857.tif 000006
【図５】
2008009857.tif 000007
【図６】
2008009857.tif 000008
【図７】
2008009857.tif 000009
【図８】
2008009857.tif 000010
【図９】
2008009857.tif 000011
【図１０】
2008009857.tif 000012
【図１１】
2008009857.tif 000013
【図１２】
2008009857.tif 000014
【図１３】
2008009857.tif 000015
【図１４】
2008009857.tif 000016
【図１５】
2008009857.tif 000017
【図１６】
2008009857.tif 000018
【図１７】
2008009857.tif 000019
【図１８】
2008009857.tif 000020
【図１９】
2008009857.tif 000021
【図２０】
2008009857.tif 000022
【図２１】
2008009857.tif 000023