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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-19
(54)【発明の名称】数値の変換およびスケーリング方法
(51)【国際特許分類】
   G06F 5/00 20060101AFI20240312BHJP
   G06F 9/30 20180101ALI20240312BHJP
   G06F 7/493 20060101ALI20240312BHJP
   G06F 7/499 20060101ALI20240312BHJP
【FI】
G06F5/00
G06F9/30 350Z
G06F7/493
G06F7/499 647
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023541669
(86)(22)【出願日】2022-02-18
(85)【翻訳文提出日】2023-07-09
(86)【国際出願番号】 EP2022054052
(87)【国際公開番号】W WO2022179943
(87)【国際公開日】2022-09-01
(31)【優先権主張番号】17/186,443
(32)【優先日】2021-02-26
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100091568
【弁理士】
【氏名又は名称】市位 嘉宏
(72)【発明者】
【氏名】シュヴァルツ、エリック
(72)【発明者】
【氏名】シェルム、ケルスティン
(72)【発明者】
【氏名】レーバー、ペトラ
(72)【発明者】
【氏名】ミュラー、シルヴィア
(72)【発明者】
【氏名】コープランド、レイド
(72)【発明者】
【氏名】グオ、シン
(72)【発明者】
【氏名】リヒテナウ、セドリック
【テーマコード(参考)】
5B033
【Fターム(参考)】
5B033AA11
(57)【要約】
変換動作およびスケーリング動作を実行するための命令が提供される。命令の実行は、1つの形式での入力値を変換して、変換された結果を別の形式で提供することを含む。変換された結果がスケーリングされて、スケーリングされた結果を提供する。スケーリングされた結果から取得された結果が、選択された位置に配置される。さらに、スケーリング動作および変換動作を実行するための命令が提供される。命令の実行は、1つの形式での入力値をスケーリングして、スケーリングされた結果を提供することと、スケーリングされた結果を1つの形式から変換して、変換された結果を別の形式で提供することとを含む。変換された結果から取得された結果が、選択された位置に配置される。
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、
変換動作およびスケーリング動作を実行するための命令を実行することを含む方法を実行し、前記命令を前記実行することが、
入力値を1つの形式から変換して、変換された結果を別の形式で提供することと、
前記変換された結果をスケーリングして、スケーリングされた結果を提供することと、
前記スケーリングされた結果から取得された結果を選択された位置に配置することとを含む、コンピュータ・プログラム製品。
【請求項2】
前記1つの形式が16進浮動小数点形式であり、前記他の形式が10進数形式である、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記10進数形式が2進化10進数形式である、請求項2に記載のコンピュータ・プログラム製品。
【請求項4】
前記スケーリングすることが、
スケール係数を決定することと、
前記変換された結果をスケーリングすることにおいて前記スケール係数を使用して、前記スケーリングされた結果を提供することとを含む、請求項1ないし3のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項5】
前記スケール係数を前記決定することが、
前記命令のオペランドを使用してスケール値を取得することと、
前記スケール値を使用して前記スケール係数を決定することとを含み、
前記スケール係数を前記使用することが、前記変換された結果に前記スケール係数を掛けて、前記スケーリングされた結果を取得することを含む、請求項4に記載のコンピュータ・プログラム製品。
【請求項6】
前記命令を前記実行することが、前記スケーリングされた結果を丸めて、丸められた結果を提供することをさらに含む、請求項1ないし5のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項7】
前記丸めることが、
前記命令のフィールドを使用して丸めモードを取得することと、
前記丸めモードに基づいて、前記スケーリングされた結果を前記丸められた結果に丸めることとを含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項8】
前記配置することが、
前記丸められた結果の部分を前記結果として選択することと、
前記結果を前記選択された位置に配置することとを含む、請求項7に記載のコンピュータ・プログラム製品。
【請求項9】
前記命令を前記実行することが、
前記結果の符号を決定することと、
前記結果の前記符号を前記選択された位置に配置することとをさらに含む、請求項1ないし8のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項10】
前記選択された位置が、前記命令のフィールドを使用して指定されたレジスタを含む、請求項1ないし9のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項11】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを備え、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
変換動作およびスケーリング動作を実行するための命令を実行することを含み、前記命令を前記実行することが、
入力値を1つの形式から変換して、変換された結果を別の形式で提供することと、
前記変換された結果をスケーリングして、スケーリングされた結果を提供することと、
前記スケーリングされた結果から取得された結果を選択された位置に配置することとを含む、コンピュータ・システム。
【請求項12】
前記スケーリングすることが、
スケール係数を決定することと、
前記変換された結果をスケーリングすることにおいて前記スケール係数を使用して、前記スケーリングされた結果を提供することとを含む、請求項11に記載のコンピュータ・システム。
【請求項13】
前記命令を前記実行することが、前記スケーリングされた結果を丸めて、丸められた結果を提供することをさらに含む、請求項11または12に記載のコンピュータ・システム。
【請求項14】
前記丸めることが、
前記命令のフィールドを使用して丸めモードを取得することと、
前記丸めモードに基づいて、前記スケーリングされた結果を前記丸められた結果に丸めることとを含む、請求項13に記載のコンピュータ・システム。
【請求項15】
前記配置することが、
前記丸められた結果の部分を前記結果として選択することと、
前記結果を前記選択された位置に配置することとを含む、請求項14に記載のコンピュータ・システム。
【請求項16】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
変換動作およびスケーリング動作を実行するための命令を実行することを含み、前記命令を前記実行することが、
入力値を1つの形式から変換して、変換された結果を別の形式で提供することと、
前記変換された結果をスケーリングして、スケーリングされた結果を提供することと、
前記スケーリングされた結果から取得された結果を選択された位置に配置することとを含む、コンピュータ実装方法。
【請求項17】
前記スケーリングすることが、
スケール係数を決定することと、
前記変換された結果をスケーリングすることにおいて前記スケール係数を使用して、前記スケーリングされた結果を提供することとを含む、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記命令を前記実行することが、前記スケーリングされた結果を丸めて、丸められた結果を提供することをさらに含む、請求項16または17に記載のコンピュータ実装方法。
【請求項19】
前記丸めることが、
前記命令のフィールドを使用して丸めモードを取得することと、
前記丸めモードに基づいて、前記スケーリングされた結果を前記丸められた結果に丸めることとを含む、請求項18に記載のコンピュータ実装方法。
【請求項20】
前記配置することが、
前記丸められた結果の部分を前記結果として選択することと、
前記結果を前記選択された位置に配置することとを含む、請求項19に記載のコンピュータ実装方法。
【請求項21】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、
スケーリング動作および変換動作を実行するための命令を実行することを含む方法を実行し、前記命令を前記実行することが、
1つの形式での入力値をスケーリングして、スケーリングされた結果を提供することと、
前記スケーリングされた結果を前記1つの形式から変換して、変換された結果を別の形式で提供することと、
前記変換された結果から取得された結果を選択された位置に配置することとを含む、コンピュータ・プログラム製品。
【請求項22】
前記1つの形式が10進数形式であり、前記他の形式が16進浮動小数点形式である、請求項21に記載のコンピュータ・プログラム製品。
【請求項23】
前記10進数形式が2進化10進数形式である、請求項22に記載のコンピュータ・プログラム製品。
【請求項24】
前記命令を前記実行することが、前記変換された結果のバージョンを丸めて、丸められた結果を提供することをさらに含み、前記丸められた結果を使用して前記結果が取得される、請求項21ないし23のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項25】
前記選択された位置が、前記命令のフィールドを使用して指定されたレジスタであり、前記結果を前記選択された位置に前記配置することが、
前記結果の形式を決定することと、
前記形式に基づいて前記結果を前記レジスタに配置することとを含む、請求項24に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、一般に、コンピューティング環境内の処理を容易にすることに関し、特に、そのような処理を改善することに関する。
【背景技術】
【0002】
コンピューティング環境内で実行されるアプリケーションは、設計、製造、医療技術、自動車技術、コンピュータ処理などを含むが、これに限定されない、多種多様な技術によって使用される多くの動作を提供する。COBOLなどのプログラミング言語で記述されたこれらのアプリケーションは、多くの場合、動作の実行において複雑な計算を実行する。計算は、例えば、べき関数または指数関数あるいはその両方を含み、多くの場合、1つの形式(例えば、2進化10進数)から別の形式(例えば、16進浮動小数点)へのデータの変換を必要とし、この逆も同様である。
【0003】
アプリケーションが、1つの形式から別の形式への変換を実行するために、さまざまなステップが実行される。例えば、2進化10進数から16進浮動小数点に変換するために、アプリケーションは、2進化10進数を整数に変換するためのステップを含み、その後、整数が16進浮動小数点に変換される。さらに、2進化10進数に再び変換するために、16進浮動小数点数が整数に変換され、その後、整数が2進化10進数に変換される。さらに、これらのステップの各々は、サブステップを含んでよい。これは、時間がかかり、コンピューティング環境の性能に影響を与え、コンピュータ・リソースの可用性に影響を与える。
【発明の概要】
【0004】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、命令を実行して、変換動作およびスケーリング動作を実行することを含む。命令を実行することは、入力値を1つの形式から変換して、変換された結果を別の形式で提供することと、変換された結果をスケーリングされた結果にスケーリングすることと、スケーリングされた結果から取得された結果を選択された位置に配置することとを含む。
【0005】
単一の命令を使用して、変換動作およびスケーリング動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、変換動作およびスケーリング動作を実行することによって、変換動作およびスケーリング動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。変換動作およびスケーリング動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0006】
1つの例では、1つの形式が16進浮動小数点形式であり、他の形式が10進数形式である。一例として、10進数形式は2進化10進数形式である。
【0007】
1つの例では、スケーリングすることは、スケール係数を決定することと、変換された結果をスケーリングすることにおいてスケール係数を使用して、スケーリングされた結果を提供することとを含む。スケール係数を決定することは、例えば、命令のオペランドを使用してスケール値を取得することと、スケール値を使用してスケール係数を決定することとを含む。スケール係数を使用することは、変換された結果にスケール係数を掛けて、スケーリングされた結果を取得することを含む。
【0008】
スケーリングすることは、例えば、数値の特定の桁を分離して、例として、切り詰めるか、または丸めるための数値内の選択された位置を示す。
【0009】
1つの例では、スケーリングされた結果が丸められて、丸められた結果を提供する。丸めることは、命令のフィールドを使用して丸めモードを取得することと、丸めモードに基づいて、スケーリングされた結果を丸められた結果に丸めることとを含む。
【0010】
1つの例では、配置することは、丸められた結果の部分を結果として選択することと、結果を選択された位置に配置することとを含む。
【0011】
1つの例では、結果の符号が決定され、結果の符号が選択された位置に配置される。選択された位置は、例えば、命令のフィールドを使用して指定されたレジスタである。
【0012】
別の態様では、コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、命令を実行して、スケーリング動作および変換動作を実行することを含む。命令を実行することは、1つの形式での入力値をスケーリングして、スケーリングされた結果を提供することと、スケーリングされた結果を1つの形式から変換して、変換された結果を別の形式で提供することと、変換された結果から取得された結果を選択された位置に配置することとを含む。
【0013】
単一の命令を使用して、スケーリング動作および変換動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、スケーリング動作および変換動作を実行することによって、スケーリング動作および変換動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。スケーリング動作および変換動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0014】
1つの例では、命令を実行することは、変換された結果のバージョンを丸めて、丸められた結果を提供することをさらに含み、丸められた結果を使用して結果が取得される。
【0015】
単一の命令を使用して、スケーリング動作、変換動作、および丸め動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、スケーリング動作、変換動作、および丸め動作を実行することによって、スケーリング動作、変換動作、および丸め動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。スケーリング動作、変換動作、および丸め動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0016】
一例として、選択された位置は、命令のフィールドを使用して指定されたレジスタであり、結果を選択された位置に配置することは、結果の形式を決定することと、この形式に基づいて、結果をレジスタに配置することとを含む。
【0017】
1つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、1つまたは複数の態様に関連するサービスも本明細書に記載されており、請求され得る。
【0018】
さらなる特徴および長所が、本明細書に記載された技術によって実現される。他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【0019】
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0020】
図1A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。
図1B】本発明の1つまたは複数の態様に従って、図1Aのプロセッサの詳細をさらに示す図である。
図2】本発明の1つまたは複数の態様に従って、10進数スケーリングおよび16進浮動小数点への変換命令(Decimal Scale and Convert to Hexadecimal Floating Point instruction)の形式の一例を示す図である。
図3】本発明の1つまたは複数の態様に従って、10進数スケーリングおよび16進浮動小数点への変換命令の実行に関連付けられた処理の一例を示す図である。
図4】本発明の1つまたは複数の態様に従って、10進数スケーリングおよび16進浮動小数点への変換命令のスケーリング動作に関連付けられた処理の一例を示す図である。
図5】本発明の1つまたは複数の態様に従って、10進数スケーリングおよび16進浮動小数点への変換命令の変換動作を実行するための処理論理の一例を示す図である。
図6】本発明の1つまたは複数の態様に従って、10進数スケーリングおよび16進浮動小数点への変換命令の配置動作に関連付けられた処理の一例を示す図である。
図7】本発明の1つまたは複数の態様に従って、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令(Vector Convert Hexadecimal Floating Point to Scaled Decimalinstruction)の形式の一例を示す図である。
図8】本発明の1つまたは複数の態様に従って、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令の実行に関連付けられた処理の一例を示す図である。
図9】本発明の1つまたは複数の態様に従って、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令の変換動作を実行するための処理論理の一例を示す図である。
図10】本発明の1つまたは複数の態様に従って、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令の配置動作に関連付けられた処理の一例を示す図である。
図11A】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする一例を示す図である。
図11B】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする一例を示す図である。
図11C】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする別の例を示す図である。
図12A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
図12B】本発明の1つまたは複数の態様に従って、図12Aのメモリのさらなる詳細の一例を示す図である。
図12C】本発明の1つまたは複数の態様に従って、図12Aのメモリのさらなる詳細の別の例を示す図である。
図13A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境のさらに別の例を示す図である。
図13B】本発明の1つまたは複数の態様に従って、図13Aのメモリのさらなる詳細を示す図である。
図14】本発明の1つまたは複数の態様に従って、クラウド・コンピューティング環境の1つの実施形態を示す図である。
図15】本発明の1つまたは複数の態様に従って、抽象モデル・レイヤの一例を示す図である。
【発明を実施するための形態】
【0021】
本発明の態様に従って、コンピューティング環境内の処理を容易にするための能力が提供される。1つの例として、スケーリング動作および変換動作を実行するために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令)が提供される。本明細書では10進数スケーリングおよび16進浮動小数点への変換命令と呼ばれる命令は、汎用プロセッサなどのプロセッサ上でプログラムによってディスパッチされる、汎用プロセッサの命令セット・アーキテクチャ(ISA:instruction set architecture)の一部である。(別の例では、命令は、特定の機能のために構成されたコプロセッサなどの、専用プロセッサの一部であってよい。)
【0022】
単一の命令(例えば、10進数スケーリングおよび16進浮動小数点への変換命令)の実行の一部として、スケール係数を使用して入力データをスケーリングし、スケーリングされたデータを提供すること、およびスケーリングされたデータを1つの形式(例えば、2進化10進数)から別の形式(例えば、16進浮動小数点)に変換することを含む、さまざまな動作が実行される。これらの動作の各々は、単一の命令を実行すること、システム性能を改善すること、およびシステム・リソースの使用を減らすことの一部として実行される。
【0023】
本発明の別の態様に従って、変換動作およびその後のスケーリング動作を実行するために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令)が提供される。本明細書では16進浮動小数点からスケーリングされた10進数へのベクトル変換命令と呼ばれる命令は、汎用プロセッサなどのプロセッサ上でプログラムによってディスパッチされる、汎用プロセッサの命令セット・アーキテクチャ(ISA)の一部である。(別の例では、命令は、特定の機能のために構成されたコプロセッサなどの、専用プロセッサの一部であってよい。)
【0024】
単一の命令(例えば、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令)の実行の一部として、入力データを1つの形式(例えば、16進浮動小数点)から別の形式(例えば、2進化10進数)に変換すること、および変換されたデータをスケーリングすること含む、さまざまな動作が実行される。これらの動作の各々は、単一の命令を実行すること、システム性能を改善すること、およびシステム・リソースの使用を減らすことの一部として実行される。
【0025】
1つの例では、示されるように、変換は、2進化10進数から16進浮動小数点へ、または16進浮動小数点から2進化10進数へである。2進化10進数は、10進数の2進数エンコーディングであり、各10進数が、固定された数のビット(例えば、4ビットまたは8ビット)によって表される。16進浮動小数点は、浮動小数点数をエンコードするための形式である。1つの例では、16進浮動小数点数は、符号ビット、指数部(例えば、7ビット)、および小数部(例えば、6桁、14桁、または28桁)を含む。指数部は、符号付き指数を表し、例えば、64を指数値に加えることによって取得される。指数部の範囲は0から127であり、この範囲は、例えば-64から+63の指数範囲に対応する。16進浮動小数点数の大きさは、小数部と、数値16の、指数部によって表された指数乗との積である。この数値は、符号ビットが例えば0であるかまたは1であるかに応じて、それぞれ正または負になる。
【0026】
16進浮動小数点数は、短形式(例えば、32ビット)、長形式(例えば、64ビット)、および拡張形式(例えば、128ビット)を含む、複数の異なる形式の数値で表され得る。各形式では、第1のビット(例えば、第1の左端のビット、ビット0)が符号ビットであり、次の選択された数のビット(例えば、7ビット)が指数部であり、短形式および長形式では、残りのビットが、例えば6桁または14桁の16進数をそれぞれ含んでいる、小数部である。拡張形式では、小数部は、例えば28桁の小数部であり、拡張16進浮動小数点数は、上位部分および下位部分と呼ばれる2つの長形式の数値で構成される。上位部分は、任意の長16進浮動小数点数である。上位部分の小数部は、例えば、28桁の小数部の左端の14桁の16進数を含み、下位部分の小数部は、例えば、28桁の小数部の右端の14桁の16進数を含む。上位部分の指数部および符号は、拡張16進浮動小数点数の指数部および符号であり、拡張オペランドの下位部分の符号および指数部は無視される。
【0027】
本発明の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の商標または登録商標である。
【0028】
図1Aを参照すると、コンピューティング環境100は、例えば、汎用コンピューティング・デバイスの形態で示されるコンピュータ・システム102を含んでいる。コンピュータ・システム102は、1つまたは複数のバスまたは他の接続110あるいはその両方を介して互いに結合された、1つまたは複数のプロセッサまたはプロセッシング・ユニット104(例えば、中央処理装置(CPU:central processing units))、メモリ106(例えば、システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、またはストレージとも呼ばれる)、および1つまたは複数の入出力(I/O:input/output)インターフェイス108を含んでよいが、これらに限定されない。
【0029】
バス110は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかのうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)、MCA(MicroChannel Architecture)、EISA(Enhanced ISA)、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)を含むが、これらに限定されない。
【0030】
メモリ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を含んでもよい。
【0031】
コンピュータ・システム102は、例えばI/Oインターフェイス108を介して、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイ、および1つまたは複数のデータ・ストレージ・デバイス134などの、1つまたは複数の外部デバイス130と通信し得る。データ・ストレージ・デバイス134は、1つまたは複数のプログラム136、1つまたは複数のコンピュータ可読プログラム命令138、またはデータ、あるいはその組合せなどを格納し得る。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
【0032】
コンピュータ・システム102は、例えばI/Oインターフェイス108を介してネットワーク・インターフェイス132と通信してもよく、ネットワーク・インターフェイス132は、コンピュータ・システム102が、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:widearea network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
【0033】
コンピュータ・システム102は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム102は、取り外し不可、不揮発性の磁気媒体(典型的には、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りもしくは書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であってよい。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム102と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0034】
コンピュータ・システム102は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用され得る。コンピュータ・システム102での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0035】
1つの例では、プロセッサ(例えば、プロセッサ104)は、命令を実行するために使用される複数の機能コンポーネントを含む。図1Bに示されているように、これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント150と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット152と、デコードされた命令を実行するための1つまたは複数の命令実行コンポーネント154と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント156と、実行された命令の結果を提供するための書き戻しコンポーネント158とを含む。コンポーネントのうちの1つまたは複数は、命令処理において1つまたは複数のレジスタ160にアクセスするか、またはレジスタ160を使用するか、あるいはその両方を実行し得る。さらに、コンポーネントのうちの1つまたは複数は、本発明の1つまたは複数の態様に従って、本明細書において説明されているように、例えば、10進数スケーリングおよび16進浮動小数点への変換命令または16進浮動小数点からスケーリングされた10進数へのベクトル変換命令あるいはその両方(または本発明の1つまたは複数の態様を使用し得る他の処理)のスケーリング動作または変換動作あるいはその両方を実行することにおいて使用される1つまたは複数の他のコンポーネントの少なくとも一部を含むか、またはそれらのコンポーネントにアクセスすることができてよい。1つまたは複数の他のコンポーネントは、例えば、スケーリング・コンポーネント/変換コンポーネント(または1つまたは複数の他のコンポーネント)170を含む。
【0036】
本発明の態様に従って、1つの命令を実行することの一部として、数値を1つの形式(例えば、符号付きパック10進数などの10進数)から別の形式(例えば、16進浮動小数点)に変換するためのスケーリング動作および変換動作を少なくとも実行するために、本明細書では10進数スケーリングおよび16進浮動小数点への変換命令と呼ばれる命令が提供される。
【0037】
スケーリング動作および変換動作を実行するために使用される10進数スケーリングおよび16進浮動小数点への変換命令の1つの実施形態が、図2を参照して説明される。命令は、1つの例では、汎用プロセッサ(例えば、プロセッサ104)を使用して実行される。本明細書における説明では、フィールドの特定の位置、特定のフィールド、または特定のサイズ、あるいはその組合せが(例えば、特定のバイトまたはビットあるいはその両方で)示される。しかし、他の位置、フィールド、またはサイズ、あるいはその組合せが提供され得る。さらに、特定の値(例えば、1または0)へのビットの設定が指定されることがあるが、これは単なる例である。ビットは、他の例では、反対の値または別の値などの異なる値に設定されてよい。多くの変形が可能である。
【0038】
1つの例では、10進数スケーリングおよび16進浮動小数点への変換命令は、拡張されたオペレーション・コード(オペコード)と共にベクトル・レジスタおよびレジスタ動作を示すVRR-b形式を有する。10進数スケーリングおよび16進浮動小数点への変換命令は、例えば、1から16個の要素を含む固定サイズのベクトルを提供する、例えば、ベクトル機能の一部である。各ベクトルは、この機能において定義されたベクトル命令によって操作されるデータを含む。1つの実施形態では、ベクトルが複数の要素で構成されている場合、各要素は、他の要素と並列に処理される。1つの例では、すべての要素の処理が完了するまで、命令の完了は発生しない。他の実施形態では、要素は、部分的に並列に、または順次に、あるいはその両方で、処理される。
【0039】
1つの実施形態では、32個のベクトル・レジスタが存在し、他の種類のレジスタが、ベクトル・レジスタの象限にマッピングすることができる。例えば、中央処理装置(例えば、プロセッサ104)内のプロセッサ・レジスタのアレイであるレジスタ・ファイルは、32個のベクトル・レジスタを含んでよく、各レジスタの長さは128ビットである。長さが64ビットである16個の浮動小数点レジスタは、ベクトル・レジスタに重なることができる。したがって、一例として、浮動小数点レジスタ2が変更された場合、ベクトル・レジスタ2も変更される。他の種類のレジスタの他のマッピングも可能である。
【0040】
例えば、ストレージ内で、他のデータ形式と同じ左から右への順序でベクトル・データが現れる。0~7の番号が付けられたデータ形式のビットが、ストレージ内の左端の(最小の番号が付けられた)バイト位置でバイトを構成し、ビット8~15が、次の連続的位置でバイトを形成する、などとなる。さらに別の例では、ストレージ内で、右から左へのなどの別の順序でベクトル・データが現れることがある。
【0041】
図2に示されているように、1つの例では、10進数スケーリングおよび16進浮動小数点への変換命令200は複数のフィールドを含んでおり、フィールドには、下付きの数字が関連付けられていることがある。命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、ベクトル・レジスタVに関連付けられた下付きの数字1は、Vを使用して指定されたレジスタが第1のオペランドを含んでいることを示す、などとなる。レジスタのオペランドの長さは、1レジスタであり、例えば、128ビットである。
【0042】
1つの実施形態では、10進数スケーリングおよび16進浮動小数点への変換命令200は、入力データが例えば10進数(例えば、31桁および符号を含んでいる2進化10進数などの、例えば、符号付きパック10進数)であり、出力が例えば16進浮動小数点値であるスケーリング動作および変換動作を示すオペレーション・コード(オペコード)フィールド202a、202b(例えば、ビット0~7および40~47)、第1のベクトル・レジスタを指定するために使用される第1のベクトル・レジスタ(V)フィールド204(例えば、ビット8~11)、第2のベクトル・レジスタを指定するために使用される第2のベクトル・レジスタ(V)フィールド206(例えば、ビット12~15)、第3のベクトル・レジスタを指定するために使用される第3のベクトル・レジスタ(V)フィールド208(例えば、ビット16~19)、第1のマスク(M)フィールド210(例えば、ビット24~27)、第2のマスク(M)フィールド212(例えば、ビット32~35)、およびレジスタ拡張ビット(RXB:register extension bit)フィールド214(例えば、ビット36~39)を含み、これらの各々が以下で説明される。1つの実施形態では、各フィールドは、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合され得る。これらのフィールドに関するさらなる情報が、以下で説明される。
【0043】
1つの実施形態では、ベクトル・レジスタ(V)フィールド204は、第1のオペランドを格納するベクトル・レジスタを示すために使用される。第1のオペランドは、10進数値をスケーリングして16進浮動小数点値に変換することによって取得された結果である。第2のオペランドは、ベクトル・レジスタ(V)フィールド206を使用して指定されたベクトル・レジスタに含まれ、例えば、符号付きパック10進数(例えば、31桁および符号を含んでいる、例えば、2進化10進数)であり、この符号付きパック10進数は、ベクトル・レジスタ(V)フィールド208を使用して指定されたベクトル・レジスタに含まれている第3のオペランドに含まれる符号なし整数を使用してスケーリングされる。
【0044】
1つの例では、ベクトル・レジスタ・フィールド204、206、208の各々は、ベクトル・レジスタを指定するために、RXBフィールド214と共に使用される。例えば、RXBフィールド214は、ベクトル・レジスタによって指定されたオペランドの最上位ビットを含む。命令によって指定されないレジスタ指定のビットは、予備になり、0に設定されることになる。最上位ビットは、例えば、ベクトル・レジスタ・フィールドの4ビットのレジスタ指定の左に連結されて、5ビットのベクトル・レジスタ指定を作成する。
【0045】
1つの例では、RXBフィールドが4つのビット(例えば、ビット0~3)を含んでおり、各ビットが次のように定義される。
0 -命令の第1のベクトル・レジスタ指定の最上位ビット(例えば、ビット8~11)。
1 -命令の第2のベクトル・レジスタ指定の最上位ビット(例えば、ビット12~15)(もしあれば)。
2 -命令の第3のベクトル・レジスタ指定の最上位ビット(例えば、ビット16~19)(もしあれば)。
3 -命令の第4のベクトル・レジスタ指定の最上位ビット(例えば、ビット32~35)(もしあれば)。
各ビットは、レジスタ番号に応じて、例えばアセンブラによって、0または1に設定される。例えば、レジスタ0~15の場合、ビットは0に設定され、レジスタ16~31の場合、ビットは1に設定される、などとなる。
【0046】
1つの実施形態では、各RXBビットは、1つまたは複数のベクトル・レジスタを含んでいる命令内の特定の位置の拡張ビットである。例えば、RXBのビット0は、例えばVに割り当てられる位置8~11の拡張ビットである、などとなる。具体的には、ベクトル・レジスタの場合、オペランドを含んでいるレジスタは、例えば、それに対応するレジスタ拡張ビット(RXB)を最上位ビットとして追加して、レジスタ・フィールドの4ビットのフィールドを使用して、指定される。例えば、4ビットのフィールドが0110であり、拡張ビットが0である場合、5ビットのフィールド00110がレジスタ番号6を示す。さらなる実施形態では、RXBフィールドが追加ビットを含み、ベクトルまたは位置ごとに、2つ以上のビットが拡張として使用される。
【0047】
1つの例では、第1のオペランドのサイズは、例えば、Mフィールド212で指定された浮動小数点形式制御によって選択される。Mフィールドは、オペランド1の16進浮動小数点形式を指定する。Mフィールドの予備の値が指定された場合、指定例外が認識される。Mフィールドの例示的な値は、例えば以下を含む。
【0048】
浮動小数点形式
【0049】
0~1 予備
【0050】
2 短形式
【0051】
3 長形式
【0052】
4 拡張形式
【0053】
5~15 予備
【0054】
特定の値および形式が例として提供されるが、より多い値もしくは形式またはその両方、より少ない値もしくは形式またはその両方、または他の値もしくは形式またはその両方、あるいはその組合せが使用され得る。
【0055】
1つの例では、Mフィールド210を使用して丸めモードが指定される。スケーリングされて変換された結果が、例えば、4ビットのMフィールドのビット3である、Mフィールド内の丸めモード制御によって指定されたとおりに、丸め技術によって丸められる。この制御(例えば、ビット)が例えば0である場合、変換された結果から取得された正規化された結果が切り詰められて、結果を形成する。この制御が例えば1である場合、正規化された結果が、0から遠い方の最も近い値に丸められる。正規化された結果は、例えば、拡張形式、長形式、および短形式の場合、それぞれ、1つの例では右側に1つのガード桁を含む、スケーリングされて変換された結果の29桁、15桁、または7桁の最上位16進数を含む(ガード桁は、例えば、正規化中に発生する加算、減算、比較、左シフトを含む特定の動作に関与するため、最終結果の精度を向上させ得る)。1が、正規化された結果のガード桁の左端のビットに加えられ、繰り上げが左に伝搬され、ガード桁が除去されて、結果の小数部を生成する。
【0056】
10進数スケーリングおよび16進浮動小数点への変換命令の1つの実施形態の実行では、第3のオペランドの選択された位置(例えば、バイト要素7)での符号なし整数を使用して、第2のオペランドがスケーリングされ、16進浮動小数点数に変換される。第2のオペランドに、例えば、10の、第3のオペランドのバイト要素7乗に等しいスケール係数が掛けられる。スケーリングされた結果が、例えば、16進浮動小数点値に変換される。第1のオペランドのサイズは、Mフィールド内の浮動小数点形式制御によって選択される。スケーリングされて変換された結果(例えば、正規化されて変換された結果)が、Mフィールド内で指定された丸め技術を使用して丸められる。M内で指定され丸めモード制御に基づいて、正規化されて変換された結果を丸めることによって取得された結果を、すべての形式について、例えばベクトル内の0から数えた要素に配置し、例えば他のすべての要素に0を配置して、結果が、第1のオペランドによって指定されたベクトル・レジスタ全体に配置される。
【0057】
結果の符号は、第2のオペランドが0である場合を除いて、第2のオペランドの符号コードに等しく、第2のオペランドが0である場合、結果は、正の真の0になるように強制される。真の0は、0の指数部および0の小数部を含む16進浮動小数点数である。
【0058】
1つの例では、第2のオペランドの桁および符号の妥当性がチェックされる。妥当性チェックが失敗した場合、一般オペランド・データ例外が認識される。
【0059】
本発明の1つまたは複数の態様に従って、10進数スケーリングおよび16進浮動小数点への変換命令の実行に基づく処理の1つの実施形態のさらなる詳細が、図3~6を参照して説明される。1つの例では、命令を実行するために、一般的なプロセッサ104などのプロセッサが使用される。一例として、命令を実行するために、プロセッサのハードウェアが使用される。ハードウェアは、プロセッサから命令を受信する目的で、プロセッサ内にあるか、またはプロセッサに結合されてよく、プロセッサは、例えば、ハードウェア上で実行するための命令を取得し、デコードし、設定する。他の変形が可能である。
【0060】
図3を参照すると、最初に、10進数スケーリングおよび16進浮動小数点への変換命令などの命令が取得され(例えば、フェッチされる、受信される、提供される、など)(300)、実行される(310)。この実行は、例えば、命令の第2のオペランドおよび第3のオペランドを取得すること(312)を含む。第2のオペランドは、例えば、(例えば、Vフィールド206を使用して)命令によって指定された位置(例えば、ベクトル・レジスタ)から取得された符号付きパック10進数であり、第3のオペランドは、例えば、(例えば、Vフィールド208を使用して)命令によって指定された位置(例えば、ベクトル・レジスタ)から取得された符号なし整数を含む。1つの例では、符号なし整数は、第3のオペランドのバイト要素7に位置する。
【0061】
第2のオペランド(例えば、Vを使用して取得された符号付きパック10進数)が、(例えば、Vを使用して取得された)第3のオペランドの例えばバイト要素7内の符号なし整数を使用してスケーリングされ、スケーリングされた結果を取得する(314)。
【0062】
1つの形式(例えば、2進化10進数としても知られている符号付きパック10進数などの10進数)であるスケーリングされた結果が、別の形式での変換された結果に変換される(316)。例えば、スケーリングされた10進数が16進浮動小数点数に変換される。本明細書において説明されるように、変換された結果から取得された結果が、第1のオペランドの位置(例えば、Vを使用して指定されたレジスタ)に配置される(320)。スケーリング、変換、および配置に関するさらなる詳細が、図4~6を参照して説明される。
【0063】
最初に図4を参照して、第2のオペランドのスケーリング(図3の314)を実行する1つの実施形態が説明される。1つの例では、(Vを使用して指定されたベクトル・レジスタに格納された)第3のオペランドの選択された部分(例えば、バイト要素7)の、スケール値と呼ばれる値が取得される(400)。値が有効であるかどうかに関する判定が行われる(410)。例えば、値が、事前に選択された値との既定の関係を持っているか(例えば、一例として、8などの事前に選択された値未満の値であるか?)どうかに関する判定が行われる。値が無効である場合、例えばエラーを伴って、処理が終了する。しかし値が有効である場合、処理は、値を使用してスケール係数を決定することを進める。例えば、スケール係数は10の値乗に等しい(415)。第2のオペランドにスケール係数が掛けられ、スケーリングされた結果を取得する(420)。1つの例では、第2のオペランドが符号付きパック10進数であるため、10の累乗によるスケーリングは、桁を左にシフトすることと同等である。スケーリングは、例えば、数値の特定の桁を分離して、例として、切り詰めるか、または丸めるための数値内の選択された位置を示すことによって、16進浮動小数点数への符号付きパック10進数の変換を容易にする。
【0064】
次に、1つの形式(例えば、10進数形式)であるスケーリングされた結果が、別の形式(例えば、16進浮動小数点形式)である変換された結果に変換される(図3の316)。この変換は、複数の技術を使用して実行され得る。1つの例では、10進数を16進数に変換するために、以下が実行される。
【0065】
10進数を16で割って、商および余りを求める。
【0066】
余りの16倍が、右端の桁から始まる16進数の1桁になる。
【0067】
商を16で割って、別の商および余りを求める。
【0068】
このプロセスが、余りの16倍から始めて、商が0になるまで繰り返す。
【0069】
10進数を16進数に変換するために上記の技術が使用されるが、他の技術が使用されてもよい。1つの例では、処理が実行される速度を改善して変換を容易にするために、ハードウェア論理が使用される。
【0070】
変換を実行するために使用されるハードウェア論理の1つの例が、図5を参照して説明される。図5を参照すると、1つの例では、2進化10進数500が論理に入力される。最初に、2進化10進数の左端の桁から始めて、最大で4桁までの2進化10進数が選択される(510)。選択された桁がカウンタ・ツリー520に入力され、カウンタ・ツリー520は、桁の冗長形式および方程式を使用して各桁を乗算する。1つの例では、この乗算は、数値をシフトすることによって実行され、2の累乗の各乗算が、数値のシフトになる。
【0071】
カウンタ・ツリーによって使用される方程式の1つの例は、次のとおりである。最初に、(X’+Y’)が0に設定され、カウンタ・ツリー内の前のループから生じる値を表し、A、B、C、Dは、2進化10進数(BCD:binary coded decimal)の数値の桁である。
【0072】
新しい合計=X+Y=(X’+Y’)*10000+A*1000+B*100+C*10+D
【0073】
=(X’+Y’)*(213+211-2+2
【0074】
+A*(2+2+2+2+2+2
【0075】
+B*(2+2+2
【0076】
+C*(2+2
【0077】
+D
【0078】
BCD数のすべての桁が処理されるまで、カウンタ・ツリー内で処理がループする。カウンタ・ツリー520の出力が、2:1加算器530に入力され、2:1加算器530は、中間の変換された結果(例えば、中間の16進浮動小数点数)を非冗長形式で提供する。加算器530の出力が16進正規化指数更新論理(hex normalize, update exponent logic)540に入力され、16進正規化指数更新論理540は、加算器の出力を正規化して指数を更新し、16進浮動小数点数を提供するために使用される。例えば、正規化は、基数点の右にあるすべての先行ゼロの桁を左にシフトして、それらの桁を除去し、シフトごとに1つずつ指数を減らす。
【0079】
本明細書では、8桁のBCD数に対する上記の処理の1つの特定の例が説明される。以下の例では、XおよびYの実際の値が実装に固有である(例えば、XおよびYは異なる値でよいが、それでも同じ合計を有する)ため、実装と無関係であるZが使用される。したがって、Z=X+Y、Z’=X’+Y’であり、Z’が0に初期化される。さらに、この例では、BCD=32610423であり、したがって、最初はA=3、B=2、C=6、D=1である。
【0080】
16進数値
【0081】
Z=0*(213+211-2+2) Z=x0
【0082】
+3*(2+2+2+2+2+2) +xBB8
【0083】
+2*(2+2+2) +xC8
【0084】
+6*(2+2) +x3C
【0085】
+1 +x1
【0086】
Z=0+3000+200+60+1=3261 Z=xCBD
【0087】
次は、A=0、B=4、C=2、D=3である。
【0088】
Z=3261*(213+211-2+2) Z=1F196D0
【0089】
+0*(2+2+2+2+2+2) +x0
【0090】
+4*(2+2+2) +x190
【0091】
+2*(2+2) +x14
【0092】
+3 +x3
【0093】
Z=32610000+400+20+3=32610423 Z=x1F19877
【0094】
16進浮動小数点数(本明細書では、変換された結果とも呼ばれる)が、結果を取得することにおいて使用され、この結果は、図6を参照して説明されるように、Vを使用して指定されたレジスタなどの第1のオペランドの位置に配置される(図3の320)。1つの実施形態では、選択された丸めモードが決定される(600)。例えば、Mで指定された丸めモード・インジケータが取得され、丸めモードを決定するために使用される。次に、変換された結果(例えば、変換された結果のバージョン)が、指定された丸めモードに基づいて丸められ、結果を取得する(602)。例えば、この制御(例えば、ビット)が例えば0である場合、変換された結果から取得された正規化された結果が切り詰められて、結果を形成する。この制御が例えば1である場合、正規化された結果が、0から遠い方の最も近い値に丸められる。正規化された結果は、例えば、拡張形式、長形式、および短形式の場合、それぞれ、1つの例では右側に1つのガード桁を含む、スケーリングされて変換された結果の29桁、15桁、または7桁の最上位16進数を含む。1が、正規化された結果のガード桁の左端のビットに加えられ、繰り上げが左に伝搬され、ガード桁が除去されて、結果の小数部を生成する。
【0095】
1つの例では、結果の符号も決定される(604)。例えば、結果の符号は、第2のオペランドが0である場合を除いて、第2のオペランドの符号コードに等しく、第2のオペランドが0である場合、結果は、正の真の0になるように強制される。真の0は、0の指数部および0の小数部を含む16進浮動小数点数である。
【0096】
さらに、1つの例では、第1のオペランドの形式が決定される(606)。例えば、選択された形式を決定するために、Mフィールドに格納された値が取得される。結果(例えば、スケーリングされ、変換され、正規化され、丸められた16進浮動小数点の結果)および符号が、選択された形式に基づいて、選択された位置(例えば、Vを使用して指定されたレジスタ)に配置される(608)。例えば、形式の各々について、結果を、例えばベクトル内の0から数えた要素で開始して配置し、例えば他のすべての要素に0を配置して、結果および符号が、第1のオペランドによって指定されたベクトル・レジスタ全体に配置される。
【0097】
10進数スケーリングおよび16進浮動小数点への変換命令の種々のフィールドおよびレジスタが説明されたが、本発明の1つまたは複数の態様は、他のより多いか、もしくはより少ないか、またはその両方のフィールドもしくはレジスタまたはその両方、または他のサイズのフィールドもしくはレジスタまたはその両方、あるいはその組合せなどを使用し得る。多くの変形が可能である。例えば、命令の明示的に指定されたレジスタもしくはフィールドまたはその両方の代わりに、暗黙のレジスタが使用されてよく、または暗黙のレジスタもしくはフィールドまたはその両方の代わりに、明示的に指定されたレジスタもしくはフィールドまたはその両方が使用されてよく、あるいはその組合せであってよい。他の変形も可能である。
【0098】
本明細書において説明されるように、1つの態様では、10進数をスケーリングして、スケーリングされた10進数を提供すること、およびスケーリングされた10進数を16進浮動小数点数に変換することを実行するために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたマシン命令(例えば、10進数スケーリングおよび16進浮動小数点への変換命令))が提供される。さらに、1つの実施形態では、単一の命令は、選択された丸めモードに基づいて、変換された結果(例えば、正規化されて変換された結果などの、変換された結果のバージョン)を丸めることもでき、または複数の可能な形式のうちの選択された形式に基づいて、結果をフォーマットすることもでき、あるいはその両方を実行できる。この命令は、例えば、1つの形式(例えば、10進数)での値を別の形式(例えば、16進浮動小数点数)での値に直接変換する、命令セット・アーキテクチャ(ISA)において定義されたハードウェア命令である。この変換は、例えば10進数から整数に変換し、整数から16進浮動小数点に変換するのではなく、例えば10進数から16進浮動小数点数に、直接変換する。例えば、2進化10進数の乗算またはシフトを実行し、2進化10進数を整数に変換し、整数を16進浮動小数点に変換するプログラムよりも、処理が高速であり、効率的である。スケーリング動作および変換動作を実行することに関連するプログラムの複雑さが軽減される。さらに、動作(したがって、プロセッサ)の性能が改善される。ハードウェア命令の実行は、実行時間を短縮し、性能を改善する。
【0099】
複数の命令ではなく、単一の命令を使用して、例えばスケーリングおよび変換(および任意選択的に、丸めまたは他の動作あるいはその両方)を実行することによって、ハードウェア/ソフトウェア・インターフェイスの複数の通過を必要としないことにより、性能が改善される。さらに、1つの命令の一部として処理を実行することによって、処理は、処理を完了する前にプロセッサのレジスタ・ファイルのレジスタ(すなわち、メモリと機能ユニット(例えば、浮動小数点処理ユニット)の間でデータを格納するために使用されるプロセッサ・レジスタのアレイ)の更新を必要とせず、動作を実行している処理ユニット(例えば、浮動小数点処理ユニット)内にとどまる。これによって、実行時間を改善し、プロセッサ・リソースの使用を減らす。
【0100】
さらなる態様では、16進浮動小数点値が10進数値(例えば、2進化10進数値)に変換される。この変換を提供するために、1つの例では、本明細書では16進浮動小数点からスケーリングされた10進数へのベクトル変換命令と呼ばれる単一の設計されたマシン命令が使用される。この単一の命令は、1つの命令を実行することの一部として、値を1つの形式(例えば、16進浮動小数点)から別の形式(例えば、2進化10進数などの10進数)での変換された結果に変換することと、変換された結果をスケーリングして、スケーリングされた結果(例えば、スケーリングされた10進数値)を提供することとを少なくとも実行する。
【0101】
変換動作およびスケーリング動作を少なくとも実行するために使用される16進浮動小数点からスケーリングされた10進数へのベクトル変換命令の1つの実施形態が、図7を参照して説明される。命令は、1つの例では、汎用プロセッサ(例えば、プロセッサ104)を使用して実行される。本明細書における説明では、フィールドの特定の位置、特定のフィールド、または特定のサイズ、あるいはその組合せが(例えば、特定のバイトまたはビットあるいはその両方で)示される。しかし、他の位置、フィールド、またはサイズ、あるいはその組合せが提供され得る。さらに、特定の値(例えば、1または0)へのビットの設定が指定されることがあるが、これは単なる例である。ビットは、他の例では、反対の値または別の値などの異なる値に設定されてよい。多くの変形が可能である。
【0102】
1つの例では、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令は、拡張されたオペレーション・コード(オペコード)と共にベクトル・レジスタおよびレジスタ動作を示すVRR-j形式を有する。この命令は、本明細書において説明されるように、例えば、ベクトル機能の一部である。
【0103】
図7に示されているように、1つの例では、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令700は複数のフィールドを含んでおり、フィールドには、下付きの数字が関連付けられていることがある。命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、ベクトル・レジスタVに関連付けられた下付きの数字1は、Vを使用して指定されたレジスタが第1のオペランドを含んでいることを示す、などとなる。レジスタのオペランドの長さは、1レジスタであり、例えば、128ビットである。
【0104】
1つの実施形態では、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令700は、入力データが例えば16進浮動小数点数であり、出力が例えば10進数(例えば、2進化10進数)である変換動作およびスケーリング動作を示すオペレーション・コード(オペコード)フィールド702a、702b(例えば、ビット0~7および40~47)、第1のベクトル・レジスタを指定するために使用される第1のベクトル・レジスタ(V)フィールド704(例えば、ビット8~11)、第2のベクトル・レジスタを指定するために使用される第2のベクトル・レジスタ(V)フィールド706(例えば、ビット12~15)、第3のベクトル・レジスタを指定するために使用される第3のベクトル・レジスタ(V)フィールド708(例えば、ビット16~19)、マスク(M)フィールド710(例えば、ビット24~27)、およびレジスタ拡張ビット(RXB)フィールド712(例えば、ビット36~39)を含み、これらの各々が以下で説明される。1つの実施形態では、各フィールドは、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合され得る。これらのフィールドに関するさらなる情報が、以下で説明される。
【0105】
1つの実施形態では、ベクトル・レジスタ(V)フィールド704は、第1のオペランドを格納するベクトル・レジスタを示すために使用される。第1のオペランドは、16進浮動小数点値を10進数値に変換し、10進数値をスケーリングして、スケーリングされた結果を提供し、スケーリングされた結果を使用して結果を取得することの結果である。第2のオペランドは、ベクトル・レジスタ(V)フィールド706を使用して指定されたベクトル・レジスタに含まれ、例えば、拡張精度16進浮動小数点数である。拡張精度16進浮動小数点数は、2進化10進数に変換され、この2進化10進数は、ベクトル・レジスタ(V)フィールド708を使用して指定されたベクトル・レジスタに含まれている第3のオペランドに含まれる符号なし整数を使用してスケーリングされる。1つの例では、ベクトル・レジスタ・フィールド704、706、708の各々は、本明細書において説明されるように、ベクトル・レジスタを指定するために、RXBフィールド712と共に使用される。
【0106】
1つの例では、Mフィールド710を使用して丸めモードが指定される。変換されてスケーリングされた結果が、例えば、4ビットのMフィールドのビット3である、Mフィールド内の丸めモード変更子によって指定されたとおりに、丸め技術によって丸められる。この制御(例えば、ビット)が例えば0である場合、スケーリングされた結果が切り詰められて、結果を形成する。このビットが例えば1である場合、スケーリングされた結果が、0から遠い方の最も近い値に丸められる。
【0107】
16進浮動小数点からスケーリングされた10進数へのベクトル変換命令の1つの実施形態の実行では、第2のオペランド(例えば、拡張精度16進浮動小数点数)が変換された結果(例えば、2進化10進数)に変換され、変換された結果が、スケーリングされてスケーリングされた結果を提供し、スケーリングされた結果が、例えば丸められて、結果(例えば、10進整数)を取得する。
【0108】
本発明の1つまたは複数の態様に従って、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令の実行に基づく処理の1つの実施形態のさらなる詳細が、図8~10を参照して説明される。1つの例では、命令を実行するために、一般的なプロセッサ104などのプロセッサが使用される。一例として、命令を実行するために、プロセッサのハードウェアが使用される。ハードウェアは、プロセッサから命令を受信する目的で、プロセッサ内にあるか、またはプロセッサに結合されてよく、プロセッサは、例えば、ハードウェア上で実行するための命令を取得し、デコードし、設定する。他の変形が可能である。
【0109】
図8を参照すると、最初に、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令令などの命令が取得され(例えば、フェッチされる、受信される、提供される、など)(800)、実行される(810)。この実行は、例えば、命令の第2のオペランドおよび第3のオペランドを取得すること(812)を含む。第2のオペランドは、例えば、(例えば、Vフィールド706を使用して)命令によって指定された位置(例えば、ベクトル・レジスタ)から取得された拡張精度16進浮動小数点数であり、第3のオペランドは、例えば、(例えば、Vフィールド708を使用して)命令によって指定された位置(例えば、ベクトル・レジスタ)から取得された符号なし整数を含む。1つの例では、符号なし整数は、第3のオペランドのバイト要素7に位置する。
【0110】
1つの形式(例えば、Vを使用して取得された拡張精度16進浮動小数点数)である第2のオペランドが、本明細書では変換された結果と呼ばれる別の形式(例えば、2進化10進数)に変換される(814)。変換された結果が、(例えば、Vを使用して取得された)第3のオペランドの例えばバイト要素7内の符号なし整数を使用してスケーリングされ、スケーリングされた結果を取得する(816)。スケーリングされた結果が、Mフィールド710内で指定された丸めモードに基づいて丸められ、丸められた結果(例えば、10進整数)を取得する(818)。丸められた結果から取得された結果は、第1のオペランドの位置(例えば、Vを使用して指定されたベクトル・レジスタ内)に配置される(820)。以下では、変換、スケーリング、および配置に関するさらなる詳細が説明される。
【0111】
示されるように、1つの形式(例えば、Vを使用して取得された拡張精度16進浮動小数点数)である第2のオペランドが、変換された結果と呼ばれる別の形式(例えば、2進化10進数)に変換される(図8の814)。この変換は、複数の技術を使用して実行され得る。1つの例では、この変換は、16進数を10進数に変換することを含む。そのような変換を実行するために、1つの例では、16進数の各桁と同等の10進数に16の累乗が掛けられ、この累乗は、右端の16進数の桁の0から始まり、次の桁ごとに1ずつ増える。例えば、16進数ABCを10進数に変換するには、C=12に16が掛けられ(12x1=12)、B=11に16が掛けられ(11x16=176)、A=10に16が掛けられる(10x256=2560)。次に、各乗算の結果が、12+176+2560=2748などのように、一緒に加算される。したがって、16進数ABCは、10進数における2748に等しい。
【0112】
さらに、小数部が存在する場合、1つの例では、小数部が次のように10進数に変換される。小数部の16進数の各桁と同等の10進数に16の負の累乗が掛けられ、この累乗は、ピリオドの後の左端の16進数の桁の-1から始まり、次の桁ごとに1ずつ増やされる。例えば、16進数.DEFを10進数に変換するには、D=13に16-1が掛けられ(13x0.0625=0.8125)、E=14に16-2が掛けられ(14x0.00390625=0.0546875)、F=15に16-3が掛けられる(15 x 0.0000244140625=0.87084960937)。次に、各乗算の結果が、0.8125+0.0546875+0.87084960937=0.87084960937などのように、一緒に加算される。したがって、16進数.DEFは、10進数における0.87084960937に等しい。
【0113】
1つの例では、整数値(例えば、2748)が、小数部の値(0.87084960937)と結合されて、xABC.DEFと同等の10進数である2748.87084960937の結果をもたらす。
【0114】
16進数を10進数に変換するために上記の技術が使用されるが、他の技術が使用されてもよい。1つの例では、処理が実行される速度を改善して変換を容易にするために、ハードウェア論理が使用される。
【0115】
変換を実行するために使用されるハードウェア論理の1つの例が、図9を参照して説明される。ハードウェア論理の理解を容易にするために、特定の例が示される。しかし、これは1つの例にすぎず、制限となるよう全く意図されていない。
【0116】
図9を参照すると、1つの例では、16進浮動小数点数(HFP:hexadecimalfloating point number)900が論理に入力される。特定の例として、入力される16進浮動小数点数はABC.DEFである。最初に、16進浮動小数点数が、16進浮動小数点の小数部912(例えば、.DEF)と16進浮動小数点の整数部(例えば、ABC)914に分割される(910)。小数部912および選択された値(例えば、10進数10=x5F5E100)が、カウンタ・ツリー920に入力される。カウンタ・ツリーは、x5F5E100に、小数部の冗長形式の小数桁を掛けて、結果を提供する。カウンタ・ツリー920の出力が、2:1加算器922に入力され、整数部および小数部を含んでいる非冗長積(non-redundant product)を提供する。例えば、加算器922の出力が530CFA0F00であり、この値が分割論理910に入力され、分割論理910は、この値を整数部530CFA0および小数部F00に分割し、この処理が繰り返す。
【0117】
整数部914(例えば、ABC)が、5のシフト量を伴って(例えば、00000ABC)、16進数から10進数への変換論理930に入力される。1つの例では、最上位桁から開始して、1サイクルごとに2桁の16進数が2進化10進数に変換され、8桁の16進数の変換は、4回のループを必要とする。例えば、整数部、S=0、H(i,i+1)=>Aの場合、例えば256を掛けるために、前の累算された合計が、8つの2進化10進数ダブラー(binary coded decimal doublers)(2x)を通過する。次に、変換された16進数が、古い合計*256に合計される(S’=S*256+A、i=i+2)。8桁の16進数の変換は、4回のループを必要とする。
【0118】
図に示されているように、16進数から10進数への変換論理930の出力、および前のループからの最大で8桁までの10進数934が、加算器932(例えば、2:1加算器)に入力される。与えられた特定の例の場合、2回目のループの後の加算器932の出力は2748.87084960である。加算器の最終的な出力が、最終的なシフト丸め論理936に入力される。1つの例では、10によるスケーリングおよび丸め機能が存在する。したがって、16進数におけるABC.DEFは、274887085の2進化10進数に変換される(10による2748.87084960のスケーリングおよび丸め=274887085)。
【0119】
要約すると、ABC.DEFなどの6桁の16進数および5のシフト量の場合、論理は次のように実行する。
【0120】
ABCがBCDに変換される=>2748
【0121】
DEFに10=5F5E100が掛けられる=>530CFA0.F00
【0122】
530CFA0がBCDに変換される=>87084960
【0123】
2748*10+87084960=274887084960
【0124】
1つの例では、10を掛けるときに、元の基数点が維持されるため、10-8を掛けて、10による乗算を相殺する。
【0125】
2748.87084960および10によるスケーリングおよび丸め=274887085。
【0126】
1つの例では、16進数を2進化10進数に変換した後に、変換された結果がスケーリングされる(図8の816)。例えば、図4を参照して説明されたように、(Vを使用して指定されたベクトル・レジスタに格納された)第3のオペランドの選択された部分(例えば、バイト要素7)の、スケール値と呼ばれる値が取得される(400)。値が有効であるかどうかに関する判定が行われる(410)。例えば、値が、事前に選択された値との既定の関係を持っているか(例えば、一例として、32などの事前に選択された値未満の値であるか?)どうかに関する判定が行われる。値が無効である場合、例えばエラーを伴って、処理が終了する。しかし値が有効である場合、処理は、値を使用してスケール係数を決定することを進める。例えば、スケール係数は10の値乗に等しい(415)。第2のオペランドにスケール係数が掛けられ、スケーリングされた結果を取得する(420)。1つの例では、10の累乗によるスケーリングは、シフト演算と同等である。スケーリングは、例えば、結果が小数である場合に、より多くの桁が変換されることを可能にすることによって、拡張精度16進浮動小数点数の変換を容易にする。
【0127】
1つの例では、変換されてスケーリングされた値が丸められて、丸められた結果を取得する(図8の818)。例えば、スケーリングされた結果が、例えば、4ビットのMフィールド710のビット3である、Mフィールド内の丸めモード変更子によって指定されたとおりに、丸め技術によって丸められる。この制御(例えば、ビット)が例えば0である場合、スケーリングされた結果が切り詰められて、結果を形成する。この制御が例えば1である場合、スケーリングされた結果が、0から遠い方の最も近い値に丸められる。丸められた結果から結果が取得される。例えば、丸められた結果の選択された部分が、結果(例えば、32桁の符号付きパック10進数などの10進数)として選択され、この結果が第1のオペランドの位置に配置される(図8の820)。
【0128】
配置の1つの実施形態に関するさらなる詳細が、図10を参照して説明される。1つの実施形態では、丸められた結果の部分(例えば、オーバーフローを無視した、10進整数の右端の31桁)が、10進整数の結果として選択される(1000)。さらに、1つの例では、結果の符号が決定される(1002)。例えば、結果の符号は、第2のオペランドが負の0である場合でも、第2のオペランドの符号に等しい。結果および符号が、第1のオペランドの位置に配置される(1004)。
【0129】
16進浮動小数点からスケーリングされた10進数へのベクトル変換命令の種々のフィールドおよびレジスタが説明されたが、本発明の1つまたは複数の態様は、他のより多いか、もしくはより少ないか、またはその両方のフィールドもしくはレジスタまたはその両方、または他のサイズのフィールドもしくはレジスタまたはその両方、あるいはその組合せなどを使用し得る。多くの変形が可能である。例えば、命令の明示的に指定されたレジスタもしくはフィールドまたはその両方の代わりに、暗黙のレジスタが使用されてよく、または暗黙のレジスタもしくはフィールドまたはその両方の代わりに、明示的に指定されたレジスタもしくはフィールドまたはその両方が使用されてよく、あるいはその組合せであってよい。他の変形も可能である。
【0130】
本明細書において説明されるように、1つの態様では、16進浮動小数点数を10進数に変換すること、および10進数をスケーリングして、スケーリングされた10進数を提供することを実行するために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたマシン命令(例えば、16進浮動小数点からスケーリングされた10進数へのベクトル変換命令))が提供される。さらに、1つの実施形態では、単一の命令は、選択された丸めモードに基づいて、変換されてスケーリングされた結果を丸めることもできる。この命令は、例えば、1つの形式(例えば、16進浮動小数点数)での値を別の形式(例えば、10進数)での値に直接変換する、命令セット・アーキテクチャ(ISA)において定義されたハードウェア命令である。この変換は、プログラムによって実行されるように、例えば16進浮動小数点数から整数に変換し、整数から10進数に変換するのではなく、例えば16進浮動小数点数から10進数に、直接変換する。したがって、処理がより高速かつ効率的になり、変換動作およびスケーリング動作を実行することに関連するプログラムの複雑さが軽減される。さらに、動作(したがって、プロセッサ)の性能が改善される。ハードウェア命令の実行は、実行時間を短縮し、性能を改善する。
【0131】
複数の命令ではなく、単一の命令を使用して、例えば変換動作およびスケーリング動作(および任意選択的に、丸め)を実行することによって、ハードウェア/ソフトウェア・インターフェイスの複数の通過を必要としないことにより、性能が改善される。さらに、1つの命令の一部として処理を実行することによって、処理は、処理を完了する前にプロセッサのレジスタ・ファイルのレジスタ(すなわち、メモリと機能ユニット(例えば、浮動小数点処理ユニット)の間でデータを格納するために使用されるプロセッサ・レジスタのアレイ)の更新を必要とせず、動作を実行している処理ユニット(例えば、浮動小数点処理ユニット)内にとどまる。これによって、実行時間を改善し、プロセッサ・リソースの使用を減らす。
【0132】
本発明の1つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。少なくとも、10進数(例えば、2進化10進数)のスケーリングを実行して、スケーリングされた10進数を取得すること、スケーリングされた10進数を16進浮動小数点数に変換すること、および任意選択的に、丸めを実行することのために、単一の設計されたマシン命令を使用して、複雑さを軽減し、リソースの使用を減らし、処理速度を上げることによって、コンピューティング環境内の性能を改善する。さらに、16進浮動小数点数を10進数(例えば、2進化10進数)に変換すること、および10進数をスケーリングしてスケーリングされた10進数を取得すること(および1つの実施形態では、結果を丸めること、または他の動作を実行すること、あるいはその両方)のために、単一の設計されたマシン命令を使用して、複雑さを軽減し、リソースの使用を減らし、処理速度を上げることによって、コンピューティング環境内の性能を改善する。データまたは命令あるいはその両方は、コンピュータ処理、医用処理、設計、自動車技術、製造などの多くの技術分野で使用され得る。データの変換において最適化を実現することによって、実行時間を削減することにより、これらの技術分野が改善される。
【0133】
コンピューティング環境内の処理が、本発明の1つまたは複数の態様に関連しているとき、その処理を容易にする実施形態のさらなる詳細が、図11A~11Cを参照して説明される。
【0134】
図11Aを参照すると、1つの実施形態では、変換動作およびスケーリング動作を実行するための命令が実行される(1100)。命令を実行することは、入力値を1つの形式から変換して、変換された結果を別の形式で提供すること(1102)と、変換された値をスケーリングして、スケーリングされた結果を提供すること(1104)と、スケーリングされた結果から取得された結果を選択された位置に配置すること(1106)とを含む。
【0135】
単一の命令を使用して、変換動作およびスケーリング動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、変換動作およびスケーリング動作を実行することによって、変換動作およびスケーリング動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。変換動作およびスケーリング動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0136】
1つの例では、1つの形式が16進浮動小数点形式であり、他の形式が10進数形式である(1108)。一例として、10進数形式は2進化10進数形式である(1110)。
【0137】
1つの例では、スケーリングすることは、スケール係数を決定すること(1112)と、変換された結果をスケーリングすることにおいてスケール係数を使用して、スケーリングされた結果を提供すること(1114)とを含む。スケール係数を決定することは、例えば、命令のオペランドを使用してスケール値を取得すること(1116)と、スケール値を使用してスケール係数を決定すること(1118)とを含む。スケール係数を使用することは、変換された結果にスケール係数を掛けて、スケーリングされた結果を取得することを含む(1120)。
【0138】
スケーリングすることは、例えば、数値の特定の桁を分離して、例として、切り詰めるか、または丸めるための数値内の選択された位置を示す。
【0139】
1つの例では、11Bを参照すると、実行することが、スケーリングされた結果を丸めて、丸められた結果を提供することをさらに含む(1130)。例えば、丸めることは、命令のフィールドを使用して丸めモードを取得すること(1132)と、丸めモードに基づいて、スケーリングされた結果を丸められた結果に丸めること(1134)とを含む。
【0140】
単一の命令を使用して、少なくとも変換動作、スケーリング動作、および丸め動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、変換動作、スケーリング動作、および丸め動作を実行することによって、変換動作、スケーリング動作、および丸め動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。変換動作、スケーリング動作、および丸め動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0141】
1つの例では、配置することは、丸められた結果の部分を結果として選択すること(1136)と、結果を選択された位置に配置すること(1138)とを含む。1つの例では、結果の符号が決定され(1140)、結果の符号が選択された位置に配置される(1142)。選択された位置は、例えば、命令のフィールドを使用して指定されたレジスタを含む(1144)。
【0142】
別の態様では、図11Cを参照すると、1つの実施形態において、スケーリング動作および変換動作を実行するための命令が実行される(1150)。命令を実行することは、例えば、1つの形式での入力値をスケーリングして、スケーリングされた結果を提供すること(1152)と、スケーリングされた結果を1つの形式から変換して、変換された結果を別の形式で提供すること(1154)と、変換された結果から取得された結果を選択された位置に配置すること(1156)とを含む。
【0143】
単一の命令を使用して、少なくともスケーリング動作および変換動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、スケーリング動作および変換動作を実行することによって、スケーリング動作および変換動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。スケーリング動作および変換動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0144】
1つの例では、命令を実行することは、変換された結果のバージョンを丸めて、丸められた結果を提供することをさらに含み(1160)、丸められた結果を使用して結果が取得される(1162)。
【0145】
単一の命令を使用して、少なくともスケーリング動作、変換動作、および丸め動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、スケーリング動作、変換動作、および丸め動作を実行することによって、スケーリング動作、変換動作、および丸め動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。スケーリング動作、変換動作、および丸め動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
【0146】
一例として、選択された位置は、命令のフィールドを使用して指定されたレジスタであり(1170)、結果を選択された位置に配置することは、結果の形式を決定すること(1172)と、この形式に基づいて、結果をレジスタに配置すること(1174)とを含む。
【0147】
他の変形および実施形態が可能である。
【0148】
本発明の態様は、多くの種類のコンピューティング環境によって使用され得る。本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例が、図12Aを参照して説明される。一例として、図12Aのコンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)ハードウェア・アーキテクチャに基づく。しかし、z/Architectureハードウェア・アーキテクチャは、1つの例示的なアーキテクチャにすぎない。さらに、コンピューティング環境は、Intel(R)x86アーキテクチャ、International Business Machines Corporationの他のアーキテクチャ、または他の企業のアーキテクチャ、あるいはその組合せを含むが、これらに限定されない、他のアーキテクチャに基づいてよい。Intelは、米国および他の国における、Intel Corporationまたはその子会社の商標または登録商標である。
【0149】
1つの例では、コンピューティング環境10は中央電子回路複合体(CEC:centralelectronics complex)11を含む。中央電子回路複合体11は、例えば、1つまたは複数のプロセッサ(中央処理装置(CPU)とも呼ばれる)13および入出力(I/O)サブシステム14に結合されたメモリ12(システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、ストレージとも呼ばれる)などの、複数のコンポーネントを含んでいる。
【0150】
I/Oサブシステム14は、中央電子回路複合体の一部であるか、または中央電子回路複合体から分離することができる。I/Oサブシステム14は、主記憶装置12と、中央電子回路複合体に結合された入出力制御ユニット15および入出力(I/O)デバイス16との間の情報の流れを方向付ける。
【0151】
多くの種類のI/Oデバイスが使用され得る。1つの特定の種類は、データ・ストレージ・デバイス17である。データ・ストレージ・デバイス17は、1つまたは複数のプログラム18、1つまたは複数のコンピュータ可読プログラム命令19、またはデータ、あるいはその組合せなどを格納することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
【0152】
中央電子回路複合体11は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなにコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であることができる。例えば、中央電子回路複合体11は、取り外し不可、不揮発性の磁気媒体(典型的には、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りおよび書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であることができる。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、中央電子回路複合体11と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0153】
さらに、中央電子回路複合体11は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用され得る。中央電子回路複合体11での使用に適した周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0154】
中央電子回路複合体11は、1つまたは複数の実施形態では、論理分割または仮想化あるいはその両方のサポートを提供する。1つの実施形態では、図12Bに示されているように、メモリ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の商標または登録商標である。
【0155】
各論理パーティション20は、別々のシステムとして機能することができる。すなわち、各論理パーティションは、独立してリセットされて、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/OS(R)オペレーティング・システムなどのゲスト・オペレーティング・システム23、または結合機能制御コード(CFCC:coupling facility control code)などの他の制御コード24を実行し、異なるプログラム25と共に動作することができる。論理パーティション内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/OSオペレーティング・システムが例として提供されているが、本発明の1つまたは複数の態様に従って、International Business Machines Corporationまたは他の企業あるいはその両方によって提供される他のオペレーティング・システムが使用され得る。
【0156】
メモリ12は、論理パーティションに割り当てられる物理プロセッサ・リソースであるCPU13(図12A)に結合される。例えば、論理パーティション20は、1つまたは複数の論理プロセッサを含み、それらの論理プロセッサの各々は、論理パーティションに動的に割り当てられる物理プロセッサ・リソース13の全部または一部を表す。
【0157】
さらに別の実施形態では、中央電子回路複合体は、(論理分割をサポートするか、またはサポートしない)仮想マシンのサポートを提供する。図12Cに示されているように、中央電子回路複合体11のメモリ12は、例えば、1つまたは複数の仮想マシン26、仮想マシンを管理する仮想マシン・マネージャ(ハイパーバイザ27など)、およびプロセッサ・ファームウェア28を含んでいる。ハイパーバイザ27の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/VM(R)ハイパーバイザである。ハイパーバイザは、ホストと呼ばれることがある。z/VMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0158】
中央電子回路複合体の仮想マシンのサポートは、多数の仮想マシン26を動作させることができるようにし、各仮想マシン26は、異なるプログラム29で動作し、Linux(R)オペレーティング・システムなどのゲスト・オペレーティング・システム30を実行することができる。各仮想マシン26は、別々のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲスト・オペレーティング・システムを実行し、異なるプログラムで動作することができる。仮想マシン内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/VMおよびLinuxが例として提供されているが、本発明の1つまたは複数の態様に従って、他の仮想マシン・マネージャまたはオペレーティング・システムあるいはその両方が使用され得る。Linux Foundation(世界規模での商標の所有者であるLinus Torvaldsの専用実施権者)からのサブライセンスに従って、登録商標Linux(R)が使用される。
【0159】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図13Aを参照して説明される。この例では、コンピューティング環境36は、例えば、1つまたは複数のバス40または他の接続あるいはその両方を介して互いに結合された、ネイティブ中央処理装置(CPU)37、メモリ38、および1つまたは複数の入出力デバイスまたはインターフェイスあるいはその両方39を含む。例として、コンピューティング環境36は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるPowerPC(R)プロセッサ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるインテル(R)Itanium(R)IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、インテル社、Oracle社、もしくは他の企業、またはその組合せによって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。PowerPCは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。Itaniumは、米国および他の国における、インテル社またはその子会社の商標または登録商標である。
【0160】
ネイティブ中央処理装置37は、環境内で処理中に使用される1つもしくは複数の汎用レジスタまたは1つもしくは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ41を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【0161】
さらに、ネイティブ中央処理装置37は、メモリ38に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ38に格納されたエミュレータ・コード42を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード42は、z/Architectureハードウェア・アーキテクチャ以外のアーキテクチャに基づくマシン(PowerPCプロセッサ、HP Superdomeサーバなど)が、z/Architectureハードウェア・アーキテクチャをエミュレートし、z/Architectureハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
【0162】
エミュレータ・コード42に関連するさらなる詳細が、図13Bを参照して説明される。メモリ38に格納されたゲスト命令43は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命令43は、z/Architectureハードウェア・アーキテクチャに基づくプロセッサ上で実行するように設計されるが、代わりに、例えばインテルItanium IIプロセッサであってよい、ネイティブCPU37上でエミュレートされる。1つの例では、エミュレータ・コード42は、メモリ38から1つまたは複数のゲスト命令43を取得するため、および取得された命令のローカル・バッファリングを任意選択的に提供するための命令フェッチ・ルーチン44を含む。エミュレータ・コード42は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令46に変換するための命令変換ルーチン45も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
【0163】
さらに、エミュレータ・コード42は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返し得る。ネイティブ命令46の実行は、データをメモリ38からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、または変換ルーチンによって決定された任意の種類の算術演算もしくは論理演算を実行することを含んでよい。
【0164】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用して、またはメモリ38内の位置を使用することによって、エミュレートされ得る。実施形態では、ゲスト命令43、ネイティブ命令46、およびエミュレータ・コード42は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配され得る。
【0165】
エミュレートされる例示的な命令は、本発明の1つまたは複数の態様に従って、本明細書に記載された10進数スケーリングおよび16進浮動小数点への変換命令および16進浮動小数点からスケーリングされた10進数へのベクトル変換命令である。
【0166】
前述されたコンピューティング環境は、使用可能なコンピューティング環境の例にすぎない。分割されない環境、分割された環境、クラウド環境、またはエミュレートされた環境、あるいはその組合せを含むが、これらに限定されない、他の環境が使用されてよく、実施形態はいずれか1つの環境に限定されない。本明細書ではコンピューティング環境のさまざまな例が説明されるが、本発明の1つまたは複数の態様が、多くの種類の環境と共に使用され得る。本明細書で提供されるコンピューティング環境は、例にすぎない。
【0167】
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成されることが可能である。
【0168】
1つまたは複数の態様がクラウド・コンピューティングに関連し得る。
【0169】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された教示の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
【0170】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
【0171】
特徴は、次のとおりである。
【0172】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0173】
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0174】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できることがある。
【0175】
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0176】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
【0177】
サービス・モデルは、次のとおりである。
【0178】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0179】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0180】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0181】
デプロイメント・モデルは、次のとおりである。
【0182】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0183】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0184】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0185】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データおよびアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0186】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0187】
ここで図14を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード52を含んでいる。ノード52は、互いに通信し得る。ノード52は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはこれらの組合せなどに、物理的または仮想的にグループ化され得る(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図14に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0188】
ここで図15を参照すると、クラウド・コンピューティング環境50(図14)によって提供される機能的抽象レイヤのセットが示されている。図15に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0189】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0190】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0191】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当ておよび管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0192】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されるワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、ならびにスケーリングおよび変換、または変換およびスケーリング、あるいはその両方(および丸め処理)96が挙げられる。
【0193】
本発明の態様は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0194】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-onlymemory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmableread-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
【0195】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せ)を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0196】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上もしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)もしくは広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路をカスタマイズし得る。
【0197】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装されるということが理解されるであろう。
【0198】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【0199】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0200】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表し得る。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生し得る。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実現されるか、同時に実行されるか、時間的に部分的もしくは完全に重複する方法で実質的に同時に実行されるか、または場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装されるということにも注意する。
【0201】
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【0202】
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされ得る。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
【0203】
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
【0204】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供され得る。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
【0205】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、1つまたは複数の態様を組み込むため、または1つまたは複数の態様を使用するため、あるいはその両方のために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、さまざまな命令または動作が使用され得る。さらに、さまざまな種類のレジスタまたは異なるレジスタあるいはその両方が使用され得る。多くの変形が可能である。
【0206】
本明細書では、さまざまな態様が説明される。さらに、本発明の態様の思想から逸脱することなく、多くの変形が可能である。本明細書に記載された各態様または特徴およびその変形を、特に矛盾しない限り、任意の他の態様または特徴と組み合わせることができるということに、注意するべきである。
【0207】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【0208】
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタもしくはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【0209】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【0210】
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図11C
図12A
図12B
図12C
図13A
図13B
図14
図15
【手続補正書】
【提出日】2023-09-03
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、コンピュータに、
変換動作およびスケーリング動作を実行するための命令を実行させ、前記命令を前記実行させることが、
入力値を1つの形式から変換して、変換された結果を他の形式で提供することと、
前記変換された結果をスケーリングして、スケーリングされた結果を提供することと、
前記スケーリングされた結果から取得された結果を選択された位置に配置することとを含む、コンピュータ・プログラム製品。
【請求項2】
前記1つの形式が16進浮動小数点形式であり、前記他の形式が10進数形式である、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記10進数形式が2進化10進数形式である、請求項2に記載のコンピュータ・プログラム製品。
【請求項4】
前記スケーリングすることが、
スケール係数を決定することと、
前記変換された結果をスケーリングすることにおいて前記スケール係数を使用して、前記スケーリングされた結果を提供することとを含む、請求項1ないし3のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項5】
前記スケール係数を前記決定することが、
前記命令のオペランドを使用してスケール値を取得することと、
前記スケール値を使用して前記スケール係数を決定することとを含み、
前記スケール係数を前記使用することが、前記変換された結果に前記スケール係数を掛けて、前記スケーリングされた結果を取得することを含む、請求項4に記載のコンピュータ・プログラム製品。
【請求項6】
前記命令を前記実行することが、前記スケーリングされた結果を丸めて、丸められた結果を提供することをさらに含む、請求項1ないし5のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項7】
前記丸めることが、
前記命令のフィールドを使用して丸めモードを取得することと、
前記丸めモードに基づいて、前記スケーリングされた結果を前記丸められた結果に丸めることとを含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項8】
前記配置することが、
前記丸められた結果の部分を前記結果として選択することと、
前記結果を前記選択された位置に配置することとを含む、請求項7に記載のコンピュータ・プログラム製品。
【請求項9】
前記命令を前記実行することが、
前記結果の符号を決定することと、
前記結果の前記符号を前記選択された位置に配置することとをさらに含む、請求項1ないし8のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項10】
前記選択された位置が、前記命令のフィールドを使用して指定されたレジスタを含む、請求項1ないし9のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項11】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを備え、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
変換動作およびスケーリング動作を実行するための命令を実行することを含み、前記命令を前記実行することが、
入力値を1つの形式から変換して、変換された結果を別の形式で提供することと、
前記変換された結果をスケーリングして、スケーリングされた結果を提供することと、
前記スケーリングされた結果から取得された結果を選択された位置に配置することとを含む、コンピュータ・システム。
【請求項12】
前記スケーリングすることが、
スケール係数を決定することと、
前記変換された結果をスケーリングすることにおいて前記スケール係数を使用して、前記スケーリングされた結果を提供することとを含む、請求項11に記載のコンピュータ・システム。
【請求項13】
前記命令を前記実行することが、前記スケーリングされた結果を丸めて、丸められた結果を提供することをさらに含む、請求項11または12に記載のコンピュータ・システム。
【請求項14】
前記丸めることが、
前記命令のフィールドを使用して丸めモードを取得することと、
前記丸めモードに基づいて、前記スケーリングされた結果を前記丸められた結果に丸めることとを含む、請求項13に記載のコンピュータ・システム。
【請求項15】
前記配置することが、
前記丸められた結果の部分を前記結果として選択することと、
前記結果を前記選択された位置に配置することとを含む、請求項14に記載のコンピュータ・システム。
【請求項16】
コンピュータの情報処理により、コンピューティング環境内の処理を容易にする方法であって、前記方法が、
変換動作およびスケーリング動作を実行するための命令を実行することを含み、前記命令を前記実行することが、
入力値を1つの形式から変換して、変換された結果を他の形式で提供することと、
前記変換された結果をスケーリングして、スケーリングされた結果を提供することと、
前記スケーリングされた結果から取得された結果を選択された位置に配置することとを含む、方法。
【請求項17】
前記スケーリングすることが、
スケール係数を決定することと、
前記変換された結果をスケーリングすることにおいて前記スケール係数を使用して、前記スケーリングされた結果を提供することとを含む、請求項16に記載の方法。
【請求項18】
前記命令を前記実行することが、前記スケーリングされた結果を丸めて、丸められた結果を提供することをさらに含む、請求項16または17に記載の方法。
【請求項19】
前記丸めることが、
前記命令のフィールドを使用して丸めモードを取得することと、
前記丸めモードに基づいて、前記スケーリングされた結果を前記丸められた結果に丸めることとを含む、請求項18に記載の方法。
【請求項20】
前記配置することが、
前記丸められた結果の部分を前記結果として選択することと、
前記結果を前記選択された位置に配置することとを含む、請求項19に記載の方法。
【請求項21】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、コンピュータに、
スケーリング動作および変換動作を実行するための命令を実行させ、前記命令を前記実行させることが、
1つの形式での入力値をスケーリングして、スケーリングされた結果を提供することと、
前記スケーリングされた結果を前記1つの形式から変換して、変換された結果を他の形式で提供することと、
前記変換された結果から取得された結果を選択された位置に配置することとを含む、コンピュータ・プログラム製品。
【請求項22】
前記1つの形式が10進数形式であり、前記他の形式が16進浮動小数点形式である、請求項21に記載のコンピュータ・プログラム製品。
【請求項23】
前記10進数形式が2進化10進数形式である、請求項22に記載のコンピュータ・プログラム製品。
【請求項24】
前記命令を前記実行することが、前記変換された結果のバージョンを丸めて、丸められた結果を提供することをさらに含み、前記丸められた結果を使用して前記結果が取得される、請求項21ないし23のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項25】
前記選択された位置が、前記命令のフィールドを使用して指定されたレジスタであり、前記結果を前記選択された位置に前記配置することが、
前記結果の形式を決定することと、
前記形式に基づいて前記結果を前記レジスタに配置することとを含む、請求項24に記載のコンピュータ・プログラム製品。
【国際調査報告】