特開2016-151922(P2016-151922A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ラピスセミコンダクタ株式会社の特許一覧

<>
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000003
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000004
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000005
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000006
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000007
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000008
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000009
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000010
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000011
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000012
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000013
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000014
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000015
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000016
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000017
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000018
  • 特開2016151922-メモリ制御装置及びメモリ制御方法 図000019
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2016-151922(P2016-151922A)
(43)【公開日】2016年8月22日
(54)【発明の名称】メモリ制御装置及びメモリ制御方法
(51)【国際特許分類】
   G06F 12/16 20060101AFI20160725BHJP
【FI】
   G06F12/16 310A
【審査請求】未請求
【請求項の数】10
【出願形態】OL
【全頁数】20
(21)【出願番号】特願2015-29459(P2015-29459)
(22)【出願日】2015年2月18日
(71)【出願人】
【識別番号】308033711
【氏名又は名称】ラピスセミコンダクタ株式会社
(74)【代理人】
【識別番号】100079119
【弁理士】
【氏名又は名称】藤村 元彦
(74)【代理人】
【識別番号】100147728
【弁理士】
【氏名又は名称】高野 信司
(72)【発明者】
【氏名】長塚 純一
【テーマコード(参考)】
5B018
【Fターム(参考)】
5B018GA04
5B018HA14
5B018HA22
5B018KA01
5B018MA23
5B018NA06
5B018QA03
5B018QA14
(57)【要約】
【目的】メモリの動作を阻害することなく、メモリのエラーチェック及びリフレッシュ処理を行うことが可能なメモリ制御装置及びメモリ制御方法を提供する。
【構成】メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶する。ブロックアクセス回数情報に基づいて、メモリの複数のブロックのうちデータの読出し回数が第1の閾値を越えているブロックに対してリフレッシュ処理を行う。また、データの読出し回数が第1の閾値以下で且つ第2の閾値よりも大きいブロックに対してメモリチェック処理を行う。データの読出し回数が第1の閾値及び第2の閾値よりも小さいブロックに対しては、リフレッシュ処理及びメモリチェック処理を行わない。
【選択図】図1
【特許請求の範囲】
【請求項1】
メモリに対してデータの書込又は読出制御を行うメモリ制御装置であって、
前記メモリに接続され、前記メモリに対して前記データの書込み又は読出しを行うインタフェース部と、
前記メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶する記憶部と、
前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が第1の閾値を越えているブロックに対してリフレッシュ処理を行う制御部と、
を有することを特徴とするメモリ制御装置。
【請求項2】
前記制御部は、前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が前記第1の閾値以下で且つ第2の閾値よりも大きいブロックに対してメモリチェック処理を行うことを特徴とする請求項1に記載のメモリ制御装置。
【請求項3】
前記メモリチェック処理は、前記メモリから読み出されたデータに対して、誤り検出を施して誤りビット数を示す情報を生成する誤り検出処理を含み、
前記制御部は、前記複数のブロックのうち前記エラービット数が所定のエラー閾値を超えたデータを含むブロックに対して、前記リフレッシュ処理を行なうことを特徴とする請求項2に記載のメモリ制御装置。
【請求項4】
電源投入に応じて第1リセット信号を生成する第1リセット信号生成部と、
リセット要求に応じて第2リセット信号を生成する第2リセット信号生成部と、
前記第1リセット信号又は前記第2リセット信号を、前記インタフェース部が有する前記書込み又は読出しの制御情報を初期化する初期化信号として、前記インタフェース部に送出する初期化信号供給部と、
を有し、
前記制御部は、前記初期化信号に応じて前記インタフェース部の前記制御情報が初期化された後に、前記初期化信号が前記第1リセット信号に基づくものであるか否かを判定し、前記第1リセット信号に基づくものであると判定した場合に、前記ブロックアクセス回数情報に基づいて、前記メモリの各々のブロックの前記データの読出し回数が前記第1の閾値又は前記第2の閾値を越えているか否かの判定を行うことを特徴とする請求項2又は3に記載のメモリ制御装置。
【請求項5】
前記記憶部は、電源投入後の最初の前記初期化信号が送出済であることを示すパワーオンリセット済コードを記憶する記憶領域を備え、
前記制御部は、前記初期化信号に応じて前記記憶領域に前記パワーオンリセット済コードが記憶されているか否かを判別し、記憶されていないと判別した場合に、前記レジスタに前記パワーオンリセット済コードを書き込むとともに、前記初期化信号が前記第1リセット信号に基づくものであると判定することを特徴とする請求項4に記載のメモリ制御装置。
【請求項6】
前記データの読出し回数に応じて前記リフレッシュ処理又は前記メモリチェック処理を行う第1のモードと、
前記データの読出し回数に拘わらず前記メモリの各ブロックに対して前記メモリチェック処理を行う第2のモードと、
を備え、
前記制御部は、前記ブロックアクセス回数情報に基づいて、前記第1のモードおよび前記第2のモードのうちの一方を選択して前記メモリチェック処理又は前記リフレッシュ処理を実行することを特徴とする請求項2乃至5のいずれか1に記載のメモリ制御装置。
【請求項7】
前記インタフェース部は、前記ブロックアクセス情報を含む管理情報を前記メモリに書き込み、電源投入に応じて前記管理情報を前記メモリから読み出して前記記憶部に記憶させることを特徴とする請求項1乃至6のいずれか1に記載のメモリ制御装置。
【請求項8】
前記インタフェース部は、前記メモリの全ブロックに対するデータの読出し回数が第3の閾値を越えている場合に、前記ブロックアクセス情報を前記メモリに書き込むことを特徴とする請求項7に記載のメモリ制御装置。
【請求項9】
前記インタフェース部は、前記メモリの複数のブロックうち、データの読出しがあったブロックに対する前記読出し回数が第4の閾値を越えている場合に、前記ブロックアクセス情報を前記メモリに書き込むことを特徴とする請求項7に記載のメモリ制御装置。
【請求項10】
メモリに対してデータの書込又は読出制御を行うメモリ制御方法であって、
前記メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶するステップと、
前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が第1の閾値を越えているブロックに対してリフレッシュ処理を行うステップと、
を含むことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリに対してデータのアクセスを行うメモリ制御装置及びメモリ制御方法に関する。
【背景技術】
【0002】
近年、メモリ容量の増大化に伴い、ビット単価で優れているNAND型フラッシュメモリが普及している。かかるNAND型フラッシュメモリでは、大容量化、高集積化に伴い、書き込んだデータの経年劣化の問題や、集中した読出し動作によりデータが正しく読み出せなくなるという問題が顕著化している。これらの問題は、データ保持を担う電荷が年数経過に伴い低下することや、読み出し動作に伴う隣接メモリセルへの微量な電荷蓄積によって保存データが破壊されてしまうことによって、生じるものである。
【0003】
そこで、このような不具合を回避すべく、データの誤りを訂正する誤り訂正符号(ECC:Error Correcting Code)をデータに付加してデータとともに書き込み、これを読み出すことによりデータの誤り箇所を訂正する処理が行われる。しかし、訂正符号を用いて訂正できるビット数には限界があり、限界以上のビット数のエラーが発生した場合には訂正を行うことができない。そのため、訂正できるビット数が限界に達する前に誤りを検出し、訂正を行う必要がある。そこで、訂正できるビット数の限界前に誤りを検出する方法として、通常のデータ読出しがなされていないときにメモリチェックを行い、リフレッシュ処理を行う必要があるかどうか判別する装置が考えられた(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011−128751号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
かかる装置においては、メモリの待機時(アイドリング時)にメモリチェックを行って、リフレッシュ処理が必要な領域を判別する。しかしながら、メモリチェックの開始時点でメモリが待機状態であったとしても、その後、メモリチェック処理の最中にデータ読み出しが要求される場合がある。このような場合には、メモリチェック処理が完了してからデータの読み出し処理を行う必要があるため、データの読出し処理が遅延する等、メモリの動作が阻害されてしまうという問題があった。
【0006】
また、特定のメモリセルへのアクセスが集中した場合、アクセスが集中したメモリセルだけではなく、同じメモリブロック内の隣接するメモリセルにビットエラーが多く発生する場合があり、エラーチェックを実行した時には既に誤り訂正符号で訂正できる限界以上のビット数のエラーが生じている可能性があるという問題があった。
【0007】
本発明は、上記問題を解決するべくなされたものであり、メモリの動作を阻害することなく、メモリのエラーチェック及びリフレッシュ処理を行うことが可能なメモリ制御装置及びメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係るメモリ制御装置は、メモリに対してデータの書込又は読出制御を行うメモリ制御装置であって、前記メモリに接続され、前記メモリに対して前記データの書込み又は読出しを行うインタフェース部と、前記メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶する記憶部と、前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が第1の閾値を越えているブロックに対してリフレッシュ処理を行う制御部と、を有することを特徴とする。
【0009】
また、本発明に係るメモリ制御方法は、メモリに対してデータの書込又は読出制御を行うメモリ制御方法であって、前記メモリを構成する複数のブロックの各々に対するデータの読出し回数をブロックアクセス回数情報として記憶するステップと、前記ブロックアクセス回数情報に基づいて、前記メモリの前記複数のブロックのうちデータの読出し回数が第1の閾値を越えているブロックに対してリフレッシュ処理を行うステップと、を含むことを特徴とする。
【発明の効果】
【0010】
本発明においては、メモリ内の各メモリブロックへのアクセス回数に応じて、リフレッシュ処理及びメモリチェック処理を行うか否かを判別する。そして、アクセス回数が所定の閾値を越えている場合にのみ、リフレッシュ処理又はメモリチェック処理を行う。アクセス回数の少ないメモリブロックに対しては処理を行わないため、メモリチェック及びリフレッシュ処理に要する時間を短縮することができる。
【0011】
また、リセット信号を受信した際、このリセット信号がパワーオンリセット信号であるか否かを判別し、パワーオンリセット信号を受けたと判別した場合のみ、メモリチェック処理及びリフレッシュ処理を行うか否かの判別を行う。これにより、電源投入直後以外のリセット時にはメモリチェック及びリフレッシュ処理の為の待機状態が無いため、フラッシュメモリに対して高速アクセスを行うことが可能となる。
【0012】
よって、本発明によれば、メモリの動作を阻害することなく、メモリのエラーチェック及びリフレッシュ処理を行うことが可能となる。
【図面の簡単な説明】
【0013】
図1】本発明に係る情報処理装置の構成を示すブロック図である。
図2】ページ/ブロック情報及び管理情報に含まれる情報を示す図である。
図3】フラッシュメモリを構成する複数のブロック及びページを模式的に示す図である。
図4】起動チェックルーチンを示すフローチャートである。
図5】メモリチェック対象オフセットページ更新ルーチンを示すフローチャートである。
図6】エラー発生確認ルーチンを示すフローチャートである。
図7】ブロックアクセス回数情報オフセット更新ルーチンを示すフローチャートである。
図8】リフレッシュルーチンを示すフローチャートである。
図9】ブロックアクセス回数情報更新ルーチンを示すフローチャートである。
図10】本発明の実施例2におけるブロックアクセス回数情報更新ルーチンを示すフローチャートである。
図11】本発明の実施例3におけるページ/ブロック情報及び管理情報に含まれる情報を示す図である。
図12】本発明の実施例3における起動チェックルーチンを示すフローチャートである。
図13】本発明の実施例3における第2モード処理ルーチンを示すフローチャートである。
図14】本発明の実施例3における優先メモリチェック対象オフセットページ更新ルーチンを示すフローチャートである。
図15】本発明の実施例3におけるメモリチェック対象ブロック及びオフセットページ更新ルーチンを示すフローチャートである。
図16】本発明の実施例3におけるエラー発生確認ルーチンを示すフローチャートである。
図17】本発明の実施例3におけるリフレッシュルーチンを示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【実施例1】
【0015】
図1は、本発明に係るメモリ制御装置を含む情報処理装置10の構成を示すブロック図である。図1に示すように、情報処理装置10は、CPU(Central Processing Unit)11、インタフェース部12、RAM(Random Access Memory)13、フラッシュメモリ14、CPUバス15、パワーオンリセット生成部16、オアゲート17及び内部リセット生成部18を含む。
【0016】
CPU11は、CPUバス15を介してインタフェース部12、RAM13及び内部リセット生成部18に接続されている。CPU11は、CPUバス15及びインタフェース部12を介してフラッシュメモリ14に対してデータの読出し・書き込みアクセスを行う。
【0017】
すなわち、CPU11は、フラッシュメモリ14に格納されているプログラムデータ(図示せず)、つまり情報処理装置10の主機能を実現する為の主プログラムをインタフェース部12を介して読み出し、この主プログラムに従った主制御を実行する制御部である。更に、CPU11は、フラッシュメモリ14に格納されているリフレッシュプログラムデータ及びメモリチェックプログラムデータをインタフェース部12を介して読み出し、このリフレッシュプログラムデータに従ったリフレッシュ処理及びメモリチェックプログラムデータに従ったメモリチェック処理を実行する。このリフレッシュ処理は、対象のメモリブロックから符号化データ片を読み出し、誤り訂正処理を施して異なるメモリブロックに書き込む処理である。またメモリチェック処理は、フラッシュメモリ14内に記憶されたデータを正しく読み出せるか否かを検査する処理である。尚、リフレッシュ処理及びメモリチェック処理の詳細については後述する。
【0018】
インタフェース部12は、エラー検出訂正部20、ステータスレジスタ21及びメモリチェック領域指定レジスタ22を含む。エラー検出訂正部20は、後述するメモリチェック処理の対象となるメモリブロック(以下、単にブロックと称する)のチェック対象のページ(以下、オフセットページと称する)に含まれるエラーを検出する。また、エラー検出訂正部20は、指定されたブロックについて、エラーの訂正を行う。ステータスレジスタ21は、エラー検出訂正部20が検出したエラーのビット数等の情報を保持する。メモリチェック領域指定レジスタ22は、メモリチェック処理の対象として指定されたメモリ領域を示す情報を保持する。また、インタフェース部12は、フラッシュメモリ14に対する読み出し、書き込み等のアクセス用の制御情報を有する。インタフェース部12が有するこれらの制御情報は、リセット信号Rに応じてリセット(初期化)される。
【0019】
RAM13は、記憶部としてのパワーオンリセットチェック領域30を含む。パワーオンリセットチェック領域30には、電源投入後の最初のリセット信号であるパワーオンリセット信号PRを受信したことを示す情報として例えば1バイトの値「0x5A」(パワーオンリセット済コード)が、CPU11によって書き込まれる。一旦「0x5A」が書き込まれると、パワーオンリセットチェック領域30は、電源がオフになるまで「0x5A」の値を保持する。また、RAM13には、ページ/ブロック情報31が格納される。ページ/ブロック情報31は、図2(a)に示すように、ブロックアクセス回数情報301、リフレッシュ対象ブロック情報302、メモリチェック対象ブロック情報303及びメモリチェック対象オフセットページ情報304を含む。
【0020】
フラッシュメモリ14は、図3(a)に示すように、1ブロックがK個のページ1〜K(K;自然数)からなる、L個のブロック1〜L(L;自然数)のアクセス領域に区分けされている。また、フラッシュメモリ14は、管理情報40を記憶する領域を有する。管理情報40は、図2(b)に示すように、ブロックアクセス回数情報401、リフレッシュ対象ブロック情報402及びメモリチェック対象ブロック情報403を含む。
【0021】
ブロックアクセス回数情報301及び401は、フラッシュメモリ14の各ブロックに対するリードアクセスの累積回数をブロック毎に示す情報である。尚、ブロックアクセス回数情報の更新処理については後述する。
【0022】
パワーオンリセット生成部16は、情報処理装置10の電源投入時に1パルスのリセット信号PR(第1リセット信号)を生成し、これをオアゲート17に供給する。内部リセット生成部18は、主制御の実行時に発令されたリセット要求指令、又はプログラムタイマ(図示せず)によるタイムアウトエラーに応じて1パルスのリセット信号IR(第2リセット信号)を生成し、これをオアゲート17に供給する。オアゲート17は、パワーオンリセット生成部16からリセット信号PRが供給された場合には、これをリセット信号R(初期化信号)としてCPU11及びインタフェース部12に供給する。また、オアゲート17は、内部リセット生成部18からリセット信号IRが供給された場合には、これをリセット信号RとしてCPU11及びインタフェース部12に供給する。
【0023】
CPU11は、リセット信号Rに応じて、図4に示す起動チェックルーチンに従って、起動チェック処理を実行する。起動チェック処理は、リフレッシュ処理、メモリチェック処理及びこれらの処理を行うか否かの判定処理を含む処理である。
【0024】
まず、CPU11は、RAM13のパワーオンリセットチェック領域30に保持されている値が「0x5A」であるか否かを判定する(ステップS1)。ステップS1においてパワーオンリセットチェック領域30に保持されている値が「0x5A」であると判定された場合、CPU11は、受信したリセット信号Rがパワーオンリセット信号PRに基づくものではないと判定して、この起動チェックルーチンを終了する。他方、ステップS1においてパワーオンリセットチェック領域30に「0x5A」が保持されていないと判定した場合、CPU11は、受信したリセット信号Rがパワーオンリセット信号PRに基づくものであると判定して、RAM13のパワーオンリセットチェック領域30に「0x5A」を書き込む(ステップS2)。
【0025】
次に、CPU11は、インタフェース部12を介してフラッシュメモリ14から図2(b)に示す管理情報40を読み出し、これをページ/ブロック情報31としてRAM13に書き込む(ステップS3)。これにより、管理情報40中のブロックアクセス回数情報401が、ブロックアクセス回数情報301としてRAM13に格納される。また、管理情報40中のリフレッシュ対象ブロック情報402が、リフレッシュ対象ブロック情報302としてRAM13に格納される。さらに、メモリチェック対象ブロック情報403が、メモリチェック対象ブロック情報303としてRAM13に格納される。
【0026】
CPU11は、RAM13に格納されているブロックアクセス回数情報301に基づき、フラッシュメモリ14内の対象ブロック(例えば、ブロック1)のリードアクセスの回数が第1のアクセス閾値TA1を越えているか否か、すなわちTA1よりも大きいか否かを判定する(ステップS4)。なお、このステップS4における判定は、リフレッシュ対象ブロック情報の追加及び保存処理を経て、ブロック1〜ブロックLの全てのブロックについて行われる。
【0027】
ステップS4の判定の結果、対象ブロックのリードアクセスの回数が第1のアクセス閾値TA1よりも大きかった場合、CPU11は、当該ブロックをリフレッシュ対象ブロックとして、リフレッシュ対象ブロック情報302に追加する(ステップS5)。また、CPU11は、当該情報をリフレッシュ対象ブロック情報402としてフラッシュメモリ14に保存する(ステップS6)。
【0028】
一方、ステップS4の判定の結果、対象ブロックのリードアクセスの回数が第1のアクセス閾値TA1を越えていなかった場合、CPU11は、対象ブロックのリードアクセスの回数が第2のアクセス閾値TA2(TA2<TA1)よりも大きいか否かを判定する(ステップS7)。
【0029】
ステップS7の判定の結果、対象ブロックのリードアクセスの回数が第2のアクセス閾値TA2よりも大きかった場合、CPU11は、当該ブロックをメモリチェックの対象領域として、インタフェース部12のメモリチェック領域指定レジスタ22に設定する(ステップS8)。ステップS8の実行後、CPU11は、メモリチェックの対象ブロックについて、図5に示すメモリチェック対象オフセットページの更新処理を実行する(ステップS9)。
【0030】
図5は、かかるメモリチェック対象オフセットページ更新処理のルーチンを示すフローチャートである。CPU11は、まずRAM13に記憶されているメモリチェック対象オフセットページ情報304にて示される番号を1だけインクリメントした番号を、新たなメモリチェック対象オフセットページを示すページ番号としてRAM13のメモリチェック対象オフセットページ情報304に上書き記憶させる(ステップS21)。例えば、ページ番号「N」が記憶されていた場合、これに1をインクリメントしたページ番号「N+1」を新たなページ番号として上書き記憶させる。次に、CPU11は、インクリメントされたページ番号が最終ページの番号Kを超えたか否かの判定を行う(ステップS22)。ステップS22において最終ページの番号Kを超えたと判定された場合、つまりメモリチェック対象ブロック内でのメモリチェック処理が全て終了している場合には、CPU11は、RAM13に記憶されているメモリチェック対象オフセットページ情報304のページ番号を0に設定する(ステップS23)。
【0031】
図4におけるメモリチェック対象オフセットページ情報更新処理(ステップS9)の実行後、CPU11は、指定メモリ領域のメモリ読み出しチェック処理(メモリチェック処理)を実行する(ステップS10)。
【0032】
すなわち、CPU11は、フラッシュメモリ14内のアドレスを指定して、読み出し指令信号をインタフェース部12に供給する。インタフェース部12は、かかる読み出し指令信号に応じて、指定されたアドレスに対応したページに記憶されている符号化データ片を、フラッシュメモリ14から読み出す。インタフェース部12のエラー検出訂正部20は、かかる符号化データ片に対してエラー検出処理を実行し、エラービットの数を示すエラー情報を生成する。CPU11は、かかるエラー情報を、エラーの検出された符号化データ片が保持されているフラッシュメモリ14内のブロックの番号と対応付けて、インタフェース部12のステータスレジスタ21に記憶させる。
【0033】
なお、メモリチェック処理は、図3(b)に示すように、ページ数をインクリメントしつつ、対象ブロック(例えば、ブロックM)のKページ目までの全てのページについて行われる。
【0034】
CPU11は、ステップS10の指定メモリ領域のメモリ読出しチェック処理中に、図6に示すようなエラー発生確認処理を実行する。
【0035】
CPU11は、ステータスレジスタ21に記憶されているエラー情報に基づいて、エラービットの数が第1のエラー閾値TE1を越えているか否か、すなわちTE1よりも大きいか否かを判定する(ステップS31)。この第1のエラー閾値TE1は、誤り訂正処理によって訂正可能なエラービット数の限界値に近い値であり、リフレッシュ処理が必要なビット数の目安となる数値である。
【0036】
エラービットの数が第1のエラー閾値TE1よりも大きいと判定された場合、CPU11は、当該ブロックをRAM13のリフレッシュ対象ブロック情報302に追加する(ステップS32)。また、CPU11は、当該情報をリフレッシュ対象ブロック情報402としてフラッシュメモリ14に保存する(ステップS33)。
【0037】
一方、ステップS31においてエラービットの数が第1のエラー閾値TE1を越えていないと判定された場合、CPU11は、エラービットの数が第2のエラー閾値TE2(TE2<TE1)よりも大きいか否かを判定する(ステップS34)。この第2のエラー閾値TE2は、リフレッシュ処理が必要な数には至らないものの経過観測が必要なエラービット数の目安となる数値である。
【0038】
エラービットの数が第2のエラー閾値TE2を越えていないと判定された場合、CPU11は、RAM13のメモリチェック対象ブロック情報303から当該ブロックをクリアする(ステップS35)。これに対し、エラービットの数が第2のエラー閾値TE2よりも大きいと判定された場合、CPU11は、当該ブロックのクリアを行わない。すなわち、RAM13は従前のメモリチェック対象ブロック情報303をそのまま保持する。
【0039】
図4に示すステップS10において、CPU11は以上のようなエラー発生確認ルーチンを含む指定メモリ領域のメモリ読出しチェック処理を実行する。
【0040】
一方、ステップS7において、対象ブロックのリードアクセスの回数が閾値TA2を越えていないと判定された場合、CPU11は対象ブロックがインタフェース部12のメモリチェック領域指定レジスタ22に登録されているか否かを判定する(ステップS11)。この判定処理は、対象ブロックが、例えば前回の起動チェック処理時にメモリチェック処理の対象領域としてレジスタに登録されたにもかかわらず不慮の動作によってメモリチェック処理がなされなかったメモリブロックに該当するか否かを判定する処理である。メモリチェック領域指定レジスタ22に登録されていると判定された場合、CPU11は、ステップS9のメモリチェック対象オフセットページの更新処理の実行に移る。
【0041】
ステップS11において対象ブロックがメモリチェック領域指定レジスタ22に登録されていないと判定された場合、又はリフレッシュ対象ブロック情報402のフラッシュメモリ14への保存処理(ステップS6)若しくは指定メモリ領域のメモリ読み出しチェック処理(ステップS10)の実行後、CPU11は、ブロックアクセス回数情報オフセットの更新処理を実行する(ステップS12)。
【0042】
図7は、ブロックアクセス回数情報オフセットの更新処理のルーチンを示すフローチャートである。
【0043】
CPU11は、まずRAM13に記憶されているブロックアクセス回数情報301にて示される対象ブロック番号を1だけインクリメントした番号を、アクセス回数のチェック対象としての新たなブロック番号として設定する(ステップS41)。例えば、アクセス回数のチェック対象がブロック番号「M」であった場合、これに1をインクリメントしたブロック番号「M+1」を新たなブロック番号として設定する。次に、CPU11は、インクリメントされたブロック番号が最終ブロックの番号Lを超えたか否かの判定を行う(ステップS42)。ステップS42において最終ブロックの番号Lを超えたと判定された場合、つまり全ブロックのアクセス回数のチェックが全て終了している場合には、CPU11は、ブロックアクセス回数情報のオフセットを0に設定する(ステップS43)。
【0044】
CPU11は、ステップS4〜S12のチェック処理が全ブロックについて完了したか否かを判定する(ステップS13)。完了したと判定すると、CPU11は、リフレッシュ処理(ステップS14)の実行に移る。完了していないと判定すると、CPU11は、ステップS4に戻って、ステップS4〜S12の処理を再び実行する。
【0045】
図8は、リフレッシュ処理のルーチンを示すフローチャートである。CPU11は、RAM13のリフレッシュ対象ブロック情報302に基づき、リフレッシュ対象ブロックがあるか否かを判定する(ステップS51)。リフレッシュ対象ブロックがないと判定した場合、CPU11は、このリフレッシュ処理を終了する。
【0046】
リフレッシュ対象ブロックがあると判定した場合、CPU11は、インタフェース部12に対してリフレッシュ処理の実行命令を送出する(ステップS52)。
【0047】
すなわち、インタフェース部12は、まずリフレッシュ処理の対象ブロックから符号化データ片を読み出す。インタフェース部12のエラー検出訂正部20は、かかる符号化データ片に対して誤り訂正処理を施す。インタフェース部12は、誤り訂正処理の施された1ブロック分の符号化データ片を、当該符号化データ片が保持されていたブロックとは異なるブロックに書き込む。
【0048】
CPU11は、リフレッシュ処理を実施したブロックの番号を、RAM13のリフレッシュ対象ブロック情報302から削除する(ステップS53)。また、CPU11は、当該ブロックの番号のアクセス回数を0に設定して(ステップS54)、RAM13のブロックアクセス回数情報301を更新する。
【0049】
図4に示すリフレッシュ処理(ステップS14)の実行後、CPU11は、インタフェース部12を介してフラッシュメモリ14の管理情報40の更新処理を実行する。この管理情報40の更新処理には、ブロックアクセス回数情報401の更新処理が含まれる。
【0050】
図9は、かかるブロックアクセス回数情報更新処理のルーチンを示すフローチャートである。CPU11は、フラッシュメモリ14に対してリードアクセスがあったか否かを判定する(ステップS61)。リードアクセスがないと判定した場合、CPU11は、このブロックアクセス回数情報更新処理を終了する。
【0051】
リードアクセスがあると判定した場合、CPU11は、リードアクセスがあったブロックのアクセス回数をインクリメントする(ステップS62)。また、CPU11は、全ブロックに対するリードアクセスの回数(全リードアクセス回数)をインクリメントする(ステップS63)。
【0052】
CPU11は、全リードアクセス回数が第3のアクセス閾値TA3を越えたか否かを判定する(ステップS64)。TA3を越えていないと判定すると、CPU11は、このブロックアクセス回数情報更新処理を終了する。一方、TA3を越えていると判定すると、CPU11は、インクリメントしたブロックアクセス回数情報をブロックアクセス回数情報401としてフラッシュメモリ14に保存する(ステップS65)。
【0053】
以上のように、上記した起動チェック処理では、まずフラッシュメモリ14内の各メモリブロックに対するリードアクセスの回数に応じて、対象ブロックに対してリフレッシュ処理及びメモリチェック処理を行うか否かを判別する。そして、リードアクセスの回数が第1のアクセス閾値TA1を越えている場合にはリフレッシュ処理を行い、第1のアクセス閾値TA1は越えていないものの第2のアクセス閾値TA2を越えている場合にはメモリチェック処理を行う。つまり、リードアクセスの回数が第2のアクセス閾値TA2を超えていない場合には、メモリチェック処理及びリフレッシュ処理を行わないようにしたのである。これにより、アクセス回数が少ないメモリブロックに対しては処理がなされないため、メモリチェック処理及びリフレッシュ処理の実行に要する時間を短縮することができる。
【0054】
また、上記した起動チェック処理では、RAM13において更新したブロックアクセス回数情報301をブロックアクセス回数情報401としてフラッシュメモリ14に保存する。これにより、前回の起動チェック処理時のブロックアクセス回数及び累積したブロックアクセス情報が取得可能となり、的確なブロックアクセス回数に基づいた起動チェック処理、リフレッシュ処理及びメモリチェック処理の実施が可能となる。
【0055】
また、上記した起動チェック処理では、RAM13において更新したリフレッシュ対象ブロック情報302をリフレッシュ対象ブロック情報402としてフラッシュメモリ14に保存する。これにより、前回の起動チェック処理時のリフレッシュ対象ブロック情報を取得することができるため、リフレッシュ対象ブロック情報に登録されているものの不慮の動作等により前回の起動チェック時にリフレッシュ処理が実施されなかったブロックに対して、リフレッシュ処理を行うことが可能となる。
【0056】
また、上記した起動チェック処理では、RAM13において更新したメモリチェック対象ブロック情報303をメモリチェック対象ブロック情報403としてフラッシュメモリ14に保存する。これにより、メモリチェック対象ブロック情報に登録されているものの不慮の動作等により前回の起動チェック時にメモリチェック処理が実施されなかったブロックに対して、メモリチェック処理を行うことが可能となる。また、前回の起動チェック処理時のメモリチェック対象ブロック情報から継続してエラービット数が第2のエラー閾値TE2を越えているブロックに対して、メモリチェック処理を行うことが可能となる。
【0057】
また、上記した起動チェック処理では、RAM13のパワーオンリセットチェック領域30に保持されている値に基づき、リセット信号Rがパワーオンリセット信号PRに基づくものであるか否かを判別する。そして、パワーオンリセット信号PRに基づくリセット信号Rを受けた場合のみ、起動チェック処理を行う。つまり、内部リセット信号IRに基づくリセット信号Rを受けた場合は、リフレッシュ処理及びメモリチェック処理を実行するか否かの判定を行わないようにしたのである。これにより、電源投入直後を除き、フラッシュメモリ14へのアクセス時における起動チェック処理、メモリチェック処理及びリフレッシュ処理を実行する為の待機状態が無いため、フラッシュメモリ14に対して常に高速アクセスを行うことが可能となる。さらに、電源投入直後にのみ起動チェック処理、メモリチェック処理及びリフレッシュ処理を行うため、頻繁にこれらの処理を行うことに起因するメモリの劣化を抑えることができる。
【実施例2】
【0058】
実施例2にかかる情報処理装置は、各部の構成については図1に示す実施例1の情報処理装置10と同様であり、ブロックアクセス情報の更新処理において実施例1の情報処理装置10と異なる。以下、ブロックアクセス情報の更新処理について説明する。
【0059】
図10は、ブロックアクセス回数情報更新処理のルーチンを示すフローチャートである。CPU11は、フラッシュメモリ14に対してリードアクセスがあったか否かを判定する(ステップS71)。リードアクセスがないと判定した場合、CPU11は、このブロックアクセス回数情報更新処理を終了する。
【0060】
リードアクセスがあると判定した場合、CPU11は、リードアクセスがあったブロックのアクセス回数をインクリメントする(ステップS72)。
【0061】
CPU11は、リードアクセスがあったブロックのアクセス回数が第4のアクセス閾値TA4を越えたか否かを判定する(ステップS73)。TA4を越えていないと判定すると、CPU11は、このブロックアクセス回数情報更新処理を終了する。一方、TA4を越えていると判定すると、CPU11は、TA4を越えたブロックについてのアクセス回数情報をブロックアクセス回数情報401としてフラッシュメモリ14に保存する(ステップS74)。
【0062】
以上のように、本実施例においては、リードアクセスの回数が第4のアクセス閾値TA4を越えたブロックについてのみ、ブロックアクセス回数情報の更新及びフラッシュメモリ14への保存を行う。したがって、ブロックアクセス回数情報のオフセットを小さくすることができ、起動チェック処理に要する時間を短縮することができる。また、頻繁に情報の保存を行うことによるメモリの劣化を抑えることができる。
【実施例3】
【0063】
実施例2にかかる情報処理装置は、各部の構成については図1に示す実施例1の情報処理装置10と同様であり、ページ/ブロック情報31としてRAM13に格納される情報及び管理情報40としてフラッシュメモリ14に記憶される情報が実施例1の情報処理装置10と異なる。また、実施例1の起動チェック処理と同様のリフレッシュ処理及びメモリチェック処理の判定処理を行う第1のモードの他に、後述する優先メモリチェック処理を行う第2のモードを備える点で実施例1の情報処理装置10と異なる。以下、実施例1と異なる部分及び動作について説明する。
【0064】
図11(a)に示すように、RAM13に格納されるページ/ブロック情報31は、301〜304の各情報に加えて、優先メモリチェック対象ブロック情報305及び優先メモリチェック対象オフセットページ情報306を含む。
【0065】
図11(b)に示すように、フラッシュメモリ14に記憶される管理情報40は、401〜403の各情報に加えて、チェック対象オフセットページ情報404及び優先メモリチェックブロック情報405を含む。
【0066】
CPU11は、リセット信号Rに応じて、図12に示す起動チェックルーチンに従って、第1モード処理又は第2モード処理を実行する。
【0067】
まず、CPU11は、RAM13のパワーオンリセットチェック領域30に保持されている値が「0x5A」であるか否かを判定する(ステップS1)。ステップS1においてパワーオンリセットチェック領域30に保持されている値が「0x5A」であると判定された場合、CPU11は、受信したリセット信号Rがパワーオンリセット信号PRに基づくものではないと判定して、この起動チェックルーチンを終了する。他方、ステップS1においてパワーオンリセットチェック領域30に「0x5A」が保持されていないと判定した場合、CPU11は、受信したリセット信号Rがパワーオンリセット信号PRに基づくものであると判定して、RAM13のパワーオンリセットチェック領域30に「0x5A」を書き込む(ステップS2)。
【0068】
次に、CPU11は、インタフェース部12を介してフラッシュメモリ14から図11(b)に示す管理情報40を読み出し、これをページ/ブロック情報31としてRAM13に書き込む(ステップS3)。これにより、管理情報40中のブロックアクセス回数情報401、リフレッシュ対象ブロック情報402、メモリチェック対象ブロック情報403、チェック対象オフセットページ情報404及び優先メモリチェック対象ブロック情報405が、それぞれブロックアクセス回数情報301、リフレッシュ対象ブロック情報302、メモリチェック対象ブロック情報303、メモリチェック対象オフセットページ情報304及び優先メモリチェック対象ブロック情報305としてRAM13に格納される。
【0069】
CPU11は、RAM13に格納されているブロックアクセス回数情報301に基づき、フラッシュメモリ14内の全ブロックに対するリードアクセスの回数の合計数が第5のアクセス閾値TA5を越えているか否か、すなわちTA5よりも大きいか否かを判定する(ステップS4)。
【0070】
第5のアクセス閾値TA5を越えていると判定された場合、CPU11は、第1モード処理を実行する(ステップS5)。この第1モード処理は、実施例1における起動チェック処理の図4のステップS4〜S14に相当する処理である。したがって、ここでは第1モード処理についての説明は省略する。
【0071】
一方、全ブロックに対するリードアクセスの回数の合計が第5のアクセス閾値TA5を越えていないと判定された場合、CPU11は、第2モード処理の実行に移る(ステップS6)。
【0072】
図13は、第2モード処理のルーチンを示すフローチャートである。まず、CPU11は、RAM13に格納されている優先メモリチェック対象ブロック情報305に基づき、フラッシュメモリ14内の対象ブロック(例えば、ブロック1)が優先メモリチェックの対象ブロックか否かを判定する(ステップS11)。なお、このステップS11における判定は、後述するメモリチェック対象ブロック及びオフセットページ情報更新処理を経て、ブロック1〜ブロックLの全てのブロックについて行われる。
【0073】
ステップS11の判定の結果、対象ブロックが優先メモリチェックの対象ブロックであった場合、CPU11は、当該ブロックを優先メモリチェック対象領域として、インタフェース部12のメモリチェック領域指定レジスタ22に設定する(ステップS12)。ステップS12の実行後、CPU11は、優先メモリチェック対象オフセットページ更新処理の実行に移る(ステップS13)。
【0074】
図14は、かかる優先メモリチェック対象オフセットページ更新処理のルーチンを示すフローチャートである。CPU11は、まずRAM13に記憶されている優先メモリチェック対象オフセットページ情報306にて示される番号を1だけインクリメントした番号を、新たな優先メモリチェック対象オフセットページを示す番号としてRAM13の優先メモリチェック対象オフセットページ情報306に上書き記憶させる(ステップS21)。例えば、ページ番号「N」が記憶されていた場合、これに1をインクリメントしたページ番号「N+1」を新たなページ番号として上書き記憶させる。次に、CPU11は、インクリメントされたページ番号が最終ページの番号Kを超えたか否かの判定を行う(ステップS22)。ステップS22において最終ページの番号Kを超えたと判定された場合、つまり優先メモリチェック対象ブロック内での優先メモリチェック処理(後述する)が全て終了している場合には、RAM13の優先メモリチェックの対象オフセットページ情報306を初期値にクリアする(ステップS23)。ステップS23の実行後、CPU11は、メモリチェック対象ブロック及びオフセットページ更新処理の実行に移る(ステップS24)。
【0075】
図15は、かかるメモリチェック対象ブロック及びオフセットページ更新処理のルーチンを示すフローチャートである。CPU11は、RAM13に記憶されているメモリチェック対象ブロック情報303が示す番号を1だけインクリメントした番号を、新たなメモリチェック対象ブロックを示す番号としてRAM13に上書き記憶させる(ステップS31)。次に、CPU11は、インクリメントされたブロック番号が最終ブロックの番号Lを超えたか否かの判定を行う(ステップS32)。ステップ32において最終ブロックの番号Lを超えたと判定された場合、つまり通常のメモリチェックの対象ブロックでのメモリチェック処理が一通り完了している場合には、CPU11は、RAM13に記憶されているメモリチェック対象ブロック情報303のブロック番号を0に設定する(ステップS33)。次に、CPU11は、RAM13に記憶されているメモリチェック対象オフセットページ情報304が示すページ番号を1だけインクリメントした番号を、新たなメモリチェック対象オフセットページを示す番号としてRAM13に上書き記憶させる(ステップS34)。次に、CPU11は、インクリメントされたページ番号が最終ページの番号Kを超えたか否かの判定を行う(ステップS35)。ステップ35において最終ページの番号Kを超えたと判定された場合、つまり通常のメモリチェックの対象ブロック内で全てのページについてメモリチェック処理が完了している場合には、CPU11は、RAM13に記憶されているメモリチェック対象オフセットページ情報304のページ番号を0に設定する(ステップS36)。
【0076】
ステップS36の実行後、又はステップS32において最終ブロック番号Lを超えていないと判定された場合、あるいはステップS35において最終ページ番号Kを超えていないと判定された場合、CPU11は、図15に示すメモリチェック対象ブロック及びオフセットページ更新ルーチンを抜けて図13のステップS16の実行に移る。
【0077】
一方、図13に示すステップS11において、対象ブロックが優先メモリチェックの対象ブロックではないと判定された場合、CPU11は、当該ブロックを通常のメモリチェック対象領域として、インタフェース部12のメモリチェック領域指定レジスタ22に設定する(ステップS14)。ステップS14の実行後、CPU11は、図15に示すメモリチェック対象ブロック及びオフセットページ情報更新処理の実行に移る(ステップS15)。
【0078】
図13に示す優先メモリチェック対象オフセットページ情報更新処理(ステップS13)、又はメモリチェック対象ブロック及びオフセットページ情報更新処理(ステップS15)の実行後、CPU11は、指定メモリ領域のメモリ読出しチェック処理(メモリチェック処理)を実行する(ステップS16)。
【0079】
すなわち、CPU11は、フラッシュメモリ14内のアドレスを指定して、読み出し指令信号をインタフェース部12に供給する。インタフェース部12は、かかる読み出し指令信号に応じて、指定されたアドレスに対応したページに記憶されている符号化データ片を、フラッシュメモリ14から読み出す。インタフェース部12のエラー検出訂正部20は、かかる符号化データ片に対してエラー検出処理を実行し、エラービットの数を示すエラー情報を生成する。CPU11は、かかるエラー情報を、エラーの検出された符号化データ片が保持されているフラッシュメモリ14内のブロックの番号と対応付けて、インタフェース部12のステータスレジスタ21に記憶させる。
【0080】
なお、メモリチェック処理においては、ブロック番号をインクリメントしつつ読出し及びエラーの検出を行い、例えばブロック1のページN、ブロック2のページN、ブロック3のページN・・・という順番で、全てのブロックの対応するページを対象ページとしてメモリチェックを行う。また、最終ブロックまでメモリチェックが終わるとオフセットページをインクリメントするため、電源投入の度に異なるページに対してメモリチェック処理が行われる。
【0081】
これに対し、優先メモリチェック処理においては、優先メモリチェックの対象ブロックに対して、ページ数をインクリメントしつつチェックを行う。これにより、図3(b)に示すように、例えばブロックMの全てのページについてメモリチェックが行われる。
【0082】
CPU11は、ステップS16の指定メモリ領域のメモリ読出しチェック処理中に、図16に示すようなエラー発生確認処理を実行する。
【0083】
図16において、CPU11は、ステータスレジスタ21に記憶されているエラー情報に基づいて、エラーが有るか否か、つまりエラービット数が1以上であるか否かを判定する(ステップS41)。エラーが無いと判定した場合、CPU11は、このエラー発生確認処理を終了する。
【0084】
一方、ステップS41においてエラーが有ると判定した場合、CPU11は、ステータスレジスタ21に記憶されているエラー情報に基づいて、エラービットの数が第3のエラー閾値TE3よりも大きいか否かを判定する(ステップS42)。エラービットの数が第3のエラー閾値TE3よりも大きいと判定された場合、CPU11は、当該ブロックの番号をRAM13の優先メモリチェック対象ブロック情報305に追加する(ステップS43)。次に、CPU11は、エラービットの数が第4のエラー閾値TE4(TE4>TE3)よりも大きいか否かを判定する(ステップS44)。エラービットの数が第4のエラー閾値TE4よりも大きいと判定された場合、CPU11は、当該ブロックの番号をRAM13のリフレッシュ対象ブロック情報302に追加する(ステップS45)。
【0085】
ステップS45の実行後、又はステップS44においてエラービットの数が第4のエラー閾値TE4以下であると判定された場合、CPU11は、このエラー発生確認ルーチンを終了する。
【0086】
このエラー発生確認ルーチンを含む指定メモリ領域のメモリ読出しチェック処理(ステップS16)の実行後、CPU11は、メモリ読出しチェックが全ブロックについて完了したか否かを判定する(ステップS17)。完了したと判定すると、CPU11は、リフレッシュ処理(ステップS18)の実行に移る。完了していないと判定すると、CPU11は、ステップS11に戻って、ステップS11〜S16の処理を再び実行する。
【0087】
図17は、リフレッシュ処理のルーチンを示すフローチャートである。CPU11は、RAM13のリフレッシュ対象ブロック情報302に基づき、リフレッシュ対象ブロックがあるか否かを判定する(ステップS51)。リフレッシュ対象ブロックがないと判定した場合、CPU11は、このリフレッシュ処理を終了する。
【0088】
リフレッシュ対象ブロックがあると判定した場合、CPU11は、インタフェース部12に対してリフレッシュ処理の実行命令を送出する(ステップS52)。
【0089】
すなわち、インタフェース部12は、まずリフレッシュ処理の対象ブロックから符号化データ片を読み出す。インタフェース部12のエラー検出訂正部20は、かかる符号化データ片に対して誤り訂正処理を施す。インタフェース部12は、誤り訂正処理の施された1ブロック分の符号化データ片を、当該符号化データ片が保持されていたブロックとは異なるブロックに書き込む。
【0090】
CPU11は、リフレッシュ処理を実施したブロックの番号を、RAM13のリフレッシュ対象ブロック情報302から削除する(ステップS53)。また、CPU11は、当該ブロックの番号をRAM13の優先メモリチェック対象ブロック情報305から削除する(ステップS54)。
【0091】
リフレッシュ処理の実行後、CPU11は、図12の管理情報更新処理(ステップS7)を実行する。この管理情報更新処理は、RAM13に格納されたページ/ブロック情報31をフラッシュメモリ14の管理情報40として保存する処理であり、実施例1又は実施例2と同様のブロックアクセス回数情報更新処理を含む。
【0092】
以上のように、本実施例において、情報処理装置10は、実施例1と同様の処理を行う第1モード処理の他に、優先メモリチェック処理を含む第2モード処理を実行する機能を有する。そして、フラッシュメモリ14の全ブロックに対するリードアクセス回数の合計が所定の閾値(TA5)を越えている場合には第1モード処理を実行し、越えていない場合には第2モード処理を実行する。すなわち、本実施例の情報処理装置10は、アクセス回数が多い場合にはアクセス回数に応じたリフレッシュ処理及びメモリチェック処理を実行し、アクセス回数が少ない場合にはアクセス回数を前提としないメモリチェック処理、優先メモリチェック処理及びリフレッシュ処理を実行する。したがって、メモリに対するアクセスが少ない場合にもメモリチェックを行うことができ、状況に応じた適切なリフレッシュ処理及びメモリチェック処理を実行することができる。
【0093】
以上、説明したように、本発明によれば、メモリ内の各メモリブロックに対するリードアクセスの回数に応じて、対象ブロックに対してリフレッシュ処理及びメモリチェック処理を行うか否かを判別する。そして、リードアクセスの回数が所定の閾値を越えている場合にのみ、メモリチェック処理及びリフレッシュ処理を行う。したがって、アクセス回数が少ないメモリブロックに対しては処理がなされないため、メモリチェック処理及びリフレッシュ処理の実行に要する時間を短縮することができる。
【0094】
また、ブロック単位でのアクセス回数に応じてリフレッシュ処理及びメモリチェック処理を行うため、アクセスが集中しているメモリセルのみならず、これと同じブロック内の隣接するメモリセルに対してもリフレッシュ処理及びメモリチェック処理を行うことができる。
【0095】
また、本発明によれば、パワーオンリセット信号を受けた場合のみ、メモリチェック処理、リフレッシュ処理及びこれらを行うか否かの判定を行うため、電源投入直後以外のリセット時にはメモリチェック及びリフレッシュ処理の為の待機状態が無い。したがって、フラッシュメモリに対して高速アクセスを行うことが可能となる。
【0096】
なお、上記実施例では、ブロックアクセス回数情報301及び401として、フラッシュメモリ14の各ブロック毎のリードアクセス回数の情報を管理している。しかし、これに限らず、例えばブロックを構成するページ単位や誤り訂正処理における処理データ量の単位でアクセス回数の情報を管理してもよい。
【0097】
また、上記実施例では、パワーオンリセット信号PRに基づくリセット信号Rの受信時にパワーオンリセットチェック領域30に1バイトの値「0x5A」を書き込み、この値が保持されているか否かによって、受信したリセット信号Rがパワーオンリセット信号PRに基づくものか否かの判定を行っている。しかし、リセット信号Rがパワーオンリセット信号PRに基づくものか否かをパワーオンリセットチェック領域30に所定の値が書き込まれているか否かによって判定できれば良いのであって、書き込む値は「0x5A」に限られない。また、誤認識を防ぐため、例えば1バイトではなく数バイトの値を書き込むことにより、リセット信号Rがパワーオンリセット信号PRに基づくものかどうかの判定を行っても良い。
【0098】
また、上記実施例では、フラッシュメモリ14が管理情報40を記憶している。しかし、インタフェース部12と接続された不揮発性メモリ等をフラッシュメモリとは別に設け、当該不揮発性メモリ等に管理情報40を記憶させる構成であってもよい。
【0099】
また、上記実施例では、メモリチェック処理について、フラッシュメモリ14内に記憶されたデータを正しく読み出せるか否かを検査する処理として説明したが、これに加えて、データを正しく書き込めるか否かを検査する処理を行っても良い。
【0100】
また、上記実施例3では、全ブロックに対するアクセス回数が第5のアクセス閾値TA5を越えているか否かに応じて、第1モード処理と第2モード処理のいずれかが選択される構成として説明した。しかし、これに限られず、アクセス回数が所定の閾値を越えているブロックが存在するか否かに応じて、第1モード処理又は第2モード処理を選択する構成であってもよい。また、情報処理装置10の電源投入後にユーザがいずれかのモードを選択し、その選択に応じていずれかの処理を実行する構成であってもよい。また、ユーザの選択をインタフェース部12内のレジスタに予め記憶しておき、電源投入後にこれを参照してモードを決定する構成であってもよい。
【符号の説明】
【0101】
10 情報処理装置
11 CPU
12 インタフェース部
13 RAM
14 フラッシュメモリ
15 CPUバス
16 パワーオンリセット生成部
17 オアゲート
18 内部リセット生成部
20 エラー検出訂正部
21 ステータスレジスタ
22 メモリチェック領域指定レジスタ
30 パワーオンリセットチェック領域
31 ページ/ブロック情報
40 管理情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17