JP6362769B2 - マルチプロセッシング環境におけるページ・テーブルの状態インジケータの更新の同期させる方法 - Google Patents

マルチプロセッシング環境におけるページ・テーブルの状態インジケータの更新の同期させる方法 Download PDF

Info

Publication number
JP6362769B2
JP6362769B2 JP2017514988A JP2017514988A JP6362769B2 JP 6362769 B2 JP6362769 B2 JP 6362769B2 JP 2017514988 A JP2017514988 A JP 2017514988A JP 2017514988 A JP2017514988 A JP 2017514988A JP 6362769 B2 JP6362769 B2 JP 6362769B2
Authority
JP
Japan
Prior art keywords
processor
memory
synchronization
address translation
indicator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2017514988A
Other languages
English (en)
Other versions
JP2017520869A (ja
JP2017520869A5 (ja
Inventor
グシュビント、マイケル、カール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2017520869A publication Critical patent/JP2017520869A/ja
Publication of JP2017520869A5 publication Critical patent/JP2017520869A5/ja
Application granted granted Critical
Publication of JP6362769B2 publication Critical patent/JP6362769B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

1つ又は複数の態様は、一般に、マルチプロセッサ・コンピューティング環境内での処理に関し、とりわけ、マルチプロセッサ・コンピューティング環境により用いられるページ・テーブルの状態インジケータの更新を同期させることに関する。
ページ・テーブルは、仮想アドレスと物理アドレスとの間のマッピングを格納するために用いられるデータ構造である。仮想アドレスは、付加的な物理メモリの外観を与えるために用いられる仮想メモリと関連付けられる。既知のように、物理メモリは、規定サイズのものであり、物理メモリが実際よりも大きく見えるようにするために、仮想メモリを利用する。仮想メモリは物理メモリにマッピングされ、物理メモリにアクセスするのに用いられる物理アドレスを含むページ・テーブル・エントリを特定するために仮想アドレスを用いる技術が提供される。
各ページ・テーブル・エントリは、エントリ及び/又はエントリと関連したメモリのページを管理するのに用いられる状態インジケータ(status indicator)を含む。さらに、性能を最適化するために、ページ・テーブル・エントリのキャッシュされたコピーが、変換ルックアサイド・バッファ(translation lookaside buffer、TLB)などのキャッシュ内に保持される。従って、ページ・テーブル・エントリが修正されると、キャッシュされたコピーが更新又は無効化され、キャッシュされたコピーが更新された場合、その更新がページ・テーブル・エントリ内に反映される。
「Power ISA(商標) Version 2.07」、IBM、2013年5月3日 「z/Architecture−Principles of Operation」、IBM、発行番号SA22−7932−09、第10版、2012年9月 「Power ISA(商標) Version 2.07 specification」、インターナショナル・ビジネス・マシーンズ・コーポレーション、2013年5月3日 「Intel Itanium Architecture Software Developer’s Manual Volume 2:System Architecture、文書番号:245318、2010年5月
コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・プログラム、コンピュータ・システム及び方法を提供する。
コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・プログラムを提供することにより、従来技術の欠点が克服され、利点がもたらされる。コンピュータ・プログラムは、処理回路により読み取り可能であり、方法を実施するための処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。この方法は、例えば、第1のプロセッサにより、第2のプロセッサから、メモリ内に位置するアドレス変換構造の1つ又は複数のエントリの1つ又は複数の状態インジケータの保留中の更新をコミットするように第1のプロセッサに指示する同期要求を受信することと、第1のプロセッサにより、同期要求の受信に基づいて、同期操作を実行して、1つ又は複数の状態インジケータの保留中の更新をコミットすることと、同期操作の完了に基づいて、第1のプロセッサにより、完了を第2のプロセッサに示すこととを含む。
1つ又は複数の実施形態に関連する方法及びシステムも、本明細書で説明され、特許請求される。さらに、1つ又は複数の実施形態に関連するサービスも説明され、本明細書で特許請求され得る。
付加的な特徴及び利点が実現される。他の実施形態及び態様は、本明細書で詳細に説明され、特許請求される本発明の一部と見なされる。
1つ又は複数の態様が、具体的に示され、例として本明細書の最後にある特許請求の範囲において明確に特許請求される。上記及び他の目的、特徴、並びに利点は、添付図面と関連して用いられる以下の詳細な説明から明らかである。
同期能力の1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一例を示す。 同期能力の1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の別の例を示す。 同期能力の1つ又は複数の態様を組み込み、用いるためのコンピューティング環境のさらに別の例を示す 図3のメモリのさらなる詳細を示す。 ページ・テーブル・エントリの一例を示す。 同期命令の1つの実装を示す。 同期論理の一実施形態を示す。 同期論理の別の実施形態を示す。 ストア(store、格納)操作と関連した論理の一実施形態を示す。 メモリ命令と関連した論理の一実施形態を示す。 メモリ命令と関連した論理の別の実施形態を示す。 アドレス空間の再構成の一例を示す。 ページを読み取り専用にする一実施形態を示す。 ページを読み取り専用にする別の実施形態を示す。 メモリ・ページのフリー・リストを管理するための論理の一実施形態を示す。 プロセスの終了に基づいてメモリを管理するための論理の一実施形態を示す。 コンピュータ・プログラムの一実施形態を示す。 クラウド・コンピューティング・ノードの一実施形態を示す。 クラウド・コンピューティング環境の一実施形態を示す。 抽象化モデル層の一例を示す。
1つ又は複数の態様によると、キャッシュされたエントリにおける保留中の更新(pending update)を、メモリ内で(即ち、インメモリ・ページ・テーブル・エントリ内で)強制的に可視にすることによって、ページ・テーブルの更新を同期するための同期能力が提供される。一例として、命令の完了後、同期命令の前に行われたキャッシュされたエントリの更新を、メモリ内で可視にすることを保証する同期命令が用いられる。本明細書における特定の例において、同期命令は、ページ・テーブルの参照(R)及び変更(C)インジケータの更新を同期するので、RCsync命令と呼ばれる。しかしながら、他の実施形態においては、同じ命令又は異なる命令を用いて、ページ・テーブルの状態インジケータの他の更新を同期させることもできる。
一実施形態において、同期は、メモリの大きいセクションを読み取り専用に変更するために用いられる一括操作(bulkoperation)、メモリ・ページのフリー・リストを管理するための操作、及び/又はプロセスの終了と関連した操作などの、メモリ管理操作を容易にするために用いられる。
異なるアーキテクチャのコンピューティング環境が、本明細書で提供される同期能力の1つ又は複数の態様を組み込み、用いることができる。例えば、インターナショナル・ビジネス・マシーンズ・コーポレーション(IBM)により提供され、その全体が引用により本明細書に組み入れられる非特許文献1に記載される、Power ISA(登録商標)とも呼ばれるPowerPCアーキテクチャに基づいた環境は、1つ又は複数の態様、並びに、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供され、その全体が引用により本明細書に組み入れられる非特許文献2に記載される、z/Architectureなどの他のアーキテクチャのコンピューティング環境を含むことができる。
Power、Power Architecture、PowerPC、z/Architecture、IBM、AIX、PowerVM、z/OS及びz/VM(本明細書で参照される)は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で用いられる他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション、又は他の会社の登録商標、商標又は製品名であり得る。
同期能力の1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一例が、図1を参照して説明される。一例において、コンピューティング環境100は、複数のプロセッサ(中央処理ユニット−CPU)を含み、各プロセッサは、例えば、少なくとも1つのメモリ管理ユニット(MMU)104、1つ又は複数のアドレス変換構造105、1つ又は複数のキャッシュ106、及び本明細書で説明される同期能力を与えるための同期ユニット107を含む。
各プロセッサ102は、1つ又は複数のキャッシュ110を有するメモリ部分108(同じ部分又は異なる部分)及び入力/出力(I/O)サブシステム112(同じく、同じサブシステム又は異なるサブシステム)に通信可能に結合される。I/Oサブシステム112は、例えば、データ入力デバイス、センサ、及び/又はディスプレイのような出力デバイスを含むことができる外部I/Oデバイス114に通信可能に結合される。
メモリ管理ユニット104は、アドレス変換を提供することによってメモリへのアクセスを容易にすることを含む、メモリ部分108の管理に用いられる。アドレス変換を改善するために、メモリ管理ユニットは、例えば、一実施形態ではMMU内に配置される、変換ルックアサイド・バッファ(TLB)及びセグメント・ルックアサイド・バファシリティ(SLB)を含む1つ又は複数のアドレス変換構造105を利用する。更に別の実施形態において、アドレス変換構造105はまた、例えば、プロセッサ内のMMUの外に位置する、実効アドレス−実アドレス変換(effective to real address translation、ERAT)構造も含む。
同期能力の1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の更に別の実施形態が、図2を参照して説明される。図2を参照すると、一例において、コンピューティング環境200が、1つ又は複数の制御ユニット206を介して1つ又は複数の入力/出力(I/O)デバイス204に結合された中央プロセッサ・コンプレックス(central processor complex、CPC)202を含む。中央プロセッサ・コンプレックス202は、それぞれが以下にさらに説明される1つ又は複数の中央プロセッサ(別名、中央処理ユニット(CPU))210及びI/Oサブシステム212に結合されたプロセッサ・メモリ208(別名、主メモリ、主ストレージ、中央ストレージ)を含む。
プロセッサ・メモリ208は、1つ又は複数の仮想マシン214(PowerPCアーキテクチャの一例における)又は1つ又は複数の論理パーティション214(z/Architectureの一例における)、並びにハイパーバイザ218及び他のプロセッサ・ファームウェア220を含むプロセッサ・ファームウェア216を含む。本明細書で用いられる場合、ファームウェアは、例えば、プロセッサのマイクロコード及び/又はミリコードを含む。ファームウェアは、例えば、より上位レベルのマシン・コードの実装に用いられる、ハードウェア・レベルの命令及び/又はデータ構造を含む。一実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコード又は基礎をなすハードウェアに特有のマイクロコードとして配信される独自のコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
各々の仮想マシン又は論理パーティション214は、別個のシステムとして機能し、1つ又は複数のアプリケーション222を有し、随意的に、各々の仮想マシン又は論理パーティションによって異なり得る、内部の常駐オペレーティング・システム224を有する。一実施形態において、オペレーティング・システムは、z/VMオペレーティング・システム、z/OSオペレーティング・システム、z/Linuxオペレーティング・システム、TPFオペレーティング・システム、AIXオペレーティング・システム、Power Linuxオペレーティング・システム、IBM i/OSオペレーティング・システム、又はニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される別のオペレーティング・システム、又は別の会社により提供される別のオペレーティング・システムである。仮想マシンは、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される、Power VMなどのハイパーバイザ218によって管理され、論理パーティションは、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される、プロセッサ・リソース/システム・マネジャ(PR/SM)などのハイパーバイザ218によって管理される。
中央プロセッサ210は、仮想マシンに割り当て可能な又は論理パーティションに割り当てられる物理プロセッサ・リソースである。例えば、各々の仮想マシン又は論理パーティション214は、各々が、仮想マシン又はパーティションに動的に割り当てることができる1つ又は複数の物理プロセッサ210の全て又は割り当て分(share)を表す、1つ又は複数の論理プロセッサを含む。中央プロセッサは、メモリ管理ユニット(MMU)230、1つ又は複数のアドレス変換構造231、少なくとも1つのキャッシュ232、及び本明細書で説明される同期能力を提供するために用いられる同期ユニット234を含むことができる。
入力/出力(I/O)サブシステム212は、入力/出力デバイス204と主メモリ208との間の情報の流れを方向付ける。入力/出力(I/O)サブシステム212は、中央処理コンプレックスに結合され、中央処理コンプレックスの一部とすることも又はそれとは別個のものとすることもできる。I/Oサブシステムは、中央プロセッサを、入力/出力デバイスと直接通信するタスクから解放し、データ処理が、入力/出力処理と同時に進行することを可能にする。通信を提供するために、I/Oサブシステムは、I/O通信アダプタを用いる。例えば、チャネル、I/Oアダプタ、PCIカード、イーサネット・カード、Small Computer System Interface(SCSI)カード等を含む、種々のタイプの通信アダプタがある。さらに、I/Oサブシステムは、入力/出力デバイス204との間の情報の流れを管理する際に、1つ又は複数の入力/出力経路を通信リンクとして使用する。
同期能力の1つ又は複数の態様を組み込み、用いるためのコンピューティング環境の別の実施形態が、図3を参照して説明される。この例において、コンピューティング環境300は、例えば1つ又は複数のバス308及び/又は他の接続を介して互いに結合された、例えば、ネイティブ中央処理ユニット302、メモリ304、並びに1つ又は複数の入力/出力デバイス及び/又はインターフェース306を含む。例として、コンピューティング環境300は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるPowerPCプロセッサ又はPower Systemsサーバ;カリフォルニア州Palo Alto所在のHewlett Packard Co.により提供されるIntel Itanium IIプロセッサを伴うHP Superdome;及び/又はインターナショナル・ビジネス・マシーンズ・コーポレーション、Hewlett Packard、Intel、Oracle、又はその他により提供されるアーキテクチャに基づいた他のマシンを含むことができる。
ネイティブ中央処理ユニット302は、環境内での処理の際に用いられる、1つ又は複数の汎用レジスタ及び/又は1つ又は複数の専用レジスタなどの1つ又は複数のネイティブ・レジスタ310、並びに1つ又は複数のアドレス変換構造311を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
さらに、ネイティブ中央処理ユニット302は、メモリ304内に格納された命令及びコードを実行する。1つの特定の例において、中央処理ユニットは、メモリ304内に格納されたエミュレータ・コード312を実行する。このコードにより、1つのアーキテクチャにおいて構成されたコンピューティング環境が、別のアーキテクチャをエミュレートすることが可能になる。例えば、エミュレータ・コード312により、PowerPCプロセッサ、Power Systemsサーバ、HP Superdomeサーバ又は他のものなどの、z/Architecture以外のアーキテクチャに基づいたマシンが、z/Architectureをエミュレートし、かつ、z/Architectureに基づいて開発されたソフトウェア及び命令を実行することが可能になる、又は、HP Superdomeサーバ又は他のものなどの、Power Architecture以外のアーキテクチャに基づいたマシンが、Power Architectureをエミュレートし、かつ、Power Architectureに基づいて開発されたソフトウェア及び命令を実行することが可能になる。
エミュレータ・コード312に関する更なる詳細が、図4を参照して説明される。メモリ304内に格納されたゲスト命令350が、ネイティブCPU302のもの以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令(例えば、マシン命令に関連する)を含む。例えば、ゲスト命令350は、Power Architectur又はz/Architectureプロセッサ102上で実行されるように設計することができるが、代わりに、例えばIntel Itanium IIプロセッサとすることができるネイティブCPU302上でエミュレートされることもある。一例において、エミュレータ・コード312は、メモリ304から1つ又は複数のゲスト命令350を取得し、取得された命令に対してローカル・バッファリングを随意的に提供するための命令フェッチ・ルーチン352を含む。エミュレータ・コード312はまた、取得されたゲスト命令のタイプを判断し、ゲスト命令を1つ又は複数の対応するネイティブ命令356に変換するための命令変換ルーチン354も含む。この変換は、例えば、ゲスト命令により実施される機能を識別することと、その機能を実施するためのネイティブ命令を選択することとを含む。
さらに、エミュレータ・コード312は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン360を含む。エミュレーション制御ルーチン360は、ネイティブCPU302に、1つ又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、こうした実行の最後に、次のゲスト命令又はゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに戻させることができる。ネイティブ命令356の実行は、データをメモリ304からレジスタ内にロードすること、データをレジスタから再びメモリに格納すること、又は変換ルーチンによって求められるような何らかのタイプの算術演算又は論理演算を実施することを含むことができる。
各ルーチンは、例えば、メモリ内に格納され、ネイティブ中央処理ユニット302によって実行される、ソフトウェアで実装される。他の例において、1つ又は複数のルーチン又は演算は、ファームウェア、ハードウェア、ソフトウェア、又はそれらの幾つかの組み合わせで実装される。エミュレートされるプロセッサのレジスタは、ネイティブCPUのレジスタ310又はメモリ304内の位置を使用して、エミュレートすることができる。実施形態において、ゲスト命令350、ネイティブ命令356、及びエミュレータ・コード312は、同一のメモリ内に存在してもよく、又は、異なるメモリ・デバイスの間に分散されてもよい。
実装において、本明細書で説明される同期能力は、エミュレーションを実施しているCPUにより提供されることも、又はエミュレートされるソフトウェアにより提供されることもある。種々の実施形態が可能である。
上述のコンピューティング環境は、用いることができるコンピューティング環境の単なる例にすぎない。複数のプロセッサを有する他の環境、他のパーティション化された環境、及び/又は他のエミュレートされた環境を含むがこれらに限定されない他の環境を用いることもできる。実施形態は、いずれか1つの環境に限定されるものではない。
しかしながら、各々のコンピューティング環境は、ページ・テーブルと呼ばれるデータ構造を含む、仮想アドレス指定の態様を用いる。既知のように、物理メモリは、規定サイズのものであり、物理メモリが実際よりも大きく見えるようにするために、仮想メモリが利用される。仮想メモリは、例えばページ・テーブル・エントリ(PTE)を特定するためのハッシュ・ページ・テーブル(HPT)技術を介して、実メモリにマッピングされる。仮想メモリの各セグメントは、実効セグメントID(ESID)により識別されるセグメントID(SID)エントリにマッピングされる。プログラムにより用いられる実効アドレスは、例えば、ESID、ページ部分及びバイト部分を含み、ESID値、並びに仮想セグメントID(VSID)値を含むSIDエントリを選択するために用いられる。VSID値は、ハッシュ・ページ・テーブルを検索するためのハッシュ・アルゴリズムによって使用される仮想アドレスの上位ビットを表す。VSIDに基づいたハッシュ値を用いて、ページ・テーブル・エントリ(PTE)を特定する。ページ・テーブル・エントリは、物理メモリのページのアドレスを含む。性能向上のために、ひとたびPTEが見出されると、実効アドレスのページ部分及びPTE内に見出された物理メモリ・ページのアドレスが、変換ルックアサイド・バッファ(TLB)などのキャッシュ構造内に格納され、その結果、同じ実効アドレス・ページへのさらなるアクセスは、TLBにおいて「ヒット」し、PTE検索を回避する。他の実施形態においては、TLBの代わりに又はこれに加えて他のキャッシュ構造を使用し、これに限られるものではないが、実効アドレス−実アドレス変換(ERAT)構造を含むページ・テーブル・エントリを格納することもできる。
ページ・テーブル・エントリと関連したさらなる詳細が、図5を参照して説明される。各ページ・テーブル・エントリ400は、1つの仮想番号を1つの実ページ番号にマッピングする。Power ISAアーキテクチャの一例として、ページ・テーブル・エントリは、以下を含む。
Figure 0006362769
LPと連結されたARPN((ARPN∪LP)0:59−P)は、実アドレス440の第1の部分442を提供し、実効アドレスからのバイト部分444は、実アドレスの第2の部分を提供する。
ページ・テーブル及びページ・テーブル・エントリの1つの実装に関するさらなる詳細が、その全体を引用により本明細書に組み入れる非特許文献3に記載される。
アドレスを変換するためのハッシュ・ページ・テーブルの使用は、変換技術の一例にすぎない。変換テーブルの階層を使用するものを含む他のアドレス変換スキームは、以下の発行物、即ち、各々の全体が引用により本明細書に組み入れられる非特許文献2及び非特許文献4に記載される。一例において、z/Architectureの場合、テーブルの階層は動的アドレス変換(DAT)テーブルと呼ばれ、Power ISAの場合、テーブルは基数(radix)テーブルと呼ばれる。
本明細書で説明される場合、同期能力は、ページ・テーブル・エントリの更新を同期させるために提供される。使用することができる、本明細書ではRCsyncと呼ばれる同期命令の一例が、図6を参照して説明される。1つの実装において、RCsync命令500は、同期操作を示す操作コード502a、502b;同期操作のタイプを示すために用いられるLフィールド504(例えば、L=3は、RCsync操作を示す);及び本実施形態では0である要素バリア(E)フィールド506を含む。他の実施形態においては、RCsync命令は、種々のsync操作のために使用される一般的なオペコードを有し、LフィールドによりRCsyncを指定するのではなく、独自のオペコードを有する。多くの変形が可能である。
例えばRCsyncを用いる同期論理の一実施形態が、図7を参照して説明される。一実施形態において、同期プロセスを開始するプロセッサであるローカル・プロセッサ、及び同期プロセスの開始に応答して処理を実行している1つ又は複数の遠隔プロセッサを含む複数のプロセッサが、この論理を実行している。
図7を参照すると、最初に、ローカル・プロセッサが、RCsync命令を開始し(ステップ600)、RCsync要求を1つ又は複数の遠隔プロセッサにブロードキャストする(ステップ602)。実施形態において、RCsync要求は、例として、同じ論理パーティション(LPAR)、仮想マシン(VM)、又は他のグループ内の全てのプロセッサ;同じアドレス空間を使用しているプロセッサ;又は、構成の全てのプロセッサにブロードキャストされる。1つの特定の例において、ブロードキャストが全てのプロセッサに送られる場合、これは、LPAR id、VM id、又は他の識別子と共に送られ、要求を受け取るプロセッサが、LPAR、VM、又は他のグループの一部ではない場合、プロセッサは、即座に完了を確認する。
要求をブロードキャストした後、ローカル・プロセッサは、RCsync処理を完了した遠隔プロセッサからの確認を待つ(ステップ604)。代替的な実施形態において、ローカル・プロセッサは、確認を連続的に受け取ったか又は所定の間隔で受け取ったかをチェックする。ローカル・プロセッサが、要求をブロードキャストした遠隔プロセッサから確認を受け取っていない場合(問い合わせ606)、ローカル・プロセッサは待ち続ける(ステップ604)。他の場合には、同期は完了し、このことは、インメモリ・ページ・テーブル・エントリが、キャッシュされたエントリ(例えば、TLB)内の変更(例えば、R/Cインジケータの更新)を反映させるように更新されたことを意味する(ステップ608)。
各遠隔プロセッサ上で、ローカル・プロセッサからRCsync要求を受信し(ステップ620)、全ての保留中の参照及び変更(R/C)更新要求にマーク付けする(ステップ622)。例えば、参照及び/又は変更更新が、キャッシュ(例えば、TLB)内で行われると、保留中の更新が、メモリへの最終的な書き込みのためにストア・キューに入れられる。(さらに別の実施形態において、保留中のR/C更新は、別個のR/C更新キュー内に格納される。)従って、RCsync要求を受信すると、キュー内で、RCsync要求に先行する各更新にマーク付けされ、メモリの保留中のアドレス変換キャッシュ更新のコミットが開始される。さらに、一実施形態において、マーク付けされたR/C更新要求の加速されたライトバックを処理する随意的なステップが実行される(ステップ624)。
更に別の実施形態において、RCsync要求の受信に応答して、マーク付けを実施する前に、保留中の更新のキューがない場合には、キューが作成され;及び/又は、キューが最新であることを確実にするように処理を行うことができる。
次いで、遠隔プロセッサは、ストア・キューの少なくとも1つのR/C更新がメモリ(例えば、PTE)に書き込まれるまで待つ(ステップ626)。代替的な実施において、遠隔プロセッサは、更新がメモリに書き込まれたかどうかを常にチェックする、又は所定の間隔でチェックすることができる。少なくとも1つのR/C更新がメモリに書き込まれた後、遠隔プロセッサは、全てのマーク付けされた更新がメモリに書き込まれたかどうかをチェックする(問い合わせ628)。全てのマーク付けされた更新がメモリに書き込まれていない場合(問い合わせ628)、プロセッサは待ち続ける(ステップ626)。他の場合には、遠隔RCsyncの完了を要求側、即ち、ローカル・プロセッサに示す(ステップ630)。
1つの代替的な実施形態において、技術は、ステップ622において、ストア又は他のキュー内のR/C更新エントリの数を求め、ステップ626において、カウントされたエントリの数が処理されるのを待つことができる。
更に別の代替的な実施形態においては、ステップ622において、ストア又は他のキューへの付加的なメモリ要求の生成が随意的に停止され、プロセッサは、RCsync要求の完了を示す前に、ステップ626において、ストア又は他のキューが空になるまで待つ。
上記に加えて、一実施形態において、ローカル・プロセッサはまた、同期を局所的に実施し、局所的にキャッシュされたページ・テーブル(例えば、ローカルTLB)内のあらゆる変更をメモリに(例えば、PTEのインメモリ・コピーに)書き出すことを確実にする。
例えばRCsyncを用いる同期論理の別の実施形態が、図8を参照して説明される。一実施形態において、同期プロセスを開始するプロセッサであるローカル・プロセッサ、及び同期プロセスの開始に応答して処理を実行している1つ又は複数のプロセッサを含む複数のプロセッサが、この論理を実行している。
図8を参照すると、最初に、ローカル・プロセッサが、RCsync命令を開始し(ステップ700)、RCsync要求を1つ又は複数の遠隔プロセッサ(例えば、システム又はそのサブセット内の遠隔プロセッサの全て)にブロードキャストする(ステップ702)。次いで、ローカル・プロセッサは、RCsync処理を完了した遠隔プロセッサからの確認を待つ(ステップ704)。代替的な実施形態において、ローカル・プロセッサは、確認を連続的に受け取ったか又は所定の間隔で受け取ったかをチェックする。ローカル・プロセッサが、要求をブロードキャストした全ての遠隔プロセッサから確認を受け取っていない場合(問い合わせ706)、ローカル・プロセッサは待ち続ける(ステップ704)。他の場合には、同期は完了する(ステップ708)。
各遠隔プロセッサ上で、ローカル・プロセッサからRCsync要求を受け取り(ステップ720)、ストア・キュー内の各々の実行中の(in-flight)R/C更新要求にマーク付けする代わりに、マーカーをストア・キュー内に配置し、キューがイン・オーダー式に処理されると仮定して、マーカーがキューの先頭に来ると、RCsyncの受信に先行する更新の全てが処理されたことが分かる(ステップ722)。
ページ・テーブルへのR/C更新の書き込みを開始することによって、キューが処理される(ステップ723)。さらに、一実施形態において、R/C更新要求の加速されたライトバックを処理する随意的なステップが実行される(ステップ724)。
更に別の実施形態において、RCsync要求の受信に応答して、マーク付けを実施する前に、保留中の更新のキューがない場合には、キューが作成され;及び/又は、キューが最新であることを確実にするように処理を行うことができる。
次いで、遠隔プロセッサは、マーカーがキューの前方即ち先頭に来るまで待つ(ステップ726)。マーカーがキューの先頭に来ることに基づいて、遠隔プロセッサは、遠隔RCsyncの完了を要求側(即ち、ローカル・プロセッサ)に示す(ステップ728)。
1つの代替的な実施形態において、技術は、ステップ722において、ストア又は他のキュー内のエントリの数を求め、ステップ726において、カウントされたエントリの数が処理されるのを待つことができる。
更に別の代替的な実施形態においては、ステップ722において、ストア又は他のキューへの付加的なメモリ要求の生成が随意的に停止され、プロセッサは、RCsync要求の完了を示す前に、ステップ726において、ストア又は他のキューが空になるまで待つ。
また、上記に加えて、一実施形態において、ローカル・プロセッサはまた、同期を局所的に実施し、局所的にキャッシュされたページ・テーブル(例えば、ローカルTLB)内のあらゆる変更をメモリに(例えば、PTEのインメモリ・コピーに)書き出すことを確実にする。
一態様において、RCsyncは、RCsync要求を受け取る予定の全ての遠隔ノード上で、保留中である遠隔参照及び変更(R/C)更新が完了したことを確実にする。1つの実施において、RCsyncが発行されると、RCsyncより前のメモリの状態に対応するR/C更新が完了される。RCsyncの完了後、各ページ・テーブル・エントリについて、RCsync時点又はその後のページ・テーブル・エントリの値を反映するページ・テーブル・エントリ更新のみが可能である。従って、ページ・テーブル・エントリが、RCsyncより前に読み取り専用に設定されたが、以前は書き込み可能であった場合、RCsyncは、ページ・テーブル・エントリ内のあらゆるCインジケータの設定を強制し、RCsyncの完了後、新しいPTE値がそれを禁じるため、Cインジケータへのそれ以上の変更は行われない。しかしながら、Cインジケータが、TLBにおいて、書き込みが行われたことを示すように設定された場合、TLBが無効化又は更新されるまで、TLBを用いる将来の書き込みは可能である。同様に、PTEが無効であるように設定された場合、RCsync操作の後、新しいPTE値がそれを禁じるため、R/C更新は行われない。
既存のメモリ・システムによると、キャッシュされたTLBエントリが、読み取りを可能にするキャッシュから書き込みを可能にするキャッシュに移行するとき、書き込み許可を有するTLBエントリを付加する前に、ページ・テーブル・エントリ(又は、その有効及び/又は書き込み許可)が読み取られ、更新される。従って、ひとたびインメモリPTEエントリが無効であるように及び/又は書き込み許可を有していないように更新されると、TLBエントリは、Cインジケータの更新をトリガしない。
RCsyncの使用の結果としてのストア操作及びキャッシュされたエントリの使用と関連した論理の一実施形態が、図9を参照して説明される。ストア操作の前又は後にRCsyncを実施することができ、従って、この論理は、RCsyncがいつ実施されるかに関係なく使用することができる。
図9を参照すると、最初に、プロセッサは、データをメモリ内の特定のページに書き込むストア命令を受け取る(ステップ800)。ストア命令の受信に基づいて、プロセッサは、変換ルックアサイド・バッファ(TLB)又は実効アドレス−実アドレス変換構造(ERAT)のような1つ又は複数のアドレス変換構造においてルックアップを実施し、ページに対応する変換エントリがキャッシュされたかどうかを判断する(ステップ802)。TLB及び/又はERATエントリのようなキャッシュ・エントリが存在する場合(問い合わせ804)、キャッシュ・エントリが、変更インジケータを更新されたものとして示し(例えば、C=1)、このページが以前に書き込まれていることを示すかどうかについてさらなる判断を行う(問い合わせ806)。変更インジケータが設定されている(C=1)場合、アドレス変換においてエントリを用いて、実アドレスを提供し(ステップ808)、処理はストアを続行する(ステップ810)。
しかしながら、問い合わせ804に戻ると、キャッシュ・エントリが存在しない場合、メモリから少なくとも1つの関連するページ・テーブル・エントリを取り出すことによって、現在のページ変換に対応するキャッシュ・エントリを作成する(ステップ814)。その後、最新の読み取り/書き込み状態を得るために、ページ・テーブル・エントリの妥当性及び書き込み許可をチェックする(ステップ816)。ページ・テーブル・エントリが有効であり、書き込み許可が与えられていると仮定すると、現在のページ変換に対応するキャッシュ・エントリ内の変更インジケータは、これを反映する(例えばC=1)(随意的に、TLBにおいて、参照インジケータ及び/又は他のインジケータも設定される)(ステップ818)。一実施形態において、書き込み更新をストア・キュー内に入力して、少なくともCビットを更新し、現在のページが修正されていることを示す(即ち、C=1)。
次いで、更新されたキャッシュ・エントリを1つ又は複数のキャッシュ(例えば、TLB及び/又はERAT)に付加し(ステップ820)、ステップ808において処理は続行する。しかしながら、上記の処理において、ページ・テーブル・エントリが無効であるか又は書き込み許可が与えられていない場合、ストアは続行せず、随意的に、エラーが提示される。
問い合わせ806に戻ると、キャッシュ・エントリが、変更インジケータを、書き込みについて設定済みとして示さない場合、キャッシュ・エントリを無効化(例えば、キャッシュ・エントリ内のVインジケータを0に設定する又はエントリを削除する)又は無視し(ステップ830)、処理はステップ814を続ける。
上記のストア処理に加えて、RCsync命令の前又は後に他の処理を行うこともできる。つまり、RCsyncの前又は後に、メモリ命令(例えば、ロード、ストア等)を発行することができる。1つの特定の例において、TLB又はERATエントリのようなキャッシュ・エントリのプリフェッチを可能にする実施において、論理を実行して、参照インジケータをチェックし、最初の使用時にキャッシュ・エントリの妥当性を確認する。他の実施形態においては、メモリ命令に対応するメモリ・アドレス変換を実施するために、最初の使用前にTLBエントリはプリフェッチされない。
メモリ命令を処理するための論理の一実施形態が、図10を参照して説明される。一例において、この論理は、参照インジケータを設定する(例えば、R=1)ことなく、キャッシュ・エントリ(例えば、TLBエントリ、ERATエントリ等)のプリフェッチが許容される場合に使用される。
図10を参照すると、最初に、プロセッサは、メモリの選択されたページにアクセスするためのメモリ命令を受け取る(ステップ900)。メモリ命令の受信に基づいて、プロセッサは、TLB又はERATのようなキャッシュ内のルックアップを実施し、アクセスされるページに対応するアドレス変換が以前にキャッシュされているかどうかを判断する(ステップ902)。アクセスされるメモリのページに対応するエントリがキャッシュ内に存在する場合(問い合わせ904)、参照インジケータが、このページに以前アクセスされたことを示すように更新されることを(例えば、R=1に)、キャッシュ・エントリが示すかどうかについてさらなる判断を行う(問い合わせ906)。キャッシュ・エントリが、参照インジケータが設定されることを示す場合、キャッシュ・エントリを用いてアドレス変換を行い、メモリ・アクセスのために使用される実アドレスを計算する(ステップ908)。次に、処理はメモリ命令を続ける(ステップ910)。
問い合わせ904に戻ると、キャッシュ・エントリが存在しない場合、メモリから関連するページ・テーブル・エントリを取り出すことによって、キャッシュ・エントリを作成する(ステップ914)。その後、ページ・テーブル・エントリの妥当性を、及び随意的に、最新の状態を得るために、メモリ命令がストア命令である場合には書き込み許可をチェックする(ステップ916)。ページ・テーブル・エントリが有効であると仮定すると、参照インジケータ(及び随意的に、変更インジケータ及び/又はページ・テーブル・エントリの他のインジケータ)を更新する(例えば、R=1に)(ステップ918)。少なくとも1つの実施形態において、書き込み更新をストア・キューに入力して、少なくともRビットを更新し、現在のページが修正されていることを示す(即ち、R=1)。別の実施形態において、ストア操作が行われることに応答して、C=1を同時に更新することもできる。
次に、現在のページ・アドレスについてのアドレス変換に対応する更新されたキャッシュ・エントリを、1つ又は複数のキャッシュ(例えば、TLB及び/又はERAT)に付加し、参照インジケータ(及び/又は随意的に1つ又は複数の他のインジケータ)を、更新されたものとして示す(ステップ920)。次に、処理はステップ908に進む。しかしながら、上記の処理において、ページ・テーブル・エントリが無効である場合、メモリ命令は続行せず、随意的に、エラーが提示される。
問い合わせ906に戻ると、キャッシュ・エントリが、参照インジケータを設定されたものとして示さない場合、キャッシュ・エントリは無効化又は無視され(ステップ930)、処理はステップ914に続く。
メモリ命令の処理と関連した論理の別の実施形態が、図11を参照して説明される。一例において、参照インジケータを設定する(例えば、R=1に)ことなく、キャッシュ・エントリ(例えば、TLBエントリ、ERATエントリ等)のプリフェッチが許容される場合、この論理が用いられる。
図11を参照すると、最初に、プロセッサは、メモリの選択されたページにアクセスするためのメモリ命令を受け取る(ステップ1000)。メモリ命令の受信に基づいて、プロセッサは、TLB又はERATのようなキャッシュ内のルックアップを、アクセスされるページが以前にキャッシュされたどうかを判断する(ステップ1002)。アクセスされるメモリのページに対応するエントリがキャッシュ内に存在する場合(問い合わせ1004)、参照インジケータが、このページに以前アクセスされたことを示すように更新されることを(例えば、R=1に)を、キャッシュ・エントリが示すかどうかについてさらなる判断を行う(問い合わせ1006)。キャッシュ・エントリが、参照インジケータが設定されることを示す場合、キャッシュ・エントリを用いてアドレス変換を行い、メモリ・アクセスのために使用される実アドレスを計算する(ステップ1008)。次に、処理はメモリ命令を続ける(ステップ1010)。さらに、一実施形態において、必要に応じて、操作が検証される(ステップ1012)。
問い合わせ1004に戻ると、キャッシュ・エントリが存在しない場合、メモリから関連するページ・テーブル・エントリを取り出すことによって、キャッシュ・エントリを作成する(ステップ1014)。その後、ページ・テーブル・エントリの妥当性を、及び随意的に、最新の状態を得るために、メモリ命令がストア命令である場合には書き込み許可をチェックする(ステップ1016)。ページ・テーブル・エントリが有効であると仮定すると、参照インジケータ(及び随意的に、変更インジケータ及び/又はページ・テーブル・エントリの他のインジケータ)を更新する(例えば、R=1に)(ステップ1018)。
次に、更新されたキャッシュ・エントリを、1つ又は複数のキャッシュ(例えば、TLB及び/又はERAT)に付加し、参照インジケータ(及び/又は、随意的に、1つ又は複数の他のインジケータ)を、更新されたものとして示す(ステップ1020)。次に、処理はステップ1008に続く。しかしながら、上記の処理において、ページ・テーブル・エントリが無効である場合、メモリ命令は続行せず、随意的に、エラーが提示される。
問い合わせ1006に戻ると、キャッシュ・エントリが参照インジケータを更新されたものとして示さない場合、ページ・テーブル・エントリは、検証で用いられるようにメモリから取り出され、この検証は、ページ・エントリの同時検証(concurrent validation)と並行して処理ステップを行うためにキャッシュされたエントリを用いるステップ1008及び1010の1つ又は複数と並行して進む(ステップ1030)。例えば、キャッシュ・エントリが、参照インジケータを更新されたものとして示さない場合、プロセッサは、並行検証(ステップ1014、1016、1018、1020を包含する)を開始し、ステップ1008及びステップ1010を並行して実行する。次に、これが有効なエントリであった場合、処理を検証すべきである(即ち、ステップ1008及び1010で行われた作業は、完了することが許可されるべきである)。次に、処理はステップ1012に続き、そこで、ステップ1002において配置されたキャッシュされたエントリがイネーブルにされる場合、操作が検証される。
1つ又は複数の態様によると、プロセッサは、同期操作を実行し、保留中のページ・テーブル・エントリの更新をいつかは強制する。つまり、弱く順序付けられた(weakly ordered)メモリ・システムにおいて、ページ・テーブル・エントリは、最終的に更新することはできるが、更新される時間に関する保証がない。従って、同期処理は、同期命令の受信に基づいて更新を強制する。さらに、1つの実施において、更新は、個々のキャッシュ及び/又はページ・テーブル・エントリの無効化を要求することなく、行われる。
例として、再構成などのメモリ・ページ上で行われる一括操作、メモリ・ページのフリー・リストの管理、及びプロセスが終了するときのティアダウン(teardown)の実施を含む、こうした同期プロセスを使用することができる多くの状況がある。同期を行って、ページ・テーブル・エントリの更新を強制し、従って、全てのエントリを無効化するのではなく、例えば無効化される(例えば、C=1)エントリにおける選択性を提供する。
図12を参照して説明されるように、同期操作を用いることができる1つの例示的な状況は、アドレス空間の再構成である。図12を参照すると、最初に、ローカル・プロセッサが、RCsync操作を発行して、あらゆる保留中のR/C更新(又は他の例では、他の状況の更新)でのページ・テーブル・エントリの更新を強制する(ステップ1100)。その後、本明細書で説明されるように、RCsync命令を実行しているローカル・プロセッサからRCsync要求を受け取る各遠隔プロセッサが、同期操作を行う。進行中のRCsync操作(ステップ1100)と並行して、ローカル・プロセッサは、各遠隔プロセッサに、例えば、TLBIEL命令又はローカルIPTE命令(例えば、ローカルTLBクリア・ファシリティがインストールされ、MフィールドにおけるLCビットが1である場合のIPTE命令)を用いて、遠隔プロセッサに対応する1つ又は複数のキャッシュ内の複数のページ・テーブル・エントリの一括操作無効化を行うことを要求する(ステップ1102a〜1102c)。例として、エントリの無効化は、エントリ内の有効インジケータを特定の値(例えば、V=0)に設定すること、エントリを削除すること、又は他の方法でエントリを使用不能にすること等を含む。
ローカル・プロセッサが要求する遠隔RCsync操作の完了に続いて、各遠隔プロセッサは、それぞれの遠隔プロセッサ上のローカル無効化が完了したかどうかに関係なく、RCsync操作の完了を示す表示をローカル・プロセッサに送る(ステップ1103)。ローカル・プロセッサが、遠隔プロセッサがRCsync同期操作を完了したとの表示を受信することに基づいて、ローカル・プロセッサは、アドレス空間の再構成を続行して、メモリ内の1つ又は複数のページ・テーブル・エントリを、再構成されたアドレス空間の状態を反映させるように更新し、プロセッサのキャッシュ・エントリ上でローカル無効化操作を実施し(ステップ1104)、再構成前のアドレス空間に対応するC=古くなったキャッシュ・エントリが、ローカル・プロセッサ上に格納されないことを保証する。遠隔プロセッサが無効化を完了すると、遠隔プロセッサは、例えばステップ1106を介して、アドレスの再構成の完了を待つ。その後、ローカル及び遠隔プロセッサ上で、実行を再開することができる(ステップ1106)。一実施形態においては、RCsyncを実行することにより、ローカル・プロセッサは、遠隔プロセッサ上のローカル無効化が完了するまで待つ必要はないが、代わりに、遠隔プロセッサがRCsync同期処理を完了したという表示を受け取った後、並行して続行することができ、従って、1つ又は複数の態様によれば、メモリ内に含まれるページ・テーブル・エントリは、最新の状態のR及びC状態インジケータ、並びに、随意的に、遠隔プロセッサにより更新され、RCsyncで同期することができるPTE内に含まれる他の情報を含む。
1つの特定の例において、同期操作を用いて、アドレス空間を、読み取り専用アドレス空間に対応するように再構成することができる。一実施形態によると、書き込まれたページは既知であるので、それらを追跡し、ディスクに書き込むこと等が可能である。具体的な例において、アドレス空間は、パーティション・マイグレーション(partition migration)のような技術及びコピー・オン・ライト(copy-on-write)技術において、読み取り専用にされる。コピー・オン・ライトは、例えば、Unixオペレーティング・システムにおけるfork()操作並びに他の操作において用いられる。1つのこうした実施形態において、コピー・オン・ライトは、大きなメモリ領域を、こうした領域に対応する全てのメモリ・ページの複製と関連した長い初期待ち時間を生じさせることなくコピーするために用いられる。例えば、コピー・オン・ライト技術は、一例として、メモリ全体を読み取り専用にし、複数のプロセスがメモリ・ページを共有することを可能にする。次に、特定のプロセスが、メモリ空間のコピーの特定のページへの書き込みを望むとき、システムが機能し、プロセスによりそうしたページへの書き込みに進むのを可能にする前に、そのページのコピー・オン・ライト・コピーを実施し、そのページを書き込み可能にする。
ページを読み取り専用にするための論理の一実施形態が、図13を参照して説明される。一例において、ローカル・プロセッサ(即ち、アドレス空間を読み取り専用にしたいと望むプロセッサ)は、読み取り専用にされるメモリ・ページに対応するページ・テーブル・エントリを更新して、読み取り専用を指示し(ppとマーク付けされた図5のページ保護ビット、即ちページ・テーブル・エントリの第2のダブルワードのビット0、62及び63を、対象ページへの書き込みを許可しないように設定する)(ステップ1200)、次に、RCsyncのような同期操作を実行して、RCsync操作を発行する時点まで更新が実行中であり得る全ての参照及び変更インジケータを同期させる(例えば、強制する)(ステップ1202)。
上述のように、遠隔プロセッサは、RCsync操作を受け取り、これを処理し(ステップ1204)、完了を指し示す(ステップ1206)。他の遠隔処理も続行する(ステップ1208)。
ローカル・プロセッサは、完了の表示を受け取り、遠隔プロセッサにより同期操作が完了した後、ローカル・プロセッサは、遠隔格納されたページ(例えば、C=1を有するもの)の正確なリストを有する。さらに、ページ・テーブル・エントリは読み取り専用に設定されたので、遠隔プロセッサは、ストア操作のために新しいページを使用することができず、従って、例えば図9に説明される変更インジケータ・チェック技術は機能しない。
今やローカル・プロセッサは、変更設定(set change)インジケータを有する(例えば、C=1)ページ・テーブル・エントリに対応するアドレス変換キャッシュ・エントリを無効化する(ステップ1210)。例えば、ローカル・プロセッサは、それ自体のローカル・エントリを無効化し、表示を遠隔プロセッサにブロードキャストし、遠隔プロセッサに、各自のキャッシュされたエントリを無効化するように指示する。これらのキャッシュされたページ・テーブル・エントリは、ステップ1200における更新の後、遠隔プロセッサにより依然として書き込み更新され得る全てのページに対応し(他のページに格納しようとする試みにより、図9の技術が機能しなくなるので)、全てのページ・テーブル・エントリにおける正確なR/C情報の存在なしに無効化しなければならない場合よりも少ないページのセットを表す。これらのキャッシュされたページ・テーブル・エントリは、例えば無効化されるページのリストに応答してTLBIEL命令又はローカルIPTE命令を用いる、各遠隔プロセッサ上のソフトウェアにより調整されるローカル・キャッシュ無効化と併せて、TLBIE又はIPTEのようなグローバル・ハードウェア無効化命令のブロードキャスト、又は、単一の一括無効化要求をブロードキャストすること(例えば、プロセッサ間割り込みファシリティを用いた)を含むソフトウェア・シーケンスのいずれかを用いて、無効化することができる。さらに、変更設定インジケータを有するページは、ページをディスクに書き込むなど、処理される。
別の実施形態において、ステップ1200に対応する第1のページ・テーブル・エントリ更新ステップは、RCsyncを実施する前に無効にされる全てのページ・テーブル・エントリを更新し、第2の処理ステップ1210は、ページ・テーブル・エントリを更新して読み取り専用にし、RCsyncに応答して遠隔プロセッサにより実施されるページ・テーブル・エントリの同時更新をさらに同期させる。
ページを読み取り専用にするための論理の一実施形態が、図14を参照して説明される。一例において、ローカル・プロセッサ(即ち、アドレス空間を読み取り専用にしたいと望むプロセッサ)は、RCsync命令のような第1の同期操作を遠隔プロセッサに発行する(ステップ1300)。上述のように、遠隔プロセッサは、同期操作を受け取り、それを処理し(ステップ1302)、次いで、完了を示す表示を送る(ステップ1304)。さらに、遠隔プロセッサにおける処理が続行する(ステップ1305)。(別の実施形態においては、図13に示されるように、この第1の同期操作は実施されない。)
遠隔プロセッサから、同期操作の完了表示を受け取ることに基づいて、ローカル・プロセッサは、読み取り専用にされるメモリ・ページに対応するページ・テーブル・エントリを更新して読み取り専用を指示すると共に、上述のように変更設定インジケータを有する(例えば、C=1)キャッシュ・エントリを無効化し、それらのページについての処理をスケジューリングする(ステップ1306)。修正されたページの処理の一実施形態において、修正されたページが、外部ストレージ(例えば、ハード・ディスク又はフラッシュ・メモリなど)に書き込まれる。その後、ローカル・プロセッサにより、RCsyncのような第2の同期操作が発行され、第2のRCsync操作の発行時点まで実行中であった、最初のRCsync(ステップ1300)以来行われた全ての残りのページ・テーブルのR及びC状態更新を同期させる(例えば、強制する)(ステップ1308)。
上述のように、遠隔プロセッサは、RCsync操作を受け取り、これを処理し(ステップ1310)、完了を示す(ステップ1311)。他の遠隔処理も続行する(ステップ1312)。遠隔プロセッサにより、第2の同期操作が完了された後、ローカル・プロセッサは、遠隔格納されたページ(例えば、C=1)の正確なリストを有する。さらに、ページ・テーブル・エントリは読み取り専用に設定されたので、遠隔プロセッサは、ストアのために新しいページを使用することができず、従って、変更インジケータ・チェック技術は機能しない。
本明細書で説明されるように、ローカル・プロセッサは、変更設定インジケータを有する(例えば、C=1)キャッシュ・エントリを無効化する(ステップ1314)。1つ又は複数の態様によると、この第2の処理ステップ(ステップ1314)は、第1のRCsyncと第2のRCsyncとの間で修正されたあらゆるページの処理に対応する。この実施形態において、更新の大部分は、ステップ1306の間に開始することができ、無効化及び他の処理(外部ストレージへの修正されたページの書き込みに対応するI/O操作など)が、RCsyncの処理と重複することがある(1308)。さらに、変更設定インジケータを有するページが、ページをディスクに書き込むなど、処理される。
さらに、無効化要求のハードウェア・ブロードキャストと併せてTLBIE又はIPTEを実行することによって、又は、ローカル及び遠隔プロセッサの各々で実行されるソフトウェアにより同期されるローカル無効化によって、無効化を実施することができる。
少なくとも1つの代替的な実施形態において、ステップ1306は、有効インジケータを無効に設定することによって無効化されるインメモリ・ページ・テーブル・エントリを示し、第2のステップ1314は、例えば、ページ・テーブル・エントリ更新をさらに同期するために、ページ・テーブル・エントリを読み取り専用状態に更新する。
ページを読み取り専用にする他の実施形態において、最初にページ・テーブル・エントリを無効化し、次に、エントリを読み取り専用にマーク付けすることができる。
同期操作の別の使用は、メモリ・ページのフリー・リストを更新することである。仮想メモリを使用するシステムにおいて、オペレーティング・システムは、例として、ページがページインされるとき、バッファが割り当てられるとき、又はアプリケーションにより新しいページが要求されるときに使用されるメモリ・ページのフリー・リストを保持することになる。フリー・リストを保持する目的は、殆ど使用されないページをフリー・リストに入れることである。従って、オペレーティング・システムは、R=0を有するページを探すか、又はより細かい粒子の処理についての付加的な参照情報を調べる。一実施形態において、付加的な情報は、最後の参照(例えば、ページへの読み取り又は書き込みアクセス)のタイムスタンプ、又は、複数のタイム・スライスの各々において参照が行われるかどうかを示すビット・ベクトルに対応し、ビット・ベクトルの各ビットが1つのそうしたスライスに対応する。
フリー・リストを管理するために同期操作を用いる一実施形態が、図15を参照して説明される。最初に、ローカル・プロセッサ(例えば、フリー・リストを管理しているプロセッサ)は、最新の情報を得るために、RCsyncのような第1の同期操作を発行する(ステップ1400)。上述のように、同期要求を受け取る遠隔プロセッサは、それを処理し(ステップ1402)、次に、完了を示す(ステップ1404)。さらに、遠隔処理が続行する(ステップ1406)。(別の実施形態においては、この第1の同期操作は実施されない。)
同期操作を実施する予定だった遠隔プロセッサの全てから完了表示を受け取ることに基づいて、ローカル・プロセッサは、多数のタスクを実施する(ステップ1408)。これらのタスクは、例えば、参照インジケータが設定されない(例えば、R=0)ページのような、フリー・リストについての1つ又は複数のページを識別し;随意的に、変更インジケータが設定される(例えば、C=1)場合、ディスク書き込みについて1つ又は複数のページをスケジューリングし;ページ・テーブル・エントリ内の1つ又は複数のページを無効に設定し(又は、それらをフリー・リストにあるものとしてマーク付けする);及び/又は本明細書に説明されるように(例えば、IPTE、TLBIEを用いて)無効化する必要があるページに対応するあらゆるキャッシュ・アドレス変換エントリに対して無効化を実施することを含む。
その後、ローカル・プロセッサは、RCsyncのような第2の同期操作を遠隔プロセッサに発行する(ステップ1410)。遠隔プロセッサは、第2の同期操作を処理し(ステップ1412)、完了を示す(ステップ1414)。さらに、他の遠隔処理が続行する(ステップ1416)。
同期操作を実施する予定の遠隔プロセッサにより、同期操作が完了された後、ローカル・プロセッサは、遠隔使用されるページの正確なリストを有する。今やローカル・プロセッサは、本明細書で説明されるように、変更設定又は参照インジケータを有する(例えば、C=1又はR=1)ページ・テーブル・エントリ及び/又はキャッシュ・エントリだけを無効化する(ステップ1418)。これは、第1の同期操作から第2の同期操作へと変化したページのクリーンアップである。一実施形態において、1つ又は複数のプロセッサにより参照され、1つ又は複数の変換キャッシュ内にある可能性が高いことが分かっているページだけを無効化する必要があり、それにより、ページ無効化の必要性が低減される。さらに、変更設定インジケータを有するページが、ページをディスクに書き込むなど、処理される。
同期処理が用いられる別の例は、プロセスが終了するときに行われるプロセス・ディアダウンにおけるものである。プロセス・ティアダウンにおいて、このプロセスが唯一のユーザである場合、そのプロセスのページの全てが無効化される又はフリー・リスト上に載せられる。また、プロセス・ティアダウンにおいて、ページがライトバックされる場合、ライトバック処理が開始される。
プロセス・ティアダウンを実施するために同期操作を用いる一実施形態が、図16を参照して説明される。最初に、ローカル・プロセッサ(例えば、プロセス・ティアダウンを実施しているプロセッサ)は、最新の情報を得るために、RCsyncのような第1の同期操作を発行する(ステップ1500)。上述のように、同期要求を受け取る遠隔プロセッサは、それを処理し(ステップ1502)、次に、完了を示す(ステップ1504)。さらに、遠隔処理が続行する(ステップ1506)。(別の実施形態においては、この第1の同期操作は実施されない。)
同期操作を実施する予定だった遠隔プロセッサの全てから完了の表示を受け取ることに基づいて、ローカル・プロセッサは、多数のタスクを実施する(ステップ1508)。これらのタスクは、例えば、プロセスの各ページについて、ページがプロセスにおいてのみ使用される場合、ページを無効に設定し;随意的に、本明細書に説明されるように(例えば、IPTE、TLBIEを用いて)無効化する必要があるあらゆるページについてのキャッシュされたアドレス変換の無効化を実施し;及びページがディスクにライトバックされる場合、ライトバック操作を開始することを含む。
その後、ローカル・プロセッサは、RCsyncのような第2の同期操作を遠隔プロセッサに発行する(ステップ1510)。遠隔プロセッサは、第2の同期操作を処理し(ステップ1512)、完了を示す(ステップ1514)。さらに、他の遠隔処理が続行する(ステップ1516)。
同期操作を実施する予定の遠隔プロセッサにより同期操作が完了された後、ローカル・プロセッサは、遠隔使用されるページの正確なリストを有する。今やローカル・プロセッサは、本明細書で説明されるように、変更設定又は参照インジケータを有する(例えば、C=1又はR=1)ページ・テーブル・エントリ及び/又はキャッシュ・エントリだけを無効化する(ステップ1518)。これは、第1の同期操作から第2の同期操作へと変化したページのクリーンアップである。さらに、変更設定インジケータを有するページが、ページをディスクに書き込むなど、処理される。
ページ・テーブル・エントリについての最新の状態情報を得るために多数の技術が使用できる同期能力が、本明細書に詳細に説明される。一例において、同期操作は、マルチプロセッサ・システムにおけるRCsyncの実行が完了する前に行われたページ・テーブル・エントリの動的に更新された部分の全ての更新を確実にするRCsync命令を使用する。一実施形態において、単一のRCsyncにより全てのタイプの更新が完了したことが保証され、別の実施形態においては、RCsyncは、特定のフィールドを指定するために(例えば、Cフィールドを更新するが、Rは更新しない等)、付加的なパラメータを提供する。多くの変形が可能である。
更に別の実施形態において、命令のシーケンスを実行することによって、及び/又は、1つ又は複数の制御レジスタを書き込むことによって、RCsyncを指し示すことができる。他の変形も可能である。
一実施形態において、RCsyncは、単一の命令を用いて、キャッシュ・エントリを無効化することなく(即ち、キャッシュ・エントリが有効なままでいることを可能にしながら)、RCsyncを受け取るときに識別されるキャッシュ・エントリ内の保留中の更新に基づいて、更新されるべき全てのページ・テーブル・エントリを更新する。
最新のR/Cインジケータを受け取るための現在の手法は、PTEごとの無効化(例えば、TLBIE)を必要とする。しかしながら、1つ又は複数の態様によれば、単一のブロードキャストが、R/C(及び/又は他のPTE状態情報)を更新し、処理を加速することができる。例えば、各遠隔プロセッサへの単一のラウンドトリップ(round trip)において、RCsyncの実施前に保留中である全てのR/C更新が、メモリにコミットされる。この同期処理は、ローカルTLBの無効化を実施するために単一のソフトウェア要求を用いるプロセッサ間割り込み(interprocessor interrupt、IPI)ベースのTLB無効化と併せて用いることができる。
1つ又は複数の態様によると、延期されたR/C更新を有する弱く順序付けられたメモリを備えるコンピューティング環境(即ち、いずれかの特定の時間内に更新が保証されないという点で、コヒーレントな更新なしに構成されたコンピューティング環境)が、例えば、一括降格(デモート)、無効化等を局所的に実施するのを可能にする同期プロセスが提供される。
本明細書における多数の例においては、ページ・テーブルが更新されるが、1つ又は複数の態様は、他のアドレス変換構造にも適用できる。さらに、ページ以外の他のメモリのユニットにアクセスし、及び/又はそこに格納することができる。ページ及びページ・テーブルの使用は例にすぎない。さらに、メモリのページは、4K、又は4Kを上回る若しくは下回るなど、いずれのサイズであってもよい。
図17を参照すると、一例において、コンピュータ・プログラム1600が、例えば、1つ又は複数の実施形態を提供し、容易にするように、コンピュータ可読プログラム・コード手段、論理及び/又は命令1604をその上に格納するための1つ又は複数の非一時的コンピュータ可読ストレージ媒体1602を含む。
本発明は、システム、方法、及び/又はコンピュータ・プログラムとすることができる。コンピュータ・プログラムは、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:即ち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラム可能読み取り専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令が記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って伝搬される電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク及び/又は無線ネットワークなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、又は、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態除法を用いて、電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラムのフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラムの可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
上記に加えて、1つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって供与、提供、配備、管理、サービス等を行うことができる。例えば、サービス・プロバイダは、1又は複数の顧客のために1つ又は複数の態様を実施するコンピュータ・コード及び/又はコンピュータ・インフラストラクチャの作成、保守、サポート等を行うことができる。見返りに、サービス・プロバイダは、例として、予約申し込み及び/又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、1又は複数の第三者に対する広告内容の販売から支払いを受けることができる。
一態様において、1つ又は複数の実施形態を実施するために、アプリケーションを配備することができる。一例として、アプリケーションの配備は、1つ又は複数の実施形態を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配備することができ、そこでは、コードは、コンピューティング・システムと協働して、1つ又は複数の実施形態を実施することができる。
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、プロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、1つ又は複数の実施形態を含む。コードは、コンピュータ・システムと協働して、1つ又は複数の実施形態を実施することができる。
種々の実施形態が上述されたが、これらは例にすぎない。例えば、1つ又は複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することもできる。さらに、異なる命令、命令形式、命令フィールド、及び/又は命令の値を使用することができる。さらに、他の方法で同期を実施することもできる。多くの変形が可能である。
さらに、他のタイプのコンピューティング環境の利益を得、これを使用することができる。一例として、プログラム・コードを格納及び/又は実行するのに適しており、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも2つのプロセッサを含む、データ処理システムを使用することができる。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含む。
入力/出力即ちI/Oデバイス(これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サムドライブ及び他のメモリ媒体等)は、直接システムに結合することもでき、又は介在するI/Oコントローラを介してシステムに結合することができる。ネットワーク・アダプタをシステムに結合させて、データ処理システムが、介在する私的ネットワーク又は公衆ネットワークを通じて他のデータ処理システム又は遠隔プリンタ若しくはストレージ・デバイスに結合できるようにすることもできる。モデム、ケーブル・モデム及びイーサネット・カードは、ネットワーク・アダプタの利用可能なタイプのうちのほんの数例である。
更に別の実施形態において、1つ又は複数の態様は、クラウド・コンピューティングに関する。本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で述べられる教示の実装は、クラウド・コンピューティング環境に限定されるものではないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と併せて実装することができる。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つの配備モデルを含むことができる。
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービス・モデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
配備モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図18を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示される。クラウド・コンピューティング・ノード6010は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対するいずれかの制限を示唆することを意図するものではない。上記に関係なく、クラウド・コンピューティング・ノード6010は、本明細書で上述された機能のいずれかを実装及び/又は実施することができる。
クラウド・コンピューティング・ノード6010には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、コンピュータ・システム/サーバ6012が存在する。コンピュータ・システム/サーバ6012と共に用いるのに好適な周知のコンピューティング・システム、環境、及び/又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
コンピュータ・システム/サーバ6012は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ6012は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体に配置することができる。
図18に示されるように、クラウド・コンピューティング・ノード6010のコンピュータ・システム/サーバ6012は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ6012のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット6016、システム・メモリ6028、及びシステム・メモリ6028を含む種々のシステム・コンポーネントをプロセッサ6016に結合するバス6018を含むことができる。
バス6018は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの1つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture、MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及びPeripheral Component Interconnect(PCI)バスを含む。
コンピュータ・システム/サーバ6012は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ6012がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
システム・メモリ6028は、ランダム・アクセス・メモリ(RAM)6030及び/又はキャッシュ・メモリ6032など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ6012は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には「ハードドライブ」と呼ばれる)との間の読み出し及び書き込みのために、ストレージ・システム6034を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)との間の読み出し及び書き込みのための磁気ディスク・ドライブと、CD−ROM、DVD−ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス6018に接続することができる。以下でさらに示され説明されるように、メモリ6028は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組(例えば、少なくとも1つ)を有する少なくとも1つのプログラムを含むことができる。
限定ではなく例として、メモリ6028内に、プログラム・モジュール6042の組(少なくとも1つ)を有するプログラム/ユーティリティ6040、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール6042は、一般に、本明細書で説明される本発明の実施形態の機能及び/又は方法を実行する。
コンピュータ・システム/サーバ6012は、キーボード、ポインティング・デバイス、ディスプレイ6024等のような1つ又は複数の外部デバイス6014;ユーザがコンピュータ・システム/サーバ6012と対話することを可能にする1つ又は複数のデバイス;及び/又はコンピュータ・システム/サーバ6012が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)と通信することもできる。このような通信は、入力/出力(I/O)インターフェース6022を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ6012は、ネットワーク・アダプタ6020を介して、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)、及び/又はパブリック・ネットワーク(例えば、インターネット)などの1つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ6020は、バス6018を介して、コンピュータ・システム/サーバ6012の他のコンポーネントと通信する。図示されないが、コンピュータ・システム/サーバ6012と共に他のハードウェア及び/又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、RAIDシステム、テープドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
ここで図19を参照すると、例示的なクラウド・コンピューティング環境6050が示される。示されるように、クラウド・コンピューティング環境6050は、例えば携帯情報端末(PDA)又は携帯電話6054A、デスクトップ・コンピュータ6054B、ラップトップ・コンピュータ6054C、及び/又は自動車コンピュータ・システム6054Nなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード6010を含む。ノード6010は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境6050は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを提供することが可能になる。図26に示されるコンピューティング・デバイス6054A−Nのタイプは単に例示であることを意図し、コンピューティング・ノード10及びクラウド・コンピューティング環境6050は、いずれのタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続上でも(例えば、ウェブ・ブラウザを用いて)、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
ここで図20を参照すると、クラウド・コンピューティング環境6050(図19)によって提供される機能抽象化層の組が示される。図20に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層6060は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、IBMzSeriesシステムを一例とするメインフレームと、IBM pSeriesシステムを一例とするRISC(Reduced Instruction Set Computer)アーキテクチャ・ベースのサーバと、IBM xSeriesシステムと、IBM BladeCenterシステムと、ストレージ・デバイスと、ネットワーク及びネットワーク・コンポーネントと、が含まれる。ソフトウェア・コンポーネントの例として、IBM WebSphereアプリケーション・サーバ・ソフトウェアを一例とするネットワーク・アプリケーション・サーバ・ソフトウェアと、IBM DB2データベース・ソフトウェアを一例とするデータベース・ソフトウェアとが含まれる。(IBM、zSeries、xSeries、BladeCenter、WebSphere、及びDB2は、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。)
仮想化層6062は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる。
一例においては、管理層6064は、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。1つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
ワークロード層6066は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、及びトランザクション処理が含まれる。
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
以下の特許請求の範囲に存在する場合、「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求要素と共に機能を実行するための任意の構造、材料、又は行為を含むことを意図したものである。本発明の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。
100、200:コンピューティング環境
102:プロセッサ
104、230:メモリ管理ユニット(MMU)
105、231、311:アドレス変換構造
106、110、232:キャッシュ
107、234:同期ユニット
112、212:入力/出力(I/O)サブシステム
114:外部I/Oデバイス
202:中央プロセッサ・コンプレックス(CPC)
208:プロセッサ・メモリ
210:中央プロセッサ
212:入力/出力(I/O)サブシステム
214:仮想マシン(又は論理パーティション)
216、220:プロセッサ・ファームウェア
218:ハイパーバイザ
222:アプリケーション
224:オペレーティング・システム
302:ネイティブ中央処理ユニット
304:メモリ
310:ネイティブ・レジスタ
312:エミュレータ・コード
350:ゲスト命令
354:命令変換ルーチン
360:エミュレーション制御ルーチン
400:ページ・テーブル・エントリ
500:RCsync命令
1600:コンピュータ・プログラム

