[go: up one dir, main page]

JP2015225675A - Associative memory and semiconductor device - Google Patents

Associative memory and semiconductor device Download PDF

Info

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
Application number
JP2014108100A
Other languages
Japanese (ja)
Inventor
努 牧野
Tsutomu Makino
努 牧野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2014108100A priority Critical patent/JP2015225675A/en
Priority to US14/713,691 priority patent/US10242124B2/en
Publication of JP2015225675A publication Critical patent/JP2015225675A/en
Priority to US16/270,772 priority patent/US10891337B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

PROBLEM TO BE SOLVED: To provide an associative memory which includes a memory in which a search data is input, and which stores a plurality of entry data, and a search circuit which searches an address in the memory in which entry data corresponds to the search data; and to restrict the number of entry data to be compared with the search data to a log of the total number of entry data so as to reduce power consumption.SOLUTION: In a memory, entry data re-sorted in an ascending or descending order are stored corresponding to addresses. A search circuit, in which the whole addresses where a plurality of entry data are stored are initial search areas, compares entry data and search data stored in an address of a central search area, and outputs the address as a search result when these data agree, but repeats a search operation of narrowing the search area in a next search on the basis of a result of comparison between their sizes when they do not agree.

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が開示されている。   Patent Document 1 discloses a CAM that realizes a function of size comparison and range match comparison between data stored in a storage circuit and search data.

特許文献2には、同一キャッシュエントリに割り付けられる異なるタグの複数のメモリエントリへのアクセスが競合するか連続する場合にも、メインメモリへのアクセスを抑え、システム効率を向上することができるキャッシュメモリ装置が開示されている。   Patent Document 2 discloses a cache memory that can suppress access to a main memory and improve system efficiency even when accesses to a plurality of memory entries of different tags allocated to the same cache entry compete or continue. An apparatus is disclosed.

特開2004−295967号公報JP 2004-295967 A 特開平09−288615号公報JP 09-288615 A

特許文献1及び2について本発明者が検討した結果、以下のような新たな課題があることがわかった。即ち特許文献1に記載されるようなCAMは、探索データを記憶されている全てのデータ(エントリデータ)と比較するため、消費電力が大きいことが分かった。このようなCAMを本明細書ではバイナリCAMと呼び、BCAMと略記する。   As a result of examination of Patent Documents 1 and 2 by the present inventors, it has been found that there are the following new problems. That is, it has been found that the CAM described in Patent Document 1 consumes a large amount of power because the search data is compared with all stored data (entry data). Such a CAM is referred to herein as a binary CAM and is abbreviated as BCAM.

このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。   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は、SRAM上で2分探索を行うCAMの構成例を示すブロック図である。FIG. 1 is a block diagram illustrating a configuration example of a CAM that performs a binary search on an SRAM. 図2は、図1のCAMにおける比較回路3_1の動作例を示す説明図である。FIG. 2 is an explanatory diagram showing an operation example of the comparison circuit 3_1 in the CAM of FIG. 図3は、図1のCAMにおける比較回路3_2の動作例を示す説明図である。FIG. 3 is an explanatory diagram showing an operation example of the comparison circuit 3_2 in the CAM of FIG. 図4は、図1のCAMにおける比較回路3_3の動作例を示す説明図である。FIG. 4 is an explanatory diagram showing an operation example of the comparison circuit 3_3 in the CAM of FIG. 図5は、図1のCAMにおける比較回路3_4の動作例を示す説明図である。FIG. 5 is an explanatory diagram showing an operation example of the comparison circuit 3_4 in the CAM of FIG. 図6は、図1のCAMにおける比較回路3_5の動作例を示す説明図である。FIG. 6 is an explanatory diagram showing an operation example of the comparison circuit 3_5 in the CAM of FIG. 図7は、2段階サーチを行うCAMの構成例を示すブロック図である。FIG. 7 is a block diagram illustrating a configuration example of a CAM that performs a two-stage search. 図8は、2段階サーチを行うCAMの別の構成例を示すブロック図である。FIG. 8 is a block diagram showing another configuration example of a CAM that performs a two-stage search. 図9は、2段階サーチを行うCAMの動作例を示す説明図である。FIG. 9 is an explanatory diagram showing an example of the operation of a CAM that performs a two-stage search. 図10は、2入力のサーチエントリに対して2分探索を行うCAMの構成例を示すブロック図である。FIG. 10 is a block diagram illustrating a configuration example of a CAM that performs a binary search on a 2-input search entry. 図11は、ソート機能付きCAMの構成例を示すブロック図である。FIG. 11 is a block diagram illustrating a configuration example of a CAM with a sorting function. 図12は、ソート機能付きCAMの動作例を示すタイミングチャートである。FIG. 12 is a timing chart illustrating an operation example of the CAM with sort function. 図13は、ソート機能付きCAMの別の構成例を示すブロック図である。FIG. 13 is a block diagram showing another configuration example of the CAM with sort function. 図14は、ソート機能付きCAMに適用可能なメモリセルの構成例を示す回路図である。FIG. 14 is a circuit diagram showing a configuration example of a memory cell applicable to the CAM with sort function. 図15は、図14のメモリセルの動作を表す真理値表を示す説明図である。FIG. 15 is an explanatory diagram showing a truth table representing the operation of the memory cell of FIG. 図16は、ソート機能付きCAMに適用可能なメモリセルの別の構成例を示す回路図である。FIG. 16 is a circuit diagram showing another configuration example of the memory cell applicable to the CAM with sort function. 図17は、図16のメモリセルの動作を表す真理値表を示す説明図である。FIG. 17 is an explanatory diagram showing a truth table representing the operation of the memory cell of FIG. 図18は、ソート機能付BCAMで相補型サーチキャッシュを構成し、複数のBSRAMを備えて2段階サーチを行うCAMの構成例を示すブロック図である。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.

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個ずつで済むため、比較対象のエントリデータの数が全エントリデータ数(2)の対数(log22=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 (log 2 2 N = N) and low power consumption. Here, the “center” address of the search area does not mean a mathematically exact half, but may be approximately the center. For example, the center address of 16 entries may be the seventh or eighth address. Although a larger error may be included, the number of steps required for the search (the number of the above “repetitions”), that is, the number of comparisons can be reduced as it is closer to ½. Hereinafter, the term “center” in this specification is defined similarly.

〔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 item 1, the memory includes first to Nth words having a number of words for each power of 2 from 1 word to 2 N-1 powers, each word being associated with the center address of the search area. It has memories (1_1 to 1_4) (N is a natural number), and the search circuit has first to Nth comparison circuits (3_1 to 3_4) 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 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 item 2, the memory further includes a 1-word N + 1th memory (1_5) having an address of 2 N-1, and the search circuit receives the comparison result input from the N-1th comparison circuit. And an N + 1th comparison circuit (3_5) for comparing the search data with the entry data stored in the (N + 1) th memory.

これにより、2のべき乗(2)ワードのエントリ数を備える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 item 1, the content addressable memory having the same configuration as the content addressable memory is defined as a first content addressable memory (BSRAM, 100). The associative memory (500) for performing the two-stage search includes a second associative memory (BCAM, 200) having the same number of entries as the first associative memory, and a plurality of the first associative memories (100_1 to 100_m). And a transfer circuit (900) that reads a plurality of entry data from the second associative memory, rearranges them in ascending or descending order, and transfers them to the first associative memory.

これにより、サーチキャッシュとして機能する第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 item 4, the associative memory (500) includes two second associative memories (200_1, 200_2), and when transferring entry data from one to the first associative memory, the other is used as a new entry. Data write target.

これにより、新たなエントリデータの書き込みが待たされることがない。エントリデータを一方の第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 item 4 or item 5, when search data is input, the associative memory (500) first sets the second associative memory as a search target, and if the second associative memory does not hit, Among the first associative memories, search objects are searched in order from the one in which entry data is most recently written.

これにより、ヒットするまでの時間を短縮することができる。   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 item 4 or 5, the second associative memory includes a memory cell (10) having a function of comparing magnitude matches, and compares each of input data inputted and entry data inputted so far. Based on the result, a rank storage circuit (9_1 to 9_N) that obtains and stores ranks corresponding to a plurality of input entry data is further provided. The transfer circuit reads the order and entry data in association with each other, rearranges them, and transfers them to the first associative memory.

これにより、エントリデータの並べ替え(ソート)に要する時間を短縮することができる。   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 item 1, the memory (2_2 to 2_4) includes a plurality of ports that can simultaneously read data from different words by a plurality of addresses, and the search circuits (3_1 to 3_5 and 4_1 to 4_5) include the plurality of ports. Each port is provided in parallel.

これにより、複数の探索データ(Search Entry 1とSearch Entry 2)を同時に並列して入力し、同時に並列して探索することができる。   As a result, a plurality of search data (Search Entry 1 and Search Entry 2) can be simultaneously input in parallel, and simultaneously searched in parallel.

〔9〕<半導体装置>
項1から項8までのいずれか1項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
[9] <Semiconductor device>
A semiconductor device comprising the associative memory according to any one of items 1 to 8 on a single semiconductor substrate.

これにより、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個ずつで済むため、比較対象のエントリデータの数が全エントリデータ数(2)の対数(log22=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 item 10, the first memory stores 2 N-1th data of the 2 N entry data, and the N + 1 memory stores 2 of the 2 N entry data. To the Nth power.

前記第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 Item 11, the first to (N + 1) th comparing circuits sequentially operate in different pipeline stages for the same search data.

これにより、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 item 11, the content addressable memory having the same configuration as the content addressable memory is defined as a first content addressable memory (BSRAM, 100). The associative memory (500) for performing the two-stage search includes a second associative memory (BCAM, 200) having the same number of entries as the first associative memory, and a plurality of the first associative memories (100_1 to 100_m). And a transfer circuit (900) that reads a plurality of entry data from the second associative memory, rearranges them in ascending or descending order, and transfers them to the first associative memory.

これにより、サーチキャッシュとして機能する第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 item 13, the associative memory (500) includes two second associative memories (200_1, 200_2), and when transferring entry data from one to the first associative memory, the other is used as a new entry. Data write target.

これにより、新たなエントリデータの書き込みが待たされることがない。エントリデータを一方の第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 item 13 or the item 14, when the search data is input, the associative memory (500) first sets the second associative memory as a search target, and if the second associative memory does not hit, Among the first associative memories, search objects are searched in order from the one in which entry data is most recently written.

これにより、ヒットするまでの時間を短縮することができ、ヒットした後の探索を行わないことによって消費電力を低減することができる。   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>
Item 13 or Item 14 is that the second associative memory is configured by a memory cell (10) having a function of comparing magnitude matches, and compares each of input data input and input data input so far. Based on the result, a rank storage circuit (9_1 to 9_N) that obtains and stores ranks corresponding to a plurality of input entry data is further provided. The transfer circuit reads the order and entry data in association with each other, rearranges them, and transfers them to the first associative memory.

これにより、エントリデータの並べ替え(ソート)に要する時間を短縮することができる。   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 Item 11, each of the second to Nth memories has a plurality of ports that can simultaneously read data from different words by a plurality of addresses, and the search circuits (4_1 to 4_5) are connected to the plurality of ports. Prepare each in parallel.

これにより、複数の探索データを同時に並列して入力し、同時に並列して探索することができる。   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 Items 10 to 17 on a single semiconductor substrate.

これにより、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)が入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納されるメモリ内のアドレスを探索する探索回路とを備える。メモリには、複数のエントリデータが昇順または降順に並べ替えられ、それぞれがアドレスに対応付けられて格納される。例えばメモリが2ワードの場合、2個のエントリデータが昇順で格納されることにより、0w(ワード)には最小値を持つエントリデータが、2−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〜2−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〜2−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〜2−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 address 3 × 2 N-2 -1w a search data (search entry).

探索回路は、この動作を探索領域が分割できなくなるまで繰り返し、その過程で探索データ(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回の比較を行えば足りるからである。これにより、比較対象のエントリデータの数が全エントリデータ数(2)の対数(log22=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〜2−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 log 2 2 N = N. In the conventional BCAM that compares the search data with all entries, the number of comparisons is 2 N equal to the number of entries. Therefore, in the CAM according to the present embodiment, the number of comparisons can be suppressed to N / 2N . If the power consumption of the content addressable memory (CAM) is approximately proportional to the number of comparisons, the power consumption of the CAM of this embodiment can be suppressed to N / 2 N of the conventional BCAM. Note that this is a theoretical approximation, and when mounted on an actual circuit element, an error corresponding to the mounting state occurs. For example, in the above example, the number of comparisons is 5 for N = 4. On the other hand, since the comparison circuit is composed of a normal logic circuit, the power consumed by one comparison operation may be larger than that of the comparison circuit in the cell. Rather it is suppressed.

本実施形態に示される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 other embodiments 2 to 6.

〔実施形態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 CAM 500 that performs a two-stage search includes one binary CAM (BCAM) 200 that functions as a search cache, and CAMs (BSRAM) 100_1 to 100_m that perform a binary search on m SRAMs that function as a main search. Consists of. The BCAM 200 is, for example, 256 entries. When one search data is input, the BCAM 200 compares simultaneously with a maximum of 256 entry data already stored, and indicates an address or mismatch that stores matching entry data. Outputs “Mishit”. In the BCAM 200, each entry has a valid flag (Valid flag), and only Valid entry data is targeted for search, so the result of comparison with Invalid entry data is ignored. New entry data can be written in the Invalid entry, and this writing can be executed in parallel with the search operation. Each of the BSRAMs 100_1 to 100_m has the same 256 entries as the BCAM 200, and when one search data is input, the stored 256 entry data are compared with the algorithm described in the first embodiment. , The address for storing the matching entry data or “mishit” indicating the mismatch is output.

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 CAM 500 is written to the BCAM 200. When entry data is written in all 256 entries of the BCAM 200, that is, when FULL is reached, the 256 entries are read from the BCAM 200, sorted, and transferred to one of the BSRAMs 100_1 to 100_m (900). All 256 entries of the BCAM 200 are set to invalid, and entry data writing is permitted. Further, when 256 new entry data are written in the BCAM 200, the 256 entries are read again, sorted and transferred to another one of the BSRAMs 100_1 to 100_m (900). In this way, 256 entry data written to the BCAM 200 are sorted by 256 and sequentially transferred to the BSRAMs 100_1 to 100_m. The sort and transfer operations may be executed by providing a dedicated logic circuit 900 for performing the operations, or may be executed by software as one of the tasks of the processor that controls the CAM 500.

探索データが入力されると、BCAM200が探索(サーチ)を行い、BCAM200がミスヒットを出力した時、即ち、入力された探索データと一致するエントリデータが、BCAM200に格納されているエントリデータの中から発見されなかったときには、その探索データは、BSRAM100_1〜100_mのうちの1個に送られて探索される。探索される順序は、BCAM200が最初であり、以降は、BSRAM100_1〜100_mのうち、最近エントリデータの転送が行われたBSRAMから順に探索対象とするのが好適である。最近書き込まれたエントリデータの方がヒットする確率が高いため、ヒットするまでの時間が短縮され、ヒットした後の探索を行わないことによって消費電力を低減することができる。   When search data is input, the BCAM 200 searches (searches), and when the BCAM 200 outputs a miss hit, that is, entry data that matches the input search data is included in the entry data stored in the BCAM 200. If not found, the search data is sent to one of the BSRAMs 100_1 to 100_m and searched. The search order is BCAM 200 first, and after that, among the BSRAMs 100_1 to 100_m, it is preferable to set the search target in order from the BSRAM to which entry data has been transferred recently. Since recently written entry data has a higher probability of hitting, the time to hit is shortened, and power consumption can be reduced by not performing a search after the hit.

以上説明したように、サーチキャッシュとして機能するBCAM200にヒットしたときにはレイテンシが小さく、ヒットしない場合にBSRAM100_1〜100_mを順次探索対象とすることで、大容量でも消費電力の小さいCAMを提供することができる。   As described above, when the BCAM 200 functioning as a search cache is hit, the latency is small, and when there is no hit, the BSRAMs 100_1 to 100_m are sequentially searched, thereby providing a CAM with a large capacity and low power consumption. .

例えば、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 entire CAM 500 has a large capacity of 64K (65536) entries. When this is constituted by one BinaryCAM, a comparison operation with 65536 entry data occurs simultaneously for one search data, and the power associated therewith is consumed. On the other hand, in the CAM 500 of the second embodiment, the number of entry data to be compared with respect to one search data even when all areas of all the CAMs (BCAM 200 and BSRAM 100_1 to 100_m) are searched. Is a total of 4336: 256 in the BCAM and 16 × 255 in the BSRAMs 100_1 to 100_m, which can be reduced to about 1/15. If a hit occurs in the middle, the subsequent comparison can be canceled, so that it can be further reduced.

本実施形態では各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 BCAM 200 is the same as the number of entries in each BSRAM, it may be more than the number of entries in each BSRAM. By making the number of entries in the BCAM 200 larger than the number of entries in each BSRAM, it is possible to write new entry data to the BCAM 200 even during a period in which entry data is transferred from the BCAM 200 to the BSRAM.

〔実施形態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 BCAM 200 that functions as a search cache. Depending on the configuration of the BCAM 200, the BCAM 200 becomes FULL and the entry data is transferred to the BSRAM during the period. In some cases, writing of new entry data to the BCAM 200 is restricted or prohibited. In order to solve such a problem, the search cache is composed of two BCAMs 200_1 and 200_2 that operate in a complementary manner.

図8は、2段階サーチを行うCAM500の別の構成例を示すブロック図である。   FIG. 8 is a block diagram illustrating another configuration example of the CAM 500 that performs a two-stage search.

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 CAM 500 includes two complementary BCAMs 200_1 and 200_2 that function as search caches, and CAMs (BSRAM) 100_1 to 100_m that perform binary search on m SRAMs that function as main searches. . Each of the BCAMs 200_1 and 200_2 has, for example, 256 entries, and operates in the same manner as the BCAM 200 in the second embodiment. BSRAMs 100_1 to 100_m are similar to BSRAMs 100_1 to 100_m in the second embodiment.

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 CAM 500 is written to one of the BCAMs 200_1 and 200_2, for example, the BCAM 200_2. When the BCAM 200_2 becomes FULL, all entries are read from the BCAM 200_2, sorted, and transferred to one of the BSRAMs 100_1 to 100_m (902). During this read / sort / transfer period, the other BCAM 200_1 is a target for writing entry data that is newly input. When the BCAM 200_1 becomes FULL, all entries are read from the BCAM 200_1, sorted, and transferred to one of the BSRAMs 100_1 to 100_m (901). Is the target of writing. In this way, the BCAMs 200_1 and 200_2 are alternately subjected to writing of input data to be input and are subjected to reading, sorting, and transfer, so that writing of new entry data is not waited for.

探索動作についても、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 CAM 500 shown in the second and third embodiments, the search order between the BSRAMs 100_1 to 100_m, which is the main search, can be flexibly changed. Here, when applied to an application system in which entry data is frequently rewritten, it has been found that newly written entry data tends to have a higher probability of hit. Therefore, by setting the newly written entry data as a search target with higher priority, it is possible to hit faster, and by controlling so that the subsequent search is not performed at the time of the hit, power consumption is further increased. Can be reduced.

図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 numbers 0 to 7 are given. One stage of the pipeline stage represents a period for writing or searching in one entire BSRAM, and the stages from the first (1st) to the eighth (8th) are shown. “W” indicates an entry data write operation, that is, an entry data transfer operation with sorting from the search cache (BCAM 200 or BCAM 200_1 and 200_2). “Data0” to “data7” indicate that a search operation using the data as search data is being executed.

エントリデータの書き込み「W」は、第1ステージのBSRAM0、第2ステージのBSRAM1の順に、第7ステージのBSRAM7へ進み、図示されないが以降はBSRAM0に戻って繰り返されるもとする。   The entry data write “W” proceeds to the BSRAM 7 of the seventh stage in the order of the BSRAM 0 of the first stage and the BSRAM 1 of the second stage, and although not shown, the process returns to the BSRAM 0 and is repeated thereafter.

第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 BSRAM 7 as well, the BSRAM 6 is searched in the second stage. If the miss-hit continues, the BSRAM 5 in the third stage, the BSRAM 4 in the fourth stage, the BSRAM 3 in the fifth stage, the BSRAM 2 in the sixth stage, the seventh stage BSRAM1 and BSRAM0 in the eighth stage are sequentially searched. Assuming the above-mentioned writing order, the larger the number assigned to the BSRAM, the more new entry data is stored.

第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 BSRAM 4 is a write target, and the BSRAM 4 to which writing has been completed immediately before stores the latest entry data. Therefore, the search data data4 after the miss hit in the search cache is stored. It is the first search target. However, the same fifth stage is the timing at which the search for the search data data0 is also executed. As described above, two search data data4 and data0 are simultaneously input to one BSRAM. The same phenomenon also occurs in the sixth stage BSRAM2 and BSRAM4, the seventh stage BSRAM1, BSRAM3 and BARAM5, and the eighth stage BSRAM0, BSRAM2, BSRAM4 and BSRAM6.

この場合には下記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 data 0 in the BSRAM 3 may be meaningless as a search target in the fifth stage next to the BSRAM 4 in the fourth stage because the entry data of the BSRAM 3 in the fourth stage is rewritten. In this case, the search result of data 0 is set to “miss hit”, and the subsequent search is stopped, so that the search data contention problem is solved. A third solution is to configure the BSRAM so that a plurality of search data can be searched simultaneously in parallel.

図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 data Search Entry 1 and Search Entry 2 are simultaneously compared with the entry data in parallel by the comparison circuits 3_1 to 3_5 and the comparison circuits 4_1 to 4_5. The entry data to be compared is read independently from each port of the dual port SRAMs 2_2 to 2_4. Each wiring shown in FIG. 10 is composed of one or a plurality of bits, but the bus notation is omitted in the drawing.

並列動作を可能とした点以外の動作は、図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 CAM 300 with a sorting function. In the CAM performing the two-stage search shown in FIGS. 7 and 8, the BCAM 200 or 200_1 and 200_2 functioning as the searcher cache is changed to the CAM 300 with sort function shown in FIG. 902 is simplified.

ソート機能付きCAM300は、一致に加えて大小比較の機能を持つ比較機能付セルを使用したBCAMアレイ201と、各エントリに対応して設けられる順位レジスタ9_1〜9_Nと、比較機能付セルによる比較結果に基づいて、順位レジスタ9_1〜9_Nに適切な値を書き込む論理回路(Logic)8とを備える。BCAMアレイ201は、通常のメモリと同様にアドレスを入力してデータをリード/ライトすることができ(RAMモード)、探索データ(Search Data)を入力して一致するエントリデータが格納されているアドレスをヒットアドレス(Hit Address)として出力することができる(CAMモード)。   The CAM 300 with a sort function includes a BCAM array 201 that uses a cell with a comparison function having a size comparison function in addition to a match, rank registers 9_1 to 9_N provided corresponding to each entry, and a comparison result by a cell with a comparison function And a logic circuit (Logic) 8 for writing appropriate values to the rank registers 9_1 to 9_N. The BCAM array 201 can read / write data by inputting an address in the same way as a normal memory (RAM mode), and can input search data (Search Data) to store matching entry data. Can be output as a hit address (CAM mode).

ソート機能付きCAM300は、新たなエントリデータが書き込まれる度に順位レジスタ9_1〜9_Nに格納される全ての順位を適切に更新する。新たなエントリデータが入力されると、比較機能付セルを使用したBCAMアレイ201は、入力された新たなエントリデータと、BCAMアレイ201内の各エントリに保持されているエントリデータとの比較を行って、エントリ毎に一致及び大小の比較結果を出力する。論理回路(Logic)8は、エントリ毎の上記比較結果に基づいて、順位レジスタ9_1〜9_Nに格納される全ての順位を適切に更新する。このとき、順位を更新するアルゴリズムについては、「ソート機能付きCAM300の動作」としてその一例を説明するが、その例に制限されるものではなく任意である。   The CAM 300 with a sort function appropriately updates all ranks stored in the rank registers 9_1 to 9_N each time new entry data is written. When new entry data is input, the BCAM array 201 using the cell with a comparison function compares the input new entry data with the entry data held in each entry in the BCAM array 201. Then, a match and large / small comparison result is output for each entry. The logic circuit (Logic) 8 appropriately updates all ranks stored in the rank registers 9_1 to 9_N based on the comparison result for each entry. At this time, an example of the algorithm for updating the rank will be described as “operation of the CAM 300 with sort function”, but the algorithm is not limited to the example and is arbitrary.

なお、図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 Patent Document 1 can be used as the cell with a comparison function having the matching and size comparison functions. Although the detailed configuration and operation will be described later, a comparison is made between a value stored for each entry and a value input from the search entry, and coincidence or magnitude relations are simultaneously output in parallel.

ソート機能付きCAM300の動作について説明する。   The operation of the CAM 300 with sort function will be described.

全てのエントリのデータ及びそれぞれに対応する順位レジスタ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 entry 0 at time t1. Since the comparison results of the entries not to be written are all “large”, “3”, which is the number of “large”, is written to the rank register 0.

時刻t2においてエントリ1にデータ「3」が書き込まれる。書き込み非対象のエントリの比較結果は、すべて「大きい」であるので「大きい」とされた個数である「3」が、順位レジスタ1に書き込まれる。書き込み非対象のエントリ0については、書き込み対象エントリ1の元の順位「0」よりも順位レジスタ0の値である書き込み非対象のエントリ0の元の順位「3」の方が大きいので1減らされて、順位レジスタ0の値は「2」となる。   Data “3” is written to entry 1 at time t2. Since the comparison results of the entries not to be written are all “large”, “3”, which is the number of “large”, is written to the rank register 1. The entry 0 that is not to be written is decremented by 1 because the original rank “3” of the entry 0 that is not to be written, which is the value of the rank register 0, is larger than the original rank “0” of the entry 1 to be written. Thus, the value of the rank register 0 is “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する)からである。   Data “2” is written to entry 2 at time t3. The comparison result of the entry not to be written is “large” for entries 0 and 3 and “2”, which is “large” because entry 1 is “small”, and is written to the rank register 2. The entry 0 not to be written is decremented by 1 because the original rank “2” of the entry 0 not to be written, which is the value of the rank register 0, is larger than the original rank “0” of the entry 2 to be written. Thus, the value of the rank register 0 is “1”. For entry 1 that is not to be written, an operation of increasing (+1) the value of the corresponding rank register 1 and an operation of decrementing (-1) the counter register 1 are performed to cancel each other. "No change. Since the write target data “2” is “smaller” than the entry data “3” stored in the non-write target entry, the rank of the corresponding rank register 1 is increased by 1 (+1) while the write target data “2” is increased. This is because the original rank “3” of the entry 1 not to be written, which is the value of the rank register 1, is larger than the original rank “0” of the entry 2, so that 1 is reduced (−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減らすからである。   Data “0” is written to entry 3 at time t4. Since the comparison result of the entry not to be written is “small” in the entries 0 to 2, “0” which is the number of “large” is written in the rank register 3. For entries 0, 1, and 2 that are not to be written, an operation of increasing (+1) the order of the corresponding rank registers 0, 1, and 2, and an operation of decreasing (-1) are canceled out. The values of the rank registers 0, 1, and 2 remain “1”, “3”, and “2”. Since the write target data “0” is “smaller” than the entry data “1”, “3”, and “2” stored in each non-write target entry, the corresponding rank registers 0, 1, and 2 While the value is incremented by 1, the original ranks “1”, “3” and “2” of the non-write entries 0, 1 and 2 are larger than the original rank “0” of the write target entry 3. This is because each one is reduced.

以上のように、新たなエントリデータが書き込まれる度に全てのエントリの順位が適切に更新され、常に正しい順位が保たれる。   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 CAM 300 with a sorting function. Unlike the CAM shown in FIG. 11, the rank registers 9_1 to 9_N are configured by the CAM 202, and are configured to be able to search for an address by inputting the rank. The address input to the BCAM 201 includes a selector 11 that selectively switches between a sort address output from the CAM 202 functioning as a rank register and a logical address input from the outside. By sequentially inputting the rank from the input address, the corresponding entry is output from the BCAM 201 corresponding to the rank.

図11に示されるソート機能付きCAM300では、順位レジスタ9_1〜9_Nから順次、順位の値を出力し、BCAM201からは対応するエントリのエントリデータをRAMモードで順次読み出すことにより、エントリデータとそれに対応する順位が読み出される。順位をBSRAMのアドレスとして対応するエントリデータをBSRAMのエントリに書き込むことにより、ソートされたエントリデータをBSRAMに書き込むことができる。   In the CAM 300 with a sort function shown in FIG. 11, the rank value is sequentially output from the rank registers 9_1 to 9_N, and the entry data of the corresponding entry is sequentially read from the BCAM 201 in the RAM mode, thereby corresponding to the entry data. The order is read out. By writing the corresponding entry data in the BSRAM entry using the rank as the BSRAM address, the sorted entry data can be written in the BSRAM.

図13に示されるソート機能付きCAM300では、入力アドレスに順位を順次入力することによって指定された順序で、対応するエントリデータをBCAM201から読み出すことができるので、BSRAMがエントリデータの書き込みにおいてランダムアクセスを可能とする構成とする必要がない。また、図13に示されるソート機能付きCAM300は、順位をランダムに指定して対応するエントリを読み出すことができるので、実施形態2と3に示される2段階サーチを行うCAM500のサーチキャッシュ以外にも、応用することができる。   In the CAM 300 with a sorting function shown in FIG. 13, the corresponding entry data can be read from the BCAM 201 in the order specified by sequentially inputting the ranks to the input addresses, so that the BSRAM performs random access in writing the entry data. There is no need to make the configuration possible. Further, since the CAM 300 with a sort function shown in FIG. 13 can read the corresponding entry by randomly specifying the rank, in addition to the search cache of the CAM 500 that performs the two-stage search shown in the second and third embodiments. Can be applied.

一致に加えて大小比較の機能を持つ比較機能付セルの構成と動作について、説明する。   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 memory cell 10 applicable to the CAM with sort function, and FIG. 15 is an explanatory diagram showing a truth table showing the operation of the memory cell.

メモリセル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 memory cell 10, an inverter constituted by an inverter constituted by an N-channel transistor MN1 and a P-channel transistor MP1 constitutes a memory element with their outputs connected to other inputs. The output of the inverter composed of MN1 and MP1 is connected to the bit line BL via MN3 controlled by the word line WL, and the output of the inverter composed of MN2 and MP2 is controlled by the word line WL. Is connected to the inverted bit line / BL via the MN4. BL and / BL constitute a pair of bit lines which are logically opposite in polarity and complementary. The logical inversion is originally distinguished by the “upper line” shown above the signal line name, but “/” (slash) is substituted due to the limitation of the font that can be used in the specification. One bit of the search data (Search Data) is input to the complementary search data line pair SL and / SL. SL is connected to the gate of MN5, and / SL is connected to the gate of MN6. The gate of MP3 is connected to the output of the inverter composed of MN1 and MP1, the gate of MP4 is connected to the output of the inverter composed of MN2 and MP2, and the drains of MP3 and MN4 are both of the composite logic gate 12. Input to non-inverting input terminal. The non-inverting input terminal of the composite logic gate 12 is precharged to VDD through MN7 controlled by the precharge enable signal PE, and a discharge path through MP3 and MN5 or MP4 and MN6 is formed. The non-inverting input terminal of the composite logic gate 12 is discharged to a low level when either MP3 and MN5 or MP4 and MN6 are both on. The case where both MP3 and MN5 or MP4 and MN6 are turned on is a case where the held data and the search data do not match. The output of the composite logic gate 12 is the inversion logic / ML of the match line ML indicating “match”, and the match line pre / ML from the adjacent cell on the upper bit side is input to the inversion input terminal of the composite logic gate 12. Have been entered. When the match line pre / ML input from the upper bit side is low, “match” is detected in all the bits higher than the cell 10, and when “match” is detected in the cell 10 as well. , Low is output from the match line / ML.

大小判定ライン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 cell 10 is larger than the search data, a low “0” when the data is smaller, and a high impedance (HiZ) when the data match. The size determination line BG is short-circuited between a plurality of cells 10 constituting the same entry, and the bit of the entry data held from the cell 10 which does not match for the first time when compared in order from the upper bit. Output via MP5, MP6 and MN8. As a result, it is possible to compare the size of the entry data of a plurality of bits.

図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 memory cell 10 applicable to the CAM with sort function, and FIG. 17 is an explanatory diagram showing a truth table representing the operation of the memory cell. The circuit shown in FIG. 15 is a dynamic circuit, whereas the circuit shown in FIG. 16 is a full static circuit. Therefore, the precharge enable PE is not required, and the BG indicating the size comparison result is input with the input preBG from the adjacent cell and is output as BG in the subsequent stage. MP7 to MP19 are provided in place of MN7 for controlling precharge, and composite logic gates 13 and 14 are provided in place of MP5, MP6 and MN8. The realized logic is the cell shown in FIG. 10 is the same.

図11と図13に示されるBCAM201に使用される一致及び大小比較の機能を持つ比較機能付セルには、エントリごとに格納されている値とサーチエントリから入力される値との間で比較を行い、一致または大小の関係を並列して判定して出力することができるセルが用いられる。上述の図14や図16に示したセルには限定されず、他の回路構成であっても良く、例えば、特許文献1に記載されるセルを用いることができる。   In the cell with a comparison function having a matching and size comparison function used in the BCAM 201 shown in FIG. 11 and FIG. 13, a comparison is made between the value stored for each entry and the value input from the search entry. A cell is used that can determine and output a match or magnitude relationship in parallel. It is not limited to the cells shown in FIGS. 14 and 16 described above, and other circuit configurations may be used. For example, the cell described in Patent Document 1 can be used.

〔実施形態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 CAM 500 includes two complementary BCAMs 300_1 and 300_2 that function as search caches, and CAMs (BSRAM) 100_1 to 100_m that perform binary search on m SRAMs that function as main searches. . The BCAMs 300_1 and 300_2 are BCAMs with a sort function as exemplified in the fifth embodiment, and each has, for example, 256 entries.

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 CAM 500 is alternately written to the input data BCAM 300_1 and 300_2, and is read, sorted, and transferred, new entry data is provided as in the third embodiment. There is no waiting for writing. Here, since the BCAMs 300_1 and 300_2 are BCAMs with a sorting function, as exemplified in the fifth embodiment, the entry data can be read in the sorted order or together with the corresponding ranks. In the transfer operation or transfer circuits 911 and 912, the sort function can be omitted or greatly simplified.

探索動作については、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 Comparison circuit 5 Address decoder (ADR)
6 registers (128b reg.)
7 Flip-flop (FF)
8 logic circuit 9 rank register 10 memory cell 11 selector 12 logic gate 100 CAM (BSRAM) for performing binary search on SRAM
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.
請求項1において、前記メモリは、各ワードに前記探索領域の中央のアドレスが対応付けされた、1ワードから2のN−1乗までの2のべき乗数毎のワード数を持つ第1から第Nメモリを有し(Nは自然数)、前記探索回路は、前記第1から第Nメモリに対応して設けられる第1から第N比較回路を有し、
前記比較回路は、対応するメモリからエントリデータを読み出し前記探索データと比較して、当該エントリデータが格納されるアドレスと比較結果とを後段の比較回路に出力し、
前記比較回路は、前段から入力されるアドレスと比較結果に基づいて、比較対象のエントリデータを読み出すアドレスを決める、連想メモリ。
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.
請求項2において、前記メモリは、2のN乗−1のアドレスを有する1ワードの第N+1メモリをさらに有し、前記探索回路は、第N−1比較回路から入力される比較結果に基づいて前記探索データと前記第N+1メモリに格納されるエントリデータとを比較する第N+1比較回路をさらに有する、連想メモリ。   3. The memory according to claim 2, further comprising a 1-word N + 1-th memory having an address of 2 N-1 and the search circuit is based on a comparison result input from the N-1-th comparison circuit. An associative memory further comprising an (N + 1) th comparison circuit for comparing the search data with entry data stored in the (N + 1) th memory. 請求項1において、前記連想メモリと同一構成の連想メモリを第1の連想メモリとし、前記第1の連想メモリと同じエントリ数の第2の連想メモリと、複数個の前記第1の連想メモリと、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路をさらに備える、連想メモリ。   The associative memory having the same configuration as the associative memory is a first associative memory, a second associative memory having the same number of entries as the first associative memory, a plurality of the first associative memories, An associative memory further comprising a transfer circuit that reads a plurality of entry data from the second associative memory, rearranges them in ascending or descending order, and transfers them to the first associative memory. 請求項4において、前記第2の連想メモリを2個備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする、連想メモリ。   5. The associative memory according to claim 4, comprising two said second associative memories, wherein when the entry data is transferred from one to the first associative memory, the other is to be written with new entry data. 請求項4において、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする、連想メモリ。   5. When search data is input according to claim 4, first, when the second associative memory is set as a search target and the second associative memory does not hit, among the plurality of first associative memories, An associative memory to be searched in order from the most recently written entry data. 請求項4において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセルで構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路をさらに有し、前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する、連想メモリ。   5. The second associative memory according to claim 4, wherein the second associative memory is composed of memory cells having a function of comparing magnitude matches, and is based on a result of comparing each of input data inputted and entry data inputted so far. And a rank storage circuit for obtaining and storing ranks corresponding to a plurality of inputted entry data, and the transfer circuit reads the ranks and entry data in association with each other and rearranges them in the first associative memory. Associative memory to be transferred. 請求項1において、前記メモリは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路を、前記複数のポート毎に並列に備える、連想メモリ。   2. The associative memory according to claim 1, wherein the memory includes a plurality of ports that can simultaneously read data from different words by a plurality of addresses, and includes the search circuit in parallel for each of the plurality of ports. 請求項1に記載される連想メモリを、単一半導体基板上に備える、半導体装置。   A semiconductor device comprising the content addressable memory according to claim 1 on a single semiconductor substrate. 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乗個のエントリデータをソートしたときの何番目のエントリデータと一致するかを算出して出力する、連想メモリ。
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.
請求項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を出力する、連想メモリ。
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.
請求項11において、前記第1から第N+1比較回路は、同一の探索データに対して、互いに異なるパイプラインステージで順次動作する、連想メモリ。   12. The associative memory according to claim 11, wherein the first to (N + 1) th comparison circuits sequentially operate at different pipeline stages for the same search data. 請求項11において、前記連想メモリと同一構成の連想メモリを第1の連想メモリとし、前記第1の連想メモリと同じエントリ数の第2の連想メモリと、複数個の前記第1の連想メモリと、前記第2の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第1の連想メモリに転送する、転送回路をさらに備える、連想メモリ。   12. The associative memory having the same configuration as the associative memory is a first associative memory, a second associative memory having the same number of entries as the first associative memory, a plurality of the first associative memories, An associative memory further comprising a transfer circuit that reads a plurality of entry data from the second associative memory, rearranges them in ascending or descending order, and transfers them to the first associative memory. 請求項13において、前記第2の連想メモリを2個備え、一方から第1の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする、連想メモリ。   14. The associative memory according to claim 13, comprising two of the second associative memories, wherein when the entry data is transferred from one to the first associative memory, the other is to be written with new entry data. 請求項13において、探索データが入力されたとき、まず前記第2の連想メモリを探索対象とし、前記第2の連想メモリでヒットしなかった場合に、前記複数の第1の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする、連想メモリ。   The search method according to claim 13, wherein when the search data is input, the second associative memory is first set as a search target, and when no hit occurs in the second associative memory, among the plurality of first associative memories, An associative memory to be searched in order from the most recently written entry data. 請求項13において、前記第2の連想メモリは、大小一致を比較する機能を有するメモリセルで構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路をさらに有し、前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第1の連想メモリに転送する、連想メモリ。   14. The second associative memory according to claim 13, wherein the second associative memory is composed of memory cells having a function of comparing magnitude matches, and is based on a result of comparing input data inputted and entry data inputted so far. And a rank storage circuit for obtaining and storing ranks corresponding to a plurality of inputted entry data, and the transfer circuit reads the ranks and entry data in association with each other and rearranges them in the first associative memory. Associative memory to be transferred. 請求項11において、前記第1から第Nメモリのそれぞれは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路を、前記複数のポート毎に並列に備える、連想メモリ。   12. The memory according to claim 11, wherein each of the first to Nth memories has a plurality of ports that can simultaneously read data from different words by a plurality of addresses, and the search circuit is arranged in parallel for each of the plurality of ports. Equipped with associative memory. 請求項10に記載される連想メモリを、単一半導体基板上に備える、半導体装置。   A semiconductor device comprising the associative memory according to claim 10 on a single semiconductor substrate.
JP2014108100A 2014-05-26 2014-05-26 Associative memory and semiconductor device Pending JP2015225675A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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