(57)【要約】      （修正有）【課題】ＮＡＮＤ型フラッシュメモリのような低信頼性記憶装置に存在する不良ブロックを回避し、不良のない初期プログラムをＲＡＭに転送する。【解決手段】管理情報記憶部２９には、第１の記憶装置３１の不良ブロックの位置を示す管理情報３０が記憶されている。情報処理装置１の電源投入時には、転送判定部２０は、管理情報３０に基づいて第１の記憶装置３１の正常ブロックからＢＳＰ２６を読み込み、これを第２の記憶装置３２へと転送するよう制御する。【選択図】図１
2006277395.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の記憶装置に記憶されたプログラムを用いてシステムブートを行う情報処理装置であって、
正常ブロックと不良ブロックとを含み、前記正常ブロックにシステムブートを行うためのプログラムが予め不揮発的に記憶された第１の記憶装置と、
第２の記憶装置と、
前記第１の記憶装置に含まれる前記不良ブロックの位置を示す管理情報を不揮発的に記憶する管理情報記憶部と、
前記記憶された管理情報に基づいて、前記プログラムを前記第１の記憶装置から前記第２の記憶装置へと転送する転送装置と、
前記第２の記憶装置に転送された前記プログラムを実行することによってシステムブートを行うＣＰＵと、
前記転送装置による前記プログラムの転送が完了するまで、前記ＣＰＵの動作を抑制するＣＰＵ制御装置とを備えた、情報処理装置。
【請求項２】
前記転送装置は、前記管理情報記憶部を含むことを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記管理情報は、前記第１の記憶装置における所定の正常ブロックに記憶されており、
前記転送装置は、
前記管理情報を取得する管理情報取得部と、
前記取得された前記管理情報に基づいて、前記第１の記憶装置に格納された前記プログラムの正常ブロックを判定する転送判定部とを含み、
前記転送装置は、前記転送判定部からの指示に応答して前記プログラムを転送することを特徴とする、請求項１記載の情報処理装置。
【請求項４】
前記転送装置は、前記第１の記憶装置における前記管理情報の位置情報を記憶する位置情報記憶部を更に含み、
前記管理情報取得部は、前記記憶された位置情報に基づいて、前記第１の記憶装置から前記管理情報を取得することを特徴とする、請求項３記載の情報処理装置。
【請求項５】
前記位置情報記憶部に記憶された前記位置情報は、前記ＣＰＵによって書き換え可能であることを特徴とする、請求項４記載の情報処理装置。
【請求項６】
前記位置情報記憶部に記憶された前記位置情報は、前記ＣＰＵによる前記管理情報の書き換えに伴って更新されることを特徴とする、請求項５記載の情報処理装置。
【請求項７】
前記第１の記憶装置は、前記管理情報を複数記憶し、
前記管理情報取得部は、外部から入力された選択情報に基づいて、前記管理情報を取得することを特徴とする、請求項３記載の情報処理装置。
【請求項８】
前記転送装置は、前記選択情報に基づいて、前記第１の記憶装置における前記管理情報の位置情報を計算する位置情報計算部を更に含むことを特徴とする、請求項７記載の情報処理装置。
【請求項９】
前記第１の記憶装置は、同一の前記管理情報を複数記憶し、
前記転送装置は、前記管理情報の一つを用いてシステムブートに失敗した場合には、前記選択情報に基づいて選択された前記管理情報の他の一つを用いて、前記プログラムを転送することを特徴とする、請求項８記載の情報処理装置。
【請求項１０】
前記第１の記憶装置は、異なるプログラムを複数記憶し、
前記管理情報の各々は、前記プログラムの各々に対応し、
前記転送装置は、前記選択情報に対応して前記管理情報を切替えることにより、転送する前記プログラムを切替えることを特徴とする、請求項８記載の情報処理装置。
【請求項１１】
前記第１の記憶装置は、同一の前記管理情報を複数記憶し、
前記転送装置は、前記管理情報の値をブロック毎に多数決によって選択し、前記選択された値を前記転送判定部に提供する多数決判定部を更に含むことを特徴とする、請求項３記載の情報処理装置。
【請求項１２】
前記多数決判定部は、前記管理情報の総数のうち過半数を占める値を検出したときは、前記過半数を占める値を前記管理情報として判定することを特徴とする、請求項１１記載の情報処理装置。
【請求項１３】
前記第１の記憶装置は、同一の前記管理情報を複数記憶し、
前記管理情報取得部は、前記管理情報を書き込まれた順に読み出し、
前記転送装置は、最初に読み出された管理情報と他の管理情報とを比較し、これらが同一のときには最新世代の管理情報と判定すると共に、前記判定された管理情報を前記転送判定部へ提供する世代比較部を更に含むことを特徴とする、請求項３記載の情報処理装置。
【請求項１４】
前記第１の記憶装置は、複数のビット列からなり、更新されたときに前回とは異なる値が付与される更新ラベルを更に含み、
前記転送装置は、前記管理情報が書き込まれた順に前記更新ラベルを読み出す更新ラベル取得部を更に含み、
前記世代比較部は、前記更新ラベルに基づいて前記管理情報を判定することを特徴とする、請求項１３記載の情報処理装置。
【請求項１５】
前記転送装置は、前回の前記管理情報更新時に使用した前記更新ラベルを比較用ラベルとして不揮発的に記憶する更新ラベル記憶部を更に含み、
前記世代比較部は、前記比較用ラベルと読み出された前記更新ラベルとを比較して、前記比較用ラベルと同一の値を有する更新ラベルに対応した管理情報を、最新世代の管理情報と判定することを特徴とする、請求項１４記載の情報処理装置。
【請求項１６】
前記第１の記憶装置は、管理情報を示す第１の値と、他のデータを示す第２の値とを記憶する管理情報フラグを更に含み、
前記世代比較部は、前記管理情報フラグが前記第１の値の場合に、前記管理情報を正常と判定し、前記管理情報フラグが前記第２の値の場合に、前記管理情報を不良と判定する管理情報フラグ判定部を更に含むことを特徴とする、請求項１３記載の情報処理装置。
【請求項１７】
前記第１の記憶装置は、管理情報を示す第１の値と、他のデータを示す第２の値とを記憶する管理情報フラグを更に含み、
前記世代比較部は、前記管理情報フラグが前記第２の値である場合には、前記管理情報フラグに対応する前記管理情報を不良な管理情報と判定し、前記管理情報フラグが前記第１の値であって、且つ、前記更新ラベルが前記比較用ラベルと同一である場合には、前記更新ラベルに対応する前記管理情報を最新世代と判定し、前記管理情報フラグが前記第１の値であって、且つ、前記更新ラベルが前記比較用ラベルと異なる場合に、前記更新ラベルに対応する前記管理情報を前世代と判定することを特徴とする、請求項１５記載の情報処理装置。
【請求項１８】
前記転送装置は、前記世代比較部が前世代の前記管理情報だけを取得可能と判定した場合に、その旨を外部に通知する前世代情報使用通知端子を更に含むことを特徴とする、請求項１３記載の情報処理装置。
【請求項１９】
前記世代比較部は、前世代の前記管理情報だけを取得可能と判定した場合に、前世代の前記管理情報を前記転送判定部へ提供することを特徴とする、請求項１３記載の情報処理装置。
【請求項２０】
前記転送装置は、前世代の前記管理情報を使用したことを記憶する前世代情報使用記憶部を更に含むことを特徴とする、請求項１３記載の情報処理装置。
【請求項２１】
前記転送装置は、前記世代比較部が前記管理情報が全て同一ではないと判定した場合に、前記管理情報の各々が同一ではない旨を記憶する不整合記憶部を更に含むことを特徴とする、請求項１３記載の情報処理装置。
【請求項２２】
前記転送装置は、前記世代比較部が前記管理情報が全て同一ではないと判定した場合に、その旨を外部に通知する不整合通知端子を更に含むことを特徴とする、請求項１３記載の情報処理装置。
【請求項２３】
前記転送装置は、前記転送判定部が使用した前記管理情報を特定するための情報を記憶する使用情報記憶部を更に含むことを特徴とする、請求項１３記載の情報処理装置。
【請求項２４】
前記転送装置は、前記転送判定部が使用した前記管理情報を特定するための情報を外部に通知する使用情報通知端子を更に含むことを特徴とする、請求項１３記載の情報処理装置。
【請求項２５】
前記転送装置は、前記第１の記憶装置に記憶されている前記管理情報のうち、前記世代比較部によって最新世代ではないと判定された前記管理情報を、最新世代と判定された前記管理情報で更新する情報更新部を更に含むことを特徴とする、請求項１３記載の情報処理装置。
【請求項２６】
前記第１の記憶装置は、前記管理情報の書き込み時に、無効を示す値が前記管理情報と同時に書き込まれる有効フラグを更に記憶し、
前記ＣＰＵは、前記管理情報の書き込み後に前記管理情報を読み出し、前記読み出された管理情報が書き込んだ管理情報と同一の場合に、前記有効フラグを有効を示す値に書き換える有効フラグ書込部を更に含み、
前記転送装置は、前記有効フラグを読み出す有効フラグ取得部を更に含み、
前記管理情報取得部は、前記有効フラグが前記有効を示す値を有する管理情報を取得することを特徴とする、請求項３記載の情報処理装置。
【請求項２７】
前記第１の記憶装置は、所定方向へ所定量だけ循環シフトされた前記管理情報を記憶し、
前記管理情報取得部は、取得された前記管理情報を前記所定方向とは反対方向に前記所定量だけ循環シフトさせ、前記シフトされた前記管理情報を前記転送判定部に提供することを特徴とする、請求項３記載の情報処理装置。
【請求項２８】
正常ブロックと不良ブロックとを含み、前記正常ブロックにシステムブートを行うためのプログラムが予め不揮発的に記憶された第１の記憶装置と、第２の記憶装置と、前記第１の記憶装置に存在する不良ブロックの位置を示す管理情報と、ＣＰＵとを備えた情報処理装置における情報処理方法であって、
前記管理情報に基づいて、前記第１の記憶装置における前記正常ブロックを前記プログラムの転送元に設定する転送判定工程と、前記設定された転送元から前記プログラムを前記第２の記憶装置に転送する工程とを含むプログラム転送工程と、
前記プログラム転送工程が完了するまで、前記ＣＰＵの動作を抑制するＣＰＵ抑制工程と、
前記ＣＰＵが前記第２の記憶装置に転送された前記プログラムを実行して、システムブートを行うシステムブート工程とを備えた、情報処理方法。
【請求項２９】
前記情報処理装置は、前記管理情報を記憶する管理情報記憶部を更に含み、
前記プログラム転送工程は、前記管理情報記憶部を介して前記管理情報を取得することを特徴とする、請求項２８記載の情報処理方法。
【請求項３０】
前記プログラム転送工程の前に、前記管理情報を前記第１の記憶装置における所定の正常ブロックに記憶する管理情報記憶工程を更に含み、
前記プログラム転送工程は、前記管理情報を前記第１の記憶装置から取得する管理情報取得工程を含むことを特徴とする、請求項２８記載の情報処理方法。
【請求項３１】
前記情報処理装置は、前記第１の記憶装置における前記管理情報の位置情報を記憶する位置情報記憶部を更に含み、
前記管理情報記憶工程は、前記位置情報記憶部に記憶された前記位置情報に基づいて前記管理情報を特定することを特徴とする、請求項３０記載の情報処理方法。
【請求項３２】
前記管理情報記憶工程は、前記管理情報の更新時に、前記位置情報記憶部に記憶された前記位置情報を同時に更新する位置情報更新工程を更に含むことを特徴とする、請求項３１記載の情報処理方法。
【請求項３３】
前記第１の記憶装置は、前記管理情報を複数記憶し、
前記情報処理装置は、外部から前記管理情報の選択情報を入力する選択情報入力部を更に含み、
前記管理情報取得工程は、前記選択情報入力部から入力された前記選択情報を前記管理情報の位置情報として用いて前記管理情報を特定する位置情報特定工程を更に含むことを特徴とする、請求項３０記載の情報処理方法。
【請求項３４】
前記位置情報特定工程は、前記選択情報を用いて前記管理情報の前記位置情報を計算する位置情報計算工程を更に含むことを特徴とする、請求項３３記載の情報処理方法。
【請求項３５】
前記管理情報の各々は、同一の情報を保持し、
前記プログラム転送工程は、システムブートに失敗した場合、前記選択情報入力部を用いて正常な前記管理情報に切替える工程を更に含むことを特徴とする、請求項３４記載の情報処理方法。
【請求項３６】
前記第１の記憶装置は、異なるプログラムを複数記憶し、
前記管理情報の各々は、前記プログラムの各々が記憶されたブロックに含まれる不良ブロックの位置を示す情報を含み、
前記プログラム転送工程は、前記選択情報入力部を用いて前記管理情報を切替えることにより、転送する前記プログラムを切替える工程を更に含むことを特徴とする、請求項３４記載の情報処理方法
【請求項３７】
前記第１の記憶装置は、同一の前記管理情報を複数記憶し、
前記プログラム転送工程は、前記転送判定工程の前に、同一ブロックに対する前記管理情報の各々の値を多数決により選択し、前記転送判定工程に前記管理情報として提供する多数決判定工程を更に含むことを特徴とする、請求項３０記載の情報処理方法。
【請求項３８】
前記多数決判定工程は、前記管理情報の総数のうち過半数を占める値を検出すると、前記過半数を占める値を前記管理情報として前記転送判定工程に提供する過半数判定工程を更に含むことを特徴とする、請求項３７記載の情報処理方法。
【請求項３９】
前記第１の記憶装置は、同一の前記管理情報を複数記憶し、
前記管理情報取得工程は、前記管理情報が書き込まれた順序と同じ順序で前記管理情報を読み出し、
前記プログラム転送工程は、前記転送判定工程の前に、前記管理情報読み出し時に、最初に読み出された前記管理情報と２番目以降に読み出した前記管理情報を比較し、同じ値の前記管理情報を最新世代と判定し、最新世代と判定した前記管理情報を前記プログラム転送工程に提供する世代比較工程を更に含むことを特徴とする、請求項３０記載の情報処理方法。
【請求項４０】
前記第１の記憶装置は、複数のビット列からなり、前記管理情報更新時には前回と異なる値が記憶される更新ラベルを更に含み、
前記プログラム転送工程は、前記転送判定工程の前に、前記管理情報が書き込まれた順序と同じ順序で前記更新ラベルを読み出す更新ラベル取得工程を更に含み、
前記世代比較工程は、前記管理情報の代わりに前記更新ラベルを用いて最新世代の前記管理情報を判定することを特徴とする、請求項３９記載の情報処理方法。
【請求項４１】
前記情報処理装置は、前回の前記管理情報更新時に使用した前記更新ラベルを比較用ラベルとして記憶する不揮発性の更新ラベル記憶部を更に含み、
前記世代比較工程は、前記更新ラベル記憶部により記憶された前記比較用ラベルと、読み出された前記更新ラベルとを比較し、前記比較用ラベルと同一の値を有する前記更新ラベルに対応する前記管理情報を最新世代の前記管理情報と判定することを特徴とする、請求項４０記載の情報処理方法。
【請求項４２】
前記第１の記憶装置は、前記管理情報を示す第１の値と、他のデータを示す第２の値とを記憶する管理情報フラグを更に含み、
前記世代比較工程は、前記管理情報フラグが前記第１の値の場合に、前記管理情報を正常と判定し、前記管理情報フラグが前記第２の値の場合に、前記管理情報を不良と判定する管理情報フラグ判定工程を更に含むことを特徴とする、請求項３９記載の情報処理方法。
【請求項４３】
前記第１の記憶装置は、前記管理情報を示す第１の値と、他のデータを示す第２の値とを記憶する管理情報フラグを更に含み、
前記世代比較工程は、
前記管理情報フラグが前記第２の値である場合に、前記管理情報フラグに対応する前記管理情報を不良な管理情報と判定する工程と、
前記管理情報フラグが前記第１の値であって、且つ、前記更新ラベルが前記比較用ラベルと同一の場合に、前記更新ラベルに対応する前記管理情報を最新世代の管理情報と判定する工程と、
前記管理情報フラグが前記第１の値であって、且つ、前記更新ラベルが前記比較用ラベルと異なる場合に、前記更新ラベルに対応する前記管理情報を前世代の管理情報と判定する工程とを更に含むことを特徴とする、請求項４１記載の情報処理方法
【請求項４４】
前記情報処理装置は、前世代の管理情報しか得られない旨を外部に通知するための前世代情報通知部を更に含み、
前記プログラム転送工程は、前記世代比較工程が前世代の前記管理情報しか得られないと判定した場合、その旨を前記前世代情報通知部を介して外部に通知することを特徴とする、請求項３９記載の情報処理方法。
【請求項４５】
前記世代比較工程は、前世代の前記管理情報しか得られないと判定した場合、前世代の前記管理情報を前記転送判定工程へ提供することを特徴とする、請求項３９記載の情報処理方法。
【請求項４６】
前記情報処理装置は、前世代の前記管理情報を用いたことを記憶する前世代情報使用記憶部を更に含み、
前記プログラム転送工程は、前記転送判定工程が前世代の前記管理情報を用いる場合、その旨を前記前世代情報使用記憶部に記憶させることを特徴とする、請求項３９記載の情報処理方法
【請求項４７】
前記情報処理装置は、前記管理情報が全て同一ではないことを記憶する不整合記憶部を更に含み、
前記プログラム転送工程は、前記世代比較工程により、前記管理情報が全て同一ではないと判定された場合に、その旨を前記不整合記憶部に記憶させることを特徴とする、請求項３９記載の情報処理方法。
【請求項４８】
前記情報処理装置は、前記管理情報が全て同一ではないことを外部に通知する不整合通知部を更に含み、
前記プログラム転送工程は、前記世代比較工程により前記管理情報が全て同一ではないと判定された場合に、その旨を前記不整合通知部を介して外部に通知することを特徴とする、請求項３９記載の情報処理方法。
【請求項４９】
前記情報処理装置は、前記転送判定工程が使用した前記管理情報を特定するための情報を記憶する使用情報記憶部を更に含み、
前記プログラム転送工程は、前記使用情報記憶部に前記管理情報を特定するための情報を記憶させることを特徴とする、請求項３９記載の情報処理方法。
【請求項５０】
前記情報処理装置は、前記転送判定工程が使用した前記管理情報を特定するための情報を外部に通知する使用情報通知部を更に含み、
前記プログラム転送工程は、使用した前記管理情報を特定するための情報を前記使用情報通知部を介して外部に通知することを特徴とする、請求項３９記載の情報処理方法。
【請求項５１】
前記プログラム転送工程は、前記第１の記憶装置に記憶されている前記管理情報のうち、前記世代比較工程により最新世代と判定されなかった前記管理情報を、最新世代と判定された前記管理情報で更新する情報更新工程を更に含むことを特徴とする、請求項３９記載の情報処理方法。
【請求項５２】
前記第１の記憶装置は、前記管理情報が有効か無効を示す有効フラグを更に含み、
無効を示す前記有効フラグを前記管理情報と同時に書き込む管理情報書込工程と、
前記管理情報を読み出して、前記読み出された管理情報と書き込んだ管理情報とを比較し、これらが同一の場合に、前記有効フラグを有効を示す値に書き換える有効フラグ書込工程とを更に含み、
前記プログラム転送工程は、前記転送判定工程の前に、前記有効フラグを読み出す有効フラグ取得工程を更に含み、
前記管理情報取得工程は、前記有効フラグが有効を示す値である前記管理情報を用いることを特徴とする、請求項３０記載の情報処理方法。
【請求項５３】
前記管理情報の書き込み時に、前記管理情報をそれぞれ所定方向へ所定量だけ循環シフトさせる循環シフト工程を更に含み、
前記管理情報取得工程は、取得した前記管理情報を前記所定方向と反対方向に前記所定量だけ循環シフトさせる管理情報シフト工程を更に含むことを特徴とする、請求項３０記載の情報処理方法。
【請求項５４】
不揮発性の記憶装置に存在する不良ブロックの位置情報を管理し、前記位置情報に基づいて、前記不良ブロック以外のブロックからプログラムを読み出してシステムブートを行う情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関し、より特定的には、例えばＮＡＮＤ型フラッシュメモリのような、先天的に不良ブロックを含む可能性があり、また、後天的に不良ブロックを生じる可能性のある記憶装置に記憶されたプログラムを実行して、システムブートを行う情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
フラッシュメモリは、大きくＮＯＲ型とＮＡＮＤ型とに分類することができる。ＮＯＲ型フラッシュメモリは、１バイト単位でランダムアクセスできるという長所を有するが、ＮＡＮＤ型フラッシュメモリに比べると、高価で集積度が低いという短所を有している。
【０００３】
一方、ＮＡＮＤ型フラッシュメモリは、一定の割合以下であれば、不良ブロックを含むことが容認されたメモリである。そのため、ＮＡＮＤ型フラッシュメモリから読み書きを行う際には、不良ブロックの位置を管理することが必要である。また、ＮＡＮＤ型フラッシュメモリは、シーケンシャルにしかアクセスできず、読み出し後に誤り検出／訂正処理が必要であるという短所を有するが、ＮＯＲ型フラッシュメモリに比べて安価で集積度が高いという長所を備えている。
【０００４】
そこで、このような長所を有するＮＡＮＤ型フラッシュメモリを、システムブート時に実行される初期プログラムを格納するための記憶装置として採用した情報処理装置が知られている。このような従来の情報処理装置において、ＮＡＮＤ型フラッシュメモリのような低信頼性メモリに格納されたプログラムを実行するためには、まず、システムの低信頼性メモリのインターフェイス部は、初期プログラムを低信頼性メモリからＲＡＭに転送した後に、システムのＣＰＵのリセットを解除する。次に、ＣＰＵは、そのリセット解除後、初期プログラムに従ってメインプログラムを低信頼性メモリからＲＡＭに転送する。メインプログラムの転送が完了した後、ＣＰＵは、ＲＡＭ上のメインプログラムに分岐し、その後はＲＡＭ上のメインプログラムを実行する（例えば、特許文献１参照）。
【特許文献１】特開２００３−２７１３９１号公報（第７頁、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のような従来の情報処理装置では、システムブート時に初期プログラムをＮＡＮＤ型フラッシュメモリからＲＡＭへ転送する際に、ＮＡＮＤ型フラッシュメモリ中の不良ブロックを避けることができない。
【０００６】
そこで、不良ブロックを避けるために、システムブート時に初期プログラムが格納されたブロックのデータを１ブロックずつ読み、データを読み出しながら、１ブロックごとに検査符号を用いて、当該ブロックが不良ブロックか否かを判定する方法が考えられる。この場合、計算された検査符号と、検査符号の期待値とを比較して、計算された検査符号が期待値と一致しない場合に、検査対象のブロックが不良であるとみなす。
【０００７】
しかしながら、不良ブロックが検出された場合には、起動処理を中止したり、異なるブロックから初期プログラムの転送を再実行したりする必要があるため、時間的な効率が悪くなるという問題がある。
【０００８】
また、ＥＣＣ等の検査符号は予め定めたビット数以上のエラーに対応できないため、検査単位中に予め定めたビット数以上の不良データが含まれる場合、不良データを正常データと誤判定してしまう可能性が考えられる。この場合、ＮＡＮＤ型フラッシュメモリからＲＡＭへと不良な初期プログラムが転送され、当該不良な初期プログラムがＣＰＵにより実行されてしまうおそれがある。
【０００９】
それ故に、本発明は、例えばＮＡＮＤ型フラッシュメモリのような低信頼性記憶装置に存在する不良ブロックを回避し、且つ、不良のない初期プログラムをＲＡＭに転送することができる情報処理装置及び情報処理方法を提供することを目的とする。
【００１０】
また、本発明は、初期プログラムが格納された記憶装置に存在する不良ブロックについての信頼性の高い管理情報を有し、管理情報自体の不良を容易に検出することができる情報処理装置及び情報処理方法を提供することを目的とする。
【００１１】
更に、本発明は、システムの起動時間を短縮し、製造費用を低減することができる情報処理装置及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
第１の発明は、不揮発性の記憶装置に記憶されたプログラムを用いてシステムブートを行う情報処理装置であって、正常ブロックと不良ブロックとを含み、正常ブロックにシステムブートを行うためのプログラムが予め不揮発的に記憶された第１の記憶装置と、第２の記憶装置と、第１の記憶装置に含まれる不良ブロックの位置を示す管理情報を不揮発的に記憶する管理情報記憶部と、記憶された管理情報に基づいて、プログラムを第１の記憶装置から第２の記憶装置へと転送する転送装置と、第２の記憶装置に転送されたプログラムを実行することによってシステムブートを行うＣＰＵと、転送装置によるプログラムの転送が完了するまで、ＣＰＵの動作を抑制するＣＰＵ制御装置とを備える。この場合、転送装置は、管理情報記憶部を含んでいても良い。
【００１３】
また、管理情報は、第１の記憶装置における所定の正常ブロックに記憶され、転送装置は、管理情報を取得する管理情報取得部と、取得された管理情報に基づいて、第１の記憶装置に格納されたプログラムの正常ブロックを判定する転送判定部とを含み、転送装置は、転送判定部からの指示に応答してプログラムを転送しても良い。
【００１４】
この場合、転送装置は、第１の記憶装置における管理情報の位置情報を記憶する位置情報記憶部を更に含み、管理情報取得部は、記憶された位置情報に基づいて、第１の記憶装置から管理情報を取得しても良い。更に、位置情報記憶部に記憶された位置情報は、ＣＰＵによって書き換え可能であっても良い。更に、位置情報記憶部に記憶された位置情報は、ＣＰＵによる管理情報の書き換えに伴って更新されても良い。
【００１５】
また、第１の記憶装置は、管理情報を複数記憶し、管理情報取得部は、外部から入力された選択情報に基づいて、管理情報を取得しても良い。この場合、転送装置は、選択情報に基づいて、第１の記憶装置における管理情報の位置情報を計算する位置情報計算部を更に含んでも良い。
【００１６】
また、第１の記憶装置は、同一の管理情報を複数記憶し、転送装置は、管理情報の一つを用いてシステムブートに失敗した場合には、選択情報に基づいて選択された管理情報の他の一つを用いて、プログラムを転送しても良い。
【００１７】
また、第１の記憶装置は、異なるプログラムを複数記憶し、管理情報の各々は、プログラムの各々に対応し、転送装置は、選択情報に対応して管理情報を切替えることにより、転送するプログラムを切替えても良い。
【００１８】
また、第１の記憶装置は、同一の管理情報を複数記憶し、転送装置は、管理情報の値をブロック毎に多数決によって選択し、選択された値を転送判定部に提供する多数決判定部を更に含んでも良い。この場合、多数決判定部は、管理情報の総数のうち過半数を占める値を検出したときは、過半数を占める値を管理情報として判定しても良い。
【００１９】
また、第１の記憶装置は、同一の管理情報を複数記憶し、管理情報取得部は、管理情報を書き込まれた順に読み出し、転送装置は、最初に読み出された管理情報と他の管理情報とを比較し、これらが同一のときには最新世代の管理情報と判定すると共に、判定された管理情報を転送判定部へ提供する世代比較部を更に含んでも良い。この場合、第１の記憶装置は、複数のビット列からなり、更新されたときに前回とは異なる値が付与される更新ラベルを更に含み、転送装置は、管理情報が書き込まれた順に更新ラベルを読み出す更新ラベル取得部を更に含み、世代比較部は、更新ラベルに基づいて管理情報を判定しても良い。更に、転送装置は、前回の管理情報更新時に使用した更新ラベルを比較用ラベルとして不揮発的に記憶する更新ラベル記憶部を更に含み、世代比較部は、比較用ラベルと読み出された更新ラベルとを比較して、比較用ラベルと同一の値を有する更新ラベルに対応した管理情報を、最新世代の管理情報と判定しても良い。
【００２０】
また、第１の記憶装置は、管理情報を示す第１の値と、他のデータを示す第２の値とを記憶する管理情報フラグを更に含み、世代比較部は、管理情報フラグが第１の値の場合に、管理情報を正常と判定し、管理情報フラグが第２の値の場合に、管理情報を不良と判定する管理情報フラグ判定部を更に含んでも良い。
【００２１】
また、第１の記憶装置は、管理情報を示す第１の値と、他のデータを示す第２の値とを記憶する管理情報フラグを更に含み、世代比較部は、管理情報フラグが第２の値である場合には、管理情報フラグに対応する管理情報を不良な管理情報と判定し、管理情報フラグが第１の値であって、且つ、更新ラベルが比較用ラベルと同一である場合には、更新ラベルに対応する管理情報を最新世代と判定し、管理情報フラグが第１の値であって、且つ、更新ラベルが比較用ラベルと異なる場合に、更新ラベルに対応する管理情報を前世代と判定しても良い。
【００２２】
また、転送装置は、世代比較部が前世代の管理情報だけを取得可能と判定した場合に、その旨を外部に通知する前世代情報使用通知端子を更に含んでも良い。
【００２３】
また、世代比較部は、前世代の管理情報だけを取得可能と判定した場合に、前世代の管理情報を転送判定部へ提供しても良い。
【００２４】
また、転送装置は、前世代の管理情報を使用したことを記憶する前世代情報使用記憶部を更に含んでも良い。
【００２５】
また、転送装置は、世代比較部が管理情報が全て同一ではないと判定した場合に、管理情報の各々が同一ではない旨を記憶する不整合記憶部を更に含んでも良い。
【００２６】
また、転送装置は、世代比較部が管理情報が全て同一ではないと判定した場合に、その旨を外部に通知する不整合通知端子を更に含んでも良い。
【００２７】
また、転送装置は、転送判定部が使用した管理情報を特定するための情報を記憶する使用情報記憶部を更に含んでも良い。
【００２８】
また、転送装置は、転送判定部が使用した管理情報を特定するための情報を外部に通知する使用情報通知端子を更に含んでも良い。
【００２９】
また、転送装置は、第１の記憶装置に記憶されている管理情報のうち、世代比較部によって最新世代ではないと判定された管理情報を、最新世代と判定された管理情報で更新する情報更新部を更に含んでも良い。
【００３０】
また、第１の記憶装置は、管理情報の書き込み時に、無効を示す値が管理情報と同時に書き込まれる有効フラグを更に記憶し、ＣＰＵは、管理情報の書き込み後に管理情報を読み出し、読み出された管理情報が書き込んだ管理情報と同一の場合に、有効フラグを有効を示す値に書き換える有効フラグ書込部を更に含み、転送装置は、有効フラグを読み出す有効フラグ取得部を更に含み、管理情報取得部は、有効フラグが有効を示す値を有する管理情報を取得しても良い。
【００３１】
また、第１の記憶装置は、所定方向へ所定量だけ循環シフトされた管理情報を記憶し、管理情報取得部は、取得された管理情報を所定方向とは反対方向に所定量だけ循環シフトさせ、シフトされた管理情報を転送判定部に提供しても良い。
【００３２】
第２の発明は、正常ブロックと不良ブロックとを含み、正常ブロックにシステムブートを行うためのプログラムが予め不揮発的に記憶された第１の記憶装置と、第２の記憶装置と、第１の記憶装置に存在する不良ブロックの位置を示す管理情報と、ＣＰＵとを備えた情報処理装置における情報処理方法であって、管理情報に基づいて、第１の記憶装置における正常ブロックをプログラムの転送元に設定する転送判定工程と、設定された転送元からプログラムを第２の記憶装置に転送する工程とを含むプログラム転送工程と、プログラム転送工程が完了するまで、ＣＰＵの動作を抑制するＣＰＵ抑制工程と、ＣＰＵが第２の記憶装置に転送されたプログラムを実行して、システムブートを行うシステムブート工程とを備える。この場合、情報処理装置は、管理情報を記憶する管理情報記憶部を更に含み、プログラム転送工程は、管理情報記憶部を介して管理情報を取得しても良い。
【００３３】
また、プログラム転送工程の前に、管理情報を第１の記憶装置における所定の正常ブロックに記憶する管理情報記憶工程を更に含み、プログラム転送工程は、管理情報を第１の記憶装置から取得する管理情報取得工程を含んでも良い。この場合、情報処理装置は、第１の記憶装置における管理情報の位置情報を記憶する位置情報記憶部を更に含み、管理情報記憶工程は、位置情報記憶部に記憶された位置情報に基づいて管理情報を特定しても良い。更に、管理情報記憶工程は、管理情報の更新時に、位置情報記憶部に記憶された位置情報を同時に更新する位置情報更新工程を更に含んでも良い。
【００３４】
また、第１の記憶装置は、管理情報を複数記憶し、情報処理装置は、外部から管理情報の選択情報を入力する選択情報入力部を更に含み、管理情報取得工程は、選択情報入力部から入力された選択情報を管理情報の位置情報として用いて管理情報を特定する位置情報特定工程を更に含んでも良い。この場合、位置情報特定工程は、選択情報を用いて管理情報の位置情報を計算する位置情報計算工程を更に含んでも良い。更に、管理情報の各々は、同一の情報を保持し、プログラム転送工程は、システムブートに失敗した場合、選択情報入力部を用いて正常な管理情報に切替える工程を更に含んでも良い。
【００３５】
また、第１の記憶装置は、異なるプログラムを複数記憶し、管理情報の各々は、プログラムの各々が記憶されたブロックに含まれる不良ブロックの位置を示す情報を含み、プログラム転送工程は、選択情報入力部を用いて管理情報を切替えることにより、転送するプログラムを切替える工程を更に含んでも良い。
【００３６】
また、第１の記憶装置は、同一の管理情報を複数記憶し、プログラム転送工程は、転送判定工程の前に、同一ブロックに対する管理情報の各々の値を多数決により選択し、転送判定工程に管理情報として提供する多数決判定工程を更に含んでも良い。この場合、多数決判定工程は、管理情報の総数のうち過半数を占める値を検出すると、過半数を占める値を管理情報として転送判定工程に提供する過半数判定工程を更に含んでも良い。
【００３７】
また、第１の記憶装置は、同一の管理情報を複数記憶し、管理情報取得工程は、管理情報が書き込まれた順序と同じ順序で管理情報を読み出し、プログラム転送工程は、転送判定工程の前に、管理情報読み出し時に、最初に読み出された管理情報と２番目以降に読み出した管理情報を比較し、同じ値の管理情報を最新世代と判定し、最新世代と判定した管理情報をプログラム転送工程に提供する世代比較工程を更に含んでも良い。この場合、第１の記憶装置は、複数のビット列からなり、管理情報更新時には前回と異なる値が記憶される更新ラベルを更に含み、プログラム転送工程は、転送判定工程の前に、管理情報が書き込まれた順序と同じ順序で更新ラベルを読み出す更新ラベル取得工程を更に含み、世代比較工程は、管理情報の代わりに更新ラベルを用いて最新世代の管理情報を判定しても良い。更に、情報処理装置は、前回の管理情報更新時に使用した更新ラベルを比較用ラベルとして記憶する不揮発性の更新ラベル記憶部を更に含み、世代比較工程は、更新ラベル記憶部により記憶された比較用ラベルと、読み出された更新ラベルとを比較し、比較用ラベルと同一の値を有する更新ラベルに対応する管理情報を最新世代の管理情報と判定しても良い。
【００３８】
第１の記憶装置は、管理情報を示す第１の値と、他のデータを示す第２の値とを記憶する管理情報フラグを更に含み、世代比較工程は、管理情報フラグが第１の値の場合に、管理情報を正常と判定し、管理情報フラグが第２の値の場合に、管理情報を不良と判定する管理情報フラグ判定工程を更に含んでも良い。
【００３９】
また、第１の記憶装置は、管理情報を示す第１の値と、他のデータを示す第２の値とを記憶する管理情報フラグを更に含み、世代比較工程は、管理情報フラグが第２の値である場合に、管理情報フラグに対応する管理情報を不良な管理情報と判定する工程と、管理情報フラグが第１の値であって、且つ、更新ラベルが比較用ラベルと同一の場合に、更新ラベルに対応する管理情報を最新世代の管理情報と判定する工程と、管理情報フラグが第１の値であって、且つ、更新ラベルが比較用ラベルと異なる場合に、更新ラベルに対応する管理情報を前世代の管理情報と判定する工程とを更に含んでも良い。
【００４０】
また、情報処理装置は、前世代の管理情報しか得られない旨を外部に通知するための前世代情報通知部を更に含み、プログラム転送工程は、世代比較工程が前世代の管理情報しか得られないと判定した場合、その旨を前世代情報通知部を介して外部に通知しても良い。
【００４１】
また、世代比較工程は、前世代の管理情報しか得られないと判定した場合、前世代の管理情報を転送判定工程へ提供しても良い。
【００４２】
また、情報処理装置は、前世代の管理情報を用いたことを記憶する前世代情報使用記憶部を更に含み、プログラム転送工程は、転送判定工程が前世代の管理情報を用いる場合、その旨を前世代情報使用記憶部に記憶させても良い。
【００４３】
また、情報処理装置は、管理情報が全て同一ではないことを記憶する不整合記憶部を更に含み、プログラム転送工程は、世代比較工程により、管理情報が全て同一ではないと判定された場合に、その旨を不整合記憶部に記憶させても良い。
【００４４】
また、情報処理装置は、管理情報が全て同一ではないことを外部に通知する不整合通知部を更に含み、プログラム転送工程は、世代比較工程により管理情報が全て同一ではないと判定された場合に、その旨を不整合通知部を介して外部に通知しても良い。
【００４５】
また、情報処理装置は、転送判定工程が使用した管理情報を特定するための情報を記憶する使用情報記憶部を更に含み、プログラム転送工程は、使用情報記憶部に管理情報を特定するための情報を記憶させても良い。
【００４６】
また、情報処理装置は、転送判定工程が使用した管理情報を特定するための情報を外部に通知する使用情報通知部を更に含み、プログラム転送工程は、使用した管理情報を特定するための情報を使用情報通知部を介して外部に通知しても良い。
【００４７】
また、プログラム転送工程は、第１の記憶装置に記憶されている管理情報のうち、世代比較工程により最新世代と判定されなかった管理情報を、最新世代と判定された管理情報で更新する情報更新工程を更に含んでも良い。
【００４８】
また、第１の記憶装置は、管理情報が有効か無効を示す有効フラグを更に含み、無効を示す有効フラグを管理情報と同時に書き込む管理情報書込工程と、管理情報を読み出して、読み出された管理情報と書き込んだ管理情報とを比較し、これらが同一の場合に、有効フラグを有効を示す値に書き換える有効フラグ書込工程とを更に含み、プログラム転送工程は、転送判定工程の前に、有効フラグを読み出す有効フラグ取得工程を更に含み、管理情報取得工程は、有効フラグが有効を示す値である管理情報を用いても良い。
【００４９】
また、管理情報の書き込み時に、管理情報をそれぞれ所定方向へ所定量だけ循環シフトさせる循環シフト工程を更に含み、管理情報取得工程は、取得した管理情報を所定方向と反対方向に所定量だけ循環シフトさせる管理情報シフト工程を更に含んでも良い。
【００５０】
第３の発明は、不揮発性の記憶装置に存在する不良ブロックの位置情報を管理し、位置情報に基づいて、不良ブロック以外のブロックからプログラムを読み出してシステムブートを行う情報処理方法である。
【発明の効果】
【００５１】
本発明の情報処理装置によれば、システムブート前の初期プログラムの転送時に、不良ブロックの管理情報を参照して不良ブロックを回避するため、不良な初期プログラムを読み込んだり転送したりすることなく、安全かつ短時間にシステムブートを行うことが可能となる。
【００５２】
また、ＲＯＭなどの高信頼性メモリを使用することなく、ＮＡＮＤ型フラッシュメモリなどの低信頼性メモリに管理情報を配置することができ、システムのコストダウンを図ることが可能となる。
【００５３】
更に、管理情報の書き換え時に生じた不具合を検出することにより、信頼性の高い管理情報を使用することができ、システムを高い確率で起動することが可能となる。
【発明を実施するための最良の形態】
【００５４】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る情報処理装置の構成を示したブロック図であり、図２は、ＮＡＮＤ型フラッシュメモリにおけるブロックとページとの関係を示した図であり、図３は、図１に示したブートストラッププログラム（ＢＳＰ）の構成を示したブロック図であり、更に、図４は、図１に示した情報処理装置における管理情報のフォーマットの一例を示した図である。
【００５５】
情報処理装置１は、図１に示すように、ＣＰＵ２１と、第１の記憶装置３１と、第２の記憶装置３２と、第３の記憶装置３３と、転送装置２４と、ＣＰＵ制御装置１７とを備えている。これらの各部は、データバス１６ａ〜１６ｃを介して互いに接続されている。
【００５６】
ＣＰＵ２１は、情報処理装置１のメインＣＰＵであり、転送装置２４によって第１の記憶装置３１から第２の記憶装置３２に転送されたブートストラッププログラム２６（以下「ＢＳＰ」という）を実行することによりシステムブートを行う。
【００５７】
第１の記憶装置３１は、メモリとして正常な機能を果たさない不良ブロックを含んだ不揮発性の記憶装置を用いて構成されている。本実施形態においては、第１の記憶装置３１には、ＮＡＮＤ型フラッシュメモリが使用されている。このＮＡＮＤ型フラッシュメモリの記憶領域は、図２に示されるように、複数のブロックに分割され、各ブロックは更に複数のページに分割されている。例えば、あるＮＡＮＤ型フラッシュメモリにおいては、１ブロックは８ページからなり、１ページは５１２バイトのデータ部と１６バイトの冗長部との５２８バイトで構成されている。なお、これらのページサイズ及びブロックサイズは、ＮＡＮＤ型フラッシュメモリの種類に依存するため、１ページが５２８バイト以外の場合や、１ブロックが８ページ以外の場合も存在する。ＮＡＮＤ型フラッシュメモリよりなる第１の記憶装置３１は、図２の斜線で示したように、不良ブロック（ブロック番号２）を含んでいるため、第１の記憶装置３１に読み書きを行うときには、不良ブロックを避けて読み書きを行う必要がある。
【００５８】
また、第１の記憶装置３１には、図１に示したように、不良ブロック２５以外のブロックに、ＢＳＰ２６と、メインプログラム２７とが格納されている。
【００５９】
ＢＳＰ２６は、図３に示されるように、コンフィギュレーション部３４と、メインプログラム転送部３５とを含んでいる。コンフィギュレーション部３４には、バスコントローラに設定するデータなど、システムの基本コンフィギュレーションを行うときに必要なデータが含まれている。ＢＳＰ２６の実行時には、コンフィギュレーション部３４に含まれたこれらのデータに基づいて、第３の記憶装置３３にアクセスするためのメモリコントローラの設定などが行われる。メインプログラム転送部３５には、メインプログラム２７を第３の記憶装置３３に転送するルーチンが含まれている。メインプログラム２７は、システムブート完了後にＣＰＵ２１が実行するプログラムであり、一般に情報処理装置では、メインプログラム２７はＢＳＰ２６よりも大きいサイズを有している。
【００６０】
なお、第１の記憶装置３１に含まれるブロックが正常か不良かは、第１の記憶装置３１に書き込みを行う前に、第１の記憶装置３１に所定の方法でアクセスすることにより判定することができる。第１の記憶装置３１に書き込みを行うときには、不良ブロック２５には書き込みを行わず、正常ブロックにのみ書き込みを行う必要がある。以下では、ＢＳＰ２６は、第１の記憶装置３１に含まれる正常ブロックのうちブロック番号が最も小さい１個以上の連続したブロックに、先頭ページから詰めて格納され、メインプログラム２７は、第１の記憶装置３１に含まれる正常ブロックのうちＢＳＰ２６が格納されているブロックより後の１個以上の連続したブロックに、先頭ページから詰めて格納されているものとする。
【００６１】
第２の記憶装置３２は、特別な初期設定を行うことなく、ＣＰＵ２１と転送装置２４の双方からアクセスできる揮発性のメモリである。第２の記憶装置３２には、ＣＰＵ２１により実行されるＢＳＰ２６が転送されるので、第２の記憶装置３２にはＢＳＰ２６のサイズより大きい容量を有するメモリが使用されている。なお、ＣＰＵ２１が第２の記憶装置３２に転送されたＢＳＰ２６の実行を完了すると、第２の記憶装置３２はその役割を失うため、第２の記憶装置３２として専用のメモリを備えることに代えて、システムＬＳＩに既に内蔵されているスタティックＲＡＭなどを第２の記憶装置３２として使用して情報処理装置１を構成しても良い。
【００６２】
第３の記憶装置３３は、メインプログラム２７を転送するための記憶装置であり、第２の記憶装置３２に比べて大きな容量を有するメモリが使用されている。このため、第３の記憶装置３３には、ランダムアクセス可能で、ビット単価が安い揮発性の記憶装置を使用することが望ましい。第３の記憶装置３３には、例えばＳＤＲＡＭが使用される。
【００６３】
なお、ここでは、説明の便宜上、第２の記憶装置３２及び第３の記憶装置３３をそれぞれ別の記憶装置としているが、第２の記憶装置３２及び第３の記憶装置３３には、１個の記憶装置の内部に確保された別々の記憶領域を割り当てても良い。この場合、システムブートが完了した後は、第２の記憶装置３２として確保された記憶領域を、例えばワーク用の記憶領域として使用することができる。
【００６４】
転送装置２４は、図１に示されるように、転送制御部１８と、転送判定部２０と、管理情報記憶部２９と、通知部１９とを含んでいる。転送制御部１８は、転送判定部２０からの制御に従って、第１の記憶装置３１に格納されているＢＳＰ２６を第２の記憶装置３２に自動的に転送する機能と、ＣＰＵ２１からの制御に従って、第１の記憶装置３１に格納されているメインプログラム２７を読み出す機能とを備えている。
【００６５】
転送判定部２０は、ＢＳＰ２６を第１の記憶装置３１から第２の記憶装置３２へ転送する前に、管理情報記憶部２９に記憶された管理情報３０に基づいて、ＢＳＰ２６が格納されている可能性のあるブロックに対して、正常／不良の判定処理を行い、正常と判定したブロックを転送するように転送制御部１８に指示する。
【００６６】
通知部１９は、ＢＳＰ２６の転送が正常に完了したときに、その旨を示す転送完了通知信号２２をＣＰＵ制御装置１７へと出力する。
【００６７】
管理情報記憶部２９は、転送装置２４が第１の記憶装置３１からＢＳＰ２６を読み出す前に特別な初期設定を行うことなくアクセスできる不揮発性の記憶領域である。好ましくは、管理情報記憶部２９として、ランダムリードが可能で、システムＬＳＩに内蔵可能な小容量の不揮発性の記憶装置を使用することが望ましい。例えば、管理情報記憶部２９として、ＦＥＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を使用することができる。なお、管理情報記憶部２９は、ランダムリードのみならず、ＣＰＵ２１から書き換え及び読み出しが可能であっても良い。
【００６８】
管理情報記憶部２９には、第１の記憶装置３１に存在する不良ブロックの位置を示す管理情報３０が記憶されている。管理情報３０は、図４に示すように、第１の記憶装置３１に含まれる各ブロックが正常か不良かを示す情報が、１ブロックあたり１ビットで格納されている。
【００６９】
例えば、第１の記憶装置３１として、容量が２５６Ｍバイトで、ブロックサイズが１６Ｋバイトを有するＮＡＮＤ型フラッシュメモリを使用した場合を想定する。このとき、総ブロック数は１６Ｋ個となるため、管理情報記憶部２９には、１６Ｋビット、すなわち２Ｋバイトの領域が必要となる。ここで管理情報３０には、正常ブロックの場合は値“０”を、不良ブロックの場合には値“１”をセットするとすれば、図４に示した管理情報３０の例は、第１の記憶装置３１の１３番目（アドレス１、ビット４）及び１８番目のブロック（アドレス２、ビット１）が不良ブロックであることを示している。
【００７０】
なお、ここでは管理情報３０のフォーマットの一例について説明したが、管理情報３０としてこれ以外のフォーマットを使用したり、更に情報を追加したりしても良いことは言うまでもない。
【００７１】
ＣＰＵ制御装置１７は、転送装置２４によるＢＳＰ２６の転送が完了するまでの間、ＣＰＵ２１による命令フェッチを制御するために、通知部１９から出力された転送完了通知信号２２に基づいてＣＰＵ起動制御信号２３を出力する。例えば、ＣＰＵ制御装置１７は、転送完了通知信号２２がアクティブになるまで、ＣＰＵ２１のリセット信号をそのまま通過させ、この間、ＣＰＵ２１は停止状態となる。転送完了通知信号２２がアクティブになると、ＣＰＵ制御装置１７はリセット信号をマスクし、ＣＰＵ２１は動作を開始する。このようなＣＰＵ制御装置１７の機能により、転送完了通知信号２２がアクティブになるまで、ＣＰＵ２１による命令フェッチが抑制されている。
【００７２】
ここで、上述した転送装置２４の動作について、更に詳細に説明する。
【００７３】
転送装置２４は、電源が投入されると、第１の記憶装置３１におけるＢＳＰ２６の格納位置を求め、求めた格納位置のブロックが正常か不良かを判定する。判定の結果、求めた格納位置のブロックが正常なブロックであれば、転送装置２４は、ＢＳＰ２６を１ページずつ順に読み出して第２の記憶装置３２に転送する。
【００７４】
より詳細には、電源が投入されると、まず、転送判定部２０は、管理情報記憶部２９に記憶された管理情報３０を参照し、第１の記憶装置３１の先頭ブロックについて、正常／不良の判定を行う。第１の記憶装置３１の先頭ブロックが正常ブロックであれば、転送判定部２０は、先頭ブロックの転送を転送制御部１８に指示する。
【００７５】
なお、転送制御部１８が読み出すブロックが複数に渡る場合、転送判定部２０は、それぞれのブロックに対して正常／不良の判定を行う。仮に、転送判定部２０が不良であると判定した場合、転送判定部２０は、システムブートを停止するか、または、次のブロックの判定を行う。
【００７６】
転送制御部１８は、第１の記憶装置３１の先頭から順に記憶内容を読み出し、ＢＳＰ２６を第２の記憶装置３２に転送する。この際、第２の記憶装置３２におけるデータの転送先アドレスは、電源投入後にＣＰＵ２１が最初に命令をフェッチするアドレスを先頭として順次設定される。本実施形態では、ＣＰＵ２１が最初に命令をフェッチするアドレスを第２の記憶装置３２の先頭アドレスとする。
【００７７】
図５は、転送判定部２０による制御処理の一例を示したフローチャートである。なお、ここでは、説明の便宜上、ＢＳＰのサイズは１ブロック以下とする。また、図における変数Ｂは、ＢＳＰ読み出しブロック番号を示している。
【００７８】
図５と図１とを併せて参照して、電源が投入されると、まず、転送判定部２０は、変数ＢにＢＳＰ検索先頭ブロックの番号Ｍを設定する（ステップＳ１０１）。これにより、第１の記憶装置３１内の読み出し開始位置は、先頭のブロック内における先頭ページに設定される。
【００７９】
次に、転送判定部２０は、管理情報記憶部２９に記憶された管理情報３０のうち、Ｂ番目のブロックに対応する管理情報を読み出す（ステップＳ１０２）。
【００８０】
次に、転送判定部２０は、読み出されたＢ番目の管理情報が正常かどうかを判定する（ステップＳ１０３）。
【００８１】
Ｂ番目のブロックに対応する管理情報が正常ブロックを表す値であれば（ステップＳ１０３でＹＥＳ）、転送判定部２０はＢ番目のブロックの転送を転送制御部１８に指示する（ステップＳ１０４）。転送判定部２０がＢ番目のブロックを転送するように転送制御部１８に指示すると、転送制御部１８は、第１の記憶装置３１からＢ番目のブロックを読み出し、第２の記憶装置３２における所定のアドレスに転送する。この場合、転送装置２４は、ＢＳＰ２６の転送は成功したとみなして処理を終了する。また、通知部１９は、ＣＰＵ制御装置１７に転送完了通知信号２２を出力する。
【００８２】
一方、Ｂ番目のブロックに対応する管理情報が不良ブロックを表す値であれば（ステップＳ１０３でＮＯ）、転送判定部２０は、変数Ｂに“１”を加算してから（ステップＳ１０５）、変数ＢがＢＳＰ検索終了ブロックの番号Ｎより小さいかどうかを判定する（ステップＳ１０６）。
【００８３】
ＢがＮより小さい場合には（ステップＳ１０６でＹＥＳ）、転送判定部２０は、ステップＳ１０２に戻って上記の処理を繰り返す。また、ＢがＮより小さくない場合（ステップＳ１０６でＮＯ）には、転送判定部２０は、ＢＳＰ２６の転送は失敗したとみなして処理を終了する。
【００８４】
このように制御すると、転送判定部２０は、最大（Ｎ−Ｍ）個のブロックについて不良ブロックを避けながら、ＢＳＰ２６を探索することができる。なお、上記のＭ（検索開始ブロック）及びＮ（検索終了ブロック）の値として、転送装置２４に予め記憶された所定の値を使用できる。また、Ｍ及びＮの値を、スイッチなどを用いて外部から変更できるように情報処理装置１を構成しても良い。
【００８５】
その後、上述したように、ＣＰＵ制御装置１７は、通知部１９から転送完了通知信号２２を受けると、ＢＳＰ２６の転送が正常に完了したことを認識し、ＣＰＵ２１が動作可能となるようにＣＰＵ起動制御信号２３を変化させる。これに伴い、ＣＰＵ２１は、第２の記憶装置３２から命令フェッチを開始する。これに対して、ＢＳＰ２６の転送が正常に完了しなかった場合は、通知部１９は、転送完了通知信号２２を出力しないため、ＣＰＵ起動制御信号２３は変化せず、ＣＰＵ２１は第２の記憶装置３２から命令フェッチを行わない。なお、ＣＰＵ制御装置１７を用いてＣＰＵ２１による命令フェッチを制御する方法には、ＣＰＵ２１に供給されるリセット信号を制御する方法や、ＣＰＵ２１に供給されるクロック信号を制御する方法などの他の方法を採用しても良い。
【００８６】
図６は、ＣＰＵ２１によるブートストラップ処理の一例を示したフローチャートである。なお、この図においては、変数Ｂは、メインプログラム読み出し時のブロック番号を示している。
【００８７】
図６と図１とを併せて参照して、ＢＳＰ２６の第２の記憶装置３２への転送が完了すると、ＣＰＵ２１は、まず、ＢＳＰ２６のシステムコンフィギュレーション部に格納されたデータを用いて、システムコンフィギュレーションを行う（ステップＳ２０１）。これにより、例えば、メモリーインタフェイス回路などの各種のパラメータが設定され、ＣＰＵ２１は第３の記憶装置３３にアクセスすることが可能となる。
【００８８】
次に、ＣＰＵ２１は、変数Ｂにメインプログラムを読み出すブロックの先頭ブロック番号Ｐを設定する（ステップＳ２０２）。
【００８９】
次に、ＣＰＵ２１は、Ｂ番目のブロックに対応する管理情報を管理情報記憶部２９から読み出し（ステップＳ２０３）、Ｂ番目のブロックが正常であるかどうかを判定する（ステップＳ２０４）。Ｂ番目のブロックが正常ブロックである場合（ステップＳ２０４でＹＥＳ）、第１の記憶装置３１におけるＢ番目のブロックを第３の記憶装置３３における所定のアドレスにコピーし（ステップＳ２０５）、変数Ｂに“１”を加算する（ステップＳ２０６）。また、Ｂ番目のブロックが不良ブロックであった場合（ステップＳ２０４でＮＯ）、ＣＰＵ２１は、ステップＳ２０５を実行せずに、変数Ｂに”１”を加算する（ステップＳ２０６）。
【００９０】
そして、ＣＰＵ２１は、変数Ｂがメインプログラム検索終了ブロックの番号Ｑより小さいかどうかを判定する（ステップＳ２０７）。
【００９１】
ＢがＱより小さい場合（ステップＳ２０７でＹＥＳ）、ＣＰＵ２１は、ステップＳ２０３に戻って同様の処理を繰り返す。また、ＢがＱより小さくない場合（ステップＳ２０７でＮＯ）には、ＣＰＵ２１は、メインプログラム２７の転送は完了したとみなして処理を終了する。
【００９２】
このように、ＣＰＵ２１は、第２の記憶装置３２上のＢＳＰ２６を実行することにより、最大（Ｑ−Ｐ）個のブロックについて不良ブロックを避けながら、第１の記憶装置３１のメインプログラム２７を第３の記憶装置３３に転送する。その後、ＣＰＵ２１は、第３の記憶装置３３上のメインプログラム２７を実行する。
【００９３】
以上説明したように、情報処理装置１によれば、第１の記憶装置３１として、例えばＮＡＮＤ型フラッシュメモリのような低信頼性メモリを用いた場合であっても、転送装置２４は、第１の記憶装置３１に存在する不良ブロックの位置を示す管理情報３０に基づいて、第１の記憶装置３１に格納されたプログラムを、不良ブロックを回避しながら転送することができる。これにより、ＣＰＵ２１は、システムブートを安定的に行うことが可能となる。
【００９４】
また、本実施形態に係る情報処理装置１においては、不良ブロックを一旦読み出して検査符号を計算したり比較したりする必要もないため、システムブート時間を短縮することが可能となる。また、検査符号では検出することのできない不良ブロックの誤転送を回避することも可能となる。
【００９５】
特に、本実施形態では、転送装置２４に管理情報３０が含まれているため、転送装置２４は、他のメモリへアクセスする必要がない。したがって、簡単な回路によって転送装置２４を構成することが可能となる。
【００９６】
（第２の実施形態）
図７は、本発明の第２の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置２の基本的な構成は、第１の実施形態に係るものと同様であるので、以下では相違点を中心に説明する。
【００９７】
まず、本実施形態に係る情報処理装置２においては、第１の記憶装置３７に存在する不良ブロックの位置を示す管理情報４１が、第１の記憶装置３７における所定の正常ブロックに記憶されている点が、第１の実施形態とは異なっている。また、第１の記憶装置３７から管理情報４１を取得する管理情報取得部３９が転送装置４０に更に含まれている点が、第１の実施形態とは異なっている。
【００９８】
図８は、転送判定部３８による制御処理の一例を示したフローチャートである。なお、この図においても、ＢＳＰ２６のサイズは１ブロック以下であるとする。
【００９９】
図８と図７とを併せて参照して、電源が投入されると、転送判定部３８は、まず、変数ＢにＢＳＰ検索先頭ブロックの番号Ｍを設定する（ステップＳ３０１）。これにより、第１の記憶装置３７における読み出し開始位置が、先頭ブロック内の先頭ページに設定される。
【０１００】
次に、転送判定部３８は、管理情報取得部３９に管理情報４１を読み出すように指示する（ステップＳ３０２）。
【０１０１】
次に、転送判定部３８は、管理情報取得部３９から管理情報４１を受け取ると（ステップＳ３０３）、管理情報４１からＢ番目のブロックに対応するデータを読み出し、Ｂ番目のブロックが正常であるかどうかを判定する（ステップＳ３０４）。
【０１０２】
Ｂ番目のブロックに対応する管理情報が正常ブロックを表す値であれば（ステップＳ３０４でＹＥＳ）、転送判定部３８は、Ｂ番目のブロックを転送するように転送制御部１８に指示する（ステップＳ３０５）。転送判定部３８がＢ番目のブロックを転送するように転送制御部１８に指示すると、転送制御部１８は、第１の記憶装置３７におけるＢ番目のブロックを読み出し、第２の記憶装置３２における所定のアドレスに転送する。この場合、転送装置４０は、ＢＳＰ２６の転送は成功したとみなして処理を終了する。また、通知部１９は、ＣＰＵ制御装置１７に転送完了通知信号２２を出力する。
【０１０３】
一方、Ｂ番目のブロックに対応する管理情報が不良ブロックを表す値であれば（ステップＳ３０４でＮＯ）、転送判定部３８は、変数Ｂに“１”を加算する（ステップＳ３０６）。
【０１０４】
そして、転送判定部３８は、変数ＢがＢＳＰ検索終了ブロックの番号Ｎより小さいかどうかを判定する（ステップＳ３０７）。
【０１０５】
ＢがＮより小さい場合（ステップＳ３０７でＹＥＳ）は、転送判定部３８は、ステップＳ３０２に戻って上記と同様の処理を繰り返す。また、ＢがＮより小さくない場合（ステップＳ３０７でＮＯ）は、転送判定部３８は、ＢＳＰ２６の転送は失敗したとみなして処理を終了する。
【０１０６】
このようにして、転送判定部３８は、最大（Ｎ−Ｍ）個のブロックについて不良ブロックを避けながら、ＢＳＰ２６を探索する。なお、上記Ｍ及びＮの値として、転送装置４０に記憶された所定の値を使用することができる。また、スイッチなどを用いて外部からＭ及びＮの値を変更できるように情報処理装置２を構成しても良い。更に、本実施形態では、管理情報取得部３９は、管理情報４１の全体を取得するように構成されているが、Ｂ番目のブロックに対応する管理情報だけを取得するようにしても良い。
【０１０７】
以降は、情報処理装置２は、第１の実施形態と同様にして後続の処理を行うため、第１の実施形態に係るものと同様の効果を奏することができる。これに加えて、本実施形態に係る情報処理装置２では、管理情報４１が第１の記憶装置３７に格納されているため、転送装置４０は、管理情報を記憶するための不揮発性の記憶装置を備える必要がない。これにより、システムのコストダウンを図ることが可能となる。
【０１０８】
（第３の実施形態）
図９は、本発明の第３の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置３の基本的な構成は、第２の実施形態（図７）に係るものと同様であるが、転送装置４５に管理情報ポインタ記憶部４４が更に含まれている点が第２の実施形態とは異なっている。
【０１０９】
管理情報ポインタ記憶部４４は、不揮発性の記憶装置よりなる。そして、転送装置４５は、ＣＰＵ２１がデータバス１６ｄを介して管理情報ポインタ記憶部４４にデータを書き込むことができるように構成されている。管理情報ポインタ記憶部４４には、第１の記憶装置３７に保持される管理情報４１のアドレスが管理情報ポインタとして格納されている。管理情報ポインタとして使用する値に特に制約はないが、例えば、第１の記憶装置３７内の管理情報４１が格納されているブロックの番号を使用することが望ましい。
【０１１０】
管理情報取得部４３は、管理情報４１の取得時には、管理情報ポインタ記憶部４４に記憶された管理情報ポインタを参照して、管理情報４１の場所を特定する。また、管理情報ポインタ記憶部４４は、ＣＰＵ２１による管理情報４１の書き込みに伴って更新されるように構成されている。
【０１１１】
以上のように構成すると、管理情報４１自体は第１の記憶装置３７に記憶され、管理情報４１の位置情報のみが不揮発性の記憶装置よりなる管理情報ポインタ記憶部４４に記憶されるため、転送装置４５に要する不揮発性の記憶装置の容量を小さくすることができる。例えば、第１の記憶装置３７が２０４８ブロックから構成される場合、管理情報４１の全体を転送装置４５に記憶させようとすると、２０４８ビットの容量の不揮発性記憶装置が必要となるが、管理情報ポインタのみを記憶させる場合は例えば１１ビットで済むことになる。これによって、システムのコストダウンを図ることが可能となる。
【０１１２】
また、管理情報４１を記憶したブロックが後発的に不良ブロックとなった場合でも、管理情報４１を正常ブロックへと移動させることが容易となるため、システムが使用不可となることを防止することができる。
【０１１３】
更に、ＣＰＵ２１が管理情報４１の位置情報である管理情報ポインタを書き換えることができるように転送装置４５を構成しておけば、ＣＰＵ２１は、管理情報４１の書き込み時に、併せて管理情報ポインタも書き換えることができる。この場合、ＣＰＵ２１による管理情報４１の書き込みと連動して管理情報ポインタ記憶部４４も更新するように制御すれば、位置情報である管理情報ポインタの更新漏れを防止することが可能となる。
【０１１４】
（第４の実施形態）
図１０は、本発明の第４の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置４の基本的な構成は、第２の実施形態（図７）に係るものと同様であるが、第１の記憶装置４７に第１〜第３の管理情報４８〜５０が記憶されている点と、情報処理装置４に管理情報選択端子５４が更に含まれている点と、転送装置５３に管理情報ポインタ計算部５２が含まれている点とが、第２の実施形態に係るものとは異なっている。
【０１１５】
第１〜第３の管理情報４８〜５０は、例えば互いに同一の値を保持しており、それぞれが第１の記憶装置４７において異なる正常なブロックに記憶されている。このように構成すると、いずれかの管理情報が後天的に不良となった場合、他の管理情報をバックアップとして使用することが可能となる。
【０１１６】
管理情報選択端子５４は、管理情報を選択するための選択情報を外部から入力するための端子である。
【０１１７】
管理情報ポインタ計算部５２は、管理情報選択端子５４から入力された選択情報の値に応じて、管理情報取得部５１に提供する管理情報ポインタを計算する。管理情報選択端子５４に入力される値は、特に限定されず、管理情報が格納されているブロックから管理情報を選択することが可能な値であれば良い。
【０１１８】
まず、初期状態では、管理情報選択端子５４には、第１の管理情報４８を示す値が設定されている。第１の管理情報４８を用いて、システムブートを行えなかった場合には、ユーザは管理情報選択端子５４の値を、第２の管理情報４９を示す値に切替えて、再度システムブートを行う。
【０１１９】
このように構成すると、いずれかの管理情報を格納するブロックが破損しても、他の管理情報に切替えてブートを再試行することが可能となる。また、入力された選択情報に基づいて、管理情報ポインタ計算部５２が位置情報を算出するため、管理情報選択端子５４を少ないビットで構成することができ、システムのコストを低減させることが可能となる。
【０１２０】
なお、ここでは、第１の記憶装置４７に３つの管理情報が含まれる場合について説明したが、管理情報の数は必ずしも３つである必要はなく、２以上の任意の数であれば良い。また、変形例として、転送装置５３における管理情報ポインタ計算部５２を省略し、管理情報選択端子５４から入力された選択情報を管理情報取得部５１に直接与えるように情報処理装置４を構成しても良い。更に、管理情報線選択端子３６には、第１〜第３の管理情報４８〜５０の位置情報を直接入力してもよい。
【０１２１】
（第５の実施形態）
図１１は、本発明の第５の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置５の基本的な構成は、第４の実施形態（図１０）と同様であるが、第１の記憶装置５７に記憶されるプログラム等の構成が、第４の実施形態とは大きく異なっている。
【０１２２】
第１の記憶装置５７には、図１１に示されるように、第１の管理情報５８と第１のＢＳＰ５９と、第１のメインプログラム６０と、第２の管理情報６１と、第２のＢＳＰ６２と、第２のメインプログラム６３とが記憶されている。尚、本実施形態においては、第１のメインプログラム６０は、第２のメインプログラム６３とは異なるプログラムである。
【０１２３】
第１の管理情報５８には、第１の管理情報５８と第１のＢＳＰ５９と第１のメインプログラム６０とが記憶されるブロックは正常ブロックとして登録され、第２の管理情報６１と第２のＢＳＰ６２と第２のメインプログラム６３とが格納されるブロックは不良ブロックとして登録されている。
【０１２４】
逆に、第２の管理情報６１には、第２の管理情報６１と第２のＢＳＰ６２と第２のメインプログラム６３とが格納されるブロックは正常ブロックとして登録され、第１の管理情報５８と第１のＢＳＰ５９と第１のメインプログラム６０とが格納されるブロックは不良ブロックとして登録されている。
【０１２５】
また、第１のＢＳＰ５９は、第１のメインプログラム６０を第１の記憶装置５７から第３の記憶装置３３へ転送するための情報を含み、第２のＢＳＰ６２は、第２のメインプログラム６３を第１の記憶装置５７から第３の記憶装置３３へ転送するための情報を含んでいる。
【０１２６】
このように構成すると、管理情報選択端子５４を介して、第１の管理情報５８を選択した場合には、第１のメインプログラム６０を起動することができ、第２の管理情報６１を選択した場合には、第２のメインプログラム６３を起動することができる。したがって、必要に応じて管理情報選択端子５４を介して、異なったプログラムを外部から選択し、起動することが可能となる。
【０１２７】
なお、本実施形態の情報処理装置５は、管理情報、ＢＳＰ及びメインプログラムをそれぞれ２組備えているが、３組以上備えた構成としても良い。
【０１２８】
（第６の実施形態）
図１２は、本発明の第６の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置６の基本的な構成は第２の実施形態（図７）と同様であるが、第１の記憶装置６７に第１〜第３の管理情報４８〜５０が記憶されている点と、転送装置７１に更に多数決判定部６９が含まれている点とが、第２の実施形態とは異なっている。
【０１２９】
第１〜第３の管理情報４８〜５０の各々は、同一の値を保持している。これらの管理情報の各々は、第１の記憶装置６７における固定的に決められた場所へ記憶されていても良いし、第２の実施形態におけるものと同様に、記憶される位置を変更自在としても良い。なお、本実施形態では、第１の記憶装置６７は、３つの管理情報を記憶しているが、必ずしも３つである必要はなく、２以上の任意の数であれば良い。
【０１３０】
多数決判定部６９は、あるブロックに対する複数の管理情報から、多数を占める値を多数決によって選択し、選択された管理情報を転送判定部６８に提供する。多数決判定部６９は、転送判定部６８からあるブロックの管理情報が参照されたときに、まず、当該ブロックに対する第１の管理情報４８、第２の管理情報４９及び第３の管理情報５０の情報をそれぞれ読み取る。次に、多数決判定部６９は、読み取られた管理情報に基づいて、正常ブロックを示す管理情報の数と不良ブロックを示す管理情報の数とをそれぞれ計数する。その結果、正常ブロックを示す管理情報の数が不良ブロックを示す管理情報の数より多ければ、多数決判定部６９は、参照されたブロックは正常ブロックであるとの情報を転送判定部６８に返す。また、正常ブロックを示す管理情報の数が不良ブロックを示す管理情報の数以下であれば、多数決判定部６９は、参照されたブロックは不良ブロックであるとの情報を転送判定部６８に返す。
【０１３１】
図１３は、多数決判定部６９による制御処理の一例を示したフローチャートである。図１２及び図１３を併せて参照して、転送判定部６８からＢ番目のブロックの管理情報が参照された場合、多数決判定部６９は、まず、正常ブロックを示す管理情報の個数を保持する変数Ｔと、不良ブロックを示す管理情報の個数を保持する変数Ｆとをそれぞれ“０”で初期化し、読み込んだ管理情報の個数を保持する変数Ｋを“１”で初期化する（ステップＳ４０１）。
【０１３２】
次に、多数決判定部６９は、管理情報取得部７０を介して、Ｋ番目の管理情報からＢ番目のブロックに対応する管理情報を読み込む（ステップＳ４０２）。
【０１３３】
次に、多数決判定部６９は、ステップＳ４０２で読み出した管理情報に基づいて、Ｂ番目のブロックが正常ブロックであるかどうかを判定する（ステップＳ４０３）。Ｂ番目のブロックが正常ブロックである場合（ステップＳ４０３でＹＥＳ）、多数決判定部６９は、変数Ｔに“１”を加算し（ステップＳ４０４）、Ｂ番目のブロックが不良ブロックである場合（ステップＳ４０３でＮＯ）は、多数決判定部６９は、変数Ｆに“１”を加算する（ステップＳ４０５）。
【０１３４】
次に、多数決判定部６９は、変数Ｋに“１”を加算した後（ステップＳ４０６）、読み込んだ管理情報の個数Ｋが、記憶されている管理情報の個数より大きいかどうかを判定する（ステップＳ４０７）。Ｋが管理情報の個数より大きくない場合は、複数の管理情報の全てを参照していないため、多数決判定部６９は、ステップＳ４０２へ戻って上記の処理を繰り返す。
【０１３５】
Ｋが管理情報の個数より大きい場合（ステップＳ４０７でＹＥＳ）、多数決判定部６９は、変数Ｔと変数Ｆとを比較する（ステップＳ４０８）。変数Ｔが変数Ｆより大きい場合（ステップＳ４０８でＹＥＳ）、すなわち、複数の管理情報における多数が正常ブロックを示す値である場合には、多数決判決部６９は、Ｂ番目のブロックは正常ブロックであると判定する（ステップＳ４０９）。また、変数Ｔが変数Ｆより大きくない場合（ステップＳ４０８でＮＯ）、すなわち、複数の管理情報における半数以上が不良ブロックを示す値である場合には、多数決判定部６９は、Ｂ番目のブロックは不良ブロックである判定する（ステップＳ４１０）。多数決判定部６９は、管理情報の値を多数決により選択した後、転送判定部６８へと選択された管理情報を返して処理を終了する。
【０１３６】
このように構成すると、多数決判定部６９は、比較的簡単な処理によって、第１の記憶装置６７に格納された第１〜第３の管理情報４８〜５０の各々の値を多数決によって選択することができる。これにより、第１の記憶装置６７が突発的に故障した場合でも、管理情報の信頼性を確保することが可能となる。
【０１３７】
なお、本実施形態では、多数決判定部６９は、複数の管理情報の全てを参照するように構成されているが、多数決判定部６９は、管理情報の総数のうち過半数を占める値を検出した時点で、多数決による管理情報の選択処理を終了しても良い。このように構成すれば、多数決判定部６９は、多数決の判定処理を早期に終了することができるため、システムブートに要する時間を短縮することが可能となる。
【０１３８】
また、第１〜第３の管理情報４８〜５０を第１の記憶装置６７へ記憶させる際に、第１〜第３の管理情報４８〜５０の各々を予め定めたビット数ずつ、循環シフトして記憶させても良い。この場合、多数決判定部６９は、第１〜第３の管理情報４８〜５０を、記憶時と反対方向へ予め定めたビット数ずつ循環シフトしてから参照すれば良い。
【０１３９】
例えば、循環シフトを右に５ビットずつ行う場合、第１の管理情報４８はそのまま記憶させ、第２の管理情報４９は元の値に比べて右へ５ビット循環シフトさせてから記憶させ、第３の管理情報５０は元の値に比べて右へ１０ビット循環シフトさせてから記憶させれば良い。読み出し時には、多数決判定部６９は、第１の管理情報４８はそのまま参照し、第２の管理情報４９は左へ５ビット循環シフトさせて参照し、第３の管理情報５０は左へ１０ビット循環シフトさせて参照すれば良い。
【０１４０】
一般にＮＡＮＤ型フラッシュメモリは、その構造上、同一ブロック内において、異なるページに渡って同一カラムアドレスのビットが連続して故障する傾向が強いが、上記のように構成すれば、複数の管理情報の各々は異なるカラムアドレスに記憶されるため、全ての管理情報が同時に失われる可能性が軽減される。仮に、一部の管理情報が失われた場合には、多数決判定部６９の処理によって失われた情報が補完されるため、ＮＡＮＤ型フラッシュメモリの故障に対する信頼性を更に向上させることが可能となる。
【０１４１】
（第７の実施形態）
図１４は、本発明の第７の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置７の基本的な構成は、第２の実施形態（図７）に係るものと同様であるが、第１の記憶装置６７に第１〜第３の管理情報４８〜５０が含まれている点と、転送装置７７に世代比較部７５が更に含まれている点とが、第２の実施形態とは異なっている。
【０１４２】
第１〜第３の管理情報４８〜５０は、それぞれ同一の値を記憶している。なお、本実施形態では、第１の記憶装置６７は、３つの管理情報を記憶しているが、必ずしも３つである必要はなく、２以上の管理情報を記憶していれば良い。また、これらの管理情報の各々は、転送装置７７で固定的に決められた場所に記憶されていても良いし、第２の実施形態と同様に、その記憶される位置を変更自在に構成しても良い。
【０１４３】
以下では、第１〜第３の管理情報４８〜５０が、この順に第１の記憶装置６７に書き込まれたものと想定する。この場合、管理情報取得部７６は、管理情報の書き込まれた順、すなわち、第１の管理情報４８、第２の管理情報４９及び第３の管理情報の順に読み出しを行う。また、以下では、第１〜第３の管理情報４８〜５０は、連続する３つのブロックにそれぞれ格納されているものとする。
【０１４４】
世代比較部７５は、転送判定部７４が管理情報取得部７６に管理情報を取得するように指示したときに、第１の記憶装置６７に格納されている第１〜第３の管理情報４８〜５０をこれらの書き込み時と同じ順序で読み出すように管理情報取得部７６に指示する。世代比較部７５は、管理情報取得部７６が順次読み出した管理情報の値を比較して、その中から不良ではなく、最新世代の可能性が高い管理情報を判定する。そして、不良でなく、最新世代の可能性が高いと判定した管理情報を転送判定部７４へと返すように構成されている。
【０１４５】
具体的には、世代比較部７５は、複数の管理情報のうち、１番目に読み出した管理情報と２番目に読み出した管理情報とが同じ値を持つ場合、この値を最新世代の管理情報として、転送判定部７４に渡す。
【０１４６】
一方、１番目に読み出した管理情報と２番目に読み出した管理情報とが異なる値を持つ場合には、世代比較部７５は、更に、２番目に読み出した管理情報と３番目に読み出した管理情報とを比較する。そして、２番目に読み出した管理情報と３番目に読み出した管理情報とが異なる値の場合には、世代比較部７５は、１番目に読み出した管理情報を最新世代の管理情報として転送判定部７４に渡す。また、２番目に読み出した管理情報と３番目に読み出した管理情報とが同じ値の場合には、世代比較部７５は、２番目に読み出した管理情報を前世代の管理情報として転送判定部７４に渡す。
【０１４７】
図１５は、第１〜第３の管理情報４８〜５０の一例を示した図である。上述したように、管理情報の書き込みは、第１〜第３の管理情報の順に行われる。この図は、これらの管理情報の更新途中で障害が発生した場合に、障害の発生タイミングに応じて管理情報の世代情報が取り得るパターンＡ〜Ｇを例示している。例えば、図におけるケースＢは、第１の管理情報及び第２の管理情報は最新世代の情報に更新されたが、第３の管理情報は前世代のまま更新されていないことを示している。
【０１４８】
図１６は、世代比較部７５による制御処理の一例を示すフローチャートである。図１６と図１４とを併せて参照して、転送判定部７４が管理情報を参照すると、世代比較部７５は、まず、第１の記憶装置６７から第１の管理情報４８をバッファＩ１に読み出し（ステップＳ５０１）、第２の管理情報４９をバッファＩ２に読み出す（ステップＳ５０２）。これらのバッファは、例えば転送装置７７内に含まれた不揮発性の記憶装置によって構成されている。
【０１４９】
次に、世代比較部７５は、バッファＩ１の値とバッファＩ２の値とを比較する（ステップＳ５０３）。バッファＩ１の値とバッファＩ２の値とが等しければ（ステップＳ５０３でＹＥＳ）、世代比較部７５は、バッファＩ１の値を最新世代と判定し、これを転送判定部７４へと渡し（ステップＳ５０６）、処理を終了する。このような処理は、例えば、図１５におけるケースＡ、Ｂ、Ｃ、Ｇのように管理情報の世代が分布している場合に行われる。このとき、ケースＡとＧとの区別はできないが、ケースＡ及びＧのいずれの場合にあっても、不良な管理情報が転送判定部７４へ渡されることはない。
【０１５０】
一方、バッファＩ１の値とバッファＩ２の値とが等しくない場合（ステップＳ５０３でＮＯ）、世代比較部７５は、第３の管理情報５０をバッファＩ３に読み出し（ステップＳ５０５）、バッファＩ２とバッファＩ３とを比較する（ステップＳ５０６）。バッファＩ２の値とバッファＩ３の値とが等しければ（ステップＳ５０５でＹＥＳ）、世代比較部７５は、バッファＩ２の値を管理情報として転送判定部７４へ渡し（ステップＳ５０７）、処理を終了する。このような処理は、例えば、図１５におけるケースＤ及びＦのように管理情報の世代が分布している場合に行われる。この場合、ケースＤとＦとの区別ができないが、ケースＤ及びＦのいずれの場合にあっても、不良な管理情報が転送判定部７４へと渡されることはない。
【０１５１】
また、バッファＩ２の値とバッファＩ３の値とが等しくない場合（ステップＳ５０５でＮＯ）は、世代比較部７５は、バッファＩ１を最新世代の管理情報と判定して、バッファＩ１の値を転送判定部７４へと渡す（ステップＳ５０７）。このような処理は、例えば、図１５におけるケースＥの場合に行われる。
【０１５２】
世代比較部７５は、上記のような制御処理を行うことにより、各管理情報の値を比較して不良な管理情報を省き、最新世代である可能性の高い管理情報を転送判定部７４へ渡す。この制御処理において最新世代の管理情報が得られない場合、世代比較部７５は、前世代の管理情報を転送判定部７４へと渡す。
【０１５３】
このように、本実施形態に係る情報処理装置７は、第１の記憶装置６７に格納された第１〜第３の管理情報４８〜５０の各値を比較し、例えば障害の発生によって管理情報が途中で更新されてない場合を検出することが可能となる。また、正常で最新世代の可能性が高い管理情報を選別することができるため、管理情報の信頼性を向上させることが可能となる。
【０１５４】
（第８の実施形態）
図１７は、本発明の第８の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置８の基本的な構成は、第７の実施形態（図１４）におけるものと同様であるが、管理情報の各々に第１〜第３の更新ラベル８１〜８３が含まれている点と、転送装置８６に更新ラベル取得部８５が含まれている点とが、第７の実施形態とは異なっている。
【０１５５】
第１の更新ラベル８１は、所定長のビット列よりなり、第１の管理情報４８の更新毎に前回とは異なるビット値が記憶される。例えば、更新ラベルのビット長を８ビットとし、更新ラベルに記録する値として１６進数の“ＡＡ”と“５５”とを順に用いる場合、ＣＰＵ２１は、第１の管理情報４８の一度目の更新時には第１の更新ラベル８１に“ＡＡ”を書き込み、次の更新時には第１の更新ラベル８１に“５５”を書き込む。このようにすれば、更新ラベル取得部８５は、第１の更新ラベル８１を参照することによって、第１の管理情報４８の更新状況を取得することができる。なお、更新ラベルのビット長や更新ラベルに書き込まれる値は、ここで示した例以外のものでも良いことは言うまでもない。また、第２の更新ラベル８２及び第３の更新ラベル８３も、第１の更新ラベル８１と同様に構成されている。
【０１５６】
更新ラベル取得部８５は、管理情報が書き込まれた順に、管理情報に対応する更新ラベルを読み出す。例えば、本実施形態において、第１〜第３の管理情報４８〜５０がこの順に書き込まれた場合は、更新ラベル取得部８５は、第１の更新ラベル８１、第２の更新ラベル８２及び第３の更新ラベル８３の順にこれらを読み出す。
【０１５７】
本実施形態に係る世代比較部８４は、転送判定部７４が管理情報取得部７６に管理情報を取得するよう指示した場合、第１の記憶装置８０に記憶されている管理情報の書き込み順に、それぞれの管理情報に対応する更新ラベルを取得するように、更新ラベル取得部８５に指示する。世代比較部８４は、更新ラベル取得部８５が順次読み出す第１〜第３の更新ラベル８１〜８３の値を比較して、不良でなく、最新世代の可能性が高い管理情報を判定する。そして、世代比較部８４は、最新世代の可能性が高い管理情報を取得するように管理情報取得部７６に指示し、取得された管理情報の値を転送判定部７４へと返す。
【０１５８】
図１８は、世代比較部８４による制御処理の一例を示したフローチャートである。図１８と図１７とを併せて参照して、転送判定部７４が管理情報を参照すると、世代比較部８４は、第１の記憶装置８０から、最初に書き込まれた第１の管理情報４８に対応する第１の更新ラベル８１をバッファＩ１に読み出し（ステップＳ５１１）、２番目に書き込まれた第２の管理情報４９に対応する第２の更新ラベル８２をバッファＩ２に読み出す（ステップＳ５１２）。
【０１５９】
次に、世代比較部８４は、バッファＩ１の値とバッファＩ２の値とを比較する（ステップＳ５１３）。バッファＩ１の値とバッファＩ２の値とが等しければ（ステップＳ５１３でＹＥＳ）、世代比較部８４は、第１の更新ラベル８１に対応した第１の管理情報４８を取得するように管理情報取得部７６に指示する（ステップＳ５１６）。そして、世代比較部８４は、第１の管理情報４８を最新世代の管理情報と判定して、第１の管理情報４８を転送判定部７４へ渡し（ステップＳ５１７）、処理を終了する。
【０１６０】
一方、バッファＩ１の値とバッファＩ２の値とが等しくなければ（ステップＳ５１３でＮＯ）、世代比較部８４は、３番目に書き込まれた第３の管理情報５０に対応する第３の更新ラベル８３をバッファＩ３に読み出し（ステップＳ５１４）、バッファＩ２の値とバッファＩ３の値とを比較する（ステップＳ５１５）。バッファＩ２の値とバッファＩ３の値とが等しければ（ステップＳ５１５でＹＥＳ）、世代比較部８４は、不良でなく、最新世代の管理情報はないものと判定し、第２の更新ラベル８２に対応した第２の管理情報４９を取得するように、管理情報取得部７６に指示する（ステップＳ５１８）。そして、世代比較部８４は、第２の管理情報４９を転送判定部７４へ渡し（ステップＳ５１９）、処理を終了する。
【０１６１】
また、バッファＩ２の値とバッファＩ３の値とが等しくなければ（ステップＳ５１５でＮＯ）、世代比較部８４は、第１の更新ラベル８１に対応した第１の管理情報４８を取得するように管理情報取得部７６に指示する（ステップＳ５１６）。そして、世代比較部８４は、第１の管理情報４８を最新世代の管理情報と判定して、第１の管理情報４８を転送判定部７４へ渡し（ステップＳ５１７）、処理を終了する。
【０１６２】
上記のような制御処理を行うことにより、世代比較部８４は、第１〜第３の更新ラベル８１〜８３を用いて、管理情報の更新処理時に発生した不良な管理情報を排除し、最新世代である可能性の高い管理情報を転送判定部７４へ渡すことが可能となる。また、この制御処理において最新世代の管理情報が得られない場合、世代比較部８４は、前世代の管理情報を転送判定部７４へと渡す。
【０１６３】
このように、本実施形態に係る情報処理装置８は、第１〜第３の更新ラベル８１〜８３に基づいて管理情報を取得することにより、読み取りデータ量やバッファサイズを削減することが可能となり、動作の高速化及びシステムの低コスト化を図ることが可能となる。
【０１６４】
例えば、２０４８ブロックを有する第１の記憶装置８０の各ブロックに対して１ビットの管理情報を用いる場合を想定する。この場合、管理情報そのものを用いて管理情報の世代を判定すると、２０４８ビットのデータ量を扱う必要があるが、管理情報ごとに設けた８ビットの更新ラベルを用いて世代判定を行うと、判定処理に必要なデータ量が８ビットで済むことになる。
【０１６５】
（第９の実施形態）
図１９は、本発明の第９の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置９の基本的な構成は、第８の実施形態（図１７）に係るものと同様であるが、転送装置９１に更新ラベル記憶部９０が更に含まれている点が、第８の実施形態とは異なっている。
【０１６６】
更新ラベル記憶部９０は、例えば不揮発性の記憶装置よりなり、第１〜第３の管理情報４８〜５０が更新される度に、使用された更新ラベルを比較用ラベルとして記憶する。
【０１６７】
転送判定部７４が管理情報取得部７６に管理情報を取得するよう指示すると、世代比較部８９は、第１の記憶装置８０に格納されている第１〜第３の管理情報４８〜５０が書き込まれた順に、第１〜第３の更新ラベル８１〜８３を取得するように更新ラベル取得部８５に指示する。世代比較部８９は、更新ラベル取得部８５が読み出した更新ラベルと、更新ラベル記憶部９０に記憶されている比較用ラベルとを比較する。これらが同一の値の場合は、世代比較部８９は、当該更新ラベルに対応する管理情報を最新世代の管理情報と判定する。そして、世代比較部８９は、判定した最新世代の管理情報を取得するように管理情報取得部７６に指示し、取得された管理情報の値を転送判定部７４に返す。
【０１６８】
図２０は、世代比較部８９による制御処理の一例を示したフローチャートである。図２０と図１９とを併せて参照して、世代比較部８９は、転送判定部７４から管理情報が参照されると、読み出すラベル番号Ｌを“０”で初期化する（ステップＳ５２１）。
【０１６９】
次に、世代比較部８９は、ラベル番号Ｌに“１”を加えた後（ステップＳ５２２）、Ｌ番目の更新ラベルをバッファＩに読み出し（ステップＳ５２３）、バッファＩの値と更新ラベル記憶部９０に記憶されている比較用ラベルの値とを比較する（ステップＳ５２４）。バッファＩの値と比較用ラベルの値が等しければ（ステップＳ５２４でＹＥＳ）、世代比較部８９は、Ｌ番目の管理情報を取得するように管理情報取得部７６に指示する（ステップＳ５２５）。そして、世代比較部８９は、取得した管理情報を最新世代の管理情報として転送判定部７４へ渡し（ステップＳ５２６）、処理を正常終了する。
【０１７０】
一方、バッファＩの値と比較用ラベルの値とが等しくなければ（ステップＳ５２４でＮＯ）、世代比較部８９は、ラベル番号Ｌが最後の更新ラベルを示す番号かどうかを判定する（ステップＳ５２７）。ラベル番号Ｌが最後の更新ラベルを示す番号の場合（ステップＳ５２７でＹＥＳ）、世代比較部８９は、有効な更新ラベルを取得することができず、処理は失敗となる。また、ラベル番号Ｌが最後の更新ラベルを示す番号でなければ、世代比較部８９は、ステップＳ５２２へ戻って同様の処理を繰り返す。
【０１７１】
上記のような制御処理を行うことにより、世代比較部８９は、更新ラベル記憶部９０に記憶される比較用ラベルに基づいて、最新世代の管理情報を確実に且つ効率よく検出することが可能となる。
【０１７２】
このように、本実施形態に係る情報処理装置９では、転送装置９１の更新ラベル記憶部９０に記憶された比較用ラベルを用いることにより、確実に最新世代の更新ラベルを検出することが可能となる。また、確実に最新世代の管理情報を使用することができるため、管理情報の信頼性をより向上させることが可能となる。
【０１７３】
なお、本実施形態では、更新ラベル記憶部９０は、比較用ラベルとして更新ラベルと同一の内容を記憶しているが、更新ラベル記憶部９０は、比較用ラベルとして使用した更新ラベルの番号を記憶しても良い。この場合、更新ラベル取得部８５は、比較用ラベルとして記憶された番号に応じた更新ラベルを使用すれば良い。
【０１７４】
（第１０の実施形態）
図２１は、本発明の第１０の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置１０の基本的な構成は、第７の実施形態（図１４）に係るものと同様であるが、第１の記憶装置９４に第１〜第３の管理情報フラグ９５〜９７が更に記憶されている点と、転送装置１００の世代比較部９８に管理情報フラグ判定部９９が含まれている点とが、第７の実施形態とは異なっている。
【０１７５】
第１の管理情報フラグ９５は、複数のビットよりなる。第１の管理情報フラグ９５には、第１の管理情報４８が管理情報である場合には第１の値が記憶され、第１の管理情報４８が他のデータである場合には第２の値が記憶される。これにより、仮に第１の管理情報４８の領域に管理情報以外の他のデータが書き込まれていても、管理情報であることを識別することが可能となる。また、第１の管理情報フラグ９５は、第１の管理情報４８が書き換えられる度に、第１の値がセットされる。なお、第２の管理情報フラグ９６及び第３の管理情報フラグ９７の各々は、第１の管理情報フラグ９５と同様である。
【０１７６】
管理情報フラグ判定部９９は、第１〜第３の管理情報フラグ９５〜９７に基づいて、管理情報フラグの各々に対応する管理情報と、他のデータとを識別する。
【０１７７】
本実施形態に係る世代比較部９８は、１番目に読み出した管理情報と２番目に読み出した管理情報とが同じ値を持つ場合は、その値を最新世代の管理情報と判定して、転送判定部７４に渡す。
【０１７８】
一方、１番目に読み出した管理情報と２番目に読み出した管理情報とが異なる値を持つ場合、世代比較部９８は、管理情報フラグ判定部９９が１番目に読み出した管理情報の管理情報フラグを参照する。その結果、１番目に読み出した管理情報の管理情報フラグが管理情報を示す第１の値の場合には、世代比較部９８は、１番目に読み出した管理情報の値を転送判定部７４に渡す。また、１番目に読み出した管理情報の管理情報フラグが他のデータを示す第２の値である場合には、世代比較部９８は、２番目に読み出した管理情報の値を転送判定部７４に渡す。
【０１７９】
図２２は、世代比較部９８による制御処理の一例を示したフローチャートである。図２２と図２１とを併せて参照して、転送判定部７４から管理情報が参照されると、世代比較部９８は、第１の記憶装置９４に格納される複数の管理情報のうち、最初に書き込まれた第１の管理情報４８及び第１の管理情報フラグ９５をバッファＩ１に読み出し（ステップＳ５３１）、２番目に書き込まれた第２の管理情報４９及び第２の管理情報フラグ９６をバッファＩ２に読み出す（ステップＳ５３２）。
【０１８０】
次に、世代比較部９８は、バッファＩ１の値とバッファＩ２の値とを比較する（ステップＳ５３３）。バッファＩ１の値とバッファＩ２の値とが等しければ（ステップＳ５３３でＹＥＳ）、世代比較部９８は、バッファＩ１を最新世代の管理情報と判定して、この値を転送判定部７４へ渡し（ステップＳ５３６）、処理を終了する。
【０１８１】
一方、バッファＩ１の値とバッファＩ２の値とが等しくなければ（ステップＳ５３３でＮＯ）、世代比較部９８は、管理情報フラグ判定部９９により、バッファＩ１に取得された第１の管理情報フラグ９５の値をチェックする（ステップＳ５３４）。その結果、第１の管理情報フラグ９５が、管理情報を示す第１の値であれば（ステップＳ５３４でＹＥＳ）、世代比較部９８は、バッファＩ１を最新世代の管理情報と判定して、バッファＩ１に取得された第１の管理情報４８を転送判定部７４へ渡し（ステップＳ５３６）、処理を終了する。また、第１の管理情報フラグ９５が管理情報を示す第１の値でなければ（ステップＳ５３４でＮＯ）、世代比較部９８は、バッファＩ２を前世代の管理情報と判定して、バッファＩ２に取得された第２の管理情報４９を転送判定部７４へ渡し（ステップＳ５３５）、処理を終了する。
【０１８２】
以上のような制御処理を行うことによって、世代比較部９８は、各管理情報および管理情報フラグの値を比較して、不良な管理情報を省き、転送判定部へ最新世代である可能性の最も高い管理情報を渡すことが可能となる。また、このような制御においては、最新世代の管理情報が得られない場合には、前世代の管理情報が転送判定部７４に渡される。
【０１８３】
このように、本実施形態に係る情報処理装置１０では、管理情報と他のデータとを確実に識別することができるため、最新世代の管理情報を検出する精度が高まり、管理情報の信頼性を向上させることが可能となる。
【０１８４】
望ましくは、第１〜第３の管理情報フラグ９５〜９７には、８ビット以上の値を用いるのが良い。管理情報フラグのビット長をある程度大きくしておけば、第１の記憶装置９４の消去処理中または書き込み処理中に障害が発生した場合でも、管理情報フラグが偶然に管理情報を示す値になってしまうおそれを回避することが可能となる。また、同様の理由により、管理情報フラグの値には、第１の記憶装置９４の消去時におけるビットパターン以外の値を用いることがより望ましい。
【０１８５】
（第１１の実施形態）
図２３は、本発明の第１１の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置１１の基本的な構成は、第８の実施形態（図１７）に係るものと同様であるが、第１の記憶装置１０３に更に第１〜第３の管理情報フラグ９５〜９７が記憶されている点と、世代比較部１０５に管理情報フラグ判定部９９が含まれている点と、転送装置１０６に更新ラベル記憶部９０が含まれている点と、図１７における更新ラベル取得部の代わりに付属情報取得部１０４が含まれている点とが、第８の実施形態とは異なっている。
【０１８６】
なお、第１〜第３の管理情報フラグ９５〜９７と、世代比較部１０５における管理情報フラグ判定部９９とは、第１０の実施形態（図２１）におけるものと同様である。また、転送装置１０６の更新ラベル記憶部９０は、第９の実施形態（図１９）におけるものと同様である。
【０１８７】
付属情報取得部１０４は、管理情報の世代判定を行う際に、管理情報に対応する更新ラベル及び管理情報フラグの両方を第１の記憶装置１０３から取得する機能を備えている。
【０１８８】
以下では、第１〜第３の管理情報４８〜５０は、連続した３つのブロックに格納されているものとする。また、第１〜第３の更新ラベル８１〜８３の各々は、対応する第１〜第３の管理情報４８〜５０の各々と同じブロックに格納されているものとする。
【０１８９】
図２４は、世代比較部１０５による制御処理の一例を示したフローチャートである。図２４と図２３とを併せて参照して、転送判定部７４が管理情報を参照すると、世代比較部１０５は、ラベル番号Ｌ、使用する管理情報の番号Ｃ、使用する管理情報の世代Ｐをそれぞれ“０”で初期化し、バッファＩ１及びバッファＩ２をそれぞれ１６進数の“ＦＦ”で初期化する（ステップＳ５４１）。
【０１９０】
世代比較部１０５は、ラベル番号Ｌに“１”を加えた後、付属情報取得部１０４を介して、Ｌ番目の管理情報フラグと更新ラベルとを取得し（ステップＳ５４２）、更に、使用する管理情報の番号Ｃの値を判定する（ステップＳ５４３）。
【０１９１】
使用する管理情報の番号Ｃが０の場合（ステップＳ５４３でＹＥＳ）は、まだ管理情報の最初の一件が検出されていないため、世代比較部１０５は、管理情報フラグ判定部９９によって、Ｌ番目の管理情報フラグが管理情報を示す値であるかどうかを判定する（ステップＳ５４４）。この結果、Ｌ番目の管理情報フラグが管理情報を示す第１の値であれば（ステップＳ５４４でＹＥＳ）世代比較部１０５は、バッファＩ１にＬ番目の更新ラベルの値を読み込み（ステップＳ５４５）、管理情報の番号Ｃにラベル番号Ｌの値をセットした後（ステップＳ５４６）、後述のステップＳ５４７の処理を行う。
【０１９２】
ステップＳ５４４において、Ｌ番目の管理情報フラグが管理情報を示す第１の値でない場合（ステップＳ５４４でＮＯ）は、世代比較部１０５は、ステップＳ５４５及びＳ５４６の処理は行わずに、後述のステップＳ５４７の処理を行う。
【０１９３】
一方、使用する管理情報の番号Ｃが０でない場合（ステップＳ５４３でＮＯ）は、既にバッファＩ１に更新ラベルの値が読み込まれているため、世代比較部１０５は、管理情報フラグ判定部９９によって、Ｌ番目の管理情報フラグが管理情報を示す値であるかどうかを判定する（ステップＳ５４８）。この結果、Ｌ番目の管理情報フラグが管理情報を示す第１の値であれば（ステップＳ５４８でＹＥＳ）、世代比較部１０５は、バッファＩ２にＬ番目の更新ラベルの値を読み込み（ステップＳ５４９）、バッファＩ１の値とバッファＩ２との値とを比較する（ステップＳ５５０）。そして、バッファＩ１の値とバッファＩ２の値とが等しい場合（ステップＳ５５０でＹＥＳ）、世代比較部１０５は、後述のステップＳ５４７の処理を行う。
【０１９４】
ステップＳ５４７では、世代比較部１０５は、ラベル番号Ｌが最後の更新ラベルの番号であるか判定する。ラベル番号Ｌが最後の更新ラベルでない場合（ステップＳ５４７でＮＯ）は、世代比較部１０５は、ステップＳ５４２に戻って上述の処理を繰り返す。ラベル番号Ｌが最後の更新ラベルである場合（ステップＳ５４７でＹＥＳ）は、世代比較部１０５は、後述のステップＳ５５２の処理を行う。
【０１９５】
また、ステップＳ５４８でＮＯの場合（Ｌ番目の管理情報フラグが管理情報を示す第１の値ではない場合）と、ステップＳ５５０でＮＯの場合（バッファＩ１の値とバッファＩ２の値とが等しくない場合）は、世代比較部１０５は、ラベル番号Ｌから“１”を減じた後（ステップＳ５５１）、後述のステップＳ５５２の処理を行う。
【０１９６】
ステップＳ５５２では、世代比較部１０５は、使用する管理情報の番号Ｃの値を判定する。Ｃが０の場合（ステップＳ５５２でＹＥＳ）は、有効な管理情報は検出されなかったことになり（ステップＳ５５７）、世代比較部１０５は、その後処理を終了する。
【０１９７】
Ｃが０でない場合（ステップＳ５５２でＮＯ）は、世代比較部１０５は、バッファＩ１の値と更新ラベル記憶部９０に記憶されている比較用ラベルと比較する（ステップＳ５５３）。バッファＩ１が比較用ラベルと等しければ（ステップＳ５５３でＹＥＳ）、世代比較部１０５は、使用する管理情報の世代Ｐに最新世代を表す値“１”をセットし（ステップＳ５５４）、バッファＩ１が比較用ラベルと等しくなければ（ステップＳ５５３でＮＯ）、世代比較部１０５は、使用する管理情報の世代Ｐに前世代を表す値“２”をセットする（ステップＳ５５５）。その後、世代比較部１０５は、Ｃ番目の管理情報を管理情報取得部７６を介して取得し、取得された管理情報を転送判定部７４へと渡す（ステップＳ５５６）。
【０１９８】
以上のような世代比較部１０５による制御を行えば、第１〜第３の更新ラベル８１〜８３と、更新ラベル記憶部９０に記憶された比較用ラベルと、第１〜第３の管理情報フラグ９５〜９７とを用いることによって、第１〜第３の管理情報４８〜５０の世代を確実に判定することが可能となる。より具体的には、Ｐが１のときは、Ｃ番目からＬ番目までの管理情報は最新世代であり、Ｐが２のときは、Ｃ番目からＬ番目までの管理情報は前世代であり、Ｐが０のときは管理情報が得られなかったことが把握される。
【０１９９】
このように、本実施形態に係る情報処理装置１１によれば、更に確実に管理情報の世代を判定することが可能となり、管理情報の信頼性を一層向上させることが可能となる。
【０２００】
なお、本実施形態の情報処理装置１１においては、前世代の管理情報しか得られなかった場合でも、世代比較部１０５は、転送判定部７４へ前世代の管理情報を渡しているが、そのように構成する代わりに、前世代の管理情報しか得られなかった場合には、世代比較部１０５は、転送判定部７４に管理情報を渡さずに、システムエラーと判定しても良い。
【０２０１】
（第１２の実施形態）
図２５は、本発明の第１２の実施形態に係る情報処理装置の構成を示したブロック図であり、図２６は、図２５に示した情報通知記憶部及び情報通知端子の構成例を示した図である。本実施形態に係る情報処理装置１２の基本的な構成は、第７の実施形態（図１４）に係るものと同様であるが、情報処理装置１２に更に情報通知端子１１０が含まれている点と、転送装置１１２に更に情報通知記憶部１１１が含まれている点とが、第７の実施形態とは異なっている。
【０２０２】
情報通知端子１１０は、世代比較部１０９から出力される各種情報を外部へ提供するための端子である。本実施形態では、情報通知端子１１０は、図２６（ａ）に示されるように、前世代情報使用通知端子１１３と、不整合通知端子１１４と、使用情報通知端子１１５とを備えている。本実施形態では、前世代情報使用通知端子１１３及び不整合通知端子１１４の各々は１ビットの情報を出力することができる端子であり、使用情報通知端子１１５は２ビットの情報を出力することができる端子である。したがって、情報通知端子１１０は、４ビットの情報を出力することができる。ただし、各端子を必ずしもこのようなビット数に構成する必要はなく、必要に応じてビット数を増減しても良い。
【０２０３】
前世代情報使用通知端子１１３は、世代比較部１０９が前世代の管理情報しか得られないと判定した場合に使用される端子である。例えば、世代比較部１０９が第１の記憶装置６７に記憶されている第１〜第３の管理情報４８〜５０の世代をそれぞれ判定した結果、最新世代の管理情報が得られた場合には、世代比較部１０９は、前世代情報使用通知端子１１３からＬｏレベルの信号を出力する。また、世代比較部１０９が前世代の管理情報しか得られない場合には、世代比較部１０９は、前世代情報使用通知端子１１３からＨｉレベルの信号を出力する。
【０２０４】
不整合通知端子１１４は、世代比較部１０９が管理情報の全てが同一ではないと判定した場合に使用される端子である。例えば、世代比較部１０９が第１の記憶装置６７に格納されている第１〜第３の管理情報４８〜５０の世代をそれぞれ判定した結果、全て同一の管理情報であると判定した場合には、世代比較部１０９は、不整合通知端子１１４からＬｏレベルの信号を出力する。また、世代比較部１０９が管理情報の各々が同一ではないと判定した場合には、世代比較部１０９は、不整合通知端子１１４からＨｉレベルの信号を出力する。
【０２０５】
使用情報通知端子１１５は、世代比較部１０９から転送判定部７４へ渡された管理情報を特定するための情報を出力するための端子である。例えば、世代比較部１０９が、第１の記憶装置６７に格納されている第１〜第３の管理情報４８〜５０の世代をそれぞれ判定し、第２の管理情報４９を転送判定部７４へ渡した場合には、世代比較部１０９は、２ビットの端子を用いて“２”を出力する。同様に、世代比較部１０９が第３の管理情報５０を転送判定部７４へ渡した場合には、世代比較部１０９は、“３”を出力する。
【０２０６】
上記のようにして、世代比較部１０９は、第１〜第３の管理情報４８〜５０の比較結果を情報通知端子１１０から外部へ出力することが可能である。このように構成すれば、世代比較部１０９は、ＣＰＵ２１の動作前の状態を外部へ通知できるため、システムブートができない場合に、情報通知端子１１０から出力された情報を用いて、その原因を調査することが可能となる。
【０２０７】
また、情報通知記憶部１１１は、例えば揮発性の記憶装置よりなり、世代比較部１０９から出力された情報を記憶する。情報通知記憶部１１１は、データバス１６ａ及び１６ｄを介してＣＰＵ２１から参照可能となるように構成されている。本実施形態においては、情報通知記憶部１１１は、図２６（ｂ）に示されるように、前世代情報使用記憶部１１６と、不整合記憶部１１７と、使用情報記憶部１１８とから構成されている。本実施形態に係る情報通知記憶部１１１は、４ビットのレジスタよりなり、前世代情報使用記憶部１１６及び不整合記憶部１１７はそれぞれ１ビットの情報を記憶することができ、使用情報記憶部１１８は２ビットの情報を記憶することができる。なお、これらのビット数を必要に応じて増減しても良いことは言うまでもない。
【０２０８】
前世代情報使用記憶部１１６は、世代比較部１０９が前世代の管理情報しか得られないと判定した場合に使用される。例えば、世代比較部１０９が第１の記憶装置６７に格納されている第１〜第３の管理情報４８〜５０の世代をそれぞれ判定し、世代比較部１０９が最新世代の管理情報を得られた場合には、前世代情報使用記憶部１１６は、“０”を記憶する。また、世代比較部１０９が前世代の管理情報しか得られなかった場合には、前世代情報使用記憶部１１６は、“１”を記憶する。
【０２０９】
不整合記憶部１１７は、世代比較部１０９が管理情報が全て同一ではないと判定した場合に使用される。例えば、世代比較部１０９が第１の記憶装置６７に格納されている第１〜第３の管理情報４８〜５０の世代をそれぞれ判定し、全て同一の管理情報であると世代比較部１０９が判定した場合には、不整合記憶部１１７は、“０”を記憶する。また、世代比較部１０９が管理情報の各々が同一ではないと判定した場合には、不整合記憶部１１７は、“１”を記憶する。
【０２１０】
使用情報記憶部１１８は、世代比較部１０９から転送判定部７４へ渡された管理情報を特定するための情報を記憶する。例えば、世代比較部１０９が、第１の記憶装置６７に格納されている第１〜第３の管理情報４８〜５０の世代をそれぞれ判定し、世代比較部１０９が第２の管理情報４９を転送判定部７４へ渡した場合には、使用情報記憶部１１８は２ビットのレジスタを用いて“２”を記憶する。同様に、世代比較部１０９が第３の管理情報５０を転送判定部７４へ渡した場合には、使用情報記憶部１１８は、“３”を記憶する。
【０２１１】
上記のようにして、情報通知記憶部１１１は、世代比較部１０９から得られた情報を記憶することが可能となる。このように構成すると、システムブート後に、ＣＰＵ２１によって起動前の状態を検出することが可能となるため、情報通知記憶部１１１に記憶された情報を用いて、システムブート後に必要な対策を行うことが可能となる。
【０２１２】
（第１３の実施形態）
図２７は、本発明の第１３の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置１３の基本的な構成は、第７の実施形態（図１４）に係るものと同様であるが、転送装置１２３に更に管理情報更新部１２１が含まれている点が第７の実施形態とは異なっている。
【０２１３】
管理情報更新部１２１は、世代比較部１２２が更新対象の管理情報と最新世代の管理情報との場所を通知すると、管理情報取得部７６を介して最新世代の管理情報を取得した後、更新対象の管理情報を書き換える。
【０２１４】
また、本実施形態に係る世代比較部１２２は、基本的な機能は第７の実施の形態に係るものと同様であるが、最新世代ではない管理情報を検出して、管理情報更新部１２１へと更新対象の管理情報と最新世代の管理情報の場所とを通知することができる。
【０２１５】
図２８は、世代比較部１２２による制御処理の一例を示したフローチャートである。図２８と図２７とを併せて参照して、転送判定部７４が管理情報を参照すると、世代比較部１２２は、第１の記憶装置６７から、最初に書き込まれた第１の管理情報４８をバッファＩ１に読み出し（ステップＳ５６１）、２番目に書き込まれた第２の管理情報４９をバッファＩ２に読み出す（ステップＳ５６２）。また、世代比較部１２２は、３番目に書き込まれた第３の管理情報５０をバッファＩ３に読み出す（ステップＳ５６３）。
【０２１６】
次に、世代比較部１２２は、バッファＩ１の値とバッファＩ２の値とを比較する（ステップＳ５６４）。バッファＩ１の値とバッファＩ２の値とが等しい場合（ステップＳ５６４でＹＥＳ）は、世代比較部１２２は、バッファＩ２の値とバッファＩ３の値とを比較する（ステップＳ５６５）。バッファＩ２の値とバッファＩ３の値とが等しい場合（ステップＳ５６５でＹＥＳ）は、世代比較部１２２は、全ての管理情報は同じ世代と判定して、バッファＩ１の値を転送判定部７４へ渡す（ステップＳ５６７）。
【０２１７】
また、ステップＳ５６５でバッファＩ２の値とバッファＩ３の値とが等しくない場合（ステップＳ５６５でＮＯ）、世代比較部１２２は、第３の管理情報５０が最新世代の管理情報ではないと判定し、第１の管理情報４８で第３の管理情報５０を更新するように管理情報更新部１２１に指示する（ステップＳ５６３）。その後、世代比較部１２２は、バッファＩ１の値を転送判定部７４に渡して（ステップＳ５６７）、処理を終了する。
【０２１８】
一方、ステップＳ５６４において、バッファＩ１の値とバッファＩ２の値とが異なる場合（ステップＳ５６４でＮＯ）は、世代比較部１２２は、バッファＩ２の値とバッファＩ３の値とを比較する（ステップＳ５６８）。バッファＩ２の値とバッファＩ３とが等しい場合（ステップＳ５６８でＹＥＳ）、世代比較部１２２は、バッファＩ２の値を前世代の管理情報と判定し、バッファＩ２の値を転送判定部７４へ渡し（ステップＳ５７１）、処理を終了する。この場合は、最新世代の管理情報は存在しないため、世代比較部１２２は、管理情報更新部１２１に対して管理情報を更新する指示を行わない。
【０２１９】
また、ステップＳ５６８において、バッファＩ２の値とバッファＩ３の値とが異なる場合（ステップＳ５６８でＮＯ）、世代比較部１２２は、第１の管理情報４８のみが最新世代であると判定し、第１の管理情報４８で第２の管理情報４９を更新するように管理情報更新部１２１に指示する（ステップＳ５６９）。更に、世代比較部１２２は、第１の管理情報４８で第３の管理情報５０を更新するように管理情報更新部１２１に指示する（ステップＳ５６６）。その後、世代比較部１２２は、バッファＩ１の値を転送判定部７４に渡して処理を終了する。
【０２２０】
上記のように制御することにより、世代比較部１２２は、第１〜第３の管理情報４８〜５０を比較して、最新世代ではない管理情報があれば、最新世代の管理情報を用いて更新するように管理情報更新部１２１に指示することができる。また、本実施形態では、世代比較部１２２は、最新世代の管理情報がないと判断した場合には、管理情報の自動更新を行わない。
【０２２１】
このように、本実施形態に係る情報処理装置１３では、最新世代ではない管理情報を、最新世代の管理情報を用いて自動的に更新することができるため、管理情報の信頼性を更に向上させることが可能となる。
【０２２２】
（第１４の実施形態）
図２９は、本発明の第１４の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置１４の基本的な構成は、第２の実施形態（図７）に係るものと同様であるが、第１の記憶装置１２６に有効フラグ１２７が更に記憶されている点と、転送装置１３３に更に有効フラグ取得部１２９と有効情報選択部１３０とが含まれている点と、ＣＰＵ１３１が有効フラグ書込部１３２を備えている点とが、第２の実施形態とは異なっている。
【０２２３】
有効フラグ１２７は、管理情報４１と同じブロックに書き込まれ、管理情報４１が有効または無効であることを示す。有効フラグ１２７には、管理情報４１の書き込みに伴って、無効を表す値がセットされる。
【０２２４】
有効情報選択部１３０は、転送判定部１２８が管理情報取得部７６に管理情報４１を取得するように要求した際に、有効フラグ１２７を取得するように有効フラグ取得部１２９に指示する。そして、有効情報選択部１３０は、有効フラグ取得部１２９により取得された有効フラグ１２７が有効を示す値の場合には、管理情報取得部７６に管理情報４１を取得するように指示し、取得された管理情報４１を転送判定部１２８に渡す。また、有効フラグ１２７が無効を示す値の場合には、有効情報選択部１３０は、転送判定部１２８に管理情報を渡さない。
【０２２５】
有効フラグ書込部１３２は、ＣＰＵ１３１が管理情報４１を書き込んだ場合に、書き込まれた管理情報４１と、第２の記憶装置３２または第３の記憶装置３３内に記憶される書き込み元の管理情報とを比較する。そして、有効フラグ書込部１３２は、書き込まれた管理情報４１と書き込み元の管理情報とが同一の場合に、有効フラグ１２７を有効を示す値に書き換える。
【０２２６】
図３０は、ＣＰＵ１３１による管理情報の書き込み動作の一例を示したフローチャートである。図３０と図２９とを併せて参照して、ＣＰＵ１３１は、第２の記憶装置３２または第３の記憶装置３３に用意された書き込み元の管理情報を、第１の記憶装置１２６へと書き込むと共に、有効フラグ１２７に無効を示す値を書き込む（ステップＳ５７５）。有効フラグ１２７の無効を示す値としては、第１の記憶装置１２６の消去状態と同じ値であることが望ましい。この場合、第１の記憶装置１２６における書き込み先を消去してから書き込めば、ＣＰＵ１３１が有効フラグ１２７に無効を示す値を書き込む操作を省略することができる。また、ＣＰＵ１３１は、ステップＳ５７５において、有効フラグ１２７に無効を示す値を書き込む代わりに、有効を示す値以外を書き込んでも良い。
【０２２７】
ＣＰＵ１３１は、ステップＳ５７５で管理情報４１を書き出した後、第１の記憶装置１２６から管理情報４１を読み出し（ステップＳ５７６）、読み出した管理情報４１と、書き込み元の管理情報とを比較する（ステップＳ５７７）。読み出した管理情報４１と書き込み元の管理情報とが等しい場合は（ステップＳ５７７でＹＥＳ）、ＣＰＵ１３１は、第１の記憶装置１２６の有効フラグ１２７に有効を示す値をセットし（ステップＳ５７８）、処理を終了する。なお、有効フラグ１２７の有効を示す値は第１の記憶装置１２６の消去状態以外の値が望ましい。
【０２２８】
また、ステップＳ５７７において、読み出した管理情報４１と書き込み元の管理情報とが等しくない場合は（ステップＳ５７７でＮＯ）、ＣＰＵ１３１は、再度ステップＳ５７５に戻って上記の処理を繰り返す。
【０２２９】
以上のように構成すると、ＣＰＵ１３１は、書き込まれた管理情報４１と書き込み元の管理情報とが一致した場合にのみ有効フラグ１２７に有効を示す値をセットするため、有効フラグ１２７の内容によって、管理情報４１の書き込みが確実に行えていることを保証することができる。
【０２３０】
なお、本実施形態では、管理情報が１つの場合について説明したが、管理情報が複数ある場合でも同様に有効フラグを設けて、管理情報の有効性を向上させることが可能である。
【０２３１】
図３１は、有効情報選択部１３０による制御処理の一例を示したフローチャートである。図３１と図２９とを併せて参照して、転送判定部１２８が管理情報を参照すると（ステップＳ５８１）、有効情報選択部１３０は、有効フラグ１２７を取得するように有効フラグ取得部１２９に指示する（ステップＳ５８２）。
【０２３２】
次に、有効情報選択部１３０は、取得された有効フラグ１２７の値が有効を示す値であるかどうか判定する（ステップＳ５８３）。有効フラグ１２７の値が有効を示す値以外の場合は（ステップＳ５８３でＮＯ）、有効な管理情報はないため、有効情報選択部１３０は処理を終了する（処理失敗）。
【０２３３】
一方、取得された有効フラグ１２７の値が有効を示す値である場合は（ステップＳ５８３でＹＥＳ）、有効情報選択部１３０は、管理情報取得部７６に第１の記憶装置１２６から管理情報４１を取得するように指示する（ステップＳ５８４）。そして、有効情報選択部１３０は、取得された管理情報４１を転送判定部１２８へ提供し（ステップＳ５８５）、処理を終了する（処理成功）。
【０２３４】
なお、本実施形態では、管理情報が１つの場合について述べているが、管理情報が複数ある場合にもほぼ同様にして、有効情報選択部１３０によって有効な管理情報を選択することが可能である。例えば、上記のステップＳ５８３において、有効フラグ１２７の値が有効を示す値以外であった場合には、他の管理情報を取得して同様の処理を行うように構成しても良い。
【０２３５】
このように、本実施形態に係る情報処理装置１４では、有効フラグ１２７によって書き込みに成功した有効な管理情報を確実に識別できるため、更新時の管理情報の信頼性を確保することが可能となる。
【０２３６】
（第１５の実施形態）
図３２は、本発明の第１５の実施形態に係る情報処理装置の構成を示したブロック図である。本実施形態に係る情報処理装置１５の基本的な構成は、第２の実施形態（図７）に係るものと同様であるが、第１の記憶装置６７に第１〜第３の管理情報４８〜５０が含まれている点と、管理情報取得部１３６に更に管理情報シフト部１３７が含まれている点とが、第２の実施形態とは異なっている。
【０２３７】
第１〜第３の管理情報４８〜５０の各々は、同一の値を保持している。ただし、第１〜第３の管理情報４８〜５０の各々は、記憶されるページ内においてバイト単位で循環シフトされた状態で記憶されている。
【０２３８】
管理情報シフト部１３７は、転送判定部３８が管理情報の取得を要求した際に、管理情報を取得し、取得された管理情報をその保存時とは反対方向に保存時と同じシフト量だけ循環シフトさせてから転送判定部３８に渡す。
【０２３９】
ここで、ＮＡＮＤ型フラッシュメモリの故障特性と、上記のような循環シフトの有効性について説明する。
【０２４０】
図３３は、第１の記憶装置６７の故障パターンと管理情報の書き込み例を示した図である。第１の記憶装置６７に用いられているＮＡＮＤ型フラッシュメモリは、その構造上、同じブロック内において、複数ページに跨って同じカラムアドレスが破損する場合がある。例えば、図３３（ａ）の斜線部に示されるように、ブロック番号１において、全ページに渡って同一のカラムアドレスＤが破損してしまうことがある。このような故障が発生すると、例えばブロック番号１の各ページに同じブロックに対する管理情報を複数書き込んでいた場合、これらのデータが同時に使用不能になってしまう。
【０２４１】
そこで、本実施形態にあっては、ＣＰＵ２１が第１〜第３の各管理情報４８〜５０を第１の記憶装置に書き込む際に、ＣＰＵ２１は、第２の管理情報４９及び第３の管理情報５０をそれぞれ循環シフトさせて書き込む。具体的には、ＣＰＵ２１は、第１の管理情報をそのまま書き込み、第２の管理情報を第１の管理情報の書き込み位置に対して右に１バイト循環シフトさせて書き込み、第３の管理情報を同様に右に２バイト循環シフトさせてから書き込みを行う。
【０２４２】
例えば、図３３（ｂ）を参照して、ＣＰＵが、ブロック番号１のページ番号０〜２に第１〜第３の各管理情報４８〜５０をそれぞれ書き込む場合を想定する。このとき、ＣＰＵは、第１の管理情報４８をカラムアドレスＤを先頭とした領域に書き込み、第２の管理情報４９を１バイト循環シフトさせてカラムアドレス（Ｄ＋１）を先頭とした領域に書き込み、第３の管理情報５０を２バイト循環シフトさせてカラムアドレス（Ｄ＋２）を先頭とした領域に書き込む。
【０２４３】
すると、図３３（ｂ）の斜線で示されるように、ブロック番号１の全ページに渡ってカラムアドレスＤが破損した場合でも、第１〜第３の管理情報４８〜５０の各々におけるカラムアドレスＤに書き込まれたデータは互いに相違するため、第１〜第３の管理情報４８〜５０における同一部分が同時に使用不能となることを回避することが可能となる。
【０２４４】
なお、本実施形態では、シフト量を１バイトずつ増加させているが、シフト量は１バイト以外であっても良い。また、シフト量は、各管理情報で異なった値であることが望ましく、より具体的には、シフト量は書き込み単位やページ番号と比例した値等にしておくことが望ましい。例えば、各管理情報のシフト量は、管理情報の番号を用いて、（管理情報の番号−１）×１バイトで決定しても良い。更に、管理情報の書き込み時と読み出し時のシフト方向は、それぞれ予め固定した方向としておくことが望ましい。更に、本実施の形態では、ＣＰＵ２１が管理情報の書き込み時の循環シフトを行っているが、例えばシフト部を更に含むように転送装置を構成し、シフト部が管理情報の書き込み時の循環シフトを行っても良い。
【０２４５】
図３４は、管理情報取得部１３６による制御処理の一例を示したフローチャートである。図３４と図３２とを併せて参照して、転送判定部３８が管理情報を参照すると（ステップＳ５９１）、管理情報取得部１３６は、第１の記憶装置６７から管理情報を取得する（ステップＳ５９２）。次に、管理情報取得部１３６は、予め決められていた値や式に基づいて管理情報のシフト量を算出し（ステップＳ５９３）、管理情報シフト部１３７によって、管理情報を保存時と逆方向に算出されたシフト量だけシフトさせる（ステップＳ５９４）。そして、管理情報取得部１３６は、シフトされた管理情報を転送判定部３８へ提供し（ステップＳ５９５）、処理を終了する。
【０２４６】
このように、本実施形態に係る情報処理装置１５では、ＣＰＵ２１が第１の記憶装置６７へ管理情報を書き込む際には、ＣＰＵ２１が管理情報をバイト単位で所定方向に所定量だけ循環シフトさせて第１の記憶装置６７に書き込む。また、管理情報の読み出し時には、管理情報シフト部１３７は、取得された管理情報を、その書き込み時のシフト方向と反対方向に書き込み時と同一のシフト量だけ循環シフトさせる。これにより、第１の記憶装置６７の同一ブロック内において、同一カラムアドレスが複数ページに渡って破壊された場合でも、複数の管理情報における同一箇所が使用不能となることを防止することが可能となる。
【産業上の利用可能性】
【０２４７】
本発明の情報処理装置及びその情報処理方法は、不良ブロックを含む可能性があり、また、後天的に不良ブロックを発生する可能性のある記憶装置に初期プログラムを格納しつつ、システムブートを安定的に行えるという特徴を有するので、例えば、ノート型パーソナルコンピュータや携帯型情報機器、携帯電話、デジタルカメラ、ビデオムービー、ゲーム機等の各種の情報処理装置に利用することができる。
【図面の簡単な説明】
【０２４８】
【図１】本発明の第１の実施形態に係る情報処理装置の構成を示したブロック図
【図２】ＮＡＮＤ型フラッシュメモリにおけるブロックとページとの関係を示した図
【図３】図１に示したブートストラッププログラム（ＢＳＰ）の構成を示したブロック図
【図４】図１に示した情報処理装置における管理情報のフォーマットの一例を示した図
【図５】図１に示した転送判定部による制御処理の一例を示したフローチャート
【図６】図１に示したＣＰＵによる情報処理装置におけるブートストラップ処理の一例を示したフローチャート
【図７】本発明の第２の実施形態に係る情報処理装置の構成を示したブロック図
【図８】図７に示した転送判定部による制御処理の一例を示したフローチャート
【図９】本発明の第３の実施形態に係る情報処理装置の構成を示したブロック図
【図１０】本発明の第４の実施形態に係る情報処理装置の構成を示したブロック図
【図１１】本発明の第５の実施形態に係る情報処理装置の構成を示したブロック図
【図１２】本発明の第６の実施形態に係る情報処理装置の構成を示したブロック図
【図１３】図１２に示した多数決判定部による制御処理の一例を示したフローチャート
【図１４】本発明の第７の実施形態に係る情報処理装置の構成を示したブロック図
【図１５】図１４に示した第１〜第３の管理情報の一例を示した図
【図１６】図１４に示した世代比較部による制御処理の一例を示すフローチャート
【図１７】本発明の第８の実施形態に係る情報処理装置の構成を示したブロック図
【図１８】図１７に示した世代比較部による制御処理の一例を示したフローチャート
【図１９】本発明の第９の実施形態に係る情報処理装置の構成を示したブロック図
【図２０】図１９に示した世代比較部による制御処理の一例を示したフローチャート
【図２１】本発明の第１０の実施形態に係る情報処理装置の構成を示したブロック図
【図２２】図２１に示した世代比較部による制御処理の一例を示したフローチャート
【図２３】本発明の第１１の実施形態に係る情報処理装置の構成を示したブロック図
【図２４】図２３に示した世代比較部による制御処理の一例を示したフローチャート
【図２５】本発明の第１２の実施形態に係る情報処理装置の構成を示したブロック図
【図２６】図２５に示した情報通知記憶部及び情報通知端子の構成例を示した図
【図２７】本発明の第１３の実施形態に係る情報処理装置の構成を示したブロック図
【図２８】図２７に示した世代比較部による制御処理の一例を示したフローチャート
【図２９】本発明の第１４の実施形態に係る情報処理装置の構成を示したブロック図
【図３０】図２９に示したＣＰＵによる管理情報の書き込み動作の一例を示したフローチャート
【図３１】図２９に示した有効情報選択部による制御処理の一例を示したフローチャート
【図３２】本発明の第１５の実施形態に係る情報処理装置の構成を示したブロック図
【図３３】図３２に示した第１の記憶装置の故障パターンと管理情報の書き込み例を示した図
【図３４】図３２に示した管理情報取得部による制御処理の一例を示したフローチャート
【符号の説明】
【０２４９】
１〜１５  情報処理装置
１６  データバス
１７  ＣＰＵ制御装置
２０、３８、６８、７４、１２８  転送判定部
２１、１３１  ＣＰＵ
２４、４０、４５、５３、７１、７７、８６、９１、１００、１０６、１１２、１２３、１３３、１３８  転送装置
２５  不良ブロック
２６  ＢＳＰ
２７  メインプログラム
２９  管理情報記憶部
３０、４１  管理情報
３１、３７、４７、５７、６７、８０、９４、１０３、１２６  第１の記憶装置
３２  第２の記憶装置
３３  第３の記憶装置
３９、４３、５１、７０、７６、１３６  管理情報取得部
４４  管理情報ポインタ記憶部
４８、５８  第１の管理情報
４９、６１  第２の管理情報
５０  第３の管理情報
５２  管理情報ポインタ計算部
５４  管理情報選択端子
５９  第１のＢＳＰ
６０  第１のメインプログラム
６２  第２のＢＳＰ
６３  第２のメインプログラム
６９  多数決判定部
７５、８４、８９、９８、１０５、１０９、１２２  世代比較部
８１  第１の更新ラベル
８２  第２の更新ラベル
８３  第３の更新ラベル
８５  更新ラベル取得部
９０  更新ラベル記憶部
９５  第１の管理情報フラグ
９６  第２の管理情報フラグ
９７  第３の管理情報フラグ
９９  管理情報フラグ判定部
１０４  付属情報取得部
１１０  情報通知端子
１１１  情報通知記憶部
１１３  前世代情報使用通知端子
１１４  不整合通知端子
１１５  使用情報通知端子
１１６  前世代情報使用機億部
１１７  不整合記憶部
１１８  使用情報記憶部
１２１  管理情報更新部
１２７  有効フラグ
１２９  有効フラグ取得部
１３０  有効情報選択部
１３２  有効フラグ書込部
１３７  管理情報シフト部
【図１】
2006277395.tif 000003
【図２】
2006277395.tif 000004
【図３】
2006277395.tif 000005
【図４】
2006277395.tif 000006
【図５】
2006277395.tif 000007
【図６】
2006277395.tif 000008
【図７】
2006277395.tif 000009
【図８】
2006277395.tif 000010
【図９】
2006277395.tif 000011
【図１０】
2006277395.tif 000012
【図１１】
2006277395.tif 000013
【図１２】
2006277395.tif 000014
【図１３】
2006277395.tif 000015
【図１４】
2006277395.tif 000016
【図１５】
2006277395.tif 000017
【図１６】
2006277395.tif 000018
【図１７】
2006277395.tif 000019
【図１８】
2006277395.tif 000020
【図１９】
2006277395.tif 000021
【図２０】
2006277395.tif 000022
【図２１】
2006277395.tif 000023
【図２２】
2006277395.tif 000024
【図２３】
2006277395.tif 000025
【図２４】
2006277395.tif 000026
【図２５】
2006277395.tif 000027
【図２６】
2006277395.tif 000028
【図２７】
2006277395.tif 000029
【図２８】
2006277395.tif 000030
【図２９】
2006277395.tif 000031
【図３０】
2006277395.tif 000032
【図３１】
2006277395.tif 000033
【図３２】
2006277395.tif 000034
【図３３】
2006277395.tif 000035
【図３４】
2006277395.tif 000036