(57)【要約】【課題】複数コアに夫々備えられるキャッシュを結合し、結合したキャッシュを一つのコアに使用させる。【解決手段】ＣＰＵコア２ａ、２ｂの夫々に備えられるキャッシュ３ａ、３ｂを結合し、結合したキャッシュをＣＰＵコア２ａ、２ｂのうちの一つに使用させるためのキャッシュ結合回路５は、結合したキャッシュを使用させる一つのＣＰＵコアを指定する動作指定部５１と、動作指定部５１が指定したＣＰＵコアが出力したアドレスをキャッシュ３ａ、３ｂの夫々へ伝達するアドレス伝達部５２と、アドレスにキャッシュ３ａ、３ｂのうちの一つがヒットした場合、前記ヒットしたキャッシュが出力したキャッシュヒットした旨のヒット信号およびキャッシュデータを動作指定部５１が指定したＣＰＵコアへ伝達するヒット信号・データ伝達部５３と、を備える。【選択図】図２
2011022971.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュを夫々備える複数のＣＰＵコアと、
前記複数のＣＰＵコアの夫々に備えられるキャッシュのうちの複数のキャッシュを前記複数のＣＰＵコアのうちの一つに使用させるためのキャッシュ結合回路と、
を備え、
前記キャッシュ結合回路は、
前記複数のＣＰＵコアのうちの前記複数のキャッシュを使用させる一つのＣＰＵコアを指定する動作指定部と、
前記動作指定部が指定したＣＰＵコアが出力したアドレスを前記複数のキャッシュの夫々へ伝達するアドレス伝達部と、
前記アドレスに前記複数のキャッシュのうちの一つがヒットした場合、前記ヒットしたキャッシュが出力したキャッシュヒットした旨のヒット信号およびキャッシュデータを前記動作指定部が指定したＣＰＵコアへ伝達するヒット信号・データ伝達部と、
を備えることを特徴とするキャッシュシステム。
【請求項２】
前記動作指定部は、前記キャッシュ結合回路の動作モードを、前記複数のＣＰＵコアの夫々に備えられるキャッシュを前記複数のＣＰＵコアのうちの一つに使用させるキャッシュ結合モードとするか、または前記複数のＣＰＵコアの夫々に自ＣＰＵコアが備えるキャッシュを使用させる通常モードとするか、をさらに指定し、
前記動作指定部が通常モードを指定している場合、前記アドレス伝達部は、前記複数のＣＰＵコアの夫々が出力したアドレスを前記アドレスを出力したＣＰＵコアが備えるキャッシュに伝達し、前記ヒット信号・データ伝達部は、前記複数のＣＰＵコアに備えられる夫々のキャッシュが出力したヒット信号およびキャッシュデータを前記ヒット信号およびキャッシュデータを出力したキャッシュを備えるＣＰＵコアへ伝達する、
ことを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
前記動作指定部により指定されたＣＰＵコアが使用する前記複数のキャッシュのうちのリフィルすべきデータの格納先のキャッシュを指定するリフィル先指定部をさらに備えることを特徴とする請求項１に記載のキャッシュシステム。
【請求項４】
前記キャッシュ結合回路が前記動作指定部によって指定されているＣＰＵコアに使用させるキャッシュの個数は２のｎ乗個であって、
前記ヒット信号・データ伝達部は、
前記動作指定部が指定するＣＰＵコアが出力したアドレスが含むタグの下位ｎビットに基づいて前記ＣＰＵコアに使用させる２のｎ乗個のキャッシュから前記ＣＰＵコアに伝達すべきデータ信号およびキャッシュデータの出力元のキャッシュを選択する、
ことを特徴とする請求項１に記載のキャッシュシステム。
【請求項５】
前記夫々のＣＰＵコアの負荷を計測する負荷計測部をさらに備え、
前記動作指定部は、
前記負荷計測部による計測結果に基づいて前記キャッシュ結合回路の動作モードおよび／または前記複数のキャッシュを使用させるＣＰＵコアの指定を切り替える、
ことを特徴とする請求項２に記載のキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュシステムに関する。
【背景技術】
【０００２】
従来、マルチコアＣＰＵ構成のＬＳＩの製造工程において複数のコアのいずれかが製造不良であった場合、そのＬＳＩは、ＬＳＩそのものを不良品とするか、もしくは不良がなかったコアのみが活用され、単純にコア数が当初予定した数より少ないＬＳＩとして利用される。このとき、不良コアが備えるキャッシュに不良がないときであっても、このキャッシュごと不良コアを利用しないようにしていた。不良がなかったコアが、自コアが備えるキャッシュと不良コアが備えるキャッシュとの両方を使用することができるようにすれば、コア数減少による性能低下を小さくすることができる。
【０００３】
コアを跨いだキャッシュ利用に関連する技術としては、特許文献１には、主メモリを介することなくキャッシュ間でデータを転送する技術が開示されている。しかしながら、特許文献１には、複数コアに夫々備えられるキャッシュを一つのコアが使用する方法については開示されていない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２２２９９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、複数コアに夫々備えられるキャッシュを結合し、結合したキャッシュを一つのコアが使用することができるキャッシュシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願発明の一態様によれば、キャッシュを夫々備える複数のＣＰＵコアと、前記複数のＣＰＵコアの夫々に備えられるキャッシュのうちの複数のキャッシュを前記複数のＣＰＵコアのうちの一つに使用させるためのキャッシュ結合回路と、を備え、前記キャッシュ結合回路は、前記複数のＣＰＵコアのうちの前記複数のキャッシュを使用させる一つのＣＰＵコアを指定する動作指定部と、前記動作指定部が指定したＣＰＵコアが出力したアドレスを前記複数のキャッシュの夫々へ伝達するアドレス伝達部と、前記アドレスに前記複数のキャッシュのうちの一つがヒットした場合、前記ヒットしたキャッシュが出力したキャッシュヒットした旨のヒット信号およびキャッシュデータを前記動作指定部が指定したＣＰＵコアへ伝達するヒット信号・データ伝達部と、を備えることを特徴とするキャッシュシステムが提供される。
【発明の効果】
【０００７】
本発明によれば、複数コアに夫々備えられるキャッシュを結合し、結合したキャッシュを一つのコアが使用することができるキャッシュシステムを提供することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施の形態にかかるキャッシュシステムの構成を説明する図。
【図２】図２は、キャッシュ結合回路の機能構成を説明する図。
【図３】図３は、キャッシュ結合回路のうちのアドレス伝達部およびリフィル先指定部の具体例を説明する図。
【図４】図４は、キャッシュ結合回路のうちのヒット信号・データ伝達部の具体例を説明する図。
【図５】図５は、第２の実施の形態のメモリシステムの構成を説明する図。
【図６】図６は、キャッシュを結合して一つのダイレクトマップ方式のキャッシュとして使用する様子を概念的に説明する図。
【図７】図７は、キャッシュ結合回路の機能構成を説明する図。
【図８】図８は、キャッシュ結合回路のうちのインデックス伝達部の具体例を説明する図。
【図９】図９は、キャッシュ結合回路のうちのタグ伝達部の具体例を説明する図。
【図１０】図１０は、キャッシュ結合回路のうちのヒット信号・データ伝達部の具体例を説明する図。
【図１１】図１１は、４個のキャッシュを結合する第２の実施の形態のキャッシュシステムの構成を説明する図。
【図１２】図１２は、キャッシュ結合回路のうちのタグ伝達部の具体例を説明する図。
【図１３】図１３は、キャッシュ結合回路のうちのタグ伝達部の他の具体例を説明する図。
【図１４】図１４は、キャッシュ結合回路のうちのタグ伝達部の他の具体例を説明する図。
【図１５】図１５は、キャッシュ結合回路のうちのヒット信号・データ伝達部が含むヒット信号を伝達する部分の構成の具体例を説明する図。
【図１６】図１６は、第３の実施の形態のキャッシュシステムの構成を説明する図。
【図１７】図１７は、キャッシュ結合回路の機能構成を説明する図。
【図１８】図１８は、第４の実施の形態のキャッシュシステムの構成を説明する図。
【図１９】図１９は、キャッシュ結合回路の機能構成を説明する図。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、本発明の実施の形態にかかるキャッシュシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【００１０】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかるキャッシュシステムの構成を説明する図である。図示するように、キャッシュシステム１は、ＣＰＵコア２ａと、ＣＰＵコア２ｂと、ＲＡＭ４と、を備えている。ＣＰＵコア２ａ、ＣＰＵコア２ｂおよびＲＡＭ４は夫々バスを介して接続されている。
【００１１】
ＣＰＵコア２ａ、ＣＰＵコア２ｂは、夫々、キャッシュ３ａ、キャッシュ３ｂを備えている。ＣＰＵコア２ａおよびＣＰＵコア２ｂは、ＲＡＭ４から読み出したデータを夫々キャッシュ３ａおよびキャッシュ３ｂにキャッシュする。ＣＰＵコア２ａおよびＣＰＵコア２ｂは、キャッシュ結合回路５を介して夫々キャッシュ３ａおよびキャッシュ３ｂにアクセスする。
【００１２】
キャッシュ結合回路５は、ＣＰＵコア２ａおよびＣＰＵコア２ｂのうちの何れか一つが故障しているとき、ＣＰＵコア２ａおよびＣＰＵコア２ｂが夫々使用するためのキャッシュ３ａおよびキャッシュ３ｂを束ね（結合し）、結合したキャッシュを故障していないＣＰＵコアが使用できるようにするための回路である。例えば、ＣＰＵコア２ａが故障している場合、ＣＰＵコア２ｂがキャッシュ結合回路５を介してキャッシュ３ａおよびキャッシュ３ｂを使用する。ＣＰＵコア２ａおよびＣＰＵコア２ｂが故障しているか否かは、ＬＳＩ製造工程中あるいは製造後に実施されるテストにより判明する。本第１の実施の形態では、製造者が故障テストの結果に基づいて、キャッシュを結合するか否か、および結合したキャッシュをどのＣＰＵコアに使用させるかを設定する。なお、以降、キャッシュ結合回路５がキャッシュを結合していない動作モードを通常モード、キャッシュを結合している動作モードをキャッシュ結合モードと表現することとする。また、本第１の実施の形態では、キャッシュ３ａおよびキャッシュ３ｂは夫々ダイレクトマップ方式のキャッシュとして使用され、結合後のキャッシュはキャッシュ３ａおよびキャッシュ３ｂを夫々一つのウェイとした２ウェイアソシアティブ方式のキャッシュとして使用される、として説明する。
【００１３】
図２は、キャッシュ結合回路５の機能構成を説明する図である。図示するように、キャッシュ結合回路５は、動作モードの指定と、キャッシュ結合モードを指定する場合、結合したキャッシュを使用させるＣＰＵコアの指定とを行う動作指定部５１と、結合したキャッシュを使用するＣＰＵコアが出力するアドレスをキャッシュ３ａおよびキャッシュ３ｂへ伝達するアドレス伝達部５２と、キャッシュ３ａおよびキャッシュ３ｂからのヒット信号およびキャッシュヒットした場合のキャッシュデータ（以下、単にデータ）を結合後のキャッシュを使用するＣＰＵコアへ伝達するヒット信号・データ伝達部５３と、キャッシュミスしたとき、キャッシュ３ａおよびキャッシュ３ｂのうちのリフィルデータを格納すべきキャッシュを指定するリフィル先指定部５４と、を備えている。
【００１４】
次に、前記したキャッシュ結合回路５の各構成要素をより具体的に説明する。図３は、キャッシュ結合回路５のうちのアドレス伝達部５２およびリフィル先指定部５４の具体例を説明する図である。図３において、キャッシュ結合回路５は、アドレス伝達部５２としてのマルチプレクサ５２０およびマルチプレクサ５２１と、動作指定部５１としてのヒューズ（Ｆｕｓｅ）５１０およびヒューズ５１１と、を備えている。
【００１５】
マルチプレクサ５２０には、ＣＰＵコア２ａおよびＣＰＵコア２ｂから出力されるアドレスが入力される。同様に、マルチプレクサ５２１には、ＣＰＵコア２ａおよびＣＰＵコア２ｂが出力されるアドレスが入力される。マルチプレクサ５２０およびマルチプレクサ５２１は、夫々、ヒューズ５１０、ヒューズ５１１を選択信号として入力元のＣＰＵコアを選択し、選択したＣＰＵコアからのアドレスを出力する。マルチプレクサ５２０が出力したアドレスは、タグ（上位部分）とインデックス（下位部分）とに分割されてキャッシュ３ａに入力される。同様に、マルチプレクサ５２１が出力したアドレスも分割されてキャッシュ３ｂに入力される。
【００１６】
例えば、製造者は、通常モードで動作させる場合、マルチプレクサ５２０がＣＰＵコア２ａ、マルチプレクサ５２１がＣＰＵコア２ｂを夫々選択するようにヒューズ５１０、ヒューズ５１１を設定する。また、キャッシュ結合モードで動作させ、かつＣＰＵコア２ｂを結合後のキャッシュを使用させるコア（以下、単に使用コア）として指定する場合、マルチプレクサ５２０およびマルチプレクサ５２１がともにＣＰＵコア２ｂを選択するようにヒューズ５１０、ヒューズ５１１を設定する。キャッシュ結合モードで動作させ、かつＣＰＵコア２ａを使用コアとして指定する場合、マルチプレクサ５２０およびマルチプレクサ５２１がともにＣＰＵコア２ａを選択するようにヒューズ５１０、ヒューズ５１１を設定する。
【００１７】
このような構成により、アドレス伝達部５２は、通常モードにおいては、ＣＰＵコア２ａが出力したアドレスをキャッシュ２ａへ、ＣＰＵコア２ｂが出力したアドレスをキャッシュ２ｂへ夫々伝達することができる。また、アドレス伝達部５２は、キャッシュ結合モードでかつＣＰＵコア２ａに結合したキャッシュを使用させる場合、ＣＰＵコア２ａが出力したアドレスをキャッシュ３ａおよびキャッシュ３ｂへ伝達し、キャッシュ結合モードでかつＣＰＵコア２ｂに結合したキャッシュを使用させる場合、ＣＰＵコア２ｂが出力したアドレスをキャッシュ３ａおよびキャッシュ３ｂへ伝達することができる。
【００１８】
キャッシュ３ａおよびキャッシュ３ｂは、夫々一般的なダイレクトマップ方式のキャッシュとしての構成を備えている。キャッシュ３ａおよびキャッシュ３ｂの構成について簡単に説明する。キャッシュ３ａは、インデックスから互いに識別可能な数（ここではｎ個）のブロックに分割されている記憶領域３０ａを有している。キャッシュ３ａは、記憶領域３０ａのうちの伝達されてきたアドレスのうちのインデックスによって指定されるブロックが含むタグ（ｔａｇ）と前記アドレスのうちのタグとを比較器３１ａにて比較する。比較器３１ａは、二つのタグが一致すれば「１」を、一致しなければ「０」を出力する。また、キャッシュ３ａは、インデックスにより指定されたブロックのバリッド（ｖａｌｉｄ）ビットを読み出す。バリッドビットには、自ブロックにキャッシュされているデータ（ｄａｔａ）が有効であれば「１」が、無効であれば「０」が格納されている。キャッシュ３ａは、前記二つのタグが一致し、かつ前記指定されたブロックのバリッドビット（Ｖａｌｉｄ）が有効を示しているという条件を満たすか否かを、ＡＮＤ回路３２ａにて比較器３１ａの出力と読み出したバリッドビットとの論理積を算出することによって判定する。キャッシュ３ａは、前記した条件を満たす場合、キャッシュヒットしたことを示すヒット信号として、ＡＮＤ回路３２ａの出力である「１」を出力する。また、キャッシュ３ａは、前記した条件を満たさない場合、キャッシュミスしたことを示すヒット信号として、ＡＮＤ回路３２ａの出力である「０」を出力する。キャッシュヒットした場合、キャッシュ３ａは、ヒットしたブロックからデータを読み出して出力する。
【００１９】
キャッシュ３ｂは、記憶領域３０ｂ、比較器３１ｂおよびＡＮＤ回路３２ｂを備えている。記憶領域３０ｂ、比較器３１ｂおよびＡＮＤ回路３２ｂの機能は、夫々、キャッシュ３ａにおける記憶領域３０ａ、比較器３１ａおよびＡＮＤ回路３２ａの機能と等しいので、キャッシュ３ｂが備える夫々の構成要素に関する詳細な説明は省略する。
【００２０】
上記したキャッシュ３ａおよびキャッシュ３ｂの構成は一例であって、伝達されてきたアドレスにキャッシュヒットした場合はヒット信号にキャッシュヒットを出力するとともにキャッシュヒットしたデータを出力し、キャッシュミスした場合はヒット信号にキャッシュミスを出力する機能を有していれば、キャッシュ３ａ、キャッシュ３ｂはどのような構成を有していてもよい。
【００２１】
キャッシュ結合回路５は、図３に示すように、リフィル先指定部５４としてのレジスタ５４をさらに備えている。キャッシュ３ａ、キャッシュ３ｂが結合されている状態において、キャッシュ３ａ、キャッシュ３ｂが出力したヒット信号は、後ほど具体的に説明するヒット信号・データ伝達部５３の機能により、アドレスを発行したＣＰＵコアに伝達される。伝達されてきたヒット信号によりキャッシュミスしたことを知ったＣＰＵコアは、リフィルするデータ（リフィルデータ）をＲＡＭ４から読み出す。読み出されたリフィルデータは、キャッシュ３ａおよびキャッシュ３ｂのうちのレジスタ５４が指定するキャッシュのキャッシュミスしたインデックスにより識別されるブロックにリフィルされる。なお、リフィルのポリシには、例えば最後に読み出されてから最も長い時間が経っているブロックに格納されているデータをリフィルデータで置換するＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）や、リフィルされた時期が最も古いブロックに格納されているデータを置換するＬＲＲ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｒｅｐｌａｃｅｄ）などの公知のポリシを適用することができる。ＬＲＵやＬＲＲを適用する場合、レジスタ５４はインデックス毎にキャッシュを指定する必要があるため、レジスタ５４にはインデックス数に比例して増大するサイズの記憶容量が必用となる。このレジスタ５４の容量を削減するために、所定数のブロックがリフィルされる毎にリフィル先のキャッシュを切り替えるようなポリシを適用するようにしてもよい。このようにすることによって、レジスタ５４の容量は１ビットにまで削減される。
【００２２】
図４は、キャッシュ結合回路５のうちのヒット信号・データ伝達部５３の具体例を説明する図である。図示するように、キャッシュ結合回路５は、ヒット信号・データ伝達部５３として機能するＯＲ回路５３０、マルチプレクサ５３１、マルチプレクサ５３２、マルチプレクサ５３３、マルチプレクサ５３４およびマルチプレクサ５３５を備えている。また、キャッシュ結合回路５は、動作指定部５１としてのヒューズ５１２を備えている。
【００２３】
キャッシュ３ａから出力されたヒット信号は、マルチプレクサ５３２とＯＲ回路５３０とに入力される。また、キャッシュ３ｂから出力されたヒット信号は、マルチプレクサ５３４とＯＲ回路５３０とに入力される。ＯＲ回路５３０は、入力されたキャッシュ３ａおよびキャッシュ３ｂからのヒット信号についてＯＲ演算を行い、演算結果をマルチプレクサ５３２とマルチプレクサ５３４とに入力する。すなわち、ＯＲ回路５３０は、キャッシュ３ａおよびキャッシュ３ｂのヒット信号を収集し、どちらか一方のキャッシュにヒットした場合、ヒットした旨である「１」を出力する。マルチプレクサ５３２は、ヒューズ５１２を選択信号とし、キャッシュ３ａおよびＯＲ回路５３０のうちからヒット信号の入力元を選択し、選択した入力元からのヒット信号をＣＰＵコア２ａに出力する。また、マルチプレクサ５３４は、ヒューズ５１２を選択信号とし、キャッシュ３ｂおよびＯＲ回路５３０のうちからヒット信号の入力元を選択し、選択した入力元からのヒット信号をＣＰＵコア２ｂに出力する。
【００２４】
キャッシュ３ａから出力されたデータは、マルチプレクサ５３３とマルチプレクサ５３１とに入力される。また、キャッシュ３ｂから出力されたデータは、マルチプレクサ５３５とマルチプレクサ５３１とに入力される。マルチプレクサ５３１は、キャッシュ３ｂから出力されたヒット信号を選択信号として使用して、キャッシュ３ａおよびキャッシュ３ｂのうち入力元を選択し、選択した入力元から出力されたデータをマルチプレクサ５３３およびマルチプレクサ５３５に出力する。具体的には、マルチプレクサ５３１は、キャッシュ３ｂにキャッシュヒットした場合、キャッシュ３ｂから出力されたデータを出力し、キャッシュ３ｂにキャッシュヒットしなかった場合、キャッシュ３ａから出力されたデータを出力する。マルチプレクサ５３３は、ヒューズ５１２を選択信号とし、キャッシュ３ａおよびマルチプレクサ５３１のうちからデータの入力元を選択し、選択した入力元からのデータをＣＰＵコア２ａに出力する。また、マルチプレクサ５３５は、ヒューズ５１２を選択信号とし、キャッシュ３ｂおよびマルチプレクサ５３１のうちからデータの入力元を選択し、選択した入力元からのデータをＣＰＵコア２ｂに出力する。
【００２５】
例えば、製造者は、通常モードで動作させる場合、マルチプレクサ５３２およびマルチプレクサ５３３がキャッシュ３ａを選択し、かつマルチプレクサ５３４およびマルチプレクサ５３５がキャッシュ３ｂを選択するように、ヒューズ５１２を設定する。また、キャッシュ結合モードで動作させる場合、製造者は、マルチプレクサ５３２およびマルチプレクサ５３３が夫々ＯＲ回路５３０、マルチプレクサ５３１を選択し、かつマルチプレクサ５３４およびマルチプレクサ５３５が夫々ＯＲ回路５３０、マルチプレクサ５３１を選択するように、ヒューズ５１２を設定する。
【００２６】
このような構成により、ヒット信号・データ伝達部５３は、通常モードにおいては、キャッシュ３ａが出力するヒット信号およびデータをＣＰＵコア２ａへ伝達し、キャッシュ３ｂが出力するヒット信号およびデータをＣＰＵコア２ｂへ伝達することができる。また、ヒット信号・データ伝達部５３は、キャッシュ結合モードでかつＣＰＵコア２ａに結合したキャッシュを使用させる場合、キャッシュ３ａおよびキャッシュ３ｂが出力するヒット信号およびデータをＣＰＵコア２ａへ伝達し、キャッシュ結合モードでかつＣＰＵコア２ｂに結合したキャッシュを使用させる場合、キャッシュ３ａおよびキャッシュ３ｂが出力するヒット信号およびデータをＣＰＵコア２ｂへ伝達することができる。
【００２７】
なお、以上の説明においては、ＣＰＵコアの数を２個、すなわち結合するキャッシュの数を２個として説明したが、キャッシュシステム１は３個以上の複数のＣＰＵコアを有し、３個以上のキャッシュを結合するように構成してもかまわない。また、キャッシュシステム１は３個以上の複数のＣＰＵコアを有し、夫々のＣＰＵコアは、キャッシュを結合する相手を夫々一つ決めておくように構成し、キャッシュ結合回路５は、故障したＣＰＵコアのキャッシュを予め決められたＣＰＵコアのキャッシュと結合するようにしてよい。
【００２８】
また、ヒット信号・データ伝達部５３の具体例の説明においては、マルチプレクサ５３１はキャッシュ３ｂから出力されたヒット信号を選択信号として使用するとしたが、キャッシュ３ａから出力されたヒット信号を選択信号として使用するようにしてもよい。具体的には、マルチプレクサ５３１は、キャッシュ３ａにキャッシュヒットした場合、キャッシュ３ａから出力されたデータを出力し、キャッシュ３ａにキャッシュヒットしなかった場合、キャッシュ３ｂから出力されたデータを出力する。また、キャッシュ結合回路５が３個以上のキャッシュを結合するように構成する場合、マルチプレクサ５３１は結合対象の全てのキャッシュから出力されたヒット信号を選択信号として使用するようにするとよい。具体的には、マルチプレクサ５３１は、ヒット信号を出力したキャッシュをデータの入力元として選択する。
【００２９】
また、キャッシュシステム１においては、リフィルデータをＲＡＭ４から読み出す、として説明したが、キャッシュシステム１に多段キャッシュを備えさせ、キャッシュ３ａ、キャッシュ３ｂの後段のキャッシュからリフィルデータを読み出すように構成してもかまわない。
【００３０】
以上説明したように、本第１の実施の形態によれば、ＣＰＵコア２ａ、２ｂの夫々に備えられるキャッシュ３ａ、３ｂを結合し、結合したキャッシュをＣＰＵコア２ａ、２ｂのうちの一つに使用させるためのキャッシュ結合回路５は、結合したキャッシュを使用させる一つのＣＰＵコアを指定する動作指定部５１と、動作指定部５１が指定したＣＰＵコアが出力したアドレスをキャッシュ３ａ、３ｂの夫々へ伝達するアドレス伝達部５２と、アドレスにキャッシュ３ａ、３ｂのうちの一つがヒットした場合、前記ヒットしたキャッシュが出力したキャッシュヒットした旨のヒット信号およびキャッシュデータを動作指定部５１が指定したＣＰＵコアへ伝達するヒット信号・データ伝達部５３と、を備えるように構成したので、複数コアに夫々備えられるキャッシュを結合し、結合したキャッシュを一つのコアが使用することができるようになる。すると、ＣＰＵコアの故障によって使用可能なＣＰＵコア数が減少した場合であっても、故障したＣＰＵコアが備えるキャッシュを故障していないＣＰＵコアが備えるキャッシュと結合し、結合したキャッシュを使用するＣＰＵコアのキャッシュヒット率がキャッシュを結合していない場合に比して向上させることができるので、ＣＰＵコア数減少による性能低下を小さくすることができる。
【００３１】
また、動作指定部５１により指定されたＣＰＵコアが使用するキャッシュ３ａ、３ｂのうちのリフィルすべきデータの格納先のキャッシュを指定するリフィル先指定部５４をさらに備えるように構成したので、キャッシュ３ａ、３ｂを夫々異なるウェイとしたセットアソシアティブ方式のキャッシュとして結合後のキャッシュを使用することができるようになる。
【００３２】
なお、以上の説明においては、結合前のキャッシュ３ａおよびキャッシュ３ｂはダイレクトマップ方式のキャッシュであるとして説明したが、結合前のキャッシュ３ａおよびキャッシュ３ｂは複数ウェイセットアソシアティブ方式のキャッシュであっても本第１の実施の形態を適用することができる。すなわち、結合前のキャッシュ３ａおよびキャッシュ３ｂがｎウェイセットアソシアティブ方式として使用される場合、結合後においては結合後のキャッシュは２ｎウェイセットアソシアティブ方式のキャッシュとして使用されるようにするとよい。なお、その場合、結合前のキャッシュのウェイ数は結合前の夫々のキャッシュ間で等しくなくともよい。
【００３３】
（第２の実施の形態）
第１の実施の形態では、キャッシュ３ａおよびキャッシュ３ｂを夫々ダイレクトマップ方式のキャッシュとして使用し、結合後のキャッシュ３ａおよびキャッシュ３ｂを夫々のキャッシュを別々のウェイとする２ウェイアソシアティブ方式のキャッシュとして使用していた。第２の実施の形態では、結合後のキャッシュ３ａおよびキャッシュ３ｂを一つのダイレクトマップ方式のキャッシュとして使用する。
【００３４】
図５は、第２の実施の形態のメモリシステムの構成を説明する図である。図示するように、キャッシュシステム６は、ＣＰＵコア２ａと、ＣＰＵコア２ｂと、ＲＡＭ４と、を備えている。ＣＰＵコア２ａ、ＣＰＵコア２ｂおよびＲＡＭ４は夫々バスを介して接続されている。
【００３５】
第１の実施の形態と同様、ＣＰＵコア２ａ、ＣＰＵコア２ｂは、夫々、キャッシュ３ａ、キャッシュ３ｂを備えている。ＣＰＵコア２ａおよびＣＰＵコア２ｂは、ＲＡＭ４から読み出したデータを夫々キャッシュ３ａおよびキャッシュ３ｂにキャッシュする。ＣＰＵコア２ａおよびＣＰＵコア２ｂは、キャッシュ結合回路７を介して夫々キャッシュ３ａおよびキャッシュ３ｂにアクセスする。キャッシュ結合回路７は、キャッシュ３ａおよびキャッシュ３ｂを結合する。
【００３６】
図６は、キャッシュ３ａおよびキャッシュ３ｂを結合して一つのダイレクトマップ方式のキャッシュとして使用する様子を概念的に説明する図である。図示するように、キャッシュ結合後においては、キャッシュ３ａが備えるブロックの夫々に結合後のインデックス０〜ｎ−１が割り当てられ、キャッシュ３ｂが備えるブロックの夫々に結合後のインデックスｎ〜２ｎ−１が割り当てられている。すなわち、キャッシュ３ａおよび３ｂが有する夫々ｎ個のブロックに分割されている記憶領域は、結合後においては２ｎ個のブロックに分割された一つの記憶領域として見なされる。つまり、結合後においては、インデックス数が結合前の２倍の数になる。インデックス数が２倍になるため、アドレスのうちのインデックスとして使用する部分が１ビット増加し、タグとして使用する部分が１ビット減少する。なお、キャッシュ３ａおよびキャッシュ３ｂが備える記憶領域の各ブロックにおけるタグを記憶するために確保されている部分は、キャッシュ結合後においては１ビット分が不要となる。本第２の実施の形態では、アドレスのうちのインデックスおよびタグとして使用する部分の増減に対応できるようになっている。
【００３７】
図７は、キャッシュ結合回路７の機能構成を説明する図である。図示するように、キャッシュ結合回路７は、動作モードの指定と、キャッシュ結合モードを指定する場合、結合したキャッシュを使用させるＣＰＵコアの指定とを行う動作指定部７１と、結合したキャッシュを使用するＣＰＵコアが出力するアドレスのうちのインデックスをキャッシュ３ａおよびキャッシュ３ｂへ伝達するインデックス伝達部７２と、前記アドレスのうちのタグをキャッシュ３ａおよびキャッシュ３ｂへ伝達するタグ伝達部７３と、キャッシュ３ａおよびキャッシュ３ｂからのヒット信号およびキャッシュヒットした場合のキャッシュデータを結合後のキャッシュを使用するＣＰＵコアへ伝達するヒット信号・データ伝達部７４と、を備えている。
【００３８】
図８は、キャッシュ結合回路７のうちのインデックス伝達部７２の具体例を説明する図である。図８において、キャッシュ結合回路７は、インデックス伝達部７２としてのマルチプレクサ７２０およびマルチプレクサ７２１と、動作指定部７１としてのヒューズ７１０およびヒューズ７１１と、を備えている。ＣＰＵコア２ａが出力するアドレスのうちの本来的なインデックスは、マルチプレクサ７２０およびマルチプレクサ７２１に入力される。また、ＣＰＵコア２ｂが出力するアドレスのうちの本来的なインデックスも同様にマルチプレクサ７２０およびマルチプレクサ７２１に入力される。マルチプレクサ７２０およびマルチプレクサ７２１は、夫々ヒューズ７１０、ヒューズ７１１を選択信号として入力元のＣＰＵコアを選択し、選択したＣＰＵコアからのインデックスを夫々キャッシュ３ａ、キャッシュ３ｂへ伝達する。
【００３９】
例えば、通常モードで動作させる場合、製造者は、マルチプレクサ７２０がＣＰＵコア２ａ、マルチプレクサ７２１がＣＰＵコア２ｂを夫々インデックス入力元として選択するようにヒューズ７１０、ヒューズ７１１を設定しておく。キャッシュ結合モードで、かつ結合したキャッシュをＣＰＵコア２ａに使用させる場合、製造者は、マルチプレクサ７２０およびマルチプレクサ７２１がともにＣＰＵコア２ａをインデックス入力元として選択するようにヒューズ７１０、ヒューズ７１１を設定しておく。同様に、キャッシュ結合モードで、かつ結合したキャッシュをＣＰＵコア２ｂに使用させる場合、製造者は、マルチプレクサ７２０およびマルチプレクサ７２１がともにＣＰＵコア２ｂをインデックス入力元として選択するようにヒューズ７１０、ヒューズ７１１を設定しておく。
【００４０】
図９は、キャッシュ結合回路７のうちのタグ伝達部７３の具体例を説明する図である。図示するように、キャッシュ結合回路７は、タグ伝達部７３としてのマルチプレクサ７３０、マルチプレクサ７３１およびマルチプレクサ７３２を備えている。また、キャッシュ結合回路７は、動作指定部７１としてのヒューズ７１２およびヒューズ７１３を備えている。
【００４１】
ＣＰＵコア２ａが出力する本来的なタグは、マルチプレクサ７３１に入力される。また、ＣＰＵコア２ａが出力する本来的なタグは下位１ビットを切り落とされてマルチプレクサ７３０に入力される。同様に、ＣＰＵコア２ｂが出力する本来的なタグは、マルチプレクサ７３２に入力され、下位１ビットが切り落とされたタグがマルチプレクサ７３０に入力される。
【００４２】
マルチプレクサ７３０は、ヒューズ７１２を選択信号とし、ＣＰＵコア２ａまたはＣＰＵコア２ｂのうちの一つを下位１ビットが切り落とされたタグの入力元として選択する。マルチプレクサ７３０により選択された下位１ビットが切り落とされたタグは、二つに分岐してマルチプレクサ７３１およびマルチプレクサ７３２に夫々入力される。マルチプレクサ７３１は、ヒューズ７１３を選択信号としてＣＰＵコア２ａまたはマルチプレクサ７３０のうちの一つを入力元として選択し、選択された入力元からのタグまたは下位１ビットが切り落とされたタグをキャッシュ３ａへ伝達する。同様に、マルチプレクサ７３２は、ヒューズ７１３を選択信号としてＣＰＵコア２ｂまたはマルチプレクサ７３０のうちの一つを入力元として選択し、選択された入力元からのタグまたは下位１ビットが切り落とされたタグをキャッシュ３ｂへ伝達する。
【００４３】
例えば、通常モードで動作させる場合、製造者は、マルチプレクサ７３１、マルチプレクサ７３２が夫々ＣＰＵコア２ａ、ＣＰＵコア２ｂを入力元として選択するようにヒューズ７１３を設定しておく。キャッシュ結合モードで動作させる場合、製造者は、マルチプレクサ７３１、マルチプレクサ７３２がともにマルチプレクサ７３０を入力元として選択するようにヒューズ７１３を設定しておく。また、キャッシュ結合モードで動作させる場合において、ＣＰＵコア２ａを使用させるとき、製造者は、ＣＰＵコア２ａを下位１ビットを切り落としたタグの入力元として選択するようにヒューズ７１２を設定しておく。同様に、ＣＰＵコア２ｂを使用させるとき、製造者は、ＣＰＵコア２ｂを下位１ビットを切り落としたタグの入力元として選択するようにヒューズ７１２を設定しておく。
【００４４】
このように、キャッシュ結合モードにおいては下位１ビットを切り落としたタグを伝達するようにしたので、キャッシュ統合によるタグの下位１ビットの減少に対応することができる。
【００４５】
なお、マルチプレクサ７３０により選択されたタグから切り落とされた下位１ビットは、キャッシュ結合により増加したインデックス、つまりキャッシュ結合後の実質的なインデックスの最上位桁に等しい。すなわち、キャッシュ結合後においては、切り落とされたタグの下位１ビットによりキャッシュ３ａ、キャッシュ３ｂのうちの一つを識別し、キャッシュ結合前の本来的なインデックスにより夫々のキャッシュ内のブロックを識別することができる。この性質を利用し、後述するヒット信号・データ伝達部７４は、この切り落とされた下位１ビットを用いて、ヒット信号およびデータを受信するキャッシュを選択する。なお、ここでは、図６に示したように、キャッシュ結合後においては、キャッシュ３ａが備えるブロックの夫々に結合後のインデックス０〜ｎ−１が割り当てられ、キャッシュ３ｂが備えるブロックの夫々に結合後のインデックスｎ〜２ｎ−１が割り当てられる、とする。すなわち、キャッシュ３ａは切り落とされたタグ１ビットが「０」のときに選択され、キャッシュ３ｂは切り落とされたタグ１ビットが「１」のときに選択される、とする。
【００４６】
図１０は、キャッシュ結合回路７のうちのヒット信号・データ伝達部７４の具体例を説明する図である。図示するように、キャッシュ結合回路７は、ヒット信号・データ伝達部７４としてのマルチプレクサ７４０、マルチプレクサ７４１、マルチプレクサ７４２、マルチプレクサ７４３、マルチプレクサ７４４およびマルチプレクサ７４５を備えている。また、キャッシュ結合回路７は、動作指定部７１としてのヒューズ７１４を備えている。
【００４７】
キャッシュ３ａが出力したヒット信号は、マルチプレクサ７４０とマルチプレクサ７４２とに入力される。キャッシュ３ａが出力したデータは、マルチプレクサ７４１とマルチプレクサ７４３とに入力される。キャッシュ３ｂが出力したヒット信号は、マルチプレクサ７４０とマルチプレクサ７４４とに入力される。キャッシュ３ｂが出力したデータは、マルチプレクサ７４１とマルチプレクサ７４５とに入力される。
【００４８】
マルチプレクサ７４０、マルチプレクサ７４１は、ともに、前記したマルチプレクサ７３０が選択した入力元が出力したタグのうちの切り落とされた下位１ビットを選択信号とし、夫々、キャッシュ３ａおよびキャッシュ３ｂのうちからいずれか一つを入力元として選択する。マルチプレクサ７４０は、選択したヒット信号をマルチプレクサ７４２およびマルチプレクサ７４４に入力する。マルチプレクサ７４１は、選択したデータをマルチプレクサ７４３およびマルチプレクサ７４５に入力する。
【００４９】
マルチプレクサ７４２は、ヒューズ７１４を選択信号としてキャッシュ３ａとマルチプレクサ７４０のうちからヒット信号の入力元を選択し、選択した入力元からのヒット信号をＣＰＵコア２ａに出力する。マルチプレクサ７４３は、ヒューズ７１４を選択信号としてキャッシュ３ａとマルチプレクサ７４１のうちからデータの入力元を選択し、選択した入力元からのデータをＣＰＵコア２ａに出力する。同様に、マルチプレクサ７４４は、ヒューズ７１４を選択信号としてキャッシュ３ｂとマルチプレクサ７４０のうちからヒット信号の入力元を選択し、選択した入力元からのヒット信号をＣＰＵコア２ｂに出力する。マルチプレクサ７４５は、ヒューズ７１４を選択信号としてキャッシュ３ｂとマルチプレクサ７４１のうちからデータの入力元を選択し、選択した入力元からのデータをＣＰＵコア２ｂに出力する。
【００５０】
例えば、通常モードで動作させる場合、製造者は、マルチプレクサ７４２およびマルチプレクサ７４３がキャッシュ３ａを入力元として選択し、マルチプレクサ７４４およびマルチプレクサ７４５がキャッシュ３ｂを入力元として選択するようにヒューズ７１４を設定しておく。キャッシュ結合モードで動作させる場合、製造者は、マルチプレクサ７４２およびマルチプレクサ７４３が夫々マルチプレクサ７４０、マルチプレクサ７４１を入力元として選択し、マルチプレクサ７４４およびマルチプレクサ７４５が夫々マルチプレクサ７４０、マルチプレクサ７４１を入力元として選択するようにヒューズ７１４を設定しておく。マルチプレクサ７４０は、マルチプレクサ７３０が選択した入力元が出力したタグのうちの切り落とした下位１ビットが「０」のとき、キャッシュ３ａをヒット信号の入力元として選択し、切り落とした下位１ビットが「１」のとき、キャッシュ３ｂを選択する。同様に、マルチプレクサ７４１は、マルチプレクサ７３０が選択した入力元が出力したタグのうちの切り落とされた下位１ビットが「０」のとき、キャッシュ３ａをデータの入力元として選択し、切り落とされた下位１ビットが「１」のとき、キャッシュ３ｂをデータの入力元として選択する。
【００５１】
以上説明したように、第２の実施の形態によれば、ヒット信号・データ伝達部７４は、動作指定部７１が指定するＣＰＵコアが出力したアドレスが含むタグの下位１ビットに基づいて前記ＣＰＵコアに使用させる２個のキャッシュ３ａ、３ｂのうちから前記ＣＰＵコアに伝達すべきデータ信号およびキャッシュデータの出力元のキャッシュを選択する、ように構成したので、結合後のキャッシュをダイレクトマップ方式のキャッシュとして使用することができるようになる。
【００５２】
なお、以上の説明においては、ＣＰＵコアの数を２個、すなわち結合するキャッシュの数を２個として説明したが、キャッシュシステム６は３個以上のＣＰＵコアを有し、夫々のＣＰＵコアは、キャッシュを結合する相手を夫々一つ決めておくように構成し、キャッシュ結合回路７は、故障したＣＰＵコアのキャッシュを予め決められたＣＰＵコアのキャッシュと結合するようにしてよい。また、キャッシュシステム６は、２個以外の複数のキャッシュを結合するようにしてもよい。２個以外の複数のキャッシュを結合する場合、本来的なタグから切り落とすべきビット数が２ビット以上となり、構成が複雑になる。以下に、２個以外の複数のキャッシュを結合する場合の構成について説明する。
【００５３】
図１１は、４個のキャッシュを結合する第２の実施の形態のキャッシュシステム６の構成を説明する図である。図示するように、キャッシュシステム６は、図６に示した構成に、キャッシュ３ｃ、キャッシュ３ｄを夫々備えるＣＰＵコア２ｃ、ＣＰＵコア２ｄが追加されている。ＣＰＵコア２ａ、ＣＰＵコア２ｂ、ＣＰＵコア２ｃおよびＣＰＵコア２ｄはキャッシュ結合回路７を介してキャッシュ３ａ、キャッシュ３ｂ、キャッシュ３ｃおよびキャッシュ３ｄにアクセスする。
【００５４】
図１２は、このように構成される場合のキャッシュ結合回路７のうちのタグ伝達部７３の具体例を説明する図である。図示するように、キャッシュ結合回路７は、タグ伝達部７３としてのマルチプレクサ７３３、マルチプレクサ７３４ａ、マルチプレクサ７３４ｂ、マルチプレクサ７３４ｃおよびマルチプレクサ７３４ｄを備えている。また、キャッシュ結合回路７は、動作指定部７１としてのヒューズ７１５、ヒューズ７１６ａ、ヒューズ７１６ｂ、ヒューズ７１６ｃおよびヒューズ７１６ｄを備えている。
【００５５】
マルチプレクサ７３３には、ＣＰＵコア２ａ〜２ｄの夫々から出力される本来的なタグが下位１ビットおよび下位２ビット切り落とされて夫々入力される。マルチプレクサ７３３は、ヒューズ７１５を選択信号としてＣＰＵコア２ａ〜２ｄの夫々から入力される下位１ビットが切り落とされた本来的なタグと下位２ビットが切り落とされた本来的なタグのうちから一つを選択して出力する。マルチプレクサ７３３からの出力は４つに分岐し、夫々マルチプレクサ７３４ａ〜７３４ｄに入力される。また、マルチプレクサ７３４ａ〜７３４ｄには、ＣＰＵコア２ａ〜２ｄから出力される本来的なタグが夫々入力される。マルチプレクサ７３４ａ〜７３４ｄは、夫々ヒューズ７１６ａ〜７１６ｄを選択信号とし、マルチプレクサ７３３またはＣＰＵコア２ａ〜２ｄのうちから入力元をひとつ選択する。マルチプレクサ７３４ａ〜７３４ｄは、選択した入力元からの入力をキャッシュ３ａ〜３ｄへ伝達する。
【００５６】
製造者は、結合するキャッシュの個数と結合したキャッシュを使用させるＣＰＵコアに基づいてヒューズ７１５を設定する。例えば、４個のキャッシュ３ａ〜３ｄすべてを結合する場合、本来的なタグのうちの下位２ビットは必要なくなる。そのため、製造者は、結合したキャッシュを使用させるＣＰＵコアが出力する下位２ビットを切り落としたタグの入力を選択するように設定する。４個のキャッシュ３ａ〜３ｄのうちの２つのキャッシュを結合する場合、本来的なタグのうちの下位１ビットが必要なくなる。そのため、製造者は、結合したキャッシュを使用させるＣＰＵコアが出力する下位１ビットを切り落としたタグの入力を選択するように設定する。
【００５７】
また、製造者は、結合対象のキャッシュに対する出力としてマルチプレクサ７３３からの出力を選択するようにマルチプレクサ７３４ａ〜７３４ｄの選択信号であるヒューズ７１６ａ〜７１６ｄを設定する。例えば、４個のキャッシュ３ａ〜３ｄすべてを結合する場合、製造者は、マルチプレクサ７３４ａ〜７３４ｄがマルチプレクサ７３３からの出力を選択するようにヒューズ７１６ａ〜７１６ｄを設定する。また、キャッシュ３ａとキャッシュ３ｃとを結合し、キャッシュ３ｂおよびキャッシュ３ｄは結合しない場合、製造者は、マルチプレクサ７３４ａおよびマルチプレクサ７３４ｃはマルチプレクサ７３３からの出力を選択し、マルチプレクサ７３４ｂ、マルチプレクサ７３４ｄは夫々ＣＰＵコア２ｂ、ＣＰＵコア２ｄを選択するようにヒューズ７１６ａ〜７１６ｄを設定する。
【００５８】
図１３は、キャッシュ結合回路７のうちのタグ伝達部７３の他の具体例を説明する図である。図示するように、キャッシュ結合回路７は、図１２におけるマルチプレクサ７３３に代わって、マルチプレクサ７３５ａ、マルチプレクサ７３５ｂ、マルチプレクサ７３５ｃおよびマルチプレクサ７３５ｄ、マルチプレクサ７３６を備えている。また、キャッシュ結合回路７は、図１２におけるヒューズ７１５に代わって、ヒューズ７１７およびヒューズ７１８を備えている。
【００５９】
マルチプレクサ７３５ａには、ＣＰＵコア２ａから出力される、下位１ビットが切り落とされた本来的なタグと、下位２ビットが切り落とされた本来的なタグとが入力される。マルチプレクサ７３５ａは、ヒューズ７１７を選択信号として下位１ビットまたは下位２ビットが切り落とされたタグを選択し、マルチプレクサ７３６に出力する。同様に、マルチプレクサ７３５ｂ、マルチプレクサ７３５ｃ、マルチプレクサ７３５ｄには、夫々、ＣＰＵコア２ｂ、ＣＰＵコア２ｃ、ＣＰＵコア２ｄから出力される、下位１ビットおよび下位２ビットが切り落とされた本来的なタグが入力される。そして、マルチプレクサ７３５ｂ、マルチプレクサ７３５ｃ、マルチプレクサ７３５ｄは、ヒューズ７１７を選択信号として入力された下位１ビットまたは下位２ビットが切り落とされたタグを選択し、マルチプレクサ７３６に出力する。マルチプレクサ７３６は、ヒューズ７１８を選択信号とし、入力元をマルチプレクサ７３５ａ〜７３５ｄのうちから選択し、選択した入力元からの入力をマルチプレクサ７３４ａ〜７３４ｄに夫々入力する。
【００６０】
製造者は、結合するキャッシュの個数に基づいてヒューズ７１７を設定する。例えば、４個のキャッシュを結合する場合、製造者は、マルチプレクサ７３５ａ〜７３５ｄが夫々下位２ビットが切り落とされたタグを選択するようにヒューズ７１７を設定し、２個のキャッシュを結合する場合、マルチプレクサ７３５ａ〜７３５ｄが夫々下位１ビットが切り落とされたタグを選択するようにヒューズ７１７を設定する。そして、製造者は、結合したキャッシュを使用させるＣＰＵコアをヒューズ７１８を用いて指定する。例えば、ＣＰＵコア２ａに結合したキャッシュを使用させる場合、マルチプレクサ７３５ａを入力元として選択するようにヒューズ７１７を設定する。
【００６１】
なお、マルチプレクサ７３５ａ〜７３５ｄの代わりに、図１４に示すように、ＣＰＵコア２ａ〜２ｄから出力される本来的なタグが夫々入力されるシフタ７３７ａ、シフタ７３７ｂ、シフタ７３７ｃ、シフタ７３７ｄを備えるように構成してもよい。シフタ７３７ａ〜７３７ｄは、入力されてくる本来的なタグのうちの下位１ビットまたは下位２ビットを切り落とし、下位ビットまたは下位２ビットを切り落としたタグを夫々出力する。シフタ７３７ａ〜７３７ｄは、ヒューズ７１７に基づいて下位１ビットを切り落とすかまたは下位２ビットを切り落とすかを選択する。
【００６２】
図１５は、キャッシュ結合回路７のうちのヒット信号・データ伝達部７４が含むヒット信号を伝達する部分の構成の具体例を説明する図である。図示するように、キャッシュ結合回路７は、ヒット信号・データ伝達部７４としてのマルチプレクサ７４６ａ、マルチプレクサ７４６ｂ、マルチプレクサ７４６ｃ、マルチプレクサ７４６ｄ、マルチプレクサ７４７ａ、マルチプレクサ７４７ｂ、マルチプレクサ７４７ｃおよびマルチプレクサ７４７ｄを備えている。また、キャッシュ結合回路７は、動作指定部７１としてのヒューズ７１９ａ、ヒューズ７１９ｂ、ヒューズ７１９ｃ、ヒューズ７１９ｄ、ヒューズ７５０ａ、ヒューズ７５０ｂ、ヒューズ７５０ｃおよびヒューズ７５０ｄを備えている。
【００６３】
キャッシュ３ａから出力されたヒット信号は、マルチプレクサ７４６ａ〜７４６ｄおよびマルチプレクサ７４７ａに入力される。同様に、キャッシュ３ｂから出力されたヒット信号は、マルチプレクサ７４６ａ〜７４６ｄおよびマルチプレクサ７４７ｂに入力され、キャッシュ３ｃから出力されたヒット信号は、マルチプレクサ７４６ａ〜７４６ｄおよびマルチプレクサ７４７ｃに入力され、キャッシュ３ｄから出力されたヒット信号は、マルチプレクサ７４６ａ〜７４６ｄおよびマルチプレクサ７４７ｄに入力される。マルチプレクサ７４６ａ〜７４６ｄは、夫々ヒューズ７１９ａ〜７１９ｄを選択信号としてヒット信号の入力元をキャッシュ３ａ〜３ｄのうちから選択する。マルチプレクサ７４６ａ〜７４６ｄは、選択したヒット信号の入力元から入力されたヒット信号をマルチプレクサ７４７ａ〜７４７ｄに入力する。
【００６４】
なお、マルチプレクサ７４７ａ〜７４７ｄに入力される選択信号の値が十進数で０〜４の範囲を取りうるとし、マルチプレクサ７４７ａ〜７４７ｄが有する入力チャンネル０〜入力チャンネル４が夫々選択信号「０」〜「４」によって選択されるとすると、マルチプレクサ７４７ａ〜７４７ｄの夫々の入力チャンネル「０」にはマルチプレクサ７４６ａの出力が接続され、入力チャンネル「１」にはマルチプレクサ７４６ｂの出力が接続され、入力チャンネル「２」にはマルチプレクサ７４６ｃの出力が接続され、入力チャンネル「３」にはマルチプレクサ７４６ｄの出力が接続される。また、マルチプレクサ７４７ａ〜７４７ｄの入力チャンネル「４」には、夫々キャッシュ３ａ〜３ｄの出力が直接に接続される。
【００６５】
マルチプレクサ７４７ａは、ヒューズ７５０ａ、タグの切り落とされた下位１ビットの値またはタグの切り落とされた下位２ビットの値を選択信号とし、入力チャンネル「０」〜「４」のうちの一つを選択し、選択した入力チャンネルからの入力をＣＰＵコア２ａに出力する。同様に、マルチプレクサ７４７ｂは、ヒューズ７５０ｂ、タグの切り落とされた下位１ビットの値またはタグの切り落とされた下位２ビットの値を選択信号とし、入力チャンネル「０」〜「４」のうちの一つを選択し、選択した入力チャンネルからの入力をＣＰＵコア２ｂに出力する。マルチプレクサ７４７ｃは、ヒューズ７５０ｃ、タグの切り落とされた下位１ビットの値またはタグの切り落とされた下位２ビットの値を選択信号とし、入力チャンネル「０」〜「４」のうちの一つを選択し、選択した入力チャンネルからの入力をＣＰＵコア２ｃに出力する。マルチプレクサ７４７ｄは、ヒューズ７５０ｄ、タグの切り落とされた下位１ビットの値またはタグの切り落とされた下位２ビットの値を選択信号とし、入力チャンネル「０」〜「４」のうちの一つを選択し、選択した入力チャンネルからの入力をＣＰＵコア２ｄに出力する。
【００６６】
製造者は、通常モードで動作させる場合、マルチプレクサ７４７ａ〜７４７ｄが夫々入力チャンネル「４」を選択するようにヒューズ７５０ａ〜７５０ｄを設定する。また、製造者は、キャッシュ３ａ〜３ｄを全て結合するキャッシュ結合モードで動作させる場合、キャッシュ３ａ〜３ｄの夫々が必ずマルチプレクサ７４６ａ〜７４６ｄのうちの何れか一つによって選択されるようにヒューズ７１９ａ〜７１９ｄを設定する。例えば、マルチプレクサ７４６ａがキャッシュ３ａ、マルチプレクサ７４６ｂがキャッシュ３ｂ、マルチプレクサ７４６ｃがキャッシュ３ｃ、マルチプレクサ７４６ｄがキャッシュ３ｄを選択するように設定する。さらに、製造者は、マルチプレクサ７４７ａ〜７４７ｄがタグの切り落とされた下位２ビットに基づいて入力チャンネルを選択するように設定する。
【００６７】
キャッシュ３ａ〜３ｄのうちの二つのキャッシュを結合する場合、製造者は、結合する二つのキャッシュの夫々がマルチプレクサ７４６ａ、マルチプレクサ７４６ｂのうちのいずれか一つによって選択されるようにヒューズ７１９ａおよびヒューズ７１９ｂを設定する。そして、製造者は、マルチプレクサ７４７ａ〜７４７ｄのうち、結合対象でないキャッシュを備えるＣＰＵコアに出力するマルチプレクサが、入力チャンネル「４」を選択するようにヒューズ７５０ａ〜７５０ｄのうちの対象のヒューズを設定する。そして、製造者は、マルチプレクサ７４７ａ〜７４７ｄのうち、結合対象のキャッシュを備えるＣＰＵコアに出力するマルチプレクサが、タグの切り落とされた下位１ビットを選択信号として入力チャンネルを選択するように設定する。例えば、キャッシュ３ａおよびキャッシュ３ｃを結合する場合、製造者は、マルチプレクサ７４６ａがキャッシュ３ａ、マルチプレクサ７４６ｂがキャッシュ３ｃを選択するようにヒューズ７１９ａ、ヒューズ７１９ｂを設定する。そして、製造者は、マルチプレクサ７４７ｂおよびマルチプレクサ７４７ｄが入力チャンネル「４」を選択するようにヒューズ７５０ｂ、ヒューズ７５０ｄを設定し、マルチプレクサ７４７ａおよびマルチプレクサ７４７ｃがタグの切り落とされた下位１ビットに基づいて入力チャンネルを選択するように設定する。例えばタグの切り落とされた下位１ビットが「０」である場合、マルチプレクサ７４７ａおよびマルチプレクサ７４７ｃは、入力チャンネル「０」を選択、すなわちキャッシュ３ａからのヒット信号を透過するマルチプレクサ７４６ａからの入力を出力し、下位１ビットが「１」である場合、マルチプレクサ７４７ａおよびマルチプレクサ７４７ｃは、入力チャンネル「１」を選択、すなわちキャッシュ３ｃからのヒット信号を透過するマルチプレクサ７４６ｂからの入力を出力する。
【００６８】
キャッシュ結合回路７のうちのヒット信号・データ伝達部７４が含むデータを伝達する部分の構成は、上述したヒット信号を伝達する部分の構成と同様の構成で実現できるので、データを伝達する部分の構成についての説明は省略する。
【００６９】
このように、結合可能なキャッシュの数が２個以外の複数であっても、本第２の実施の形態を適用することが可能である。なお、結合対象のキャッシュは、本来的なタグの下位の所定数ビットによって互いに識別される。したがって、結合するキャッシュの数は２のべき乗個であることが望ましい。
【００７０】
（第３の実施の形態）
第１および第２の実施の形態のキャッシュ結合回路では、製造者が、動作モードおよび結合したキャッシュをどのＣＰＵコアに使用させるか、を設定していた。第３の実施の形態では、製造時点においては正常に動作していたＣＰＵコアが経年劣化などの利用により不良となった場合、通常モードからキャッシュ結合モードに変更し、不良となったＣＰＵコアが備えるキャッシュを不良ではないＣＰＵコアが使用できるようにする。
【００７１】
図１６は、第３の実施の形態のキャッシュシステムの構成を説明する図である。図示するように、キャッシュシステム８は、ＣＰＵコア２ａ、ＣＰＵコア２ｂ、ＲＡＭ４および故障検出回路１０、を備えている。ＣＰＵコア２ａ、ＣＰＵコア２ｂ、ＲＡＭ４および故障検出回路１０は夫々バスに接続されている。
【００７２】
故障検出回路１０は、キャッシュシステム８の実行中において、ＣＰＵコア２ａおよびＣＰＵコア２ｂの故障検出を実行する。例えば、故障検出回路１０は、所定の時間、特定のＣＰＵコアからのバスアクセスが無い場合に、該ＣＰＵコアが故障している、と判断する。
【００７３】
ＣＰＵコア２ａ、ＣＰＵコア２ｂは、第１の実施の形態と同様、夫々、キャッシュ３ａ、キャッシュ３ｂを備えている。ＣＰＵコア２ａおよびＣＰＵコア２ｂは、ＲＡＭ４から読み出したデータを夫々キャッシュ３ａおよびキャッシュ３ｂにキャッシュする。ＣＰＵコア２ａおよびＣＰＵコア２ｂは、キャッシュ結合回路９を介して夫々キャッシュ３ａおよびキャッシュ３ｂにアクセスする。キャッシュ結合回路９は、故障検出回路１０の故障検出結果に基づいて、ＣＰＵコア２ａおよびＣＰＵコア２ｂが夫々使用するためのキャッシュ３ａおよびキャッシュ３ｂを結合する。
【００７４】
図１７は、キャッシュ結合回路９の機能構成を説明する図である。なお、ここでは、第１の実施の形態と同一の構成要素には同一の符号を付し、詳細な説明を省略している。図示するように、キャッシュ結合回路９は、動作指定部９１と、アドレス伝達部５２と、ヒット信号・データ伝達部５３と、リフィル先指定部５４と、を備えている。
【００７５】
動作指定部９１は、故障検出回路１０による故障検出結果に基づいてアドレス伝達部５２およびヒット信号・データ伝達部５３が備えるマルチプレクサの選択信号を操作する。具体的には、動作指定部９１は、故障検出回路１０がＣＰＵコア２ａおよびＣＰＵコア２ｂの双方に故障を検出していない場合、通常モードで動作させるように選択信号をアドレス伝達部５２およびヒット信号・データ伝達部５３が備えるマルチプレクサに送る。また、動作指定部９１は、通常モードで動作中に故障検出回路１０がＣＰＵコア２ａに故障を検出した場合、キャッシュ結合モードに移行させ、かつ結合したキャッシュをＣＰＵコア２ｂに使用させるように前記選択信号を切り替える。動作指定部９１は、通常モードで動作中に故障検出回路１０がＣＰＵコア２ｂに故障を検出した場合、キャッシュ結合モードに移行させ、かつ結合したキャッシュをＣＰＵコア２ａに使用させるように前記選択信号を切り替える。
【００７６】
以上説明したように、第３の実施の形態によれば、故障検出回路１０による故障検出結果に基づいて前記キャッシュ結合回路の動作モードを切り替えるように構成したので、経年劣化などによる故障によって使用できるＣＰＵコア数が減少してもＣＰＵコア数減少による性能低下を小さくすることができるようになる。
【００７７】
なお、以上の説明においては、第１の実施の形態、すなわち結合したキャッシュを複数ウェイセットアソシアティブ方式のキャッシュとして使用するキャッシュシステムに適用する場合について述べたが、本第３の実施の形態は、第２の実施の形態のように結合したキャッシュをダイレクトマップ方式のキャッシュとして使用するキャッシュシステムに適用することも可能である。また、第１および第２の実施の形態と同様に、第３の実施の形態では、結合するキャッシュの個数は２個に限定しない。
【００７８】
また、故障検出回路１０は、ＣＰＵコアに故障を検出したとき、故障を検出したＣＰＵコアに供給されているクロック供給あるいは電源供給を遮断するようにしてもよい。
【００７９】
また、故障検出回路１０はバスを介してＣＰＵコア２ａ、ＣＰＵコア２ｂに接続されているとして説明したが、故障検出回路１０はＣＰＵコア２ａ、ＣＰＵコア２ｂに直接接続されるようにしてもよい。その場合、例えば、故障検出回路１０は、ＣＰＵコア毎に設けられたウオッチドッグタイマーに接続され、所定の時間、ＣＰＵコアが動作していないことを検出して、該ＣＰＵコアを故障と判断する。ウオッチドッグタイマーの作りは任意である。例えば、ウオッチドッグタイマーは、インストラクションポインタの更新頻度やＡＬＵの計算頻度を見るようにするとよい。
【００８０】
（第４の実施の形態）
第３の実施の形態では、製造後の故障発生に対応して動作モードを切り替えることが出来るようにした。第４の実施の形態では、ＣＰＵコア毎の負荷バランスに応じて動作モードの切り替えを実行する。
【００８１】
図１８は、第４の実施の形態のキャッシュシステムの構成を説明する図である。図示するように、キャッシュシステム１１は、ＣＰＵコア２ａ、ＣＰＵコア２ｂ、ＲＡＭ４および負荷計測回路１３、を備えている。ＣＰＵコア２ａ、ＣＰＵコア２ｂ、ＲＡＭ４および故障検出回路１０は夫々バスに接続されている。
【００８２】
負荷計測回路１３は、キャッシュシステム１１の実行中において、ＣＰＵコア２ａおよびＣＰＵコア２ｂにかかっている負荷を計測する。例えば、負荷計測回路１３は、所定の時間におけるバスアクセスの頻度を用いて負荷を計測する。
【００８３】
ＣＰＵコア２ａ、ＣＰＵコア２ｂは、第１の実施の形態と同様、夫々、キャッシュ３ａ、キャッシュ３ｂを備えている。ＣＰＵコア２ａおよびＣＰＵコア２ｂは、ＲＡＭ４から読み出したデータを夫々キャッシュ３ａおよびキャッシュ３ｂにキャッシュする。ＣＰＵコア２ａおよびＣＰＵコア２ｂは、キャッシュ結合回路１２を介して夫々キャッシュ３ａおよびキャッシュ３ｂにアクセスする。キャッシュ結合回路１２は、負荷計測回路１３の負荷計測結果に基づいて、キャッシュ３ａおよびキャッシュ３ｂを結合したり、キャッシュ３ａおよびキャッシュ３ｂの結合を終了したりする。
【００８４】
図１９は、キャッシュ結合回路１２の機能構成を説明する図である。なお、ここでは、第１の実施の形態と同一の構成要素には同一の符号を付し、詳細な説明を省略している。図示するように、キャッシュ結合回路１２は、動作指定部１２１と、アドレス伝達部５２と、ヒット信号・データ伝達部５３と、リフィル先指定部５４と、を備えている。
【００８５】
動作指定部１２１は、負荷計測回路１３による負荷計測結果に基づいてアドレス伝達部５２およびヒット信号・データ伝達部５３が備えるマルチプレクサの選択信号を操作して、動作モードおよび／またはキャッシュ結合モード時における結合したキャッシュを使用させるＣＰＵコアの指定を切り替える。具体的には、動作指定部１２１は、負荷計測回路１３による計測結果がＣＰＵコア２ａおよびＣＰＵコア２ｂの双方に均等に負荷がかかっていることを示している場合、通常モードで動作させるように選択信号をアドレス伝達部５２およびヒット信号・データ伝達部５３が備えるマルチプレクサに送る。また、動作指定部１２１は、通常モードで動作中に負荷計測回路１３による計測結果がＣＰＵコア２ａにかかっている負荷がＣＰＵコア２ｂにかかっている負荷よりも許容できる範囲を越えて大きくなったことを示した場合、キャッシュ結合モードに移行させ、かつ結合したキャッシュをＣＰＵコア２ａに使用させるように前記選択信号を切り替える。逆に、動作指定部１２１は、通常モードで動作中に負荷計測回路１３による計測結果がＣＰＵコア２ｂにかかっている負荷がＣＰＵコア２ａにかかっている負荷よりも許容できる範囲を越えて大きくなったことを示した場合、キャッシュ結合モードに移行させ、かつ結合したキャッシュをＣＰＵコア２ｂに使用させるように前記選択信号を切り替える。動作指定部１２１は、キャッシュ結合モードで動作中に負荷計測回路１３による計測結果がＣＰＵコア２ａ、ＣＰＵコア２ｂにかかっている負荷が均等になったことを示した場合、前記選択信号を通常モードで動作させるための選択信号に切り替える。また、動作指定部１２１は、キャッシュ結合モードでかつ結合したキャッシュをＣＰＵコア２ａに使用させて動作していた場合において負荷計測回路１３による計測結果がＣＰＵコア２ｂにかかっている負荷がＣＰＵコア２ａにかかっている負荷よりも許容できる範囲を越えて大きくなったことを示したとき、結合したキャッシュを使用させるＣＰＵコアがＣＰＵコア２ｂになるように選択信号を切り替える。
【００８６】
以上説明したように、第４の実施の形態によれば、負荷計測回路１３による計測結果に基づいてキャッシュ結合回路１２の動作モードおよび／またはキャッシュ３ａ、３ｂを使用させるＣＰＵコアの指定を切り替えるように構成したので、各ＣＰＵコアのパフォーマンスの不均等を解消できるようになる。
【００８７】
なお、以上の説明においては、第１の実施の形態、すなわち結合したキャッシュを複数ウェイセットアソシアティブ方式のキャッシュとして使用するキャッシュシステムに適用する場合について述べたが、本第４の実施の形態は、第２の実施の形態のように結合したキャッシュをダイレクトマップ方式のキャッシュとして使用するキャッシュシステムに適用することも可能である。また、第１および第２の実施の形態と同様に、第４の実施の形態では、結合するキャッシュの個数は２個に限定しない。
【００８８】
また、負荷計測回路１３はバスを介してＣＰＵコア２ａ、ＣＰＵコア２ｂに接続されているとして説明したが、負荷計測回路１３はＣＰＵコア２ａ、ＣＰＵコア２ｂに直接接続されるようにしてもよい。その場合、例えば負荷計測回路１３は、ＣＰＵコア毎に設けられた、インストラクションポインタの更新頻度やＡＬＵの計算頻度を見るウオッチドッグタイマーに接続され、所定の時間における前記インストラクションポインタの更新頻度やＡＬＵの計算頻度に基づいて負荷を計測するようにしてよい。
【符号の説明】
【００８９】
１、６、８、１１  キャッシュシステム、２ａ、２ｂ  ＣＰＵコア、３ａ、３ｂ  キャッシュ、５、７、９、１２  キャッシュ結合回路、５１、９１、１２１  動作指定部、５２  アドレス伝達部、５３  ヒット信号・データ伝達部、５４、  リフィル先指定部、７２  インデックス伝達部、７３  タグ伝達部、７４  ヒット信号・データ伝達部。
【図１】
2011022971.tif 000003
【図２】
2011022971.tif 000004
【図３】
2011022971.tif 000005
【図４】
2011022971.tif 000006
【図５】
2011022971.tif 000007
【図６】
2011022971.tif 000008
【図７】
2011022971.tif 000009
【図８】
2011022971.tif 000010
【図９】
2011022971.tif 000011
【図１０】
2011022971.tif 000012
【図１１】
2011022971.tif 000013
【図１２】
2011022971.tif 000014
【図１３】
2011022971.tif 000015
【図１４】
2011022971.tif 000016
【図１５】
2011022971.tif 000017
【図１６】
2011022971.tif 000018
【図１７】
2011022971.tif 000019
【図１８】
2011022971.tif 000020
【図１９】
2011022971.tif 000021