(57)【要約】【課題】キャッシュに故障が生じることによるシステムの異常実行を低減可能とし、歩留まりの向上、及びシステムに要求される性能の維持を可能とするキャッシュシステム及びマルチプロセッサシステムを提供すること。【解決手段】キャッシュデータが格納されるキャッシュデータ記憶手段であるデータ部１０と、前記キャッシュデータ記憶手段の故障を検出する故障検出手段である命令データチェックサム計算部１６、ラインデータチェックサム計算部１７及び比較部１８と、を有し、前記故障検出手段は、下層メモリシステム３からプリフェッチされた命令データと前記キャッシュデータ記憶手段から読み出されるキャッシュデータとが整合するか否かの判別により、キャッシュライン単位で故障を検出し、故障が検出されたキャッシュラインが無効化される。【選択図】図１
2011065565.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュデータが格納されるキャッシュデータ記憶手段と、
前記キャッシュデータ記憶手段の故障を検出する故障検出手段と、を有し、
前記故障検出手段は、下層メモリからプリフェッチされた命令データと前記キャッシュデータ記憶手段から読み出されるキャッシュデータとが整合するか否かの判別により、キャッシュライン単位で故障を検出し、
前記故障が検出されたキャッシュラインが無効化されることを特徴とするキャッシュシステム。
【請求項２】
前記キャッシュデータのキャッシュタグ情報が格納されるタグ部を有し、
前記タグ部は、前記故障が検出されたキャッシュラインのキャッシュタグ情報を更新し、無効化することを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
前記故障検出手段は、
前記命令データのチェックサムである命令データチェックサムを計算する命令データチェックサム計算手段と、
前記キャッシュデータのチェックサムであるラインデータチェックサムを計算するラインデータチェックサム計算手段と、
前記命令データチェックサム及び前記ラインデータチェックサムを比較する比較手段と、を備えることを特徴とする請求項１または２に記載のキャッシュシステム。
【請求項４】
前記比較手段は、リフィルの終了と同期して、前記命令データチェックサム及び前記ラインデータチェックサムの比較結果を出力することを特徴とする請求項３に記載のキャッシュシステム。
【請求項５】
請求項１から４のいずれか一項に記載のキャッシュシステムが装備された複数のプロセッサと、
前記故障検出手段により故障が検出される頻度に応じて、前記複数のプロセッサに対するタスクの振り分けを実行するタスク振り分け手段と、を有することを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュシステム及びマルチプロセッサシステムに関する。
【背景技術】
【０００２】
一つのチップで対称型マルチプロセッサＬＳＩを構成するマルチプロセッサシステムは、各マイクロプロセッサで同一の命令コードを同時実行する場合がある。各マイクロプロセッサの命令フェッチに伴うバス競合によるストールを回避するため、システムの多くは、各マイクロプロセッサに命令キャッシュが実装される。命令キャッシュは、一般に、キャッシュタグ部（以下、適宜「タグ部」と称する）と、一般的なＳＲＡＭを備える命令メモリ部（以下、適宜「メモリ部」と称する）とから構成されている（キャッシュメモリについては、例えば、特許文献１参照）。
【０００３】
メモリ部は、キャッシュヒットの際に命令実行部へ正しい命令データを供給可能とする正常動作を保証するために、ＬＳＩ検査において厳密にテストされる。一般に、メモリ部は、スペック上の最低電圧、最高周波数で記憶素子の故障が生じ易くなるとされている。良品判定は、このような厳しい条件化で行われ、複数のマイクロプロセッサのうちの一つでも故障が生じれば、たとえティピカルな電圧や駆動周波数では正常な動作が可能であったとしてもＬＳＩ全体が不良とみなされることとなる。このような扱いの回避とともにシステムの異常実行を防止するための手法として、例えば、各マイクロプロセッサのメモリ部に冗長記憶部を設けておき、不良部分から正常部分への切り替えをする技術がある。この場合、マイクロプロセッサごとに冗長性を持たせるために、マイクロプロセッサ数に比例して冗長面積が増大することとなる。これらのことから、一つのチップで対称型マルチプロセッサＬＳＩを構成するマルチプロセッサシステムは、単体のマイクロプロセッサチップを複数組み合わせた構成よりも歩留まりが悪くなること、製造コストが増加することが課題となる。
【０００４】
さらに、ＬＳＩのアプリケーションにより、メモリ部に不良のあるマイクロプロセッサを使用しないこととし、他の正常なマイクロプロセッサに処理を実行させることで、ＬＳＩが処理すべき要求性能を満たそうとする技術もある。この他、メモリ部に不良のあるマイクロプロセッサの分のスペックを低下させることとし、全体として歩留まりを維持する場合もある。いずれの場合も、マイクロプロセッサを一意に不使用とすることで、ＬＳＩとしての性能を大幅に低下させ、適用可能なアプリケーションが限定されるため売価の低下を招くという問題がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３４３８５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、キャッシュに故障が生じることによるシステムの異常実行を低減可能とし、歩留まりの向上、及びシステムに要求される性能の維持を可能とするキャッシュシステム及びマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願発明の一態様によれば、キャッシュデータが格納されるキャッシュデータ記憶手段と、前記キャッシュデータ記憶手段の故障を検出する故障検出手段と、を有し、前記故障検出手段は、下層メモリからプリフェッチされた命令データと前記キャッシュデータ記憶手段から読み出されるキャッシュデータとが整合するか否かの判別により、キャッシュライン単位で故障を検出し、前記故障が検出されたキャッシュラインが無効化されることを特徴とするキャッシュシステムが提供される。
【０００８】
また、本願発明の一態様によれば、上記のキャッシュシステムが装備された複数のプロセッサと、前記故障検出手段により故障が検出される頻度に応じて、前記複数のプロセッサに対するタスクの振り分けを実行するタスク振り分け手段と、を有することを特徴とするマルチプロセッサシステムが提供される。
【発明の効果】
【０００９】
本発明によれば、キャッシュに故障が生じることによるシステムの異常実行を低減可能とし、歩留まりの向上、及びシステムに要求される性能の維持が可能となる。
【００１０】
また、本発明によれば、所定の頻度で故障が検出されたプロセッサを停止可能とすることで、システム全体の性能への負荷を軽減させることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施の形態に係るキャッシュシステムを備えるマルチプロセッサシステムの構成を示すブロック図である。
【図２】図２は、タグ部のデータ構造とラインデータとの対応例を示す図である。
【図３】図３は、２ｍラインのキャッシュに対するタグ部の構成例を示す図である。
【図４】図４は、第２の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、本発明の実施の形態に係るキャッシュシステム及びマルチプロセッサシステムを詳細に説明する。
【００１３】
（第１の実施の形態）
図１は、本発明の第１の実施の形態に係るキャッシュシステム１を備えるマルチプロセッサシステムの構成を示すブロック図である。マルチプロセッサシステムは、キャッシュシステム１が装備された複数のプロセッサを備える。ここでは、マルチプロセッサシステムのうち本実施の形態の説明に必要な構成を図示している。命令実行部２は、マルチプロセッサシステムの動作を制御するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、外部メモリに格納されたプログラムを実行する。下層メモリシステム３は、キャッシュシステム１に対して下位の階層にあるメモリである。
【００１４】
キャッシュシステム１は、データ部１０、タグ部１１、ミス判定部１２、リフィル部１３、プリフェッチバッファ１４、選択器１５、命令データチェックサム計算部１６、ラインデータチェックサム計算部１７、及び比較部１８を備える。
【００１５】
データ部１０は、キャッシュライン単位でキャッシュデータが格納されるキャッシュデータ記憶手段として機能する。タグ部１１は、キャッシュデータのキャッシュタグ情報が格納される。ミス判定部１２は、キャッシュシステム１へキャッシュアクセスされた命令アドレスのタグと、タグ部１１から読み出されたタグ情報とを比較することにより、キャッシュアクセスのヒット及びミスを判定し、判定結果を表すミス検出信号を出力する。
【００１６】
リフィル部１３は、プリフェッチバッファ１４に対するプリフェッチ要求、及び、データ部１０に対するライン書き込み要求をする。プリフェッチバッファ１４は、下層メモリシステム３からプリフェッチされた命令データを格納する。選択器１５は、ヒットしたキャッシュラインデータを選択する。
【００１７】
命令データチェックサム計算部１６は、命令データチェックサムを計算する命令データチェックサム計算手段として機能する。命令データチェックサムは、プリフェッチされた命令データのチェックサムである。ラインデータチェックサム計算部１７は、ラインデータチェックサムを計算するラインデータチェックサム計算手段として機能する。ラインデータチェックサムは、データ部１０に格納されたキャッシュデータのチェックサムである。
【００１８】
比較部１８は、命令データチェックサム計算部１６で計算された命令データチェックサム、及びラインデータチェックサム計算部１７で計算されたラインデータチェックサムを比較する比較手段として機能する。命令データチェックサム計算部１６、ラインデータチェックサム計算部１７、及び比較部１８は、データ部１０の故障を検出する故障検出手段として機能する。本実施の形態において「故障」とは、データ部１０が備えるＳＲＡＭにおける特定ビットトグル故障、ＳＲＡＭにおける特定ライン読み出し故障など、キャッシュの部分的な故障を指すものとする。
【００１９】
命令実行部２は、実行すべき命令の命令アドレスをキャッシュシステム１へ伝達し、命令データを要求する。命令アドレスは、データ部１０、タグ部１１、ミス判定部１２及びプリフェッチバッファ１４へ入力される。タグ部１１は、データ部１０に予め格納されているキャッシュデータの有効性情報をタグ情報として、ミス判定部１２へ供給する。ミス判定部１２は、命令アドレスとタグ情報とから、キャッシュアクセスのヒット及びミスを判定する。
【００２０】
ミス判定部１２は、ヒットと判定した場合、ミス検出信号として例えば「０」を出力する。選択器１５は、ミス検出信号「０」を検出することにより、データ部１０から読み出されたキャッシュデータを選択し、命令データとして命令実行部２へ供給する。
【００２１】
ミス判定部１２は、ミスと判定した場合、ミス検出信号として例えば「１」を出力する。リフィル部１３は、ミス検出信号「１」を検出することにより、プリフェッチバッファ１４に対してプリフェッチ要求をする。プリフェッチバッファ１４は、プリフェッチ要求に対して、命令アドレスをプリフェッチアドレスとして、優先的に下層メモリシステム３へ伝達する。アクセスされたプリフェッチアドレスのデータは、命令データとして、下層メモリシステム３からキャッシュシステム１へ伝達される。
【００２２】
下層メモリシステム３からの命令データは、プリフェッチバッファ１４へ最優先して供給される。プリフェッチバッファ１４は、供給された命令データの値をライン書き込みデータ上に載せてデータ部１０及び選択器１５へ供給する。選択器１５は、ミス検出信号「１」を検出することにより、ライン書き込みデータに載せられた命令データを選択する。選択器１５で選択された命令データは、命令実行部２へ供給される。
【００２３】
プリフェッチバッファ１４は、下層メモリシステム３から供給される命令データを格納し、命令データの値を順次ライン書き込みデータ上に載せてデータ部１０及び選択器１５へ供給する。また、プリフェッチバッファ１４は、命令データを全て格納したところで、リフィル部１３へプリフェッチ完了を伝達する。リフィル部１３は、プリフェッチ完了の伝達により、データ部１０に対してライン書き込み要求をし、リフィル完了を通知する。データ部１０は、ライン書き込み要求に対して、命令実行部２からの命令アドレスに対応するラインアドレスへライン書き込みデータを格納していく。
【００２４】
命令データチェックサム計算部１６は、プリフェッチバッファ１４への命令データの格納と同期して、命令データを読み込む。命令データチェックサム計算部１６は、読み込んだ命令データに対して命令データチェックサムを計算し、出力する。
【００２５】
ラインデータチェックサム計算部１７は、データ部１０へ格納されたライン書き込みデータを読み込む。ラインデータチェックサム計算部１７は、読み込んだラインデータに対してラインデータチェックサムを計算し、出力する。
【００２６】
比較部１８は、命令データチェックサム計算部１６から出力される命令データチェックサムと、ラインデータチェックサム計算部１７から出力されるラインデータチェックサムとを比較し、比較結果に応じた一致信号を生成する。比較部１８は、命令データチェックサムとラインデータチェックサムとが一致する場合に真とする一致信号を生成し、一致しない場合に偽とする一致信号を生成する。一致信号は、リフィル完了と同期して、データ部１０に出力される。故障検出手段は、下層メモリシステム３からプリフェッチされた命令データと、データ部１０から読み出されるキャッシュデータとが整合するか否かを、チェックサムの比較によって判別する。
【００２７】
故障検出手段は、命令データチェックサムとラインデータチェックサムとの比較により命令データとキャッシュデータとが整合するか否かを判断する構成とすることで、１ビットずつデータを比較するよりも簡易かつ高速な故障検出が可能となる。
【００２８】
タグ部１１は、リフィル完了の伝達により、タグ情報を更新する。タグ部１１において更新されるタグ情報は、リフィル完了を検出し、かつ一致信号が真である場合にのみ、タグ情報が有効であるものとして更新される。リフィル完了を検出した場合であっても、一致信号が偽であれば、タグ部１１の有効フラグを強制的にＯＦＦにする。このようにして、キャッシュミスによるキャッシュタグ情報の更新の際、故障が検出されたキャッシュラインに対応するキャッシュタグ情報は無効化される。
【００２９】
マルチプロセッサシステムは、下層メモリシステム３からプリフェッチされた命令データと、データ部１０から読み出されるキャッシュデータとが整合する場合、そのまま命令を実行する。同じ命令アドレスへの次回以降のアクセスには、データ部１０から読み出されたキャッシュデータが使用される。
【００３０】
下層メモリシステム３からプリフェッチされた命令データと、データ部１０から読み出されるキャッシュデータとが整合しない場合、マルチプロセッサシステムは、キャッシュアクセスはヒットしなかったものとして、再度下層メモリシステム３から命令データを読み出す。このようにして、キャッシュに故障が生じることによるシステムの異常実行を低減させることが可能となる。また、データ部１０の一部に故障があったとしても機能的に正しく動作が可能であればシステムを一律不良とせずに扱うことが可能となるため、歩留まりを向上させるとともに、システムに要求される性能の維持が可能となる。
【００３１】
キャッシュシステム１は、リフィル完了に応じてタグ情報を有効とする従来の構成に故障検出手段からの一致信号を追加する構成であれば良いことから、タグ部１１に関しては従来採用される回路をそのまま利用することが可能である。一致信号に応じてヒットとミスとを書き換えるための構成は、比較的小規模な論理回路により実現できる。
【００３２】
本実施の形態に係るマルチプロセッサシステムは、ＬＳＩの製造試験時、電源投入時に行う検査の際において、厳しい条件下での良品判定を不要にできるとともに、データ部１０への直接的なデータの書き込み及び読み出しを簡略化できる。これにより、製造試験時、電源投入時の検査の簡略化、検査に要する時間の短縮が可能となる。また、電源投入時に行う検査の効率化により、システムの起動時間の短縮も可能となる。
【００３３】
なお、タグ部１１は、ライン故障フラグを設け、ライン故障フラグがＯＮである場合は強制的にキャッシュミスと扱うことで無効化しても良い。ライン故障フラグは、故障検出手段による検出結果に応じて適宜更新可能としても良い。また、ライン故障フラグは、一度ＯＮとされた場合は、電源投入時やプログラム動作時に動的にＯＮにしても良く、ＯＮのまま固定しても良い。さらに、ライン故障フラグがＯＮであるキャッシュラインに対するキャッシュアクセスがあった場合、故障検出手段の動作を停止させても良い。故障が認められたキャッシュラインへのアクセスに対しては不要な回路動作を停止可能とすることで、消費電力を抑制させることができる。
【００３４】
故障検出手段は、命令データチェックサムとラインデータチェックサムとの比較によって、命令データとキャッシュデータとが整合するか否かを判断する場合に限られない。故障検出手段は、命令データの値とキャッシュデータの値とが完全一致するか否かにより、命令データとキャッシュデータとが整合するか否かを判断することとしても良い。この場合、命令データとキャッシュデータとが整合するか否かの高精度な判断が可能となる。
【００３５】
図２は、タグ部１１のデータ構造とラインデータとの対応例を示す図である。本実施の形態において、タグ部１１は、データ部１０に記憶された命令データがどのアドレスから読み込まれたかを示すキャッシュラインタグ情報を、キャッシュラインデータと１対１で対応するように保持している。キャッシュラインタグ情報は、タグアドレス部及び有効フラグを備える。
【００３６】
ここで、アドレス情報を３２ビットとして、キャッシュ１ライン分として２ｎバイトの命令データを保持し、総計２ｍラインのダイレクトマップキャッシュの場合を例として説明する。タグ部１１の内部は、メモリで構成されているとする。図３は、２ｍラインのキャッシュに対するタグ部１１の構成例を示す図である。各キャッシュラインのタグ情報は、ラインアドレスをインデックスとする配列メモリとして実現できる。
【００３７】
図３に示す構成のタグ部１１に、命令実行部２から３２ビットの命令アドレスが供給されると、アドレス情報を（３２−ｍ−ｎ）ビット、ｍビット、ｎビットに分解する。中間のｍビットはラインアドレスとして抜き出され、その読み出し結果がタグ情報としてミス判定部１２へ供給される。
【００３８】
有効フラグがＯＦＦ、或いは、有効フラグがＯＮかつミス判定部１２のタグ情報がタグ部１１へ供給された命令アドレスとは異なる場合、ミス判定部１２は、そのアクセスをキャッシュミスとして扱う。タグ部１１は、このキャッシュミスによるリフィル動作が完了した時点で、タグ部１１に与えられている命令アドレスから、上述と同様にｍビットで示されるラインアドレスの示すキャッシュラインタグ情報の有効フラグをＯＮにする。以降、タグ部１１は、命令アドレスが供給されるたびに、これらの動作を繰り返す。
【００３９】
本実施の形態において、タグ部１１が保持するキャッシュタグ情報の有効フラグの一例としては、通常の有効ビットの他にライン故障を示すライン故障ビットを設けたものが挙げられる。マルチプロセッサシステムの製造段階やシステム起動時の試験動作等においてキャッシュラインの故障が判明した場合に、当初ＯＦＦであった当該ライン故障ビットをＯＮにする。ミス判定部１２は、有効フラグがＯＮ、かつライン故障ビットがＯＦＦである場合のみ、キャッシュを有効として動作するようにする。ミス判定部１２は、ライン故障ビットがＯＮの場合は、常にキャッシュミスと同様に動作し、正しい命令データを下層メモリシステム３から取得する。
【００４０】
ライン故障ビットを導入する代案の一例としては、有効フラグにラインロックビットを設けたものが挙げられる。ラインロックビットは、マイクロプロセッサにおいて、キャッシュに記憶されたヒットの状況を固定化するためのビットである。タグ情報に含まれるアドレス部と命令アドレスとが異なるキャッシュミスが発生しても、ラインロックビットがＯＮである場合は、タグ部１１のタグ情報、及びデータ部１０のキャッシュラインデータの更新を抑止する。
【００４１】
通常、マイクロプロセッサは、全メモリ領域のうちの一部のみを有効なキャッシュ領域とすることから、キャッシュが有効ではない非キャッシュ領域が存在するのが一般的である。有効フラグにラインロックビットを設ける例では、例えば、アドレス部に非キャッシュ領域を示すアドレスを強制的に登録し、当該ラインロックビットと有効フラグをＯＮに設定する。それ以降、当該キャッシュラインのキャッシュとしての動作は抑止され、結果として故障を回避することが可能となる。
【００４２】
次に、８ＫＢｙｔｅの２ウェイセットアソシアティブ命令キャッシュと、３３３ＭＨｚで駆動される８基の３２ｂｉｔプロセッサとを搭載するシステムＬＳＩを例として、性能に関する説明をする。かかるシステムＬＳＩにおいて、ＭＰ３フォーマットのオーディオデータ（４４．１ＫＨｚ）を５０フレーム、５６タスクで並列してデコードするものとする。このとき、命令キャッシュのＳＲＡＭに不良が無いシステムＬＳＩでは、全体で約５０％程度の負荷状況と評価されている。同一のシステムにて一時的に一つのプロセッサにおいて５０％のＳＲＡＭに故障が発生するとして、常に下層メモリから命令データを供給する状況であっても、全体としての性能低下は例えば０．０５％程度となる。このように、命令キャッシュの一部のＳＲＡＭに故障が発生したとしても、正しい命令実行を可能とすれば、ＬＳＩとしての要求性能は十分維持可能であって、良品として扱うことが可能となる。
【００４３】
（第２の実施の形態）
図４は、本発明の第２の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。本実施の形態に係るマルチプロセッサシステムは、故障検出手段により故障が検出される頻度に応じて、複数のプロセッサに対するタスクが振り分けられることを特徴とする。第１の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。ここでは、マルチプロセッサシステムのうち本実施の形態の説明に必要な構成を図示している。
【００４４】
キャッシュシステム２０は、比較部１８からの一致信号を反転させた不一致信号を、故障検出信号として故障検出カウンタ２１へ出力する。故障検出カウンタ２１は、プロセッサごとに設けられている。故障検出カウンタ２１は、故障が検出された回数をカウントする。故障検出カウンタ２１は、カウントを信号としてプロセッサ外部へ出力するものであっても良く、プロセッサ外部からのアクセスによりカウントが読み取り可能であるレジスタとして実装されたものであっても良い。
【００４５】
ソフトウェアカーネル２２は、マルチプロセッサシステムの各プロセッサに対してソフトウェア処理を振り分ける。ソフトウェアカーネル２２は、故障検出カウンタ２１によるカウント値をパラメータとする評価関数から、各プロセッサへ割り当てるタスク振り分け処理を実行するタスク振り分け手段として機能する。評価関数は、例えば所定の閾値とカウント値との比較等であって、ユーザにより適宜設定されるものとしても良い。ソフトウェアカーネル２２は、各プロセッサの下層メモリシステム３等へ、タスク実行を指令する。
【００４６】
本マルチプロセッサシステムは、故障検出カウンタ２１によるカウントの増加を監視し、カウントが増加しないようにソフトウェアカーネル２２がタスクを各プロセッサへ振り分ける。ＳＲＡＭの故障が発現し易いプロセッサを避けてタスクを振り分けることで、所定の頻度を超える故障によりシステムへの悪影響を及ぼす可能性のあるプロセッサを停止又は負荷を減らす。これにより、システム全体の性能への負荷を軽減させることが可能となる。また、急激な負荷変動に対する応答性を向上させ、バスアクセスに伴う消費電力を低減させることも可能となる。本マルチプロセッサシステムは、ソフトウェアの比較的簡単な追加により、性能低下及び消費電力低下の回避を実現することが可能である。
【００４７】
ソフトウェアカーネル２２は、故障検出カウンタ２１によるカウント値をパラメータとする評価関数からタスク振り分け処理を実行するものに限られない。ソフトウェアカーネル２２は、故障検出手段により故障が検出される頻度に応じてタスクの振り分けを実行するものであれば良く、例えば、故障が検出される率を算出してタスクの振り分けを実行することとしても良い。
【符号の説明】
【００４８】
１、２０  キャッシュシステム、３  下層メモリシステム、１０  データ部、１１  タグ部、１６  命令データチェックサム計算部、１７  ラインデータチェックサム計算部、１８  比較部、２１  故障検出カウンタ、２２  ソフトウェアカーネル。
【図１】
2011065565.tif 000003
【図２】
2011065565.tif 000004
【図３】
2011065565.tif 000005
【図４】
2011065565.tif 000006