JP2024507651A - 数値の形式変換方法 - Google Patents
数値の形式変換方法 Download PDFInfo
- Publication number
- JP2024507651A JP2024507651A JP2023541668A JP2023541668A JP2024507651A JP 2024507651 A JP2024507651 A JP 2024507651A JP 2023541668 A JP2023541668 A JP 2023541668A JP 2023541668 A JP2023541668 A JP 2023541668A JP 2024507651 A JP2024507651 A JP 2024507651A
- Authority
- JP
- Japan
- Prior art keywords
- decimal format
- instruction
- value
- decimal
- format
- 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.)
- Pending
Links
- 239000013598 vector Substances 0.000 claims abstract description 188
- 238000006243 chemical reaction Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims description 56
- 238000003860 storage Methods 0.000 claims description 45
- 238000000034 method Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 4
- 238000010200 validation analysis Methods 0.000 description 44
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 238000012856 packing Methods 0.000 description 11
- 238000005192 partition Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 229910000078 germane Inorganic materials 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Circuits Of Receivers In General (AREA)
- Complex Calculations (AREA)
Abstract
数値の形式変換方法に関してベクトル・パック命令およびベクトル・アンパック命令が説明される。1つの10進数形式と別の10進数形式の間の変換を実行するための命令が実行され、1つの10進数形式または他の10進数形式がゾーン10進数形式である。この実行することは、命令を使用して指定された少なくとも1つのレジスタから値を取得することを含む。値の少なくとも一部が、1つの10進数形式から1つの10進数形式と異なる他の10進数形式に変換され、変換された結果を提供する。変換された結果から取得された結果が、命令を使用して指定された単一のレジスタに書き込まれる。
Description
1つまたは複数の態様は、一般に、コンピューティング環境内の処理を容易にすることに関し、特に、そのような処理を改善することに関する。
コンピューティング環境内で実行されるアプリケーションは、設計、製造、医療技術、自動車技術、コンピュータ処理などを含むが、これに限定されない、多種多様な技術によって使用される多くの動作を提供する。COBOLなどのプログラミング言語で記述されたこれらのアプリケーションは、特定の形式で数値を表し、例えば、計算を実行するか、またはデータを提示するか、あるいはその両方を行うために、多くの場合、ある形式から別の形式への変換を必要とする。
数値を表すために使用される1つの形式は、符号付きまたは符号なしであってよいパック10進数形式である。パック10進数形式では、各バイトが2つの4ビットの10進数(D:decimal digits)を含む。符号付きパック10進数形式では、4ビットの10進数の右にある右端のバイトが、4ビットの符号(S:sign)を含む。
数値を表すために使用される別の形式は、符号なしまたは符号付きであってよいゾーン10進数形式である。符号なしゾーン10進数形式では、各バイトが、左端の4ビットの位置にあるゾーン・フィールドおよび右端の4ビットの位置にある10進数という、2つのフィールドを含む。符号付きゾーン10進数形式(埋め込まれた符号付きゾーン10進数形式とも呼ばれる)は、右端のバイトのゾーン・フィールドが4ビットの符号を含んでいることを除いて、符号なしゾーン10進数形式に類似している。分離した符号付きゾーン10進数形式も存在し、この形式では、符号が分離したバイトとしてエンコードされ、値の数値部分が、符号なしゾーン10進数形式になっている。
埋め込まれた符号付きゾーン10進数データ項目は、例えばCOBOLでは、1から31桁の10進数をエンコードするために、1から31バイトの範囲にわたることができる。分離した符号付きゾーン10進数データ項目は、1から31桁の10進数および1バイトの符号コードをエンコードするために、2から32バイトの範囲にわたることができる。ゾーン10進数データの大きい可変のサイズに起因して、ゾーン10進数データは、現在、ストレージ・オペランドとしてのみサポートされている。例えば計算を実行するために、ゾーン10進数データに対して動作する前に、ゾーン10進数データが、パック10進数または10進浮動小数点などの別の形式に変換される。次に、計算の結果が、再びゾーン10進数のストレージ・オペランドに変換される。メモリとの間でのこれらの変換は、時間がかかり、コンピューティング環境の性能に影響を与え、コンピュータ・リソースの可用性に影響を与える。
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、1つの10進数形式と別の10進数形式の間の変換を実行するための命令を実行することを含む。1つの10進数形式または他の10進数形式は、ゾーン10進数形式である。この実行は、命令を使用して指定された少なくとも1つのレジスタから値を取得することと、この値の少なくとも一部を1つの10進数形式から1つの10進数形式と異なる他の10進数形式に変換し、変換された結果を提供することと、変換された結果から取得された結果を、命令を使用して指定された単一のレジスタに書き込むこととを含む。
単一の命令を使用して、少なくとも変換動作および書き込み動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、少なくとも変換動作および書き込み動作を実行することによって、変換動作および書き込み動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。変換動作および書き込み動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
例えばSIMD(single instruction, multiple data:単一の命令、複数のデータ)命令による、ゾーン10進数形式と別の形式の間の変換、データに対する動作、またはデータの使用における、ハードウェア・ベクトル・レジスタなどのレジスタの使用は、レジスタを直接使用して実行される。例えば、入力および出力がレジスタ内で提供される。これは、入力を取得するため、または出力を格納するため、あるいはその両方のためにメモリを使用することよりも、効率的である。動作がより高速に実行されて、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。さらに、ゾーン10進数形式のレジスタを使用することによって、例えばCOBOLのINSPECTステートメントの使用による、ゾーン10進数データ項目の数値の編集または文字列の処理あるいはその両方などの一部の動作が、ゾーン10進数形式でレジスタ内のデータに対して直接動作することによって、より効率的に実行され得る。
さらに、単一のレジスタに書き込むことは、データ依存関係およびアウトオブオーダー実行にとって有益である。複数のレジスタの代わりに1つのレジスタに書き込むことによって、命令実行ごとの競合が減らされる。
1つの例では、1つの10進数形式がゾーン10進数形式であり、他の10進数形式がパック10進数形式である。
1つの例では、値を取得することは、命令の少なくとも1つのフィールドを使用して指定された第1のベクトル・レジスタから第1の値を取得することと、命令の少なくとも1つのフィールドを使用して指定された第2のベクトル・レジスタから第2の値を取得することと、第1の値および第2の値を連結して値を取得することとを含む。
1つの例では、書き込むことは、結果として書き込まれる変換された結果の桁数を決定することと、結果として書き込まれる変換された結果の決定された桁数を選択することと、選択された、決定された桁数を単一のレジスタに書き込むこととを含む。これによって、柔軟性をもたらす。
1つの例では、桁数を決定することは、命令を使用して指定された制御をチェックすることを含む。さらに、1つの例として、単一のレジスタは単一のベクトル・レジスタである。この制御は、命令を使用することにおける柔軟性および容易さを可能にする。
別の例として、1つの10進数形式がパック10進数形式であり、他の10進数形式がゾーン10進数形式である。1つの例では、値の少なくとも一部を変換することは、値の選択された桁を変換して、変換された結果を取得することを含む。選択された桁は、例えば、値の左端の15桁を含む。さらなる例として、選択された桁は、値の右端の16桁を含み、変換することは、値の符号を変換することを含む。
1つの例では、書き込むことは、変換された結果を単一のレジスタの選択された部分に書き込むことを含み、単一のレジスタはベクトル・レジスタである。
1つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、1つまたは複数の態様に関連するサービスも本明細書に記載されており、請求され得る。
さらなる特徴および長所が、本明細書に記載された技術によって実現される。他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にするための能力が提供される。1つの例として、パック動作またはアンパック動作を実行するために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたハードウェア・マシン命令)が提供される。例えば、パック動作を実行するためにベクトル・パック・ゾーン・レジスタ命令が提供され、アンパック動作を実行するためにベクトル・アンパック・ゾーン・ハイ命令およびベクトル・アンパック・ゾーン・ロー命令が提供される。各命令は、汎用プロセッサなどのプロセッサ上でプログラムによってディスパッチされる、汎用プロセッサの命令セット・アーキテクチャ(ISA:instruction set architecture)の一部である(別の例では、各命令は、特定の機能のために構成されたコプロセッサなどの、専用プロセッサの一部であってよい)。
ベクトル・パック・ゾーン・レジスタ命令の実行の一部として、ゾーン10進数がパック10進数形式で表されるパック動作が実行される。パック動作を実行するために、例えば、連結、変換、レジスタへの書き込み、妥当性チェック、または条件コード設定、あるいはその組合せなどの、さまざまな動作が使用される。これらの動作の各々は、単一の命令を実行すること、システム性能を改善すること、およびシステム・リソースの使用を減らすことの一部として実行される。さらに、1つの例では、ソース・データおよびターゲット・データの両方に関する命令を使用して指定されたハードウェア・レジスタ(例えば、ベクトル・レジスタ)が、パック動作において使用され、命令によって、レジスタ内で直接、データに対する動作またはデータの使用あるいはその両方を可能にする。これによって、時間を節約し、システム性能を改善し、システム・リソースの使用を減らす。
さらなる態様では、ベクトル・アンパック・ゾーン・ハイ命令またはベクトル・アンパック・ゾーン・ロー命令の実行の一部として、パック10進数が1つまたは複数のゾーン10進数として表されるアンパック動作が実行される。アンパック動作を実行するために、例えば、変換、レジスタへの書き込み、または妥当性チェック、あるいはその組合せなどの、さまざまな動作が使用される。これらの動作の各々は、単一の命令を実行すること、システム性能を改善すること、およびシステム・リソースの使用を減らすことの一部として実行される。さらに、1つの例では、ソース・データおよびターゲット・データの両方に関する命令を使用して指定されたハードウェア・レジスタ(例えば、ベクトル・レジスタ)が、アンパック動作において使用され、命令によって、レジスタ内で直接、データに対する動作またはデータの使用あるいはその両方を可能にする。これによって、時間を節約し、システム性能を改善し、システム・リソースの使用を減らす。
1つの態様では、各命令は、単一の出力ベクトル・レジスタを使用して、パックされたデータまたはアンパックされたデータを保持し、これは、データ依存関係およびアウトオブオーダー実行にとって有益である。複数のレジスタの代わりに1つのレジスタに書き込むことによって、命令実行ごとの競合が減らされる。
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の1つの実施形態が、図1Aを参照して説明される。一例として、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)ハードウェア・アーキテクチャに基づく。z/Architectureハードウェア・アーキテクチャの1つの実施形態は、“z/Architecture Principles of Operation," IBM Publication No.SA22-7832-12, Thirteenth Edition, September 2019という公開文献に記載されており、この公開文献は本明細書において参照によってその全体が本明細書に組み込まれている。しかし、z/Architectureハードウェア・アーキテクチャは1つの例示的なアーキテクチャにすぎず、International Business Machines Corporationまたは他の実体あるいはその両方の、他のアーキテクチャまたは他の種類のコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むか、または使用するか、あるいはその両方であってよい。z/ArchitectureおよびIBMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
図1Aを参照すると、コンピューティング環境100は、例えば、汎用コンピューティング・デバイスの形態で示されるコンピュータ・システム102を含んでいる。コンピュータ・システム102は、1つまたは複数のバスまたは他の接続110あるいはその両方を介して互いに結合された、1つまたは複数のプロセッサまたはプロセッシング・ユニット104(例えば、中央処理装置(CPU:central processing units))、メモリ106(例えば、システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、またはストレージとも呼ばれる)、および1つまたは複数の入出力(I/O:input/output)インターフェイス108を含んでよいが、これらに限定されない。
バス110は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、およびさまざまなバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数の種類のバス構造のいずれかのうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)、MCA(MicroChannel Architecture)、EISA(Enhanced ISA)、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)を含むが、これらに限定されない。
メモリ106は、例えば、プロセッサ104のローカル・キャッシュ114に結合され得る、共有キャッシュなどのキャッシュ112を含んでよい。さらに、メモリ106は、1つまたは複数のプログラムまたはアプリケーション116および少なくとも1つのオペレーティング・システム118を含んでよい。例示的なオペレーティング・システムは、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/OS(R)オペレーティング・システムを含む。z/OSは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。International Business Machines Corporationまたは他の実体あるいはその両方によって提供される他のオペレーティング・システムが使用されてもよい。メモリ106は、本発明の態様の実施形態の機能を実行するように構成され得る1つまたは複数のコンピュータ可読プログラム命令120を含んでもよい。
コンピュータ・システム102は、例えばI/Oインターフェイス108を介して、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイ、および1つまたは複数のデータ・ストレージ・デバイス134などの、1つまたは複数の外部デバイス130と通信してよい。データ・ストレージ・デバイス134は、1つまたは複数のプログラム136、1つまたは複数のコンピュータ可読プログラム命令138、またはデータ、あるいはその組合せなどを格納してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
コンピュータ・システム102は、例えばI/Oインターフェイス108を介してネットワーク・インターフェイス132と通信してもよく、ネットワーク・インターフェイス132は、コンピュータ・システム102が、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:widearea network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
コンピュータ・システム102は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム102は、取り外し不可、不揮発性の磁気媒体(典型的には、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りもしくは書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であってよい。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム102と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
コンピュータ・システム102は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム102での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
1つの例では、プロセッサ(例えば、プロセッサ104)は、命令を実行するために使用される複数の機能コンポーネントを含む。図1Bに示されているように、これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント150と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット152と、デコードされた命令を実行するための1つまたは複数の命令実行コンポーネント154と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント156と、実行された命令の結果を提供するための書き戻しコンポーネント158とを含む。コンポーネントのうちの1つまたは複数は、命令処理において1つまたは複数のレジスタ160にアクセスするか、またはレジスタ160を使用するか、あるいはその両方を実行してよい。さらに、コンポーネントのうちの1つまたは複数は、本発明の1つまたは複数の態様に従って、本明細書において説明されているように、例えば、ベクトル・パック・ゾーン・レジスタ命令、ベクトル・アンパック・ゾーン・ハイ命令、またはベクトル・アンパック・ゾーン・ロー命令、あるいはその組合せ(または本発明の1つまたは複数の態様を使用し得る他の処理)のパック動作およびアンパック動作を実行することにおいて使用される1つまたは複数の他のコンポーネントの少なくとも一部を含むか、またはそれらのコンポーネントにアクセスすることができてよい。1つまたは複数の他のコンポーネントは、例えば、パック・コンポーネント/アンパック・コンポーネント(または1つまたは複数の他のコンポーネント)170を含む。
本明細書に記載されたパック動作およびアンパック動作は、ゾーン10進数形式などの1つの10進数形式と、符号付きパック10進数形式などの別の10進数形式との間の変換を含む。これらの形式の例が、図2A~2Bを参照して説明される。
図2Aを参照すると、ゾーン10進数形式の1つの例が示されている。1つの例では、ゾーン10進数は32桁(例えば、256ビット)を含み、各桁が1バイトに格納される。例えば、ゾーン10進数のバイト200は、ゾーン部分(例えば、左端の4ビット)202および桁部分(例えば、右端の4ビット)204を含んでいる。桁部分204は、10進数を表すコードを含んでいる。ゾーン形式での10進数は、英字および特殊文字を含んでいる、より大きい文字セットの一部であってよい。下位バイト206(例えば、10進数オペランドの右端のバイト)のゾーン部分は、10進数の符号208を含んでよい。
さらに、図2Bを参照すると、符号付きパック10進数形式の1つの例が示されている。1つの例では、符号付きパック10進数は、128ビットの長さであり、ストレージの各バイト220(右端のバイトである下位バイトを除く)は、2つの10進数222を含んでよい。下位バイトは、例えば、バイトの左端部分224内の1桁およびバイトの右端部分226内の符号(正または負)を含んでいる。
本発明の1つまたは複数の態様に従って、さまざまな命令を使用して、ゾーン10進数値およびパック10進数値に対するパック動作およびアンパック動作が実行される。例えば、パック動作を実行するために、本明細書ではベクトル・パック・ゾーン・レジスタ命令と呼ばれる命令が提供される。命令を実行することの一部として、パック動作を実行するために、例えば、連結動作、変換動作、レジスタへの書き込み動作、妥当性チェック動作、または条件コード設定動作、あるいはその組合せを含む、複数の動作が使用される。
例えば、連結動作、変換動作、レジスタへの書き込み動作、妥当性チェック動作、または条件コード設定動作、あるいはその組合せを含んでいるパック動作を実行するために使用されるベクトル・パック・ゾーン・レジスタ命令の1つの実施形態が、図3A~3Cを参照して説明される。命令は、1つの例では、汎用プロセッサ(例えば、プロセッサ104)を使用して実行される。本明細書における説明では、フィールドの特定の位置、特定のフィールド、または特定のサイズ、あるいはその組合せが(例えば、特定のバイトまたはビットあるいはその両方で)示される。しかし、他の位置、フィールド、またはサイズ、あるいはその組合せが提供され得る。さらに、特定の値(例えば、1または0)へのビットの設定が指定されることがあるが、これは単なる例である。ビットは、他の例では、反対の値または別の値などの異なる値に設定され得る。多くの変形が可能である。
1つの例では、ベクトル・パック・ゾーン・レジスタ命令は、拡張されたオペレーション・コード(オペコード)と共にベクトル・レジスタおよび即時動作を示すVRI-f形式を有する。ベクトル・パック・ゾーン・レジスタ命令は、例えば、1から16個の要素を含む固定サイズのベクトルを提供する、例えば、ベクトル機能の一部である。各ベクトルは、この機能において定義されたベクトル命令によって操作されるデータを含む。1つの実施形態では、ベクトルが複数の要素で構成されている場合、各要素は、他の要素と並列に処理される。1つの例では、すべての要素の処理が完了するまで、命令の完了は発生しない。他の実施形態では、要素は、部分的に並列に、または順次に、あるいはその両方で、処理される。
1つの実施形態では、32個のベクトル・レジスタが存在し、他の種類のレジスタが、ベクトル・レジスタの象限にマッピングすることができる。例えば、中央処理装置(例えば、プロセッサ104)内のプロセッサ・レジスタのアレイであるレジスタ・ファイルは、32個のベクトル・レジスタを含んでよく、各レジスタの長さは128ビットである。長さが64ビットである16個の浮動小数点レジスタは、ベクトル・レジスタに重なることができる。したがって、一例として、浮動小数点レジスタ2が変更された場合、ベクトル・レジスタ2も変更される。他の種類のレジスタの他のマッピングも可能である。
例えば、ストレージ内で、他のデータ形式と同じ左から右への順序でベクトル・データが現れる。0~7の番号が付けられたデータ形式のビットが、ストレージ内の左端の(最小の番号が付けられた)バイト位置でバイトを構成し、ビット8~15が、次の連続的位置でバイトを形成する、などとなる。さらに別の例では、ストレージ内で、右から左へのなどの別の順序でベクトル・データが現れることがある。
図3Aに示されているように、1つの例では、ベクトル・パック・ゾーン・レジスタ命令300は複数のフィールドを含んでおり、フィールドには、下付きの数字が関連付けられていることがある。命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、ベクトル・レジスタV1に関連付けられた下付きの数字1は、V1を使用して指定されたレジスタが第1のオペランドを含んでいることを示す、などとなる。レジスタのオペランドの長さは、1レジスタであり、例えば、128ビットである。
1つの実施形態では、ベクトル・パック・ゾーン・レジスタ命令300は、入力データが例えばゾーン10進数であり、出力が例えば符号付きパック10進数であるパック動作を示すオペレーション・コード(オペコード)フィールド302a、302b(例えば、ビット0~7および40~47)、第1のベクトル・レジスタを指定するために使用される第1のベクトル・レジスタ(V1)フィールド304(例えば、ビット8~11)、第2のベクトル・レジスタを指定するために使用される第2のベクトル・レジスタ(V2)フィールド306(例えば、ビット12~15)、第3のベクトル・レジスタを指定するために使用される第3のベクトル・レジスタ(V3)フィールド308(例えば、ビット16~19)、マスク(M5)フィールド310(例えば、ビット24~27)、即時(I4)フィールド312(例えば、ビット28~35)、およびレジスタ拡張ビット(RXB:register extension bit)フィールド314(例えば、ビット36~39)を含み、これらの各々が以下で説明される。1つの実施形態では、各フィールドは、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合され得る。これらのフィールドに関するさらなる情報が、以下で説明される。
1つの実施形態では、ベクトル・レジスタ(V1)フィールド304は、第1のオペランドを格納するベクトル・レジスタを示すために使用される。第1のオペランドは、パック動作から取得された結果であり、パック動作は、例えば、V2フィールド306を使用して指定されたベクトル・レジスタに位置する第2のオペランドおよびV3フィールド308を使用して指定されたベクトル・レジスタに位置する第3のオペランドを連結して、例えば、32桁および符号を含む32バイトのゾーン10進数を形成することを含み、このゾーン10進数が、例えば、31桁および符号を含む、例えば、符号付きパック10進数形式に変換される。
1つの例では、ベクトル・レジスタ・フィールド304、306、308の各々は、ベクトル・レジスタを指定するために、RXBフィールド314と共に使用される。例えば、RXBフィールド314は、ベクトル・レジスタによって指定されたオペランドの最上位ビットを含む。命令によって指定されないレジスタ指定のビットは、予備になり、0に設定されることになる。最上位ビットは、例えば、ベクトル・レジスタ・フィールドの4ビットのレジスタ指定の左に連結されて、5ビットのベクトル・レジスタ指定を作成する。
1つの例では、RXBフィールドが4つのビット(例えば、ビット0~3)を含んでおり、各ビットが次のように定義される。
0 -命令の第1のベクトル・レジスタ指定の最上位ビット(例えば、ビット8~11)。
1 -命令の第2のベクトル・レジスタ指定の最上位ビット(例えば、ビット12~15)(もしあれば)。
2 -命令の第3のベクトル・レジスタ指定の最上位ビット(例えば、ビット16~19)(もしあれば)。
3 -命令の第4のベクトル・レジスタ指定の最上位ビット(例えば、ビット32~35)(もしあれば)。
各ビットは、レジスタ番号に応じて、例えばアセンブラによって、0または1に設定される。例えば、レジスタ0~15の場合、ビットは0に設定され、レジスタ16~31の場合、ビットは1に設定される、などとなる。
0 -命令の第1のベクトル・レジスタ指定の最上位ビット(例えば、ビット8~11)。
1 -命令の第2のベクトル・レジスタ指定の最上位ビット(例えば、ビット12~15)(もしあれば)。
2 -命令の第3のベクトル・レジスタ指定の最上位ビット(例えば、ビット16~19)(もしあれば)。
3 -命令の第4のベクトル・レジスタ指定の最上位ビット(例えば、ビット32~35)(もしあれば)。
各ビットは、レジスタ番号に応じて、例えばアセンブラによって、0または1に設定される。例えば、レジスタ0~15の場合、ビットは0に設定され、レジスタ16~31の場合、ビットは1に設定される、などとなる。
1つの実施形態では、各RXBビットは、1つまたは複数のベクトル・レジスタを含んでいる命令内の特定の位置の拡張ビットである。例えば、RXBのビット0は、例えばV1に割り当てられる位置8~11の拡張ビットである、などとなる。具体的には、ベクトル・レジスタの場合、オペランドを含んでいるレジスタは、例えば、それに対応するレジスタ拡張ビット(RXB)を最上位ビットとして追加して、レジスタ・フィールドの4ビットのフィールドを使用して、指定される。例えば、4ビットのフィールドが0110であり、拡張ビットが0である場合、5ビットのフィールド00110がレジスタ番号6を示す。さらなる実施形態では、RXBフィールドが追加ビットを含み、ベクトルまたは位置ごとに、2つ以上のビットが拡張として使用される。
1つの例では、命令のマスク・フィールド(例えば、M5 310)は、本明細書において説明されるように、命令の実行の1つまたは複数の側面を制御することにおいて使用される。1つの例では、図3Bを参照すると、M5フィールド310は、例えば以下を含む。
符号妥当性確認なし(NSV:No Sign Validation)320:この制御(例えば、ビット0)が0であり、かつ妥当性確認なし(NV:No Validation)制御(例えば、ビット1)(下で説明される)が0である場合、一般オペランド・データ例外が存在するかどうかを判定するために、ソース・ベクトル(例えば、第2のオペランドおよび第3のオペランドの連結)の符号コードの妥当性がチェックされる。この制御(例えば、ビット0)が1であるか、または妥当性確認なし制御が1である場合、条件コードを設定するために、ソース・ベクトルの符号コードの妥当性のみがチェックされる。
妥当性確認なし(NV)322:この制御(例えば、ビット1)が0である場合、一般オペランド・データ例外に関してソース・ベクトルの桁の妥当性がチェックされ、符号妥当性確認なし制御が0である場合、ソース・ベクトルの符号コードの妥当性もチェックされる。この制御(例えば、ビット1)が1である場合、ソース・ベクトルの桁および符号コードの妥当性のみが条件コード設定に使用され、一般オペランド・データ例外は報告されない。
強制オペランド1正(Force Operand 1 Positive)(P1)324:この制御(例えば、ビット2)が1である場合、第1のオペランドに配置された結果の符号が正に強制され、例えば、1111の符号コードが使用される。この制御(例えば、ビット2)が0である場合、第1のオペランドに配置された結果の符号は、ソース・ベクトルからの符号コードを維持する。
条件コード設定(CS:Condition Code Set)326:この制御(例えば、ビット3)が0である場合、条件コードが設定されず、変化しない。この制御(例えば、ビット3)が1である場合、条件コードが、以下で指定されたとおりに設定される。
条件コード設定制御が1である場合、条件コードが次のように設定される。
0 結果が0に等しく、すべての桁および符号が有効であり、オーバーフローがない。
1 結果が0に等しくなく、符号が負であり、すべての桁および符号が有効であり、オーバーフローがない。
2 結果が0に等しくなく、符号が正であり、すべての桁および符号が有効であり、オーバーフローがない。
3 オーバーフローまたは無効な桁または無効な符号。
妥当性確認なしフィールド、符号妥当性確認なしフィールド、および条件コード設定フィールドの例示的な組合せ、ならびに一般データ例外(general data exception)に関して桁の符号がチェックされるかどうか(このチェックは、強制オペランド1正の値とは無関係である)、および条件コードが妥当性に基づいて設定されるかどうかを以下にまとめる。
NV NSV CS 一般データ例外に関する符号のチェック 一般データ例外に関する桁のチェック 条件コード設定
0 0 0 はい はい いいえ
0 0 1 はい はい はい
0 1 0 いいえ はい いいえ
0 1 1 いいえ はい はい
1 0 0 いいえ いいえ いいえ
1 0 1 いいえ いいえ はい
1 1 0 いいえ いいえ いいえ
1 1 1 いいえ いいえ はい
1つの例では、妥当性確認なしまたは符号妥当性確認なしが1に等しい場合、符号コードの妥当性がチェックされず、強制オペランド1正が0である場合に、ソース・オペランドの無効な符号コードが結果に伝搬される。
1つの例では、命令は、即時フィールド(例えば、I4 312)も使用する。一例として、図3Cを参照すると、即時フィールド312は、例えば以下を含む。
命令オーバーフロー・マスク(IOM:Instruction OverflowMask)330:この制御(例えば、ビット0)は、命令オーバーフロー・マスクである。命令オーバーフロー・マスクが1である場合、または(例えば、プログラム状態ワードなどの制御レジスタ内の)10進オーバーフロー・マスクが0である場合、10進オーバーフロー例外が抑制される。
結果桁数(RDC:Result Digits Count)332:ビット3~7は、第1のオペランドに配置されるソース・ベクトルの右端の桁数を指定する符号なし2進数を含む。ソース・ベクトルの大きさが、指定された桁数を使用して表される最大10進数より大きい場合、10進オーバーフローが発生し、10進オーバーフロー・マスクが1であり、かつ命令オーバーフロー・マスクが0である場合に、10進オーバーフローに関するプログラム割り込みが発生する。結果桁数フィールドが0である場合、指定例外が報告される。
1つの例では、ビット1~2は予備であり、0を含むことになり、そうでない場合、指定例外が認識される。
ベクトル・パック・ゾーン・レジスタ命令の1つの実施形態の実行では、ソース・ベクトル(連結された値とも呼ばれる)は、32桁および符号を含む、例えば、32バイトのゾーン10進数を形成するために、V2フィールド306を使用して指定されたベクトル・レジスタに位置する第2のオペランドの後にV3フィールド308を使用して指定されたベクトル・レジスタに位置する第3のオペランドが続く連結から形成される。ソース・ベクトルは、例えば、31桁および符号を含む、例えば、符号付きパック10進数形式などの、変換された結果に変換される。変換された結果から取得された結果は、第1のオペランドの位置(例えば、V1フィールド304を使用して指定されたベクトル・レジスタ)に配置される。
1つの例では、例えば、妥当性確認なし制御が1でない限り、一般オペランド・データ例外が存在するかどうかを判定するために、ソース・ベクトルのすべての桁のコードの妥当性がチェックされる。例えば、符号妥当性確認なし制御が1でなく、妥当性確認なし制御も1でない限り、一般オペランド・データ例外が存在するかどうかを判定するために、ソース・ベクトルの符号コードの妥当性がチェックされる。1つの例では、ゾーンの桁の妥当性がチェックされず、ソース・ベクトルは、例えば、右端のバイトのゾーン・フィールドに位置する1つの符号桁のみを含む。
条件コード設定制御は、一般オペランド・データ例外の制御とは無関係であり、例えば1に等しい場合、条件コード設定を決定するために、ソース・ベクトルのすべての桁および符号コードの妥当性がチェックされる。
一般オペランド・データ例外の決定は、1つの例では、10進オーバーフローの検出に先立ち、10進オーバーフローの検出よりも優先される。
結果桁数制御が31桁未満を指定する場合、第1のオペランドの残りの左端の桁に0が配置される。ソース・ベクトルの左端の桁がゼロ以外であるか、または先行ゼロの桁が除外されたときに、結果桁数フィールドがソース・ベクトル内の桁数より少ない桁数を指定する場合、10進オーバーフローが発生する。10進オーバーフロー・マスクが、例えば0であるか、または第4のオペランド内の命令オーバーフロー・マスク・フィールドが、例えば1である場合、10進オーバーフローが抑制される。
本発明の1つまたは複数の態様に従って、ベクトル・パック・ゾーン・レジスタ命令の実行に基づく処理の1つの実施形態のさらなる詳細が、図4を参照して説明される。1つの例では、命令を実行するために、一般的なプロセッサ104などのプロセッサが使用される。一例として、命令を実行するために、プロセッサのハードウェアが使用される。ハードウェアは、プロセッサから命令を受信する目的で、プロセッサ内にあるか、またはプロセッサに結合されてよく、プロセッサは、例えば、ハードウェア上で実行するための命令を取得し、デコードし、設定する。他の変形が可能である。
図4を参照すると、1つの実施形態では、最初にベクトル・パック・ゾーン・レジスタ命令などの命令が取得され(例えば、フェッチされる、受信される、提供される、など)(400)、実行される(410)。この実行は、例えば、命令の第2のオペランドおよび第3のオペランドを取得すること(412)を含み、これらのオペランドが連結されて、連結された値(ソース・ベクトルとも呼ばれる)を提供する(414)。第2のオペランドは、例えば、(例えば、V2フィールド306を使用して)命令によって指定された位置(例えば、ベクトル・レジスタ)から取得されたゾーン10進数(例えば、16桁、および任意選択的に、連結では使用されない符号)であり、第3のオペランドは、例えば、(例えば、V3フィールド308を使用して)命令によって指定された位置(例えば、ベクトル・レジスタ)から取得された別のゾーン10進数(例えば、16桁および符号)である。この連結は、例えば、第2のオペランドの後に第3のオペランドが続くことであり、本明細書では連結された値とも呼ばれる、例えば32桁および符号の、ソース・ベクトルを提供する。
ゾーン10進数形式などの1つの形式である連結された値が、符号付きパック10進数形式などの別の形式に変換されて、変換された結果を提供する(416)。1つの例では、符号付きパック10進数形式は、31桁および符号を含む。変換を実行するために、一例として、ゾーン10進数の桁が、パック10進数形式のニブル(2ニブルは1バイト)に配置される。例えば、連結された値の右端の桁は、符号付きパック10進数形式の右端のバイトに(連結された値の符号が右ニブルに配置されるため、左ニブルに)配置される。連結された値の次の2つの右端の桁が、符号付きパック10進数の次の右端のバイトに配置される、などとなる。符号付きパック10進数形式が31桁および符号を含んでいるため、符号付きパック10進数形式では、連結されたゾーン10進数の左端の桁は配置されない。ソース・ベクトルの左端の桁(例えば、32番目の桁)がゼロ以外である場合、10進オーバーフローが発生する。さらに、本明細書において説明されるように、先行ゼロの桁が除外されたときに、RDCフィールドがソース・ベクトル内の桁数より少ない桁数を指定する場合、10進オーバーフローが発生する。例として、32バイト/桁の入力ソース・ベクトルが29個の先行ゼロの桁(F0...F0 F1 F2 F3)を含み、RDC=2(または1以下)である場合、オーバーフローが発生し、32バイト/桁の入力ソース・ベクトルが30個の先行ゼロの桁(F0...F0 F0 F2 F3)を含み、RDC=2(または3以上)である場合、オーバーフローが発生せず、32バイト/桁の入力ソース・ベクトルがゼロ以外の左端の0の桁を含む場合、RDCの値にかかわらず、オーバーフローが発生する。例として、10進オーバーフロー・マスクが0であるか、または第4のオペランド内の命令オーバーフロー・マスク・フィールドが1である場合、10進オーバーフローが抑制される。
変換された結果から取得された結果は、第1のオペランドの位置(例えば、命令のV1を使用して指定されたレジスタ)などの、選択された位置に配置される(418)。1つの例では、この配置は、命令によって指定された1つまたは複数の制御に基づく。例えば、結果桁数は、(例えば、右端のバイトの左ニブルから始まる)第1のオペランドに配置されるソース・ベクトル(またはソース・ベクトルの右端の桁が、変換された結果の右端の桁と同じであり、例えば、RDC=5である場合、変換された結果の右端の5桁が、ソース・ベクトルの右端の5桁と同じであるため、変換された結果)の右端の桁数を指定する。ソース・ベクトルの大きさが、指定された桁数を使用して表される最大10進数より大きい場合、10進オーバーフローが発生し、10進オーバーフロー・マスクが1であり、かつ命令オーバーフロー・マスクが0である場合に、10進オーバーフローに関するプログラム割り込みが発生する。結果桁数フィールドが0である場合、指定例外が報告される。さらに、結果桁数制御が31桁未満を指定する場合、第1のオペランドの残りの左端の桁に0が配置される。ソース・ベクトルの左端の桁がゼロ以外であるか、または先行ゼロが除外されたときに、結果桁数フィールドがソース・ベクトル内の桁数より少ない桁数を指定する場合、10進オーバーフローが発生する。10進オーバーフロー・マスクが、例えば0であるか、または第4のオペランド内の命令オーバーフロー・マスク・フィールドが、例えば1である場合、10進オーバーフローが抑制される。
第1のオペランド内の結果の配置は、命令(例えば、強制オペランド1正、制御324)の制御に基づいて選択された符号を提供することを含む。制御324が1である場合、第1のオペランドに(例えば、右端のニブルに)配置された結果の符号が正に強制され、1111の符号コードが使用される。制御324が0である場合、第1のオペランドに配置された結果の符号は、ソース・ベクトルからの符号コードを維持する。
任意選択的に、命令の1つまたは複数の制御によって指定されたとおりに、1つまたは複数の妥当性チェックが実行される(420)。例えば、妥当性チェックは、もしあれば、例えば命令のM5フィールドの妥当性確認なし制御322または符号妥当性確認なし制御320あるいはその両方に基づいて、決定される。一例として、例えば、妥当性確認なし制御が1でない限り、一般オペランド・データ例外が存在するかどうかを判定するために、ソース・ベクトルの桁のコードの妥当性がチェックされる(例えば、桁が0から9の包含範囲内であることをチェックする)。例えば、符号妥当性確認なし制御が1でなく、妥当性確認なし制御も1でない限り、一般オペランド・データ例外が存在するかどうかを判定するために、ソース・ベクトルの符号コードの妥当性がチェックされる(例えば、符号コードが0xAから0xFの16進数の包含範囲内であることをチェックする)。1つの例では、ゾーンの桁の妥当性がチェックされず、ソース・ベクトルは、例えば、右端のバイトのゾーン・フィールドに位置する1つの符号桁のみを含む。
さらに、1つの例では、条件コード設定制御326などの、命令によって指定された1つまたは複数の制御に応じて、任意選択的に条件コードが設定される(422)。1つの例では、条件コード設定制御は、一般オペランド・データ例外の制御とは無関係であり、例えば1に等しい場合、条件コード設定を決定するために、ソース・ベクトルのすべての桁および符号コードの妥当性がチェックされる。
ベクトル・パック・ゾーン・レジスタ命令のさまざまなフィールドおよびレジスタが説明されたが、本発明の1つまたは複数の態様は、他のより多いか、もしくはより少ないか、またはその両方のフィールドもしくはレジスタまたはその両方、または他のサイズのフィールドもしくはレジスタまたはその両方、あるいはその組合せなどを使用してよい。多くの変形が可能である。例えば、命令の明示的に指定されたレジスタもしくはフィールドまたはその両方の代わりに、暗黙のレジスタが使用されてよく、または暗黙のレジスタもしくはフィールドまたはその両方の代わりに、明示的に指定されたレジスタもしくはフィールドまたはその両方が使用されてよく、あるいはその組合せであってよい。他の変形も可能である。
本明細書において説明されるように、1つの態様では、パック動作を実行するために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたマシン命令(例えば、ベクトル・パック・ゾーン・レジスタ命令))が提供される。例えば、この命令は、例えば、連結、変換、レジスタへの書き込み、妥当性チェック、または条件コード設定、あるいはその組合せを含んでいるパック動作を直接実行する、命令セット・アーキテクチャ(ISA)において定義されたハードウェア命令である。処理は、パック動作および採用された動作を実行するプログラムより高速であり、より効率的である。パック動作に関連するプログラムの複雑さが軽減される。さらに、動作(したがって、プロセッサ)の性能が改善される。ハードウェア命令の実行は、実行時間を短縮し、性能を改善する。
(例えば、より大きいサイズのデータに対してパック動作のさまざまな動作を実行するか、または複数のパック動作を実行するために使用されるか、あるいはその両方である)複数の命令ではなく、単一の命令を使用して、例えばパック動作を実行することによって、ハードウェア/ソフトウェア・インターフェイスの複数の通過を必要としないことにより、性能が改善される。さらに、1つの命令の一部として処理を実行することによって、処理は、処理を完了する前にプロセッサのレジスタ・ファイルのレジスタ(すなわち、メモリと機能ユニットの間でデータを格納するために使用されるプロセッサ・レジスタのアレイ)の更新を必要とせず、動作を実行している処理ユニット内にとどまる。これによって、実行時間を改善し、プロセッサ・リソースの使用を減らす。
さらに、レジスタ間にある(レジスタによって入力が提供され、出力が単一のレジスタに書き込まれる)単一の命令を使用することによって、例えば、入力をメモリから読み取ることも、出力をメモリに書き込むことも必要としないことにより、性能が改善される。レジスタ間の命令は、入力値/出力値を取得するためにメモリが参照される必要がないため、レジスタに対してやはり動作する他の命令と共に、より効率的な動作も促進する。
別の態様では、各命令が1つのベクトル・レジスタの書き込みのみを使用する、ベクトル・アンパック・ゾーン命令が提供される。例として、ベクトル・アンパック・ゾーン命令は、ベクトル・アンパック・ゾーン・ハイ命令およびベクトル・アンパック・ゾーン・ロー命令を含み、これらの命令の各々は、本発明の態様に従って、1つの形式(例えば、符号付きパック10進数形式)の値をアンパックして、別の形式(例えば、ゾーン10進数形式)の値を提供するために使用される。各命令は、符号付きパック10進数が1つまたは複数のゾーン10進数として表されるアンパック動作を実行する。アンパック動作を実行するために、例えば、変換、レジスタへの書き込み、または妥当性チェック、あるいはその組合せなどの、さまざまな動作が使用される。これらの動作の各々は、単一の命令を実行すること、システム性能を改善すること、およびシステム・リソースの使用を減らすことの一部として実行される。以下では、各命令に関するさらなる詳細が説明される。
アンパック動作を実行するために使用されるベクトル・アンパック・ゾーン・ハイ命令の1つの実施形態が、図5A~5Bを参照して説明される。命令は、1つの例では、汎用プロセッサ(例えば、プロセッサ104)を使用して実行される。本明細書における説明では、フィールドの特定の位置、特定のフィールド、または特定のサイズ、あるいはその組合せが(例えば、特定のバイトまたはビットあるいはその両方で)示される。しかし、他の位置、フィールド、またはサイズ、あるいはその組合せが提供され得る。さらに、特定の値(例えば、1または0)へのビットの設定が指定されることがあるが、これは単なる例である。ビットは、他の例では、反対の値または別の値などの異なる値に設定され得る。多くの変形が可能である。
1つの例では、ベクトル・アンパック・ゾーン・ハイ命令は、拡張されたオペレーション・コード(オペコード)と共にベクトル・レジスタおよびレジスタ動作を示すVRR-k形式を有する。この命令は、本明細書において説明されるように、例えば、ベクトル機能の一部である。
図5Aに示されているように、1つの例では、ベクトル・アンパック・ゾーン・ハイ命令500は複数のフィールドを含んでおり、フィールドには、下付きの数字が関連付けられていることがある。命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、ベクトル・レジスタV1に関連付けられた下付きの数字1は、V1を使用して指定されたレジスタが第1のオペランドを含んでいることを示す、などとなる。レジスタのオペランドの長さは、1レジスタであり、例えば、128ビットである。
1つの実施形態では、ベクトル・アンパック・ゾーン・ハイ命令500は、入力データが例えば符号付きパック10進数であり、出力が例えばゾーン10進数であるアンパック動作を示すオペレーション・コード(オペコード)フィールド502a、502b(例えば、ビット0~7および40~47)、第1のベクトル・レジスタを指定するために使用される第1のベクトル・レジスタ(V1)フィールド504(例えば、ビット8~11)、第2のベクトル・レジスタを指定するために使用される第2のベクトル・レジスタ(V2)フィールド506(例えば、ビット12~15)、マスク(M3)フィールド508(例えば、ビット24~27)、およびレジスタ拡張ビット(RXB)フィールド510(例えば、ビット36~39)を含み、これらの各々が以下で説明される。1つの実施形態では、各フィールドは、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合され得る。これらのフィールドに関するさらなる情報が、以下で説明される。
1つの実施形態では、ベクトル・レジスタ(V1)フィールド504は、第1のオペランド(例えば、結果)を格納するベクトル・レジスタを示すために使用され、ベクトル・レジスタ(V2)フィールド506は、命令への入力である第2のオペランドを格納するベクトル・レジスタを示すために使用される。第2のオペランドは、例えば、31桁および符号を含む、例えば、符号付きパック10進数形式である。1つの例では、ベクトル・レジスタ・フィールド504、506の各々は、ベクトル・レジスタを指定するために、RXBフィールド510と共に使用される。
1つの例では、命令のマスク・フィールド(例えば、M3 508)は、本明細書において説明されるように、命令の実行の1つまたは複数の側面を制御するために使用される。1つの例では、図5Bを参照すると、M3フィールド508は、例えば以下を含む。
符号妥当性確認なし(NSV)520:この制御(例えば、ビット0)が0であり、かつ妥当性確認なし(NV)制御(下で説明される)が0である場合、一般オペランド・データ例外が存在するかどうかを判定するために、第2のオペランドの符号コードの妥当性がチェックされる。この制御(例えば、ビット0)が1であるか、または妥当性確認なし制御が1である場合、第2のオペランドの符号コードの妥当性がチェックされない。
妥当性確認なし(NV)522:この制御(例えば、ビット1)が0である場合、第2のオペランドの桁の妥当性がチェックされ、符号妥当性確認なし制御も0である場合、第2のオペランドの符号コードの妥当性もチェックされる。この制御(例えば、ビット1)が1である場合、第2のオペランドの桁および符号コードの妥当性がチェックされない。
1つの例では、ビット2~3は予備であり、0を含むことになり、そうでない場合、指定例外が認識される。
ベクトル・アンパック・ゾーン・ハイ命令の1つの実施形態の実行では、31桁および符号を含んでいる符号付きパック10進数形式などの1つの形式の第2のオペランドの選択された桁(例えば、左端の15桁)が、ゾーン10進数形式などの別の形式の変換された結果に変換され、選択された位置(例えば、第1のオペランドの右端の15バイト)に配置される。最上位桁が、例えば0に設定される。
1つの例では、1111の2進数の符号化を含むゾーン・ビットがすべてのバイトに供給され、符号桁が結果に展開されない。1つの実施形態では、妥当性確認なし制御が0である場合、第2のオペランドの31桁がすべて有効なコードであることがチェックされ、符号妥当性確認なし制御が0である場合、符号もチェックされる。
本発明の1つまたは複数の態様に従って、ベクトル・アンパック・ゾーン・ハイ命令の実行に基づく処理の1つの実施形態のさらなる詳細が、図6を参照して説明される。1つの例では、命令を実行するために、一般的なプロセッサ104などのプロセッサが使用される。一例として、命令を実行するために、プロセッサのハードウェアが使用される。ハードウェアは、プロセッサから命令を受信する目的で、プロセッサ内にあるか、またはプロセッサに結合されてよく、プロセッサは、例えば、ハードウェア上で実行するための命令を取得し、デコードし、設定する。他の変形が可能である。
図6を参照すると、1つの実施形態では、最初にベクトル・アンパック・ゾーン・ハイ命令などの命令が取得され(例えば、フェッチされる、受信される、提供される、など)(600)、実行される(610)。例えば、この実行は、例えば、31桁および符号を含んでいる符号付きパック10進数形式である、命令の第2のオペランドを取得すること(612)を含む。第2のオペランドの選択された部分(例えば、左端の15桁)が、(例えば、ゾーン形式での)変換された結果に変換される(614)。変換を実行するために、一例として、左端の15桁が、ゾーン形式の15バイトに配置される。例えば、各桁は、ゾーン形式での各バイトの右端のニブルに書き込まれる。変換された結果から取得された結果は、選択された位置(例えば、命令のV1フィールドを使用して指定されたレジスタなどの、第1のオペランドの位置)に配置される(616)。一例として、変換された結果は、第1のオペランドの右端の15バイトに配置され、最上位桁(例えば、左端の桁)が0に設定される。やはり、各桁は、ゾーン形式の各バイトの右端のニブルに書き込まれる。さらに、1つの例では、1111の2進数の符号化を含むゾーン・ビットがすべてのバイト(例えば、各バイトの左端のニブル)に供給され、符号桁が結果に展開されない。
1つの例では、例えば、妥当性確認なし制御が0である場合、第2のオペランドの31桁が有効なコードである(例えば、0から9の包含範囲内である)ことがチェックされ、符号妥当性確認なし制御が0である場合、符号も(例えば、0xAから0xFの16進数の包含範囲内であることが)チェックされる(618)。
ベクトル・アンパック・ゾーン・ハイ命令の種々のフィールドおよびレジスタが説明されたが、本発明の1つまたは複数の態様は、他のより多いか、もしくはより少ないか、またはその両方のフィールドもしくはレジスタまたはその両方、または他のサイズのフィールドもしくはレジスタまたはその両方、あるいはその組合せなどを使用してよい。多くの変形が可能である。例えば、命令の明示的に指定されたレジスタもしくはフィールドまたはその両方の代わりに、暗黙のレジスタが使用されてよく、または暗黙のレジスタもしくはフィールドまたはその両方の代わりに、明示的に指定されたレジスタもしくはフィールドまたはその両方が使用されてよく、あるいはその組合せであってよい。他の変形も可能である。
本明細書において説明されるように、1つの態様では、符号付きパック10進数をアンパックするために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたマシン命令(例えば、ベクトル・アンパック・ゾーン・ハイ命令))が提供される。例えば、この命令は、例えば、変換、レジスタへの書き込み、または妥当性チェック、あるいはその組合せを含んでいるアンパック動作を直接実行する、命令セット・アーキテクチャ(ISA)において定義されたハードウェア命令である。処理は、アンパック動作および採用された動作を実行するプログラムより高速であり、より効率的である。アンパック動作に関連するプログラムの複雑さが軽減される。さらに、動作(したがって、プロセッサ)の性能が改善される。ハードウェア命令の実行は、実行時間を短縮し、性能を改善する。
(例えば、より大きいサイズのデータに対してアンパック動作のさまざまな動作を実行するか、または複数のアンパック動作を実行するために使用されるか、あるいはその両方である)複数の命令ではなく、単一の命令を使用して、例えばアンパック動作を実行することによって、ハードウェア/ソフトウェア・インターフェイスの複数の通過を必要としないことにより、性能が改善される。さらに、1つの命令の一部として処理を実行することによって、処理は、処理を完了する前にプロセッサのレジスタ・ファイルのレジスタ(すなわち、メモリと機能ユニットの間でデータを格納するために使用されるプロセッサ・レジスタのアレイ)の更新を必要とせず、動作を実行している処理ユニット内にとどまる。これによって、実行時間を改善し、プロセッサ・リソースの使用を減らす。
さらに、レジスタ間にある単一の命令を使用することによって、性能が改善される。
アンパック動作を実行するために使用されるベクトル・アンパック・ゾーン・ロー命令の1つの実施形態が、図5C~5Dを参照して説明される。命令は、1つの例では、汎用プロセッサ(例えば、プロセッサ104)を使用して実行される。本明細書における説明では、フィールドの特定の位置、特定のフィールド、または特定のサイズ、あるいはその組合せが(例えば、特定のバイトまたはビットあるいはその両方で)示される。しかし、他の位置、フィールド、またはサイズ、あるいはその組合せが提供され得る。さらに、特定の値(例えば、1または0)へのビットの設定が指定されることがあるが、これは単なる例である。ビットは、他の例では、反対の値または別の値などの異なる値に設定され得る。多くの変形が可能である。
1つの例では、ベクトル・アンパック・ゾーン・ロー命令は、拡張されたオペレーション・コード(オペコード)と共にベクトル・レジスタおよびレジスタ動作を示すVRR-k形式を有する。この命令は、本明細書において説明されるように、例えば、ベクトル機能の一部である。
図5Cに示されているように、1つの例では、ベクトル・アンパック・ゾーン・ロー命令550は複数のフィールドを含んでおり、フィールドには、下付きの数字が関連付けられていることがある。命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、ベクトル・レジスタV1に関連付けられた下付きの数字1は、V1を使用して指定されたレジスタが第1のオペランドを含んでいることを示す、などとなる。レジスタのオペランドの長さは、1レジスタであり、例えば、128ビットである。
1つの実施形態では、ベクトル・アンパック・ゾーン・ロー命令550は、入力データが例えば符号付きパック10進数であり、出力が例えばゾーン10進数であるアンパック動作を示すオペレーション・コード(オペコード)フィールド552a、552b(例えば、ビット0~7および40~47)、第1のベクトル・レジスタを指定するために使用される第1のベクトル・レジスタ(V1)フィールド554(例えば、ビット8~11)、第2のベクトル・レジスタを指定するために使用される第2のベクトル・レジスタ(V2)フィールド556(例えば、ビット12~15)、マスク(M3)フィールド558(例えば、ビット24~27)、およびレジスタ拡張ビット(RXB)フィールド560(例えば、ビット36~39)を含み、これらの各々が以下で説明される。1つの実施形態では、各フィールドは、別々であり、互いに独立しているが、他の実施形態では、2つ以上のフィールドが結合され得る。これらのフィールドに関するさらなる情報が、以下で説明される。
1つの実施形態では、ベクトル・レジスタ(V1)フィールド554は、第1のオペランド(例えば、結果)を格納するベクトル・レジスタを示すために使用され、ベクトル・レジスタ(V2)フィールド556は、命令への入力である第2のオペランドを格納するベクトル・レジスタを示すために使用される。第2のオペランドは、例えば、31桁および符号を含む、例えば、符号付きパック10進数形式である。1つの例では、ベクトル・レジスタ・フィールド554、556の各々は、ベクトル・レジスタを指定するために、RXBフィールド560と共に使用される。
1つの例では、命令のマスク・フィールド(例えば、M3 558)は、本明細書において説明されるように、命令の実行の1つまたは複数の側面を制御するために使用される。1つの例では、図5Dを参照すると、M3フィールド558は、例えば以下を含む。
符号妥当性確認なし(NSV)570:この制御(例えば、ビット0)が0であり、かつ妥当性確認なし(NV)制御(下で説明される)が0である場合、一般オペランド・データ例外が存在するかどうかを判定するために、第2のオペランドの符号コードの妥当性がチェックされる。この制御(例えば、ビット0)が1であるか、または妥当性確認なし制御が1である場合、第2のオペランドの符号コードの妥当性がチェックされない。
妥当性確認なし(NV)572:この制御(例えば、ビット1)が0である場合、第2のオペランドの桁の妥当性がチェックされ、符号妥当性確認なし制御が0である場合、第2のオペランドの符号コードの妥当性もチェックされる。この制御(例えば、ビット1)が1である場合、第2のオペランドの桁および符号コードの妥当性がチェックされない。
強制オペランド1正(P1)574:この制御(例えば、ビット2)が1である場合、第1のオペランドに配置された結果の符号が正に強制され、1111の符号コードが使用される。この制御(例えば、ビット2)が0である場合、第1のオペランドに配置された結果の符号は、第2のオペランドからの符号コードを維持する。1つの例では、一般オペランド・データ例外が存在しない場合に、このフィールドが適用される。
1つの例では、ビット3は予備であり、0を含むことになり、そうでない場合、指定例外が認識される。
1つの例では、妥当性確認なしまたは符号妥当性確認なしが1に等しい場合、符号コードの妥当性がチェックされず、強制オペランド1正、制御が0である場合に、ソース・オペランドの無効な符号コードが結果に伝搬される。
ベクトル・アンパック・ゾーン・ロー命令の1つの実施形態の実行では、31桁および符号を含んでいる符号付きパック10進数形式などの1つの形式の第2のオペランドの選択された桁(例えば、右端の16桁)が、ゾーン10進数形式などの別の形式の変換された結果に変換され、例えば、第1のオペランドの位置に配置される。
1つの例では、1111の2進数の符号化を含むゾーン・ビットが、右端のバイトを除くすべてのバイトに供給され、右端のバイトのゾーンは、第1のオペランドの符号を受信する。妥当性確認なし制御が0である場合、第2のオペランドの31桁がすべて有効なコードであることがチェックされ、符号妥当性確認なし制御が0である場合、符号もチェックされる。
本発明の1つまたは複数の態様に従って、ベクトル・アンパック・ゾーン・ロー命令の実行に基づく処理の1つの実施形態のさらなる詳細が、図6を参照して説明される。1つの例では、命令を実行するために、一般的なプロセッサ104などのプロセッサが使用される。一例として、命令を実行するために、プロセッサのハードウェアが使用される。ハードウェアは、プロセッサから命令を受信する目的で、プロセッサ内にあるか、またはプロセッサに結合されてよく、プロセッサは、例えば、ハードウェア上で実行するための命令を取得し、デコードし、設定する。他の変形が可能である。
図6を参照すると、1つの実施形態では、最初にベクトル・アンパック・ゾーン・ロー命令などの命令が取得され(例えば、フェッチされる、受信される、提供される、など)(600)、実行される(610)。例えば、この実行は、例えば、31桁および符号を含んでいる符号付きパック10進数形式である、命令の第2のオペランドを取得すること(612)を含む。第2のオペランドの選択された部分(例えば、右端の16桁および符号)が、(例えば、ゾーン形式での)変換された結果に変換される(614)。変換を実行するために、一例として、右端の16桁および符号が、ゾーン形式の16バイトに配置される。例えば、各桁は、ゾーン形式での各バイトの右端のニブルに書き込まれ、符号は、右端のバイトの左ニブルに配置される。変換された結果から取得された結果は、選択された位置(例えば、命令のV1フィールドを使用して指定されたレジスタなどの、第1のオペランドの位置)に配置される(616)。例えば、変換された結果は、V1を使用して指定されたベクトル・レジスタに書き込まれ、変換された結果の各桁が、各バイトの右端のニブルに書き込まれる。さらに、1つの例では、1111の2進数の符号化を含むゾーン・ビットが、右端のバイトを除くすべてのバイト(例えば、各バイトの左端のニブル)に供給され、右端のバイトのゾーンは、第1のオペランドの符号を受信する。
1つの例では、例えば、妥当性確認なし制御が0である場合、第2のオペランドの31桁が有効なコードであることがチェックされ、符号妥当性確認なし制御が0である場合、符号もチェックされる(618)。
ベクトル・アンパック・ゾーン・ロー命令の種々のフィールドおよびレジスタが説明されたが、本発明の1つまたは複数の態様は、他のより多いか、もしくはより少ないか、またはその両方のフィールドもしくはレジスタまたはその両方、または他のサイズのフィールドもしくはレジスタまたはその両方、あるいはその組合せなどを使用してよい。多くの変形が可能である。例えば、命令の明示的に指定されたレジスタもしくはフィールドまたはその両方の代わりに、暗黙のレジスタが使用されてよく、または暗黙のレジスタもしくはフィールドまたはその両方の代わりに、明示的に指定されたレジスタもしくはフィールドまたはその両方が使用されてよく、あるいはその組合せであってよい。他の変形も可能である。
本明細書において説明されるように、1つの態様では、符号付きパック10進数をアンパックするために、単一の命令(例えば、ハードウェア/ソフトウェア・インターフェイスでの単一の設計されたマシン命令(例えば、ベクトル・アンパック・ゾーン・ロー命令))が提供される。例えば、この命令は、例えば、変換、レジスタへの書き込み、または妥当性チェック、あるいはその組合せを含んでいるアンパック動作を直接実行する、命令セット・アーキテクチャ(ISA)において定義されたハードウェア命令である。処理は、アンパック動作および採用された動作を実行するプログラムより高速であり、より効率的である。アンパック動作に関連するプログラムの複雑さが軽減される。さらに、動作(したがって、プロセッサ)の性能が改善される。ハードウェア命令の実行は、実行時間を短縮し、性能を改善する。
1つの実施形態では、ベクトル・アンパック・ゾーン・ハイ命令およびベクトル・アンパック・ゾーン・ロー命令が一緒に使用されて、ベクトル・レジスタ内の符号付きパック10進数形式のオペランドを、符号なしハイ・データおよび符号付きロー・データを含む2つのベクトル・レジスタ内のゾーン10進数形式のオペランドにアンパックしてよい。いずれかまたは両方の命令が、符号付きパック10進数形式のソースの桁および符号コードの妥当性をチェックすることができる。
本発明の1つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。パック動作またはアンパック動作を実行するために単一の設計されたマシン命令を使用して、複雑さを軽減し、リソースの使用を減らし、処理速度を上げることによって、コンピューティング環境内の性能を改善する。データまたは命令あるいはその両方は、コンピュータ処理、医用処理、設計、自動車技術、製造などの多くの技術分野で使用され得る。データのパック/アンパックにおいて最適化を実現することによって、実行時間を削減することにより、これらの技術分野が改善される。
コンピューティング環境内の処理が、本発明の1つまたは複数の態様に関連しているとき、その処理を容易にする1つの実施形態のさらなる詳細が、図7A~7Bを参照して説明される。
図7Aを参照すると、1つの実施形態では、1つの10進数形式と別の10進数形式の間の変換を実行するための命令が実行される(700)。1つの10進数形式または他の10進数形式は、ゾーン10進数形式である(702)。この実行は、命令を使用して指定された少なくとも1つのレジスタから値を取得すること(704)と、この値の少なくとも一部を1つの10進数形式から1つの10進数形式と異なる他の10進数形式に変換し、変換された結果を提供すること(706)と、変換された結果から取得された結果を、命令を使用して指定された単一のレジスタに書き込むこと(708)とを含む。
一例として、1つの10進数形式がゾーン10進数形式であり、他の10進数形式がパック10進数形式である(710)。
1つの例では、値を取得することは、命令の少なくとも1つのフィールドを使用して指定された第1のベクトル・レジスタから第1の値を取得すること(712)と、命令の少なくとも1つのフィールドを使用して指定された第2のベクトル・レジスタから第2の値を取得すること(714)と、第1の値および第2の値を連結して値を取得すること(716)とを含む。
図7Bを参照すると、1つの例では、書き込むことは、結果として書き込まれる変換された結果の桁数を決定すること(720)と、結果として書き込まれる変換された結果の決定された桁数を選択すること(722)と、選択された、決定された桁数を単一のレジスタに書き込むこと(724)とを含む。
1つの例では、桁数を決定することは、命令を使用して指定された制御をチェックすること(726)を含む。さらに、1つの例として、単一のレジスタは単一のベクトル・レジスタである(728)。
別の例として、1つの10進数形式がパック10進数形式であり、他の10進数形式がゾーン10進数形式である(730)。1つの例では、値の少なくとも一部を変換することは、値の選択された桁を変換して、変換された結果を取得することを含み(732)、選択された桁は、例えば、値の左端の15桁を含む(734)。さらなる例として、選択された桁は、値の右端の16桁を含み(736)、変換することは、値の符号を変換することを含む(738)。
1つの例では、書き込むことは、変換された結果を単一のレジスタの選択された部分に書き込むことを含み、単一のレジスタはベクトル・レジスタである(740)。
単一の命令を使用してパック動作およびアンパック動作を実行することによって、性能が改善され、リソースの利用が減らされる。単一の設計された命令を使用して、パック(例えば、連結、変換、書き込み、妥当性チェック、または条件コード設定、あるいはその組合せ)動作およびアンパック(例えば、変換、書き込み、または妥当性チェック、あるいはその組合せ)動作を実行することによって、パック動作またはアンパック動作などの特定のタスクが、ソフトウェア・パラダイムを使用するよりもはるかに効率的に実行され得る。パック動作またはアンパック動作がはるかに高速に実行され、実行時間を短縮し、プロセッサまたはシステム全体あるいはその両方の性能を改善する。
他の変形および実施形態が可能である。
本発明の態様は、多くの種類のコンピューティング環境によって使用され得る。本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例が、図8Aを参照して説明される。一例として、図8Aのコンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)ハードウェア・アーキテクチャに基づく。しかし、z/Architectureハードウェア・アーキテクチャは、1つの例示的なアーキテクチャにすぎない。さらに、コンピューティング環境は、Intel(R)x86アーキテクチャ、International Business Machines Corporationの他のアーキテクチャ、または他の企業のアーキテクチャ、あるいはその組合せを含むが、これらに限定されない、他のアーキテクチャに基づいてよい。Intelは、米国および他の国における、Intel Corporationまたはその子会社の商標または登録商標である。
1つの例では、コンピューティング環境10は中央電子回路複合体(CEC:centralelectronics complex)11を含む。中央電子回路複合体11は、例えば、1つまたは複数のプロセッサ(中央処理装置(CPU)とも呼ばれる)13および入出力(I/O)サブシステム14に結合されたメモリ12(システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、ストレージとも呼ばれる)などの、複数のコンポーネントを含んでいる。
I/Oサブシステム14は、中央電子回路複合体の一部であるか、または中央電子回路複合体から分離することができる。I/Oサブシステム14は、主記憶装置12と、中央電子回路複合体に結合された入出力制御ユニット15および入出力(I/O)デバイス16との間の情報の流れを方向付ける。
多くの種類のI/Oデバイスが使用され得る。1つの特定の種類は、データ・ストレージ・デバイス17である。データ・ストレージ・デバイス17は、1つまたは複数のプログラム18、1つまたは複数のコンピュータ可読プログラム命令19、またはデータ、あるいはその組合せなどを格納することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
中央電子回路複合体11は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなにコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であることができる。例えば、中央電子回路複合体11は、取り外し不可、不揮発性の磁気媒体(典型的には、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りおよび書き込みを行うための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、もしくは他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りおよび書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であることができる。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、中央電子回路複合体11と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
さらに、中央電子回路複合体11は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用され得る。中央電子回路複合体11での使用に適した周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
中央電子回路複合体11は、1つまたは複数の実施形態では、論理分割または仮想化あるいはその両方のサポートを提供する。1つの実施形態では、図8Bに示されているように、メモリ12は、例えば、1つまたは複数の論理パーティション20、論理パーティションを管理するハイパーバイザ21、およびプロセッサ・ファームウェア22を含んでいる。ハイパーバイザ21の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるプロセッサ・リソース/システム管理機構(PR/SM(TM):Processor Resource/System Manager)である。本明細書において使用されるとき、ファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、上位レベルのマシン・コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。1つの実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供され、システムのハードウェアへのオペレーティング・システムのアクセスを制御する、独自のコードを含む。PR/SMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
各論理パーティション20は、別々のシステムとして機能することができる。すなわち、各論理パーティションは、独立してリセットされて、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/OS(R)オペレーティング・システムなどのゲスト・オペレーティング・システム23、または結合機能制御コード(CFCC:coupling facility control code)などの他の制御コード24を実行し、異なるプログラム25と共に動作することができる。論理パーティション内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/OSオペレーティング・システムが例として提供されているが、本発明の1つまたは複数の態様に従って、International Business Machines Corporationまたは他の企業あるいはその両方によって提供される他のオペレーティング・システムが使用され得る。
メモリ12は、論理パーティションに割り当てられる物理プロセッサ・リソースであるCPU13(図8A)に結合される。例えば、論理パーティション20は、1つまたは複数の論理プロセッサを含み、それらの論理プロセッサの各々は、論理パーティションに動的に割り当てられる物理プロセッサ・リソース13の全部または一部を表す。
さらに別の実施形態では、中央電子回路複合体は、(論理分割をサポートするか、またはサポートしない)仮想マシンのサポートを提供する。図8Cに示されているように、中央電子回路複合体11のメモリ12は、例えば、1つまたは複数の仮想マシン26、仮想マシンを管理する仮想マシン・マネージャ(ハイパーバイザ27など)、およびプロセッサ・ファームウェア28を含んでいる。ハイパーバイザ27の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/VM(R)ハイパーバイザである。ハイパーバイザは、ホストと呼ばれることがある。z/VMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
中央電子回路複合体の仮想マシンのサポートは、多数の仮想マシン26を動作させることができるようにし、各仮想マシン26は、異なるプログラム29で動作し、Linux(R)オペレーティング・システムなどのゲスト・オペレーティング・システム30を実行することができる。各仮想マシン26は、別々のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲスト・オペレーティング・システムを実行し、異なるプログラムで動作することができる。仮想マシン内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/VMおよびLinuxが例として提供されているが、本発明の1つまたは複数の態様に従って、他の仮想マシン・マネージャまたはオペレーティング・システムあるいはその両方が使用され得る。Linux Foundation(世界規模での商標の所有者であるLinus Torvaldsの専用実施権者)からのサブライセンスに従って、登録商標Linux(R)が使用される。
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図9Aを参照して説明される。この例では、コンピューティング環境36は、例えば、1つまたは複数のバス40または他の接続あるいはその両方を介して互いに結合された、ネイティブ中央処理装置(CPU)37、メモリ38、および1つまたは複数の入出力デバイスまたはインターフェイスあるいはその両方39を含む。例として、コンピューティング環境36は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるPowerPC(R)プロセッサ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるインテル(R)Itanium(R)IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、インテル社、Oracle社、もしくは他の企業、またはその組合せによって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。PowerPCは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。Itaniumは、米国および他の国における、インテル社またはその子会社の商標または登録商標である。
ネイティブ中央処理装置37は、環境内で処理中に使用される1つもしくは複数の汎用レジスタまたは1つもしくは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ41を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
さらに、ネイティブ中央処理装置37は、メモリ38に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ38に格納されたエミュレータ・コード42を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード42は、z/Architectureハードウェア・アーキテクチャ以外のアーキテクチャに基づくマシン(PowerPCプロセッサ、HP Superdomeサーバなど)が、z/Architectureハードウェア・アーキテクチャをエミュレートし、z/Architectureハードウェア・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
エミュレータ・コード42に関連するさらなる詳細が、図9Bを参照して説明される。メモリ38に格納されたゲスト命令43は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命令43は、z/Architectureハードウェア・アーキテクチャに基づくプロセッサ上で実行するように設計されるが、代わりに、例えばインテルItanium IIプロセッサであってよい、ネイティブCPU37上でエミュレートされる。1つの例では、エミュレータ・コード42は、メモリ38から1つまたは複数のゲスト命令43を取得するため、および取得された命令のローカル・バッファリングを任意選択的に提供するための命令フェッチ・ルーチン44を含む。エミュレータ・コード42は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令46に変換するための命令変換ルーチン45も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
さらに、エミュレータ・コード42は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令46の実行は、データをメモリ38からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、または変換ルーチンによって決定された任意の種類の算術演算もしくは論理演算を実行することを含んでよい。
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの任意の組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用して、またはメモリ38内の位置を使用することによって、エミュレートされ得る。実施形態では、ゲスト命令43、ネイティブ命令46、およびエミュレータ・コード42は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配され得る。
本発明の態様に従って、エミュレートされる命令は、本明細書に記載されたベクトル・パック・ゾーン・レジスタ命令、ベクトル・アンパック・ゾーン・ハイ命令、およびベクトル・アンパック・ゾーン・ロー命令を含む。
前述されたコンピューティング環境は、使用可能なコンピューティング環境の例にすぎない。分割されない環境、分割された環境、クラウド環境、またはエミュレートされた環境、あるいはその組合せを含むが、これらに限定されない、他の環境が使用されてよく、実施形態はいずれか1つの環境に限定されない。本明細書ではコンピューティング環境のさまざまな例が説明されるが、本発明の1つまたは複数の態様が、多くの種類の環境と共に使用され得る。本明細書で提供されるコンピューティング環境は、例にすぎない。
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成されることが可能である。
1つまたは複数の態様がクラウド・コンピューティングに関連してよい。
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された教示の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できることがある。
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データおよびアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
ここで図10を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード52を含んでいる。ノード52は、互いに通信してよい。ノード52は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはこれらの組合せなどに、物理的または仮想的にグループ化され得る(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図10に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
ここで図11を参照すると、クラウド・コンピューティング環境50(図10)によって提供される機能的抽象レイヤのセットが示されている。図11に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供してよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当ておよび管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されるワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、ならびにベクトル・パックおよびベクトル・アンパック処理96が挙げられる。
本発明の態様は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-onlymemory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasableprogrammable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せ)を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上もしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)もしくは広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路をカスタマイズしてよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装されるということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実現されるか、同時に実行されるか、時間的に部分的もしくは完全に重複する方法で実質的に同時に実行されるか、または場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装されるということにも注意する。
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされ得る。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供され得る。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、1つまたは複数の態様を組み込むため、または1つまたは複数の態様を使用するため、あるいはその両方のために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、さまざまな命令または動作が使用され得る。さらに、さまざまな種類のレジスタまたは異なるレジスタあるいはその両方が使用され得る。さらに、数値を表すために使用される他の形式が採用され得る。一例として、本発明の態様は、分離した符号付きゾーン10進数形式、符号なしパック10進数形式、または他の形式、あるいはその組合せの数値部分に使用され得る。多くの変形が可能である。
本明細書では、さまざまな態様が説明される。さらに、本発明の態様の思想から逸脱することなく、多くの変形が可能である。本明細書に記載された各態様または特徴およびその変形を、特に矛盾しない限り、任意の他の態様または特徴と組み合わせることができるということに、注意するべきである。
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタもしくはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
Claims (20)
- コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、
1つの10進数形式と別の10進数形式の間の変換を実行するための命令を実行することを含む方法を実行し、前記1つの10進数形式または前記他の10進数形式がゾーン10進数形式であり、前記実行することが、
前記命令を使用して指定された少なくとも1つのレジスタから値を取得することと、
前記値の少なくとも一部を前記1つの10進数形式から前記1つの10進数形式と異なる前記他の10進数形式に変換し、変換された結果を提供することと、
前記変換された結果から取得された結果を、前記命令を使用して指定された単一のレジスタに書き込むこととを含む、コンピュータ・プログラム製品。 - 前記1つの10進数形式が前記ゾーン10進数形式であり、前記他の10進数形式がパック10進数形式である、請求項1に記載のコンピュータ・プログラム製品。
- 前記1つの10進数形式がパック10進数形式であり、前記他の10進数形式が前記ゾーン10進数形式である、請求項1に記載のコンピュータ・プログラム製品。
- 前記値を前記取得することが、
前記命令の少なくとも1つのフィールドを使用して指定された第1のベクトル・レジスタから第1の値を取得することと、
前記命令の少なくとも1つのフィールドを使用して指定された第2のベクトル・レジスタから第2の値を取得することと、
前記第1の値および前記第2の値を連結して前記値を取得することとを含む、請求項1ないし3のいずれか一項に記載のコンピュータ・プログラム製品。 - 前記書き込むことが、
前記結果として書き込まれる前記変換された結果の桁数を決定することと、
前記結果として書き込まれる前記変換された結果の前記決定された桁数を選択することと、
前記選択された、決定された桁数を前記単一のレジスタに書き込むこととを含む、請求項1ないし4のいずれか一項に記載のコンピュータ・プログラム製品。 - 前記桁数を前記決定することが、前記命令を使用して指定された制御をチェックすることを含み、前記単一のレジスタが単一のベクトル・レジスタである、請求項5に記載のコンピュータ・プログラム製品。
- 前記値の少なくとも一部を前記変換することが、前記値の選択された桁を変換して、前記変換された結果を取得することを含む、請求項1ないし6のいずれか一項に記載のコンピュータ・プログラム製品。
- 前記選択された桁が、前記値の左端の15桁を含む、請求項7に記載のコンピュータ・プログラム製品。
- 前記選択された桁が、前記値の右端の16桁を含み、前記変換することが、前記値の符号を変換することをさらに含む、請求項7に記載のコンピュータ・プログラム製品。
- 前記書き込むことが、前記変換された結果を前記単一のレジスタの選択された部分に書き込むことを含み、前記単一のレジスタがベクトル・レジスタである、請求項1ないし9のいずれか一項に記載のコンピュータ・プログラム製品。
- コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを備え、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
1つの10進数形式と別の10進数形式の間の変換を実行するための命令を実行することを含み、前記1つの10進数形式または前記他の10進数形式がゾーン10進数形式であり、前記実行することが、
前記命令を使用して指定された少なくとも1つのレジスタから値を取得することと、
前記値の少なくとも一部を前記1つの10進数形式から前記1つの10進数形式と異なる前記他の10進数形式に変換し、変換された結果を提供することと、
前記変換された結果から取得された結果を、前記命令を使用して指定された単一のレジスタに書き込むこととを含む、コンピュータ・システム。 - 前記1つの10進数形式が前記ゾーン10進数形式であり、前記他の10進数形式がパック10進数形式である、請求項11に記載のコンピュータ・システム。
- 前記1つの10進数形式がパック10進数形式であり、前記他の10進数形式が前記ゾーン10進数形式である、請求項11に記載のコンピュータ・システム。
- 前記値を前記取得することが、
前記命令の少なくとも1つのフィールドを使用して指定された第1のベクトル・レジスタから第1の値を取得することと、
前記命令の少なくとも1つのフィールドを使用して指定された第2のベクトル・レジスタから第2の値を取得することと、
前記第1の値および前記第2の値を連結して前記値を取得することとを含む、請求項11ないし13のいずれか一項に記載のコンピュータ・システム。 - 前記書き込むことが、
前記結果として書き込まれる前記変換された結果の桁数を決定することと、
前記結果として書き込まれる前記変換された結果の前記決定された桁数を選択することと、
前記選択された、決定された桁数を前記単一のレジスタに書き込むこととを含む、請求項11ないし14のいずれか一項に記載のコンピュータ・システム。 - コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
1つの10進数形式と別の10進数形式の間の変換を実行するための命令を実行することを含み、前記1つの10進数形式または前記他の10進数形式がゾーン10進数形式であり、前記実行することが、
前記命令を使用して指定された少なくとも1つのレジスタから値を取得することと、
前記値の少なくとも一部を前記1つの10進数形式から前記1つの10進数形式と異なる前記他の10進数形式に変換し、変換された結果を提供することと、
前記変換された結果から取得された結果を、前記命令を使用して指定された単一のレジスタに書き込むこととを含む、コンピュータ実装方法。 - 前記1つの10進数形式が前記ゾーン10進数形式であり、前記他の10進数形式がパック10進数形式である、請求項16に記載のコンピュータ実装方法。
- 前記1つの10進数形式が前記パック10進数形式であり、前記他の10進数形式がゾーン10進数形式である、請求項16に記載のコンピュータ実装方法。
- 前記値を前記取得することが、
前記命令の少なくとも1つのフィールドを使用して指定された第1のベクトル・レジスタから第1の値を取得することと、
前記命令の少なくとも1つのフィールドを使用して指定された第2のベクトル・レジスタから第2の値を取得することと、
前記第1の値および前記第2の値を連結して前記値を取得することとを含む、請求項16ないし18のいずれか一項に記載のコンピュータ実装方法。 - 前記書き込むことが、
前記結果として書き込まれる前記変換された結果の桁数を決定することと、
前記結果として書き込まれる前記変換された結果の前記決定された桁数を選択することと、
前記選択された、決定された桁数を前記単一のレジスタに書き込むこととを含む、請求項16ないし19のいずれか一項に記載のコンピュータ実装方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/186,756 | 2021-02-26 | ||
US17/186,756 US11442726B1 (en) | 2021-02-26 | 2021-02-26 | Vector pack and unpack instructions |
PCT/EP2022/054053 WO2022179944A1 (en) | 2021-02-26 | 2022-02-18 | Vector pack and unpack instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024507651A true JP2024507651A (ja) | 2024-02-21 |
Family
ID=80785043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023541668A Pending JP2024507651A (ja) | 2021-02-26 | 2022-02-18 | 数値の形式変換方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11442726B1 (ja) |
EP (1) | EP4298509A1 (ja) |
JP (1) | JP2024507651A (ja) |
KR (1) | KR20230124088A (ja) |
CN (1) | CN116940926A (ja) |
AU (1) | AU2022227809B2 (ja) |
CA (1) | CA3204622A1 (ja) |
IL (1) | IL304000A (ja) |
WO (1) | WO2022179944A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117608590B (zh) * | 2024-01-24 | 2024-04-09 | 长沙科梁科技有限公司 | 数据组包解包方法、装置和计算机设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4141005A (en) | 1976-11-11 | 1979-02-20 | International Business Machines Corporation | Data format converting apparatus for use in a digital data processor |
US6260137B1 (en) | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
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 |
JP5689366B2 (ja) | 2011-05-31 | 2015-03-25 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ゾーン10進数形式の変数へのアクセスを有する言語のバイナリコードを最適化する方法、並びにその最適化装置及びコンピュータ・プログラム |
US10564966B2 (en) | 2011-12-22 | 2020-02-18 | Intel Corporation | Packed data operation mask shift processors, methods, systems, and instructions |
US9454507B2 (en) | 2011-12-23 | 2016-09-27 | Intel Corporation | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
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 |
US20150089189A1 (en) * | 2013-09-24 | 2015-03-26 | Apple Inc. | Predicate Vector Pack and Unpack Instructions |
US9152520B2 (en) | 2013-09-26 | 2015-10-06 | Texas Instruments Incorporated | Programmable interface-based validation and debug |
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 |
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 |
US10203955B2 (en) | 2014-12-31 | 2019-02-12 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality |
EP3398052A1 (en) * | 2015-12-29 | 2018-11-07 | Intel Corporation | Hardware apparatus and methods for converting encoding formats |
US11409525B2 (en) | 2018-01-24 | 2022-08-09 | Intel Corporation | Apparatus and method for vector multiply and accumulate of packed words |
US11099853B2 (en) | 2019-02-15 | 2021-08-24 | International Business Machines Corporation | Digit validation check control in instruction execution |
-
2021
- 2021-02-26 US US17/186,756 patent/US11442726B1/en active Active
-
2022
- 2022-02-18 WO PCT/EP2022/054053 patent/WO2022179944A1/en active Application Filing
- 2022-02-18 CN CN202280017269.3A patent/CN116940926A/zh active Pending
- 2022-02-18 EP EP22710977.4A patent/EP4298509A1/en active Pending
- 2022-02-18 AU AU2022227809A patent/AU2022227809B2/en active Active
- 2022-02-18 KR KR1020237026246A patent/KR20230124088A/ko unknown
- 2022-02-18 JP JP2023541668A patent/JP2024507651A/ja active Pending
- 2022-02-18 IL IL304000A patent/IL304000A/en unknown
- 2022-02-18 CA CA3204622A patent/CA3204622A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
IL304000A (en) | 2023-08-01 |
US20220276866A1 (en) | 2022-09-01 |
CA3204622A1 (en) | 2022-09-01 |
US11442726B1 (en) | 2022-09-13 |
EP4298509A1 (en) | 2024-01-03 |
KR20230124088A (ko) | 2023-08-24 |
CN116940926A (zh) | 2023-10-24 |
WO2022179944A1 (en) | 2022-09-01 |
AU2022227809B2 (en) | 2024-08-08 |
AU2022227809A1 (en) | 2023-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360769B1 (en) | Decimal scale and convert and split to hexadecimal floating point instruction | |
JP2024512179A (ja) | 数値の変換およびスケーリング方法 | |
AU2022227809B2 (en) | Vector pack and unpack instructions | |
AU2022231845B2 (en) | Hexadecimal floating point multiply and add instruction | |
JP7101930B2 (ja) | 10進乗算およびシフト命令 | |
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: 20230903 |
|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20230817 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240718 |