JP2019532415A - 実行符号演算10進命令 - Google Patents

実行符号演算10進命令 Download PDF

Info

Publication number
JP2019532415A
JP2019532415A JP2019514243A JP2019514243A JP2019532415A JP 2019532415 A JP2019532415 A JP 2019532415A JP 2019514243 A JP2019514243 A JP 2019514243A JP 2019514243 A JP2019514243 A JP 2019514243A JP 2019532415 A JP2019532415 A JP 2019532415A
Authority
JP
Japan
Prior art keywords
instruction
computer
sign
code
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019514243A
Other languages
English (en)
Other versions
JP7021408B2 (ja
Inventor
コープランド、レイド
ミュラー、シルヴィア、メリッタ
ブラッドベリー、ジョナサン
スリゲル、ティモシー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019532415A publication Critical patent/JP2019532415A/ja
Application granted granted Critical
Publication of JP7021408B2 publication Critical patent/JP7021408B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】実行符号演算10進命令のためのコンピュータ実装方法、コンピュータ・システム、およびコンピュータ・プログラムを提供する。【解決手段】命令を取得する。命令は、この命令のために構成された複数の符号演算のうちの符号演算を実行するものである。命令が実行され、命令の実行は、選択された場所に結果として入れられる、入力オペランドの少なくとも一部を選択することを含む。選択は命令の制御に基づき、制御は結果として選択される入力オペランドのユーザ定義サイズを示す。命令の制御に基づいて求められ、選択された値に対する第1の特定の関係または第2の特定の関係を有する結果の値、を含む複数の基準に基づいて、結果の符号が決定される。結果と符号とは、コンピューティング環境内での処理において使用される符号付き出力を提供するために、選択された場所に格納される。【選択図】図5

Description

1つまたは複数の態様は、一般には、コンピューティング環境内での処理に関し、詳細には、そのような処理を向上させることに関する。
コンピューティング環境のプロセッサ内で実行されるアプリケーションは、プロセッサの動作を制御する。アプリケーションは、プロセッサに命令を伝達するように設計されたプログラミング言語を使用して作成される。様々な種類のプログラミング言語があり、各言語は1つまたは複数の種類のエンコードを使用してデータを表す。
例えば、2進化10進数(BCD)は、プログラミング言語COBOLおよびPL/Iにおけるネイティブのデータ型エンコードであり、DB2データベース管理システムにおいてもサポートされているデータ型でもある。言語およびクラス・ライブラリ拡張により、CおよびJava(R)などの他の言語もある種の形態のBCDデータ型をサポートする。JavaおよびJavaベースのすべての商標およびロゴは、オラクルまたはその系列会社あるいはその両方の商標または登録商標である。
1つの演算BCD型であるパック10進数は、4桁の符号コードがエンコードされる最下位バイトの最下位4ビットを除き、記憶域の4ビットごとにエンコードされた1つの10進数字を指定するエンコードを有する。符号コードは、16進数値0xAないし0xFまでにわたる任意の非数値4ビット値とすることができる。例えば、値+123は、記憶域の2バイトにおいて16進数123Cとしてエンコードすることができる。
表示BCD型であるゾーン10進数も、この種の符号エンコードを共有する。ゾーン10進数における値+123は、記憶域の3バイトにおいて16進数F1F2C3としてエンコードされる。符号コードは、最下位バイトの最上位4ビットをオーバーレイする。
符号コードの符号値に対するマッピングは以下の通りである。
0xA:+
0xB:−
0xC:+(選択されたプラス・エンコード)
0xD:−(選択されたマイナス・エンコード)
0xE:+
0xF:+(選択された符号なしエンコード)
前述のように、特定の符号コードが標準エンコードまたは選択エンコードとして指示される。これは、入力においてこれらの符号のいずれも受け付けられるが、コンパイラ生成コードは出力において、選択されたエンコードのみを生成する必要がある(すなわち、そのデータ型がどのように宣言されたかによって、符号付き変数は0xCまたは0xDを使用し、符号なし変数は0xFを使用する)ことを意味する。
符号なし変数は「符号がない」のではなく、入力において任意の符号を(マイナス・エンコードでも)有することができるが、言語規則を遵守するために、コンパイラ生成コードは出力において式のために(演算式に加えて単純な移動を含み、また比較の前に)0xF符号コードを生成する必要がある。
"z/Architecture Principles of Operation," IBM(R) Publication No. SA22-7832-10, March 2015 "Power ISA(TM) Version 2.07B," International Business Machines Corporation, April 9, 2015
出力データの符号演算を行うために、複数の命令が使用される。コンパイラにとっての課題は、符号付きおよび符号なし変数型と演算(例えば、移動、補数、否定、絶対値)との多くの組合せについての夥しい数の可能なエンコードに対応するためにいかに効率的にコードを生成するかである。
ハードウェア設計の関連課題は、命令エンコードの制限内に収まるように、また、多くの既存および将来の命令を使用するアーキテクチャにおける可能な演算エンコードの固定したセットを損なわないように、これらのすべての様々な可能性をいかにコンパクトにエンコードするかである。
BCD変数は従来、記憶域間(storage to storage:SS)命令によって演算が行われるため、符号コードの設定は、最新のアウト・オブ・オーダー(out of order:OOO)プロセッサの速度を低下させる可能性のある追加のイン・メモリ演算を必要とすることが多い。
もう1つの課題は、例外ケースにおける互換性のある結果の生成に対してどのように反応するかである。例えば、1つの言語または環境が、入力符号コードが正当でない(例えば、符号なし変数の符号コード位置にある数字)場合にハードウェア例外が常に必要であると指示していることがあるが、他の場合では厳密な互換性をもたせるために不当なエンコードを無視して単に符号なしとして(符号なし変数の場合には値が+か−かが実際には問題ではないため)扱うことを要求することがある。
したがって、当技術分野では、上記の問題に対処する必要がある。
第1の態様から見ると、本発明は、コンピューティング環境内での処理を容易にするコンピュータ実装方法であって、実行のために命令を取得することであり、命令は、この命令のために構成された複数の符号演算のうちの符号演算を実行するものである、前記取得することと、前記命令を実行することと、を含み、前記実行することは、選択された場所に結果として入られる入力オペランドの少なくとも一部を前記命令の制御に基づいて選択することであり、前記命令の前記制御は、前記結果として選択される前記入力オペランドのユーザ定義サイズを示す、前記選択することと、前記命令の前記制御に基づいて求められ、選択された値に対する第1の特定の関係または第2の特定の関係を有する、前記結果の値、を含む複数の基準に基づいて、前記結果の符号を決定することと、前記コンピューティング環境内での処理において使用される符号付き出力を提供するために、前記選択された場所に前記結果と前記符号とを格納することとを含む、コンピュータ実装方法を提供する。
さらに他の態様から見ると、本発明は、コンピューティング環境内での処理を容易にするためのコンピュータ・システムであって、メモリと、前記メモリと通信するプロセッサと、を含み、前記コンピュータ・システムは、方法を実行するように構成されており、前記方法は、実行のために命令を取得することであり、前記命令は、前記命令のために構成された複数の符号演算のうちの符号演算を実行するものである、前記取得することと、前記命令を実行することとを含み、前記実行することは、選択された場所に結果として入られる入力オペランドの少なくとも一部を前記命令の制御に基づいて選択することであり、前記命令の前記制御は、前記結果として選択される前記入力オペランドのユーザ定義サイズを示す、前記選択することと、前記命令の前記制御に基づいて求められ、選択された値に対する第1の特定の関係または第2の特定の関係を有する、前記結果の値、を含む複数の基準に基づいて、前記結果の符号を決定することと、前記コンピューティング環境内での処理において使用される符号付き出力を提供するために、前記選択された場所に前記結果と前記符号とを格納することとを含む、コンピュータ・システムを提供する。
さらに他の態様から見ると、本発明は、コンピューティング環境内での処理を容易にするためのコンピュータ・プログラム製品であって、処理回路によって読み取り可能なコンピュータ可読記憶媒体であり、本発明のステップを実行するための方法を実行するための、前記処理回路による実行のための命令を記憶する前記コンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品を提供する。
さらに他の態様から見ると、本発明は、コンピュータ可読媒体に記憶され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されると本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
さらに他の態様から見ると、本発明は、コンピュータ可読媒体に記憶され、本発明のシステムの内部メモリにロードされるコンピュータ・プログラムであって、前記プログラムが前記システム上で実行されると、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
コンピューティング環境における処理を容易にするためのコンピュータ・プログラム製品の提供により、従来技術の欠点が克服され、追加の利点がもたらされる。コンピュータ・プログラム製品は、処理回路によって読み取り可能な記憶媒体であり、方法を実行するために処理回路による実行のための命令を記憶する記憶媒体を含む。この方法は、例えば、実行のために命令を取得することを含み、命令は、この命令のために構成された複数の符号演算のうちの符号演算を実行するものである。命令は実行され、実行は、結果として選択された場所に入れられる入力オペランドの少なくとも一部を選択することを含む。選択は、命令の制御に基づき、命令の制御は、結果として選択される入力オペランドのユーザ定義サイズを示す。結果の符号は、命令の制御に基づいて取得される、選択された値に対して第1の特定の関係または第2の特定の関係を有する結果の値、を含む複数の基準に基づいて決定される。結果と符号とは、コンピューティング環境内での処理で使用される符号付き出力を提供するために、選択された場所に格納される。
符号演算を実行するために複数の命令ではなく単一の命令(例えばアーキテクテッド・マシン命令)を使用することによって、フェッチされ、デコードされ、実行される命令の数を削減するとともに、システムの処理およびパフォーマンスを向上させる。
例として、第1の特定の関係は等しいことであり、第2の特定の関係は等しくないことであり、選択された値はゼロである。
一実施形態では、入力オペランドの少なくとも一部は入力オペランドの選択桁数を含み、選択桁数は命令の制御によって指定される。例えば、選択桁数は、入力オペランドの右端桁数を含む。
一例として、制御は命令の即値フィールドにおいて提供される。
また、一実施形態では、複数の基準は実行される符号演算をさらに含む。さらに、他の実施形態では、複数の基準は、実行される符号演算と、入力オペランドの符号と、命令の正符号コード制御とを含む基準のグループから選択された少なくとも1つの基準をさらに含む。
例として、複数の符号演算は、維持、補数、強制正、強制負を含む。
さらに、一実施形態では、実行は、妥当性を検証することを示す命令の別の制御に基づく、入力オペランドの符号の妥当性検証をさらに含む。
一例では、選択された場所はレジスタであり、レジスタは命令の少なくとも1つのフィールドを使用して指定される。少なくとも1つのフィールドは、例えば、レジスタ番号を指定するレジスタ・フィールドと、レジスタ番号に付加される拡張値を指定する拡張フィールドを含む。
1つまたは複数の態様に関連する方法およびシステムについても本明細書で説明され、特許請求される。また、1つまたは複数の態様に関連するサービスについても本明細書で説明され、特許請求され得る。
その他の特徴および利点も、本明細書に記載の技術によって実現される。その他の実施形態および態様についても本明細書で詳細に説明され、特許請求される態様の一部とみなされる。
1つまたは複数の態様を具体的に示し、本明細書の最後にある特許請求の範囲において例として明確に請求する。上記および1つまたは複数の態様の目的、特徴および利点は、以下の詳細な説明を添付図面とともに読めば明らかになる。
本発明の1つまたは複数の態様を組み込み、使用するコンピューティング環境の一例を示す図である。 本発明の一態様による、図1のプロセッサをさらに詳細に示す図である。 本発明の1つまたは複数の態様を組み込み、使用するコンピューティング環境の別の例を示す図である。 図3のメモリをさらに詳細に示す図である。 本発明の一態様による、ベクトル実行符号演算10進命令の一例を示す図である。 本発明の一態様による、図5のベクトル実行符号演算10進命令の即値フィールドの制御の一実施形態を示す図である。 本発明の一態様による、図5のベクトル実行符号演算10進命令のマスク・フィールドの一実施形態を示す図である。 本発明の一態様による、図5のベクトル実行符号演算10進命令の別の即値フィールドの制御の一実施形態を示す図である。 本発明の一態様による、異なる符号演算および結果に対する結果符号コードの表の一例を示す図である。 本発明の一態様による、ベクトル実行符号演算10進命令に付随する処理の一例を示す図である。 本発明の一態様による、ベクトル実行符号演算10進命令の実行を含むコンピューティング環境における処理を容易にする一例を示す図である。 本発明の一態様による、ベクトル実行符号演算10進命令の実行を含むコンピューティング環境における処理を容易にする一例を示す図である。 クラウド・コンピューティング環境の一実施形態を示す図である。 抽象化モデル層の一例を示す図である。
1つまたは複数の態様は、符号演算を実行するために使用される複数の命令を、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェースにおける単一のアーキテクテッド・マシン命令)に置き換える機能を提供することによって、コンピューティング環境内での処理を向上させることに関する。一例では、本明細書でベクトル実行符号演算10進命令と呼ぶ命令が、様々な符号設定および例外維持/抑制動作を柔軟かつコンパクトに扱う。
本発明の1つまたは複数の態様を組み込み、使用するコンピューティング環境の一実施形態について、図1を参照しながら説明する。一例では、コンピューティング環境は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/Architecture(R)に基づく。z/Architecture(R)の一実施形態は、"z/Architecture Principles of Operation," IBM(R) Publication No. SA22-7832-10, March 2015に記載されている。
別の例では、コンピューティング環境は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるPower Architecture(R)に基づく。Power Architecture(R)の一実施形態は、"Power ISA(TM)Version 2.07B," International Business Machines Corporation, April 9, 2015に記載されている。
コンピューティング環境は、Intel(R)x86アーキテクチャを含むがこれには限定されない他のアーキテクチャに基づいてもよい。IntelおよびItaniumは、米国およびその他の国におけるインテル・コーポレーションまたはその系列会社の商標または登録商標である。他の例も存在する。
図1に示すように、コンピューティング環境100は、例えば、多くの他の汎用または特殊目的コンピューティング・システム環境または構成とともに動作可能な、例えばコンピュータ・システム/サーバ12を有するノード10を含む。コンピュータ・システム/サーバ12とともに使用するのに適合し得る周知のコンピューティング・システム、環境または構成あるいはその組合せの例としては、パーソナル・コンピュータ(PC)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち型デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および、上記のシステムまたはデバイスのうちのいずれかを含む分散クラウド・コンピューティング環境などがあるが、これらには限定されない。
コンピュータ・システム/サーバ12について、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明する場合がある。一般には、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ12は、通信ネットワークを介して接続されたリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境を含むがこれには限定されない、多くのコンピューティング環境で実施可能である。分散クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ・ストレージ・デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体に位置することができる。
図1に示すように、コンピュータ・システム/サーバ12は汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ12の構成要素は、1つまたは複数のプロセッサまたは処理ユニット16と、システム・メモリ28と、システム・メモリ28を含む様々なシステム構成要素をプロセッサ16に結合するバス18とを含み得るが、これらには限定されない。
バス18は、様々なバス・アーキテクチャのうちのいずれかのアーキテクチャを使用する、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィクス・ポート、およびプロセッサ・バスまたはローカル・バスを含む、数種類のバス構造のうちのいずれかの1つまたは複数に相当する。例として、そのようなアーキテクチャとしては、これらには限定されないが、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture:MCA)バス、拡張(Enhanced)ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(Peripheral Component Interconnect:PCI)バスがある。
コンピュータ・システム/サーバ12は、典型的には様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12がアクセスすることができる任意の利用可能な媒体であってよく、揮発性媒体と不揮発性媒体の両方と、取り外し可能媒体と取り外し不能媒体とを含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含んでよい。一例に過ぎないが、ストレージ・システム34を、取り外し不能な不揮発性磁気媒体(図示されておらず、一般に「ハード・ドライブ」と呼ばれる)の読み書きのために設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば「フロッピィ・ディスク」)の読み書きのための磁気ディスク・ドライブと、CD−ROM、DVD−ROMまたはその他の光学媒体などの、取り外し可能な不揮発性光ディスクの読み書きのための光ディスク・ドライブとを設けることができる。そのような場合、それぞれが1つまたは複数のデータ・メディア・インターフェースによってバス18に接続することができる。以下でさらに図示し、説明するように、メモリ28は、本発明の実施形態の機能を実施するように構成された1組の(例えば少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含み得る。
一例として、これには限らないが、1組の(少なくとも1つの)プログラム・モジュール42を有するプログラム/ユーティリティ40の他、オペレーティング・システムと、1つまたは複数のアプリケーション・プログラムと、その他のプログラム・モジュールと、プログラム・データとがメモリ28に記憶されてよい。オペレーティング・システムと、1つまたは複数のアプリケーション・プログラムと、その他のプログラム・モジュールと、プログラム・データまたはこれらの何らかの組合せとのうちのそれぞれが、ネットワーキング環境の実装形態を含み得る。プログラム・モジュール42は、一般には、本明細書に記載の本発明の実施形態の機能または方法あるいはその両方を実施する。
コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24など、または、ユーザがコンピュータ・システム/サーバ12と対話することができるようにする1つまたは複数のデバイス、または、コンピュータ・システム/サーバ12が1つまたは複数の他のコンピューティング・デバイスと通信することができるようにする任意のデバイス(例えばネットワーク・カード、モデムなど)、あるいはその組合せなどの、1つまたは複数の外部デバイス14とも通信することができる。このような通信は、入出力(I/O)インターフェース22を介して行うことができる。さらに、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN)、または汎用ワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えばインターネット)、あるいはその組合せなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図のように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他の構成要素と通信する。なお、図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方もコンピュータ・システム/サーバ12とともに使用することができることも理解されたい。例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらには限定されない。
例えば、プロセッサ16は、命令を実行するために使用される複数の機能構成要素を含む。図2に示すように、これらの機能構成要素には、例えば、実行する命令をフェッチする命令フェッチ構成要素120と、フェッチされた命令をデコードし、デコードされた命令のオペランドを取得する命令デコード・ユニット122と、デコードされた命令を実行する命令実行構成要素124と、必要な場合に命令実行のためにメモリにアクセスするメモリ・アクセス構成要素126と、実行された命令の結果を提供するライト・バック構成要素130とが含まれる。本発明の一態様によると、これらの構成要素のうちの1つまたは複数の構成要素を、以下で詳述するように符号演算136を実行するために使用することができる。
プロセッサ16は、一実施形態では、機能構成要素のうちの1つまたは複数の機能構成要素によって使用される1つまたは複数のレジスタ140も含む。
1つまたは複数の態様を組み込み、使用するコンピューティング環境の別の実施形態について、図3を参照しながら説明する。この例では、コンピューティング環境200は、例えば、ネイティブ中央処理装置(CPU)202と、メモリ204と、例えば1つまたは複数のバス208またはその他の接続機構あるいはその両方を介して互いに結合された1つまたは複数の入出力デバイスまたはインターフェース206あるいはその両方とを含む。例として、コンピューティング環境200は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるPowerPCプロセッサまたはpSeriesサーバ、または米国カリフォルニア州パロアルトのヒューレット・パッカード社によって提供される、Intel(R) Itanium IIプロセッサ内蔵HP Superdome、または、インターナショナル・ビジネス・マシーンズ・コーポレーション、ヒューレット・パッカード、インテル、オラクルまたはその他によって提供されるアーキテクチャに基づくその他のマシン、あるいはその組合せを含んでよい。IBM、PowerPC、pSeries、Power Architecture、z Systems、z/Architectureは、世界の多くの区域で登録されている、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
ネイティブ中央処理装置202は、環境内での処理中に使用される、1つまたは複数の汎用レジスタまたは1つまたは複数の特殊用途レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ210を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
また、ネイティブ中央処理装置202は、メモリ204に記憶されている命令およびコードを実行する。特定の一例では、中央処理装置は、メモリ204に記憶されているエミュレータ・コード212を実行する。このコードは、1つのアーキテクチャにおいて構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることができるようにする。例えば、エミュレータ・コード212は、PowerPCプロセッサ、pSeries(R)サーバ、HP Superdomeサーバまたはその他のものなど、z/Architecture以外のアーキテクチャに基づくマシンが、z/Architectureをエミュレートし、z/Architectureに基づいて開発されたソフトウェアおよび命令を実行することができるようにする。
エミュレータ・コード212に関するさらなる詳細について、図4を参照しながら説明する。メモリ204に記憶されているゲスト命令250が、ネイティブCPU202のアーキテクチャ以外のアーキテクチャで実行されるように開発された(例えばマシン命令と相互に関係する)ソフトウェア命令を含む。例えば、ゲスト命令250は、z/Architectureプロセッサ上で実行されるように設計されていてよいが、その代わりに、例えばIntel(R) Itanium IIプロセッサであってもよいネイティブCPU202上でエミュレートされる。一例では、エミュレータ・コード212は、メモリ204から1つまたは複数のゲスト命令250を取得し、任意選択により、取得された命令のためにローカル・バッファリングを行う命令フェッチ・ルーチン252を含む。また、取得されたゲスト命令の種類を決定し、そのゲスト命令を1つまたは複数の対応するネイティブ命令256に変換するための命令変換ルーチン254も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別することと、その機能を実行するためにネイティブ命令を選択することとを含む。
また、エミュレータ212は、ネイティブ命令が実行されるようにするためのエミュレーション制御ルーチン260を含む。エミュレーション制御ルーチン260は、ネイティブCPU202に、1つまたは複数の事前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させることができ、そのような実行の終わりに、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために命令フェッチ・ルーチンに制御を戻させることができる。ネイティブ命令256の実行は、変換ルーチンによる決定に従って、メモリ204からレジスタにデータをロードすること、または、レジスタからメモリにデータを格納し戻すこと、または何らかの種類の算術演算または論理演算を実行することを含み得る。
各ルーチンは、例えば、メモリに記憶されたソフトウェアで実装され、ネイティブ中央処理装置202によって実行される。他の例では、ルーチンまたは演算のうちの1つまたは複数が、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せで実装される。エミュレートされるプロセッサのレジスタは、ネイティブCPUのレジスタ210を使用して、またはメモリ204内の場所を使用してエミュレートされてよい。いくつかの実施形態では、ゲスト命令250と、ネイティブ命令256と、エミュレータ・コード212とが同じメモリにあってよく、または異なるメモリ・デバイスに分散されてもよい。
本明細書では、ファームウェアは、例えば、プロセッサのマイクロコード、またはミリコード、またはマクロコードあるいはその組合せを含む。ファームウェアは、例えば、ハードウェア・レベルの命令、またはより高いレベルのマシン・コードの実装で使用されるデータ構造、あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、典型的には、トラステッド・ソフトウェアを含むマイクロコード、または基礎となるハードウェアに固有のマイクロコードとして配布されるプロプライエタリ・コードを含み、システム・ハードウェアへのオペレーティング・システム・アクセスを制御する。
取得され、変換され、実行されるゲスト命令250は、例えば、本明細書に記載のベクトル実行符号演算10進命令である。1つのアーキテクチャ(例えばz/Architecture)の命令であるこの命令は、メモリからフェッチされ、変換されて、別のアーキテクチャ(例えばPowerPC、pSeries、Intel(R)など)のネイティブ命令256のシーケンスとして表される。次に、これらのネイティブ命令が実行される。
本明細書で示すように、符号付きおよび符号なし変数型と演算(例えば、移動、補数、否定、絶対値など)との様々な組合せのために多くの可能なエンコードがある。コンパイラの1つの課題は、これらの多くの可能なエンコードに対応するためにいかに効率的にコードを生成するかである。ハードウェア設計の関連課題は、命令エンコードの制限内に収まるように、また、多くの既存および将来の命令を使用するアーキテクチャにおける可能な演算エンコードの固定したセットを損なわないように、これらのすべての様々な可能性をいかにコンパクトにエンコードするかである。
BCD変数は従来、記憶域間(storage to storage:SS)命令によって演算が行われるため、符号コードの設定は、最新のアウト・オブ・オーダー(out of order:OOO)プロセッサの速度を低下させる可能性のある追加のインメモリ演算を必要とすることが多い。
もう1つの課題は、例外ケースにおける互換性のある結果の生成に対してどのように反応するかである。例えば、1つの言語または環境が、入力符号コードが正当でない(例えば、符号なし変数の符号コード位置にある数字)場合にハードウェア例外が必要であると指示していることがあるが、他の場合では厳密な互換性をもたせるために不当なエンコードを無視して単に符号なしとして(符号なし変数の場合には値が+か−かが実際には問題ではないため)扱うことを要求することがある。
多くの符号設定演算は、1つの変数の別の変数への単純な移動の場合であっても、そのデータを移動するための1つのマシン命令と、符号を設定するための1つまたは複数の後続の命令の、少なくとも2つのマシン命令を使用する。符号はデータが移動された後まで設定できないため、OOOプロセッサの速度をさらに低下させる可能性があるデータ依存性が成立する。
一例として、符号なし変数が拡大される場合、1つのシーケンスが拡大のためにZAP命令を使用し、その後に、(ZAPは0xCまたは0xDのみを設定することになるため)符号を0xFに設定するためにOI(OR即値)またはMVN(Move Numerics(数値移動))を使用する。これですでに2つの命令である。さらに、ZAPは入力符号コードの妥当性検証を行うため、このシーケンスも、入力符号コードが正当でない場合に望ましくないハードウェア例外が生じることがあるため使用することができない。その代わりに、この種の符号なし変数拡大動作のための互換性を実現するために、さらに長く、さらにコストを要するシーケンスが使用される。
したがって、本発明の1つまたは複数の態様によると、様々な符号設定および例外維持/抑制動作を柔軟かつコンパクトに扱うための命令(例えば、ハードウェア/ソフトウェア・インターフェースにおける単一のアーキテクテッド・マシン命令)が提供される。本明細書でベクトル実行符号演算10進命令と呼ぶこの命令は、入力オペランドおよび1つの出力オペランドと、(後演算としてではなく)入力から出力へのデータの移動の一部として多くの符号操作および設定を行う機能とを有する。
いくつかの実施形態では、この命令は、例えば無効な符号コードの例外ケースにおける実行符号演算動作の微調整を可能にするための、柔軟な符号制御と符号妥当性検証制御とを有する。他の実施形態では、命令は数字の妥当性を選択的に検証するための制御を含むか、そのような制御にアクセスすることができる。他の様々な変形態様も可能である。
ベクトル実行符号演算10進命令のエンコードは、組み合わさって広範囲の演算および入出力タイプのための柔軟できめ細かい符号設定制御をコンパクトに実現する、いくつかの部分を有する。
これらの部分は、例えば以下を含む。
1)入力オペランドと出力オペランドの指定。例として、オペランドはレジスタに指定される。しかし、インメモリ・エンコード(例えば基底+変位の指定)も可能な実施形態であり、その他の実施形態も可能である。
2)結果桁数(Result Digits Count:RDC):入力オペランドの右端桁を出力オペランドの場所に何桁入れるかを指定する数値(例えば、許容最大サイズに応じて1から31まで、または1から64まで)。切り捨て演算と拡大演算の両方が可能である。システム設定に応じて有効桁が失われる場合は、オーバーフロー標識が立てられてもよい。
3)符号演算(Sign Operation:SO):命令エンコードのこの部分によって、実行される特定の符号演算が決まる。例えば、SOは以下を示すことができる。
−入力から出力に符号コードが維持されるように、単純な移動が行われる。
−入力から出力に符号コードの補数がとられる(正から負に、または負から正に切り換えられる)。
−入力符号値にかかわりなく、入力符号コードが出力において強制的に正とされる(すなわち絶対値型演算)。
−入力符号値にかかわりなく、入力符号コードが出力において強制的に負とされる。
4)正符号コード(Positive Sign Code:PC):命令エンコードのこの部分は、正の結果値について出力符号コードを0xF(2進数の1111)と0xC(2進数の1100)のいずれとしてエンコードするかを制御する。
5)入力オペランド符号妥当性検証(Sign Validation:SV):命令エンコードのこの部分は、強制正符号演算および強制負符号演算のために符号妥当性検証(および、不当符号コードの場合の対応するハードウェア例外)を行うか否かを制御する。この制御は、不当である可能性がある符号エンコードが存在する場合に、実行符号10進演算のユーザが厳密な例外互換性を維持することができるようにする。この種の制御は、例えば、不当なコード/データがあっても元の動作に対する厳密な互換性が維持される必要があるバイナリ変換(バイナリ最適化と呼ばれることもある)を行う場合に使用することができる。一実施形態では、強制正符号演算および強制負符号演算のためにSV=0を設定することによって、妥当性検証をスキップすることを示し、SV=1によって、不当な符号がないか検証することを示す(さらにこの実施形態では、何らかの方法で入力符号コードを、オーバーライトするのではなく、本来的に使用する符号演算のために妥当性検証が行われる)。
6)条件コード設定(Condition Code set:CS):ベクトル実行符号演算10進命令は、ユーザが、最終結果値に基づいて条件コードが設定されることを要求することもできるようにする。ゼロと、ゼロ未満と、ゼロより大きい結果値を示す設定が提供されるとともに、演算の一部としてオーバーフロー(有効桁の切り捨て)があった場合にそれを示す標識が提供される。
一実施形態では、上記の設定のすべてを、将来の拡張のための数ビットを残して、わずか6バイト(以下で説明するオペコードおよびRXBも含む)のエンコード・テキストでエンコードすることができる。
結果の符号コードは、一例では、例えば符号演算(SO)と、第2のオペランド符号と、結果桁数(RDC)と、正符号コード(PC)の設定の組合せによって決定される。
以下、ベクトル実行符号演算10進命令の設定およびその他の詳細について説明する。一実施形態では、ベクトル実行符号演算10進命令は、例えば1ないし16個の要素の範囲の固定サイズ・ベクトルを提供するベクトル機能の一部である。各ベクトルは、この機能において定義されているベクトル命令によって演算が行われるデータを含む。一実施形態では、ベクトルが複数の要素からなる場合、各要素は他の要素と並列して処理される。命令の完了は、すべての要素の処理が完了するまで起こらない。他の実施形態では、要素は一部が並列に、または順次にあるいはその両方で処理される。
ベクトル命令は、z/Architecture、Power Architecture、x86、IA−32、IA−64などを含むがこれらには限定されない様々なアーキテクチャの一部として実装することができる。本明細書に記載の実施形態は、z/Architectureのためのものであるが、本明細書に記載されているベクトル命令および1つまたは複数の他の態様は、多くの他のアーキテクチャに基づいてよい。z/Architectureは一例に過ぎない。
ベクトル機能がz/Architectureの一部として実装される一実施形態では、ベクトル・レジスタおよび命令を使用するために、指定された制御レジスタ(例えば制御レジスタ0)におけるベクトル・イネーブル制御およびレジスタ制御が例えば1に設定される。ベクトル機能がインストールされており、ベクトル命令がイネーブル制御の設定なしに実行される場合、データ例外と認識される。ベクトル機能がインストールされておらず、ベクトル命令が実行される場合、演算例外と認識される。
一実施形態では、32個のベクトル・レジスタがあり、他の種類のレジスタをベクトル・レジスタの象限にマッピングすることができる。例えば、レジスタ・ファイルが32個のベクトル・レジスタを含むことができ、各レジスタは長さが128ビットである。長さが64ビットの16個の浮動小数点レジスタが、ベクトル・レジスタをオーバーレイすることができる。したがって、一例として、浮動小数点レジスタ2が変更されると、ベクトル・レジスタ2も変更される。他の種類のレジスタのための他のマッピングも可能である。
ベクトル・データは、記憶域において、例えば他のデータ形式と同じ左から右の順序で現れる。0ないし7の番号が付けられたデータ形式のビットが、記憶域の左端(最小番号が付けられた)バイト位置のバイトを構成し、ビット8ないし15が次の順次位置のバイトを形成し、以下同様である。他の例では、ベクトル・データは記憶域において右から左などの別の順序で現れてもよい。
ベクトル実行符号演算10進命令の一例について図5ないし図8を参照しながら説明する。図示のように、この命令は複数のフィールドを含み、1つのフィールドはそれに付けられた下付き番号を有し得る。命令のフィールドに付けられた下付き番号は、そのフィールドが適用されるオペランドを示す。例えば、ベクトル・レジスタVに付けられた下付き番号1は、Vのレジスタが先頭オペランドを含むことを示し、以下同様である。レジスタ・オペランドは、例えば128ビットの長さの1つのレジスタである。
図5を参照すると、一実施形態では、ベクトル実行符号演算10進命令300は、ベクトル実行符号演算10進演算を示すオペコード・フィールド302a、302bと、第1のベクトル・レジスタ(V)を指示するために使用される第1のベクトル・レジスタ・フィールド304と、第2のベクトル・レジスタ(V)を指示するために使用される第2のベクトル・レジスタ・フィールド306と、第1の即値フィールド(I)308と、マスク・フィールド(M)310と、第2の即値フィールド(I)312と、レジスタ拡張ビット(RXB)フィールド314とを含み、それぞれについては以下で説明する。一実施形態では、これらのフィールドは別々のものであり、互いに独立している。しかし、他の実施形態では、複数のフィールドが組み合わされてもよい。これらのフィールドに関する詳細な情報について以下に記載する。
ベクトル・レジスタ・フィールド304は、第1のオペランドを記憶するためのベクトル・レジスタを示すために使用され、第1のオペランドは、命令によって生成される変更された符号と、第2のオペランドの指定桁数を含む。オペランドと結果とは、例えば符号付きパック10進形式である。一例では、符号付きパック10進形式では、右端バイト以外の各バイトが2つの10進数字(D)を含み、右端バイトは10進数字の右に符号(S)を含む。
第2のオペランド(すなわち入力オペランド)は、ベクトル・レジスタ・フィールド306を使用して指定されたベクトル・レジスタに入れられる。一例では、ベクトル・レジスタ・フィールド304、306のそれぞれが、ベクトル・レジスタを指示するためにRXBフィールド314とともに使用される。
例えば、RXBフィールド314は、ベクトル・レジスタ指示オペランドのための最上位ビットを含む。命令によって指定されていないレジスタ指示のためのビットは、予約されるビットであり、ゼロに設定される。最上位ビットは、例えば、ベクトル・レジスタ・フィールドの4ビットレジスタ指示の左に連結されて、5ビット・ベクトル・レジスタ指示を形成する。
一例では、RXBフィールドは4ビット(例えば、ビット0ないし3)を含み、これらのビットは、以下のように定義される。
0−命令の(例えばビット8ないし11内の)先頭のベクトル・レジスタ指定のための最上位ビット。
1−もしある場合、命令の(例えばビット12ないし15内の)2番目のベクトル・レジスタ指定のための最上位ビット。
2−もしある場合、命令の(例えばビット16ないし19内の)3番目のベクトル・レジスタ指定のための最上位ビット。
3−もしある場合、命令の(例えばビット32ないし35内の)4番目のベクトル・レジスタ指定のための最上位ビット。
各ビットは、例えばアセンブラによって、レジスタ番号に応じてゼロまたは1に設定される。例えば、レジスタ0ないし15の場合、ビットは0に設定される。レジスタ16ないし31の場合、ビットは1に設定される、などである。
一実施形態では、各RXBビットは、1つまたは複数のベクトル・レジスタを含む命令内の特定の位置のための拡張ビットである。例えば、RXBのビット0は位置8ないし11のための拡張ビットであり、例えばVに割り当てられ、以下同様である。具体的には、ベクトル・レジスタの場合、オペランドが入れられるレジスタは、例えば、最上位ビットとして対応するレジスタ拡張ビット(RXB)が付加された、レジスタ・フィールドの4ビット・フィールドを使用して指定される。例えば、4ビット・フィールドが0110であり、拡張ビットが0である場合、5ビット・フィールド00110がレジスタ番号6を示す。他の実施形態では、RXBフィールドは追加のビットを含み、複数のビットが各ベクトルまたは位置の拡張部として使用される。
即値(I)フィールド308は、いくつかの制御を含む第4のオペランドを指定する。例えば、図6に示すように、Iフィールド308は以下を含む。
・予約:ビット0ないし3は無視されるが、0が入れられる必要がある。そうでない場合、プログラムは将来、互換性のある動作をしない可能性がある。
・符号演算(SO)342:ビット4ないし5は、結果符号コードを決定する際に使用される符号演算を指定する。結果符号コードは、図9に示されているように、例えばSO制御と、第2のオペランド符号と、第2のオペランドの桁と、RDC制御と、PCビットとの関数である。
・正符号コード(PC)344:ビット6が1の場合、結果が正のときに符号コード1111が使用される。ビット6がゼロの場合、結果が正のときに符号コード1100が使用される。
・オペランド2符号妥当性検証(Sign Validation:SV)346:ビット7が1でSO制御が強制正または強制負を指定する場合、第2のオペランド符号コードの妥当性が検証される。ビット7がゼロでSO制御が強制正または強制負を指定する場合、第2のオペランド符号コードの妥当性が検証されない。SO制御が符号の維持または補数を指定する場合、SVビット値にかかわらず第2のオペランド符号コードの妥当性が検証される。
フィールド310は、一例では図7に示すように以下の制御を含む。
・予約:ビット0ないし2は無視され、ゼロが入れられる必要がある。そうでない場合、プログラムは将来、互換性のある動作をしない可能性がある。
・条件コード設定(CS)348:ビット3がゼロの場合、条件コードは設定されず、変更されないままである。ビット3が1の場合、以下の結果条件コードの項で示すように条件コードが設定される。
結果条件コード:
CSビットが1の場合、一例では条件コードが以下のように設定される。
0 結果ゼロ、オーバーフローなし
1 結果ゼロ未満、オーバーフローなし
2 結果ゼロより大、オーバーフローなし
3 オーバーフロー
CSビットがゼロの場合、条件コードは変更されないままである。
フィールド312は、一例では、図8に示すように、以下の制御を含む。
・予約:ビット0ないし2は予約され、ゼロが入れられる必要がある。そうでない場合、指定例外と認識される。
・結果桁数(RDC)350:ビット3ないし7には、第1のオペランドに入れられる第2のオペランドの右端桁数を指定する、符号なし2進数が入れられる。第2のオペランドの絶対値が、指定された桁数で表すことができる最大10進数よりも大きい場合、10進オーバーフローが起こり、10進オーバーフロー・マスクが1の場合、一例では、10進オーバーフローのためのプログラム割り込みが発生する。RDCフィールドがゼロの場合、一実施形態では、指定例外と認識される。
様々なフィールドおよびレジスタについて説明したが、本発明の1つまたは複数の態様は、他の、または追加の、またはより少ないフィールドまたはレジスタ、またはフィールドまたはレジスタの他のサイズなどを使用してもよい。多くの変形態様が可能である。例えば、命令の明示的に指定されたレジスタまたはフィールドの代わりに、暗黙的レジスタを使用してもよい。また、ベクトル・レジスタ以外のレジスタを使用してもよい。さらに、他の実施形態では、左端桁または別のサブセットなど、他の桁を選択してもよい。その場合も、他の変形態様も可能である。
ベクトル実行符号演算10進命令の一実施形態の演算では、第2のオペランドの変更された符号と指定された右端桁数とが、第1のオペランド位置に入れられ、他の桁がゼロに設定される。オペランドと結果とは、一実施形態では符号付きパック10進形式である。
RDC制御が、第2のオペランドの左端の非ゼロ桁をすべて入れるのに十分な桁を指定しない場合、10進オーバーフローが発生する。その演算は完了する。結果は、オーバーフロー桁を無視することによって得られ、条件コード設定(CS)フラグが1の場合は条件コード3が設定される。例えばプログラム状態ワードにおける10進オーバーフロー・マスクが1の場合、10進オーバーフローのためのプログラム割り込みが発生する。
RDC制御が、例えば31桁未満を指定する場合、第1のオペランドの残りの左端桁にゼロが入れられる。
一例では、第2のオペランドのすべての桁コードの妥当性が検証される。符号演算(SO)制御が、結果符号を強制的に正または負にすることを指定しておらず、オペランド2符号妥当性検証(SV)がゼロでない限り、第2のオペランドの符号コードの妥当性が検証される。
結果符号コードは、例えば、図9に示すように、SO制御と、第2のオペランド符号と、第2のオペランド桁と、結果桁数(RDC)制御と、正符号コード(PC)制御との関数である。例えばSO(400)=00の場合、RDCが適用された後の第2のオペランドの桁の値(402)は非ゼロであり、第2のオペランド符号(V)(404)は正であり、PC(406)は1であり、結果符号コード(408)は16進F(正)410である。さらに、この例では、入力オペランド符号コードに対して妥当性検証が実行される(412)ことを示している。
様々な例を示したが、特許請求対象の態様の範囲から逸脱することなく変形態様が可能である。例えば、命令によって使用されるレジスタまたはフィールドあるいはその両方に含まれる値は、他の実施形態では、メモリ記憶場所などの他の場所にあってもよい。多くの他の変形態様が可能である。
ベクトル実行符号演算10進命令の実行に付随する処理に関するさらなる詳細について、図10を参照しながら説明する。この処理は、少なくとも1つのプロセッサによって実行される。
図10を参照すると、ステップ500で、最初に第2のオペランドの値が取得される。一例では第2のオペランドの値は複数の桁を含み、照会502で、それらの桁が有効であるか否かが決定される。それらの桁が有効でない場合、ベクトル実行符号演算10進命令の処理は完了する。しかし、それらの桁が有効な場合、処理は、ステップ504に進み、Iフィールドから結果桁数を取得する。さらに、ステップ506で、第2のオペランドの少なくとも一部が選択される。例えば、結果桁数において示されている右端桁数が選択される。ステップ508で、第2のオペランドの選択された部分が選択された場所に入れられる。一例では、選択された場所は、Vフィールドを使用して指示されたレジスタである。別の例では、選択された場所はイン・メモリまたはさらに別の場所である。さらにステップ510で、第2のオペランドの選択された部分の符号が決定される。一例では、符号は、例えば、Iフィールドで指定されている符号演算と、RDC適用後の結果の絶対値と、第2のオペランドの符号と、Iで指定されている正符号コードの値とを含む複数の基準を使用して決定される。これらの基準に基づいて、図9に示すように、結果の符号コードが得られる。次に、ステップ512で、この結果の符号コードは指定された右端桁数とともに選択された場所に入れられる。一例では、指定された右端桁数と符号コードとは、符号パック10進形式で入れられる。
ここでは、符号演算を実行するための単一のアーキテクテッド命令を使用する機能について説明する。この命令は、1つまたは複数の命令シーケンスを置き換え、コンピュータの処理およびパフォーマンスを向上させる。一例では、パック10進数のために符号コードをコンパクトかつ効率的に設定する機能が提供される。
単一の命令(例えば単一のアーキテクテッド命令)が、例えば以下のケースを扱うことができる。すなわち、データ移動と0xC、0xDまたは0xFへの符号設定、任意選択により符号を設定または保持した状態でのデータの切り捨て、信頼できない入力データがないかの妥当性確認の抑止機能(これは、例えばバイナリ最適化使用ケースにおける互換性オプションである)、符号補数計算、および任意選択の条件コード設定である。言語の中には、オーバーフロー時にマシン例外を出すものもあるが、ユーザ定義アクションのために条件コードを使用する言語(例えばCOBOL)もある。
次に、符号なし変数拡大のためにZAP/OIシーケンスを使用した上述の例を再び採り上げる。この動作は、RDCを、所望のより広い結果サイズに設定し、SOを強制的に正に設定し、符号妥当性検証をスキップするようにSVを0に設定することによって、ベクトル実行符号演算10進命令を使用して実現可能となる。これで、所望の完全互換動作が単一の命令で実現される。
図11ないし図12を参照しながら、符号演算を行うための命令の実行を含む、コンピューティング環境における処理を容易にすることに関するさらなる詳細について説明する。
図11を参照すると、一実施形態では、この命令のために構成された複数の符号演算のうちの符号演算を行う命令が、ステップ600で少なくとも1つのプロセッサによって取得され、ステップ602で実行される。実行は、例えば、ステップ604で、選択された場所に入れる結果として入力オペランドの少なくとも一部を選択することを含む。選択は、命令の制御に基づき(606)、命令の制御は結果として選択される入力オペランドのユーザ定義サイズを示す(608)。ステップ610で、複数の基準に基づいて結果の符号が決定される。複数の基準は、例えば、命令の制御に基づいて求められ、選択された値に対する第1の特定の関係または第2の特定の関係を有する結果の値を含む(612)。ステップ614で、コンピューティング環境内での処理に使用される符号付き出力を提供するために、結果と符号とが選択された場所に格納される。
例として、第1の特定の関係は等しいことであり、第2の特定の関係は等しくないことであり、選択された値はゼロである(616)。
また、一例では、入力オペランドの少なくとも一部が、入力オペランドの選択された桁の数(例えば右端桁数)を含み、選択桁数は命令の制御によって指定される(618)。また、図12を参照すると、一実施形態では、制御は命令の即値フィールドで提供される(620)。
さらに、一例では、複数の基準は実行される符号演算をさらに含む(622)。また、別の例では、複数の基準は、実行される符号演算と、入力オペランドの符号と、命令の正符号コード制御とを含む基準のグループから選択された少なくとも1つの基準を含む(624)。
一例として、複数の符号演算は、維持、補数、強制正、および強制負を含む(626)。
さらに他の実施形態では、実行は、ステップ628で、妥当性を検証することを示す命令の別の制御に基づいて、入力オペランドの符号の妥当性を検証することをさらに含む。
また、一例では、選択された場所はレジスタであり、レジスタは命令の少なくとも1つのフィールドを使用して指定される(630)。少なくとも1つのフィールドは、レジスタ番号を指定するレジスタ・フィールドと、レジスタ番号に付加される拡張値を指定する拡張フィールドとを含む(632)。
1つまたは複数の態様は、クラウド・コンピューティングに関し得る。
なお、本開示はクラウド・コンピューティングの詳細な説明を含むが、本明細書に記載されている教示の実装がクラウド・コンピューティング環境に限定されないことは前もって理解される。むしろ、本発明の実施形態は、現在知られている、または今後開発される任意の他の種類のコンピューティング環境とともに実装することができる。
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの対話で迅速にプロビジョニングすることができ、解放することができる、構成可能コンピューティング資源(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの便利なオンデマンドのネットワーク・アクセスを可能にするサービス配布のモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つの配備モデルとを含み得る。
特徴は以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダとの間で人間の対話を必要とせずに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
広帯域ネットワーク・アクセス:ネットワークを介して機能が利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば携帯電話、ラップトップ、およびPDA)による使用を促進する標準機構を介してアクセスすることができる。
資源プール:マルチテナント・モデルを使用して複数の消費者にサービスするために、プロバイダのコンピューティング資源がプールされ、需要に応じて異なる物理資源および仮想資源が動的に割り当てられ、再割り当てされる。消費者は一般に、提供される資源の厳密な場所について制御することができないかまたは知らないが、より高い抽象レベルの場所(例えば、国、州、またはデータセンター)を指定し得るという点で、位置独立感がある。
迅速な伸縮性:迅速かつ伸縮性をもって、場合によっては自動的に機能をプロビジョニングして、迅速にスケールアウトすることができ、また、迅速に機能を解放してスケールインすることができる。消費者にとっては、プロビジョニングのために利用可能な機能はしばしば無限であるように見え、いつでも好きなだけ購入することができる。
従量制サービス:クラウド・システムが、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に応じて適切な何らかの抽象化レベルの計量機能を活用することによって、資源利用を自動的に制御し、最適化する。資源使用量を監視、制御および報告することができ、利用されたサービスのプロバイダと消費者の両方に透明性を与えることができる。
サービス・モデルは以下の通りである。
ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザなどのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である(例えばウェブ・ベースのEメール)。消費者は、限られたユーザ固有アプリケーション構成設定の考えられる例外を除き、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個別のアプリケーション機能まで含めて、基礎にあるクラウド・インフラストラクチャを管理または制御しない。
プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上に、消費者作成アプリケーション、またはプロバイダによってサポートされるプログラミング言語およびツールを使用して作成された取得アプリケーションを配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎にあるクラウド・インフラストラクチャを管理または制御しないが、配備されたアプリケーションと、場合によってはアプリケーション・ホスティング環境構成とを制御することができる。
インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS):消費者に提供される機能は、処理、ストレージ、ネットワークおよびその他の基本的コンピューティング資源をプロビジョニングすることであり、その際、消費者は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配備し、稼働させることができる。消費者は、基礎にあるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システムと、ストレージと、配備されたアプリケーションとを制御することができ、場合によっては選択されたネットワーク・コンポーネント(例えばホスト・ファイアウォール)の限定的な制御を行うことができる。
配備モデルは以下の通りである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。組織または第三者によって管理されることができ、オンプレミスまたはオフプレミスに存在してよい。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織によって共用され、共通の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス事項)を有する特定のコミュニティをサポートする。組織または第三者によって管理されてよく、オンプレミスまたはオフプレミスに存在してよい。
パブリック・クラウド:このクラウド・インフラストラクチャは、公衆または大規模業界団体が利用することができ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、独自の実体のままであるが、データ可搬性またはアプリケーション可搬性を可能にする標準化技術または専有技術(例えば、クラウド間の負荷バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティまたはパブリック)の複合体である。
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に焦点を合わせたサービス指向型である。クラウド・コンピューティングの核心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。そのような1つのノードは、図1に示されているノード10である。
コンピューティング・ノード10は、適合するクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載の本発明の実施形態の使用または機能の範囲に関するいかなる限定も示唆することを意図していない。いずれにしても、クラウド・コンピューティング・ノード10は、上述の機能のいずれの実装または実行あるいはその両方が可能である。
図13を参照すると、例示のクラウド・コンピューティング環境50が図示されている。図のように、クラウド・コンピューティング環境50は、例えばパーソナル・デジタル・アシスタント(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組合せなど、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる、1つまたは複数のコンピューティング・ノード10を含む。ノード10が互いに通信してもよい。これらは、上述のプライベート、コミュニティ、パブリックまたはハイブリッド・クラウドまたはこれらの組合せなどの1つまたは複数のネットワークにおいて物理的または仮想的にグループ化(図示せず)されてよい。これによって、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せを、クラウド消費者がそのためにローカル・コンピューティング・デバイス上で資源を維持する必要がないサービスとして提供することができる。なお、図13に示すコンピューティング・デバイス54Aないし54Nの種類は、例示のみを意図したものであり、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(例えばウェブ・ブラウザを使用して)任意の種類のネットワークまたはネットワーク・アドレス指定可能接続あるいはその両方を介して、任意の種類のコンピュータ化デバイスと通信することができるものと理解される。
次に、図14を参照すると、クラウド・コンピューティング環境50(図13)によって提供される1組の機能抽象化層が示されている。なお、図14に示す構成要素、層および機能は、例示のみを意図したものであり、本発明の実施形態はこれらには限定されないことを前もって理解されたい。図のように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素とソフトウェア構成要素とを含む。ハードウェア構成要素の例としては、メインフレーム61、縮小命令セットコンピュータ(Reduced Instruction Set Computer:RISC)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、およびネットワークおよびネットワーキング構成要素66がある。実施形態によっては、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化層70は、以下の仮想実体の例を与えることができる抽象化層を提供する。すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、および仮想クライアント75である。
一例では管理層80は、以下に記載の機能を提供することができる。資源プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング資源およびその他の資源の動的調達を行う。メータリングおよびプライシング82は、クラウド・コンピューティング環境内で資源が利用されるときのコスト追跡と、これらの資源の消費に対する対価の請求またはインボイス処理を行う。一例ではこれらの資源にはアプリケーション・ソフトウェア・ライセンスが含まれてもよい。セキュリティは、クラウド消費者およびタスクのための本人検証と、データおよびその他の資源の保護とを行う。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング資源割り当ておよび管理を行う。サービス・レベル・アグリーメント(Service Level Agreement:SLA)計画および履行85は、SLAに従って将来の要求が予想されるクラウド・コンピューティング資源のための事前取り決めおよび調達を行う。
ワークロード層90は、クラウド・コンピューティング環境をそのために利用することができる機能の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、および命令処理96がある。
本発明は、任意の可能な技術的詳細の統合レベルでのシステム、方法またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるための命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適合する組合せであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のものが含まれる。すなわち、可搬コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、可搬コンパクト・ディスク読み取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適合する組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(例えば光ファイバ・ケーブルを通る光パルス)、または電線を介して伝送される電気信号などの、一時的な信号自体であると解釈すべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはこれらの組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、交換機、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、マシン命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語または同様のプログラム言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、あるいは一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がコンピュータあるいはサーバ上で実行されてよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は外部コンピュータ(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)に対して行ってもよい。実施形態によっては、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることはわかるであろう。
上記のコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作を実装する手段を形成するように、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを実現するものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはこれらの組合せに対して特定の方式で機能するように指示することができるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで規定されている機能/動作を実装するようにコンピュータ実装処理を提供するために、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、規定されている論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことがある。いくつかの代替の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、規定されている機能または動作を実行する特殊目的ハードウェア・ベースのシステムによって実装されるか、または特殊目的ハードウェアとコンピュータ命令との組合せを実施することができることに留意されるだろう。
上記に加えて、1つまたは複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって、供給、提供、配備、管理、保守などが行われてよい。例えば、サービス・プロバイダは、1または複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方の作成、維持、サポートなどを行うことができる。その見返りとして、サービス・プロバイダは、例えば会員登録または委託契約あるいはその両方に基づいて顧客から支払いを受け取ってもよい。これに加えて、またはこれに代えて、サービス・プロバイダは、1つまたは複数の第三者に対する広告コンテンツの販売による支払いを受け取ってもよい。
一態様では、1つまたは複数の実施形態を実行するためにアプリケーションが配備されてもよい。一例として、アプリケーションの配備は、1つまたは複数の実施形態を実行するように動作可能なコンピュータ命令を提供することを含む。
他の態様として、コンピューティング・システムにコンピュータ可読コードを組み込むことを含むコンピューティング・インフラストラクチャが配備されてもよく、コードはコンピューティング・システムと組み合わさって1つまたは複数の実施形態を実行することができる。
さらに他の態様として、コンピュータ可読コードをコンピュータ・システムに組み込むことを含む、コンピューティング・インフラストラクチャを組み込むためのプロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、コンピュータ媒体は1つまたは複数の実施形態を含む。コードはコンピュータ・システムと組み合わさって1つまたは複数の実施形態を実行することができる。
以上、様々な実施形態について説明したが、これらは例に過ぎない。例えば、1つまたは複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することができる。また、異なる命令、命令形式、命令フィールドまたは命令値あるいはその組合せを使用してもよい。多くの変形態様が可能である。
また、他の種類のコンピューティング環境も利益を得ることができ、使用することができる。一例として、システム・バスによってメモリ要素に直接または間接的に結合された少なくとも2つのプロセッサを含む、プログラム・コードを記憶または実行あるいはその両方を行うのに適合するデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量ストレージと、実行時に大容量ストレージからコードを取り出す必要がある回数を削減するために少なくとも一部のプログラム・コードの一時的記憶を提供するキャッシュ・メモリとを含む。
入出力またはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、およびその他のメモリ媒体などを含むがこれらには限定されない)を、直接、または介在するI/Oコントローラを介してシステムに結合することができる。データ処理システムが、介在するプライベート・ネットワークまたはパブリック・ネットワークを介して他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合されることができるようにするために、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびEthernetカードが、利用可能な種類のネットワーク・アダプタのほんの一例である。
本明細書で使用されている用語は、特定の実施形態を説明することのみを目的としたものであり、限定的であることを意図したものではない。本明細書で使用されている単数形の「a」、「an」および「the」は、文脈が明確に他の解釈を示していない限り複数形も含むことを意図している。また、「含んでいる(comprises)」または「含む(comprising)」あるいはその両方の用語が本明細書で使用されている場合、記載されている特徴、整数、ステップ、動作、要素または構成要素あるいはその組合せの存在を規定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素または構成要素あるいはこれらのグループの存在または追加を排除しないことを理解されたい。
添付の特許請求の範囲のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作および均等物は、もしある場合、具体的に特許請求されている他の特許請求対象要素と組み合わせて機能を実行するための任意の構造、材料または動作を含むことを意図している。例示および説明を目的として1つまたは複数の実施形態の説明を示したが、網羅的であること、または、開示されている形態に限定することを意図したものではない。当業者には多くの変更および変形態様が明らかであろう。これらの実施形態は、様々な態様および実際の適用を最もよく説明するためと、当業者が、企図された特定の用途に適合するように様々な変更を加えた様々な実施形態を理解することができるようにするために選択し、説明した。

