JP4738548B2 - エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム - Google Patents

エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム Download PDF

Info

Publication number
JP4738548B2
JP4738548B2 JP2010500189A JP2010500189A JP4738548B2 JP 4738548 B2 JP4738548 B2 JP 4738548B2 JP 2010500189 A JP2010500189 A JP 2010500189A JP 2010500189 A JP2010500189 A JP 2010500189A JP 4738548 B2 JP4738548 B2 JP 4738548B2
Authority
JP
Japan
Prior art keywords
memory unit
access
memory
emulated
cpu process
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.)
Active
Application number
JP2010500189A
Other languages
English (en)
Other versions
JP2010524054A (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 JP2010524054A publication Critical patent/JP2010524054A/ja
Application granted granted Critical
Publication of JP4738548B2 publication Critical patent/JP4738548B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、一般に、エミュレートされた処理環境に関し、特に、メモリ・アクセスが堅固なメモリ整合性アーキテクチャに準拠するように、弱いメモリ整合性(weak memory consistency)を有するプロセッサ上で堅固なメモリ整合性(firm memory consistency)を有するアーキテクチャをエミュレートすることに関する。
処理中に、メモリにアクセスしているプロセッサに対し、そのメモリの一貫したビューが提供されることは不可欠である。弱いメモリ整合性で構築された環境では、メモリ整合性を保証するために特定のステップを行わなければならない。たとえば、弱いメモリ整合性環境では、他のプロセッサによって観測されるように、特定のメモリ単位(unit of memory)の更新順序は保証されない。したがって、弱いメモリ整合性環境で実行されるソフトウェアは、曖昧さを許容するか、または明示的に整合性を強制するための命令を使用しなければならない。すなわち、メモリ・ストアが実行されるたびに、同期が実行されてから他のメモリ・アクセスが可能になる。しかし、整合性を強制するための命令を使用すると、システム・パフォーマンスが著しく劣化する。
弱いメモリ整合性環境とは対称的に、一部の環境は堅固なメモリ整合性で構築される。このような環境では、メモリの整合性を維持するためのハードウェアが提供される。
米国特許出願第11/680,703号
2005年9月発行のIBM資料No.SA22−7832−04「z/Architecture Principles of Operation」 2005年6月3日発行のJim SmithおよびRavi Nairによる「Virtual Machines: VersatilePlatforms For Systems and Processes」(The MorganKaufmann Series in Computer Architecture and Design)
ハードウェアは整合性を強制するための命令の使用を上回る利点を提供するが、ハードウェアはこのような機能を実行するために常に使用可能であるわけではない。たとえば、弱いメモリ整合モデルを有するプロセッサが堅固なメモリ整合モデルをエミュレートする場合、整合性を提供するためのハードウェアはまったく存在しない。このような状況では、メモリ整合性を効率よく提供するための機能が必要である。
たとえば、弱いメモリ整合性環境で堅固なメモリ整合性を提供する際にオーバヘッドを低減する機能が必要である。特定の一態様では、メモリ整合メモリ・アクセスが効率よく提供されるように、弱いメモリ整合性を有するプロセッサが堅固なメモリ整合性を有するプロセッサを効率よくエミュレートできるようにする機能が必要である。
エミュレートされた処理環境でメモリ・アクセスを管理するためのコンピュータ可読プログラム・コード・ロジックを有する少なくとも1つのコンピュータ使用可能媒体を含む製品(article of manufacture)の提供により、従来技術の短所は克服され、追加の利点が提供される。このコンピュータ可読プログラム・コード・ロジックは、実行されると、たとえば、弱いメモリ整合性アーキテクチャを有するプロセッサ上で実行されるエミュレートされた中央演算処理装置(CPU)プロセスにより、操作単位(unit of operation)の一部としてメモリ単位へのアクセスを要求するステップと、エミュレートされたCPUプロセスにより、メモリ単位へのアクセスを管理するステップであって、堅固なメモリ整合性を強制し、そのメモリ単位が変更されている場合にエミュレートされた他のCPUプロセスがそのメモリ単位を観測できない管理ステップであって、1つまたは複数のメモリ・アクセス・テストを使用して、そのメモリ単位がアクセス可能であるかどうかを判断するステップであって、その1つまたは複数のメモリ・アクセス・テストが、エミュレートされたCPUプロセスがある場合に、どのプロセスがそのメモリ単位に対して読み取りアクセスまたは書き込みアクセスを行えるかを示す表示を含む既存の構築されたアクセス制御ブロックに追加されたテストを含み、そのメモリ単位の可用性を示すことを使用したことに応答して、要求されたメモリ単位にアクセスするステップと、そのメモリ単位が他のエミュレートされたCPUプロセスによって保持されていて、この時点でそのエミュレートされたCPUプロセスにとってアクセス不能であると判断し、割り込みハンドラを呼び出して、エミュレートされたCPUプロセスがそのメモリ単位にアクセスできるようにするためにそのメモリ単位について保持されている1つまたは複数の権利を他のエミュレートされたCPUプロセスが放棄することを要求するステップと、要求側のエミュレートされたCPUプロセスによって保持されているメモリ単位へのアクセスを他のエミュレートされたCPUプロセスが要求しているかどうかを判断し、他のエミュレートされたCPUプロセスがアクセスを要求していることを示していると判断したことに応答して、その操作単位を無効にするステップであって、前記無効化によってデッドロックを回避するステップのうちの少なくとも1つを含む管理ステップとを実行する。
本発明の1つまたは複数の態様に関連する方法およびシステムも本明細書に記載され、請求されている。
追加の特徴および利点は本発明の技法により実現される。本発明のその他の諸実施形態および諸態様は、本明細書に詳細に記載され、請求された発明の一部と見なされる。
本発明の1つまたは複数の態様は、本明細書の終わりの特許請求の範囲において、詳細に指摘され、例として明瞭に請求される。本発明の上記その他の目的、特徴、および利点は、添付図面に併せて取られた以下の詳細な説明から明らかである。
本発明の1つまたは複数の態様を取り入れて使用するための処理環境の一実施形態を示す図である。 本発明の一態様による図1の処理環境のシステム・アーキテクチャの一実施形態を示す図である。 本発明の一態様による図2のシステム・アーキテクチャのエミュレータの一実施形態の詳細を示す図である。 本発明の一態様による図3のエミュレータの中央演算処理装置(CPU)インプリメンテーションの一実施形態の詳細を示す図である。 本発明の一態様による図4のCPUインプリメンテーションのインタープリタ・コードの一実施形態の詳細を示す図である。 本発明の一態様による図5のインタープリタ・コードの解釈ユニットの一実施形態の詳細を示す図である。 本発明の一態様によるメモリ単位へのアクセスに関連するロジックの一実施形態を示す図である。 本発明の一態様により使用されるアクセス制御ブロックの一例を示す図である。 本発明の一態様によるロック入手の際の割り込みハンドラの呼び出しに関連するロジックの一実施形態を示す図である。 本発明の一態様によるロックされたメモリ単位へのアクセスに関連するロジックの一実施形態を示す図である。 本発明の1つまたは複数の態様を取り入れるためのコンピュータ・プログラム製品(computer program product)の一実施形態を示す図である。
本発明の一態様により、エミュレートされた処理環境におけるメモリ整合性が提供される。弱いメモリ整合性を有するプロセッサは堅固なメモリ整合性を有するアーキテクチャをエミュレートし、この機能を実行するための直列化命令または特殊ハードウェアを必要とせずにメモリ整合性が提供される。さらに、デッドロック状況が回避される。
本発明の1つまたは複数の態様を取り入れて使用するための処理環境の一実施形態について、図1に関連して説明する。処理環境100は、たとえば、複数のネイティブ・プロセッサ102(たとえば、中央演算処理装置(CPU)102a、102b)と、複数のプロセッサ(ひとまとめにしてプロセッサ102という)によって共用されるメモリ104(たとえば、メイン・メモリ)と、複数のプロセッサにとってアクセス可能な1つまたは複数の入出力(I/O)装置106とを含む。プロセッサ、メモリ、およびI/O装置は、たとえば、1つまたは複数のバス108を介して相互に結合されている。
この例では、各プロセッサは、ネイティブ・アーキテクチャと呼ぶこともできるあるアーキテクチャに基づくが、ゲスト・アーキテクチャと呼ぶこともできる他のアーキテクチャをエミュレートする。例として、ネイティブ・アーキテクチャは、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるPower4またはPowerPC(R)アーキテクチャあるいはインテル社によって提供されるIntel(R)アーキテクチャであり、ゲスト・アーキテクチャは、同じくニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるz/Architecture(R)である。z/Architecture(R)の諸態様は、2005年9月発行のIBM資料No.SA22−7832−04「z/Architecture Principles of Operation」に記載されている。例として、プロセッサ102は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社(IBM(R))によって提供されるpSeries(R)サーバの一部である。IBM(R)、pSeries(R)、PowerPC(R)、およびz/Architecture(R)は米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。Intel(R)はインテル社の登録商標である。本明細書で使用するその他の名前は、インターナショナル・ビジネス・マシーンズ社またはその他の企業の登録商標、商標、または製品名である場合もある。
各ネイティブ中央演算処理装置102は、この環境内での処理中に使用される、1つまたは複数の汎用レジスタあるいは1つまたは複数の特殊目的レジスタもしくはこれらの組み合わせなどの1つまたは複数のネイティブ・レジスタ110(たとえば、110a、11bであり、ひとまとめにしてネイティブ・レジスタ110という)を含む。これらのレジスタは、任意の特定の時点におけるこの環境の状態を表す情報を含む。
エミュレーションを提供するために、処理環境は、少なくとも1つのエミュレータと、少なくとも1つのゲスト・オペレーティング・システムと、1つまたは複数のゲスト・アプリケーションとを含むように構築される。特に、プロセッサのうちの1つまたは複数は、エミュレーションを提供し、ゲスト・オペレーティング・システムをホストとして処理し、1つまたは複数のゲスト・アプリケーションを実行することができる。これらの特徴については、図2に関連してさらに説明する。
図2を参照し、処理環境100のシステム・アーキテクチャ200の一実施形態について説明する。システム・アーキテクチャ200は、たとえば、環境の構築態様を定義する複数のインプリメンテーション層を含む。この特定の例では、これらの層は、1つまたは複数のインターフェースまたはコントローラあるいはその両方を介してメモリ204と、入出力装置またはネットワークあるいはその両方206に結合されるハードウェア202を含む。この例では、図1に描写されているように、各プロセッサ102a、102bはハードウェア層202を含むが、メモリ204とI/O装置206は共用される。
図2に戻ると、アーキテクチャ200は、例として、ホスト・オペレーティング・システム208と、エミュレータ210と、ゲスト・オペレーティング・システム212と、1つまたは複数のゲスト・アプリケーション214とをさらに含む。1つの層は、1つまたは複数のインターフェースを介して少なくとも1つの他の層に結合される。たとえば、ゲスト・アプリケーション214は、少なくとも1つのインターフェースを介してゲスト・オペレーティング・システム212に結合される。その他のインターフェースは、残りの層を結合するために使用される。その上、このアーキテクチャは、他の層またはインターフェースあるいはその両方も含むことができる。この場合も、各プロセッサは、ホスト・オペレーティング・システムを有し、エミュレーションを提供することができる。各プロセッサは、ゲスト・オペレーティング・システムおよび1つまたは複数のゲスト・アプリケーションをホストとして処理することができる。図2に描写されている様々な層について、以下にさらに説明する。
ハードウェア200は、処理環境のネイティブ・アーキテクチャであり、たとえば、Power4、PowerPC(R)、Intel(R)、またはその他のアーキテクチャに基づくものである。インターナショナル・ビジネス・マシーンズ社によって提供されるAIX(R)またはLINUXなどのホスト・オペレーティング・システム208はこのハードウェア上で実行される。AIX(R)は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。
エミュレータ210は、ネイティブ・アーキテクチャとは異なるアーキテクチャをエミュレートするために使用されるいくつかのコンポーネントを含む。この実施形態では、エミュレート中のアーキテクチャは、インターナショナル・ビジネス・マシーンズ社によって提供されるz/Architecture(R)であるが、他のアーキテクチャもエミュレートすることができる。このエミュレーションにより、ゲスト・オペレーティング・システム212(たとえば、インターナショナル・ビジネス・マシーンズ社の登録商標であるz/OS(R))はネイティブ・アーキテクチャ上で実行することができ、1つまたは複数のゲスト・アプリケーション214(たとえば、Zアプリケーション)のサポートが可能になる。エミュレータ210に関する詳細については、図3に関連して説明する。
図3を参照すると、エミュレータ210は、1つまたは複数のサービス・プロセス302に結合された共用メモリ300と、入出力(I/O)インプリメンテーション304と、中央演算処理装置(CPU)インプリメンテーション306とを含み、そのそれぞれについて以下に詳細に説明する。
共用メモリ300は、サービス・プロセス302、I/Oインプリメンテーション304、およびCPUインプリメンテーション306から認識可能なホスト内のメモリの一部分を表すものである。これは、共用メモリからデータを読み取り、そこにデータを保管することにより、独立プロセス(たとえば、サービス・プロセス、I/Oインプリメンテーション、CPUインプリメンテーション)が通信する記憶領域である。一例として、共用メモリは、たとえば、システム・グローバル情報、CPUコンテキストおよび情報、エミュレートされた主記憶装置、エミュレートされた主記憶装置キー、ならびにサブチャネル(すなわち、I/O装置を表すデータ構造)を含む、複数の領域を含む。
サービス・プロセス302は、CPUを作成するために使用される1つまたは複数のプロセスと、1つまたは複数のその他のプロセスとを含むとともに、開始、停止、リセット、初期プログラム・ロード(IPL)などの構築されたオペレータ機能を提供する。また、サービス・プロセスは、エミュレートされたシステム機能の表示または変更、共用リソースの入手/解放、その他のメンテナンス・コマンドなどのその他の機能も提供することができる。
入出力インプリメンテーション304は、たとえば、1つまたは複数のサブチャネル・プロセスと、I/O装置と通信するために使用されるI/Oコントローラとを含む。I/Oコントローラは、本発明の一態様では、サブチャネル・プロセスを開始し、リカバリを実行する役割を担う。
中央演算処理装置(CPU)インプリメンテーション306は、1つまたは複数のエミュレートされたCPUプロセスを含み、命令を実行し、処理を管理する役割を担う。CPUインプリメンテーションはいくつかのコンポーネントを含み、これらについては図4〜図5に関連して説明する。
図4を参照すると、CPUインプリメンテーション306は、たとえば、命令を入手し、変換し、実行するために使用されるインタープリタ・コード400と、初期始動およびチップとの通信を支援するアーキテクチャ・コプロセッサ402(たとえば、サービス・コール・ロジカル・プロセッサ(SCLP)プロセス)と、エミュレータのタイミング機能の役割を担うタイミング機能404とを含む。インタープリタ・コード400に関する詳細については、図5に関連して説明する。
インタープリタ・コード400は、たとえば、メモリ・アクセス・ユニット422に結合された解釈ユニット420と、CPUコントロール426と、非同期割り込みハンドラ428と、同期割り込みハンドラ430とを含む。この例では、各プロセッサはインタープリタ・コードを含み、したがって、インタープリタ・コード400aが表されている。追加のプロセッサはインタープリタ・コード400を有する場合もあれば、そうではない場合もある。
解釈ユニット420は、メモリから1つまたは複数のゲスト命令を入手し、そのゲスト命令に関するネイティブ命令を提供し、そのネイティブ命令を実行する役割を担う。ゲスト命令は、ネイティブCPU102のアーキテクチャ以外のアーキテクチャで実行するよう開発されたソフトウェア命令(たとえば、機械命令)を含む。たとえば、ゲスト命令は、z/Architecture(R)プロセッサ上で実行するように設計されている可能性があるが、その代わりに、たとえば、pSeries(R)サーバにすることができるネイティブCPU102上でエミュレートされている。
一例では、ネイティブ命令を提供することは、ゲスト命令に関連するエミュレータ内のコード・セグメントを選択することを含む。たとえば、各ゲスト命令は、エミュレート内に関連コード・セグメントを有し、これは1つまたは複数のネイティブ命令からなるシーケンスを含み、そのコード・セグメントが選択されて実行される。
他の一例では、提供することは、たとえば、変換プロセス中に、所与の1組のゲスト命令についてネイティブ・ストリームの命令を作成することを含む。これは、機能を識別し、同等のネイティブ命令を作成することを含む。
命令がメモリ・アクセスを含む場合、メモリ・アクセス・ルーチン422を使用して共用メモリ300にアクセスする。メモリ・アクセス・ルーチンは、動的アドレス変換(DAT)432またはアクセス・レジスタ変換(ART)434などの変換メカニズムを使用して、論理アドレスを絶対アドレスに変換し、次に、その絶対アドレスを使用してメモリにアクセスするか、必要であれば、その絶対アドレスをさらに変換することもできる。
この実施形態では、解釈ユニット420内の処理は合理化される予定である。したがって、待ち状態や、あるアーキテクチャ・レベルから他のアーキテクチャ・レベルへの変化(たとえば、z/Architecture(R)からESA/390などへ)など、より複雑な状況が発生した場合、制御はCPUコントロール426に転送され、そのコントロールがイベントを処理し、制御を解釈ユニット420に返す。
その上、割り込みが発生した場合、処理は解釈ユニット420から、非同期割り込みの場合の非同期割り込みハンドラ428または同期割り込みの場合の同期割り込みハンドラ430のいずれかに遷移する。割り込みが処理された後、処理は解釈ユニット420に戻る。
特に、解釈ユニットは、共用メモリ内の特定の位置をモニターし、位置が変化した場合、それは、CPUまたはI/Oのうちの1つによって割り込みが設定されたことを意味する。したがって、解釈ユニットは適切な割り込みハンドラを呼び出す。
本発明の一態様により、処理環境が堅固な整合性モデルに基づいて構築された場合と同様に、メモリへのアクセスが管理される。特に、弱い整合性モデルに基づいて構築されたプロセッサは、そのプロセッサが堅固な整合性モデルに基づいて構築された場合と同様にメモリへのアクセスを可能にする。弱いメモリ整合システムは堅固なメモリ整合システムをエミュレートし、このエミュレーションは、整合性を提供するための命令同期またはハードウェアを必要とせずにメモリ整合性を提供するように効率よくメモリ・アクセスを可能にすることを含み、これにより、デッドロックが回避される。
一例では、ロック・メカニズムと、本発明の1つまたは複数の態様のために強化されているz/Architecture(R)の既存の構築された特徴を使用して、堅固なメモリ整合性が強制される。ロック・メカニズムの概要については、図6に関連して説明する。
具体的には、図6は、解釈ユニット420と、特に、ユニット420によって実行され、ロック・メカニズムを利用するタイプの命令に関する追加の詳細を示している。一例として、1つのタイプの命令は、1つの操作単位を含む単純命令480である。このような命令では、命令によって要求されるメモリ単位が482でロックされ、その後、ロッキングが成功した場合に、命令の本体が484で実行される。ロッキング中にロッキングを実行しているこのプロセッサによってロックされているメモリ単位を他のプロセッサが要求する場合、後述するように、デッドロックを回避するために486で無効化が実行される。
もう1つのタイプの命令は長く続く命令488である。このタイプの命令は、このプロセッサによって保持されるロックを490で解除し、必要なロックのみを492で再ロックするためのコードを含む。これは他のCPUに対するサービスである。ロックを正常に入手した後、命令の本体が494で実行される。この場合も、ロッキング中にこのプロセッサによって保持されているメモリ単位を他のプロセッサが要求する場合、496で無効化が実行される。
もう1つのタイプの命令は複数操作単位命令498であり、これは、それぞれがこのように処理される複数の単純命令から構成される。
堅固なメモリ整合性を強制するための既存であるが強化され、構築された特徴のロッキングおよび使用に関する詳細については、図7に関連して説明する。図7は、メモリ・アクセスの提供に関連するロジックの一実施形態を描写している。
図7を参照すると、最初に、ステップ500で、解釈ユニット(たとえば、解釈ユニット420)は、メモリ・アクセスに関する要求を含む操作単位を入手する(たとえば、取り出す、受信する、提供されるなど)。この要求は、メモリ単位の読み取りアクセスまたは書き込みアクセスに関するものにすることができる。
ステップ502で、解釈ユニットはこの要求をメモリ・アクセス・ルーチンに転送する。メモリ・アクセス・ルーチンは、一例では、要求されたメモリ単位が容易にアクセス可能であるかどうかを判断する。たとえば、照会504で、要求されたメモリ単位が、変換索引バッファ0(TLB0)というバッファ内に表されるかどうかについて判断が行われる。TLB0は、必要であれば、すでにアドレス変換されたメモリ単位の指定(たとえば、アドレス)を含み、そのメモリ単位へのアクセスはモニターを必要としない。すなわち、TLB0は、容易にアクセス可能なメモリ単位の指定を含む。TLB0に関する詳細は、
2007年3月1日に出願され、整理番号POU920060207US1で、「EmployingA Data Structure Of Readily Accessible Units Of Memory To Facilitate MemoryAccess」という名称の米国特許出願第11/680,703号に記載されている。
要求されたメモリ単位がTLB0に表される場合、ステップ506で、処理が解釈ユニットに戻り、TLB0から入手した指定を使用して命令が実行される。しかし、要求されたメモリ単位がTLB0に表されない場合、追加の処理が実行される。
たとえば、ステップ508で、構築されたアクセス許可(たとえば、zアクセス許可)がチェックされる。これは、一実施形態では、アクセス制御ブロック内の1つまたは複数のインジケータをチェックすることを含む。一例では、1つのアクセス制御ブロックは、構成内で使用可能な、それぞれの定義済みメモリ単位(たとえば、それぞれ4kバイトの記憶ブロック)に関連付けられ、そのメモリ単位に関する特定のパラメータを提供する。アクセス制御ブロックは、共用メモリに保管され、その共用メモリに結合されたプロセッサによってアクセス可能である。
一例では、アクセス制御ブロック600(図8)は以下のフィールドを含む。
a)Zアクセス・インジケータ602: これらは、メモリ単位へのアクセスを制御するz/Architecture(R)の一部として提供されるインジケータである。例として、以下のものを含む。
1)アクセス制御インジケータ(ACC): 参照がキー制御保護を条件とする場合、アクセス制御インジケータは、情報が保管されるときまたは取り出しに対して保護されている位置から情報が取り出されるときのアクセス・キーと突き合わされる。
2)取り出し保護インジケータ(F): 参照がキー制御保護を条件とする場合、取り出し保護インジケータは、キー制御保護が取り出しタイプ参照に適用されるかどうかを制御する。たとえば、1つの値は、保管タイプ参照のみがモニターされ、任意のアクセス・キーによる取り出しが許可されることを示し、もう1つの値は、キー制御保護が取り出しと保管の両方に適用されることを示す。
3)参照インジケータ(R): 対応するメモリ単位内の位置が情報の保管または取り出しのいずれかのための参照されるたびに、参照インジケータは、通常、特定の値(たとえば、1)に設定される。
4)変更インジケータ(C): 対応するメモリ単位内の位置に情報が保管されるたびに、変更インジケータは特定の値(たとえば、1)に設定される。
b)ロック・インジケータ604: これらのインジケータは、既存の制御ブロックによって表されるメモリ単位が1つまたは複数の他のプロセッサによってロックされているかどうかの判断を容易にするために、本発明の一態様により、この制御ブロックに含まれる。一例として、ロック・インジケータ604は以下のものを含む。
1)読み取りインジケータ(R): 本発明の一態様により、この環境のプロセッサごとに1つずつ、複数の読み取りインジケータが提供される。このインジケータは、特定のプロセッサが特定のメモリ単位に関する読み取りロックを有するかどうかを示す。
2)書き込みインジケータ(W): 本発明の一態様により、この環境のプロセッサごとに1つずつ、複数の書き込みインジケータが提供される。このインジケータは、そのプロセッサがそのメモリ単位に関する書き込みロックを有するかどうかを示す。
図7に戻ると、照会510で、zアクセス許可のチェックが失敗した場合、ステップ511で、構築された例外が唱えられ、処理が終了する。しかし、チェックが成功した場合、ステップ512で、プロセッサ(たとえば、エミュレートされたCPUプロセス)はメモリ単位に関するロックを入手しようと試みる。
たとえば、プロセッサはアクセス制御ブロックのロック・インジケータをチェックし、要求されたロックと整合しないロックがこのメモリ単位について保持されていないことをインジケータが指定する場合、プロセッサは、適切なインジケータ(複数も可)を更新することによりメモリ単位をロックする。一例として、プロセッサが排他書き込みロックを要求した場合、プロセッサはアクセス制御ブロックをチェックする。いかなるプロセッサも要求されたメモリ単位に対する読み取りアクセスまたは書き込みアクセスを行えないことをアクセス制御ブロックが示していることに応答して、要求されたメモリ単位は要求側プロセッサによってロックされる。これは、このプロセッサがそのメモリ単位について書き込みロックを有することを示すために、アクセス制御ブロック内に適切な書き込みおよび読み取りインジケータを設定することを含む。これは、この例では、排他ロックである。
他の例では、要求側プロセッサが読み取りアクセスを要求している場合、プロセッサは、他のいずれのプロセッサ(たとえば、エミュレートされたCPUプロセス)も書き込みアクセスを行えないことを保証するためにアクセス制御ブロックをチェックする。いずれのプロセッサも書き込みアクセスを行えない場合、メモリ単位は要求側プロセッサによってロックされる。これは、一例では、共用ロックであり、したがって、複数のプロセッサが読み取りアクセスを行える可能性がある。
照会514で、ロックが入手されている場合、またはプロセッサがすでにロックを備えている場合、ステップ515で、望ましい場合、一例では、メモリ単位はTLB0に追加される。さらに、ステップ506で、処理は解釈ユニットに戻り、命令が実行される。
照会514に戻り、ロックが入手されていない場合、照会516で、要求側プロセッサがこのプロセッサによって保持されているメモリ単位に関する要求を受信したかどうかについて判断が行われる。受信した場合、ステップ518で、要求側プロセッサがその命令を無効にする。すなわち、プロセッサはフリー・フェーズに移行し、それが保持する任意のメモリ単位を解放する。したがって、その命令はまったく実行されていないと思われるので、要求側プロセッサは、その命令を再始動しなければならない。これにより、潜在的なデッドロック状況が回避される。
しかし、このプロセッサによって保持されているメモリ単位に関する要求がまったくない場合、ステップ517で、要求側プロセッサは、そのメモリ単位に関するロックを保持している1つまたは複数の他のプロセッサにそのメモリ単位に関する要求を送信する。たとえば、要求側プロセッサがメモリ単位への書き込みアクセスを要求しているものと想定する。これは、アクセス制御ブロックをチェックして、要求されているメモリ単位への読み取りアクセスまたは書き込みアクセスをどのプロセッサが行えるかを判断する。この情報を入手したことに応答して、要求側プロセッサは、読み取りアクセスまたは書き込みアクセスを行える各プロセッサに連絡する。一例では、これは、それぞれのプロセッサに非同期割り込みを送信して、それがメモリ単位へのアクセスを望むことを示すことを含む。非同期割り込みは、構築された割り込みではなく、疑似割り込みであるが、その処理は構築された割り込みの処理と同様である。割り込みの処理に関する詳細については、図9に関連して説明する。
本発明の一態様により、非同期割り込みハンドラ428(図5および図9)が割り込み700(図9)を受信すると、ステップ702で割り込みのタイプについて判断が行われる。たとえば、エミュレートされたメモリ内のフィールドを定期的にチェックして、割り込みが保留中であるかどうかを判断し、保留中である場合、割り込みのタイプを判断する(たとえば、使用可能なタイプの割り込みごとに1つのビットが存在する)。一例として、受信した割り込みが疑似割り込み704であるかどうかについて判断が行われる。これが疑似割り込みである場合、ロック解除に関する要求706、その他の疑似割り込み708など、疑似割り込みのタイプについてさらに判断が行われる。それがロック解除に関する要求である場合、要求されたロックを解除することにより、疑似割り込みが処理される。
その割り込みが疑似割り込みではない場合、どのタイプのzアーキテクチャ割り込み710であるかが判断され、適切なハンドラ712が呼び出される。割り込みを処理した後、ステップ714で処理は解釈ユニット420を続ける。
図7に戻ると、ステップ517で要求を送信した後、処理はステップ512を続ける。一例では、ステップ517はループ内で1回だけ実行される。要求は送信されたが、依然としてロックが入手されない場合、プロセッサは、ロックが放棄されるまでまたは要求を受信して無効化を必要とするまで、待つだけである。
メモリ単位が書き込みロックを介してロックされている間、ロッキング・プロセッサはそのメモリ単位に対して読み取りアクセスまたは書き込みアクセスを実行することができ、そのプロセッサは、他のプロセッサがそのメモリ単位へのアクセスを要求しない限り、邪魔されない。これについては、図10に関連してさらに説明する。図示の通り、ステップ800で、メモリ単位はロックされる。したがって、ステップ802で、プロセッサはそのメモリ単位への読み取りアクセスおよび書き込みアクセスを行うことができる。照会804で、プロセッサがそのメモリ単位に関する要求を受信しない場合、プロセッサは引き続き、そのメモリ単位への書き込みアクセスおよび読み取りアクセスを行うことができる。しかし、プロセッサがその特定のメモリ単位に関する要求を受信した場合、ステップ806で、プロセッサはそのメモリ単位に関するロックを解放するかまたは降格し、その結果、他のプロセッサが読み取りアクセスまたは書き込みアクセスを行うことができる。
一実施形態では、チェックポイントが取られたときまたは非同期割り込みが受信されたときなどの戦略的な時点で、ロックされたメモリ単位をすべて解放するための判断を行うことができる。しかし、他の諸実施形態では、これは行われない。その代わりに、要求あり次第、メモリ単位が解放される。
ページ・ロックおよび強化され構築された特徴を使用してメモリ整合性を提供するための機能について、上記で詳しく説明されている。一例では、弱いメモリ整合性を備えて構築されたプロセッサは、堅固なメモリ整合性をエミュレートし、堅固なメモリ整合性を有するメモリ・アクセスを効率よく提供することができる。これは、メモリ・アクセス中に同期命令を必要とせずにしかもメモリ整合性を提供するためのハードウェアを使用せずに達成される。さらに、これは、デッドロックを引き起こさずに達成される。
このようなメモリ整合環境では、プロセッサは、それがメモリ内のストアを観測した場合に他の以前のストアがいずれも完了しているものと想定することができる。さらに、間隔境界(たとえば、ハーフワード、ワード、ダブルワードなど)上でアクセスする命令の場合、その間隔全体がブロック・コンカレントで取り出されるかまたは保管されることが保証される。
本発明の1つまたは複数の態様は、たとえば、コンピュータ使用可能媒体を有する製品(article of manufacture)(たとえば、1つまたは複数のコンピュータ・プログラム)に含めることができる。この媒体は、たとえば、本発明の諸機能を提供し促進するためのコンピュータ可読プログラム・コード手段またはロジック(たとえば、命令、コード、コマンドなど)をそこに有する。この製品は、コンピュータ・システムの一部として含めるか、または別個に販売することができる。
図11に関連して、本発明の1つまたは複数の態様を取り入れた製品またはコンピュータ・プログラムの一例について説明する。コンピュータ・プログラム製品900は、たとえば、本発明の1つまたは複数の態様を提供し促進するためのコンピュータ可読プログラム・コード手段またはロジック904をそこに保管するための1つまたは複数のコンピュータ使用可能媒体902を含む。この媒体は、電子、磁気、光学、電磁、赤外線、または半導体のシステム(あるいは装置またはデバイス)もしくは伝搬媒体にすることができる。コンピュータ可読媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、剛性磁気ディスク、および光ディスクを含む。光ディスクの例としては、コンパクト・ディスク読み取り専用メモリ(CD−ROM)、書き換え可能コンパクト・ディスク(CD−R/W)、およびDVDを含む。
1つまたは複数のコンピュータ可読プログラム・コード手段またはロジックによって定義された1つまたは複数の相関モジュールの論理アセンブリあるいは一連のプログラム命令は、本発明の1つまたは複数の態様の実行を指示するものである。
有利なことに、ページ・ロックを使用してメモリ整合性が達成される機能が提供される。弱いメモリ整合性を有するように構築されたプロセッサは、メモリ整合性を有するメモリ・アクセスが提供されるように、堅固なメモリ整合性をエミュレートする。これは、特殊ハードウェアまたは特殊同期命令を必要とせずに提供される。これにより、システム・パフォーマンスが強化され、メモリ整合性を達成するための効率の良いメカニズムが提供される。さらに、プロセッサがメモリ単位へのアクセスを試みている間に行われた要求に応答して、命令または操作単位を無効にすることにより、デッドロック状況が回避される。
その上、有利なことに、メモリ単位を争わない(たとえば、わずか1つのCPUがそのメモリ単位を使用しようと試みている)典型的な状況では、システム・パフォーマンスの劣化はまったく発生しない。追加のチェックまたは余分なテストもまったく行われない。
一実施形態では、この機能は、オペレーティング・システムではなく、アプリケーション・プログラムによって発行された命令について提供される。
様々な実施形態が上述されているが、これらは例に過ぎない。たとえば、処理環境は、Power4、PowerPC(R)、またはIntel(R)以外のアーキテクチャに基づく処理装置を含むことができる。さらに、pSeries(R)サーバ以外のサーバは、本発明の1つまたは複数の態様を取り入れて使用することができる。さらに、この環境は、3つ以上のネイティブ・プロセッサを含む場合もあれば、1つだけのネイティブ・プロセッサを含む場合もある。その上、本明細書で述べたもの以外のオペレーティング・システムも使用することができる。さらに、処理環境は、z/Architecture(R)以外の環境をエミュレートすることができる。さらに、構築された特徴は、他のアーキテクチャのものにすることができる。さらに、様々なエミュレータを使用することができる。エミュレータは、市販され、様々な企業から提供されている。エミュレーションに関する追加の詳細は、2005年6月3日発行のJim SmithおよびRavi Nairによる「Virtual Machines: Versatile Platforms For Systems and Processes」(The Morgan Kaufmann Series in Computer Architecture and Design)に記載されている。さらに、処理環境は、エミュレータ・コードを含む必要はない。他の多くのタイプの処理環境は、本発明の1つまたは複数の態様を取り入れるか、使用するか、あるいはその両方を行うことができる。
一実施形態ではTLB0を参照しているが、本発明の1つまたは複数の態様は、TLB0をチェックせずに使用することができる。さらに、メモリ単位は、メモリ・ページを含むがこれに限定されない、任意の定義済みサイズのメモリにすることができる。
その上、1つまたは複数の実施形態では、プログラム・コードの保管または実行あるいはその両方に適したデータ処理システムであって、直接またはシステム・バスを介して間接的にメモリ・エレメントに結合された少なくとも1つのプロセッサを含むものが使用可能である。メモリ・エレメントは、たとえば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、ならびに、実行中にコードを大容量記憶装置から取り出さなければならない回数を削減するために少なくとも何らかのプログラム・コードの一時記憶を行うキャッシュ・メモリを含む。
入出力またはI/O装置(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない)は、直接または介在するI/Oコントローラを介してシステムに結合することができる。データ処理システムが介在する私設網または公衆網を介して他のデータ処理システムまたはリモート・プリンタあるいは記憶装置に結合された状態になれるようにするために、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、使用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
本発明の1つまたは複数の態様の諸機能は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの何らかの組み合わせで実現することができる。本発明の諸機能を実行するためにマシンによって実行可能な複数命令からなる少なくとも1つのプログラムを実施するマシンによって読み取り可能な少なくとも1つのプログラム記憶装置を提供することができる。
本明細書に描写されている流れ図は例に過ぎない。本発明の精神を逸脱せずに、これらの流れ図またはそこに記載されているステップ(または操作)に対する多くの変形例が可能である。たとえば、これらのステップを異なる順序で実行するか、ステップを追加、削除、または変更することができる。これらの変形例はいずれも、請求された本発明の一部と見なされる。
諸実施形態が本明細書に詳細に描写され記載されているが、本発明の精神を逸脱せずに、様々な変更、追加、置き換えなどが可能であることは当業者には明らかになることであり、したがって、これらは特許請求の範囲に定義された本発明の範囲内のものであると見なされる。

