JP2018160018A - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP2018160018A JP2018160018A JP2017055842A JP2017055842A JP2018160018A JP 2018160018 A JP2018160018 A JP 2018160018A JP 2017055842 A JP2017055842 A JP 2017055842A JP 2017055842 A JP2017055842 A JP 2017055842A JP 2018160018 A JP2018160018 A JP 2018160018A
- Authority
- JP
- Japan
- Prior art keywords
- data
- configuration information
- device driver
- page
- stored
- 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.)
- Pending
Links
Landscapes
- Memory System (AREA)
Abstract
【課題】デバイスドライバのバージョンアップに簡単に対応することができるデータ処理装置を提供する。【解決手段】CPUは、データ格納用のROMに格納されているデータを読み込む場合、デバイスドライバから提供されるページ構成情報と、データ格納用のROMに格納されているページ構成情報とを比較する(ステップS101,S102)。CPUは、これらページ構成情報が不一致であるとき(ステップS103でYES)、データ格納用のROMのデータ構成をデバイスドライバから提供されるページ構成情報に従ったデータ構成に更新する(ステップS104)。このとき、データ格納用のROMに格納されているページ構成情報は、デバイスドライバから提供されるページ構成情報に更新される。この後、CPUはデータ格納用のROMに格納されているデータを読み込む(ステップS105)。【選択図】図3
Description
本発明は、データ処理装置に関する。
従来、不揮発性メモリの一種としてNAND型のフラッシュメモリが知られている(たとえば特許文献1参照)。
NAND型のフラッシュメモリでは、データの読み書きは複数の記憶セルの集まりであるページ単位で行う一方、データの消去は複数のページを含むブロック単位で行う。また、当該フラッシュメモリでは、すでに存在するデータを新しいデータに置き換える、いわゆる上書き処理ができない。このため、データを書き換えるときには、当該データを含むブロック全体のデータをフラッシュメモリの外部に一時的に待避させたうえで、当該ブロック全体のデータをいったん消去する必要がある。この後、外部で書き換えられたデータを消去済みのブロックに改めて書き込む。
NAND型のフラッシュメモリでは、データの読み書きは複数の記憶セルの集まりであるページ単位で行う一方、データの消去は複数のページを含むブロック単位で行う。また、当該フラッシュメモリでは、すでに存在するデータを新しいデータに置き換える、いわゆる上書き処理ができない。このため、データを書き換えるときには、当該データを含むブロック全体のデータをフラッシュメモリの外部に一時的に待避させたうえで、当該ブロック全体のデータをいったん消去する必要がある。この後、外部で書き換えられたデータを消去済みのブロックに改めて書き込む。
フラッシュメモリは、たとえばマイクロコンピュータの補助記憶装置の一つとして使用される。マイクロコンピュータのCPU(中央処理装置)は、デバイスドライバの実行を通じて、フラッシュメモリにアクセスする。デバイスドライバは、フラッシュメモリの動作を制御するためのソフトウェアであって、たとえばマイクロコンピュータの補助記憶装置の一つであるプログラム格納用の不揮発性メモリに格納されている。CPUは、プログラム格納用の不揮発性メモリからデバイスドライバを読み込み、この読み込まれるデバイスドライバを実行することにより、フラッシュメモリに対してデータの読み書きを行う。
デバイスドライバは、処理性能の向上などを目的として、バージョンアップ(更新)されることがある。これに伴い、デバイスドライバが有するページ構成情報も変更されることがある。ページ構成情報とは、フラッシュメモリにおけるページ数、各ページのサイズ、および各ページの先頭に設けられるページヘッダの記憶位置などのページの構成を示す情報をいう。CPUは、デバイスドライバから提供されるページ構成情報に従って、フラッシュメモリに対してデータの読み書きを行う。
ここで、デバイスドライバのバージョンアップに伴い、つぎのことが懸念される。すなわち、CPUがデバイスドライバから提供されるページ構成情報を通じて認識するフラッシュメモリのページ構成と、フラッシュメモリの実際のページ構成とが異なる状況が発生する。フラッシュメモリは、旧バージョンのデバイスドライバのページ構成情報に従ってデータが書き込まれた状態のままだからである。このため、CPUが新バージョンのデバイスドライバの実行を通じてフラッシュメモリからデータを読み出そうとするとき、ページ境界のデータの読み出しに失敗するおそれがある。たとえばCPUが、ページヘッダとして認識する記憶位置に、ページヘッダではない通常のデータが記憶されている状況が考えられる。
フラッシュメモリに記憶された既存のデータをデバイスドライバのバージョンアップを行った後も引き続き使用するためには、デバイスドライバのバージョンアップをつぎの手順で行うことが考えられる。たとえば、まず旧バージョンのデバイスドライバを使用してフラッシュメモリに格納されているデータを読み出し、この読み出されるデータを専用の外部ツールに一時的に保持する。この状態でデバイスドライバのバージョンアップを行い、その後、外部ツールに保持しておいたデータを、新バージョンのデバイスドライバが有するページ構成情報に従って、フラッシュメモリに改めて書き込む。しかし、このような作業は面倒である。
本発明の目的は、デバイスドライバのバージョンアップに簡単に対応することができるデータ処理装置を提供することにある。
上記目的を達成し得るデータ処理装置は、特定の読み書き単位でデータの読み書きが行われるとともに複数の前記読み書き単位を含むブロック単位でデータの消去が行われる第1の不揮発性メモリと、前記第1の不揮発性メモリの読み書き動作を制御するためのプログラムであって前記第1の不揮発性メモリのデータ構成を規定するデータ構成情報を有するデバイスドライバが格納された第2の不揮発性メモリと、前記デバイスドライバの実行を通じて提供される前記データ構成情報に従って前記第1の不揮発性メモリに対してデータを読み書きする制御回路と、を備えている。そして、前記第1の不揮発性メモリの特定領域にも前記データ構成情報が格納されていることを前提として、前記制御回路は、前記第1の不揮発性メモリに格納されているデータを読み出す場合、前記特定領域に格納されているデータ構成情報と前記デバイスドライバから提供されるデータ構成情報とが異なるとき、前記第1の不揮発性メモリのデータ構成を前記デバイスドライバから提供されるデータ構成情報に従って更新する。
デバイスドライバのバージョンアップに伴い、デバイスドライバが有するデータ構成情報が変更されることがある。しかし、第1の不揮発性メモリのデータは、バージョンアップされる前のデバイスドライバから提供されるデータ構成情報に従って格納されている。このため、制御回路が新バージョンのデバイスドライバから提供されるデータ構成情報に基づき認識する第1の不揮発性メモリのデータ構成と、実際の第1の不揮発性メモリのデータ構成とが異なる状況が発生する。
この点、上記の構成によれば、制御回路は、第1の不揮発性メモリに格納されているデータを読み出す場合、第1の不揮発性メモリの特定領域に格納されているデータ構成情報と、デバイスドライバから提供されるデータ構成情報とが異なるとき、第1の不揮発性メモリのデータ構成が、新バージョンのデバイスドライバから提供されるページ構成情報に従って自動更新される。このため、第1の不揮発性メモリに格納されたデータを、デバイスドライバのバージョンアップを行った後も引き続き使用することができる。したがって、デバイスドライバのバージョンアップに簡単に対応することができる。
上記のデータ処理装置において、前記特定領域は、複数のブロックのいずれか一に設定されていてもよい。この場合、前記制御回路は、前記第1の不揮発性メモリに格納されているデータを読み出すとき、はじめに、前記特定領域に格納されているデータ構成情報を読み出し、その読み出される前記特定領域のデータ構成情報と、前記デバイスドライバから提供されるデータ構成情報とを比較することが好ましい。
この構成によれば、制御回路は、第1の不揮発性メモリに格納されているデータを読み出す前に、前記特定領域に格納されているデータ構成情報と前記デバイスドライバから提供されるデータ構成情報とが異なるかどうかを判定することが可能となる。
上記のデータ処理装置において、前記第1の不揮発性メモリの特定領域は、複数のブロックのそれぞれに設定されていてもよい。この場合、前記制御回路は、データの読み出し対象となるブロックに格納されているデータを読み出すとき、はじめに、前記データの読み出し対象となるブロックの前記特定領域に格納されているデータ構成情報を読み出し、その読み出される前記特定領域のデータ構成情報と、前記デバイスドライバから提供されるデータ構成情報とを比較することが好ましい。
この構成によれば、制御回路は、データの読み出し対象となるブロックに格納されているデータを読み出す前に、データの読み出し対象となるブロックの前記特定領域に格納されているデータ構成情報と前記デバイスドライバから提供されるデータ構成情報とが異なるかどうかを判定することが可能となる。
上記のデータ処理装置において、前記第1の不揮発性メモリは、ブロック単位でデータを先頭から順番に読み書きするシーケンシャルアクセス方式のフラッシュメモリであってもよい。この場合、前記特定領域は、ブロックの先頭領域に設定されていることが好ましい。
このタイプのフラッシュメモリにおいては、制御回路がバージョンアップされたデバイスドライバから提供されるデータ構成情報に基づき認識する第1の不揮発性メモリのデータ構成が、実際の第1の不揮発性メモリのデータ構成と異なる場合であれ、読み出し対象となるブロックの先頭領域に格納されているデータは読み出すことができる。このため、第1の不揮発性メモリの特定領域に格納されているデータ構成情報と、デバイスドライバから提供されるデータ構成情報とが異なるとき、第1の不揮発性メモリのデータ構成を更新する処理が、より確実に実行される。
上記のデータ処理装置において、前記制御回路は、前記第1の不揮発性メモリのデータ構成を更新する処理として、前記第1の不揮発性メモリのデータを外部の記憶領域に待避させる処理と、前記第1の不揮発性メモリのデータを一旦消去する処理と、前記デバイスドライバから提供されるデータ構成情報を前記第1の不揮発性メモリの特定領域に格納する処理と、前記外部の記憶領域に待避させてあるデータを前記デバイスドライバから提供されるデータ構成情報に従って前記第1の不揮発性メモリに格納する処理と、を実行することが好ましい。
この構成によれば、前記第1の不揮発性メモリのデータ構成を、前記デバイスドライバから提供されるデータ構成情報に従って適切に更新することができる。
本発明のデータ処理装置によれば、デバイスドライバのバージョンアップに簡単に対応することができる。
<第1の実施の形態>
以下、データ処理装置をマイクロコンピュータに具体化した第1の実施の形態を説明する。このマイクロコンピュータは、たとえば特定の機能を実現するために様々な組み込み装置(制御対象)に組み込まれる。
以下、データ処理装置をマイクロコンピュータに具体化した第1の実施の形態を説明する。このマイクロコンピュータは、たとえば特定の機能を実現するために様々な組み込み装置(制御対象)に組み込まれる。
<マイクロコンピュータの構成>
図1に示すように、マイクロコンピュータ11は、CPU(central processing unit)12、プログラム格納用のROM(read-only memory)13、データ格納用のROM14、入力ポート15、および出力ポート16を有している。CPU12は、組み込み装置に要求される機能を実現するためのプログラムを実行する。プログラム格納用のROM13には、CPU12により実行されるプログラムが格納されている。データ格納用のROM14には、組み込み装置を制御するために必要とされるデータが格納されている。
図1に示すように、マイクロコンピュータ11は、CPU(central processing unit)12、プログラム格納用のROM(read-only memory)13、データ格納用のROM14、入力ポート15、および出力ポート16を有している。CPU12は、組み込み装置に要求される機能を実現するためのプログラムを実行する。プログラム格納用のROM13には、CPU12により実行されるプログラムが格納されている。データ格納用のROM14には、組み込み装置を制御するために必要とされるデータが格納されている。
プログラム格納用のROM13およびデータ格納用のROM14としては、不揮発性メモリの一種であるフラッシュメモリが採用される。フラッシュメモリには、主にNAND型およびNOR型の2種類が存在する。
NAND型では、複数の記憶セル(データを記憶する最小単位)の集まりであるページ単位でデータの書き込みおよび読み出しが行われる。また、NAND型では、複数のページを含むブロック単位でデータの消去が行われる。また、NAND型では、すでに存在するデータを新しいデータに置き換える、いわゆる上書き処理ができない。このため、データを書き換えるときには、書き換え対象のデータを含むブロック全体のデータを外部に一時的に待避させたうえで当該ブロック全体のデータをいったん消去し、その後、外部で書き換えられたデータを元のブロックに改めて書き込む必要がある。ちなみに、NAND型では、ブロック単位のシーケンシャルアクセスによるデータの読み書きが可能である。シーケンシャルアクセスとは、データに対するアクセス方式であって、データを先頭から順番に読み書きする方式をいう。
NOR型では、1バイト単位でデータの読み書きが行われる。ブロック単位でデータが消去されること、および上書き処理ができないことについてはNAND型と同様である。NOR型では、バイト単位のランダムアクセスによるデータの読み書きが可能である。ランダムアクセスとは、データに対するアクセス方式であって、データが記憶されている場所あるいは書き込みの順序に関係なく、必要とされるデータに直接アクセスして読み出すことをいう。NOR型では、データの読み出しについては、デバイスドライバを必要としない。
なお、フラッシュメモリ(NAND型およびNOR型)には、その動作原理上、書き換え回数に制限がある。このため、書き込み頻度が高いほど、フラッシュメモリはより早期に寿命を迎え、正常に読み書きすることができなくなる。そこで、フラッシュメモリの使用寿命を延ばすためにウェアレベリングが行われることがある。ウェアレベリングとは、データの消去単位であるブロックごとの書き換え回数(消去回数)を管理して、書き換え対象のブロックを選択するとき、各ブロックの書き換え回数が平均化するように、書き換え対象のブロックを選ぶ処理をいう。これにより、特定のブロックに書き換えが集中することが抑制される。
本例では、データ格納用のROM14としてはNAND型のフラッシュメモリが採用されている。また、プログラム格納用のROM13としてはNOR型のフラッシュメモリが採用されている。
プログラム格納用のROM13に格納されるプログラムには、デバイスドライバ21が含まれている。デバイスドライバ21は、データ格納用のROM14の動作(データの読み込み、書き込み、および消去)を制御するためのソフトウェアである。前述したウェアレベリング機能もデバイスドライバ21の実行を通じて実現される。また、デバイスドライバ21は、データ格納用のROM14を扱う仕様としてページ構成情報22を有している。ページ構成情報22は、データ格納用のROM14の記憶領域が分割されてなるページの構成に関する情報である。ページ構成情報22には、各ブロックにおけるページ数、各ページのサイズ、および各ページの先頭に設けられるページヘッダ(ページの境界)の記憶位置などを示す情報が含まれている。
また、データ格納用のROM14にもページ構成情報23が格納されている。データ格納用のROM14に格納されるページ構成情報23は、基本的にはデバイスドライバ21が有するページ構成情報22と同じ内容を有している。
CPU12は、主記憶装置としてRAM(random access memory)24を有している。RAM24は、データの書き込みおよび読み込み可能な揮発性のメモリである。CPU12は、プログラム格納用のROM13に格納されているプログラムを実行するとき、当該プログラムおよびデータ格納用のROM14に格納されているデータをRAM24に読み込んで一時的に記憶する。これにより、CPU12はプログラムを実行可能となる。
CPU12は、デバイスドライバ21の実行を通じて、データ格納用のROM14にアクセスする。CPU12はデバイスドライバ21から提供されるページ構成情報22に基づきデータ格納用のROM14のページ構成を把握し、この把握されるページ構成に従ってデータ格納用のROM14に対してデータの読み書きを行う。なお、CPU12は、入力ポート15および出力ポート16を介して、外部機器との間でデータの授受を行う。
<データ格納用のROMの構成>
つぎに、データ格納用のROM14の構成の一例を説明する。
図2(a)に示すように、データ格納用のROM14の記憶領域は、複数のブロックB(B0〜Bn)に区切られている。そして、1つのブロックBはさらに複数のページP(P0〜Pn)に区切られている。
つぎに、データ格納用のROM14の構成の一例を説明する。
図2(a)に示すように、データ格納用のROM14の記憶領域は、複数のブロックB(B0〜Bn)に区切られている。そして、1つのブロックBはさらに複数のページP(P0〜Pn)に区切られている。
ここでは、図2(b)に示すように、1つのブロックBは、4つのページP0,P1,P2,P3に区切られているものとする。
複数のブロックBのいずれか一のブロックB(たとえば先頭のブロックB0)には、ページ構成情報23が格納されている。ページ構成情報23は、ブロックB0における先頭ページであるページP0に格納されている。ページP0以外のページP1〜ページP3には、CPU12による演算などに使用される通常のデータが格納される。なお、先頭のブロックB0以外のブロックB1〜Bnには、ページ構成情報23は格納されていない。たとえばブロックB1〜Bnにおいては、すべてのページP(P0〜P3)に通常のデータが格納されてもよい。
複数のブロックBのいずれか一のブロックB(たとえば先頭のブロックB0)には、ページ構成情報23が格納されている。ページ構成情報23は、ブロックB0における先頭ページであるページP0に格納されている。ページP0以外のページP1〜ページP3には、CPU12による演算などに使用される通常のデータが格納される。なお、先頭のブロックB0以外のブロックB1〜Bnには、ページ構成情報23は格納されていない。たとえばブロックB1〜Bnにおいては、すべてのページP(P0〜P3)に通常のデータが格納されてもよい。
各ページP1〜ページP3の先頭(ページの開始位置)には、ページヘッダPHが設けられている。ページヘッダPHには、たとえば各ページPを含むブロックBの消去回数(書き換え回数)が格納される。この消去回数は、データ格納用のROM14の動作保証期限を管理するために、あるいは前述したウェアレベリングを行うために使用される。なお、先頭のページP0については、ページヘッダPHを設けてもよいし設けなくてもよい。図2(b)の例では、先頭のページP0には、ページヘッダPHが設けられていない。
各ブロックBにおける各ページPのサイズは、データの書き込み頻度に応じて設定されることがある。たとえば、書き込み頻度がより高いデータが書き込まれるページPほど、そのサイズはより大きく設定される。これは、新しいデータを追記できる空き領域をより増やす観点に基づく。空き領域が増大するほど、より多くの新しいデータを同じページに追記することができる。これにより、当該ページPを含むブロックBを消去する回数、ひいては同じ記憶セルに対する書き込み回数をより減らすことが可能である。書き込み頻度がより低いデータが書き込まれるページPほど、そのサイズはより小さく設定される。
たとえば図2(b)に示されるブロックB0において、4つのページPのサイズの大小関係は次式(A)で示される通りである。
ページP0<ページP3<ページP1<ページP2 …(A)
<データの読み出し処理手順>
つぎに、CPU12により実行されるデータ処理の一例として、データ格納用のROM14に格納されているデータの読み出し処理の手順を説明する。
ページP0<ページP3<ページP1<ページP2 …(A)
<データの読み出し処理手順>
つぎに、CPU12により実行されるデータ処理の一例として、データ格納用のROM14に格納されているデータの読み出し処理の手順を説明する。
図3のフローチャートに示すように、CPU12は、データ格納用のROM14に格納されているデータの読み出しを開始するとき、まずデータ格納用のROM14に格納されているページ構成情報23を読み込む(ステップS101)。
具体的には、CPU12は、読み込もうとするデータがどのブロックBに格納されている場合であれ、最初にブロックB0に格納されているページ構成情報23を読み込む。ここで、ページ構成情報23は、ブロックB0の先頭ページであるページP0に格納されている。また、NAND型のフラッシュメモリであるデータ格納用のROM14では、ブロック単位で先頭から順番にデータが読み込まれる。このため、ブロックB0に格納されているデータの中でも、先頭ページに格納されているページ構成情報23が真っ先にCPU12に読み込まれる。
つぎに、CPU12は、デバイスドライバ21から提供されるページ構成情報22と、ステップS101で読み込んだデータ格納用のROM14に格納されているページ構成情報23とを比較する(ステップS102)。CPU12は、2つのページ構成情報22,23を比較することにより、これらページ構成情報22,23の差分を検出する。
つぎに、CPU12は、2つのページ構成情報22,23が異なるものであるかどうかを判定する(ステップS103)。
CPU12は、先のステップS102において差分が検出されないとき、2つのページ構成情報22,23は異なるものではない旨判定する。また、CPU12は、先のステップS102において差分が検出されるとき、2つのページ構成情報22,23が異なるものである旨判定する。
CPU12は、先のステップS102において差分が検出されないとき、2つのページ構成情報22,23は異なるものではない旨判定する。また、CPU12は、先のステップS102において差分が検出されるとき、2つのページ構成情報22,23が異なるものである旨判定する。
CPU12は、2つのページ構成情報22,23が異なるものである旨判定されるとき(ステップS103でYES)、データ格納用のROM14のデータ構成を、デバイスドライバ21が有するページ構成情報22に従ったデータ構成に更新する(ステップS104)。
2つのページ構成情報22,23の内容が一致しない状況としては、デバイスドライバ21のバージョンアップに伴いページ構成情報22が変更されたことが考えられる。これに対し、データ格納用のROM14に格納されているページ構成情報23は変更されていない。このため、デバイスドライバ21が有するページ構成情報22とデータ格納用のROM14に格納されているページ構成情報23とが互いに異なる状況が発生する。前述したように、CPU12は、デバイスドライバ21から提供されるページ構成情報22に従ってデータ格納用のROM14に格納されているデータを読み込む。このため、データ格納用のROM14のデータ構成を、バージョンアップされたデバイスドライバ21から提供される新しいページ構成情報22に従って更新することにより、CPU12はデータ格納用のROM14に格納されているデータを読み出すことが可能となる。
データ格納用のROM14におけるデータ構成の更新処理が完了した後、CPU12は、デバイスドライバ21から提供されるページ構成情報22に従って、データ格納用のROM14に格納されているデータを読み込む(ステップS105)。
なお、CPU12は、先のステップS103において、2つのページ構成情報22,23が異なるものではない旨判定されるとき(ステップS103でNO)、デバイスドライバ21から提供されるページ構成情報22に従って、データ格納用のROM14に格納されているデータを読み込む(ステップS105)。
<データ構成の更新処理手順>
つぎに、データ格納用のROM14におけるデータ構成の更新処理について詳細に説明する。この更新処理は、先の図3のフローチャートにおけるステップS104に処理が移行した際に実行される。ここでは、デバイスドライバ21のバージョンアップに伴い2つのページ構成情報22,23が異なる状況が発生している。
つぎに、データ格納用のROM14におけるデータ構成の更新処理について詳細に説明する。この更新処理は、先の図3のフローチャートにおけるステップS104に処理が移行した際に実行される。ここでは、デバイスドライバ21のバージョンアップに伴い2つのページ構成情報22,23が異なる状況が発生している。
さて、図4のフローチャートに示すように、CPU12は、データ格納用のROM14におけるデータ構成を更新するに際して、まずデータ格納用のROM14に格納されているページ構成情報23を読み込み、この読み込まれるページ構成情報23に従ってデータ格納用のROM14に格納されているすべてのデータを読み出す(ステップS201)。
ここで、CPU12は、データ格納用のROM14におけるデータ構成の更新処理を実行開始した当初、バージョンアップされたデバイスドライバ21から提供されるページ構成情報22に従って、データ格納用のROM14に格納されているデータを読み込み始める。この段階において、データ格納用のROM14における各ブロックBのデータ構成(ページ構成)は、バージョンアップされたデバイスドライバ21から提供されるページ構成情報22に従ったデータ構成となっていない。
しかし、データ格納用のROM14のページ構成情報23は、ブロックB0の先頭ページであるページP0に格納されている。また、NAND型のフラッシュメモリであるデータ格納用のROM14では、ブロック単位で先頭から順番にデータが読み込まれる。このため、CPU12は、バージョンアップされたデバイスドライバ21から提供されるページ構成情報22に従ってブロックB0のデータを読み込む場合、少なくとも先頭ページであるページP0に格納されているデータ(ここでは、ページ構成情報23)については読み込むことができる。したがって、CPU12は、この読み込まれるページ構成情報23に従って、データ格納用のROM14の各ブロックBに格納されているすべてのデータを読み出すことができる。
つぎに、CPU12は、ステップS201で読み出されるすべてのデータをRAM24に一時的に待避させる(ステップS202)。
つぎに、CPU12は、データ格納用のROM14に格納されているすべてのデータを消去する(ステップS203)。
つぎに、CPU12は、データ格納用のROM14に格納されているすべてのデータを消去する(ステップS203)。
すなわち、図5に示されるように、データ格納用のROM14のすべてのブロックBは、何もデータが格納されていない状態となる。先頭のブロックB0においては、通常のデータだけでなく、ページ構成情報23も消去される。
つぎに、CPU12は、バージョンアップされたデバイスドライバ21から提供される新しいページ構成情報22を、データ格納用のROM14に書き込むべき新しいページ構成情報23として、データ格納用のROM14の特定の領域に書き込む(ステップS204)。
ここで、特定の領域とは、ページ構成情報23を書き込むために割り当てられるブロックBにおける特定のページPをいう。ここでは、デバイスドライバ21がバージョンアップされる前と同様に、ブロックB0の先頭ページであるページP0が特定の領域として割り当てられる。
最後に、CPU12は、デバイスドライバ21から提供される新しいページ構成情報22に従って、RAM24に待避させてあるすべてのデータを、データ格納用のROM14に書き込む(ステップS205)。
図6に示されるように、データ格納用のROM14の各ブロックBにおいて、新しいページ構成情報23に基づくページ構成は、図2に示される旧ページ構成に対して、ページ数は4つで同じであるものの、2つのページP1,P3のサイズが変更されている。旧ページ構成に比べて、ページP1のサイズはより小さく、ページP3のサイズはより大きく設定されている。残る2つのページP0,ページP2のサイズは変更されていない。4つのページPのサイズの大小関係は次式(B)で示される通りである。
ページP0<ページP1<ページP3<ページP2 …(B)
データ格納用のROM14の各ブロックBに対して、図6に示される新しいページ構成に沿って系統立ててデータが格納されることにより、各ブロックBには新たなデータ構成が構築される。
データ格納用のROM14の各ブロックBに対して、図6に示される新しいページ構成に沿って系統立ててデータが格納されることにより、各ブロックBには新たなデータ構成が構築される。
この後、CPU12は、先の図3のフローチャートで示されるメインルーチンにおけるステップS105へ処理を移行する。
この段階では、CPU12がバージョンアップされたデバイスドライバ21から提供される新しいページ構成情報22を通じて認識するデータ格納用のROM14のページ構成と、実際のデータ格納用のROM14のページ構成とが一致している。また、データ格納用のROM14における各ブロックBのデータは、新しいページ構成情報22に基づくページ構成に沿って格納されている。このため、CPU12はデータ格納用のROM14に格納されているすべてのデータを読み込むことができる。
この段階では、CPU12がバージョンアップされたデバイスドライバ21から提供される新しいページ構成情報22を通じて認識するデータ格納用のROM14のページ構成と、実際のデータ格納用のROM14のページ構成とが一致している。また、データ格納用のROM14における各ブロックBのデータは、新しいページ構成情報22に基づくページ構成に沿って格納されている。このため、CPU12はデータ格納用のROM14に格納されているすべてのデータを読み込むことができる。
<実施の形態の効果>
したがって、本実施の形態によれば、以下の効果を得ることができる。
(1)CPU12は、データ格納用のROM14に格納されているデータの読み込みを開始する場合、デバイスドライバ21から提供されるページ構成情報22と、データ格納用のROM14に格納されているページ構成情報23とを比較する。CPU12は、これらページ構成情報22,23が不一致であるとき、データ格納用のROM14のデータ構成をデバイスドライバ21が有するページ構成情報22に従ったデータ構成に自動更新する。
したがって、本実施の形態によれば、以下の効果を得ることができる。
(1)CPU12は、データ格納用のROM14に格納されているデータの読み込みを開始する場合、デバイスドライバ21から提供されるページ構成情報22と、データ格納用のROM14に格納されているページ構成情報23とを比較する。CPU12は、これらページ構成情報22,23が不一致であるとき、データ格納用のROM14のデータ構成をデバイスドライバ21が有するページ構成情報22に従ったデータ構成に自動更新する。
このため、デバイスドライバ21のバージョンアップに伴いデバイスドライバ21が有するページ構成情報22が変更された場合であれ、CPU12は、デバイスドライバ21のバージョンアップが行われる前と同じように、データ格納用のROM14に対してデータを読み書きすることができる。また、データ格納用のROM14におけるデータ構成を変更するために、専用の書き込みツールをマイクロコンピュータ11に接続したり、当該書き込みツールを操作したりする手間がない。このため、データ格納用のROM14に格納されているデータの保全を気にすることなく、デバイスドライバ21のバージョンアップを実施することができる。したがって、デバイスドライバ21のバージョンアップに簡単に対応することができる。
<第2の実施の形態>
つぎに、データ処理装置の第2の実施の形態を説明する。
第1の実施の形態では、データ格納用のROM14の複数のブロックBのいずれか一のブロックB(たとえば先頭のブロックB0)にページ構成情報23を格納したが、各ブロックBにページ構成情報23を格納してもよい。ただし、この場合であれ、ページ構成情報23は、各ブロックBにおける先頭ページであるページP0に格納する。
つぎに、データ処理装置の第2の実施の形態を説明する。
第1の実施の形態では、データ格納用のROM14の複数のブロックBのいずれか一のブロックB(たとえば先頭のブロックB0)にページ構成情報23を格納したが、各ブロックBにページ構成情報23を格納してもよい。ただし、この場合であれ、ページ構成情報23は、各ブロックBにおける先頭ページであるページP0に格納する。
この構成を採用する場合、つぎの利点がある。
すなわち、第1の実施の形態のようにページ構成情報23を一のブロックBにのみ格納する場合、その時々のデータの読み出し対象となるブロックBが、ページ構成情報23が格納された特定のブロックBと異なるとき、読み出し対象のブロックBにアクセスする前に、ページ構成情報23が格納された特定のブロックBにアクセスする必要がある。この点、ページ構成情報23を各ブロックBに格納しておくことにより、CPU12はその時々のデータの読み出し対象となるブロックBにそのままアクセスすればよい。このため、データをより迅速に読み出すことが可能となる。
すなわち、第1の実施の形態のようにページ構成情報23を一のブロックBにのみ格納する場合、その時々のデータの読み出し対象となるブロックBが、ページ構成情報23が格納された特定のブロックBと異なるとき、読み出し対象のブロックBにアクセスする前に、ページ構成情報23が格納された特定のブロックBにアクセスする必要がある。この点、ページ構成情報23を各ブロックBに格納しておくことにより、CPU12はその時々のデータの読み出し対象となるブロックBにそのままアクセスすればよい。このため、データをより迅速に読み出すことが可能となる。
また、この構成を採用する場合、データ格納用のROM14におけるデータ構成の更新処理としては、2つの更新処理パターンが考えられる。第1の更新処理パターンおよび第2の更新処理パターンのいずれの更新処理パターンを採用する場合であれ、ページ構成情報22の変更を伴うデバイスドライバ21のバージョンアップに対して、データ格納用のROM14を簡単に対応させることができる。
<第1の更新処理パターン>
第1の更新処理パターンは、つぎの通りである。すなわち、CPU12は、今回の読み出し対象である特定のブロックBのページ構成情報23と、デバイスドライバ21から提供されるページ構成情報22とが異なるとき(図3:ステップS103でNO)、当該特定のブロックBを含むすべてのブロックBのデータ構成を、デバイスドライバ21から提供されるページ構成情報22に従って更新する(図3:ステップS104)。
第1の更新処理パターンは、つぎの通りである。すなわち、CPU12は、今回の読み出し対象である特定のブロックBのページ構成情報23と、デバイスドライバ21から提供されるページ構成情報22とが異なるとき(図3:ステップS103でNO)、当該特定のブロックBを含むすべてのブロックBのデータ構成を、デバイスドライバ21から提供されるページ構成情報22に従って更新する(図3:ステップS104)。
この第1の更新処理パターンによれば、データ格納用のROM14のデータ構成の更新は1度で完了する。
<第2の更新処理パターン>
第2の更新処理パターンはつぎの通りである。すなわち、CPU12は、今回の読み出し対象である特定のブロックBに格納されているページ構成情報23と、デバイスドライバ21から提供されるページ構成情報22とが異なるとき(図3のステップS103でNO)、今回の読み出し対象である特定のブロックBのデータ構成のみを、デバイスドライバ21から提供されるページ構成情報22に従ったデータ構成に更新する(図3のステップS104)。CPU12は、データの読み出し対象となるブロックBが変わるたびに、同様の更新処理を実行する。
<第2の更新処理パターン>
第2の更新処理パターンはつぎの通りである。すなわち、CPU12は、今回の読み出し対象である特定のブロックBに格納されているページ構成情報23と、デバイスドライバ21から提供されるページ構成情報22とが異なるとき(図3のステップS103でNO)、今回の読み出し対象である特定のブロックBのデータ構成のみを、デバイスドライバ21から提供されるページ構成情報22に従ったデータ構成に更新する(図3のステップS104)。CPU12は、データの読み出し対象となるブロックBが変わるたびに、同様の更新処理を実行する。
この第2の更新処理パターンによれば、データの読み出しが行われるたびにブロックB毎にデータ構成の更新が繰り返され、やがてすべてのブロックBが更新される。
<他の実施の形態>
なお、第1および第2の実施の形態は、つぎのように変更して実施してもよい。
<他の実施の形態>
なお、第1および第2の実施の形態は、つぎのように変更して実施してもよい。
・プログラム格納用のROM13としては、NOR型のフラッシュメモリに代えて、たとえばEEPROM(electrically erasable and programmable read-only memory)を採用してもよい。このEEPROMも不揮発性メモリの一種であって、電気的にデータを書き換えることができる。また、プログラム格納用のROM13として、NAND型のフラッシュメモリを採用してもよい。
11…マイクロコンピュータ(データ処理装置)、12…CPU(制御回路)、13…プログラム格納用のROM(第2の不揮発性メモリ)、14…データ格納用のROM(第1の不揮発性メモリ)、21…デバイスドライバ、22,23…ページ構成情報(データ構成情報)、24…RAM(外部記憶領域)、B…ブロック、P…ページ(特定の読み書き単位)、P0…ページ(特定領域、先頭領域)。
Claims (5)
- 特定の読み書き単位でデータの読み書きが行われるとともに複数の前記読み書き単位を含むブロック単位でデータの消去が行われる第1の不揮発性メモリと、
前記第1の不揮発性メモリの読み書き動作を制御するためのプログラムであって前記第1の不揮発性メモリのデータ構成を規定するデータ構成情報を有するデバイスドライバが格納された第2の不揮発性メモリと、
前記デバイスドライバの実行を通じて提供される前記データ構成情報に従って前記第1の不揮発性メモリに対してデータを読み書きする制御回路と、を備え、
前記第1の不揮発性メモリの特定領域にも前記データ構成情報が格納されていて、
前記制御回路は、前記第1の不揮発性メモリに格納されているデータを読み出す場合、前記特定領域に格納されているデータ構成情報と前記デバイスドライバから提供されるデータ構成情報とが異なるとき、
前記第1の不揮発性メモリのデータ構成を前記デバイスドライバから提供されるデータ構成情報に従って更新するデータ処理装置。 - 請求項1に記載のデータ処理装置において、
前記特定領域は、複数のブロックのいずれか一に設定されていて、
前記制御回路は、前記第1の不揮発性メモリに格納されているデータを読み出すとき、はじめに、前記特定領域に格納されているデータ構成情報を読み出し、その読み出される前記特定領域のデータ構成情報と、前記デバイスドライバから提供されるデータ構成情報とを比較するデータ処理装置。 - 請求項1に記載のデータ処理装置において、
前記特定領域は、複数のブロックのそれぞれに設定されていて、
前記制御回路は、データの読み出し対象となるブロックに格納されているデータを読み出すとき、はじめに、前記データの読み出し対象となるブロックの前記特定領域に格納されているデータ構成情報を読み出し、その読み出される前記特定領域のデータ構成情報と、前記デバイスドライバから提供されるデータ構成情報とを比較するデータ処理装置。 - 請求項1〜請求項3のうちいずれか一項に記載のデータ処理装置において、
前記第1の不揮発性メモリは、ブロック単位でデータを先頭から順番に読み書きするシーケンシャルアクセス方式のフラッシュメモリであって、
前記特定領域は、ブロックの先頭領域に設定されているデータ処理装置。 - 請求項1〜請求項4のうちいずれか一項に記載のデータ処理装置において、
前記制御回路は、前記第1の不揮発性メモリのデータ構成を更新する処理として、
前記第1の不揮発性メモリのデータを外部の記憶領域に待避させる処理と、
前記第1の不揮発性メモリのデータを一旦消去する処理と、
前記デバイスドライバから提供されるデータ構成情報を前記第1の不揮発性メモリの特定領域に格納する処理と、
前記外部の記憶領域に待避させてあるデータを前記デバイスドライバから提供されるデータ構成情報に従って前記第1の不揮発性メモリに格納する処理と、を実行するデータ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017055842A JP2018160018A (ja) | 2017-03-22 | 2017-03-22 | データ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017055842A JP2018160018A (ja) | 2017-03-22 | 2017-03-22 | データ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018160018A true JP2018160018A (ja) | 2018-10-11 |
Family
ID=63796671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017055842A Pending JP2018160018A (ja) | 2017-03-22 | 2017-03-22 | データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018160018A (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10177797A (ja) * | 1996-12-17 | 1998-06-30 | Toshiba Corp | 半導体記憶装置 |
JP5183625B2 (ja) * | 2006-05-12 | 2013-04-17 | アップル インコーポレイテッド | 適応能力を有するメモリ素子 |
-
2017
- 2017-03-22 JP JP2017055842A patent/JP2018160018A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10177797A (ja) * | 1996-12-17 | 1998-06-30 | Toshiba Corp | 半導体記憶装置 |
JP5183625B2 (ja) * | 2006-05-12 | 2013-04-17 | アップル インコーポレイテッド | 適応能力を有するメモリ素子 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108572791B (zh) | 数据储存装置及其数据维护方法 | |
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
CN110908925B (zh) | 高效能垃圾收集方法以及数据存储装置及其控制器 | |
US9058256B2 (en) | Data writing method, memory controller and memory storage apparatus | |
KR20040014971A (ko) | 비휘발성 메모리의 제어방법 | |
JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4488048B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
TWI805445B (zh) | 借助額外實體位址資訊來進行記憶體裝置之存取控制的方法、記憶體裝置以及記憶體裝置的控制器 | |
JP4826232B2 (ja) | 情報処理装置およびブートプログラムの書き換え方法 | |
JP2018160018A (ja) | データ処理装置 | |
JP2008009614A (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
JP4910402B2 (ja) | 不揮発性メモリの書き換え装置及び書き換え方法 | |
JP6040895B2 (ja) | マイクロコンピュータ及び不揮発性メモリのブロック管理方法 | |
CN109656835B (zh) | 非易失性存储器的数据改写方法以及半导体装置 | |
US9465730B2 (en) | Flash memory device | |
JP4952742B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5521437B2 (ja) | 携帯端末装置、ソフトウェア更新方法及びプログラム | |
JP2009276883A (ja) | 半導体補助記憶装置 | |
US6898680B2 (en) | Minimization of overhead of non-volatile memory operation | |
JP5787095B2 (ja) | 不揮発性メモリへのデータ記憶方法 | |
JP2004310268A (ja) | フラッシュメモリ内蔵の半導体装置、フラッシュメモリの制御方法およびそのプログラム | |
JP2014026511A (ja) | 不揮発性半導体記憶装置の書き込み制御方法およびマイクロコンピュータ | |
JP2009211152A (ja) | 情報処理装置、メモリシステムおよびその制御方法 | |
JP5707695B2 (ja) | フラッシュディスク装置 | |
JP2016071447A (ja) | 不揮発性記憶装置及び不揮発性記憶装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200218 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20201111 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201215 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20210615 |