KR102134315B1 - A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA - Google Patents

A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA Download PDF

Info

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
Application number
KR1020180158929A
Other languages
Korean (ko)
Other versions
KR20200071896A (en
Inventor
이정아
울라 인야앳
울라 자히드
Original Assignee
조선대학교산학협력단
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 조선대학교산학협력단 filed Critical 조선대학교산학협력단
Priority to KR1020180158929A priority Critical patent/KR102134315B1/en
Priority to US16/703,319 priority patent/US11100993B2/en
Publication of KR20200071896A publication Critical patent/KR20200071896A/en
Application granted granted Critical
Publication of KR102134315B1 publication Critical patent/KR102134315B1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital 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/04Digital 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17748Structural details of configuration resources
    • H03K19/1776Structural 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.

Figure R1020180158929
Figure R1020180158929

Description

내용기반 검색 및 동시 업데이트 가능한 FPGA 기반 TCAM 구조{A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA}FPGA-based TCAM structure capable of content-based search and simultaneous update{A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA}

본 발명은 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 search key 13 is input to the general TCAM 10, a parallel search operation of a lookup table is performed in an application-specific integrated circuit (ASIC) composed of the TCAM cells 11a, and the width direction When all data of (width) cells are the same as the search key 13, a value of '1' is output from the match line ML, and the priority encoder 12 outputs a match address.

도 1의 예에서는 서치 키(13)가 '1100'이므로 동일한 데이터 'X100'이 존재하는 제1 매치 라인(ML1)에서 신호가 출력되며, 우선순위 엔코더(12)는 매치 주소 '10'을 출력한다.In the example of FIG. 1, since the search key 13 is '1100', a signal is output from the first match line ML1 having the same data'X100', and the priority encoder 12 outputs a match address '10'. do.

이 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 table RAMs 110, 120, 130, and 140 of slice M, and three look-up table RAMs 110, 120, 130 (look-up table RAM A, look-up table RAM B, look-up table RAM) C) implements 18 TCAM bits as a read port, and the other look-up table RAM 140 (look-up table RAM D) is used as a write port.

또한, 상기 네 개의 룩업테이블램(110,120,130,140)은 공통 쓰기 주소 포트를 공유하며, 포트 DIA, DIB, DIC, DID의 데이터를 이용하여 네 개의 개별 비트가 룩업테이블램에 쓰여지고 ADDRD 포트를 이용하여 쓰기 주소가 상기 룩업테이블램D에 적용된다.In addition, the four look-up table RAMs 110, 120, 130, and 140 share a common write address port, and four individual bits are written to the look-up table RAM using data of the ports DIA, DIB, DIC, and DID, and a write address using the ADDRD port. Is applied to the lookup table RAM D.

또한, 동시에 상기 룩업테이블램A(110), 상기 룩업테이블램B(120) 및 상기 룩업테이블램C(130)의 주소 포트를 읽을 수 있으며 이 구조는 세 개의 읽기 포트와 하나의 쓰기 포트가 있는 쿼드 포트 램을 구성한다.In addition, at the same time, the address ports of the look-up table RAM A 110, the look-up table RAM B 120, and the look-up table RAM C 130 can be read. This structure has three read ports and one write port. Constructs quad-port RAM.

또한, 상기 룩업테이블램A(110), 상기 룩업테이블램B(120) 및 상기 룩업테이블램C(130)는 각각 입력되는 서치 키(TCAM word)가 표현할 수 있는 값의 개수만큼 비트를 가진다.In addition, the look-up table RAM A 110, the look-up table RAM B 120 and the look-up table RAM C 130 each have as many bits as the number of values that can be expressed by an input search key (TCAM word).

또한, 상기 룩업테이블램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 table RAM A 110, the look-up table RAM B 120 and the look-up table RAM C 130 implement an 18-bit TCAM word 20, and the look-up table RAM A 110 is used. The input TCAM word 21, the TCAM word 22 input to the look-up table RAM B 120, and the TCAM word 23 input to the look-up table RAM C 130 are each implemented with 6-bit TCAM words. do.

또한, 6비트의 TCAM 워드는 64개의 값을 표현할 수 있으므로 상기 룩업테이블램A(110), 상기 룩업테이블램B(120) 및 상기 룩업테이블램C(130)은 각각 64비트의 메모리 요소로 구성된다.Also, since the 6-bit TCAM word can represent 64 values, the look-up table RAM A 110, the look-up table RAM B 120, and the look-up table RAM C 130 are each composed of a 64-bit memory element. do.

예를 들어, 도 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 table RAM B 120 to implement the TCAM word '000000' in the least significant bit (b 0 ) to implement the TCAM word of '000000x', and the TCAM word 'in the second bit (b). '1' is written to implement 000001' and '0' is written to the remaining bits.

또한, 상기 룩업테이블램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 table RAM C 130 to implement '000xxx', and the remaining bits '0' is written in.

즉, 상기 룩업테이블램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 table RAM A 110, the look-up table RAM B 120 and the look-up table RAM C 130, and the other bits are not. '0' is written.

그러면 검색하고자 하는 서치 키가 상기 룩업테이블들(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 carry chain 150 to output the final match result.

또한, 상기 룩업테이블램D(140)는 매치 결과를 다음 슬라이스(폭 방향으로 연결되는 슬라이스)로 전달하기 위해 영구적으로 모든 비트를 논리 '1'로 초기화한다.In addition, the look-up table RAM D 140 permanently initializes all bits to a logic '1' to transfer the match result to the next slice (a slice connected in the width direction).

또한, 본 발명의 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 update logic 200 is further included as shown in FIG. 3, and the update logic 200 includes a log 2 D-bit decoder 210, a MOD-64 counter 220, and a comparator 230,231,232. do.

상기 log2D-비트 디코더(210)는 업데이트 주소가 디코딩되어 출력되며, 쓰기를 위한 TCAM 워드를 구현하는 룩업테이블 램의 행을 선택한다.The log 2 D-bit decoder 210 decodes and outputs an update address, and selects a row of a lookup table RAM that implements a TCAM word for writing.

상기 MOD-64 카운터(220)는 모든 사이클에서 6비트의 새로운 시퀀스('000000' 부터 '111111'까지)를 생성하여 출력한다.The MOD-64 counter 220 generates and outputs a new 6-bit sequence ('000000' to '111111') in every cycle.

상기 비교기(230,231,232)는 업데이트를 위한 TCAM 워드와 상기 MOD-64 카운터(220)에서 생성되는 6비트 시퀀스를 비교하고, 일치할 경우 논리 '1'을 해당 업데이트 주소에 기록한다.The comparators 230, 231 and 232 compare the TCAM word for update with the 6-bit sequence generated by the MOD-64 counter 220 and, if they match, record the logic '1' in the corresponding update address.

즉, 업데이트 프로세스 동안 나머지 블록들에서는 검색 작업을 할 수 있으므로 동적 업데이트가 가능하다.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)

FPGA 기반 TCAM 구조로서,
복수 개의 룩업테이블을 포함하고, 상기 룩업테이블들의 출력은 캐리 체인을 통해 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'.
삭제delete 삭제delete 삭제delete
KR1020180158929A 2018-12-11 2018-12-11 A Non-Blocking Updateable Ternary Content-Addressable Memory on FPGA KR102134315B1 (en)

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)

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

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

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