JP2015225675A - 連想メモリおよび半導体装置 - Google Patents
連想メモリおよび半導体装置 Download PDFInfo
- Publication number
- JP2015225675A JP2015225675A JP2014108100A JP2014108100A JP2015225675A JP 2015225675 A JP2015225675 A JP 2015225675A JP 2014108100 A JP2014108100 A JP 2014108100A JP 2014108100 A JP2014108100 A JP 2014108100A JP 2015225675 A JP2015225675 A JP 2015225675A
- Authority
- JP
- Japan
- Prior art keywords
- search
- data
- memory
- entry data
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】探索データが入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路とを備える、連想メモリにおいて、探索データに対して比較対象となるエントリデータの数を、全エントリデータ数の対数に抑え、消費電力を低減する。
【解決手段】メモリには、昇順または降順に並べ替えられたエントリデータをアドレスに対応付けて格納する。探索回路は、複数のエントリデータが格納されるアドレス全体を初期の探索領域とし、探索領域の中央のアドレスに格納されるエントリデータと探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて、次の探索における探索領域を狭める探索動作を繰り返す。
【選択図】図1
【解決手段】メモリには、昇順または降順に並べ替えられたエントリデータをアドレスに対応付けて格納する。探索回路は、複数のエントリデータが格納されるアドレス全体を初期の探索領域とし、探索領域の中央のアドレスに格納されるエントリデータと探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて、次の探索における探索領域を狭める探索動作を繰り返す。
【選択図】図1
Description
本発明は、連想メモリおよびそれを用いた半導体装置に関し、特に消費電力の低い連想メモリに好適に利用できるものである。
連想メモリ(CAM:Content Addressable Memory)は、ルーターやネットワークスイッチに用いられており、ネットワークトラフィックの増大に伴ってCAMにも大容量化が求められている。オープンフローによって実現される仮想ネットワークでは、1個のオープンフローコントローラが多数のオープンフロースイッチを統合して制御する。オープンフロースイッチを始めとするネットワーク機器に搭載されるCAMには、大容量、高速スループット、ダイナミックエントリーテーブル、低消費電力等が求められる。
特許文献1には、記憶回路に記憶されたデータと探索データとの間で大小比較とレンジ一致比較の機能を実現するCAMが開示されている。
特許文献2には、同一キャッシュエントリに割り付けられる異なるタグの複数のメモリエントリへのアクセスが競合するか連続する場合にも、メインメモリへのアクセスを抑え、システム効率を向上することができるキャッシュメモリ装置が開示されている。
特許文献1及び2について本発明者が検討した結果、以下のような新たな課題があることがわかった。即ち特許文献1に記載されるようなCAMは、探索データを記憶されている全てのデータ(エントリデータ)と比較するため、消費電力が大きいことが分かった。このようなCAMを本明細書ではバイナリCAMと呼び、BCAMと略記する。
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
一実施の形態によれば、下記の通りである。
すなわち、探索データが入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路とを備える、連想メモリであって以下のように構成される。メモリには、昇順または降順に並べ替えられたエントリデータがアドレスに対応付けて格納される。探索回路は、メモリのアドレス全体を初期の探索領域とし、探索領域の中央のアドレスに格納されるエントリデータと探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて、次の探索の探索領域を狭める探索動作を繰り返す。
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、消費電力の低いCAMを提供することができる。
1.実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<SRAM上で2分探索(Binary Search)を行う連想メモリ(CAM)>
本願において開示される代表的な実施の形態に係る連想メモリ(CAM)(100)は、探索データ(Search Entry)が入力され、複数のエントリデータを格納するメモリ(1_1〜1_5、2_2〜2_4)と、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路(3_1〜3_5、4_1〜4_5)とを備える。
本願において開示される代表的な実施の形態に係る連想メモリ(CAM)(100)は、探索データ(Search Entry)が入力され、複数のエントリデータを格納するメモリ(1_1〜1_5、2_2〜2_4)と、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路(3_1〜3_5、4_1〜4_5)とを備える。
前記メモリには、前記複数のエントリデータが昇順または降順に並べ替えられアドレスに対応付けられて格納可能である。
前記探索回路は、前記複数のエントリデータが格納されるアドレス全体(0thw〜15thw)を初期の探索領域とし、前記探索領域の中央のアドレス(7thw、…)に格納されるエントリデータと前記探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて前記探索領域を狭める探索動作を繰り返す。
これにより、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される1個ずつで済むため、比較対象のエントリデータの数が全エントリデータ数(2N)の対数(log22N=N)に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。ここで探索領域の「中央」のアドレスとは、数学的に厳密な1/2を意味するものではなく、概ね中央であればよい。例えば16エントリの中央のアドレスは7番目でも8番目でも良い。さらに大きな誤差を含んでいても良いが、正確に1/2に近い程、探索に要するステップ数(上記「繰り返し」の数)、即ち比較の回数を少なくすることができる。以下、本明細書における「中央」の語は同様に定義される。
〔2〕<パイプライン構成>
項1において、前記メモリは、各ワードに前記探索領域の中央のアドレスが対応付けされた、1ワードから2のN−1乗までの2のべき乗数毎のワード数を持つ第1から第Nメモリ(1_1〜1_4)を有し(Nは自然数)、前記探索回路は、前記第1から第Nメモリに対応して設けられる第1から第N比較回路(3_1〜3_4)を有する。
項1において、前記メモリは、各ワードに前記探索領域の中央のアドレスが対応付けされた、1ワードから2のN−1乗までの2のべき乗数毎のワード数を持つ第1から第Nメモリ(1_1〜1_4)を有し(Nは自然数)、前記探索回路は、前記第1から第Nメモリに対応して設けられる第1から第N比較回路(3_1〜3_4)を有する。
前記比較回路は、対応するメモリからエントリデータを読み出し前記探索データと比較して、当該エントリデータが格納されるアドレスと比較結果とを後段の比較回路に出力する。前記比較回路は、前段から入力されるアドレスと比較結果に基づいて、比較対象のエントリデータを読み出すアドレスを決める。
これにより、2分探索を行うCAMをパイプラインで構成することができ、スループットを向上することができる。
〔3〕<2のN乗エントリのCAM>
項2において、前記メモリは、2のN乗−1のアドレスを有する1ワードの第N+1メモリ(1_5)をさらに有し、前記探索回路は、第N−1比較回路から入力される比較結果に基づいて前記探索データと前記第N+1メモリに格納されるエントリデータとを比較する第N+1比較回路(3_5)をさらに有する。
項2において、前記メモリは、2のN乗−1のアドレスを有する1ワードの第N+1メモリ(1_5)をさらに有し、前記探索回路は、第N−1比較回路から入力される比較結果に基づいて前記探索データと前記第N+1メモリに格納されるエントリデータとを比較する第N+1比較回路(3_5)をさらに有する。
これにより、2のべき乗(2N)ワードのエントリ数を備えるCAMを提供することができる。
〔4〕<2段階サーチを行う連想メモリ>
項1において、前記連想メモリと同一構成の連想メモリを第1の連想メモリ(BSRAM,100)とする。2段階サーチを行う連想メモリ(500)は、前記第1の連想メモリと同じエントリ数の第2の連想メモリ(BCAM,200)と、複数個の前記第1の連想メモリ(100_1〜100_m)と、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路(900)をさらに備える。
項1において、前記連想メモリと同一構成の連想メモリを第1の連想メモリ(BSRAM,100)とする。2段階サーチを行う連想メモリ(500)は、前記第1の連想メモリと同じエントリ数の第2の連想メモリ(BCAM,200)と、複数個の前記第1の連想メモリ(100_1〜100_m)と、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路(900)をさらに備える。
これにより、サーチキャッシュとして機能する第2の連想メモリにヒットしたときにはレイテンシが小さく、ヒットしない場合に複数の第1の連想メモリを順次探索対象とすることで、大容量でも消費電力の小さいCAMを提供することができる。
〔5〕<2面サーチキャッシュ>
項4において、連想メモリ(500)は、前記第2の連想メモリを2個(200_1、200_2)備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする。
項4において、連想メモリ(500)は、前記第2の連想メモリを2個(200_1、200_2)備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする。
これにより、新たなエントリデータの書き込みが待たされることがない。エントリデータを一方の第2の連想メモリから第1の連想メモリへ転送する期間には、転送が行われている当該第2の連想メモリへは新たなエントリデータを書き込むことができない。しかしその期間に新たなエントリデータの書き込み要求が発生した場合には、転送対象とされない他方の第2の連想メモリに対して新たなエントリデータの書き込みを行う事ができる。
〔6〕<探索順序>
項4または項5において、連想メモリ(500)は、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする。
項4または項5において、連想メモリ(500)は、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする。
これにより、ヒットするまでの時間を短縮することができる。
〔7〕<ソート機能付きCAM>
項4または項5において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセル(10)で構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路(9_1〜9_N)をさらに有する。前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する。
項4または項5において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセル(10)で構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路(9_1〜9_N)をさらに有する。前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する。
これにより、エントリデータの並べ替え(ソート)に要する時間を短縮することができる。
〔8〕<複数の探索データの並列入力>
項1において、前記メモリ(2_2〜2_4)は、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路(3_1〜3_5と4_1〜4_5)を、前記複数のポート毎に並列に備える。
項1において、前記メモリ(2_2〜2_4)は、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路(3_1〜3_5と4_1〜4_5)を、前記複数のポート毎に並列に備える。
これにより、複数の探索データ(Search Entry 1とSearch Entry 2)を同時に並列して入力し、同時に並列して探索することができる。
〔9〕<半導体装置>
項1から項8までのいずれか1項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
項1から項8までのいずれか1項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
これにより、CAMが集積された半導体装置において、消費電力を低く抑えることができる。
〔10〕<SRAM上で2分探索(Binary Search)を行う連想メモリ(CAM)>
本願において開示される代表的な実施の形態に係る連想メモリは、2のN乗個のエントリデータを保持することができ(Nは自然数)、入力される探索データ(Search Entry)と一致するエントリデータを探索する、連想メモリ(CAM)(100)である。
本願において開示される代表的な実施の形態に係る連想メモリは、2のN乗個のエントリデータを保持することができ(Nは自然数)、入力される探索データ(Search Entry)と一致するエントリデータを探索する、連想メモリ(CAM)(100)である。
1ワードから2のN−1乗までの2のべき乗数毎のワード数を持つ第1から第Nメモリ(1_1〜1_4)と1ワードの第N+1メモリ(1_5)と、前記第1から第N+1メモリに対応して設けられる第1から第N+1比較回路(3_1〜3_5)とを有する。
前記第1比較回路は、前記第1メモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第2比較回路に出力する。
前記第2比較回路(3_2)は、前記第1比較回路から入力される比較結果に基づいて算出される前記第2メモリのアドレス(3rdwまたは11thw)に格納されるエントリデータを読み出し、前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第3比較回路(3_3)に出力する。
前記第3から第N比較回路(3_3〜3_4)は、前段の比較回路で比較対象とされたエントリデータが格納されていたアドレスと前段から入力される比較結果とに基づいて、比較対象のエントリデータを読み出すアドレスを決め、対応するメモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を後段の比較回路に出力する。
前記第N+1比較回路(3_5)は、前記探索データと前記第N+1メモリ(1_5)に格納されるエントリデータとが一致するか否かの比較を行う。
前記探索データと一致するエントリデータが存在するときには、当該一致するエントリデータを格納するメモリの番号と当該一致するエントリデータが格納される当該メモリ内のアドレスとに基づいて、前記探索データが前記2のN乗個のエントリデータをソートしたときの何番目のエントリデータと一致するかを算出して出力する。
これにより、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される1個ずつで済むため、比較対象のエントリデータの数が全エントリデータ数(2N)の対数(log22N=N)に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。
〔11〕<ソートされたエントリデータの格納>
項10において、前記第1メモリは前記2のN乗個のエントリデータのうち2のN−1乗番目のデータを格納し、前記第N+1メモリは前記2のN乗個のエントリデータのうち2のN乗番目のデータを格納する。
項10において、前記第1メモリは前記2のN乗個のエントリデータのうち2のN−1乗番目のデータを格納し、前記第N+1メモリは前記2のN乗個のエントリデータのうち2のN乗番目のデータを格納する。
前記第iメモリ(iは2以上N未満の自然数)は、jを2のi乗未満のすべての自然数とするとき、j×2のN−i乗番目のエントリデータのうち、前記第1メモリから第i−1メモリに格納されたエントリデータ以外のエントリデータを格納する。
連想メモリは、前記探索データと一致するエントリデータが存在するときに、当該一致するエントリデータに対応する前記j×2のN−i乗の値−1を出力する。
これにより、エントリデータがソートされて格納され、探索データと一致するエントリデータの順位が、格納されるアドレスとして出力される。
〔12〕<パイプライン構成>
項11において、前記第1から第N+1比較回路は、同一の探索データに対して、互いに異なるパイプラインステージで順次動作する。
項11において、前記第1から第N+1比較回路は、同一の探索データに対して、互いに異なるパイプラインステージで順次動作する。
これにより、2分探索を行うCAMをパイプラインで構成することができ、スループットを向上することができる。
〔13〕<2段階サーチを行う連想メモリ>
項11において、前記連想メモリと同一構成の連想メモリを第1の連想メモリ(BSRAM,100)とする。2段階サーチを行う連想メモリ(500)は、前記第1の連想メモリと同じエントリ数の第2の連想メモリ(BCAM,200)と、複数個の前記第1の連想メモリ(100_1〜100_m)と、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路(900)をさらに備える。
項11において、前記連想メモリと同一構成の連想メモリを第1の連想メモリ(BSRAM,100)とする。2段階サーチを行う連想メモリ(500)は、前記第1の連想メモリと同じエントリ数の第2の連想メモリ(BCAM,200)と、複数個の前記第1の連想メモリ(100_1〜100_m)と、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路(900)をさらに備える。
これにより、サーチキャッシュとして機能する第2の連想メモリにヒットしたときにはレイテンシが小さく、ヒットしない場合に複数の第1の連想メモリを順次探索対象とすることで、大容量でも消費電力の小さいCAMを提供することができる。
〔14〕<2面サーチキャッシュ>
項13において、連想メモリ(500)は、前記第2の連想メモリを2個(200_1、200_2)備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする。
項13において、連想メモリ(500)は、前記第2の連想メモリを2個(200_1、200_2)備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする。
これにより、新たなエントリデータの書き込みが待たされることがない。エントリデータを一方の第2の連想メモリから第1の連想メモリへ転送する期間には、転送が行われている当該第2の連想メモリへは新たなエントリデータを書き込むことができない。しかしその期間に新たなエントリデータの書き込み要求が発生した場合には、転送対象とされない他方の第2の連想メモリに対して新たなエントリデータの書き込みを行う事ができる。
〔15〕<探索順序>
項13または項14において、連想メモリ(500)は、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする。
項13または項14において、連想メモリ(500)は、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする。
これにより、ヒットするまでの時間を短縮することができ、ヒットした後の探索を行わないことによって消費電力を低減することができる。
〔16〕<ソート機能付きCAM>
項13または項14において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセル(10)で構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路(9_1〜9_N)をさらに有する。前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する。
項13または項14において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセル(10)で構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路(9_1〜9_N)をさらに有する。前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する。
これにより、エントリデータの並べ替え(ソート)に要する時間を短縮することができる。
〔17〕<複数の探索データの並列入力>
項11において、前記第2から第Nメモリのそれぞれは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路(4_1〜4_5)を、前記複数のポート毎に並列に備える。
項11において、前記第2から第Nメモリのそれぞれは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路(4_1〜4_5)を、前記複数のポート毎に並列に備える。
これにより、複数の探索データを同時に並列して入力し、同時に並列して探索することができる。
〔18〕<半導体装置>
項10から項17までのいずれか1項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
項10から項17までのいずれか1項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
これにより、CAMが集積された半導体装置において、消費電力を低く抑えることができる。
2.実施の形態の詳細
実施の形態について更に詳述する。
実施の形態について更に詳述する。
〔実施形態1〕<SRAM上で2分探索(Binary Search)を行うCAM>
本願において開示される代表的な実施の形態に係る連想メモリ(CAM)は、探索データ(Search Entry)が入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納されるメモリ内のアドレスを探索する探索回路とを備える。メモリには、複数のエントリデータが昇順または降順に並べ替えられ、それぞれがアドレスに対応付けられて格納される。例えばメモリが2Nワードの場合、2N個のエントリデータが昇順で格納されることにより、0w(ワード)には最小値を持つエントリデータが、2N−1wには最大値を持つエントリデータが格納される。ここで、メモリは例えばSRAM(Static Random Access Memory)であり、全てのエントリデータを1個で格納することができる大容量のSRAMであっても良いが、後述のように適切なワード数毎に分割された複数のSRAMで構成されるのが好適である。複数のSRAMのそれぞれをパイプラインステップとするパイプライン構成とすることにより、性能を向上することができるからである。また、同等の機能を有する他の記憶装置であってもよい。
本願において開示される代表的な実施の形態に係る連想メモリ(CAM)は、探索データ(Search Entry)が入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納されるメモリ内のアドレスを探索する探索回路とを備える。メモリには、複数のエントリデータが昇順または降順に並べ替えられ、それぞれがアドレスに対応付けられて格納される。例えばメモリが2Nワードの場合、2N個のエントリデータが昇順で格納されることにより、0w(ワード)には最小値を持つエントリデータが、2N−1wには最大値を持つエントリデータが格納される。ここで、メモリは例えばSRAM(Static Random Access Memory)であり、全てのエントリデータを1個で格納することができる大容量のSRAMであっても良いが、後述のように適切なワード数毎に分割された複数のSRAMで構成されるのが好適である。複数のSRAMのそれぞれをパイプラインステップとするパイプライン構成とすることにより、性能を向上することができるからである。また、同等の機能を有する他の記憶装置であってもよい。
探索回路は、複数のエントリデータが格納されるアドレス全体0w〜2N−1wを初期の探索領域とし、探索領域の中央のアドレス2N−1−1wに格納されるエントリデータと探索データ(Search Entry)とを比較する。一致したときは当該アドレス(2N−1−1w)を探索結果として出力し、不一致のときは大小比較の結果に基づいて探索領域を狭める。即ち、探索データ(Search Entry)が探索領域の中央のアドレス2N−1−1wに格納されるエントリデータよりも小さいときは、次の探索領域を中央のアドレス2N−1−1wよりも小さい領域0w〜2N−1−2wに変更し、大きいときは、次の探索領域を中央のアドレス2N−1−1wよりも大きい領域2N−1w〜2N−1wに変更する。この例のように、探索領域を繰り返しのステップごとに1/2に狭めるのが好ましい。
次に探索回路は、変更された(狭められた)探索領域の中央のアドレスに格納されるエントリデータと探索データ(Search Entry)とを比較する。即ち、前段で探索領域が0w〜2N−1−2wに変更されたときには、中央のアドレス2N−2−1wに格納されるエントリデータと探索データ(Search Entry)とを比較し、前段で探索領域が2N−1w〜2N−1wに変更されたときには、中央のアドレス3×2N−2−1wに格納されるエントリデータと探索データ(Search Entry)とを比較する。
探索回路は、この動作を探索領域が分割できなくなるまで繰り返し、その過程で探索データ(Search Entry)と一致したエントリデータを格納するアドレスの値をヒットアドレスとして出力し、一致するエントリデータがない場合には、ミスヒットとして出力する。
このように、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される1個ずつで済む。探索回路は、比較と探索領域の変更を順次繰り返しながら、探索データ(Search Entry)と一致するエントリデータを探索(サーチ)するので、全ての領域を探索する場合であっても、N回の比較を行えば足りるからである。これにより、比較対象のエントリデータの数が全エントリデータ数(2N)の対数(log22N=N)に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。
ここで、上記のメモリは、従来のCAMとは異なり、アドレスを指定してデータを読み書きすることができる単純なRAMでよい。探索データ(Search Entry)との比較は、探索回路内で行うためである。複数のエントリデータが昇順にソートされ、メモリのアドレス順に格納されている例について説明したが、ソートの方法と探索回路内の比較の方法とが対応していればよい。数値としてソート/比較するときには、数値が補数表現されているものとして大小比較を行ってもよいし、絶対値として比較しても良い。また数値以外の何らかの順序(例えばアルファベット順)を規定して、その順序における大小関係の比較を採用しても良い。また、エントリデータは同一の数値を複数個含んでいてもよい。
エントリデータの数がメモリのアドレス領域の大きさ(上の例では0w〜2N−1w)に満たない場合には、各エントリデータに有効フラグ(Validフラグ)を設けて有効/無効を管理し、無効なエントリデータを比較対象から除外する。これにより、エントリデータの数が少ない場合にも探索データ(Search Entry)のサーチを行うことができる。なお、有効フラグ(Validフラグ)については、以下の各実施形態におけるCAMにそれぞれ設けられてもよいが、CAM全体の構成と動作についての理解を容易にするために、有効フラグ(Validフラグ)についての説明は省略する。
本実施形態1に係る、SRAM上で2分探索(Binary Search)を行うCAMの、より具体的な構成例について説明する。
図1は、SRAM上で2分探索を行うCAMの構成例を示すブロック図である。N=4とし、エントリデータを128ビット×16ワードとした。
上述のメモリは、5個のSRAM1_1〜1_5に分割して実装され、全体としてパイプラインが構成されている。入力される探索データ(Search Entry)は、128ビットのレジスタ6_1〜6_8によって構成されるシフトレジスタで、順次後段のパイプラインステージに転送される。上述の探索回路は、探索データ(Search Entry)とエントリデータを比較する比較回路3_1〜3_5によって構成される。比較回路3_1〜3_5に機能については後述する。また、タイミング調整のために、128ビットのレジスタ6_1〜6_8とフリップフロップ(FF)7_1〜7_8が設けられている。
初段のSRAM1_1は1ワードのみのSRAMで、第7ワード(7thw)のエントリデータのみが格納される。SRAM1_2は2ワードSRAMで、第3ワード(3rdw)と第11ワード(11thw)のエントリデータが格納される。SRAM1_3は4ワードSRAMで、第1ワード(1stw)と第5ワード(5thw)と第9ワード(9thw)と第13ワード(13thw)のエントリデータが格納される。SRAM1_4は8ワードSRAMで、と第0ワード(0thw)と第2ワード(2ndw)と第4ワード(4thw)と第6ワード(6thw)と第8ワード(8thw)と第10ワード(10thw)と第12ワード(12thw)と第14ワード(14thw)のエントリデータが格納される。SRAM1_5は1ワードのみのSRAMで、第15ワード(15thw)のエントリデータのみが格納される。SRAM1_1とSRAM1_5は、1ワードSRAMであるのでアドレスは不要であり、それぞれ単純なレジスタで構成されればよい。図1に示される各配線は、1ビット又は複数ビットの配線で構成されるが、図示ではバス表記は省略されている。
図1に示されるCAMの動作について説明する。
16個のエントリデータは、予め例えば昇順にソートされ、5個のSRAM1_1〜1_5の上述のワードに格納される。ワード番号の大きいワードにより大きいエントリデータが格納され、最大のエントリデータはSRAM1_5である第15ワード(15thw)に、最小のエントリデータはSRAM1_4に第0ワード(0thw)に格納されている。ここで、初段のSRAM1_1に格納される第7ワード(7thw)は、探索領域である第0ワード(0thw)から第15ワード(15thw)の中央のアドレスである。
探索データ(Search Entry)は、SRAM1_1に格納される第7ワード(7thw)のエントリデータと、比較回路3_1によって比較される。図2は、比較回路3_1の動作例を示す説明図である。比較回路3_1は初段であるので、その前段の比較結果として不一致を示す「0」が入力され、アドレスとして比較対象であるエントリデータのアドレスとして「7」が入力される。このとき、探索データ(Search Entry)と、SRAM1_1から入力された第7ワード(7thw)のエントリデータとの比較結果は、「小」、「大」、「一致」の3通りである。比較回路3_1は、比較結果が「小」のとき不一致を示す「0」とアドレス「3」を、比較結果が「大」のとき不一致を示す「0」とアドレス「11」を、比較結果が「一致」のとき一致を示す「1」とアドレス「7」を出力する。比較結果が「小」のときは、探索領域は第7ワード(7thw)よりも小さい範囲に変更されるので、探索領域は0〜6となりその中央のアドレス「3」が出力される。比較結果が「大」のときは、探索領域は第7ワード(7thw)よりも大きい範囲に変更されるので、探索領域は8〜15となりその中央のアドレス「11」が出力される。このように、1回の比較の結果、探索領域は1/2に狭められ、対象の探索領域の中央のアドレスが、次段に出力される。
比較回路3_1から出力されたアドレスは、SRAM1_2に入力され、第3ワード(3rdw)または第11ワード(11thw)のエントリデータが読み出され、レジスタ6_9を経て比較回路3_2に供給される。比較回路3_1から出力された比較結果とアドレスは、フリップフロップ7_1と7_2を経て比較回路3_2に供給される。図3は、比較回路3_2の動作例を示す説明図である。比較回路3_2にはその前段の比較結果として一致を示す「1」または不一致を示す「0」が入力され、アドレスとして比較対象であるエントリデータのアドレスとして「3」または「11」が入力される。
前段からの入力アドレスが「3」の場合には、SRAM1_2から第3ワード(3rdw)のエントリデータが読み出され、比較回路3_2で探索データ(Search Entry)と比較される。比較回路3_2は、比較結果が「小」のとき不一致を示す「0」とアドレス「1」を、比較結果が「大」のとき不一致を示す「0」とアドレス「5」を、比較結果が「一致」のとき一致を示す「1」とアドレス「3」を出力する。
前段からの入力アドレスが「11」の場合には、SRAM1_2から第11ワード(11thw)のエントリデータが読み出され、比較回路3_2で探索データ(Search Entry)と比較される。比較回路3_2は、比較結果が「小」のとき不一致を示す「0」とアドレス「9」を、比較結果が「大」のとき不一致を示す「0」とアドレス「13」を、比較結果が「一致」のとき一致を示す「1」とアドレス「11」を出力する。
前段からの入力が「一致」でアドレスが「7」の場合には、比較回路3_2はそのまま、比較結果が「一致」を示す「1」とアドレス「7」を出力する。
このように、2回目の比較の結果、探索領域はさらに1/2、全体の1/4に狭められ、4通りの探索領域のうち対象の探索領域の中央のアドレスが、次段に出力される。
比較回路3_2から出力されたアドレスは、SRAM1_3に入力され、第1ワード(1stw)、第5ワード(5thw)、第9ワード(9thw)または第13ワード(13thw)のエントリデータが読み出され、レジスタ6_10を経て比較回路3_3に供給される。比較回路3_2から出力された比較結果とアドレスは、フリップフロップ7_3と7_4を経て比較回路3_3に供給される。図4は、比較回路3_3の動作例を示す説明図である。比較回路3_3にはその前段の比較結果として一致を示す「1」または不一致を示す「0」が入力され、アドレスとして比較対象であるエントリデータのアドレスとして「1」、「5」、「9」または「13」、或いは、それまでステージで探索データ(Search Entry)と一致した場合には、一致したエントリデータのアドレスとして、「3」、「7」または「11」が入力される。
前段からの入力アドレスが「1」の場合には、SRAM1_3から第1ワード(1stw)のエントリデータが読み出され、比較回路3_3で探索データ(Search Entry)と比較される。比較回路3_3は、比較結果が「小」のとき不一致を示す「0」とアドレス「0」を、比較結果が「大」のとき不一致を示す「1」とアドレス「2」を、比較結果が「一致」のとき一致を示す「1」とアドレス「1」を出力する。
前段からの入力アドレスが「5」の場合には、SRAM1_3から第5ワード(5thw)のエントリデータが読み出され、比較回路3_3で探索データ(Search Entry)と比較される。比較回路3_3は、比較結果が「小」のとき不一致を示す「0」とアドレス「4」を、比較結果が「大」のとき不一致を示す「1」とアドレス「6」を、比較結果が「一致」のとき一致を示す「1」とアドレス「5」を出力する。
前段からの入力アドレスが「9」の場合には、SRAM1_3から第9ワード(9thw)のエントリデータが読み出され、比較回路3_3で探索データ(Search Entry)と比較される。比較回路3_3は、比較結果が「小」のとき不一致を示す「0」とアドレス「8」を、比較結果が「大」のとき不一致を示す「1」とアドレス「10」を、比較結果が「一致」のとき一致を示す「1」とアドレス「9」を出力する。
前段からの入力アドレスが「13」の場合には、SRAM1_3から第13ワード(13thw)のエントリデータが読み出され、比較回路3_3で探索データ(Search Entry)と比較される。比較回路3_3は、比較結果が「小」のとき不一致を示す「0」とアドレス「12」を、比較結果が「大」のとき不一致を示す「1」とアドレス「14」を、比較結果が「一致」のとき一致を示す「1」とアドレス「13」を出力する。
前段からの入力が「一致」でアドレスが「3」、「7」または「11」の場合には、比較回路3_2はそのまま、比較結果が「一致」を示す「1」と入力されたアドレス「3」、「7」または「11」を出力する。
このように、3回目の比較の結果、探索領域はさらに1/2、全体の1/8に狭められ、8通りの探索領域のうち対象の探索領域の中央のアドレスが、次段に出力される。
比較回路3_3から出力されたアドレスは、SRAM1_4に入力され、第2ワード(2ndw)、第4ワード(4thw)、第6ワード(6thw)、第8ワード(8thw)、第10ワード(10thw)、第12ワード(12thw)または第14ワード(14thw)のエントリデータが読み出され、レジスタ6_11を経て比較回路3_4に供給される。比較回路3_3から出力された比較結果とアドレスは、フリップフロップ7_5と7_6を経て比較回路3_4に供給される。図5は、比較回路3_4の動作例を示す説明図である。比較回路3_4にはその前段の比較結果として一致を示す「1」または不一致を示す「0」が入力され、アドレスとして比較対象であるエントリデータのアドレスとして「2」、「4」、「6」、「8」、「10」、「12」または「14」が入力される。或いは、比較回路3_4にはそれまでのステージで探索データ(Search Entry)と一致した場合には、一致したエントリデータのアドレスとして、「1」、「3」、「5」、「7」、「9」、「11」または「13」が入力される。
このステージでは、探索領域は1ワード単位になっているので、これ以降探索領域を狭めることができない。前段から入力されたアドレスで指定されるエントリデータと探索データ(Search Entry)が一致したときには、一致を示す「1」とともにそのときのアドレスが出力され、前段からの入力が「一致」で一致したときのアドレスが入力された場合には、一致を示す「1」とともに入力されたアドレスがそのまま出力される。この段階で、実質的に、第0ワード(0thw)から第14ワード(14thw)までのエントリデータと、探索データ(Search Entry)との比較が完了したことになる。
図6は、比較回路3_5の動作例を示す説明図である。比較回路3_5は、前段の比較回路3_4からの出力が不一致を示す「0」である場合には、SRAM1_5に格納されている第15ワード(15thw)のエントリデータと、探索データ(Search Entry)との比較を行い、一致の場合にはアドレスとして「15」を出力し、不一致の場合には最終的に不一致を表す「miss hit」を出力する。前段の比較回路3_4からの出力が一致を示す「1」である場合には、入力されるアドレスをそのまま出力する。
以上のように、比較回路3_1〜3_5による比較動作を1段階実行する毎に探索範囲を1/2に狭めるので、比較の回数はエントリ数を2Nとするとき、2を底とする対数をとったlog22N=Nとなる。探索データを全てのエントリと比較する従来のBCAMでは、比較の回数はエントリ数と等しい2Nであるので、本実施形態に係るCAMでは比較の回数をN/2Nに抑えることができる。連想メモリ(CAM)の消費電力が比較の回数に概ね比例すると、本実施形態のCAMの消費電力は、従来のBCAMのN/2Nに抑えることができことになる。なおこれは、原理的な概算であって、現実の回路素子に実装した場合には、その実装状態に応じた誤差が生じる。例えば、上述の例ではN=4に対して比較の回数は5回である。一方、比較回路は通常の論理回路で構成されるため、セル内の比較回路よりも1回の比較動作で消費する電力は大きくなる可能性があるが、比較回数の減少により全体の消費電力はむしろ抑えられる。
本実施形態に示されるCAMは、他の制御回路と共に、単一の半導体基板上に形成され、1チップのLSI(Large Scale Integrated Circuit)に集積されて実現されると好適である。このようなLSIは、例えばシリコン基板上に、公知のCMOS(Complementary Metal-Oxide-Semiconductor field effect transistor)半導体の製造技術を用いて形成される。また、本実施形態に示されるCAMは、システムLSIを設計するための設計環境において、マクロセルライブラリとして提供され、或いは、ビット数やエントリ数を自由に指定して適切なマクロセルを生成することができるコンパイラとして提供されてもよい。以上述べたCAMの提供方法は、本実施形態に限られず、他の実施形態2〜6にも同様に妥当する。
〔実施形態2〕<2段階サーチを行うCAM>
実施形態1で示した、SRAM上で2分探索を行うCAM(以降、BSRAMと略記する)は、上述の通り消費電力を抑える効果が顕著であるが、全てのエントリデータがソートされていることが前提となる。したがって、古いエントリデータを最新のエントリデータで上書きするような部分的な書込みが許されず、必要な全てのエントリデータを読み出してソートし、再書き込みを行うような動作が必要となる。一方、従来のCAM(BCAM)は、探索データを同時に全てのエントリデータと比較するので、エントリデータの書き換え(追記、上書き)は、自由に行うことができる。
実施形態1で示した、SRAM上で2分探索を行うCAM(以降、BSRAMと略記する)は、上述の通り消費電力を抑える効果が顕著であるが、全てのエントリデータがソートされていることが前提となる。したがって、古いエントリデータを最新のエントリデータで上書きするような部分的な書込みが許されず、必要な全てのエントリデータを読み出してソートし、再書き込みを行うような動作が必要となる。一方、従来のCAM(BCAM)は、探索データを同時に全てのエントリデータと比較するので、エントリデータの書き換え(追記、上書き)は、自由に行うことができる。
本実施形態2においては、BSRAMの前段にサーチキャッシュとして機能するBCAMを設け、2段階サーチを行う。新しいエントリデータは、BCAMに順次書き込まれ、BSRAMのエントリ数に達するとソートされてBSRAMに転送される。探索データのサーチは、初めにBCAMをサーチ対象とし、BCAMでミスヒットした場合にBSRAMをサーチ対象とする。これにより、エントリデータの書き換え(追記、上書き)を、自由に行うことができ、消費電力を抑えることができる。1個のBCAMと多数のBSRAMを組合せて2段階サーチを行うCAMを構成することにより、消費電力を抑える効果はより顕著となる。
図7は、2段階サーチを行うCAMの構成例を示すブロック図である。
2段階サーチを行うCAM500は、サーチキャッシュとして機能する1個のバイナリCAM(BCAM)200と、メインサーチとして機能するm個のSRAM上で2分探索を行うCAM(BSRAM)100_1〜100_mとを含んで構成される。BCAM200は、例えば256エントリであり、1個の探索データが入力されたときに既に格納されている最大256個のエントリデータと同時に比較を行って、一致するエントリデータを格納するアドレスまたは不一致を示す「ミスヒット」を出力する。BCAM200は、それぞれのエントリが有効フラグ(Validフラグ)を備えており、Validのエントリデータのみが探索対象とされるので、Invalidのエントリデータとの比較結果は無視される。Invalidのエントリには、新たなエントリデータを書き込むことができ、この書き込みは探索動作と並列に実行することができる。BSRAM100_1〜100_mは、それぞれがBCAM200と同じ256エントリであり、1個の探索データが入力されたときに、格納されている256個のエントリデータと実施形態1で説明したアルゴリズムに基づく比較を行って、一致するエントリデータを格納するアドレスまたは不一致を示す「ミスヒット」を出力する。
CAM500に入力されるエントリデータは、BCAM200に書き込まれる。BCAM200の256個全てのエントリにエントリデータが書き込まれたとき、即ちFULLになったときには、BCAM200から256個のエントリを読み出し、ソートしてBSRAM100_1〜100_mの中の1個に転送する(900)。BCAM200の256個全てのエントリはInvalidにして、エントリデータの書き込みが許可された状態とする。さらにBCAM200に新たな256個のエントリデータが書き込まれたときには、再びその256個のエントリを読み出し、ソートしてBSRAM100_1〜100_mの中の別の1個に転送する(900)。このように、BCAM200に書き込まれるエントリデータは、256個ずつソートされ、BSRAM100_1〜100_mに順次転送される。ソート及び転送動作は、その動作を行う専用の論理回路900を設けて実行しても良いし、CAM500を制御するプロセッサのタスクの1つとしてソフトウェアによって実行しても良い。
探索データが入力されると、BCAM200が探索(サーチ)を行い、BCAM200がミスヒットを出力した時、即ち、入力された探索データと一致するエントリデータが、BCAM200に格納されているエントリデータの中から発見されなかったときには、その探索データは、BSRAM100_1〜100_mのうちの1個に送られて探索される。探索される順序は、BCAM200が最初であり、以降は、BSRAM100_1〜100_mのうち、最近エントリデータの転送が行われたBSRAMから順に探索対象とするのが好適である。最近書き込まれたエントリデータの方がヒットする確率が高いため、ヒットするまでの時間が短縮され、ヒットした後の探索を行わないことによって消費電力を低減することができる。
以上説明したように、サーチキャッシュとして機能するBCAM200にヒットしたときにはレイテンシが小さく、ヒットしない場合にBSRAM100_1〜100_mを順次探索対象とすることで、大容量でも消費電力の小さいCAMを提供することができる。
例えば、m=255とすることでCAM500全体は64K(65536)エントリの大容量となる。これを1個のBinaryCAMで構成した場合には、1個の探索データに対して65536個のエントリデータとの比較動作が同時に発生し、それに伴った電力が消費される。これに対して、本実施形態2のCAM500では、全てのCAM(BCAM200とBSRAM100_1〜100_m)の全領域を探索した場合であっても、1個の探索データに対して比較されるエントリデータの数は、BCAMにおける256個と、BSRAM100_1〜100_mにおける16個×255の合計4336個であり、約1/15に抑えることができる。途中でヒットした場合には以降の比較を中止することができるので、さらに減らすことができる。
本実施形態では各CAMのエントリ数を256とし、上述ではm=255として全体として64KエントリのCAMを構成した例を示したが、エントリ数、BSCAMの数(m)は任意に変更することができる。また、BCAM200のエントリ数を各BSRAMのエントリ数と同数としたが、各BSRAMのエントリ数以上であればよい。BCAM200のエントリ数を各BSRAMのエントリ数よりも大きくすることにより、BCAM200からBSRAMへのエントリデータの転送を行っている期間にも、BCAM200への新たなエントリデータの書き込みを行うことができる。
〔実施形態3〕<2段階サーチを行うCAM(相補型サーチキャッシュ)>
上述の図7に示されるCAM500では、サーチキャッシュとして機能するBCAM200を1個搭載するのみであるので、BCAM200の構成によっては、BCAM200がFULLになってBSRAMへのエントリデータの転送を行う期間には、BCAM200への新たなエントリデータの書き込みが制限され、又は禁止される場合がある。このような課題を解決するために、サーチキャッシュを相補的動作する2個のBCAM200_1と200_2によって構成する。
上述の図7に示されるCAM500では、サーチキャッシュとして機能するBCAM200を1個搭載するのみであるので、BCAM200の構成によっては、BCAM200がFULLになってBSRAMへのエントリデータの転送を行う期間には、BCAM200への新たなエントリデータの書き込みが制限され、又は禁止される場合がある。このような課題を解決するために、サーチキャッシュを相補的動作する2個のBCAM200_1と200_2によって構成する。
図8は、2段階サーチを行うCAM500の別の構成例を示すブロック図である。
CAM500は、サーチキャッシュとして機能する相補的動作する2個のBCAM200_1と200_2と、メインサーチとして機能するm個のSRAM上で2分探索を行うCAM(BSRAM)100_1〜100_mとを含んで構成される。BCAM200_1と200_2は、それぞれが例えば256エントリであり、実施形態2におけるBCAM200と同様に動作する。また、BSRAM100_1〜100_mも実施形態2におけるBSRAM100_1〜100_mと同様である。
CAM500に入力されるエントリデータは、BCAM200_1と200_2のうちの一方、例えばBCAM200_2に書き込まれる。そのBCAM200_2がFULLになったときには、BCAM200_2から全てのエントリを読み出しソートしてBSRAM100_1〜100_mの中の1個に転送する(902)。この読み出し・ソート・転送の期間は、他方のBCAM200_1が新たに入力されるエントリデータの書き込み対象とされる。BCAM200_1がFULLになったときには、BCAM200_1から全てのエントリを読み出しソートしてBSRAM100_1〜100_mの中の1個に転送する(901)が、この時には、代わりに元のBCAM200_2が新たに入力されるエントリデータの書き込み対象とされる。このように、BCAM200_1と200_2が交互に、入力されるエントリデータの書き込み対象とされ、読み出し・ソート・転送の対象とされるので、新たなエントリデータの書き込みが待たされることがない。
探索動作についても、BCAM200_1と200_2は交互に探索対象とされ、いずれかでミスヒットとなった場合には、メインサーチであるBSRAM100_1〜100_mが探索対象とされる。探索動作の詳細については実施形態2と同様であるので、説明を省略する。
〔実施形態4〕<探索順序>
実施形態2と3で示したCAM500において、メインサーチであるBSRAM100_1〜100_mの間の探索順序は、フレキシブルに変更することができる。ここで、エントリデータの書き換えが頻繁に行われる応用システムに適用される場合には、新しく書き込まれたエントリデータほど、ヒットする確率が高い傾向にあることがわかった。そこで、新しく書き込まれたエントリデータをより優先して探索対象とすることにより、より早くヒットさせることができ、ヒットした時点でそれ以降の探索を行わないように制御することにより、消費電力をさらに削減することができる。
実施形態2と3で示したCAM500において、メインサーチであるBSRAM100_1〜100_mの間の探索順序は、フレキシブルに変更することができる。ここで、エントリデータの書き換えが頻繁に行われる応用システムに適用される場合には、新しく書き込まれたエントリデータほど、ヒットする確率が高い傾向にあることがわかった。そこで、新しく書き込まれたエントリデータをより優先して探索対象とすることにより、より早くヒットさせることができ、ヒットした時点でそれ以降の探索を行わないように制御することにより、消費電力をさらに削減することができる。
図9は、2段階サーチを行うCAMの動作例を示す説明図である。横方向にBSRAMの番号を示し、縦方向にパイプラインステージが示される。理解を容易にするため、BSRAMの数m=8とし、番号0〜7を付す。パイプラインステージの1ステージは、1個のBSRAM全体に書き込む、または、探索する期間を表わし、第1(1st)から第8(8th)までのステージが図示される。「W」はエントリデータの書き込み動作、即ちサーチキャッシュ(BCAM200,またはBCAM200_1と200_2のいずれか)からのソートを伴ったエントリデータの転送動作を示す。「data0」から「data7」はそのデータを探索データとする探索動作が実行されていることを示す。
エントリデータの書き込み「W」は、第1ステージのBSRAM0、第2ステージのBSRAM1の順に、第7ステージのBSRAM7へ進み、図示されないが以降はBSRAM0に戻って繰り返されるもとする。
第1ステージではBSRAM0が書込み対象であり、その直前に書き込むが完了されているBSRAM7が、最も新しいエントリデータを格納していることになる。そのため、探索データdata0についてサーチキャッシュでミスヒットした後の最初の探索対象は、BSRAM7である。BSRAM7でもミスヒットの場合、さらに第2ステージでBSRAM6がサーチされ、ミスヒットが続くと、第3ステージでBSRAM5、第4ステージでBSRAM4、第5ステージでBSRAM3、第6ステージでBSRAM2、第7ステージでBSRAM1、第8ステージでBSRAM0が、順次探索対象とされる。上記の書き込み順序を仮定した場合には、BSRAMに付された番号が大きいほど新しいエントリデータを格納していることになるので、先に探索対象とされる。
第2ステージではBSRAM1が書込み対象であり、その直前に書き込むが完了されているBSRAM0が、最も新しいエントリデータを格納していることになる。そのため、探索データdata1についてサーチキャッシュでミスヒットした後の最初の探索対象は、BSRAM0である。以降、BSRAM7、BSRAM6、BSRAM5、BSRAM4、BSRAM3、BSRAM2、BSRAM1と続く。第3ステージ以降も同様である。
ここで、第5ステージでは、BSRAM4が書込み対象であり、その直前に書き込むが完了されているBSRAM4が、最も新しいエントリデータを格納しているため、探索データdata4についてサーチキャッシュでミスヒットした後の最初の探索対象となっている。ところが同じ第5ステージは、上述の探索データdata0についての探索も実行されるタイミングとなっている。このように1個のBSRAMに対して2個の探索データdata4とdata0が同時に入力されることとなる。同様の現象は、第6ステージのBSRAM2とBSRAM4、第7ステージのBSRAM1とBSRAM3とBARAM5、第8ステージのBSRAM0とBSRAM2とBSRAM4とBSRAM6でも発生する。
この場合には下記3種類の解決手段を採り得る。第1の解決手段は、探索動作を待たせることである。例えば第5ステージでは、探索データdata4またはdata0の探索動作を待たせることにより解決することができる。第2の解決手段は、一方の探索データについての探索動作を中止することである。data0のBSRAM3に対する探索動作は、第4ステージでBSRAM3のエントリデータが書き換えられているために、第4ステージでのBSRAM4の次の第5ステージで探索対象とする意味がなくなっている場合がある。この場合には、data0の探索結果を「ミスヒット」として、これ以降の探索を中止することにより、探索データの競合の問題は解決される。第3の解決手段は、BSRAMを複数の探索データを同時に並列して探索することができるように構成することである。
図10は、2入力のサーチエントリに対して2分探索を行うCAMの構成例を示すブロック図である。図1に示されるSRAM上で2分探索を行うCAMとの違いは、SRAM1_2〜1_4に代えて、デュアルポートSRAM2_2〜2_4を備え、比較回路3_1〜3_5に加えて比較回路4_1〜4_5をさらに備える点である。パイプラインを構成するレジスタ6_12〜6_22とフリップフロップ7_9〜7_16も並列に設けられている。2個の探索データSearch Entry 1とSearch Entry 2は、比較回路3_1〜3_5と比較回路4_1〜4_5によって同時に並列してエントリデータと比較される。比較対象のエントリデータは、デュアルポートSRAM2_2〜2_4のそれぞれのポートから独立に読み出される。なお、図10に示される各配線は、1又は複数ビットの配線で構成されるが、図示ではバス表記は省略されている。
並列動作を可能とした点以外の動作は、図1を引用して実施形態1で説明した動作と同様であるので、ここでの説明を省略する。
〔実施形態5〕<ソート機能付BCAM>
図1と図10に示したSRAM上で2分探索を行うCAMは、上述の通り、エントリデータをソートして書き込む必要がある。
図1と図10に示したSRAM上で2分探索を行うCAMは、上述の通り、エントリデータをソートして書き込む必要がある。
図11は、ソート機能付きCAM300の構成例を示すブロック図である。図7と図8に示される2段階サーチを行うCAMにおいて、サーチャキャッシュとして機能するBCAM200または200_1と200_2を図11に示されるソート機能付きCAM300とすることにより、転送動作または転送回路900、901及び902が簡略化される。
ソート機能付きCAM300は、一致に加えて大小比較の機能を持つ比較機能付セルを使用したBCAMアレイ201と、各エントリに対応して設けられる順位レジスタ9_1〜9_Nと、比較機能付セルによる比較結果に基づいて、順位レジスタ9_1〜9_Nに適切な値を書き込む論理回路(Logic)8とを備える。BCAMアレイ201は、通常のメモリと同様にアドレスを入力してデータをリード/ライトすることができ(RAMモード)、探索データ(Search Data)を入力して一致するエントリデータが格納されているアドレスをヒットアドレス(Hit Address)として出力することができる(CAMモード)。
ソート機能付きCAM300は、新たなエントリデータが書き込まれる度に順位レジスタ9_1〜9_Nに格納される全ての順位を適切に更新する。新たなエントリデータが入力されると、比較機能付セルを使用したBCAMアレイ201は、入力された新たなエントリデータと、BCAMアレイ201内の各エントリに保持されているエントリデータとの比較を行って、エントリ毎に一致及び大小の比較結果を出力する。論理回路(Logic)8は、エントリ毎の上記比較結果に基づいて、順位レジスタ9_1〜9_Nに格納される全ての順位を適切に更新する。このとき、順位を更新するアルゴリズムについては、「ソート機能付きCAM300の動作」としてその一例を説明するが、その例に制限されるものではなく任意である。
なお、図11に示される各配線は、複数ビットの配線で構成されるが、図示ではバス表記は省略されている。一致及び大小比較の機能を持つ比較機能付セルには、例えば、図14または図16、或いは特許文献1に記載されるセルを用いることができる。その詳細な構成と動作については後述するが、エントリごとに格納されている値とサーチエントリから入力される値との間で比較を行い、一致または大小の関係が並列して同時に出力される。
ソート機能付きCAM300の動作について説明する。
全てのエントリのデータ及びそれぞれに対応する順位レジスタ9_1〜9_Nの値を0に初期化する。
書き込み対象のデータは、エントリデータが既に書き込まれているか否かに関わらず、他の全てのエントリデータとの間で一致/大小の比較を行う。
書き込み非対象のエントリについては、書き込み対象のデータが、当該書き込み非対象のエントリに格納されているエントリデータよりも「小さい」ときには、対応する順位レジスタの順位を1増やす(+1する)。また、書き込み非対象のエントリの順位は、書き込み対象エントリの元の順位よりも大きい場合には、1減らす(−1する)。書き込み対象エントリの順位は、各エントリとの比較の結果、書き込み対象のデータがそれぞれのエントリのエントリデータよりも「大きい」とされた個数を順位として、順位レジスタに書き込む。
これにより、エントリデータが書き込まれる度に全てのエントリの順位が適切に更新され、常に正しい順位が保たれる。
ここで、上記アルゴリズムでは、同じ値のエントリデータに対して、同じ順位が付される。これに対して各エントリとの比較の結果、書き込み対象のデータがそれぞれのエントリのエントリデータよりも「大きい」とされた個数に代えて、「一致を含んで大きい」とされた個数を書き込み対象エントリの順位として、対応する順位レジスタに書き込むことにより、同じ値のエントリデータに異なる順位を付すことができる。このように、論理回路(Logic)8による順位の更新アルゴリズムは、種々変更することができる。
図12は、ソート機能付きCAMの動作例を示すタイミングチャートである。理解を助けるため、エントリ数を4として説明する。横軸は時刻であり、縦軸方向に各エントリの有効フラグ(Validフラグ)、エントリデータ、順位レジスタの値が、上から順に示される。
時刻t0において、全てのエントリのデータと順位は0に初期化される。
時刻t1においてエントリ0にデータ「1」が書き込まれる。書き込み非対象のエントリの比較結果は、すべて「大きい」であるので「大きい」とされた個数である「3」が、順位レジスタ0に書き込まれる。
時刻t2においてエントリ1にデータ「3」が書き込まれる。書き込み非対象のエントリの比較結果は、すべて「大きい」であるので「大きい」とされた個数である「3」が、順位レジスタ1に書き込まれる。書き込み非対象のエントリ0については、書き込み対象エントリ1の元の順位「0」よりも順位レジスタ0の値である書き込み非対象のエントリ0の元の順位「3」の方が大きいので1減らされて、順位レジスタ0の値は「2」となる。
時刻t3においてエントリ2にデータ「2」が書き込まれる。書き込み非対象のエントリの比較結果は、エントリ0と3で「大きい」、エントリ1で「小さい」であるので「大きい」とされた個数である「2」が、順位レジスタ2に書き込まれる。書き込み非対象のエントリ0については、書き込み対象エントリ2の元の順位「0」よりも順位レジスタ0の値である書き込み非対象のエントリ0の元の順位「2」の方が大きいので1減らされて、順位レジスタ0の値は「1」となる。書き込み非対象のエントリ1については、対応する順位レジスタ1の値を1増やす(+1する)操作と1減らす(−1する)操作とが行われて互いに相殺され、順位レジスタ1の値は「3」のまま変化しない。書き込み対象のデータ「2」が、当該書き込み非対象のエントリに格納されているエントリデータ「3」よりも「小さい」ので、対応する順位レジスタ1の順位を1増やす(+1する)一方、書き込み対象エントリ2の元の順位「0」よりも順位レジスタ1の値である書き込み非対象のエントリ1の元の順位「3」の方が大きいので1減らす(−1する)からである。
時刻t4においてエントリ3にデータ「0」が書き込まれる。書き込み非対象のエントリの比較結果は、エントリ0〜2で「小さい」であるので「大きい」とされた個数である「0」が、順位レジスタ3に書き込まれる。書き込み非対象のエントリ0、1、2については、それぞれ対応する順位レジスタ0、1、2の順位を1増やす(+1する)操作と1減らす(−1する)操作とが行われて互いに相殺され、順位レジスタ0、1、2の値は「1」、「3」、「2」のまま変化しない。書き込み対象のデータ「0」が、書き込み非対象の各エントリに格納されているエントリデータ「1」、「3」、「2」よりも「小さい」ので、対応する順位レジスタ0、1、2の値をそれぞれ1増やす一方、書き込み対象エントリ3の元の順位「0」よりも書き込み非対象のエントリ0、1、2の元の順位「1」、「3」、「2」の方が大きいのでそれぞれ1減らすからである。
以上のように、新たなエントリデータが書き込まれる度に全てのエントリの順位が適切に更新され、常に正しい順位が保たれる。
図13は、ソート機能付きCAM300の別の構成例を示すブロック図である。図11に示されるCAMとは異なり、順位レジスタ9_1〜9_NをCAM202によって構成し、順位を入力してそのアドレスを探索することができるように構成されている。BCAM201へのアドレス入力は、順位レジスタとして機能するCAM202から出力されるソートアドレスと、外部から入力される論理アドレスとを選択的に切替えるセレクタ11を含んで構成される。入力アドレスから順位を順に入力することにより、BCAM201からは対応するエントリが順位に対応して出力される。
図11に示されるソート機能付きCAM300では、順位レジスタ9_1〜9_Nから順次、順位の値を出力し、BCAM201からは対応するエントリのエントリデータをRAMモードで順次読み出すことにより、エントリデータとそれに対応する順位が読み出される。順位をBSRAMのアドレスとして対応するエントリデータをBSRAMのエントリに書き込むことにより、ソートされたエントリデータをBSRAMに書き込むことができる。
図13に示されるソート機能付きCAM300では、入力アドレスに順位を順次入力することによって指定された順序で、対応するエントリデータをBCAM201から読み出すことができるので、BSRAMがエントリデータの書き込みにおいてランダムアクセスを可能とする構成とする必要がない。また、図13に示されるソート機能付きCAM300は、順位をランダムに指定して対応するエントリを読み出すことができるので、実施形態2と3に示される2段階サーチを行うCAM500のサーチキャッシュ以外にも、応用することができる。
一致に加えて大小比較の機能を持つ比較機能付セルの構成と動作について、説明する。
図14は、ソート機能付きCAMに適用可能なメモリセル10の構成例を示す回路図であり、図15は、そのメモリセルの動作を表す真理値表を示す説明図である。
メモリセル10では、NチャネルトランジスタMN1とPチャネルトランジスタMP1とで構成されるインバータとで構成されるインバータとが、互いの出力が他の入力に接続されて記憶素子を構成する。MN1とMP1とで構成されるインバータの出力は、ワード線WLで制御されるMN3を介してビット線BLに接続され、MN2とMP2とで構成されるインバータの出力は、ワード線WLで制御されるMN4を介して反転ビット線/BLに接続される。BLと/BLは互いに論理的に逆極性で相補的なビット線対を構成している。論理的な反転は本来信号線名の上側に示される「上線」で区別されるが、明細書で使用することができるフォントの制限により、「/」(スラッシュ)で代用する。探索データ(Search Data)の1ビットは、相補的な探索データ線対SLと/SLに入力される。SLはMN5のゲートに、/SLはMN6のゲートにそれぞれ接続される。MP3のゲートはMN1とMP1とで構成されるインバータの出力に接続され、MP4のゲートはMN2とMP2とで構成されるインバータの出力に接続され、MP3とMN4のドレインは共に複合論理ゲート12の非反転入力端子に入力される。複合論理ゲート12の非反転入力端子は、プリチャージイネーブル信号PEによって制御されるMN7を介してVDDにプリチャージされ、MP3とMN5、またはMP4とMN6を介する放電経路が形成されている。複合論理ゲート12の非反転入力端子は、MP3とMN5、またはMP4とMN6のいずれかがともにオンの場合に、放電されロウレベルとなる。MP3とMN5、またはMP4とMN6のいずれかがともにオンする場合とは、保持されるデータと探索データが不一致の場合である。複合論理ゲート12の出力は、「一致」を示すマッチラインMLの反転論理/MLであり、複合論理ゲート12の反転入力端子には、上位ビット側で隣接するセルからのマッチラインpre/MLが入力されている。上位ビット側から入力されるマッチラインpre/MLがロウであると、当該セル10より上位の全てのビットで「一致」が検出されたことになり、当該セル10でも「一致」を検出したときには、マッチライン/MLからロウが出力される。
大小判定ラインBGは、当該セル10に保持されるデータが探索データよりも大きいときにハイ「1」、小さい時にロウ「0」、一致するときにはハイインピーダンス(HiZ)を出力する。大小判定ラインBGは、同じエントリを構成する複数のセル10の間で互いに短絡されており、上位ビットから順に比較したときに初めて不一致となったセル10から、保持されているエントリデータのビットをMP5とMP6とMN8を介して出力する。これにより、複数ビットのエントリデータの大小比較をおこなうことができる。
図16は、ソート機能付きCAMに適用可能なメモリセル10の別の構成例を示す回路図であり、図17は、そのメモリセルの動作を表す真理値表を示す説明図である。図15に示される回路がダイナミック回路であるのに対し、図16に示される回路はフルスタティック回路である。そのため、プリチャージイネーブルPEは不要とされ、大小比較結果を示すBGは、隣接するセルからの入力preBGが入力され、後段にBGとして出力される。プリチャージを制御するMN7に替え、MP7〜MP19が設けられ、MP5,MP6,MN8に代えて複合論理ゲート13と14が設けられているが、実現されている論理は、図14に示されるセル10と同様である。
図11と図13に示されるBCAM201に使用される一致及び大小比較の機能を持つ比較機能付セルには、エントリごとに格納されている値とサーチエントリから入力される値との間で比較を行い、一致または大小の関係を並列して判定して出力することができるセルが用いられる。上述の図14や図16に示したセルには限定されず、他の回路構成であっても良く、例えば、特許文献1に記載されるセルを用いることができる。
〔実施形態6〕<高スループット・低消費電力のCAM>
図18は、ソート機能付BCAMで相補型サーチキャッシュを構成し、複数のBSRAMを備えて2段階サーチを行うCAMの構成例を示すブロック図である。
図18は、ソート機能付BCAMで相補型サーチキャッシュを構成し、複数のBSRAMを備えて2段階サーチを行うCAMの構成例を示すブロック図である。
CAM500は、サーチキャッシュとして機能する相補的動作する2個のBCAM300_1と300_2と、メインサーチとして機能するm個のSRAM上で2分探索を行うCAM(BSRAM)100_1〜100_mとを含んで構成される。BCAM300_1と300_2は、実施形態5に例示したようなソート機能付きのBCAMであり、それぞれが例えば256エントリとされる。
CAM500に入力されるエントリデータは、BCAM300_1と300_2が交互に、入力されるエントリデータの書き込み対象とされ、読み出し・ソート・転送の対象とされるので、実施形態3と同様に、新たなエントリデータの書き込みが待たされることがない。ここで、BCAM300_1と300_2は、ソート機能付きのBCAMであるので、実施形態5に例示したように、エントリデータをソートされた順序で、或いは対応する順位と共に読み出すことができるため、BSRAM100_1〜100_mへの転送動作または転送回路911と912では、ソート機能を省略または大幅に簡略化することができる。
探索動作については、BCAM300_1と300_2は交互に探索対象とされ、いずれかでミスヒットとなった場合には、メインサーチであるBSRAM100_1〜100_mが探索対象とされる。探索動作の詳細については実施形態2と同様であるので、説明を省略する。
これにより、高いスループットと低消費電力を両立することができるCAMを提供することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、BSRAM100_1〜100_mを構成するメモリは、SRAMとして説明したが、SRAMに限定される必要はない。例えば、他の記憶素子を用いたRAMであっても良く、さらにエントリデータの固定されているシステムでは、電気的に書き換え可能なROM(Read Only Memory)或いは書き換えのできないROMで構成されてもよい。
1 RAM
2 2ポートRAM
3、4 比較回路
5 アドレスデコーダ(ADR)
6 レジスタ(128b reg.)
7 フリップフロップ(FF)
8 論理回路
9 順位レジスタ
10 メモリセル
11 セレクタ
12、 論理ゲート
100 SRAM上で2分探索を行うCAM(BSRAM)
200、202 Binary CAM(BCAM)
201 比較機能付きBCAM
300 ソート機能付BCAM
500 2段階サーチを行うCAM
900、901、902 ソートして転送する動作または回路
911、912 転送動作または転送回路
2 2ポートRAM
3、4 比較回路
5 アドレスデコーダ(ADR)
6 レジスタ(128b reg.)
7 フリップフロップ(FF)
8 論理回路
9 順位レジスタ
10 メモリセル
11 セレクタ
12、 論理ゲート
100 SRAM上で2分探索を行うCAM(BSRAM)
200、202 Binary CAM(BCAM)
201 比較機能付きBCAM
300 ソート機能付BCAM
500 2段階サーチを行うCAM
900、901、902 ソートして転送する動作または回路
911、912 転送動作または転送回路
Claims (18)
- 探索データが入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路とを備える、連想メモリであって、
前記メモリには、前記エントリデータが昇順または降順に並べ替えられアドレスに対応付けられて格納可能であり、
前記探索回路は、前記複数のエントリデータが格納されるアドレス全体を初期の探索領域とし、前記探索領域の中央のアドレスに格納されるエントリデータと前記探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて前記探索領域を狭める探索動作を繰り返す、連想メモリ。 - 請求項1において、前記メモリは、各ワードに前記探索領域の中央のアドレスが対応付けされた、1ワードから2のN−1乗までの2のべき乗数毎のワード数を持つ第1から第Nメモリを有し(Nは自然数)、前記探索回路は、前記第1から第Nメモリに対応して設けられる第1から第N比較回路を有し、
前記比較回路は、対応するメモリからエントリデータを読み出し前記探索データと比較して、当該エントリデータが格納されるアドレスと比較結果とを後段の比較回路に出力し、
前記比較回路は、前段から入力されるアドレスと比較結果に基づいて、比較対象のエントリデータを読み出すアドレスを決める、連想メモリ。 - 請求項2において、前記メモリは、2のN乗−1のアドレスを有する1ワードの第N+1メモリをさらに有し、前記探索回路は、第N−1比較回路から入力される比較結果に基づいて前記探索データと前記第N+1メモリに格納されるエントリデータとを比較する第N+1比較回路をさらに有する、連想メモリ。
- 請求項1において、前記連想メモリと同一構成の連想メモリを第1の連想メモリとし、前記第1の連想メモリと同じエントリ数の第2の連想メモリと、複数個の前記第1の連想メモリと、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路をさらに備える、連想メモリ。
- 請求項4において、前記第2の連想メモリを2個備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする、連想メモリ。
- 請求項4において、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする、連想メモリ。
- 請求項4において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセルで構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路をさらに有し、前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する、連想メモリ。
- 請求項1において、前記メモリは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路を、前記複数のポート毎に並列に備える、連想メモリ。
- 請求項1に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
- 2のN乗個のエントリデータを保持することができ(Nは自然数)、入力される探索データと一致するエントリデータを探索する、連想メモリであって、
1ワードから2のN−1乗までの2のべき乗数毎のワード数を持つ第1から第Nメモリと1ワードの第N+1メモリと、前記第1から第N+1メモリに対応して設けられる第1から第N+1比較回路とを有し、
前記第1比較回路は、前記第1メモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第2比較回路に出力し、
前記第2比較回路は、前記第1比較回路から入力される比較結果に基づいて算出される前記第2メモリのアドレスに格納されるエントリデータを読み出し、前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第3比較回路に出力し、
前記第3から第N−1比較回路は、前段の比較回路で比較対象とされたエントリデータが格納されていたアドレスと前段から入力される比較結果とに基づいて、比較対象のエントリデータを読み出すアドレスを決め、対応するメモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を後段の比較回路に出力し、
前記第N+1比較回路は、前記探索データと前記第N+1メモリに格納されるエントリデータとが一致するか否かの比較を行い、
前記探索データと一致するエントリデータが存在するときには、当該一致するエントリデータを格納するメモリの番号と当該一致するエントリデータが格納される当該メモリ内のアドレスとに基づいて、前記探索データが前記2のN乗個のエントリデータをソートしたときの何番目のエントリデータと一致するかを算出して出力する、連想メモリ。 - 請求項10において、
前記第1メモリは前記2のN乗個のエントリデータのうち2のN−1乗番目のデータを格納し、
前記第N+1メモリは前記2のN乗個のエントリデータのうち2のN乗番目のデータを格納し、
前記第iメモリ(iは2以上N未満の自然数)は、jを2のi乗未満のすべての自然数とするとき、j×2のN−i乗番目のエントリデータのうち、前記第1メモリから第i−1メモリに格納されたエントリデータ以外のエントリデータを格納し、
前記探索データと一致するエントリデータが存在するときに、当該一致するエントリデータに対応する前記j×2のN−i乗の値−1を出力する、連想メモリ。 - 請求項11において、前記第1から第N+1比較回路は、同一の探索データに対して、互いに異なるパイプラインステージで順次動作する、連想メモリ。
- 請求項11において、前記連想メモリと同一構成の連想メモリを第1の連想メモリとし、前記第1の連想メモリと同じエントリ数の第2の連想メモリと、複数個の前記第1の連想メモリと、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路をさらに備える、連想メモリ。
- 請求項13において、前記第2の連想メモリを2個備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする、連想メモリ。
- 請求項13において、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする、連想メモリ。
- 請求項13において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセルで構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路をさらに有し、前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する、連想メモリ。
- 請求項11において、前記第1から第Nメモリのそれぞれは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路を、前記複数のポート毎に並列に備える、連想メモリ。
- 請求項10に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014108100A JP2015225675A (ja) | 2014-05-26 | 2014-05-26 | 連想メモリおよび半導体装置 |
US14/713,691 US10242124B2 (en) | 2014-05-26 | 2015-05-15 | Content addressable memory and semiconductor device |
US16/270,772 US10891337B2 (en) | 2014-05-26 | 2019-02-08 | Content addressable memory and semiconductor device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014108100A JP2015225675A (ja) | 2014-05-26 | 2014-05-26 | 連想メモリおよび半導体装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015225675A true JP2015225675A (ja) | 2015-12-14 |
Family
ID=54556163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014108100A Pending JP2015225675A (ja) | 2014-05-26 | 2014-05-26 | 連想メモリおよび半導体装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10242124B2 (ja) |
JP (1) | JP2015225675A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10530684B2 (en) * | 2015-05-19 | 2020-01-07 | International Business Machines Corporation | Management of unreachable OpenFlow rules |
KR102598735B1 (ko) * | 2018-05-18 | 2023-11-07 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그 동작 방법 |
US10922020B2 (en) | 2019-04-12 | 2021-02-16 | Micron Technology, Inc. | Writing and querying operations in content addressable memory systems with content addressable memory buffers |
TWI713051B (zh) * | 2019-10-21 | 2020-12-11 | 瑞昱半導體股份有限公司 | 內容可定址記憶體裝置 |
CN112735495A (zh) * | 2019-10-28 | 2021-04-30 | 瑞昱半导体股份有限公司 | 内容可定址存储器装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR960024924A (ko) * | 1994-12-23 | 1996-07-20 | 리 패치 | 애넥스 레지스터 파일용 식별비트 발생 방법 및 장치 |
JPH09288615A (ja) | 1996-04-24 | 1997-11-04 | Nec Corp | キャッシュメモリ装置 |
US6230236B1 (en) * | 1997-08-28 | 2001-05-08 | Nortel Networks Corporation | Content addressable memory system with cascaded memories and self timed signals |
US6148364A (en) * | 1997-12-30 | 2000-11-14 | Netlogic Microsystems, Inc. | Method and apparatus for cascading content addressable memory devices |
JP2002260389A (ja) * | 2001-03-01 | 2002-09-13 | Kawasaki Microelectronics Kk | 連想メモリ |
US6813620B2 (en) * | 2001-03-07 | 2004-11-02 | Broadcom Corporation | Binary search engine and method |
US6990552B2 (en) * | 2002-10-31 | 2006-01-24 | Mosaid Technologies, Inc. | Sorting method and apparatus using a CAM |
JP2004295967A (ja) | 2003-03-26 | 2004-10-21 | Kawasaki Microelectronics Kk | 連想メモリ |
US7634597B2 (en) * | 2003-10-08 | 2009-12-15 | Micron Technology, Inc. | Alignment of instructions and replies across multiple devices in a cascaded system, using buffers of programmable depths |
-
2014
- 2014-05-26 JP JP2014108100A patent/JP2015225675A/ja active Pending
-
2015
- 2015-05-15 US US14/713,691 patent/US10242124B2/en active Active
-
2019
- 2019-02-08 US US16/270,772 patent/US10891337B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10242124B2 (en) | 2019-03-26 |
US20190171674A1 (en) | 2019-06-06 |
US10891337B2 (en) | 2021-01-12 |
US20150339222A1 (en) | 2015-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI746699B (zh) | 用於xor及xnor計算之計算記憶體胞元及使用記憶體胞元之處理陣列裝置 | |
CN108701476B (zh) | 用于针对拐角转变的经修改解码的设备和方法 | |
US10891337B2 (en) | Content addressable memory and semiconductor device | |
US8711638B2 (en) | Using storage cells to perform computation | |
US6845024B1 (en) | Result compare circuit and method for content addressable memory (CAM) device | |
KR100373849B1 (ko) | 어소시어티브 캐시 메모리 | |
Ullah et al. | DURE: An energy-and resource-efficient TCAM architecture for FPGAs with dynamic updates | |
US20110289256A1 (en) | Memory banking system and method to increase memory bandwidth via parallel read and write operations | |
JP3599273B2 (ja) | 内容参照可能メモリの改良 | |
JP3957637B2 (ja) | 連想メモリとその検索方法およびネットワーク機器およびネットワーク・システム | |
US10373684B2 (en) | Semiconductor device | |
US9899088B1 (en) | Content addressable memory decomposition | |
JP6229990B2 (ja) | 連想記憶装置、インデックス生成器、及び登録情報更新方法 | |
US9021194B2 (en) | Memory management unit tag memory | |
JPWO2003010774A1 (ja) | 連想メモリ・システムおよびネットワーク機器およびネットワーク・システム | |
US6898100B2 (en) | Semiconductor memory device used for cache memory | |
JPH05198186A (ja) | 連想メモリシステム | |
Karunakar et al. | Implementation of LFSR based Fast Error-Resilient Ternary Content-Addressable Memory | |
JP6170718B2 (ja) | 検索システム | |
CN110580231B (zh) | 处理电路、缓冲器、存储器及处理器 | |
US7894226B2 (en) | Content addressable memory based on a ripple search scheme | |
WO2014057546A1 (ja) | マルチヒット検出回路、処理装置およびマルチヒット検出方法 | |
US20030191885A1 (en) | On-chip cache redundancy technique | |
PRIYANKA et al. | An Efficient Low-Power Content-Addressable Memory using Compressor Memory Block | |
VEGESNA et al. | Realization of CAM Architecture for Compression and Decompression Applications |