JP2009282992A - 多項式演算オペレーション - Google Patents
多項式演算オペレーション Download PDFInfo
- Publication number
- JP2009282992A JP2009282992A JP2009162679A JP2009162679A JP2009282992A JP 2009282992 A JP2009282992 A JP 2009282992A JP 2009162679 A JP2009162679 A JP 2009162679A JP 2009162679 A JP2009162679 A JP 2009162679A JP 2009282992 A JP2009282992 A JP 2009282992A
- Authority
- JP
- Japan
- Prior art keywords
- polynomial
- instructions
- register
- instruction
- result
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
【課題】多項式演算インストラクションの実行性能を増大させる。
【解決手段】多項式演算インストラクション3010が、インストラクション設定アーキテクチャ(ISA)中に提供される。乗算−加算多項式(MADDP)インストラクション、及び乗算−多項式(MULTP)インストラクション3013が提供される。
【選択図】図3A
【解決手段】多項式演算インストラクション3010が、インストラクション設定アーキテクチャ(ISA)中に提供される。乗算−加算多項式(MADDP)インストラクション、及び乗算−多項式(MULTP)インストラクション3013が提供される。
【選択図】図3A
Description
本発明は、多項式演算を実行するためのマイクロプロセッサ・インストラクション(命令)に関し、特に、多項式乗算を実行するためのマイクロプロセッサ・インストラクションに関する。
産業傾向がより大きくより複雑なインストラクションのセットに傾いていくにつれ、縮小インストラクション・セット・コンピュータ(RISC)アーキテクチャが開発された。インストラクションセット設計の単純化によって、RISCアーキテクチャは、パイプライン化(pipelining)及びキャッシング(caching)等の技術の使用を容易にして、その結果、システム性能を増大させている。
RISCアーキテクチャは、通常、インストラクション形式に少しのバリエーションしか持たない固定長インストラクション(例えば16ビット、32ビット又は64ビット)を持つ。インストラクション・セット・アーキテクチャ(ISA)の各インストラクションは、常に同じ記憶位置にソース・レジスタを持つ。例えば、32ビットのISAは、常にビット16〜20及び21〜25に指定されたソース・レジスタを持つ。こうすることで、指定されたレジスタが、いかなる複雑なインストラクションを解読することもなく、すべてのインストラクションに対して取り出されることが可能になる。
暗号化システム(「暗号システム」)は、トランザクションを保護し、通信を暗号化し、ユーザを認証し、かつ情報を守るためにますます使用されている。デジタル・エンクリプション・スタンダード(DES)のような多くの秘密鍵暗号方式は、計算が比較的単純で、かつデータのブロック上で一連のXOR、ローテーション及び入替えを実行するハードウェア・ソリューションを縮小することが可能である。しかしながら、公開鍵暗号システムは、秘密鍵システムより数学的に難解で、計算がより困難である。
異なる公開鍵暗号化スキームは、数学的に異なる基盤を持つだけでなく、1024ビットという非常に大きな範囲の値での整数計算を一般的に必要とする傾向がある。この拡張精度算術は、多くの場合、モジュール方式(すなわち、ある値範囲を法として演算が実行される)であり、そして、ある場合には、2の補数ではなく多項形態である。例えば、RSA公開鍵暗号システムは、情報を暗号化し復号化するために拡張精度モジュールの指数化を使用し、楕円曲線暗号システムは拡張精度モジュールの多項式乗算を使用する。
秘密鍵暗号システムは、通信チャンネルを暗号化するために広範囲に使用されているのに対して、公開鍵暗号システムは、ユーザ認証及び保護キーの交換に対して広範囲に使用されている。しかしながら、公開鍵暗号システムの使用が増加するにつれて、拡張精度モジュールの算術計算の性能を増大させることが望まれるようになった。
1つの一般的な側面において、インストラクション・セット・アーキテクチャは、多項式演算を行うためのインストラクションを含んでいる。該インストラクションは、1又は複数のオペレーション(演算)・コードを含み、該コードにより、該インストラクションを多項式演算オペレーションを実行するためのインストラクションとして、識別する。さらに、インストラクションは、1又は複数のレジスタを特定する。特定されたレジスタを用いて多項式演算オペレーションを実行することによって、該インストラクションは処理される。
実施例においては、2進多項式加算を実行するためのインストラクションも提供し、これは、乗算器(マルチプライヤ)を用いて実現される。多項式演算オペレーションの結果は、1又は複数の結果レジスタに格納される。多項式演算オペレーションは、乗算を含み、識別されたレジスタの内容が共に乗算される。オペレーションはまた、多項式乗算加算を含み、これにより、特定されたレジスタの内容がともに乗算され、そして1又は複数の結果レジスタの内容に加算される。結果レジスタは、上位レジスタ及び下位レジスタを含んでいる。多項式演算オペレーションは、レジスタに記憶された多項式上で実行される。これら多項式は、係数の2進表現として符号化されている。
1又は複数の実施例の詳細を、添附図面及び以下において説明する。他の機能及び利点は、その説明及び図面、並びに特許請求の範囲から明白になるであろう。
多くの公開鍵暗号システムは、データを暗号化し復号化するために、拡張精度モジュール算術を使用する。例えば、多くの楕円曲線(EC)暗号システムは、データを暗号化し復号化するために、広範囲に多項式の乗算及び加算を使用する。楕円曲線暗号システムの性能は、プログラム可能なCPUマルチプライヤを、多項式演算専用に新しく定義されたインストラクションに応答するように修正することによって向上する。
GF(2163)(IEEE1363−2000基準によって推奨されるような)上で定義された楕円曲線を使用する時、必要とされる主要な演算は、フィールドGF(2163)上での乗算である。2163のエレメントの各々は、0又は1に等しい係数を備えた多くて163項の多項式として表現されることができる。この表現では、2つのエレメントが単純なビットXOR(排他的論理和)を使用して加算され、また、2つの多項式a(X)及びb(X)が、a(X)b(X)mod P(X)を計算することによって乗算されるが、ただし、積a(X)b(X)は326項の多項式であり、P(X)はIEEE1363−2000基準によって特定されるような既約多項式である。
多項式乗算は、(1)通常の加算がXORに置き換えられること、及び(2)通常の32ビット乗算が32ビットの桁上げフリー乗算に置き換えられることを除いては、整数上で、abmod pというモジュール乗算と同じ形式を持つ。従って、多項式モジュール乗算は、シフト及び加算の代わりに、シフト及びXORを使用して実行される。
図1を参照して、多項式乗算を実現するために使用される典型的なマイクロプロセッサのアーキテクチャは、インストラクションがクロック・サイクル毎に発行され、かつ例えば4クロック・サイクルのような固定時間の中で実行される5段パイプラインを含む。各インストラクションの実行は、インストラクションフェッチ(IF)ステージ1001、レジスタ読み取り(RD)ステージ1002、算術/論理ユニット(ALU)ステージ1003、メモリ(MEM)ステージ1004、及びライトバック(書き戻し)(WB)ステージ1005の5ステージに分割される。IFステージ1001では、指定されたインストラクションが、インストラクションキャッシュから取り出される。取り出されたインストラクションの一部が、インストラクションを実行するのに使用されるソースレジスタを指定するために使用される。読み取りレジスタ(RD)ステージ1002では、システムが、指定されたソース・レジスタの内容を取り出す。これらの取り出された値は、ALUステージ1003内の算術演算あるいは論理演算を実行するために使用される。MEMステージ1004では、実行インストラクションが、データキャッシュ内のメモリを読み出し/書き込む。最後に、WBステージ1005では、インストラクションの実行によって得られた値が、レジスタにライトバックされる。
浮動小数点計算及び整数の乗算/除算のようないくつかの演算は、必ずしも単一クロック・サイクルで実行できるとは限らないので、いくつかのインストラクションはただインストラクションの実行を始めるためだけのものである。十分なクロック・サイクルが経過した後、別のインストラクションが結果を取り出すために使用される。例えば、整数乗算インストラクションが5つのクロック・サイクルを取る場合、1つのインストラクションが乗算計算を開始し、乗算が完成した後、別のインストラクションがその乗算の結果をレジスタに取り込む。結果が要求される時までに乗算が完了していない場合、結果が利用可能となるまで、パイプラインは時間を引き延ばす。
図2は、典型的なRISCアーキテクチャを例示している。プロセッサ・コア2000(又は「マイクロプロセッサ・コア」とも呼ばれる)は、実行ユニット2010、乗算/除算ユニット(MDU)2020、システム制御コプロセッサ(CPO)2030、メモリ管理ユニット2040、キャッシュ・コントローラ2050、及びバス・インターフェース・ユニット(BIU)2060を含む。
実行ユニット2010は、プロセッサ・コア2000内のインストラクションを実行するための主要なメカニズムである。実行ユニット2010は、レジスタ・ファイル2011及び算術論理ユニット(ALU)2012を含む。1つの実施例では、レジスタ・ファイル2011が、例えば、スカラ整数演算及びアドレス計算に使用することができる32個の32ビット汎用レジスタを含む。2つの読み取りポート及び1つの書き込みポートを含むレジスタ・ファイル2011は、パイプライン内の演算待ち時間を最小限にするために完全にバイパスされる。ALU2012は、加算、減算及びシフトのような論理と算術の両方の演算をサポートする。
MDU2020は、乗算及び除算の演算(オペレーション)を実行する。一実施例においては、MDU2020は、32ビット×16ビットのブース符号化マルチプライヤ(不図示)、結果累積レジスタ(HIレジスタ2021及びLOレジスタ2022)、除算状態マシーン、並びに、これらの機能を実行するに必要な全てのマルチプレクサ及び制御論理ユニットを含んでいる。パイプライン化された実施例では、32×16乗算演算が、クロックサイクル毎にMDU2020に対して発生され、これにより、32ビットの数がクロックサイクル毎に16ビットの数と乗算される。しかしながら、その演算結果は、乗算が終了するまで、HI/LOレジスタ(2021及び2022)において利用可能ではない。その演算結果は、インストラクションMFHI及びMFLOによってアクセスされる。これらのインストラクションは、HIレジスタ2021及びLOレジスタ2022から、結果を、指定されたレジスタに移動させる。例えば、インストラクション「MFHI$7」は、HIレジスタ2021の内容を、汎用レジスタ$7に移動させる。
2つのインストラクション、すなわち乗算−加算(MADD/MADDU)のインストラクションと乗算−減算(MSUB/MSUBU)のインストラクションとは、乗算及び加算の演算を実行するため、並びに乗算及び減算の演算を実行するために使用される。MADDインストラクションは、2つの数を乗算した後に、その積をHIレジスタ2021及びLOレジスタ2022の現在の内容に加算する。得られた演算結果は、HI/LOレジスタ(2021及び2022)に格納される。同様に、MSUBインストラクションは、2つのオペランドを乗算した後に、その積をHIレジスタ2021及びLOレジスタ2022の現在の内容から減算し、その演算結果は、HI/LOレジスタ(2021及び2022)に格納される。MADD及びMSUBは、符号付きの値上で演算を行い、MADDU及びMSUBUは、符号なしの値上でアナログ演算を実行する。
図3Aは、乗算多項式(MULTP)インストラクション3010のインストラクション符号化を例示している。MULTPインストラクション3010は、2つのレジスタ・フィールド(領域)rs3011及びrt3012を備え、乗算されるべき多項式を格納しているソース・レジスタを特定する。乗算が完了すると、その結果がHIレジスタ2021及びLOレジスタ2022に格納される。MULTPインストラクション3010はまた、実行すべき演算を識別するための1又は複数のオペレーション・コードを備えている。いくつかの実施例においては、インストラクション・フィールドの部分、例えばフィールド3014が使用されない。
一実施例においては、rs3011及びrt3012によって特定されたレジスタは、2進多項式(すなわち、多項式の係数がモジュロ2で減じられる)を含んでいる。各係数は、「1」又は「0」である。多項式は、32ビットのレジスタ内にコード化され、このとき、各ビットは多項式の係数を表す。例えば、多項式「x4+x+1」は、x3及びx2の係数が「0」で、残りの係数が「1」であるので、「10011」としてコード化される。
MULTPインストラクション3010は、2つの多項式の乗算を実行する。例えば、
(x4+x+1)(x+1)=x5+x4+x2+2x+1
である。多項式をモジュロ2で減じると、x5+X4+x2+1を生じる。多項式が上記の2進の表現でコード化される場合、同じ乗算が、(10011)(11)=110101として表わされる。
(x4+x+1)(x+1)=x5+x4+x2+2x+1
である。多項式をモジュロ2で減じると、x5+X4+x2+1を生じる。多項式が上記の2進の表現でコード化される場合、同じ乗算が、(10011)(11)=110101として表わされる。
インストラクション及びオペランドのサイズは、任意に変えることができ、上記した32ビットの例は単なる例示のためだけである。32ビットの実施例において、rs3011に記憶された32ビットのワード値は、rt3012に記憶された32ビットのワード値によって、多項式ベースで乗算され、両方のオペランドが2進多項式の値として取り扱われ、64ビットの演算結果が得られる。下位の32ビット・ワード結果は、LOレジスタ2022に記憶され、上位の32ビット・ワード結果は、HIレジスタ2021に記憶される。幾つかの実施例においては、算術的例外は生じない。rs3011及びrt3012によって特定されたレジスタが32ビットの正負符号拡張された値を含んでいない場合、演算結果は予測できない。
図3Bは、乗算−加算多項式(MADDP)インストラクション3020のインストラクション符号化を例示している。MADDPインストラクション3020は、2つのパラメータ・フィールド(領域)rs3021及びrt3022を備え、これにより、乗算されかつ多項式ベースでHIレジスタ2021及びLOレジスタ2022の内容に加算(XOR)されるべき多項式を格納しているソース・レジスタを特定する。乗算及び加算が完了すると、その結果がHIレジスタ2021及びLOレジスタ2022に格納される。MADDPインストラクション3020はまた、実行すべき演算を識別するための1又は複数のオペレーション・コードを備えている。いくつかの実施例においては、インストラクション・フィールドの部分、例えばフィールド3024が使用されない。
MADDPインストラクション3020は、上記したように乗算を実行する。2進多項式加算は、ビットXORに類似している。例えば、2進の多項式加算(x4+x+1)+(X+1)は、x4+2x+2となる。係数をモジュロ2で減じると、「10000」として表わされるx4となる。
同様に、インストラクション及びオペランドのサイズは、任意に変えることができる。一実施例において、rs3021に記憶された32ビットのワード値は、rt3022に記憶された32ビットのワード値によって、多項式ベースで乗算され、両方のオペランドが2進多項式の値として取り扱われ、64ビットの演算結果が得られる。そして、得られた結果がHIレジスタ2021及びLOレジスタ2022の内容と多項式ベースで加算される。下位の32ビット・ワードは、LOレジスタ2022に記憶され、上位の32ビット・ワード結果は、HIレジスタ2021に記憶される。rs3021及びrt3022によって特定されたレジスタが32ビットの正負符号拡張された値を含んでいない場合、演算結果は予測できない。
ハードウェア(例えば、マイクロプロセッサあるいはマイクロコントローラ内の)を使用するマルチプライヤの実施例に加えて、ソフトウェア(つまりコンピュータ読み取り可能なプログラムコード)を格納するように設定された、例えば、コンピュータが使用可能な(例えば、読み取り可能な)記憶媒体内に配列されたソフトウェアにおいても、マルチプライヤが具現化される。そのプログラム・コードは、ここに開示されたシステム及び技術の機能又は構成を、あるいはその両方を可能にする。例えば、これは、汎用プログラミング言語(例えばC、C++)、Verilog−HDL、VHDL、AHDL(AlteraHDL)などを含むハードウェア記述言語(HDL)、又は他の利用可能なプログラミング及び/又は回路(つまり回路図)キャプチャのツールの使用を通して達成されることができる。プログラム・コードは、半導体、磁気ディスク、光ディスク(例えばCD−ROM、DVD−ROW)、及びコンピュータ使用可能な(例えば、読み取り可能な)伝送記憶媒体(例えば、搬送波、あるいはデジタル、オプティカル又はアナログ・ベースの記憶媒体を含む他の記憶媒体)において具現化されるコンピュータ・データ信号のようなものを含む任意のよく知られたコンピュータ使用可能な記憶媒体内に配列されることができる。従って、コードは、インターネット及びイントラネットを含む通信ネットワーク上で伝送されることができる。
上に説明したシステム及び技術によって、達成される機能、及び/又は提供される構造が、プログラム・コードで実現されるコア(例えばマイクロプロセッサ・コア)内で表されることができ、またICの製品の一部としてハードウェアに変換されることが、理解されるべきである。また、そのシステム及び技術は、ハードウェア及びソフトウェアの組合せとして実現されてもよい。従って、他の実施例も、特許請求の範囲内である。
Claims (56)
- インストラクション・セット・アーキテクチャの一部分であるインストラクションであって、多項式演算を実行するためのインストラクションにおいて、
インストラクションを、多項式演算オペレーションを実行するためのインストラクションであるとして認識するための1又は複数のオペレーション・コードと、
1又は複数のレジスタ識別子と
を含み、1又は複数のレジスタ識別子を用いて多項式演算オペレーションを実行することによって処理されることを特徴とするインストラクション。 - 請求項1記載のインストラクションにおいて、多項式演算オペレーションは、2進多項式加算であることを特徴とするインストラクション。
- 請求項2記載のインストラクションにおいて、2進多項式加算は、マルチプライヤを用いて実行されることを特徴とするインストラクション。
- 請求項1記載のインストラクションにおいて、多項式演算オペレーションの結果は、1又は複数のレジスタに格納されることを特徴とするインストラクション。
- 請求項4記載のインストラクションにおいて、多項式演算オペレーションは、
1又は複数のレジスタ識別子によって識別されるレジスタの内容を乗算して中間値を得、
該中間値に1又は複数のレジスタの内容を加算して結果を得る
ことを含んでいることを特徴とするインストラクション。 - 請求項5記載のインストラクションにおいて、得られた結果は、1又は複数のレジスタに格納されることを特徴とするインストラクション。
- 請求項1記載のインストラクションにおいて、多項式演算オペレーションの結果は、上位結果レジスタ及び下位結果レジスタに格納されることを特徴とするインストラクション。
- 請求項1記載のインストラクションにおいて、多項式演算オペレーションは、多項式乗算であることを特徴とするインストラクション。
- 請求項8記載のインストラクションにおいて、1又は複数のレジスタ識別子によって識別されるレジスタはそれぞれ、多項式を含んでいることを特徴とするインストラクション。
- 請求項9記載のインストラクションにおいて、各多項式は、2進表記の係数として符号化されていることを特徴とするインストラクション。
- 請求項1記載のインストラクションにおいて、インストラクションのセットは、RISCインストラクションのセットであることを特徴とするインストラクション。
- インストラクションを用いて多項式演算を実行する方法において、
インストラクションを受け取るステップであって、インストラクションが、
インストラクションを、多項式演算オペレーションを実行するためのインストラクションであるとして認識するための1又は複数のオペレーション・コードと、
1又は複数のレジスタ識別子と
を含んでいる、インストラクション受信ステップと、
インストラクションを処理することによって、1又は複数のレジスタ識別子を用いて多項式演算オペレーションを実行するステップと
からなることを特徴とする方法。 - 請求項12記載の方法において、多項式演算オペレーションを実行するするテップは、2進多項式加算を実行するステップであることを特徴とする方法。
- 請求項13記載の方法において、2進多項式加算はマルチプライヤを用いて実行されることを特徴とする方法。
- 請求項12記載の方法において、該方法はさらに、多項式演算オペレーションの結果を、1又は複数のレジスタに格納するステップを含んでいることを特徴とする方法。
- 請求項15記載の方法において、多項式演算オペレーションを実行するステップは、
1又は複数のレジスタ識別子によって識別されるレジスタの内容を乗算して中間値を得るステップと、
該中間値に1又は複数のレジスタの内容を加算して結果を得るステップと
を含んでいることを特徴とする方法。 - 請求項16記載の方法において、該方法はさらに、得られた結果を、1又は複数のレジスタに格納するステップを含んでいることを特徴とする方法。
- 請求項12記載の方法において、該方法はさらに、多項式演算オペレーションの結果を、上位結果レジスタ及び下位結果レジスタに格納するステップを含んでいることを特徴とする方法。
- 請求項12記載の方法において、多項式演算オペレーションを実行するステップは、多項式乗算を実行するステップであることを特徴とする方法。
- 請求項19記載の方法において、1又は複数のレジスタ識別子によって識別されるレジスタはそれぞれ、多項式を含んでいることを特徴とする方法。
- 請求項20記載の方法において、各多項式は、2進表記の係数として符号化されていることを特徴とする方法。
- 請求項12記載の方法において、インストラクションは、RISCインストラクションのセットの一部であることを特徴とする方法。
- ソフトウエアにおいて実現されたマイクロプロセッサ・コアを含んだコンピュータにより読み取り可能な記憶媒体であって、マイクロプロセッサ・コアが、多項式演算を実行するためのインストラクションを含んでいる、コンピュータ読取可能記憶媒体において、インストラクションが、
インストラクションを、多項式演算オペレーションを実行するためのインストラクションであるとして認識するための1又は複数のオペレーション・コードと、
1又は複数のレジスタ識別子と
を含んでおり、インストラクションが、1又は複数のレジスタ識別子を用いて多項式演算オペレーションを実行することによって処理されることを特徴とするコンピュータ読取可能記憶媒体。 - 請求項23記載のコンピュータ読取可能記憶媒体において、多項式演算オペレーションは、2進多項式加算あることを特徴とするコンピュータ読取可能記憶媒体。
- 請求項24記載のコンピュータ読取可能記憶媒体において、2進多項式加算はマルチプライヤを用いて実行されることを特徴とするコンピュータ読取可能記憶媒体。
- 請求項23記載のコンピュータ読取可能記憶媒体において、多項式演算オペレーションの結果は、1又は複数のレジスタに格納されることを特徴とするコンピュータ読取可能記憶媒体。
- 請求項26記載のコンピュータ読取可能記憶媒体において、多項式演算オペレーションは、
1又は複数のレジスタ識別子によって識別されるレジスタの内容を乗算して中間値を得、
該中間値に1又は複数のレジスタの内容を加算して結果を得る
ことを含んでいることを特徴とするコンピュータ読取可能記憶媒体。 - 請求項27記載のコンピュータ読取可能記憶媒体において、得られた結果は、1又は複数のレジスタに格納されることを特徴とするコンピュータ読取可能記憶媒体。
- 請求項27記載のコンピュータ読取可能記憶媒体において、多項式演算オペレーションの結果は、上位結果レジスタ及び下位結果レジスタに格納されることを特徴とするコンピュータ読取可能記憶媒体。
- 請求項23記載のコンピュータ読取可能記憶媒体において、多項式演算オペレーションは、多項式乗算であることを特徴とするコンピュータ読取可能記憶媒体。
- 請求項30記載のコンピュータ読取可能記憶媒体において、1又は複数のレジスタ識別子によって識別されるレジスタはそれぞれ、多項式を含んでいることを特徴とするコンピュータ読取可能記憶媒体。
- 請求項31記載のコンピュータ読取可能記憶媒体において、各多項式は、2進表記の係数として符号化されていることを特徴とするコンピュータ読取可能記憶媒体。
- 請求項23記載のコンピュータ読取可能記憶媒体において、インストラクションは、RISCインストラクションのセットの一部であることを特徴とするコンピュータ読取可能記憶媒体。
- 公開キー暗号化システムにおける、公開キーにより情報を暗号化する方法において、該方法は多項式演算を実行するためのインストラクションを含み、該インストラクションは、
インストラクションを、多項式演算オペレーションを実行するためのインストラクションであるとして認識するための1又は複数のオペレーション・コードと、
1又は複数のレジスタ識別子と
を含み、インストラクションが、1又は複数のレジスタ識別子を用いて多項式演算オペレーションを実行することによって処理されることを特徴とする暗号化方法。 - 請求項34記載の方法において、多項式演算オペレーションは、2進多項式加算であることを特徴とする方法。
- 請求項35記載の方法において、2進多項式加算はマルチプライヤを用いて実行されることを特徴とする方法。
- 請求項34記載の方法において、多項式演算オペレーションの結果は、1又は複数のレジスタに格納されることを特徴とする方法。
- 請求項37記載の方法において、多項式演算オペレーションは、
1又は複数のレジスタ識別子によって識別されるレジスタの内容を乗算して中間値を得、
該中間値に1又は複数のレジスタの内容を加算して結果を得る
ことを含んでいることを特徴とする方法。 - 請求項38記載の方法において、得られた結果は、1又は複数のレジスタに格納されることを特徴とする方法。
- 請求項34記載の方法において、多項式演算オペレーションの結果は、上位結果レジスタ及び下位結果レジスタに格納されることを特徴とする方法。
- 請求項34記載の方法において、多項式演算オペレーションは、多項式乗算であることを特徴とする方法。
- 請求項41記載の方法において、1又は複数のレジスタ識別子によって識別されるレジスタはそれぞれ、多項式を含んでいることを特徴とする方法。
- 請求項42記載の方法において、各多項式は、2進表記の係数として符号化されていることを特徴とする方法。
- 請求項34記載の方法において、インストラクションは、RISCインストラクションのセットの一部であることを特徴とする方法。
- マイクロプロセッサにおいて多項式演算を実行するためのインストラクションであって、
インストラクションを、多項式演算オペレーションを実行するためのインストラクションであるとして認識するための1又は複数のオペレーション・コードと、
1又は複数のレジスタ識別子と
を含み、1又は複数のレジスタ識別子を用いて多項式演算オペレーションを実行することによって処理されることを特徴とするインストラクション。 - 請求項45記載のインストラクションにおいて、多項式演算オペレーションは、2進多項式加算であることを特徴とするインストラクション。
- 請求項46記載のインストラクションにおいて、2進多項式加算は、マルチプライヤを用いて実行されることを特徴とするインストラクション。
- 請求項45記載のインストラクションにおいて、多項式演算オペレーションは、
1又は複数のレジスタ識別子によって識別されるレジスタの内容を乗算して中間値を得、
該中間値に1又は複数のレジスタの内容を加算して結果を得る
ことを含んでいることを特徴とするインストラクション。 - 請求項45記載のインストラクションにおいて、多項式演算オペレーションは、多項式乗算であることを特徴とするインストラクション。
- 多項式演算を実行するための1又は複数のインストラクションを提供するマイクロプロセッサにおいて、
インストラクション記憶部と、
インストラクション記憶部からマイクロプロセッサ・インストラクションを取得し、取得したインストラクションを処理する実行ユニットと、
実行ユニットによって取得したインストラクションを処理する際に、該インストラクションが多項式演算を実行するための1又は複数のインストラクションである場合に、使用される多項式演算ユニットと
からなることを特徴とするマイクロプロセッサ。 - 請求項50記載のマイクロプロセッサにおいて、該マイクロプロセッサはさらに、乗算/除算ユニットを含んでいることを特徴とするマイクロプロセッサ。
- 請求項51記載のマイクロプロセッサにおいて、多項式演算ユニットは、乗算/除算ユニットの構成要素であることを特徴とするマイクロプロセッサ。
- 請求項50記載のマイクロプロセッサにおいて、多項式演算ユニットは、2進多項式加算を実行するよう動作可能であることを特徴とするマイクロプロセッサ。
- 請求項50記載のマイクロプロセッサにおいて、多項式演算ユニットは、2進多項式乗算を実行するよう動作可能であることを特徴とするマイクロプロセッサ。
- 請求項50記載のマイクロプロセッサにおいて、該マイクロプロセッサはさらに、多項式演算ユニットからの結果を記憶するための結果レジスタを備えていることを特徴とするマイクロプロセッサ。
- 請求項55記載のマイクロプロセッサにおいて、多項式演算ユニットは、2進多項式乗算を実行して中間値を決定し、該中間値を結果レジスタの内容に加算することによって、2進多項式乗算及び加算オペレーションを実行するよう動作可能であることを特徴とするマイクロプロセッサ。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/788,684 US7711763B2 (en) | 2001-02-21 | 2001-02-21 | Microprocessor instructions for performing polynomial arithmetic operations |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002568191A Division JP2004533671A (ja) | 2001-02-21 | 2002-02-15 | 多項式演算オペレーション |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2009282992A true JP2009282992A (ja) | 2009-12-03 |
Family
ID=25145246
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002568191A Pending JP2004533671A (ja) | 2001-02-21 | 2002-02-15 | 多項式演算オペレーション |
| JP2009162679A Pending JP2009282992A (ja) | 2001-02-21 | 2009-07-09 | 多項式演算オペレーション |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002568191A Pending JP2004533671A (ja) | 2001-02-21 | 2002-02-15 | 多項式演算オペレーション |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US7711763B2 (ja) |
| EP (1) | EP1386224A4 (ja) |
| JP (2) | JP2004533671A (ja) |
| CN (1) | CN100422926C (ja) |
| WO (1) | WO2002069136A1 (ja) |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7599981B2 (en) | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
| US7711763B2 (en) | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
| US7181484B2 (en) * | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
| US7162621B2 (en) * | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
| US7325022B2 (en) * | 2003-08-26 | 2008-01-29 | Intel Corporation | Methods and apparatus for determining approximating polynomials using instruction-embedded coefficients |
| US20110064214A1 (en) * | 2003-09-09 | 2011-03-17 | Ternarylogic Llc | Methods and Apparatus in Alternate Finite Field Based Coders and Decoders |
| US8577026B2 (en) | 2010-12-29 | 2013-11-05 | Ternarylogic Llc | Methods and apparatus in alternate finite field based coders and decoders |
| US7765252B1 (en) | 2004-03-19 | 2010-07-27 | Microsoft Corporation | Five-term karatsuba-variant calculator |
| US7363336B1 (en) | 2004-03-19 | 2008-04-22 | Microsoft Corporation | Six-term Karatsuba-variant calculator |
| CN100517214C (zh) * | 2007-05-30 | 2009-07-22 | 北京天碁科技有限公司 | 一种实现二进制多项式运算的硬件配置方法及硬件系统 |
| JP4780158B2 (ja) * | 2008-08-26 | 2011-09-28 | ソニー株式会社 | 符号化装置および方法 |
| EP3238366B1 (en) * | 2014-12-22 | 2019-03-13 | Koninklijke Philips N.V. | Electronic calculating device |
| US11907369B2 (en) | 2020-08-27 | 2024-02-20 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception |
| US11868469B2 (en) * | 2020-08-27 | 2024-01-09 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing all dependent instructions from consuming architectural register result produced by instruction that causes a need for an architectural exception |
| US11853424B2 (en) | 2020-10-06 | 2023-12-26 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location |
Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3614406A (en) * | 1964-09-30 | 1971-10-19 | Bell Telephone Labor Inc | Machine processing of algebraic information |
| JPH09114645A (ja) * | 1995-10-16 | 1997-05-02 | Fuji Electric Co Ltd | 有限体上の乗算回路 |
| JPH113226A (ja) * | 1996-10-10 | 1999-01-06 | Sun Microsyst Inc | 統合グラフィックス機能を有するcpu用のビジュアル命令セット |
| JPH11174955A (ja) * | 1997-12-17 | 1999-07-02 | Nippon Telegr & Teleph Corp <Ntt> | 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体 |
| US6026420A (en) * | 1998-01-20 | 2000-02-15 | 3Com Corporation | High-speed evaluation of polynomials |
| JP2000293356A (ja) * | 1999-04-01 | 2000-10-20 | Fujitsu Ltd | 演算装置 |
| JP2000293507A (ja) * | 1999-04-09 | 2000-10-20 | Fujitsu Ltd | 有限体演算における表現データ生成装置および方法 |
| JP2000321979A (ja) * | 1999-05-14 | 2000-11-24 | Matsushita Electric Ind Co Ltd | 多項式演算装置、楕円曲線位数計算装置、楕円曲線生成装置及び楕円曲線暗号システム |
| JP2001034167A (ja) * | 1999-07-23 | 2001-02-09 | Toshiba Corp | 演算装置及び暗号処理装置 |
Family Cites Families (207)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| BE758815A (fr) | 1969-11-28 | 1971-04-16 | Burroughs Corp | Systeme de traitement d'information presentant des moyens pour la preparation dynamique d'adresses de memoire |
| US3642744A (en) | 1970-06-01 | 1972-02-15 | Phillips Petroleum Co | Vinyl monomer polymerization process |
| US4109310A (en) | 1973-08-06 | 1978-08-22 | Xerox Corporation | Variable field length addressing system having data byte interchange |
| FR2253415A5 (ja) | 1973-12-04 | 1975-06-27 | Cii | |
| US3916388A (en) | 1974-05-30 | 1975-10-28 | Ibm | Shifting apparatus for automatic data alignment |
| GB1524850A (en) | 1975-12-23 | 1978-09-13 | Ferranti Ltd | Data processing apparatus |
| JPS52119832A (en) | 1976-04-01 | 1977-10-07 | Toshiba Corp | Electroinc calculator of microprogram control system |
| US4173041A (en) | 1976-05-24 | 1979-10-30 | International Business Machines Corporation | Auxiliary microcontrol mechanism for increasing the number of different control actions in a microprogrammed digital data processor having microwords of fixed length |
| US4128880A (en) | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
| US4219874A (en) | 1978-03-17 | 1980-08-26 | Gusev Valery | Data processing device for variable length multibyte data fields |
| US4307445A (en) | 1978-11-17 | 1981-12-22 | Motorola, Inc. | Microprogrammed control apparatus having a two-level control store for data processor |
| JPS6041768B2 (ja) | 1979-01-19 | 1985-09-18 | 株式会社日立製作所 | デ−タ処理装置 |
| US4302820A (en) | 1979-08-20 | 1981-11-24 | Allen-Bradley Company | Dual language programmable controller |
| JPS5847053B2 (ja) | 1979-11-19 | 1983-10-20 | 株式会社日立製作所 | デ−タ処理装置 |
| US4394736A (en) | 1980-02-11 | 1983-07-19 | Data General Corporation | Data processing system utilizing a unique two-level microcoding technique for forming microinstructions |
| US4320820A (en) * | 1980-07-28 | 1982-03-23 | Harvey Hubbell Incorporated | Section insulator with improved arc control |
| JPS5776634A (en) | 1980-10-31 | 1982-05-13 | Hitachi Ltd | Digital signal processor |
| US4434462A (en) | 1980-11-24 | 1984-02-28 | Texas Instruments Incorporated | Off-chip access for psuedo-microprogramming in microprocessor |
| US4520439A (en) | 1981-01-05 | 1985-05-28 | Sperry Corporation | Variable field partial write data merge |
| US4538239A (en) | 1982-02-11 | 1985-08-27 | Texas Instruments Incorporated | High-speed multiplier for microcomputer used in digital signal processing system |
| US4491910A (en) | 1982-02-22 | 1985-01-01 | Texas Instruments Incorporated | Microcomputer having data shift within memory |
| US4583199A (en) | 1982-07-02 | 1986-04-15 | Honeywell Information Systems Inc. | Apparatus for aligning and packing a first operand into a second operand of a different character size |
| US4495598A (en) | 1982-09-29 | 1985-01-22 | Mcdonnell Douglas Corporation | Computer rotate function |
| US4928223A (en) | 1982-10-06 | 1990-05-22 | Fairchild Semiconductor Corporation | Floating point microprocessor with directable two level microinstructions |
| US4507731A (en) | 1982-11-01 | 1985-03-26 | Raytheon Company | Bidirectional data byte aligner |
| US4586130A (en) | 1983-10-03 | 1986-04-29 | Digital Equipment Corporation | Central processing unit for a digital computer |
| US4825363A (en) | 1984-12-05 | 1989-04-25 | Honeywell Inc. | Apparatus for modifying microinstructions of a microprogrammed processor |
| JPS61160176A (ja) | 1984-12-29 | 1986-07-19 | Hitachi Ltd | ベクトル処理装置 |
| US4884197A (en) | 1985-02-22 | 1989-11-28 | Intergraph Corporation | Method and apparatus for addressing a cache memory |
| US4899275A (en) | 1985-02-22 | 1990-02-06 | Intergraph Corporation | Cache-MMU system |
| US4860192A (en) | 1985-02-22 | 1989-08-22 | Intergraph Corporation | Quadword boundary cache system |
| US4809212A (en) | 1985-06-19 | 1989-02-28 | Advanced Micro Devices, Inc. | High throughput extended-precision multiplier |
| CA1266330A (en) | 1985-08-13 | 1990-02-27 | Erik Lee Brunvand | Circulating context addressable memory |
| JPS6347874A (ja) | 1986-08-16 | 1988-02-29 | Nec Corp | 算術演算装置 |
| US4868777A (en) | 1986-09-12 | 1989-09-19 | Matsushita Electric Industrial Co., Ltd. | High speed multiplier utilizing signed-digit and carry-save operands |
| US4771463A (en) * | 1986-12-05 | 1988-09-13 | Siemens Transmission Systems, Inc. | Digital scrambling without error multiplication |
| US4811215A (en) | 1986-12-12 | 1989-03-07 | Intergraph Corporation | Instruction execution accelerator for a pipelined digital machine with virtual memory |
| US4992934A (en) | 1986-12-15 | 1991-02-12 | United Technologies Corporation | Reduced instruction set computing apparatus and methods |
| US4814976C1 (en) | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
| US5073864A (en) | 1987-02-10 | 1991-12-17 | Davin Computer Corporation | Parallel string processor and method for a minicomputer |
| US5235686A (en) | 1987-02-24 | 1993-08-10 | Texas Instruments Incorporated | Computer system having mixed macrocode and microcode |
| US4891781A (en) * | 1987-03-04 | 1990-01-02 | Cylink Corporation | Modulo arithmetic processor chip |
| US5005118A (en) | 1987-04-10 | 1991-04-02 | Tandem Computers Incorporated | Method and apparatus for modifying micro-instructions using a macro-instruction pipeline |
| US4847801A (en) | 1987-10-26 | 1989-07-11 | Cyclotomics, Inc. | Compact galois field multiplier |
| US4878174A (en) | 1987-11-03 | 1989-10-31 | Lsi Logic Corporation | Flexible ASIC microcomputer permitting the modular modification of dedicated functions and macroinstructions |
| US4829380A (en) | 1987-12-09 | 1989-05-09 | General Motors Corporation | Video processor |
| US4879676A (en) | 1988-02-29 | 1989-11-07 | Mips Computer Systems, Inc. | Method and apparatus for precise floating point exceptions |
| US4949250A (en) | 1988-03-18 | 1990-08-14 | Digital Equipment Corporation | Method and apparatus for executing instructions for a vector processing system |
| US5136696A (en) | 1988-06-27 | 1992-08-04 | Prime Computer, Inc. | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions |
| GB8820237D0 (en) | 1988-08-25 | 1988-09-28 | Amt Holdings | Processor array systems |
| JPH0810428B2 (ja) | 1988-12-26 | 1996-01-31 | 三菱電機株式会社 | データ処理装置 |
| JP2538053B2 (ja) | 1989-05-08 | 1996-09-25 | 松下電器産業株式会社 | 制御装置 |
| JP2646778B2 (ja) | 1990-01-17 | 1997-08-27 | 日本電気株式会社 | ディジタル信号処理装置 |
| US5193202A (en) | 1990-05-29 | 1993-03-09 | Wavetracer, Inc. | Processor array with relocated operand physical address generator capable of data transfer to distant physical processor for each virtual processor while simulating dimensionally larger array processor |
| US5418915A (en) | 1990-08-08 | 1995-05-23 | Sumitomo Metal Industries, Ltd. | Arithmetic unit for SIMD type parallel computer |
| JPH04127364A (ja) | 1990-09-19 | 1992-04-28 | Nec Corp | 積和算器 |
| JPH04172533A (ja) | 1990-11-07 | 1992-06-19 | Toshiba Corp | 電子計算機 |
| US5590345A (en) | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
| US5815723A (en) | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
| US5765011A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
| US5222244A (en) | 1990-12-20 | 1993-06-22 | Intel Corporation | Method of modifying a microinstruction with operands specified by an instruction held in an alias register |
| CA2060555A1 (en) | 1991-04-24 | 1992-10-25 | Robert J. Bullions, Iii | System and method for draining an instruction pipeline |
| US5245564A (en) | 1991-05-10 | 1993-09-14 | Weitek Corporation | Apparatus for multiplying operands |
| US5961629A (en) | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
| US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
| JP2875909B2 (ja) | 1991-07-12 | 1999-03-31 | 三菱電機株式会社 | 並列演算処理装置 |
| US5581773A (en) | 1992-05-12 | 1996-12-03 | Glover; Michael A. | Massively parallel SIMD processor which selectively transfers individual contiguously disposed serial memory elements |
| US5669010A (en) | 1992-05-18 | 1997-09-16 | Silicon Engines | Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units |
| US5396502A (en) | 1992-07-09 | 1995-03-07 | Advanced Hardware Architectures, Inc. | Single-stack implementation of a Reed-Solomon encoder/decoder |
| US5457779A (en) | 1993-01-15 | 1995-10-10 | Silicon Graphics, Inc. | System for accessing graphic data in a SIMD processing environment |
| US5299147A (en) | 1993-02-22 | 1994-03-29 | Intergraph Corporation | Decoder scheme for fully associative translation-lookaside buffer |
| US5717947A (en) | 1993-03-31 | 1998-02-10 | Motorola, Inc. | Data processing system and method thereof |
| EP0622727A1 (en) | 1993-04-29 | 1994-11-02 | International Business Machines Corporation | System for optimizing argument reduction |
| JPH0720778A (ja) | 1993-07-02 | 1995-01-24 | Fujitsu Ltd | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
| US5598514A (en) | 1993-08-09 | 1997-01-28 | C-Cube Microsystems | Structure and method for a multistandard video encoder/decoder |
| US5392408A (en) | 1993-09-20 | 1995-02-21 | Apple Computer, Inc. | Address selective emulation routine pointer address mapping system |
| EP0645699A1 (en) | 1993-09-29 | 1995-03-29 | International Business Machines Corporation | Fast multiply-add instruction sequence in a pipeline floating-point processor |
| US5815695A (en) | 1993-10-28 | 1998-09-29 | Apple Computer, Inc. | Method and apparatus for using condition codes to nullify instructions based on results of previously-executed instructions on a computer processor |
| EP0651320B1 (en) | 1993-10-29 | 2001-05-23 | Advanced Micro Devices, Inc. | Superscalar instruction decoder |
| DE69429061T2 (de) | 1993-10-29 | 2002-07-18 | Advanced Micro Devices, Inc. | Superskalarmikroprozessoren |
| US5502829A (en) | 1993-11-03 | 1996-03-26 | Intergraph Corporation | Apparatus for obtaining data from a translation memory based on carry signal from adder |
| EP0652510B1 (en) | 1993-11-05 | 2000-01-26 | Intergraph Corporation | Software scheduled superscalar computer architecture |
| DE69430018T2 (de) | 1993-11-05 | 2002-11-21 | Intergraph Corp., Huntsville | Befehlscachespeicher mit assoziativem Kreuzschienenschalter |
| US6425124B1 (en) | 1993-11-08 | 2002-07-23 | Matsushita Electric Industrial Co. Ltd. | Resource allocation device for reducing the size and run time of a machine language program |
| US5996062A (en) | 1993-11-24 | 1999-11-30 | Intergraph Corporation | Method and apparatus for controlling an instruction pipeline in a data processing system |
| US6067615A (en) | 1993-11-30 | 2000-05-23 | Trw Inc. | Reconfigurable processor for executing successive function sequences in a processor operation |
| US5392228A (en) | 1993-12-06 | 1995-02-21 | Motorola, Inc. | Result normalizer and method of operation |
| US5537629A (en) | 1994-03-01 | 1996-07-16 | Intel Corporation | Decoder for single cycle decoding of single prefixes in variable length instructions |
| US5559974A (en) | 1994-03-01 | 1996-09-24 | Intel Corporation | Decoder having independently loaded micro-alias and macro-alias registers accessible simultaneously by one micro-operation |
| US5809271A (en) | 1994-03-01 | 1998-09-15 | Intel Corporation | Method and apparatus for changing flow of control in a processor |
| US5781457A (en) | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
| US5673407A (en) | 1994-03-08 | 1997-09-30 | Texas Instruments Incorporated | Data processor having capability to perform both floating point operations and memory access in response to a single instruction |
| US5812723A (en) | 1994-03-24 | 1998-09-22 | Kanagawa Academy Of Science And Technology | Optical fiber with tapered end of core protruding from clad |
| US5734600A (en) | 1994-03-29 | 1998-03-31 | International Business Machines Corporation | Polynomial multiplier apparatus and method |
| US5734874A (en) | 1994-04-29 | 1998-03-31 | Sun Microsystems, Inc. | Central processing unit with integrated graphics functions |
| DE69519449T2 (de) | 1994-05-05 | 2001-06-21 | Conexant Systems, Inc. | Raumzeigersdatenpfad |
| JP3599409B2 (ja) | 1994-06-14 | 2004-12-08 | 株式会社ルネサステクノロジ | 分岐予測装置 |
| FR2723223B1 (fr) | 1994-07-29 | 1996-08-30 | Sgs Thomson Microelectronics | Procede de brouillage numerique et application a un circuit programmable |
| US5758176A (en) | 1994-09-28 | 1998-05-26 | International Business Machines Corporation | Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system |
| US5513366A (en) | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
| ZA9510127B (en) | 1994-12-01 | 1996-06-06 | Intel Corp | Novel processor having shift operations |
| US5887183A (en) | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
| US5550768A (en) | 1995-01-31 | 1996-08-27 | International Business Machines Corporation | Rounding normalizer for floating point arithmetic operations |
| US5713035A (en) | 1995-03-31 | 1998-01-27 | International Business Machines Corporation | Linking program access register number with millicode operand access |
| US5748979A (en) * | 1995-04-05 | 1998-05-05 | Xilinx Inc | Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table |
| US5696937A (en) | 1995-04-28 | 1997-12-09 | Unisys Corporation | Cache controller utilizing a state machine for controlling invalidations in a network with dual system busses |
| GB9509987D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
| GB9509988D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Matrix transposition |
| US5752071A (en) | 1995-07-17 | 1998-05-12 | Intel Corporation | Function coprocessor |
| US6381690B1 (en) | 1995-08-01 | 2002-04-30 | Hewlett-Packard Company | Processor for performing subword permutations and combinations |
| US5742840A (en) | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
| US6295599B1 (en) | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
| US5953241A (en) | 1995-08-16 | 1999-09-14 | Microunity Engeering Systems, Inc. | Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction |
| US5721892A (en) | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
| US6385634B1 (en) | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
| CN103092564B (zh) | 1995-08-31 | 2016-04-06 | 英特尔公司 | 执行乘加指令的处理器和对分组数据执行乘加操作的系统 |
| US5936872A (en) | 1995-09-05 | 1999-08-10 | Intel Corporation | Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations |
| US5726927A (en) | 1995-09-11 | 1998-03-10 | Digital Equipment Corporation | Multiply pipe round adder |
| US5768172A (en) | 1995-10-04 | 1998-06-16 | Apple Computer, Inc. | Graphic software functions without branch instructions |
| US5926642A (en) | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
| US5819117A (en) | 1995-10-10 | 1998-10-06 | Microunity Systems Engineering, Inc. | Method and system for facilitating byte ordering interfacing of a computer system |
| US5798923A (en) | 1995-10-18 | 1998-08-25 | Intergraph Corporation | Optimal projection design and analysis |
| US5774709A (en) | 1995-12-06 | 1998-06-30 | Lsi Logic Corporation | Enhanced branch delay slot handling with single exception program counter |
| US5852726A (en) | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
| US5729724A (en) | 1995-12-20 | 1998-03-17 | Intel Corporation | Adaptive 128-bit floating point load and store operations for quadruple precision compatibility |
| US6185668B1 (en) | 1995-12-21 | 2001-02-06 | Intergraph Corporation | Method and apparatus for speculative execution of instructions |
| US5793661A (en) | 1995-12-26 | 1998-08-11 | Intel Corporation | Method and apparatus for performing multiply and accumulate operations on packed data |
| US6088783A (en) | 1996-02-16 | 2000-07-11 | Morton; Steven G | DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word |
| US5822606A (en) | 1996-01-11 | 1998-10-13 | Morton; Steven G. | DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word |
| KR100483212B1 (ko) | 1996-03-28 | 2005-10-19 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 순차프로세서상에서데이터요소들의세트를처리하기위한방법및컴퓨터시스템 |
| US5717910A (en) | 1996-03-29 | 1998-02-10 | Integrated Device Technology, Inc. | Operand compare/release apparatus and method for microinstrution sequences in a pipeline processor |
| US6066178A (en) | 1996-04-10 | 2000-05-23 | Lsi Logic Corporation | Automated design method and system for synthesizing digital multipliers |
| US6128726A (en) | 1996-06-04 | 2000-10-03 | Sigma Designs, Inc. | Accurate high speed digital signal processor |
| JPH1011289A (ja) | 1996-06-19 | 1998-01-16 | Mitsubishi Electric Corp | 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ |
| US5860017A (en) | 1996-06-28 | 1999-01-12 | Intel Corporation | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction |
| US5838984A (en) | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
| US6058465A (en) | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
| US5812147A (en) | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
| US5944776A (en) | 1996-09-27 | 1999-08-31 | Sun Microsystems, Inc. | Fast carry-sum form booth encoder |
| US6041403A (en) | 1996-09-27 | 2000-03-21 | Intel Corporation | Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction |
| US5729554A (en) | 1996-10-01 | 1998-03-17 | Hewlett-Packard Co. | Speculative execution of test patterns in a random test generator |
| US6473779B1 (en) * | 1996-10-03 | 2002-10-29 | Texas Instruments Incorporated | Combinatorial polynomial multiplier for galois field 256 arithmetic |
| US5784602A (en) | 1996-10-08 | 1998-07-21 | Advanced Risc Machines Limited | Method and apparatus for digital signal processing for integrated circuit architecture |
| JP3790307B2 (ja) | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
| DE19644688B4 (de) | 1996-10-28 | 2005-06-16 | Systemonic Ag | Schaltungsanordnung einer digitalen Multiplizierer-Baugruppe, zur Verarbeitung von Binärzahlen sowie Elementen aus GF(2m) |
| KR100291383B1 (ko) | 1996-11-18 | 2001-09-17 | 윤종용 | 디지털신호처리를위한명령을지원하는모듈계산장치및방법 |
| US5909572A (en) | 1996-12-02 | 1999-06-01 | Compaq Computer Corp. | System and method for conditionally moving an operand from a source register to a destination register |
| JPH10171350A (ja) | 1996-12-10 | 1998-06-26 | Hitachi Ltd | ハッシュ値生成方法および装置 |
| US5918031A (en) | 1996-12-18 | 1999-06-29 | Intel Corporation | Computer utilizing special micro-operations for encoding of multiple variant code flows |
| US6006316A (en) | 1996-12-20 | 1999-12-21 | International Business Machines, Corporation | Performing SIMD shift and arithmetic operation in non-SIMD architecture by operation on packed data of sub-operands and carry over-correction |
| FR2758195B1 (fr) | 1997-01-09 | 1999-02-26 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire comprenant deux circuits de multiplication operant en parallele |
| US5880984A (en) | 1997-01-13 | 1999-03-09 | International Business Machines Corporation | Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments |
| US5922066A (en) | 1997-02-24 | 1999-07-13 | Samsung Electronics Co., Ltd. | Multifunction data aligner in wide data width processor |
| US5881307A (en) | 1997-02-24 | 1999-03-09 | Samsung Electronics Co., Ltd. | Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor |
| US5875336A (en) | 1997-03-31 | 1999-02-23 | International Business Machines Corporation | Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system |
| GB9707861D0 (en) | 1997-04-18 | 1997-06-04 | Certicom Corp | Arithmetic processor |
| US6154834A (en) | 1997-05-27 | 2000-11-28 | Intel Corporation | Detachable processor module containing external microcode expansion memory |
| US6035120A (en) | 1997-05-28 | 2000-03-07 | Sun Microsystems, Inc. | Method and apparatus for converting executable computer programs in a heterogeneous computing environment |
| US6421817B1 (en) | 1997-05-29 | 2002-07-16 | Xilinx, Inc. | System and method of computation in a programmable logic device using virtual instructions |
| US5790827A (en) | 1997-06-20 | 1998-08-04 | Sun Microsystems, Inc. | Method for dependency checking using a scoreboard for a pair of register sets having different precisions |
| US5887181A (en) | 1997-06-23 | 1999-03-23 | Sun Microsystems, Inc. | Method and apparatus for reducing a computational result to the range boundaries of an unsigned 8-bit integer in case of overflow |
| US5960012A (en) | 1997-06-23 | 1999-09-28 | Sun Microsystems, Inc. | Checksum determination using parallel computations on multiple packed data elements |
| US6233597B1 (en) | 1997-07-09 | 2001-05-15 | Matsushita Electric Industrial Co., Ltd. | Computing apparatus for double-precision multiplication |
| DE69820027T2 (de) | 1997-10-02 | 2004-07-08 | Koninklijke Philips Electronics N.V. | Vorrichtung zur ausführung virtueller maschinenbefehle |
| EP0941508B1 (en) | 1997-10-02 | 2007-01-17 | Koninklijke Philips Electronics N.V. | Variable instruction set computer |
| US5933650A (en) | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
| US5864703A (en) | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
| US6009261A (en) | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
| DE69840959D1 (de) | 1997-12-17 | 2009-08-20 | Nippon Telegraph & Telephone | Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen. |
| US6181729B1 (en) * | 1997-12-19 | 2001-01-30 | Supergold Communication Limited | Spread spectrum communication |
| US6009450A (en) | 1997-12-24 | 1999-12-28 | Motorola, Inc. | Finite field inverse circuit |
| US6044389A (en) | 1997-12-29 | 2000-03-28 | Quantum Corporation | System for computing the multiplicative inverse of a field element for galois fields without using tables |
| US6058500A (en) * | 1998-01-20 | 2000-05-02 | 3Com Corporation | High-speed syndrome calculation |
| US6122738A (en) * | 1998-01-22 | 2000-09-19 | Symantec Corporation | Computer file integrity verification |
| US6138229A (en) | 1998-05-29 | 2000-10-24 | Motorola, Inc. | Customizable instruction set processor with non-configurable/configurable decoding units and non-configurable/configurable execution units |
| US6141786A (en) | 1998-06-04 | 2000-10-31 | Intenational Business Machines Corporation | Method and apparatus for performing arithmetic operations on Galois fields and their extensions |
| US6438678B1 (en) | 1998-06-15 | 2002-08-20 | Cisco Technology, Inc. | Apparatus and method for operating on data in a data communications system |
| US6199087B1 (en) | 1998-06-25 | 2001-03-06 | Hewlett-Packard Company | Apparatus and method for efficient arithmetic in finite fields through alternative representation |
| US6073154A (en) | 1998-06-26 | 2000-06-06 | Xilinx, Inc. | Computing multidimensional DFTs in FPGA |
| US6199088B1 (en) | 1998-06-30 | 2001-03-06 | Quantum Corp. | Circuit for determining multiplicative inverses in certain galois fields |
| US6314445B1 (en) | 1998-08-03 | 2001-11-06 | International Business Machines Coproration | Native function calling |
| US6263429B1 (en) | 1998-09-30 | 2001-07-17 | Conexant Systems, Inc. | Dynamic microcode for embedded processors |
| JP2000172520A (ja) * | 1998-12-04 | 2000-06-23 | Fujitsu Ltd | ガロア体演算プロセッサ |
| WO2000038047A1 (en) * | 1998-12-18 | 2000-06-29 | Motorola Inc. | Circuit and method of cryptographic multiplication |
| US6397241B1 (en) | 1998-12-18 | 2002-05-28 | Motorola, Inc. | Multiplier cell and method of computing |
| JP3585800B2 (ja) | 1999-01-13 | 2004-11-04 | 株式会社東芝 | 情報処理装置 |
| US6480872B1 (en) | 1999-01-21 | 2002-11-12 | Sandcraft, Inc. | Floating-point and integer multiply-add and multiply-accumulate |
| US6453407B1 (en) | 1999-02-10 | 2002-09-17 | Infineon Technologies Ag | Configurable long instruction word architecture and instruction set |
| DE19907575A1 (de) | 1999-02-23 | 2000-08-24 | Philips Corp Intellectual Pty | Schaltungsanordnung zum Liefern eines Speisestromes |
| TW482980B (en) | 1999-05-31 | 2002-04-11 | Ibm | Hardware device for executing base programmable instructions based upon micro-instructions |
| JP2001147799A (ja) | 1999-10-01 | 2001-05-29 | Hitachi Ltd | データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法 |
| US6615366B1 (en) | 1999-12-21 | 2003-09-02 | Intel Corporation | Microprocessor with dual execution core operable in high reliability mode |
| US6760742B1 (en) | 2000-02-18 | 2004-07-06 | Texas Instruments Incorporated | Multi-dimensional galois field multiplier |
| US6711602B1 (en) | 2000-02-18 | 2004-03-23 | Texas Instruments Incorporated | Data processor with flexible multiply unit |
| US6513054B1 (en) | 2000-02-22 | 2003-01-28 | The United States Of America As Represented By The Secretary Of The Army | Asynchronous parallel arithmetic processor utilizing coefficient polynomial arithmetic (CPA) |
| AU2001245720A1 (en) | 2000-03-15 | 2001-09-24 | Arc International Plc | Method and apparatus for processor code optimization using code compression |
| JP2003528390A (ja) | 2000-03-20 | 2003-09-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | インタプリタによりコンピュータプログラムを実行する方法、コンピュータシステムならびにコンピュータプログラムプロダクト |
| CA2375058A1 (en) | 2000-05-05 | 2001-11-22 | Ruby B. Lee | A method and system for performing permutations using permutation instructions based on modified omega and flip stages |
| US6625726B1 (en) | 2000-06-02 | 2003-09-23 | Advanced Micro Devices, Inc. | Method and apparatus for fault handling in computer systems |
| US6651160B1 (en) | 2000-09-01 | 2003-11-18 | Mips Technologies, Inc. | Register set extension for compressed instruction set |
| US6625737B1 (en) | 2000-09-20 | 2003-09-23 | Mips Technologies Inc. | System for prediction and control of power consumption in digital system |
| US20020069402A1 (en) | 2000-10-05 | 2002-06-06 | Nevill Edward Colles | Scheduling control within a system having mixed hardware and software based instruction execution |
| US7162621B2 (en) | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
| US7599981B2 (en) | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
| US7181484B2 (en) | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
| US7711763B2 (en) | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
| US7003715B1 (en) * | 2001-03-30 | 2006-02-21 | Cisco Technology, Inc. | Galois field multiply accumulator |
-
2001
- 2001-02-21 US US09/788,684 patent/US7711763B2/en not_active Expired - Lifetime
-
2002
- 2002-02-15 EP EP02706275A patent/EP1386224A4/en not_active Ceased
- 2002-02-15 CN CNB028085418A patent/CN100422926C/zh not_active Expired - Lifetime
- 2002-02-15 WO PCT/US2002/004415 patent/WO2002069136A1/en not_active Ceased
- 2002-02-15 JP JP2002568191A patent/JP2004533671A/ja active Pending
-
2009
- 2009-07-09 JP JP2009162679A patent/JP2009282992A/ja active Pending
Patent Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3614406A (en) * | 1964-09-30 | 1971-10-19 | Bell Telephone Labor Inc | Machine processing of algebraic information |
| JPH09114645A (ja) * | 1995-10-16 | 1997-05-02 | Fuji Electric Co Ltd | 有限体上の乗算回路 |
| JPH113226A (ja) * | 1996-10-10 | 1999-01-06 | Sun Microsyst Inc | 統合グラフィックス機能を有するcpu用のビジュアル命令セット |
| JPH11174955A (ja) * | 1997-12-17 | 1999-07-02 | Nippon Telegr & Teleph Corp <Ntt> | 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体 |
| US6026420A (en) * | 1998-01-20 | 2000-02-15 | 3Com Corporation | High-speed evaluation of polynomials |
| JP2000293356A (ja) * | 1999-04-01 | 2000-10-20 | Fujitsu Ltd | 演算装置 |
| JP2000293507A (ja) * | 1999-04-09 | 2000-10-20 | Fujitsu Ltd | 有限体演算における表現データ生成装置および方法 |
| JP2000321979A (ja) * | 1999-05-14 | 2000-11-24 | Matsushita Electric Ind Co Ltd | 多項式演算装置、楕円曲線位数計算装置、楕円曲線生成装置及び楕円曲線暗号システム |
| JP2001034167A (ja) * | 1999-07-23 | 2001-02-09 | Toshiba Corp | 演算装置及び暗号処理装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN1503939A (zh) | 2004-06-09 |
| US20020116428A1 (en) | 2002-08-22 |
| CN100422926C (zh) | 2008-10-01 |
| WO2002069136A1 (en) | 2002-09-06 |
| EP1386224A1 (en) | 2004-02-04 |
| JP2004533671A (ja) | 2004-11-04 |
| EP1386224A4 (en) | 2008-11-26 |
| US7711763B2 (en) | 2010-05-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2009282992A (ja) | 多項式演算オペレーション | |
| JP5231336B2 (ja) | 拡張精度アキュムレータ | |
| US7599981B2 (en) | Binary polynomial multiplier | |
| JP3837113B2 (ja) | 部分的ビット入替 | |
| JP2004501416A (ja) | 結合された積和演算器を備えたデジタル信号プロセッサ | |
| CN101304312A (zh) | 一种适用于精简指令集处理器的加密单元 | |
| Page et al. | Parallel cryptographic arithmetic using a redundant Montgomery representation | |
| EP1131699B1 (en) | A data processing system and method for performing an arithmetic operation on a plurality of signed data values | |
| WO2002071687A1 (en) | Recursive cryptoaccelerator and recursive vhdl design of logic circuits | |
| Großschädl et al. | Architectural enhancements to support digital signal processing and public-key cryptography | |
| US20040117601A1 (en) | General-purpose processor that can rapidly perform binary polynomial arithmetic operations | |
| Neustadter et al. | Elliptic Curves over Prime and Binary Fields in Cryptography | |
| Scott | The Apache Milagro Crypto Library (Version | |
| GB2353447A (en) | Multiple-Precision arithmetic method | |
| JP2006500615A (ja) | 向上したQuisquaterReduction |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120201 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120625 |