WO2017052125A1 - Method and system for operating sram-based tcam with increased number of bits - Google Patents

Method and system for operating sram-based tcam with increased number of bits Download PDF

Info

Publication number
WO2017052125A1
WO2017052125A1 PCT/KR2016/010215 KR2016010215W WO2017052125A1 WO 2017052125 A1 WO2017052125 A1 WO 2017052125A1 KR 2016010215 W KR2016010215 W KR 2016010215W WO 2017052125 A1 WO2017052125 A1 WO 2017052125A1
Authority
WO
WIPO (PCT)
Prior art keywords
sram
tcam
input data
address
virtual blocks
Prior art date
Application number
PCT/KR2016/010215
Other languages
French (fr)
Korean (ko)
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 한양대학교 에리카산학협력단
Publication of WO2017052125A1 publication Critical patent/WO2017052125A1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/04Arrangements for selecting an address in a digital store using a sequential addressing device, e.g. shift register, counter
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/18Address timing or clocking circuits; Address control signal generation or management, e.g. for row address strobe [RAS] or column address strobe [CAS] signals

Abstract

A method for operating a static random access memory (SRAM)-based ternary content addressable memory (TCAM) with increased number of bits comprises: a step of receiving input data; a step of dividing the input data into a plurality of sub-keys on the basis of the number of virtual blocks divided from an SRAM; a step of sequentially applying the plurality of sub-keys to the virtual blocks; and a step of outputting a specific address value corresponding to the input data on the basis of the application result.

Description