Claims (19)

  1. コンピューティング環境内での処理を容易にするコンピュータ実装方法であって、実行のために命令を取得することであり、前記命令は、前記命令のために構成された複数の符号演算のうちの符号演算を実行するものである、前記取得することと、
    前記命令を実行することと、を含み、前記実行することは、
    選択された場所に結果として入られる入力オペランドの少なくとも一部を前記命令の制御に基づいて選択することであり、前記命令の前記制御は、前記結果として選択される前記入力オペランドのユーザ定義サイズを示す、前記選択することと、
    前記命令の前記制御に基づいて求められ、選択された値に対する第1の特定の関係または第2の特定の関係を有する、前記結果の値、を含む複数の基準に基づいて、前記結果の符号を決定することと、
    前記コンピューティング環境内での処理において使用される符号付き出力を提供するために、前記選択された場所に前記結果と前記符号とを格納することと
    を含む、コンピュータ実装方法。
  2. 前記第1の特定の関係は等しいことであり、前記第2の特定の関係は等しくないことであり、前記選択された値はゼロである、請求項1に記載のコンピュータ実装方法。
  3. 前記入力オペランドの前記少なくとも一部は前記入力オペランドの選択桁数を含み、前記選択桁数は前記命令の前記制御によって指定される、請求項1または2に記載のコンピュータ実装方法。
  4. 前記選択桁数は前記入力オペランドの右端桁数を含む、請求項3に記載のコンピュータ実装方法。
  5. 前記制御は前記命令の即値フィールドにおいて提供される、請求項1ないし4のいずれかに記載のコンピュータ実装方法。
  6. 前記複数の基準は実行する前記符号演算をさらに含む、請求項1ないし5のいずれかに記載のコンピュータ実装方法。
  7. 前記複数の基準は、実行する符号演算と、前記入力オペランドの符号と、前記命令の正符号コード制御とを含む基準のグループから選択された少なくとも1つの基準をさらに含む、請求項1ないし6のいずれかに記載のコンピュータ実装方法。
  8. 前記複数の符号演算は、維持と、補数と、強制正と、強制負とを含む、請求項1ないし7のいずれかに記載のコンピュータ実装方法。
  9. 前記実行することは、妥当性を検証することを示す前記命令の別の制御に基づいて、前記入力オペランドの符号の妥当性を検証することをさらに含む、請求項1ないし8のいずれかに記載のコンピュータ実装方法。
  10. 前記選択された場所は、前記命令の少なくとも1つのフィールドを使用して指定されるレジスタである、請求項1ないし9のいずれかに記載のコンピュータ実装方法。
  11. 前記少なくとも1つのフィールドは、レジスタ番号を指定するレジスタ・フィールドと、前記レジスタ番号に付加される拡張値を指定する拡張フィールドとを含む、請求項10に記載のコンピュータ実装方法。
  12. コンピューティング環境内での処理を容易にするためのコンピュータ・システムであって、
    メモリと、
    前記メモリと通信するプロセッサと、を含み、前記コンピュータ・システムは、方法を実行するように構成されており、前記方法は、
    実行のために命令を取得することであり、前記命令は、前記命令のために構成された複数の符号演算のうちの符号演算を実行するものである、前記取得することと、
    前記命令を実行することと、を含み、前記実行することは、
    選択された場所に結果として入られる入力オペランドの少なくとも一部を前記命令の制御に基づいて選択することであり、前記命令の前記制御は、前記結果として選択される前記入力オペランドのユーザ定義サイズを示す、前記選択することと、
    前記命令の前記制御に基づいて求められ、選択された値に対する第1の特定の関係または第2の特定の関係を有する、前記結果の値、を含む複数の基準に基づいて、前記結果の符号を決定することと、
    前記コンピューティング環境内での処理において使用される符号付き出力を提供するために、前記選択された場所に前記結果と前記符号とを格納することと
    を含む、コンピュータ・システム。
  13. 前記第1の特定の関係は等しいことであり、前記第2の特定の関係は等しくないことであり、前記選択された値はゼロである、請求項12に記載のコンピュータ・システム。
  14. 前記入力オペランドの前記少なくとも一部は、前記入力オペランドの選択桁数を含み、前記選択桁数は前記命令の前記制御によって指定され、前記選択桁数は前記入力オペランドの右端桁数を含む、請求項12または13に記載のコンピュータ・システム。
  15. 前記複数の基準は、実行する符号演算と、前記入力オペランドの符号と、前記命令の正符号コード制御とを含む基準のグループから選択された少なくとも1つの基準をさらに含む、請求項12ないし14のいずれかに記載のコンピュータ・システム。
  16. 前記実行することは、妥当性を検証することを示す前記命令の別の制御に基づいて、前記入力オペランドの符号の妥当性を検証することをさらに含む、請求項12ないし15のいずれかに記載のコンピュータ・システム。
  17. コンピューティング環境内での処理を容易にするためのコンピュータ・プログラム製品であって、
    処理回路によって読み取り可能なコンピュータ可読記憶媒体であり、請求項1ないし11のいずれかに記載の方法を実行するための、前記処理回路による実行のための命令を記憶する前記コンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品。
  18. コンピュータ可読媒体に記憶され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されると、請求項1ないし11のいずれかに記載の前記方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
  19. コンピュータ可読媒体に記憶され、請求項12ないし16のいずれかに記載の前記システムの内部メモリにロードされるコンピュータ・プログラムであって、前記プログラムが前記システム上で実行されると、請求項1ないし11のいずれかに記載の前記方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
