(57)【要約】【課題】書き換えによって生じるセルの劣化を遅くすること。【解決手段】制御装置１００は、値が異なる複数のデータについて、対象セクタがメモリ内の第１セクタ１０１−１である時に第１セクタ１０１−１の記憶内容に含まれる数を導出する。制御装置１００は、対象セクタが第１セクタ１０１−１から第２セクタ１０１−２に切り替わると、導出された数が多いデータほど、「０」のビットが少ないビット列が対応付けられた文字変換テーブル１１０を生成する。制御装置１００は、文字変換テーブル１１０を第２セクタ１０１−２に記憶し、第１セクタ１０１−１の記憶内容を文字変換テーブル１１０によりビット列に変換して第２セクタ１０１−２に書き込む。制御装置１００は、第２セクタ１０１−２に対する書き込み対象の各データを、文字変換テーブル１１０によりビット列に変換して第２セクタ１０１−２に書き込む。【選択図】図１
2014215986.tif 000002
【特許請求の範囲】
【請求項１】
特定のセクタへの書き込みの集中を防止するメモリ制御方法であるウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わるメモリに対する書き込みおよび読み出しを制御する制御装置が、
値が異なる複数のデータについて、前記対象セクタが前記メモリ内の第１セクタである時に前記第１セクタの記憶内容に含まれる前記複数のデータの各々の個数である第１の個数を導出し、
前記対象セクタが前記第１セクタから第２セクタに切り替わると、前記複数のデータの各々に異なるビット列が対応付けられたテーブルであって、前記第１の個数が多いデータほど、特定の値のビットが少ないビット列が対応付けられたテーブルを生成し、
生成した前記テーブルを前記第２セクタに記憶させ、
前記第１セクタの記憶内容を、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込み、
前記第２セクタに対する書き込み対象の各データを、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む、
処理を実行することを特徴とする制御方法。
【請求項２】
前記特定の値は、前記メモリ内のセルの浮遊ゲートが電子を保持することにより表される値であることを特徴とする請求項１に記載の制御方法。
【請求項３】
前記異なるビット列の個数は前記複数のデータの個数と同一であり、
前記テーブルを生成する処理では、
前記第１の個数に基づく前記複数のデータの順序と、前記異なるビット列が含む前記特定の値の個数である第２の個数に基づく前記異なるビット列の順序を示す情報と、に基づいて前記テーブルを生成することを特徴とする請求項１または２に記載の制御方法。
【請求項４】
前記制御装置は、
前記テーブルを生成する処理を行う都度、前記ビット列の各々の相対的な位置が異なる前記テーブルを生成する処理を実行することを特徴とする請求項３に記載の制御方法。
【請求項５】
前記制御装置は、
前記テーブルを生成する処理を行う都度、前記ビット列の各々について前記ビット列の一端のビットを他端に移動させた前記テーブルを生成する処理を実行することを特徴とする請求項３または４に記載の制御方法。
【請求項６】
前記第１セクタの記憶内容を前記ビット列に変換して前記第２セクタに書き込む処理では、
前記記憶内容に含まれる複数の記憶データの各々を前記テーブルに基づいて前記ビット列に変換し、前記複数の記憶データの先頭の記憶データを変換したビット列が、前記複数の記憶データの各々を変換した複数のビット列の中で最後尾に記憶されるように前記第２セクタに書き込むことを特徴とする請求項１〜５のいずれか一つに記載の制御方法。
【請求項７】
前記制御装置は、
前記第２セクタから読み出し対象のビット列を読み出し、読み出したビット列を記憶した前記テーブルに基づいて前記複数のデータのいずれかに変換する処理を実行することを特徴とする請求項１〜６のいずれか一つに記載の制御方法。
【請求項８】
特定のセクタへの書き込みの集中を防止するメモリ制御方法であるウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わるメモリに対する書き込みおよび読み出しを制御する制御装置に、
値が異なる複数のデータについて、前記対象セクタが前記メモリ内の第１セクタである時に前記第１セクタの記憶内容に含まれる前記複数のデータの各々の個数を導出し、
前記対象セクタが前記第１セクタから第２セクタに切り替わると、前記複数のデータの各々に異なるビット列が対応付けられたテーブルであって、導出した前記個数が多いデータほど、特定の値のビットが少ないビット列が対応付けられたテーブルを生成し、
生成した前記テーブルを前記第２セクタに記憶させ、
前記第１セクタの記憶内容を、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込み、
前記第２セクタに対する書き込み対象の各データを、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む、
処理をコンピュータに実行させることを特徴とする制御プログラム。
【請求項９】
特定のセクタへの書き込みの集中を防止するメモリ制御方法であるウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わるメモリに対する書き込みおよび読み出しを制御する制御装置であって、
値が異なる複数のデータについて、前記対象セクタが前記メモリ内の第１セクタである時に前記第１セクタの記憶内容に含まれる前記複数のデータの各々の個数を導出する導出部と、
前記対象セクタが前記第１セクタから第２セクタに切り替わると、前記複数のデータの各々に異なるビット列が対応付けられたテーブルであって、前記導出部が導出した前記個数が多いデータほど、特定の値のビットが少ないビット列が対応付けられたテーブルを生成する生成部と、
前記生成部が生成した前記テーブルを前記第２セクタに記憶させる格納部と、
前記第１セクタの記憶内容を、前記生成部が生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む移行部と、
前記第２セクタに対する書き込み対象の各データを、前記生成部が生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む変換部と、
を有することを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御方法、制御プログラム、および制御装置に関する。
【背景技術】
【０００２】
フラッシュメモリへのデータの書き込み動作は、書き込み対象のセルを一旦すべて「１」にした後、書き込みデータ内の「０」に対応するセルを「１」から「０」に書き換えることによって行われる。「０」が書き込まれることによってセルが劣化するため、書き込みの回数に限度がある。
【０００３】
そこで、従来では、セクタ単位で書き込みと読み出しが可能なフラッシュメモリにおいて、特定のセクタに書き込みが集中しないように制御する技術が知られている（たとえば、下記特許文献１，２参照。）。
【０００４】
また、書き込むデータに含まれる「０」のビット数が多ければ書き込むデータをビット反転してフラッシュメモリに書き込むことにより、「０」の書き込み回数を減らす技術が知られている（たとえば、下記特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１１０３１４号公報
【特許文献２】特開平８−１６４８２号公報
【特許文献３】特表２０１１−５０８３５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、書き込むデータによっては「０」の書き込み回数を十分に減らすことができず、セルの劣化を遅くすることができないという問題点がある。
【０００７】
１つの側面では、本発明は、セルの劣化を遅くすることができる制御方法、制御プログラム、および制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、特定のセクタへの書き込みの集中を防止するメモリ制御方法であるウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わるメモリに対する書き込みおよび読み出しを制御し、値が異なる複数のデータについて、前記対象セクタが前記メモリ内の第１セクタである時に前記第１セクタの記憶内容に含まれる前記複数のデータの各々の個数である第１の個数を導出し、前記対象セクタが前記第１セクタから第２セクタに切り替わると、前記複数のデータの各々に異なるビット列が対応付けられたテーブルであって、前記第１の個数が多いデータほど、特定の値のビットが少ないビット列が対応付けられたテーブルを生成し、生成した前記テーブルを前記第２セクタに記憶させ、前記第１セクタの記憶内容を、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込み、前記第２セクタに対する書き込み対象の各データを、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む制御方法、制御プログラム、および制御装置が提案される。
【発明の効果】
【０００９】
本発明の一態様によれば、セルの劣化を遅くすることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の制御装置による一動作例を示す説明図である。
【図２】図２は、フラッシュメモリの書き込みと消去の仕組みを示す説明図である。
【図３】図３は、フラッシュメモリ内の記憶例を示す説明図である。
【図４】図４は、文字コード表を示す説明図である。
【図５】図５は、制御装置を含むシステム例を示すブロック図である。
【図６】図６は、制御装置の機能的構成例を示すブロック図である。
【図７】図７は、文字変換テーブルの作成例を示す説明図である。
【図８】図８は、書き込み時の変換例を示す説明図である。
【図９】図９は、読み出し時の変換例を示す説明図である。
【図１０】図１０は、レコードローテーションおよびビットローテーションを示す説明図である。
【図１１】図１１は、実施例１にかかる制御装置による制御処理手順例を示すフローチャート（その１）である。
【図１２】図１２は、実施例１にかかる制御装置による制御処理手順例を示すフローチャート（その２）である。
【図１３】図１３は、移行データのローテーションを示す説明図である。
【図１４】図１４は、実施例２にかかる制御装置による制御処理手順例を示すフローチャートである。
【図１５】図１５は、制御装置による書き込み処理手順の一例を示すフローチャートである。
【図１６】図１６は、制御装置による読み出し処理手順の一例を示すフローチャートである。
【図１７Ａ】図１７Ａは、本実施の形態と文字データの反転との比較例を示す説明図（その１）である。
【図１７Ｂ】図１７Ｂは、本実施の形態と文字データの反転との比較例を示す説明図（その２）である。
【図１７Ｃ】図１７Ｃは、本実施の形態と文字データの反転との比較例を示す説明図（その３）である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明にかかる制御方法、制御プログラム、および制御装置の実施の形態を詳細に説明する。
【００１２】
図１は、本発明の制御装置による一動作例を示す説明図である。制御装置１００は、メモリに対する書き込みを制御する。ここで、メモリは、たとえば、フラッシュメモリであり、メモリはデータを格納する領域が複数のセクタに区切られてある。メモリでは、ウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わる。ウェアレベリングとは、特定のセクタに書き込みが集中しないように制御する技術である。制御装置１００は、たとえば、マイコンであればＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であったり、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）であればＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であったり、またはＣＰＵからの書き込み要求や読み出し要求を制御する装置であってもよい。
【００１３】
制御装置１００は、値が異なる複数のデータについて、対象セクタがメモリ内の第１セクタ１０１−１である時に第１セクタ１０１−１の記憶内容に含まれる数を導出する。複数のデータは、複数種類の文字データであってもよいし、文字データの組み合わせであってもよい。図１の例では、値が異なる複数のデータは、「ａ」、「ｂ」、「ｃ」、「ｄ」である。実際には、複数のデータは、「ａ」、「ｂ」、「ｃ」、「ｄ」を符号化したデータであるが、理解の容易化のため、各文字をデータとして扱う。制御装置１００は、対象セクタが第１セクタ１０１−１から第２セクタ１０１−２に切り替わると、複数のデータの各々に異なるビット列が対応付けられたテーブルを生成する。テーブルでは、導出された数が多いデータほど、特定の値のビットが少ないビット列が対応付けられる。テーブルを文字変換テーブル１１０と称する。ここで、特定の値とは、「０」である。フラッシュメモリのセルでは、「０」の記憶状態がセルに含まれる浮遊ゲートに電子が保持される状態であり、「１」の記憶状態がセルに含まれる浮遊ゲートに電子が保持されない状態である。
【００１４】
制御装置１００は、生成した文字変換テーブル１１０を第２セクタ１０１−２に記憶する。そして、制御装置１００は、第１セクタ１０１−１の記憶内容を、生成した文字変換テーブル１１０に基づいてビット列に変換して第２セクタ１０１−２に書き込むことにより、第１セクタ１０１−１の記憶内容を第２セクタ１０１−２に移行させる。ここで移行される第１セクタ１０１−１の記憶内容は有効データだけでよく、有効データであるか否かは、各データが有するフラグによって判断してもよい。図１の例では、第１セクタ１０１−１の記憶内容の先頭の記憶データは「ａｂｃｄ」であり、この記憶データの変換後のデータは「１１１００１００」であり、この変換後のデータが第２セクタ１０１−２に書き込まれる。
【００１５】
制御装置１００は、第２セクタ１０１−２に対する書き込み対象の各データを、生成した文字変換テーブル１１０に基づいてビット列に変換して第２セクタ１０１−２に書き込む。たとえば、書き込み対象のデータは「ａｂｃ」である。制御装置１００は、文字変換テーブル１１０に基づいて、データ「ａ」を変換文字データ「１１」に変換し、データ「ｂ」を変換文字データ「１０」に変換し、データ「ｃ」を変換文字データ「０１」に変換する。そして、制御装置１００は、変換後のデータ「１１１００１」を第２セクタ１０１−２に書き込む。
【００１６】
これにより、書き込まれる回数が多いデータほど「０」が少ないデータに変換されるため、「０」の書き込みの回数を低減させることができ、セルの劣化を遅らせることができる。
【００１７】
図２は、フラッシュメモリの書き込みと消去の仕組みを示す説明図である。書き込み時は制御ゲートに高電圧を印加する。たとえば、高電圧とは、２０［Ｖ］程度である。制御ゲートに高電圧が印加されると、ソース領域とドレイン領域の電極間を流れる電子が、絶縁体であるシリコン酸化膜によって形成された浮遊ゲートの内部に引き寄せられる。引き寄せられた状態が「０」である。
【００１８】
消去時はシリコン基板側から高電圧を印加すると、浮遊ゲート内の電子が放出される。放出された状態が「１」である。セルの劣化は、絶縁体からの電子の通過により引き起こされる。そのため、浮遊ゲートに電子を移動させないほどセルの劣化を遅らせることになる。すなわち、「０」の書込み回数を減らすことによって、セルの劣化を遅らせることになる。
【００１９】
フラッシュメモリの書き込み動作では、すべてのセルが「１」の値に初期化された状態で、書き込み対象のデータに「０」があれば、「１」から「０」の値に変更する。このように、記憶されたデータを新しい値に更新するためには、該当位置のすべてのセルが「１」の値に初期化された後に、再び、書き込み動作が行われる。そのため、同一のセルに対して「０」の書き込みが多いと、セルの劣化が早くなる。
【００２０】
図３は、フラッシュメモリ内の記憶例を示す説明図である。たとえば、フラッシュメモリ３００内の記憶領域は、セクタ１〜セクタｎまでの複数のセクタと、プログラムデータを記憶する領域３０１と、に区別される。たとえば、複数のセクタには、プロセッサからの書き込みのデータが記憶される。本実施の形態では、データの他に、文字変換テーブル１１０が記憶される。領域３０１には、制御プログラム、アプリケーションプログラム、起動プログラムなどのＣＰＵが実行するプログラムや予め用意可能な変更されないテーブルなどが記憶される。複数のセクタは、ウェアレベリングによって書き込み読み出しの対象セクタとして順に切り替わる。
【００２１】
図４は、文字コード表を示す説明図である。文字コード表３１０は、複数種類の文字データと同一数の異なるビット列の「０」を含む数に基づく順序を示す情報である。より具体的には、文字コード表３１０は、複数種類の文字データと同一数の異なるビット列の各々と、「０」を含む数に基づく順序と、が対応付けられた情報である。文字コード表３１０は、複数種類の文字データと同一数のビット列を「０」のビットが少ない順に並べてある。ここでは、ビット列を変換文字データと称する。文字コード表３１０については、フラッシュメモリ３００内の領域３０１に記憶される。ここでは、複数の変換文字データは、固定ビット幅とし、図４の例では１バイトである。
【００２２】
図５は、制御装置を含むシステム例を示すブロック図である。図５の例では、システム５００をマイコンとし、制御装置１００は、マイコン内に含まれるＭＰＵ１００とする。システム５００は、ＭＰＵ１００と、ＲＡＭ５０１と、フラッシュメモリ３００と、を有する。ＭＰＵ１００は、システム５００の全体を制御する。ＲＡＭ５０１は、ＭＰＵ１００のワークエリアとして使用される。フラッシュメモリ３００は、上述したように、プログラムやデータなどを記憶する。
【００２３】
また、システム５００がＰＣなどの場合、制御装置１００はＣＰＵであり、システム５００は、インターネットなどに接続可能なＩ／Ｆ、ディスプレイなどの出力装置、キーボードやマウスなどの入力装置などを有していてもよい。
【００２４】
図６は、制御装置の機能的構成例を示すブロック図である。制御装置１００は、導出部６０１と、生成部６０２と、格納部６０３と、移行部６０４と、変換部６０５と、を有する。各部が示す処理が、フラッシュメモリ３００内の領域３０１に記憶された制御プログラム内にコーディングされてある。そして、ＭＰＵ１００が、制御プログラムをフラッシュメモリ３００から読み出して制御プログラムにコーディングされた処理を実行することにより、各部の機能が実現される。
【００２５】
また、各部は、論理積回路であるＡＮＤ、否定論理回路であるＩＮＶＥＲＴＥＲ、論理和回路であるＯＲや、ラッチ回路であるＦＦ（Ｆｌｉｐ  Ｆｌｏｐ）などの素子によって形成されてもよい。また、各部は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によって実現されてもよい。具体的には、たとえば、上述した各部の機能をハードウェア記述言語などによってネットリストに機能定義し、そのネットリストを論理合成してＡＳＩＣやＰＬＤに与えることにより、各部を実現してもよい。
【００２６】
まず、導出部６０１は、複数のデータの各々について、対象セクタであるフラッシュメモリ３００内の第１セクタ１０１−１の記憶内容に含まれる数を導出する。複数のデータがどのようなデータであるかを判別するための情報は、フラッシュメモリ３００内の領域３０１などに記憶されていてもよい。導出するタイミングは、たとえば、対象セクタが切り替わる都度であってもよい。または、フラッシュメモリ３００などの使用方法が限定されていると、フラッシュメモリ３００への書き込み内容に大きな変化がないため、各文字データが記憶された数に大きな変化が発生しない可能性がある。そのため、導出するタイミングは、書き込み先が複数のセクタのうちの特定のセクタに切り替わるタイミングであってもよいし、指定されたタイミングであってもよい。
【００２７】
また、本実施の形態では、書き込まれるデータを文字に限定し、複数のデータとして複数種類の文字を例に挙げて説明する。複数種類の文字とは、たとえば、「ａ」、「ｂ」、「ｃ」などのアルファベット文字、やスペース文字などである。
【００２８】
図７は、文字変換テーブルの作成例を示す説明図である。ここでは、対象セクタが第１セクタ１０１−１から第２セクタ１０１−２へ切り替わる場合を例に挙げる。第１セクタ１０１−１には、文字変換テーブル１１０と、文字変換テーブル１１０に基づいて書き込み対象の文字データが変換された変換文字データと、が記憶されてある。そして、導出部６０１は、各変換文字データを読み出す。導出部６０１は、読み出した各変換文字データを文字変換テーブル１１０に基づいて文字データに復元する。
【００２９】
そして、（１）導出部６０１は、複数種類の文字の各々について、復元後の文字データが示す文字に基づいて、第１セクタ１０１−１内の記憶内容に含まれる数をカウントする。ここでは、記憶内容に含まれる数を出現回数と称する。出現回数情報は、出現回数のカウント結果を示す。理解の容易化のために、文字データと、文字と、を対応付けた出現回数情報を示す。出現回数は、空白文字が最も多く、つぎに「ｅ」、「ａ」、「ｒ」、「ｔ」の順に多い。導出部６０１は、出現回数情報内の文字データを出現回数が多い順にソートする。
【００３０】
そして、生成部６０２は、複数種類の文字の各々に異なる変換文字データが対応付けられた文字変換テーブル１１０を生成する。文字変換テーブル１１０は、複数種類の文字の中で導出した出現回数が多い文字ほど、「０」のビットが少ない変換文字データが対応付けられる。
【００３１】
具体的には、（２）生成部６０２は、フラッシュメモリ３００内に記憶された文字コード表３１０を取得する。つぎに、（３）生成部６０２は、出現回数が多い順に並べられた出現回数情報内の各文字データと、０のビットが少ない順に並べられた文字コード表３１０に含まれる変換文字データと、をそれぞれの並び順に対応付けることにより、文字変換テーブル１１０を生成する。これにより、生成部６０２は、出現回数が多い文字データほど、「０」のビットが少ない変換文字データを対応付けることができる。
【００３２】
そして、格納部６０３は、生成された文字変換テーブル１１０をフラッシュメモリ３００内の対象セクタに記憶させる。
【００３３】
たとえば、文字変換テーブル１１０は、元文字を示す文字データと、対応付けられる変換文字データと、が対応付けられる。各文字について２[バイト]のデータ領域が使用され、２５５文字であれば、０．５［ｋバイト］が文字変換テーブル１１０に使用される。１セクタが８[Ｋバイト]とすると、１セクタのうちの６［％］が文字変換テーブル１１０によって使用される。
【００３４】
さらに、移行部６０４は、切り替え前の第１セクタ１０１−１の記憶内容を、切り替え後に対象セクタとなる第２セクタ１０１−２に記憶した文字変換テーブル１１０によって変換文字データに変換して第２セクタ１０１−２に書き込む。また、第１セクタ１０１−１に記憶された記憶内容に含まれる複数の記憶データのうちの有効データだけが切り替え後の対象セクタに書き込まれる。上述したように、有効データか無効データかを特定するために、各記憶データはフラグを有していてもよい。
【００３５】
また、たとえば、第１セクタ１０１−１の記憶データが第１セクタ１０１−１の文字変換テーブル１１０−１によって変換されたデータである場合、移行部６０４は、記憶データを第１セクタ１０１−１の文字変換テーブル１１０−１によって文字データに変換する。つぎに、移行部６０４は、第２セクタ１０１−２に記憶した文字変換テーブル１１０−２に基づいて変換文字データに変換して第２セクタ１０１−２に書き込む。また、ここで、書き込みと読み出しについて簡単に説明する。
【００３６】
図８は、書き込み時の変換例を示す説明図である。変換部６０５は、書き込みデータを文字データのサイズごとに分割する。そして、変換部６０５は、分割した文字データを文字変換テーブル１１０に基づいて変換して対象セクタに書き込む。図８の例では、「ａｂｃｄ  ＡＢＣＤ」をフラッシュメモリ３００に書き込む。「ａｂｃｄ  ＡＢＣＤ」を示す書き込みデータは「０ｘ６１  ０ｘ６２  ０ｘ６３  ０ｘ６４  ０ｘ２０  ０ｘ４１  ０ｘ４２  ０ｘ４３  ０ｘ４４」である。たとえば、書き込みデータに含まれる文字データ「０ｘ６１」は文字変換テーブル１１０によって「０ｘＦＤ」に変換される。たとえば、「０ｘＦＤ  ０ｘＦ１  ０ｘＦ２  ０ｘＦ３  ０ｘＦＦ  ０ｘＥ１  ０ｘＥ２  ０ｘＥ３  ０ｘＥ４」がフラッシュメモリ３００の対象セクタに書き込まれる。
【００３７】
図９は、読み出し時の変換例を示す説明図である。変換部６０５は、読み出し先のデータを読み出す。変換部６０５は、読み出したデータを文字データのサイズごとに分割する。ここでは、制御装置１００は、読み出したデータを１バイト単位で分割する。制御装置１００は、分割したデータを文字変換テーブル１１０に基づいて復元する。図９の例では、読み出しデータ「０ｘＦＤ  ０ｘＦ１  ０ｘＦ２  ０ｘＦ３  ０ｘＦＦ  ０ｘＥ１  ０ｘＥ２  ０ｘＥ３  ０ｘＥ４」が文字ごとに分割される。「０ｘＦＤ」は「０ｘ６１」に変換される。「０ｘ６１」は「ａ」を示す文字データである。復元されたデータは、「０ｘ６１  ０ｘ６２  ０ｘ６３  ０ｘ６４  ０ｘ２０  ０ｘ４１  ０ｘ４２  ０ｘ４３  ０ｘ４４」である。
【００３８】
また、文字の出現回数の変動が少ない場合、フラッシュメモリ３００内の同一の領域に同一のレコードが何度も記憶される可能性があり、同一のセルだけに何度も０書き込みが行われる可能性がある。そこで、実施例１では、文字変換テーブル１１０のレコードの位置を変更したテーブルを生成する。また、実施例１では、変換文字データの一端のビットを他端に移動させたテーブルを生成する。これにより、文字変換テーブル１１０の記憶によって特定のメモリ素子のみが劣化することを防ぐ。また、文字の出現回数の変動が少なく、有効データに変化が少ないと、フラッシュメモリ３００内の同一の領域に同一の有効データが何度も記憶される可能性がある。そこで、実施例２では、切り替え前の対象セクタ内の有効データのうちの先頭の有効データが切り替え後の対象セクタ内の有効データのうちの最後尾に記憶されるように、切り替え後の対象セクタに書き込む。これにより、移行データによって特定のメモリ素子のみが劣化することを防ぐ。
【００３９】
ただし、実施例１および２では、出現回数に基づく文字データの順序と、文字コード表３１０と、に基づいて文字変換テーブル１１０を生成することを前提とする。また、実施例１および２では、全変換文字データのビット幅がすべて同一とする。
【００４０】
（実施例１）
実施例１では、文字変換テーブル１１０のレコードの位置を変更したテーブルであって、変換文字データの一端のビットを他端に移動させたテーブルを生成する。これにより、文字変換テーブル１１０をフラッシュメモリ３００に書き込むことによって特定のメモリ素子のみが劣化することを防ぐ。
【００４１】
図１０は、レコードローテーションおよびビットローテーションを示す説明図である。生成部６０２は、たとえば、文字変換テーブル１１０を生成する都度、各変換文字データの文字変換テーブル１１０における相対的位置を変更する。図１０では、第１セクタ１０１−１から第２セクタ１０１−２に対象セクタが切り替わる場合において、左側には、第１セクタ１０１−１に記憶された文字変換テーブル１１０−１を示す。さらに、図１０では、右側には、あらたに第２セクタ１０１−２に対して生成される文字変換テーブル１１０−２を示す。ここで、第１セクタ１０１−１の文字変換テーブル１１０−１を第１文字変換テーブル１１０−１と称し、第２セクタ１０１−２の文字変換テーブル１１０−２を第２文字変換テーブル１１０−２と称する。
【００４２】
たとえば、生成部６０２は、第１文字変換テーブル１１０−１内の変換文字データ「０ｘＦＦ」を含むレコードの相対的な位置を特定する。そして、生成部６０２は、特定した位置を基準にして、変換文字データの各々の位置を、第１文字変換テーブル１１０−１における位置と異なる位置に変更された第２文字変換テーブル１１０−２を生成する。たとえば、生成部６０２は、先頭のレコードを最後尾に移動させることにより、各変換文字データの相対的な位置を変更する。この変更をレコードローテーションと称する。そのため、変換文字データ「０ｘ００」の位置が２５５番目であったが、２５４番目の位置になる。
【００４３】
文字変換テーブル１１０が生成される都度、変換文字データ「０ｘＦＦ」が同一位置に何度も書き込みされても、その位置のセルの劣化が発生しないが、変換文字データ「０ｘ００」が何度も同一位置に書き込まれると、その位置のセルの劣化が早くなる。したがって、レコードローテーションにより、常時同一位置に同一変換文字データが何度も書き込まれないため、「０」の書き込みが分散され、特定のセルのみが劣化することを防ぐことができる。
【００４４】
また、文字変換テーブル１１０の内容に変更が生じない場合には、レコードローテーションにより、同一位置に同一内容が何度も書き込まれないため、「０」の書き込みが分散され、特定のセルのみが劣化することを防ぐことができる。
【００４５】
また、生成部６０２は、文字変換テーブル１１０を生成する処理を行う都度、変換文字データの各々について変換文字データの一端のビットを他端に移動させた文字変換テーブル１１０を生成する。ここでの移動をビットローテーションと称する。図１０の例では、生成部６０２は、第１文字変換テーブル１１０−１内の変換文字データの左端のビットを右端に移動させ、残余のビットを左ビットシフトした第２文字変換テーブル１１０−２を生成する。これにより、変換文字データ内の「０」の数を変えることなく、「０」の書き込みが行われる位置を変更することができる。これにより、常時同一位置に同一変換文字データを有するレコードが記憶されないため、特定のメモリ素子のみが劣化することを防ぐことができる。
【００４６】
（実施例１にかかる制御装置１００による制御処理手順例）
図１１および図１２は、実施例１にかかる制御装置による制御処理手順例を示すフローチャートである。制御装置１００は、切り替え前の対象セクタから文字変換テーブル１１０を読み出す（ステップＳ１１０１）。制御装置１００は、読み出した文字変換テーブル１１０内の変換文字データ「０ｘＦＦ」の文字変換テーブル１１０における相対的な位置を特定し（ステップＳ１１０２）、読み出していない記憶データがあるか否かを判断する（ステップＳ１１０３）。
【００４７】
読み出していない記憶データがある場合（ステップＳ１１０３：Ｙｅｓ）、制御装置１００は、切り替え前の対象セクタの中で読み出していない記憶データから１つの記憶データを読み出す（ステップＳ１１０４）。制御装置１００は、読み出した記憶データを１バイトごとに文字変換テーブル１１０によって復元し（ステップＳ１１０５）、１バイトごとに復元した文字データの種類を特定する（ステップＳ１１０６）。制御装置１００は、特定した種類の出現回数をカウントアップし（ステップＳ１１０７）、ステップＳ１１０３へ戻る。
【００４８】
読み出していない記憶データがない場合（ステップＳ１１０３：Ｎｏ）、制御装置１００は、複数種類の文字データを出現回数が多い順に並べた出現回数情報を生成し（ステップＳ１１０８）、領域３０１から文字コード表３１０を読み出す（ステップＳ１１０９）。そして、制御装置１００は、出現回数情報の文字データと文字コード表３１０の変換文字データとを先頭から順に組み合わせて文字変換テーブル１１０を生成する（ステップＳ１１１０）。
【００４９】
つぎに、制御装置１００は、変換文字データ「０ｘＦＦ」の相対的な位置を基準にして、文字変換テーブル１１０のレコードの位置を変更するレコードローテーションを行う（ステップＳ１２０１）。制御装置１００は、文字変換テーブル１１０の各変換文字データの左端のビットを右端に移動させるビットローテーションを行う（ステップＳ１２０２）。そして、制御装置１００は、レコードローテーションとビットローテーションを行って生成した文字変換テーブル１１０を、切り替え後の対象セクタの先頭に書き込む（ステップＳ１２０３）。
【００５０】
制御装置１００は、読み出していない記憶データがあるか否かを判断する（ステップＳ１２０４）。読み出していない記憶データがある場合（ステップＳ１２０４：Ｙｅｓ）、制御装置１００は、切り替え前の対象セクタの中で読み出していない記憶データから１つの記憶データを読み出す（ステップＳ１２０５）。制御装置１００は、読み出した記憶データが有効データであるか否かを判断する（ステップＳ１２０６）。有効データでない場合（ステップＳ１２０６：Ｎｏ）、ステップＳ１２０４へ戻る。有効データである場合（ステップＳ１２０６：Ｙｅｓ）、制御装置１００は、切り替え前の対象セクタの文字変換テーブル１１０によって読み出した記憶データを１バイトごとに復元する（ステップＳ１２０７）。
【００５１】
制御装置１００は、復元したデータを切り替え後の対象セクタに記憶した文字変換テーブル１１０によって変換し（ステップＳ１２０８）、変換した変換文字データを切り替え後の対象セクタに書き込み（ステップＳ１２０９）、ステップＳ１２０４へ戻る。読み出していない記憶データがない場合（ステップＳ１２０４：Ｎｏ）、一連の処理を終了する。
【００５２】
（実施例２）
実施例２では、切り替え前の対象セクタ内の有効データのうちの先頭の有効データが切り替え後の対象セクタ内の有効データのうちの最後尾に記憶されるように、切り替え後の対象セクタに書き込む。これにより、移行データによって特定のメモリ素子のみが劣化することを防ぐ。
【００５３】
図１３は、移行データのローテーションを示す説明図である。各文字データの出現回数の変動が少ないと同一の文字変換テーブル１１０が生成され、かつセクタに記憶される有効データに変化が少ないと、フラッシュメモリ３００内の同一の領域に同一の有効データが何度も記憶される可能性がある。
【００５４】
そこで、移行部６０４は、第１セクタ１０１−１の記憶内容に含まれる複数の記憶データの各々を文字変換テーブル１１０に基づいて変換文字データに変換する。そして、移行部６０４は、複数の記憶データの先頭の記憶データを変換した変換文字データが、複数の記憶データの各々を変換した複数の変換文字データの中で最後尾に記憶されるように第２セクタ１０１−２に書き込む。
【００５５】
具体的には、移行部６０４は、第１セクタ１０１−１内の文字変換テーブル１１０以外の記憶内容に含まれる記憶データを順に読み出す。移行部６０４は、読み出した記憶データが有効データか否かを判断する。移行部６０４は、有効データである場合、読み出した記憶データを第１セクタ１０１−１に記憶された第１文字変換テーブル１１０−１に基づいて変換文字データに変換することにより、変換文字データに復元する。そして、移行部６０４は、読み出した記憶データが先頭の有効データであるか否かを判断する。先頭の有効データである場合、移行部６０４は、読み出した記憶データを変換した変換文字データを先頭の有効データとしてＲＡＭ５０１などに一時的に記憶しておく。
【００５６】
つぎに、読み出した記憶データが先頭の有効データでない場合、移行部６０４は、変換した変換文字データを第２セクタ１０１−２内のデータを記憶可能な領域の先頭から順に書き込む。そして、読み出していない記憶データがない場合、移行部６０４は、ＲＡＭ５０１などに先頭の有効データとして記憶しておいた変換文字データを第２セクタ１０１−２に書き込む。これにより、移行される記憶データによって特定のメモリ素子のみが劣化することを防ぐ。
【００５７】
（実施例２にかかる制御装置１００による制御処理手順例）
図１４は、実施例２にかかる制御装置による制御処理手順例を示すフローチャートである。文字変換テーブル１１０の生成処理手順については、図１１に示した例と同一であるため、詳細な説明を省略する。制御装置１００は、文字変換テーブル１１０を切り替え後の対象セクタの先頭に書き込み（ステップＳ１４０１）、読み出していない記憶データがあるか否かを判断する（ステップＳ１４０２）。読み出していない記憶データがある場合（ステップＳ１４０２：Ｙｅｓ）、制御装置１００は、切り替え前の対象セクタの中で読み出していない記憶データから１つの記憶データを読み出し（ステップＳ１４０３）、読み出した記憶データが有効データであるか否かを判断する（ステップＳ１４０４）。
【００５８】
有効データでない場合（ステップＳ１４０４：Ｎｏ）、ステップＳ１４０２へ戻る。有効データである場合（ステップＳ１４０４：Ｙｅｓ）、制御装置１００は、切り替え前の対象セクタの文字変換テーブル１１０によって読み出した記憶データを１バイトごとに復元する（ステップＳ１４０５）。制御装置１００は、復元した文字データを切り替え後の対象セクタに記憶した文字変換テーブル１１０によって変換し（ステップＳ１４０６）、読み出した記憶データが切り替え前の対象セクタに記憶された記憶データの中で先頭の有効データであるか否かを判断する（ステップＳ１４０７）。
【００５９】
先頭の有効データである場合（ステップＳ１４０７：Ｙｅｓ）、制御装置１００は、読み出した変換後の文字データを先頭の有効データとして記憶し（ステップＳ１４０８）、ステップＳ１４０２へ移行する。ステップＳ１４０８における記憶は、ＲＡＭ５０１などに一時的に記憶することを示す。先頭の有効データでない場合（ステップＳ１４０７：Ｎｏ）、制御装置１００は、変換後の文字データを切り替え後の対象セクタに書き込み（ステップＳ１４０９）、ステップＳ１４０２へ移行する。ステップＳ１４０２において、読み出していないデータがない場合（ステップＳ１４０２：Ｎｏ）、制御装置１００は、先頭の有効データとして記憶した文字データを切り替え後の対象セクタに書き込み（ステップＳ１４１０）、一連の処理を終了する。また、実施例１と実施例２とを組み合わせてもよい。
【００６０】
（制御装置１００による書き込み処理手順例）
図１５は、制御装置による書き込み処理手順の一例を示すフローチャートである。制御装置１００は、文字変換テーブル１１０を読み出し（ステップＳ１５０１）、１バイトごとに文字変換テーブル１１０に基づいて書き込み対象の各データを変換し（ステップＳ１５０２）、変換後の文字データをセクタに書き込み（ステップＳ１５０３）、一連の処理を終了する。ステップＳ１５０１については、対象セクタに切り替えがない状態で読み出し処理または書き込み処理が連続している場合には１番初めの読み出し処理または書き込み処理の際に読み出されればよい。
【００６１】
（制御装置１００による読み出し処理手順例）
図１６は、制御装置による読み出し処理手順の一例を示すフローチャートである。制御装置１００は、文字変換テーブル１１０を読み出し（ステップＳ１６０１）、読み出し対象のデータを読み出し（ステップＳ１６０２）、読み出したデータを１バイトごとに文字変換テーブル１１０に基づいて復元し（ステップＳ１６０３）、一連の処理を終了する。ステップＳ１６０１については、対象セクタに切り替えがない状態で読み出し処理または書き込み処理が連続している場合には１番初めの読み出し処理または書き込み処理の際に読み出されればよい。
【００６２】
図１７Ａ〜図１７Ｃは、本実施の形態と文字データの反転との比較例を示す説明図である。従来技術の一例として、文字データを反転して記憶する例を示す。図１７Ａに示すように、データに含まれる「１」と「０」の個数に基づいてビット「０」の数を減らすようにビット反転が行われた場合、出現回数が考慮されていない。出現回数とは、同一のデータが書き込まれる回数である。図１７Ａの上側で示すように、ビット「０」の数が多い文字「Ａ」、文字「Ｂ」の出現回数が、ビット「０」の数が少ない文字「Ｏ」、文字「Ｗ」の出現回数と同じ場合、書き込み回数の減少率は５５［％］と大きい。一方、図１７Ａの下側で示すように、文字「Ａ」、文字「Ｂ」の出現回数が、文字「Ｏ」、文字「Ｗ」の出現回数よりも大幅に少ない場合、書き込み回数の減少率は１３［％］と小さい。
【００６３】
そして、図１７Ｂでは、制御装置１００がいくつかのテキストデータを使用してフラッシュメモリ３００に書き込みを行った場合のビット「０」が書き込まれる数の減少率を示す。ビット反転無しの場合と、ビット反転有りの場合と、本実施の形態による制御との各々について、テキストデータ内の各データを書き込む動作を行った場合に、フラッシュメモリ３００に「０」と「１」の各々が書き込まれた回数を示す。ビット反転無しの場合とは、テキストデータ内の各データをそのままフラッシュメモリ３００に書き込んだ例である。
【００６４】
ビット反転無しの場合よりも本実施の形態の制御の場合はビット「０」の書き込み回数を７０［％］減少させることができ、ビット反転有りの場合よりも本実施の形態の制御の場合はビット「０」の書き込み回数を５１［％］減少させることができたことを示す。
【００６５】
図１７Ｃに示すように、文字データを反転して記憶する場合、データと、データごとにビット反転の有無を示す情報とが記憶される。一方、本実施の形態では、各データが変換されたデータが記憶される。そのため、従来技術ではビット反転の有無をＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）やパリティチェックのビット誤り訂正機能のビットを使って行うことから、ビット誤り訂正の機能を同時に使用することができないが、本実施の形態ではビット誤り訂正の機能を同時に使用することが可能となる。
【００６６】
以上説明したように、制御装置は、切り替え前の対象セクタの記憶内容に含まれる数が多いデータほど、切り替え後の対象セクタへの書き込み時に０の数が少ない符号に対応付けたテーブルを生成する。そして、制御装置は、対象セクタへの書き込み対象のデータをテーブルに基づいて変換してから書き込む。これにより、「０」の書き込み回数を減少させることができる。したがって、セルの劣化を遅らせることができる。
【００６７】
また、制御装置は、切り替え後の対象セクタに記憶された記憶データをテーブルに基づいて変換することにより、データを復元することができる。
【００６８】
記憶内容に含まれる数に基づく複数のデータの順序と、異なる変換文字データの「０」が含まれる数に基づく変換文字データの順序と、によって、テーブルを生成する。これにより、データと、予め決められた変換文字データと、を対応付けるだけであるため、制御装置による処理を単純化することができ、制御装置がテーブルの生成に要する時間を短縮することができる。
【００６９】
また、制御装置は、テーブルを生成する処理を行う都度、文字変換テーブルの各々の相対的な位置が異なるテーブルを生成する。これにより、同一位置に同一の変換文字データが何度も書き込まれないため、「０」の書き込みを分散することができ、セルの劣化を遅らせることができる。
【００７０】
また、制御装置は、テーブルを生成する処理を行う都度、変換文字データの各々について変換文字データの一端のビットを他端に移動させたテーブルを生成する。これにより、同一位置に同一の変換文字データが何度も書き込まれないため、「０」の書き込みを分散することができ、セルの劣化を遅らせることができる。
【００７１】
また、文字の出現回数の変動が少なく、有効データに変化が少ないと、フラッシュメモリ３００内の同一の領域に同一の有効データが何度も記憶される可能性がある。そこで、制御装置は、切り替え前の対象セクタの記憶データを切り替え後の対象セクタに移行させる際に、先頭の記憶データをテーブルに基づいて変換した文字変換データが、切り替え後の対象セクタの移行データの中で最後尾に記憶されるように書き込む。これにより、特定のセルに同一のデータが何度も書き込まれないため、「０」の書き込みを分散することができ、セルの劣化を遅らせることができる。
【００７２】
なお、本実施の形態で説明した制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、フラッシュメモリやディスク等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【００７３】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００７４】
（付記１）特定のセクタへの書き込みの集中を防止するメモリ制御方法であるウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わるメモリに対する書き込みおよび読み出しを制御する制御装置が、
値が異なる複数のデータについて、前記対象セクタが前記メモリ内の第１セクタである時に前記第１セクタの記憶内容に含まれる前記複数のデータの各々の個数である第１の個数を導出し、
前記対象セクタが前記第１セクタから第２セクタに切り替わると、前記複数のデータの各々に異なるビット列が対応付けられたテーブルであって、前記第１の個数が多いデータほど、特定の値のビットが少ないビット列が対応付けられたテーブルを生成し、
生成した前記テーブルを前記第２セクタに記憶させ、
前記第１セクタの記憶内容を、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込み、
前記第２セクタに対する書き込み対象の各データを、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む、
処理を実行することを特徴とする制御方法。
【００７５】
（付記２）前記特定の値は、前記メモリ内のセルの浮遊ゲートが電子を保持することにより表される値であることを特徴とする付記１に記載の制御方法。
【００７６】
（付記３）前記異なるビット列の個数は前記複数のデータの個数と同一であり、
前記テーブルを生成する処理では、
前記第１の個数に基づく前記複数のデータの順序と、前記異なるビット列が含む前記特定の値の個数である第２の個数に基づく前記異なるビット列の順序を示す情報と、に基づいて前記テーブルを生成することを特徴とする付記１または２に記載の制御方法。
【００７７】
（付記４）前記制御装置は、
前記テーブルを生成する処理を行う都度、前記ビット列の各々の相対的な位置が異なる前記テーブルを生成する処理を実行することを特徴とする付記３に記載の制御方法。
【００７８】
（付記５）前記制御装置は、
前記テーブルを生成する処理を行う都度、前記ビット列の各々について前記ビット列の一端のビットを他端に移動させた前記テーブルを生成する処理を実行することを特徴とする付記３または４に記載の制御方法。
【００７９】
（付記６）前記第１セクタの記憶内容を前記ビット列に変換して前記第２セクタに書き込む処理では、
前記記憶内容に含まれる複数の記憶データの各々を前記テーブルに基づいて前記ビット列に変換し、前記複数の記憶データの先頭の記憶データを変換したビット列が、前記複数の記憶データの各々を変換した複数のビット列の中で最後尾に記憶されるように前記第２セクタに書き込むことを特徴とする付記１〜５のいずれか一つに記載の制御方法。
【００８０】
（付記７）前記制御装置は、
前記第２セクタから読み出し対象のビット列を読み出し、読み出したビット列を記憶した前記テーブルに基づいて前記複数のデータのいずれかに変換する処理を実行することを特徴とする付記１〜６のいずれか一つに記載の制御方法。
【００８１】
（付記８）特定のセクタへの書き込みの集中を防止するメモリ制御方法であるウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わるメモリに対する書き込みおよび読み出しを制御する制御装置に、
値が異なる複数のデータについて、前記対象セクタが前記メモリ内の第１セクタである時に前記第１セクタの記憶内容に含まれる前記複数のデータの各々の個数を導出し、
前記対象セクタが前記第１セクタから第２セクタに切り替わると、前記複数のデータの各々に異なるビット列が対応付けられたテーブルであって、導出した前記個数が多いデータほど、特定の値のビットが少ないビット列が対応付けられたテーブルを生成し、
生成した前記テーブルを前記第２セクタに記憶させ、
前記第１セクタの記憶内容を、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込み、
前記第２セクタに対する書き込み対象の各データを、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む、
処理をコンピュータに実行させることを特徴とする制御プログラム。
【００８２】
（付記９）特定のセクタへの書き込みの集中を防止するメモリ制御方法であるウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わるメモリに対する書き込みおよび読み出しを制御する制御装置であって、
値が異なる複数のデータについて、前記対象セクタが前記メモリ内の第１セクタである時に前記第１セクタの記憶内容に含まれる前記複数のデータの各々の個数を導出する導出部と、
前記対象セクタが前記第１セクタから第２セクタに切り替わると、前記複数のデータの各々に異なるビット列が対応付けられたテーブルであって、前記導出部が導出した前記個数が多いデータほど、特定の値のビットが少ないビット列が対応付けられたテーブルを生成する生成部と、
前記生成部が生成した前記テーブルを前記第２セクタに記憶させる格納部と、
前記第１セクタの記憶内容を、前記生成部が生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む移行部と、
前記第２セクタに対する書き込み対象の各データを、前記生成部が生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む変換部と、
を有することを特徴とする制御装置。
【００８３】
（付記１０）特定のセクタへの書き込みの集中を防止するメモリ制御方法であるウェアレベリングによって書き込みおよび読み出しの対象セクタが切り替わるメモリに対する書き込みおよび読み出しを制御する制御装置に、
値が異なる複数のデータについて、前記対象セクタが前記メモリ内の第１セクタである時に前記第１セクタの記憶内容に含まれる前記複数のデータの各々の個数を導出し、
前記対象セクタが前記第１セクタから第２セクタに切り替わると、前記複数のデータの各々に異なるビット列が対応付けられたテーブルであって、導出した前記個数が多いデータほど、特定の値のビットが少ないビット列が対応付けられたテーブルを生成し、
生成した前記テーブルを前記第２セクタに記憶させ、
前記第１セクタの記憶内容を、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込み、
前記第２セクタに対する書き込み対象の各データを、生成した前記テーブルに基づいて前記ビット列に変換して前記第２セクタに書き込む、
処理をコンピュータに実行させる制御プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【００８４】
１００  制御装置
１０１−１  第１セクタ
１０１−２  第２セクタ
１１０  文字変換テーブル
３００  フラッシュメモリ
３１０  文字コード表
６０１  導出部
６０２  生成部
６０３  格納部
６０４  移行部
６０５  変換部
【図１】
2014215986.tif 000003
【図２】
2014215986.tif 000004
【図３】
2014215986.tif 000005
【図４】
2014215986.tif 000006
【図５】
2014215986.tif 000007
【図６】
2014215986.tif 000008
【図７】
2014215986.tif 000009
【図８】
2014215986.tif 000010
【図９】
2014215986.tif 000011
【図１０】
2014215986.tif 000012
【図１１】
2014215986.tif 000013
【図１２】
2014215986.tif 000014
【図１３】
2014215986.tif 000015
【図１４】
2014215986.tif 000016
【図１５】
2014215986.tif 000017
【図１６】
2014215986.tif 000018
【図１７Ａ】
2014215986.tif 000019
【図１７Ｂ】
2014215986.tif 000020
【図１７Ｃ】
2014215986.tif 000021