説明

キャッシュシステム及びマルチプロセッサシステム

【課題】キャッシュに故障が生じることによるシステムの異常実行を低減可能とし、歩留まりの向上、及びシステムに要求される性能の維持を可能とするキャッシュシステム及びマルチプロセッサシステムを提供すること。
【解決手段】キャッシュデータが格納されるキャッシュデータ記憶手段であるデータ部10と、前記キャッシュデータ記憶手段の故障を検出する故障検出手段である命令データチェックサム計算部16、ラインデータチェックサム計算部17及び比較部18と、を有し、前記故障検出手段は、下層メモリシステム3からプリフェッチされた命令データと前記キャッシュデータ記憶手段から読み出されるキャッシュデータとが整合するか否かの判別により、キャッシュライン単位で故障を検出し、故障が検出されたキャッシュラインが無効化される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュシステム及びマルチプロセッサシステムに関する。
【背景技術】
【0002】
一つのチップで対称型マルチプロセッサLSIを構成するマルチプロセッサシステムは、各マイクロプロセッサで同一の命令コードを同時実行する場合がある。各マイクロプロセッサの命令フェッチに伴うバス競合によるストールを回避するため、システムの多くは、各マイクロプロセッサに命令キャッシュが実装される。命令キャッシュは、一般に、キャッシュタグ部(以下、適宜「タグ部」と称する)と、一般的なSRAMを備える命令メモリ部(以下、適宜「メモリ部」と称する)とから構成されている(キャッシュメモリについては、例えば、特許文献1参照)。
【0003】
メモリ部は、キャッシュヒットの際に命令実行部へ正しい命令データを供給可能とする正常動作を保証するために、LSI検査において厳密にテストされる。一般に、メモリ部は、スペック上の最低電圧、最高周波数で記憶素子の故障が生じ易くなるとされている。良品判定は、このような厳しい条件化で行われ、複数のマイクロプロセッサのうちの一つでも故障が生じれば、たとえティピカルな電圧や駆動周波数では正常な動作が可能であったとしてもLSI全体が不良とみなされることとなる。このような扱いの回避とともにシステムの異常実行を防止するための手法として、例えば、各マイクロプロセッサのメモリ部に冗長記憶部を設けておき、不良部分から正常部分への切り替えをする技術がある。この場合、マイクロプロセッサごとに冗長性を持たせるために、マイクロプロセッサ数に比例して冗長面積が増大することとなる。これらのことから、一つのチップで対称型マルチプロセッサLSIを構成するマルチプロセッサシステムは、単体のマイクロプロセッサチップを複数組み合わせた構成よりも歩留まりが悪くなること、製造コストが増加することが課題となる。
【0004】
さらに、LSIのアプリケーションにより、メモリ部に不良のあるマイクロプロセッサを使用しないこととし、他の正常なマイクロプロセッサに処理を実行させることで、LSIが処理すべき要求性能を満たそうとする技術もある。この他、メモリ部に不良のあるマイクロプロセッサの分のスペックを低下させることとし、全体として歩留まりを維持する場合もある。いずれの場合も、マイクロプロセッサを一意に不使用とすることで、LSIとしての性能を大幅に低下させ、適用可能なアプリケーションが限定されるため売価の低下を招くという問題がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−343851号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、キャッシュに故障が生じることによるシステムの異常実行を低減可能とし、歩留まりの向上、及びシステムに要求される性能の維持を可能とするキャッシュシステム及びマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本願発明の一態様によれば、キャッシュデータが格納されるキャッシュデータ記憶手段と、前記キャッシュデータ記憶手段の故障を検出する故障検出手段と、を有し、前記故障検出手段は、下層メモリからプリフェッチされた命令データと前記キャッシュデータ記憶手段から読み出されるキャッシュデータとが整合するか否かの判別により、キャッシュライン単位で故障を検出し、前記故障が検出されたキャッシュラインが無効化されることを特徴とするキャッシュシステムが提供される。
【0008】
また、本願発明の一態様によれば、上記のキャッシュシステムが装備された複数のプロセッサと、前記故障検出手段により故障が検出される頻度に応じて、前記複数のプロセッサに対するタスクの振り分けを実行するタスク振り分け手段と、を有することを特徴とするマルチプロセッサシステムが提供される。
【発明の効果】
【0009】
本発明によれば、キャッシュに故障が生じることによるシステムの異常実行を低減可能とし、歩留まりの向上、及びシステムに要求される性能の維持が可能となる。
【0010】
また、本発明によれば、所定の頻度で故障が検出されたプロセッサを停止可能とすることで、システム全体の性能への負荷を軽減させることができる。
【図面の簡単な説明】
【0011】
【図1】図1は、第1の実施の形態に係るキャッシュシステムを備えるマルチプロセッサシステムの構成を示すブロック図である。
【図2】図2は、タグ部のデータ構造とラインデータとの対応例を示す図である。
【図3】図3は、2ラインのキャッシュに対するタグ部の構成例を示す図である。
【図4】図4は、第2の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、本発明の実施の形態に係るキャッシュシステム及びマルチプロセッサシステムを詳細に説明する。
【0013】
(第1の実施の形態)
図1は、本発明の第1の実施の形態に係るキャッシュシステム1を備えるマルチプロセッサシステムの構成を示すブロック図である。マルチプロセッサシステムは、キャッシュシステム1が装備された複数のプロセッサを備える。ここでは、マルチプロセッサシステムのうち本実施の形態の説明に必要な構成を図示している。命令実行部2は、マルチプロセッサシステムの動作を制御するためのCPU(Central Processing Unit)であり、外部メモリに格納されたプログラムを実行する。下層メモリシステム3は、キャッシュシステム1に対して下位の階層にあるメモリである。
【0014】
キャッシュシステム1は、データ部10、タグ部11、ミス判定部12、リフィル部13、プリフェッチバッファ14、選択器15、命令データチェックサム計算部16、ラインデータチェックサム計算部17、及び比較部18を備える。
【0015】
データ部10は、キャッシュライン単位でキャッシュデータが格納されるキャッシュデータ記憶手段として機能する。タグ部11は、キャッシュデータのキャッシュタグ情報が格納される。ミス判定部12は、キャッシュシステム1へキャッシュアクセスされた命令アドレスのタグと、タグ部11から読み出されたタグ情報とを比較することにより、キャッシュアクセスのヒット及びミスを判定し、判定結果を表すミス検出信号を出力する。
【0016】
リフィル部13は、プリフェッチバッファ14に対するプリフェッチ要求、及び、データ部10に対するライン書き込み要求をする。プリフェッチバッファ14は、下層メモリシステム3からプリフェッチされた命令データを格納する。選択器15は、ヒットしたキャッシュラインデータを選択する。
【0017】
命令データチェックサム計算部16は、命令データチェックサムを計算する命令データチェックサム計算手段として機能する。命令データチェックサムは、プリフェッチされた命令データのチェックサムである。ラインデータチェックサム計算部17は、ラインデータチェックサムを計算するラインデータチェックサム計算手段として機能する。ラインデータチェックサムは、データ部10に格納されたキャッシュデータのチェックサムである。
【0018】
比較部18は、命令データチェックサム計算部16で計算された命令データチェックサム、及びラインデータチェックサム計算部17で計算されたラインデータチェックサムを比較する比較手段として機能する。命令データチェックサム計算部16、ラインデータチェックサム計算部17、及び比較部18は、データ部10の故障を検出する故障検出手段として機能する。本実施の形態において「故障」とは、データ部10が備えるSRAMにおける特定ビットトグル故障、SRAMにおける特定ライン読み出し故障など、キャッシュの部分的な故障を指すものとする。
【0019】
命令実行部2は、実行すべき命令の命令アドレスをキャッシュシステム1へ伝達し、命令データを要求する。命令アドレスは、データ部10、タグ部11、ミス判定部12及びプリフェッチバッファ14へ入力される。タグ部11は、データ部10に予め格納されているキャッシュデータの有効性情報をタグ情報として、ミス判定部12へ供給する。ミス判定部12は、命令アドレスとタグ情報とから、キャッシュアクセスのヒット及びミスを判定する。
【0020】
ミス判定部12は、ヒットと判定した場合、ミス検出信号として例えば「0」を出力する。選択器15は、ミス検出信号「0」を検出することにより、データ部10から読み出されたキャッシュデータを選択し、命令データとして命令実行部2へ供給する。
【0021】
ミス判定部12は、ミスと判定した場合、ミス検出信号として例えば「1」を出力する。リフィル部13は、ミス検出信号「1」を検出することにより、プリフェッチバッファ14に対してプリフェッチ要求をする。プリフェッチバッファ14は、プリフェッチ要求に対して、命令アドレスをプリフェッチアドレスとして、優先的に下層メモリシステム3へ伝達する。アクセスされたプリフェッチアドレスのデータは、命令データとして、下層メモリシステム3からキャッシュシステム1へ伝達される。
【0022】
下層メモリシステム3からの命令データは、プリフェッチバッファ14へ最優先して供給される。プリフェッチバッファ14は、供給された命令データの値をライン書き込みデータ上に載せてデータ部10及び選択器15へ供給する。選択器15は、ミス検出信号「1」を検出することにより、ライン書き込みデータに載せられた命令データを選択する。選択器15で選択された命令データは、命令実行部2へ供給される。
【0023】
プリフェッチバッファ14は、下層メモリシステム3から供給される命令データを格納し、命令データの値を順次ライン書き込みデータ上に載せてデータ部10及び選択器15へ供給する。また、プリフェッチバッファ14は、命令データを全て格納したところで、リフィル部13へプリフェッチ完了を伝達する。リフィル部13は、プリフェッチ完了の伝達により、データ部10に対してライン書き込み要求をし、リフィル完了を通知する。データ部10は、ライン書き込み要求に対して、命令実行部2からの命令アドレスに対応するラインアドレスへライン書き込みデータを格納していく。
【0024】
命令データチェックサム計算部16は、プリフェッチバッファ14への命令データの格納と同期して、命令データを読み込む。命令データチェックサム計算部16は、読み込んだ命令データに対して命令データチェックサムを計算し、出力する。
【0025】
ラインデータチェックサム計算部17は、データ部10へ格納されたライン書き込みデータを読み込む。ラインデータチェックサム計算部17は、読み込んだラインデータに対してラインデータチェックサムを計算し、出力する。
【0026】
比較部18は、命令データチェックサム計算部16から出力される命令データチェックサムと、ラインデータチェックサム計算部17から出力されるラインデータチェックサムとを比較し、比較結果に応じた一致信号を生成する。比較部18は、命令データチェックサムとラインデータチェックサムとが一致する場合に真とする一致信号を生成し、一致しない場合に偽とする一致信号を生成する。一致信号は、リフィル完了と同期して、データ部10に出力される。故障検出手段は、下層メモリシステム3からプリフェッチされた命令データと、データ部10から読み出されるキャッシュデータとが整合するか否かを、チェックサムの比較によって判別する。
【0027】
故障検出手段は、命令データチェックサムとラインデータチェックサムとの比較により命令データとキャッシュデータとが整合するか否かを判断する構成とすることで、1ビットずつデータを比較するよりも簡易かつ高速な故障検出が可能となる。
【0028】
タグ部11は、リフィル完了の伝達により、タグ情報を更新する。タグ部11において更新されるタグ情報は、リフィル完了を検出し、かつ一致信号が真である場合にのみ、タグ情報が有効であるものとして更新される。リフィル完了を検出した場合であっても、一致信号が偽であれば、タグ部11の有効フラグを強制的にOFFにする。このようにして、キャッシュミスによるキャッシュタグ情報の更新の際、故障が検出されたキャッシュラインに対応するキャッシュタグ情報は無効化される。
【0029】
マルチプロセッサシステムは、下層メモリシステム3からプリフェッチされた命令データと、データ部10から読み出されるキャッシュデータとが整合する場合、そのまま命令を実行する。同じ命令アドレスへの次回以降のアクセスには、データ部10から読み出されたキャッシュデータが使用される。
【0030】
下層メモリシステム3からプリフェッチされた命令データと、データ部10から読み出されるキャッシュデータとが整合しない場合、マルチプロセッサシステムは、キャッシュアクセスはヒットしなかったものとして、再度下層メモリシステム3から命令データを読み出す。このようにして、キャッシュに故障が生じることによるシステムの異常実行を低減させることが可能となる。また、データ部10の一部に故障があったとしても機能的に正しく動作が可能であればシステムを一律不良とせずに扱うことが可能となるため、歩留まりを向上させるとともに、システムに要求される性能の維持が可能となる。
【0031】
キャッシュシステム1は、リフィル完了に応じてタグ情報を有効とする従来の構成に故障検出手段からの一致信号を追加する構成であれば良いことから、タグ部11に関しては従来採用される回路をそのまま利用することが可能である。一致信号に応じてヒットとミスとを書き換えるための構成は、比較的小規模な論理回路により実現できる。
【0032】
本実施の形態に係るマルチプロセッサシステムは、LSIの製造試験時、電源投入時に行う検査の際において、厳しい条件下での良品判定を不要にできるとともに、データ部10への直接的なデータの書き込み及び読み出しを簡略化できる。これにより、製造試験時、電源投入時の検査の簡略化、検査に要する時間の短縮が可能となる。また、電源投入時に行う検査の効率化により、システムの起動時間の短縮も可能となる。
【0033】
なお、タグ部11は、ライン故障フラグを設け、ライン故障フラグがONである場合は強制的にキャッシュミスと扱うことで無効化しても良い。ライン故障フラグは、故障検出手段による検出結果に応じて適宜更新可能としても良い。また、ライン故障フラグは、一度ONとされた場合は、電源投入時やプログラム動作時に動的にONにしても良く、ONのまま固定しても良い。さらに、ライン故障フラグがONであるキャッシュラインに対するキャッシュアクセスがあった場合、故障検出手段の動作を停止させても良い。故障が認められたキャッシュラインへのアクセスに対しては不要な回路動作を停止可能とすることで、消費電力を抑制させることができる。
【0034】
故障検出手段は、命令データチェックサムとラインデータチェックサムとの比較によって、命令データとキャッシュデータとが整合するか否かを判断する場合に限られない。故障検出手段は、命令データの値とキャッシュデータの値とが完全一致するか否かにより、命令データとキャッシュデータとが整合するか否かを判断することとしても良い。この場合、命令データとキャッシュデータとが整合するか否かの高精度な判断が可能となる。
【0035】
図2は、タグ部11のデータ構造とラインデータとの対応例を示す図である。本実施の形態において、タグ部11は、データ部10に記憶された命令データがどのアドレスから読み込まれたかを示すキャッシュラインタグ情報を、キャッシュラインデータと1対1で対応するように保持している。キャッシュラインタグ情報は、タグアドレス部及び有効フラグを備える。
【0036】
ここで、アドレス情報を32ビットとして、キャッシュ1ライン分として2バイトの命令データを保持し、総計2ラインのダイレクトマップキャッシュの場合を例として説明する。タグ部11の内部は、メモリで構成されているとする。図3は、2ラインのキャッシュに対するタグ部11の構成例を示す図である。各キャッシュラインのタグ情報は、ラインアドレスをインデックスとする配列メモリとして実現できる。
【0037】
図3に示す構成のタグ部11に、命令実行部2から32ビットの命令アドレスが供給されると、アドレス情報を(32−m−n)ビット、mビット、nビットに分解する。中間のmビットはラインアドレスとして抜き出され、その読み出し結果がタグ情報としてミス判定部12へ供給される。
【0038】
有効フラグがOFF、或いは、有効フラグがONかつミス判定部12のタグ情報がタグ部11へ供給された命令アドレスとは異なる場合、ミス判定部12は、そのアクセスをキャッシュミスとして扱う。タグ部11は、このキャッシュミスによるリフィル動作が完了した時点で、タグ部11に与えられている命令アドレスから、上述と同様にmビットで示されるラインアドレスの示すキャッシュラインタグ情報の有効フラグをONにする。以降、タグ部11は、命令アドレスが供給されるたびに、これらの動作を繰り返す。
【0039】
本実施の形態において、タグ部11が保持するキャッシュタグ情報の有効フラグの一例としては、通常の有効ビットの他にライン故障を示すライン故障ビットを設けたものが挙げられる。マルチプロセッサシステムの製造段階やシステム起動時の試験動作等においてキャッシュラインの故障が判明した場合に、当初OFFであった当該ライン故障ビットをONにする。ミス判定部12は、有効フラグがON、かつライン故障ビットがOFFである場合のみ、キャッシュを有効として動作するようにする。ミス判定部12は、ライン故障ビットがONの場合は、常にキャッシュミスと同様に動作し、正しい命令データを下層メモリシステム3から取得する。
【0040】
ライン故障ビットを導入する代案の一例としては、有効フラグにラインロックビットを設けたものが挙げられる。ラインロックビットは、マイクロプロセッサにおいて、キャッシュに記憶されたヒットの状況を固定化するためのビットである。タグ情報に含まれるアドレス部と命令アドレスとが異なるキャッシュミスが発生しても、ラインロックビットがONである場合は、タグ部11のタグ情報、及びデータ部10のキャッシュラインデータの更新を抑止する。
【0041】
通常、マイクロプロセッサは、全メモリ領域のうちの一部のみを有効なキャッシュ領域とすることから、キャッシュが有効ではない非キャッシュ領域が存在するのが一般的である。有効フラグにラインロックビットを設ける例では、例えば、アドレス部に非キャッシュ領域を示すアドレスを強制的に登録し、当該ラインロックビットと有効フラグをONに設定する。それ以降、当該キャッシュラインのキャッシュとしての動作は抑止され、結果として故障を回避することが可能となる。
【0042】
次に、8KByteの2ウェイセットアソシアティブ命令キャッシュと、333MHzで駆動される8基の32bitプロセッサとを搭載するシステムLSIを例として、性能に関する説明をする。かかるシステムLSIにおいて、MP3フォーマットのオーディオデータ(44.1KHz)を50フレーム、56タスクで並列してデコードするものとする。このとき、命令キャッシュのSRAMに不良が無いシステムLSIでは、全体で約50%程度の負荷状況と評価されている。同一のシステムにて一時的に一つのプロセッサにおいて50%のSRAMに故障が発生するとして、常に下層メモリから命令データを供給する状況であっても、全体としての性能低下は例えば0.05%程度となる。このように、命令キャッシュの一部のSRAMに故障が発生したとしても、正しい命令実行を可能とすれば、LSIとしての要求性能は十分維持可能であって、良品として扱うことが可能となる。
【0043】
(第2の実施の形態)
図4は、本発明の第2の実施の形態に係るマルチプロセッサシステムの構成を示すブロック図である。本実施の形態に係るマルチプロセッサシステムは、故障検出手段により故障が検出される頻度に応じて、複数のプロセッサに対するタスクが振り分けられることを特徴とする。第1の実施の形態と同一の部分には同一の符号を付し、重複する説明を省略する。ここでは、マルチプロセッサシステムのうち本実施の形態の説明に必要な構成を図示している。
【0044】
キャッシュシステム20は、比較部18からの一致信号を反転させた不一致信号を、故障検出信号として故障検出カウンタ21へ出力する。故障検出カウンタ21は、プロセッサごとに設けられている。故障検出カウンタ21は、故障が検出された回数をカウントする。故障検出カウンタ21は、カウントを信号としてプロセッサ外部へ出力するものであっても良く、プロセッサ外部からのアクセスによりカウントが読み取り可能であるレジスタとして実装されたものであっても良い。
【0045】
ソフトウェアカーネル22は、マルチプロセッサシステムの各プロセッサに対してソフトウェア処理を振り分ける。ソフトウェアカーネル22は、故障検出カウンタ21によるカウント値をパラメータとする評価関数から、各プロセッサへ割り当てるタスク振り分け処理を実行するタスク振り分け手段として機能する。評価関数は、例えば所定の閾値とカウント値との比較等であって、ユーザにより適宜設定されるものとしても良い。ソフトウェアカーネル22は、各プロセッサの下層メモリシステム3等へ、タスク実行を指令する。
【0046】
本マルチプロセッサシステムは、故障検出カウンタ21によるカウントの増加を監視し、カウントが増加しないようにソフトウェアカーネル22がタスクを各プロセッサへ振り分ける。SRAMの故障が発現し易いプロセッサを避けてタスクを振り分けることで、所定の頻度を超える故障によりシステムへの悪影響を及ぼす可能性のあるプロセッサを停止又は負荷を減らす。これにより、システム全体の性能への負荷を軽減させることが可能となる。また、急激な負荷変動に対する応答性を向上させ、バスアクセスに伴う消費電力を低減させることも可能となる。本マルチプロセッサシステムは、ソフトウェアの比較的簡単な追加により、性能低下及び消費電力低下の回避を実現することが可能である。
【0047】
ソフトウェアカーネル22は、故障検出カウンタ21によるカウント値をパラメータとする評価関数からタスク振り分け処理を実行するものに限られない。ソフトウェアカーネル22は、故障検出手段により故障が検出される頻度に応じてタスクの振り分けを実行するものであれば良く、例えば、故障が検出される率を算出してタスクの振り分けを実行することとしても良い。
【符号の説明】
【0048】
1、20 キャッシュシステム、3 下層メモリシステム、10 データ部、11 タグ部、16 命令データチェックサム計算部、17 ラインデータチェックサム計算部、18 比較部、21 故障検出カウンタ、22 ソフトウェアカーネル。

