説明

情報処理装置、該装置用のROMイメージ生成装置、および転送装置

【課題】メインプログラムをNAND型フラッシュメモリに格納する情報処理装置において、ブートストラッププログラムをNOR型フラッシュメモリに格納すると、システムのコストが高くなる。
【解決手段】電源投入後、転送装置14は、第1の記憶装置11に格納された、第1の誤り検査符号114付きのブートストラッププログラム111を検出し、誤り検出/訂正処理を施して第2の記憶装置12に転送する。転送が正常に完了した場合、CPU10は、第2の記憶装置12上のブートストラッププログラム111を実行することにより、第2の誤り検査符号115付きのメインプログラム112に誤り検出/訂正処理を施して第3の記憶装置13に転送し、第3の記憶装置13上のメインプログラム112に分岐する。これにより、NOR型フラッシュメモリを使用せずに、システムブートを行える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NAND型フラッシュメモリのように、不良ブロックを含み、読み出し後に誤り検出/訂正処理を必要とする記憶装置に格納されたプログラムを用いてシステムブートを行う情報処理装置に関する。
【背景技術】
【0002】
フラッシュメモリは、大きくNOR型とNAND型に分類される。NOR型フラッシュメモリは、1バイト単位でランダムアクセスできるという長所を有する一方で、NAND型フラッシュメモリに比べて高価で集積度が低いという短所を有している。これに対して、NAND型フラッシュメモリは、一定の割合以下であれば、不良ブロックを含むことが容認されたメモリである。このため、NAND型フラッシュメモリに読み書きを行うときには、不良ブロックの位置を管理しながら読み書きを行う必要がある。NAND型フラッシュメモリは、シーケンシャルにしかアクセスできず、読み出し後に誤り検出/訂正処理を必要とするという短所を有する一方で、NOR型フラッシュメモリに比べて安価で集積度が高いという長所を有している。
【0003】
NAND型フラッシュメモリのように、不良ブロックを含み、読み出し後に誤り検出/訂正処理を必要とする記憶装置(以下、低信頼性メモリという)に格納されたプログラムを実行するために、従来から、次のような方法が行われてきた。従来の方法では、低信頼性メモリに加えて、マスクROMやNOR型フラッシュメモリのように、不良ブロックを含まず、誤り検出/訂正処理を必要としない記憶装置(以下、高信頼性メモリという)が使用される。低信頼性メモリには、誤り検査符号を付与したメインプログラムが格納され、高信頼性メモリには、メインプログラムの転送機能を含んだ初期プログラムが格納される。システムのCPUは、リセット解除後、高信頼性メモリに格納された初期プログラムに従い、メインプログラムを低信頼性メモリからRAMに転送する。メインプログラムの転送が完了した後、CPUは、RAM上のメインプログラムに分岐し、その後はRAM上のメインプログラムを実行する。
【0004】
また、初期プログラムはそれほど高速に実行する必要がないため、低速な記憶装置に格納されていてもよいという観点から、初期プログラムを格納するために高信頼性メモリを使用せず、NAND型フラッシュメモリに格納された初期プログラムを用いてシステムブートを行う方法も知られている(例えば、特許文献1参照。)。この方法では、NAND型フラッシュメモリに格納された初期プログラムは、電源投入時に、転送回路によってスタティックRAMなどに転送される。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2002−55822号公報(第6頁、第6図)
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記文献に記載された方法では、ブートストラッププログラムやドライバなどを含む初期プログラムをスタティックRAMなどに転送する際に、誤り検出/訂正処理は行われていない。このため、読み出した初期プログラムが誤っていた場合には、システムブートを正常に行えなくなる。また、スタティックRAMは他の記憶装置よりも高価であるため、初期プログラムのサイズが大きくなると、システム全体のコストが高くなる。
【0007】
それ故に、本発明は、初期プログラムを格納するために高信頼性メモリを使用することなく、システムブートを安定的に行える情報処理装置を提供することを第1の目的とする。
また、上記情報処理装置に含まれる記憶装置として使用されるメモリに書き込むためのROMイメージを生成するROMイメージ生成装置を提供することを第2の目的とする。
また、上記情報処理装置に含まれる転送装置を提供することを第3の目的とする。
【課題を解決するための手段】
【0008】
本発明の第1の情報処理装置は、CPUと、CPUによって実行されるプログラムとして、第1の検査符号付きのブートストラッププログラムと、第1の検査符号とは異なる方法で求めた第2の検査符号付きのメインプログラムとを格納する不揮発性の第1の記憶装置と、第1の記憶装置から読み出したプログラムを格納する揮発性の第2の記憶装置と、第1の記憶装置に格納されたプログラムを読み出す転送装置であって、システムブート時に、ブートストラッププログラムを第1の記憶装置から読み出し、第1の検査符号に基づく誤り検出/訂正処理を施して、第2の記憶装置に転送する転送装置とを備える。
本発明のROMイメージ生成装置は、複数のデータに基づき、不良ブロックを含む記憶装置に書き込むためのROMイメージを生成するROMイメージ生成装置であって、書き込み対象の記憶装置に含まれる不良ブロックの位置情報を保持する不良ブロック情報保持部と、ブートストラッププログラムまたはメインプログラムのいずれかに応じて検査符号の種類を管理する符号情報管理部と、ブートストラッププログラムおよびメインプログラムを、ブートストラッププログラムまたはメインプログラムのいずれかに応じて検査符号を付与できる形式に変換するイメージ整形部と、前記不良ブロック情報保持部に保持された位置情報を参照して、前記イメージ整形部で整形された複数のデータを不良ブロックの位置を避けて1つのデータに合成し、合成後のデータに対して、ブートストラッププログラムまたはメインプログラムのいずれかに応じて検査符号を付与する書き込みイメージ生成部とを備える。
本発明の転送装置は、記憶装置に格納されたプログラムを読み出す転送装置であって、システムブート時に第1の検査符号付きの第1のプログラムを第1の記憶装置から読み出し、前記第1の検査符号に基づく誤り検出/訂正処理を施して、第2の記憶装置に転送する。
【発明の効果】
【0009】
本発明の情報処理装置、及び転送装置によれば、初期プログラムを格納するためにROMなどの高信頼性メモリを使用することなく、NAND型フラッシュメモリなどの低信頼性メモリに格納された検査符号付きのプログラムを用いて、システムブートを安定的に行うことができる。また、本発明のROMイメージ生成装置によれば、情報処理装置に含まれる第1の記憶装置として使用されるメモリに書き込むためのROMイメージを生成することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の第1の実施形態に係る情報処理装置の構成を示す図
【図2】NAND型フラッシュメモリにおけるブロックとページの関係を示す図
【図3】図1に示す情報処理装置におけるブートストラッププログラムと第1の誤り検査符号のフォーマットを示す図
【図4】図1に示す情報処理装置における不良ブロック情報テーブルと第3の誤り検査符号のフォーマットを示す図
【図5】図1に示す情報処理装置におけるCPU制御装置の構成例を示す図
【図6】図1に示す情報処理装置におけるCPU制御装置の構成例を示す図
【図7】図1に示す情報処理装置の転送装置の動作を示すフローチャート
【図8】図1に示す情報処理装置のブートストラッププログラムの構成を示す図
【図9】図1に示す情報処理装置のCPUによるブートストラップ処理を示すフローチャート
【図10】本発明の第1の実施形態の変形例に係る情報処理装置の構成を示す図
【図11】本発明の第2の実施形態に係る情報処理装置の構成を示す図
【図12】図11に示す情報処理装置におけるブートストラッププログラムと第1の誤り検査符号のフォーマットを示す図
【図13】図11に示す情報処理装置の転送装置の動作を示すフローチャート
【図14】本発明の第2の実施形態の変形例に係る情報処理装置の構成を示す図
【図15】本発明の第3の実施形態に係る情報処理装置の構成を示す図
【図16】本発明の第3の実施形態の変形例に係る情報処理装置の構成を示す図
【図17】本発明の第4の実施形態に係る情報処理装置の構成を示す図
【図18】図17に示す情報処理装置のCPUによるブートストラップ処理を示すフローチャート
【図19】本発明の第5の実施形態に係る情報処理装置の構成を示す図
【図20】本発明の第6の実施形態に係るROMイメージ生成装置の構成を示す図
【図21】図20に示すROMイメージ生成装置の整形部出力を示す図
【発明を実施するための形態】
【0011】
以下、図面を参照して、本発明の各実施形態を説明する。なお、各実施形態の構成要素のうち、先に述べた実施形態と同一の構成要素については、同一の参照符号を付して、説明を省略する。
【0012】
(第1の実施形態)
図1は、本発明の第1の実施形態に係る情報処理装置の構成を示す図である。図1に示す情報処理装置1は、CPU10と、第1〜第3の記憶装置11〜13と、転送装置14と、CPU制御装置15とを備えている。
【0013】
CPU10は、情報処理装置1のメインCPUである。CPU10が実行するプログラムは、電源投入前の初期状態では、すべて第1の記憶装置11に格納されている。初期状態における第2および第3の記憶装置12、13の内容は、不定である。第1〜第3の記憶装置11〜13は、データバス16a〜cによって相互に接続されている。電源が投入されると、第1の記憶装置11に格納されたプログラムは、第2および第3の記憶装置12、13に転送される。より詳細には、第1の記憶装置11には初期状態で、初期設定動作を司るブートストラッププログラム(Bootstrap Program :以下、BSPと略称する)111と、メインプログラム112とが格納されており、第2の記憶装置12にはBSP111が転送され、第3の記憶装置13にはメインプログラム112が転送される。CPU制御装置15は、BSP111の転送が完了するまで、CPU10による命令フェッチを抑制する。
【0014】
第1の記憶装置11は、メモリとして正常な機能を果たさない不良ブロックを含み、読み出し時には誤り検出/訂正処理を必要とする、不揮発性の記憶装置を用いて構成される。以下では、第1の記憶装置11は、NAND型フラッシュメモリであるとする。図2は、NAND型フラッシュメモリにおけるブロックとページの関係を示す図である。図2に示すように、NAND型フラッシュメモリの記憶領域は複数のブロックに分割され、各ブロックはさらに複数のページに分割される。例えば、あるNAND型フラッシュメモリでは、1ブロックは8ページで、1ページは512バイトのデータと16バイトの誤り検査符号とを合わせた528バイトで構成される。なお、ブロックサイズおよびページサイズは、NAND型フラッシュメモリの種類によっては、8ページおよび528バイト以外の値となることもある。第1の記憶装置11は不良ブロックを含むので、第1の記憶装置1
1に読み書きを行うときには、不良ブロックを避けて読み書きを行う必要がある。
【0015】
図1に示すように、第1の記憶装置11には、不良ブロック110以外のブロックに、BSP111と、メインプログラム112と、不良ブロック情報テーブル113と、第1〜第3の誤り検査符号114〜116とが格納される。BSP111には、少なくとも、システムブートを行うためのコンフィギュレーションと、第1の記憶装置11に格納されたメインプログラム112を第3の記憶装置13に転送するためのメインプログラム転送ルーチンとが含まれている(後述する図8を参照)。メインプログラム112は、システムブート完了後にCPU10が実行するプログラムである。なお、一般に情報処理装置では、メインプログラム112のサイズは、BSP111よりも大きい。不良ブロック情報テーブル113は、不良ブロックの位置を示すテーブルである(後述する図4を参照)。第1〜第3の誤り検査符号114〜116は、それぞれ、BSP111、メインプログラム112、および不良ブロック情報テーブル113に付与された誤り検査符号である。以下に示すように、第1および第3の誤り検査符号114、116は同じ方法で計算され、第2の誤り検査符号115はこれとは異なる方法で計算される。
【0016】
図3は、BSP111と第1の誤り検査符号114のフォーマットを示す図である。図3において、D[i]は情報ビットを表し、P[i]は誤り検査符号を表す(ただし、iは非負の整数。以下、同じ)。図3に示すように、各アドレスの下位4ビットにはBSP111が格納され、上位4ビットには第1の誤り検査符号114が格納される。より詳細には、BSP111は、先頭から4ビットずつに分割され、アドレスの昇順に各アドレスの下位4ビットに格納される。また、分割後の4ビットに基づき、4ビットの第1の誤り検査符号114が計算され(計算方法は後述)、アドレスの昇順に各アドレスの上位4ビットに格納される。BSP111と第1の誤り検査符号114は、各4ビット、計8ビット単位で処理される。
【0017】
図4は、不良ブロック情報テーブル113と第3の誤り検査符号116のフォーマットを示す図である。図4において、各アドレスの下位4ビットの値0および1は情報ビットを表し、P[i]は誤り検査符号を表す。各アドレスの下位4ビットには不良ブロック情報テーブル113が格納され、上位4ビットには第3の誤り検査符号116が格納される。より詳細には、不良ブロック情報テーブル113には、第1の記憶装置11に含まれる各ブロックが正常か不良かを示す情報が、1ブロックあたり1ビットで格納されている。不良ブロック情報テーブル113は先頭から4ビットずつに分割され、アドレスの昇順に各アドレスの下位4ビットに格納される。また、BSP111と同じ計算方法で、分割後の4ビットに基づき、4ビットの第3の誤り検査符号116が計算され、アドレスの昇順に各アドレスの上位4ビットに格納される。
【0018】
例えば、第1の記憶装置11として、容量が256Mバイトで、ブロックサイズが16KバイトのNAND型フラッシュメモリを使用した場合、総ブロック数は16K個となる。この場合、第1の記憶装置11のいずれかの正常ブロックには、第3の誤り検査符号116を格納する領域を含めて、16Kビットの2倍、すなわち4Kバイトの領域が確保され、確保された4Kバイトの記憶領域には、不良ブロック情報テーブル113と第3の誤り検査符号116が格納される。不良ブロック情報テーブル113には、正常ブロックであれば値0、不良ブロックであれば値1が格納されるとすると、図4に示す不良ブロック情報テーブル113からは、第1の記憶装置11の5番目および12番目のブロックが不良ブロックであることが分かる。
【0019】
NAND型フラッシュメモリには、その種類に応じて、推奨の符号化方式が定められている。例えば、上述した1ページが512バイトのデータと16バイトの誤り検査符号とで構成されているNAND型フラッシュメモリについては、少なくとも、512バイトの
データについて1ビット誤り訂正と2ビット誤り検出を行えるように符号化することが推奨されている。そこで、メインプログラム112は、先頭から512バイトごとに分割され、分割後の512バイトについて、NAND型フラッシュメモリについて推奨されている符号化方式で求めた第2の誤り検査符号115(16バイト)が付与される。
【0020】
なお、第1の記憶装置11に含まれるブロックが正常か不良かは、第1の記憶装置11に書き込みを行う前に、第1の記憶装置11に所定の方法でアクセスすることにより、知ることができる。第1の記憶装置11に書き込みを行うときには、不良ブロックには書き込みを行わず、正常ブロックにのみ書き込みを行う必要がある。以下、BSP111は、第1の記憶装置11に含まれる正常ブロックのうちブロック番号が最も小さい1個以上の連続したブロックに、先頭ページから詰めて格納され、メインプログラム112は、第1の記憶装置11に含まれる正常ブロックのうちBSP111が格納されているブロックより後の1個以上の連続したブロックに、先頭ページから詰めて格納されるものとする。
【0021】
第2の記憶装置12は、特別な初期設定を行うことなく、CPU10と転送装置14の双方からアクセスできる揮発性のメモリである。上述したように、第2の記憶装置12にはBSP111が転送されるので、第2の記憶装置12にはBSP111のサイズより大きい容量を有するメモリが使用される。なお、CPU10が第2の記憶装置12上のBSP111の実行を完了すると、第2の記憶装置12はその役割を失う。したがって、情報処理装置1は、第2の記憶装置12として専用のメモリを備えることに代えて、システムLSIに既に内蔵されているスタティックRAMなどを第2の記憶装置12として使用してもよい。また、以下では説明の便宜上、第2および第3の記憶装置12、13を別々の記憶装置として説明するが、第2および第3の記憶装置12、13は1個の記憶装置の内部に確保された別々の記憶領域であってもよい。この場合、システムブートが完了した後は、第2の記憶装置12のために確保された記憶領域は、例えばワーク用の記憶領域として使用することができる。
【0022】
第3の記憶装置13にはメインプログラム112が転送されるので、第3の記憶装置13には、第2の記憶装置12に比べて大きな容量を有するメモリが使用される。このため、第3の記憶装置13には、ランダムアクセス可能で、ビット単価ができるだけ安い揮発性の記憶装置を使用することが望ましく、例えばSDRAMが使用される。
【0023】
転送装置14は、図1に示すように、転送制御部141と、誤り処理部142と、通知部143とを含んでいる。転送制御部141は、第1の記憶装置11に格納されているBSP111を第2の記憶装置12に自動的に転送する機能と、CPU10からの制御に従い、第1の記憶装置11に格納されているメインプログラム112を読み出す機能とを有する。誤り処理部142は、BSP111が第1の記憶装置11から第2の記憶装置12に転送されるときに、転送されるBSP111に対して、第1の誤り検査符号114に基づく誤り検出/訂正処理を行う。通知部143は、BSP111の転送が正常に完了したときに、その旨を示す転送完了通知信号144をCPU制御装置15に出力する。
【0024】
CPU制御装置15は、通知部143から出力された転送完了通知信号144に基づき、CPU起動制御信号151を出力する。図5および図6は、CPU制御装置15の構成例を示す図である。図5に示す構成では、転送完了通知信号144がアクティブになるまで、CPU制御装置15はCPU10のクロック信号をマスクしており、CPU10は停止している。転送完了通知信号144がアクティブになると、CPU制御装置15はクロック信号のマスクを解除し、CPU10は動作を開始する。図6に示す構成では、転送完了通知信号144がアクティブになるまで、CPU制御装置15はCPU10のリセット信号をそのまま通過させており、CPU10は停止している。転送完了通知信号144がアクティブになると、CPU制御装置15はリセット信号をマスクし、CPU10は動作
を開始する。このようなCPU制御装置15の作用により、転送完了通知信号144がアクティブになるまで、CPU10による命令フェッチは抑制される。
【0025】
以下、転送装置14の詳細を説明する。転送装置14は、電源が投入されると、第1の記憶装置11におけるBSP111の格納位置を求め、求めた格納位置からBSP111を1ページずつ順に読み出して第2の記憶装置12に転送する。より詳細には、電源が投入されると、転送制御部141は、第1の記憶装置11の先頭から順に記憶内容を読み出す。誤り処理部142は、図3に示す8ビットの処理単位ごとに、誤り検出/訂正処理を行う。転送制御部141は、誤り検出/訂正処理後の4ビットのBSP111を所定の転送単位にパッキングし、第2の記憶装置12に転送する。この際、第2の記憶装置12内のデータの転送先は、電源投入後にCPU10が最初に命令をフェッチするアドレスを先頭として、順次更新される。本実施形態では、転送装置14の転送単位を16ビットとし、CPU10が最初に命令をフェッチするアドレスを第2の記憶装置12の先頭アドレスとする。
【0026】
ここで、誤り処理部142における誤り検出/訂正処理について説明する。そもそも、BSP111に付与される第1の誤り検査符号114は、第1の記憶装置11の推奨仕様を満たす符号であれば、いかなる符号であってもよい。例えば、上述した1ページが512バイトのデータと16バイトの誤り検査符号とで構成されているNAND型フラッシュメモリについては、512バイトのデータについて1ビット誤り訂正と2ビット誤り検出を行えるように符号化することが推奨されている。この場合、第1の誤り検査符号114として、512バイト以下の情報ビットに対して1ビット誤り訂正と2ビット誤り検出が可能な符号を選べば、最低限の要求を満たすことができる。
本実施形態では、第1の記憶装置11により多くの欠陥が含まれている場合でも正しくシステムブートを行えるように、第1の誤り検査符号114には、より誤り検出/訂正処理能力の高い符号を使用する。具体的には、第1の誤り検査符号114は、次式(1)に示すように、BSP111に基づき生成行列Gを用いて計算される。なお、以下では、D[0]〜D[3]は4ビットずつに分割されたBSP111を、P[0]〜P[3]はD[0]〜D[3]に付与される第1の誤り検査符号を表し、行列演算における加算は排他的論理和であるとする。
【0027】
【数1】