JP2019514243A 2016-09-30 2017-09-22 実行符号演算10進命令 Active JP7021408B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/281,173 US10175946B2 (en) 2016-09-30 2016-09-30 Perform sign operation decimal instruction
US15/281,173 2016-09-30
PCT/EP2017/074091 WO2018060102A1 (en) 2016-09-30 2017-09-22 Perform sign operation decimal instruction

Publications (2)

Publication Number Publication Date
JP2019532415A true JP2019532415A (ja) 2019-11-07
JP7021408B2 JP7021408B2 (ja) 2022-02-17

Family

ID=60191332

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019514243A Active JP7021408B2 (ja) 2016-09-30 2017-09-22 実行符号演算10進命令

Country Status (17)

Country Link
US (2) US10175946B2 (ja)
EP (1) EP3519942B1 (ja)
JP (1) JP7021408B2 (ja)
KR (1) KR102238189B1 (ja)
CN (1) CN109791489B (ja)
AU (1) AU2017333837B2 (ja)
BR (1) BR112019006626A2 (ja)
CA (1) CA3036125A1 (ja)
ES (1) ES2965065T3 (ja)
HU (1) HUE064386T2 (ja)
IL (1) IL265549B (ja)
MX (1) MX2019003606A (ja)
PL (1) PL3519942T3 (ja)
RU (1) RU2718968C1 (ja)
TW (1) TWI651649B (ja)
WO (1) WO2018060102A1 (ja)
ZA (1) ZA201902529B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
US11099853B2 (en) * 2019-02-15 2021-08-24 International Business Machines Corporation Digit validation check control in instruction execution
US11023205B2 (en) * 2019-02-15 2021-06-01 International Business Machines Corporation Negative zero control in instruction execution
US11836459B2 (en) * 2021-03-30 2023-12-05 Apple Inc. Floating-point division circuitry with subnormal support

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103060A (ja) * 1992-09-19 1994-04-15 Pfu Ltd 演算処理装置および処理方法
JP2015506510A (ja) * 2011-12-29 2015-03-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ゾーン形式から10進浮動小数点形式への変換
US20160092163A1 (en) * 2014-09-30 2016-03-31 International Business Machines Corporation Machine instructions for converting from decimal floating point format to packed decimal format

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1405049A1 (ru) * 1985-10-31 1988-06-23 Предприятие П/Я Р-6886 Устройство дл суммировани двух чисел с плавающей зап той
RU2143726C1 (ru) * 1997-07-15 1999-12-27 Козлов Михаил Кириллович Формульный процессор с командоподобными логическими управляющими элементами
JP3886870B2 (ja) * 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7424501B2 (en) * 2003-06-30 2008-09-09 Intel Corporation Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations
US7797366B2 (en) * 2006-02-15 2010-09-14 Qualcomm Incorporated Power-efficient sign extension for booth multiplication methods and systems
US8560591B2 (en) 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
US8190664B2 (en) 2007-04-26 2012-05-29 International Business Machines Corporation Employing a mask field of an instruction to encode a sign of a result of the instruction
JP2009110353A (ja) 2007-10-31 2009-05-21 Hitachi Ltd マイクロコントローラ及び制御システム
US20090182984A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore
US8495125B2 (en) * 2009-05-27 2013-07-23 Microchip Technology Incorporated DSP engine with implicit mixed sign operands
TWI419481B (zh) * 2009-12-31 2013-12-11 Nat Univ Tsing Hua 低密度奇偶檢查碼編解碼器及其方法
US9329861B2 (en) * 2011-12-29 2016-05-03 International Business Machines Corporation Convert to zoned format from decimal floating point format
US9588762B2 (en) * 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9916185B2 (en) * 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9858058B2 (en) * 2014-03-31 2018-01-02 International Business Machines Corporation Partition mobility for partitions with extended code
US20160092162A1 (en) * 2014-09-30 2016-03-31 International Business Machines Corporation Machine instructions for converting to decimal floating point format from packed decimal format
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
US10127015B2 (en) * 2016-09-30 2018-11-13 International Business Machines Corporation Decimal multiply and shift instruction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06103060A (ja) * 1992-09-19 1994-04-15 Pfu Ltd 演算処理装置および処理方法
JP2015506510A (ja) * 2011-12-29 2015-03-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ゾーン形式から10進浮動小数点形式への変換
US20160092163A1 (en) * 2014-09-30 2016-03-31 International Business Machines Corporation Machine instructions for converting from decimal floating point format to packed decimal format

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"IBM Z-Architecture Principles of Operation SA22-7832-10", [ONLINE], vol. 第11版, JPN6021008597, March 2015 (2015-03-01), US, pages 3 - 8, ISSN: 0004462971 *

