JP2006518060A - 単一命令多重データ管理のための方法および計算機プログラム - Google Patents

単一命令多重データ管理のための方法および計算機プログラム Download PDF

Info

Publication number
JP2006518060A
JP2006518060A JP2005518388A JP2005518388A JP2006518060A JP 2006518060 A JP2006518060 A JP 2006518060A JP 2005518388 A JP2005518388 A JP 2005518388A JP 2005518388 A JP2005518388 A JP 2005518388A JP 2006518060 A JP2006518060 A JP 2006518060A
Authority
JP
Japan
Prior art keywords
data items
data
arithmetic flags
processor
carry
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
Application number
JP2005518388A
Other languages
English (en)
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2006518060A publication Critical patent/JP2006518060A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Landscapes

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

Abstract

単一命令多重データ(SIMD)処理能力を有するプロセッサにおいて多重データ項目の処理中に算術フラグを抽出し結合させる方法および計算機プログラムが提供される。SIMDプロセッサでは、数個のデータ片が所定の時間において同じ命令によって操作される。しかしながら、この命令の実行による結果は操作されているデータに従って変化する。この方法および計算機プログラムによって、これらの算術フラグを抽出し結合する単純なメカニズムがプロセッサ効率を最大限にするとともに、スペースの削減、電力要求およびプロセッサによって生じた熱を低減することを可能にする。

Description

