(57)【要約】  搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断すること。ビット生成部（１１０）は、タグＲＡＭ（２００ａ）のアドレスを示すアドレスビットの上位に状態ビットを付加したビット列を生成する。インクリメント部（１４０）は、ビット生成部（１１０）のビット列を１ずつインクリメントさせる。状態選択部（１５０）は、状態ビットを参照して複数の処理のいずれかを選択し、書込制御部（１６０）または読出制御部（１７０）へ状態に応じた動作を指示する。書込制御部（１６０）は、アドレスビットに対応するタグＲＡＭ（２００ａ）のラインに書込処理を行う。読出制御部（１７０）は、アドレスビットに対応するタグＲＡＭ（２００ａ）のラインから読み出し処理を行い、このラインの情報をエラー検出部（１８０）へ出力させる。エラー検出部（１８０）は、タグＲＡＭ（２００ａ）の各ラインのエラーチェックを行う。
2007097001.tif 000002
【特許請求の範囲】
【請求項１】
ＲＡＭに故障があるか否かを診断するＲＡＭ診断装置であって、
複数の処理の状態のいずれかを示す状態ビットを順次発生させる発生手段と、
前記発生手段によって発生した状態ビットを参照して処理を選択する選択手段と、
前記選択手段によって書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込み、次に前記選択手段によって書込処理が選択されると、ＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込む書込手段と、
前記書込手段による書込処理それぞれの後に前記選択手段によってエラーチェック処理が選択されると、前記第１データパターンまたは前記第２データパターンをＲＡＭの全領域から読み出してエラーを検出する検出手段と
を有することを特徴とするＲＡＭ診断装置。
【請求項２】
前記発生手段は、
状態ビットの下位にＲＡＭの開始アドレスを示すアドレスビットが付加されたビット列を生成する生成手段と、
前記生成手段によって生成されたビット列を１ずつインクリメントするインクリメント手段と
を含むことを特徴とする請求項１記載のＲＡＭ診断装置。
【請求項３】
前記インクリメント手段によって得られたビット列が所定のビット列と等しくなった場合に、状態ビットが示すすべての処理が完了したと判定する判定手段をさらに有することを特徴とする請求項２記載のＲＡＭ診断装置。
【請求項４】
前記選択手段は、
前記インクリメント手段によって得られたビット列のうち状態ビット部分から処理を選択し、
前記書込手段は、
前記インクリメント手段によって得られたビット列のうちアドレスビット部分が示すＲＡＭの領域に第１データパターンまたは第２データパターンを書き込むことを特徴とする請求項２記載のＲＡＭ診断装置。
【請求項５】
前記選択手段は、
前記インクリメント手段によって得られたビット列のうち状態ビット部分から処理を選択し、
前記検出手段は、
前記インクリメント手段によって得られたビット列のうちアドレスビット部分が示すＲＡＭの領域の第１データパターンまたは第２データパターンを読み出してエラーを検出することを特徴とする請求項２記載のＲＡＭ診断装置。
【請求項６】
前記発生手段は、
ＲＡＭの全領域に０のみからなる第１データパターンを書き込む０書込処理の状態を示す状態ビット、０書込処理後のエラーチェックを行う０エラーチェック処理の状態を示す状態ビット、ＲＡＭの全領域に１のみからなる第２データパターンを書き込む１書込処理の状態を示す状態ビット、および１書込処理後のエラーチェックを行う１エラーチェック処理の状態を示す状態ビットを順次発生させることを特徴とする請求項１記載のＲＡＭ診断装置。
【請求項７】
前記発生手段は、
前記１エラーチェック処理後にＲＡＭの全領域を無効化する初期化処理の状態を示す状態ビットをさらに発生させ、
前記書込手段は、
前記選択手段によって初期化処理が選択されると、ＲＡＭの全領域を無効化する
ことを特徴とする請求項６記載のＲＡＭ診断装置。
【請求項８】
前記発生手段は、
前記１書込処理、前記１エラーチェック処理、前記０書込処理、および前記０エラーチェック処理の順に状態ビットを発生させることを特徴とする請求項６記載のＲＡＭ診断装置。
【請求項９】
前記検出手段は、
ＲＡＭに登録されるパリティビットを用いて前記第１データパターンおよび前記第２データパターンのエラーを検出することを特徴とする請求項１記載のＲＡＭ診断装置。
【請求項１０】
前記選択手段は、
状態ビットが前記第１データパターンの書込処理を示しているときに１を出力する第１論理積回路と、
状態ビットが前記第２データパターンの書込処理を示しているときに１を出力する第２論理積回路と、
状態ビットが前記第１データパターンのエラーチェック処理を示しているときに１を出力する第３論理積回路と、
状態ビットが前記第２データパターンのエラーチェック処理を示しているときに１を出力する第４論理積回路と、
前記第１論理積回路および前記第２論理積回路のいずれか１つから１が出力された場合にＲＡＭへの書き込みを指示する信号を出力する第１論理和回路と、
前記第３論理積回路および前記第４論理積回路のいずれか１つから１が出力された場合にＲＡＭからの読み出しを指示する信号を出力する第２論理和回路と
を含むことを特徴とする請求項１記載のＲＡＭ診断装置。
【請求項１１】
ＲＡＭに故障があるか否かを診断するＲＡＭ診断方法であって、
複数の処理の状態のいずれかを示す状態ビットを順次発生させる発生工程と、
前記発生工程にて発生した状態ビットを参照して処理を選択する選択工程と、
前記選択工程にて書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込む第１書込工程と、
前記第１書込工程にて書き込まれた前記第１データパターンをＲＡＭの全領域から読み出してエラーを検出する第１検出工程と、
前記第１検出工程の後にＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込む第２書込工程と、
前記第２書込工程にて書き込まれた前記第２データパターンをＲＡＭの全領域から読み出してエラーを検出する第２検出工程と
を有することを特徴とするＲＡＭ診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＭに故障があるか否かを診断するＲＡＭ診断装置およびＲＡＭ診断方法に関し、特に、搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断することができるＲＡＭ診断装置およびＲＡＭ診断方法に関する。
【背景技術】
【０００２】
一般に、情報処理装置におけるプロセッサの電源投入時などにおいては、ＲＡＭの故障が診断されることがある。ＲＡＭの診断の際には、まず、プログラムの命令により、プロセッサによって所定の診断用データが診断対象のＲＡＭに書き込まれる。次いで、再度プログラムの命令により、ＲＡＭに書き込まれた診断用データが読み出され、ハードウェアのエラーチェック回路により、読み出された診断用データに誤りがあるか否かが判定され、ＲＡＭの故障の有無が判定される。すなわち、ＲＡＭから読み出された診断用データが誤っていれば、このＲＡＭは故障していると判定される。そして、診断用データの書き込みおよび読み出しの手順をＲＡＭのすべてのラインに対して行うことにより、ＲＡＭの故障の有無を確認することができる。【０００３】
このようなＲＡＭの故障の診断に用いられる診断用データがＲＯＭに記憶されている場合、ＲＡＭ診断時には、プロセッサが一度ＲＯＭから診断用データを読み出した後、診断対象のＲＡＭに書き込むことになる。しかし、診断対象のＲＡＭのサイズが大きくなれば、これに伴って診断用データのサイズも大きくなるため、プロセッサによってＲＯＭから診断用データが読み出され、ＲＡＭに書き込まれるまでの時間が長くなる。そこで、例えば特許文献１においては、ＲＯＭからプロセッサを経由せずに、直接ＲＡＭへ診断用データを書き込む技術が開示されている。これにより、ＲＡＭの故障診断に要する時間を短縮することができる。【０００４】
【特許文献１】特開平５−６１７８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ＲＡＭには、例えばデータＲＡＭ、タグＲＡＭ（ＴＡＧ−ＲＡＭ）、およびＴＬＢ（Translation  Look-aside  Buffer）−ＲＡＭなどのように、メインメモリのデータを一時的に記憶するプロセッサ内のキャッシュにおいて用いられるものがある。キャッシュ内のタグＲＡＭやＴＬＢ−ＲＡＭには、データのメインメモリにおけるアドレスを示す物理アドレスが登録されている。具体的には、タグＲＡＭには、キャッシュされたデータのメインメモリ上の物理アドレスが登録されており、ＴＬＢ−ＲＡＭには、プログラムによって用いられる仮想アドレスと物理アドレスとの対応関係が登録されている。【０００６】
これらのキャッシュ内のＲＡＭの故障診断は、メインメモリからの診断用データがデータＲＡＭに書き込まれてキャッシュされた後、キャッシュされた診断用データが読み出され、読み出された診断用データに誤りがあるか否か判定されるとともに、この診断用データのキャッシュに伴ってタグＲＡＭおよびＴＬＢ−ＲＡＭに登録された内容が読み出され、読み出された登録内容が診断用データに対応しているか否か判定されることにより行われる。【０００７】
ここで、タグＲＡＭおよびＴＬＢ−ＲＡＭに登録される物理アドレスのビット数は、キャッシュに接続されるメインメモリのすべてのアドレスを表現可能であれば良いため、メインメモリのサイズに依存している。したがって、情報処理装置に搭載可能な最大サイズよりも小さいメインメモリが搭載されている場合には、タグＲＡＭおよびＴＬＢ−ＲＡＭが登録可能な物理アドレスよりも常にビット数が少ない物理アドレスのみが登録されることになり、物理アドレスの上位ビットが常に０となることがある。【０００８】
具体的に例を挙げると、情報処理装置が例えば４ＧＢ（ギガバイト）のメインメモリを搭載可能な場合、このメインメモリのメモリ空間は３２ビットで表現可能であるため、タグＲＡＭおよびＴＬＢ−ＲＡＭには３２ビットまでの物理アドレスを登録することが可能である。しかし、この情報処理装置に例えば２５６ＭＢ（メガバイト）のメインメモリが搭載された場合、このメインメモリのメモリ空間は２８ビットで表現可能であるため、タグＲＡＭおよびＴＬＢ−ＲＡＭに登録される物理アドレスの上位４ビットは常に０となる。【０００９】
このような状況下で、上述した手順によるタグＲＡＭおよびＴＬＢ−ＲＡＭの故障診断を行う場合、いかなる診断用データがメインメモリからキャッシュされても、その診断用データに関する物理アドレスの上位ビットは常に０であるため、タグＲＡＭおよびＴＬＢ−ＲＡＭに登録される物理アドレスの上位ビットについては、故障診断が不可能であるという問題がある。すなわち、上記の例では、診断用データの物理アドレスは、２８ビットで表現可能であるため、タグＲＡＭおよびＴＬＢ−ＲＡＭに登録される物理アドレスの上位４ビットの故障診断が不可能である。【００１０】
また、キャッシュ内のＲＡＭに診断用データを書き込む際には、プログラムの命令により、メインメモリから診断用データが書き込まれることになるため、メインメモリにアクセスする時間がかかるという問題がある。さらに、故障診断のプログラムは、キャッシュの構成や状態を考慮して作成する必要があり、非常に煩雑なものになる傾向がある。【００１１】
本発明はかかる点に鑑みてなされたものであり、搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断することができるＲＡＭ診断装置およびＲＡＭ診断方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明は、ＲＡＭに故障があるか否かを診断するＲＡＭ診断装置であって、複数の処理の状態のいずれかを示す状態ビットを順次発生させる発生手段と、前記発生手段によって発生した状態ビットを参照して処理を選択する選択手段と、前記選択手段によって書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込み、次に前記選択手段によって書込処理が選択されると、ＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込む書込手段と、前記書込手段による書込処理それぞれの後に前記選択手段によってエラーチェック処理が選択されると、前記第１データパターンまたは前記第２データパターンをＲＡＭの全領域から読み出してエラーを検出する検出手段とを有することを特徴とする。【００１３】
また、本発明は、上記発明において、前記発生手段は、状態ビットの下位にＲＡＭの開始アドレスを示すアドレスビットが付加されたビット列を生成する生成手段と、前記生成手段によって生成されたビット列を１ずつインクリメントするインクリメント手段とを含むことを特徴とする。【００１４】
また、本発明は、上記発明において、前記インクリメント手段によって得られたビット列が所定のビット列と等しくなった場合に、状態ビットが示すすべての処理が完了したと判定する判定手段をさらに有することを特徴とする。【００１５】
また、本発明は、上記発明において、前記選択手段は、前記インクリメント手段によって得られたビット列のうち状態ビット部分から処理を選択し、前記書込手段は、前記インクリメント手段によって得られたビット列のうちアドレスビット部分が示すＲＡＭの領域に第１データパターンまたは第２データパターンを書き込むことを特徴とする。【００１６】
また、本発明は、上記発明において、前記選択手段は、前記インクリメント手段によって得られたビット列のうち状態ビット部分から処理を選択し、前記検出手段は、前記インクリメント手段によって得られたビット列のうちアドレスビット部分が示すＲＡＭの領域の第１データパターンまたは第２データパターンを読み出してエラーを検出することを特徴とする。【００１７】
また、本発明は、上記発明において、前記発生手段は、ＲＡＭの全領域に０のみからなる第１データパターンを書き込む０書込処理の状態を示す状態ビット、０書込処理後のエラーチェックを行う０エラーチェック処理の状態を示す状態ビット、ＲＡＭの全領域に１のみからなる第２データパターンを書き込む１書込処理の状態を示す状態ビット、および１書込処理後のエラーチェックを行う１エラーチェック処理の状態を示す状態ビットを順次発生させることを特徴とする。【００１８】
また、本発明は、上記発明において、前記発生手段は、前記１エラーチェック処理後にＲＡＭの全領域を無効化する初期化処理の状態を示す状態ビットをさらに発生させ、前記書込手段は、前記選択手段によって初期化処理が選択されると、ＲＡＭの全領域を無効化することを特徴とする。【００１９】
また、本発明は、上記発明において、前記発生手段は、前記１書込処理、前記１エラーチェック処理、前記０書込処理、および前記０エラーチェック処理の順に状態ビットを発生させることを特徴とする。【００２０】
また、本発明は、上記発明において、前記検出手段は、ＲＡＭに登録されるパリティビットを用いて前記第１データパターンおよび前記第２データパターンのエラーを検出することを特徴とする。【００２１】
また、本発明は、上記発明において、前記選択手段は、状態ビットが前記第１データパターンの書込処理を示しているときに１を出力する第１論理積回路と、状態ビットが前記第２データパターンの書込処理を示しているときに１を出力する第２論理積回路と、状態ビットが前記第１データパターンのエラーチェック処理を示しているときに１を出力する第３論理積回路と、状態ビットが前記第２データパターンのエラーチェック処理を示しているときに１を出力する第４論理積回路と、前記第１論理積回路および前記第２論理積回路のいずれか１つから１が出力された場合にＲＡＭへの書き込みを指示する信号を出力する第１論理和回路と、前記第３論理積回路および前記第４論理積回路のいずれか１つから１が出力された場合にＲＡＭからの読み出しを指示する信号を出力する第２論理和回路とを含むことを特徴とする。【００２２】
また、本発明は、ＲＡＭに故障があるか否かを診断するＲＡＭ診断方法であって、複数の処理の状態のいずれかを示す状態ビットを順次発生させる発生工程と、前記発生工程にて発生した状態ビットを参照して処理を選択する選択工程と、前記選択工程にて書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込む第１書込工程と、前記第１書込工程にて書き込まれた前記第１データパターンをＲＡＭの全領域から読み出してエラーを検出する第１検出工程と、前記第１検出工程の後にＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込む第２書込工程と、前記第２書込工程にて書き込まれた前記第２データパターンをＲＡＭの全領域から読み出してエラーを検出する第２検出工程とを有することを特徴とする。
【発明の効果】
【００２３】
本発明によれば、複数の処理の状態のいずれかを示す状態ビットを順次発生させ、発生した状態ビットを参照して処理を選択し、書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込み、次に書込処理が選択されると、ＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込み、書込処理それぞれの後にエラーチェック処理が選択されると、第１データパターンまたは第２データパターンをＲＡＭの全領域から読み出してエラーを検出する。このため、メインメモリからデータを読み出したり複雑なプログラムを使用したりすることなく、ハードウェア主導でＲＡＭの全領域のビットを０および１とした上でエラーチェックすることができ、搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断することができる。【００２４】
また、本発明によれば、状態ビットの下位にＲＡＭの開始アドレスを示すアドレスビットが付加されたビット列を生成し、生成されたビット列を１ずつインクリメントするため、インクリメントされるごとにビット列を状態ビット部分とアドレスビット部分に分ければ、１種類の状態ビットについてＲＡＭの全領域のアドレスに対応するアドレスビットが得られることになり、処理の指定と処理対象となるＲＡＭの領域の指定とを容易に行うことができる。【００２５】
また、本発明によれば、得られたビット列が所定のビット列と等しくなった場合に、状態ビットが示すすべての処理が完了したと判定するため、処理の指定および処理対象となるＲＡＭの領域の指定に用いられるビット列を、そのまま完了判定にも用いることができる。【００２６】
また、本発明によれば、得られたビット列のうち状態ビット部分から処理を選択し、得られたビット列のうちアドレスビット部分が示すＲＡＭの領域に第１データパターンまたは第２データパターンを書き込む。このため、状態ビットが書込処理を示している間に、確実にＲＡＭの開始アドレスから最終アドレスまでの全領域に第１データパターンまたは第２データパターンを書き込むことができる。【００２７】
また、本発明によれば、得られたビット列のうち状態ビット部分から処理を選択し、得られたビット列のうちアドレスビット部分が示すＲＡＭの領域の第１データパターンまたは第２データパターンを読み出してエラーを検出する。このため、状態ビットがエラーチェック処理を示している間に、確実にＲＡＭの開始アドレスから最終アドレスまでの全領域の第１データパターンまたは第２データパターンのエラーチェックを行うことができる。【００２８】
また、本発明によれば、ＲＡＭの全領域に０のみからなる第１データパターンを書き込む０書込処理の状態を示す状態ビット、０書込処理後のエラーチェックを行う０エラーチェック処理の状態を示す状態ビット、ＲＡＭの全領域に１のみからなる第２データパターンを書き込む１書込処理の状態を示す状態ビット、および１書込処理後のエラーチェックを行う１エラーチェック処理の状態を示す状態ビットを順次発生させる。このため、ＲＡＭの全領域における０の書き込みおよび読み出しが正常であるか診断するとともに、ＲＡＭの全領域における１の書き込みおよび読み出しが正常であるか診断することができる。【００２９】
また、本発明によれば、１エラーチェック処理後にＲＡＭの全領域を無効化する初期化処理の状態を示す状態ビットをさらに発生させ、初期化処理が選択されると、ＲＡＭの全領域を無効化する。このため、ＲＡＭの全領域の診断の後、ＲＡＭを初期化することができ、キャッシュ内に備えられるＲＡＭなどの起動時における初期化と同時に診断することができる。【００３０】
また、本発明によれば、１書込処理、１エラーチェック処理、０書込処理、および０エラーチェック処理の順に状態ビットを発生させるため、エラーが検出されなければ、最終的にＲＡＭの全領域に０が書き込まれた状態となり、ＲＡＭの初期化を省略することができる。【００３１】
また、本発明によれば、ＲＡＭに登録されるパリティビットを用いて第１データパターンおよび第２データパターンのエラーを検出するため、正確なエラーチェックを行うことができる。【００３２】
また、本発明によれば、状態ビットが第１データパターンの書込処理を示しているときに１を出力する第１論理積回路と、状態ビットが第２データパターンの書込処理を示しているときに１を出力する第２論理積回路と、状態ビットが第１データパターンのエラーチェック処理を示しているときに１を出力する第３論理積回路と、状態ビットが第２データパターンのエラーチェック処理を示しているときに１を出力する第４論理積回路と、第１論理積回路および第２論理積回路のいずれか１つから１が出力された場合にＲＡＭへの書き込みを指示する信号を出力する第１論理和回路と、第３論理積回路および第４論理積回路のいずれか１つから１が出力された場合にＲＡＭからの読み出しを指示する信号を出力する第２論理和回路とを含む。このため、簡易な論理演算回路のみで状態ビットから処理を選択することができ、より高速にＲＡＭの正確な診断を行うことができる。
【図面の簡単な説明】
【００３３】
【図１】図１は、本発明の一実施の形態に係る情報処理装置の要部構成を示すブロック図である。
【図２】図２は、タグＲＡＭに登録される情報の一例を示す図である。
【図３】図３は、一実施の形態に係るＲＡＭ診断装置の内部構成を示すブロック図である。
【図４】図４は、一実施の形態に係るＲＡＭ診断動作を示すフロー図である。
【図５】図５は、一実施の形態に係る０書込処理を示すフロー図である。
【図６】図６は、一実施の形態に係る０エラーチェック処理を示すフロー図である。
【図７】図７は、一実施の形態に係る１書込処理を示すフロー図である。
【図８】図８は、一実施の形態に係る１エラーチェック処理を示すフロー図である。
【図９】図９は、一実施の形態に係る初期化処理を示すフロー図である。
【符号の説明】
【００３４】
１１０  ビット生成部
１２０  状態ビット出力部
１３０  アドレスビット出力部
１４０  インクリメント部
１５０  状態選択部
１５１  インバータ
１５２、１５３、１５４、１５５、１５６  ＡＮＤゲート
１５７、１５８  ＯＲゲート
１６０  書込制御部
１７０  読出制御部
１８０  エラー検出部
１９０  完了判定部
【発明を実施するための最良の形態】
【００３５】
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下の説明においては、キャッシュ内のタグＲＡＭ（ＴＡＧ−ＲＡＭ）を診断することとするが、本発明は、例えばデータＲＡＭやＴＬＢ−ＲＡＭなど他のＲＡＭの診断にも適用することができる。【００３６】
図１は、本発明の一実施の形態に係るＲＡＭ診断装置を備えた情報処理装置の要部構成を示すブロック図である。図１に示す情報処理装置は、ＣＰＵ内にキャッシュ２００を備えており、このキャッシュ内にはタグＲＡＭ２００ａ、ＴＬＢ−ＲＡＭ２００ｂ、およびデータＲＡＭ２００ｃを有している。そして、タグＲＡＭ２００ａには、ＲＡＭ診断装置１００が接続されており、ＲＡＭ診断装置１００には、ＣＰＵとは別のサービスプロセッサ（SerVice  Processor：以下「ＳＶＰ」と略記する）３００が接続されている。【００３７】
キャッシュ２００は、メインメモリ４００に記憶されているデータを一時的に記憶（キャッシュ）し、このデータがＣＰＵで使用される際に、処理の高速化を図る。このとき、データ自体はデータＲＡＭ２００ｃに記憶され、このデータのメインメモリ４００における物理アドレスがタグＲＡＭ２００ａに記憶される。【００３８】
具体的には、タグＲＡＭ２００ａには、例えば図２に示すような情報が各ラインに登録されている。すなわち、データの有効／無効を示すバリッドビット（Valid  bit）、バリッドビットのエラーチェック用のパリティビット（Valid  bit  parity）、データのタイプを示すタイプビット（Type  bit）、タイプビットのエラーチェック用のパリティビット（Type  bit  parity）、データの物理アドレスを示す物理アドレスビット（Physical  address  bits）、および物理アドレスビットのエラーチェック用のパリティビット（Physical  address  parity）がタグＲＡＭ２００ａのそれぞれのラインに登録されている。ＣＰＵが所望のデータを読み出して処理を行う場合、タグＲＡＭ２００ａにアクセスして所望のデータの物理アドレスを検索し、所望のデータがデータＲＡＭ２００ｃにキャッシュされているか否かを把握することができる。また、プログラムで使用される仮想アドレスと物理アドレスとの対応関係がＴＬＢ−ＲＡＭ２００ｂに記憶される。【００３９】
ＲＡＭ診断装置１００は、キャッシュ２００内のタグＲＡＭ２００ａに故障があるか否かを診断する。すなわち、ＲＡＭ診断装置１００は、タグＲＡＭ２００ａの物理アドレスを記憶する全ビットに０および１を順次書き込み、各々の書込処理後にエラーチェックを行って、全ビットの故障の有無を診断する。ＲＡＭ診断装置１００の詳細な構成については、後に詳述する。【００４０】
ＳＶＰ３００は、ＣＰＵとは独立して設けられたプロセッサであり、ＣＰＵの故障診断などを管理している。また、ＳＶＰ３００は、情報処理装置の起動時などに、ＲＡＭ診断装置１００へキャッシュ２００の初期化の開始を指示する。この初期化の際、ＳＶＰ３００は、ＲＡＭの診断を行うか否かを判定し、ＲＡＭの診断を行う場合は、初期化と同時にＲＡＭ診断を行うようにＲＡＭ診断装置１００へ指示する。【００４１】
図３は、本実施の形態に係るＲＡＭ診断装置１００の内部構成を示すブロック図である。図３に示すＲＡＭ診断装置１００は、ビット生成部１１０、状態ビット出力部１２０、アドレスビット出力部１３０、インクリメント部１４０、状態選択部１５０、書込制御部１６０、読出制御部１７０、エラー検出部１８０、および完了判定部１９０を有している。【００４２】
ビット生成部１１０は、タグＲＡＭ２００ａの全ラインを表現可能なビット数のアドレスビットの上位に、診断や初期化などの状態を示す状態ビットを付加したビット数のビット列を生成する。具体的には、ビット生成部１１０は、ＳＶＰ３００からタグＲＡＭ２００ａの初期化または診断が指示された場合、すべてのビットが０からなるアドレスビットの上位に３ビットの状態ビットを付加したビット列を生成する。また、ビット生成部１１０は、インクリメント部１４０からの指示に従い、ビット列を１ずつインクリメントする。【００４３】
ここで、状態ビットとは、ＲＡＭ診断装置１００が実行する処理を５つの状態に分類し、それぞれの状態に対応する３ビットのビット列である。具体的には、タグＲＡＭ２００ａの各ラインに０を書き込む処理（０書込処理）を「０１１」で表し、タグＲＡＭ２００ａに０が書き込まれた後のエラーチェック処理（０エラーチェック処理）を「１００」で表し、タグＲＡＭ２００ａの各ラインに１を書き込む処理（１書込処理）を「１０１」で表し、タグＲＡＭ２００ａに１が書き込まれた後のエラーチェック処理（１エラーチェック処理）を「１１０」で表し、タグＲＡＭ２００ａの初期化処理を「１１１」で表す。なお、本実施の形態においては、ＲＡＭ診断装置１００が実行する処理が５つの状態に分類されるため、状態ビットは３ビットとなるが、例えば４つの状態で処理を分類できる場合は、状態ビットは２ビットで良い。【００４４】
状態ビットが上記のように定義されるため、ＳＶＰ３００からタグＲＡＭ２００ａの初期化が指示された場合は、ビット生成部１１０は、状態ビット「１１１」に続けてすべてのビットが０からなるアドレスビットが付加されたビット列を生成する。また、ＳＶＰ３００からタグＲＡＭ２００ａの診断が指示された場合は、ビット生成部１１０は、状態ビット「０１１」に続けてすべてのビットが０からなるアドレスビットが付加されたビット列を生成する。【００４５】
状態ビット出力部１２０は、ビット生成部１１０によってビット列が生成されるたびに、このビット列の上位３ビットからなる状態ビットを状態選択部１５０へ出力する。アドレスビット出力部１３０は、ビット生成部１１０によってビット列が生成されるたびに、このビット列の上位３ビットを除いたアドレスビットを書込制御部１６０および読出制御部１７０へ出力する。インクリメント部１４０は、所定の周期でビット生成部１１０にビット列を１インクリメントするよう指示する。【００４６】
状態選択部１５０は、状態ビット出力部１２０から出力される状態ビットを参照して、０書込処理、０エラーチェック処理、１書込処理、１エラーチェック処理、および初期化処理のどの状態にあるかを選択し、書込制御部１６０または読出制御部１７０へそれぞれの状態に応じた動作を指示する。具体的には、状態選択部１５０は、インバータ１５１、ＡＮＤゲート１５２〜１５６、およびＯＲゲート１５７、１５８を有している。【００４７】
インバータ１５１は、状態ビット出力部１２０から出力される３ビットを反転する。すなわち、インバータ１５１は、状態ビットを構成する０を１に変換し、１を０に変換する。【００４８】
ＡＮＤゲート１５２〜１５６は、それぞれ０書込処理、１書込処理、初期化処理、０エラーチェック処理、および１エラーチェック処理に対応しており、状態ビット出力部１２０から出力される状態ビットが示す状態に対応するＡＮＤゲート１５２〜１５６から１が出力される。なお、図３中、ＡＮＤゲート１５２〜１５６の入力側に示される１〜３の数字は、状態ビットの最上位ビット、２番目のビット、および３番目のビットをそれぞれ示している。したがって、例えば状態ビット出力部１２０から０書込処理を示す状態ビット「０１１」が出力されると、ＡＮＤゲート１５２には、状態ビットの最上位ビットのみがインバータ１５１によって反転された「１１１」が入力されることになる。このとき他のＡＮＤゲート１５３〜１５６には、「１１１」が入力されることはない。このため、ＡＮＤゲート１５２のみから１が出力され、現在の状態が０書込処理であるとわかる。【００４９】
他の状態のときも同様で、１書込処理を示す状態ビット「１０１」の場合はＡＮＤゲート１５３のみから１が出力され、初期化処理を示す状態ビット「１１１」の場合はＡＮＤゲート１５４のみから１が出力され、０エラーチェック処理を示す状態ビット「１００」の場合はＡＮＤゲート１５５のみから１が出力され、１エラーチェック処理を示す状態ビット「１１０」の場合はＡＮＤゲート１５６のみから１が出力される。【００５０】
ＯＲゲート１５７は、０書込処理に対応するＡＮＤゲート１５２、１書込処理に対応するＡＮＤゲート１５３、および初期化処理に対応するＡＮＤゲート１５４のいずれかから１が出力された場合に、書込制御部１６０にタグＲＡＭ２００ａへの書き込みを指示する。【００５１】
ＯＲゲート１５８は、０エラーチェック処理に対応するＡＮＤゲート１５５および１エラーチェック処理に対応するＡＮＤゲート１５６のいずれかから１が出力された場合に、読出制御部１７０にタグＲＡＭ２００ａからの読み出しを指示する。【００５２】
書込制御部１６０は、ＯＲゲート１５７からタグＲＡＭ２００ａへの書き込みが指示されると、アドレスビット出力部１３０から出力されたアドレスビットに対応するタグＲＡＭ２００ａのラインに書込処理を行う。このとき、書込制御部１６０は、ＡＮＤゲート１５３から１が出力されれば１を書き込み、ＡＮＤゲート１５３から０が出力されれば０を書き込む。【００５３】
より具体的には、０書込処理時および初期化処理時は、書込制御部１６０は、図２に示したバリッドビット、タイプビット、および物理アドレスビットのすべてのビットに０を書き込むとともに、すべてのパリティビットにはエラーチェックされる各ビットにエラーを発生させない値（ここでは１）を書き込む。また、１書込処理時は、書込制御部１６０は、バリッドビット、タイプビット、および物理アドレスビットのすべてのビットに１を書き込むとともに、すべてのパリティビットにはエラーチェックされる各ビットにエラーを発生させない値（ここでは０）を書き込む。【００５４】
なお、ここでは０書込処理と初期化処理を区別せず、すべてのビットに０を書き込むものとしたが、ＡＮＤゲート１５４から書込制御部１６０へ１が出力された場合（すなわち、初期化処理が行われる場合）は、バリッドビットのみに０を書き込むとともに、バリッドビットのパリティビットに１を書き込み、ラインを無効化する処理のみを行うようにしても良い。【００５５】
読出制御部１７０は、ＯＲゲート１５８からタグＲＡＭ２００ａからの読み出しが指示されると、アドレスビット出力部１３０から出力されたアドレスビットに対応するタグＲＡＭ２００ａのラインから読み出し処理を行い、このラインの情報をエラー検出部１８０へ出力させる。すなわち、読出制御部１７０は、状態ビットが０エラーチェック処理または１エラーチェック処理を示している場合に、タグＲＡＭ２００ａのラインの情報を順次エラー検出部１８０へ出力させる。【００５６】
エラー検出部１８０は、タグＲＡＭ２００ａから各ラインの情報が出力されると、各ラインのパリティビットを用いてバリッドビット、タイプビット、および物理アドレスビットのエラーチェックを行い、結果を完了判定部１９０へ通知する。エラー検出部１８０によるエラーチェックは、０書込処理の後と１書込処理の後とに行われる。したがって、０書込処理後のエラーチェック時には、各ラインのすべてのビットが０であればタグＲＡＭ２００ａへの０の書き込み／読み出しにエラーがないことになり、１書込処理後のエラーチェック時には、各ラインのすべてのビットが１であればタグＲＡＭ２００ａへの１の書き込み／読み出しにエラーがないことになる。【００５７】
完了判定部１９０は、ビット生成部１１０によって生成されるビット列の全ビットが１となり、エラー検出部１８０からエラーなしが通知されると、ＳＶＰ３００へタグＲＡＭ２００ａの初期化が完了した旨を通知する。すなわち、完了判定部１９０は、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされ、最終的に状態ビットが「１１１」となり、アドレスビットもすべて１となると、タグＲＡＭ２００ａのすべてのラインが初期化されたと判定し、エラーが検出されなかったことを確認して初期化完了をＳＶＰ３００へ通知する。【００５８】
次いで、上記のように構成されたＲＡＭ診断装置１００によるタグＲＡＭ２００ａの診断動作について、図４〜９に示すフロー図を参照しながら説明する。【００５９】
まず、情報処理装置の起動時などに、ＳＶＰ３００によってタグＲＡＭ２００ａの診断を行うか否かが判定される（ステップＳ１００）。この判定は、例えばユーザが診断を行わない診断抑止モードを選択したか否かに基づいて行われる。この判定の結果、タグＲＡＭ２００ａの診断を行う場合は（ステップＳ１００Ｙｅｓ）、ビット生成部１１０へその旨が通知され、ビット生成部１１０によって状態ビットである上位３ビットが「０１１」とされ、状態ビットより下位のアドレスビットがすべて０とされたビット列が生成される（ステップＳ２００）。そして、ＲＡＭ診断装置１００により、０書込処理（ステップＳ４００）、０エラーチェック処理（ステップＳ５００）、１書込処理（ステップＳ６００）、１エラーチェック処理（ステップＳ７００）、および初期化処理（ステップＳ８００）が順次実行されることになる。【００６０】
一方、ステップＳ１００の判定の結果、タグＲＡＭ２００ａの診断を行わない場合は（ステップＳ１００Ｎｏ）、ビット生成部１１０へその旨が通知され、ビット生成部１１０によって状態ビットである上位３ビットが「１１１」とされ、状態ビットより下位のアドレスビットがすべて０とされたビット列が生成される（ステップＳ３００）。そして、ＲＡＭ診断装置１００により、初期化処理（ステップＳ８００）のみが実行されることになる。ここでは、タグＲＡＭ２００ａの診断が行われるものとして、０書込処理（ステップＳ４００）、０エラーチェック処理（ステップＳ５００）、１書込処理（ステップＳ６００）、１エラーチェック処理（ステップＳ７００）、および初期化処理（ステップＳ８００）について順に説明する。【００６１】
まず、図５を参照して、０書込処理（ステップＳ４００）について説明する。０書込処理の開始時には、ビット生成部１１０によって、上位３ビットが「０１１」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。【００６２】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「０１１」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「０１１」のうち最上位ビットのみがインバータ１５１によって反転されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５２のみから１が出力され、ＡＮＤゲート１５３〜１５６から０が出力される。したがって、ＯＲゲート１５７から書込制御部１６０へタグＲＡＭ２００ａへの書き込みが指示されるとともに、ＡＮＤゲート１５３から書込制御部１６０へ０が出力されることから、タグＲＡＭ２００ａへ０が書き込まれることになる。【００６３】
また、ビット列がアドレスビット出力部１３０へ出力されると、上位３ビットを除いたビット列（ここでは、全ビットが０のビット列）がアドレスビット出力部１３０から書込制御部１６０および読出制御部１７０へ出力される。そして、ＯＲゲート１５７から書き込みを指示された書込制御部１６０によって、アドレスビット出力部１３０から出力されたビット列（アドレスビット）が示すタグＲＡＭ２００ａのラインに０が書き込まれる（ステップＳ４０１）。すなわち、ここでは、全ビットが０のアドレスで示されるラインのバリッドビット、タイプビット、および物理アドレスビットのすべてのビットに０が書き込まれる。【００６４】
一方で、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「０１１」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ４０２）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。このとき、状態選択部１５０によって、状態ビットが「１００」となったことが検知され（ステップＳ４０３）、状態ビットが「１００」となると０書込処理が終了するが、ここでは、状態ビットが「０１１」であるため（ステップＳ４０３Ｎｏ）、引き続き０書込処理が実行される。【００６５】
すなわち、最下位ビットが１で残りのビットがすべて０のアドレスビットがアドレスビット出力部１３０から書込制御部１６０へ出力され、書込制御部１６０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインに０が書き込まれる。【００６６】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「０１１」である間は、１ずつ大きくなるアドレスビットが示すラインに０が書き込まれる。そして、上位３ビットが「０１１」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインに０が書き込まれたときに、タグＲＡＭ２００ａのすべてのラインに０が書き込まれたことになる。【００６７】
タグＲＡＭ２００ａの全ビットが１のアドレスビットに対応するラインに０が書き込まれた後、ビット生成部１１０によって生成されるビット列が１インクリメントされると、上位３ビットが「１００」かつこれより下位ビットがすべて０のビット列が生成されることになる。このため、状態選択部１５０によって状態ビットが「１００」であることが検知され（ステップＳ４０３Ｙｅｓ）、０書込処理が完了する。【００６８】
次に、図６を参照して、０エラーチェック処理（ステップＳ５００）について説明する。上述した０書込処理完了時には、ビット生成部１１０によって、上位３ビットが「１００」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。【００６９】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「１００」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「１００」のうち２番目および３番目のビットがインバータ１５１によって反転されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５５のみから１が出力され、ＡＮＤゲート１５２〜１５４、１５６から０が出力される。したがって、ＯＲゲート１５８から読出制御部１７０へタグＲＡＭ２００ａからの読み出しが指示される。【００７０】
また、ビット列がアドレスビット出力部１３０へ出力されると、上位３ビットを除いたビット列（ここでは、全ビットが０のビット列）がアドレスビット出力部１３０から書込制御部１６０および読出制御部１７０へ出力される。そして、ＯＲゲート１５８から読み出しを指示された読出制御部１７０によって、アドレスビット出力部１３０から出力されたアドレスビットが示すタグＲＡＭ２００ａのラインからエラー検出部１８０への情報の読み出しが実行される。すなわち、ここでは、全ビットが０のアドレスで示されるラインの情報がエラー検出部１８０へ出力される。【００７１】
エラー検出部１８０へ情報が出力されると、エラー検出部１８０によってパリティビットが用いられることにより、バリッドビット、タイプビット、および物理アドレスビットのエラーチェックが行われる（ステップＳ５０１）。そして、タグＲＡＭ２００ａから出力されたラインの情報にエラーがあるか否かが判定され（ステップＳ５０２）、エラーがあれば完了判定部１９０へその旨が通知される（ステップＳ５０３）。【００７２】
一方で、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「１００」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ５０４）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。このとき、状態選択部１５０によって、状態ビットが「１０１」となったことが検知され（ステップＳ５０５）、状態ビットが「１０１」となると０エラーチェック処理が終了するが、ここでは、状態ビットが「１００」であるため（ステップＳ５０５Ｎｏ）、引き続き０エラーチェック処理が実行される。【００７３】
すなわち、最下位ビットが１で残りのビットがすべて０のアドレスビットがアドレスビット出力部１３０から読出制御部１７０へ出力され、読出制御部１７０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインからエラー検出部１８０への情報の読み出しが実行される。そして、エラー検出部１８０によって、読み出されたラインの情報のエラーチェックが行われる。【００７４】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「１００」である間は、１ずつ大きくなるアドレスビットが示すラインのエラーチェックが行われる。そして、上位３ビットが「１００」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインのエラーチェックが行われたときに、タグＲＡＭ２００ａのすべてのラインに０が書き込まれた場合のエラーチェックが行われたことになる。【００７５】
タグＲＡＭ２００ａの全ビットが１のアドレスビットに対応するラインのエラーチェックが行われた後、ビット生成部１１０によって生成されるビット列が１インクリメントされると、上位３ビットが「１０１」かつこれより下位ビットがすべて０のビット列が生成されることになる。このため、状態選択部１５０によって状態ビットが「１０１」であることが検知され（ステップＳ５０５Ｙｅｓ）、０エラーチェック処理が完了する。【００７６】
次に、図７を参照して、１書込処理（ステップＳ６００）について説明する。上述した０エラーチェック処理完了時には、ビット生成部１１０によって、上位３ビットが「１０１」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。【００７７】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「１０１」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「１０１」のうち２番目のビットのみがインバータ１５１によって反転されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５３のみから１が出力され、ＡＮＤゲート１５２、１５４〜１５６から０が出力される。したがって、ＯＲゲート１５７から書込制御部１６０へタグＲＡＭ２００ａへの書き込みが指示されるとともに、ＡＮＤゲート１５３から書込制御部１６０へ１が出力されることから、タグＲＡＭ２００ａへ１が書き込まれることになる。【００７８】
一方で、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「１０１」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ６０２）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。このとき、状態選択部１５０によって、状態ビットが「１１０」となったことが検知され（ステップＳ６０３）、状態ビットが「１１０」となると１書込処理が終了するが、ここでは、状態ビットが「１０１」であるため（ステップＳ６０３Ｎｏ）、引き続き１書込処理が実行される。【００７９】
すなわち、最下位ビットが１で残りのビットがすべて０のアドレスビットがアドレスビット出力部１３０から書込制御部１６０へ出力され、書込制御部１６０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインに１が書き込まれる。【００８０】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「１０１」である間は、１ずつ大きくなるアドレスビットが示すラインに１が書き込まれる。そして、上位３ビットが「１０１」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインに１が書き込まれたときに、タグＲＡＭ２００ａのすべてのラインに１が書き込まれたことになる。【００８１】
タグＲＡＭ２００ａの全ビットが１のアドレスビットに対応するラインに１が書き込まれた後、ビット生成部１１０によって生成されるビット列が１インクリメントされると、上位３ビットが「１１０」かつこれより下位ビットがすべて０のビット列が生成されることになる。このため、状態選択部１５０によって状態ビットが「１１０」であることが検知され（ステップＳ６０３Ｙｅｓ）、１書込処理が完了する。【００８２】
次に、図８を参照して、１エラーチェック処理（ステップＳ７００）について説明する。上述した１書込処理完了時には、ビット生成部１１０によって、上位３ビットが「１１０」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。【００８３】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「１１０」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「１１０」のうち３番目のビットのみがインバータ１５１によって反転されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５６のみから１が出力され、ＡＮＤゲート１５２〜１５５から０が出力される。したがって、ＯＲゲート１５８から読出制御部１７０へタグＲＡＭ２００ａからの読み出しが指示される。【００８４】
また、ビット列がアドレスビット出力部１３０へ出力されると、上位３ビットを除いたビット列（ここでは、全ビットが０のビット列）がアドレスビット出力部１３０から書込制御部１６０および読出制御部１７０へ出力される。そして、ＯＲゲート１５８から読み出しを指示された読出制御部１７０によって、アドレスビット出力部１３０から出力されたアドレスビットが示すタグＲＡＭ２００ａのラインからエラー検出部１８０への情報の読み出しが実行される。すなわち、ここでは、全ビットが０のアドレスで示されるラインの情報がエラー検出部１８０へ出力される。【００８５】
エラー検出部１８０へ情報が出力されると、エラー検出部１８０によってパリティビットが用いられることにより、バリッドビット、タイプビット、および物理アドレスビットのエラーチェックが行われる（ステップＳ７０１）。そして、タグＲＡＭ２００ａから出力されたラインの情報にエラーがあるか否かが判定され（ステップＳ７０２）、エラーがあれば完了判定部１９０へその旨が通知される（ステップＳ７０３）。【００８６】
一方で、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「１１０」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ７０４）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。このとき、状態選択部１５０によって、状態ビットが「１１１」となったことが検知され（ステップＳ７０５）、状態ビットが「１１１」となると１エラーチェック処理が終了するが、ここでは、状態ビットが「１１０」であるため（ステップＳ７０５Ｎｏ）、引き続き１エラーチェック処理が実行される。【００８７】
すなわち、最下位ビットが１で残りのビットがすべて０のアドレスビットがアドレスビット出力部１３０から読出制御部１７０へ出力され、読出制御部１７０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインからエラー検出部１８０への情報の読み出しが実行される。そして、エラー検出部１８０によって、読み出されたラインの情報のエラーチェックが行われる。【００８８】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「１１０」である間は、１ずつ大きくなるアドレスビットが示すラインのエラーチェックが行われる。そして、上位３ビットが「１１０」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインのエラーチェックが行われたときに、タグＲＡＭ２００ａのすべてのラインに１が書き込まれた場合のエラーチェックが行われたことになる。【００８９】
タグＲＡＭ２００ａの全ビットが１のアドレスビットに対応するラインのエラーチェックが行われた後、ビット生成部１１０によって生成されるビット列が１インクリメントされると、上位３ビットが「１１１」かつこれより下位ビットがすべて０のビット列が生成されることになる。このため、状態選択部１５０によって状態ビットが「１１１」であることが検知され（ステップＳ７０５Ｙｅｓ）、１エラーチェック処理が完了する。【００９０】
次に、図９を参照して、初期化処理（ステップＳ８００）について説明する。上述した１エラーチェック処理完了時には、ビット生成部１１０によって、上位３ビットが「１１１」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。【００９１】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「１１１」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「１１１」のすべてのビットが反転されずにそのまま入力されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５４のみから１が出力され、ＡＮＤゲート１５２、１５３、１５５、１５６から０が出力される。したがって、ＯＲゲート１５７から書込制御部１６０へタグＲＡＭ２００ａへの書き込みが指示されるとともに、ＡＮＤゲート１５３から書込制御部１６０へ０が出力されることから、タグＲＡＭ２００ａへ０が書き込まれることになる。このとき、上述したように、ＡＮＤゲート１５４から書込制御部１６０へ直接１が出力されるようにしておき、０書込処理と初期化処理を区別した書き込みを行うようにしても良い。【００９２】
また、ビット列がアドレスビット出力部１３０へ出力されると、上位３ビットを除いたビット列（ここでは、全ビットが０のビット列）がアドレスビット出力部１３０から書込制御部１６０および読出制御部１７０へ出力される。そして、ＯＲゲート１５７から書き込みを指示された書込制御部１６０によって、アドレスビット出力部１３０から出力されたアドレスビットが示すタグＲＡＭ２００ａのラインが無効化される（ステップＳ８０１）。すなわち、ここでは、全ビットが０のアドレスで示されるラインのバリッドビットに０が書き込まれる。なお、バリッドビット以外のタイプビットおよび物理アドレスビットにも０が書き込まれるようにしても良い。【００９３】
この初期化処理の過程においては、完了判定部１９０によって、状態ビットがビット生成部１１０によって生成されるビット列の全ビットが１となったことが検知され（ステップＳ８０２）、ビット列の全ビットが１となると最終的な故障の有無が判断されるが、ここでは、状態ビットは「１１１」であるがアドレスビットの全ビットが１ではないため（ステップＳ８０２Ｎｏ）、引き続きラインの無効化が行われる。【００９４】
すなわち、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「１１１」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ８０３）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。そして、書込制御部１６０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインが無効化される。【００９５】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「１１１」である間は、１ずつ大きくなるアドレスビットが示すラインに１が書き込まれる。そして、上位３ビットが「１１１」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインが無効化されたときに、タグＲＡＭ２００ａのすべてのラインが無効化され初期化されたことになる。【００９６】
さらに、この時点で、ビット生成部１１０によって生成されたビット列の全ビットが１となるため、完了判定部１９０によってタグＲＡＭ２００ａの初期化が完了したか否かが判定される。すなわち、上述の０エラーチェック処理（ステップＳ５００）および１エラーチェック処理（ステップＳ７００）において、エラー検出部１８０からエラーがあった旨が通知されたか否かが判断され（ステップＳ８０４）、エラーの通知がなければ（ステップＳ８０４Ｎｏ）、タグＲＡＭ２００ａの初期化が完了したと判定され（ステップＳ８０５）、完了判定部１９０からＳＶＰ３００へ初期化完了が通知される。また、エラーの通知があれば（ステップＳ８０４Ｙｅｓ）、タグＲＡＭ２００ａに故障があると判定され（ステップＳ８０６）、完了判定部１９０からＳＶＰ３００へタグＲＡＭ２００ａに故障がある旨が通知される。そして、タグＲＡＭ２００ａに故障がある場合は、ＳＶＰ３００によって、故障がある旨のメッセージがユーザへ通知されるなどの処理が行われる。【００９７】
以上のように、本実施の形態によれば、プログラムによる診断やメインメモリへのアクセスを行うことなく、ハードウェアによって、タグＲＡＭの全ラインへの０の書き込みと全ラインの読み出しおよびエラーチェックとを行い、その後、タグＲＡＭの全ラインへの１の書き込みと全ラインの読み出しおよびエラーチェックとを行う。このため、搭載されるメインメモリのサイズに関わらず、キャッシュ内のＲＡＭの全ビットをより容易かつ高速に診断することができる。【００９８】
なお、上記実施の形態において、パイプライン制御が行われている場合は、０書込処理、０エラーチェック処理、１書込処理、１エラーチェック処理、および初期化処理のそれぞれの処理に先立って、例えば図示しないパイプライン制御部へ従来のＲＡＭ初期化時と同様の無効化要求を行い、この無効化要求がパイプラインのプライオリティを獲得した際に処理を実行するようにすれば良い。【００９９】
また、上記実施の形態においては、１書込処理よりも０書込処理を先に実行するものとしたが、１書込処理を先に実行するようにしても良い。この場合、０書込処理が後に実行されることから、初期化処理が不要となり、処理の状態が４つとなって状態ビットを２ビットにすることもできる。なお、上記実施の形態における１書込処理および０書込処理は、従来ＲＡＭの初期化のみに使用されていた初期化回路を流用して実行が可能な処理であるため、ＲＡＭの診断を行うために追加される回路の規模は小さくて済む。このため、本発明のＲＡＭ診断装置による回路規模の増大は最低限に抑制される。【０１００】
さらに、上記実施の形態においては、０書込処理および１書込処理として、タグＲＡＭのすべてのラインに０または１を一斉に書き込むものとしたが、タグＲＡＭのすべてのラインのすべてのビットを診断するためには、診断動作全体の間に全ビットのそれぞれについて０と１の両方が書き込まれれば良いため、１回目の書込処理と２回目の書込処理で反転した任意のデータパターンを書き込み、それぞれの書込処理後にエラーチェック処理を行うようにしても良い。【０１０１】
また、タグＲＡＭのみの診断を行うのではなく、ＴＬＢ−ＲＡＭおよびデータＲＡＭにも同様の診断を行い、ＲＡＭによってエラーを通知する信号を変えることにより、どのＲＡＭが故障しているか特定することができる。
【産業上の利用可能性】
【０１０２】
本発明は、搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断する場合に適用できる。
【図１】
2007097001.tif 000003
【図２】
2007097001.tif 000004
【図３】
2007097001.tif 000005
【図４】
2007097001.tif 000006
【図５】
2007097001.tif 000007
【図６】
2007097001.tif 000008
【図７】
2007097001.tif 000009
【図８】
2007097001.tif 000010
【図９】
2007097001.tif 000011
【手続補正書】
【提出日】平成20年4月25日(2008.4.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＲＡＭに故障があるか否かを診断するＲＡＭ診断装置であって、
複数の処理の状態のいずれかを示す状態ビットを順次発生させる発生手段と、
前記発生手段によって発生した状態ビットを参照して処理を選択する選択手段と、
前記選択手段によって書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込み、次に前記選択手段によって書込処理が選択されると、ＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込む書込手段と、
前記書込手段による書込処理それぞれの後に前記選択手段によってエラーチェック処理が選択されると、前記第１データパターンまたは前記第２データパターンをＲＡＭの全領域から読み出してエラーを検出する検出手段と
を有することを特徴とするＲＡＭ診断装置。
【請求項２】
前記発生手段は、
状態ビットの下位にＲＡＭの開始アドレスを示すアドレスビットが付加されたビット列を生成する生成手段と、
前記生成手段によって生成されたビット列を１ずつインクリメントするインクリメント手段と
を含むことを特徴とする請求項１記載のＲＡＭ診断装置。
【請求項３】
前記インクリメント手段によって得られたビット列が所定のビット列と等しくなった場合に、状態ビットが示すすべての処理が完了したと判定する判定手段をさらに有することを特徴とする請求項２記載のＲＡＭ診断装置。
【請求項４】
前記選択手段は、
前記インクリメント手段によって得られたビット列のうち状態ビット部分から処理を選択し、
前記書込手段は、
前記インクリメント手段によって得られたビット列のうちアドレスビット部分が示すＲＡＭの領域に第１データパターンまたは第２データパターンを書き込むことを特徴とする請求項２記載のＲＡＭ診断装置。
【請求項５】
前記選択手段は、
前記インクリメント手段によって得られたビット列のうち状態ビット部分から処理を選択し、
前記検出手段は、
前記インクリメント手段によって得られたビット列のうちアドレスビット部分が示すＲＡＭの領域の第１データパターンまたは第２データパターンを読み出してエラーを検出することを特徴とする請求項２記載のＲＡＭ診断装置。
【請求項６】
前記発生手段は、
ＲＡＭの全領域に０のみからなる第１データパターンを書き込む０書込処理の状態を示す状態ビット、０書込処理後のエラーチェックを行う０エラーチェック処理の状態を示す状態ビット、ＲＡＭの全領域に１のみからなる第２データパターンを書き込む１書込処理の状態を示す状態ビット、および１書込処理後のエラーチェックを行う１エラーチェック処理の状態を示す状態ビットを順次発生させることを特徴とする請求項１記載のＲＡＭ診断装置。
【請求項７】
前記発生手段は、
前記１エラーチェック処理後にＲＡＭの全領域を無効化する初期化処理の状態を示す状態ビットをさらに発生させ、
前記書込手段は、
前記選択手段によって初期化処理が選択されると、ＲＡＭの全領域を無効化する
ことを特徴とする請求項６記載のＲＡＭ診断装置。
【請求項８】
前記発生手段は、
前記１書込処理、前記１エラーチェック処理、前記０書込処理、および前記０エラーチェック処理の順に状態ビットを発生させることを特徴とする請求項６記載のＲＡＭ診断装置。
【請求項９】
前記選択手段は、
状態ビットが前記第１データパターンの書込処理を示しているときに１を出力する第１論理積回路と、
状態ビットが前記第２データパターンの書込処理を示しているときに１を出力する第２論理積回路と、
状態ビットが前記第１データパターンのエラーチェック処理を示しているときに１を出力する第３論理積回路と、
状態ビットが前記第２データパターンのエラーチェック処理を示しているときに１を出力する第４論理積回路と、
前記第１論理積回路および前記第２論理積回路のいずれか１つから１が出力された場合にＲＡＭへの書き込みを指示する信号を出力する第１論理和回路と、
前記第３論理積回路および前記第４論理積回路のいずれか１つから１が出力された場合にＲＡＭからの読み出しを指示する信号を出力する第２論理和回路と
を含むことを特徴とする請求項１記載のＲＡＭ診断装置。
【請求項１０】
ＲＡＭに故障があるか否かを診断するＲＡＭ診断方法であって、
複数の処理の状態のいずれかを示す状態ビットを順次発生させる発生工程と、
前記発生工程にて発生した状態ビットを参照して処理を選択する選択工程と、
前記選択工程にて書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込む第１書込工程と、
前記第１書込工程にて書き込まれた前記第１データパターンをＲＡＭの全領域から読み出してエラーを検出する第１検出工程と、
前記第１検出工程の後にＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込む第２書込工程と、
前記第２書込工程にて書き込まれた前記第２データパターンをＲＡＭの全領域から読み出してエラーを検出する第２検出工程と
を有することを特徴とするＲＡＭ診断方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＭに故障があるか否かを診断するＲＡＭ診断装置およびＲＡＭ診断方法に関し、特に、搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断することができるＲＡＭ診断装置およびＲＡＭ診断方法に関する。
【背景技術】
【０００２】
一般に、情報処理装置におけるプロセッサの電源投入時などにおいては、ＲＡＭの故障が診断されることがある。ＲＡＭの診断の際には、まず、プログラムの命令により、プロセッサによって所定の診断用データが診断対象のＲＡＭに書き込まれる。次いで、再度プログラムの命令により、ＲＡＭに書き込まれた診断用データが読み出され、ハードウェアのエラーチェック回路により、読み出された診断用データに誤りがあるか否かが判定され、ＲＡＭの故障の有無が判定される。すなわち、ＲＡＭから読み出された診断用データが誤っていれば、このＲＡＭは故障していると判定される。そして、診断用データの書き込みおよび読み出しの手順をＲＡＭのすべてのラインに対して行うことにより、ＲＡＭの故障の有無を確認することができる。
【０００３】
このようなＲＡＭの故障の診断に用いられる診断用データがＲＯＭに記憶されている場合、ＲＡＭ診断時には、プロセッサが一度ＲＯＭから診断用データを読み出した後、診断対象のＲＡＭに書き込むことになる。しかし、診断対象のＲＡＭのサイズが大きくなれば、これに伴って診断用データのサイズも大きくなるため、プロセッサによってＲＯＭから診断用データが読み出され、ＲＡＭに書き込まれるまでの時間が長くなる。そこで、例えば特許文献１においては、ＲＯＭからプロセッサを経由せずに、直接ＲＡＭへ診断用データを書き込む技術が開示されている。これにより、ＲＡＭの故障診断に要する時間を短縮することができる。
【０００４】
【特許文献１】特開平５−６１７８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ＲＡＭには、例えばデータＲＡＭ、タグＲＡＭ（ＴＡＧ−ＲＡＭ）、およびＴＬＢ（Translation  Look-aside  Buffer）−ＲＡＭなどのように、メインメモリのデータを一時的に記憶するプロセッサ内のキャッシュにおいて用いられるものがある。キャッシュ内のタグＲＡＭやＴＬＢ−ＲＡＭには、データのメインメモリにおけるアドレスを示す物理アドレスが登録されている。具体的には、タグＲＡＭには、キャッシュされたデータのメインメモリ上の物理アドレスが登録されており、ＴＬＢ−ＲＡＭには、プログラムによって用いられる仮想アドレスと物理アドレスとの対応関係が登録されている。
【０００６】
これらのキャッシュ内のＲＡＭの故障診断は、メインメモリからの診断用データがデータＲＡＭに書き込まれてキャッシュされた後、キャッシュされた診断用データが読み出され、読み出された診断用データに誤りがあるか否か判定されるとともに、この診断用データのキャッシュに伴ってタグＲＡＭおよびＴＬＢ−ＲＡＭに登録された内容が読み出され、読み出された登録内容が診断用データに対応しているか否か判定されることにより行われる。
【０００７】
ここで、タグＲＡＭおよびＴＬＢ−ＲＡＭに登録される物理アドレスのビット数は、キャッシュに接続されるメインメモリのすべてのアドレスを表現可能であれば良いため、メインメモリのサイズに依存している。したがって、情報処理装置に搭載可能な最大サイズよりも小さいメインメモリが搭載されている場合には、タグＲＡＭおよびＴＬＢ−ＲＡＭが登録可能な物理アドレスよりも常にビット数が少ない物理アドレスのみが登録されることになり、物理アドレスの上位ビットが常に０となることがある。
【０００８】
具体的に例を挙げると、情報処理装置が例えば４ＧＢ（ギガバイト）のメインメモリを搭載可能な場合、このメインメモリのメモリ空間は３２ビットで表現可能であるため、タグＲＡＭおよびＴＬＢ−ＲＡＭには３２ビットまでの物理アドレスを登録することが可能である。しかし、この情報処理装置に例えば２５６ＭＢ（メガバイト）のメインメモリが搭載された場合、このメインメモリのメモリ空間は２８ビットで表現可能であるため、タグＲＡＭおよびＴＬＢ−ＲＡＭに登録される物理アドレスの上位４ビットは常に０となる。
【０００９】
このような状況下で、上述した手順によるタグＲＡＭおよびＴＬＢ−ＲＡＭの故障診断を行う場合、いかなる診断用データがメインメモリからキャッシュされても、その診断用データに関する物理アドレスの上位ビットは常に０であるため、タグＲＡＭおよびＴＬＢ−ＲＡＭに登録される物理アドレスの上位ビットについては、故障診断が不可能であるという問題がある。すなわち、上記の例では、診断用データの物理アドレスは、２８ビットで表現可能であるため、タグＲＡＭおよびＴＬＢ−ＲＡＭに登録される物理アドレスの上位４ビットの故障診断が不可能である。
【００１０】
また、キャッシュ内のＲＡＭに診断用データを書き込む際には、プログラムの命令により、メインメモリから診断用データが書き込まれることになるため、メインメモリにアクセスする時間がかかるという問題がある。さらに、故障診断のプログラムは、キャッシュの構成や状態を考慮して作成する必要があり、非常に煩雑なものになる傾向がある。
【００１１】
本発明はかかる点に鑑みてなされたものであり、搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断することができるＲＡＭ診断装置およびＲＡＭ診断方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、ＲＡＭ診断装置は、ＲＡＭに故障があるか否かを診断するＲＡＭ診断装置であって、複数の処理の状態のいずれかを示す状態ビットを順次発生させる発生手段と、前記発生手段によって発生した状態ビットを参照して処理を選択する選択手段と、前記選択手段によって書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込み、次に前記選択手段によって書込処理が選択されると、ＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込む書込手段と、前記書込手段による書込処理それぞれの後に前記選択手段によってエラーチェック処理が選択されると、前記第１データパターンまたは前記第２データパターンをＲＡＭの全領域から読み出してエラーを検出する検出手段とを有する構成を採る。
【００１３】
また、ＲＡＭ診断装置は、上記構成において、前記発生手段は、状態ビットの下位にＲＡＭの開始アドレスを示すアドレスビットが付加されたビット列を生成する生成手段と、前記生成手段によって生成されたビット列を１ずつインクリメントするインクリメント手段とを含む構成を採る。
【００１４】
また、ＲＡＭ診断装置は、上記構成において、前記インクリメント手段によって得られたビット列が所定のビット列と等しくなった場合に、状態ビットが示すすべての処理が完了したと判定する判定手段をさらに有する構成を採る。
【００１５】
また、ＲＡＭ診断装置は、上記構成において、前記選択手段は、前記インクリメント手段によって得られたビット列のうち状態ビット部分から処理を選択し、前記書込手段は、前記インクリメント手段によって得られたビット列のうちアドレスビット部分が示すＲＡＭの領域に第１データパターンまたは第２データパターンを書き込む構成を採る。
【００１６】
また、ＲＡＭ診断装置は、上記構成において、前記選択手段は、前記インクリメント手段によって得られたビット列のうち状態ビット部分から処理を選択し、前記検出手段は、前記インクリメント手段によって得られたビット列のうちアドレスビット部分が示すＲＡＭの領域の第１データパターンまたは第２データパターンを読み出してエラーを検出する構成を採る。
【００１７】
また、ＲＡＭ診断装置は、上記構成において、前記発生手段は、ＲＡＭの全領域に０のみからなる第１データパターンを書き込む０書込処理の状態を示す状態ビット、０書込処理後のエラーチェックを行う０エラーチェック処理の状態を示す状態ビット、ＲＡＭの全領域に１のみからなる第２データパターンを書き込む１書込処理の状態を示す状態ビット、および１書込処理後のエラーチェックを行う１エラーチェック処理の状態を示す状態ビットを順次発生させる構成を採る。
【００１８】
また、ＲＡＭ診断装置は、上記構成において、前記発生手段は、前記１エラーチェック処理後にＲＡＭの全領域を無効化する初期化処理の状態を示す状態ビットをさらに発生させ、前記書込手段は、前記選択手段によって初期化処理が選択されると、ＲＡＭの全領域を無効化する構成を採る。
【００１９】
また、ＲＡＭ診断装置は、上記構成において、前記発生手段は、前記１書込処理、前記１エラーチェック処理、前記０書込処理、および前記０エラーチェック処理の順に状態ビットを発生させる構成を採る。
【００２０】
また、ＲＡＭ診断装置は、上記構成において、前記検出手段は、ＲＡＭに登録されるパリティビットを用いて前記第１データパターンおよび前記第２データパターンのエラーを検出する構成を採る。
【００２１】
また、ＲＡＭ診断装置は、上記構成において、前記選択手段は、状態ビットが前記第１データパターンの書込処理を示しているときに１を出力する第１論理積回路と、状態ビットが前記第２データパターンの書込処理を示しているときに１を出力する第２論理積回路と、状態ビットが前記第１データパターンのエラーチェック処理を示しているときに１を出力する第３論理積回路と、状態ビットが前記第２データパターンのエラーチェック処理を示しているときに１を出力する第４論理積回路と、前記第１論理積回路および前記第２論理積回路のいずれか１つから１が出力された場合にＲＡＭへの書き込みを指示する信号を出力する第１論理和回路と、前記第３論理積回路および前記第４論理積回路のいずれか１つから１が出力された場合にＲＡＭからの読み出しを指示する信号を出力する第２論理和回路とを含む構成を採る。
【００２２】
また、ＲＡＭ診断方法は、ＲＡＭに故障があるか否かを診断するＲＡＭ診断方法であって、複数の処理の状態のいずれかを示す状態ビットを順次発生させる発生工程と、前記発生工程にて発生した状態ビットを参照して処理を選択する選択工程と、前記選択工程にて書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込む第１書込工程と、前記第１書込工程にて書き込まれた前記第１データパターンをＲＡＭの全領域から読み出してエラーを検出する第１検出工程と、前記第１検出工程の後にＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込む第２書込工程と、前記第２書込工程にて書き込まれた前記第２データパターンをＲＡＭの全領域から読み出してエラーを検出する第２検出工程とを有するようにした。
【発明の効果】
【００２３】
本発明によれば、複数の処理の状態のいずれかを示す状態ビットを順次発生させ、発生した状態ビットを参照して処理を選択し、書込処理が選択されると、ＲＡＭの全領域に２値の第１データパターンを書き込み、次に書込処理が選択されると、ＲＡＭの全領域に前記第１データパターンを反転した第２データパターンを書き込み、書込処理それぞれの後にエラーチェック処理が選択されると、第１データパターンまたは第２データパターンをＲＡＭの全領域から読み出してエラーを検出する。このため、メインメモリからデータを読み出したり複雑なプログラムを使用したりすることなく、ハードウェア主導でＲＡＭの全領域のビットを０および１とした上でエラーチェックすることができ、搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断することができる。
【００２４】
また、本発明によれば、状態ビットの下位にＲＡＭの開始アドレスを示すアドレスビットが付加されたビット列を生成し、生成されたビット列を１ずつインクリメントするため、インクリメントされるごとにビット列を状態ビット部分とアドレスビット部分に分ければ、１種類の状態ビットについてＲＡＭの全領域のアドレスに対応するアドレスビットが得られることになり、処理の指定と処理対象となるＲＡＭの領域の指定とを容易に行うことができる。
【００２５】
また、本発明によれば、得られたビット列が所定のビット列と等しくなった場合に、状態ビットが示すすべての処理が完了したと判定するため、処理の指定および処理対象となるＲＡＭの領域の指定に用いられるビット列を、そのまま完了判定にも用いることができる。
【００２６】
また、本発明によれば、得られたビット列のうち状態ビット部分から処理を選択し、得られたビット列のうちアドレスビット部分が示すＲＡＭの領域に第１データパターンまたは第２データパターンを書き込む。このため、状態ビットが書込処理を示している間に、確実にＲＡＭの開始アドレスから最終アドレスまでの全領域に第１データパターンまたは第２データパターンを書き込むことができる。
【００２７】
また、本発明によれば、得られたビット列のうち状態ビット部分から処理を選択し、得られたビット列のうちアドレスビット部分が示すＲＡＭの領域の第１データパターンまたは第２データパターンを読み出してエラーを検出する。このため、状態ビットがエラーチェック処理を示している間に、確実にＲＡＭの開始アドレスから最終アドレスまでの全領域の第１データパターンまたは第２データパターンのエラーチェックを行うことができる。
【００２８】
また、本発明によれば、ＲＡＭの全領域に０のみからなる第１データパターンを書き込む０書込処理の状態を示す状態ビット、０書込処理後のエラーチェックを行う０エラーチェック処理の状態を示す状態ビット、ＲＡＭの全領域に１のみからなる第２データパターンを書き込む１書込処理の状態を示す状態ビット、および１書込処理後のエラーチェックを行う１エラーチェック処理の状態を示す状態ビットを順次発生させる。このため、ＲＡＭの全領域における０の書き込みおよび読み出しが正常であるか診断するとともに、ＲＡＭの全領域における１の書き込みおよび読み出しが正常であるか診断することができる。
【００２９】
また、本発明によれば、１エラーチェック処理後にＲＡＭの全領域を無効化する初期化処理の状態を示す状態ビットをさらに発生させ、初期化処理が選択されると、ＲＡＭの全領域を無効化する。このため、ＲＡＭの全領域の診断の後、ＲＡＭを初期化することができ、キャッシュ内に備えられるＲＡＭなどの起動時における初期化と同時に診断することができる。
【００３０】
また、本発明によれば、１書込処理、１エラーチェック処理、０書込処理、および０エラーチェック処理の順に状態ビットを発生させるため、エラーが検出されなければ、最終的にＲＡＭの全領域に０が書き込まれた状態となり、ＲＡＭの初期化を省略することができる。
【００３１】
また、本発明によれば、ＲＡＭに登録されるパリティビットを用いて第１データパターンおよび第２データパターンのエラーを検出するため、正確なエラーチェックを行うことができる。
【００３２】
また、本発明によれば、状態ビットが第１データパターンの書込処理を示しているときに１を出力する第１論理積回路と、状態ビットが第２データパターンの書込処理を示しているときに１を出力する第２論理積回路と、状態ビットが第１データパターンのエラーチェック処理を示しているときに１を出力する第３論理積回路と、状態ビットが第２データパターンのエラーチェック処理を示しているときに１を出力する第４論理積回路と、第１論理積回路および第２論理積回路のいずれか１つから１が出力された場合にＲＡＭへの書き込みを指示する信号を出力する第１論理和回路と、第３論理積回路および第４論理積回路のいずれか１つから１が出力された場合にＲＡＭからの読み出しを指示する信号を出力する第２論理和回路とを含む。このため、簡易な論理演算回路のみで状態ビットから処理を選択することができ、より高速にＲＡＭの正確な診断を行うことができる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下の説明においては、キャッシュ内のタグＲＡＭ（ＴＡＧ−ＲＡＭ）を診断することとするが、本発明は、例えばデータＲＡＭやＴＬＢ−ＲＡＭなど他のＲＡＭの診断にも適用することができる。
【００３４】
図１は、本発明の一実施の形態に係るＲＡＭ診断装置を備えた情報処理装置の要部構成を示すブロック図である。図１に示す情報処理装置は、ＣＰＵ内にキャッシュ２００を備えており、このキャッシュ内にはタグＲＡＭ２００ａ、ＴＬＢ−ＲＡＭ２００ｂ、およびデータＲＡＭ２００ｃを有している。そして、タグＲＡＭ２００ａには、ＲＡＭ診断装置１００が接続されており、ＲＡＭ診断装置１００には、ＣＰＵとは別のサービスプロセッサ（SerVice  Processor：以下「ＳＶＰ」と略記する）３００が接続されている。
【００３５】
キャッシュ２００は、メインメモリ４００に記憶されているデータを一時的に記憶（キャッシュ）し、このデータがＣＰＵで使用される際に、処理の高速化を図る。このとき、データ自体はデータＲＡＭ２００ｃに記憶され、このデータのメインメモリ４００における物理アドレスがタグＲＡＭ２００ａに記憶される。
【００３６】
具体的には、タグＲＡＭ２００ａには、例えば図２に示すような情報が各ラインに登録されている。すなわち、データの有効／無効を示すバリッドビット（Valid  bit）、バリッドビットのエラーチェック用のパリティビット（Valid  bit  parity）、データのタイプを示すタイプビット（Type  bit）、タイプビットのエラーチェック用のパリティビット（Type  bit  parity）、データの物理アドレスを示す物理アドレスビット（Physical  address  bits）、および物理アドレスビットのエラーチェック用のパリティビット（Physical  address  parity）がタグＲＡＭ２００ａのそれぞれのラインに登録されている。ＣＰＵが所望のデータを読み出して処理を行う場合、タグＲＡＭ２００ａにアクセスして所望のデータの物理アドレスを検索し、所望のデータがデータＲＡＭ２００ｃにキャッシュされているか否かを把握することができる。また、プログラムで使用される仮想アドレスと物理アドレスとの対応関係がＴＬＢ−ＲＡＭ２００ｂに記憶される。
【００３７】
ＲＡＭ診断装置１００は、キャッシュ２００内のタグＲＡＭ２００ａに故障があるか否かを診断する。すなわち、ＲＡＭ診断装置１００は、タグＲＡＭ２００ａの物理アドレスを記憶する全ビットに０および１を順次書き込み、各々の書込処理後にエラーチェックを行って、全ビットの故障の有無を診断する。ＲＡＭ診断装置１００の詳細な構成については、後に詳述する。
【００３８】
ＳＶＰ３００は、ＣＰＵとは独立して設けられたプロセッサであり、ＣＰＵの故障診断などを管理している。また、ＳＶＰ３００は、情報処理装置の起動時などに、ＲＡＭ診断装置１００へキャッシュ２００の初期化の開始を指示する。この初期化の際、ＳＶＰ３００は、ＲＡＭの診断を行うか否かを判定し、ＲＡＭの診断を行う場合は、初期化と同時にＲＡＭ診断を行うようにＲＡＭ診断装置１００へ指示する。
【００３９】
図３は、本実施の形態に係るＲＡＭ診断装置１００の内部構成を示すブロック図である。図３に示すＲＡＭ診断装置１００は、ビット生成部１１０、状態ビット出力部１２０、アドレスビット出力部１３０、インクリメント部１４０、状態選択部１５０、書込制御部１６０、読出制御部１７０、エラー検出部１８０、および完了判定部１９０を有している。
【００４０】
ビット生成部１１０は、タグＲＡＭ２００ａの全ラインを表現可能なビット数のアドレスビットの上位に、診断や初期化などの状態を示す状態ビットを付加したビット数のビット列を生成する。具体的には、ビット生成部１１０は、ＳＶＰ３００からタグＲＡＭ２００ａの初期化または診断が指示された場合、すべてのビットが０からなるアドレスビットの上位に３ビットの状態ビットを付加したビット列を生成する。また、ビット生成部１１０は、インクリメント部１４０からの指示に従い、ビット列を１ずつインクリメントする。
【００４１】
ここで、状態ビットとは、ＲＡＭ診断装置１００が実行する処理を５つの状態に分類し、それぞれの状態に対応する３ビットのビット列である。具体的には、タグＲＡＭ２００ａの各ラインに０を書き込む処理（０書込処理）を「０１１」で表し、タグＲＡＭ２００ａに０が書き込まれた後のエラーチェック処理（０エラーチェック処理）を「１００」で表し、タグＲＡＭ２００ａの各ラインに１を書き込む処理（１書込処理）を「１０１」で表し、タグＲＡＭ２００ａに１が書き込まれた後のエラーチェック処理（１エラーチェック処理）を「１１０」で表し、タグＲＡＭ２００ａの初期化処理を「１１１」で表す。なお、本実施の形態においては、ＲＡＭ診断装置１００が実行する処理が５つの状態に分類されるため、状態ビットは３ビットとなるが、例えば４つの状態で処理を分類できる場合は、状態ビットは２ビットで良い。
【００４２】
状態ビットが上記のように定義されるため、ＳＶＰ３００からタグＲＡＭ２００ａの初期化が指示された場合は、ビット生成部１１０は、状態ビット「１１１」に続けてすべてのビットが０からなるアドレスビットが付加されたビット列を生成する。また、ＳＶＰ３００からタグＲＡＭ２００ａの診断が指示された場合は、ビット生成部１１０は、状態ビット「０１１」に続けてすべてのビットが０からなるアドレスビットが付加されたビット列を生成する。
【００４３】
状態ビット出力部１２０は、ビット生成部１１０によってビット列が生成されるたびに、このビット列の上位３ビットからなる状態ビットを状態選択部１５０へ出力する。アドレスビット出力部１３０は、ビット生成部１１０によってビット列が生成されるたびに、このビット列の上位３ビットを除いたアドレスビットを書込制御部１６０および読出制御部１７０へ出力する。インクリメント部１４０は、所定の周期でビット生成部１１０にビット列を１インクリメントするよう指示する。
【００４４】
状態選択部１５０は、状態ビット出力部１２０から出力される状態ビットを参照して、０書込処理、０エラーチェック処理、１書込処理、１エラーチェック処理、および初期化処理のどの状態にあるかを選択し、書込制御部１６０または読出制御部１７０へそれぞれの状態に応じた動作を指示する。具体的には、状態選択部１５０は、インバータ１５１、ＡＮＤゲート１５２〜１５６、およびＯＲゲート１５７、１５８を有している。
【００４５】
インバータ１５１は、状態ビット出力部１２０から出力される３ビットを反転する。すなわち、インバータ１５１は、状態ビットを構成する０を１に変換し、１を０に変換する。
【００４６】
ＡＮＤゲート１５２〜１５６は、それぞれ０書込処理、１書込処理、初期化処理、０エラーチェック処理、および１エラーチェック処理に対応しており、状態ビット出力部１２０から出力される状態ビットが示す状態に対応するＡＮＤゲート１５２〜１５６から１が出力される。なお、図３中、ＡＮＤゲート１５２〜１５６の入力側に示される１〜３の数字は、状態ビットの最上位ビット、２番目のビット、および３番目のビットをそれぞれ示している。したがって、例えば状態ビット出力部１２０から０書込処理を示す状態ビット「０１１」が出力されると、ＡＮＤゲート１５２には、状態ビットの最上位ビットのみがインバータ１５１によって反転された「１１１」が入力されることになる。このとき他のＡＮＤゲート１５３〜１５６には、「１１１」が入力されることはない。このため、ＡＮＤゲート１５２のみから１が出力され、現在の状態が０書込処理であるとわかる。
【００４７】
他の状態のときも同様で、１書込処理を示す状態ビット「１０１」の場合はＡＮＤゲート１５３のみから１が出力され、初期化処理を示す状態ビット「１１１」の場合はＡＮＤゲート１５４のみから１が出力され、０エラーチェック処理を示す状態ビット「１００」の場合はＡＮＤゲート１５５のみから１が出力され、１エラーチェック処理を示す状態ビット「１１０」の場合はＡＮＤゲート１５６のみから１が出力される。
【００４８】
ＯＲゲート１５７は、０書込処理に対応するＡＮＤゲート１５２、１書込処理に対応するＡＮＤゲート１５３、および初期化処理に対応するＡＮＤゲート１５４のいずれかから１が出力された場合に、書込制御部１６０にタグＲＡＭ２００ａへの書き込みを指示する。
【００４９】
ＯＲゲート１５８は、０エラーチェック処理に対応するＡＮＤゲート１５５および１エラーチェック処理に対応するＡＮＤゲート１５６のいずれかから１が出力された場合に、読出制御部１７０にタグＲＡＭ２００ａからの読み出しを指示する。
【００５０】
書込制御部１６０は、ＯＲゲート１５７からタグＲＡＭ２００ａへの書き込みが指示されると、アドレスビット出力部１３０から出力されたアドレスビットに対応するタグＲＡＭ２００ａのラインに書込処理を行う。このとき、書込制御部１６０は、ＡＮＤゲート１５３から１が出力されれば１を書き込み、ＡＮＤゲート１５３から０が出力されれば０を書き込む。
【００５１】
より具体的には、０書込処理時および初期化処理時は、書込制御部１６０は、図２に示したバリッドビット、タイプビット、および物理アドレスビットのすべてのビットに０を書き込むとともに、すべてのパリティビットにはエラーチェックされる各ビットにエラーを発生させない値（ここでは１）を書き込む。また、１書込処理時は、書込制御部１６０は、バリッドビット、タイプビット、および物理アドレスビットのすべてのビットに１を書き込むとともに、すべてのパリティビットにはエラーチェックされる各ビットにエラーを発生させない値（ここでは０）を書き込む。
【００５２】
なお、ここでは０書込処理と初期化処理を区別せず、すべてのビットに０を書き込むものとしたが、ＡＮＤゲート１５４から書込制御部１６０へ１が出力された場合（すなわち、初期化処理が行われる場合）は、バリッドビットのみに０を書き込むとともに、バリッドビットのパリティビットに１を書き込み、ラインを無効化する処理のみを行うようにしても良い。
【００５３】
読出制御部１７０は、ＯＲゲート１５８からタグＲＡＭ２００ａからの読み出しが指示されると、アドレスビット出力部１３０から出力されたアドレスビットに対応するタグＲＡＭ２００ａのラインから読み出し処理を行い、このラインの情報をエラー検出部１８０へ出力させる。すなわち、読出制御部１７０は、状態ビットが０エラーチェック処理または１エラーチェック処理を示している場合に、タグＲＡＭ２００ａのラインの情報を順次エラー検出部１８０へ出力させる。
【００５４】
エラー検出部１８０は、タグＲＡＭ２００ａから各ラインの情報が出力されると、各ラインのパリティビットを用いてバリッドビット、タイプビット、および物理アドレスビットのエラーチェックを行い、結果を完了判定部１９０へ通知する。エラー検出部１８０によるエラーチェックは、０書込処理の後と１書込処理の後とに行われる。したがって、０書込処理後のエラーチェック時には、各ラインのすべてのビットが０であればタグＲＡＭ２００ａへの０の書き込み／読み出しにエラーがないことになり、１書込処理後のエラーチェック時には、各ラインのすべてのビットが１であればタグＲＡＭ２００ａへの１の書き込み／読み出しにエラーがないことになる。
【００５５】
完了判定部１９０は、ビット生成部１１０によって生成されるビット列の全ビットが１となり、エラー検出部１８０からエラーなしが通知されると、ＳＶＰ３００へタグＲＡＭ２００ａの初期化が完了した旨を通知する。すなわち、完了判定部１９０は、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされ、最終的に状態ビットが「１１１」となり、アドレスビットもすべて１となると、タグＲＡＭ２００ａのすべてのラインが初期化されたと判定し、エラーが検出されなかったことを確認して初期化完了をＳＶＰ３００へ通知する。
【００５６】
次いで、上記のように構成されたＲＡＭ診断装置１００によるタグＲＡＭ２００ａの診断動作について、図４〜９に示すフロー図を参照しながら説明する。
【００５７】
まず、情報処理装置の起動時などに、ＳＶＰ３００によってタグＲＡＭ２００ａの診断を行うか否かが判定される（ステップＳ１００）。この判定は、例えばユーザが診断を行わない診断抑止モードを選択したか否かに基づいて行われる。この判定の結果、タグＲＡＭ２００ａの診断を行う場合は（ステップＳ１００Ｙｅｓ）、ビット生成部１１０へその旨が通知され、ビット生成部１１０によって状態ビットである上位３ビットが「０１１」とされ、状態ビットより下位のアドレスビットがすべて０とされたビット列が生成される（ステップＳ２００）。そして、ＲＡＭ診断装置１００により、０書込処理（ステップＳ４００）、０エラーチェック処理（ステップＳ５００）、１書込処理（ステップＳ６００）、１エラーチェック処理（ステップＳ７００）、および初期化処理（ステップＳ８００）が順次実行されることになる。
【００５８】
一方、ステップＳ１００の判定の結果、タグＲＡＭ２００ａの診断を行わない場合は（ステップＳ１００Ｎｏ）、ビット生成部１１０へその旨が通知され、ビット生成部１１０によって状態ビットである上位３ビットが「１１１」とされ、状態ビットより下位のアドレスビットがすべて０とされたビット列が生成される（ステップＳ３００）。そして、ＲＡＭ診断装置１００により、初期化処理（ステップＳ８００）のみが実行されることになる。ここでは、タグＲＡＭ２００ａの診断が行われるものとして、０書込処理（ステップＳ４００）、０エラーチェック処理（ステップＳ５００）、１書込処理（ステップＳ６００）、１エラーチェック処理（ステップＳ７００）、および初期化処理（ステップＳ８００）について順に説明する。
【００５９】
まず、図５を参照して、０書込処理（ステップＳ４００）について説明する。０書込処理の開始時には、ビット生成部１１０によって、上位３ビットが「０１１」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。
【００６０】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「０１１」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「０１１」のうち最上位ビットのみがインバータ１５１によって反転されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５２のみから１が出力され、ＡＮＤゲート１５３〜１５６から０が出力される。したがって、ＯＲゲート１５７から書込制御部１６０へタグＲＡＭ２００ａへの書き込みが指示されるとともに、ＡＮＤゲート１５３から書込制御部１６０へ０が出力されることから、タグＲＡＭ２００ａへ０が書き込まれることになる。
【００６１】
また、ビット列がアドレスビット出力部１３０へ出力されると、上位３ビットを除いたビット列（ここでは、全ビットが０のビット列）がアドレスビット出力部１３０から書込制御部１６０および読出制御部１７０へ出力される。そして、ＯＲゲート１５７から書き込みを指示された書込制御部１６０によって、アドレスビット出力部１３０から出力されたビット列（アドレスビット）が示すタグＲＡＭ２００ａのラインに０が書き込まれる（ステップＳ４０１）。すなわち、ここでは、全ビットが０のアドレスで示されるラインのバリッドビット、タイプビット、および物理アドレスビットのすべてのビットに０が書き込まれる。
【００６２】
一方で、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「０１１」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ４０２）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。このとき、状態選択部１５０によって、状態ビットが「１００」となったことが検知され（ステップＳ４０３）、状態ビットが「１００」となると０書込処理が終了するが、ここでは、状態ビットが「０１１」であるため（ステップＳ４０３Ｎｏ）、引き続き０書込処理が実行される。
【００６３】
すなわち、最下位ビットが１で残りのビットがすべて０のアドレスビットがアドレスビット出力部１３０から書込制御部１６０へ出力され、書込制御部１６０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインに０が書き込まれる。
【００６４】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「０１１」である間は、１ずつ大きくなるアドレスビットが示すラインに０が書き込まれる。そして、上位３ビットが「０１１」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインに０が書き込まれたときに、タグＲＡＭ２００ａのすべてのラインに０が書き込まれたことになる。
【００６５】
タグＲＡＭ２００ａの全ビットが１のアドレスビットに対応するラインに０が書き込まれた後、ビット生成部１１０によって生成されるビット列が１インクリメントされると、上位３ビットが「１００」かつこれより下位ビットがすべて０のビット列が生成されることになる。このため、状態選択部１５０によって状態ビットが「１００」であることが検知され（ステップＳ４０３Ｙｅｓ）、０書込処理が完了する。
【００６６】
次に、図６を参照して、０エラーチェック処理（ステップＳ５００）について説明する。上述した０書込処理完了時には、ビット生成部１１０によって、上位３ビットが「１００」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。
【００６７】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「１００」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「１００」のうち２番目および３番目のビットがインバータ１５１によって反転されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５５のみから１が出力され、ＡＮＤゲート１５２〜１５４、１５６から０が出力される。したがって、ＯＲゲート１５８から読出制御部１７０へタグＲＡＭ２００ａからの読み出しが指示される。
【００６８】
また、ビット列がアドレスビット出力部１３０へ出力されると、上位３ビットを除いたビット列（ここでは、全ビットが０のビット列）がアドレスビット出力部１３０から書込制御部１６０および読出制御部１７０へ出力される。そして、ＯＲゲート１５８から読み出しを指示された読出制御部１７０によって、アドレスビット出力部１３０から出力されたアドレスビットが示すタグＲＡＭ２００ａのラインからエラー検出部１８０への情報の読み出しが実行される。すなわち、ここでは、全ビットが０のアドレスで示されるラインの情報がエラー検出部１８０へ出力される。
【００６９】
エラー検出部１８０へ情報が出力されると、エラー検出部１８０によってパリティビットが用いられることにより、バリッドビット、タイプビット、および物理アドレスビットのエラーチェックが行われる（ステップＳ５０１）。そして、タグＲＡＭ２００ａから出力されたラインの情報にエラーがあるか否かが判定され（ステップＳ５０２）、エラーがあれば完了判定部１９０へその旨が通知される（ステップＳ５０３）。
【００７０】
一方で、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「１００」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ５０４）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。このとき、状態選択部１５０によって、状態ビットが「１０１」となったことが検知され（ステップＳ５０５）、状態ビットが「１０１」となると０エラーチェック処理が終了するが、ここでは、状態ビットが「１００」であるため（ステップＳ５０５Ｎｏ）、引き続き０エラーチェック処理が実行される。
【００７１】
すなわち、最下位ビットが１で残りのビットがすべて０のアドレスビットがアドレスビット出力部１３０から読出制御部１７０へ出力され、読出制御部１７０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインからエラー検出部１８０への情報の読み出しが実行される。そして、エラー検出部１８０によって、読み出されたラインの情報のエラーチェックが行われる。
【００７２】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「１００」である間は、１ずつ大きくなるアドレスビットが示すラインのエラーチェックが行われる。そして、上位３ビットが「１００」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインのエラーチェックが行われたときに、タグＲＡＭ２００ａのすべてのラインに０が書き込まれた場合のエラーチェックが行われたことになる。
【００７３】
タグＲＡＭ２００ａの全ビットが１のアドレスビットに対応するラインのエラーチェックが行われた後、ビット生成部１１０によって生成されるビット列が１インクリメントされると、上位３ビットが「１０１」かつこれより下位ビットがすべて０のビット列が生成されることになる。このため、状態選択部１５０によって状態ビットが「１０１」であることが検知され（ステップＳ５０５Ｙｅｓ）、０エラーチェック処理が完了する。
【００７４】
次に、図７を参照して、１書込処理（ステップＳ６００）について説明する。上述した０エラーチェック処理完了時には、ビット生成部１１０によって、上位３ビットが「１０１」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。
【００７５】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「１０１」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「１０１」のうち２番目のビットのみがインバータ１５１によって反転されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５３のみから１が出力され、ＡＮＤゲート１５２、１５４〜１５６から０が出力される。したがって、ＯＲゲート１５７から書込制御部１６０へタグＲＡＭ２００ａへの書き込みが指示されるとともに、ＡＮＤゲート１５３から書込制御部１６０へ１が出力されることから、タグＲＡＭ２００ａへ１が書き込まれることになる。
【００７６】
一方で、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「１０１」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ６０２）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。このとき、状態選択部１５０によって、状態ビットが「１１０」となったことが検知され（ステップＳ６０３）、状態ビットが「１１０」となると１書込処理が終了するが、ここでは、状態ビットが「１０１」であるため（ステップＳ６０３Ｎｏ）、引き続き１書込処理が実行される。
【００７７】
すなわち、最下位ビットが１で残りのビットがすべて０のアドレスビットがアドレスビット出力部１３０から書込制御部１６０へ出力され、書込制御部１６０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインに１が書き込まれる。
【００７８】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「１０１」である間は、１ずつ大きくなるアドレスビットが示すラインに１が書き込まれる。そして、上位３ビットが「１０１」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインに１が書き込まれたときに、タグＲＡＭ２００ａのすべてのラインに１が書き込まれたことになる。
【００７９】
タグＲＡＭ２００ａの全ビットが１のアドレスビットに対応するラインに１が書き込まれた後、ビット生成部１１０によって生成されるビット列が１インクリメントされると、上位３ビットが「１１０」かつこれより下位ビットがすべて０のビット列が生成されることになる。このため、状態選択部１５０によって状態ビットが「１１０」であることが検知され（ステップＳ６０３Ｙｅｓ）、１書込処理が完了する。
【００８０】
次に、図８を参照して、１エラーチェック処理（ステップＳ７００）について説明する。上述した１書込処理完了時には、ビット生成部１１０によって、上位３ビットが「１１０」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。
【００８１】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「１１０」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「１１０」のうち３番目のビットのみがインバータ１５１によって反転されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５６のみから１が出力され、ＡＮＤゲート１５２〜１５５から０が出力される。したがって、ＯＲゲート１５８から読出制御部１７０へタグＲＡＭ２００ａからの読み出しが指示される。
【００８２】
また、ビット列がアドレスビット出力部１３０へ出力されると、上位３ビットを除いたビット列（ここでは、全ビットが０のビット列）がアドレスビット出力部１３０から書込制御部１６０および読出制御部１７０へ出力される。そして、ＯＲゲート１５８から読み出しを指示された読出制御部１７０によって、アドレスビット出力部１３０から出力されたアドレスビットが示すタグＲＡＭ２００ａのラインからエラー検出部１８０への情報の読み出しが実行される。すなわち、ここでは、全ビットが０のアドレスで示されるラインの情報がエラー検出部１８０へ出力される。
【００８３】
エラー検出部１８０へ情報が出力されると、エラー検出部１８０によってパリティビットが用いられることにより、バリッドビット、タイプビット、および物理アドレスビットのエラーチェックが行われる（ステップＳ７０１）。そして、タグＲＡＭ２００ａから出力されたラインの情報にエラーがあるか否かが判定され（ステップＳ７０２）、エラーがあれば完了判定部１９０へその旨が通知される（ステップＳ７０３）。
【００８４】
一方で、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「１１０」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ７０４）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。このとき、状態選択部１５０によって、状態ビットが「１１１」となったことが検知され（ステップＳ７０５）、状態ビットが「１１１」となると１エラーチェック処理が終了するが、ここでは、状態ビットが「１１０」であるため（ステップＳ７０５Ｎｏ）、引き続き１エラーチェック処理が実行される。
【００８５】
すなわち、最下位ビットが１で残りのビットがすべて０のアドレスビットがアドレスビット出力部１３０から読出制御部１７０へ出力され、読出制御部１７０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインからエラー検出部１８０への情報の読み出しが実行される。そして、エラー検出部１８０によって、読み出されたラインの情報のエラーチェックが行われる。
【００８６】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「１１０」である間は、１ずつ大きくなるアドレスビットが示すラインのエラーチェックが行われる。そして、上位３ビットが「１１０」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインのエラーチェックが行われたときに、タグＲＡＭ２００ａのすべてのラインに１が書き込まれた場合のエラーチェックが行われたことになる。
【００８７】
タグＲＡＭ２００ａの全ビットが１のアドレスビットに対応するラインのエラーチェックが行われた後、ビット生成部１１０によって生成されるビット列が１インクリメントされると、上位３ビットが「１１１」かつこれより下位ビットがすべて０のビット列が生成されることになる。このため、状態選択部１５０によって状態ビットが「１１１」であることが検知され（ステップＳ７０５Ｙｅｓ）、１エラーチェック処理が完了する。
【００８８】
次に、図９を参照して、初期化処理（ステップＳ８００）について説明する。上述した１エラーチェック処理完了時には、ビット生成部１１０によって、上位３ビットが「１１１」かつこれより下位ビットがすべて０のビット列が生成される。このビット列は、状態ビット出力部１２０、アドレスビット出力部１３０、および完了判定部１９０へ出力される。ここでは、ビット列のすべてのビットが１ではないので、完了判定部１９０によって初期化完了と判定されることはない。
【００８９】
ビット列が状態ビット出力部１２０へ出力されると、上位３ビット「１１１」が状態ビット出力部１２０から状態選択部１５０へ出力され、それぞれのビットまたはインバータ１５１によって反転されたビットがＡＮＤゲート１５２〜１５６へ入力される。ここでは状態ビット「１１１」のすべてのビットが反転されずにそのまま入力されることにより、ＡＮＤゲートへの入力がすべて１となるため、ＡＮＤゲート１５４のみから１が出力され、ＡＮＤゲート１５２、１５３、１５５、１５６から０が出力される。したがって、ＯＲゲート１５７から書込制御部１６０へタグＲＡＭ２００ａへの書き込みが指示されるとともに、ＡＮＤゲート１５３から書込制御部１６０へ０が出力されることから、タグＲＡＭ２００ａへ０が書き込まれることになる。このとき、上述したように、ＡＮＤゲート１５４から書込制御部１６０へ直接１が出力されるようにしておき、０書込処理と初期化処理を区別した書き込みを行うようにしても良い。
【００９０】
また、ビット列がアドレスビット出力部１３０へ出力されると、上位３ビットを除いたビット列（ここでは、全ビットが０のビット列）がアドレスビット出力部１３０から書込制御部１６０および読出制御部１７０へ出力される。そして、ＯＲゲート１５７から書き込みを指示された書込制御部１６０によって、アドレスビット出力部１３０から出力されたアドレスビットが示すタグＲＡＭ２００ａのラインが無効化される（ステップＳ８０１）。すなわち、ここでは、全ビットが０のアドレスで示されるラインのバリッドビットに０が書き込まれる。なお、バリッドビット以外のタイプビットおよび物理アドレスビットにも０が書き込まれるようにしても良い。
【００９１】
この初期化処理の過程においては、完了判定部１９０によって、状態ビットがビット生成部１１０によって生成されるビット列の全ビットが１となったことが検知され（ステップＳ８０２）、ビット列の全ビットが１となると最終的な故障の有無が判断されるが、ここでは、状態ビットは「１１１」であるがアドレスビットの全ビットが１ではないため（ステップＳ８０２Ｎｏ）、引き続きラインの無効化が行われる。
【００９２】
すなわち、インクリメント部１４０からは生成するビットを１インクリメントするよう指示が出され、ビット生成部１１０によって、上位３ビットが「１１１」かつ最下位ビットが１で残りのビットがすべて０のビット列が生成される（ステップＳ８０３）。そして、上述したのと同様に、状態ビットが状態選択部１５０へ出力され、アドレスビットが書込制御部１６０および読出制御部１７０へ出力される。そして、書込制御部１６０によって、タグＲＡＭ２００ａのアドレスビットに対応するラインが無効化される。
【００９３】
以降、ビット生成部１１０によって生成されるビット列が１ずつインクリメントされながら、上位３ビットが「１１１」である間は、１ずつ大きくなるアドレスビットが示すラインに１が書き込まれる。そして、上位３ビットが「１１１」かつこれより下位ビットがすべて１のビット列がビット生成部１１０によって生成され、全ビットが１のアドレスビットに対応するラインが無効化されたときに、タグＲＡＭ２００ａのすべてのラインが無効化され初期化されたことになる。
【００９４】
さらに、この時点で、ビット生成部１１０によって生成されたビット列の全ビットが１となるため、完了判定部１９０によってタグＲＡＭ２００ａの初期化が完了したか否かが判定される。すなわち、上述の０エラーチェック処理（ステップＳ５００）および１エラーチェック処理（ステップＳ７００）において、エラー検出部１８０からエラーがあった旨が通知されたか否かが判断され（ステップＳ８０４）、エラーの通知がなければ（ステップＳ８０４Ｎｏ）、タグＲＡＭ２００ａの初期化が完了したと判定され（ステップＳ８０５）、完了判定部１９０からＳＶＰ３００へ初期化完了が通知される。また、エラーの通知があれば（ステップＳ８０４Ｙｅｓ）、タグＲＡＭ２００ａに故障があると判定され（ステップＳ８０６）、完了判定部１９０からＳＶＰ３００へタグＲＡＭ２００ａに故障がある旨が通知される。そして、タグＲＡＭ２００ａに故障がある場合は、ＳＶＰ３００によって、故障がある旨のメッセージがユーザへ通知されるなどの処理が行われる。
【００９５】
以上のように、本実施の形態によれば、プログラムによる診断やメインメモリへのアクセスを行うことなく、ハードウェアによって、タグＲＡＭの全ラインへの０の書き込みと全ラインの読み出しおよびエラーチェックとを行い、その後、タグＲＡＭの全ラインへの１の書き込みと全ラインの読み出しおよびエラーチェックとを行う。このため、搭載されるメインメモリのサイズに関わらず、キャッシュ内のＲＡＭの全ビットをより容易かつ高速に診断することができる。
【００９６】
なお、上記実施の形態において、パイプライン制御が行われている場合は、０書込処理、０エラーチェック処理、１書込処理、１エラーチェック処理、および初期化処理のそれぞれの処理に先立って、例えば図示しないパイプライン制御部へ従来のＲＡＭ初期化時と同様の無効化要求を行い、この無効化要求がパイプラインのプライオリティを獲得した際に処理を実行するようにすれば良い。
【００９７】
また、上記実施の形態においては、１書込処理よりも０書込処理を先に実行するものとしたが、１書込処理を先に実行するようにしても良い。この場合、０書込処理が後に実行されることから、初期化処理が不要となり、処理の状態が４つとなって状態ビットを２ビットにすることもできる。なお、上記実施の形態における１書込処理および０書込処理は、従来ＲＡＭの初期化のみに使用されていた初期化回路を流用して実行が可能な処理であるため、ＲＡＭの診断を行うために追加される回路の規模は小さくて済む。このため、本発明のＲＡＭ診断装置による回路規模の増大は最低限に抑制される。
【００９８】
さらに、上記実施の形態においては、０書込処理および１書込処理として、タグＲＡＭのすべてのラインに０または１を一斉に書き込むものとしたが、タグＲＡＭのすべてのラインのすべてのビットを診断するためには、診断動作全体の間に全ビットのそれぞれについて０と１の両方が書き込まれれば良いため、１回目の書込処理と２回目の書込処理で反転した任意のデータパターンを書き込み、それぞれの書込処理後にエラーチェック処理を行うようにしても良い。
【００９９】
また、タグＲＡＭのみの診断を行うのではなく、ＴＬＢ−ＲＡＭおよびデータＲＡＭにも同様の診断を行い、ＲＡＭによってエラーを通知する信号を変えることにより、どのＲＡＭが故障しているか特定することができる。
【産業上の利用可能性】
【０１００】
本発明は、搭載されるメインメモリのサイズに関わらず、ＲＡＭの全ビットをより容易かつ高速に診断する場合に適用できる。
【図面の簡単な説明】
【０１０１】
【図１】図１は、本発明の一実施の形態に係る情報処理装置の要部構成を示すブロック図である。
【図２】図２は、タグＲＡＭに登録される情報の一例を示す図である。
【図３】図３は、一実施の形態に係るＲＡＭ診断装置の内部構成を示すブロック図である。
【図４】図４は、一実施の形態に係るＲＡＭ診断動作を示すフロー図である。
【図５】図５は、一実施の形態に係る０書込処理を示すフロー図である。
【図６】図６は、一実施の形態に係る０エラーチェック処理を示すフロー図である。
【図７】図７は、一実施の形態に係る１書込処理を示すフロー図である。
【図８】図８は、一実施の形態に係る１エラーチェック処理を示すフロー図である。
【図９】図９は、一実施の形態に係る初期化処理を示すフロー図である。
【符号の説明】
【０１０２】
１１０  ビット生成部
１２０  状態ビット出力部
１３０  アドレスビット出力部
１４０  インクリメント部
１５０  状態選択部
１５１  インバータ
１５２、１５３、１５４、１５５、１５６  ＡＮＤゲート
１５７、１５８  ＯＲゲート
１６０  書込制御部
１７０  読出制御部
１８０  エラー検出部
１９０  完了判定部
【国際調査報告】
2007097001.tif 000012
2007097001.tif 000013