비트 수를 증가시킨 SRAM 기반 TCAM의 동작 방법 및 시스템Operation method and system of SRAM-based TCAM with increased number of bits
아래의 실시예들은 SRAM(Static Random Access Memory) 기반 TCAM(Ternary Content Addressable Memory) 동작 시스템 및 그 방법에 관한 기술로서, SRAM에 에뮬레이트되는 비트 수를 증가시켜 동작하는 SRAM 기반 TCAM에 대한 기술이다.The following embodiments are technologies related to a static random access memory (SRAM) -based TCAM (Ternary Content Addressable Memory) operating system and a method thereof, and a technique for an SRAM-based TCAM that operates by increasing the number of bits emulated in the SRAM.
대표적으로 CAM(Content Addressable Memory)과 같은 종래의 SRAM 기반 TCAM은 입력 데이터를 수신하여, 입력 데이터에 대응하는 어드레스 값을 출력하는 장치이다. 예를 들어, SRAM 기반 TCAM을 나타낸 도 1을 살펴보면, SRAM 기반 TCAM(100)은 입력 데이터(110)를 수신하여, 입력 데이터(110)에 대응하는 어드레스 값(120)을 출력한다.Typically, a conventional SRAM-based TCAM such as a CAM (Content Addressable Memory) is an apparatus that receives input data and outputs an address value corresponding to the input data. For example, referring to FIG. 1 illustrating an SRAM-based TCAM, the SRAM-based TCAM 100 receives input data 110 and outputs an address value 120 corresponding to the input data 110.
이와 같은 종래의 SRAM 기반 TCAM은 TCAM 데이터가 SRAM에 매핑되는 동안 SRAM 자원을 이용하기 때문에, SRAM에 에뮬레이트되는 TCAM 비트 수가 SRAM의 물리 어드레스들의 제한된 용량에 따라 제한되는(감소되는) 문제점이 있다.Since such conventional SRAM-based TCAM uses SRAM resources while TCAM data is mapped to SRAM, there is a problem that the number of TCAM bits emulated in SRAM is limited (reduced) by the limited capacity of the physical addresses of the SRAM.
이에, 아래의 실시예들은 SRAM 기반 TCAM에서 SRAM에 에뮬레이트되는 TCAM 비트 수를 증가시키는 기술을 제안한다.Accordingly, the following embodiments propose a technique for increasing the number of TCAM bits emulated in SRAM in an SRAM-based TCAM.
일실시예들은 SRAM에 에뮬레이트되는 TCAM 비트 수를 증가시킨 SRAM 기반 TCAM의 동작 방법 및 시스템을 제공한다.One embodiment provides a method and system for operating an SRAM-based TCAM that increases the number of TCAM bits emulated in the SRAM.
구체적으로, 일실시예들은 SRAM을 가상의 블록들로 분할함으로써, 가상의 블록들에 에뮬레이트되는 TCAM 비트 수를 증가시키는 SRAM 기반 TCAM의 동작 방법 및 시스템을 제공한다.Specifically, one embodiment provides a method and system for operating an SRAM-based TCAM that divides the SRAM into virtual blocks, thereby increasing the number of TCAM bits emulated in the virtual blocks.
일실시예에 따르면, 비트 수를 증가시킨 SRAM(Static Random Access Memory) 기반 TCAM(Ternary Content Addressable Memory)의 동작 방법은 입력 데이터를 수신하는 단계; SRAM이 분할된 가상의 블록들의 개수에 기초하여 상기 입력 데이터를 복수의 서브 키들로 분할하는 단계; 상기 가상의 블록들에 상기 복수의 서브 키들을 순차적으로 적용하는 단계; 및 상기 적용 결과에 기초하여 상기 입력 데이터에 대응하는 특정 어드레스 값을 출력하는 단계를 포함한다.According to an embodiment, a method of operating a static random access memory (SRAM) -based ternary content addressable memory (TCAM) having an increased number of bits may include receiving input data; Dividing the input data into a plurality of subkeys based on the number of divided virtual blocks by the SRAM; Sequentially applying the plurality of subkeys to the virtual blocks; And outputting a specific address value corresponding to the input data based on the application result.
상기 적용 결과에 기초하여 상기 입력 데이터에 대응하는 어드레스 값을 출력하는 단계는 상기 적용 결과, 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득하는 단계; 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출하는 단계; 및 상기 매칭되는 비트에 대응하는 상기 특정 어드레스 값을 출력하는 단계를 포함할 수 있다.The outputting of an address value corresponding to the input data based on the application result may include obtaining the address bits corresponding to each of the plurality of sub keys as a result of the application; Comparing the address bits corresponding to each of the plurality of sub keys with each other and extracting a matching bit; And outputting the specific address value corresponding to the matched bit.
상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출하는 단계는 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들에 대해 비트와이즈 연산(bitwise operation)을 수행하는 단계; 및 상기 수행 결과에 기초하여 상기 매칭되는 비트를 추출하는 단계를 포함할 수 있다.Comparing the address bits corresponding to each of the plurality of sub keys with each other and extracting a matching bit may include performing a bitwise operation on address bits corresponding to each of the plurality of sub keys; And extracting the matched bit based on the execution result.
상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들에 대해 비트와이즈 연산을 수행하는 단계는 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들에 대해 비트와이즈 AND 연산(bitwise AND operation)을 수행하는 단계일 수 있다.Performing a bitwise operation on address bits corresponding to each of the plurality of subkeys is performing a bitwise AND operation on address bits corresponding to each of the plurality of subkeys. Can be.
상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득하는 단계는 상기 SRAM의 후단부에 연결된 역 다중화기(DEMUX)를 통하여 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 출력하는 단계를 포함할 수 있다.Acquiring address bits corresponding to each of the plurality of sub keys may include outputting address bits corresponding to each of the plurality of sub keys through a demultiplexer (DEMUX) connected to a rear end of the SRAM. have.
상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출하는 단계는 상기 역 다중화기의 출력단에 연결된 논리 회로를 이용하여 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하는 단계를 포함할 수 있다.Comparing the address bits corresponding to each of the plurality of sub keys with each other and extracting a matching bit, comparing the address bits corresponding to each of the plurality of sub keys with each other using a logic circuit connected to an output of the demultiplexer It may include the step.
상기 매칭되는 비트에 대응하는 상기 특정 어드레스 값을 출력하는 단계는 상기 매칭되는 비트가 복수 개인 경우, 상기 논리 회로의 출력단에 연결된 우선 순위 인코더(priority encoder)를 통하여 상기 특정 어드레스 값을 출력하는 단계를 포함할 수 있다.The outputting of the specific address value corresponding to the matching bit may include outputting the specific address value through a priority encoder connected to an output terminal of the logic circuit when there are a plurality of matching bits. It may include.
상기 가상의 블록들에 상기 복수의 서브 키들을 순차적으로 적용하는 단계는 상기 SRAM의 전단부에 연결된 다중화기(MUX)를 통하여 상기 가상의 블록들 중 상기 복수의 서브 키들 각각에 대응하는 블록에 상기 복수의 서브 키들 각각을 적용하는 단계를 포함할 수 있다.The sequentially applying the plurality of subkeys to the virtual blocks may be performed on a block corresponding to each of the plurality of subkeys of the virtual blocks through a multiplexer (MUX) connected to a front end of the SRAM. And applying each of the plurality of sub keys.
상기 SRAM 기반 TCAM의 동작 방법은 상기 SRAM 상에 상기 특정 어드레스 값과 연관지어 상기 입력 데이터를 저장하는 단계를 더 포함할 수 있다.The method of operating the SRAM-based TCAM may further include storing the input data in association with the specific address value on the SRAM.
상기 SRAM 기반 TCAM의 동작 방법은 상기 SRAM의 어드레스 공간을 양분하여 상기 SRAM을 상기 가상의 블록들로 분할하는 단계를 더 포함할 수 있다.The method of operating the SRAM-based TCAM may further include dividing the address space of the SRAM into the virtual blocks.
상기 SRAM이 분할된 가상의 블록들 각각에는 상기 SRAM 기반의 TCAM에 의한 어드레스 비트들이 저장될 수 있다.Each of the virtual blocks in which the SRAM is divided may store address bits of the SRAM-based TCAM.
상기 SRAM 기반의 TCAM은 상기 SRAM 기반의 TCAM에 의한 어드레스 비트들과 상기 SRAM에 저장하고자 하는 데이터 사이의 관계에 기초하여 상기 SRAM에 매핑될 수 있다.The SRAM-based TCAM may be mapped to the SRAM based on a relationship between address bits of the SRAM-based TCAM and data to be stored in the SRAM.
일실시예에 따르면, 비트 수를 증가시킨 SRAM 기반 TCAM 시스템은 입력 데이터를 수신하는 수신부; SRAM이 분할된 가상의 블록들의 개수에 기초하여 상기 입력 데이터를 복수의 서브 키들로 분할하는 분할부; 상기 가상의 블록들에 상기 복수의 서브 키들을 순차적으로 적용하는 적용부; 및 상기 적용 결과에 기초하여 상기 입력 데이터에 대응하는 특정 어드레스 값을 출력하는 출력부를 포함한다.According to an embodiment, an SRAM-based TCAM system having an increased number of bits includes a receiver configured to receive input data; A dividing unit dividing the input data into a plurality of sub keys based on the number of virtual blocks in which an SRAM is divided; An application unit for sequentially applying the plurality of sub keys to the virtual blocks; And an output unit for outputting a specific address value corresponding to the input data based on the application result.
상기 출력부는 상기 적용 결과, 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득하고, 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출하며, 상기 매칭되는 비트에 대응하는 상기 특정 어드레스 값을 출력할 수 있다.The output unit obtains address bits corresponding to each of the plurality of sub keys as a result of the application, compares the address bits corresponding to each of the plurality of sub keys with each other, extracts a matched bit, and corresponds to the matched bit. The specific address value may be output.
상기 출력부는 상기 SRAM 상에 상기 특정 어드레스 값과 연관지어 상기 입력 데이터를 저장할 수 있다.The output unit may store the input data in association with the specific address value on the SRAM.
일실시예들은 SRAM에 에뮬레이트되는 TCAM 비트 수를 증가시킨 SRAM 기반 TCAM의 동작 방법 및 시스템을 제공할 수 있다.One embodiment can provide a method and system for operating an SRAM-based TCAM that increases the number of TCAM bits emulated in the SRAM.
구체적으로, 일실시예들은 SRAM을 가상의 블록들로 분할함으로써, 가상의 블록들에 에뮬레이트되는 TCAM 비트 수를 증가시키는 SRAM 기반 TCAM의 동작 방법 및 시스템을 제공할 수 있다.Specifically, one embodiment may provide a method and system for operating an SRAM-based TCAM that divides the SRAM into virtual blocks, thereby increasing the number of TCAM bits emulated in the virtual blocks.
따라서, 일실시예들은 저비용으로 SRAM에 에뮬레이트되는 TCAM 비트 수를 증가시킬 수 있다.Thus, one embodiment may increase the number of TCAM bits emulated in SRAM at low cost.
도 1은 SRAM 기반 TCAM을 나타낸 도면이다.1 is a diagram illustrating an SRAM-based TCAM.
도 2는 일실시예에 따른 가상의 블록들로 분할된 SRAM을 나타낸 도면이다.2 is a diagram illustrating an SRAM divided into virtual blocks according to an exemplary embodiment.
도 3은 SRAM 기반 TCAM의 매핑 과정을 설명하기 위한 도면이다.3 is a diagram illustrating a mapping process of an SRAM-based TCAM.
도 4는 일실시예에 따른 2 개의 가상의 블록들로 분할된 SRAM에 에뮬레이트되는 TCAM 비트 수를 증가시키는 SRAM 기반 TCAM을 설명하기 위한 도면이다.FIG. 4 is a diagram illustrating an SRAM-based TCAM that increases the number of TCAM bits emulated in an SRAM divided into two virtual blocks according to an embodiment.
도 5는 일실시예에 따른 SRAM이 분할되는 가상의 블록들 개수와 SRAM에 에뮬레이트되는 TCAM 비트 수의 관계를 나타낸 도면이다.5 is a diagram illustrating a relationship between the number of virtual blocks in which an SRAM is divided and the number of TCAM bits emulated in the SRAM, according to an exemplary embodiment.
도 6은 일실시예에 따른 SRAM 기반 TCAM 시스템을 설명하기 위한 도면이다.6 is a diagram illustrating an SRAM-based TCAM system according to an embodiment.
도 7은 일실시예에 따른 SRAM 기반 TCAM의 동작 방법을 나타낸 플로우 차트이다.7 is a flowchart illustrating a method of operating an SRAM-based TCAM according to an embodiment.
도 8을 일실시예에 따른 SRAM 기반 TCAM 시스템을 나타낸 블록도이다.8 is a block diagram illustrating an SRAM-based TCAM system according to an embodiment.
이하, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited or limited by the embodiments. Also, like reference numerals in the drawings denote like elements.
또한, 본 명세서에서 사용되는 용어(terminology)들은 본 발명의 바람직한 실시예를 적절히 표현하기 위해 사용된 용어들로서, 이는 사용자, 운용자의 의도 또는 본 발명이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 본 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.Also, the terminology used herein is a term used to properly express a preferred embodiment of the present invention, which may vary depending on a user, an operator's intention, or customs in the field to which the present invention belongs. Therefore, the definitions of the terms should be made based on the contents throughout the specification.
도 2는 일실시예에 따른 가상의 블록들로 분할된 SRAM을 나타낸 도면이다.2 is a diagram illustrating an SRAM divided into virtual blocks according to an exemplary embodiment.
도 2를 참조하면, 일실시예에 따른 SRAM(210)은 2n개의 어드레스들(n 비트 어드레스들) 및 어드레스 당 K 비트의 2n x K차원을 갖는 단일 포트(single port) SRAM일 수 있다.2, an exemplary SRAM (210) according to the example may be a 2 n pieces of address of (n-bit addresses) and the address a single port (single port) SRAM having a 2 n x K D of the K bits per .
여기서, SRAM(210)은 미리 설정된 개수인 m개의 가상의 블록들로 분할될 수 있다. 이 때, SRAM(210)이 분할되는 개수 m은 분할될 가상의 블록들 각각의 크기에 따라 적응적으로 조절될 수 있다.Here, the SRAM 210 may be divided into m virtual blocks, which is a preset number. In this case, the number m of dividing the SRAM 210 may be adaptively adjusted according to the size of each of the virtual blocks to be divided.
SRAM(210)이 m개로 분할된 가상의 블록들 각각은 log2(2n /m) 비트 어드레스들을 가질 수 있다. 따라서, SRAM(210)의 전단부에 연결된 다중화기(MUX)(220)를 통하여 m 사이클에 따라 log2(2n /m) 비트 어드레스들이 순차적으로 입력되고, SRAM(210)의 후단부에 연결된 역 다중화기(DEMUX)(230)를 통하여 K 어드레스 비트들 위치 데이터가 매 클록 사이클에 따라 순차적으로 출력되는 SRAM(210) 자원을 이용하는 TCAM(SRAM(210) 기반 TCAM)은 SRAM(210)이 분할된 가상의 블록들 각각을 이용하여 입력 데이터를 수신하고. 입력 데이터에 대응하는 어드레스 값을 출력할 수 있다. 이에 대한 상세한 설명은 아래에서 기재하기로 한다.Each of the virtual blocks in which the SRAM 210 is divided into m may have log 2 (2 n / m) bit addresses. Accordingly, log 2 (2 n / m) bit addresses are sequentially input according to m cycles through the multiplexer (MUX) 220 connected to the front end of the SRAM 210 and connected to the rear end of the SRAM 210. The SRAM 210 is divided into a TCAM (SRAM 210 based TCAM) using an SRAM 210 resource in which K address bits position data are sequentially outputted every clock cycle through the demultiplexer (DEMUX) 230. Receive input data using each of the virtual blocks that have been created. An address value corresponding to the input data can be output. Detailed description thereof will be described below.
도 3은 SRAM 기반 TCAM의 매핑 과정을 설명하기 위한 도면이다.3 is a diagram illustrating a mapping process of an SRAM-based TCAM.
도 3을 참조하면, TCAM(310)은 SRAM(320)으로 수학식 1과 같이 매핑될 수 있다.Referring to FIG. 3, the TCAM 310 may be mapped to the SRAM 320 as shown in Equation 1 below.
<수학식 1><Equation 1>
SRAM unit(2n x K) ↔ TCAM(K x n)SRAM unit (2 n x K) ↔ TCAM (K xn)
mapping               mapping
예를 들어, 2n개의 어드레스들(n 비트 어드레스들) 및 어드레스 당 K 비트의 2n x K차원을 갖는 SRAM(320)은 K개의 어드레스 값들 및 어드레스 당 n 비트의 k x n 차원을 갖는 TCAM(310)으로 매핑될 수 있다. 즉, TCAM(310)은 SRAM(320)에 저장되는 어드레스 비트들과 SRAM(320)에 저장하고자 하는 데이터(예컨대, 입력 데이터) 사이의 관계에 기초하여, SRAM(320)에 매핑될 수 있다.For example, 2 n pieces of address of (n-bit addresses) and SRAM (320) having 2 n x K D of the K bits per address is TCAM (310 having a kxn dimensions of n bits per K of address values and the address ) Can be mapped. That is, the TCAM 310 may be mapped to the SRAM 320 based on a relationship between address bits stored in the SRAM 320 and data (eg, input data) to be stored in the SRAM 320.
따라서, SRAM(320) 기반 TCAM(310)은 n 비트 입력 데이터를 수신하여, n 비트 입력 데이터에 대응하는 K 어드레스 비트들을 출력할 수 있다. 이 때, K 어드레스 비트들은 잠재적 매치 어드레스들(potential match addresses)을 의미할 수 있다. 이와 같은 K 어드레스 비트들의 각 비트는 어드레스 값을 나타낼 수 있다.Accordingly, the SRAM 320 based TCAM 310 may receive n bit input data and output K address bits corresponding to the n bit input data. In this case, K address bits may mean potential match addresses. Each bit of such K address bits may represent an address value.
일실시예에 따른 SRAM 기반 TCAM은 SRAM(320)을 가상의 블록들로 분할함으로써, SRAM(320)의 물리 어드레스들의 제한된 용량에 대한 물리적 구조 변경없이, SRAM(320)(가상의 블록들)에 에뮬레이트되는 TCAM 비트 수를 증가시킬 수 있다. 이에 대한 상세한 설명은 도 4를 참조하기로 한다.According to one embodiment, the SRAM-based TCAM divides the SRAM 320 into virtual blocks, thereby providing an SRAM 320 (virtual blocks) without changing the physical structure of the limited capacity of the physical addresses of the SRAM 320. It is possible to increase the number of TCAM bits that are emulated. Detailed description thereof will be made with reference to FIG. 4.
도 4는 일실시예에 따른 2 개의 가상의 블록들로 분할된 SRAM에 에뮬레이트되는 TCAM 비트 수를 증가시키는 SRAM 기반 TCAM을 설명하기 위한 도면이다.FIG. 4 is a diagram illustrating an SRAM-based TCAM that increases the number of TCAM bits emulated in an SRAM divided into two virtual blocks according to an embodiment.
도 4를 참조하면, 일실시예에 따른 SRAM(410)은 2 개의 가상의 블록들로 분할되어 에뮬레이트되는 TCAM(420)의 비트 수를 증가시킬 수 있다.Referring to FIG. 4, the SRAM 410 according to an embodiment may increase the number of bits of the TCAM 420 emulated by dividing into two virtual blocks.
위에서 상술한 바와 같이 m개의 가상의 블록들로 분할되는 SRAM에서 가상의 블록들 각각은 log2(2n /m)비트 어드레스들 및 어드레스 당 K 비트의 2A x k 차원을 가질 수 있다. 여기서, A는 log2(2n /m)이다.In the SRAM it is divided into m number of virtual blocks, as described above, each of the blocks may have a virtual 2-dimensional A xk of the K bits per s log 2 (2 n / m) bits of address and the address. Where A is log 2 (2 n / m).
따라서, 2 개로 분할된 SRAM(410)의 가상의 블록들 각각은 2n-1 x k 차 차원을 가질 수 있고, 가상의 블록들 각각은 k x (n-1)차원을 갖는 TCAM으로 매핑될 수 있다. 즉, SRAM(410)은 2 개의 k x (n-1) 차원을 갖는 TCAM(421, 422)로 매핑됨으로써, SRAM(410)에 에뮬레이트되는 TCAM(420)의 비트 수가 증가될 수 있다.Thus, each of the virtual blocks of the two divided SRAMs 410 may have a 2 n-1 xk order dimension, and each of the virtual blocks may be mapped to a TCAM having a kx (n-1) dimension. . That is, the SRAM 410 is mapped to the TCAMs 421 and 422 having two kx (n−1) dimensions, thereby increasing the number of bits of the TCAM 420 emulated in the SRAM 410.
도면에 도시하지 않았지만, SRAM(410)이 4 개의 가상의 블록들로 분할되는 경우, SRAM(410)은 4 개의 k x (n-2) 차원을 갖는 TCAM으로 매핑될 수 있다.Although not shown in the drawing, when the SRAM 410 is divided into four virtual blocks, the SRAM 410 may be mapped to a TCAM having four k x (n-2) dimensions.
이와 같이 일실시예에 따른 SRAM(410)은 복수 개의 가상의 블록들로 분할됨으로써, 분할된 가상의 블록들 각각에 SRAM 기반 TCAM(420)에 의한 어드레스 비트들이 저장될 수 있다. 따라서, SRAM 기반 TCAM(420)은 가상의 블록들로 분할된 SRAM(410)을 이용함으로써, SRAM(410)에 에뮬레이트되는 TCAM(420)의 비트 수를 증가시키거나, SRAM 기반의 TCAM(420)에 의한 어드레스 비트들이 저장되는 영역을 증가시킬 수 있다.As such, since the SRAM 410 is divided into a plurality of virtual blocks, address bits by the SRAM-based TCAM 420 may be stored in each of the divided virtual blocks. Accordingly, the SRAM-based TCAM 420 increases the number of bits of the TCAM 420 emulated in the SRAM 410 by using the SRAM 410 divided into virtual blocks, or the SRAM-based TCAM 420. May increase the area where the address bits are stored.
이 때, SRAM(410)이 분할된 가상의 블록들 각각의 데이터 처리량은 SRAM(410)이 분할되는 가상의 블록들의 개수에 비례하여 감소될 수 있다. 따라서, SRAM(410)이 분할되는 가상의 블록들의 개수가 조절됨으로써, SRAM(410)이 분할된 가상의 블록들 각각의 데이터 처리량이 조절될 수 있다. 즉, SRAM(410)이 분할된 가상의 블록들 각각의 데이터 처리량을 변경하기 위하여, SRAM(410)이 분할되는 가상의 블록들의 개수가 조절될 수 있다.In this case, the data throughput of each of the virtual blocks in which the SRAM 410 is divided may be reduced in proportion to the number of virtual blocks in which the SRAM 410 is divided. Therefore, by adjusting the number of virtual blocks in which the SRAM 410 is divided, the data throughput of each of the virtual blocks in which the SRAM 410 is divided may be adjusted. That is, in order to change the data throughput of each of the virtual blocks in which the SRAM 410 is divided, the number of virtual blocks in which the SRAM 410 is divided may be adjusted.
SRAM(410)이 분할되는 가상의 블록들의 개수에 따른 TCAM(420)의 비트 수는 도 5를 참조하여 기재하기로 한다.The number of bits of the TCAM 420 according to the number of virtual blocks in which the SRAM 410 is divided will be described with reference to FIG. 5.
도 5는 일실시예에 따른 SRAM이 분할되는 가상의 블록들 개수(510)와 SRAM에 에뮬레이트되는 TCAM 비트 수(520)의 관계를 나타낸 도면이다.5 is a diagram illustrating a relationship between the number of virtual blocks 510 in which an SRAM is divided and the number of TCAM bits 520 emulated in the SRAM, according to an exemplary embodiment.
도 5를 참조하면, 일실시예에 따른 SRAM에 에뮬레이트되는 TCAM 비트 수(520)는 SRAM이 분할되는 가상의 블록들의 개수(510)에 비례하여 급격하게 증가될 수 있다. 따라서, SRAM은 자원이 허용하는 한계까지 양분되는 과정을 반복하여 가상의 블록들로 분할됨으로써, 에뮬레이트되는 TCAM 비트 수(520)를 증가시킬 수 있다.Referring to FIG. 5, the number of TCAM bits 520 emulated in the SRAM according to an embodiment may increase rapidly in proportion to the number 510 of virtual blocks in which the SRAM is divided. Thus, the SRAM can be divided into virtual blocks by repeating the process of dividing to the resource allowable limit, thereby increasing the number of emulated TCAM bits 520.
도 6은 일실시예에 따른 SRAM 기반 TCAM 시스템을 설명하기 위한 도면이다.6 is a diagram illustrating an SRAM-based TCAM system according to an embodiment.
도 6을 참조하면, 일실시예에 따른 SRAM 기반 TCAM 시스템은 SRAM(610), SRAM(610)의 전단부에 연결된 다중화기(620), SRAM(610)의 후단부에 연결된 역 다중화기(630) 및 역 다중화기(630)의 출력단에 연결된 논리 회로(640)를 이용하여 동작할 수 있다.Referring to FIG. 6, an SRAM-based TCAM system according to an embodiment includes an SRAM 610, a multiplexer 620 connected to a front end of an SRAM 610, and a demultiplexer 630 connected to a rear end of an SRAM 610. And a logic circuit 640 connected to the output terminal of the demultiplexer 630.
구체적으로, SRAM 기반 TCAM 시스템은 D 비트의 입력 데이터를 수신하고, SRAM(610)이 분할된 가상의 블록들의 개수에 기초하여 수신된 입력 데이터를 복수의 서브 키들(서브 입력 데이터 비트들)로 분할할 수 있다. 예를 들어, SRAM 기반 TCAM 시스템은 D 비트의 입력 데이터를 m 개의 b 비트 서브 키들로 분할할 수 있다.In detail, the SRAM-based TCAM system receives input data of D bits, and divides the received input data into a plurality of sub keys (sub input data bits) based on the number of virtual blocks in which the SRAM 610 is divided. can do. For example, an SRAM-based TCAM system can split the D bit input data into m b bit subkeys.
이와 같이 분할된 m 개의 b 비트 서브 키들 각각은 다중화기(620)를 통하여 가상의 블록들 중 m 개의 b 비트 서브 키들 각각에 대응하는 블록에 순차적으로 적용될 수 있다.Each of the m b-bit subkeys split as described above may be sequentially applied to a block corresponding to each of the m b-bit subkeys of the virtual blocks through the multiplexer 620.
적용 결과에 따라, 역 다중화기(630)를 통하여 m 개의 b 비트 서브 키들 각각에 대응하는 K 어드레스 비트들이 출력될 수 있다. 출력되는 m 개의 b 비트 서브 키들 각각에 대응하는 K 어드레스 비트들은 논리 회로(640)에 의해 서로 비교됨으로써, 매칭되는 비트가 추출될 수 있다.According to the application result, K address bits corresponding to each of the m b-bit subkeys may be output through the demultiplexer 630. The K address bits corresponding to each of the m b-bit subkeys to be output are compared with each other by the logic circuit 640, so that a matching bit may be extracted.
따라서, 매치되는 비트가 하나 이상 존재하여 추출되는 경우, 우선 순위 인코더(priority encoder)(650)를 통하여 매칭되는 비트에 대응하는 특정 어드레스 값이 출력될 수 있다. 이 때, 매칭되는 비트가 하나인 경우에는 우선 순위 인코더가 이용되지 않을 수 있다.Therefore, when one or more matching bits are present and extracted, a specific address value corresponding to the matching bits may be output through the priority encoder 650. In this case, when there is one matching bit, the priority encoder may not be used.
SRAM 기반 TCAM 시스템을 설명하기 위한, 보다 구체적인 실시예를 이하 기재하기로 한다.More specific embodiments will be described below to describe an SRAM based TCAM system.
일실시예에 따른 SRAM 기반 TCAM 시스템은 16x8 차원을 갖는 SRAM을 자원으로 이용하여, 표 1과 같이 8 개의 어드레스 값들 및 어드레스 당 8 비트의 8x8 차원을 갖는 TCAM의 테이블을 구현할 수 있다.According to an embodiment, the SRAM-based TCAM system may use a SRAM having a 16x8 dimension as a resource to implement a table of a TCAM having 8 address values and 8x8 dimensions of 8 bits per address, as shown in Table 1.
Figure PCTKR2016010215-appb-T000001
Figure PCTKR2016010215-appb-T000001
이와 같은 표 1의 TCAM이 이용하는 SRAM이 4 개의 가상의 블록들(SW1, SW2, SW3 및 SW4)로 분할되는 경우(가상의 블록들 각각은 2 비트를 포함함), 표 1은 표 2와 같이 표현될 수 있다.When the SRAM used by the TCAM of Table 1 is divided into four virtual blocks SW1, SW2, SW3, and SW4 (each of the virtual blocks includes 2 bits), Table 1 is shown in Table 2. Can be expressed.
Figure PCTKR2016010215-appb-T000002
Figure PCTKR2016010215-appb-T000002
따라서, 표 2의 테이블을 갖는 TCAM은 표 3과 같은 테이블을 갖는 16x8차원을 갖는 SRAM으로 매핑될 수 있다.Therefore, the TCAM having the table of Table 2 may be mapped to the SRAM having the 16 × 8 dimension having the table of Table 3.
Figure PCTKR2016010215-appb-T000003
Figure PCTKR2016010215-appb-T000003
표 3과 같이 16x8 차원을 갖는 SRAM은 4x8 차원을 갖는 가상의 블록들 4개로 구성될 수 있다. 이에, 표 3의 4x8 차원을 갖는 가상의 블록들 각각은 표 2에 도시된 8x2 차원을 갖는 잠재적 매치 주소를 저장할 수 있다.As shown in Table 3, an SRAM having a 16x8 dimension may be composed of four virtual blocks having a 4x8 dimension. Thus, each of the virtual blocks having the 4x8 dimension of Table 3 may store a potential match address with the 8x2 dimension shown in Table 2.
따라서, 16x8 차원을 갖는 SRAM은 일실시예에 따라 가상의 블록들 4개로 분할됨으로써, 8x8 차원을 갖는 TCAM에 매핑될 수 있다.Thus, an SRAM having a 16x8 dimension may be mapped to a TCAM having an 8x8 dimension by being divided into four virtual blocks according to an embodiment.
8x8 차원을 갖는 TCAM이 16x8 차원을 갖는 SRAM에 제대로 매핑되었는지를 검증하기 위하여, 입력 데이터가 10XXXXXX인 경우의 출력 어드레스 값을 살펴보면, 표 1을 참조하여 매칭되는 어드레스 값은 3, 5 및 6으로 결정되고, 표 3을 참조하여 매칭되는 어드레스 값은 3, 5 및 6으로 결정됨을 알 수 있다. 이에 16x8 차원을 갖는 SRAM이 8x8 차원을 갖는 TCAM에 매핑될 수 있음을 알 수 있다To verify that the TCAM with 8x8 dimension is properly mapped to the SRAM with 16x8 dimension, looking at the output address value when the input data is 10XXXXXX, the matching address values are determined as 3, 5 and 6 with reference to Table 1 And, it can be seen that the matching address value is determined as 3, 5 and 6 with reference to Table 3. It can be seen that SRAM with 16x8 dimension can be mapped to TCAM with 8x8 dimension.
도 7은 일실시예에 따른 SRAM 기반 TCAM의 동작 방법을 나타낸 플로우 차트이다.7 is a flowchart illustrating a method of operating an SRAM-based TCAM according to an embodiment.
도 7을 참조하면, 일실시예에 따른 SRAM 기반 TCAM 시스템은 입력 데이터를 수신한다(710).Referring to FIG. 7, in operation 710, an SRAM-based TCAM system receives input data.
이어서, SRAM 기반 TCAM 시스템은 SRAM이 분할된 가상의 블록들의 개수에 기초하여 입력 데이터를 복수의 서브 키들로 분할한다(720).Subsequently, the SRAM-based TCAM system divides the input data into a plurality of sub keys based on the number of virtual blocks in which the SRAM is divided (720).
그 다음, SRAM 기반 TCAM 시스템은 가상의 블록들에 복수의 서브 키들을 순차적으로 적용한다(730).Next, the SRAM-based TCAM system sequentially applies a plurality of sub keys to the virtual blocks (730).
이 때, SRAM 기반 TCAM 시스템은 SRAM의 전단부에 연결된 다중화기(MUX)를 통하여 가상의 블록들 중 복수의 서브 키들 각각에 대응하는 블록에 복수의 서브 키들 각각을 적용할 수 있다.In this case, the SRAM-based TCAM system may apply each of the plurality of subkeys to a block corresponding to each of the plurality of subkeys of the virtual blocks through a multiplexer (MUX) connected to the front end of the SRAM.
그 후, SRAM 기반 TCAM 시스템은 적용 결과에 기초하여 입력 데이터에 대응하는 특정 어드레스 값을 출력한다(740).The SRAM-based TCAM system then outputs a particular address value corresponding to the input data based on the application result (740).
740 단계에서, SRAM 기반 TCAM 시스템은 적용 결과, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득하고, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출함으로써, 매칭되는 비트에 대응하는 특정 어드레스 값을 출력할 수 있다.In operation 740, the SRAM-based TCAM system obtains address bits corresponding to each of the plurality of sub keys, and compares the address bits corresponding to each of the plurality of sub keys with each other, thereby extracting a matching bit. A specific address value corresponding to may be output.
여기서, SRAM 기반 TCAM 시스템은 SRAM의 후단부에 연결된 역 다중화기(DEMUX)를 통하여 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 출력함으로써, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득할 수 있다.Here, the SRAM-based TCAM system can obtain address bits corresponding to each of the plurality of sub keys by outputting address bits corresponding to each of the plurality of sub keys through a demultiplexer (DEMUX) connected to a rear end of the SRAM. .
또한, SRAM 기반 TCAM 시스템은 역 다중화기의 출력단에 연결된 논리 회로를 이용하여 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교할 수 있다.In addition, the SRAM-based TCAM system may compare address bits corresponding to each of the plurality of sub keys using a logic circuit connected to an output terminal of the demultiplexer.
즉, SRAM 기반 TCAM 시스템은 복수의 서브 키들 각각에 대응하는 어드레스 비트들에 대해 비트와이즈 연산(bitwise operation)을 수행하고, 수행 결과에 기초하여 매칭되는 비트를 추출함으로써, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출할 수 있다. 비트와이즈 연산으로는 비트와이즈 AND 연산(bitwise AND operation)이 이용될 수 있으나, 이에 제한되거나 한정되지 않고, 다양한 비트와이즈 연산이 이용될 수 있다.That is, the SRAM-based TCAM system corresponds to each of the plurality of subkeys by performing a bitwise operation on address bits corresponding to each of the plurality of subkeys and extracting a matching bit based on a result of the execution. The matching bits may be extracted by comparing the address bits. A bitwise AND operation may be used as the bitwise operation, but is not limited thereto. Various bitwise operations may be used.
만약, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 추출되는 매칭되는 비트가 복수 개인 경우, SRAM 기반 TCAM 시스템은 논리 회로의 출력단에 연결된 우선 순위 인코더(priority encoder)를 통하여 복수 개의 매칭되는 비트들에 대한 우선 순위를 설정하여, 복수 개의 매칭되는 비트들 각각에 대응하는 특정 어드레스 값을 우선 순위에 따라 순차적으로 출력할 수 있다.If there are a plurality of matching bits extracted by comparing address bits corresponding to each of the plurality of subkeys with each other, the SRAM-based TCAM system uses a plurality of matching bits through a priority encoder connected to an output of a logic circuit. By setting the priority of the bits, a specific address value corresponding to each of the plurality of matching bits may be sequentially output according to the priority.
일실시예에 따른 SRAM 기반 TCAM 시스템은 이와 같이 입력 데이터를 출력되는 특정 어드레스 값에 대응시켜 SRAM 상에 저장함으로써, SRAM의 물리 어드레스들의 제한된 용량에 대한 물리적 구조 변경없이, SRAM에 에뮬레이트되는 TCAM 비트 수를 증가시킨 메모리 기능을 지원할 수 있다.According to an embodiment, the SRAM-based TCAM system stores the input data on the SRAM in correspondence with a specific address value thus output, so that the number of TCAM bits emulated in the SRAM without changing the physical structure of the limited capacity of the physical addresses of the SRAM. It can support increased memory function.
이하, 표 3을 참조하여 구체적인 실시예를 기재하기로 한다.Hereinafter, specific examples will be described with reference to Table 3.
예를 들어, 검색을 위한 입력 데이터 D로 10001011이 주어지고, SRAM이 분할된 가상의 블록들 개수가 4 개인 경우, SRAM 기반 TCAM 시스템은 10001011의 입력 데이터를 수신한 후, 4 개의 서브 키들(SW1, SW2, SW3 및 SW4)로 분할할 수 있다. 따라서 SW1은 10을 나타내고, SW2는 00을 나타내며, SW3은 10을 나타내고, SW4는 11을 나타낼 수 있다.For example, if 10001011 is given as the input data D for retrieval, and the number of virtual blocks in which the SRAM is divided is four, the SRAM-based TCAM system receives the input data of 10001011, and then receives four subkeys (SW1). , SW2, SW3, and SW4). Accordingly, SW1 may represent 10, SW2 may represent 00, SW3 may represent 10, and SW4 may represent 11.
그 다음 SRAM 기반 TCAM 시스템은 10인 SW1, 00인 SW2, 10인 SW3 및 11인 SW4를 순차적으로 적용함으로써, 표 3의 테이블을 참조로 SW1에 대응하는 어드레스 비트 00010110, SW2에 대응하는 어드레스 비트 10101100, SW3에 대응하는 어드레스 비트 11100111 및 SW4에 대응하는 어드레스 비트 10100110을 획득할 수 있다.Next, the SRAM-based TCAM system sequentially applies SW1 of 10, SW2 of 10, SW3 of 10, and SW4 of 11 by sequentially applying the address bits 00010110 and SW2 corresponding to SW2 with reference to the table in Table 3. The address bits 11100111 corresponding to SW3 and the address bits 10100110 corresponding to SW4 may be obtained.
이에, SRAM 기반 TCAM 시스템은 SW1에 대응하는 어드레스 비트 00010110, SW2에 대응하는 어드레스 비트 10101100, SW3에 대응하는 어드레스 비트 11100111 및 SW4에 대응하는 어드레스 비트 10100110을 서로 비교하여(예컨대, 비트와이즈 AND 연산을 수행하여 비교), 매칭되는 비트 00000100을 추출할 수 있다.Accordingly, the SRAM-based TCAM system compares the address bits 00010110 corresponding to SW1, the address bits 10101100 corresponding to SW2, the address bits 11100111 corresponding to SW3, and the address bits 10100110 corresponding to SW4 (for example, perform a bitwise AND operation). Compare) to extract a matching bit 00000100.
이 때, 매칭되는 비트 00000100에 대응하는 특정 어드레스 값이 어드레스 5로 1 개 이므로, SRAM 기반 TCAM 시스템은 어드레스 5를 특정 어드레스 값으로 출력하여, 어드레스 5에 입력 데이터를 대응시켜 SRAM 상에 저장할 수 있다.In this case, since there is one specific address value corresponding to the matching bit 00000100 as address 5, the SRAM-based TCAM system may output address 5 as a specific address value and associate the input data with the address 5 on the SRAM. .
이와 같이, 실시예로 상술한 일련의 동작 방법에 대한 알고리즘은 표 4와 같다.As such, the algorithms for the above-described series of operating methods are shown in Table 4 below.
Figure PCTKR2016010215-appb-T000004
Figure PCTKR2016010215-appb-T000004
도 8을 일실시예에 따른 SRAM 기반 TCAM 시스템을 나타낸 블록도이다.8 is a block diagram illustrating an SRAM-based TCAM system according to an embodiment.
도 8을 참조하면, 일실시예에 따른 SRAM 기반 TCAM 시스템은 SRAM, SRAM의 전단부에 연결된 다중화기, SRAM의 후단부에 연결된 역 다중화기 및 역 다중화기의 출력단에 연결된 논리 회로를 이용하여 동작하도록 모듈로 집적될 수 있다.Referring to FIG. 8, an SRAM-based TCAM system operates by using a SRAM, a multiplexer connected to the front end of the SRAM, a demultiplexer connected to the rear end of the SRAM, and a logic circuit connected to an output terminal of the demultiplexer. May be integrated into a module to
SRAM 기반 TCAM 시스템은 수신부(810), 분할부(820), 적용부(830) 및 출력부(840)를 포함한다.The SRAM-based TCAM system includes a receiver 810, a divider 820, an applier 830, and an output 840.
수신부(810)는 입력 데이터를 수신한다.The receiver 810 receives input data.
분할부(820)는 SRAM이 분할된 가상의 블록들의 개수에 기초하여 입력 데이터를 복수의 서브 키들로 분할한다.The divider 820 divides the input data into a plurality of subkeys based on the number of virtual blocks in which the SRAM is divided.
적용부(830)는 가상의 블록들에 복수의 서브 키들을 순차적으로 적용한다.The applier 830 sequentially applies the plurality of sub keys to the virtual blocks.
이 때, 적용부(830)는 SRAM의 전단부에 연결된 다중화기(MUX)를 통하여 가상의 블록들 중 복수의 서브 키들 각각에 대응하는 블록에 복수의 서브 키들 각각을 적용할 수 있다.In this case, the application unit 830 may apply each of the plurality of subkeys to a block corresponding to each of the plurality of subkeys among the virtual blocks through the multiplexer MUX connected to the front end of the SRAM.
출력부(840)는 적용 결과에 기초하여 입력 데이터에 대응하는 특정 어드레스 값을 출력한다.The output unit 840 outputs a specific address value corresponding to the input data based on the application result.
구체적으로, 출력부(840)는 적용 결과, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득하고, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출함으로써, 매칭되는 비트에 대응하는 특정 어드레스 값을 출력할 수 있다.In detail, as a result of the application, the output unit 840 obtains address bits corresponding to each of the plurality of sub keys, compares the address bits corresponding to each of the plurality of sub keys with each other, and extracts a matching bit, thereby matching a bit. A specific address value corresponding to may be output.
이 때, 출력부(840)는 SRAM의 후단부에 연결된 역 다중화기(DEMUX)를 통하여 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 출력함으로써, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득할 수 있다.At this time, the output unit 840 outputs address bits corresponding to each of the plurality of subkeys through a demultiplexer (DEMUX) connected to a rear end of the SRAM, thereby obtaining address bits corresponding to each of the plurality of subkeys. Can be.
또한, 출력부(840)는 역 다중화기의 출력단에 연결된 논리 회로를 이용하여 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교할 수 있다.Also, the output unit 840 may compare address bits corresponding to each of the plurality of sub keys using a logic circuit connected to an output terminal of the demultiplexer.
즉, 출력부(840)는 복수의 서브 키들 각각에 대응하는 어드레스 비트들에 대해 비트와이즈 연산(bitwise operation)을 수행하고, 수행 결과에 기초하여 매칭되는 비트를 추출함으로써, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출할 수 있다. 비트와이즈 연산으로는 비트와이즈 AND 연산(bitwise AND operation)이 이용될 수 있으나, 이에 제한되거나 한정되지 않고, 다양한 비트와이즈 연산이 이용될 수 있다.That is, the output unit 840 performs a bitwise operation on address bits corresponding to each of the plurality of sub keys, and extracts a matching bit based on a result of the execution. Corresponding address bits may be compared with each other to extract matching bits. A bitwise AND operation may be used as the bitwise operation, but is not limited thereto. Various bitwise operations may be used.
만약, 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 추출되는 매칭되는 비트가 복수 개인 경우, 출력부(840)는 논리 회로의 출력단에 연결된 우선 순위 인코더(priority encoder)를 통하여 복수 개의 매칭되는 비트들에 대한 우선 순위를 설정하여, 복수 개의 매칭되는 비트들 각각에 대응하는 특정 어드레스 값을 우선 순위에 따라 순차적으로 출력할 수 있다.If there are a plurality of matching bits extracted by comparing address bits corresponding to each of the plurality of sub keys with each other, the output unit 840 matches the plurality of matching bits through a priority encoder connected to an output terminal of the logic circuit. By setting the priority of the bits to be made, it is possible to sequentially output a specific address value corresponding to each of the plurality of matching bits according to the priority.
또한, 출력부(840)는 입력 데이터를 출력되는 특정 어드레스 값에 대응시켜 SRAM 상에 저장함으로써, SRAM에 에뮬레이트되는 TCAM 비트 수를 증가시킨 메모리 기능을 지원할 수 있다.In addition, the output unit 840 may store the input data on the SRAM in correspondence with a specific address value to be output, thereby supporting a memory function of increasing the number of TCAM bits emulated in the SRAM.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the devices and components described in the embodiments may be, for example, processors, controllers, arithmetic logic units (ALUs), digital signal processors, microcomputers, field programmable arrays (FPAs), It may be implemented using one or more general purpose or special purpose computers, such as a programmable logic unit (PLU), microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to the execution of the software. For convenience of explanation, one processing device may be described as being used, but one of ordinary skill in the art will appreciate that the processing device includes a plurality of processing elements and / or a plurality of types of processing elements. It can be seen that it may include. For example, the processing device may include a plurality of processors or one processor and one controller. In addition, other processing configurations are possible, such as parallel processors.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the above, and configure the processing device to operate as desired, or process it independently or collectively. You can command the device. Software and / or data may be any type of machine, component, physical device, virtual equipment, computer storage medium or device in order to be interpreted by or to provide instructions or data to the processing device. Or may be permanently or temporarily embodied in a signal wave to be transmitted. The software may be distributed over networked computer systems so that they may be stored or executed in a distributed manner. Software and data may be stored on one or more computer readable recording media.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the media may be those specially designed and constructed for the purposes of the embodiments, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described by the limited embodiments and the drawings as described above, various modifications and variations are possible to those skilled in the art from the above description. For example, the described techniques may be performed in a different order than the described method, and / or components of the described systems, structures, devices, circuits, etc. may be combined or combined in a different form than the described method, or other components. Or even if replaced or substituted by equivalents, an appropriate result can be achieved.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are within the scope of the claims that follow.

