(57)【特許請求の範囲】
【請求項１】
ファームウェアを格納する制御記憶装置と、前記ファームウェアにより制御される制御装置とを備える半導体集積回路装置であって、
前記制御記憶装置は、
前記ファームウェアを複数のブロックに分割して格納し、前記ブロック単位の冗長性を有する複数の冗長メモリと、
前記各ブロックに格納されたデータの有効性を示すエラー情報を前記ブロック毎に保持するエラー情報保持手段と、
を備え、
前記制御装置は、
前記各ブロックに格納されたデータの読み出しを制御する読み出し制御手段と、
前記各ブロックに格納されたデータの有効性を判定し、前記エラー情報を生成するチェック処理を行うエラー検出手段と、
を備え、
前記エラー検出手段は、前記読み出し制御手段が通常の運用時における前記制御装置の動作を規定する通常運用データを読み出す前に、エラーが検出されるか否かに関わらず、前記通常運用データを格納する全ての前記冗長メモリの前記ブロックに対して連続的に前記チェック処理を行い、当該チェック処理により取得された前記エラー情報を前記エラー情報保持手段に保持させ、
前記読み出し制御手段は、前記エラー情報保持手段に保持された前記エラー情報に基づいて、エラーが検出された前記ブロックに冗長構成的に対応する健全な前記ブロックが存在するか否かを判定し、当該健全なブロックが存在する場合には、前記通常運用データの読み出しを行う、
半導体集積回路装置。
【請求項２】
ブロック単位の冗長性を有する複数の冗長メモリを備え、制御装置を制御するファームウェアを前記各ブロックに分割して格納する制御記憶装置の制御方法であって、
通常の運用時における前記制御装置の動作を規定する通常運用データを、前記ブロックから前記制御装置へ読み出すステップと、
前記通常運用データを読み出す前に、エラーが検出されるか否かに関わらず、前記通常運用データを格納する全ての前記冗長メモリの前記ブロックに対して連続的に前記通常運用データの有効性を判定するステップと、
前記有効性の判定結果を示すエラー情報を前記ブロック毎に保持するステップと、
前記保持された前記エラー情報に基づいて、エラーが検出された前記ブロックに冗長構成的に対応する健全な前記ブロックが存在するか否かを判定し、当該健全なブロックが存在する場合には、前記通常運用データの読み出し行うステップと、
を備える制御記憶装置の制御方法。
【請求項３】
ブロック単位の冗長性を有する複数の冗長メモリを備え、制御装置を制御するファームウェアを前記各ブロックに分割して格納する制御記憶装置の制御プログラムであって、
前記制御装置に、
通常の運用時における前記制御装置の動作を規定する通常運用データを、前記ブロックから前記制御装置へ読み出す処理と、
前記通常運用データを読み出す前に、エラーが検出されるか否かに関わらず、前記通常運用データを格納する全ての前記冗長メモリの前記ブロックに対して連続的に前記通常運用データの有効性を判定する処理と、
前記有効性の判定結果を示すエラー情報を前記ブロック毎に保持する処理と、
前記保持された前記エラー情報に基づいて、エラーが検出された前記ブロックに冗長構成的に対応する健全な前記ブロックが存在するか否かを判定し、当該健全なブロックが存在する場合には、前記通常運用データの読み出し行う処理と、
を実行させる制御記憶装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコード等を格納する制御記憶装置を備える半導体集積回路装置に関し、特に冗長化された制御記憶装置の制御に関するものである。
【背景技術】
【０００２】
図４は、従来の制御記憶装置１０１の構成及び動作を模式的に示している。制御記憶装置１０１は、冗長メモリＡ２０１及び冗長メモリＢ２０２を備えている。両冗長メモリ２０１，２０２には、プロセッサの一部を構成する制御装置を制御するファームウェア等が格納される。両冗長メモリ２０１，２０２の記憶領域は、複数のブロックから構成され、上記ファームウェア等のデータは、各ブロックに分割された状態で格納される。
【０００３】
図中、データエントリＡ１〜Ａｎ〜，Ｂ１〜Ｂｎ〜は、各ブロックに付された識別情報である。両冗長メモリ２０１，２０２は、同一のブロック構成を有している。本例においては、データエントリＡ１，Ａ２，〜，Ａｎ，〜とデータエントリＢ１，Ｂ２，〜，Ｂｎ，〜とが、それぞれ冗長構成的に対応している。
【０００４】
冗長メモリＡ２０１及び冗長メモリＢ２０２に格納されるファームウェアには、制御装置の通常の運用時における動作を規定するデータ（通常運用データ）、起動時の動作のみを規定するデータ等、様々なものが含まれる。このような冗長メモリ２０１，２０２に格納されるデータは、通常、制御装置に読み出される前にその有効性がチェックされ、エラーのあるデータは制御装置に読み出されないようになされている。
【０００５】
上記チェック処理は、ハードウェア（制御記憶装置１０１）自身がチェック機構を持たない場合には、ファームフェアにより制御装置を介して行われる。このファームウェアによるチェック処理としては、通常運用データの読み出しを開始する前に、一度だけチェックサムにより行う方法等がある。両冗長メモリ２０１，２０２に使用される記憶媒体は、通常、アクセス速度が遅い不揮発性メモリであるため、常時チェックや演算負荷の大きいチェック処理は不向きである。
【０００６】
図５は、上記のような制御記憶装置１０１の動作を例示している。先ず、冗長メモリＡ２０１の各ブロックを昇順にチェックし（Ｓ１０１）、エラーがあるか否かを判定する（Ｓ１０２）。ステップＳ１０２において、エラーがないと判定された場合（Ｎ）には、当該チェック処理の対象となった冗長メモリＡ２０１を使用可能と判定し（Ｓ１０５）、通常の運用（通常運用データの読み出し等）を開始する（Ｓ１０６）。
【０００７】
一方、ステップＳ１０２において、エラーがあると判定された場合（Ｙ）には、当該チェック処理の対象を冗長メモリＢ２０２に切り替え（Ｓ１０３）、エラーがあるか否かを判定する（Ｓ１０４）。ステップＳ１０４において、エラーがないと判定された場合（Ｎ）には、当該チェック処理の対象となった冗長メモリＢ２０２を使用可能と判定し（Ｓ１０５）、通常の運用を開始する（Ｓ１０６）。一方、ステップＳ１０４において、エラーがあると判定された場合（Ｙ）には、冗長メモリＡ２０１及び冗長メモリＢ２０２を共に使用不可能と判定し（Ｓ１０７）、運用を中止する（Ｓ１０８）。
【０００８】
また、他の先行技術として、下記特許文献１及び特許文献２が開示されている。特許文献１に開示される記憶部の冗長化方法は、記憶部への書き込みを制御する制御部に異常が生じた場合でも両系の記憶部（０系記憶部と１系記憶部）の既存データ（正常データ）が同時に破壊されないようにすることを課題とするものであり、ブロック単位で冗長化された両記憶部に交互にデータを書き込むことにより、両系記憶部に対して同一のタイミングでデータが書き込まれないようにするものである。当該方法においては、各ブロックにユーザデータを書き込む際に、ＣＲＣ(Cyclic Redundancy Check)等の検査が行われ、ブロック毎にデータの正常性を示す誤り検出情報が書き込まれる（同文献段落００３３−００３６等参照）。
【０００９】
特許文献２に係るディスクアレイ装置は、データを格納する複数のディスク装置、冗長情報として例えばパリティを格納する１台のディスク装置、及び予備機として待機状態にある少なくとも１台のディスク装置を備えるものである。データ記録用又はパリティ記録用のディスク装置に故障が生ずると、予備のディスク装置が故障したディスク装置の代わりに割り当てられてデータの修復が行われ、予備のディスク装置が本来のデータ記録用ディスク装置として運用される。これにより、故障が修復した段階で予備のディスク装置からデータを書き戻す必要がなくなり、予備のディスク装置に対するデータ修復が完了した段階で通常の処理に戻ることができるとされている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平９−２６３０２６号公報
【特許文献２】特開平６−１１９１２５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記図４，５に係る制御記憶装置１０１においては、上記チェック処理により例えば冗長メモリＡ２０１のデータエントリＡ１と冗長メモリＢ２０２のデータエントリＢｎとにエラーが検出された場合には、両冗長メモリ２０１，２０２が使用不可能となる（Ｓ１０７）。しかしながら、両冗長メモリ２０１，２０２のブロック構成においては、データエントリＡ１とデータエントリＢ１とが対応し、データエントリＡｎとデータエントリＢｎとが対応している。従って、データエントリＡ１に替わってデータエントリＢ１を利用すると共に、データエントリＢｎに替わってデータエントリＡｎを利用することにより、通常の運用を行うことが可能である。このように、上記のような制御記憶装置１０１は、自らが備える冗長機能を十分に発揮できないものであった。
【００１２】
また、特許文献１に係る方法においては、ＣＲＣ等のチェック処理がユーザデータの書き込みの際に行われる。しかしながら、上記のような通常運用データの読み出しに先立って行われるチェック処理については、如何なる手段を講じるのか不明である。従って、制御記憶装置自体にエラーチェック機構を備えることが必須になるものと予想される。
【００１３】
そこで、本発明は、ブロック単位で構築された冗長構成の利点を最大限利用すると共に、制御記憶装置自体にエラーチェック機構が備えられていない場合であっても対処可能にすることを課題とする。
【課題を解決するための手段】
【００１４】
本発明の第１の態様は、ファームウェアを格納する制御記憶装置と、前記ファームウェアにより制御される制御装置とを備える半導体集積回路装置であって、前記制御記憶装置は、前記ファームウェアを複数のブロックに分割して格納し、前記ブロック単位の冗長性を有する複数の冗長メモリと、前記各ブロックに格納されたデータの有効性を示すエラー情報を前記ブロック毎に保持するエラー情報保持手段とを備え、前記制御装置は、前記各ブロックに格納されたデータの読み出しを制御する読み出し制御手段と、前記各ブロックに格納されたデータの有効性を判定し、前記エラー情報を生成するチェック処理を行うエラー検出手段とを備え、前記エラー検出手段は、前記読み出し制御手段が通常の運用時における前記制御装置の動作を規定する通常運用データを読み出す前に、前記通常運用データを格納する前記ブロックに対して前記チェック処理を行い、当該チェック処理により取得された前記エラー情報を前記エラー情報保持手段に保持させ、前記読み出し制御手段は、前記エラー情報保持手段に保持された前記エラー情報に基づいて、エラーが検出された前記ブロックに冗長構成的に対応する健全な前記ブロックが存在するか否かを判定し、当該健全なブロックが存在する場合には、前記通常運用データの読み出しを行うものである。
【００１５】
本発明の第２の態様は、ブロック単位の冗長性を有する複数の冗長メモリを備え、制御装置を制御するファームウェアを前記各ブロックに分割して格納する制御記憶装置の制御方法であって、通常の運用時における前記制御装置の動作を規定する通常運用データを、前記ブロックから前記制御装置へ読み出すステップと、前記通常運用データを読み出す前に、前記ブロックに格納された前記通常運用データの有効性を判定するステップと、前記有効性の判定結果を示す前記エラー情報を前記ブロック毎に保持するステップと、前記保持されたエラー情報に基づいて、エラーが検出された前記ブロックに冗長構成的に対応する健全な前記ブロックが存在するか否かを判定し、当該健全なブロックが存在する場合には、前記通常運用データの読み出し行うステップとを備えるものである。
【００１６】
本発明の第３の態様は、ブロック単位の冗長性を有する複数の冗長メモリを備え、制御装置を制御するファームウェアを前記各ブロックに分割して格納する制御記憶装置の制御プログラムであって、前記制御装置に、通常の運用時における前記制御装置の動作を規定する通常運用データを、前記ブロックから前記制御装置へ読み出す処理と、前記通常運用データを読み出す前に、前記ブロックに格納された前記通常運用データの有効性を判定する処理と、前記有効性の判定結果を示す前記エラー情報を前記ブロック毎に保持する処理と、前記保持されたエラー情報に基づいて、エラーが検出された前記ブロックに冗長構成的に対応する健全な前記ブロックが存在するか否かを判定し、当該健全なブロックが存在する場合には、前記通常運用データの読み出し行う処理とを実行させるものである。
【発明の効果】
【００１７】
本発明によれば、冗長メモリから通常運用データが読み出される前に、当該通常運用データを格納する冗長メモリの各ブロックに対してチェック処理が行われ、当該チェック処理の結果がブロック毎に設けられたエラー情報保持部に保持され、当該保持されたエラー情報に応じて通常運用データの読み出しが行われる。これにより、複数の冗長メモリにそれぞれエラーブロックが存在する場合であっても、ブロック単位で読み取り先の転換が可能な状況であれば、運用を続行することが可能となる。
【００１８】
また、上記エラー情報保持部に保持されたエラー情報は、通常運用データの読み出し動作を実行するファームウェアにより読み取られるため、上記のようなエラーブロックの転換処理を当該ファームウェアにより行うことが可能となる。これにより、制御記憶装置自体にエラーチェック機構が備えられていない場合であっても、制御装置を制御するファームウェアの調整により対処が可能となる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１に係る半導体集積回路装置の機能的な構成を示す図である。
【図２】実施の形態１に係る制御記憶装置の構成及び動作を模式的に示す図である。
【図３】実施の形態１に係る制御記憶装置における処理の流れを示すフローチャートである。
【図４】従来の制御記憶装置の構成及び動作を模式的に示す図である。
【図５】従来の制御記憶装置における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２０】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１は、実施の形態１に係る半導体集積回路装置１の機能的な構成を示している。半導体集積回路装置１は、制御記憶装置２及び制御装置３を有し、いわゆるプロセッサ等に相当するものである。制御記憶装置２、制御装置３、入出力装置（図示せず）等は、バス４を介して接続されている。
【００２１】
制御記憶装置２は、マスクＲＯＭ、フラッシュメモリ等の不揮発性メモリにより構成され、冗長メモリＡ１１、冗長メモリＢ１２、及びエラー情報保持部１３を有する。両冗長メモリ１１，１２は、制御装置３の動作を規定する各種データ（マイクロコードからなるファームウェア）を格納する。両冗長メモリ１１，１２の記憶領域は、複数のブロックに分割され、上記データは各ブロックに分割されて格納される。両冗長メモリ１１，１２のブロック構成は同一である。即ち、両冗長メモリ１１，１２は、ブロック単位で冗長化されている。
【００２２】
エラー情報保持部１３は、各ブロックに対応して設けられた記憶領域であり、各ブロック内のデータが有効であるか否かを示すエラー情報を保持する。
【００２３】
制御装置３は、ファームウェアに基づいて各種演算処理を実行するハードウェアであり、読み出し制御部２１及びエラー検出部２２として機能する。
【００２４】
読み出し制御部２１は、冗長メモリＡ１１又は冗長メモリＢ１２から、制御装置３が通常の運用時に行う動作を規定するデータ（通常運用データ）の読み出しを制御する。当該読み出し動作は、通常運用データとは異なる（関連するものを含む）ファームウェアにより実行される。
【００２５】
エラー検出部２２は、冗長メモリＡ１１及び冗長メモリＢ１２に格納されているデータについて、ブロック毎にエラーの存否を検出するチェック処理を実行する。チェック処理としては、チェックサム等が好適である。チェック処理は、読み出し制御部２１が通常運用データの読み出しを開始する前に実行される。チェック処理により取得されたエラー情報は、エラー情報保持部１３に保持される。エラー情報保持部１３に保持されたエラー情報は、通常運用データの読み出しを行うファームウェアにより読み取り可能なものである。読み出し制御部２１は、エラー情報保持部１３に保持されたエラー情報に基づいて、通常運用データの読み出し方を決定する。
【００２６】
図２は、制御記憶装置２の構成及び動作を模式的に示している。冗長メモリＡ１１及び冗長メモリＢ１２の記憶領域は、複数のブロック３１に分割されている。図中、データエントリＡ１〜Ａｎ〜，Ｂ１〜Ｂｎ〜は、各ブロック３１に付された識別情報である。両冗長メモリ１１，１２は、同一のブロック構成を有している（又は含んでいる）。即ち、データエントリＡ１，Ａ２，〜，Ａｎ，〜とデータエントリＢ１，Ｂ２，〜，Ｂｎ，〜とが、それぞれ冗長構成的に対応している。
【００２７】
図２中、矢印５１は、エラー検出部２２（図１参照）による各ブロック３１に対するチェック処理を概念的に示している。当該チェック処理は、冗長メモリＡ１１の先頭のデータエントリＡ１から昇順に最後のデータエントリまで行われた後、冗長メモリＢ１２の先頭のデータエントリＢ１から昇順に最後のデータエントリまで行われる。この時、途中でエラーが検出されたか否かに関わらず、上記矢印５１で示す流れが保たれる。本例では、データエントリＡ１とデータエントリＢｎとでエラーが検出されている。
【００２８】
各ブロック３１には、上記エラー情報保持部１３（図１参照）としてのエラービットフィールド４１が設けられている。エラービットフィールド４１には、対応するブロック３１（データエントリ）にエラーが検出された場合には１、エラーが検出されなかった場合には０が入力される。これらのエラービットフィールド４１に保持される情報は、通常運用データの読み出しを行うファームウェアにより読み取り可能である。本例においては、データエントリＡ１，Ｂｎにエラーが検出されているため、これらに対応するエラービットフィールド４１に１が入力され、その他のエラービットフィールド４１には０が入力されている。
【００２９】
上記チェック処理及びエラービットフィールド４１への書き込みは、読み出し制御部２１（図１参照）が通常運用データの読み出しを開始する前に行われる。読み出し制御部２１は、エラービットフィールド４１を参照して通常運用データの読み出し方を決定する。本例においては、データエントリＡ１，Ｂｎのエラービットフィールド４１に１が記載され、データエントリＡ１に対応するデータエントリＢ１のエラービットフィールド４１には０が記載され、データエントリＢｎに対応するデータエントリＡｎのエラービットフィールド４１には０が記載されている。従って、読み出し制御部２１は、矢印５２が示すように、データエントリＡ１に替えてデータエントリＢ１からデータを読み出すと共に、矢印５３が示すように、データエントリＢｎに替えてデータエントリＡｎからデータを読み出す。これにより、冗長メモリＡ１１及び冗長メモリＢ１２の両方にエラーブロックがある場合であっても、エラーブロックに対応するブロックにエラーがなければ、正常な運用が可能となる。
【００３０】
図３は、上記制御記憶装置２における処理の流れを示している。読み出し制御部２１による通常運用データの読み出しに先立ち、エラー検出部２２による冗長メモリＡ１１及び冗長メモリＢ１２のチェックが行われる。
【００３１】
先ず、冗長メモリＡ１１の各データエントリに対して上述のように昇順にチェックを行い（Ｓ１）、エラーの有無を判定する（Ｓ２）。ステップＳ２において、エラーが発生したと判定された場合（Ｙ）には、対応するエラービットフィールドに１をセットする（Ｓ３）。その後、冗長メモリＡ１１の全てのデータエントリについてチェックが終了したか否かを判定し（Ｓ４）、終了していない場合（Ｎ）には、ステップＳ１に戻る。また、ステップＳ２において、エラーが発生していないと判定された場合（Ｎ）には、ステップＳ４へ移行する。
【００３２】
ステップＳ４において、冗長メモリＡ１１の全てのデータエントリについてチェックが終了したと判定された場合（Ｙ）には、冗長メモリＢ１２のチェックを開始し（Ｓ５）、各データエントリについてエラーの有無を判定する（Ｓ６）。ステップＳ６において、エラーが発生したと判定された場合（Ｙ）には、対応するエラービットフィールド４１に１をセットする（Ｓ７）。その後、冗長メモリＢ１２の全てのデータエントリについてチェックが終了したか否かを判定し（Ｓ８）、終了していない場合（Ｎ）には、ステップＳ５に戻る。また、ステップＳ６において、エラーが発生していないと判定された場合（Ｎ）には、ステップＳ８へ移行する。
【００３３】
ステップＳ８において、冗長メモリＢ１２の全てのデータエントリについてチェックが終了したと判定された場合（Ｙ）には、読み出し制御部２１は、全てのエラービットフィールド４１の中に１が存在するか否かを判定し（Ｓ９）、１が存在しない場合（Ｎ）には、いずれの冗長メモリ１１，１２も使用可能であると判定し（Ｓ１０）、任意の冗長メモリ（通常は冗長メモリＡ１１）により通常運用データの読み出しを開始する（Ｓ１１）。
【００３４】
一方、ステップＳ９において、エラービットフィールド４１に１が存在すると判定された場合（Ｙ）には、当該１がセットされたデータエントリに対応するデータエントリのエラービットが１であるか否かを判定する（Ｓ１２）。ステップＳ１２において、当該対応するエラービットが１でない場合（Ｎ）には、当該エラービットが１でないデータエントリをデータの読み出し先に転換し（図２中矢印５２，５３参照）（Ｓ１３）、読み出し先を両方の冗長メモリ１１，１２の間で適宜切り替えることにより使用可能であると判定し（Ｓ１０）、通常運用データの読み出しを開始する（Ｓ１１）。
【００３５】
一方、ステップＳ１２において、１がセットされたデータエントリに対応するデータエントリのエラービット１である場合（Ｙ）には、いずれの冗長メモリ１１，１２も使用不可能と判定し（Ｓ１４）、運用を中止する（Ｓ１５）。
【００３６】
以上のように、本実施の形態に係る半導体集積回路装置１においては、冗長メモリ１１，１２から通常運用データが読み出される前に、冗長メモリ１１，１２の各ブロック３１に対してチェック処理が行われ、当該チェック処理の結果がブロック３１毎に保持され、当該保持されたエラー情報に応じて通常運用データの読み出しが行われる。これにより、両冗長メモリ１１，１２にそれぞれエラーブロックが存在する場合であっても、ブロック（データエントリ）単位で読み取り先の転換が可能な状況であれば、運用を続行することができる。
【００３７】
また、上記エラービットフィールド４１に保持されたエラー情報は、通常運用データの読み出し動作を実行するファームウェアにより読み取られるため、上記のようなエラーブロックの転換処理を当該ファームウェアにより行うことが可能となる。従って、制御記憶装置２自体にエラーチェック機構が備えられていない場合であっても、制御装置３を制御するファームウェアの調整により対処することが可能となる。
【００３８】
尚、本発明は上記実施の形態に限られるものではなく、趣旨を逸脱しない範囲で適宜変更することが可能なものである。例えば、上記実施の形態においては、冗長メモリの数が２つである場合を示したが、３つ以上であっても、本願発明の趣旨に基づいて同様の効果を有する半導体集積回路装置を構成することが可能である。
【符号の説明】
【００３９】
１  半導体集積回路装置
２  制御記憶装置
３  制御装置
４  バス
１１  冗長メモリＡ
１２  冗長メモリＢ
１３  エラー情報保持部
２１  読み出し制御部
２２  エラー検出部
３１  ブロック
４１  エラービットフィールド（エラー情報保持部）
【図１】
0005641566.tif 000002
【図２】
0005641566.tif 000003
【図３】
0005641566.tif 000004
【図４】
0005641566.tif 000005
【図５】
0005641566.tif 000006