本発明は、単一命令多重データ(SIMD:single instruction multiple data)管理のための方法および計算機プログラムに関する。さらに詳しくは、本発明は、個々のデータ項目に関連する算術フラグを管理し、その結果、SIMD能力を備えるプロセッサがこれらの算術フラグを論理的に結合することができるとともに、多重データ項目の同時処理が単純で効率的な方法で同時に行われることができる。
コンピュータの急速な発達で、プロセッサ速度、処理能力、通信および耐障害性の分野で多くの進歩が見られた。初期のコンピュータ・システムは、プロセッサ、メモリおよび周辺機器がすべて単一のバスを経由して通信するスタンド・アロンの装置であった。その後、パフォーマンスを改善するために、いくつかのプロセッサは、1つまたはそれ以上のバスを使用してメモリと周辺装置を相互に結合した。さらに、個別のコンピュータ・システムは、共有メモリ、シリアルおよびパラレル・ポート、ローカル・エリア・ネットワーク(LAN)および広域ネットワーク(WAN)のような異なる通信メカニズムを経由して共にリンクされた。さらに、プロセッサの命令処理を改善するために、パイプライン方式が開発され、プロセッサがステージの命令を実行することを可能にするとともに、単一のプロセッサが、異なる実行ステージで異なる命令を同時に実行することができた。
プロセッサの性能を強化するために考案されたさらなる発達は、単一命令多重データ(SIMD)として知られる技術の利用である。SIMDは、数個の異なるデータ片がプロセッサによって同時にアクセスされ算術上操作される技術である。数個のデータ片を同時に操作するこの能力は、プロセッサの性能を飛躍的に強化する。しかしながら、たとえ同じ算術演算が行なわれることがあっても、各データ片に対する結果およびステータスは異なることがある。例えば、データは、負、0、桁上げあるいはオーバーフロー・コンディションを有することがある。SIMDプロセッサが8個以上のデータ片を同時に操作することができるので、プロセッサは少なくとも8セットのこれらのコンディション・フラグを維持するために要求される。さらに、SIMD処理の利益を受け取るために、これらのコンディションまたは算術フラグを論理的に結合することが必要であり、その結果、適切な動作が適切な条件の下で生じる。多くの起こりうる出現の様々な結合の下で、8個以上のデータ片を操作することが必要となるので、プロセッサやマイクロプロセッサの設計に組み込まれなければならないロジックは非常に扱いにくいものとなる。マイクロプロセッサ上の貴重なスペースはこの処理に専念しなければならないが、速度、サイズ、必要とされる電力、およびプロセッサから発生した熱は、極めて深刻に影響を受けることがある。
したがって、必要なことは、適切な動作が適切な条件の下で行なわれるように、単純な方法で算術またはコンディション・フラグを結合する方法および計算機プログラムを提供することである。さらに、この方法および計算機プログラムによって、単純な方法ですべての算術機能およびコンディション・フラグの検査が直ちに可能となる。さらに、必要なときに、この方法および計算機プログラムは、個々のデータ項目のための個々の算術フラグを簡単に抽出することができるであろう。
前記および本発明のよりよい理解は、本発明の開示部分を形成する以下の実施例の詳細な説明および請求項を、それらと関連する添付図面と共に参照することにより明白になるであろう。前述および後述、または図示された開示情報は発明の実施例を開示することを目的とするが、これらは単に図示や例示のためのものであり、本発明はそれらによって制限されないことを理解すべきである。本発明の精神および範囲は、特許請求の範囲に記載された事項によってのみ制限される。
本発明の詳細な説明を始める前に、以下の記述について若干の説明をする。適切な場合には、同じ参照番号や文字が、異なる図面において、同一あるいは対応または類似する要素を示すために使用される。さらに、以下の詳細な記述では、具体的なサイズ/モデル/数値/レンジが与えられることがあるが、本発明はその同じものに限定されるものではない。最後の注記として、コンピュータ・ネットワークの周知のコンポーネントは、具体例と議論を簡単にするために図中には示されないが、発明を不明瞭にするものではない。
図1A〜図1Dは、データ項目に関係する算術フラグを示すために利用されるSIMDワードの代表的な例であり、本発明の実施例にSIMD能力を具備するプロセッサによって操作される。図1Aは、8セットのSIMDフラグを収容するSIMDワードを表わし、120,125,130,135,140,145,150,155とラベル付けされる。各SIMDセット(120,125,130,135,140,145,150,155)は、それぞれ、N,Z,C,Vと指定される4つの変数を有する。Nは、負の値を有するデータ項目を表わす。Zは、0値を具備するデータ項目を表わす。Cは、データ項目中の桁上げ条件を表わし、それは符号ビットを有するバイトまたはワードに対するオーバーフローの場合に生じる。Vは、関連するデータ項目に対して生じたオーバーフロー条件を表わす。N,Z,CおよびVは算術フラグの例だけであることに注意すべきである。当業者によって理解されるように、さらに多くのフラグまたは条件が演算機能によって生成された結果のために作成される。したがって、図1A〜図1D中に示されたフラグは、実例としてのみ提供され、本発明がフラグまたは条件のみの使用に制限されることを意図するものではない。
図1Aを参照して、8セットの算術フラグ(120,125,130,135,140,145,150,155)は、フラグの各セットが個々のデータ項目に関係して示される。したがって、N,Z,CおよびVからなるフラグの第1セットは、第1のデータ項目120に関連する一方、第2の125、第3の130および第8の155は、図2にさらに図示される第1、第2、第3、第4から第8までのデータ項目に関連し、次に議論される。この特定のSIMDワードが32ビットを含むことに注目されるべきである。しかしながら、本発明は、32ビットのSIMDワードの使用に制限されるものではない。64ビットのSIMDワードを使用することが可能であり、そこでは本発明の実施例が64ビットのSIMDワードの動作に利用されてもよい。
図1Bを参照して、図示されたSIMDワードは図1Aの中で示されるものに類似していることに注目すべきであるが、しかし、算術フラグ(120,125,130,135)の4セットだけが設定される。図1Aのように、各バイトが値0で占められた最小位ビットを具備するという例外を除いて、同じN,Z,CおよびVの指定が使用される。
図1Cを参照すると、この図は、算術フラグ(120,125)の2セットだけが表わされるという例外を除いて、図1Aおよび図1Bに類似する。したがって、各ハーフ・ワード中で使用されない各最小位ビットは、値0で満たされる。
図1Dを参照すると、この図は、算術フラグ(120)の1セットだけが表わされるという例外を除いて、図1A、図1Bおよび図1Cに類似する。したがって、各ワード中で使用されない最小位ビットは値0で満たされる。
図2は、本発明の実施例のシステム図である。図1B中で図示されるように、算術フラグ120,125,130,135は図2の中で示される。しかしながら、さらに、算術フラグ120,125,130,135は各々データ項目100,105,110,115にそれぞれ関係する。すでに議論されたように、プロセッサ165のようなSIMD可能なプロセッサが有効に複数のデータ片(100から115)を順番に操作するために、算術フラグ100,125,130,135中で示される数学的な動作の結果を論理的に結合することが必要である。これは、図3〜図6に関して図示され議論された方法および動作を利用する結合関数モジュール160によって達成される。結合関数モジュール160によって行なわれる結合関数の結果は、結合した算術フラグ変数170である。その後、状態検査モジュール175は、結合した算術フラグ変数170に基づいて実行する次の動作を決定するために利用される。これらの動作はさらに詳細に後述されるであろう。
さらに図2を参照して、すでに議論されたように、パイプライン方式はコンピュータ・アーキテクチャの共通の形式である。プロセッサ165では、パイプライン方式における少なくとも3つのステージが示される。パイプライン方式の第1ステージは、フェッチ180動作で、その動作では命令が実行のためにメモリ(図示せず)から取り出される。パイプライン方式の第2ステージはその命令がプロセッサによって解読されるデコード動作185である。最後に、この例におけるプロセッサのパイプラインの最終ステージは、命令が状態検査モジュール175からの入力に基づいて実行される実行190ステージである。当業者に理解されるように、図2の中で示される本例のプロセッサのパイプラインは単なる実例である。さらに多くのステージのパイプライン方式が可能である。
本発明によって使用されるロジックの詳細な議論へ進む前に、図3〜図6に示されるフローチャートは、例えば、フロッピー・ディスク、CD−ROM(コンパクト・ディスク・リード・オンリ・メモリ)、EP−ROM(消去可能PROM)、RAM(ランダム・アクセス・メモリ)、ハードディスクなどの記憶媒体上に組み込まれた計算機プログラムの例えば、コード、コードのセクション、命令、コマンド、オブジェクト、ハードウェアまたはその他同種のものに応答する内蔵ソフトウェア、ファームウェア、ハードウェア、プロセスまたは動作を含むことを言及しなければならない。さらに、計算機プログラムは、任意の言語で書くことができ、例えばC++に制限されるものではない。さらに、図3〜図6に示されるロジックは、図2で示されるモジュールおよびプロセッサ165によって実行される。
図3は、本発明の一般的な実施例におけるフローチャートの一例である。図3中に図示されたフローチャートの中で利用されるロジックは、図1Aから図1Bに図示された算術フラグを組み合わせ、グループ化し、あるいは抽出するために用いられる。状態検査モジュール175によって実行される機能は下記機能を含むが、しかしこれらに制限されるものではない。
1. いずれかのフィールドがオーバーフローしている場合、
2. いずれのフィールドもオーバーフローしていない場合、
3. いずれかのフィールドが正の(あるいは0)場合、
4. いずれかのフィールドが負の場合、
5. いずれかのフィールドが0である場合、
6. いずれのフィールドも0でない場合、
7. いずれかのフィールドが桁上げを有している場合、
8. いずれかのフィールドが桁上げを有していない場合、
9. すべてのフィールドがオーバーフローしている場合、
10. すべてのフィールドがオーバーフローしていない場合、
11. いずれかのフィールドが正の(あるいは0)場合、
12. すべてのフィールドが負の場合、
13. すべてのフィールドが0である場合、
14. すべてのフィールドが0でない場合、
15. すべてのフィールドが桁上げを有している場合、
16. すべてのフィールドが桁上げを有していない場合。
当業者によって理解されるように、前述の機能は、未満、越える、以下および以上を含むあらゆる数学的機能を含むように拡大されてもよい。追加の数学的な動作および機能が本発明と共に使用される。
さらに図3を参照して、動作200で処理を開始し、直ちに動作210へ進む。動作210で、フィールド・サイズは抽出または結合機能のどれに基づかせるべきかについて決定される。フィールド・サイズは、ニブル、バイト、ハーフ・ワード、ワードまたはダブル・ワードのサイズであるが、しかしそれに制限されるものではない。抽出および/または結合機能は、議論した前述の16項目の何かあるいはあらゆる他の機能を含んでもよく、それはコンピュータまたはプロセッサによって実行される数学的な動作のステータスまたは結果を記述しまたは組み合わせてもよい。その後、動作220へ処理が進み、抽出過程が実行されるかどうかが判断される。抽出過程が実行されると、その後処理は動作230へ進む。動作230では、図1A〜図1Dで図示されたフラグは、動作210で決定されたフィールド・サイズおよび特定のデータ項目に基づいて抽出される。その後、処理は動作270へ進み、そこで抽出された情報が宛先レジスタに格納される。一度、格納されると、処理は動作280へ移り、ここで処理は終了する。図6で示される実施例において、抽出過程がさらに後ほど詳細に議論される。
動作220において、抽出過程が所望されないと判断される場合はそのとき、処理は動作240へ進む。動作240では、図1A〜図1Dで図示された算術フラグのための状態検査モジュール175によって実行される結合プロセスが所望されるかどうかが決定される。結合プロセスが所望されない場合、その時、処理は動作280へ進み、そこで再び処理は終了する。しかしながら、状態検査モジュール175によって実行される結合プロセスが、図1A〜図1Dに示されるいくつかのデータ項目に関連したフラグに対して所望される場合、処理は動作250に移る。動作250では、SIMD PSRレジスタ中の各データ項目のフラグは、動作210で決定されたフィールド・サイズに基づいて抽出される。その後、処理は動作260に移り、各データ項目の抽出されたフラグが所望された機能に基づいて、結合される。AND動作およびOR動作のための結合機能のための具体例は、それぞれ図4および図5の議論でさらに詳述される。その後、処理は動作270に移り、結合フラグの結果がプロセッサによるアクセスのために宛先レジスタに格納される。その後、処理は動作280で終了する。
図4は、本発明の実施例で使用されるAND関数のフローチャートの1つで、状態検査モジュール175によって実行される。このAND動作のための処理は動作300で始まり、直ちに、動作310へ進む。動作310では、データ・フィールド・サイズが長さにして4ビット(1ニブル)かどうかは決定される。データ・フィールド・サイズがそのとき4ビットの長さである場合、処理は動作320に移る。動作320では、宛先レジスタのビット31〜28は、SIMD PSRレジスタのビット27〜24とアンドされ、ビット23〜20とアンドされ、ビット19〜16とアンドされ、ビット15〜12とアンドされ、ビット11〜8とアンドされ、ビット7〜4とアンドされ、ビット3〜0とアンドされたビット31〜28と等しく設定される。その後、処理は動作320に移り、宛先レジスタの残るビット27〜0が0に設定される。その後、処理は動作395に移り、処理は終了する。
さらに図4を参照して、動作310では、4ビットのデータ・フィールドが指定されないと判断される場合、そのとき処理は動作340に移る。動作340では、8ビット(バイト)のデータ・フィールドが指定されるかどうかが決定される。8つのビット・データ・フィールドが、図1Bの中で示されるSIMDデータ・ワードで指定される場合、処理は動作350に移る。動作350では、宛先レジスタのビット31〜24は、SIMD PSRレジスタのビット23〜16とアンドされ、ビット15〜8とアンドされ、ビット7〜0とアンドされたビット31〜24に等しく設定される。その後、処理は動作360に移り、宛先レジスタのビット23〜0が0に設定される。その後、処理は動作395に移り、処理は終了する。
さらに図4を参照して、動作340では、8ビット・データ・フィールドが指定されないと判断される場合、そのとき処理は動作370に移る。動作370では、16ビット(ハーフ・ワード)のデータ・フィールドが指定されるかどうかが決定される。図1Cの中で示されるように、16ビットのデータ・フィールドが指定される場合、処理は動作380に移る。動作380では、宛先レジスタのビット31〜16は、SIMD PSRレジスタのビット15〜0とアンドされたビット31〜16に等しく設定される。その後、処理は動作390に移り、宛先レジスタのビット15〜0が0に設定される。その後、処理は動作395に移り、処理は終了する。
図5は、本発明の実施例で使用されるOR機能のフローチャートの1つで、状態検査モジュール175によって実行されてもよい。このOR動作のための処理は動作400で開始し、直ちに、動作410へ進む。動作410では、データ・フィールド・サイズが4ビット(1ニブル)の長さかどうかが決定される。データ・フィールド・サイズが4ビットの長さである場合、そのとき処理は動作420に移る。動作420では、宛先レジスタのビット31〜28は、SIMD PSRレジスタのビット27〜24とオアされ、ビット23〜20とオアされ、ビット19〜16とオアされ、ビット15〜12とオアされ、ビット11〜8とオアされ、ビット7〜4とオアされ、ビット3〜0とオアされたビット31〜28に等しく設定される。その後、処理は動作420に移り、宛先レジスタの残るビット27〜0が0に設定される。その後、処理は動作495に移り、処理は終了する。
さらに図5を参照して、動作410では、4ビットのデータ・フィールドが指定されないと判断される場合、そのとき処理は動作440に移る。動作440では、8ビット(バイト)のデータ・フィールドが指定されるかどうかが決定される。8つのビット・データ・フィールドが、図1Bの中で示されるSIMDデータ・ワードで指定される場合、処理は動作450に移る。動作450では、宛先レジスタのビット31〜24は、SIMD PSRレジスタのビット23〜16とオアされ、ビット15〜8とオアされ、ビット7〜0とオアされたビット31〜24に等しく設定される。その後、処理は動作460に移り、宛先レジスタのビット23〜0が0に設定される。その後、処理は動作495に移り、処理は終了する。
さらに図5を参照して、動作440では、8ビット・データ・フィールドが指定されないと判断される場合、そのとき処理は動作470に移る。動作470では、16ビット(ハーフ・ワード)のデータ・フィールドが指定されるかどうかが決定される。図1Cの中で示されるように、16ビットのデータ・フィールドが指定される場合、処理は動作480に移る。動作480では、宛先レジスタのビット31〜16は、SIMD PSRレジスタのビット15〜0とオアされたビット31〜16と等しく設定される。その後、処理は動作490に移り、宛先レジスタのビット15〜0が0に設定される。その後、処理は動作495に移り、処理は終了する。
図6は、本発明の実施例で使用される抽出機能のフローチャートで、状態検査モジュール175によって実行されてもよい。抽出機能は、動作500中の実行を始めて、動作510に直ちに移る。動作510では、図1Aに示されたSIMDワードのためのデータ・フィールドが4ビット(1ニブル)の長さであるかどうかが決定される。データ・フィールドが動作510で、4ビットの長さである場合、処理は動作520に進む。動作520では、宛先レジスタのビット31〜28はSIMD PSRレジスタのニブル2〜0に等しく設定される。その後、処理は動作570に移り、そこで処理が終了する。
しかしながら、動作510では、データ・フィールドが4ビットの長さに等しくないと判断される場合、そのとき処理は動作530に移る。動作530では、データ・フィールドが8ビット(1バイト)の長さであるかどうかが決定される。図1Bで示されるように、SIMDワードのデータ・フィールドが8ビットの長さにである場合、その処理は動作540に移る。動作540では、宛先レジスタのビット31〜24は、SIMD PSRレジスタのバイト1〜0に等しく設定される。その後、再び、処理は動作570に移り、そこで処理が終了する。
さらに図6を参照すると、動作530では、SIMDワードのデータ・フィールドが1バイトの長さでないことが決定される場合、その処理は動作550に移る。動作550では、SIMDワードのデータ・フィールド長が16ビット(ハーフ・ワード)の長さであるかどうかが決定される。SIMDワードのデータ・フィールドが16ビットの長さである場合、処理は動作560に移る。動作560では、宛先レジスタのビット31〜16は、SIMD PSRレジスタのハーフ・ワード0と等しく設定される。その後、処理は動作570に移り、そこで処理が終了する。さらに、動作550で、SIMDワードのデータ・フィールド長が16ビットでない決定される場合、そのとき処理は動作570に移り、そこで処理が終了する。
本発明による利点は、単純で、信頼でき、高速の方法および計算機プログラムが提供され、それは数学的な動作を主題とするSIMD可能なプロセッサが多重データ項目に関連した算術フラグを抽出しおよび/または結合することを可能にすることである。この方法および計算機プログラムは、本質的に、複雑なロジックがスペース、所要電力、およびプロセッサによって生成された熱を削減することを要求するものではない。さらに、この方法および計算機プログラムは、必要とされるロジックの単純性によりSIMD可能なプロセッサが最大効率で動作することを可能にする。
ここにわずかの例を示し記述する一方、当業者に知られているような多数の変更および修正が本発明の実施例になされることが理解される。したがって、ここに示され記述された詳細に制限されるものではなく、添付された請求項の範囲によって包含される変更および修正をすべてカバーするものである。
本発明の実施例の中で使用され、プロセッサ・ステータス・レジスタ(PSR)に格納された8つのデータ項目のためのSIMDワードの算術フラグの実施例である。 本発明の実施例の中で使用されるPSRに格納された4つのデータ項目のためのSIMDワード中における算術フラグの実施例である。 本発明の実施例の中で使用されるPSRに格納された2つのデータ項目のためのSIMDワード中における算術フラグの実施例である。 本発明の実施例の中で使用されるPSRに格納された1つのデータ項目のためのSIMDワード中における算術フラグの実施例である。 本発明の実施例のシステム図である。 本発明の一般的な実施例のフローチャートである。 本発明の実施例の中で使用されるAND機能のフローチャートである。 本発明の実施例の中で使用されるOR機能のフローチャートである。 本発明の実施例の中で使用される抽出機能のフローチャートである。

