JP2015125598A - メモリ制御装置、メモリ制御方法、およびプログラム - Google Patents

メモリ制御装置、メモリ制御方法、およびプログラム Download PDF

Info

Publication number
JP2015125598A
JP2015125598A JP2013269660A JP2013269660A JP2015125598A JP 2015125598 A JP2015125598 A JP 2015125598A JP 2013269660 A JP2013269660 A JP 2013269660A JP 2013269660 A JP2013269660 A JP 2013269660A JP 2015125598 A JP2015125598 A JP 2015125598A
Authority
JP
Japan
Prior art keywords
block
data
writing
information
written
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013269660A
Other languages
English (en)
Other versions
JP6274857B2 (ja
Inventor
鈴木 広志
Hiroshi Suzuki
広志 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2013269660A priority Critical patent/JP6274857B2/ja
Priority to US14/580,148 priority patent/US9384849B2/en
Publication of JP2015125598A publication Critical patent/JP2015125598A/ja
Application granted granted Critical
Publication of JP6274857B2 publication Critical patent/JP6274857B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/107Programming all cells in an array, sector or block to the same state prior to flash erasing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5646Multilevel memory with flag bits, e.g. for showing that a "first page" of a word line is programmed but not a "second page"

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

【課題】 不揮発性メモリへの書き込み回数を低減させることができるメモリ制御装置、メモリ制御方法、およびプログラムを提供する。【解決手段】 不揮発性メモリの記憶領域が分割されたブロックに対応する情報であって、前記不揮発性メモリからのデータの読み出しが行われるときに読み出し対象のブロックを特定するための情報を取得する。そして、不揮発性メモリにおける1つのブロックへの書き込み対象の所定のデータと、前記取得された当該1つのブロックに対応する情報の両方を、当該1つのブロックに書き込む。【選択図】 図4

Description

本発明は、不揮発性メモリへデータを書き込むメモリ制御装置、メモリ制御方法、およびプログラムに関する。
従来、装置内の不揮発性メモリとしてEEPROMやフラッシュメモリを備える装置があった。このような不揮発性メモリへのデータの書き込みの途中で電源が遮断された場合、電源が再投入されたときに書き込みが適切に完了しなかったデータが読み出されてしまうことがある。また上記のような不揮発性メモリには書き換えの制限回数が設けられていることがある。そのため、不揮発性メモリへのデータ書き込み、データの読み出しを制御するための情報を当該不揮発性メモリに記憶させる技術がある。
特許文献1には、不揮発性メモリにおけるメモリ領域として複数のブロックを割り当て、書き込み対象のデータをその複数のブロックのそれぞれに書き込むことが記載されている。また各ブロックにデータが書き込まれたときに、その書き込みの履歴をフラグデータとして当該不揮発性メモリ上の別のブロックに書き込むことが記載されている。そして、当該フラグデータを参照することで、データを書き込むブロックの選択、データを読み出すブロックの選択を行うことが記載されている。
特許第4037605号公報
上記の特許文献1に記載された技術では、上記のように、データを書き込むためのブロックとは別のブロックに対して、当該ブロックへの書き込みの履歴を示すフラグデータを書き込む。
そのため、不揮発性メモリに所定のデータを書き込む際には、当該所定のデータを書き込むためのブロックに加え、別途、上記のフラグデータを別のブロックに書き込まなければならない。よって、上記所定のデータに加えて上記フラグデータの書き込みのために、少なくとも2つのブロックに対してデータ書き込みを行わなくてはならない。
上記の課題を鑑みて本発明は、不揮発性メモリへの書き込み回数を低減させることができるメモリ制御装置、メモリ制御方法、およびプログラムを提供することを目的とする。
本発明のメモリ制御装置は、不揮発性メモリへデータを書き込むメモリ制御装置であって、前記不揮発性メモリへの書き込み対象の所定のデータを、当該不揮発性メモリの記憶領域が分割されたブロックに書き込む書き込み手段と、前記書き込み手段によりデータが書き込まれるブロックに対応する情報であって、前記不揮発性メモリからのデータの読み出しが行われるときに読み出し対象のブロックを特定するための情報を取得する取得手段と、を有し、前記書き込み手段は、前記不揮発性メモリにおける1つのブロックへの書き込み対象の所定のデータと、前記取得手段により取得された当該1つのブロックに対応する情報の両方を、当該1つのブロックに書き込むことを特徴とする。
本発明によれば、1つのブロックへの書き込み対象の所定のデータと、データの読み出しが行われるときに読み出し対象のブロックを特定するための情報を、当該1つのブロックに書き込む。そのため、不揮発性メモリへの書き込み回数を低減させることができる。
本実施形態におけるメモリ制御装置の一例である、インクジェットプリンタ3を示す図である。 インクジェットプリンタ3の内部に組み込まれ、インクジェットプリンタ3を制御するための電子制御回路基板1を説明するための図である。 RAM102とフラッシュメモリ103の内部のデータマッピングの概略図である。 制御情報のデータセットを示す図である。 データセットをフラッシュメモリ103へ保存する処理を示すフローチャートである。 フラッシュメモリ103からのデータの読み出し処理を示すフローチャートである。 データ読み出し対象のブロックを決定する処理を説明するための図である。 フラッシュメモリ103へのデータの書き込みが適切に完了できなかった場合のブロックの状態を示す図である。 書き込み回数を加算する処理の一例を示すフローチャートである。 図9に示した処理によりカウンタ値が設定される場合の、読取対象のブロック決定処理の一例を示すフローチャートである。 図9に示した処理によりカウンタ値が設定された場合の、各ブロックに対応するカウンタ値の一例を示す図である。
以下、本実施形態について説明する。なお、以下の実施形態はあくまで実施の一例を示したものであり、本発明は以下の実施形態に限定されるものではない。
(1)システムの構成
まず本実施形態において不揮発性メモリの制御を行うシステムの構成について説明する。図1は、本実施形態におけるメモリ制御装置の一例である、インクジェットプリンタ3を示す図である。なお、メモリ制御装置はインクジェットプリンタに限らず、例えば印刷のための記録剤としてトナーを用いる電子写真方式の印刷装置でもよいし、プリンタに加え、原稿を読み取るためのスキャナを備えた複合機であってもよい。またプリンタに限らず、PC(パーソナルコンピュータ)や、スマートフォンやタブレット、携帯電話、デジタルカメラなどの各種の装置であってもよい。
操作UI部301は、ユーザに対する各種の表示を行い、またユーザが操作を行って各種の指示を入力するためのユーザインタフェースである。上記の表示として、例えば印刷対象の画像やインクジェットプリンタ3の機能や状態が表示される。また、ユーザが操作するための操作デバイスとして、タッチパネルが表示画面上に設けられている。ただし、ボタン等の操作デバイスが設けられる場合であってもよい。
用紙積載部304は、画像が印刷される用紙を積載する。また排紙トレイ303は、印刷後の用紙を保持する。
さらにインクジェットプリンタ3の内部には、用紙積載部304から用紙をピックアップし、その用紙を搬送するための搬送機構、また記録ヘッドを装着するための装着部を含むプリントエンジン部302が設けられている。そして、例えば操作UI部301や、外部装置から印刷が指示されると、上記プリントエンジン部302の搬送機構により搬送された用紙に対して、プリントエンジン部302に装着された記録ヘッドからインクが吐出される。これにより当該用紙に画像が印刷され、その用紙が排紙トレイ303に排紙される。
またプリントエンジン部302は記録ヘッドをキャッピングするためのキャッピング機構を含む。そして、記録ヘッドにおけるインク吐出口でインクが固まり、吐出口が詰まることを防ぐために、印刷が実行されていない待機状態の場合、プリントエンジン部302は、上記キャッピング機構により記録ヘッドをキャップする。そして、印刷時にはキャッピングを解除することで印刷を行う。
またプリントエンジン部302は、インクジェットプリンタ3に電源が供給されたときに、上記キャッピング機構のキャップ開閉状態に応じて、印刷する前に印刷品位を維持するための回復動作を行う。すなわち、電源供給時にキャップが開いていた場合は、記録ヘッドの表面が乾燥して印刷に適さない状態である可能性があるため、回復動作として、記録ヘッドからインクを吐出させる。
図2は、インクジェットプリンタ3の内部に組み込まれ、インクジェットプリンタ3を制御するための電子制御回路基板1を説明するための図である。
CPU101は、電子制御回路基板1、またインクジェットプリンタ3の全体を制御するための制御部である。フラッシュメモリ103は、不揮発性のメモリであり、インクジェットプリンタの各部を制御する制御プログラムや、各種の設定に関する制御情報を記憶する。RAM102は、制御プログラムや各種制御情報を一時的に保持する揮発性のメモリである。
CPU101は、フラッシュメモリ103に記憶されている上記の制御プログラムや各種の制御情報をRAM102に読み出し、当該制御情報に従って制御プログラムを実行することで、インクジェットプリンタ3の全体を制御することができる。
入出力ポート104は、CPU101と、後述の操作UI部制御回路105、プリントエンジン部制御回路106とを接続するためのポートである。
操作UI部制御回路105は、入出力ポート104を介したCPU101の制御に従って、上記の操作UI部301に画像や各種の情報を表示させる。また操作UI部制御回路105は、操作UI部301に対するユーザの操作に応じて各種のユーザ指示を入力する。CPU101は、入出力ポートを介してユーザ指示を入力することで、当該ユーザ指示に応じた制御を行う。
プリントエンジン部制御回路106は、CPU101による制御に従って、印刷対象の画像をプリントエンジン部302に出力し、プリントエンジン部302に当該画像を印刷媒体へ印刷させる。
電源回路107は、AC電源等の外部電源2に電源ケーブルを介して接続することができる。電源回路107が外部電源2と接続されると外部電源2から電源回路107に電力が供給され、その電力が電子制御回路基板1の全体に供給される。そして、上記のように電子制御回路基板1に電力が供給可能な状態においてユーザが不図示の電源ボタンを押下することで、インクジェットプリンタ3を起動することができる。
なお本実施形態では、電源回路107から電力が電子制御回路基板1に電力が供給されたときに、フラッシュメモリ103に記憶されている制御プログラムや各種の制御情報がRAM102に記憶される。またインクジェットプリンタ3が起動している状態においてユーザが上記不図示の電源ボタンを押下することで、インクジェットプリンタの電源を切ることができる。その際に、RAM102に記憶されている各種の制御情報がフラッシュメモリ103に記憶される。そのため、ユーザが上記電源ボタンを押下してインクジェットプリンタ3の電源を切った後に電源ケーブルを外部電源2から外した場合、起動中にRAM102に書き込まれたデータを不揮発性メモリであるフラッシュメモリ103に書き込むことができる。
またインクジェットプリンタ3は、不図示の読取エンジンによる原稿の読み取り、またファクシミリ通信や、LAN、インターネット等のネットワークを介したデータの送受信が可能であってもよい。
(2)フラッシュメモリ103に格納されるデータについて
次に、RAM102からフラッシュメモリ103に書き込まれる、またフラッシュメモリ103からRAM102に読み出されるデータについて説明する。図3は、RAM102とフラッシュメモリ103の内部のデータマッピングの概略図である。
フラッシュメモリ103は、制御プログラムを格納するためのプログラム格納領域401と、制御情報を格納するための制御情報格納領域402を含む。同様にRAM102は、フラッシュメモリ103から読み出された制御プログラムが展開されるための、またプログラム実行時のワークメモリとして利用されるプログラム実行領域403を含む。またRAM102は、フラッシュメモリ103から制御情報や履歴情報を展開するための制御情報展開領域404を含む。
フラッシュメモリ103における制御情報格納領域402には、CPU101が制御プログラムに従って各種の処理を実行するための制御変数や、インクジェットプリンタ3を制御したときの各種履歴を示す履歴情報が記憶される。
制御変数としては、例えばユーザが設定可能な印刷品位や印刷における濃度の情報、またインクジェットプリンタ3において印刷が行われた回数やインク消費量である。また、上述したキャッピングが実行されているか示す情報や、両面印刷を行うための用紙搬送路に用紙が有るか否かを示す情報、記録ヘッドの交換中であるか否かを示す情報が、上記制御情報として記憶されてもよい。
これらの制御変数や履歴情報は、1つのデータセットとして纏められて記憶される。また上記のような各種の制御変数や履歴情報等が、図3において「データセット1、データセット2、データセット3・・」と区別されているように、その情報の種類に対応付けられて制御情報格納領域402に記憶されている。
例えばデータセット1は、印刷用の情報であり、設定可能な印刷部数、印刷品位、印刷濃度等の制御変数や、印刷回数やインク消費量などの履歴情報を含む。またインクジェットプリンタ3がファクシミリ通信を実行可能な装置の場合、データセット2には、例えばファクシミリ通信のための情報として、インクジェットプリンタ3のFAX番号、電話帳等の制御変数、ユーザが過去に設定した各種の履歴情報が含まれる。さらに、インクジェットプリンタ3がネットワーク通信を実行可能な装置の場合、データセット3には、インクジェットプリンタ3のIPアドレス、LANに接続するための設定情報等の制御変数、またネットワーク通信を行ったアクセス先等の履歴情報が含まれる。
各データセットのデータ構造については図4を用いて後述する。
またフラッシュメモリ103の制御情報用の記憶領域である制御情報格納領域402は、複数のブロックに分割されており、各データセットを格納するためのメモリ領域としてブロック単位でメモリ領域が割り当てられている。本実施形態では、1ブロックが4Kbyteの領域であるとする。そして、データセットのそれぞれが、ブロックのそれぞれに個別に格納される。このようにブロックのデータ容量に制限があるため、データセット1、2、3・・のように情報の種類に応じて制御変数、履歴情報が分類され、各データセットが各ブロックに格納される。
また制御情報格納領域402は、各データセット(1、2、3・・)に対して複数のブロックが割り当てられている。例えば図3のデータセット1−1が既に書き込まれている場合にデータセット1−2を新たに書き込む場合、データセット1−2に上書きするのではなく、別のブロックに書き込むことができる。これにより、例えばデータセット1−2の書き込みの途中で電源が遮断された場合など、データセット1−2の書き込みに失敗した場合でも、データセット1−1を参照することで、電源再投入時に、過去に書き込んだ情報を読み出すことができる。
上記の書き込みについて具体的に説明する。例えばRAM102に展開されているデータセット1がフラッシュメモリ103に書き込まれる場合、各ブロックを参照することで、各ブロックにデータが既に書き込まれているか、またデータの書き込みが古いブロックが判定される。そして、データが書き込まれていないブロックがあればそのブロックにデータが書き込まれ、またデータが書き込まれていないブロックがなければ、データ書き込みの古いブロックに書き込みが行われる。上記判定は、後述するカウンタに基づいて行われる。
図4は、制御情報のデータセットを示す図である。
1つのデータセットは、各種制御変数や履歴情報などの制御情報および、チェックサムデータを格納する制御情報領域501と、データの書き込み回数を記憶したカウンタ値を格納する、2つのカウンタ領域を含む。カウンタ領域(上部)502は、制御情報領域501よりも上部にマッピングされ、制御情報領域501よりも先に書き込みが行われる。もう1つのカウンタ領域は、制御情報領域501よりも下部にマッピングされ、制御情報領域501への書き込みが完了した後に書き込みが行われる。
上記2つのカウンタ領域には、当該データセットが書き込まれるブロックへの書き込み回数を示すカウント情報が記憶される。本実施形態においてはフラッシュメモリの書き換え上限回数が10万回であるため、カウンタ領域のサイズは、10万以上の値を記録可能な4byte以上とする。
また、図4に示すデータセットが印刷用の制御情報に対応するものであった場合、制御情報領域501には、例えばプリントエンジン部302の各アクチュエータのキャリブレーション値や、設定可能な印刷品位や濃度の情報などが制御変数として格納される。またインクジェットプリンタ3における印刷回数やインク消費量などが履歴情報として書き込まれる。
本実施形態では、電源が切られる場合などRAM102に記憶されているデータセットをフラッシュメモリ103に書き込む場合、そのデータセットが書き込まれるブロックの書き込み回数がカウント情報として2つのカウンタ領域に書き込まれる。
また、例えば起動時などにフラッシュメモリ103に記憶されているデータセットをRAM102に展開する場合、2つのカウンタ領域に書き込まれているカウント情報を参照することで、RAM102に展開されるデータセットを選択する。
本実施形態では、図4に示したように、カウント情報と制御情報の両方が同じブロックに格納される。よって、例えば制御情報とは別のブロックにカウント情報を書き込む場合に比べ、カウント情報の書き込み、読み出しを高速に行うことができる。
また上記のように、カウント情報のブロックと制御情報のブロックが異なる場合、その2つのブロックを対応付けなければならない。本実施形態では、カウント情報が制御情報と同じブロック内に書き込まれるため、カウント情報を容易に管理することができる。
さらに、カウント情報のブロックと制御情報のブロックが異なる場合、カウント情報のために4kbyteのブロックを別途設けなければならず、またカウント情報の書き込みのために、ブロックへの書き込み回数が多くなってしまう。本実施形態では、カウント情報が制御情報と同じブロック内に書き込まれるため、制御情報、カウント情報の書き込みのためのメモリ容量、またブロックへの書き込み回数を低減することができる。
(3)フラッシュメモリ103への書き込みについて
以下、本実施形態におけるフラッシュメモリ103に対するRAM102からの書き込みについて詳細に説明する。そのために、まずRAM102に展開されるデータについて説明する。
図3のプログラム実行領域403は、フラッシュメモリ103のプログラム格納領域401に格納されている制御プログラムが、例えばインクジェットプリンタ3の起動時に展開される領域である。CPU101は、このように展開された制御プログラムを実行することで各種の制御を行う。
図3の制御情報展開領域404は、1つ以上のブロック単位のセクションに分割されており、1つのブロック単位サイズのデータセットにつき1つのセクションが割り当てられている。ここでのブロック単位とは、前述のフラッシュメモリ103のブロック単位(4Kbyte)とする。またRAM102のデータ容量はフラッシュメモリ103のデータ容量よりも小さいため、フラッシュメモリ103に書き込まれているデータセットの一部がRAM102に読み出される。
インクジェットプリンタ3に電力が供給され、起動したときに、制御プログラムとともに、制御情報がフラッシュメモリ103からRAM102に展開される。そして、インクジェットプリンタ3が稼働している状態では、様々なタイミングで制御変数や履歴情報に変更が発生し、その都度CPU101は、RAM102の制御情報展開領域404の該当データを更新する。また、パワーオフ時や、ユーザが操作UI部301から印刷設定を変更したときや、印刷完了時などの特定のタイミングにおいて、CPU101は、RAM102の制御情報データを、データセットごとにフラッシュメモリ103へ保存する。
図5は、データセットをフラッシュメモリ103へ保存する処理を示すフローチャートである。なお、このフローチャートの処理は、CPU101が制御プログラムを実行することにより実現される。
S101でCPU101は、RAM102に展開されているデータセットのチェックサムを計算して値を更新し、RAM102に書き込む。次にS102でCPU101は、データセットのカウンタ値をインクリメントし、RAM102上のデータセットの2つのカウンタ領域に書き込む。このとき、カウンタ領域(上部)502とカウンタ領域(下部)503には同じ値を書き込む。なお、このカウンタ値は、当該データセットの書き込みに対応する書き込み回数を示す情報として、また後述するデータの読み出し処理において読み出し対象のブロックを決定するための情報としてS102において取得される。
次にS103でCPU101は、フラッシュメモリ103の制御情報格納領域402における、該当データセットに割り当てられたブロックのうち1つを、書き込み先ブロックとして決定する。その決定方法として、例えば当該書き込み対象のデータセットの種類(1、2、3・・)に割り当てられたブロックが複数ある場合、当該複数ブロックのうち、最も古いデータセットが書き込まれたブロックを書き込み先とする。具体的には、フラッシュメモリ103に書き込みを行う度に、書き込み先をローテーションして順番に書き込まれるようにする。他にも、フラッシュメモリ103の各ブロックに対応するカウント情報を参照し、最もカウント数が少ないブロックを書き込み先としてもよい。
次に、S104においてCPU101は、フラッシュメモリ103の書き込み先ブロックのデータをすべて消去する。具体的には図8を用いて後述するが、書き込み先のブロックに対応する全てビットに対して「1」を順次書き込む。
次に、S105においてCPU101は、データセットのデータを、書き込み先ブロックへ書き込む。
以上のように、フラッシュメモリ103へデータを保存するシーケンスでは、1つのデータセットにつき、フラッシュメモリ103上の1つのブロックに対する消去処理及び書き込み処理を行う。そして、上記カウント情報を当該1つのブロック内に書き込むため、最新データの保存先ブロックを識別するための識別情報(例えばカウント情報)を、フラッシュメモリ103上の他のブロックに書き込む必要がない。そのため、そのような識別情報と制御情報との対応付けを容易にし、また制御情報、識別情報の書き込み、読み出しを高速に行うことができる。
例えば、インクジェットプリンタ3の印刷中などにおいて、フラッシュメモリ103への書き込み完了と同期して次の動作を行う場合がある。この場合、本実施形態によれば1ブロックへの書き込みでよいため、制御情報とカウント情報のそれぞれを2ブロック以上に続けて書き込む場合に比べて書き込み所要時間が短い。そのため、例えばインクジェットプリンタ3の突然の電源遮断による書き損じを低減させることができる。
このようなフラッシュメモリ103へのデータの書き損じについて、図8を用いて説明する。図8は、フラッシュメモリ103へのデータの書き込みが適切に完了できなかった場合のブロックの状態を示す図である。図8の(a)〜(e)は、それぞれ、制御情報格納領域402における1つのブロックにおけるデータ保存状態のパターンを表す。なお、図8中の「xxxxxxxx」は書き込み前のカウンタ値、「aaaa・・・aaaa」は書き込み前の制御情報データ、「FFFF・・・FFFF」はデータ消去状態を表す。また、「yyyyyyyy」は、書き込み後のカウンタ値、「bbbb・・・bbbb」は書き込み後の制御情報データを表す。ブロックへのデータの書き込みが行われる場合、当該ブロックのデータ保存状態が図8(a)から図8(e)の状態に順次遷移する。
図8(a)は、データの書き込み開始前の状態である。この状態において電源ケーブルが外部電源2から外された場合、あるいは停電等が起きた場合、RAM102に記憶されている更新後のデータセットや、インクリメントされたカウント情報はフラッシュメモリ103に反映されない。即ち、図5に示したフローチャートにおけるS104の前までに電源遮断された場合、フラッシュメモリ103の当該ブロックは変更されない。
図8(b)は、S104におけるデータ消去の途中のデータ保存状態を示す。具体的には、ブロック内の各ビットを「1」とする。なお、図8(b)の例では、1byte単位で表現されており、各byteが「F」に設定される。S104の途中で電源遮断された場合、当該ブロックは途中まで消去が行われ、途中からは書き換え前のデータが残った、図8(b)に示す状態となる。
図8(c)は、S104におけるデータ消去処理の完了時点でのデータ保存状態を示す。この時点で電源遮断された場合、当該ブロックは、すべて消去された状態(ブロック内の全てのビットが「1」になった状態)になる。
図8(d)は、S105における、データセットの書き込みと中におけるデータ保存状態を示す。S105の途中で電源遮断がされた場合、当該ブロックは、書き込み対象のデータセットの一部のデータが書き込まれ、ブロック内の残りは消去状態になる。
図8(e)は、S105におけるデータセットの書き込みが完了した後のデータ保存状態を示す。このときに電源遮断が起きたとしても、当該ブロックには最新データが適切に書き込まれている。
本実施形態では、図8(e)に示したように1ブロックへの書き込みが完了した時点で、データセットとカウント情報が書き込まれる。一方、例えばカウント情報を別のブロックに書き込む場合、そのブロックを決定し、さらに図8(a)〜(e)に示したような手順を更に行わなくてはならない。即ち、カウント情報の書き込み前に電源が遮断されてしまうリスクが大きくなってしまう。
本実施形態では、1ブロックへのデータセットの書き込みにより制御情報とカウント情報の書き込みが完了するため、上記のリスクを低減することができる。
(4)フラッシュメモリ103からのデータ読み出しについて
次に、制御情報データを、フラッシュメモリ103からRAM102へ展開する方法について説明する。インクジェットプリンタ3は、電力遮断状態から電力が供給されると、フラッシュメモリ103に保存されている制御変数や履歴情報を、RAM102上に展開する。上記のように、RAM102にはフラッシュメモリ103に格納されている複数のデータセットの一部が読み出される。そのためCPU101は、電力遮断状態から電力が供給された直後に、フラッシュメモリ103の制御情報格納領域402にある各データセットの割り当てブロックの中で、どのブロックに最新のデータセットの情報が保存されているか決定する。そしてCPU01は、そのように決定したブロックからデータセットを読み出す。
図6は、フラッシュメモリ103からのデータの読み出し処理を示すフローチャートである。なお、このフローチャートは、CPU101が制御プログラムを実行することにより実現される。
S201においてCPU101は、フラッシュメモリ103における各ブロック内のカウント情報に基づいて、最新のデータセットを含むブロックを読み出し対象のブロックとして決定する。S201の処理の詳細は図7を用いて説明する。
図7は、データ読み出し対象のブロックを決定する処理を説明するための図である。図7(a)に示すフローチャートの処理では、フラッシュメモリ103において各ブロックに格納されたデータセットに含まれるカウント情報を順番に読み出し、そのカウント情報をもとに制御情報の読み出し対象のブロックを決定する。図7(b)は、各ブロックに対応するカウンタ値の一例を示す図である。図7(b)では、フラッシュメモリ103において、同種のデータセットに対して、3つのブロックが割り当てブロックとして割り当てられているとする。即ち、例えば印刷用のデータセットの場合、3つのブロックのそれぞれにローテーションさせながら、最大3つのデータセットが書き込まれているものとする。
図7(a)のフローチャートにおけるS301でCPU101は、当該読み出し候補のブロックのカウンタ値を示す変数「カウンタ値」の初期化を行う。次にS302において、カウント情報が読み出されるブロック番号(1、2、3)を示す変数iを初期化する。
次にS303においてCPU101は、フラッシュメモリ103上のi番目の割り当てブロックのカウンタ領域(上部)502の値と、カウンタ領域(下部)503の値を、上部カウンタ値i、下部カウンタ値iとしてRAM102上へ読み出す。
次にS304においてCPU101は、上部カウンタiと下部カウンタiの値が一致しているかを確認する。両者が一致していない場合は、S309に進み、CPU101は、i番目の割り当てブロックに無効フラグを立ててS310へ進む。
なお無効フラグとは、フラッシュメモリ103の注目しているブロックのデータが、有効値か無効値かを判断するためのフラグである。無効フラグは、データセットがフラッシュメモリ103に割り当てられたブロック数の分だけRAM102上に保持される。この無効フラグは、後述する図6のS202において、フラッシュメモリ103からの読み出しの要否を判定するために用いられる。
上記のS304において上部カウンタiと下部カウンタiの値が一致していない場合、図8(b)や図8(d)に示したように、当該ブロックに対する消去処理あるいはデータ書き込み処理の途中で書き込みが終了してしまった場合が考えられる。そのため、S304で「No」と判定された場合はS309に進み、当該ブロックが読み出し対象とならないように処理が行われる。
S304で上部カウンタiと下部カウンタiの値が一致していたと判定された場合は、S305に進み、CPU101は、上部カウンタ値iの値をカウンタ値iに設定する。
S306では、カウンタ値iが有効値であるかを確認する。ここで、有効値とは、カウンタ領域(上部)502とカウンタ領域(下部)503のサイズが4byteである場合は、0x0から0xFFFFFFFEまでの値である。カウンタ値iがそれ以外の値であると、無効値と判断する。
S306で当該カウンタ値iが無効と判定された場合、当該カウンタ値iに書き損じが生じており、当該ブロックの制御情報も書き損じが生じている可能性があるため、当該ブロックに無効フラグを立てるためにS309へ進む。
S306で当該カウンタ値iが有効と判定するとS307へ進み、当該読み出し候補のブロックのカウンタ値と、カウンタ値iを比較する。
カウンタ値iが、当該読み出し候補のブロックのカウンタ値以上だった場合、CPU101は、ブロックiが当該読み出し候補のブロックよりも新しい制御情報を記憶していると判定して、S308へ処理を進める。
S308においてCPU101は、割り当てブロックiを読み出し候補のブロックに設定し、カウンタ値iを、当該読み出し候補のブロックのカウンタ値に設定し、S310へ処理を進める。
S310でCPU101は、iの値をインクリメントし、S311にて、iと割り当てブロック数(本例では3)を比較する。割り当てブロック数の値がi以上ならば、まだ読み出し候補のブロックがあるものと判定して、S303に処理を戻し、処理を続行する。一方、S311において、iの値の方が割り当てブロック数より大きいと判定された場合は、処理を終了する。
以上の図7で説明した処理(図6のS201の処理)により、カウンタ値が有効かつ最も大きな値である割り当てブロックが、読み出しブロックとして決定される。なお、上部と下部のカウンタ値として同一のカウンタ値を入力する場合に限らず、例えば、あるカウンタ値に対して上部に対応する情報と下部に対応する情報をそれぞれ付加する場合でもよい。この場合でも、上記のカウンタ値に付加された情報が除かれた情報が上部と下部で一致すれば、両者が整合することを確認することができる。
図7に示す処理が実行されると、CPU101は、図6のS202に処理を進める。
S202においてCPU101は、フラッシュメモリ103における全ての割り当てブロックに対して無効フラグが立っているか判定する。すべての割り当てブロックに無効フラグが立った場合は、CPU101はS210へ処理を進める。そしてS210では、RAM102の制御情報展開領域404における当該のデータセットの値をデフォルト値で初期化して処理を終了し、フラッシュメモリ103から制御情報を読み出さないようにする。この時のデフォルト値は、プログラム内に保持している定数である。また、S210では、データセットの値を初期化するかわりに、装置自体をエラー状態にして処理を終了してもよい。
S202において、無効フラグが立っていない割り当てブロックが存在した場合、即ち読み出しブロックが決定している場合は、CPU101はS203に処理を進める。そしてS203においてCPU101は、RAM102の制御情報展開領域404におけるデータセット記憶用のセクションへ、読み出し対象のブロック内のデータセットを読み出す。
S204でCPU101は、S203で読み出したデータセットのチェックサムを計算し、データセットの制御情報領域501に保存されたチェックサムの値と一致しているか確認する。
上記のS205においてチェックサムが正しいと判定された場合、処理を終了する。
一方、S205において、チェックサムが正しくなかった場合、CPU101は現在の読み出しブロックのデータが無効であると判断して、S206へ処理を進める。S206においてCPU101は、現在の読み出しブロックに無効フラグを立てる。
そしてCPU101はS207において、すべての割り当てブロックに無効フラグが立っているか判定し、立っていた場合は、S208に処理を進める。S208でCPU101は、RAM102の制御情報展開領域404における当該のデータセットの値をデフォルト値で初期化して、処理を終了する。なおS208における処理は、S210と同様の処理を行う。
S207で無効フラグが立っていない割り当てブロックが存在すると判定された場合は、CPU101はS209へ処理を進める。そしてS209において、無効フラグが立っていないブロックのうち、最大のカウンタ値を持つブロックを読み出しブロックとして再設定し、S203へ戻って処理を続行する。
図6に示した処理により、有効かつ最も新しいデータセットがRAM102へ展開される。または、フラッシュメモリ103上のデータすべて無効である場合は、RAM102上のデータセットはデフォルト値で初期化された状態、または、装置自体がエラー状態となる。
図6に示した処理により読み出されるデータについて、図8を用いて説明する。
例えば最新のデータセットがブロックに書き込むときに、図8(b)に示すように、データの消去処理の途中で電源が遮断され、データの書き込みが完了しなかった場合がある。このとき、カウンタ領域(上部)502の値とカウンタ領域(下部)503の値が一致しないため、図7のS304で無効の判断が下され、その他の有効かつ最もカウンタ値の大きな割り当てブロックのデータがRAM102へ読みだされる。
図8(c)に示すように、ブロックに対するデータ消去処理の完了時で電源が遮断された場合、カウンタ領域(上部)502とカウンタ領域(下部)503の値は一致するが、その値は0xFFFFFFFFという無効値である。そのため、図7のS306において、無効の判断が下され、その他の有効かつ最もカウンタ値が大きな割り当てブロックのデータがRAM102に読みだされる。
図8(d)に示す状態でフラッシュメモリ103にデータが保存されている場合、図8(b)と同様に、カウンタ領域(上部)502の値とカウンタ領域(下部)503の値が一致しない。そのため、図7のS304で無効の判断が下され、その他の有効かつ最もカウンタ値の大きな割り当てブロックのデータがRAM102へ読みだされる。
図8(e)の状態は、最新のデータセットの書き込みが完了しているため、図6および図7のシーケンスにより、最新のデータとしてRAM102に読みだされる。
なお、カウンタ値が有効であると判断された場合でも、図6のS204およびS205にて制御情報領域501のチェックサムの判定を行っている。そのため、例えば、フラッシュメモリの個別のセルに故障が生じたり、書き込み中に電気的ノイズが発生して正しくデータが保存できなかった場合は、無効として判断することができる。
以上の実施形態においては、制御変数や履歴データとともに、カウンタ値を同一ブロック内に書き込む。そして、電源遮断状態から電源供給状態に遷移したときに、ブロックへの書き込み回数を示すカウンタ値を利用して、フラッシュメモリ103上における最新のデータが保存されたブロックを決定することができる。
これにより、例えばフラッシュメモリ103上の最新の保存データを書き込んだブロックを示す識別情報を、制御情報とは別のブロックに書き込む必要がない。そのため、書き込み処理時間を短縮することができる。
またインクジェットプリンタ3では、重要な制御情報についてはフラッシュメモリへの書き込み完了と同期して動作する仕組みをとっている。例えば、プリントエンジン部302の印刷ヘッドのキャップ開閉状態情報は、印刷品位を維持するための重要な情報である。印刷開始時は、RAM102およびフラッシュメモリ103上のキャップ開閉状態情報に、開状態と書き込み、書き込み完了を待ってから、印刷動作を開始する。よって、本実施形態の処理によりフラッシュメモリ103への書き込みを高速化することで、印刷が開始されるまでにかかる時間を短縮することができる。
また本実施形態の処理により書き込みを高速化することで、上記カウント情報のような、読み出し対象のブロックを特定するための特定情報を、より確実に書き込むことができる。例えば、そのような特定情報をフラッシュメモリ103における実データとは別のブロックに書き込む方法の場合、実データの書き込み完了後、特定情報の書き込み途中に電源遮断が起こる可能性が高まる。すると、フラッシュメモリからのデータ読み出しにおいて、特定情報が適切に書き込まれなかったと判定され、実データの書き込みは適切に行われていたとしても、そのデータを読み出せなくなる場合がある。
一方、本実施形態では、実データとその実データに対応する上記特定情報を同一ブロックに書き込むため、実データの書き込み後、特定情報の書き込み途中に電源が遮断される可能性を低減し、当該特定情報をより確実に書き込むことができる。これにより、フラッシュメモリからのデータ読み出し時に、最新のデータをより確実に読み出すことができる。
さらに本実施形態の別の効果として、フラッシュメモリ103のサイズ節約が挙げられる。例えば実データと上記特定情報を別々のブロックの書き込む場合、その書き込みにおいて少なくとも2つのブロックが必要になる。一方本実施形態では、制御情報等の実データとカウンタ値のような上記特定情報の両方が1つのブロックに纏めて書き込まれるため、当該書き込みに必要なメモリ容量を削減することができる。
また、本実施形態では、そのように書き込みに使用されるブロックが、実データ、特定情報を別のブロックに書き込む場合よりも少なくなるため、書き込み回数が、フラッシュメモリの書き込み上限回数を越えてしまう可能性を低減することができる。
なお、上記のカウント情報はフラッシュメモリ103の各ブロックの更新回数を示している。そのため、そのカウント情報を、フラッシュメモリ103の書き込みの上限回数を超えているか判定する際に用いることができる。例えば、あるブロックのカウント情報が示す書き込み回数が所定の回数を超えたら、割り当てブロックを変更する制御などに用いることもできる。その他、例えば上記のカウント値を参照することで、フラッシュメモリ103がどの程度更新されていたのかを確認することもできる。例えばCPU101が、定期的、または所定のタイミングでフラッシュメモリ103の書き込み回数を取得し、その書き込み回数が所定の回数を越えた場合、フラッシュメモリ103の交換を促す表示を操作UI部301に表示させることができる。
また、上記のように、本実施形態におけるカウンタ値をフラッシュメモリ103の更新回数の情報として利用することができる。そのため、このカウント値を、フラッシュメモリ103の耐久状態に応じた書き込み制御や、インクジェットプリンタ3の利用状況に関するデータとして用いることができる。以下、詳細に説明する。
(5)カウンタ値を利用したフラッシュメモリへのデータ書き込み、読み出しについて
上記のようにフラッシュメモリには、書き換え耐久回数が設定されている場合がある。(本実施形態におけるフラッシュメモリ103は10万回であるとする。)しかし、フラッシュメモリ103を構成する素子の個体差によって書き換え耐久回数を超えても正常に書き込み、読み出し動作が可能な場合もある。
そこで、フラッシュメモリ103が書き換え耐久回数の保証回数を大きく超えて、書き込み回数カウンタ領域が保持できる最大値0xFFFFFFFFを超えた場合にも、データの書き込みを行うための処理について説明する。
CPU101が、RAM102の制御情報展開領域404上のデータセットをフラッシュメモリ103へ書き込む際には、図5に示した処理を実行する。そして、図5のS102のRAM上のデータセットのカウンタ値を加算する処理においては、図9のフローチャートに示す処理を実行する。
図9は、書き込み回数を加算する処理の一例を示すフローチャートである。この図9のフローチャートに示す処理も、CPU101により実現される。
S401においてCPU101は、現在のカウンタ値が0xFFFFFFFEであれば、S403において新しいカウンタ値を0x0とする。一方、現在のカウンタ値が0xFFFFFFFEでなければ、CPU101はS402に、現在のカウンタ値をインクリメントした値を新しいカウンタ値として設定する。そしてS404において、新しいカウンタ値をRAM102上のデータセットのカウンタ領域(上部)502とカウンタ領域(下部)503に設定する。なお、上述のように本実施形態においてカウンタ領域は4byteである。すなわち、S401〜S402の処理により、カウンタの値が4byteサイズの上限値0xFFFFFFFFに達するまでインクリメントされた場合は、初期値の0に戻るようになる。
以上の図9に示した処理によれば、例えばカウンタ値が0xFFFFFFFEのブロックと、最新のデータが書き込まれる、カウンタ値0x00000000のブロックが混在することになる。
図11は、図9に示した処理によりカウンタ値が設定された場合の、各ブロックに対応するカウンタ値の一例を示す図である。図11では、フラッシュメモリ103において、同種のデータセットに対して、3つのブロックが割り当てブロックとして割り当てられているとする。即ち、例えば印刷用のデータセットの場合、3つのブロックのそれぞれにローテーションさせながら、最大3つのデータセットが書き込まれているものとする。
図11(a)は、図9のS403において新しいカウンタ値として0(=0×00000000)がブロック1に書き込まれた場合の、各ブロックに対応するカウンタ値を示す。また図9(b)は、図9(a)の状態において、S402においてカウンタ値1(1×00000000)が設定され、そのカウンタ値がブロック2に書き込まれた場合である。このように、カウンタ値の上限値である0×FFFFFFFEと、カウンタ値の1や2が混在するが、このとき最新のデータを記憶している読み出し対象のブロックとして、カウンタ値が1や2のブロックが決定されなければならない。そのため、図9に示した処理によりカウンタ値が設定される場合、図6のS201では、図7のフローチャートの処理ではなく、図10を用いて説明する処理により、読取対象のブロックを決定する。
図10は、図9に示した処理によりカウンタ値が設定される場合の、読取対象のブロック決定処理を示す図である。図10に示すフローチャートは、CPU101により実行される。また、図7で説明する処理と同様の処理については、詳細な説明を省略する。なお図10の例では、割り当てブロックの数は、図11に示すように「3」とする。
S501では、読取対象のブロックに対応するカウンタ値の変数「カウンタ値」を「不定」に設定する。この不定値として、例えば0xFFFFFFFFを設定する。
S502〜S506までの処理はそれぞれ図7のS302〜S306までの処理と同様であるため詳細な説明を省略するが、当該カウンタ値iのブロックへの書き込みが適切に完了しているか判定される。この判定によりブロックへの書き込みが適切に完了していないと判定された場合、S520において、図7のS309と同様に、ブロックiに無効フラグが立つ。
S521では、読み出し対象のブロックのカウンタ値が不定値であるか判定され、不定値と判定されると、CPU101はS522において、割り当てブロックiを読み出しブロックに設定し、カウンタ値iをカウンタ値に設定する。
上記S501、S502における初期化処理により、変数が初期値「1」のときS522の処理が実行されるため、S522では、読み出し対象のブロックとして、図11のブロック1が設定される。
S511では、変数iがインクリメントされ、S512における判定により、変数iが割り当てブロックの総数である3以下であるか判定され。変数iがその総数以下である場合、S503に戻る。
S521で読取対象のブロックのカウンタ値が不定値でないと判断した場合は、CPU101はS507において、現在の読み出し対象のブロックのカウンタ値と、読取対象のブロックのカウンタ値が(割り当てブロック数―2)以下であるかどうかを判定する。即ち、読み出し対象のブロックのカウンタ値が、1(=0×00000001)もしくは0(=0×00000000)であるか判定される。
またCPU101はS508において、カウンタ値iと、読取対象のブロックのカウンタ値が(割り当てブロック数―2)以下であるかどうかを判定する。即ち、ブロックi(2または3)のカウンタ値が、1(=0×00000001)もしくは0(=0×00000000)であるか判定される。
S507、S508の判定結果がともにYesの場合、当該読み出し対象のブロックと、当該ブロックiのカウンタ値が、0か1のため、カウンタ値が大きい方が読み出し対象となればよい。そのためCPU101は、S509当該読み出し対象のブロックと、当該ブロックiのカウンタ値の大小を比較する。そして、カウンタ値iが当該読み込み対象のブロックのカウンタ値以上であった場合は、CPU101はS510において、割り当てブロックiを読み出し対象のブロックに設定し、カウンタ値iを、当該ブロックのカウンタ値に設定する。
S507の判定結果がYes、S508の判定結果がNoの場合、図11(a)に示したように、当該読み出し対象のブロック1のカウンタ値が「0×00000000」であり、ブロックi(=2)のカウンタ値が「0×FFFFFFFD」である場合がある。この場合、カウンタ値としてはブロック2の方が大きいが、ブロック1の方により新しいデータが書き込まれている。
そのため、S513でCPU101は、カウンタ値iが(0x100000000−割り当てブロック数)未満であるか、即ちカウンタ値iが0×FFFFFFFD未満であるか判定する。S513でYesの場合、CPU101はS514において、当該読み出し対象のブロックよりもカウンタ値が大きなブロックiを読み出し対象のブロックとする。
一方、S513でNoの場合、カウンタ値iが0×FFFFFFFD、もしくは0×FFFFFFFEであるため、S507において判定された当該読み出し対象のブロック(カウンタ値0もしくは1)が読み出し対象として優先される。そのため、この場合、S514における処理は行わずに、当該読み出し対象のブロック(カウンタ値0もしくは1)が読み出し対象として維持される。
S515における処理は、S508における処理と同様である。S515でYesの場合、当該読み出し対象のカウンタ値が0×FFFFFFFD、もしくは0×FFFFFFFEであり、ブロックiのカウンタ値が0または1であることがある。そのため、CPU101はS516において、カウンタ値iが(0x100000000−割り当てブロック数)より小さいか判定する。S516においてYesの場合、カウンタ値のより大きな、当該読み出し対象のブロックが読み出し対象として維持される。
一方、S516においてNoの場合、当該読み出し対象のブロックのカウンタ値が0×FFFFFFFD、もしくは0×FFFFFFFEであり、ブロックiのカウンタ値が0または1である。そのため、この場合にはブロックi(カウンタ値が0または1)の方が新しいデータが書き込まれているといるため、CPU101はS517において、ブロックiを読み出し対象として設定する。
またS515でNoの場合とは、当該読み出し対象のブロックのカウンタ値と、ブロックiのカウンタ値がともに2以上であるため、カウント値の大きな方が読み出し対象となる。そのためCPU101は、S518、S519において、S509、S510と同様の処理を行い、当該読み出し対象のブロックとブロックiのうち、カウンタ値の大きな方を読み出し対象とする。
そして、S511、S512における処理により、ブロックの番号iが1〜3の場合について、上記の処理が繰り返される。
上記の図10の処理により、例えば図11のように、フラッシュメモリ103においてカウンタ値の初期化前のブロックと初期化後のブロックが混在していた場合でも、初期化後のブロックを読み出しブロックとして決定することができる。そのため、そのような場合でも、より新しいデータをフラッシュメモリ103から読み出すことができる。
よって図9に示すように、書き込み回数が上限値を超える場合でも、カウンタ値の初期化を行うことで、継続して書き込みを行うことができる。即ち、例えばフラッシュメモリ103が上記上限値を越えて書き換え可能であった場合、当該上限値を越えた後も、ユーザがフラッシュメモリ103を交換せずにインクジェットプリンタ3を使用し続けることができる。
なお、以上の実施形態では、RAM102において各データセットが1つのみ読み出される例を示したが、例えば2つ等、複数のデータセットが読み出される場合であってもよい。この場合、例えば各ブロックに含まれるカウンタ値が大きいブロックから順に読み出しを行う。これにより、より新しいデータが記憶されているブロックが優先されるようにデータが読み出される。そのため、RAM102に、より新しいデータを読み出すことができる。
なお、以上の実施形態はメモリ制御装置として、インクジェットプリンタに組み込まれた電子制御回路基板を例に説明しているがこれに限らない。例えば印刷のための記録剤としてトナーを用いる電子写真方式の印刷装置でもよいし、プリンタに加え、原稿を読み取るためのスキャナを備えた複合機であってもよい。またプリンタに限らず、PC(パーソナルコンピュータ)や、スマートフォンやタブレット、携帯電話、デジタルカメラなどの各種の装置であってもよい。
また、本実施形態におけるメモリ制御装置は、当該装置の内部に備える不揮発性メモリに対する書き込み、読み出しを行う場合に限らず、当該装置に接続された外部の不揮発性メモリに対して書き込み、読み出しを行う場合であってもよい。
さらに以上の実施形態では、不揮発性メモリとしてフラッシュメモリを例に説明したが、これに限らない。例えばEEPROM等の種々のメモリに本実施形態を適用することができる。
なお、本実施形態の機能は以下の構成によっても実現することができる。つまり、本実施形態の処理を行うためのプログラムコードをシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)がプログラムコードを実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、またそのプログラムコードを記憶した記憶媒体も本実施形態の機能を実現することになる。
また、本実施形態の機能を実現するためのプログラムコードを、1つのコンピュータ(CPU、MPU)で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。
101 CPU
102 RAM
103 フラッシュメモリ

