(57)【要約】【課題】記憶域オペランド要求を処理した後に排他的にプライベート（またはローカル）キャッシュにおけるキャッシュ・ラインの保持を延長するコンピューティング環境機構を提供。【解決手段】本機構は、コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを判定することを含む。加えて、記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されているかどうか判定がなされる。記憶域オペランド要求が保持と指定されており、かつ記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されていると判定したことに基づいて、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続ける。保持し続けることは、カウンタを起動して所望の設定間隔の間の継続保持を容易にすることを含んでもよい。【選択図】図４
2020514856.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラムであって、
処理ユニットによって読み取り可能であり、かつ方法を行うために前記処理ユニットによって実行するための命令を記憶したコンピュータ可読記憶媒体を含み、前記方法は、
コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを判定することと、
前記記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が前記処理ユニットによって排他的に所有されているかどうかを確認することと、
前記記憶域オペランド要求が保持と指定されており、かつ前記記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記状態が排他的に所有されていると判定したことに基づいて、前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインを保持し続けることと、を含み、前記保持し続けることが、カウンタを起動して所望の間隔の間の前記継続保持を容易にすることを含む、コンピュータ・プログラム。
【請求項２】
前記起動することが、前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、および前記カウンタが前記設定間隔に達した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記設定間隔の長さが前記記憶域オペランド要求のアクセス型に依存しており、前記アクセス型が、フェッチ型、ストア型および更新型から成る群からである、請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記設定カウント間隔の前記長さが、前記フェッチ型に対してより前記ストア型および前記更新型に対して大きい、請求項３に記載のコンピュータ・プログラム。
【請求項５】
前記設定間隔が、時間ベースの間隔およびサイクル・ベースの間隔から成る群からである、請求項２に記載のコンピュータ・プログラム。
【請求項６】
前記記憶域オペランド要求のアクセス型を判定すること、および前記アクセス型がフェッチ型アクセスであると判定したことに基づいて、前記カウンタが前記設定間隔に達したことに基づいて排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを更に含む、請求項２に記載のコンピュータ・プログラム。
【請求項７】
前記記憶域オペランド要求のアクセス型を判定すること、および前記アクセス型がストア型または更新型であることに基づいて、後続の記憶域オペランド要求が前記対応キャッシュ・ラインに対して解放と指定されているかどうかを判定すること、および前記後続の記憶域オペランド要求が解放と指定されていることに基づいて、排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを更に含む、請求項１に記載のコンピュータ・プログラム。
【請求項８】
前記起動することが、前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、および前記カウンタが前記設定間隔に達することまたは前記対応キャッシュ・ラインに対して解放と指定された前記後続の記憶域オペランド要求を受信することの早い方の発生に応じて、排他的に前記対応キャッシュ・ラインの前記保持を中止することを含む、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインを前記保持し続けることの間、プライベート・キャッシュにおける前記対応キャッシュ・ラインに対するキャッシュ無効化指令が拒否される、請求項１に記載のコンピュータ・プログラム。
【請求項１０】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、
メモリと、
前記メモリと通信可能に結合される処理ユニットとを備え、前記コンピュータ・システムが、
コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを判定することと、
前記記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が前記処理ユニットによって排他的に所有されているかどうかを確認することと、
前記記憶域オペランド要求が保持と指定されており、かつ前記記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記状態が排他的に所有されていると判定したことに基づいて、前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインを保持し続けることと、を含み、前記保持し続けることが、カウンタを起動して所望の間隔の間の前記継続保持を容易にすることを含む、方法を行うように構成される、コンピュータ・システム。
【請求項１１】
前記起動することが、前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、および前記カウンタが前記設定間隔に達した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを含む、請求項１０に記載のコンピュータ・システム。
【請求項１２】
前記設定間隔の長さが前記記憶域オペランド要求のアクセス型に依存しており、前記アクセス型が、フェッチ型、ストア型および更新型から成る群からである、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記設定間隔の前記長さが、前記フェッチ型に対してより前記ストア型および前記更新型に対して大きい、請求項１２に記載のコンピュータ・システム。
【請求項１４】
前記設定間隔が、時間ベースの間隔およびサイクル・ベースの間隔から成る群からである、請求項１１に記載のコンピュータ・システム。
【請求項１５】
前記記憶域オペランド要求のアクセス型を判定すること、および前記アクセス型がフェッチ型アクセスであると判定したことに基づいて、前記カウンタが前記設定間隔に達したことに基づいて排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを更に含む、請求項１１に記載のコンピュータ・システム。
【請求項１６】
前記記憶域オペランド要求のアクセス型を判定すること、および前記アクセス型がストア型または更新型であることに基づいて、後続の記憶域オペランド要求が前記対応キャッシュ・ラインに対して解放と指定されているかどうかを判定すること、および前記後続の記憶域オペランド要求が解放と指定されていることに基づいて、排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを更に含む、請求項１０に記載のコンピュータ・システム。
【請求項１７】
前記起動することが、前記記憶域オペランド要求の処理を排他的に完了した後にプライベート・キャッシュにおける前記対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、および前記カウンタが前記設定間隔に達することまたは前記対応キャッシュ・ラインに対して解放と指定された前記後続の記憶域オペランド要求を受信することの早い方の発生に応じて、排他的に前記対応キャッシュ・ラインの前記保持を中止することを含む、請求項１６に記載のコンピュータ・システム。
【請求項１８】
前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインを前記保持し続けることの間、プライベート・キャッシュにおける前記対応キャッシュ・ラインに対するキャッシュ無効化指令が拒否される、請求項１０に記載のコンピュータ・システム。
【請求項１９】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、
コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを、処理ユニットによって判定することと、
前記記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が前記処理ユニットによって排他的に所有されているかどうかを確認することと、
前記記憶域オペランド要求が保持と指定されており、かつ前記記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記状態が排他的に所有されていると判定したことに基づいて、前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインを保持し続けることと、を含み、前記保持し続けることが、カウンタを起動して所望の間隔の間の前記継続保持を容易にすることを含む、コンピュータ実装方法。
【請求項２０】
前記起動することが、前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、および前記カウンタが前記設定間隔に達した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを含む、請求項１９に記載のコンピュータ実装方法。
【請求項２１】
前記設定間隔の長さが前記記憶域オペランド要求のアクセス型に依存しており、前記アクセス型が、フェッチ型、ストア型および更新型から成る群からである、請求項２０に記載のコンピュータ実装方法。
【請求項２２】
前記設定間隔の前記長さが、前記フェッチ型に対してより前記ストア型および前記更新型に対して大きい、請求項２１に記載のコンピュータ実装方法。
【請求項２３】
前記記憶域オペランド要求のアクセス型を判定すること、および前記アクセス型がフェッチ型アクセスであると判定したことに基づいて、前記カウンタが前記設定間隔に達したことに基づいて排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを更に含む、請求項２０に記載のコンピュータ実装方法。
【請求項２４】
前記記憶域オペランド要求のアクセス型を判定すること、および前記アクセス型がストア型または更新型であることに基づいて、後続の記憶域オペランド要求が前記対応キャッシュ・ラインに対して解放と指定されているかどうかを判定すること、および前記後続の記憶域オペランド要求が解放と指定されていることに基づいて、排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの前記保持を中止することを更に含む、請求項１９に記載のコンピュータ実装方法。
【請求項２５】
前記起動することが、前記記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける前記対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、および前記カウンタが前記設定間隔に達することまたは前記対応キャッシュ・ラインに対して解放と指定された前記後続の記憶域オペランド要求を受信することの早い方の発生に応じて、排他的に前記対応キャッシュ・ラインの前記保持を中止することを含む、請求項２４に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
１つまたは複数の態様が、プライベート・キャッシュにおけるキャッシュ・ラインの排他保持を延長するための機構により、コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム、コンピュータ・システムおよびコンピュータ実装方法に関する。
【背景技術】
【０００２】
多重処理コンピューティング環境において、中央処理装置（ＣＰＵ）またはコアなどの複数の処理ユニットが接続されて、共通の主記憶場所などの共通記憶域へのアクセスを共用する。構成全体の記憶階層は、各処理ユニットにプライベートまたはローカルな様々なキャッシュ・レベル、いくつかの処理ユニット間で共用される様々なキャッシュ・レベル、および主記憶域を含んでもよい。処理ユニットが記憶場所を更新することになるとき、記憶域のラインが記憶階層によって処理ユニットに転送され、そしてラインは、更新を行う処理ユニットにプライベートであるキャッシュ・レベル内で排他的に保持される。記憶域のラインが処理ユニットによって排他的に保持されている間、他の処理ユニットは、ラインが解放されて、もはや処理ユニットによって排他的に保持されなくなる後まで、記憶域のそのラインを更新するまたは読み取るのを許可されない。
【０００３】
いくつかのコンピュータ・プロセスが主記憶域の領域へのアクセスを共用する場合、記憶域のその領域へのアクセスを制御するために、セマフォ（またはロック）が使用されてもよい。セマフォは、典型的に主記憶域におけるワードまたはダブル・ワードであり、そしてセマフォ内容は、構成内のどの処理ユニットが記憶域の対応領域へのアクセスを現在許可されているかを指示する。処理ユニットで実行しているプロセスが記憶領域へのアクセスを必要とすると、そのプロセスは、セマフォを更新して、共用領域が使用中であると示し、共用領域にアクセスするタスクを完了し、次いで再びセマフォを更新して、共用領域がもはや使用中でないことを示す。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】"z/Architecture Principles of Operation," IBM Publication No. SA22-7832-10, March 2015
【非特許文献２】"Power ISA (TM) Version 2.07B," International Business Machines Corporation, April 9, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、プライベート・キャッシュにおけるキャッシュ・ラインの排他保持を延長するための機構により、コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム、コンピュータ・システムおよびコンピュータ実装方法を提供する。
【課題を解決するための手段】
【０００６】
先行技術の或る欠点が対処され、そして１つまたは複数の態様において、コンピューティング環境における処理を容易にするためのコンピュータ・プログラムの提供を通じて、追加の利点が提供される。本コンピュータ・プログラムは、処理ユニットによって読み取り可能であり、かつ方法を行うために処理ユニットによって実行するための命令を記憶した記憶媒体を含む。同方法は、例えば、コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを判定することを含む。加えて、同方法は、記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が処理ユニットによって排他的に所有されているかどうかを確認することを含む。記憶域オペランド要求が保持と指定されており、かつ記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されていると判定したことに基づいて、同方法は、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続けることを更に含む。保持し続けることは、カウンタを起動して所望の間隔の間の継続保持を容易にすることを含む。
【０００７】
有利には、コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対応する特定の記憶域オペランド要求またはアクセスが保持と指定されていることをプログラムが処理ユニットに信号で伝える機構（または能力）を提供することによって、コンピュータ環境処理が強化される。特定の記憶域オペランド要求を保持と識別したことに基づいて、かつ記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されていると判定したことに基づいて、処理ユニットは、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを所望の間隔の間保持し続ける。したがって、処理ユニットは、従来より長い継続時間の間、コンピューティング環境の全体にわたって排他的にキャッシュ・ラインを保持し、それによってキャッシュ・ラインを解放する前に処理ユニットで動かされているプロセスを完了する確率を上昇させる目的で、標準メモリ管理プロトコルから逸脱してもよい。これは有利には、セマフォ（またはロック）を含むキャッシュ・ラインが潜在的にコンピューティング環境を非生産的に動き回る回数を低減させ、それによって全体のシステム性能を上昇させる。
【０００８】
１つまたは複数の実装において、カウンタを起動することは、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、およびカウンタが設定間隔に達した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの保持を中止することを含んでもよい。１つまたは複数の実施形態において、設定間隔の長さが記憶域オペランド要求のアクセス型に依存しており、ここでアクセス型は、フェッチ型、ストア型または更新型アクセスの１つであってもよい。特定の実施形態において、設定間隔の長さは、フェッチ型アクセスに対してよりストア型および更新型アクセスに対して大きくてもよい。
【０００９】
１つまたは複数の実装において、設定間隔は、時間ベースの間隔およびサイクル・ベースの間隔から成る群からであってもよい。更に、１つまたは複数の実施形態において、同方法は、記憶域オペランド要求のアクセス型を判定すること、およびアクセス型がフェッチ型アクセスであると判定したことに基づいて、カウンタが設定間隔に達したことに基づいて排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの保持を中止することを含んでもよい。
【００１０】
或る実施形態において、同方法は、記憶域オペランド要求のアクセス型を判定することを更に含んでもよく、そしてアクセス型がストア型または更新型であることに基づいて、同方法は、後続の記憶域オペランド要求が対応キャッシュ・ラインに対して解放と指定されているかどうかを判定することを含んでもよい。後続の記憶域オペランド要求が解放と指定されていることに基づいて、同方法は、排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの保持を中止することを含んでもよい。更に、カウンタを起動することは、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの継続保持のための設定間隔を起動することを含んでもよい。加えて、カウンタが設定間隔に達することまたは対応キャッシュ・ラインに対して解放と指定された後続の記憶域オペランド要求を受信することの早い方に応じて、対応キャッシュ・ラインの保持を中止することが発生してもよい。
【００１１】
１つまたは複数の実装において、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続けることの間、プライベート・キャッシュにおける対応キャッシュ・ラインに対するコンピューティング環境のシステム制御からのいかなるキャッシュ無効化指令も拒否されることになる。
【００１２】
別の態様において、コンピューティング環境内の処理を容易にするためのコンピュータ・システムが提供される。コンピュータ・システムは、メモリと、メモリと通信可能に結合される処理ユニットとを含んでおり、ここでコンピュータ・システムは、方法を行うように構成される。同方法は、例えば、コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを判定することを含む。加えて、同方法は、記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が処理ユニットによって排他的に所有されているかどうかを確認することを含む。記憶域オペランド要求が保持と指定されており、かつ記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されていると判定したことに基づいて、同方法は、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続けることを更に含む。保持し続けることは、カウンタを起動して所望の間隔の間の継続保持を容易にすることを含む。
【００１３】
更なる態様において、コンピューティング環境内の処理を容易にするコンピュータ実装方法が提供される。本コンピュータ実装方法は、例えば、コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを処理ユニットによって判定することを含む。加えて、本方法は、記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が処理ユニットによって排他的に所有されているかどうかを確認することを含む。記憶域オペランド要求が保持と指定されており、かつ記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されていると判定したことに基づいて、本方法は、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続けることを更に含む。保持し続けることは、カウンタを起動して所望の間隔の間の継続保持を容易にすることを含む。
【００１４】
本明細書に記載される技術を通じて、追加の特徴および利点が実現される。他の実施形態および態様は、本明細書に詳細に記載され、かつ特許請求される態様の一部と考えられる。
【００１５】
１つまたは複数の態様が特に指摘され、そして本明細書の結びの請求項に例として明確に主張される。上記ならびに１つまたは複数の態様の目的、特徴および利点は、添付図面と併せて以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１６】
【図１】本発明の１つまたは複数の態様を組み込んで使用するコンピューティング環境の１つの例を描く。
【図２】本発明の１つまたは複数の態様を組み込んで使用するコンピューティング環境の更なる例を描く。
【図３】本発明の１つまたは複数の態様を組み込んで使用する多重処理ユニット環境の１つの例を描く。
【図４】本発明の１つまたは複数の態様に従って、記憶域オペランド要求関連の処理の１つの実施形態を描く。
【図５】本発明の１つまたは複数の実施形態に従って、記憶域オペランド要求関連の処理のより詳細な例を描く。
【図６】本発明の１つまたは複数の実施形態に従って、記憶域オペランド要求関連の処理のより詳細な例を描く。
【図７】本発明の１つまたは複数の態様に従って有用な命令形式の１つの実施形態を例示する。
【図８】本発明の１つまたは複数の態様に従って、図７に描かれるような命令形式のアクセス目的制御フィールドの１つの実施形態を例示する。
【図９】本発明の１つまたは複数の態様に従って、図７および８に描かれるような命令を使用して処理挙動を制御する際に使用されることができるフロー図の一実施形態を例示する。
【図１０】本発明の１つまたは複数の態様に従って、記憶域オペランド要求関連の処理の更なる例を描く。
【図１１】本発明の１つまたは複数の態様に従って、記憶域オペランド要求関連の処理の更なる例を描く。
【図１２】本発明の１つまたは複数の態様を組み込んで使用するコンピューティング環境の別の例を描く。
【図１３】図１２のメモリの更なる詳細を描く。
【図１４】クラウド・コンピューティング環境の１つの実施形態を描く。
【図１５】抽象化モデル層の１つの例を描く。
【発明を実施するための形態】
【００１７】
言及したように、パイプライン処理、スーパースカラ、アウト・オブ・オーダー実行および分岐予測など、個々の処理ユニット性能を強化すると意図される処理ユニット特徴は、結果として投機的メモリ要求になることがある。プライベートな記憶場所に対する投機的要求は有利であり得るが、しかし共通の記憶場所に対する過剰な投機的要求はセマフォ（またはロック）処理に不利益であり得る。
【００１８】
共通の共用記憶場所を制御するセマフォに対する処理ユニット間の競合は：投機的メモリ要求の数がコンピューティング環境（もしくはコンピューティング構成）における処理ユニットによって増加するにつれて、コンピューティング環境における処理ユニットの数が増加するにつれて、または潜在的にメモリ・サブシステム・トポロジ等に基づいて、増加する。処理ユニット間の競合が増加するにつれて、各個々の処理ユニットが特定の共用記憶場所を含む記憶域のラインを首尾よく取得および保持することがますます困難になる。したがって、全体のシステム性能が低下することがある。
【００１９】
例えば、複数の処理ユニットがセマフォに対応する記憶場所を更新することを試みるとき、システム制御が、排他状態のセマフォを含んでもよい記憶域のラインを現在保持している処理ユニットを含む、コンピューティング環境における全ての処理ユニットにキャッシュ無効化指令をブロードキャストしてもよい。標準メモリ管理プロトコルは、ロックを所有するプロセスを現在実行している処理ユニットに、プロセスが全てのタスクを完了することができる前に、およびプロセスがロックを更新して、共用領域がもはや使用中でないことを示すことができる前に、ラインの排他所有を解放させることがある。この場合、処理ユニットは、プロセスを終えるために後に再び排他的にラインを取り出す必要があることになる。これに鑑みて、セマフォを含むキャッシュ・ラインが、いかなる個々のプロセスにも利益を与えることなく、コンピューティング環境を頻繁に動き回っていることがある。
【００２０】
本発明の１つまたは複数の態様に従って、特定の記憶域オペランド・アクセスがセマフォ（またはロック）を含む共通の記憶場所に対応し、かつ延長保持を有することになることをプログラムが処理ユニットに信号で伝える機構が提供される。信号で伝えられると、処理ユニットは、従来より長い継続時間の間、コンピューティング環境の全体にわたって、排他的にキャッシュ・ラインを保持し、それによってキャッシュ・ラインを解放する前に処理ユニットで動かされているプロセスを完了する確率を上昇させる目的で、標準メモリ管理プロトコルから逸脱してもよい。結果として、セマフォを含むキャッシュ・ラインがコンピューティング環境を非生産的に動き回る回数が低減され、それによってシステム性能を上昇させる。
【００２１】
本発明の１つまたは複数の態様を組み込んで使用するコンピューティング環境の１つの実施形態が図１を参照しつつ記載される。１つの例において、コンピューティング環境は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供される、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいてもよい。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの１つの実施形態が"z/Architecture Principles of Operation," IBM Publication No. SA22-7832-10, March 2015に記載されており、ここにその全体が参照により本明細書に組み込まれる。Ｚ／ＡＲＣＨＩＴＥＣＴＵＲＥは、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。
【００２２】
別の例において、コンピューティング環境は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供される、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいてもよい。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅの１つの実施形態が"Power ISATM Version 2.07B," International Business Machines Corporation, April 9, 2015に記載されており、ここにその全体が参照により本明細書に組み込まれる。ＰＯＷＥＲ  ＡＲＣＨＩＴＥＣＴＵＲＥは、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。
【００２３】
コンピューティング環境は、また、インテル（Ｒ）ｘ８６アーキテクチャを含むがこれに限定されない、他のアーキテクチャに基づいてもよい。他の例も存在する。
【００２４】
図１に図示されるように、コンピューティング環境１００は、例えば、多数の他の汎用または専用コンピューティング・システム環境または構成と動作する、例えば、コンピュータ・システム／サーバ１２を有するノード１０を含む。コンピュータ・システム／サーバ１２との使用に適するであろう周知のコンピューティング・システム、環境または構成あるいはその組合せの例としては、パーソナル・コンピュータ（ＰＣ）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベース・システム、セット・トップ・ボックス、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００２５】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で記載されてもよい。一般に、プログラム・モジュールは、特定のタスクを行う、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含んでもよい。コンピュータ・システム／サーバ１２は、通信ネットワークを通じて連結されるリモート処理デバイスによってタスクが行われる分散クラウド・コンピューティング環境を含むがこれに限定されない、多くのコンピューティング環境で実施されてもよい。分散クラウド・コンピューティング環境において、メモリ記憶デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体にプログラム・モジュールが設けられてもよい。
【００２６】
図１に図示されるように、コンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で図示される。コンピュータ・システム／サーバ１２の部品は、１つまたは複数のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含む様々なシステム部品をプロセッサ１６に結合するバス１８を含んでもよいが、これらに限定されない。
【００２７】
バス１８は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィクス・ポート、および各種のバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、数種類のバス構造のいずれかの１つまたは複数を表す。限定でなく、例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）ローカル・バスおよびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスを含む。
【００２８】
コンピュータ・システム／サーバ１２は、典型的に各種のコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２によってアクセス可能であるいかなる入手可能な媒体であってもよく、そしてそれは、揮発性と不揮発性の両方の媒体、取外し可能と取外し不可能の両方の媒体を含む。
【００２９】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方など、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、他の取外し可能／取外し不可能な揮発性／不揮発性コンピュータ・システム記憶媒体を更に含んでもよい。単に例として、取外し不可能な不揮発性磁気媒体（図示されず、典型的に「ハード・ドライブ」と呼ばれる）から読み取り、それに書き込むために、記憶システム３４が設けられることができる。図示されないが、取外し可能な不揮発性磁気ディスク（例えば、「フロッピー・ディスク」）から読み取り、それに書き込むための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体などの取外し可能な不揮発性光ディスクから読み取り、またはそれに書き込むための光ディスク・ドライブが設けられることができる。そのような例において、各々は、１つまたは複数のデータ媒体インタフェースによってバス１８に接続されることができる。更に描かれかつ下記されることになるように、メモリ２８は、本発明の実施形態の機能を実施するように構成されるプログラム・モジュールの集合（例えば、少なくとも１つ）を有する少なくとも１つのプログラムを含んでもよい。
【００３０】
プログラム・モジュール４２の集合（少なくとも１つ）を有するプログラム／ユーティリティ４０が、限定でなく、例として、オペレーティング・システム１７、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データと同様に、メモリ２８に記憶されてもよい。オペレーティング・システム、１つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データの各々またはその何らかの組合せがネットワーキング環境の実装を含んでもよい。プログラム・モジュール４２は、一般に、本明細書に記載されるように、本発明の１つまたは複数の実施形態の機能または方法論あるいはその両方を実施してもよい。
【００３１】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４等などの１つもしくは複数の外部デバイス１４；ユーザがコンピュータ・システム／サーバ１２と対話することを可能にする１つもしくは複数のデバイス；またはコンピュータ・システム／サーバ１２が１つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデム等）；あるいはその組合せとも通信してもよい。そのような通信は、入出力（Ｉ／Ｏ）インタフェース２２を介して発生することができる。更にまた、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、一般のワイド・エリア・ネットワーク（ＷＡＮ）または公衆ネットワーク（例えば、インターネット）あるいはその組合せなどの１つまたは複数のネットワークと通信することができる。描かれるように、ネットワーク・アダプタ２０はバス１８を介してコンピュータ・システム／サーバ１２のその他の部品と通信する。図示されないが、コンピュータ・システム／サーバ１２と併せて、他のハードウェアまたはソフトウェア部品あるいはその両方が使用され得ることが理解されるべきである。例としては：マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブおよびデータ保存用記憶システム等を含むが、これらに限定されない。
【００３２】
一例として、処理ユニット１６は、命令を実行するために使用される複数の機能部品を含んでもよい。これらの機能部品は、例えば、実行されることになる命令をフェッチする命令フェッチ部品；フェッチされた命令をデコードする命令デコード・ユニット；デコードされた命令を実行する命令実行部品；必要に応じて、命令実行のためにメモリにアクセスするメモリ・アクセス部品；および実行された命令の結果を提供するライト・バック部品を含んでもよい。これらの部品の１つまたは複数が、本発明の態様に従って、以下に更に記載されるように、保持と識別される記憶域オペランド要求に対応するキャッシュ・ラインに関する典型的なメモリ管理プロトコルからの逸脱、および解放と識別される記憶域オペランド要求に対応するキャッシュ・ラインに関して典型的なメモリ管理プロトコルを再開することを実装するために使用されてもよい。
【００３３】
処理ユニット１６は、１つの実施形態において、機能部品の１つまたは複数によって使用されることになる１つまたは複数のレジスタも含む。
【００３４】
本発明の１つまたは複数の態様を組み込んで使用するコンピューティング環境の別の例が図２を参照しつつ記載される。１つの例において、コンピューティング環境はここでも、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供される、上記参照したｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいてもよい。別の例において、コンピューティング環境は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供される、上記参照したＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅに基づいてもよい。コンピューティング環境は、また、インテル６４およびＩＡ−３２アーキテクチャを含むがこれらに限定されない、他のアーキテクチャに基づいてもよい。他の例も存在する。
【００３５】
図２を参照すると、１つの例において、コンピューティング環境２００は、１つまたは複数の高次キャッシュ２０５に結合される、中央処理装置（ＣＰＵ）などの少なくとも１つの処理ユニット（ＰＵ）を含む。中央処理装置１６は、例えば、データを要求および消費する１つまたは複数の実行ユニット２０１を含む。実行ユニット２０１は、ロード／ストア・ユニット（ＬＳＵ）２０２に結合されており、それはロード／ストア・キュー（ＬＳＱ）２０３を含む。ロード／ストア・ユニット２０２は、プリフェッチされたデータを取り出す、またはデータがメモリ・サブシステムもしくは高次キャッシュからフェッチされるようにするメモリ・アクセス操作（ロードおよびストア）を発行する。ＬＳＵ２０２は、例えば、例として変換索引バッファ（ＴＬＢ）または実効対実アドレス変換テーブル（ＥＲＡＴ）などの変換メカニズムを介してローカル（またはプライベート）キャッシュ２０４に結合されてもよい。
【００３６】
処理ユニット１６は、例えば、Ｌ１データ・キャッシュを含んでもよい、ローカル（またはプライベート）キャッシュ２０４；単一の２次（Ｌ２）キャッシュまたは複数の他の連続番号の高次、例えば、Ｌ３、Ｌ４を含んでもよい、１つまたは複数の高次キャッシュ２０５；メモリ２１５；およびメモリ２１５へのアクセスを制御する、関連メモリ・コントローラ２１０を含むメモリ階層に結合されて、それと通信する。ローカル・キャッシュ２０４は、プリフェッチされるデータ（またはデータ・ストリームあるいはその両方）のためのプリフェッチ・バッファの役目を果たす。ローカル・キャッシュ２０４は、対応ロード・ミス・キュー（ＬＭＱ）を有しており、それをキャッシュが活用して進行中のプリフェッチ要求についての情報を保存する。
【００３７】
更に、１つの実施形態において、ローカル・キャッシュ２０４は、関連キャッシュ・ディレクトリを有してもよく、それはキャッシュの一部として実装されても、またはそこから別々に維持されてもよい。キャッシュ・ディレクトリは、ローカル・キャッシュにおける各キャッシュ・ラインに対するタグを含んでもよい。タグは、キャッシュ・ラインにおけるデータの実または絶対アドレスの少なくとも一部の他に、データが排他的に保持されているか共用されているか等などの状況情報；それが最も最近に使用されたか最も過去に使用されたかその間のどこかでか等などのデータの使用；または他の状況情報；あるいはその組合せを含む、キャッシュ・ラインについての情報を提供する。タグは、キャッシュ・ラインにおけるデータに関する追加情報も含んでもよい。各キャッシュ・レベルは、関連キャッシュ・ディレクトリ、すなわち、それ自体のディレクトリか共用ディレクトリかを有してもよい。
【００３８】
メモリ階層例に加えて、コンピューティング環境２００は、処理ユニット１６の観点からメモリ階層の一部を形成する追加の記憶デバイスも含んでもよい。記憶デバイスは、フロッピー・ディスク、ハード・ドライブ、ＣＤ−ＲＯＭまたはＤＶＤなどの１つまたは複数の電子記憶媒体であってもよい。ＣＰＵ１６は、例として、バスまたは直接チャネルあるいはその両方を介してを含め、様々なメカニズムによってメモリ階層内の上記のデバイスの各々と通信する。
【００３９】
バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィクス・ポート、および各種のバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、数種類のバス構造のいずれかの１つまたは複数を表してもよい。限定でなく、例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）ローカル・バスおよびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスを含む。
【００４０】
更なる実施形態において、本明細書に開示される処理は、図３を参照しつつ下記されるものなどのマルチプロセッサ環境で使用されてもよい。１つの例において、マルチプロセッサ環境３００は、複数のコア３０２ａ．．．３０２ｎを含む。各コアは、Ｌ１キャッシュ３０６ａ、３０６ｎなどのローカル（またはプライベート）キャッシュを含む少なくとも１つのハードウェア・スレッドまたは処理ユニット３０４ａ、３０４ｎを含む。各コア３０２ａ、３０２ｎは、０個以上の高次プライベート・キャッシュ（例えば、Ｌ２キャッシュ）に結合される。追加的に、マルチプロセッサ環境３００は、コア間で共用される、より詳細には、処理ユニット間で共用される、Ｌ３またはＬ４キャッシュあるいはその両方などの０個以上の共用キャッシュ３１０を含む。他のトポロジも存在してもよい。
【００４１】
マルチプロセッサ環境（または処理ユニットの部分集合）における各処理ユニットは、利用可能であれば、共用キャッシュの１つまたは複数を含むキャッシュの１つまたは複数に問い合わせて選択データのキャッシュ常駐状況または他の情報あるいはその両方を取得するために使用されることになる問合せ機能も含んでもよい。
【００４２】
言及したように、本発明の１つまたは複数の態様に従って、コンピューティング環境内の処理を強化するための機構が本明細書で提供される。図４に例示されるように、本機構は、コンピューティング環境の複数の処理ユニットによって共用される記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを判定する能力４００を含んでもよい。加えて、本機構は、記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されているかどうかを確認すること４１０を含んでもよい。記憶域オペランド要求が保持と指定されており、かつ記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されていると判定したことに基づいて、本機構は、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続けることを含む。保持し続けることは、カウンタを起動して所望の間隔の間の継続保持を容易にすることを含んでもよい。
【００４３】
１つまたは複数の実装において、カウンタを起動することは、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、および設定間隔に達した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの保持を中止することを含んでもよい。１つまたは複数の実施形態において、設定間隔の長さが記憶域オペランド要求のアクセス型に依存していてもよい。アクセス型は、例えば、フェッチ型、ストア型または更新型アクセスであってもよい。或る実施形態において、設定間隔の長さは、フェッチ型アクセスに対してよりストア型アクセスまたは更新型アクセスに対して大きくてもよい。例として、設定間隔は、時間ベースの間隔またはサイクル・ベースの間隔であってもよく、そして対応キャッシュ・ラインの継続保持は、カウンタが設定カウント間隔までカウントダウン（またはアップ）したことに応じて解放されてもよい。
【００４４】
１つまたは複数の実装において、本機構は、記憶域オペランド要求のアクセス型を判定することを含んでもよく、そしてアクセス型がフェッチ型アクセスであると判定したことに基づいて、プライベート・キャッシュにおける対応キャッシュ・ラインの排他保持は、カウンタが設定カウント間隔に達したことに基づいて解放されてもよい。
【００４５】
１つまたは複数の実施形態において、本機構は、記憶域オペランド要求のアクセス型を判定し、そしてアクセス型がストア型または更新型であることに基づいて、後続のオペランド要求が対応キャッシュ・ラインに対して解放と指定されているかどうかを更に判定してもよい。後続の記憶域オペランド要求が解放と指定されていることに基づいて、プライベート・キャッシュにおける対応キャッシュ・ラインの排他保持が中止される。加えて、カウンタを起動することは、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、および後続の記憶域オペランド要求が解放と指定されていることまたはカウンタが設定カウント間隔に達することの最も早いものに応じて、対応キャッシュ・ラインの保持を中止することを含んでもよい。
【００４６】
１つまたは複数の実施形態において、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの継続保持の間、プライベート・キャッシュにおける対応キャッシュ・ラインに対するいかなるキャッシュ無効化指令も（例えば、コンピューティング環境のシステム制御からの）拒否される。
【００４７】
図５および６は、本発明の１つまたは複数の態様に従ってプロセス・フローのより詳細な実施形態を描く。まず図５を参照すると、処理ユニットは、命令をフェッチし５００、そして命令をデコードして、例えば、オペランド関連信号、実行ユニット（ＬＳＵ、ＦＸＵ等）、「保持」指定、「解放」指定等を判定してもよい５０５。言及したように、保持指定および解放指定を提供する能力は、命令セット・アーキテクチャ（ＩＳＡ）で実装されてもよく、その一例が図７〜９を参照しつつ下記される。
【００４８】
命令は実行のためにキューに入れられ５１０、そして処理ユニットは、命令の発行準備ができているかどうかを判定する５１５。「いいえ」であれば、命令はキュー５１０に留まる。そうでなければ、命令は実行ユニットに発行される。この例において、命令は、記憶域オペランド要求またはアクセスを含むと仮定されて、処理のためにロード・ストア・ユニット（ＬＳＵ）５０１（図６）に発行される。
【００４９】
図６を参照すると、ＬＳＵ５０１は、記憶域オペランド・アドレスを決定し５３０、そして全記憶階層（Ｌ１キャッシュなど、処理ユニットにとってのプライベート・キャッシュを含む）に記憶域オペランド・アクセスを要求する５３５。
【００５０】
描かれる実装において、ＬＳＵ５０１は、記憶域オペランド要求が保持と指定されているかどうかを判定する５４０。「いいえ」であれば、記憶域オペランド要求を処理する際に、標準メモリ管理プロトコルが利用される５９５。「はい」であれば、ＬＳＵ５０１は、記憶域アクセスの型を判定する５４５。描かれる例において、対象の記憶域アクセスの型は、記憶域オペランド要求と関連付けられるフェッチ型アクセス、または代替的に、ストア型アクセスもしくは更新型アクセスを含んでもよい。
【００５１】
フェッチ型アクセスがあると仮定すると、処理は、要求が処理を完了した後にプライベート・キャッシュ・ラインの状態を判定する５５０。状態は、読出し専用（ＲＯ）か排他（ＥＸ）かである。読出し専用であれば、ＬＳＵ５０１は、標準メモリ管理プロトコルを続ける５９５。しかしながら、プライベート・キャッシュにおける対応キャッシュ・ラインが排他（ＥＸ）に保持される場合、カウンタが起動されて所望の（または設定）間隔の間のキャッシュ・ラインの保持を容易にする。特に、１つまたは複数の実装において、タイマーがタイミング期間Ｔ１を開始してもよい５５５。１つまたは複数の他の実施形態において、時間ベースの間隔よりむしろサイクル・ベースの間隔が使用されてもよいことに留意されたい。
【００５２】
ＬＳＵ５０１は、時限Ｔ１が満了したかどうかを判定し５６０、そして「いいえ」であれば、例えば、特定のプライベート・キャッシュ・ラインと関連付けられたシステム制御（ＳＣ）からのいかなるキャッシュ無効化（ＸＩ）指令も拒否すること５６５によって、プライベート・キャッシュにおける対応キャッシュ・ラインを排他的に保持し続ける。一旦タイミング期間または間隔が満了すると、処理は、標準メモリ管理プロトコルに戻る５９５。延長保持間隔の間に、記憶域オペランド要求の処理は完了したかもしれないが、しかし要求が関連付けられている命令の処理は完了しなかったかもしれず、したがって、開示される本機構が、そうでなければ行われるであろう従来通りより長くキャッシュ・ラインの保持を継続する選択権をプログラムに提供することに留意されたい。具体例として、この処理は、後述されるように、命令がロード・アンド・テスト命令である場合に有利であり得る。
【００５３】
質問５４５に戻ると、記憶域アクセスの型がストア型または更新型アクセスである場合、処理は、要求が処理を完了した後にプライベート・キャッシュ・ラインの状態を判定する５７０。読出し専用（ＲＯ）であれば、処理は、標準メモリ・プロトコルに戻る５９５。排他（ＥＸ）であれば、カウンタが起動されて、所望の間隔の間プライベート・キャッシュにおける対応キャッシュ・ラインを排他的に保持し続けることを容易にする。時間ベースの間隔例において、これは、Ｔ２タイミング期間または間隔を開始すること５７５を伴ってもよい。１つまたは複数の実施形態において、タイミング期間Ｔ２がタイミング期間Ｔ１より有意に大きくてもよいことに留意されたい。１つまたは複数の他の実施形態において、時間ベースの間隔よりむしろサイクル・ベースの間隔が使用されてもよいことにも留意されたい。
【００５４】
ＬＳＵ５０１は次に、タイミング期間Ｔ２が満了したかどうかを判定し５８０、そして「はい」であれば、標準メモリ管理プロトコルに戻り５９５、対応キャッシュ・ラインの保持を解放する。タイミング期間Ｔ２が満了していなければ、処理は、解放と指定された後続の記憶域オペランド要求が対応（例えば、Ｌ１）キャッシュ・ラインに対して完了したかどうかを判定する５８５。「はい」であれば、処理は、標準メモリ管理プロトコルに戻る５９５。「いいえ」であれば、ＬＳＵ５０１は、特定のプライベート（例えば、Ｌ１）キャッシュ・ラインと関連付けられたシステム制御からのいかなるキャッシュ無効化（ＸＩ）指令も拒否し５９０、そして戻って、タイミング期間Ｔ２が満了したかどうかを判定する５８０。
【００５５】
本発明の１つまたは複数の実施形態に従って使用されることができる命令形式の１つの実施形態が図７〜９を参照しつつ下記される。図７において、次命令アクセス目的（ＮＩＡＩ）命令として知られている命令形式が描かれる。この命令形式は、これが次命令アクセス目的命令であることを示す操作コード・フィールド６０１を含んでもよい。追加的に、予備フィールド６０２が設けられてもよく、１つまたは複数の実施形態においてゼロを含んでもよい。命令形式は、アクセス目的制御フィールド６０３（Ｉ１）および別のアクセス目的制御フィールド６０４（Ｉ２）などのフィールドまたはオペランドも含んでもよい。
【００５６】
この命令形式に関して、用語一次アクセス・オペランドは、命令の最低番号の記憶域オペランドを意味する。同様に、用語二次アクセス・オペランドは、命令の次に最低番号の記憶域オペランドを意味する。これらの用語は、用語第１のオペランドおよび第２のオペランドとは、たとえ何らかの相関があるとしても、同じ意味を有しない。
【００５７】
Ｉ１  ６０３およびＩ２  ６０４フィールドにおける制御を条件として、ＣＰＵには、次順命令の一次アクセスおよび二次アクセス・オペランドの一方または両方に対する将来のアクセス目的が伝えられる。次順命令は、ＮＩＡＩ命令の後に取り出されて実行される命令であってもよい。Ｉ１  ６０３フィールドは、次順命令の一次アクセス・オペランドに対するアクセス目的をＣＰＵに伝えるコードを含んでもよい。Ｉ２  ６０４フィールドは、次順命令の二次アクセス・オペランドに対するアクセス目的をＣＰＵに伝えるコードを含んでもよい。次順命令が単一の記憶域オペランドだけを有する場合、Ｉ２  ６０４フィールドは無視されてもよい。
【００５８】
命令形式の１つの実施形態は、単一のアクセス目的フィールドを含んでもよい。命令形式の別の実施形態は、２つのアクセス目的フィールドを含んでもよい。命令形式の別の実施形態は、複数のアクセス目的フィールドを含んでもよい。命令形式の更に別の実施形態は、後続の次順命令の数を指定する値を含むフィールドまたはオペランドを含んでもよい。アクセス目的制御フィールドＩ１  ６０３およびＩ２  ６０４は、図８に描かれるような形式６１０を有してもよく、ここでＩ１  ６０３およびＩ２  ６０４フィールドの設定数のビットが、次順命令の対応オペランドに対するアクセス目的をＣＰＵに伝えるコードとして使用される符号なし整数を含む。
【００５９】
本発明の１つまたは複数の態様に従って、例えば、次命令アクセス目的命令のために、新たなアクセス目的コードが提供され、プログラムおよび処理ユニットが、記憶階層を通じてオペランド参照の記憶場所と関連付けられたキャッシュ・ラインの保持を、排他的に取得されれば、延長するようにしてもよい。保持は、典型的なまたは従来の記憶域オペランド・プロトコルと比較して、所望の期間などのいかなる延長間隔であってもよい。このようにして、共用記憶リソースを使用するプログラムには、複数の処理ユニットが記憶領域を共用するコンピューティング環境における別の処理ユニットに共用記憶リソースの制御を潜在的に失う前に更なる進展のための追加時間を取得する能力が備えられる。追加的に、アクセス目的制御フィールドが異なる設定値（解放を示す）を含む場合、処理ユニットは、キャッシュ・ラインが記憶階層の全体にわたって排他的に保持される延長期間（すなわち、延長期間は、コードが保持と指定された次命令アクセス目的を含んだ先行の一対の命令によって起動された）を終了してもよい。この場合、目的は、他の処理ユニットが活用するように共用記憶リソースの制御を放棄することである。単に具体例として、保持値のためのアクセス目的制御フィールドは、例えば、値８であってもよく、ここで次順命令の対応オペランド参照は、多重処理環境における共用記憶領域に対してである。追加的に、解放値のためのアクセス目的制御フィールドは、例えば、値７であってもよく、ここで次順命令の対応オペランド参照は、多重処理環境における共用記憶領域に対してである。
【００６０】
言及したように、制御フィールドに保持および解放値を使用することによって、記憶サブシステムにおける不必要な操作を緩和することが可能である。「保持」と指定されたアクセス目的制御フィールドは、フェッチ型、ストア型または更新型のオペランド参照のために使用されてもよい。アクセス目的保持値を使用することの結果としてキャッシュ・ラインが排他的に保持されてもよい延長間隔は、フェッチ型オペランドに対してよりストア型および更新型オペランドに対して有意に長くてもよい。プログラムが対応ストア型または更新型オペランドに関してアクセス目的値「保持」を使用し（特定のキャッシュ・ラインを保持するよう処理ユニットに伝える）、そしてキャッシュ・ラインが首尾よく更新されると、プログラムは後に、同じ特定のキャッシュ・ラインを参照する対応ストア型または更新型オペランドに関してアクセス目的「解放」値を指定する後続の次命令アクセス目的命令を使用することによって排他保持を明示的に終了してもよい。
【００６１】
プログラムが対応フェッチ型オペランドに関してアクセス目的保持値を使用して、排他的に特定のキャッシュ・ラインを保持するよう処理ユニットに伝える場合、処理ユニットは、本明細書に説明されるように、プログラムからいかなる更なる指令もなくいつ保持を終了するべきかを判定する。
【００６２】
プログラムが、記憶場所を条件付きで更新する対応オペランド参照に関してアクセス目的保持値を使用し、そして記憶域更新を限定する条件が満たされない場合、処理ユニットは、延長期間の間、記憶階層の全体にわたって排他的に対応キャッシュ・ラインを保持することはしない。コンペア・アンド・スワップ命令が、記憶場所を条件付きで更新する記憶域オペランド参照の一例である。アクセス目的解放値に対応するオペランドがストア型または更新型オペランドであるべきであることに留意されたい。更に、アクセス目的保持または解放値は、Ｉ１フィールドによって指定されるように、一次アクセス・オペランドに関して使用されてもよい。
【００６３】
セマフォ・アシスト（またはロック・アシスト）が使用されるときに、アクセス目的保持および解放値を伴う次命令アクセス目的命令を使用する具体例が下記される。有利には、これらのアクセス目的値を使用して、共用記憶領域に対する多重処理構成における複数のＣＰＵ間で競合が低減される。
LOCKTEST
BCR
14,0
ロックをフェッチする前にシリアル化を行う。
NIAI
8,0
ＮＩＡＩ保持
ロックが利用可能であれば、ロックを取得するのに十分長く、ローカルにLOCKADDRキャッシュ・ラインを保持することを試みる。
ローカル・キャッシュにLOCKADDRがなければ投機的ロード・アンド・テスト（ＬＴ）オペランド要求を回避する。
LT
1.LOCKADDR
記憶域からＧＲ１へロックをフェッチする。
ロック値をテストする：ＣＣ＝０であれば、ＧＲ１＝０かつロックが利用可能。
フェッチ型オペランド：後続のＮＩＡＩ解放は必要とされない。
ローカル・キャッシュへ排他的にLOCKADDRを取得してもしなくてもよい。
BRNZ
LOCKTEST
ＣＣが非ゼロであれば、ロックはまだ利用可能でない：分岐して戻り、再試行する
LOCKAVAIL
NIAI
8,0
ＮＩＡＩ保持
ロックを首尾よく取得すれば、比較的長時間の間ローカルにLOCKADDRキャッシュ・ラインを保持することを試み、ロックを解放する前に多くの命令を実行する。
ローカル・キャッシュにLOCKADDRがなければ投機的コンペア・アンド・スワップ（ＣＳ）オペランド要求を回避する。
CS
1,5,LOCKADDR
ＣＣ＝０であれば：まだｌｏｃｋ＝ＧＲ１＝０：新たなロック値を格納する
更新型オペランドは後続のＮＩＡＩ解放が必要とされる
ＣＣ＝１であれば：ロックはもはや利用可能でない：記憶域変更なし。
後続のＮＩＡＩ解放は必要とされない。
操作の前後にシリアル化が行われる。
BRNZ
LOCKTEST
ＣＣ＝１であれば、このＣＰＵができ得る前に異なるＣＰＵがロックを取得した：分岐して戻り、再試行する。
LOCKACQUIRED
LOCKRELEASE
NIAI
7,0
ＮＩＡＩ解放
ロック制御を首尾よく取得したＣＳによって起動されたローカル・キャッシュにおけるLOCKADDRの延長保持を終了する。
ローカル・キャッシュにLOCKADDRがもはやない場合には投機的ＭＶＨＩオペランド要求を回避する。
MVHI
LOCKADDR,0
ロックを解放する。
BCR
14,0
ロックを解放した後にシリアル化を行う。
【００６４】
上記の資料において、次命令アクセス目的（ＮＩＡＩ）命令に、アクセス目的保持および解放値を用いて、ロックおよびロック解除機能から成る、プログラムを強化する一例が提供される。本例は、次命令アクセス目的命令を使用してもよいプログラム内の場所を立証し、そして利益を説明する。上記例はいくつかの仮定を含む。
【００６５】
例えば、記号アドレスLOCKADDRは、リソースのヘッダのための記憶場所であり、それはロック・ワードを含む。ロックがゼロであるときに、ロックおよびリソースが利用可能である。ロックが非ゼロであるとき、LOCKADDRが複数のＣＰＵによって頻繁に参照される記憶場所であり、ロックおよびリソースは利用可能でない。
【００６６】
更に、汎用レジスタ５が、ロック値として使用されることになる、ＣＰＵ  ＩＤなどの非ゼロ値を含む。
【００６７】
上記例におけるＮＩＡＩ命令の使用は結果として：ＣＰＵのローカル・キャッシュ・レベル外の記憶階層へのＬＴ命令のオペランド参照のための投機的問合せを回避し、それによって記憶サブシステムの全体にわたって不必要な問合せを排除すること；ロックが利用可能であれば、ロックを設定するのに十分長く、排他的に取得されれば、ＣＰＵのローカル・キャッシュによって排他的に、ＬＴ命令のオペランド参照に対応するキャッシュ・ラインを保持することになることに留意されたい。ＮＩＡＩ保持がフェッチ型オペランド参照に対応するので、後続のＮＩＡＩ解放は必要とされないことに留意されたい。
【００６８】
コンペア・アンド・スワップ命令と関連付けられたＮＩＡＩ命令の使用に関して：対応キャッシュ・ラインが既に排他的に取得されてはいない場合には、ＣＰＵのローカル・キャッシュ・レベル外の記憶階層へのＣＳ命令のオペランド参照のための投機的問合せが回避され、それによって記憶サブシステムの全体にわたって不必要な問合せを排除し；目的が、LOCKACQUIREDおよびLOCKRELEASEと分類されるプログラム間で多くの命令を実行するために、比較的長い延長期間の間ＣＰＵのローカル・キャッシュに排他的にキャッシュ・ライン（ＣＳの命令のオペランド参照に対応する）を保持することであり；ＣＳ命令の結果的な条件コードが０である場合、記憶場所LOCKADDRが更新され、そしてＣＰＵが延長期間の間排他的にLOCKADDRに対応するキャッシュ・ラインを保持することを試み、そしてプログラムがLOCKADDRに対応する後続のＮＩＡＩ解放を使用してキャッシュ・ラインの延長保持を終了することになることが期待され；ならびにＣＳ命令の結果的な条件コードが１である場合、場所LOCKADDRでの記憶域の内容は変更されず、かつＣＰＵが延長期間の間LOCKADDRに対応するキャッシュ・ラインを保持することはなく、かつLOCKADDRに対応する後続のＮＩＡＩ解放は必要とされないことに留意されたい。
【００６９】
MVHI命令と関連付けられたＮＩＡＩ命令の使用に関して：対応キャッシュ・ラインがもはや排他的に保持されていない場合には、ＣＰＵのローカル・キャッシュ外の記憶階層へのMVHI命令のオペランド参照のための投機的問合せが回避され、それによって記憶サブシステムの全体にわたって不必要な問合せを排除し；そしてＣＰＵが排他的にLOCKADDRに対応するキャッシュ・ラインを保持することを試みる延長期間が終了されることに留意されたい。
【００７０】
ほんの少数の命令だけが追加され；かつ追加される命令のいずれもＣＰＵキャッシュ・ミスに遭遇しなければ、ＬＴ命令と関連付けられたＮＩＡＩ命令を使用する意図された利益を損なうことなく、第１のBRNZ命令とLOCKAVAILプログラム・ラベルとの間で、１つまたは複数の命令がプログラムに追加されてもよいことに留意されたい。
【００７１】
更に、１つまたは複数の特定の実施形態において、一旦ＣＰＵが、対応ストア型または更新型オペランドに対する、キャッシュ・ラインを保持するという要求を引き受けると、初期要求が終結された後まで、対応ストア型または更新型オペランドに対する後続のＮＩＡＩ保持要求は引き受けられなくてもよい。しかしながら、ＣＰＵは、対応フェッチ型オペランドに対するキャッシュ・ラインを保持するという要求を引き受けてもよい。１つまたは複数の実施形態において、いかなる所与の時間にも、処理ユニットまたはＣＰＵは、対応フェッチ型オペランドなどの対応オペランドに対するキャッシュ・ラインを保持するという多くの要求を引き受けてもよい。オペランド場所を条件付きで更新する対応ストア型または更新型オペランドに対して、キャッシュ・ラインが更新されなければ、キャッシュ・ラインを保持するという要求は引き受けられる必要はない。更新とは、格納される値が当初の値と同じであるときを含む。コンペア・アンド・スワップ命令は、記憶場所を条件付きで更新する記憶域オペランド参照の一例である。
【００７２】
対応フェッチ型オペランドに関するＮＩＡＩ保持に続いて、同じキャッシュ・ラインに対する後続のＮＩＡＩ解放は必要とされない。対応フェッチ型オペランドに関するＮＩＡＩ保持に起因する、キャッシュ・ラインが保持される延長期間は、同じキャッシュ・ラインに対するＮＩＡＩ解放を試みることの結果としては終了されないことになる。更に、オペランド場所を条件付きで更新する対応ストア型または更新型オペランドに関するＮＩＡＩ保持に続いて、キャッシュ・ラインが更新されず、同じキャッシュ・ラインに対する後続のＮＩＡＩ解放が必要とされる必要はない。
【００７３】
実施形態に係るフロー図の１つの実施形態が図９を参照しつつ記載される。図示されるように、１つまたは複数の実装において、ＣＰＵは、アクセス目的を示すアクセス目的命令を取得する７００。アクセス目的は、次順命令のオペランドと関連付けられてもよい。アクセス目的は、次順命令に後続の命令によってオペランドの使用法も示してもよい。ＣＰＵは、次いでアクセス目的命令を実行する７１０。１つの実施形態において、処理ユニットは、アクセス目的を内部に、例えば、内部メモリまたは内部制御レジスタに格納することによって、それを記憶してもよい。ＣＰＵは、次順命令を取得する７２０。次順命令は実行され、そして実行の一部として、処理ユニット挙動がアクセス目的命令のアクセス目的に基づいて制御される７３０。
【００７４】
１つまたは複数の実施形態において、処理ユニット挙動制御は、記憶域オペランド要求が保持と指定されており、かつ記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインが処理ユニットによって排他的に所有されている場合に、選択的に、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続けるように本明細書に記載される。言及したように、継続保持は、カウンタを起動して所望の間隔の間の保持を容易にすることを含んでもよい。更に、アクセス型がストア型または更新型であることに基づいて、排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの保持を中止するために、後続の記憶域オペランド要求が対応キャッシュ・ラインに対して解放と指定されてもよい。記憶域オペランド要求を「保持」または「解放」と識別することは、言及したように、１つまたは複数の実装において、アクセス目的命令の制御フィールドの１つまたは複数における指定アクセス目的コードを活用して達成されてもよい。
【００７５】
換言すれば、保持と指定された記憶域オペランドが首尾よく処理されると、本明細書に記載される本機構の一次結果は、処理ユニットが、処理ユニットによって排他的に保持されている特定のキャッシュ・ラインと関連付けられたシステム制御からのキャッシュ無効化指令を拒否することである。これらの指令を拒否することの副産物は、対応キャッシュ・ラインが、典型的なプロトコルが許すであろうより長く処理ユニットによって記憶階層の全体にわたって排他的に保持されるということである。延長保持間隔が満了すると、処理ユニットはまだキャッシュ・ラインを保持しているが、しかし設定間隔が満了した後に、処理ユニットは典型的な記憶階層プロトコルを再開する。そのような場合には、システム制御からのキャッシュ無効化（ＸＩ）指令の受領に応じて、処理ユニットは、キャッシュからラインを解放することになり、そしてそのキャッシュ無効化が引き受けられた後に、処理ユニットはキャッシュ・ラインをもはや保持しないことになる。
【００７６】
図１０および１１を参照すると、本発明の１つまたは複数の態様に従って、コンピューティング環境内の処理を容易にすること（８００）は：コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所に対する記憶域オペランド要求が保持と指定されているかどうかを判定することと；記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が処理ユニットによって排他的に所有されているかどうかを確認することと；記憶域オペランド要求が保持と指定されており、かつ記憶域オペランド要求を処理するために使用されたプライベート・キャッシュにおける対応キャッシュ・ラインの状態が排他的に所有されていると判定したことに基づいて、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続けることとを含む。保持し続けることは、カウンタを起動して所望の間隔の間の継続保持を容易にすることを含む。
【００７７】
１つまたは複数の実装において、カウンタを起動することは、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、およびカウンタが設定間隔に達した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの保持を中止することを含んでもよい（８０５）。１つまたは複数の実施形態において、設定間隔の長さが記憶域オペランド要求のアクセス型に依存していてもよく、ここでアクセス型は、フェッチ型、ストア型または更新型アクセスであってもよい（８１０）。或る実施形態において、設定間隔の長さは、フェッチ型アクセスに対してよりストア型および更新型アクセスに対して大きくてもよい（８１５）。更に、間隔は、時間ベースの間隔かサイクル・ベースの間隔かであってもよい（８２０）。
【００７８】
１つまたは複数の実施形態において、処理は、記憶域オペランド要求のアクセス型を判定すること、およびアクセス型がフェッチ型アクセスであると判定したことに基づいて、カウンタが設定間隔に達したことに基づいて排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの保持を中止することを含んでもよい（８２５）。
【００７９】
１つまたは複数の実施形態において、同処理は、記憶域オペランド要求のアクセス型を判定すること、およびアクセス型がストア型または更新型アクセスであることに基づいて、後続の記憶域オペランド要求が対応キャッシュ・ラインに対して解放と指定されているかどうかを判定すること、および後続の記憶域オペランド要求が解放と指定されていることに基づいて、排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの保持を中止することを含む（８３０）。１つまたは複数の実施形態において、起動することは、記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインの継続保持のための設定間隔を起動すること、およびカウンタが設定間隔に達することまたは対応キャッシュ・ラインに対して解放と指定された後続の記憶域オペランド要求を受信することの早い方の発生に応じて、排他的に対応キャッシュ・ラインの保持を中止することを含んでもよい（８３５）。
【００８０】
記憶域オペランド要求の処理を完了した後に排他的にプライベート・キャッシュにおける対応キャッシュ・ラインを保持し続けることの間、プライベート・キャッシュにおける対応キャッシュ・ラインに対するいかなるキャッシュ無効化指令も拒否される（８４０）。
【００８１】
１つまたは複数の態様を組み込んで使用するコンピューティング環境の別の実施形態が図１２を参照しつつ記載される。この例において、例えば、コンピューティング環境９００は、例えば１つまたは複数のバス９０８または他の接続あるいはその両方を介して互いに結合される、ネイティブ中央処理装置（ＣＰＵ）９０２、メモリ９０４および１つまたは複数の入出力デバイスまたはインタフェース９０６あるいはその両方を含む。例として、コンピューティング環境９００は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるＰｏｗｅｒＰＣ（Ｒ）プロセッサもしくはｐＳｅｒｉｅｓサーバ；カリフォルニア州パロアルトのヒューレット・パッカード社によって提供されるインテルＩｔａｎｉｕｍ（Ｒ）ＩＩプロセッサ搭載ＨＰ  Ｓｕｐｅｒｄｏｍｅ；またはインターナショナル・ビジネス・マシーンズ社、ヒューレット・パッカード社、インテル社、オラクル社その他によって提供されるアーキテクチャに基づく他のマシン；あるいはその組合せを含んでもよい。
【００８２】
ネイティブ中央処理装置９０２は、環境内の処理の間に使用される１つもしくは複数の汎用レジスタまたは１つもしくは複数の専用レジスタあるいはその両方などの１つまたは複数のネイティブ・レジスタ９１０を含む。これらのレジスタは、任意の特定の時点での環境の状態を表す情報を含む。
【００８３】
その上、ネイティブ中央処理装置９０２は、メモリ９０４に記憶される命令およびコードを実行する。１つの特定の例において、中央処理装置は、メモリ９０４に記憶されるエミュレータ・コード９１２を実行する。このコードは、１つのアーキテクチャで構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード９１２は、ＰｏｗｅｒＰＣプロセッサ、ｐＳｅｒｉｅｓサーバ、ＨＰ  Ｓｕｐｅｒｄｏｍｅサーバその他などの、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づくマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅをエミュレートし、かつｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェアおよび命令を実行するようにする。
【００８４】
エミュレータ・コード９１２に関する更なる詳細が図１３を参照しつつ記載される。図１２および１３を集合的に参照すると、メモリ９０４に記憶されるゲスト命令９５０が、ネイティブＣＰＵ９０２のそれ以外のアーキテクチャで実行されるように開発されたソフトウェア命令（例えば、マシン命令に相関する）を含む。例えば、ゲスト命令９５０、はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサで実行するように設計されたかもしれないが、その代わりに、ネイティブＣＰＵ９０２でエミュレートされており、それは、例えば、インテルＩｔａｎｉｕｍ  ＩＩプロセッサであってもよい。１つの例において、エミュレータ・コード９１２は、メモリ９０４から１つまたは複数のゲスト命令９５０を取得し、そして任意選択で取得された命令のためのローカル・バッファリングを提供する命令フェッチ・ルーチン９５２を含む。それは、取得されたゲスト命令の型を判定し、そしてゲスト命令を１つまたは複数の対応ネイティブ命令９５６へ変換する命令変換ルーチン９５４も含む。この変換は、例えば、ゲスト命令によって行われることになる機能を識別すること、およびネイティブ命令を選んでその機能を行うことを含む。
【００８５】
更に、エミュレータ・コード９１２は、ネイティブ命令が実行されるようにするエミュレーション制御ルーチン９６０を含む。エミュレーション制御ルーチン９６０は、ネイティブＣＰＵ９０２が、１つまたは複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行し、そのような実行の結びに、命令フェッチ・ルーチンに制御を返して、次のゲスト命令または一群のゲスト命令の取得をエミュレートするようにしてもよい。ネイティブ命令９５６の実行は、メモリ９０４からレジスタへデータをロードすること；レジスタからメモリに逆にデータを格納すること；または変換ルーチンによって決定される、何らかの型の算術もしくは論理演算を行うことを含んでもよい。
【００８６】
各ルーチンは、例えば、ソフトウェアで実装され、それは、メモリに記憶されてネイティブ中央処理装置９０２によって実行される。他の例において、ルーチンまたは演算の１つまたは複数がファームウェア、ハードウェア、ソフトウェアまたはその何らかの組合せで実装される。エミュレートされるプロセッサのレジスタは、ネイティブＣＰＵのレジスタ９１０を使用してまたはメモリ９０４における場所を使用することによってエミュレートされてもよい。実施形態において、ゲスト命令９５０、ネイティブ命令９５６およびエミュレータ・コード９１２は、同じメモリに存在してもよく、または異なるメモリ・デバイス間で分配されてもよい。
【００８７】
本明細書で使用される場合、ファームウェアは、例えば、プロセッサのマイクロコード、ミリコードまたはマクロコードあるいはその組合せを含む。同用語は、例えば、高レベル・マシン・コードの実装で使用されるハードウェア・レベル命令またはデータ構造あるいはその両方を含む。１つの実施形態において、ファームウェアは、例えば、下部ハードウェアに特有の信頼できるソフトウェアまたはマイクロコードを含み、かつシステム・ハードウェアへのオペレーティング・システム・アクセスを制御するマイクロコードとして典型的に配布される専有コードを含んでもよい。
【００８８】
取得、変換および実行されるゲスト命令９５０は、例えば、本明細書に記載される命令の１つまたは複数である。１つのアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）のである命令は、メモリからフェッチされ、変換され、そして別のアーキテクチャ（例えば、ＰｏｗｅｒＰＣ、ｐＳｅｒｉｅｓ、インテル等）の一連のネイティブ命令９５６として表現される。これらのネイティブ命令は、次いで実行されてもよい。
【００８９】
様々な例が提供されるが、特許請求される態様の思想から逸脱することなく変形が可能である。例えば、命令によって使用されるレジスタまたはフィールドあるいはその両方に含まれる値が、他の実施形態において、記憶場所等などの他の場所にあってもよい。多くの他の変形が可能である。
【００９０】
１つまたは複数の態様がクラウド・コンピューティングに関してもよい。
【００９１】
本開示がクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に詳述される教示の実装がクラウド・コンピューティング環境に限定されないことが事前に理解される。むしろ、本発明の実施形態は、現在知られている、または後に開発されるいずれの他の種類のコンピューティング環境と併せても実装されることが可能である。
【００９２】
クラウド・コンピューティングは、最小の管理労力またはサービスの提供者との相互作用で迅速にプロビジョニングおよび解放されることができる構成可能なコンピューティング・リソース（例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス）の共用プールへの簡便でオンデマンドのネットワーク・アクセスを可能にするためのサービス配布のモデルである。このクラウド・モデルは、少なくとも５つの特性、少なくとも３つのサービス・モデルおよび少なくとも４つの展開モデルを含んでもよい。
【００９３】
特性は以下の通りである：
【００９４】
オンデマンド・セルフサービス：クラウド消費者が、サービスの提供者との人間相互作用を必要とすることなく必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
【００９５】
ブロード・ネットワーク・アクセス：能力がネットワークを通じて利用可能であり、かつ異種シンまたはシック・クライアント・プラットフォーム（例えば、移動電話、ラップトップおよびＰＤＡ）による使用を促す標準メカニズムを通じてアクセスされる。
【００９６】
リソース・プーリング：提供者のコンピューティング・リソースがプールされて、マルチ・テナント・モデルを使用して複数の消費者に応対し、異なる物理および仮想リソースが需要に従って動的に割当ておよび再割り当てされる。消費者が、提供されたリソースの正確な位置に関する制御または知識を全体的に有しないが、より高抽象化レベル（例えば、国、州またはデータ・センタ）で位置を特定することができ得るという点で、位置独立の感覚がある。
【００９７】
迅速弾性：能力が迅速かつ弾性的に、場合によっては自動的に、プロビジョニングされて急速に拡大し、そして迅速に解放されて急速に縮小することができる。消費者にとって、プロビジョニングに利用可能な能力はしばしば無限であるように見えて、いつでもいかなる量でも購入されることができる。
【００９８】
度数制：クラウド・システムは、サービスの種類（例えば、ストレージ、処理、帯域幅およびアクティブ・ユーザ・アカウント）に適切な中抽象化レベルで測定能力を活かすことによってリソース使用を自動的に制御および最適化する。リソース使用が監視、制御および報告されて、活用されるサービスの提供者にも消費者にも透明性を提供することができる。
【００９９】
サービス・モデルは以下の通りである：
【０１００】
サービスとしてのソフトウェア（ＳａａＳ）：消費者に提供される能力は、クラウド・インフラストラクチャで動く提供者のアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ（例えば、ウェブベースの電子メール）などのシン・クライアント・インタフェースを通じて様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージまたは個々のアプリケーション能力さえも含む下部クラウド・インフラストラクチャを管理または制御しないが、限られたユーザ特有のアプリケーション構成設定の可能性は除く。
【０１０１】
サービスとしてのプラットフォーム（ＰａａＳ）：消費者に提供される能力は、提供者によってサポートされるプログラミング言語およびツールを使用して作成された消費者作成または獲得アプリケーションをクラウド・インフラストラクチャ上へ展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む下部クラウド・インフラストラクチャを管理または制御しないが、しかし展開されたアプリケーションおよび場合により環境構成をホストしているアプリケーションに対する制御権を有する。
【０１０２】
サービスとしてのインフラストラクチャ（ＩａａＳ）：消費者に提供される能力は、処理、ストレージ、ネットワーク、および消費者が、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを展開して動かすことができる、他の基本的なコンピューティング・リソースをプロビジョニングすることである。消費者は、下部クラウド・インフラストラクチャを管理または制御しないが、しかしオペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御権を有し、場合により選択ネットワーク部品（例えば、ホスト・ファイアウォール）の限られた制御権を有する。
【０１０３】
展開モデルは以下の通りである：
【０１０４】
プライベート・クラウド：クラウド・インフラストラクチャは組織のためだけに運営される。それは、組織または第三者によって管理されてもよく、そして構内にまたは構外に存在してもよい。
【０１０５】
コミュニティ・クラウド：クラウド・インフラストラクチャはいくつかの組織によって共用され、そして懸念（例えば、任務、セキュリティ要件、規定およびコンプライアンス問題）を共用した特定のコミュニティをサポートする。それは、組織または第三者によって管理されてもよく、そして構内にまたは構外に存在してもよい。
【０１０６】
パブリック・クラウド：クラウド・インフラストラクチャは一般大衆または大企業集団に利用可能であり、そしてクラウド・サービスを販売する組織によって所有される。
【０１０７】
ハイブリッド・クラウド：クラウド・インフラストラクチャは、一意のエンティティのままであるが、しかしデータおよびアプリケーション・ポータビリティ（例えば、クラウド間の負荷平衡のためのクラウド・バースティング）を可能にする標準化または専有技術によって結合される２つ以上のクラウド（プライベート、コミュニティまたはパブリック）の合成である。
【０１０８】
クラウド・コンピューティング環境は、無国籍、低結合、モジュラー性および意味論的相互運用性に焦点が合わされたサービスである。クラウド・コンピューティングの中心は、相互接続したノードのネットワークを備えるインフラストラクチャである。
１つのそのようなノードが、図１に描かれるノード１０である。
【０１０９】
コンピューティング・ノード１０は、適切なクラウド・コンピューティング・ノードの単に１つの例であり、本明細書に記載される本発明の実施形態の使用または機能性の範囲に関していかなる限定も示唆するとは意図されない。とにかく、クラウド・コンピューティング・ノード１０は、上記された機能性のいずれも実装されるまたは行うあるいはその両方をすることが可能である。
【０１１０】
ここで図１４を参照すると、例示的なクラウド・コンピューティング環境５０が描かれる。図示されるように、クラウド・コンピューティング環境５０は、例えば、携帯情報端末（ＰＤＡ）もしくはセルラ電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃまたは自動車コンピュータ・システム５４Ｎあるいはその組合せなどの、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信してもよい、１つまたは複数のコンピューティング・ノード１０を備える。ノード１０は、互いと通信してもよい。それらは、上記されたプライベート、コミュニティ、パブリックまたはハイブリッド・クラウド、あるいはその組合せなどの、１つまたは複数のネットワークで、物理的にまたは仮想的にグループ化されでもよい（図示せず）。これは、クラウド・コンピューティング環境５０が、クラウド消費者がローカル・コンピューティング・デバイス上のリソースを維持する必要がないサービスとしてインフラストラクチャ、プラットフォームまたはソフトウェアあるいはその組合せを提供するようにする。図１４に図示されるコンピューティング・デバイス５４Ａ−Ｎの種類が単に例示的であると意図され、そしてコンピューティング・ノード１０およびクラウド・コンピューティング環境５０が、任意の種類のネットワークまたはネットワーク・アドレス可能接続（例えば、ウェブ・ブラウザを使用する）あるいはその両方を通じて任意の種類のコンピュータ化デバイスと通信することができることが理解される。
【０１１１】
ここで図１５を参照すると、クラウド・コンピューティング環境５０（図１４）によって提供される機能抽象化層の集合が図示される。図１５に図示される部品、層および機能が単に例示的であると意図され、そして本発明の実施形態がそれに限定されないことが事前に理解されるべきである。描かれるように、以下の層および対応機能が提供される：
【０１１２】
ハードウェアおよびソフトウェア層６０は、ハードウェアおよびソフトウェア部品を含む。ハードウェア部品の例としては、メインフレーム６１；ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャ・ベースのサーバ６２；サーバ６３；ブレード・サーバ６４；ストレージ・デバイス６５；ならびにネットワークおよびネットワーキング部品６６を含む。いくつかの実施形態において、ソフトウェア部品は、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【０１１３】
仮想化層７０は、抽象化層を提供し、これから仮想エンティティの以下の例が提供されてもよい：仮想サーバ７１；仮想記憶域７２；仮想プライベート・ネットワークを含む、仮想ネットワーク７３；仮想アプリケーションおよびオペレーティング・システム７４；ならびに仮想クライアント７５。
【０１１４】
１つの例において、管理層８０は、下記される機能を提供してもよい。リソース・プロビジョニング８１は、クラウド・コンピューティング環境内のタスクを行うために活用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格決定８２は、クラウド・コンピューティング環境内でリソースが活用されるにつれてコスト追跡を、およびこれらのリソースの消費に対する課金または代金請求を提供する。１つの例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド消費者およびタスクに対する識別情報検証の他に、データおよび他のリソースに対する保護を提供する。ユーザ・ポータル８３は、消費者およびシステム管理者に対してクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理８４は、必要とされるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割当ておよび管理を提供する。サービス・レベル合意（ＳＬＡ）計画および遂行８５は、ＳＬＡに従って将来の要件が予想されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
【０１１５】
ワークロード層９０は、クラウド・コンピューティング環境が活用されることができる機能性の例を提供する。この層から提供されることができるワークロードおよび機能の例としては：マッピングおよびナビゲーション９１；ソフトウェア開発およびライフサイクル管理９２；仮想教室教育配信９３；データ解析処理９４；トランザクション処理９５；および命令処理９６を含む。
【０１１６】
本発明は、任意の可能な技術詳細レベルの集積化のシステム、方法またはコンピュータ・プログラムあるいはその組合せであってもよい。コンピュータ・プログラムは、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含んでもよい。
【０１１７】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形デバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイスまたは上記の任意の適切な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体例の非網羅的な列挙としては、以下を含む：ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチ・カードまたはそこに命令が記録される溝に隆起された構造などの機械的に符合化されたデバイス、および上記の任意の適切な組合せ。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通って伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通って伝送される電気信号など、それ自体一時的信号であるとは解釈されないものである。
【０１１８】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくはワイヤレス・ネットワークまたはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えてもよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そしてコンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
【０１１９】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などといったオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む、１つもしくは複数のプログラミング言語の任意の組合せで書かれるソース・コードかオブジェクト・コードかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよく、または外部コンピュータに接続がなされてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）。いくつかの実施形態において、例えば、プログラマブル論理回路網、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路網は、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を活用して電子回路網を個人化することによってコンピュータ可読プログラム命令を実行してもよい。
【０１２０】
本発明の態様は、本発明の実施形態に係る方法、装置（システム）およびコンピュータ・プログラムのフローチャート例またはブロック図あるいはその両方を参照しつつ本明細書に記載される。フローチャート例またはブロック図あるいはその両方の各ブロック、およびフローチャート例またはブロック図あるいはその両方におけるブロックの組合せがコンピュータ可読プログラム命令によって実装されることができることが理解されるであろう。
【０１２１】
これらのコンピュータ可読プログラム命令は、命令が、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行し、フローチャートまたはブロック図の、あるいはその両方のブロックに特定される機能／行為を実装するための手段を生じさせるように、汎用コンピュータ、専用コンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを生成してもよい。これらのコンピュータ可読プログラム命令はまた、そこに命令が記憶されるコンピュータ可読記憶媒体が、フローチャートまたはブロック図の、あるいはその両方のブロックに特定される機能／行為の態様を実装する命令を含む製品を構成するように、コンピュータ、プログラマブル・データ処理装置または他のデバイスあるいはその組合せに特定の方式で機能するように指図することができるコンピュータ可読記憶媒体に記憶されてもよい。
【０１２２】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置または他のデバイス上で実行する命令が、フローチャートまたはブロック図の、あるいはその両方のブロックに特定される機能／行為を実装するように、コンピュータ、他のプログラマブル・データ処理装置または他のデバイスへロードされて、一連の動作ステップがコンピュータ、他のプログラマブル装置または他のデバイス上で行われてコンピュータ実装工程を生成させてもよい。
【０１２３】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法およびコンピュータ・プログラムの可能な実装のアーキテクチャ、機能性および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは命令のモジュール、セグメントまたは部分を表してもよく、それは特定された論理機能を実装するための１つまたは複数の実行可能命令を備える。いくつかの代替実装では、ブロックに示される機能は、図に示される順序と異なって生じてもよい。例えば、連続して図示される２つのブロックは、実際、実質的に並行して実行されてもよく、またはブロックは時には逆順に実行されてもよく、関与する機能性次第である。ブロック図またはフローチャート例の、あるいはその両方の各ブロック、およびブロック図またはフローチャート例における、あるいはその両方におけるブロックの組合せが、特定された機能または行為を行うか、または専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装されることができることも留意されるであろう。
【０１２４】
上記に加えて、１つまたは複数の態様が、顧客環境の管理を提案するサービス提供者によって提供、提案、展開、管理、実施等される。例えば、サービス提供者は、１人または複数の顧客のために１つまたは複数の態様を行うコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成、維持、サポート等することができる。代わりに、サービス提供者は、例として、会費または手数料あるいはその両方の合意の下で顧客から支払いを受けてもよい。追加的または代替的に、サービス提供者は、１人または複数の第三者への広告コンテンツの販売から支払いを受けてもよい。
【０１２５】
一つの態様では、アプリケーションは、１つまたは複数の実施形態を行うために展開されてもよい。一つの例として、アプリケーションの展開は、１つまたは複数の実施形態を行うように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１２６】
更なる態様として、コンピューティング・インフラストラクチャは、コンピューティング・システムへコンピュータ可読コードを組み込むことを含んで展開されてもよく、コードは、コンピューティング・システムと併せて１つまたは複数の実施形態を行うことが可能である。
【０１２７】
更なる態様として、コンピュータ・システムへコンピュータ可読コードを組み込むことを含むコンピューティング・インフラストラクチャを組み込むためのプロセスが提供されてもよい。コンピュータ・システムは、コンピュータ可読媒体を備え、コンピュータ媒体は、１つまたは複数の実施形態を含む。コードは、コンピュータ・システムと併せて１つまたは複数の実施形態を行うことが可能である。
【０１２８】
様々な実施形態が上記されたが、これらは単に例である。例えば、１つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用されることができる。更に、異なる命令、命令形式、命令フィールドまたは命令値あるいはその組合せが使用されてもよい。多くの変化が可能である。
【０１２９】
更に、他の種類のコンピューティング環境が利益を得ることができて使用されることができる。一例として、プログラム・コードを記憶または実行するあるいはその両方をするのに適するデータ処理システムが、システムバスを通じてメモリ素子に直接または間接的に結合される少なくとも２つのプロセッサを含んで、使用可能である。メモリ素子は、例えば、プログラム・コードの実際の実行中に利用されるローカル・メモリ、バルク・ストレージ、および実行中にバルク・ストレージからコードが検索されなければならない回数を低減させるために少なくとも一部のプログラム・コードの一時記憶を提供するキャッシュ・メモリを含む。
【０１３０】
入出力またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブおよび他のメモリ媒体等を含むがこれらに限定されない）がシステムに直接か介在Ｉ／Ｏコントローラを通じてかで結合されることができる。システムにネットワーク・アダプタも結合されて、データ処理システムが介在プライベートまたはパブリック・ネットワークを通じて他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合されることを可能にしてもよい。モデム、ケーブル・モデムおよびイーサネット・カードは、利用可能な種類のネットワーク・アダプタのごく一部である。
【０１３１】
本明細書で使用される専門用語は単に特定の実施形態を記載する目的のためであり、限定的であるとは意図されない。本明細書で使用される場合、単数形「ａ（ある１つの）」、「ａｎ（ある１つの）」および「ｔｈｅ（その）」は、文脈が別途明示しない限り、複数形も含むと意図される。用語「ｃｏｍｐｒｉｓｅｓ（備える）」または「ｃｏｍｐｒｉｓｉｎｇ（備えている）」あるいはその両方は、本明細書で使用されるとき、明記された特徴、完全体、ステップ、動作、要素または部品あるいはその組合せの存在を特定するが、しかし１つまたは複数の他の特徴、完全体、ステップ、動作、要素、部品またはその群あるいはその組合せの存在または追加を排除しないことが更に理解されるであろう。
【０１３２】
以下の請求項における、もしあれば、全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為および等価物は、詳細に特許請求される他の特許請求される要素と併せて機能を行うために任意の構造、材料または行為を含むと意図される。１つまたは複数の実施形態の記載が、例示および説明の目的で提示されたが、網羅的または開示された形態に限定されるとは意図されない。多くの変更および変形が当業者に明らかであろう。実施形態は、様々な態様および実際的応用を最良に説明するためにかつ当業者が企図された特定の使用に適した様々な変更を伴う様々な実施形態を理解することを可能にするために選ばれて記載される。
【図１】
2020514856.tif 000003
【図２】
2020514856.tif 000004
【図３】
2020514856.tif 000005
【図４】
2020514856.tif 000006
【図５】
2020514856.tif 000007
【図６】
2020514856.tif 000008
【図７】
2020514856.tif 000009
【図８】
2020514856.tif 000010
【図９】
2020514856.tif 000011
【図１０】
2020514856.tif 000012
【図１１】
2020514856.tif 000013
【図１２】
2020514856.tif 000014
【図１３】
2020514856.tif 000015
【図１４】
2020514856.tif 000016
【図１５】
2020514856.tif 000017
【国際調査報告】
2020514856.tif 000018
2020514856.tif 000019
2020514856.tif 000020