Claims (19)

  1. 複数の算術フラグを結合するための装置において、
    複数の算術フラグを検査し、前記複数の算術フラグのフィールド・サイズを決定し、前記フィールド・サイズの決定に基づいて前記複数の算術フラグを単一の結合算術フラグ変数に結合する結合関数モジュールから成り、前記複数の算術フラグは、数学的動作が複数のデータ項目に関してプロセッサによって実行された後に、前記複数のデータ項目のステータスを表示することを特徴とする装置。
  2. 前記結合算術フラグ変数の前記ステータスを決定し、前記プロセッサに前記ステータスに基づいた適切な動作を実行させる状態検査モジュール、
    をさらに含むことを特徴とする請求項1記載の装置。
  3. 前記フィールド・サイズが1ニブル、バイト、ハーフ・ワードまたはワードの長さに基づくことを特徴とする請求項1記載の装置。
  4. 前記複数の算術フラグは、
    負のデータ値、0のデータ値、データ値中の桁上げの発生、または前記複数のデータ項目中におけるデータ項目中のオーバーフロー条件、
    をさらに含むことを特徴とする請求項3記載の装置。
  5. 前記結合関数モジュールは、ANDまたはOR動作のいずれかを行なうことを特徴とする請求項4記載の装置。
  6. 前記条件によって決定された前記ステータスはさらに、
    いずれかのデータ項目がオーバーフローしたこと、
    いずれのデータ項目もオーバーフローしていないこと、
    いずれかのデータ項目が正または0であること、
    いずれかのデータ項目が負であること、
    いずれかのデータ項目が0であること、
    いずれのデータ項目も0ではないこと、
    いずれかのデータ項目は桁上げを有していること、
    いずれのデータ項目も桁上げを有していないこと、
    すべてのデータ項目がオーバーフローしたこと、
    すべてのデータ項目がオーバーフローしていないこと、
    すべてのデータ項目が正または0であること、
    すべてのデータ項目が負であること、
    すべてのデータ項目が0であること、
    すべてのデータ項目が0ではないこと、
    すべてのデータ項目が桁上げを有していること、および、
    すべてのデータ項目が桁上げを有していないこと、
    を含むことを特徴とする請求項2記載の装置。
  7. プロセッサへの提示のために複数の算術フラグを結合する方法において、
    結合プロセスを基礎にすべき複数の算術フラグのフィールド・サイズを決定する段階であって、ここで数学的な動作が複数のデータ項目に関してプロセッサによって実行された後に、前記複数の算術フラグが前記複数のデータ項目のステータスを表わす、段階と、
    前記フィールド・サイズに基づく前記複数の算術フラグを抽出する段階と、
    結合プロセスが選択される場合選択される機能に基づいて前記複数の算術フラグを結合する段階と、
    前記プロセッサによるアクセスのための宛先レジスタ中に前記複数の算術フラグの結合の結果を格納する段階と、
    から構成されることを特徴とする方法。
  8. 前記フィールド・サイズが1ニブル、バイト、ハーフ・ワードまたはワードの長さに基づくことを特徴とする請求項7記載の方法。
  9. 前記複数の算術フラグは、
    負のデータ値、0のデータ値、データ値中の桁上げの発生、または前記複数のデータ項目中におけるデータ項目中のオーバーフロー条件、
    をさらに含むことを特徴とする請求項8記載の方法。
  10. 前記機能は、ANDまたはOR動作のいずれかを行なうことを特徴とする請求項9記載の方法。
  11. 前記機能は前記複数のデータ項目の前記ステータスを決定するために使用され、前記ステータスは、
    いずれかのデータ項目がオーバーフローしたこと、
    いずれのデータ項目もオーバーフローしていないこと、
    いずれかのデータ項目が正または0であること、
    いずれかのデータ項目が負であること、
    いずれかのデータ項目が0であること、
    いずれのデータ項目も0ではないこと、
    いずれかのデータ項目は桁上げを有していること、
    いずれのデータ項目も桁上げを有していないこと、
    すべてのデータ項目がオーバーフローしたこと、
    すべてのデータ項目がオーバーフローしていないこと、
    すべてのデータ項目が正または0であること、
    すべてのデータ項目が負であること、
    すべてのデータ項目が0であること、
    すべてのデータ項目が0ではないこと、
    すべてのデータ項目が桁上げを有していること、および、
    すべてのデータ項目が桁上げを有していないこと、
    を含むことを特徴とする請求項10記載の方法。
  12. 結合プロセスを基礎にすべき複数の算術フラグのフィールド・サイズを決定し、ここで数学的な動作が複数のデータ項目に関してプロセッサによって実行された後に、前記複数の算術フラグが前記複数のデータ項目のステータスを表わし、
    前記フィールド・サイズに基づく前記複数の算術フラグを抽出し、
    結合プロセスが選択される場合選択される機能に基づいて前記複数の算術フラグを結合し、
    前記プロセッサによるアクセスのための宛先レジスタ中に前記複数の算術フラグの結合の結果を格納する、
    ことになるプロセッサによって実行される際に命令を格納するデータ格納媒体からなることを特徴とする装置。
  13. 前記フィールド・サイズが1ニブル、バイト、ハーフ・ワードまたはワードの長さに基づくことを特徴とする請求項12記載の装置。
  14. 前記複数の算術フラグは、
    負のデータ値、0のデータ値、データ値中の桁上げの発生、または前記複数のデータ項目中におけるデータ項目中のオーバーフロー条件、
    をさらに含むことを特徴とする請求項13記載の装置。
  15. 前記機能は、ANDまたはOR動作のいずれかを行なうことを特徴とする請求項14記載の装置。
  16. 前記機能は前記複数のデータ項目の前記ステータスを決定するために使用され、前記ステータスは、
    いずれかのデータ項目がオーバーフローしたこと、
    いずれのデータ項目もオーバーフローしていないこと、
    いずれかのデータ項目が正または0であること、
    いずれかのデータ項目が負であること、
    いずれかのデータ項目が0であること、
    いずれのデータ項目も0ではないこと、
    いずれかのデータ項目は桁上げを有していること、
    いずれのデータ項目も桁上げを有していないこと、
    すべてのデータ項目がオーバーフローしたこと、
    すべてのデータ項目がオーバーフローしていないこと、
    すべてのデータ項目が正または0であること、
    すべてのデータ項目が負であること、
    すべてのデータ項目が0であること、
    すべてのデータ項目が0ではないこと、
    すべてのデータ項目が桁上げを有していること、および、
    すべてのデータ項目が桁上げを有していないこと、
    を含むことを特徴とする請求項15記載の装置。
  17. プロセッサへの提示のために複数の算術フラグを結合する方法において、
    結合プロセスを基礎にすべき複数の算術フラグのフィールド・サイズを決定する段階であって、ここで数学的な動作が複数のデータ項目に関してプロセッサによって実行された後に、前記複数の算術フラグが複数のデータ項目のステータスを表わす、段階と、
    前記フィールド・サイズに基づく前記複数の算術フラグを抽出する段階と、
    前記プロセッサによるアクセスのための宛先レジスタ中に前記複数の前記算術フラグの抽出の結果を格納する段階と、
    から構成されることを特徴とする方法。
  18. 前記フィールド・サイズが1ニブル、バイト、ハーフ・ワードまたはワードの長さに基づくことを特徴とする請求項17記載の方法。
  19. 前記複数の算術フラグは、
    負のデータ値、0のデータ値、データ値中の桁上げの発生、または前記複数のデータ項目中におけるデータ項目中のオーバーフロー条件、
    をさらに含むことを特徴とする請求項18記載の方法。
