(57)【要約】【課題】  セット数やウェイ数を変更しても、同一キャッシュアドレスに対応するキャッシュブロックの位置・範囲が変わらないセットアソシアティブキャッシュを提供する。【解決手段】  キャッシュシステムは、ｉ（２）組のｍ（２）ウェイｎ（２）セットのキャッシュアレイ３３０、３４０と、キャッシュアドレス３００とキャッシュ管理情報３１０とに基づいて、ｉ（２）組のキャッシュアレイ３３０、３４０の全部又は１つを選択し、キャッシュアドレスに従って、選択したキャッシュメモリのうちの第ｊのセットを選択するセットアドレスデコーダ３２０と、キャッシュ管理情報３１０に基づいてウェイを選択し、選択されたセットの選択したウェイのキャッシュブロックのブロックアドレスとキャッシュブロックのブロックアドレスとを比較し、キャッシュヒットとミスとの別を判定すると共に置き換えブロックを選択する比較回路３５０と、より構成される。【選択図】  図３
2005293300.tif 000002
【特許請求の範囲】
【請求項１】
ｉ組のｍウェイｎセットのキャッシュメモリと、
キャッシュアドレスとキャッシュ管理情報に基づいて、前記ｉ組のキャッシュメモリの全部又は１つを選択し、キャッシュアドレスに従って、選択したキャッシュメモリのうちの第ｊのセットを選択するセット選択手段と、
キャッシュ管理情報に基づいてウェイを選択するウェイ選択手段と、
前記セット選択手段により選択されたセットの前記ウェイ選択手段で選択したウェイのキャッシュブロックのブロックアドレスとキャッシュブロックのブロックアドレスとを比較し、キャッシュヒットとミスとの別を判定する判定手段と、
前記判定手段の判定結果に基づいて、置き換えブロックを選択する置き換え選択手段と、
を具備することを特徴とするセットアソシアティブキャッシュシステム。
【請求項２】
前記キャッシュアドレスは、ブロックアドレスとセットアドレスとを含み、
前記キャッシュ管理情報は、処理単位に関する情報を含む、
ことを特徴とする請求項１に記載のセットアソシアティブキャッシュシステム。
【請求項３】
前記処理単位に関する情報は、システムの状態を示す情報、プロセスの状態を示す情報、スレッドの状態を示す情報、メモリの共有の情報を含む、
ことを特徴とする請求項２に記載のセットアソシアティブキャッシュシステム。
【請求項４】
前記ウェイ選択手段は、前記キャッシュ管理情報と共にキャッシュブロックのＬＲＵ情報に基づいて、ウェイを選択し、
前記置き換え選択手段は、前記キャッシュ管理情報と共にキャッシュブロックのＬＲＵ情報に基づいて、置き換えブロックを選択する、
ことを特徴とする請求項１、２又は３のいずれか１項に記載のセットアソシアティブキャッシュシステム。
【請求項５】
前記ウェイ選択手段は、前記キャッシュ管理情報と共にキャッシュブロックのＬＲＵ情報とさらに各ウェイへの処理の割り当ての情報に基づいて、ウェイを選択し、
前記置き換え選択手段は、前記キャッシュ管理情報と共にキャッシュブロックのＬＲＵ情報とさらに各ウェイへの処理の割り当ての情報に基づいて、置き換えブロックを選択する、
ことを特徴とする請求項１、２又は３のいずれか１項に記載のセットアソシアティブキャッシュシステム。
【請求項６】
ｉ・ｎセット、ｍウェイセットアソシアティブキャッシュと、ｎセット、ｉ・ｍウェイセットアソシアティブキャッシュと、として機能することを特徴とする請求項１乃至５のいずれか１項に記載のセットアソシアティブキャッシュシステム。
【請求項７】
セット数とウェイ数とを変更しても、同一のキャッシュアドレスに対応するキャッシュブロックの位置が変化しない、ことを特徴とする請求項１乃至６のいずれか１項に記載のセットアソシアティブキャッシュシステム。
【請求項８】
セット数とウェイ数とを変更しても、利用可能なキャッシュ容量が変化しない、ことを特徴とする請求項１乃至７のいずれか１項に記載のセットアソシアティブキャッシュシステム。
【請求項９】
ｉ組のｍウェイｎセットのキャッシュメモリについて、
キャッシュアドレスとキャッシュ管理情報に基づいて、前記ｉ組のキャッシュメモリの全部又は１つを選択し、キャッシュアドレスに従って、選択したキャッシュメモリのうちの第ｊのセットを選択し、
キャッシュ管理情報に基づいてウェイを選択し、
選択したセットの選択したウェイのキャッシュブロックのブロックアドレスと、キャッシュアドレス中の要求ブロックアドレスとを比較し、キャッシュヒットとミスとを判定し、
判定結果に基づいて、置き換えブロックを選択する、
ことを特徴とするセットアソシアティブキャッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュブロック数を一定数に維持したままセット数とウェイ数とを変更することができるセットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法に関する。
【背景技術】
【０００２】
現在、システムの複雑化、半導体技術の向上により、マルチタスクＯＳ、マルチプロセッサ、マルチスレッドプロセッサ、オンチップマルチプロセッサ等の技術が構築可能になっている。さらに最近の傾向として、複数のシステムの小型化、資源の共有化の思想が尊重され、様々な発明が提案されている。そのような環境下でキャッシュの共有化の発明も盛んに提案されている。キャッシュの共有化で課題となることは、処理の複雑化に対応して、如何に性能が良いキャッシュシステムを構築するかにある。
【０００３】
キャッシュの性能を高めるため、システム単位の処理、プロセッサ単位の処理、スレッド単位の処理にキャッシュ領域を分割したキャッシュが提案されている。しかし、これらの分割手法は、以下の課題がある。
【０００４】
キャッシュセットで分割するタイプ
・  領域を分割した場合、キャッシュブロックをそのまま利用できないのでキャッシュミスが発生する（課題１）。
キャッシュウェイで分割するタイプ
・  ウェイ数が不足して処理単位内での競合ミスが発生することがある（課題２）。
・  処理単位数を増減して領域を変更する場合、処理単位間の競合ミスが発生する（課題３）。
キャッシュブロック単位で分割するタイプ
・  処理単位数の増減に関わらず、処理単位間の競合ミスが発生する（課題４）。
【０００５】
さらに改良型のキャッシュシステムとして、ウェイ数を指定可能とし、さらに、ウェイ数に応じたヒットチェックを行うように構成することにより、プログラム単位でのキャッシュミスを減らす技術が特許文献１に開示されている。
また、ウェイ数の指定を可能とし、タスク間のキャッシュミスを減らす技術が特許文献２に開示されている。
【０００６】
特許文献１と２とに開示されたキャッシュシステムは、シングルプロセッサのための技術であり、マルチタスクＯＳ、マルチプロセッサ、マルチスレッドのための技術ではない。従って、これらの技術では、マルチタスクＯＳ、マルチプロセッサ、マルチスレッド下ではキャッシュミスを減らすことができない。
また、特許文献１と２とに開示されたウェイ選択・比較方法は、キャッシュ要求時のウェイの最大値を指定する手法であり、最大構成より少ないウェイ数の構成にした時に使用されないキャッシュ容量が発生し、キャッシュの使用効率が低い。
【特許文献１】特開平５−２０１９３号公報
【特許文献２】特開平９−６２５８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
この発明は上記実情に鑑みてなされたものであり、セット数やウェイ数を変更しても、同一キャッシュアドレスに対応するキャッシュブロックの位置・範囲が変わらないセットアソシアティブキャッシュシステムなどを提供することを目的とする。
また、この発明は、セット数やウェイ数を変更しても、利用可能なキャッシュ容量が減少しないセットアソシアティブキャッシュシステムなどを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の第１の観点に係るセットアソシアティブキャッシュシステムは、
ｉ組のｍウェイｎセットのキャッシュメモリと、
キャッシュアドレスとキャッシュ管理情報に基づいて、前記ｉ組のキャッシュメモリの全部又は１つを選択し、キャッシュアドレスに従って、選択したキャッシュメモリのうちの第ｊのセットを選択するセット選択手段と、
キャッシュ管理情報に基づいてウェイを選択するウェイ選択手段と、
前記セット選択手段により選択されたセットの前記ウェイ選択手段で選択したウェイのキャッシュブロックのブロックアドレスとキャッシュブロックのブロックアドレスとを比較し、キャッシュヒットとミスとの別を判定する判定手段と、
前記判定手段の判定結果に基づいて、置き換えブロックを選択する置き換え選択手段と、
を具備することを特徴とする。
【０００９】
例えば、前記キャッシュアドレスは、ブロックアドレスとセットアドレスとを含み、前記キャッシュ管理情報は、処理単位に関する情報を含む。前記処理単位に関する情報とは、例えば、システムの状態（論理的なシステムの数、キャッシュを要求したシステムの番号）を示す情報、プロセスの状態（論理的なプロセスの数、キャッシュを要求したプロセスの番号）を示す情報、スレッドの状態（論理的なスレッド数、キャッシュを要求したスレッドの番号）を示す情報、メモリの共有の状態を示す情報を含む。
【００１０】
前記ウェイ選択手段は、例えば、前記キャッシュ管理情報と共にキャッシュブロックのＬＲＵ情報に基づいて、ウェイを選択し、前記置き換え選択手段は、前記キャッシュ管理情報と共にキャッシュブロックのＬＲＵ情報に基づいて、置き換えブロックを選択する。
【００１１】
また、前記ウェイ選択手段は、前記キャッシュ管理情報と共にキャッシュブロックのＬＲＵ情報とさらに各ウェイへの処理の割り当ての情報に基づいて、ウェイを選択し、前記置き換え選択手段は、前記キャッシュ管理情報と共にキャッシュブロックのＬＲＵ情報とさらに各ウェイへの処理の割り当ての情報に基づいて、置き換えブロックを選択する。
【００１２】
上述の制御により、上記キャッシュシステムは、例えば、ｍウェイｉ・ｎセットのセットアソシアティブキャッシュと、ｉ・ｍウェイｎセットのセットアソシアティブキャッシュと、として機能する。
【００１３】
この場合、セット数とウェイ数とを変更しても、同一のキャッシュアドレスに対応するキャッシュブロックの位置が変化しない。また、セット数とウェイ数とを変更しても、利用可能なキャッシュ容量が変化しない。
【００１４】
上記目的を達成するため、本発明の第２の観点に係るキャッシュメモリの制御方法は、
ｉ組のｍウェイｎセットのキャッシュメモリについて、
キャッシュアドレスとキャッシュ管理情報に基づいて、前記ｉ組のキャッシュメモリの全部又は１つを選択し、キャッシュアドレスに従って、選択したキャッシュメモリのうちの第ｊのセットを選択し、
キャッシュ管理情報に基づいてウェイを選択し、
選択したセットの選択したウェイのキャッシュブロックのブロックアドレスと、キャッシュアドレス中の要求ブロックアドレスとを比較し、キャッシュヒットとミスとを判定し、
判定結果に基づいて、置き換えブロックを選択する、
ことを特徴とする。
【発明の効果】
【００１５】
上記構成とすることにより、この発明によれば、セット数とウェイ数とを適宜変更してキャッシュシステムを使用できる。
【発明を実施するための最良の形態】
【００１６】
（実施形態１）
以下、この発明の実施の形態に係るキャッシュシステムを説明する。このキャッシュシステムは、処理単位（システム、プロセス、スレッド）に応じてキャッシュ構成を変更できる可変ｍウェイｎセットアソシアティブキャッシュである。
【００１７】
図１に本実施の形態のキャッシュシステムの概要を示す。図１（ａ）に示すキャッシュシステム１０１は４セット４ウェイアソシアティブキャッシュで、キャッシュブロックには処理単位１のメモリブロックの写しが書き込まれている。一方、図１（ｂ）に示すキャッシュシステム１０２はキャッシュシステム１０１の構成を変更した後の状態で２セット８ウェイアソシアティブキャッシュである。キャッシュブロックには処理単位１と処理単位２のメモリブロックの写しが書き込まれていて、各セット内のブロックは処理単位１と処理単位２とで２分割されている。
【００１８】
但し、図１（ａ）と（ｂ）とで、処理１のメモリブロックの写しのキャッシュブロック上の位置は、符号１−１〜１−８で示すように変化していない。
【００１９】
このように、本実施の形態のキャッシュシステムは処理単位に応じて各セット内をブロック単位で分割でき、ウェイ数とセット数とを変更できる。
【００２０】
図２はプロセッサ構成を示している。プロセッサチップ２００は、プロセッサコア２１０とプロセッサコア２２０とキャッシュコントローラ２３０と２−４セット４−２ウェイアソシアティブキャッシュ２４０で構成されている。
【００２１】
プロセッサコア２１０はマルチスレッドアーキテクチャ機能を有し、実質的に同時に複数（本実施の形態では２）スレッドを処理できる。ここでのスレッドとはハードウエアが同時に処理できる命令列のことを意味する。
また、プロセッサチップ２００は論理的にシステム数を複数（本実施の形態では２）に分割できる。
【００２２】
図３は、図２に示すプロセッサチップ２００に組み込まれている２−４セット４−２ウェイアソシアティブキャッシュ２４０の構成例を示す。
この２−４セット４−２ウェイアソシアティブキャッシュ２４０は、キャッシュコントローラ２３０からの指示により、２セット４ウェイアソシアティブ構成と４セット２ウェイアソシアティブ構成とで切り替えることができるキャッシュである。
【００２３】
図示するように、このキャッシュ２４０は、キャッシュアドレスレジスタＡ−ＲＥＧとキャッシュ管理情報レジスタＭ−ＲＥＧと、セットアドレスデコーダ３２０と、キャッシュアレイ３３０と、キャッシュアレイ３４０と、比較回路３５０と、から構成されている。
【００２４】
キャッシュアドレスレジスタＡ−ＲＥＧは、キャッシュコントローラ２３０から供給されるキャッシュアドレス３００を格納する。
【００２５】
キャッシュアドレス３００は、ブロックアドレス３０１とセットアドレス３０２とブロック内アドレスとからなる。ブロックアドレス３０１とセットアドレス３０２との幅はセット数（この例では、４セットと２セットの別）に応じて変化する。
【００２６】
ブロックアドレス３０１は、４セットの場合には１ビット、２セットの場合には２ビットであり、４セットの場合には、「０」と「１」で、各セット内の第１ブロックと第２ブロックとを示す。一方、２セットの場合には、「００」、「０１」、「１０」、「１１」で、各セット内の第１〜第４ブロックを示す。
【００２７】
セットアドレス３０２は、４セットの場合には２ビット、２セットの場合には１ビットであり、４セットの場合には、「００」、「０１」、「１０」、「１１」で、第１〜第４セットを示し、２セットの場合には、「０」と「１」で、第１セットと第２セットとを示す。
【００２８】
また、キャッシュ管理情報３１０は、ソフトウエア（ＳＷ）、ファームウエア（ＦＷ）、又はハードウエア（ＨＷ）により設定され、実施例では、システム番号３１１と、スレッド番号３１２と、メモリ共有情報３１３とから構成されている。
【００２９】
システム番号３１１は、キャッシュ要求時点でのシステムの数（論理数）とキャッシュを要求したシステムの番号とを含む。スレッド番号３１２は、キャッシュ要求時点でのスレッドの数とキャッシュを要求したスレッドの番号を含む。メモリ共有情報３１３は、メモリを共有しているスレッドを特定する情報を提供する。
【００３０】
例えば、図２に示すプロセッサコア２１０と２２０とにより、システムが論理的に２つに分割されており、２つのうちの第１番のシステムがキャッシュを要求した場合には、システム番号３１１は、キャッシュ要求時点でのシステムの数（論理数）が２となり、キャッシュを要求したシステムの番号は「１」となる。
【００３１】
さらに、図２に示すプロセッサコア２１０と２２０とにより、３つのスレッドが並行して実行されており、第２番のスレッドがキャッシュを要求した場合には、スレッド番号３１２のスレッド数は３、キャッシュを要求したスレッドの番号は「２」となる。
さらに、あるスレッドがメモリを共有している場合には、そのスレッドの番号がメモリ共有情報３１３に設定される。
【００３２】
セットアドレスデコーダ３２０は、キャッシュアドレス３００とキャッシュ管理情報３１０とを入力とし、対象セットを選択する。デコードのルールについては、後述する。
【００３３】
キャッシュアレイ３３０、３４０は、それぞれ、４つのキャッシュブロックから構成されている。各キャッシュブロックは、セット１〜４、ウェイ１〜４のいずれかに割り当てられている。
【００３４】
セットアドレスデコーダ３２０によりセットが選択され、キャッシュアレイ３３０、３４０は、選択されたセットに書き込まれているブロックアドレスを比較回路３５０に出力する。キャッシュアレイ３３０、３４０には最大幅のブロックアドレスが常に書き込まれる。比較回路３５０はブロックアドレス３０１とキャッシュ管理情報３１０とを入力とし、キャッシュのミスヒット判定を行う。
【００３５】
図４は比較回路３５０を詳細に示した図である。ウェイ選択回路４１０はキャッシュ管理情報３１０とＬＲＵビット４００とから、各処理単位が利用できるウェイ領域を選択する。ＬＲＵビット４００の拡張ビットにはキャッシュ要求時点でのウェイ分割状態が保存されており、ウェイ選択回路４１０はＬＲＵビット４００の拡張ビットに格納されているウェイ分割状態に従って、キャッシュ要求時点でのセット数とウェイ数の状態を判別する。比較部４２０と比較部４３０はキャッシュアドレス３００のブロックアドレス３０１とキャッシュアレイ３３０、３４０のブロックアドレスとウェイ選択回路４１０のウェイ領域とを比較してヒット判定回路４４０によってミス／ヒット判定を行う。置き換え選択回路４５０は、キャッシュミス時に置き換えるキャッシュブロックを選択する。実施例では、システム数が１の時は、４セット２ウェイアソシアティブキャッシュ構成で、システム数が２の時は２セット４ウェイアソシアティブキャッシュ構成とし、スレッド数に応じてウェイを分割するものとする。
【００３６】
（動作の説明）
２−４セット４−２ウェイアソシアティブキャッシュの動作の説明をする。図５はキャッシュ要求でセットアドレス３０２とキャッシュ管理情報３１０とからセットとウェイとの領域を決定するセットアドレスデコーダ３２０とウェイ選択回路４１０の動作結果とを表している。アクセス１から２は、４セット２ウェイアソシアティブキャッシュ構成で、アクセス３から６は、２セット４ウェイアソシアティブキャッシュ構成となる。
【００３７】
アクセス１の場合、セットアドレスデコーダ３２０はシステム番号３１１のシステム数が１の時、セットアドレス３０２の２ビット“１１”からセット４を選択する。一方、ウェイ選択回路４１０はスレッド番号３１２のスレッド番号が１の時、ＬＲＵビット４００の拡張ビットからセット４のウェイ３を選択する。ＬＲＵビット４００のＬＲＵビットは更新され、拡張ビットの更新は、スレッド数が増減した時に行われるので更新されない。
【００３８】
アクセス２の場合、セット４、ウェイ４が選択される。ＬＲＵビット４００のＬＲＵビットは更新され、拡張ビットは更新されない。
【００３９】
アクセス３の場合、セットアドレスデコーダ３２０はシステム番号３１１のシステム数が２の時、セットアドレス３０２の１ビット“１”からセット２とセット４を選択する（ウェイ数が２から４となる）。一方、ウェイ選択回路４１０はスレッド数が２から３となるので、ＬＲＵビット４００のＬＲＵビットが示している内容からウェイ２を選択し、ＬＲＵビットと拡張ビットの更新を行う。
【００４０】
アクセス４の場合、セット２、４とウェイ３とが選択される。ＬＲＵビットの更新を行い、拡張ビットの更新は行わない。
【００４１】
アクセス５の場合、セット２、４が選択される。ウェイ選択回路４１０はスレッド数が３から４となるので、ＬＲＵビット４００の拡張ビットに格納されている内容からセット１とセット３とを選び、ＬＲＵビットからウェイ１を選択し、ＬＲＵビットと拡張ビットとの更新を行う。
アクセス５の場合、スレッド３とスレッド４とがメモリ共有されている。そのことを示す情報がメモリ共有情報３１０にセットされている。メモリ共有情報３１０は、ヒット判定回路４４０に入力され、結局、ウェイ１とウェイ２とがヒット判定対象キャッシュブロックとなる。
【００４２】
アクセス６の場合、セット２、４とウェイ４とが選択される。ＬＲＵビットの更新を行い、拡張ビットの更新は行わない。
【００４３】
上記の説明のようにキャッシュシステムを構成して駆動することにより、以下の効果が得られる。
ウェイ数を増やせるので、処理単位内及び処理単位間での競合ミスを防ぐ（効果１）。
セット数とウェイ数を変更してもキャッシュアドレスが指すキャッシュブロックの位置が変わらないのでキャッシュ区分領域変更でのキャッシュミスを低減できる（効果２）。
各ウェイの領域を変更する時にＬＲＵビットを参照することによって区分領域を決定するので処理単位間での競合ミスを低減することができる（効果３）。
【００４４】
なお、この発明は上記実施の形態に限定されず、種々の変形及び応用が可能である。
例えば、図１の構成では、４ブロック（２セット×２ウェイ）のキャッシュアレイを２セット（３３０と３４０）用意し、セットの選択とウェイの選択とを制御することにより、４セット×２ウェイ（セット１、セット２、セット３、セット４、各セット１と２とについてはウェイ１とウェイ２、セット３と４とについては、ウェイ３と４）と、２セット×４ウェイ（セット１とセット３とからなる第１のセット、セット２とセット４とからなる第２のセット；第１のセットと第２のセットはそれぞれウェイ１〜ウェイ４）とを切り替えたが、構成は任意である。
【００４５】
ｍ（２の乗数）ウェイ・ｎ（２の乗数）セットのキャッシュメモリ（図１のキャッシュアレイ３３０、３４０に相当するものをｉ（２の乗数）個用意し、セットアドレスデコーダが、キャッシュアドレスとキャッシュ管理情報とに基づいて、ｉ組のキャッシュメモリの全部又は１つを選択し、選択したキャッシュメモリのうちの第ｊのセットを選択し、ウェイ選択回路が、キャッシュ管理情報とＬＲＵビットとに基づいてウェイを選択し、比較部は、ｋ個配置されて対応するウェイ上の選択されたセットのキャッシュブロックのブロックアドレスと要求ブロックアドレスとを比較してヒット判定を行い、置き換え選択回路がウェイ選択回路の出力とヒット・ミスヒットを示す情報とに基づいて置き換えブロックを選択する。
【００４６】
このような構成により、例えば、ｍウェイｉ・ｎセットのセットアソシアティブキャッシュ、と、ｉ・ｍウェイｎセットのセットアソシアティブキャッシュ、との可変セットアソシアティブキャッシュシステムを得ることができる。
【００４７】
この場合、セット数とウェイ数とを変更しても、同一のキャッシュアドレスに対応するキャッシュブロックの位置が変化しない。また、セット数とウェイ数とを変更しても、利用可能なキャッシュ容量が変化しない。
【図面の簡単な説明】
【００４８】
【図１】この発明の実際の形態に係るキャッシュシステムのセットとウェイとを変更する変更態様を概念的に示す図である。
【図２】プロセッサの構成例を示す図である。
【図３】キャッシュシステム全体の構成図である。
【図４】図３に示す比較回路の構成例を示すブロック図である。
【図５】セットアドレスデコーダとウェイ選択回路の実際の動作例を示す図である。
【符号の説明】
【００４９】
１０１・・・キャッシュシステム、１０２・・・キャッシュシステム、２００・・・プロセッサチップ、２１０・・・プロセッサコア、２２０・・・プロセッサコア、２３０・・・キャッシュコントローラ、２４０・・・キャッシュ、３００・・・キャッシュアドレス、３１０・・・キャッシュ管理情報、３２０・・・セットアドレスデコーダ、３３０・・・キャッシュアレイ、３４０・・・キャッシュアレイ、３５０・・・比較回路、４００・・・ＬＲＵビット、４１０・・・ウェイ選択回路、４２０・・・比較部、４３０・・・比較部、４４０・・・ヒット判定回路、４５０・・・置き換え選択回路
【図１】
2005293300.tif 000003
【図２】
2005293300.tif 000004
【図３】
2005293300.tif 000005
【図４】
2005293300.tif 000006
【図５】
2005293300.tif 000007