Also Published As

Publication number Publication date
CN109791489B (zh) 2023-08-11
ES2965065T3 (es) 2024-04-10
KR20190058502A (ko) 2019-05-29
WO2018060102A1 (en) 2018-04-05
AU2017333837B2 (en) 2020-07-16
US20180095727A1 (en) 2018-04-05
KR102238189B1 (ko) 2021-04-09
US20180095726A1 (en) 2018-04-05
EP3519942B1 (en) 2023-11-08
CA3036125A1 (en) 2018-04-05
IL265549A (en) 2019-05-30
TWI651649B (zh) 2019-02-21
PL3519942T3 (pl) 2024-02-26
TW201816601A (zh) 2018-05-01
BR112019006626A2 (pt) 2019-07-02
US10346134B2 (en) 2019-07-09
CN109791489A (zh) 2019-05-21
HUE064386T2 (hu) 2024-03-28
RU2718968C1 (ru) 2020-04-15
EP3519942A1 (en) 2019-08-07
ZA201902529B (en) 2022-04-28
MX2019003606A (es) 2019-06-17
EP3519942C0 (en) 2023-11-08
IL265549B (en) 2022-08-01
US10175946B2 (en) 2019-01-08
AU2017333837A1 (en) 2019-04-04
JP7021408B2 (ja) 2022-02-17

Similar Documents

Publication Publication Date Title
JP6916874B2 (ja) 第1の値と第2の値の比較を行う命令のためのコンピュータ・プログラム製品、コンピュータ・システムおよびコンピュータ実装方法
JP7021408B2 (ja) 実行符号演算10進命令
CN113518971A (zh) 指令执行中的数位验证检查控制
JP7398464B2 (ja) 命令の実行における負のゼロ制御
JP6909284B2 (ja) 10進シフトおよび除算命令
JP7101930B2 (ja) 10進乗算およびシフト命令
JP2024507651A (ja) 数値の形式変換方法
US10990390B2 (en) Decimal load immediate instruction

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190606

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210610

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20210610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20210611

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211130

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20211201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211206

R150 Certificate of patent or registration of utility model

Ref document number: 7021408

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150