【特許請求の範囲】
【請求項1】
キャッシュデータが格納されるキャッシュデータ記憶手段と、
前記キャッシュデータ記憶手段の故障を検出する故障検出手段と、を有し、
前記故障検出手段は、下層メモリからプリフェッチされた命令データと前記キャッシュデータ記憶手段から読み出されるキャッシュデータとが整合するか否かの判別により、キャッシュライン単位で故障を検出し、
前記故障が検出されたキャッシュラインが無効化されることを特徴とするキャッシュシステム。
【請求項2】
前記キャッシュデータのキャッシュタグ情報が格納されるタグ部を有し、
前記タグ部は、前記故障が検出されたキャッシュラインのキャッシュタグ情報を更新し、無効化することを特徴とする請求項1に記載のキャッシュシステム。
【請求項3】
前記故障検出手段は、
前記命令データのチェックサムである命令データチェックサムを計算する命令データチェックサム計算手段と、
前記キャッシュデータのチェックサムであるラインデータチェックサムを計算するラインデータチェックサム計算手段と、
前記命令データチェックサム及び前記ラインデータチェックサムを比較する比較手段と、を備えることを特徴とする請求項1または2に記載のキャッシュシステム。
【請求項4】
前記比較手段は、リフィルの終了と同期して、前記命令データチェックサム及び前記ラインデータチェックサムの比較結果を出力することを特徴とする請求項3に記載のキャッシュシステム。
【請求項5】
請求項1から4のいずれか一項に記載のキャッシュシステムが装備された複数のプロセッサと、
前記故障検出手段により故障が検出される頻度に応じて、前記複数のプロセッサに対するタスクの振り分けを実行するタスク振り分け手段と、を有することを特徴とするマルチプロセッサシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2011−65565(P2011−65565A)
【公開日】平成23年3月31日(2011.3.31)
【国際特許分類】
【出願番号】特願2009−217598(P2009−217598)
【出願日】平成21年9月18日(2009.9.18)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】