JP2002540502A - データベースシステムにおけるバーチャルメモリマッピングとトランザクションマネージメントのポインターリロケーションオプチミゼーションの方法及び装置 - Google Patents

データベースシステムにおけるバーチャルメモリマッピングとトランザクションマネージメントのポインターリロケーションオプチミゼーションの方法及び装置

Info

Publication number
JP2002540502A
JP2002540502A JP2000607084A JP2000607084A JP2002540502A JP 2002540502 A JP2002540502 A JP 2002540502A JP 2000607084 A JP2000607084 A JP 2000607084A JP 2000607084 A JP2000607084 A JP 2000607084A JP 2002540502 A JP2002540502 A JP 2002540502A
Authority
JP
Japan
Prior art keywords
page
data
cache
handle
pointer
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.)
Pending
Application number
JP2000607084A
Other languages
English (en)
Other versions
JP2002540502A5 (ja
Inventor
リーベント,ジョナサン,アイ.
Original Assignee
エクセロン コーポレイション
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 エクセロン コーポレイション filed Critical エクセロン コーポレイション
Publication of JP2002540502A publication Critical patent/JP2002540502A/ja
Publication of JP2002540502A5 publication Critical patent/JP2002540502A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 オブジェクト型のデータベースシステムに使用する装置であって、バーチャルメモリマッピングとトランザクションマネージメントを行うものであり、少なくとも1つの永久保存と少なくとも1つのデータベースと、少なくとも1つのキャッシュと、処理ユニットとを含んでいる。この処理ユニットはバーチャルアドレスを利用してキャッシュのデータにアクセスする手段と、バーチャルを物理的アドレスにマッピングする手段と、トランザクション後にキャッシュデータを保持する手段とを備えている。一般的に保持されたデータはさらなる翻訳を不要としている。キャッシュデータをトランザクションで使用可能とすることはリロケーション最良化と呼称される。この方法は使用の最近度の順序で並べられたエンティティを含んだ列を使用し、古いバインディングのアドレススペースをリサイクルし、クライエントアプリケーションの適正なファンクションに必要なバインディングの有効性を保存する。

Description

【発明の詳細な説明】
【0001】
【発明の属する分野】
本願発明はコンピュータシステムに関し、特にはパーシステントデータ(persi
stent data)を有した複数のキャッシュ部(cache)を有したバーチャルメモリマッ
ピングを使用したデータベースシステムのポインターマネージメントに関する。
【0002】 関連出願の解説 本願は1999年3月25日出願の米国仮特許願第60/126103号の優
先権を主張する。
【0003】
【従来の技術】
オブジェクト(object-oriented)型データベースシステムにおいて、並びに多
数の相互関連オブジェクトを有した他のシステムにおいては、ポインター(point
er)とも呼称されるインターオブジェクトリファレンス(inter-object reference
)は保存されたオブジェクトにアクセスを提供する複雑な構造を提供する。オブ
ジェクト型データベースにアクセスする際にアプリケーションプログラムは、デ
ータベースの関連クウェリー(query)とダイレクトトラバーサル(direct travers
al)を使用してオブジェクト間の複雑な接続を利用してオブジェクトにアクセス
して更新し、各オブジェクトがアクセスされるときに計算を実行することで時間
をかける。
【0004】 オブジェクト型データベースの典型的なアプリケーション領域はコンピュータ
エイドデザイン、製造、エンジニアリング、ソフトウェア開発、電子パブリケー
ション、マルチメディアオフィースオートメーション、及び地理的インフォメー
ションシステムである。これらアプリケーション環境はオブジェクト型データベ
ースシステムが迅速であることを要求する。
【0005】 典型的なオブジェクト型データベースシステムはサーバーを介してオブジェク
ト型データベースに接続された多数のワークステーションや他のタイプのクライ
エントコンピュータを有している。各クライエントコンピュータは自身のキャッ
シュメモリを有しており、クライエントアプリケーションプログラムが要求する
データが配置される。
【0006】 全てのオブジェクト型データベースシステムはオブジェクトを識別する方法を
有している。現在、システムによっては“オブジェクトアイデンティファイヤー
”(OID)を使用する。これはレフェレンスをオブジェクトに具現化する。シ
ステムによってはポインターを使用する。“デレフェレンス処理”と呼ばれるオ
ペレーションはポインターをオブジェクトに従わせ、オブジェクトをリクエスト
するアプリケーションに利用可能にすることでオブジェクトを発見する。
【0007】 データベースのデータへのアクセスはクライエントシステムのキャッシュメモ
リにデータをコピーすることが関与する。現行システムのキャッシュデータはト
ランザクションの完了後にしばしば放棄される。なぜなら、キャッシュデータを
レフェレンスするポインターは時代遅れだからである。キャッシュデータの放棄
はデータの整合性を確実にするが、クライエントとサーバーコンピュータとの間
のコミュニケーションを増加させる。またキャッシュの使用を促すローカリティ
(locality)の原理を利用させない。しかし、キャッシュのパーシステントなデー
タは、データとデータをレフェレンスするポインターとをデータベースと整合状
態に保つ方法を必要とする。
【0008】 パーシステントなデータのキャッシュ処理を、デレフェレンスオペレーション
が高速で行えるような形態にするために、データレフェレンスポインターを更新
する方法を有することが望ましい。
【0009】 本願発明の1目的は、オブジェクト型データベースシステムにおいてデータを
パーシステントにキャッシュ処理する方法と装置の提供である。
【0010】 本願発明の別目的はキャッシュ処理されたデータのための最良ポインターリロ
ケーションを有する方法と装置の提供である。
【0011】 本願発明の別目的はオブジェクト型データベースシステムのためのバーチャル
メモリマッピングアーキテクチャにおける最良ポインターリロケーションのため
の方法と装置の提供である。
【0012】
【発明が解決しようとする課題】
パーシステントキャッシュ処理データのためのポインターリロケーション最良
化の問題は、データベースシステムにおけるバーチャルメモリマッピングとトラ
ンザクションマネージメントのポインターリロケーション最良化のための本願発
明の方法と装置により解消される。
【0013】
【課題を解決するための手段】
データを保存する少なくとも1つの永久保存手段と少なくとも1つのデータベ
ースと、物理的アドレスでアドレスされたローカルにデータを保存する少なくと
も1つのキャッシュメモリと、キャッシュメモリ内のデータをアクセスするため
にバーチャルアドレスを利用してデータをリクエストする手段と、バーチャルア
ドレスを物理的アドレスにマッピングする手段と、トランザクションの終了後に
キャッシュデータを維持する手段とを含んだ処理ユニットとを有したオブジェク
ト型データベースシステムのためのバイチャルメモリマッピングとトランザクシ
ョンマネージメントのための装置と方法とが提供される。典型的には、このシス
テムは複数のクライエントコンピュータを有している。それぞれはネットワーク
で接続されたキャッシュメモリを有しており、各永久保存手段はサーバーコンピ
ュータを有している。1つのコンピュータはクライエントコンピュータとサーバ
ーコンピュータとして作用することができる。クライエントアプリケーションに
効率的なデレフェレンスオペレーションを提供するために装置はポインターをキ
ャッシュデータにリロケートすることで作動する。装置はさらにリロケートされ
たポインターをキャッシュに維持されたデータに対して連続的トランザクション
に維持することで作動する。ポインターリロケーション維持オペレーションの頻
度を最低に減少させることで装置はその最良利益を達成する。
【0014】 リロケーションオペレーションは3つのカテゴリーに分割できる。すなわち、
インバウンドリロケーションと、フォーワードリロケーションと、アウトバウン
ドリロケーションである。インバウンドリロケーションには外部フォーマットか
らクライエントアプリケーションで使用できるフォーマットとステートへのペー
ジのポインターの翻訳が関与する。インバウンドリロケーションはクライエント
キャッシュに入るデータベースのリロケーションの発生ごとに発生する。フォー
ワードリロケーションはインバウンドリロケーションまたは前のフォーワードリ
ロケーションによって創出されたステートからのページのポインターの翻訳が関
与する。これはクライエントアプリケーションによって、現行的に利用できるス
テートには直ちに使用できない。特定のページのフォーワードリロケーションは
、ページがキャッシュに入るトランザクションではなく、ページが読み取りまた
は改正されるトランザクションの発生ごとに発生する。アウトバウンドリロケー
ションはクライエントアプリケーションによって使用が可能な形態から外部フォ
ームへの翻訳が関与する。特定ページのアウトバウンドリロケーションは連続的
なトランザクションの終了部で発生する。ここではページは変更される。あるい
は、変更ページはキャッシュから他の手段で取り戻されなければならない。本願
発明の利点はクライエントアプリケーションにより使用されるアドレスのマネー
ジメントであり、連続的トランザクションに必要なフォーワードリロケーション
の数を減少させることである。
【0015】 本願発明は以下の解説からさらに理解されよう。
【本発明の実施の態様】
好適実施例の詳細な説明 図1から4はベーシックコンピュータシステムを表す。ここで本願発明のバー
チャルメモリマッピング方法と装置のためのポインターリロケーション最良化が
利用できる。
【0016】 図1は複数のクライエントコンピュータ40、クライエントとサーバコンピュ
ータ42及びサーバコンピュータ44がコンピュータネットワーク46またはコ
ンピュータバス等の他のコンピュータ通信通路で接続されているシステムを図示
している。クライエントコンピュータ40はユーザによって使用され、種々なア
プリケーションソフトをランする。サーバコンピュータ44はデータベースで維
持されるデータの永久レポジトリとして作用する。一般的に、クライエントコン
ピュータ40はサーバーコンピュータ44に保存されたデータにアクセスできる
。コンピュータ42はクライエントコンピュータとサーバーコンピュータとして
作用する。このようなコンピュータ42は自身が保存するデータにアクセスでき
、他のサーバーコンピータ44のデータにもアクセスできる。他のクライエント
コンピュータ40はクライエントとサーバーのコンピュータ42のデータにもア
クセスできる。本願発明のデータベース方法と装置は、少なくとも1つのクライ
エントとサーバーコンピュータ42または少なくとも1つづつのクライエントコ
ンピュータ40とサーバーコンピュータ44をコンピュータネットワークまたは
通信通路46で接続したシステムで使用できる。簡単にするため、クライエント
コンピュータ40または、クライエントコンピュータとして作用するコンピュー
タ42を“クライエント”と呼称し、サーバーコンピュータ44またはサーバー
として作用するコンピュータ42を“サーバー”と呼称する。
【0017】 図2は単純化されたシステムの詳細図である。サーバーコンピュータ44はデ
ィスクまたは他の大量保存媒体52に接続されたCPU50を含んでいる。これ
はデータの永久レポジトリである。CPU50はデータをディスク52とネット
ワーク46との間で移動させる。CPU54はキャッシュ56の物理アドレスに
マップされたバーチャルアドレススペースをコントロールする。クライエントコ
ンピュータ40で作動するアプリケーションはキャッシュメモリ56内のデータ
の読み取り、書き込み、創出及び削除によってデータベースのデータを操作する
。クライエント40は、キャッスメモリ56のデータの全ての操作を行う。標準
データベースシステムでのようにサーバーコンピュータ44に保存されたデータ
に対してコンピュータネットワーク46でトラザクションを行うのではない。ト
ランザクションがキャッシュメモリ56のデータに対してクライエントコンピュ
ータ40で完了すると、このトランザクションの結果はネットワーク46を介し
て永久レポジトリ、すなわちサーバーコンピュータ44のディスク52に伝達さ
れる。クライエントコンピュータ40とサーバーコンピュータ44の間の相互作
用の方法は通信ネットワーク上のサーバーコンピュータ44とクライエントコン
ピュータ40の数とに無関係で同じである。
【0018】 図3は組み合わされたクライエントとサーバーコンピュータ42の特殊なケー
スを図示する。このようなコンピュータは図2のクライエントコンピュータ40
またはサーバーコンピュータ44のいずれかとして使用できる。このようなコン
ピュータは典型的なコンピューtq44として、及び典型的なクライエントコン
ピュータ40として図2に関連して説明するモードで作用する。
【0019】 クライエントとサーバーコンピュータ42はキャッシュメモリと永久データレ
ポジトリ52の間での相互作用をもCPU60を介して扱う。この相互作用はサ
ーバーコンピュータCPU50、クライエントコンピュータCPU54及び通信
ネットワーク46の組み合わせ58(図2)の相互作用と類似している。クライ
エントとサーバーコンピュータ42のキャッシュメモリ56は典型的なクライエ
ントコンピュータ40のキャッシュメモリ56として機能する。
【0020】 図4はバーチャルメモリマッピングデータベース(VMMDB)のモジュレー
ションと相互作用を図示する。クライエントコンピュータ40またはクライエン
トとサーバーコンピュータ42のVMMDB66はそのオペレーションシステム
68により提供されるサービスを利用する。VMMDB66はアプリケーション
プログラム64で使用されるサービスを供給する。サーバーコンピュータ44で
VMMDB66はオペレーションシステム68と相互作用し、クライエントコン
ピュータからのリードとライトリクエストを扱い、データページのオーナーシッ
プをモニターする。
【0021】 図5は少なくとも1つのデータベース70へのデータ52の永久レポジトリの
分割を図示する。各データベース70は少なくとも1つのセグメント74に分割
される。各セグメント74は少なくとも1つのクラスター73に分割される。各
クラスター73は多数のページ72を含んでいる。これらページはクラスター7
3から始まるページ数71によりアドレスできる。各ページはページの最初から
オフセットによりアドレスされた多数のアドレス可能なロケーション(個々のバ
イト)を含んでいる。これらアドレス可能なロケーションはクラスターの最初か
らオフセットでアドレスされていると考えられる。そこで、このオフセットはペ
ージ内のアドレス可能なロケーション数をページ数に掛け算し、ページ内でオフ
セットを足し算することで計算される。すなわち、データベース内の各アドレス
可能なロケーションは次のアドレスを有している:[データベース、スグメント
、クラスター、オフセット]。アドレス可能なロケーション72の配列はデータ
ベースアドレスに対応する値またはポインターを含むことができる。ポインター
は同一データベースの現行または他のページあるいは他のデータベースの他のペ
ージ内にポイントできる。クライエントアプリケーションがデータベースにアク
セスすると、VMMDBはクライエントアプリケーションがアクセスする必要が
あるデータベースのページにクライエントのバーチャルアドレススペースからバ
ーチャルアドレスを指定する。
【0022】 図6はパーシステントリロケーションマップ(PRM)140と、関連データ
ベースページ144のポインター142内へのPRM140のインデックス処理
を図示する。各ページはメタデータ構造と呼ばれる関連構造を有している。ペー
ジとメタデータ構造はページがアクセスされたときにはサーバーとクライエント
との間で通信される。サーバーはメタデータ構造とページとの組み合わせを維持
する。メタデータ構造はPRMと様々なタッグを含んでいる。PRMとタッグは
ページのポインターのロケーションと翻訳とを解説する。PRM140は複数の
エントリー(PMRE)146,148を有しており、それぞれデータページの
ページ内にインデックス処理する。データベースページのポインター142は4
バイト値(8バイト値も同様に利用可能)だる。ポインター142は2つのフィ
ールドに分割される。インデックスフィールド150とローオフセットフィール
ド152である。インデックスフィールド150は同じPRMEを有したページ
に次のポインターをインデックスするフィールドである。ローオフセットフィー
ルド152の機能は可能なアドレス可能ロケーションレフェレンセを1PRME
で区別することである。これはターゲットクラスター内にて4メガバイトでアド
レスできる。ローオフセットフィールドはPRMEのハイオフセットフィールド
に加えられ、ターゲットクラスター内で使用する1つのオフセットを提供する。
【0023】 各PRMS146、148はフラッグフィールド154、ハイオフセットフィ
ールド156、ナンバーフィールド158、インデックスフィールド160を有
している。フラッグは、新データベースインデックスフラッグ、新セグメントI
Dフラッグ、新クラスターIDフラッグ、及び新マッピンググラニュラーフラッ
グである。これらフラッグはどのフィールドがPRMEのヘッドワードに続くか
を示す。ヘッドワードのみを有するショートエントリーPRME146はナンバ
ーフィールド158の内容と等しいターゲットクラスターIDとなる。このナン
バーフィールド158は、PRM、または、前のPRMEが存在しないときには
、現在アクセスされているページのクラスターIDを構成するPRMEの配列内
の前のPRMEのターゲットクラスターIDに加えられたものである。長いエン
トリーPRME148はヘッドワードと、続くフィールドを有している。これら
の追加フィールドはデータベースフィールド162、セグメントIDフィールド
164、クラスターIDフィールド166、及びマッピンググラニュラーフィー
ルド168である。これら追加フィールドはPRMEヘッドワードのナンバーフ
ィールド158と共にターゲットデータベース、セグメント、クラスターまたは
マッピンググラニュラーが配列の前のPRMEとどのように異なるのかを示す(
前のPRMEが存在しなければ現行のページ)。これら追加フィールドのそれぞ
れは、PRM677\\\00Eヘッドワードの対応するフラッグが示すときのみ存在す
る。PRMエントリーがソーティングされ、類似PRMEが並んでいるかぎり、
短いエントリーが使用できる。PRMEヘッドワード内のヘッドポインターイン
デックス160から開始し、ポインターのインデックスフィールド150に進む
リストの各ポインターはターゲットデータベース、セグメント、クラスター、及
びマッピンググラニュラーをとり、PRMEヘッドワードのハイオフセットフィ
ールド156と各ポインターのローオフセットフィールド152を組み合わせる
ことで計算される。グラニュラーフィールド168のマッピングの目的は64k
バイト、たとえば、1x64k、2x64k等々のユニットでターゲットによっ
て必要なアドレススペースの掛け算を示すことである。
【0024】 図7はデータベースのクラスターを図示している。データベース70の各クラ
スターはページに分割される。各ページはページの内容を説明するデータを含ん
だメタデータの構造と関連付けさせており、ページの各オブジェクトのタイプを
特定するタッグリストを含んでいる。オブジェクトはページでのみ発見される。
アプリケーションプログラムはページと直接アクセスし、メタデータとはアクセ
スしない。ベタデータがVMMDBによってのみ使用される内部データ構造を維
持する。各クラスターは少なくとも1ページ80に分割される。ページ80のサ
イズはコンピュータハードウェアにより決定され、典型的には4096、819
2、または16384バイトである。この場合、4096バイトページを想定し
ている。さらに大きなページは複数の4096バイトページにサブ分割できる。
クラスター76内では典型的には3タイプの保存オブジェクトが存在する:シン
グルオブジェクト82、オブジェクトのベクトル84及びフリースペース86で
ある。オブジェクトはポインターを示すことができる値を含むことができる。フ
リースペース86は特別可変サイズオブジェクトとして理解できる。3タイプ以
上のオブジェクトが使用可能であるが、それら3つは代表例であり、本願発明の
実行には充分である。各オブジェクトに対して、タッグがページに関連する対応
メタデータ構造に配置される。シングルオブジェクト82は対応するオブジェク
トタッグ88を有している。オブジェクトのベクトル88は対応するベクトルタ
ッグ90を有するであろう。最後に、フリースペースオブジェクト86は対応す
るフリースペースタッグ92を有するであろう。
【0025】 図8Aから8Cは図7の各タッグの詳細を示す。オブジェクトタッグ88(図
8A)はタッグがシングルオブジェクトであることを示すフラッグフィールド1
00とタイプコードフィールド102を有している。タイプコードはオブジェク
トの特別な特性を説明し、多様なシングルオブジェクトを有することを可能にす
る。核タイプは自身の特徴を有する。タイプコードは図9と図10に関してさら
に詳細に解説する。ベクトルタッグ90(図8B)はタッグがベクトルに対する
ものであることを示すフラッグタッグ104と、タイプコード102に類似した
タイプコード106と、ベクトルの長さを示すレングスフィールド108とを有
している。最後に、フリースペースタッグ92(図8C)はタッグがフリースペ
ース用であることを示すフラッグフィールド110と、フリースペースの長さを
示すレングスフィールド112を有している。
【0026】 本願発明の好適実施例ではシングルオブジェクトフラッグ88は2バイト長で
ある。ベクトルタッグ90は6バイト長であり、追加4バイトはベクトルにその
数の要素を含んでいる。フリースペースタッグ92は2バイト長である。本願発
明の実行に使用されるオブジェクトタイプとタッグの数は使用されるデータベー
スの種類と実行される操作のタイプに依存し、前述の例には限定されない。
【0027】 図7に示すタッグテーブル94はリロケーションが必要なデータベースアドレ
スを含んだページ内のロケーションの発見に使用される。タッグテーブルは各ペ
ージの内容がオブジェクトのエンドツーエンド配列を含んでいるという原理に基
づいている。これはクラスターの前及び/又は次のページにオーバーラップする
かも知れず、各オブジェクトは知られた数のタイプの1つである。この例では、
3タイプが存在する:(1)シンプルオブジェクト、(2)オブジェクトのベク
トル平面配列)、(3)フリースペースである。タッグテーブルはページ上のオ
ブジェクトの配列に直接対応するタッグの配列を含んだデータ構造とも言える。
ページの最初のオブジェクトが前のページにオーバーラップすれば、ページのメ
タデータのフィールドはオブジェクトのヘッドからページのヘッドまでのバイト
による距離を示すように私用される。
【0028】 図9に示すデータベースの一部であるスキーマと呼ばれるデータ構造はタイプ
解説のセットを含んでいる。データベースの特定のオブジェクトタイプごとに1
つである。スキーマはバイトコード102と106(図8Aから図8C)でイン
デックスされる。タイプ解説はオブジェクト内のポインター値のオブジェクトの
サイズとロケーションを示す。スキーマはデータベース内の自身のクラスターに
配分される。スキーマ120は対応するデータベースに含まれる各異なるオブジ
ェクトタイプ(タイプコードで指示)に対してタイプ解説122を含んでいる。
各タイプ解説122は1つのオブジェクトタイプを説明し、ユニークタイプコー
ド値がそれぞれに割り当てられている。オブジェクトタッグからのタイプコード
値102、106に対しては、VMMDBがタイプコードを使用してそのタイプ
に対応するタイプ解説122に対してスキーマ120にインデックスすることが
できる。
【0029】 ページのメタデータはタッグテーブル94とスキーマ120(タイプ解説12
2を含む)を介してページ内の全てのポインターを追尾する。メタデータはパー
システントリロケーションマップでパーシステントアドレススペースのページ特
定配分をも追尾する。
【0030】 図10はタイプ解説122の内容を図示する。タイプ解説122はタイプコー
ドフィールド124でインデックスされており、そのタイプのオブジェクトのサ
イズを含むサイズフィールド128と、ポインターを含むそのタイプのオブジェ
クト内のどのロケーションかを示すフィールドセット128を含む。これらフィ
ールド128はVMMDBより解釈され、オブジェクト内でポインターのロケー
ションを発見するインストラクション130のセットである。それらはハードウ
ェアCPUが直接理解する機械インストラクションではない。
【0031】 これらインストラクションの2種類が存在する:1つはポインターがオブジェ
クトタイプ内の特定オフセットに存在することを示し、他方はバーチャルファン
クションテーブルポインター(VTBL)がオブジェクトタイプの特定オフセッ
トで発見されたことを示す。(VTBLポインターはC++言語の実行の一部であ
り、VMMDBがリロケーションを実行する特定タイプのポインターである。V
TBLはアプリケーションがバーチャルファンクションのコールに使用するファ
ンクションポインターのテーブルをポイントする。)
【0032】 図11はタイプ解説122からのインストラクション130(図10)のフォ
ーマットである。それぞれのインストラクションはこのポイントがVTBLポイ
ンターであるか、リロケーションすべきポインターであるかを示すフィールド1
32を有している。フィールド134はポインターが存在するオブジェクトの開
始からのオフセットを示す。
【0033】 図12はクライエントコンピュータ40のキャッシュメモリ56の構造と、キ
ャッシュメモリステータスをモニターするためのクライエントコンピュータCP
U54により使用されるキャッシュディレクトリと呼ばれる構造を図示する。ク
ライエントキャッシュメモリ56はクライエントディスクの物理的キャッシュフ
ァイル内のページフレーム170のセットを含んでいる。またはクライエントデ
ィスクの作動システムのスワップファイルの一部内に存在するものである。各ペ
ージフレーム170はフリーであるか、データベースのページを有している。ク
ライエントコンピュータはキャッシュディレクトリを維持する。これはどのペー
ジフレーム170がデータベースページを含み、どのページがフリーであるのか
モニターする。2つのフレームは同じページを保持しない。データベースのペー
ジ、例えばページ“5”、クラスター“n”、セグメント“4”、データベース
“/A/B/C”を与えられると、VMMDBはキャッシュディレクトリ180を
使用してページ(ページの物理的ロケーション)を保持するページフレーム17
0を効率的に決定し、またはそのページがキャッシュには存在しないことを決定
する。この目的で、キャッシュディレクトリ180はフレームフィールド172
を含む。これはページフレームの番号、及びクラスターID、セグメントID、
データベースインデックスによるフレーム内のページを特定するコンテンツフィ
ールド174を示す。ページがキャッシュになければエントリーはない。
【0034】 キャッシュディレクトリ180の各ページフレーム170は4ステート値を有
している。最初の2つはキャッシュステート176とロックステート178を示
す。キャッシュステートは“リードのためにエンキャッシュ(ER)”でき、あ
るいは“ライトのためにエンキャッシュ(EW)”できる。ロックステートは“
アンロック(U)”、“リードのためにロック(LR)”、または“ライトのた
めにロック(LW)”できる。ページのステートがEWLRであると言うことは
それがライトのためにエンキャッシュされており、リードのためにロックされて
いることを意味する。ページがERのステートであることは、リードのためにエ
ンキャッシュされており、アンロックされていることである。キャッシュディレ
クトリエントリの他の2つのフラッグは“ダンされたときにダウングレード”1
82及び“ダンされたときにエビクト”と呼ばれる。これらフィールドの目的は
オペレーションのフローチャートに関して後述する。
【0035】 図13はオーナーシップテーブルを示す。サーバー44はどのクライエント4
0がデータベースからページのコピーを有しているか、そのページはリードのた
め、またはライトのためにエンキャッシュされているかの追尾を行う。サーバー
はオーナーシップテーブルでデータベースの使用をモニターする。オーナーシッ
プテーブル190は3フィールドを含んだエントリー192を含んでいる。コン
テンツフィールド194はページ、クラスター番号、セグメント番号及びデータ
ベースネームを示す。オーナーフィールド196はどのクライエントが現在その
ページを使用しているか示す。オーナーフィールドは好適にはクライエントネー
ムのアレイである。ステータスフィールド198はページがリードまたはライト
のためにエンキャッシュされているかどうかを示す。1つの値のみの保存が必要
である。なぜなら、全てのクライエントはリードのためにエンキャッシュされた
ページを有するか、1つのクライエントがライトのためにエンキャッシュされた
ページを有するからである。
【0036】 キャッシュディレクトリ180とオーナーシップテーブル190の組み合わせ
はキャッシュコヒーレンシーを維持する。クライエントプロセスは、ページを有
するページフレームがクライエントによるライトのためにロックされているなら
、ページの内容を修正することができるだけである。ページフレームはライトの
ためにエンキャッシュされているならライトのためにロックできるだけである。
このステータスの確認とロッキングはクライエントでキャッシュディレクトリを
使用して実行される。クライエントがライトのためにエンキャッシュされたペー
ジフレームを有していれば、他のクライエントコンピュータはそのキャッシュに
同じページを有することができる。多くのクライエントがリードのためにエンキ
ャッシュされたページのコピーを有することは可能であるが、一時に1クライエ
ントのみがライトのためにエンキャッシュされたページのコピーを有することが
できる。エンキャッシュされたステータスの確認はオーナーシップテーブルを使
用してサーバーにより実行される。クライエントコンピュータでトランザクショ
ンが進行していなければ、キャッシュの全ページフレームはアンロックされる。
トランザクションが進行中であれば、ロックされたページはアンロックできない
。ライトのためにロックされたページはリードのためにロックできない。すなわ
ち、ページはリードからライトにロックまたはアップグレードできる。ロックは
トランザクションがコミットするときにリリースされる。このルールはデータベ
ース用の標準2フェーズロッキングルールに対応する。
【0037】 2フェーズロッキングの形態の利点は、サーバーコンピュータではなくクライ
エントコンピュータでロックのモニターをする点である。さらに、データはサー
バーではなくてクライエントでキャッシュされ、使用される。ロッキング情報の
サーバーへの送付のオーバーヘッドは低減される。よって、データはサーバーへ
のエクストラコールなしで1トランザクション以上に使用できる。すなわち、こ
のキャッシュ戦略はトランザクションのクライエント内でのページを維持するこ
とを可能にする。ページアドレス方法の追加はクライエントに残るページのアク
セスを高速にする。これが本願発明の主たる利点である。2フェーズロックの標
準特徴は全てのデータが利用可能になるまでのライトロックの妨害を含んで使用
可能である。
【0038】 ページがクライエントキャッシュメモリ56に入れられた後、そのページの全
てのポインターのターゲットは図14に示すようにクライエントコンピュータC
PUのバーチャルアドレススペース200のローケーションを割り当てられなけ
ればならない。ポインターは、そのデータがバーチャルメモリにマップされ、ク
ライエントアプリケーションで使用される前に翻訳されなければならない。この
プロセスはインバウンドリロケーションと呼ばれる。この割り当てはバーチャル
アドレスマップ(VAM)と呼ばれる現在のアドレスバインディングセット21
0を使用して、どのデータベース、セグメント、クラスター、オフセット、レン
グスがクライエントのバーチャルアドレススペースの特定部分に割り当てられた
かを示すエントリー212で管理される。インバウンドリロケーション中のポイ
ンターの翻訳は、ポインターのターゲットに対して1つが存在するなら存在する
バーチャルアドレスマップエントリーの使用を必要とする。または、ターゲット
の新VAMEの構築とVAMへのVAMEの採用を必要とする。翻訳はさらに、
クライエントのバーチャルアドレススペースの領域がVAMEに割り当てられる
ことも要求する。ポインターの翻訳は、ポインターのローオフセットフィールド
とPRMEナンバーフィールド、ハイオフセット及び/又はクラスター内でオフ
セットフィールドからVAMEのオフセットを差し引いたものに等しいバーチャ
ルアドレススペースの割り当てられた領域のトップからのオフセットとして計算
されたポインターのためのバーチャルアドレスのポインターへの書き込みができ
る。
【0039】 バウンドまたは割り当てられたDSCOハンドルとも呼ばれるバーチャルアド
レスマップエントリー(VAME)212はパーシステントリロケーションマッ
プ140(図6)のエントリー146、148に類似している。バーチャルアド
レスマップ210はバーチャルアドレススペース200の領域を示す。これはデ
ータベース領域が割り当てられたところである。パーシステントリロケーション
マップ140はデータベースアドレススペースの領域を示す。各VAMエントリ
ー212はデータベース214を含む。これは領域が存在し、領域がロケーショ
ンされるセグメントを示すセグメントフィールド216を示すデータベースを示
す。さらに、クラスターを示すクラスターフィールド217とオフセットフィー
ルド218が含まれる。サイズフィールド220とアドレスフィールド222も
含まれる。
【0040】 キャッシュ内のデータページにアクセスためのアプリケーションでは、データ
を仮想メモリーにマッピング処理する必要がある。図15には、顧客コンピュー
タによるマッピング処理の後での、(顧客ディスク上の別のファイルとして、あ
るいは、顧客のスワップファイルの一部として一般的に実行される)キャッシュ
56に対する仮想アドレス域200の関係が図示されている。仮想メモリーマッ
プ224は、ほとんどのコンピュータシステムにおける標準方法で、顧客コンピ
ュータのオペレーションシステム68により作成できる。その仮想メモリーマッ
プには、仮想アドレスがマッピングされるキャッシュファイルアドレスが示され
ている。仮想メモリーマップは、普通、各ベージの仮想アドレス225、長さ2
26、対応するキャッシュファイル位置228、読取書込み保護状態227を含
む各ページの内容を有する。
【0041】 図16A−16Cは、キャッシュディレクトリー、仮想アドレスマップ、オペ
レーションシステムの仮想メモリーマップの相互関係を示す。キャッシュディレ
クトリ180(図12)は、キャッシュメモリー56のデータベースページが内
包されているキャッシュファイルアドレス(ページフレーム)を示している。仮
想アドレスマップ210(図14)は、データベースページが割当てられる仮想
アドレス、つまり、アプリケーションで利用する場合にマッピング処理される仮
想アドレスを示している。仮想メモリーマップ224(図15)は、キャッシュ
ディレクトリ180と仮想アドレスマップ210からVMMDBに与えられた情
報からオペレーションシステムが作成したものである。VMMDBにより、オペ
レーションシステムが、仮想メモリー内にデータベースページをマッピングし、
マッピングされるキャッシュディレクトリ180と仮想アドレスマップ210か
ら、キャッシュファイルアドレスに送ってデータベースページが設定される。 データベースページを、最初に、仮想メモリーにマッピングするより前にキャ
ッシュに送るときには、ページのポインタはPRMへのスレッドポインタとして
外部表示されている。ページを仮想メモリーにマッピングすると、それらポイン
タは、そのデータがアプリーケーションで使用される前に、その外部様式から対
応する仮想アドレスへと変換しなければならない。「インバウンド再配置」とも
呼ばれるこの変換操作は、図17に概略図示されている。
【0042】 ページの外部フォーマットを構成するスレッドポインタとページのPRMの組
み合わせにより、ページの各ポインタのターゲットデータベース、セグメント、
クラスタ、オフセットが符号化される。データベース、セグメント、クラスタ、
オフセットは、それから正しい仮想アドレス232が得られる仮想アドレ再配置
マップ210内の対応入力を検索するため利用されるものである。 図18は、前記のインバウンド再配置の詳細を示す。ページのPRM内のPR
MEはシーケンス処理され、少なくとも1つが存在する、あるいは、ページの内
包クラスタに含まれる、1つ前のPRMEのターゲットに対応して各PRMEが
ターゲットを符号化できる。図6を再度参照してみると、各シーケンスPRME
では、PRMEのターゲットの4メガバイト範囲は、そのnumフィールド158
、ハイオフセットフィールド156、頭文字に続く4つの追加フィールドのうち
いずれかを演算することで得られる。これらの追加フィールドとは、データベー
スフィールド162、セグメントIDフィールド164、クラスターIDフィールド
166、マッピング粒状度フィールド168である。この演算は以下のように実
行される。PRMEにデータベースインデックスフィールドが備わっていれば、
そのターゲットデータベースは、ページのソースデータベースに格納されたテー
ブルを使用するインデックスの変換により確定される。PRMEにデータベース
インデックスフィールドが備わっていなければ、そのPEMEのターゲットデー
タベースは、以前に処理された該ページのPRMEのターゲットデータベースが
存在すれば、それと同じであるか、該ページ自体のソースデータベースである。
PRMEにセグメントIDフィールドが備わっていれば、ターゲットセグメント
はそのIDによって指示される。PRMEにセグメントIDフィールドが無く、
データベースインデックスフィールドが備わっていれば、そのターゲットセグメ
ントは、セグメントIDとしてnumフィールド158の値を使用することで指示
される。PRMEが、データベースインデックスフィールドとセグメントIDフ
ィールドの何れも備えていなければ、そのターゲットセグメントは、以前に処理
された該ページのPRMEのターゲットデータベースが存在すれば、それと同じ
であるか、該ページ自体のソースセグメントである。PRMEにクラスターID
フィールドが備わっていれば、ターゲットクラスターはそのIDによって指示さ
れる。PRMEにクラスターIDがなく、データベースインデックスフィールド
か、セグメントIDフィールドの一方、またはその両方が備わっていれば、その
ターゲットクラスターは、クラスターIDの代わりにnumフィールド158の値
を使用することで指示される。PRMEが、データベースインデックス、セグメ
ントID、クラスターIDフィールドの何れも備えていなければ、そのクラスターID
は、numフィールド158の値を、以前に処理された該ページのPRMEのクラ
スターIDが存在すればその値に加えるか、あるいは、該ページ自体のソースク
ラスターのIDに加えることで算出される。PRMEのマッピング粒状度フィー
ルドが存在する場合は、ターゲットデータベース、セグメント、クラスターによ
ってそれまで指示されてきたターゲット範囲へのアドレス域の一連の割当て操作
に必要な、アドレス域の量を指示する。PRMEのマッピング粒状度フィールド
が存在しない代わりに、データベースインデックスフィールドか、セグメントI
Dフィールドがある場合は、ターゲットのマッピング粒状度は、64キロバイト
のデフォルト値に設定される。もし、マッピング粒状度フィールド、データベー
スインデックスフィールド、セグメントIDフィールドのいずれも存在しなけれ
ば、ターゲットのマッピング粒状度は、以前に処理された該ページのPRMEが
存在すればその値か、63キロバイトのデフォルト値である。変換処理によって
、これまで、ターゲット範囲のターゲットデータベース、セグメント、クラスタ
ー、マッピング粒状度を作成してきた。
【0043】 上記のPRMEの変換処理に従って、PRMEのヘッドポインターインデック
スフィールド160は、そのターゲットを符号化するために、低オフセットフィ
ールド152と複合してPRMEを使用するページの第1ポインターを検索する
ようトラバース処理される。後続のポインターは、図6に示すように、インデッ
クスフィールド150を介してリンクされる。PRMEのヘッドポインターイン
デックスフィールド160から到達可能な全てのポインターは、同じターゲット
データベース、セグメント、クラスターを共有し、上述のPRME変換処理によ
り生成された値を備える。これらのポインターの実際のターゲットは、ターゲッ
トクラスター内のオフセットによってのみ、異なることになる。このような各ポ
インターのオフセット値は、PRMEのハイオフセットフィールド156を、各
ポインターの低オフセットフィールド152と複合することで算出される。 前記のデータベース、セグメント、オフセットは次に、対応する仮想アドレス
マップエントリ(VAME)212、または割当てDSCOハンドルとも称され
る、を検索するために使用される。この対応VAMEは、ターゲットオフセット
が、オフセットフィールド218のP値以上であって、前記オフセットPと前記
エントリのレングスフィールド220のQ値の合計未満である。(ターゲットオ
フセット<P+Q)。前記ポインターのターゲットの仮想アドレスは、P−ターゲ
ットオフセット値の差値をR(VAMEの第1仮想アドレス)に加算して算定で
きる。アウトバウンド再配置中に、ポインターの仮想アドレスを外部フォーマッ
トへ変換するには、これとは逆の工程を実行すればよい。
【0044】 データのページをデータベースから取り出し、キャッシュへ格納する場合、こ
のページは内向けに再配置される。つまり、前記ページ内のポインターは、その
外部フォーマットから仮想アドレスへ変換されるのである。データのページをサ
ーバへ返送する工程を、アウトバウンド再配置と呼ぶ。この情報がアドレス域作
成で必要なくなった後のキャッシュ内に残っているデータページのポインタ情報
を更新する工程を、前方再配置と呼ぶ。
【0045】 図19には、本発明の再配置最適化方法で使用するデータ構成の再配置最適化
列(リロプトキュー)が図示してある。ここでいう再配置最適化とは、前向き再
配置の頻度を減らす操作をいう。キャッシュデータの保全は、リロプトキューを
使って実行できる。リロプトキューにより、アドレス域作成が一般的には単独の
トランスアクション、または、トランスアクションの一部あるいは連続するトラ
ンスアクション群であるような、連続アドレス域作成におけるPSR内の仮想ア
ドレス域が管理およびインデックス処理される。
【0046】 図23には、持続位置へのポインタの全ターゲットを取り囲む、キャッシュ内
のページがアプリケーションにアクセス可能であるPSR(持続記憶域)セクシ
ョンを含むヒープとスタックの処理アドレス域を示す。顧客アプリケーションが
データベースにアクセスすると、顧客アプリケーションは、仮想アドレス域のP
SR部内の仮想アドレスを、アプリケーションがアクセスするページに割当てる
。この仮想アドレスの割当ては、アクセスする特定のページの領域、および、特
定ページが指示するページの領域についてのみ実行される。仮想アドレス割当て
はデータベースへ各顧客のアクセス操作内に制限されるので、顧客はそれ自身の
仮想アドレス割当てを保有できるのである。標準的なPSRの大きさは128メ
ガバイトであるが、アプリケーションに応じて変更しても構わない。各セッショ
ンにおいて、1個のPSRを使う。
【0047】 前記のアドレス域作成の期間は、顧客アプリケーションで管理でき、顧客アプ
リケーション要件により決まることができ、読取および/またはトラバースのP
SR内のポインタ組は、演算における特異点に達するまで変更してはいけない。
それら特異点は、顧客アプリケーションで指示される場合、アドレス域作成の範
囲を決める。
【0048】 1セッションにつき1リロプトキューが提供される。システムの各顧客につき
1セッションが与えられる(ただし、1つのアプリケーション処理には、複数の
顧客、つまり、複数のセッションを含むことができる)ので、顧客とセッション
の用語は、リロプトキューの説明においては相互交換して使っても構わない。
【0049】 前記の本発明の実施例では、リロプトキューを、必要に応じてオブジェクトを
列のどこにでも挿入や除去ができるよう、ダブルリンクリストとして実行する。
列の一方の端はヘッド部であり、他方の端がテイル部である。リロプトキューを
図示した図面において、右側がヘッド部側である。列の要素の順序は、relopt機
構の機能のため、ヘッド部に近いほうを最近利用(MRU)要素とし、テイル部
に理解ほうを最遠利用(LRU)要素として説明する。リロプトキューを説明す
るのに使うことができる別の非公式だが便利な順序として、新しいとか古いとい
う用語は確立された年代順序法を意味するものではないが、ヘッド部に近いほう
を新しい要素とし、テイル部に近いほうを古い要素とみなすことも可能である。
リロプトキュー内のオブジェクトには、それぞれ下記に詳細に説明するような、
フィンガー、データベースセグメントクラスタオフセット(DSCO)、ハンド
ル、ページハンドル、変位アドレスバインドセット(DABS)などが含まれる
。 フィンガーは、再配置最適化法の機能に対して重要な再プロット列で位置を示
す要素である。基本的な再配置最適化法では、さまざまなフィンガーがあり、挿
入フィンガー、走査されるフィンガー、移動フィンガー、削除フィンガー、およ
び係数フィンガーとなる。高度な再配置最適化法では、複数の挿入フィンガーを
使用することができる。
【0050】 基本的な再配置最適化法では、挿入フィンガーは列の「最も新しい」端でもあ
る列の先頭に固定される。この挿入フィンガーは、ページ・ハンドルやデータベ
ース・セグメント・フラスター・オフセット(Database Segmen
t Cluster Offset, DSCO)ハンドルが列に挿入される場
所である、列の唯一の点を示す。
【0051】 挿入フィンガーの左にあるフィンガーは走査されるフィンガーである。走査さ
れるフィンガーは、定義上挿入フィンガーよりも古く、移動フィンガーや削除フ
ィンガーよりも新しい。走査されるフィンガーと挿入フィンガー列のセグメント
に境界を設け、その中でページ・ハンドルは、すべてのポインタが有効で、かつ
、それ以上の処理を必要とすることなく、現行のアドレス空間生成の間有効であ
り続けると保証されるページに対応している。走査されるフィンガーの位置は、
新しいアドレス空間生成が開始されるまで、再プロット列に固定され、そこで、
走査されるフィンガーは再プロットの先頭に移動し、挿入フィンガーよりも古く
なる。走査されるフィンガーは生成番号が現行の生成であり、走査フラグが設定
されている最も古いページ・ハンドルよりも古い。生成番号と走査フラグについ
ては後に述べる。
【0052】 前方への再配置の目的は、顧客アプリケーションが、一連のアドレス空間生成
にわたり、任意の一時にプロセッサ状態レジスタ(Processor Sta
te Register, PSR)に差し込むことができる分を越えた大量の
永続データにアクセスできるようにすることである。システムによっては、前方
への再配置は出の再配置とインバウンド再配置との組み合わせで置き換えられる
。しかしこの置き換えは、本発明に関しては、重要な違いではなく、独自の前方
への再配置でも出とインバウンド再配置の組み合わせでも、同様に機能する。同
じ作業を行うのに出とインバウンド再配置の組み合わせのコストの半分以下のコ
ストで済むため、前方への再配置が好ましい方法である。
【0053】 本発明の第一の目的は、顧客アプリケーションに分かりやすい方法で、前方へ
の再配置(あるいは前述のような同様の機能をおこなう代わりのもの)の頻度を
減らすことである。これにより、顧客アプリケーションと仮想メモリ・マッピン
グ・データベース(Visual Memory Mapping Datab
ase, VMMDB)の組み合わさったシステムの性能全体を向上させる。組
み合わせシステムが、本発明が適応されない場合に前方への再配置を要求しない
という利益を実現した場合は常に、このシステムは再配置最適化あるいは再プロ
ットの恩恵を受けたと言われる。
【0054】 リロプトキューは、本発明における構造であって、その目的はアドレス空間の
バインディングをこれらバインディングが一番最近に使用されたもの(MRU)
がキューの先頭に最も近くなるようにする等、使用の最近性によって大まかに順
番付けられるように整理することにある。 PSR内における全ての利用可能な
仮想アドレス空間がバインディングによって占められた場合、現時点のアドレス
空間の生成において使用されていない以前の(LRU)バインディングは置換さ
れることが可能であり、よってこれらが占めていた仮想アドレス空間が利用でき
るようにする。以前のバインディングの置換を優先させ、新しいバインディング
が利用できるように空間を作るために必要に応じてのみこのような置換を行うこ
とによって、ほとんどの顧客アプリケーションにとって典型的である一時的なロ
ーカリティプロパティと本発明とを組み合わせた場合に、その顧客アプリケーシ
ョンが次回使用された場合に顧客キャッシュのページに無効であるポインタが含
まれているという状態の頻度を低減することが可能となる。このようなページの
みが前方再配置を必要とするため、前方再配置の頻度が低減され得る。
【0055】 前述のように、リロプトキューにおいてはアドレス空間のバインディングが整
理される。これらバインディングは、キュー内においてDSCOハンドルと称さ
れるオブジェクトによって表されるものであり、DSCOとはデータベース、セ
グメント、クラスターおよびオフセットの略である。DSCOハンドルは、さら
に仮想アドレスマップにおけるエントリーでもある。各DSCOハンドルは、ク
ラスターが64キロバイトのデフォルトマッピング粒状度のみを必要とする場合
にデータベース、セグメント、クラスター、オフセットあるいはサイズによって
画定される継続的な領域に不動的に基準とするものである。DSCOハンドルの
第2の、類似した種類としては、64キロバイト以上のマッピング粒状度を有す
るクラスターを基準とするものであり、この場合、本発明の機能にとってはさし
て重要でない簡素化のための実施上の決定事項としてこれらクラスターのマッピ
ング粒状度とサイズとは一致するものとされている。特に明記しない限り本文に
おいてDSCOハンドルについて述べる場合にはいずれかの種類について述べて
いるものとする。DSCOハンドルはデータベース、セグメント、クラスターお
よびオフセットのために別個のフィールドを備えるものではない。むしろクラス
ターハンドルを基準とする唯一のフィールドを含むものであって、このようなク
ラスターハンドルとは特定のデータベースにおける特定のセグメント内の特定の
クラスターを基準とするものとする。したがって同一のクラスターを基準とする
DSCOハンドルは同一のクラスターハンドルを共有するものであり得る(この
ことはDSCOハンドルのサイズを低減するための実施上の決定事項であって、
本発明の機能に対して格別重要なことではない)。またDSCOハンドルは、ゼ
ロであってもPSR内における仮想アドレスの値であってもよい仮想アドレスフ
ィールドを含むものである。このフィールドがゼロである場合、DSCOハンド
ルは割り当てられていないあるいは限定されていないと称される状態にある。こ
のフィールドがゼロでない場合、このDSCOハンドルは割り当てられているあ
るいは限定されていると称される状態にあり、限定されているDSCOハンドル
はさらにVAMEとも称される。このフィールドに含まれるアドレスから開始さ
れ、このサイズフィールドの値と等しいバイト数分連続する仮想アドレス空間領
域は、継続的な領域内におけるターゲットとこの継続的な領域内における継続的
なデータを構成するページとに関する両方のポインタによって使用されるべく制
限されているとみなされる。この仮想アドレス空間領域は、DSCOハンドルに
対して割り当てられているあるいは限定されているとも称される。DSCOハン
ドルが割り当てられている間、これに対して割り当てられている仮想アドレス空
間領域は他のいかなるDSCOハンドルに対しても割り当てられ得ない。限定さ
れているDSCOハンドルは、PSR内における処理アドレス空間の連続する領
域と継続的なアドレス空間の同等のサイズを有する連続する領域との間の双方向
的なマッピングである。置換フィンガーと挿入フィンガーとの間における全ての
DSCOハンドルのサイズの合計は、PSRのサイズによって限定されている。
【0056】 限定されたDSCOハンドルのみがVMMDBシステムによって管理されてい
る、仮想アドレスによってインデックスされる仮想アドレスマップ上にてエント
リーとして現れる。顧客内において現存する全てのDSCOハンドルが、データ
ベース、セグメント、クラスターおよびオフセットにてインデックスされる、D
SCOマップと称される別の表においてエントリーとして現れる。このDSCO
マップは、ポインタのターゲットとされるデータベース、セグメント、クラスタ
ーおよびオフセットが識別できるまでにPRMEとポインタの組み合わせとの変
換が完成した場合、主にインバウンド再配置によって使用される。インバウンド
再配置においてDSCOマップが使用されることに関しては後に詳述する。
【0057】 顧客内において現存する全てのDSCOハンドルは、限定されているものであ
ろうとなかろうと、リロプトキュー内における要素である。
【0058】 DSCOハンドルに加え、リロプトキューにおいてはページハンドルと称され
る要素が含まれるものである。顧客のキャッシュに現存し、アウトバウンド再配
置よりも最近にインバウンド再配置が行われた全てのページに対して個別のペー
ジハンドルが存在する。リロプトキュー内におけるDSCOハンドルに関連して
ページハンドルを位置付けることは、ページハンドルは常にリロプトキューにお
いて対応するページに含まれるポインタによって参照される継続的な領域に対応
するDSCOハンドル、およびページハンドルによって表されるページが所属す
る継続的な領域に対応するDSCOハンドルよりも古い位置にあらねばならない
、としている不変式に従っているものである。この不変式の目的は、各ページが
リロプトキューをページハンドルの位置に関連する2つの領域に分割することを
可能にすることにある。ページハンドルよりも古い領域は、顧客アプリケーショ
ンがページに対して有効にアクセスできるように限定されねばならないDSCO
ハンドルを含むものではない。ページハンドルよりも若い領域は、顧客アプリケ
ーション(およびその他大勢)がページに対して有効にアクセスできるように限
定されねばならない全てのDSCOハンドルを含むものである。この分割によっ
て仮想アドレス空間を利用可能にする目的のために限定されたDSCOハンドル
を置換することによって、置換されるDSCOハンドルよりもより古い位置にお
けるページハンドルによって表されるページの有効性のみが影響されることが保
証される。
【0059】 リロプトキューにおいてはその他の要素も存在している。このような集合的に
はフィンガーと称される要素の一つのクラスは、リロプトキューのセグメントの
範囲を定めるために用いられる。本発明の基本的な方法において、各リロプトキ
ューに対してこのようなフィンガーが5つ存在する。
【0060】 第1のフィンガーは、挿入フィンガーと称される。これは常にリロプトキュー
の先頭に固定されているため、先頭と同義である。本発明の発展例においては、
複数の挿入フィンガーが存在し得るものであるが、1つ以外はキューの先頭には
固定されていない。このような発展例は後に詳述される。
【0061】 第2のフィンガーは、走査されるフィンガーと称される。走査されるフィンガ
ーと挿入フィンガーとの間のキューのセクションには走査されるセクションが存
在する。アドレス空間生成の開始時において走査されるフィンガーを挿入フィン
ガーの直古の位置に移動させることによってこの走査されるセクションは空にさ
れる。アドレス空間生成において、この走査されるセクションには要素が加えら
れる。走査されるセクション内における要素の有効性は、アドレス空間生成を持
続する方法によって保存される、すなわち走査されるセクション内のDSCOハ
ンドルは置換されず、よって走査されるセクション内のページハンドルに対応す
るページに含まれる全てのポインタはアドレス空間生成が持続する間有効で在り
続ける。
【0062】 第3のフィンガーは、置換フィンガーと称される。この置換フィンガーは常に
走査されるフィンガーよりも古い位置に存在する。置換フィンガーと走査される
フィンガーとの間のキューのセクションには走査されないセクションが存在する
【0063】 第4のフィンガーは、削除フィンガーと称される。これは常にリロプトキュー
の末尾に固定されるため、末尾と同義である。削除フィンガーと置換フィンガー
との間のセクションには置換されたセクションが存在する。全ての限定されてい
ないDSCOハンドルは、置換されたセクション内にある。全ての現在では無効
であるポインタを含むページを表す全てのページハンドルもまた、この置換され
たセクション内にある。なお、顧客キャッシュ内にある間、再び顧客アプリケー
ションによって使用され得るために前方再配置を必要とする無効であるポインタ
を含むのはこれらのページのみであることに注意されたい。
【0064】 データベースアプリケーションを開始する際に、すなわち時間t0において、
削除、置換、走査および挿入フィンガーのすべてがキュー内において隣接して配
置され、図20において図示されるようにリロプトキューにはその他の要素が存
在しない。
【0065】 第5のフィンガーは、絶対値フィンガーと称される。その他のフィンガーとは
違ってこの絶対値フィンガーは、キューのセクションの範囲を定めるために用い
られるものではない。これはアドレス空間生成数の演算において整数のオーバー
フローをオフセットするための技術として用いられるものである。絶対値フィン
ガーの機能は、この方法のその他の機能とは別個であるため、後に詳述される。 リロプトキューにおいて存在する最後の要素のクラスは置換されたアドレスバ
インディングのセットである、それぞれの置換されたアドレスバインディングの
セット(DABS)は、現在のアドレスバインディングのセットと同様の構造を
有する仮想アドレスからDSCOハンドルへのマップである。各顧客に対して複
数のDABSが存在し得、その最初のものはDSCOハンドルの第1の置換にお
いて生成される。DABSの機能は、DSCOハンドルにおける以前のバインデ
ィングから仮想アドレスへの情報の経路を追うことにある。これらDABSは、
前方再配置において用いられる。各DABSは、リロプトキューにおいて存在す
るとすれば次のより若いDABSに対するリンクをも有するものである。
【0066】 その作動を行っている間、顧客アプリケーションは一連の処理を送出する。顧
客アプリケーションはまた、デフォルト設定によって処理に正確に対応するもの
であっても、顧客アプリケーションのより精密な制御を行うことによって個々の
あるいは一連の処理の一部分に対応するものであってもよい一連のアドレス空間
生成をも送出するものである。処理の間、顧客アプリケーションは継続するデー
タに関するページに対してVMMDBの顧客コンポーネントに対してリクエスト
を発行する。要求されたページが既に顧客のキャッシュに存在する場合、VMM
DBの顧客コンポーネントは、そのページがさらなる変換(前方再配置)を必要
とするか否かを判断し、必要であればそのような変換を行い、その後VMMDB
はそのページをPSRにマッピングし、所望されるアクセスのために適宜保護し
、対応するページハンドルとキャッシュディレクトリエントリーとの状態を適宜
更新することによって顧客アプリケーションがそのページを利用できるようにす
る。要求されたページが既に顧客のキャッシュになければ、VMMDBの顧客コ
ンポーネントがサーバコンポーネントに対してリクエストを送出する。あるペー
ジに関してサーバコンポーネントに要求を出すと言うことは、多くの場合同時に
同じ継続的なデータに対して処理を行うその他の顧客に対して項目をロックする
ことを含むものであるが、このような項目は標準的な二相式ロッキングデータベ
ースモデルにおける項目と同等であると理解され得るため、ここでは考察されな
い。サーバが顧客の要求に一旦応答した場合、そのページは顧客のキャッシュ内
に配されてそれに対するページハンドルとキャッシュディレクトリエントリーと
が生成され、正しく初期化された場合、そのページはインバウンド再配置され、
その後VMMDBはそれをPSRにマッピングして所望されるアクセスに対して
適宜保護することによって顧客アプリケーションがそのページを利用できるよう
にする。したがってインバウンドおよび前方再配置のいずれもが顧客アプリケー
ションの継続するデータのページにアクセスしたいという要求によって誘発され
るものであり、その違いは前方再配置が顧客のキャッシュに既に存在するページ
に対して行われるものであるのに対して、インバウンド再配置が常に現在そこに
存在しない場合であって顧客のキャッシュにページが導入される場合に行われる
という点にある。
【0067】 図21はページの最初のインバウンド再配置に続く典型的な再プロット列を示
している。インバウンド再配置の間に、ページP1に対応するページハンドルが
挿入フィンガーより降る委細プロット列に置かれ、そのページについてのPRM
が前述のページに含まれるポインタに沿って処理される。 このプロセスにより
変換される、その目標を有するそれぞれのポインタについて言うと、その目標は
DSCOマップの中でルックアップされる。このルックアップに関しては3つの
結果が可能性のあるものとして考えられる。すなわち、その目標を取り囲む領域
について連結済みのDSCOハンドルがある場合か、その目標を取り囲む領域に
ついて連結されていないDSCOハンドルがある場合か、あるいは、その目標を
取り囲む領域についてのDSCOハンドルがない場合か、である。その目標を取
り囲む領域について連結済みのDSCOハンドルがある場合、その場合には、そ
の仮想アドレスは、ポインタの目標オフセットとDSCOハンドルの領域オフセ
ットとの間の差異に加えられるとき、そのポインタについての仮想アドレス変換
値を産出する。この値はそのポインタの外部形態に上書きされる。その目標を取
り囲む領域について連結されていないDSCOハンドルがある場合、その場合は
、そのポインタ変換が進行することができる前にまず連結されならなければなら
ない。連結されていなかったDSCOハンドルを連結するプロセスは以下に詳細
に論議される。一旦そのDSCOハンドルが連結されると、その連結済みDSC
Oハンドルに対して行ったように、ポインタ変換処理が継続する。その目標を取
り囲む領域についてDSCOハンドルがない場合、DSCOハンドルが作成され
、仮想アドレスマップの中に置かれ、連結されて、また連結済みDSCOハンド
ルに対して行ったように、そのポインタ変換処理が再び継続する。3つすべての
場合で、DSCOハンドルはその後、挿入フィンガーよりもちょっと古いリロプ
ト待ち行列の中に置かれるが、それが作成されなかった場合は、リロプト待ち行
列の中のその以前の位置からまずそれを取り出す。ページ上のすべてのポインタ
が変換されるまで、インバウンド再配置はこのように進む。図21の中にある実
施例では、リロプト待ち行列にこのように加えられたDSCOハンドルは、DS
CO1、DSCO2、DSCO3およびDSCO4となる。インバウンド再配置
はその後に、そのページに対応するページハンドルの状態を「使用中ならびにス
キャンされている」状態に設定し、その後、適切な保護を備えた適切なアドレス
でPSRの中にそのページをマップし、そのページを顧客アプリケーションに対
してアクセス可能にし、そしてその顧客アプリケーションに制御権を戻す。
【0068】 図22は、第2ページP2が持ち込まれ、またそのページがDSCO2により
カバーされる範囲にある場合、また、DSCO1と新たなDSCOハンドルであ
るDSCO5−(その他の4つのDSCOハンドルに関して行われたように、作
成され、割り当てられ、そしてDSCOマップとCABSの中に置かれる)によ
りカバーされた目標を有するポインタを含み、そのページがインバウンド再配置
を行い、挿入フィンガーに挿入され、そしてその後にDSCO1、DSCO5、
およびDSCO2がその挿入フィンガーに挿入される場合に、何が起こるのかを
図示することにより、図20と21の実施例を継承している。
【0069】 ページハンドルの状態には、「使用中ならびにスキャンされている」、「使用
中だがスキャンはされていない」、「使用中ではない」そして、「使用中ではな
く、変位した」がある。最初の2つの状態の両方ともでみられる「使用中」とい
う指定は、現行アドレススペース生成時に顧客アプリケーションにアクセス可能
であるページのページハンドルに対応している。「スキャンされている」という
指定は、リロプト待ち行列のスキャンされたセクションの中にあるページハンド
ルに対応している。「変位した」という指定は、リロプト待ち行列の変位された
セクションの中にあるページハンドルに対応している。なお、スキャンされたペ
ージはすべて使用中であり、変位したページハンドルはすべて使用中ではない。
「使用中だが、スキャンされてはいない」および「使用中ではない」状態は、リ
ロプト待ち行列のスキャンされていないセクションの中にあるページハンドルに
対応している。
【0070】 顧客アプリケーションによりページに対するリクエストが進められると、ペー
ジハンドルは個別に使用中にされる。その顧客アプリケーションが現行アドレス
スペース生成が終了したことを指示するときには、ページハンドルは全部まとめ
て使用から取り外される。
【0071】 前に述べたように、図24の継承実施例の中で図示されているように、挿入フ
ィンガーよりもちょっと古い位置にスキャンされたフィンガーを移動することに
より現行アドレススペース生成は終了する。スキャンされたフィンガーをこのよ
うに移動させるだけでは、ページハンドルが使用外の状態に変わることはない。
数多くのページハンドルを同時に使用外にするプロセスをスピードアップするた
めには、本発明は、各ページハンドルにおけるアドレススペース生成フィールド
と一緒に顧客に関する単一大域現行スペース生成カウンタを使用する。大域カウ
ンタとフィールドの両方とも、32ビット幅である。大域カウンタは、1〜23
2−1という包含的範囲にある値をとり、一方、フィードは0〜232−1とい
う包含的範囲にある値をとる。現行アドレススペース生成がいつ終了しても、大
域カウンタは増分され、またそれが0にオーバーフローする場合は、即座に1に
設定される。ページハンドルが「使用中ならびにスキャンされている」あるいは
「使用中であるが、スキャンはされていない」状態のいずれかにされている場合
は、そのページハンドルのアドレススペース生成フィールドはその大域現行アド
レススペース生成数の値に設定される。このように、ページハンドルのアドレス
スペース生成フィールドの値が、大域現行アドレススペース生成カウンタの値と
等しい場合は、そのページハンドルは使用中と指定される。フィールドの値が大
域カウンタの値に等しくない場合、その場合は、そのページハンドルは、リロプ
ト待ち行列のなかのその位置により、「使用中ではない」あるいは「変位した」
状態のいずれかである。このように、アドレススペース生成の終了時には大域カ
ウンタを増分するという単一動作により、各ページハンドルが順次スキャンされ
ることは要求されずにそのアドレススペース生成時に使用中であったすべてのペ
ージハンドルの状態は有効に変化する。
【0072】 このプロセスは、大域カウンタが前の値よりも小さい値に設定される場合には
、整数オーバーフローのため、エラーしやすくなる。ここで可能性のあるエラー
とは、この低値をそのフィールドの値として有し、何らかの以前のアドレススペ
ース生成時に設定されたページハンドルが存在し、しかも、そのページハンドル
が使用中であるということを意味するように、そのフィールドが現在大域カウン
タに等しいという事実を解釈して間違ってしまうことである。これが、232−
1生成よりも小さい数から0まで以内にある使用中状態の中に入れられていなか
ったすべてのページハンドルのアドレススペース生成フィールドを設定すること
より、このエラーしやすい状態が生起するのを防ぐ、本発明の内にあるこの法フ
ィンガーの機能である。この法フィンガーは、アドレススペース生成毎にリロプ
ト待ち行列の中にある1つの構成要素を移動して通過していき(古い位置から新
しい位置へと)、それがヘッドを通過すると、末尾にループバックすることによ
り、このタスクを達成する。本発明は、この移動をアドレススペース生成の終了
時に実施するが、しかし、いずれのときにそれを実施しても十分足りる。法フィ
ンガーにより移動通過されられるその構成要素がページハンドルであって、また
そのアドレススペース生成フィールドが大域現行アドレススペース生成カウンタ
に現在は等しくない場合、その場合は、フィールドは0に設定され、それは、大
域カウンタの値が少なくとも1に常に維持されているため、整数オーバーフロー
には無関係に、大域カウンタに等しくはならない値となる。このプロセスが正確
であるのは、リロプト待ち行列には232−1構成要素よりも少ない数の構成要
素しかないという制限に基づいている。この制限はメモリ消費上のコンピュータ
ハードウエアの制限により間接的に課せられており、そのため、本発明により直
接課せる必要はない。
【0073】 アンバウンドDSCOをバイドするため、この方法は、他のDSCOハンドル
にバインドされていないDSCOハンドルのフィールドんじょサイズと等しいか
それより大きなサイズのバーチャルアドレスフィールドを見付けなければならな
い。バーチャルアドレスマップはそのような領域が存在するかどうかを決定する
ように質問できる。もし適当な領域が存在すれば、その領域はリクエストされた
サイズであり、DSCOハンドルにバウンドされている。適用な領域が存在し、
サイズがリクエストされたものより大きければ、サイズが等しい領域の一部はD
SCOハンドルにバイドされており、残りはバインドされていない。もし、適当
な領域が存在しなければ、現在のアドレススペース発生で使用されているページ
ハンドルで必要とされない他のバウンドDSCOハンドルをアンバインドするこ
とで創出できる。本願発明はディスプレースフィンガーを使用し、次のディスプ
レース手法でそれらをアンバイドする。ディスプレースフィンガーよりも若い要
素が調べられる。要素がDSCOハンドルであれば、DSCOハンドルにバウン
ドされなければならない。なぜなら、全てのアンバウンドDSCOハンドルはデ
ィスプレースフィンガーの古い側へのディスプレースセクションに存在するから
である。このように発見されたDSCOハンドルはアンバウンドされ、バーチャ
ルアドレスフィールドは0にセットされ、バーチャルアドレスマップの対応エン
トリーは変性されて。DSCOハンドルに前にバウンドされたバーチャルアドレ
ス領域がフリーであることを示す。DSCOハンドルをリフェレンスするエント
リーは最も若いDABSハンドルに加えられる。それは、DSCOハンドルに前
にバウンドされたバーチャルアドレス領域のアドレスによりインデックス可能な
方法で行われ、バーチャルアドレス領域が決定される。DSCOハンドルはディ
スプレースメントフィンガーの古い側に配置される。もし、この方法でフリーと
なったバーチャルアドレススペース領域のサイズがスペースに対するリクエスト
を満たすに充分であれば、リクエストは充足される。もし、フリー領域が充分に
大きくなければ、ディスプレースメント手法は次の要素を検査する。
【0074】 この手法で検査された要素がスキャンされたフィンガーであれば、全ての残っ
たバウンドされたDSCOハンドルはスキャンされたセクション内で存在しなけ
ればならない。全てのそのようなバウンドされたDSCOハンドルは現在のアド
レスのスペース発生の時間だけ現行バインディングを維持しなければならないの
で、他のDSCOハンドルによって消費されるフリーバーチャルアドレススペー
スを提供するようにアンバウンドされるものはない。このような場合に、クライ
エントはバーチャルアドレススペースを消費し、この状態はクライエントアプリ
ケーションに信号される。クライエントアプリケーションは現行のアドレススペ
ース発生を終了させるように選択することができる。また、継続させたり、リク
エストされたページを終了させることができる。
【0075】 もしディスプレース手法により検査される要素がページハンドルであれば、こ
のページハンドルは“私用中でスキャンされていない”か“非使用”でなければ
ならない。なぜなら、ディスプレースステートの全てのページハンドルはキュー
のディスプレースフィンガーの古い側にあるからである。また、“使用中でスキ
ャンされている”ステートはスキャンされているフィンガーよりも新しく、ディ
スプレース手法では到達できない。もし、検査されるページが“非使用”であれ
ば、ディスプレースフィンガーよりも古く、そのヘッドDABSフィールドが現
行のもっとも新しいDABSにリファーするようにセットされ、ディスプレース
ステートとなるようにセットされる。ページハンドルが“使用中でスキャンされ
ていない”ステートであれば、さらなる処理が必要で、ページハンドルをディス
プレース手法から外して、バウンドDSCOハンドルを発見しなければならない
。このプロセスはスキャニングである。リロケーションとは異なり、ポインター
値はスキャニングで変化しない。その代わりに、バーチャルアドレスマップにイ
ンデックスするのに使用され、ポインターのターゲットに対応するバウンドDS
COハンドルを発見する。まず、ページハンドル自身がキューのヘッドに移動さ
れる。次にスキャニング中にページの各ポインターはバーチャルアドレスマップ
へのインデックスに使用され、対応するバウンドDSCOハンドルを発見する。
発見された各DSCOハンドルはキューのヘッドに移動される。ページが番号で
ある領域に対応するDSCOハンドルも同様に移動される。スキャニングはペー
ジハンドルをディスプレース手法から外す。
【0076】 クライエントアプリケーションによるページのリクエストがどのように行われ
るかを再び解説する。ページハンドルは使用中ステートではあり得ない。ページ
ハンドルが“非使用”ステートであれば、リロプトキューの非スキャンセクショ
ン内に存在しなければならない。リロプトキューのポジション変数は全DSCO
ハンドルがページよりも若いことを保証し、バウンドされていなければならない
。さらに、これらDSCOハンドルはアンバウンドできない。本願発明はこのペ
ージのステートを“非使用”から“使用中だが未スキャン”のステートの変更さ
せる。この能力は本願発明の利点である。本願発明はさらにこのページ部分が実
質的な部分とする。
【0077】 クライエントアプリケーションでリクエストされたページのページハンドルが
ディスプレースステートであるなら、ポインターは有効ではない。このステート
のページはクライエントアプリケーションにアクセス可能とされる前にフォーワ
ードリロケーションされなければならない。フォワードリロケーションはページ
のメタデータ内のオブジェキトタッグを使用してポインターをページ内でロケー
トする。インバウンドリロケーションまたはスキャニングとは異なり、これらポ
インターのターゲットはPRMからの翻訳では発見されない。フォワードリロケ
ーションはDABSを使用してポインターを翻訳する。図25はリロプトキュー
を示す。ページハンドルはキューのヘッドに移動される。各ポインターに対して
ポインターの値はDABSへのインデックスに使用される。エントリーがDAB
Sで発見されると、DSCOハンドルは3ステートの1つとなる。DSCOハン
ドルはDABSに加えられた直前にバウンドされた同じアドレス領域にバウンド
可能である。この場合、ポインターの値は有効で、翻訳は不要である。DSCO
ハンドルは非バウンド状態となり得る。この場合、DSCOハンドルはバウンド
されなければならない。
【0078】 もしDABAが適当なエントリーを持たない場合、次のDABSが次に質問さ
れる。この手順はDSCOハンドルが発見されるか、DABSチェインの端部に
到達するまで反復される。
【0079】 ベーシックバージョンと進歩したバージョンとの最も大きな相違点は、進歩し
たバージョンは、列の先頭位置に1つだけ固定された複数の挿入フィンガーを有
していることである。さらに、挿入フィンガーは、位置変更フィンガーのより若
い側のどこにでも現れることができる。スキャンされたフィンガーの若い側への
挿入フィンガーは、活性状態と判断され、スキャンされたフィンガーの古い側へ
のものは、不活性状態と判断される。よって、挿入フィンガーのフラッグは、新
しい挿入フィンガーについては活性状態であり、対応するネストされたアドレス
スペースの生成が終了すると、不活性にセットされることで、活性状態/不活性
状態を追跡する。グローバルアドレススペース生成カウンターは、この進歩した
バージョンにおいては無い。アドレススペース生成領域に代えて、各ページハン
ドルは、挿入フィンガー又はゼロを意味する挿入フィンガー領域を有している。
ページハンドルの「使用中」の表示は、挿入フィンガー領域を審査することで決
定される。もし、領域がゼロであれば、ページハンドルは使用中ではない。もし
、領域がゼロでなければ、リファレンスされた挿入フィンガーがカレントである
場合においてのみ、ページハンドルは使用中である。ページハンドルは、その挿
入フィンガー領域を、最も内側の活性状態のネストされたアドレススペース生成
のための挿入フィンガーに言及するようにセットすることで使用される。モジュ
ラスフィンガーは、進歩したバージョンでは必要ではない。
【0080】 既に存在しない現在のアドレススペース生成領域をセットする代わりに、ペー
ジハンドルの位置の変更は、挿入フィンガーの領域をゼロにセットする。位置の
変更処理が挿入フィンガーに遭遇すると、挿入フィンガーは消去される。このよ
うにして、リロップト列内の挿入フィンガーの数は、境界(bound)無く増
加することはない。不活性状態の挿入フィンガーのより早い消去は、リファレン
ス計数手続を用いることで可能である。
【0081】 ネストされた又は外方の、アドレススペースの生成が終了すると、スキャンさ
れた領域は、挿入領域より1つ若い位置へ移動される。当該挿入領域はエンディ
ングアドレススペースの生成と対応し、その挿入フィンガーの状態は、不活性に
セットされる。ネストされた又は外方の、アドレススペースの生成が始まると、
新しい挿入フィンガーが生成され、それは、当該スキャンされたフィンガーより
も1つだけ若い位置のリロップト列へ置かれる。前記挿入フィンガーは、ネスト
されたレベルを表示する領域を有しており、それは、新しい挿入フィンガーが生
成された時点において、最も内側のネストされた活性状態の挿入フィンガーのネ
ストされたレベルより1つ大きく、一番外側のレベルが0となる。従って、引き
続いてネストされたアドレススペースの生成は、連続的により高いネストされた
レベルの連続的に古い挿入フィンガーと対応することになる。活性状態の挿入フ
ィンガーの間のリロップト列のセクションは、マルチスキャンされたセクション
として言及され、それは、セクションのオーナーとなるそのようなセクションよ
りも若い活性状態の挿入フィンガーを有する。
【0082】 挿入フィンガー領域は、DSCOハンドルにも加えられる。この領域は、DS
COハンドルを移動させるいかなる操作の間においても、DSCOハンドルが移
動されるスキャンされたセクションを有する挿入フィンガーにセットされる。 挿入フィンガーの領域を審査するために、ページ又はDSCOハンドルのネス
トされたレベルが決定される。領域が「ゼロ」であるか、又は、不活性の挿入フ
ィンガーに言及していれば、ネストされたレベルは、無限にポジティブであると
みなされる。さもなければ、ネストされたレベルは、当該活性状態の挿入フィン
ガーのレベルである。ページ及びDSCOハンドルのネストされたレベルは、新
しい「invariant」を確認するために用いられる。ページ又はDSCO
ハンドルは、現在のネストされたレベルよりも高いネストされたレベルを受ける
領域には決して移動されることはない。このようにして、位置変更又はスキャン
の間に、DSCOハンドルを移動している間に、DSCOハンドルはそのあらゆ
る移動に先立ってその現在のネストされたレベルが審査され、DSCOハンドル
は、挿入フィンガーがDSCOハンドルのネストされたレベルと同等又はそれ以
下のレベルへ移動された場合にのみ移動される。
【0083】 トランザクションの間においては、常に1つの最も内側のアドレススペースが
生成され、対応する1つの最も内側の活性挿入フィンガー、その挿入フィンガー
は、アドレススペース生成の変更であり、現在の最も内側の活性挿入フィンガー
を追跡して1つのグローバルな可変に始まり終了する。ベーシックバージョンの
ページハンドルの動作とDSCOハンドルは、動作が常にリロップト列の中への
挿入という結果となるように変更される。その列の位置は、この挿入フィンガー
よりも1つだけ古く、そのように移動されるページ又はDSCOハンドルの挿入
フィンガーは、この挿入フィンガーに言及するようにセットされる。
【0084】 アドレススペースの生成が終了すると、対応する挿入フィンガーの状態が不活
性にセットされ、スキャンされたフィンガーは、それよりも1つ若い位置へ移動
される。アドレススペースの生成は、スキャンされたフィンガーが活性状態の挿
入フィンガーより若い位置に移動されることが決してないように、最も内側から
最も外側へと順次終了することとなる。アドレススペースの生成が終了すると、
対応する挿入フィンガーと、スキャンされたセクションの内容とは、スキャンさ
れたフィンガーのこの移動のためにスキャンされていないセクションのエレメン
トとなる。従って、それらのエレメントは、位置の変更が可能となり、活性状態
の挿入フィンガーのスキャンされたセクション内にまだ存在しているエレメント
よりも速く位置が変更されるようになる。この位置変更可能な手順は、クライア
ントのアプリケーションにとって目に見えて快適(nesting)なものとな
る。
【0085】 上記の実施例は、単に本発明の趣旨を示したに過ぎないものである。本発明の
趣旨に沿った他の変更は当業者にとって可能であり、それらも本発明の範囲内の
ものである。
【0086】
【図面の簡単な説明】
【図1】 図1は本願発明が利用される典型的なディストリビュートされたデ
ータベースシステムの形態のブロック図である。
【図2】 図2は図1のシステムの一部の詳細なブロック図であり、サーバー
コンピュータとクライエントコンピュータでの別々のデータレポジトリーを有し
ている。
【図3】 図3はシステムの一部のさらに詳細なブロック図であり、1つのコ
ンピュータにデータとクライエントの永久レポジトリを有している。
【図4】 図4は本願発明のシステムがコンピュータの他のプロセスと相互作
用する様子を示す。
【図5】 データの永久レポジトリの図であり、データベース、セグメント、
クラスター、及びページへの分割を図示している。
【図6】 パーシステントリロケーションマップと関連データベースページと
の図である。
【図7】 さらに詳細なメモリ図であり、データベースに保存されたクラスタ
ーのデータ構造を示している。
【図8】 図8Aから8Cは3つの異なるオブジェクトタッグのデータ構造を
示す図である。
【図9】 図9はスキーマのためのデータ構造を示す図である。
【図10】図10は図9のスキーマへのタイプエントリーのデータ構造を示す
図である。
【図11】図11はタイプデスクリプションディクショナリエントリーのイン
ストラクション用データ構造の図である。
【図12】図12はクライエントキャッシュのモニターのためのクライエント
コンピュータのデータ構造の図である。
【図13】図13はデータベースページのオーナーシップステータスをモニタ
ーするためのサーバーコンピュータのデータ構造の図である。
【図14】図14はデータベースセグメントに対するバーチャルアドレススペ
ースの指定を示す図である。
【図15】図15はバーチャルメモリ(キャッシュのバーチャルアドレスの物
理的アドレス)へのマッピングデータを示す図である。
【図16】図16A-図16Cはキャッシュディレクトリと、バーチャルメモ
リマップとバーチャルアドレスマップの間の関係を示す図である。
【図17】図17はバーチャルアドレスへのレジスタンスアドレスのリロケー
ション方法を示す図である。
【図18】図18はバーチャルアドレスへのパーシステントアドレスのマッピ
ングの詳細なリロケーションである。
【図19】図19は本願発明の原理に従った第1リロプトキュー(relopt queu
e)である。
【図20】図20は本願発明の原理に従った第2リロプトキュートである。
【図21】図21はデータの第1ページのインバウンドリロケーション後の図
20のリロプトキューである。
【図22】図22はデータの第2ページのインバウンドリロケーション後の図
21のリロプトキューである。
【図23】図23は本願発明の原理に従ったPSRスペースの図である。
【図24】図24はトランザクション後の図22のリロプトキューである。
【図25】図25は本願発明の原理に従ったキュー要素間の鎖DABS構造を
有した第3リロプトキューである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AG,AL,AM,AT,AU, AZ,BA,BB,BG,BR,BY,CA,CH,C N,CR,CU,CZ,DE,DK,DM,DZ,EE ,ES,FI,GB,GD,GE,GH,GM,HR, HU,ID,IL,IN,IS,JP,KE,KG,K P,KR,KZ,LC,LK,LR,LS,LT,LU ,LV,MA,MD,MG,MK,MN,MW,MX, NO,NZ,PL,PT,RO,RU,SD,SE,S G,SI,SK,SL,TJ,TM,TR,TT,TZ ,UA,UG,UZ,VN,YU,ZA,ZW

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 データベースシステム内のキャッシュにおけるデータを分離する
    方法であって、前記キャッシュ内のポインターが、永続的なアドレスポインター
    からトランスレートされたバーチャルアドレスポインターであり、以下のステッ
    プからなる。 a)リロケーション最適化列(キュー)を提供し、当該列は、当該列内の位置
    を指定する複数のフィンガーと、キャッシュ内のキャッシュデータと対応する複
    数のエントリーとを有し、 b)前記列を前記フィンガーを有する複数のセクションに区画し、第一のセク
    ションはクライアントのアプリケーションによる現在のトランザクションにて使
    用されているデータのためのエントリーを含み、第二のセクションは、ポインタ
    ーを更新することなく前記クライアントのアプリケーションによって使用可能な
    エントリーを含み、第三のセクションは、ポインターを更新することなく前記ク
    ライアントのアプリケーションによって使用することができないエントリーを含
    み、 c)前記キャッシュ内のデータ及び未だ前記キャッシュ内にないデータに対す
    る、前記クライアントのアプリケーションからのアクセス要求に応じ、 d)未だ前記キャッシュ内にないデータを前記キャッシュ内へ組み入れ、前記
    列内に組み入れられた前記データを反映するように、ポインター情報を更新する
    ために、前記列内のポインターをトランスレートし、 e)前記クライアントのアプリケーションから要求されることのなくなったデ
    ータを前記キャッシュ内から取り除き、前記列内の当該取り除かれたデータを反
    映するポインター情報を更新するために、前記ポインターをトランスレートし、 f)前記列内の第三のセクション内の前記エントリーと対応するデータへのア
    クセスを提供する際にポインターを更新し、それによって前記列の前記第一及び
    第二のセクションに対応する前記キャッシュ内のデータへの迅速なアクセスを提
    供する。
