KR102134315B1 - A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA - Google Patents
A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA Download PDFInfo
- Publication number
- KR102134315B1 KR102134315B1 KR1020180158929A KR20180158929A KR102134315B1 KR 102134315 B1 KR102134315 B1 KR 102134315B1 KR 1020180158929 A KR1020180158929 A KR 1020180158929A KR 20180158929 A KR20180158929 A KR 20180158929A KR 102134315 B1 KR102134315 B1 KR 102134315B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- search key
- look
- address
- update
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/1776—Structural details of configuration resources for memories
Abstract
본 발명은 FPGA 기반 TCAM 구조에 관한 것으로, 보다 구체적으로는 검색하고자 하는 서치 키의 값을 룩업테이블을 구성하는 비트의 주소로 이용하고, 룩업테이블의 출력은 검색의 일치 또는 불일치 여부를 반영할 수 있도록 하며, 서치 키의 내용에 기반하여 검색이 가능한 동시에 룩업테이블을 업데이트할 수 있는 FPGA 기반 TCAM 구조에 관한 것이다.The present invention relates to an FPGA-based TCAM structure, and more specifically, uses the value of the search key to be searched as the address of a bit constituting the lookup table, and the output of the lookup table can reflect whether the search is matched or mismatched. It is related to an FPGA-based TCAM structure capable of searching based on the contents of a search key and updating a lookup table at the same time.
Description
본 발명은 FPGA 기반 TCAM 구조에 관한 것으로, 보다 구체적으로는 검색하고자 하는 서치 키의 내용을 룩업테이블을 구성하는 비트의 주소로 이용하고, 룩업테이블의 출력은 검색의 일치 또는 불일치 여부를 반영할 수 있도록 하며, 서치 키의 내용에 기반하여 검색이 가능한 동시에 룩업테이블을 업데이트할 수 있는 FPGA 기반 TCAM 구조에 관한 것이다.The present invention relates to an FPGA-based TCAM structure, and more specifically, uses the content of the search key to be searched as the address of a bit constituting the lookup table, and the output of the lookup table can reflect whether the search is matched or mismatched. It relates to an FPGA-based TCAM structure capable of searching based on the contents of the search key and updating the lookup table at the same time.
CAM(Content Addressable Memory)은 네트워킹, 마이크로 프로세서 변환 버퍼(microprocessor translation look-aside buffers), 캐시, 패턴 매칭 및 대용량 데이터 처리 가속화와 같은 속도가 중요한 응용 프로그램에서 룩업 테이블 검색 작업을 구현하는 데 광범위하게 사용된다.Content Addressable Memory (CAM) is widely used to implement lookup table lookup operations in speed-critical applications such as networking, microprocessor translation look-aside buffers, cache, pattern matching, and accelerated processing of large amounts of data. do.
CAM은 입력 검색 키가 저장된 모든 데이터와 병렬로 비교되고 일치하는 데이터의 주소가 출력되는 특수 유형의 메모리이다.CAM is a special type of memory where the input search key is compared in parallel to all stored data and the address of the matching data is output.
CAM은 두 가지 범주로 분류되는데, binary CAM(BCAM)은 각 비트가 "0"및 "1"의 이진 상태를 나타내고, ternary CAM(TCAM)에는 추가 상태 "do not care state x"가 있어 와일드 카드 항목을 나타낼 수 있다CAMs are classified into two categories: binary CAM (BCAM), where each bit represents the binary state of "0" and "1", and ternary CAM (TCAM) has an additional state of "do not care state x" to wildcard. Can indicate an item
도 1은 일반적인 4×4 TCAM을 보여주는 도면이다.1 is a view showing a typical 4x4 TCAM.
도 1을 참조하면, 일반적인 TCAM(10)은 서치 키(13)가 입력되면, TCAM 셀(11a)로 구성되는 ASIC (Application-Specific Integrated Circuit)에서 룩업 테이블의 병렬 검색 작업을 수행하고, 폭 방향(width)의 셀들의 모든 데이터가 서치 키(13)와 동일할 경우 매치 라인(ML)에서 '1'의 값이 출력되고 우선순위 엔코더(12)는 매치 주소(Match address)를 출력한다.Referring to FIG. 1, when a
도 1의 예에서는 서치 키(13)가 '1100'이므로 동일한 데이터 'X100'이 존재하는 제1 매치 라인(ML1)에서 신호가 출력되며, 우선순위 엔코더(12)는 매치 주소 '10'을 출력한다.In the example of FIG. 1, since the
이 TCAM은 결정적 시간(deterministic time)에서 고속 룩-업 성능(high-speed look-up performance)을 제공하는 장점이 있으나 낮은 저장 밀도(low storage density), 높은 전력 소비(higher power consumption), 높은 비트당 비용(higher cost per bit)의 결점이 존재한다.This TCAM has the advantage of providing high-speed look-up performance at deterministic time, but low storage density, high power consumption, and high bit. There is a drawback of higher cost per bit.
본 발명은 상술한 문제점을 해결하기 위해 안출된 것으로 본 발명의 목적은 서치 키의 내용을 룩업테이블을 구성하는 비트의 주소로 이용하고, 룩업테이블들의 출력은 검색의 일치 또는 불일치 여부를 반영할 수 있도록 하며, 서치 키의 내용에 기반하여 검색이 가능한 동시에 룩업테이블을 업데이트할 수 있는 FPGA 기반 TCAM 구조를 제공하는 것이다.The present invention has been devised to solve the above-described problem, and the object of the present invention is to use the content of the search key as the address of a bit constituting the lookup table, and the output of the lookup tables can reflect whether the search matches or does not match. It provides an FPGA-based TCAM structure capable of searching based on the contents of the search key and updating the lookup table.
상기의 목적을 달성하기 위하여 본 발명은 FPGA 기반 TCAM 구조로서, 복수 개의 룩업테이블을 포함하고, 상기 룩업테이블들의 출력은 캐리 체인을 통해 AND 연산되어 최종 매치 결과가 출력되며, 상기 각 룩업테이블은 입력되는 서치 키가 표현할 수 있는 값의 개수만큼 비트를 가지고, 저장하고자 하는 서치 키의 값에 대응하는 주소의 비트에는 '1'이 쓰여지고 그렇지 않은 비트에는 '0'이 쓰여지며, 검색하고자 하는 서치 키가 상기 각 룩업테이블에 입력되면, 입력된 서치 키의 값에 해당하는 주소의 비트 값을 출력하여, 모든 룩업테이블에서 '1'이 출력될 경우, 상기 최종 매치 결과는 '1'이 출력되는 것을 특징으로 하는 FPGA 기반 TCAM 구조를 제공한다.In order to achieve the above object, the present invention is an FPGA-based TCAM structure, including a plurality of lookup tables, and the output of the lookup tables is ANDed through a carry chain to output the final match result, and each lookup table is input The search key has as many bits as the number of values that can be expressed, '1' is written in the bit of the address corresponding to the value of the search key to be stored, and '0' is written in the bit that is not, and the search key to be searched When is input to each of the lookup tables, outputs the bit value of the address corresponding to the input search key value, and when '1' is output from all the lookup tables, the final match result is outputted as '1'. It provides an FPGA-based TCAM structure.
바람직한 실시예에 있어서, 서치 키의 검색은 검색하고자 하는 서치 키의 값에 해당하는 주소의 비트로 직접 접근하여 이루어지며, 서치 키의 검색과 동시에 검색하고자 하는 서치 키의 주소에 해당하지 않는 룩업테이블의 나머지 비트들은 저장된 값을 업데이트할 수 있다.In a preferred embodiment, the search of the search key is performed by directly accessing the bit of the address corresponding to the value of the search key to be searched, and at the same time as the search of the search key, the lookup table does not correspond to the address of the search key to be searched. The remaining bits can update the stored value.
바람직한 실시예에 있어서, 상기 룩업테이블들은 네 개의 64비트 룩업테이블램(LUTRAM)이 쿼드 포트 램 구조로 이루어지고 세 개의 룩업테이블램은 읽기 포트로써 18개의 TCAM 비트를 구현하고, 한 개의 룩업테이블램은 쓰기 포트로 기능한다.In a preferred embodiment, the look-up tables consist of four 64-bit look-up table RAMs (LUTRAM) in a quad-port RAM structure, three look-up table RAMs implement 18 TCAM bits as a read port, and one look-up table RAM. Functions as a write port.
바람직한 실시예에 있어서, 상기 룩업테이블램의 업데이트 주소를 출력하는 log2D-비트 디코더; 6비트의 시퀀스를 생성하여 출력하는 MOD-64 카운터; 및 업데이트하고자 하는 값인 업데이트 워드와 상기 MOD-64 카운터의 6비트 시쿼스를 서로 비교하는 비교기;를 더 포함하고, 해당 업데이트 주소에서 상기 업데이트 워드와 상기 6비트 시퀀스가 서로 일치할 경우 해당 업데이트 주소의 비트를 '1'로 기록한다.In a preferred embodiment, the log 2 D-bit decoder for outputting the update address of the look-up table RAM; A MOD-64 counter that generates and outputs a sequence of 6 bits; And a comparator that compares the update word, which is the value to be updated, with the 6-bit sequence of the MOD-64 counter, and further includes, when the update word and the 6-bit sequence in the corresponding update address match each other. Write the bit as '1'.
본 발명은 다음과 같은 우수한 효과를 가진다.The present invention has the following excellent effects.
본 발명의 FPGA 기반 TCAM 구조에 의하면, 검색하고자 하는 서치 키의 내용을 룩업테이블을 구성하는 비트의 주소로 이용하고, 서치 키의 내용에 해당하는 비트로 직접 접근하여 검색하는 동시에 현재 검색되고 있지 않는 다른 주소의 비트들은 업데이트할 수 있어 높은 검색 및 업데이트 성능을 제공하고 단일 사이클의 검색 대기시간을 줄일 수 있는 장점이 있다.According to the FPGA-based TCAM structure of the present invention, the content of the search key to be searched is used as the address of the bits constituting the look-up table, and the bit corresponding to the content of the search key is directly accessed and searched, and at the same time, it is not currently being searched. The bits of the address can be updated, providing high search and update performance and reducing the single-cycle search latency.
도 1은 일반적인 4×4 TCAM을 보여주는 도면,
도 2는 본 발명의 일 실시예에 따른 FPGA 기반의 TCAM 구조를 보여주는 도면,
도 3은 본 발명의 일 실시예에 따른 FPGA 기반의 TCAM 구조에서 업데이트 로직을 설명하기 위한 도면이다.1 is a view showing a typical 4×4 TCAM,
2 is a diagram showing an FPGA-based TCAM structure according to an embodiment of the present invention;
3 is a diagram for explaining update logic in an FPGA-based TCAM structure according to an embodiment of the present invention.
본 발명에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있는데 이 경우에는 단순한 용어의 명칭이 아닌 발명의 상세한 설명 부분에 기재되거나 사용된 의미를 고려하여 그 의미가 파악되어야 할 것이다.The terminology used in the present invention has been selected from the general terms that are currently widely used as possible, but in certain cases, there are also terms that are arbitrarily selected by the applicant. In this case, the meanings described or used in the detailed description of the invention are not considered as simple names. Therefore, the meaning should be grasped.
이하, 첨부한 도면에 도시된 바람직한 실시예들을 참조하여 본 발명의 기술적 구성을 상세하게 설명한다.Hereinafter, the technical configuration of the present invention will be described in detail with reference to preferred embodiments illustrated in the accompanying drawings.
그러나 본 발명은 여기서 설명되는 실시예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 명세서 전체에 걸쳐 동일한 참조번호는 동일한 구성요소를 나타낸다.However, the present invention is not limited to the embodiments described herein and may be embodied in other forms. The same reference numerals throughout the specification indicate the same components.
도 2는 본 발명의 일 실시예에 따른 FPGA 기반의 TCAM 구조를 보여주는 도면이다. 도 2를 참조하면, 본 발명의 일 실시예에 따른 FPGA 기반의 TCAM 구조(이하, 'TCAM 구조'라 함)는 FPGA(Field-Programmable Gate Array) 기반으로 설계된 TCAM 구조이다.2 is a diagram showing an FPGA-based TCAM structure according to an embodiment of the present invention. Referring to FIG. 2, an FPGA-based TCAM structure (hereinafter referred to as a'TCAM structure') according to an embodiment of the present invention is a TCAM structure designed based on a field-programmable gate array (FPGA).
일반적으로 SRAM(static randomaccess memory) 기반의 TCAM은 업데이트 대기 시간이 길며, 업데이트 작업 중, 검색 작업이 일시 중지되어야 하므로 고속 업데이트가 필요한 어플리케이션에서 실행할 수 없는 문제점이 있다.In general, a static random access memory (SRAM)-based TCAM has a long update waiting time, and during an update operation, a search operation needs to be paused, so it cannot be executed in an application requiring high-speed update.
그러나 본 발명은 FPGA에서 동적으로 재구성 가능한 TCAM 디자인이며, 슬라이스 M 타입 로직 슬라이스에서 사용할 수 있는 룩업 테이블 램(LUTRAM)을 쿼드 포트 RAM으로 구성하여 FPGA의 분산 RAM 리소스를 활용한다.However, the present invention is a dynamically reconfigurable TCAM design in an FPGA and utilizes the distributed RAM resources of the FPGA by configuring a lookup table RAM (LUTRAM) that can be used in a slice M type logic slice as a quad port RAM.
최신 FPGA 디바이스는 구성 가능한 로직 블록(CLBs:configurable logic blocks), 프로그래밍 가능한 상호 연결 요소(programmable interconnect elements), 클럭 분배 네트워크(clock distribution networks), 블록 램(block RAMs), 디지털 신호처리 슬라이스(digital signal processing slices), 외부 입출력 블록(external input/output blocks)으로 구성되며, FPGA에서 사용 가능한 CLBs는 "L"유형 슬라이스와 "M"유형 슬라이스의 두 가지 유형의 슬라이스로 구성된다.Modern FPGA devices include configurable logic blocks (CLBs), programmable interconnect elements, clock distribution networks, block RAMs, and digital signal processing slices. processing slices), and external input/output blocks. CLBs available in FPGAs consist of two types of slices: "L" type slices and "M" type slices.
또한, FPGA의 슬라이스는 네 개의 6 입력 룩업테이블(6 input LUTs)로 구성된다.In addition, the slice of the FPGA consists of four 6 input LUTs.
또한, 슬라이스 M이라 불리는 "M" 유형 슬라이스는 로직 구현을 위한 함수 발생기뿐만 아니라 룩업테이블램(LUTRAM)으로 구성될 수 있으며, 슬라이스L이라 불리는 "L" 유형 슬라이스의 룩업테이블은 룩업테이블램이 아닌 논리를 구현하는 함수 발생기로 구성될 수 있다.In addition, the "M" type slice called slice M may be composed of a lookup table (LUTRAM) as well as a function generator for logic implementation, and the lookup table of the "L" type slice called slice L is not a lookup table. It can consist of a function generator that implements logic.
또한, 슬라이스 M의 룩업테이블램을 사용하여 구성된 램은 분산형 램으로 알려져 있다.Also, a ram constructed using the lookup table ram of slice M is known as a distributed ram.
본 발명의 일 실시예에 따른 TCAM 구조는 슬라이스 M의 네 개의 64비트 룩업테이블램(110,120,130,140)으로 구성되며, 세 개의 룩업테이블램(110,120,130)(룩업테이블램A, 룩업테이블램B, 룩업테이블램C)은 읽기 포트로써 18개의 TCAM 비트를 구현하고 나머지 한 개의 룩업테이블램(140)(룩업테이블램D)은 쓰기 포트로 이용된다.The TCAM structure according to an embodiment of the present invention is composed of four 64-bit look-up
또한, 상기 네 개의 룩업테이블램(110,120,130,140)은 공통 쓰기 주소 포트를 공유하며, 포트 DIA, DIB, DIC, DID의 데이터를 이용하여 네 개의 개별 비트가 룩업테이블램에 쓰여지고 ADDRD 포트를 이용하여 쓰기 주소가 상기 룩업테이블램D에 적용된다.In addition, the four look-
또한, 동시에 상기 룩업테이블램A(110), 상기 룩업테이블램B(120) 및 상기 룩업테이블램C(130)의 주소 포트를 읽을 수 있으며 이 구조는 세 개의 읽기 포트와 하나의 쓰기 포트가 있는 쿼드 포트 램을 구성한다.In addition, at the same time, the address ports of the look-up
또한, 상기 룩업테이블램A(110), 상기 룩업테이블램B(120) 및 상기 룩업테이블램C(130)는 각각 입력되는 서치 키(TCAM word)가 표현할 수 있는 값의 개수만큼 비트를 가진다.In addition, the look-up
또한, 상기 룩업테이블램A(110), 상기 룩업테이블램B(120) 및 상기 룩업테이블램C(130)는 18비트의 TCAM 워드(20)를 구현하며, 상기 룩업테이블램A(110)로 입력되는 TCAM워드(21), 상기 룩업테이블램B(120)로 입력되는 TCAM워드(22), 상기 룩업테이블램C(130)로 입력되는 TCAM워드(23)는 각각 6비트의 TCAM 워드로 구현된다.In addition, the look-up
또한, 6비트의 TCAM 워드는 64개의 값을 표현할 수 있으므로 상기 룩업테이블램A(110), 상기 룩업테이블램B(120) 및 상기 룩업테이블램C(130)은 각각 64비트의 메모리 요소로 구성된다.Also, since the 6-bit TCAM word can represent 64 values, the look-up
예를 들어, 도 2에 도시한 바와 같이 상기 룩업테이블램A(110)는 '111111'의 TCAM 워드의 구현을 위해 최상위 비트(b63)에만 '1'이 쓰여지고, 나머지 비트들에는 '0'이 쓰여진다. 또한, 상기 룩업테이블램B(120)에는 '000000x'의 TCAM 워드 구현을 위해 최하위 비트(b0)에는 TCAM 워드 '000000'을 구현하기 위해 '1'이 쓰여지고 두번째 비트(b)에는 TCAM 워드 '000001'의 구현을 위해 '1'이 쓰여지며 나머지 비트들에는 '0'이 쓰여진다.For example, as shown in FIG. 2, '1' is written only in the most significant bit (b 63 ) for the implementation of the TCAM word of '111111', and '0' in the remaining bits. This is written. In addition, '1' is written in the lookup
또한, 상기 룩업테이블램C(130)에는 '000xxx'의 구현을 위해 최하위 비트(b0)부터 8개의 비트('000000'부터 '000111'까지를 구현)에 '1'이 쓰여지고, 나머지 비트들에는 '0'이 쓰여진다.In addition, '1' is written in the least significant bit (b 0 ) to 8 bits (implemented from '000000' to '000111') in the lookup
즉, 상기 룩업테이블램A(110), 상기 룩업테이블램B(120) 및 상기 룩업테이블램C(130)에는 서치 키의 값에 대응하는 주소의 비트에는 '1'이 쓰여지고 그렇지 않은 비트들에는 '0'이 쓰여진다.That is, '1' is written in the bits of the address corresponding to the value of the search key in the look-up
그러면 검색하고자 하는 서치 키가 상기 룩업테이블들(110,120,130)에 병렬로 입력될 때, 서치 키의 값에 해당하는 주소의 비트로 바로 접근하여 매치 결과를 출력할 수 있다.Then, when the search key to be searched is inputted in parallel to the look-up tables 110, 120 and 130, the match result can be output by directly accessing the bit of the address corresponding to the search key value.
또한, 각 룩업테이블들(110,120,130)의 출력은 캐리 체인(150)을 통해 AND 연산되어 최종 매치 결과가 출력된다.In addition, the output of each of the look-up tables 110, 120, 130 is ANDed through the
또한, 상기 룩업테이블램D(140)는 매치 결과를 다음 슬라이스(폭 방향으로 연결되는 슬라이스)로 전달하기 위해 영구적으로 모든 비트를 논리 '1'로 초기화한다.In addition, the look-up
또한, 본 발명의 TCAM 구조는 폭 방향(width) 및 깊이 방향(depth)로 연결되어 확장될 수 있다.In addition, the TCAM structure of the present invention can be extended by being connected in the width direction and the depth direction (depth).
한편, 본 발명의 TCAM 구조는 서치 키의 값에 대응하는 룩업테이블램의 주소로 직접 접근하여 매치 여부를 출력하므로 검색과 동시에 서치 키의 값에 해당하지 않는 나머지 비트들은 저장된 값을 업데이트할 수 있다.On the other hand, since the TCAM structure of the present invention directly accesses the address of the lookup table corresponding to the value of the search key and outputs a match, the remaining bits that do not correspond to the value of the search key can be updated at the same time as the search. .
이를 위해 도 3에 도시한 바와 같이 업데이트 로직(200)이 더 포함되며, 상기 업데이트 로직(200)은 log2D-비트 디코더(210), MOD-64 카운터(220) 및 비교기(230,231,232)를 포함한다.To this end, an
상기 log2D-비트 디코더(210)는 업데이트 주소가 디코딩되어 출력되며, 쓰기를 위한 TCAM 워드를 구현하는 룩업테이블 램의 행을 선택한다.The log 2 D-
상기 MOD-64 카운터(220)는 모든 사이클에서 6비트의 새로운 시퀀스('000000' 부터 '111111'까지)를 생성하여 출력한다.The MOD-64
상기 비교기(230,231,232)는 업데이트를 위한 TCAM 워드와 상기 MOD-64 카운터(220)에서 생성되는 6비트 시퀀스를 비교하고, 일치할 경우 논리 '1'을 해당 업데이트 주소에 기록한다.The
즉, 업데이트 프로세스 동안 나머지 블록들에서는 검색 작업을 할 수 있으므로 동적 업데이트가 가능하다.In other words, during the update process, the rest of the blocks can be searched for dynamic update.
이상에서 살펴본 바와 같이 본 발명은 바람직한 실시예를 들어 도시하고 설명하였으나, 상기한 실시예에 한정되지 아니하며 본 발명의 정신을 벗어나지 않는 범위 내에서 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변경과 수정이 가능할 것이다.As described above, the present invention has been illustrated and described with reference to preferred embodiments, but is not limited to the above-described embodiments and is within the scope of the present invention without departing from the spirit of the present invention. By this, various changes and modifications will be possible.
100:FPGA 기반 TCAM 구조 110:룩업테이블램A
120:룩업테이블램B 130:룩업테이블램C
140:룩업테이블램D 200:업데이트 로직
210:log2D-비트 디코더 220:MOD-64 카운터
230:비교기100: FPGA-based TCAM structure 110: Look-up table RAM A
120: look-up table ram B 130: look-up table ram C
140: lookup table RAM D 200: update logic
210:log 2 D-bit decoder 220:MOD-64 counter
230: Comparator
Claims (4)
복수 개의 룩업테이블을 포함하고, 상기 룩업테이블들의 출력은 캐리 체인을 통해 AND 연산되어 최종 매치 결과가 출력되며,
상기 각 룩업테이블은 입력되는 서치 키가 표현할 수 있는 값의 개수만큼 비트를 가지고, 저장하고자 하는 서치 키의 값에 대응하는 주소의 비트에는 '1'이 쓰여지고 그렇지 않은 비트에는 '0'이 쓰여지며,
검색하고자 하는 서치 키가 상기 각 룩업테이블에 입력되면, 입력된 서치 키의 값에 해당하는 주소의 비트 값을 출력하여,
모든 룩업테이블에서 '1'이 출력될 경우, 상기 최종 매치 결과는 '1'이 출력되며,
서치 키의 검색은 검색하고자 하는 서치 키의 값에 해당하는 주소의 비트로 직접 접근하여 이루어지며,
서치 키의 검색과 동시에 검색하고자 하는 서치 키의 주소에 해당하지 않는 룩업테이블의 나머지 비트들은 저장된 값을 업데이트할 수 있으며,
상기 룩업테이블들은 네 개의 64비트 룩업테이블램(LUTRAM)이 쿼드 포트 램 구조로 이루어지고 세 개의 룩업테이블램은 읽기 포트로써 18개의 TCAM 비트를 구현하고, 한 개의 룩업테이블램은 쓰기 포트로 기능하며,
상기 룩업테이블램의 업데이트 주소를 출력하는 log2D-비트 디코더;
6비트의 시퀀스를 생성하여 출력하는 MOD-64 카운터; 및
업데이트하고자 하는 값인 업데이트 워드와 상기 MOD-64 카운터의 6비트 시퀀스를 서로 비교하는 비교기;를 더 포함하고,
해당 업데이트 주소에서 상기 업데이트 워드와 상기 6비트 시퀀스가 서로 일치할 경우 해당 업데이트 주소의 비트를 '1'로 기록하는 것을 특징으로 하는 FPGA 기반 TCAM 구조.As an FPGA-based TCAM structure,
A plurality of lookup tables are included, and the output of the lookup tables is ANDed through a carry chain to output the final match result.
Each lookup table has as many bits as the number of values that can be expressed by the input search key, '1' is written in the bit of the address corresponding to the value of the search key to be stored, and '0' is written in the bit that is not. ,
When the search key to be searched is input to each of the lookup tables, a bit value of an address corresponding to the input search key value is output,
If '1' is output from all lookup tables, the final match result is '1',
Search of the search key is performed by directly accessing the bit of the address corresponding to the value of the search key to be searched.
Simultaneously with the search of the search key, the remaining bits of the lookup table that do not correspond to the address of the search key to be searched can update the stored value.
The look-up tables consist of four 64-bit look-up table RAMs (LUTRAM) in a quad-port RAM structure, three look-up table RAMs implement 18 TCAM bits as read ports, and one look-up table RAM functions as a write port. ,
A log 2 D-bit decoder outputting an update address of the lookup table RAM;
A MOD-64 counter that generates and outputs a sequence of 6 bits; And
Further comprising a comparator for comparing the 6-bit sequence of the update word and the MOD-64 counter which is the value to be updated with each other,
FPGA-based TCAM structure, characterized in that when the update word and the 6-bit sequence in the corresponding update address, the bit of the corresponding update address is recorded as '1'.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180158929A KR102134315B1 (en) | 2018-12-11 | 2018-12-11 | A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA |
US16/703,319 US11100993B2 (en) | 2018-12-11 | 2019-12-04 | TCAM architecture where content-based search is conductible |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180158929A KR102134315B1 (en) | 2018-12-11 | 2018-12-11 | A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200071896A KR20200071896A (en) | 2020-06-22 |
KR102134315B1 true KR102134315B1 (en) | 2020-07-16 |
Family
ID=70970254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180158929A KR102134315B1 (en) | 2018-12-11 | 2018-12-11 | A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA |
Country Status (2)
Country | Link |
---|---|
US (1) | US11100993B2 (en) |
KR (1) | KR102134315B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116721684B (en) * | 2023-08-11 | 2023-12-01 | 深圳云豹智能有限公司 | Ternary content addressing memory, addressing method and chip thereof |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7233597B2 (en) * | 2003-02-11 | 2007-06-19 | Texas Instruments Incorporated | High speed parser |
JP4391554B2 (en) | 2007-08-20 | 2009-12-24 | 株式会社ルネサステクノロジ | Associative memory |
US9111615B1 (en) * | 2013-10-01 | 2015-08-18 | Xilinx, Inc. | RAM-based ternary content addressable memory |
US10204685B2 (en) * | 2015-08-05 | 2019-02-12 | International Business Machines Corporation | Ternary content addressable memory |
JP2019008845A (en) * | 2017-06-22 | 2019-01-17 | ルネサスエレクトロニクス株式会社 | Semiconductor device |
-
2018
- 2018-12-11 KR KR1020180158929A patent/KR102134315B1/en active IP Right Grant
-
2019
- 2019-12-04 US US16/703,319 patent/US11100993B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20200071896A (en) | 2020-06-22 |
US11100993B2 (en) | 2021-08-24 |
US20200185031A1 (en) | 2020-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6944709B2 (en) | Content addressable memory with block-programmable mask write mode, word width and priority | |
US6243281B1 (en) | Method and apparatus for accessing a segment of CAM cells in an intra-row configurable CAM system | |
US6757779B1 (en) | Content addressable memory with selectable mask write mode | |
US7246198B2 (en) | Content addressable memory with programmable word width and programmable priority | |
US6253280B1 (en) | Programmable multiple word width CAM architecture | |
US6502163B1 (en) | Method and apparatus for ordering entries in a ternary content addressable memory | |
US7230840B2 (en) | Content addressable memory with configurable class-based storage partition | |
US7818538B2 (en) | Hashing and serial decoding techniques | |
US6763425B1 (en) | Method and apparatus for address translation in a partitioned content addressable memory device | |
US6687785B1 (en) | Method and apparatus for re-assigning priority in a partitioned content addressable memory device | |
Ullah et al. | DURE: An energy-and resource-efficient TCAM architecture for FPGAs with dynamic updates | |
Ullah | LH-CAM: Logic-based higher performance binary CAM architecture on FPGA | |
KR102134315B1 (en) | A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA | |
Abdelhadi et al. | Modular SRAM-based binary content-addressable memories | |
Zahir et al. | FracTCAM: Fracturable LUTRAM-Based TCAM Emulation on Xilinx FPGAs | |
US6799243B1 (en) | Method and apparatus for detecting a match in an intra-row configurable cam system | |
US6813680B1 (en) | Method and apparatus for loading comparand data into a content addressable memory system | |
US11894054B2 (en) | Methods for writing ternary content addressable memory devices | |
US11120874B2 (en) | Electronic memory device and a method of manipulating the electronic memory device | |
US6801981B1 (en) | Intra-row configurability of content addressable memory | |
Ullah et al. | High-speed configuration strategy for configurable logic block-based TCAM architecture on FPGA | |
Irfan et al. | High-throughput re-configurable content-addressable memory on FPGAs | |
EP1290697B1 (en) | Partitioned content addressable memory device | |
Irfan et al. | Bank-selective Strategy for Gate-based Ternary Content-addressable Memory on FPGAs | |
AU2021106221A4 (en) | An improved tcam cell design and method of operation for reduced power dissipation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |