(57)【要約】    【課題】カウンタとして使用するメモリ領域の制約がなく且つ書替え回数の更新寿命を充分に延ばすことを可能とする。    【解決手段】  データ変換部３４−１はメモリ素子の消去を含む書替え回数に制限をもつ例えば不揮発メモリ３２への書込データを所定ビット幅の分割書込データに分割し、分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換する。データ逆変換部３４−２は、不揮発メモリ３２からの読出データを所定ビット幅の分割読出データに分解し、分割読出データ毎にデータ変換部とは逆の変換を行って元のデータに戻す。    【選択図】      図１
2009135854.tif 000002
【特許請求の範囲】
【請求項１】
書替え回数に制限をもつメモリと、
前記メモリへの書込データを所定ビット幅の分割書込データに分解し、前記分解書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換部と、
前記メモリからの読出データを前記所定ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換部とは逆の変換を行って元のデータに戻すデータ逆変換部と、
を備えたことを特徴とするメモリアクセス制御装置。
【請求項２】
請求項１記載のメモリアクセス制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割書込データに分解し、前記分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換部とは逆の変換を行って元のデータに戻すことを特徴とするメモリアクセス制御装置。
【請求項３】
請求項２記載のメモリアクセス制御装置に於いて、前記データ変換部は、２進表示で全ビット１となる所定ビット幅の分割書込データ（１１１１・・・１）を、任意のビット位置がビット１で他の全てのビット位置がビット０となるデータに変換することを特徴とするメモリアクセス制御装置。
【請求項４】
請求項２記載のメモリ制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを２ビット幅の分割書込データに分解し、前記分割書込データにつき２進表示で
変換前ビット列００、０１、１０、１１
変換後ビット列００、０１、１１、１０
となるように変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき２進表示で
逆変換前ビット列００、０１、１１、１０
逆変換後ビット列００、０１、１０、１１
となるように逆変換することを特徴とするメモリアクセス制御装置。
【請求項５】
請求項２記載のメモリ制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを４ビット幅の分割書込データに分解し、前記分割書込データにつき１６進表示で
変換前ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
変換後ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
となるように変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき１６進表示で
逆変換前ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
逆変換後ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
となるように逆変換することを特徴とするメモリアクセス制御装置。
【請求項６】
書替え回数に制限をもつメモリのメモリアクセス制御方法に於いて、
前記メモリへの書込データを所定ビット幅の分割書込データに分解し、前記分解書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換ステップと、
前記メモリからの読出データを前記所定ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換ステップとは逆の変換を行って元のデータに戻すデータ逆変換ステップと、
を備えたことを特徴とするメモリアクセス制御方法。
【請求項７】
コンピュータ内に配置される書替え回数に制限をもつメモリへの書込データを所定ビット幅の分割書込データに分割し、前記分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換ステップと、
前記メモリからの読出データを前記所定ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換ステップとは逆の変換を行って元のデータに戻すデータ逆変換ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書替え回数に制限をもつ不揮発性メモリ等のメモリアクセス制御装置、メモリアクセス制御方法及びプログラムに関し、特に、メモリ素子の書替え回数を低減するように書込データを変換してメモリの寿命を延ばすためメモリアクセス制御装置、制御方法及びプログラムに関する。
【背景技術】
【０００２】
従来、ＥＥＰＲＯＭやＦＬＡＳＨメモリ（フラッシュＲＯＭ）などの不揮発性のメモリは、データを書き込んで電源を切断してもデータを保持するという特徴があり、情報処理装置の記憶手段としてさまざまな用途に使用されてきている。例えば近年にあっては磁気ディスク装置などのユーザデータ記憶領域として使用される場合もある。
【０００３】
一般に不揮発性のメモリの特徴として、ビット０をビット１に書き替える書替え回数が増大するとメモリ素子の劣化を招くという欠点があり、読み書きの信頼性としては、例えば１０万回までの書替えしか実施できない問題がある。
【０００４】
不揮発性のメモリに保持するデータのなかで、最も書替えが頻繁に行われると考えられるのは、なんらかの事象の回数を数えるという動作である。以下、数える処理をカウンタと呼ぶこととする。
【０００５】
不揮発メモリをカウンタとして使用する場合に劣化を改善する方法を提供できれば、平均的に不揮発性メモリの寿命を延ばすことができる。カウンタの動きを見てみると、最下位ビットが頻繁に「０、１、０、１・・・」という動きを繰り返し、上位ビットにいけばいくほどその変化の割合は少なくなるのが一般的である。
【０００６】
このような書替え回数に制限をもつ不揮発メモリの素子劣化を改善する方法として、従来、第４０図に示す方法がある。図４０の方法は、４ビットで構成された位桁１１１，１１２，１１３，１１４，１１５，１１６を持つ２進データについて、最下位桁１１１に４ビットの位桁１１０を付加して拡張することにより８ビットとし、カウンタの値を更新する際に最下位桁については、「０００００００１」から更新毎に１ビットシフトさせることにより「００００００１０、０００００１００、００００１０００・・・」と変化させ、最下位桁の更新を抑える方法を提案している（特許文献１）。
【０００７】
この理由は、下位桁のほうが、上位桁よりもメモリセルのビット０からビット１への変化がより多く発生することから、下位桁についてのみ工夫を施せばカウンタとしての書替え回数は低減できるという考えに基づいている。
【０００８】
また別の方法にあっては、図４１に示すように、カウント動作をビット反転した状態で最下位ビットのデクリメントすることで、書替え回数を半減できるとしている（特許文献２）。
【０００９】
例えば図４１のカウント処理は、下位４ビットをみると、初期状態は反転により「１１１１」とし、以下カウント動作毎に次のカウント動作で最下位ビットをデクリメントして「１１１０」、「１１０１」、「１１００」・・・と変化させ、斜線部で示すビット位置にビット０からビット１への書替えを生じさせることで書替え回数を半減させている。
【特許文献１】特許第２５６０６８８号公報
【特許文献２】特開２００６−１６４３５４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、このような従来の不揮発メモリの書替え回数を低減する方法にあっては、次の問題がある。
【００１１】
特許文献１の方法は、不揮発メモリにおける特定のメモリ箇所に特定の細工を施して書替え回数の低減を図るものであり、不揮発メモリのカウンタとして使用できる領域が制約されるという問題がある。
【００１２】
また、特許文献２の方法は、書替え回数を半減させることで、寿命更新という観点からは２倍程度の効果しか得られず、充分な寿命改善は困難である。
【００１３】
本発明は、カウンタとして使用するメモリの領域の制約がなく且つ書替え回数の更新寿命を充分に延ばすことを可能とするメモリアクセス制御装置、メモリアクセス制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
（装置）
本発明はメモリアクセス制御装置であって、
書替え回数に制限をもつメモリと、
メモリへの書込データを所定ビット幅の分割書込データに分割し、分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換部と、
メモリからの読出データを所定ビット幅の分割読出データに分解し、分割読出データ毎にデータ変換部とは逆の変換を行って元のデータに戻すデータ逆変換部と、
を備えたことを特徴とする。
【００１５】
ここで、データ変換部は、メモリへの書込データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割書込データに分解し、分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換し、
データ逆変換部は、メモリからの読出データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割読出データに分解し、分割読出データ毎にデータ変換部とは逆の変換を行って元のデータに戻す。
【００１６】
データ変換部は、２進表示で全ビット１となる所定ビット幅の分割書込データ（１１１１・・・１）を、任意のビット位置がビット１で他の全てのビット位置がビット０となるデータに変換する。
【００１７】
具体的にデータ変換部は、
２ビット幅のビット列１１をビット列０１又は１０に変換し、
４ビット幅のビット列１１１１をビット列０００１、００１０、０１００又は１０００に変換し、
５ビット幅のビット列１１１１１をビット列００００１、０００１０、００１００、０１０００又は１００００に変換し、
６ビット幅のビット列１１１１１１をビット列０００００１、００００１０、０００１００、００１０００、０１００００又は１０００００に変換し、
７ビット幅のビット列１１１１１１１をビット列００００００１、０００００１０、００００１００、０００１０００、００１００００、０１０００００又は１００００００に変換し、
８ビット幅のビット列１１１１１１１をビット列０００００００１、００００００１０、０００００１００、００００１０００、０００１００００、００１０００００、０１００００００又は１０００００００に変換する。
【００１８】
これによりオールビット１の状態から１ビットだけビット０からビット１に変化させるだけでオール０に戻すことができ、カウンタの動作として好適である。
【００１９】
データ変換部は、メモリへの書込データを２ビット幅の分割書込データに分解し、分割書込データにつき
変換前ビット列００、０１、１０、１１
変換後ビット列００、０１、１１、１０
となるように変換し、
データ逆変換部は、メモリからの読出データを２ビット幅の分割読出データに分解し、分割読出データにつき２進表示で
逆変換前ビット列００、０１、１１、１０
逆変換後ビット列００、０１、１０、１１
となるように逆変換する。
【００２０】
データ変換部は、メモリへの書込データを２ビット幅の分割書込データに分解し、分割書込データにつき２進表示で
変換前ビット列００、０１、１０、１１
変換後ビット列００、１０、１１、０１
となるように変換し、
データ逆変換部は、メモリからの読出データを２ビット幅の分割読出データに分解し、分割読出データにつき２進表示で
逆変換前ビット列００、１０、１１、０１
逆変換後ビット列００、０１、１０、１１
となるように逆変換する。
【００２１】
データ変換部は、メモリへの書込データを４ビット幅の分割書込データに分解し、分割書込データにつき１６進表示で
変換前ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
変換後ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
となるように変換し、
データ逆変換部は、メモリからの読出データを２ビット幅の分割読出データに分解し、分割読出データにつき１６進表示で
逆変換前ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
逆変換後ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
となるように逆変換する。
【００２２】
データ変換部及びデータ逆変換部を前記メモリの内部に設けても良い。
（方法）
本発明は、書替え回数に制限をもつ不揮発性メモリのメモリアクセス制御方法であって、
メモリへの書込データを所定ビット幅の分割書込データに分解し、分解書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換ステップと、
メモリからの読出データを所定ビット幅の分割読出データに分解し、分割読出データ毎にデータ変換ステップとは逆の変換を行って元のデータに戻すデータ逆変換ステップと、
を備えたことを特徴とする。
（プログラム）
本発明は、メモリのアクセス制御プログラムであり、コンピュータ内に配置された書替え回数に制限をもつ不揮発性メモリへの書込データを所定ビット幅の分割書込データに分割し、分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換ステップと、
メモリからの読出データを所定ビット幅の分割読出データに分割し、分割読出データ毎にデータ変換ステップとは逆の変換を行って元のデータに戻すデータ逆変換ステップと、
を実行させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、例えば不揮発メモリにデータを書き込む際に、カウントアップ時またはカウントダウン時の変化を下位ビット及び上位ビットにかかわらず、ビット位置ごとに平均的にビット変化するようにデータ変換することにより、ビット０からビット１への書替え回数を大幅に低減し、不揮発メモリの寿命を大幅に延ばすことができる。
【００２４】
また不揮発メモリに変換したデータを書き込んでいるため、不揮発メモリのどの位置であってもカウンタに使用して不揮発性メモリの新寿命を延ばし、容易に装置の信頼性を高めることができる。
【発明を実施するための最良の形態】
【００２５】
図１はコンピュータを対象とした本発明によるメモリアクセス制御の実施形態を示したブロック図である。図１において、コンピュータ１０はＣＰＵ１２を有し、ＣＰＵ１２のバス１４に対し、ＲＡＭ１６、ＲＯＭ１８、ハードディスクドライブ２０、キーボード２４，マウス２６及びディスプレイ２８を接続したデバイスインタフェース２２、ネットワークアダプタ３０を接続している。
【００２６】
更に本実施形態にあっては、ＣＰＵ１２のバス１４に対し、データ変換回路３４を介して不揮発メモリ３２を接続している。不揮発メモリ３２は例えばＥＥＰＲＯＭやフラッシュメモリ（ＦＲＯＭ）などであり、データを書き込んで電源を切ってもデータを保持する不揮発性があるが、メモリ素子（メモリセル）の書込み信頼性としては、ビット０からビット１までの書替え回数が例えば１０万回までと制限されている。
【００２７】
このような書替え回数に制限のある不揮発メモリ３２について、本実施形態にあっては新たにデータ変換回路３４を設け、不揮発メモリ３２に対し最も書替え回数が多いカウンタとして使用した場合にあっても、データ変換回路３４のデータ変換によりカウンタ処理における書替え回数を低減し、不揮発メモリ３２の書替え回数により制限される寿命を延ばすようにしている。
【００２８】
具体的には、データ変換回路３４にはデータ変換部３４−１とデータ逆変換部３４−２が設けられている。データ変換部３４−１は書込データ変換部として機能し、不揮発メモリ３２への書込データを所定ビット幅の分割書込データに分解し、各分割書込データごとにカウンタをカウントアップまたはカウントダウンしたときのビット０からビット１への書替え回数が、各ビット位置ごとにほぼ均等になるデータに変換する。
【００２９】
一方、データ逆変換部３４−２は読出しデータ変換部として機能し、不揮発メモリ３２からの読出データを所定のビット幅の分割読出データに分解し、分割読出データ毎にデータ変換部３４−１とは逆の変換を行って元のデータに戻すデータ逆変換を行う。
【００３０】
本実施形態におけるデータ変換部３４−１及びデータ逆変換部３４−２における分割読出しデータに分割するためのビット幅としては、２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅または８ビット幅に、後の説明で明らかにするように対応し、更に１６ビット幅、３２ビット幅、６４ビット幅というように、適宜のビット幅を定めることができる。
【００３１】
図２は２ビット幅単位に処理する図１のコンピュータに設けたデータ変換回路の実施形態を示した回路ブロック図である。図２において、ＣＰＵ１２からのバス１４と不揮発メモリ３２の間に設けたデータ変換回路３４には、データ変換部３４−１とデータ逆変換部３４−２が設けられている。
【００３２】
データ変換部３４−１には、バス１４からの８ビットデータｂ０〜ｂ７を２ビット単位に分割して２ビット変換テーブル３６−１〜３６−４に入力することで、不揮発メモリ３２の適宜の領域に設けているカウンタ４０をカウンタをカウントアップまたはカウントダウンしたときのビット０からビット１への書替え回数が、各ビット位置ごとにほぼ均等になるように変換している。
【００３３】
一方、データ逆変換部３４−２には、不揮発メモリ３２からの読出しデータを２ビット幅単位に分割して逆変換するための逆変換テーブル３８−１〜３８−４が設けられており、逆変換テーブル３８−１〜３８−４は変換テーブル３６−１〜３６−４の変換と逆の変換を行って、元の８ビットデータｂ０〜ｂ７をバス１４に出力する。
【００３４】
図３は図２の実施形態で使用する変換テーブルと逆変換テーブルを示した説明図である。図３（Ａ）は変換テーブル３６であり、図２のデータ変換部３４−１にあっては、同じ内容の変換テーブル３６を変換テーブル３６−１〜３６−４として使用している。
【００３５】
変換テーブル３６は入力データとして２ビット幅の００，０１，１０，１１を入力し、これを出力データ００，１０，１１，１０に変換している。変換テーブル３６から得られる２ビットの出力データは、最下位ビットのカウンタ動作に伴うビット０から１の変化回数を見ると、矢印で示すように１回であり、第２ビットについても同じく矢印で示すように１回となっている。
【００３６】
これに対し、入力データに示すように変換せずにカウンタ動作を行った場合には、最下位ビットについてはビット０からビット１への変化回数が２回となっている。このため本実施形態の変換テーブル３６によれば、最下位ビットにおけるビット０からビット１への書替え回数を、それまでの２回から１回に半減することができる。
【００３７】
図３（Ｂ）の逆変換テーブル３８は図３（Ａ）の変換テーブル３６の入力データと出力データを入れ替えたものであり、変換テーブル３６で変換した２ビットデータを元の２ビットデータに戻すことができる。
【００３８】
図３（Ａ）（Ｂ）に示した変換テーブル３６及び逆変換テーブル３８は、入力データをアドレスとして出力データを記憶したＲＯＭなどの固定記憶を用いたルックアップテーブル（ＬＵＴ）などで実現することができる。
【００３９】
図４は図２の実施形態で使用する変換テーブルと逆変換テーブルの他の例を示した説明図である。図４（Ａ）の変換テーブル４２にあっては、２ビットの入力データ００，０１，１０，１１のカウント動作に対し、出力データを００，１０，１１，０１に変換している。
【００４０】
この場合にも、出力データにおける最下位ビットのデータ書替え回数は矢印で示すように１回であり、変換を行わなかった場合の２回に対し書替え回数を半減することができる。図４（Ｂ）は逆変換テーブルであり、図４（Ａ）の変換テーブル４２における入力データと出力データを入れ替えた内容となっている。
【００４１】
図５は不揮発メモリにデータ変換回路を内蔵した他の実施形態を示したブロック図である。図５のコンピュータ１０にあっては、基本的には図１の実施形態と同じであるが、バス１４に対し接続した不揮発メモリ３２のメモリデバイスそのものに本実施形態によるデータ変換回路３４を内蔵しており、データ変換回路３４は例えば図２に示したと同じ回路構成を備えている。
【００４２】
図６はデータ変換回路の機能をマイクロプログラムの実行により実現する他の実施形態を示したブロック図である。図６において、コンピュータ１０の起動によりハードディスクドライブ２０からＯＳがＲＡＭにロードされると、このＯＳの中に予め本実施形態のデータ変換回路の機能を実現するマイクロプログラム４５を配置しておくことで、図示のようにＲＡＭ１６に読出し配置される。
【００４３】
ＲＡＭ１６に展開されたマイクロプログラム４５には、例えば図３に示したと同じ変換テーブル３６と逆変換テーブル３８が設けられている。
【００４４】
ＣＰＵ１２はＲＡＭ１６のマイクロプログラム４５を実行することにより、データ変換処理部４６としての機能を実現する。メモリアクセス制御部４６は、不揮発メモリ３２にデータを書き込む際には、変換テーブル３６により書込データをビット０からビット１への書替え回数が各ビット位置ごとにほぼ均等となるデータに変換テーブル３６を用いて変換して書き込む。またデータ変換処理部４６は、不揮発メモリ３２から読み出したデータを逆変換テーブル３８を用いて元のデータに戻してから、リードデータとして処理する。
【００４５】
図７は４ビット幅単位に処理するデータ変換回路の他の実施形態を示した説明図である。図７において、データ変換回路３４には書込データ変換部として機能するデータ変換部３４−１と、読出データ変換部として機能するデータ逆変換部３４−２が設けられている。
【００４６】
データ変換部３４−１には４ビット変換テーブル４８−１，４８−２が設けられ、バス１４からの８ビットデータｂ０〜ｂ７を４ビット単位の分割書込データｂ０〜ｂ３，ｂ４〜ｂ７に分割した後に、同じ変換内容を持つ４ビット変換テーブル４８−１，４８−２でビット０からビット１への書替え回数が各ビット位置ごとにほぼ均等となるデータに変換して、不揮発メモリ３２の例えばカウンタ４０に書き込む。
【００４７】
またデータ逆変換部３４−２には同じ変換内容を持つ４ビット逆変換テーブル５０−１，５０−２が設けられ、不揮発メモリ３２から読み出した８ビットデータを４ビット幅の単位に分割した後に、逆変換テーブル５０−１，５０−２により元の４ビットデータに戻して、両者を合せた８ビットデータとしてバス１４に出力する。
【００４８】
図８は図７の実施形態で使用する４ビット変換テーブルと４ビット逆変換テーブルを示した説明図である。図８（Ａ）は４ビット変換テーブル４８であり、４ビットの入力データを各ビット位置ごとにビット０からビット１への書替え回数がほぼ均等となるようにデータ変換している。
【００４９】
図８（Ａ）の４ビット変換テーブル４８の変換パターンは、出力データの各ビット位置ごとに矢印で示すようにビット０からビット１へ変化する書替え回数がすべて２回となっている理想的なパターンとなっている。
【００５０】
このため、入力データに示すように４ビットデータをそのままカウント動作した場合の書替え回数は、第１ビット（最下位ビット）については８回、第２ビットについては４回、第３ビットについては２回、第４ビットについては１回の合計１５回であるが、本実施形態の変換による出力データにあっては合計８回であり、書替え回数をほぼ半分に低減できている。
【００５１】
図８（Ｂ）は４ビット逆変換テーブル５０であり、図８（Ａ）の入力データと出力データを入れ替えたテーブル内容となっている。
【００５２】
図９は図８の４ビット変換テーブルと４ビット逆変換テーブルを１６進表示とした説明図である。
【００５３】
更に図１０は、図９（Ａ）の１６進表示とした４ビット変換テーブル４８の入力データと出力データについて、それぞれ行方向に配置して示し、併せて書替え回数テーブル５２としてビット位置に対する書替え回数を同じく１６進で表示している。
【００５４】
なお図１０の４ビット変換テーブル４８における１６進表示は８ビットデータ（２バイト）を対象としており、上位４ビットを示す２バイト目についてはすべて０となっている。また１６進表示については、通常「０ｘ０ｅ」などのように先頭に「０ｘ」を付けて表示するが、図１０にあっては便宜上、これを省略している。この点は図９の１６進表示についても同様である。
【００５５】
図１０に示した４ビット変換テーブル４８は、４ビットの各ビット位置での書替え回数がすべて２回と同一になる理想的なパターンであるが、本実施形態にあっては、カウントアップまたはカウントダウンしたときのビット０からビット１への書替え回数が各ビット位置ごとにほぼ均等になるようにデータ変換することを意図しており、したがって本実施形態で使用可能な４ビット変換テーブルとしては、図１０の４ビット変換テーブル４８のパターン以外にも多数存在することになる。
【００５６】
図１１は図７の実施形態で使用可能な４ビット変換テーブルを生成する手順を示したフローチャートである。図１１において、４ビット変換テーブル生成処理は、まずステップＳ１で４ビットデータｂ０〜ｂ３について 「００００」〜「１１１１」と変化する１６個の４ビットデータを生成する。続いて拘束条件を設定して１６個の４ビットパターンをカウンタ動作方向に並べ替えた全変換テーブルを生成する。
【００５７】
ここで拘束条件としては、１６種類の４ビットデータの並びにつき、先頭と２番目については１６進で「００」と「０１」を固定的に配置させる。この理由は、例えば「００」「０８」・・・などとして並べても、この場合には第４ビット位置と第１ビット位置（最下位ビット位置）を全部置き換えてみれば、結果として１６進「００」、「０１」から始まったと同じことに帰結するので、これらの条件を考慮して１６進「００」、「０１」から始まるように拘束してパターンを生成する。
【００５８】
次にステップＳ３で全変換テーブルにつき各ビット位置のビット０からビット１への書替え回数を計数する。続いてステップＳ４で各ビット位置の書替え回数が３〜５以内のものを擬似的な変換テーブルとして抽出する。ここで擬似的な変換テーブルとしている意味は、ステップＳ２で所定の拘束条件を設定して生成した変換テーブルを対象としていることに基づく。
【００５９】
更にステップＳ５で、各ビット位置の書替え回数の差が１回以内で且つ最後のパターンが１６進表示で１，２，４，８となるテーブルを理想的な変換テーブルとして抽出する。
【００６０】
ここで図１１のステップＳ５の理想的な変換テーブルとして、最後の４ビットデータのパターンが１６進表示で１，２，４，８となるものを抽出する理由は、これらを２進表示すると
０００１
００１０
０１００
１０００
となり、次のカウント動作において１ビットの書替えで「００００」に戻すことができるからである。
【００６１】
図１０に示した４ビット変換テーブル４８のパターンは、ステップＳ５で抽出された理想的な変換テーブルの中で更に最も理想的な最適変換テーブルということができる。
【００６２】
続いてステップＳ６に進み、ステップＳ４で抽出した擬似的な変換テーブル、及びステップＳ５で抽出した理想的な変換テーブルをそれぞれ出力する。そして、出力した変換テーブルの中から必要に応じて適宜の変換テーブルを選択して、例えば図８（Ａ）に示したような４ビット変換テーブル４８及び図８（Ｂ）に示したような入力データと出力データを入れ替えた逆変換テーブル５０を生成し、例えばルックアップテーブルとして構成したＲＯＭなどとして、図７に示すデータ変換部３４−１及びデータ逆変換部３４−２に組み込んで使用する。
【００６３】
図１２は図１１のステップＳ４で抽出された擬似的な４ビット変換テーブルの一部となる第１乃至第５パターンについて、その出力データと書替え回数を、図１０の場合と同様にして表示している。なお、４４ビット変換テーブルの入力データについては、図１０のように、１６進表示で「００，  ０１  ０２・・・・       ０ｆ」となるが、これは省略している。
【００６４】
図１３乃至図３１は、図１１のステップＳ５で抽出された理想的な４ビット変換テーブルの全てとなる第１乃至第９６パターンについて、その出力データと書替え回数を、図１０の場合と同様にして表示している。
【００６５】
図３２は、本実施形態の５ビット変換テーブルの一部となる第１乃至第５パターンについて、出力データとビット位置毎の書替え回数を示す。５ビット変換テーブルの場合、１０進で０〜３１のカウント動作となることから、出力データは例えば第１パターンに示すように、１６進表示で「００，０１，０３・・・・・１０」の３２通りとなる。
【００６６】
また５ビット変換テーブルについても、最後の出力データは１６進表示で０１，０２，０４，０８のいずれかとしている。
【００６７】
図３３は、本実施形態の６ビット変換テーブルの例について、出力データとビット位置毎の書替え回数を示す。６ビット変換テーブルの場合、１０進で０〜６３のカウント動作となることから、出力データは１６進表示で「００，０１，０３・・・・・０８」の６４通りとなる。
【００６８】
また６ビット変換テーブルについても、最後の出力データは１６進表示で０１，０２，０４，０８のいずれかとしている。
【００６９】
図３４及び図３５は、本実施形態の７ビット変換テーブルの一部となる第１乃至第３パターンについて、出力データとビット位置毎の書替え回数を示す。７ビット変換テーブルの場合、１０進で０〜２５５のカウント動作となることから、出力データは例えば図３４の第１パターンのように、１６進表示で「００，０１，０３・・・・・３ｂ」の２５６通りとなる。
【００７０】
図３６及び図３７は、本実施形態の８ビット変換テーブルの一部となる第１乃至第２パターンについて、出力データとビット位置毎の書替え回数を示す。８ビット変換テーブルの場合、１０進で０〜５１１のカウント動作となることから、出力データは例えば図３６の第１パターンのように、１６進表示で「００，０１，０３・・・・・００」の５１２通りとなる。
【００７１】
図３８はビット幅の異なる変換テーブルと逆変換テーブルを組み合わせた他の実施形態を示したブロック図である。
【００７２】
図３８において、データ変換回路３４のデータ変換部３４−１には、４ビット変換テーブル４８と２ビット変換テーブル３６が設けられ、バス１４からの書込データの下位４ビットｂ０〜ｂ３を４ビット変換テーブル４８で変換し、同時に、上位２ビットｂ４，ｂ５を２ビット変換テーブル３６で変換し、更に、上位２ビットｂ６，ｂ７については変換せずにスルーとしている。
【００７３】
一方、データ逆変換部３４−２には、４ビット逆変換テーブル５０と２ビット逆変換テーブル３８が設けられ、不揮発メモリ３２からの読出データの下位４ビットｂ０〜ｂ３を４ビット逆変換テーブル５０で元に戻し、同時に、上位２ビットｂ４，ｂ５を２ビット逆変換テーブル３８で元に戻し、更に、上位２ビットｂ６，ｂ７についてはスルーとしてバス１４に出力している。
【００７４】
２ビット変換テーブル３６及び２ビット逆変換テーブル３８は図３に示した変換パターンをもつ。また４ビット変換テーブル４８及び４ビット逆変換テーブル５０は例えば図１０に示した変換パターンを持っている。
【００７５】
図３９は図３８の４ビット変換テーブル４８と２ビット変換テーブル３６の組合せによる複合変換テーブルを示し、同時に、ビット位置に対する書替え回数を表す書替え回数テーブル６０を示している。
【００７６】
この図３８及び図３９に示すように、本発明の実施形態にあっては、不揮発メモリ３２に書き込むデータを、異なるビット幅、例えば４ビット幅と２ビット幅に分割し、各ビット幅毎に変換テーブルを使用してビット０からビット１への書替え回数をビット位置毎に略均等となるように変換し、メモリセルの書替え回数を低減してメモリ寿命を延ばすことができる。
【００７７】
また４ビット幅と２ビット幅に分割して変換することで、変換テーブルの容量を例えば４ビット幅だけで分割した場合に比べ小さくすることができ、回路規模を小型化できる。
【００７８】
ここで、図３８の実施形態では、上位２ビットｂ７，ｂ６については変換せずにスルーとしているが、スルーとせずに、２ビット変換テーブルを使用して変換しても良い。
【００７９】
また２ビット幅と４ビット幅の組合せ以外に、上記の実施形態に示した５ビット幅、６ビット幅、７ビット幅、及び８ビット幅を含め、書込データのビットサイズに応じて適宜の組合せ変換を行っても良い。
【００８０】
なお上記の実施形態にあっては、５ビット変換テーブル、６ビット変換テーブル、７ビット変換テーブルを使用した場合を例に取っているが、実際のデータバスのビット幅としては８ビット幅、１６ビット幅、３２ビット幅と、２のｎ乗となるビット幅が通常であることから、これに対応して２ビット変換テーブル、４ビット変換テーブル、８ビット変換テーブルを使用することが望ましい。
【００８１】
また上記の実施形態はコンピュータのＣＰＵのバスに接続した不揮発メモリを例に取っているが、コンピュータ以外のＣＰＵなどの処理機能を備えた装置に使用される不揮発メモリにつきそのまま適用することができ、機器や用途による制約は受けない。
【００８２】
また上記の実施形態は書替え回数に制限のあるメモリとして不揮発メモリを例に取るものであったが、不揮発メモリ以外のメモリについても、書替え回数に制限のあるメモリについては本実施形態をそのまま適用し、メモリの寿命を延ばすことができる。これは、どのようなメモリであっても書替え回数が無限ということはなく、したがって本発明は、すべてのメモリが書替え回数に制限があると見なして適用できる。
【００８３】
また本発明はその目的と利点を損なうことのない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【００８４】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
（付記）
（付記１）（装置）
書替え回数に制限をもつメモリと、
前記メモリへの書込データを所定ビット幅の分割書込データに分解し、前記分解書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換部と、
前記メモリからの読出データを前記所定ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換部とは逆の変換を行って元のデータに戻すデータ逆変換部と、
を備えたことを特徴とするメモリアクセス制御装置。（１）
（付記２）（２、４、５、６、８ビット幅）
付記１記載のメモリアクセス制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割書込データに分解し、前記分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換部とは逆の変換を行って元のデータに戻すことを特徴とするメモリアクセス制御装置。（２）
（付記３）（最後０１、０２、０４、０８、・・・が理想）
付記２記載のメモリアクセス制御装置に於いて、前記データ変換部は、２進表示で全ビット１となる所定ビット幅の分割書込データ（１１１１・・・１）を、任意のビット位置がビット１で他の全てのビット位置がビット０となるデータに変換することを特徴とするメモリアクセス制御装置。（３）
（付記４）（最後０１、０２、０４、０８、・・・が理想の具体例）
付記３記載のメモリアクセス制御装置に於いて、前記データ変換部は、
２ビット幅のビット列１１をビット列０１又は１０に変換し、
４ビット幅のビット列１１１１をビット列０００１、００１０、０１００又は１０００に変換し、
５ビット幅のビット列１１１１１をビット列００００１、０００１０、００１００、０１０００又は１００００に変換し、
６ビット幅のビット列１１１１１１をビット列０００００１、００００１０、０００１００、００１０００、０１００００又は１０００００に変換し、
７ビット幅のビット列１１１１１１１をビット列００００００１、０００００１０、００００１００、０００１０００、００１００００、０１０００００又は１００００００に変換し、
８ビット幅のビット列１１１１１１１をビット列０００００００１、００００００１０、０００００１００、００００１０００、０００１００００、００１０００００、０１００００００又は１０００００００に変換することを特徴とするメモリアクセス制御装置。
【００８５】
（付記５）（２ビット幅の具体例その１）
付記２記載のメモリ制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを２ビット幅の分割書込データに分解し、前記分割書込データにつき２進表示で
変換前ビット列００、０１、１０、１１
変換後ビット列００、０１、１１、１０
となるように変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき２進表示で
逆変換前ビット列００、０１、１１、１０
逆変換後ビット列００、０１、１０、１１
となるように逆変換することを特徴とするメモリアクセス制御装置。（４）
（付記６）（２ビット幅の具体例その２）
付記２記載のメモリアクセス制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを２ビット幅の分割書込データに分解し、前記分割書込データにつき２進表示で
変換前ビット列００、０１、１０、１１
変換後ビット列００、１０、１１、０１
となるように変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき２進表示で
逆変換前ビット列００、１０、１１、０１
逆変換後ビット列００、０１、１０、１１
となるように逆変換することを特徴とするメモリアクセス制御装置。
【００８６】
（付記６）（４ビット幅の具体例：書替え回数最小ケース）
付記２記載のメモリ制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを４ビット幅の分割書込データに分解し、前記分割書込データにつき１６進表示で
変換前ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
変換後ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
となるように変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき１６進表示で
逆変換前ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
逆変換後ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
となるように逆変換することを特徴とするメモリアクセス制御装置。（５）
（付記７）（メモリデバイス内蔵）
付記１記載のメモリアクセス制御装置に於いて、前記データ変換部及びデータ逆変換部を前記メモリの内部に設けたことを特徴とするメモリアクセス制御装置。
【００８７】
（付記８）（方法）
書替え回数に制限をもつメモリのメモリアクセス制御方法に於いて、
前記メモリへの書込データを所定ビット幅の分割書込データに分解し、前記分解書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換ステップと、
前記メモリからの読出データを前記所定ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換ステップとは逆の変換を行って元のデータに戻すデータ逆変換ステップと、
を備えたことを特徴とするメモリアクセス制御方法。（６）
（付記９）（２、４、５、６、８ビット幅）
付記８記載のメモリアクセス制御方法に於いて、
前記データ変換ステップは、前記メモリへの書込データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割書込データに分解し、前記分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換ステップと、
データ逆変換ステップは、前記メモリからの読出データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換ステップとは逆の変換を行って元のデータに戻すことを特徴とするメモリアクセス制御方法。
【００８８】
（付記１０）（最後０１、０２、０４、０８、・・・が理想）
付記９記載のメモリアクセス制御方法に於いて、前記データ変換ステップは、２進表示で全ビット１となる所定ビット幅の分割書込データを、任意のビット位置がビット１で他の全てのビット位置がビット０となるデータに変換することを特徴とするメモリアクセス制御方法。
【００８９】
（付記１１）（最後０１、０２、０４、０８、・・・が理想の具体例）
付記１０記載のメモリアクセス制御方法に於いて、前記データ変換ステップは、
２ビット幅のビット列１１をビット列０１又は１０に変換し、
４ビット幅のビット列１１１１をビット列０００１、００１０、０１００又は１０００に変換し、
５ビット幅のビット列１１１１１をビット列００００１、０００１０、００１００、０１０００又は１００００に変換し、
６ビット幅のビット列１１１１１１をビット列０００００１、００００１０、０００１００、００１０００、０１００００又は１０００００に変換し、
７ビット幅のビット列１１１１１１１をビット列００００００１、０００００１０、００００１００、０００１０００、００１００００、０１０００００又は１００００００に変換し、
８ビット幅のビット列１１１１１１１をビット列０００００００１、００００００１０、０００００１００、００００１０００、０００１００００、００１０００００、０１００００００又は１０００００００に変換することを特徴とするメモリアクセス制御方法。
【００９０】
（付記１２）（２ビット幅の具体例その１）
付記９記載のメモリアクセス制御方法に於いて、
前記データ変換ステップは、前記メモリへの書込データを２ビット幅の分割書込データに分解し、前記分割書込データにつき２進表示で
変換前ビット列００、０１、１０、１１
変換後ビット列００、０１、１１、１０
となるように変換し、
前記データ逆変換ステップは、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき２進表示で
逆変換前ビット列００、０１、１１、１０
逆変換後ビット列００、０１、１０、１１
となるように逆変換することを特徴とするメモリアクセス制御方法。
【００９１】
（付記１３）（２ビット幅の具体例その２）
付記９記載のメモリアクセス制御方法に於いて、
前記データ変換ステップは、前記メモリへの書込データを２ビット幅の分割書込データに分解し、前記分割書込データにつき２進表示で
変換前ビット列００、０１、１０、１１
変換後ビット列００、１０、１１、０１
となるように変換し、
前記データ逆変換ステップは、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき２進表示で
逆変換前ビット列００、１０、１１、０１
逆変換後ビット列００、０１、１０、１１
となるように逆変換することを特徴とするメモリアクセス制御方法。
【００９２】
（付記１４）（４ビット幅の具体例）
付記９記載のメモリアクセス制御方法に於いて、
前記データ変換ステップは、前記メモリへの書込データを４ビット幅の分割書込データに分解し、前記分割書込データにつき１６進表示で
変換前ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
変換後ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
となるように変換し、
前記データ逆変換ステップは、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき１６進表示で
逆変換前ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
逆変換後ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
となるように逆変換することを特徴とするメモリアクセス制御方法。
【００９３】
（付記１５）（プログラム）
コンピュータ内に配置される書替え回数に制限をもつメモリへの書込データを所定ビット幅の分割書込データに分割し、前記分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換ステップと、
前記メモリからの読出データを前記所定ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換ステップとは逆の変換を行って元のデータに戻すデータ逆変換ステップと、
を実行させることを特徴とするプログラム。（７）
（付記１６）（２、４、５、６、８ビット幅）
付記１５記載のプログラムに於いて、
前記データ変換ステップは、前記メモリへの書込データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割書込データに分解し、前記分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換ステップと、
データ逆変換ステップは、前記メモリからの読出データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換ステップとは逆の変換を行って元のデータに戻すことを特徴とするプログラム。
【００９４】
（付記１７）（最後０１、０２、０４、０８、・・・が理想）
付記１６記載のプログラムに於いて、前記データ変換ステップは、２進表示で全ビット１となる所定ビット幅の分割書込データを、任意のビット位置がビット１で他の全てのビット位置がビット０となるデータに変換することを特徴とするプログラム。
【００９５】
（付記１８）（最後０１、０２、０４、０８、・・・が理想の具体例）
付記１７記載のプログラムに於いて、前記データ変換ステップは、
２ビット幅のビット列１１をビット列０１又は１０に変換し、
４ビット幅のビット列１１１１をビット列０００１、００１０、０１００又は１０００に変換し、
５ビット幅のビット列１１１１１をビット列００００１、０００１０、００１００、０１０００又は１００００に変換し、
６ビット幅のビット列１１１１１１をビット列０００００１、００００１０、０００１００、００１０００、０１００００又は１０００００に変換し、
７ビット幅のビット列１１１１１１１をビット列００００００１、０００００１０、００００１００、０００１０００、００１００００、０１０００００又は１００００００に変換し、
８ビット幅のビット列１１１１１１１をビット列０００００００１、００００００１０、０００００１００、００００１０００、０００１００００、００１０００００、０１００００００又は１０００００００に変換することを特徴とするプログラム。
【００９６】
（付記１９）（２ビット幅の具体例その１）
付記１６記載のプログラムに於いて、
前記データ変換ステップは、前記メモリへの書込データを２ビット幅の分割書込データに分解し、前記分割書込データにつき２進表で、
変換前ビット列００、０１、１０、１１
変換後ビット列００、０１、１１、１０
となるように変換し、
前記データ逆変換ステップは、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき２進表示で
逆変換前ビット列００、０１、１１、１０
逆変換後ビット列００、０１、１０、１１
となるように逆変換することを特徴とするプログラム。
【００９７】
（付記２０）（４ビット幅の具体例）
付記１６記載のプログラムに於いて、
前記データ変換ステップは、前記メモリへの書込データを４ビット幅の分割書込データに分解し、前記分割書込データにつき１６進表示で
変換前ビット列０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
変換後ビット列０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
となるように変換し、
前記データ逆変換ステップは、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき１６進表示で
逆変換前ビット列
０、１、５、ｄ、９、８、ａ、ｂ、３、７、ｆ、ｅ、ｃ、４、６、２
逆変換後ビット列
０、１、２、３、４、５、６、７、８、９、ａ、ｂ、ｃ、ｄ、ｅ、ｆ
となるように逆変換することを特徴とするプログラム。
【図面の簡単な説明】
【００９８】
【図１】コンピュータを対象とした本発明によるメモリアクセス制御の実施形態を示したブロック図
【図２】２ビット幅単位に処理する図１のコンピュータに設けたデータ変換回路の実施形態を示した回路図
【図３】図２の実施形態で使用する変換テーブルと逆変換テーブルを示した説明図
【図４】図２の実施形態で使用する変換テーブルと逆変換テーブルの他の例を示した説明図
【図５】不揮発メモリにデータ変換部を内蔵した他の実施形態を示したブロック図
【図６】データ変換回路の機能をマイクロプログラムの実行により実現する他の実施形態を示したブロック図
【図７】４ビット幅単位に処理するデータ変換回路の他の実施形態を示した説明図
【図８】図７の実施形態で使用する変換テーブルと逆変換テーブルを示した説明図
【図９】図８の変換テーブルと逆変換テーブルを１６進表示とした説明図
【図１０】図７の変換テーブルを８ビット１６進表示として第１乃至第４ビットの書替え回数と共に示した説明図
【図１１】図７の実施形態で使用可能な変換テーブルを生成する手順を示したフローチャート
【図１２】図７のステップＳ４で抽出される擬似的な変換パターンとなる４ビット変換テーブルの出力データとビット位置毎の書替え回数を第１乃至第５パターンを示した説明図
【図１３】図７のステップＳ５で抽出される理想的な変換パターンとなる４ビット変換テーブルの出力データとビット位置毎の書替え回数を第１乃至第５パターンを示した説明図
【図１４】図１３に続く第６乃至第１０パターンを示した説明図
【図１５】図１４に続く第１１乃至第１５パターンを示した説明図
【図１６】図１５に続く第１６乃至第２０パターンを示した説明図
【図１７】図１６に続く第２１乃至第２５パターンを示した説明図
【図１８】図１７に続く第２６乃至第３０パターンを示した説明図
【図１９】図１８に続く第３１乃至第３５パターンを示した説明図
【図２０】図１９に続く第３６乃至第４０パターンを示した説明図
【図２１】図２０に続く第４１乃至第４５パターンを示した説明図
【図２２】図２１に続く第４６乃至第５０パターンを示した説明図
【図２３】図２２に続く第５１乃至第５５パターンを示した説明図
【図２４】図２３に続く第５６乃至第６０パターンを示した説明図
【図２５】図２４に続く第６１乃至第６５パターンを示した説明図
【図２６】図２５に続く第６６乃至第７０パターンを示した説明図
【図２７】図２６に続く第７１乃至第７５パターンを示した説明図
【図２８】図２７に続く第７６乃至第８０パターンを示した説明図
【図２９】図２８に続く第８１乃至第８５パターンを示した説明図
【図３０】図２９に続く第８６乃至第９０パターンを示した説明図
【図３１】図３０に続く第９１乃至第９６パターンを示した説明図
【図３２】本実施形態の５ビット変換テーブルで使用される出力データとビット位置毎の書替え回数を第１乃至第５パターンとして示した説明図
【図３３】本実施形態の６ビット変換テーブルで使用される出力データとビット位置毎の書替え回数を示した説明図
【図３４】本実施形態の７ビット変換テーブルで使用される出力データとビット位置毎の書替え回数を第１乃至第２パターンとして示した説明図
【図３５】図３４に続く第３パターンを示した説明図
【図３６】本実施形態の８ビット変換テーブルで使用される出力データとビット位置毎の書替え回数を第１パターンとして示した説明図
【図３７】図３６に続く第２パターンを示した説明図
【図３８】４ビット幅と２ビット幅に分割して処理するデータ変換回路の他の実施形態を示した説明図
【図３９】図３８の複合変換テーブルとその書替え回数テーブルを示した説明図
【図４０】下位ビット部分で書替え回数を低減する従来の方法を示した説明図
【図４１】反転した後にデクリメントとして書替え回数を低減する従来の方法を示した説明図
【符号の説明】
【００９９】
１０：コンピュータ
１２：ＣＰＵ
１４：バス
１６：ＲＡＭ
１８：ＲＯＭ
２０：ハードディスクドライブ
２２：デバイスインタフェース
２４：キーボード
２６：マウス
２８：ディスプレイ
３０：ネットワークアダプタ
３２：不揮発メモリ
３４：データ変換回路
３４−１：書込データ変換部
３４−２：読出データ変換部
３６，３６−１〜３６−４，４２：２ビット変換テーブル
３８，３８−１〜３８−４，４４：２ビット逆変換テーブル
４０：カウンタ
４５：マイクロプログラム
４６：データ変換処理部
４８，４８−１〜４８−４：４ビット変換テーブル
５０，５０−１〜５０−４：４ビット逆変換テーブル
５２：書替え回数テーブル
【図１】
2009135854.tif 000003
【図２】
2009135854.tif 000004
【図３】
2009135854.tif 000005
【図４】
2009135854.tif 000006
【図５】
2009135854.tif 000007
【図６】
2009135854.tif 000008
【図７】
2009135854.tif 000009
【図８】
2009135854.tif 000010
【図９】
2009135854.tif 000011
【図１０】
2009135854.tif 000012
【図１１】
2009135854.tif 000013
【図１２】
2009135854.tif 000014
【図１３】
2009135854.tif 000015
【図１４】
2009135854.tif 000016
【図１５】
2009135854.tif 000017
【図１６】
2009135854.tif 000018
【図１７】
2009135854.tif 000019
【図１８】
2009135854.tif 000020
【図１９】
2009135854.tif 000021
【図２０】
2009135854.tif 000022
【図２１】
2009135854.tif 000023
【図２２】
2009135854.tif 000024
【図２３】
2009135854.tif 000025
【図２４】
2009135854.tif 000026
【図２５】
2009135854.tif 000027
【図２６】
2009135854.tif 000028
【図２７】
2009135854.tif 000029
【図２８】
2009135854.tif 000030
【図２９】
2009135854.tif 000031
【図３０】
2009135854.tif 000032
【図３１】
2009135854.tif 000033
【図３２】
2009135854.tif 000034
【図３３】
2009135854.tif 000035
【図３４】
2009135854.tif 000036
【図３５】
2009135854.tif 000037
【図３６】
2009135854.tif 000038
【図３７】
2009135854.tif 000039
【図３８】
2009135854.tif 000040
【図３９】
2009135854.tif 000041
【図４０】
2009135854.tif 000042
【図４１】
2009135854.tif 000043
【手続補正書】
【提出日】平成20年8月18日(2008.8.18)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
具体的にデータ変換部は、
２ビット幅のビット列１１をビット列０１又は１０に変換し、
４ビット幅のビット列１１１１をビット列０００１、００１０、０１００又は１０００に変換し、
５ビット幅のビット列１１１１１をビット列００００１、０００１０、００１００、０１０００又は１００００に変換し、
６ビット幅のビット列１１１１１１をビット列０００００１、００００１０、０００１００、００１０００、０１００００又は１０００００に変換し、
７ビット幅のビット列１１１１１１１をビット列００００００１、０００００１０、００００１００、０００１０００、００１００００、０１０００００又は１００００００に変換し、
８ビット幅のビット列１１１１１１１１をビット列０００００００１、００００００１０、０００００１００、００００１０００、０００１００００、００１０００００、０１００００００又は１０００００００に変換する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
（付記）
（付記１）（装置）
書替え回数に制限をもつメモリと、
前記メモリへの書込データを所定ビット幅の分割書込データに分解し、前記分解書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換するデータ変換部と、
前記メモリからの読出データを前記所定ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換部とは逆の変換を行って元のデータに戻すデータ逆変換部と、
を備えたことを特徴とするメモリアクセス制御装置。（１）
（付記２）（２、４、５、６、８ビット幅）
付記１記載のメモリアクセス制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割書込データに分解し、前記分割書込データ毎に、カウントアップ又はカウントダウンしたときのビット０からビット１への更新頻度が各ビット位置毎に略均等になる変換データに変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅、４ビット幅、５ビット幅、６ビット幅、７ビット幅、または８ビット幅の分割読出データに分解し、前記分割読出データ毎に前記データ変換部とは逆の変換を行って元のデータに戻すことを特徴とするメモリアクセス制御装置。（２）
（付記３）（最後０１、０２、０４、０８、・・・が理想）
付記２記載のメモリアクセス制御装置に於いて、前記データ変換部は、２進表示で全ビット１となる所定ビット幅の分割書込データ（１１１１・・・１）を、任意のビット位置がビット１で他の全てのビット位置がビット０となるデータに変換することを特徴とする
メモリアクセス制御装置。（３）
（付記４）（最後０１、０２、０４、０８、・・・が理想の具体例）
付記３記載のメモリアクセス制御装置に於いて、前記データ変換部は、
２ビット幅のビット列１１をビット列０１又は１０に変換し、
４ビット幅のビット列１１１１をビット列０００１、００１０、０１００又は１０００に変換し、
５ビット幅のビット列１１１１１をビット列００００１、０００１０、００１００、０１０００又は１００００に変換し、
６ビット幅のビット列１１１１１１をビット列０００００１、００００１０、０００１００、００１０００、０１００００又は１０００００に変換し、
７ビット幅のビット列１１１１１１１をビット列００００００１、０００００１０、００００１００、０００１０００、００１００００、０１０００００又は１００００００に変換し、
８ビット幅のビット列１１１１１１１１をビット列０００００００１、００００００１０、０００００１００、００００１０００、０００１００００、００１０００００、０１００００００又は１０００００００に変換することを特徴とするメモリアクセス制御装置。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８５
【補正方法】変更
【補正の内容】
【００８５】
（付記５）（２ビット幅の具体例その１）
付記２記載のメモリ制御装置に於いて、
前記データ変換部は、前記メモリへの書込データを２ビット幅の分割書込データに分解し、前記分割書込データにつき２進表示で
変換前ビット列００、０１、１０、１１
変換後ビット列００、０１、１１、１０
となるように変換し、
前記データ逆変換部は、前記メモリからの読出データを２ビット幅の分割読出データに分解し、前記分割読出データにつき２進表示で
逆変換前ビット列００、０１、１１、１０
逆変換後ビット列００、０１、１０、１１
となるように逆変換することを特徴とするメモリアクセス制御装置。（４）
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００８９
【補正方法】変更
【補正の内容】
【００８９】
（付記１１）（最後０１、０２、０４、０８、・・・が理想の具体例）
付記１０記載のメモリアクセス制御方法に於いて、前記データ変換ステップは、
２ビット幅のビット列１１をビット列０１又は１０に変換し、
４ビット幅のビット列１１１１をビット列０００１、００１０、０１００又は１０００に変換し、
５ビット幅のビット列１１１１１をビット列００００１、０００１０、００１００、０１０００又は１００００に変換し、
６ビット幅のビット列１１１１１１をビット列０００００１、００００１０、０００１００、００１０００、０１００００又は１０００００に変換し、
７ビット幅のビット列１１１１１１１をビット列００００００１、０００００１０、００００１００、０００１０００、００１００００、０１０００００又は１００００００に変換し、
８ビット幅のビット列１１１１１１１１をビット列０００００００１、００００００１０、０００００１００、００００１０００、０００１００００、００１０００００、０１００００００又は１０００００００に変換することを特徴とするメモリアクセス制御方法。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９５
【補正方法】変更
【補正の内容】
【００９５】
（付記１８）（最後０１、０２、０４、０８、・・・が理想の具体例）
付記１７記載のプログラムに於いて、前記データ変換ステップは、
２ビット幅のビット列１１をビット列０１又は１０に変換し、
４ビット幅のビット列１１１１をビット列０００１、００１０、０１００又は１０００に変換し、
５ビット幅のビット列１１１１１をビット列００００１、０００１０、００１００、０１０００又は１００００に変換し、
６ビット幅のビット列１１１１１１をビット列０００００１、００００１０、０００１００、００１０００、０１００００又は１０００００に変換し、
７ビット幅のビット列１１１１１１１をビット列００００００１、０００００１０、００００１００、０００１０００、００１００００、０１０００００又は１００００００に変換し、
８ビット幅のビット列１１１１１１１１をビット列０００００００１、００００００１０、０００００１００、００００１０００、０００１００００、００１０００００、０１００００００又は１０００００００に変換することを特徴とするプログラム。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
【図１】コンピュータを対象とした本発明によるメモリアクセス制御の実施形態を示したブロック図
【図２】２ビット幅単位に処理する図１のコンピュータに設けたデータ変換回路の実施形態を示した回路図
【図３】図２の実施形態で使用する変換テーブルと逆変換テーブルを示した説明図
【図４】図２の実施形態で使用する変換テーブルと逆変換テーブルの他の例を示した説明図
【図５】不揮発メモリにデータ変換部を内蔵した他の実施形態を示したブロック図
【図６】データ変換回路の機能をマイクロプログラムの実行により実現する他の実施形態を示したブロック図
【図７】４ビット幅単位に処理するデータ変換回路の他の実施形態を示した説明図
【図８】図７の実施形態で使用する変換テーブルと逆変換テーブルを示した説明図
【図９】図８の変換テーブルと逆変換テーブルを１６進表示とした説明図
【図１０】図７の変換テーブルを８ビット１６進表示として第１乃至第４ビットの書替え回数と共に示した説明図
【図１１】図７の実施形態で使用可能な変換テーブルを生成する手順を示したフローチャート
【図１２】図１１のステップＳ４で抽出される擬似的な変換パターンとなる４ビット変換テーブルの出力データとビット位置毎の書替え回数を第１乃至第５パターンを示した説明図
【図１３】図１１のステップＳ５で抽出される理想的な変換パターンとなる４ビット変換テーブルの出力データとビット位置毎の書替え回数を第１乃至第５パターンを示した説明図
【図１４】図１３に続く第６乃至第１０パターンを示した説明図
【図１５】図１４に続く第１１乃至第１５パターンを示した説明図
【図１６】図１５に続く第１６乃至第２０パターンを示した説明図
【図１７】図１６に続く第２１乃至第２５パターンを示した説明図
【図１８】図１７に続く第２６乃至第３０パターンを示した説明図
【図１９】図１８に続く第３１乃至第３５パターンを示した説明図
【図２０】図１９に続く第３６乃至第４０パターンを示した説明図
【図２１】図２０に続く第４１乃至第４５パターンを示した説明図
【図２２】図２１に続く第４６乃至第５０パターンを示した説明図
【図２３】図２２に続く第５１乃至第５５パターンを示した説明図
【図２４】図２３に続く第５６乃至第６０パターンを示した説明図
【図２５】図２４に続く第６１乃至第６５パターンを示した説明図
【図２６】図２５に続く第６６乃至第７０パターンを示した説明図
【図２７】図２６に続く第７１乃至第７５パターンを示した説明図
【図２８】図２７に続く第７６乃至第８０パターンを示した説明図
【図２９】図２８に続く第８１乃至第８５パターンを示した説明図
【図３０】図２９に続く第８６乃至第９０パターンを示した説明図
【図３１】図３０に続く第９１乃至第９６パターンを示した説明図
【図３２】本実施形態の５ビット変換テーブルで使用される出力データとビット位置毎の書替え回数を第１乃至第５パターンとして示した説明図
【図３３】本実施形態の６ビット変換テーブルで使用される出力データとビット位置毎の書替え回数を示した説明図
【図３４】本実施形態の７ビット変換テーブルで使用される出力データとビット位置毎の書替え回数を第１乃至第２パターンとして示した説明図
【図３５】図３４に続く第３パターンを示した説明図
【図３６】本実施形態の８ビット変換テーブルで使用される出力データとビット位置毎の書替え回数を第１パターンとして示した説明図
【図３７】図３６に続く第２パターンを示した説明図
【図３８】４ビット幅と２ビット幅に分割して処理するデータ変換回路の他の実施形態を示した説明図
【図３９】図３８の複合変換テーブルとその書替え回数テーブルを示した説明図
【図４０】下位ビット部分で書替え回数を低減する従来の方法を示した説明図
【図４１】反転した後にデクリメントとして書替え回数を低減する従来の方法を示した説明図
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図１２
【補正方法】変更
【補正の内容】
【図１２】
2009135854.tif 000044
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図１３
【補正方法】変更
【補正の内容】
【図１３】
2009135854.tif 000045