JPH052608A - データ検索装置 - Google Patents

データ検索装置

Info

Publication number
JPH052608A
JPH052608A JP3180326A JP18032691A JPH052608A JP H052608 A JPH052608 A JP H052608A JP 3180326 A JP3180326 A JP 3180326A JP 18032691 A JP18032691 A JP 18032691A JP H052608 A JPH052608 A JP H052608A
Authority
JP
Japan
Prior art keywords
memory
data
packet
hash
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP3180326A
Other languages
English (en)
Inventor
Hidehiro Takada
英裕 高田
Hisakazu Sato
尚和 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP3180326A priority Critical patent/JPH052608A/ja
Publication of JPH052608A publication Critical patent/JPH052608A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【目的】 ハッシュメモリの有効利用により、ハッシュ
メモリと連想メモリのデータ駆動形計算機のマッチング
メモリ部等に適用し、連想メモリの利用頻度を下げ、連
想メモリのオーバーフローを防ぐデータ検索装置を得
る。 【構成】 ハッシュメモリに、複数ワード同時アクセス
可能なメモリ1を用いる。図の例では、4ワード同時ア
クセス可能な場合を示し、1つのアドレス指定で4ワー
ド同時に読み出される。比較器5もそれぞれのバンクに
対して設けて、読み出結果を直ちに比較できる。メモリ
1への書き込みは、空きバンク検知器8により空バンク
のうち1つだけを選択して書き込むため、複数バンクへ
の書き込みは起こらない。 【効果】 ハッシュアドレス上の同時にアクセスできる
ワードが全て塞がるまで、ハッシュ衝突による連想メモ
リへの書き込みは起こらず、連想メモリの使用頻度が下
がり、連想メモリのオーバーフローを防ぐ。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、ハッシュ処理され記
憶されたデータの検索装置に関し、特に識別子の一致す
るデータの対を生成し、発火処理するデータ駆動形計算
機に用いて有効なデータ検索装置に関するものである。
【0002】
【従来の技術】この種のデータ駆動形計算機としては、
図2に示すようなデータ駆動形マイクロプロセッサが既
に本出願人により提案されている(特願平3−4098
1号,平成3年2月12日出願)。図3のプログラム
(データフローグラフ)を実行する場合について、その
動作を説明する。外部から入出力インタフェース部IF
を経由して入力されたパケットは、図4に示されている
ように、行き先プロセッサ番号(PE#)「1」、制御
情報(SEL−CODE)、命令コード(OPC)
「+」、行き先ノード番号#1、左データ「I」を含ん
でいる。制御情報SEL−CODEのうち、PAIRは
マッチングメモリで発火(対生成)処理をするか否か、
IMはデータメモリからオペランド(被演算データ)の
読み出しを行うか否か、I/O(Oは反転,以下バーO
と記す)は演算終了後プロセッサ内で継続処理するか否
か、VECTはベクトル演算対象データであるか否か、
L/バーRは発火処理以前に左データ位置に格納されて
いるデータが2項演算の左データとなるデータであるか
否かを示している。
【0003】外部から入力されたパケット「I」は、入
出力インターフェース部IFを経由してマッチングメモ
リ部MMに到るが、図4(a)に示すように、SEL−
CODEのIMフラッグが「1」であるため、2項演算
の相手のデータはデータメモリ部DMから読み出すもの
と解釈されて何も処理されずにデータメモリ部DMに送
られる。データメモリ部DMにおいては、IMフラグが
「1」であるため、パケットの右データ位置に格納され
ている値「n」に相当するアドレスに記憶されているデ
ータが読み出され、「n」の代わりに右データ位置に格
納される。
【0004】データメモリ部DMからは、演算部FAL
Uとプログラムメモリ部PMに同時にパケットが送出さ
れる。演算部FALUでは、命令コード「+」に従って
2項演算が実行され、結果データがパケットの左データ
位置に格納される。
【0005】一方、プログラムメモリ部PMでは、パケ
ットの行き先ノード番号「#1」に従ってプログラムメ
モリの読み出しが行われ、次の行き先ノード番号「#
2」、次の命令コード「×」、次の制御情報などが読み
出されてパケット中の相当部分が更新される。なお、行
き先ノード番号が複数あれば、それぞれのノード番号に
対してコピーによるパケットの連続発生が行われる。
【0006】演算部FALU、およびプログラムメモリ
部PMで更新されたこれらの情報は、コピー部KCOP
Yで連結併合され再び入出力インターフェース部IFに
送られる。コピー部KCOPYでは、1つのノードの演
算結果に対して複数の行き先ノードが存在するような場
合に、演算結果データのコピーが行われ、プログラムメ
モリ部PMで読み出された複数のタグ情報に付与され
て、同一の結果データをもつ複数のパケットが出力され
る。
【0007】この演算結果パケットが入出力インターフ
ェース部IFを経由して再びマッチングメモリ部MMに
到着したとき、すでにデータ「J」をもつパケット(図
4(b)参照)がマッチングメモリ部MMに到着して格
納されていれば、これら2つのパケットの行き先ノード
番号が何れも「#2」であることから、発火処理が行わ
れ、2項演算のためのパケットが生成される。一方、相
手となるパケットが未到着であれば、マッチングメモリ
部MMにおいて相手パケットの待ち合わせを行う。マッ
チングメモリ部MMで生成された前記パケットは、IM
フラグが「0」であることから、データメモリ部DMを
通過し、演算部FALUとプログラムメモリ部PMに送
られる。演算部FALUでは乗算が実行される。また、
プログラムメモリ部PMでは、次のタグ情報が読み出さ
れ、図4(c)に示すようなパケットに付与される。こ
れらの情報は、コピー部KCOPYで連結併合された後
インタフェース部IFに送られるが、図4(c)に示さ
れているようにSEL−CODEのI/バーOフラグが
0であることから外部に出力される。
【0008】以上説明したように、2つの入力を受け入
れたプログラム(データフローグラフ)は、所定の処理
を完了し、結果をパケットの形で出力する。
【0009】図5は上記マッチングメモリ部MMの一構
成例を示すブロック図である。図において、612は入
力セレクタであり、後述するFIFOメモリ611から
出力されたパケットと入力されたパケットの何れかを選
択する。なお、ここでは、パケットはそのビットマップ
を図6に示すが如く構成され、62ビットの幅を有して
いるものとする。選択されたパケットはデータラッチ6
08に与えられ、そこでデータ入力信号C0が“H”の
タイミングでラッチされる。ラッチされたパケットはそ
の31ビットの識別子のうち、入力データの入力順等の
属性を示すカラー/世代識別番号DNの9ビットと、ノ
ード番号NNの下位9ビットとが、排他的論理和演算を
行いハッシュアドレスを生成するアドレス生成手段であ
る演算器101の2つの入力端子に夫々与えられる。こ
こで夫々のビット毎に排他的論理和演算が行われ、その
演算結果がハッシュアドレスとなり、ハッシュメモリ6
01に与えられる。
【0010】また、31ビットの識別子と18ビットの
オペランドデータODとは連想メモリ部602にも与え
られる。また、識別子のうちノード番号NNの下位9ビ
ットを除いた22ビットと、18ビットのオペランドデ
ータODとを合わせた40ビットの書き込みデータがハ
ッシュメモリ601に与えられる。
【0011】図7はハッシュメモリ601の構成を示す
ブロック図であり、ハッシュメモリ601は41ビット
のビット幅を有し、ハッシュアドレス9ビット分(29
=512)のアドレス空間を有している。そして、18
ビットのオペランドデータODと、31ビットの識別子
のうちノード番号NNの下位9ビットを除いた22ビッ
トとが格納されると共に、そのアドレスの内容の有効
(PB=1)、無効(PB=0)の別を示すフラグであ
るプレゼンスビットPBが格納されている。ハッシュメ
モリ601には前述の如く9ビットのハッシュアドレス
と40ビットの書き込みデータが与えられると共に、後
述する制御部606からそのリードライトサイクルを定
めるリードライト信号W/バーR・Hと、プレゼンスビ
ットPBの更新を行うセット信号S/バーRとが与えら
れ、リードライト信号W/バーR・H=“H”のサイク
ルで書き込みがなされ、W/バーR・H=“L”のサイ
クルで指定されたアドレスの読み出しデータとプレゼン
スビットPBとが出力される。
【0012】図8は連想メモリ部602の構成を示すブ
ロック図である。図において、201はハッシュ衝突し
たときにデータラッチ608からの31ビットの識別子
と一致するデータを検索する連想メモリ(以下CAMと
いう)であり、32ビット×32アドレスの容量となっ
ている。CAM201のうち1ビットは前記ハッシュメ
モリ601と同様に格納されているデータの有効性を判
別するためのプレゼンスビットPBの格納に用いられ
る。CAM201には各アドレスに対して一致,不一致
検索ライン(以下マッチラインという)が設けられてお
り、与えられた31ビットの識別子と、CAM201に
格納された識別子とが全て一致したアドレスのマッチラ
インが“H”となる判定信号が出力される。また、CA
M201にはセレクタ205を介してプレゼンスビット
PBの更新を行うセット信号S/バーRが与えられると
共に、リードライトのサイクルを定めるリードライト信
号W/バーR・Cが与えられる。セレクタ205は一端
に基準電圧が、他端にセット信号S/バーRが与えられ
ており、その切換端子にはリードライト信号W/バーR
・Cが与えられており、リードサイクルのときは基準電
圧が、ライトサイクルのときはセット信号S/バーRが
選択される。即ちリードサイクル(W/バーR・C=
L)のときは、プレゼンスビットPB=1のアドレスだ
けを検索する必要があるので、検索データのプレゼンス
ビットPBに相当するビットを常に1とし、ライトサイ
クル(W/バーR・C=H)のときのみプレゼンスビッ
トPBを更新する必要があるためにこのセレクタ205
は用いられる。
【0013】また、CAM201からは32ビットのマ
ッチラインに識別子の一致,不一致の別を示す判定信号
が出力されると共に、空アドレス検出器203に各アド
レスのプレゼンスビットPBが出力され、そこでプレゼ
ンスビットPBにより空アドレスが検出される。空アド
レス検出器203は32ビットの検出信号をアドレスセ
レクタ204の一端に出力すると共に、空アドレスがな
くCAM201の全アドレス空間にハッシュ衝突したパ
ケットの識別子が格納されたとき、そのことを示すフル
信号FLを制御部606に出力する。なお、検出信号は
CAM201のアドレスに対応する32ビットの出力で
あり、その空アドレスのビットが“H”となっている。
アドレスセレクタ204の他端にはマッチラインからの
判定信号が与えられ、その切換端子に与えられたリード
ライト信号W/バーR・Cのリードライトに応じアドレ
スセレクタ204はリードサイクルのときは判定信号
を、またライトサイクルのときは空アドレス検出器20
3の検出信号を夫々選択する。アドレスセレクタ204
のアドレス選択出力はRAM202に与えられ、それに
より指定されたアドレスがアクセスされる。RAM20
2はオペランドデータを格納するためのものであり、1
8ビット×32アドレスの容量となっている。リードラ
イト信号W/バーR・C及びアドレス選択出力に応じて
オペランドデータの読み書きが行われる。即ちリードサ
イクルではRAM202のアドレスラインには判定信号
が与えられ、CAM201に入力されたパケットの識別
子と一致する識別子がCAM201に格納されている場
合(これをCAM201がヒットしたという)、判定信
号に応じたアドレスの18ビットのオペランドデータが
読み出しデータとして出力される。この読み出しデータ
は判定信号とマージされ、50ビットの出力信号として
データラッチ609に出力される。またCAM201が
ヒットしなければ判定信号は32ビット全て“L”のま
まであり、RAM202からは如何なるオペランドデー
タも読み出されない。一方、ライトサイクルでは空アド
レス検出器203からの検出信号が選択され、CAM2
01とRAM202の何れかのアドレスに31ビットの
識別子と18ビットのオペランドデータODとを格納す
るかを指示する。また、CAM201がヒットした場合
はプレゼンスビットPBを更新する必要が生じるので、
ライトサイクルにてCAM201に与えられるアドレス
はヒットしたアドレスである。
【0014】入力されたパケットとハッシュアドレスと
が等しいハッシュメモリ601内の40ビットの格納デ
ータ、ハッシュメモリ601のプレゼンスビットPB及
び連想メモリ部602の出力信号は、データラッチ60
9にクロックT1のタイミングでラッチされ、プレゼン
スビットPBは制御部606へ、また格納データのうち
の22ビットの識別子は一致検出器(第1の判定手段)
603の一端へ、格納データのうち18ビットのオペラ
ンドデータODは出力セレクタ(選択手段)605の一
端へ夫々与えられる。また、連想メモリ部602の出力
信号のうち32ビットの判定信号はヒット検出器(第2
の判定手段)604へ、また18ビットのオペランドデ
ータODは出力セレクタ605の他端へ与えられる。
【0015】一致検出器603の他端には、入力された
31ビットの識別子の下位9ビットを除いた22ビット
の識別子が与えられ、入力された2つの識別子の一致を
検出し、一致している場合は一致信号EQを制御部60
6に出力する。即ち、一致した場合はハッシュアドレス
として用いた9ビットの識別子と22ビットの識別子と
が全て一致したことになるため、その旨を一致信号EQ
として制御部606へ告知する。
【0016】また、ヒット検出器604はCAM201
からの32本のマッチラインの判定信号をモニタし、そ
の中の1ビットでも“H”に立上がったものがあった場
合は(=CAM201がヒットすれば)、ヒット信号H
ITを制御部606及び出力セレクタ605の切換端子
に与える。
【0017】出力セレクタ605は、入力されたパケッ
トの識別子とハッシュメモリ601または連想メモリ6
02内に格納された識別子とが全て一致する発火対象の
相手データが検索された場合に、一致した識別子を格納
した方のメモリからのオペランドデータODを選択する
ものである。選択結果のオペランドデータODはデータ
ラッチ610に与えられ、制御部606からのクロック
T2の“H”のタイミングでラッチされ、データ対形成
器607の一端に与えられる。出力セレクタ605の選
択は切換端子に与えられたヒット信号HITにより行わ
れ、CAM201がヒットした場合にのみ連想メモリ部
602に格納されていたオペランドデータODを選択
し、ヒットしなかった場合にはハッシュメモリ601に
格納されていたデータを選択し、データラッチ610に
送る。
【0018】データ対形成器607は、出力セレクタ6
05により選択されたオペランドデータODが一端に入
力されると共に、他端にはデータラッチ608からの6
2ビットの入力されたパケットのデータが与えられる。
そして、2つのデータがマージされて80ビットの2オ
ペランドデータが形成される。このとき2項演算の減算
命令の如くオペランドの順序関係が重要なものがあるの
で、選択されたオペランドデータODと入力されたパケ
ットのオペランドデータODとは正しく左または右のオ
ペランドとして配置される必要がある。図9はデータ対
形成器607の構成を示すブロック図である。データ対
形成器607は2つのデータセレクタ701,702か
らなり、夫々の切換端子には入力されたパケットの左/
右データ選択ビットでその状態を示すセレクタ制御信号
L/バーRが与えられる。データセレクタ701のA端
子及びデータセレクタ702のB端子にはデータラッチ
608よりの入力されたパケットのオペランドデータO
Dが夫々与えられ、データセレクタ701のB端子及び
データセレクタ702のA端子にはデータラッチ610
よりの格納されたオペランドデータODが与えられる。
そして、入力されたパケットのセレクタ制御信号L/バ
ーRが“1”のときは、夫々のデータセレクタ701,
702のA端子に与えられたオペランドデータが、また
L/バーRが“0”のときはB端子に与えられたオペラ
ンドデータが選択され、データセレクタ701からの選
択出力が左オペランドとなり、データセレクタ702か
らの選択出力が右オペランドとなり、それらと入力され
たパケットのオペランドデータODを除く他のデータと
がマージされて出力される。
【0019】制御部606は、プレゼンスビットPB,
ヒット信号HIT,一致信号EQ,入力されたパケット
が2入力命令か1入力命令かの別を示すFC処理選択ビ
ットの状態で定まる入力選択信号FC(2入力命令FC
=1,1入力命令FC=0)及びフル信号FLが与えら
れ、それらを判断してリードライト信号W/バーR・
C,W/バーR/H,セット信号S/バーR,データ出
力信号C1及び後述するFIFOメモリ611への書き
込み信号WRFを出力する。またデータ入力信号C0,
データ出力許可信号バーA1が入力され、それらを判断
してデータ入力許可信号バーA0,クロックT1及び同
T2を出力する。ここでデータ入力信号C0及びデータ
入力許可信号バーA0は、このマッチングメモリ部MM
と、このマッチングメモリ部MMに対してデータを与え
る前段処理部との間のデータ転送制御信号であり、デー
タ出力信号C1及びデータ出力許可信号バーA1は、こ
のマッチングメモリMMの出力するデータを受取る後段
処理部との間のデータ転送制御信号である。
【0020】制御部606にフル信号FLが入力され、
さらにハッシュ衝突が生じた場合、制御部606から2
ポートタイプのFIFOメモリ611に書き込み信号W
RFが与えられる。このとき、FIFOメモリ611は
データ対形成器607からの出力信号のうち入力された
パケットの62ビットのデータを格納し、それを所定時
間バッファリングした後、入力セレクタ612の他端に
与える。この間に、ハッシュ衝突の原因となったハッシ
ュアドレスのハッシュメモリ601内のデータか、また
はCAM201内のデータの何れかのデータが読み出さ
れて発火されている場合は、FIFOメモリ611を経
由して再び入力されたパケットはこのマッチングメモリ
部MM内のハッシュメモリ601または連想メモリ部6
02の何れかで待合せを行うことができる。この際、入
力セレクタ612は通常外部より与えられるデータをセ
レクトし、FIFOメモリ611の出力端にバッファリ
ングを施されたデータが存在するときのみ、外部より与
えられるデータとFIFOメモリ611の与えるデータ
を交互にセレクトするよう制御される。
【0021】次に、以上の如く構成されたマッチングメ
モリ部MMの動作について説明する。なお、ハッシュメ
モリ601にはデータ対を待つ複数のパケットが格納さ
れているものとする。図10は、このマッチングメモリ
部MMの概略動作を説明するフローチャートである。パ
ケットが入力されると(S1)、連想メモリ部602で
は格納された識別子との一致,不一致を判定(S10)
すると共に、9ビットのハッシュアドレスがカラー/世
代識別番号DN(9ビット)とノード番号NNの下位9
ビットとの排他的論理和により生成される(S2)。次
に、ハッシュメモリ601のそのハッシュアドレスに有
効なデータが既に格納されているか否かが判定され(S
3)、連想メモリ部602の識別子と一致せず、かつS
3でデータが格納されていない場合は(S13)、入力
パケットをハッシュメモリ601のそのハッシュアドレ
スに格納し(S4)、有効なデータが既に格納されてい
る場合は22ビットの他の識別子が一致しているか否か
が判定され(S5)、一致していない場合はハッシュ衝
突が生じているので、入力パケットを連想メモリ部60
2に格納し(S7)、一致した場合はハッシュメモリ6
01内の格納データを選択し(S9)、それと入力パケ
ットとをデータ対となす発火処理を行う(S12)。但
し、連想メモリ部602の識別子と一致せず、かつハッ
シュメモリ601内の22ビットの他の識別子が不一致
の時に(S14)、連想メモリ部602が満杯か否かが
判定され(S6)、満杯のときは入力パケットをFIF
Oメモリ611に格納し(S8)、満杯でないときは連
想メモリ部602に格納した後(S7)、次の処理に移
る。また、入力パケットと連想メモリ部602に格納さ
れた識別子との一致,不一致の判定(S10)で一致し
たときは、連想メモリ部602の出力を選択し(S1
1)、発火処理する(S12)。以上が概略動作であ
る。
【0022】図11はこのマッチングメモリ部MMの動
作サイクルを説明するタイミングチャートであり、この
図に示す如く、マッチングメモリ部MMの動作サイクル
は、リードサイクル,処理サイクル及びライトサイクル
の3つのサイクルに分けられる。前段処理部からのデー
タ入力信号C0が制御部606に入力されると、前段処
理部への出力許可信号バーA0が“1”→“0”に変化
し、次の入力を禁止し、リードサイクルに入る。リード
サイクルに入ると、入力セレクタ612で選択された入
力パケットまたはCAM201のオーバーフローにより
循環されたパケットの何れかが、データ入力信号C0の
“0”→“1”のタイミングでデータラッチ608にラ
ッチされる。データラッチ608にパケットが入力され
ると、当該パケットの31ビットの識別子のうち、カラ
ー/世代識別番号DNの9ビットと21ビットのノード
番号NNの下位9ビットとが演算器101に与えられ、
それらの排他的論理和演算が行われ、9ビットのハッシ
ュアドレスが定められる。なお、この例では演算器10
1により2種類の識別コードの排他的論理和演算が行わ
れているが、識別コードの演算対象数及び演算内容はこ
れに限るものではなく、演算対象数は3つ以上でもよ
く、また演算内容は加算等の他の逆算可能な演算でもよ
い。
【0023】ハッシュアドレスが定められると、リード
サイクルではハッシュメモリ601と連想メモリ部60
2とが同時に読み出される。メモリ読み出しに必要な時
間が経過するとクロックT1が“0”→“1”に変化
し、読み出されたデータはデータラッチ609にラッチ
される。ここから処理サイクルに入り、一致検出器60
3及びヒット検出器604はハッシュメモリ601及び
連想メモリ部602より読み出された各データに基づい
て一致信号EQ及びヒット信号HITを出力する。即
ち、一致検出器603はハッシュ衝突が起こっているか
否かを検出するものであり、データラッチ608に入力
されているパケットの識別子とハッシュメモリ601か
ら読み出されてデータラッチ609にラッチされている
識別子との比較を行う。即ち、カラー/世代識別番号D
Nの9ビット,ノード番号NNの上位12ビット及びプ
ロセッサ識別ビットの1ビットの計22ビットの比較を
行う。これらの22ビットが全て等しいと判定される
と、9ビットのハッシュアドレスが等しく、また9ビッ
トのカラー/世代識別番号DNが等しいので、ノード番
号NNの下位9ビットも等しいことになり、31ビット
識別子の全てが等しいと判定され、一致検出器603は
一致信号EQ=“1”を制御部606に出力する。そし
て、ヒット検出器604では、連想メモリ部602に格
納されている識別子とデータラッチ608に入力されて
いるパケットの識別子とが等しい場合,即ち32ビット
のマッチラインの何れかが“H”となったときにヒット
信号HIT=“1”を出力する。
【0024】上述の操作に必要な時間が経過すると、ク
ロックT2が“0”→“1”に変化し、ライトサイクル
に入る。ライトサイクルでは、プレゼンスビットPBの
更新を含むメモリの書き込みとデータ対の生成が行われ
る。これらの操作に必要な時間が経過すると、制御部6
06はデータ出力信号C1を出力し、クロックT1,T
2及びデータ入力許可信号バーA0の復帰を行い、一連
の処理を終了する。但し、データ出力信号C1の出力は
入力されたパケットが発火したときだけであり、発火し
なかった場合は、クロックT1,T2及びデータ入力許
可信号バーA0の復帰だけを行い、データ出力信号C1
は出力されない。そして、このライトサイクルでは、プ
レゼンスビットPB,一致信号EQ,ヒット信号HI
T,フル信号FL及び入力選択信号FCによってリード
ライト信号W/バーR・H,W/バーR・C,FIFO
メモリ611の書き込み信号WRF及びセット信号S/
バーRが制御部606で生成される。この真理値表を図
12に示す。これにより、ハッシュメモリ601及び連
想メモリ部602に、入力されたパケットを書き込むか
否かを定め、下記の如くの動作をする。
【0025】図12の(1)は1入力命令が与えられた
場合を示し、ハッシュメモリ601の内容を何ら更新す
ることなく1オペランドデータがそのまま出力される。
図12の(2)〜(7)は2入力命令が与えられた場合
を示し、データを出力するか否かは各種の条件により定
まる。(2)はハッシュメモリ601の入力パケットに
より定められたハッシュアドレスにデータが格納されて
おり(PB=1)、それがハッシュ衝突を起こすことが
なかった(EQ=1)場合を示す。ハッシュメモリ60
1と連想メモリ部602とに重複してデータが格納され
ることはないので、この場合、CAM201がヒットす
ることはない(HIT=0)。このとき、ライトサイク
ルにおいてはハッシュメモリ601のプレゼンスビット
PBをリセットする必要があるのでリードライト信号W
/バーR・H=1,セット信号S/バーR=0とする。
連想メモリ部602には手を加える必要がないので、リ
ードライト信号W/バーR・C=0とする。入力された
パケットはハッシュメモリ601の内容と発火したの
で、ライトサイクルの終了と同時にデータ出力信号C1
を出力する。図12の(3)及び(4)は、ハッシュメ
モリ601に有効なデータが格納されていたが、それが
ハッシュ衝突を起こした場合を示す(PB=1,EQ=
0)。そして(3)ではCAM201でもヒットしなか
ったため(HIT=0)、入力されたデータは連想メモ
リ部602に格納され(W/バーR・C=1,S/バー
R=1)、データの出力は行われない(C1=0)。
(4)ではCAM201がヒットしたため(HIT=
1)、入力されたパケットは連想メモリ部602の内容
と発火し、出力される(C1=1)。ここでCAM20
1のプレゼンスビットPBがリセットされなければいけ
ないので、リードライト信号W/バーR・C=1,セッ
ト信号S/バーR=0とされる。(5)及び(6)はハ
ッシュメモリ601に有効なデータが格納されていなか
った場合であり(PB=0)、一致信号EQの値に意味
はない。(5)ではCAM201がヒットしなかった場
合を示し(HIT=0)、入力されたパケットはハッシ
ュメモリ601に書き込まれる(W/バーR・H=1,
S/バーR=1,C1=0)。(6)ではCAM201
がヒットしており、(4)と同様な操作を行う。また、
(7)はハッシュメモリ601に有効なデータが格納さ
れていたが、それがハッシュ衝突を起こし(PB=1,
EQ=0)、連想メモリ部602に格納する必要が生じ
たが、CAM201が満杯となり全アドレスが有効とな
った場合(FL=1)を示し、入力されたパケットはF
IFOメモリ611に所定時間バッファリングされる
(WRF=1)。図12を参照して上述した動作は全て
ライトサイクルにおけるものであり、ライトサイクル以
外の動作ではリードライト信号W/バーR・H,W/バ
ーR・Cは常に“0”となっている。
【0026】これらの動作で発火することが判明したパ
ケット及びデータはデータ対形成器607に送られ、オ
ペランド対パケットが形成されて出力される。このよう
にマッチングメモリ部MMにハッシュメモリ601と連
想メモリ部602とを併用し、両者の読み出しを同時に
行うことにより、ハッシュ衝突の如何に拘らず同じ速度
で処理ができ、制御も図12に示した如く簡潔に行え
る。
【0027】以上のように、データ駆動形計算機のマッ
チングメモリ部MMでは、二項演算命令に必要な2つの
オペランドを対にする処理を実行し、オペランド対の生
成をメモリによる待ち合わせで行なっている。その際、
待ち合わせメモリ容量の削減のために、待ち合わせアド
レスをハッシュしたハッシュメモリを採用している。そ
のため、同一アドレスで複数の組のオペランドが待ち合
わせしようとして生ずるハッシュ衝突が起こる。従来の
マッチングメモリ部MMでは、この問題点を回避するた
めに、ハッシュ衝突により待ち合わせ出来なかったオペ
ランド用に、連想メモリを用意し、ここで待ち合わせを
行わせるようにしている。
【0028】
【発明が解決しようとする課題】ところで、従来のマッ
チングメモリ部MMでは、ハッシュ衝突を生ずるのは稀
な場合と考え、これを救済する連想メモリの容量を小さ
く(32ワード)抑えている。しかし、実際のプログラ
ムをシミュレーションにより実行した結果からは、連想
メモリの容量をオーバーフローする場合が十分に考えら
れる。従来のマッチングメモリ部MMでは、連想メモリ
をオーバーフローしたオペランドは、FIFOメモリを
介して再度入力されるか(図5の構成例の場合)、マッ
チングメモリ部MMで待ち合わせを行うことなくマッチ
ングメモリ部MMから出力され、図2に示したようなリ
ング状に接続された他の機能ブロックをスルーして、再
びマッチングメモリ部MMに入力される。この間に、塞
がっていたハッシュアドレスが解放されるか、連想メモ
リに空きが生ずるかしなければ、永久にオペランド対の
生成がなされず、処理が進まないというデッドロック状
態に陥ってしまう。
【0029】この発明は上記のような問題点を解決する
ためになされたもので、ハッシュメモリを有効利用する
ことにより、データ駆動形計算機のマッチングメモリ部
等に適用した場合に、連想メモリの利用頻度を下げ、連
想メモリのオーバーフローを防ぐことができるデータ検
索装置を得ることを目的とする。
【0030】
【課題を解決するための手段】この発明の請求項1に係
るデータ検索装置は、識別子とそれ以外のデータで構成
されるパケットの該識別子から該パケットの格納アドレ
スを生成するアドレス生成手段と、生成された格納アド
レスによりN(2以上の整数)個のワードがアクセスさ
れ、該N個のワードの何れか1つに前記パケットの一部
または全部を格納するメモリと、入力されたパケットの
該メモリ内格納アドレスのN個のワードの何れかに既に
有効なパケットが格納されているとき、格納されている
N個のパケットの識別子の一部または全部と、入力され
たパケットの識別子の一部または全部とを比較し、それ
らの一致/不一致を判定する判定手段とを備えたもので
ある。
【0031】また、この発明の請求項2に係るデータ検
索装置は、識別子とそれ以外のデータで構成されるパケ
ットの該識別子から該パケットの格納アドレスを生成す
るアドレス生成手段と、生成された格納アドレスにより
アクセスされ、前記パケットの一部または全部を格納す
るハッシュメモリと、入力されたパケットの該メモリ内
格納アドレスに既に有効なパケットが格納されていると
き、格納されているパケットの識別子の一部または全部
と、入力されたパケットの識別子の一部または全部とを
比較し、それらの一致/不一致を判定する第1の判定手
段と、前記第1の判定手段が不一致と判定したとき、入
力されたパケットの識別子を検索データとして格納する
連想メモリと、入力されたパケットの識別子の一部また
は全部と、前記連想メモリに格納されている識別子の一
部または全部との一致/不一致を判定する第2の判定手
段と、前記各判定手段の判定結果に応じて、前記ハッシ
ュメモリまたは前記連想メモリからの出力を選択する選
択手段とを備えたデータ検索装置において、前記ハッシ
ュメモリとして、アドレス生成手段により生成された格
納アドレスによりN(2以上の整数)個のワードがアク
セスされ、該N個のワードの何れか1つに前記パケット
の一部または全部を格納するメモリを備えると共に、前
記第1の判定手段として、入力されたパケットの前記メ
モリ内格納アドレスのN個のワードの何れかに既に有効
なパケットが格納されているとき、格納されているN個
のパケットの識別子の一部または全部と、入力されたパ
ケットの識別子の一部または全部とを比較し、それらの
一致/不一致を判定する判定手段を備えたものである。
【0032】
【作用】この発明の請求項1のものにおいては、複数ワ
ード同時アクセス可能なメモリを用いることにより、同
時にアクセスできるワードが全て塞がるまでパケットを
格納することができ、当該メモリの使用効率向上を図る
ことができる。
【0033】また、この発明の請求項2のものにおいて
は、従来の技術で説明したデータ駆動形計算機のマッチ
ングメモリ部のように、ハッシュメモリと連想メモリで
構成されるデータ検索装置のハッシュメモリに、上述し
た複数ワード同時アクセス可能なメモリを用いることに
より、ハッシュアドレス上の同時にアクセスできるワー
ドが全て塞がるまで、ハッシュ衝突による連想メモリへ
の書き込みは起こらないので、連想メモリの利用頻度を
下げ、連想メモリのオーバーフローを防ぐことができる
【0034】
【実施例】以下、この発明の一実施例を図について説明
する。なお、ここで述べる実施例は、本発明によるデー
タ検索装置を、データ駆動形計算機におけるオペランド
対生成を司る機能をメモリ待ち合わせで実現するマッチ
ングメモリ部MMに適用したものである。従来技術とし
て、このマッチングメモリ部MMをハッシュメモリと連
想メモリとで実現したものを示したが、本実施例は、こ
のタイプのマッチングメモリ部MMを改良したもので、
連想メモリのオーバーフローによるデッドロックを回避
しようとするものである。従来のタイプのマッチングメ
モリ部MMでは、連想メモリが満杯となりデッドロック
を引き起こすという場合でも、ハッシュメモリの使用効
率は非常に低い場合が多い。この点に着目し、本発明で
は、ハッシュメモリの使用効率を上げ、連想メモリが満
杯となる事態をより少なくするのが狙いである。
【0035】図1に本実施例のハッシュメモリに関する
要部構成を示す。この図に示す実施例では、4ワード同
時アクセス可能なメモリの場合であるが、同時にアクセ
スできるワード数は限定しない。これより先は、図1に
示す4ワード同時アクセス可能なメモリを用いた場合に
ついて説明する。図1において、1は4ワード同時アク
セス可能なメモリであり、同一のアドレス空間に配置さ
れる4つのバンクに分割され、それそれのバンク毎に、
タグ(識別子)とオペランドからなる入力データを書き
込む書き込みドライバ(W/D)2と、読み出しデータ
を増幅するセンスアンプ(S/A)3を有する。4はア
ドレス生成手段としてのデコーダであり、上記メモリ1
の各バンク共通のワード線を選択する。5は本願の判定
手段(第1の判定手段)に相当する比較器であり、処理
の高速化のためメモリ1の各バンク毎に設けられ、入力
データのタグと各バンクから読み出されたタグをビット
単位に比較して、それらの一致/不一致を判定するもの
で、各比較器自体は従来技術の図5に示した一致検出器
603と同様なものである。6は上記メモリ1の各バン
ク出力のうち何れか1つを選択するセレクタ、7は上記
セレクタ6の出力と入力データとからオペランド対を生
成する対生成器であり、従来技術の図5に示したデータ
対形成器607に対応する。8は上記メモリ1の各バン
クから読み出されるプレゼンスビットPBに基づき空バ
ンクを検知する空きバンク検知器であり、従来技術の図
8に示した空アドレス検出器203と同様な構成であ
る。9は上記各比較器5や空バンク検知器8の出力に基
づき各書き込みドライバ2,セレクタ6,対生成器7等
を制御する制御部であり、従来技術の図5に示した制御
部606に後述する本願の機能を付加したものである。
【0036】次に動作について説明する。ハッシュメモ
リ全体の容量が従来のものと同じであるとすると、4ワ
ード同時アクセスするためには、メモリ空間を4つのバ
ンクに分割して使うこととなるので、アドレス空間は、
2ビット分従来のものより小さい。従って、従来のもの
より2ビット小さなアドレスがデコーダ4へ入力され
る。また、入力データにはオペランド対を生成するため
の識別子であるタグとオペランドが含まれている。ま
ず、外部よりアドレスと入力データが与えられると、デ
コーダ4によりアドレスがデコードされ、4つのバンク
に共通のワード線上のデータがそれぞれのセンスアンプ
3を通して同時に読み出される。4つのバンクからそれ
ぞれ読み出されたデータのタグが入力データのタグと各
バンク毎に設けられた比較器5により同時に比較され
る。各バンクの比較結果が制御部9へ入力され、その結
果からメモリ1へ書き込みを行うか,対生成を行うか,
或いは書き込み不能かの判断が制御部9によりなされ
る。
【0037】まず、メモリ1に書き込む場合の処理であ
るが、これは、4つの比較器5による比較結果が全て不
一致で、空きバンク検知器8により何れかのバンクに空
きがあった場合に実行される。制御部9から空バンクの
中で最も優先度の高いバンクの書き込みドライバ2に対
して書き込み要求信号が発せられ、そのバンクへ入力デ
ータが書き込まれる。書き込みバンクを決定する優先度
については特に限定はないが、一般的にはバンク番号の
小さいものを優先する方法等が考えられる。次に、対生
成を行う場合の処理であるが、これは、4つの比較器5
による比較結果で一致するものがあった場合に実行され
る。メモリ書き込みの際に複数バンクへの同時書き込み
がなされない限り、データ駆動方式では、タグの内容が
一致するバンクは一つである。制御部9からセレクタ6
に対して、タグの内容が一致したバンクを選択するセレ
クト信号が発せられ、そのバンクから読み出された内容
が選択される。対生成器7では、選択されたバンクのオ
ペランドが入力データに付加されてオペランド対が生成
される。対生成が実行された後には、読み出されたバン
クの情報は必要ないので、対生成の処理と同時に、読み
出されたバンクの情報をクリアする処理も実行される。
この処理は、一般的には、メモリ内容が有効か無効かを
示す識別フラグ(プレゼンスビットPB)をクリア(ゼ
ロ書き込み)することで実現される。更に、4つの比較
器5による比較結果が全て不一致で、空バンク検知器8
により4つのバンク全てに空きがなかった場合には、こ
のメモリ1へ書き込むことができないので、制御部9は
書き込み不能信号を出力する。マッチングメモリ部MM
では、この信号により連想メモリに対する処理等を実行
することになる。
【0038】以上のように、本実施例では、ハッシュメ
モリと連想メモリとで構成される従来形のマッチングメ
モリ部MMのハッシュメモリに対して、複数ワード同時
アクセス可能なメモリを採用したことにより、ハッシュ
アドレス上の同時にアクセスできるワードが全て塞がる
まで、ハッシュ衝突による連想メモリへの書き込みが起
こらない。これにより、連想メモリがオーバーフローす
ることは疎か、連想メモリをアクセスすることも非常に
稀になると考えられる。従って、本実施例により、連想
メモリのオーバーフローによるデッドロックは十分に回
避できる効果がある。
【0039】なお、上記実施例では、処理の高速化のた
め、各バンク毎に比較器を設けて同時に比較出来るよう
にしたが、各バンクの出力を順次選択するマルチプレク
サを設けて、一つの比較器で時系列的に比較する構成も
可能である。
【0040】また、上記実施例では、メモリを複数のバ
ンクに分割したものについて示したが、1つの入力アド
レスに対して加算等により複数のアドレスを生成するこ
とにより、1つのアドレスで複数のワードをアクセス可
能としてもよい。
【0041】更に、上記実施例では、この発明のデータ
検索装置をデータ駆動形計算機のマッチングメモリ部に
適用した場合を説明したが、この発明はこれに限るもの
ではなく、キーワード等の識別子によりデータ検索を行
う一般的なマッチングメモリに対して適用できることは
言うまでもない。
【0042】
【発明の効果】以上のように、この発明によれば、識別
子とそれ以外のデータで構成されるパケットの該識別子
から該パケットの格納アドレスを生成するアドレス生成
手段と、生成された格納アドレスによりN(2以上の整
数)個のワードがアクセスされ、該N個のワードの何れ
か1つに前記パケットの一部または全部を格納するメモ
リと、入力されたパケットの該メモリ内格納アドレスの
N個のワードの何れかに既に有効なパケットが格納され
ているとき、格納されているN個のパケットの識別子の
一部または全部と、入力されたパケットの識別子の一部
または全部とを比較し、それらの一致/不一致を判定す
る判定手段とを備え、複数ワード同時アクセス可能なメ
モリを用いることにより、同時にアクセスできるワード
が全て塞がるまでパケットを格納することができ、当該
メモリの使用効率向上を図ることができる効果がある。
【0043】また、データ駆動形計算機のマッチングメ
モリ部のように、ハッシュメモリと連想メモリで構成さ
れるデータ検索装置のハッシュメモリに、上述した複数
ワード同時アクセス可能なメモリを用いることにより、
ハッシュアドレス上の同時にアクセスできるワードが全
て塞がるまで、ハッシュ衝突による連想メモリへの書き
込みは起こらないので、連想メモリの利用頻度を下げ、
連想メモリのオーバーフローを防ぐことができ、連想メ
モリのオーバーフローによるデッドロックを回避できる
効果がある。
【図面の簡単な説明】
【図1】この発明の一実施例の要部構成を示すブロック
図である。
【図2】データ駆動形計算機の全体構成例を示すブロッ
ク図である。
【図3】データ駆動形計算機で実行するプログラム(デ
ータフローグラフ)の一例を示す図である。
【図4】データ駆動形計算機で図3に示すプログラムを
実行した場合のパケットの変遷を示す図である。
【図5】従来のマッチングメモリ部の構成例を示すブロ
ック図である。
【図6】従来のデータパケットの一例を示す図である。
【図7】従来のハッシュメモリの構成例を示す図であ
る。
【図8】従来の連想メモリ部の構成例を示すブロック図
である。
【図9】従来のデータ対形成器の構成例を示すブロック
図である。
【図10】従来のマッチングメモリ部の概略動作を説明
するフローチャートである。
【図11】従来のマッチングメモリ部の動作サイクルの
説明図である。
【図12】従来のマッチングメモリ部のライトサイクル
の真理値表を示す図である。
【符号の説明】
1 メモリ 4 デコーダ(アドレス生成手段) 5 比較器(判定手段) 6 セレクタ 7 対生成器 8 空バンク検知器 9,606 制御部 101 演算器(アドレス生成手段) 601 ハッシュメモリ 602 連想メモリ部 603 一致検出器(第1の判定手段) 604 ヒット検出器(第2の判定手段) 605 出力セレクタ(選択手段) 607 データ対形成器

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 識別子とそれ以外のデータで構成される
    パケットの該識別子から該パケットの格納アドレスを生
    成するアドレス生成手段と、生成された格納アドレスに
    よりN(2以上の整数)個のワードがアクセスされ、該
    N個のワードの何れか1つに前記パケットの一部または
    全部を格納するメモリと、入力されたパケットの該メモ
    リ内格納アドレスのN個のワードの何れかに既に有効な
    パケットが格納されているとき、格納されているN個の
    パケットの識別子の一部または全部と、入力されたパケ
    ットの識別子の一部または全部とを比較し、それらの一
    致/不一致を判定する判定手段とを備えたことを特徴と
    するデータ検索装置。
  2. 【請求項2】 識別子とそれ以外のデータで構成される
    パケットの該識別子から該パケットの格納アドレスを生
    成するアドレス生成手段と、生成された格納アドレスに
    よりアクセスされ、前記パケットの一部または全部を格
    納するハッシュメモリと、入力されたパケットの該メモ
    リ内格納アドレスに既に有効なパケットが格納されてい
    るとき、格納されているパケットの識別子の一部または
    全部と、入力されたパケットの識別子の一部または全部
    とを比較し、それらの一致/不一致を判定する第1の判
    定手段と、前記第1の判定手段が不一致と判定したと
    き、入力されたパケットの識別子を検索データとして格
    納する連想メモリと、入力されたパケットの識別子の一
    部または全部と、前記連想メモリに格納されている識別
    子の一部または全部との一致/不一致を判定する第2の
    判定手段と、前記各判定手段の判定結果に応じて、前記
    ハッシュメモリまたは前記連想メモリからの出力を選択
    する選択手段とを備えたデータ検索装置において、前記
    ハッシュメモリとして、アドレス生成手段により生成さ
    れた格納アドレスによりN(2以上の整数)個のワード
    がアクセスされ、該N個のワードの何れか1つに前記パ
    ケットの一部または全部を格納するメモリを備えると共
    に、前記第1の判定手段として、入力されたパケットの
    前記メモリ内格納アドレスのN個のワードの何れかに既
    に有効なパケットが格納されているとき、格納されてい
    るN個のパケットの識別子の一部または全部と、入力さ
    れたパケットの識別子の一部または全部とを比較し、そ
    れらの一致/不一致を判定する判定手段を備えたことを
    特徴とするデータ検索装置。
JP3180326A 1991-06-25 1991-06-25 データ検索装置 Pending JPH052608A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3180326A JPH052608A (ja) 1991-06-25 1991-06-25 データ検索装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3180326A JPH052608A (ja) 1991-06-25 1991-06-25 データ検索装置

Publications (1)

Publication Number Publication Date
JPH052608A true JPH052608A (ja) 1993-01-08

Family

ID=16081260

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3180326A Pending JPH052608A (ja) 1991-06-25 1991-06-25 データ検索装置

Country Status (1)

Country Link
JP (1) JPH052608A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104133661A (zh) * 2014-07-30 2014-11-05 西安电子科技大学 基于列存储的多核并行哈希分区优化方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104133661A (zh) * 2014-07-30 2014-11-05 西安电子科技大学 基于列存储的多核并行哈希分区优化方法
CN104133661B (zh) * 2014-07-30 2017-01-18 西安电子科技大学 基于列存储的多核并行哈希分区优化方法

Similar Documents

Publication Publication Date Title
JP2668438B2 (ja) データ検索装置
US6526474B1 (en) Content addressable memory (CAM) with accesses to multiple CAM arrays used to generate result for various matching sizes
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
JPH0564816B2 (ja)
EP0125855B1 (en) Buffer-storage control system
JPH0231419B2 (ja)
KR100555997B1 (ko) 메모리 엔진과, 데이터 조사 및 정정 방법
WO1997030395A1 (fr) Memoire a acces multiples et processeur de donnees procurant l'acces a cette memoire
JPH0668736B2 (ja) 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法
JPH0644135A (ja) 情報処理装置
JP3725547B2 (ja) 限定ラン分岐予測
JP2002229852A (ja) キャッシュシステムの制御回路
US7069386B2 (en) Associative memory device
JPH052608A (ja) データ検索装置
US5276853A (en) Cache system
JP3082944B2 (ja) パイプライン処理装置
JPH03229381A (ja) データ駆動形計算機
JPH0528291A (ja) 記憶装置
JPS59112479A (ja) キヤツシユメモリの高速アクセス方式
JPH0512098A (ja) 記憶装置
JP3697990B2 (ja) ベクトル処理装置のオペランドキャッシュ
JPH0384685A (ja) データ検索装置
JPH07219845A (ja) キャッシュメモリ制御方式
JPH06332698A (ja) 情報処理装置