Claims (19)

  1. エミュレートされた処理環境でメモリ・アクセスを管理するためのプログラムであって、コンピュータが、
    弱いメモリ整合性アーキテクチャを有するプロセッサ上で実行されるエミュレートされた中央演算処理装置(CPU)プロセスにより、操作単位の一部としてメモリ単位へのアクセスを要求するステップと、
    前記エミュレートされたCPUプロセスにより、前記メモリ単位へのアクセスを管理するステップであって、堅固なメモリ整合性を要求することにより、前記メモリ単位が変更されている場合にエミュレートされた他のCPUプロセスが前記メモリ単位を観測できないようにロック管理を行う管理ステップであって、
    1つまたは複数のメモリ・アクセス・テストを使用して、前記メモリ単位がアクセス可能であるかどうかを判断するステップであって、前記1つまたは複数のメモリ・アクセス・テストが、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位に対して読み取りアクセスまたは書き込みアクセスを行えるかを示す表示を含む既存の構築されたアクセス制御ブロックに追加された、すでにアドレス変換され、アクセス可能なメモリ単位か否かのテストを含み、前記メモリ単位が利用できる場合に、前記要求されたメモリ単位にアクセスするステップと、
    前記メモリ単位が他のエミュレートされたCPUプロセスによって保持されていて、この時点で前記エミュレートされたCPUプロセスにとってアクセス不能であると判断し、割り込みハンドラを呼び出して、前記エミュレートされたCPUプロセスが前記メモリ単位にアクセスできるようにするために前記メモリ単位について保持されている1つまたは複数の権利を前記他のエミュレートされたCPUプロセスが放棄することを要求するステップと、
    要求側のエミュレートされたCPUプロセスによって保持されているメモリ単位へのアクセスを他のエミュレートされたCPUプロセスが要求しているかどうかを判断し、前記他のエミュレートされたCPUプロセスがアクセスを要求していることを示していると判断したことに応答して、前記操作単位を無効にするステップであって、前記無効化によってデッドロックを回避するステップと、
    のうちの少なくとも1つを含む管理ステップと、
    を実行する、前記プログラム。
  2. 前記要求されたメモリ単位にアクセスする前記ステップが、前記メモリ単位に関するロックを入手するステップを含む、請求項1記載のプログラム。
  3. 前記ロックを入手する前記ステップが、前記メモリ単位に関連する前記アクセス制御ブロック内に1つまたは複数のインジケータを設定するステップを含み、前記設定が、前記要求されたアクセスが書き込みアクセスであるか読み取りアクセスであるかによって決まる、請求項2記載のプログラム。
  4. 前記アクセス制御ブロックが、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位への読み取りアクセスを行えるかを示す複数の読み取りインジケータと、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位への書き込みアクセスを行えるかを指定する複数の書き込みインジケータと、前記メモリ単位へのアクセスを制御するための1つまたは複数の構築されたアクセス許可とを含む、請求項3記載のプログラム。
  5. 前記メモリ単位が他のエミュレートされたCPUプロセスによって保持されていることの判断が、前記アクセス制御ブロック内の1つまたは複数のインジケータをチェックするステップを含む、請求項1記載のプログラム。
  6. 前記要求されたアクセスが書き込みアクセスであるか読み取りアクセスであるかに応じて、1つまたは複数の権利を放棄するための前記要求が、前記他のエミュレートされたCPUプロセスによって保持されている前記メモリ単位に関するロックを解放するか、または前記メモリ単位に関する前記ロックを降格するための要求を含む、請求項1記載のプログラム。
  7. 前記他のエミュレートされたCPUプロセスに前記1つまたは複数の権利を放棄させるために、前記割り込みハンドラが、前記他のエミュレートされたCPUプロセスへの非同期割り込みを提供する、請求項1記載のプログラム。
  8. 放棄するための前記要求を受信したことに応答して、前記他のエミュレートされたCPUプロセスが前記1つまたは複数の権利を放棄し、放棄したことに応答して、前記エミュレートされたCPUプロセスが前記メモリ単位に関するロックを入手する、請求項1記載のプログラム。
  9. 無効にする前記ステップが、前記エミュレートされたCPUプロセスによって保持されている任意のロックを解放するステップを含む、請求項1記載のプログラム。
  10. 無効にしたことに応答して、前記操作単位を再始動するステップをさらに含む、請求項1記載のプログラム。
  11. 前記メモリ単位がメモリ・ページを含む、請求項1記載のプログラム。
  12. コンピュータがエミュレートされた処理環境でメモリ・アクセスを管理する方法であって、前記コンピュータが、
    弱いメモリ整合性アーキテクチャを有するプロセッサ上で実行されるエミュレートされた中央演算処理装置(CPU)プロセスにより、操作単位の一部としてメモリ単位へのアクセスを要求するステップと、
    前記エミュレートされたCPUプロセスにより、前記メモリ単位へのアクセスを管理するステップであって、堅固なメモリ整合性を要求することにより、前記メモリ単位が変更されている場合にエミュレートされた他のCPUプロセスが前記メモリ単位を観測できないようにロック管理を行う管理ステップであって、
    1つまたは複数のメモリ・アクセス・テストを使用して、前記メモリ単位がアクセス可能であるかどうかを判断するステップであって、前記1つまたは複数のメモリ・アクセス・テストが、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位に対して読み取りアクセスまたは書き込みアクセスを行えるかを示す表示を含む既存の構築されたアクセス制御ブロックに追加された、すでにアドレス変換され、アクセス可能なメモリ単位か否かのテストを含み、前記メモリ単位が利用できる場合に、前記要求されたメモリ単位にアクセスするステップと、
    前記メモリ単位が他のエミュレートされたCPUプロセスによって保持されていて、この時点で前記エミュレートされたCPUプロセスにとってアクセス不能であると判断し、割り込みハンドラを呼び出して、前記エミュレートされたCPUプロセスが前記メモリ単位にアクセスできるようにするために前記メモリ単位について保持されている1つまたは複数の権利を前記他のエミュレートされたCPUプロセスが放棄することを要求するステップと、
    要求側のエミュレートされたCPUプロセスによって保持されているメモリ単位へのアクセスを他のエミュレートされたCPUプロセスが要求しているかどうかを判断し、前記他のエミュレートされたCPUプロセスがアクセスを要求していることを示していると判断したことに応答して、前記操作単位を無効にするステップであって、前記無効化によってデッドロックを回避するステップと、
    のうちの少なくとも1つを含む管理ステップと、
    を含む、前記方法。
  13. 前記アクセス制御ブロックが、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位への読み取りアクセスを行えるかを示す複数の読み取りインジケータと、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位への書き込みアクセスを行えるかを指定する複数の書き込みインジケータと、前記メモリ単位へのアクセスを制御するための1つまたは複数の構築されたアクセス許可とを含む、請求項12記載の方法。
  14. 前記要求されたアクセスが書き込みアクセスであるか読み取りアクセスであるかに応じて、1つまたは複数の権利を放棄するための前記要求が、前記他のエミュレートされたCPUプロセスによって保持されている前記メモリ単位に関するロックを解放するか、または前記メモリ単位に関する前記ロックを降格するための要求を含む、請求項12記載の方法。
  15. 前記他のエミュレートされたCPUプロセスに前記1つまたは複数の権利を放棄させるために、前記割り込みハンドラが、前記他のエミュレートされたCPUプロセスへの非同期割り込みを提供する、請求項12記載の方法。
  16. エミュレートされた処理環境でメモリ・アクセスを管理するシステムであって、
    メモリと、
    操作単位の一部としてメモリ単位へのアクセスを要求するエミュレートされた中央演算処理装置(CPU)プロセスを実行する弱いメモリ整合性アーキテクチャを有するプロセッサと、
    を含み、前記プロセッサが、
    前記メモリ単位へのアクセスを管理するためのエミュレートされたCPUプロセスであって、堅固なメモリ整合性を要求することにより、前記メモリ単位が変更されている場合にエミュレートされた他のCPUプロセスが前記メモリ単位を観測できないようにロックし、
    1つまたは複数のメモリ・アクセス・テストを使用して、前記メモリ単位がアクセス可能であるかどうかを判断するステップであって、前記1つまたは複数のメモリ・アクセス・テストが、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位に対して読み取りアクセスまたは書き込みアクセスを行えるかを示す表示を含む既存の構築されたアクセス制御ブロックに追加された、すでにアドレス変換され、アクセス可能なメモリ単位か否かのテストを含み、前記メモリ単位が利用できる場合に、前記要求されたメモリ単位にアクセスするステップと、
    前記メモリ単位が他のエミュレートされたCPUプロセスによって保持されていて、この時点で前記エミュレートされたCPUプロセスにとってアクセス不能であると判断し、割り込みハンドラを呼び出して、前記エミュレートされたCPUプロセスが前記メモリ単位にアクセスできるようにするために前記メモリ単位について保持されている1つまたは複数の権利を前記他のエミュレートされたCPUプロセスが放棄することを要求するステップと、
    要求側のエミュレートされたCPUプロセスによって保持されているメモリ単位へのアクセスを他のエミュレートされたCPUプロセスが要求しているかどうかを判断し、前記他のエミュレートされたCPUプロセスがアクセスを要求していることを示していると判断したことに応答して、前記操作単位を無効にするステップであって、前記無効化によってデッドロックを回避するステップと、
    のうちの少なくとも1つを含む、前記エミュレートされたCPUプロセスを実行する、
    前記システム。
  17. 前記アクセス制御ブロックが、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位への読み取りアクセスを行えるかを示す複数の読み取りインジケータと、エミュレートされたCPUプロセスがある場合に、どのプロセスが前記メモリ単位への書き込みアクセスを行えるかを指定する複数の書き込みインジケータと、前記メモリ単位へのアクセスを制御するための1つまたは複数の構築されたアクセス許可とを含む、請求項16記載のシステム。
  18. 前記要求されたアクセスが書き込みアクセスであるか読み取りアクセスであるかに応じて、1つまたは複数の権利を放棄するための前記要求が、前記他のエミュレートされたCPUプロセスによって保持されている前記メモリ単位に関するロックを解放するか、または前記メモリ単位に関する前記ロックを降格するための要求を含む、請求項16記載のシステム。
  19. 前記他のエミュレートされたCPUプロセスに前記1つまたは複数の権利を放棄させるために、前記割り込みハンドラが、前記他のエミュレートされたCPUプロセスへの非同期割り込みを提供する、請求項16記載のシステム。
