JPH0243218B2 - - Google Patents

Info

Publication number
JPH0243218B2
JPH0243218B2 JP58172346A JP17234683A JPH0243218B2 JP H0243218 B2 JPH0243218 B2 JP H0243218B2 JP 58172346 A JP58172346 A JP 58172346A JP 17234683 A JP17234683 A JP 17234683A JP H0243218 B2 JPH0243218 B2 JP H0243218B2
Authority
JP
Japan
Prior art keywords
register
hashing
bit
hash
circuit
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.)
Expired - Lifetime
Application number
JP58172346A
Other languages
English (en)
Other versions
JPS59125437A (ja
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 filed Critical
Publication of JPS59125437A publication Critical patent/JPS59125437A/ja
Publication of JPH0243218B2 publication Critical patent/JPH0243218B2/ja
Granted legal-status Critical Current

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90—Details of database functions independent of the retrieved data types
    • G06F16/901—Indexing; Data structures therefor; Storage structures
    • G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】 〔技術分野〕 本発明は、デイジタル計算機において「ハツシ
ユ」演算を行なうハードウエア装置に関する。
〔背景技術〕
ハツシユ関数の基本的な目的は、未知のそして
おそらく歪んだ分布の数値をより一様な分布の、
しばしばより小さな範囲内の数値に変換する事で
ある。ハツシユ関数の1つの応用は連想記憶の分
野にある。そこでは人物の名前又は口座番号等の
識別子がハツシユ関数によつて計算機のメモリの
アドレスに変換される。このアドレスは、その識
別子に関係するデータを探索するための開始点と
して用いられる。連想記憶が効率的に働くために
は、例え識別子が高度の相関を有する時でも、ハ
ツシユ関数によつて与えられるアドレスが可能な
アドレス上に比較的均一に拡がる事が重要であ
る。ハツシユ関数には、オペレーテイング・シス
テム、コンパイラ、インタープリタ、データ・ベ
ース管理、暗号方式、単語綴り検査、誤り訂正検
出方式等の他の多くの用途が存在する。
ハツシユ関数の上記の用途に加えて、もう1つ
の非常に重要な用途は、主記憶アドレスを含むハ
ツシユ・インデツクス表によつて、仮想アドレス
を主記憶の実アドレスに効率的に変換する事に関
するものである。ハツシユ関数は、データ処理シ
ステム中の不均一な分布の仮想アドレスから一様
な分布のハツシユ・インデツクス表のエントリ・
アドレスを生成するために与えられる。但し、ハ
ツシユ・インデツクス表の大きさは可変であり、
主記憶の大きさに基づいている。もし、適当なハ
ツシユ関数が選ばれるならば、ハツシユ・インデ
ツクス表は最小限の大きさに保たれ、非常に効率
的に使用されるであろう。
ハツシユ関数は普通、ソフトウエア(即ち計算
機プログラム)で実現されるが、本発明によれば
ハツシユ演算を実行する非常に用途の広い回路が
提供される。ハツシングを実行するハードウエア
を製作する2つの重要な利点が存在する。第1に
ハツシユ演算が相当スピード・アツプできる。第
2に非常に巧妙なハツシング手続即ちアルゴリズ
ムを経済的に使用できる。
ハツシングをハードウエアで実行する事の潜在
的欠点は、選択された特定の関数は特定のデータ
の集合に対してはうまく働かない可能性がある事
である。
即ちハツシユすべき目的物が特定の分布を有す
る時、できの悪い分布のハツシユ出力が生じるこ
とである。従つて、多くの従来技術のシステムで
は、ハードウエア又は固定式のハツシングは入力
データが多少は既知の固定された特性を有する場
合にのみ用いられてきた。逆により精巧なハツシ
ングが必要な時は、より複雑で時間のかかるハツ
シング・アルゴリズムが、ソフトウエアの形で実
施されてきた。その場合ハツシング演算の実行に
必要な時間は大幅に増加する。
前述のように、メモリ・アドレスを生成する目
的でハツシング演算を行なう事は従来周知であ
る。同様にガロア体の乗算も周知の数学的手続き
である。下記の文献はその代表的な先行技術であ
る。
米国特許第4215402号は、あるアドレス指定動
作が種々の型のハツシング動作を経て行なわれる
大規模な計算機メモリ・システムを開示してい
る。しかしながら、ハツシングを行なうのにガロ
ア体の乗算を用いる事は、なされていない。
米国特許第4162480号はガロア体計算機を開示
している。しかしながらこの文献は本発明の回路
にいかなる類似性を有する回路構造も開示してい
ない。またこの文献は、ハツシユ定数の種々のシ
フトの予備計算と組み合せた別個のローデイング
動作は開示していない。
米国特許第4037093号及び同第3805037号は共に
特殊なガロア体回路を開示しているが、それらは
ハツシング動作に関係もなければ、又本発明と類
似した回路構成を開示しているわけでもない。
〔発明の開示〕
本発明の目的は、理論的限界に近い優秀な結果
を与え且つ多くの応用に関してソフトウエアによ
つては実用上実現不可能な非常に効率的なハツシ
ユ手続のハードウエア的実現を提供する事であ
る。
本発明の1態様によれば、ハツシユ定数を変化
させる事によつて容易に変更可能なハツシユ機構
が提供される。従つて大幅に異なつた分布特性を
有する数(ハツシユすべき対象)の入力ストリー
ムのために非常に小さな遅延でシステムを調整し
て回路の性能を大幅に変更する事ができる。
また本発明の1態様によれば、大規模集積回路
の形に容易に実現でき且つ非常に小さな遅延で動
作するハツシング回路が提供される。
本発明の目的は、Nビツトのハツシユ定数の制
御の下でハツシユすべきNビツトの対象(オペラ
ンド)に高度に並列的なガロア体乗算を行なう事
のできるハツシユ回路によつて達成される。この
回路は、ハツシユすべきNビツトの対象を記憶す
るためのNビツトの標準的なシフトレジスタ及び
ハツシユ定数を記憶するためのNビツトのレジス
タを備えている。また、ハツシユ動作の結果を累
算するために通常のNビツトの出力レジスタが用
いられる。さらにハツシユ定数を巡回させたもの
を記憶するためにK個のNビツト・フイードバツ
ク・シフトレジスタ(FSR)が用いられる。上
記シフトレジスタの内容は上記対象レジスタの選
択されたビツトの制御の下に排他的論理和を取ら
れ、中間的部分積を形成する。この動作はN/K
回継続し、この時そのハツシング対象は完全に評
価され、結果レジスタ中に置かれる。
この回路の重要な特徴は、ハツシング動作の終
了時に、(i=1、2…K−1に関して)レジス
タFSRiの最終内容をレジスタFSR(i+1)にコ
ピーしハツシユ定数レジスタの内容をレジスタ
FSR1にコピーする事によつてハツシユ定数の
種々のシフト結果がフイードバツク・シフトレジ
スタに再ロードされる事である。
このハツシユ回路のもう1つの重要な特徴は、
ローデイング動作の間にハツシユ定数の種々のシ
フトが事実上事前に計算され、フイードバツク・
シフトレジスタの動作に関する限りは実際のハツ
シユ動作と殆んど同一の動作系列によつてフイー
ドバツク・レジスタにロードされる事である。こ
の事前の計算を行なう事によつてハツシユ定数は
事実上部分的に乗算され、後続する高度に並列的
なハツシング動作のための適当な形式でフイード
バツク・シフトレジスタにロードされる。
〔発明を実施するための最良の形態〕
本発明を技術思想によれば、ハードウエア的に
実現されたハツシユ回路の前記の欠点は、本明細
書中で「選択」動作と呼ぶ動作によつてプログラ
ムがそのハツシユ関数(従つて分布特性)を変化
させる事を可能にする設計により回避される。選
択動作において、新しいハツシユ定数が容易且つ
迅速に供給される。この事は、出力従つてハツシ
ユされた数値の分布を変化させる効果を有する。
この特徴はどの従来技術のハードウエア・ハツシ
ユ回路にも存在する事が知られていない。入力値
にかかわりなく、ハツシユ関数によつて形成され
た数値の分布が均等に分布する高い確率を持つ事
を保証するために、本発明はユニバーサル・ハツ
シングの技術を用いる。ユニバーサル・ハツシン
グの基本的な考えは、どのようなハツシユすべき
値の集合に関しても、選択動作で用いた特定のハ
ツシング定数によつて指定されるハツシユ関数の
可能な選択の殆んど全てが比較的均等な出力値の
分布を生じる事である。従つて任意のランダムに
選ばれたハツシユ関数又はハツシユ定数が良く働
く可能性は非常に高い。ユニバーサル・ハツシン
グの基礎概念についてのより深い説明について
は、J.L.Carter and M.N.Weaman、“Universal
Clashes of Hash Functions”、Journal of
Computer and System Sciences、Vol.18、
pp.143〜154(april1979)を参照されたい。
ここで開示されるハツシユ回路は集積回路チツ
プ技術に適合し、少量の制御ハードウエアを用い
て2つの動作を実行するように設計される。
その2つの動作は「選択(A)」及び「ハツシユ
(B)」である。但し引数A及びBは第1図のAレジ
スタ2に記憶されているハツシユ定数及びBレジ
スタ4に記憶されているハツシング対象を意味す
る。「選択(A)」は引数Aによつて指定された関数
(ハツシユ関数)が、次のハツシユ定数がシステ
ムに導入され適当な「選択」機能が実行されるま
で後続する全てのハツシユ動作のために使われる
べき事を指定する。「選択」機能はどのような計
算結果も与えないが、同じハツシユ定数を用いる
全ての後続するハツシユ動作をスピード・アツプ
するための、ハードウエアによつて実行される予
備計算を行なう事を可能にする。「ハツシユ(B)」
動作は、最も最近の「選択」動作によつて指定さ
れたハツシユ関数Aによつて引数Bをハツシング
する手続きである。
以下の説明中で、Nはワード当りのビツト数を
表わし、ハツシユ定数A、ハツシユ対象B及びハ
ツシユ動作によつて得られた数値は全て同様にN
ビツトである。この実施例ではNビツトの結果が
ある応用にとつて非常に有用であるとして望まれ
ていると仮定する。しかしながら他の用途特にア
ドレス・ハツシングについては、ハツシユ動作に
よつて得られる値は0、1、2…2M−1の範囲内
にある事が望ましいかもしれない。但しMはNよ
りも小さい。もしそうであれば、所望の目的のた
めに所望のMビツトが利用可能となるように、結
果をN−Mビツト右又は左にシフトする事ができ
る。Mビツトの任意の他の連続的な又は不連続な
部分集合を等しい信頼性で同様に選択できる事に
注意されたい。任意の入力について良好な分布の
結果が期待されるユニバーサル・ハツシングの利
点は、シフト動作又は他の向うかのビツト選択手
続きの後にも保持される。
本発明のハツシユ回路はガロア体GF(2N)にお
ける乗算の動作を実行する。第1図を参照する
と、「選択」動作が装置のAレジスタ2に乗数を
セツトし、ある予備計算の行なわれる事を可能に
する。Bレジスタ4にロードされたハツシユ動作
の対象は被乗数として用いられる。ガロア体の演
算を行なうハードウエア自体は新規ではない。し
かし予備計算によつて乗算動作の高速化をはかり
且つ乗数即ちハツシユ定数が変化する事を可能に
する方法は従来知られていない。
ここで開示されたハツシユ回路において、体の
要素の乗算の通常の2進数の乗算によく似た方式
で行なわれる。乗算は一時に1ビツトづつ左にシ
フトされ、現在評価されている被乗数のビツトが
1か0かに依存して、上記乗数の値が中間合計に
加算されたり又は加算されなかつたりする。ガロ
ア体の演算と通常の演算との間の相違は第1に加
算が排他的OR(XOR)動作によつて行なわれる
事、第2に動作の進行と共に被乗算のビツト値を
事実上変化させる適切に選択されたフイードバツ
ク・シフトレジスタによつてシフト動作が行なわ
れなければならない事である。当然にこのシフト
レジスタは通常のシフトレジスタとは大幅に異な
つている。
このハツシユ回路の重要な特徴は、被乗数のい
くつかのビツトの評価を並列的に行なう事によつ
てガロア体の乗算が高速化される事である。上記
ビツトの数は、フイードバツク・シフトレジスタ
(FSR)の数によつて決定される。
この動作を効率化するため、被乗数の選択され
たビツトと乗数との適当な整合を得るために乗数
の予備計算を行なう必要がある。
以前に述べたように、ここで開示するハツシユ
回路はLSI又はVLSIの形で実現できる。従つて
レジスタ、データ経路、組み合せ論理等の全ては
数個のLSI又は1個のVLSIチツプ上に容易に配
置できる。
以下の説明中で次の用語が用いられる。Nは機
械ワードのビツト数を表わす。従つてそれはハツ
シユ定数(被乗数)を保持するAレジスタ及びハ
ツシユ対象(乗数)を保持するBレジスタ中のビ
ツト数と同じである。同様にフイードバツク・シ
フトレジスタ1〜K及び結果レジスタも全てNビ
ツト幅である。第1図に示したANDゲート10
〜16は、第1の入力としてフイードバツク・シ
フトレジスタからのNビツト及び第2の入力とし
てAND機能を制御するBレジスタからの適当な
ビツトを有するN個のANDゲートである。パリ
テイ回路18は回路の入力端子に奇数個の「1」
が生じた時には論理「1」が発生し、回路入力端
子に偶数個の「1」が生じた時は論理「0」を発
生するN個のパリテイ回路の集合体である。N個
のパリテイ回路の各々は、K個のフイードバツ
ク・シフトレジスタの各々及び結果レジスタ6か
ら入力を受け取る。従つてi番目のパリテイ回路
はK個のフイードバツク・シフトレジスタの各々
からi番目のビツト及び結果レジスタからi番目
のビツトを受け取る。パリテイ回路18の出力
は、Nビツトから成り、結果レジスタ6に入力さ
れその以前の内容を置き換える。
数Kは設計の大きさ及び速度に影響を与えるパ
ラメータである。Kの値がより大きくなるにつれ
てより多くの部品がチツプ上に必要になるが、乗
算動作における並行処理の程度が大きくなるため
ハツシユ動作はより速くなる。特に第1図を参照
すると、数Kは設計で用いられているフイードバ
ツク・シフトレジスタの数によつて決定される事
が容易にわかる。各シフトレジスタはハツシユ対
象のN/Kビツトを評価するので、1実施例では
KはNの約数であるべきである。言い換えると、
N=32であれば、Kは2、4、6、8又は16の値
を取り得る。
第1図に示した実施例の全てのレジスタはNビ
ツト・レジスタである。ハツシユ定数を記憶する
Aレジスタ2並びにハツシユ演算の中間結果及び
最終結果を受け取る結果レジスタ6は、並列式に
アクセスできる単純なレジスタである。Bレジス
タ4は、K本の出力線を有しシフト信号の制御の
下に左から右へシフトするシフトレジスタであ
る。フイードバツク・シフトレジスタFSR1〜
FSRK(8a〜8d)はその名の通り、シフト信
号が与えられた時に右から左へシフトするシフト
レジスタである。さらに、フイードバツク・シフ
トレジスタは左端ビツトを右端ビツトに戻し、そ
してある他のビツト位置を変化させる。そのよう
なシフトレジスタの設計は公知であり、特に
Berlekamp著の前掲書中に詳細に説明されてい
る。
大きさNの適当なフイードバツク・シフトレジ
スタを設計するために、最初に、ガロア体GF(2)
上のN次の既約多項式を選択する。w.w.
Peterson and E.J.Weldon、Jr.“Error
Correcting Codes”、MIT Press、Cambridge
Mass.(1971)には種々のNについてそのような
多項式の表が示されている。与えられたNの値に
付き多項式をどのように選択してもよいが、下記
の説明から明らかなように非0の係数の数が最小
のものが最も実用的である。
FSRはNビツトのシフトレジスタで構成され、
その位置は右から左へ0、1、2…N−1と番号
付けられている。シフト動作はi番目のビツトを
(i+1)番目のビツトに移動させ且つ(N−1)
番目の位置のビツトをFSRの他のビツトに排他
的論理和する事から成る。排他的論理和の行なわ
れるビツト位置は、(最高次の係数を除いて)非
0の係数を持つ(選ばれた既約多項式の)項の指
数に相当するビツト位置である。例えば多項式が
X6+X3+1の場合、ビツト位置5がビツト位置
3及び0にフイードバツクされる。ビツト位置3
の新しい値は上述のようにビツト位置2及び5か
ら導き出される。これらの2つの値は排他的OR
動作によつて組み合される。しかしながらビツト
位置0は、その位置に来る他のビツトが存在しな
いので、排他的ORは不要である。
第2図は、フイードバツク・ビツトを受け取る
FSRのビツト位置の1つを示す図である。2つ
の隣接ビツト位置も示されている。(排他的OR
の起きない0番目のビツト位置以外の)ビツト位
置に入力されたフイードバツク・ビツトは、フイ
ードバツク位置の右隣のビツトとの排他的ORを
取られ、その結果の値は排他的OR回路の出力に
接続されたラツチに記憶される。そのような回路
の動作は周知のものである。
Bレジスタにおいて、その出力は0番目、
(N/K)番目、(2N/K)番目…のビツト位置
から取り出される事に注意されたい。N=6及び
K=2の場合を示す第3A図〜第3F図及び第4
A図、第4B図では、Bレジスタ4からの出力は
上述のように0番目及び3番目のビツト位置から
取り出されている。
Aレジスタ2及び全てのフイードバツク・シフ
トレジスタ8a〜8dは並列にロード及びアンロ
ードできる事にも注意されたい。その回路は第1
図に示されていないが、後述の「選択」動作の例
を示す第4A図及び第4B図のデータ・フロー図
に機械的に示されている。そのようなレジスタは
周知のものである。この機能により、Aレジスタ
2からFSR1(8a)へ、FSR1(8a)から
FSR2(8b)へ等、完全なNビツトを迅速に
転送できる。
第1図において、太い線はNビツトのバスを表
わし、ANDゲート10〜16の各々は実際は並
列に配置されたANDゲートの集合体である。そ
れらはRSRの各ビツト毎に設けられている。
第1図の論理回路の機能を簡潔に説明するため
に、シフト動作がちようど完了し、その結果Bレ
ジスタ4が右に1ビツトシフトされフイードバツ
ク・シフトレジスタの全てが左へ1ビツトシフト
され、Nビツト・ケーブル30〜36に現われて
いる値は現在のFSR1〜FSRKの内容を表わして
いると仮定する。信号線20〜26に接続された
Bレジスタの4ビツト位置の2進値が論理「1」
の場合、対応するANDゲート10〜16が活性
化され、対応するFSRの内容がバス30〜36
に出力される。逆にBレジスタのビツト位置が論
理「0」を含む場合、信号線20〜26に出力さ
れたその値は、対応するANDゲート10〜16
を禁止し、バス30〜36の出力を全「0」にす
る。パリテイ回路18内のN個の論理回路の各々
には付加的な即ち(K+1)番目の入力が加えら
れ、結果レジスタ6に新しい結果が与えられる。
次に、この基本的な回路動作を反復的に用いて
ハツシユ動作を行なう方法を説明する。
ハツシユ動作においてNビツトの対象オペラン
ドがBレジスタ4にロードされる。動作が開始す
る前に、Aレジスタ2及びFSR1(8a)の両
者は(先行する選択動作によつてセツトされた)
ハツシユ定数Aを含み、残りのFSRの各々はそ
の直前のレジスタ中の値にN/Kフイードバツ
ク・シフトを行なつた結果を含んでいる。ハツシ
ユ(B)動作が開始されると、Nビツトの対象BがB
レジスタ4に入力され、結果レジスタ6は全0に
セツトされる。結果レジスタ及びFSRの内容は
パリテイ回路18で選択的に組み合される。但し
各FSRの内容は、対応するBレジスタのビツト
が論理「1」である場合にのみパリテイ回路18
にゲートされる。次にシフト信号がシステムに加
えられ、FSRは(フイードバツクを伴なつて)
その内容を1ビツト、シフトさせ同様にBレジス
タも1ビツトのシフトを行なう。Bレジスタ、
FSRレジスタ及び結果レジスタの内容はANDゲ
ート10〜16及びパリテイ回路18によつて組
み合され、結果レジスタに新しい値を与える。
FSR及び結果レジスタの内容をBレジスタの内
容の制御の下に論理的に組み合せる工程の後に
は、合計N/K回のBレジスタ及びFSRの1ビ
ツト・シフトが続き、この時Bレジスタ中の対象
全体が評価される。この時、結果レジスタはハツ
シユ動作の所望の結果A*Bを含む。
この時、次のハツシユ動作を実行できるよう
に、ハツシユ定数Aを適当にシフトした値を有す
る初期設定状態に全部のFSRをリセツトする必
要がある。これは、FSR1が非回転のハツシユ
定数Aを含みFSR2がFSR1の以前の値を含む
ように全部のFSR及びAレジスタを下向きに1
ビツト・シフトする事によつて行なわれる。
FSRKの以前の内容は単に拾てられる。ハツシユ
動作の間、ハツシユ定数であるAレジスタの内容
は変化しない事に注意されたい。
下記のプログラム様の動作の記述は、上述のハ
ツシユ動作を要約するものである。この動作は3
つの基本的なステツプを含み、ステツプ2はステ
ツプ3に進む前にN/K回反復されるループであ
る。このチヤートの意味は明白であり特に説明は
要しないであろう。
(1) Bレジスタにハツシユ対象データを、結果レ
ジスタに全0をロードする。
(2) N/K回、反復する: −Bレジスタの適当なビツトによつてされた
FSRを結果レジスタと共にXORし、結果レジ
スタに記憶する。
−Bレジスタ及びFSRを1ビツト・シフト
する。
(3) 全部のFSR及びAレジスタを1レジスタ位
置下に移動させる。
次に選択動作について説明する。選択動作にお
いては、後続するハツシユ動作が最小限の遅延及
び最大限の並列性で実行されるように、Aレジス
タに新しいハツシユ定数Aをロードし、ハツシユ
定数Aの種々のシフト値を事実上予備計算して
種々のFSRにロードする。ハツシユ定数AはA
レジスタにロードされ、次に完全なハツシユ動作
がK−1回実行される。各ハツシユ動作はN/K
回のシフト動作及びそれに続くFSR及びAレジ
スタの下向きの完全なシフトから成る事を想起さ
れたい。従つて、選択動作の終了時には、全ての
FSRに正しい回数だけ巡回したハツシユ定数の
正しい変形がロードされており、具体的はハツシ
ユ対象に対してハツシユ動作を行なう事が可能と
なる。
選択動作はFSRレジスタ及びAレジスタの内
容に対してだけ作用する。Bレジスタ及び結果レ
ジスタの内容は選択動作では何の重要な役割りも
演じない。ANDゲート10〜16及びパリテイ
回路18も同様である。事実、それらは機能的に
は省略してもよく、第4A図及び第4B図では説
明を簡単にするため省略されている。
下記に示すのは、前記のハツシユ動作のプログ
ラム様のリストに類似した選択動作の動作シーケ
ンスの簡単なリストである。明らかに選択動作に
は3つの基本的なステツプがあり、3番目のステ
ツプはK−1回反復されるループを含む。このル
ープの内容は「ハツシユ動作」と呼ばれている事
に注意されたい。この場合、プログラミング技術
において通常そうであるように、この記述は前記
の完全なハツシユ動作を呼び出してその完全なハ
ツシユ動作を合計K−1回反復させる。
(1) Aレジスタにハツシユ定数Aをロードする。
(2) AレジスタからFSR1にロードする。
(3) 下記の動作をK−1回反復する。
−ハツシユ動作 本発明の範囲から逸脱する事なく、これらの動
作に種々の変更を加える事ができる。例えばハツ
シユ手続中でステツプ3は再配置可能であり、ス
テツプ2とステツプ3を交換する事ができる。同
様に選択動作のステツプ2は完全に末消する事が
できる。その他にも同様の変更を加える事が可能
である。
第3A図〜第3F図及び第4A図、第4B図に
は、実際に具体的な2進数値を用いて本発明の動
作が説明されている。
第3A図には、Bレジスタ4にバツシユ対象を
ロードし、結果レジスタ6を初期設定した後の状
態が示されている。Aレジスタ2には既にハツシ
ユ定数がロードされている。第3B図は最初の中
間結果を得た後の状態を示す。第3C図は最初の
シフト動作を行なつた後の状態を示す。第3D図
は、2番目の中間結果を累算し、2番目のシフト
を行なつた後の状態を示す。第3E図は3番目の
中間結果を累算し、3番目のシフトを行なつた後
の状態を示す。第3F図は最終状態を示し、各
FSRはその上側のレジスタの内容をロードされ、
第3A図のFSRの内容と同一になつている。こ
の状態では、Bレジスタに新しいハツシユ対象を
ロードし次のハツシユ動作を行なう事ができる。
第4A図及び第4B図において、全ての排機能
的な、従つて不必要な回路は図面から省略し、そ
の代りにAレジスタ及びFSRを接続する2本の
Nビツトのケーブル40及び42を示している。
この経路によつてAレジスタ及びFSRの内容は、
ハツシユ回路の選択動作中に各ハツシユ動作の最
終ステツプが行なわれる時に、順に下向きに転送
される。第4A図はAレジスタ2にハツシユ定数
をロードし、その値をFSR1(8a)にコピー
した後の状態を示す。レジスタの内容が空欄にな
つているのは、任意の値を意味する。第4B図は
最初のハツシユ動作を行なつた後の状態を示す。
この場合K=2なので、選択動作を完了するのに
1回のハツシユ動作しか必要でない。
第3A図〜第3F図及び第4A図、第4B図に
示した単純なシステムは説明のためのものであつ
て、実際は32程度のNの値が普通であり、Kの典
型的な値はおそらく4又は8であろう。さらに、
所定の値のNに関して2以上の既約多項式がおそ
らく存在し、どのシフトレジスタの構成を用いて
もよいが、最適の構成は(回路のコストを下げる
ように)フイードバツク点が最小のものであろ
う。
さらに、他の細部のハードウエアの変更、例え
ばシフトの相対的方向並びに上位ビツト及び下位
ビツトの指定等は任意であり設計的事項である。
但し完全なガロア体の乗算が行なわれるようにし
なければならない。
第2の変更は、KをNの約数以外の数に選ぶ事
であろう。その場合、N/Kよりも大きな最小の
整数をLとすると、1回のハツシユ演算を行なう
ためにL回のシフトが行なわれる。Bレジスタか
らはLビツト毎にANDゲートへの制御入力が取
り出される。この時、Bレジスタをシフトする際
にその上位ビツトに対して0が入力される。
第3の変更は、選択動作の実行中にハツシユ動
作が行なわれた回数をカウントするためにBレジ
スタを使う事である。
【図面の簡単な説明】
第1図は、本発明のハツシユ回路の図、第2図
は、フイードバツク・シフトレジスタの一部分の
図、第3A図乃至第3F図は、単純化したハツシ
ユ回路を用いてハツシユ動作を説明する図、第4
A図及び第4B図は、単純化したハツシユ回路を
用いて選択動作を説明する図である。 2……Aレジスタ、4……Bレジスタ、6……
結果レジスタ、8a〜8d……フイードバツク・
シフトレジスタ(FSR)、18……パリテイ回
路。

Claims (1)

    【特許請求の範囲】
  1. 1 Nビツトのハツシユ定数の関数としてNビツ
    トのオペランドにハツシユ演算を行なうハツシユ
    回路であつて、ハツシユすべきオペランドを受け
    取るシフトレジスタと、ハツシユ定数を受け取り
    記憶するレジスタと、ハツシユ演算の結果を累算
    する結果レジスタと、複数個のフイードバツク・
    シフトレジスタと、上記フイードバツク・シフト
    レジスタの隣接したものに関して所定の数のビツ
    ト位置だけ上記ハツシユ定数をシフトさせたもの
    を上記フイードバツク・シフトレジスタの各々に
    ロードする手段と、上記フイードバツク・シフト
    レジスタの内容を上記オペランド・シフトレジス
    タ中の対応するビツトの2進状態及び直前の累算
    結果の関数として累算する手段と、上記フイード
    バツク・シフトレジスタ全部及び上記オペラン
    ド・シフトレジスタをシフトさせ中間結果を上記
    所定の回数累算する手段とを含むハツシユ回路。
JP58172346A 1982-12-30 1983-09-20 ハツシユ回路 Granted JPS59125437A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/454,912 US4538240A (en) 1982-12-30 1982-12-30 Method and apparatus for performing hashing operations using Galois field multiplication
US454912 1999-12-02

Publications (2)

Publication Number Publication Date
JPS59125437A JPS59125437A (ja) 1984-07-19
JPH0243218B2 true JPH0243218B2 (ja) 1990-09-27

Family

ID=23806582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP58172346A Granted JPS59125437A (ja) 1982-12-30 1983-09-20 ハツシユ回路

Country Status (4)

Country Link
US (1) US4538240A (ja)
EP (1) EP0113032B1 (ja)
JP (1) JPS59125437A (ja)
DE (1) DE3377389D1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2137782B (en) * 1983-03-24 1986-11-26 Int Computers Ltd Data transformation circuits
JPH0638264B2 (ja) * 1986-11-28 1994-05-18 日本電信電話株式会社 ハツシユ回路
US4891781A (en) * 1987-03-04 1990-01-02 Cylink Corporation Modulo arithmetic processor chip
DE3855497T2 (de) * 1988-10-18 1997-03-13 Philips Electronics Nv Datenverarbeitungsgerät zur Berechnung eines multiplikativ invertierten Elements eines endigen Körpers
US5003307A (en) * 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
GB9001724D0 (en) * 1990-01-25 1990-03-28 Int Computers Ltd Hashing apparatus and method
US5204966A (en) * 1990-03-09 1993-04-20 Digital Equipment Corporation System for controlling access to a secure system by verifying acceptability of proposed password by using hashing and group of unacceptable passwords
US5210710A (en) * 1990-10-17 1993-05-11 Cylink Corporation Modulo arithmetic processor chip
US5406278A (en) * 1992-02-28 1995-04-11 Intersecting Concepts, Inc. Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5353024A (en) * 1992-05-01 1994-10-04 Intersecting Concepts, Inc. Method for data compression having an improved encoding algorithm which utilizes a token stacking technique
US6434662B1 (en) * 1999-11-02 2002-08-13 Juniper Networks, Inc. System and method for searching an associative memory utilizing first and second hash functions
US7302582B2 (en) 2000-08-21 2007-11-27 United States Postal Service Delivery point validation system
US7168025B1 (en) * 2001-10-11 2007-01-23 Fuzzyfind Corporation Method of and system for searching a data dictionary with fault tolerant indexing
US7085988B1 (en) * 2002-04-08 2006-08-01 Maxtor Corporation Hashing system utilizing error correction coding techniques
US7984018B2 (en) * 2005-04-18 2011-07-19 Microsoft Corporation Efficient point-to-multipoint data reconciliation
US8363827B2 (en) * 2007-12-03 2013-01-29 Intel Corporation Method and apparatus for generic multi-stage nested hash processing
US8649509B2 (en) * 2008-12-18 2014-02-11 At&T Intellectual Property I, L.P. Systems and computer program products for generating and verifying randomized hash values
US9195607B1 (en) * 2012-05-15 2015-11-24 Inphi Corporation Content matching using a multi-hash function for replacement of a faulty memory cell
US9646105B2 (en) * 2012-11-08 2017-05-09 Texas Instruments Incorporated Reduced complexity hashing
US9065632B2 (en) * 2013-02-20 2015-06-23 Qualcomm Incorporated Message authentication using a universal hash function computed with carryless multiplication

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3311888A (en) * 1963-04-12 1967-03-28 Ibm Method and apparatus for addressing a memory
US4037093A (en) * 1975-12-29 1977-07-19 Honeywell Information Systems, Inc. Matrix multiplier in GF(2m)
GB1597218A (en) * 1976-12-11 1981-09-03 Nat Res Dev Apparatus for electronic encypherment of digital data
US4251875A (en) * 1979-02-12 1981-02-17 Sperry Corporation Sequential Galois multiplication in GF(2n) with GF(2m) Galois multiplication gates
JPS57155667A (en) * 1981-03-23 1982-09-25 Sony Corp Arithmetic circuit of galois matter

Also Published As

Publication number Publication date
US4538240A (en) 1985-08-27
EP0113032A2 (en) 1984-07-11
EP0113032B1 (en) 1988-07-13
JPS59125437A (ja) 1984-07-19
DE3377389D1 (en) 1988-08-18
EP0113032A3 (en) 1985-10-30

Similar Documents

Publication Publication Date Title
EP0113032B1 (en) An apparatus for performing hashing operations using galois field multiplication
US10545865B2 (en) Systems and methods for implementing low-latency lookup circuits using sparse hash functions
US9223720B2 (en) Systems and methods for rapidly generating suitable pairs of hash functions
US9384145B2 (en) Systems and methods for implementing dynamically configurable perfect hash tables
US6912683B2 (en) Method, apparatus, and product for use in generating CRC and other remainder based codes
JP3970337B2 (ja) 大規模データ・ブロックのためのハードウェア最適化リード・ソロモン・デコーダ
Zhang et al. High-speed architectures for parallel long BCH encoders
US4037093A (en) Matrix multiplier in GF(2m)
US5946473A (en) LFSR implementation using split-table lookup
WO2008005592A1 (en) Computation of a mod (2 n - 1)
CN114389752A (zh) 循环冗余校验码生成方法、装置、设备、介质和程序产品
US20020069232A1 (en) Method and system for generating a transform
Wei et al. A novel residue arithmetic hardware algorithm using a signed-digit number representation
KR100302847B1 (ko) 유한필드에서의긴다항식제산장치
WO2003096180A2 (en) Fast multiplication circuits
US10644723B2 (en) Component-efficient cyclic-redundancy-check-code-computation circuit
Höreth Implementation of a multiple-domain decision diagram package
US20050246406A9 (en) Emod a fast modulus calculation for computer systems
US5448510A (en) Method and apparatus for producing the reciprocal of an arbitrary element in a finite field
Ishikawa et al. Stochastic number duplicators based on bit re-arrangement using randomized bit streams
Bakoev Fast computing the algebraic degree of Boolean functions
US6574771B1 (en) Galios field processor having dual parallel data path for Bose Chaudhuri Hocquenghem/Reed-Solomon decoder
US7032162B1 (en) Polynomial expander for generating coefficients of a polynomial from roots of the polynomial
Hendawi et al. Binary Search‐Based Division (BSBD): A Technique for Efficient Division in Hardware
KR20030083292A (ko) 해시 함수를 사용하는 암호화 가속 장치 및 방법