(57)【特許請求の範囲】
【請求項１】
不揮発性メモリと、前記不揮発性メモリに所定サイズのページごとに設けられたファイルデータ格納領域にページ単位でファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードであって、
前記不揮発性メモリには、１つの前記ファイルデータ格納領域が複数に分割された領域として管理する管理情報が記憶され、
複数の前記ファイルデータ格納領域には、第１の分割数で分割された領域として管理される第１のファイルデータ格納領域と、第１の分割数より大きい第２の分割数で分割された領域として管理される第２のファイルデータ格納領域と、が含まれ、
前記コントローラは、前記管理情報に基づいて、互いに異なる複数のファイルのうち、第１の書き換え頻度のファイルのデータを前記第１のファイルデータ格納領域に書き込み、前記第１の書き換え頻度より低い第２の書き換え頻度のファイルのデータを前記第２のファイルデータ格納領域に書き込むことを特徴とするＩＣカード。
【請求項２】
前記コントローラは、前記管理情報に基づいて、１つの前記ファイルデータ格納領域に、互いに異なる複数のファイルのデータを書き込むことを特徴とする請求項１に記載のＩＣカード。
【請求項３】
請求項１に記載のＩＣカードに備えられる前記コントローラを、
ファイルのデータを書き込むように機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードに備えられる不揮発性メモリへのデータ書き込み技術に関する。
【背景技術】
【０００２】
従来から、ＩＣカードに備えられる不揮発性メモリとして、フラッシュメモリが知られている。フラッシュメモリでは、一般的に、データの上書き動作が行えないため、当該動作を行うためには、書き換えないデータを別に保持しておき、ページ単位（読み書きを行う最小単位であり、例えば１２８バイト、２５６バイト、または５１２バイト）でデータを消去してから書き込み処理を行うことにより実現している。しかしながら、ＩＣカードにおけるフラッシュメモリでは、最大容量に比べて最小単位が大きく、その結果、データを格納する場合に利用効率が良くないという問題がある。
【０００３】
一方、あるページのファイルデータ格納領域に、あるデータが格納されていたとき、該データに対して書き換え処理（消去＋書き込み処理）を実行すると、ページ内のデータレイアウトに関わらず、ページ単位に電圧がかかるため、フラッシュメモリの磨耗についても、ページ単位となるという特性がある。一般的に、フラッシュメモリの書き換え耐久はおよそ１０万回であるが、上記方法でファイルのデータを格納した場合、１ファイルあたりの耐久性は、「ページの耐久性能／ファイル数」となる。フラッシュメモリの磨耗を軽減する方法に関し、特許文献１には、同一箇所へのアクセス集中が起こらないよう、使用記憶領域のローテーションを行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−１５１０９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記のように磨耗を軽減する方法はメモリを余分に使用するため、ますますフラッシュメモリの利用効率を低下させてしまうという問題がある。
【０００６】
そこで、本発明は、フラッシュメモリ等の不揮発性メモリの磨耗度を軽減させつつ、メモリの利用効率をより効率良く高めることが可能なＩＣカード、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、不揮発性メモリと、前記不揮発性メモリに所定サイズのページごとに設けられたファイルデータ格納領域にページ単位でファイルのデータの読み書きを行うコントローラと、を備えるＩＣカードであって、前記不揮発性メモリには、１つの前記ファイルデータ格納領域が複数に分割された領域として管理する管理情報が記憶され、複数の前記ファイルデータ格納領域には、第１の分割数で分割された領域として管理される第１のファイルデータ格納領域と、第１の分割数より大きい第２の分割数で分割された領域として管理される第２のファイルデータ格納領域と、が含まれ、前記コントローラは、前記管理情報に基づいて、互いに異なる複数のファイルのうち、第１の書き換え頻度のファイルのデータを前記第１のファイルデータ格納領域に書き込み、前記第１の書き換え頻度より低い第２の書き換え頻度のファイルのデータを前記第２のファイルデータ格納領域に書き込むことを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載のＩＣカードにおいて、前記コントローラは、前記管理情報に基づいて、１つの前記ファイルデータ格納領域に、互いに異なる複数のファイルのデータを書き込むことを特徴とする。
【００１０】
請求項３に記載のプログラムの発明は、請求項１に記載のＩＣカードに備えられる前記コントローラを、前記管理情報に基づいて、１つの前記ファイルデータ格納領域に、互いに異なる複数のファイルのデータを書き込むように機能させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、不揮発性メモリ上において分割数が異なる少なくとも２つ以上のファイルデータ格納領域を設定するように構成したので、不揮発性メモリの磨耗度を軽減させつつ、メモリの利用効率をより効率良く高めることができる。
【図面の簡単な説明】
【００１２】
【図１】ＩＣカード１の概要構成例を示す図である。
【図２】（Ａ）は、ページ内のデータレイアウトの一例を示す図であり、（Ｂ）は、フラッシュメモリ１３におけるメモリマップの一例を示す図である。
【図３】管理情報の内容の一例を示す図である。
【図４】（Ａ）は、ＩＣチップ１ａのＣＰＵ１１における管理情報設定処理の一例を示すフローチャートであり、（Ｂ）は、ＩＣチップ１ａのＣＰＵ１１における管理情報を用いた書き込み処理の一例を示すフローチャートである。
【図５】書き換え頻度の高いファイルＡ,Ｂが、網目の粗い領域Area(1)に格納され、書き換え頻度の低いファイルＣ,Ｄが、網目の細かい領域Area(2)に格納された場合の例を示す概念図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００１４】
先ず、図１を参照して、本実施形態に係るＩＣカードについて説明する。図１は、ＩＣカード１の概要構成例を示す図である。なお、ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等に組み込まれる。
【００１５】
図１に示すように、ＩＣカード１には、ＩＣチップ１ａが搭載されている。ＩＣチップ１ａは、ＣＰＵ(Central Processing Unit)１１、ＲＡＭ(Random Access Memory)１２、フラッシュメモリ１３、及びＩ／Ｏ回路１４を備えて構成される。
【００１６】
ＣＰＵ１１は、各種プログラムを実行するコントローラであり、プログラムにしたがって各種処理を実行する。ＲＡＭ１２は、データを一時的に記憶する作業用メモリである。Ｉ／Ｏ回路１４は、図示しないリーダライタ装置等とのインターフェイスを担う。Ｉ／Ｏ回路１４には、例えばＩＳＯ／ＩＥＣ７８１６によって定められたＣ１〜Ｃ８の８個の端子が設けられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子はリーダライタ装置とのデータ通信を行う端子である。
【００１７】
フラッシュメモリ１３は、プログラムやファイルのデータを格納する不揮発性メモリである。なお、フラッシュメモリ１３の代わりにＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory)であっても構わない。ＣＰＵ１１からフラッシュメモリ１３へのアクセスはページ単位で行われるように構成されている。例えばＣＰＵ１１のページレジスタに入力されたデータが一度に、ページに対応するメモリセルに書き込まれる。ページサイズ（１ページあたりのデータ容量）は、例えば１２８バイト、２５６バイト、または５１２バイトである（例えば、各ページのページサイズは同一）。
【００１８】
図２（Ａ）は、ページ内のデータレイアウトの一例を示す図である。１つのページには、図２（Ａ）に示すように、ファイルデータ格納領域Ｒｘ、及びページ管理情報格納領域Ｒｙが設けられる。ここで、ファイルデータ格納領域Ｒｘには、ファイルの実データが格納される。ページ管理情報格納領域Ｒｙには、ページを管理するためのページ管理情報やページに対するＣＲＣ（Cyclic Redundancy Check）等が格納される。このようなデータレイアウトは、フラッシュメモリの製造者側でハード的に構成されており、ＣＰＵ１１は、ページごとに設けられたファイルデータ格納領域Ｒｘにページ単位でファイルのデータの読み書きを行うようになっている。また、従来技術では、１つのファイルデータ格納領域（つまり、１ページあたりのファイルデータ格納領域）には、１つのファイルのデータが書き込まれる（言い換えれば、１つのファイルデータ格納領域に２以上のファイルのデータが書き込まれない）ようになっていたが、この場合、メモリの利用効率が低い（つまり、１つのファイルのデータが格納されたファイルデータ格納領域に未だ空き領域があるのに、２つめのファイルのデータは書き込まれないため）。
【００１９】
本実施形態では、１つのファイルデータ格納領域Ｒｘが複数に分割された領域として管理する管理情報をフラッシュメモリ１３に記憶させることで、１つのファイルデータ格納領域Ｒｘに２以上のファイルのデータを書き込むことが可能となっている。この管理情報がＣＰＵ１１により参照されることで、ファイルのデータ書き込み時、ファイルデータ格納領域Ｒｘを、例えば２の乗数分の１に等分割した網目状にファイルのデータがアラインされて管理される。また、複数のファイルデータ格納領域Ｒｘの中には、第１の分割数で分割された領域として管理される第１のファイルデータ格納領域と、第１の分割数より大きい第２の分割数で分割された領域として管理される第２のファイルデータ格納領域と、が少なくとも含まれるように構成される。言い換えれば、メモリ上において分割数が異なる少なくとも２つ以上のファイルデータ格納領域（例えば、網目が粗い（分割数が小さい）ファイルデータ格納領域と、網目が細かい（分割数が大きい）ファイルデータ格納領域）を設定することができる。ここで、網目が粗い領域は、１ページ内に格納できるファイル数が少ないため、１ファイルあたりの耐久性は高くなる（１ページあたりの磨耗度が軽減される）が、メモリの利用効率は低くなる。一方、網目が細かい領域は、１ページ内に格納できるファイル数が多くなるため、１ファイルあたりの耐久性は低くなる（１ページあたりの磨耗度が増える）が、メモリの利用効率は高くなる。このように、フラッシュメモリ１３に、少なくとも網目が粗い領域と網目が細かい領域の双方を設定することで、磨耗度を軽減させつつ、メモリの利用効率をより効率良く高めることが可能となる。
【００２０】
図２（Ｂ）は、フラッシュメモリ１３におけるメモリマップの一例を示す図である。図２（Ｂ）に示す例では、メモリマップ上、ファイルデータ格納領域Ｒｘを網目の粒度別に１つ以上に区切ったページの集合をAreaという単位として扱っており、網目が粗い領域Area(1)と、網目が細かい領域Area(2)とが設定されている。さらに、図２（Ｂ）に示す領域Area(x)は、Area(2)より網目が細かい領域として設定されるように構成してもよい。また、図２（Ｂ）に示すように、管理情報は、各ページにより使用される領域とは別の領域に格納される。
【００２１】
図３は、図２（Ｂ）に示す管理情報の内容の一例を示す図である。図３に示す管理情報では、各Areaの先頭アドレス、各Areaの網目とする分割数（ファイルデータ格納領域の分割数）、及び各AreaのRFU（各Area別の書き込み保証機能の有無）等（設定値）が設定される。これらの設定値は、例えば、ＩＣカードの発行時、製造者だけが使用できる「製造者コマンド」で管理情報に設定される。
【００２２】
次に、図４を参照して、本実施形態に係るＩＣチップ１ａのＣＰＵ１１における管理情報の設定処理、及び管理情報を用いた書き込み処理について説明する。図４（Ａ）は、ＩＣチップ１ａのＣＰＵ１１における管理情報設定処理の一例を示すフローチャートである。図４（Ｂ）は、ＩＣチップ１ａのＣＰＵ１１における管理情報を用いた書き込み処理の一例を示すフローチャートである。
【００２３】
図４（Ａ）に示す処理は、リーダライタ装置等からＩ／Ｏ回路１４を介して管理情報設定コマンドが受信された場合に開始される。管理情報設定コマンドは、管理情報を設定するためのコマンドである。管理情報設定コマンドには、管理情報が格納されるアドレス（フラッシュメモリ１３のアドレス）、各Areaの先頭アドレス、各Areaの網目とする分割数、及び各AreaのRFUが付加される。図４（Ａ）に示すステップＳ１では、ＣＰＵ１１は、管理情報が格納されるアドレス（フラッシュメモリ１３のアドレス）、各Areaの先頭アドレス、各Areaの網目とする分割数、及び各AreaのRFUを、管理情報設定コマンドから取得する。次いで、ＣＰＵ１１は、取得したアドレスに、取得した各Areaの先頭アドレス、各Areaの網目とする分割数、及び各AreaのRFUを書き込む（ステップＳ２）。これにより、管理情報に、各Areaの先頭アドレス、各Areaの網目とする分割数、及び各AreaのRFUが設定されることになる。
【００２４】
次に、図４（Ｂ）に示す処理は、上記管理情報の設定後、リーダライタ装置等からＩ／Ｏ回路１４を介して書き込みコマンドが受信された場合に開始される。書き込みコマンドは、ファイルのデータを書き込むためのコマンドである。書き込みコマンドには、書き込み対象のファイルのデータ、ファイルＩＤ、ファイルサイズ、及びArea指定情報が付加される。Area指定情報は、ファイルのデータを書き込むAreaを指定するための情報である。例えば、Area指定情報は、ファイルの書き換え頻度情報であってもよい。書き換え頻度情報は、ファイルの書き換え頻度を示す情報であり、例えば、書き換え頻度は、数値で表され、数値が大きいほど頻度が高くなるように設定される。
【００２５】
ＩＣカードでは、一般のＰＣにおけるファイルシステムとは異なり、読み出すだけのファイルや、書き換え頻度が低い（言い換えれば、耐久性要求が低い）ファイルが、例えば標準仕様上で定まっている。そのため、書き換え対象となるファイルの書き換え頻度を指定することができる。図４（Ｂ）に示すステップＳ１１では、ＣＰＵ１１は、書き込み対象のファイルのデータ、ファイルＩＤ、ファイルサイズ、及びArea指定情報を、書き込みコマンドから取得する。次いで、ＣＰＵ１１は、取得したArea指定情報に基づいて、Area（Area(1),Area(2),Area(x)の何れか）を特定する（ステップＳ１２）。なお、Area指定情報が書き換え頻度情報である場合において、ＣＰＵ１１は、取得した書き換え頻度情報に示される書き換え頻度が高い場合には、網目が粗い領域Area(1)を特定する。書き換え頻度が高い（言い換えれば、耐久性要求が高い）場合は、ページの磨耗が懸念されるため、ページ内のレイアウトを疎にする必要がある。従って、網目が粗い領域Area(1)が特定される。一方、ＣＰＵ１１は、取得した書き換え頻度情報に示される書き換え頻度が低い場合には、網目が細かい領域Area(2)を特定する。書き換え頻度が低い（言い換えれば、耐久性要求が低い）場合は、ページの磨耗はしにくいため、ページ内のレイアウトを密にしてメモリの利用効率を高めることが望ましい。従って、網目が細かい領域Area(2)が特定される。次いで、ＣＰＵ１１は、特定したAreaの先頭アドレス、該Areaの網目とする分割数、及び該AreaのRFUを管理情報から取得する（ステップＳ１３）。次いで、ＣＰＵ１１は、上記特定したAreaの先頭アドレス及び該Areaの網目とする分割数と、上記取得したファイルＩＤ及びファイルサイズを基に、ファイルのデータを、上記特定したArea中のファイルデータ格納領域に書き込む（ステップＳ１４）。
【００２６】
図５は、書き換え頻度の高いファイルＡ,Ｂ（第１の書き換え頻度のファイルの一例）が、網目の粗い領域Area(1)に格納され、書き換え頻度の低いファイルＣ,Ｄ（第１の書き換え頻度より低い第２の書き換え頻度のファイルの一例）が、網目の細かい領域Area(2)に格納された場合の例を示す概念図である。図５に示す例では、書き込み対象となったファイルは、互いに異なるファイルＡ〜Ｄの４つであり、ファイルＡとファイルＣのファイルサイズは同一とし、ファイルＢとファイルＤのファイルサイズは同一とする。なお、ファイルＡとファイルＣは、ＩＣカードの標準仕様（例えばＩＳＯ７８１６−４）で規定されたＥＦ(elementary file)のうち、コマンドで読み書きできる１つのデータの集合であるファイル（Transparent structure：(EF-TR)）である。一方、ファイルＢとファイルＤは、上記ＥＦのうち、コマンドで読み書きできる１つのデータの集合が同一長のレコード（図５の例では、レコードrec1とレコードrec2の２つのレコード）単位となり、連なっているファイル（Linear structure with records of fixed size：(EF-LF)）である。図５に示す例では、ＣＰＵ１１は、管理情報に基づいて、１つのファイルデータ格納領域Ｒｘに、互いに異なる複数のファイル（例えばファイルＡとファイルＢ（rec1)）のデータを書き込むようになっている。また、図５に示す例では、ＣＰＵ１１は、管理情報に基づいて、互いに異なる複数のファイルのうち、書き換え頻度の高いファイルＡ,Ｂのデータを網目の粗い領域Area(1)に書き込み、書き換え頻度の低いファイルＣ,Ｄのデータを網目の細かい領域Area(2)に書き込むようになっている。また、図５に示す網目の粗い領域Area(1)では、ファイルＢを格納するために、３つのページが利用されている一方、図５に示す網目の細かい領域Area(2)では、ファイルＤを格納するために、２つのページが利用されている。このように、書き込み対象となるファイルが、磨耗軽減の必要があるファイル（書き換え耐久性が高いファイル）であれば、メモリを余分に使用するものの、網目が粗い領域Area(1)に格納する一方、書き込み対象となるファイルが、磨耗軽減の必要がないファイル（書き換え耐久性が低いファイル）であれば、網目が細かい領域Area(2)に格納することで利用効率を高めることができる。
【００２７】
以上説明したように、上記実施形態によれば、１つのファイルデータ格納領域が複数に分割された領域として管理する管理情報をフラッシュメモリ１３に記憶させ、この管理情報により、メモリ上において分割数が異なる少なくとも２つ以上のファイルデータ格納領域（例えば、網目が粗いファイルデータ格納領域と、網目が細かいファイルデータ格納領域）を設定するように構成したので、書き込み対象となるファイルの書き換え頻度（言い換えれば、書き換え耐久性）に応じて格納させるファイルデータ格納領域を使い分けることが可能となり、その結果、フラッシュメモリ１３の磨耗度を軽減させつつ、メモリの利用効率をより効率良く高めることができる。
【００２８】
また、上述したように、ファイルデータ格納領域を２の乗数で等分割する構成によれば、２進数を扱っているため、ＣＰＵ１１の負荷を軽減（つまり、ＣＰＵ計算が楽になる）することができる。
【００２９】
更に、ファイルデータ格納領域を等分割する構成によれば、ＣＰＵ１１は、ある特定のファイルを見つけるときに、「検索」ではなく「計算」で求めることが可能となる。ＣＰＵ１１が、例えば２５０個のレコードを持つファイルの、２５０番目のレコードを見つける処理を仮定すると、仮に、ファイルデータ格納領域が等分割ではなくランダムになっていた場合、レコードもランダムに配置されるため、各レコードのアドレス（番地）をメモリのどこかに記憶しておいて、その番地を辿ることによって、２５０番目のレコードの位置を見つけることになる。このような処理は「検索」であるが、最大で２５０回繰り返し処理を行うこととなる。また、２番目のレコードと２５０番目のレコードでは、繰り返し回数が異なる。
【００３０】
一方、ファイルデータ格納領域を等分割する構成によれば、ＣＰＵ１１は、ある規則によって等分割された位置にレコードが配置されていると分かれば、例えば、以下のような式により計算によって、迅速に、２５０番目のレコードの位置を見つけることができる。
「２５０番目のアト゛レス＝２５０×(等分割された網目のサイス゛)＋ファイルの先頭アト゛レス」
このように、仮に２５０番目のレコードでも、２番目のレコードでも、計算のコスト（負荷）は一律になる。
【符号の説明】
【００３１】
１  ＩＣカード
１ａ  ＩＣチップ
１１  ＣＰＵ
１２  ＲＡＭ
１３  フラッシュメモリ
１４  Ｉ／Ｏ回路
【図１】
0005895565.tif 000002
【図２】
0005895565.tif 000003
【図３】
0005895565.tif 000004
【図４】
0005895565.tif 000005
【図５】
0005895565.tif 000006