以下、本技術を実施するための形態(以下、実施の形態という)について説明する。なお、説明は以下の順序で行う。
1−1.比較のためのICチップの例
1−2.データ転送処理
1−3.検索DB生成処理
1−4.検索処理
1−5.データ更新処理
2−1.本技術を適用した情報処理装置の構成
2−2.データ転送処理
2−3.検索処理
2−4.データ更新処理
2−5.更新データ転送処理
3.その他
[比較のためのICチップの例]
最初に、本技術を適用した場合のICチップと比較するためのICチップについて説明する。図1は、比較のためのICチップ1の構成を示すブロック図である。図1のICチップ1は、CPU21、RAM22、NVM(Non-Volatile Memory)23、IRQ(Interrupt Request)制御部24、ROM(Read Only Memory)25、電源制御部26、およびCRC(Cyclic Redundancy Check)回路27から構成される。
CPU21は、例えば、NVM23、ROM25に記憶されているプログラムを、RAM22にロードすることにより、各種の処理を実行する。
IRQ制御部24は、割り込み処理を制御する。電源制御部26は、ICチップ1の電力の供給を制御する。CRC回路27は、CRCの検定処理および生成処理を実行する。
次に図2乃至図4を参照して、NVM23に記録されているデータについて説明する。図2は、NVM23のメモリ構造の例を示す図である。
図2に示されるように、NVM23には、有効ブロック管理領域(図面には、データ領域_有効ブロック管理領域と記載されている)41−1,41−2と、データ領域42−0乃至42−503等の管理情報が記録されている。また、それがのアドレスであるOffset_Address,Page_Address,Block_Addressが記録される。
なお、有効ブロック管理領域41−1,41−2、およびデータ領域42−0乃至42−503を個々に区別する必要がない場合、以下単に、有効ブロック管理領域41、およびデータ領域42と記述する。他の構成要素についても同様とする。
データ領域42には、所定のデータが格納される。各データはブロック(=32バイト)という単位で扱われる。また、各ブロックは、NVM23内では、ページ(=4ブロック=128バイト)という単位で扱われる。各データのアドレスは1バイト(=8ビット)で示される。
有効ブロック管理領域41は、データ領域42内の各ブロックの有効または無効(すなわち未使用または使用中)を示すデータを格納する。有効ブロック管理領域41では、1ブロックにつき1ビットが割り当てられている。図3を参照して、有効ブロック管理領域41の詳細について説明する。
図3は、有効ブロック管理領域41の詳細を説明する図である。図3Aには、管理領域0と管理領域1を有する有効ブロック管理領域41−1の例が示され、図3Bには、管理領域2と管理領域3を有する有効ブロック管理領域41−2の例が示されている。
有効ブロック管理領域41−1は、ページ領域61−0乃至61−251の252個のページ領域61と、CRC1−1, CRC1−2,CRC2−1,CRC2−2を有している。1つのページ領域61とCRCには、4ビットが割り当てられている。
例えば、管理領域0は、Block_Addressが0x0,0x1とされ、管理領域1は、Block_Addressが0x2,0x3とされる。Offset_Addressは、0x00乃至0x1Fとされる。
例えば、ページ0とページ1のデータは、Offset_Address 0x00に保持されている1バイトのデータの、上位4ビットと下位4ビットでそれぞれ表され、ページ2とページ3のデータは、Offset_Address 0x01に保持されている1バイトのデータの、上位4ビットと下位4ビットでそれぞれ表される。
有効ブロック管理領域41−2も同様である。
図4を参照して、ページ領域61の詳細について説明する。
図4は、ページ領域61の詳細を説明する図である。例えば図4に示されるように、ページ領域61−0,61−1は、それぞれ4つのブロックBlock0,Block1,Block2,Block3のフラグを有している。
各ブロックのフラグは1ビットで表されている。具体的には、Offset_Address 0x00に保持されているデータの上位4ビットであるBit7乃至Bit4が、偶数ページ(例えばページ0)のBlock0乃至Block3のフラグとされている。
同様に、Offset_Address 0x00に保持されているデータの下位4ビットであるBit3乃至Bit0が、奇数ページ(例えばページ1)のBlock0乃至Block3のフラグとされている。
フラグの0は、そのブロックが有効(データ領域42が未使用)であることを表し、フラグの1は、そのブロックが無効(データ領域42が使用中)であることを表す。
[データ転送処理]
次に、データを検索する場合の一連の処理について説明する。この場合、NVM23の該当する有効ブロック管理領域が読み出され、RAM22に転送、記憶される。転送された有効ブロック管理領域のデータを基に、検索用データベースがRAM22に作成される。検索用データベースに基づいてデータが検索される。
また、NVM23の有効ブロック管理領域を更新する場合、まずRAM22の有効ブロック管理データが更新される。そして、更新された有効ブロック管理データがRAM22から読み出され、NVM23に転送され、NVM23の有効ブロック管理データが更新される。以上の処理を個別に説明すると、次のようになる。
図5を参照して、CPU21のデータ転送処理について説明する。図5は、CPU21のデータ転送処理を説明するフローチャートである。
ステップS1において、CPU21は、NVM23に有効ブロック管理領域のデータのリードのためにアクセスする。
ステップS2において、CPU21は、NVM23から有効ブロック管理領域のデータを取得する。例えば、図2の有効ブロック管理領域41−1が取得される。
ステップS3において、CPU21は、RAM22に有効ブロック管理領域のデータを記録する。例えば、NVM23に記録されている有効ブロック管理領域41−1がRAM22に展開される。これらの処理は、必要に応じて複数回繰り返された後、終了する。
[検索DB生成処理]
次に、図6を参照して、CPU21の検索DB(Database)生成処理について説明する。図6は、CPU21の検索DB生成処理を説明するフローチャートである。CPU21の検索DB生成処理は、図5のデータ転送処理が実行された後、開始される。
ステップS21において、CPU21は、RAM22に有効ブロック管理領域のデータのリードのためにアクセスする。すなわち、図5のステップS3の処理でRAM22に記録された有効ブロック管理領域のデータを読み出すための処理が行われる。
ステップS22において、CPU21は、有効ブロック管理領域のデータを取得する。すなわち、図5のステップS3の処理でRAM22に記録された有効ブロック管理領域のデータが読み出され、記憶される。
ステップS23において、CPU21は、検索DBを生成する。CPU21が有効ブロック管理領域のデータを1つずつ検索する場合、処理時間が長くなる。そこで、検索を効率的に行うために有効ブロック管理領域のデータから検索DBが生成される。検索DBは、例えば、ハッシュテーブル、バイナリテーブルなどのアルゴリズムにより生成される。
ステップS24において、CPU21は、RAM22に検索DBを記録する。すなわち、ステップS23の処理で生成された検索DBがRAM22に記録される。これらの処理は、必要に応じて複数回繰り返された後、終了する。
このように、ICチップ1では、RAM22に検索DBを記録するための領域を、有効ブロック管理領域とは別に確保する必要がある。
[検索処理]
次に、図7を参照して、CPU21の検索処理について説明する。図7は検索処理を説明するフローチャートである。この検索処理は、図6の検索DB生成処理が完了した後、開始される。
ステップS61において、CPU21は、検索情報を取得する。検索情報は、例えば、検索対象のID(Identification)などである。
ステップS62において、CPU21は、RAM22に検索DBから検索情報をリードするためにアクセスする。すなわち、図6のステップS24の処理でRAM22に記録された検索DBを読み出すための処理が実行される。
ステップS63において、CPU21は、検索されたデータのアドレスを取得する。すなわち、ステップS61の処理で取得された検索情報(例えばID)に対応するアドレスがRAM22の検索DBから取得される。
ステップS64において、CPU21は、アドレスに対応するデータのリードのためにアクセスする。すなわち、ステップS63の処理で取得されたアドレスに対応するデータを読み出すための処理が実行される。
ステップS65において、CPU21は、データを取得する。すなわち、検索情報に対応するデータが読み出される。
[データ更新処理]
次に図8を参照して、CPU21の有効ブロック管理領域のデータ更新処理について説明する。図8は、CPU21のデータ更新処理を説明するフローチャートである。この有効ブロック管理領域のデータ更新処理は、有効ブロック管理領域のデータを更新する必要が生じたとき開始される。
ステップS81において、CPU21は、更新データを取得する。すなわち、新たにNVM23の有効ブロック管理領域に記録されるデータが取得される。
ステップS82において、CPU21は、RAM22の有効ブロック管理領域のデータを更新する。すなわち、ステップS81で取得された有効ブロック管理領域のデータがRAM22の有効ブロック管理領域に記録される。
例えば、新たなデータが記録されたデータ領域に対応する有効ブロック管理領域のフラグが有効から無効に更新される。またはデータが削除されたデータ領域に対応する有効ブロック管理領域のフラグが無効から有効に更新される。
ステップS83において、CPU21は、有効ブロック管理領域のデータのリードのためにアクセスする。すなわち、更新された有効ブロック管理領域を読み出すための処理が実行される。
ステップS84において、CPU21は、有効ブロック管理領域のデータを取得する。すなわち、更新された有効ブロック管理領域のデータが読み出され、取得される。
ステップS85において、CPU21は、有効ブロック管理領域を更新する。すなわち、RAM22上で更新された有効ブロック管理領域のデータがNVM23に転送され、記録される。ステップS85の処理の後、CPU21のデータ更新処理は終了する。
このように、CPU21は、NVM23に格納されている有効ブロック管理領域を一旦RAM22にコピーし、所定の処理を実行し、再びNVM23に転送し、記録する。
しかし、これらの処理は全てCPU21を介して実行されるので、CPU21の負荷が大きくなる。
また、NVM23へのアクセスは時間がかかるので、そのアクセス数を減らしてデータの検索を効率的に行うために、検索DBが生成され、RAM22に記録される。従って、検索DBのための記録領域をRAM22に確保しなければならないばかりでなく、迅速な検索が困難となる。
さらに、図3と図5に示したように、ICチップ1においては、4ビット単位でデータが管理されている。しかし、CPU21は、1バイト単位でアクセスを行うので、実際には不要な4ビットも含めて読み出し、書き込みの処理を実行する必要があり、効率的でなく、迅速な処理が困難となる。
以上の問題点を解決するための本実施の形態の情報処理装置の構成例を以下に示す。
[本技術を適用した場合の情報処理装置の構成]
図9は、情報処理装置101の一実施の形態の構成を示すブロック図である。情報処理装置101は、例えば、携帯電話機などにより構成される。
情報処理装置101は、電源回路121、通信用CPU122、アプリケーション用CPU123、アンテナ124、メインメモリ125、内部不揮発性メモリ126、外部不揮発性メモリ127、入力部128、出力部129、カメラ130、および外部I/O(Input/Output)131から構成される。
電源回路121は、図示せぬ電池などから供給される電力を、通信用CPU122、アプリケーション用CPU123、外部I/O131の外部接続端子151、その他に供給する。
通信用CPU122は、アンテナ124を介して各種の通信処理を制御する。アプリケーション用CPU123は、各種のアプリケーションを実行する。なお、通信用CPU122とアプリケーション用CPU123は、一体化した1つのCPUにより構成することもできる。
メインメモリ125は、例えばDRAM(Dynamic Random Access Memory)により構成される。内部不揮発性メモリ126および外部不揮発性メモリ127は、各種の情報を記憶、保持する。外部不揮発性メモリ127は、必要に応じて装着される。
通信用CPU122とアプリケーション用CPU123は、例えば、内部不揮発性メモリ126または外部不揮発性メモリ127に記憶されているプログラムをメインメモリ125にロードし、そのプログラムに従って各種の処理を実行する。
入力部128は、例えば、キーボード、ボタン等のユーザインタフェースにより構成され、所定の情報を入力するときユーザにより操作される。
出力部129は、例えば、画像や音楽を出力するLCD(Liquid Crystal Display)、有機EL(Electro Luminescence)ディスプレイ、スピーカなどにより構成される。
カメラ130は、CCD(Charge Coupled Device)イメージセンサ、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどにより構成される。
外部I/O131は、外部接続端子151、SIM(Subscriber Identity Module)/USIM(Universal SIM)152、無線LAN(Local Area Network)通信部153、Bluetooth(商標)通信部154、赤外線通信部155、およびFeliCa(商標)などのICチップ156などにより構成される。
外部接続端子151は、例えばUSB(Universal Serial Bus)171などにより構成される。SIM/USIM152は、電話番号を特定するための固有のIDを保持する。
無線LAN通信部153、Bluetooth通信部154、赤外線通信部155、およびICチップ156は、無線で各種の通信機器と各種の情報を通信する。
図10は、ICチップ156の構成を示すブロック図である。なお、本技術は、 FeliCaに限らず、同様の構成を有するICチップにも適用することができる。
ICチップ156は、RF(Radio Frequency)チップ201と、SAM(Secure Application Module)チップ202から構成される。
RFチップ201は、情報処理装置101のアプリケーション用CPU123および外部の通信機器と各種の情報を通信する。SAMチップ202は、ICチップ156のメインチップとして構成され、各種の情報を格納する。
SAMチップ202は、制御部としてのCPU221、第2の記憶部としてのRAM222、第1の記憶部としてのNVM223、例えばRAMにより構成される変換部224、検索部225、IRQ制御部227、ROM228、電源制御部229、およびCRC回路230から構成される。
CPU221は、プログラムに従って各種の動作を制御する。このプログラムにより、CPU221は実質的に、取得部241、出力部242、判定部243、および記録部244の機能ブロックを有している。なおCPU221の各ブロックは、必要に応じて相互に信号、データを授受することが可能とされている。
CPU221は、例えば、NVM223、ROM228に記憶されているプログラムをRAM222にロードし、そのプログラムに従って各種の処理を実行する。
変換部224は、NVM223に記録された有効ブロック管理領域用メモリのデータを展開する。また、変換部224は、レジスタを有し、レジスタによりNVM223とRAM222とのDMA(Direct Memory Access)転送が制御される。変換部224は、実質的にDMAコントローラを内蔵する。
CPU221とは別にハードウェアで構成される検索部225は、レジスタを有し、レジスタの制御によりNVM223に記録された所定のデータを検索する。
なお、NVM223に記録されているデータは、図2乃至図4を参照して説明したNVM23のデータと同様である。すなわち4ビット単位でデータが管理されている。
ただし、後述するように、CPU221と検索部225から見た場合、図14乃至図16に示されるように記憶されているものと解釈される。
IRQ制御部227は、割り込み処理を制御する。電源制御部229は、ICチップ156の電力の供給を制御する。CRC回路230は、CRCの検定処理および生成処理を実行する。
[データ転送処理]
図11と図12を参照して、データ転送処理について説明する。図11は、CPU221のデータ転送処理と変換部224のデータ転送処理を説明するフローチャートである。図12は、RAM222に記録されたデータの例を示す図である。
CPU221のデータ転送処理は、例えば、SAMチップ202の電源制御部229により電力が供給された場合に開始される。
ステップS201において、CPU221の出力部242は、変換部224に有効ブロック管理領域のデータ転送コマンドをセットする。すなわち、CPU221から変換部224に有効ブロック管理領域のデータの転送コマンドが送信される。ステップS201の処理の後、CPU221のデータ転送処理は終了する。
ステップS221において、変換部224は、CPU221からデータ転送コマンドを取得する。すなわち、有効ブロック管理領域のデータの転送コマンドが取得され、レジスタにセットされる。
ステップS222において、変換部224は、レジスタにセットされたコマンドに従って、NVM223に有効ブロック管理領域のデータのリードのためにアクセスする。すなわち、NVM223から有効ブロック管理領域のデータを読み出すための処理が実行される。
ステップS223において、変換部224は、NVM223から読み出された有効ブロック管理領域のデータを取得する。例えば、図2の有効ブロック管理領域41−1と同様のデータが取得される。
ステップS224において、変換部224は、RAM222に有効ブロック管理領域のデータを記録する。例えば、図12に示されるように、NVM223に記録されている有効ブロック管理領域41−1,41−2のコピーがRAM222に展開される。ステップS224の処理の後、変換部224のデータ転送処理は終了する。
以上の処理はレジスタに保持されたコマンドに応じて、複数回実行される。
このように、CPU221に代わり変換部224がデータ転送処理を実行するので、CPU221の負荷を軽減し、効率的に処理を実行することできる。
図11のデータ転送処理によりRAM222に記録された有効ブロック管理領域は、CPU221から所定のデータが読み出される場合、変換部224により、仮想的にデータフォーマットが変換される。図13乃至図16を参照して、有効ブロック管理領域のデータフォーマットについて説明する。
図13は、データフォーマットの例を示す図である。図11のデータ転送処理が実行されると、RAM222には有効ブロック管理領域としての1024ビットのNVMアクセス領域301が記録される。
すなわち、NVM223に記録されている有効ブロック管理領域のコピーがNVMアクセス領域301としてRAM222に記録される。
NVMアクセス領域301には、例えば、1アドレス(=1バイト)にページ領域321−0,321−1の2ページ分の管理情報が格納されている。
NVMアクセス領域301の全体には、252ページ(126バイト)分の管理情報と、それらに対する2バイトのエラーチェックコード(CRC)が付加されている。CRCは、管理情報が変更されると、その都度再計算され、更新される。
CPU221は、バイト単位のアクセスを基本としているため、NVMアクセス領域301のように1アドレスに2ページ分のデータが格納されている場合、1ページ毎の処理を実行することができない。
そこで、変換部224に、図13に示される2048ビットの有効ブロック管理領域302が仮想的に形成され、これによりCPU221または検索部225がアクセスする場合のデータフォーマットが変換される。
具体的には、各バイトがMSB(Most Significant Bit)側の4ビットと、LSB(Least Significant Bit)側の4ビットに分割される。そして分割された4ビットが新たなバイトのLSB側に配置され、新たなバイトのMSB側に4ビットの0が挿入される。
すなわちページ領域321のMSB側に4ビットの0を付加して新たなバイトが形成される。例えば4ビットのページ領域321−0の前に4ビットの0が付加されて、新たなバイト331とされ、4ビットのページ領域321−1の前に4ビットの0が付加されて、別の新たなバイト332とされる。
なお、CRC322についても同様に、各バイトがMSB(Most Significant Bit)側の4ビットと、LSB(Least Significant Bit)側の4ビットに分割される。そして分割された4ビットが新たなバイトのLSB側に配置され、新たなバイトのMSB側に4ビットの0が挿入される。
例えばCRC322がMSB側の4ビットと、LSB側の4ビットに分割され、分割された4ビットが新たなバイトのLSB側に配置され、新たなバイトのMSB側に4ビットの0が挿入されて、新たなバイトのCRC342−1,342−2が形成される。
この場合、新たに形成されたCRC342は、CRCとしては意味はないが、CPU221が他のアドレスと同様に扱うことができるので、効率的に処理を実行することができる。
有効ブロック管理領域302は、NVMアクセス領域301を仮想的にミラーリングしていることになる。
管理情報は、NVM223においてはNVMアクセス領域301の形式で記憶されている。しかし管理情報は、NVM223のブロックに対して情報を書き込むか読み出すCPU221または検索部225に対しては、有効ブロック管理領域302の形式で提供される。
これにより、バイト単位でのアクセスが可能となる。しかし、そのバイトのMSB側の4ビットは意味を有していないので、実質的には4ビット単位でデータにアクセスが行われていることになる。その結果、効率的で迅速な処理が可能となる。
図14と図15は、図13の有効ブロック管理領域302の具体的な例を示す図である。図16は、1アドレス領域の具体的な例を示す図である。
図14Aの管理領域361−1と図14Bの管理領域361−2により、図13の有効ブロック管理領域302が構成される。同様に、図15Aの管理領域361−11と図15Bの管理領域361−12により、図13の有効ブロック管理領域302が構成される。
図14と図15の管理領域361のうち空白の欄には、図16に示されるように、4ビット(Bit7乃至Bit4)分の0が格納されている。
例えばページ0のBlock0乃至Block3の記録状態は、Offset_Address 0x00に保持されている1バイトのデータのLSB側の4ビット(Bit3乃至Bit0)により表され、ページ1の記録状態は、Offset_Address 0x01に保持されている1バイトのデータのLSB側の4ビットにより表される。
つまり、NVM223には、図3と図4に示されるように記憶されている管理情報が、図14乃至図16に示されるように変換されてCPU221と検索部225に対して提供される。
このように、データフォーマットを変換することで、1アドレスに1ページ分のデータが仮想的に格納されることになり、CPU221は1バイト単位で実質的に4ビット単位のアクセスを行うことができ、負荷が軽減されるとともに、効率的に処理を実行することができる。
[検索処理]
次に、図17を参照して、検索処理について説明する。図17はCPU221の検索処理、変換部224の検索処理、および検索部225の検索処理を説明するフローチャートである。CPU221の検索処理は、検索情報が指示されたときに開始される。
ステップS321において、CPU21の取得部241は、初期値を取得する。初期値は、例えば、検索情報、検索開始アドレス、および検索終了アドレスなどである。
ステップS322において、CPU21の出力部242は、検索部225に初期値をセットする。すなわち、ステップS321の処理で取得された初期値が検索部225に出力される。またこのとき、検索のコマンドも出力される。
ステップS341において、検索部225は、初期値を取得する。すなわち、ステップS322の処理で出力された初期値が取得され、レジスタにセットされる。このとき、検索コマンドもレジスタにセットされる。
ステップS342において、検索部225は、変換部224に有効ブロック管理領域のリードのためにアクセスする。すなわち、有効ブロック管理領域を読み出すための処理が実行される。このとき図13の有効ブロック管理領域302による管理情報のデータフォーマットの変換が要求される。
ステップS361において、変換部224は、有効ブロック管理領域の管理情報のデータフォーマットの変換の要求を取得する。
ステップS362において、変換部224は、有効ブロック管理領域の管理情報のデータフォーマットを変換し、RAM222に出力する。
ステップS363において、変換部224は、RAM222から読み出されたデータであって、変換されたデータフォーマットで指定された有効ブロック管理領域のデータを取得する。このデータは、図11のステップS224の処理で、RAM222に記憶されたものである。
ステップS364において、変換部224は、検索部225に有効ブロック管理領域のデータを出力する。すなわち、ステップS363の処理でRAM222から取得された有効ブロック管理領域のデータが、検索部225に出力される。ステップS364の処理の後、変換部224の検索処理は終了する。
ステップS343において、検索部225は、有効ブロック管理領域のデータを取得する。すなわち、ステップS364の処理で変換部224から出力された有効ブロック管理領域のデータが取得される。
ステップS344において、検索処理が実行される。すなわち、検索処理により検索対象のデータのアドレスが取得される。検索部225の検索処理の詳細は、図19を参照して後述する。
ステップS345において、検索部225は、NVM223にデータのリードのためにアクセスする。すなわち、ステップS344の処理で検索された検索対象のデータのアドレスに対応する、NVM223のデータ領域のデータの読み出しのための処理が実行される。
ステップS346において、検索部225は、NVM223からデータを取得する。すなわち、ステップS344の処理で検索されたデータが取得される。
ステップS347において、検索部225は、取得されたデータと検索データを比較する。すなわち、取得されたデータと初期値に含まれる検索データが一致するかが判定される。
ステップS348において、検索部225は、CPU221に割り込みを通知する。すなわち、CPU221に検索結果が通知される。ステップS348の処理の後、検索部225の検索処理は終了する。
割り込みが通知された後のCPU221の処理は、図18を参照して後述する。
次に、図18乃至図20を参照して、検索処理の詳細について説明する。図18は、CPU221の検索処理の詳細を説明するフローチャートである。図19は、検索部25の検索処理の詳細を説明するフローチャートである。図20は、検索部225の検索処理を説明する図である。
図18においてステップS401,S402の処理は、図17のステップS321,S322の処理に対応する処理である。また、図19においてステップS421,S425,S432,S433,S435の処理は、図17のステップS341,S343,S346乃至S348に対応する処理である。従って、これらの処理は繰り返しになるので簡単に説明する。
図18のステップS401において、CPU221の取得部241は、初期値を取得する。ステップS402において、CPU221の出力部242は、検索部225に初期値をセットする。
図19のステップS421において、検索部225は、ステップS402でCPU221から出力された初期値を取得する。
ステップS422において、検索部225は、開始アドレスがスタートアドレスであるかを判定する。すなわち、ステップS421の処理で取得された初期値に含まれる検索開始アドレスが新規スタートであるか、または前の状態の続きからの再スタートであるかが判定される。
ステップS422において、開始アドレスが新規スタートであると判定された場合、ステップS423において、検索部225は、開始アドレスを生成する。すなわち、初期値に含まれる有効ブロック管理領域の検索開始アドレスからNVM223のデータ領域の開始アドレスが生成される。
ステップS424において、検索部225は、終了位置を設定する。すなわち、初期値に含まれる検索終了アドレスからフラグを検索する終了位置が設定される。
一方、ステップS422において、開始アドレスが新規スタートでないと判定された場合、すなわち再スタートである場合、ステップS423,S424の処理はスキップされ、処理はステップS425に進む。
ステップS425において、検索部225は、変換部224から有効ブロック管理領域のデータを取得する。例えば、図20に示されるように、変換部224のNVMアクセス領域301のデータが取得される。NVMアクセス領域301には、1024ビットの専用領域が4個(つまり4096ビット分)設けられている。
ステップS426において、検索部225は、ブロック情報を取得する。すなわち、有効ブロック管理領域のデータのうち、新規スタートの開始アドレスまたは再スタートのアドレスに対応するブロック情報、すなわちフラグが取得される。
ステップS427において、検索部225は、検索カウンタを1だけインクリメントする。なお、検索カウンタの初期値は0とする。図20に示されるように、検索部225のシフトレジスタ371より1つのブロックのフラグが取得された場合、検索カウンタ382は1だけインクリメントされる。
ステップS428において、検索部225は、ブロックのフラグが有効であるかを判定する。例えば、図20に示されるようにフラグ381として0が取得された場合、フラグは未使用を意味するので、有効であると判定される。
ステップS428において、ブロックのフラグが有効であると判定された場合、ステップS429において、検索部225は、終了位置であるかを判定する。すなわち、現在のブロックの位置がステップS424の処理で設定された終了位置であるかが判定される。
ステップS429において、まだ終了位置でないと判定された場合、ステップS430において、検索部225は、次のブロック情報を取得する。すなわち、次のブロックに対応するアドレスが取得され、アドレスに対応するブロック情報が取得される。
なお、図20に示されるように、NVMアクセス領域301のうち、CRC322の領域およびその冗長データの領域が格納されたブロックはスキップされる。
ステップS430の処理の後、処理はステップS427に戻り、それ以降の処理が繰り返される。
一方、例えば、図20に示されるようにフラグ381として1が取得された場合、フラグは使用中を意味するので、ステップS428において、ブロックのフラグが無効である(有効ではない)と判定される。
この場合、ステップS431において、検索部225は、検索カウンタ382に基づいて、NVM223のアドレスを生成する。検索カウンタ382は、図20のNVMアクセス領域301(有効ブロック管理領域)では、1ブロック毎に1だけインクリメントされる。
一方、NVM223のデータ領域では、1ブロックに対して32バイトが割り当てられている。従って、検索カウンタ382のカウンタ数と32バイトの積と、ステップS423の処理で生成されたNVM223の開始アドレスとの和を算出することでNVM223のアドレスが生成される。
ステップS432において、検索部225は、NVM223からステップS432の処理で生成されたアドレスに対応するデータを取得する。すなわち、NVM223のデータ領域に記録されているデータが取得される。
ステップS433において、検索部225は、取得されたデータと検索データが一致するかを判定する。すなわち、NVM223のデータ領域に記録されていたデータが、検索対象のデータであるかが判定される。
ステップS433において、取得されたデータと検索データが一致しないと判定された場合、すなわち、取得されたデータと検索データが異なる場合、処理はステップS429に進む。
一方、ステップS433において、取得されたデータと検索データが一致すると判定された場合、すなわち、取得されたデータが検索データである場合、処理はステップS434に進む。
ステップS434において、検索部225は、生成されたアドレスをRAM222に記録する。すなわち、ステップS431の処理で生成されたアドレスが、検索データのアドレスとしてRAM222に記録される。
ステップS434の処理の後、およびステップS429の処理で終了位置であると判定された場合、ステップS435において、検索部225は、割り込みおよび結果フラグを通知する。
すなわち、IRQ制御部227の制御によりCPU221に割り込みが通知されるとともに、検索部225の検索処理の結果フラグが通知される。
結果フラグは、ステップS434の処理が実行された場合、検索成功を表すフラグとされ、ステップS429の処理で終了位置であると判定された場合、検索失敗を表すフラグとされる。
ステップS435の処理の後、検索部225の検索処理は終了する。
図18の説明に戻って、ステップS403において、CPU221の判定部243は、割り込みが通知されたかを判定する。ステップS403において、まだ割り込みが通知されていないと判定された場合、処理はステップS403に戻り、同様の処理が繰り返される。
一方、ステップS403において、割り込みが通知されたと判定された場合、すなわち、図19のステップS435の処理で検索部225から割り込みが通知された場合、処理はステップS404に進む。
ステップS404において、CPU221の取得部241は、結果フラグを取得する。すなわち、図19のステップS435の処理で通知された結果フラグが取得される。
ステップS405において、CPU221の判定部243は、検索に成功したかを判定する。すなわち、結果フラグが検索成功を表すフラグであるかが判定される。
ステップS405において、検索に成功したと判定された場合、ステップS406において、CPU221の取得部241は、RAM222からアドレスを取得する。すなわち、図19のステップS434の処理で記録されたアドレスが取得される。
ステップS407において、CPU221の取得部241は、NVM223のデータ領域からアドレスに対応するデータを取得する。すなわち、検索対象のデータが取得される。
一方、ステップS405において、検索に成功しなかったと判定された場合、すなわち検索に失敗した場合、CPU221の出力部242は、エラーを出力する。出力されたエラーは、例えば、情報処理装置101の出力部129により出力される。
ステップS407,S408の処理の後、ステップS409において、CPU221の判定部243は、全てのデータの検索が終了したかを判定する。
ステップS409において、まだ全てのデータの検索が終了していないと判定された場合、処理はステップS401に戻り、それ以降の処理が繰り返される。
一方、ステップS409において、全てのデータの検索が終了したと判定された場合、CPU221の検索処理は終了する。
このように、データの検索処理を検索部225に実行させることで、CPU221の負荷が低減され、より効率的に処理を実行することができる。
[データ更新処理]
次に、図21を参照して、有効ブロック管理データの更新処理について説明する。図21は、CPU221のデータ更新処理および変換部224のデータ更新処理を説明するフローチャートである。
この有効ブロック管理データ更新処理は、有効ブロック管理領域のデータを更新する必要が生じたとき開始される。例えば、NVM223のデータ領域に新たなデータが記録されたり、NVM223のデータ領域に記録されたデータが削除されたとき開始される。
ステップS541において、CPU221の出力部242は、変換部224に更新データに対応する有効ブロック管理データを出力する。具体的には、フラグが出力される。ステップS541の処理の後、CPU221の有効ブロック管理データの更新処理は終了する。
ステップS561において、変換部224は、有効ブロック管理データを取得する。すなわち、ステップS541の処理でCPU221から出力された有効ブロック管理のためのフラグが取得される。
ステップS562において、変換部224は、データフォーマットを変換する。すなわち、CPU221から参照された有効ブロック管理データは、図13の有効ブロック管理領域302のように、1つのアドレスに対して1ページ分の管理情報が参照されるデータフォーマットである。
これが、図13のNVMアクセス領域301に示されるような、1つのアドレスに対して2ページ分の管理情報が参照されるデータフォーマットに変換される。
ステップS563において、変換部224は、RAM222に有効ブロック管理データを記録する。すなわち、CPU221から取得され、データフォーマットが変換されたNVMアクセス領域301のフラグのデータがRAM222に記録される。
例えば、新たなデータが記録されたデータ領域に対応する有効ブロック管理のフラグが有効から無効に更新される、またはデータが削除されたデータ領域に対応する有効ブロック管理のフラグが無効から有効に更新される。
ステップS563の処理の後、変換部224のデータ更新処理は終了する。
[更新データ転送処理]
次に、図22を参照して、図21のデータ更新処理により更新されたRAM222の有効ブロック管理データをNVM223に転送する処理について説明する。
図22は、CPU221の更新データ転送処理および変換部224の更新データ転送処理を説明するフローチャートである。CPU221の更新データ転送処理は、図21のデータ更新処理が終了した後、所定のタイミングで開始される。
ステップS581において、CPU221の出力部242は、変換部224に有効ブロック管理データ転送コマンドをセットする。ステップS581の処理の後、CPU221の更新データ転送処理は終了する。
ステップS601において、変換部224は、データ転送コマンドを取得する。すなわち、ステップS581の処理でCPU221から出力されたデータ転送コマンドが取得される。
ステップS602において、変換部224は、有効ブロック管理データのためにアクセスする。すなわち、更新された有効ブロック管理データを読み出すための処理が実行される。
ステップS603において、変換部224は、有効ブロック管理データを取得する。すなわち、更新された有効ブロック管理データ(つまり、NVMアクセス領域301の全データ)が取得される。
ステップS604において、変換部224は、NVM223に有効ブロック管理データを記録する。すなわち、更新された有効ブロック管理データがNVM223に記録される。ステップS604の処理の後、変換部224の更新データ転送処理は終了する。
このように、CPU221の負荷を低減し、効率的にまた迅速に処理を実行することができる。
なお、上記処理を実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われる処理であっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
[その他]
本技術の実施の形態は、上述した実施形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。また、本技術の実施の形態は、一部の機能を他の装置が有していても良い。
なお、本技術は以下のような構成も取ることができる。
(1)
データをnビット単位でアクセスする制御部と、
mビット単位の管理データを複数個組み合わせてnビットになるように、前記管理データを記憶する記憶部と、
前記制御部が前記管理データにアクセスする場合、前記mビット単位の前記管理データを前記nビット単位の前記管理データに仮想的に変換する変換部と
を備える情報処理装置。
(2)
前記管理データは、前記記憶部のうちの、不揮発性の第1の記憶部から揮発性の第2の記憶部にコピーされ、
前記管理データは、前記第2の記憶部に記憶されるデータの処理の単位であるブロックに対するデータの記録の有無を表している
前記(1)に記載の情報処理装置。
(3)
前記管理データの1ビットは、1つの前記ブロックに対応している
前記(1)または(2)に記載の情報処理装置。
(4)
前記変換部の変換においては、前記mビットの前記管理データと、それに(n−m)個の0のビットを付加して得られるnビットの前記管理データとが対応づけられている
前記(1)から(3)のいずれかに記載の情報処理装置。
(5)
前記第1の記憶部と前記第2の記憶部は、前記管理データに対するエラーチェックコードをさらに記憶し、
前記変換部の変換では、nビットの前記エラーチェックコードをmビット毎に分割した前記エラーチェックコードと、mビット毎の前記エラーチェックコードに(n−m)個の0のビットを付加して得られるnビットの前記エラーチェックコードが対応づけられている
前記(2)乃至(4)のいずれかに記載の情報処理装置。
(6)
前記mビットは4ビットであり、前記nビットは8ビットである
前記(1)乃至(5)のいずれか記載の情報処理装置。
(7)
前記制御部、前記記憶部、および前記変換部は、ブロック単位でデータを処理するICチップに含まれ、
前記第2の記憶部では、4ブロックからなるページを単位として前記データが処理される
前記(2)乃至(6)のいずれか記載の情報処理装置。
(8)
前記制御部とは別に、前記第2の記憶部の前記データを検索する検索部をさらに備え、
前記検索部は、前記変換部を介して前記第2の記憶部から取得した前記管理データに基づいて、前記制御部から取得した検索データを検索する
前記(2)乃至(7)のいずれか記載の情報処理装置。
(9)
前記検索部は、前記管理データに基づき前記データが記録されていると判定された前記ブロックから取得された取得データと、前記検索データとが一致する場合、前記取得データの前記ブロックのアドレスを前記第2の記憶部に記憶させる
前記(8)に記載の情報処理装置。
(10)
前記制御部は、前記検索部により前記第2の記憶部に記憶された前記アドレスに対応する前記データを前記第1の記憶部から取得する
前記(8)または(9)に記載の情報処理装置。
(11)
データをnビット単位でアクセスする制御部と、
mビット単位の管理データを複数個組み合わせてnビットになるように、前記管理データを記憶する記憶部と
を備える情報処理装置の情報処理方法であって、
前記制御部が前記管理データにアクセスする場合、前記mビット単位の前記管理データを前記nビット単位の前記管理データに仮想的に変換する
情報処理方法。
(12)
データをnビット単位でアクセスする制御部と、
mビット単位の管理データを複数個組み合わせてnビットになるように、前記管理データを記憶する記憶部と
を備える情報処理装置を制御するコンピュータに実行させるためのプログラムであって、
前記制御部が前記管理データにアクセスする場合、前記mビット単位の前記管理データを前記nビット単位の前記管理データに仮想的に変換する
プログラム。