Claims (15)

  1. 不揮発性メモリへデータを書き込むメモリ制御装置であって、
    前記不揮発性メモリへの書き込み対象の所定のデータを、当該不揮発性メモリの記憶領域が分割されたブロックに書き込む書き込み手段と、
    前記書き込み手段によりデータが書き込まれるブロックに対応する情報であって、前記不揮発性メモリからのデータの読み出しが行われるときに読み出し対象のブロックを特定するための情報を取得する取得手段と、を有し、
    前記書き込み手段は、前記不揮発性メモリにおける1つのブロックへの書き込み対象の所定のデータと、前記取得手段により取得された当該1つのブロックに対応する情報の両方を、当該1つのブロックに書き込むことを特徴とするメモリ制御装置。
  2. 前記不揮発性メモリにおける前記ブロックに書き込まれている前記情報を参照することによりデータの読み出し対象のブロックを特定し、当該特定されたブロックに書き込まれているデータを読み出す読み出し手段を有することを特徴とする請求項1に記載のメモリ制御装置。
  3. 前記取得手段は、前記書き込み手段による前記不揮発性メモリへの書き込み回数を特定するための情報を取得し、
    前記読み出し手段は、前記取得手段により取得され前記書き込み手段により書き込まれた前記情報に基づくブロックからデータを読み出すことを特徴とする請求項2に記載のメモリ制御装置。
  4. 前記読み出し手段は、第1の書き込み回数に対応する情報が書き込まれた第1のブロックが、当該第1の書き込み回数よりも少ない第2の書き込み回数に対応する情報が書き込まれた第2のブロックよりも読み出し対象として優先されるように、前記読み出しを実行することを特徴とする請求項3に記載のメモリ制御装置。
  5. 前記書き込み手段は、前記不揮発性メモリへの書き込み回数が所定の回数を越える場合、前記取得手段により取得された、初期化された回数に対応する情報を書き込み、
    前記読み出し手段は、データの読み出し候補の複数のブロックに、前記初期化の前に対応する情報が書き込まれているブロックと、当該初期化の後に対応する情報が書き込まれているブロックがある場合、当該初期化の後に対応する情報が書き込まれているブロックを読み出し対象のブロックとして決定することを特徴とする請求項3に記載のメモリ制御装置。
  6. 前記読み出し手段は、前記ブロックから前記所定のデータと、前記ブロックに書き込まれている前記情報を読み出し、
    前記取得手段は、当該読み出された前記情報に基づいて新たな情報を取得し、前記書き込み手段は、新たな書き込み対象のデータと当該新たな情報の両方を、1つのブロックに書き込むことを特徴とする請求項2乃至5のいずれか1項に記載のメモリ制御装置。
  7. 前記書き込み手段は、前記1つのブロックに対する前記所定のデータの書き込みの前と後に、前記情報を当該1つのブロックに書き込み、
    前記読み出し手段は、読み出し候補のブロックにおいて前記所定のデータの書き込みの前と後に書き込まれた前記情報が整合した場合、当該候補のブロックからデータを読み出すことを特徴とする請求項2乃至6のいずれか1項に記載のメモリ制御装置。
  8. 前記読み出し手段は、読み出し候補のブロックにおいて前記所定のデータの書き込みの前と後に書き込まれた前記情報が整合しなかった場合、前記不揮発性メモリにおける他のブロックに書き込まれている前記情報に基づき、前記書き込み手段により所定のデータの前と後に書き込まれた前記情報が整合するブロックからデータを読み出すことを特徴とする請求項7に記載のメモリ制御装置。
  9. 前記読み出し手段は、前記メモリ制御装置が起動したときに、前記読み出しを行うことを特徴とする請求項2乃至8のいずれか1項に記載のメモリ制御装置。
  10. 前記書き込み手段は、前記1つのブロックに前記所定のデータと前記情報を書き込む前に、当該1つのブロックの全ての領域に所定の値を書き込み、当該所定の値が書き込まれた当該1つのブロックに、当該所定のデータと当該情報を書き込むことを特徴とする請求項1乃至9のいずれか1項に記載のメモリ制御装置。
  11. 前記不揮発性メモリは、フラッシュメモリであることを特徴とする請求項1乃至10のいずれか1項に記載のメモリ制御装置。
  12. 前記書き込み手段は、前記メモリ制御装置が備える前記不揮発性メモリに前記所定のデータと前記情報を書き込むことを特徴とする請求項1乃至11のいずれか1項に記載のメモリ制御装置。
  13. 印刷媒体に画像を印刷する印刷手段を有し、
    前記書き込み手段は、前記所定のデータとして、前記印刷手段による印刷を制御するための制御情報を前記不揮発性メモリに書き込むことを特徴とする請求項1乃至12のいずれか1項に記載のメモリ制御装置。
  14. 不揮発性メモリへデータを書き込むメモリ制御方法であって、
    前記不揮発性メモリの記憶領域が分割されたブロックに対応する情報であって、前記不揮発性メモリからのデータの読み出しが行われるときに読み出し対象のブロックを特定するための情報を取得し、
    前記不揮発性メモリにおける1つのブロックへの書き込み対象の所定のデータと、前記取得された当該1つのブロックに対応する情報の両方を、当該1つのブロックに書き込むことを特徴とするメモリ制御方法。
  15. 請求項1乃至13のいずれか1項に記載のメモリ制御装置の各手段としてコンピュータを機能させるための、または請求項14に記載のメモリ制御方法をコンピュータに実行させるためのプログラム。
