(57)【特許請求の範囲】
【請求項１】
エミュレートされた処理環境でメモリ・アクセスを管理するためのプログラムであって、コンピュータが、
弱いメモリ整合性アーキテクチャを有するプロセッサ上で実行されるエミュレートされた中央演算処理装置（ＣＰＵ）プロセスにより、操作単位の一部としてメモリ単位へのアクセスを要求するステップと、
前記エミュレートされたＣＰＵプロセスにより、前記メモリ単位へのアクセスを管理するステップであって、堅固なメモリ整合性を要求することにより、前記メモリ単位が変更されている場合にエミュレートされた他のＣＰＵプロセスが前記メモリ単位を観測できないようにロック管理を行う管理ステップであって、
１つまたは複数のメモリ・アクセス・テストを使用して、前記メモリ単位がアクセス可能であるかどうかを判断するステップであって、前記１つまたは複数のメモリ・アクセス・テストが、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位に対して読み取りアクセスまたは書き込みアクセスを行えるかを示す表示を含む既存の構築されたアクセス制御ブロックに追加された、すでにアドレス変換され、アクセス可能なメモリ単位か否かのテストを含み、前記メモリ単位が利用できる場合に、前記要求されたメモリ単位にアクセスするステップと、
前記メモリ単位が他のエミュレートされたＣＰＵプロセスによって保持されていて、この時点で前記エミュレートされたＣＰＵプロセスにとってアクセス不能であると判断し、割り込みハンドラを呼び出して、前記エミュレートされたＣＰＵプロセスが前記メモリ単位にアクセスできるようにするために前記メモリ単位について保持されている１つまたは複数の権利を前記他のエミュレートされたＣＰＵプロセスが放棄することを要求するステップと、
要求側のエミュレートされたＣＰＵプロセスによって保持されているメモリ単位へのアクセスを他のエミュレートされたＣＰＵプロセスが要求しているかどうかを判断し、前記他のエミュレートされたＣＰＵプロセスがアクセスを要求していることを示していると判断したことに応答して、前記操作単位を無効にするステップであって、前記無効化によってデッドロックを回避するステップと、
のうちの少なくとも１つを含む管理ステップと、
を実行する、前記プログラム。
【請求項２】
前記要求されたメモリ単位にアクセスする前記ステップが、前記メモリ単位に関するロックを入手するステップを含む、請求項１記載のプログラム。
【請求項３】
前記ロックを入手する前記ステップが、前記メモリ単位に関連する前記アクセス制御ブロック内に１つまたは複数のインジケータを設定するステップを含み、前記設定が、前記要求されたアクセスが書き込みアクセスであるか読み取りアクセスであるかによって決まる、請求項２記載のプログラム。
【請求項４】
前記アクセス制御ブロックが、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位への読み取りアクセスを行えるかを示す複数の読み取りインジケータと、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位への書き込みアクセスを行えるかを指定する複数の書き込みインジケータと、前記メモリ単位へのアクセスを制御するための１つまたは複数の構築されたアクセス許可とを含む、請求項３記載のプログラム。
【請求項５】
前記メモリ単位が他のエミュレートされたＣＰＵプロセスによって保持されていることの判断が、前記アクセス制御ブロック内の１つまたは複数のインジケータをチェックするステップを含む、請求項１記載のプログラム。
【請求項６】
前記要求されたアクセスが書き込みアクセスであるか読み取りアクセスであるかに応じて、１つまたは複数の権利を放棄するための前記要求が、前記他のエミュレートされたＣＰＵプロセスによって保持されている前記メモリ単位に関するロックを解放するか、または前記メモリ単位に関する前記ロックを降格するための要求を含む、請求項１記載のプログラム。
【請求項７】
前記他のエミュレートされたＣＰＵプロセスに前記１つまたは複数の権利を放棄させるために、前記割り込みハンドラが、前記他のエミュレートされたＣＰＵプロセスへの非同期割り込みを提供する、請求項１記載のプログラム。
【請求項８】
放棄するための前記要求を受信したことに応答して、前記他のエミュレートされたＣＰＵプロセスが前記１つまたは複数の権利を放棄し、放棄したことに応答して、前記エミュレートされたＣＰＵプロセスが前記メモリ単位に関するロックを入手する、請求項１記載のプログラム。
【請求項９】
無効にする前記ステップが、前記エミュレートされたＣＰＵプロセスによって保持されている任意のロックを解放するステップを含む、請求項１記載のプログラム。
【請求項１０】
無効にしたことに応答して、前記操作単位を再始動するステップをさらに含む、請求項１記載のプログラム。
【請求項１１】
前記メモリ単位がメモリ・ページを含む、請求項１記載のプログラム。
【請求項１２】
コンピュータがエミュレートされた処理環境でメモリ・アクセスを管理する方法であって、前記コンピュータが、
弱いメモリ整合性アーキテクチャを有するプロセッサ上で実行されるエミュレートされた中央演算処理装置（ＣＰＵ）プロセスにより、操作単位の一部としてメモリ単位へのアクセスを要求するステップと、
前記エミュレートされたＣＰＵプロセスにより、前記メモリ単位へのアクセスを管理するステップであって、堅固なメモリ整合性を要求することにより、前記メモリ単位が変更されている場合にエミュレートされた他のＣＰＵプロセスが前記メモリ単位を観測できないようにロック管理を行う管理ステップであって、
１つまたは複数のメモリ・アクセス・テストを使用して、前記メモリ単位がアクセス可能であるかどうかを判断するステップであって、前記１つまたは複数のメモリ・アクセス・テストが、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位に対して読み取りアクセスまたは書き込みアクセスを行えるかを示す表示を含む既存の構築されたアクセス制御ブロックに追加された、すでにアドレス変換され、アクセス可能なメモリ単位か否かのテストを含み、前記メモリ単位が利用できる場合に、前記要求されたメモリ単位にアクセスするステップと、
前記メモリ単位が他のエミュレートされたＣＰＵプロセスによって保持されていて、この時点で前記エミュレートされたＣＰＵプロセスにとってアクセス不能であると判断し、割り込みハンドラを呼び出して、前記エミュレートされたＣＰＵプロセスが前記メモリ単位にアクセスできるようにするために前記メモリ単位について保持されている１つまたは複数の権利を前記他のエミュレートされたＣＰＵプロセスが放棄することを要求するステップと、
要求側のエミュレートされたＣＰＵプロセスによって保持されているメモリ単位へのアクセスを他のエミュレートされたＣＰＵプロセスが要求しているかどうかを判断し、前記他のエミュレートされたＣＰＵプロセスがアクセスを要求していることを示していると判断したことに応答して、前記操作単位を無効にするステップであって、前記無効化によってデッドロックを回避するステップと、
のうちの少なくとも１つを含む管理ステップと、
を含む、前記方法。
【請求項１３】
前記アクセス制御ブロックが、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位への読み取りアクセスを行えるかを示す複数の読み取りインジケータと、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位への書き込みアクセスを行えるかを指定する複数の書き込みインジケータと、前記メモリ単位へのアクセスを制御するための１つまたは複数の構築されたアクセス許可とを含む、請求項１２記載の方法。
【請求項１４】
前記要求されたアクセスが書き込みアクセスであるか読み取りアクセスであるかに応じて、１つまたは複数の権利を放棄するための前記要求が、前記他のエミュレートされたＣＰＵプロセスによって保持されている前記メモリ単位に関するロックを解放するか、または前記メモリ単位に関する前記ロックを降格するための要求を含む、請求項１２記載の方法。
【請求項１５】
前記他のエミュレートされたＣＰＵプロセスに前記１つまたは複数の権利を放棄させるために、前記割り込みハンドラが、前記他のエミュレートされたＣＰＵプロセスへの非同期割り込みを提供する、請求項１２記載の方法。
【請求項１６】
エミュレートされた処理環境でメモリ・アクセスを管理するシステムであって、
メモリと、
操作単位の一部としてメモリ単位へのアクセスを要求するエミュレートされた中央演算処理装置（ＣＰＵ）プロセスを実行する弱いメモリ整合性アーキテクチャを有するプロセッサと、
を含み、前記プロセッサが、
前記メモリ単位へのアクセスを管理するためのエミュレートされたＣＰＵプロセスであって、堅固なメモリ整合性を要求することにより、前記メモリ単位が変更されている場合にエミュレートされた他のＣＰＵプロセスが前記メモリ単位を観測できないようにロックし、
１つまたは複数のメモリ・アクセス・テストを使用して、前記メモリ単位がアクセス可能であるかどうかを判断するステップであって、前記１つまたは複数のメモリ・アクセス・テストが、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位に対して読み取りアクセスまたは書き込みアクセスを行えるかを示す表示を含む既存の構築されたアクセス制御ブロックに追加された、すでにアドレス変換され、アクセス可能なメモリ単位か否かのテストを含み、前記メモリ単位が利用できる場合に、前記要求されたメモリ単位にアクセスするステップと、
前記メモリ単位が他のエミュレートされたＣＰＵプロセスによって保持されていて、この時点で前記エミュレートされたＣＰＵプロセスにとってアクセス不能であると判断し、割り込みハンドラを呼び出して、前記エミュレートされたＣＰＵプロセスが前記メモリ単位にアクセスできるようにするために前記メモリ単位について保持されている１つまたは複数の権利を前記他のエミュレートされたＣＰＵプロセスが放棄することを要求するステップと、
要求側のエミュレートされたＣＰＵプロセスによって保持されているメモリ単位へのアクセスを他のエミュレートされたＣＰＵプロセスが要求しているかどうかを判断し、前記他のエミュレートされたＣＰＵプロセスがアクセスを要求していることを示していると判断したことに応答して、前記操作単位を無効にするステップであって、前記無効化によってデッドロックを回避するステップと、
のうちの少なくとも１つを含む、前記エミュレートされたＣＰＵプロセスを実行する、
前記システム。
【請求項１７】
前記アクセス制御ブロックが、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位への読み取りアクセスを行えるかを示す複数の読み取りインジケータと、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスが前記メモリ単位への書き込みアクセスを行えるかを指定する複数の書き込みインジケータと、前記メモリ単位へのアクセスを制御するための１つまたは複数の構築されたアクセス許可とを含む、請求項１６記載のシステム。
【請求項１８】
前記要求されたアクセスが書き込みアクセスであるか読み取りアクセスであるかに応じて、１つまたは複数の権利を放棄するための前記要求が、前記他のエミュレートされたＣＰＵプロセスによって保持されている前記メモリ単位に関するロックを解放するか、または前記メモリ単位に関する前記ロックを降格するための要求を含む、請求項１６記載のシステム。
【請求項１９】
前記他のエミュレートされたＣＰＵプロセスに前記１つまたは複数の権利を放棄させるために、前記割り込みハンドラが、前記他のエミュレートされたＣＰＵプロセスへの非同期割り込みを提供する、請求項１６記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、エミュレートされた処理環境に関し、特に、メモリ・アクセスが堅固なメモリ整合性アーキテクチャに準拠するように、弱いメモリ整合性（weak memory consistency）を有するプロセッサ上で堅固なメモリ整合性（firm memory consistency）を有するアーキテクチャをエミュレートすることに関する。
【背景技術】
【０００２】
処理中に、メモリにアクセスしているプロセッサに対し、そのメモリの一貫したビューが提供されることは不可欠である。弱いメモリ整合性で構築された環境では、メモリ整合性を保証するために特定のステップを行わなければならない。たとえば、弱いメモリ整合性環境では、他のプロセッサによって観測されるように、特定のメモリ単位（unit of memory）の更新順序は保証されない。したがって、弱いメモリ整合性環境で実行されるソフトウェアは、曖昧さを許容するか、または明示的に整合性を強制するための命令を使用しなければならない。すなわち、メモリ・ストアが実行されるたびに、同期が実行されてから他のメモリ・アクセスが可能になる。しかし、整合性を強制するための命令を使用すると、システム・パフォーマンスが著しく劣化する。
【０００３】
弱いメモリ整合性環境とは対称的に、一部の環境は堅固なメモリ整合性で構築される。このような環境では、メモリの整合性を維持するためのハードウェアが提供される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願第１１／６８０，７０３号
【非特許文献】
【０００５】
【非特許文献１】２００５年９月発行のＩＢＭ資料Ｎｏ．ＳＡ２２−７８３２−０４「z/Architecture Principles of Operation」
【非特許文献２】２００５年６月３日発行のJim SmithおよびRavi Nairによる「Virtual Machines: VersatilePlatforms For Systems and Processes」（The MorganKaufmann Series in Computer Architecture and Design）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ハードウェアは整合性を強制するための命令の使用を上回る利点を提供するが、ハードウェアはこのような機能を実行するために常に使用可能であるわけではない。たとえば、弱いメモリ整合モデルを有するプロセッサが堅固なメモリ整合モデルをエミュレートする場合、整合性を提供するためのハードウェアはまったく存在しない。このような状況では、メモリ整合性を効率よく提供するための機能が必要である。
【０００７】
たとえば、弱いメモリ整合性環境で堅固なメモリ整合性を提供する際にオーバヘッドを低減する機能が必要である。特定の一態様では、メモリ整合メモリ・アクセスが効率よく提供されるように、弱いメモリ整合性を有するプロセッサが堅固なメモリ整合性を有するプロセッサを効率よくエミュレートできるようにする機能が必要である。
【課題を解決するための手段】
【０００８】
エミュレートされた処理環境でメモリ・アクセスを管理するためのコンピュータ可読プログラム・コード・ロジックを有する少なくとも１つのコンピュータ使用可能媒体を含む製品（article of manufacture）の提供により、従来技術の短所は克服され、追加の利点が提供される。このコンピュータ可読プログラム・コード・ロジックは、実行されると、たとえば、弱いメモリ整合性アーキテクチャを有するプロセッサ上で実行されるエミュレートされた中央演算処理装置（ＣＰＵ）プロセスにより、操作単位（unit of operation）の一部としてメモリ単位へのアクセスを要求するステップと、エミュレートされたＣＰＵプロセスにより、メモリ単位へのアクセスを管理するステップであって、堅固なメモリ整合性を強制し、そのメモリ単位が変更されている場合にエミュレートされた他のＣＰＵプロセスがそのメモリ単位を観測できない管理ステップであって、１つまたは複数のメモリ・アクセス・テストを使用して、そのメモリ単位がアクセス可能であるかどうかを判断するステップであって、その１つまたは複数のメモリ・アクセス・テストが、エミュレートされたＣＰＵプロセスがある場合に、どのプロセスがそのメモリ単位に対して読み取りアクセスまたは書き込みアクセスを行えるかを示す表示を含む既存の構築されたアクセス制御ブロックに追加されたテストを含み、そのメモリ単位の可用性を示すことを使用したことに応答して、要求されたメモリ単位にアクセスするステップと、そのメモリ単位が他のエミュレートされたＣＰＵプロセスによって保持されていて、この時点でそのエミュレートされたＣＰＵプロセスにとってアクセス不能であると判断し、割り込みハンドラを呼び出して、エミュレートされたＣＰＵプロセスがそのメモリ単位にアクセスできるようにするためにそのメモリ単位について保持されている１つまたは複数の権利を他のエミュレートされたＣＰＵプロセスが放棄することを要求するステップと、要求側のエミュレートされたＣＰＵプロセスによって保持されているメモリ単位へのアクセスを他のエミュレートされたＣＰＵプロセスが要求しているかどうかを判断し、他のエミュレートされたＣＰＵプロセスがアクセスを要求していることを示していると判断したことに応答して、その操作単位を無効にするステップであって、前記無効化によってデッドロックを回避するステップのうちの少なくとも１つを含む管理ステップとを実行する。
【０００９】
本発明の１つまたは複数の態様に関連する方法およびシステムも本明細書に記載され、請求されている。
【００１０】
追加の特徴および利点は本発明の技法により実現される。本発明のその他の諸実施形態および諸態様は、本明細書に詳細に記載され、請求された発明の一部と見なされる。
【００１１】
本発明の１つまたは複数の態様は、本明細書の終わりの特許請求の範囲において、詳細に指摘され、例として明瞭に請求される。本発明の上記その他の目的、特徴、および利点は、添付図面に併せて取られた以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１２】
【図１】本発明の１つまたは複数の態様を取り入れて使用するための処理環境の一実施形態を示す図である。
【図２】本発明の一態様による図１の処理環境のシステム・アーキテクチャの一実施形態を示す図である。
【図３】本発明の一態様による図２のシステム・アーキテクチャのエミュレータの一実施形態の詳細を示す図である。
【図４】本発明の一態様による図３のエミュレータの中央演算処理装置（ＣＰＵ）インプリメンテーションの一実施形態の詳細を示す図である。
【図５】本発明の一態様による図４のＣＰＵインプリメンテーションのインタープリタ・コードの一実施形態の詳細を示す図である。
【図６】本発明の一態様による図５のインタープリタ・コードの解釈ユニットの一実施形態の詳細を示す図である。
【図７】本発明の一態様によるメモリ単位へのアクセスに関連するロジックの一実施形態を示す図である。
【図８】本発明の一態様により使用されるアクセス制御ブロックの一例を示す図である。
【図９】本発明の一態様によるロック入手の際の割り込みハンドラの呼び出しに関連するロジックの一実施形態を示す図である。
【図１０】本発明の一態様によるロックされたメモリ単位へのアクセスに関連するロジックの一実施形態を示す図である。
【図１１】本発明の１つまたは複数の態様を取り入れるためのコンピュータ・プログラム製品（computer program product）の一実施形態を示す図である。
【発明を実施するための形態】
【００１３】
本発明の一態様により、エミュレートされた処理環境におけるメモリ整合性が提供される。弱いメモリ整合性を有するプロセッサは堅固なメモリ整合性を有するアーキテクチャをエミュレートし、この機能を実行するための直列化命令または特殊ハードウェアを必要とせずにメモリ整合性が提供される。さらに、デッドロック状況が回避される。
【００１４】
本発明の１つまたは複数の態様を取り入れて使用するための処理環境の一実施形態について、図１に関連して説明する。処理環境１００は、たとえば、複数のネイティブ・プロセッサ１０２（たとえば、中央演算処理装置（ＣＰＵ）１０２ａ、１０２ｂ）と、複数のプロセッサ（ひとまとめにしてプロセッサ１０２という）によって共用されるメモリ１０４（たとえば、メイン・メモリ）と、複数のプロセッサにとってアクセス可能な１つまたは複数の入出力（Ｉ／Ｏ）装置１０６とを含む。プロセッサ、メモリ、およびＩ／Ｏ装置は、たとえば、１つまたは複数のバス１０８を介して相互に結合されている。
【００１５】
この例では、各プロセッサは、ネイティブ・アーキテクチャと呼ぶこともできるあるアーキテクチャに基づくが、ゲスト・アーキテクチャと呼ぶこともできる他のアーキテクチャをエミュレートする。例として、ネイティブ・アーキテクチャは、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるＰｏｗｅｒ４またはＰｏｗｅｒＰＣ（Ｒ）アーキテクチャあるいはインテル社によって提供されるＩｎｔｅｌ（Ｒ）アーキテクチャであり、ゲスト・アーキテクチャは、同じくニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）である。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の諸態様は、２００５年９月発行のＩＢＭ資料Ｎｏ．ＳＡ２２−７８３２−０４「z/Architecture Principles of Operation」に記載されている。例として、プロセッサ１０２は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社（ＩＢＭ（Ｒ））によって提供されるｐＳｅｒｉｅｓ（Ｒ）サーバの一部である。ＩＢＭ（Ｒ）、ｐＳｅｒｉｅｓ（Ｒ）、ＰｏｗｅｒＰＣ（Ｒ）、およびｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）は米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。Ｉｎｔｅｌ（Ｒ）はインテル社の登録商標である。本明細書で使用するその他の名前は、インターナショナル・ビジネス・マシーンズ社またはその他の企業の登録商標、商標、または製品名である場合もある。
【００１６】
各ネイティブ中央演算処理装置１０２は、この環境内での処理中に使用される、１つまたは複数の汎用レジスタあるいは１つまたは複数の特殊目的レジスタもしくはこれらの組み合わせなどの１つまたは複数のネイティブ・レジスタ１１０（たとえば、１１０ａ、１１ｂであり、ひとまとめにしてネイティブ・レジスタ１１０という）を含む。これらのレジスタは、任意の特定の時点におけるこの環境の状態を表す情報を含む。
【００１７】
エミュレーションを提供するために、処理環境は、少なくとも１つのエミュレータと、少なくとも１つのゲスト・オペレーティング・システムと、１つまたは複数のゲスト・アプリケーションとを含むように構築される。特に、プロセッサのうちの１つまたは複数は、エミュレーションを提供し、ゲスト・オペレーティング・システムをホストとして処理し、１つまたは複数のゲスト・アプリケーションを実行することができる。これらの特徴については、図２に関連してさらに説明する。
【００１８】
図２を参照し、処理環境１００のシステム・アーキテクチャ２００の一実施形態について説明する。システム・アーキテクチャ２００は、たとえば、環境の構築態様を定義する複数のインプリメンテーション層を含む。この特定の例では、これらの層は、１つまたは複数のインターフェースまたはコントローラあるいはその両方を介してメモリ２０４と、入出力装置またはネットワークあるいはその両方２０６に結合されるハードウェア２０２を含む。この例では、図１に描写されているように、各プロセッサ１０２ａ、１０２ｂはハードウェア層２０２を含むが、メモリ２０４とＩ／Ｏ装置２０６は共用される。
【００１９】
図２に戻ると、アーキテクチャ２００は、例として、ホスト・オペレーティング・システム２０８と、エミュレータ２１０と、ゲスト・オペレーティング・システム２１２と、１つまたは複数のゲスト・アプリケーション２１４とをさらに含む。１つの層は、１つまたは複数のインターフェースを介して少なくとも１つの他の層に結合される。たとえば、ゲスト・アプリケーション２１４は、少なくとも１つのインターフェースを介してゲスト・オペレーティング・システム２１２に結合される。その他のインターフェースは、残りの層を結合するために使用される。その上、このアーキテクチャは、他の層またはインターフェースあるいはその両方も含むことができる。この場合も、各プロセッサは、ホスト・オペレーティング・システムを有し、エミュレーションを提供することができる。各プロセッサは、ゲスト・オペレーティング・システムおよび１つまたは複数のゲスト・アプリケーションをホストとして処理することができる。図２に描写されている様々な層について、以下にさらに説明する。
【００２０】
ハードウェア２００は、処理環境のネイティブ・アーキテクチャであり、たとえば、Ｐｏｗｅｒ４、ＰｏｗｅｒＰＣ（Ｒ）、Ｉｎｔｅｌ（Ｒ）、またはその他のアーキテクチャに基づくものである。インターナショナル・ビジネス・マシーンズ社によって提供されるＡＩＸ（Ｒ）またはＬＩＮＵＸなどのホスト・オペレーティング・システム２０８はこのハードウェア上で実行される。ＡＩＸ（Ｒ）は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。
【００２１】
エミュレータ２１０は、ネイティブ・アーキテクチャとは異なるアーキテクチャをエミュレートするために使用されるいくつかのコンポーネントを含む。この実施形態では、エミュレート中のアーキテクチャは、インターナショナル・ビジネス・マシーンズ社によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）であるが、他のアーキテクチャもエミュレートすることができる。このエミュレーションにより、ゲスト・オペレーティング・システム２１２（たとえば、インターナショナル・ビジネス・マシーンズ社の登録商標であるｚ／ＯＳ（Ｒ））はネイティブ・アーキテクチャ上で実行することができ、１つまたは複数のゲスト・アプリケーション２１４（たとえば、Ｚアプリケーション）のサポートが可能になる。エミュレータ２１０に関する詳細については、図３に関連して説明する。
【００２２】
図３を参照すると、エミュレータ２１０は、１つまたは複数のサービス・プロセス３０２に結合された共用メモリ３００と、入出力（Ｉ／Ｏ）インプリメンテーション３０４と、中央演算処理装置（ＣＰＵ）インプリメンテーション３０６とを含み、そのそれぞれについて以下に詳細に説明する。
【００２３】
共用メモリ３００は、サービス・プロセス３０２、Ｉ／Ｏインプリメンテーション３０４、およびＣＰＵインプリメンテーション３０６から認識可能なホスト内のメモリの一部分を表すものである。これは、共用メモリからデータを読み取り、そこにデータを保管することにより、独立プロセス（たとえば、サービス・プロセス、Ｉ／Ｏインプリメンテーション、ＣＰＵインプリメンテーション）が通信する記憶領域である。一例として、共用メモリは、たとえば、システム・グローバル情報、ＣＰＵコンテキストおよび情報、エミュレートされた主記憶装置、エミュレートされた主記憶装置キー、ならびにサブチャネル（すなわち、Ｉ／Ｏ装置を表すデータ構造）を含む、複数の領域を含む。
【００２４】
サービス・プロセス３０２は、ＣＰＵを作成するために使用される１つまたは複数のプロセスと、１つまたは複数のその他のプロセスとを含むとともに、開始、停止、リセット、初期プログラム・ロード（ＩＰＬ）などの構築されたオペレータ機能を提供する。また、サービス・プロセスは、エミュレートされたシステム機能の表示または変更、共用リソースの入手／解放、その他のメンテナンス・コマンドなどのその他の機能も提供することができる。
【００２５】
入出力インプリメンテーション３０４は、たとえば、１つまたは複数のサブチャネル・プロセスと、Ｉ／Ｏ装置と通信するために使用されるＩ／Ｏコントローラとを含む。Ｉ／Ｏコントローラは、本発明の一態様では、サブチャネル・プロセスを開始し、リカバリを実行する役割を担う。
【００２６】
中央演算処理装置（ＣＰＵ）インプリメンテーション３０６は、１つまたは複数のエミュレートされたＣＰＵプロセスを含み、命令を実行し、処理を管理する役割を担う。ＣＰＵインプリメンテーションはいくつかのコンポーネントを含み、これらについては図４〜図５に関連して説明する。
【００２７】
図４を参照すると、ＣＰＵインプリメンテーション３０６は、たとえば、命令を入手し、変換し、実行するために使用されるインタープリタ・コード４００と、初期始動およびチップとの通信を支援するアーキテクチャ・コプロセッサ４０２（たとえば、サービス・コール・ロジカル・プロセッサ（ＳＣＬＰ）プロセス）と、エミュレータのタイミング機能の役割を担うタイミング機能４０４とを含む。インタープリタ・コード４００に関する詳細については、図５に関連して説明する。
【００２８】
インタープリタ・コード４００は、たとえば、メモリ・アクセス・ユニット４２２に結合された解釈ユニット４２０と、ＣＰＵコントロール４２６と、非同期割り込みハンドラ４２８と、同期割り込みハンドラ４３０とを含む。この例では、各プロセッサはインタープリタ・コードを含み、したがって、インタープリタ・コード４００ａが表されている。追加のプロセッサはインタープリタ・コード４００を有する場合もあれば、そうではない場合もある。
【００２９】
解釈ユニット４２０は、メモリから１つまたは複数のゲスト命令を入手し、そのゲスト命令に関するネイティブ命令を提供し、そのネイティブ命令を実行する役割を担う。ゲスト命令は、ネイティブＣＰＵ１０２のアーキテクチャ以外のアーキテクチャで実行するよう開発されたソフトウェア命令（たとえば、機械命令）を含む。たとえば、ゲスト命令は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）プロセッサ上で実行するように設計されている可能性があるが、その代わりに、たとえば、ｐＳｅｒｉｅｓ（Ｒ）サーバにすることができるネイティブＣＰＵ１０２上でエミュレートされている。
【００３０】
一例では、ネイティブ命令を提供することは、ゲスト命令に関連するエミュレータ内のコード・セグメントを選択することを含む。たとえば、各ゲスト命令は、エミュレート内に関連コード・セグメントを有し、これは１つまたは複数のネイティブ命令からなるシーケンスを含み、そのコード・セグメントが選択されて実行される。
【００３１】
他の一例では、提供することは、たとえば、変換プロセス中に、所与の１組のゲスト命令についてネイティブ・ストリームの命令を作成することを含む。これは、機能を識別し、同等のネイティブ命令を作成することを含む。
【００３２】
命令がメモリ・アクセスを含む場合、メモリ・アクセス・ルーチン４２２を使用して共用メモリ３００にアクセスする。メモリ・アクセス・ルーチンは、動的アドレス変換（ＤＡＴ）４３２またはアクセス・レジスタ変換（ＡＲＴ）４３４などの変換メカニズムを使用して、論理アドレスを絶対アドレスに変換し、次に、その絶対アドレスを使用してメモリにアクセスするか、必要であれば、その絶対アドレスをさらに変換することもできる。
【００３３】
この実施形態では、解釈ユニット４２０内の処理は合理化される予定である。したがって、待ち状態や、あるアーキテクチャ・レベルから他のアーキテクチャ・レベルへの変化（たとえば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）からＥＳＡ／３９０などへ）など、より複雑な状況が発生した場合、制御はＣＰＵコントロール４２６に転送され、そのコントロールがイベントを処理し、制御を解釈ユニット４２０に返す。
【００３４】
その上、割り込みが発生した場合、処理は解釈ユニット４２０から、非同期割り込みの場合の非同期割り込みハンドラ４２８または同期割り込みの場合の同期割り込みハンドラ４３０のいずれかに遷移する。割り込みが処理された後、処理は解釈ユニット４２０に戻る。
【００３５】
特に、解釈ユニットは、共用メモリ内の特定の位置をモニターし、位置が変化した場合、それは、ＣＰＵまたはＩ／Ｏのうちの１つによって割り込みが設定されたことを意味する。したがって、解釈ユニットは適切な割り込みハンドラを呼び出す。
【００３６】
本発明の一態様により、処理環境が堅固な整合性モデルに基づいて構築された場合と同様に、メモリへのアクセスが管理される。特に、弱い整合性モデルに基づいて構築されたプロセッサは、そのプロセッサが堅固な整合性モデルに基づいて構築された場合と同様にメモリへのアクセスを可能にする。弱いメモリ整合システムは堅固なメモリ整合システムをエミュレートし、このエミュレーションは、整合性を提供するための命令同期またはハードウェアを必要とせずにメモリ整合性を提供するように効率よくメモリ・アクセスを可能にすることを含み、これにより、デッドロックが回避される。
【００３７】
一例では、ロック・メカニズムと、本発明の１つまたは複数の態様のために強化されているｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の既存の構築された特徴を使用して、堅固なメモリ整合性が強制される。ロック・メカニズムの概要については、図６に関連して説明する。
【００３８】
具体的には、図６は、解釈ユニット４２０と、特に、ユニット４２０によって実行され、ロック・メカニズムを利用するタイプの命令に関する追加の詳細を示している。一例として、１つのタイプの命令は、１つの操作単位を含む単純命令４８０である。このような命令では、命令によって要求されるメモリ単位が４８２でロックされ、その後、ロッキングが成功した場合に、命令の本体が４８４で実行される。ロッキング中にロッキングを実行しているこのプロセッサによってロックされているメモリ単位を他のプロセッサが要求する場合、後述するように、デッドロックを回避するために４８６で無効化が実行される。
【００３９】
もう１つのタイプの命令は長く続く命令４８８である。このタイプの命令は、このプロセッサによって保持されるロックを４９０で解除し、必要なロックのみを４９２で再ロックするためのコードを含む。これは他のＣＰＵに対するサービスである。ロックを正常に入手した後、命令の本体が４９４で実行される。この場合も、ロッキング中にこのプロセッサによって保持されているメモリ単位を他のプロセッサが要求する場合、４９６で無効化が実行される。
【００４０】
もう１つのタイプの命令は複数操作単位命令４９８であり、これは、それぞれがこのように処理される複数の単純命令から構成される。
【００４１】
堅固なメモリ整合性を強制するための既存であるが強化され、構築された特徴のロッキングおよび使用に関する詳細については、図７に関連して説明する。図７は、メモリ・アクセスの提供に関連するロジックの一実施形態を描写している。
【００４２】
図７を参照すると、最初に、ステップ５００で、解釈ユニット（たとえば、解釈ユニット４２０）は、メモリ・アクセスに関する要求を含む操作単位を入手する（たとえば、取り出す、受信する、提供されるなど）。この要求は、メモリ単位の読み取りアクセスまたは書き込みアクセスに関するものにすることができる。
【００４３】
ステップ５０２で、解釈ユニットはこの要求をメモリ・アクセス・ルーチンに転送する。メモリ・アクセス・ルーチンは、一例では、要求されたメモリ単位が容易にアクセス可能であるかどうかを判断する。たとえば、照会５０４で、要求されたメモリ単位が、変換索引バッファ０（ＴＬＢ０）というバッファ内に表されるかどうかについて判断が行われる。ＴＬＢ０は、必要であれば、すでにアドレス変換されたメモリ単位の指定（たとえば、アドレス）を含み、そのメモリ単位へのアクセスはモニターを必要としない。すなわち、ＴＬＢ０は、容易にアクセス可能なメモリ単位の指定を含む。ＴＬＢ０に関する詳細は、
２００７年３月１日に出願され、整理番号ＰＯＵ９２００６０２０７ＵＳ１で、「EmployingA Data Structure Of Readily Accessible Units Of Memory To Facilitate MemoryAccess」という名称の米国特許出願第１１／６８０，７０３号に記載されている。
【００４４】
要求されたメモリ単位がＴＬＢ０に表される場合、ステップ５０６で、処理が解釈ユニットに戻り、ＴＬＢ０から入手した指定を使用して命令が実行される。しかし、要求されたメモリ単位がＴＬＢ０に表されない場合、追加の処理が実行される。
【００４５】
たとえば、ステップ５０８で、構築されたアクセス許可（たとえば、ｚアクセス許可）がチェックされる。これは、一実施形態では、アクセス制御ブロック内の１つまたは複数のインジケータをチェックすることを含む。一例では、１つのアクセス制御ブロックは、構成内で使用可能な、それぞれの定義済みメモリ単位（たとえば、それぞれ４ｋバイトの記憶ブロック）に関連付けられ、そのメモリ単位に関する特定のパラメータを提供する。アクセス制御ブロックは、共用メモリに保管され、その共用メモリに結合されたプロセッサによってアクセス可能である。
【００４６】
一例では、アクセス制御ブロック６００（図８）は以下のフィールドを含む。
ａ）Ｚアクセス・インジケータ６０２：  これらは、メモリ単位へのアクセスを制御するｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一部として提供されるインジケータである。例として、以下のものを含む。
１）アクセス制御インジケータ（ＡＣＣ）：  参照がキー制御保護を条件とする場合、アクセス制御インジケータは、情報が保管されるときまたは取り出しに対して保護されている位置から情報が取り出されるときのアクセス・キーと突き合わされる。
２）取り出し保護インジケータ（Ｆ）：  参照がキー制御保護を条件とする場合、取り出し保護インジケータは、キー制御保護が取り出しタイプ参照に適用されるかどうかを制御する。たとえば、１つの値は、保管タイプ参照のみがモニターされ、任意のアクセス・キーによる取り出しが許可されることを示し、もう１つの値は、キー制御保護が取り出しと保管の両方に適用されることを示す。
３）参照インジケータ（Ｒ）：  対応するメモリ単位内の位置が情報の保管または取り出しのいずれかのための参照されるたびに、参照インジケータは、通常、特定の値（たとえば、１）に設定される。
４）変更インジケータ（Ｃ）：  対応するメモリ単位内の位置に情報が保管されるたびに、変更インジケータは特定の値（たとえば、１）に設定される。
ｂ）ロック・インジケータ６０４：  これらのインジケータは、既存の制御ブロックによって表されるメモリ単位が１つまたは複数の他のプロセッサによってロックされているかどうかの判断を容易にするために、本発明の一態様により、この制御ブロックに含まれる。一例として、ロック・インジケータ６０４は以下のものを含む。
１）読み取りインジケータ（Ｒ）：  本発明の一態様により、この環境のプロセッサごとに１つずつ、複数の読み取りインジケータが提供される。このインジケータは、特定のプロセッサが特定のメモリ単位に関する読み取りロックを有するかどうかを示す。
２）書き込みインジケータ（Ｗ）：  本発明の一態様により、この環境のプロセッサごとに１つずつ、複数の書き込みインジケータが提供される。このインジケータは、そのプロセッサがそのメモリ単位に関する書き込みロックを有するかどうかを示す。
【００４７】
図７に戻ると、照会５１０で、ｚアクセス許可のチェックが失敗した場合、ステップ５１１で、構築された例外が唱えられ、処理が終了する。しかし、チェックが成功した場合、ステップ５１２で、プロセッサ（たとえば、エミュレートされたＣＰＵプロセス）はメモリ単位に関するロックを入手しようと試みる。
【００４８】
たとえば、プロセッサはアクセス制御ブロックのロック・インジケータをチェックし、要求されたロックと整合しないロックがこのメモリ単位について保持されていないことをインジケータが指定する場合、プロセッサは、適切なインジケータ（複数も可）を更新することによりメモリ単位をロックする。一例として、プロセッサが排他書き込みロックを要求した場合、プロセッサはアクセス制御ブロックをチェックする。いかなるプロセッサも要求されたメモリ単位に対する読み取りアクセスまたは書き込みアクセスを行えないことをアクセス制御ブロックが示していることに応答して、要求されたメモリ単位は要求側プロセッサによってロックされる。これは、このプロセッサがそのメモリ単位について書き込みロックを有することを示すために、アクセス制御ブロック内に適切な書き込みおよび読み取りインジケータを設定することを含む。これは、この例では、排他ロックである。
【００４９】
他の例では、要求側プロセッサが読み取りアクセスを要求している場合、プロセッサは、他のいずれのプロセッサ（たとえば、エミュレートされたＣＰＵプロセス）も書き込みアクセスを行えないことを保証するためにアクセス制御ブロックをチェックする。いずれのプロセッサも書き込みアクセスを行えない場合、メモリ単位は要求側プロセッサによってロックされる。これは、一例では、共用ロックであり、したがって、複数のプロセッサが読み取りアクセスを行える可能性がある。
【００５０】
照会５１４で、ロックが入手されている場合、またはプロセッサがすでにロックを備えている場合、ステップ５１５で、望ましい場合、一例では、メモリ単位はＴＬＢ０に追加される。さらに、ステップ５０６で、処理は解釈ユニットに戻り、命令が実行される。
【００５１】
照会５１４に戻り、ロックが入手されていない場合、照会５１６で、要求側プロセッサがこのプロセッサによって保持されているメモリ単位に関する要求を受信したかどうかについて判断が行われる。受信した場合、ステップ５１８で、要求側プロセッサがその命令を無効にする。すなわち、プロセッサはフリー・フェーズに移行し、それが保持する任意のメモリ単位を解放する。したがって、その命令はまったく実行されていないと思われるので、要求側プロセッサは、その命令を再始動しなければならない。これにより、潜在的なデッドロック状況が回避される。
【００５２】
しかし、このプロセッサによって保持されているメモリ単位に関する要求がまったくない場合、ステップ５１７で、要求側プロセッサは、そのメモリ単位に関するロックを保持している１つまたは複数の他のプロセッサにそのメモリ単位に関する要求を送信する。たとえば、要求側プロセッサがメモリ単位への書き込みアクセスを要求しているものと想定する。これは、アクセス制御ブロックをチェックして、要求されているメモリ単位への読み取りアクセスまたは書き込みアクセスをどのプロセッサが行えるかを判断する。この情報を入手したことに応答して、要求側プロセッサは、読み取りアクセスまたは書き込みアクセスを行える各プロセッサに連絡する。一例では、これは、それぞれのプロセッサに非同期割り込みを送信して、それがメモリ単位へのアクセスを望むことを示すことを含む。非同期割り込みは、構築された割り込みではなく、疑似割り込みであるが、その処理は構築された割り込みの処理と同様である。割り込みの処理に関する詳細については、図９に関連して説明する。
【００５３】
本発明の一態様により、非同期割り込みハンドラ４２８（図５および図９）が割り込み７００（図９）を受信すると、ステップ７０２で割り込みのタイプについて判断が行われる。たとえば、エミュレートされたメモリ内のフィールドを定期的にチェックして、割り込みが保留中であるかどうかを判断し、保留中である場合、割り込みのタイプを判断する（たとえば、使用可能なタイプの割り込みごとに１つのビットが存在する）。一例として、受信した割り込みが疑似割り込み７０４であるかどうかについて判断が行われる。これが疑似割り込みである場合、ロック解除に関する要求７０６、その他の疑似割り込み７０８など、疑似割り込みのタイプについてさらに判断が行われる。それがロック解除に関する要求である場合、要求されたロックを解除することにより、疑似割り込みが処理される。
【００５４】
その割り込みが疑似割り込みではない場合、どのタイプのｚアーキテクチャ割り込み７１０であるかが判断され、適切なハンドラ７１２が呼び出される。割り込みを処理した後、ステップ７１４で処理は解釈ユニット４２０を続ける。
【００５５】
図７に戻ると、ステップ５１７で要求を送信した後、処理はステップ５１２を続ける。一例では、ステップ５１７はループ内で１回だけ実行される。要求は送信されたが、依然としてロックが入手されない場合、プロセッサは、ロックが放棄されるまでまたは要求を受信して無効化を必要とするまで、待つだけである。
【００５６】
メモリ単位が書き込みロックを介してロックされている間、ロッキング・プロセッサはそのメモリ単位に対して読み取りアクセスまたは書き込みアクセスを実行することができ、そのプロセッサは、他のプロセッサがそのメモリ単位へのアクセスを要求しない限り、邪魔されない。これについては、図１０に関連してさらに説明する。図示の通り、ステップ８００で、メモリ単位はロックされる。したがって、ステップ８０２で、プロセッサはそのメモリ単位への読み取りアクセスおよび書き込みアクセスを行うことができる。照会８０４で、プロセッサがそのメモリ単位に関する要求を受信しない場合、プロセッサは引き続き、そのメモリ単位への書き込みアクセスおよび読み取りアクセスを行うことができる。しかし、プロセッサがその特定のメモリ単位に関する要求を受信した場合、ステップ８０６で、プロセッサはそのメモリ単位に関するロックを解放するかまたは降格し、その結果、他のプロセッサが読み取りアクセスまたは書き込みアクセスを行うことができる。
【００５７】
一実施形態では、チェックポイントが取られたときまたは非同期割り込みが受信されたときなどの戦略的な時点で、ロックされたメモリ単位をすべて解放するための判断を行うことができる。しかし、他の諸実施形態では、これは行われない。その代わりに、要求あり次第、メモリ単位が解放される。
【００５８】
ページ・ロックおよび強化され構築された特徴を使用してメモリ整合性を提供するための機能について、上記で詳しく説明されている。一例では、弱いメモリ整合性を備えて構築されたプロセッサは、堅固なメモリ整合性をエミュレートし、堅固なメモリ整合性を有するメモリ・アクセスを効率よく提供することができる。これは、メモリ・アクセス中に同期命令を必要とせずにしかもメモリ整合性を提供するためのハードウェアを使用せずに達成される。さらに、これは、デッドロックを引き起こさずに達成される。
【００５９】
このようなメモリ整合環境では、プロセッサは、それがメモリ内のストアを観測した場合に他の以前のストアがいずれも完了しているものと想定することができる。さらに、間隔境界（たとえば、ハーフワード、ワード、ダブルワードなど）上でアクセスする命令の場合、その間隔全体がブロック・コンカレントで取り出されるかまたは保管されることが保証される。
【００６０】
本発明の１つまたは複数の態様は、たとえば、コンピュータ使用可能媒体を有する製品（article of manufacture）（たとえば、１つまたは複数のコンピュータ・プログラム）に含めることができる。この媒体は、たとえば、本発明の諸機能を提供し促進するためのコンピュータ可読プログラム・コード手段またはロジック（たとえば、命令、コード、コマンドなど）をそこに有する。この製品は、コンピュータ・システムの一部として含めるか、または別個に販売することができる。
【００６１】
図１１に関連して、本発明の１つまたは複数の態様を取り入れた製品またはコンピュータ・プログラムの一例について説明する。コンピュータ・プログラム製品９００は、たとえば、本発明の１つまたは複数の態様を提供し促進するためのコンピュータ可読プログラム・コード手段またはロジック９０４をそこに保管するための１つまたは複数のコンピュータ使用可能媒体９０２を含む。この媒体は、電子、磁気、光学、電磁、赤外線、または半導体のシステム（あるいは装置またはデバイス）もしくは伝搬媒体にすることができる。コンピュータ可読媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、剛性磁気ディスク、および光ディスクを含む。光ディスクの例としては、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、およびＤＶＤを含む。
【００６２】
１つまたは複数のコンピュータ可読プログラム・コード手段またはロジックによって定義された１つまたは複数の相関モジュールの論理アセンブリあるいは一連のプログラム命令は、本発明の１つまたは複数の態様の実行を指示するものである。
【００６３】
有利なことに、ページ・ロックを使用してメモリ整合性が達成される機能が提供される。弱いメモリ整合性を有するように構築されたプロセッサは、メモリ整合性を有するメモリ・アクセスが提供されるように、堅固なメモリ整合性をエミュレートする。これは、特殊ハードウェアまたは特殊同期命令を必要とせずに提供される。これにより、システム・パフォーマンスが強化され、メモリ整合性を達成するための効率の良いメカニズムが提供される。さらに、プロセッサがメモリ単位へのアクセスを試みている間に行われた要求に応答して、命令または操作単位を無効にすることにより、デッドロック状況が回避される。
【００６４】
その上、有利なことに、メモリ単位を争わない（たとえば、わずか１つのＣＰＵがそのメモリ単位を使用しようと試みている）典型的な状況では、システム・パフォーマンスの劣化はまったく発生しない。追加のチェックまたは余分なテストもまったく行われない。
【００６５】
一実施形態では、この機能は、オペレーティング・システムではなく、アプリケーション・プログラムによって発行された命令について提供される。
【００６６】
様々な実施形態が上述されているが、これらは例に過ぎない。たとえば、処理環境は、Ｐｏｗｅｒ４、ＰｏｗｅｒＰＣ（Ｒ）、またはＩｎｔｅｌ（Ｒ）以外のアーキテクチャに基づく処理装置を含むことができる。さらに、ｐＳｅｒｉｅｓ（Ｒ）サーバ以外のサーバは、本発明の１つまたは複数の態様を取り入れて使用することができる。さらに、この環境は、３つ以上のネイティブ・プロセッサを含む場合もあれば、１つだけのネイティブ・プロセッサを含む場合もある。その上、本明細書で述べたもの以外のオペレーティング・システムも使用することができる。さらに、処理環境は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）以外の環境をエミュレートすることができる。さらに、構築された特徴は、他のアーキテクチャのものにすることができる。さらに、様々なエミュレータを使用することができる。エミュレータは、市販され、様々な企業から提供されている。エミュレーションに関する追加の詳細は、２００５年６月３日発行のJim SmithおよびRavi Nairによる「Virtual Machines: Versatile Platforms For Systems and Processes」（The Morgan Kaufmann Series in Computer Architecture and Design）に記載されている。さらに、処理環境は、エミュレータ・コードを含む必要はない。他の多くのタイプの処理環境は、本発明の１つまたは複数の態様を取り入れるか、使用するか、あるいはその両方を行うことができる。
【００６７】
一実施形態ではＴＬＢ０を参照しているが、本発明の１つまたは複数の態様は、ＴＬＢ０をチェックせずに使用することができる。さらに、メモリ単位は、メモリ・ページを含むがこれに限定されない、任意の定義済みサイズのメモリにすることができる。
【００６８】
その上、１つまたは複数の実施形態では、プログラム・コードの保管または実行あるいはその両方に適したデータ処理システムであって、直接またはシステム・バスを介して間接的にメモリ・エレメントに結合された少なくとも１つのプロセッサを含むものが使用可能である。メモリ・エレメントは、たとえば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、ならびに、実行中にコードを大容量記憶装置から取り出さなければならない回数を削減するために少なくとも何らかのプログラム・コードの一時記憶を行うキャッシュ・メモリを含む。
【００６９】
入出力またはＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない）は、直接または介在するＩ／Ｏコントローラを介してシステムに結合することができる。データ処理システムが介在する私設網または公衆網を介して他のデータ処理システムまたはリモート・プリンタあるいは記憶装置に結合された状態になれるようにするために、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、使用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【００７０】
本発明の１つまたは複数の態様の諸機能は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの何らかの組み合わせで実現することができる。本発明の諸機能を実行するためにマシンによって実行可能な複数命令からなる少なくとも１つのプログラムを実施するマシンによって読み取り可能な少なくとも１つのプログラム記憶装置を提供することができる。
【００７１】
本明細書に描写されている流れ図は例に過ぎない。本発明の精神を逸脱せずに、これらの流れ図またはそこに記載されているステップ（または操作）に対する多くの変形例が可能である。たとえば、これらのステップを異なる順序で実行するか、ステップを追加、削除、または変更することができる。これらの変形例はいずれも、請求された本発明の一部と見なされる。
【００７２】
諸実施形態が本明細書に詳細に描写され記載されているが、本発明の精神を逸脱せずに、様々な変更、追加、置き換えなどが可能であることは当業者には明らかになることであり、したがって、これらは特許請求の範囲に定義された本発明の範囲内のものであると見なされる。
【図１】
0004738548.tif 000002
【図２】
0004738548.tif 000003
【図３】
0004738548.tif 000004
【図４】
0004738548.tif 000005
【図５】
0004738548.tif 000006
【図６】
0004738548.tif 000007
【図７】
0004738548.tif 000008
【図８】
0004738548.tif 000009
【図９】
0004738548.tif 000010
【図１０】
0004738548.tif 000011
【図１１】
0004738548.tif 000012