(57)【特許請求の範囲】
【請求項１】
第１の指令を実行することと、
第２の指令を実行することと、
を備え、
前記第１の指令は、
ガロア域のメンバーである多項式の複数の多項式係数を含む第１の入力を受信することと、
ガロア域のメンバーである多項式の複数の多項式係数を含む第２の入力を受信することと、
前記第１及び第２の入力を乗算することによって積を生成する処理することと、を含んでおり、
前記第２の指令は、
前記第１と第２の入力の乗算の積を含み、多項式の複数の多項式係数を含む第３の入力を受信することと、
前記ガロア域の予め定められた生成多項式を表している複数の多項式係数を含む第４の入力を受信することと、
前記予め定められた生成多項式の長さを含む第５の入力を受信することと、
除数に関して第３の入力の係数を生成することと、を含んでおり、
前記係数は前記第４の入力を使用して前記第３の入力において複数の演算を行うことにより生成され、前記複数の演算は前記第５の入力により限定される、
ガロア域乗算を行う方法。
【請求項２】
前記第２の指令は、前記第１の指令よりも頻度が少なく実行される、請求項１記載の方法。
【請求項３】
前記第１及び第２の入力は対応するレジスタ中に上位桁ビットで記憶される、請求項１記載の方法。
【請求項４】
前記係数を生成するステップはさらに、
現在の剰余の最初のビットが１に等しいか否かを決定し、
前記現在の剰余の前記最初のビットが１に等しいならば、前記除数のガロア域にわたって少なくとも１つの減算を実行し、
剰余を生成するステップを含み、前記剰余の値は対応するレジスタ中に上位桁ビットで記憶される、請求項１記載の方法。
【請求項５】
前記積を生成するステップはさらに、
前記第１の入力と前記第２の入力とを比較し、
前記第１または第２の入力の一方における予め定められた対応するビットが１に等しいか否かを決定し、
前記第１または第２の入力の一方における予め定められた対応するビットが１に等しいならば、前記第１または第２の入力の少なくとも一方においてガロア域にわたって少なくとも１つの加算を実行し、
結果的な積を生成するステップを含み、前記結果的な積の値は対応するレジスタ中に上位桁ビットで記憶される、請求項１記載の方法。
【請求項６】
前記対応するレジスタ中の全ての未使用のビットはゼロで充填される、請求項３記載の方法。
【請求項７】
前記対応するレジスタの全ての未使用のビットはゼロで充填される、請求項４記載の方法。
【請求項８】
前記対応するレジスタの全ての未使用のビットはゼロで充填される、請求項５記載の方法。
【請求項９】
第１の指令を実行するように構成されている第１の回路と、
第２の指令を実行するように構成されている第２の回路と、
を具備する、ガロア域乗算を行うように構成されたプロセッサにおいて、
前記第１の回路は、
ガロア域のメンバーである多項式の複数の多項式係数を受信するように構成された第１の入力と、
ガロア域のメンバーである多項式の複数の多項式係数を受信するように構成された第２の入力と、
前記第１及び第２の入力を乗算することによって積を出力するように構成された多項式乗算回路と、
を具備しており、
前記第２の回路は、
前記第１と第２の入力の乗算の積を含み、多項式の複数の多項式係数を受信するように構成されている第３の入力と、
前記ガロア域の予め定められた生成多項式を表す複数の多項式係数を受信するように構成されている第４の入力と、
前記予め定められた生成多項式の長さを受信するように構成されている第５の入力と、
除数に関して第３の入力の係数を出力するように構成され、前記係数は前記第４の入力を使用して前記第３の入力において複数の演算を行うことにより生成され、前記複数の演算は前記第５の入力により限定される係数計算回路と、
を具備する、
プロセッサ。
【請求項１０】
さらに、前記多項式乗算回路および前記係数計算回路の両者により使用されるように構成された、複数の段を有する段計算回路を具備し、
前記段計算回路はさらに、
中間値を受信するように構成された第６の入力と、
加数値を受信するように構成された第７の入力と、
前記受信された中間値を左シフトするように構成されたブロックと、
次の段への入力として与えられる出力と、
を備える、
請求項９記載のプロセッサ。
【請求項１１】
さらに、プロセッサが前記第１の指令を実行する場合には、第１の段の前記中間入力値を０に設定し、前記第２の指令を実行する場合には前記第３の入力に０を設定するように構成された第１の選択回路を具備する、請求項１０記載のプロセッサ。
【請求項１２】
さらに、プロセッサが前記第１の指令を実行する場合には、現在の段を示す数に対応するゼロが先頭に付加された前記第１の入力に前記加数の値を設定し、
前記プロセッサが前記第２の指令を実行する場合には、前記第４の入力に前記加数の値を設定するように構成された第２の選択回路を具備する、請求項１０記載のプロセッサ。
【請求項１３】
前記段計算回路は、前記第１の指令と前記第２の指令との両方を実行する場合に、排他的ＯＲ演算を行うように構成される、請求項１０記載のプロセッサ。
【請求項１４】
さらに、最上位桁のビットから数えて、前記第２の入力のｉ番目のビットが１であるか否かを決定するように構成された各段における乗算ビット回路、ここで、前記ｉは前記現在の段を示す数に一致する、と、
現在の剰余の最初のビットが１に等しいか否かを決定するように構成された、各段における最初のビットの回路と、
を具備する、
請求項１１記載のプロセッサ。
【請求項１５】
さらに、各段におけるシフト回路を具備する、請求項１０記載のプロセッサ。
【請求項１６】
前記シフト回路は、前記第１の指令と前記第２の指令との両方を実行する場合に、シフト動作を実行するように構成される、請求項１５記載のプロセッサ。
【請求項１７】
第１の指令を実行するように構成された前記第１の回路と第２の命令を実行するように構成された前記第２の回路とは、並列処理のために複製され、並列に実行される、請求項９記載のプロセッサ。
【請求項１８】
さらに、合計された結果を生成するために並列で実行される前記各複製された第１の回路の出力を合計するように構成された合計回路を具備する、請求項１７記載のプロセッサ。
【請求項１９】
さらに、前記合計された結果を記憶するためのスカラーレジスタを具備する、請求項１８記載のプロセッサ。
【請求項２０】
前記スカラーレジスタは累算器である、請求項１９記載のプロセッサ。
【請求項２１】
前記並列処理は、ＳＩＭＤプロセッサを介して実行される、請求項１７記載のプロセッサ。
【請求項２２】
前記第３の入力は、前記第１の指令により生成された積を含む、請求項１記載の方法。
【請求項２３】
前記第１の入力、前記第２の入力、前記第４の入力、前記第５の入力、および前記除数の少なくとも１つは、左調節されるデータを具備し、前記データの最初のビットが、対応するレジスタの最上位桁ビット（ＭＳＢ）に記憶されるように構成され、
前記対応するレジスタにおける未使用のビットはゼロで充填される、請求項１記載の方法。
【請求項２４】
前記予め定められた生成多項式の最初の多項式係数は前記第４の入力から除外される、請求項２３記載の方法。
【請求項２５】
前記第５の入力は、前記第１及び第２の入力の各々の中のビットの数に等しい数を具備する、請求項１記載の方法。
【請求項２６】
前記第５の入力は、前記第１及び第２の入力の各々の中のビットの数よりも１少ない数に等しい数を具備する、請求項１記載の方法。
【請求項２７】
前記第３の入力は、前記第１の指令の予め定められた数の積の合計を含む、請求項１記載の方法。
【請求項２８】
前記第３の値は、前記第１の回路からの積である、請求項９記載のプロセッサ。
【請求項２９】
第１の指令を実行するための手段と、
第２の指令を実行するための手段と、
を具備し、
前記第１の指令を実行するための手段は、
ガロア域のメンバーである多項式の複数の多項式係数を含む第１の入力を受信するための手段と、
ガロア域のメンバーである多項式の複数の多項式係数を含む第２の入力を受信するための手段と、
前記第１及び第２の入力を乗算することによって積を生成するための手段と、
を具備しており、
前記第２の指令を実行するための手段は、
前記第１と第２の入力の乗算の積を含み、多項式の複数の多項式係数を含む第３の入力を受信するための手段と、
前記ガロア域の予め定められた生成多項式を表す複数の多項式係数を含む第４の入力を受信するための手段と、
前記予め定められた生成多項式の長さを含む第５の入力を受信するための手段と、
除数に関して前記第３の入力の係数を生成するための手段と、
を具備し、
前記係数は前記第４の入力を使用して前記第３の入力において複数の演算を行うことにより生成され、前記複数の演算の数は前記第５の入力により限定されるガロア域乗算を行うように構成される、
プロセッサ。
【請求項３０】
前記第３の入力は、前記第１の指令からの積を含む、請求項２９記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＣＦ（２ｍ）におけるガロア域計算の実行に関し、ここで長さｍと生成多項式ｐ（ｘ）の両者はユーザにより特定されることができる。これを実現するため、２つの指令、即ち（１）ｇｆｍｕｌ指令と、（２）ｇｆｎｏｒｍ指令が導入され、それらは共にガロア域の乗算を実行する。
【背景技術】
【０００２】
このＰＣＴ特許出願は2008年５月12日提出の米国暫定特許出願第61/052,482号明細書の優先権を有しており、その内容はここで参考文献とされている。
【０００３】
ガロア域計算はコード化理論及び暗号を含む多くの応用での使用が発見されている。
【０００４】
当業者により認識されることができるように、コード化理論のドメイン内の例にはよく知られたリード−ソロモン（“ＲＳ”）エラー補正コードが含まれている。
【０００５】
ＲＳエラー補正コードは典型的にＲＳ（ｎ，ｋ）として示される。
【０００６】
１例では、ＲＳコードはｍビット符合で動作できる。このようなコードでは、符合器はｋ＊ｍビットをｋデータ符合のデータワードにグループ化し、ここで各符合はｍビットを有する。符合器はその後ここでは「ｎ符合」と呼ばれるｎ＊ｍビットのコードワードを形成するために（同様にｍビットの）ｎ−ｋの付加的なパリティ符合を計算する。ｎの最大のサイズは２ｍ−１である。
【０００７】
通常、ＲＳコードは任意の（ｎ−ｋ）／２の誤った符合を補正することができる。
【０００８】
ＲＳコードの有名な例はＲＳ（255,223）である。ＲＳ（255,223）は８ビット符合を使用し、３２のパリティバイトを２３３バイトのデータブロックに付加し、結果的な２５５バイトコードワードの任意の誤った１６バイトを補正する。この特定のＲＳコードは当業者によく知られているので、さらに詳細はここでは説明しない。
【０００９】
パリティ符合は以下の３つの部分からなる方法を使用して計算され、これについては以下の段落で説明する。
【００１０】
第１に、ｋのｍビット符合はガロア域ＧＦ（２ｍ）にわたって次数ｋ−１の多項式の係数であるように採用されている。ここでの目的では、関数は“ｄ(ｘ)”と呼ばれる。したがって、送信される符合がｄ０…ｄｋ−１であるならば、多項式は次式（１）にしたがって書かれることができる。  
ｄ（ｘ）＝ｄ０＋ｄ１ｘ＋…ｄｋ−１ｘｋ−１      式（１）
第２に、所定のＲＳコードに対しては、生成多項式が選択される。生成多項式は次数２ｍ−１を有する“ｇ（ｘ）”により表されることができる。それ故生成多項式は式（２）により表されることができる。
【００１１】
ｇ（ｘ）＝（ｘ＋ａ）（ｘ＋ａ２）…（ｘ＋ａｎ−ｋ）      式（２）  
式（２）では、“ａ”は当業者により認識されているように「基礎エレメント」と呼ばれるＧＦ（２ｍ）による特別値である。
【００１２】
第３に、パリティ符合は式（３）で表されることができるパリティ式を解くことにより計算される。  
ｐ（ｘ）＝ｄ（ｘ）＊ｘｎ−ｋｍｏｄ  ｇ（ｘ）      式（３）  
この式（３）では、全ての演算は域ＧＦ（２ｍ）で実行される。
【００１３】
前述の説明から認識されることができるように、種々のサイズのガロア域の加算及び乗算はリード−ソロモン符合化に基づいて形成される。加算及び乗算はバールカンプのアルゴリズム（E. Berlecamp, “Bounded distance+1 soft decision Reed-Solomon decoding”,IEEE Trans. Inform. Theory., 42巻、704-720頁、1996年５月）のような種々のＲＳ復号アルゴリズムと、フォーニィアルゴリズム（D. Forney, “Generalized Minimum Distance Decoding”,IEEE Trans. Inform. Theory., IT-12巻、125-131頁、1996年４月）に基づいて形成する。
【００１４】
加算および乗算はガロア域の式の実行に対しては基本的であるので、ガロア域の加算と乗算の実行における迅速さは処理時間の改良と処理効率の増加を助ける。
【００１５】
当業者により認識されることができるように、ガロア域の加算は簡単で、典型的には２つのアーギュメントのＸＯＲである。ガロア域の乗算はしかしながらより複雑であり、特殊化されたハードウェア、または検索表を使用する方法を必要とする。
【００１６】
先に強調して述べたように、処理時間と効率の増加はガロア域処理の分野では望ましい有用な手段である。
【発明の概要】
【００１７】
それ故、本発明は処理効率を増加し処理時間を減少する方法を提供する。
【００１８】
本発明は従来技術に関して説明された幾つかの欠点を解決する方法を提供する。
【００１９】
特に、本発明の１特徴は、第２の指令が後続する第１の指令を実行するガロア域乗算の方法を提供することである。第１の指令はｇｍｆｕｌ指令であってもよく、第２の指令はｇｆｎｏｒｍ指令であってもよい。
【００２０】
本発明の別の特徴は、第１の指令に含まれるための３つの動作と、第２の指令で与えられるための４つの動作を提供する。第１の指令に含まれる３つの動作は第１の変数を含む第１の入力を受信し、第２の変数を含む第２の指令を受信し、第１及び第２の入力を使用してＧＦ（２ｍ）にわたって多項式乗算を行う動作を含んでいる。第２の指令に与えられる４つの動作は、第１の指令からの積である第３の入力を受信し、積において演算する予め定められた生成多項式である第４の入力を受信し、積における予め定められた生成多項式の演算を限定するために予め定められた生成多項式の長さである第５の入力を受信し、長さにより限定された予め定められた生成多項式を介して除数に関して積の係数を計算する処理を含んでいる。
【００２１】
本発明のさらに別の特徴はｇｍｆｕｌ論理とｇｆｎｏｒｍ論理を含むハードウェアブロックを提供する。ｇｍｆｕｌ論理は第１の入力及び第２の入力を含んでいる。ｇｍｆｕｌ論理はＧＦ（２ｍ）にわたって第１と第２の入力を乗算し積を生成するように構成された多項乗算論理も含んでいる。ｇｆｎｏｒｍ論理はｇｍｆｕｌ論理から積を受信する第３の入力と、多項乗算論理からの積において演算する予め定められた発生多項式を受信するための第４の入力と、積における予め定められた生成多項式の演算を限定する予め定められた生成多項式の長さを受けるための第５の入力と、長さにより限定される予め定められた生成多項式を介して除数に関する積の係数を計算するための計算論理とを含んでいる。
【００２２】
当業者により認識されるように、本発明の他の特徴は説明及び図面から明白になるであろう。
【図面の簡単な説明】
【００２３】
【図１】本発明により意図される１方法の第１の部分を示すフロー図である。
【図２】図１に示されている方法の第２の部分を示すフロー図である。
【図３】ｇｍｆｕｌ指令の１つの意図された論理を行うブロック図である。
【図４】ｇｆｎｏｒｍ指令の１つの意図された論理を行うブロック図である。
【図５】計算段論理の１つの意図された構成を与えるブロック図である。
【発明を実施するための形態】
【００２４】
添付図面は本発明の１以上の実施形態を示している。  
本発明を１以上の実施形態と共に説明する。しかしながら本発明はここで説明された実施形態に限定されることは意図しない。反対に、以下の説明で明白になるように、本発明の技術的範囲を逸脱せずに使用されることができる本発明の多数の変形および等価物が存在する。これらの変形および実施形態は本発明の技術的範囲に含まれることを意図している。
【００２５】
本発明に関して、ガロア域乗算（ここでは乗算とも呼ばれる）を実行する目的で、情報の４ピース、即ち（１）「被乗数１」と呼ばれる変数値、（２）「被乗数２」と呼ばれる変数値、（３）生成多項式ｐ（ｘ）、（４）多項式の長さｍが典型的に必要とされる。
【００２６】
これらの４つの変数のうち、最初の３つは典型的にはソースレジスタであるレジスタから入手できる。第４の変数である多項式ｍの長さは指令の一部として符号化されることができ、或いはレジスタ、典型的に中間レジスタから読み取られることができる。
【００２７】
当業者に明白であるように、ほとんどの指令セットアーキテクチャは３つのソースレジスタ指令と１つの中間レジスタ指令を提供することができない。さらに、当業者により認識されているように、ほとんどの指令セットアーキテクチャは４つのソースレジスタ指令を提供できない。代わりに従来技術の指令セットアーキテクチャは必要とされる情報の少なくとも幾らかを提供するために専用の特別目的のレジスタに依存している。
【００２８】
本発明はガロア域アルゴリズム用に操作される変数の複雑なセットに対する簡単な方法に依存する。特に本発明では、ガロア域乗算は２つの別々の指令、即ち（１）ｇｆｍｕｌ指令と、（２）ｇｆｎｏｒｍ指令に分割される。ｇｆｍｕｌ指令はＧＦ（２）にわたってｍビットの多項式乗算を行い、２ｍ−１ビットの積を生成する。一般的な別の変形では、ｇｆｍｕｌ指令はＧＦ（２ｍ）にわたってｍビットの多項式乗算を行う。したがってＧＦ（２）の例ではｍ＝１である。ｇｆｎｏｒｍ指令はｍ＋１ビットの除数に関して２ｍ−１ビット数の係数を計算する。この分割により、ｇｆｍｕｌ指令は２つの入力、即ち（１）被乗数１と、（２）被乗数２を有する。ｇｆｎｏｒｍ指令は３つの入力、即ち（１）積、（２）多項式ｐ（ｘ）、（３）長さｍを有することは明白である。
【００２９】
直ちに明らかになるように、この分割は指令セットに対するポート／符号化要求を減少す。しかしながら、ＧＦ乗算毎に２つの指令をプロセッサに発生させる傾向もある。
【００３０】
理論的展望から、ＧＦ乗算毎に２つの指令をプロセッサに発生させることは従来技術よりも優れた顕著な利点を与えるようには思われない。しかしながら実際に、ｇｆｎｏｒｍ指令はｇｆｍｕｌ指令の発生頻度より非常に少ない。その結果、この分割は従来技術よりも優れた利点を与える。特に、ＧＦ乗算は通常、より大きな減少の一部として行われることが観察される。次式はこの観察を要約している。  
【数１】
0005456766.tif 000002
【００３１】
この式は次式にしたがって書き直されることができる。  
【数２】
0005456766.tif 000003
【００３２】
したがって、ｎのｇｆｍｕｌ指令の２ｍ−１ビット積を共にＸＯＲし、最後に最終的な係数を実行することが可能である。この設計にしたがって指令を実行することにより、係数は各ステップで実行される必要はない。このことはある場合には、処理時間と電力消費の両者に関して大きな処理の節約を与える。
【００３３】
［論理の共有］  
当業者により認識されるように、（他の計算のように）ガロア域アルゴリズムでは、剰余が計算される必要がある可能性がある。本発明はこの計算の簡単化を許容する剰余計算におけるあるパターンを考慮する。本発明はさらに以下説明するように他の数学的パターンも利用する。
【００３４】
（剰余多項式と呼ばれる）剰余を計算するために、現在の剰余の先行ビットが１であるか否かに基づいて、除数の一連の減算（即ちＸＯＲ）が行われる。積を計算するために他の乗数の対応するビットが１であるか否かに基づいて、被乗数のうちの１つの一連の加算（即ちＸＯＲ）が行われる。
【００３５】
１例として、１０１１００と０１１０１１の乗算を考慮する。乗算が長い形態で書かれるならば、乗算は以下のように現れる。  
【数３】
0005456766.tif 000004
【００３６】
この乗算は正規順序とは反対の順序で書かれていることに注意する。この例では、乗算は右ではなく左から開始して書かれている。
【００３７】
この例を念頭に置くと、１１００１１０１１１０×１００１００１の係数の計算例が与えられる。ここでは、除算は以下のように書かれる。
【数４】
0005456766.tif 000005
【００３８】
これらの２つの計算はマトリックスの類似性を指摘するためにこの方法で提示されている。直ぐに明らかになるように、右への数は部分和である。
【００３９】
前述の２つの計算を参照すると、１つの違いは除算ＸＯＲがｍ＋１ビット数を生成し、乗算ＸＯＲがｍビット数を生成するという事実に存在する。しかしながら、この違いを補償することが可能である。生成多項式は先行ビットが常に「１」である特性を有している。それ故生成多項式の特性を利用することができる。例えば（１）部分和が１であるならば、剰余多項式の最低のｍビットを有する剰余ビットをＸＯＲし、（２）先行ビットをゼロにするアルゴリズムによりｍ−ビットのＸＯＲを使用することが考えられる。
【００４０】
２つの計算の主な違いはＸＯＲを実行するか否かの選択である。乗算の場合、被乗数のｉ番目の最も左側のビットが使用される。剰余の場合、現在の剰余の最も左側のビットが使用される。
【００４１】
［左調節／ゼロ充填］  
本発明は計算の簡潔化を考慮する。簡単にする目的で、被乗数、積、剰余多項式を含めた全ての関与される数がレジスタの上位桁ビット（“ＭＳＢ”）に記憶されると仮定する。さらに、レジスタ中の全ての未使用のビットはゼロにされると仮定する。結果として、数１０１１０１が１６ビットレジスタに記憶されるならば、レジスタ内容は１０１１＿０１００＿００００＿０００になる。これは厳格に必要なことではないが、先行ディジットを識別するために任意の付加的な指令を実行（または任意の付加的な作業を実行）することが必要にならないために、剰余を計算するのに必要な論理を簡単にする。
【００４２】
全ての数にはゼロが埋め込まれているので、ｍはｇｆｍｕｌ演算への入力として必要とされない。ｇｍｆｕｌ演算はＸＯＲステップの最大数を行い、多項式の真の長さとハードウェアによりサポートされる最大の多項式の長さとの間の任意のビットはゼロであるので、付加的なＸＯＲステップはその結果に０を与える。
【００４３】
ｇｆｎｏｒｍ演算では、２ｍ−１ビットの多項式をｍビットの多項式に減少するためにｍ−１のＸＯＲステップを行う必要がある。
【００４４】
［擬似コード］  
コードセグメント＃１は以下、最大８の統合されたｇｆｎｏｒｍ／ｇｆｍｕｌ指令を実行するように意図された擬似コードの１実施形態を提示する。ｇｆｍｕｌ指令への入力はａとｂであり、結果がｔであり、ｇｆｎｏｒｍ指令への入力がａ、ｂ、Ｎであり、結果がｔであると仮定する。係数は左が最初である（即ち０はレジスタのＭＳＢである）。
【数５】
0005456766.tif 000006
【００４５】
基礎とする論理は同一であり、制御のみが異なることが明白であろう。
【００４６】
［拡張］
前述の基本演算は幾つかの異なる方法で変更されることができる。例えば基本的な例に付加されることができ演算は（１）ｇｆｍａｃ指令、（２）ベクトル、（３）ベクトル減算を含んでいる。ｇｆｍａｃ指令は３つの入力による演算である。ｇｆｍａｃ指令はその入力のうちの２つの積を計算し、第３の入力との積をＸＯＲ処理し、それによって結果を生成する。ベクトルはベクトル／ＳＩＭＤプロセッサである。ベクトルに対しては、ｇｆｍｕｌ／ｇｆｎｏｒｍ／ｇｆｍａｃ指令のベクトル／ＳＩＭＤ等価を加算し、多数のこれらの指令を並列に行うことは容易である。ベクトル減算は減算装置を備えたベクトル／ＳＩＭＤプロセッサで実行される。ここで、多数のｇｆｍｕｌ演算を並列に行い、その結果を累算器のようなスカラターゲットへ書込む前に全ての結果を共にＸＯＲすることが意図される。
【００４７】
本発明を方法の実施形態およびハードウェアブロックの実施形態と共に説明し、この両者はここに含まれている。この説明と共に、図１−５を参照する。
【００４８】
本発明の方法の１実施形態はガロア域乗算を意図している。参照符合10が与えられている方法は図１、２に示されている。
【００４９】
方法10は12で開始する。その後、方法は14で第１の指令を実行する。第１の指令の実行14は３つの動作を含んでおり、その第１の動作は16で第１の入力を受信する。第１の入力は第１の変数を含んでいる、第１の指令の実行14は18で第２の入力の受信も含んでいる。第２の入力は第２の変数を含むことができる。第１の指令の実行は付加的に20で、第１及び第２の入力を使用してＧＦ（２ｍ）にわたって多項式乗算を行うことを含んでいる。多項式の実行20の結果として、第１の指令の実行14は積を生成する。この積は図２によって説明される24での第２の指令の実行のための入力の１つ（即ち第３の入力）になる。図１は転移ブロック22を含んでおり、これは方法10が図２で継続することを示している。
【００５０】
図２は方法10の残りを詳細に示している。方法10は24で第２の指令の実行に継続する。図２で詳細に示されているように、第２の指令を構成する４つの動作が存在する。４つの動作の最初の動作は26であり、ここでは方法10は第１の指令からの積である第３の入力を受信する。方法10は28で、第４の入力を受信し、それは積において演算するための予め定められた生成多項式である。30で、方法10は積において予め定められた生成多項式の演算を限定するために予め定められた生成多項式の長さである第５の入力を受信する。32で、方法10はその長さにより限定された予め定められた生成多項式を介して除数に関する積の係数を計算する。方法10は34で終了する。
【００５１】
方法10における１つの意図された変形では、第１の指令はｇｆｍｕｌ指令を含み、第２の指令はｇｆｎｏｒｍ指令を含んでいる。
【００５２】
方法10における別の意図された変形では、第１の変数は被乗数１を含み、第２の変数は被乗数２を含んでいる。
【００５３】
方法10は長さが整数ｍであり、積が長さにおいて２ｍ−１ビットであるように実行されることができるとも考えられる。この方法と一致して、多項式の乗算はｍビットの乗算であってもよい。このようにして、除数は長さにおいてｍ＋１ビットであることができる。１つの別の実施形態では、長さは整数ｍ−１である。
【００５４】
前述したように、方法10は14で第１の指令を実行し、第２の指令が第１の指令よりも頻度が少なく実行されるように、24で第２の指令を実行する。これはステップ14の多数の実行結果が第３の入力としてステップ24へ送られる前に共にＸＯＲされるときに生じる。
【００５５】
本発明のさらに別の意図される実施形態では、方法10は合計が第１の指令の予め定められた数ｎの積からなる演算を含んでいる。この意図される実施形態では、最終的な係数は第１の指令の予め定められた数の積を合計した後に実行されることができる。ｎはこの実施形態では整数であることは明白である。
【００５６】
前述したように、方法10は第１及び第２の入力の値が対応するレジスタに上位桁ビットで記憶されることが意図される。
【００５７】
さらに、第２の指令24は現在の剰余の先行ビットが１に等しいか否かを評価することにより変更されることができる。現在の剰余の先行ビットが１に等しいならば、第２の指令24は除数の少なくとも１つの減算を実行する。結果として、第２の指令24は剰余を生成できる。剰余の値は対応するレジスタに上位桁ビットで記憶されることができる。
【００５８】
代わりに、方法10は第１の入力と第２の入力との比較を含んでいてもよい。比較後、方法10は第１又は第２の入力の一方の予め定められた対応するビットが１に等しいか否かを評価できる。第１又は第２の入力の一方の予め定められた対応するビットが１に等しいならば、方法10は第１又は第２の入力の少なくとも１つで少なくとも１つの加算を行うことができる。その結果として、方法10は結果的な積を生成する。結果的な積の値は対応するレジスタに上位桁ビットで記憶されることができる。
【００５９】
１つの意図された変形では、対応するレジスタの全ての未使用のビットがゼロにされることができる。別の意図される変形では、第１の変数、第２の変数、長さ、積、除数の少なくとも１つは左シフトされたデータを含むことができる。
【００６０】
予め定められた生成多項式の先行ビットが第４の入力から実行され、それによってｍビットの長さを有する第４の変数を生成するように方法10を変更することも考えられる。
【００６１】
図３と図４を参照すると、本発明はまたハードウェアブロック36と38も含んでいる。ハードウェアブロック36はｇｆｍｕｌ論理の１つの意図された実施形態を示している。ハードウェアブロック38はｇｆｎｏｒｍ論理の１つの意図された実施形態を提供する。これらの２つの実施形態はこの明細書の技術的範囲内に入るように意図された多くのハードウェアブロックのうちの２つ36、38だけを示しているものである。
【００６２】
図３に示されているように、ハードウェアブロック36はＮ個の計算段ブロック48、50、52を含んでいる。これらの各計算段ブロック48、50、52は先の計算段ブロックにより生成された中間値を読取り、次の計算段ブロックにより消費されるための中間値を書込む。計算段ブロックにより消費される値は図面では46、54、56、58により示されている。値58はハードウェアブロック36の出力である。各計算段ブロック48、50、52は加算された値40と長さ値44を読取る。ハードウェアブロック36は付加的なソフトウェア指令をもつかもたずに特別な指令を実行するように構成されている半導体コンポーネントのようなプロセッサであると考えられる。当業者に認識されるように、これは広範囲の装置を含むことができる。
【００６３】
図３の参照を続けると、この図面はブロックがどのようにｇｍｆｕｌ論理を実行するように接続されているかを示している。これは第１の入力40と第２の入力42を含んでいる。第１の入力40は被乗数１の変数であってもよい第１の変数を含む信号を受信するコンポーネントまたは接続である。第２の入力42は被乗数２の変数のような第２の変数を受信するコンポーネントまたは接続であることができる。
【００６４】
図３に示されているように、加算された値44はＮ個のゼロが先頭に付されている第１の入力値に設定される。加算された値44は第１の計算段ブロック48と第２の計算段ブロック50と第３の計算段ブロック52に与えられる。さらに、中間値46は第１の計算段ブロック48に与えられる。中間値46はこの図では０に設定されている。中間値46はハードウェアブロック36により必要とされるとき０以外の値に設定されることができることに注意すべきである。
【００６５】
図３から明らかなように、各計算段48、50、52は第２の入力38の少なくとも１ビットを読取る。換言すると、第２の入力38はデータを各計算段48、50、52へ提供する。長さ値44はＮに設定され、これは計算段の数に等しい。図３に示されているように計算段は０…Ｎ−１に符合付けされている。ｉ番目の段は上位桁ビットで開始するｉ番目のビットを読取る。したがって計算段＃０  48はＭＳＢビット60を読取り、計算段＃１  50は次のＭＳＢビット62を読取り、最後の段52はＮ番目の上位桁ビット64を読取る。
【００６６】
ｇｆｎｏｒｍ論理用のハードウェアブロック38を図解している図４を参照する。直ぐに明らかになるように、このハードウェアブロック38と図３に示されているハードウェアブロック36には幾つかの類似性が存在する。
【００６７】
図４では、計算段は66、68、70と符合を付されている。ｇｆｎｏｒｍ論理ブロック38は、被除数（通常はｇｆｍｕｌの積）を保持する第３の入力72と、除数（通常は生成多項式）である第４の入力74と、生成多項式の長さよりも少ない通常は２のステップ数である第５の入力76とを含んでいる。加算された値78は第４の入力74からコピーされる。初期中間値80は第３の入力からコピーされる。長さ値82は第５の入力76からコピーされる。また示されているように、中間値84は計算段＃１  68へ入力される。同様に、中間値86は計算段＃Ｎ−１  70に入力される。出力は参照符合88で示されている。
【００６８】
図５は計算段ブロック48、50、52、66、68、70の１つの意図された実施形態の詳細を与えている、図３および４に示されているように、各計算段ブロック48、50、52、66、68、70は加数90、中間値92、長さ94を読取る。さらにｇｆｍｕｌ用に構成されるとき、計算段ブロックは加算ビット96を読取る。中間値はハードウェアブロック98で１だけ左シフトされ、値がシフトされた値100を生じる。この値はその後ＸＯＲブロック102へ与えられ、シフトされた値102を加数90とＸＯＲする。先行指標論理装置104は第１の選択値106を生成する。ｇｆｎｏｒｍ指令用に構成されるとき、第１の選択値106は中間入力92のＭＳＢ107である。ｇｆｍｕｌ指令用に構成されるとき、第１の選択値106は加算ビット96である。第１の選択値106が１であるならば、第１のマルチプレクサ108はＸＯＲのＸＯＲ処理の結果110を選択する。
【００６９】
そうでなければ、第１のマルチプレクサ108はシフトされた値100を選択し、第１の多重化された結果112を生成する。長さ比較論理114は第２の選択値116を生成する。ｉが与えられた長さ94よりも小さいならば、第２の選択値116はｉ番目の計算段では１である。第２の選択ｍｕｘ118は第２の選択値116が１であるならば、第１のｍｕｘ結果112を選択し、そうでなければ中間値92を選択し、出力中間値120を生成する。当業者により認識されるように、その他の変形も考えられる。
【００７０】
前述の説明から明らかなように、図３、４、５に記載されているハードウェアブロックは並列処理のために複製されることができる。その場合には、これらの複製は相互に並列に動作される。この実施形態に関して、任意の１つのハードウェアブロックは合計された結果を生成するために並列のｇｆｍｕｌ論理の個々の１つからの結果を合計するための合計論理手段を含むことができる。スカラーレジスタは合計された結果を記憶するために使用されることができる。スカラーレジスタは累算器であってもよい。並列処理はＳＩＭＤプロセッサを介して行われることができる。
【００７１】
前述したように、本発明は前述の特定の実施形態だけに限定されることを意図していない。反対に、当業者は本発明の技術的範囲を逸脱せずに使用される実施形態に対して多くの等価物及び変形が存在することを容易に認識するであろう。これらの変形および等価物は本発明の技術的範囲内に含まれることを意図されている。
【図１】
0005456766.tif 000007
【図２】
0005456766.tif 000008
【図３】
0005456766.tif 000009
【図４】
0005456766.tif 000010
【図５】
0005456766.tif 000011