Claims (15)

  1. コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・プログラムであって、
    第1のプロセッサにより、第2のプロセッサから、メモリ内に位置するアドレス変換構造の1つ又は複数のエントリの1つ又は複数の状態インジケータの保留中の更新をコミットするように前記第1のプロセッサに指示する同期要求を受信することと、
    前記第1のプロセッサにより、前記同期要求の受信に基づいて、同期操作を実施して、前記1つ又は複数の状態インジケータの前記保留中の更新をコミットすることと、
    前記同期操作の完了に基づいて、前記第1のプロセッサにより、完了を前記第2のプロセッサに示すことと、
    を含む、コンピュータ・プログラム。
  2. 前記1つ又は複数の状態インジケータは、変更インジケータと関連したメモリのユニットが更新されたかどうかを示す変更インジケータ、又は参照インジケータと関連した前記メモリのユニットにアクセスされたかどうかを示す参照インジケータのうちの少なくとも1つを含む、請求項1に記載のコンピュータ・プログラム。
  3. 前記メモリのユニットはメモリのページを含み、前記アドレス変換構造はページ・テーブルを含み、前記変更インジケータ及び前記参照インジケータは、前記メモリのページに対応するページ・テーブル・エントリ内に位置する、請求項2に記載のコンピュータ・プログラム。
  4. 前記1つ又は複数の状態インジケータの前記保留中の更新をコミットすることは、前記第1のプロセッサにより、前記第1のプロセッサのローカル構造内の前記変更インジケータ又は前記参照インジケータの変更値の少なくとも1つに基づいて、前記アドレス変換構造内の前記変更インジケータ又は前記参照インジケータのうちの少なくとも一方を更新することを含む、請求項2に記載のコンピュータ・プログラム。
  5. 前記第1のプロセッサにより前記同期要求を受信することは、前記第2のプロセッサによる同期命令の発行に基づく、請求項1に記載のコンピュータ・プログラム。
  6. 前記同期操作を実施することは、
    前記第1のプロセッサのキューにおける、前記1つ又は複数の状態インジケータについての1つ又は複数の保留中の更新要求にマーク付けすることと、
    前記キュー内の前記マーク付けされた1つ又は複数の保留中の更新要求に基づいて、前記アドレス変換構造の1つ又は複数のエントリを更新することと、
    を含む、請求項1に記載のコンピュータ・プログラム。
  7. 前記同期操作を実施することは、
    前記同期要求の受信に基づいて、キュー内にマーカーを配置することであって、前記キューは、前記マーカーより前の、前記1つ又は複数の状態インジケータに対する1つ又は複数の保留中の更新要求を含む、配置することと、
    前記マーカーより前の、前記キュー内の前記1つ又は複数の保留中の更新要求に基づいて、前記アドレス変換構造の1つ又は複数のエントリを更新することであって、前記同期操作の完了は、前記マーカーの到達に基づいて示される、更新することと、
    を含む、請求項1に記載のコンピュータ・プログラム。
  8. 前記コンピューティング環境は、特定の時間内に前記アドレス変換構造の更新が保証されないという点で、前記アドレス変換構造の非コヒーレントな更新のために構成される、請求項1に記載のコンピュータ・プログラム。
  9. 前記同期要求を受信することは、同期を実施し、完了の表示を送るために、複数のプロセッサにより、前記同期要求を受信することを含む、請求項1に記載のコンピュータ・プログラム。
  10. 前記複数のプロセッサは、選択されたプロセッサのグループであり、前記選択されたプロセッサのグループは、特定のアドレス空間のパーティション化、グループ化、又は使用の1つ又は複数に基づいて選択される、請求項9に記載のコンピュータ・プログラム。
  11. コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・システムであって、
    メモリと、
    前記メモリと通信するプロセッサと、を含み、
    第1のプロセッサにより、第2のプロセッサから、メモリ内に位置するアドレス変換構造の1つ又は複数のエントリの1つ又は複数の状態インジケータの保留中の更新をコミットするように、前記第1のプロセッサに指示する同期要求を受信することと、
    前記第1のプロセッサにより、前記同期要求の受信に基づいて、同期操作を実施して、前記1つ又は複数の状態インジケータの前記保留中の更新をコミットすることと、
    前記同期操作の完了に基づいて、前記第1のプロセッサにより、完了を前記第2のプロセッサに示すことと、
    を実行する、コンピュータ・システム。
  12. コンピューティング環境において状態インジケータの更新を同期させるための方法であって、
    第1のプロセッサにより、第2のプロセッサから、メモリ内に位置するアドレス変換構造の1つ又は複数のエントリの1つ又は複数の状態インジケータの保留中の更新をコミットするように前記第1のプロセッサに指示する同期要求を受信することと、
    前記第1のプロセッサにより、前記同期要求の受信に基づいて、同期操作を実施して、前記1つ又は複数の状態インジケータの前記保留中の更新をコミットすることと、
    前記同期操作の完了に基づいて、前記第1のプロセッサにより、完了を前記第2のプロセッサに示すことと、
    を含む、方法。
  13. 前記同期操作を実施することは、
    前記第1のプロセッサのキューにおける、前記1つ又は複数の状態インジケータについての1つ又は複数の保留中の更新要求にマーク付けすることと、
    前記キュー内の前記マーク付けされた1つ又は複数の保留中の更新要求に基づいて、前記アドレス変換構造の1つ又は複数のエントリを更新することと、
    を含む、請求項12に記載の方法。
  14. 前記同期操作を実施することは、
    前記同期要求の受信に基づいて、キュー内にマーカーを配置することであって、前記キューは、前記マーカーより前の、前記1つ又は複数の状態インジケータに対する1つ又は複数の保留中の更新要求を含む、配置することと、
    前記マーカーより前の、前記キュー内の前記1つ又は複数の保留中の更新要求に基づいて、前記アドレス変換構造の1つ又は複数のエントリを更新することであって、前記同期操作の完了は、前記マーカーの到達に基づいて示される、更新することと、
    を含む、請求項12に記載の方法。
  15. コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・プログラムであって、
    前記コンピューティング環境の1つのプロセッサから、前記コンピューティング環境の少なくとも1つの他のプロセッサに、メモリ内に位置するアドレス変換構造の1つ又は複数のエントリの1つ又は複数の状態インジケータの保留中の更新をコミットするように、前記少なくとも1つの他のプロセッサに指示する同期要求を送ることと、
    前記1つのプロセッサにより、前記少なくとも1つの他のプロセッサから、前記1つ又は複数の状態インジケータの前記保留中の更新の前記コミットが完了したことを示す完了の表示を受信することと、
    前記少なくとも1つの他のプロセッサから前記完了の表示を受信することに基づいて、1つ又は複数の更新された状態インジケータを用いて1つ又は複数の操作を開始することと、
    を含む、コンピュータ・プログラム。