JP2013269660A 2013-12-26 2013-12-26 メモリ制御装置、メモリ制御方法、およびプログラム Active JP6274857B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013269660A JP6274857B2 (ja) 2013-12-26 2013-12-26 メモリ制御装置、メモリ制御方法、およびプログラム
US14/580,148 US9384849B2 (en) 2013-12-26 2014-12-22 Memory control apparatus, memory control method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013269660A JP6274857B2 (ja) 2013-12-26 2013-12-26 メモリ制御装置、メモリ制御方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2015125598A true JP2015125598A (ja) 2015-07-06
JP6274857B2 JP6274857B2 (ja) 2018-02-07

Family

ID=53482558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013269660A Active JP6274857B2 (ja) 2013-12-26 2013-12-26 メモリ制御装置、メモリ制御方法、およびプログラム

Country Status (2)

Country Link
US (1) US9384849B2 (ja)
JP (1) JP6274857B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016062349A (ja) * 2014-09-18 2016-04-25 日立オートモティブシステムズ株式会社 自動車用電子制御装置及びデータ記憶方法
JP2017049902A (ja) * 2015-09-04 2017-03-09 日立オートモティブシステムズ株式会社 電子制御装置

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11829349B2 (en) 2015-05-11 2023-11-28 Oracle International Corporation Direct-connect functionality in a distributed database grid
KR102456490B1 (ko) * 2016-01-12 2022-10-20 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US10732836B2 (en) * 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
CN114035749B (zh) * 2018-01-12 2023-02-28 珠海极海半导体有限公司 电子设备和Flash存储器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330850A (ja) * 1999-05-19 2000-11-30 Casio Comput Co Ltd フラッシュメモリ制御方法
JP2001084002A (ja) * 1999-09-10 2001-03-30 Aisin Seiki Co Ltd 制御装置
JP2006039876A (ja) * 2004-07-26 2006-02-09 Denso Corp データ記憶装置
JP2010066914A (ja) * 2008-09-09 2010-03-25 Toshiba Corp 統合メモリ管理装置及びメモリ管理方法
JP2013218371A (ja) * 2012-04-04 2013-10-24 Seiko Epson Corp 情報処理装置及び情報処理装置におけるデータ記憶処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4037605B2 (ja) 2000-12-04 2008-01-23 株式会社東芝 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
KR101038167B1 (ko) * 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330850A (ja) * 1999-05-19 2000-11-30 Casio Comput Co Ltd フラッシュメモリ制御方法
JP2001084002A (ja) * 1999-09-10 2001-03-30 Aisin Seiki Co Ltd 制御装置
JP2006039876A (ja) * 2004-07-26 2006-02-09 Denso Corp データ記憶装置
JP2010066914A (ja) * 2008-09-09 2010-03-25 Toshiba Corp 統合メモリ管理装置及びメモリ管理方法
JP2013218371A (ja) * 2012-04-04 2013-10-24 Seiko Epson Corp 情報処理装置及び情報処理装置におけるデータ記憶処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016062349A (ja) * 2014-09-18 2016-04-25 日立オートモティブシステムズ株式会社 自動車用電子制御装置及びデータ記憶方法
JP2017049902A (ja) * 2015-09-04 2017-03-09 日立オートモティブシステムズ株式会社 電子制御装置

