JP4195397B2 - 集中キャッシュメモリのアトミックな更新方法 - Google Patents

集中キャッシュメモリのアトミックな更新方法 Download PDF

Info

Publication number
JP4195397B2
JP4195397B2 JP2004020450A JP2004020450A JP4195397B2 JP 4195397 B2 JP4195397 B2 JP 4195397B2 JP 2004020450 A JP2004020450 A JP 2004020450A JP 2004020450 A JP2004020450 A JP 2004020450A JP 4195397 B2 JP4195397 B2 JP 4195397B2
Authority
JP
Japan
Prior art keywords
data
cache
interest
central
central cache
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
Application number
JP2004020450A
Other languages
English (en)
Other versions
JP2004234663A5 (ja
JP2004234663A (ja
Inventor
シー.ブラウン デビッド
ブイ.レオノフ ミハイル
エム.バード マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004234663A publication Critical patent/JP2004234663A/ja
Publication of JP2004234663A5 publication Critical patent/JP2004234663A5/ja
Application granted granted Critical
Publication of JP4195397B2 publication Critical patent/JP4195397B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/027Arrangements and methods specific for the display of internet documents
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

本発明は、一般にコンピュータメモリ記憶技術に関し、より詳細には、キャッシュメモリに関する。
コンピュータアプリケーションによって必要とされる一部のデータは、作成またはアクセスするのにコストがかかる。このコストには、データを計算するためのコンピュータ資源、およびネットワークを介してデータにアクセスするための(帯域幅および時間を含む)移送コストが含まれる。コンピューティングデバイスは、資源を費やしてこれらのデータを作成し、またはこれらのデータにアクセスした後、しばしばそのデータを「キャッシュ」メモリ内に記憶することになる。これにより、コンピューティングデバイスが再びデータを必要とする場合には、コストをかけずにキャッシュからアクセスすることができる。
キャッシュは、最初の(original)アプリケーションに対して、または最初のコンピューティングデバイスのローカルに置くことができ、あるいはいくつかのアプリケーションおよびデバイスの間で共有することができる。後者のタイプのキャッシュは、しばしば「中央」キャッシュ(central cache)と呼ばれる。他のアプリケーションと集中キャッシュを共有する一方、各アプリケーションがそれ自体で使用するローカルキャッシュをサポートするような環境がある。集中キャッシュは、複数のアプリケーションにとって有用なデータを記憶するために最適化され、一方、ローカルキャッシュは、各アプリケーション特有のデータについてキャッシュする利点がある。
集中キャッシュ内のデータを管理することは容易ではない。集中キャッシュからデータを読み込もうとする複数のアプリケーションが問題となることはまれであるが、少なくとも1つのアプリケーションがデータをキャッシュに追加しようとするとき同様にまれとは言うことはできない。1つのアプリケーションがキャッシュに書き込むのと同時に、他のアプリケーションが集中キャッシュから読み込むことを認められた場合、読取り側は古い、または誤ったデータを得る可能性がある。このアクセス調整は、複数のアプリケーションがデータをキャッシュに追加しようとするときより問題となる。
このアクセス調整問題を改善するための一般的な手法は、「キャッシュロック」と呼ばれる。あるアプリケーションがキャッシュの内容を、追加、削除、または修正することによって変更したいと望むときはいつでも、「ロック」データ構造への単独のアクセスを要求する。ロックを有している間、書込み側アプリケーションはキャッシュを修正することができ、他のアプリケーションは、書込み側がロックを有する限りキャッシュにアクセスすることができない。したがって、読取り側は、古い、または誤ったデータを得ることがない。2つのアプリケーションが共にキャッシュを修正したいと望む場合には、その一方は、他方がロックを放棄するまで待たなければならない。
ロックは、集中キャッシュへのアクセスを調整する際に大いに有用となり得る。しかし、あるアプリケーションがキャッシュを修正したいと望むときはいつでも、アプリケーションすべてロックによりアクセスが遅延することは明らかである。アプリケーションがこの遅延に容易に耐えられるような集中キャッシュもあるが、他のキャッシュの場合、これが本当の厄介者となる可能性がある。たとえば、フォントグリフキャッシュを考えてみる。コンピュータ画面上で表示される文字は、「グリフ」と呼ばれる個々の要素で構成されている。これらのグリフのいくつかが著しい量のデータを含み、グリフのいくつかが、その生成時に著しいコンピュータ資源を消費すると、これらは集中キャッシュの理想的な対象となる。しかし、新しいグリフがフォントグリフキャッシュに追加される間、それをロックすることは、コンピュータの画面に書き込むアプリケーション内で顕著な遅延を引き起こす可能性がある。
集中キャッシュにとって使用することができるメモリ資源が限られていると、別のキャッシュ管理の問題が生ずる。データをキャッシュに追加しようとする複数のアプリケーションは、互いに独立して動作する。したがって、これらのどのアプリケーションも、動作環境を全体的に改善するためにどのデータを集中キャッシュに追加すべきかについて「グローバル」な視野を持っていない。集中キャッシュが非常に大きくなって、さらなる追加を可能にするために、より小さいサイズで再構成されるときも同じ問題が生ずる。1つのアプリケーションも、どのデータを集中キャッシュ内で保持すべきか、また、今後のキャッシュの増大に対応してメモリを解放するため、どのデータを除去するのが最善か判断することができない。
本発明は、このような問題に鑑みて、ロックの遅延オーバヘッドなしに更新することができ、キャッシュ内のデータの重要度についてグローバルな視野を有する集中キャッシュを提供することを目的とする。
アトミックな」(atomic)更新により、ロックの遅延オーバヘッドを被ることなくアクセス調整の利益を得ることができる。キャッシュ更新は、途中で割り込まれないように設計されている点で「アトミック」である。これらにより、アプリケーションによってアクセスされたとき常に最新かつ一貫性のあるキャッシュが提供される。
アプリケーションは、参照テーブルを介してデータにアクセスし、常に自由に集中キャッシュ内のデータを読み込む。しかし、アプリケーションは直接キャッシュを更新せず、その代わりに更新要求をサービスルーチンに送る。キャッシュを更新するために、キャッシュサービスルーチンは、2つの段階で進められる。第1の段階で、キャッシュサービスルーチンは、参照テーブルを更新することなしに新しいデータを準備してそれらをキャッシュに追加する。この第1段階は一定の時間がかかる可能性があるが、キャッシュがロックされていないため、キャッシュはアプリケーションにとって完全にアクセス可能な状態にある。第1段階において、キャッシュにアクセスするアプリケーションは、参照テーブルがまだ更新されていないので、新しいデータを「覗く」ことができない。キャッシュデータが完全に準備されてキャッシュ内にロードされた後になって始めて、キャッシュサービスルーチンは、更新プロセスの第2段階、すなわち参照テーブルの更新を実行する。この更新は、ポインタを1つだけ変更するステップからなり、キャッシュをロックすることなしにアトミックに実行される。したがって、この2段階更新プロセスは、キャッシュをロックすることを必要とせず、アクセスするアプリケーションに対してキャッシュを常に有効な状態にしておく。更新はすべて、1つのキャッシュサービスルーチンによって実行されるため、複数のキャッシュ書込み側の間で調整するためにロックする必要はない。
キャッシュサービスルーチンは、キャッシュ内のデータがどのように使用されるかについての統計値を収集する。キャッシュが非常に大きくなったとき、キャッシュサービスルーチンは、これらの統計値を使用して、どのデータを新しいキャッシュ内にコピーすべきか判断する。新たなキャッシュは、同様に2段階でアトミックに作成される。第1段階において、キャッシュサービスルーチンは新たなキャッシュを作成し、古いキャッシュから選択されたデータを配置する。アプリケーションは、まだ新たなキャッシュについて認識していない。新たなキャッシュの使用の準備ができたとき、キャッシュサービスルーチンは、古いキャッシュのヘッダ内に新たなキャッシュへの参照を追加する。次いで、第2段階で、アトミックな別の処理を使用して、キャッシュサービスルーチンは古いキャッシュを「廃止」とマークする。アプリケーションは、古いキャッシュが廃止とマークされていることに気付くと、新たなキャッシュへの参照を追って、新たなキャッシュのみ使用を開始する。キャッシュ内の更新におけるのと同様に、キャッシュ全体を置き換えるためのこの機構を実行することにより、アプリケーションは常に一貫性のあるキャッシュを見ことができる。
アプリケーションは、廃止フラグに気付いて新たなキャッシュに切り替えるまで、廃止されたキャッシュを引き続き使用することができる。アプリケーションすべてが切り替えられた後で、廃止されたキャッシュは自動的に削除される。
実施形態には、キャッシュ内の参照テーブルが、キャッシュ内の別のロケーションに関連して、キャッシュ内に記憶されたデータのロケーションを特定するオフセットからなるものがある。これは、キャッシュをファイルとして記憶することができ、コンピューティングデバイスがキャッシュの再ブートを行った後に、直ちに再使用することができる点で有利である。
集中キャッシュは、1つのコンピューティングデバイスによって提供され(host)、そのコンピューティングデバイス上のアプリケーションによって使用することができ、または他のコンピューティングデバイス上のアプリケーションによって使用することができる。各アプリケーションはまた、集中キャッシュと共に使用するために、それ自体のローカルキャッシュを有することができる。ローカルキャッシュが集中キャッシュと同じデータ構造を有する場合には、どちらのキャッシュにも同じキャッシュアクセスコードを使用することができる。
キャッシュサービスルーチンは、キャッシュを置き換える際どのデータを維持するかを判断するために、キャッシュ使用に関し収集する統計にヒューリスティックを適用する。実施形態には、ユーザインターフェースを用意してヒューリスティックを変更することを可能にし、またはキャッシュの動作を監視することを可能にするものがある。
添付の特許請求の範囲は、詳細に本発明の特徴を記載しているが、本発明は、添付の図面と共に挙げられた以下の詳細な説明から、その目的および利点と共に最もよく理解することができる。
図面においては同じ参照符号が同じ要素を指しており、本発明は、適切なコンピューティング環境内で実施されるものとして示されている。以下の説明は、本発明の諸実施形態に基づいており、代替実施形態に関して本明細書で明示的に述べられていないとしても、それにより本発明を限定的に捉えてはならない。
以下の説明では、別段の表示がない限り、本発明について、1つまたは複数のコンピューティングデバイスによって実行される動作、および操作を記号で表したものを参照して述べる。そのような動作および操作は、「コンピュータによって実行される」と記述されることがあり、コンピューティングデバイスの処理装置によって、構造化された形態でデータを表す電気信号が操作されることを含むことを理解されたい。この操作は、データを変換し、またはコンピューティングデバイスのメモリシステム内のロケーションでデータを維持し、当業者にはよく理解できる方法で、デバイスの動作を再構成し、または他の方法で変更する。データが維持されるデータ構造は、データの形式によって定義された特定の特性を有するメモリの物理ロケーションである。しかし、本発明について前述の文脈で述べると、当業者なら、以下で述べる様々な動作および操作をハードウェアで実施することもできることを理解できるので、限定はされないものとする。
本発明は、アトミックに更新される集中キャッシュメモリを提供する。この集中キャッシュは、キャッシュを提供するコンピューティングデバイス上で動作するアプリケーションによって排他的に使用することができ、あるいは図1aのように、いくつかのコンピューティングデバイス上のアプリケーションによって集中キャッシュを使用することができる。図1aでは、コンピューティングデバイスA102、B 104、およびラップトップ106の3つが、キャッシュ型データ共有環境100内にある。集中キャッシュ(図示せず)は、コンピューティングデバイスA102上に常駐し、LAN108を介してアプリケーションにとってアクセス可能である。キャッシュ要求を送るためには、標準的な通信プロトコルが存在しており、共有環境100内のコンピューティングデバイスの間で応答する。
図では、インターネット110への接続は、遠隔コンピューティングデバイスであってもキャッシュ型データ共有環境100に加わることができることを示す。実際には、そのような遠隔デバイスが集中キャッシュにアクセスするために必要とされる通信時間の増大は、データへの高速アクセスを提供するというキャッシュの目的に反する。したがって、ほとんどの集中キャッシュの使用状況においては、接近して配置されたコンピューティングデバイスが1つだけ、または多くとも数個必要とされるだけである。
図1bは、図1aのキャッシュ型データ共有環境100の例示的な一実施形態の構造の詳細を表す。アプリケーションA 112は、コンピューティングデバイスA 102上で動作している。アプリケーションA 112を構成するルーチンの中に、ローカル/集中キャッシュ探索ルーチン114がある。アプリケーションA 112がキャッシュ内に常駐している可能性のあるデータを必要とするとき、ルーチン114は、現行のローカルキャッシュ116内で、または現行の集中キャッシュ118内でデータを探索する。ローカルキャッシュ116は、アプリケーションA 112の一部であり、その管理下にある。集中キャッシュ118はアプリケーションA 112の一部でないが、アプリケーションA 112にとって、また他のアプリケーションにとってアクセス可能である。
集中キャッシュ探索ルーチン114が、ローカルキャッシュ116内または集中キャッシュ118内で要求されたデータを見つけた場合には、そのデータをアプリケーションA 112に返す。見つからなかった場合には、データは他で探索され、または作成される。データが見つかった、または作成された後に、キャッシュ探索ルーチン114は、ローカルキャッシュ更新ルーチン120を呼び出して、そのデータをローカルキャッシュ116に追加することを要求する。データを集中キャッシュ118に追加するための要求が集中キャッシュサービスルーチン124にも送られる。
データが追加されると、ローカルキャッシュと集中キャッシュは共に増大する。これらが増大し過ぎると新しいキャッシュが作成され、以前キャッシュされたデータの一部が配置される。どのデータを新しいキャッシュに持ち越すか選択するために、いくつかの方法が適用される。たとえば、最も最近使用されたデータが選択され、または最も使用頻度の高いデータが選択される。図1bは、現行のローカルキャッシュ116と共に以前のローカルキャッシュ122を示す。
新しい集中キャッシュを作成するとき、集中キャッシュを使用するアプリケーションの混乱を防止するように注意する必要がある。新しい集中キャッシュ118の準備ができると、より古い集中キャッシュ126は「廃止」とマークされ、より新しいキャッシュが使用可能であることがアプリケーションに警告される。しかし、これらのアプリケーションは直ちに新しいキャッシュ118に切り替える必要はなく、しばらくの間、引き続きより古い集中キャッシュ126にアクセスすることを選択することができる。それ以上アプリケーションがより古い集中キャッシュ126にアクセスしなくなった後で、そのキャッシュは削除される。
アプリケーションB 128は、キャッシュ型データ共有環境100内において別のコンピューティングデバイス上で動作する。このアプリケーションは、ローカルキャッシュを備えていないように示されているが、集中キャッシュ探索ルーチン130を有する。このルーチンは、より古い集中キャッシュ126に依然としてアクセスしており、このキャッシュが廃止とマークされていることにまだ気付いていない。キャッシュ探索ルーチン130は、データを集中キャッシュに追加することを要求することができるが、集中キャッシュサービスルーチン124は、そのデータを廃止されたキャッシュ126ではなく、現行の集中キャッシュ118に追加することになる。
図1aのコンピューティングデバイス102、104、106は、いずれのアーキテクチャのものとすることもできる。図2は、本発明をサポートする例示的なコンピュータシステムを一般的に示すブロック図である。図2のコンピュータシステムは、好適な環境の一例にすぎず、本発明の使用または機能の範囲についてどのような制限をも示唆しないものとする。コンピューティングデバイス102は、図2に示されている構成要素のいずれか1つまたは組合せに関して、どのような依存性も要件も有すると解釈すべきでない。本発明は、多数の他の汎用または専用コンピューティングシステム環境または構成と共に動作可能である。本発明と共に使用するのに適している周知のコンピューティングシステム、環境、および構成の例には、これに限られないが、パーソナルコンピュータ、サーバ、ハンドヘルドデバイスまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとするシステム、セットトップボックス、プログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。コンピューティングデバイス102は、その最も基本的な構成では、一般に少なくとも1つの処理装置200およびメモリ202を含む。メモリ202は、揮発性(RAMなど)、不揮発性(ROMまたはフラッシュメモリなど)、またはその2つの何らかの組合せとすることができる。この最も基本的な構成が、図2に破線204によって示されている。コンピューティングデバイス102は、追加の特徴および機能を有することができる。たとえば、コンピューティングデバイス102は、それだけには限らないが、磁気ディスクおよび光ディスクならびにテープを含む追加記憶装置(取外し式および固定式)を含むことができる。そのような追加記憶装置は、図2に取り外し可能な記憶装置206および固定式記憶装置208によって示されている。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性と不揮発性、取外し式と固定式の媒体が共に含まれる。メモリ202、取り外し可能な記憶装置206、および固定式記憶装置208は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけには限らないが、RAM、ROM、EEPROM、フラッシュメモリ、他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶、または他の磁気記憶デバイス、および、所望の情報を記憶するために使用することができ、デバイス102によってアクセスすることができる他の任意の媒体が含まれる。任意のそのようなコンピュータ記憶媒体をデバイス102の一部とすることができる。デバイス102はまた、他のデバイスと通信することができる通信チャネル210を含むことができる。通信チャネル210は、通信媒体の例である。通信媒体は、一般に、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の移送機構など変調データ信号に統合し、任意の情報送達媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するようにその特性の1つまたは複数が設定された、または変化した信号を意味する。限定ではなく例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続など有線媒体と、音響、RF、赤外線および他の無線媒体など無線媒体とを含む。本明細書では、「コンピュータ読取可能な媒体」という用語は、記憶媒体と通信媒体を共に含む。コンピューティングデバイス102はまた、キーボード、マウス、ペン、音声入力デバイス、タブレット、タッチ入力デバイスなど、入力デバイス212を有することができる。ディスプレイ(タッチ入力デバイスと一体化することができる)、スピーカ、プリンタなど、出力デバイス214をも含むことができる。これらのデバイスはすべて、当技術分野で周知であり、ここで詳細に論じる必要はない。
図3aから3dは、図1bのローカル/集中キャッシュ探索ルーチン114のための例示的な方法を示すフローチャートである。このフローチャートは多くの任意の選択肢を含むが、これらはキャッシュ探索ルーチン114のあらゆる実施形態に含まれなければならないわけではない。
図3aのステップ300においてフローチャートが始まる前に、アプリケーションA112が注目するデータにアクセスするように、キャッシュ探索ルーチン114は要求される。ステップ300において、キャッシュ探索ルーチン114は、集中キャッシュがアクセス可能かどうか検査することから開始される。どの集中キャッシュもアクセス可能でない場合、キャッシュ探索ルーチン114は図3dのステップ326に進み、ローカルキャッシュ内で注目されるデータを捜す。その環境によっては、他の実施形態におけるキャッシュ探索ルーチン114は、集中キャッシュにアクセスする前にローカルキャッシュにアクセスしようとする。
ステップ302において、集中キャッシュがアクセス可能である場合、キャッシュ探索ルーチン114は検査を行って、その集中キャッシュが「廃止」とマークされているかどうか確かめる。このステップと以下のステップ304は任意に選択することができることに留意されたい。すなわち、キャッシュ探索ルーチン114は、廃止されたキャッシュを継続して使用することができる。しかし、流れを維持するために、キャッシュ探索ルーチン114は、アクセス中の集中キャッシュの状態を定期的に検査し、ひとたび古いキャッシュが廃止されていることに気付いた場合、その古いキャッシュを解放すべきである。
集中キャッシュが廃止とマークされる前に、集中キャッシュサービスルーチン124は、新しい集中キャッシュを作成する(図5aおよび5bのステップ512から518参照)。したがって、ステップ304において、キャッシュ探索ルーチン114は、廃止された集中キャッシュのヘッダ内の、現行の集中キャッシュを指す参照に従う。要求の到達と実際の処理との間に著しい遅延があるため、遅延中に複数のキャッシュが廃止とマークされる可能性がある。その場合には、廃止されていないキャッシュに達するまで、ステップ302および304が繰り返される。
ステップ306において、キャッシュ探索ルーチン114は、集中キャッシュにアクセスし、注目されるデータを含むかどうか確かめる。ステップ306の詳細は、集中キャッシュがどのような構造になっているかによって多様に変わる可能性がある。図3aから3cに示されているステップ306は、一定の考えうる実施形態を示しているものであり、図4aおよび4bに示されている例示のキャッシュデータ構造と共に参照する。
図4aは、ステップ306に示されている手順と共に使用可能な集中キャッシュ400の構造を示す。固定サイズヘッダ402は廃止フラグを含み、このフラグが設定されている場合、より新しい集中キャッシュ400が参照される。次に、参照の固定サイズテーブル404が含まれる。参照のテーブル404内の各エントリは、データ要素記憶領域406内のデータ要素への参照(図4bの410参照)か、そのエントリがデータ要素を指していないことを示す特別な値(たとえば、NULL)のどちらかである。実施形態によっては、これらの参照は、整数オフセットとして与えられるものがある。これにより、集中キャッシュ400をファイルとしてディスク上に記憶することが可能となり、ホストコンピューティングデバイス102を再起動させた後に回復させることが可能になる。
実際のキャッシュデータは、個々のデータ要素410として記憶される。これらのデータ要素に割り振られた空間406は、必要に応じて、予約空間(uncommited space)408の領域内に拡大する。予約空間408が使い果たされると、キャッシュサービスルーチン124が新しい集中キャッシュ400を作成する。
ステップ306に示されている特定の実施形態は、ステップ308において、注目されるデータをハッシュすることによって開始される。次いで、このハッシュは、ステップ310において、集中キャッシュ400内にある参照のテーブル404へのインデックスとして使用される。参照のテーブル404内で選択されたエントリが、図3bのステップ312において検査される。そのエントリがどのデータ要素も指していない場合には、注目されるデータは集中キャッシュ400にはない(ステップ314)。次いで、キャッシュ探索ルーチン114は、図3dのステップ326に進み、集中キャッシュ400以外の所で注目されるデータを捜す。
一方、参照のテーブル404内の選択されたエントリがデータ要素を指している場合には、そのデータ要素が注目されるデータを含んでいることも含んでいないこともある。その理由は、異なるデータ値が同じ値にハッシュされ、参照のテーブル404内で同じエントリを選択する可能性があるからである。
図4bの例示的なデータ要素構造410を参照されたい。各データ要素410は、同じハッシュ値を有する別のデータ要素410か、そのエントリが別のデータ要素410を指していないことを示す特別な値(たとえば、NULL)のどちらかを指す参照412から始まる。参照のテーブル404内のエントリの場合と同様に、この参照は、整数オフセットとして与えられる。参照412の次に、このデータ要素410内に含まれているデータを一意に識別するデータ識別子フィールド414が続く。最後に、データ自体を含むフィールド416が続く。このフィールド416のサイズと構造は、記憶されたデータの性質に特有である。実施形態によっては、データ要素410が、そのサイズ自身、またはそれと同等である要素特有(element−specific)データフィールド416の終端の位置を示すフィールドを含むものがある。他の実施形態においては、集中キャッシュ400のヘッダ402内のフィールドが、割り当てられたデータ記憶領域406の終端を示している。いかなる場合でも、これらの長さフィールドは、(以下で論じる図5dのステップ534において)別のデータ要素410をキャッシュ400に追加することができる場所を示すために使用される。
データ要素410の例示的な構造を念頭に置いて、図3bのステップ316に戻る。ステップ316においてデータ要素410のハッシュは、注目されるデータのハッシュに一致する。データ要素410が注目されるデータを含むかどうか確かめるために、データ要素410のデータ識別子フィールド414が注目されるデータと比較される。それらが一致した場合には探索を完了する。注目されるデータは、ステップ318において取り出され、アプリケーションA 112に渡される。これにより、図3aから3dのキャッシュ探索ルーチン114が問題なく終了する。
一方、ステップ316の比較により、このデータ要素410が注目されるデータを含まないことが明らかになった場合、キャッシュ探索ルーチン114は、図3cのステップ320に進む。ステップ320において、データ要素410の参照フィールド412が調べられる。このフィールドが別のデータ要素410を指していないとき、集中キャッシュ400は、注目されるデータを含まない(ステップ322)。キャッシュ探索ルーチン114は、図3dのステップ326に進み、別の場所で注目されるデータを探索する。
ステップ320において、データ要素410の参照フィールド412が他のデータ要素を指している場合、その他のデータ要素が調べられ、注目されるデータを含むかどうか確かめられる。ステップ324は、このプロセスを表す。すなわち、注目されるデータが見つかり、取り出されるまで(ステップ318)、または注目されるデータを見つけることなしにチェインの最後に達するまで(ステップ322)、ステップ316から322を繰り返すことによってデータ要素410のチェインに従う。
集中キャッシュ400が注目されるデータを含まない場合、図3dのステップ326において、キャッシュ探索ルーチン114は、アプリケーションA 112に対してローカルなキャッシュ116を探索することができる。実施形態によっては、ステップ326の細部がステップ306の細部そのままのものがある。これによりキャッシュ探索コードを再使用することが可能となる。いずれの場合でも、ローカルキャッシュ116が注目されるデータを含んでいるときは、それらのデータがステップ332において取り出される。注目されるデータを含んでおらず、注目されるデータを探索すべき他のキャッシュがないと想定されるときは、ステップ328においてそれらのデータが生成される。次いで、ステップ330において、これらのデータをローカルキャッシュ116に追加して、今後のアクセスを容易にすることができる。作成されたデータを集中キャッシュ400に追加するための要求は、ステップ334において行うことができる。
図3aから3dは、集中キャッシュ400から、または別の場所からキャッシュ探索ルーチン114がどのように注目されるデータを取り出すかを示す。図5aから5dは、キャッシュ400の別の態様、すなわち、キャッシュ400にデータを追加し、現在のキャッシュが満杯になったとき新しい集中キャッシュを作成するキャッシュサービスルーチン124を示す。キャッシュサービスルーチン124は、キャッシュ400にデータを追加する唯一のルーチンであることから、複数の書込み側アプリケーションの間で衝突を防止するため、キャッシュ400をロックする必要はない。また、キャッシュサービスルーチン124は、書込み要求のすべてが流通するため、キャッシュ使用について統計を収集し、キャッシュ400にデータを追加するための特定の要求の重要度について「グローバル」な視野を形成することができので、新しいキャッシュが作成されたとき、どのデータを持ち越すべきか判断することができる。ここで、図5aから5dの手順は例示的なものにすぎない。なお、この手順は、図4aおよび4bにおいて導入された集中キャッシュデータ構造を使用する。
キャッシュサービスルーチン124は、集中キャッシュ400にデータを追加するための要求を受け取ると、図5aのステップ500において始まる。この要求は、キャッシュ探索ルーチン114が図3dのステップ334を実行したとき発せられている場合がある。
実施形態によっては、ステップ502において、キャッシュサービスルーチン124が受け取った要求に関する、また他の要求に関する統計を収集するものがある。ステップ504において、キャッシュサービスルーチン124は、この要求に従うかどうか判断する。実施形態によっては、単に要求のすべてに従うものがある一方、収集済み統計を参考にして、注目されるデータが集中キャッシュ400に追加される「価値がある」かどうか判断するものもある。実施形態によっては、注目されるデータのサイズが、キャッシュ400内の予約空間408と比較して大きすぎる場合は要求を拒否する。注目されるデータは、(おそらくは、図3aから3cのステップ306を実行することによって)キャッシュ400内のデータと比較され、注目されるデータがすでに存在する場合は要求が拒否される。これが発生する可能性があるのは、ステップ500において受け取られた要求が待ち行列に入ったことにより、要求が到達したときと、(図5bから5dのステップ522において)注目されるデータがキャッシュ400に追加されたときとの間に著しい遅延が存在する可能性があるからである。遅延の間、要求しているキャッシュ探索ルーチン114、または別のルーチンは、キャッシュ400に再アクセスし、注目されるデータを見つけられず、要求を提出する可能性がある。後者の要求が処理されるときまでに、より早い要求に応じて、キャッシュ400に注目されるデータがすでに追加されている。いずれの場合も、ステップ506において、要求に従わないと判断された場合には、キャッシュサービスルーチン124は、ステップ508において他の要求を待つ。
要求に従うと判断された場合、ステップ510において、キャッシュサービスルーチン124は、新たな集中キャッシュ400が必要とされているかどうか判断する。たとえば、注目されるデータがキャッシュ400内の予約空間408内に合わないときには、図5aおよび5bのステップ512から520において新たなキャッシュ400が作成される。新しいキャッシュ400はまた、参照のテーブル404が満杯になりつつあるとき、またはキャッシュ400が、暫時使用されていない非常に多数のデータ要素410を有するときに作成することができる。新しいキャッシュ400が必要とされないときには、キャッシュサービスルーチン124は、図5bのステップ522において注目されるデータを追加する処理に直接移行する。
新しい集中キャッシュ400が必要とされる場合には、ステップ512において空のシェルが作成される。キャッシュは、データへの高速アクセスが可能なように一般にRAM内に記憶される。いくつかのオペレーティングシステムにおいては、RAMのある領域をファイルシステムによってマッピングすることが可能である。これは、後述するある利点を有する。
図5bのステップ514において、キャッシュサービスルーチン124は、既存のキャッシュから選択されたデータ要素410を新しく作成されたキャッシュ400に配置する。データ要素410を選択するいくつかの方法が可能である。キャッシュサービスルーチン124は、データ要素410がどのように使用されているかに関して統計を収集することができる。次いで、最近使用された要素、または最もしばしば使用された要素が選択される。実施形態によっては、乱数の要素を選択時に使用するものがある。いずれの場合も、データ要素410は、選択されれば、新しい集中キャッシュ400のデータ記憶領域406内にコピーされ、新しいキャッシュ400の参照のテーブル404に配置される。ステップ514は、実行するのに一定の時間を要する可能性があるが、ステップ中、古いキャッシュは常にアクセス可能であることに留意されたい。
古いキャッシュのヘッダ402内に、ステップ516において新しいキャッシュ400への参照が書き込まれ、ステップ518においてフラグが設定され、古いキャッシュを「廃止」とマークする。これで、新しいキャッシュ400を使用する準備ができる。キャッシュ探索ルーチン114は、古いキャッシュ内で廃止フラグを見たとき、新しいキャッシュ400への参照に従う(図3aのステップ302および304参照)。
キャッシュサービスルーチン124は、ステップ520において、廃止されたキャッシュを参照するアプリケーションがなくなったとき直ちに、すなわち、アプリケーションのすべてが、廃止されたキャッシュへのその参照を解放したとき直ちに、廃止されたキャッシュをオペレーティングシステムが自動的に削除することを要求する。
新しいキャッシュ400が生成されたばかりか否かにかかわらず、ステップ522において注目されるデータが現行のキャッシュ400に追加される。図5bから5dのステップ522は、図3aから3cのステップ306内において探索されたデータ構造自体を生成するので、ステップ306の有する複雑さをそのまま有する。図中に示されるステップ306および522についての詳細は、一定の実施形態についてのみの例示ではあるが、ほとんどの実施形態において、これらのステップは互いに生き写し(mirror)になる。
特定の実施形態においてステップ522は、(図3aのステップ308を写した)ステップ524において注目されるデータをハッシュすることで開始される。ステップ526において、(ステップ310を写しているので)ハッシュが使用され、キャッシュ400の参照のテーブル404内のエントリを選択する。ステップ528において、選択されたエントリがまだデータ要素410を指していない場合には、図5dのステップ534において、キャッシュ400のデータ記憶領域406内でデータ要素410が作成される。次いで、この新しいデータ要素に注目されるデータが配置される。この配置ステップが実行されている間、キャッシュ400にアクセスするキャッシュ探索ルーチン114は、新しいデータを見ておらず、したがって、これらと同じデータを追加するために追加要求をする可能性があることに留意されたい。配置ステップ534が完了し、新しいデータ要素410の準備ができた後に、キャッシュサービスルーチン124は、新しいデータ要素410を指すように、参照のテーブル404内の選択されたポインタをアトミックに更新する(ステップ536)。この参照の書込みは、コンピュータ命令1つ分を占有するだけであり、その結果、本来的に割込み不能である。したがって、この動作中その内部一貫性を保持するためにキャッシュ400をロックする必要がない。
ステップ528に戻ると、参照のテーブル404内の選択されたエントリがすでにデータ要素410を指している場合には、ステップ530において、データ要素410の参照フィールド412が調べられる。ステップ532において、終了するまで参照のチェインに従う(これは、図3bおよび3cのステップ316から324における同じ参照チェインの下方への探索をそのまま写している)。チェインの終端が見つかった後に、キャッシュサービスルーチンは、上述のステップ534に進み、ここで新しいデータ要素410が割り振られ、注目されるデータが格納(filled)される。この状況で、ステップ536により、チェインの終端にあった既存のデータ要素410内に、新しいデータ要素410への参照がアトミックに追加され、したがって、参照のチェインがさらに「リンク」1つ分だけ延びる。
以上の通り、新しいデータ要素410を既存の集中キャッシュ400に追加し、あるいは新しい集中キャッシュ400を生成するとしても、キャッシュサービスルーチン124は2段階で処理が進められる。まず、データが準備され、時間のかかる作業のすべてが行われる。この段階の間、集中キャッシュ400に対する変更は、キャッシュ探索ルーチン114から見えない。したがって、その内部一貫性を保存するために集中キャッシュ400をロックする必要がない。また、キャッシュサービスルーチン124が高い優先順位で動作する必要がない。第2段階では、単一のポインタが新しいデータ要素410または新しい集中キャッシュ400に書き込まれる。単一のポインタを書き込むのは本来割込み不能であるので、やはり、この段階の間、集中キャッシュ400をロックする必要はない。第2段階が完了すると、新しいデータまたは新しいキャッシュが、キャッシュ探索ルーチン114にとってアクセス可能になる。
図6は、キャッシュサービスルーチン124の動作を監視し構成するための方法を示すフローチャートである。ステップ600において、集中キャッシュの最大サイズおよび現行のサイズが表示される。図5bのステップ514において新しい集中キャッシュに配置するとき、既存の集中キャッシュからデータ要素を選択するために使用されたヒューリスティックが、ステップ602において示される。ステップ504において、集中キャッシュにデータを追加するための要求に従うかどうか判断するために使用されたヒューリスティックが、ステップ604において示される。このヒューリスティックを単に「常に従う」とすることができたことを想起されたい。ステップ606において、キャッシュ使用について収集された様々な統計が示される。管理者は、これらの統計を解析し、集中キャッシュが最適動作していないと判断することができる。管理者は、ステップ608において、何らかの変更を入力し、これがステップ610において反映される。図6は、単にユーザインターフェースの特色を提供するものであって、本技術分野で周知の多種多様なキャッシュ解析ツールを十分に示すものではないことが理解される。
本発明の原理を適用することができる多数の可能な実施形態に鑑みて、本明細書で図面に関連して述べられている実施形態は、例示的なものにすぎず、本発明の範囲を制限すると考えるべきでないことを理解されたい。たとえば、例示されている実施形態、特にデータ構造とそれらに基づく手順は、本発明の精神から逸脱することなしに構成および詳細を修正することができることを当業者なら理解するであろう。本発明について、ソフトウェアモジュールまたは構成要素によって述べられているが、それらをハードウェア構成要素によって等価に置き換えることができることを当業者なら理解するであろう。したがって、本明細書に述べられている発明は、そのような実施形態すべてを、特許請求の範囲とその均等物の範囲内に入れることができると企図している。
ローカルエリアネットワーク(LAN)を介してキャッシュデータを共有する3つのコンピューティングデバイスを示すブロック図である。 図1aのコンピューティングデバイスの間で共有された集中キャッシュメモリを示すブロック図である。 本発明をサポートする例示的なコンピュータシステムを一般的に示す概略図である。 本発明による、集中キャッシュからデータにアクセスしようと試みるアプリケーションプログラムのための例示的な方法を示すフローチャートである。 本発明による、集中キャッシュからデータにアクセスしようと試みるアプリケーションプログラムのための例示的な方法を示すフローチャートである。 本発明による、集中キャッシュからデータにアクセスしようと試みるアプリケーションプログラムのための例示的な方法を示すフローチャートである。 本発明による、集中キャッシュからデータにアクセスしようと試みるアプリケーションプログラムのための例示的な方法を示すフローチャートである。 本発明による、集中キャッシュ用の例示的なデータ構造を示す概略図である。 集中キャッシュ内のデータ要素用の例示的なデータ構造を示す概略図である。 本発明による、集中キャッシュを維持するルーチンのための例示的な方法のフローチャートである。 本発明による、集中キャッシュを維持するルーチンのための例示的な方法のフローチャートである。 本発明による、集中キャッシュを維持するルーチンのための例示的な方法のフローチャートである。 本発明による、集中キャッシュを維持するルーチンのための例示的な方法のフローチャートである。 集中キャッシュサービスルーチンを構成するための例示的な方法のフローチャートである。
符号の説明
100 キャッシュ型データ共有環境
102 コンピューティングデバイスA
104 コンピューティングデバイスB
106 ラップトップ
108 LAN
110 インターネット
112 アプリケーションA
114 ローカル/集中キャッシュ探索ルーチン
116 現行のローカルキャッシュ
118 現行の集中キャッシュ
120 ローカルキャッシュ更新ルーチン
122 以前のローカルキャッシュ
124 集中キャッシュサービスルーチン
126 より古い集中キャッシュ
128 アプリケーションB
130 集中キャッシュ探索ルーチン
200 処理装置
202 メモリ
206 取り外し可能な記憶装置
208 固定式記憶装置
210 通信チャネル
212 入力デバイス
214 出力デバイス
400 集中キャッシュ
402 固定サイズヘッダ
404 参照の固定サイズテーブル
406 データ要素記憶領域
408 予約空間
410 データ要素
412 参照フィールド
414 データ識別子フィールド
416 データフィールド

Claims (35)

  1. アプリケーションプログラムと、集中キャッシュと、前記集中キャッシュへデータを追加する唯一のルーチンであって前記アプリケーションプログラムと区別されるキャッシュサービスルーチンとを有するコンピューティング環境において、前記キャッシュサービスルーチンが、注目されるデータの前記集中キャッシュへの追加を試みる方法であって、
    前記注目されるデータを前記集中キャッシュに追加することを依頼する要求を前記アプリケーションプログラムから受け取るステップと、
    前記注目されるデータを前記集中キャッシュに追加するか否かを判定するステップであって、前記注目されるデータが前記集中キャッシュ内に既に存在するか否かを判定する動作を含むステップと、
    前記注目されるデータを追加するとの判定に従って、前記注目されるデータを前記集中キャッシュに追加するステップと、
    を含んでおり、前記注目されるデータを前記集中キャッシュに追加するステップは、
    第1に、前記注目されるデータを前記集中キャッシュに記憶するステップと、
    第2に、前記注目されるデータへの前記集中キャッシュ内の参照を追加し、前記記憶されたデータへの参照を含むように前記集中キャッシュの参照テーブルを更新するステップと、
    を含んでおり、前記注目されるデータへの前記集中キャッシュ内の参照を追加するステップは前記集中キャッシュをロックすることを必要としないアトミックな処理であることを特徴とする方法。
  2. 請求項1記載の方法において、前記アプリケーションプログラムは第1のコンピューティングデバイス上で動作し、前記キャッシュサービスルーチンは第2のコンピューティングデバイス上で動作し、前記第1及び第2のコンピューティングデバイスは互いに異なることを特徴とする方法。
  3. 請求項2記載の方法において、前記アプリケーションプログラムから要求を受け取るステップは、シリアル通信ライン、パラレル通信ライン、ローカルエリアネットワーク、イントラネット、モデムリンク及びインターネットからなるグループから選択された通信媒体を介して受け取るステップを含むことを特徴とする方法。
  4. 請求項1記載の方法において、前記注目されるデータは、フォントグリフを含むことを特徴とする方法。
  5. 請求項1記載の方法において、前記注目されるデータを前記集中キャッシュに追加するか否かを判定するステップは、更に、少なくとも部分的には、前記注目されるデータが前記集中キャッシュに合うか否かを判定する動作と、前記アプリケーションプログラムから又は他のアプリケーションプログラムから受け取った前記要求について及び他の要求について統計を収集する動作と、前記アプリケーションプログラムから統計を受け取る動作とから構成されるグループから選択された動作に、基づくことを特徴とする方法。
  6. 請求項5記載の方法において、前記統計を収集する動作は、前記注目されるデータに対する要求の数と、前記注目されるデータに対する要求の時間的頻度と、前記注目されるデータのサイズと、前記注目されるデータに対する要求の送信元とから構成されるグループから選択された統計を収集する動作を含むことを特徴とする方法。
  7. 請求項1記載の方法において、前記注目されるデータを前記集中キャッシュに追加するステップは、
    前記集中キャッシュ内の参照のテーブル内のエントリを選択するステップを含み、前記選択は、少なくとも部分的には、前記注目されるデータのハッシュに基づいてなされることを特徴とする方法。
  8. 請求項7記載の方法において、
    前記選択されたエントリを調べることにより、前記選択されたエントリが前記集中キャッシュ内のデータ要素を指していないことが明らかになる場合には、
    第1に、前記集中キャッシュ内の新しいデータ要素に、前記注目されるデータを配置するステップと、
    第2に、前記参照のテーブル内における前記選択されたエントリにおける前記注目されるデータへの参照を追加するステップと、
    を更に含むことを特徴とする方法。
  9. 請求項8記載の方法において、前記注目されるデータへの参照を追加するステップは、前記新しいデータ要素に対する整数オフセットを計算するステップを含むことを特徴とする方法。
  10. 請求項7記載の方法において、
    前記選択されたエントリを調べることにより、前記選択されたエントリが前記集中キャッシュ内のデータ要素を指していることが明らかになる場合には、
    前記データ要素を調べることにより、前記データ要素が他のデータ要素を指していることが明らかになる場合には、別のデータ要素を指していないデータ要素に達するまで、前記データ要素を調べるステップを反復し、
    別のデータ要素を指していないデータ要素に達したら、第1に、前記注目されるデータを前記集中キャッシュ内の新しいデータ要素に配置し、第2に、前記データ要素内の前記注目されるデータへの参照を追加するステップを更に含むことを特徴とする方法。
  11. 請求項10記載の方法において、前記注目されるデータへの参照を追加するステップは、前記新しいデータ要素に対する整数オフセットを計算するステップを含むことを特徴とする方法。
  12. 請求項1記載の方法において、
    新しい集中キャッシュを生成するか否かを判定するステップと、
    新しい集中キャッシュを生成するとの判定に従って、新しい集中キャッシュを生成するステップと、
    を更に含むことを特徴とする方法。
  13. 請求項12記載の方法において、前記新しい集中キャッシュを生成するか否かを判定するステップは、少なくとも部分的には、前記注目されるデータが前記集中キャッシュ内に合うか否かを判定する動作と、前記集中キャッシュ内の参照のテーブルが満杯か否かを判定する動作と、前記集中キャッシュ内のデータがどのくらい最近使用されたかを判定する動作とから構成されるグループから選択された動作に、基づくことを特徴とする方法。
  14. 請求項12記載の方法において、前記新しい集中キャッシュを生成するステップは、
    新しい集中キャッシュを生成するステップと、
    前記集中キャッシュに前記新しい集中キャッシュへの参照を追加するステップと、
    前記集中キャッシュを廃止とマークするステップと
    を含むことを特徴とする方法。
  15. 請求項14記載の方法において、
    前記廃止された集中キャッシュから選択されたデータ要素を前記新しい集中キャッシュに配置するステップを更に含み、前記選択は、少なくとも部分的には、前記廃止された集中キャッシュ内のデータ要素の使用に関して収集された統計に適用されたヒューリスティックに基づいてなされることを特徴とする方法。
  16. 請求項15記載の方法において、前記ヒューリスティックは、最も最近使用されたものと、最も頻繁に使用されたものと、ラウンドロビンとから構成されるグループから選択されることを特徴とする方法。
  17. 請求項14記載の方法において、
    いずれのアプリケーションプログラムも前記廃止された集中キャッシュを参照しないときは、前記廃止された集中キャッシュが自動的に削除されるように、前記廃止された集中キャッシュをマークするステップを更に含むことを特徴とする方法。
  18. アプリケーションプログラムと、集中キャッシュと、前記集中キャッシュへデータを追加する唯一のルーチンであって前記アプリケーションプログラムと区別されるキャッシュサービスルーチンとを有するコンピューティング環境において、前記アプリケーションプログラムが、注目されるデータへのアクセスを試みる方法であって、
    前記集中キャッシュ内で前記注目されるデータを探索するステップと、
    前記注目されるデータが前記集中キャッシュ内で見つかったか否かを判定するステップと、
    前記注目されるデータが前記集中キャッシュ内で見つかった場合には、前記集中キャッシュ内の前記注目されるデータにアクセスし、
    前記注目されるデータが前記集中キャッシュ内で見つからない場合には、前記集中キャッシュ以外の位置で前記注目されるデータへのアクセスを試み、前記キャッシュサービスルーチンに要求を発行して、前記注目されるデータを前記集中キャッシュに追加することを依頼するステップと、
    を含んでおり、前記集中キャッシュ以外の位置で前記注目されるデータへのアクセスを試みるステップは、
    前記アプリケーションプログラムに対してローカルなキャッシュ内で前記注目されるデータを探索するステップと、
    前記注目されるデータが前記ローカルキャッシュ内で見つかった場合には、前記ローカルキャッシュ内の前記注目されるデータにアクセスし、
    前記注目されるデータが前記ローカルキャッシュ内で見つからない場合には、前記注目されるデータを生成するルーチンを呼び出すステップと
    を含んでおり、前記要求を受けて前記注目されるデータ前記集中キャッシュ追加するステップは、前記注目されるデータが前記集中キャッシュ内に既に存在するか否かに基づいて前記集中キャッシュへ追加するか否かを判定する動作を含むと共に、
    第1に、前記注目されるデータを前記集中キャッシュに記憶するステップと、
    第2に、前記注目されるデータへの前記集中キャッシュ内の参照を追加し、前記記憶されたデータへの参照を含むように前記集中キャッシュの参照テーブルを更新するステップと、
    を含んでおり、前記注目されるデータへの前記集中キャッシュ内の参照を追加するステップは前記集中キャッシュをロックすることを必要としないアトミックな処理であることを特徴とする方法。
  19. 請求項18記載の方法において、前記アプリケーションプログラムは第1のコンピューティングデバイス上で動作し、前記キャッシュサービスルーチンは第2のコンピューティングデバイス上で動作し、前記第1及び第2のコンピューティングデバイスは互いに異なることを特徴とする方法。
  20. 請求項19記載の方法において、前記キャッシュサービスルーチンへの要求の発行は、シリアル通信ラインと、パラレル通信ラインと、ローカルエリアネットワークと、イントラネットと、モデムリンクと、インターネットとから構成されるグループから選択される通信媒体を介して発行することを含むことを特徴とする方法。
  21. 請求項18記載の方法において、前記注目されるデータはフォントグリフを含むことを特徴とする方法。
  22. 請求項18記載の方法において、前記集中キャッシュ内で前記注目されるデータを探索するステップは、
    前記集中キャッシュの参照のテーブル内のエントリを選択するステップを含み、前記選択は、少なくとも部分的に、前記注目されるデータのハッシュに基づいてなされることを特徴とする方法。
  23. 請求項22記載の方法において、
    前記選択されたエントリを調べることにより、前記選択されたエントリが前記集中キャッシュ内のデータ要素を指していないことが明らかになった場合には、前記注目されるデータが前記集中キャッシュにないと決定するステップを更に含むことを特徴とする方法。
  24. 請求項22記載の方法において、
    前記選択されたエントリを調べることにより、前記選択されたエントリが前記集中キャッシュ内のデータ要素を指していること明らかになり、更に、前記データ要素を調べることにより、前記データ要素が前記注目されるデータを含むことが明らかになった場合には、前記注目されるデータが前記集中キャッシュにあると決定するステップを更に含むことを特徴とする方法。
  25. 請求項24記載の方法において、前記選択されたエントリは、前記集中キャッシュ内の整数オフセットによってデータ要素を指すことを特徴とする方法。
  26. 請求項22記載の方法において、
    前記選択されたエントリを調べることにより、前記選択されたエントリが前記集中キャッシュ内のデータ要素を指していることが明らかになり、前記データ要素を調べることにより、前記データ要素が前記注目されるデータを含まないことが明らかになった場合には、
    前記データ要素が他のデータ要素を指していない場合には、前記注目されるデータが前記集中キャッシュの中にないと判断し、
    前記データ要素が他のデータ要素を指している場合には、前記データ要素を調べるステップを繰り返して、前記注目されるデータを含むデータ要素に達するまで、または別のデータ要素を指していないデータ要素に達するまで、前記他のデータ要素を調べるステップを更に含むことを特徴とする方法。
  27. 請求項18記載の方法において、
    前記注目されるデータが前記ローカルキャッシュ内で見つからない場合、前記生成された注目されるデータを前記ローカルキャッシュに追加するステップを更に含むことを特徴とする方法。
  28. 請求項18記載の方法において、
    前記注目されるデータが前記ローカルキャッシュ内で見つからない場合、前記キャッシュサービスルーチンに要求を発行し、前記生成された注目されるデータを前記集中キャッシュに追加することを依頼するステップを更に含むことを特徴とする方法。
  29. 請求項18記載の方法において、前記キャッシュサービスルーチンに要求を発行するステップは、
    前記要求を記憶するステップと、
    1又は複数の他の要求を記憶するステップと、
    前記記憶された要求を前記キャッシュサービスルーチンに発行するステップと
    を含むことを特徴とする方法。
  30. 請求項18記載の方法において、
    前記集中キャッシュを検査して、前記集中キャッシュが廃止とマークされているか否かを確かめるステップと、
    前記集中キャッシュが廃止とマークされている場合、前記廃止された集中キャッシュ内の参照を使用して別の集中キャッシュの位置を定めるステップと
    を更に含むことを特徴とする方法。
  31. 請求項18記載の方法において、
    前記アプリケーションプログラムが前記集中キャッシュを使用することに関する統計を収集するステップと、
    前記収集された統計を前記キャッシュサービスルーチンに発行するステップと
    を更に含むことを特徴とする方法。
  32. アプリケーションプログラムと、集中キャッシュと、前記集中キャッシュへデータを追加する唯一のルーチンであって前記アプリケーションプログラムと区別されるキャッシュサービスルーチンとを有するコンピューティング環境において、前記キャッシュサービスルーチンが、注目されるデータの前記集中キャッシュへの追加を試みる方法であって、
    前記注目されるデータを前記集中キャッシュに追加することを依頼する要求を前記アプリケーションプログラムから受け取るステップと、
    前記注目されるデータを前記集中キャッシュに追加するか否かを判定するステップであって、前記注目されるデータが前記集中キャッシュ内に既に存在するか否かを判定する動作を含むステップと、
    前記注目されるデータを追加するとの判定に従って、前記注目されるデータを前記集中キャッシュに追加するステップと、
    を含んでおり、前記注目されるデータを前記集中キャッシュに追加するステップは、
    前記集中キャッシュの参照のテーブルにおいてエントリを選択するステップであって、前記選択は、少なくとも部分的には、前記注目されるデータのハッシュに基づいてなされる、ステップと、
    前記選択されたエントリを調べることにより、前記選択されたエントリが前記集中キャッシュ内のデータ要素を指していないことが明らかになる場合には、
    第1に、前記集中キャッシュ内の新しいデータ要素に、前記注目されるデータを配置するステップと、
    第2に、前記参照のテーブル内における前記選択されたエントリにおける前記注目されるデータへの参照を追加するステップであって、前記新たなデータ要素への整数オフセットを計算すること含むステップと、
    を含んでおり、前記注目されるデータへの参照を追加するステップは前記集中キャッシュをロックすることを必要としないアトミックな処理であることを特徴とする方法。
  33. アプリケーションプログラムと、集中キャッシュと、前記集中キャッシュへデータを追加する唯一のルーチンであって前記アプリケーションプログラムと区別されるキャッシュサービスルーチンとを有するコンピューティング環境において、前記キャッシュサービスルーチンが、注目されるデータの前記集中キャッシュへの追加を試みる方法であって、
    前記注目されるデータを前記集中キャッシュに追加することを依頼する要求を前記アプリケーションプログラムから受け取るステップと、
    前記注目されるデータを前記集中キャッシュに追加するか否かを判定するステップであって、前記注目されるデータが前記集中キャッシュ内に既に存在するか否かを判定する動作を含むステップと、
    前記注目されるデータを追加するとの判定に従って、前記注目されるデータを前記集中キャッシュに追加するステップと、
    を含んでおり、前記注目されるデータを前記集中キャッシュに追加するステップは、
    前記集中キャッシュの参照のテーブルにおいてエントリを選択するステップであって、前記選択は、少なくとも部分的には、前記注目されるデータのハッシュに基づいてなされる、ステップと、
    前記選択されたエントリを調べることにより、前記選択されたエントリが前記集中キャッシュ内のデータ要素を指していることが明らかになる場合には、
    前記データ要素を調べることにより、前記データ要素が他のデータ要素を指していることが明らかになる場合には、別のデータ要素を指していないデータ要素に達するまで、前記データ要素を調べるステップを反復し、
    別のデータ要素を指していないデータ要素に達したら、第1に、前記注目されるデータを前記集中キャッシュ内の新しいデータ要素に配置し、第2に、前記データ要素内の前記注目されるデータへの参照を追加するステップを更に含んでおり、前記注目されるデータへの参照を追加するステップは前記集中キャッシュをロックすることを必要としないアトミックな処理であることを特徴とする方法。
  34. 請求項33記載の方法において、前記注目されるデータへの参照を追加するステップは、前記新しいデータ要素に対する整数オフセットを計算するステップを含むことを特徴とする方法。
  35. アプリケーションプログラムと、集中キャッシュと、前記集中キャッシュへデータを追加する唯一のルーチンであって前記アプリケーションプログラムと区別されるキャッシュサービスルーチンとを有するコンピューティング環境において、前記アプリケーションプログラムが、注目されるデータへのアクセスを試みる方法であって、
    前記集中キャッシュ内で前記注目されるデータを探索するステップと、
    前記注目されるデータが前記集中キャッシュ内で見つかったか否かを判定するステップと、
    前記注目されるデータが前記集中キャッシュ内で見つかった場合には、前記集中キャッシュ内の前記注目されるデータにアクセスし、
    前記注目されるデータが前記集中キャッシュ内で見つからない場合には、
    前記集中キャッシュ以外の位置で前記注目されるデータへのアクセスを試み、
    前記キャッシュサービスルーチンに要求を発行して、前記注目されるデータを前記集中キャッシュに追加することを依頼し、
    前記集中キャッシュを検査して、前記集中キャッシュが廃止とマークされているか否かを確かめ、
    前記集中キャッシュが廃止とマークされている場合には、前記廃止された集中キャッシュ内の参照を使用して別の集中キャッシュの位置を定めるステップと、
    を更に含んでおり、前記要求を受けて前記注目されるデータ前記集中キャッシュへ追加するステップは、前記注目されるデータが前記集中キャッシュ内に既に存在するか否かに基づいて前記集中キャッシュへ追加するか否かを判定する動作を含むと共に、
    第1に、前記注目されるデータを前記集中キャッシュに記憶するステップと、
    第2に、前記注目されるデータへの前記集中キャッシュ内の参照を追加し、前記記憶されたデータへの参照を含むように前記集中キャッシュの参照テーブルを更新するステップと、
    を含んでおり、前記注目されるデータへの前記集中キャッシュ内の参照を追加するステップは前記集中キャッシュをロックすることを必要としないアトミックな処理であることを特徴とする方法。
JP2004020450A 2003-01-28 2004-01-28 集中キャッシュメモリのアトミックな更新方法 Expired - Fee Related JP4195397B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/352,599 US7020746B2 (en) 2003-01-28 2003-01-28 Method and system for an atomically updated, central cache memory

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2007099334A Division JP4295791B2 (ja) 2003-01-28 2007-04-05 アトミックに更新される集中キャッシュメモリのための方法及びシステム
JP2007239633A Division JP2008027461A (ja) 2003-01-28 2007-09-14 集中キャッシュメモリのアトミックな更新方法

Publications (3)

Publication Number Publication Date
JP2004234663A JP2004234663A (ja) 2004-08-19
JP2004234663A5 JP2004234663A5 (ja) 2007-01-25
JP4195397B2 true JP4195397B2 (ja) 2008-12-10

Family

ID=32655510

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2004020450A Expired - Fee Related JP4195397B2 (ja) 2003-01-28 2004-01-28 集中キャッシュメモリのアトミックな更新方法
JP2007099334A Expired - Lifetime JP4295791B2 (ja) 2003-01-28 2007-04-05 アトミックに更新される集中キャッシュメモリのための方法及びシステム
JP2007239633A Pending JP2008027461A (ja) 2003-01-28 2007-09-14 集中キャッシュメモリのアトミックな更新方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2007099334A Expired - Lifetime JP4295791B2 (ja) 2003-01-28 2007-04-05 アトミックに更新される集中キャッシュメモリのための方法及びシステム
JP2007239633A Pending JP2008027461A (ja) 2003-01-28 2007-09-14 集中キャッシュメモリのアトミックな更新方法

Country Status (5)

Country Link
US (3) US7020746B2 (ja)
EP (2) EP1443403A3 (ja)
JP (3) JP4195397B2 (ja)
KR (2) KR100906262B1 (ja)
CN (1) CN1517885B (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316048B2 (en) * 2004-08-17 2012-11-20 Hewlett-Packard Development Company, L.P. Method and apparatus for managing a data structure for multi-processor access
EP1703404A1 (fr) * 2005-03-16 2006-09-20 Amadeus s.a.s Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants
US7779206B2 (en) * 2005-05-16 2010-08-17 Texas Instruments Incorporated Cache inspection with inspection bypass feature
US8200688B2 (en) * 2006-03-07 2012-06-12 Samsung Electronics Co., Ltd. Method and system for facilitating information searching on electronic devices
US8863221B2 (en) * 2006-03-07 2014-10-14 Samsung Electronics Co., Ltd. Method and system for integrating content and services among multiple networks
US8115869B2 (en) 2007-02-28 2012-02-14 Samsung Electronics Co., Ltd. Method and system for extracting relevant information from content metadata
US8209724B2 (en) * 2007-04-25 2012-06-26 Samsung Electronics Co., Ltd. Method and system for providing access to information of potential interest to a user
US8843467B2 (en) * 2007-05-15 2014-09-23 Samsung Electronics Co., Ltd. Method and system for providing relevant information to a user of a device in a local network
US8510453B2 (en) * 2007-03-21 2013-08-13 Samsung Electronics Co., Ltd. Framework for correlating content on a local network with information on an external network
US20070261099A1 (en) * 2006-05-02 2007-11-08 Broussard Scott J Confidential content reporting system and method with electronic mail verification functionality
US7954048B2 (en) * 2006-09-21 2011-05-31 International Business Machines Corporation Content management via configuration set relationships in a content management system
US8935269B2 (en) * 2006-12-04 2015-01-13 Samsung Electronics Co., Ltd. Method and apparatus for contextual search and query refinement on consumer electronics devices
US20090055393A1 (en) * 2007-01-29 2009-02-26 Samsung Electronics Co., Ltd. Method and system for facilitating information searching on electronic devices based on metadata information
US20080209120A1 (en) * 2007-02-26 2008-08-28 Microsoft Corporation Accelerating cache performance by active cache validation
US9286385B2 (en) 2007-04-25 2016-03-15 Samsung Electronics Co., Ltd. Method and system for providing access to information of potential interest to a user
US8176253B2 (en) * 2007-06-27 2012-05-08 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization and emulation
US8176068B2 (en) 2007-10-31 2012-05-08 Samsung Electronics Co., Ltd. Method and system for suggesting search queries on electronic devices
US8190652B2 (en) * 2007-12-06 2012-05-29 Intel Corporation Achieving coherence between dynamically optimized code and original code
US8938465B2 (en) * 2008-09-10 2015-01-20 Samsung Electronics Co., Ltd. Method and system for utilizing packaged content sources to identify and provide information based on contextual information
US8171228B2 (en) * 2009-11-12 2012-05-01 Oracle International Corporation Garbage collection in a cache with reduced complexity
US8433865B2 (en) 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
WO2012101855A1 (ja) * 2011-01-28 2012-08-02 株式会社日立製作所 通信システム、通信装置、通信制御方法
US8635411B2 (en) 2011-07-18 2014-01-21 Arm Limited Data processing apparatus and method for managing coherency of cached data
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
JP5772458B2 (ja) * 2011-09-29 2015-09-02 富士通株式会社 データ管理プログラム、ノード、および分散データベースシステム
EP2803001A1 (en) * 2011-10-31 2014-11-19 Forsythe Hamish Method, process and system to atomically structure varied data and transform into context associated data
KR102174337B1 (ko) 2014-04-08 2020-11-04 삼성전자주식회사 메모리 시스템 및 이를 포함하는 전자 장치
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9910907B2 (en) * 2015-01-29 2018-03-06 International Business Machines Corporation Atomically moving data elements between or within linked data structures
US10387053B1 (en) * 2015-09-16 2019-08-20 Amazon Technologies, Inc. Memory synchronization in a distributed computing system
CN105471870B (zh) * 2015-11-24 2019-04-23 深圳国微技术有限公司 一种密钥安全更新及使用的系统及方法
US10452638B2 (en) * 2016-12-14 2019-10-22 International Business Machines Corporation Atomically moving data elements between or within linked data structures having no support for atomic moves
CN109918134B (zh) * 2019-03-06 2023-05-30 湖南科技大学 用于vliw基本块调度的组合启发式指令选择优化方法
US20230060922A1 (en) * 2021-08-26 2023-03-02 Verizon Media Inc. Systems and methods for memory management in big data applications

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185878A (en) * 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
US5276835A (en) * 1990-12-14 1994-01-04 International Business Machines Corporation Non-blocking serialization for caching data in a shared cache
US5287473A (en) * 1990-12-14 1994-02-15 International Business Machines Corporation Non-blocking serialization for removing data from a shared cache
US5526511A (en) * 1993-12-23 1996-06-11 Unisys Corporation Enhanced least recently used round robin cache management method and apparatus for allocation and destaging of cache segments
JPH086854A (ja) * 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
US5706462A (en) * 1996-02-23 1998-01-06 Microsoft Corporation Self optimizing font width cache
US5883640A (en) * 1996-08-15 1999-03-16 Hsieh; Paul Computing apparatus and operating method using string caching to improve graphics performance
US5950201A (en) * 1996-12-06 1999-09-07 International Business Machines Corporation Computerized design automation method using a single logical PFVL paradigm
US5787478A (en) * 1997-03-05 1998-07-28 International Business Machines Corporation Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US5924098A (en) * 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6009428A (en) * 1997-09-15 1999-12-28 International Business Machines Corporation System and method for providing a single application program interface for heterogeneous databases
US6128627A (en) 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
BR9915366A (pt) * 1998-11-16 2001-07-31 Ericsson Telefon Ab L M Sistema de processamento, sistema de comunicação possuindo um sistema de processamento, e, processo para processar trabalho em um sistema de processamento tendo múltiplos processadores de memória compartilhada para execução paralela de trabalhos
KR100731371B1 (ko) * 1999-02-15 2007-06-21 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체
US6738526B1 (en) * 1999-07-30 2004-05-18 Microsoft Corporation Method and apparatus for filtering and caching data representing images
JP2001043204A (ja) 1999-08-02 2001-02-16 Nec Eng Ltd キャッシュ・メモリ制御装置
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
IL140459A0 (en) * 1999-12-28 2002-02-10 Ge Med Sys Global Tech Co Llc Workstation with text font cache
US6594678B1 (en) * 2000-01-05 2003-07-15 Sun Microsystems, Inc. Methods and apparatus for improving locality of reference through memory management
US6889301B1 (en) * 2002-06-18 2005-05-03 Emc Corporation Data storage system
US6996676B2 (en) * 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy

Also Published As

Publication number Publication date
EP1443403A2 (en) 2004-08-04
US20040148463A1 (en) 2004-07-29
EP1443403A3 (en) 2007-10-10
KR100906262B1 (ko) 2009-07-06
JP4295791B2 (ja) 2009-07-15
KR20040069282A (ko) 2004-08-05
US20060136670A1 (en) 2006-06-22
JP2008027461A (ja) 2008-02-07
CN1517885A (zh) 2004-08-04
US7020746B2 (en) 2006-03-28
EP1993039A3 (en) 2013-04-03
US7191289B2 (en) 2007-03-13
JP2007184009A (ja) 2007-07-19
CN1517885B (zh) 2013-03-06
EP1993039A2 (en) 2008-11-19
JP2004234663A (ja) 2004-08-19
US20050251627A1 (en) 2005-11-10
KR20090006034A (ko) 2009-01-14
US7089365B2 (en) 2006-08-08
KR100932803B1 (ko) 2009-12-21

Similar Documents

Publication Publication Date Title
JP4195397B2 (ja) 集中キャッシュメモリのアトミックな更新方法
US11388251B2 (en) Providing access to managed content
US6754799B2 (en) System and method for indexing and retrieving cached objects
US6952730B1 (en) System and method for efficient filtering of data set addresses in a web crawler
US8065484B2 (en) Enhanced access to data available in a cache
CN110046133B (zh) 一种存储文件系统的元数据管理方法、装置及系统
US8396938B2 (en) Providing direct access to distributed managed content
US20120265782A1 (en) Arrangement for a distributed file system having data objects mapped independent of any data object attribute
CA2570556A1 (en) System and method for maintaining objects in a lookup cache
EP1181639B1 (en) Apparatus and method for providing a cyclic buffer
US6980994B2 (en) Method, apparatus and computer program product for mapping file handles
US20220342888A1 (en) Object tagging
US6212533B1 (en) Hyper-media document management system having navigation mechanism
CN111797119A (zh) 一种缓存装置、系统及缓存方法
CN109885619A (zh) 基于分布式数据库的数据写入与读取方法和装置
EP3995972A1 (en) Metadata processing method and apparatus, and computer-readable storage medium
US7146462B2 (en) Storage management method
US6625614B1 (en) Implementation for efficient access of extended attribute data
CN114116618A (zh) 元数据操作方法、存储系统、装置、节点以及存储介质
JP3580361B2 (ja) 広bit幅アドレス空間データ移行時データアクセス方式
JPH11120067A (ja) データの部分情報を先行して管理するデータベース処理方法
JP2005157860A (ja) ファイル管理装置及び方法及びプログラム
JPH10207443A (ja) 文字データの記憶保持方法及び装置

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20061113

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20061115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061205

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061205

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20061205

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20061222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070405

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080731

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080925

R150 Certificate of patent or registration of utility model

Ref document number: 4195397

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111003

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121003

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131003

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees