IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-04
(54)【発明の名称】16進浮動小数点乗加算命令
(51)【国際特許分類】
   G06F 9/302 20180101AFI20240226BHJP
   G06F 17/10 20060101ALI20240226BHJP
【FI】
G06F9/302 A
G06F17/10 S
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023548705
(86)(22)【出願日】2022-03-01
(85)【翻訳文提出日】2023-08-10
(86)【国際出願番号】 EP2022055078
(87)【国際公開番号】W WO2022189204
(87)【国際公開日】2022-09-15
(31)【優先権主張番号】17/194,740
(32)【優先日】2021-03-08
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シュヴァルツ、エリック
(72)【発明者】
【氏名】ペイヤー、ステファン
(72)【発明者】
【氏名】レーバー、ペトラ
(72)【発明者】
【氏名】シェルム、ケルスティン
(72)【発明者】
【氏名】クライン、マイケル
(72)【発明者】
【氏名】スリゲル、ティモシー
(72)【発明者】
【氏名】コープランド、レイド
(72)【発明者】
【氏名】グオ、シン
【テーマコード(参考)】
5B033
5B056
【Fターム(参考)】
5B033BD00
5B056BB71
5B056CC01
(57)【要約】
命令のために構成された複数の動作から選択された動作を実行するための命令が実行される。実行することは、命令の選択されたオペランドの値を決定することを含む。値を決定することは、命令の制御に基づき、制御が第1の値を含んでいるということに基づいて、命令の選択されたオペランドを選択されたオペランドの位置から読み取って、選択されたオペランドの値を取得することと、制御が第2の値を含んでいるということに基づいて、既定の値を、選択されたオペランドの値として使用することとを含む。この値および命令の別の選択されたオペランドが乗算されて、積を取得する。この積および命令の選択されたオペランドを使用して算術演算が実行され、中間結果を取得する。中間結果から結果が取得され、選択された位置に配置される。
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
方法を実行するための、1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納された、方法を実行するためのプログラム命令とを備え、前記方法が、
命令を実行して、前記命令について構成された複数の動作から選択された動作を実行することを含み、前記命令を実行することが、
前記命令の選択されたオペランドの値を決定することであって、前記値を前記決定することは、前記命令の制御に基づき、
前記命令の前記制御が第1の値を含んでいるということに基づいて、前記命令の前記選択されたオペランドを選択されたオペランドの位置から読み取って、前記選択されたオペランドの前記値を取得することと、
前記命令の前記制御が第2の値を含んでいるということに基づいて、既定の値を、前記選択されたオペランドの前記値として使用することと
を含む、前記決定することと、
前記値および前記命令の別の選択されたオペランドを乗算して積を取得することと、
前記積および前記命令の前記選択されたオペランドを使用して算術演算を実行し、中間結果を取得することと、
前記中間結果から結果を取得することと、
前記結果を選択された位置に配置することと
を含む、コンピュータ・プログラム製品。
【請求項2】
前記既定の値を前記選択されたオペランドの前記値として使用することが、前記選択されたオペランドの位置から前記選択されたオペランドを読み取ることなく前記既定の値を使用することを含み、前記選択されたオペランドの位置が少なくとも1つのレジスタを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記既定の値が1の値を含む、請求項1または2に記載のコンピュータ・プログラム製品。
【請求項4】
前記命令を実行することが、
丸め処理が実行されるかどうかを判定することと、
前記丸め処理が実行されるという判定に基づいて、前記中間結果のバージョンに対して前記丸め処理を実行して前記結果を取得することと
をさらに含む、請求項1ないし3のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項5】
前記中間結果の前記バージョンが正規化された結果を含む、請求項4に記載のコンピュータ・プログラム製品。
【請求項6】
前記丸め処理が実行されるかどうかを判定することが、前記命令の丸めモード制御をチェックすることを含み、前記丸めモード制御が1の値に等しいということに基づいて、前記丸め処理が実行される、請求項4に記載のコンピュータ・プログラム製品。
【請求項7】
前記結果を取得することが、
前記中間結果を正規化して、正規化された結果を取得することと、
前記正規化された結果を使用して前記結果を取得することと
を含む、請求項1ないし6のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項8】
前記正規化された結果を使用して前記結果を取得することが、
丸め処理が実行されるかどうかを判定することと、
前記丸め処理が実行されるという判定に基づいて、前記正規化された結果を丸めて前記結果を取得することと、
前記丸め処理が実行されないという判定に基づいて、前記正規化された結果を切り捨てて前記結果を取得することと
を含む、請求項7に記載のコンピュータ・プログラム製品。
【請求項9】
前記選択された位置が、前記命令の少なくとも1つのフィールドによって指定された少なくとも1つのレジスタを含む、請求項1ないし8のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項10】
前記制御が加算のみの制御であり、前記算術演算が加算演算を含み、前記制御が前記第2の値を含んでいるということに基づいて、前記制御が、前記命令が前記他の選択されたオペランドに1の前記既定の値が掛けられる加算のみの演算を実行するということを示し、前記制御が前記第1の値を含んでいるということに基づいて、前記制御が、前記命令が乗加算演算を実行するということ、および前記他の選択されたオペランドに、前記選択されたオペランドの位置から読み取られた前記値が掛けられるということを示す、請求項1ないし9のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項11】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを備えており、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
命令を実行して、前記命令について構成された複数の動作から選択された動作を実行することを含み、前記命令を実行することが、
前記命令の選択されたオペランドの値を決定することであって、前記値を決定することは、前記命令の制御に基づき、
前記命令の前記制御が第1の値を含んでいるということに基づいて、前記命令の前記選択されたオペランドを選択されたオペランドの位置から読み取って、前記選択されたオペランドの前記値を取得することと、
前記命令の前記制御が第2の値を含んでいるということに基づいて、既定の値を、前記選択されたオペランドの前記値として使用することと
を含む、前記決定することと、
前記値および前記命令の別の選択されたオペランドを乗算して積を取得することと、
前記積および前記命令の選択されたオペランドを使用して算術演算を実行し、中間結果を取得することと、
前記中間結果から結果を取得することと、
前記結果を選択された位置に配置することと
を含む、コンピュータ・システム。
【請求項12】
前記既定の値を前記選択されたオペランドの前記値として使用することが、前記選択されたオペランドの位置から前記選択されたオペランドを読み取ることなく前記既定の値を使用することを含み、前記選択されたオペランドの位置が少なくとも1つのレジスタを含み、前記既定の値が1の値を含む、請求項11に記載のコンピュータ・システム。
【請求項13】
前記命令を実行することが、
丸め処理が実行されるかどうかを判定することと、
前記丸め処理が実行されるという判定に基づいて、前記中間結果のバージョンに対して前記丸め処理を実行して前記結果を取得することと
をさらに含む、請求項11または12に記載のコンピュータ・システム。
【請求項14】
前記丸め処理が実行されるかどうかを判定することが、前記命令の丸めモード制御をチェックすることを含み、前記丸めモード制御が1の値に等しいということに基づいて、前記丸め処理が実行される、請求項13に記載のコンピュータ・システム。
【請求項15】
前記結果を取得することが、
前記中間結果を正規化して、正規化された結果を取得することと、
前記正規化された結果を使用して前記結果を取得することと
を含む、請求項11ないし14のいずれか一項に記載のコンピュータ・システム。
【請求項16】
コンピュータ実装方法であって、前記コンピュータ実装方法が、
命令を実行して、前記命令のために構成された複数の動作から選択された動作を実行することを含み、前記命令を実行することが、
前記命令の選択されたオペランドの値を決定することであって、前記値を決定することは、前記命令の制御に基づき、
前記命令の制御が第1の値を含んでいるということに基づいて、前記命令の前記選択されたオペランドを選択されたオペランドの位置から読み取って、前記選択されたオペランドの前記値を取得することと、
前記命令の制御が第2の値を含んでいるということに基づいて、既定の値を、前記選択されたオペランドの前記値として使用することと
を含む、前記決定することと、
前記値および前記命令の別の選択されたオペランドを乗算して積を取得することと、
前記積および前記命令の選択されたオペランドを使用して算術演算を実行し、中間結果を取得することと、
前記中間結果から結果を取得することと、
前記結果を選択された位置に配置することと
を含む、コンピュータ実装方法。
【請求項17】
前記既定の値を前記選択されたオペランドの前記値として使用することが、前記選択されたオペランドの位置から前記選択されたオペランドを読み取ることなく前記既定の値を使用することを含み、前記選択されたオペランドの位置が少なくとも1つのレジスタを含み、前記既定の値が1の値を含む、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記命令を実行することが、
丸め処理が実行されるかどうかを判定することと、
前記丸め処理が実行されるという判定に基づいて、前記中間結果のバージョンに対して前記丸め処理を実行して前記結果を取得することと
をさらに含む、請求項16または17に記載のコンピュータ実装方法。
【請求項19】
前記丸め処理が実行されるかどうかを判定することが、前記命令の丸めモード制御をチェックすることを含み、前記丸めモード制御が1の値に等しいということに基づいて、前記丸め処理が実行される、請求項18に記載のコンピュータ実装方法。
【請求項20】
前記結果を取得することが、
前記中間結果を正規化して、正規化された結果を取得することと、
前記正規化された結果を使用して前記結果を取得することと
を含む、請求項16ないし19のいずれか一項に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、一般に、コンピューティング環境内の処理を容易にすることに関し、特に、そのような処理を改善することに関する。
【背景技術】
【0002】
コンピューティング環境内で実行されるアプリケーションは、設計、製造、医療技術、自動車技術、コンピュータ処理などを含むが、これに限定されない、多種多様な技術によって使用される多くの動作を提供する。COBOLなどのプログラミング言語で記述されたこれらのアプリケーションは、多くの場合、動作の実行において複雑な計算を実行する。計算は、例えば指数関数を含み、指数関数は、多くの場合、2進化10進数から16進浮動小数点へのデータの変換を必要とし、16進浮動小数点で関数を実行し、その結果を2進化10進数に再び変換する。
【0003】
16進浮動小数点で関数を実行することは、16進浮動小数点演算を含む。しかし、この演算は十分に正確ではなく、したがって、より高い精度を得るために、追加の命令が実行される。追加の命令の実行は、複雑さの増大をもたらし、システム性能を低下させ、システム・リソースの使用を増やす。
【発明の概要】
【0004】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、命令を実行して、この命令のために構成された複数の動作から選択された動作を実行することを含む。1つの例では、命令を実行することは、命令の選択されたオペランドの値を決定することを含む。値を決定することは、命令の制御に基づき、例えば、命令の制御が第1の値を含んでいるということに基づいて、命令の選択されたオペランドを選択されたオペランドの位置から読み取って、選択されたオペランドの値を取得することと、命令の制御が第2の値を含んでいるということに基づいて、既定の値を、選択されたオペランドの値として使用することとを含む。この値および命令の別の選択されたオペランドが乗算されて、積を取得する。この積および命令の選択されたオペランドを使用して算術演算が実行され、中間結果を取得する。結果が中間結果から取得され、選択された位置に配置される。
【0005】
単一の命令を使用して、乗算および算術演算を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して乗算および算術演算を実行することによって、乗算および算術演算などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗算演算または算術演算あるいはその両方がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0006】
複数の動作を実行するように構成された単一の命令を使用することによって、性能が改善され、リソースの利用が減らされる。算術演算により高い精度をもたらすように乗算が実行される、乗算および算術演算または算術のみの演算を実行するように構成された、単一の設計された命令を使用することによって、乗算および算術演算などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗算および算術演算がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0007】
さらに、1つの例では、算術も実行する乗算命令を使用して算術(例えば、加算)を実行することによって、精度が向上し、複数の命令ではなく単一の命令を使用することによって、複雑さが軽減され、性能が改善され、システム・リソースの使用が減らされる。例えば、2つのオペランドの乗算は、幅の2倍の積をもたらし、単一の命令において算術演算を組み合わせることによって、丸められた積または切り捨てられた積ではなく、完全な2倍の幅の積が算術に関与することができる。一例として、2つの6桁の16進数のオペランドの乗算は、12桁の16進数の積をもたらす。これらが分離した演算である場合、次の演算の前に、積が6桁の16進数に切り捨てられる。完全な中間結果を使用することによって、結合された演算がより正確になる。言い換えると、切り捨てを使用する浮動小数点の単純な演算の場合、通常、0から1ulp(unit of last place:最終桁の重み)の誤差が得られる。乗算および切り捨てが存在する場合、積が1ulpの誤差を含み、加数への積の加算が存在する場合、それが別の1ulpの誤差を引き起こし、合計で誤差が2ulpになる。しかし、演算が1つの複合演算である場合、1ulpの誤差のみが存在する。これは、2進浮動小数点に当てはまり、16進浮動小数点の場合、誤差はさらに悪くなる。
【0008】
1つの例では、既定の値を選択されたオペランドの値として使用することは、選択されたオペランドの位置から選択されたオペランドを読み取ることなく既定の値を使用することを含む。選択されたオペランドの位置は、例えば、少なくとも1つのレジスタである。これにより、例えば1つまたは複数のレジスタの読み取りをなくすことによって、システム性能を改善する。
【0009】
一例として、既定の値は1の値を含む。
【0010】
1つの例では、命令を実行することは、丸め処理が実行されるかどうかを判定することと、丸め処理が実行されるということの決定に基づいて、中間結果のバージョンに対して丸め処理を実行し、結果を取得することとをさらに含む。中間結果のバージョンは、例えば、正規化された結果を含む。
【0011】
単一の命令を使用して、乗算演算、算術演算、または丸め処理、あるいはその組合せを実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、乗算演算、算術演算、または丸め処理、あるいはその組合せを実行することによって、乗算演算、算術演算、または丸め処理、あるいはその組合せなどの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗算演算、算術演算、または丸め処理、あるいはその組合せがはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。さらに、丸めは、両方向の絶対誤差を1/2ulpに小さくする。非融合型積和演算は、二重の丸め誤差を含み、一方、融合型積和演算は、単一の丸め誤差を含む。
【0012】
1つの例では、丸め処理が実行されるかどうかを判定することは、命令の丸めモード制御をチェックすることを含み、丸めモード制御が1の値に等しいということに基づいて、丸め処理が実行される。丸めモード制御を、単一の命令の一部として含むことによって、誤差の方向および大きさが制御され得る。
【0013】
1つの例では、結果を取得することは、中間結果を正規化して正規化された結果を取得することと、正規化された結果を使用して結果を取得することとを含む。さらに、正規化された結果を使用して結果を取得することは、例えば、丸め処理が実行されるかどうかを判定することと、丸め処理が実行されるということを決定することに基づいて、正規化された結果を丸めて結果を取得することとを含む。さらに、1つの例では、丸め処理が実行されないということを決定することに基づいて、正規化された結果を切り捨てて結果を取得する。
【0014】
単一の命令を使用して、乗算演算、算術演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せを実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、乗算演算、算術演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せを実行することによって、乗算演算、算術演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せなどの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗算演算、算術演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せがはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0015】
一例として、選択された位置は、命令の少なくとも1つのフィールドによって指定された少なくとも1つのレジスタを含む。
【0016】
1つの例では、制御は加算のみの制御であり、算術演算は加算演算を含む。制御が第2の値を含んでいるということに基づいて、制御は、命令が、他の選択されたオペランドに1の既定の値が掛けられる、加算のみの演算を実行することを示す。さらに、制御が第1の値を含んでいるということに基づいて、制御は、命令が乗加算演算を実行すること、および他の選択されたオペランドに、選択されたオペランドの位置から読み取られた値が掛けられることを示す。
【0017】
複数の動作(operations)を実行するように構成された単一の命令を使用することによって、性能が改善され、リソースの利用が減らされる。加算演算により高い精度をもたらすように乗算が実行されるが、その他の点では総和に影響を与えない、乗加算演算または加算のみの演算を実行するように構成された、単一の設計された命令を使用することによって、乗加算演算などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗加算演算がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0018】
さらに、1つの例では、加算も実行する乗算命令を使用して加算を実行することによって、精度が向上し、複数の命令ではなく単一の命令を使用することによって、複雑さが軽減され、性能が改善され、システム・リソースの使用が減らされる。
【0019】
1つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、1つまたは複数の態様に関連するサービスも本明細書に記載されており、請求されてよい。
【0020】
さらなる特徴および長所が、本明細書に記載された技術によって実現される。他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【0021】
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0022】
図1A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。
図1B】本発明の1つまたは複数の態様に従って、図1Aのプロセッサの詳細をさらに示す図である。
図2A】本発明の1つまたは複数の態様に従って、乗加算命令の形式の一例を示す図である。
図2B】本発明の1つまたは複数の態様に従って、乗加算命令(MultiplyおよびAdd)のマスク・フィールドのさらなる詳細の一例を示す図である。
図2C】本発明の1つまたは複数の態様に従って、乗加算命令の形式の別の例を示す図である。
図3】本発明の1つまたは複数の態様に従って、乗加算命令の実行に関連付けられた処理の一例を示す図である。
図4】本発明の1つまたは複数の態様に従って、乗加算命令の結果を取得することに関連付けられたさらなる詳細の一例を示す図である。
図5A】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする一例を示す図である。
図5B】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする一例を示す図である。
図5C】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする一例を示す図である。
図6A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
図6B】本発明の1つまたは複数の態様に従って、図6Aのメモリのさらなる詳細の一例を示す図である。
図6C】本発明の1つまたは複数の態様に従って、図6Aのメモリのさらなる詳細の別の例を示す図である。
図7A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境のさらに別の例を示す図である。
図7B】本発明の1つまたは複数の態様に従って、図7Aのメモリのさらなる詳細を示す図である。
図8】本発明の1つまたは複数の態様に従って、クラウド・コンピューティング環境の1つの実施形態を示す図である。
図9】本発明の1つまたは複数の態様に従って、抽象モデル・レイヤの一例を示す図である。
【発明を実施するための形態】
【0023】
本発明の態様に従って、コンピューティング環境内の処理を容易にするための能力が提供される。1つの例として、例えば、乗算および算術(例えば、加算)演算、ならびに本明細書では演算のみの(例えば、加算のみ命令)演算と呼ばれる演算を含む、複数の演算を実行するように構成された、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令)が提供される。本明細書では乗加算命令(MultiplyおよびAdd)と呼ばれる命令は、汎用プロセッサなどのプロセッサ上でプログラムによってディスパッチされる、汎用プロセッサの命令セット・アーキテクチャ(ISA:instruction set architecture)の一部である(別の例では、命令は、特定の機能のために構成されたコプロセッサなどの、専用プロセッサの一部であってよい)。
【0024】
単一の命令(例えば、乗加算命令)の実行の一部として、乗算、加算、正規化、丸め、または切り捨て、あるいはその組合せを含む、さまざまな動作が実行されてよい。これらの動作の各々は、単一の命令を実行すること、システム性能を改善すること、およびシステム・リソースの使用を減らすことの一部として実行される。
【0025】
さらに、本発明の態様に従って、乗加算演算などの乗算および算術演算を実行できる単一の命令は、加算のみ命令(Add Only)の演算などの、算術のみの演算を実行することもできる。本明細書において使用されるとき、算術または加算のみ命令は、乗算が実行されるが、乗数が(例えば、16進浮動小数点形式での)1であり、より高い精度を加算などの算術にもたらすために実行されるが、その他の点では算術(例えば、値の加算)に影響を与えないということを示す。加算のみ命令の演算における乗数は、レジスタ・ファイルから読み取られる必要がなく、レジスタに対する依存が少なく、レジスタが定数1.0を保持する必要がない。
【0026】
さらに、1つの態様では、単一の命令は、切り捨てられた結果または0から遠い方の最も近い値への丸めを選択できる、丸めモード指定子を含む。これによって、丸め誤差の方向および量を制御する。
【0027】
1つの例では、命令のオペランドは、浮動小数点数をエンコードするための形式である、16進浮動小数点形式である。1つの例では、16進浮動小数点数は、符号ビット、指数部(例えば、7ビット)、および小数部(例えば、6桁、14桁、または28桁)を含む。指数部は、符号付き指数を表し、例えば、64を指数値に加えることによって取得される。指数部の範囲は0から127であり、この範囲は、例えば-64から+63の指数範囲に対応する。16進浮動小数点数の大きさは、小数部と、数値16の、指数部によって表された指数乗との積である。この数値は、符号ビットが例えば0であるかまたは1であるかに応じて、それぞれ正または負になる。
【0028】
16進浮動小数点数は、短形式(例えば、32ビット)、長形式(例えば、64ビット)、および拡張形式(例えば、128ビット)を含む、複数の異なる形式で表されてよい。各形式では、第1のビット(例えば、第1の左端のビット、ビット0)が符号ビットであり、次の選択された数のビット(例えば、7ビット)が指数部であり、短形式および長形式では、残りのビットが、例えば6桁または14桁の16進数をそれぞれ含んでいる、小数部である。拡張形式では、小数部は、例えば28桁の小数部であり、拡張16進浮動小数点数は、上位部分および下位部分と呼ばれる2つの長形式の数値で構成される。上位部分は、任意の長16進浮動小数点数である。上位部分の小数部は、例えば、28桁の小数部の左端の14桁の16進数を含み、下位部分の小数部は、例えば、28桁の小数部の右端の14桁の16進数を含む。上位部分の指数部および符号は、拡張16進浮動小数点数の指数部および符号であり、拡張オペランドの下位部分の符号および指数部は無視される。
【0029】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の1つの実施形態が、図1Aを参照して説明される。一例として、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)ハードウェア・アーキテクチャに基づく。z/Architectureハードウェア・アーキテクチャの1つの実施形態は、“z/Architecture Principles of Operation," IBM Publication No.SA22-7832-12, Thirteenth Edition, September 2019という公開文献に記載されており、この公開文献は本明細書において参照によってその全体が本明細書に組み込まれている。しかし、z/Architectureハードウェア・アーキテクチャは1つの例示的なアーキテクチャにすぎず、International Business Machines Corporationまたは他の実体あるいはその両方の、他のアーキテクチャまたは他の種類のコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むか、または使用するか、あるいはその両方であってよい。z/ArchitectureおよびIBMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0030】
図1Aを参照すると、コンピューティング環境100は、例えば、汎用コンピューティング・デバイスの形態で示されるコンピュータ・システム102を含んでいる。コンピュータ・システム102は、1つまたは複数のバスまたは他の接続110あるいはその両方を介して互いに結合された、1つまたは複数のプロセッサまたはプロセッシング・ユニット104(例えば、中央処理装置(CPU:central processing units))、メモリ106(例えば、システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、またはストレージとも呼ばれる)、および1つまたは複数の入出力(I/O:input/output)インターフェイス108を含んでよいが、これらに限定されない。
【0031】
バス110は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかのうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)、MCA(Micro Channel Architecture)、EISA(Enhanced ISA)、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)を含むが、これらに限定されない。
【0032】
メモリ106は、例えば、プロセッサ104のローカル・キャッシュ114に結合されてよい、共有キャッシュなどのキャッシュ112を含んでよい。さらに、メモリ106は、1つまたは複数のプログラムまたはアプリケーション116および少なくとも1つのオペレーティング・システム118を含み得る。例示的なオペレーティング・システムは、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/OS(R)オペレーティング・システムを含む。z/OSは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。International Business Machines Corporationまたは他の実体あるいはその両方によって提供される他のオペレーティング・システムが使用されてもよい。メモリ106は、本発明の態様の実施形態の機能を実行するように構成され得る1つまたは複数のコンピュータ可読プログラム命令120を含んでもよい。
【0033】
コンピュータ・システム102は、例えばI/Oインターフェイス108を介して、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイ、および1つまたは複数のデータ・ストレージ・デバイス134などの、1つまたは複数の外部デバイス130と通信してよい。データ・ストレージ・デバイス134は、1つまたは複数のプログラム136、1つまたは複数のコンピュータ可読プログラム命令138、またはデータ、あるいはその組合せなどを格納してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【0034】
コンピュータ・システム102は、例えばI/Oインターフェイス108を介してネットワーク・インターフェイス132と通信してもよく、ネットワーク・インターフェイス132は、コンピュータ・システム102が、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
【0035】
コンピュータ・システム102は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム102は、取り外し不可、不揮発性の磁気媒体(通常は、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りもしくは書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であってよい。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム102と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0036】
コンピュータ・システム102は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム102での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサ・ベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0037】
1つの例では、プロセッサ(例えば、プロセッサ104)は、命令を実行するために使用される複数の機能コンポーネントを含む。図1Bに示されているように、これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント150と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット152と、デコードされた命令を実行するための1つまたは複数の命令実行コンポーネント154と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント156と、実行された命令の結果を提供するための書き戻しコンポーネント158とを含む。コンポーネントのうちの1つまたは複数は、命令処理において1つまたは複数のレジスタ160にアクセスするか、またはレジスタ160を使用するか、あるいはその両方を実行してよい。さらに、コンポーネントのうちの1つまたは複数は、本発明の1つまたは複数の態様に従って、本明細書において説明されているように、例えば、乗加算命令(または本発明の1つもしくは複数の態様を使用し得る他の処理)の乗算および算術(例えば、加算)演算または算術のみの演算あるいはその両方を実行することにおいて使用される1つもしくは複数の他のコンポーネントの少なくとも一部を含むか、またはそれらのコンポーネントにアクセスすることができてよい。1つまたは複数の他のコンポーネントは、例えば、乗算コンポーネント/算術コンポーネント(または1つもしくは複数の他のコンポーネント)170を含む。
【0038】
本発明の態様に従って、1つの命令を実行することの一部として、乗算演算、加算演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せを少なくとも実行するために、本明細書では乗加算命令(MultiplyおよびAdd)と呼ばれる命令が提供される。命令は、例えば、加算において使用される積の精度を高めるために(例えば、1による)乗算が実行される、乗加算命令の演算および加算のみ命令(Add Only)の演算を含む、複数の演算を実行するように構成される。
【0039】
例えば、2つのオペランドの乗算は、幅の2倍の積をもたらし、単一の命令において算術演算を組み合わせることによって、丸められた積または切り捨てられた積ではなく、完全な2倍の幅の積が算術に関与することができる。一例として、2つの6桁の16進数のオペランドの乗算は、12桁の16進数の積をもたらす。これらが分離した演算である場合、次の演算の前に、積が6桁の16進数に切り捨てられる。完全な中間結果を使用することによって、結合された演算がより正確になる。言い換えると、切り捨てを使用する浮動小数点の単純な演算の場合、通常、0から1ulp(unit of last place,最下位の単位)の誤差が得られる。乗算および切り捨てがある場合、積が1ulpの誤差を含み、加数への積の加算がある場合、それが別の1ulpの誤差を引き起こし、合計で誤差が2ulpになる。しかし、演算が1つの複合演算である場合、1ulpの誤差のみが存在する。これは、2進浮動小数点に当てはまり、16進浮動小数点の場合、誤差はさらに悪くなる。
【0040】
一例として、指数を使用して小数部を揃え、1つのガード桁を維持するように、16進浮動小数点加算が定義される。より大きい指数を持つオペランドが先行ゼロを含む場合、1つのガード桁は正確な結果を得るのに十分ではない。16進浮動小数点乗加算演算は、丸める前に中間結果を正確に維持するように定義される。1に等しい被乗数を含む16進浮動小数点積和演算を使用することによって、より正確な加算を作成する。
【0041】
以下に例を示す。
A=0.000123x×16^(8)
B=0.987654x×16^(2)
HFP加算
0.000123x×16^8
0.0000009x×16^8 1つのみのガード桁
____________________________________
0.0001239x×16^8 中間結果
0.123900x×16^5 正規化された結果
【0042】
HFP積和
0.000123x×16^8
0.000000987654x×16^8
____________________________________
0.000123987654x×16^8 中間結果
0.123987654x×16^5 正規化
0.123987x×16^5 結果
【0043】
16進浮動小数点加算の最悪の事例は、大きい指数を持つ0が数値に加算され、すべての精度が失われる場合である。以下に例を示す。
A=0.000000x×16^63
B=0.ABCDEFx×16^56
____________________________________
0.000000x×16^63 A
0.0000000x×16^63 Bが1つのガード桁に揃えられる
0.0000000x×16^63 中間結果
0.000000x × 16^0 真の0である結果
結果は約16^56ずれており、精度の桁を含んでいない。これが、16進浮動小数点積和(Multiply-Add)使用して実行された場合、結果はBに等しく、正確である。
【0044】
乗加算命令または加算のみ命令あるいはその両方の演算を実行するために使用される乗加算命令の1つの実施形態が、図2Aを参照して説明される。命令は、1つの例では、汎用プロセッサ(例えば、プロセッサ104)を使用して実行される。本明細書における説明では、フィールドの特定の位置、特定のフィールド、または特定のサイズ、あるいはその組合せが(例えば、特定のバイトまたはビットあるいはその両方で)示される。しかし、他の位置、フィールド、またはサイズ、あるいはその組合せが提供されてよい。さらに、特定の値(例えば、1または0)へのビットの設定が指定されることがあるが、これは単なる例である。ビットは、他の例では、反対の値または別の値などの異なる値に設定されてよい。多くの変形が可能である。
【0045】
1つの例では、乗加算命令は、拡張されたオペレーション・コード(オペコード)および追加のレジスタと共にレジスタおよびレジスタ動作を示すRRD形式を有する。図2Aに示されているように、1つの例では、乗加算命令200は複数のフィールドを含んでおり、フィールドには、下付きの数字が関連付けられていることがある。命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、レジスタRに関連付けられた下付きの数字1は、Rを使用して指定されたレジスタが第1のオペランドを含んでいることを示す、など。レジスタのオペランドの長さは、1レジスタであり、例えば、64ビットである。
【0046】
1つの実施形態では、乗加算命令200は、少なくとも乗加算演算を示すオペレーション・コード(オペコード)フィールド202(例えば、ビット0~15)、少なくとも1つの第1のレジスタを指定するために使用される第1のレジスタ(R)フィールド204(例えば、ビット16~19)、マスク(M)フィールド206(例えば、ビット20~23)、少なくとも1つの第2のレジスタを指定するために使用される第2のレジスタ(R)フィールド210(例えば、ビット28~31)、および少なくとも1つの第3のレジスタを指定するために使用される第3のレジスタ(R)フィールド208(例えば、ビット24~27)を含み、これらの各々が以下で説明される。1つの実施形態では、各フィールドは、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合されてよい。これらのフィールドに関するさらなる情報が、以下で説明される。
【0047】
1つの実施形態では、レジスタ(R)フィールド204は、命令の実行において加算される値である第1のオペランドを含んでいる少なくとも1つのレジスタを示すために使用され、第1のオペランドの位置(例えば、少なくともR)は、命令の実行結果を格納する。第2のオペランドは、レジスタ(R)フィールド210を使用して指定された少なくとも1つのレジスタに含まれ、例えば、16進浮動小数点数であり、第3のオペランドは、レジスタ(R)フィールド208を使用して指定された少なくとも1つのレジスタに含まれ、例えば、16進浮動小数点数である。
【0048】
1つの例では、命令を実行することにおいて、1つまたは複数の制御が使用される。例示的な制御が、Mフィールド206に含まれている。図2Bを参照すると、Mフィールド206は以下を含んでいる。
【0049】
加算のみ命令220:この制御(例えば、ビット0)が0である場合、実行される関数は乗加算命令である。この制御が1である場合、実行される関数は加算のみ命令であり、乗加算が実行され、第3のオペランドが1.0であると仮定される。この演算は、無限大のガード桁との加算の後に正規化および丸めが続くことと同等であり、下で説明される丸めモード制御によって丸めモードが決定される。
【0050】
丸めモード222:この制御(例えば、ビット3)が0である場合、正規化された中間結果が切り捨てられて、結果を形成する。この制御が1である場合、正規化された中間結果が、0から遠い方の最も近い値に丸められる。正規化された中間結果は、例えば、拡張形式、長形式、および短形式の場合、それぞれ、乗加算の結果の29桁、15桁、または7桁の最上位16進数を含み、右側に1つのガード桁を含む。1が、中間結果のガード桁の左端のビットに加えられ、繰り上げが左に伝搬され、ガード桁が除去されて、結果の小数部を生成する。丸めの中間結果が小数部のオーバーフローを引き起こす場合、小数部が1桁の16進数の位置だけ右にシフトされ、指数部がインクリメントされる。
【0051】
1つの例では、ビット1~2は無視され、0を含む。
【0052】
乗加算命令の形式の別の例が、図2Cを参照して説明される。1つの実施形態では、乗加算命令250は、レジスタおよびインデックス付けされたストレージの動作、拡張されたオペコード・フィールド、ならびに追加のレジスタ・フィールドを示すRXF形式を有する。乗加算命令250は、例えば、少なくとも乗加算演算を示すオペレーション・コード(オペコード)フィールド252a、252b(例えば、ビット0~7および40~47)、少なくとも1つの第1のレジスタを指定するために使用される第1のレジスタ(R)フィールド262(例えば、ビット32~35)、マスク(M)フィールド264(例えば、ビット36~39)、少なくとも1つの第3のレジスタを指定するために使用される第3のレジスタ(R)フィールド254(例えば、ビット8~11)、ならびに第2のオペランドのアドレスを指定するために使用される、インデックス(X)フィールド256(例えば、ビット12~15)、ベース(B)フィールド258(例えば、ビット16~19)、および変位(D)フィールド260(例えば、ビット20~31)などの複数のフィールドを含む。例えば、XフィールドおよびBフィールドによって指定された汎用レジスタの内容がDフィールドの内容に加算されて、第2のオペランドのアドレスを形成する。フィールドの各々が、以下で説明される。1つの実施形態では、各フィールドは、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合されてよい。
【0053】
本明細書において説明されるように、1つの実施形態では、レジスタ(R)フィールド262は、命令の実行において加算される値である第1のオペランドを含んでいる少なくとも1つのレジスタを示すために使用され、第1のオペランドの位置は、命令の実行結果を格納する。前述したように、Xフィールド256、Bフィールド258、およびDフィールド260を使用して定義されたアドレスから取得された第2のオペランドは、例えば、16進浮動小数点数であり、第3のオペランドは、レジスタ(R)フィールド254を使用して指定された少なくとも1つのレジスタに含まれ、例えば、16進浮動小数点数である。
【0054】
1つの例では、1つの実施形態で命令を実行することにおいて、1つまたは複数の制御が使用される。例示的な制御が、Mフィールド264に含まれており、図2Bを参照して上で説明されている。
【0055】
乗加算命令(200、250)の1つの実施形態の実行では、第3のオペランド(例えば、下で説明されているように取得される)に、第2のオペランド(例えば、Rレジスタを使用して取得されるか、または第2のオペランドのアドレスから取得される)を掛けて、積(本明細書では中間積とも呼ばれる)を取得し、次に、第1のオペランド(例えば、例えば、Rレジスタを使用して取得される)がこの積に加算される。1つの実施形態では、加算のみ命令(Add Only)の演算で、Mフィールド206、264のビット0(加算のみ命令220)が例えば1である場合、演算は、第1のオペランドへの第2のオペランドの加算である。第3のオペランドの浮動小数点レジスタからの値は、無視される(例えば、レジスタから読み取られず、1などの既定の値であると仮定される)。合計が、第1のオペランドの位置に配置される。
【0056】
乗加算命令の演算は、次のように要約され得る。
【0057】
Op=op × op+op
【0058】
第3のおよび第2の16進浮動小数点オペランドが乗算されて中間積を形成し、次に、第1のオペランドが中間積に代数的に加算されて、中間結果を形成する。中間積および中間結果の指数および小数部は、正確に維持される。中間結果は、ゼロ以外である場合、正規化されて、オペランドの形式に切り捨てられ、その後、第1のオペランドの位置に配置される。1つの例では、加算のみ命令の演算で、Mフィールド206、264のビット3(丸めモード222)が1である場合、中間結果が正規化されて、0から遠い方の最も近い値へ丸められてオペランドの形式にされ、その後、第1のオペランドの位置に配置される。
【0059】
中間結果の小数部が0でない限り、代数の規則によって結果の符号が決定され、中間結果の小数部が0である場合、結果が正の真の0にされる。
【0060】
正規化された結果の指数部が127を超え、小数部が0でない場合、16進浮動小数点の指数オーバーフロー例外が存在する。結果の指数部を正しい値より128小さくすることによって演算が完了し、16進浮動小数点の指数オーバーフローのプログラム割り込みが発生する。結果が正規化され、符号および小数部は正しいままである。
【0061】
正規化された結果が正しい指数部を使用して表されるなら、16進浮動小数点の指数オーバーフローは、中間値に対して認識されない。
【0062】
正規化された結果の指数部が0未満であり、小数部が0でない場合、16進浮動小数点のアンダーフロー例外が存在する。プログラム状態ワードなどの、制御レジスタ内の16進浮動小数点の指数アンダーフローのマスク・ビットが1である場合、結果の指数部を正しい値より128大きくすることによって演算が完了し、16進浮動小数点の指数アンダーフローのプログラム割り込みが発生する。結果が正規化され、符号および小数部は正しいままである。制御レジスタ内の16進浮動小数点の指数アンダーフローのマスク・ビットが0である場合、プログラム割り込みは発生せず、代わりに、結果を正の真の0にすることによって演算が完了する。
【0063】
正規化された結果が正しい指数部を使用して表され得るなら、16進浮動小数点の指数オーバーフローは、入力オペランドおよび中間値に対して認識されない。
【0064】
本発明の1つまたは複数の態様に従って、乗加算命令の実行に基づく処理の1つの実施形態のさらなる詳細が、図3~4を参照して説明される。1つの例では、命令を実行するために、一般的なプロセッサ104などのプロセッサが使用される。一例として、命令を実行するために、プロセッサのハードウェアが使用される。ハードウェアは、プロセッサから命令を受信する目的で、プロセッサ内にあるか、またはプロセッサに結合されてよく、プロセッサは、例えば、ハードウェア上で実行するための命令を取得し、デコードし、設定する。他の変形が可能である。
【0065】
図3を参照すると、1つの実施形態では、最初に乗加算命令などの命令が取得され(例えば、フェッチされる、受信される、提供される、など)(300)、実行される(310)。1つの例では、第1および第2のオペランドが取得される(312)。さらに、1つの実施形態では、本明細書では加算のみ命令(Add Only)の制御220と呼ばれる制御が取得される(314)。この制御が、乗加算演算が実行されるということを示す(例えば、加算のみ命令の制御が0に設定された)場合(316)、第3のオペランドが取得され(例えば、第3のオペランドが、Rを使用して指定された1つまたは複数のレジスタから読み取られ)(318)、第2のおよび第3のオペランドが乗算されて積を取得する(320)。そうではなく、この制御が、加算のみ命令の演算が実行されるということを示す(例えば、加算のみ命令の制御が1に設定された)場合(316)、第3のオペランドが1の値であり、Rによって指定された1つまたは複数のレジスタが読み取られないことが想定される。第2および第3のオペランド(例えば、第3のオペランドが、16進浮動小数点での1の既定の値を含む)が乗算されて積を取得する(320)。
【0066】
第1のオペランドがこの積に加算されて、中間結果を取得する(322)。結果が中間結果から取得され(324)、この結果が、第1のオペランドの位置(例えば、Rを使用して指定された1つまたは複数のレジスタ)に配置される(326)。1つの例では、本明細書において説明されるように、丸めが実行されてその結果を取得してもよい。
【0067】
中間結果から結果を取得すること(324)に関するさらなる詳細が、図4を参照して説明される。1つの例では、中間積および中間結果の指数および小数部は、正確に維持される(400)。中間結果がゼロ以外である場合(410)、中間結果が正規化されて、正規化された結果を提供する(420)。さらに、丸めが実行されるかどうかに関する判定が行われる(430)。一例として、この判定は、丸めモード制御222をチェックすることによって行われる。丸めが実行されない場合、正規化された結果がオペランドの形式に切り捨てられ、第1のオペランドの位置に配置される結果を提供する(440)。しかし、丸めが実行される場合(430)、正規化された結果が、例えば0から遠い方の最も近い値に丸められてオペランドの形式にされ、第1のオペランドの位置に配置される結果を取得する(450)。1つの例では、丸めモードは、加算のみ命令の演算のみに使用される。他の例では、丸めモードは、他の演算において使用されてよい。
【0068】
乗加算命令のさまざまなフィールドおよびレジスタが説明されたが、本発明の1つまたは複数の態様は、他のより多いか、もしくはより少ないか、またはその両方のフィールドもしくはレジスタまたはその両方、または他のサイズのフィールドもしくはレジスタまたはその両方、あるいはその組合せなどを使用してよい。多くの変形が可能である。例えば、命令の明示的に指定されたレジスタもしくはフィールドまたはその両方の代わりに、明示されないレジスタが使用されてよく、または明示されないレジスタもしくはフィールドまたはその両方の代わりに、明示的に指定されたレジスタもしくはフィールドまたはその両方が使用されてよく、あるいはその組合せであってよい。他の変形も可能である。
【0069】
本明細書において説明されるように、1つの態様では、乗算演算、加算演算、正規化処理、切り捨て処理、または丸め処理、あるいはその組合せを実行するために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたマシン命令(例えば、乗加算命令))が提供される。例えば、この命令は、乗加算命令または加算のみ命令あるいはその両方の演算を直接実行する、命令セット・アーキテクチャ(ISA)において定義されたハードウェア命令である。乗加算演算を実行することに関連するプログラムの複雑さが軽減される。さらに、動作(したがって、プロセッサ)の性能が改善される。ハードウェア命令の実行は、実行時間を短縮し、性能を改善する。
【0070】
複数の命令ではなく、単一の命令を使用して、少なくとも乗加算演算(および任意選択的に、正規化、切り捨て、もしくは丸め、またはその組合せ、または他の動作、あるいはその組合せ)を実行することによって、ハードウェア/ソフトウェア・インターフェイスの複数の通過を必要としないことにより、性能が改善される。さらに、1つの命令の一部として処理を実行することによって、処理は、処理を完了する前にプロセッサのレジスタ・ファイルのレジスタ(すなわち、メモリと機能ユニット(例えば、浮動小数点処理ユニット)の間でデータを格納するために使用されるプロセッサ・レジスタのアレイ)の更新を必要とせず、動作を実行している処理ユニット(例えば、浮動小数点処理ユニット)内にとどまる。これによって、実行時間を改善し、プロセッサ・リソースの使用を減らす。
【0071】
1つまたは複数の態様に従って、1つの命令の一部として算術も実行する乗算命令を使用して算術(例えば、加算)を実行することによって、精度が向上し、複数の命令ではなく単一の命令を使用することによって、複雑さが軽減され、性能が改善され、システム・リソースの使用が減らされる。さらに、1つの命令の一部として丸めモードを提供することによって、1つの例では、すべて一方向であるか、または両方向に絶対誤差の半分のいずれかになるように、誤差に摂動が与えられ得る。切り捨ての誤差は0から+1ulpであるが、丸めの誤差は-1/2ulpから+1/2ulpであり、ulpはオペランドの最終桁の重みを表す。
【0072】
本明細書における1つの例では、算術演算は加算であるが、他の例では、減算を含むがこれに限定されない、他の算術演算が実行されてよい。多くの変形が可能である。
【0073】
本発明の1つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。少なくとも、乗加算演算を実行するため、および任意選択的に、正規化、丸め、または切り捨て、あるいはその組合せを実行するために、単一の設計されたマシン命令を使用して、複雑さを軽減し、リソースの使用を減らし、処理速度を上げることによって、コンピューティング環境内の性能を改善する。さらに、乗加算(および1つの実施形態では、結果の正規化、丸め、もしくは切り捨て、またはその組合せ、または他の動作の実行、あるいはその組合せ)を実行するために単一の設計されたマシン命令を使用して、複雑さを軽減し、リソースの使用を減らし、処理速度を上げることによって、コンピューティング環境内の性能を改善する。データまたは命令あるいはその両方は、コンピュータ処理、医用情報処理、設計、自動車技術、製造などの多くの技術分野で使用され得る。算術演算を実行することにおいて最適化を実現することによって、実行時間を削減することにより、これらの技術分野が改善される。
【0074】
コンピューティング環境内の処理が、本発明の1つまたは複数の態様に関連しているとき、その処理を容易にする実施形態のさらなる詳細が、図5A~5Cを参照して説明される。
【0075】
図5Aを参照すると、1つの実施形態では、命令に対して構成された複数の動作から選択された動作を実行して、命令が実行される(500)。1つの例では、命令を実行することは、命令の選択されたオペランド(例えば、第3のオペランド)の値を決定することを含む(502)。選択されたオペランドの値を決定することは、命令の制御に基づき(504)、例えば、命令の制御が第1の値を含んでいるということに基づいて、命令の選択されたオペランドを選択されたオペランドの位置から読み取って、選択されたオペランドの値を取得すること(506)と、命令の制御が第2の値を含んでいるということに基づいて、既定の値を、選択されたオペランドの値として使用すること(508)とを含む。この値および命令の別の選択されたオペランド(例えば、第2のオペランド)が乗算されて、積を取得する(510)。この積および命令の選択されたオペランド(例えば、第1のオペランド)を使用して算術演算が実行され、中間結果を取得する(512)。結果が中間結果から取得され(514)、選択された位置に配置される(516)。
【0076】
単一の命令を使用して、乗算および算術演算を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して乗算および算術演算を実行することによって、乗算および算術演算などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗算演算または算術演算あるいはその両方がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0077】
複数の動作を実行するように構成された単一の命令を使用することによって、性能が改善され、リソースの利用が減らされる。算術演算により高い精度をもたらすように乗算が実行される、乗算および算術演算または算術のみの演算を実行するように構成された、単一の設計された命令を使用することによって、乗算および算術演算などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗算および算術演算がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0078】
さらに、1つの例では、算術も実行する乗算命令を使用して算術(例えば、加算)を実行することによって、精度が向上し、複数の命令ではなく単一の命令を使用することによって、複雑さが軽減され、性能が改善され、システム・リソースの使用が減らされる。例えば、2つのオペランドの乗算は、幅の2倍の積をもたらし、単一の命令において算術演算を組み合わせることによって、丸められた積または切り捨てられた積ではなく、完全な2倍の幅の積が算術に関与することができる。一例として、2つの6桁の16進数のオペランドの乗算は、12桁の16進数の積をもたらす。これらが分離した演算である場合、次の演算の前に、積が6桁の16進数に切り捨てられる。完全な中間結果を使用することによって、結合された演算がより正確になる。言い換えると、切り捨てを使用する浮動小数点の単純な演算の場合、通常、0から1ulp(最終桁の重み)の誤差が得られる。乗算および切り捨てが存在する場合、積が1ulpの誤差を含み、加数への積の加算が存在する場合、それが別の1ulpの誤差を引き起こし、合計で誤差が2ulpになる。しかし、演算が1つの複合演算である場合、1ulpの誤差のみが存在する。これは、2進浮動小数点に当てはまり、16進浮動小数点の場合、誤差はさらに悪くなる。
【0079】
1つの例では、既定の値を選択されたオペランドの値として使用することは、選択されたオペランドの位置(例えば、少なくとも1つのレジスタ)から選択されたオペランドを読み取ることなく既定の値を使用することを含む(518)。これにより、1つまたは複数のレジスタの読み取りをなくすことによって、システム性能を改善する。
【0080】
一例として、図5Bを参照すると、既定の値は1の値を含む(520)。
【0081】
1つの例では、命令を実行することは、丸め処理が実行されるかどうかを判定すること(522)と、丸め処理が実行されるということの決定に基づいて、中間結果のバージョンに対して丸め処理を実行し、結果を取得すること(524)とをさらに含む。中間結果のバージョンは、例えば、正規化された結果を含む(526)。
【0082】
単一の命令を使用して、乗算演算、算術演算、丸め処理、または正規化処理、あるいはその組合せを実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、乗算演算、算術演算、丸め処理、または正規化処理、あるいはその組合せを実行することによって、乗算演算、算術演算、丸め処理、または正規化処理、あるいはその組合せなどの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗算演算、算術演算、丸め処理、または正規化処理、あるいはその組合せがはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0083】
1つの例では、丸め処理が実行されるかどうかを判定することは、命令の丸めモード制御をチェックすることを含み(528)、丸めモード制御が1の値に等しいということに基づいて、丸め処理が実行される(530)。さらに、1つの実施形態では、丸めモード制御を、単一の命令の一部として含むことによって、誤差の方向および大きさが制御され得る。1つの例では、すべて一方向であるか、または両方向に絶対誤差の半分のいずれかになるように、誤差に摂動が与えられ得る。切り捨ての誤差は0から+1ulpであるが、丸めの誤差は-1/2ulpから+1/2ulpである。
【0084】
1つの例では、結果を取得することは、中間結果を正規化して正規化された結果を取得すること(532)と、正規化された結果を使用して結果を取得すること(534)とを含む。
【0085】
さらに、図5Cを参照すると、1つの例では、正規化された結果を使用して結果を取得することは、丸め処理が実行されるかどうかを判定すること(540)と、丸め処理が実行されるということを決定することに基づいて、正規化された結果を丸めて結果を取得すること(542)とを含む。さらに、1つの例では、丸め処理が実行されないということを決定することに基づいて、正規化された結果を切り捨てて結果を取得する(544)。
【0086】
単一の命令を使用して、乗算演算、算術演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せを実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、乗算演算、算術演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せを実行することによって、乗算演算、算術演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せなどの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗算演算、算術演算、正規化処理、丸め処理、または切り捨て処理、あるいはその組合せがはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0087】
一例として、選択された位置は、命令の少なくとも1つのフィールドによって指定された少なくとも1つのレジスタを含む(546)。
【0088】
1つの例では、制御は加算のみ命令の制御であり、算術演算は加算演算を含む(548)。制御が第2の値を含んでいるということに基づいて、制御は、命令が、他の選択されたオペランドに1の既定の値が掛けられる、加算のみ命令の演算を実行するということを示す(550)。さらに、制御が第1の値を含んでいるということに基づいて、制御は、命令が乗加算演算を実行するということ、および他の選択されたオペランドに、選択されたオペランドの位置から読み取られた値が掛けられるということを示す(552)。
【0089】
単一の命令を使用して、乗加算演算を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して乗加算演算を実行することによって、乗加算演算などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗加算演算がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0090】
複数の動作を実行するように構成された単一の命令を使用することによって、性能が改善され、リソースの利用が減らされる。加算演算により高い精度をもたらすように乗算が実行されるが、その他の点では総和に影響を与えない、乗加算命令または加算のみ命令あるいはその両方を実行するように構成された、単一の設計された命令を使用することによって、乗加算演算などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。乗加算演算がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0091】
さらに、1つの例では、単一の命令において算術も実行する乗算命令を使用して算術(例えば、加算)を実行することによって、精度が向上し、複数の命令ではなく単一の命令を使用することによって、複雑さが軽減され、性能が改善され、システム・リソースの使用が減らされる。
【0092】
他の変形および実施形態が可能である。
【0093】
本発明の態様は、多くの種類のコンピューティング環境によって使用されてよい。本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例が、図6Aを参照して説明される。一例として、図6Aのコンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)ハードウェア・アーキテクチャに基づく。しかし、z/Architectureハードウェア・アーキテクチャは、1つの例示的なアーキテクチャにすぎない。さらに、コンピューティング環境は、Intel(R)x86アーキテクチャ、International Business Machines Corporationの他のアーキテクチャ、または他の企業のアーキテクチャ、あるいはその組合せを含むが、これらに限定されない、他のアーキテクチャに基づいてよい。Intelは、米国および他の国における、Intel Corporationまたはその子会社の商標または登録商標である。
【0094】
1つの例では、コンピューティング環境10は中央電子回路複合体(CEC:central electronics complex)11を含む。中央電子回路複合体11は、例えば、1つまたは複数のプロセッサ(中央処理装置(CPU)とも呼ばれる)13および入出力(I/O)サブシステム14に結合されたメモリ12(システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、ストレージとも呼ばれる)などの、複数のコンポーネントを含んでいる。
【0095】
I/Oサブシステム14は、中央電子回路複合体の一部であるか、または中央電子回路複合体から分離することができる。I/Oサブシステム14は、主記憶装置12と、中央電子回路複合体に結合された入出力制御ユニット15および入出力(I/O)デバイス16との間の情報の流れを方向付ける。
【0096】
多くの種類のI/Oデバイスが使用されてよい。1つの特定の種類は、データ・ストレージ・デバイス17である。データ・ストレージ・デバイス17は、1つまたは複数のプログラム18、1つまたは複数のコンピュータ可読プログラム命令19、またはデータ、あるいはその組合せなどを格納することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
【0097】
中央電子回路複合体11は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなにコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であることができる。例えば、中央電子回路複合体11は、取り外し不可、不揮発性の磁気媒体(通常は、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りおよび書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であることができる。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、中央電子回路複合体11と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0098】
さらに、中央電子回路複合体11は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用され得る。中央電子回路複合体11での使用に適した周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0099】
中央電子回路複合体11は、1つまたは複数の実施形態では、論理分割または仮想化あるいはその両方のサポートを提供する。1つの実施形態では、図6Bに示されているように、メモリ12は、例えば、1つまたは複数の論理パーティション20、論理パーティションを管理するハイパーバイザ21、およびプロセッサ・ファームウェア22を含んでいる。ハイパーバイザ21の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるプロセッサ・リソース/システム管理機構(PR/SM(TM):Processor Resource/System Manager)である。本明細書において使用されるとき、ファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、上位レベルのマシン・コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。1つの実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供され、システムのハードウェアへのオペレーティング・システムのアクセスを制御する、独自のコードを含む。PR/SMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0100】
各論理パーティション20は、別々のシステムとして機能することができる。すなわち、各論理パーティションは、独立してリセットされて、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/OS(R)オペレーティング・システムなどのゲスト・オペレーティング・システム23、または結合機能制御コード(CFCC:coupling facility control code)などの他の制御コード24を実行し、異なるプログラム25と共に動作することができる。論理パーティション内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/OSオペレーティング・システムが例として提供されているが、本発明の1つまたは複数の態様に従って、International Business Machines Corporationまたは他の企業あるいはその両方によって提供される他のオペレーティング・システムが使用されてよい。
【0101】
メモリ12は、論理パーティションに割り当てられ得る物理プロセッサ・リソースであるCPU13(図6A)に結合される。例えば、論理パーティション20は、1つまたは複数の論理プロセッサを含み、それらの論理プロセッサの各々は、論理パーティションに動的に割り当てられ得る物理プロセッサ・リソース13の全部または一部を表す。
【0102】
さらに別の実施形態では、中央電子回路複合体は、(論理分割をサポートするか、またはサポートしない)仮想マシンのサポートを提供する。図6Cに示されているように、中央電子回路複合体11のメモリ12は、例えば、1つまたは複数の仮想マシン26、仮想マシンを管理する仮想マシン・マネージャ(ハイパーバイザ27など)、およびプロセッサ・ファームウェア28を含んでいる。ハイパーバイザ27の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/VM(R)ハイパーバイザである。ハイパーバイザは、ホストと呼ばれることがある。z/VMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0103】
中央電子回路複合体の仮想マシンのサポートは、多数の仮想マシン26を動作させることができるようにし、各仮想マシン26は、異なるプログラム29で動作し、Linux(R)オペレーティング・システムなどのゲスト・オペレーティング・システム30を実行することができる。各仮想マシン26は、別々のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲスト・オペレーティング・システムを実行し、異なるプログラムで動作することができる。仮想マシン内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/VMおよびLinuxが例として提供されているが、本発明の1つまたは複数の態様に従って、他の仮想マシン・マネージャまたはオペレーティング・システムあるいはその両方が使用されてよい。Linux Foundation(世界規模での商標の所有者であるLinus Torvaldsの専用実施権者)からのサブライセンスに従って、登録商標Linux(R)が使用される。
【0104】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図7Aを参照して説明される。この例では、コンピューティング環境36は、例えば、1つまたは複数のバス40または他の接続あるいはその両方を介して互いに結合された、ネイティブ中央処理装置(CPU)37、メモリ38、および1つまたは複数の入出力デバイスまたはインターフェイスあるいはその両方39を含む。例として、コンピューティング環境36は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるPowerPC(R)プロセッサ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるIntel(R)Itanium(R)IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、Intel Corporation、Oracle社、もしくは他の企業、またはその組合せによって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。PowerPCは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。Itaniumは、米国および他の国における、Intel Corporationまたはその子会社の商標または登録商標である。
【0105】
ネイティブ中央処理装置37は、環境内で処理中に使用される1つもしくは複数の汎用レジスタまたは1つもしくは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ41を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【0106】
さらに、ネイティブ中央処理装置37は、メモリ38に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ38に格納されたエミュレータ・コード42を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード42は、z/Architectureハードウェア・アーキテクチャ以外のアーキテクチャに基づくマシン(PowerPCプロセッサ、HP Superdomeサーバなど)が、z/Architectureハードウェア・アーキテクチャをエミュレートし、z/Architectureハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
【0107】
エミュレータ・コード42に関連するさらなる詳細が、図7Bを参照して説明される。メモリ38に格納されたゲスト命令43は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命令43は、z/Architectureハードウェア・アーキテクチャに基づくプロセッサ上で実行するように設計されてよいが、代わりに、例えばIntel Itanium IIプロセッサであってよい、ネイティブCPU37上でエミュレートされる。1つの例では、エミュレータ・コード42は、メモリ38から1つまたは複数のゲスト命令43を取得するため、および取得された命令のローカル・バッファリングを任意選択的に提供するための命令フェッチ・ルーチン44を含む。エミュレータ・コード42は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令46に変換するための命令変換ルーチン45も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
【0108】
さらに、エミュレータ・コード42は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令46の実行は、データをメモリ38からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、または変換ルーチンによって決定された何らかの種類の算術演算もしくは論理演算を実行することを含んでよい。
【0109】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用して、またはメモリ38内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令43、ネイティブ命令46、およびエミュレータ・コード42は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
【0110】
本発明の1つまたは複数の態様に従って、エミュレートされ得る例示的な命令は、本明細書に記載された乗加算命令である。
【0111】
前述されたコンピューティング環境は、使用可能なコンピューティング環境の例にすぎない。分割されない環境、分割された環境、クラウド環境、またはエミュレートされた環境、あるいはその組合せを含むが、これらに限定されない、他の環境が使用されてよく、実施形態はいずれか1つの環境に限定されない。本明細書ではコンピューティング環境のさまざまな例が説明されるが、本発明の1つまたは複数の態様が、多くの種類の環境と共に使用されてよい。本明細書で提供されるコンピューティング環境は、例にすぎない。
【0112】
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成されることが可能である。
【0113】
1つまたは複数の態様がクラウド・コンピューティングに関連してよい。
【0114】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された教示の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
【0115】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
【0116】
特徴は、次のとおりである。
【0117】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0118】
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0119】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できることがある。
【0120】
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0121】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
【0122】
サービス・モデルは、次のとおりである。
【0123】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0124】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0125】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0126】
デプロイメント・モデルは、次のとおりである。
【0127】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0128】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0129】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0130】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データおよびアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0131】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0132】
ここで図8を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード52を含んでいる。ノード52は、互いに通信してよい。ノード52は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図8に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0133】
ここで図9を参照すると、クラウド・コンピューティング環境50(図8)によって提供される機能的抽象レイヤのセットが示されている。図9に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0134】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0135】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0136】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供してよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当ておよび管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0137】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、ならびに乗加算(または正規化または丸めまたは切り捨て、あるいはその組合せ処理)96が挙げられる。
【0138】
本発明の態様は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0139】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
【0140】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せ)を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0141】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上もしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)もしくは広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路をカスタマイズしてよい。
【0142】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0143】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【0144】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0145】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実現されるか、同時に実行されるか、時間的に部分的もしくは完全に重複する方法で実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0146】
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【0147】
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
【0148】
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
【0149】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
【0150】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、1つまたは複数の態様を組み込むため、または1つまたは複数の態様を使用するため、あるいはその両方のために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、さまざまな命令または動作が使用されてよい。さらに、さまざまな種類のレジスタまたは異なるレジスタあるいはその両方が使用されてよい。多くの変形が可能である。
【0151】
本明細書では、さまざまな態様が説明される。さらに、本発明の態様の思想から逸脱することなく、多くの変形が可能である。本明細書に記載された各態様または特徴およびその変形を、特に矛盾しない限り、任意の他の態様または特徴と組み合わせることができるということに、注意するべきである。
【0152】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【0153】
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタもしくはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【0154】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【0155】
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
図1A
図1B
図2A
図2B
図2C
図3
図4
図5A
図5B
図5C
図6A
図6B
図6C
図7A
図7B
図8
図9
【手続補正書】
【提出日】2023-12-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
命令を実行して、前記命令について構成された複数の動作から選択された動作を実行することを含み、前記命令を実行することが、
前記命令の選択されたオペランドの値を決定することであって、前記値を決定することは、前記命令の制御に基づき、
前記命令の前記制御が第1の値を含んでいるということに基づいて、前記命令の前記選択されたオペランドを選択されたオペランドの位置から読み取って、前記選択されたオペランドの前記値を取得することと、
前記命令の前記制御が第2の値を含んでいるということに基づいて、既定の値を、前記選択されたオペランドの前記値として使用することと
を含む、前記決定することと、
前記値および前記命令の別の選択されたオペランドを乗算して積を取得することと、
前記積および前記命令の選択されたオペランドを使用して算術演算を実行し、中間結果を取得することと、
前記中間結果から結果を取得することと、
前記結果を選択された位置に配置することと
を含む、コンピュータ実装方法。
【請求項2】
前記既定の値を前記選択されたオペランドの前記値として使用することが、前記選択されたオペランドの位置から前記選択されたオペランドを読み取ることなく前記既定の値を使用することを含み、前記選択されたオペランドの位置が少なくとも1つのレジスタを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記既定の値が1の値を含む、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記命令を実行することが、
丸め処理が実行されるかどうかを判定することと、
前記丸め処理が実行されるという判定に基づいて、前記中間結果のバージョンに対して前記丸め処理を実行して前記結果を取得することと
をさらに含む、請求項1ないし3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
前記中間結果の前記バージョンが正規化された結果を含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記丸め処理が実行されるかどうかを判定することが、前記命令の丸めモード制御をチェックすることを含み、前記丸めモード制御が1の値に等しいということに基づいて、前記丸め処理が実行される、請求項4に記載のコンピュータ実装方法。
【請求項7】
前記結果を取得することが、
前記中間結果を正規化して、正規化された結果を取得することと、
前記正規化された結果を使用して前記結果を取得することと
を含む、請求項1ないし6のいずれか一項に記載のコンピュータ実装方法。
【請求項8】
前記正規化された結果を使用して前記結果を取得することが、
丸め処理が実行されるかどうかを判定することと、
前記丸め処理が実行されるという判定に基づいて、前記正規化された結果を丸めて前記結果を取得することと、
前記丸め処理が実行されないという判定に基づいて、前記正規化された結果を切り捨てて前記結果を取得することとを含む、請求項7に記載のコンピュータ実装方法。
【請求項9】
前記選択された位置が、前記命令の少なくとも1つのフィールドによって指定された少なくとも1つのレジスタを含む、請求項1ないし8のいずれか一項に記載のコンピュータ実装方法。
【請求項10】
前記制御が加算のみの制御であり、前記算術演算が加算演算を含み、前記制御が前記第2の値を含んでいるということに基づいて、前記制御が、前記命令が前記他の選択されたオペランドに1の前記既定の値が掛けられる加算のみの演算を実行するということを示し、前記制御が前記第1の値を含んでいるということに基づいて、前記制御が、前記命令が乗加算演算を実行するということ、および前記他の選択されたオペランドに、前記選択されたオペランドの位置から読み取られた前記値が掛けられるということを示す、請求項1ないし9のいずれか一項に記載のコンピュータ実装方法。
【請求項11】
コンピュータに、請求項1ないし10のいずれか一項に記載のコンピュータ実装方法の各手順を実行させるためのコンピュータ・プログラム。
【請求項12】
コンピュータ・システムであって、
メモリと、
前記メモリと通信するプロセッサとを備えており、
前記メモリは、請求項11に記載のコンピュータ・プログラムを格納し、
前記プロセッサによって前記各手順が実行されて、コンピューティング環境内の処理を容易にする、システム。
【国際調査報告】