JP2000607084A 1999-03-25 2000-03-24 データベースシステムにおけるバーチャルメモリマッピングとトランザクションマネージメントのポインターリロケーションオプチミゼーションの方法及び装置 Pending JP2002540502A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12610399P 1999-03-25 1999-03-25
US60/126,103 1999-03-25
PCT/US2000/008085 WO2000057276A1 (en) 1999-03-25 2000-03-24 Method and apparatus for pointer relocation optimization for virtual memory mapping and transaction management in a database system

Publications (2)

Publication Number Publication Date
JP2002540502A true JP2002540502A (ja) 2002-11-26
JP2002540502A5 JP2002540502A5 (ja) 2009-01-29

Family

ID=22423010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000607084A Pending JP2002540502A (ja) 1999-03-25 2000-03-24 データベースシステムにおけるバーチャルメモリマッピングとトランザクションマネージメントのポインターリロケーションオプチミゼーションの方法及び装置

Country Status (5)

Country Link
US (1) US6594751B1 (ja)
EP (1) EP1247184B1 (ja)
JP (1) JP2002540502A (ja)
AU (1) AU3924600A (ja)
WO (1) WO2000057276A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544422A (ja) * 2005-06-27 2008-12-04 エービー イニティオ ソフトウェア コーポレーション メモリページ管理

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6766472B2 (en) 2000-09-22 2004-07-20 Microsoft Corporation Systems and methods for replicating virtual memory on a host computer and debugging using the replicated memory
US20040139125A1 (en) 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access
US7617292B2 (en) * 2001-06-05 2009-11-10 Silicon Graphics International Multi-class heterogeneous clients in a clustered filesystem
US7640582B2 (en) 2003-04-16 2009-12-29 Silicon Graphics International Clustered filesystem for mix of trusted and untrusted nodes
US8010558B2 (en) * 2001-06-05 2011-08-30 Silicon Graphics International Relocation of metadata server with outstanding DMAPI requests
US7155531B1 (en) 2001-06-12 2006-12-26 Network Appliance Inc. Storage methods and apparatus for streaming media data
US7478164B1 (en) 2001-06-12 2009-01-13 Netapp, Inc. Methods and apparatus for pacing delivery of streaming media data
US6742082B1 (en) * 2001-06-12 2004-05-25 Network Appliance Pre-computing streaming media payload method and apparatus
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US7054911B1 (en) 2001-06-12 2006-05-30 Network Appliance, Inc. Streaming media bitrate switching methods and apparatus
US7076560B1 (en) 2001-06-12 2006-07-11 Network Appliance, Inc. Methods and apparatus for storing and serving streaming media data
US7412531B1 (en) 2002-01-29 2008-08-12 Blue Coat Systems, Inc. Live stream archiving method and apparatus
US7386627B1 (en) 2002-01-29 2008-06-10 Network Appliance, Inc. Methods and apparatus for precomputing checksums for streaming media
US7657644B1 (en) 2002-05-10 2010-02-02 Netapp, Inc. Methods and apparatus for streaming media multicast
US7120751B1 (en) 2002-08-09 2006-10-10 Networks Appliance, Inc. Dynamic streaming buffer cache algorithm selection
US7991905B1 (en) 2003-02-12 2011-08-02 Netapp, Inc. Adaptively selecting timeouts for streaming media
US20060164907A1 (en) * 2003-07-22 2006-07-27 Micron Technology, Inc. Multiple flash memory device management
GB0406860D0 (en) 2004-03-26 2004-04-28 British Telecomm Computer apparatus
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US7752325B1 (en) 2004-10-26 2010-07-06 Netapp, Inc. Method and apparatus to efficiently transmit streaming media
US7496678B2 (en) * 2005-05-11 2009-02-24 Netapp, Inc. Method and system for unified caching of media content
US7865684B2 (en) * 2005-06-27 2011-01-04 Ab Initio Technology Llc Managing message queues
US7430553B2 (en) * 2005-12-30 2008-09-30 Microsoft Corporation Managing states with delta pager
US20080005728A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US20080005727A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity
US20080127220A1 (en) * 2006-06-30 2008-05-29 Robert Paul Morris Methods, systems, and computer program products for creating an input-value-specific loadable instance of an application
US20080005752A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for generating application processes by linking applications
US20080005529A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
US20080005719A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, systems, and computer program products for providing a program execution environment
US20080005528A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Using a Structured Data Storage System to Provide Access to Addressable Entities in Virtual Address Space
US20080126352A1 (en) * 2006-09-27 2008-05-29 Rockwell Automation Technologies, Inc. Client side state cache for industrial control systems
US7734890B2 (en) * 2006-10-06 2010-06-08 Okralabs Llc Method and system for using a distributable virtual address space
US20080112399A1 (en) 2006-11-13 2008-05-15 British Telecommunications Public Limited Company Telecommunications system
US20080120604A1 (en) * 2006-11-20 2008-05-22 Morris Robert P Methods, Systems, And Computer Program Products For Providing Program Runtime Data Validation
US8315430B2 (en) * 2007-11-07 2012-11-20 Viewdle Inc. Object recognition and database population for video indexing
US20090249021A1 (en) * 2008-03-26 2009-10-01 Morris Robert P Method And Systems For Invoking An Advice Operation Associated With A Joinpoint
US8150169B2 (en) * 2008-09-16 2012-04-03 Viewdle Inc. System and method for object clustering and identification in video
CA2800843A1 (en) * 2010-05-19 2011-11-24 Kamlesh Gandhi Composition of data objects
WO2013019913A1 (en) * 2011-08-02 2013-02-07 Jadhav Ajay Cloud-based distributed persistence and cache data model
US9037558B2 (en) * 2012-05-25 2015-05-19 International Business Machines Corporation Management of long-running locks and transactions on database tables
US9852100B2 (en) * 2014-02-26 2017-12-26 Red Hat Israel, Ltd. Guest-programmable location of advanced configuration and power interface (ACPI) tables in virtualized systems
GB2540206B (en) * 2015-07-10 2018-02-07 Advanced Risc Mach Ltd Apparatus and method for executing instruction using range information associated with a pointer
CN109032970A (zh) * 2018-06-16 2018-12-18 温州职业技术学院 一种基于lru算法的动态缓存方法
US11630920B2 (en) * 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US11321344B2 (en) * 2019-09-20 2022-05-03 Sap Se Virtual database tables with updatable logical table pointers
US11782927B2 (en) 2021-07-28 2023-10-10 Bank Of America Corporation Electronic system for dynamically propagating data from a database to a cache
US11849129B2 (en) * 2022-03-18 2023-12-19 Qualcomm Incorporated Intra-block copy decoding using dynamic re-mapping of on-chip memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649139A (en) * 1991-03-22 1997-07-15 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043885A (en) * 1989-08-08 1991-08-27 International Business Machines Corporation Data cache using dynamic frequency based replacement and boundary criteria
US5509131A (en) * 1991-10-22 1996-04-16 Unisys Corporation System for pointer updating across paged memory
US5483641A (en) * 1991-12-17 1996-01-09 Dell Usa, L.P. System for scheduling readahead operations if new request is within a proximity of N last read requests wherein N is dependent on independent activities
US5687368A (en) * 1994-07-22 1997-11-11 Iowa State University Research Foundation, Inc. CPU-controlled garbage-collecting memory module
GB2305271A (en) * 1995-09-15 1997-04-02 Ibm Proxy object recovery in an object-oriented environment
US5815415A (en) * 1996-01-19 1998-09-29 Bentley Systems, Incorporated Computer system for portable persistent modeling
US5881379A (en) * 1996-05-20 1999-03-09 International Business Machines Corporation System, method, and program for using duplicated direct pointer sets in keyed database records to enhance data recoverability without logging
US6073228A (en) * 1997-09-18 2000-06-06 Lucent Technologies Inc. Modulo address generator for generating an updated address
US6094686A (en) * 1997-10-24 2000-07-25 Compaq Computer Corporation Multi-processor system for transferring data without incurring deadlock using hierarchical virtual channels
US6128717A (en) * 1998-01-20 2000-10-03 Quantum Corporation Method and apparatus for storage application programming interface for digital mass storage and retrieval based upon data object type or size and characteristics of the data storage device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649139A (en) * 1991-03-22 1997-07-15 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544422A (ja) * 2005-06-27 2008-12-04 エービー イニティオ ソフトウェア コーポレーション メモリページ管理

