KR102391602B1 - 다수의 공유된 메모리들을 사용하는 재구성가능한 병렬 룩업을 위한 방법 및 시스템 - Google Patents

다수의 공유된 메모리들을 사용하는 재구성가능한 병렬 룩업을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR102391602B1
KR102391602B1 KR1020140191978A KR20140191978A KR102391602B1 KR 102391602 B1 KR102391602 B1 KR 102391602B1 KR 1020140191978 A KR1020140191978 A KR 1020140191978A KR 20140191978 A KR20140191978 A KR 20140191978A KR 102391602 B1 KR102391602 B1 KR 102391602B1
Authority
KR
South Korea
Prior art keywords
lookup
tiles
output
index
tile
Prior art date
Application number
KR1020140191978A
Other languages
English (en)
Other versions
KR20150077372A (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 KR20150077372A publication Critical patent/KR20150077372A/ko
Application granted granted Critical
Publication of KR102391602B1 publication Critical patent/KR102391602B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing

Abstract

본 발명의 실시예들은 상호연결 네트워크들의 적절한 구성에 의해 공유된 메모리들의 풀을 사용하는 다수의 병렬 룩업들과 관련된다. 룩업 각각에 대해 예비된 공유 메모리들의 수는 이 룩업에 의해 필요한 메모리 용량에 기초하여 재구성가능하다. 공유된 메모리들은 동종의 타일들로 그룹화된다. 룩업에 필요한 메모리 용량에 기초하여 타일들의 세트가 룩업 각각에 할당된다. 룩업 각각에 할당된 타일들은 모든 룩업들이 충돌없이 병렬로 수행될 수 있도록 다른 룩업들과 중첩하지 않는다. 룩업 각각은 해시기반으로 또는 직접 액세스되도록 재구성가능하다. 상호연결 네트워크들은 타일들이 룩업 각각에 대해 할당되는 방법에 기초하여 프로그램된다.

Description

다수의 공유된 메모리들을 사용하는 재구성가능한 병렬 룩업을 위한 방법 및 시스템{METHOD AND SYSTEM FOR RECONFIGURABLE PARALLEL LOOKUPS USING MULTIPLE SHARED MEMORIES}
본 발명은 공유된 메모리들의 풀을 사용하는 다수의 병렬 룩업들과 관련된다. 보다 특별히, 본 발명은 다수의 공유된 메모리들을 사용하는 재구성가능한 병렬 룩업들을 위한 방법 및 시스템에 관한 것이다.
네트워크 프로세서에서, 플로우 당 상태 관리, IP 룩업 및 패킷 분류와 같은 고속 룩업들을 요구하는 다수의 애플리케이션들이 있다. 몇몇 기법들이 이러한 TCAM-기반, 해시-기반 및 직접-액세스 룩업들과 같은 룩업 시스템들을 구현하기 위해 사용될 수 있다. 해시-기반 룩업 기법들 및 직접-액세스 룩업 기법들은 보다 낮은 메모리 비용을 가지고 TCAM-기반 룩업 기법들보다 고속이다. 최신 해시-기반 룩업 기법들은 메모리들의 사용시 고 효율성 때문에 D-LEFT 해시 룩업 스킴에 기초한다. 그러나, 이들 룩업 기법들을 사용하는 종래 기술의 룩업 시스템들에서, 룩업 각각에 사용된 메모리들의 수는 고정된다. 이러한 불가변성은 시스템들이 제작된 후 룩업 각각의 메모리 용량에 대한 어떠한 변화도 금지한다. 게다가, 종래 기술의 룩업 시스템들은 100 % 메모리 활용을 달성하기 위해, 해시-기반과 같은 일 룩업 기법으로부터 직접-액세스와 같은 다른 룩업 기법으로 변화될 수 없고, 이는 정확한-매칭 룩업을 포함하는 애플리케이션들에 유용할 것이다.
시스템 온-칩 (system on-chip) 은 메모리들의 풀을 공유하는 다수의 병렬 룩업들을 지원한다. 룩업 각각에 대해 예비된 메모리들의 수는 이 룩업에 필요한 메모리 용량에 기초하여 재구성가능하다. 게다가, 룩업 각각은 해시-기반 룩업 또는 직접-액세스 룩업을 수행하도록 구성될 수 있다. 공유된 메모리들은 동종 타일들로 그룹화된다. 룩업 각각에 타일들의 세트가 할당된다. 이 세트의 타일들은 모든 룩업들이 충돌없이 병렬로 수행될 수 있도록 다른 세트들과 공유되지 않는다. 이 시스템은 또한 타일들이 룩업 각각에 대해 할당되는 방법에 기초하여 프로그램된 재구성가능 연결 네트워크들을 포함한다.
일 양태에서, 시스템 온-칩은 공유된 메모리들의 풀을 사용하여 N 번의 병렬 룩업들을 지원하도록 구성된다. 시스템 온-칩은 T 개의 타일들로 그룹화된 T×M 개의 공유된 메모리들; 룩업 경로 각각에 대한 M 개의 인덱스 변환기들; N 개의 입력 포트들을 T 개의 타일들에 연결하기 위한 중앙 재구성가능 상호연결 패브릭; T 개의 타일들을 N 개의 출력 포트들에 연결하기 위한 출력 재구성가능 상호연결 패브릭; 및 N 개의 출력 결과 수집기들을 포함한다. N 개의 출력 결과 수집기들 각각은 일 룩업 경로용이다.
일부 실시예들에서, T 개의 타일들은 룩업 경로들 각각에 의해 요구되는 메모리 용량에 기초하여 룩업 경로들에 대해 파티셔닝 (partitioned) 되고 할당된다. 룩업 경로 각각에 할당된 타일들의 수는 2의 제곱이다. 타일은 파티션들 사이에서 중첩되지 않는다.
일부 실시예들에서, T 개의 타일들 각각은, 룩업 당 M 개의 웨이 (way) 로 D-LEFT 룩업을 지원하기 위한 M 개의 메모리들; 입력 키와 M 개의 메모리들 내의 사전-프로그램된 키들을 비교하기 위한 매칭 블록; 및 해당 타일에 대한 히트 결과 (hit result) 를 선택하기 위한 선택 블록을 포함한다.
일부 실시예들에서, 공유된 메모리들 각각은 2m 개의 엔트리들을 포함한다. 엔트리들 각각은 웨이 당 P 개의 버킷들을 사용하여 D-LEFT 룩업들을 지원하기 위한 프로그램가능한 {key, data}의 P 개의 쌍들을 포함한다.
일부 실시예들에서, 룩업 경로 각각은 해시-기반 룩업 또는 직접-액세스 룩업으로 구성될 수 있다.
일부 실시예들에서, 룩업 경로 각각의 M 개의 인덱스 변환기들 중 인덱스 변환기 i는 해당 룩업 경로에 할당된 T 개의 타일들 중 하나의 타일 내의 메모리 i에 액세스하기 위해 사용된다.
일부 실시예들에서, 룩업 경로 각각의 M 개의 인덱스 변환기들 각각은 해당 룩업 경로에 대해 할당된 타일들의 수에 기초하여 구성될 수 있다.
일부 실시예들에서, 룩업 경로 각각의 M 개의 인덱스 변환기들 각각은, log2(T)+1 개의 해시 함수들 및 log2(T)+1 개의 비-해시 함수들로서, 함수들의 출력들은 m 비트 내지 log2(T)+m 비트 범위의 비트폭을 갖는, 함수들; 함수들 중 하나를 선택하기 위한 제 1 구성가능 레지스터들; 및 룩업 인덱스가 해당 룩업 경로의 할당된 타일들 중 올바른 타일을 포인팅하도록 타일 오프셋을 선택하기 위한 제 2 구성가능 레지스터로서, 할당된 타일들은 T 개의 타일들로부터 선택된다.
일부 실시예들에서, M 개의 인덱스 변환기들 각각의 출력 인덱스는 log2(T)+m 개의 비트들을 갖는다. 출력 인덱스의 log2(T) 개의 최상위 비트들은 T 개의 타일들 중 하나를 포인팅하도록 사용되고 출력 인덱스의 m 개의 최하위 비트들은 메모리 판독 어드레스로서 사용된다.
일부 실시예들에서, 중앙 재구성가능 상호연결 패브릭은 M 개의 구성가능 N×T 네트워크들을 포함한다. N×T 네트워크들 각각은 크로스바 또는 구성가능 버터플라이일 수 있다.
일부 실시예들에서, 출력 재구성가능 상호연결 패브릭은 T 개의 구성가능 1×N 디-멀티플렉서들을 포함한다.
일부 실시예들에서, 룩업 경로와 연관된 N 개의 출력 결과 수집기들 중 하나는 룩업 경로에 대해 할당된 타일들로부터 결과들을 수집하도록 구성되고 할당된 타일들에 의해 출력된 결과들로부터 하나의 최종 결과를 선택하도록 구성된다.
일부 실시예들에서, T 개의 타일들 각각에 대한 히트 결과는 해당 타일의 메모리들 내의 사전-프로그램된 키들과 해당 타일의 입력 키 사이의 키 매칭 결과들에 기초한다.
다른 양태에서, 공유된 메모리들의 풀을 사용하여 N 번의 병렬 룩업들을 수행하는 방법이 제공된다. 이 방법은 T 개의 타일들을 N 개의 그룹들로 파티셔닝하는 단계를 포함한다. T 개의 타일들 각각은 M 개의 메모리들을 포함한다. N 개의 룩업 경로들 각각은 입력 포트 및 출력 포트와 연관된다. N 개의 룩업 경로들 각각은 N 개의 그룹들 중 하나에 할당된다. 이 방법은 또한 N 번의 병렬 룩업들을 실행하는 단계를 포함한다.
N 번의 병렬 룩업들의 실행 단계는, N 개의 입력 키들 각각에 대하여, (1) 입력 키를 복수의 룩업 인덱스들로 변환하는 단계로서, 복수의 룩업 인덱스들 각각은 룩업 경로 각각에 의해 액세스되는 N 개의 그룹들 중 하나의 특정한 타일의 타일 ID를 포함하고 또한 데이터가 판독될 특정한 타일 내의 메모리의 메모리 어드레스를 포함하는, 변환 단계, (2) 특정한 타일로부터의 매칭 정보의 집합을 사용함으로써 어느 히트 정보를 리턴할 지를 결정하는 단계; 및 (3) 복수의 룩업 인덱스들에 의해 표시된 특정한 타일들로부터의 히트 정보의 집합을 사용함으로써 입력 키와 연관된 룩업 경로에 대해 어느 최종 룩업 결과를 리턴할 지를 결정하는 단계를 포함한다.
일부 실시예들에서, 특정한 타일로부터 어느 히트 정보를 리턴할 지를 결정할 때, 특정한 타일 내의 모든 메모리들 중에서 가장 낮은 메모리 ID를 갖는 특정한 타일의 메모리에 가장 높은 우선순위가 주어진다. 일부 실시예들에서, 히트 정보는 히트 데이터 및 매칭된 키에 대응하는 히트 데이터의 위치를 포함한다. 히트 데이터의 위치는 메모리 ID, 메모리 ID와 연관된 메모리의 어드레스, 및 메모리 내의 히트 데이터의 위치를 포함한다.
일부 실시예들에서, 룩업 경로에 대하여 어느 최종 룩업 결과를 리턴할 지를 결정할 때, 룩업 경로에 할당된 모든 타일들 중 가장 낮은 타일 ID를 갖는 타일에 가장 높은 우선순위가 주어진다. 일부 실시예들에서, 최종 룩업 결과는 히트 데이터, 히트 데이터를 포함하는 타일의 타일 ID, 메모리 ID 및 히트 데이터가 판독되는 메모리 어드레스를 포함한다.
일부 실시예들에서, 이 방법은 N 번의 병렬 룩업들을 실행하기 전에, 룩업 경로 각각에 대하여 해시 사이즈를 컴퓨팅하는 단계; 해시 선택을 위한 구성 비트들 및 룩업 경로 각각에 대한 타일 오프셋을 생성하는 단계; 룩업 경로들과 타일들을 연결하는 네트워크들을 구성하는 단계; 및 룩업 경로 각각에 대하여 메모리들을 프로그래밍하는 단계를 더 포함한다. 일부 실시예들에서, 룩업 경로 각각에 대한 메모리들을 프로그래밍하기 위한 기법은 M 개의 웨이들 및 P 개의 버킷들을 사용하는 D-LEFT 룩업 기법에 기초한다.
또 다른 양태에서, N 번의 병렬 키-대-룩업 인덱스들 변환들을 지원하도록 구성된 변환 디바이스가 제공된다. 이 변환 디바이스는 변환기에서 수신된 N 개의 키들을 포함한다. N 개의 키들 각각은 T 개의 타일들로부터의 타일들의 그룹과 연관된다. T 개의 타일들 각각은 M 개의 메모리들을 포함한다.
이 변환 디바이스는 또한 N 개의 키들의 N×M 개의 룩업 인덱스들로의 병렬 변환 후 변환기로부터 리턴하기 위한 N×M 개의 룩업 인덱스들을 포함한다.
이 변환기 디바이스는 또한 N×M 개의 변환기들을 포함한다. N×M 개의 변환기들 각각은 N 개의 키들 중 하나의 키를 N×M 개의 룩업 인덱스들 중 하나의 룩업 인덱스로 변환하도록 구성된다. N×M 개의 변환기들 각각은 log2(T)+1 개의 해시 함수들 및 log2(T)+1 개의 비-해시 함수들로서, 함수들의 출력들은 m 비트들로부터 log2(T)+m 비트들의 범위인 비트폭들을 갖는, 함수들; 함수들 중 하나를 선택하기 위한 제 1 구성가능 레지스터; 및 룩업 인덱스가 키와 연관된 타일들의 그룹으로부터 올바른 타일을 포인팅하도록 타일 오프셋을 선택하기 위한 제 2 구성가능 레지스터를 포함한다.
일부 실시예들에서, N×M 개의 룩업 인덱스들은 중앙 재구성 상호연결 패브릭으로 포워딩된다. 중앙 재구성 상호연결 패브릭은 T 개의 타일들 중 하나에 저장된 사전-프로그램된 키들과 키를 비교하기 위해 N×M 개의 룩업 인덱스들 각각을 T 개의 타일들 중 하나와 연결하도록 구성된다.
또 다른 양태에서, 타일 디바이스가 제공된다. 이 타일 디바이스는 M 개의 메모리들을 포함한다. M 개의 메모리들 각각은 2m 개의 엔트리들을 포함한다. 엔트리들 각각은 프로그램가능한 {key, data}의 P 개의 쌍들을 포함한다.
이 타일 디바이스는 또한 입력 키를 수신하고 룩업 결과를 출력하도록 구성된 매칭 및 선택 로직을 포함한다. 매칭 및 선택 로직은, 입력 키가 M 개의 메모리들 내의 임의의 사전-프로그램된 키들과 매칭하는지 여부를 결정하도록 구성된 매칭 블록; 및 M 개의 메모리들 중 입력 키와 매칭하는 사전-프로그램된 키들을 포함하는 메모리들로부터 일 메모리를 선택하도록 구성된 선택 블록을 포함한다. 선택된 메모리는 상기 메모리들 중에서 가장 낮은 메모리 ID를 갖는다. 룩업 결과는 사전-프로그램된 키와 쌍을 이룬 사전-프로그램된 데이터를 포함한다. 룩업 결과는 또한 메모리 ID 및 사전-프로그램된 데이터가 저장된 메모리 어드레스를 포함한다.
일부 실시예들에서, 룩업 결과는 출력 재구성 상호연결 패브릭으로 포워딩된다. 출력 재구성 상호연결 패브릭은 T 개의 타일들 각각을 N 개의 룩업 경로들에 대한 N 개의 최종 출력 선택 디바이스들 중 하나에 연결하도록 구성된다. 일부 실시예들에서, N 개의 최종 출력 선택 디바이스들 각각은, 룩업 경로 각각을 보유하는 모든 타일들로부터 룩업 결과들을 수신하도록 구성된 수집 블록; 및 수집 블록에 의해 수집된 모든 룩업 결과들로부터 하나의 최종 룩업 결과를 선택하도록 구성된 선택 블록으로서, 선택된 최종 룩업 결과는 가장 낮은 타일 ID를 갖는 히트 타일로부터의 결과인, 선택 블록을 포함한다. 선택된 최종 룩업 결과는 히트 데이터, 타일 ID, 메모리 ID 및 히트 데이터가 저장된 메모리 어드레스를 포함한다.
도 1은 본 발명의 일 실시예에 따른 병렬 룩업 시스템을 예시한다.
도 2는 본 발명의 일 실시예에 따른 공유된 메모리들의 예시적인 그룹화의 도면을 예시한다.
도 3은 본 발명의 일 실시예에 따른 룩업 경로들에 대한 공유된 타일들의 예시적인 할당의 도면을 예시한다.
도 4는 본 발명의 일 실시예에 따른 키-대-룩업 인덱스 변환기를 예시한다.
도 5는 본 발명의 일 실시예에 따른 인덱스 변환기를 예시한다.
도 6은 본 발명의 일 실시예에 따른 중앙 재구성가능 상호연결 패브릭을 예시한다.
도 7은 본 발명의 일 실시예에 따른 타일 내부의 메모리의 포맷을 예시한다.
도 8은 본 발명의 일 실시예에 따른 예시적인 타일의 개략도를 예시한다.
도 9는 본 발명의 일 실시예에 따른 선택 블록의 히트 결과를 선택하는 방법을 예시한다.
도 10은 본 발명의 일 실시예에 따른 출력 재구성가능 상호연결 패브릭을 예시한다.
도 11은 본 발명의 일 실시예에 따른 결과 수집기 내에서 히트 결과를 선택하는 방법을 예시한다.
도 12는 본 발명의 일 실시예에 따른 병렬 룩업 시스템을 구성하고 프로그래밍하는 방법을 예시한다.
전술한 바는 상이한 도면들에 걸쳐 동일한 부분들을 유사한 참조 문자들로 참조하는, 첨부된 도면들에 예시된 바와 같은, 본 발명의 일 실시예들의 보다 특정한 기술로부터 명백해질 것이다. 도면들은 축척대로일 필요는 없고, 대신 본 발명의 실시예들을 예시할 때 강조된다.
이하의 기술에서, 다수의 상세들은 설명을 목적으로 언급된다. 그러나, 당업자는 본 발명이 이들 구체적인 상세들 없이도 실시될 수 있다는 것을 인식할 것이다. 따라서, 본 발명은 도시된 실시예들로 제한하는 것으로 의도되지 않고, 본 명세서에 기술된 원리들 및 특징들과 일치하는 가장 넓은 범위를 따를 것이다.
시스템 온-칩은 메모리들의 풀을 공유하는 다수의 병렬 룩업들을 지원한다. 룩업 각각을 위해 예비된 메모리들의 수는 이 룩업에 필요한 메모리에 기초하여 재구성될 수 있다. 게다가, 룩업 각각은 해시-기반 룩업 또는 직접-액세스 룩업으로서 수행되도록 구성될 수 있다. 공유된 메모리들은 동종 타일들로 그룹화된다. 룩업 각각에 타일들의 세트가 할당된다. 이 세트의 타일들은 모든 룩업들이 충돌없이 병렬로 수행될 수 있도록 다른 세트들과 공유되지 않는다. 시스템은 또한 타일들이 룩업 각각에 할당되는 방법에 기초하여 프로그램된 재구성가능 연결 네트워크들을 포함한다.
도 1은 본 발명의 일 실시예에 따른 병렬 룩업 시스템 (100) 을 예시한다. 병렬 룩업 시스템 (100) 은 복수의 공유된 메모리들을 사용하여, 충돌없이, N 개의 동시 또는 병렬 룩업 경로들을 위해 구성된다. 병렬 룩업 시스템 (100) 은 룩업 경로 당 k-비트 입력 키 각각에 대한 n-비트 데이터를 리턴한다. 병렬 룩업 시스템 (100) 은 블록들 (105-130) 을 포함하고, 블록들 각각은 먼저 각각의 특징들이 상세히 논의되기 전에 대체적으로 논의된다.
블록 (115) 에서 공유된 메모리들의 풀은 T 개의 공유된 동종 타일들로 그룹화된다. 타일 각각은 M 개의 메모리들을 포함한다. 룩업 경로 각각에 이들 T 개의 타일들로부터 다수의 타일들이 할당된다. 룩업 경로 각각에 대한 타일 할당은 통상적으로 소프트웨어에 의해 재구성가능하다.
블록 (105) 에서, 룩업 경로 각각의 입력 키는 복수의 룩업 인덱스들로 변환된다. 룩업 데이터를 판독하기 위한, 룩업 경로가 액세스할 각각의 타일들의 타일 ID들 및 이로부터 데이터가 판독될 타일들 내의 메모리들의 어드레스들과 같은 정보가 룩업 인덱스들의 일부가 된다.
입력 키 각각의 타일 ID들 및 메모리 어드레스들은 중앙 재구성 상호연결 패브릭인, 블록 (110) 을 통해 이들의 대응하는 타일들로 전송된다. 중앙 재구성 상호연결 패브릭 (110) 은 복수의 구성가능 네트워크들을 포함한다. 이들 중앙 네트워크들은 통상적으로 룩업 경로 각각에 대해 예비된 타일들의 위치들에 기초하여 구성된다.
타일 각각에서, 블록 (120) 에서, 사전-프로그램된 키들 및 데이터는 대응하는 입력 키로부터 이전에 변환된 (예를 들어, 블록 (110) 에서의 변환) 어드레스들에서 메모리들로부터 판독된다. 메모리들 내에 위치된 이들 사전-프로그램된 키들은 각각의 룩업 경로에 대한 입력 키와 비교된다. 이들 사전-프로그램된 키들과 입력 키 사이에 임의의 매칭이 있으면, 타일은 히트 데이터 및 히트 어드레스를 리턴한다.
타일 각각의 히트 정보는 출력 재구성가능 상호연결 네트워크인, 블록 (125) 을 통해 이 타일을 소유하는 각각의 룩업 경로에 의해 수집된다. 룩업 경로 각각은 최종 룩업 경로가 이 룩업 경로에 대해 리턴되기 전에 블록 (130) 에서 자신이 소유한 모든 타일들의 히트 정보 중에서 다음 차례 선택을 수행한다.
도 2는 본 발명의 일 실시예에 따른 공유된 메모리들의 예시적인 그룹화 (200) 의 도면을 예시한다. 도면은 타일들 (205) 을 사용하여, 도 1의 병렬 룩업 시스템 (100) 과 같은, 병렬 룩업 시스템에서 공유된 메모리들의 조직을 도시한다. 공유된 메모리들은 T 개의 공유된 동종 타일들 (205) 로 그룹화된다. 타일 (205) 각각은 블록 (215) 에서 M 개의 웨이로 D-LEFT 룩업들을 지원하기 위한 M 개의 메모리들을 포함한다. 따라서, 병렬 룩업 시스템 (100) 은 총 T×M 개의 메모리들을 갖는다. 타일 (205) 각각은 병렬 룩업 시스템 (100) 내에서 타일을 식별하기 위한 타일 ID를 갖는다. 타일 (205) 각각의 내부의 메모리들 (210) 은 이 타일 (205) 내에서 메모리들 (210) 을 식별하기 위한, 0 내지 M-1의 범위의 메모리 ID들과 연관된다.
룩업들이 실행되기 전에, 룩업 경로 각각에 공유된 타일들로부터 연속하는 타일들의 세트가 할당된다. 룩업 경로 각각에 할당된 타일들의 수는 2의 제곱이고 이 룩업에 필요한 메모리 용량에 의존한다. 임의의 2 개의 룩업 경로들 간의 타일 중첩은 허용되지 않는다. 병렬 룩업 시스템 (100) 이 8 개의 타일들 및 4 개의 병렬 룩업 경로들을 갖는 예시적인 시나리오를 가정한다. 이들 룩업 경로들에 대한 타일 파티션들은 {8, 0, 0, 0} 또는 {4, 4, 0, 0} 또는 {4, 2, 2, 0} 또는 {4, 2, 1, 1} 또는 {2, 2, 2, 2} 또는 이들 파티션들 중 하나의 임의의 순열일 수 있다. 이들 예시적인 시나리오는 병렬 룩업 시스템 (100) 을 예시하기 위해 계속 참조되고 구축될 것이다.
도 3은 본 발명의 일 실시예에 따른 룩업 경로들 (300) 에 대한 공유된 타일들의 예시적인 할당 도면을 예시한다. 8 개의 타일들 및 4 개의 병렬 룩업 경로들을 갖는 병렬 룩업 시스템 (100) 의 예시적인 시나리오를 계속하면, 8 개의 타일들은 다음: {4, 1, 2, 1}과 같이 파티셔닝된다 (305). 이러한 파티셔닝 예에 기초하여, 룩업 경로 0에 4 개의 타일들 (특히, 타일들 0, 1, 2 및 3) 이 할당되고, 룩업 경로 1에 하나의 타일 (특히, 타일 4) 이 할당되고, 룩업 경로 2에 2 개의 타일들 (특히, 타일들 5 및 6) 이 할당되고 룩업 경로 3에 하나의 타일 (특히, 타일 7) 이 할당된다.
룩업 경로 각각에 대해 타일들의 세트 또는 그룹을 할당한 후, 룩업 경로 각각에 대한 입력 키는 도 1의 블록 (105) 에서 복수의 룩업 인덱스들로 변환된다. 룩업 인덱스들은 각각의 룩업 경로에 대해 할당된 타일들에 액세스하기 위해 사용된다. 키 각각에 대한 룩업 인덱스 각각은 log2(T)+m 비트들을 갖는다. 룩업 인덱스의 log2(T) 최상위 비트 (MSBs: most significant bits) 는 타일 ID에 대해 사용되고, 룩업 인덱스의 m 최하위 비트 (LSBs: last significant bits) 는 메모리 판독 어드레스에 대해 사용된다. 타일 ID는 대응하는 룩업 경로에 대한 할당된 타일들 중 하나를 포인팅하지만, 메모리 판독 어드레스는 그 내부의 타일로부터 데이터가 판독되는 메모리의 어드레스이다. 8 개의 타일들 및 4 개의 병렬 룩업 경로들을 갖는 병렬 룩업 시스템 (100) 의 예시적인 시나리오를 계속하면, 타일 각각의 메모리 각각이 1K-엔트리들의 폭이라고 가정한다. 타일 ID 각각이 3-비트들의 폭이고 메모리 판독 어드레스 각각이 10-비트들의 폭이고, 이어서 룩업 인덱스는 13-비트들의 폭이다.
룩업 경로 각각은 타일 내에 메모리들이 있기 때문에 동일한 수 (즉, M) 의 인덱스 변환기들이 구비된다. 도 4는 본 발명의 일 실시예에 따른 키-대-룩업 인덱스 변환기 (400) 를 예시한다. 일부 실시예들에서, 도 1의 블록 (105) 은 키-대-룩업 인덱스 변환기 (400) 와 유사하게 구성된다. 룩업 경로 당 입력 키 각각은 자신의 M 개의 인덱스 변환기들 (405) 모두로 전송된다. 그 결과, M 개의 룩업 인덱스들은 룩업 경로 당 입력 키 각각에 대하여 획득된다. 룩업 인덱스 각각은 타일 ID의 값을 사용함으로써 대응하는 룩업 경로에 대한 연관된 타일들 내의 임의의 타일에 액세스할 수 있지만, 룩업 인덱스 i는 이 타일 내의 메모리 i에만 액세스할 수 있고, 이하에 더 논의된다.
인덱스 변환기 (405) 각각은 해시 함수들의 세트를 포함한다. 병렬 룩업 시스템이 T 개의 타일들을 포함하면, 인덱스 변환기 (405) 각각은 log2(T)+1 개의 해시 함수들을 포함한다. 이들 해시 함수들의 출력들은 m 비트들 내지 log2(T)+m 비트들의 범위의 비트폭들을 갖는다. 해시 크기는 해시 함수의 비트폭을 참조한다. 룩업 경로 각각에 대해 선택된 해시 크기는 이 룩업 경로에 대해 예비된 타일들의 수에 기초하여 재구성가능하다. 룩업 경로에 q 개의 타일들이 할당되면, 이 룩업 경로에 대한 인덱스 변환기 각각에 대하여 선택된 해시 크기는 m+log2(q)이다. 8 개의 타일들을 갖는 병렬 룩업 시스템 (100) 의 예시적인 시나리오를 계속하면, 인덱스 변환기 각각은 log2(8)+1 = 4 (four) 개의 해시 함수들을 갖는다.
도 5는 본 발명의 일 실시예에 따른 인덱스 변환기 (500) 를 예시한다. 일부 실시예들에서, 도 4의 인덱스 변환기 (405) 가 인덱스 변환기 (500) 와 유사하게 구성된다. 예시적인 시나리오를 계속하면, 타일 각각의 메모리 어드레스가 10-비트폭이라고 가정한다. 4 개의 해시 함수들의 해시 사이즈들은 이 예시적인 시나리오의 시스템이 8 개의 타일들을 갖기 때문에, 각각 10, 11, 12 및 13 (10 내지 log2(8)+10) 이다. 해시 사이즈들이 동일하지 않기 때문에, 출력들이 각각 13-비트폭이도록, 이들 4 개의 해시 함수들의 출력들의 프리픽스에서 0 비트들이 연쇄된다.
재구성가능 cfg_hash_sel 레지스터가 룩업 경로 각각에 대한 해시 함수를 선택하기 위해 사용될 수 있다. 도 5에서, 룩업 경로에 하나의 타일이 할당되면, 10-비트 해시 함수가 선택된다 (log2(1)+10 = 10). 룩업에 2 개의 타일들이 할당되면, 11-비트 해시 함수가 선택된다 (log2(2)+10 = 11). 룩업에 4 개의 타일들이 할당되면, 12-비트 해시 함수가 선택된다 (log2(4)+10 = 12). 룩업에 8 개의 타일들이 할당되면, 13-비트 해시 함수가 선택된다 (log2(8)+10 = 13).
유사하게, cfg_hash_sel 레지스터는 룩업 경로 각각에 대해 비-해시 함수를 선택하도록 사용될 수 있다. 특히, 인덱스 변환기 (500) 는 또한 해시 함수들과 같은 사이즈들을 갖는 비-해시 함수들의 세트를 포함한다. 비-해시 함수들은 내부에 로직을 갖지 않는다. 대신, 비-해시 함수들은 단지 입력 키로부터 최하위 비트 (LSBs) 를 취한다. 사용자들이 해싱을 통하지 않고 (직접 메모리 포인터로서 입력 키를 사용함으로써) 메모리들에 직접 액세스할 필요가 있을 때 비-해시 함수들이 사용된다. 이 설계를 사용하여, 도 1의 병렬 룩업 시스템 (100) 과 같은 시스템은 해시-기반 룩업 및 직접-액세스 룩업 양자를 지원할 수 있다. cfg_hash_sel 레지스터를 구성함으로써 룩업을 위해 해시-기반 또는 직접-액세스를 선택한다. 예를 들어, 룩업에 4 개의 타일들이 할당되면, cfg_hash_sel 레지스터는 해시-기반 룩업에 대하여 12-비트 해시 함수 또는 직접-액세스 룩업에 대하여 12-비트 해시 함수를 선택한다.
인덱스 변환기 (500) 는 또한 룩업 인덱스가 각각의 룩업 경로에 할당된 타일들 중 하나를 정확하게 포인팅하도록 룩업 인덱스 각각의 타일 ID를 조정하기 위해 재구성가능 cfg_tile_offset 레지스터를 포함한다. cfg_tile_offset 레지스터를 위해 구성된 값은 통상적으로 대응하는 룩업에 대하여 할당된 타일들의 세트 내의 첫번째 타일 ID이다. 예를 들어, 도 3에서, 룩업 경로 0에 대한 cfg_tile_offset 레지스터는 룩업 경로 0에 대해 할당된 타일들이 타일들 0, 1, 2 및 3이기 때문에 0으로 구성된다. 유사하게, 룩업 경로 1, 2, 및 3에 대한 cfg_tile_offset 레지스터들은 각각 4, 5 및 7로 구성된다.
도 1로 돌아가서, 병렬 룩업 시스템 (100) 은 중앙 재구성가능 상호연결 패브릭 (110) 을 포함한다. 중앙 재구성가능 상호연결 패브릭 (110) 은 타일 내에 메모리들이 있기 때문에, 동일한 수 (즉, M) 의 개별 중앙 네트워크들을 포함한다. 중앙 네트워크들 각각은 룩업 경로들이 있기 때문에 동일한 수 (즉, N) 의 입력 포트들을 갖고, 타일들이 있기 때문에 동일한 수 (즉, T) 의 출력 포트들을 갖는다. 중앙 네트워크들 각각은 모든 타일들 내의 메모리 i로 모든 룩업 경로들의 인덱스 변환기 i의 출력들을 연결한다.
도 6은 본 발명의 일 실시예에 따른 중앙 재구성가능 상호연결 패브릭 (600) 을 예시한다. 일부 실시예들에서, 중앙 재구성가능 상호연결 패브릭 (110) 은 중앙 재구성가능 상호연결 패브릭 (600) 과 유사하게 구성된다. 다시 예시적인 시나리오를 계속하면, 타일 당 2 개의 메모리들, 및 따라서 룩업 경로 당 2 개의 인덱스 변환기들을 갖는, 8 개의 타일들 (615) 을 사용하는 4 개의 병렬 룩업 경로들이 있다. 중앙 재구성가능 상호연결 패브릭 (600) 은 2 개의 4x8 중앙 네트워크들 (610a, 610b) (집합적으로 610) 을 갖는다. 네트워크 0는 모든 타일들 (615) 의 메모리들 0에 모든 룩업 경로들의 인덱스 변환기들 0의 출력들을 연결하고, 네트워크 1은 모든 타일들 (615) 의 메모리들 1에 모든 룩업 경로들의 인덱스 변환기들 1의 출력들을 연결한다.
이들 중앙 네트워크들 (610) 은 룩업 경로들 각각의 예비된 타일들 (615) 에 룩업 경로 각각을 정확하게 연결하도록 구성된다. 예를 들어, 도 3에서, 룩업 0에 타일들 0, 1, 2 및 3이 할당된다. 이와 같이, 네트워크 0은 입력 포트 0을 출력 포트들 0, 1, 2, 3에 연결하도록 구성된다. 유사하게, 입력 포트 1은 출력 포트 4에 연결된다. 유사하게, 입력 포트 2는 출력 포트들 5 및 6에 연결된다. 유사하게, 입력 포트 3은 출력 포트 7에 연결된다. 이들 연결들이 도 6에 도시된다. 모든 중앙 네트워크들 (610) 은 동일한 구성의 셋업을 갖는다. 이와 같이, 네트워크 1의 구성은 네트워크 0의 구성과 정확하게 동일하다.
중앙 네트워크 (610) 각각은 크로스바일 수 있다. 그러나, 이들 중앙 네트워크들 (610) 은 통상적으로 룩업들이 실행되기 전에 미리 구성되고, 이는 실행 동안 이들이 변하지 않는다는 것을 의미한다. 대안적으로, 중앙 네트워크들 (610) 은 버터플라이 네트워크로부터 구축되고, 이들은 크로스바들보다 덜 비싸다. Clos 네트워크, Benes 네트워크 또는 Omega 네트워크와 같은 구현될 수 있는 몇몇 공통적인 재구성가능 버터플라이 네트워크들이 있다.
중앙 네트워크들 (610) 이 구성된 후, 룩업 경로 각각은 자신의 입력 키 및 입력 키의 룩업 인덱스들을 자신에게 할당된 모든 타일들 (615) 로 바로 전송하고, 룩업 인덱스들은 타일 ID들 및 메모리 어드레스들을 포함한다. 일단 할당된 타일 (615) 이 룩업 인덱스를 수신하면, 할당된 타일 (615) 은 이 룩업 인덱스의 타일 ID가 실제로 자신을 포인팅하는지 여부를 검사한다. 타일 ID가 이 타일의 ID이면, 타일은 대응하는 메모리로부터 판독할 룩업 인덱스 내의 메모리 어드레스를 사용할 것이다. 타일 ID가 이 타일의 ID가 아니면, 수신된 인덱스는 무시된다.
타일 (615) 이 자신을 포인팅하는 타일 ID를 갖는 룩업 인덱스를 수신할 때, 이 룩업 인덱스는 유효한 인덱스라고 한다. 타일 (615) 각각이 M 개의 메모리들을 갖기 때문에, 타일 (615) 각각은 M 개의 중앙 네트워크들을 통해 동일한 키로부터 M 개까지 유효한 룩업 인덱스들을 수신할 수 있다. 예를 들어, 도 6에서, 타일 (615) 각각은 2 개의 로컬 메모리들에 대해 2 개의 유효한 인덱스들을 수신할 수 있다.
도 7은 본 발명의 일 실시예에 따른 타일 내부의 메모리 (700) 의 포맷을 예시한다. 메모리 (700) 의 깊이는 통상적으로 2m 개의 엔트리들 (m-비트 어드레스) 을 갖는다. 메모리 (700) 내의 엔트리 각각은 웨이 당 P 개의 버킷들을 갖는 D-LEFT 룩업들을 지원하기 위해 사전-프로그램된 {key, data}의 P 개의 쌍들 (705) 을 포함한다. 따라서, 메모리 (700) 의 폭은 PH(k+n) 비트이고, k는 키 각각의 비트폭이고, n은 데이터 각각의 비트폭이다. 타일들의 로컬 메모리들의 키들 및 데이터의 값들은 룩업 경로 각각에 대하여 공유된 타일들이 파티셔닝되고 할당되는 방법에 의존하여 프로그래밍 가능하다. 이들 메모리들에 대한 프로그램 원리는 D-LEFT 룩업 기법에 기초한다.
타일이 로컬 메모리에 대하여 유효한 인덱스를 수신할 때, 이 유효한 인덱스 내의 메모리 어드레스는 로컬 메모리를 판독하기 위해 사용된다. 로컬 메모리의 출력은 이 메모리 어드레스에 의해 포인팅된 엔트리에서 사전 프로그램된 {key, data}의 P 개의 쌍들을 포함한다. 타일이 M 개의 로컬 메모리들에 대해 M 개의 유효 인덱스들을 수신하는 극단적인 경우, {key, data}의 M×P 개의 쌍들이 있다. M×P 키들은 이들 사전-프로그램된 키들 중 하나(들) 가 입력 키와 매칭되는지 결정하기 위해 타일 내부의 매칭 로직 블록으로 전송된다. 매칭 결과(들)는 이 타일의 룩업 결과로서 리턴하기 위해 사전-프로그램된 데이터를 선택하도록 사용된다.
도 8은 본 발명의 일 실시예에 따른 예시적인 타일 (800) 의 개략도를 예시한다. 일부 실시예들에서, 도 1의 블록 (115) 내의 타일들은 타일 (800) 과 유사하게 구성된다. 다시 예시적인 시나리오를 계속하면, 타일 (800) 은 2 개의 메모리들 (805) 을 포함하고, 메모리들 각각은 사전-프로그램된 {key, data}의 3 개의 쌍들을 갖는다. 입력 키 각각에 대해, 타일 (800) 은 자신의 메모리들 (805) 로부터 사전-프로그램된 {key, data}의 최대 6 개의 유효한 쌍들까지 획득할 수 있다. 6 또는 사전-프로그램된 저장된 키들은 타일 (800) 의 매칭 블록 (810) 으로 전송된다. 매칭 블록 (810) 으로부터의 매칭 결과(들)는 타일 (800) 의 룩업 결과를 출력하기 위해 선택 블록 (815) 으로 전송된다. 일부 실시예들에서, 도 2의 블록 (215) 은 매칭 블록 (810) 및 선택 블록 (815) 과 유사하게 구성된다.
도 9는 본 발명의 일 실시예에 따른 선택 블록 (900) 의 히트 결과를 선택하는 방법을 예시한다. 일부 실시예들에서, 도 8의 선택 블록 (815) 은 선택 블록 (900) 과 유사하게 구성된다. 방법 (900) 은 모든 저장된 키들에 대한 매칭 결과(들)가 도 8의 매칭 블록으로부터 수신되는, 단계 (905) 에서 시작된다. 단계 (910) 에서, 사전-프로그램되거나 저장된 키가 입력 키 사이에 매칭이 있는지 여부가 결정된다. 단계 (910) 에서, 매칭이 없다고 결정되면, 단계 (915) 에서, 미스 비트 (miss bit) 가 셋되고 결과들이 리턴되지 않는다. 단계 (910) 에서 적어도 하나의 매칭이 결정되면, 이어서 단계(920) 에서 사전-프로그램된 키와 입력 키들 사이에 하나 이상의 매칭이 존재하는지 여부가 결정된다. 단계 (920) 에서 단지 하나의 매칭이 있다고 결정되면, 이어서 단계 (925) 에서, 히트 비트가 셋되고 사전-프로그램된 키와 쌍이 된 사전-프로그램된 데이터가 히트 데이터로서 리턴된다. 하나 이상의 매칭이 있다고 단계 (920) 에서 결정되면, 이어서 단계 (930) 에서, 히트 비트가 셋되고 가장 낮은 메모리 ID를 갖는 메모리 내의 사전-프로그램된 키와 쌍이 된 사전-프로그램된 데이터가 선택되고 히트 데이터로서 리턴된다.
입력 키에 대한 히트 데이터를 리턴하는 것에 부가하여, 타일은 또한 메모리 ID 및 히트 데이터가 저장된 메모리 어드레스를 포함하는 히트 데이터의 위치를 리턴한다. 히트 데이터의 위치는 사용자들에 의한 시스템 디버깅 및 또한 통계적 목적을 위해 유용하다. 단계들 (915, 925 및 930) 후에, 방법 (900) 은 단계 (905) 로 돌아간다.
도 8을 다시 참조하면, 타일 (800) 의 룩업 결과는 도 1의 출력 재구성가능 상호연결 패브릭 (125) 과 같은, 출력 재구성가능 상호연결 패브릭 (125) 을 통해 룩업 경로 각각의 결과 수집기로 전송된다.
도 10은 본 발명의 일 실시예에 따른 출력 재구성가능 상호연결 패브릭 (1000) 을 도시한다. 일부 실시예들에서, 출력 재구성가능 상호연결 패브릭 (125) 이 출력 재구성가능 상호연결 패브릭 (1000) 과 유사하게 구성된다. 출력 재구성가능 상호연결 패브릭 (1000) 은 출력 네트워크 (1010) 를 포함한다. 출력 네트워크 (1010) 는 T1-입력HN-출력 재구성가능 디-멀티플렉서들을 포함한다. 출력 네트워크 (1010) 는 룩업 경로의 적절한 결과 수집기 (1015) 에 타일들 (1005) 각각의 출력을 연결한다. 예를 들어, 도 3에서, 출력 네트워크 (1010) 는 룩업 경로 0의 결과 수집기 (1015) 에 타일들 0, 1, 2 및 3의 출력들을 연결하도록 구성된다. 출력 네트워크 (1010) 는 또한 룩업 경로 1의 결과 수집기 (1015) 에 타일 4의 출력을 연결하도록 구성된다. 출력 네트워크 (1010) 는 또한 룩업 경로 2의 결과 수집기 (1015) 에 타일들 5 및 6의 출력들을 연결하도록 구성된다. 출력 네트워크 (1010) 는 또한 룩업 경로 3의 결과 수집기 (1015) 에 타일 7의 출력을 연결하도록 구성된다. 이들 연결들이 도 10에 도시된다. 룩업 경로 각각의 결과 수집기 (1015) 는 결과 수집기 (1015) 의 최종 룩업 결과를 출력하기 위해 소유하고 있는 타일들 (1005) 로부터 하나의 결과를 선택한다.
도 11은 본 발명의 일 실시예에 따른 결과 수집기 (1100) 내에서 히트 결과를 선택하는 방법을 예시한다. 일부 실시예들에서, 도 10의 결과 수집기 (1015) 는 결과 수집기 (1100) 와 유사하게 구성된다. 방법 (1100) 은 할당된 타일들로부터 룩업 결과(들)가 수신되는, 단계 (1105) 에서 시작된다. 단계 (1110) 에서, 임의의 타일 히트가 있는지 결정된다. 단계 (1110) 에서 히트가 없다고 결정되면, 이어서 단계 (1115) 에서, 미스 비트 (miss bit) 가 셋되고 결과들이 리턴되지 않는다. 적어도 하나의 히트가 단계 (1110) 에서 결정되면, 이어서 단계 (1120) 에서, 타일들로부터 하나 이상의 히트가 있는지 여부가 결정된다. 단계 (1120) 에서 단지 하나의 히트만이 결정되면, 이어서 단계 (1125) 에서, 히트 비트가 셋되고 히트 결과 또는 히트 데이터가 룩업 결과로서 리턴된다. 단계 (1120) 에서 하나 이상의 히트가 결정되면, 이어서 단계 (1130) 에서, 히트 비트가 설정되고 타일 히트들 중에서 가장 낮은 타일 ID를 갖는 타일로부터 히트 결과가 선택되고 룩업 결과로서 리턴된다.
히트 결과를 리턴하는 것에 부가하여, 결과 수집기는 또한 타일 ID, 메모리 ID 및 히트 데이터가 판독되는 메모리 어드레스를 리턴한다. 타일 ID, 메모리 ID 및 메모리 어드레스는 사용자들에 의한 시스템 디버깅 및 통계적 목적들을 위해 유용하다. 단계들 (1115, 1125 및 1130) 후에, 방법 (1100) 은 단계 (1105) 로 리턴한다.
도 12는 본 발명의 일 실시예에 따라 병렬 룩업 시스템 (1200) 을 구성하고 프로그래밍하는 방법을 예시한다. 방법 (1200) 은 도 1의 병렬 룩업 시스템 (100) 과 같은 병렬 룩업 시스템을 셋업하도록 사용자들을 위한 가이드라인을 제공한다. 병렬 룩업 시스템 (100) 은 T 개의 공유된 타일들을 갖는 N 개의 병렬 룩업 경로들을 갖는다. 타일 각각은 M 개의 메모리들을 갖는다. 메모리 각각은 m-비트폭의 메모리 어드레스를 갖는다. 메모리 엔트리 각각은 소프트웨어에 의해 프로그램가능한 {key, data}의 P 개의 쌍들을 포함한다. 병렬 룩업 시스템 (100) 의 각각의 룩업은 M 개의 웨이들 및 웨이 당 P 개의 버킷들을 사용하는 D-LEFT 룩업이다.
방법 (1200) 은 사용자가 룩업 경로 각각에 대해 타일들을 할당하는, 단계 (1205) 에서 시작된다. 룩업 경로 각각에 할당된 타일들의 수는 2의 제곱이어야 한다. 타일 파티션은 또한 룩업 경로들 간에 타일 중첩이 없다는 것을 보장해야 한다.
단계 (1210) 에서, 룩업 경로 각각의 해시 크기가 컴퓨팅된다. 룩업 경로 각각에 대한 해시 크기는 이 룩업 경로에 대해 할당된 타일들의 수에 기초한다. 룩업 경로에 q 개의 타일들이 할당되면, 이의 해시 크기는 log2(q)+m와 같다.
룩업 각각의 해시 크기가 공지된 후에, 이에 따라, 단계 (1215) 에서, 인덱스 변환기들 내의 레지스터들 cfg_hash_sel 및 cfg_tile_offset이 구성된다. cfg_hash_sel 레지스터는 룩업 경로에 대한 함수를 선택한다. cfg_tile_offset 레지스터는 룩업 경로에 대한 룩업 인덱스의 타일 ID를 조정한다.
한편, 단계 (1220) 에서, 중앙 상호연결 네트워크 및 출력 상호연결 네트워크가 룩업 경로들과 이들의 예비된 타일들을 연결하도록 구성된다. 인덱스 변환기들 및 네트워크들에 대한 모든 구성 비트들은 본 명세서에 기술된 원리들에 따라 스크립트에 의해 생성된다.
단계 (1225) 에서, 룩업 경로 각각에 대해 할당된 메모리들이 프로그램된다. 프로그래밍 기법은 룩업 당 M 개의 웨이들 및 웨이 당 P 개의 버킷들을 사용하는 D-LEFT 룩업 기법에 기초한다.
모든 할당된 메모리들이 프로그램된 후, 단계 (1230) 에서, 병렬 룩업 시스템 (100) 은 입력 키들을 수신할 준비가 되고 N 번의 룩업들을 병렬로 실행한다. 단계 (1230) 후에, 방법 (1200) 이 종료된다.
본 발명의 실시예들은 상호연결 네트워크들의 적절한 구성에 의해 공유된 메모리들의 풀을 사용하여 다수의 병렬 룩업들과 관련된다. 룩업 각각을 위해 예비된 공유된 메모리들의 수는 룩업에 필요한 메모리 용량에 기초하여 재구성가능하다. 공유된 메모리들은 동종 타일들로 그룹화된다. 룩업 각각에 이 룩업에 필요한 메모리 용량에 기초하여 타일들의 세트가 할당된다. 모든 룩업들이 충돌없이 병렬로 수행될 수 있도록 룩업 각각에 대해 할당된 타일들은 다른 룩업들과 중첩하지 않는다. 룩업 각각은 해시-기반 또는 직접-액세스로 재구성가능하다. 상호연결 네트워크들은 룩업 각각에 대해 타일들이 할당되는 방법에 기초하여 프로그램된다.
당업자는 다른 용도들 및 장점들이 또한 존재한다는 것을 인식할 것이다. 본 발명이 다양한 구체적인 상세들을 참조하여 기술되었지만, 당업자는 본 발명이 본 발명의 정신으로부터 벗어나지 않고 다른 구체적인 형태들로 구현될 수 있다는 것을 인식할 것이다. 따라서, 당업자는 본 발명이 전술한 예시적인 상세들로 제한되지 않고, 오히려 첨부된 청구항들로 규정된다는 것을 이해할 것이다.

Claims (29)

  1. 공유된 메모리들의 풀을 사용하여 N 번의 병렬 룩업들을 지원하도록 구성된 시스템 온-칩 (system on-chip) 으로서,
    T 개의 타일들로 그룹화된 T×M 개의 공유된 메모리들의 풀;
    N 개의 룩업 경로들 각각에 대한 M 개의 인덱스 변환기들;
    N 개의 입력 포트들을 상기 T 개의 타일들에 연결하기 위한 중앙 재구성가능 상호연결 패브릭;
    T 개의 타일들을 N 개의 출력 포트들에 연결하기 위한 출력 재구성가능 상호연결 패브릭; 및
    N 개의 출력 결과 수집기들로서, 상기 N 개의 출력 결과 수집기들 각각은 각 룩업 경로마다 있는, 상기 N 개의 출력 결과 수집기들을 포함하고,
    상기 시스템 온-칩은 상기 N 개의 룩업 경로들을 따라 상기 T×M개의 공유된 메모리들의 풀에 대하여 N 개의 병렬 룩업들을 수행하도록 구성되며, N, T 및 M은 양의 정수 값들인, 시스템 온-칩.
  2. 제 1 항에 있어서,
    상기 T 개의 타일들은 상기 룩업 경로들 각각에 의해 요구되는 메모리 용량에 기초하여 상기 룩업 경로들에 대해 파티셔닝 (partitioned) 되고 할당되는, 시스템 온-칩.
  3. 제 1 항에 있어서,
    상기 N 개의 룩업 경로들의 룩업 경로 각각에 할당된 타일들의 수는 2의 제곱이고, 타일은 파티션들 사이에서 중첩되지 않는, 시스템 온-칩.
  4. 공유된 메모리들의 풀을 사용하여 N 번의 병렬 룩업들을 지원하도록 구성된 시스템 온-칩 (system on-chip) 으로서,
    T 개의 타일들로 그룹화된 T×M 개의 공유된 메모리들;
    룩업 경로들 각각에 대한 M 개의 인덱스 변환기들;
    N 개의 입력 포트들을 상기 T 개의 타일들에 연결하기 위한 중앙 재구성가능 상호연결 패브릭;
    T 개의 타일들을 N 개의 출력 포트들에 연결하기 위한 출력 재구성가능 상호연결 패브릭; 및
    N 개의 출력 결과 수집기들로서, 상기 N 개의 출력 결과 수집기들 각각은 일 룩업 경로마다 있는, 상기 N 개의 출력 결과 수집기들을 포함하고,
    상기 T 개의 타일들 각각은,
    룩업 당 M 개의 웨이 (way) 로 D-LEFT 룩업을 지원하기 위한 M 개의 메모리들;
    입력 키와 상기 M 개의 메모리들 내의 사전-프로그램된 키들을 비교하기 위한 매칭 블록; 및
    해당 타일에 대한 히트 결과 (hit result) 를 선택하기 위한 선택 블록을 포함하고, N, T 및 M은 양의 정수 값들인, 시스템 온-칩.
  5. 공유된 메모리들의 풀을 사용하여 N 번의 병렬 룩업들을 지원하도록 구성된 시스템 온-칩 (system on-chip) 으로서,
    T 개의 타일들로 그룹화된 T×M 개의 공유된 메모리들;
    룩업 경로들 각각에 대한 M 개의 인덱스 변환기들;
    N 개의 입력 포트들을 상기 T 개의 타일들에 연결하기 위한 중앙 재구성가능 상호연결 패브릭;
    T 개의 타일들을 N 개의 출력 포트들에 연결하기 위한 출력 재구성가능 상호연결 패브릭; 및
    N 개의 출력 결과 수집기들로서, 상기 N 개의 출력 결과 수집기들 각각은 일 룩업 경로마다 있는, 상기 N 개의 출력 결과 수집기들을 포함하고,
    상기 공유된 메모리들 각각은 2m 개의 엔트리들을 포함하고,
    상기 엔트리들 각각은 웨이 당 P 개의 버킷들을 사용하여 D-LEFT 룩업들을 지원하기 위한 프로그램가능한 {key, data}의 P 개의 쌍들을 포함하고, P, N, T 및 M은 양의 정수 값들인, 시스템 온-칩.
  6. 제 1 항에 있어서,
    룩업 경로 각각은 해시-기반 룩업 또는 직접-액세스 룩업으로 구성될 수 있는, 시스템 온-칩.
  7. 제 1 항에 있어서,
    상기 N개의 룩업 경로들의 룩업 경로 각각의 M 개의 인덱스 변환기들 중 인덱스 변환기 i는 해당 룩업 경로에 할당된 T 개의 타일들 중 하나의 타일 내의 메모리 i에 액세스하기 위해 사용되는, 시스템 온-칩.
  8. 제 1 항에 있어서,
    상기 N개의 룩업 경로들의 룩업 경로 각각의 M 개의 인덱스 변환기들 각각은 상기 N개의 룩업 경로들의 해당 룩업 경로에 대해 할당된 타일들의 수에 기초하여 구성될 수 있는, 시스템 온-칩.
  9. 공유된 메모리들의 풀을 사용하여 N 번의 병렬 룩업들을 지원하도록 구성된 시스템 온-칩 (system on-chip) 으로서,
    T 개의 타일들로 그룹화된 T×M 개의 공유된 메모리들;
    룩업 경로들 각각에 대한 M 개의 인덱스 변환기들;
    N 개의 입력 포트들을 상기 T 개의 타일들에 연결하기 위한 중앙 재구성가능 상호연결 패브릭;
    T 개의 타일들을 N 개의 출력 포트들에 연결하기 위한 출력 재구성가능 상호연결 패브릭; 및
    N 개의 출력 결과 수집기들로서, 상기 N 개의 출력 결과 수집기들 각각은 일 룩업 경로마다 있는, 상기 N 개의 출력 결과 수집기들을 포함하고,
    룩업 경로 각각의 M 개의 인덱스 변환기들 각각은,
    log2(T)+1 개의 해시 함수들 및 log2(T)+1 개의 비-해시 함수들로서, 상기 함수들의 출력들은 m 비트 내지 log2(T)+m 비트 범위의 비트폭을 갖는, 상기 함수들;
    상기 함수들 중 하나를 선택하기 위한 제 1 구성가능 레지스터들; 및
    룩업 인덱스가 해당 룩업 경로의 할당된 타일들 중 올바른 타일을 포인팅하도록 타일 오프셋을 선택하기 위한 제 2 구성가능 레지스터로서, 상기 할당된 타일들은 상기 T 개의 타일들로부터 선택되는, 상기 제 2 구성가능 레지스터를 더 포함하고, m, N, T 및 M은 양의 정수 값들인, 시스템 온-칩.
  10. 공유된 메모리들의 풀을 사용하여 N 번의 병렬 룩업들을 지원하도록 구성된 시스템 온-칩 (system on-chip) 으로서,
    T 개의 타일들로 그룹화된 T×M 개의 공유된 메모리들;
    룩업 경로들 각각에 대한 M 개의 인덱스 변환기들;
    N 개의 입력 포트들을 상기 T 개의 타일들에 연결하기 위한 중앙 재구성가능 상호연결 패브릭;
    T 개의 타일들을 N 개의 출력 포트들에 연결하기 위한 출력 재구성가능 상호연결 패브릭; 및
    N 개의 출력 결과 수집기들로서, 상기 N 개의 출력 결과 수집기들 각각은 일 룩업 경로마다 있는, 상기 N 개의 출력 결과 수집기들을 포함하고,
    상기 M 개의 인덱스 변환기들 각각의 출력 인덱스는 log2(T)+m 개의 비트들을 갖고, 상기 출력 인덱스의 log2(T) 개의 최상위 비트들은 상기 T 개의 타일들 중 하나를 포인팅하도록 사용되고 상기 출력 인덱스의 m 개의 최하위 비트들은 메모리 판독 어드레스로서 사용되고, m, N, T 및 M은 양의 정수 값들인, 시스템 온-칩.
  11. 제 1 항에 있어서,
    상기 중앙 재구성가능 상호연결 패브릭은 M 개의 구성가능 N×T 네트워크들을 포함하는, 시스템 온-칩.
  12. 제 11 항에 있어서,
    상기 N×T 네트워크들 각각은 크로스바 및 구성가능 버터플라이 중 하나인, 시스템 온-칩.
  13. 제 1 항에 있어서,
    상기 출력 재구성가능 상호연결 패브릭은 T 개의 구성가능 1×N 디-멀티플렉서들을 포함하는, 시스템 온-칩.
  14. 제 1 항에 있어서,
    상기 N개의 룩업 경로들의 룩업 경로와 연관된 N 개의 출력 결과 수집기들 중 하나는 상기 룩업 경로에 대해 할당된 타일들로부터 결과들을 수집하도록 구성되고 상기 할당된 타일들에 의해 출력된 결과들로부터 하나의 최종 결과를 선택하도록 구성되는, 시스템 온-칩.
  15. 제 1 항에 있어서,
    상기 T 개의 타일들 각각에 대한 히트 결과는 해당 타일의 메모리들 내의 사전-프로그램된 키들과 해당 타일의 입력 키 사이의 키 매칭 결과들에 기초하는, 시스템 온-칩.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
KR1020140191978A 2013-12-27 2014-12-29 다수의 공유된 메모리들을 사용하는 재구성가능한 병렬 룩업을 위한 방법 및 시스템 KR102391602B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/142,511 2013-12-27
US14/142,511 US9620213B2 (en) 2013-12-27 2013-12-27 Method and system for reconfigurable parallel lookups using multiple shared memories

Publications (2)

Publication Number Publication Date
KR20150077372A KR20150077372A (ko) 2015-07-07
KR102391602B1 true KR102391602B1 (ko) 2022-04-27

Family

ID=53482550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140191978A KR102391602B1 (ko) 2013-12-27 2014-12-29 다수의 공유된 메모리들을 사용하는 재구성가능한 병렬 룩업을 위한 방법 및 시스템

Country Status (6)

Country Link
US (6) US9620213B2 (ko)
JP (1) JP6594624B2 (ko)
KR (1) KR102391602B1 (ko)
CN (1) CN104951494B (ko)
HK (1) HK1210843A1 (ko)
TW (1) TWI659303B (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9413357B2 (en) 2014-06-11 2016-08-09 Cavium, Inc. Hierarchical statistically multiplexed counters and a method thereof
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9813327B2 (en) 2014-09-23 2017-11-07 Cavium, Inc. Hierarchical hardware linked list approach for multicast replication engine in a network ASIC
US10616144B2 (en) 2015-03-30 2020-04-07 Cavium, Llc Packet processing system, method and device having reduced static power consumption
US10496543B2 (en) * 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US10305799B2 (en) * 2016-08-17 2019-05-28 Cisco Technology, Inc. Re-configurable lookup pipeline architecture for packet forwarding
GB2569844B (en) * 2017-10-20 2021-01-06 Graphcore Ltd Sending data off-chip
CN108306835B (zh) * 2018-01-23 2021-05-04 中国航空工业集团公司洛阳电光设备研究所 一种以太网交换机的输入缓存及数据转发方法
CN109039911B (zh) * 2018-07-27 2021-02-26 烽火通信科技股份有限公司 一种基于hash查找方式共享ram的方法及系统
CN113519144B (zh) * 2019-01-10 2023-06-27 马维尔以色列(M.I.S.L.)有限公司 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找
US11922032B1 (en) 2021-03-31 2024-03-05 DreamBig Semiconductor Inc. Content relocation and hash updates in algorithmic TCAM

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011078108A1 (ja) 2009-12-21 2011-06-30 日本電気株式会社 マルチプロセッサ環境におけるパターンマッチング方法、及び装置
US20130279231A1 (en) 2011-03-22 2013-10-24 Netlogic Microsystems, Inc. Power Limiting in a Content Search System

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929939A (en) 1988-10-31 1990-05-29 International Business Machines Corporation High-speed switching system with flexible protocol capability
US5319347A (en) 1992-04-30 1994-06-07 Sgs-Thomson Microelectronics, Inc. Parallelized magnitude comparator for comparing a binary number to a fixed value
JP3703518B2 (ja) * 1995-03-30 2005-10-05 川崎マイクロエレクトロニクス株式会社 連想メモリシステム
US6667984B1 (en) 1998-05-15 2003-12-23 Polytechnic University Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing
JP2001024641A (ja) 1999-07-06 2001-01-26 Nec Corp クロスバー型スイッチのアービタにおける接続許可システム及び方法
US20030093613A1 (en) * 2000-01-14 2003-05-15 David Sherman Compressed ternary mask system and method
DE60026229T2 (de) 2000-01-27 2006-12-14 International Business Machines Corp. Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
US6831917B1 (en) 2000-05-10 2004-12-14 Cisco Technology, Inc. Network address translation for multicast virtual sourcing
US7075926B2 (en) 2000-05-24 2006-07-11 Alcatel Internetworking, Inc. (Pe) Programmable packet processor with flow resolution logic
JP2002198430A (ja) 2000-12-26 2002-07-12 Nec Microsystems Ltd 駆動力可変ブロックおよびこれを用いたlsi設計方法
JP4489308B2 (ja) 2001-01-05 2010-06-23 富士通株式会社 パケットスイッチ
EP1530763B1 (en) * 2002-08-10 2018-04-18 Cisco Technology, Inc. Associative memory with enhanced capabilities
US7461167B1 (en) 2002-11-22 2008-12-02 Silicon Image, Inc. Method for multicast service in a crossbar switch
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
EP1553738A1 (en) 2004-01-12 2005-07-13 Thomson Licensing S.A. Method and apparatus for generating data packets
US7085907B2 (en) 2004-02-17 2006-08-01 International Business Machines Corporation Dynamic reconfiguration of memory in a multi-cluster storage control unit
KR100603567B1 (ko) 2004-09-02 2006-07-24 삼성전자주식회사 스위치에서의 대역폭 예약을 통한 QoS 보장 방법 및 그시스템
US20060059269A1 (en) 2004-09-13 2006-03-16 Chien Chen Transparent recovery of switch device
US20060140126A1 (en) 2004-12-27 2006-06-29 Intel Corporation Arbitrating virtual channel transmit queues in a switched fabric network
JP4779955B2 (ja) 2006-01-06 2011-09-28 富士通株式会社 パケット処理装置及びパケット処理方法
US8112622B2 (en) 2006-12-08 2012-02-07 Broadcom Corporation Chaining port scheme for network security
TW200832408A (en) * 2007-01-19 2008-08-01 Univ Nat Chiao Tung Hierarchical search line with internal storage irrelevant entry control
US8259715B2 (en) 2007-07-25 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for traffic load balancing to multiple processors
US8054744B1 (en) 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
CN101965742A (zh) 2008-03-12 2011-02-02 艾利森电话股份有限公司 Mbsfn系统中改进的小区重选
WO2009133918A1 (ja) 2008-04-30 2009-11-05 日本電気株式会社 ルータ、そのルータを有する情報処理装置及びパケットのルーティング方法
JP4784786B2 (ja) 2009-03-27 2011-10-05 日本電気株式会社 クロック分配回路及びクロックスキュー調整方法
US8938268B2 (en) * 2009-11-24 2015-01-20 Qualcomm Incorporated Method and apparatus for facilitating a layered cell search for Long Term Evolution systems
US9077669B2 (en) * 2010-06-14 2015-07-07 Dynamic Invention Llc Efficient lookup methods for ternary content addressable memory and associated devices and systems
CN102724101B (zh) 2011-03-29 2015-01-21 华为技术有限公司 报文转发方法及系统与中继代理设备
EP2715601A1 (en) 2011-06-01 2014-04-09 Security First Corp. Systems and methods for secure distributed storage
US8954700B2 (en) * 2011-08-02 2015-02-10 Cavium, Inc. Method and apparatus for managing processing thread migration between clusters within a processor
US9159420B1 (en) * 2011-08-16 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for content addressable memory parallel lookup
WO2013054497A1 (ja) 2011-10-14 2013-04-18 パナソニック株式会社 中継器、中継器の制御方法、およびコンピュータプログラム
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US9674114B2 (en) 2012-02-09 2017-06-06 Intel Corporation Modular decoupled crossbar for on-chip router
US9225635B2 (en) 2012-04-10 2015-12-29 International Business Machines Corporation Switch routing table utilizing software defined network (SDN) controller programmed route segregation and prioritization
US20140153443A1 (en) 2012-11-30 2014-06-05 International Business Machines Corporation Per-Address Spanning Tree Networks
CN104022960B (zh) 2013-02-28 2017-05-31 新华三技术有限公司 基于OpenFlow协议实现PVLAN的方法和装置
US20140369363A1 (en) 2013-06-18 2014-12-18 Xpliant, Inc. Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree
CN103347013B (zh) 2013-06-21 2016-02-10 北京邮电大学 一种增强可编程能力的OpenFlow网络系统和方法
US9590914B2 (en) 2013-11-05 2017-03-07 Cisco Technology, Inc. Randomized per-packet port channel load balancing
US9973599B2 (en) 2013-12-04 2018-05-15 Mediatek Inc. Parser for parsing header in packet and related packet processing apparatus
US9363178B2 (en) 2013-12-18 2016-06-07 Telefonaktiebolaget L M Ericsson (Publ) Method, apparatus, and system for supporting flexible lookup keys in software-defined networks
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9825884B2 (en) * 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
CN104010049B (zh) 2014-04-30 2017-10-03 易云捷讯科技(北京)股份有限公司 基于sdn的以太网ip报文封装方法及网络隔离和dhcp实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011078108A1 (ja) 2009-12-21 2011-06-30 日本電気株式会社 マルチプロセッサ環境におけるパターンマッチング方法、及び装置
US20130279231A1 (en) 2011-03-22 2013-10-24 Netlogic Microsystems, Inc. Power Limiting in a Content Search System

Also Published As

Publication number Publication date
US9952799B2 (en) 2018-04-24
US9620213B2 (en) 2017-04-11
TW201602782A (zh) 2016-01-16
TWI659303B (zh) 2019-05-11
US10782907B2 (en) 2020-09-22
US11435925B2 (en) 2022-09-06
KR20150077372A (ko) 2015-07-07
US20210034269A1 (en) 2021-02-04
HK1210843A1 (en) 2016-05-06
JP2015172925A (ja) 2015-10-01
US20170242619A1 (en) 2017-08-24
US20180203639A1 (en) 2018-07-19
US9952800B2 (en) 2018-04-24
US20150187419A1 (en) 2015-07-02
US20170242618A1 (en) 2017-08-24
CN104951494B (zh) 2019-08-09
JP6594624B2 (ja) 2019-10-23
CN104951494A (zh) 2015-09-30
US20220404995A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
KR102391602B1 (ko) 다수의 공유된 메모리들을 사용하는 재구성가능한 병렬 룩업을 위한 방법 및 시스템
US9032143B2 (en) Enhanced memory savings in routing memory structures of serial attached SCSI expanders
US7865654B2 (en) Programmable bridge header structures
CN104871145A (zh) 网络设备中的存储器共享
US7346750B2 (en) Memory interleave system
TW201445921A (zh) 用於在網路交換機中利用集中式記憶體池的表搜索的裝置和方法
JP4348093B2 (ja) マップテーブルを用いてメモリにインタリーブ方式でアクセスする方法
US20140358886A1 (en) Internal search engines architecture
JP2011523334A (ja) 検索のためのカスケード型メモリテーブル
US10430353B2 (en) Memory device performing near-data processing using a plurality of data processing engines that independently perform data processing operations, and system including the same
US10469368B2 (en) Distributed routing table system with improved support for multiple network topologies
US20120303848A1 (en) System and method for allocating transaction id in a system with a plurality of processing modules
WO2024078006A1 (zh) 芯片的地址重构方法、装置以及电子设备、存储介质
KR101690568B1 (ko) 네트워크 온 칩 소켓 프로토콜
JP4445708B2 (ja) マップテーブルを使用して入出力モジュールにアクセスする方法
US9471538B2 (en) Network on a chip socket protocol
TWI629887B (zh) 具有由多個封包處理引擎共用的本地查閱資料表的可重新配置的互連元件
CN105593832B (zh) 用于支持交叉存取的存储器区域的使用的方法和装置
WO2015055826A1 (en) Method and apparatus for use with different memory maps
Bell Service-Oriented Life Cycle Modeling: The Shift from Web Services to Enterprise Services

Legal Events

Date Code Title Description
N231 Notification of change of applicant
N231 Notification of change of applicant
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant