(57)【要約】【課題】  読み出し速度が遅い記録媒体から大容量のデータを短時間で読み出す。【解決手段】  バスコントローラのホールドタイム，セットアップタイム（以下，アクセスタイム）が、NANDコントローラの仕様で正常動作が保証されている設定値Ｃ１に設定され（ステップＳ１０１）、設定値Ｃ１で記録媒体に記録されているデータのチェックサムを読み出す（ステップＳ１０２）。また、バスコントローラのアクセスタイムが、設定値Ｃ１より大きい設定値Ｃ２に設定され（ステップＳ１０３）、設定値Ｃ２で記録媒体に記録されているデータを読み出す（ステップＳ１０４）。さらに、NANDコントローラで計算されたチェックサムに基づき、記録媒体から読み出されたデータに誤りがあるかどうかを判定し（ステップＳ１０６）、誤りがあったデータを記録媒体から再度読み出す（ステップＳ１０４）。本発明は、例えば、NAND型フラッシュメモリからのデータの読み出しに適用できる。【選択図】図６
2005250891.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体からデータを読み出す読み出し手段にアクセスすることよって、前記記録媒体からデータを読み出す読み出し方法において、
前記読み出し手段に対するアクセスタイムを、前記読み出し手段の仕様で正常動作が保証されている保証アクセスタイムの範囲内の第１のアクセスタイムに設定する第1の設定ステップと、
前記読み出し手段に対して、前記第１の設定ステップで設定されたアクセスタイムでアクセスすることにより、前記記録媒体に記録されている前記データの誤りチェック用のデータであるチェックデータを、前記記録媒体から読み出す第１の読み出しステップと、
前記読み出し手段に対するアクセスタイムを、前記保証アクセスタイムより大きい第２のアクセスタイムに設定する第２の設定ステップと、
前記読み出し手段に対して、前記第２の設定ステップで設定されたアクセスタイムでアクセスすることにより、前記記録媒体に記録されている前記データを読み出す第２の読み出しステップと、
前記チェックデータに基づき、前記記録媒体から読み出された前記データに誤りがあるかどうかを判定する判定ステップと、
前記読み出し手段にアクセスすることにより、誤りがあった前記データを、前記記録媒体から、再度読み出す第３の読み出しステップと
を含むことを特徴とする読み出し方法。
【請求項２】
前記データに誤りがあった場合に、前記読み出し手段に対するアクセスタイムを、前記第２のアクセスタイムより小さい第３のアクセスタイムに設定する第３の設定ステップをさらに含み、
前記第３の読み出しステップにおいて、前記読み出し手段に対して、前記第３の設定ステップで設定されたアクセスタイムでアクセスすることにより、前記記録媒体に記録されている前記データを読み出す
ことを特徴とする請求項１に記載の読み出し方法。
【請求項３】
前記データに複数回の誤りがあった場合に、前記第３の設定ステップにおいて、前記読み出し手段に対するアクセスタイムを、前記第２のアクセスタイムより小さい第３のアクセスタイムに設定する
ことを特徴とする請求項２に記載の読み出し方法。
【請求項４】
前記記録媒体には、前記データを所定の分割サイズに分割した分割データごとに、その分割データの誤りチェック用の前記チェックデータが記録されており、
前記第２の読み出しステップにおいて、前記分割データの単位で、前記記録媒体から前記データを読み出し、
前記判定ステップにおいて、前記分割データの単位で、前記データに誤りがあるかどうかを判定する
ことを特徴とする請求項1に記載の読み出し方法。
【請求項５】
前記記録媒体に記録されている前記データは、プログラムである
ことを特徴とする請求項１に記載の読み出し方法。
【請求項６】
前記記録媒体に記録されている前記データは、電子機器の起動後、ＳＰＬ（Secondary Program Loader）が読み出すプログラムである
ことを特徴とする請求項1に記載の読み出し方法。
【請求項７】
記録媒体からデータを読み出す読み出し手段にアクセスすることによって、前記記録媒体からデータを読み出す読み出し処理を制御する処理をコンピュータに行わせるプログラムであって、
前記読み出し手段に対するアクセスタイムを、前記読み出し手段の仕様で正常動作が保証されている保証アクセスタイムの範囲内の第１のアクセスタイムに設定する第1の設定ステップと、
前記読み出し手段に対して、前記第１の設定ステップで設定されたアクセスタイムでアクセスすることにより、前記記録媒体に記録されている前記データの誤りチェック用のデータであるチェックデータを、前記記録媒体から読み出す第１の読み出しステップと、
前記読み出し手段に対するアクセスタイムを、前記保証アクセスタイムより大きい第２のアクセスタイムに設定する第２の設定ステップと、
前記読み出し手段に対して、前記第２の設定ステップで設定されたアクセスタイムでアクセスすることによりで、前記記録媒体に記録されている前記データを読み出す第２の読み出しステップと、
前記チェックデータに基づき、前記記録媒体から読み出された前記データに誤りがあるかどうかを判定する判定ステップと、
前記読み出し手段にアクセスすることにより、誤りがあった前記データを、前記記録媒体から、再度読み出す第３の読み出しステップと
を含む前記読み出し処理を制御することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、読み出し方法、およびプログラムに関し、特に、読み出し速度が遅い記録媒体から大容量のデータを読み出すのに要する時間を短縮することができるようにする読み出し方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、情報家電機器や携帯端末の高機能化に伴い、その機能を実現するためのソフトウェア（プログラム）のプログラムサイズが飛躍的に増大している。そのため、プログラムサイズの増大に伴ってプログラムを記録するための大容量の記録媒体が必要となり、また、プログラムを起動させるまでに要する時間、即ち、起動時間が長くなる傾向にある。
【０００３】
従来、情報家電機器や携帯端末のプログラムは、そのプログラムの起動時間を短くするために、高価ではあるが高速での読み出しが可能なNOR型フラッシュメモリに記録されている。しかしながら、プログラムサイズの大容量化に伴い、容量の大きなNOR型フラッシュメモリを搭載する必要があり、製品のコストが高くなってしまう。
【０００４】
そこで、比較的安価で大容量化の実現が可能なNAND型フラッシュメモリにプログラムを記録し、NAND型フラッシュメモリからプログラムを読み出して情報家電機器や携帯端末を起動する方法が注目されている。しかしながら、NAND型フラッシュメモリにおいては、その読み出し速度が、従来使用されているNOR型フラッシュメモリと比較して遅いという欠点がある。そのため、NAND型フラッシュメモリからプログラムを読み出す場合、情報家電機器や携帯端末の起動時間が長くなってしまう。
【０００５】
また、最近では、情報家電機器や携帯端末で扱われる、プログラム以外のデータのデータサイズも飛躍的に増大しており、そのようなデータを、記録媒体から読み出す読み出し時間も問題となっている。
【０００６】
ここで、本出願人は、フラッシュメモリなどの記憶領域が複数のブロックに分割されてなる記憶装置において、各ブロックに、任意のデータとそのデータを管理するための管理情報とを記憶させるデータ処理方法を提案している（特許文献１参照）。データをブロック単位で管理することにより、記憶装置の長寿命化及び処理の高速化を図ることができる。
【０００７】
さらにまた、本出願人は、予定された処理が履行されているか否かを監視し、予定された処理が履行されていない場合には、その処理を履行する機能ブロックの動作設定値を、処理を履行するのに適した動作設定値に設定して、処理を履行させる情報処理方法を提案している（特許文献２参照）。処理を履行するのに適した動作設定値に設定することにより、迅速にデータを処理することができる。
【０００８】
【特許文献１】特開平１１―１１０２６３号公報
【特許文献２】特開２００２−３１２０５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述のように、大容量のデータ（プログラムを含む）を記録する記録媒体を、大容量のNOR型フラッシュメモリとすると、製品の価格が高価となってしまう。また、記録媒体を、安価で大容量化の実現が可能なNAND型フラッシュメモリとすると、データの読み出し速度が遅くなる。
【００１０】
本発明はこのような状況に鑑みてなされたものであり、読み出し速度が遅い記録媒体からデータを読み出すのに要する時間を短縮することを目的とするものである。
【課題を解決するための手段】
【００１１】
本発明の読み出し方法は、バスコントローラのセットアップタイム，ホールドタイム（以下，アクセスタイム）を変更し，読み出し手段の仕様で正常動作が保証されている保証アクセスタイムの範囲内の第１のアクセスタイムに設定する第1の設定ステップと、読み出し手段に対して、第１の設定ステップで設定されたアクセスタイムでアクセスすることにより、記録媒体に記録されているデータの誤りチェック用のデータであるチェックデータを、記録媒体から読み出す第１の読み出しステップと、読み出し手段に対するアクセスタイムを、保証アクセスタイムより小さい第２のアクセスタイムに設定する第２の設定ステップと、読み出し手段に対して、第２の設定ステップで設定されたアクセスタイムでアクセスすることにより、記録媒体に記録されているデータを読み出す第２の読み出しステップと、チェックデータに基づき、記録媒体から読み出されたデータに誤りがあるかどうかを判定する判定ステップと、読み出し手段にアクセスすることにより、誤りがあったデータを、記録媒体から、再度読み出す第３の読み出しステップとを含むことを特徴とする。
【００１２】
この読み出し方法においては、データに誤りがあった場合に、読み出し手段に対するアクセスタイムを、第２のアクセスタイムより大きい第３のアクセスタイムに設定する第３の設定ステップをさらに含むようにすることができ、第３の読み出しステップにおいては、第３の設定ステップで設定されたアクセスタイムでアクセスすることにより、記録媒体に記録されているデータを読み出すようにすることができる。
【００１３】
データに複数回の誤りがあった場合に、第３の設定ステップにおいては、読み出し手段に対するアクセスタイムを、第２のアクセスタイムより大きい第３のアクセスタイムに設定するようにすることができる。
【００１４】
記録媒体には、データを所定の分割サイズに分割した分割データごとに、その分割データの誤りチェック用のチェックデータが記録されるようにし、第２の読み出しステップにおいては、分割データの単位で、記録媒体からデータを読み出し、判定ステップにおいては、分割データの単位で、データに誤りがあるかどうかを判定するようにすることができる。
【００１５】
記録媒体に記録されているデータは、プログラムであっても良い。
【００１６】
記録媒体に記録されているデータは、電子機器の起動後、ＳＰＬ（Secondary Program Loader）が読み出すプログラムであっても良い。
【００１７】
本発明のプログラムは、読み出し手段に対するアクセスタイムを、読み出し手段の仕様で正常動作が保証されている保証アクセスタイムの範囲内の第１のアクセスタイムに設定する第1の設定ステップと、読み出し手段に対して、第１の設定ステップで設定されたアクセスタイムでアクセスることにより、記録媒体に記録されているデータの誤りチェック用のデータであるチェックデータを、記録媒体から読み出す第１の読み出しステップと、読み出し手段に対するアクセスタイムを、保証アクセスタイムより小さい第２のアクセスタイムに設定する第２の設定ステップと、読み出し手段に対して、第２の設定ステップで設定されたアクセスタイムでアクセスすることにより、記録媒体に記録されているデータを読み出す第２の読み出しステップと、チェックデータに基づき、記録媒体から読み出されたデータに誤りがあるかどうかを判定する判定ステップと、読み出し手段にアクセスすることにより、誤りがあったデータを、記録媒体から、再度読み出す第３の読み出しステップとを含む前記読み出し処理を制御することを特徴とする。
【００１８】
本発明の読み出し方法、およびプログラムにおいては、読み出し手段に対するアクセスタイムが、読み出し手段の仕様で正常動作が保証されている保証アクセスタイムの範囲内の第１のアクセスタイムに設定され、読み出し手段に対して、第１のアクセスタイムでアクセスすることにより、記録媒体に記録されているデータの誤りチェック用のデータであるチェックデータが、記録媒体から読み出される。また、読み出し手段に対するアクセスタイムが、保証アクセスタイムより小さい第２のアクセスタイムに設定され、読み出し手段に対して、第２のアクセスタイムでアクセスすることにより、記録媒体に記録されているデータが読み出される。さらに、チェックデータに基づき、記録媒体から読み出されたデータに誤りがあるかどうかが判定され、読み出し手段にアクセスすることにより、誤りがあったデータが、記録媒体から、再度読み出される。
【発明の効果】
【００１９】
本発明によれば、読み出し速度が遅い記録媒体からデータを短時間で読み出すことができる。
【発明を実施するための最良の形態】
【００２０】
以下に本発明の最良の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２１】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項にすべて記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割されたり、補正により出現し、追加される発明の存在を否定するものではない。
【００２２】
請求項１に記載の読み出し方法は、
記録媒体（例えば、図１のNAND型フラッシュメモリ２８）からデータを読み出す読み出し手段（例えば、図１のNANDコントローラ２６）にアクセスすることによって、前記記録媒体からデータを読み出す読み出し方法において、
前記読み出し手段に対するアクセスタイムを、前記読み出し手段の仕様で正常動作が保証されている保証アクセスタイムの範囲内の第１のアクセスタイム（例えば、保証設定値Ｃ１）に設定する第1の設定ステップ（例えば、図６のステップＳ１０１の処理）と、
前記読み出し手段に対して、前記第１の設定ステップで設定されたアクセスタイムでアクセスすることにより、前記記録媒体に記録されている前記データの誤りチェック用のデータであるチェックデータ（例えば、図３のチェクサムデータ８３）を、前記記録媒体から読み出す第１の読み出しステップ（例えば、図６のステップＳ１０２の処理）と、
前記読み出し手段に対するアクセスタイムを、前記保証アクセスタイムより小さい第２のアクセスタイム（例えば、動作限界設定値Ｃ２）に設定する第２の設定ステップ（例えば、図６のステップＳ１０３の処理）と、
前記読み出し手段に対して、前記第２の設定ステップで設定されたアクセスタイムでアクセスすることにより、前記記録媒体に記録されている前記データを読み出す第２の読み出しステップ（例えば、図６のステップＳ１０４の処理）と、
前記チェックデータに基づき、前記記録媒体から読み出された前記データに誤りがあるかどうかを判定する判定ステップ（例えば、図６のステップＳ１０６の処理）と、
前記読み出し手段にアクセスすることにより、誤りがあった前記データを、前記記録媒体から、再度読み出す第３の読み出しステップ（例えば、図６のステップＳ１０４の処理）と
を含むことを特徴とする。
【００２３】
請求項２に記載の読み出し方法は、
前記データに誤りがあった場合に、前記読み出し手段に対するアクセスタイムを、前記第２のアクセスタイムより大きい第３のアクセスタイム（例えば、高速設定値Ｃ３）に設定する第３の設定ステップ（例えば、図６のステップＳ１３１の処理）をさらに含み、
前記第３の読み出しステップにおいて、前記第３の設定ステップで設定されたアクセスタイムで、前記記録媒体に記録されている前記データを読み出す
ことを特徴とする。
【００２４】
請求項７に記載のプログラムは、
記録媒体（例えば、図１のNAND型フラッシュメモリ２８）からデータを読み出す読み出し手段（例えば、図１のバスコントローラ２５，NANDコントローラ２６）にアクセスすることによって、前記記録媒体からデータを読み出す読み出し処理を制御する処理をコンピュータに行わせるプログラムであって、
前記読み出し手段に対するアクセスタイムを、前記読み出し手段の仕様で正常動作が保証されている保証アクセスタイムの範囲内の第１のアクセスタイム（例えば、保証設定値Ｃ１）に設定する第1の設定ステップ（例えば、図６のステップＳ１０１の処理）と、
前記読み出し手段に対して、前記第１の設定ステップで設定されたアクセスタイムでアクセスすることにより、前記記録媒体に記録されている前記データの誤りチェック用のデータであるチェックデータ（例えば、図３のチェクサムデータ８３）を、前記記録媒体から読み出す第１の読み出しステップ（例えば、図６のステップＳ１０２の処理）と、
前記読み出し手段に対するアクセスタイムを、前記保証アクセスタイムより小さい第２のアクセスタイム（例えば、動作限界設定値Ｃ２）に設定する第２の設定ステップ（例えば、図６のステップＳ１０３の処理）と、
前記読み出し手段に対して、前記第２の設定ステップで設定されたアクセスタイムでアクセスすることにより、前記記録媒体に記録されている前記データを読み出す第２の読み出しステップ（例えば、図６のステップＳ１０４の処理）と、
前記チェックデータに基づき、前記記録媒体から読み出された前記データに誤りがあるかどうかを判定する判定ステップ（例えば、図６のステップＳ１０６の処理）と、
前記読み出し手段にアクセスすることにより、誤りがあった前記データを、前記記録媒体から、再度読み出す第３の読み出しステップ（例えば、図６のステップＳ１０４の処理）と
を含むことを特徴とする。
【００２５】
以下、図を参照して、本発明の実施の形態について説明する。
【００２６】
図１は、本発明を適用した情報処理システム１０のハードウェアの一実施の形態の構成例を示すブロック図である。
【００２７】
CPU２１，ASIC２２，ROM２３，RAM２４、バスコントローラ２５，およびNANDコントローラ２６は、バス２７を介して相互に接続されている。さらに、NANDコントローラ２６は、NAND型フラッシュメモリ２８に接続されている。
【００２８】
CPU（Central Processing Unit）２１は、RAM２４にロードされたプログラムを実行することにより、各種の処理を行う。
【００２９】
ASIC（Application Specific Integrated Circuit）２２は、情報処理システム１０の電源が投入された信号に応じて、ROM（Read Only Memory）２３に記憶されているIPL（Initial Program Loader）プログラム３１をRAM（Random Access Memory）２４にロードする。
【００３０】
ROM２３は、情報処理システム１０の起動時に最初に実行されるIPLプログラム３１を記憶している。IPLプログラム３１は、CPU２１に実行されることによって、NAND型フラッシュメモリ２８に記録されているSPL（Secondary Program Loader）プログラム３２をRAM２４にロードさせる。即ち、CPU２１は、RAM２４にロードされたIPLプログラム３１を実行することにより、NANDコントローラ２６を介して、NAND型フラッシュメモリ２８に記録されているSPLプログラム３２をRAM２４にロードする。
【００３１】
RAM２４は、ASIC２２によってロードされるIPLプログラム３１、CPU２１によってロードされるSPLプログラム３２等を記憶する。また、RAM２４は、CPU２１の動作上必要なデータを記憶する。
【００３２】
バスコントローラ２５は、バス２７に接続された各デバイスに対するバス幅やアクセスタイム（セットアップタイム，ホールドタイム）などの各種の設定値を保持する。
【００３３】
NANDコントローラ２６は、バス２７を介したCPU２１からのアクセスに応じて、NAND型フラッシュメモリ２８にアクセスして、NAND型フラッシュメモリ２８に記録されているSPLプログラム３２やシステムプログラム３３等を読み出す（ロードする）。また、NANDコントローラ２６は、バス２７を介したCPU２１からのアクセスに応じて、NAND型フラッシュメモリ２８にアクセスしてCPU２１が作成したデータ等を書き込む。
【００３４】
バス２７は、バスコントローラ２５により設定されたバス幅やアクセスタイムで動作する。
【００３５】
NAND型フラッシュメモリ２８には、図１では、SPLプログラム３２や情報処理システム１０のシステムプログラム３３等が記録されている。SPLプログラム３２は、CPU２１に実行されることによって、バスコントローラ２５の設定値を変え、NAND型フラッシュメモリ２８からシステムプログラム３３をRAM２４にロードさせる。
【００３６】
バス２７には、また、図示せぬ入出力インターフェースを介して、情報処理システム１０の電源ボタンや、ユーザが操作してCPU２１に指示をするための入力部（いずれも不図示）などが接続されている。
【００３７】
以上のように構成される情報処理システム１０においては、情報処理システム１０の電源が投入されると、ASIC２２がROM２３からRAM２４にIPLプログラム３１をロードする。そして、CPU２１が、RAM２４上のIPLプログラム３１を実行することによって、SPLプログラム３２がNAND型フラッシュメモリ２８からRAM２４にロードされる。さらに、CPU２１がRAM２４上のSPLプログラム３２を実行することによって、NAND型フラッシュメモリ２８からRAM２４上にシステムプログラム３３がロードされる。CPU２１がRAM２４上のシステムプログラム３３を実行することにより、情報処理システム１０の各種の機能が実現される。
【００３８】
なお、NAND型フラッシュメモリ２８は、情報処理システム１０に内蔵されるものであってもよいし、情報処理システム１０に対して着脱可能なものであってもよい。
【００３９】
情報処理システム１０の起動処理を、図２に示すフローチャートを参照して説明する。
【００４０】
情報処理システム１０のユーザが、例えば、電源スイッチを操作して情報処理システム１０の電源をＯＮとした場合、ステップＳ５１において、情報処理システム１０に電源投入の信号が入力される。この電源投入の信号に応じて、ステップＳ５１からＳ５２に進み、ASIC２２は、ROM２３に記憶されているIPLプログラム３１を、RAM２４にロード（展開）し、ステップＳ５３に進む。ステップＳ５３では、CPU２１が、RAM２４上のIPLプログラム３１を実行することにより、NANDコントローラ２６にSPLプログラム３２をNAND型フラッシュメモリ２８から読み出させ、RAM２４にロードさせる。
【００４１】
なお、NANDコントローラ２６によるNAND型フラッシュメモリ２８からのデータの読み出しは、CPU２１がバス２７を介してNANDコントローラ２６にアクセスすることによって行われる。ステップＳ５３において、NAND型フラッシュメモリ２８からSPLプログラム３２を読み出すとき、CPU２１は、NANDコントローラ２６の正常動作が保証されている範囲内のアクセスタイムで、NANDコントローラ２６にアクセスする。
【００４２】
ステップＳ５３からＳ５４に進み、CPU２１は、RAM２４上のSPLプログラム３２を実行することにより、NANDコントローラ２６にNAND型フラッシュメモリ２８に記録されているシステムプログラム３３をRAM２４にロードさせる読み出し処理を制御する。このSPLプログラム３２によるシステムプログラム３３の読み出し処理については、図６にて後述する。
【００４３】
ステップＳ５４からＳ５５に進み、CPU２１は、RAM２４にロードされたシステムプログラム３３を実行して起動処理を終了する。
【００４４】
ステップＳ５１において電源投入信号が入力されてから、ステップＳ５５でシステムプログラム３３が実行されるまでの時間が、情報処理システム１０の起動時間といえる。ROM２３に記憶されているIPLプログラム３１のプログラムサイズは、ROM２３の記憶容量をできる限り少なくするため、システムプログラム３３と比較すると十分小さいものとなっている。また、NAND型フラッシュメモリ２８に記録されているSPLプログラム３２のプログラムサイズも、システムプログラム３３と比較すると十分小さいものとなっている。
【００４５】
従って、IPLプログラム３１のロードおよびSPLプログラム３２のロードが情報処理システム１０の起動時間に与える影響は小さく、起動時間を短縮するためには、ステップＳ５４で行われる、NAND型フラッシュメモリ２８に記録されているシステムプログラム３３の読み出し処理を短時間で行うことが最も効果的といえる。
【００４６】
しかしながら、上述のように、NAND型フラッシュメモリ２８においては、その読み出し速度が遅いという欠点がある。NAND型フラッシュメモリ２８の読み出し速度が遅い大きな要因としては、NAND型フラッシュメモリ２８にアクセスしてシステムプログラム３３を読み出す処理を実行する際に、バスコントローラ２５に設定されるNANDコントローラ２６へのアクセスタイムが低い（遅い）ことにある。
【００４７】
ところで、NANDコントローラ２６に対するアクセスは、一般に、そのアクセスタイムを仕様などで正常動作が保証されている（定められている）保証アクセスタイムよりも小としても、正常に動作することがあることが経験上認められる。
【００４８】
そこで、NANDコントローラ２６に保証アクセスタイムより小のアクセスタイムでアクセスすることにより、システムプログラム３３の読み出し時間を短縮することが考えられる。しかしながら、CPU２１が、バスコントローラ２５に保証アクセスタイムより小のアクセスタイムを設定し、NANDコントローラ２６にアクセスする場合、NAND型フラッシュメモリ２８から読み出したシステムプログラム３３に誤りがある（システムプログラム３３の読み出しに失敗する）可能性がある。
【００４９】
そこで、SPLプログラム３２は、NAND型フラッシュメモリ２８から読み出したシステムプログラム３３に誤りがあるか否かを判定し、誤りがある場合には、再度、NAND型フラッシュメモリ２８からシステムプログラム３３を読み出すことにより、システムプログラム３３を確実に読み出すようになっている。
【００５０】
図３は、SPLプログラム３２とシステムプログラム３３が記録されているNAND型フラッシュメモリ２８のメモリマップを示している。
【００５１】
NAND型フラッシュメモリ２８には、その先頭の記録領域から、SPLプログラム３２と情報処理システム１０のシステムプログラム３３が順次記録されている。そして、その後の記録領域が、ユーザ使用領域７１とされている。
【００５２】
SPLプログラム３２は、分割サイズ８１とアクセスタイムの設定情報８２とを含む。NANDコントローラ２６は、NAND型フラッシュメモリ２８に記録されているシステムプログラム３３を１以上の所定のサイズのブロックの単位で分割して読み出すようになっており、分割サイズ８１は、そのブロックのサイズ（プログラムサイズ）の情報である。アクセスタイムの設定情報８２は、NANDコントローラ２６に対して設定されるバスコントローラ２５のアクセスタイムの情報である。
【００５３】
ここで、SPLプログラム３２は、NAND型フラッシュメモリ２８に記録されているシステムプログラム３３を、分割サイズ８１のブロック単位で読み出す。SPLプログラム３２が、NAND型フラッシュメモリ２８からシステムプログラム３３を、分割サイズ８１のブロック単位で読み出すことで、その読み出しに失敗した場合においても、読み出しに失敗した一部のブロックを、再度読み出すだけで済む。従って、SPLプログラム３２は、あるブロックの読み出しに失敗した場合であっても、読み出しに成功したブロックまでも再度読み出す必要がなく、読み出し時間の短縮を図ることができる。なお、分割サイズ８１が小さいほど、その分割サイズ８１のブロックの読み出しに失敗する可能性を小さくすることができる。
【００５４】
以下、適宜、システムプログラム３３を、分割サイズ８１のブロック単位で分割した部分を、プログラムイメージと記述する。
【００５５】
バスコントローラ２５のアクセスタイムの設定情報８２としては、NANDコントローラ２６の正常動作が仕様などで保証されている範囲内のアクセスタイムである保証設定値Ｃ１、NANDコントローラ２６が動作する限界付近のアクセスタイムである動作限界設定値Ｃ２（Ｃ１＞Ｃ２）、および保証設定値Ｃ１より小で、かつ動作限界設定値Ｃ２より大の高速設定値Ｃ３（Ｃ１＞Ｃ３＞Ｃ２）が記録されている。
【００５６】
なお、高速設定値Ｃ３は、保証設定値Ｃ１と等しくても良い。この場合、設定情報８２としては、保証設定値Ｃ１と動作限界設定値Ｃ２だけ記録しておけばよい。
【００５７】
また、保証設定値Ｃ１は、上述の図２のステップＳ５３で、SPLプログラム３２がNAND型フラッシュメモリ２８からSPLプログラム３２を読み出すときのアクセスタイムと同一であってもよいし、異なっていてもよい。
【００５８】
システムプログラム３３は、そのシステムプログラム３３を分割サイズ８１のブロック単位で分割して得られる１以上のプログラムイメージそれぞれのチェックサムデータ８３を含む。チェックサムデータ８３とは、NANDコントローラ２６が、NAND型フラッシュメモリ２８から読み出したプログラムイメージに誤りがないかどうかをチェックするためのデータである。システムプログラム３３の作成者は、プログラムイメージそれぞれのチェックサムをあらかじめ算出しておき、その値をプログラムイメージのチェックサムデータ８３として、システムプログラム３３に含めておく。
【００５９】
ユーザ使用領域７１には、例えば、ユーザの入力部（不図示）などの操作に応じて、CPU２１が各種の処理を実行することにより作成されたデータなどが記録される。
【００６０】
図３に示したNAND型フラッシュメモリ２８を作成する処理について、図４のフローチャートを参照して説明する。
【００６１】
ステップＳ６１において、システムプログラム３３のプログラムイメージのサイズである分割サイズ８１が決定される。分割サイズ８１は、例えば、SPLプログラム３２を実行するCPU２１がバスコントローラ２５を制御して所定のサイズのプログラムイメージを読み出すときの失敗する割合を検証して、失敗する割合の少ない適当なプログラムサイズとする。
【００６２】
ステップＳ６１からＳ６２に進み、システムプログラム３３を分割サイズ８１で分割して得られる１以上のプログラムイメージそれぞれについて、チェックサムデータ８３が算出される。プログラムイメージそれぞれのチェックサムデータ８３は、後述するステップＳ６４において、対応するプログラムイメージの順番に配置され、NAND型フラッシュメモリ２８に記録される。
【００６３】
ステップＳ６２からＳ６３に進み、SPLプログラム３２を実行するCPU２１がバス２７およびNANDコントローラ２６を介してNAND型フラッシュメモリ２８からプログラムイメージ等を読み出すときの、バス２７のNANDコントローラ２６に対するアクセスタイムを表す設定情報８２が設定される。即ち、ステップＳ６３では、NANDコントローラ２６においてNAND型フラッシュメモリ２８からデータを正常に読み出すことが保証されているアクセスタイムが、保証設定値Ｃ１に設定される。例えば、保証設定値Ｃ１は、NANDコントローラ２６の仕様書などで正常動作が保証されるアクセスタイムとすることができる。また、ステップＳ６３では、NANDコントローラ２６が動作する限界付近の高速なアクセスタイムが、動作限界設定値Ｃ２（Ｃ１＞Ｃ２）に設定される。例えば、動作限界設定値Ｃ２は、NANDコントローラ２６の性能を検証して、NANDコントローラ２６が動作する限界の動作設定値（アクセスタイム）とすることができる。さらに、ステップＳ６３では、保証設定値Ｃ１より小で、かつ動作限界設定値Ｃ２より大の任意のアクセスタイムが、高速設定値Ｃ３（Ｃ１＞Ｃ３＞Ｃ２）に設定される。
【００６４】
ステップＳ６３からＳ６４に進み、SPLプログラム３２と、システムプログラム３３とがNAND型フラッシュメモリ２８に記録される。また、ステップＳ６１で決定された分割サイズ８１、並びにステップＳ６３で設定された設定情報８２としての保証設定値Ｃ１、動作限界設定値Ｃ２、および高速設定値Ｃ３が、SPLプログラム３２の付属情報として記録される。さらに、チェックサムデータ８３がシステムプログラム３３の付属情報として記録される。
【００６５】
なお、ステップＳ６１で決定される分割サイズ８１や、ステップＳ６３で設定される設定情報８２は、SPLプログラム３２、システムプログラム３３、またはNAND型フラッシュメモリ２８の作成者が、図示せぬ制御部を操作して入力するようにすることができる。
【００６６】
図５は、NANDコントローラ２６の構成例を示している。なお、NANDコントローラ２６は、NAND型フラッシュメモリ２８に対してデータの読み書きを行うことが可能であるが、データの書き込みに関する部分については、図示を省略してある。
【００６７】
NANDコントローラ２６は、制御部１０１、読み出し部１１１、チェックサム演算部１１２で構成される。
【００６８】
制御部１０１は、バスコントローラ２５で設定されているアクセスタイムの下、読み出し部１１１、およびチェックサム演算部１１２を制御する。
【００６９】
読み出し部１１１は、制御部１０１の制御の下、分割サイズ８１、設定情報８２、およびチェックサムデータ８３のデータ等を、NAND型フラッシュメモリ２８から読み出す。
【００７０】
チェックサム演算部１１２は、読み出し部１１１がNAND型フラッシュメモリ２８から読み出したプログラムイメージを、制御部１０１を介して取得し、そのプログラムイメージのチェックサムデータを算出し、制御部１０１を介して、SPLプログラム３２（SPLプログラム３２を実行しているCPU２１）に供給する。
【００７１】
なお、SPLプログラム３２（を実行しているCPU２１）は、読み出し部１１１がNAND型フラッシュメモリ２８から読み出し、制御部１０１を介して、RAM２４に記憶されたチェックサムデータ８３を取得する。そして、SPLプログラム３２は、チェックサム演算部１１２からの、プログラムイメージから算出されたチェックサムデータと、RAM２４に記憶された、NAND型フラッシュメモリ２８から読み出されたチェックサムデータ８３とが一致するかどうかによって、NAND型フラッシュメモリ２８から読み出されたプログラムイメージに誤りがないかどうかのチェック、即ち、NAND型フラッシュメモリ２８からのプログラムイメージの読み出しに成功したかどうかの判定を行い、その判定結果を制御部１０１に通知する。
【００７２】
図２のステップＳ５４でSPLプログラム３２（を実行しているCPU２１）が行うシステムプログラム３３の読み出し処理について、図６のフローチャートを参照して説明する。
【００７３】
CPU２１がSPLプログラム３２を実行することにより、設定情報８２をバスコントローラ２５に供給する。バスコントローラ２５は、ステップＳ１０１において、CPU２１から供給される設定情報８２にしたがい、アクセスタイムを、保証設定値Ｃ１に設定する。
【００７４】
ステップＳ１０１からＳ１０２に進み、バス２７は、ステップＳ１０１でバスコントローラ２５に設定された保証設定値Ｃ１のアクセスタイムにしたがって動作し、SPLプログラム３２（を実行しているCPU２１）が、NANDコントローラ２６にアクセスすることにより、NAND型フラッシュメモリ２８からチェックサムデータ８３を読み出す。このチェックサムデータ８３は、制御部１０１を介して、RAM２４に供給されて記憶される。
【００７５】
このように、SPLプログラム３２（を実行しているCPU２１）が、バスコントローラ２５に、データを正常に読み出すことが保証されている保証設定値Ｃ１を設定し，NANDコントローラ２６にアクセスすることで、NAND型フラッシュメモリ２８からチェックサムデータ８３を読み出すので、チェックサムデータ８３を確実に読み出すことができる。
【００７６】
ステップＳ１０２からＳ１０３に進み、SPLプログラム３２（を実行しているCPU２１）は、設定情報８２にしたがい、バスコントローラ２５のアクセスタイムを、動作限界設定値Ｃ２に設定する。さらに、ステップＳ１０３では、NAND型フラッシュメモリ２８から、システムプログラム３３のうちの、まだ読み出されていないプログラムイメージのうちの１つが注目イメージとされる。
【００７７】
ステップＳ１０３からＳ１０４に進み、SPLプログラム（を実行しているCPU２１）は、バスコントローラ２５の現在の設定値、即ち、いまの場合、動作限界設定値Ｃ２のアクセスタイムにしたがって、NANDコントローラ２６にアクセスすることにより、NAND型フラッシュメモリ２８からシステムプログラム３３のうちの注目イメージを読み出して（システムプログラム３３を、分割サイズ８１のブロック単位で読み出して）、制御部１０１を介して、RAM２４に供給するとともに、チェックサム演算部１１２に供給する。
【００７８】
このように、バス２７がNANDコントローラ２６の動作限界設定値Ｃ２で動作することにより、保証設定値Ｃ１で動作する場合よりも、高速にNANDコントローラ２６にアクセスしてプログラムイメージを読み出すことが可能となる。従って、NAND型フラッシュメモリ２８からプログラムイメージを読み出すのに要する時間の短縮を図ることができる。
【００７９】
ステップＳ１０４からＳ１０５に進み、チェックサム演算部１１２は、制御部１０１からの注目イメージのチェックサムデータを算出し、制御部１０１を介してRAM２４に記憶して、ステップＳ１０６に進む。
【００８０】
ステップＳ１０６において、SPLプログラム３２（を実行しているCPU２１）は、ステップＳ１０２でRAM２４に記憶されたチェックサムデータ８３のうちの注目イメージのチェックサムデータ８３を取得する。そして、ステップＳ１０５でRAM２４に記憶されたチェックサム演算部１１２からのチェックサムデータと、RAM２４からのチェックサムデータ８３とが一致するか否かを判定する。
【００８１】
ステップＳ１０６において、チェックサム演算部１１２からRAM２４に記憶されたチェックサムデータとRAM２４からのチェックサムデータ８３とが一致しないと判定された場合、SPLプログラム３２（を実行しているCPU２１）は、注目イメージの読み出しに失敗したと判定し、ステップＳ１０６からステップＳ１２１に進む。
【００８２】
注目イメージの読み出しに失敗したことに応じて、ステップＳ１２１において、SPLプログラム３２（を実行しているCPU２１）は、注目イメージの読み出しに、１回以上の所定の回数だけ失敗したか否かを判定する。ステップＳ１２１において、注目イメージの読み出しに所定の回数だけ失敗していないと判定された場合、即ち、注目イメージの読み出しの失敗回数が所定の回数未満である場合、ステップＳ１０４に戻り、SPLプログラム３２（を実行しているCPU２１）は、ステップＳ１０３で設定した動作限界設定値Ｃ２のアクセスタイムでNANDコントローラ２６にアクセスし、注目イメージを読み出す処理を再度繰り返す。
【００８３】
一方、ステップＳ１２１において、注目イメージの読み出しに所定の回数だけ失敗したと判定された場合、即ち、注目イメージの読み出しの失敗回数が所定の回数となった場合、ステップＳ１３１に進み、SPLプログラム３２（を実行しているCPU２１）は、設定情報８２にしたがい、バスコントローラ２５のアクセスタイムを高速設定値Ｃ３）に設定し、ステップＳ１０４に戻る。そして、ステップＳ１０４において、SPLプログラム３２（を実行しているCPU２１）は、高速設定値Ｃ３のアクセスタイムでNANDコントローラ２６にアクセスし、注目イメージを読み出す処理を繰り返す。
【００８４】
このように、SPLプログラム３２（を実行しているCPU２１）は、バスコントローラ２５のNANDコントローラ２６に対するアクセスタイムを、動作限界設定値Ｃ２より大の高速設定値Ｃ３とすることにより、動作限界設定値Ｃ２で動作する場合よりも、確実にNAND型フラッシュメモリ２８からプログラムイメージを読み出すことができる。
【００８５】
なお、バスコントローラ２５のNANDコントローラ２６に対するアクセスタイムを高速設定値Ｃ３に設定した後も、プログラムイメージの読み出しに失敗する場合には、バスコントローラ２５のNANDコントローラ２６に対するアクセスタイムを、高速設定値Ｃ３より大きい保証設定値Ｃ１に設定することが可能である。
【００８６】
一方、ステップＳ１０６において、チェックサムデータが一致すると判定された場合、SPLプログラム３２（を実行しているCPU２１）は、注目イメージの読み出しに成功した旨を、制御部１０１に通知して、ステップＳ１０７に進む。
【００８７】
ステップＳ１０７において、SPLプログラム３２（を実行しているCPU２１）は、すべてのプログラムイメージを読み出したか否かを判定する。ステップＳ１０７において、SPLプログラム３２（を実行しているCPU２１）は、まだ読み出していないプログラムイメージがあると判定した場合、ステップＳ１０３に戻り、バスコントローラ２５のNANDコントローラ２６に対するアクセスタイムを動作限界設定値Ｃ２に設定し、NAND型フラッシュメモリ２８から、まだ読み出されていないプログラムイメージのうちの１つを注目イメージとして上述の処理を繰り返す。
【００８８】
一方、ステップＳ１０７において、すべてのプログラムイメージを読み出したと判定された場合、即ち、システムプログラム３３の読み出しが完了した場合、図２のステップＳ５５にリターンする。
【００８９】
なお、ステップＳ１０７でまだ読み出していないプログラムイメージがあると判定した場合、ステップＳ１０７からＳ１０３に戻り、SPLプログラム３２（を実行しているCPU２１）は、バスコントローラ２５のNANDコントローラ２６に対するアクセスタイムを動作限界設定値Ｃ２に戻すようにしたが、ステップＳ１３１でNANDコントローラ２６に対するアクセスタイムを高速設定値Ｃ３に設定した後においては、NANDコントローラ２６に対するアクセスタイムを高速設定値Ｃ３のまま、即ち、ステップＳ１０７からステップＳ１０４に戻り、読み出し処理を繰り返すこともできる。
【００９０】
上述したように、図１に示した情報処理システム１０によれば、CPU２１は、バスコントローラ２５に設定された、NANDコントローラ２６の仕様で正常動作が保証されている保証設定値Ｃ１のアクセスタイムでNANDコントローラ２６にアクセスし、NAND型フラッシュメモリ２８に記憶されているチェックサムデータ８３を読み出すので、チェックサムデータ８３を確実に読み出すことができる。
【００９１】
また、バス２７が、保証設定値Ｃ１より小さい動作限界設定値Ｃ２のアクセスタイムにしたがって動作し、NAND型フラッシュメモリ２８からシステムプログラム３３（プログラムイメージ）を読み出すので、NAND型フラッシュメモリ２８からシステムプログラム３３を読み出すのに要する時間の短縮を図ることができる。
【００９２】
さらに、SPLプログラム３２は、チェックサムデータ８３に基づき、NAND型フラッシュメモリ２８から読み出されたプログラムイメージに誤りがあるかどうかを判定し、誤りがあったプログラムイメージをNAND型フラッシュメモリ２８から再度読み出すので、NAND型フラッシュメモリ２８からプログラムイメージを読み出すときの信頼性を高めることができる。
【００９３】
さらにまた、SPLプログラム３２は、NAND型フラッシュメモリ２８から読み出されたプログラムイメージに誤りがあった場合には、バスコントローラ２５のNANDコントローラ２６に対するアクセスタイムを大にするようにしたので、確実にNAND型フラッシュメモリ２８に記憶されているプログラムイメージを読み出すことが可能となる。
【００９４】
そして、上述のように、安価で大容量ではあるが、低速のNAND型フラッシュメモリ２８に記録されたシステムプログラム３３の読み出しを、バスコントローラ２５のアクセスタイムを適切に設定して行うようにしたので、情報処理システム１０の起動を高速に、かつ確実に行うことができる。
【００９５】
なお、本実施の形態では、SPLプログラム３２を、NAND型フラッシュメモリ２８に記録しておくようにしたが、SPLプログラム３２は、ROM２３に記憶しておいてもよい。また、SPLプログラム３２は、インターネットなどを介して、サイトからダウンロードするようにしてもよい。
【００９６】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【００９７】
さらに、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００９８】
また、本実施の形態では、システムプログラム３３を、NAND型フラッシュメモリ２８に記録しておくようにしたが、システムプログラム３３を記録しておく記録媒体は、NAND型フラッシュメモリ２８に限定されるものではない。即ち、システムプログラム３３は、NOR型フラッシュメモリ等のメモリや、ハードディスク（ＨＤＤ）等のディスクなどに記録しておいてもよい。
【００９９】
さらに、本発明は、プログラム以外のデータの読み出しにも適用可能である。
【図面の簡単な説明】
【０１００】
【図１】本発明を適用した情報処理システムのハードウェアの一実施の形態の構成例を示すブロック図である。
【図２】情報処理システムの起動処理を説明するためのフローチャートである。
【図３】NAND型フラッシュメモリのメモリマップを説明するための図である。
【図４】NAND型フラッシュメモリを作成する処理を説明するためのフローチャートである。
【図５】NANDコントローラの構成例を示す図である。
【図６】読み出し処理を説明するためのフローチャートである。
【符号の説明】
【０１０１】
１０  情報処理システム，  ２１  CPU，  ２２  ASIC，  ２３  ROM，  ２４  RAM，  ２５  バスコントローラ，  ２６  NANDコントローラ，  ２７  バス，  ２８  NAND型フラッシュメモリ，  ３１  IPLプログラム，  ３２  SPLプログラム，  ３３  システムプログラム，  ８１  分割サイズ，  ８２  設定情報，  ８３  チェックサムデータ，  １０１  制御部，  １１１  読み出し部，  １１２  チェックサム演算部
【図１】
2005250891.tif 000003
【図２】
2005250891.tif 000004
【図３】
2005250891.tif 000005
【図４】
2005250891.tif 000006
【図５】
2005250891.tif 000007
【図６】
2005250891.tif 000008