JP2010500189A 2007-03-30 2008-03-13 エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム Active JP4738548B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/694,082 2007-03-30
US11/694,082 US7899663B2 (en) 2007-03-30 2007-03-30 Providing memory consistency in an emulated processing environment
PCT/EP2008/053039 WO2008119642A2 (en) 2007-03-30 2008-03-13 Providing memory consistency in an emulated processing environment

Publications (2)

Publication Number Publication Date
JP2010524054A JP2010524054A (ja) 2010-07-15
JP4738548B2 true JP4738548B2 (ja) 2011-08-03

Family

ID=39735169

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010500189A Active JP4738548B2 (ja) 2007-03-30 2008-03-13 エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US7899663B2 (ja)
EP (1) EP2142993B1 (ja)
JP (1) JP4738548B2 (ja)
KR (1) KR101107469B1 (ja)
CN (1) CN101647003B (ja)
WO (1) WO2008119642A2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436617B2 (en) * 2013-12-13 2016-09-06 Texas Instruments Incorporated Dynamic processor-memory revectoring architecture
US9690709B2 (en) * 2014-07-14 2017-06-27 Oracle International Corporation Variable handles

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001256065A (ja) * 2000-03-14 2001-09-21 Hitachi Ltd 排他制御方法及び計算機システム
WO2003040948A1 (fr) * 2001-11-08 2003-05-15 Fujitsu Limited Ordinateur et procede de commande
JP2004110811A (ja) * 2002-09-17 2004-04-08 Internatl Business Mach Corp <Ibm> マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法およびシステム
JP2006099182A (ja) * 2004-09-28 2006-04-13 Toshiba Corp 計算機システム、プロセッサ割り当て方法及びプログラム
JP2007520769A (ja) * 2003-06-27 2007-07-26 インテル コーポレイション モニタメモリ待機を用いたキューされたロック

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5987566A (ja) 1982-11-12 1984-05-21 Hitachi Ltd メモリアクセス検出方式
JPS63193243A (ja) * 1987-02-06 1988-08-10 Nec Corp デ−タベ−ス処理方式
JPH03260734A (ja) * 1990-03-09 1991-11-20 Meidensha Corp コンピュータシステムの資源管理方式
US5918248A (en) 1996-12-30 1999-06-29 Northern Telecom Limited Shared memory control algorithm for mutual exclusion and rollback
US5778221A (en) * 1997-03-17 1998-07-07 International Business Machines Corporation System for executing asynchronous branch and link in parallel processor
US5790851A (en) * 1997-04-15 1998-08-04 Oracle Corporation Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6282637B1 (en) * 1998-12-02 2001-08-28 Sun Microsystems, Inc. Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs
US6304924B1 (en) * 1999-02-02 2001-10-16 International Business Machines Corporation Two lock-free, constant-space, multiple-(impure)-reader, single-writer structures
AU7112100A (en) 1999-08-31 2001-03-26 Times N Systems, Inc. Shared memory disk
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US6615281B1 (en) * 2000-05-05 2003-09-02 International Business Machines Corporation Multi-node synchronization using global timing source and interrupts following anticipatory wait state
US6738871B2 (en) * 2000-12-22 2004-05-18 International Business Machines Corporation Method for deadlock avoidance in a cluster environment
US6463511B2 (en) * 2000-12-29 2002-10-08 Intel Corporation System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model
US6996812B2 (en) * 2001-06-18 2006-02-07 International Business Machines Corporation Software implementation of synchronous memory barriers
US6857036B2 (en) * 2001-07-17 2005-02-15 Hewlett Packard Development Company, L.P. Hardware method for implementing atomic semaphore operations using code macros
US20030115476A1 (en) * 2001-10-31 2003-06-19 Mckee Bret Hardware-enforced control of access to memory within a computer using hardware-enforced semaphores and other similar, hardware-enforced serialization and sequencing mechanisms
US20030093649A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton Flexible caching of translated code under emulation
US7197585B2 (en) * 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
US7213248B2 (en) * 2002-10-10 2007-05-01 International Business Machines Corporation High speed promotion mechanism suitable for lock acquisition in a multiprocessor data processing system
US6965905B2 (en) * 2002-12-20 2005-11-15 Sun Microsystems, Inc. Lock-free, parallel remembered sets
US6938130B2 (en) * 2003-02-13 2005-08-30 Sun Microsystems Inc. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
JP4398425B2 (ja) 2003-03-04 2010-01-13 興和株式会社 損傷皮膚修復用軟膏状製剤
US7529914B2 (en) * 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions
US8032658B2 (en) * 2004-07-06 2011-10-04 Oracle America, Inc. Computer architecture and process for implementing a virtual vertical perimeter framework for an overloaded CPU having multiple network interfaces
US8954751B2 (en) * 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
US20060265704A1 (en) * 2005-04-21 2006-11-23 Holt John M Computer architecture and method of operation for multi-computer distributed processing with synchronization
US20060248284A1 (en) * 2005-04-29 2006-11-02 Petev Petio G Cache coherence implementation using shared locks and message server
US7747996B1 (en) * 2006-05-25 2010-06-29 Oracle America, Inc. Method of mixed lock-free and locking synchronization
US8166194B2 (en) * 2006-12-13 2012-04-24 Microsoft Corporation Lock-free shared audio buffer
US7685381B2 (en) * 2007-03-01 2010-03-23 International Business Machines Corporation Employing a data structure of readily accessible units of memory to facilitate memory access

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001256065A (ja) * 2000-03-14 2001-09-21 Hitachi Ltd 排他制御方法及び計算機システム
WO2003040948A1 (fr) * 2001-11-08 2003-05-15 Fujitsu Limited Ordinateur et procede de commande
JP2004110811A (ja) * 2002-09-17 2004-04-08 Internatl Business Mach Corp <Ibm> マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法およびシステム
JP2007520769A (ja) * 2003-06-27 2007-07-26 インテル コーポレイション モニタメモリ待機を用いたキューされたロック
JP2006099182A (ja) * 2004-09-28 2006-04-13 Toshiba Corp 計算機システム、プロセッサ割り当て方法及びプログラム

