JP2015225675A - Associative memory and semiconductor device - Google Patents
Associative memory and semiconductor device 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
Description
本発明は、連想メモリおよびそれを用いた半導体装置に関し、特に消費電力の低い連想メモリに好適に利用できるものである。 The present invention relates to an associative memory and a semiconductor device using the same, and can be suitably used particularly for an associative memory with low power consumption.
連想メモリ(CAM:Content Addressable Memory)は、ルーターやネットワークスイッチに用いられており、ネットワークトラフィックの増大に伴ってCAMにも大容量化が求められている。オープンフローによって実現される仮想ネットワークでは、1個のオープンフローコントローラが多数のオープンフロースイッチを統合して制御する。オープンフロースイッチを始めとするネットワーク機器に搭載されるCAMには、大容量、高速スループット、ダイナミックエントリーテーブル、低消費電力等が求められる。 Content addressable memory (CAM) is used in routers and network switches, and CAM is required to have a large capacity as network traffic increases. In a virtual network realized by OpenFlow, one OpenFlow controller integrates and controls many OpenFlow switches. Large capacity, high-speed throughput, dynamic entry table, low power consumption, etc. are required for CAM installed in network devices such as OpenFlow switches.
特許文献1には、記憶回路に記憶されたデータと探索データとの間で大小比較とレンジ一致比較の機能を実現するCAMが開示されている。
特許文献2には、同一キャッシュエントリに割り付けられる異なるタグの複数のメモリエントリへのアクセスが競合するか連続する場合にも、メインメモリへのアクセスを抑え、システム効率を向上することができるキャッシュメモリ装置が開示されている。
特許文献1及び2について本発明者が検討した結果、以下のような新たな課題があることがわかった。即ち特許文献1に記載されるようなCAMは、探索データを記憶されている全てのデータ(エントリデータ)と比較するため、消費電力が大きいことが分かった。このようなCAMを本明細書ではバイナリCAMと呼び、BCAMと略記する。
As a result of examination of
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。 Means for solving such problems will be described below, but other problems and novel features will become apparent from the description of the present specification and the accompanying drawings.
一実施の形態によれば、下記の通りである。 According to one embodiment, it is as follows.
すなわち、探索データが入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路とを備える、連想メモリであって以下のように構成される。メモリには、昇順または降順に並べ替えられたエントリデータがアドレスに対応付けて格納される。探索回路は、メモリのアドレス全体を初期の探索領域とし、探索領域の中央のアドレスに格納されるエントリデータと探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて、次の探索の探索領域を狭める探索動作を繰り返す。 That is, an associative memory comprising: a memory that receives search data and stores a plurality of entry data; and a search circuit that searches for an address in the memory in which entry data that matches the search data is stored. It is configured as follows. In the memory, entry data rearranged in ascending order or descending order is stored in association with addresses. The search circuit uses the entire memory address as the initial search area, compares the entry data stored in the center address of the search area with the search data, and if they match, outputs the address as the search result and does not match In this case, the search operation for narrowing the search area for the next search is repeated based on the result of the size comparison.
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。 The effect obtained by the one embodiment will be briefly described as follows.
すなわち、消費電力の低いCAMを提供することができる。 That is, a CAM with low power consumption can be provided.
1.実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
1. First, an outline of a typical embodiment disclosed in the present application will be described. Reference numerals in the drawings referred to in parentheses in the outline description of the representative embodiments merely exemplify what are included in the concept of the components to which the reference numerals are attached.
〔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)とを備える。
[1] <Associative memory (CAM) for performing binary search on SRAM>
An associative memory (CAM) (100) according to a representative embodiment disclosed in the present application is a memory (1_1 to 1_5, 2_2 to 2_4) in which search data (Search Entry) is input and a plurality of entry data is stored. And search circuits (3_1 to 3_5, 4_1 to 4_5) for searching for an address in the memory in which entry data matching the search data is stored.
前記メモリには、前記複数のエントリデータが昇順または降順に並べ替えられアドレスに対応付けられて格納可能である。 In the memory, the plurality of entry data can be rearranged in ascending order or descending order and stored in association with addresses.
前記探索回路は、前記複数のエントリデータが格納されるアドレス全体(0thw〜15thw)を初期の探索領域とし、前記探索領域の中央のアドレス(7thw、…)に格納されるエントリデータと前記探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて前記探索領域を狭める探索動作を繰り返す。 The search circuit uses the entire address (0thw to 15thw) where the plurality of entry data is stored as an initial search area, and the entry data and the search data stored at the center address (7thw,...) Of the search area. When the address matches, the address is output as a search result. When the address does not match, the search operation for narrowing the search area is repeated based on the result of the size comparison.
これにより、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される1個ずつで済むため、比較対象のエントリデータの数が全エントリデータ数(2N)の対数(log22N=N)に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。ここで探索領域の「中央」のアドレスとは、数学的に厳密な1/2を意味するものではなく、概ね中央であればよい。例えば16エントリの中央のアドレスは7番目でも8番目でも良い。さらに大きな誤差を含んでいても良いが、正確に1/2に近い程、探索に要するステップ数(上記「繰り返し」の数)、即ち比較の回数を少なくすることができる。以下、本明細書における「中央」の語は同様に定義される。
As a result, only one entry data to be compared with the search data is stored at the center address of each search area, so the number of entry data to be compared is the total number of entry data (2 N ). Thus, it is possible to provide an associative memory with a low logarithm (
〔2〕<パイプライン構成>
項1において、前記メモリは、各ワードに前記探索領域の中央のアドレスが対応付けされた、1ワードから2のN−1乗までの2のべき乗数毎のワード数を持つ第1から第Nメモリ(1_1〜1_4)を有し(Nは自然数)、前記探索回路は、前記第1から第Nメモリに対応して設けられる第1から第N比較回路(3_1〜3_4)を有する。
[2] <Pipeline configuration>
In the
前記比較回路は、対応するメモリからエントリデータを読み出し前記探索データと比較して、当該エントリデータが格納されるアドレスと比較結果とを後段の比較回路に出力する。前記比較回路は、前段から入力されるアドレスと比較結果に基づいて、比較対象のエントリデータを読み出すアドレスを決める。 The comparison circuit reads entry data from a corresponding memory, compares the entry data with the search data, and outputs an address at which the entry data is stored and a comparison result to a subsequent comparison circuit. The comparison circuit determines an address from which entry data to be compared is read based on the address input from the previous stage and the comparison result.
これにより、2分探索を行うCAMをパイプラインで構成することができ、スループットを向上することができる。 As a result, the CAM performing the binary search can be configured by the pipeline, and the throughput can be improved.
〔3〕<2のN乗エントリのCAM>
項2において、前記メモリは、2のN乗−1のアドレスを有する1ワードの第N+1メモリ(1_5)をさらに有し、前記探索回路は、第N−1比較回路から入力される比較結果に基づいて前記探索データと前記第N+1メモリに格納されるエントリデータとを比較する第N+1比較回路(3_5)をさらに有する。
[3] <CAM of 2 N entries>
In
これにより、2のべき乗(2N)ワードのエントリ数を備えるCAMを提供することができる。 Thereby, it is possible to provide a CAM having an entry number of powers of 2 (2 N ) words.
〔4〕<2段階サーチを行う連想メモリ>
項1において、前記連想メモリと同一構成の連想メモリを第1の連想メモリ(BSRAM,100)とする。2段階サーチを行う連想メモリ(500)は、前記第1の連想メモリと同じエントリ数の第2の連想メモリ(BCAM,200)と、複数個の前記第1の連想メモリ(100_1〜100_m)と、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路(900)をさらに備える。
[4] <Associative memory for two-step search>
In
これにより、サーチキャッシュとして機能する第2の連想メモリにヒットしたときにはレイテンシが小さく、ヒットしない場合に複数の第1の連想メモリを順次探索対象とすることで、大容量でも消費電力の小さいCAMを提供することができる。 As a result, when the second associative memory functioning as a search cache is hit, the latency is small, and when there is no hit, a plurality of first associative memories are sequentially searched, so that a CAM with small capacity and low power consumption can be obtained. Can be provided.
〔5〕<2面サーチキャッシュ>
項4において、連想メモリ(500)は、前記第2の連想メモリを2個(200_1、200_2)備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする。
[5] <Double search cache>
In
これにより、新たなエントリデータの書き込みが待たされることがない。エントリデータを一方の第2の連想メモリから第1の連想メモリへ転送する期間には、転送が行われている当該第2の連想メモリへは新たなエントリデータを書き込むことができない。しかしその期間に新たなエントリデータの書き込み要求が発生した場合には、転送対象とされない他方の第2の連想メモリに対して新たなエントリデータの書き込みを行う事ができる。 Thereby, writing of new entry data is not waited. During the period in which entry data is transferred from one second associative memory to the first associative memory, new entry data cannot be written to the second associative memory in which transfer is being performed. However, when a new entry data write request occurs during that period, new entry data can be written to the other second content addressable memory that is not to be transferred.
〔6〕<探索順序>
項4または項5において、連想メモリ(500)は、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする。
[6] <Search order>
In
これにより、ヒットするまでの時間を短縮することができる。 Thereby, the time until hitting can be shortened.
〔7〕<ソート機能付きCAM>
項4または項5において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセル(10)で構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路(9_1〜9_N)をさらに有する。前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する。
[7] <CAM with sort function>
In
これにより、エントリデータの並べ替え(ソート)に要する時間を短縮することができる。 Thereby, the time required for rearranging (sorting) entry data can be shortened.
〔8〕<複数の探索データの並列入力>
項1において、前記メモリ(2_2〜2_4)は、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路(3_1〜3_5と4_1〜4_5)を、前記複数のポート毎に並列に備える。
[8] <Parallel input of multiple search data>
In
これにより、複数の探索データ(Search Entry 1とSearch Entry 2)を同時に並列して入力し、同時に並列して探索することができる。
As a result, a plurality of search data (
〔9〕<半導体装置>
項1から項8までのいずれか1項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
[9] <Semiconductor device>
A semiconductor device comprising the associative memory according to any one of
これにより、CAMが集積された半導体装置において、消費電力を低く抑えることができる。 As a result, power consumption can be kept low in a semiconductor device in which a CAM is integrated.
〔10〕<SRAM上で2分探索(Binary Search)を行う連想メモリ(CAM)>
本願において開示される代表的な実施の形態に係る連想メモリは、2のN乗個のエントリデータを保持することができ(Nは自然数)、入力される探索データ(Search Entry)と一致するエントリデータを探索する、連想メモリ(CAM)(100)である。
[10] <Associative memory (CAM) for performing binary search on SRAM>
The associative memory according to the representative embodiment disclosed in the present application can hold 2 N power entry data (N is a natural number), and the entry matches the input search data (Search Entry). An associative memory (CAM) (100) for searching for data.
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)とを有する。 1st to Nth memories (1_1 to 1_4) and 1 word N + 1th memory (1_5) having the number of words every power of 2 from 1 word to 2 to the N-1th power, and the first to N + 1th 1st to N + 1th comparison circuits (3_1 to 3_5) provided corresponding to the memories.
前記第1比較回路は、前記第1メモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第2比較回路に出力する。 The first comparison circuit reads entry data from the first memory, compares the search data with a magnitude match, and outputs the comparison result to the second comparison circuit.
前記第2比較回路(3_2)は、前記第1比較回路から入力される比較結果に基づいて算出される前記第2メモリのアドレス(3rdwまたは11thw)に格納されるエントリデータを読み出し、前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第3比較回路(3_3)に出力する。 The second comparison circuit (3_2) reads out the entry data stored at the address (3rdw or 11thw) of the second memory calculated based on the comparison result input from the first comparison circuit, and the search data Are compared with each other, and the comparison result is output to the third comparison circuit (3_3).
前記第3から第N比較回路(3_3〜3_4)は、前段の比較回路で比較対象とされたエントリデータが格納されていたアドレスと前段から入力される比較結果とに基づいて、比較対象のエントリデータを読み出すアドレスを決め、対応するメモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を後段の比較回路に出力する。 The third to N-th comparison circuits (3_3 to 3_4) are configured to compare the entry to be compared based on the address where the entry data to be compared by the comparison circuit in the previous stage is stored and the comparison result input from the previous stage. The address from which data is read is determined, the entry data is read from the corresponding memory, the magnitude comparison is compared with the search data, and the result of the comparison is output to the comparison circuit at the subsequent stage.
前記第N+1比較回路(3_5)は、前記探索データと前記第N+1メモリ(1_5)に格納されるエントリデータとが一致するか否かの比較を行う。 The N + 1th comparison circuit (3_5) compares whether the search data matches the entry data stored in the N + 1th memory (1_5).
前記探索データと一致するエントリデータが存在するときには、当該一致するエントリデータを格納するメモリの番号と当該一致するエントリデータが格納される当該メモリ内のアドレスとに基づいて、前記探索データが前記2のN乗個のエントリデータをソートしたときの何番目のエントリデータと一致するかを算出して出力する。 When there is entry data that matches the search data, the search data is determined based on the number of the memory that stores the matching entry data and the address in the memory where the matching entry data is stored. It is calculated and output what number entry data when the N-th entry data is sorted.
これにより、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される1個ずつで済むため、比較対象のエントリデータの数が全エントリデータ数(2N)の対数(log22N=N)に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。 As a result, only one entry data to be compared with the search data is stored at the center address of each search area, so the number of entry data to be compared is the total number of entry data (2 N ). Thus, it is possible to provide an associative memory with a low logarithm (log 2 2 N = N) and low power consumption.
〔11〕<ソートされたエントリデータの格納>
項10において、前記第1メモリは前記2のN乗個のエントリデータのうち2のN−1乗番目のデータを格納し、前記第N+1メモリは前記2のN乗個のエントリデータのうち2のN乗番目のデータを格納する。
[11] <Storage of sorted entry data>
In
前記第iメモリ(iは2以上N未満の自然数)は、jを2のi乗未満のすべての自然数とするとき、j×2のN−i乗番目のエントリデータのうち、前記第1メモリから第i−1メモリに格納されたエントリデータ以外のエントリデータを格納する。 The i-th memory (i is a natural number greater than or equal to 2 and less than N) is the first memory of j × 2 N−i-th entry data, where j is all natural numbers less than 2 to the i power. To entry data other than the entry data stored in the (i-1) th memory.
連想メモリは、前記探索データと一致するエントリデータが存在するときに、当該一致するエントリデータに対応する前記j×2のN−i乗の値−1を出力する。 When there is entry data that matches the search data, the associative memory outputs the j × 2 Ni-th power value−1 corresponding to the matching entry data.
これにより、エントリデータがソートされて格納され、探索データと一致するエントリデータの順位が、格納されるアドレスとして出力される。 As a result, the entry data is sorted and stored, and the rank of the entry data that matches the search data is output as the stored address.
〔12〕<パイプライン構成>
項11において、前記第1から第N+1比較回路は、同一の探索データに対して、互いに異なるパイプラインステージで順次動作する。
[12] <Pipeline configuration>
In
これにより、2分探索を行うCAMをパイプラインで構成することができ、スループットを向上することができる。 As a result, the CAM performing the binary search can be configured by the pipeline, and the throughput can be improved.
〔13〕<2段階サーチを行う連想メモリ>
項11において、前記連想メモリと同一構成の連想メモリを第1の連想メモリ(BSRAM,100)とする。2段階サーチを行う連想メモリ(500)は、前記第1の連想メモリと同じエントリ数の第2の連想メモリ(BCAM,200)と、複数個の前記第1の連想メモリ(100_1〜100_m)と、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路(900)をさらに備える。
[13] <Associative memory performing two-step search>
In
これにより、サーチキャッシュとして機能する第2の連想メモリにヒットしたときにはレイテンシが小さく、ヒットしない場合に複数の第1の連想メモリを順次探索対象とすることで、大容量でも消費電力の小さいCAMを提供することができる。 As a result, when the second associative memory functioning as a search cache is hit, the latency is small, and when there is no hit, a plurality of first associative memories are sequentially searched, so that a CAM with small capacity and low power consumption can be obtained. Can be provided.
〔14〕<2面サーチキャッシュ>
項13において、連想メモリ(500)は、前記第2の連想メモリを2個(200_1、200_2)備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする。
[14] <Double search cache>
In
これにより、新たなエントリデータの書き込みが待たされることがない。エントリデータを一方の第2の連想メモリから第1の連想メモリへ転送する期間には、転送が行われている当該第2の連想メモリへは新たなエントリデータを書き込むことができない。しかしその期間に新たなエントリデータの書き込み要求が発生した場合には、転送対象とされない他方の第2の連想メモリに対して新たなエントリデータの書き込みを行う事ができる。 Thereby, writing of new entry data is not waited. During the period in which entry data is transferred from one second associative memory to the first associative memory, new entry data cannot be written to the second associative memory in which transfer is being performed. However, when a new entry data write request occurs during that period, new entry data can be written to the other second content addressable memory that is not to be transferred.
〔15〕<探索順序>
項13または項14において、連想メモリ(500)は、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする。
[15] <Search order>
In the
これにより、ヒットするまでの時間を短縮することができ、ヒットした後の探索を行わないことによって消費電力を低減することができる。 As a result, the time until the hit can be shortened, and the power consumption can be reduced by not performing the search after the hit.
〔16〕<ソート機能付きCAM>
項13または項14において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセル(10)で構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路(9_1〜9_N)をさらに有する。前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する。
[16] <CAM with sort function>
これにより、エントリデータの並べ替え(ソート)に要する時間を短縮することができる。 Thereby, the time required for rearranging (sorting) entry data can be shortened.
〔17〕<複数の探索データの並列入力>
項11において、前記第2から第Nメモリのそれぞれは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路(4_1〜4_5)を、前記複数のポート毎に並列に備える。
[17] <Parallel input of a plurality of search data>
In
これにより、複数の探索データを同時に並列して入力し、同時に並列して探索することができる。 Thereby, a plurality of search data can be simultaneously input in parallel and searched simultaneously in parallel.
〔18〕<半導体装置>
項10から項17までのいずれか1項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
[18] <Semiconductor device>
Item 18. A semiconductor device comprising the content addressable memory according to any one of
これにより、CAMが集積された半導体装置において、消費電力を低く抑えることができる。 As a result, power consumption can be kept low in a semiconductor device in which a CAM is integrated.
2.実施の形態の詳細
実施の形態について更に詳述する。
2. Details of Embodiments Embodiments will be further described in detail.
〔実施形態1〕<SRAM上で2分探索(Binary Search)を行うCAM>
本願において開示される代表的な実施の形態に係る連想メモリ(CAM)は、探索データ(Search Entry)が入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納されるメモリ内のアドレスを探索する探索回路とを備える。メモリには、複数のエントリデータが昇順または降順に並べ替えられ、それぞれがアドレスに対応付けられて格納される。例えばメモリが2Nワードの場合、2N個のエントリデータが昇順で格納されることにより、0w(ワード)には最小値を持つエントリデータが、2N−1wには最大値を持つエントリデータが格納される。ここで、メモリは例えばSRAM(Static Random Access Memory)であり、全てのエントリデータを1個で格納することができる大容量のSRAMであっても良いが、後述のように適切なワード数毎に分割された複数のSRAMで構成されるのが好適である。複数のSRAMのそれぞれをパイプラインステップとするパイプライン構成とすることにより、性能を向上することができるからである。また、同等の機能を有する他の記憶装置であってもよい。
[Embodiment 1] <CAM for performing binary search on SRAM>
An associative memory (CAM) according to a representative embodiment disclosed in the present application receives search data (Search Entry), stores a plurality of entry data, and stores entry data that matches the search data. And a search circuit for searching for an address in the memory. In the memory, a plurality of entry data is rearranged in ascending order or descending order, and each is associated with an address and stored. For example, if the memory is 2 N words, 2 N entry data are stored in ascending order, so that entry data having a minimum value in 0w (word) and entry data having a maximum value in 2 N -1w are stored. Is stored. Here, the memory is, for example, an SRAM (Static Random Access Memory), and may be a large-capacity SRAM capable of storing all the entry data in one, but for each appropriate number of words as described later. It is preferable to be configured by a plurality of divided SRAMs. This is because the performance can be improved by adopting a pipeline configuration in which each of the plurality of SRAMs has a pipeline step. Further, another storage device having an equivalent function may be used.
探索回路は、複数のエントリデータが格納されるアドレス全体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に狭めるのが好ましい。 The search circuit uses the entire address 0w to 2 N -1w where a plurality of entry data is stored as an initial search area, and the entry data and search data (Search) stored at the address 2 N-1 -1w at the center of the search area Entry). When they match, the address (2 N-1 -1w) is output as a search result, and when they do not match, the search area is narrowed based on the result of size comparison. That is, when the search data (Search Entry) is smaller than the entry data stored at the center address 2 N-1 -1w of the search area, the next search area is smaller than the center address 2 N-1 -1w. change the region 0w~2 N-1 -2w, when large changes the next search area in the middle of the address 2 N-1 greater than -1W region 2 N-1 w~2 N -1w. As in this example, the search area is preferably narrowed to ½ for each repeated step.
次に探索回路は、変更された(狭められた)探索領域の中央のアドレスに格納されるエントリデータと探索データ(Search Entry)とを比較する。即ち、前段で探索領域が0w〜2N−1−2wに変更されたときには、中央のアドレス2N−2−1wに格納されるエントリデータと探索データ(Search Entry)とを比較し、前段で探索領域が2N−1w〜2N−1wに変更されたときには、中央のアドレス3×2N−2−1wに格納されるエントリデータと探索データ(Search Entry)とを比較する。
Next, the search circuit compares the entry data stored at the center address of the changed (narrowed) search area with the search data (Search Entry). That is, when the search area is changed from 0w to 2 N-1 -2w in the previous stage, the entry data stored in the central address 2 N-2 -1w is compared with the search data (Search Entry). when the search area is changed to 2 N-1 w~2 N -1w compares the entry data stored in the center of the
探索回路は、この動作を探索領域が分割できなくなるまで繰り返し、その過程で探索データ(Search Entry)と一致したエントリデータを格納するアドレスの値をヒットアドレスとして出力し、一致するエントリデータがない場合には、ミスヒットとして出力する。 The search circuit repeats this operation until the search area cannot be divided, and outputs the value of the address storing the entry data that matches the search data (Search Entry) in the process as a hit address, and there is no matching entry data Is output as a miss-hit.
このように、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される1個ずつで済む。探索回路は、比較と探索領域の変更を順次繰り返しながら、探索データ(Search Entry)と一致するエントリデータを探索(サーチ)するので、全ての領域を探索する場合であっても、N回の比較を行えば足りるからである。これにより、比較対象のエントリデータの数が全エントリデータ数(2N)の対数(log22N=N)に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。 Thus, only one entry data to be compared with the search data is stored at the center address of each search area. The search circuit searches the entry data that matches the search data (Search Entry) while sequentially repeating the comparison and the change of the search area. Therefore, even when searching all areas, the search circuit compares N times. It is because it is enough to do. As a result, it is possible to provide an associative memory in which the number of entry data to be compared is reduced to the logarithm (log 2 2 N = N) of the total number of entry data (2 N ) and power consumption is reduced.
ここで、上記のメモリは、従来のCAMとは異なり、アドレスを指定してデータを読み書きすることができる単純なRAMでよい。探索データ(Search Entry)との比較は、探索回路内で行うためである。複数のエントリデータが昇順にソートされ、メモリのアドレス順に格納されている例について説明したが、ソートの方法と探索回路内の比較の方法とが対応していればよい。数値としてソート/比較するときには、数値が補数表現されているものとして大小比較を行ってもよいし、絶対値として比較しても良い。また数値以外の何らかの順序(例えばアルファベット順)を規定して、その順序における大小関係の比較を採用しても良い。また、エントリデータは同一の数値を複数個含んでいてもよい。 Here, unlike the conventional CAM, the above memory may be a simple RAM that can read and write data by designating an address. This is because the comparison with the search data (Search Entry) is performed in the search circuit. Although an example in which a plurality of entry data are sorted in ascending order and stored in the order of memory addresses has been described, it is only necessary that the sorting method and the comparison method in the search circuit correspond to each other. When sorting / comparing as numerical values, it is possible to perform a size comparison assuming that the numerical values are expressed in complement, or to compare them as absolute values. Further, some order other than numerical values (for example, alphabetical order) may be defined, and comparison of magnitude relations in the order may be adopted. Further, the entry data may include a plurality of the same numerical values.
エントリデータの数がメモリのアドレス領域の大きさ(上の例では0w〜2N−1w)に満たない場合には、各エントリデータに有効フラグ(Validフラグ)を設けて有効/無効を管理し、無効なエントリデータを比較対象から除外する。これにより、エントリデータの数が少ない場合にも探索データ(Search Entry)のサーチを行うことができる。なお、有効フラグ(Validフラグ)については、以下の各実施形態におけるCAMにそれぞれ設けられてもよいが、CAM全体の構成と動作についての理解を容易にするために、有効フラグ(Validフラグ)についての説明は省略する。 When the number of entry data is less than the size of the memory address area (0w to 2N- 1w in the above example), each entry data is provided with a valid flag (Valid flag) to manage validity / invalidity. , Invalid entry data is excluded from comparison. Thereby, even when the number of entry data is small, search data (Search Entry) can be searched. The valid flag (Valid flag) may be provided in each CAM in the following embodiments. However, in order to facilitate understanding of the configuration and operation of the entire CAM, the valid flag (Valid flag) Description of is omitted.
本実施形態1に係る、SRAM上で2分探索(Binary Search)を行うCAMの、より具体的な構成例について説明する。 A more specific configuration example of the CAM that performs binary search on the SRAM according to the first embodiment will be described.
図1は、SRAM上で2分探索を行うCAMの構成例を示すブロック図である。N=4とし、エントリデータを128ビット×16ワードとした。 FIG. 1 is a block diagram illustrating a configuration example of a CAM that performs a binary search on an SRAM. N = 4 and entry data was 128 bits × 16 words.
上述のメモリは、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が設けられている。 The above-described memory is divided and mounted on five SRAMs 1_1 to 1_5, and a pipeline is configured as a whole. Input search data (Search Entry) is a shift register composed of 128-bit registers 6_1 to 6_8, and is sequentially transferred to the subsequent pipeline stage. The search circuit described above is configured by comparison circuits 3_1 to 3_5 that compare search data (Search Entry) with entry data. Functions of the comparison circuits 3_1 to 3_5 will be described later. Further, 128-bit registers 6_1 to 6_8 and flip-flops (FF) 7_1 to 7_8 are provided for timing adjustment.
初段の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ビット又は複数ビットの配線で構成されるが、図示ではバス表記は省略されている。 The first-stage SRAM 1_1 is an SRAM of only one word and stores only the entry data of the seventh word (7thw). SRAM1_2 is a two-word SRAM, and stores entry data of the third word (3rdw) and the eleventh word (11thw). SRAM1_3 is a 4-word SRAM, and stores entry data of a first word (1stw), a fifth word (5thw), a ninth word (9thw), and a thirteenth word (13thw). The SRAM 1_4 is an 8-word SRAM, the 0th word (0thw), the 2nd word (2ndw), the 4th word (4thw), the 6th word (6thw), the 8th word (8thw), and the 10th word (10thw). The entry data of the 12th word (12thw) and the 14th word (14thw) are stored. The SRAM 1_5 is an SRAM of only one word, and stores only the entry data of the 15th word (15thw). Since SRAM1_1 and SRAM1_5 are 1-word SRAMs, no address is required, and each may be configured with simple registers. Each wiring shown in FIG. 1 is composed of one-bit or plural-bit wiring, but the bus notation is omitted in the drawing.
図1に示されるCAMの動作について説明する。 The operation of the CAM shown in FIG. 1 will be described.
16個のエントリデータは、予め例えば昇順にソートされ、5個のSRAM1_1〜1_5の上述のワードに格納される。ワード番号の大きいワードにより大きいエントリデータが格納され、最大のエントリデータはSRAM1_5である第15ワード(15thw)に、最小のエントリデータはSRAM1_4に第0ワード(0thw)に格納されている。ここで、初段のSRAM1_1に格納される第7ワード(7thw)は、探索領域である第0ワード(0thw)から第15ワード(15thw)の中央のアドレスである。 The 16 entry data are sorted in advance in ascending order, for example, and stored in the above-described words of the five SRAMs 1_1 to 1_5. Larger entry data is stored in a word having a larger word number, the largest entry data is stored in the 15th word (15thw) of SRAM1_5, and the smallest entry data is stored in the 0th word (0thw) in SRAM1_4. Here, the seventh word (7thw) stored in the first-stage SRAM 1_1 is the center address of the 0th word (0thw) to the 15th word (15thw) as the search area.
探索データ(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に狭められ、対象の探索領域の中央のアドレスが、次段に出力される。 The search data (Search Entry) is compared with the entry data of the seventh word (7thw) stored in the SRAM 1_1 by the comparison circuit 3_1. FIG. 2 is an explanatory diagram illustrating an operation example of the comparison circuit 3_1. Since the comparison circuit 3_1 is the first stage, “0” indicating mismatch is input as the comparison result of the previous stage, and “7” is input as the address of the entry data to be compared. At this time, the comparison result between the search data (Search Entry) and the entry data of the seventh word (7thw) input from the SRAM 1_1 is “small”, “large”, and “match”. When the comparison result is “small”, the comparison circuit 3_1 indicates “0” indicating an inconsistency and an address “3”, and when the comparison result is “large”, the comparison circuit 3_1 indicates “0” indicating an inconsistency and an address “11”. When “match”, “1” indicating the match and address “7” are output. When the comparison result is “small”, the search area is changed to a range smaller than the seventh word (7thw), so the search area becomes 0 to 6 and the center address “3” is output. When the comparison result is “large”, the search area is changed to a range larger than the seventh word (7thw), so the search area becomes 8 to 15 and the center address “11” is output. As described above, as a result of one comparison, the search area is narrowed to ½, and the center address of the target search area is output to the next stage.
比較回路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」が入力される。 The address output from the comparison circuit 3_1 is input to the SRAM 1_2, and the entry data of the third word (3rdw) or the eleventh word (11thw) is read out and supplied to the comparison circuit 3_2 through the register 6_9. The comparison result and address output from the comparison circuit 3_1 are supplied to the comparison circuit 3_2 via the flip-flops 7_1 and 7_2. FIG. 3 is an explanatory diagram illustrating an operation example of the comparison circuit 3_2. The comparison circuit 3_2 receives “1” indicating coincidence or “0” indicating disagreement as the comparison result of the preceding stage, and “3” or “11” is input as the address of the entry data to be compared. .
前段からの入力アドレスが「3」の場合には、SRAM1_2から第3ワード(3rdw)のエントリデータが読み出され、比較回路3_2で探索データ(Search Entry)と比較される。比較回路3_2は、比較結果が「小」のとき不一致を示す「0」とアドレス「1」を、比較結果が「大」のとき不一致を示す「0」とアドレス「5」を、比較結果が「一致」のとき一致を示す「1」とアドレス「3」を出力する。 When the input address from the previous stage is “3”, the entry data of the third word (3rdw) is read from the SRAM 1_2 and compared with the search data (Search Entry) by the comparison circuit 3_2. When the comparison result is “small”, the comparison circuit 3_2 indicates “0” indicating an inconsistency and an address “1”, and when the comparison result is “large”, the comparison result is “0” and an address “5”. When “match”, “1” indicating the match and address “3” are output.
前段からの入力アドレスが「11」の場合には、SRAM1_2から第11ワード(11thw)のエントリデータが読み出され、比較回路3_2で探索データ(Search Entry)と比較される。比較回路3_2は、比較結果が「小」のとき不一致を示す「0」とアドレス「9」を、比較結果が「大」のとき不一致を示す「0」とアドレス「13」を、比較結果が「一致」のとき一致を示す「1」とアドレス「11」を出力する。 When the input address from the previous stage is “11”, the entry data of the eleventh word (11thw) is read from the SRAM 1_2 and compared with the search data (Search Entry) by the comparison circuit 3_2. When the comparison result is “small”, the comparison circuit 3_2 indicates “0” indicating an inconsistency and an address “9”. When the comparison result is “large”, the comparison circuit 3_2 indicates “0” indicating an inconsistency and an address “13”. When “match”, “1” indicating the match and address “11” are output.
前段からの入力が「一致」でアドレスが「7」の場合には、比較回路3_2はそのまま、比較結果が「一致」を示す「1」とアドレス「7」を出力する。 When the input from the previous stage is “match” and the address is “7”, the comparison circuit 3_2 outputs “1” indicating that the comparison result is “match” and the address “7” without change.
このように、2回目の比較の結果、探索領域はさらに1/2、全体の1/4に狭められ、4通りの探索領域のうち対象の探索領域の中央のアドレスが、次段に出力される。 In this way, as a result of the second comparison, the search area is further reduced to 1/2 and 1/4 of the whole, and the center address of the target search area among the four search areas is output to the next stage. The
比較回路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」が入力される。 The address output from the comparison circuit 3_2 is input to the SRAM 1_3, and the entry data of the first word (1stw), the fifth word (5thw), the ninth word (9thw), or the thirteenth word (13thw) is read. The signal is supplied to the comparison circuit 3_3 through the register 6_10. The comparison result and address output from the comparison circuit 3_2 are supplied to the comparison circuit 3_3 via the flip-flops 7_3 and 7_4. FIG. 4 is an explanatory diagram illustrating an operation example of the comparison circuit 3_3. The comparison circuit 3_3 receives “1” indicating coincidence or “0” indicating disagreement as the comparison result of the preceding stage, and “1”, “5”, “9” as addresses of entry data to be compared as addresses. Alternatively, “13” or “3”, “7”, or “11” is input as the address of the matched entry data when it matches the search data (Search Entry) in the previous stage.
前段からの入力アドレスが「1」の場合には、SRAM1_3から第1ワード(1stw)のエントリデータが読み出され、比較回路3_3で探索データ(Search Entry)と比較される。比較回路3_3は、比較結果が「小」のとき不一致を示す「0」とアドレス「0」を、比較結果が「大」のとき不一致を示す「1」とアドレス「2」を、比較結果が「一致」のとき一致を示す「1」とアドレス「1」を出力する。 When the input address from the previous stage is “1”, the entry data of the first word (1stw) is read from the SRAM 1_3 and compared with the search data (Search Entry) by the comparison circuit 3_3. When the comparison result is “small”, the comparison circuit 3_3 indicates “0” indicating an inconsistency and an address “0”, and when the comparison result is “large”, the comparison circuit 3_3 indicates “1” indicating an inconsistency and an address “2”. When “match”, “1” indicating the match and address “1” are output.
前段からの入力アドレスが「5」の場合には、SRAM1_3から第5ワード(5thw)のエントリデータが読み出され、比較回路3_3で探索データ(Search Entry)と比較される。比較回路3_3は、比較結果が「小」のとき不一致を示す「0」とアドレス「4」を、比較結果が「大」のとき不一致を示す「1」とアドレス「6」を、比較結果が「一致」のとき一致を示す「1」とアドレス「5」を出力する。 When the input address from the previous stage is “5”, the entry data of the fifth word (5thw) is read from the SRAM 1_3 and compared with the search data (Search Entry) by the comparison circuit 3_3. When the comparison result is “small”, the comparison circuit 3_3 indicates “0” indicating an inconsistency and an address “4”, and when the comparison result is “large”, the comparison circuit 3_3 indicates “1” indicating an inconsistency and an address “6”. When “match”, “1” indicating the match and address “5” are output.
前段からの入力アドレスが「9」の場合には、SRAM1_3から第9ワード(9thw)のエントリデータが読み出され、比較回路3_3で探索データ(Search Entry)と比較される。比較回路3_3は、比較結果が「小」のとき不一致を示す「0」とアドレス「8」を、比較結果が「大」のとき不一致を示す「1」とアドレス「10」を、比較結果が「一致」のとき一致を示す「1」とアドレス「9」を出力する。 When the input address from the previous stage is “9”, the entry data of the ninth word (9thw) is read from the SRAM 1_3 and compared with the search data (Search Entry) by the comparison circuit 3_3. When the comparison result is “small”, the comparison circuit 3_3 indicates “0” indicating the mismatch and the address “8”, and when the comparison result is “large”, the comparison circuit 3_3 indicates “1” and the address “10” indicating the mismatch. When “match”, “1” indicating the match and address “9” are output.
前段からの入力アドレスが「13」の場合には、SRAM1_3から第13ワード(13thw)のエントリデータが読み出され、比較回路3_3で探索データ(Search Entry)と比較される。比較回路3_3は、比較結果が「小」のとき不一致を示す「0」とアドレス「12」を、比較結果が「大」のとき不一致を示す「1」とアドレス「14」を、比較結果が「一致」のとき一致を示す「1」とアドレス「13」を出力する。 When the input address from the previous stage is “13”, the 13th word (13thw) entry data is read from the SRAM 1_3 and compared with the search data (Search Entry) by the comparison circuit 3_3. When the comparison result is “small”, the comparison circuit 3_3 indicates “0” indicating the mismatch and the address “12”, and when the comparison result is “large”, the comparison circuit 3_3 indicates “1” and the address “14” indicating the mismatch. When “match”, “1” indicating the match and address “13” are output.
前段からの入力が「一致」でアドレスが「3」、「7」または「11」の場合には、比較回路3_2はそのまま、比較結果が「一致」を示す「1」と入力されたアドレス「3」、「7」または「11」を出力する。 When the input from the previous stage is “match” and the address is “3”, “7” or “11”, the comparison circuit 3_2 remains as it is, and the address “1” indicating “match” is input as “ 3 "," 7 "or" 11 "is output.
このように、3回目の比較の結果、探索領域はさらに1/2、全体の1/8に狭められ、8通りの探索領域のうち対象の探索領域の中央のアドレスが、次段に出力される。 As described above, as a result of the third comparison, the search area is further reduced to 1/2 and 1/8 of the whole, and the center address of the target search area among the eight search areas is output to the next stage. The
比較回路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」が入力される。 The address output from the comparison circuit 3_3 is input to the SRAM 1_4, and the second word (2ndw), the fourth word (4thw), the sixth word (6thw), the eighth word (8thw), the tenth word (10thw), The entry data of the 12th word (12thw) or the 14th word (14thw) is read and supplied to the comparison circuit 3_4 through the register 6_11. The comparison result and address output from the comparison circuit 3_3 are supplied to the comparison circuit 3_4 via the flip-flops 7_5 and 7_6. FIG. 5 is an explanatory diagram illustrating an operation example of the comparison circuit 3_4. The comparison circuit 3_4 receives “1” indicating coincidence or “0” indicating disagreement as the comparison result of the preceding stage, and “2”, “4”, “6” as addresses of entry data to be compared as addresses. , “8”, “10”, “12” or “14”. Alternatively, if the comparison circuit 3_4 matches the search data (Search Entry) at the previous stage, “1”, “3”, “5”, “7”, “ “9”, “11” or “13” is input.
このステージでは、探索領域は1ワード単位になっているので、これ以降探索領域を狭めることができない。前段から入力されたアドレスで指定されるエントリデータと探索データ(Search Entry)が一致したときには、一致を示す「1」とともにそのときのアドレスが出力され、前段からの入力が「一致」で一致したときのアドレスが入力された場合には、一致を示す「1」とともに入力されたアドレスがそのまま出力される。この段階で、実質的に、第0ワード(0thw)から第14ワード(14thw)までのエントリデータと、探索データ(Search Entry)との比較が完了したことになる。 At this stage, since the search area is in units of one word, the search area cannot be narrowed thereafter. When the entry data specified by the address input from the previous stage matches the search data (Search Entry), the address at that time is output together with “1” indicating the match, and the input from the previous stage matches with “match” If the current address is input, the input address together with “1” indicating coincidence is output as it is. At this stage, the comparison between the entry data from the 0th word (0thw) to the 14th word (14thw) and the search data (Search Entry) is substantially completed.
図6は、比較回路3_5の動作例を示す説明図である。比較回路3_5は、前段の比較回路3_4からの出力が不一致を示す「0」である場合には、SRAM1_5に格納されている第15ワード(15thw)のエントリデータと、探索データ(Search Entry)との比較を行い、一致の場合にはアドレスとして「15」を出力し、不一致の場合には最終的に不一致を表す「miss hit」を出力する。前段の比較回路3_4からの出力が一致を示す「1」である場合には、入力されるアドレスをそのまま出力する。 FIG. 6 is an explanatory diagram illustrating an operation example of the comparison circuit 3_5. When the output from the comparison circuit 3_4 in the previous stage is “0” indicating a mismatch, the comparison circuit 3_5 includes the entry data of the 15th word (15thw) stored in the SRAM 1_5, the search data (Search Entry), In the case of coincidence, “15” is output as the address, and in the case of non-coincidence, “miss hit” representing the non-coincidence is finally output. When the output from the comparison circuit 3_4 in the previous stage is “1” indicating coincidence, the input address is output as it is.
以上のように、比較回路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回の比較動作で消費する電力は大きくなる可能性があるが、比較回数の減少により全体の消費電力はむしろ抑えられる。
As described above, each time the comparison operation by the comparison circuits 3_1 to 3_5 is performed in one stage, the search range is narrowed to ½. Therefore, when the number of comparisons is 2 N , the logarithm with 2 as the base is The obtained
本実施形態に示されるCAMは、他の制御回路と共に、単一の半導体基板上に形成され、1チップのLSI(Large Scale Integrated Circuit)に集積されて実現されると好適である。このようなLSIは、例えばシリコン基板上に、公知のCMOS(Complementary Metal-Oxide-Semiconductor field effect transistor)半導体の製造技術を用いて形成される。また、本実施形態に示されるCAMは、システムLSIを設計するための設計環境において、マクロセルライブラリとして提供され、或いは、ビット数やエントリ数を自由に指定して適切なマクロセルを生成することができるコンパイラとして提供されてもよい。以上述べたCAMの提供方法は、本実施形態に限られず、他の実施形態2〜6にも同様に妥当する。
The CAM shown in this embodiment is preferably formed on a single semiconductor substrate together with other control circuits, and integrated on a single chip LSI (Large Scale Integrated Circuit). Such an LSI is formed on a silicon substrate, for example, using a known complementary metal-oxide-semiconductor field effect transistor (CMOS) semiconductor manufacturing technique. The CAM shown in the present embodiment is provided as a macro cell library in a design environment for designing a system LSI, or an appropriate macro cell can be generated by freely specifying the number of bits and the number of entries. It may be provided as a compiler. The CAM providing method described above is not limited to the present embodiment, and is similarly applicable to the
〔実施形態2〕<2段階サーチを行うCAM>
実施形態1で示した、SRAM上で2分探索を行うCAM(以降、BSRAMと略記する)は、上述の通り消費電力を抑える効果が顕著であるが、全てのエントリデータがソートされていることが前提となる。したがって、古いエントリデータを最新のエントリデータで上書きするような部分的な書込みが許されず、必要な全てのエントリデータを読み出してソートし、再書き込みを行うような動作が必要となる。一方、従来のCAM(BCAM)は、探索データを同時に全てのエントリデータと比較するので、エントリデータの書き換え(追記、上書き)は、自由に行うことができる。
[Embodiment 2] <CAM performing two-stage search>
The CAM (hereinafter abbreviated as BSRAM) that performs a binary search on the SRAM shown in the first embodiment has a remarkable effect of reducing power consumption as described above, but all entry data are sorted. Is the premise. Therefore, partial writing that overwrites old entry data with the latest entry data is not permitted, and an operation that reads, sorts, and rewrites all necessary entry data is necessary. On the other hand, the conventional CAM (BCAM) compares the search data with all the entry data at the same time, so that the entry data can be rewritten (added or overwritten) freely.
本実施形態2においては、BSRAMの前段にサーチキャッシュとして機能するBCAMを設け、2段階サーチを行う。新しいエントリデータは、BCAMに順次書き込まれ、BSRAMのエントリ数に達するとソートされてBSRAMに転送される。探索データのサーチは、初めにBCAMをサーチ対象とし、BCAMでミスヒットした場合にBSRAMをサーチ対象とする。これにより、エントリデータの書き換え(追記、上書き)を、自由に行うことができ、消費電力を抑えることができる。1個のBCAMと多数のBSRAMを組合せて2段階サーチを行うCAMを構成することにより、消費電力を抑える効果はより顕著となる。 In the second embodiment, a BCAM functioning as a search cache is provided before the BSRAM, and a two-stage search is performed. New entry data is sequentially written to the BCAM, sorted when the number of BSRAM entries is reached, and transferred to the BSRAM. In search of search data, first, BCAM is set as a search target, and BSRAM is set as a search target when a miss occurs in BCAM. Thereby, rewriting (additional writing, overwriting) of entry data can be performed freely, and power consumption can be suppressed. By configuring a CAM that performs a two-stage search by combining one BCAM and a number of BSRAMs, the effect of reducing power consumption becomes more prominent.
図7は、2段階サーチを行うCAMの構成例を示すブロック図である。 FIG. 7 is a block diagram illustrating a configuration example of a CAM that performs a two-stage search.
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で説明したアルゴリズムに基づく比較を行って、一致するエントリデータを格納するアドレスまたは不一致を示す「ミスヒット」を出力する。
The
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つとしてソフトウェアによって実行しても良い。
Entry data input to the
探索データが入力されると、BCAM200が探索(サーチ)を行い、BCAM200がミスヒットを出力した時、即ち、入力された探索データと一致するエントリデータが、BCAM200に格納されているエントリデータの中から発見されなかったときには、その探索データは、BSRAM100_1〜100_mのうちの1個に送られて探索される。探索される順序は、BCAM200が最初であり、以降は、BSRAM100_1〜100_mのうち、最近エントリデータの転送が行われたBSRAMから順に探索対象とするのが好適である。最近書き込まれたエントリデータの方がヒットする確率が高いため、ヒットするまでの時間が短縮され、ヒットした後の探索を行わないことによって消費電力を低減することができる。
When search data is input, the
以上説明したように、サーチキャッシュとして機能するBCAM200にヒットしたときにはレイテンシが小さく、ヒットしない場合にBSRAM100_1〜100_mを順次探索対象とすることで、大容量でも消費電力の小さいCAMを提供することができる。
As described above, when the
例えば、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に抑えることができる。途中でヒットした場合には以降の比較を中止することができるので、さらに減らすことができる。
For example, by setting m = 255, the
本実施形態では各CAMのエントリ数を256とし、上述ではm=255として全体として64KエントリのCAMを構成した例を示したが、エントリ数、BSCAMの数(m)は任意に変更することができる。また、BCAM200のエントリ数を各BSRAMのエントリ数と同数としたが、各BSRAMのエントリ数以上であればよい。BCAM200のエントリ数を各BSRAMのエントリ数よりも大きくすることにより、BCAM200からBSRAMへのエントリデータの転送を行っている期間にも、BCAM200への新たなエントリデータの書き込みを行うことができる。
In the present embodiment, the number of entries of each CAM is 256, and in the above description, an example is shown in which m = 255 and a 64K entry CAM is configured as a whole. it can. Further, although the number of entries in
〔実施形態3〕<2段階サーチを行うCAM(相補型サーチキャッシュ)>
上述の図7に示されるCAM500では、サーチキャッシュとして機能するBCAM200を1個搭載するのみであるので、BCAM200の構成によっては、BCAM200がFULLになってBSRAMへのエントリデータの転送を行う期間には、BCAM200への新たなエントリデータの書き込みが制限され、又は禁止される場合がある。このような課題を解決するために、サーチキャッシュを相補的動作する2個のBCAM200_1と200_2によって構成する。
[Third Embodiment] <CAM (Complementary Search Cache) that Performs Two-Step Search>
7 has only one
図8は、2段階サーチを行うCAM500の別の構成例を示すブロック図である。
FIG. 8 is a block diagram illustrating another configuration example of the
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と同様である。
The
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が交互に、入力されるエントリデータの書き込み対象とされ、読み出し・ソート・転送の対象とされるので、新たなエントリデータの書き込みが待たされることがない。
Entry data input to the
探索動作についても、BCAM200_1と200_2は交互に探索対象とされ、いずれかでミスヒットとなった場合には、メインサーチであるBSRAM100_1〜100_mが探索対象とされる。探索動作の詳細については実施形態2と同様であるので、説明を省略する。 As for the search operation, BCAMs 200_1 and 200_2 are alternately searched, and if any of them becomes a miss hit, BSRAMs 100_1 to 100_m as the main search are set as search targets. Since the details of the search operation are the same as those in the second embodiment, description thereof is omitted.
〔実施形態4〕<探索順序>
実施形態2と3で示したCAM500において、メインサーチであるBSRAM100_1〜100_mの間の探索順序は、フレキシブルに変更することができる。ここで、エントリデータの書き換えが頻繁に行われる応用システムに適用される場合には、新しく書き込まれたエントリデータほど、ヒットする確率が高い傾向にあることがわかった。そこで、新しく書き込まれたエントリデータをより優先して探索対象とすることにより、より早くヒットさせることができ、ヒットした時点でそれ以降の探索を行わないように制御することにより、消費電力をさらに削減することができる。
[Embodiment 4] <Search order>
In the
図9は、2段階サーチを行うCAMの動作例を示す説明図である。横方向にBSRAMの番号を示し、縦方向にパイプラインステージが示される。理解を容易にするため、BSRAMの数m=8とし、番号0〜7を付す。パイプラインステージの1ステージは、1個のBSRAM全体に書き込む、または、探索する期間を表わし、第1(1st)から第8(8th)までのステージが図示される。「W」はエントリデータの書き込み動作、即ちサーチキャッシュ(BCAM200,またはBCAM200_1と200_2のいずれか)からのソートを伴ったエントリデータの転送動作を示す。「data0」から「data7」はそのデータを探索データとする探索動作が実行されていることを示す。
FIG. 9 is an explanatory diagram showing an example of the operation of a CAM that performs a two-stage search. The BSRAM number is shown in the horizontal direction, and the pipeline stage is shown in the vertical direction. In order to facilitate understanding, the number of BSRAMs m = 8 and
エントリデータの書き込み「W」は、第1ステージのBSRAM0、第2ステージのBSRAM1の順に、第7ステージのBSRAM7へ進み、図示されないが以降はBSRAM0に戻って繰り返されるもとする。
The entry data write “W” proceeds to the
第1ステージではBSRAM0が書込み対象であり、その直前に書き込むが完了されているBSRAM7が、最も新しいエントリデータを格納していることになる。そのため、探索データdata0についてサーチキャッシュでミスヒットした後の最初の探索対象は、BSRAM7である。BSRAM7でもミスヒットの場合、さらに第2ステージでBSRAM6がサーチされ、ミスヒットが続くと、第3ステージでBSRAM5、第4ステージでBSRAM4、第5ステージでBSRAM3、第6ステージでBSRAM2、第7ステージでBSRAM1、第8ステージでBSRAM0が、順次探索対象とされる。上記の書き込み順序を仮定した場合には、BSRAMに付された番号が大きいほど新しいエントリデータを格納していることになるので、先に探索対象とされる。
In the first stage, BSRAM0 is to be written, and BSRAM7 that has been written immediately before is storing the latest entry data. Therefore, the first search object after the search data data0 is miss-hit in the search cache is BSRAM7. In the case of a miss-hit in the
第2ステージではBSRAM1が書込み対象であり、その直前に書き込むが完了されているBSRAM0が、最も新しいエントリデータを格納していることになる。そのため、探索データdata1についてサーチキャッシュでミスヒットした後の最初の探索対象は、BSRAM0である。以降、BSRAM7、BSRAM6、BSRAM5、BSRAM4、BSRAM3、BSRAM2、BSRAM1と続く。第3ステージ以降も同様である。 In the second stage, BSRAM1 is the object of writing, and BSRAM0, which has been written immediately before, stores the latest entry data. Therefore, the first search target after a miss hit in the search cache for the search data data1 is BSRAM0. Thereafter, BSRAM7, BSRAM6, BSRAM5, BSRAM4, BSRAM3, BSRAM2, and BSRAM1 are continued. The same applies to the third and subsequent stages.
ここで、第5ステージでは、BSRAM4が書込み対象であり、その直前に書き込むが完了されているBSRAM4が、最も新しいエントリデータを格納しているため、探索データdata4についてサーチキャッシュでミスヒットした後の最初の探索対象となっている。ところが同じ第5ステージは、上述の探索データdata0についての探索も実行されるタイミングとなっている。このように1個のBSRAMに対して2個の探索データdata4とdata0が同時に入力されることとなる。同様の現象は、第6ステージのBSRAM2とBSRAM4、第7ステージのBSRAM1とBSRAM3とBARAM5、第8ステージのBSRAM0とBSRAM2とBSRAM4とBSRAM6でも発生する。
Here, in the fifth stage, the
この場合には下記3種類の解決手段を採り得る。第1の解決手段は、探索動作を待たせることである。例えば第5ステージでは、探索データdata4またはdata0の探索動作を待たせることにより解決することができる。第2の解決手段は、一方の探索データについての探索動作を中止することである。data0のBSRAM3に対する探索動作は、第4ステージでBSRAM3のエントリデータが書き換えられているために、第4ステージでのBSRAM4の次の第5ステージで探索対象とする意味がなくなっている場合がある。この場合には、data0の探索結果を「ミスヒット」として、これ以降の探索を中止することにより、探索データの競合の問題は解決される。第3の解決手段は、BSRAMを複数の探索データを同時に並列して探索することができるように構成することである。
In this case, the following three types of solutions can be taken. The first solution is to make the search operation wait. For example, in the fifth stage, the problem can be solved by waiting for the search operation of the search data data4 or data0. The second solution is to stop the search operation for one search data. The search operation for
図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又は複数ビットの配線で構成されるが、図示ではバス表記は省略されている。
FIG. 10 is a block diagram illustrating a configuration example of a CAM that performs a binary search on a 2-input search entry. The difference from the CAM that performs a binary search on the SRAM shown in FIG. 1 includes dual-port SRAMs 2_2 to 2_4 instead of the SRAMs 1_2 to 1_4, and further includes comparison circuits 4_1 to 4_5 in addition to the comparison circuits 3_1 to 3_5. Is a point. Registers 6_12 to 6_22 and flip-flops 7_9 to 7_16 constituting the pipeline are also provided in parallel. The two search
並列動作を可能とした点以外の動作は、図1を引用して実施形態1で説明した動作と同様であるので、ここでの説明を省略する。 The operations other than the point that enables the parallel operation are the same as the operations described in the first embodiment with reference to FIG.
〔実施形態5〕<ソート機能付BCAM>
図1と図10に示したSRAM上で2分探索を行うCAMは、上述の通り、エントリデータをソートして書き込む必要がある。
[Embodiment 5] <BCAM with sort function>
As described above, the CAM that performs the binary search on the SRAM shown in FIGS. 1 and 10 needs to sort and write the entry data.
図11は、ソート機能付きCAM300の構成例を示すブロック図である。図7と図8に示される2段階サーチを行うCAMにおいて、サーチャキャッシュとして機能するBCAM200または200_1と200_2を図11に示されるソート機能付きCAM300とすることにより、転送動作または転送回路900、901及び902が簡略化される。
FIG. 11 is a block diagram illustrating a configuration example of the
ソート機能付きCAM300は、一致に加えて大小比較の機能を持つ比較機能付セルを使用したBCAMアレイ201と、各エントリに対応して設けられる順位レジスタ9_1〜9_Nと、比較機能付セルによる比較結果に基づいて、順位レジスタ9_1〜9_Nに適切な値を書き込む論理回路(Logic)8とを備える。BCAMアレイ201は、通常のメモリと同様にアドレスを入力してデータをリード/ライトすることができ(RAMモード)、探索データ(Search Data)を入力して一致するエントリデータが格納されているアドレスをヒットアドレス(Hit Address)として出力することができる(CAMモード)。
The
ソート機能付きCAM300は、新たなエントリデータが書き込まれる度に順位レジスタ9_1〜9_Nに格納される全ての順位を適切に更新する。新たなエントリデータが入力されると、比較機能付セルを使用したBCAMアレイ201は、入力された新たなエントリデータと、BCAMアレイ201内の各エントリに保持されているエントリデータとの比較を行って、エントリ毎に一致及び大小の比較結果を出力する。論理回路(Logic)8は、エントリ毎の上記比較結果に基づいて、順位レジスタ9_1〜9_Nに格納される全ての順位を適切に更新する。このとき、順位を更新するアルゴリズムについては、「ソート機能付きCAM300の動作」としてその一例を説明するが、その例に制限されるものではなく任意である。
The
なお、図11に示される各配線は、複数ビットの配線で構成されるが、図示ではバス表記は省略されている。一致及び大小比較の機能を持つ比較機能付セルには、例えば、図14または図16、或いは特許文献1に記載されるセルを用いることができる。その詳細な構成と動作については後述するが、エントリごとに格納されている値とサーチエントリから入力される値との間で比較を行い、一致または大小の関係が並列して同時に出力される。
Each wiring shown in FIG. 11 is composed of a plurality of bits, but the bus notation is omitted in the drawing. For example, the cell described in FIG. 14 or FIG. 16 or
ソート機能付きCAM300の動作について説明する。
The operation of the
全てのエントリのデータ及びそれぞれに対応する順位レジスタ9_1〜9_Nの値を0に初期化する。 The data of all entries and the values of the rank registers 9_1 to 9_N corresponding to the data are initialized to 0.
書き込み対象のデータは、エントリデータが既に書き込まれているか否かに関わらず、他の全てのエントリデータとの間で一致/大小の比較を行う。 The data to be written is compared / matched with all other entry data regardless of whether or not the entry data has already been written.
書き込み非対象のエントリについては、書き込み対象のデータが、当該書き込み非対象のエントリに格納されているエントリデータよりも「小さい」ときには、対応する順位レジスタの順位を1増やす(+1する)。また、書き込み非対象のエントリの順位は、書き込み対象エントリの元の順位よりも大きい場合には、1減らす(−1する)。書き込み対象エントリの順位は、各エントリとの比較の結果、書き込み対象のデータがそれぞれのエントリのエントリデータよりも「大きい」とされた個数を順位として、順位レジスタに書き込む。 For a write non-target entry, when the write target data is “smaller” than the entry data stored in the write non-target entry, the corresponding rank register is incremented by 1 (+1). If the rank of the entry not to be written is higher than the original rank of the entry to be written, the entry is decremented by 1 (-1). The rank of the write target entry is written in the rank register with the number of the write target data being “larger” than the entry data of each entry as a rank as a result of comparison with each entry.
これにより、エントリデータが書き込まれる度に全てのエントリの順位が適切に更新され、常に正しい順位が保たれる。 Thus, every time entry data is written, the order of all entries is appropriately updated, and the correct order is always maintained.
ここで、上記アルゴリズムでは、同じ値のエントリデータに対して、同じ順位が付される。これに対して各エントリとの比較の結果、書き込み対象のデータがそれぞれのエントリのエントリデータよりも「大きい」とされた個数に代えて、「一致を含んで大きい」とされた個数を書き込み対象エントリの順位として、対応する順位レジスタに書き込むことにより、同じ値のエントリデータに異なる順位を付すことができる。このように、論理回路(Logic)8による順位の更新アルゴリズムは、種々変更することができる。 Here, in the above algorithm, the same rank is assigned to the entry data having the same value. On the other hand, as a result of comparison with each entry, the number of data to be written is replaced with the number of data that is “larger” than the entry data of each entry. By writing the entry rank in the corresponding rank register, it is possible to give different ranks to the entry data having the same value. Thus, the order update algorithm by the logic circuit (Logic) 8 can be variously changed.
図12は、ソート機能付きCAMの動作例を示すタイミングチャートである。理解を助けるため、エントリ数を4として説明する。横軸は時刻であり、縦軸方向に各エントリの有効フラグ(Validフラグ)、エントリデータ、順位レジスタの値が、上から順に示される。 FIG. 12 is a timing chart illustrating an operation example of the CAM with sort function. In order to help understanding, the number of entries will be described as four. The horizontal axis represents time, and the valid flag (Valid flag), entry data, and value of the rank register of each entry are shown in order from the top in the vertical axis direction.
時刻t0において、全てのエントリのデータと順位は0に初期化される。 At time t0, the data and rank of all entries are initialized to zero.
時刻t1においてエントリ0にデータ「1」が書き込まれる。書き込み非対象のエントリの比較結果は、すべて「大きい」であるので「大きい」とされた個数である「3」が、順位レジスタ0に書き込まれる。
Data “1” is written to
時刻t2においてエントリ1にデータ「3」が書き込まれる。書き込み非対象のエントリの比較結果は、すべて「大きい」であるので「大きい」とされた個数である「3」が、順位レジスタ1に書き込まれる。書き込み非対象のエントリ0については、書き込み対象エントリ1の元の順位「0」よりも順位レジスタ0の値である書き込み非対象のエントリ0の元の順位「3」の方が大きいので1減らされて、順位レジスタ0の値は「2」となる。
Data “3” is written to
時刻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する)からである。
Data “2” is written to
時刻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減らすからである。
Data “0” is written to
以上のように、新たなエントリデータが書き込まれる度に全てのエントリの順位が適切に更新され、常に正しい順位が保たれる。 As described above, every time new entry data is written, the rank of all entries is appropriately updated, and the correct rank is always maintained.
図13は、ソート機能付きCAM300の別の構成例を示すブロック図である。図11に示されるCAMとは異なり、順位レジスタ9_1〜9_NをCAM202によって構成し、順位を入力してそのアドレスを探索することができるように構成されている。BCAM201へのアドレス入力は、順位レジスタとして機能するCAM202から出力されるソートアドレスと、外部から入力される論理アドレスとを選択的に切替えるセレクタ11を含んで構成される。入力アドレスから順位を順に入力することにより、BCAM201からは対応するエントリが順位に対応して出力される。
FIG. 13 is a block diagram illustrating another configuration example of the
図11に示されるソート機能付きCAM300では、順位レジスタ9_1〜9_Nから順次、順位の値を出力し、BCAM201からは対応するエントリのエントリデータをRAMモードで順次読み出すことにより、エントリデータとそれに対応する順位が読み出される。順位をBSRAMのアドレスとして対応するエントリデータをBSRAMのエントリに書き込むことにより、ソートされたエントリデータをBSRAMに書き込むことができる。
In the
図13に示されるソート機能付きCAM300では、入力アドレスに順位を順次入力することによって指定された順序で、対応するエントリデータをBCAM201から読み出すことができるので、BSRAMがエントリデータの書き込みにおいてランダムアクセスを可能とする構成とする必要がない。また、図13に示されるソート機能付きCAM300は、順位をランダムに指定して対応するエントリを読み出すことができるので、実施形態2と3に示される2段階サーチを行うCAM500のサーチキャッシュ以外にも、応用することができる。
In the
一致に加えて大小比較の機能を持つ比較機能付セルの構成と動作について、説明する。 The configuration and operation of a cell with a comparison function that has a function of comparing size in addition to coincidence will be described.
図14は、ソート機能付きCAMに適用可能なメモリセル10の構成例を示す回路図であり、図15は、そのメモリセルの動作を表す真理値表を示す説明図である。
FIG. 14 is a circuit diagram showing a configuration example of the
メモリセル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からロウが出力される。
In the
大小判定ラインBGは、当該セル10に保持されるデータが探索データよりも大きいときにハイ「1」、小さい時にロウ「0」、一致するときにはハイインピーダンス(HiZ)を出力する。大小判定ラインBGは、同じエントリを構成する複数のセル10の間で互いに短絡されており、上位ビットから順に比較したときに初めて不一致となったセル10から、保持されているエントリデータのビットをMP5とMP6とMN8を介して出力する。これにより、複数ビットのエントリデータの大小比較をおこなうことができる。
The magnitude determination line BG outputs a high “1” when the data held in the
図16は、ソート機能付きCAMに適用可能なメモリセル10の別の構成例を示す回路図であり、図17は、そのメモリセルの動作を表す真理値表を示す説明図である。図15に示される回路がダイナミック回路であるのに対し、図16に示される回路はフルスタティック回路である。そのため、プリチャージイネーブルPEは不要とされ、大小比較結果を示すBGは、隣接するセルからの入力preBGが入力され、後段にBGとして出力される。プリチャージを制御するMN7に替え、MP7〜MP19が設けられ、MP5,MP6,MN8に代えて複合論理ゲート13と14が設けられているが、実現されている論理は、図14に示されるセル10と同様である。
FIG. 16 is a circuit diagram showing another configuration example of the
図11と図13に示されるBCAM201に使用される一致及び大小比較の機能を持つ比較機能付セルには、エントリごとに格納されている値とサーチエントリから入力される値との間で比較を行い、一致または大小の関係を並列して判定して出力することができるセルが用いられる。上述の図14や図16に示したセルには限定されず、他の回路構成であっても良く、例えば、特許文献1に記載されるセルを用いることができる。
In the cell with a comparison function having a matching and size comparison function used in the
〔実施形態6〕<高スループット・低消費電力のCAM>
図18は、ソート機能付BCAMで相補型サーチキャッシュを構成し、複数のBSRAMを備えて2段階サーチを行うCAMの構成例を示すブロック図である。
[Embodiment 6] <CAM with high throughput and low power consumption>
FIG. 18 is a block diagram illustrating a configuration example of a CAM that forms a complementary search cache with a BCAM with a sort function and includes a plurality of BSRAMs to perform a two-stage search.
CAM500は、サーチキャッシュとして機能する相補的動作する2個のBCAM300_1と300_2と、メインサーチとして機能するm個のSRAM上で2分探索を行うCAM(BSRAM)100_1〜100_mとを含んで構成される。BCAM300_1と300_2は、実施形態5に例示したようなソート機能付きのBCAMであり、それぞれが例えば256エントリとされる。
The
CAM500に入力されるエントリデータは、BCAM300_1と300_2が交互に、入力されるエントリデータの書き込み対象とされ、読み出し・ソート・転送の対象とされるので、実施形態3と同様に、新たなエントリデータの書き込みが待たされることがない。ここで、BCAM300_1と300_2は、ソート機能付きのBCAMであるので、実施形態5に例示したように、エントリデータをソートされた順序で、或いは対応する順位と共に読み出すことができるため、BSRAM100_1〜100_mへの転送動作または転送回路911と912では、ソート機能を省略または大幅に簡略化することができる。
Since the entry data input to the
探索動作については、BCAM300_1と300_2は交互に探索対象とされ、いずれかでミスヒットとなった場合には、メインサーチであるBSRAM100_1〜100_mが探索対象とされる。探索動作の詳細については実施形態2と同様であるので、説明を省略する。 Regarding the search operation, the BCAMs 300_1 and 300_2 are alternately searched, and if any of the BCAMs 300_1 and 300_2 become a miss hit, the BSRAMs 100_1 to 100_m, which are the main search, are searched. Since the details of the search operation are the same as those in the second embodiment, description thereof is omitted.
これにより、高いスループットと低消費電力を両立することができるCAMを提供することができる。 As a result, it is possible to provide a CAM that can achieve both high throughput and low power consumption.
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。 Although the invention made by the present inventor has been specifically described based on the embodiments, it is needless to say that the present invention is not limited thereto and can be variously modified without departing from the gist thereof.
例えば、BSRAM100_1〜100_mを構成するメモリは、SRAMとして説明したが、SRAMに限定される必要はない。例えば、他の記憶素子を用いたRAMであっても良く、さらにエントリデータの固定されているシステムでは、電気的に書き換え可能なROM(Read Only Memory)或いは書き換えのできないROMで構成されてもよい。 For example, the memories constituting the BSRAMs 100_1 to 100_m have been described as SRAMs, but need not be limited to SRAMs. For example, a RAM using other storage elements may be used, and in a system in which entry data is fixed, an electrically rewritable ROM (Read Only Memory) or a non-rewritable ROM may be used. .
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 転送動作または転送回路
1 RAM
2 2-port RAM
3, 4
6 registers (128b reg.)
7 Flip-flop (FF)
8
200, 202 Binary CAM (BCAM)
201 BCAM with comparison function
300 BCAM with sort function
500 CAM for two-stage search
900, 901, 902 Operation or circuit for sorting and transferring 911, 912 Transfer operation or transferring circuit
Claims (18)
前記メモリには、前記エントリデータが昇順または降順に並べ替えられアドレスに対応付けられて格納可能であり、
前記探索回路は、前記複数のエントリデータが格納されるアドレス全体を初期の探索領域とし、前記探索領域の中央のアドレスに格納されるエントリデータと前記探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて前記探索領域を狭める探索動作を繰り返す、連想メモリ。 An associative memory comprising: a memory that receives search data and stores a plurality of entry data; and a search circuit that searches for an address in the memory in which entry data that matches the search data is stored.
The memory can store the entry data in ascending or descending order and associated with addresses.
The search circuit sets the entire address where the plurality of entry data is stored as an initial search area, and compares the search data with the entry data stored at the center address of the search area. An associative memory that outputs the address as a search result and repeats a search operation for narrowing the search area based on a result of size comparison when there is a mismatch.
前記比較回路は、対応するメモリからエントリデータを読み出し前記探索データと比較して、当該エントリデータが格納されるアドレスと比較結果とを後段の比較回路に出力し、
前記比較回路は、前段から入力されるアドレスと比較結果に基づいて、比較対象のエントリデータを読み出すアドレスを決める、連想メモリ。 2. The memory according to claim 1, wherein the memory includes first to first words each having a power of 2 from 1 word to 2 N−1 power, in which each word is associated with a central address of the search area. An N memory (N is a natural number), and the search circuit includes first to Nth comparison circuits provided corresponding to the first to Nth memories,
The comparison circuit reads entry data from a corresponding memory, compares the entry data with the search data, and outputs an address where the entry data is stored and a comparison result to a comparison circuit at a subsequent stage,
The associative memory, wherein the comparison circuit determines an address from which entry data to be compared is read based on an address input from a previous stage and a comparison result.
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乗個のエントリデータをソートしたときの何番目のエントリデータと一致するかを算出して出力する、連想メモリ。 2 is an associative memory that can store N-th power entry data (N is a natural number) and searches for entry data that matches the input search data,
First to Nth memories having a number of words every power of 2 from 1 word to 2 to the (N-1) th power, N + 1th memory of one word, and first to N + 1th memories are provided corresponding to the first to N + 1th memories. 1 to (N + 1) th comparison circuit,
The first comparison circuit reads entry data from the first memory, compares the search data with a magnitude match, and outputs the comparison result to the second comparison circuit;
The second comparison circuit reads entry data stored in the address of the second memory calculated based on the comparison result input from the first comparison circuit, and compares the search data with a magnitude match And outputting the result of the comparison to the third comparison circuit,
The third to (N-1) th comparison circuits read out the entry data to be compared based on the address where the entry data to be compared by the previous comparison circuit was stored and the comparison result input from the previous stage. Decide the address, read the entry data from the corresponding memory, perform a magnitude match comparison with the search data, and output the result of the comparison to the comparison circuit in the subsequent stage,
The N + 1th comparison circuit compares whether the search data matches the entry data stored in the N + 1th memory,
When there is entry data that matches the search data, the search data is determined based on the number of the memory that stores the matching entry data and the address in the memory where the matching entry data is stored. An associative memory that calculates and outputs what number of entry data matches when the N-th entry data are sorted.
前記第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を出力する、連想メモリ。 In claim 10,
The first memory stores 2 N-1th data out of the 2 N entry data.
The N + 1th memory stores 2Nth data among the 2Nth entry data,
The i-th memory (i is a natural number greater than or equal to 2 and less than N) is the first memory of j × 2 N−i-th entry data, where j is all natural numbers less than 2 to the i power. To entry data other than the entry data stored in the i-1th memory,
An associative memory that outputs, when there is entry data that matches the search data, a value −1 of the power of j × 2 corresponding to the matching entry data.
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014108100A JP2015225675A (en) | 2014-05-26 | 2014-05-26 | Associative memory and semiconductor device |
| 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 (en) | 2014-05-26 | 2014-05-26 | Associative memory and semiconductor device |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2015225675A true JP2015225675A (en) | 2015-12-14 |
Family
ID=54556163
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014108100A Pending JP2015225675A (en) | 2014-05-26 | 2014-05-26 | Associative memory and semiconductor device |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US10242124B2 (en) |
| JP (1) | JP2015225675A (en) |
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 (en) * | 2018-05-18 | 2023-11-07 | 에스케이하이닉스 주식회사 | Memory device and operating method thereof |
| 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 (en) * | 2019-10-21 | 2020-12-11 | 瑞昱半導體股份有限公司 | Content addressable memory device |
| CN112735495B (en) * | 2019-10-28 | 2024-11-22 | 瑞昱半导体股份有限公司 | Content addressable memory device |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR960024924A (en) * | 1994-12-23 | 1996-07-20 | 리 패치 | Method and device for generating identification bit for Annex register file |
| JPH09288615A (en) | 1996-04-24 | 1997-11-04 | Nec Corp | Cache memory device |
| 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 (en) * | 2001-03-01 | 2002-09-13 | Kawasaki Microelectronics Kk | Associative memory |
| 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 (en) | 2003-03-26 | 2004-10-21 | Kawasaki Microelectronics Kk | Association memory |
| 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/en 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 |
|---|---|
| US20190171674A1 (en) | 2019-06-06 |
| US20150339222A1 (en) | 2015-11-26 |
| US10891337B2 (en) | 2021-01-12 |
| US10242124B2 (en) | 2019-03-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI746699B (en) | Computational memory cell and processing array device using the memory cells for xor and xnor computations | |
| US8711638B2 (en) | Using storage cells to perform computation | |
| US10891337B2 (en) | Content addressable memory and semiconductor device | |
| US6845024B1 (en) | Result compare circuit and method for content addressable memory (CAM) device | |
| US8359438B2 (en) | Memory banking system and method to increase memory bandwidth via parallel read and write operations | |
| Ullah et al. | DURE: An energy-and resource-efficient TCAM architecture for FPGAs with dynamic updates | |
| KR20010091109A (en) | Associative cache memory | |
| JP3599273B2 (en) | Improvement of memory that can refer to contents | |
| JP6659486B2 (en) | Semiconductor device | |
| US10373684B2 (en) | Semiconductor device | |
| Imani et al. | CAP: Configurable resistive associative processor for near-data computing | |
| JPWO2002091386A1 (en) | Associative memory, search method therefor, network device and network system | |
| US9899088B1 (en) | Content addressable memory decomposition | |
| US9021194B2 (en) | Memory management unit tag memory | |
| JPWO2003010774A1 (en) | Associative memory system and network device and network system | |
| US20170271011A1 (en) | A content addressable memory, an index generator, and a registered information update method | |
| US20160358654A1 (en) | Low-power ternary content addressable memory | |
| US6898100B2 (en) | Semiconductor memory device used for cache memory | |
| JPH05198186A (en) | Associative memory system | |
| JP6170718B2 (en) | Search system | |
| Yang et al. | A resource-efficient dually-addressable memory architecture on fpga | |
| JP5631278B2 (en) | Content reference memory | |
| Karunakar et al. | Implementation of LFSR based Fast Error-Resilient Ternary Content-Addressable Memory | |
| CN113257305B (en) | Computational memory unit and processing array device with incompatible write port | |
| US12450170B2 (en) | Configurable cache replacement |