JP3801176B2 - メモリ制御方法、記憶装置、制御プログラムおよび可読記録媒体 - Google Patents
メモリ制御方法、記憶装置、制御プログラムおよび可読記録媒体 Download PDFInfo
- Publication number
- JP3801176B2 JP3801176B2 JP2003575281A JP2003575281A JP3801176B2 JP 3801176 B2 JP3801176 B2 JP 3801176B2 JP 2003575281 A JP2003575281 A JP 2003575281A JP 2003575281 A JP2003575281 A JP 2003575281A JP 3801176 B2 JP3801176 B2 JP 3801176B2
- Authority
- JP
- Japan
- Prior art keywords
- pointer
- address
- assigned
- values
- data item
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
【発明の属する技術分野】
本発明は、時間的に連続する値を格納して、最新の値を読み出し可能とするメモリ制御方法、これを用いた記憶装置、これに用いる制御プログラムおよび、これを記録した可読記録媒体に関する。
【0002】
【従来技術】
この種の技術は、例えば半導体チップ内に埋め込まれたシステムなどにおいて用いることができる。その記憶装置の適切な用途例としては、Java Card(登録商標)のようなスマートカード、スマートキーおよびスマートディスクのようなデジタルアクティブ記憶装置またはセキュリティデバイス、移動電話用のSIM(Subscriber Identity Module)およびUSIM(Universal Subscriber Identity Module)の他、データ記録デバイス、ユーザによる選択事項を記録し、設定内容を格納し、使用状況を記録する小型記録デバイス、車両内のコンピュータシステム、セットトップボックスおよびインターネットルーターなどが含まれる。
【0003】
本明細書中で用いられる用語のPDI「パーシステントデータアイテン(パーシステントデータアイテム)または永続データアイテム」は、時間とともに、特にアプリケーションプログラムによって更新されるときに変化する変数値に関連付けられており、このような更新と更新間、特に、アプリケーションが実行されていないとき、意図的に電力が供給されていないとき、即ちアプリケーションがオフに切り換えられているとき、または、偶然、例えば停電のために電力が供給されていないときに、その記録状態を維持する必要があるデータアイテムとして定義される。
【0004】
コンピュータプログラムは、変数の値を読み取り、これを更新することによって動作する。RAMにおける変数値に対しては、必要な頻度で値を書き変え、データの読み出しおよび書き込みが速いので、このことは困難ではない。プログラムが実行されていないとき、その記録状態は、より持続的なメモリに格納されている必要がある。
【0005】
スマートカードのような小規模のコンピュータプラットフォーム上においては、RAMが小さく、永続メモリは、EEPROMまたはフラッシュメモリの形をとることが多い。この永続メモリは、ビット値が変化した後に、セグメント全体が消去されるまで再度変更されないという性質を有している。EEPROMにおいて、セグメントサイズは、1バイト(8ビット)の大きさであり、永続メモリは、ほとんど、非常に遅いRAMとして処理することができる。フラッシュメモリにおいて、セグメントは、シリコン面積を有効に使うため、概してメモリ容量が大きく(例えば64KB)、消去動作も遅い。また、永続メモリは、最終的には、ある程度の回数(例えば高品質フラッシュでは、100,000回)の消去サイクルが行われ、寿命がつきる。フラッシュメモリの利点は、所定のチップ面積に対してより多くのメモリが実装され得るので格納スペースがより大きくなることであるが、EEPROMよりも効率的に用いることが困難である。
【0006】
各種処理が実行されるたびに日付および時間の記録(おそらく、カード読み取り端子から入手される)を取るスマートカードの用途を考慮して、実行と実行との間の間隔を調べる。これは、例えばキャッシュカードの日常的な引き出し金額の制限を高めるなどのセキュリティー機能のために用いられ得る。各種処理が実行されるたび、古い実行日付を読み取り、それからの間隔を調べて、新たな実行日付を格納する。これによって、その実行日付がPDI(永続データアイテム)である。この実行日付が変わるたびに同じ位置に格納される場合、物理的なメモリ制限に起因して、まず、64Kブロック全体が消去される必要がある。これには、長い時間がかかり、フラッシュメモリが急速に消耗して短寿命となる。
【0007】
この代わりに、新たな実行日付が書き込まれるたびに、メモリの新たな位置に書き込まれる必要がある。このプログラムでは、他のプログラムとフラッシュメモリを共有する必要があることが想定されるので、この一つのアプリケーションのためにのみ、フラッシュメモリの大きなブロックを予め割り当てることは、効率的ではない。すなわち、システムには多くのPDIがあり、各種処理が実行されているアプリケーションに依存して、PDIは異なる速度で更新され得る。
【0008】
Jonathan T Moore、Michael Hicks、およびScott Nettlesによる「General−Purpose Persistence Using Flash Memory」(Technical Report MS−CIS−97−3、CIS Dept.University of Pennsylvania、1997年)に開示されている公知の構成では、PDI(永続データアイテム)を、(永続データアイテム)ログとして管理する構成である。PDIが更新されるたびに、ログエントリ(更新記録)は、PDIのアイデンティティおよび新たな値とともに書き込まれる。現在の値を見つけるため、ログがスキャンされて、一番最近の値が見つけられる必要がある。ログエントリ(更新記録)のブロックが一杯である場合、各PDIの一番最近の値のみが、新たなブロックにコピーされ、古いブロックは消去される。これは、「ガーベージコレクション」(不要となったデータ記憶領域を回収してそれをまとめて利用できるようにすること)と呼ばれる。この解決方法は、フラッシュメモリスペースの点では効率的であるが、検索時間では値の読み取りが遅い。いくつかの値が、RAMにコピーされることによってキャッチ(検索)され得るが、このことによって、貴重なRAMスペースが使い果たされ、キャッシュを検索する余分な時間も必要とされる。書き込みは、ログ(更新記録)の添付のみを必要とするので速い。
【0009】
また、他の公知の構成としては、添付の図1に示すように、各PDIに対する値のリンクされたチェーンを構築する。チェーンの第1の要素は、既知のアドレスにある。チェーンの各要素は、実行日付の記録についての値を格納し、チェーンの次のアイテムへのポインタのためのスペースを有する。最後のチェーンの要素は、消去されたメモリパターン(このモデルにおいて16進法でFFFF、あるいは、相補的なモデルにおいて0000)と等しいポインタ値を有する。現在の更新日付を読み取るため、読み取りは、チェーンの始まりで開始され、値FFFFに達するまで各ポインタを順次たどる。新たな更新日付を加えるため、新たな値および空のポインタで、新たなチェーンの要素が作成される。その後、アドレスが、最後であった要素のポインタ部分の上に格納される。ガーベージコレクションが行われる場合には、チェーンの最後の値が新たなブロックにコピーされ、新たなチェーン(鎖)の始まりとして用いられる。
例:値「date2」(および以前の値「date1」および「date0」)を表すチェーン
アドレス コンテンツ〔値、ポインタ〕
0120 〔date0,0236〕 //初期値=date0
..
0236 〔date1,0240〕 //1回目の更新後の値=date1
..
0240 〔date2,FFFF〕 //2回目の更新後の値=date2
ここで、新たな値「date3」が加えられ、アドレス0332に、空いているメモリがあるとする。
0120 〔date0,0236〕
..
0236 〔date1,0240〕
..
0240 〔date2,0332〕
..
0332 〔date3,FFFF〕
これを達成するプログラムコードは、簡略的であり、コンパクトである(ここでは、アルゴリズムを説明するためにCスタイルが用いられている)。
【0010】
【数1】
問題点は、読み取りまたは更新のたびに、チェーン全体の値を検索する必要があることである。64Kメモリセグメントにおいて、チェーンが長いときには、16,000のエントリ(エントリ毎に2+2バイト)まで検索する必要がある場合もあり、これを行うには時間的に遅すぎる。エントリがN個の場合、検索時間は、Nに比例し、必要なスペースは、(d+2)*Nバイトである。ただし、dは、一つの値を格納するバイト数であり、ポインタは2バイトを必要とする。しかし、解決方法は、コンパクトである。2バイトの値は、各々、格納に4バイトしか用いず、データが更新されなくなる場合、割り当てられるが用いられないことによって無駄になるのは、チェーンの最後のせいぜい2バイトである。
【0011】
さらに、他の公知の構成として、Mei−ling Chiang、Paul C H Lee、およびRuei−Chuan Changの「Data Management in a Flash Memory Based Storage Server」(National Chiao−Tung University、Hsinchu,Taiwan,R.O.C.、およびAcademia Sinica、Nankang,Taiwan,R.O.C.)に開示されている。この公知の構成において、フラッシュメモリは、システムによって管理されるサブブロックに分割されている。ブロックは、全体として、再度書き込まれる必要がある(すなわち、新たな値がフラッシュメモリの新たな領域に書き込まれ、古いブロックは最新のものではないことが何らかの方法でマーキングされている)。これは、ブロックが大きすぎる場合は、(例えば、32バイトのブロックを用いて、2バイトのカウンタを格納することによって)メモリが無駄になることを意味する。ブロックが小さすぎる場合、ブロック自体が多すぎ、管理オーバーヘッドが、CPU検索時間またはRAMスペース、あるいはその両方を無駄にする。
【0012】
さらに、他の公知の構成として、Brian Lewis、Bernd Mathiske、Neal Gafterの「Architecture of PEVM: a High−Performance Orthogonally Persistent Java(登録商標)」(Sun Microsystems,Inc.、901 San Antonio Road,Palo Alto,CA94303−4900、USA)に開示されている。この構成において、フラッシュメモリのコンテンツは、コピーオンライトで、仮想メモリシステムとして管理される。更新されるフラッシュメモリは、RAMにコピーされ、変更される。入来するブロック用のスペースがない場合、古いブロックが、フラッシュに戻って書き込まれる。これによって、ブロックの中の一つのバイトが変化したことに起因して、ブロック全体が再度書き込まれることにつながり得る。このシステムは、多くのメモリコピーがRAMの内外のブロックに求められているので、アクセスのたびに長い時間のオーバーヘッドが追加される。
【0013】
Pieter H Hartel、Michael J Butler、Eduard de Jong、およびMark Longleyの「Transacted Memory for Smart Cards」(fphh,mjbg@ecs.soton.ac.ukおよびEduard.deJong@Sun.COM、Technical Report DSSE−TR−2000−9、2000年8月16日、Declarative Systems and Software Engineering Group、Department of Electronics and Computer Science、University of Southampton、Highfield,Southampton SO17 1BJ,United Kingdom)では、スマートカードメモリにおいて、ブロックサイズが小さいこと(例えば、32バイト)が想定され、ここではトランザクションオブジェクトをどのように構築するかが示されている。これらのオブジェクトにおいて、任意の多くのデータアイテムの更新は、1回として(自動的に)行われ、トランザクションが、何らかの理由で完了する前に中止されると、もとの記録状態に戻すことができる。
【0014】
【発明が解決しようとする課題】
発明の開示
本発明は、上記従来の問題を解決するもので、PDIの更新を速く行うことができて、前もって割り当てられたPDI格納用スペースを必要とせず、更新を順次進めて、利用可能なスペースを効率的に一杯にすることができるメモリ制御方法、これを用いた記憶装置、これに用いる制御プログラムおよび、これを記録した可読記録媒体を提供することを目的とする。
【0015】
【課題を解決するための手段】
本発明のメモリ制御方法は、少なくとも一つのデータアイテムの時間的に連続する値を、格納された値が個別に上書きされることができないタイプのメモリセグメントに格納するメモリ制御方法であって、(a)該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられたそれぞれのアドレス部に、連続する値のセットを格納する工程と、(b)(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する工程であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、Bが単一の値を有する場合を除いた、1≦B≦Aの整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、工程と、(c)該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する工程とを包含し、該値または第1の値の新たなセットが、格納のために受け取られる場合、該アドレス部のそれぞれは割り当てられ、該新たなセットに割り当てられたアドレスへの該ファーポインタおよび該ローカルポインタが、該ファーポインタおよび該ローカルポインタのそれぞれが前に割り当てられたアドレス部に格納される。
【0016】
また、本発明のメモリ制御方法は、少なくとも一つのデータアイテムの時間的に連続する値を、格納された値が個別に上書きされることができないタイプのメモリセグメントに格納するメモリ制御方法であって、(a)該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられたそれぞれのアドレス部に、連続する値のセットを格納する工程と、(b)(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する工程であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、1≦B≦Aのようなすべての値を有する整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、工程と、(c)該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する工程とを包含し、該値または第1の値の新たなセットが、格納のために受け取られる場合、該アドレス部のそれぞれは割り当てられ、該新たなセットに割り当てられたアドレスへの該ファーポインタおよび該ローカルポインタが、該ファーポインタおよび該ローカルポインタのそれぞれが前に割り当てられたアドレス部に格納される。
【0017】
好ましくは、前記メモリセグメントが不揮発性であることを特徴とする。
【0018】
好ましくは、前記メモリセグメントが、全体としてのみ消去可能であることを特徴とする。
【0019】
好ましくは、前記メモリセグメントが、フラッシュメモリの少なくとも一部を含むことを特徴とする。
【0020】
好ましくは、各セットが単一の値を含むことを特徴とする。
【0021】
好ましくは、各セットがX値を含み、ここで、Xは、1より大きい整数であることを特徴とする。
【0022】
好ましくは、前記データアイテムまたは各データアイテムについて、第1のセットのアドレスへのポインタを、該データアイテムで識別されたアドレス部に格納することを特徴とする。
【0023】
好ましくは、前記アドレス部の各々が、前記値のセット、ローカルポインタおよびファーポインタに充分な格納スペースを含むことを特徴とする。
【0024】
好ましくは、前記アドレス部の各々が、前記値のセットおよび該アドレスに格納可能な任意のポインタのセットのみに充分な格納スペースを含むことを特徴とする。
【0025】
好ましくは、前記メモリセグメントが一杯である場合に、前記データアイテムまたは各データアイテムの一番最近に受け取った値が、他のメモリセグメントにコピーされ、その後、該メモリセグメントが消去されることを特徴とする。
【0026】
好ましくは、一番最近に受け取った値、該一番最近に受け取った値のアドレス、および、前記少なくとも一つのデータアイテムのうちのセットの数をキャッシュメモリに格納することを特徴とする。
【0027】
本発明のメモリ制御方法は、少なくとも一つのデータアイテムの時間的に連続する値を、格納された値が個別に上書きされることができないタイプのメモリセグメントに格納するメモリ制御方法であって、(a)該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられたそれぞれのアドレス部に、連続する値のセットを格納する工程と、(b)(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する工程であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、Bが単一の値を有する場合を除いた、1≦B≦Aの整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、工程と、(c)該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する工程とを包含するメモリ制御方法であって、第1のセットに割り当てられたアドレスで開始し、(i)ファーまたはローカルポインタのアドレスを調べる工程と、(ii)ファーポインタが存在する場合、ファーポインタが指すアドレスについて、該工程(i)を行う工程と、(iii)ローカルポインタが存在し、ファーポインタが存在しない場合、該ローカルポインタが指すアドレスについて、工程(i)を行う工程と、(vi)ファーポインタもローカルポインタもない場合、該アドレスにおける最新値を戻す工程とを包含する。
【0028】
また、本発明のメモリ制御方法は、少なくとも一つのデータアイテムの時間的に連続する値を、格納された値が個別に上書きされることができないタイプのメモリセグメントに格納するメモリ制御方法であって、(a)該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられたそれぞれのアドレス部に、連続する値のセットを格納する工程と、(b)(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する工程であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、1≦B≦Aのような全ての値を有する整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、工程と、(c)該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する工程とを包含するメモリ制御方法であって、第1のセットに割り当てられたアドレスで開始し、(i)ファーまたはローカルポインタのアドレスを調べる工程と、(ii)ファーポインタが存在する場合、ファーポインタが指すアドレスについて、該工程(i)を行う工程と、(iii)ローカルポインタが存在し、ファーポインタが存在しない場合、該ローカルポインタが指すアドレスについて、工程(i)を行う工程と、(vi)ファーポインタもローカルポインタもない場合、該アドレスにおける最新値を戻す工程とを包含する。
【0029】
好ましくは、前記工程(i)が、前記アドレスにおいて少なくとも一つのポインタ位置を調べる工程と、該少なくとも一つの位置が非リセット状態であることを示す工程とを含むことを特徴とする。
【0030】
好ましくは、前記工程(vi)が、最新の値、一番最近ファーポインタに格納された値、および最新の値に割り当てられたアドレスをキャッシュメモリに格納する工程を含むことを特徴とする。
【0031】
本発明の記憶装置は、少なくとも一つのデータアイテムの時間的に連続する値を格納する記憶装置であって、格納された値が個別に上書きされることができないタイプのメモリセグメントと、該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられた該連続する値のセットをそれぞれのアドレス部に格納する手段とを含み、(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する手段であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、Bが単一の値を有する場合を除いた、1≦B≦Aの整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、手段と、該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する手段とを含み、該値または第1の値の新たなセットが、格納のために受け取られる場合、該アドレス部のそれぞれは割り当てられ、該新たなセットに割り当てられたアドレスへの該ファーポインタおよび該ローカルポインタが、該ファーポインタおよび該ローカルポインタのそれぞれが前に割り当てられたアドレス部に格納されることを特徴とする。
【0032】
また、本発明の記憶装置は、少なくとも一つのデータアイテムの時間的に連続する値を格納する記憶装置であって、格納された値が個別に上書きされることができないタイプのメモリセグメントと、該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられた該連続する値のセットをそれぞれのアドレス部に格納する手段とを含み、(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する手段であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、1≦B≦Aのようなすべての値を有する整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、手段と、該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する手段とを含み、該値または第1の値の新たなセットが、格納のために受け取られる場合、該アドレス部のそれぞれは割り当てられ、該新たなセットに割り当てられたアドレスへの該ファーポインタおよび該ローカルポインタが、該ファーポインタおよび該ローカルポインタのそれぞれが前に割り当てられたアドレス部に格納されることを特徴とする。
【0033】
好ましくは、前記メモリセグメントが不揮発性であることを特徴とする。
【0034】
好ましくは、前記メモリセグメントが全体としてのみ消去可能であることを特徴とする。
【0035】
好ましくは、前記メモリセグメントがフラッシュメモリの少なくとも一部を含むことを特徴とする。
【0036】
好ましくは、各セットが単一の値を含むことを特徴とする。
【0037】
好ましくは、各セットがX値を含み、ここで、Xは、1より大きい整数であることを特徴とする。
【0038】
好ましくは、前記データアイテムまたは各データアイテムについて、第1のセットのアドレスへのポインタを、該データアイテムで識別されたアドレス部に格納する手段を含むことを特徴とする。
【0039】
好ましくは、前記アドレス部の各々が、前記値のセット、ローカルポインタおよびファーポインタに充分な格納スペースを含むことを特徴とする。
【0040】
好ましくは、前記アドレス部の各々が、前記値のセットおよび該アドレスに格納可能な任意のポインタのセットのみに充分な格納スペースを含むことを特徴とする。
【0041】
好ましくは、前記メモリセグメントが一杯である場合に、前記データアイテムまたは各データアイテムの一番最近に受け取った値を、他のメモリセグメントにコピーする手段と、該メモリセグメントを消去する手段とを含むことを特徴とする。
【0042】
好ましくは、キャッシュメモリと、一番最近に受け取った値、該一番最近に受け取った値のアドレス、および、前記少なくとも一つのデータアイテムのうちのセットの数を該キャッシュメモリに格納する手段とを含むことを特徴とする。
【0043】
好ましくは、前記第1のセットから開始して、ファーまたはローカルポインタのアドレスを調べ、ファーポインタが存在する場合、ファーポインタが指すアドレスについて調べ、ローカルポインタが存在し、ファーポインタが存在しない場合、該ローカルポインタが指すアドレスについて調べ、ファーポインタもローカルポインタもない場合、該アドレスにおける該最新値を戻す読み取り手段を含むことを特徴とする。
【0044】
好ましくは、前記ファーまたはローカルポインタの存在を調べる手段が、前記アドレス部において少なくとも一つのポインタ位置を調べる手段と、該少なくとも一つの位置が非リセット状態であることを示す手段とを含むことを特徴とする。
【0045】
好ましくは、前記最新値を戻す手段が、最新の値、一番最近ファーポインタに格納された値、および最新の値に割り当てられたアドレスを、キャッシュメモリに格納する手段を含むことを特徴とする。
【0046】
本発明の記憶装置は、コンピュータに含まれることを特徴とする。
【0047】
本発明の制御プログラムは、請求項1または2記載のメモリ制御方法の各処理手順をコンピュータに実行させることを特徴とする。
【0048】
本発明の可読記録媒体は、請求項33記載の制御プログラムが記録されていることを特徴とする。
【0049】
好ましくは、前記ファーポインタのそれぞれは、該ファーポインタが格納されたアドレスにおけるセットの後の、前記データアイテムに対する複数のセットが格納された後に割り当てられたアドレスを示すことを特徴とする。
【0050】
好ましくは、K=0であることを特徴とする。
【0051】
好ましくは、A=4であることを特徴とする。
【0052】
好ましくは、前記ファーポインタのそれぞれは、該ファーポインタが格納されたアドレスにおけるセットの後の、前記データアイテムに対する複数のセットが格納された後に割り当てられたアドレスを示すことを特徴とする。
【0053】
好ましくは、K=0であることを特徴とする。
【0054】
好ましくは、A=4であることを特徴とする。
【0055】
【発明の実施の形態】
本発明の典型的な一例において、単一結合チェーンを用いてPDI(データアイテム)を更新する代わりに、非環状グラフ構造体が用いられる。各要素は、一つではなく、LおよびF(ローカルおよびファー)と呼ばれる二つのポインタ、ならびにこれに関連付けられたデータ値を有する。ローカルポインタは線形のチェーンをたどるが、ファーポインタは、間にある多くの要素を越えることができる。ローカルポインタは、チェーン方法として初期化されるが、ファーポインタは、ショートカットに値するまで充分にチェーンが長くなるまで、「FFFF」に残される。グラフの検索において、「FFFF」ではない場合にはファーポインタを用い、そうでない場合には、ローカルポインタをたどる(その後、ローカルポインタも「FFFF」になったときに止まる)ことがここでのルールである。選択され得る可能なグラフ形状は多く、選択を効率的にする性質は以下の通りである。
1.グラフは、セグメント全体が単一のPDIの更新で一杯である場合でも、検索時間を短くする必要がある。
2.現在値の検索は、一時的な値を保持する余分なRAMを少量のみ必要とすべきである。
3.更新時間は、検索時間とほぼ同じであり、一時的な値を保持するために、余分なRAMを少量しか用いない。
4.メモリ容量を節約するため、ノードとして添付されたLおよびFサブグラフノードのいずれが追加されているかについての情報を安価に計算することが可能である。好ましくは、この情報をグラフに格納する必要はない。
【0056】
更新のグラフの「サイズ」は、グラフが表す値が更新された回数として定義される。したがって、新たなPDIはサイズ0であり、初期値が設定されたときはサイズ1であり、最初に更新された後は、サイズ2であり、以下同様である。グラフは、常に、一度に一つのノードを追加することによって成長するので、所与のサイズのグラフの「形」(すなわち、グラフのLおよびFポインタのトポロジカルな配置)は、格納する値とは関係なく、予想され得る。
【0057】
例示のため、形は、LおよびFポインタのみを有し、データ値が依然入れられていないサイズNmax(例えば、セグメント全体のファイリング)まで成長したグラフから考えられる。一番最近追加された値を見つける検索時間を低減するため、値は、深さの優先順、かつ、Fの前にLの順で追加される。サブグラフが「一杯」であると考慮され、新たな値が新たなサブグラフに位置付けられ得るとき、効率的に検出することが可能である。これを行うためには、サブグラフが位置付けられ得る(検索時間において)利用可能なノードの記録をとることが必要である。
【0058】
【数2】
【0059】
ガーベージコレクションが行われるとき、一番最近の値が見つけられ、新たなセグメントにコピーされる。古いセグメントは消去される。
【0060】
PDIグラフの始まりを見つけるため、ポインタのアレイが、各フラッシュメモリブロックまたはセグメントの始まりで保存される。アレイは、そのブロックに格納されているPDIのアイデンティティによってインデックスが付けられ、その位置のコンテンツが必要なポインタである。テーブルは、ガーベージコレクションの結果としてコピーされる場合に、更新される必要がある。
【0061】
このような構成は、以下のような利点を有する。
【0062】
PDIの更新が速い。
【0063】
PDIは、前もって割り当てられたスペースを必要とせず、更新が進んで、利用可能なスペースを効率的に一杯にすることができる。大幅に異なる成長速度を有する多くのPDIが一つのセグメント内に容易に共存し得る。
【0064】
総合的な格納要件を低減するため、データ自体がコンパクトになる。
【0065】
アルゴリズムが実際に実行されているときに、アルゴリズムに必要な数バイトのローカル記憶装置および、セグメント内の次の利用可能な、空いているメモリへのポインタ以外にRAMが必要とされない。
【0066】
利用可能な場合、いくつかのRAMが用いられて、いくつかのポインタおよび値をキャッシュして、アクセスおよび更新時間の速度を上げることができる。
【0067】
セグメントが一杯になった場合に、最後の更新記録以外の更新記録を除去するガーベージコレクションが簡略になる。
【0068】
【発明を実施するための最良の形態】
以下、本発明のメモリ制御方法の実施形態を、以下の記憶装置に適応させた場合について図面を参照しながら説明する。
【0069】
図1は、本発明の記憶装置における多数の更新後のPDI構造体の最初の部分の図である。即ち、図1に、本発明の値が何回も更新されたある特定のPDI用の構造の初めの部分のある特定の実施例を示している。各々の丸○は、PDI構造体内のノードを表し、PDI(永続データアイテム)を更新する順序に数字が付けられている。その初期値は、ノード0に格納されており、ノード1〜19は、最初の19回の各更新を示している。
【0070】
図1において、PDI更新値の入力によってノードにPDI更新値が格納作成されるたび、直前のノードも更新されて、新たなノードのアドレスへのローカルポインタを含む。つまり、例えば6回目のPDIの更新が行われた後、ノード0〜6はそれぞれ、入力順のPDI値を含み、ノード0〜5の各々は、次のノードへのローカルポインタを含む。7回目のPDI更新値が入力されるとき、その値は、ノード7に入力される。図1では、ノード6からノード7へのローカルポインタが示されているが、これは、PDIの現在値を見つけるための続いての検索がノード4〜6のローカルポインタを用いなくてよいように、ファーポインタがノード3で入力されるので、実際には必要ではなく、省略され得る。
【0071】
その代わりに、PDI更新値の検索において、ノード0からノード3までローカルポインタが進み、その後、ノード7までファーポインタがジャンプして進むので、ノード3でファーポインタが入力された後は、中間値のノード4〜6は調べられることがない。したがって、ファーポインタが構造のノードにおいて入力されたときはいつでも、例えばノード7の前のノードは、ローカルポインタを含む必要はなく、この前のノードにおいてローカルポインタにスペースを割り当てないことによって、メモリスペースが節約され得る。
【0072】
図2には、複数のセグメント20を含むフラッシュメモリ内のデータレイアウトを示している。このようなフラッシュセグメント20の各々は、全体として消去可能であり、ここでは各セグメントのうちの一つのデータレイアウトが示されている。図2において、このセグメントは、セグメント20に格納される各PDI用のエントリを含むページ識別子およびステータス22ならびに、このセグメントのIDテーブル23に予めスペースが割り当てられた固定セグメントまたは「ページ」ヘッダ21(固定ページヘッダ)を含む。各エントリは、PDIに関連付けられた識別子によってアドレス可能であり、PDIの第1のノードを含むアドレスへのポインタを含んでいる。
【0073】
セグメント20の残り領域は、PDIの到着(入力)毎の更新された値として、連続的に充填されるページデータ領域24を含んでいる。第1の値が到着する場合、データ領域24内の次の利用可能なアドレスにおいて格納され、アドレスは、テーブル23において入力される。これに続いての更新は、次に利用可能なアドレスにおいて格納され、以前のノードは、ローカルまたはファーポインタを用いて適切に更新される。
【0074】
図1に、概念的なノード数によって、ファーポインタの宛先を示しているが、実際には、データ領域24内の実際のメモリアドレスが、ローカルポインタまたはファーポインタとして入力される。データ領域24への充填は、図2のようなPDIグラフ内ノード25によって示され、更新内容の格納に利用可能なフリースペース26で示される。
【0075】
図3に、フラッシュメモリ内の典型的なPDIノード構造を示している。テーブル23における第1の値のアドレスは、第1のPDIグラフ内ノード27に示されている。第1のPDIグラフ内ノード27は、データ値28、ファーポインタ29およびローカルポインタ30に割り当てられるメモリスペースを有する。この例においては、データ値28が「ABCD」(16進法)で、ファーポインタ29が入力されておらず、入力は、消去された状態「FFFF」(16進法)であることが想定される。しかし、これに続く値はノード31に入力され、ローカルポインタ30は、ノード31のようなアドレスに設定される。ノード31は、例えばデータ値AE98(16進法)を含むが、ローカルポインタおよびファーポインタは「FFFF」で、消去された状態に維持されている。
【0076】
図4(a)〜図4(c)に、本発明におけるガーベージコレクション動作の三つのステップを示している。図4(a)に示すように、セグメントまたはページ32は、更新されたPDI更新値で埋められるが、次のセグメント33は空であって利用可能である。PDI更新値が更新され続け、セグメント32が後で用いられるために全て消去されるためには、図4(b)に示すように、PDI更新値の最新値が、セグメント32のデータ領域で検索されて見つけられ、それがセグメント33にコピーされる。セグメント33の固定ページヘッダは、ページ識別子およびステータス、ならびにPDI用のポインタのテーブルを、ページ33の第1のエントリに入力することによって形成される。続く更新された値が、上述したように、ページ33に格納され、図5の(c)に示すように、ページ32は消去され得、続く使用において利用可能になる。
【0077】
図5には、模式的に、本発明におけるPDI更新値の格納およびその読み取りを実現し得る典型的な小型コンピュータの構成例を示している。
【0078】
この小型コンピュータは記憶装置を構成しており、外部との入力/出力(I/O)インターフェース36と、小型ランダムアクセスメモリ(RAM)37の形態の動作メモリと、制御部としてのCPU35(中央処理装置)と、数ページのフラッシュメモリ38の形態の不揮発性メモリと、これらに電力供給する内部または外部電源39とを含む。
【0079】
この記憶装置が例えばスマートカードである場合には、電源39は、外部例えばカード読み取り器にあり、電力は、記憶装置に対して断続的にのみ供給される。この記憶装置が、例えば車両に取り付けられている場合には、電源39は、車両電源を含み、例えば車両点火システムがオンに切り換えられた場合にのみ利用可能とすることができる。遠隔インターネットルーターのように、記憶装置が連続的に用いられることを意図される場合、電源39は、電力を連続的に供給することを意図されており、記憶装置は、停電の場合に、その記録状態を維持することができるようになっている。これによって、記憶装置は、電力が回復することができる場合に、比較的容易に再度作動させることが可能となる。
【0080】
本実施形態を示すある特定例において、各PDIは、一意的な16ビット識別子(ID)が割り当てられ、65536PDIまでの理論的なアドレススペースが与えられる。最も簡略的な実施形態において、一つのフラッシュセグメント20のみがPDIを格納するために用いられ、これは、処理され得るPDIの数を制限する。IDは、連続するように割り当てられる。最大のM PDIが処理される場合、Mポインタのアレイ(IDによってインデックスが付けられる)は、ブロックの初めに、テーブル23に割り当てられ、この後、アレイのj番目のコンテンツはIDがjと等しいPDI用データを含むように、PDIチェーンが割り当てられる。j番目の要素が、「FFFF」(PDIが依然割り当てられていない)、または、PDIのグラフの最初のブロックにおけるオフセットを表す他の値の何れかである。
【0081】
グラフ自体において、各ノードは、図1に示すように、初期値の「0」から始まり、もとの値を表す番号が付けられる。新たな要素nが加えられるたびに、要素n−1から、かつ、可能であれば、以前の他の要素からも、結合される。以下の通りである。
【0082】
形式256c+0の各ノードは、ノード256(c+1)+0に結合される。
【0083】
形式64c+1の各ノードは、ノード64(c+1)+1に結合される。
【0084】
形式16c+2の各ノードは、ノード16(c+1)+2に結合される。
【0085】
形式4c+3の各ノードは、ノード4(c+1)+3に結合される。
【0086】
数(4、16、64、256)は、64KBセグメントサイズに適切な検索時間を生成するために選択されているが、必要に応じて変更されてもよいし、四つの数のみに限定されない。この場合、倍数が2の累乗なので、非常に容易(簡略なANDおよびCOMPARE演算)に、ノードが第2のポインタを有するか否かが判定される。各々の数は、次に大きい数を除算し、これによって、スキームがより簡略になるが、これは必要な簡略化ではない。
【0087】
ノードが追加され、Cスタイルで与えられる以下のプログラムに従って、ポインタが更新される。
【0088】
【数3】
【0089】
長さ256、64、16、および4のショートカットを有する更新のリストの例が、たった一つの可能な選択肢ではない。より一般的な場合には、長さs(1),...,s(L)のLレベルのショートカットである。ただし、{1,...,L−1}の全てのiについてs(i)>S(i+1)+1およびs(L)>1である。
【0090】
長さn>0の更新リストUにおいて、レベル1ショートカットは、一つ以上の要素のサブリストを形成し、いくつかのk(1)≧0について、第1の要素から開始する。
【0091】
【数4】
【0092】
レベル1サブリストがリストの最後に達しない場合、すなわち、n>1+k(1)s(1)の場合、レベル2ショートカットは、一つ以上の要素のサブリストを形成し、いくつかのk(2)≧0について、レベル1サブリストの終わりから一つの要素を越えたところから開始する。
【0093】
【数5】
このパターンは、Lレベルまで続く。レベルmで、n>(m−l)+k(1)s(1)+k(2)s(2)+...+k(m−1)s(m−1)の場合、レベルmショートカットは、
【0094】
【数6】
からなるサブリストを形成する。このサブリストの長さは、k(m)+1である。
【0095】
各サブリストを可能な限り長くするため、各k(m)は、以下のように、最大値になる必要がある。
【0096】
【数7】
これは、
【0097】
【数8】
の場合になる。ただし、「div」は、整数除算を表す。この除算の余りは、
【0098】
【数9】
であるが、レベルmサブリストの最後に続く要素Uの数である。
【0099】
ショートカットリストの長さおよび余りは、
【0100】
【数10】
および
【0101】
【数11】
によって制限される。レベルmサブリストは、r(m)=0の場合、ちょうどリストの最後に達する。すなわち、
【0102】
【数12】
【0103】
各s(i)がs(i+1)のちょうど倍数で、ショートカットの長さが選択される場合、この条件は、簡略化されて、
【0104】
【数13】
または
【0105】
【数14】
になる。
【0106】
長さnの更新リストの最後の要素を見つけるコストC(n)は、ショートカットサブリストの長さの合計に最後のショートカットの後のリストの余りの長さを加えたものである。もっとも悪い場合には、n≧Lであり、ショートカットがちょうど要素nに達するときに、コストの制限は、
【0107】
【数15】
によって得られる。
【0108】
この場合のLおよびs(i)の値を選択して、C(n)を最適化することは、予想されたnの値(すなわち、更新リストが成長する長さ)に依存する、工学的なトレードオフである。最大ショートカットs(1)の大きい値が、大きいnのコストを決定する第1の項((n−1)div s(1))を最小化する。最小ショートカットs(L)の小さい値は、nに依存しない、項s(L)−1によって得られるショートカットでない工程の数を最低にする。反対に、比s(1)/s(L)を増大させることは、個別の比(s(i)div s(i+1))を増大させること、または、ギャップを埋めることのいずれかによって、ショートカットレベルLの数を増大させることによって、サブまたは商の項を増大させる。
【0109】
【数16】
【0110】
図6には、本発明によるPDI値を更新するための制御プログラムによる動作を、フローチャートの形式で表している。
【0111】
図6のフローチャートにおいて、pは、PDIグラフにおけるノードへのポインタである。pのファーポインタは、pが指す、PDI構造に格納されたファーフィールドである。これと同様に、pのローカルポインタは、pが指す、PDI構造におけるローカルフィールドである。小さい変数p4、p16、p64、およびp256は、ファーポインタの過去のスロットのブックマークであり、pXと呼ばれ、選択は、X:4,16,64または256の値に依存する。また、フローチャートは、パラメータとして「ノード」を有するサブルーチン「farlen」を含む。
【0112】
工程S3において、メモリの連続するブロックは、新たな値およびそのポインタを格納するために充分なスペースが割り当てられている。メモリブロックのアドレスは、可変のポインタ「newp」に格納される。
【0113】
記憶装置が充分な記憶容量のRAMを有する場合、現在値、最終のチェーンの位置、および最終のチェーン数が、記憶装置が動作を開始するときに、PDIの一部または全てについて、RAMに格納され得る。したがって、RAMのこの部分は、あるタイプのキャッシュメモリとして用いられる。このことは、スタートアップの間に、時間を必要とするが、その後の読み取りおよび更新のための参照は、ずっと速い。
【0114】
更新値がフラッシュメモリから読み取られるときに、一番最近のポインタは、現在の値へのポインタとともにキャッシュされる。なぜなら、この値が、次に変更される可能性が最も高いからである。ファーポインタの格納は、更新をより速くする。
【0115】
各ノードは、PDIの単一の値用のスペースを有し得るが、他の構成が可能であり、ノードのいずれかまたは全てが、いくつかの更新された値を格納するために利用可能なスペースを有し得る。このような構成は、図7に示されているが、ノード40〜42の各々が、ローカルおよびファーポインタとともに、六つの値用のスペースを有する。この場合、新たな値の各々を、新たなノードに割り当てる代わりに、値は、各ノードのスペース内に、そのノードが一杯になるまで、入力される。その後、次の値が、他のノードの第1の値のスペースに入力され、その前のノード内のローカルポインタは、新たなノードを指すように設定される。図7は、15回更新することによって、ノード40および41が一杯になり、ノード40のローカルポインタがノード41を指し、ノード41のローカルポインタがノード42を指し、ノード40、41、および42の他のポインタが、リセット状態にある。検索を簡略化するため、このようなノードの各々は、格納され得る、更新の回数に等しい数のビット値を有し得る。各ビット値は、更新用のスペースに対応し、ノードの検索をより簡単にするように、更新された値がスペースを占めるときに設定される。
【0116】
以上により、本発明の実施形態によれば、PDI(データアイテム)の更新された値を、格納された値が個別に上書きされることができないメモリ、例えば、フラッシュメモリのセグメントに格納する技術を提供することができる。更新された値の各々は、ファーポインタおよびローカルポインタ用のスペースを有するアドレスに格納される。新たな値が格納されるとき、以前の値のローカルポインタが、新たな値のアドレスを指すように設定される。このタイプのノードのチェーンが確立され、更なるPDI更新値が格納されるとき、新たなノードで入力され、チェーンのずっと前のノードにおけるファーポインタは、一番最近の値が、以前のノードの全てにおけるローカルポインタをたどる必要なしに、発見されることができるように新たなノードを指すように設定されるから、PDIの更新を速く行うことができる。したがって、前もって割り当てられたPDI格納用スペースを必要とせず、更新記録が順次進んで、利用可能なスペースを効率的に一杯にすることができる。また、大幅に異なる成長速度を有する多くのPDIが、一つのセグメント内に容易に共存し得る。このように、総合的な格納要件を低減できるめ、データ自体をもコンパクトすることができる。
【0117】
【産業上の利用可能性】
時間的に連続する値を格納して、最新の値を読み出し可能とするメモリ制御方法を用いた記憶装置の分野において、PDIの更新を速く行うことができる。また、前もって割り当てられたPDI格納用スペースを必要とせず、更新記録が順次進んで、利用可能なスペースを効率的に一杯にすることができる。大幅に異なる成長速度を有する多くのPDIが、一つのセグメント内に容易に共存し得る。このように、総合的な格納要件を低減できるめ、データ自体もコンパクトになる。
【図面の簡単な説明】
【図1】 図1は、本発明の記憶装置における多数の更新後のPDI構造体の最初の部分の図である。
【図2】 図2は、本発明の記憶装置における単一フラッシュセグメント内のデータのレイアウトを示す図である。
【図3】 図3は、本発明の記憶装置におけるフラッシュメモリ内のPDIノードの構造を示す図である。
【図4】 図4は、本発明の記憶装置におけるガーベージコレクションの一例を示す図である。
【図5】 図5は、本発明の実施形態を構成する埋め込まれたシステムを示す図である。
【図6】 図6は、本発明の実施形態による値の更新を示すフローチャートである。
【図7】 図7は、更新を管理するハイブリッドシステムにおける値およびポインタのレイアウト構成を示す図である。
【図8】 図8は、上記の公知のタイプのポインタの単一チェーンの図である。
Claims (40)
- 少なくとも一つのデータアイテムの時間的に連続する値を、格納された値が個別に上書きされることができないタイプのメモリセグメントに格納するメモリ制御方法であって、
(a)該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられたそれぞれのアドレス部に、連続する値のセットを格納する工程と、
(b)(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する工程であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、Bが単一の値を有する場合を除いた、1≦B≦Aの整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、
Kは、−1より大きい所定の整数の定数である、工程と、
(c)該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する工程と
を包含し、
該値または第1の値の新たなセットが、格納のために受け取られる場合、該アドレス部のそれぞれは割り当てられ、該新たなセットに割り当てられたアドレスへの該ファーポインタおよび該ローカルポインタが、該ファーポインタおよび該ローカルポインタのそれぞれが前に割り当てられたアドレス部に格納される、メモリ制御方法。 - 少なくとも一つのデータアイテムの時間的に連続する値を、格納された値が個別に上書きされることができないタイプのメモリセグメントに格納するメモリ制御方法であって、
(a)該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられたそれぞれのアドレス部に、連続する値のセットを格納する工程と、
(b)(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する工程であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、1≦B≦Aのようなすべての値を有する整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、工程と、
(c)該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する工程と
を包含し、
該値または第1の値の新たなセットが、格納のために受け取られる場合、該アドレス部のそれぞれは割り当てられ、該新たなセットに割り当てられたアドレスへの該ファーポインタおよび該ローカルポインタが、該ファーポインタおよび該ローカルポインタのそれぞれが前に割り当てられたアドレス部に格納される、メモリ制御方法。 - 前記メモリセグメントが不揮発性であることを特徴とする、請求項1または2記載のメモリ制御方法。
- 前記メモリセグメントが、全体としてのみ消去可能であることを特徴とする、請求項1または2記載のメモリ制御方法。
- 前記メモリセグメントが、フラッシュメモリの少なくとも一部を含むことを特徴とする、請求項4記載のメモリ制御方法。
- 各セットが単一の値を含むことを特徴とする、請求項1または2記載のメモリ制御方法。
- 各セットがX値を含み、ここで、Xは、1より大きい整数であることを特徴とする、請求項1または2記載のメモリ制御方法。
- 前記データアイテムまたは各データアイテムについて、第1のセットのアドレスへのポインタを、該データアイテムで識別されたアドレス部に格納することを特徴とする、請求項1または2記載のメモリ制御方法。
- 前記アドレス部の各々が、前記値のセット、ローカルポインタおよびファーポインタに充分な格納スペースを含むことを特徴とする、請求項1または2記載のメモリ制御方法。
- 前記アドレス部の各々が、前記値のセットおよび該アドレスに格納可能な任意のポインタのセットのみに充分な格納スペースを含むことを特徴とする、請求項1または2記載のメモリ制御方法。
- 前記メモリセグメントが一杯である場合に、前記データアイテムまたは各データアイテムの一番最近に受け取った値が、他のメモリセグメントにコピーされ、その後、該メモリセグメントが消去されることを特徴とする、請求項1または2記載のメモリ制御方法。
- 一番最近に受け取った値、該一番最近に受け取った値のアドレス、および、前記少なくとも一つのデータアイテムのうちのセットの数をキャッシュメモリに格納することを特徴とする、請求項1または2記載のメモリ制御方法。
- 少なくとも一つのデータアイテムの時間的に連続する値を、格納された値が個別に上書きされることができないタイプのメモリセグメントに格納するメモリ制御方法であって、
(a)該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられたそれぞれのアドレス部に、連続する値のセットを格納する工程と、
(b)(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する工程であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、Bが単一の値を有する場合を除いた、1≦B≦Aの整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、工程と、
(c)該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する工程とを包含するメモリ制御方法であって、
第1のセットに割り当てられたアドレスで開始し、
(i)ファーまたはローカルポインタのアドレスを調べる工程と、
(ii)ファーポインタが存在する場合、ファーポインタが指すアドレスについて、該工程(i)を行う工程と、
(iii)ローカルポインタが存在し、ファーポインタが存在しない場合、該ローカルポインタが指すアドレスについて、工程(i)を行う工程と、
(vi)ファーポインタもローカルポインタもない場合、該アドレスにおける最新値を戻す工程と
を包含するメモリ制御方法。 - 少なくとも一つのデータアイテムの時間的に連続する値を、格納された値が個別に上書きされることができないタイプのメモリセグメントに格納するメモリ制御方法であって、
(a)該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられたそれぞれのアドレス部に、連続する値のセットを格納する工程と、
(b)(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する工程であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、1≦B≦Aのような全ての値を有する整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、工程と、
(c)該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する工程とを包含するメモリ制御方法であって、
第1のセットに割り当てられたアドレスで開始し、
(i)ファーまたはローカルポインタのアドレスを調べる工程と、
(ii)ファーポインタが存在する場合、ファーポインタが指すアドレスについて、該工程(i)を行う工程と、
(iii)ローカルポインタが存在し、ファーポインタが存在しない場合、該ローカルポインタが指すアドレスについて、工程(i)を行う工程と、
(vi)ファーポインタもローカルポインタもない場合、該アドレスにおける最新値を戻す工程と
を包含するメモリ制御方法。 - 前記工程(i)が、前記アドレスにおいて少なくとも一つのポインタ位置を調べる工程と、該少なくとも一つの位置が非リセット状態であることを示す工程とを含むことを特徴とする、請求項13または14に記載のメモリ制御方法。
- 前記工程(vi)が、最新の値、一番最近ファーポインタに格納された値、および最新の値に割り当てられたアドレスをキャッシュメモリに格納する工程を含むことを特徴とする、請求項13または14に記載のメモリ制御方法。
- 少なくとも一つのデータアイテムの時間的に連続する値を格納する記憶装置であって、格納された値が個別に上書きされることができないタイプのメモリセグメントと、該データアイテムまたは各データアイテムについて、
時間的に連続するように割り当てられた該連続する値のセットをそれぞれのアドレス部に格納する手段とを含み、(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する手段であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、Bが単一の値を有する場合を除いた、1≦B≦Aの整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、手段と、
該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する手段とを含み、
該値または第1の値の新たなセットが、格納のために受け取られる場合、該アドレス部のそれぞれは割り当てられ、該新たなセットに割り当てられたアドレスへの該ファーポインタおよび該ローカルポインタが、該ファーポインタおよび該ローカルポインタのそれぞれが前に割り当てられたアドレス部に格納されることを特徴とする記憶装置。 - 少なくとも一つのデータアイテムの時間的に連続する値を格納する記憶装置であって、
格納された値が個別に上書きされることができないタイプのメモリセグメントと、該データアイテムまたは各データアイテムについて、時間的に連続するように割り当てられた該連続する値のセットをそれぞれのアドレス部に格納する手段とを含み、(AB(C+1)+(A-B)+K)番目のセットの各々への各ファーポインタを、(ABC+(A-B)+K)番目のセットに割り当てられたアドレスに格納するスキームに従って、該値のセットのうちのいくつかのセットのアドレスへのファーポインタを格納する手段であって、ここで、Aは、1より大きい所定の整数の定数であり、Bは、1≦B≦Aのようなすべての値を有する整数のパラメータであり、Cは、−1より大きい整数のパラメータであり、Kは、−1より大きい所定の整数の定数である、手段と、該いくつかのセット以外の他のセットのそれぞれに割り当てられたアドレスへのローカルポインタを、該他のセットのそれぞれの直前のセットに割り当てられたアドレス部に格納する手段とを含み、
該値または第1の値の新たなセットが、格納のために受け取られる場合、該アドレス部のそれぞれは割り当てられ、該新たなセットに割り当てられたアドレスへの該ファーポインタおよび該ローカルポインタが、該ファーポインタおよび該ローカルポインタのそれぞれが前に割り当てられたアドレス部に格納されることを特徴とする記憶装置。 - 前記メモリセグメントが不揮発性であることを特徴とする、請求項17または18に記載の記憶装置。
- 前記メモリセグメントが全体としてのみ消去可能であることを特徴とする、請求項17または18に記載の記憶装置。
- 前記メモリセグメントがフラッシュメモリの少なくとも一部を含むことを特徴とする、請求項20に記載の記憶装置。
- 各セットが単一の値を含むことを特徴とする、請求項17または18記載の記憶装置。
- 各セットがX値を含み、ここで、Xは、1より大きい整数であることを特徴とする、請求項17または18記載の記憶装置。
- 前記データアイテムまたは各データアイテムについて、第1のセットのアドレスへのポインタを、該データアイテムで識別されたアドレス部に格納する手段を含むことを特徴とする、請求項17または18記載の記憶装置。
- 前記アドレス部の各々が、前記値のセット、ローカルポインタおよびファーポインタに充分な格納スペースを含むことを特徴とする、請求項17または18記載の記憶装置。
- 前記アドレス部の各々が、前記値のセットおよび該アドレスに格納可能な任意のポインタのセットのみに充分な格納スペースを含むことを特徴とする、請求項17または18記載の記憶装置。
- 前記メモリセグメントが一杯である場合に、前記データアイテムまたは各データアイテムの一番最近に受け取った値を、他のメモリセグメントにコピーする手段と、該メモリセグメントを消去する手段とを含むことを特徴とする請求項17または18記載の記憶装置。
- キャッシュメモリと、一番最近に受け取った値、該一番最近に受け取った値のアドレス、および、前記少なくとも一つのデータアイテムのうちのセットの数を該キャッシュメモリに格納する手段とを含むことを特徴とする、請求項17または18記載の記憶装置。
- 前記第1のセットから開始して、ファーまたはローカルポインタのアドレスを調べ、ファーポインタが存在する場合、ファーポインタが指すアドレスについて調べ、ローカルポインタが存在し、ファーポインタが存在しない場合、該ローカルポインタが指すアドレスについて調べ、ファーポインタもローカルポインタもない場合、該アドレスにおける該最新値を戻す読み取り手段を含むことを特徴とする、請求項17または18記載の記憶装置。
- 前記ファーまたはローカルポインタの存在を調べる手段が、前記アドレス部において少なくとも一つのポインタ位置を調べる手段と、該少なくとも一つの位置が非リセット状態であることを示す手段とを含むことを特徴とする、請求項29記載の記憶装置。
- 前記最新値を戻す手段が、最新の値、一番最近ファーポインタに格納された値、および最新の値に割り当てられたアドレスを、キャッシュメモリに格納する手段を含むことを特徴とする、請求項29記載の記憶装置。
- コンピュータに含まれることを特徴とする、請求項17または18記載の記憶装置。
- 請求項1または2記載のメモリ制御方法の各処理手順をコンピュータに実行させる制御プログラム。
- 請求項33記載の制御プログラムが記録された可読記録媒体。
- 前記ファーポインタのそれぞれは、該ファーポインタが格納されたアドレスにおけるセットの後の、前記データアイテムに対する複数のセットが格納された後に割り当てられたアドレスを示すことを特徴とする、請求項1または2記載の方法。
- K=0であることを特徴とする、請求項1または2記載のメモリ制御方法。
- A=4であることを特徴とする、請求項36記載のメモリ制御方法。
- 前記ファーポインタのそれぞれは、該ファーポインタが格納されたアドレスにおけるセットの後の、前記データアイテムに対する複数のセットが格納された後に割り当てられたアドレスを示すことを特徴とする、請求項17または18記載の記憶装置。
- K=0であることを特徴とする、請求項17または18記載の記憶装置。
- A=4であることを特徴とする、請求項39記載の記憶装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0205573A GB2386212A (en) | 2002-03-09 | 2002-03-09 | Storing temporally consecutive values in a memory segment that cannot be overwritten using sequential and bridging pointers |
GB0205573.9 | 2002-03-09 | ||
PCT/JP2003/002684 WO2003077133A1 (fr) | 2002-03-09 | 2003-03-06 | Technique de commande de memoire, dispositif a memoire, programme de commande et support d'enregistrement lisible |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2003077133A1 JPWO2003077133A1 (ja) | 2005-07-07 |
JP3801176B2 true JP3801176B2 (ja) | 2006-07-26 |
Family
ID=9932643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003575281A Expired - Fee Related JP3801176B2 (ja) | 2002-03-09 | 2003-03-06 | メモリ制御方法、記憶装置、制御プログラムおよび可読記録媒体 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7308549B2 (ja) |
JP (1) | JP3801176B2 (ja) |
AU (1) | AU2003211775A1 (ja) |
GB (1) | GB2386212A (ja) |
TW (1) | TWI251140B (ja) |
WO (1) | WO2003077133A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2386212A (en) * | 2002-03-09 | 2003-09-10 | Sharp Kk | Storing temporally consecutive values in a memory segment that cannot be overwritten using sequential and bridging pointers |
US7299314B2 (en) * | 2003-12-31 | 2007-11-20 | Sandisk Corporation | Flash storage system with write/erase abort detection mechanism |
JP5132451B2 (ja) * | 2008-07-02 | 2013-01-30 | 株式会社リコー | 画像形成装置 |
US9311229B2 (en) | 2011-03-29 | 2016-04-12 | Blackberry Limited | System and method for managing flash memory |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5043967A (en) * | 1990-08-20 | 1991-08-27 | International Business Machines Corporation | Structured data storage method and medium |
US5263160A (en) * | 1991-01-31 | 1993-11-16 | Digital Equipment Corporation | Augmented doubly-linked list search and management method for a system having data stored in a list of data elements in memory |
JPH0765591A (ja) * | 1993-08-30 | 1995-03-10 | Tec Corp | 情報処理装置 |
DE60009031D1 (de) * | 2000-03-28 | 2004-04-22 | St Microelectronics Srl | Verfahren zur logischen Aufteilung einer nichtflüchtigen Speichermatrix |
JP2001312425A (ja) * | 2000-04-27 | 2001-11-09 | Oki Data Corp | ブロック消去型メモリのデータ格納方法 |
GB2386212A (en) * | 2002-03-09 | 2003-09-10 | Sharp Kk | Storing temporally consecutive values in a memory segment that cannot be overwritten using sequential and bridging pointers |
-
2002
- 2002-03-09 GB GB0205573A patent/GB2386212A/en not_active Withdrawn
-
2003
- 2003-03-06 WO PCT/JP2003/002684 patent/WO2003077133A1/ja active Application Filing
- 2003-03-06 US US10/506,070 patent/US7308549B2/en not_active Expired - Fee Related
- 2003-03-06 JP JP2003575281A patent/JP3801176B2/ja not_active Expired - Fee Related
- 2003-03-06 AU AU2003211775A patent/AU2003211775A1/en not_active Abandoned
- 2003-03-07 TW TW092104924A patent/TWI251140B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
GB2386212A (en) | 2003-09-10 |
TW200400432A (en) | 2004-01-01 |
US7308549B2 (en) | 2007-12-11 |
AU2003211775A1 (en) | 2003-09-22 |
JPWO2003077133A1 (ja) | 2005-07-07 |
TWI251140B (en) | 2006-03-11 |
US20050119987A1 (en) | 2005-06-02 |
GB0205573D0 (en) | 2002-04-24 |
WO2003077133A1 (fr) | 2003-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100389241B1 (ko) | 비휘발성 메모리에서의 가변 크기 데이터의 효율적인관리를 위한 동적 할당 | |
US6928460B2 (en) | Method and apparatus for performing generational garbage collection in a segmented heap | |
US8745316B2 (en) | System and method of managing indexation of flash memory | |
US6401160B1 (en) | Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory | |
US20040210706A1 (en) | Method for managing flash memory | |
US9141539B2 (en) | System and method for object deletion in persistent memory using bitmap windows | |
US20100131700A1 (en) | Memory indexing system and process | |
US20100228914A1 (en) | Data caching system and method for implementing large capacity cache | |
KR100749971B1 (ko) | 고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치 | |
JP4329937B2 (ja) | パーシスタントメモリに書き込む際のエラーを検出する方法および装置 | |
JP3801176B2 (ja) | メモリ制御方法、記憶装置、制御プログラムおよび可読記録媒体 | |
US20030200232A1 (en) | Information processor and program | |
US6889303B2 (en) | Method and apparatus for distinguishing reachable objects and non-reachable objects in an object-based application | |
JP2003203007A (ja) | 携帯電話機のメモリの不揮発エリア管理方法 | |
JP3904182B2 (ja) | データ管理システムおよびそれを用いたデータ管理方法 | |
JP2001318824A (ja) | フラッシュメモリのデータ管理方式およびそのプログラムを記録した記録媒体 | |
JPH09231110A (ja) | Icカード | |
JP2008016050A (ja) | Icカード | |
JPH09231111A (ja) | Icカード | |
JP2000057061A (ja) | フラッシュメモリを用いた記憶装置及びその制御方法 | |
JP2004164493A (ja) | 不揮発性メモリのデータ管理システム、不揮発性メモリのデータ管理方法、およびそのプログラム | |
JP2004355559A (ja) | 不揮発性メモリのデータ書き換え方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050810 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060301 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060405 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060424 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060424 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140512 Year of fee payment: 8 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D04 |
|
LAPS | Cancellation because of no payment of annual fees |