Also Published As

Publication number Publication date
US20080243468A1 (en) 2008-10-02
US7899663B2 (en) 2011-03-01
KR20090110297A (ko) 2009-10-21
EP2142993A2 (en) 2010-01-13
EP2142993B1 (en) 2012-12-19
CN101647003A (zh) 2010-02-10
JP2010524054A (ja) 2010-07-15
KR101107469B1 (ko) 2012-01-19
CN101647003B (zh) 2014-04-16
WO2008119642A3 (en) 2009-01-22
WO2008119642A2 (en) 2008-10-09

Similar Documents

Publication Publication Date Title
Li et al. Design and verification of the arm confidential compute architecture
JP3914541B2 (ja) アドレスに基づいた処理制約のブロッキング
JP6176637B2 (ja) トランザクション環境内でのプログラム・イベント記録
TWI559225B (zh) 於異動處理中儲存/恢復選擇之暫存器之電腦程式產品、電腦系統及方法
JP6091608B2 (ja) Nontransactional store命令
EP2997477B1 (en) Page table data management
JP6168537B2 (ja) トランザクション実行内でのランダム化されたテスト
BR112012033821B1 (pt) método de gerenciamento de requisições de interrupção em um ambiente computacional
BR112014031437B1 (pt) Indicações de ramificação de execução transacional
JP2015525405A (ja) Transactionabort命令
JP2015526788A (ja) トランザクション診断ブロック
BR112014031353B1 (pt) Facilidade de assistência de processador
US20110320638A1 (en) Enable/disable adapters of a computing environment
WO2009102006A1 (ja) アクセス制御装置、その方法及び情報記録媒体
JP2019508797A (ja) トランザクションの優先順位付け
CN114661380B (zh) 面向可信执行环境的系统调用处理方法及装置
US20170249458A1 (en) Application memory protection using a host page table switching virtual machine function
Chakrabarti et al. Intel® software guard extensions (Intel® SGX) architecture for oversubscription of secure memory in a virtualized environment
US20070150630A1 (en) File-based access control for shared hardware devices
JP4738548B2 (ja) エミュレートされた処理環境でメモリ・アクセスを管理する方法、システム、およびそのためのコンピュータ・プログラム
US7743234B2 (en) Facilitating communication within an emulated processing environment
JP2018531462A6 (ja) 例外処理
JP2018531462A (ja) 例外処理
JP2022521148A (ja) メモリを保護するために使用されるストレージ・キーの変更の検出
Soriano‐Salvador et al. Optimistic semaphores with non‐deterministic choice operation for heterogeneous manycore systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100702

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100702

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20100824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101022

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110323

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110328

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: 20110412

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20110412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110426

R150 Certificate of patent or registration of utility model

Ref document number: 4738548

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3