JPH0683706A - シスプレックス共用データ・コヒーレンシを維持する方法 - Google Patents
シスプレックス共用データ・コヒーレンシを維持する方法Info
- Publication number
- JPH0683706A JPH0683706A JP5012161A JP1216193A JPH0683706A JP H0683706 A JPH0683706 A JP H0683706A JP 5012161 A JP5012161 A JP 5012161A JP 1216193 A JP1216193 A JP 1216193A JP H0683706 A JPH0683706 A JP H0683706A
- Authority
- JP
- Japan
- Prior art keywords
- data
- ses
- cache
- cpc
- lcb
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【目的】 共用電子メモリにデータがキャッシュされる
マルチシステム・データ共用複合体を動作させる方法の
提供。 【構成】 高速キャッシュは、上記複合体内の独立に動
作するデータ・システムによって共用される。各データ
・システムは、高速キャッシュと低速の上位レベル記憶
域にアクセスできる。高速キャッシュの管理論理装置
は、キャッシュ入力データのブロックが、上位レベル記
憶域から取り出されたページの以前のバージョンで重ね
書きされないようにする。CPC中に無効化ビットを供
給し、SESとCPCの両方にコマンド機能と制御を提
供し、その両方にあるデータ項目の無効化を制御して、
任意のデータ項目の最新バージョンは、シスプレックス
内の任意のCPCによってアクセスまたは更新され、シ
ステム内でデータ・コヒーレンシを維持する。
マルチシステム・データ共用複合体を動作させる方法の
提供。 【構成】 高速キャッシュは、上記複合体内の独立に動
作するデータ・システムによって共用される。各データ
・システムは、高速キャッシュと低速の上位レベル記憶
域にアクセスできる。高速キャッシュの管理論理装置
は、キャッシュ入力データのブロックが、上位レベル記
憶域から取り出されたページの以前のバージョンで重ね
書きされないようにする。CPC中に無効化ビットを供
給し、SESとCPCの両方にコマンド機能と制御を提
供し、その両方にあるデータ項目の無効化を制御して、
任意のデータ項目の最新バージョンは、シスプレックス
内の任意のCPCによってアクセスまたは更新され、シ
ステム内でデータ・コヒーレンシを維持する。
Description
【0001】
【産業上の利用分野】本発明は、中央処理複合体(CP
C)が共用するデータを格納するための電子式ランダム
・アクセス記憶装置を含む共用電子記憶(SES)機構
に接続されたローカル・バッファを有する複数のCPC
を備えた、システム複合体(シスプレックス)における
データ・コヒーレンシの維持に関する。
C)が共用するデータを格納するための電子式ランダム
・アクセス記憶装置を含む共用電子記憶(SES)機構
に接続されたローカル・バッファを有する複数のCPC
を備えた、システム複合体(シスプレックス)における
データ・コヒーレンシの維持に関する。
【0002】本発明は、マルチシステム・データ共用複
合体にサービスするキャッシュにデータをキャッシュす
ることに関する。詳しくは特に、本発明は、1つのデー
タベース・システムにより、データ・ページを、別のシ
ステムが後で同一のページのコピーをキャッシュしよう
と試みる可能性を考慮したうえで、共用キャッシュにキ
ャッシュすることに関する。本発明は、そのような条件
を検出し、ページの以前のコピーが共用キャッシュに入
れられないようにする技術に関する。
合体にサービスするキャッシュにデータをキャッシュす
ることに関する。詳しくは特に、本発明は、1つのデー
タベース・システムにより、データ・ページを、別のシ
ステムが後で同一のページのコピーをキャッシュしよう
と試みる可能性を考慮したうえで、共用キャッシュにキ
ャッシュすることに関する。本発明は、そのような条件
を検出し、ページの以前のコピーが共用キャッシュに入
れられないようにする技術に関する。
【0003】
【従来の技術】通常、プロセッサ中の従来のハードウェ
ア・キャッシュは、固定サイズのデータ・ブロックを有
する記憶アレイから構成されている。そのような記憶域
は、ハードウェアから見ると線形のブロック・アレイに
見える。キャッシュ内のデータ・ブロックは、キャッシ
ュ・ディレクトリによって管理される。キャッシュ・デ
ィレクトリは、LRU(最も以前に使用された)記憶域
参照に基づいて、データ・ブロックを無効にし、あるい
はキャッシュにキャストインしまたはキャッシュからキ
ャストアウトする。既知の種類のハードウェア・キャッ
シュは、中央演算処理装置(CPU)およびDASD
(直接アクセス記憶装置)の中で使用されている。多数
のコンピュータ・システムの主記憶装置(MS)は、実
アドレスまたは仮想アドレスを使用するCPUキャッシ
ュ用のデータ・ブロックとして全体的または部分的にア
クセスされる、データ行に区分されている。キャッシュ
中のデータは、データ・ブロック内のデータに対する記
憶要求、取出し要求、および更新要求によってアクセス
される。キャッシュ・ディレクトリに対する競合するデ
ータ要求は、キャッシュに対する要求に優先順位を付け
ることによって調停される。
ア・キャッシュは、固定サイズのデータ・ブロックを有
する記憶アレイから構成されている。そのような記憶域
は、ハードウェアから見ると線形のブロック・アレイに
見える。キャッシュ内のデータ・ブロックは、キャッシ
ュ・ディレクトリによって管理される。キャッシュ・デ
ィレクトリは、LRU(最も以前に使用された)記憶域
参照に基づいて、データ・ブロックを無効にし、あるい
はキャッシュにキャストインしまたはキャッシュからキ
ャストアウトする。既知の種類のハードウェア・キャッ
シュは、中央演算処理装置(CPU)およびDASD
(直接アクセス記憶装置)の中で使用されている。多数
のコンピュータ・システムの主記憶装置(MS)は、実
アドレスまたは仮想アドレスを使用するCPUキャッシ
ュ用のデータ・ブロックとして全体的または部分的にア
クセスされる、データ行に区分されている。キャッシュ
中のデータは、データ・ブロック内のデータに対する記
憶要求、取出し要求、および更新要求によってアクセス
される。キャッシュ・ディレクトリに対する競合するデ
ータ要求は、キャッシュに対する要求に優先順位を付け
ることによって調停される。
【0004】DASDキャッシュは通常、DASDトラ
ックと等しいブロックに区分される。キャッシュ・ディ
レクトリに対するデータ要求は、読取りまたは書込み入
出力動作である。競合する要求は、DASD制御装置中
の記憶域制御機構によって調停される。
ックと等しいブロックに区分される。キャッシュ・ディ
レクトリに対するデータ要求は、読取りまたは書込み入
出力動作である。競合する要求は、DASD制御装置中
の記憶域制御機構によって調停される。
【0005】CPC階層におけるDASD型のキャッシ
ュは、C.P.グロスマン(Grossman)の論文"Cache-D
ASD Storage Design for Improving System Performanc
e"、IBM Systems Journal、第24巻、3/4(198
5年)に記載されている。
ュは、C.P.グロスマン(Grossman)の論文"Cache-D
ASD Storage Design for Improving System Performanc
e"、IBM Systems Journal、第24巻、3/4(198
5年)に記載されている。
【0006】キャッシュ付きのマルチプロセッサおよび
キャッシュなしのマルチプロセッサは、システム中での
データの保全性を維持するためのコヒーレンス制御機構
を備えていた。これらのプロセッサで使用される相互問
合せおよび相互無効化(XI)動作は、本発明で使用す
るものとは異なる。
キャッシュなしのマルチプロセッサは、システム中での
データの保全性を維持するためのコヒーレンス制御機構
を備えていた。これらのプロセッサで使用される相互問
合せおよび相互無効化(XI)動作は、本発明で使用す
るものとは異なる。
【0007】データ・コヒーレンス問題の一般的な解決
策は、現在変更済みのコピーを除くすべてのコピーを無
効化しなければならないことでよく知られている。その
ような無効化動作中、システム動作の性能が大幅に低下
する点を含めて、多くの問題が頻繁に発生している。性
能低下のより具体的な原因としては、以下のことがあ
る。
策は、現在変更済みのコピーを除くすべてのコピーを無
効化しなければならないことでよく知られている。その
ような無効化動作中、システム動作の性能が大幅に低下
する点を含めて、多くの問題が頻繁に発生している。性
能低下のより具体的な原因としては、以下のことがあ
る。
【0008】1.他のコピーが検査され無効化されるの
を待たないと変更プロセスが完了できないために、トラ
ンザクションがレコードを変更する際に大幅な遅延が生
じる。
を待たないと変更プロセスが完了できないために、トラ
ンザクションがレコードを変更する際に大幅な遅延が生
じる。
【0009】2.プロセッサが他のコピーの無効化を実
行するのに、長時間に及ぶオーバーヘッド処理を要す
る。
行するのに、長時間に及ぶオーバーヘッド処理を要す
る。
【0010】3.レコードを変更するトランザクション
の範囲を超える無効化を実行し、無効化すべきコピーに
関係しない他のトランザクションおよびその資源が使用
不能になる。
の範囲を超える無効化を実行し、無効化すべきコピーに
関係しない他のトランザクションおよびその資源が使用
不能になる。
【0011】独立して動作する複数のコンピュータ・シ
ステムがデータを共用するデータベース・システムにお
いて、様々なシステムにおけるデータのコヒーレンシを
維持するには大域ロッキングが必要である。A.J.バ
ン・デ・ゴア(van de Goor)は、その著COMPUTER ARCH
ITECTURE AND DESIGN、アディソン・ウェズリー刊(1
989年)で、データ・コヒーレンシの問題を、多数の
プロセッサ間でデータを共用すると、データへの経路が
多数あり、データをローカル側で変更する機会があるの
で、データの矛盾するコピーが複数存在する可能性が生
じる問題であると論じている。
ステムがデータを共用するデータベース・システムにお
いて、様々なシステムにおけるデータのコヒーレンシを
維持するには大域ロッキングが必要である。A.J.バ
ン・デ・ゴア(van de Goor)は、その著COMPUTER ARCH
ITECTURE AND DESIGN、アディソン・ウェズリー刊(1
989年)で、データ・コヒーレンシの問題を、多数の
プロセッサ間でデータを共用すると、データへの経路が
多数あり、データをローカル側で変更する機会があるの
で、データの矛盾するコピーが複数存在する可能性が生
じる問題であると論じている。
【0012】データ・コヒーレンシ問題の解決策がいく
つか提案されている。これらはすべて本質的に、中央位
置から取り出すデータに対して大域ロックが存在するこ
とを基礎にしている。データがページネーションされて
いるものとすると、ディスク上に格納されたデータを共
用するマルチコンピュータ・システムの1つのコンピュ
ータ・システムが、あるデータ・ページに対する大域ロ
ックを獲得し、そのページを取り出して更新する。この
ロックは、そのページを更新のために獲得したことを他
のコンピュータ・システムに知らせる。ページのロック
解除を行う前に、ロックを保持しているコンピュータ・
システムは、ディスクにページを書き込み、その後、メ
ッセージを生成して他のコンピュータ・システムに送
り、それらのローカル・キャッシュに保持されているペ
ージのコピーをすべて無効化しておく。ページに対する
ロックは、ページにアクセス可能な他のすべてのコンピ
ュータ・システムから肯定応答を受け取らないかぎり解
除されない。この解決策は、本願の出願人に譲渡された
米国特許第4399504号および第4965719号
で詳細に記載されている。本出願人から市販されてい
る、この解決策を取り入れた市販の製品に、データ共用
機能を備えたIMS/VSシステムがある。
つか提案されている。これらはすべて本質的に、中央位
置から取り出すデータに対して大域ロックが存在するこ
とを基礎にしている。データがページネーションされて
いるものとすると、ディスク上に格納されたデータを共
用するマルチコンピュータ・システムの1つのコンピュ
ータ・システムが、あるデータ・ページに対する大域ロ
ックを獲得し、そのページを取り出して更新する。この
ロックは、そのページを更新のために獲得したことを他
のコンピュータ・システムに知らせる。ページのロック
解除を行う前に、ロックを保持しているコンピュータ・
システムは、ディスクにページを書き込み、その後、メ
ッセージを生成して他のコンピュータ・システムに送
り、それらのローカル・キャッシュに保持されているペ
ージのコピーをすべて無効化しておく。ページに対する
ロックは、ページにアクセス可能な他のすべてのコンピ
ュータ・システムから肯定応答を受け取らないかぎり解
除されない。この解決策は、本願の出願人に譲渡された
米国特許第4399504号および第4965719号
で詳細に記載されている。本出願人から市販されてい
る、この解決策を取り入れた市販の製品に、データ共用
機能を備えたIMS/VSシステムがある。
【0013】従来の大域ロッキング・システムは、デー
タ・コヒーレンシを維持する上で大きな利点をもたら
す。しかし、このシステムに固有のオーバーヘッド上の
不利益として、ページを更新する際に入出力手順を実行
する必要があり、また入出力手順の後にメッセージの交
換を行って、他のシステムに通知しロックを解除する必
要があることが挙げられる。
タ・コヒーレンシを維持する上で大きな利点をもたら
す。しかし、このシステムに固有のオーバーヘッド上の
不利益として、ページを更新する際に入出力手順を実行
する必要があり、また入出力手順の後にメッセージの交
換を行って、他のシステムに通知しロックを解除する必
要があることが挙げられる。
【0014】従来技術の大域ロッキングは、非データ共
用単一システムに使うとき、トランザクションを完全に
コミットするにあたり、データ更新を行う各トランザク
ションが、ログ・レコードと共に変更済みデータを記憶
域に書き込む必要があるコミット方式を実施することに
より、トランザクション間のデータ・コヒーレンシ(一
貫性)を維持しているので、依然として余計なオーバー
ヘッドを生じている。これには、各変更トランザクショ
ンにおいて1ページ当たり1つの入出力手順が必要であ
り、オーバーヘッド・コストが増大することになる。
用単一システムに使うとき、トランザクションを完全に
コミットするにあたり、データ更新を行う各トランザク
ションが、ログ・レコードと共に変更済みデータを記憶
域に書き込む必要があるコミット方式を実施することに
より、トランザクション間のデータ・コヒーレンシ(一
貫性)を維持しているので、依然として余計なオーバー
ヘッドを生じている。これには、各変更トランザクショ
ンにおいて1ページ当たり1つの入出力手順が必要であ
り、オーバーヘッド・コストが増大することになる。
【0015】これとは対照的に、IBM DB2を非デ
ータ共用単一システムに使用する場合、トランザクショ
ンをコミットするために更新されたページを記憶域に書
き戻す入出力プロセスは必要でない。複数のコンピュー
タ・システムが1つまたは複数のデータ記憶域にアクセ
スするというデータ共用状況で上述のプロトコルを使う
と、記憶域に書き戻す必要があり、かつメッセージ遅延
が発生するため、性能が大きく低下する可能性がある。
この点に関しては、C.J.デート(Date)のAN INTRO
DUCTION TO DATABASE SYSTEMS、第I巻、593〜59
5頁、アディソン・ウェズリー刊、(1986年)所載
の並行性についての議論を参照されたい。
ータ共用単一システムに使用する場合、トランザクショ
ンをコミットするために更新されたページを記憶域に書
き戻す入出力プロセスは必要でない。複数のコンピュー
タ・システムが1つまたは複数のデータ記憶域にアクセ
スするというデータ共用状況で上述のプロトコルを使う
と、記憶域に書き戻す必要があり、かつメッセージ遅延
が発生するため、性能が大きく低下する可能性がある。
この点に関しては、C.J.デート(Date)のAN INTRO
DUCTION TO DATABASE SYSTEMS、第I巻、593〜59
5頁、アディソン・ウェズリー刊、(1986年)所載
の並行性についての議論を参照されたい。
【0016】複数の記憶レベルを備えたマルチコンピュ
ータ・データ共用システムにおいて、第1の記憶レベル
は、独立して動作するコンピュータ・システムが共用す
る1つまたは複数の直接アクセス記憶装置(DASD)
から構成されると考えられている。階層構造の記憶シス
テムの通常の命名法では、DASDおよび他のそのよう
な記憶機構は「2次」記憶域と分類されている。この場
合、2次記憶域には、データを、「1次」記憶域に移動
しておかないとCPUが直接参照できない機構がすべて
含まれる。デティアル(Detial)著OPERATING SY
STEMS、第2版、アディソン・ウェズリー刊(1990
年)を参照されたい。さらに、キャッシング技術は、共
用データ用の高速かつ頻繁にアクセスされる記憶域を提
供するのに役立つと考えられている。様々な理由で、デ
ータは、DASDから取り出された後、データベース・
システムによって共用キャッシュに入れられる。この場
合、共用キャッシュは、マルチコンピュータ・データ共
用システムの1次記憶レベルに含まれる。
ータ・データ共用システムにおいて、第1の記憶レベル
は、独立して動作するコンピュータ・システムが共用す
る1つまたは複数の直接アクセス記憶装置(DASD)
から構成されると考えられている。階層構造の記憶シス
テムの通常の命名法では、DASDおよび他のそのよう
な記憶機構は「2次」記憶域と分類されている。この場
合、2次記憶域には、データを、「1次」記憶域に移動
しておかないとCPUが直接参照できない機構がすべて
含まれる。デティアル(Detial)著OPERATING SY
STEMS、第2版、アディソン・ウェズリー刊(1990
年)を参照されたい。さらに、キャッシング技術は、共
用データ用の高速かつ頻繁にアクセスされる記憶域を提
供するのに役立つと考えられている。様々な理由で、デ
ータは、DASDから取り出された後、データベース・
システムによって共用キャッシュに入れられる。この場
合、共用キャッシュは、マルチコンピュータ・データ共
用システムの1次記憶レベルに含まれる。
【0017】このような構造中では、あるコンピュータ
・システムが、DASDのあるデータ・ブロックを、別
のシステムがそれを取り出し変更してからキャッシュし
たがまだDASDに戻していないときに、取り出してキ
ャッシュしようとする場合に危険が生じる。この場合
に、DASDから取り出される古いブロックは、キャッ
シュ内の更新されたブロックの「ダウン・レベル」バー
ジョンと呼ばれる。課題は、更新されたブロックがダウ
ン・レベル・バージョンによって重ね書きされないよう
にし、かつDASDバージョンをロックしなくて済むよ
うにするにはどうすればよいかである。
・システムが、DASDのあるデータ・ブロックを、別
のシステムがそれを取り出し変更してからキャッシュし
たがまだDASDに戻していないときに、取り出してキ
ャッシュしようとする場合に危険が生じる。この場合
に、DASDから取り出される古いブロックは、キャッ
シュ内の更新されたブロックの「ダウン・レベル」バー
ジョンと呼ばれる。課題は、更新されたブロックがダウ
ン・レベル・バージョンによって重ね書きされないよう
にし、かつDASDバージョンをロックしなくて済むよ
うにするにはどうすればよいかである。
【0018】通常、大域ロッキング・プロトコルは、デ
ータベース・システムが、データ共用状況において当該
レコードへのアクセスを逐次化するときに使用する。本
発明者等は、逐次化を引き続き使用することを考えてい
る。また、通常、様々なデータベース・システムからの
ページへの更新を逐次化するため、ページに対する大域
ロッキングを行う。本発明において逐次化を避けている
のは、様々なデータベース・システムが2次記憶域のダ
ウン・レベル・ページを共用キャッシュに挿入できるよ
うにするためである。
ータベース・システムが、データ共用状況において当該
レコードへのアクセスを逐次化するときに使用する。本
発明者等は、逐次化を引き続き使用することを考えてい
る。また、通常、様々なデータベース・システムからの
ページへの更新を逐次化するため、ページに対する大域
ロッキングを行う。本発明において逐次化を避けている
のは、様々なデータベース・システムが2次記憶域のダ
ウン・レベル・ページを共用キャッシュに挿入できるよ
うにするためである。
【0019】大域ロッキング・プロトコルについて
は、"Integrated Concurrency and Shared Buffer Cohe
rency Control for Multi-System"と題するIBM T
DB、(1986年3月、4642〜4650ページに
所載の論文に記載されている。この論文では、中央並行
性およびコヒーレンシ制御装置と称する制御装置(プロ
セッサ)について述べている。この制御装置は、1つま
たは複数のシステム・ローカル・バッファまたは共用メ
モリあるいはその両方に書き込まれた各データ項目に対
して、複数の状態を維持する。本発明では、コヒーレン
シ制御に中央制御装置を使用せず、コヒーレンシ制御が
必要なデータを格納するローカル・バッファを持つシス
テムにコヒーレンシ制御を分配し、分配した位置を、す
べてのシステムがアクセス可能なキャッシュ・ディレク
トリ項目にリストする。
は、"Integrated Concurrency and Shared Buffer Cohe
rency Control for Multi-System"と題するIBM T
DB、(1986年3月、4642〜4650ページに
所載の論文に記載されている。この論文では、中央並行
性およびコヒーレンシ制御装置と称する制御装置(プロ
セッサ)について述べている。この制御装置は、1つま
たは複数のシステム・ローカル・バッファまたは共用メ
モリあるいはその両方に書き込まれた各データ項目に対
して、複数の状態を維持する。本発明では、コヒーレン
シ制御に中央制御装置を使用せず、コヒーレンシ制御が
必要なデータを格納するローカル・バッファを持つシス
テムにコヒーレンシ制御を分配し、分配した位置を、す
べてのシステムがアクセス可能なキャッシュ・ディレク
トリ項目にリストする。
【0020】
【発明が解決しようとする課題】本発明の主要な目的
は、共用データ・マルチコンピュータ・システムにおい
て、共用キャッシュ(SES)内のデータのページが、
他の共用データ記憶域資源から取り出されたそのページ
の以前のバージョンで重ね書きされないようにする方法
および構造を提供することである。
は、共用データ・マルチコンピュータ・システムにおい
て、共用キャッシュ(SES)内のデータのページが、
他の共用データ記憶域資源から取り出されたそのページ
の以前のバージョンで重ね書きされないようにする方法
および構造を提供することである。
【0021】本発明の重要な利点は、DASDアクセス
用の既知の方法および構造を保持しながら、DASDか
ら取り出され、複数のコンピュータ・システムが共用す
るメモリ(SES)にキャッシュされた、データの保全
性を維持できることである。
用の既知の方法および構造を保持しながら、DASDか
ら取り出され、複数のコンピュータ・システムが共用す
るメモリ(SES)にキャッシュされた、データの保全
性を維持できることである。
【0022】本発明の重要な目的は、共用電子メモリ
(SES)にデータをキャッシュする、マルチシステム
・データ共用複合体の動作方法を提供することである。
(SES)にデータをキャッシュする、マルチシステム
・データ共用複合体の動作方法を提供することである。
【0023】本発明は、複数のオペレーティング・シス
テム(OS)を使用するシスプレックスに関する。シス
プレックス内のどのCPCも、IBMプロセッサ資源/
システム管理(PR/SM)システムなどにより、異な
る複数のOS間でその資源を論理的に区分して、単一の
CPC内で独立した多数のOSを提供することができ
る。したがって、シスプレックスは、その異なるCPC
上で走行するどんな組合せのOSをもつこともあり、た
とえばあるCPCはそれぞれ1つのOSをもち、他のC
PCはそれぞれ互いに独立して走行する複数のOSをも
つ。IBM DB2、DFP、IMS、VSAMなどの
サブシステムを含めて、1つまたは複数のサブシステム
が、どのCPC内のどのOSの下でも走行できる。
テム(OS)を使用するシスプレックスに関する。シス
プレックス内のどのCPCも、IBMプロセッサ資源/
システム管理(PR/SM)システムなどにより、異な
る複数のOS間でその資源を論理的に区分して、単一の
CPC内で独立した多数のOSを提供することができ
る。したがって、シスプレックスは、その異なるCPC
上で走行するどんな組合せのOSをもつこともあり、た
とえばあるCPCはそれぞれ1つのOSをもち、他のC
PCはそれぞれ互いに独立して走行する複数のOSをも
つ。IBM DB2、DFP、IMS、VSAMなどの
サブシステムを含めて、1つまたは複数のサブシステム
が、どのCPC内のどのOSの下でも走行できる。
【0024】同一のデータベース・サブシステム・プロ
グラムの異なるコピーが、異なるCPCで同時に独立し
て走行できる。本発明によれば、これらの異なるプログ
ラムは、データベース内の同一のまたは異なるデータ要
素またはレコードにアクセスできる。これらの要素は、
異なるCPCのMS/ESローカル・キャッシュ(L
C)内に同時に存在可能である。
グラムの異なるコピーが、異なるCPCで同時に独立し
て走行できる。本発明によれば、これらの異なるプログ
ラムは、データベース内の同一のまたは異なるデータ要
素またはレコードにアクセスできる。これらの要素は、
異なるCPCのMS/ESローカル・キャッシュ(L
C)内に同時に存在可能である。
【0025】本発明の主要な目的は、以下のことによっ
て、シスプレックスの性能を大幅に低下させずに、シス
プレックス内の任意のCPCローカル・キャッシュに常
駐するデータ・レコードのコピーに対してコヒーレンス
情報および無効化要求制御を提供することである。
て、シスプレックスの性能を大幅に低下させずに、シス
プレックス内の任意のCPCローカル・キャッシュに常
駐するデータ・レコードのコピーに対してコヒーレンス
情報および無効化要求制御を提供することである。
【0026】1.CPCローカル・キャッシュ内のデー
タにアクセスするトランザクションに対するコヒーレン
ス制御遅延を回避する。
タにアクセスするトランザクションに対するコヒーレン
ス制御遅延を回避する。
【0027】2.コヒーレンス制御用にCPC内でわず
かな処理しか使用しない。
かな処理しか使用しない。
【0028】3.コヒーレンス制御の範囲を、シスプレ
ックス内の、コヒーレンス制御を必要とする可能性のあ
るCPCローカル・キャッシュ・バッファだけに制限す
る。
ックス内の、コヒーレンス制御を必要とする可能性のあ
るCPCローカル・キャッシュ・バッファだけに制限す
る。
【0029】4.ローカル・キャッシュ・バッファの参
照が要求されたとき、SESの要求するコヒーレンス制
御動作をどのCPCでも実行できるようにする。これに
よって、CPC処理の中断が避けられ、要求されたコヒ
ーレンス動作に関係のない作業を行うことができる。
照が要求されたとき、SESの要求するコヒーレンス制
御動作をどのCPCでも実行できるようにする。これに
よって、CPC処理の中断が避けられ、要求されたコヒ
ーレンス動作に関係のない作業を行うことができる。
【0030】マルチシステム・データ共用システムで
は、第1のコンピュータ・システム上で実行するデータ
ベース・システムが、共用キャッシュ内の更新済みペー
ジをキャッシュでき、同時に別のデータベース・システ
ムが、DASDから取り出した同一ページのコピーのキ
ャッシュを試行できる。本発明は、そのような条件を検
出し、ロッキングなどの逐次化機構なしで、DASDか
ら取り出したコピーが入力されないようにする。
は、第1のコンピュータ・システム上で実行するデータ
ベース・システムが、共用キャッシュ内の更新済みペー
ジをキャッシュでき、同時に別のデータベース・システ
ムが、DASDから取り出した同一ページのコピーのキ
ャッシュを試行できる。本発明は、そのような条件を検
出し、ロッキングなどの逐次化機構なしで、DASDか
ら取り出したコピーが入力されないようにする。
【0031】
シスプレックス・ハードウェア構造:図1は、シスプレ
ックス・システムを表している。このシステムは、1つ
以上の任意の数のコンピュータ処理複合体(CPC)を
表す、CPC−1ないしCPC−Mの複数のCPCを備
えている。CPCはすべて、1つまたは複数のSES
(共用電子記憶)装置に接続されている(このうち、1
つのSES装置101を図1に示す)。
ックス・システムを表している。このシステムは、1つ
以上の任意の数のコンピュータ処理複合体(CPC)を
表す、CPC−1ないしCPC−Mの複数のCPCを備
えている。CPCはすべて、1つまたは複数のSES
(共用電子記憶)装置に接続されている(このうち、1
つのSES装置101を図1に示す)。
【0032】各CPCは図2に示すタイプのものであ
り、エンタープライズ・システム体系/390解説
書("Enterprise Systems Architechture(ESA)/
390 Principles of Operations(POP)"に指定さ
れているIBM ESA/390アーキテクチャーに従
って設計された、現在市販中のIBM ES/9000
モデル900のようなマルチプロセッサとすることがで
きる。この解説書は、資料番号SA22−7201−0
0でIBMから入手可能である。各CPCは、1つまた
は複数のオペレーティング・システムを有する。いずれ
かのCPCが複数のオペレーティング・システムを有す
る場合、その資源は、IBM PR/SM機能を使用す
る際、複数のオペレーティング・システム間で論理的に
区分される。システム間チャネル(ISC)が、SES
101と、CPC1ないしCPCMとの間に接続されて
いる。CPCに接続されているISC106−1ないし
106−Mは、CPCのマイクロコード/ハードウェア
の間で信号をやり取りする。
り、エンタープライズ・システム体系/390解説
書("Enterprise Systems Architechture(ESA)/
390 Principles of Operations(POP)"に指定さ
れているIBM ESA/390アーキテクチャーに従
って設計された、現在市販中のIBM ES/9000
モデル900のようなマルチプロセッサとすることがで
きる。この解説書は、資料番号SA22−7201−0
0でIBMから入手可能である。各CPCは、1つまた
は複数のオペレーティング・システムを有する。いずれ
かのCPCが複数のオペレーティング・システムを有す
る場合、その資源は、IBM PR/SM機能を使用す
る際、複数のオペレーティング・システム間で論理的に
区分される。システム間チャネル(ISC)が、SES
101と、CPC1ないしCPCMとの間に接続されて
いる。CPCに接続されているISC106−1ないし
106−Mは、CPCのマイクロコード/ハードウェア
の間で信号をやり取りする。
【0033】シスプレックス内の各CPCは、記憶域階
層で動作する。この階層はたとえば、CPCの各CPU
内の専用高速ハードウェア・キャッシュ(201−1お
よび201−N)と、すべての専用プロセッサ・キャッ
シュにアクセス可能な共用ハードウェア・キャッシュ2
02と、CPC内のすべてのプロセッサが共用する主記
憶装置(中央記憶装置ということもある)(MS)20
4と、MSと関連しているがMSにアドレスできないハ
ードウェア記憶装置(HSA)205を含むことができ
る。ただし、DASDは、シスプレックス内のどのCP
Cもグループ内のどのDASDにもアクセスできるよう
にするDASD制御機構によってグループ分けされてい
る。これを本明細書では、「シスプレックスDASD」
207という用語で呼ぶ。
層で動作する。この階層はたとえば、CPCの各CPU
内の専用高速ハードウェア・キャッシュ(201−1お
よび201−N)と、すべての専用プロセッサ・キャッ
シュにアクセス可能な共用ハードウェア・キャッシュ2
02と、CPC内のすべてのプロセッサが共用する主記
憶装置(中央記憶装置ということもある)(MS)20
4と、MSと関連しているがMSにアドレスできないハ
ードウェア記憶装置(HSA)205を含むことができ
る。ただし、DASDは、シスプレックス内のどのCP
Cもグループ内のどのDASDにもアクセスできるよう
にするDASD制御機構によってグループ分けされてい
る。これを本明細書では、「シスプレックスDASD」
207という用語で呼ぶ。
【0034】本発明に関するかぎり、MS/ES記憶域
の組合せは、CPC内部の単一ランダム・アクセス記憶
装置とみなすことができる。なぜなら、MS内のページ
(4KB単位)は、ESページおよびDASDページで
バックアップされ、かつこれらのページは、プログラム
が「ページイン/ページアウト」や「ページ移動」など
の命令を使用してMS、ES間で迅速にやり取りすれば
スワップ可能であり、それによってESのレコードとM
Sのレコードが同じユーザ動作に属するときそれらを区
別する必要がなくなり、同一のCPCキャッシュ内にあ
るとみなすことができるという概念を使用しているから
である。
の組合せは、CPC内部の単一ランダム・アクセス記憶
装置とみなすことができる。なぜなら、MS内のページ
(4KB単位)は、ESページおよびDASDページで
バックアップされ、かつこれらのページは、プログラム
が「ページイン/ページアウト」や「ページ移動」など
の命令を使用してMS、ES間で迅速にやり取りすれば
スワップ可能であり、それによってESのレコードとM
Sのレコードが同じユーザ動作に属するときそれらを区
別する必要がなくなり、同一のCPCキャッシュ内にあ
るとみなすことができるという概念を使用しているから
である。
【0035】拡張記憶域(ES)206は、MS204
に接続されており、4KBページ単位でアドレスされる
データを格納する。DASDディレクタ207は、ディ
スク記憶装置DASD−1ないしDASD−K上へのデ
ータの格納を制御するためにMS204に接続されてい
る。DASDディレクトリ207は、シンプレックス内
のすべてのCPCと、図のDASDバンク内のすべての
DASDとの間のデータの流れを制御し、シスプレック
ス内の他のCPCが書き込むレコードを含めて、どのC
PCもどのDASD上のどのレコードにもアクセスでき
るようにする。これらの記憶域はそれぞれ、その速度/
容量特性に応じて、図の記憶階層に示す位置に配置され
る。
に接続されており、4KBページ単位でアドレスされる
データを格納する。DASDディレクタ207は、ディ
スク記憶装置DASD−1ないしDASD−K上へのデ
ータの格納を制御するためにMS204に接続されてい
る。DASDディレクトリ207は、シンプレックス内
のすべてのCPCと、図のDASDバンク内のすべての
DASDとの間のデータの流れを制御し、シスプレック
ス内の他のCPCが書き込むレコードを含めて、どのC
PCもどのDASD上のどのレコードにもアクセスでき
るようにする。これらの記憶域はそれぞれ、その速度/
容量特性に応じて、図の記憶階層に示す位置に配置され
る。
【0036】CPC/SES物理接続208は、1端が
当該のCPC内のMS制御装置に接続され、他端がSE
S装置に接続された各チャネルによって実現されてい
る。各チャネル・バスは、直列光ファイバで構成でき
る。このバスは、単一ファイバでもよいが、並列に動作
する複数のファイバから構成しそれらの間にデータを
「ストライプ」(インターリーブ)することもできる。
当該のCPC内のMS制御装置に接続され、他端がSE
S装置に接続された各チャネルによって実現されてい
る。各チャネル・バスは、直列光ファイバで構成でき
る。このバスは、単一ファイバでもよいが、並列に動作
する複数のファイバから構成しそれらの間にデータを
「ストライプ」(インターリーブ)することもできる。
【0037】ハードウェア的な意味において、SES
は、それに接続されたすべてのCPCが共通に使用可能
な大規模なランダム・アクセス・メモリとみなすことが
できる。接続されたCPCは、SESを使用して、共用
データ・レコードおよびファイルを一時的または半永久
的に格納できる。したがって、SESは、SESに付加
されたすべてのCPCに共通の階層レベルを持ち、CP
C内のESレベルにおおよそ該当する、システム内の記
憶階層の一構成要素であるとみなすことができる。
は、それに接続されたすべてのCPCが共通に使用可能
な大規模なランダム・アクセス・メモリとみなすことが
できる。接続されたCPCは、SESを使用して、共用
データ・レコードおよびファイルを一時的または半永久
的に格納できる。したがって、SESは、SESに付加
されたすべてのCPCに共通の階層レベルを持ち、CP
C内のESレベルにおおよそ該当する、システム内の記
憶階層の一構成要素であるとみなすことができる。
【0038】本発明を使用するシスプレックスにおい
て、1つまたは複数のSESエンティティが、シスプレ
ックス内のあらゆるCPCのMS/ESに物理的に接続
できる。シスプレックス内のCPCをすべてSESに接
続しなければならないわけではない。たとえば、あるS
ESを同じプログラミング・サブシステムを稼働する1
つのCPCグループだけに接続し、各CPCグループを
シスプレックス内の異なるSESに接続して、複数のプ
ログラミング・サブシステムを実行することができる。
て、1つまたは複数のSESエンティティが、シスプレ
ックス内のあらゆるCPCのMS/ESに物理的に接続
できる。シスプレックス内のCPCをすべてSESに接
続しなければならないわけではない。たとえば、あるS
ESを同じプログラミング・サブシステムを稼働する1
つのCPCグループだけに接続し、各CPCグループを
シスプレックス内の異なるSESに接続して、複数のプ
ログラミング・サブシステムを実行することができる。
【0039】本発明の基本的特徴は、通常、シスプレッ
クス共通DASDに格納されたデータ用の高速キャッシ
ュとしてSESを使用することである。ただし、CPC
/SES/DASD物理接続が直接階層経路中になくて
もよい。シスプレックス内のどのCPCも、共通DAS
D記憶域からよりもはるかに高速にSESからのレコー
ドにアクセスできる。つまり、SES内では、データ要
素またはレコードに迅速にアクセスでき、トラック間で
のヘッドの移動を待ったり、トラックの回転が要求され
たDASDレコードに達するのを待つなどの、DASD
で見られる電気機械的遅延がない。
クス共通DASDに格納されたデータ用の高速キャッシ
ュとしてSESを使用することである。ただし、CPC
/SES/DASD物理接続が直接階層経路中になくて
もよい。シスプレックス内のどのCPCも、共通DAS
D記憶域からよりもはるかに高速にSESからのレコー
ドにアクセスできる。つまり、SES内では、データ要
素またはレコードに迅速にアクセスでき、トラック間で
のヘッドの移動を待ったり、トラックの回転が要求され
たDASDレコードに達するのを待つなどの、DASD
で見られる電気機械的遅延がない。
【0040】SESは、1つまた複数のプロセッサまた
はマイクロプロセッサを含んでいる。これらのプロセッ
サは、SESに送られるCPCコマンドが提供するメッ
セージ中で受け取ったパラメータの制御下で、SES内
のすべての動作を実行する。SESに格納されたプログ
ラムまたはマイクロプログラムは、SESによって実行
されるものとして記述される、本発明のプロセスを実現
するために実行される。
はマイクロプロセッサを含んでいる。これらのプロセッ
サは、SESに送られるCPCコマンドが提供するメッ
セージ中で受け取ったパラメータの制御下で、SES内
のすべての動作を実行する。SESに格納されたプログ
ラムまたはマイクロプログラムは、SESによって実行
されるものとして記述される、本発明のプロセスを実現
するために実行される。
【0041】SESキャッシュを割り振るための特殊コ
マンドが、設けられている。また、様々なプログラムを
使用する付加CPCグループが共用するデータを当該の
キャッシュに処理させるなどして、同一のSES内で複
数のキャッシュを割り振ることができる。
マンドが、設けられている。また、様々なプログラムを
使用する付加CPCグループが共用するデータを当該の
キャッシュに処理させるなどして、同一のSES内で複
数のキャッシュを割り振ることができる。
【0042】各SESキャッシュは、ディレクトリ10
2とデータ域103とローカル・キャッシュ・レジスタ
104とキャッシュ制御機構105を備えている。キャ
ッシュのデータ域部分を使用しない場合、そのサイズを
ゼロにすることができる。SESキャッシュ内の各有効
ディレクトリ項目には、SESに付加されたCPCのい
ずれかによってSES中に登録されたデータ要素の名前
が格納される。SESは、登録されたデータ要素中のデ
ータのコピーを含むことも含まないこともある。SES
に登録された名前は、シスプレックス内の1つまたは複
数のCPC内のデータ要素の1つまたは複数のコピーの
名前でもある。さらに、このディレクタ名はまた、DA
SDディレクタ207に接続されたDASDバンクのD
ASD−1ないしDASD−Kのうちの1つに格納され
た(あるいは、これから格納される)データ要素のコピ
ーをも識別する。
2とデータ域103とローカル・キャッシュ・レジスタ
104とキャッシュ制御機構105を備えている。キャ
ッシュのデータ域部分を使用しない場合、そのサイズを
ゼロにすることができる。SESキャッシュ内の各有効
ディレクトリ項目には、SESに付加されたCPCのい
ずれかによってSES中に登録されたデータ要素の名前
が格納される。SESは、登録されたデータ要素中のデ
ータのコピーを含むことも含まないこともある。SES
に登録された名前は、シスプレックス内の1つまたは複
数のCPC内のデータ要素の1つまたは複数のコピーの
名前でもある。さらに、このディレクタ名はまた、DA
SDディレクタ207に接続されたDASDバンクのD
ASD−1ないしDASD−Kのうちの1つに格納され
た(あるいは、これから格納される)データ要素のコピ
ーをも識別する。
【0043】データ要素名は、そのデータ要素がSES
に格納されているかどうかと無関係に、SESがデータ
要素のデータ・コヒーレンスを制御するために使用す
る。SESがシスプレックス内のデータ要素のデータ・
コヒーレンスを実現するには、SESにデータ要素名を
登録する必要がある。SESがデータ・コヒーレンスを
実現するのに、SESにデータ要素自体を格納する必要
はない。
に格納されているかどうかと無関係に、SESがデータ
要素のデータ・コヒーレンスを制御するために使用す
る。SESがシスプレックス内のデータ要素のデータ・
コヒーレンスを実現するには、SESにデータ要素名を
登録する必要がある。SESがデータ・コヒーレンスを
実現するのに、SESにデータ要素自体を格納する必要
はない。
【0044】本発明では、様々な中央処理複合体(CP
C)のメモリ内および1つまたは複数の共用電子記憶域
(SES)エンティティ内にプログラム制御式キャッシ
ュ(バッファ)を設ける、キャッシュ手法を使用する。
これらのキャッシュのサイズは、それぞれ異なってもよ
く、キャッシュを含むエンティティのハードウェア構造
を変更せずに変更できる。これらのキャッシュ間でデー
タ・コヒーレンスが維持される。さらに、1組のキャッ
シュが、すべてのCPCまたはSESキャッシュと接続
されたCPC上に常駐できる。データ・コヒーレンス
は、ローカル・キャッシュ作成時に各ローカル・キャッ
シュに関して実行される明示的なローカル・キャッシュ
付加コマンドによってSESキャッシュに付加された、
すべてのローカル・キャッシュの間に維持され、ローカ
ル・キャッシュを切断しないかぎり継続する。ローカル
・キャッシュの数は、時間の経過と共に変えることがで
きる。
C)のメモリ内および1つまたは複数の共用電子記憶域
(SES)エンティティ内にプログラム制御式キャッシ
ュ(バッファ)を設ける、キャッシュ手法を使用する。
これらのキャッシュのサイズは、それぞれ異なってもよ
く、キャッシュを含むエンティティのハードウェア構造
を変更せずに変更できる。これらのキャッシュ間でデー
タ・コヒーレンスが維持される。さらに、1組のキャッ
シュが、すべてのCPCまたはSESキャッシュと接続
されたCPC上に常駐できる。データ・コヒーレンス
は、ローカル・キャッシュ作成時に各ローカル・キャッ
シュに関して実行される明示的なローカル・キャッシュ
付加コマンドによってSESキャッシュに付加された、
すべてのローカル・キャッシュの間に維持され、ローカ
ル・キャッシュを切断しないかぎり継続する。ローカル
・キャッシュの数は、時間の経過と共に変えることがで
きる。
【0045】ローカル・キャッシュ構造体:任意のCP
C内の実行プログラムが、CPCのMS/ESのローカ
ル・キャッシュ内の1つまたは複数の割振り済みローカ
ル・キャッシュ・バッファ(LCB)107A、107
B、および107Cを使用して、CPCによって生成さ
れ、バックアップされ、取り出され、あるいは格納され
た、最近使用されているデータ要素およびレコードを取
り込む。またシスプレックス内の任意のCPCが、その
中央プロセッサおよび入出力プロセッサ上で複数の種類
のプログラム(たとえばDB2とIMS)を同時に実行
させることができる。次に、CPC内のこれらの複数の
実行プログラムは、もっとも最新にアクセスされたデー
タ要素およびレコードが入ったCPCのMS/ES中
に、それ自体のLCBを割り振ることができる。したが
って、様々なLCBの組合せを異なる種類のプログラム
が使用でき、これらのLCBはシスプレックス内の1つ
または複数のCPCのMS/ES内に同時に存在するこ
とができる。「ローカル・キャッシュ」(LC)という
用語は、本明細書では、CPCプログラミング・サブシ
ステムによってセットアップされ使用されるLCBの集
合を指すのに使用する。
C内の実行プログラムが、CPCのMS/ESのローカ
ル・キャッシュ内の1つまたは複数の割振り済みローカ
ル・キャッシュ・バッファ(LCB)107A、107
B、および107Cを使用して、CPCによって生成さ
れ、バックアップされ、取り出され、あるいは格納され
た、最近使用されているデータ要素およびレコードを取
り込む。またシスプレックス内の任意のCPCが、その
中央プロセッサおよび入出力プロセッサ上で複数の種類
のプログラム(たとえばDB2とIMS)を同時に実行
させることができる。次に、CPC内のこれらの複数の
実行プログラムは、もっとも最新にアクセスされたデー
タ要素およびレコードが入ったCPCのMS/ES中
に、それ自体のLCBを割り振ることができる。したが
って、様々なLCBの組合せを異なる種類のプログラム
が使用でき、これらのLCBはシスプレックス内の1つ
または複数のCPCのMS/ES内に同時に存在するこ
とができる。「ローカル・キャッシュ」(LC)という
用語は、本明細書では、CPCプログラミング・サブシ
ステムによってセットアップされ使用されるLCBの集
合を指すのに使用する。
【0046】各LCBの割振りおよびサイズは、CPC
内で使用される当該のそれぞれのプログラムに依存す
る。LCBは、異なるLC内でサイズおよび数が異なっ
てもかまわない。どのローカル・キャッシュ・バッファ
でも、プログラム実行中に異なるサイズに変更できる。
内で使用される当該のそれぞれのプログラムに依存す
る。LCBは、異なるLC内でサイズおよび数が異なっ
てもかまわない。どのローカル・キャッシュ・バッファ
でも、プログラム実行中に異なるサイズに変更できる。
【0047】SESに付加されたローカル・キャッシュ
は、SESに論理的に付加されるとき、オペレーティン
グ・システムがLCに一意に割り当てるローカル・キャ
ッシュ識別子(LCID)によって、SES内で識別さ
れる。LCIDは、SESキャッシュのローカル・キャ
ッシュ制御機構105に保管される。ローカル・キャッ
シュ制御機構は、付加された各ローカル・キャッシュに
関する情報をSESが維持するために使用される。
は、SESに論理的に付加されるとき、オペレーティン
グ・システムがLCに一意に割り当てるローカル・キャ
ッシュ識別子(LCID)によって、SES内で識別さ
れる。LCIDは、SESキャッシュのローカル・キャ
ッシュ制御機構105に保管される。ローカル・キャッ
シュ制御機構は、付加された各ローカル・キャッシュに
関する情報をSESが維持するために使用される。
【0048】本発明は、バッファに格納されたデータへ
のアクセスがプログラミングによって要求されるとき、
各CPCがローカル・キャッシュ・バッファの妥当性を
判定できるように、様々なCPC内のMS/ESバッフ
ァ間で共用されるデータのコヒーレンスを要求する、S
ESの無効化シグナリング制御機構を提供する。ローカ
ル・バッファの初期設定中、プログラムにSESキャッ
シュへのアクセスを許可するために、オペレーティング
・システム・サービスが呼び出される。これらのオペレ
ーティング・システム・サービスは、ローカル・キャッ
シュおよびそのSESキャッシュへの付加を一意に識別
するのに使用されるローカル・キャッシュ識別子を割り
当てる。
のアクセスがプログラミングによって要求されるとき、
各CPCがローカル・キャッシュ・バッファの妥当性を
判定できるように、様々なCPC内のMS/ESバッフ
ァ間で共用されるデータのコヒーレンスを要求する、S
ESの無効化シグナリング制御機構を提供する。ローカ
ル・バッファの初期設定中、プログラムにSESキャッ
シュへのアクセスを許可するために、オペレーティング
・システム・サービスが呼び出される。これらのオペレ
ーティング・システム・サービスは、ローカル・キャッ
シュおよびそのSESキャッシュへの付加を一意に識別
するのに使用されるローカル・キャッシュ識別子を割り
当てる。
【0049】オペレーティング・システム・サービスは
また、CPU命令(ベクトル定義DV)を呼び出して、
ハードウェア・システム域(HSA)内にビット・ベク
トル(コヒーレンス・ベクトル(V)と呼ぶ)108
A、108B、108Cを作成させる。このコヒーレン
ス・ビット・ベクトルを定義する命令が完了すると、ロ
ーカル・キャッシュ・トークン(LCT)が返される。
CPC内の特定のLCと関連する、HSA内の新規コヒ
ーレンス・ベクトル・ビットの位置を表す、各新規コヒ
ーレンス・ベクトル・ビットの新規項目が、HSAテー
ブル(T)209(図2ではHSA205のテーブルT
として示す)に置かれる。ローカル・キャッシュがSE
Sキャッシュに付加され、ローカル・キャッシュ制御機
構105に格納されるとき、オペレーティング・システ
ムによってSESにLCTおよびLCIDが提供され
る。
また、CPU命令(ベクトル定義DV)を呼び出して、
ハードウェア・システム域(HSA)内にビット・ベク
トル(コヒーレンス・ベクトル(V)と呼ぶ)108
A、108B、108Cを作成させる。このコヒーレン
ス・ビット・ベクトルを定義する命令が完了すると、ロ
ーカル・キャッシュ・トークン(LCT)が返される。
CPC内の特定のLCと関連する、HSA内の新規コヒ
ーレンス・ベクトル・ビットの位置を表す、各新規コヒ
ーレンス・ベクトル・ビットの新規項目が、HSAテー
ブル(T)209(図2ではHSA205のテーブルT
として示す)に置かれる。ローカル・キャッシュがSE
Sキャッシュに付加され、ローカル・キャッシュ制御機
構105に格納されるとき、オペレーティング・システ
ムによってSESにLCTおよびLCIDが提供され
る。
【0050】CPCは、そのHSA内のどのベクトルの
サイズをも任意の必要なサイズに変更できる。これは、
CPCがそのプログラマブル・メモリ内の関連するLC
のサイズを変更するときに実行される。
サイズをも任意の必要なサイズに変更できる。これは、
CPCがそのプログラマブル・メモリ内の関連するLC
のサイズを変更するときに実行される。
【0051】ローカル・キャッシュは、そのCPC内
で、それぞれ当該のLCD項目を介してアクセスされ
る、当該のLCBを指すポインタ(アドレス)を含む複
数の項目から成るローカル・キャッシュ・ディレクトリ
(LCD)によって、管理される。どのCPCも、各L
CB中にデータ要素を格納し、データ要素に一意の名前
を割り当てることができる。この名前は、そのLCBに
関連するLCD項目に入れられる。このデータ要素名
は、そのデータ要素のサイズとは無関係に、SESへの
登録時に、SESと通信するためにデータ要素のアドレ
スとして使用される。SESとインターフェースをとる
ために呼び出されるオペレーティング・システム・サー
ビスは、データ項目の名前がSESキャッシュに首尾よ
く登録されたとき、CPU命令(ベクトル項目設定SV
E)を使用して、コヒーレンス・ベクトル・ビットを設
定する。
で、それぞれ当該のLCD項目を介してアクセスされ
る、当該のLCBを指すポインタ(アドレス)を含む複
数の項目から成るローカル・キャッシュ・ディレクトリ
(LCD)によって、管理される。どのCPCも、各L
CB中にデータ要素を格納し、データ要素に一意の名前
を割り当てることができる。この名前は、そのLCBに
関連するLCD項目に入れられる。このデータ要素名
は、そのデータ要素のサイズとは無関係に、SESへの
登録時に、SESと通信するためにデータ要素のアドレ
スとして使用される。SESとインターフェースをとる
ために呼び出されるオペレーティング・システム・サー
ビスは、データ項目の名前がSESキャッシュに首尾よ
く登録されたとき、CPU命令(ベクトル項目設定SV
E)を使用して、コヒーレンス・ベクトル・ビットを設
定する。
【0052】ローカル・キャッシュ・バッファに、シス
プレックス内のCPC間で共用されるデータ要素が格納
されているとき、プログラミングは、コヒーレンシ・ベ
クトルのビットをLCBと関連付ける。コヒーレンシ・
ベクトル内の項目を、ローカル・キャッシュ項目番号
(LCEN)と呼ぶ。各LCD項目は、CPCおよびS
ESがローカル・キャッシュのLCBの区別に使用す
る、当該のローカル・キャッシュ項目番号(LCEN)
をもつ。各LCD項目は、そのLCB内容の有効/無効
状態を示す。
プレックス内のCPC間で共用されるデータ要素が格納
されているとき、プログラミングは、コヒーレンシ・ベ
クトルのビットをLCBと関連付ける。コヒーレンシ・
ベクトル内の項目を、ローカル・キャッシュ項目番号
(LCEN)と呼ぶ。各LCD項目は、CPCおよびS
ESがローカル・キャッシュのLCBの区別に使用す
る、当該のローカル・キャッシュ項目番号(LCEN)
をもつ。各LCD項目は、そのLCB内容の有効/無効
状態を示す。
【0053】CPCは、MS204およびHSA205
の記憶制御装置(図示せず)を介してSESに物理的に
接続されている。この記憶制御装置は、付加されたSE
Sからチャネル(図2における208および図1におけ
る106−1ないし106−M)によって伝送されるL
CT値およびLCEN値によって、HSA中のベクトル
・ビット位置にアクセスするための、HSA205への
マイクロコード・アドレス可能性を有する。HSA20
5内のテーブル(図2の209のT)は、チャネルから
受け取ったLCT/LCEN値を、HSA内の対応する
コヒーレンス・ベクトル・ビット位置に変換する。
の記憶制御装置(図示せず)を介してSESに物理的に
接続されている。この記憶制御装置は、付加されたSE
Sからチャネル(図2における208および図1におけ
る106−1ないし106−M)によって伝送されるL
CT値およびLCEN値によって、HSA中のベクトル
・ビット位置にアクセスするための、HSA205への
マイクロコード・アドレス可能性を有する。HSA20
5内のテーブル(図2の209のT)は、チャネルから
受け取ったLCT/LCEN値を、HSA内の対応する
コヒーレンス・ベクトル・ビット位置に変換する。
【0054】ローカル・キャッシュ・コヒーレンシ:本
発明は、CPC内の様々なLCB中にあるデータ要素の
複数のコピーが同時に存在するとき、シスプレックス・
データの複数バージョンによる汚れを防止する。すべて
のCPCがレコードの読取りだけを行うかぎり、それぞ
れのLCB中であるレコードの複数のコピーが許され
る。第2のコピーが変更されずに任意の他のLCB中に
同時に存在できるとき、任意のLCB中でデータ要素が
変更されると、汚れが発生する。これは、同じデータ要
素の異なるバージョンが2つ存在するからである。この
場合、第2のコピーに加えられた変更が第1のコピーに
加えられた変更と累積されず、新規バージョンの1つを
DASDに戻して格納することによってコミットしない
かぎり、更新されていない共通DASD内のコピーも含
めて、すべてのコピーが誤ったものになる。
発明は、CPC内の様々なLCB中にあるデータ要素の
複数のコピーが同時に存在するとき、シスプレックス・
データの複数バージョンによる汚れを防止する。すべて
のCPCがレコードの読取りだけを行うかぎり、それぞ
れのLCB中であるレコードの複数のコピーが許され
る。第2のコピーが変更されずに任意の他のLCB中に
同時に存在できるとき、任意のLCB中でデータ要素が
変更されると、汚れが発生する。これは、同じデータ要
素の異なるバージョンが2つ存在するからである。この
場合、第2のコピーに加えられた変更が第1のコピーに
加えられた変更と累積されず、新規バージョンの1つを
DASDに戻して格納することによってコミットしない
かぎり、更新されていない共通DASD内のコピーも含
めて、すべてのコピーが誤ったものになる。
【0055】この複数バージョンによるデータの汚れ
は、変更された1つのLCBコピーを除き、すべてのL
CBコピーが無効にされる場合は回避できる。その場
合、残った1つのコピーが、すべての変更を受け取り、
任意のCPCに存在するデータ要素の最新バージョンを
表す。なぜなら、そのコピーだけが任意の変更を受け取
り、そのコピーだけが共通DASDに戻して格納したと
き、システム内のレコードの最新のコピーを表すことが
できるからである。
は、変更された1つのLCBコピーを除き、すべてのL
CBコピーが無効にされる場合は回避できる。その場
合、残った1つのコピーが、すべての変更を受け取り、
任意のCPCに存在するデータ要素の最新バージョンを
表す。なぜなら、そのコピーだけが任意の変更を受け取
り、そのコピーだけが共通DASDに戻して格納したと
き、システム内のレコードの最新のコピーを表すことが
できるからである。
【0056】複数バージョンによる汚れの回避を本明細
書では「データ・コヒーレンスの維持」と呼ぶ。変更さ
れるコピーを除き、レコードの未解決のすべてのコピー
を無効化することが、レコード内での複数バージョンに
よる汚れを防ぐための、一般に受け入れられた解決法で
ある。
書では「データ・コヒーレンスの維持」と呼ぶ。変更さ
れるコピーを除き、レコードの未解決のすべてのコピー
を無効化することが、レコード内での複数バージョンに
よる汚れを防ぐための、一般に受け入れられた解決法で
ある。
【0057】複数バージョンによる汚れを防止するた
め、本発明では、どのCPCでも、シスプレックス共通
DASD内のレコードにアクセス(読取りまたは書込
み)したい場合、まずそのレコードをSESディレクト
リに登録し、好ましくは、SES内にこのレコードが存
在する場合、そこからそのレコードを読み取ることを必
要とする。
め、本発明では、どのCPCでも、シスプレックス共通
DASD内のレコードにアクセス(読取りまたは書込
み)したい場合、まずそのレコードをSESディレクト
リに登録し、好ましくは、SES内にこのレコードが存
在する場合、そこからそのレコードを読み取ることを必
要とする。
【0058】各CPC内のプログラムは、それに組み込
まれた任意の方式で、CPC内だけで処理されるデータ
のコヒーレンシを維持するように動作する。この方式
は、本発明とは独立して事前にプログラム内に設けてお
くことができる。したがって、本発明によりシスプレッ
クス内に設けられるデータ・コヒーレンス制御機構は、
各CPC内に事前に存在するデータ・コヒーレンス制御
機構に追加されるものである。すなわち、本発明では、
追加のデータ・コヒーレンス制御機構を使用する。
まれた任意の方式で、CPC内だけで処理されるデータ
のコヒーレンシを維持するように動作する。この方式
は、本発明とは独立して事前にプログラム内に設けてお
くことができる。したがって、本発明によりシスプレッ
クス内に設けられるデータ・コヒーレンス制御機構は、
各CPC内に事前に存在するデータ・コヒーレンス制御
機構に追加されるものである。すなわち、本発明では、
追加のデータ・コヒーレンス制御機構を使用する。
【0059】本発明に関するかぎり、各CPCの重要な
特徴は、そのローカル・キャッシュ(LC)とコヒーレ
ンシ・ベクトル(V)の関係である。図1において、C
PC−1は、それぞれ関連するコヒーレンシ・ベクトル
V1およびV2を有するローカル・キャッシュLC−1
およびLC−2を備えている。LC−1がN個のバッフ
ァ項目(つまりLCB−0ないしLCB−N)を有し、
それらのバッファ項目がそれぞれコヒーレンシ・ベクト
ルV1ビットの0ないしNと関連付けられていることに
留意されたい。また、LC−2はK個のバッファ項目
(つまりLCB−0ないしLCB−K)を有し、それら
のバッファ項目がそれぞれV2ビットの0ないしKと関
連付けられていることにも留意されたい。CPC−M
は、単一のLC(1)を備え、LC(1)は、V(1)
コヒーレンシ・ビット0ないしLと関連するLCB−0
ないしLCB−Lを有する。
特徴は、そのローカル・キャッシュ(LC)とコヒーレ
ンシ・ベクトル(V)の関係である。図1において、C
PC−1は、それぞれ関連するコヒーレンシ・ベクトル
V1およびV2を有するローカル・キャッシュLC−1
およびLC−2を備えている。LC−1がN個のバッフ
ァ項目(つまりLCB−0ないしLCB−N)を有し、
それらのバッファ項目がそれぞれコヒーレンシ・ベクト
ルV1ビットの0ないしNと関連付けられていることに
留意されたい。また、LC−2はK個のバッファ項目
(つまりLCB−0ないしLCB−K)を有し、それら
のバッファ項目がそれぞれV2ビットの0ないしKと関
連付けられていることにも留意されたい。CPC−M
は、単一のLC(1)を備え、LC(1)は、V(1)
コヒーレンシ・ビット0ないしLと関連するLCB−0
ないしLCB−Lを有する。
【0060】異なる位置にあるその多数のコピー間に同
一のレコードの異なるバージョンが存在し得る。最新バ
ージョンは、(SESにコピーを書き込む場合)SE
S、およびレコードに最後の変更を加えたCPC中に存
在する。一般に、DASDコピーはもっとも古いバージ
ョンである。なぜなら、電気機械式DASDへのアクセ
スが低速なため、このコピーが最後に更新されるからで
ある。
一のレコードの異なるバージョンが存在し得る。最新バ
ージョンは、(SESにコピーを書き込む場合)SE
S、およびレコードに最後の変更を加えたCPC中に存
在する。一般に、DASDコピーはもっとも古いバージ
ョンである。なぜなら、電気機械式DASDへのアクセ
スが低速なため、このコピーが最後に更新されるからで
ある。
【0061】SESは、SESとCPC間の通信チャネ
ルを介してこれらのベクトル・ビットを無効状態に設定
することしかできない。SESが任意のコヒーレンス・
ビットをCPCのHSA中で無効状態に設定するとき、
CPCプログラミングはそのような設定が実行されても
妨害を受けない。CPCプログラミングは、SESが任
意のコヒーレンス・ベクトル・ビットを設定したために
中断されることなく、継続する。ベクトル・ビットの状
態をいつテストすべきかを決定し、無効化が示されてい
るかどうかを判定するのはCPCの責任である。この動
作方式では、CPCがコヒーレンシを必要としない状況
である場合、CPCがシスプレックス・コヒーレンシ制
御機構を使用しないことさえ可能である。
ルを介してこれらのベクトル・ビットを無効状態に設定
することしかできない。SESが任意のコヒーレンス・
ビットをCPCのHSA中で無効状態に設定するとき、
CPCプログラミングはそのような設定が実行されても
妨害を受けない。CPCプログラミングは、SESが任
意のコヒーレンス・ベクトル・ビットを設定したために
中断されることなく、継続する。ベクトル・ビットの状
態をいつテストすべきかを決定し、無効化が示されてい
るかどうかを判定するのはCPCの責任である。この動
作方式では、CPCがコヒーレンシを必要としない状況
である場合、CPCがシスプレックス・コヒーレンシ制
御機構を使用しないことさえ可能である。
【0062】プログラミングで、ローカル・キャッシュ
・バッファ内のデータを使用すると決定するとき、CP
Cは、「ベクトル項目テスト」(test vecto
rentry)(TVE)CPU命令を使って、CPC
内のそのLCBのデータ・コヒーレンシ・ビットの現状
態をテストする。TVE命令は、指定されたLCTおよ
びLCENに基づいてHSAメモリ領域中でこのビット
を見つけるマイクロコードを呼び出し、その状態をテス
トするように動作する。すると、TVEマイクロコード
は、対応するLCB有効/無効状態に適合できるCPC
プログラム中の命令をその後に実行することにより、使
用される命令の条件コード(CC)に命令実行の結果を
記録する。
・バッファ内のデータを使用すると決定するとき、CP
Cは、「ベクトル項目テスト」(test vecto
rentry)(TVE)CPU命令を使って、CPC
内のそのLCBのデータ・コヒーレンシ・ビットの現状
態をテストする。TVE命令は、指定されたLCTおよ
びLCENに基づいてHSAメモリ領域中でこのビット
を見つけるマイクロコードを呼び出し、その状態をテス
トするように動作する。すると、TVEマイクロコード
は、対応するLCB有効/無効状態に適合できるCPC
プログラム中の命令をその後に実行することにより、使
用される命令の条件コード(CC)に命令実行の結果を
記録する。
【0063】CPCオペレーティング・システムは、マ
イクロコード/ハードウェアを活動化してビット設定を
実行するCPC命令(ベクトル項目設定SVE)によ
り、任意の時間にベクトル・ビットの状態を有効設定か
無効設定のいずれかに設定できる。
イクロコード/ハードウェアを活動化してビット設定を
実行するCPC命令(ベクトル項目設定SVE)によ
り、任意の時間にベクトル・ビットの状態を有効設定か
無効設定のいずれかに設定できる。
【0064】SESのデータをキャッシュするための非
ブロッキング逐次化:マルチシステム・データ共用複合
体内の共用キャッシュでは、データのブロックをキャッ
シュに挿入する際に一貫性を保証するための高レベル・
ロッキングは必要でない。「条件付き書込み」手順は、
キャッシュおよびキャッシュ・ディレクトリにデータ・
ブロックを挿入するときに使用される。このキャッシュ
・ディレクトリは、データ・ブロックに対して最初の読
取り要求が発行されるとキャッシュ・ミスになるとき、
データ・ブロックの「所有権」の追跡を始める。最初の
キャッシュ・ミス時に、キャッシュ・ディレクトリが更
新されて、要求されたデータ・ブロックがそこに入り、
要求側コンピュータ・システムがそのブロックの正しい
コピーを有していると識別される。要求側コンピュータ
・システムは、読取り要求に応答してキャッシュ・ミス
表示を受け取ると、データ・ブロックを、キャッシュに
入れるためにDASDから取り出す。DASDから取り
出したデータ・ブロックをキャッシュに入れることは、
条件付き書込み動作によって行う。条件付き書込み動作
において、キャッシュ・ディレクトリは、コンピュータ
・システムがDASDから取り出したページを保持して
いるかどうかチェックされ、そのコンピュータ・システ
ムが依然としてページの現行コピーを有しているとキャ
ッシュ・ディレクトリに記録されている場合、その条件
付き書込み動作が受諾され、キャッシュにページが挿入
される。要求を満足させるための条件付き書込み要求を
発行するコンピュータ・システムの能力を無効にできる
のは、識別されたデータ・ブロックの更新済みバージョ
ンをキャッシュに入れる、別のコンピュータ・システム
からの書込み動作、または割り当てられ再使用されてい
るディレクトリ項目を用いる場合だけである。
ブロッキング逐次化:マルチシステム・データ共用複合
体内の共用キャッシュでは、データのブロックをキャッ
シュに挿入する際に一貫性を保証するための高レベル・
ロッキングは必要でない。「条件付き書込み」手順は、
キャッシュおよびキャッシュ・ディレクトリにデータ・
ブロックを挿入するときに使用される。このキャッシュ
・ディレクトリは、データ・ブロックに対して最初の読
取り要求が発行されるとキャッシュ・ミスになるとき、
データ・ブロックの「所有権」の追跡を始める。最初の
キャッシュ・ミス時に、キャッシュ・ディレクトリが更
新されて、要求されたデータ・ブロックがそこに入り、
要求側コンピュータ・システムがそのブロックの正しい
コピーを有していると識別される。要求側コンピュータ
・システムは、読取り要求に応答してキャッシュ・ミス
表示を受け取ると、データ・ブロックを、キャッシュに
入れるためにDASDから取り出す。DASDから取り
出したデータ・ブロックをキャッシュに入れることは、
条件付き書込み動作によって行う。条件付き書込み動作
において、キャッシュ・ディレクトリは、コンピュータ
・システムがDASDから取り出したページを保持して
いるかどうかチェックされ、そのコンピュータ・システ
ムが依然としてページの現行コピーを有しているとキャ
ッシュ・ディレクトリに記録されている場合、その条件
付き書込み動作が受諾され、キャッシュにページが挿入
される。要求を満足させるための条件付き書込み要求を
発行するコンピュータ・システムの能力を無効にできる
のは、識別されたデータ・ブロックの更新済みバージョ
ンをキャッシュに入れる、別のコンピュータ・システム
からの書込み動作、または割り当てられ再使用されてい
るディレクトリ項目を用いる場合だけである。
【0065】SES構造:SESキャッシュは、データ
域要素の集合、ディレクトリ、ローカル・キャッシュ・
レジスタ、およびローカル・キャッシュ制御機構から成
る、SES内の構造体である。SESキャッシュ構造体
は、CPC間で共用されるデータにアクセスするプログ
ラムが、ローカル側でキャッシュされたデータ項目のコ
ピーに関してコヒーレンシおよび保全性を必要とする場
合、それらのプログラムの要求に応じて作成される。
域要素の集合、ディレクトリ、ローカル・キャッシュ・
レジスタ、およびローカル・キャッシュ制御機構から成
る、SES内の構造体である。SESキャッシュ構造体
は、CPC間で共用されるデータにアクセスするプログ
ラムが、ローカル側でキャッシュされたデータ項目のコ
ピーに関してコヒーレンシおよび保全性を必要とする場
合、それらのプログラムの要求に応じて作成される。
【0066】SESディレクトリ:SESキャッシュ・
ディレクトリは、SESコヒーレンシ制御を確保するた
めのSES装置の必須構成要素である。SESデータ域
にSESキャッシュを設けると、シスプレックス性能が
強化される。しかし、これは任意選択である。SESデ
ータ域がないと、シスプレックス内のデータ・レコード
がシスプレックスDASDからしかアクセス可能になら
ない。この場合、データベース・ソフトウェアの動作
は、SESデータ域内の共用レコードへの高速アクセス
で提供される性能を失うことになる。(SESディレク
トリ項目と関連する)SESローカル・キャッシュ・レ
ジスタは依然として、シスプレックス内のどのCPC
LCBが、共用データ要素のコピーを持っているかを識
別する。
ディレクトリは、SESコヒーレンシ制御を確保するた
めのSES装置の必須構成要素である。SESデータ域
にSESキャッシュを設けると、シスプレックス性能が
強化される。しかし、これは任意選択である。SESデ
ータ域がないと、シスプレックス内のデータ・レコード
がシスプレックスDASDからしかアクセス可能になら
ない。この場合、データベース・ソフトウェアの動作
は、SESデータ域内の共用レコードへの高速アクセス
で提供される性能を失うことになる。(SESディレク
トリ項目と関連する)SESローカル・キャッシュ・レ
ジスタは依然として、シスプレックス内のどのCPC
LCBが、共用データ要素のコピーを持っているかを識
別する。
【0067】SESローカル・キャッシュ・レジスタ:
ローカル・キャッシュ・レジスタの諸項目は、関連する
ディレクトリ項目で識別されるデータ要素のコピーが入
った付加ローカル・キャッシュを識別する。ローカル・
キャッシュ・レジスタの各項目は、ローカル・キャッシ
ュに関連するキャッシュ・コヒーレンシ・ベクトルと、
ローカル側でキャッシュされたデータ要素のコピーの妥
当性を表すのに使用されるコヒーレンシ・ベクトル内の
ローカル・キャッシュ項目とを見つけるのに十分な情報
を提供する。
ローカル・キャッシュ・レジスタの諸項目は、関連する
ディレクトリ項目で識別されるデータ要素のコピーが入
った付加ローカル・キャッシュを識別する。ローカル・
キャッシュ・レジスタの各項目は、ローカル・キャッシ
ュに関連するキャッシュ・コヒーレンシ・ベクトルと、
ローカル側でキャッシュされたデータ要素のコピーの妥
当性を表すのに使用されるコヒーレンシ・ベクトル内の
ローカル・キャッシュ項目とを見つけるのに十分な情報
を提供する。
【0068】SESコマンド処理:読取り及び登録(r
ead and register)コマンドならびに
書込み及び登録(write and registe
r)コマンドを含むSESコマンドは、ローカル側でキ
ャッシュされたデータ要素のコピーをSESディレクト
リに登録させる。正常な登録が完了すると、ローカル・
キャッシュ・レジスタは、ローカル側でキャッシュされ
たデータ要素のコピーを見つけるのに十分な情報を備え
ており、ローカル・キャッシュに関連するコヒーレンシ
・ベクトルの位置に関するCPC情報を提供し、プログ
ラムがローカル・キャッシュ・バッファの妥当性を表す
ために使用する、コヒーレンシ・ベクトル内のビットを
識別する。
ead and register)コマンドならびに
書込み及び登録(write and registe
r)コマンドを含むSESコマンドは、ローカル側でキ
ャッシュされたデータ要素のコピーをSESディレクト
リに登録させる。正常な登録が完了すると、ローカル・
キャッシュ・レジスタは、ローカル側でキャッシュされ
たデータ要素のコピーを見つけるのに十分な情報を備え
ており、ローカル・キャッシュに関連するコヒーレンシ
・ベクトルの位置に関するCPC情報を提供し、プログ
ラムがローカル・キャッシュ・バッファの妥当性を表す
ために使用する、コヒーレンシ・ベクトル内のビットを
識別する。
【0069】SESコマンド処理は、プログラムがロー
カル・キャッシュ・データ項目の妥当性を表すために使
用する、コヒーレンシ・ベクトル内のビットを無効化さ
せる。登録時書込み(write when regi
stered)コマンド、書込み及び登録コマンド、補
足コピー無効化(invalidate comple
met copies)コマンド、名前無効化(inv
alidate name)コマンドは、相互無効化処
理を実行させる。
カル・キャッシュ・データ項目の妥当性を表すために使
用する、コヒーレンシ・ベクトル内のビットを無効化さ
せる。登録時書込み(write when regi
stered)コマンド、書込み及び登録コマンド、補
足コピー無効化(invalidate comple
met copies)コマンド、名前無効化(inv
alidate name)コマンドは、相互無効化処
理を実行させる。
【0070】処理フローの概要:データ要素名は、デー
タ要素をSESに格納するかどうかとは無関係に、SE
Sがデータ要素のデータ・コヒーレンスを制御するため
に使用する。SES内のキャッシュ・ディレクトリにデ
ータ要素名を割り当て、ディレクトリ項目に関連するロ
ーカル・キャッシュ・レジスタ(LCR)にデータ要素
の各ローカル・コピーを登録して、SESがシスプレッ
クス内のデータ要素のデータ・コヒーレンスを提供でき
るようにする必要がある。SESがデータ・コヒーレン
スを提供するのに、SESにデータ要素自体を格納する
必要はないが、CPCがデータの各ローカル・コピーを
登録する必要がある。
タ要素をSESに格納するかどうかとは無関係に、SE
Sがデータ要素のデータ・コヒーレンスを制御するため
に使用する。SES内のキャッシュ・ディレクトリにデ
ータ要素名を割り当て、ディレクトリ項目に関連するロ
ーカル・キャッシュ・レジスタ(LCR)にデータ要素
の各ローカル・コピーを登録して、SESがシスプレッ
クス内のデータ要素のデータ・コヒーレンスを提供でき
るようにする必要がある。SESがデータ・コヒーレン
スを提供するのに、SESにデータ要素自体を格納する
必要はないが、CPCがデータの各ローカル・コピーを
登録する必要がある。
【0071】CPCは、SESにデータ要素がキャッシ
ュされているかどうか知り、そのローカル・コピーを登
録するために、「読取り及び登録」(RAR)コマンド
を使用できる。RARコマンドは、SESディレクトリ
を、要求されたレコード名の割当てがあるかどうかチェ
ックし、関連するローカル・キャッシュ・レジスタにロ
ーカル・コピーを登録する。SESは、SESにデータ
要素がキャッシュされているかどうか要求側CPCに報
告し、キャッシュされているときはデータ要素を返す。
ュされているかどうか知り、そのローカル・コピーを登
録するために、「読取り及び登録」(RAR)コマンド
を使用できる。RARコマンドは、SESディレクトリ
を、要求されたレコード名の割当てがあるかどうかチェ
ックし、関連するローカル・キャッシュ・レジスタにロ
ーカル・コピーを登録する。SESは、SESにデータ
要素がキャッシュされているかどうか要求側CPCに報
告し、キャッシュされているときはデータ要素を返す。
【0072】SESキャッシュがデータ要素の名前を割
り当てられていないことをPARコマンドが知ると、S
ESはディレクトリ項目を割り当て、関連するローカル
・キャッシュ・レジスタにローカル・コピーを登録でき
る。SESは、データ要素がキャッシュされていなかっ
たことを要求側CPCに報告する。これで、CPCはシ
スプレックスDASDに読取り(write)コマンド
を発行し、CPCが指定するLCBに、シスプレックス
DASDに保存されていたコピーを読み込む。
り当てられていないことをPARコマンドが知ると、S
ESはディレクトリ項目を割り当て、関連するローカル
・キャッシュ・レジスタにローカル・コピーを登録でき
る。SESは、データ要素がキャッシュされていなかっ
たことを要求側CPCに報告する。これで、CPCはシ
スプレックスDASDに読取り(write)コマンド
を発行し、CPCが指定するLCBに、シスプレックス
DASDに保存されていたコピーを読み込む。
【0073】CPCは、新規レコードを作成する場合、
「書込み及び登録」(WAR)コマンドを使用して、ロ
ーカル・キャッシュ・レジスタにローカル・コピーを登
録すると共に、ディレクトリ項目のデータ域にデータ要
素を書き込むことができる。
「書込み及び登録」(WAR)コマンドを使用して、ロ
ーカル・キャッシュ・レジスタにローカル・コピーを登
録すると共に、ディレクトリ項目のデータ域にデータ要
素を書き込むことができる。
【0074】CPCは、古いデータ要素を変更(更新)
する場合、「登録時書込み」(WWR)コマンドを使う
必要がある。WWRは、SESディレクトリで、CPC
のデータ要素のローカル・コピーの登録があるかどうか
チェックする。登録が見つかった場合にかぎり、項目に
該当するSESキャッシュ位置にデータ要素が書き込ま
れる。SESは、ディレクトリ変更ビットをCPCで指
定されている変更標識に等しく設定する。
する場合、「登録時書込み」(WWR)コマンドを使う
必要がある。WWRは、SESディレクトリで、CPC
のデータ要素のローカル・コピーの登録があるかどうか
チェックする。登録が見つかった場合にかぎり、項目に
該当するSESキャッシュ位置にデータ要素が書き込ま
れる。SESは、ディレクトリ変更ビットをCPCで指
定されている変更標識に等しく設定する。
【0075】各RARコマンドまたはWARコマンドを
SESが受け取ると、SESは、コマンドでアクセスさ
れるそれぞれのSESキャッシュ・ディレクトリ項目に
関連するローカル・キャッシュ・レジスタに、要求側C
PCローカル・キャッシュ項目番号(LCEN)を登録
する。SES LCRは、SESのデータ要素にアクセ
スしたすべてのLCのLCENを記録する。SESは、
このLCRデータを使用して、あるデータ要素を持つL
C内のそのデータ要素のコピーの一部またはすべてを無
効化する。どの特定のローカル・キャッシュにデータ要
素のコピーが入っているか記録すると、SESはデータ
要素のコピーが入っていないローカル・キャッシュに無
効化要求信号を送るのを避けることができる。
SESが受け取ると、SESは、コマンドでアクセスさ
れるそれぞれのSESキャッシュ・ディレクトリ項目に
関連するローカル・キャッシュ・レジスタに、要求側C
PCローカル・キャッシュ項目番号(LCEN)を登録
する。SES LCRは、SESのデータ要素にアクセ
スしたすべてのLCのLCENを記録する。SESは、
このLCRデータを使用して、あるデータ要素を持つL
C内のそのデータ要素のコピーの一部またはすべてを無
効化する。どの特定のローカル・キャッシュにデータ要
素のコピーが入っているか記録すると、SESはデータ
要素のコピーが入っていないローカル・キャッシュに無
効化要求信号を送るのを避けることができる。
【0076】SESは、ベクトルおよびその無効状態に
設定されるビットを識別するLCT値およびLCEN値
を指定することにより、チャネル上でCPCに「相互無
効化(cross invalidate)コマンド」
を送って、付加LCに無効化要求を出す。送られるLC
T/LCEN値は、ローカル・キャッシュ制御機構10
5およびローカル・キャッシュ・レジスタから取り出し
た情報によるものである。
設定されるビットを識別するLCT値およびLCEN値
を指定することにより、チャネル上でCPCに「相互無
効化(cross invalidate)コマンド」
を送って、付加LCに無効化要求を出す。送られるLC
T/LCEN値は、ローカル・キャッシュ制御機構10
5およびローカル・キャッシュ・レジスタから取り出し
た情報によるものである。
【0077】SESキャッシュにデータ要素を格納して
あり、そのデータ要素がSESに登録されているデータ
要素の現行コピーと異なっていることを書込み要求が示
すとき、SESは無効化処理を実行する。
あり、そのデータ要素がSESに登録されているデータ
要素の現行コピーと異なっていることを書込み要求が示
すとき、SESは無効化処理を実行する。
【0078】SESに「補足コピー無効化」(ICC)
コマンドが発行されると、SESは、ローカル・キャッ
シュ・レジスタ中で、参照されるデータ要素のコピーを
現在持つすべてのローカル・キャッシュの位置を探し、
それらのCPCに無効化要求を送る。ICCコマンド
は、SESにはレコードが格納されていず、DASDだ
けに格納されており、DASDに変更済みデータ要素を
コミット(格納)した後にICCコマンドを使用する場
合、特に役立つ。
コマンドが発行されると、SESは、ローカル・キャッ
シュ・レジスタ中で、参照されるデータ要素のコピーを
現在持つすべてのローカル・キャッシュの位置を探し、
それらのCPCに無効化要求を送る。ICCコマンド
は、SESにはレコードが格納されていず、DASDだ
けに格納されており、DASDに変更済みデータ要素を
コミット(格納)した後にICCコマンドを使用する場
合、特に役立つ。
【0079】SES使用およびコヒーレンシの維持に使
用するもう1つのコマンドは「名前無効化」(IN)コ
マンドである。これは、SESからデータ要素をパージ
したいCPCによって、データ要素名と共にSESに送
られる。SESは、ディレクトリ中でそのデータ要素名
を探し、データ要素のコピーを現在持っているすべての
ローカル・キャッシュの位置を見つける。次に、SES
は、コピーが入ったLCBを持つCPCに無効化要求を
送る。要求されたすべてのCPCから応答を受け取る
と、SESは、ディレクトリからデータ要素名を削除
し、LCRからローカル・コピーの登録を取り消す。
用するもう1つのコマンドは「名前無効化」(IN)コ
マンドである。これは、SESからデータ要素をパージ
したいCPCによって、データ要素名と共にSESに送
られる。SESは、ディレクトリ中でそのデータ要素名
を探し、データ要素のコピーを現在持っているすべての
ローカル・キャッシュの位置を見つける。次に、SES
は、コピーが入ったLCBを持つCPCに無効化要求を
送る。要求されたすべてのCPCから応答を受け取る
と、SESは、ディレクトリからデータ要素名を削除
し、LCRからローカル・コピーの登録を取り消す。
【0080】ローカル・キャッシュ制御機構の以下の例
では、LCID値をテーブルの始めからの索引として使
用し、LCに関連するLCTと、ローカル・キャッシュ
が存在するシステムの識別子と、さらに「相互無効化」
コマンドを発行する必要があるチャネル・パスの集合と
を使用する。
では、LCID値をテーブルの始めからの索引として使
用し、LCに関連するLCTと、ローカル・キャッシュ
が存在するシステムの識別子と、さらに「相互無効化」
コマンドを発行する必要があるチャネル・パスの集合と
を使用する。
【0081】図6に示す例において、「A」という名前
のデータ要素がSESキャッシュに登録されている。デ
ータ要素「A」へのアクセスを制御するデータ・マネー
ジャの3つのインスタンスが、SESキャッシュにロー
カル・キャッシュを接続している。オペレーティング・
システムは、CPC1上で実行するデータ・マネージャ
のインスタンスにLCID1を、CPC2上で実行する
データ・マネージャのインスタンスにLCID2を、C
PC3上で実行するデータ・マネージャのインスタンス
にLCID3を割り当てている。データ要素「A」は、
LCID1を持つデータ・マネージャのローカル・キャ
ッシュに存在し、1のLCEN値を割り当てられている
(601Aおよび602A)。データ要素「A」は、L
CID2を持つデータ・マネージャのローカル・キャッ
シュにも存在し、5のLCEN値を割り当てられている
(601Bおよび602B)。データ要素「A」は、L
CID3を持つデータ・マネージャのローカル・キャッ
シュにも存在し、3のLCEN値を割り当てられている
(601Cおよび602C)。LCEN値および有効な
フィールドは603のローカル・キャッシュ・レジスタ
(LCR)に見られる。また、SESキャッシュにロー
カル・キャッシュを接続したオペレーティング・システ
ム・サービスおよびベクトル定義(DV)CPU命令を
使用した結果、ローカル・キャッシュを接続したときに
(604)、ローカル・キャッシュ・トークン(LC
T)が、ローカル・キャッシュに割り当てられ、SES
に送られている。CPC1上のLCID1にはLCT5
が、CPC2上のLCID2にはLCT1が、CPC3
上のLCID3にはLCT3が割り当てられている。こ
れは単純な例である。各CPC上のローカル・キャッシ
ュを1つだけにしたり、オペレーティング・システムが
割り当てるLCID値と、それらのLCID値を割り当
てられたローカル・キャッシュが存在するCPCとが相
関関係を持つ必要はない。
のデータ要素がSESキャッシュに登録されている。デ
ータ要素「A」へのアクセスを制御するデータ・マネー
ジャの3つのインスタンスが、SESキャッシュにロー
カル・キャッシュを接続している。オペレーティング・
システムは、CPC1上で実行するデータ・マネージャ
のインスタンスにLCID1を、CPC2上で実行する
データ・マネージャのインスタンスにLCID2を、C
PC3上で実行するデータ・マネージャのインスタンス
にLCID3を割り当てている。データ要素「A」は、
LCID1を持つデータ・マネージャのローカル・キャ
ッシュに存在し、1のLCEN値を割り当てられている
(601Aおよび602A)。データ要素「A」は、L
CID2を持つデータ・マネージャのローカル・キャッ
シュにも存在し、5のLCEN値を割り当てられている
(601Bおよび602B)。データ要素「A」は、L
CID3を持つデータ・マネージャのローカル・キャッ
シュにも存在し、3のLCEN値を割り当てられている
(601Cおよび602C)。LCEN値および有効な
フィールドは603のローカル・キャッシュ・レジスタ
(LCR)に見られる。また、SESキャッシュにロー
カル・キャッシュを接続したオペレーティング・システ
ム・サービスおよびベクトル定義(DV)CPU命令を
使用した結果、ローカル・キャッシュを接続したときに
(604)、ローカル・キャッシュ・トークン(LC
T)が、ローカル・キャッシュに割り当てられ、SES
に送られている。CPC1上のLCID1にはLCT5
が、CPC2上のLCID2にはLCT1が、CPC3
上のLCID3にはLCT3が割り当てられている。こ
れは単純な例である。各CPC上のローカル・キャッシ
ュを1つだけにしたり、オペレーティング・システムが
割り当てるLCID値と、それらのLCID値を割り当
てられたローカル・キャッシュが存在するCPCとが相
関関係を持つ必要はない。
【0082】この例では、LCID2を持つローカル・
キャッシュを制御するローカル・マネージャは、変更標
識がセットされた、「A」という名前のデータ要素に対
する登録時書込みコマンド(WWR)を発行している。
WWRコマンドの実行の一部として、SESは補足コピ
ーの無効化処理を実行する。これは、データ要素が変更
されているためである。SESは「相互無効化」(X
I)コマンドを生成し、ローカル側で接続されたキャッ
シュにそれらのコマンドを送る。XIコマンドは、LC
T5およびLCEN1が識別されてCPC1に送られ
る。XIコマンドは、LCT3およびLCEN3が識別
されてCPC3にも送られる。これらのコマンド同士お
よびこれらのコマンドと他のSESキャッシュ処理が同
時に実行できる。しかし、XIコマンドは、WWRコマ
ンドが完了する前にローカル・キャッシュ・コピーの無
効化を完了しておく必要がある。
キャッシュを制御するローカル・マネージャは、変更標
識がセットされた、「A」という名前のデータ要素に対
する登録時書込みコマンド(WWR)を発行している。
WWRコマンドの実行の一部として、SESは補足コピ
ーの無効化処理を実行する。これは、データ要素が変更
されているためである。SESは「相互無効化」(X
I)コマンドを生成し、ローカル側で接続されたキャッ
シュにそれらのコマンドを送る。XIコマンドは、LC
T5およびLCEN1が識別されてCPC1に送られ
る。XIコマンドは、LCT3およびLCEN3が識別
されてCPC3にも送られる。これらのコマンド同士お
よびこれらのコマンドと他のSESキャッシュ処理が同
時に実行できる。しかし、XIコマンドは、WWRコマ
ンドが完了する前にローカル・キャッシュ・コピーの無
効化を完了しておく必要がある。
【0083】XI処理の結果として、LC1D1および
LCID3で識別されたローカル・キャッシュのコヒー
レンシ・ベクトルが更新される。次に、データ要素
「A」について、データ・マネージャが割り当てたLC
ID1またはLCID3に要求が発行されると、関連す
るコヒーレンシ・ビット・ベクトルのテストが行われ
る。たとえば、CPC1では、ベクトル項目テストCP
U命令によりLCT5/LCEN1のテストが行われ
る。このテストでは、ローカル・キャッシュ内のデータ
要素のコピーが有効でないことが示される。データ・マ
ネージャは次に、読取り及び登録コマンドを発行し、S
ESキャッシュからデータ要素「A」の最新のコピーを
検索する。
LCID3で識別されたローカル・キャッシュのコヒー
レンシ・ベクトルが更新される。次に、データ要素
「A」について、データ・マネージャが割り当てたLC
ID1またはLCID3に要求が発行されると、関連す
るコヒーレンシ・ビット・ベクトルのテストが行われ
る。たとえば、CPC1では、ベクトル項目テストCP
U命令によりLCT5/LCEN1のテストが行われ
る。このテストでは、ローカル・キャッシュ内のデータ
要素のコピーが有効でないことが示される。データ・マ
ネージャは次に、読取り及び登録コマンドを発行し、S
ESキャッシュからデータ要素「A」の最新のコピーを
検索する。
【0084】他のCPCにSES無効化要求を発行でき
るCPCコマンドには次のものがある。読取りおよび登
録(WAR)、登録時書込み(WWR)、補足コピー無
効化(ICC)、および名前無効化(IN)。WARお
よびWWRでは、1つの名前を指定する。ICCおよび
INでは、名前のフィールドの一部だけに関する突合せ
を要求すると複数の名前を指定できる。
るCPCコマンドには次のものがある。読取りおよび登
録(WAR)、登録時書込み(WWR)、補足コピー無
効化(ICC)、および名前無効化(IN)。WARお
よびWWRでは、1つの名前を指定する。ICCおよび
INでは、名前のフィールドの一部だけに関する突合せ
を要求すると複数の名前を指定できる。
【0085】
概要:本発明は、非揮発性電子メモリ(別称SES)の
形の共用キャッシュを備えたマルチシステム・データ共
用複合体の構造体と、複数のおそらく異なるバージョン
のデータ間でコヒーレンシを維持しながら、データ資源
を共用するためにキャッシュを動作させる方法とを提供
する。
形の共用キャッシュを備えたマルチシステム・データ共
用複合体の構造体と、複数のおそらく異なるバージョン
のデータ間でコヒーレンシを維持しながら、データ資源
を共用するためにキャッシュを動作させる方法とを提供
する。
【0086】マルチコンピュータ・データ共用システム
におけるデータ・コヒーレンシ方式で、更新済みページ
の書込みが必要な場合、一定の重要な特徴を持つアーキ
テクチャが使用できる。図1に示すそのようなアーキテ
クチャは、独立して動作する複数のコンピュータ・シス
テムCPC−1ないしCPC−Mを備えている。これら
のコンピュータ・システムは、直接アクセス記憶装置
(DASD)109A、109Bないし109N上に格
納されたデータを共用する。DASD109A、109
Bないし190Nは、たとえば、マルチディスク・ディ
スク・ドライブを備えることができる。このアーキテク
チャは、M個のコンピュータ・システムCPC−1ない
しCPC−Mを備えている。これらのコンピュータ・シ
ステムはそれぞれ、DASD上のデータを含むデータベ
ースの作成、編成、変更を制御し、データベース内のデ
ータへのアクセスを制御する、データベース管理システ
ム(DBMS)を備えている。また、システム内には、
コンピュータ・システムが共用するキャッシュとして機
能する高速非揮発性電子メモリ(101のSES)が設
けられている。メモリ101は、高速リンク106−1
ないし106−Mにより、コンピュータ・システムCP
C−1ないしCPC−Mに接続されている。以下、メモ
リ101を、「メモリ」または「NV記憶装置」または
「SES」と呼ぶ。
におけるデータ・コヒーレンシ方式で、更新済みページ
の書込みが必要な場合、一定の重要な特徴を持つアーキ
テクチャが使用できる。図1に示すそのようなアーキテ
クチャは、独立して動作する複数のコンピュータ・シス
テムCPC−1ないしCPC−Mを備えている。これら
のコンピュータ・システムは、直接アクセス記憶装置
(DASD)109A、109Bないし109N上に格
納されたデータを共用する。DASD109A、109
Bないし190Nは、たとえば、マルチディスク・ディ
スク・ドライブを備えることができる。このアーキテク
チャは、M個のコンピュータ・システムCPC−1ない
しCPC−Mを備えている。これらのコンピュータ・シ
ステムはそれぞれ、DASD上のデータを含むデータベ
ースの作成、編成、変更を制御し、データベース内のデ
ータへのアクセスを制御する、データベース管理システ
ム(DBMS)を備えている。また、システム内には、
コンピュータ・システムが共用するキャッシュとして機
能する高速非揮発性電子メモリ(101のSES)が設
けられている。メモリ101は、高速リンク106−1
ないし106−Mにより、コンピュータ・システムCP
C−1ないしCPC−Mに接続されている。以下、メモ
リ101を、「メモリ」または「NV記憶装置」または
「SES」と呼ぶ。
【0087】メモリ101へのアクセスと、DASDの
109Aないし109Nへのアクセスを比較する際、メ
モリ101は比較的高速の半導体メモリであることに留
意されたい。さらに、メモリ101のコンピュータ・シ
ステムへの接続は、たとえば、超高速データ転送を実現
する光ファイバ通信チャネルによって行っている。相対
的に言うと、入出力動作は比較的高速のメモリ101に
おいて行われ、一方、既知のとおり、比較的低速のDA
SDによる入出力には数十ミリ秒かかる。
109Aないし109Nへのアクセスを比較する際、メ
モリ101は比較的高速の半導体メモリであることに留
意されたい。さらに、メモリ101のコンピュータ・シ
ステムへの接続は、たとえば、超高速データ転送を実現
する光ファイバ通信チャネルによって行っている。相対
的に言うと、入出力動作は比較的高速のメモリ101に
おいて行われ、一方、既知のとおり、比較的低速のDA
SDによる入出力には数十ミリ秒かかる。
【0088】メモリ101は、好ましくは、メモリ記憶
動作をすべて管理するプロセッサの形の管理論理装置1
10を備えている。管理論理装置110はたとえば、ロ
ーカル・プログラム記憶域およびメモリを備えた高性能
プロセッサを含むことができる。このため、管理論理装
置は、コンピュータ・システムCPC−1ないしCPC
−Mとの間でメッセージ・ベースのメモリ・アクセス・
トランザクションを行うことができる。
動作をすべて管理するプロセッサの形の管理論理装置1
10を備えている。管理論理装置110はたとえば、ロ
ーカル・プログラム記憶域およびメモリを備えた高性能
プロセッサを含むことができる。このため、管理論理装
置は、コンピュータ・システムCPC−1ないしCPC
−Mとの間でメッセージ・ベースのメモリ・アクセス・
トランザクションを行うことができる。
【0089】コンピュータ・システムCPC−1ないし
CPC−Mについて説明する。これらのエンティティ
は、たとえば、それぞれが専用キャッシュ付きマルチプ
ロセッサ・アーキテクチャを備え、IMS/VS型また
はDB2型のデータベース管理システムをサポートでき
る、IBM/3090システムを備えることができる。
CPC−Mについて説明する。これらのエンティティ
は、たとえば、それぞれが専用キャッシュ付きマルチプ
ロセッサ・アーキテクチャを備え、IMS/VS型また
はDB2型のデータベース管理システムをサポートでき
る、IBM/3090システムを備えることができる。
【0090】事実上、本発明は、図1に示しかつ上述し
たデータ共用複合体において実施される。メモリ101
には、共用キャッシュ103と名付ける半導体メモリが
ある。共用キャッシュ103は、好ましくは非揮発性
の、従来のマルチポート高速ランダム・アクセス・メモ
リから構成できる。共用キャッシュ103は、データの
ブロックの格納に使用する。たとえば、共用キャッシュ
103を使用して、データのページを格納できる。その
ようなページの1ページを111に示してある。
たデータ共用複合体において実施される。メモリ101
には、共用キャッシュ103と名付ける半導体メモリが
ある。共用キャッシュ103は、好ましくは非揮発性
の、従来のマルチポート高速ランダム・アクセス・メモ
リから構成できる。共用キャッシュ103は、データの
ブロックの格納に使用する。たとえば、共用キャッシュ
103を使用して、データのページを格納できる。その
ようなページの1ページを111に示してある。
【0091】管理論理装置110は、ローカル・キャッ
シュ制御機構105およびディレクトリ102の格納お
よび保守用のメモリ資源を有する。ローカル・キャッシ
ュ制御機構105およびディレクトリ102は、従来通
り、管理論理装置110でアクセスされる。たとえば、
周知のハッシュ参照機構をこれらのデータ構造体へのア
クセスに使用できる。ローカル・キャッシュ制御機構1
05は、それぞれメモリ101に動作可能に接続された
コンピュータ・システムを識別する、複数の項目を格納
するデータ構造体である。たとえば、コンピュータ・シ
ステムCPC−1ないしCPC−Mが接続されていると
すると、それらがローカル・キャッシュ制御機構105
中でリストされる。
シュ制御機構105およびディレクトリ102の格納お
よび保守用のメモリ資源を有する。ローカル・キャッシ
ュ制御機構105およびディレクトリ102は、従来通
り、管理論理装置110でアクセスされる。たとえば、
周知のハッシュ参照機構をこれらのデータ構造体へのア
クセスに使用できる。ローカル・キャッシュ制御機構1
05は、それぞれメモリ101に動作可能に接続された
コンピュータ・システムを識別する、複数の項目を格納
するデータ構造体である。たとえば、コンピュータ・シ
ステムCPC−1ないしCPC−Mが接続されていると
すると、それらがローカル・キャッシュ制御機構105
中でリストされる。
【0092】共用キャッシュ103は、「ストア・スル
ー」キャッシュではなく「ストア・イン」キャッシュと
して動作する。この場合、「ストア・イン」キャッシュ
とは、更新済みデータ要素(たとえば、ページ)を、同
時に2次記憶域に書き込まずに(「ストア・スルー」し
なくても)、書き込むことができるキャッシュである。
ー」キャッシュではなく「ストア・イン」キャッシュと
して動作する。この場合、「ストア・イン」キャッシュ
とは、更新済みデータ要素(たとえば、ページ)を、同
時に2次記憶域に書き込まずに(「ストア・スルー」し
なくても)、書き込むことができるキャッシュである。
【0093】SESキャッシュは、接続されたプロセッ
サのネットワークにおける3レベル記憶階層の構成要素
である。階層の最低レベルはDASD、中間レベルはS
ESキャッシュ、最高レベルはプロセッサ記憶装置内の
ローカル・キャッシュである。DASDおよびSESキ
ャッシュは、プロセッサに共用され、それぞれ入出力動
作およびメッセージ動作によってアクセスされる。ロー
カル・キャッシュは、各プロセッサ内で定義でき、CP
U命令を使用してアクセスされる。
サのネットワークにおける3レベル記憶階層の構成要素
である。階層の最低レベルはDASD、中間レベルはS
ESキャッシュ、最高レベルはプロセッサ記憶装置内の
ローカル・キャッシュである。DASDおよびSESキ
ャッシュは、プロセッサに共用され、それぞれ入出力動
作およびメッセージ動作によってアクセスされる。ロー
カル・キャッシュは、各プロセッサ内で定義でき、CP
U命令を使用してアクセスされる。
【0094】記憶域階層を通過するデータには名前が付
けられる。データ・サイズは可変であり、データ域要素
サイズの1〜16倍の範囲である。データ域要素サイズ
は、各SESキャッシュごとに固定されており、2の累
乗で、最小サイズは256バイトである。名前は、プロ
グラミング・プロトコルによって割り当てられる16バ
イトの値である。データは、DASD記憶域に永久的に
常駐する。
けられる。データ・サイズは可変であり、データ域要素
サイズの1〜16倍の範囲である。データ域要素サイズ
は、各SESキャッシュごとに固定されており、2の累
乗で、最小サイズは256バイトである。名前は、プロ
グラミング・プロトコルによって割り当てられる16バ
イトの値である。データは、DASD記憶域に永久的に
常駐する。
【0095】データのコピーまたは新規バージョンは、
SESキャッシュ記憶域またはローカル・キャッシュ記
憶域の任意の組合せに常駐することができる。具体的に
は、たとえばデータ・オブジェクトは、SESキャッシ
ュ記憶域には常駐するがどのローカル・キャッシュにも
常駐せず、あるいはSESキャッシュ記憶域およびロー
カル・キャッシュの一部に常駐し、あるいはローカル・
キャッシュの一部に常駐するがSESキャッシュ記憶域
には常駐しない。
SESキャッシュ記憶域またはローカル・キャッシュ記
憶域の任意の組合せに常駐することができる。具体的に
は、たとえばデータ・オブジェクトは、SESキャッシ
ュ記憶域には常駐するがどのローカル・キャッシュにも
常駐せず、あるいはSESキャッシュ記憶域およびロー
カル・キャッシュの一部に常駐し、あるいはローカル・
キャッシュの一部に常駐するがSESキャッシュ記憶域
には常駐しない。
【0096】一例として、記憶域階層で参照されるデー
タ要素がページであると仮定する。この場合、共用キャ
ッシュ111にキャッシュされるページは、ソフトウェ
アが割り当てる名前によって識別される。したがって、
共用キャッシュ111における読取りまたは書込みの要
求では、その要求の対象であるページの名前を指定する
必要がある。ディレクトリ102は、従来通り、REA
DコマンドまたはWRITEコマンドの対象であるペー
ジの名前で索引付けされている。ディレクトリ102の
代表的な項目を図4に示す。説明中の本発明に関し、関
連するディレクトリのフィールドを図4に示す。それに
は、名前フィールド401、データ・ビット(D)フィ
ールド403、データ域ポインタ・フィールド406A
ないし406N、変更ビット(C)フィールド404、
有効ビット(V)フィールド402、データ域サイズ・
フィールド407、および図5に示すローカル・キャッ
シュ・レジスタにアクセス可能にするローカル・キャッ
シュ・レジスタ索引がある。ローカル・キャッシュ・レ
ジスタには、SESキャッシュに接続されたローカル・
キャッシュの識別子(502Aないし502C)、接続
されたローカル・キャッシュに関連するローカル・キャ
ッシュ項目番号(503Aないし503C)、および有
効ビット(501Aないし501C)が格納される。
タ要素がページであると仮定する。この場合、共用キャ
ッシュ111にキャッシュされるページは、ソフトウェ
アが割り当てる名前によって識別される。したがって、
共用キャッシュ111における読取りまたは書込みの要
求では、その要求の対象であるページの名前を指定する
必要がある。ディレクトリ102は、従来通り、REA
DコマンドまたはWRITEコマンドの対象であるペー
ジの名前で索引付けされている。ディレクトリ102の
代表的な項目を図4に示す。説明中の本発明に関し、関
連するディレクトリのフィールドを図4に示す。それに
は、名前フィールド401、データ・ビット(D)フィ
ールド403、データ域ポインタ・フィールド406A
ないし406N、変更ビット(C)フィールド404、
有効ビット(V)フィールド402、データ域サイズ・
フィールド407、および図5に示すローカル・キャッ
シュ・レジスタにアクセス可能にするローカル・キャッ
シュ・レジスタ索引がある。ローカル・キャッシュ・レ
ジスタには、SESキャッシュに接続されたローカル・
キャッシュの識別子(502Aないし502C)、接続
されたローカル・キャッシュに関連するローカル・キャ
ッシュ項目番号(503Aないし503C)、および有
効ビット(501Aないし501C)が格納される。
【0097】引き続きこの例について説明する。ページ
名フィールド401は、管理論理装置110がディレク
トリ102に索引付けするためのフィールドである。管
理論理装置110がREADコマンドまたはWRITE
コマンドを受け取り、このコマンドがページを識別する
パラメータPの値を伴うものとする。管理論理装置11
0は、ハッシング・プロセスにPの値を供給する。この
ハッシング・プロセスは、ページ名がすでに存在する場
合、それを介してディレクトリに迅速にアクセスするた
めに管理論理装置が使用する値を生成する。ページ名フ
ィールドが見つかると、ページ・アドレス・フィールド
406が、識別されたページの共用キャッシュ内でのア
ドレスを指すのに使用される。
名フィールド401は、管理論理装置110がディレク
トリ102に索引付けするためのフィールドである。管
理論理装置110がREADコマンドまたはWRITE
コマンドを受け取り、このコマンドがページを識別する
パラメータPの値を伴うものとする。管理論理装置11
0は、ハッシング・プロセスにPの値を供給する。この
ハッシング・プロセスは、ページ名がすでに存在する場
合、それを介してディレクトリに迅速にアクセスするた
めに管理論理装置が使用する値を生成する。ページ名フ
ィールドが見つかると、ページ・アドレス・フィールド
406が、識別されたページの共用キャッシュ内でのア
ドレスを指すのに使用される。
【0098】管理論理装置110は、必要に応じてディ
レクトリ項目を作成、管理、削除する。これらの動作
は、既知の機構を使用して行われる。ただし、ディレク
トリ102内の項目の厳密な構造は、本発明独特のもの
である。また、管理論理装置110は、従来通り、共用
キャッシュ111に対してデータの取出しおよび入力を
行う構造になっている。ただし、この場合、本発明独特
の読取り動作および書込み動作に従う。管理論理装置1
10はまた、「キャッシュ・ミス」応答および「キャッ
シュ・ヒット」応答を生成する通常のキャッシュ管理機
能を備えている。これらの応答は、共用キャッシュ11
1に接続されたコンピュータ・システムから供給される
コマンドに応答して生成される。「キャッシュ・ミス」
は、識別されたデータ要素(たとえば、ページ)が共用
キャッシュ111に常駐していないことを示し、「キャ
ッシュ・ヒット」は、識別されたデータ要素(たとえ
ば、ページ)が共用キャッシュ111にあることを示
す。
レクトリ項目を作成、管理、削除する。これらの動作
は、既知の機構を使用して行われる。ただし、ディレク
トリ102内の項目の厳密な構造は、本発明独特のもの
である。また、管理論理装置110は、従来通り、共用
キャッシュ111に対してデータの取出しおよび入力を
行う構造になっている。ただし、この場合、本発明独特
の読取り動作および書込み動作に従う。管理論理装置1
10はまた、「キャッシュ・ミス」応答および「キャッ
シュ・ヒット」応答を生成する通常のキャッシュ管理機
能を備えている。これらの応答は、共用キャッシュ11
1に接続されたコンピュータ・システムから供給される
コマンドに応答して生成される。「キャッシュ・ミス」
は、識別されたデータ要素(たとえば、ページ)が共用
キャッシュ111に常駐していないことを示し、「キャ
ッシュ・ヒット」は、識別されたデータ要素(たとえ
ば、ページ)が共用キャッシュ111にあることを示
す。
【0099】コマンドは、図1のマルチシステム複合体
内でコンピュータ・システムが生成する。これらのコマ
ンドは、管理論理装置110から応答を引き出す。本発
明者等は、メッセージ・プロトコルに従って、コマンド
および応答がコンピュータ・システムと管理論理装置の
間で交換されることを考えている。さらに、本発明者等
は、コマンドを発行するコンピュータならどれでも、管
理論理装置110から応答を受け取るまで遅延を維持で
きるため、共用キャッシュ101へのアクセスを同期式
にできることを考えている。共用キャッシュ101を形
成する半導体メモリの速度により、同期メッセージ受渡
し構造体に固有の遅延が短縮される。
内でコンピュータ・システムが生成する。これらのコマ
ンドは、管理論理装置110から応答を引き出す。本発
明者等は、メッセージ・プロトコルに従って、コマンド
および応答がコンピュータ・システムと管理論理装置の
間で交換されることを考えている。さらに、本発明者等
は、コマンドを発行するコンピュータならどれでも、管
理論理装置110から応答を受け取るまで遅延を維持で
きるため、共用キャッシュ101へのアクセスを同期式
にできることを考えている。共用キャッシュ101を形
成する半導体メモリの速度により、同期メッセージ受渡
し構造体に固有の遅延が短縮される。
【0100】本発明者等はまた、図1のマルチシステム
・データ共用複合体のコンピュータ・システムが、従来
の手段、たとえば、IBM IMS型のシステムの共用
ディスク機能を使用して、DASDにアクセス可能であ
ることを考えている。既知のとおり、READコマンド
またはWRITEコマンドがDASDにディスパッチさ
れている間、コンピュータ・システムは遅延しないの
で、そのようなアクセスは非同期式である。
・データ共用複合体のコンピュータ・システムが、従来
の手段、たとえば、IBM IMS型のシステムの共用
ディスク機能を使用して、DASDにアクセス可能であ
ることを考えている。既知のとおり、READコマンド
またはWRITEコマンドがDASDにディスパッチさ
れている間、コンピュータ・システムは遅延しないの
で、そのようなアクセスは非同期式である。
【0101】図1に示すように、各コンピュータ・シス
テムは、コンピュータ・システムとNV記憶装置101
との間で交換されるデータのステージングに使用され
る、識別されたバッファを備えている。たとえば、コン
ピュータ・システムCPC−1はバッファ107Aを備
え、コンピュータ・システムCPC−Mはバッファ10
7Cを備えている。データ共用複合体のコンピュータ・
システムはすべて、そのような専用バッファを所有して
いることに留意されたい。さらに、コンピュータ・シス
テムの1つが管理論理装置110にREADコマンドま
たはWRITEコマンドを発行するとき、このシステム
はかならず、要求されたデータが入力されるまたは取り
出される専用バッファ内のアドレスを送る。
テムは、コンピュータ・システムとNV記憶装置101
との間で交換されるデータのステージングに使用され
る、識別されたバッファを備えている。たとえば、コン
ピュータ・システムCPC−1はバッファ107Aを備
え、コンピュータ・システムCPC−Mはバッファ10
7Cを備えている。データ共用複合体のコンピュータ・
システムはすべて、そのような専用バッファを所有して
いることに留意されたい。さらに、コンピュータ・シス
テムの1つが管理論理装置110にREADコマンドま
たはWRITEコマンドを発行するとき、このシステム
はかならず、要求されたデータが入力されるまたは取り
出される専用バッファ内のアドレスを送る。
【0102】本発明は、DASDから共用キャッシュへ
のデータの移動と、そのように移動されるデータの更新
に関する。また、以下では、ページのディレクトリ項目
で変更ビットが1に設定されているとき、コンピュータ
・システムが、共用キャッシュに入れるためにDASD
から取り出すデータ要素(たとえば、ページ)を、「ダ
ウン・レベル」ページと呼ぶ。DASDから取り出した
ページのディレクトリ項目の変更ビットおよびデータ・
ビットが0に設定されているとき、そのページを「クリ
ーン・ページ」と呼ぶ。この場合、ページのDASDバ
ージョンは、共用キャッシュ101内のそのページのバ
ージョンと同じである。
のデータの移動と、そのように移動されるデータの更新
に関する。また、以下では、ページのディレクトリ項目
で変更ビットが1に設定されているとき、コンピュータ
・システムが、共用キャッシュに入れるためにDASD
から取り出すデータ要素(たとえば、ページ)を、「ダ
ウン・レベル」ページと呼ぶ。DASDから取り出した
ページのディレクトリ項目の変更ビットおよびデータ・
ビットが0に設定されているとき、そのページを「クリ
ーン・ページ」と呼ぶ。この場合、ページのDASDバ
ージョンは、共用キャッシュ101内のそのページのバ
ージョンと同じである。
【0103】本発明は、独特の1組のコマンドと、これ
らのコマンドの実行によって生じる変更の影響を受ける
ディレクトリ項目への登録に依存している。
らのコマンドの実行によって生じる変更の影響を受ける
ディレクトリ項目への登録に依存している。
【0104】ローカル・キャッシュ:ローカル・キャッ
シュは、米国特許出願第860797号に記載された、
ローカル・キャッシュを備えたCPC上のSESサポー
ト機構に対して定義される。CPU命令は、SESサポ
ート機構内の制御機構を初期設定し、ローカル・キャッ
シュ・トークンを割り当てる。ローカル・キャッシュの
サイズは、システム間で異なる。
シュは、米国特許出願第860797号に記載された、
ローカル・キャッシュを備えたCPC上のSESサポー
ト機構に対して定義される。CPU命令は、SESサポ
ート機構内の制御機構を初期設定し、ローカル・キャッ
シュ・トークンを割り当てる。ローカル・キャッシュの
サイズは、システム間で異なる。
【0105】SESキャッシュ:SESキャッシュは、
データ域要素の集合とディレクトリとから構成された、
SES内の構造体である。このキャッシュは、構造体識
別子によって指定される。SESキャッシュは、キャッ
シュ構造割振り(allocate−cache−st
ructure)コマンドで作成される。このコマンド
は、プロセッサ内で、初期設定手順によって発行され、
データ域要素のサイズおよび数、ディレクトリ項目の
数、記憶クラスの数、ならびにキャストアウト・クラス
の数というSESキャッシュの諸属性を決定する。
データ域要素の集合とディレクトリとから構成された、
SES内の構造体である。このキャッシュは、構造体識
別子によって指定される。SESキャッシュは、キャッ
シュ構造割振り(allocate−cache−st
ructure)コマンドで作成される。このコマンド
は、プロセッサ内で、初期設定手順によって発行され、
データ域要素のサイズおよび数、ディレクトリ項目の
数、記憶クラスの数、ならびにキャストアウト・クラス
の数というSESキャッシュの諸属性を決定する。
【0106】ローカル・キャッシュは、ローカル・キャ
ッシュ付加(attach−local−cache)
コマンドによってSESキャッシュに接続される。この
コマンドは、SES機構内の制御機構を初期設定し、S
ESキャッシュがSESサポート機構に生成コマンドを
発行するために使われる1組の経路を構築する。ローカ
ル・キャッシュは、SESキャッシュに接続されると記
憶階層に参加できる。ローカル・キャッシュおよびSE
Sキャッシュ内のデータのコピーのコヒーレンシは、S
ESキャッシュ内の制御機構によって維持され、生成コ
マンドとして様々なSESサポート機構に発行される相
互無効化コマンドによって実現される。
ッシュ付加(attach−local−cache)
コマンドによってSESキャッシュに接続される。この
コマンドは、SES機構内の制御機構を初期設定し、S
ESキャッシュがSESサポート機構に生成コマンドを
発行するために使われる1組の経路を構築する。ローカ
ル・キャッシュは、SESキャッシュに接続されると記
憶階層に参加できる。ローカル・キャッシュおよびSE
Sキャッシュ内のデータのコピーのコヒーレンシは、S
ESキャッシュ内の制御機構によって維持され、生成コ
マンドとして様々なSESサポート機構に発行される相
互無効化コマンドによって実現される。
【0107】SESキャッシュ・ディレクトリ:SES
キャッシュ・ディレクトリは、完全連想式アレイとして
配列されたディレクトリ項目の集合である。ディレクト
リ項目は、記憶クラスに区分される。変更済みのディレ
クトリ項目グループは、キャストアウト・クラスに区分
される。名前付きデータ・オブジェクトが階層の上位2
レベルに置かれるときはかならず、その状態および位置
がSESキャッシュ・ディレクトリによって登録され
る。状態情報は、データが変更済みか、未変更か、キャ
ストアウト用にロックされているかを示す。位置情報に
は、データがSESキャッシュ記憶域に常駐しているか
どうか、およびどのローカル・キャッシュにコピーが入
っているかが含まれる。(位置406A−406Nにあ
るポインタによってSESキャッシュ・データ中で位置
指定された)レコードを、以下では、レコード、データ
要素、データ項目、ブロック、ページなどいくつかの異
なる用語のいずれかで呼ぶ。あるSES読取りコマンド
およびSES書込みコマンドは、ローカル・キャッシュ
・コピーをSESキャッシュ・ディレクトリに登録す
る。SES書込みコマンドおよびSES無効化コマンド
は、ローカル・コピーの登録を削除する。
キャッシュ・ディレクトリは、完全連想式アレイとして
配列されたディレクトリ項目の集合である。ディレクト
リ項目は、記憶クラスに区分される。変更済みのディレ
クトリ項目グループは、キャストアウト・クラスに区分
される。名前付きデータ・オブジェクトが階層の上位2
レベルに置かれるときはかならず、その状態および位置
がSESキャッシュ・ディレクトリによって登録され
る。状態情報は、データが変更済みか、未変更か、キャ
ストアウト用にロックされているかを示す。位置情報に
は、データがSESキャッシュ記憶域に常駐しているか
どうか、およびどのローカル・キャッシュにコピーが入
っているかが含まれる。(位置406A−406Nにあ
るポインタによってSESキャッシュ・データ中で位置
指定された)レコードを、以下では、レコード、データ
要素、データ項目、ブロック、ページなどいくつかの異
なる用語のいずれかで呼ぶ。あるSES読取りコマンド
およびSES書込みコマンドは、ローカル・キャッシュ
・コピーをSESキャッシュ・ディレクトリに登録す
る。SES書込みコマンドおよびSES無効化コマンド
は、ローカル・コピーの登録を削除する。
【0108】ローカル・キャッシュ項目有効状態:ロー
カル・キャッシュにデータが置かれるとき、データの状
態は、有効と無効のどちらかである。ローカル・キャッ
シュ項目の有効状態は、SESサポート機構内の制御機
構によって維持される。データは、CPU命令によって
妥当性を検査され、SES書込み動作およびSES無効
化動作に関連する無効化プロセスによって無効にされ
る。データの有効状態は、CPU命令によってテストさ
れる。有効な名前付きデータ・オブジェクトは、SES
キャッシュ・ディレクトリに登録する必要がある。ロー
カル・キャッシュ・コヒーレンシは、無効化プロセスに
よって維持される。
カル・キャッシュにデータが置かれるとき、データの状
態は、有効と無効のどちらかである。ローカル・キャッ
シュ項目の有効状態は、SESサポート機構内の制御機
構によって維持される。データは、CPU命令によって
妥当性を検査され、SES書込み動作およびSES無効
化動作に関連する無効化プロセスによって無効にされ
る。データの有効状態は、CPU命令によってテストさ
れる。有効な名前付きデータ・オブジェクトは、SES
キャッシュ・ディレクトリに登録する必要がある。ロー
カル・キャッシュ・コヒーレンシは、無効化プロセスに
よって維持される。
【0109】キャストアウト・プロセス:SESキャッ
シュ記憶域は通常、DASD記憶域より小規模である。
したがって、変更済みデータは、周期的に、SESキャ
ッシュから補助DASDに転送する必要がある。このプ
ロセスは、キャストアウトと称し、プログラムによって
制御され、以下の動作を伴う。
シュ記憶域は通常、DASD記憶域より小規模である。
したがって、変更済みデータは、周期的に、SESキャ
ッシュから補助DASDに転送する必要がある。このプ
ロセスは、キャストアウトと称し、プログラムによって
制御され、以下の動作を伴う。
【0110】キャストアウト逐次化を設定し、データ・
ブロックを主記憶域にコピーする、キャストアウト用S
ES読取り動作を発行する。
ブロックを主記憶域にコピーする、キャストアウト用S
ES読取り動作を発行する。
【0111】DASDにデータ・ブロックをコピーする
入出力動作を実行する。
入出力動作を実行する。
【0112】キャストアウト逐次化を解除するSESロ
ック解除動作を発行する。
ック解除動作を発行する。
【0113】関連データ・オブジェクトは、SESキャ
ッシュによってキャストアウト・クラスで維持される。
キャストアウト・クラスを使用すると、プログラムがD
ASDへのデータ転送を1回の入出力動作でバッチ処理
できるようになって、キャストアウト・プロセスの効率
が高まる。DASDとSESキャッシュの間のデータの
移動を実行するプロセスは、米国特許出願第86080
6号に記載されている。
ッシュによってキャストアウト・クラスで維持される。
キャストアウト・クラスを使用すると、プログラムがD
ASDへのデータ転送を1回の入出力動作でバッチ処理
できるようになって、キャストアウト・プロセスの効率
が高まる。DASDとSESキャッシュの間のデータの
移動を実行するプロセスは、米国特許出願第86080
6号に記載されている。
【0114】再利用プロセス:最も以前に使用された未
変更データおよびディレクトリ資源は、新規要求を満た
すのに必要なとき、SESキャッシュによって再利用さ
れる。データ・オブジェクトは、プログラムによって、
数種の記憶クラスの1つにマップされる。各記憶クラス
には、再利用プロセスを制御する再利用ベクトルがあ
る。そのため、作業負荷特性の変更に合わせて、記憶ク
ラス間のSES記憶域の割振りを動的に調整できる。再
利用ベクトルは、プログラムによって初期設定される。
変更データおよびディレクトリ資源は、新規要求を満た
すのに必要なとき、SESキャッシュによって再利用さ
れる。データ・オブジェクトは、プログラムによって、
数種の記憶クラスの1つにマップされる。各記憶クラス
には、再利用プロセスを制御する再利用ベクトルがあ
る。そのため、作業負荷特性の変更に合わせて、記憶ク
ラス間のSES記憶域の割振りを動的に調整できる。再
利用ベクトルは、プログラムによって初期設定される。
【0115】計測:計測情報は、記憶クラス間でのデー
タの割振りおよびキャストアウト・プロセスで支援する
ためにプログラムに提供される。
タの割振りおよびキャストアウト・プロセスで支援する
ためにプログラムに提供される。
【0116】SESサポート機構:中央処理複合体(C
PC)内でSES機能の実行の責任を負う、SES構成
の構成要素は、SESサポート機構として知られてい
る。これには、以下の項目が含まれる。
PC)内でSES機能の実行の責任を負う、SES構成
の構成要素は、SESサポート機構として知られてい
る。これには、以下の項目が含まれる。
【0117】CPU命令: ベクトル定義(DV) ベクトル項目設定(SVE) ベクトル項目テスト(TVE)
【0118】コマンド: 相互無効化
【0119】データ・オブジェクト: ローカル・キャッシュ・ベクトル メッセージ経路状態
【0120】前記項目は、SES構成の必須部分であ
る。相互無効化コマンドの実行は、SESサポート機構
によって行われる。SES構成は、SES機構と、SE
S機構に接続された各CPC上に常駐するSESサポー
ト機構から構成される。
る。相互無効化コマンドの実行は、SESサポート機構
によって行われる。SES構成は、SES機構と、SE
S機構に接続された各CPC上に常駐するSESサポー
ト機構から構成される。
【0121】記憶域モデル:SESサポート機構用に定
義されているデータ・オブジェクトは、アドレス可能記
憶域に置かれず、CPU命令およびSESサポート機構
のコマンドだけがそれを処理できる。これらのデータ・
オブジェクトに対する参照は、アドレス可能な主記憶域
に対する参照に適用される規則と同じ法則に従う。
義されているデータ・オブジェクトは、アドレス可能記
憶域に置かれず、CPU命令およびSESサポート機構
のコマンドだけがそれを処理できる。これらのデータ・
オブジェクトに対する参照は、アドレス可能な主記憶域
に対する参照に適用される規則と同じ法則に従う。
【0122】ベクトル・トークン:ベクトル・トークン
は、特定のローカル・キャッシュ・ベクトルを一意に識
別する、64ビットの値である。トークンは、ベクトル
が定義されるとき提供され、ベクトル解放の時点まで持
続する。
は、特定のローカル・キャッシュ・ベクトルを一意に識
別する、64ビットの値である。トークンは、ベクトル
が定義されるとき提供され、ベクトル解放の時点まで持
続する。
【0123】ローカル・キャッシュ・ベクトル:ローカ
ル・キャッシュ・ベクトル(別称コヒーレンス・ベクト
ル)は、DEFINE VECTOR命令によって作成
される。ローカル・キャッシュ・ベクトルのサイズは、
キャッシュ・ユーザごとに異なることがある。ローカル
・キャッシュ・ベクトルは、ローカル・キャッシュ付加
コマンドを使用してSESキャッシュ構造体に付加され
る。ローカル・キャッシュ・ベクトル内の各項目は、ロ
ーカル側でキャッシュされたデータ要素の有効状態また
は無効状態を示す。ローカル側でキャッシュされたコピ
ーは、SES機構に登録された共用コピーに関して最新
のコピーでなくなったとき無効になる。TEST VE
CTOR ENTRY命令は、ローカル・キャッシュ・
ベクトル内で表される、ローカル側でコピーされたデー
タ・コピーの状態を問い合わせるときに使用される。
ル・キャッシュ・ベクトル(別称コヒーレンス・ベクト
ル)は、DEFINE VECTOR命令によって作成
される。ローカル・キャッシュ・ベクトルのサイズは、
キャッシュ・ユーザごとに異なることがある。ローカル
・キャッシュ・ベクトルは、ローカル・キャッシュ付加
コマンドを使用してSESキャッシュ構造体に付加され
る。ローカル・キャッシュ・ベクトル内の各項目は、ロ
ーカル側でキャッシュされたデータ要素の有効状態また
は無効状態を示す。ローカル側でキャッシュされたコピ
ーは、SES機構に登録された共用コピーに関して最新
のコピーでなくなったとき無効になる。TEST VE
CTOR ENTRY命令は、ローカル・キャッシュ・
ベクトル内で表される、ローカル側でコピーされたデー
タ・コピーの状態を問い合わせるときに使用される。
【0124】ローカル側でキャッシュされた関連するデ
ータ項目が、SES機構に登録された共用コピーに関し
て最新のデータ項目であるとき、ローカル・キャッシュ
・ベクトル項目は1である。ローカル側でキャッシュさ
れた関連するデータ項目が、SES機構に登録された共
用コピーに関して最新のデータ項目でないとき、ローカ
ル・キャッシュ・ベクトル項目は0である。
ータ項目が、SES機構に登録された共用コピーに関し
て最新のデータ項目であるとき、ローカル・キャッシュ
・ベクトル項目は1である。ローカル側でキャッシュさ
れた関連するデータ項目が、SES機構に登録された共
用コピーに関して最新のデータ項目でないとき、ローカ
ル・キャッシュ・ベクトル項目は0である。
【0125】メッセージ経路状態:SESサポート機構
は、メッセージ経路によってSES機構と通信する。各
経路は、システム間リンクと、リンク上でメッセージを
送受するためのシステム間チャネルとから構成されてい
る。メッセージ経路の状態は、SES機構に登録され、
メッセージ経路識別子で指定されるが、活動状態と非活
動状態のどちらかである。
は、メッセージ経路によってSES機構と通信する。各
経路は、システム間リンクと、リンク上でメッセージを
送受するためのシステム間チャネルとから構成されてい
る。メッセージ経路の状態は、SES機構に登録され、
メッセージ経路識別子で指定されるが、活動状態と非活
動状態のどちらかである。
【0126】ローカル・キャッシュ・ベクトルの記憶域
モデル:ローカル・キャッシュ・ベクトルは、プログラ
ムが仮想記憶アドレス、絶対記憶アドレス、実記憶アド
レスのいずれによってもアドレスできないプロセッサ記
憶位置を占有する。特定のCPU命令が、ローカル・キ
ャッシュ・ベクトル内の1つまたは複数の項目へのアク
セスを可能にするために定義されている。これらの命令
には、アクセスされるベクトル項目を含むプロセッサ記
憶域のバイトの実効アドレスが提供される。
モデル:ローカル・キャッシュ・ベクトルは、プログラ
ムが仮想記憶アドレス、絶対記憶アドレス、実記憶アド
レスのいずれによってもアドレスできないプロセッサ記
憶位置を占有する。特定のCPU命令が、ローカル・キ
ャッシュ・ベクトル内の1つまたは複数の項目へのアク
セスを可能にするために定義されている。これらの命令
には、アクセスされるベクトル項目を含むプロセッサ記
憶域のバイトの実効アドレスが提供される。
【0127】この定義では、「実効アドレス」という用
語は、計算機によって交換が行われる前にアクセスされ
るベクトル項目を含む、プロセッサ記憶域のバイトを示
すのに使用する。ローカル・キャッシュ・ベクトル項目
の実効アドレスは、DV命令によって割り当てられる。
仮想記憶アドレスと異なり、ベクトル項目を含むプロセ
ッサ記憶域のバイトは、せいぜい1つの実効アドレスで
アクセスされる。ベクトル項目実効アドレスとプロセッ
サ記憶位置は1:1でマッピングされる。
語は、計算機によって交換が行われる前にアクセスされ
るベクトル項目を含む、プロセッサ記憶域のバイトを示
すのに使用する。ローカル・キャッシュ・ベクトル項目
の実効アドレスは、DV命令によって割り当てられる。
仮想記憶アドレスと異なり、ベクトル項目を含むプロセ
ッサ記憶域のバイトは、せいぜい1つの実効アドレスで
アクセスされる。ベクトル項目実効アドレスとプロセッ
サ記憶位置は1:1でマッピングされる。
【0128】コヒーレンス・ベクトルの保護:コヒーレ
ンス・ベクトル・ビットおよびそれらの設定に関して保
全性を維持することは重大である。なぜなら、シスプレ
ックスにおけるデータの妥当性は、それらが正しく動作
するかどうかによって決まるからである。したがって、
ベクトル・ビット位置およびそれらの設定を、すべての
CPCプログラミングによる破壊操作から保護する必要
がある。CPC内で不適切なプログラム動作が行われる
と(故意であるか否かを問わず)、コヒーレンス・ビッ
トが破壊される可能性がある。たとえば、コヒーレンス
・ベクトル・ビットがMSにある場合(その場合、CP
Cプログラムによってアドレス可能)、CPCプログラ
ムによって不注意にでたらめな格納が行われると、ベク
トル・ビットの設定が変わって、LCB内の良好なデー
タが無効になり、あるいはLCB内のデータが無効であ
るのに有効であると誤って示し、CPC動作に悲惨な結
果を及ぼす可能性がある。前記のいずれの場合も、CP
Cデータが、破壊された後、CPCによってSESおよ
びDASDに不適切に通知され、シスプレックス内の他
のCPC用のデータが破壊される。テーブルTにでたら
めな格納が行われると、ベクトル・ビットの認識可能な
存在が消される可能性がある。
ンス・ベクトル・ビットおよびそれらの設定に関して保
全性を維持することは重大である。なぜなら、シスプレ
ックスにおけるデータの妥当性は、それらが正しく動作
するかどうかによって決まるからである。したがって、
ベクトル・ビット位置およびそれらの設定を、すべての
CPCプログラミングによる破壊操作から保護する必要
がある。CPC内で不適切なプログラム動作が行われる
と(故意であるか否かを問わず)、コヒーレンス・ビッ
トが破壊される可能性がある。たとえば、コヒーレンス
・ベクトル・ビットがMSにある場合(その場合、CP
Cプログラムによってアドレス可能)、CPCプログラ
ムによって不注意にでたらめな格納が行われると、ベク
トル・ビットの設定が変わって、LCB内の良好なデー
タが無効になり、あるいはLCB内のデータが無効であ
るのに有効であると誤って示し、CPC動作に悲惨な結
果を及ぼす可能性がある。前記のいずれの場合も、CP
Cデータが、破壊された後、CPCによってSESおよ
びDASDに不適切に通知され、シスプレックス内の他
のCPC用のデータが破壊される。テーブルTにでたら
めな格納が行われると、ベクトル・ビットの認識可能な
存在が消される可能性がある。
【0129】データ・コヒーレンス・ベクトルをCPC
プログラミングによる悪影響から保護するため、このベ
クトルを、CPCのプログラマブル記憶域(つまり、主
記憶装置MS)に書き込まない。その代わり、ハードウ
ェア内など、CPCプログラミングから分離された特別
な場所に書き込む。しかし、ハードウェアは構築後は柔
軟でなくなるが、関連するLC内のLCBの数が変わる
可能性があるので、無効化ベクトルのサイズは柔軟でな
ければならない。したがって、本発明の好ましい実施例
では、LCをCPCプログラミングでアドレス可能な主
記憶装置(MS)に配置するが、ベクトル・ビットはC
PCプログラミングでアドレス不能なシステム・メモリ
の部分に配置する。
プログラミングによる悪影響から保護するため、このベ
クトルを、CPCのプログラマブル記憶域(つまり、主
記憶装置MS)に書き込まない。その代わり、ハードウ
ェア内など、CPCプログラミングから分離された特別
な場所に書き込む。しかし、ハードウェアは構築後は柔
軟でなくなるが、関連するLC内のLCBの数が変わる
可能性があるので、無効化ベクトルのサイズは柔軟でな
ければならない。したがって、本発明の好ましい実施例
では、LCをCPCプログラミングでアドレス可能な主
記憶装置(MS)に配置するが、ベクトル・ビットはC
PCプログラミングでアドレス不能なシステム・メモリ
の部分に配置する。
【0130】好ましい実施例では、コヒーレンス要求ベ
クトルは、CPCハードウェアおよびCPC内のCPU
中で実行されるマイクロコードだけがアドレス可能な、
CPCの「ハードウェア記憶域(HSA)」に配置す
る。IBMメインフレーム内では、HSAは、MSの拡
張部分として物理的に構築されているが、MS内のアド
レス空間の一部ではなく、CPUマイクロコード/ハー
ドウェアだけによってアドレスされる。したがって、H
SAには、オペレーティング・システムや、CPCのC
PU上で実行されるプログラム中のユーザ命令はアドレ
スできない。HSAにベクトル・ビットを書き込むと、
特殊なオペレーティング・システム・プログラムだけが
使用する特別の特権命令によってベクトル・ビットの位
置および状態設定が制御可能である。
クトルは、CPCハードウェアおよびCPC内のCPU
中で実行されるマイクロコードだけがアドレス可能な、
CPCの「ハードウェア記憶域(HSA)」に配置す
る。IBMメインフレーム内では、HSAは、MSの拡
張部分として物理的に構築されているが、MS内のアド
レス空間の一部ではなく、CPUマイクロコード/ハー
ドウェアだけによってアドレスされる。したがって、H
SAには、オペレーティング・システムや、CPCのC
PU上で実行されるプログラム中のユーザ命令はアドレ
スできない。HSAにベクトル・ビットを書き込むと、
特殊なオペレーティング・システム・プログラムだけが
使用する特別の特権命令によってベクトル・ビットの位
置および状態設定が制御可能である。
【0131】CPU命令: ベクトル定義:項目0ないしN−1から成る指定された
サイズのビット・ベクトル(N)が、CPC上で確立さ
れ、解放され、ゼロにクリアされ、拡大または縮小さ
れ、結果が条件コードで示される。
サイズのビット・ベクトル(N)が、CPC上で確立さ
れ、解放され、ゼロにクリアされ、拡大または縮小さ
れ、結果が条件コードで示される。
【0132】第1レジスタ・オペランドは、汎用レジス
タの奇偶対の偶数番号のレジスタを指定する。第2レジ
スタ・オペランドは、単一汎用レジスタを指定する。
タの奇偶対の偶数番号のレジスタを指定する。第2レジ
スタ・オペランドは、単一汎用レジスタを指定する。
【0133】汎用レジスタ1には、DEFINE VE
CTORの動作がどのように進行するか、および指定さ
れた汎用レジスタの内容がどのように解釈されるかを示
す符号なし2進整数が格納される。指定された汎用レジ
スタは、以下のうち1つまたは複数のものを格納するこ
とができる。
CTORの動作がどのように進行するか、および指定さ
れた汎用レジスタの内容がどのように解釈されるかを示
す符号なし2進整数が格納される。指定された汎用レジ
スタは、以下のうち1つまたは複数のものを格納するこ
とができる。
【0134】前のDEFINE VECTOR命令の実
行により現在割り当てられているローカル・キャッシュ
・トークン(LCT)。
行により現在割り当てられているローカル・キャッシュ
・トークン(LCT)。
【0135】ビット・ベクトル項目の数(NBVE)を
示す符号なし2進整数。NBVEはゼロにできない。
示す符号なし2進整数。NBVEはゼロにできない。
【0136】汎用レジスタ1の内容に応じて、DEFI
NE VECTORにより以下の動作の1つが実行され
る。
NE VECTORにより以下の動作の1つが実行され
る。
【0137】ローカル・キャッシュ・ベクトルの定義: ベクトルの解放 ベクトルのクリア ベクトル・サイズの変更
【0138】ローカル・キャッシュ・トークンは一意に
割り当てられる。トークンが割り当てられた後解放され
ると、そのトークンは再使用できない。
割り当てられる。トークンが割り当てられた後解放され
ると、そのトークンは再使用できない。
【0139】ローカル・キャッシュ・ベクトルの定義:
ローカル・キャッシュ・ベクトルを定義する場合、第2
レジスタに、定義されるローカル・キャッシュ・ビット
・ベクトル項目の数が格納される。
ローカル・キャッシュ・ベクトルを定義する場合、第2
レジスタに、定義されるローカル・キャッシュ・ビット
・ベクトル項目の数が格納される。
【0140】ローカル・キャッシュ・トークンが、CP
Cに対して定義されるローカル・キャッシュ・ビット・
ベクトルを識別するために割り当てられる。LCTは、
レジスタ1フィールドで指定されるレジスタ対の内容を
置換する。
Cに対して定義されるローカル・キャッシュ・ビット・
ベクトルを識別するために割り当てられる。LCTは、
レジスタ1フィールドで指定されるレジスタ対の内容を
置換する。
【0141】要求される各ローカル・キャッシュ・ビッ
ト・ベクトル項目当たり1ビットから成るビット・ベク
トルが確立される。ビット・ベクトルの左端のビット
は、ビット・ゼロと識別される。右端のビットは、ロー
カル・キャッシュ・ビット・ベクトル項目の数より1少
ない値で指定される。ビット・ベクトルが確立される
と、ローカル・キャッシュ・ビット・ベクトル項目はす
べて0になる。LCTは、ローカル・キャッシュ・ビッ
ト・ベクトルを識別する。
ト・ベクトル項目当たり1ビットから成るビット・ベク
トルが確立される。ビット・ベクトルの左端のビット
は、ビット・ゼロと識別される。右端のビットは、ロー
カル・キャッシュ・ビット・ベクトル項目の数より1少
ない値で指定される。ビット・ベクトルが確立される
と、ローカル・キャッシュ・ビット・ベクトル項目はす
べて0になる。LCTは、ローカル・キャッシュ・ビッ
ト・ベクトルを識別する。
【0142】ベクトルの解放:ベクトルを解放する場
合、第1レジスタ対に、解放されるLCTが格納され
る。
合、第1レジスタ対に、解放されるLCTが格納され
る。
【0143】ローカル・キャッシュ・トークンが解放さ
れ、そのトークンに対して存在するビット・ベクトルの
ビットが再使用可能になる。そのビット・ベクトルはも
はや存在せず、CPCに対して未定義となる。ビット・
ベクトルの諸ビットは、あらゆるビットがゼロにクリア
されて初めて、再使用のために割り当てられる。
れ、そのトークンに対して存在するビット・ベクトルの
ビットが再使用可能になる。そのビット・ベクトルはも
はや存在せず、CPCに対して未定義となる。ビット・
ベクトルの諸ビットは、あらゆるビットがゼロにクリア
されて初めて、再使用のために割り当てられる。
【0144】ベクトルのクリア:ベクトルがクリアされ
る場合、第1レジスタ対に、ゼロにクリアされるビット
・ベクトルを指定するLCTが格納される。
る場合、第1レジスタ対に、ゼロにクリアされるビット
・ベクトルを指定するLCTが格納される。
【0145】指定されたビット・ベクトル内のすべての
項目が、ゼロにクリアされる。
項目が、ゼロにクリアされる。
【0146】ベクトル・サイズの変更:ベクトルのサイ
ズを変更する場合、第1レジスタ対に、変更されるビッ
ト・ベクトルを指定するLCTが格納される。
ズを変更する場合、第1レジスタ対に、変更されるビッ
ト・ベクトルを指定するLCTが格納される。
【0147】第2レジスタ・フィールドで指定される汎
用レジスタに、ビット・ベクトル項目の数(NBVE)
を示す符号なし2進整数が入る。NBVEは、ゼロにす
ることができず、CPCでサポートされるビット・ベク
トル項目の最大数を超えることはない。
用レジスタに、ビット・ベクトル項目の数(NBVE)
を示す符号なし2進整数が入る。NBVEは、ゼロにす
ることができず、CPCでサポートされるビット・ベク
トル項目の最大数を超えることはない。
【0148】LCTによって識別されるビット・ベクト
ルについて、ビット・ベクトル項目の新規の数が確立さ
れる。そのビット・ベクトルが、CPCに対して再定義
される。LCTトークンは元のままである。ビット・ベ
クトルは、そのLCTを割り当てた前のDEFINE
VECTOR命令で確立され、ビット・ベクトル項目の
新規の数を反映するように右端のビット位置から拡大ま
たは縮小される。
ルについて、ビット・ベクトル項目の新規の数が確立さ
れる。そのビット・ベクトルが、CPCに対して再定義
される。LCTトークンは元のままである。ビット・ベ
クトルは、そのLCTを割り当てた前のDEFINE
VECTOR命令で確立され、ビット・ベクトル項目の
新規の数を反映するように右端のビット位置から拡大ま
たは縮小される。
【0149】ビット・ベクトルを拡大する場合、ビット
・ベクトルの拡大前に存在していた部分で反映されるビ
ット・ベクトル項目の状態は元のままであり、ビット・
ベクトルの新規に確立された部分で反映されるビット・
ベクトル項目はゼロに設定される。
・ベクトルの拡大前に存在していた部分で反映されるビ
ット・ベクトル項目の状態は元のままであり、ビット・
ベクトルの新規に確立された部分で反映されるビット・
ベクトル項目はゼロに設定される。
【0150】ビット・ベクトルを縮小する場合、ビット
・ベクトルの残りの部分で反映されるビット・ベクトル
項目の状態は元のままであり、ビット・ベクトルのもは
や必要でない部分は、各ビットがゼロにクリアされた
後、再使用できる。
・ベクトルの残りの部分で反映されるビット・ベクトル
項目の状態は元のままであり、ビット・ベクトルのもは
や必要でない部分は、各ビットがゼロにクリアされた
後、再使用できる。
【0151】ベクトル項目の設定:選択されたビット・
ベクトル項目の値が、1にセットされ、またはゼロにリ
セットされ、結果が条件コードで示される。
ベクトル項目の値が、1にセットされ、またはゼロにリ
セットされ、結果が条件コードで示される。
【0152】第1レジスタ・オペランドは、汎用レジス
タの奇偶対の偶数番号のレジスタを指定する。第2レジ
スタ・オペランドは、単一の汎用レジスタを指定する。
タの奇偶対の偶数番号のレジスタを指定する。第2レジ
スタ・オペランドは、単一の汎用レジスタを指定する。
【0153】汎用レジスタ1には、SET VECTO
R ENTRYの動作がどのように進行するかを示す符
号なし2進整数が格納される。第1汎用レジスタの内容
に応じて、SVEにより以下の2つの動作のどちらかが
実行される。
R ENTRYの動作がどのように進行するかを示す符
号なし2進整数が格納される。第1汎用レジスタの内容
に応じて、SVEにより以下の2つの動作のどちらかが
実行される。
【0154】ベクトル項目を1にセットする。ベクトル
項目をゼロにリセットする。
項目をゼロにリセットする。
【0155】第1レジスタ・オペランド・フィールドで
指定される汎用レジスタの対に、前のDEFINE V
ECTOR命令の実行により現在割り当てられているロ
ーカル・キャッシュ・トークン(LCT)が格納され
る。LCTは、ローカル・キャッシュ・ビット・ベクト
ルを識別する。
指定される汎用レジスタの対に、前のDEFINE V
ECTOR命令の実行により現在割り当てられているロ
ーカル・キャッシュ・トークン(LCT)が格納され
る。LCTは、ローカル・キャッシュ・ビット・ベクト
ルを識別する。
【0156】第2汎用レジスタ・フィールドで指定され
る汎用レジスタに、ローカル・キャッシュ項目番号(L
CEN)と呼ばれる符号なし2進整数が格納される。L
CENは、ビット・ベクトル内の項目を選択する。ビッ
ト・ベクトルの第1項目は、値0のLCENによって選
択される。ビット・ベクトルの最後の項目は、このビッ
ト・ベクトルと関連するビット・ベクトル項目の数より
1少ないLCENによって選択される。このビット・ベ
クトルの項目の数は、前のDEFINE VECTOR
命令によって確立された。
る汎用レジスタに、ローカル・キャッシュ項目番号(L
CEN)と呼ばれる符号なし2進整数が格納される。L
CENは、ビット・ベクトル内の項目を選択する。ビッ
ト・ベクトルの第1項目は、値0のLCENによって選
択される。ビット・ベクトルの最後の項目は、このビッ
ト・ベクトルと関連するビット・ベクトル項目の数より
1少ないLCENによって選択される。このビット・ベ
クトルの項目の数は、前のDEFINE VECTOR
命令によって確立された。
【0157】ローカル・キャッシュ・ベクトルを使用し
て実現される高性能キャッシュ相互問合せ機能は、SE
Sキャッシュ相互無効化プロセスと、特定のSESキャ
ッシュ・コマンドの実行の前後におけるプログラミング
によるローカル・キャッシュ・ベクトルの適当な操作と
によって実行される。
て実現される高性能キャッシュ相互問合せ機能は、SE
Sキャッシュ相互無効化プロセスと、特定のSESキャ
ッシュ・コマンドの実行の前後におけるプログラミング
によるローカル・キャッシュ・ベクトルの適当な操作と
によって実行される。
【0158】多くのSESキャッシュ・コマンドは、プ
ログラミングで、指定されたSESキャッシュ・データ
項目に対する権利を登録できるようにすることにより、
データのローカル・コピーをプロセッサ記憶域に保持可
能にする。データのローカル・コピーを保持すると、S
ES機構へのアクセスの回数が減少するので、性能が向
上する。ローカル側でキャッシュされたコピーは、SE
Sに登録された共用コピーに関して最新のコピーでなく
なるまで有効である。ローカル側でキャッシュされたコ
ピーは、相互無効化コマンドによって無効にできる。
ログラミングで、指定されたSESキャッシュ・データ
項目に対する権利を登録できるようにすることにより、
データのローカル・コピーをプロセッサ記憶域に保持可
能にする。データのローカル・コピーを保持すると、S
ES機構へのアクセスの回数が減少するので、性能が向
上する。ローカル側でキャッシュされたコピーは、SE
Sに登録された共用コピーに関して最新のコピーでなく
なるまで有効である。ローカル側でキャッシュされたコ
ピーは、相互無効化コマンドによって無効にできる。
【0159】ローカル・キャッシュ登録は、相互無効化
プロセスを使用可能にするのに必要である。ローカル・
キャッシュ登録は、SES機構で実行され、ローカル・
キャッシュ識別子、ローカル・キャッシュ・トークン、
およびローカル側でキャッシュされたデータのコピーに
関連するローカル・キャッシュ項目番号を記録すること
からなる。プログラミングが、ローカル側でキャッシュ
されたコピーに対する権利がSES機構に登録される際
に、ローカル・キャッシュ・ベクトル内のローカル側で
キャッシュされたデータ要素の妥当性を示す責任を負
う。この目的に、SET VECTOR ENTRY
(SVE)命令を使用する。
プロセスを使用可能にするのに必要である。ローカル・
キャッシュ登録は、SES機構で実行され、ローカル・
キャッシュ識別子、ローカル・キャッシュ・トークン、
およびローカル側でキャッシュされたデータのコピーに
関連するローカル・キャッシュ項目番号を記録すること
からなる。プログラミングが、ローカル側でキャッシュ
されたコピーに対する権利がSES機構に登録される際
に、ローカル・キャッシュ・ベクトル内のローカル側で
キャッシュされたデータ要素の妥当性を示す責任を負
う。この目的に、SET VECTOR ENTRY
(SVE)命令を使用する。
【0160】SESサポート機構は、データ要素に対す
る権利がSESに登録された後、登録を発生させたコマ
ンドに対する応答を受け取るまでの間に、指定されたロ
ーカル・キャッシュ・ベクトル項目に関する相互無効化
コマンドを受け取って実行できるので、プログラムによ
るローカル・キャッシュ・ベクトル項目の更新を、SE
Sコマンドの実行と逐次化する必要がある。プログラム
は、ローカル・キャッシュ・ベクトル項目が、介入して
くる相互無効化コマンドによって0にセットされた後、
1にセットされないようにする必要がある。そうしない
と、ローカル側でキャッシュされたデータ・ページの無
効化が検出されず、その結果データの保全性が失われる
可能性がある。
る権利がSESに登録された後、登録を発生させたコマ
ンドに対する応答を受け取るまでの間に、指定されたロ
ーカル・キャッシュ・ベクトル項目に関する相互無効化
コマンドを受け取って実行できるので、プログラムによ
るローカル・キャッシュ・ベクトル項目の更新を、SE
Sコマンドの実行と逐次化する必要がある。プログラム
は、ローカル・キャッシュ・ベクトル項目が、介入して
くる相互無効化コマンドによって0にセットされた後、
1にセットされないようにする必要がある。そうしない
と、ローカル側でキャッシュされたデータ・ページの無
効化が検出されず、その結果データの保全性が失われる
可能性がある。
【0161】プログラミングでは、ローカル・キャッシ
ュ登録の目的で項目を指定するSESキャッシュ・コマ
ンドを開始する前に、SVE命令を使用して、ローカル
・キャッシュ・ベクトル項目を1にセットする。コマン
ドの失敗が指示または推定される場合、SVE命令を使
用して、ローカル・キャッシュ・ベクトル項目を0にす
る必要がある。
ュ登録の目的で項目を指定するSESキャッシュ・コマ
ンドを開始する前に、SVE命令を使用して、ローカル
・キャッシュ・ベクトル項目を1にセットする。コマン
ドの失敗が指示または推定される場合、SVE命令を使
用して、ローカル・キャッシュ・ベクトル項目を0にす
る必要がある。
【0162】ベクトル項目のテスト:選択されたビット
・ベクトル項目の状態がテストされ、結果が状態コード
で示される。
・ベクトル項目の状態がテストされ、結果が状態コード
で示される。
【0163】第1レジスタ・オペランドは、汎用レジス
タの奇偶対の偶数番号のレジスタを指定する。第2レジ
スタ・オペランドは、単一の汎用レジスタを指定する。
タの奇偶対の偶数番号のレジスタを指定する。第2レジ
スタ・オペランドは、単一の汎用レジスタを指定する。
【0164】第1レジスタ・オペランド・フィールドで
指定される汎用レジスタ対に、前述のDEFINE V
ECTOR命令の実行によって現在割り当てられている
ローカル・キャッシュ・トークン(LCT)が格納され
る。LCTは、ローカル・キャッシュ・ビット・ベクト
ルを識別する。
指定される汎用レジスタ対に、前述のDEFINE V
ECTOR命令の実行によって現在割り当てられている
ローカル・キャッシュ・トークン(LCT)が格納され
る。LCTは、ローカル・キャッシュ・ビット・ベクト
ルを識別する。
【0165】第2汎用レジスタ・フィードバック信号で
指定される汎用レジスタに、ローカル・キャッシュ項目
番号(LCEN)と呼ばれる符号なし2進整数が格納さ
れる。LCENは、ビット・ベクトル内の項目を選択す
る。ビット・ベクトルの第1項目は、値ゼロのLCEN
によって選択される。ビット・ベクトルの最後の項目
は、このビット・ベクトルに関連するビット・ベクトル
項目の数より1少ないLCENによって選択される。こ
のビット・ベクトルの項目の数は、前のDEFINE
VECTOR命令によって確立された。
指定される汎用レジスタに、ローカル・キャッシュ項目
番号(LCEN)と呼ばれる符号なし2進整数が格納さ
れる。LCENは、ビット・ベクトル内の項目を選択す
る。ビット・ベクトルの第1項目は、値ゼロのLCEN
によって選択される。ビット・ベクトルの最後の項目
は、このビット・ベクトルに関連するビット・ベクトル
項目の数より1少ないLCENによって選択される。こ
のビット・ベクトルの項目の数は、前のDEFINE
VECTOR命令によって確立された。
【0166】TVEを使用すると、ローカル側でキャッ
シュされたSESキャッシュ・データ項目の妥当性を判
定するための高性能手段が提供される。TVAがローカ
ル側でキャッシュされたコピーの妥当性を示した後、ロ
ーカル側でキャッシュされたコピーをプログラムが処理
するまでの間に、SESに登録された共用データ・コピ
ーが更新されないようにするため、TVE実行中および
それに続くデータの使用中、SES常駐コピーの変更が
行われないように逐次化を保持する必要がある。
シュされたSESキャッシュ・データ項目の妥当性を判
定するための高性能手段が提供される。TVAがローカ
ル側でキャッシュされたコピーの妥当性を示した後、ロ
ーカル側でキャッシュされたコピーをプログラムが処理
するまでの間に、SESに登録された共用データ・コピ
ーが更新されないようにするため、TVE実行中および
それに続くデータの使用中、SES常駐コピーの変更が
行われないように逐次化を保持する必要がある。
【0167】ローカル側でキャッシュされた関連するデ
ータ項目が、SES機構に登録された共用コピーに関し
て最新のデータ項目であるとき、ローカル・キャッシュ
・ベクトル項目は1である。ローカル側でキャッシュさ
れた関連するデータ項目が、SES機構に登録された共
用コピーに関して最新のデータ項目でないとき、ローカ
ル・キャッシュ・ベクトル項目は0である。
ータ項目が、SES機構に登録された共用コピーに関し
て最新のデータ項目であるとき、ローカル・キャッシュ
・ベクトル項目は1である。ローカル側でキャッシュさ
れた関連するデータ項目が、SES機構に登録された共
用コピーに関して最新のデータ項目でないとき、ローカ
ル・キャッシュ・ベクトル項目は0である。
【0168】SESサポート機構コマンド: 相互無効化:SESサポート機構が相互無効化コマンド
を受け取ると、相互無効化動作が発生する。相互無効化
コマンドには、ローカル・キャッシュ・トークン(LC
T)およびローカル・キャッシュ項目番号(LCEN)
が含まれる。相互無効化動作には、選択されたローカル
・キャッシュ・ビット・ベクトル項目をゼロに設定し、
SES機構への応答によって、相互無効化動作が発生し
たことを示すことにより、ローカル・キャッシュ・トー
クンで指定されるローカル・キャッシュ内の、ローカル
・キャッシュ項目番号で選択されるローカル・キャッシ
ュ項目を無効化することが含まれる。
を受け取ると、相互無効化動作が発生する。相互無効化
コマンドには、ローカル・キャッシュ・トークン(LC
T)およびローカル・キャッシュ項目番号(LCEN)
が含まれる。相互無効化動作には、選択されたローカル
・キャッシュ・ビット・ベクトル項目をゼロに設定し、
SES機構への応答によって、相互無効化動作が発生し
たことを示すことにより、ローカル・キャッシュ・トー
クンで指定されるローカル・キャッシュ内の、ローカル
・キャッシュ項目番号で選択されるローカル・キャッシ
ュ項目を無効化することが含まれる。
【0169】ローカル・キャッシュ項目番号がこのロー
カル・キャッシュに関連するローカル・キャッシュ項目
の数より少ないかぎり、あるいは指定されたローカル・
キャッシュ・トークンが割当て済み状態であるかぎり、
選択されたローカル・キャッシュ・ビット・ベクトル項
目をゼロに設定すると、選択されたローカル・キャッシ
ュ項目が無効化される。これらの条件は、SESキャッ
シュ・ディレクトリ項目がこのローカル・キャッシュ項
目の妥当性を示している間に、ローカル・キャッシュの
サイズを変更するか、ローカル・キャッシュ・トークン
を解放する場合に発生し得る。
カル・キャッシュに関連するローカル・キャッシュ項目
の数より少ないかぎり、あるいは指定されたローカル・
キャッシュ・トークンが割当て済み状態であるかぎり、
選択されたローカル・キャッシュ・ビット・ベクトル項
目をゼロに設定すると、選択されたローカル・キャッシ
ュ項目が無効化される。これらの条件は、SESキャッ
シュ・ディレクトリ項目がこのローカル・キャッシュ項
目の妥当性を示している間に、ローカル・キャッシュの
サイズを変更するか、ローカル・キャッシュ・トークン
を解放する場合に発生し得る。
【0170】相互無効化動作が完了すると、相互無効化
動作によって選択されたローカル・キャッシュ項目の無
効状態が、構成内のどのCPUにも見えるようになる。
動作によって選択されたローカル・キャッシュ項目の無
効状態が、構成内のどのCPUにも見えるようになる。
【0171】メッセージ経路オブジェクト:一般に、複
数のプロセッサがSESコマンドを発行し、複数のリン
クが各プロセッサをSES機構に接続する。SES機構
は、コマンドの様々な資源を区別するメッセージ経路識
別子を割り当てる。
数のプロセッサがSESコマンドを発行し、複数のリン
クが各プロセッサをSES機構に接続する。SES機構
は、コマンドの様々な資源を区別するメッセージ経路識
別子を割り当てる。
【0172】メッセージ経路オブジェクトについて、以
下に要約する。
下に要約する。
【0173】メッセージ経路識別子(MI) メッセージ経路状態(MPS) メッセージ経路状況ベクトル 経路グループ システム識別子(SI)
【0174】メッセージ経路識別子(MI):SES機
構におけるメッセージ経路の識別に使用する8バイトの
値。コマンドの各資源ごとに一意のメッセージ経路識別
子がある。
構におけるメッセージ経路の識別に使用する8バイトの
値。コマンドの各資源ごとに一意のメッセージ経路識別
子がある。
【0175】メッセージ経路状態(MPS):メッセー
ジ経路の状態を指定する、1バイトの16進値。X^0
0^の値は、経路が非活動状態であることを示し、X^0
1^の値は、経路が活動状態であることを示す。
ジ経路の状態を指定する、1バイトの16進値。X^0
0^の値は、経路が非活動状態であることを示し、X^0
1^の値は、経路が活動状態であることを示す。
【0176】メッセージ経路状況ベクトル:メッセージ
経路状況ベクトル・オブジェクトには、SES機構にお
ける各メッセージ経路の状態情報が格納される。メッセ
ージ経路状況ベクトルは、以下のような、各メッセージ
経路のオブジェクトを備える。
経路状況ベクトル・オブジェクトには、SES機構にお
ける各メッセージ経路の状態情報が格納される。メッセ
ージ経路状況ベクトルは、以下のような、各メッセージ
経路のオブジェクトを備える。
【0177】メッセージ経路状態(MPS) システム識別子(SI)
【0178】経路グループ:同じ値のシステム識別子
(SI)を持つ1組のメッセージ経路が、システムの経
路グループである。
(SI)を持つ1組のメッセージ経路が、システムの経
路グループである。
【0179】システム識別子(SI):メッセージ経路
を活動化する際にプログラムによって指定される8バイ
トの値。制御プログラムは、システムとSES機構の間
で活動化されるすべての経路に同一のシステム識別子を
指定する。
を活動化する際にプログラムによって指定される8バイ
トの値。制御プログラムは、システムとSES機構の間
で活動化されるすべての経路に同一のシステム識別子を
指定する。
【0180】キャッシュ構造体:各SESキャッシュ構
造体について1組のキャッシュ構造オブジェクトが確立
される。キャッシュ構造オブジェクトは、以下のものか
ら構成される。
造体について1組のキャッシュ構造オブジェクトが確立
される。キャッシュ構造オブジェクトは、以下のものか
ら構成される。
【0181】キャッシュ制御 ローカル・キャッシュ制御 ディレクトリ ローカル・キャッシュ・レジスタ データ域
【0182】キャッシュ制御: データ域要素特性(DAEX):各データ域要素内のバ
イトの数を指定する、1バイトの符号なし2進整数。バ
イト単位で表したデータ域要素のサイズは、256と、
データ域要素特性で指定された値をべき指数とする2の
累乗との積である。バイト単位で表した有効サイズは、
256から最大データ域要素サイズまでである。
イトの数を指定する、1バイトの符号なし2進整数。バ
イト単位で表したデータ域要素のサイズは、256と、
データ域要素特性で指定された値をべき指数とする2の
累乗との積である。バイト単位で表した有効サイズは、
256から最大データ域要素サイズまでである。
【0183】LCIDベクトル(LCIDV):初期値
がゼロのビット文字列。ビット位置は、0から開始し、
順次増加していく。文字列内の位置(i)におけるビッ
トは、LCID値が(i)のローカル・キャッシュが付
加されたとき、1に設定される。ビットが1のとき、ロ
ーカル・キャッシュ識別子が割り当てられる。位置
(i)におけるビットは、ローカル・キャッシュが切断
され、LCID割当て解除が要求されるとき、あるいは
キャッシュ構造体が割振り解除されるとき、ゼロにリセ
ットされる。ビットがゼロのとき、ローカル・キャッシ
ュ識別子は割り当てられない。
がゼロのビット文字列。ビット位置は、0から開始し、
順次増加していく。文字列内の位置(i)におけるビッ
トは、LCID値が(i)のローカル・キャッシュが付
加されたとき、1に設定される。ビットが1のとき、ロ
ーカル・キャッシュ識別子が割り当てられる。位置
(i)におけるビットは、ローカル・キャッシュが切断
され、LCID割当て解除が要求されるとき、あるいは
キャッシュ構造体が割振り解除されるとき、ゼロにリセ
ットされる。ビットがゼロのとき、ローカル・キャッシ
ュ識別子は割り当てられない。
【0184】最大データ域サイズ(MDAS):データ
域の最大可能サイズをデータ域要素サイズの整数倍数と
して指定する、5ビットの符号なし2進整数。最大デー
タ域サイズは、キャッシュを割り振る際にプログラムに
よって設定される。
域の最大可能サイズをデータ域要素サイズの整数倍数と
して指定する、5ビットの符号なし2進整数。最大デー
タ域サイズは、キャッシュを割り振る際にプログラムに
よって設定される。
【0185】構造体サイズ(SS):キャッシュに割り
振られるSES記憶域の4Kバイト単位の数を指定す
る、4バイトの符号なし2進整数。
振られるSES記憶域の4Kバイト単位の数を指定す
る、4バイトの符号なし2進整数。
【0186】合計データ域要素カウント(TDAE
C):キャッシュに割り振られるデータ域要素の数を指
定する、4バイトの符号なし2進整数。
C):キャッシュに割り振られるデータ域要素の数を指
定する、4バイトの符号なし2進整数。
【0187】合計ディレクトリ項目カウント(TDE
C):キャッシュに割り振られるディレクトリ項目の数
を指定する、4バイトの符号なし2進整数。
C):キャッシュに割り振られるディレクトリ項目の数
を指定する、4バイトの符号なし2進整数。
【0188】ローカル・キャッシュ制御:ローカル・キ
ャッシュ制御は、SESキャッシュにローカル・キャッ
シュが接続されるとき初期設定され、ローカル・キャッ
シュ識別子が割当て解除されるとき削除される。ローカ
ル・キャッシュ制御は、ローカル・キャッシュ識別子が
割り当てられているとき有効である。
ャッシュ制御は、SESキャッシュにローカル・キャッ
シュが接続されるとき初期設定され、ローカル・キャッ
シュ識別子が割当て解除されるとき削除される。ローカ
ル・キャッシュ制御は、ローカル・キャッシュ識別子が
割り当てられているとき有効である。
【0189】ローカル・キャッシュ制御について、以下
に要約する。
に要約する。
【0190】切断再開トークン(DRT): ローカル・キャッシュ・トークン(LCT) システム識別子(SI)
【0191】切断再開トークン(DRT):切断プロセ
スの制御に使用される、8バイトの値。初期値はゼロで
ある。
スの制御に使用される、8バイトの値。初期値はゼロで
ある。
【0192】ローカル・キャッシュ・トークン(LC
T):CPC上のローカル・キャッシュの識別に使用さ
れる、8バイトの値。
T):CPC上のローカル・キャッシュの識別に使用さ
れる、8バイトの値。
【0193】システム識別子(SI):メッセージ経路
が活動化される際にプログラムによって指定される、8
バイトの値。システム識別子は、メッセージ経路状況ベ
クトル中で維持され、メッセージ経路上でローカル・キ
ャッシュ付加コマンドが送られる際にローカル・キャッ
シュにコピーされる。ローカル・キャッシュ・トークン
は、相互無効化コマンド上で提供され、SESサポート
機構によってチェックされる。
が活動化される際にプログラムによって指定される、8
バイトの値。システム識別子は、メッセージ経路状況ベ
クトル中で維持され、メッセージ経路上でローカル・キ
ャッシュ付加コマンドが送られる際にローカル・キャッ
シュにコピーされる。ローカル・キャッシュ・トークン
は、相互無効化コマンド上で提供され、SESサポート
機構によってチェックされる。
【0194】ディレクトリ:ディレクトリは、SESロ
ーカル・キャッシュおよび接続されたローカル・キャッ
シュの状態情報および位置情報のレポジトリである。S
ESキャッシュ記憶域に格納される、各名前付きデータ
・ブロックは、関連するディレクトリ項目を有する。デ
ィレクトリ項目は、完全連想式アレイとして配列されて
おり、名前フィールドの値を使用してアクセスされる。
ーカル・キャッシュおよび接続されたローカル・キャッ
シュの状態情報および位置情報のレポジトリである。S
ESキャッシュ記憶域に格納される、各名前付きデータ
・ブロックは、関連するディレクトリ項目を有する。デ
ィレクトリ項目は、完全連想式アレイとして配列されて
おり、名前フィールドの値を使用してアクセスされる。
【0195】ディレクトリ項目フィールド(図4)につ
いて、以下に要約する。
いて、以下に要約する。
【0196】変更ビット データ・ビット データ域サイズ ローカル・キャッシュ・レジスタおよび索引 名前 有効ビット
【0197】変更ビット(C)(404):データの変
更状態を示す1ビットの値。変更ビットが1のとき、デ
ータは変更された状態でキャッシュされる。変更ビット
がゼロのとき、データはキャッシュされていず、あるい
はキャッシュされたが変更されていない。データが変更
済み状態であるときは、データの最新バージョンがキャ
ッシュに常駐する。変更ビットが1のとき、データ・ビ
ットも1でなければならない。
更状態を示す1ビットの値。変更ビットが1のとき、デ
ータは変更された状態でキャッシュされる。変更ビット
がゼロのとき、データはキャッシュされていず、あるい
はキャッシュされたが変更されていない。データが変更
済み状態であるときは、データの最新バージョンがキャ
ッシュに常駐する。変更ビットが1のとき、データ・ビ
ットも1でなければならない。
【0198】データ・ビット(D)(403):SES
キャッシュにデータが配置されているかどうかを示す、
1ビットの値。データ・ビットが1のとき、データはキ
ャッシュされている。データ・ビットがゼロのとき、デ
ータはキャッシュされていない。
キャッシュにデータが配置されているかどうかを示す、
1ビットの値。データ・ビットが1のとき、データはキ
ャッシュされている。データ・ビットがゼロのとき、デ
ータはキャッシュされていない。
【0199】データ域サイズ(DAS)(407):デ
ータ域のサイズをデータ域要素サイズの整数倍として指
定する、5ビットの符号なし2進整数。初期値は、ディ
レクトリ項目が割り当てられているとき0にセットさ
れ、データ・ビットが1にセットされないかぎりそのま
まである。
ータ域のサイズをデータ域要素サイズの整数倍として指
定する、5ビットの符号なし2進整数。初期値は、ディ
レクトリ項目が割り当てられているとき0にセットさ
れ、データ・ビットが1にセットされないかぎりそのま
まである。
【0200】データ域記憶域(406):各ディレクト
リ項目は、k個のデータ域要素ポインタ1ないしnも有
する。これらにはそれぞれ、キャッシュ・データ域内の
様々なブロック域(406Aないし406N)のポイン
タが格納される。これらのポインタはそれぞれ、SES
メモリ内のどこのデータ域要素にもアドレスできる。し
たがって、ディレクトリ項目によって参照されるレコー
ドは、SESメモリ内に分散する最大N個のデータ域要
素に入れることができる。
リ項目は、k個のデータ域要素ポインタ1ないしnも有
する。これらにはそれぞれ、キャッシュ・データ域内の
様々なブロック域(406Aないし406N)のポイン
タが格納される。これらのポインタはそれぞれ、SES
メモリ内のどこのデータ域要素にもアドレスできる。し
たがって、ディレクトリ項目によって参照されるレコー
ドは、SESメモリ内に分散する最大N個のデータ域要
素に入れることができる。
【0201】ローカル・キャッシュ・レジスタ(LC
R)(図5、図6):ローカル・キャッシュ・レジスタ
は、ローカル側でキャッシュされたデータ・ブロックの
コピーの位置に関する情報を格納するテーブルである。
テーブルの各行が、1つのディレクトリ項目に該当す
る。各列には、ローカル・キャッシュ識別子(502
A、502B、502C)、ローカル・キャッシュ項目
番号(503A、503B、503C)、およびローカ
ル・キャッシュ項目番号の有効ビット(501A、50
1B、501C)が含まれる。
R)(図5、図6):ローカル・キャッシュ・レジスタ
は、ローカル側でキャッシュされたデータ・ブロックの
コピーの位置に関する情報を格納するテーブルである。
テーブルの各行が、1つのディレクトリ項目に該当す
る。各列には、ローカル・キャッシュ識別子(502
A、502B、502C)、ローカル・キャッシュ項目
番号(503A、503B、503C)、およびローカ
ル・キャッシュ項目番号の有効ビット(501A、50
1B、501C)が含まれる。
【0202】有効なローカル・キャッシュ項目番号は、
指定された名前およびローカル・キャッシュに対して登
録プロセスが実行されたとき、ローカル・キャッシュ・
レジスタに登録される。ローカル・キャッシュ項目番号
が無効化されるのは、ローカル・キャッシュが切断され
るとき、あるいは指定された名前に対してローカル・コ
ピー無効化プロセスまたは補足コピー無効化プロセスが
実行され、かつローカル・キャッシュが、無効化される
1組のローカル・キャッシュの1つであるときである。
指定された名前およびローカル・キャッシュに対して登
録プロセスが実行されたとき、ローカル・キャッシュ・
レジスタに登録される。ローカル・キャッシュ項目番号
が無効化されるのは、ローカル・キャッシュが切断され
るとき、あるいは指定された名前に対してローカル・コ
ピー無効化プロセスまたは補足コピー無効化プロセスが
実行され、かつローカル・キャッシュが、無効化される
1組のローカル・キャッシュの1つであるときである。
【0203】図6は、ローカル・キャッシュ・レジスタ
(LCR)構造体の1実施例を示している。その項目に
は、j個のLCIDフィールドが含まれる。ただしj
は、シスプレックス内でSESキャッシュに接続できる
ローカル・キャッシュの最大数である。LCRの各項目
には、有効ビット(v)およびLCEN値(504A、
504B、および504C)が含まれる。vビットは、
そのフィールドがLCIDを表す場合、1にセットされ
る。vが0の場合、そのフィールドはいかなるLCID
値も表さない。
(LCR)構造体の1実施例を示している。その項目に
は、j個のLCIDフィールドが含まれる。ただしj
は、シスプレックス内でSESキャッシュに接続できる
ローカル・キャッシュの最大数である。LCRの各項目
には、有効ビット(v)およびLCEN値(504A、
504B、および504C)が含まれる。vビットは、
そのフィールドがLCIDを表す場合、1にセットされ
る。vが0の場合、そのフィールドはいかなるLCID
値も表さない。
【0204】LCID値は、ローカル・キャッシュをS
ESキャッシュに接続する要求が出たとき、オペレーテ
ィング・システム・ソフトウェアによって割り当てられ
る。LCR内の項目は、LCID値の順に並べられる。
LCID1の有効フィールドおよびLCENフィールド
が第1LCR項目位置にあり、LCID2の有効フィー
ルドおよびLCENフィールドが第2LCR項目位置に
あり、以下同様にしてLCIDjの有効フィールドおよ
びLCENフィールドまで続く。
ESキャッシュに接続する要求が出たとき、オペレーテ
ィング・システム・ソフトウェアによって割り当てられ
る。LCR内の項目は、LCID値の順に並べられる。
LCID1の有効フィールドおよびLCENフィールド
が第1LCR項目位置にあり、LCID2の有効フィー
ルドおよびLCENフィールドが第2LCR項目位置に
あり、以下同様にしてLCIDjの有効フィールドおよ
びLCENフィールドまで続く。
【0205】名前(N)(401):指定されたデータ
・オブジェクトがキャッシュに登録される際にプログラ
ムによって指定される、16バイトの値。
・オブジェクトがキャッシュに登録される際にプログラ
ムによって指定される、16バイトの値。
【0206】有効ビット(V)(402):ディレクト
リ項目の有効状態を示す、1ビットのフィールド。2つ
の可能な値は0と1であり、0は無効、1は有効を表
す。ディレクトリ項目は無効状態に初期設定される。無
効状態では、ディレクトリ項目が名前への割当てに利用
可能である。有効状態は、名前が割り当てられており、
ディレクトリ項目の残りのフィールドが有効であること
を示す。
リ項目の有効状態を示す、1ビットのフィールド。2つ
の可能な値は0と1であり、0は無効、1は有効を表
す。ディレクトリ項目は無効状態に初期設定される。無
効状態では、ディレクトリ項目が名前への割当てに利用
可能である。有効状態は、名前が割り当てられており、
ディレクトリ項目の残りのフィールドが有効であること
を示す。
【0207】SESディレクトリ項目のハッシュ・アク
セス:図3に、好ましい実施例におけるSESディレク
トリの動作方式を示す。ディレクトリ項目は、レコード
の名前を使用して探索される。
セス:図3に、好ましい実施例におけるSESディレク
トリの動作方式を示す。ディレクトリ項目は、レコード
の名前を使用して探索される。
【0208】ハッシュ・テーブル301によって、必要
なディレクトリ項目を迅速に見つけるための探索動作が
可能になる。探索動作では、当技術分野で多数のものが
知られているハッシング・アルゴリズム(303)を使
用して、CPCコマンド中で受け取ったデータ名をハッ
シュする(302)。たとえば、ハッシュ動作は、受け
取った名前中の探索されるバイトに対する排他的OR動
作とすることができる。ハッシュ動作は、ハッシュ・ア
ンカー・テーブル内の項目のハッシュ・テーブル・アド
レスを生成する。異なる名前が、テーブル内の異なる項
目位置に分散されたアドレスを生成するかぎり、どのよ
うなハッシュ・テーブル・アドレスでも名前ごとに生成
できる。各ハッシュ・テーブル項目には、キャッシュ・
ディレクトリ項目のアドレスが含まれる。
なディレクトリ項目を迅速に見つけるための探索動作が
可能になる。探索動作では、当技術分野で多数のものが
知られているハッシング・アルゴリズム(303)を使
用して、CPCコマンド中で受け取ったデータ名をハッ
シュする(302)。たとえば、ハッシュ動作は、受け
取った名前中の探索されるバイトに対する排他的OR動
作とすることができる。ハッシュ動作は、ハッシュ・ア
ンカー・テーブル内の項目のハッシュ・テーブル・アド
レスを生成する。異なる名前が、テーブル内の異なる項
目位置に分散されたアドレスを生成するかぎり、どのよ
うなハッシュ・テーブル・アドレスでも名前ごとに生成
できる。各ハッシュ・テーブル項目には、キャッシュ・
ディレクトリ項目のアドレスが含まれる。
【0209】各ハッシュ・テーブル項目には、ロック・
フィールドおよびポインタ・フィールドが含まれる。ロ
ック・フィールドは、たとえば、現在ロックを保持して
いる要求側を表す標識をその中に置き、ロック・フィー
ルドを共通の値に設定して、当該要素がロックされてお
らず、どのような要求側によるアクセスにも使用できる
時を示すという、周知のロッキング・ソフトウェア・プ
ロトコルを使用する。各ハッシュ・テーブル項目には、
当初は0にセットされて、ポインタ・アドレスを含まな
いことを示す、ポインタ・フィールドも含まれる。
フィールドおよびポインタ・フィールドが含まれる。ロ
ック・フィールドは、たとえば、現在ロックを保持して
いる要求側を表す標識をその中に置き、ロック・フィー
ルドを共通の値に設定して、当該要素がロックされてお
らず、どのような要求側によるアクセスにも使用できる
時を示すという、周知のロッキング・ソフトウェア・プ
ロトコルを使用する。各ハッシュ・テーブル項目には、
当初は0にセットされて、ポインタ・アドレスを含まな
いことを示す、ポインタ・フィールドも含まれる。
【0210】ハッシュ・テーブル項目のクラスに少なく
とも1つのキャッシュ・ディレクトリ項目(DE)が存
在するとき、ポインタ・フィールドは、そのクラスの任
意の項目のアドレスで設定される。同じクラスに次のD
Eが存在するとき、第1のDEのハッシュ・クラス・ポ
インタ・フィールドが、第2のDEのアドレスで設定さ
れ、以下同様にして、ディレクトリに次のDEが追加さ
れるたびに前のポインタ・フィールドが設定され、最後
のDEでは、ハッシュ・クラス・ポインタ・フィールド
が0になる。
とも1つのキャッシュ・ディレクトリ項目(DE)が存
在するとき、ポインタ・フィールドは、そのクラスの任
意の項目のアドレスで設定される。同じクラスに次のD
Eが存在するとき、第1のDEのハッシュ・クラス・ポ
インタ・フィールドが、第2のDEのアドレスで設定さ
れ、以下同様にして、ディレクトリに次のDEが追加さ
れるたびに前のポインタ・フィールドが設定され、最後
のDEでは、ハッシュ・クラス・ポインタ・フィールド
が0になる。
【0211】データ域:データ域とは、単一の名前付き
データ・オブジェクトの内容を格納する記憶域オブジェ
クトである。名前付きデータ・オブジェクトが最初にキ
ャッシュに書き込まれるとき、データ域がディレクトリ
項目と関連付けられ、再利用動作が発生するかあるいは
名前が無効にならないかぎり、関連付けられたままであ
る。データ域は、1〜16個のデータ域要素で構成され
ている。データ域サイズは、名前付きデータ・オブジェ
クトが書き込まれるときに決定される。
データ・オブジェクトの内容を格納する記憶域オブジェ
クトである。名前付きデータ・オブジェクトが最初にキ
ャッシュに書き込まれるとき、データ域がディレクトリ
項目と関連付けられ、再利用動作が発生するかあるいは
名前が無効にならないかぎり、関連付けられたままであ
る。データ域は、1〜16個のデータ域要素で構成され
ている。データ域サイズは、名前付きデータ・オブジェ
クトが書き込まれるときに決定される。
【0212】キャッシュ構造体状態:キャッシュ構造体
には、関連する2種の状態がある。それらは以下のとお
りである。
には、関連する2種の状態がある。それらは以下のとお
りである。
【0213】ローカル・キャッシュ状態 ローカル・キャッシュ識別子状態
【0214】ローカル・キャッシュ状態:キャッシュ構
造体ローカル・キャッシュは、関連するローカル・キャ
ッシュ識別子が割り当てられているときに存在する。ロ
ーカル・キャッシュは、ローカル・キャッシュ付加コマ
ンドによって付加状態になる。ローカル・キャッシュ
は、ローカル・キャッシュ切断(detach−loc
al−cache)コマンドによって切断プロセスが完
了した時点で切断状態になる。
造体ローカル・キャッシュは、関連するローカル・キャ
ッシュ識別子が割り当てられているときに存在する。ロ
ーカル・キャッシュは、ローカル・キャッシュ付加コマ
ンドによって付加状態になる。ローカル・キャッシュ
は、ローカル・キャッシュ切断(detach−loc
al−cache)コマンドによって切断プロセスが完
了した時点で切断状態になる。
【0215】ローカル・キャッシュ識別子状態:ローカ
ル・キャッシュ識別子は、ローカル・キャッシュ識別子
ベクトルの関連する割当てビットが1のとき、割当て状
態である。ローカル・キャッシュ識別子は、ローカル・
キャッシュ付加コマンドによって割当て状態になる。ロ
ーカル・キャッシュ識別子は、ローカル・キャッシュ識
別子ベクトルの関連する割当てビットが0のとき、割当
て解除状態である。ローカル・キャッシュ識別子は、L
CID割当て解除制御に応じて、ローカル・キャッシュ
切断コマンドによって割当て解除状態になる。
ル・キャッシュ識別子は、ローカル・キャッシュ識別子
ベクトルの関連する割当てビットが1のとき、割当て状
態である。ローカル・キャッシュ識別子は、ローカル・
キャッシュ付加コマンドによって割当て状態になる。ロ
ーカル・キャッシュ識別子は、ローカル・キャッシュ識
別子ベクトルの関連する割当てビットが0のとき、割当
て解除状態である。ローカル・キャッシュ識別子は、L
CID割当て解除制御に応じて、ローカル・キャッシュ
切断コマンドによって割当て解除状態になる。
【0216】キャッシュ構造体のオペランド:SESキ
ャッシュ・コヒーレンシに関連するキャッシュ構造体オ
ペランドについて、以下に要約する。
ャッシュ・コヒーレンシに関連するキャッシュ構造体オ
ペランドについて、以下に要約する。
【0217】割当て制御(AC):割当て制御は、名前
割当てプロセスを制御する、1ビットの値である。2つ
の可能な値として、0(割当て抑制)と1(必要時割当
て)がある。
割当てプロセスを制御する、1ビットの値である。2つ
の可能な値として、0(割当て抑制)と1(必要時割当
て)がある。
【0218】接続情報(AI):ローカル・キャッシュ
が接続されるとき、プログラムによって設定される値。
が接続されるとき、プログラムによって設定される値。
【0219】変更制御(CHGC):変更制御は、デー
タの書込みにどのプロセスを使うかを選択する、1ビッ
トの値である。2つの可能な値として、0(未変更デー
タ書込み)と1(変更済みデータ書込み)がある。
タの書込みにどのプロセスを使うかを選択する、1ビッ
トの値である。2つの可能な値として、0(未変更デー
タ書込み)と1(変更済みデータ書込み)がある。
【0220】データ域サイズ(DAS):データ域のサ
イズを、データ域要素サイズの整数倍として指定する、
5ビットの2進値。有効な値は、0から最大データ域サ
イズまでの範囲である。
イズを、データ域要素サイズの整数倍として指定する、
5ビットの2進値。有効な値は、0から最大データ域サ
イズまでの範囲である。
【0221】データ・ブロック・サイズ(DBS):デ
ータ・ブロックのサイズを4096バイト単位の整数倍
として指定する、5ビットの2進値。
ータ・ブロックのサイズを4096バイト単位の整数倍
として指定する、5ビットの2進値。
【0222】目標ディレクトリ/データ比(TDTD
R):データ域要素に対するディレクトリ項目の相対数
を指定する、2つの1バイト符号なし2進整数から成る
2バイトのフィールド。第1バイトで指定される整数を
2つの数の合計で割った値は、ディレクトリ項目の数
の、ディレクトリ項目とディレクトリ項目に関連するデ
ータ域要素との合計数に対する比率を表す。第2バイト
で指定された整数を2つの数の合計で割った値は、デー
タ域要素の数の、上記合計数に対する比率である。
R):データ域要素に対するディレクトリ項目の相対数
を指定する、2つの1バイト符号なし2進整数から成る
2バイトのフィールド。第1バイトで指定される整数を
2つの数の合計で割った値は、ディレクトリ項目の数
の、ディレクトリ項目とディレクトリ項目に関連するデ
ータ域要素との合計数に対する比率を表す。第2バイト
で指定された整数を2つの数の合計で割った値は、デー
タ域要素の数の、上記合計数に対する比率である。
【0223】無効化ローカル・キャッシュ項目番号(I
LCEN):ローカル・キャッシュ項目登録プロセスで
置換されるローカル・キャッシュ項目番号を指定する、
4バイトの符号なし2進整数。
LCEN):ローカル・キャッシュ項目登録プロセスで
置換されるローカル・キャッシュ項目番号を指定する、
4バイトの符号なし2進整数。
【0224】ILCEN妥当性標識(ILCENV):
1のとき、無効化ローカル・キャッシュ項目番号応答オ
ペランドの妥当性を示す、1ビットの値。
1のとき、無効化ローカル・キャッシュ項目番号応答オ
ペランドの妥当性を示す、1ビットの値。
【0225】LCID割当て解除制御(LUC):ロー
カル・キャッシュ識別子の割当て解除を制御する、1ビ
ットの値。値がB^1^のとき、ローカル・キャッシュ識
別子は割当て解除され、ローカル・キャッシュ制御がリ
セットされる。LCID値は割当てに利用できる。値が
B^0^のとき、LCIDベクトルおよびローカル・キャ
ッシュ制御は更新されない。
カル・キャッシュ識別子の割当て解除を制御する、1ビ
ットの値。値がB^1^のとき、ローカル・キャッシュ識
別子は割当て解除され、ローカル・キャッシュ制御がリ
セットされる。LCID値は割当てに利用できる。値が
B^0^のとき、LCIDベクトルおよびローカル・キャ
ッシュ制御は更新されない。
【0226】ローカル・キャッシュ項目番号(LCE
N):ローカル・キャッシュ項目を指定する、4バイト
の符号なし2進整数。
N):ローカル・キャッシュ項目を指定する、4バイト
の符号なし2進整数。
【0227】ローカル・キャッシュ項目登録制御(LC
ERC):ローカル・キャッシュ項目登録プロセスを制
御する、1ビットの値。
ERC):ローカル・キャッシュ項目登録プロセスを制
御する、1ビットの値。
【0228】ローカル・キャッシュ識別子(LCI
D):ローカル・キャッシュを識別する、1バイトの符
号なし2進整数。
D):ローカル・キャッシュを識別する、1バイトの符
号なし2進整数。
【0229】ローカル・キャッシュ・トークン(lC
T):CPC内のローカル・キャッシュを識別する、8
バイトの値。ローカル・キャッシュ・トークンの値は、
定義済みローカル・キャッシュを識別しなければならな
い。
T):CPC内のローカル・キャッシュを識別する、8
バイトの値。ローカル・キャッシュ・トークンの値は、
定義済みローカル・キャッシュを識別しなければならな
い。
【0230】最大データ域サイズ(MDAS):データ
域の最大可能サイズをデータ域要素サイズの整数倍とし
て指定する、5ビットの2進値。
域の最大可能サイズをデータ域要素サイズの整数倍とし
て指定する、5ビットの2進値。
【0231】名前(N):記憶階層中のデータ・ブロッ
クを識別する、16バイトの値。
クを識別する、16バイトの値。
【0232】名前マスク(NM):名前の比較に使用さ
れるバイトを決定する、2バイトの値。
れるバイトを決定する、2バイトの値。
【0233】名前置換制御(NRC):名前置換プロセ
スを制御する、1ビットの値。0は置換抑制、1は名前
置換である。
スを制御する、1ビットの値。0は置換抑制、1は名前
置換である。
【0234】置換名(RN):ローカル・キャッシュ内
で置換されるデータ・ブロックを識別する、16バイト
の値。
で置換されるデータ・ブロックを識別する、16バイト
の値。
【0235】再開トークン(RT):ディレクトリが複
数のコマンドに及ばないように動作の処理を制御する、
8バイトの値。
数のコマンドに及ばないように動作の処理を制御する、
8バイトの値。
【0236】構造体サイズ(SS):キャッシュ構造体
に割り振られるSES記憶域の4096バイト単位の数
を指定する、4バイトの値。
に割り振られるSES記憶域の4096バイト単位の数
を指定する、4バイトの値。
【0237】合計データ域要素カウント(TDAE
C):キャッシュに割り振られるデータ域要素の数を指
定する、4バイトの符号なし2進整数。
C):キャッシュに割り振られるデータ域要素の数を指
定する、4バイトの符号なし2進整数。
【0238】合計ディレクトリ項目カウント(TDE
C):キャッシュに割り振られるディレクトリ項目の数
を指定する、4バイトの符号なし2進整数。
C):キャッシュに割り振られるディレクトリ項目の数
を指定する、4バイトの符号なし2進整数。
【0239】キャッシュ構造体の諸プロセス:以下のプ
ロセスが、各種のキャッシュ構造体コマンドによって呼
び出される。コマンドによって呼び出される1組のプロ
セスは、コマンド記述にリストされる。
ロセスが、各種のキャッシュ構造体コマンドによって呼
び出される。コマンドによって呼び出される1組のプロ
セスは、コマンド記述にリストされる。
【0240】キャッシュ構造体の割振り:キャッシュ構
造体は、まだ存在しない構造体に関してキャッシュ構造
体割振り(allocate−cache−struc
ture)コマンドが初めて首尾よく呼び出された時点
で作成される。キャッシュ構造体は、キャッシュ構造体
割振りコマンドが1回または複数回首尾よく呼び出され
た後に最初に割り振られる。これらの動作を一般に、キ
ャッシュ割振りプロセスと呼ぶ。
造体は、まだ存在しない構造体に関してキャッシュ構造
体割振り(allocate−cache−struc
ture)コマンドが初めて首尾よく呼び出された時点
で作成される。キャッシュ構造体は、キャッシュ構造体
割振りコマンドが1回または複数回首尾よく呼び出され
た後に最初に割り振られる。これらの動作を一般に、キ
ャッシュ割振りプロセスと呼ぶ。
【0241】キャッシュ構造体割振りコマンドは、応答
コード0または1が返されると成功である。
コード0または1が返されると成功である。
【0242】キャッシュ割振りプロセスのチェックポイ
ント動作:キャッシュ構造体作成後、キャッシュ構造体
割振りコマンドは、0または1の応答コードが返される
とき必ずチェックポイントされる。キャッシュ構造体作
成後、割振りプロセスは、キャッシュ構造体割振りコマ
ンドが首尾よく実行される間、またはキャッシュ構造体
割振りコマンドが成功した結果、背景処理が継続すると
き、いつでもチェックポイントできる。キャッシュ構造
体割振りコマンドの成功による背景処理は、0の応答コ
ードが返されると停止する。
ント動作:キャッシュ構造体作成後、キャッシュ構造体
割振りコマンドは、0または1の応答コードが返される
とき必ずチェックポイントされる。キャッシュ構造体作
成後、割振りプロセスは、キャッシュ構造体割振りコマ
ンドが首尾よく実行される間、またはキャッシュ構造体
割振りコマンドが成功した結果、背景処理が継続すると
き、いつでもチェックポイントできる。キャッシュ構造
体割振りコマンドの成功による背景処理は、0の応答コ
ードが返されると停止する。
【0243】キャッシュ割振りプロセスがチェックポイ
ントされるとき、構造体サイズ、合計ディレクトリ項目
カウント、および合計データ域要素カウントの各キャッ
シュ・オブジェクトが更新され、空きスペースおよび空
き制御スペースの各大域オブジェクトが更新される。
ントされるとき、構造体サイズ、合計ディレクトリ項目
カウント、および合計データ域要素カウントの各キャッ
シュ・オブジェクトが更新され、空きスペースおよび空
き制御スペースの各大域オブジェクトが更新される。
【0244】キャッシュ割振りプロセスの完了:0のコ
ードが返されるとき、要求されたキャッシュ割振りプロ
セスはすべて完了している。
ードが返されるとき、要求されたキャッシュ割振りプロ
セスはすべて完了している。
【0245】キャッシュ構造体の作成:キャッシュ構造
体を作成するとき、目標ディレクトリ/データ比および
付属割当て標識により、作成される構造体の属性が決定
される。目標ディレクトリ/データ比の第2バイトが0
のとき、データ域要素も付属域要素も作成されず、キャ
ッシュはディレクトリ専用キャッシュである。目標ディ
レクトリ/データ比の第2バイトが非0であり、付属割
当て標識が1のときは、データが最初にデータ域にキャ
ッシュされるとき、ディレクトリ項目に付属域が割り当
てられる。目標ディレクトリ/データ比の第2バイトが
非0であり、付属割当て標識が0のときは、付属域は作
成されない。
体を作成するとき、目標ディレクトリ/データ比および
付属割当て標識により、作成される構造体の属性が決定
される。目標ディレクトリ/データ比の第2バイトが0
のとき、データ域要素も付属域要素も作成されず、キャ
ッシュはディレクトリ専用キャッシュである。目標ディ
レクトリ/データ比の第2バイトが非0であり、付属割
当て標識が1のときは、データが最初にデータ域にキャ
ッシュされるとき、ディレクトリ項目に付属域が割り当
てられる。目標ディレクトリ/データ比の第2バイトが
非0であり、付属割当て標識が0のときは、付属域は作
成されない。
【0246】キャッシュ構造体が作成されるとき、以下
のことが行われる。
のことが行われる。
【0247】(1)SID値に関連する構造体識別子ベ
クトル中の作成済みビットが1にセットされる。
クトル中の作成済みビットが1にセットされる。
【0248】(2)キャッシュ構造体制御が初期設定さ
れる。
れる。
【0249】これには、以下のことが含まれる。
【0250】LCIDベクトルを0に初期設定する。U
SCオペランドをユーザ構造体制御に置く。付属割当て
標識をAAIオペランドの値に等しく設定する。データ
域要素特性オブジェクトにDAEXオペランドを格納す
る。最大データ域サイズ・オブジェクトにMDASオペ
ランドを格納する。構造体サイズを更新する。
SCオペランドをユーザ構造体制御に置く。付属割当て
標識をAAIオペランドの値に等しく設定する。データ
域要素特性オブジェクトにDAEXオペランドを格納す
る。最大データ域サイズ・オブジェクトにMDASオペ
ランドを格納する。構造体サイズを更新する。
【0251】キャッシュ構造体が作成されるとき、以下
のことが行われる。
のことが行われる。
【0252】(1) 構造体サイズ・オブジェクトが、
目標構造体サイズ要求オペランド以下の、利用可能な最
大記憶域サイズの値に初期設定される。
目標構造体サイズ要求オペランド以下の、利用可能な最
大記憶域サイズの値に初期設定される。
【0253】(2) 新規の合計ディレクトリ項目カウ
ント・オブジェクトと合計データ域要素カウント・オブ
ジェクトの比率が、0からディレクトリ/データ比まで
の範囲となる。
ント・オブジェクトと合計データ域要素カウント・オブ
ジェクトの比率が、0からディレクトリ/データ比まで
の範囲となる。
【0254】変更信号処理:変更信号は、指定されたデ
ータ域について処理される。変更信号処理の一部とし
て、データ項目中で変更ビットが設定され、データが変
更された状態でキャッシュされていることを示す。ディ
レクトリ項目中の変更ビットの設定は、コマンドが完了
する前に実行しておく必要がある。
ータ域について処理される。変更信号処理の一部とし
て、データ項目中で変更ビットが設定され、データが変
更された状態でキャッシュされていることを示す。ディ
レクトリ項目中の変更ビットの設定は、コマンドが完了
する前に実行しておく必要がある。
【0255】データ域要素割当て:データ域要素割当て
は、利用可能なデータ域要素を順番に並べた集合を取り
出し、それらをディレクトリ項目に付加し、データ・ビ
ットを1にセットし、データ域サイズ・オブジェクトを
DASオペランドの値に設定することにより、指定され
た名前、記憶域クラス、およびデータ域サイズについて
処理される。利用可能なデータ域要素が不十分なとき、
要求を満たすためにデータ域が再利用される。再利用さ
れた各データ域がクリアされ、ディレクトリ項目にデー
タ域要素が付加され、データ域要素の自由リスト上に残
りのデータ域要素が置かれる。
は、利用可能なデータ域要素を順番に並べた集合を取り
出し、それらをディレクトリ項目に付加し、データ・ビ
ットを1にセットし、データ域サイズ・オブジェクトを
DASオペランドの値に設定することにより、指定され
た名前、記憶域クラス、およびデータ域サイズについて
処理される。利用可能なデータ域要素が不十分なとき、
要求を満たすためにデータ域が再利用される。再利用さ
れた各データ域がクリアされ、ディレクトリ項目にデー
タ域要素が付加され、データ域要素の自由リスト上に残
りのデータ域要素が置かれる。
【0256】ディレクトリおよびデータ域要素の作成:
キャッシュ構造体に割り当てられた利用可能な記憶域
が、ディレクトリ項目およびデータ域要素を作成するた
めに割り当てられる。作成される各項目および要素の数
は、利用可能な記憶域の量、指定されたディレクトリ/
データ比、データ域要素特性、および指定された構造体
サイズの関数である。その結果得られるディレクトリ項
目およびデータ域要素の数は、それぞれ合計ディレクト
リ項目カウント(TDEC)制御フィールドおよび合計
データ域要素カウント(TDAEC)制御フィールドに
格納される。
キャッシュ構造体に割り当てられた利用可能な記憶域
が、ディレクトリ項目およびデータ域要素を作成するた
めに割り当てられる。作成される各項目および要素の数
は、利用可能な記憶域の量、指定されたディレクトリ/
データ比、データ域要素特性、および指定された構造体
サイズの関数である。その結果得られるディレクトリ項
目およびデータ域要素の数は、それぞれ合計ディレクト
リ項目カウント(TDEC)制御フィールドおよび合計
データ域要素カウント(TDAEC)制御フィールドに
格納される。
【0257】合計ディレクトリ項目カウントの確立後、
ディレクトリ記憶域を減算することによって、データ域
要素の作成に利用可能な合計記憶域を求める。データ域
要素に必要な記憶域は、データ域要素特性およびディレ
クトリ/データ比によって求められる。
ディレクトリ記憶域を減算することによって、データ域
要素の作成に利用可能な合計記憶域を求める。データ域
要素に必要な記憶域は、データ域要素特性およびディレ
クトリ/データ比によって求められる。
【0258】ディレクトリおよびデータ域の再利用:図
35は、ディレクトリおよびデータ域の再利用プロセス
のプロセス・フロー・ダイアグラムである。データ域お
よびディレクトリ項目は、指定された記憶域クラスで再
利用される。再利用プロセスでは、目標記憶域クラスを
識別し(3301および3302)、目標クラスでもっ
とも古い未変更ディレクトリ項目またはデータ域を探し
出し(3303および3304)、ディレクトリ項目ま
たはデータ域をディレクトリから切断する(3305お
よび3306)ことが必要である。
35は、ディレクトリおよびデータ域の再利用プロセス
のプロセス・フロー・ダイアグラムである。データ域お
よびディレクトリ項目は、指定された記憶域クラスで再
利用される。再利用プロセスでは、目標記憶域クラスを
識別し(3301および3302)、目標クラスでもっ
とも古い未変更ディレクトリ項目またはデータ域を探し
出し(3303および3304)、ディレクトリ項目ま
たはデータ域をディレクトリから切断する(3305お
よび3306)ことが必要である。
【0259】ディレクトリからディレクトリ項目が切断
されると、ディレクトリ項目に無効のマークが付く。ロ
ーカル・キャッシュ・レジスタが走査され、相互無効化
コマンドにより有効なローカル・コピーがすべて無効に
され、項目が無効にされる(3307)。
されると、ディレクトリ項目に無効のマークが付く。ロ
ーカル・キャッシュ・レジスタが走査され、相互無効化
コマンドにより有効なローカル・コピーがすべて無効に
され、項目が無効にされる(3307)。
【0260】割り当てられたデータ域を持つディレクト
リ項目が再利用されるとき、データ域が解放され、デー
タ域要素が自由リスト上に置かれる(3308)。
リ項目が再利用されるとき、データ域が解放され、デー
タ域要素が自由リスト上に置かれる(3308)。
【0261】目標記憶域クラスは、再利用ベクトルが活
動状態のとき、再利用ベクトル・カーソルによって識別
される。図36は、目標記憶域クラス識別のフロー・ダ
イアグラムである。再利用ベクトルは、参照されると、
次のように更新される。
動状態のとき、再利用ベクトル・カーソルによって識別
される。図36は、目標記憶域クラス識別のフロー・ダ
イアグラムである。再利用ベクトルは、参照されると、
次のように更新される。
【0262】現アレイ要素の再利用カウントが減分され
る(3402)。
る(3402)。
【0263】カウントが0に達したとき(3403から
のY経路)、再利用ベクトル・カーソルが、再利用カウ
ントが非0の次のアレイ要素に移動する(3405)
(3406からのN経路)。
のY経路)、再利用ベクトル・カーソルが、再利用カウ
ントが非0の次のアレイ要素に移動する(3405)
(3406からのN経路)。
【0264】再利用ベクトル・カーソルがベクトル中の
最後のアレイ要素を指し、この要素のカウントが0であ
るとき(3404からのY経路)、反復因数が増分され
(3407)、再利用カウントがその初期値にリフレッ
シュされ(3409)、カーソルが、もっとも小さな索
引を持ち、非0のカウントを含む(3406からのN経
路)アレイ要素に移動する。
最後のアレイ要素を指し、この要素のカウントが0であ
るとき(3404からのY経路)、反復因数が増分され
(3407)、再利用カウントがその初期値にリフレッ
シュされ(3409)、カーソルが、もっとも小さな索
引を持ち、非0のカウントを含む(3406からのN経
路)アレイ要素に移動する。
【0265】反復因数が0に達したとき(3408から
のY経路)、再利用ベクトルは非活動状態になる(34
11)。0に達しない場合、再利用ベクトルは活動状態
のままである。
のY経路)、再利用ベクトルは非活動状態になる(34
11)。0に達しない場合、再利用ベクトルは活動状態
のままである。
【0266】指定された記憶域クラスの再利用ベクトル
が非活動状態のとき(3401からのNパス)、指定さ
れた記憶域クラスが省略時目標クラスになる(341
2)。
が非活動状態のとき(3401からのNパス)、指定さ
れた記憶域クラスが省略時目標クラスになる(341
2)。
【0267】SESキャッシュ記憶域管理プロセスは、
本出願人に譲渡され米国特許出願第号(P099200
3)に記載されるプロセスを通じて維持されるデータの
保全性をサポートする。ディレクトリ項目が再利用され
るときに相互無効化信号を発行すると、以下のことが発
生しなくなる。
本出願人に譲渡され米国特許出願第号(P099200
3)に記載されるプロセスを通じて維持されるデータの
保全性をサポートする。ディレクトリ項目が再利用され
るときに相互無効化信号を発行すると、以下のことが発
生しなくなる。
【0268】1.Xという名前のディレクトリ項目が再
利用されること。ローカル・コピーは有効なままだが、
その登録がもはやSESによって追跡されない。
利用されること。ローカル・コピーは有効なままだが、
その登録がもはやSESによって追跡されない。
【0269】2.名前Xが、別のディレクトリ項目に登
録され変更されること。有効なローカル・コピーが新規
ディレクトリ項目に登録されないので、XI信号は発行
されず、ローカル・バッファはコヒーレンシを失う。
録され変更されること。有効なローカル・コピーが新規
ディレクトリ項目に登録されないので、XI信号は発行
されず、ローカル・バッファはコヒーレンシを失う。
【0270】ローカル・キャッシュ項目登録解除:ロー
カル・キャッシュ項目は、項目を指定し置換名の値を指
定すると、登録解除される。ローカル・キャッシュ項目
は、ローカル・キャッシュ識別子に対応する行を無効状
態に設定すると、当該名前のローカル・キャッシュ・レ
ジスタから除去される。プログラムは、置換名でなくロ
ーカル・キャッシュ項目番号に対して逐次化される。し
たがって、SESは、行を無効に設定する前に、その置
換名に対するローカル・キャッシュ・レジスタ内のロー
カル・キャッシュ項目番号の値をテストしておく必要が
ある。内容がローカル・キャッシュ項目番号の値と一致
しない場合、何の処置も行われない。置換名は、別のプ
ロセスによって、異なるローカル・キャッシュ項目に登
録されている。
カル・キャッシュ項目は、項目を指定し置換名の値を指
定すると、登録解除される。ローカル・キャッシュ項目
は、ローカル・キャッシュ識別子に対応する行を無効状
態に設定すると、当該名前のローカル・キャッシュ・レ
ジスタから除去される。プログラムは、置換名でなくロ
ーカル・キャッシュ項目番号に対して逐次化される。し
たがって、SESは、行を無効に設定する前に、その置
換名に対するローカル・キャッシュ・レジスタ内のロー
カル・キャッシュ項目番号の値をテストしておく必要が
ある。内容がローカル・キャッシュ項目番号の値と一致
しない場合、何の処置も行われない。置換名は、別のプ
ロセスによって、異なるローカル・キャッシュ項目に登
録されている。
【0271】ローカル・キャッシュ項目無効化:図15
および図16に示すように、別々の3つのプロセスが、
指定された名前のローカル・キャッシュ項目を無効にす
る。ローカル・コピー無効化は、指定された名前付きデ
ータ・ブロックのローカル・コピーをすべて無効にする
(1401)。補足コピー無効化は、LCID要求オペ
ランドで識別されるローカル・キャッシュを除き、指定
された名前付きデータ・ブロックのローカル・コピーを
すべて無効にする(1402)。単一コピー無効化は、
指定されたローカル・キャッシュのローカル・コピー1
つを無効にする(1409)。
および図16に示すように、別々の3つのプロセスが、
指定された名前のローカル・キャッシュ項目を無効にす
る。ローカル・コピー無効化は、指定された名前付きデ
ータ・ブロックのローカル・コピーをすべて無効にする
(1401)。補足コピー無効化は、LCID要求オペ
ランドで識別されるローカル・キャッシュを除き、指定
された名前付きデータ・ブロックのローカル・コピーを
すべて無効にする(1402)。単一コピー無効化は、
指定されたローカル・キャッシュのローカル・コピー1
つを無効にする(1409)。
【0272】最初の2つのプロセスは、ローカル・キャ
ッシュ項目のリストを無効にする。この場合、特定のロ
ーカル・キャッシュ内でせいぜい1つの項目が無効にさ
れる。最後のプロセスは、ローカル・キャッシュ項目が
1つだけ入っているリストを無効にする。リスト上の各
ローカル・キャッシュ項目は、ローカル・キャッシュ・
レジスタ内のローカル・キャッシュ項目番号を無効に
し、ローカル・キャッシュを含むシステムに対する相互
無効化コマンドを生成すると(1403、1404、お
よび1410)無効にされる。ローカル・キャッシュ項
目番号がすべて無効にされ、生成された相互無効化コマ
ンドがすべて完了すると(1405、1406、および
1411)、プロセスは完了する。ローカル・コピー無
効化プロセス、補足コピー無効化プロセス、および単一
コピー無効化プロセスは、コマンドが完了する前に完了
しておく必要がある。
ッシュ項目のリストを無効にする。この場合、特定のロ
ーカル・キャッシュ内でせいぜい1つの項目が無効にさ
れる。最後のプロセスは、ローカル・キャッシュ項目が
1つだけ入っているリストを無効にする。リスト上の各
ローカル・キャッシュ項目は、ローカル・キャッシュ・
レジスタ内のローカル・キャッシュ項目番号を無効に
し、ローカル・キャッシュを含むシステムに対する相互
無効化コマンドを生成すると(1403、1404、お
よび1410)無効にされる。ローカル・キャッシュ項
目番号がすべて無効にされ、生成された相互無効化コマ
ンドがすべて完了すると(1405、1406、および
1411)、プロセスは完了する。ローカル・コピー無
効化プロセス、補足コピー無効化プロセス、および単一
コピー無効化プロセスは、コマンドが完了する前に完了
しておく必要がある。
【0273】生成された相互無効化コマンドの処理は、
メッセージ経路の選択(1407および1408)と、
相互無効化コマンドの処理(1403および1404)
からなる。無効化される指定された名前付きデータ・ブ
ロックの各ローカル・コピーに対して、1つまたは複数
の相互無効化コマンドが開始される。メッセージ経路
は、ローカル・キャッシュ制御機構中でシステム識別子
値で指定された経路グループから選択される。一次コマ
ンドが完了すると、生成された相互無効化コマンドが完
了する。
メッセージ経路の選択(1407および1408)と、
相互無効化コマンドの処理(1403および1404)
からなる。無効化される指定された名前付きデータ・ブ
ロックの各ローカル・コピーに対して、1つまたは複数
の相互無効化コマンドが開始される。メッセージ経路
は、ローカル・キャッシュ制御機構中でシステム識別子
値で指定された経路グループから選択される。一次コマ
ンドが完了すると、生成された相互無効化コマンドが完
了する。
【0274】システムに相互無効化コマンドを首尾よく
配布できないとき、つまり、メッセージがタイムアウト
したとき、SES機構は、応答ブロックを受け取るま
で、あるいはその経路グループ中のすべての経路にCP
Cではエラー、SESでは非活動状態のマークが付くま
で、経路グループにおける残りの各活動メッセージ経路
を使ってコマンド配布を試みる必要がある。
配布できないとき、つまり、メッセージがタイムアウト
したとき、SES機構は、応答ブロックを受け取るま
で、あるいはその経路グループ中のすべての経路にCP
Cではエラー、SESでは非活動状態のマークが付くま
で、経路グループにおける残りの各活動メッセージ経路
を使ってコマンド配布を試みる必要がある。
【0275】経路グループ中の複数の経路上で同一の相
互無効化コマンドを同報通信すると、リンク・エラーが
存在するとき、ローカル・キャッシュ項目処理の完了を
高速化できる。ただし、同報通信プロトコルは、ローカ
ル・キャッシュ項目に対する相互無効化コマンドを送ろ
うと試みて失敗した後、リンクにエラーのマークが付い
た状況に限るべきである。エラーのない状況で同報通信
を行うと、リンクにかなりの負荷を加える可能性がある
ので、避けるべきである。
互無効化コマンドを同報通信すると、リンク・エラーが
存在するとき、ローカル・キャッシュ項目処理の完了を
高速化できる。ただし、同報通信プロトコルは、ローカ
ル・キャッシュ項目に対する相互無効化コマンドを送ろ
うと試みて失敗した後、リンクにエラーのマークが付い
た状況に限るべきである。エラーのない状況で同報通信
を行うと、リンクにかなりの負荷を加える可能性がある
ので、避けるべきである。
【0276】経路選択時に経路グループが空であると
き、あるいは経路グループ中のすべての経路が非活動状
態であるとき、生成された相互無効化コマンドは、リン
ク動作を開始しなくても完了する。
き、あるいは経路グループ中のすべての経路が非活動状
態であるとき、生成された相互無効化コマンドは、リン
ク動作を開始しなくても完了する。
【0277】ローカル・キャッシュ・トークンは、CP
CがDEFINE VECTOR命令の結果として割り
当てる。ユーザは、ローカル・キャッシュ付加コマンド
上にローカル・キャッシュ・トークンを提供する。SE
S機構は、各相互無効化コマンド上でローカル・キャッ
シュ・トークンを返す。CPCは、ローカル・キャッシ
ュ・トークンを使用して、プロセッサ記憶域におけるロ
ーカル・キャッシュ・ベクトルの位置を決定する。
CがDEFINE VECTOR命令の結果として割り
当てる。ユーザは、ローカル・キャッシュ付加コマンド
上にローカル・キャッシュ・トークンを提供する。SE
S機構は、各相互無効化コマンド上でローカル・キャッ
シュ・トークンを返す。CPCは、ローカル・キャッシ
ュ・トークンを使用して、プロセッサ記憶域におけるロ
ーカル・キャッシュ・ベクトルの位置を決定する。
【0278】メッセージ機構タイムアウト時間内に相互
無効化コマンドがすべて完了するわけではないので、相
互無効化コマンドを生成する直接コマンドをタイムアウ
トさせてもかまわない。したがって、リンク・エラーが
存在するとき、経路グループ中の複数の経路上で同じ相
互無効化コマンドを同報通信する必要はない。
無効化コマンドがすべて完了するわけではないので、相
互無効化コマンドを生成する直接コマンドをタイムアウ
トさせてもかまわない。したがって、リンク・エラーが
存在するとき、経路グループ中の複数の経路上で同じ相
互無効化コマンドを同報通信する必要はない。
【0279】オペレーティング・システムは、インタフ
ェース制御チェックを検出すると、経路の妥当性を再び
検査した後、直接コマンドを再駆動する。メッセージ・
プロセッサ・タイムアウト手順が呼び出されると、相互
無効化コマンドが完了し、あるいはモデル従属のある回
数の再試行の後、非活動状態のマークが付く。したがっ
て、非活動経路が経路グループから除去されているの
で、再駆動されたコマンドは先へ進むはずである。
ェース制御チェックを検出すると、経路の妥当性を再び
検査した後、直接コマンドを再駆動する。メッセージ・
プロセッサ・タイムアウト手順が呼び出されると、相互
無効化コマンドが完了し、あるいはモデル従属のある回
数の再試行の後、非活動状態のマークが付く。したがっ
て、非活動経路が経路グループから除去されているの
で、再駆動されたコマンドは先へ進むはずである。
【0280】ローカル・キャッシュ項目登録:ローカル
・キャッシュ項目は、図30に示すように、項目および
名前を指定することによって登録される。ローカル・キ
ャッシュ項目は、ローカル・キャッシュ項目番号および
ローカル・キャッシュ識別子によって指定される。ロー
カル・キャッシュ識別子に対応する行のローカル・キャ
ッシュ項目番号フィールドを更新すると、ローカル・キ
ャッシュ項目が当該名前のローカル・キャッシュ・レジ
スタに追加される。
・キャッシュ項目は、図30に示すように、項目および
名前を指定することによって登録される。ローカル・キ
ャッシュ項目は、ローカル・キャッシュ項目番号および
ローカル・キャッシュ識別子によって指定される。ロー
カル・キャッシュ識別子に対応する行のローカル・キャ
ッシュ項目番号フィールドを更新すると、ローカル・キ
ャッシュ項目が当該名前のローカル・キャッシュ・レジ
スタに追加される。
【0281】ローカル・キャッシュ・レジスタ行が無効
状態のとき(2801)、指定されたLCENがローカ
ル・キャッシュ項目番号フィールドに格納され、その行
に有効のマークが付く(2802)。ILCEN妥当性
標識応答オペランドが、0にセットされる(280
3)。
状態のとき(2801)、指定されたLCENがローカ
ル・キャッシュ項目番号フィールドに格納され、その行
に有効のマークが付く(2802)。ILCEN妥当性
標識応答オペランドが、0にセットされる(280
3)。
【0282】ローカル・キャッシュ・レジスタ行が有効
状態のとき、指定されたLCENが、ローカル・キャッ
シュ項目フィールドの値と比較される。比較の結果、I
LCENと値が等しかったとき(2804)は、ローカ
ル・キャッシュ・レジスタに変更は加えられず、ILC
EN妥当性標識応答オペランドは0にセットされる(2
805)。LCENと値が等しくなかったときは、以下
のことが行われる(2806)。
状態のとき、指定されたLCENが、ローカル・キャッ
シュ項目フィールドの値と比較される。比較の結果、I
LCENと値が等しかったとき(2804)は、ローカ
ル・キャッシュ・レジスタに変更は加えられず、ILC
EN妥当性標識応答オペランドは0にセットされる(2
805)。LCENと値が等しくなかったときは、以下
のことが行われる(2806)。
【0283】登録されたローカル・キャッシュ項目番号
が、単一コピー無効化プロセスによって無効になる(2
807)。
が、単一コピー無効化プロセスによって無効になる(2
807)。
【0284】指定されたローカル・キャッシュ項目番号
がローカル・キャッシュ項目フィールドに格納され、行
に有効のマークが付く(2808)。
がローカル・キャッシュ項目フィールドに格納され、行
に有効のマークが付く(2808)。
【0285】無効にされたローカル・キャッシュ項目番
号の値がILCEN応答オペランドに格納され(280
9)、ILCEN妥当性標識が1にセットされる。
号の値がILCEN応答オペランドに格納され(280
9)、ILCEN妥当性標識が1にセットされる。
【0286】ローカル・キャッシュ登録プロセスが、L
CEN置換実行済み条件で完了する(2810)。
CEN置換実行済み条件で完了する(2810)。
【0287】名前割当て:名前割当ては、無効なディレ
クトリ項目を取り出し、有効のマークをつけ、名前を初
期設定し、ディレクトリにディレクトリ項目を付加する
ことにより、指定された名前に対して処理される。
クトリ項目を取り出し、有効のマークをつけ、名前を初
期設定し、ディレクトリにディレクトリ項目を付加する
ことにより、指定された名前に対して処理される。
【0288】無効なディレクトリ項目がないときは、有
効なディレクトリ項目を、SESによって再利用し、現
行の内容をクリアして、ディレクトリに付加できる。も
っとも古い未変更ディレクトリ項目が再利用される。デ
ィレクトリ項目を再利用すると、相互無効化信号が発行
される可能性がある。
効なディレクトリ項目を、SESによって再利用し、現
行の内容をクリアして、ディレクトリに付加できる。も
っとも古い未変更ディレクトリ項目が再利用される。デ
ィレクトリ項目を再利用すると、相互無効化信号が発行
される可能性がある。
【0289】名前比較:名前比較は、バイト・レベルの
比較であり、マスク・フィールドによって制御される。
マスク・フィールド中の16個のビットはそれぞれ、左
から順に、名前フィールドの16個のバイトに対応して
いる。比較は、左から右に1バイトずつ進んでいく。マ
スク中の対応するビットが1のとき、バイトが比較され
る。そうでない場合、比較は行われず、動作は次のバイ
トに進む。
比較であり、マスク・フィールドによって制御される。
マスク・フィールド中の16個のビットはそれぞれ、左
から順に、名前フィールドの16個のバイトに対応して
いる。比較は、左から右に1バイトずつ進んでいく。マ
スク中の対応するビットが1のとき、バイトが比較され
る。そうでない場合、比較は行われず、動作は次のバイ
トに進む。
【0290】参照信号処理:参照信号は、指定された名
前および記憶クラスに対して処理される。ディレクトリ
項目に記憶クラスが格納され、記憶クラス待ち行列の一
番下にディレクトリ項目が追加される。これは、記憶ク
ラスへの最初の配置であることも、記憶域クラス指定の
変更を表していることも、あるいは記憶クラス内のデー
タの参照であることもある。
前および記憶クラスに対して処理される。ディレクトリ
項目に記憶クラスが格納され、記憶クラス待ち行列の一
番下にディレクトリ項目が追加される。これは、記憶ク
ラスへの最初の配置であることも、記憶域クラス指定の
変更を表していることも、あるいは記憶クラス内のデー
タの参照であることもある。
【0291】変更済みデータの書込み:変更制御値が1
の場合、LCID値で指定されたローカル・キャッシュ
からSESキャッシュにデータが変更された状態で書き
込まれることを示す。補足コピーを無効化すると、デー
タ域の変更が、残りのローカル・キャッシュと同期化さ
れる。残りの動作には、変更済みデータ域の格納と変更
信号の処理がある。
の場合、LCID値で指定されたローカル・キャッシュ
からSESキャッシュにデータが変更された状態で書き
込まれることを示す。補足コピーを無効化すると、デー
タ域の変更が、残りのローカル・キャッシュと同期化さ
れる。残りの動作には、変更済みデータ域の格納と変更
信号の処理がある。
【0292】データは、割り当てられ順番に並べられた
データ域要素の集合に格納される。書込みプロセスが既
存のデータ域に対するものであり、データ域サイズ・オ
ペランドがデータ域サイズ・オブジェクトより小さい場
合、もっとも小さな番号のデータ域要素にデータ・ブロ
ックが書き込まれ、データ域要素の自由リスト上に残り
のデータ域要素が格納され、ディレクトリ項目中のデー
タ域サイズ・オブジェクトがデータ域サイズ・オペラン
ドの値で更新される。
データ域要素の集合に格納される。書込みプロセスが既
存のデータ域に対するものであり、データ域サイズ・オ
ペランドがデータ域サイズ・オブジェクトより小さい場
合、もっとも小さな番号のデータ域要素にデータ・ブロ
ックが書き込まれ、データ域要素の自由リスト上に残り
のデータ域要素が格納され、ディレクトリ項目中のデー
タ域サイズ・オブジェクトがデータ域サイズ・オペラン
ドの値で更新される。
【0293】書込みプロセスが既存のデータ域に対する
ものであり、データ域サイズ・オペランドがデータ域サ
イズ・オブジェクトより大きい場合、ディレクトリ項目
に別のデータ域要素が割り当てられ、データ域にデータ
・ブロックが格納され、ディレクトリ項目中のデータ域
サイズ・オブジェクトがデータ域サイズ・オペランドの
値で更新される。
ものであり、データ域サイズ・オペランドがデータ域サ
イズ・オブジェクトより大きい場合、ディレクトリ項目
に別のデータ域要素が割り当てられ、データ域にデータ
・ブロックが格納され、ディレクトリ項目中のデータ域
サイズ・オブジェクトがデータ域サイズ・オペランドの
値で更新される。
【0294】未変更データの書込み:変更制御値が0の
場合、SESキャッシュにデータが未変更のまま書き込
まれることを示している。これには、データ域を未変更
のまま格納することが含まれる。
場合、SESキャッシュにデータが未変更のまま書き込
まれることを示している。これには、データ域を未変更
のまま格納することが含まれる。
【0295】データは、割り当てられ順番に並べられた
データ域要素の集合に格納される。書込みプロセスが既
存のデータ域に対するものであり、データ域サイズ・オ
ペランドがデータ域サイズ・オブジェクトより小さい場
合、もっとも小さな番号のデータ域要素にデータ・ブロ
ックが書き込まれ、データ域要素の自由リスト上に残り
のデータ域要素が格納され、ディレクトリ項目中のデー
タ域サイズ・オブジェクトがデータ域サイズ・オペラン
ドの値で更新される。
データ域要素の集合に格納される。書込みプロセスが既
存のデータ域に対するものであり、データ域サイズ・オ
ペランドがデータ域サイズ・オブジェクトより小さい場
合、もっとも小さな番号のデータ域要素にデータ・ブロ
ックが書き込まれ、データ域要素の自由リスト上に残り
のデータ域要素が格納され、ディレクトリ項目中のデー
タ域サイズ・オブジェクトがデータ域サイズ・オペラン
ドの値で更新される。
【0296】書込みプロセスが既存のデータ域に対する
ものであり、データ域サイズ・オペランドがデータ域サ
イズ・オブジェクトより大きい場合、ディレクトリ項目
に別のデータ域要素が割り当てられ、データ域にデータ
・ブロックが格納され、ディレクトリ項目中のデータ域
サイズ・オブジェクトがデータ域サイズ・オペランドの
値で更新される。
ものであり、データ域サイズ・オペランドがデータ域サ
イズ・オブジェクトより大きい場合、ディレクトリ項目
に別のデータ域要素が割り当てられ、データ域にデータ
・ブロックが格納され、ディレクトリ項目中のデータ域
サイズ・オブジェクトがデータ域サイズ・オペランドの
値で更新される。
【0297】キャッシュ構造体コマンド:以下のコマン
ドについて、それらのコマンドのプロセス・フロー・ダ
イアグラムに示す、SESにおいてSESオブジェクト
に対して行われる処置に関して説明する。
ドについて、それらのコマンドのプロセス・フロー・ダ
イアグラムに示す、SESにおいてSESオブジェクト
に対して行われる処置に関して説明する。
【0298】キャッシュ構造体割振り(Allocat
e Cache Structure)−図8および図
9 ローカル・キャッシュ付加−図10 ローカル・キャッシュ切断−図11 キャッシュ構造体割振り解除(Deallocate
Cache Structure)−図12 補足コピー無効化−図13 名前無効化−図14 読取り及び登録−図17 書込み及び登録−図18および図19 登録時書込み−図20
e Cache Structure)−図8および図
9 ローカル・キャッシュ付加−図10 ローカル・キャッシュ切断−図11 キャッシュ構造体割振り解除(Deallocate
Cache Structure)−図12 補足コピー無効化−図13 名前無効化−図14 読取り及び登録−図17 書込み及び登録−図18および図19 登録時書込み−図20
【0299】キャッシュ構造体割振り:図8および図9
は、キャッシュ構造体割振りコマンドのプロセス・フロ
ー・ダイアグラムである。キャッシュ構造体割振りコマ
ンドは、キャッシュ構造体用の記憶資源を作成する。
は、キャッシュ構造体割振りコマンドのプロセス・フロ
ー・ダイアグラムである。キャッシュ構造体割振りコマ
ンドは、キャッシュ構造体用の記憶資源を作成する。
【0300】キャッシュ構造体割振りコマンドは、キャ
ッシュ構造体作成時にユーザ構造体制御要求オペランド
の値でユーザ構造体制御を更新し(701)、あるいは
以下のときにキャッシュ構造体を作成する(704)。
ッシュ構造体作成時にユーザ構造体制御要求オペランド
の値でユーザ構造体制御を更新し(701)、あるいは
以下のときにキャッシュ構造体を作成する(704)。
【0301】(1)構造体識別子の指定された作成済み
ビットがゼロである。
ビットがゼロである。
【0302】(2)構造体サイズが、少なくとも1つの
ディレクトリ項目および関連する制御を作成するのに十
分である(702)。
ディレクトリ項目および関連する制御を作成するのに十
分である(702)。
【0303】キャッシュ構造体割振りコマンドは、以下
のときにキャッシュ構造体の初期割振りを継続する(8
01)。
のときにキャッシュ構造体の初期割振りを継続する(8
01)。
【0304】(1)構造体識別子ベクトルの指定された
作成済みビットが1である。
作成済みビットが1である。
【0305】(2)構造体の初期割振りが完了していな
い。
い。
【0306】キャッシュ構造体プロセスはチェックポイ
ントされ、構造体の初期割振りが完了した時点で、確立
されたチェックポイントで完了する(703)(80
2)。
ントされ、構造体の初期割振りが完了した時点で、確立
されたチェックポイントで完了する(703)(80
2)。
【0307】要求されたキャッシュ構造体プロセスがす
べて完了したとき、プロセスがチェックポイントされ、
合計ディレクトリ項目カウント、合計データ域要素カウ
ント、構造体サイズ、空きスペース大域制御、および完
了応答コードがプログラムに返される(709)。
べて完了したとき、プロセスがチェックポイントされ、
合計ディレクトリ項目カウント、合計データ域要素カウ
ント、構造体サイズ、空きスペース大域制御、および完
了応答コードがプログラムに返される(709)。
【0308】割振りプロセスが完了しないうちにモデル
従属の時間が経過すると、プロセスがチェックポイント
され、合計ディレクトリ項目カウント、合計データ域要
素カウント、構造体サイズ、空き制御スペース大域制
御、および例外応答コードがプログラムに返される(7
11)。
従属の時間が経過すると、プロセスがチェックポイント
され、合計ディレクトリ項目カウント、合計データ域要
素カウント、構造体サイズ、空き制御スペース大域制
御、および例外応答コードがプログラムに返される(7
11)。
【0309】指定された構造体サイズが、少なくとも1
つのディレクトリ項目およびそれに関連する制御を作成
するには不十分なとき、構造体サイズ応答オペランド
に、要求をサポートするのに必要な最小構造体サイズが
置かれる。構造体サイズ応答オペランドおよび例外応答
コードがプログラムに返される(713)。
つのディレクトリ項目およびそれに関連する制御を作成
するには不十分なとき、構造体サイズ応答オペランド
に、要求をサポートするのに必要な最小構造体サイズが
置かれる。構造体サイズ応答オペランドおよび例外応答
コードがプログラムに返される(713)。
【0310】ローカル・キャッシュ付加:図10は、ロ
ーカル・キャッシュ付加コマンドのプロセス・フロー・
ダイアグラムである。ローカル・キャッシュ付加コマン
ドは、既存のSESキャッシュに対するローカル・キャ
ッシュを識別し、ローカル・キャッシュ制御機構を初期
設定し、指定されたローカル・キャッシュ識別子を割り
当てる。
ーカル・キャッシュ付加コマンドのプロセス・フロー・
ダイアグラムである。ローカル・キャッシュ付加コマン
ドは、既存のSESキャッシュに対するローカル・キャ
ッシュを識別し、ローカル・キャッシュ制御機構を初期
設定し、指定されたローカル・キャッシュ識別子を割り
当てる。
【0311】ローカル・キャッシュのキャッシュ構造体
への接続には、付加状況を活動状態にし(903)、ロ
ーカル・キャッシュ制御を設定し(901)、ローカル
・キャッシュ識別子が割り当てられていないとき、指定
されたローカル・キャッシュ識別子を割り当て(90
2)、ローカル・キャッシュ・レジスタ内に各ディレク
トリ項目用の行を作成することが含まれる。ローカル・
キャッシュ制御には、ローカル・キャッシュ・トーク
ン、切断再開トークン、付加情報、付加状況、およびシ
ステム識別子がある。システム識別子の値は、ALCコ
マンドの配布に使用されるメッセージ経路のメッセージ
経路状況ベクトルから取り出す。
への接続には、付加状況を活動状態にし(903)、ロ
ーカル・キャッシュ制御を設定し(901)、ローカル
・キャッシュ識別子が割り当てられていないとき、指定
されたローカル・キャッシュ識別子を割り当て(90
2)、ローカル・キャッシュ・レジスタ内に各ディレク
トリ項目用の行を作成することが含まれる。ローカル・
キャッシュ制御には、ローカル・キャッシュ・トーク
ン、切断再開トークン、付加情報、付加状況、およびシ
ステム識別子がある。システム識別子の値は、ALCコ
マンドの配布に使用されるメッセージ経路のメッセージ
経路状況ベクトルから取り出す。
【0312】ローカル・キャッシュ切断:図11は、ロ
ーカル・キャッシュ切断コマンドのプロセス・フロー・
ダイアグラムである。ローカル・キャッシュ切断コマン
ドは、SESキャッシュに対するローカル・キャッシュ
の識別子を除去し、指定されたローカル・キャッシュ識
別子を解放する。
ーカル・キャッシュ切断コマンドのプロセス・フロー・
ダイアグラムである。ローカル・キャッシュ切断コマン
ドは、SESキャッシュに対するローカル・キャッシュ
の識別子を除去し、指定されたローカル・キャッシュ識
別子を解放する。
【0313】ディレクトリは、ローカル・キャッシュ制
御中の切断再開トークンで指定されたディレクトリ項目
から探索を開始される(1002)。切断再開トークン
が0のとき、切断処理が開始される。切断再開トークン
が0でないとき、切断処理は、トークンで指定されたデ
ィレクトリ項目から再開する。
御中の切断再開トークンで指定されたディレクトリ項目
から探索を開始される(1002)。切断再開トークン
が0のとき、切断処理が開始される。切断再開トークン
が0でないとき、切断処理は、トークンで指定されたデ
ィレクトリ項目から再開する。
【0314】各ディレクトリ項目について、LCID要
求オペランドで指定されたローカル・キャッシュに割り
当てられている行をクリアすると、ローカル・キャッシ
ュ・レジスタが更新される(1001)。
求オペランドで指定されたローカル・キャッシュに割り
当てられている行をクリアすると、ローカル・キャッシ
ュ・レジスタが更新される(1001)。
【0315】モデル従属のタイムアウト値を超えたと
き、ローカル・キャッシュ制御中の切断再開トークンが
更新される(1006)。
き、ローカル・キャッシュ制御中の切断再開トークンが
更新される(1006)。
【0316】ローカル・キャッシュ識別子が割り当てら
れていないとき、コマンドは、そのことを示す戻りコー
ドで完了する(1008)。
れていないとき、コマンドは、そのことを示す戻りコー
ドで完了する(1008)。
【0317】ローカル・キャッシュの切断では、ローカ
ル・キャッシュ切断コマンドを複数回実行しなければな
らない場合がある。切断プロセス中に、ディレクトリが
変わることがある。切断が完了しないうちに処理する必
要がある1組のディレクトリ項目は、切断処理の開始時
に存在し、以後ずっと有効である有効なディレクトリ項
目からなる。切断が開始された後に追加または削除され
たディレクトリ項目を処理する必要はない。ディレクト
リ項目は1度処理するだけでよい。処理後に更新された
ディレクトリ項目を、再度処理する必要はない。
ル・キャッシュ切断コマンドを複数回実行しなければな
らない場合がある。切断プロセス中に、ディレクトリが
変わることがある。切断が完了しないうちに処理する必
要がある1組のディレクトリ項目は、切断処理の開始時
に存在し、以後ずっと有効である有効なディレクトリ項
目からなる。切断が開始された後に追加または削除され
たディレクトリ項目を処理する必要はない。ディレクト
リ項目は1度処理するだけでよい。処理後に更新された
ディレクトリ項目を、再度処理する必要はない。
【0318】キャッシュ構造体割振り解除:図12は、
キャッシュ構造体割振り解除コマンドのプロセス・フロ
ー・ダイアグラムである。キャッシュ構造体割振り解除
コマンドは、指定されたキャッシュ構造体を削除する。
これには、記憶域を解放し、空きスペースを更新し(1
101)、および空き制御スペース大域制御を更新する
ことが含まれる。
キャッシュ構造体割振り解除コマンドのプロセス・フロ
ー・ダイアグラムである。キャッシュ構造体割振り解除
コマンドは、指定されたキャッシュ構造体を削除する。
これには、記憶域を解放し、空きスペースを更新し(1
101)、および空き制御スペース大域制御を更新する
ことが含まれる。
【0319】補足コピー無効化:図13は、補足コピー
無効化コマンドのプロセス・フロー・ダイアグラムであ
る。補足コピー無効化コマンドは、マスク条件のもと
で、その名前が入力された名前と一致する、各名前付き
データ・ブロックのローカル・キャッシュ・コピーを無
効にする。ただし、指定されたローカル・キャッシュは
除く。
無効化コマンドのプロセス・フロー・ダイアグラムであ
る。補足コピー無効化コマンドは、マスク条件のもと
で、その名前が入力された名前と一致する、各名前付き
データ・ブロックのローカル・キャッシュ・コピーを無
効にする。ただし、指定されたローカル・キャッシュは
除く。
【0320】名前の比較は、マスクされていないバイト
がすべて等しいとき成功である(1201)。マスクが
0の場合、すべての名前が処理される。すべて1のマス
クの場合は、名前が1つだけ識別される。
がすべて等しいとき成功である(1201)。マスクが
0の場合、すべての名前が処理される。すべて1のマス
クの場合は、名前が1つだけ識別される。
【0321】ディレクトリが走査される(1202)。
マスク条件のもとで、その名前が入力された名前と一致
する、各名前付きデータ・ブロックの補足コピーが無効
になる(1203)。
マスク条件のもとで、その名前が入力された名前と一致
する、各名前付きデータ・ブロックの補足コピーが無効
になる(1203)。
【0322】ディレクトリ走査は、再開トークン要求オ
ペランドによって制御される。トークン値が0の場合は
処理が開始し、トークン値が非0の場合は、トークンで
指定された場所から処理が再開する。ディレクトリ全体
の処理が完了したとき、あるいはモデル従属タイムアウ
トを超えたとき、処理が完了する(1204)。ディレ
クトリの終わりに達した(1205)とき、コマンドが
完了する。テーブルの終わりに達しないうちにモデル従
属のタイムアウトが発生した(1204)ときは、再開
トークンが生成され(1206)、戻りコードと共に返
される。
ペランドによって制御される。トークン値が0の場合は
処理が開始し、トークン値が非0の場合は、トークンで
指定された場所から処理が再開する。ディレクトリ全体
の処理が完了したとき、あるいはモデル従属タイムアウ
トを超えたとき、処理が完了する(1204)。ディレ
クトリの終わりに達した(1205)とき、コマンドが
完了する。テーブルの終わりに達しないうちにモデル従
属のタイムアウトが発生した(1204)ときは、再開
トークンが生成され(1206)、戻りコードと共に返
される。
【0323】すべて1のマスクが指定されるとき、名前
が1つだけ無効になる。したがって、ディレクトリの探
索は確実ではない。すべて1のマスクによって名前がハ
ッシュされる場合、コマンド実行時間が短縮される。
が1つだけ無効になる。したがって、ディレクトリの探
索は確実ではない。すべて1のマスクによって名前がハ
ッシュされる場合、コマンド実行時間が短縮される。
【0324】名前無効化:図14は、名前無効化コマン
ドのプロセス・フロー・ダイアグラムである。名前無効
化コマンドは、マスク条件のもとで、入力された名前と
一致するすべての名前をSESキャッシュ・ディレクト
リから切断する。
ドのプロセス・フロー・ダイアグラムである。名前無効
化コマンドは、マスク条件のもとで、入力された名前と
一致するすべての名前をSESキャッシュ・ディレクト
リから切断する。
【0325】名前の比較は、マスクされていないバイト
がすべて等しいとき成功である(1301)。マスクが
0の場合、すべての名前が無効になる。すべて1のマス
クでは、名前が1つだけ無効になる。
がすべて等しいとき成功である(1301)。マスクが
0の場合、すべての名前が無効になる。すべて1のマス
クでは、名前が1つだけ無効になる。
【0326】ディレクトリが走査される(1302)。
マスク条件のもとで、ディレクトリに割り当てられた、
入力された名前と一致する各名前が無効にされる(13
03および1304)。名前がディレクトリから切断さ
れ、無効のマークが付けられる(1305および130
6)。データがキャッシュされるとき、ディレクトリか
らデータ・テーブル項目が切断され、内容がクリアさ
れ、その項目が再使用可能になる(1307)。
マスク条件のもとで、ディレクトリに割り当てられた、
入力された名前と一致する各名前が無効にされる(13
03および1304)。名前がディレクトリから切断さ
れ、無効のマークが付けられる(1305および130
6)。データがキャッシュされるとき、ディレクトリか
らデータ・テーブル項目が切断され、内容がクリアさ
れ、その項目が再使用可能になる(1307)。
【0327】ディレクトリ走査は、再開トークン要求オ
ペランドによって制御される。トークン値が0の場合は
処理が開始し、トークン値が非0の場合は、トークンで
指定された場所から処理が再開する。ディレクトリ全体
の処理が完了したとき、あるいはモデル従属のタイムア
ウトを超えたとき、処理が完了する。ディレクトリの終
わりに達したとき、コマンドが完了する(1308)。
テーブルの終わりに達しないうちにモデル従属のタイム
アウトが発生した(1309)ときは、再開トークンが
生成される(1310)。
ペランドによって制御される。トークン値が0の場合は
処理が開始し、トークン値が非0の場合は、トークンで
指定された場所から処理が再開する。ディレクトリ全体
の処理が完了したとき、あるいはモデル従属のタイムア
ウトを超えたとき、処理が完了する。ディレクトリの終
わりに達したとき、コマンドが完了する(1308)。
テーブルの終わりに達しないうちにモデル従属のタイム
アウトが発生した(1309)ときは、再開トークンが
生成される(1310)。
【0328】読取りおよび登録:図17は、読取り及び
登録コマンドのプロセス・フロー・ダイアグラムであ
る。読取り及び登録コマンドは、指定されたデータ域の
内容をローカル・キャッシュに返し、ローカル・キャッ
シュ項目を登録する。データがキャッシュされていない
ときは、登録動作だけが実行される。読取り及び登録コ
マンドはまた、ディレクトリに名前が割り当てられてい
ないとき、割当てを行う。
登録コマンドのプロセス・フロー・ダイアグラムであ
る。読取り及び登録コマンドは、指定されたデータ域の
内容をローカル・キャッシュに返し、ローカル・キャッ
シュ項目を登録する。データがキャッシュされていない
ときは、登録動作だけが実行される。読取り及び登録コ
マンドはまた、ディレクトリに名前が割り当てられてい
ないとき、割当てを行う。
【0329】名前置換制御要求オペランド(NRC)が
1のとき(1501)は、置換名およびローカル・キャ
ッシュ識別子要求オペランドで指定されたローカル・キ
ャッシュ項目が登録解除される(1502)。名前置換
制御が0のとき、登録解除は行われない。
1のとき(1501)は、置換名およびローカル・キャ
ッシュ識別子要求オペランドで指定されたローカル・キ
ャッシュ項目が登録解除される(1502)。名前置換
制御が0のとき、登録解除は行われない。
【0330】データがキャッシュされているとき(15
03)、ローカル・キャッシュ項目が登録され(150
4)、当該記憶クラスに対して参照信号が開始され(1
505)、データおよび変更ビットが返される(150
6)。
03)、ローカル・キャッシュ項目が登録され(150
4)、当該記憶クラスに対して参照信号が開始され(1
505)、データおよび変更ビットが返される(150
6)。
【0331】ディレクトリに名前が割り当てられている
が、データがキャッシュされていない(1507)とき
は、ローカル・キャッシュ項目が登録され(150
8)、当該記憶クラスに対して参照信号が開始される
(1509)。
が、データがキャッシュされていない(1507)とき
は、ローカル・キャッシュ項目が登録され(150
8)、当該記憶クラスに対して参照信号が開始される
(1509)。
【0332】ディレクトリに名前が割り当てられてい
ず、ディレクトリ割当てが抑制されていない(151
2)ときは、ディレクトリ項目割当て動作が実行される
(1513)。キャッシュが満杯でない場合、ディレク
トリ項目が割り当てられ、ローカル・キャッシュ項目が
登録され(1514)、当該記憶クラスに対して参照信
号が開始される(1515)。
ず、ディレクトリ割当てが抑制されていない(151
2)ときは、ディレクトリ項目割当て動作が実行される
(1513)。キャッシュが満杯でない場合、ディレク
トリ項目が割り当てられ、ローカル・キャッシュ項目が
登録され(1514)、当該記憶クラスに対して参照信
号が開始される(1515)。
【0333】ディレクトリに名前がリストされておら
ず、割当てが抑制されている(1511)ときは、コマ
ンドが完了し、例外応答コードが返される。
ず、割当てが抑制されている(1511)ときは、コマ
ンドが完了し、例外応答コードが返される。
【0334】プロセッサ・ローカル記憶域中のローカル
有効ビットの設定は、コマンドの実行と逐次化する必要
がある。以下の状況は避けなければならない。
有効ビットの設定は、コマンドの実行と逐次化する必要
がある。以下の状況は避けなければならない。
【0335】1.SES制御装置に読取り及び登録コマ
ンドが送られ、SES逐次化のもとで要求側に関するデ
ィレクトリが更新されること。
ンドが送られ、SES逐次化のもとで要求側に関するデ
ィレクトリが更新されること。
【0336】2.応答が送られ、逐次化が解除されるこ
と。
と。
【0337】3.当該名前に対して登録時書込みコマン
ドが処理されること。
ドが処理されること。
【0338】4.ローカル・システムに対して相互無効
化信号が生成されること。
化信号が生成されること。
【0339】5.相互無効化信号が最初に到着し、ロー
カル有効ビットを無効にすること。
カル有効ビットを無効にすること。
【0340】6.読取り及び登録応答が到着し、プログ
ラムがCPU命令を発行して、ローカル有効ビットの妥
当性を検査すること。
ラムがCPU命令を発行して、ローカル有効ビットの妥
当性を検査すること。
【0341】ローカル・キャッシュ中のデータはこのと
き有効に見えるが、実際にはそうではない。これが保全
性の露出(危険にさらされること)である。これは、以
下のプロトコルを使用すれば避けられる。
き有効に見えるが、実際にはそうではない。これが保全
性の露出(危険にさらされること)である。これは、以
下のプロトコルを使用すれば避けられる。
【0342】1.プログラムがCPU命令を発行して、
ローカル有効ビットをセットする。
ローカル有効ビットをセットする。
【0343】2.読取り及び登録コマンドがSES制御
装置に送られ、SES逐次化のもとで要求側に関するデ
ィレクトリが更新される。
装置に送られ、SES逐次化のもとで要求側に関するデ
ィレクトリが更新される。
【0344】3.読取り及び登録応答が到着し、プログ
ラムが応答コードを問い合わせる。応答コードが登録の
成功を示すとき、コマンド処理は完了している。そうで
ない場合、CPU命令が発行されて、ローカル有効ビッ
トをリセットする。
ラムが応答コードを問い合わせる。応答コードが登録の
成功を示すとき、コマンド処理は完了している。そうで
ない場合、CPU命令が発行されて、ローカル有効ビッ
トをリセットする。
【0345】上記の状況が発生すると、ローカル有効ビ
ットの最終状態は0にリセットされて、ビットの正しい
状態を反映するようになる。
ットの最終状態は0にリセットされて、ビットの正しい
状態を反映するようになる。
【0346】書込みおよび登録:図18および図19
は、書込み及び登録コマンドのプロセス・フロー・ダイ
アグラムである。書込み及び登録コマンドは、データ域
にデータ・ブロックの内容を格納し、変更ビットがデー
タの変更状態と一致するときにローカル・キャッシュ項
目を登録する。
は、書込み及び登録コマンドのプロセス・フロー・ダイ
アグラムである。書込み及び登録コマンドは、データ域
にデータ・ブロックの内容を格納し、変更ビットがデー
タの変更状態と一致するときにローカル・キャッシュ項
目を登録する。
【0347】書込み及び登録コマンドはまた、ディレク
トリに名前が割り当てられていないときは、ディレクト
リ項目を割り当てる。
トリに名前が割り当てられていないときは、ディレクト
リ項目を割り当てる。
【0348】名前置換制御要求オペランド(NRC)が
1のとき(1601および1701)、置換名およびロ
ーカル・キャッシュ識別子要求オペランドで指定された
ローカル・キャッシュ項目の登録が解除される(160
2および1702)。名前置換制御が0のときは、登録
解除は行われない。
1のとき(1601および1701)、置換名およびロ
ーカル・キャッシュ識別子要求オペランドで指定された
ローカル・キャッシュ項目の登録が解除される(160
2および1702)。名前置換制御が0のときは、登録
解除は行われない。
【0349】データがキャッシュされていないとき、デ
ータ・テーブル項目が割り当てられる(1603、16
04、1703、および1704)。ディレクトリに名
前が割り当てられていることもいないこともあり得る。
割り当られていない場合、名前割当ても行われる(16
05および1705)。割当てが成功すると、変更制御
が0のときは、SESキャッシュにデータが未変更のま
ま書き込まれ(1606および1610)、変更制御が
1のときは、変更された状態で書き込まれる(1706
および1710)。さらに、ローカル・キャッシュ項目
が登録される(1607、1611、1707、171
1)。データがキャッシュされており、変更制御が1の
ときは、補足コピー無効化プロセスによって、他のロー
カル・キャッシュ中のそのデータの他のコピーが無効に
される(1714)。
ータ・テーブル項目が割り当てられる(1603、16
04、1703、および1704)。ディレクトリに名
前が割り当てられていることもいないこともあり得る。
割り当られていない場合、名前割当ても行われる(16
05および1705)。割当てが成功すると、変更制御
が0のときは、SESキャッシュにデータが未変更のま
ま書き込まれ(1606および1610)、変更制御が
1のときは、変更された状態で書き込まれる(1706
および1710)。さらに、ローカル・キャッシュ項目
が登録される(1607、1611、1707、171
1)。データがキャッシュされており、変更制御が1の
ときは、補足コピー無効化プロセスによって、他のロー
カル・キャッシュ中のそのデータの他のコピーが無効に
される(1714)。
【0350】データがすでに未変更のままキャッシュさ
れている(1614)とき、変更制御が0の場合は、デ
ータが未変更のまま書き込まれ(1615)、変更制御
が1の場合は、データが変更された状態で書き込まれる
(1715)。
れている(1614)とき、変更制御が0の場合は、デ
ータが未変更のまま書き込まれ(1615)、変更制御
が1の場合は、データが変更された状態で書き込まれる
(1715)。
【0351】データがすでに変更された状態でキャッシ
ュされており、変更制御が0のときは(1616)、デ
ータは書き込まれず、ローカル・キャッシュ項目は登録
されない。変更制御は、データの変更状態と一致しな
い。コマンドが完了し、例外応答コードが返される。
ュされており、変更制御が0のときは(1616)、デ
ータは書き込まれず、ローカル・キャッシュ項目は登録
されない。変更制御は、データの変更状態と一致しな
い。コマンドが完了し、例外応答コードが返される。
【0352】データが、変更された状態でキャッシュさ
れており、変更制御が1のときは(1713)、補足コ
ピー無効化処理によって、他のローカル・キャッシュ中
のそのデータのコピーが無効になり(1714)、デー
タが変更された状態で書き込まれ(1715)、成功応
答コードが返される。
れており、変更制御が1のときは(1713)、補足コ
ピー無効化処理によって、他のローカル・キャッシュ中
のそのデータのコピーが無効になり(1714)、デー
タが変更された状態で書き込まれ(1715)、成功応
答コードが返される。
【0353】登録時書込み:図20は、登録時書込みコ
マンドのプロセス・フロー・ダイアグラムである。ディ
レクトリに名前が割り当てられており、ローカル・キャ
ッシュ項目が登録されており、変更制御がデータの変更
状態と一致する場合、登録時書込みコマンドは、データ
域にデータ・ブロックの内容を格納する。
マンドのプロセス・フロー・ダイアグラムである。ディ
レクトリに名前が割り当てられており、ローカル・キャ
ッシュ項目が登録されており、変更制御がデータの変更
状態と一致する場合、登録時書込みコマンドは、データ
域にデータ・ブロックの内容を格納する。
【0354】ローカル・キャッシュ項目が登録されてお
り、データがキャッシュされていない(1801および
1802)とき、データ・テーブル項目が割り当てられ
る(1803および1804)。割当てが成功し、変更
制御が0の場合(1805)、データが未変更のまま書
き込まれる。割当てが成功し、変更制御が1の場合(1
806)、データが変更された状態で書き込まれ、補足
コピー無効化プロセスによって、データの他のローカル
・キャッシュ・コピーはすべて無効にされる(180
7)。
り、データがキャッシュされていない(1801および
1802)とき、データ・テーブル項目が割り当てられ
る(1803および1804)。割当てが成功し、変更
制御が0の場合(1805)、データが未変更のまま書
き込まれる。割当てが成功し、変更制御が1の場合(1
806)、データが変更された状態で書き込まれ、補足
コピー無効化プロセスによって、データの他のローカル
・キャッシュ・コピーはすべて無効にされる(180
7)。
【0355】ローカル・キャッシュ項目が登録されてお
り、データがすでに未変更のままキャッシュされている
とき(1809)、変更制御が0の場合は、データが未
変更のまま書き込まれ(1810)、変更制御が1の場
合は、データが変更された状態で書き込まれる(181
1)。
り、データがすでに未変更のままキャッシュされている
とき(1809)、変更制御が0の場合は、データが未
変更のまま書き込まれ(1810)、変更制御が1の場
合は、データが変更された状態で書き込まれる(181
1)。
【0356】ローカル・キャッシュ項目が登録されてい
ないとき(1812および1813)、コマンドは完了
し、例外応答コードが返される。
ないとき(1812および1813)、コマンドは完了
し、例外応答コードが返される。
【0357】ローカル・キャッシュ項目が登録されてお
り、データがすでに変更された状態でキャッシュされて
おり、変更制御が0のとき(1814)、データは書き
込まれない。変更制御は、データの変更状態と一致しな
い。
り、データがすでに変更された状態でキャッシュされて
おり、変更制御が0のとき(1814)、データは書き
込まれない。変更制御は、データの変更状態と一致しな
い。
【0358】ローカル・キャッシュ項目が登録され、デ
ータが変更された状態でキャッシュされ、変更制御が1
のとき(1815)、データが変更された状態で書き込
まれ(1811)、補足コピー無効化プロセスによっ
て、データの他のローカル・キャッシュ・コピーはすべ
て無効になる(1808)。
ータが変更された状態でキャッシュされ、変更制御が1
のとき(1815)、データが変更された状態で書き込
まれ(1811)、補足コピー無効化プロセスによっ
て、データの他のローカル・キャッシュ・コピーはすべ
て無効になる(1808)。
【0359】共用データ・コヒーレンシ使用法: 概要:SESキャッシュ、SESキャッシュを使用する
ローカル・データ・マネージャ、およびオペレーティン
グ・システム・サポートから成るシステム構造体の概要
を図21、図22、図23、図24、および図25に示
す。図21には、データベース・マネージャのバッファ
・マネージャによって実行される処理を要約して示す。
シスプレックス内のシステム間で共用されるデータベー
スが最初にアクセスされるとき、ローカル・バッファ・
プールが構築でき(1901)、SESキャッシュ構造
体をサポートするオペレーティング・システム・サービ
スを呼び出して、バッファ・マネージャに、SESキャ
ッシュ構造体にアクセスする権限を与えることができ
(1902)、オペレーティング・システム・サービス
を使用して、タイムアウト間隔が設定できる(190
6)。
ローカル・データ・マネージャ、およびオペレーティン
グ・システム・サポートから成るシステム構造体の概要
を図21、図22、図23、図24、および図25に示
す。図21には、データベース・マネージャのバッファ
・マネージャによって実行される処理を要約して示す。
シスプレックス内のシステム間で共用されるデータベー
スが最初にアクセスされるとき、ローカル・バッファ・
プールが構築でき(1901)、SESキャッシュ構造
体をサポートするオペレーティング・システム・サービ
スを呼び出して、バッファ・マネージャに、SESキャ
ッシュ構造体にアクセスする権限を与えることができ
(1902)、オペレーティング・システム・サービス
を使用して、タイムアウト間隔が設定できる(190
6)。
【0360】SESキャッシュ構造体をサポートするオ
ペレーティング・システム・サービスは、バッファ・マ
ネージャに、SESキャッシュ構造体にアクセスする権
限を与えるために呼び出される(1902)。これらの
サービスはまず、要求されたSESキャッシュ構造体が
すでに割り振られているかどうかを判定する(190
3)。SES構造体がまだ割り振られていない場合、キ
ャッシュ構造体割振りコマンドが呼び出されて、SES
キャッシュ構造体を作成させる(1904)。オペレー
ティング・システム・サービスは、ローカル・キャッシ
ュ識別子(LCID)を選択し、DEFINE VEC
TOR CPU命令を発行することにより、キャッシュ
・コヒーレンシ・ビット・ベクトルを作成させる。ロー
カル・キャッシュ付加コマンドが、ローカル・キャッシ
ュとSESキャッシュと関連付けるために発行される
(1905)。
ペレーティング・システム・サービスは、バッファ・マ
ネージャに、SESキャッシュ構造体にアクセスする権
限を与えるために呼び出される(1902)。これらの
サービスはまず、要求されたSESキャッシュ構造体が
すでに割り振られているかどうかを判定する(190
3)。SES構造体がまだ割り振られていない場合、キ
ャッシュ構造体割振りコマンドが呼び出されて、SES
キャッシュ構造体を作成させる(1904)。オペレー
ティング・システム・サービスは、ローカル・キャッシ
ュ識別子(LCID)を選択し、DEFINE VEC
TOR CPU命令を発行することにより、キャッシュ
・コヒーレンシ・ビット・ベクトルを作成させる。ロー
カル・キャッシュ付加コマンドが、ローカル・キャッシ
ュとSESキャッシュと関連付けるために発行される
(1905)。
【0361】メインライン動作中、データベースへのア
クセスはバッファ・マネージャによってサポートされ
る。多数の異なるプロトコルに従うことができる。メイ
ンライン使用法の例を図22および図23に示す(18
07の詳細)。
クセスはバッファ・マネージャによってサポートされ
る。多数の異なるプロトコルに従うことができる。メイ
ンライン使用法の例を図22および図23に示す(18
07の詳細)。
【0362】DASDからデータを取り出し SESキャッシュに格納して SESキャッシュから取り出し DASDに格納することができる。
【0363】データへのアクセスは、CPC上で実行さ
れ、データベース・マネージャに要求を出すプログラム
によって指令される。たとえば、そのようなプログラム
は、トランザクション・プログラムを実行させるエンド
・ユーザからの要求の結果として実行できる。
れ、データベース・マネージャに要求を出すプログラム
によって指令される。たとえば、そのようなプログラム
は、トランザクション・プログラムを実行させるエンド
・ユーザからの要求の結果として実行できる。
【0364】データベース・バッファ・マネージャに要
求が出されるとき、バッファ・マネージャは、要求され
たデータがすでにローカル・バッファ内にあるかどうか
判定する(2001)。ローカル・バッファにデータが
ある場合、データの妥当性がチェックされる(200
2)。ローカル・バッファ内のデータは、データベース
・マネージャの他のインスタンスによって更新が実行さ
れたために無効になることがある(図23の2103お
よび2105)。ローカル・バッファ内でデータが有効
な場合、参照リスト処理(process refer
ence list)コマンドを介してSESデータ要
素参照を更新するための名前リスト中に項目が作成され
る(2003)。
求が出されるとき、バッファ・マネージャは、要求され
たデータがすでにローカル・バッファ内にあるかどうか
判定する(2001)。ローカル・バッファにデータが
ある場合、データの妥当性がチェックされる(200
2)。ローカル・バッファ内のデータは、データベース
・マネージャの他のインスタンスによって更新が実行さ
れたために無効になることがある(図23の2103お
よび2105)。ローカル・バッファ内でデータが有効
な場合、参照リスト処理(process refer
ence list)コマンドを介してSESデータ要
素参照を更新するための名前リスト中に項目が作成され
る(2003)。
【0365】データが現在ローカル・バッファ内で有効
でない場合、バッファが割り当てられ、妥当性標識が割
り当てられる(2004)。読取り及び登録コマンドを
発行して、SESキャッシュにローカル・バッファを登
録し、SESキャッシュにデータが格納されている場合
はそれを取り出す(2005)。SESキャッシュから
データを取り出さない場合(2006で行われるテス
ト)、DASDからデータが読み取られる(200
8)。要求されたデータを呼出し側に戻すことによっ
て、読取り要求は完了する。
でない場合、バッファが割り当てられ、妥当性標識が割
り当てられる(2004)。読取り及び登録コマンドを
発行して、SESキャッシュにローカル・バッファを登
録し、SESキャッシュにデータが格納されている場合
はそれを取り出す(2005)。SESキャッシュから
データを取り出さない場合(2006で行われるテス
ト)、DASDからデータが読み取られる(200
8)。要求されたデータを呼出し側に戻すことによっ
て、読取り要求は完了する。
【0366】更新要求の場合、バッファ・マネージャに
よってローカル・バッファの内容が更新される(210
1)。次に、SESキャッシュにデータを格納するかど
うか決定が行われる(2102)。SESキャッシュに
データを格納する場合は、登録時書込みコマンドを発行
する(2103)。登録時書込みコマンドによる処理の
一部として、データベース・マネージャの他のインスタ
ンスのローカル・バッファ内にあるデータ要素の他のコ
ピーがすべて無効になる。SESキャッシュにデータを
格納しない場合は、データをDASDに書き込むことが
できる(2104)。DASDにデータが書き込まれて
いるとき、補足コピー無効化コマンドが発行され、デー
タベース・マネージャの他のインスタンスのローカル・
バッファ内のデータ要素の他のコピーがすべて無効にな
る(2105)。
よってローカル・バッファの内容が更新される(210
1)。次に、SESキャッシュにデータを格納するかど
うか決定が行われる(2102)。SESキャッシュに
データを格納する場合は、登録時書込みコマンドを発行
する(2103)。登録時書込みコマンドによる処理の
一部として、データベース・マネージャの他のインスタ
ンスのローカル・バッファ内にあるデータ要素の他のコ
ピーがすべて無効になる。SESキャッシュにデータを
格納しない場合は、データをDASDに書き込むことが
できる(2104)。DASDにデータが書き込まれて
いるとき、補足コピー無効化コマンドが発行され、デー
タベース・マネージャの他のインスタンスのローカル・
バッファ内のデータ要素の他のコピーがすべて無効にな
る(2105)。
【0367】メインライン動作中、バッファ・マネージ
ャは、SESキャッシュの記憶域を管理する責任も負う
(1908、詳細は図24および図25)。バッファ・
マネージャはまた、SESキャッシュからDASDへの
変更済みデータ要素の移行も管理する責任を負う。初期
設定中にタイムアウト間隔が確立されると、オペレーテ
ィング・システムは、SESキャッシュ記憶域の管理
と、SESキャッシュ・データのDASDへの移行のた
め、周期的に処理ルーチンに制御を渡す。
ャは、SESキャッシュの記憶域を管理する責任も負う
(1908、詳細は図24および図25)。バッファ・
マネージャはまた、SESキャッシュからDASDへの
変更済みデータ要素の移行も管理する責任を負う。初期
設定中にタイムアウト間隔が確立されると、オペレーテ
ィング・システムは、SESキャッシュ記憶域の管理
と、SESキャッシュ・データのDASDへの移行のた
め、周期的に処理ルーチンに制御を渡す。
【0368】SESキャッシュの記憶域を管理するため
の1つのプロトコルの概要を図24に示す。この処理に
は、SESキャッシュ構造体の用途の初期設定中にデー
タベース・マネージャが確立する周期的間隔で制御が渡
される。各記憶域クラスに対して記憶域クラス情報読取
り(read storage class info
rmation)コマンドが発行される(2201)。
各記憶域クラスのヒット率が算出される(2202)。
得られたヒット率が、各記憶域クラスに対して設定され
た性能目標と比較され、記憶クラス・サイズの調整量が
計算される(2203)。割り振られたSES資源の変
更が必要な各記憶域クラスについては、再利用ベクトル
設定(set reclaiming vector)
コマンドが発行されて、再利用ベクトルを活動化する
(2204)。メインライン動作中にローカル・バッフ
ァ参照が記録された各記憶域クラスに対して、参照リス
ト処理コマンドが発行される(2003)。
の1つのプロトコルの概要を図24に示す。この処理に
は、SESキャッシュ構造体の用途の初期設定中にデー
タベース・マネージャが確立する周期的間隔で制御が渡
される。各記憶域クラスに対して記憶域クラス情報読取
り(read storage class info
rmation)コマンドが発行される(2201)。
各記憶域クラスのヒット率が算出される(2202)。
得られたヒット率が、各記憶域クラスに対して設定され
た性能目標と比較され、記憶クラス・サイズの調整量が
計算される(2203)。割り振られたSES資源の変
更が必要な各記憶域クラスについては、再利用ベクトル
設定(set reclaiming vector)
コマンドが発行されて、再利用ベクトルを活動化する
(2204)。メインライン動作中にローカル・バッフ
ァ参照が記録された各記憶域クラスに対して、参照リス
ト処理コマンドが発行される(2003)。
【0369】SESキャッシュからDASDへのデータ
の移動を管理するための1つのプロトコルの概要を図2
5に示す。この処理には、SESキャッシュ構造体の用
途の初期設定中にデータベース・マネージャが確立する
周期的間隔で制御が渡される。各キャストアウト・クラ
スに対してキャストアウト・クラス情報読取りコマンド
が発行され、キャストアウト・クラス候補が選択される
(2301)。選択された各キャストアウト・クラスに
対してキャストアウト・クラス読取りコマンドが発行さ
れる(2302)。最も以前に更新されたディレクトリ
項目のリストが返される。選択された各ディレクトリ項
目に対してキャストアウト用読取り(read for
castout)コマンドが発行される(230
3)。SESから読み取ったデータをDASDに書き込
ませる入出力要求が作成される(2304)。入出力動
作が完了した時点で、キャストアウト・ロック解除(u
nlock castout locks)コマンドが
発行される(2305)。
の移動を管理するための1つのプロトコルの概要を図2
5に示す。この処理には、SESキャッシュ構造体の用
途の初期設定中にデータベース・マネージャが確立する
周期的間隔で制御が渡される。各キャストアウト・クラ
スに対してキャストアウト・クラス情報読取りコマンド
が発行され、キャストアウト・クラス候補が選択される
(2301)。選択された各キャストアウト・クラスに
対してキャストアウト・クラス読取りコマンドが発行さ
れる(2302)。最も以前に更新されたディレクトリ
項目のリストが返される。選択された各ディレクトリ項
目に対してキャストアウト用読取り(read for
castout)コマンドが発行される(230
3)。SESから読み取ったデータをDASDに書き込
ませる入出力要求が作成される(2304)。入出力動
作が完了した時点で、キャストアウト・ロック解除(u
nlock castout locks)コマンドが
発行される(2305)。
【0370】SESキャッシュを使用するデータベース
がどれもアクセスされなくなると、SESキャッシュか
らデータベース・マネージャを切断できる(190
9)。データベース・マネージャは、変更されたデータ
要素をすべてSESキャッシュからDASDに移行する
か、それとも変更済みデータ要素をSESキャッシュ内
に残すかを選択できる。SESキャッシュに残っている
変更済みデータ要素がなくなった場合、SESキャッシ
ュ構造体を割振り解除するか、あるいは将来の使用のた
めに割り振ったままにしておくことができる。データベ
ース・マネージャは、SESキャッシュ構造体から切断
させるために、オペレーティング・システム・サービス
を呼び出す(1909)。ローカル・キャッシュ切断コ
マンドが発行され、ローカル・キャッシュのSESキャ
ッシュとの関連付けが解除される。必要なら、オペレー
ティング・システムは、ローカル・キャッシュ識別子
(LCID)を再割当てに利用可能にする。DEFIN
E VECTOR CPU命令が発行されて、キャッシ
ュ・コヒーレンシ・ベクトルを解放する。オペレーティ
ング・システム・サービスは、SESキャッシュを割振
り解除するかどうかを決定する(1911)。SESキ
ャッシュ構造体を割振り解除する場合、キャッシュ構造
体割振り解除(Deallocate Cache S
ructure)コマンドが呼び出される(191
2)。次に、データベース・マネージャによってローカ
ル・バッファ・プールが解放される(1913)。
がどれもアクセスされなくなると、SESキャッシュか
らデータベース・マネージャを切断できる(190
9)。データベース・マネージャは、変更されたデータ
要素をすべてSESキャッシュからDASDに移行する
か、それとも変更済みデータ要素をSESキャッシュ内
に残すかを選択できる。SESキャッシュに残っている
変更済みデータ要素がなくなった場合、SESキャッシ
ュ構造体を割振り解除するか、あるいは将来の使用のた
めに割り振ったままにしておくことができる。データベ
ース・マネージャは、SESキャッシュ構造体から切断
させるために、オペレーティング・システム・サービス
を呼び出す(1909)。ローカル・キャッシュ切断コ
マンドが発行され、ローカル・キャッシュのSESキャ
ッシュとの関連付けが解除される。必要なら、オペレー
ティング・システムは、ローカル・キャッシュ識別子
(LCID)を再割当てに利用可能にする。DEFIN
E VECTOR CPU命令が発行されて、キャッシ
ュ・コヒーレンシ・ベクトルを解放する。オペレーティ
ング・システム・サービスは、SESキャッシュを割振
り解除するかどうかを決定する(1911)。SESキ
ャッシュ構造体を割振り解除する場合、キャッシュ構造
体割振り解除(Deallocate Cache S
ructure)コマンドが呼び出される(191
2)。次に、データベース・マネージャによってローカ
ル・バッファ・プールが解放される(1913)。
【0371】ローカル・キャッシュ管理:ローカル・キ
ャッシュの管理は、SES構造体に付加されたCPCで
実行されるプログラミングによって実行される。図26
に示すオブジェクトは、プログラミングで使用する制御
を表している。ローカル・キャッシュ・ディレクトリ
(2401)は、任意の時点でローカル・キャッシュ内
に存在する各ローカル・キャッシュ・バッファの項目を
提供する。このディレクトリ内の項目(2403)は、
データ要素の名前、データ要素に現在割り当てられてい
るLCEN、データ要素の有効な標識、データ要素の変
更状態の指示、データ要素と関連するバッファのアドレ
スを含む、1組のフィールドから構成される。LCEN
のディレクトリ項目への割当ては、プログラミングの制
御下で行われ、LCEN割当てベクトルを使用して動的
に確立できる(2404)。データ要素と関連するバッ
ファのアドレスが、ローカル・キャッシュ・バッファに
格納されているデータ要素を探し出す手段を提供する
(2402)。
ャッシュの管理は、SES構造体に付加されたCPCで
実行されるプログラミングによって実行される。図26
に示すオブジェクトは、プログラミングで使用する制御
を表している。ローカル・キャッシュ・ディレクトリ
(2401)は、任意の時点でローカル・キャッシュ内
に存在する各ローカル・キャッシュ・バッファの項目を
提供する。このディレクトリ内の項目(2403)は、
データ要素の名前、データ要素に現在割り当てられてい
るLCEN、データ要素の有効な標識、データ要素の変
更状態の指示、データ要素と関連するバッファのアドレ
スを含む、1組のフィールドから構成される。LCEN
のディレクトリ項目への割当ては、プログラミングの制
御下で行われ、LCEN割当てベクトルを使用して動的
に確立できる(2404)。データ要素と関連するバッ
ファのアドレスが、ローカル・キャッシュ・バッファに
格納されているデータ要素を探し出す手段を提供する
(2402)。
【0372】1つの実施態様では、LCEN値のディレ
クトリ項目に対する固定した関連が存在する。この実施
態様では、CPC上のオペレーティング・システムが管
理する仮想記憶域にローカル・キャッシュ・バッファが
常駐している。データ・マネージャの初期設定中、仮想
記憶域にローカル・キャッシュ・バッファが確立され、
LCEN値とローカル・キャッシュ・バッファの間に固
定した関連が作られる。つまり、バッファ1に1のLC
EN値が割り当てられ、バッファ2に2のLCEN値が
割り当てられ、以下同様である。
クトリ項目に対する固定した関連が存在する。この実施
態様では、CPC上のオペレーティング・システムが管
理する仮想記憶域にローカル・キャッシュ・バッファが
常駐している。データ・マネージャの初期設定中、仮想
記憶域にローカル・キャッシュ・バッファが確立され、
LCEN値とローカル・キャッシュ・バッファの間に固
定した関連が作られる。つまり、バッファ1に1のLC
EN値が割り当てられ、バッファ2に2のLCEN値が
割り当てられ、以下同様である。
【0373】第2の実施態様では、LCEN値とディレ
クトリ項目の関連付けが動的である。この実施態様で
は、CPC上のオペレーティング・システムが管理する
仮想記憶域にローカル・キャッシュ・バッファが常駐
し、CPCの拡張記憶域に第2レベルのローカル・キャ
ッシュ・バッファが存在する。仮想プールおよび拡張プ
ール内の各ローカル・キャッシュ・バッファに対してデ
ィレクトリ項目が存在する。仮想記憶域プールと拡張記
憶域プールの間のデータの移動は、一定のデータ要素の
参照の頻度に基づき、プログラムの制御下で行われる。
全体的な流れは以下のとおりである。
クトリ項目の関連付けが動的である。この実施態様で
は、CPC上のオペレーティング・システムが管理する
仮想記憶域にローカル・キャッシュ・バッファが常駐
し、CPCの拡張記憶域に第2レベルのローカル・キャ
ッシュ・バッファが存在する。仮想プールおよび拡張プ
ール内の各ローカル・キャッシュ・バッファに対してデ
ィレクトリ項目が存在する。仮想記憶域プールと拡張記
憶域プールの間のデータの移動は、一定のデータ要素の
参照の頻度に基づき、プログラムの制御下で行われる。
全体的な流れは以下のとおりである。
【0374】1.DASDから仮想バッファにデータ要
素が読み込まれ、ディレクトリ項目が割り当てられる。
素が読み込まれ、ディレクトリ項目が割り当てられる。
【0375】2.仮想バッファ・プール内のデータ要素
が、LRU順序で維持される。
が、LRU順序で維持される。
【0376】3.周期的プロセスが実行され、最も以前
に使用されたデータ要素が、仮想バッファ・プールから
拡張記憶域バッファ位置に移動される。
に使用されたデータ要素が、仮想バッファ・プールから
拡張記憶域バッファ位置に移動される。
【0377】A.データ要素が仮想バッファ・プールか
ら拡張記憶域バッファ位置に移動されるとき、データ要
素と関連するディレクトリ項目が、仮想記憶域バッファ
のディレクトリ項目から拡張記憶域バッファのディレク
トリ項目に変わる。
ら拡張記憶域バッファ位置に移動されるとき、データ要
素と関連するディレクトリ項目が、仮想記憶域バッファ
のディレクトリ項目から拡張記憶域バッファのディレク
トリ項目に変わる。
【0378】B.データ要素が仮想バッファ・プールか
ら拡張記憶域バッファ位置に移動されるとき、仮想記憶
域および関連するディレクトリ項目が再割当てに利用可
能になる。
ら拡張記憶域バッファ位置に移動されるとき、仮想記憶
域および関連するディレクトリ項目が再割当てに利用可
能になる。
【0379】4.拡張バッファ・プール内のデータ要素
が、LRU順序で維持される。
が、LRU順序で維持される。
【0380】5.周期的プロセスが実行され、最も以前
に使用された拡張バッファ・プール要素およびそれに関
連するディレクトリ項目が利用可能になる。
に使用された拡張バッファ・プール要素およびそれに関
連するディレクトリ項目が利用可能になる。
【0381】6.拡張バッファ・プール要求が再割当て
に利用可能になるとき、関連するLCENも再割当てに
利用可能になる。
に利用可能になるとき、関連するLCENも再割当てに
利用可能になる。
【0382】LCEN値のディレクトリ項目への割当て
は、次のように動的に管理される。データ要素が最初に
仮想バッファ・プールに格納されるとき、LCEN割当
てベクトルからLCENが割り当てられる(240
4)。LCENの割当ては、論理文字長比較(CLC
L)命令を使用し、次にテスト設定命令(TS)または
比較交換命令(CS)を使用してLCEN割当てベクト
ル中の使用中ビットを設定するなど、周知のプログラミ
ング技術によって行うことができる。選択されたLCE
Nは、ディレクトリ項目に格納され、データ要素が仮想
バッファ・プールまたは拡張バッファ・プールにある
間、データ要素と関連付けられたままになる。拡張バッ
ファ・プールからデータ要素が除去されるとき、LCE
Nが再割当てに利用可能になる。
は、次のように動的に管理される。データ要素が最初に
仮想バッファ・プールに格納されるとき、LCEN割当
てベクトルからLCENが割り当てられる(240
4)。LCENの割当ては、論理文字長比較(CLC
L)命令を使用し、次にテスト設定命令(TS)または
比較交換命令(CS)を使用してLCEN割当てベクト
ル中の使用中ビットを設定するなど、周知のプログラミ
ング技術によって行うことができる。選択されたLCE
Nは、ディレクトリ項目に格納され、データ要素が仮想
バッファ・プールまたは拡張バッファ・プールにある
間、データ要素と関連付けられたままになる。拡張バッ
ファ・プールからデータ要素が除去されるとき、LCE
Nが再割当てに利用可能になる。
【0383】上記の流れから、ディレクトリ項目とバッ
ファ要素の関連付けが動的であることが分かる。さら
に、仮想ローカル・キャッシュ・バッファおよび拡張ロ
ーカル・キャッシュ・バッファがLRU順序で維持され
ることも分かる。また、LCEN値が、データ要素の妥
当性を表し、CPC内のプログラミングで管理されるロ
ーカル・キャッシュ内のそのデータ要素の位置とは関係
がないことが分かる。
ファ要素の関連付けが動的であることが分かる。さら
に、仮想ローカル・キャッシュ・バッファおよび拡張ロ
ーカル・キャッシュ・バッファがLRU順序で維持され
ることも分かる。また、LCEN値が、データ要素の妥
当性を表し、CPC内のプログラミングで管理されるロ
ーカル・キャッシュ内のそのデータ要素の位置とは関係
がないことが分かる。
【0384】1つの実施態様の任意選択機能(図27)
は、複数のバッファ・プールをサポートできる。これら
複数のバッファは、原則としてデータへのランダム・ア
クセスと、複数のプログラムによる順次アクセスをサポ
ートする。データを順次参照する所与のアプリケーショ
ンをサポートする独立した順次バッファ・プール(25
03Aおよび2503B)が作成され、そのデータを事
前に取り出してバッファに入れておくと性能を向上でき
る。この実施態様では、LCEN値が、数の上で順次バ
ッファ・プール内のバッファの数をサポートするのに十
分な固定した数の値(2503Aおよび2503B)
と、主バッファ・プールをサポートするのに十分な数の
大きなセグメントの値(2502)から成るセグメント
にグループ分けされる(2504)。LCEN値とバッ
ファ・プール項目の関連付けは、主バッファ・プールお
よび各順次バッファ・プールの両方に対して固定され
る。順次バッファ・プールの数は、プログラム実行に基
づき動的である。順次バッファ・プールは、順次アクセ
ス・パターンが検出されたとき作成される。順次バッフ
ァ・プールが作成されるとき、LCEN値の利用可能な
セグメントが割り当てられる。全体的な流れは以下のと
おりである。
は、複数のバッファ・プールをサポートできる。これら
複数のバッファは、原則としてデータへのランダム・ア
クセスと、複数のプログラムによる順次アクセスをサポ
ートする。データを順次参照する所与のアプリケーショ
ンをサポートする独立した順次バッファ・プール(25
03Aおよび2503B)が作成され、そのデータを事
前に取り出してバッファに入れておくと性能を向上でき
る。この実施態様では、LCEN値が、数の上で順次バ
ッファ・プール内のバッファの数をサポートするのに十
分な固定した数の値(2503Aおよび2503B)
と、主バッファ・プールをサポートするのに十分な数の
大きなセグメントの値(2502)から成るセグメント
にグループ分けされる(2504)。LCEN値とバッ
ファ・プール項目の関連付けは、主バッファ・プールお
よび各順次バッファ・プールの両方に対して固定され
る。順次バッファ・プールの数は、プログラム実行に基
づき動的である。順次バッファ・プールは、順次アクセ
ス・パターンが検出されたとき作成される。順次バッフ
ァ・プールが作成されるとき、LCEN値の利用可能な
セグメントが割り当てられる。全体的な流れは以下のと
おりである。
【0385】1.データ要素が、DASDから読み取ら
れ、必要に応じて主バッファ・プールに格納される。こ
れらのデータ要素は、取り出された後、RARコマンド
と、主バッファ・プール内の項目に関連するLCENと
によって、SESキャッシュに登録される。
れ、必要に応じて主バッファ・プールに格納される。こ
れらのデータ要素は、取り出された後、RARコマンド
と、主バッファ・プール内の項目に関連するLCENと
によって、SESキャッシュに登録される。
【0386】2.バッファ・ハンドラによって順次アク
セス・パターンが検出されるとき、順次バッファ・プー
ルが作成され、新規に作成された順次バッファ・プール
にLCEN値の利用可能なセグメントが割り当てられ
る。
セス・パターンが検出されるとき、順次バッファ・プー
ルが作成され、新規に作成された順次バッファ・プール
にLCEN値の利用可能なセグメントが割り当てられ
る。
【0387】3.順次アクセス・プログラムによって取
り出されるデータ要素がまだ主バッファ・プールに存在
していない場合、バッファ・ハンドラはDASDからそ
れらの予期されるデータ要素を取り出し、関連するLC
EN値を持つ、割り当てられた順次バッファ・プールに
それを格納する。
り出されるデータ要素がまだ主バッファ・プールに存在
していない場合、バッファ・ハンドラはDASDからそ
れらの予期されるデータ要素を取り出し、関連するLC
EN値を持つ、割り当てられた順次バッファ・プールに
それを格納する。
【0388】4.データ要素の探索が行われるとき、デ
ータ要素は主バッファ・プールまたは順次バッファ・プ
ールで見つかる。要求されたデータ要素が順次バッファ
・プールにある場合、データ要素が順次バッファ・プー
ルから主バッファ・プールに移動される。
ータ要素は主バッファ・プールまたは順次バッファ・プ
ールで見つかる。要求されたデータ要素が順次バッファ
・プールにある場合、データ要素が順次バッファ・プー
ルから主バッファ・プールに移動される。
【0389】5.データ要素が順次バッファ・プールか
ら主バッファ・プールに移動されるとき、データ要素に
関連するLCENが、順次バッファ・プールに関連する
LCEN値から主バッファ・プールに関連するLCEN
値に変更される。データ要素に関連するLCEN値の変
更は、RARコマンドを使用して行われる。SESキャ
ッシュにおいてRARコマンドが実行されるとき、名前
付きデータ要素がすでに登録されており、要求側ユーザ
にとって有効である場合、およびコマンド上で指定され
たLCENが、指定されたユーザ用に格納されたLCE
Nと同一の場合は、以下のことが行われる。
ら主バッファ・プールに移動されるとき、データ要素に
関連するLCENが、順次バッファ・プールに関連する
LCEN値から主バッファ・プールに関連するLCEN
値に変更される。データ要素に関連するLCEN値の変
更は、RARコマンドを使用して行われる。SESキャ
ッシュにおいてRARコマンドが実行されるとき、名前
付きデータ要素がすでに登録されており、要求側ユーザ
にとって有効である場合、およびコマンド上で指定され
たLCENが、指定されたユーザ用に格納されたLCE
Nと同一の場合は、以下のことが行われる。
【0390】A.要求側ユーザ用の古いLCEN値に対
して無効化コマンドが生成される。
して無効化コマンドが生成される。
【0391】B.無効化機能が実行されたことを示す標
識が返される。
識が返される。
【0392】C.RARコマンド応答中で古いLCEN
値が返される。
値が返される。
【0393】上記のことから、データ要素に関連するL
CENがプログラミングの制御下にあることが分かる。
プログラミングでは、時間の経過と共に、データ要素の
妥当性を表す、異なるLCEN値を割り当てることがで
きる。さらに、割り当てられたLCEN値の変更は、そ
れによってデータ要素の内容の保全性を失うことなく行
われ、データ要素はローカル・キャッシュ内にそのまま
残ることが分かる。
CENがプログラミングの制御下にあることが分かる。
プログラミングでは、時間の経過と共に、データ要素の
妥当性を表す、異なるLCEN値を割り当てることがで
きる。さらに、割り当てられたLCEN値の変更は、そ
れによってデータ要素の内容の保全性を失うことなく行
われ、データ要素はローカル・キャッシュ内にそのまま
残ることが分かる。
【0394】オンライン・トランザクション・モデル:
以下の状況は、トランザクション処理環境に基づいてい
る。この環境では、IMSトランザクション・マネージ
ャやCICSトランザクション・マネージャなどのトラ
ンザクション・マネージャが、自己の経路長およびデー
タのアクセスという点でうまく形成されたプログラムを
開始する。トランザクション・マネージャは、シスプレ
ックス内でデータ共用機能を提供する、データベース・
マネージャへのプログラム・アクセスをサポートする。
これらのデータベース・マネージャは、米国特許出願第
860808号に記載されているようなロッキング・サ
ービス、本発明で記述する機構に従った一貫性をもつロ
ーカル・キャッシュおよびSESキャッシュ内でのデー
タのキャッシング、ならびに周知のプログラミング慣行
に従ったトランザクション開始/終了およびデータベー
ス変更のロギングを使用して、細分性データ共用を促進
する。
以下の状況は、トランザクション処理環境に基づいてい
る。この環境では、IMSトランザクション・マネージ
ャやCICSトランザクション・マネージャなどのトラ
ンザクション・マネージャが、自己の経路長およびデー
タのアクセスという点でうまく形成されたプログラムを
開始する。トランザクション・マネージャは、シスプレ
ックス内でデータ共用機能を提供する、データベース・
マネージャへのプログラム・アクセスをサポートする。
これらのデータベース・マネージャは、米国特許出願第
860808号に記載されているようなロッキング・サ
ービス、本発明で記述する機構に従った一貫性をもつロ
ーカル・キャッシュおよびSESキャッシュ内でのデー
タのキャッシング、ならびに周知のプログラミング慣行
に従ったトランザクション開始/終了およびデータベー
ス変更のロギングを使用して、細分性データ共用を促進
する。
【0395】この環境では、2段階ロッキングが実施さ
れ、2段階コミット・プロトコルが実施される。ロック
は、データベース・マネージャを介してトランザクショ
ンによってデータベース・レコードが参照されるときに
獲得される。データベース内のレコードは、トランザク
ションが実行するときに読み取られ書き込まれる。トラ
ンザクションが処理を完了すると、トランザクション・
マネージャは、2段階コミット・プロセスを実行し、ま
ず各データベース・マネージャが、コミットの準備をす
るよう要求される。すべての資源マネージャが準備要求
に対して応答すると、応答がすべて肯定であった場合、
すべての資源マネージャにコミット要求が出される。コ
ミット時に、データベース・マネージャは、データベー
スの変更が他の作業ユニットに見えるようにし、保留ロ
ックを解除する。
れ、2段階コミット・プロトコルが実施される。ロック
は、データベース・マネージャを介してトランザクショ
ンによってデータベース・レコードが参照されるときに
獲得される。データベース内のレコードは、トランザク
ションが実行するときに読み取られ書き込まれる。トラ
ンザクションが処理を完了すると、トランザクション・
マネージャは、2段階コミット・プロセスを実行し、ま
ず各データベース・マネージャが、コミットの準備をす
るよう要求される。すべての資源マネージャが準備要求
に対して応答すると、応答がすべて肯定であった場合、
すべての資源マネージャにコミット要求が出される。コ
ミット時に、データベース・マネージャは、データベー
スの変更が他の作業ユニットに見えるようにし、保留ロ
ックを解除する。
【0396】SESキャッシュ・コヒーレンシの状況:
以下の状況は、前述のSESキャッシュ・コヒーレンシ
機能を使用して、シスプレックス構成を通してデータ保
全性およびキャッシュ・コヒーレンシを備えたデータ共
用バッファ・マネージャを実現する方法の一例を概述し
たものである。まず、SESキャッシュにデータ要素を
登録し、DASDからバッファを取り出すための、バッ
ファ・マネージャ処理の概要を示す。次に、変更済みデ
ータ要素をDASDに書き込む流れについて述べる。次
に、変更済みデータ要素をSESキャッシュに書き込む
流れを示す。さらに、データ要素の逐次化を解除するた
めの流れを示す。最後に、新規データ要素のSESキャ
ッシュへの書込みの概要を示す。
以下の状況は、前述のSESキャッシュ・コヒーレンシ
機能を使用して、シスプレックス構成を通してデータ保
全性およびキャッシュ・コヒーレンシを備えたデータ共
用バッファ・マネージャを実現する方法の一例を概述し
たものである。まず、SESキャッシュにデータ要素を
登録し、DASDからバッファを取り出すための、バッ
ファ・マネージャ処理の概要を示す。次に、変更済みデ
ータ要素をDASDに書き込む流れについて述べる。次
に、変更済みデータ要素をSESキャッシュに書き込む
流れを示す。さらに、データ要素の逐次化を解除するた
めの流れを示す。最後に、新規データ要素のSESキャ
ッシュへの書込みの概要を示す。
【0397】バッファの読取り:バッファを読み取る流
れの概要を図22に示す。この例では、要求されたデー
タ要素が常駐するバッファ上で逐次化が行われる。次
に、要求された特定のレコード上で逐次化が行われる別
の実施態様を、図29に示す流れに基づいて述べる。所
望のレコードが常駐するバッファ上で、おそらく米国特
許出願第860808号に記載されているようなロッキ
ング機構を使用して、ロックが得られる。次に、バッフ
ァ・マネージャは、ローカル・キャッシュ・ディレクト
リを探索する(2401)ことにより、要求されたバッ
ファがすでにローカル・キャッシュに存在しているかど
うか判定する(2001)。要求されたバッファがロー
カル・キャッシュ内にある場合、ベクトル項目テスト
(TVE)命令を使用して、ローカル・バッファの妥当
性がテストされる(2002)。ローカル・バッファに
関連するLCENの設定の保全性は、米国特許出願第8
60800号に記載されている、SES機構を付加CP
Cに接続するシステム間リンク(ISCリンク)の正し
い動作を決定する機構に基づくプロトコルによって保護
される。ローカル・バッファが有効な場合、要求された
データ・レコードを返すことによりプロセスが終了する
(2008)。
れの概要を図22に示す。この例では、要求されたデー
タ要素が常駐するバッファ上で逐次化が行われる。次
に、要求された特定のレコード上で逐次化が行われる別
の実施態様を、図29に示す流れに基づいて述べる。所
望のレコードが常駐するバッファ上で、おそらく米国特
許出願第860808号に記載されているようなロッキ
ング機構を使用して、ロックが得られる。次に、バッフ
ァ・マネージャは、ローカル・キャッシュ・ディレクト
リを探索する(2401)ことにより、要求されたバッ
ファがすでにローカル・キャッシュに存在しているかど
うか判定する(2001)。要求されたバッファがロー
カル・キャッシュ内にある場合、ベクトル項目テスト
(TVE)命令を使用して、ローカル・バッファの妥当
性がテストされる(2002)。ローカル・バッファに
関連するLCENの設定の保全性は、米国特許出願第8
60800号に記載されている、SES機構を付加CP
Cに接続するシステム間リンク(ISCリンク)の正し
い動作を決定する機構に基づくプロトコルによって保護
される。ローカル・バッファが有効な場合、要求された
データ・レコードを返すことによりプロセスが終了する
(2008)。
【0398】要求されたバッファが現在ローカル・キャ
ッシュ内に入っていない(2001からのN経路)場
合、「ローカル・キャッシュ管理」で例示したバッファ
・マネージャのプロトコルに従って、バッファおよびL
CEN値が割り当てられる(2004)。要求されたデ
ータが現在ローカル・キャッシュに格納されているが、
現在有効でない(2003からのN経路)場合、割り当
てられたローカル・バッファおよび関連するLCENを
再使用するか、あるいは無効なバッファおよびLCEN
を再割当てに利用可能にし、新規のバッファおよびLC
EN値を割り当てることができる。使用するLCEN
が、ローカル側でキャッシュされたデータ要素に使用さ
れた後、ローカル・キャッシュ管理LRUアルゴリズム
に基いて再利用された場合、LCENの最後の使用に関
連するバッファ名が、そのバッファに関連するディレク
トリ項目中に存在している。この以前のバッファ名が、
新規バッファ名およびLCEN値と共に読取り及び登録
(RAR)コマンドに提供される(2005)。以前の
バッファ名は、SES内で関連するディレクトリ項目を
探し出すとき使用され、指定されたLCENが要求側ユ
ーザの項目と一致し、ディレクトリ項目が有効な場合、
古いバッファ名のディレクトリ項目からLCENの登録
が解除される。指定されたバッファ名は、SES内で関
連するディレクトリ項目を探し出すのに使用され、指定
されたLCENが要求側ユーザの項目と一致せず、ディ
レクトリ項目が有効な場合、SESは、古いLCEN値
に対する無効化要求を開始する。
ッシュ内に入っていない(2001からのN経路)場
合、「ローカル・キャッシュ管理」で例示したバッファ
・マネージャのプロトコルに従って、バッファおよびL
CEN値が割り当てられる(2004)。要求されたデ
ータが現在ローカル・キャッシュに格納されているが、
現在有効でない(2003からのN経路)場合、割り当
てられたローカル・バッファおよび関連するLCENを
再使用するか、あるいは無効なバッファおよびLCEN
を再割当てに利用可能にし、新規のバッファおよびLC
EN値を割り当てることができる。使用するLCEN
が、ローカル側でキャッシュされたデータ要素に使用さ
れた後、ローカル・キャッシュ管理LRUアルゴリズム
に基いて再利用された場合、LCENの最後の使用に関
連するバッファ名が、そのバッファに関連するディレク
トリ項目中に存在している。この以前のバッファ名が、
新規バッファ名およびLCEN値と共に読取り及び登録
(RAR)コマンドに提供される(2005)。以前の
バッファ名は、SES内で関連するディレクトリ項目を
探し出すとき使用され、指定されたLCENが要求側ユ
ーザの項目と一致し、ディレクトリ項目が有効な場合、
古いバッファ名のディレクトリ項目からLCENの登録
が解除される。指定されたバッファ名は、SES内で関
連するディレクトリ項目を探し出すのに使用され、指定
されたLCENが要求側ユーザの項目と一致せず、ディ
レクトリ項目が有効な場合、SESは、古いLCEN値
に対する無効化要求を開始する。
【0399】データ要素に対する権利がSESに登録さ
れた後、登録の発生に使用されたコマンドの応答を受け
取るまでの間に、SESサポート機構は、相互無効化コ
マンドを受け取って指定されたローカル・キャッシュ・
ベクトル項目に対して実行できるので、プログラムによ
るローカル・キャッシュ・ベクトル項目の更新をSES
コマンドの実行と逐次化する必要がある。プログラム
は、ローカル・キャッシュ・ベクトル項目が、介入する
相互無効化コマンドによって0に設定された後1に設定
されないようにする必要がある。そうしないと、ローカ
ル側でキャッシュされたデータ・ページの無効化が検出
されず、保全性が失われる可能性がある。
れた後、登録の発生に使用されたコマンドの応答を受け
取るまでの間に、SESサポート機構は、相互無効化コ
マンドを受け取って指定されたローカル・キャッシュ・
ベクトル項目に対して実行できるので、プログラムによ
るローカル・キャッシュ・ベクトル項目の更新をSES
コマンドの実行と逐次化する必要がある。プログラム
は、ローカル・キャッシュ・ベクトル項目が、介入する
相互無効化コマンドによって0に設定された後1に設定
されないようにする必要がある。そうしないと、ローカ
ル側でキャッシュされたデータ・ページの無効化が検出
されず、保全性が失われる可能性がある。
【0400】プログラミングで、ローカル・キャッシュ
に登録する項目を指定するSESキャッシュ・コマンド
の開始前に、SVE命令を使用してローカル・キャッシ
ュ・ベクトル項目を1に設定する。コマンドが失敗した
ことが指示または推定される場合、SVE命令を使用し
て、ローカル・キャッシュ・ベクトル項目を0にすべき
である。
に登録する項目を指定するSESキャッシュ・コマンド
の開始前に、SVE命令を使用してローカル・キャッシ
ュ・ベクトル項目を1に設定する。コマンドが失敗した
ことが指示または推定される場合、SVE命令を使用し
て、ローカル・キャッシュ・ベクトル項目を0にすべき
である。
【0401】SES機構へのアクセスをサポートするオ
ペレーティング・システム・サービスの一部として、指
定されたLCENが、ベクトル項目設定(Set Ve
ctor Entry)(SVE)CPU命令を使用し
て有効状態に設定される。プロセッサ・ローカル記憶域
内でのローカル有効ビットの設定を、コマンドの実行と
逐次化する必要がある。以下の状況は避けるべきであ
る。
ペレーティング・システム・サービスの一部として、指
定されたLCENが、ベクトル項目設定(Set Ve
ctor Entry)(SVE)CPU命令を使用し
て有効状態に設定される。プロセッサ・ローカル記憶域
内でのローカル有効ビットの設定を、コマンドの実行と
逐次化する必要がある。以下の状況は避けるべきであ
る。
【0402】1.読取り及び登録コマンドがSES制御
装置に送られ、SES逐次化の下で要求側に対してディ
レクトリが更新される。
装置に送られ、SES逐次化の下で要求側に対してディ
レクトリが更新される。
【0403】2.応答が送られ、逐次化が解除される。
【0404】3.当該名前に対して登録時書込みコマン
ドが処理される。
ドが処理される。
【0405】4.ローカル・システムに対して相互無効
化信号が生成される。
化信号が生成される。
【0406】5.まず相互無効化信号が到着し、ローカ
ル有効ビットを無効にする。
ル有効ビットを無効にする。
【0407】6.読取り及び登録応答が到着し、プログ
ラムがCPU命令を発行してローカル有効ビットの妥当
性を検査する。
ラムがCPU命令を発行してローカル有効ビットの妥当
性を検査する。
【0408】データはこのときローカル・キャッシュ内
で有効に見えるが、実際はそうではない。これが保全性
の露出である。これは、以下のプロトコルを使用すれば
避けられる(図28参照)。
で有効に見えるが、実際はそうではない。これが保全性
の露出である。これは、以下のプロトコルを使用すれば
避けられる(図28参照)。
【0409】1.プログラムがCPU命令を発行して、
ローカル有効ビットをセットする(2601)。
ローカル有効ビットをセットする(2601)。
【0410】2.SES制御装置に読取り及び登録コマ
ンドが送られ、SES逐次化の下で要求側に対してディ
レクトリが更新される(2602)。
ンドが送られ、SES逐次化の下で要求側に対してディ
レクトリが更新される(2602)。
【0411】3.読取り及び登録応答が到着し、プログ
ラムが応答コードを問い合わせる。名前が登録されたこ
とを応答コードが示すとき、処理は完了する(2603
Yパス)。
ラムが応答コードを問い合わせる。名前が登録されたこ
とを応答コードが示すとき、処理は完了する(2603
Yパス)。
【0412】4.そうでない場合、SVE CPU命令
が発行されて、ローカル有効ビットをリセットする(2
604)。
が発行されて、ローカル有効ビットをリセットする(2
604)。
【0413】上記の状況が発生する場合、ビットの状態
が正しいことを反映するようにローカル有効ビットの最
終状態が0に設定される。
が正しいことを反映するようにローカル有効ビットの最
終状態が0に設定される。
【0414】RARコマンドが首尾よく完了した後、バ
ッファ・マネージャがデータをSESにキャッシュする
ことを選択した場合は、データがSESから取り出され
ている可能性がある。バッファ・マネージャがデータ要
素をSESにキャッシュすることを選択していない場
合、DASDから、獲得されたローカル・キャッシュ・
バッファにデータが取り込まれる可能性がある(200
7)。
ッファ・マネージャがデータをSESにキャッシュする
ことを選択した場合は、データがSESから取り出され
ている可能性がある。バッファ・マネージャがデータ要
素をSESにキャッシュすることを選択していない場
合、DASDから、獲得されたローカル・キャッシュ・
バッファにデータが取り込まれる可能性がある(200
7)。
【0415】DASDからデータが取り出された後、バ
ッファ・マネージャは、SESキャッシュにデータを格
納するか、それともそうしないかを選択できる。SES
に未変更データ要素をキャッシュするとき、バッファ・
ハンドラは、変更ビットが未変更データ要素を示すよう
に設定された、登録時書込み(WWR)コマンドを使用
する。データ要素に対して有効に登録されている付加ユ
ーザから要求が出たとき、WWRは首尾よく完了する。
データ要素が変更されていないことを変更ビットが示し
ているので、他の付加ローカル・キャッシュは無効にさ
れない。
ッファ・マネージャは、SESキャッシュにデータを格
納するか、それともそうしないかを選択できる。SES
に未変更データ要素をキャッシュするとき、バッファ・
ハンドラは、変更ビットが未変更データ要素を示すよう
に設定された、登録時書込み(WWR)コマンドを使用
する。データ要素に対して有効に登録されている付加ユ
ーザから要求が出たとき、WWRは首尾よく完了する。
データ要素が変更されていないことを変更ビットが示し
ているので、他の付加ローカル・キャッシュは無効にさ
れない。
【0416】バッファのDASDへの書込み 図21は、シスプレックス・データ共用環境においてD
ASDにバッファを書き込む際の全体的な流れを示して
いる。この状況において、バッファの書込みは、DAS
D上にデータを記録することであり(2104)、SE
Sキャッシュはキャッシュ・コヒーレンシ用の機構とし
てだけ使用される。つまり、データはSESキャッシュ
には書き込まれない。SESキャッシュにデータが書き
込まれない場合、補足コピー無効化(ICC)コマンド
の呼出しによって他のローカル・キャッシュが無効にさ
れる(2105)。
ASDにバッファを書き込む際の全体的な流れを示して
いる。この状況において、バッファの書込みは、DAS
D上にデータを記録することであり(2104)、SE
Sキャッシュはキャッシュ・コヒーレンシ用の機構とし
てだけ使用される。つまり、データはSESキャッシュ
には書き込まれない。SESキャッシュにデータが書き
込まれない場合、補足コピー無効化(ICC)コマンド
の呼出しによって他のローカル・キャッシュが無効にさ
れる(2105)。
【0417】ICCコマンドのプロセス・フロー(図1
3)から、データ要素の他の登録済みローカル・キャッ
シュ・コピーはすべて無効にされることが分かる。図2
2の2002に示す流れを検討すると、このプロセスに
より、データベース・マネージャの他の共用インスタン
スがすべて、変更済みデータ要素を取り出すことが分か
る。
3)から、データ要素の他の登録済みローカル・キャッ
シュ・コピーはすべて無効にされることが分かる。図2
2の2002に示す流れを検討すると、このプロセスに
より、データベース・マネージャの他の共用インスタン
スがすべて、変更済みデータ要素を取り出すことが分か
る。
【0418】バッファのSESキャッシュへの書込み:
図23は、シスプレックス・データ共用環境においてS
ESキャッシュにバッファを書き込む際の全体的な流れ
を示している。この状況において、バッファの書込み
は、SES上にデータを記録することである(210
3)。SESキャッシュにデータが書き込まれるとき、
フロー・ダイアグラムに登録時書込み(WWR)に関し
て示されている相互無効化プロセスによって他のローカ
ル・キャッシュが無効にされる(図20)。図22の2
002に示す流れを検討すると、このプロセスにより、
2005で読取り及び登録(RAR)コマンドが実行さ
れた結果として、データベース・マネージャの他の共用
インスタンスがすべて、SESから変更済みデータ要素
を取り出すことが分かる。
図23は、シスプレックス・データ共用環境においてS
ESキャッシュにバッファを書き込む際の全体的な流れ
を示している。この状況において、バッファの書込み
は、SES上にデータを記録することである(210
3)。SESキャッシュにデータが書き込まれるとき、
フロー・ダイアグラムに登録時書込み(WWR)に関し
て示されている相互無効化プロセスによって他のローカ
ル・キャッシュが無効にされる(図20)。図22の2
002に示す流れを検討すると、このプロセスにより、
2005で読取り及び登録(RAR)コマンドが実行さ
れた結果として、データベース・マネージャの他の共用
インスタンスがすべて、SESから変更済みデータ要素
を取り出すことが分かる。
【0419】バッファのロック解除:トランザクション
・コミット時に、トランザクションによって保持されて
いたすべての逐次化点がロック解除される。おそらく米
国特許出願第860808号に記述されているようなロ
ッキング機構を使用すると、バッファがロック解除され
る。バッファがロック解除されるとき、待機中のデータ
要求または後続のデータに要求が、SESキャッシュが
データをキャッシュするのに使用されている場合はSE
Sから、SESキャッシュがデータをキャッシュするの
に使用されていない場合、または現在SESキャッシュ
にデータ要素がない場合は、DASDからデータ要素を
取り出す。
・コミット時に、トランザクションによって保持されて
いたすべての逐次化点がロック解除される。おそらく米
国特許出願第860808号に記述されているようなロ
ッキング機構を使用すると、バッファがロック解除され
る。バッファがロック解除されるとき、待機中のデータ
要求または後続のデータに要求が、SESキャッシュが
データをキャッシュするのに使用されている場合はSE
Sから、SESキャッシュがデータをキャッシュするの
に使用されていない場合、または現在SESキャッシュ
にデータ要素がない場合は、DASDからデータ要素を
取り出す。
【0420】書込み及び登録:データセットが、拡張さ
れているとき、あるいは初めて初期設定されているとき
など、大量の新規データを作成中のとき、細分性ロッキ
ングは必要なく、データ・マネージャは、データが存在
する可能性がないことを認識できる。データ・マネージ
ャは、このような状況をサポートして、データベース全
体へのアクセスを逐次化するロックを獲得できる。しか
し、データセットが拡張または作成された後は、それを
共用することが好ましいことがある。したがって、その
データをSESキャッシュに登録させ常駐させることが
好ましい。書込み及び登録(WAR)コマンドは、これ
らの環境をサポートする。WARコマンドを実行する
と、WARプロセス・フロー・ダイアグラムに示すよう
に、データ要素が記録され、要求側ユーザが登録される
(図18および図19)。
れているとき、あるいは初めて初期設定されているとき
など、大量の新規データを作成中のとき、細分性ロッキ
ングは必要なく、データ・マネージャは、データが存在
する可能性がないことを認識できる。データ・マネージ
ャは、このような状況をサポートして、データベース全
体へのアクセスを逐次化するロックを獲得できる。しか
し、データセットが拡張または作成された後は、それを
共用することが好ましいことがある。したがって、その
データをSESキャッシュに登録させ常駐させることが
好ましい。書込み及び登録(WAR)コマンドは、これ
らの環境をサポートする。WARコマンドを実行する
と、WARプロセス・フロー・ダイアグラムに示すよう
に、データ要素が記録され、要求側ユーザが登録される
(図18および図19)。
【0421】レコード・ロッキングを伴うバッファの書
込み:レコード・レベル・ロッキングの制御の流れを図
27に示す。レコード・ロッキングかバッファ・ロッキ
ングかの選択が、データを管理するプログラミングによ
って行われる。ロック処理およびロック解除処理で、デ
ータ・バッファ内の単一のレコードの逐次化が行われ
る。データ・バッファに多数のレコードを入れることが
でき、これらのレコードを維持するためのプロトコル
は、米国特許出願第812677号に記載されている。
込み:レコード・レベル・ロッキングの制御の流れを図
27に示す。レコード・ロッキングかバッファ・ロッキ
ングかの選択が、データを管理するプログラミングによ
って行われる。ロック処理およびロック解除処理で、デ
ータ・バッファ内の単一のレコードの逐次化が行われ
る。データ・バッファに多数のレコードを入れることが
でき、これらのレコードを維持するためのプロトコル
は、米国特許出願第812677号に記載されている。
【0422】図29に示す書込みプロセス中、ローカル
・キャッシュのバッファに変更済みデータ・レコードが
マージされる(2701)。バッファがDASDバージ
ョンから変更されたことを示すように変更ビットがセッ
トされた、SESキャッシュ内に変更済みデータを記録
するための登録時書込み(WWR)コマンドが発行され
る(2702)。データ・マネージャの別のインスタン
スが、データ・マネージャのこのインスタンスが更新中
のレコード以外の変更済みレコードで変更された状態で
データ要素を書き込んだので、WWRコマンドは失敗す
る可能性がある(2703のY経路)。データ要素が首
尾よく書き込まれる場合、WWRコマンドの一部として
データ要素の他のローカル・キャッシュ・コピーがすべ
て無効になる。要求側インスタンスが登録されていない
ためにWWRコマンドが失敗するときは、SESキャッ
シュからデータ要素が取り出され、要求側データ・マネ
ージャ・インスタンスが、読取り及び登録(RAR)コ
マンドを使用して再登録される(2704)。このRA
Rコマンドは、データ・マネージャの他のインスタンス
が記録した変更済みレコードを含むデータ要素を取り出
した。SESからデータが取り出されない(2705の
N経路)場合、要求側データ・マネージャ・インスタン
スがSESキャッシュに登録され、次にDASDから取
り出されたデータに進む(2706)。米国特許出願第
860806号に記載されているように、データがSE
SからDASDに移行された場合にこれが起こる可能性
がある。現データ・バッファ内容の取出しに続き、デー
タ・マージ機能(2701)が再び実行され、更新プロ
セスが繰り返される。
・キャッシュのバッファに変更済みデータ・レコードが
マージされる(2701)。バッファがDASDバージ
ョンから変更されたことを示すように変更ビットがセッ
トされた、SESキャッシュ内に変更済みデータを記録
するための登録時書込み(WWR)コマンドが発行され
る(2702)。データ・マネージャの別のインスタン
スが、データ・マネージャのこのインスタンスが更新中
のレコード以外の変更済みレコードで変更された状態で
データ要素を書き込んだので、WWRコマンドは失敗す
る可能性がある(2703のY経路)。データ要素が首
尾よく書き込まれる場合、WWRコマンドの一部として
データ要素の他のローカル・キャッシュ・コピーがすべ
て無効になる。要求側インスタンスが登録されていない
ためにWWRコマンドが失敗するときは、SESキャッ
シュからデータ要素が取り出され、要求側データ・マネ
ージャ・インスタンスが、読取り及び登録(RAR)コ
マンドを使用して再登録される(2704)。このRA
Rコマンドは、データ・マネージャの他のインスタンス
が記録した変更済みレコードを含むデータ要素を取り出
した。SESからデータが取り出されない(2705の
N経路)場合、要求側データ・マネージャ・インスタン
スがSESキャッシュに登録され、次にDASDから取
り出されたデータに進む(2706)。米国特許出願第
860806号に記載されているように、データがSE
SからDASDに移行された場合にこれが起こる可能性
がある。現データ・バッファ内容の取出しに続き、デー
タ・マージ機能(2701)が再び実行され、更新プロ
セスが繰り返される。
【0423】名前無効化:名前無効化(Invalid
ate Name)コマンド(図14)は一般に、もは
やアクセスされていないデータセットまたはデータベー
スに関連するディレクトリおよびデータ要素をSESキ
ャッシュからパージするために使用される。たとえば、
データベースの最後のユーザがそのデータベースへのア
クセスを停止するとき、データ・マネージャは、変更済
みデータ要素をすべてSESからDASDに移動でき
る。このプロセスは、米国特許出願第860806号に
より詳しく記載されている。変更済みデータ要素がすべ
てDASDに移行されたとき、SESには、データ要素
に関連しないディレクトリ項目と、未変更のデータ要素
に関連するディレクトリ項目が残る。これらのディレク
トリ項目およびデータ要素が使用中のSESキャッシュ
資源は、最終的には、SES記憶域管理アルゴリズムに
基づいて再使用される。しかし、これよりはるかに効率
的なプロトコルを使用して、SESキャッシュからこれ
らの項目を明示的にパージできる。名前無効化(IN)
コマンドは、キャッシュからパージされるデータベース
に関連するすべてのディレクトリ項目の識別を使用可能
にするマスクによって呼び出される。INコマンド処理
が完了すると、パージされたデータベースに関連するデ
ィレクトリおよびデータ資源はすべて、キャッシュから
除去され、引き続き活動プログラムによって参照される
他のデータベースによって再使用可能になる。
ate Name)コマンド(図14)は一般に、もは
やアクセスされていないデータセットまたはデータベー
スに関連するディレクトリおよびデータ要素をSESキ
ャッシュからパージするために使用される。たとえば、
データベースの最後のユーザがそのデータベースへのア
クセスを停止するとき、データ・マネージャは、変更済
みデータ要素をすべてSESからDASDに移動でき
る。このプロセスは、米国特許出願第860806号に
より詳しく記載されている。変更済みデータ要素がすべ
てDASDに移行されたとき、SESには、データ要素
に関連しないディレクトリ項目と、未変更のデータ要素
に関連するディレクトリ項目が残る。これらのディレク
トリ項目およびデータ要素が使用中のSESキャッシュ
資源は、最終的には、SES記憶域管理アルゴリズムに
基づいて再使用される。しかし、これよりはるかに効率
的なプロトコルを使用して、SESキャッシュからこれ
らの項目を明示的にパージできる。名前無効化(IN)
コマンドは、キャッシュからパージされるデータベース
に関連するすべてのディレクトリ項目の識別を使用可能
にするマスクによって呼び出される。INコマンド処理
が完了すると、パージされたデータベースに関連するデ
ィレクトリおよびデータ資源はすべて、キャッシュから
除去され、引き続き活動プログラムによって参照される
他のデータベースによって再使用可能になる。
【0424】データをキャッシュするための非ブロッキ
ング逐次化の使用法:以下の使用状況では、記憶階層内
で参照されるデータ要素がページであると想定する。そ
して、共用キャッシュにキャッシュされたページ(図1
の111)はソフトウェアが割り当てた名前で識別され
る。したがって、要求の対象であるページの名前を指定
するには、共用キャッシュ内での読取り要求または書込
み要求が必要である。このプロトコルを正しく実行する
うえで、データ要素がページである必要はない。
ング逐次化の使用法:以下の使用状況では、記憶階層内
で参照されるデータ要素がページであると想定する。そ
して、共用キャッシュにキャッシュされたページ(図1
の111)はソフトウェアが割り当てた名前で識別され
る。したがって、要求の対象であるページの名前を指定
するには、共用キャッシュ内での読取り要求または書込
み要求が必要である。このプロトコルを正しく実行する
うえで、データ要素がページである必要はない。
【0425】共用キャッシュにデータをキャッシュする
ための非ブロッキング逐次化プロトコルを、図31、図
32、図33、および図32に示す。図31では、ペー
ジが、図17に記述した読取り及び登録(RAR)コマ
ンドを使用して読み取られる。図32は、図18および
図19に記述した書込み及び登録(WAR)コマンドの
使用法を示す線図である。共用キャッシュにデータをキ
ャッシュするための非ブロッキング逐次化に関して、図
20に記述した登録時書込み(WWR)コマンドを図3
3に示す。図34では、プロトコルの流れを示す。
ための非ブロッキング逐次化プロトコルを、図31、図
32、図33、および図32に示す。図31では、ペー
ジが、図17に記述した読取り及び登録(RAR)コマ
ンドを使用して読み取られる。図32は、図18および
図19に記述した書込み及び登録(WAR)コマンドの
使用法を示す線図である。共用キャッシュにデータをキ
ャッシュするための非ブロッキング逐次化に関して、図
20に記述した登録時書込み(WWR)コマンドを図3
3に示す。図34では、プロトコルの流れを示す。
【0426】図31、図32、図33、および図34に
おいて、ローカル・キャッシュ・レジスタ内の有効ビッ
トの集合(図5、6の501A、501B、501C)
をシステム有効ビット・ベクトル(SVBV)と呼ぶ。
この例では、SVBVは、キャッシュに付加された1シ
ステム当たり1ビットから構成されているとみなすこと
ができる。
おいて、ローカル・キャッシュ・レジスタ内の有効ビッ
トの集合(図5、6の501A、501B、501C)
をシステム有効ビット・ベクトル(SVBV)と呼ぶ。
この例では、SVBVは、キャッシュに付加された1シ
ステム当たり1ビットから構成されているとみなすこと
ができる。
【0427】システム有効ビット・ベクトル(SVB
V) キャッシュに接続された1システム当たり1ビッ
ト。1の場合、識別されたシステム・メモリにキャッシ
ュされているページは有効である。0の場合、システム
のメモリにキャッシュされているページは有効でない。
V) キャッシュに接続された1システム当たり1ビッ
ト。1の場合、識別されたシステム・メモリにキャッシ
ュされているページは有効である。0の場合、システム
のメモリにキャッシュされているページは有効でない。
【0428】ローカル・キャッシュ・レジスタ内の有効
ビットの集合をシステム有効ビット・ベクトルとして記
述することは、以下のプロトコルを記述するための概念
的な単純化に過ぎない。好ましい実施例では、システム
有効ビット・ベクトル中の個々のビット項目がそれぞ
れ、ローカル・キャッシュ・レジスタの有効ビット・フ
ィールドと1対1で対応する。
ビットの集合をシステム有効ビット・ベクトルとして記
述することは、以下のプロトコルを記述するための概念
的な単純化に過ぎない。好ましい実施例では、システム
有効ビット・ベクトル中の個々のビット項目がそれぞ
れ、ローカル・キャッシュ・レジスタの有効ビット・フ
ィールドと1対1で対応する。
【0429】図31、図32、図33、および図34で
は、ローカル・キャッシュ識別子(LCID)をシステ
ム識別子(SI)と呼ぶ。SIの機能は、LCIDの機
能と同じである。以下のプロトコルでは、ローカル・キ
ャッシュ制御機構にSIが格納され、現在ディレクトリ
内にあるあらゆる項目と、後でCONNECTコマンド
処理の結果として作成されるあらゆる項目のフィールド
が、SVBV中に設けられる。
は、ローカル・キャッシュ識別子(LCID)をシステ
ム識別子(SI)と呼ぶ。SIの機能は、LCIDの機
能と同じである。以下のプロトコルでは、ローカル・キ
ャッシュ制御機構にSIが格納され、現在ディレクトリ
内にあるあらゆる項目と、後でCONNECTコマンド
処理の結果として作成されるあらゆる項目のフィールド
が、SVBV中に設けられる。
【0430】以下のプロトコルの説明では、CONNE
CTコマンドの機能は、図10に示すローカル・キャッ
シュ付加コマンド(ALC)によって実現される。RE
ADPAGEコマンドの機能は、図17に示す読取り及
び登録コマンド(RAR)によって実現される。WRI
TE PAGEコマンドの機能は、図18および図17
に示す書込み及び登録コマンド(WAR)によって実現
される。CONDITIONAL WRITEコマンド
(WWR)の機能は、図20に示す登録時書込みコマン
ドによって実現される。
CTコマンドの機能は、図10に示すローカル・キャッ
シュ付加コマンド(ALC)によって実現される。RE
ADPAGEコマンドの機能は、図17に示す読取り及
び登録コマンド(RAR)によって実現される。WRI
TE PAGEコマンドの機能は、図18および図17
に示す書込み及び登録コマンド(WAR)によって実現
される。CONDITIONAL WRITEコマンド
(WWR)の機能は、図20に示す登録時書込みコマン
ドによって実現される。
【0431】これらのコマンドは、図1のマルチシステ
ム・データ共用複合体内でページをキャッシュするため
の非ブロッキング逐次化をサポートし、同時に、あるシ
ステムが更新済みページをキャッシュしている間に、別
のシステムが読取り要求によるキャッシュ・ミスの後、
そのページのダウンレベル・バージョンをキャッシュし
ようと試みる可能性があるにもかかわらず、ページのデ
ータ保全性を維持する。本発明の実施に際して、所与の
ページを対象とするコマンドが、メモリ(図1の10
1)内の管理論理装置(図1の110)によって、同一
のページに対する他のコマンドと逐次化される。
ム・データ共用複合体内でページをキャッシュするため
の非ブロッキング逐次化をサポートし、同時に、あるシ
ステムが更新済みページをキャッシュしている間に、別
のシステムが読取り要求によるキャッシュ・ミスの後、
そのページのダウンレベル・バージョンをキャッシュし
ようと試みる可能性があるにもかかわらず、ページのデ
ータ保全性を維持する。本発明の実施に際して、所与の
ページを対象とするコマンドが、メモリ(図1の10
1)内の管理論理装置(図1の110)によって、同一
のページに対する他のコマンドと逐次化される。
【0432】このプロトコルでは、図1のメモリ・シス
テム101は以下のコマンドをサポートする。
テム101は以下のコマンドをサポートする。
【0433】CONNECTコマンド。NV記憶装置1
01に接続された、図1のマルチシステム・データ共用
複合体内のデータベース・システムのインスタンスなど
のソフトウェア・システムによって実行される。管理論
理装置110が、CONNECTコマンドに応答して、
ローカル・キャッシュ制御機構105に接続システムの
識別子を入れ、現在ディレクトリ102中にあるあらゆ
る項目と後で作成されるあらゆる項目のSVビット・ベ
クトル中に、付加システム用のフィールドを設ける。
01に接続された、図1のマルチシステム・データ共用
複合体内のデータベース・システムのインスタンスなど
のソフトウェア・システムによって実行される。管理論
理装置110が、CONNECTコマンドに応答して、
ローカル・キャッシュ制御機構105に接続システムの
識別子を入れ、現在ディレクトリ102中にあるあらゆ
る項目と後で作成されるあらゆる項目のSVビット・ベ
クトル中に、付加システム用のフィールドを設ける。
【0434】READ PAGE(S,P,Buffe
r Addres)。Sはコマンドを発行するシステム
を識別し、Pは要求されたページを識別し、Buffe
rAddressは、ページをが配布されるシステムの
バッファのアドレスを示す。
r Addres)。Sはコマンドを発行するシステム
を識別し、Pは要求されたページを識別し、Buffe
rAddressは、ページをが配布されるシステムの
バッファのアドレスを示す。
【0435】WRITE PAGE(S,P,C=1、
Buffer Address)。このコマンドは、
「無条件」WRITEとも呼ばれる。WRITE PA
GEコマンドが発行されるとき、コマンドと共に入力さ
れるパラメータには、識別されるページのCBフィール
ドに対応するCパラメータが含まれる。ページの更新
は、変更ビットを1にセットすることによって示され
る。
Buffer Address)。このコマンドは、
「無条件」WRITEとも呼ばれる。WRITE PA
GEコマンドが発行されるとき、コマンドと共に入力さ
れるパラメータには、識別されるページのCBフィール
ドに対応するCパラメータが含まれる。ページの更新
は、変更ビットを1にセットすることによって示され
る。
【0436】CONDITIONAL WRITE
(S,P,C=0,Buffer Address)。
CONDITIONAL WRITEコマンドは、条件
付き書込みコンピュータ・システムが2次記憶域から獲
得した、変更されていないページをNV記憶装置に「キ
ャストイン」または入力するときに使用される。
(S,P,C=0,Buffer Address)。
CONDITIONAL WRITEコマンドは、条件
付き書込みコンピュータ・システムが2次記憶域から獲
得した、変更されていないページをNV記憶装置に「キ
ャストイン」または入力するときに使用される。
【0437】ページ読取り:図31に、READ PA
GEコマンドに応答する管理論理処理の動作の流れを示
す。最初、管理論理装置110は、WAIT状態(29
01)であり、その状態から出て、UNCONDITI
ONAL WRITEプロセス、CONDITIONA
L WRITEプロセス、またはREAD PAGEプ
ロセスを含む、少なくとも3つのプロセスのいずれかに
移ることができる。図31では、上記の形式を有するR
EADコマンドを受け取ったと仮定している。これは、
READプロセス・ステップ2902によって示され
る。発行側コンピュータ・システムは、READ PA
GEコマンドを提供する際、それ自体(SI、つまりi
番目のシステム)、要求されたページ(P)、および読
み取られたページが配布される先のコンピュータ・シス
テム内のバッファ・アドレスを識別する。管理論理装置
110による読取りプロセスには3つのケースが有り得
る。
GEコマンドに応答する管理論理処理の動作の流れを示
す。最初、管理論理装置110は、WAIT状態(29
01)であり、その状態から出て、UNCONDITI
ONAL WRITEプロセス、CONDITIONA
L WRITEプロセス、またはREAD PAGEプ
ロセスを含む、少なくとも3つのプロセスのいずれかに
移ることができる。図31では、上記の形式を有するR
EADコマンドを受け取ったと仮定している。これは、
READプロセス・ステップ2902によって示され
る。発行側コンピュータ・システムは、READ PA
GEコマンドを提供する際、それ自体(SI、つまりi
番目のシステム)、要求されたページ(P)、および読
み取られたページが配布される先のコンピュータ・シス
テム内のバッファ・アドレスを識別する。管理論理装置
110による読取りプロセスには3つのケースが有り得
る。
【0438】第1のケースは、識別されたページPの項
目がディレクトリ102内に存在し、ページのDビット
が1にセットされていて、要求されたページが共用キャ
ッシュ103内にあることを示す場合に発生する。これ
らの条件は、それぞれ判断ステップ2903および29
04でテストされる。両方の判断でY経路をとるとする
と、読取りプロセスは、ステップ2905で、項目のS
Vビット・ベクトル中の、識別されたi番目のコンピュ
ータ・システムに該当するビットを1にセットし、ステ
ップ2906で、指定されたバッファ・アドレスにある
データ・ページを返し、ステップ2907で、キャッシ
ュ・ヒット標識を返す。
目がディレクトリ102内に存在し、ページのDビット
が1にセットされていて、要求されたページが共用キャ
ッシュ103内にあることを示す場合に発生する。これ
らの条件は、それぞれ判断ステップ2903および29
04でテストされる。両方の判断でY経路をとるとする
と、読取りプロセスは、ステップ2905で、項目のS
Vビット・ベクトル中の、識別されたi番目のコンピュ
ータ・システムに該当するビットを1にセットし、ステ
ップ2906で、指定されたバッファ・アドレスにある
データ・ページを返し、ステップ2907で、キャッシ
ュ・ヒット標識を返す。
【0439】このケースでは、すでに共用キャッシュ1
03内に存在するページに対して読取り要求が発行され
るときはかならず、要求側に無条件でページがキャッシ
ュ・ヒット標識と共にに返される。要求側のSビット
は、システムが所有するページPのコピーが最新のもの
であることを示す第1の状態(1)に条件付けられる。
03内に存在するページに対して読取り要求が発行され
るときはかならず、要求側に無条件でページがキャッシ
ュ・ヒット標識と共にに返される。要求側のSビット
は、システムが所有するページPのコピーが最新のもの
であることを示す第1の状態(1)に条件付けられる。
【0440】第2のケースでは、ディレクトリ102の
ページPに対して項目が存在しているが、ページはま
だ、共用キャッシュ103に入っていないものと仮定さ
れている。この場合、ページ読取りステップ2902に
続き、判断ステップ2903でY経路をとり、判断ステ
ップ2904でN経路をとる。次に、要求側システムの
Sビットが第1状態(つまり「1」)に条件付けられ、
キャッシュ・ミスが発行される。この場合、管理論理装
置110が以前のREAD PAGEコマンドを受け取
っており、ディレクトリ項目は作成されるが、ページは
まだDASDから取り出されていない。
ページPに対して項目が存在しているが、ページはま
だ、共用キャッシュ103に入っていないものと仮定さ
れている。この場合、ページ読取りステップ2902に
続き、判断ステップ2903でY経路をとり、判断ステ
ップ2904でN経路をとる。次に、要求側システムの
Sビットが第1状態(つまり「1」)に条件付けられ、
キャッシュ・ミスが発行される。この場合、管理論理装
置110が以前のREAD PAGEコマンドを受け取
っており、ディレクトリ項目は作成されるが、ページは
まだDASDから取り出されていない。
【0441】最後のケースでは、ページPのディレクト
リ項目は存在せず、管理論理装置110は、判断ステッ
プ2903でN経路をとり、ステップ2910、291
1、および2912を順次実行する。この場合、ステッ
プ2910で、管理論理装置は、(記憶域が利用可能で
あると仮定して)ページPのディレクトリ項目を作成
し、作成された項目のSVビット・ベクトル全体を最初
に第2の状態(好ましくは「0」)に条件付けする。次
に、Dビットが0にセットされ、CBが0にセットさ
れ、要求側システムのSビットが第1状態に条件付けら
れる。最後に、ステップ2909でキャッシュ・ミスが
発行され、管理論理装置は待機状態に入る。
リ項目は存在せず、管理論理装置110は、判断ステッ
プ2903でN経路をとり、ステップ2910、291
1、および2912を順次実行する。この場合、ステッ
プ2910で、管理論理装置は、(記憶域が利用可能で
あると仮定して)ページPのディレクトリ項目を作成
し、作成された項目のSVビット・ベクトル全体を最初
に第2の状態(好ましくは「0」)に条件付けする。次
に、Dビットが0にセットされ、CBが0にセットさ
れ、要求側システムのSビットが第1状態に条件付けら
れる。最後に、ステップ2909でキャッシュ・ミスが
発行され、管理論理装置は待機状態に入る。
【0442】この最後のケースでは、システムSIは、
ページPに対する最初のREAD要求を格納している。
後続のREAD要求は、共用キャッシュ103にページ
が入られる前には、プロシージャ・ステップ2902、
2903、2904、2908、および2909に従
う。要求されたページがDASDから共用キャッシュ1
03に移動した後は、READ要求はステップ290
2、2903、2904、2905、2906、および
2907に従う。
ページPに対する最初のREAD要求を格納している。
後続のREAD要求は、共用キャッシュ103にページ
が入られる前には、プロシージャ・ステップ2902、
2903、2904、2908、および2909に従
う。要求されたページがDASDから共用キャッシュ1
03に移動した後は、READ要求はステップ290
2、2903、2904、2905、2906、および
2907に従う。
【0443】ページ書込み:共用キャッシュ103に更
新済みページを書き込む際に管理論理装置で使用される
プロセスを図32に示す。ページは、READ PAG
Eコマンドによって共用キャッシュから取り出された後
に更新される可能性がある。また、ページは、DASD
から取り出した後に更新される可能性もあるが、共用キ
ャッシュにページが入れられないかぎり更新されること
はない。システムSIが、ページPを取り出して更新し
ており、現在、共用キャッシュ103にそのページを書
き込む必要があるものと仮定する。システムSIは、更
新済みページPを書き込むため、CB=1のWRITE
コマンドを発行する。このWRITEコマンドに応答し
て管理論理装置が行う処理を図32に示す。
新済みページを書き込む際に管理論理装置で使用される
プロセスを図32に示す。ページは、READ PAG
Eコマンドによって共用キャッシュから取り出された後
に更新される可能性がある。また、ページは、DASD
から取り出した後に更新される可能性もあるが、共用キ
ャッシュにページが入れられないかぎり更新されること
はない。システムSIが、ページPを取り出して更新し
ており、現在、共用キャッシュ103にそのページを書
き込む必要があるものと仮定する。システムSIは、更
新済みページPを書き込むため、CB=1のWRITE
コマンドを発行する。このWRITEコマンドに応答し
て管理論理装置が行う処理を図32に示す。
【0444】図32では、次の3つのケースが可能であ
る。第1は、ディレクトリ102内にページPの項目が
あり、D=1である(共用キャッシュ103にページが
ある)。第2は、ページPの項目は存在するが、ページ
はどのような形式でも共用キャッシュ103に入ってい
ない。第3は、ディレクトリ内にページPに対する項目
が存在しない。
る。第1は、ディレクトリ102内にページPの項目が
あり、D=1である(共用キャッシュ103にページが
ある)。第2は、ページPの項目は存在するが、ページ
はどのような形式でも共用キャッシュ103に入ってい
ない。第3は、ディレクトリ内にページPに対する項目
が存在しない。
【0445】第1のケースでは、管理論理装置110に
よる書込みプロセス(図32)は、シーケンス300
2、3003、3004を経た後、ステップ3005、
3006、3007、3008を実行する。ステップ3
005で、ページPのディレクトリ項目のCBフィール
ドが1にセットされる。次に、ステップ3006で、ペ
ージPの既存のバージョンが、WRITEコマンドで提
供されたバッファ・アドレスにおけるデータで重ね書き
される。次に、ページのデータ項目に対するSVBIT
VECTOR中のSビットが、WRITEコマンドを
発行したシステムのSビットを除き、すべて0にセット
される。管理論理装置は、ステップ3007から出る
と、ステップ3008で、要求側システムにコマンド受
諾標識を返した後、待機状態3001に入る。
よる書込みプロセス(図32)は、シーケンス300
2、3003、3004を経た後、ステップ3005、
3006、3007、3008を実行する。ステップ3
005で、ページPのディレクトリ項目のCBフィール
ドが1にセットされる。次に、ステップ3006で、ペ
ージPの既存のバージョンが、WRITEコマンドで提
供されたバッファ・アドレスにおけるデータで重ね書き
される。次に、ページのデータ項目に対するSVBIT
VECTOR中のSビットが、WRITEコマンドを
発行したシステムのSビットを除き、すべて0にセット
される。管理論理装置は、ステップ3007から出る
と、ステップ3008で、要求側システムにコマンド受
諾標識を返した後、待機状態3001に入る。
【0446】第2のケースでは、ページPのディレクト
リ項目はあるが、ページが共用キャッシュになく、管理
論理装置110は、待ち状態3001からステップ30
02および3003を通過し、判断ステップ3004で
N経路をとって、ステップ3009、3010、301
1、3007、3008を実行する。ステップ3009
では、要求されたページのディレクトリ項目中の変更ビ
ットが1にセットされる。ステップ3010では、共用
キャッシュ103内でページPに空間が割り当てられ、
データが、システムSIのバッファ・アドレスから割り
振られた空間へ移動され、ページのキャッシュ・アドレ
スが、ページのディレクトリ項目のページ・アドレス・
フィールドに格納される。次に、ステップ3011で、
ページPのディレクトリ項目中でデータ・ビットが1に
セットされ、ステップ3007が実行された後、管理論
理装置は、コマンド受諾標識を返し、待機状態3001
に入る。
リ項目はあるが、ページが共用キャッシュになく、管理
論理装置110は、待ち状態3001からステップ30
02および3003を通過し、判断ステップ3004で
N経路をとって、ステップ3009、3010、301
1、3007、3008を実行する。ステップ3009
では、要求されたページのディレクトリ項目中の変更ビ
ットが1にセットされる。ステップ3010では、共用
キャッシュ103内でページPに空間が割り当てられ、
データが、システムSIのバッファ・アドレスから割り
振られた空間へ移動され、ページのキャッシュ・アドレ
スが、ページのディレクトリ項目のページ・アドレス・
フィールドに格納される。次に、ステップ3011で、
ページPのディレクトリ項目中でデータ・ビットが1に
セットされ、ステップ3007が実行された後、管理論
理装置は、コマンド受諾標識を返し、待機状態3001
に入る。
【0447】最後のケースでは、ページPのディレクト
リ項目がなく、判断ステップ3003でN経路をとり、
ステップ3012ないし3016および3008が実行
された後、管理論理装置は待機状態3001に入る。ス
テップ3012では、ページPに対するディレクトリ項
目が作成され、ステップ3013では、ページの項目に
対して共用キャッシュ中で空間が割り振られる。ステッ
プ3014および3015では、ディレクトリ項目中の
関連ビットが条件付けられる。ステップ3014では、
ページのSVビット・ベクトル中のすべてのビットが0
に初期設定され、Dビットが1にセットされる。次に、
ステップ3015で、要求側システムのSビット(ビッ
トSI)が1に条件付けられ、変更ビットも1にセット
されて、ページが変更されたことを示し、その項目にペ
ージのアドレスが格納される。ステップ3016では、
ディレクトリにページPのディレクトリ項目が入れら
れ、キャッシュの割り振られた位置にページが格納され
る。管理論理装置は次に、受諾標識を返し、待機状態に
入る。
リ項目がなく、判断ステップ3003でN経路をとり、
ステップ3012ないし3016および3008が実行
された後、管理論理装置は待機状態3001に入る。ス
テップ3012では、ページPに対するディレクトリ項
目が作成され、ステップ3013では、ページの項目に
対して共用キャッシュ中で空間が割り振られる。ステッ
プ3014および3015では、ディレクトリ項目中の
関連ビットが条件付けられる。ステップ3014では、
ページのSVビット・ベクトル中のすべてのビットが0
に初期設定され、Dビットが1にセットされる。次に、
ステップ3015で、要求側システムのSビット(ビッ
トSI)が1に条件付けられ、変更ビットも1にセット
されて、ページが変更されたことを示し、その項目にペ
ージのアドレスが格納される。ステップ3016では、
ディレクトリにページPのディレクトリ項目が入れら
れ、キャッシュの割り振られた位置にページが格納され
る。管理論理装置は次に、受諾標識を返し、待機状態に
入る。
【0448】図32の書込みプロセスは、要求がぜった
い拒絶されないという点で無条件である。さらに、いず
れかのWRITEケースが実行されると、影響を受ける
ページの変更ビットがセットされ、影響を受けるページ
のSVビット・ベクトルのすべてのビットが書込み側コ
ンピュータ・システムのビットを除き、ゼロになる。C
ONDITIONAL WRITEについての以下の説
明から分かるように、WRITE中に非書込み側コンピ
ュータ・システムのSビットをゼロにすると、共用キャ
ッシュにダウン・レベル・ページが書き込まれないよう
になる。
い拒絶されないという点で無条件である。さらに、いず
れかのWRITEケースが実行されると、影響を受ける
ページの変更ビットがセットされ、影響を受けるページ
のSVビット・ベクトルのすべてのビットが書込み側コ
ンピュータ・システムのビットを除き、ゼロになる。C
ONDITIONAL WRITEについての以下の説
明から分かるように、WRITE中に非書込み側コンピ
ュータ・システムのSビットをゼロにすると、共用キャ
ッシュにダウン・レベル・ページが書き込まれないよう
になる。
【0449】条件付き書込み:管理論理装置110で実
施される条件付き書込み処理を理解するために、図33
を参照する。この処理では、システムSIがNV記憶装
置からキャッシュ・ミスを受け取った後、2次記憶域か
らページを取り出したが変更せず、共用キャッシュ10
3にそれをキャッシュしようと準備中であるものと仮定
されている。システムSIは、論理管理装置110に送
られるパラメータ・セット中で、変更ビットを0にセッ
トして、コンピュータ・システムが所有するページが、
そのページの2次記憶域バージョンと同等であることを
示す。この場合、3つのケースがある。
施される条件付き書込み処理を理解するために、図33
を参照する。この処理では、システムSIがNV記憶装
置からキャッシュ・ミスを受け取った後、2次記憶域か
らページを取り出したが変更せず、共用キャッシュ10
3にそれをキャッシュしようと準備中であるものと仮定
されている。システムSIは、論理管理装置110に送
られるパラメータ・セット中で、変更ビットを0にセッ
トして、コンピュータ・システムが所有するページが、
そのページの2次記憶域バージョンと同等であることを
示す。この場合、3つのケースがある。
【0450】第1のケースでは、システムSIは、CB
=0のCONDITIONAL WRITEコマンドを
発行する。ステップ3102でコマンドが応答され、ペ
ージPに対応する項目があるかどうかディレクトリ10
2がチェックされる。ディレクトリ内にページがあると
すると、ステップ3103でY経路をとり、ステップ3
104で、項目のデータ・ビットがチェックされて、キ
ャッシュにページがあるかどうかが判定される。判断ス
テップ3104でN経路をとるとすると、ページはキャ
ッシュに入っている。この時点で、ページ項目のSVビ
ット・ベクトル中でシステムSIのSビットがチェック
されて、別のシステムがそのページを変更したかどうか
が判定される。ビットSIが1にセットされている場
合、ページは変更されておらず、判断ステップ3105
でY経路をとる。ここで、管理論理装置110は、キャ
ッシュ内にページがあり、SIから提供されるページが
キャッシュ内のページと同等であり、ページの重ね書き
が必要でないと判定する。したがって、管理論理装置1
10は、ステップ3106で、適切なコードを返して、
CONDITIONAL WRITEの受諾を示す。た
だし、システムSIのメモリから共用キャッシュ103
にデータは転送されないことに留意されたい。管理論理
装置は次に、待機状態に入る。
=0のCONDITIONAL WRITEコマンドを
発行する。ステップ3102でコマンドが応答され、ペ
ージPに対応する項目があるかどうかディレクトリ10
2がチェックされる。ディレクトリ内にページがあると
すると、ステップ3103でY経路をとり、ステップ3
104で、項目のデータ・ビットがチェックされて、キ
ャッシュにページがあるかどうかが判定される。判断ス
テップ3104でN経路をとるとすると、ページはキャ
ッシュに入っている。この時点で、ページ項目のSVビ
ット・ベクトル中でシステムSIのSビットがチェック
されて、別のシステムがそのページを変更したかどうか
が判定される。ビットSIが1にセットされている場
合、ページは変更されておらず、判断ステップ3105
でY経路をとる。ここで、管理論理装置110は、キャ
ッシュ内にページがあり、SIから提供されるページが
キャッシュ内のページと同等であり、ページの重ね書き
が必要でないと判定する。したがって、管理論理装置1
10は、ステップ3106で、適切なコードを返して、
CONDITIONAL WRITEの受諾を示す。た
だし、システムSIのメモリから共用キャッシュ103
にデータは転送されないことに留意されたい。管理論理
装置は次に、待機状態に入る。
【0451】第2のケースでは、ページPに対するディ
レクトリ項目が存在しており、ステップ3103でY経
路をとる。しかし、ステップ3104で、管理論理装置
110が、キャッシュにページがないと判定して判断ス
テップ3104でN経路をとった後、判断ステップ31
07に進むものとする。判断ステップ3107で、ペー
ジPに対するSVビット・ベクトルのビットSIがチェ
ックされる。ビットが1にセットされている場合、シス
テムSIは有効なページを所有している。この時点で、
判断ステップ3107でY経路をとる。共用キャッシュ
中で空間が割り振られ、ページ・データがシステムSI
のバッファ・アドレスから、割り振られた空間に移動さ
れる。ステップ3109で、Dビットが1にセットされ
る。ステップ3110で、ディレクトリ項目中でページ
・アドレスが設定され、ディレクトリに項目が格納され
る。最後に、管理論理装置がシステムSIにCODIT
IONAL WRITEの受諾標識を返し、待機状態に
入る。
レクトリ項目が存在しており、ステップ3103でY経
路をとる。しかし、ステップ3104で、管理論理装置
110が、キャッシュにページがないと判定して判断ス
テップ3104でN経路をとった後、判断ステップ31
07に進むものとする。判断ステップ3107で、ペー
ジPに対するSVビット・ベクトルのビットSIがチェ
ックされる。ビットが1にセットされている場合、シス
テムSIは有効なページを所有している。この時点で、
判断ステップ3107でY経路をとる。共用キャッシュ
中で空間が割り振られ、ページ・データがシステムSI
のバッファ・アドレスから、割り振られた空間に移動さ
れる。ステップ3109で、Dビットが1にセットされ
る。ステップ3110で、ディレクトリ項目中でページ
・アドレスが設定され、ディレクトリに項目が格納され
る。最後に、管理論理装置がシステムSIにCODIT
IONAL WRITEの受諾標識を返し、待機状態に
入る。
【0452】このケースでは、3107での判断の結果
が否定であると仮定する。システムSIが有効なページ
を所有していないため、条件付き書込み処理はステップ
3111を経て終了し、管理論理装置110は、システ
ムSIにCONDITIONAL WRITEコマンド
の拒絶標識を返した後、待機状態3101に入る。
が否定であると仮定する。システムSIが有効なページ
を所有していないため、条件付き書込み処理はステップ
3111を経て終了し、管理論理装置110は、システ
ムSIにCONDITIONAL WRITEコマンド
の拒絶標識を返した後、待機状態3101に入る。
【0453】最後に、管理論理装置が、受け取ったCO
NDITIONAL WRITEコマンドに応答して、
ディレクトリ102中にページPに対する項目が作成さ
れていないと判定すると、判断ステップ3103でN経
路をとり、コマンド処理が終了し、ステップ3111で
コマンドが拒絶された後、管理論理装置は待機状態31
01に入る。
NDITIONAL WRITEコマンドに応答して、
ディレクトリ102中にページPに対する項目が作成さ
れていないと判定すると、判断ステップ3103でN経
路をとり、コマンド処理が終了し、ステップ3111で
コマンドが拒絶された後、管理論理装置は待機状態31
01に入る。
【0454】データをキャッシュするための非ブロッキ
ング逐次化の流れ:図32を参照し、本発明の動作の例
について説明する。上述のコマンドおよび処理を想定す
ると、この例は、ページに対するコマンドが逐次的に処
理される、NV記憶装置での非ブロッキング逐次化によ
り、複数のシステムがページを読み取り更新することが
できるとき、ページのダウンレベル・バージョンによる
同一ページのより新しいコピーのオーバーレイが本発明
によって防止されることを示している。非ブロッキング
逐次化には、ブロッキング逐次化に比べて顕著な利点が
ある。後者では、要求を待ち行列に入れ、再開する必要
があり、複雑な回復機構も必要だからである。
ング逐次化の流れ:図32を参照し、本発明の動作の例
について説明する。上述のコマンドおよび処理を想定す
ると、この例は、ページに対するコマンドが逐次的に処
理される、NV記憶装置での非ブロッキング逐次化によ
り、複数のシステムがページを読み取り更新することが
できるとき、ページのダウンレベル・バージョンによる
同一ページのより新しいコピーのオーバーレイが本発明
によって防止されることを示している。非ブロッキング
逐次化には、ブロッキング逐次化に比べて顕著な利点が
ある。後者では、要求を待ち行列に入れ、再開する必要
があり、複雑な回復機構も必要だからである。
【0455】この例では、S1およびS2という2つの
システムがあり、データ共用に関係しているものと仮定
する。この例における事象のシーケンスを例示するに当
たり、ページPに対する代表的なディレクトリ項目32
01を使用する。また、時間の経過は「時間」というマ
ークの付いた下向きの矢印で表されるものとする。
システムがあり、データ共用に関係しているものと仮定
する。この例における事象のシーケンスを例示するに当
たり、ページPに対する代表的なディレクトリ項目32
01を使用する。また、時間の経過は「時間」というマ
ークの付いた下向きの矢印で表されるものとする。
【0456】まず、処理ブロック3202で、システム
S1はページPに対するREADPAGEコマンドを発
行するものと仮定する。さらに、NV記憶装置にはPの
ディレクトリ項目がないものとする。この場合、管理論
理装置は、処理ブロック3203でREAD処理のケー
ス3を実行し、Pのディレクトリ項目3201を作成
し、ページ名フィールドに記入することによって項目を
初期設定し、データ・ビット・フィールドを0にセット
し、ページ・アドレス・フィールドを0にセットし、変
更ビット・フィールドを0にセットし、S1=1のS1
フィールドおよびS2=0のS2フィールドを付加す
る。ケース3の読取り処理の最後に、処理ブロック32
04で、NV記憶装置はシステムSIにキャッシュ・ミ
ス標識を発行する。この場合、S1は、処理ブロック3
205で2次記憶域からページPを読み取るプロセスを
開始する。
S1はページPに対するREADPAGEコマンドを発
行するものと仮定する。さらに、NV記憶装置にはPの
ディレクトリ項目がないものとする。この場合、管理論
理装置は、処理ブロック3203でREAD処理のケー
ス3を実行し、Pのディレクトリ項目3201を作成
し、ページ名フィールドに記入することによって項目を
初期設定し、データ・ビット・フィールドを0にセット
し、ページ・アドレス・フィールドを0にセットし、変
更ビット・フィールドを0にセットし、S1=1のS1
フィールドおよびS2=0のS2フィールドを付加す
る。ケース3の読取り処理の最後に、処理ブロック32
04で、NV記憶装置はシステムSIにキャッシュ・ミ
ス標識を発行する。この場合、S1は、処理ブロック3
205で2次記憶域からページPを読み取るプロセスを
開始する。
【0457】次に、S2は、処理ブロック3206で、
ページPに対するREAD PAGEコマンドを発行す
るものと仮定する。この場合、管理論理装置は、処理ブ
ロック3207で読取り処理のケース2を実行し、S2
=1とセットし、処理ブロック3208でキャッシュ・
ミスを返す。この時点で、システムS2は、処理ブロッ
ク3209で2次記憶域からページPを読み取る処理を
開始する。
ページPに対するREAD PAGEコマンドを発行す
るものと仮定する。この場合、管理論理装置は、処理ブ
ロック3207で読取り処理のケース2を実行し、S2
=1とセットし、処理ブロック3208でキャッシュ・
ミスを返す。この時点で、システムS2は、処理ブロッ
ク3209で2次記憶域からページPを読み取る処理を
開始する。
【0458】ここで、システムS2が、最初にページP
のDASDバージョンを取り出すものとする。システム
S2は、このバージョンを獲得した後、処理ブロック3
210で、NV記憶装置に、CB=0のCONDITI
ONAL WRITEを発行する。ページP用のページ
項目はあるが、キャッシュ内にページのコピーがなく、
SVビット・ベクトル・ビットS2=1の場合、処理ブ
ロック3211で管理論理装置110は、CONDIT
IONAL WRITEコマンド処理ステップ310
2、3103、3104、3107、3108、310
9、3110を実行し、共用キャッシュ103にページ
を入れ、Dビットを1にセットし、ディレクトリ項目に
ページのキャッシュ・アドレスを入れた後、処理ブロッ
ク3212でCONDITIONAL WRITEの受
諾標識を発行する。
のDASDバージョンを取り出すものとする。システム
S2は、このバージョンを獲得した後、処理ブロック3
210で、NV記憶装置に、CB=0のCONDITI
ONAL WRITEを発行する。ページP用のページ
項目はあるが、キャッシュ内にページのコピーがなく、
SVビット・ベクトル・ビットS2=1の場合、処理ブ
ロック3211で管理論理装置110は、CONDIT
IONAL WRITEコマンド処理ステップ310
2、3103、3104、3107、3108、310
9、3110を実行し、共用キャッシュ103にページ
を入れ、Dビットを1にセットし、ディレクトリ項目に
ページのキャッシュ・アドレスを入れた後、処理ブロッ
ク3212でCONDITIONAL WRITEの受
諾標識を発行する。
【0459】次に、システムS1がページPをDASD
から読み取る前にシステムS2がそれを更新し、処理ブ
ロック3213でCB=1のWRITEコマンドを発行
するものと仮定する。これに対応して、管理論理装置1
10が、処理ブロック3214で、WRITE処理のケ
ース1を実行し、この結果、SV BIT VECTO
R中のビットS1が0に変更されて、システムS1が所
有するページPのコピーがダウンレベルであることを示
す。
から読み取る前にシステムS2がそれを更新し、処理ブ
ロック3213でCB=1のWRITEコマンドを発行
するものと仮定する。これに対応して、管理論理装置1
10が、処理ブロック3214で、WRITE処理のケ
ース1を実行し、この結果、SV BIT VECTO
R中のビットS1が0に変更されて、システムS1が所
有するページPのコピーがダウンレベルであることを示
す。
【0460】最後に、処理ブロック3205でシステム
S1が開始したページPに対するディスク読取り処理が
完了するものと仮定する。すると、システムS1は、処
理ブロック3215で、CONDITIONAL WR
ITEコマンドによってNV記憶装置にページPのダウ
ンレベル・バージョンを書き込もうと試みる。管理論理
装置110は、CONDITIONAL WRITE処
理のステップ3102ないし3105を通過し、判断ス
テップ3105でN経路をとり、処理ステップ3216
でCONDITIONAL WRITEを拒絶する。C
ONDITIONAL WRITEが拒絶されると、シ
ステムS1は、別のREAD PAGEコマンド処理ス
テップ3217でNV記憶装置からページPを取り出す
ことができる。
S1が開始したページPに対するディスク読取り処理が
完了するものと仮定する。すると、システムS1は、処
理ブロック3215で、CONDITIONAL WR
ITEコマンドによってNV記憶装置にページPのダウ
ンレベル・バージョンを書き込もうと試みる。管理論理
装置110は、CONDITIONAL WRITE処
理のステップ3102ないし3105を通過し、判断ス
テップ3105でN経路をとり、処理ステップ3216
でCONDITIONAL WRITEを拒絶する。C
ONDITIONAL WRITEが拒絶されると、シ
ステムS1は、別のREAD PAGEコマンド処理ス
テップ3217でNV記憶装置からページPを取り出す
ことができる。
【0461】第1レベル記憶域から取り出したページを
共用NV記憶装置に移動するための非ブロッキング逐次
化プロトコルは、うまく機能する。なぜなら、最初のR
EAD PAGEコマンドが発行された時点で、たとえ
そのコマンドの結果、ディレクトリ項目またはデータが
ないためにキャッシュ・ミスが発生する場合でも、NV
記憶装置が(SVビット・ベクトル中の)ページのキャ
ッシングの追跡を開始するからである。別のシステムが
無条件WRITEコマンドを発行すると、ページP用の
変更ビットがセットされ、ページのSVビット・ベクト
ル中の、書込み側システム以外の他のすべてのシステム
のSビットがリセットされる。その後のCONDITI
ONAL WRITEコマンドの処理は、a)SVビッ
ト・ベクトル中に書込み側システムのSビット、または
b)ページ用のディレクトリ項目の不在に基づいて行わ
れる。いずれの場合も、NV記憶装置は、CONDIT
IONAL WRITEコマンドを拒絶する。
共用NV記憶装置に移動するための非ブロッキング逐次
化プロトコルは、うまく機能する。なぜなら、最初のR
EAD PAGEコマンドが発行された時点で、たとえ
そのコマンドの結果、ディレクトリ項目またはデータが
ないためにキャッシュ・ミスが発生する場合でも、NV
記憶装置が(SVビット・ベクトル中の)ページのキャ
ッシングの追跡を開始するからである。別のシステムが
無条件WRITEコマンドを発行すると、ページP用の
変更ビットがセットされ、ページのSVビット・ベクト
ル中の、書込み側システム以外の他のすべてのシステム
のSビットがリセットされる。その後のCONDITI
ONAL WRITEコマンドの処理は、a)SVビッ
ト・ベクトル中に書込み側システムのSビット、または
b)ページ用のディレクトリ項目の不在に基づいて行わ
れる。いずれの場合も、NV記憶装置は、CONDIT
IONAL WRITEコマンドを拒絶する。
【0462】ケース(a)でCONDITIONAL
WRITEコマンドを拒絶しなければならない理由は、
他のシステムがページを更新することになるか、あるい
はNV記憶装置が項目をスチールした後に再作成するこ
とになるからである。後者の場合は、ページが更新さ
れ、キャストアウトされた後再入力されたと控えめに仮
定する。
WRITEコマンドを拒絶しなければならない理由は、
他のシステムがページを更新することになるか、あるい
はNV記憶装置が項目をスチールした後に再作成するこ
とになるからである。後者の場合は、ページが更新さ
れ、キャストアウトされた後再入力されたと控えめに仮
定する。
【0463】ケース(b)でCONDITIONAL
WRITEコマンドを拒絶しなければならない理由は、
次の状況によって説明される。システムS1が、ページ
Pに対するREAD PAGEコマンドを発行し、キャ
ッシュ・ミスを受け取る。システムS1は次に、2次記
憶域からページを読み取る。その間に、システムS2は
ページPに対するREAD PAGEコマンドを発行
し、キャッシュ・ミスを受け取り、システムS1より前
に2次記憶域からページPを取り出す。次に、システム
S2が、CONDITIONAL WRITEコマンド
を発行してページPを入力した後、ページPを更新しC
B=1のWRITEコマンドを発行し、システムS1の
Sビットに無効のマークを付ける(これは、図32に示
す処理である)。続いて、システムS2が、NV記憶装
置からページPを除去(キャストアウト)し、それを2
次記憶域に書き込む。ページPに対するディレクトリ項
目および共用キャッシュ割振りがスチール可能になり、
NV記憶装置によってスチールされる。次に、システム
S1のCONDITIONAL WRITEコマンドが
受諾される場合、NV記憶装置にページPのダウンレベ
ル・コピーがキャッシュされる。したがって、ページP
用のディレクトリ項目が存在しない場合、CONDIT
IONAL WRITEコマンドを拒絶しなければなら
ない。
WRITEコマンドを拒絶しなければならない理由は、
次の状況によって説明される。システムS1が、ページ
Pに対するREAD PAGEコマンドを発行し、キャ
ッシュ・ミスを受け取る。システムS1は次に、2次記
憶域からページを読み取る。その間に、システムS2は
ページPに対するREAD PAGEコマンドを発行
し、キャッシュ・ミスを受け取り、システムS1より前
に2次記憶域からページPを取り出す。次に、システム
S2が、CONDITIONAL WRITEコマンド
を発行してページPを入力した後、ページPを更新しC
B=1のWRITEコマンドを発行し、システムS1の
Sビットに無効のマークを付ける(これは、図32に示
す処理である)。続いて、システムS2が、NV記憶装
置からページPを除去(キャストアウト)し、それを2
次記憶域に書き込む。ページPに対するディレクトリ項
目および共用キャッシュ割振りがスチール可能になり、
NV記憶装置によってスチールされる。次に、システム
S1のCONDITIONAL WRITEコマンドが
受諾される場合、NV記憶装置にページPのダウンレベ
ル・コピーがキャッシュされる。したがって、ページP
用のディレクトリ項目が存在しない場合、CONDIT
IONAL WRITEコマンドを拒絶しなければなら
ない。
【0464】CB=1の条件付き書込み:本発明者等は
また、コンピュータ・システムによって、変更ビットが
1にセットされたCONDITIONAL WRITE
コマンドを発行できることを考えている。この場合、コ
マンドは依然として、コンピュータ・システムが更新し
た、2次記憶域から取り出したページをNV記憶装置に
「キャストイン」するのに使用される。この場合、コン
ピュータ・システムは、管理論理装置110に更新済み
ページを提供し、CB=1を除き、上記のものと同じパ
ラメータ・セットを持つCONDITIONAL WR
ITEコマンドによってキャッシュに入力できるように
する。この条件では、ページの更新を逐次化するための
大域ロッキングを避けることができる。そのように大域
ロッキングを回避する流れを以下に示す。
また、コンピュータ・システムによって、変更ビットが
1にセットされたCONDITIONAL WRITE
コマンドを発行できることを考えている。この場合、コ
マンドは依然として、コンピュータ・システムが更新し
た、2次記憶域から取り出したページをNV記憶装置に
「キャストイン」するのに使用される。この場合、コン
ピュータ・システムは、管理論理装置110に更新済み
ページを提供し、CB=1を除き、上記のものと同じパ
ラメータ・セットを持つCONDITIONAL WR
ITEコマンドによってキャッシュに入力できるように
する。この条件では、ページの更新を逐次化するための
大域ロッキングを避けることができる。そのように大域
ロッキングを回避する流れを以下に示す。
【0465】1.システムS1が、ページPに対するR
EAD PAGEを発行する。
EAD PAGEを発行する。
【0466】2.システムS2が、ページPに対するR
EAD PAGEを発行する。
EAD PAGEを発行する。
【0467】3.システムS2が、ページPを取り出
し、バッファ内のページを更新した後、それを共用キャ
ッシュに条件付きで書き込む。
し、バッファ内のページを更新した後、それを共用キャ
ッシュに条件付きで書き込む。
【0468】4.システムS2が、ページPに対する、
CB=1のCONDITIONALWRITEを発行す
る。
CB=1のCONDITIONALWRITEを発行す
る。
【0469】5.システムS1がページPを取り出し、
バッファ内のページを更新する。
バッファ内のページを更新する。
【0470】6.システムS1が、ページPに対する、
CB=1のCONDITIONALWRITEを発行す
る。
CB=1のCONDITIONALWRITEを発行す
る。
【0471】7.ページP用のSVビット・ベクトル中
のビットS1に「無効」のマークが付いている(値が
0)ので、システムS1のCONDITIONAL W
RITEが拒絶される。
のビットS1に「無効」のマークが付いている(値が
0)ので、システムS1のCONDITIONAL W
RITEが拒絶される。
【0472】8.システムS1が、ページPに対するR
EAD PAGEを発行する。
EAD PAGEを発行する。
【0473】9.管理論理装置が、S1のREAD P
AGEコマンドに応答して、ページP用のSVビット・
ベクトル中のビットS1を「有効」(値が1)に設定す
る。
AGEコマンドに応答して、ページP用のSVビット・
ベクトル中のビットS1を「有効」(値が1)に設定す
る。
【0474】10.システムS1が、共用キャッシュま
たは2次記憶域からページPのより新しいバージョンを
取り出す。このバージョンには、システムS2による更
新が含まれる。
たは2次記憶域からページPのより新しいバージョンを
取り出す。このバージョンには、システムS2による更
新が含まれる。
【0475】11.システムS1が、バッファ内のペー
ジPを更新する。
ジPを更新する。
【0476】12.システムS1がCB=1のCOND
ITIONAL WRITEコマンドを発行する。
ITIONAL WRITEコマンドを発行する。
【0477】他のシステムがページPを更新していない
ものとすると、システムS1のCONDITIONAL
WRITEコマンドは受諾され、システムS1および
S2の更新を含むことになる。したがって、本発明のこ
の変形では、任意のコンピュータ・システムで、共用キ
ャッシュ103に条件付き書込みを行おうとして失敗し
た場合、システムがページの更新を試みるかぎり、CO
NDITIONALWRITEコマンドが発行されるよ
うになっている。このようにして、更新がCONDIT
IONAL WRITEコマンドで逐次化され、かつ大
域ロッキングが避けられる。
ものとすると、システムS1のCONDITIONAL
WRITEコマンドは受諾され、システムS1および
S2の更新を含むことになる。したがって、本発明のこ
の変形では、任意のコンピュータ・システムで、共用キ
ャッシュ103に条件付き書込みを行おうとして失敗し
た場合、システムがページの更新を試みるかぎり、CO
NDITIONALWRITEコマンドが発行されるよ
うになっている。このようにして、更新がCONDIT
IONAL WRITEコマンドで逐次化され、かつ大
域ロッキングが避けられる。
【0478】
【発明の効果】本発明により、DASDから取り出さ
れ、複数のコンピュータ・システムが共用するメモリ
(SES)にキャッシュされた、データの保全性を維持
することができる。
れ、複数のコンピュータ・システムが共用するメモリ
(SES)にキャッシュされた、データの保全性を維持
することができる。
【図1】複数のCPC装置およびSES装置を備えたシ
スプレックス・システムを表す図である。
スプレックス・システムを表す図である。
【図2】従来の技術に見られる単一CPC(コンピュー
タ・プロセッサ複合体)を表す図である。
タ・プロセッサ複合体)を表す図である。
【図3】関連するSESディレクトリのSESハッシュ
・アンカー・テーブルの概要をを表す図である。
・アンカー・テーブルの概要をを表す図である。
【図4】SESディレクトリにおける項目の好ましい形
式を表す図である。
式を表す図である。
【図5】SESローカル・キャッシュ・レジスタ(LC
R)における項目の好ましい形式を表す図である。
R)における項目の好ましい形式を表す図である。
【図6】SESローカル・キャッシュ・レジスタ(LC
R)における項目の好ましい形式を表す図である。
R)における項目の好ましい形式を表す図である。
【図7】シスプレックスにおける1つまたは複数のCP
CへのSES無効化コマンドの概要を表すフロー・ダイ
アグラムである。
CへのSES無効化コマンドの概要を表すフロー・ダイ
アグラムである。
【図8】キャッシュ構造体割振りコマンドを表すフロー
・ダイアグラムである。
・ダイアグラムである。
【図9】キャッシュ構造体割振りコマンドを表すフロー
・ダイアグラムである。
・ダイアグラムである。
【図10】ローカル・キャッシュ付加コマンドを表すフ
ロー・ダイアグラムである。
ロー・ダイアグラムである。
【図11】ローカル・キャッシュ切断コマンドを表すフ
ロー・ダイアグラムである。
ロー・ダイアグラムである。
【図12】キャッシュ構造体割振り解除コマンドを表す
フロー・ダイアグラムである。
フロー・ダイアグラムである。
【図13】補足コピー無効化コマンドを表すフロー・ダ
イアグラムである。
イアグラムである。
【図14】名前無効化コマンドを表すフロー・ダイアグ
ラムである。
ラムである。
【図15】ローカル・キャッシュ項目無効化を表すフロ
ー・ダイアグラムである。
ー・ダイアグラムである。
【図16】ローカル・キャッシュ項目無効化を表すフロ
ー・ダイアグラムである。
ー・ダイアグラムである。
【図17】読取り及び登録コマンドを表すフロー・ダイ
アグラムである。
アグラムである。
【図18】SES変更制御機構が未変更レコード状態を
示すときの書込み及び登録コマンドを表すフロー・ダイ
アグラムである。
示すときの書込み及び登録コマンドを表すフロー・ダイ
アグラムである。
【図19】SES変更制御機構が変更済みレコード状態
を示すときの書込み及び登録コマンドを表すフロー・ダ
イアグラムである。
を示すときの書込み及び登録コマンドを表すフロー・ダ
イアグラムである。
【図20】登録時書込みコマンドを表すフロー・ダイア
グラムである。
グラムである。
【図21】データベース・マネージャのバッファ・マネ
ージャの流れと、SESキャッシュの関連する用途の概
要を示す図である。
ージャの流れと、SESキャッシュの関連する用途の概
要を示す図である。
【図22】読取り動作用のバッファ・マネージャ処理の
フロー・ダイアグラムである。
フロー・ダイアグラムである。
【図23】書込み動作用のバッファ・マネージャ処理の
フロー・ダイアグラムである。
フロー・ダイアグラムである。
【図24】バッファ・マネージャについてのSESキャ
ッシュ記憶域管理のフロー・ダイアグラムである。
ッシュ記憶域管理のフロー・ダイアグラムである。
【図25】バッファ・マネージャによるSESキャッシ
ュ・データのDASDへの移行を示すフロー・ダイアグ
ラムである。
ュ・データのDASDへの移行を示すフロー・ダイアグ
ラムである。
【図26】ローカル・キャッシュ・ディレクトリ、ディ
レクトリ項目、およびそれに関連するローカル・キャッ
シュ・バッファの例を示す図である。
レクトリ項目、およびそれに関連するローカル・キャッ
シュ・バッファの例を示す図である。
【図27】同じ1組のローカル・キャッシュ・バッファ
に関連する複数のローカル・キャッシュ・ディレクトリ
の例を示す図である。
に関連する複数のローカル・キャッシュ・ディレクトリ
の例を示す図である。
【図28】バッファを登録する、ベクトル項目設定CP
U命令の実行とSESコマンド処理を示すフロー・ダイ
アグラムである。
U命令の実行とSESコマンド処理を示すフロー・ダイ
アグラムである。
【図29】バッファ・マネージャが、修正済みレコード
を組み合わせてキャッシュ・データ・バッファに入れる
処理を示すフロー・ダイアグラムである。
を組み合わせてキャッシュ・データ・バッファに入れる
処理を示すフロー・ダイアグラムである。
【図30】ローカル・キャッシュ項目の登録を表すフロ
ー・ダイアグラムである。
ー・ダイアグラムである。
【図31】共用キャッシュにデータをキャッシュするた
めに非ブロッキング逐次化をサポートするREADコマ
ンドのプロセス・フローを表すフロー・ダイアグラムで
ある。
めに非ブロッキング逐次化をサポートするREADコマ
ンドのプロセス・フローを表すフロー・ダイアグラムで
ある。
【図32】共用キャッシュにデータをキャッシュするた
めに非ブロッキング逐次化をサポートする無条件WRI
TEコマンドのプロセス・フローを表すフロー・ダイア
グラムである。
めに非ブロッキング逐次化をサポートする無条件WRI
TEコマンドのプロセス・フローを表すフロー・ダイア
グラムである。
【図33】共用キャッシュにデータをキャッシュするた
めに非ブロッキング逐次化をサポートするCONDIT
IONAL WRITEコマンドのプロセス・フローを
表すフロー・ダイアグラムである。
めに非ブロッキング逐次化をサポートするCONDIT
IONAL WRITEコマンドのプロセス・フローを
表すフロー・ダイアグラムである。
【図34】共用キャッシュにデータをキャッシュするた
めの非ブロッキング逐次化の方法を示すフロー・ダイア
グラムである。
めの非ブロッキング逐次化の方法を示すフロー・ダイア
グラムである。
【図35】ディレクトリおよびデータ域再利用プロセス
のプロセス・フロー・ダイアグラムである。
のプロセス・フロー・ダイアグラムである。
【図36】再利用ベクトルおよび再利用カウンタの動作
を表すフロー・ダイアグラムである。
を表すフロー・ダイアグラムである。
101 メモリ 102 ディレクトリ 103 共用キャッシュ 104 ローカル・キャッシュ・レジスタ 105 ローカル・キャッシュ制御機構 106 高速リンク 107 バッファ 109 DASD 110 管理論理装置 111 共用キャッシュ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェフリー・アラン・フレイ アメリカ合衆国12524、ニューヨーク州フ ィッシュキル、グリーンヒル・ドライブ 24エイ (72)発明者 ジョン・フランクリン・アイゼンバーグ・ ジュニア アメリカ合衆国12603、ニューヨーク州ポ ーキープシー、ソーンウッド・ドライブ 29 (72)発明者 チャンドラセーカラン・モーハン アメリカ合衆国95120、カリフォルニア州 サンノゼ、ポーツウッド・ドライブ 727 (72)発明者 インデルパル・シング・ナラン アメリカ合衆国95070、カリフォルニア州 サラトガ、セラ・オークス・コート 13778 (72)発明者 ジェフリー・マーク・ニック アメリカ合衆国12524、ニューヨーク州フ ィッシュキル、プリマス・ロード 43 (72)発明者 ジミー・ポール・ストリックランド アメリカ合衆国95070、カリフォルニア州 サラトガ、オールコット・ウェイ 18929 (72)発明者 マイケル・ダスティン・スワンソン アメリカ合衆国12603、ニューヨーク州ポ ーキープシー、カレッジ・アベニュー 95
Claims (18)
- 【請求項1】ソフトウェア(コマンド発行側)を使用す
る複数の中央処理複合体(CPC)と、CPCに接続さ
れ、シスプレックスにデータ項目を格納するためのシス
プレックス直接アクセス記憶装置(DASD)と、CP
Cに付加され、SESキャッシュ・ディレクトリを備え
たSESキャッシュを有する共用電子記憶域(SES)
とを備えるようにシスプレックスを構成する段階と、 CPCによってSESキャッシュ・ディレクトリに対し
て識別されるデータ項目を格納し、シスプレックス内で
LCB識別子によって一意に識別される、CPCバッフ
ァ(LCB)を、SESキャッシュ・ディレクトリ中に
登録する段階と、 SESキャッシュ・ディレクトリ中の指定されたデータ
項目用のCPCバッファが登録されている各CPCに、
SESによる無効化要求を信号発信する段階とを含む、
コンピュータ複合体のデータ・コヒーレンスを制御する
方法。 - 【請求項2】さらに、各ローカル・キャッシュ(LC)
がそれぞれデータ項目を格納できる容量を有するCPC
バッファ(LCB)を備える、CPCバッファを含むC
PC内のそれぞれのローカル・キャッシュに関連する1
組の無効化要求ビットを、付加されたCPCバッファを
有する各CPC内に設ける段階とSESから、LCBを
備えるCPCに無効化要求を送る信号発信段階によっ
て、CPCバッファ(LCB)に関する無効化要求ビッ
トを無効化状態に設定する段階とを含むことを特徴とす
る、請求項1に記載の、コンピュータ複合体のデータ・
コヒーレンスを制御する方法。 - 【請求項3】さらに、SESキャッシュ・ディレクトリ
項目にアクセスする前にディレクトリ項目をロックし
て、任意の項目に対するアクセスを一時に1つの要求だ
けに制限する段階を含むことを特徴とする、請求項1に
記載の、コンピュータ複合体のデータ・コヒーレンスを
制御する方法。 - 【請求項4】さらに、DASDまたはSESからのデー
タにアクセスする段階と、 DASDまたはSESに新規バージョンが書き込まれる
とき、付加されたLCB中のデータ項目の古いバージョ
ンをSESに無効化させることにより、SES内のデー
タ項目のコヒーレンシを制御する段階とを含むことを特
徴とする、請求項1に記載の、コンピュータ複合体のデ
ータ・コヒーレンスを制御する方法。 - 【請求項5】さらに、SESキャッシュ内で、共通名お
よび登録解除されたLCB識別子を通信する名前置換動
作を実行する段階と、 共通名を有するSESディレクトリ項目を発見する段階
と、 通信されたLCB識別子を、ディレクトリ項目に関連す
るLCB識別子と突き合わせる段階と、 通信されたLCB識別子と一致するディレクトリ項目に
関連する、発見されたLCB識別子を削除して、その登
録を解除する段階とを含むことを特徴とする、請求項1
に記載の、コンピュータ複合体のデータ・コヒーレンス
を制御する方法。 - 【請求項6】さらに、SESキャッシュ・ディレクトリ
項目に関連するデータ項目のコピーを有するシスプレッ
クス内のすべてのLCB識別子を示すために、ディレク
トリ項目に関する登録段階で提供される登録済みLCB
識別子の集合に共通名が割り当てられるという、SES
キャッシュ・ディレクトリ項目からのポインタを提供す
る段階を含むことを特徴とする、請求項1に記載の、コ
ンピュータ複合体のデータ・コヒーレンスを制御する方
法。 - 【請求項7】さらに、SESに共通名を持つデータ項目
を送る登録時書込み(WWR)コマンドをCPCが発行
することにより、SES内での書込み動作をCPCによ
って要求する段階と、 SESキャッシュ内のディレクトリ項目中に共通名が割
り当てられていることが判明し、コマンド発行側に関連
するLCB識別子がディレクトリ項目に登録されている
ことが判明している場合にかぎり、SESキャッシュ・
データ域内にデータ項目を書き込むことにより、書込み
動作を実行する段階とを含むことを特徴とする、請求項
1に記載の、コンピュータ複合体のデータ・コヒーレン
スを制御する方法。 - 【請求項8】さらに、SES内および付加されたCPC
内にある、共通名を持つデータ項目のすべてのコピーの
無効化を要求するため、データ項目の共通名をSESに
送る名前無効化(IN)コマンドをCPCが発行するこ
とにより、無効化動作をCPCによって要求する段階
と、 SESキャッシュ・ディレクトリ内の共通名を持つ項目
を発見する段階と、発見段階で発見されたSESキャッ
シュ・ディレクトリ項目用の、登録済みの各LCB識別
子を検出する段階と、 識別された各LCBを無効化するため、検出段階で得ら
れた各LCB識別子によって識別される各CPCに、S
ESによって無効化要求を送る段階と を含むことを特
徴とする、請求項1に記載の、コンピュータ複合体のデ
ータ・コヒーレンスを制御する方法。 - 【請求項9】それぞれプロセッサを備える複数の中央プ
ロセッサ複合体(CPC)と、CPCの電子式主記憶装
置(MS)に接続された共用電子記憶域(SES)と、
現在シスプレックス内に格納されているデータ項目を含
む複数の直接アクセス記憶装置(DASD)とを備える
シスプレックスを構成し、SESディレクトリとSES
データ域とを有するSESキャッシュでSESを構成す
る段階と、 CPCのMS内にローカル・キャッシュ(LC)を設
け、CPCプログラムの制御下でCPC内のプロセッサ
によってLCB中に書き込まれたデータ項目を受け取る
ため、LC内に複数のバッファ(LCB)を設け、CP
C内のLC内の各LCBにCPCによってローカル・キ
ャッシュ項目番号(LCEN)を割り当て、LCB中に
書き込まれた各有効データ項目にCPCプログラムによ
って共通名を割り当て、それにより同一のまたは異なる
CPC内の複数のLCB間でデータ項目を共用できるよ
うにする段階と、 シスプレックス内の、SESによって認識される(それ
に付加された)各LCに対してLC識別子(LCID)
を割り当てる段階と、 (SESにデータが共通と共に送られるかどうかにかか
わらず)SESキャッシュ・ディレクトリ中の項目中
に、CPCによってSESに通信されるデータ項目の名
前を登録する段階とデータ項目の名前の登録を含み、S
ESキャッシュ内に登録されている各データ項目と関連
するSESディレクトリ項目と関連する、(CPC内の
データ項目を格納するLCBの)LCIDおよびLCE
NをSESレジスタ(LCR)中に格納し、それにより
データ項目を格納するシスプレックス内のあらゆるLC
Bを識別する段階と、 いずれかのCPCが、SES内に登録されているデータ
項目の修正を要求するとき、データ項目の名前を持つS
ESディレクトリ項目中のデータ項目に現在関連するL
CIDおよびLCENによって識別される、CPC内の
各LCBの内容の各CPCによる無効化をSESが要求
する段階とを含むことを特徴とする、コンピュータ複合
体のデータ・コヒーレンスを制御する方法。 - 【請求項10】さらに、各CPC内で、CPC内の各L
C内の各LCBと関連する有効標識を持つディレクトリ
を見つける段階と、 SESによる無効化要求に従って、LCBの有効標識を
無効状態に設定する段階とを含むことを特徴とする、請
求項9に記載の、シスプレックス・システム中でコヒー
レンシを提供する方法。 - 【請求項11】複数の中央電子複合体(CPC)および
共用電子記憶域(SES)でシスプレックスを構成し
て、任意のCPC内のローカル・キャッシュ・メモリ・
バッファ(LCB)中の項目にレコードを書き込みそれ
からレコードを読み取るために、それらのLCBをプロ
グラム制御し、各CPC内のオペレーティング・システ
ム・ソフトウェアにより有効標識を各LCBと関連付け
る段階と、 SESに付加されたCPC間で共用されるレコード用に
共通名プロトコルを使用する段階と、 CPC内のLCB中に有効に格納された各レコードの共
通名をSES内に記録し、SESディレクトリ項目に、
共通名とSESディレクトリ項目にアクセスする各LC
BのLCB識別子を関連付ける段階と、 LCBに格納されているレコード中のデータを使用する
前に、CPC内でLCBの有効/無効標識をCPCによ
ってテストする段階と、 CPCがレコードの最新のコピーを必要とする場合に、
SESと通信してレコードの最新バージョンを獲得する
段階とを含むことを特徴とする、シスプレックス・シス
テム中でコヒーレンシを提供する方法。 - 【請求項12】さらに、有効なSESディレクトリ項目
中にレコードの共通名が登録されているのであっても、
SESにレコードのコピーがない場合は、レコードの共
通名でDASDにアクセスして、レコードの最新バージ
ョンのコピーを獲得する段階を含むことを特徴とする、
請求項11に記載の、シスプレックス・システム中でコ
ヒーレンシを提供する方法。 - 【請求項13】それぞれプロセッサを有する中央プロセ
ッサ複合体(CPC)と、CPCに結合され、シスプレ
ックス内にデータ項目を永久的に格納するためのシスプ
レックス直接アクセス記憶装置(DASD)と、SES
ディレクトリおよびSESデータ域を備えたSESキャ
ッシュを有する共用電子記憶域(SES)とを備えるよ
うにシスプレックスを構成する段階と、 シスプレックス内のCPCの主記憶域内に設けられ、そ
れぞれバッファ(LCB)を含む、ローカル・キャッシ
ュ(LC)にSESキャッシュを付加する段階と、 共通名を識別する、CPCからSESへの要求に応答し
て、SESキャッシュ・ディレクトリ項目中に、LCB
中のデータ項目の共通名を登録し、アクセスのためのC
PC要求がLCB中のデータ項目のコピーを指示すると
き、SESキャッシュ・ディレクトリ項目へのアクセス
が行われる対象であるシスプレックス内のLCBを識別
する各LCB識別子を、SESキャッシュ・ディレクト
リ項目と関連付ける段階と、 SESキャッシュ・ディレクトリ項目へのアクセスが、
LCBが、それに格納されているデータ項目を、同じデ
ータ項目のDASDまたはSES内に格納されたバージ
ョンに関して変更したことを示すとき、アクセスされる
ディレクトリ項目に関連するLCB識別子によって識別
される、シスプレックス内のLCBを有する各CPC
に、SESによる無効化要求を信号発信するが、データ
項目を変更するLCBには無効化が行われず、CPC要
求がディレクトリ項目から共通名を削除することを求め
るものであるとき、アクセスされるSESキャッシュ・
ディレクトリ項目に関連するLCB識別子で識別される
すべてのLCBを無効化する段階とを含むことを特徴と
する、コンピュータ複合体のデータ・コヒーレンシを制
御する方法。 - 【請求項14】高速のメモリと、WRITEコマンドに
応答してメモリにデータを格納し、READコマンドに
応答してメモリからデータを取り出し、データ表現を生
成および削除する手段と、データを格納するための前記
メモリより低速の記憶機構と、メモリおよび記憶機構に
接続された複数のコンピュータ・システムとを含む組合
せにおいて、 第1のコンピュータ・システムからメモリにデータ・ブ
ロックに関するREADコマンドを提供する段階と、 READコマンドに応答して、メモリにおいてデータ・
ブロックのデータ表現を生成する段階と、 第2のコンピュータ・システムにおいて前記記憶機構か
らデータ・ブロックを読み取る段階と、 メモリにデータ・ブロックを入力するため、第2のコン
ピュータ・システムからWRITEコマンドを発行する
段階と、 WRITEコマンドに応答して、データ表現が削除済み
の場合は、メモリにデータ・ブロックが入力されるのを
防止する段階と、 削除されていない場合は、メモリにデータ・ブロックを
選択的に入力する段階とを含むメモリへのデータ・ブロ
ックの入力を制御する方法。 - 【請求項15】高速のメモリと、WRITEコマンドに
応答してメモリにデータを格納し、READコマンドに
応答してメモリからデータを取り出す手段と、データを
格納するための前記メモリより低速の記憶機構と、メモ
リおよび記憶機構に接続された複数のコンピュータ・シ
ステムとを含む組合せにおいて、 メモリ内のデータ・ブロックを取り出すために、メモリ
にデータ・ブロックが入力される前に第1のコンピュー
タ・システムによってメモリに対して発行されたREA
Dコマンドに応答して、それぞれ複数のコンピュータ・
システムのうちの当該の1つを表す複数のシステム表現
を含む、データ・ブロックのデータ表現をメモリに格納
する段階と、 READコマンドに応答して、第1のコンピュータ・シ
ステムのシステム表現を、データ・ブロックのそのバー
ジョンが有効であることを示す第1の状態に条件付ける
段階と、 データ・ブロックが、第2のコンピュータ・システムに
おいて更新済みバージョンに変更され、第2のコンピュ
ータ・システムからメモリに入力されている場合、第1
のコンピュータ・システムのシステム表現を、データ・
ブロックのそのバージョンが有効でないことを示す第2
の状態に変更する段階と、 第1のコンピュータ・システムにおいて、前記記憶機構
からデータ・ブロックを読み取る段階と、 メモリにデータ・ブロックを入力するために、第1のコ
ンピュータ・システムからWRITEコマンドを発行す
る段階と、 WRITEコマンドに応答して、第1のコンピュータ・
システムのシステム表現が第2の状態に設定されている
場合、第1のシステムからメモリにデータ・ブロックが
入力されるのを防止する段階と、 設定されていない場合は、メモリにデータ・ブロックを
選択的に入力する段階とを含むことを特徴とする、メモ
リへのデータ・ブロックの入力を制御する方法。 - 【請求項16】読取り段階が、 メモリにおいて、データ・ブロックのデータ表現が存在
しているかどうかをチェックする段階と、 データ表現が存在する場合、およびデータ・ブロックが
メモリ内にある場合は、第1のコンピュータ・システム
のシステム表現を第1の状態に設定し、第1のコンピュ
ータ・システムに、データ・ブロックがメモリ内にある
という標識を返す段階と、 そうでない場合は、システム表現を第1の状態に設定
し、第1のコンピュータ・システムに、データ・ブロッ
クがメモリ内にないという標識を提供する段階とを含む
ことを特徴とする、請求項15に記載の方法。 - 【請求項17】選択的入力段階が、 データ表現が格納されており、データ・ブロックがメモ
リ内にない場合、第1のコンピュータ・システムのシス
テム表現が第2の状態に設定されているなら、データ・
ブロックの入力を拒絶する段階と、 設定されていないなら、第1のコンピュータ・システム
からメモリにデータ・ブロックを入力する段階とを含む
ことを特徴とする、請求項15に記載の方法。 - 【請求項18】選択的入力段階が、 データ・ブロックがメモリ内にある場合、第1のコンピ
ュータ・システムのシステム表現が第2の状態に設定さ
れているなら、第1のコンピュータ・システムに、WR
ITEコマンドが拒絶されたという標識を提供する段階
と、 設定されていないなら、第1のコンピュータ・システム
に、WRITEコマンドが受諾されたという標識を提供
する段階とを含むことを特徴とする、請求項15に記載
の方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US860805 | 1992-03-30 | ||
| US07/860,805 US5537574A (en) | 1990-12-14 | 1992-03-30 | Sysplex shared data coherency method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0683706A true JPH0683706A (ja) | 1994-03-25 |
| JP2837785B2 JP2837785B2 (ja) | 1998-12-16 |
Family
ID=25334059
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5012161A Expired - Fee Related JP2837785B2 (ja) | 1992-03-30 | 1993-01-28 | データ・コヒーレンス制御方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US5537574A (ja) |
| EP (1) | EP0563622A2 (ja) |
| JP (1) | JP2837785B2 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6108671A (en) * | 1997-04-01 | 2000-08-22 | Ogawa; Atsuro | Virtual database space system and computer-readable recording medium recorded with database program |
| JP2009003935A (ja) * | 2007-06-20 | 2009-01-08 | Nvidia Corp | 書込み操作を同報通信するためのシステム、方法、およびコンピュータプログラム製品 |
Families Citing this family (138)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5426747A (en) * | 1991-03-22 | 1995-06-20 | Object Design, Inc. | Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system |
| US5509122A (en) * | 1992-02-20 | 1996-04-16 | International Business Machines Corporation | Configurable, recoverable parallel bus |
| JP2566717B2 (ja) | 1992-03-30 | 1996-12-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 条件付きオペレーション提供装置及び方法 |
| US5758157A (en) * | 1992-12-31 | 1998-05-26 | International Business Machines Corporation | Method and system for providing service processor capability in a data processing by transmitting service processor requests between processing complexes |
| US5761739A (en) * | 1993-06-08 | 1998-06-02 | International Business Machines Corporation | Methods and systems for creating a storage dump within a coupling facility of a multisystem enviroment |
| JP2960297B2 (ja) * | 1994-03-16 | 1999-10-06 | 株式会社東芝 | データベースシステム及び負荷分散制御方法 |
| US5963975A (en) * | 1994-04-19 | 1999-10-05 | Lsi Logic Corporation | Single chip integrated circuit distributed shared memory (DSM) and communications nodes |
| US5574902A (en) * | 1994-05-02 | 1996-11-12 | International Business Machines Corporation | Efficient destaging of updated local cache pages for a transaction in a multisystem and multiprocess database management system with a high-speed shared electronic store |
| US5812996A (en) * | 1994-07-12 | 1998-09-22 | Sybase, Inc. | Database system with methods for optimizing query performance with a buffer manager |
| US5751992A (en) * | 1994-09-23 | 1998-05-12 | International Business Machines Corporation | Computer program product for continuous destaging of changed data from a shared cache in a multisystem shared disk environment wherein castout interest is established in a hierarchical fashion |
| JPH08185359A (ja) * | 1994-10-31 | 1996-07-16 | Toshiba Corp | メモリサブシステム |
| US6128648A (en) * | 1994-11-23 | 2000-10-03 | International Business Machines Corporation | Information handling system and method for maintaining coherency between network servers and mobile terminals |
| US5634110A (en) * | 1995-05-05 | 1997-05-27 | Silicon Graphics, Inc. | Cache coherency using flexible directory bit vectors |
| JPH0916472A (ja) * | 1995-07-04 | 1997-01-17 | Fujitsu Ltd | キャッシュメモリ試験方法 |
| US5692182A (en) * | 1995-10-05 | 1997-11-25 | International Business Machines Corporation | Bufferpool coherency for identifying and retrieving versions of workfile data using a producing DBMS and a consuming DBMS |
| US5860153A (en) * | 1995-11-22 | 1999-01-12 | Sun Microsystems, Inc. | Memory efficient directory coherency maintenance |
| JPH09171441A (ja) * | 1995-12-20 | 1997-06-30 | Hitachi Ltd | 二重化記憶装置の記憶一致方法および装置 |
| US5983329A (en) * | 1996-05-03 | 1999-11-09 | Sun Microsystems, Inc. | Caching virtual memory locks |
| US5758339A (en) * | 1996-05-31 | 1998-05-26 | International Business Machines Corporation | Method of identifying shared and unshared information using system chapters, a sysplex chapter, a table of contents, and a header |
| US5734922A (en) * | 1996-07-01 | 1998-03-31 | Sun Microsystems, Inc. | Multiprocessing system configured to detect and efficiently provide for migratory data access patterns |
| US5796605A (en) * | 1996-07-02 | 1998-08-18 | Sun Microsystems, Inc. | Extended symmetrical multiprocessor address mapping |
| US5805839A (en) * | 1996-07-02 | 1998-09-08 | Advanced Micro Devices, Inc. | Efficient technique for implementing broadcasts on a system of hierarchical buses |
| US5761734A (en) * | 1996-08-13 | 1998-06-02 | International Business Machines Corporation | Token-based serialisation of instructions in a multiprocessor system |
| US5887135A (en) * | 1996-08-15 | 1999-03-23 | International Business Machines Corporation | System and method for management of object transitions in an external storage facility accessed by one or more processors |
| US6009425A (en) * | 1996-08-21 | 1999-12-28 | International Business Machines Corporation | System and method for performing record deletions using index scans |
| US5832508A (en) * | 1996-09-18 | 1998-11-03 | Sybase, Inc. | Method for deallocating a log in database systems |
| US5805900A (en) * | 1996-09-26 | 1998-09-08 | International Business Machines Corporation | Method and apparatus for serializing resource access requests in a multisystem complex |
| US5948060A (en) * | 1997-01-24 | 1999-09-07 | International Business Machines Corporation | Speeding-up communication rates on links transferring data structures by a method of handing scatter/gather of storage blocks in commanded computer systems |
| US5966708A (en) * | 1997-03-28 | 1999-10-12 | International Business Machines | Tail compression of a log stream using a scratch pad of logically deleted entries |
| US5956735A (en) * | 1997-03-28 | 1999-09-21 | International Business Machines Corporation | System of compressing the tail of a sparse log stream of a computer system |
| US5999935A (en) * | 1997-03-28 | 1999-12-07 | International Business Machines Corporation | Tail compression of a sparse log stream of a multisystem environment |
| US5920875A (en) * | 1997-03-28 | 1999-07-06 | International Business Machines Corporation | Tail compression of a sparse log stream of a computer system |
| US6125393A (en) * | 1997-03-28 | 2000-09-26 | International Business Machines Corporation | System of compressing the tail of a sparse log stream of a multisystem environment |
| US6108667A (en) * | 1997-03-28 | 2000-08-22 | International Business Machines Corporation | System of compressing a log stream using a scratch pad of logically deleted entries |
| US6076095A (en) * | 1997-03-28 | 2000-06-13 | International Business Machines Corporation | Method of one system of a multisystem environment taking over log entries owned by another system |
| KR100287021B1 (ko) * | 1997-05-12 | 2001-04-16 | 이정태 | 컴퓨터장치의 프로그램 선택구동장치와, 이를 위한 컴퓨터장치의 선택신호입력장치 |
| US6092155A (en) | 1997-07-10 | 2000-07-18 | International Business Machines Corporation | Cache coherent network adapter for scalable shared memory processing systems |
| US6044438A (en) * | 1997-07-10 | 2000-03-28 | International Business Machiness Corporation | Memory controller for controlling memory accesses across networks in distributed shared memory processing systems |
| US6047358A (en) * | 1997-10-31 | 2000-04-04 | Philips Electronics North America Corporation | Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups |
| US6199179B1 (en) | 1998-06-10 | 2001-03-06 | Compaq Computer Corporation | Method and apparatus for failure recovery in a multi-processor computer system |
| US6332180B1 (en) | 1998-06-10 | 2001-12-18 | Compaq Information Technologies Group, L.P. | Method and apparatus for communication in a multi-processor computer system |
| US6260068B1 (en) | 1998-06-10 | 2001-07-10 | Compaq Computer Corporation | Method and apparatus for migrating resources in a multi-processor computer system |
| US6633916B2 (en) | 1998-06-10 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for virtual resource handling in a multi-processor computer system |
| US6542926B2 (en) * | 1998-06-10 | 2003-04-01 | Compaq Information Technologies Group, L.P. | Software partitioned multi-processor system with flexible resource sharing levels |
| US6647508B2 (en) | 1997-11-04 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation |
| US6381682B2 (en) | 1998-06-10 | 2002-04-30 | Compaq Information Technologies Group, L.P. | Method and apparatus for dynamically sharing memory in a multiprocessor system |
| US5950203A (en) * | 1997-12-31 | 1999-09-07 | Mercury Computer Systems, Inc. | Method and apparatus for high-speed access to and sharing of storage devices on a networked digital data processing system |
| US6658417B1 (en) | 1997-12-31 | 2003-12-02 | International Business Machines Corporation | Term-based methods and apparatus for access to files on shared storage devices |
| US7010532B1 (en) * | 1997-12-31 | 2006-03-07 | International Business Machines Corporation | Low overhead methods and apparatus for shared access storage devices |
| US6694317B1 (en) * | 1997-12-31 | 2004-02-17 | International Business Machines Corporation | Method and apparatus for high-speed access to and sharing of storage devices on a networked digital data processing system |
| US6237000B1 (en) | 1998-05-01 | 2001-05-22 | International Business Machines Corporation | Method and apparatus for previewing the results of a data structure allocation |
| US6070164A (en) * | 1998-05-09 | 2000-05-30 | Information Systems Corporation | Database method and apparatus using hierarchical bit vector index structure |
| US6161191A (en) * | 1998-05-12 | 2000-12-12 | Sun Microsystems, Inc. | Mechanism for reliable update of virtual disk device mappings without corrupting data |
| US7013305B2 (en) * | 2001-10-01 | 2006-03-14 | International Business Machines Corporation | Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange |
| JP4252139B2 (ja) * | 1998-12-16 | 2009-04-08 | 株式会社日立製作所 | 記憶装置システム |
| US6675175B2 (en) | 1999-02-19 | 2004-01-06 | International Business Machines Corporation | Method and system for sharing catalogs in a multiprocessing system utilizing a shared processor |
| US6230243B1 (en) | 1999-02-19 | 2001-05-08 | International Business Machines Corporation | Method, system and program products for managing changed data of castout classes |
| US6539495B1 (en) | 1999-02-22 | 2003-03-25 | International Business Machines Corporation | Method, system and program products for providing user-managed duplexing of coupling facility cache structures |
| US6438654B1 (en) | 1999-02-22 | 2002-08-20 | International Business Machines Corporation | Castout processing for duplexed cache structures |
| US7283991B1 (en) * | 1999-03-11 | 2007-10-16 | Microsoft Corporation | Caching system for path search optimization |
| JP2000268006A (ja) * | 1999-03-15 | 2000-09-29 | Fuji Xerox Co Ltd | マルチプロセッサシステム |
| US6609214B1 (en) | 1999-08-23 | 2003-08-19 | International Business Machines Corporation | Method, system and program products for copying coupling facility structures |
| US6542970B1 (en) | 1999-08-23 | 2003-04-01 | International Business Machines Corporation | Method, system and program products for copying coupling facility list structures |
| US6266783B1 (en) | 1999-08-23 | 2001-07-24 | International Business Machines Corporation | System-managed rebuild of coupling facility structures |
| US6584554B1 (en) | 1999-08-23 | 2003-06-24 | International Business Machines Corporation | Directed allocation of coupling facility structures |
| US6546466B1 (en) | 1999-08-23 | 2003-04-08 | International Business Machines Corporation | Method, system and program products for copying coupling facility cache structures |
| US6317744B1 (en) | 1999-08-23 | 2001-11-13 | International Business Machines Corporation | Method, system and program products for browsing fully-associative collections of items |
| US6594667B2 (en) | 1999-08-23 | 2003-07-15 | International Business Machines Corporation | Method, system and program products for modifying coupling facility structures |
| US6546414B1 (en) | 1999-08-23 | 2003-04-08 | International Business Machines Corporation | Method, system and program products for copying coupling facility lock structures |
| JP4351409B2 (ja) * | 1999-08-31 | 2009-10-28 | 富士通株式会社 | ファイル装置及びファイルアクセス方法 |
| US6567894B1 (en) | 1999-12-08 | 2003-05-20 | International Business Machines Corporation | Method and apparatus to prefetch sequential pages in a multi-stream environment |
| US6397216B1 (en) * | 1999-12-09 | 2002-05-28 | Amdahl Corporation | Ordering keys in a table using an ordering mask |
| US6397206B1 (en) * | 1999-12-15 | 2002-05-28 | International Business Machines Corporation | Optimizing fixed, static query or service selection and execution based on working set hints and query signatures |
| US6553391B1 (en) * | 2000-06-08 | 2003-04-22 | International Business Machines Corporation | System and method for replicating external files and database metadata pertaining thereto |
| US6862595B1 (en) | 2000-10-02 | 2005-03-01 | International Business Machines Corporation | Method and apparatus for implementing a shared message queue using a list structure |
| US6963882B1 (en) | 2000-10-02 | 2005-11-08 | International Business Machines Corporation | Method and apparatus for processing a list structure |
| GB0028237D0 (en) * | 2000-11-18 | 2001-01-03 | Ibm | Method and apparatus for communication of message data |
| TW523667B (en) * | 2001-05-31 | 2003-03-11 | Taiwan Semiconductor Mfg | Shared directory management system and method of the same |
| US7640582B2 (en) * | 2003-04-16 | 2009-12-29 | Silicon Graphics International | Clustered filesystem for mix of trusted and untrusted nodes |
| US20030135495A1 (en) * | 2001-06-21 | 2003-07-17 | Isc, Inc. | Database indexing method and apparatus |
| US7099935B2 (en) * | 2001-10-01 | 2006-08-29 | International Business Machines Corporation | Dynamically determining whether to process requests synchronously or asynchronously |
| US6910158B2 (en) * | 2001-10-01 | 2005-06-21 | International Business Machines Corporation | Test tool and methods for facilitating testing of duplexed computer functions |
| US6813726B2 (en) | 2001-10-01 | 2004-11-02 | International Business Machines Corporation | Restarting a coupling facility command using a token from another coupling facility command |
| US6954817B2 (en) * | 2001-10-01 | 2005-10-11 | International Business Machines Corporation | Providing at least one peer connection between a plurality of coupling facilities to couple the plurality of coupling facilities |
| US6859866B2 (en) | 2001-10-01 | 2005-02-22 | International Business Machines Corporation | Synchronizing processing of commands invoked against duplexed coupling facility structures |
| US6944787B2 (en) * | 2001-10-01 | 2005-09-13 | International Business Machines Corporation | System-managed duplexing of coupling facility structures |
| US6973544B2 (en) * | 2002-01-09 | 2005-12-06 | International Business Machines Corporation | Method and apparatus of using global snooping to provide cache coherence to distributed computer nodes in a single coherent system |
| US6862668B2 (en) | 2002-02-25 | 2005-03-01 | International Business Machines Corporation | Method and apparatus for using cache coherency locking to facilitate on-line volume expansion in a multi-controller storage system |
| US7480909B2 (en) * | 2002-02-25 | 2009-01-20 | International Business Machines Corporation | Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking |
| GB0207967D0 (en) * | 2002-04-08 | 2002-05-15 | Ibm | Data processing arrangement and method |
| GB0207969D0 (en) | 2002-04-08 | 2002-05-15 | Ibm | Data processing arrangement and method |
| US7120746B2 (en) * | 2002-09-09 | 2006-10-10 | International Business Machines Corporation | Technique for data transfer |
| US6920532B2 (en) * | 2002-11-05 | 2005-07-19 | Newisys, Inc. | Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems |
| US6934814B2 (en) * | 2002-11-05 | 2005-08-23 | Newisys, Inc. | Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering |
| US6925536B2 (en) * | 2002-11-05 | 2005-08-02 | Newisys, Inc. | Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems |
| KR100507781B1 (ko) * | 2002-12-24 | 2005-08-17 | 한국전자통신연구원 | 공유 디스크 기반 다중 데이터베이스 관리시스템에서 검출및 회피 기반 일관성 유지 정책을 동시에 지원하는 버퍼장착방법 |
| US8533401B2 (en) * | 2002-12-30 | 2013-09-10 | Intel Corporation | Implementing direct access caches in coherent multiprocessors |
| US8751753B1 (en) | 2003-04-09 | 2014-06-10 | Guillermo J. Rozas | Coherence de-coupling buffer |
| US7174550B2 (en) * | 2003-05-12 | 2007-02-06 | International Business Machines Corporation | Sharing communications adapters across a plurality of input/output subsystem images |
| US7130938B2 (en) * | 2003-05-12 | 2006-10-31 | International Business Machines Corporation | Method, system and program products for identifying communications adapters of a computing environment |
| US6996638B2 (en) * | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Method, system and program products for enhancing input/output processing for operating system images of a computing environment |
| US7177961B2 (en) * | 2003-05-12 | 2007-02-13 | International Business Machines Corporation | Managing access, by operating system images of a computing environment, of input/output resources of the computing environment |
| US7000036B2 (en) | 2003-05-12 | 2006-02-14 | International Business Machines Corporation | Extended input/output measurement facilities |
| US7127599B2 (en) * | 2003-05-12 | 2006-10-24 | International Business Machines Corporation | Managing configurations of input/output system images of an input/output subsystem, wherein a configuration is modified without restarting the input/output subsystem to effect a modification |
| US7290070B2 (en) | 2003-05-12 | 2007-10-30 | International Business Machines Corporation | Multiple logical input/output subsystem facility |
| US7826386B2 (en) * | 2003-12-08 | 2010-11-02 | International Business Machines Corporation | Facilitating the configuring of communications environments |
| US7277968B2 (en) * | 2004-01-23 | 2007-10-02 | International Business Machines Corporation | Managing sets of input/output communications subadapters of an input/output subsystem |
| EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
| JP4673585B2 (ja) * | 2004-08-05 | 2011-04-20 | 富士通株式会社 | メモリシステム制御装置およびメモリシステム制御方法 |
| JP4526337B2 (ja) * | 2004-09-15 | 2010-08-18 | 株式会社日立製作所 | データ管理システム及び方法 |
| US8131939B2 (en) * | 2004-11-15 | 2012-03-06 | International Business Machines Corporation | Distributed shared I/O cache subsystem |
| US7328312B2 (en) * | 2005-02-03 | 2008-02-05 | International Business Machines Corporation | Method and bus prefetching mechanism for implementing enhanced buffer control |
| US8225327B2 (en) * | 2005-09-15 | 2012-07-17 | International Business Machines Corporation | Synchronizing access to a shared resource utilizing selective locking |
| US7376796B2 (en) | 2005-11-01 | 2008-05-20 | Network Appliance, Inc. | Lightweight coherency control protocol for clustered storage system |
| US7996421B2 (en) * | 2007-01-03 | 2011-08-09 | International Business Machines Corporation | Method, computer program product, and system for coordinating access to locally and remotely exported file systems |
| US7783931B2 (en) * | 2007-05-04 | 2010-08-24 | International Business Machines Corporation | Alternate communication path between ESSNI server and CEC |
| US7958200B2 (en) * | 2007-08-14 | 2011-06-07 | International Business Machines Corporation | Methods, computer program products, and apparatuses for providing remote client access to exported file systems |
| CN100498740C (zh) * | 2007-09-11 | 2009-06-10 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、系统及数据缓存装置 |
| US8195704B2 (en) * | 2009-01-06 | 2012-06-05 | International Business Machines Corporation | Validation and correction in a distributed namespace |
| US8347050B2 (en) * | 2009-01-27 | 2013-01-01 | Microsoft Corporation | Append-based shared persistent storage |
| US8799572B2 (en) | 2009-04-20 | 2014-08-05 | Microsoft Corporation | Sliding-window multi-class striping |
| US20120008627A1 (en) * | 2010-07-09 | 2012-01-12 | Yung-Han Chen | Method and apparatus for assigning device identifier with collision avoidance |
| US9075723B2 (en) * | 2011-06-17 | 2015-07-07 | International Business Machines Corporation | Efficient discard scans |
| US20130212210A1 (en) * | 2012-02-10 | 2013-08-15 | General Electric Company | Rule engine manager in memory data transfers |
| US8799569B2 (en) * | 2012-04-17 | 2014-08-05 | International Business Machines Corporation | Multiple enhanced catalog sharing (ECS) cache structure for sharing catalogs in a multiprocessor system |
| US9549037B2 (en) | 2012-08-07 | 2017-01-17 | Dell Products L.P. | System and method for maintaining solvency within a cache |
| US9852073B2 (en) * | 2012-08-07 | 2017-12-26 | Dell Products L.P. | System and method for data redundancy within a cache |
| US9311240B2 (en) | 2012-08-07 | 2016-04-12 | Dell Products L.P. | Location and relocation of data within a cache |
| US9495301B2 (en) * | 2012-08-07 | 2016-11-15 | Dell Products L.P. | System and method for utilizing non-volatile memory in a cache |
| US20140047183A1 (en) * | 2012-08-07 | 2014-02-13 | Dell Products L.P. | System and Method for Utilizing a Cache with a Virtual Machine |
| US9367480B2 (en) | 2012-08-07 | 2016-06-14 | Dell Products L.P. | System and method for updating data in a cache |
| US9571572B2 (en) * | 2014-05-01 | 2017-02-14 | International Business Machines Corporation | Peer-to-peer networking through universal port connections |
| CN106415491B (zh) * | 2015-03-20 | 2020-01-21 | 华为技术有限公司 | 一种应用保护方法、服务器以及终端 |
| US20160314003A1 (en) * | 2015-04-23 | 2016-10-27 | PhotonIC International Pte. Ltd. | Photonics-Optimized Processor System |
| US10037147B2 (en) * | 2015-12-14 | 2018-07-31 | International Business Machines Corporation | Sharing files in a multisystem environment |
| CN109614220B (zh) * | 2018-10-26 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种多核系统处理器和数据更新方法 |
| US10909036B2 (en) | 2018-11-09 | 2021-02-02 | International Business Machines Corporation | Management of shared memory using asynchronous invalidation signals |
| US11232039B2 (en) * | 2018-12-10 | 2022-01-25 | Advanced Micro Devices, Inc. | Cache for storing regions of data |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4399504A (en) * | 1980-10-06 | 1983-08-16 | International Business Machines Corporation | Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment |
| US4445174A (en) * | 1981-03-31 | 1984-04-24 | International Business Machines Corporation | Multiprocessing system including a shared cache |
| US4695943A (en) * | 1984-09-27 | 1987-09-22 | Honeywell Information Systems Inc. | Multiprocessor shared pipeline cache memory with split cycle and concurrent utilization |
| US4965719A (en) * | 1988-02-16 | 1990-10-23 | International Business Machines Corporation | Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system |
| EP0348628A3 (en) * | 1988-06-28 | 1991-01-02 | International Business Machines Corporation | Cache storage system |
| US5317716A (en) * | 1988-08-16 | 1994-05-31 | International Business Machines Corporation | Multiple caches using state information indicating if cache line was previously modified and type of access rights granted to assign access rights to cache line |
| JPH0348951A (ja) * | 1989-07-18 | 1991-03-01 | Fujitsu Ltd | アドレスモニタ装置 |
| JPH0666056B2 (ja) * | 1989-10-12 | 1994-08-24 | 甲府日本電気株式会社 | 情報処理システム |
| JP2575543B2 (ja) * | 1990-04-04 | 1997-01-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 同時アクセス管理方法 |
| US5313609A (en) * | 1991-05-23 | 1994-05-17 | International Business Machines Corporation | Optimum write-back strategy for directory-based cache coherence protocols |
| US5280611A (en) * | 1991-11-08 | 1994-01-18 | International Business Machines Corporation | Method for managing database recovery from failure of a shared store in a system including a plurality of transaction-based systems of the write-ahead logging type |
| US5412803A (en) * | 1992-02-20 | 1995-05-02 | International Business Machines Corporation | Communications system having plurality of originator and corresponding recipient buffers with each buffer having three different logical areas for transmitting messages in single transfer |
| US5357608A (en) * | 1992-02-20 | 1994-10-18 | International Business Machines Corporation | Configurable, recoverable parallel bus |
-
1992
- 1992-03-30 US US07/860,805 patent/US5537574A/en not_active Expired - Fee Related
-
1993
- 1993-01-28 JP JP5012161A patent/JP2837785B2/ja not_active Expired - Fee Related
- 1993-03-08 EP EP93103644A patent/EP0563622A2/en not_active Withdrawn
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6108671A (en) * | 1997-04-01 | 2000-08-22 | Ogawa; Atsuro | Virtual database space system and computer-readable recording medium recorded with database program |
| JP2009003935A (ja) * | 2007-06-20 | 2009-01-08 | Nvidia Corp | 書込み操作を同報通信するためのシステム、方法、およびコンピュータプログラム製品 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5537574A (en) | 1996-07-16 |
| EP0563622A2 (en) | 1993-10-06 |
| JP2837785B2 (ja) | 1998-12-16 |
| EP0563622A3 (ja) | 1994-01-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2837785B2 (ja) | データ・コヒーレンス制御方法 | |
| US5544345A (en) | Coherence controls for store-multiple shared data coordinated by cache directory entries in a shared electronic storage | |
| CA2532054C (en) | Ownership reassignment in a shared-nothing database system | |
| JP2505939B2 (ja) | デ―タのキャストアウトを制御する方法 | |
| CN114631089B (zh) | 用于直接映射的持久存储器数据库的持久存储器文件仓库 | |
| JP2512675B2 (ja) | デ―タ処理制御方法及びコンピュ―タ・システム | |
| US5276835A (en) | Non-blocking serialization for caching data in a shared cache | |
| US5455942A (en) | Partial page write detection for a shared cache using a bit pattern written at the beginning and end of each page | |
| US4775955A (en) | Cache coherence mechanism based on locking | |
| US5493668A (en) | Multiple processor system having software for selecting shared cache entries of an associated castout class for transfer to a DASD with one I/O operation | |
| US5835908A (en) | Processing multiple database transactions in the same process to reduce process overhead and redundant retrieval from database servers | |
| CA1312675C (en) | Virtual lookaside facility | |
| JPH05210637A (ja) | 同時アクセス管理方法 | |
| US5247647A (en) | Detection of deletion of stored data by concurrently executing processes in a multiprocessing data processing system | |
| US10831663B2 (en) | Tracking transactions using extended memory features | |
| JP2765672B2 (ja) | データ転送及びデータ除去のための制御方法並びにコンピュータ・システム | |
| Saito et al. | A transactional memory service in an extensible operating system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |