(57)【要約】【課題】  ＮＡＮＤ型などのビット単価の低いフラッシュメモリをブートデバイスとして使用して、常に安定的に起動する半導体装置を提供する。【解決手段】  フラッシュメモリ内の複数のブロックにそれぞれ同一のブートプログラムを記憶しておく。フラッシュメモリコントローラは、ＣＰＵからブートプログラムの記憶領域へのアクセスを受けると（ステップＳ１０１）、対応するページから読み出したデータ中のＥＣＣに基づく判定（ステップＳ１０５，Ｓ１０６）と、ブロックインフォメーションに基づく判定（ステップＳ１０９）により、対応するブロックが不良でないと判定した場合のみ、読み出したデータをＣＰＵに出力する。また、不良ブロックと判定した場合は、次のブロックに記憶されたブートプログラムを読み出して（ステップＳ１０６，Ｓ１０３）、不良ブロックの判定を再度行う。【選択図】  図４
2005215824.tif 000002
【特許請求の範囲】
【請求項１】
データの書き換えが可能な不揮発性メモリからブートプログラムを読み出して起動する半導体装置において、
前記不揮発性メモリ内の複数のブロックにそれぞれ同一の前記ブートプログラムが記憶され、
さらに、
起動時に前記不揮発性メモリ内の前記ブートプログラムの読み出し位置を指定して、読み出された前記ブートプログラムに従って起動処理を実行するＣＰＵと、
前記読み出し位置に対応する前記不揮発性メモリ内のブロックから読み出したデータに基づいて、当該ブロックが不良であるか否かを判定し、不良でない場合は、当該データを前記ＣＰＵに対して出力し、不良である場合は、前記ブートプログラムが記憶された他のブロックからデータを読み出して当該ブロックが不良であるか否かを再度判定する読み出し制御回路と、
を有することを特徴とする半導体装置。
【請求項２】
前記読み出し制御回路は、少なくとも、前記不揮発性メモリから読み出したデータに含まれるエラー訂正符号に基づいて、当該ブロックが不良であるか否かを判定することを特徴とする請求項１記載の半導体装置。
【請求項３】
前記読み出し制御回路は、前記エラー訂正符号に基づいて、訂正可能なデータであると判定した場合は、当該データを訂正して前記ＣＰＵに供給し、訂正不可能なデータであると判定した場合は、当該ブロックが不良であると判定する、
ことを特徴とする請求項２記載の半導体装置。
【請求項４】
前記読み出し制御回路は、少なくとも、前記不揮発性メモリから読み出したデータに含まれるブロック状態情報に基づいて、当該ブロックが不良であるか否かを判定することを特徴とする請求項１記載の半導体装置。
【請求項５】
前記読み出し制御回路は、前記ブロック状態情報があらかじめ決められた値でないときに、当該ブロックが不良であると判定することを特徴とする請求項４記載の半導体装置。
【請求項６】
前記ブロック状態情報は、前記ブートプログラムが記憶されたブロック内の先頭ページに記憶されていることを特徴とする請求項４記載の半導体装置。
【請求項７】
前記不揮発性メモリは、ＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１記載の半導体装置。
【請求項８】
データの書き換えが可能な不揮発性メモリから読み出されたブートプログラムに従って起動処理を実行するＣＰＵを具備する半導体装置の起動処理方法において、
前記不揮発性メモリ内の複数のブロックにそれぞれ同一の前記ブートプログラムが記憶され、
前記不揮発性メモリの読み出し制御回路により、起動時に前記ＣＰＵに指定された読み出し位置に対応する前記不揮発性メモリ内のブロックからデータを読み出し、読み出したデータに基づいて当該ブロックが不良であるか否かを判定し、不良でない場合は、当該データを前記ＣＰＵに対して出力し、不良である場合は、前記ブートプログラムが記憶された他のブロックからデータを読み出して当該ブロックが不良であるか否かを再度判定する、
ことを特徴とする半導体装置の起動処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの書き換えが可能な不揮発性メモリからブートプログラムを読み出して起動する半導体装置、およびその起動処理方法に関し、特に、例えばＮＡＮＤ型フラッシュメモリのように、製造過程で不良ブロックを排除することが困難な大容量の不揮発性メモリからブートプログラムを読み出して起動する半導体装置、およびその起動処理方法に関する。
【背景技術】
【０００２】
近年、多数の機能を１チップ上に集積した構造を有するシステムＬＳＩ（Large Scale Integrated circuit）は、家庭用のポータブル機器などの様々な電子機器に使用されている。システムＬＳＩには、ブートプログラムなどの様々な処理プログラムやデータが記憶された不揮発性メモリが、チップの内部または外部に設けられる。このような不揮発性メモリとして、記憶データの電気的な書き換えが可能なフラッシュメモリが用いられることが多くなっている。
【０００３】
ブートプログラムを格納するフラッシュメモリとしては、一般にＮＯＲ型フラッシュメモリが用いられることが多い。しかし、最近では、ビット単価の比較的安価なＮＡＮＤ型フラッシュメモリを用いる要求が高まっている。
【０００４】
ＮＡＮＤ型フラッシュメモリを利用した従来のブートシステムとしては、ＣＰＵ（Central Processing Unit）コアと、システムメモリと、ＮＡＮＤ型フラッシュメモリと、各メモリとＣＰＵコアとの間のデータ通信のためのインタフェースとを具備し、ＣＰＵコアの制御により、ＮＡＮＤ型フラッシュメモリからのブートコードを上記インタフェースを通じてＲＡＭ（Random Access Memory）に一旦格納し、このＲＡＭからブートコードを読み出すことでシステムブーティング動作を行い、システム性能を向上させたものがあった
（例えば、特許文献１参照）。
【特許文献１】特開２００３−２７１３９１号公報（段落番号〔００２７〕〜〔００３３〕、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、フラッシュメモリは、通常、データの書き込みや読み出しがブロック単位で行われるが、ＮＡＮＤ型フラッシュメモリは、製造過程において不良ブロックがランダムに発生することが知られている。一方、ＮＡＮＤ型フラッシュメモリを用いたブートを可能とするためには、ブートプログラムが記憶されたブロックが不良でなく、そのプログラムが正常に記憶されていることが保証されている必要がある。しかし、ＮＡＮＤ型フラッシュメモリにおいて、ある特定のブロックが不良でないことを保証するためには、出荷前に行う試験のコストが増大してしまうことが問題となっていた。
【０００６】
本発明はこのような課題に鑑みてなされたものであり、ＮＡＮＤ型などの比較的ビット単価の低いフラッシュメモリをブートデバイスとして使用した場合に、常に安定的に起動することが可能とされた半導体装置を提供することを目的とする。
【０００７】
また、本発明の他の目的は、ＮＡＮＤ型などの比較的ビット単価の低いフラッシュメモリをブートデバイスとして使用した場合に、常に安定的に起動することが可能となる半導体装置の起動処理方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明では上記課題を解決するために、データの書き換えが可能な不揮発性メモリからブートプログラムを読み出して起動する半導体装置において、前記不揮発性メモリ内の複数のブロックにそれぞれ同一の前記ブートプログラムが記憶され、さらに、起動時に前記不揮発性メモリ内の前記ブートプログラムの読み出し位置を指定して、読み出された前記ブートプログラムに従って起動処理を実行するＣＰＵと、前記読み出し位置に対応する前記不揮発性メモリ内のブロックから読み出したデータに基づいて、当該ブロックが不良であるか否かを判定し、不良でない場合は、当該データを前記ＣＰＵに対して出力し、不良である場合は、前記ブートプログラムが記憶された他のブロックからデータを読み出して当該ブロックが不良であるか否かを再度判定する読み出し制御回路とを有することを特徴とする半導体装置が提供される。
【０００９】
このような半導体装置では、起動時には、まず、不揮発性メモリにおいて同一のブートプログラムがあらかじめ記憶されたブロックのうちの１つから、読み出し制御回路によりデータが読み出される。読み出し制御回路は、読み出したデータに基づいて、このとき読み出しが行われたブロックが不良であるか否かを判定する。この判定は、例えば、読み出したデータに含まれるエラー訂正情報、あるいはブロック状態情報などに基づいて行う。
【００１０】
そして、読み出し制御回路は、当該ブロックが不良でない場合は、読み出したデータをＣＰＵに出力する。これにより、ブートプログラムが順次ＣＰＵに入力されて実行され、半導体装置が起動する。一方、当該ブロックが不良である場合は、不揮発性メモリにおいてブートプログラムが記憶された他のブロックからデータを読み出し、このとき読み出しが行われたブロックが不良であるか否かを再度判定する。
【００１１】
このような読み出し制御回路が半導体装置に実装されることにより、不良ブロックがランダムに含まれる大容量の不揮発性メモリを用いた場合にも、不良ブロックに記憶された不正なブートコートがＣＰＵに実行される事態が回避される。従って、比較的製造コストの低い不揮発性メモリを用いて、常に安定的な起動処理を行うことが可能となる。
【００１２】
また、本発明では、データの書き換えが可能な不揮発性メモリから読み出されたブートプログラムに従って起動処理を実行するＣＰＵを具備する半導体装置の起動処理方法において、前記不揮発性メモリ内の複数のブロックにそれぞれ同一の前記ブートプログラムが記憶され、前記不揮発性メモリの読み出し制御回路により、起動時に前記ＣＰＵに指定された読み出し位置に対応する前記不揮発性メモリ内のブロックからデータを読み出し、読み出したデータに基づいて当該ブロックが不良であるか否かを判定し、不良でない場合は、当該データを前記ＣＰＵに対して出力し、不良である場合は、前記ブートプログラムが記憶された他のブロックからデータを読み出して当該ブロックが不良であるか否かを再度判定することを特徴とする半導体装置の起動処理方法が提供される。
【００１３】
このような半導体装置の起動処理方法では、読み出し制御回路により、起動時には、まず、不揮発性メモリにおいて同一のブートプログラムがあらかじめ記憶されたブロックのうちの１つからデータが読み出される。そして、読み出したデータに基づいて、このとき読み出しが行われたブロックが不良であるか否かが判定される。この判定は、例えば、読み出したデータに含まれるエラー訂正情報、あるいはブロック状態情報などに基づいて行われる。
【００１４】
そして、当該ブロックが不良でない場合は、読み出したデータがＣＰＵに出力される。これにより、ブートプログラムが順次ＣＰＵに入力されて実行され、半導体装置が起動する。一方、当該ブロックが不良である場合は、不揮発性メモリにおいてブートプログラムが記憶された他のブロックからデータが読み出され、このとき読み出しが行われたブロックが不良であるか否かの判定が再度行われる。
【００１５】
このような処理が読み出し制御回路に実行されることにより、不良ブロックがランダムに含まれる大容量の不揮発性メモリを用いた場合にも、不良ブロックに記憶された不正なブートコートがＣＰＵに実行される事態が回避される。従って、比較的製造コストの低い不揮発性メモリを用いて、常に安定的な起動処理を行うことが可能となる。
【発明の効果】
【００１６】
本発明によれば、製品出荷前の試験によることなく、不揮発性メモリ内のブートプログラムが記憶されたブロックが正常であることを保証することができるので、製造コストの低い大容量の不揮発性メモリを用いて、この不揮発性メモリ内のブートコートに従って常に安定的に半導体装置を起動させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図１は、本発明の実施の形態に係る半導体装置の構成を示す図である。
図１に示す半導体装置は、各種回路が同一半導体チップ上に集積されたシステムＬＳＩ１０と、この外部に設けられたＮＡＮＤ型のフラッシュメモリ２０とを具備する。
【００１８】
システムＬＳＩ１０は、ＣＰＵ１１、ｅＤＲＡＭ（embedded Dynamic Random Access Memory）１２および１３、フラッシュメモリコントローラ１４、入出力（Ｉ・Ｏ）Ｉ／Ｆ（インタフェース）１５、その他の周辺回路（Peripheral）１６、内部バス１７を具備する。
【００１９】
ＣＰＵ１１は、内部バス１７を通じてｅＤＲＡＭ１２および１３やフラッシュメモリコントローラ１４、周辺回路１６に接続されている。ＣＰＵ１１は、フラッシュメモリ２０などに記憶された処理プログラムを実行することにより、この半導体装置全体の動作を統括的に制御する。ｅＤＲＡＭ１２および１３は、ＣＰＵ１１により実行される処理プログラムや、処理に用いられるデータを一時的に記憶する。
【００２０】
フラッシュメモリコントローラ１４は、外部に設けられたフラッシュメモリ２０の読み出しを制御する回路であり、その内部にＲＡＭ１４ａを具備している。フラッシュメモリコントローラ１４は、ＣＰＵ１１から読み出しアドレスの指定を受けて、フラッシュメモリ２０からデータを読み出してＲＡＭ１４ａに一時的に格納した後、ＣＰＵ１１に供給する。また、ＲＡＭ１４ａに記憶したデータに対して、このデータに含まれるＥＣＣ（Error Correcting Code）に基づいてエラー訂正を行う機能も有する。
【００２１】
さらに、フラッシュメモリコントローラ１４は、ＣＰＵ１１によりフラッシュメモリ２０内のブートプログラムに対するアクセスを受けた場合には、フラッシュメモリ２０から読み出したデータをＲＡＭ１４ａに一旦格納した後、読み出しを行ったフラッシュメモリ２０内のブロックが不良であるか否かを判定して、不良でない場合のみ、そのデータをＣＰＵ１１に供給する。
【００２２】
入出力Ｉ／Ｆ１５は、フラッシュメモリコントローラ１４とフラッシュメモリ２０との間のデータのやり取りを行うためのＩ／Ｆ回路である。
フラッシュメモリ２０には、この半導体装置を起動するためのブートプログラムを含む各種の処理プログラムやデータが格納されている。これらの処理プログラムは、ＣＰＵ１１により実行される。
【００２３】
なお、内部バス１７には、この内部バス１７を通じたアクセスが可能であるか否かを示すバス状態信号ＲＥＡＤＹが伝送されるバスが含まれる。例えば、ＣＰＵ１１がフラッシュメモリコントローラ１４に対してフラッシュメモリ２０からのデータ読み出しを要求したときに、フラッシュメモリコントローラ１４によりバス状態信号ＲＥＡＤＹがネゲートされると、内部バス１７に対する上位システムからのアクセスがブロックされる。
【００２４】
このような半導体装置では、フラッシュメモリ２０にあらかじめブートプログラムが格納される。そして、起動の際には、ＣＰＵ１１によりフラッシュメモリコントローラ１４に対して、ブートプログラムが格納されているブロックの先頭アドレスが指定され、フラッシュメモリ２０から読み出されたブートプログラムがＣＰＵ１１により実行される。これにより、半導体装置内の各部が初期化される。
【００２５】
ところで、ＮＡＮＤ型のフラッシュメモリは、不良ブロックがランダムに発生することが知られている。このようなフラッシュメモリは、大容量でありながら、ＮＯＲ型フラッシュメモリなどと比較して安価である。一方、半導体装置を常に安定的に起動させるためには、フラッシュメモリ２０内に記憶されたブートプログラムが、常に正常な状態でＣＰＵ１１に供給され、実行される必要がある。
【００２６】
このため、本実施の形態では、フラッシュメモリ２０内の複数のブロックに、それぞれ同一のブートプログラムを格納しておく。そして、フラッシュメモリコントローラ１４において、フラッシュメモリ２０から読み出したデータに基づいて、読み出しが行われたブロックが不良であるか否かを判定し、不良であった場合には他のブロックに記憶されたブートプログラムを再度読み出す。このような処理により、ＣＰＵ１１において、常に正常なブロックに記憶されたブートプログラムが実行されるようにする。
【００２７】
本実施の形態では、例として、フラッシュメモリコントローラ１４は、フラッシュメモリ２０から読み出したデータに含まれるＥＣＣおよびブロックインフォメーションに基づいて、ブロックが不良であるか否かを判定する。
【００２８】
図２は、フラッシュメモリ２０のデータ構造の例を示す図である。
図２に示すように、フラッシュメモリ２０の内部は複数のブロックに分割され、ブロックごとにデータの読み出しが行われる。各ブロックは、さらにページ単位に分割される。本実施の形態では６４のページに分割される。さらに、各ページでは、例えば先頭から２０４８バイト分がユーザデータの格納領域とされ、その後の例えば６４バイト分の拡張データ（Extra Data）領域が設けられている。
【００２９】
拡張データ領域には、その先頭から、ＥＣＣが３バイトずつの４つの領域に分割されて格納される。なお、これらの各領域の最後部には「００」が挿入される。また、各ブロックの先頭ページには、さらに次の４バイト分の領域にブロックインフォメーションが格納される。ブロックインフォメーションは、当該ブロックが不良であるか否かを示すフラグであり、この値が特定の値である場合に当該ブロックが正常であると判別することが可能となる。
【００３０】
図３は、フラッシュメモリ２０におけるブートプログラムの格納状態を示す図である。
図３に示すように、本実施の形態では例として、フラッシュメモリ２０内の先頭からの４ブロックに、それぞれ同一のブートプログラムが格納され、それ以後のブロックに他の処理プログラムやデータが格納される。これらのうち、リセット直後にＣＰＵ１１により指定されるのは先頭ブロックとされ、このブロックを不良であると判定した場合は、フラッシュメモリコントローラ１４は、第２、第３、第４のブロックを順次指定して、ブートプログラムを読み出す。
【００３１】
図４は、上記の半導体装置の起動時におけるフラッシュメモリコントローラ１４の処理の流れを示すフローチャートである。
〔ステップＳ１０１〕システムのリセット信号が入力されると、ＣＰＵ１１は、内部バス１７を介して、ブートプログラムの格納領域に対するアクセスを行う。フラッシュメモリコントローラ１４は、ＣＰＵ１１からのアクセスを待機し、上記格納領域（具体的には先頭ブロックの先頭ページ）へのアクセスが発生した場合に、ステップＳ１０２に進む。
【００３２】
〔ステップＳ１０２〕バス状態信号ＲＥＡＤＹをネゲートする。これにより、上位システムからの内部バス１７に対するアクセスがブロックされる。
〔ステップＳ１０３〕入出力Ｉ／Ｆ１５を通じてフラッシュメモリ２０にアクセスし、ＣＰＵ１１により指定された領域から１ページ分のデータを読み出す。そして、読み出したデータをＲＡＭ１４ａに一時的に格納する。なお、このときすでにＲＡＭ１４ａ内にデータが格納されていた場合には、そのデータに上書きする。
【００３３】
〔ステップＳ１０４〕ＲＡＭ１４ａに格納したデータを順次読み出して、まず、ＥＣＣをチェックし、以下のステップＳ１０５およびＳ１０７の判定を行う。
〔ステップＳ１０５〕当該ページのデータが訂正不可能なエラー（ＵＣＥ：Uncorrectable Error）を含むと判定した場合にはステップＳ１０６に進み、そうでない場合はステップＳ１０７に進む。
【００３４】
〔ステップＳ１０６〕フラッシュメモリ２０内の読み出し対象を次のブロックに指定して、ステップＳ１０３に戻る。これにより、次のブロックの先頭ページから再度データが読み出される。
【００３５】
なお、本実施の形態では、フラッシュメモリ２０内の４ブロックにブートプログラムが格納されているので、ステップＳ１０６に進んだ回数が４となったときは、処理を終了する。この場合、半導体装置は起動されない。
【００３６】
〔ステップＳ１０７〕当該ページのデータが訂正可能なエラー（ＣＥ：Correctable Error）を含むと判定した場合はステップＳ１０８に進み、そうでない場合、すなわちエラーを含まない場合はステップＳ１０９に進む。
【００３７】
〔ステップＳ１０８〕当該ページのデータに対してエラー訂正処理を施し、ＲＡＭ１４ａに書き戻す。
〔ステップＳ１０９〕ＲＡＭ１４ａのデータからブロックインフォメーションを抽出する。そして、このブロックインフォメーションが特定の値でない場合は、不良ブロックと判定してステップＳ１０６に進む。これにより、次のブロックの先頭ページから再度データが読み出される。また、ブロックインフォメーションが特定の値であった場合は、正常なブロックと判定して、ステップＳ１１０に進む。
【００３８】
〔ステップＳ１１０〕バス状態信号ＲＥＡＤＹをアサートする。
〔ステップＳ１１１〕ＲＡＭ１４ａのデータを、内部バス１７を通じてＣＰＵ１１に出力する。これにより、フラッシュメモリ２０から読み出されたブートプログラムがＣＰＵ１１により実行され、半導体装置が起動される。
【００３９】
なお、上記のフローチャートは、ブートプログラムの容量が１ページ内のデータ格納領域の容量以下である場合の処理を示している。ブートプログラムが複数ページに渡って格納される場合は、ステップＳ１０９の処理は、ブロック内の先頭ページからの読み出しが行われた場合にのみ実行される。また、この処理により正常なブロックと判定された場合には、ステップＳ１１０およびＳ１１１によりＲＡＭ１４ａ内のデータをＣＰＵ１１に出力した後、再びステップＳ１０２に戻ってバス状態信号ＲＥＡＤＹをネゲートし、ステップＳ１０３で次のページからのデータ読み出しを行うようにすればよい。
【００４０】
以上のフローチャートで示した処理により、フラッシュメモリコントローラ１４は、フラッシュメモリ２０から読み出したデータが訂正可能なエラーを含む場合、あるいはエラーを含まない場合で、かつ、ブロックインフォメーションにより不良ブロックでないことが検出された場合のみ、そのデータをＣＰＵ１１に出力する。このため、ＣＰＵ１１は、起動時には常に正常なブートプログラムを実行するようになり、半導体装置を安定的に起動させることが可能となる。
【００４１】
従って、フラッシュメモリコントローラ１４の処理により、ブートプログラムが格納されたフラッシュメモリ２０内の特定ブロックが不良でないことが実質的に保証される。従来、特定のブロックが不良でないことを保証することは、フラッシュメモリの出荷前に行う試験のコストの増大につながり、また歩留まりが悪化する要因ともなっていた。しかし、本発明を適用した場合には、ランダムに不良ブロックが存在する、低コストでかつ大容量のフラッシュメモリをブートデバイスとして使用することが可能となるので、半導体装置全体の製造コストを抑制しながらも、常に安定的な起動処理を実行することが可能となる。
【００４２】
また、読み出し対象のブロックが不良であると判定された場合には、フラッシュメモリコントローラ１４の処理により、他のブロックからブートプログラムが再度読み出され、不良ブロックでないと判定された場合にのみＣＰＵ１１に出力される。このため、ＣＰＵ１１は、リセット後に従来と何ら変わらない処理手順で起動処理を実行することができ、フラッシュメモリコントローラ１４以外の構成を変更する必要がない。従って、本発明は、ＣＰＵにより種々の処理が実行されるコンピュータシステムに対して、製造コストを増大させることなく、汎用的に適用することが可能である。
【００４３】
なお、上記の実施の形態では、フラッシュメモリをシステムＬＳＩの外部に設けたが、このフラッシュメモリをシステムＬＳＩの内部に形成した場合にも本発明を適用することが可能である。
【００４４】
また、ブートデバイスとして用いるフラッシュメモリとしては、ＮＡＮＤ型に限らず、比較的大容量で、シーケンシャルなアクセスが可能な構成を有して、製品出荷時に不良ブロックを完全に排除することが困難なフラッシュメモリを適用することが可能である。このようなものとして、例えば、ＡＮＤ型といわれるフラッシュメモリを用いることが可能である。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施の形態に係る半導体装置の構成を示す図である。
【図２】フラッシュメモリのデータ構造の例を示す図である。
【図３】フラッシュメモリにおけるブートプログラムの格納状態を示す図である。
【図４】本実施の形態に係る半導体装置の起動時におけるフラッシュメモリコントローラの処理の流れを示すフローチャートである。
【符号の説明】
【００４６】
１０……システムＬＳＩ、１１……ＣＰＵ、１２，１３……ｅＤＲＡＭ、１４……フラッシュメモリコントローラ、１４ａ……ＲＡＭ、１５……入出力Ｉ／Ｆ、１６……周辺回路、２０……フラッシュメモリ
【図１】
2005215824.tif 000003
【図２】
2005215824.tif 000004
【図３】
2005215824.tif 000005
【図４】
2005215824.tif 000006