JP2005518388A 2000-12-27 2001-11-21 単一命令多重データ管理のための方法および計算機プログラム Pending JP2006518060A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/748,165 US20020083311A1 (en) 2000-12-27 2000-12-27 Method and computer program for single instruction multiple data management
PCT/US2002/020774 WO2005106646A1 (en) 2000-12-27 2001-11-21 Method and computer program for single instruction multiple data management

Publications (1)

Publication Number Publication Date
JP2006518060A true JP2006518060A (ja) 2006-08-03

Family

ID=25008290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005518388A Pending JP2006518060A (ja) 2000-12-27 2001-11-21 単一命令多重データ管理のための方法および計算機プログラム

Country Status (7)

Country Link
US (1) US20020083311A1 (ja)
JP (1) JP2006518060A (ja)
KR (1) KR100735944B1 (ja)
CN (1) CN1816798B (ja)
AU (1) AU2001298114A1 (ja)
TW (1) TWI230355B (ja)
WO (1) WO2005106646A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008524723A (ja) * 2004-12-17 2008-07-10 インテル・コーポレーション 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット
JP2013502648A (ja) * 2009-08-19 2013-01-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化simdコードのための動作指示命令の挿入

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3793062B2 (ja) * 2001-09-27 2006-07-05 株式会社東芝 メモリ内蔵データ処理装置
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
AU2003256870A1 (en) 2002-08-09 2004-02-25 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US8082419B2 (en) * 2004-03-30 2011-12-20 Intel Corporation Residual addition for video software techniques
WO2006085277A2 (en) 2005-02-14 2006-08-17 Koninklijke Philips Electronics N.V. An electronic parallel processing circuit
CN100552622C (zh) * 2005-03-31 2009-10-21 松下电器产业株式会社 运算处理装置
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
KR100834412B1 (ko) 2007-05-23 2008-06-04 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서
KR102102166B1 (ko) 2013-04-22 2020-04-21 삼성전자 주식회사 심드 구조 기반의 쓰레드 분기 관리 장치 및 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589087A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Condition register architecture for a primitive instruction set machine
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US6026484A (en) * 1993-11-30 2000-02-15 Texas Instruments Incorporated Data processing apparatus, system and method for if, then, else operation using write priority
DE69519449T2 (de) * 1994-05-05 2001-06-21 Conexant Systems Inc Raumzeigersdatenpfad
US5903760A (en) * 1996-06-27 1999-05-11 Intel Corporation Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6038652A (en) * 1998-09-30 2000-03-14 Intel Corporation Exception reporting on function generation in an SIMD processor
GB2355084B (en) * 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
US6714197B1 (en) * 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008524723A (ja) * 2004-12-17 2008-07-10 インテル・コーポレーション 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット
JP4901754B2 (ja) * 2004-12-17 2012-03-21 インテル・コーポレーション 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット
JP2013502648A (ja) * 2009-08-19 2013-01-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化simdコードのための動作指示命令の挿入