【0028】
上式(1)によって得られた符号[D[0] D[1] D[2] D[3] P[0]
P[1] P[2] P[3]]のシンドローム[X[0] X[1] X[2] X[3]
]は、次式(2)に示すように、検査行列Hを用いて計算される。
【0029】
【数2】

【0030】
次に、誤り処理部142は、求めたX[3]〜X[0]に応じて、以下に示す処理を行う。ただし、X[3]=α、X[2]=β、X[1]=γ、X[0]=δであるとき、X={αβγδ}と表記する。
(ア)X={0000}のとき:誤りなしと判断し、誤り訂正を行わない。
(イ)X={0101}のとき:D[0]が誤りと判断し、D[0]を反転させる。
(ウ)X={0110}のとき:D[1]が誤りと判断し、D[1]を反転させる。
(エ)X={1001}のとき:D[2]が誤りと判断し、D[2]を反転させる。
(オ)X={1010}のとき:D[3]が誤りと判断し、D[3]を反転させる。
(カ)X={0001}のとき:P[0]が誤りと判断し、誤り訂正を行わない。
(キ)X={0010}のとき:P[1]が誤りと判断し、誤り訂正を行わない。
(ク)X={0100}のとき:P[2]が誤りと判断し、誤り訂正を行わない。
(ケ)X={1000}のとき:P[3]が誤りと判断し、誤り訂正を行わない。
このうち(イ)〜(オ)の場合は、情報ビットに発生した1ビット誤りを訂正する場合であり、(カ)〜(ケ)の場合は、誤り検査符号が1ビット誤っているだけなので、情報ビットを訂正しない場合である。また、Xが上記以外の値をとる場合、誤り処理部142は、訂正不可能な誤りが発生したと判断する。なお、ここで説明した第1の誤り検査符号114の計算方法は一例であり、これ以外の計算方法を使用してもよいことは言うまでもない。
図7は、電源投入後の転送制御部141の動作を示すフローチャートである。転送制御部141は、図7に示す手順に従い、第1の記憶装置11におけるBSP111の格納位置を求め、求めた格納位置からBSP111を1ページずつ順に読み出して第2の記憶装置12に転送する。なお、ここでは、BSP111のサイズは1ブロック以下であるとする。また、変数Bは読み出しブロック番号を表し、変数Pは読み出しページ番号を表す。
【0031】
転送制御部141は、電源が投入されると、まずBとPを0に初期化する(ステップS101)。これにより、第1の記憶装置11内の読み出し位置が、先頭ブロック内の先頭ページに設定される。次に、転送制御部141は、第1の記憶装置11のB番目のブロックのP番目のページを読み出し、第2の記憶装置12の所定のアドレスに転送する(ステップS102)。このとき、誤り処理部142は、転送されるページを所定の処理単位(ここでは、8ビット)に分割し、各処理単位ごとに誤り検出/訂正処理を行う。誤り処理部142は、各処理単位に訂正可能な誤りが含まれていれば、これを訂正し、各処理単位に訂正不可能な誤り(訂正能力を超えた誤り)が含まれていれば、その旨を内部に記憶する。
【0032】
次に、転送制御部141は、PがBSP111のページ数(以下、Mとする)より小さいか否かを判定する(ステップS103)。判定結果がYESである場合には、転送制御部141は、Pに1を加算し(ステップS106)、ステップS102に進む。これにより、ステップS102における転送は、連続してM回実行される。ステップS103の判定結果がNOである場合には、転送制御部141は、ステップS102におけるMページの転送において、訂正不可能な誤りを検出したか否かを判定する(ステップS104)。
判定結果がNOである場合には、転送制御部141は、BSP111の転送は成功したとみなして、処理を終了する。この場合、通知部143は、CPU制御装置15に転送完了通知信号144を出力する。
【0033】
ステップS104の判定結果がYESである場合には、転送制御部141は、Bが検索対象となるブロックの個数(以下、Nとする)より小さいか否かを判定する(ステップS105)。判定結果がNOである場合には、転送制御部141は、BSP111の転送に失敗したとみなして、処理を終了する。ステップS105の判定結果がYESである場合には、転送制御部141は、Bに1を加算し、Pに0を設定して(ステップS107)、ステップS102に進む。このようにして、転送制御部141は、最大N個のブロックについてBSP111を探索する。なお、上記MおよびNの値は、転送装置14で固定されていてもよく、スイッチなどを用いて変更できることとしてもよい。
【0034】
CPU制御装置15は、通知部143から転送完了通知信号144を受けると、BSP111の転送が正常に完了したと認識し、CPU10が動作可能となるようにCPU起動制御信号151を変化させる。これに伴い、CPU10は、第2の記憶装置12から命令フェッチを開始する。これに対して、BSP111の転送が正常に完了しなかった場合は、転送完了通知信号144は出力されず、CPU起動制御信号151も変化せず、CPU10は第2の記憶装置12から命令フェッチを開始しない。なお、CPU制御装置15を用いてCPU10による命令フェッチを制御する方法には、CPU10に供給されるクロック信号を制御する方法(図5)や、CPU10に供給されるリセット信号を制御する方法(図6)などが挙げられる。
【0035】
以下、BSP111の詳細を説明する。BSP111には、システムのコンフィギュレーションを行うためのデータと、メインプログラム転送ルーチンと、不良ブロック情報テーブル113(あるいは、不良ブロック情報テーブル113へのポインタ)が含まれる。メインプログラム112は第1の記憶装置11の正常ブロックに格納されるので、不良ブロック情報テーブル113は、メインプログラム112の第1の記憶装置11における格納位置を表す格納位置情報とも言える。
【0036】
図8は、BSP111の構成を示す図である。図8(a)に示すBSP111は、コンフィギュレーション部117と、メインプログラム転送部118と、不良ブロック情報テーブルポインタ119とを含む。コンフィギュレーション部117には、バスコントローラに設定するデータなど、システムの基本コンフィギュレーションを行うときに必要なデータが含まれる。コンフィギュレーション部117に含まれるデータに基づき、第3の記憶装置13にアクセスするためのメモリコントローラの設定などが行われる。メインプログラム転送部118には、第2の誤り検査符号115に基づく誤り検出/訂正処理を行う誤り処理プログラムを含んだメインプログラム転送ルーチンが含まれる。不良ブロック情報テーブルポインタ119には、不良ブロック情報テーブル113の先頭アドレスが含まれる。
【0037】
あるいは、BSP111は、図8(b)に示すように、不良ブロック情報テーブルポインタ119に代えて、不良ブロック情報テーブル113を含んでいてもよい。図8(b)に示す構成を採用した場合、BSP111のサイズは、図8(a)に示す構成を採用した場合より大きくなる。しかし、BSP111の転送が完了した後は、CPU10は、不良ブロック情報テーブル113にアクセスするときには、第1の記憶装置11ではなく、第2の記憶装置12にアクセスすれば済む。このため、図8(b)に示す構成を採用した場合、メインプログラム112を第3の記憶装置13に転送する処理を高速に行うことができる。
【0038】
図9は、CPU10によるブートストラップ処理を示すフローチャートである。BSP111の転送が完了し、転送完了通知信号144が出力された後、CPU10は、第2の記憶装置12上のBSP111を実行することにより、図9に示す処理を行う。図9では、変数Bは読み出しブロック番号を表し、変数Pは読み出しページ番号を表す。
【0039】
BSP111の転送が完了すると、CPU10は、まず、BSP111のシステムコンフィギュレーション部117に格納されたデータを用いて、システムコンフィギュレーションを行う(ステップS201)。ステップS201では、例えば、第3の記憶装置13にアクセスするために、メモリインターフェイス回路などに各種のパラメータが設定される。
【0040】
次に、CPU10は、BSP111から不良ブロック情報テーブルポインタ119を読み出し、これを用いて、不良ブロック情報テーブル113を第1の記憶装置11から第3の記憶装置13にコピーする(ステップS202)。このとき、転送装置14の誤り処理部142は、第1の記憶装置11から読み出した不良ブロック情報テーブル113に対して、第1の誤り検査符号115に基づく誤り検出/訂正処理を行う。なお、図8(b)に示すBSP111を採用した場合には、不良ブロック情報テーブル113はこの時点で既に第2の記憶装置12に格納されているので、ステップS202の処理は行われない。次に、CPU10は、BSP111を含むブロックの番号をBに設定する(ステップS203)。
【0041】
次に、CPU10は、第3の記憶装置13上の不良ブロック情報テーブルを参照して、次の正常ブロックの番号を求めてBに設定し(ステップS204)、Pに0を設定する(ステップS205)。次に、CPU10は、コピー関数を呼び出すことにより、第1の記憶装置11のB番目のブロックのP番目のページを第3の記憶装置13の所定のアドレスにコピーする(ステップS206)。次に、CPU10は、誤り検出/訂正処理を行う前段階として、ステップS206でコピーしたページについて、シンドロームを計算する(ステップS207)。次に、CPU10は、ステップS207で計算されたシンドロームに基づき、ソフトウェアによる誤り検出/訂正処理を行う(ステップS208)。ステップS208の処理により、読み出したページに含まれていた訂正可能な誤りは訂正される。
【0042】
次に、CPU10は、ステップS208における誤り検出/訂正処理で訂正不可能な誤り(訂正能力を超えた誤り)を発見したか否かを判定する(ステップS209)。判定結果がNOである場合、CPU10は、Pが1ブロックのページ数より小さいか否かを判定する(ステップS210)。判定結果がYESである場合、CPU10は、Pに1を加算して(ステップS212)、ステップS206に進む。ステップS210における判定結果がNOである場合、CPU10は、BがBSP111のブロック数より小さいか否かを判定する(ステップS211)。判定結果がYESである場合、CPU10は、Bに1を加算し、Pに0を設定して(ステップS213)、ステップS204に進む。
【0043】
ステップS211における判定結果がNOである場合、CPU10は、メインプログラム112の転送に成功したとみなす。この場合、CPU10は、第3の記憶装置13上のメインプログラム112に分岐する。これに対して、ステップS209における判定結果がYESである場合、CPU10は、メインプログラム112の転送に失敗したとみなす。この場合、CPU10は、何も処理を行わず、無限ループに入る。
【0044】
このようにCPU10は、第2の記憶装置12上のBSP111を実行することにより、第1の記憶装置11の正常ブロックに格納されているメインプログラム112を第3の記憶装置13に転送した後、メインプログラム112の転送に成功した場合には、第3の
記憶装置13上のメインプログラム112を実行し、メインプログラム112の転送に失敗した場合には、動作を停止する。
【0045】
以上に示すように、情報処理装置1によれば、初期プログラムを格納するためにROMなどの高信頼性メモリを使用することなく、NAND型フラッシュメモリなどの低信頼性メモリに格納された検査符号付きのプログラムを用いて、システムブートを安定的に行うことができる。また、第2の記憶装置に格納されたブートストラッププログラムに従い、第1の記憶装置に格納されたメインプログラムを第2の記憶装置に転送し、第2の検査符号に基づく誤り検出/訂正処理を施すことにより、メインプログラムに対して、ソフトウェアによる複雑な誤り検出/訂正処理を施すことができる。
【0046】
なお、情報処理装置1では、CPU制御装置15を用いてCPU10による命令フェッチを制御することとしたが、図10に示す情報処理装置2のように、データバス16aの調停装置20を用いてCPU10による命令フェッチを制御してもよい。図10において、調停装置20は、第2の記憶装置12にアクセスするために必要となる、データバス16aのアクセス権を調停する。より詳細には、調停装置20は、電源投入後、転送完了通知信号144が出力されるまでは、転送装置14に対してデータバス16aのアクセス権を優先的に与える。BSP111の転送が完了し、転送完了通知信号144が出力されると、調停装置20は、CPU10に対してデータバス16aのアクセス権を優先的に与える。
【0047】
このため、CPU10は、電源投入後、直ちに第2の記憶装置12から命令をフェッチしようとするが、調停装置20の作用により、BSP111の転送が完了するまでデータバス16aのアクセス権を獲得することができず、第2の記憶装置12にアクセスできない。これにより、CPU10による命令フェッチは、BSP111の転送が完了するまで待機させられ、BSP111の転送が完了した後にはじめて可能となる。したがって、情報処理装置2は、情報処理装置1と同じ効果を奏する。
【0048】
また、情報処理装置1では、第1の記憶装置11の先頭のブロックから順にBSP111を検索し、Mページの転送中に訂正不可能な誤りを検出したか否かによって不良ブロックを検出する方法が採用されている。ところが、この方法では、不良ブロックに出荷時の初期値データとして偶然に誤り検出/訂正処理をパスする値が格納されていた場合に、不良ブロックが正常ブロックと誤認識される。この問題を解決するためには、第1の記憶装置11に書き込みを行うときに、不良ブロックには訂正不可能な誤りを有するデータを繰り返し書き込んでおけばよい。これにより、Mページの転送中に確実に訂正不可能な誤りが検出されるので、不良ブロックを正常ブロックと誤認識することを防止することができる。
【0049】
(第2の実施形態)
図11は、本発明の第2の実施形態に係る情報処理装置の構成を示す図である。図11に示す情報処理装置3は、第1の実施形態に係る情報処理装置1(図1)において、転送装置14を転送装置30に置換し、BSP111に照合コード121を追加したものである。情報処理装置3は、照合コード121を用いて、不良ブロックを正常ブロックと誤認識する問題を解決する。
【0050】
転送装置30は、第1の実施形態に係る転送装置14の転送制御部141を転送制御部311に置換した上で、照合コード保持部301と照合コード比較部302とを含む転送データ判定部303を追加したものである。照合コード保持部301には、システムで一意に決定された照合コードが格納される。照合コードとして使用する値に特に制約はないが、他の値と区別するために、特徴的な値(例えば、値が0のビットと値が1のビットが
適宜混在している値)を使用することが望ましい。本実施形態では、例えば、2バイトの照合コード5a3c(16進表現)を使用する。
【0051】
BSP111を第1の記憶装置11に書き込むときには、BSP111には、照合コード保持部301に保持された照合コードと同じ照合コード121が付与される。図12は、図3と同様、照合コード121が付与されたBSP111と第1の誤り検査符号114のフォーマットを示す図である。BSP111は、第1の記憶装置11の1個以上の正常ブロックに複数のページに亘って格納される。BSP111の一部を格納している各ページのデータ(512バイト)の終端4バイトには、照合コード121が誤り検査符号付きで格納される。より詳細には、2バイトの照合コード121は、4ビットずつ4個に分割されて、各ページの終端4バイトの下位4ビットに格納される。また、照合コード121の4ビットごとに上式(1)を用いて4ビットの誤り検査符号が計算され、照合コードの誤り検査符号122として、各ページの終端4バイトの上位4ビットに格納される。例えば、照合コードの値を5a3c(16進表現)とした場合、M[15]=0、M[14]=1、M[13]=0、M[12]=1、P[2047]=1、P[2046]=1、P[2045]=0、P[2044]=0などのようになる。
【0052】
図13は、図7と同様、電源投入後の転送制御部311の動作を示すフローチャートである。転送制御部311は、第1の実施形態に係る転送制御部141と同様、図13に示す手順に従い、第1の記憶装置11におけるBSP111の格納位置を求め、求めた格納位置からBSP111を1ページずつ順に読み出して第2の記憶装置12に転送する。なお、ここでも、BSP111のサイズは1ブロック以下であるとする。また、変数BおよびPの意味は、図7と同じである。
【0053】
転送制御部311は、電源が投入されると、まずBとPを0に初期化する(ステップS301)。次に、転送制御部311は、PがBSP111のサイズMより小さいか否かを判定する(ステップS302)。判定結果がNOである場合には、転送制御部311は、BSP111の転送に成功したとみなして、処理を終了する。この場合、CPU制御装置15は、転送完了通知信号144を出力する。
【0054】
ステップS302の判定結果がYESである場合には、転送制御部311は、第1の記憶装置11のB番目のブロック内のP番目のページを読み出し、第2の記憶装置12の所定のアドレスに転送する(ステップS303)。このとき、誤り処理部142は、図7のステップS102のときと同じ誤り検出/訂正処理を行う。また、照合コード比較部302は、転送されるページのデータ(512バイト)の終端4バイトに格納されている照合コード121と、照合コード保持部301に保持されている照合コード(照合コードの正解値)とを比較する。
【0055】
次に、転送制御部311は、照合コード比較部302において、照合コード121と照合コードの正解値が一致したかを否かを判定する(ステップS304)。判定結果がYESである場合には、転送制御部311は、ステップS303における1ページの転送において、訂正不可能な誤りを検出かしたか否かを判定する(ステップS305)。この判定結果がNOである場合には、転送制御部311は、Pに1を加算し(ステップS307)、ステップS302に進む。
【0056】
ステップS304における判定結果がNOである場合には、転送制御部311は、Bが検索対象のブロック数Nより小さいか否かを判定する(ステップS306)。判定結果がYESである場合には、転送制御部311は、Bに1を加算し、Pに0を設定して(ステップS308)、ステップS302に進む。
【0057】
ステップS305における判定結果がYESである場合、または、ステップS306における判定結果がNOである場合には、転送制御部311は、BSP111の転送に失敗したとみなして、処理を終了する。この場合、CPU制御装置15は、転送完了通知信号144を出力しない。
【0058】
ブートストラッププログラムの転送に成功した場合も失敗した場合も、情報処理装置3は、第1の実施形態に係る情報処理装置1と同じように動作する。したがって、情報処理装置3は、第1の実施形態に係る情報処理装置1と同じ効果を奏する。これに加えて、照合コードを用いることにより、不良ブロックを正常ブロックと誤認識する問題を解決し、不良ブロックを含む第1の記憶装置に格納されたブートストラッププログラムを高速に検出することができる。
【0059】
なお、情報処理装置3では、CPU10による命令フェッチを制御するために、図5および図6に示すCPU制御装置15を使用してもよく、図10に示す調停装置20を使用してもよい。この点は、後述する第3〜第5の実施形態でも同じである。
【0060】
また、情報処理装置は、図14に示す情報処理装置4のように、外部から照合コードを書き換えできる転送装置を備えていてもよい。図14において、転送装置40は、データバス16dを介して、照合コード保持部301にデータを書き込むことができるように構成されている。第1の記憶装置11には、2種類のBSP111a、111bと、これら2種類のBSPに基づき同じ方法で計算された第1の誤り検査符号114a、114bが格納される。BSP111aおよび第1の誤り検査符号114aは、図11に示す情報処理装置3で言えば、それぞれ、BSP111および第1の誤り検査符号114に相当する。BSP111bは、BSP111aとは異なるBSPであり、例えば、リビジョンの異なるCPUのためのBSPや、システム構成の異なる情報処理装置のためのBSPなどである。BSP111a、111bは、それぞれ、照合コード121a、121bが付与された状態で第1の記憶装置11に格納される。照合コード121bには、照合コード121aとは異なる値が使用される。
【0061】
照合コード保持部301に保持された照合コード(照合コードの正解値)は、CPU10のリビジョンやシステム構成などに応じて書き換えられる。転送装置40は、電源が投入されると、照合コード保持部301に保持された照合コードに応じて、BSP111aまたはBSP111bのいずれかを選択し、第2の記憶装置12に転送する。CPU10は、第2の記憶装置12上のBSP111aまたはBSP111bに従って動作する。これにより、CPUのリビジョンやシステム構成などが異なる場合でも、1個の第1の記憶装置11から、CPUのリビジョンやシステム構成などに応じて最適なBSPを選択し、システムブートを正しく行うことができる。なお、情報処理装置4では、BSP111a、111bに基づき、第1の誤り検査符号114a、114bを同じ方法で計算することとしたが、両者を異なる方法で計算してもよい。この場合、各誤り検査符号に対応した誤り検出/訂正は、誤り処理部142によって行われる。
【0062】
(第3の実施形態)
図15は、本発明の第3の実施形態に係る情報処理装置の構成を示す図である。図15に示す情報処理装置5は、第1の実施形態に係る情報処理装置1(図1)において、転送装置14を転送装置50に置換したものである。情報処理装置5は、メインプログラム112に対する誤り検出/訂正処理の一部を転送装置50で行うことを特徴とする。
【0063】
転送装置50は、第1の実施形態に係る転送装置14の誤り処理部142を、第1および第2の誤り処理部501、502、並びに誤り処理選択部503に置換したものである。第1の誤り処理部501は、第1および第3の誤り検査符号114、116に基づく誤
り検出/訂正処理を行う。第1の誤り処理部501における誤り検出/訂正処理は、例えば、上式(2)を用いて所定の処理単位で(ここでは、8ビット単位で)行われる。
【0064】
第2の誤り処理部502は、第2の誤り検査符号115に基づく誤り検出/訂正処理のうち一部の処理を行う。ここで、第2の誤り検査符号115が512バイトのデータに基づき計算された16バイトの誤り検査符号であるとした場合、第2の誤り検査符号115に基づく誤り検出/訂正処理には、第1および第3の誤り検査符号114、116よりも、多くの計算量が必要とされる。したがって、第2の誤り処理部502が第2の誤り検査符号115に基づく誤り検出/訂正処理のすべてを行うとすると、転送装置50のハードウェア量が増加し、情報処理装置5のコストが増大する。そこで、第2の誤り処理部502は、第2の誤り検査符号115に基づく誤り検出/訂正処理のうち、シンドローム計算だけを行うこととする。計算されたシンドロームを用いた誤り検出/訂正処理は、CPU10のソフトウェア処理によって行われる。
【0065】
誤り処理選択部503は、CPU10による制御に従い、第1および第2の誤り処理部501、502のいずれかを選択的に動作させる。誤り処理選択部503は、CPU10から書き込み可能なレジスタを含み、このレジスタには、BSP111の転送が完了するまでは、例えば値0が格納されている。BSP111の転送が完了すると、CPU10は、誤り処理選択部503に含まれるレジスタの値を、例えば1に書き替える。誤り処理選択部503は、レジスタの値が0であるときは、第1の記憶装置11から読み出されたデータを第1の誤り処理部501に供給し、レジスタの値が1であるときは、第1の記憶装置11から読み出されたデータを第2の誤り処理部502に供給する。
【0066】
したがって、転送装置50では、電源が投入された後、誤り処理選択部503に含まれるレジスタの値が1に変化するまでの間、転送されるBSP111に対して、第1の誤り検査符号114に基づく誤り検出/訂正処理が行われる。その後、CPU10が所定の命令を実行することにより、誤り処理選択部503に含まれるレジスタの値が1に変化する。これ以降、転送装置50では、転送されるメインプログラム112に対して、第2の誤り検査符号115に基づく誤り検出/訂正処理のうち、シンドローム計算が行われる。
【0067】
以上に示すように、情報処理装置5によれば、誤り検出/訂正処理の一部を転送装置で行うことにより、メインプログラムに対する誤り検出/訂正処理を高速に行い、システムブートを高速に行うことができる。
【0068】
なお、情報処理装置5では、誤り処理選択部503に含まれるレジスタの値は、CPU10の命令によって書き替えられることとした。これに代えて、図16に示す情報処理装置6のように、転送装置60に含まれる誤り処理選択部601は、通知部143から受け取った転送完了通知信号144に同期して、上記レジスタの値を0から1に切り替えてもよい。
【0069】
(第4の実施形態)
図17は、本発明の第4の実施形態に係る情報処理装置の構成を示す図である。図17に示す情報処理装置7は、第3の実施形態に係る情報処理装置5(図15)において、転送装置50を転送装置70に置換したものである。情報処理装置7は、転送装置70がメインプログラム112の転送機能を有することを特徴とする。
【0070】
転送装置70は、第3の実施形態に係る転送装置50(図15)に、制御情報格納部701と、不良ブロック情報テーブルポインタ格納部702と、不良ブロック情報テーブル格納部703とを追加したものである。制御情報格納部701には、転送元アドレスや、転送サイズや、転送先アドレスなどが格納される。不良ブロック情報テーブルポインタ格
納部702には、BSP111に含まれる不良ブロック情報テーブルポインタ119(不良ブロック情報テーブル113の先頭アドレス)が格納される。
【0071】
不良ブロック情報テーブル113には、BSP111と同じ方法で計算された第3の誤り検査符号116が付与されている。転送装置70は、CPU10からの制御に従い、第1の記憶装置11から不良ブロック情報テーブル113と第3の誤り検査符号116を読み出し、第1の誤り処理部501を用いて誤り検出/訂正処理を施して、誤り検出/訂正処理後の不良ブロック情報テーブルを第2の記憶装置12に書き込む。
【0072】
また、本実施形態では、第2の誤り処理部502は、第2の誤り検査符号に対する誤り検出/訂正処理の全体を行うこととする。この場合、第2の誤り処理部502は、メインプログラム112に対して誤り検出/訂正処理を行っている間に、訂正不可能な誤りを検出した場合には、誤り処理を中断し、図示しない手段で、CPU10に回復不可能な誤りを検出したことを通知する。CPU10は、この通知を受けると、異常処理を行う。例えば、CPU10は、システムをアボートさせ、図示しない表示手段にメッセージを表示するなどにより、回復不可能な誤りが発生したことをユーザに通知する。
【0073】
図18は、本実施形態に係るCPU10によるブートストラップ処理を示すフローチャートである。図18に示すフローチャートは、図9に示すフローチャートと類似しているので、以下では両者の相違点のみを説明する。
【0074】
図9に示すフローチャートでは、CPU10は、BSP111から不良ブロック情報テーブルポインタ119を読み出し、これを用いて、不良ブロック情報テーブル113を第1の記憶装置11から第3の記憶装置13にコピーする(ステップS202)。これに対して、図18に示すフローチャートでは、CPU10は、BSP111から不良ブロック情報テーブルポインタ119を読み出し、転送装置70の不良ブロック情報テーブルポインタ格納部702に書き込む(ステップS402)。このとき、転送装置70は、不良ブロック情報テーブルポインタ格納部702に格納された不良ブロック情報テーブルポインタを参照して、第1の記憶装置11から不良ブロック情報テーブル113と第3の誤り検査符号116を読み出し、第1の誤り検査符号114に基づく誤り検出/訂正処理を施して、その結果を不良ブロック情報テーブルポインタ格納部702に書き込む。
【0075】
また、図9に示すフローチャートでは、CPU10は、コピー関数を呼び出すことによりページを第3の記憶装置13にコピーし(ステップS206)、コピーしたページのシンドロームを自ら計算する(ステップS207)。これに対して、図18に示すフローチャートでは、CPU10は、転送装置70の制御情報格納部701に転送に必要なパラメータ(例えば、転送元としてBとPの値など)を書き込み、転送装置70による転送完了まで待機する(ステップS406)。このとき、転送制御部141は、制御情報格納部701に格納されたパラメータで指定された、第1の記憶装置11のB番目のブロックのP番目のページを第2の記憶装置12の所定のアドレスに転送し、第2の誤り処理部502は、転送したページのシンドロームを計算する。1ページの転送が完了すると、CPU10は、第2の誤り処理部502で計算されたシンドロームを読み出す(ステップS408)。ステップS409における誤り検出/訂正処理は、読み出されたシンドロームに基づき行われる。
【0076】
以上に示すように、情報処理装置7によれば、ブートストラッププログラムのサイズを小さくするとともに、CPUの負荷を軽減しシステムブートを高速に行うことができる。
【0077】
(第5の実施形態)
図19は、本発明の第5の実施形態に係る情報処理装置の構成を示す図である。図19
に示す情報処理装置8は、第3の実施形態に係る情報処理装置3(図11)から、第2の記憶装置12を除去し、転送装置30を転送装置80に置換したものである。情報処理装置8は、BSP111を格納するために専用の記憶装置を備えず、BSP111を転送装置80から供給することを特徴とする。
【0078】
転送装置80は、第3の実施形態に係る転送装置30(図11)において、転送制御部311を転送制御部803に置換し、バッファ制御部801と命令供給バッファ802を追加したものである。命令供給バッファ802は、所定数の命令を格納するためのバッファである。転送制御部803は、電源が投入されると、第1の記憶装置11の先頭からBSP111を所定量だけ順に読み出し、誤り処理部142は、読み出された所定量のBSP111に対して誤り検出/訂正処理を施す。誤り検出/訂正後のBSP111は、データバス16c、16b、16e経由で命令供給バッファ802に格納される。CPU10は、電源が投入されると、命令供給バッファ802から命令をフェッチしようとする。
【0079】
CPU10が命令フェッチを行ったときに、命令供給バッファ802に次の命令が既に格納されていた場合には、バッファ制御部801は、CPU10がその命令を読み出すことを許可する。この場合、CPU10は、命令フェッチに成功し、フェッチした命令を実行する。これに対して、CPU10が命令フェッチを行ったときに、命令供給バッファ802に次の命令がまだ蓄積されていない場合には、バッファ制御部801は、CPU10の命令フェッチを留保し、転送制御部803を制御して、第1の記憶装置11から次の命令を読み出す。読み出された命令は、誤り検出/訂正処理を施された後、命令供給バッファ802に格納される。このようにして、転送装置80は、命令供給バッファ802に次の命令が格納されていない場合には、次の命令が準備できるまで、CPU10が命令をフェッチできないように制御する。
【0080】
以上に示すように、情報処理装置8によれば、BSPを格納するためにメモリ領域を確保することなく、第1の実施形態に係る情報処理装置と同じ効果を奏することができる。
【0081】
(第6の実施形態)
図20は、本発明の第6の実施形態に係るROMイメージ生成装置の構成を示す図である。図20に示すROMイメージ生成装置9は、上記各実施形態に係る情報処理装置に含まれる第1の記憶装置11として使用されるメモリ(以下、対象メモリという)に、BSP111やメインプログラム112などを含むROMイメージを書き込む装置である。
【0082】
ROMイメージ生成装置9は、イメージ整形部91と、書き込みイメージ生成部92と、メモリ制御部93と、照合コード管理部94と、符号情報管理部95と、不良ブロック情報保持部96と、不良ブロック情報テーブル生成部97とを備えている。また、イメージ整形部91は、照合コード付与部911と整形部912とを含み、書き込みイメージ生成部92は、イメージ合成部921と不良ブロック情報テーブルポインタ付与部922と誤り検査符号付与部923とを含み、メモリ制御部93は、不良ブロック検索部931とメモリ書き込み部932を含んでいる。
【0083】
入力データ900が入力される前に、照合コード管理部94には、入力データ900に付与して書き込まれる照合コード941が格納されており、符号情報管理部95には、入力データ900の種類ごとに、いかなる方法で誤り検査符号を計算するかを表す誤り検査符号付与情報951が格納されている。また、不良ブロック検索部931は、対象メモリに所定の方法でアクセスし、対象メモリに含まれる不良ブロックの位置を表す不良ブロック情報933を出力する。不良ブロック検索部931から出力された不良ブロック情報933は、不良ブロック情報保持部96に格納される。
【0084】
ROMイメージ生成装置9には、入力データ900として、対象メモリに書き込むべきバイナリ形式のBSPやメインプログラムなどが、別々のファイルに分けて入力される。また、不良ブロック情報テーブル生成部97は、不良ブロック情報保持部96に保持された不良ブロック情報961に基づき、バイナリ形式の不良ブロック情報テーブル971を生成する。入力データ900と不良ブロック情報テーブル971は、別々のファイルに分かれた状態でイメージ整形部91に入力される。
【0085】
イメージ整形部91は、入力データ900と不良ブロック情報テーブル971を、対象メモリに書き込むための形式に整形する。より詳細には、照合コード付与部911は、照合コード管理部94に格納された照合コード941を、必要に応じて入力データ900に付与する。整形部912は、符号情報管理部95に格納された誤り検査符号付与情報951に応じて、入力データ900と不良ブロック情報テーブル971を誤り検査符号を付与するための形式に整形し、その結果を別々のファイルに分けた状態で出力する。イメージ整形部91で整形されたデータを、整形部出力913という。
【0086】
図21は、整形部出力913の例を示す図である。図21(a)は、BSP111が入力された場合の整形部出力913を示し、図21(b)は、メインプログラム112が入力された場合の整形部出力913を示している。BSP111が入力されている間、符号情報管理部95からは、4ビットの情報ビットに4ビットの誤り検査符号を付与する形式(図3に示す形式)に整形することを示す誤り検査符号付与情報951が出力される。整形部912は、この誤り検査符号付与情報951に基づき、バイナリ形式で入力されたBSP111を図21(a)に示す形式に整形する。また、メインプログラム112が入力されている間、符号情報管理部95からは、512バイトのデータに16バイトの誤り検査符号を付与する形式に整形することを示す誤り検査符号付与情報951が出力される。整形部912は、この誤り検査符号付与情報951に基づき、バイナリ形式で入力されたメインプログラム112を図21(b)に示す形式に整形する。
【0087】
書き込みイメージ生成部92は、イメージ整形部91から出力された整形部出力913を合成し、対象メモリに含まれる不良ブロックの位置を考慮して、対象メモリに書き込むROMイメージ924を生成する。より詳細には、イメージ合成部921は、別々のファイルに分けた状態で出力された整形部出力913を1つのファイルに合成する。この際、イメージ合成部921は、不良ブロック情報保持部96から出力された不良ブロック情報961に基づき、不良ブロックを避けて、正常ブロックに対応する位置にのみ有効なデータを出力する。
【0088】
イメージ合成部921が整形部出力913を1つのファイルに合成すると、不良ブロック情報テーブル971をどの正常ブロックに配置するかが確定する。そこで、不良ブロック情報テーブルポインタ付与部922は、イメージ合成部921の出力に、この正常ブロックの番号(不良ブロック情報テーブルポインタ119に相当する)を付与する。
【0089】
不良ブロック情報テーブルポインタ付与部922が、上記正常ブロックの番号を付与すると、対象メモリに書き込むべきROMイメージのうち、誤り検査符号以外のすべてのデータが確定する。そこで、誤り検査符号付与部923は、不良ブロック情報テーブルポインタ付与部922の出力に、符号情報管理部95から出力された誤り検査符号付与情報951に応じて、誤り検査符号を付与する。誤り検査符号付与部923は、例えば、BSP111には第1の誤り検査符号114を付与し、メインプログラム112には第2の誤り検査符号115を付与する。
【0090】
メモリ書き込み部932は、対象メモリに対して、書き込みイメージ生成部92から出力されたROMイメージ924を書き込む。この際、メモリ書き込み部932は、不良ブ
ロック情報保持部96に保持された不良ブロック情報961に基づき、対象メモリに含まれる正常ブロックに対してのみ、ROMイメージ924を書き込む。
【0091】
以上に示すように、本実施形態に係るROMイメージ生成装置によれば、第1〜第5の実施形態に係る情報処理装置に含まれる第1の記憶装置として使用されるメモリに、BSPやメインプログラムなどを含むROMイメージを書き込むことができる。
【0092】
(第1〜第6の実施形態の応用例)
本発明の情報処理装置は、不揮発性の記憶装置に格納されたプログラムを用いてシステムブートを行う情報処理装置であって、CPUと、CPUによって実行されるプログラムとして、第1の検査符号付きのブートストラッププログラムと、第1の検査符号とは異なる方法で求めた第2の検査符号付きのメインプログラムとを格納する不揮発性の第1の記憶装置と、第1の記憶装置に格納されたプログラムを読み出す転送装置であって、システムブート時に、ブートストラッププログラムを第1の記憶装置から読み出し、第1の検査符号に基づく誤り検出/訂正処理を施して、第2の記憶装置に転送する転送装置と、第1の記憶装置から読み出したプログラムを格納する揮発性の第2の記憶装置と、ブートストラッププログラムの転送が完了するまで、CPUの動作を抑制するCPU制御装置とを備えていてもよい。
上記情報処理装置は、初期プログラムを格納するためにROMなどの高信頼性メモリを使用することなく、NAND型フラッシュメモリなどの低信頼性メモリに格納された検査符号付きのプログラムを用いて、システムブートを安定的に行うことができる。
【0093】
この場合、CPUは、CPU制御装置による抑制が解除されると、第2の記憶装置に格納されたブートストラッププログラムに従い、第1の記憶装置に格納されたメインプログラムを第2の記憶装置に転送し、第2の検査符号に基づく誤り検出/訂正処理を施してもよい。
このように構成することで、誤り検出/訂正処理後のブートストラッププログラムに従い、メインプログラムに対してソフトウェアによる複雑な誤り検出/訂正処理を施すことができる。
【0094】
また、転送装置は、ブートストラッププログラムの転送を制御する転送制御部と、転送中のブートストラッププログラムに対して、第1の検査符号に基づく誤り検出/訂正処理を施す誤り処理部と、ブートストラッププログラムの転送が完了した時点で、誤り処理部が訂正不可能な誤りを検出していない場合に、転送完了をCPU制御装置に通知する通知部とを含んでいてもよい。
このように構成することで、初期プログラムを格納するために高信頼性メモリを使用することなく、低信頼性メモリに格納された検査符号付きのプログラムを用いて、システムブートを安定的に行うことができる。
【0095】
また、CPU制御装置は、ブートストラッププログラムの転送が完了するまで、CPUに対するクロック信号の供給を抑制してもよく、あるいは、CPUにリセット信号を供給してもよい。
このように構成することで、少量のハードウェアでCPUの動作を抑制することができる。
【0096】
また、CPU制御装置は、ブートストラッププログラムの転送が完了するまで、CPUの第2の記憶装置に対するアクセスを許可しないことしてもよく、より好ましくは、ブートストラッププログラムの転送が完了するまでは転送装置を優先し、ブートストラッププログラムの転送が完了した後はCPUを優先して、第2の記憶装置に接続されたバスのアクセス権を調停してもよい。
このように構成することで、第2の記憶装置のアクセス制御回路にわずかな変更を加えることにより、CPUの動作を抑制することができる。
【0097】
また、CPU制御装置は、ブートストラッププログラムの転送が失敗した場合には、CPUの動作を抑制し続けてもよい。
このように構成することで、システムブートに失敗した場合に、システムが暴走することを防止することができる。
【0098】
また、第1の記憶装置は、正常ブロックと不良ブロックとに識別された複数のブロックを含み、ブートストラッププログラムと、メインプログラムと、メインプログラムの第1の記憶装置における格納位置を表す格納位置情報とが、第1の記憶装置の正常ブロックに格納されていてもよい。
このように構成することで、NAND型フラッシュメモリのように、正常ブロックと不良ブロックを含む低信頼性メモリを用いて、低信頼性メモリに格納されたプログラムを用いてシステムブートを行う情報処理装置を得ることができる。
【0099】
特に、ブートストラッププログラムは、格納位置情報と、第2の検査符号に基づく誤り検出/訂正処理を行う誤り処理プログラムとを含み、CPUは、CPU制御装置による抑制が解除されると、第1の検査符号に基づく誤り検出/訂正処理後の格納位置情報に基づき、第1の記憶装置に格納されたメインプログラムを転送装置を介して第2の記憶装置に転送し、第1の検査符号に基づく誤り検出/訂正処理後の誤り処理プログラムに従い、第2の記憶装置に格納されたメインプログラムに対して誤り検出/訂正処理を施してもよい。
このように構成することで、正しい格納位置からメインプログラムを読み出し、読み出したメインプログラムに対してソフトウェアによる複雑な誤り検出/訂正処理を施すことができる。
【0100】
あるいは、第1の記憶装置は、第1の検査符号付きの格納位置情報を格納し、転送装置は、第1の記憶装置から読み出した格納位置情報に対しても、第1の検査符号に基づく誤り検出/訂正処理を行い、ブートストラッププログラムは、格納位置情報の第1の記憶装置における格納アドレスと、第2の検査符号に基づく誤り検出/訂正処理を行う誤り処理プログラムとを含み、CPUは、CPU制御装置による抑制が解除されると、第1の検査符号に基づく誤り検出/訂正処理後の格納アドレスを用いて、第1の記憶装置に格納された格納位置情報を転送装置を介して第2の記憶装置に転送し、第1の検査符号に基づく誤り検出/訂正処理後の格納位置情報に基づき、第1の記憶装置に格納されたメインプログラムを転送装置を介して第2の記憶装置に転送し、第1の検査符号に基づく誤り検出/訂正処理後の誤り処理プログラムに従い、第2の記憶装置に格納されたメインプログラムに対して誤り検出/訂正処理を施してもよい。
このように構成することで、ブートストラッププログラムのサイズを小さくするとともに、正しい格納位置からメインプログラムを読み出し、読み出したメインプログラムに対してソフトウェアによる複雑な誤り検出/訂正処理を施すことができる。
【0101】
また、ブートストラッププログラムは、第1の記憶装置の正常ブロックに所定サイズに分割された形式で格納され、転送装置は、ブートストラッププログラムを所定サイズに分けて第1の記憶装置から読み出し、第1の検査符号に基づく誤り検出/訂正処理を施して、第2の記憶装置に転送してもよい。
このように構成することで、所定サイズに分けたデータに対して、第1の検査符号として、好適な誤り検出/訂正能力を有する検査符号を付与することができる。
【0102】
特に、転送装置は、第1の記憶装置から読み出した所定サイズのデータに第1の検査符
号に基づく誤り検出/訂正処理を施した結果、訂正不可能な誤りを検出した場合には、当該データを含むブロックの次の正常ブロックから、次に処理すべきデータを読み出してもよい。
このように構成することで、不良ブロックを含む第1の記憶装置に格納されたブートストラッププログラムを正しく検出することができる。
【0103】
あるいは、ブートストラッププログラムは、第1の記憶装置の正常ブロックに、所定サイズに分割され、かつ、分割後の各データに照合コードを付与した形式で格納され、転送装置は、照合コードの正解データを保持し、第1の記憶装置から読み出した所定サイズのデータに正解データと同じ照合コードが付与されている場合に、読み出したデータを第2の記憶装置に転送してもよい。
このように構成することで、不良ブロックを正常ブロックと誤認識する問題を解決し、不良ブロックを含む第1の記憶装置に格納されたブートストラッププログラムを高速に検出することができる。
【0104】
より好ましくは、転送装置は、与えられたデータを用いて正解データを変更できるように構成されていてもよい。
このように構成することで、CPUのリビジョンやシステム構成などが異なる場合でも、第1の記憶装置からCPUのリビジョンやシステム構成などに応じてブートストラッププログラムを選択し、システムブートを正しく行うことができる。
【0105】
また、転送装置は、ブートストラッププログラムの転送を制御する転送制御部と、転送中のブートストラッププログラムに対して、第1の検査符号に基づく誤り検出/訂正処理を施す第1の誤り処理部と、第1の記憶装置から読み出したメインプログラムに対して、第2の検査符号に基づく誤り検出/訂正処理のうち少なくとも一部の処理を施す第2の誤り処理部と、ブートストラッププログラムの転送が完了した時点で、第1の誤り処理部が訂正不可能な誤りを検出していない場合に、転送完了をCPU制御装置に通知する通知部とを含んでいてもよい。
このように構成することで、メインプログラムに対する誤り検出/訂正処理を高速に行い、システムブートを高速に行うことができる。
【0106】
特に、第2の誤り処理部は、第1の記憶装置から読み出したメインプログラムについて、第2の検査符号に基づくシンドロームを計算し、CPUは、第2の記憶装置に格納されたブートストラッププログラムに従い、第2の誤り処理部で計算されたシンドロームを用いて、第1の記憶装置から読み出したメインプログラムに対して、第2の検査符号に基づく誤り検出/訂正処理のうち残余の処理を施してもよい。
このように構成することで、少量のハードウェアを用いて、メインプログラムに対する誤り検出/訂正処理を高速化することができる。
【0107】
あるいは、転送装置は、通知部が転送完了を通知したときに、第1の記憶装置から読み出したプログラムに対して処理を行う主体を、第1の誤り処理部から第2の誤り処理部に切り替えてもよい。
このように構成することで、ブートストラッププログラムの転送が完了したときに、転送装置における誤り検出/訂正処理の内容を自動的に切り替えることができる。
【0108】
あるいは、転送装置は、CPUからの制御に従い、第1の記憶装置から読み出したプログラムに対して処理を行う主体を、第1の誤り処理部から第2の誤り処理部に切り替えてもよい。
このように構成することで、CPUによるソフトウェア処理で、転送装置における誤り検出/訂正処理の内容を切り替えることができる。
【0109】
あるいは、転送装置は、第2の誤り処理部が訂正不可能な誤りを検出したときには、転送失敗をCPUに通知し、CPUは、転送失敗の通知を受けたときには異常処理を行うこととしてもよい。
このように構成することで、システムブートに失敗した場合に、システムを異常終了させ、回復不可能なエラーが発生したことをユーザに通知することができる。
【0110】
また、転送装置は、ブートストラッププログラムを転送することに加えて、CPUからの制御に従い、第1の記憶装置に格納されたメインプログラムを所定サイズに分けて読み出し、第2の記憶装置に転送してもよい。
このように構成することで、ブートストラッププログラムのサイズを小さくするとともに、CPUの負荷を軽減し、システムブートを高速に行うことができる。
【0111】
本発明の情報処理装置は、不揮発性の記憶装置に格納されたプログラムを用いてシステムブートを行う情報処理装置であって、CPUと、CPUによって実行されるプログラムとして、第1の検査符号付きのブートストラッププログラムと、第1の検査符号とは異なる方法で求めた第2の検査符号付きのメインプログラムとを格納する不揮発性の第1の記憶装置と、第1の記憶装置に格納されたプログラムを読み出す転送装置と、第1の記憶装置から読み出したプログラムを格納する揮発性の第2の記憶装置とを備え、転送装置は、ブートストラッププログラムを第1の記憶装置から読み出し、第1の検査符号に基づく誤り検出/訂正処理を施して内部に蓄積し、CPUからの読み出し要求に応じて、蓄積したブートストラッププログラムを出力し、CPUは、システムブート時に、転送装置に蓄積されたブートストラッププログラムに従って動作することを特徴としてもよい。
上記情報処理装置は、初期プログラムを格納するためにROMなどの高信頼性メモリを使用することなく、NAND型フラッシュメモリなどの低信頼性メモリに格納された検査符号付きのプログラムを用いて、システムブートを安定的に行うことができる。これに加えて、ブートストラッププログラムを格納するために、メモリ領域を確保する必要がなくなる。
【0112】
この場合、ブートストラッププログラムは、第2の検査符号に基づく誤り検出/訂正処理を行う誤り処理プログラムを含み、CPUは、システムブート時に、転送装置に蓄積されたブートストラッププログラムに従って、第1の記憶装置から読み出したメインプログラムに対して、第2の検査符号に基づく誤り検出/訂正処理を施してもよい。
このように構成することで、誤り検出/訂正処理後のブートストラッププログラムに従い、メインプログラムに対してソフトウェアによる複雑な誤り検出/訂正処理を施すことができる。
【0113】
本発明のROMイメージ生成装置は、複数のデータに基づき、不良ブロックを含む記憶装置に書き込むためのROMイメージを生成するROMイメージ生成装置であって、書き込み対象の記憶装置に含まれる不良ブロックの位置情報を保持する不良ブロック情報保持部と、入力データの種類に応じた検査符号の種類を管理する符号情報管理部と、入力データを、入力データの種類に応じた検査符号を付与できる形式に変換するイメージ整形部と、不良ブロック情報保持部に保持された位置情報を参照して、イメージ整形部で整形された複数のデータを不良ブロックの位置を避けて1つのデータに合成し、合成後のデータに対して、入力データの種類に応じた検査符号を付与する書き込みイメージ生成部とを備えていてもよい。
上記ROMイメージ生成装置は、本発明の第1または第2の情報処理装置に含まれる第1の記憶装置として使用されるメモリに書き込むためのROMイメージを生成することができる。また、データの種類に応じた検査符号が付与され、不良ブロックの位置にデータが配置されていないROMイメージを生成することができる。
【0114】
この場合、ROMイメージ生成装置は、照合コードを保持する照合コード保持部をさらに備え、イメージ整形部は、入力データに対して照合コード保持部に保持された照合コードを付与してもよい。
このように構成することで、照合コードを有するROMイメージを生成することができる。
【0115】
また、ROMイメージ生成装置は、記憶装置について、不良ブロックの位置を検索して位置情報を求める処理と、書き込みイメージ生成部で生成されたデータを書き込む処理とを行うメモリ制御部をさらに備えていてもよい。
このように構成することで、実際のメモリに対してROMイメージを書き込むROMイメージ生成装置を得ることができる。
【産業上の利用可能性】
【0116】
本発明の情報処理装置は、初期プログラムを格納するためにROMなどを使用することなく、システムブートを安定的に行えるという特徴を有するので、ノート型パーソナルコンピュータ、携帯型情報機器、携帯電話、デジタルカメラ、ビデオムービー、ゲーム機器など、各種の情報処理装置に利用することができる。
【符号の説明】
【0117】
1、2、3、4、5、6、7、8…情報処理装置
9…ROMイメージ生成装置
10…CPU
11…第1の記憶装置
12…第2の記憶装置
13…第3の記憶装置
14、30、40、50、60、70、80…転送装置
15…CPU制御装置
16…データバス
20…調停装置
37…命令供給バッファ
91…イメージ整形部
92…書き込みイメージ生成部
93…メモリ制御部
94…照合コード管理部
95…符号情報管理部
96…不良ブロック情報保持部
97…不良ブロック情報テーブル生成部
110…不良ブロック
111…BSP
112…メインプログラム
113…不良ブロック情報テーブル
114…第1の誤り検査符号
115…第2の誤り検査符号
116…第3の誤り検査符号
117…コンフィギュレーション部
118…メインプログラム転送部
119…不良ブロック情報テーブルポインタ
121…照合コード
122…照合コードの誤り検査符号
141、311、803…転送制御部
142…誤り処理部
143…通知部
144、201…転送完了通知信号
151…CPU起動制御信号
301…照合コード保持部
302…照合コード比較部
303…照合コード判定部
501…第1の誤り処理部
502…第2の誤り処理部
503、601…誤り処理選択部
701…制御情報格納部
702…不良ブロック情報テーブルポインタ格納部
703…不良ブロック情報テーブル格納部
801…バッファ制御部
802…命令供給バッファ
900…入力データ
911…照合コード付与部
912…整形部
913…整形部出力
921…イメージ合成部
922…不良ブロック情報テーブルポインタ付与部
923…誤り検査符号付与部
924…ROMイメージ
931…不良ブロック検索部
932…メモリ書き込み部
933、961…不良ブロック情報
941…照合コード
951…誤り検査符号付与情報
971…不良ブロック情報テーブル