Claims (16)

  1. 비트 수를 증가시킨 SRAM(Static Random Access Memory) 기반 TCAM(Ternary Content Addressable Memory)의 동작 방법에 있어서, In the method of operating a Random Random Access Memory (SRAM) based TCAM (Ternary Content Addressable Memory) with an increased number of bits,
    입력 데이터를 수신하는 단계; Receiving input data;
    SRAM이 분할된 가상의 블록들의 개수에 기초하여 상기 입력 데이터를 복수의 서브 키들로 분할하는 단계; Dividing the input data into a plurality of subkeys based on the number of divided virtual blocks by the SRAM;
    상기 가상의 블록들에 상기 복수의 서브 키들을 순차적으로 적용하는 단계; 및 Sequentially applying the plurality of subkeys to the virtual blocks; And
    상기 적용 결과에 기초하여 상기 입력 데이터에 대응하는 특정 어드레스 값을 출력하는 단계Outputting a specific address value corresponding to the input data based on the application result
    를 포함하는 SRAM 기반 TCAM의 동작 방법.SRAM-based TCAM operating method comprising a.
  2. 제1항에 있어서,The method of claim 1,
    상기 적용 결과에 기초하여 상기 입력 데이터에 대응하는 어드레스 값을 출력하는 단계는 The step of outputting the address value corresponding to the input data based on the application result
    상기 적용 결과, 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득하는 단계; Obtaining address bits corresponding to each of the plurality of sub keys as a result of the application;
    상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출하는 단계; 및 Comparing the address bits corresponding to each of the plurality of sub keys with each other and extracting a matching bit; And
    상기 매칭되는 비트에 대응하는 상기 특정 어드레스 값을 출력하는 단계Outputting the specific address value corresponding to the matched bit
    를 포함하는 SRAM 기반 TCAM의 동작 방법.SRAM-based TCAM operating method comprising a.
  3. 제2항에 있어서,The method of claim 2,
    상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출하는 단계는 Comparing the address bits corresponding to each of the plurality of sub keys with each other and extracting a matching bit
    상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들에 대해 비트와이즈 연산(bitwise operation)을 수행하는 단계; 및 Performing a bitwise operation on address bits corresponding to each of the plurality of sub keys; And
    상기 수행 결과에 기초하여 상기 매칭되는 비트를 추출하는 단계Extracting the matched bit based on the execution result
    를 포함하는 SRAM 기반 TCAM의 동작 방법.SRAM-based TCAM operating method comprising a.
  4. 제3항에 있어서,The method of claim 3,
    상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들에 대해 비트와이즈 연산을 수행하는 단계는 Performing a bitwise operation on the address bits corresponding to each of the plurality of sub keys
    상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들에 대해 비트와이즈 AND 연산(bitwise AND operation)을 수행하는 단계인, SRAM 기반 TCAM의 동작 방법.And performing a bitwise AND operation on address bits corresponding to each of the plurality of sub keys.
  5. 제2항에 있어서,The method of claim 2,
    상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득하는 단계는 Acquiring address bits corresponding to each of the plurality of sub keys
    상기 SRAM의 후단부에 연결된 역 다중화기(DEMUX)를 통하여 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 출력하는 단계Outputting address bits corresponding to each of the plurality of subkeys through a demultiplexer (DEMUX) connected to a rear end of the SRAM;
    를 포함하는 SRAM 기반 TCAM의 동작 방법.SRAM-based TCAM operating method comprising a.
  6. 제5항에 있어서,The method of claim 5,
    상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출하는 단계는 Comparing the address bits corresponding to each of the plurality of sub keys with each other and extracting a matching bit
    상기 역 다중화기의 출력단에 연결된 논리 회로를 이용하여 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하는 단계Comparing address bits corresponding to each of the plurality of subkeys with each other using a logic circuit connected to an output terminal of the demultiplexer
    를 포함하는 SRAM 기반 TCAM의 동작 방법.SRAM-based TCAM operating method comprising a.
  7. 제6항에 있어서,The method of claim 6,
    상기 매칭되는 비트에 대응하는 상기 특정 어드레스 값을 출력하는 단계는 Outputting the specific address value corresponding to the matched bit
    상기 매칭되는 비트가 복수 개인 경우, 상기 논리 회로의 출력단에 연결된 우선 순위 인코더(priority encoder)를 통하여 상기 특정 어드레스 값을 출력하는 단계Outputting the specific address value through a priority encoder connected to an output terminal of the logic circuit when there are a plurality of matching bits;
    를 포함하는 SRAM 기반 TCAM의 동작 방법.SRAM-based TCAM operating method comprising a.
  8. 제1항에 있어서,The method of claim 1,
    상기 가상의 블록들에 상기 복수의 서브 키들을 순차적으로 적용하는 단계는 Sequentially applying the plurality of subkeys to the virtual blocks
    상기 SRAM의 전단부에 연결된 다중화기(MUX)를 통하여 상기 가상의 블록들 중 상기 복수의 서브 키들 각각에 대응하는 블록에 상기 복수의 서브 키들 각각을 적용하는 단계Applying each of the plurality of subkeys to a block corresponding to each of the plurality of subkeys of the virtual blocks through a multiplexer (MUX) connected to a front end of the SRAM;
    를 포함하는 SRAM 기반 TCAM의 동작 방법.SRAM-based TCAM operating method comprising a.
  9. 제1항에 있어서,The method of claim 1,
    상기 SRAM 상에 상기 특정 어드레스 값과 연관지어 상기 입력 데이터를 저장하는 단계Storing the input data in association with the specific address value on the SRAM
    를 더 포함하는 SRAM 기반 TCAM의 동작 방법.Method of operation of the SRAM-based TCAM further comprising.
  10. 제1항에 있어서,The method of claim 1,
    상기 SRAM의 어드레스 공간을 양분하여 상기 SRAM을 상기 가상의 블록들로 분할하는 단계Dividing the SRAM into the virtual blocks by dividing the address space of the SRAM
    를 더 포함하는 SRAM 기반 TCAM의 동작 방법.Method of operation of the SRAM-based TCAM further comprising.
  11. 제10항에 있어서,The method of claim 10,
    상기 SRAM이 분할된 가상의 블록들 각각에는 Each of the virtual blocks in which the SRAM is divided
    상기 SRAM 기반의 TCAM에 의한 어드레스 비트들이 저장되는, SRAM 기반 TCAM의 동작 방법.Method bits of the SRAM-based TCAM is stored, the address bits by the SRAM-based TCAM.
  12. 제1항에 있어서,The method of claim 1,
    상기 SRAM 기반의 TCAM은 The SRAM-based TCAM
    상기 SRAM 기반의 TCAM에 의한 어드레스 비트들과 상기 SRAM에 저장하고자 하는 데이터 사이의 관계에 기초하여 상기 SRAM에 매핑되는, SRAM 기반 TCAM의 동작 방법.And mapped to the SRAM based on a relationship between address bits by the SRAM-based TCAM and data to be stored in the SRAM.
  13. 제1항 내지 제12항 중 어느 한 항의 방법을 수행하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.A computer-readable recording medium having recorded thereon a program for performing the method of any one of claims 1 to 12.
  14. 비트 수를 증가시킨 SRAM 기반 TCAM 시스템에 있어서, In the SRAM-based TCAM system with an increased number of bits,
    입력 데이터를 수신하는 수신부; A receiver for receiving input data;
    SRAM이 분할된 가상의 블록들의 개수에 기초하여 상기 입력 데이터를 복수의 서브 키들로 분할하는 분할부; A dividing unit dividing the input data into a plurality of sub keys based on the number of virtual blocks in which an SRAM is divided;
    상기 가상의 블록들에 상기 복수의 서브 키들을 순차적으로 적용하는 적용부; 및 An application unit for sequentially applying the plurality of sub keys to the virtual blocks; And
    상기 적용 결과에 기초하여 상기 입력 데이터에 대응하는 특정 어드레스 값을 출력하는 출력부An output unit for outputting a specific address value corresponding to the input data based on the application result
    를 포함하는 SRAM 기반 TCAM 시스템.SRAM-based TCAM system comprising a.
  15. 제14항에 있어서,The method of claim 14,
    상기 출력부는 The output unit
    상기 적용 결과, 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 획득하고, 상기 복수의 서브 키들 각각에 대응하는 어드레스 비트들을 서로 비교하여 매칭되는 비트를 추출하며, 상기 매칭되는 비트에 대응하는 상기 특정 어드레스 값을 출력하는, SRAM 기반 TCAM 시스템.As a result of the application, address bits corresponding to each of the plurality of sub keys are obtained, the address bits corresponding to each of the plurality of sub keys are compared with each other, and a matching bit is extracted, and the specific corresponding to the matching bits is obtained. SRAM-based TCAM system for outputting address values.
  16. 제14항에 있어서,The method of claim 14,
    상기 출력부는 The output unit
    상기 SRAM 상에 상기 특정 어드레스 값과 연관지어 상기 입력 데이터를 저장하는, SRAM 기반 TCAM 시스템.And store the input data on the SRAM in association with the specific address value.