JP2017514988A 2014-05-30 2015-05-21 マルチプロセッシング環境におけるページ・テーブルの状態インジケータの更新の同期させる方法 Expired - Fee Related JP6362769B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/292,604 US9785554B2 (en) 2014-05-30 2014-05-30 Synchronizing updates of page table status indicators in a multiprocessing environment
US14/292,604 2014-05-30
PCT/IB2015/053728 WO2015181687A1 (en) 2014-05-30 2015-05-21 Synchronizing updates to status indicators in a computing environment

Publications (3)

Publication Number Publication Date
JP2017520869A JP2017520869A (ja) 2017-07-27
JP2017520869A5 JP2017520869A5 (ja) 2017-09-07
JP6362769B2 true JP6362769B2 (ja) 2018-07-25

Family

ID=54698201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017514988A Expired - Fee Related JP6362769B2 (ja) 2014-05-30 2015-05-21 マルチプロセッシング環境におけるページ・テーブルの状態インジケータの更新の同期させる方法

Country Status (6)

Country Link
US (2) US9785554B2 (ja)
JP (1) JP6362769B2 (ja)
CN (1) CN106462505B (ja)
DE (1) DE112015001977B4 (ja)
GB (1) GB2540912B (ja)
WO (1) WO2015181687A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484162B2 (en) 2008-06-24 2013-07-09 Commvault Systems, Inc. De-duplication systems and methods for application-specific data
US8930306B1 (en) 2009-07-08 2015-01-06 Commvault Systems, Inc. Synchronized data deduplication
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US9116850B2 (en) 2010-12-14 2015-08-25 Commvault Systems, Inc. Client-side repository in a networked deduplicated storage system
US9020900B2 (en) 2010-12-14 2015-04-28 Commvault Systems, Inc. Distributed deduplicated storage system
US9218376B2 (en) 2012-06-13 2015-12-22 Commvault Systems, Inc. Intelligent data sourcing in a networked storage system
US9665591B2 (en) 2013-01-11 2017-05-30 Commvault Systems, Inc. High availability distributed deduplicated storage system
US10380072B2 (en) 2014-03-17 2019-08-13 Commvault Systems, Inc. Managing deletions from a deduplication database
US9811427B2 (en) 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations
US9575673B2 (en) 2014-10-29 2017-02-21 Commvault Systems, Inc. Accessing a file system using tiered deduplication
US10339106B2 (en) 2015-04-09 2019-07-02 Commvault Systems, Inc. Highly reusable deduplication database after disaster recovery
US20160350391A1 (en) 2015-05-26 2016-12-01 Commvault Systems, Inc. Replication using deduplicated secondary copy data
US20170192868A1 (en) 2015-12-30 2017-07-06 Commvault Systems, Inc. User interface for identifying a location of a failed secondary storage device
US10146695B2 (en) * 2016-09-22 2018-12-04 Unisys Corporation System and method for implementing an efficient large system page invalidation
US10417102B2 (en) 2016-09-30 2019-09-17 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including virtual machine distribution logic
CN108572926B (zh) * 2017-03-13 2022-02-22 阿里巴巴集团控股有限公司 一种用于同步中央处理器所属缓存的方法和装置
CN107231417B (zh) * 2017-05-31 2020-05-26 深圳市亚启科技有限公司 一种低速链路下网络节点间数据同步方法及系统
US11016696B2 (en) 2018-09-14 2021-05-25 Commvault Systems, Inc. Redundant distributed data storage system
US11010258B2 (en) 2018-11-27 2021-05-18 Commvault Systems, Inc. Generating backup copies through interoperability between components of a data storage management system and appliances for data storage and deduplication
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US11200168B2 (en) * 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US11698727B2 (en) 2018-12-14 2023-07-11 Commvault Systems, Inc. Performing secondary copy operations based on deduplication performance
US20200327017A1 (en) 2019-04-10 2020-10-15 Commvault Systems, Inc. Restore using deduplicated secondary copy data
US11463264B2 (en) 2019-05-08 2022-10-04 Commvault Systems, Inc. Use of data block signatures for monitoring in an information management system
US11442896B2 (en) 2019-12-04 2022-09-13 Commvault Systems, Inc. Systems and methods for optimizing restoration of deduplicated data stored in cloud-based storage resources
US11816037B2 (en) 2019-12-12 2023-11-14 Advanced Micro Devices, Inc. Enhanced page information co-processor
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11687424B2 (en) 2020-05-28 2023-06-27 Commvault Systems, Inc. Automated media agent state management
GB2603489B (en) * 2021-02-04 2023-02-22 Advanced Risc Mach Ltd A data processing apparatus and method for address translation
US11645175B2 (en) 2021-02-12 2023-05-09 Commvault Systems, Inc. Automatic failover of a storage manager
US12112200B2 (en) 2021-09-13 2024-10-08 International Business Machines Corporation Pipeline parallel computing using extended memory

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197139A (en) * 1990-04-05 1993-03-23 International Business Machines Corporation Cache management for multi-processor systems utilizing bulk cross-invalidate
CA2107056C (en) * 1993-01-08 1998-06-23 James Allan Kahle Method and system for increased system memory concurrency in a multiprocessor computer system
US6119204A (en) 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6647468B1 (en) 1999-02-26 2003-11-11 Hewlett-Packard Development Company, L.P. Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment
US6360231B1 (en) 1999-02-26 2002-03-19 Hewlett-Packard Company Transactional memory for distributed shared memory multi-processor computer systems
US6286092B1 (en) * 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6751721B1 (en) 2000-08-31 2004-06-15 Hewlett-Packard Development Company, L.P. Broadcast invalidate scheme
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6745272B2 (en) 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US7096323B1 (en) 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
US7073043B2 (en) * 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7552254B1 (en) 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US8307194B1 (en) * 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US20050080934A1 (en) 2003-09-30 2005-04-14 Cota-Robles Erik C. Invalidating translation lookaside buffer entries in a virtual machine (VM) system
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US8423747B2 (en) 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
US7454590B2 (en) * 2005-09-09 2008-11-18 Sun Microsystems, Inc. Multithreaded processor having a source processor core to subsequently delay continued processing of demap operation until responses are received from each of remaining processor cores
US7739476B2 (en) 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
US7549035B1 (en) 2006-09-22 2009-06-16 Sun Microsystems, Inc. System and method for reference and modification tracking
US8296520B2 (en) 2007-12-19 2012-10-23 International Business Machines Corporation System and method for optimizing neighboring cache usage in a multiprocessor environment
US8001328B2 (en) 2008-01-29 2011-08-16 International Business Machines Corporation Method and process for expediting the return of line exclusivity to a given processor through enhanced inter-node communications
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8234407B2 (en) 2009-06-30 2012-07-31 Oracle America, Inc. Network use of virtual addresses without pinning or registration
US8566524B2 (en) 2009-08-31 2013-10-22 International Business Machines Corporation Transactional memory system with efficient cache support
US8930635B2 (en) 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US9448938B2 (en) 2010-06-09 2016-09-20 Micron Technology, Inc. Cache coherence protocol for persistent memories
US8788761B2 (en) 2010-09-24 2014-07-22 Nvidia Corporation System and method for explicitly managing cache coherence
DE112011103433B4 (de) * 2010-11-26 2019-10-31 International Business Machines Corporation Verfahren, System und Programm zum Steuern von Cache-Kohärenz
US9916257B2 (en) 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
US9418010B2 (en) 2013-04-17 2016-08-16 Apple Inc. Global maintenance command protocol in a cache coherent system
US9411745B2 (en) 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9785554B2 (en) 2014-05-30 2017-10-10 International Business Machines Corporation Synchronizing updates of page table status indicators in a multiprocessing environment
US9384133B2 (en) 2014-05-30 2016-07-05 International Business Machines Corporation Synchronizing updates of page table status indicators and performing bulk operations