【特許請求の範囲】
【請求項1】
記憶装置に格納されたプログラムを読み出す転送装置であって、
システムブート時に第1の検査符号付きの第1のプログラムを第1の記憶装置から読み出し、前記第1の検査符号に基づく誤り検出/訂正処理を施して、第2の記憶装置に転送する転送装置。
【請求項2】
前記第1のプログラムの転送を制御する転送制御部を有する請求項1に記載の転送装置。
【請求項3】
転送中の前記第1のプログラムに対して、前記第1の検査符号に基づく誤り検出/訂正処理を施す第1の誤り処理部を有する請求項2に記載の転送装置。
【請求項4】
前記CPUからの制御に従い、前記第1の記憶装置から読み出したプログラムに対して処理を行う主体を、前記第1の誤り処理部から前記第2の誤り処理部に切り替える請求項3に記載の転送装置。
【請求項5】
前記第1のプログラムを所定サイズに分けて前記第1の記憶装置から読み出し、前記第1の検査符号に基づく誤り検出/訂正処理を施して、前記第2の記憶装置に転送する請求項1に記載の転送装置。
【請求項6】
前記第1の記憶装置から読み出した前記所定サイズのデータに前記第1の検査符号に基づく誤り検出/訂正処理を施した結果、訂正不可能な誤りを検出した場合には、当該データを含むブロックの次の正常ブロックから、次に処理すべきデータを読み出す請求項5に記載の転送装置。
【請求項7】
正解データを保持し、前記第1の記憶装置から読み出したデータに前記正解データと同じ照合コードが付与されている場合に、読み出したデータを前記第2の記憶装置に転送する請求項1に記載の転送装置。
【請求項8】
与えられたデータを用いて前記正解データを変更する請求項7に記載の転送装置。
【請求項9】
前記第1の検査符号とは異なる方法で求めた第2の検査符号付きの第2のプログラムを、CPUからの制御に従い、前記第1の記憶装置から読み出す請求項1〜8いずれか1項に記載の転送装置。
【請求項10】
前記第1のプログラムは、前記第2のプログラムの前記第1の記憶装置における格納位置を表す格納位置情報と、前記第2の検査符号に基づく誤り検出/訂正処理を行う誤り処理プログラムとを含む請求項9に記載の転送装置。
【請求項11】
前記格納位置情報は、前記第1の検査符号付きであり、
前記第1の記憶装置から読み出した格納位置情報に対しても、前記第1の検査符号に基づく誤り検出/訂正処理を行う請求項10に記載の転送装置。
【請求項12】
前記第1のプログラムは、前記格納位置情報の前記第1の記憶装置における格納アドレスを含む請求項11に記載の転送装置。
【請求項13】
前記第1の記憶装置から読み出した前記第2のプログラムに対して、前記第2の検査符号に基づく誤り検出/訂正処理のうち少なくとも一部の処理を施す第2の誤り処理部を含む請求項9に記載の転送装置。
【請求項14】
前記第2の誤り処理部は、前記第1の記憶装置から読み出した前記第2のプログラムについて、前記第2の検査符号に基づく誤り検出/訂正処理のうち残余の処理を前記CPUが施すためのシンドロームを計算する請求項13に記載の転送装置。
【請求項15】
前記第2の誤り処理部が訂正不可能な誤りを検出したときには、転送失敗を前記CPUに通知する請求項13に記載の転送装置。
【請求項16】
前記第1のプログラムを転送することに加えて、前記CPUからの制御に従い、前記第1の記憶装置に格納された前記第2のプログラムを所定サイズに分けて読み出し、前記第2の記憶装置に転送する請求項9に記載の転送装置。
【請求項17】
CPUと、
前記CPUによって実行されるプログラムとして、第1の検査符号付きのブートストラッププログラムと、前記第1の検査符号とは異なる方法で求めた第2の検査符号付きのメインプログラムとを格納する不揮発性の第1の記憶装置と、
前記第1の記憶装置から読み出したプログラムを格納する揮発性の第2の記憶装置と、
前記第1の記憶装置に格納されたプログラムを読み出す転送装置であって、システムブート時に、前記ブートストラッププログラムを前記第1の記憶装置から読み出し、前記第1の検査符号に基づく誤り検出/訂正処理を施して、前記第2の記憶装置に転送する転送装置とを備えた情報処理装置。
【請求項18】
前記CPUは、前記第2の記憶装置に格納されたブートストラッププログラムに従い、前記第1の記憶装置に格納されたメインプログラムを前記第2の記憶装置に転送し、前記第2の検査符号に基づく誤り検出/訂正処理を施す請求項17に記載の情報処理装置。
【請求項19】
前記転送装置は、
前記ブートストラッププログラムの転送を制御する転送制御部と、
転送中の前記ブートストラッププログラムに対して、前記第1の検査符号に基づく誤り検出/訂正処理を施す誤り処理部とを含む請求項17に記載の情報処理装置。
【請求項20】
前記第1の記憶装置は、正常ブロックと不良ブロックとに識別された複数のブロックを含み、
前記ブートストラッププログラムと、前記メインプログラムと、前記メインプログラムの前記第1の記憶装置における格納位置を表す格納位置情報とが、前記第1の記憶装置の正常ブロックに格納されている請求項17に記載の情報処理装置。
【請求項21】
前記ブートストラッププログラムは、前記格納位置情報と、前記第2の検査符号に基づく誤り検出/訂正処理を行う誤り処理プログラムとを含み、
前記CPUは、前記第1の検査符号に基づく誤り検出/訂正処理後の前記格納位置情報に基づき、前記第1の記憶装置に格納されたメインプログラムを前記転送装置を介して前記第2の記憶装置に転送し、前記第1の検査符号に基づく誤り検出/訂正処理後の前記誤り処理プログラムに従い、前記第2の記憶装置に格納されたメインプログラムに対して誤り検出/訂正処理を施す請求項20に記載の情報処理装置。
【請求項22】
前記第1の記憶装置は、前記第1の検査符号付きの前記格納位置情報を格納し、
前記転送装置は、前記第1の記憶装置から読み出した格納位置情報に対しても、前記第1の検査符号に基づく誤り検出/訂正処理を行い、
前記ブートストラッププログラムは、前記格納位置情報の前記第1の記憶装置における格納アドレスと、前記第2の検査符号に基づく誤り検出/訂正処理を行う誤り処理プログ
ラムとを含み、
前記CPUは、前記第1の検査符号に基づく誤り検出/訂正処理後の前記格納アドレスを用いて、前記第1の記憶装置に格納された格納位置情報を前記転送装置を介して前記第2の記憶装置に転送し、前記第1の検査符号に基づく誤り検出/訂正処理後の前記格納位置情報に基づき、前記第1の記憶装置に格納されたメインプログラムを前記転送装置を介して前記第2の記憶装置に転送し、前記第1の検査符号に基づく誤り検出/訂正処理後の前記誤り処理プログラムに従い、前記第2の記憶装置に格納されたメインプログラムに対して誤り検出/訂正処理を施す請求項20に記載の情報処理装置。
【請求項23】
前記ブートストラッププログラムは、前記第1の記憶装置の正常ブロックに所定サイズに分割された形式で格納され、
前記転送装置は、前記ブートストラッププログラムを前記所定サイズに分けて前記第1の記憶装置から読み出し、前記第1の検査符号に基づく誤り検出/訂正処理を施して、前記第2の記憶装置に転送する請求項20に記載の情報処理装置。
【請求項24】
前記転送装置は、前記第1の記憶装置から読み出した前記所定サイズのデータに前記第1の検査符号に基づく誤り検出/訂正処理を施した結果、訂正不可能な誤りを検出した場合には、当該データを含むブロックの次の正常ブロックから、次に処理すべきデータを読み出す請求項23に記載の情報処理装置。
【請求項25】
前記ブートストラッププログラムは、前記第1の記憶装置の正常ブロックに、前記所定サイズに分割され、かつ、分割後の各データに照合コードを付与した形式で格納され、
前記転送装置は、前記照合コードの正解データを保持し、前記第1の記憶装置から読み出した前記所定サイズのデータに前記正解データと同じ照合コードが付与されている場合に、読み出したデータを前記第2の記憶装置に転送する請求項23に記載の情報処理装置。
【請求項26】
前記転送装置は、与えられたデータを用いて前記正解データを変更する請求項25に記載の情報処理装置。
【請求項27】
前記転送装置は、
前記ブートストラッププログラムの転送を制御する転送制御部と、
転送中の前記ブートストラッププログラムに対して、前記第1の検査符号に基づく誤り検出/訂正処理を施す第1の誤り処理部と、
前記第1の記憶装置から読み出したメインプログラムに対して、前記第2の検査符号に基づく誤り検出/訂正処理のうち少なくとも一部の処理を施す第2の誤り処理部とを含む請求項17に記載の情報処理装置。
【請求項28】
前記第2の誤り処理部は、前記第1の記憶装置から読み出したメインプログラムについて、前記第2の検査符号に基づくシンドロームを計算し、
前記CPUは、前記第2の記憶装置に格納されたブートストラッププログラムに従い、前記第2の誤り処理部で計算されたシンドロームを用いて、前記第1の記憶装置から読み出したメインプログラムに対して、前記第2の検査符号に基づく誤り検出/訂正処理のうち残余の処理を施す請求項27に記載の情報処理装置。
【請求項29】
前記転送装置は、前記CPUからの制御に従い、前記第1の記憶装置から読み出したプログラムに対して処理を行う主体を、前記第1の誤り処理部から前記第2の誤り処理部に切り替える請求項27に記載の情報処理装置。
【請求項30】
前記転送装置は、前記第2の誤り処理部が訂正不可能な誤りを検出したときには、転送
失敗を前記CPUに通知し、
前記CPUは、転送失敗の通知を受けたときには異常処理を行う請求項27に記載の情報処理装置。
【請求項31】
前記転送装置は、前記ブートストラッププログラムを転送することに加えて、前記CPUからの制御に従い、前記第1の記憶装置に格納されたメインプログラムを所定サイズに分けて読み出し、前記第2の記憶装置に転送する請求項17に記載の情報処理装置。
【請求項32】
請求項17〜31いずれかに記載の情報処理装置に用いられる前記第1の記憶装置に書き込むためのROMイメージを生成するROMイメージ生成装置。
【請求項33】
複数のデータに基づき、不良ブロックを含む記憶装置に書き込むためのROMイメージを生成するROMイメージ生成装置であって、
書き込み対象の記憶装置に含まれる不良ブロックの位置情報を保持する不良ブロック情報保持部と、
ブートストラッププログラムまたはメインプログラムのいずれかに応じて検査符号の種類を管理する符号情報管理部と、
ブートストラッププログラムおよびメインプログラムを、ブートストラッププログラムまたはメインプログラムのいずれかに応じて検査符号を付与できる形式に変換するイメージ整形部と、
前記不良ブロック情報保持部に保持された位置情報を参照して、前記イメージ整形部で整形された複数のデータを不良ブロックの位置を避けて1つのデータに合成し、合成後のデータに対して、ブートストラッププログラムまたはメインプログラムのいずれかに応じて検査符号を付与する書き込みイメージ生成部とを備えたROMイメージ生成装置。
【請求項34】
照合コードを保持する照合コード保持部をさらに備え、
前記イメージ整形部は、ブートストラッププログラムおよびメインプログラムに対して前記照合コード保持部に保持された照合コードを付与する請求項33に記載のROMイメージ生成装置。
【請求項35】
前記記憶装置について、不良ブロックの位置を検索して前記位置情報を求める処理と、前記書き込みイメージ生成部で生成されたデータを書き込む処理とを行うメモリ制御部をさらに備えた請求項33に記載のROMイメージ生成装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2009−271946(P2009−271946A)
【公開日】平成21年11月19日(2009.11.19)
【国際特許分類】
【出願番号】特願2009−190700(P2009−190700)
【出願日】平成21年8月20日(2009.8.20)
【分割の表示】特願2003−431178(P2003−431178)の分割
【原出願日】平成15年12月25日(2003.12.25)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】