PCT/KR2016/010215 2015-09-23 2016-09-09 Method and system for operating sram-based tcam with increased number of bits WO2017052125A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2015-0134450 2015-09-23
KR20150134450 2015-09-23

Publications (1)

Publication Number Publication Date
WO2017052125A1 true WO2017052125A1 (en) 2017-03-30

Family

ID=58386248

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/010215 WO2017052125A1 (en) 2015-09-23 2016-09-09 Method and system for operating sram-based tcam with increased number of bits

Country Status (1)

Country Link
WO (1) WO2017052125A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287946A (en) * 2017-12-30 2018-07-17 盛科网络(苏州)有限公司 A kind of TCAM lookup methods and device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6867991B1 (en) * 2003-07-03 2005-03-15 Integrated Device Technology, Inc. Content addressable memory devices with virtual partitioning and methods of operating the same
JP2005122852A (en) * 2003-10-20 2005-05-12 Toshiba Corp Semiconductor memory device
KR100745693B1 (en) * 2006-09-29 2007-08-03 한국전자통신연구원 Method for ternary contents address memory table management
KR20110064633A (en) * 2009-12-08 2011-06-15 한양대학교 산학협력단 Sram based address generator for each layer and address generator comprising the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6867991B1 (en) * 2003-07-03 2005-03-15 Integrated Device Technology, Inc. Content addressable memory devices with virtual partitioning and methods of operating the same
JP2005122852A (en) * 2003-10-20 2005-05-12 Toshiba Corp Semiconductor memory device
KR100745693B1 (en) * 2006-09-29 2007-08-03 한국전자통신연구원 Method for ternary contents address memory table management
KR20110064633A (en) * 2009-12-08 2011-06-15 한양대학교 산학협력단 Sram based address generator for each layer and address generator comprising the same

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ULLAH, ZAHID ET AL.: "E-TCAM: An Efficient SRAM-Based Architecture for TCAM", CIRCUITS SYST. SIGNAL PROCESS. (2014, 13 May 2014 (2014-05-13), pages 3123 - 3144, XP035391926 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108287946A (en) * 2017-12-30 2018-07-17 盛科网络(苏州)有限公司 A kind of TCAM lookup methods and device

Similar Documents

Publication Publication Date Title
US6922774B2 (en) Device for and method of secure computing using virtual machines
US10311127B2 (en) Sparse matrix vector multiplication
WO2014014282A1 (en) Method and apparatus for data processing using graphic processing unit
US6449706B1 (en) Method and apparatus for accessing unaligned data
WO2015102253A1 (en) Apparatus and method for processing digital value
JP6537823B2 (en) Method and apparatus for concurrent and conditional data manipulation in a software defined network processing engine
WO2013055083A1 (en) Method for packet classification and device therefor
EP4143691A1 (en) Systems for providing an lpm implementation for a programmable data plane through a distributed algorithm
US20140233567A1 (en) High speed network bridging
WO2015102372A1 (en) Apparatus and method for virtualizing network interface
US9996387B2 (en) Context switching for computing architecture operating on sequential data
WO2017052125A1 (en) Method and system for operating sram-based tcam with increased number of bits
WO2018101607A1 (en) Vector processor and control method therefor
WO2022107964A1 (en) Adjacent-matrix-based malicious code detection and classification apparatus and malicious code detection and classification method
WO2018058779A1 (en) Method and system for opening file
WO2020105797A1 (en) Polynomial expression operation optimization device, polynomial expression operation optimization method, and recording medium
WO2018143510A1 (en) Internet of things security module
WO2022177106A1 (en) High-speed multiplexer
WO2015046951A1 (en) Network security method and device using ip address
US8122190B1 (en) Method and system for reconfigurable memory-based permutation implementation
WO2017018567A1 (en) Hadoop-based hardware compression acceleration device and method
WO2015137722A1 (en) Method and device for processing vliw instruction, and method and device for generating instruction for processing vliw instruction
WO2015080440A1 (en) Method and processor for executing instructions, method and apparatus for encoding instructions, and recording medium therefor
WO2023075490A1 (en) Apparatus and method for ciphertext comparison capable of preventing side channel attack
WO2022265410A1 (en) Method and system for generating intermediate representations

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16848851

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16848851

Country of ref document: EP

Kind code of ref document: A1