JP7398464B2 - 命令の実行における負のゼロ制御 - Google Patents

命令の実行における負のゼロ制御 Download PDF

Info

Publication number
JP7398464B2
JP7398464B2 JP2021539403A JP2021539403A JP7398464B2 JP 7398464 B2 JP7398464 B2 JP 7398464B2 JP 2021539403 A JP2021539403 A JP 2021539403A JP 2021539403 A JP2021539403 A JP 2021539403A JP 7398464 B2 JP7398464 B2 JP 7398464B2
Authority
JP
Japan
Prior art keywords
sign
instruction
result
zero
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.)
Active
Application number
JP2021539403A
Other languages
English (en)
Other versions
JP2022520157A (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 JP2022520157A publication Critical patent/JP2022520157A/ja
Application granted granted Critical
Publication of JP7398464B2 publication Critical patent/JP7398464B2/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/4824Methods 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 using signed-digit representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • 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/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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/491Indexing scheme relating to groups G06F7/491 - G06F7/4917
    • G06F2207/4912Non-specified BCD representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Description

1つまたは複数の態様は、一般に、コンピューティング環境内での処理を容易にすることに関し、詳細には、命令の実行における負のゼロ制御の処理を容易にすることに関する。
2進化10進数(BCD)は、様々なコンピュータ・システムにおいて、パック10進形式およびゾーン10進形式などの異なる形式にわたって使用される10進数の一般的な符号化である。例えば、数+123(正の123)は、パック10進形式では、メモリ内で12 3Cと表現され、スペースによって異なるバイトの値を区切る。数12 3Cは、2バイトのデータ-4つの4ビット・フィールドを消費し、左端の3つ、すなわち最上位の4ビット・フィールドが数字1、2、および3の2進表現を保持し、最下位の4ビット・フィールドが「C」を保持し、符号コードが正の符号を示す。ゾーン10進形式では、+123は、3バイトのメモリ内でF1 F2 C3と表現される。3バイトの各々が、(i)数字の2進表現を保持する4ビット・フィールドと、(ii)その数字のゾーン・コードを保持する4ビット・フィールドとを含む。最初の2桁「1」および「2」がゾーン・コード「F」を有し、最後の桁「3」が、正を意味する符号コード「C」を有する。
COBOLなどのプログラミング言語において、ゾーン10進およびパック10進などの形式を操作するときに、特に2進化10進数で変換演算および移動演算を実行することが一般的である。COBOLおよびその他の言語には、通常、様々な場合について検証および符号修正を実行すべきかどうか、ならびにどの検証および符号修正を実行すべきかに関する明確な規則がある。これらの演算中に桁数を変更することおよび条件コードを設定することに加えて、桁および符号コードの妥当性をチェックすることもできる。パック10進数を例として使用すると、ハードウェアは、すべての桁の場所が0~9の範囲の数字を含むこと、および最下位の4ビット・フィールドがA~Fの範囲の符号コードを含むことをチェックする。チェックが失敗すると、データ例外が呼び出される。加えてまたはあるいは、これらの演算の一部として符号を修正することがある。
上記のような演算のパフォーマンスは、様々な命令セット・アーキテクチャ命令、例えば、インターナショナル・ビジネス・マシーンズ・コーポレーション、ニューヨーク州アーモンクにより提供されるz/Architecture(R)(z/Architectureは登録商標)ハードウェア・アーキテクチャの既知のVECTOR PERFORM SIGN OPERATION DECIMAL(VPSOP)命令によって改良されている。しかしながら、ある状況を所望の方式で処理することは、既存の命令によってまだ対処されていない。
例えば、比較的大きいBCD数を変換するには、変換を部分的に実行するいくつかの命令が必要である。関係する複数の変換ステップを通じて、ゼロの符号を維持することが望ましい場合がある。これに関し、ゼロ値が正または負などの符号を有し得ることが周知である。
比較的大きい(31桁)のBCD数の変換例を提示して説明する。ソースの31桁のパック10進数をターゲットのゾーン形式に変換するために、COBOLコンパイラは、3つのUNPK命令、例えば、UNPK1(15,8),400(8,13)、UNPK15(3,8),407(2,13)、UNPK16(16,8),407(9,13)を生成する。最後のUNPK命令は、ソースの最後の17桁を変換する。例えば、より新しい命令を使用してコンパイルされたCOBOLコードを最適化する最適化手順の一部として、最後のUNPK命令をベクトル命令に置き換えることは、VPSOP命令を使用して元の数を17桁に切り捨て、次にUNPK命令と同等のベクトルであるVECTOR UNPACK ZONED(VUPKZ)命令を使用する。最後の17桁がすべてゼロの場合、VPSOPの結果は、ソースの元の符号に関係なく正符号を有する。これは、元の数が負である場合、望ましくない結果につながる。
別の例において、COBOLコンパイラは、MVC命令とOI命令との組合せを使用してBCD数の符号を強制し、その後は桁をチェックしないことがある。しかしながら、一部の命令、例えばVPSOPは、このようなチェック演算を含むため、問題が生じるおそれがある。例えば、データをソースの場所(A、数12 3Cを含む)からターゲットの場所(B)に移動することが望ましいと仮定する。このシーケンスへの入力としての元の命令の例は、(MVC)データをソースAからターゲットBに移動し、ターゲットBで符号コード(OI)を0xFとして設定するMVC命令およびOI命令である。すなわち、
MVC B,A [Bはその後に12 3Cを含む]
OI B,0xF [Bはその後に12 3Fを含む。OIは符号をFに効果的に変更する「or-immediate」である]
MVCおよびOIはデータまたは符号検証を実行しない。これに対し、一部の命令、例えば、このCOBOLコード・シーケンスを最適化するために使用されるVPSOP命令は、10進数を検証し、無効である場合にデータ例外を投げるように構成されている。ソースAがA1 3Cであるシナリオを使用すると、「A1」の「A」が0~9の範囲の数字ではないことに留意されたい。COBOLのMVC+OIシーケンスは、A1 3FをターゲットBに適切に入れる。しかしながら、ソース入力A1 3Cは、Aが0~9の範囲の有効な数字ではないことに基づいて、VPSOP実行時にデータ例外を生じさせる。
特に上記のような非互換性のいくつかのインスタンスを含む大量のコードがあるときに、上記の状況をテストし補正するためにかなりのリソースが必要になることがある。
コンピューティング環境内における処理を容易にするためのコンピュータ・プログラム製品を提供することによって、先行技術の欠点が克服され、さらなる利点が提供される。コンピュータ・プログラム製品は、処理回路によって読取り可能であり、方法を実行するための命令を記憶するコンピュータ可読記憶媒体を含む。方法は、入力値を使用して1つまたは複数の演算を実行する命令を取得することを含む。命令は、単一のアーキテクト命令(architected instruction)であり、命令は、負のゼロ制御が命令の実行に関して有効にされているかどうかを示す負のゼロ制御指標を含む。方法はまた、命令を実行することを含む。実行することは、入力値を使用して1つまたは複数の演算を実行して、符号を有する結果を取得することを含む。実行することは、結果の符号を制御するかどうかを判定することも含む。この判定することは、負のゼロ制御指標が規定値に設定されていることに少なくとも部分的に基づく。実行することはまた、この判定することに基づいて、命令を実行することの一部としてさらなる処理を実行する。これは、実行することから出力された値の符号を命令ごとに制御するという利点を有する。負のゼロ制御を命令ごとに選択的に有効または無効にすることができるため、特定の符号(例えば正)が不適切であるか望ましくない場合であっても通常なら命令処理がその符号を結果に強制する状況を回避する能力をもたらす。
1つまたは複数の態様に関するコンピュータ実装方法およびシステムも記載され、本明細書で特許請求される。さらに、1つまたは複数の態様に関するサービスも記載され、本明細書で特許請求され得る。
実施形態において、負のゼロ制御指標が規定値に設定されていることは、負のゼロ制御が命令の実行に関して有効にされていることを示す。1つまたは複数の演算を実行した結果が符号を有する数値ゼロである場合、判定することは、負のゼロ制御が命令の実行に関して有効にされていることに基づいて、数値ゼロの符号を制御しないと判定することができる。さらなる処理は、この状況において、命令の実行の出力を生成することを含むことができ、出力は符号を有する数値ゼロを含む。これは、ゼロの結果の一部として与えられた符号を、任意の特定の(例えば正)符号を強制することなく、実行の出力として渡すことができるという利点を有する。これは、通常なら強制される正のゼロに選択的にオーバライドし、代わりに負のゼロの出力を有効にする能力をもたらす。
さらに他の実施形態において、負のゼロ制御指標は、負のゼロ制御が命令の実行に関して有効にされていないことを示す、規定値とは異なる別の値に設定される。1つまたは複数の演算を実行した結果が符号を有する数値ゼロである場合、判定することは、負のゼロ制御が有効にされていないことに基づいて、数値ゼロの符号を強制的に正にすると判定することができる。さらなる処理は、この状況において、命令の実行の出力を生成することを含むことができ、生成することは、数値の符号を強制的に正にすることを含み、出力は強制正符号を有する数値ゼロを含む。これは、所望のときに正符号の強制を選択的に有効にすることができるという利点を有する。
実行することは、結果がゼロの大きさを有するかどうかを判定することをさらに含むことができ、結果の符号を制御するかどうかを判定することおよびさらなる処理を実行することを、結果がゼロの大きさを有すると判定したことに基づいて実行することができる。ゼロの大きさの結果でない場合、後者のステップを省略することができる。これは、ある処理を省略することにより、実行時間および効率を高速化し、可能であればコンピューティング・リソースを節約することができるという利点を有する。
結果の符号を制御するかどうかを判定することは、命令の実行のための選択されたモードにさらに基づいていてよい。より詳細には、選択されたモードは、命令の選択された符号演算を含むことができ、選択された符号演算は命令のフィールドによって選択される。これは、結果の符号を強制的に生じさせること、または命令によって実行される選択された符号演算に依存しないことを可能にすることにより、いつ符号変更を強制するかに関して柔軟性および選択性をもたらすという利点を有する。
さらなる特徴および利点が、本明細書に記載の技術によって実現される。その他の実施形態および態様が、本明細書において詳細に説明され、特許請求される態様の一部とみなされる。
本明細書に記載の態様は、特に本明細書の末尾の特許請求の範囲において例として示され、明確に特許請求されている。本発明の上記およびその他の目的、特徴、ならびに利点は、以下の詳細な説明を添付図面と共に読めば明らかになる。
本発明の1つまたは複数の態様を組み込んで使用するコンピューティング環境の一例を示す図である。 本発明の1つまたは複数の態様による、図1Aのプロセッサのさらなる詳細を示す図である。 本発明の1つまたは複数の態様を組み込んで使用するコンピューティング環境の別の例を示す図である。 本明細書に記載の態様による、命令の負のゼロ制御指標および検証なし指標(no validation indicator)に基づく命令の実行の一例を示す図である。 本明細書に記載の態様による、図3の命令の負のゼロ制御指標を使用することに関連する処理の一例を示す図である。 本明細書に記載の態様による、図3の命令の検証なし指標を使用することに関連する処理の一例を示す図である。 本明細書に記載の態様により構成された命令の例の特徴を示す図である。 本明細書に記載の態様により構成された命令の例の特徴を示す図である。 本明細書に記載の態様により構成された命令の例の特徴を示す図である。 本明細書に記載の態様により構成された命令の例の特徴を示す図である。 本明細書に記載の態様により構成された命令の例の特徴を示す図である。 本明細書に記載の態様による、コンピューティング環境内の処理を容易にする例を示す図である。 本明細書に記載の態様による、コンピューティング環境内の処理を容易にする例を示す図である。 本明細書に記載の態様を組み込んで使用するコンピューティング環境の別の例を示す図である。 図7Aのメモリのさらなる詳細を示す図である。 クラウド・コンピューティング環境の一実施形態を示す図である。 抽象化モデル層の一例を示す図である。
様々なシナリオで、様々なマシン命令の実行におけるデータ検証またはゼロ符号強制あるいはその両方を制御することが望ましい場合がある。あるコンパイルされたCOBOLコードを最適化するVPSOP命令を含む上記の例では、入力データの桁検証チェックを抑制するチェック抑制が望ましい場合がある。
本明細書に記載の態様は、そのようなデータ検証およびゼロ符号制御を提供する。これにより、これらのアクティビティを命令実行の一部として実行するかどうか、およびいつ実行するかに関して柔軟性をもたらすことによって、結果として得られるコードの複雑さを軽減する。さらに、これらのアクティビティを実行するかどうかを制御することにより、パフォーマンスが向上する。
本明細書に記載の態様によれば、コンピューティング環境内における処理を容易にする機能が提供される。一例において、この機能は、命令ごとに、ゼロ符号制御、例えば負のゼロ制御を、符号付きゼロ値を生成する命令の演算の一部として行うことを含む。演算は、例えば、コンピュータ演算(例えば、算術-10進、2進化10進、浮動小数点)、変換演算(例えば、2進数から10進数へ、10進数から2進数へなど)、または移動演算(例えば、10進値を1つの場所(例えばレジスタ)から別の場所へ移動する)、あるいはその組合せを例として含む。結果の符号に対する制御、特に負のゼロの結果が命令実行の出力となり得るかどうかの制御は、効率的な演算を可能にし、すべてのシナリオで所望の結果を取得することを可能にすることによって、エラーまたは他のチェックを実行する必要を回避し、全体的なパフォーマンスを向上させる。
特定の例において、命令コード内の修飾子ビットを設けて、負のゼロ制御を有効または無効にする、例えば、ゼロの結果の符号が維持されるか反転されるか、より詳細には、ゼロの大きさの結果が最初にどのように符号付けされたかに関係なく正のゼロとして出力されるように強制するかどうかを制御する。修飾子ビットは、本明細書で使用されるように「負のゼロ制御指標」であってよい。一部の例において、負のゼロ制御指標は新しいアーキテクト命令に組み込まれる。他の例において、負のゼロ制御指標は既存のアーキテクト命令に、例えば既知のVPSOP命令の拡張として組み込まれる。VPSOP命令の特定の例において、負のゼロ制御指標は、本明細書で説明するように、VPSOP命令の維持および補完モード/変形に利用されてよい。維持および補完は、現在のVPSOP命令のいくつかの(例えば4つの)モード/変形のうちの2つである。モードは、その命令の符号コードにより指示される符号演算に関連する。
本明細書に記載の他の態様によれば、命令ごとに桁検証チェック制御を行うことを含む、コンピューティング環境内における処理を容易にする機能が提供される。特定の例において、命令コード内の修飾子ビットが、桁チェック・エラー表示を制御するために設けられる。これらの修飾子ビットを、本明細書で「検証なし指標」と称する。一部の例において、検証なし指標は、新しいアーキテクト命令に組み込まれる。他の例において、検証なし指標は、例えば既知のVPSOP命令の拡張として、既存のアーキテクト命令に組み込まれる。
したがって、負のゼロ制御指標または検証なし指標あるいはその両方を、新しい命令に組み込むことができ、または既存のVPSOP命令などの既存の命令に対する修正として組み込むことができる。既存の命令について、未使用の、または別の目的で使用可能な命令テキスト内のビットを、代わりに負のゼロ制御指標または検証なし指標あるいはその両方として使用して、本明細書に記載の機能性を提供することができる。
態様は、上記のCOBOLの場合に通常なら受けるパフォーマンス低下を解消することができる。例えば、本明細書に記載の改良がなければ、MVCとOIとの組合せなどのいくつかの既存の命令は拡張されず、したがって、周囲のCOBOL演算をより効率的な命令に変換することができたとしても、通常なら最適化されるコードに最適化されずに伝えられる。加えて、元のCOBOLコードの一部が最適化されていないと、最適化することのできない部分と密接な関係がある場合に、元のCOBOLコードの他の部分を最適化することが困難または不可能になるおそれもある。
一例として、命令は命令セット・アーキテクチャ(ISA)の一部である。例えば、命令は、ハードウェア/ソフトウェア・インターフェースにおける単一のアーキテクト・ハードウェア・マシン命令である。命令は、コンピュータ演算、変換演算、移動演算、符号演算、または他の演算、あるいはその組合せを実行するいくつかの命令のうちの1つであってよい。命令は、コンピュータ処理、セキュリティ処理、エミュレーション、コード最適化、および様々な技術についての計算の実行を例として含むがこれらに限定されない多くの種類の処理において使用される。
態様によれば、桁検証チェック制御または負のゼロ制御あるいはその両方を、命令ごとに有効および無効にすることができる。例えば、負のゼロ制御指標および検証なし指標が命令に含まれ(または、それ以外の方法で命令に関連付けられ)、命令に設定されると、負のゼロ制御および桁検証チェック制御をそれぞれ一時的に有効にする。
図1Aを参照しながら、本発明の1つまたは複数の態様を組み込んで使用するコンピューティング環境の一実施形態について説明する。コンピューティング環境100は、プロセッサ102(例えば、中央処理装置)と、メモリ104(例えば、メイン・メモリ、システム・メモリ、メイン・ストレージ、中央ストレージ、ストレージとも称する)と、例えば、1つまたは複数のバス108またはその他の接続あるいはその両方を介して互いに結合された、1つまたは複数の入出力(I/O)デバイスまたはインターフェース106あるいはその両方とを備える。
一例において、プロセッサ102は、インターナショナル・ビジネス・マシーンズ・コーポレーション、ニューヨーク州アーモンクにより提供されるz/Architecture(R)ハードウェア・アーキテクチャに基づいており、同じくインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される、z/Architecture(R)ハードウェア・アーキテクチャを実装するIBM Z(R)サーバなどのサーバの一部である。z/Architecture(R)ハードウェア・アーキテクチャの一実施形態が、参照により本明細書に完全に組み込まれている、「z/Architecture Principles of Operation」と題する刊行物、IBM Publication、第SA22-7832-11号、第12版、2017年9月に記載されている。しかしながら、z/Architecture(R)ハードウェア・アーキテクチャは、アーキテクチャの一例に過ぎず、他のアーキテクチャまたは他の種類のコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むまたは使用するあるいはその両方を行うことができる。一例において、プロセッサは、同じくインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/OS(R)オペレーティング・システムなどのオペレーティング・システムを実行する。
プロセッサ102は、命令を実行するために使用される複数の機能コンポーネントを含むことができる。図1Bに示すように、これらの機能コンポーネントは、例えば、実行する命令をフェッチする命令フェッチ・コンポーネント120、フェッチされた命令をデコードし、デコードされた命令のオペランドを取得する命令デコード・ユニット122、デコードされた命令を実行する命令実行コンポーネント124、必要に応じて、命令実行のためにメモリにアクセスするメモリ・アクセス・コンポーネント126、および、実行された命令の結果を提供するライト・バック・コンポーネント130を含む。本発明の1つまたは複数の態様により、これらのコンポーネントのうちの1つまたは複数が、本明細書に記載の桁検証チェック制御処理または負のゼロ制御処理あるいはその両方を含む妥当性チェックまたは負のゼロ処理あるいはその両方で使用される1つまたは複数の他のコンポーネントの少なくとも一部を含む、またはこれらのコンポーネントにアクセスできる。1つまたは複数の他のコンポーネントは、例えば、妥当性チェック・コンポーネント136および負のゼロ・コンポーネント138を含む。
図2を参照して、本発明の1つまたは複数の態様を組み込んで使用するコンピューティング環境の別の例を説明する。一例において、コンピューティング環境は、z/Architecture(R)ハードウェア・アーキテクチャに基づいているが、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーションなどにより提供される他のアーキテクチャに基づいていてもよい。
図2を参照すると、一例において、コンピューティング環境は中央電子処理装置(CEC)200を含む。CEC200は、例えば、1つまたは複数のプロセッサ(中央処理装置(CPU)とも称する)204および入出力サブシステム206に結合されたメモリ202(システム・メモリ、メイン・メモリ、メイン・ストレージ、中央ストレージ、ストレージとも称する)などの複数のコンポーネントを含む。
メモリ202は、1つまたは複数の論理パーティション208、論理パーティションを管理するハイパーバイザ210、およびプロセッサ・ファームウェア212を含む。ハイパーバイザ210の一例は、インターナショナル・ビジネス・マシーンズ・コーポレーション、ニューヨーク州アーモンクにより提供されるプロセッサ・リソース/システム管理機構(PR/SM(R))ハイパーバイザである。本明細書で使用されるとき、ファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、より高レベルのマシン・コードの実装において使用されるハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態において、ファームウェアは、例えば、基盤となるハードウェア専用の信頼できるソフトウェアまたはマイクロコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御するマイクロコードとして提供される独自のコードを含む。
各論理パーティション208は、別個のシステムとして機能することができる。すなわち、各論理パーティションは、独立してリセットされ、z/OS(R)オペレーティング・システムまたは別のオペレーティング・システムなどのゲスト・オペレーティング・システム220を実行し、異なるプログラム222で動作することができる。論理パーティションで実行するオペレーティング・システムまたはアプリケーション・プログラムは、十分かつ完全なシステムにアクセスできるように見えるが、実際には、その一部しか使用できない。
メモリ202は、論理パーティションに割り当てられ得る物理プロセッサ・リソースであるプロセッサ(例えば、CPU)204に結合される。例えば、論理パーティション208は1つまたは複数の論理プロセッサを含み、その各々が、論理パーティションに動的に割り当てられ得る物理プロセッサ・リソース204のすべてまたはシェアを表す。一例において、プロセッサ204は、本明細書で説明するように、桁検証チェック制御を実行する妥当性チェック・コンポーネント260と、負のゼロ制御とも称するゼロ符号制御を実行する負のゼロ制御コンポーネント262とを含む。
さらに、メモリ202は、I/Oサブシステム206に結合される。I/Oサブシステム206は、中央電子処理装置の一部であってもよく、またはそれとは別個であってもよい。I/Oサブシステム206は、メイン・ストレージ202、入出力制御ユニット230、および中央電子処理装置に結合された入出力(I/O)デバイス240の間の情報の流れを指示する。
多くの種類のI/Oデバイスを使用することができる。1つの特定の種類はデータ・ストレージ・デバイス250である。データ・ストレージ・デバイス250は、1つまたは複数のプログラム252、1つまたは複数のコンピュータ可読プログラム命令254、またはデータ、あるいはその組合せなどを記憶することができる。コンピュータ可読プログラム命令は、本明細書に記載の態様の実施形態の機能を実行するように構成されてよい。
本明細書に記載の態様の実施形態の機能を実行するように構成されたコンピュータ可読プログラム命令はまた、もしくは代わりに、メモリ202に含まれていてもよい。多くの変形形態が可能である。
中央電子処理装置200は、リムーバブル/非リムーバブルの揮発性/不揮発性コンピュータ・システム記憶媒体を含む、またはこれに結合される、あるいはその両方であってよい。例えば、中央電子処理装置200は、非リムーバブルの不揮発性磁気媒体(通常「ハード・ドライブ」と呼ばれる)、リムーバブルの不揮発性磁気ディスク(例えば、「フロッピ(R)・ディスク」)に対して読取りおよび書込みを行う磁気ディスク・ドライブ、または、CD-ROM、DVD-ROM、もしくは他の光媒体などのリムーバブルの不揮発性光ディスクに対して読取りおよび書込みを行う光ディスク・ドライブ、あるいはその組合せを含む、またはそれに結合される、あるいはその両方であってよい。他のハードウェアまたはソフトウェア・コンポーネントあるいはその両方を中央電子処理装置200と組み合わせて使用してもよいことを理解されたい。例として、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどが挙げられるが、これらに限定されない。
さらに、中央電子処理装置200は、多数の他の汎用もしくは専用コンピューティング・システム環境または構成と共に動作可能であってよい。中央電子処理装置200と共に使用するのに適している可能性のある周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例として、パーソナル・コンピュータ(PC)・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのうちのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
コンピューティング環境の様々な例が本明細書に記載されているが、本明細書に記載の1つまたは複数の態様を多くの種類の環境と共に使用してもよい。本明細書に提示されるコンピューティング環境は例に過ぎない。
本明細書に記載の態様によれば、プロセッサ102または204などのプロセッサで実行する命令は、本明細書に記載の負のゼロ制御が命令の実行に関して有効にされているかどうかを示す命令ごとの負のゼロ制御指標を含む、またはこれにアクセスできる。負のゼロ制御を有効にすることにより、命令を実行することにより出力されたゼロの結果の符号が負になり得る。負のゼロ制御指標で示されるように、負のゼロ制御が有効にされていない同様の状況では、負符号付きのゼロの大きさの結果が、強制的に正符号付きのゼロの大きさの結果にされる。一部の例において、命令の実行は、ゼロの大きさの結果の符号を負に設定する演算を実行する。本明細書に記載の態様による、負のゼロ制御指標に依存する命令のさらなる処理は、そのゼロ値に正符号を強制し、またはゼロの結果が負符号を含んで出力されることを可能にする。したがって、負のゼロ制御指標は、負のゼロが許容可能な出力データ結果であるかどうかを制御することができる。
本明細書に記載の別の態様によれば、プロセッサ102または204などのプロセッサで実行する命令は、桁検証チェック制御が命令の実行に関して有効にされているかどうかを制御する命令ごとの検証なし指標を含む、またはこれにアクセスできる。桁検証チェック制御が有効にされているかどうかを制御することにより、そのような桁検証チェックを希望に応じて無効または有効にすることができる。桁検証チェック制御が有効にされていることは、命令の実行の一部として実行された桁検証が桁チェック・エラーを示しているかどうかにかかわらず、命令の実行により桁チェック・エラーがないことを強制的に示すことを指す。
図3、図4A、および図4Bを参照しながら、負のゼロ制御指標、検証なし指標、およびこれらに関連付けられた処理に関するさらなる詳細について説明する。
図3は、本明細書に記載の態様による、命令の負のゼロ制御指標および検証なし指標に基づく命令の実行の一例を示す。
最初に図3を参照すると、一実施形態において、命令300は、負のゼロ制御指標(NZ)を有するフィールド304、検証なし指標(NV)を有するフィールド306、および命令テキスト(Iテキスト)302の一部として含まれる1つまたは複数の他のフィールドを含む複数のフィールドを含む。命令テキストは、例えば、命令テキストにより指定される演算を実行するために使用されるオペランドを含む。命令は、例えば、10進演算、2進化10進演算、浮動小数点演算などの算術演算、2進数から10進数へ、10進数から2進数へなどの変換演算、または移動演算(例えば、移動10進)、あるいはその組合せを例として含むがこれらに限定されない多くの種類の演算を、入力データ316に対して実行することができる。したがって、入力データ316は、例として、レジスタ・ファイル、キャッシュ、またはメモリ階層からの1つまたは複数のオペランドであってよく、またはこれを含んでよい。1つまたは複数のオペランドは、例えば2進化10進データであってよく、またはこれを含んでよい。
別の実施形態において、NZ指標およびNV指標は、命令の明示的なフィールドではなく、代わりに命令の黙示的なフィールドまたはレジスタに含まれる。さらに、別の実施形態において、NZ指標およびNV指標は、命令自体の一部ではなく、命令にアクセスできる場所(例えば、レジスタもしくはメモリの場所)にあるか、実行する命令を修正するために使用される別の命令(例えば、プリフィックス命令)の一部である。実施形態に関係なく、NZ指標およびNV指標は、1つまたは複数の演算を実行する命令に関して特に与えられる命令ごとの指標である。
図3の例における命令は、負のゼロ制御および検証なし制御に関してNZ指標およびNV指標の両方を含むことにも留意されたい。他の実施形態において、命令は、場合によって負のゼロ制御のみまたは検証なし制御のみを行うように、指標の一方のみを含む。
図3を続けて参照すると、命令はプロセッサの命令順序付けユニット310の発行キュー308にディスパッチされ、そこで、例えば、そのオペランドが使用可能になるまで待機する。準備ができると、プロセッサの実行ユニット312の適切な機能実行ユニット314に命令が発行される。例として、命令が10進命令である場合には、10進計算を実行する機能ユニットに発行され、命令が浮動小数点命令である場合には、浮動小数点機能ユニットに発行される。他の例が可能である。
実行ユニット314は、実行する命令ならびにNZ制御指標304およびNV指標306を受け取る。命令が実行され、1つまたは複数の演算が実行される。桁チェック・エラー322が示され、命令を実行した結果として出力データ332が生成される。
本明細書に記載の態様によれば、NZ制御指標はゼロ符号制御コンポーネント326に入力され、NV指標は、322で桁チェック・エラーが報告されるかどうかを示すために使用される論理演算子、すなわちANDゲート320に入力される。NV指標に関して、桁検証チェック制御が有効にされ、例えばNV=1であることにより、桁検証チェックを制御し、322で桁チェック・エラーがないことを強制的に報告する場合には、桁チェック・エラー322は、桁検証エラーがあることを桁検証チェック318が示しているかどうかに関係なく、桁チェック・エラーがないことを示すものとなる。負のゼロ制御が有効にされ、例えばNZ=1であることにより、負のゼロが許容可能な出力データ結果であることを示す場合には、正または負の符号付きのゼロの結果が命令の実行の出力であってよい。負のゼロ制御が無効にされ、例えばNZ=0である場合には、本明細書に記載の態様により、計算324のゼロの結果の符号328が、例えば負から正への潜在的な反転を受け、計算324の結果が負のゼロであったとしても、出力データ332の数字330が、例えば正の符号328を有するようになっている。
負のゼロ制御(NZ)指標は、負のゼロ制御を有効または無効にすることにより、計算324の出力ゼロ値の符号を制御する効果を有する。負のゼロ制御が有効にされていることは、負のゼロの結果を実行の出力とすることを可能にする命令の実行を制御することを指す。負のゼロ制御がNZ指標を用いて無効にされると、これにより、特定の、例えば正符号をゼロの大きさの結果に強制することができる。この強制は、計算324により出力された結果の符号に対する操作が必ず行われることを意味するのではなく、結果に既に正符号が付いている場合、符号は、強制的な正の出力を受けたとしても変更されないことに留意されたい。計算324の結果の符号を変更するかどうかは、例えば、所与の命令についての特定の符号演算に依存し得る。例えば、ある命令を、特定の符号演算に対応する異なるモードで実行することができる。そのような1つの符号演算は、処理の任意の結果が正符号を有することを示すことができる。この場合には、NZが有効にされているかどうかに関係なく、ゼロの大きさの値の符号の反転が生じる可能性がある。
したがって、計算324により計算された結果に符号変更を行うか行わないかは、命令の入力データ、計算自体、NZ制御指標、および符号演算に応じて変化する。一部の例において、図5Bに示すようなルックアップ・テーブルを使用して、ゼロ符号制御326が計算324により与えられた符号を反転させるか維持するかを示す。ゼロ符号制御326は、計算324により出力されたゼロの結果の符号を維持するか、代わりに符号を反転させるかを制御する。
例示のために、4つのモード、すなわち、維持、補完、強制正、および強制負に対応する符号演算を有するVPSOP命令の例を挙げる。強制正の場合、出力は常に正符号が付けられる。出力のゼロの大きさの結果は、NZ=0であるかNZ=1であるかに関係なく、正符号が付けられる(例えば00 0Cまたは00 0F)。したがって、負符号が付いた任意のゼロの大きさの結果(例えば00 0D)は、NZ指標の値に関係なく強制的に正(例えば00 0Cまたは00 0F)となる。
維持の場合は、値の符号を維持する。負のゼロ、例えば00 0Dの従来のVPSOP処理は、結果の符号を維持することを示す符号演算にかかわらず正のゼロを生成する。これは、従来のVPSOPが負符号の付いたゼロを出力しないからである。しかしながら、本明細書に記載の負のゼロ機能により、負のゼロ制御が有効にされている場合は、結果が異なる。例えば、負のゼロ制御が有効にされていなない(NZ=0)場合、実行は正符号を強制的に負のゼロの結果にする。命令は、維持の場合に正のゼロを出力する。代わりにNZ=1であって、負のゼロ制御を有効にする場合には、本明細書に記載の態様により、負のゼロ入力が維持され、負のゼロとして出力される。すなわち、NZ=0のとき、負のゼロの結果は、従来のVPSOPの強制正の実施または本明細書に記載の処理を受けない。
強制負の場合、従来のVPSOP処理はゼロ出力が負符号を有することを許可しないため、ゼロの大きさの値の出力は正のゼロになる。したがって、従来のVPSOP処理の例は、入力00 0x(xは任意の入力符号)に正のゼロを出力する。NZ=0の場合には、負のゼロ制御は有効にされず、出力は従来の機能と同様、すなわち正のゼロになる。しかしながら、代わりにNZ=1の場合には、本明細書に記載の態様により、負のゼロの出力が可能になる。負符号が付いたゼロ値の結果を行け取っているゼロ符号制御326は、負のゼロを出力する。したがって、入力00 0x(xは任意の入力符号)は負のゼロの出力となる。
補完の場合、従来のVPSOP処理は、出力の負のゼロに正のゼロを補完しない。しかしながら、負のゼロ制御が有効にされている(例えばNZ=1)状態で、負のゼロの生成および出力が可能になる。ゼロ符号制御326は、いずれかの符号のゼロの大きさの結果を命令の出力として渡すことにより、正のゼロ入力の補完を可能にする。したがって、入力の正のゼロは負のゼロに変更され、そのように出力される。
図4Aを参照して、負のゼロ制御指標に関連付けられた処理に関するさらなる詳細について説明する。一例において、この処理は、プロセッサ102またはプロセッサ204などのプロセッサにより実行される。
図4Aを参照すると、最初に、ステップ400で、命令がプロセッサの実行ユニット(例えば、実行ユニット312)に発行される。ステップ402で、命令がプロセッサの実行ユニットにより実行されて計算を実行する。問合せ404で、結果がゼロの大きさ(すなわち数値ゼロ)を有するかどうかを判定する。結果がゼロの大きさを有していない場合(404、N)には、ステップ410で、プロセスは、例えば、符号付けされた結果を含むデータを出力する。代わりに404で結果がゼロの大きさを有する場合(404、Y)には、問合せ406で、プロセスはNZが0に等しいかどうかを判定する。NZがゼロに等しくない場合(406、N)、例えばNZ=1である場合には、負のゼロ制御は有効にされ、したがって、正のゼロの結果に伴う負のゼロの大きさの結果が有効にされて出力される。プロセスはステップ410に進み、正または負に符号付けされた結果を含むデータを出力する。そうでなく、NZが0に等しい場合(406、Y)、負のゼロ制御は無効にされ、プロセスは進んで、ステップ408で強制的に正符号を結果とし、ステップ410で強制正符号を含む結果を含むデータを出力する。強制的に正符号にすることは、結果の符号に変更を行ったこと自体を暗示するものではなく、結果に正符号が付けられた場合には、変更は不要であることに留意されたい。このシナリオにおいても、正のゼロの結果は、記載したプロセスの強制正符号の態様(ステップ408)を受けることがあり、出力データの一部としてそこから出力される(ステップ410)。
一部の例において、負のゼロ制御は、負のゼロ指標が設定されるときに有効にされると言われている。負のゼロ制御指標は、例えば図4Aに示すように、規定値、例えば1に設定されるときに設定されると言われている。負のゼロ制御指標が別の規定値、例えばゼロ(「0」)に設定される場合には、負のゼロ制御は有効にされない。負のゼロ制御を有効および無効にするための特定の規定値は変化することができ、例えば「0」は負のゼロ制御を有効にすることができ、「1」は負のゼロ制御を無効にすることができる。
図3に戻って参照すると、検証チェック318は、命令の入力データ316、例えば入力オペランドに対する桁検証チェックを含む。桁検証チェックとは、入力オペランドが例えば0~9の範囲の有効な桁を含むことをチェックすることである。しかしながら、これは、有効な数が文字と数字の組合せにより桁として形成されている場合、例えば、Aが値の残りの範囲(A~F)における非数値符号化を表す場合には問題となり得る。
図3の態様によれば、検証チェック318が実行され、出力がANDゲート320に送られて、別の入力、この場合はNV指標(または、その修正変形、例えば反転)とAND演算される。ANDゲートの出力は桁チェック・エラー指標322である。ANDゲートは、ANDゲートに送られた検証チェック318の結果を桁チェック・エラー322として使用するかどうかを制御する。その結果を偽値、例えば「0」とAND演算すると、桁チェック・エラー322に関して常に偽の(例えば「0」)結果が生成される。これは桁チェック・エラーが存在しないことを意味すると解釈される。値「1」または別の真値とAND演算すると、318の出力、すなわち桁チェック・エラーが318により示されたかどうかに応じた、真または偽の桁チェック・エラーが効果的に生じる。このようにして、検証チェック318の結果を桁チェック・エラー322として選択的に使用しても使用しなくてもよく、この選択的制御を本明細書で「検証チェック制御」と称する。有効にされている場合、制御は桁チェック・エラー指標322を制御するように働く。無効にされている場合には、そのような制御は働かず、桁チェック・エラー指標322は、例えば、検証チェック318により示されたものとなる。
一部の例において、桁検証チェック制御は、検証なし制御指標が設定されるときに有効にされると言われている。検証なし制御指標は、例えば、規定値、例えば1に設定されるときに設定されると言われている。検証なし制御指標が別の規定値(例えば、ゼロ)に設定される場合には、検証なし制御は有効にされない。検証なし制御を有効および無効にするための特定の規定値は変化することができ、例えば「0」は検証なし制御を有効にすることができ、「1」は検証なし制御を無効にすることができる。
一部の例において、NV指標は、桁チェック・エラー指標322を設定する際に使用される。特定の一例において、NVは単一のビットであり、1に設定されると、検証チェック318の結果が抑制されること、すなわち、検証なし制御が有効にされることを示す。ANDゲートを使用する図3のような場合、NVビットをANDゲート320に入力する前に反転させることができる。1を「偽」値である0に反転させることにより、ANDゲート320は少なくとも1つの偽値を受け取って、ANDゲートは桁チェック・エラーがないことを示す「偽」を桁チェック・エラー322として出力する。これは、桁チェック・エラーが検証チェック318により示されたかどうかとは関係ない。
図3におけるANDゲートの使用は、桁チェック・エラーが322により示されるかどうかを制御することの一例に過ぎない。別の例として、ANDゲートまたは他のハードウェア回路が、検証チェック318の前に位置し、少なくともNV指標の値を入力として利用する。検証チェックの前に位置するこの回路は、桁チェック・エラーがないことを検証チェックに示させるいくつかの有効な入力を検証チェック318に出力するように構成されていてよい。例えば、検証チェックにゼロ値を入力すると、桁チェック・エラーがないことを示すことができる。NV=1であって検証なし制御を有効にする特定の例において、NV指標はゼロに反転されてANDゲートに入力され、ANDゲートの出力が検証チェック318への入力として送られる。それにより、検証チェック318への入力をゼロにし、検証チェックから0の出力を生じさせることにより、桁チェック・エラー322がないことを示す。
図4Bを参照して、検証なし制御の使用に関連付けられた処理について説明する。一例において、この処理は、プロセッサ102またはプロセッサ204などのプロセッサにより実行される。
図4Bを参照すると、最初に、ステップ420で、命令がプロセッサの実行ユニット(例えば、実行ユニット312)に発行される。ステップ422で、命令がプロセッサの実行ユニットにより実行されて検証チェック、例えば桁検証チェックを実行する。問合せ424で、桁検証チェック制御が有効にされているかどうかを判定する。桁検証チェック制御とは、出力される桁チェック・エラー指標(322)に制御を加えるか否かを指す。検証チェック制御が有効にされていることは、桁チェック・エラー指標に制御が加えられないことを意味する(例えば、桁チェック・エラーがないことを示す)。制御が無効にされていることは、桁チェック・エラー指標にそのような制御が加えられず、桁チェック・エラー指標が、例えば、検証チェック422により示されたものであることを意味する。一例において、この判定は、検証なし(NV)指標をチェックすることにより行われる。桁検証チェック制御が有効にされている場合(424、Y)には、ステップ426で、桁チェック・エラー指標に、桁チェック・エラーがないことを示すように強制する。特定の例において、これは、桁検証チェックの出力をANDゲートなどの回路に送って、回路の出力が桁チェック・エラーがないことを示す桁チェック・エラー指標322になるようにすることによって達成される。
代わりに検証チェック制御が有効にされていないと判定された場合(424、N)には、ステップ428で、プロセスは、桁検証チェックの結果を桁チェック・エラー指標の出力として使用する。
したがって、本明細書に記載の態様は、BCD桁チェックの抑制およびゼロの大きさの結果のBCD符号の維持または反転を命令語で符号化するものである。
図3および図4Bの例では、桁検証チェックは無条件に実行され、その出力は、(i)エラーがないことを示すように選択的に操作される、または(ii)出力桁チェック・エラー指標としてスルーすることができる。検証なし制御が有効にされている場合、結果はチェック・エラーの抑制である。しかしながら、一部の実施形態において、桁検証チェック制御が有効にされている場合、検証チェックはすべて省略される。言い換えると、いくつかのシナリオにおいて、例えば対象命令が選択されたソフトウェア・コードを用いてアーキテクチャ上でエミュレートされている場合、検証チェック318自体を阻止するか、またはすべて省略することができる。その場合、NV指標をチェックすることができ、桁チェック検証制御が有効にされていることを示す規定値にNVが設定されている場合、ソフトウェアの桁チェック処理を省くことができる。
前述したように、負のゼロ制御指標または検証なし指標あるいはその両方を新しい命令に組み込む、または既存の命令に対する修正もしくは拡張として組み込むことができる。命令の一例は、既知のVPSOP命令の変形である。図5A~図5Eは、本明細書に記載の態様により構成された命令の例の特徴を示す。
図5Aは、例示的な命令形式を示す。命令は、演算コード・フィールド502a、502b、第1のオペランドのための第1のオペランド・フィールド504、第2のオペランドのための第2のオペランド・フィールド506、中間データ・フィールド508、510、マスク・フィールド512、および拡張フィールド514を含む。
この命令では、第2のオペランドの修正された符号および指定された右端桁数が、第1のオペランドの場所に入れられ、他の桁がゼロに設定される。オペランドおよび結果は、符号付きパック10進形式である。
オペランド2検証なし(NV)制御が1でない場合、第2のオペランドのすべての桁コードを妥当性に関してチェックする。命令の例の演算を示す表である図5Bに明示するように、第2のオペランドの符号コードを、符号演算(SO)制御、オペランド2符号検証(SV)制御、およびオペランド2検証なし(NV)制御に基づいて、妥当性に関してチェックする。表は、以下の列、すなわち、符号演算(SO)520、結果の大きさ(RDC適用後)522、V2符号524、正符号コード(PC)526、負のゼロ(NZ)528、V2符号コード妥当性チェック530、~の場合に実行するV2桁コード妥当性チェック532、結果符号コード(hex)534、および条件コード536を含む。
図5Bに明示するように、結果符号コードは、SO制御、第2のオペランド符号、第2のオペランド桁、結果桁数(RDC)制御、正符号コード(PC)制御、および負のゼロ(NZ)制御に応じて変化する。
図5Bにおいて、「-」は、結果がこの値に依存しないことを示し、「a」は、結果のいずれかのビットがゼロ以外である場合に結果の大きさがゼロ以外とみなされることを示し、「b」は、0~9の符号コードが無効とみなされることを示し、「c」は、これにより抑制データ例外を生成することを示し、「d」は、表が非オーバフローの場合の条件コードを示していることを示し、オーバフローの場合は条件コード3(CC3)を与える。
RDC制御が、第2のオペランドの左端のゼロ以外の桁をすべて含むのに十分な桁を指定していない場合、10進オーバフローが発生する。その演算は完了する。オーバフロー桁を無視することによって結果が取得され、条件コード・セット(CS)・フラグが1の場合、条件コード3が設定される。PSWの10進オーバフロー・マスクが1であり、命令オーバフロー・マスク(IOM)がゼロの場合、10進オーバフローのためのプログラム割込みが発生する。
RDC制御が31桁未満を指定している場合、第1のオペランドの残りの左端桁にゼロが入れられる。
図5AのI3フィールド510は、命令オーバフロー・マスク(IOM)538および結果桁数(RDC)540を含む、図5Cに示す例示的な形式を有する。特定の例において、I3フィールドは8ビット長であり、IOMは最初のビットであるビット0であり、RDCは最後の5ビット(すなわちビット3~7)である。
IOM538に関し、Vector-Packed-Decimal-Enhancement Facilityがインストールされていない、またはビット0がゼロの場合、10進オーバフローのためのプログラム割込みがPSWの10進オーバフロー・マスクに応じて提示される。Vector-Packed-Decimal-Enhancement Facilityがインストールされ、ビット0が1の場合、10進オーバフローのためのプログラム割込みは、PSWの10進オーバフロー・マスクの値に関係なく認識されない。
RDC540、すなわちビット3~7に関し、これらは、第1のオペランドに入れられる第2のオペランドの右端桁数を指定する符号なしの2進数を含む。第2のオペランドの大きさが、指定の桁数により表すことのできる最大10進数よりも大きい場合、10進オーバフローが発生し、10進オーバフロー・マスクが1の場合、10進オーバフローのためのプログラム割込みが発生する。RDCフィールドがゼロの場合、指定例外が認識される。
この例では、I3のビット1~2がリザーブされ、オプションである。一部の例において、これらはゼロを含むものである。Vector-Packed-Decimal-Enhancement Facilityがインストールされていない場合には、I3のビット0もリザーブされてよく、ゼロを含むものである。それ以外の場合、指定例外が認識される。
図5AのI4フィールド508は、図5Dに示す例示的な形式を有する。
検証なし(NV)542は、I4フィールドのビット0の1ビット・フィールドである。ビット0がゼロであるか、またはVector-Packed-Decimal-Enhancement Facilityがインストールされていない場合には、第2のオペランドの桁が妥当性に関してチェックされる。SO制御が符号の維持を指定する場合には、第2のオペランドの符号コードも妥当性に関してチェックされる。符号コードの妥当性は、SO制御が符号の補完を指定する場合には常にチェックされ、SO制御が強制正または強制負を指定する場合にはSV制御に依存する。妥当性チェックが失敗すると、データ例外が認識される。代わりにビット0が「1」に設定されて、桁検証チェック制御が有効にされていることを示す場合には、第2のオペランドの桁は妥当性に関してチェックされず、または本明細書で説明するように、そのようなチェックのいずれの結果も抑制され、SO制御が符号の維持を指定する場合には、第2のオペランドの符号コードもチェックされない。
負のゼロ(NZ)544は、I4フィールドのビット1の1ビット・フィールドである。ビット1がゼロであるか、またはVector-Packed-Decimal-Enhancement Facilityがインストールされていない場合、RDCの適用後のゼロの結果は正符号となる。代わりにビット1が1であり、負のゼロ制御が有効にされている、例えばNZ=1であることを示す場合には、SO制御が強制正または強制負を指定しなければ、RDCの適用後のゼロの結果の符号は第2のオペランドの符号に依存する。
符号演算(SO)546は、I4フィールドのビット4~5の2ビット・フィールドである。SOビットは、結果の符号コードを判定する際に使用される符号演算を指定する。図5Bの表に明示するように、結果の符号コードは、SO制御、第2のオペランドの符号、第2のオペランドの桁、RDC制御、およびPCビットに応じて変化する。
正符号コード(PC)548は、I4フィールドのビット6の1ビット・フィールドである。ビット6が1の場合、結果が正であるときに符号コード1111が使用される。ビット6がゼロの場合、結果が正であるときに符号コード1100が使用される。
オペランド2符号検証(SV)550は、I4フィールドのビット7の1ビット・フィールドである。ビット7が1であり、SO制御が強制正または強制負を指定する場合には、第2のオペランドの符号コードが妥当性に関してチェックされる。ビット7がゼロであり、SO制御が強制正または強制負を指定する場合には、第2のオペランドの符号コードは妥当性に関してチェックされない。SO制御が符号の維持または補完を指定するとき、第2のオペランドの符号コードは、NVビット値に基づいて、妥当性に関してチェックされる。妥当性チェックが失敗すると、データ例外が認識される。
一部の例において、I4フィールドのビット2~3は無視されるが、ゼロを含むものであり、それ以外の場合、プログラムは将来、互換性を持って動作しないおそれがある。
図5AのM5フィールド512は、条件コード・セット(CS)・フィールド552を有する図5Eに示す例示的な形式を有する。一部の例において、M5は4ビット長であり、CS552はM5フィールドの最後のビットであるビット3の1ビット・フィールドである。ビット3がゼロのとき、条件コードは設定されず、変更されないままである。ビット3が1のとき、条件コードは、結果として得られる以下の条件コード部分で指定されるように設定される。M5フィールドのビット0~2は無視することができるが、ゼロを含むものであり、それ以外の場合、プログラムは将来、互換性を持って動作しないおそれがある。
CSビットが1のとき、条件コードは以下のように設定される。すなわち、0-結果はゼロ、オーバフローなし、1-結果はゼロ未満、オーバフローなし、2-結果はゼロより大きいかゼロ以外、無効な符号コード、オーバフローなし、3-オーバフロー。
CSビットがゼロのとき、条件コードは変更されないままである。
プログラム例外の例として、DXC FEを含むデータ、ベクトル命令;DXC 00を含むデータ、一般オペランド;10進オーバフロー;演算(z/Architecture(R)のVector-Packed-Decimal Facilityがインストールされていない場合);指定;およびトランザクション制限が挙げられる。
プログラミング上の注意として、CSビットが1の場合、ゼロの正または負の符号とは関係なく、RDC適用後のゼロの結果は常にCC0となり得る。
本明細書で説明したように、態様によれば、命令ごとの負のゼロ制御指標を使用して、負のゼロ制御が有効にされているか否かを判定する。この指標を使用することにより、通常ならいずれの出力ゼロ値も強制的に正の符号が付けられるように構成される命令に関して、負のゼロ出力を選択的に有効にすることができる。これにより、出力の正のゼロに適切に負の符号を付ける場合に、その後の処理による修正の実行を回避することができるため、追加の処理サイクルが節約され、コード長が短縮され、複雑さが軽減される。
別の態様によれば、検証なし指標を使用して、桁検証チェック制御が有効にされているか否かを判定する。この指標を使用することにより、桁チェックの抑制を、通常なら桁チェック・エラーを示すことのある命令に関して選択的に有効にすることができる。これにより、桁チェックが、通常なら不要なデータ例外を生じさせ得る桁チェック・エラーを示す状況を回避することができる。そのような状況を回避することにより、追加の処理サイクルが節約され、コード長が短縮され、複雑さが軽減される。
加えて、命令ごとの指標を設けることにより、ユーザ・コードは、負のゼロ制御または桁検証チェック制御あるいはその両方を実施するかどうかを、コードの異なる部分について指定することができる。
本発明の1つまたは複数の態様は、コンピュータ技術に密接に関係し、コンピュータ内の処理を容易にして、そのパフォーマンスを向上させる。命令ごとの負のゼロ制御を提供することにより、例えば、更新された命令を有効にして所望の負のゼロ出力を生成することによってコードの最適化においてその出力の使用を可能にして、追加の処理サイクルを節約し、コード長を短縮し、複雑さを軽減することによって、パフォーマンスが向上する。命令ごとの桁検証チェック制御を提供することにより、例えば、受け取るデータ例外の数を減少させ、ユーザ・コードに柔軟性をもたらすことによって、パフォーマンスが向上する。
命令ごとの負のゼロ制御または検証なし指標あるいはその両方を使用する命令は、異なる種類のタスクを実行する多くの種類の処理に含まれていてよい。例えば、この命令は、計算、変換、または移動、あるいはその組合せが実行される内部コンピュータ処理、認証情報を確認するセキュリティ処理、コード・エミュレーション、コード最適化、およびタスクを実行する際に算術演算を使用する任意の処理に含まれていてよい。多くの可能性が存在する。
図6A、図6Bは、本明細書に記載の態様による、コンピューティング環境内の処理を容易にする例示的なプロセスを示す。一部の例において、プロセスは、本明細書で説明するような1つまたは複数のコンピュータ・システムにより実行される。
負のゼロ制御指標に関連する例示的なプロセスを示す図6Aを参照すると、プロセスは、入力値を使用して1つまたは複数の演算を実行する命令を取得する(602)。1つまたは複数の演算は、命令により実行される特定の計算、例えば、データ変換、データ移動、または入力値に対する符号演算を例として含むことができる。命令は単一のアーキテクト命令であり、命令は、負のゼロ制御が命令の実行に関して有効にされているかどうかを示す負のゼロ制御指標を含む。特定の例において、負のゼロ制御指標(NZ)は命令テキストに含まれるビットである。プロセスは、次に、例えば、最初に入力値を使用して1つまたは複数の演算を実行して、符号を含む結果を取得する(604)ことにより、命令を実行する。1つまたは複数の演算を実行することは、結果の符号を設定することを含むことができる。結果は、例えば、ゼロ符号制御を受ける計算コンポーネント(図3の324)の出力であってよい。
プロセスは、結果がゼロの大きさを有するかどうかを判定する(606)。結果がゼロの大きさを有していない場合には、プロセスは、符号付き結果を命令の実行の一部として出力する(612)。そうでない場合(606、Y)には、プロセスは、結果の符号を、例えば強制正に制御するかどうかを判定する(608)。判定は、負のゼロ制御が有効にされているか無効にされているか、したがって、負のゼロ制御指標(NZ)が規定値に設定されているか否かに少なくとも部分的に基づく。負のゼロ制御が有効にされている、例えば、NZが「1」に設定されて負のゼロ制御が有効にされていることを示す場合には、これにより、負の符号が付いたゼロの結果を出力することができる。その結果、ゼロの大きさの結果(604による)の符号は、強制的に正になるように制御されない。プロセスは進んで、負または正の符号を含むゼロの大きさの結果を出力する(612)。負のゼロ制御指標NZは、例えば、命令のフィールドに位置していてよい。一部の例において、ゼロの結果の符号を制御するかどうかを判定することは、命令の実行のための選択されたモード、例えば、命令の選択された符号演算にさらに基づいており、選択された符号演算は、命令のフィールドによって選択される。これは、結果の符号を強制的に生じさせること、または命令によって実行される選択された符号演算に依存しないことを可能にすることにより、いつ符号変更を強制するかに関して柔軟性および選択性をもたらすという利点を有する。
その後、判定(すなわち608)に基づき、プロセスは、さらなる処理を命令の実行の一部として実行する。前述したように、608で、例えば、負のゼロ制御が有効にされて(NZ=1)負および正の両方の結果が命令の実行による出力に関して有効にされているため、強制的に正のゼロにする符号制御が不要であると判定された場合には、プロセスは、演算により設定された符号を有する結果を出力する(612)。したがって、負のゼロ制御指標(NZ)が規定値(例えば「1」)に設定されていることは、負のゼロ制御が命令の実行に関して有効にされていることを示す。判定(608)は、負のゼロ制御が命令の実行に関して有効にされていることに基づいて、数値ゼロの結果の符号を制御しないと判定することができ、したがって、さらなる処理は、命令の実行の出力を生成することができ、出力は符号を有する数値ゼロを含む。これは、ゼロの結果の一部として与えられた符号を、任意の特定の(例えば正)符号を強制することなく、実行の出力として渡すことができるという利点を有する。これは、通常なら強制される正のゼロに選択的にオーバライドし、代わりに負のゼロの出力を有効にする能力をもたらす。それ以外の場合、608で、例えば、負のゼロ制御が有効にされず(NZ=0)、したがって負のゼロの出力が許可されないため、符号制御が必要であると判定された場合(608、Y)、プロセスはゼロの結果の符号を強制的に正にし(610)(例えば、最初に正であるか負であるかに関係なく、符号を無条件に正に設定することにより)、強制正符号を有する結果を出力する(612)。したがって、負のゼロ制御指標(NZ)が規定値「1」とは異なる別の値(例えば「0」)に設定されていることは、負のゼロ制御が命令の実行に関して有効にされていないことを示す。判定(608)は、負のゼロ制御が有効にされていない(NZ=0)ことに基づいて、数値ゼロの符号を強制的に正にすることにより符号を制御すると判定することができ、したがって、さらなる処理は、数値の符号を強制的に正にすることによって命令の実行の出力を生成することができ、出力は強制正符号を有する数値ゼロを含む。これは、所望のときに正符号の強制を選択的に有効にすることができるという利点を有する。
結果がゼロの大きさを有するかどうかを最初に判定する(606)ことにより、問合せ606の結果に応じて、判定(608)およびさらなる処理の実行(610/612)を選択的に実行しても実行しなくてもよい(すなわち省略してもよい)ことに留意されたい。これは、不要な処理を回避することができるという利点を有する。ある処理(例えば、本明細書に記載の態様による命令の挙動の一部をエミュレートするエミュレーション処理)を省略することにより、実行時間および効率を高速化し、可能であればコンピューティング・リソースを節約することができるという利点を有する。
特定の例において、ゼロの結果(すなわち、604の一部として)の符号の設定によりゼロの結果の符号を負に設定し、強制(610)によりゼロの結果の符号を正に反転させる。あるいは、演算の実行(604)により結果の符号を代わりに正に設定し、符号を制御する(608、Y)場合に強制(610)を含む処理を実行することにより、正符号を変更せず、正符号を含む結果を出力する。
一部の実施形態において、入力値は2進化10進数であり、さらなる処理および実行の出力は2進化10進形式の負のゼロ値である。
図6Aのプロセスは、実行により出力された値の符号を命令ごとに制御するという利点を有する。負のゼロ制御を命令ごとに選択的に有効または無効にするができるため、特定の符号(例えば正)が不適切または望ましくない場合であっても通常なら命令処理がその符号を結果に強制し得る状況を回避する能力をもたらす。
別の例示的な実施形態において、本明細書に記載のゼロ符号制御は、負の符号から既に強制された符号(例えば正)を有する結果をもたらす命令に対する拡張である。NZ指標は、この状況において、負の符号に戻す可能な「訂正」を行うかどうかを示すことができる。本実施形態は、従来の命令が負のゼロ値に正符号を課すように構成され、その命令に対してNZ機能が実装されて、その従来の処理が修正されず、むしろ、ゼロ符号制御が従来の処理により符号反転(例えば正へ)を既に受けた結果を入力として利用し、適切な場合に(負の符号に戻す)訂正を加える状況において有用であり得る。本実施形態において、NZ指標は、ゼロに負の符号が適切に付けられていても(例えば、正のゼロに対する補完符号演算において)、命令計算が正符号をそのゼロ値に強制したことに基づいて、もたらされたゼロの結果(正符号を有する)が符号を負に反転させる可能性があるか否かを示す。例えば、NZ=1のとき、負のゼロの結果の符号を反転させるかどうかについての問合せをトリガして、その命令についての特定の符号演算を考慮することができる。
次に、検証なし制御を使用することに関連する例示的なプロセスを示す図6Bを参照すると、プロセスは、少なくとも1つの入力値を使用して1つまたは複数の演算を実行する命令を取得する(620)。1つまたは複数の演算は、命令により実行される特定の計算、例えば、データ変換、データ移動、または入力値に対する符号演算を含むことができる。命令は単一のアーキテクト命令であり、命令は、桁検証チェック制御が命令の実行に関して有効にされているかどうかを制御することのできる検証なし指標を含む。特定の例において、検証なし指標(NV)は命令テキストに含まれるビットである。桁検証チェック制御は、桁検証チェックに関する限り、命令の実行に基づいて示されるものを制御することを指す。検証なし指標は、例えば、命令のフィールドに位置していてよい。入力値は、本明細書に記載の態様により桁検証チェックが制御される、少なくとも1つの2進化10進数を含むことができる。
プロセスは、次に、例えば、検証なし指標に基づいて、桁検証チェック制御が命令の実行に関して有効にされているかどうかを判定すること(622)により、命令を実行する。特定の例において、この判定は、検証指標が、桁検証チェック制御が有効にされていることを示す1に設定されているかどうかをチェックする。
プロセスは、判定に基づいて処理を実行することによって継続する。したがって、桁検証チェック制御が有効にされているという判定(622、Y)に基づいて、例えば、検証なし指標(NV)が1などの規定値に設定されていると判定することにより、処理は、実行により出力された桁チェック・エラー指標に、少なくとも1つの入力値に関して桁チェック・エラーがないことを示すように強制する(624)。桁チェック・エラー指標は、例えば、図3の322である。
特定の例において、命令の実行は、少なくとも1つの入力値の桁検証チェックを実行することをさらに含む。桁検証チェックは、少なくとも1つの入力値が規定位置に数字(例えば0~9)を含むかどうかを検証すること、および、桁検証チェックの一部としてのその検証に基づいて、桁チェック・エラーが少なくとも1つの入力値に関して存在するかどうかを示す結果を出力することである。特定の例において、これは図3の検証チェック318の出力であり、桁検証チェック制御が命令の実行に関して有効にされている場合に取り消され/抑制され得る結果である。桁検証チェックの出力結果は、桁チェック・エラーが存在するかどうかを示す。しかしながら、検証なし指標が規定値に設定されていることに基づいて、処理は、桁検証チェックの出力結果を処理して、桁チェック・エラーが存在することを桁検証チェックの出力結果が示しているかどうかに関係なく、桁チェック・エラーがないことを示すことができる。これに関し、これにより、桁チェック・エラー指標に、桁チェック・エラーがないことを示すように強制する。図3に示すような一部の例において、桁チェックが結果として0を示しているか1を示しているかに関係なく、ANDゲートが、桁検証チェックにより出力された結果を無条件に取り消す。桁検証チェックの出力結果は、その結果を、例えば、偽(「0」)入力も受け取るANDゲートに送って、桁チェック・エラーがないことを示す偽(「0」)出力を生成することを参照して処理することができる。一部の例において、NVビットの値「1」が、桁検証チェック制御が有効にされていることを示し、したがって、桁チェック・エラーがないことが実行により示されるときに、1のNV値が0にネゲートされ、偽入力としてANDゲートに送られて、その出力を強制的に偽にする。したがって、実行(例えば322)により出力された桁チェック・エラー指標は、桁検証チェックの処理済み出力結果を含むことができ、その処理済み出力結果は桁チェック・エラーがないことを示す。したがって、命令実行の一部として実行された桁検証が、桁チェック・エラーが存在することを示したとき、すなわち、いくつかの桁が桁検証チェックによりエラーであると示されているときでも、桁チェック・エラーが命令の実行全体により出力されているかどうかを制御することができる。これは、桁が桁検証チェックにより予想される範囲内にないときに桁検証チェックによりもたらされる結果を選択的にオーバライドする能力をもたらすという利点を有する。
一部の例において、命令の実行の一部として実行される桁検証チェックの出力は、桁チェック・エラーがないことが桁検証チェックにより報告されることを保証する入力を桁検証チェックに与えることによって制御される。したがって、検証なし指標が規定値に設定されて桁検証チェック制御が有効にされていることを示していることに基づいて、処理は、少なくとも1つの入力値以外の、選択された少なくとも1つの予め定めた値を入力として桁検証チェックに送ることを含むことができる。少なくとも1つの予め定めた入力は、桁検証チェックの構成に基づいて、すなわち桁検証チェックが、予め定めた入力値に基づいて桁チェック・エラーがないことを示すようにその出力結果について構成されていることに基づいて、選択することができる。したがって、実行(例えば322)により出力された桁チェック・エラー指標は、予め選択された入力値に基づいて桁チェック・エラーがないことを示す桁検証チェックの出力結果を含むことができる。これは、命令の実行の一部として実行された検証チェックの出力または演算を改変することなく、桁チェック・エラーが示されているかどうかを制御する方法を提供するという利点を有する。
いくつかの例において、命令の実行は、命令の実行のエミュレートが特定のコードの実行により進行するエミュレート環境で進行する。そのコードの一部は、命令の一般的な処理の桁検証チェック(図3の318)をエミュレートすることができる。これらの状況において、桁検証チェック制御が有効にされているときに、桁検証チェックをエミュレートする特定のコードの実行をすべて回避または省略することができる。したがって、検証なし指標が規定値に設定されていることに基づいて、少なくとも1つの入力値が規定位置にある数字を含むかどうかを検証するための少なくとも1つの入力値の桁検証チェックが省略される。これは、検証チェックをすべて回避することができるため、実行速度を増加させ、リソースの消費を低減させ、コードの実行に効率をもたらす可能性があるという利点を有する。
また、前述したように、処理は、検証なし指標(NV)を、桁チェック・エラーがないことを示すように桁チェック・エラー指標(322)を設定するハードウェア(例えばANDゲート)への入力として使用することができる。そのような使用は、例えば、NV値「1」を「0」に変換し、これを次にANDゲートに入力して偽(「0」)出力を強制することを含むことができる。
図6Bの判定622に戻って参照すると、桁検証チェック制御を有効にするための規定値は、第1の値であってよく、検証なし指標が第1の値とは異なる第2の値に設定されることに基づいて、桁検証チェック制御は無効にされ、そのように判定される(622、N)。この場合、プロセスは、少なくとも1つの入力値に対して桁検証チェックを実行し、少なくとも1つの入力値が規定位置に数字(0~9)を含むかどうかを検証し、検証に基づいて、少なくとも1つの入力値に関して桁チェック・エラーが存在するかどうかを示す結果を出力する(626)ことができる。桁検証チェックを判定622の前に実施しても後に実施してもよいことに留意されたい。
いずれの場合でも、桁検証制御が有効にされていない(622、N)ことに基づいて、プロセスは626から進んで、桁検証チェックの結果を、実行(すなわち図3の322)により出力された桁チェック・エラー指標として使用する(628)。例えば、桁検証チェック制御が無効にされている場合には、桁検証チェックから得られた桁チェック・エラー結果は何でも、命令の実行により出力された桁チェック・エラー指標(例えば322)として使用する。
図6Bのプロセスは、桁検証チェック・エラーが命令の実行により示されているかどうかを命令ごとに制御するという利点を有する。桁チェック・エラーの表示を命令ごとに選択的に有効または無効にすることができるため、検証チェックが通常なら、入力桁が予想される範囲(例えば0~9)にないことに基づいて桁チェック・エラーをもたらすが、それにもかかわらず桁は有効であるときに、桁チェック・エラーがないことを伝える能力をもたらす。これは、例えば、入力桁が数値(0~9)ではなく、値の残りの範囲A~Fの非数値符号化である状況において有利である。
他の変形形態および実施形態が可能である。
様々な例を提示したが、特許請求される態様の思想から逸脱することなく、変形形態が可能である。
本明細書に記載のプロセスを、本明細書に記載されるような1つまたは複数のコンピュータ・システムにより単独でまたは集合的に実行することができ、本明細書に記載の態様を多くの種類のコンピューティング環境により使用することができる。図7Aを参照しながら、本発明の1つまたは複数の態様を組み込んで使用するコンピューティング環境の別の実施形態について説明する。この例において、コンピューティング環境10は、例えば、ネイティブ中央処理装置(CPU)12と、メモリ14と、例えば1つまたは複数のバス18または他の接続機構あるいはその両方を介して互いに結合された1つまたは複数の入出力デバイスまたはインターフェース16あるいはその両方とを含む。例として、コンピューティング環境10は、インターナショナル・ビジネス・マシーンズ・コーポレーション、ニューヨーク州アーモンクにより提供されるPowerPC(R)プロセッサ、ヒューレット・パッカード、カリフォルニア州パロ・アルトにより提供されるIntel(R) Itanium IIプロセッサ内蔵HP Superdome、または、インターナショナル・ビジネス・マシーンズ・コーポレーション、ヒューレット・パッカード、インテル、オラクルなどによって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含むことができる。IBM、z/Architecture、IBM Z、z/OS、PR/SM、およびPowerPCは、少なくとも1つの管轄区域におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの商標または登録商標である。IntelおよびItaniumは、米国およびその他の国におけるインテルまたはその子会社の商標または登録商標である。
ネイティブ中央処理装置12は、環境内での処理中に使用される、1つまたは複数の汎用レジスタまたは1つまたは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ20を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
さらに、ネイティブ中央処理装置12は、メモリ14に記憶されている命令およびコードを実行する。特定の一例において、中央処理装置は、メモリ14に記憶されているエミュレータ・コード22を実行する。このコードは、1つのアーキテクチャにおいて構成されたコンピューティング環境が別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード22は、PowerPCプロセッサ、HP Superdomeサーバなどの、z/Architecture(R)ハードウェア・アーキテクチャ以外のアーキテクチャに基づくマシンが、z/Architecture(R)ハードウェア・アーキテクチャをエミュレートし、z/Architecture(R)ハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
図7Bを参照しながら、エミュレータ・コード22に関するさらなる詳細について説明する。メモリ14に記憶されているゲスト命令30が、ネイティブCPU12のアーキテクチャ以外のアーキテクチャで実行されるように開発された(例えばマシン命令と相互に関係する)ソフトウェア命令を含む。例えば、ゲスト命令30は、z/Architecture(R)ハードウェア・アーキテクチャに基づいてプロセッサ上で実行されるように設計されていてよいが、代わりに、例えばIntel(R) Itanium IIプロセッサであり得るネイティブCPU12上でエミュレートされている。一例において、エミュレータ・コード22は、メモリ14から1つまたは複数のゲスト命令30を取得し、場合により、取得された命令のためにローカル・バッファリングを行うための命令フェッチ・ルーチン32を含む。また、取得されたゲスト命令の種類を決定し、そのゲスト命令を1つまたは複数の対応するネイティブ命令36に変換するための命令変換ルーチン34も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別することと、その機能を実行するためのネイティブ命令を選択することとを含む。
さらに、エミュレータ・コード22は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン40を含む。エミュレーション制御ルーチン40は、ネイティブCPU12に、1つまたは複数の事前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させることができ、そのような実行の終わりに、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために命令フェッチ・ルーチンに制御を戻させることができる。ネイティブ命令36の実行は、変換ルーチンによって判定されるように、メモリ14からレジスタにデータをロードすること、レジスタからメモリにデータを格納し戻すこと、または何らかの種類の算術演算または論理演算を実行することを含むことができる。
各ルーチンは、例えば、メモリに記憶されたソフトウェアに実装され、ネイティブ中央処理装置12によって実行される。他の例において、ルーチンまたは演算のうちの1つまたは複数が、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せに実装される。エミュレートされるプロセッサのレジスタは、ネイティブCPUのレジスタ20を使用して、またはメモリ14内の場所を使用してエミュレートされてよい。実施形態において、ゲスト命令30と、ネイティブ命令36と、エミュレータ・コード22とが同じメモリにあってよく、または異なるメモリ・デバイスに分散されてもよい。
上記のコンピューティング環境は、使用可能なコンピューティング環境の例に過ぎない。区分されていない環境、区分された環境、またはエミュレートされた環境、あるいはその組合せを含むがこれらに限定されない他の環境を使用してもよく、実施形態はいずれか1つの環境に限定されない。
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成することができる。例えば、本発明の1つまたは複数の態様により、各コンピューティング環境は、オーバフロー処理を行うように構成されてよい。
本開示はクラウド・コンピューティングの詳細な説明を含むが、本明細書に記載の教示の実装は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装することができる。
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとの対話を最小限に抑えて、これらのリソースを迅速にプロビジョニングおよびリリースすることができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
特徴は次のとおりである。
オンデマンドのセルフ・サービス:クラウド・コンシューマは、サービス・プロバイダとの人間的な対話を必要とせずに、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的に、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:機能は、ネットワークを経由して利用可能であり、標準的なメカニズムを通じてアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する。
リソース・プーリング:プロバイダのコンピューティング・リソースは、プールされて、マルチテナント・モデルを使用して複数のコンシューマに提供される。異なる物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。コンシューマは通常、提供されるリソースの正確な場所を制御することも知ることもないが、より高い抽象レベル(例えば、国、州、データセンタ)で場所を指定できる場合があるという点で、場所に依存しないという感覚がある。
迅速な順応性:機能は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速にリリースされて素早くスケールインすることができる。コンシューマにとって、プロビジョニングに使用できる機能は無制限に見えることが多く、任意の量をいつでも購入できる。
測定されるサービス:クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した抽象レベルで計測機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用量を監視、制御、および報告することができ、利用されるサービスのプロバイダとコンシューマの両方に透明性が提供される。
サービス・モデルは次のとおりである。
サービスとしてのソフトウェア(SaaS):コンシューマに提供される機能は、クラウド・インフラストラクチャ上で実行されているプロバイダのアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して、様々なクライアント・デバイスからアクセスできる。コンシューマは、限定されたユーザ固有のアプリケーション構成設定を除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む、基盤となるクラウド・インフラストラクチャを管理することも制御することもない。
サービスとしてのプラットフォーム(PaaS):コンシューマに提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成または取得したアプリケーションをクラウド・インフラストラクチャに展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理することも制御することもないが、展開されたアプリケーション、および場合により、アプリケーション・ホスティング環境の構成を制御する。
サービスとしてのインフラストラクチャ(IaaS):コンシューマに提供される機能は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースのプロビジョニングであり、コンシューマは、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを展開および実行することができる。コンシューマは、基盤となるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、および展開されたアプリケーションを制御し、場合により、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御する。
展開モデルは次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。このクラウド・インフラストラクチャは、この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス事項)を有する特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションの移植性を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって互いに結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合体である。
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味的相互運用性に焦点を合わせたサービス指向型である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
次に図8を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示したように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信することのできる、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は互いに通信することができる。これらのノード10は、上述のプライベート、コミュニティ、パブリック、またはハイブリッド・クラウド、あるいはこれらの組合せなどの1つまたは複数のネットワークにおいて物理的または仮想的にグループ化(図示せず)されてよい。これにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンシューマがそのためにローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提供することができる。図8に示すコンピューティング・デバイス54A~54Nの種類は、例示を意図したものに過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(例えばウェブ・ブラウザを使用して)任意の種類のネットワークまたはネットワーク・アドレス指定可能接続あるいはその両方を介して、任意の種類のコンピュータ化デバイスと通信することができるものと理解される。
次に図9を参照すると、クラウド・コンピューティング環境50(図8)によって提供される機能抽象化層のセットが示されている。図9に示すコンポーネント、層、および機能は、例示を意図したものに過ぎず、本発明の実施形態はこれらに限定されないことを予め理解されたい。図示するように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム61、縮小命令セット・コンピュータ(RISC)・アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化層70は、以下の仮想エンティティの例を与えることができる抽象化層を提供する。すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75である。
一例において、管理層80は、以下に記載の機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよびその他のリソースの動的調達を行う。計量および価格設定82は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡と、これらのリソースの消費に対する請求書作成またはインボイス作成を行う。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマおよびタスクのための本人確認ならびにデータおよびその他のリソースの保護を行う。ユーザ・ポータル83は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割当ておよび管理を行う。サービス品質保証契約(SLA)の計画および履行85は、SLAに従って将来の要求が予想されるクラウド・コンピューティング・リソースのための事前取り決めおよび調達を行う。
作業負荷層90は、クラウド・コンピューティング環境をそのために利用することができる機能性の例を提供する。この層から提供され得る作業負荷および機能の例として、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ解析処理94、トランザクション処理95、および負のゼロ/検証なし処理96が挙げられる。
本発明は、任意の可能な技術的詳細の統合レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体を含むことができる。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持し記憶することができる有形デバイスであってよい。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下のものが含まれる。すなわち、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ(R)・ディスク、パンチカードもしくは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を伝播する電磁波(例えば光ファイバ・ケーブルを通過する光パルス)、または電線を介して伝送される電気信号などの、一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(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つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境を使用することができる。
本明細書で使用されている用語は、特定の実施形態を説明することのみを目的としたものであり、限定的であることを意図したものではない。本明細書で使用されるとき、単数形「a」、「an」、および「the」は、文脈が明確に他の解釈を示していない限り複数形も含むことを意図している。「含む(comprises)」または「含んでいる(comprising)」という用語あるいはその両方は、本明細書で使用されるとき、記載されている特徴、整数、ステップ、動作、要素、または構成要素、あるいはその組合せの存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはこれらのグループ、あるいはその組合せの存在も追加も排除しないことがさらに理解されよう。
以下の特許請求の範囲内のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等物は、存在する場合、具体的に特許請求されるように、他の特許請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることも、開示された形態に限定することも意図されていない。多くの変更および変形形態が当業者に明らかであろう。様々な態様および実際的な応用を最もよく説明するため、ならびに他の当業者が、考察されている特定の用途に適するように様々な変更を伴って様々な実施形態を理解できるようにするために、実施形態が選択されて説明されている。

Claims (20)

  1. コンピューティング環境内における処理を容易にするためのコンピュータ・プログラムを記録し、処理回路によって読取り可能であり、方法を実行するための命令を記憶するコンピュータ可読記憶媒体であって、前記方法が、
    入力値を使用して1つまたは複数の演算を実行する命令を取得することであって、前記命令が単一のアーキテクト命令であり、前記命令が、負のゼロ制御が前記命令の実行に関して有効にされているかどうかを示す負のゼロ制御指標を含む、前記取得することと、
    前記命令を実行することであって、
    前記入力値を使用して前記1つまたは複数の演算を実行して、結果を取得することであり、前記1つまたは複数の演算は、前記命令の実行の出力の場所へ移動する前記入力値の部分であって、数値および前記数値に関連する符号を含む前記入力値の部分を取得することを含み、前記結果は、前記入力値の前記取得した部分の前記符号が前記結果の符号である前記入力値の前記取得した部分を含む、前記結果を取得すること
    前記負のゼロ制御指標が規定値に設定されていることに少なくとも部分的に基づいて、前記結果の前記符号を制御するかどうかを判定することであり、前記結果の前記符号を制御するかどうかを判定することは、前記命令の前記実行の前記出力における前記結果に与えられた前記入力値の前記部分の前記符号の出力を制御するかどうかを判定する、前記結果の前記符号を制御するかどうかを判定すること、および、
    前記判定することに基づいて、前記命令を前記実行することの一部としてさらなる処理を実行することを含む、前記実行することと
    を含む、コンピュータ可読記憶媒体
  2. 前記負のゼロ制御指標が前記規定値に設定されていることが、負のゼロ制御が前記命令の実行に関して有効にされていることを示し、前記1つまたは複数の演算を前記実行した前記結果が前記結果に与えられた前記符号を有する数値ゼロであり、前記判定することが、負のゼロ制御が前記命令の実行に関して有効にされていることに基づいて、前記数値ゼロの前記符号を制御しないと判定し、前記さらなる処理が、前記命令の実行の前記出力を生成することを含み、前記出力が前記符号を有する前記数値ゼロを含む、請求項1に記載のコンピュータ可読記憶媒体
  3. 前記負のゼロ制御指標が前記規定値とは異なる別の値に設定されていることが、負のゼロ制御が前記命令の実行に関して有効にされていないことを示し、前記1つまたは複数の演算を前記実行した前記結果が前記結果に与えられた前記符号を有する数値ゼロであり、前記判定することが、負のゼロ制御が有効にされていないことに基づいて、前記数値ゼロの前記符号を強制的に正にすると判定し、前記さらなる処理が、前記命令の実行の前記出力を生成することを含み、前記生成することが、前記数値の前記符号を強制的に正にすることを含み、前記出力が強制正符号を有する前記数値ゼロを含む、請求項1に記載のコンピュータ可読記憶媒体
  4. 前記場所へ移動する前記入力値の前記取得した部分の前記符号が負であり、したがって、前記結果の前記符号であり、前記強制することが、前記結果の前記符号を正に反転させる、請求項3に記載のコンピュータ可読記憶媒体
  5. 前記場所へ移動する前記入力値の前記取得した部分の前記符号が正であり、したがって、前記結果の前記符号であり、前記強制することが、前記結果の正符号を変更せず、前記正符号を含む前記結果を出力する、請求項3に記載のコンピュータ可読記憶媒体
  6. 前記実行することが、前記結果がゼロの大きさを有するかどうかを判定することをさらに含み、前記結果の前記符号を制御するかどうかを前記判定することおよび前記さらなる処理を実行することが、前記結果がゼロの大きさを有すると判定したことに基づいて実行される、請求項1に記載のコンピュータ可読記憶媒体
  7. 前記結果の前記符号を制御するかどうかを前記判定することが、前記命令の実行のための選択されたモードにさらに基づく、請求項1に記載のコンピュータ可読記憶媒体
  8. 前記選択されたモードが、前記命令の選択された符号演算を含み、前記選択された符号演算が前記命令のフィールドによって選択される、請求項7に記載のコンピュータ可読記憶媒体
  9. 前記入力値が2進化10進数であり、前記さらなる処理および前記実行することの出力が、2進化10進形式の負のゼロ値である、請求項1に記載のコンピュータ可読記憶媒体
  10. 前記負のゼロ制御指標が前記命令のフィールドに位置する、請求項1に記載のコンピュータ可読記憶媒体
  11. コンピューティング環境内における処理を容易にするためのコンピュータ・システムであって、
    命令を記憶するメモリと、
    前記メモリに結合され、前記命令を実行するように構成されたプロセッサと
    を備え、前記コンピュータ・システムが、前記プロセッサによる前記命令の実行に基づいて、方法を実行するように構成され、前記方法が、
    入力値を使用して1つまたは複数の演算を実行する命令を取得することであって、前記命令が単一のアーキテクト命令であり、前記命令が、負のゼロ制御が前記命令の実行に関して有効にされているかどうかを示す負のゼロ制御指標を含む、前記取得することと、
    前記命令を実行することであって、
    前記入力値を使用して前記1つまたは複数の演算を実行して、結果を取得すること、であり、前記1つまたは複数の演算は、前記命令の実行の出力の場所へ移動する前記入力値の部分であって、数値および前記数値に関連する符号を含む前記入力値の部分を取得することを含み、前記結果は、前記入力値の前記取得した部分の前記符号が前記結果の符号である前記入力値の前記取得した部分を含む、前記結果を取得すること
    前記負のゼロ制御指標が規定値に設定されていることに少なくとも部分的に基づいて、前記結果の前記符号を制御するかどうかを判定することであり、前記結果の前記符号を制御するかどうかを判定することは、前記命令の前記実行の前記出力における前記結果に与えられた前記入力値の前記部分の前記符号の出力を制御するかどうかを判定する、前記結果の前記符号を制御するかどうかを判定すること、および、
    前記判定することに基づいて、前記命令を前記実行することの一部としてさらなる処理を実行することを含む、前記実行することと
    を含む、コンピュータ・システム。
  12. 前記負のゼロ制御指標が前記規定値に設定されていることが、負のゼロ制御が前記命令の実行に関して有効にされていることを示し、前記1つまたは複数の演算を前記実行した前記結果が前記結果に与えられた前記符号を有する数値ゼロであり、前記判定することが、負のゼロ制御が前記命令の実行に関して有効にされていることに基づいて、前記数値ゼロの前記符号を制御しないと判定し、前記さらなる処理が、前記命令の実行の前記出力を生成することを含み、前記出力が前記符号を有する前記数値ゼロを含む、請求項11に記載のコンピュータ・システム。
  13. 前記負のゼロ制御指標が前記規定値とは異なる別の値に設定されていることが、負のゼロ制御が前記命令の実行に関して有効にされていないことを示し、前記1つまたは複数の演算を前記実行した前記結果が前記結果に与えられた前記符号を有する数値ゼロであり、前記判定することが、負のゼロ制御が有効にされていないことに基づいて、前記数値ゼロの前記符号を強制的に正にすると判定し、前記さらなる処理が、前記命令の実行の前記出力を生成することを含み、前記生成することが、前記数値の前記符号を強制的に正にすることを含み、前記出力が強制正符号を有する前記数値ゼロを含む、請求項11に記載のコンピュータ・システム。
  14. 前記実行することが、前記結果がゼロの大きさを有するかどうかを判定することをさらに含み、前記結果の前記符号を制御するかどうかを前記判定することおよび前記さらなる処理を実行することが、前記結果がゼロの大きさを有すると判定したことに基づいて実行される、請求項11に記載のコンピュータ・システム。
  15. 前記結果の前記符号を制御するかどうかを前記判定することが、前記命令の実行のための選択されたモードにさらに基づいており、前記選択されたモードが、前記命令の選択された符号演算を含み、前記選択された符号演算が前記命令のフィールドによって選択される、請求項11に記載のコンピュータ・システム。
  16. 前記入力値が2進化10進数であり、前記さらなる処理および前記実行することの出力が、2進化10進形式の負のゼロ値である、請求項11に記載のコンピュータ・システム。
  17. コンピューティング環境内における処理を容易にするコンピュータ実装方法であって、
    入力値を使用して1つまたは複数の演算を実行する命令を取得することであって、前記命令が単一のアーキテクト命令であり、前記命令が、負のゼロ制御が前記命令の実行に関して有効にされているかどうかを示す負のゼロ制御指標を含む、前記取得することと、
    前記命令を実行することであって、
    前記入力値を使用して前記1つまたは複数の演算を実行して、結果を取得することであり、前記1つまたは複数の演算は、前記命令の実行の出力の場所へ移動する前記入力値の部分であって、数値および前記数値に関連する符号を含む前記入力値の部分を取得することを含み、前記結果は、前記入力値の前記取得した部分の前記符号が前記結果の符号である前記入力値の前記取得した部分を含む、前記結果を取得すること
    前記負のゼロ制御指標が規定値に設定されていることに少なくとも部分的に基づいて、前記結果の前記符号を制御するかどうかを判定することであり、前記結果の前記符号を制御するかどうかを判定することは、前記命令の前記実行の前記出力における前記結果に与えられた前記入力値の前記部分の前記符号の出力を制御するかどうかを判定する、前記結果の前記符号を制御するかどうかを判定すること、および、
    前記判定することに基づいて、前記命令を前記実行することの一部としてさらなる処理を実行することを含む、前記実行することと
    を含む、方法。
  18. 前記負のゼロ制御指標が前記規定値に設定されていることが、負のゼロ制御が前記命令の実行に関して有効にされていることを示し、前記1つまたは複数の演算を前記実行した前記結果が前記結果に与えられた前記符号を有する数値ゼロであり、前記判定することが、負のゼロ制御が前記命令の実行に関して有効にされていることに基づいて、前記数値ゼロの前記符号を制御しないと判定し、前記さらなる処理が、前記命令の実行の前記出力を生成することを含み、前記出力が前記符号を有する前記数値ゼロを含む、請求項17に記載の方法。
  19. 前記負のゼロ制御指標が前記規定値とは異なる別の値に設定されていることが、負のゼロ制御が前記命令の実行に関して有効にされていないことを示し、前記1つまたは複数の演算を前記実行した前記結果が前記結果に与えられた前記符号を有する数値ゼロであり、前記判定することが、負のゼロ制御が有効にされていないことに基づいて、前記数値ゼロの前記符号を強制的に正にすると判定し、前記さらなる処理が、前記命令の実行の前記出力を生成することを含み、前記生成することが、前記数値の前記符号を強制的に正にすることを含み、前記出力が強制正符号を有する前記数値ゼロを含む、請求項17に記載の方法。
  20. 前記結果の前記符号を制御するかどうかを前記判定することが、前記命令の実行のための選択されたモードにさらに基づいており、前記選択されたモードが、前記命令の選択された符号演算を含み、前記選択された符号演算が前記命令のフィールドによって選択され、前記入力値が2進化10進数であり、前記さらなる処理および前記実行することの出力が、2進化10進形式の負のゼロ値である、請求項17に記載の方法。
JP2021539403A 2019-02-15 2020-01-27 命令の実行における負のゼロ制御 Active JP7398464B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/277,446 2019-02-15
US16/277,446 US11023205B2 (en) 2019-02-15 2019-02-15 Negative zero control in instruction execution
PCT/EP2020/051864 WO2020164889A1 (en) 2019-02-15 2020-01-27 Negative zero control in instruction execution

Publications (2)

Publication Number Publication Date
JP2022520157A JP2022520157A (ja) 2022-03-29
JP7398464B2 true JP7398464B2 (ja) 2023-12-14

Family

ID=69326525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021539403A Active JP7398464B2 (ja) 2019-02-15 2020-01-27 命令の実行における負のゼロ制御

Country Status (9)

Country Link
US (1) US11023205B2 (ja)
EP (1) EP3924812B1 (ja)
JP (1) JP7398464B2 (ja)
KR (1) KR102598929B1 (ja)
CN (1) CN113439257A (ja)
SG (1) SG11202105094QA (ja)
TW (1) TWI758679B (ja)
WO (1) WO2020164889A1 (ja)
ZA (1) ZA202105937B (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11314512B2 (en) * 2019-08-09 2022-04-26 International Business Machines Corporation Efficient checking of a condition code anticipator for a floating point processor and/or unit
US11487506B2 (en) 2019-08-09 2022-11-01 International Business Machines Corporation Condition code anticipator for hexadecimal floating point
US11734013B2 (en) * 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017531861A (ja) 2014-09-30 2017-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 機械命令を実行することによってデータをある形式から別の形式に変換する方法、コンピュータ・プログラム、およびコンピュータ・システム
US20180095726A1 (en) 2016-09-30 2018-04-05 International Business Machines Corporation Perform sign operation decimal instruction

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL100987A (en) 1991-02-27 1995-10-31 Digital Equipment Corp Method and device for encoding
GB9510834D0 (en) 1995-05-27 1995-07-19 Int Computers Ltd Decimal arithmetic apparatus and method
US6862565B1 (en) 2000-04-13 2005-03-01 Hewlett-Packard Development Company, L.P. Method and apparatus for validating cross-architecture ISA emulation
US6970898B2 (en) 2001-05-25 2005-11-29 Sun Microsystems, Inc. System and method for forcing floating point status information to selected values
US7133890B2 (en) * 2001-05-25 2006-11-07 Sun Microsystems, Inc. Total order comparator unit for comparing values of two floating point operands
US7346735B2 (en) 2004-04-08 2008-03-18 Intel Corporation Virtualized load buffers
US7543007B2 (en) 2005-08-22 2009-06-02 Sun Microsystems, Inc. Residue-based error detection for a shift operation
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
US20100262813A1 (en) 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates
US8495125B2 (en) * 2009-05-27 2013-07-23 Microchip Technology Incorporated DSP engine with implicit mixed sign operands
US8856759B2 (en) 2010-02-01 2014-10-07 Bull Hn Information Systems Inc. Method and apparatus providing COBOL decimal type arithmetic functions with improved performance
WO2012077185A1 (ja) 2010-12-07 2012-06-14 富士通株式会社 10進絶対値加算器
US9075621B2 (en) 2011-12-23 2015-07-07 Arm Limited Error recovery upon reaching oldest instruction marked with error or upon timed expiration by flushing instructions in pipeline pending queue and restarting execution
US9335993B2 (en) * 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
US9329861B2 (en) * 2011-12-29 2016-05-03 International Business Machines Corporation Convert to zoned format from decimal floating point format
JP2013242700A (ja) * 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム
US9477476B2 (en) 2012-11-27 2016-10-25 Qualcomm Incorporated Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9940182B1 (en) 2013-09-13 2018-04-10 Stott Creations LLC Business rule engine validation systems and related methods
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
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US9785435B1 (en) * 2016-10-27 2017-10-10 International Business Machines Corporation Floating point instruction with selectable comparison attributes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017531861A (ja) 2014-09-30 2017-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 機械命令を実行することによってデータをある形式から別の形式に変換する方法、コンピュータ・プログラム、およびコンピュータ・システム
US20180095726A1 (en) 2016-09-30 2018-04-05 International Business Machines Corporation Perform sign operation decimal instruction

Also Published As

Publication number Publication date
SG11202105094QA (en) 2021-06-29
EP3924812A1 (en) 2021-12-22
WO2020164889A1 (en) 2020-08-20
EP3924812C0 (en) 2023-08-30
TW202034155A (zh) 2020-09-16
TWI758679B (zh) 2022-03-21
KR20210118108A (ko) 2021-09-29
KR102598929B1 (ko) 2023-11-03
CN113439257A (zh) 2021-09-24
JP2022520157A (ja) 2022-03-29
ZA202105937B (en) 2022-07-27
US20200264840A1 (en) 2020-08-20
EP3924812B1 (en) 2023-08-30
US11023205B2 (en) 2021-06-01

Similar Documents

Publication Publication Date Title
JP7398464B2 (ja) 命令の実行における負のゼロ制御
KR102527963B1 (ko) 범용 프로세서를 위한 정렬 및 병합 명령
US11099853B2 (en) Digit validation check control in instruction execution
KR102238189B1 (ko) 십진수 부호 연산 수행 명령
JP6909284B2 (ja) 10進シフトおよび除算命令
JP7101930B2 (ja) 10進乗算およびシフト命令
US11442726B1 (en) Vector pack and unpack instructions
US10430185B2 (en) Decimal load immediate instruction
US11797270B2 (en) Single function to perform multiple operations with distinct operation parameter validation
WO2023093524A1 (en) Reducing data format conversion of an accelerator
JP2024523098A (ja) 個別の演算パラメータのバリデーションを伴う複数の演算を実行するための単一関数
TW202036272A (zh) 載入/儲存位元組反轉元件指令
KR20210118096A (ko) 우측에서 좌측 방향으로 데이터를 이동시키기 위한 명령
CN117396898A (zh) 在指令执行期间检测到的无效值的异常概要

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220622

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230530

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230810

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: 20231121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231204

R150 Certificate of patent or registration of utility model

Ref document number: 7398464

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150