Also Published As

Publication number Publication date
GB201620122D0 (en) 2017-01-11
US20150347306A1 (en) 2015-12-03
GB2540912A (en) 2017-02-01
CN106462505A (zh) 2017-02-22
JP2017520869A (ja) 2017-07-27
WO2015181687A1 (en) 2015-12-03
US9785555B2 (en) 2017-10-10
US20150347300A1 (en) 2015-12-03
DE112015001977T5 (de) 2017-03-09
US9785554B2 (en) 2017-10-10
CN106462505B (zh) 2019-06-04
GB2540912B (en) 2017-12-20
DE112015001977B4 (de) 2024-03-07

Similar Documents

Publication Publication Date Title
JP6362769B2 (ja) マルチプロセッシング環境におけるページ・テーブルの状態インジケータの更新の同期させる方法
US9836411B2 (en) Synchronizing updates of page table status indicators and performing bulk operations
US10180910B2 (en) Host-based resetting of active use of guest page table indicators
US10380033B2 (en) Multi-engine address translation facility
US10802986B2 (en) Marking to indicate memory used to back address translation structures
US10515020B2 (en) Marking storage keys to indicate memory used to back address translation structures
US10169243B2 (en) Reducing over-purging of structures associated with address translation
US10572385B2 (en) Granting exclusive cache access using locality cache coherency state
US11132290B2 (en) Locality domain-based memory pools for virtualized computing environment
JP7486419B2 (ja) コンピュータ・プログラムおよびコンピュータ・システム
US20180018283A1 (en) Selective purging of guest entries of structures associated with address translation
TWI665605B (zh) 用於暫時抑制受約束儲存器運算元請求之處理之電腦程式產品、電腦實施方法及電腦系統
US11010307B2 (en) Cache management
JP2021502629A (ja) 複数のプロセッサによる共有キャッシュ・ラインの同時変更
US10691604B2 (en) Minimizing cache latencies using set predictors

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170714

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180626

R150 Certificate of patent or registration of utility model

Ref document number: 6362769

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees