(57)【特許請求の範囲】
【請求項１】
実行する命令を取得することであり、前記命令は第１の値と第２の値との比較を行うものである、前記取得することを含むコンピュータ実装方法であって、前記方法は、
前記命令を実行することであり、前記命令は、少なくとも複数の最大値関数または複数の最小値関数をサポートする単一の設計された命令であり、前記複数の最大値関数は、ＩＥＥＥ  ＭａｘＮｕｍと、Ｊａｖａ  Ｍａｔｈ．Ｍａｘ（）と、Ｃ−Ｓｔｙｌｅ  Ｍａｘ  Ｍａｃｒｏと、Ｃ＋＋Ａｌｇｏｒｉｔｈｍ．ｍａｘ（）と、ｆｍａｘ（）と、ＩＥＥＥ  ＭａｘＮｕｍＭａｇと、絶対値のＪａｖａ  Ｍａｔｈ．Ｍａｘ（）と、絶対値のＣ−Ｓｔｙｌｅ  Ｍａｘ  Ｍａｃｒｏと、絶対値のＣ＋＋Ａｌｇｏｒｉｔｈｍ．ｍａｘ（）と、絶対値のｆｍａｘ（）とのうちの少なくとも複数を含み、前記複数の最小値関数は、ＩＥＥＥ  ＭｉｎＮｕｍと、Ｊａｖａ  Ｍａｔｈ．Ｍｉｎ（）と、Ｃ−Ｓｔｙｌｅ  Ｍｉｎ  Ｍａｃｒｏと、Ｃ＋＋Ａｌｇｏｒｉｔｈｍ．ｍｉｎ（）と、ｆｍｉｎ（）と、絶対値のＩＥＥＥ  ＭｉｎＮｕｍと、絶対値のＪａｖａ  Ｍａｔｈ．Ｍｉｎ（）と、絶対値のＣ−Ｓｔｙｌｅ  Ｍｉｎ  Ｍａｃｒｏと、絶対値のＣ＋＋Ａｌｇｏｒｉｔｈｍ．ｍｉｎ（）と、絶対値のｆｍｉｎ（）とのうちの少なくとも複数を含む、前記実行することを含み、前記実行することは、
前記命令の制御に基づいて、実行する比較関数を決定することであって、前記比較関数は前記命令のために構成された前記複数の最大値関数または前記複数の最小値関数のうちの１つであり、前記比較関数は前記比較関数に特定的な複数の比較オプションを有する、前記決定することと、
前記比較関数のための前記複数の比較オプションから、比較する前記第１の値と前記第２の値とに対応する比較オプションを選択することと、
前記比較オプションを使用して前記第１の値と前記第２の値とを比較して、結果を求めることであり、前記結果は前記命令の前記制御によって示される前記比較関数のために選択された前記比較オプションに特定的である、前記求めることと、
前記結果を選択された場所に入れることとを含み、前記結果はコンピューティング環境内での処理において使用されることになることを特徴とする、コンピュータ実装方法。
【請求項２】
前記複数の比較オプションの各比較オプションは、ケースの対を含み、前記ケースの対は、−∞と、＋∞と、−ＦＮと、＋ＦＮと、−０と、＋０と、ＱＮＡＮと、ＳＮＡＮとのうちの任意の２つを含み、ここでＦＮは有限数である、請求項１に記載の方法。
【請求項３】
前記複数の比較オプションのうちの少なくとも１つの比較オプションは、ケースの対を含み、前記ケースの対は、−∞と、＋∞と、−０と、＋０と、ＱＮＡＮと、ＳＮＡＮとのうちの任意の２つを含む、請求項１に記載の方法。
【請求項４】
前記単一の設計された命令は前記複数の最大値関数をサポートし、前記複数の最大値関数は、ＩＥＥＥ  ＭａｘＮｕｍと、Ｊａｖａ  Ｍａｔｈ．Ｍａｘ（）と、Ｃ−Ｓｔｙｌｅ  Ｍａｘ  Ｍａｃｒｏと、Ｃ＋＋Ａｌｇｏｒｉｔｈｍ．ｍａｘ（）と、ｆｍａｘ（）と、ＩＥＥＥ  ＭａｘＮｕｍＭａｇと、絶対値のＪａｖａ  Ｍａｔｈ．Ｍａｘ（）と、絶対値のＣ−Ｓｔｙｌｅ  Ｍａｘ  Ｍａｃｒｏと、絶対値のＣ＋＋Ａｌｇｏｒｉｔｈｍ．ｍａｘ（）と、絶対値のｆｍａｘ（）とを含む、請求項１に記載の方法。
【請求項５】
前記単一の設計された命令は前記複数の最小値関数をサポートし、前記複数の最小値関数は、ＩＥＥＥ  ＭｉｎＮｕｍと、Ｊａｖａ  Ｍａｔｈ．Ｍｉｎ（）と、Ｃ−Ｓｔｙｌｅ  Ｍｉｎ  Ｍａｃｒｏと、Ｃ＋＋Ａｌｇｏｒｉｔｈｍ．ｍｉｎ（）と、ｆｍｉｎ（）と、絶対値のＩＥＥＥ  ＭｉｎＮｕｍと、絶対値のＪａｖａ  Ｍａｔｈ．Ｍｉｎ（）と、絶対値のＣ−Ｓｔｙｌｅ  Ｍｉｎ  Ｍａｃｒｏと、絶対値のＣ＋＋Ａｌｇｏｒｉｔｈｍ．ｍｉｎ（）と、絶対値のｆｍｉｎ（）とを含む、請求項１に記載の方法。
【請求項６】
前記単一の設計された命令は、前記複数の最大値関数と前記複数の最小値関数の両方を含む、請求項１に記載の方法。
【請求項７】
前記第１の値と前記第２の値とは前記命令によって与えられ、前記第１の値は前記命令のオペランドの１つの要素の値であり、前記第２の値は前記命令の別のオペランドの対応する要素の値である、請求項１に記載の方法。
【請求項８】
前記１つの要素のサイズは、前記命令の別の制御に基づいて決定される、請求項７に記載の方法。
【請求項９】
前記第１の値と前記第２の値とは浮動小数点値であり、前記１つの要素の前記サイズは前記浮動小数点値の浮動小数点形式に依存し、前記別の制御は選択された浮動小数点形式を示す、請求項８に記載の方法。
【請求項１０】
前記制御は前記命令のマスクで与えられる、請求項１に記載の方法。
【請求項１１】
請求項１から１０のいずれかに記載の方法のすべての動作を行うように適応された手段を含むシステム。
【請求項１２】
請求項１から１０のいずれかに記載の方法のすべての動作を行うための命令を含むコンピュータ・プログラムであって、前記コンピュータ・プログラムはコンピュータ・システム上で実行される、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
１つまたは複数の態様は、一般には、コンピューティング環境内での処理に関し、詳細には、そのような処理を向上させることに関する。
【背景技術】
【０００２】
コンピューティングにおいては、実数を表すために浮動小数点数が使用され、浮動小数点数のために使用されるいくつかの表現がある。これらの表現は、ある特定の演算が浮動小数点数を使用してどのように動作すべきであるかを示す指標を含む。例えば、電気電子技術者協会（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ（ＩＥＥＥ））は、浮動小数点数に対する最小値演算および最大値演算のための動作を規定する浮動小数点標準を提供している。
【０００３】
この標準は存在するが、多くのプログラミング言語およびプログラマがこの標準に従わないことを選択してきた。したがって、様々なプログラミング言語間でそれらの言語のライブラリ内にいくつかの異なる標準および表現がある。１つの言語内でさえも、ライブラリ関数を使用せず、異なる動作に至る何らかの他の言語シンタックスを使用することが一般的な慣例である場合がある。その結果として、ハードウェアにおいてこれらの演算を高速化することが困難になり、いくつかの条件分岐を含む多くの命令のシーケンスがエミュレートを必要とすることが多い。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】"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 ISA(TM) Version 2.07B," International Business Machines Corporation, April 9, 2015に記載されている。ＰＯＷＥＲ  ＡＲＣＨＩＴＥＣＴＵＲＥは、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。
【００２２】
コンピューティング環境は、インテルｘ８６アーキテクチャを含むがこれには限定されない他のアーキテクチャに基づいてもよい。他の例も存在する。
【００２３】
図１に示すように、コンピューティング環境１００は、例えば、多くの他の汎用または特殊目的コンピューティング・システム環境または構成とともに動作可能な、例えばコンピュータ・システム／サーバ１２を有するノード１０を含む。コンピュータ・システム／サーバ１２とともに使用するのに適合し得る周知のコンピューティング・システム、環境または構成あるいはその組合せの例としては、パーソナル・コンピュータ（ＰＣ）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち型デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および、上記のシステムまたはデバイスのうちのいずれかを含む分散クラウド・コンピューティング環境などがあるが、これらには限定されない。
【００２４】
コンピュータ・システム／サーバ１２について、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明する場合がある。一般には、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム／サーバ１２は、通信ネットワークを介して接続されたリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境を含むがこれには限定されない、多くのコンピューティング環境で実施可能である。分散クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ・ストレージ・デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体に位置することができる。
【００２５】
図１に示すように、コンピュータ・システム／サーバ１２は汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ１２の構成要素は、１つまたは複数のプロセッサまたは処理ユニット１６と、システム・メモリ２８と、システム・メモリ２８を含む様々なシステム構成要素をプロセッサ１６に結合するバス１８とを含み得るが、これらには限定されない。
【００２６】
バス１８は、様々なバス・アーキテクチャのうちのいずれかのアーキテクチャを使用する、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィクス・ポート、およびプロセッサ・バスまたはローカル・バスを含む、数種類のバス構造のうちのいずれかの１つまたは複数に相当する。例として、そのようなアーキテクチャとしては、これらには限定されないが、業界標準アーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ＭＣＡ）バス、拡張（Ｅｎｈａｎｃｅｄ）ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ：ＶＥＳＡ）ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：ＰＣＩ）バスがある。
【００２７】
コンピュータ・システム／サーバ１２は、典型的には様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２がアクセスすることができる任意の利用可能な媒体であってよく、揮発性媒体と不揮発性媒体の両方と、取り外し可能媒体と取り外し不能媒体とを含む。
【００２８】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ・システム記憶媒体をさらに含んでよい。一例に過ぎないが、ストレージ・システム３４を、取り外し不能な不揮発性磁気媒体（図示されておらず、一般に「ハード・ドライブ」と呼ばれる）の読み書きのために設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば「フロッピィ・ディスク」）の読み書きのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたはその他の光学媒体などの、取り外し可能な不揮発性光ディスクの読み書きのための光ディスク・ドライブとを設けることができる。そのような場合、それぞれが１つまたは複数のデータ・メディア・インターフェースによってバス１８に接続することができる。以下でさらに図示し、説明するように、メモリ２８は、本発明の実施形態の機能を実施するように構成された１組の（例えば少なくとも１つの）プログラム・モジュールを有する少なくとも１つのプログラム製品を含み得る。
【００２９】
一例として、これには限らないが、１組の（少なくとも１つの）プログラム・モジュール４２を有するプログラム／ユーティリティ４０の他、オペレーティング・システムと、１つまたは複数のアプリケーション・プログラムと、その他のプログラム・モジュールと、プログラム・データとがメモリ２８に記憶されてよい。オペレーティング・システムと、１つまたは複数のアプリケーション・プログラムと、その他のプログラム・モジュールと、プログラム・データまたはこれらの何らかの組合せとのうちのそれぞれが、ネットワーキング環境の実装形態を含み得る。プログラム・モジュール４２は、一般には、本明細書に記載の本発明の実施形態の機能または方法あるいはその両方を実施する。
【００３０】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４など、または、ユーザがコンピュータ・システム／サーバ１２と対話することができるようにする１つまたは複数のデバイス、または、コンピュータ・システム／サーバ１２が１つまたは複数の他のコンピューティング・デバイスと通信することができるようにする任意のデバイス（例えばネットワーク・カード、モデムなど）、あるいはその組合せなどの、１つまたは複数の外部デバイス１４とも通信することができる。このような通信は、入出力（Ｉ／Ｏ）インターフェース２２を介して行うことができる。さらに、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ）、または汎用ワイド・エリア・ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（例えばインターネット）、あるいはその組合せなどの１つまたは複数のネットワークと、ネットワーク・アダプタ２０を介して通信することができる。図のように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他の構成要素と通信する。なお、図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方もコンピュータ・システム／サーバ１２とともに使用することができることも理解されたい。例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらには限定されない。
【００３１】
一例として、プロセッサ１６は、命令を実行するために使用される複数の機能構成要素を含む。図２に示すように、これらの機能構成要素には、例えば、実行する命令をフェッチする命令フェッチ構成要素１２０と、フェッチされた命令をデコードし、デコードされた命令のオペランドを取得する命令デコード・ユニット１２２と、デコードされた命令を実行する命令実行構成要素１２４と、必要な場合に命令実行のためにメモリにアクセスするメモリ・アクセス構成要素１２６と、実行された命令の結果を提供するライト・バック構成要素１３０とが含まれる。本明細書の一態様によると、以下で詳細に説明するように、これらの構成要素のうちの１つまたは複数が、選択可能オプション１３６を有する浮動小数点最大値／最小値演算を行うために使用される。
【００３２】
プロセッサ１６は、一実施形態では、機能構成要素のうちの１つまたは複数の機能構成要素によって使用される１つまたは複数のレジスタ１４０も含む。
【００３３】
１つまたは複数の態様を組み込み、使用するコンピューティング環境の別の実施形態について、図３を参照しながら説明する。この例では、コンピューティング環境２００は、例えば、ネイティブ中央処理装置（ＣＰＵ）２０２と、メモリ２０４と、例えば１つまたは複数のバス２０８またはその他の接続機構あるいはその両方を介して互いに結合された１つまたは複数の入出力デバイスまたはインターフェース２０６あるいはその両方とを含む。例として、コンピューティング環境２００は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＰｏｗｅｒＰＣプロセッサまたはｐＳｅｒｉｅｓサーバ、または米国カリフォルニア州パロアルトのヒューレット・パッカード社によって提供される、インテルＩｔａｎｉｕｍ  ＩＩプロセッサ内蔵ＨＰ  Ｓｕｐｅｒｄｏｍｅ、または、インターナショナル・ビジネス・マシーンズ・コーポレーション、ヒューレット・パッカード、インテル、オラクルまたはその他によって提供されるアーキテクチャに基づくその他のマシン、あるいはその組合せを含んでよい。
【００３４】
ネイティブ中央処理装置２０２は、環境内での処理中に使用される、１つまたは複数の汎用レジスタまたは１つまたは複数の特殊用途レジスタあるいはその両方などの、１つまたは複数のネイティブ・レジスタ２１０を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【００３５】
また、ネイティブ中央処理装置２０２は、メモリ２０４に記憶されている命令およびコードを実行する。特定の一例では、中央処理装置は、メモリ２０４に記憶されているエミュレータ・コード２１２を実行する。このコードは、１つのアーキテクチャにおいて構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることができるようにする。例えば、エミュレータ・コード２１２は、ＰｏｗｅｒＰＣプロセッサ、ｐＳｅｒｉｅｓサーバ、ＨＰ  Ｓｕｐｅｒｄｏｍｅサーバまたはその他のものなど、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づくマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅをエミュレートし、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェアおよび命令を実行することができるようにする。
【００３６】
エミュレータ・コード２１２に関するさらなる詳細について、図４を参照しながら説明する。メモリ２０４に記憶されているゲスト命令２５０が、ネイティブＣＰＵ２０２のアーキテクチャ以外のアーキテクチャで実行されるように開発された（例えばマシン命令と相互に関係する）ソフトウェア命令を含む。例えば、ゲスト命令２５０は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサ上で実行されるように設計されていてよいが、その代わりに、例えばインテルＩｔａｎｉｕｍ  ＩＩプロセッサであってもよいネイティブＣＰＵ２０２上でエミュレートされる。一例では、エミュレータ・コード２１２は、メモリ２０４から１つまたは複数のゲスト命令２５０を取得し、任意選択により、取得された命令のためにローカル・バッファリングを行う命令フェッチ・ルーチン２５２を含む。また、取得されたゲスト命令の種類を決定し、そのゲスト命令を１つまたは複数の対応するネイティブ命令２５６に変換するための命令変換ルーチン２５４も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別することと、その機能を実行するためにネイティブ命令を選択することとを含む。
【００３７】
また、エミュレータ２１２は、ネイティブ命令が実行されるようにするためのエミュレーション制御ルーチン２６０を含む。エミュレーション制御ルーチン２６０は、ネイティブＣＰＵ２０２に、１つまたは複数の事前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させることができ、そのような実行の終わりに、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために命令フェッチ・ルーチンに制御を戻させることができる。ネイティブ命令２５６の実行は、変換ルーチンによる決定に従って、メモリ２０４からレジスタにデータをロードすること、または、レジスタからメモリにデータを格納し戻すこと、または何らかの種類の算術演算または論理演算を実行することを含み得る。
【００３８】
各ルーチンは、例えば、メモリに記憶されたソフトウェアで実装され、ネイティブ中央処理装置２０２によって実行される。他の例では、ルーチンまたは演算のうちの１つまたは複数が、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せで実装される。エミュレートされるプロセッサのレジスタは、ネイティブＣＰＵのレジスタ２１０を使用して、またはメモリ２０４内の場所を使用してエミュレートされてよい。いくつかの実施形態では、ゲスト命令２５０と、ネイティブ命令２５６と、エミュレータ・コード２１２とが同じメモリにあってよく、または異なるメモリ・デバイスに分散されてもよい。
【００３９】
本明細書では、ファームウェアは、例えば、プロセッサのマイクロコード、またはミリコード、またはマクロコードあるいはその組合せを含む。ファームウェアは、例えば、ハードウェア・レベルの命令、またはより高いレベルのマシン・コードの実装で使用されるデータ構造、あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、典型的には、トラステッド・ソフトウェアを含むマイクロコード、または基礎となるハードウェアに固有のマイクロコードとして配布されるプロプライエタリ・コードを含み、システム・ハードウェアへのオペレーティング・システム・アクセスを制御する。
【００４０】
取得され、変換され、実行されるゲスト命令２５０は、例えば、本明細書に記載のベクトル浮動小数点最大値命令、ベクトル浮動小数点最小値命令、またはベクトル浮動小数点最大値／最小値命令あるいはその組合せである。１つのアーキテクチャ（例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）の命令であるこの命令は、メモリからフェッチされ、変換されて、別のアーキテクチャ（例えばＰｏｗｅｒＰＣ、ｐＳｅｒｉｅｓ、インテルなど）のネイティブ命令２５６のシーケンスとして表される。次に、これらのネイティブ命令が実行される。
【００４１】
本明細書では、命令のフィールドと（ネイティブ・システムまたはエミュレートされるシステムにおける）プロセッサによる実行とを含む、ベクトル浮動小数点最大値命令、ベクトル浮動小数点最小値命令、およびベクトル浮動小数点最大値／最小値命令の一実施形態に関する詳細について説明する。本発明の一態様によると、ベクトル浮動小数点最大値命令は、複数の値のうちのより大きい値を決定するために値の比較を行い、複数の特殊な比較ケース（本明細書では特定のケースとも呼ぶ）を扱う。最大値比較における複数の特殊なケースを扱う単一の命令（例えば単一の設計されたマシン命令）を使用することによって、最大値比較の特殊なケースを扱うのに必要な命令の数が１つに削減され、したがってコンピュータ処理を向上させる。
【００４２】
同様に、ベクトル浮動小数点最小値命令は、複数の値のうちのより小さい値を決定するために値の比較を行い、複数の特殊な比較ケースを扱う。最小値比較における複数の特殊なケースを扱う単一の命令（例えば単一の設計されたマシン命令）を使用することによって、最小値比較の特殊なケースを扱うのに必要な命令の数が１つに削減され、したがってコンピュータ処理を向上させる。
【００４３】
さらに、ベクトル浮動小数点最大値／最小値命令は、複数の値のうちのより大きい値／より小さい値をそれぞれ決定するために値の比較を行い、それぞれ複数の特殊な比較ケースを扱う。単一の命令（例えば単一の設計されたマシン命令）を使用することにより、異なる順列を扱うのに必要な命令の数が１つに削減され、したがってコンピュータ処理を向上させる。本発明の態様は、コンピュータ技術と、コンピュータ処理の向上とに密接に結びついている。
【００４４】
一実施形態では、ベクトル浮動小数点最大値命令と、ベクトル浮動小数点最小値命令と、ベクトル浮動小数点最大値／最小値命令とのうちの１つまたは複数は、例えば１ないし１６個の要素の範囲の固定サイズ・ベクトルを提供するベクトル機能の一部である。各ベクトルは、この機能において定義されているベクトル命令によって演算が行われるデータを含む。一実施形態では、ベクトルが複数の要素からなる場合、各要素は他の要素と並列して処理される。命令の完了は、すべての要素の処理が完了するまで起こらない。他の実施形態では、要素は一部が並列に、または順次にあるいはその両方で処理される。
【００４５】
ベクトル命令は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ｘ８６、ＩＡ−３２、ＩＡ−６４などを含むがこれらには限定されない様々なアーキテクチャの一部として実装することができる。本明細書に記載の実施形態は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅのためのものであるが、本明細書に記載されているベクトル命令および１つまたは複数の他の態様は、多くの他のアーキテクチャに基づいてよい。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは一例に過ぎない。
【００４６】
ベクトル機能がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの一部として実装される一実施形態では、ベクトル・レジスタおよび命令を使用するために、指定された制御レジスタ（例えば制御レジスタ０）におけるベクトル・イネーブル制御およびレジスタ制御が例えば１に設定される。ベクトル機能がインストールされており、ベクトル命令がイネーブル制御の設定なしに実行される場合、データ例外と認識される。ベクトル機能がインストールされておらず、ベクトル命令が実行される場合、演算例外と認識される。
【００４７】
一実施形態では、３２個のベクトル・レジスタがあり、他の種類のレジスタをベクトル・レジスタの象限にマッピングすることができる。例えば、レジスタ・ファイルが３２個のベクトル・レジスタを含むことができ、各レジスタは長さが１２８ビットである。長さが６４ビットの１６個の浮動小数点レジスタが、ベクトル・レジスタをオーバーレイすることができる。したがって、一例として、浮動小数点レジスタ２が変更されると、ベクトル・レジスタ２も変更される。他の種類のレジスタのための他のマッピングも可能である。
【００４８】
ベクトル・データは、記憶域において、例えば他のデータ形式と同じ左から右の順序で現れる。０ないし７の番号が付けられたデータ形式のビットが、記憶域の左端（最小番号が付けられた）バイト位置のバイトを構成し、ビット８ないし１５が次の順次位置のバイトを形成し、以下同様である。他の例では、ベクトル・データは記憶域において右から左などの別の順序で現れてもよい。
【００４９】
ベクトル浮動小数点最大値命令の一例について図５を参照しながら説明する。図示のように、この命令は複数のフィールドを含み、１つのフィールドはそれに付けられた下付き番号を有し得る。命令のフィールドに付けられた下付き番号は、そのフィールドが適用されるオペランドを示す。例えば、ベクトル・レジスタＶ１に付けられた下付き番号１は、Ｖ１のレジスタが先頭オペランドを含むことを示し、以下同様である。レジスタ・オペランドは、例えば１２８ビットの長さの１つのレジスタである。
【００５０】
図５を参照すると、一実施形態では、ベクトル浮動小数点最大値命令３００は、ベクトル浮動小数点最大値演算を示すオペコード・フィールド３０２ａ、３０２ｂと、第１のベクトル・レジスタ（Ｖ１）を指示するために使用される第１のベクトル・レジスタ・フィールド３０４と、第２のベクトル・レジスタ（Ｖ２）を指示するために使用される第２のベクトル・レジスタ・フィールド３０６と、第３のベクトル・レジスタ（Ｖ３）を指示するために使用される第３のベクトル・レジスタ・フィールド３０８と、第１のマスク・フィールド（Ｍ６）３０９と、第２のマスク・フィールド（Ｍ５）３１０と、第３のマスク・フィールド（Ｍ４）３１２と、レジスタ拡張ビット（ＲＸＢ）フィールド３１４とを含み、それぞれについては以下で説明する。一実施形態では、これらのフィールドは別々のものであり、互いに独立している。しかし、他の実施形態では、複数のフィールドが組み合わされてもよい。これらのフィールドに関する詳細な情報について以下に記載する。
【００５１】
ベクトル・レジスタ・フィールド３０４は、第１のオペランドを格納するベクトル・レジスタを指示するために使用され、第１のオペランドは、２つのオペランドの要素の値を比較してそれら要素の２つの値のうちの大きい方を求めた結果である。オペランド要素は、例えば、指定された形式の（ＩＥＥＥ）２進浮動小数点（ｂｉｎａｒｙ  ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ（ＢＦＰ））数として扱われる。２つのオペランドは、ベクトル・レジスタ・フィールド３０６を使用して指定されたベクトル・レジスタに入れられた第２のオペランドと、ベクトル・レジスタ・フィールド３０８を使用して指定されたベクトル・レジスタに入れられた第３のオペランドである。一例では、ベクトル・レジスタ・フィールド３０４、３０６、３０８のそれぞれは、ベクトル・レジスタを指示するためにＲＸＢフィールド３１４とともに使用される。
【００５２】
例えば、ＲＸＢフィールド３１４は、ベクトル・レジスタ指示オペランドのための最上位ビットを含む。命令によって指定されていないレジスタ指示のためのビットは、予約されるビットであり、ゼロに設定される。最上位ビットは、例えば、ベクトル・レジスタ・フィールドの４ビットレジスタ指示の左に連結されて、５ビット・ベクトル・レジスタ指示を形成する。
【００５３】
一例では、ＲＸＢフィールドは４ビット（例えば、ビット０ないし３）を含み、これらのビットは、以下のように定義される。
【００５４】
０−命令の（例えばビット８ないし１１内の）先頭のベクトル・レジスタ指定のための最上位ビット。
【００５５】
１−もしある場合、命令の（例えばビット１２ないし１５内の）２番目のベクトル・レジスタ指定のための最上位ビット。
【００５６】
２−もしある場合、命令の（例えばビット１６ないし１９内の）３番目のベクトル・レジスタ指定のための最上位ビット。
【００５７】
３−もしある場合、命令の（例えばビット３２ないし３５内の）４番目のベクトル・レジスタ指定のための最上位ビット。
【００５８】
各ビットは、例えばアセンブラによって、レジスタ番号に応じてゼロまたは１に設定される。例えば、レジスタ０ないし１５の場合、ビットは０に設定される。レジスタ１６ないし３１の場合、ビットは１に設定される、などである。
【００５９】
一実施形態では、各ＲＸＢビットは、１つまたは複数のベクトル・レジスタを含む命令内の特定の位置のための拡張ビットである。例えば、ＲＸＢのビット０は位置８ないし１１のための拡張ビットであり、例えばＶ１に割り当てられ、以下同様である。具体的には、ベクトル・レジスタの場合、オペランドが入れられるレジスタは、例えば、最上位ビットとして対応するレジスタ拡張ビット（ＲＸＢ）が付加された、レジスタ・フィールドの４ビット・フィールドを使用して指定される。例えば、４ビット・フィールドが０１１０であり、拡張ビットが０である場合、５ビット・フィールド００１１０がレジスタ番号６を示す。他の実施形態では、ＲＸＢフィールドは追加のビットを含み、複数のビットが各ベクトルまたは位置の拡張部として使用される。
【００６０】
Ｍ６フィールド３０９は、比較の特殊なケース（本明細書では特定のケースとも呼ぶ）の扱いを指定する。各要素の結果の詳細な説明を図９ないし図１８に示す。予約値が指定された場合、一例では指定例外と認識される。
【００６１】
Ｍ６        実行される最大値関数
０          ＩＥＥＥ  ＭａｘＮｕｍ
１          Ｊａｖａ  Ｍａｔｈ．Ｍａｘ（）
２          Ｃ−Ｓｔｙｌｅ  Ｍａｘ  Ｍａｃｒｏ
３          Ｃ＋＋Ａｌｇｏｒｉｔｈｍ．ｍａｘ（）
４          ｆｍａｘ（）
５〜７      予約
８          ＩＥＥＥ  ＭａｘＮｕｍＭａｇ
９          絶対値のＪａｖａ  Ｍａｔｈ．Ｍａｘ（）
１０        絶対値のＣ−Ｓｔｙｌｅ  Ｍａｘ  Ｍａｃｒｏ
１１        絶対値のＣ＋＋Ａｌｇｏｒｉｔｈｍ．ｍａｘ（）
１２        絶対値のｆｍａｘ（）
１３〜１５  予約
【００６２】
Ｍ４フィールド３１２は、浮動小数点形式を指定する。浮動小数点形式によって、ベクトル・レジスタ・オペランド内の要素のサイズが決定する。予約値が指定された場合、一例では指定例外と認識される。
【００６３】
Ｍ４        浮動小数点形式
０〜１      予約
２          短形式
３          長形式
４          拡張形式
５〜１５    予約
【００６４】
Ｍ５フィールド３１０は、一例では、図６に示すように以下の制御を含む。
【００６５】
単一要素制御（Ｓ）３１６：ビット０が１に設定された場合、ベクトル内のゼロ添字付き要素のみに対して演算が行われる。トラップ例外条件がない場合、一実施形態では、第１のオペランド・ベクトル内の他のすべての要素のビット位置が予測不能である。第２および第３のオペランド内の他のすべての要素の値が無視される。ビット０がゼロに設定された場合、ベクトル内のすべての要素に対して演算が行われる。
【００６６】
予約：ビット１、２および３は予約されており、ゼロである必要がある。そうでない場合、一例では指定例外と認識される。
【００６７】
様々なフィールドおよびレジスタについて説明したが、本発明の１つまたは複数の態様は、他の、または追加の、またはより少ないフィールドまたはレジスタ、またはフィールドまたはレジスタの他のサイズなどを使用してもよい。多くの変形態様が可能である。例えば、命令の明示的に指定されたレジスタまたはフィールドの代わりに、暗黙的レジスタを使用してもよい。また、ベクトル・レジスタ以外のレジスタを使用してもよい。その場合も、他の変形態様も可能である。
【００６８】
ベクトル浮動小数点最大値命令の一実施形態の演算では、図９ないし図１８に示すように、第２のオペランドの浮動小数点要素が、第３のオペランドの対応する浮動小数点要素と比較される。２つの値のうちの大きい方が、第１のオペランドの対応する要素に入れられる。オペランド要素はすべて、指定された形式の２進浮動小数点数として扱われる。
【００６９】
実行される比較およびその結果は、選択された比較関数（例えばＭ６によって示される）と、実行されるその特定の比較関数の比較オプションとに依存する。比較オプション（例えば、以下のケースのうちの任意の２つを含む対：例えば、−≡、＋≡、−ＦＮ、＋ＦＮ、−０、＋０、ＱＮＡＮ、ＳＮＡＮ、ここでＦＮは有限数である）は、比較される第２のオペランド要素と第３のオペランド要素の値に基づいて選択される。各比較関数は、それに関連づけられた異なる比較オプションを有することができ、比較オプションの結果は実行されるその特定の比較関数に依存する。異なる比較関数の同じ比較オプションのために異なる結果が指定され得る。例えば、Ｍ６＝０であり、比較される第２のオペランド値および第３のオペランド値が−０、＋０である場合、結果は＋０である（図９参照）。しかし、Ｍ６＝３であり、第２のオペランド値および第３のオペランド値がやはり−０、＋０である場合、結果は−０である（図１２参照）。多くの変形も可能である。
【００７０】
一実施形態では、実行される最大値関数に応じて、第２または第３のオペランド内の浮動小数点要素のいずれかがＮａＮである場合、図９ないし図１８で指定されているように、ＩＥＥＥ無効演算例外と認識され得る。ＩＥＥＥ無効演算マスク・ビットが１の場合、一例では、ＩＥＥＥ無効演算および対応する要素添字について設定されているベクトル例外コード（ＶＸＣ）によるプログラム割り込みが発生し、演算は中断される。
【００７１】
さらなる実施形態では、命令のフィールド（例えば、Ｍ６または別の選択されたフィールドなどの命令の明示的フィールド、または命令の暗黙的フィールド）が複数のビットを含み、各ビットは、（例えば１に）設定されている場合、異なる比較オプションを定義する選択子である。例えば、ビット０が設定されている場合、符号を無視する必要があることを示す。ビット１が設定されている場合、ＳＮＡＮについてシグナリングすることを示し、ビット２が設定されている場合は、例えば＋０、−０のどちらの値を選択するかを示し、ビット３が設定されている場合、例えば≡、−ＦＮのどちらの値を選択するかを示す、などである。これらの異なるビットによって多くの異なるオプションを表現することができる。異なるオプションに対応する異なるビットを有することにより、１つまたは複数のビットを設定することができ、それによって単一の命令を使用して多くの異なる比較オプションおよび結果を提供することができる。
【００７２】
さらなる実施形態では、ベクトル浮動小数点最小値命令が提供され、図７を参照しながら説明する。一実施形態では、ベクトル浮動小数点最小値命令３２０は、ベクトル浮動小数点最小値演算を示すオペコード・フィールド３２２ａ、３２２ｂと、第１のベクトル・レジスタ（Ｖ１）を指示するために使用される第１のベクトル・レジスタ・フィールド３２４と、第２のベクトル・レジスタ（Ｖ２）を指示するために使用される第２のベクトル・レジスタ・フィールド３２６と、第３のベクトル・レジスタ（Ｖ３）を指示するために使用される第３のベクトル・レジスタ・フィールド３２８と、第１のマスク・フィールド（Ｍ６）３２９と、第２のマスク・フィールド（Ｍ５）３３０と、第３のマスク・フィールド（Ｍ４）３３２と、レジスタ拡張ビット（ＲＸＢ）フィールド３３４とを含み、それぞれについては本明細書で説明する。一実施形態では、これらのフィールドは別々のものであり、互いに独立している。しかし、他の実施形態では、複数のフィールドが組み合わされてもよい。これらのフィールドに関するさらなる情報について以下に記載する。
【００７３】
ベクトル・レジスタ・フィールド３０４は、第１のオペランドを格納するベクトル・レジスタを示すために使用され、第１のオペランドは、２つのオペランドの要素の値を比較してそれら要素の２つの値のうちの小さい方を求めた結果である。オペランド要素は例えば指定された形式の２進浮動小数点数として扱われる。２つのオペランドは、ベクトル・レジスタ・フィールド３２６を使用して指定されたベクトル・レジスタに格納された第２のオペランドと、ベクトル・レジスタ・フィールド３２８を使用して指定されたベクトル・レジスタに格納された第３のオペランドである。一例では、ベクトル・レジスタ・フィールド３２４、３２６、３２８のそれぞれは、上述のようにベクトル・レジスタを指示するためにＲＸＢフィールド３３４とともに使用される。
【００７４】
本実施形態では、Ｍ６フィールド３２９は、比較の特殊なケース（本明細書では特定のケースとも呼ぶ）の扱いを指定する。各要素の結果の詳細な説明を図１９ないし図２８に示す。予約値が指定された場合、一例では指定例外と認識される。
【００７５】
Ｍ６        実行される最小値関数
０          ＩＥＥＥ  ＭｉｎＮｕｍ
１          Ｊａｖａ  Ｍａｔｈ．Ｍｉｎ（）
２          Ｃ−Ｓｔｙｌｅ  Ｍｉｎ  Ｍａｃｒｏ
３          Ｃ＋＋Ａｌｇｏｒｉｔｈｍ．ｍｉｎ（）
４          ｆｍｉｎ（）
５〜７      予約
８          絶対値のＩＥＥＥ  ＭｉｎＮｕｍ
９          絶対値のＪａｖａ  Ｍａｔｈ．Ｍｉｎ（）
１０        絶対値のＣ−Ｓｔｙｌｅ  Ｍｉｎ  Ｍａｃｒｏ
１１        絶対値のＣ＋＋Ａｌｇｏｒｉｔｈｍ．ｍｉｎ（）
１２        絶対値のｆｍｉｎ（）
１３〜１５  予約
【００７６】
Ｍ４フィールド３３２は、浮動小数点形式を指定する。浮動小数点形式によって、ベクトル・レジスタ・オペランド内の要素のサイズが決定する。予約値が指定された場合、一例では指定例外と認識される。
【００７７】
Ｍ４        浮動小数点形式
０〜１      予約
２          短形式
３          長形式
４          拡張形式
５〜１５    予約
【００７８】
Ｍ５フィールド３３０は、一例では、図６に示すように以下の制御を含む。
【００７９】
単一要素制御（Ｓ）３１６：ビット０が１に設定された場合、ベクトル内のゼロ添字付き要素のみに対して演算が行われる。トラップ例外条件がない場合、一実施形態では、第１のオペランド・ベクトル内の他のすべての要素のビット位置が予測不能である。第２および第３のオペランド内の他のすべての要素の値が無視される。ビット０がゼロに設定された場合、ベクトル内のすべての要素に対して演算が行われる。
【００８０】
様々なフィールドおよびレジスタについて説明したが、本発明の１つまたは複数の態様は、他の、または追加の、あるいはより少ないフィールドまたはレジスタ、あるいはフィールドまたはレジスタの他のサイズなどを使用してもよい。多くの変形態様が可能である。例えば、命令の明示的に指定されたレジスタまたはフィールドの代わりに、暗黙的レジスタを使用してもよい。また、ベクトル・レジスタ以外のレジスタを使用してもよい。その場合も、他の変形態様も可能である。
【００８１】
ベクトル浮動小数点最小値命令の一実施形態の演算では、第２のオペランドの浮動小数点要素が第３のオペランドの対応する浮動小数点要素と比較される。２つの値のうちの小さい方が第１のオペランドの対応する要素に入れられる。オペランド要素はすべて、指定された形式の２進浮動小数点数として扱われる。
【００８２】
実行される比較およびその結果は、選択された比較関数（例えばＭ６によって示される）と、実行されるその特定の比較関数の比較オプションとに依存する。比較オプション（例えば、以下のケースのうちの任意の２つを含む対：例えば、−≡、＋≡、−ＦＮ、＋ＦＮ、−０、＋０、ＱＮＡＮ、ＳＮＡＮ、ここでＦＮは有限数である）は、比較される第２のオペランド要素と第３のオペランド要素の値に基づいて選択される。各比較関数は、それに関連づけられた異なる比較オプションを有することができ、比較オプションの結果は実行されるその特定の比較関数に依存する。異なる比較関数の同じ比較オプションのために、異なる結果が指定され得る。
【００８３】
一例では、実行される最小値関数に応じて、第２または第３のオペランド内の浮動小数点要素のいずれかがＮａＮである場合、図１９ないし図２８で指定されているように、ＩＥＥＥ無効演算例外と認識され得る。ＩＥＥＥ無効演算マスク・ビットが１の場合、一例では、ＩＥＥＥ無効演算および対応する要素添字のために設定されているベクトル例外コードによるプログラム割り込みが発生し、演算は中断される。
【００８４】
さらに別の実施形態では、最大値／最小値が、例えば命令の選択可能制御である１つの命令を提供することができる。ベクトル浮動小数点最大値／最小値命令３５０の一例について、図８を参照しながら説明する。一実施形態ではベクトル浮動小数点最大値／最小値命令３５０は、浮動小数点最大値／最小値演算を示すオペコード・フィールド３５２ａ、３５２ｂと、第１のベクトル・レジスタ（Ｖ１）を指示するために使用される第１のベクトル・レジスタ・フィールド３５４と、第２のベクトル・レジスタ・フィールド（Ｖ２）を指示するために使用される第２のベクトル・レジスタ・フィールド３５６と、第３のベクトル・レジスタ（Ｖ３）を指示するために使用される第３のベクトル・レジスタ・フィールド３５８と、第１のマスク・フィールド（Ｍ６）３５９と、第２のマスク・フィールド（Ｍ５）３６０と、第３のマスク・フィールド（Ｍ４）３６２と、レジスタ拡張ビット（ＲＸＢ）フィールド３６４とを含み、それぞれについては本明細書で説明する。一実施形態では、これらのフィールドは別々のものであり、互いに独立している。しかし、他の実施形態では、複数のフィールドが組み合わされてもよい。これらのフィールドに関するさらなる情報について以下に記載する。
【００８５】
ベクトル・レジスタ・フィールド３５４は、第１のオペランドを格納するベクトル・レジスタを示すために使用され、第１のオペランドは、２つのオペランドの要素の値を比較して、選択された関数である最大値または最小値に応じてそれら要素の２つの値のうちの大きい方／小さい方を求めた結果である。オペランド要素は例えば指定された形式の２進浮動小数点数として扱われる。２つのオペランドは、ベクトル・レジスタ・フィールド３５６を使用して指定されたベクトル・レジスタに格納された第２のオペランドと、ベクトル・レジスタ・フィールド３５８を使用して指定されたベクトル・レジスタに格納された第３のオペランドである。一例では、ベクトル・レジスタ・フィールド３５４、３５６、３５８のそれぞれは、上述のようにベクトル・レジスタを指示するためにＲＸＢフィールド３６４とともに使用される。
【００８６】
本実施形態では、Ｍ６フィールド３５９は、比較の特殊なケース（本明細書では特定のケースとも呼ぶ）の扱いを指定する。各要素の結果の詳細な説明を図９ないし図２８に示す。予約値が指定された場合、一例では指定例外と認識される。実行される関数は、最大値演算と最小値演算のいずれが実行されるかと、以下のそれぞれのＭ６値に依存する。
【００８７】
Ｍ６        実行される関数
０          ＩＥＥＥ  ＭａｘＮｕｍ
０          ＩＥＥＥ  ＭｉｎＮｕｍ
１          Ｊａｖａ  Ｍａｔｈ．Ｍａｘ（）
１          Ｊａｖａ  Ｍａｔｈ．Ｍｉｎ（）
２          Ｃ−Ｓｔｙｌｅ  Ｍａｘ  Ｍａｃｒｏ
２          Ｃ−Ｓｔｙｌｅ  Ｍｉｎ  Ｍａｃｒｏ
３          Ｃ＋＋Ａｌｇｏｒｉｔｈｍ．Ｍａｘ（）
３          Ｃ＋＋Ａｌｇｏｒｉｔｈｍ．Ｍｉｎ（）
４          ｆｍａｘ（）
４          ｆｍｉｎ（）
５〜７      予約
５〜７      予約
８          ＩＥＥＥ  ＭａｘＮｕｍＭａｇ
８          絶対値のＩＥＥＥ  ＭｉｎＮｕｍ
９          絶対値のＪａｖａ  Ｍａｔｈ．Ｍａｘ（）
９          絶対値のＪａｖａ  Ｍａｔｈ．Ｍｉｎ（）
１０        絶対値のＣ−Ｓｔｙｌｅ  Ｍａｘ  Ｍａｃｒｏ
１０        絶対値のＣ−Ｓｔｙｌｅ  Ｍｉｎ  Ｍａｃｒｏ
１１        絶対値のＣ＋＋Ａｌｇｏｒｉｔｈｍ．ｍａｘ（）
１１        絶対値のＣ＋＋Ａｌｇｏｒｉｔｈｍ．ｍｉｎ（）
１２        絶対値のｆｍａｘ（）
１２        絶対値のｆｍｉｎ（）
１３〜１５  予約
１３〜１５  予約
【００８８】
さらなる実施形態では、サポートされる各最大値／最小値関数ごとに別々の数値があってもよい。
【００８９】
Ｍ４フィールド３６２は、浮動小数点形式を指定する。浮動小数点形式によって、ベクトル・レジスタ・オペランド内の要素のサイズが決定する。予約値が指定された場合、一例では指定例外と認識される。
【００９０】
Ｍ４        浮動小数点形式
０〜１      予約
２          短形式
３          長形式
４          拡張形式
５〜１５    予約
【００９１】
Ｍ５フィールド３６０は、一例では、図６に示すように以下の制御を含む。
【００９２】
単一要素制御（Ｓ）３１６：ビット０が１に設定された場合、ベクトル内のゼロ添字付き要素のみに対して演算が行われる。トラップ例外条件がない場合、一実施形態では、第１のオペランド・ベクトル内の他のすべての要素のビット位置が予測不能である。第２および第３のオペランド内の他のすべての要素の値が無視される。ビット０がゼロに設定された場合、ベクトル内のすべての要素に対して演算が行われる。
【００９３】
様々なフィールドおよびレジスタについて説明したが、本発明の１つまたは複数の態様は、他の、または追加の、あるいはより少ないフィールドまたはレジスタ、あるいはフィールドまたはレジスタの他のサイズなどを使用してもよい。多くの変形態様が可能である。例えば、命令の明示的に指定されたレジスタまたはフィールドの代わりに、暗黙的レジスタを使用してもよい。また、ベクトル・レジスタ以外のレジスタを使用してもよい。その場合も、他の変形態様も可能である。
【００９４】
ベクトル浮動小数点最大値／最小値命令の一実施形態の演算では、第２のオペランドの浮動小数点要素が第３のオペランドの対応する浮動小数点要素と比較される。最大値関数と最小値関数のいずれが行われるかに応じて、２つの値のうちの大きい方または小さい方が第１のオペランドの対応する要素に入れられる。オペランド要素はすべて、指定された形式の２進浮動小数点数として扱われる。
【００９５】
実行される比較およびその結果は、選択された比較関数（例えばＭ６によって示される）と、実行されるその特定の比較関数の比較オプションとに依存する。比較オプション（例えば、以下のケースのうちの任意の２つを含む対：例えば、−≡、＋≡、−ＦＮ、＋ＦＮ、−０、＋０、ＱＮＡＮ、ＳＮＡＮ、ここでＦＮは有限数である）は、比較される第２のオペランド要素と第３のオペランド要素の値に基づいて選択される。各比較関数は、それに関連づけられた異なる比較オプションを有することができ、比較オプションの結果は実行されるその特定の比較関数に依存する。
【００９６】
一実施形態では、実行される関数に応じて、第２または第３のオペランド内の浮動小数点要素のいずれかがＮａＮである場合、図９ないし図２８で指定されているように、ＩＥＥＥ無効演算例外と認識され得る。ＩＥＥＥ無効演算マスク・ビットが１の場合、一例では、ＩＥＥＥ無効演算および対応する要素添字のために設定されているベクトル例外コードによるプログラム割り込みが発生し、演算は中断される。
【００９７】
ベクトル浮動小数点最大値命令、最小値命令、または最大値／最小値命令あるいはその組合せの命令の演算に関するさらなる詳細について、図２９を参照しながら説明する。一例では、図２９の処理は、これらの命令うちの１つの取得と実行とに基づいて、少なくとも１つのプロセッサによって実行される。
【００９８】
図２９を参照すると、最初に、ステップ５００で、比較される第１の値と第２の値とが取得される。一実施形態では、第１の値はオペランド２の要素の値であり、第２の値はオペランド３の対応する要素の値である。（他の実施形態では、複数の要素の複数の値が並行して、または順次比較される。）
【００９９】
ステップ５０２で、命令の制御に基づいて、実行する比較関数が決定される。例えば、命令がベクトル浮動小数点最大値命令であり、Ｍ６＝０である場合、ＩＥＥＥ  ＭａｘＮｕｍ関数が実行される。同様に、命令がベクトル浮動小数点最小値命令であり、Ｍ６＝０である場合、ＩＥＥＥ  ＭｉｎＮｕｍ関数が実行される。同様に、命令がベクトル浮動小数点最大値／最小値命令であり、Ｍ６＝０である場合、命令が最大値演算を行うことであればＩＥＥＥ  ＭａｘＮｕｍ関数が実行され、命令が最小値演算を行うことであればＩＥＥＥ  ＭｉｎＮｕｍ関数が実行される。多くの他の例も可能である。
【０１００】
その後、ステップ５０４で、選択された比較関数（例えば、ＩＥＥＥ  ＭａｘＮｕｍ、ＩＥＥＥ  ＭｉｎＮｕｍなど）のために、第１の値と第２の値とに基づいて、その選択された特定の比較関数のための複数の比較オプションの中から比較オプションが選択される。例えば、ＩＥＥＥ  ＭａｘＮｕｍ関数が実行され（例えばＭ６＝０）、第１の値が−０（ａ）で第２の値が＋≡（ｂ）である場合、ＩＥＥＥ  ＭａｘＮｕｍ関数のために与えられたオプションからこの対が選択される（図９参照）。ステップ５０６で、これらの値が、選択された比較オプションを使用して比較され、結果を得る。例えば、図９で入力値（−０、＋≡）の交差部に、ＩＥＥＥ  ＭａｘＮｕｍ関数の比較結果がある。したがって、この特定の例では取得される結果はＴ（ｂ）であり、オペランド３の値が比較の結果として示される。ステップ５０８で、この結果が選択された場所に入れられる。例えば、Ｖ１を使用して指定されたレジスタに入れられる。しかし、他の例ではメモリ内の場所またはその他の場所に入れられてもよい。
【０１０１】
図３０ないし図３１を参照しながら、ベクトル浮動小数点最大値命令、最小値命令、または最大値／最小値命令あるいはその組合せの命令を行う命令の実行を含む、コンピューティング環境内での処理の容易化に関するさらなる詳細を説明する。
【０１０２】
図３０を参照すると、ステップ６００で、第１の値と第２の値との比較を行う命令（例えば単一の設計されたマシン命令）が取得され、ステップ６０２で少なくとも１つのプロセッサによって実行される。実行は、例えば、ステップ６０４で、命令の制御に基づいて、実行する比較関数を決定することを含む。比較関数は、その命令のために構成された複数の比較関数のうちの１つであり（６０６）、比較関数は比較のための複数のオプションを有する（６０８）。ステップ６１０で、比較関数のための複数のオプションから、第１の値と第２の値とを比較するために使用される比較オプションが選択される。比較オプションは、第１の値と第２の値とに基づいて選択される。ステップ６１２で、比較オプションを使用して第１の値と第２の値とが比較されて結果が得られる。結果は、命令の制御によって示される比較関数のために選択された比較オプションに特定的なものである（６１４）。ステップ６１６で、結果が選択された場所に入れられ、コンピューティング環境内での処理において使用されることになる。
【０１０３】
一例では複数のオプションは、比較のために選択可能な特定のケースの複数の対を含み（６２０）、特定のケースの複数の対は、無限と、非数（ＮＡＮ）と、符号付きゼロとを含む特定のケースのグループから選択された少なくとも１つの特定のケースを含む、特定のケースの少なくとも１つの対を含む（６２２）。
【０１０４】
一例として、図３１を参照すると、複数の比較関数は、複数の最大値関数と複数の最小値関数とのうちの少なくとも１つを含み（６３０）、複数の最大値関数は、最大値比較を行う複数の最大値技法を含み（６３２）、複数の最小値関数は、最小値比較を行う複数の最小値技法を含む（６３４）。
【０１０５】
一実施形態では、第１の値と第２の値とは命令によって与えられ（６３６）、第１の値は命令のオペランドの第１の要素の値であり、第２の値は命令の別のオペランドの対応する要素の値である（６３８）。一例として、１つの要素のサイズは、命令の別の制御に基づいて決定される（６４０）。
【０１０６】
また、一例では、第１の値と第２の値とは浮動小数点値であり（６４２）、１つの要素のサイズはそれら浮動小数点値の浮動小数点形式に依存し（６４４）、上記別の制御は選択された浮動小数点形式を示す（６４６）。さらに、一例では、制御は命令のマスクで与えられる（６４８）。
【０１０７】
本明細書では、単一の設計された命令を使用して、特殊なケースを扱う浮動小数点比較を行うための機能について説明している。この命令は、複数の命令を置き換え、コンピュータの処理とパフォーマンスを向上させる。
【０１０８】
様々な例を示したが、特許請求される態様の思想から逸脱することなく変形態様が可能である。例えば、命令によって使用されるレジスタまたはフィールドあるいはその両方に含まれる値は、他の実施形態では、メモリ記憶場所などの他の場所にあってもよい。その他の多くの変形態様が可能である。
【０１０９】
１つまたは複数の態様は、クラウド・コンピューティングに関し得る。
【０１１０】
なお、本開示はクラウド・コンピューティングの詳細な説明を含むが、本明細書に記載されている教示の実装がクラウド・コンピューティング環境に限定されないことは前もって理解される。むしろ、本発明の実施形態は、現在知られている、または今後開発される任意の他の種類のコンピューティング環境とともに実装することができる。
【０１１１】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの対話で迅速にプロビジョニングすることができ、解放することができる、構成可能コンピューティング資源（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共用プールへの便利なオンデマンドのネットワーク・アクセスを可能にするサービス配布のモデルである。このクラウド・モデルは、少なくとも５つの特徴と、少なくとも３つのサービス・モデルと、少なくとも４つの配備モデルとを含み得る。
【０１１２】
特徴は以下の通りである。
【０１１３】
オンデマンド・セルフサービス：クラウド消費者は、サービス・プロバイダとの間で人間の対話を必要とせずに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
【０１１４】
広帯域ネットワーク・アクセス：ネットワークを介して機能が利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば携帯電話、ラップトップ、およびＰＤＡ）による使用を促進する標準機構を介してアクセスすることができる。
【０１１５】
資源プール：マルチテナント・モデルを使用して複数の消費者にサービスするために、プロバイダのコンピューティング資源がプールされ、需要に応じて異なる物理資源および仮想資源が動的に割り当てられ、再割り当てされる。消費者は一般に、提供される資源の厳密な場所について制御することができないかまたは知らないが、より高い抽象レベルの場所（例えば、国、州、またはデータセンター）を指定し得るという点で、位置独立感がある。
【０１１６】
迅速な伸縮性：迅速かつ伸縮性をもって、場合によっては自動的に機能をプロビジョニングして、迅速にスケールアウトすることができ、また、迅速に機能を解放してスケールインすることができる。消費者にとっては、プロビジョニングのために利用可能な機能はしばしば無限であるように見え、いつでも好きなだけ購入することができる。
【０１１７】
従量制サービス：クラウド・システムが、サービスの種類（例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント）に応じて適切な何らかの抽象化レベルの計量機能を活用することによって、資源利用を自動的に制御し、最適化する。資源使用量を監視、制御および報告することができ、利用されたサービスのプロバイダと消費者の両方に透明性を与えることができる。
【０１１８】
サービス・モデルは以下の通りである。
【０１１９】
ソフトウェア・アズ・ア・サービス（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ：ＳａａＳ）：消費者に提供される機能は、クラウド・インフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザなどのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である（例えばウェブ・ベースのＥメール）。消費者は、限られたユーザ固有アプリケーション構成設定の考えられる例外を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個別のアプリケーション機能まで含めて、基礎にあるクラウド・インフラストラクチャを管理または制御しない。
【０１２０】
プラットフォーム・アズ・ア・サービス（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ：ＰａａＳ）：消費者に提供される機能は、クラウド・インフラストラクチャ上に、消費者作成アプリケーション、またはプロバイダによってサポートされるプログラミング言語およびツールを使用して作成された取得アプリケーションを配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎にあるクラウド・インフラストラクチャを管理または制御しないが、配備されたアプリケーションと、場合によってはアプリケーション・ホスティング環境構成とを制御することができる。
【０１２１】
インフラストラクチャ・アズ・ア・サービス（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ：ＩａａＳ）：消費者に提供される機能は、処理、ストレージ、ネットワークおよびその他の基本的コンピューティング資源をプロビジョニングすることであり、その際、消費者は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配備し、稼働させることができる。消費者は、基礎にあるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システムと、ストレージと、配備されたアプリケーションとを制御することができ、場合によっては選択されたネットワーク・コンポーネント（例えばホスト・ファイアウォール）の限定的な制御を行うことができる。
【０１２２】
配備モデルは以下の通りである。
【０１２３】
プライベート・クラウド：このクラウド・インフラストラクチャは、組織のためにのみ運用される。組織または第三者によって管理されることができ、オンプレミスまたはオフプレミスに存在してよい。
【０１２４】
コミュニティ・クラウド：このクラウド・インフラストラクチャは、いくつかの組織によって共用され、共通の関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス事項）を有する特定のコミュニティをサポートする。組織または第三者によって管理されてよく、オンプレミスまたはオフプレミスに存在してよい。
【０１２５】
パブリック・クラウド：このクラウド・インフラストラクチャは、公衆または大規模業界団体が利用することができ、クラウド・サービスを販売する組織によって所有される。
【０１２６】
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、独自の実体のままであるが、データ可搬性またはアプリケーション可搬性を可能にする標準化技術または専有技術（例えば、クラウド間の負荷バランシングのためのクラウド・バースティング）によって結合された、２つ以上のクラウド（プライベート、コミュニティまたはパブリック）の複合体である。
【０１２７】
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に焦点を合わせたサービス指向型である。クラウド・コンピューティングの核心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。そのような１つのノードは、図１に示されているノード１０である。
【０１２８】
コンピューティング・ノード１０は、適合するクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載の本発明の実施形態の使用または機能の範囲に関するいかなる限定も示唆することを意図していない。いずれにしても、クラウド・コンピューティング・ノード１０は、上述の機能のいずれの実装または実行あるいはその両方が可能である。
【０１２９】
図３２を参照すると、例示のクラウド・コンピューティング環境５０が図示されている。図のように、クラウド・コンピューティング環境５０は、例えばパーソナル・デジタル・アシスタント（ＰＤＡ）または携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎあるいはその組合せなど、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる、１つまたは複数のコンピューティング・ノード１０を含む。ノード１０が互いに通信してもよい。これらは、上述のプライベート、コミュニティ、パブリックまたはハイブリッド・クラウドまたはこれらの組合せなどの１つまたは複数のネットワークにおいて物理的または仮想的にグループ化（図示せず）されてよい。これによって、クラウド・コンピューティング環境５０は、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せを、クラウド消費者がそのためにローカル・コンピューティング・デバイス上で資源を維持する必要がないサービスとして提供することができる。なお、図３２に示すコンピューティング・デバイス５４Ａないし５４Ｎの種類は、例示のみを意図したものであり、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、（例えばウェブ・ブラウザを使用して）任意の種類のネットワークまたはネットワーク・アドレス指定可能接続あるいはその両方を介して、任意の種類のコンピュータ化デバイスと通信することができるものと理解される。
【０１３０】
次に、図３３を参照すると、クラウド・コンピューティング環境５０（図３２）によって提供される１組の機能抽象化層が示されている。なお、図３３に示す構成要素、層および機能は、例示のみを意図したものであり、本発明の実施形態はこれらには限定されないことを前もって理解されたい。図のように、以下の層および対応する機能が提供される。
【０１３１】
ハードウェアおよびソフトウェア層６０は、ハードウェア構成要素とソフトウェア構成要素とを含む。ハードウェア構成要素の例としては、メインフレーム６１、縮小命令セットコンピュータ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ：ＲＩＳＣ）アーキテクチャ・ベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、およびネットワークおよびネットワーキング構成要素６６がある。実施形態によっては、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【０１３２】
仮想化層７０は、以下の仮想実体の例を与えることができる抽象化層を提供する。すなわち、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、および仮想クライアント７５である。
【０１３３】
一例では管理層８０は、以下に記載の機能を提供することができる。資源プロビジョニング８１は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング資源およびその他の資源の動的調達を行う。メータリングおよびプライシング８２は、クラウド・コンピューティング環境内で資源が利用されるときのコスト追跡と、これらの資源の消費に対する対価の請求またはインボイス処理を行う。一例ではこれらの資源にはアプリケーション・ソフトウェア・ライセンスが含まれてもよい。セキュリティは、クラウド消費者およびタスクのための本人検証と、データおよびその他の資源の保護とを行う。ユーザ・ポータル８３は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理８４は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング資源割り当ておよび管理を行う。サービス・レベル・アグリーメント（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ：ＳＬＡ）計画および履行８５は、ＳＬＡに従って将来の要求が予想されるクラウド・コンピューティング資源のための事前取り決めおよび調達を行う。
【０１３４】
ワークロード層９０は、クラウド・コンピューティング環境をそのために利用することができる機能の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想教室教育配信９３、データ分析処理９４、トランザクション処理９５、および命令処理９６がある。
【０１３５】
本発明は、任意の可能な技術的詳細の統合レベルでのシステム、方法またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体（または複数の媒体）を含み得る。
【０１３６】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるための命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適合する組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のものが含まれる。すなわち、可搬コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、可搬コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピィ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波（例えば光ファイバ・ケーブルを通る光パルス）、または電線を介して伝送される電気信号などの、一時的な信号自体であると解釈すべきではない。
【０１３７】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはこれらの組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、交換機、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
【０１３８】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語または同様のプログラム言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、あるいは一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がコンピュータあるいはサーバ上で実行されてよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は外部コンピュータ（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）に対して行ってもよい。実施形態によっては、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【０１３９】
本発明の態様について、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることはわかるであろう。
【０１４０】
上記のコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている機能／動作を実装する手段を形成するように、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを実現するものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている機能／動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはこれらの組合せに対して特定の方式で機能するように指示することができるものであってもよい。
【０１４１】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで規定されている機能／動作を実装するようにコンピュータ実装処理を提供するために、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【０１４２】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、規定されている論理機能を実装するための１つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことがある。いくつかの代替の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、規定されている機能または動作を実行する特殊目的ハードウェア・ベースのシステムによって実装されるか、または特殊目的ハードウェアとコンピュータ命令との組合せを実施することができることに留意されるだろう。
【０１４３】
上記に加えて、１つまたは複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって、供給、提供、配備、管理、保守などが行われてよい。例えば、サービス・プロバイダは、１または複数の顧客のために１つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方の作成、維持、サポートなどを行うことができる。その見返りとして、サービス・プロバイダは、例えば会員登録または委託契約あるいはその両方に基づいて顧客から支払いを受け取ってもよい。これに加えて、またはこれに代えて、サービス・プロバイダは、１つまたは複数の第三者に対する広告コンテンツの販売による支払いを受け取ってもよい。
【０１４４】
一態様では、１つまたは複数の実施形態を実行するためにアプリケーションが配備されてもよい。一例として、アプリケーションの配備は、１つまたは複数の実施形態を実行するように動作可能なコンピュータ命令を提供することを含む。
【０１４５】
他の態様として、コンピューティング・システムにコンピュータ可読コードを組み込むことを含むコンピューティング・インフラストラクチャが配備されてもよく、コードはコンピューティング・システムと組み合わさって１つまたは複数の実施形態を実行することができる。
【０１４６】
さらに他の態様として、コンピュータ可読コードをコンピュータ・システムに組み込むことを含む、コンピューティング・インフラストラクチャを組み込むためのプロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、コンピュータ媒体は１つまたは複数の実施形態を含む。コードはコンピュータ・システムと組み合わさって１つまたは複数の実施形態を実行することができる。
【０１４７】
以上、様々な実施形態について説明したが、これらは例に過ぎない。例えば、１つまたは複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することができる。また、異なる命令、命令形式、命令フィールドまたは命令値あるいはその組合せを使用してもよい。多くの変形態様が可能である。
【０１４８】
また、他の種類のコンピューティング環境も利益を得ることができ、使用することができる。一例として、システム・バスによってメモリ要素に直接または間接的に結合された少なくとも２つのプロセッサを含む、プログラム・コードを記憶または実行あるいはその両方を行うのに適合するデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量ストレージと、実行時に大容量ストレージからコードを取り出す必要がある回数を削減するために少なくとも一部のプログラム・コードの一時的記憶を提供するキャッシュ・メモリとを含む。
【０１４９】
入出力またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他のメモリ媒体などを含むがこれらには限定されない）を、直接、または介在するＩ／Ｏコントローラを介してシステムに結合することができる。データ処理システムが、介在するプライベート・ネットワークまたはパブリック・ネットワークを介して他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合されることができるようにするために、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびＥｔｈｅｒｎｅｔカードが、利用可能な種類のネットワーク・アダプタのほんの一例である。
【０１５０】
本明細書で使用されている用語は、特定の実施形態を説明することのみを目的としたものであり、限定的であることを意図したものではない。本明細書で使用されている単数形の「ａ」、「ａｎ」および「ｔｈｅ」は、文脈が明確に他の解釈を示していない限り複数形も含むことを意図している。また、「含んでいる（ｃｏｍｐｒｉｓｅｓ）」または「含む（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方の用語が本明細書で使用されている場合、記載されている特徴、整数、ステップ、動作、要素または構成要素あるいはその組合せの存在を規定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素または構成要素あるいはこれらのグループの存在または追加を排除しないことを理解されたい。
【０１５１】
添付の特許請求の範囲のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作および均等物は、もしある場合、具体的に特許請求されている他の特許請求対象要素と組み合わせて機能を実行するための任意の構造、材料または動作を含むことを意図している。例示および説明を目的として１つまたは複数の実施形態の説明を示したが、網羅的であること、または、開示されている形態に限定することを意図したものではない。当業者には多くの変更および変形態様が明らかであろう。これらの実施形態は、様々な態様および実際の適用を最もよく説明するためと、当業者が、企図された特定の用途に適合するように様々な変更を加えた様々な実施形態を理解することができるようにするために選択し、説明した。
【図１】
0006916874.tif 000002
【図２】
0006916874.tif 000003
【図３】
0006916874.tif 000004
【図４】
0006916874.tif 000005
【図５】
0006916874.tif 000006
【図６】
0006916874.tif 000007
【図７】
0006916874.tif 000008
【図８】
0006916874.tif 000009
【図９】
0006916874.tif 000010
【図１０】
0006916874.tif 000011
【図１１】
0006916874.tif 000012
【図１２】
0006916874.tif 000013
【図１３】
0006916874.tif 000014
【図１４】
0006916874.tif 000015
【図１５】
0006916874.tif 000016
【図１６】
0006916874.tif 000017
【図１７】
0006916874.tif 000018
【図１８】
0006916874.tif 000019
【図１９】
0006916874.tif 000020
【図２０】
0006916874.tif 000021
【図２１】
0006916874.tif 000022
【図２２】
0006916874.tif 000023
【図２３】
0006916874.tif 000024
【図２４】
0006916874.tif 000025
【図２５】
0006916874.tif 000026
【図２６】
0006916874.tif 000027
【図２７】
0006916874.tif 000028
【図２８】
0006916874.tif 000029
【図２９】
0006916874.tif 000030
【図３０】
0006916874.tif 000031
【図３１】
0006916874.tif 000032
【図３２】
0006916874.tif 000033
【図３３】
0006916874.tif 000034