Also Published As

Publication number Publication date
EP1247184B1 (en) 2018-08-15
WO2000057276A9 (en) 2002-06-27
EP1247184A4 (en) 2006-11-08
EP1247184A1 (en) 2002-10-09
US6594751B1 (en) 2003-07-15
WO2000057276A1 (en) 2000-09-28
AU3924600A (en) 2000-10-09

Similar Documents

Publication Publication Date Title
JP2002540502A (ja) データベースシステムにおけるバーチャルメモリマッピングとトランザクションマネージメントのポインターリロケーションオプチミゼーションの方法及び装置
US6370619B1 (en) Managing partitioned cache
US6199141B1 (en) Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US7421562B2 (en) Database system providing methodology for extended memory support
US5835908A (en) Processing multiple database transactions in the same process to reduce process overhead and redundant retrieval from database servers
US6385699B1 (en) Managing an object store based on object replacement penalties and reference probabilities
EP2478442B1 (en) Caching data between a database server and a storage system
US6490666B1 (en) Buffering data in a hierarchical data storage environment
US8700674B2 (en) Database storage architecture
US7451290B2 (en) Method and mechanism for on-line data compression and in-place updates
JP4791458B2 (ja) ルックアップ・キャッシュにオブジェクトを維持するためのシステム及び方法
US20040030846A1 (en) Data storage system having meta bit maps for indicating whether data blocks are invalid in snapshot copies
US5761501A (en) Stacked skip list data structures
US7493464B2 (en) Sparse matrix
US7177980B2 (en) Cache storage system and method
US6782444B1 (en) Digital data storage subsystem including directory for efficiently providing formatting information for stored records
US6029229A (en) Digital data storage subsystem including directory for efficiently providing formatting information for stored records
US5900009A (en) System and method for accessing records in a cache slot which are associated with a current owner storage element or at least one previous owner storage element
US7836248B2 (en) Methods and systems for managing persistent storage of small data objects
US7533225B1 (en) Method and apparatus for enabling adaptive endianness
JPS6194159A (ja) メモリ装置
US6594726B1 (en) Digital data storage subsystem including arrangement for efficiently controlling fast write storage operation
CN116048408A (zh) 一种基于持久性内存的跳表结构及其访问方法
JP2618096B2 (ja) キャッシュ管理方法
JP2000010838A (ja) リモートディスク装置アクセスシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070322

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081010

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20081027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20081010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100405

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100412

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100720