Also Published As

Publication number Publication date
CN1816798B (zh) 2010-05-12
CN1816798A (zh) 2006-08-09
KR100735944B1 (ko) 2007-07-06
KR20060103965A (ko) 2006-10-09
WO2005106646A1 (en) 2005-11-10
TWI230355B (en) 2005-04-01
AU2001298114A1 (en) 2005-11-16
US20020083311A1 (en) 2002-06-27

Similar Documents

Publication Publication Date Title
TWI756251B (zh) 執行複數的熔合乘-加指令的系統與方法
TWI743058B (zh) 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體
US5907842A (en) Method of sorting numbers to obtain maxima/minima values with ordering
US5704052A (en) Bit processing unit for performing complex logical operations within a single clock cycle
CN110879724A (zh) 用于深度学习和其它算法的fp16-s7e8混合精度
TWI646436B (zh) 執行向量位元混洗的方法與裝置
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
JP5607832B2 (ja) 汎用論理演算の方法および装置
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
JP2006518060A (ja) 単一命令多重データ管理のための方法および計算機プログラム
JP2620511B2 (ja) データ・プロセッサ
JPS58161042A (ja) デ−タ処理システム
JPH05150979A (ja) 即値オペランド拡張方式
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
CN109328333B (zh) 用于累积式乘积的系统、装置和方法
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
CN109328334B (zh) 用于累积式求和的系统、装置和方法
JP2748957B2 (ja) データ処理装置
EP0257650B1 (en) Microprocessor
TWI841041B (zh) 用於融合乘加運算的系統、裝置及方法
US5774740A (en) Central processing unit for execution of orthogonal and non-orthogonal instructions
JP3525582B2 (ja) ビット操作回路
KR940002274B1 (ko) 알아이에스씨(risc)용 프로세서의 데이타 마스크회로
CN113050994A (zh) 用于512位操作的系统、装置和方法
JPS59161730A (ja) パイプライン演算器

Legal Events

Date Code Title Description
A59 Written plea

Free format text: JAPANESE INTERMEDIATE CODE: A59

Effective date: 20060405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070918

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071211

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090406