明 細 書
アドレス生成器
技術分野
[0001] 本発明は、入力ベクトルに対し対応する固有アドレスを出力するアドレス生成器に 関し、特に、書き換えが容易で且つ小面積で実装可能なアドレス生成器に関する。 背景技術
[0002] k個(kは自然数)の異なる 2値ベクトルの集合を登録ベクトル集合(set of registered vectors)とする。登録ベクトル集合の各要素と一致する入力に対して 1から kまでの 固有アドレス(intrinsic address)に単射し、それ以外の入力に対して 0となる関数をァ ドレス生成関数(address generation flmction)とレ、う。また、アドレス生成関数の演算 を行う回路をアドレス生成器(address generator)という。アドレス生成器に入力される ベクトルを、入力べクトノレ(input vector)という。入力ベクトル力 次元べタトルであるァ ドレス生成関数を、 n入力のアドレス生成関数という。また、 n入力のアドレス生成関数 の演算を行う回路を n入力のアドレス生成器という。
[0003] アドレス生成器は、連想メモリ又は内容検索メモリ (Content Addressable Memory :
CAM)とも呼ばれ、パターン 'マッチング、インターネットのルータ、プロセッサのキヤ ッシュ、 TLB (Translation Lookaside Buffer)、データ圧縮、データベースのァクセラレ ータ、ニューラルネット、メモリパッチなど幅広い分野において利用されている。
[0004] アドレス生成器の機能をソフトウェアで実現することも可能である力 ソフトウェアで 実現したものは大幅に低速である。そのため、専用のハードウェア(半導体メモリ)を 用いてアドレス生成器を実現することが多い。以下、ハードウェアで構成された従来 のアドレス生成器にっレ、て説明する。
[0005] 図 9は、従来のアドレス生成器(CAM)の基本構成の一例を表すブロック図である( 特許文献 1参照)。アドレス生成器 100は、比較レジスタ 101、検索ビット線ドライバ 1 02、 k個のワード W〜W、 k個の一致センス回路 MSC〜MSC、 k個の一致フラグ
1 k l k
レジスタ MFR〜MFR、及びプライオリティ 'エンコーダ (優先度付符号化回路) PE
1 k
を備えている。
[0006] 比較レジスタ 101は、 nビットの入力ベクトルを格納するレジスタである。検索ビット 線ドライバ 102は、比較レジスタ 101の各ビットを検索ビット線上にドライブする。各ヮ ード W〜Wは、それぞれ nビットの CAMセルを備えている。
1 k
[0007] 図 10は、図 9の CAMセルの構成回路図である。図 10に例示した CAMセル 103 は、不一致検出型のものである。 CAMセル 103は、メモリ'セル 104及び一致比較 回路 105から構成される。メモリ'セル 104は、 1ビットのデータを記憶する SRAM構 成のメモリ'セルである。図 10において Dがデータ、 DNが反転データを表す。一致 比較回路 105は、メモリ'セル 104に記憶された 1ビットのデータと検索ビット線対 SL , SLN上にドライブされる入力ベクトルとを比較し、その一致比較結果を一致線 ML 上に出力する。
[0008] 一致比較回路 105は、 3つの nMOSトランジスタ(以下「nM〇S」という。) 106, 10 7, 108を備えている。 nMOS 106, 107は、検索ビット線 SLNと検索ビット線 SLとの 間に直列に接続されている。 nMOS 106, 107のゲートは、それぞれ、メモリ'セル 1 04のデータ D,反転データ DNに接続されている。 nMOS 108は、一致線 MLとダラ ンドとの間に接続されてレヽる。 nMOS 108のゲートは、 nMOS 106, 107の間のノ ード 109に接続されている。
[0009] まず、検索を行う前に、アドレス生成器 100のそれぞれのワード W〜Wに、検索対
1 k
象である登録ベクトルが記憶される。各ワード内の各 CAMセル 103において、メモリ 'セル 104へのデータの書き込み及びメモリ'セル 104からのデータの読み出しは、 通常の SRAMと同様にして行われる。
[0010] 検索時には、まず、比較レジスタ 101に入力ベクトルが格納される。入力ベクトルの 各のビットは、検索ビット線ドライバ 102により、各々対応する検索ビット線上にドライ ブされる。
[0011] 各々のワード W〜Wでは、各 CAMセル 103に予め記憶されている登録べクトノレ
1 k
と検索ビット線上にドライブされた入力ベクトルとの一致検索が同時(並歹 [J)に実行さ れ、その結果が一致線 ML〜ML上に出力される。これらの検索結果は、それぞれ
1 k
一致センス回路 MSC〜MSCに入力される。各一致センス回路 MSC〜MSCは
1 k l k
、各検索結果を増幅し、一致センス出力として一致センス出力線 MT〜MTに出力
する。各一致センス出力は、一致フラグレジスタ MFR〜MFRに格納され、一致フ
1 k
ラグ出力として一致フラグ出力出力線 MF〜MFに出力される。一致フラグは、 ' 1 '
1 k
力 S「一致あり」、 '0'が「一致なし」を表すものとする。
[0012] 各一致フラグ出力は、プライオリティ 'エンコーダ PEに入力される。プライオリティ' エンコーダ PEでは、所定の優先順位付けに従って、一致が検出されたワードの中か ら最優先順位のワードのアドレス(最優先一致アドレス: HMA)を選択し出力する。各 ワードの優先順位は、ワード Wが最も高 Wに向力 に従って順次優先順位が低
1 k
くなるものとする。
[0013] 尚、各ワード W〜W内の各 CAMセル 103における一致検索は、次のようにして
1 k
実行される。
[0014] まず、初期化動作を実行する。初期化動作では、検索ビット線対 SL, SLNがともに
'L' (= '0' )とされる。一方、メモリ'セル 104に記憶されているデータに応じて、一致 比較回路 105の nMOS 106, 107のうち一方がオン状態、他方がオフ状態となる。 従って、 nMOS 106, 107のうちオン状態の方を介して、両者の間のノード 109のレ ベルが' L'となり、 nMOS 108はオフ状態となる。この状態で、一致線 MLが 'H' (= ' 1 ' )状態にプリチャージされる。尚、一致線 MLは 'H'が「一致」を表す。
[0015] 次に、検索ビット線を介して比較レジスタ 101に記憶された入力ベクトルの各ビット が各 CAMセル 103に入力される。これにより、入力ベクトル Sに応じて、検索ビット線 対 SL, SLNの何れか一方が 'H'、他方が 'L'となる。
[0016] メモリ'セル 104に記憶されているデータ Dと入力べクトノレ Sとが一致する場合、ノー ド 109のレベルは' L'であり、 nMOS 108はオフ状態に保持される。
[0017] 一方、データ Dと入力ベクトル Sとが一致しない場合、ノード 109のレベルは 'H,と なり、 nMOS 108はオン状態になる。これにより、一致線 MLはデイスチャージされて 'L'状態となる。
[0018] nビットの CAMセル 103からなる CAMワードの一致線 MLは、各 CAMセル 103の nMOS 108がパラレルに接続されたワイヤード〇R回路を構成している。従って、 1ヮ ードを構成する nビットの CAMセル 103のすべてにおいて一致が検出された場合に 限り、一致線 MLは 'H' (「一致」)の状態に保持される。一方、 1ビットでも CAMセル
103で不一致が検出されると、一致線 MLは' L' (「不一致」)の状態となる。
[0019] 例えば、検索の結果、一致フラグレジスタ MFR〜MFRに、一致フラグとして' 0' ,
1 k
Ί ' , Ί ' , 'Ο' ,■· · , Ί ' , '0'が格納されたとする。この場合、ワード W , W ,■· · , W
2 3 で一致が検出されている。従って、プライオリティ 'エンコーダ ΡΕは、最も優先順 k 1
位が高いワード Wのアドレスを HMAとして出力する。また、一致フラグレジスタ MFR
2
に格納された一致フラグを' 0'にクリアすることで、その次に優先順位が高いワード
2
Wのアドレスを HMAとして出力することができる。以下同様にして、一致が検出され
3
たワードのアドレスを順次出力することができる。
[0020] 図 11は、図 9の CAMセルの別の例の構成回路図である。図 11に示す CAMセル 103 'は一致検出型のものであり、図 10と同様、 SRAM構成のメモリ'セル 104及び 一致比較回路 105を備えている。 CAMセル 103 'は、図 10の CAMセル 103におい て、一致比較回路 105の nMOS 108の接続が異なる。図 11の nMOS 108は、一 致線 MLと一致線 MLとの間に接続されている。 nMOS 108のゲートは、 nMOS 1 a b
06, 107の間のノード 109に接続されている。
[0021] CAMセル 103 'では、検索時には、初期化動作として、ビット線対 SL, SLNが共 に 'H'とされる。一方、メモリ'セル 104に記憶されているデータに応じて、一致比較 回路 105の nMOS 106, 107のうち一方がオン状態、他方がオフ状態となる。従つ て、 nMOS 106, 107のうちオン状態の方を介して、両者の間のノード 109のレベル 力 S 'H'となり、 nMOS 108はオン状態となる。この状態で、一致線 MLの一端が 'H' (= ' 1 ' )状態にプリチャージされる。尚、一致線 MLは 'H'が「不一致」を表す。
[0022] nビットの CAMセル 103,力 なる CAMワードの一致線 MLは、各 CAMセノレ 103, の nMOS 108がシリアルに接続された AND回路を構成する。従って、各々の CAM セルの一致線 ML, MLは、各々の CAMセル 103,の nMOS 108を介して 'H,に a b
プリチャージされる。
[0023] その後、検索ビット線を介して比較レジスタ 101に記憶された入力ベクトルの各ビッ トが各 CAMセル 103'に入力される。これにより、入力ベクトル Sに応じて、検索ビット 線対 SL, SLNの何れか一方が 'H'、他方が 'L'となる。
[0024] メモリ'セル 104に記憶されているデータ Dと入力ベクトル Sとが一致する場合、ノー
ド 109のレベルは 'H'であり、 nMOS 108はオン状態に保持される。
[0025] 一方、データ Dと入力ベクトル Sとが一致しない場合、ノード 109のレベルは' L,とな り、 nMOS 108はオフ状態になる。
[0026] CAMワードの nビットの CAMセル 103 'のすベての状態が確定した後、一致線 M
Lの一方の端部からデイスチャージを開始し、他方の端部で一致比較結果を判定す る。このとき、 1ビットでも不一致の CAMセル 103 'がある場合には、一致比較結果は
'H'、すなわち、不一致の状態に保持される。一方、すべての CAMセル 103 'で一 致が検出された場合のみ、一致比較結果は' L'、すなわち一致状態となる。
特許文献 1 :特開 2004— 295967号公報
特許文献 2 :特願 2003— 389264号明細書
特許文献 3:特開 2004— 258799号公報
特許文献 4 :米国特許第 5, 063, 573号公報
非特許文献 1 :菅野卓雄監修,香山晋編, 「超高速デバイス ·シリーズ 2 超高速 MO Sデバイス」,初版,培風館, 1986年 2月, pp. 324- 325.
非特許文献 2 :電子情報通信学会編, 「LSIハンドブック」,第 1版,オーム社, 1994 年 11月, pp. 523 - 525.
特 3午文献 3: Kostas Pagiamtzis and Ali bheikholeslami, A Low-Power Content _A ddressable Memory (CAM) Using Pipelined Hierarchical Search Scheme", IEEE Jour nal of Solid-State Circuits, VoL39, No.9, Sept.2004, pp.1512— 1519.
非特許文献 4 : T.Sasao, M.Matsuura, and Y.Iguchi, "A cascade realization of multi-o utput function for reconfigurable hardware , International Workshop on Logic and S ynthesis (IWLS01), Lake Tahoe, CA, June 12-15, 2001, pp.225-230.
非特許文献 5 : T.Sasao and M.Matsuura, "BDD representation for incompletely sped fied multiple-output logic functions and its applications to functional decomposition,
" Design Autonmation Conference, June 2005, (pp.373-378).
発明の開示
発明が解決しょうとする課題
[0027] n入力のアドレス生成関数は、通常、出力値が非零となる入力ベクトルの数 kが、 n
次元ベクトルのすべての組み合わせの数 2nに比べて十分に小さレ、、いわゆる疎な論 理関数、 sparse logic function)である。
[0028] 例えば、 n=128, k=40000の登録ベクトル集合について考える。この場合、入力 ベクトルの取り得る場合の数に対する登録ベクトルの数の割合は、 40000/2128 =1. 17549 X 10— 34である。この登録ベクトル集合に対するアドレス生成器を実現する最も 単純な方法は、真理値表である。しかし、このような真理値表を直接メモリに記憶する のは、メモリが大きくなりすぎるため現実的ではない。
[0029] また、上述の従来のアドレス生成器や 2段論理回路, PLA (Programmable Logic Ar ray)でも実現可能である。しかし、この登録ベクトル集合では、 LSIにした場合、チッ プ面積や消費電力が大きくなりすぎるという問題がある。また、上述の従来のアドレス 生成器は、 RAMに比べると 1ビットあたりの価格(ビットコスト)が高価となる。
[0030] 例えば、上記従来のアドレス生成器は、 RAMに比べると、並列に検索可能である ため高速であるが、デバイスの構成は複雑となる。そのため、このアドレス生成器の 1 ビットあたりの価格(ビットコスト)は、 RAMに比べる高価なものになる。
[0031] また、 1ビットあたりの消費電力が RAMに比べて遙かに大きい(非特許文献 3参照) 。これは、上で説明したように、すべての CAMセルを同時にアクセスするためである 。そのため、 1ビットあたりの消費電力は、通常の RAMの数十倍程度にもなる。
[0032] そこで、本発明の目的は、検索の高速性を維持しつつも、消費電力を抑え且つデ ノ イスの構造を簡単化して小面積で実装することが可能なアドレス生成器を提供す ることにある。
課題を解決するための手段
[0033] 本発明の構成を説明する前に、まず、本明細書において使用する用語を定義し、 本発明の基本原理について説明する。
[0034] 〔1〕用語の定義及びいくつかの定理
〔定義 1〕(アドレス生成関数)
関数 f(X):Bn→{0, 1, ···, k}(B={0, 1}, ke自然数)において、 k個の異なる登 録ベクトル ^ΕΒη(ί=1, 2, ···, k)に対して ^)=1(1=1, 2, ···, k)が成立し、それ 以外の(2n— k)個の入力ベクトル aに対しては、 f (a) =0が成立するとき、 f(X)を重
み kのアドレス生成関数 (address generation f nction)とレ、う。アドレス生成関数は、 k 個の異なる 2値ベクトルに対して、 1力 kまでの固有アドレスを生成する。
(定義終わり)
本明細書においては、 kの値は入力べタトノレの組み合わせ総数 2nに比べて十分に 小さい (k< < 2n)と仮定する。
[0035] 〔定義 2〕(登録ベクトル,登録ベクトル表)
k個の nビットのベクトルの集合を考える。このベクトルの集合を登録ベクトル集合と レ、い、登録ベクトル集合に属する各ベクトルを登録ベクトルという。登録ベクトル集合 に属するすべての登録ベクトルに 1から kまでの整数を 1対 1に対応させる表を登録べ タトル表という。
(定義終わり)
[0036] (例 1)
(表 1)は、 4ビットの 7個の登録ベクトルからなる登録ベクトル表を示す。この登録べ タトル表に対応するアドレス生成関数を (表 2)に示す。いずれも、登録ベクトルに一 致した入力ベクトルに対応するアドレスを 3ビットの数(例えば、 ' 001 ' )として出力す る。入力ベクトルと一致する登録ベクトルが登録ベクトル表の中にない場合には、 ' 00 0 'を出力する。
(例終わり)
[0037] [表 1]
表 1: 登録べク トル表
[0038] [表 2]
表 2: アドレス生成関数
*4 ^'3 X'2 X\ h /()
0 0 0 0 0 0 0
0 0 0 I 1 1 i
0 0 1 0 0 0 1
0 0 1 1 1 0 1
0 1 0 0 0 0 0
0 1 0 1 1 0 0
0 1 1 0 0 0 0
0 1 1 1 0 1 0
1 0 0 0 0 0 0
1 0 0 1 0 0 0
1 0 1 0 0 0 0
1 0 1 1 1 1 0
1 1 0 0 0 0 0
1 1 0 1 0 1 1
1 1 1 0 0 0 0
1 1 1 1 0 0 0
[0039] 〔定義 3〕(分割)
入力ベクトルを X=(x , χ ,…, χ )とする。 Xの変数の集合を {X}で表す。 {X } U {
1 2 η 1
X } = {Χ}1 {Χ } Π {X } = φのとき、 Χ=(Χ, X )を Xの分割(partition)という。こ
2 1 2 1 2
こで、 Φは空集合を表す。
(定義終わり)
[0040] 〔定義 4〕(分解表,基本分解表,列複雑度)
完全定義関数 f(X): Bn→Bq(B={0, 1}, Χ= (χ , X , ■··, X ), n, qe自然数)が
1 2 n
与えられているとする。 (X , X )を Xの分割とする。 Xの次元(変数の個数)を d(X)と
L H
記す。関数 f(X)及び Xの分割 Χ= (Χ , X )に対して、以下の(1)〜(3)の条件を満
L H
たす表を fの分解表という。
(1) 2nL列 2nH行の表である。ここで、 n =d(X ), n =d(X )とする。
L L H H
(2)各行,各列に 2進符号のラベルを持ち、列及び行のラベルの集合は、それぞれ n , n ビットのすべてのパターンを要素とする。
L H
(3)表の各要素が、その要素に対応する列及び行のラベルの組み合わせ (X , X )
に対する fの真理値 f (X, X )である。
Xを束縛変数、 X を自由変数という。分解表の異なる列パターンの個数を分解表
L "
の列列複複雑度といい、 βと記す。分解表の特別な場合として、 X =Χ, X = φの場合も 考える。
ままたた、、関数 fの分解表のうちで、 X = (X, X,…, X )且つ X = (X , X
, X )となるものを基本分解表という c
(定義終わり)
[0041] (例 2)
(表 3)の分解表では、 n = 3, n = 2, μ : 2である。
(例終わり)
[0042] [表 3]
表 3: 分解表の例
X L
0 0 0 0 1 1 1 1 χ3
0 0 1 1 0 0 1 1 ¾2
0 1 0 1 0 1 0 1 2:1
0 0 0 1 0 0 0 1 1 0
0 1 1 1 1 1 1 1 1 1
Η 1 0 1 0 1 丄 1 0 0 1
1 1 0 1 0 0 0 1 1 0
a¾ , 4
[0043] 〔定義 5〕(C尺度)
ベクトル Xの変数の順序を X= (X , X , ■· · , X )としたとき、論理関数 f (X)の基本分
1 2 n
解表の列複雑度の最大値を fの C尺度とレ、う。
(定義終わり)
[0044] (例 3)
f =x X Vx X Vx Xの C尺度は 3であるが、 f =x X Vx X Vx Xの C尺度は 8
1 1 2 3 4 5 6 2 1 5 2 6 3 4 である。
(例終わり)
[0045] 分解表の列複雑度は、 MTBDD (多端子二分決定グラフ)の幅に等しい。従って、 論理関数の C尺度は、与えられた入力変数の順における MTBDDの幅の最大値に
等しい。与えられた論理関数 f(x ,χ , · · ·,χ )に対して、 C尺度は容易に計算でき、一意
1 n
的に定まる。後述するように、 C尺度が小さい関数は、 LUTカスケードで効率的に実 現可能である。従って、 C尺度は、論理関数を LUTカスケードで実現する際の複雑さ の尺度となる。
[0046] 〔補題 1〕
重み kの論理関数 fの C尺度は高々 k + 1である。
(補題終わり)
[0047] 〔定理 1〕
与えられた関数 f (X)に対して、 Xを分解表の自由変数、 X を束縛変数とし、 μを
L Η
分解表の列複雑度とする。このとき、関数 fは図 1に示す回路で実現可能である。この 場合、 2つのブロック H, Gの間を結ぶ信号線数は高々
[0048] [数 1]
である。
(定理終わり)
[0049] 〔定義 6〕(関数分解)
一つの関数 f (X) = f (X, X )を分解し 2つの関数 G, H (但し、 f (X) = (G (H (X )
L H 1 L
), X ) )として実現することを関数分解という。関数分解により得られる関数 G, Hを分
H
解の部分関数という。
(定義終わり)
[0050] 図 1において、 2つのブロック間を結ぶ信号線数が X中の変数の個数よりも少ない
L
とき、関数を実現するためのメモリ量を削減できる可能性がある。与えられた関数を繰 り返し関数分解することにより、図 2に示すような LUTカスケードが得られる。
[0051] 〔定義 7〕(LUTカスケード)
一つの関数 f (X)に対して関数分解を繰り返し行って得られる部分関数を G, G ,
1 2
…, Gと記す。
s
X― (X[ 7 2 …, Xs) 各部分関数 G, G ,■· · , Gをルックアップ'テーブル (LUT)で実現し、各 LUTを信
1 2 s
号線でカスケード接続したものを LUTカスケードという。各部分関数 G, G ,■· · , G
1 2 s を表す各 LUTをセルという。隣接するセル間を接続する信号線をレイルという。
(定義終わり)
[0053] 〔定理 2〕
C尺度が/ の論理関数は、入力数が高々 q+ 1で、出力数が qのセルから構成され た LUTカスケードで実現可能である。ここで、
である。
(定理終わり)
[0055] 〔定理 3〕
関数 fを実現する LUTカスケードを考える。レ、ま nを外部入力数、 sをセル数、 qを最 大レイル数 (セル間の信号線数)、 pをセルの最大入力数、および μを関数 fの C尺度 とする。
[0056] 國
Ό >「1ο μ] h 1
が成立するとき、以下の関係を満たす関数 fを実現する LUTカスケードが存在する。
[0057] [¾5]
n― q
s <
ν - <ι
(定理終わり)
[0058] 重みが kのアドレス生成関数は、レイル数が
[0059] ほ女 6コ
「log2(fc + l)]
の LUTカスケードで実現可能である。し力し、 kの値が大きいときは、単一のカスケ一 ドでは、セルが大きくなり過ぎ、実現困難となる。例えば、 k=40000のとき、 17入力 1 6出力のセルが必要となる。この場合、ベクトルの集合をレ、くつかに分解して、各べク トルの集合を別々のカスケードで実現すると、必要メモリ量を削減することが可能であ る。しかし、この場合には、複数のカスケードの出力を纏めるエンコーダが必要となる
[0060] 〔2〕本発明の原理
(1) 1個のハッシュ 'メモリを使用する方法(ノ、イブリツド法(Hybrid Method) ) 重み kのアドレス生成関数 f (X , X )において、入力変数 (X
1 2 1, X )を (Y , X )と一
2 1 2 次変換し、アドレス空間をハッシュ化する。ハッシュ化した後の関数
[0061] ほ女 7] fix 1, 2 ) の分解表(図 3)を考える。尚、以下では
[0062] [¾8]
のようにに」が付された表記をテキスト上では「Γ」のように記す。 Υの変数 (束縛変数
1
)の個数を Ρとする。非零要素が分解表で一様に分布していると仮定すると、 2p>kの とき、分解表は、平均すると各列に高々 1個の非零要素を持つ。いま、簡単のために 、分解表は各列に高々 1個の非零要素を持つと仮定する。次に、
[0063] [数 9]
(Yi) max MY^ b) (n
2は X
2の |g素数 とし、 h" (Y )をハッシュ 'メモリ(Hash memory) 3'で実現する(図 5参照)。
[0064] 関数 Γの入力は(Y, X )であるのに対し、 h" (Y )は Yの値のみで Γの値を予測
1 2 1 1
するので、 h" (Y )の値は Γとは異なる可能性がある。そこで、 h (Y )の値が正しい
1 1
か否かを補助メモリ(auxiliary (AUX) memory) 4'により検查する。補助メモリ 4'の入 力数は
[0065] ほ女 10] =「1( 2( + 1)1 ( で、出力数は nである(実際には、 n_pまで削減できる)。補助メモリ 4'の各アドレスに 、対応する登録ベクトルを格納しておく。補助メモリ 4'の出力と入力の検索パターン が等しい場合には、ハッシュ 'メモリ 3'は、正しい値を出力しており、ハッシュ 'メモリ 3' の出力値をそのまま出力する。等しくない場合は、ハッシュ 'メモリ 3'は Γと異なった 値を出力しているので、 0を出力する。
[0066] ある列に、非零要素が 2個以上ある場合 (ハッシュ衝突がある場合)には、上記の方 法は利用できないため、 Γ(Υ , X )を
1 2
[0067] [数 11]
f1(Y X2} -f2{Y1,X2) = 0 と関数分解し、関数 Γ (Y , X )の分解表の各列では非零要素が高々 1個となるよう
1 1 2
にする。また、関数 Γ (Y , X ) =f (X , X )に関しては、 LUTカスケードや再構成
2 1 2 2 1 2
可能 PLA (例えば、特許文献 4参照)等の再構成可能論理回路で実現する。ここで、 f (X, X )は、 Γ (Y , X )のハッシュ化された束縛変数 Yを束縛変数 Xに変換し
2 1 2 2 1 2 1 1 て得られる関数を表す。
尚、関数 I (Y, X )を王アドレス生成関数 master address generation function)と
1 1 2
レ、つ。 た、関数 f (X, Xリ ¾rg[|アドレス生成関奴 (slave address generation function
2 1 2
)という。
[0068] このアドレス生成器の特徴は、次の通りである。ハッシュ 'メモリ 3'は、アドレス生成 関数を能率よく実現するが、ハッシュ衝突が起こるため、一部の登録ベクトルは表現 することができない。一方、 LUTカスケードや再構成可能 PLA等の再構成可能論理
回路は、アドレス生成関数を確実に実現するが、 kの値が大きい場合には能率が悪 レ、。そこで、図 5のアドレス生成器は、これら 2つの手法をうまく組み合わせてアドレス 生成関数を能率よく実現できるようにしたものである。このアドレス生成器は、 nの値が 大きく、 kの値が 2nに比べて十分に小さい場合に有効である。ノ、ッシュ 'メモリ 3'と補 助メモリ 4'で、およそ 90%の登録ベクトルの集合を実現し、残りの 10%の登録べタト ルの集合を LUTカスケードや再構成可能 PLA等の再構成可能論理回路 6,で実現 する。
[0069] (2) 2個以上のハッシュ 'メモリを使用する方法(スーパ一.ハイブリッド法(Super Hybr id Method) )
[0070] 入力変数 Xに対して M個の異なる分割 (X , X ) (i=l, ···, M)を考える。これらの
li 2i
各分割に対して、(1)と同様にアドレス空間をハッシュ化し、ハッシュ 'メモリ 3'と補助 メモリ 4'を用いてアドレス生成関数 Γ (Υ , X )を実現する(図 7参照)。そして、アド
li li 2i
レス生成関数 Γ(Υ , X )を
1 2
[0071] [数 12] f(r X2):二 fn(Yu,X2.i) V… V flk(Yik,X2k) V f2(Y X2).
fu(Yli}X2i) ' f2(Y X2) 0 (i = 1, ... , M) と関数分解し、主アドレス生成関数 Γ (Y , X )の分解表の各列では非零要素が高
li li 2i
々 1個となるようにする。また、畐 IJアドレス生成関数 Γ (Y , X )=f (X , X )に関して
2 1 2 2 1 2
は、 LUTカスケードや再構成可能 PLA等の再構成可能論理回路で実現する。ここ で、 f (X, X )は、 Γ (Y, X )のハッシュ化された束縛変数 Yを束縛変数 Xに変
2 1 2 2 1 2 1 1 換して得られる関数を表す。
[0072] 一例として、 k = 2の場合(図 7参照)を考えると、分割 (X , X ), (X , X ) (図 7
11 21 12 22 においては、 X =X, X =X, X =X,, X =X,と記す。)に対して、 2つのハ
11 1 21 2 12 1 22 2
ッシュ 'メモリ 3,、 3'及び 2つの補助メモリ 4,、 4'を用いて、主アドレス生成関数 Γ (
11 γ , χ ), Γ (γ , χ )を実現したとする。主アドレス生成関数 r (γ , X )は、
11 21 12 12 22 11 11 21 登録べクトノレのうちの約 80%に対してアドレス Αを返し、 Γ (Υ , X )は、登録べク
12 12 22
トルのうち約 16%に対してアドレス Aを返す。 Y , Y のハッシュ化が完全にランダム
11 12
に行われた場合、主アドレス生成関数 Γ (γ , χ ), Γ (γ , χ )により、すべて
11 11 21 12 12 22
の登録ベクトルのうちの約 96%の登録ベクトルに対してアドレス生成関数が実現され る。したがって、副アドレス生成関数 f (X , X )は残りの約 4%の登録ベクトルに対し
2 1 2
てアドレス生成関数を実現すればよい。したがって、再構成可能論理回路で実現す べき副アドレス生成関数 f (X , X )は、ハイブリッド法に比べて更に小さくなり、より小
2 1 2
規模な回路により実現することが可能となる。
[0073] (例 4)
重みが kの n変数のアドレス生成関数 f (X)を考える。
[0074] 〔ハイブリッド法〕
ノ、イブリツド法の場合、ハッシュ 'メモリ 3,の入力数は p = q + 2,出力数は qである。 ここで、 qは式(3)により表される。また、補助メモリの入力数は q,出力数は (n— q— 2 )である。従って、総メモリ量は、
[0075] [数 13] q . 2q+'2 I (n — ( — 2) . 2"■ -(½, I 12q― 8) , 2«- 2 となる。
[0076] 〔スーパー 'ノ、イブリツド法〕
スーパー.ハイブリッド法の場合、第 1のハッシュメモリの入力数は(q + i) ,出力数 は q、第 1の補助メモリの入力数は q,出力数は (n_q_ l)、第 2のハッシュメモリの入 力数は (q_ l),出力数は (q_ 2)、第 2の補助メモリの入力数は (q_ 2),出力数は( n_q + 2)である。従って、総メモリ量は、
[0077] ほ女 14] q - 2,;+ |■+■ (n - f/ - 1)■ 2" + ( — 2) · 2q~l -\ (n― q十 2) . 2q~2 = (5n■+■ 5q― 6) . '2q-2 となる。
[0078] 上の 2つの式より、
[0079] [数 15] n < 71og2( 1)— 2 が成立するとき、スーパー ·ハイブリッド法の方力 ハイブリッド方よりも、必要メモリ量
が少なくなる。
(例終わり)
〔3〕本発明の構成
本発明に係るアドレス生成器の第 1の構成は、
入力される 2値ベクトル(以下「入力ベクトル」という。)Xに対し、当該入力ベクトル X が登録ベクトルの場合にはそれに対応する固有アドレス Aを出力し、それ以外の場 合には無効値を出力するアドレス生成関数 f (X)の演算を行うアドレス生成器であつ て、
A. 1乃至複数個設けられ、前記入力ベクトル Xが前記登録ベクトル集合の所定の 部分集合に属す場合にはそれに対応する固有アドレス Aを出力し、それ以外の場合 には無効値を出力する主アドレス生成器と、
B.すべての前記主アドレス生成器の出力が無効値となり且つ前記登録ベクトル集 合に属す前記入力ベクトル Xに対しては、対応する固有アドレス Aを出力し、それ以 外には無効値又は入力ベクトル Xに対応する固有アドレス Aを出力する副アドレス生 成関数 f (X)の演算を行う副アドレス生成器と、
2
C.主アドレス生成器又は副アドレス生成器の出力値が無効値以外であればその 値を固有アドレス Aとして出力し、それ以外の場合は無効値を出力する出力合成器と を備え、
前記各主アドレス生成器は、
a.前記入力ベクトル Xの所定の分割 (X , X ) (iは各主アドレス生成器を識別する
li 2i
インデックス)に対し束縛変数 X をハッシュ化し、ハッシュ化された束縛変数 Y を出
li li 力するハッシュ回路と、
b.前記束縛変数 Y に対する割り当てに対し、前記固有アドレス Aが一対一対応す
li
る場合 (ハッシュ衝突が生じない場合)には当該固有アドレス Aを仮アドレス A'として 出力し、それ以外の場合 (ハッシュ衝突が生じる場合)には任意の値又は対応する固 有アドレス Aの何れか一つを仮アドレス A'として出力する仮アドレス生成器と、
c アドレス生成関数 f (X)の逆関数であるデータ再生関数 Γ1 (A)の演算を行う演
算器であって、前記仮アドレス生成器が出力する仮アドレス A'が入力されると、それ に対応する再生ベクトル X"ニ厂1 (Α' )を出力するデータ再生器と、
d.前記再生ベクトル X"と前記入力ベクトル Xとを比較し、両者が一致する場合には 前記仮アドレス A'を出力し、それ以外の場合には無効値を出力する固有アドレス検 出器と、
を備えたことを備えたことを特徴とする。
[0081] この構成によれば、アドレス生成器に外部から入力ベクトル Xが入力された場合、ハ ッシュ回路が入力ベクトル X= (X , X )に対し束縛変数 X をハッシュ化し、ハッシュ
li 2i li
化された束縛変数 Y として出力する。ここで、 Χ= (Χ , X )は Xの分割とする。また、
li li 2i
ノ、ッシュ化により束縛変数 X は Y に変換され、入力ベクトル Xはハッシュ入力べタト
li li
ル X, = (Y, X )となる。
i li 2i
[0082] 次に、仮アドレス生成器は、 Y についてハッシュ衝突が生じない場合には Υ に対
li li 応する固有アドレス Aを仮アドレス A'として出力する。ハッシュ衝突が生じる場合には 任意の値又は対応する固有アドレス Aのうちの何れか一つを、仮アドレス A'として出 力する。データ再生器は、得られた仮アドレス A'からそのアドレスに対応する再生べ タトル Χ'^Γ^Α' )を出力する。固有アドレス検出器は、 X"と Xを比較し、両者が一 致する場合には仮アドレス A'を出力する。それ以外の場合には無効値を出力する。 これにより、固有アドレス検出器からは、入力ベクトル Xに対して正しい固有アドレス A 又は無効値が出力される。
[0083] 一方、畐 IJアドレス生成器は、固有アドレス検出器の出力が無効値となる入力べタト ノレ Xに対しては、 Xに対応する正しい固有アドレス A=f (X) (固有アドレスがない場合 は無効値)を出力する。一方、固有アドレス検出器の出力が無効値以外となる場合に は、無効値を出力するか、又は Xに対応する正しい固有アドレス A=f (X)を出力する
[0084] 最後に、出力合成器は、固有アドレス検出器の出力値及び副アドレス生成器の出 力値のうち無効値でないものがあれば、それを固有アドレス Aとして出力する。両者と も無効値の場合は無効値を出力する。これにより、入力ベクトル Xに一致する登録べ タトルがあれば、出力合成器からは、 Xに対する正しい固有アドレス Aが出力される。
[0085] 入力ベクトル Xをー且ハッシュ化することにより、アドレス生成関数 A= f (X) = f (X li
, X )は、 Α= Γ (Υ, X )に変換される。固有アドレス Αの数 kが η次元の入力べクト
2i li 2i
ル Xの組み合わせの数 2nに対して十分に小さい場合、 Y に対応する Aの数は平均し
li
て高々 1個となる。すなわち、ハッシュ関数をうまく選択すれば、 Y の割り当てと Aとは
li
ほぼ一対一対応の関係となる。そこで、ハッシュ化の際に使用するハッシュ関数を、 Y の値を用いて、 Aを一意的に決定できる確率をできるだけ大きくなるように選択す li
る。そうすれば、大部分の Aは、束縛変数 Y の関数 A= G (Y )として表される。 Gの
li li
入力ベクトル Y の要素数が入力ベクトル Xの要素数に比べて少ないため、仮ァドレ
li
ス生成器は小規模な回路で実現することができる。
[0086] そして、残りのハッシュ衝突を生じる入力ベクトル Xについては、副アドレス生成器 において、 Aを Xの全要素の関数として計算する。このとき、 Xはハッシュ衝突を生じる ものに限定されているため、副アドレス生成器で計算することが必要な Aの組み合わ せの数は少ない。従って、副アドレス生成器は小規模な回路により実現することがで きる。
[0087] 故に、全体として、アドレス生成器全体の回路規模を小さくすることができ、消費電 力を抑えることができる。また、デバイスの構造を簡単化し、小面積で実装することが 可能となる。
[0088] また、主アドレス生成器を 2つ以上備える場合には、各主アドレス生成器での分割( X , X )を互いに異なる分割とすることで、主アドレス生成器が 1つの場合に比べて、 li 2i
主アドレス生成器によりアドレス生成関数が実現される登録ベクトルの割合が大きくな る。したがって、畐 ijアドレス生成器によりアドレス生成関数を実現すべき登録ベクトル の数を減らすことができ、より小規模な回路でアドレス生成器を構成することが可能と なる。
[0089] ここで、 「2値ベクトル (binary vector)」とは、ベクトルの各成分が 2値であるべクトノレ をいう。
[0090] 「ハッシュ化(hashing)」とは、アドレス生成関数の分解表において非零要素が多く の列に分散するように、入力ベクトル Xの一部又は全部のベクトル成分の順序を置換 することをいう。 「ハッシュ衝突(hash collision)が生じる」とは、ハッシュ入力ベクトル X
'のベクトル成分からハッシュ化されていないベクトル成分を除いた束縛変数 Yの割 り当てに対し、複数の固有アドレス Αが対応することをいう。
[0091] 「データ再生関数(data- regeneration function)」とは、アドレス生成関数 f (X)の逆 関数、すなわち、固有アドレス Aをそれに対応する入力ベクトル Xに写像する関数を いう。
[0092] 「無効値(invalid value)」とは、アドレスが無効である(存在しなレ、)ことを表す値をレヽ う。無効値としては、アドレスのすべての成分を 0としたもの,すべての成分を 1とした もの,実際に存在しないアドレス値としたものなどが使用される。
[0093] 「副アドレス生成関数(slave address generation function)」とは、前記固有アドレス 検出器が無効値を出力する場合には、当該入力ベクトル Xに対しアドレス生成関数 f (X)の演算値を出力し、それ以外の場合には無効値又はアドレス生成関数 f (X)の 演算値を出力する関数をいう。すなわち、副アドレス生成関数は、前者の場合には、 当該入力ベクトル Xをそれに対応する固有アドレス Aに写像し、後者の場合には無効 値又は当該入力ベクトル Xに対応する固有アドレス Aに写像する。
[0094] 副アドレス生成器としては、 LUTカスケード、その他の論理回路を使用することがで きる。
[0095] 本発明に係るアドレス生成器の第 2の構成は、前記第 1の構成において、前記副ァ ドレス生成器は、前記主アドレス生成器のいずれかにおいて前記ハッシュ化された束 縳変数 Y がハッシュ衝突を生じる入力ベクトル Xに対しては、当該入力ベクトル Xに
li
対応する前記固有アドレス Aを出力し、それ以外の場合には無効値を出力するもの であることを特徴とする。
[0096] この構成によれば、副アドレス生成器は、ハッシュ衝突を生ずる場合には正しい固 有アドレスを出力し、ノ、ッシュ衝突を生じない場合には、常に無効値を出力する。従 つて、畐 IJアドレス生成器は、ノ、ッシュ衝突が生じる場合の Xを調べ、その結果得られる レ、くつかの Xに対して固有アドレス Aを演算するように構成すればよレ、。従って、副ァ ドレス生成器における論理演算回路の構成が容易となる。
[0097] 本発明に係るアドレス生成器の第 3の構成は、前記第 1の構成において、前記仮ァ ドレス生成器は、前記ハッシュ化された束縛変数 Yにおいてハッシュ衝突が生じな
い場合には、当該束縛変数 ¥ェに対応する固有アドレス Aを前記仮アドレス A'として 出力する仮アドレス生成関数が、ルックアップ ·テーブル (LUT)として格納されたハ ッシュ 'メモリであることを特徴とする。
[0098] このように、仮アドレス生成器をハッシュ 'メモリで構成することにより、演算速度を高 速に維持しつつも、メモリの書き換えによる再構成も簡単に行うことが可能である。
[0099] 本発明に係るアドレス生成器の第 4の構成は、前記第 1の構成において、前記デー タ再生器は、前記データ再生関数 f_ 1 (A)が、 LUTとして格納された補助メモリである ことを特徴とする。
[0100] このように、データ再生器を補助メモリで構成することにより、演算速度を高速に維 持しつつも、メモリの書き換えによる再構成も簡単に行うことが可能である。
[0101] 本発明に係るアドレス生成器の第 5の構成は、前記第 1の構成において、前記副ァ ドレス生成器は、カスケード状に接続された複数の部分関数メモリを備えた LUTカス ケード論理回路により構成されており、
前記各部分関数メモリには、前記副アドレス生成関数 f (X)を関数分解して得られ
2
る複数の部分関数が LUTとして格納されていることを特徴とする。
[0102] このように、畐 IJアドレス生成器を LUTカスケード論理回路で構成することにより、演 算速度を高速に維持しつつも、回路規模も、 PLA (プログラマブル'ロジック 'アレイ) で構成する場合に比べて小規模化することができる。また、メモリの書き換えによる再 構成も簡単に行うことが可能である。 発明の効果
[0103] 以上のように、本発明によれば、入力ベクトルをハッシュするハッシュ回路及びハツ シュ入力ベクトルから固有アドレスを出力する仮アドレス生成器を備えるとともに、仮 アドレス生成器で計算できない固有アドレスを計算するための副アドレス生成器を備 え、仮アドレス生成器及び副アドレス生成器を相補的に組み合わせて固有アドレスの 生成を行う構成とした。これにより、アドレス生成器全体の回路規模を小さくすることが でき、消費電力を抑え且つデバイスの構造を簡単化して小面積で実装することが可 能となる。
[0104] また、仮アドレス生成器やデータ再生器を LUTを格納したメモリで構成し、副ァドレ
ス生成器を LUTカスケードにより構成することで、演算速度を高速に維持しつつも、 メモリの書き換えによる再構成も簡単に行うことが可能である。
図面の簡単な説明
[図 1]論理関数を関数分解により実現した場合を表す図である。
[図 2]中間出力を有する LUTカスケードを表す図である。
[図 3]ハッシュ化関数 Γ (Υ , X )の分解表を表す概念図である。
1 2
[図 4]本発明の実施例 1に係るアドレス生成器の機能構成を表すブロック図である。
[図 5]図 4のアドレス生成器 1の具体的なハードウェア構成を表すブロック図である。
[図 6]6変数関数をハッシュ 'メモリで実現した例を示す図である。
[図 7]本発明の実施例 1に係るアドレス生成器のハードウェア構成を表すブロック図で ある。
[図 8]レジスタとゲートを用いた再構成可能 PLA 6 'の構成を表す図である。
[図 9]従来のアドレス生成器 (CAM)の基本構成の一例を表すブロック図である。
[図 10]図 6の CAMセルの構成回路図である。
[図 11]図 6の CAMセルの別の例の構成回路図である。
符号の説明
1, 1 ' アドレス生成器
2 ハッシュ回路
3 仮アドレス生成器
3, ハッシュ 'メモリ
4 データ再生器
4, 補助メモリ (AUX memory)
5 固有アドレス検出器
6 副アドレス生成器
6, LUTカスケード
6" 再構成可能 PLA
7 出力合成器
7 ' 〇R回路
8, 8 ' 主アドレス生成器
10 比較回路
11 AND回路
15 レジスタ
16 EXNORゲート
17 ANDゲート
発明を実施するための最良の形態
[0107] 以下、本発明を実施するための最良の形態について、図面を参照しながら説明す る。
実施例 1
[0108] 本実施例では、主アドレス生成器力 ^個の場合 (ハイブリッド法)について説明する
[0109] 生成器の構成
図 4は、本発明の実施例 1に係るアドレス生成器の機能構成を表すブロック図であ る。本実施例に係るアドレス生成器 1は、ノ、ッシュ回路 2、仮アドレス生成器 3、データ 再生器 4、固有アドレス検出器 5、副アドレス生成器 6、及び出力合成器 7を備えてい る。
[0110] アドレス生成器 1は、重み kのアドレス生成関数 f (X)の演算を行う演算器である。す なわち、アドレス生成器 1は、外部から入力ベクトル Xが入力されると、入力ベクトル X に対応する登録べタトノレがある場合にはその登録ベクトルの固有アドレス Aを出力す る。それ以外の場合には無効値 0を出力する。
[0111] [数 16]
χ)、 I A (if X e R)
1 0 (otherwise) (4) (i し、 A e {1, 2, . . . J-}, は登録ベク トルの集合)
[0112] ここで、入力ベクトル Xは n次元のベクトルである。また、固有アドレス Aは l〜kまで の値をとり、 qビットの 2進数で表現されている。ここで、 qは上述の式(3)により表され る。
[0113] ハッシュ回路 2は、入力ベクトル Xの一部又は全部を、所定のハッシュ関数に従って ノ、ッシュ化する。ここで、 Xの分割を X= (X , X )とする。 Xは束縛変数、 Xは自由
1 2 1 2 変数である。 X =Xの場合も考える。ハッシュ回路 2は、 Xの束縛変数 Xをハッシュ化
1 1 しハッシュ入力ベクトル X' = (Y, X )を生成する。
1 2
[0114] 仮アドレス生成器 3は、仮アドレス A'を生成する。この場合、仮アドレス A'は次のよ うに決定される:
(1)ハッシュ化された束縛変数 Yに対する一つの割り当てが、ハッシュ衝突が生じな
1
レ、場合、その割り当てに対応する固有アドレス Aを仮アドレス A'とする;
(2)ハッシュ化された束縛変数 Yに対する一つの割り当てが、ハッシュ衝突が生じる
1
場合、その割り当てに対応する固有アドレス Aの集合 {A }の中で最も小さいものを仮
1
アドレス A,とする。
[0115] 以下、束縛変数 Yに対する一つの割り当て(全部で 2P個ある)を仮アドレス A'に写
1
像する関数を仮アドレス生成関数と呼び、 (Y )と記す。
[0116] データ再生器 4は、アドレス生成関数 A=f (X)の逆関数 X=f_ 1 (A)を演算する演 算器である。データ再生器 4は、仮アドレス生成器 3から入力される仮アドレス A'に対 して、再生ベクトル ,,ニ厂 八')を出力する。
[0117] 固有アドレス検出器 5には、入力ベクトル X,再生ベクトル X",及び仮アドレス A'が 入力される。固有アドレス検出器 5は、再生ベクトル X"と入力ベクトル Xとの比較を行 う。そして、両者が一致する場合は、仮アドレス A'を出力し、それ以外は無効値 0を 出力する。
[0118] 副アドレス生成器 6は、アドレス生成関数 f (X)に対し、仮アドレス生成器 3,データ 再生器 4,及び固有アドレス検出器 5による仮アドレス A'の演算と補完関係にある副 アドレス生成関数 f "" )の演算を行レ、、副アドレス A"を出力する演算器である。畐 IJ
2
アドレス生成関数 f " (X)は、次のような関数である:
2
(1)固有アドレス検出器 5が無効値 0を出力する場合には、入力ベクトル Xをそれに 対応する固有アドレス Aに写像する;
(2)それ以外の場合には、入力ベクトル Xを無効値 0又は対応する固有アドレス Aに 写像する。
[0119] 副アドレス生成器 6は、論理ゲートを組み合わせることによって構成してもよいし、 L UTカスケード論理回路を用いて構成してもよレ、。
[0120] 出力合成器 7には、固有アドレス検出器 5の出力値、及び副アドレス生成器 6の出 力値が入力される。出力合成器 7は、これらの出力値のうち、一方又は両方が無効値 0以外の場合には、その値を固有アドレス Aとして出力する。両方とも無効値 0の場合 には、無効値 0を出力する。
[0121] 尚、図 4においては、ハッシュ回路 2,仮アドレス生成器 3,データ再生器 4,及び固 有アドレス検出器 5により、主アドレス生成器 8が構成される。
[0122] 図 5は、図 4のアドレス生成器 1の具体的なハードウェア構成を表すブロック図であ る。図 4と対応するものには同一符号を付している。図 5においては、仮アドレス生成 器 3は、ハッシュ 'メモリ 3 'によって構成されている。データ再生器 4は、補助メモリ 4 ' により構成されている。固有アドレス検出器 5は、比較回路 10及び AND回路 1 1によ り構成されている。副アドレス生成器 6は、 LUTカスケード 6 'により構成されている。 また、出力合成器 7は、 OR回路 7 'により構成されている。
[0123] ノ、ッシュ 'メモリ 3,は書き換え可能メモリにより構成される。ハッシュ 'メモリ 3,には、 式(2a)又は式(2b)に示した仮アドレス生成関数 h' (Y )が LUTとして記憶されてい
1
る。
[0124] 補助メモリ 4 'は書き換え可能メモリにより構成される。補助メモリ 4 'には、アドレス生 成関数 fの逆関数であるデータ再生関数 Γ1が LUTとして記憶されている。
[0125] LUTカスケード 6 'は、図 2のように複数の信号線(レイル)によってカスケード接続さ れた複数の書き換え可能メモリ(セル)により構成される。 LUTカスケード 6 'には、副 アドレス生成関数 f (X)が LUTカスケードとして構成されている。尚、本実施例にお
2
いては、副アドレス生成器 6は、 LUTカスケード 6 'に限られるものではなぐ例えば、 論理ゲートの組み合わせや再構成可能 PLA等の他の再構成可能論理回路により構 成してもよい。
[0126] 〔2〕アドレス生成器の動作
まず、アドレス生成器 1に n次元ベクトルの入力ベクトル Xが入力される。ハッシュ回 路 2は、所定のハッシュ関数に従って入力ベクトル X= (X , X )を (Υ , X )に一次変
換し、アドレス空間をハッシュ化する。ここで、 (X , X )は Xの分割であり、 Xは束縛
1 2 1 変数、 Xは自由変数である。ベクトル Xの変数の個数を d(X)と記す。 d(X)=n, d(X
2
) =d(Y )=p, d(X ) =r=n_pとする。また、 qは式(3)で表される。
1 1 2
[0127] ハッシュ回路 2において生成されたハッシュ化された束縛変数 Y1は、ハッシュ 'メモ リ 3'に入力される。
[0128] ここで、ハッシュ関数は、アドレス生成関数 fに適応してあらかじめハッシュ回路 2に 設定されている。このハッシュ関数の生成方法に関しては、後述する。
[0129] ノ、ッシュ化した後のアドレス生成関数を Γ (Υ , X )と記す。関数 Γ (Υ , X )の分解
1 2 1 2 表は、図 3に示したようなものとなる。ハッシュ回路 2でのハッシュ化によって、分解表 における非零要素は分散される。また、アドレス生成関数 fの重み kは、 2nに比べて十 分に小さいものとし、束縛変数 Xの個数 pは、 2Pが kよりも大きいものとする。ハッシュ 化により、非零要素が均等に分散されると、図 3の分解表の殆どの列は、高々 1個の 非零要素を持つ。
[0130] ノ、ッシュ 'メモリ 3'は、束縛変数 Yに基づき、式(2a)又は式(2b)で定義される仮ァ
1
ドレス生成関数 (Y )により仮アドレス A'を生成する。ここで、 d(A') =qである。尚 、 Yの値のみで、 Aの値を予測しているので、 A, =h' (Y )は正しい値 Α=Γ (Υ , X
1 1 1
)とは異なる値をとる場合がある。
2
[0131] 仮アドレス A'は、補助メモリ 4'及び AND回路 11に入力される。
[0132] 補助メモリ 4'は、仮アドレス A'に対応する再生ベクトル ,,ニ厂 八')を生成する。
比較回路 10には、再生ベクトル X"ともとの入力べクトノレ Xとが入力される。
[0133] 比較回路 10は、両者を比較し、両者が一致する場合には 1、それ以外は 0を、 AN D回路 11に出力する。 AND回路 11は、比較回路 10の出力値と仮アドレス A'の各 ビットとの AND演算を行う。この演算結果は、〇R回路 7'に出力される。
[0134] これにより、仮アドレス A,が Xに対する正しい固有アドレス Aと等しい場合には、 AN D回路 11から〇R回路 7'へ仮アドレス A'が出力され、それ以外の場合は無効値 0が 出力される。すなわち、 AND回路 11の出力値は、ハッシュ化後のアドレス生成関数 f "(Y, X )の分解表において、非零要素が 2個以上存在する列について最小の非零
1 2
要素以外のものを 0に置き換えた関数となる。以下、この関数を主アドレス生成関数(
master address generation function)と呼び、 f (Y , X )と目己す。
1 1 2
[0135] 一方、入力ベクトル Xは、 LUTカスケード 6'にも入力される。 LUTカスケード 6,に おいては、副アドレス生成関数(slave address generation function) f (X, X )の演
2 1 2 算を LUTカスケードにより行レ、、その結果を副アドレス A"として〇R回路 7'に出力す る。
[0136] 尚、副アドレス生成関数 f (X , X )は、上述のようにハッシュ化後のアドレス生成関
2 1 2
数を Γ(Υ, X )を式(5)のように関数分解し、 f "(Υ , X )の変数 Yをハッシュ関数
1 2 2 1 2 1
の逆関数によって Xに変換することによって得られる。
従って、ハッシュ化された副アドレス生成関数 f ' (Y, X )は、主アドレス生成関数 f
2 1 2 1
'(Υ , X )が決まれば、一意的に次式 (6)により求まる。
2
10 (otherwise!.
[0139] 尚、具体的な副アドレス生成関数 f (X, X )の構成方法に関しては後述する。
2 1 2
[0140] 主アドレス生成関数 f ' (Υ , X )と副アドレス生成関数 f (X , X )は、アドレス生成
1 1 2 2 1 2
関数 f(X, X )に対して相補的である。すなわち、式 (5)より、
1 2
[0141] [数 19]
/(Χ,,,Χ^ = h(Y X2) f2(X1:X ) (7) となる。そこで、〇R回路 7'は、 AND回路 11の出力値 f "(Y, X )と LUTカスケード
1 1 2
6'の出力値 f (X , X )との〇R演算を行うことによって、アドレス生成関数 f(X, X )
2 1 2 1 2 の値を算出する。
[0142] 〔3〕ハッシュ関数の構成方法
ハッシュ回路 2において、束縛変数 Xをハッシュ化するハッシュ関数は、アドレス生
1
成関数 fの分解表における非零要素を一様に分布させるものであれば、どのような関 数でも利用することができる。ここでは、実現の容易さを考慮して、一例として、次の
ノ、ッシュ関数を用いる。
[0144] 〔3 _1〕ハッシュ関数の生成アルゴリズム
アドレス生成関数 f (X , X )において、束縛変数を X = (X
1 2 1 1, X
2,…, X )、 自由変 p 数を X = (x , X ,…, X )とする。束縛変数 Xを Y = (y , y ,…, y )に置換し
2 p+1 p+2 n 1 1 1 2 p た関数を Γ(Υ, X )とする。関数 Γ(Υ
1, X )の分解表の列中で、非零要素を含む列
1 2 2
の個数を Wとする。ハッシュ 'メモリ 3'に多くのアドレスを格納するためには、 Wを最大 化するような Υを選択すればよい。 Υは、種々の公知のアルゴリズム(非線形計画法 や発見的アルゴリズム)を用いて選択すればょレ、。
[0145] 〔アルゴリズム 1〕
Xの各要素 X (i=l, 2,■··, p)に対して、
[0146] [数 21]
Vi = Xi Φ Xj. としたとき、 wが最大となる x '≡ {Χ }を選択する。この操作を wが増加しなくなるまで ϋ 2
繰り返す。
(アルゴリズム終わり)
[0147] このようにして求めた X = (X , X , ···, X )によりハッシュ関数を構成する。
j jl j2 jp
[0148] 〔3— 2〕ハッシュ関数の実現法
重み kのアドレス生成関数 f (X , X )において、束縛変数 X = (X , X , ···, X )を
1 2 1 1 2 p
[0149] [数 22]
U/i ® ,¾Φ ,...,ί/ρ®:¾,) (9) で置き換えて得られる関数を Γ (Υ , X )とする。ここで、束縛変数の個数 ρは次式(1
1 2
0)の条件を満たすものとする。
[0150] [数 23]
Ρ≥「log2 ( + 1)1 (10)
[0151] p次元の 2値ベクトル a(EY )に対して r(a, X )の非零出力値が 2個以上ある場合
1 2
、 Γ (a, X )の最小の非零出力値以外の値を 0に置き換えた関数を主アドレス生成関
2
数 f '(Y, X )とする。主アドレス生成関数 f "(Y, X )は次式(11)で表される。
1 1 2 1 1 2
[0152] ほ女 24]
., , ί{Υι. 2· ) (if/(rJ; 2) := mm f{Y b))
(11) 次に、関数 f '(Υ , X )を式(6)により求める。このとき、式(7)の関係が成り立つ。
2 1 2
[0153] 主アドレス生成関数 f '(Υ , X )の分解表の各列において、非零出力値は高々 1
1 1 2
個しか存在しない。次に、次式(12)で定義される関数 h'(Y )をハッシュ 'メモリ 3'で 実現する。
[0155] 但し、関数 IT (Y )の値は主アドレス生成関数 f " (Υ , X )の値と異なってレ、る可能
1 1 1 2
性があるので、補助メモリ 4'を用いて出力値が正しいか確認する。また、関数 f "(Y
2 1
, X )から次式(13)の置換を行って副アドレス生成関数 f (Y, X )を生成する。副ァ
2 2 1 2
ドレス生成関数 f (Y, X )は、 LUTカスケード 6'で実現される。
2 1 2
[0156] ほ女 26]
Xi = yi ® xk (13)
[0157] (例 5)
重みが k = 7の 6変数のアドレス生成関数 f(X , X )の分解表を (表 4)に示す。この
1 2
関数で束縛変数 X = (X , X , X )を次式(14)のように Yに置換し、ハッシュ化した
1 1 2 3 1
関数 Γ (Y, X )の分解表を (表 5)に示す。
1 2
[0158] ほ女 27]
Y% = {yi,y2,ify) '= (xi Θ^,α^θ^δ,^θ ^) (14)
[0159] ノ、ッシュ化した関数では、元の関数の列が入れ替わつている。また、入れ替えの方 法は、行ごとに異なっている。元の関数では、 (X , X , X ) = (0, 0, 0), (0, 1, 0),
1 2 3
(0, 0, 1)の列に非零要素が 2個存在する。一方、(表 5)に示すハッシュ化後の関数 Γ (Χ, X )では、 (y , y, y ) = (0, 1 , 0)の列にのみ、非零要素が 2個存在する。
1 2 1 2 3
そのうち、大きい方の非零要素の 4を 0に置き換えた関数 f " (Y, X )の分解表を (表
1 1 2
6)に示す。また、 (表 7)に LUTカスケード 6 'で実現すべき関数 f " (Υ , X )の分解
2 1 2 表を示す。この例の場合、わずか 1個の非零要素しかない。残りの関数は、(表 8)に 示すハッシュ 'メモリ 3,と(表 9)の補助メモリ 4,で実現する。ハッシュ 'メモリ 3,の出力 h" (Y )は、(y , y , y )のみの値を用いて、関数 f 'の値を予測しており、 f 'とは異
1 1 2 3 1 1 なっている可能性がある。そのため、(表 9)に示す補助メモリ 4'を用いて、その出力 が正しいか否かを検証する。 LUTカスケード 6 'で実現すべき関数は、非零出力値 4 をとる。その入力時の組み合わせは(X , X , X , X , X , X ) = (0, 0, 1, 0, 1 , 1)で
1 2 3 4 5 6
ある。
[0160] 図 6に、本方式で、関数 fを実現する回路の全体図を示す。 LUTカスケード 6 'の部 分は、 ANDゲートのカスケードで実現している。また、非零出力は 4である力 2進表 現では(1 , 0, 0)であるので、 OR回路 7'においては、 AND回路 11の出力ビットのう ち、最上位の出力ビットのみ、カスケードの出力との ORをとつている。
(例終わり)
[0161] [表 4] 表4: 関数/ ( 1 : 2)の分解表
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
000 0 0 0 0 0 0 0 0
001 0 0 0 0 0 0 0 0
010 1 0 2 ϋ 3 0 0 0
011 0 0 0 0 4 0 0 0
100 0 0 0 0 0 0 ϋ 0
101 0 0 0 0 0 0 0 0
110 0 0 0 0 0 0 0 6
111 0 0 7 0 0 0 0 0
X6X5X4
[0162] [表 5]
表 5: ハッシュ化後の関数 /( X2)の分解表
0 0 0 0 1 1 1 1 yz
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
000 0 0 0 0 0 0 0 0
001 () 0 0 0 0 0 0 0
010 2 0 1 0 0 0 3 0
011 0 0 4 0 0 0 0 0
100 0 5 0 0 0 0 0 0
101 0 0 0 0 0 0 0 0
110 () 0 0 0 6 0 0 0
111 () 0 0 0 0 7 0 0 a¾:i¾: '4:
[0163] [表 6]
表 6: 関数 )の分解表
0 0 0 0 1 1 1 1 '!:
0 0 1 1 0 0 1 1 V2
0 1 0 1 0 1 0 1 yi ϋϋϋ ϋ ο ϋ 0 ϋ ϋ ο ϋ
001 0 0 0 0 ο 0 0 ϋ
010 2 0 1 0 0 0 3 ο
011 0 ο 0 0 ϋ ϋ 0 0
100 0 5 0 0 0 0 0 0
101 ϋ 0 0 0 ϋ ο 0 ϋ
110 0 0 (} 0 6 0 0 0
111 ϋ 0 0 0 ϋ 7 0 ϋ
[0164] [表 7]
0 0 0 0 1 1 1 1
0 o 1 1 0 0 1 1 V2
0 1 0 1 ϋ 1 0 1
000 ϋ 0 ο ο ϋ 0 0 ϋ
001 0 0 0 0 0 0 0 0
010 0 0 0 0 0 0 0 0
on 0 0 4 0 0 0 0 0
100 0 0 0 0 0 0 0 0
101 0 0 0 0 ο 0 0 ϋ
110 0 0 0 0 0 0 0 0
111 ϋ 0 ϋ ϋ ϋ 0 0 ϋ
; ϊ¾ίί¾ίϊ;4
[0165] [表 8コ
表 8: ハッシュメモリで実現する関数 ( )
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
y、. 0 1 0 1 0 1 0 1
2 0 1 0 6 7 3 0
[0166] [表 9コ
表 9:補助メモリの内容
1 Z'iZi' £ ' '2 ¾3 ¾4 :c5
000 0 0 0 0 0 0
001 0 0 0 ϋ 1 0
010 0 1 0 0 1 0
Oil 0 0 1 ϋ 1 0
100 0 0 0 0 0 0
101 0 0 0 ϋ ϋ 1
110 1 1 1 0 1 1
111 0 1 0 1 1 1 尚、ハッシュ関数として式(8)を用いた場合、補助メモリ 4'の Xの部分の出力及び
1
比較回路 10での Xとの比較部分は省略することができる。理由は、以下の通りであ
1
る。
[0168] ノ、ッシュ 'メモリ 3,で実現する関数は、 IT (Y^である。この出力値で、補助メモリ 4 ' の値を参照するが、ハッシュ化したアドレス生成関数 Γの分解表では、元のアドレス 生成関数 fの分解表で行の要素が置換されている。従って、ハッシュ 'メモリ 3 'の出力 値が正しいことを確認するためには、 Xの値を調べれば十分である。つまり、補助メ
2
モリ 4 'の出力値と Xの値が一致すれば、式(8)の関係より、 Xの値も一致することが
2 1
保証される。従って、ハッシュ 'メモリ 3 'の出力が正しいことが分かる。また、一致しな ければ比較回路 10の出力値は 0である。
[0169] 例えば、図 6の回路の場合、補助メモリ 4 'の出力は、(X , X , X )があれば十分で
4 5 6
あり、比較回路 10の入力も(X , X , X )は省略可能である。
1 2 3
[0170] 〔4〕ハッシュ 'メモリで実現可能な登録ベクトルの割合
次に、本発明に係るアドレス生成器において、回路規模をどの程度小さくすること が可能であるかを評価するため、仮アドレス生成器 3 (ハッシュ 'メモリ 3 ' )で実現可能 な登録ベクトルの割合を評価する。
まず、仮アドレス生成器 3で実現可能な登録ベクトルの割合に関しては、次の定理 が成り立つ。
[0171] 〔定理 4〕
fを重み kの n入力アドレス生成関数とし、非零要素が分解表中に一様に分布してレ、 ると仮定する。このとき、図 4における仮アドレス生成器 3で実現可能なアドレスの割 合 δは、次式 ()で表される。ここで、 Ρ = I Υ I は Γ (Υ, X )の分解表の束縛変数
1 1 2
の個数である。
[0172] ほ女 28] 1 ( )
(定理終わり)
[0173] (証明)
kは分解表中の非零要素の総数を示す。 α =k/2nは、分解表中での非零要素の 割合を示す。 ;3 = 1— αは、分解表中での零要素の割合を示す。 r=n— ρ= | X |
2 は、 Γ (Υ , X )の分解表の自由変数の個数を表す。このとき、ある列の要素がすべ
て 0となる確率 P、及びある列の要素中に少なくとも 1つの非零要素が含まれる確率
0
Pは、次式(16) , (17)により表される。
1
[0174] ほ 9]
H)一 β2'. (16) ί一
P ^ l - if' (17) 一
全体では 2P個の列が存 12 1在し、非零要素数は kである。非零要素が 2個以上ある列に 関しては、仮アドレス生成器 3で 1個だけ非零要素を実現すると仮定すると、仮ァドレ ス生成器 3で表現可能なアドレスの割合 δは、式(18)により表される。
[0175] [数 30]
6 = (1 - 0 '') - (18) k
二 (1— (1—ひ)2' ) .
' 2
二: ( / ) *—-
ん : ( (― i)" , J tf) また、 s = n_qとおくと、関ィ系 r = n_pより、 r_ s = q_pとなる。 s >rである力ら、上 式の各項の絶対値は、 iの増加とともに減少する。次に、 δを式(18)の右辺最後の式 の第 3項までを用いて近似すると、式(19)で表される。
[0176] [数 31]
2P
(証明終わり)
[0177] 例えば、 k/2P= 1/4とすると、 δ =0. 8854となる。また、 lZ4≤k/2P≤l/2 の領域では、 δは、 kZ2Pの単調減少関数となる。
[0178] (例 6)
n=40, k= 1730の場合を考える。このとき、
[0179] ほ女 32] q 「log2( l)] == Γΐο&(173ϋ+ 1)] 11 であるから、束縛変数の変数の個数を ρ= 13とする。
[0180] (l)LUTカスケードのみで実現した場合
セルの入力数を p = 13とすると、カスケードの段数は、(定理 2)より、
[0181] ほ女 33]
n― q1 「40― 11, 「29Ί , セル 1個当たりのメモリ量は、 2PXq = 2 Xllbits。従って、総メモリ量は、 2 X11
X15 = l, 351, 680bitsとなる。
[0182] (2)本発明のアドレス生成器 1で実現した場合
s = n-q = 40-ll = 29, r = n_p = 40_13 = 27である力ら、(定理 4)の近似式 の仮定は成立する。 (定理 4)より、
となる。ハッシュ 'メモリ 3,は、 p=13入力 q=ll出力、補助メモリ 4'は、 q=ll入力 n =40出力。 LUTカスケード 6,は、重みが 1730 X (1-0. 901) = 170のアドレス生 成関数を実現する。このとき、 LUTカスケードのセルの出力数は、
[0184] [数 35]
「1ο¾(170+ 1)1 - 8 となる。セルの入力数を 10とすると、実現すべき LUTカスケードの段数は、
[0185] [数 36]
•η - αΊ 「40— 8, Γ32Ί
^1 = ίΪ0^8Ι = [ 1 = 16
となる。最終段以外のセル 1個当たりのメモリ量は、高々 21QX8bits。最終段のセルの メモリ量は、高々 210Xllbits。カスケードの総メモリ量は、 Ζ^ΧδΧΙδ + ζ χΐΙ:
134, 144bits0 ノヽッシュ 'メモリ 3,の容量 ίま、 2 X l l = 901112bitsoネ膚助メモリ 4' の容量は、 211 X 40 = 81920bitsとなる。従って、 ϋメモリ量は、 306, 176bitsとなる 従って、この例の場合、本発明のアドレス生成器 1を使用した方が、 LUTカスケード のみでアドレス生成関数を構成するよりも総メモリ量は少なくてよい。
(例終わり)
[0186] 〔5〕実験結果
アドレス生成回路 1の応用例として、頻繁に使用する英単語を表にしたものを考え る。ここでは、ベンチマークとして 3種類の単語表(単語表 1 ,単語表 2,単語表 3)を 用いた。単語帳中の単語の文字数は、最大 13文字である力 最初の 8文字のみを取 り扱う。また、 8文字より短い単語は、最後に空白を追加して 8文字とした。各英文字を 5ビットで表現すると、各英単語は 40ビットで表現することができる。また、単語表 1, 単語表 2,単語表 3の中の単語数は、それぞれ、 1730語, 3366語, 4705語である 。各表において、各単語に固有のインデックス(自然数)を付加する。このとき、単語 のインデックスは、それぞれ、 l lbits, 12bits, 13bitsとなる。
[0187] 次に、ハッシュ関数を生成する。ハッシュ関数の入力数は、(単語帳のインデックス のビット数) + 2とする。単語表 1の場合、単語数は k= 1730、インデックスのビット数 は
[0188] ほ女 37] :: ::: [log2(l 1 k)) 二 log2(l 1730)] :::: 11 (21) 束縛変数の個数は、 p = q + 2 = 130分解表の列の個数は 2P= 213 = 8192。非零要 素を 1個含む列の数は 1389。非零要素を 2個以上含む列の数は、 165。 ノ、ッシュ 'メ モリ 3'で実現不可能な登録べクトノレ数は、 176である。つまり、全単語の 90%がハツ シュ'メモリ 3 'で実現可能であり、残りの 10%を LUTカスケードで実現する必要があ る。実験結果を (表 10)に示す。
[0189] [表 10]
表 1ϋ: 英単語表の実現
[0190] 次に、疑似乱数を用いて同等のアドレス生成関数を実現した場合(100個の平均) の実験結果を (表 11)に示す。この場合、非零要素を 1個含む列の数は 1398. 4、非 零要素を 2個以上含む列の数は 160. 0、ハッシュ 'メモリ 3'で実現可能な登録べタト ル数は 171. 6であった。同様の実験を単語帳 2, 3に関しても行った。
[0191] [表 11]
表 11:擬似乱数で生成したァドレス生成関数の実現
[0192] 実際の単語表の結果、及び疑似乱数で生成したアドレス生成関数に対する結果は 、(定理 4)で理論的に求めた結果と大差はない。従って、上記(アルゴリズム 1)を用 レ、て生成したハッシュ関数は、非零要素をランダムに分布させる関数として、有効で あることが分かる。
[0193] また、必要メモリ量を比較した結果を (表 12)に示す。 (表 12)から明らかなように、 必要な総メモリ量は、 1つの LUTカスケードで実現する場合に比べて、大幅に少ない
[0194] [表 12]
表 12: メモリ量の比較(英単語帳)
実施例 2
[0195] 本実施例では、主アドレス生成器が 2個の場合 (スーパー 'ハイブリッド法)について 説明する。
[0196] 図 7は、本発明の実施例 1に係るアドレス生成器のハードウェア構成を表すブロック 図である。図 7において、図 5と同様の構成部分については同一の符号が付してある
[0197] 図 5と比較すると、実施例 1のアドレス生成器 1は主アドレス生成器 8が 1つであった のに対し、本実施例のアドレス生成器 1 'は主アドレス生成器 8, 8 'を 2つ備えている 点で異なる。
[0198] 主アドレス生成器 8では、入力ベクトル Xに対する分割(X , X )について、主ァドレ
1 2
ス生成関数 Γ (Y , X )の演算を行う。ここで、 Yは Xをハッシュ化したベクトノレであ
1 1 2 1 1
り、式 (8)と同様に計算される。また、主アドレス生成器 8'では、入力ベクトル Xに対 する分割 (X ', X ' )について、主アドレス生成関数 Γ ' (Y ' , X ' )の演算を行う。こ
1 2 1 1 2
こで、 Y 'は X 'をハッシュ化したベクトノレであり、式(8)と同様に計算される。
[0199] ここで、分割 (X
1, X )と分割 (X '
2 1, X ' )とは異なる分割とする。具体的には、最適
2
な分割 (X ' , X ' )については次のような手順により決定すればよい。
1 2
[0200] (1)アドレス生成関数 fに対して、
(1 1)第 1のハッシュメモリの入力数は(q+ 1) , 出力数は q、第 1の補助メモリの入
力数は q,出力数は (n_q_l)となるように、変数を順に分割する。
(1— 2)なるベぐ分解表の非零要素が分散するようにハッシュ関数を求める。この 構成で実現された固有アドレスが表現する関数を Γ とする (ランダム関数の場合は
11
元の固有アドレスの約 80%が表現できる)。
(2)上記操作で実現されない固有アドレスが表現する関数、つまり f一 Γ に対して、
11
(2— 1)第 2のハッシュメモリの入力数は(q_l), 出力数は(q_2)、第 2の補助メモ リの入力数は (q_ 2),出力数は (n_q + 2)となるように、変数を順に分割する。
(2— 2)なるベぐ分解表の非零要素が分散するようにハッシュ関数を求める。この 構成で実現された固有アドレスが表現する関数を Γ とする(ランダム関数の場合は
12
元の固有アドレスの約 16%が表現できる)。
(3)上記何れの操作でも実現されない固有アドレスが表現する関数に対しては、 LU Tカスケード又は再構成可能 PLAなどの方法で実現する。
[0201] このように、主アドレス生成器 8, 8'を 2つ備えたことで、実施例 1の場合に比べると 、主アドレス生成器 8, 8' により固有アドレスが決定される登録ベクトルの割合が多く なる。したがって、副アドレス生成関数 Γ (X , X )により固有アドレスが決定される登
2 1 2
録ベクトルの数は少なくなるため、副アドレス生成器 6 (再構成可能 PLA 6")の回路 規模をより小さくすることが可能となる。
[0202] (例 7)
重み k=1730で変数の数が n = 40のアドレス生成関数 f (X)を、図 7のアドレス生 成器 1'を用いて実現する場合を考える。尚、比較のため、図 5のアドレス生成器 1に ついても考察する。
この場合、
[0203] ほ女 38] q = [log2 ( + 1)] = log2(l + 1730)] ■= H (22) である。
[0204] 〔再構成可能 PLA〕
再構成可能 PLA 6"を実現する方法としては、種々の方法がある力 ここでは、入
力ベクトルの各ビットの値を記憶するレジスタと ANDゲートを使用したレジスタ -ゲート 'アプローチ(register and gates a卯 roach)を採用する。図 8は、レジスタとゲートを用 いた再構成可能 PLA 6"の構成を表す図である。図 8において、再構成可能 PLA 6 "は、 n個のレジスタ 15、 n個の EXNORゲート 16、及び 1個の ANDゲート 17により構 成されている。
[0205] このアプローチでは、ど - - 221のような幅のワードであっても構成することができ、高速に再 構成することが可能である。入力数を n、出力数を q、実現すべきアドレス生成関数の 重みを kとすると、図 8の再構成可能 PLA 6"を FPGAで構成する場合に必要な LR ( Logic Element)の数は、
となる。
[0207] この例では、再構成可能 PLA 6"において実現すべき登録ベクトルの数は 1730で ある。従って、式(23)より、再構成可能 PLA 6"を実装するのに必要な LE数は、 84 , 478となる。
[0208] 〔ハイブリッド法〕
仮アドレス生成器 3で表現可能なアドレスの割合 δは、式(19)より、
[0209] ほ女 40]
となる。図 5のハッシュ 'メモリ 3 'の入力数は ρ= 13、出力数は q= l lである。補助メモ リ 4,の入力数は q= l l、出力数は r=n—p = 27である。ハッシュ 'メモリ 3 'のサイズ は 213 X I I = 90, 112 (bits)である。補助メモリ 4,のサイズは 2^ X 27 = 55, 297 (bit s)である。故に、メモリ'サイズの総量は、 145, 408 (bits)である。再構成可能 PLA 6"で実現される登録ベクトルの数は 173である。
[0210] 〔スーパー 'ハイブリッド法〕
仮アドレス生成器 3により表現可能なアドレスの割合 δは、式(19)より、 [0211] ほ女 41]
となる。図 7の第 1のハッシュ 'メモリ 3'の入力数は ρ =12、出力数は q =11である。
1 1
第 1の補助メモリ 4,の入力数は q =11、出力数は r =n— p =27である。第 2のハツ
1 1 1
シュ'メモリ 3,の入力数は p =10、出力数は q =9である。第 2の補助メモリ 4,の入
2 2
力数は q =9、出力数は r =n-p =30である。
2 2 2
[0212] 第 1のハッシュ 'メモリ 3,のサイズは、 212X 11=45, 056 (bits)、第 1の補助メモリ 4
'のサイズは 2"X 28 = 57, 344 (bits)、第 2のハッシュ 'メモリ 3,のサイズは、 210X9 =9, 216(bits)、第 2のネ甫助メモリ 4'のサイズ fま 29X30 = 15, 360 (bits)である。故 に、メモリ ·サイズの総量は、 126, 976(bits)である。再構成可能 PLA 6"で実現さ れる登録ベクトルの数は 43である。従って、この例では、スーパ一'ハイブリッド法の 方がハードウェア量をより少なくすることができる。
(例終わり)