Also Published As

Publication number Publication date
US9384849B2 (en) 2016-07-05
JP6274857B2 (ja) 2018-02-07
US20150187430A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
JP6274857B2 (ja) メモリ制御装置、メモリ制御方法、およびプログラム
JP6431279B2 (ja) 印刷装置、印刷装置の制御方法
JP2006202117A (ja) 処理装置およびそのファームウェアダウンロード方法。
US20150213338A1 (en) Image forming apparatus that performs writing into a non-volatile memory, and a method
JP2007053735A (ja) 画像形成装置及び画像データ記憶領域入替方法
JP2013004042A (ja) 情報処理装置、画像形成装置およびプログラム
JP6214390B2 (ja) メモリ制御装置、メモリ制御方法、およびプログラム
JP6787490B2 (ja) メモリーシステム及び電子機器
CN114420183A (zh) 数据存储控制方法、电子设备及存储介质
JP6579324B2 (ja) 画像形成装置およびデータ処理プログラム
JP2005047278A (ja) マシンの動作オプション及び構成の管理方法、並びにプリントマシン
JP2009239616A (ja) 画像処理装置
JP2007015223A (ja) 画像形成装置
JP6398697B2 (ja) データ受信装置、データ受信方法及びプログラム
JP2007015326A (ja) カラー画像形成装置
JP2012098794A (ja) 記憶装置及び画像形成装置
JP7313840B2 (ja) 情報処理装置および情報処理装置の制御方法、ならびにプログラム
JP2008172491A (ja) ファクシミリ
JP5976729B2 (ja) 電子機器
JP2007055042A (ja) 画像記録装置
JP2008105214A (ja) 画像処理システム、画像処理装置及びプリントサーバ
JP2014006836A (ja) プログラム書き換え方法
JP2008225882A (ja) 電子機器
JP2013191086A (ja) 画像形成装置、情報処理装置および制御装置
JP2013101451A (ja) ファームウェア更新システム及びファームウェア更新方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170927

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180109

R151 Written notification of patent or utility model registration

Ref document number: 6274857

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151