KR20050106591A - 재구성가능 의미처리기 - Google Patents

재구성가능 의미처리기 Download PDF

Info

Publication number
KR20050106591A
KR20050106591A KR1020057013618A KR20057013618A KR20050106591A KR 20050106591 A KR20050106591 A KR 20050106591A KR 1020057013618 A KR1020057013618 A KR 1020057013618A KR 20057013618 A KR20057013618 A KR 20057013618A KR 20050106591 A KR20050106591 A KR 20050106591A
Authority
KR
South Korea
Prior art keywords
parser
data
generation rule
symbol
semantic code
Prior art date
Application number
KR1020057013618A
Other languages
English (en)
Inventor
솜수브라 식다르
Original Assignee
미슬토우 테크놀로지즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 미슬토우 테크놀로지즈, 인코포레이티드 filed Critical 미슬토우 테크놀로지즈, 인코포레이티드
Publication of KR20050106591A publication Critical patent/KR20050106591A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Devices For Executing Special Programs (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

데이터 처리기들 및 그것들의 구성을 위한 방법들이 개시된다. 전통적인 폰노이만(von Neumann) 마이크로프로세서들과는 대조적으로, 개시된 처리기들은 의미 처리기들이며 입력 스트림을 구문분석(parse)하고 하나 이상의 실행엔진들에 지시하여 구문분석된 것에 의존하여 코드세그먼트들을 실행하게 한다. 패킷데이터스트림들과 같은 정의된 구조의 입력 스트림들에 대해, 이러한 의미 처리기들은 폰 노이만 시스템에 비해 경제적이고 빠를 수 있다. 수개의 옵션 구성요소들이 기기 동작을 증대시킬 수 있다. 예를 들어, 기계 문맥(context) 데이터 인터페이스는 관리용 물리 메모리로부터 의미 실행엔진들을 제거하며, 다수의 엔진들에 의해 메모리에의 순서 있는 액세스를 가능케 하고, 공통 액세스 동작들을 수행한다. 게다가, 간단한 폰노이만 예외처리유닛은 의미 실행엔진에 부착되어 더 복잡하지만 덜 빈번하거나 시간이 중요하지 않은 동작들을 실행할 수 있다.

Description

재구성가능 의미처리기{A reconfigurable semantic processor}
본 발명은 대체로 디지털 처리기들 및 처리에 관한 것으로, 더 구체적으로는 데이터스트림 처리용 디지털 의미(semantic) 처리기에 관한 것이다.
전통적인 프로그램가능 컴퓨터들은 폰 노이만(von Neumann), 또는 VN 아키텍처를 이용한다. VN 아키텍처는 그것의 간단한 형태가 중앙처리부(CPU) 및 부착 메모리를 포함하고, 통상 어떤 형태의 입력/출력을 가져 유용한 동작들을 할 수 있게 한다. 예를 들어, 도 1은 CPU(30), 메모리제어기(40), 메모리(50), 및 입력/출력(I/O)기기들(60)을 포함하는 컴퓨터(20)를 보여준다. CPU(30)는 주소/제어버스(42)를 통해 메모리제어기(40)에 데이터요구들을 송신하며, 데이터 자체는 데이터버스(44)를 통과한다. 메모리제어기(40)는 메모리(50) 및 I/O기기들(60)과 통신하여 CPU(30)에 의해 요청된 대로(또는 아마도 I/O기기들에 의해) 데이터 읽기 및 쓰기를 수행한다. 보이진 않았지만, 각종 기기들에는 CPU를 "인터럽트"하고 CPU가 태스크들을 전환하게 하는 능력이 존재한다.
VN 기계에서, 메모리(50)는 프로그램 명령어(instruction)들과 데이터를 저장한다. CPU(30)는 메모리로부터 프로그램명령어들을 가져오고 그 속에 들어 있는 명령(command)들을 실행하는데, 전형적인 명령어들은 CPU에 지시하여 CPU가 메모리로부터 레지스터로 데이터를 로드하거나, 데이터를 메모리로부터 레지스터에 쓰거나, 그것의 기판상의 레지스터들에 있는 데이터를 이용하여 산술 또는 논리연산을 수행하거나, 또는 다른 명령어로 분기하여 실행을 계속하게 한다. 이해될 수 있는 바와 같이, CPU(30)는 데이터버스(44)를 통해 명령어들을 가져오거나, 데이터를 가져오거나, 또는 데이터를 기록하는데 다량의 시간을 소비한다. 유용하며 파이프라이닝을 구현하고 평균 메모리 사이클시간을 감소시킬지도 모를 데이터 및 명령어들을 캐시하기 위해 정교한(그리고 통상 값비싼) 체계들(schemes)이 구현될 수 있음에도 불구하고, 데이터버스(44)는 궁극적으로 처리기 성능에 대한 병목이다.
VN 아키텍처는 게이트 로직에 비해 매력적인데, 그것은 VN 아키텍처가 "범용(general-purpose)"으로 만들어질 수 있고 비교적 신속히 재구성될 수 있고, 단지 프로그램 명령어들의 새로운 집합을 로딩함으로써, 매우 복잡한 기능들조차도 주어진 충분한 시간에 수행할 수 있도록 VN 기계의 기능이 변경될 수 있기 때문이다. VN 아키텍처의 유연성에 대한 흥정대상(tradeoff)은 복잡성과 비효율성이다. 따라서 거의 무엇이든지 할 수 있는 능력은 소수의 간단한 것들을 효율적으로 할 수 있는 능력을 희생하여 이루어진다.
본 발명은 다음의 도면들을 참조하여 개시내용을 읽음으로써 가장 잘 이해될 것이다:
도 1은 전형적인 폰 노이만 기계를 위한 블록도를 담고 있고;
도 2는 본 발명의 출원인에 의해 이전에 특허된 예측 파서 패턴 인식기를 위한 블록도를 담고 있고;
도 3은 이 발명의 실시형태에 따른 의미 처리기를 블록형태로 도시하며;
도 4는 이 발명의 실시형태들에 유용한 하나의 가능한 파서 테이블 구조를 보여주며;
도 5는 이 발명의 실시형태들에 유용한 하나의 가능한 생성규칙 테이블 구성을 보여주며;
도 6은 본 발명의 실시형태들에 유용한 직접실행 파서(DXP)를 위한 하나의 구현예를 블록 형태로 도시하며;
도 7은 도 6에 보인 DXP의 동작을 위한 흐름도를 담고 있고;
도 8은 이 발명의 실시형태에 따른 재구성가능 의미처리기를 위한 블록도를 보여주며;
도 9는 이 발명의 실시형태들에 유용한 의미(semantic)코드 실행엔진의 블록구성을 보여주며;
도 10은 주소분석프로토콜(Address Resolution Protocol; ARP) 패킷의 포맷을 보여주며; 그리고
도 11은 콘텐츠 주소지정가능 메모리(Content-Addressable Memory; CAM)를 이용한 대체 파서테이블 구현예를 도시한다.
서비스 중인 또는 서비스가 거의 임박한 많은 디지털 기기들은 패킷 처리기들의 일반 범주에 속한다. 달리 말하면, 이러한 기기들은 예컨대, 케이블, 섬유, 또는 무선 네트워크 또는 점-대-점 연결, 백플레인(backplane) 등을 통해 패킷들을 이용하여 다른 기기 또는 기기들과 통신한다. 많은 이러한 기기들에서, 수신된 데이터로 행해지는 일은 간단하나, 패킷 프로토콜과 패킷 처리는 특용(special-purpose) 하드웨어의 설계를 보증하기에 너무 복잡하다. 대신, 이러한 기기들은 VN 기계를 이용하여 프로토콜들을 구현한다.
여기서 다른 매력적인 접근법이 패킷 처리기들에 대해 존재하며, 하나의 접근법은 더 일반적으로는 재구성가능 의미 처리기(RSP)로서 기재될 수 있다는 것이 인지된다. 이러한 기기는, 그것의 프로세싱이 그것의 "프로그래밍"에 의존하므로, 바람직하게는 VN 기계처럼 재구성가능하지만, 나중에 보일 것처럼 이 프로그래밍은 VN 기계에 의해 사용되는 기존의 기계코드와는 다르다. VN 기계는 각종 데이터 상태들을 순차적으로 점검하는 한 세트의 기계명령어들을 실행하는 반면, RSP는 입력 스트림의 의미론(semantics)에 직접 반응한다. 달리 말하면, RSP가 실행하는 "코드"는 그것의 입력에 의해 선택된다. 따라서 패킷 입력의 경우, 정의된 문법을 가져, RSP는 이상적으로는 고속이고 효율적인 패킷 프로세싱에 적합하다.
여기에 기재된 일부 실시형태들은 네트워크 문법의 프로토콜들의 직접 실행을 드라이브하는 테이블기반(table-driven) 예측 파서, 예컨대, LL(최좌측 생성물(production)을 식별함으로써 좌측에서 우측으로 구문분석하는) 파서를 이용한다. 다른 구문분석(파싱) 기법들, 예컨대, 재귀하향식(recursive descent), LR(최우측 생성물을 식별함으로써 좌측에서 우측으로 구문분석함), 및 LALR(예견능력 LR)은 본 발명의 실시형태들에 사용될 수도 있다. 각 경우에, 파서는 마이크로명령어 코드세그먼트들을 간단한 실행유닛 상에 론칭(launching)함으로써 그것의 입력에 응답한다. 테이블들이 다시쓰기 가능한 저장부에 위치될 때, RSP는 쉽사리 재구성가능할 수 있고, 따라서 단일 RSP 설계가 다양한 응용들에 유용할 수 있다. 많은 응용들에서, 전체 RSP는 그것의 동작에 필요한 테이블들을 포함하여, 단일의 저가, 저전력 집적회로로 구현될 수 있다.
다수의 선택사항적 특징들은 이러한 기기의 유용성을 증가시킬 수 있다. 한 뱅크의 실행유닛들이 다른 태스크들을 실행하는데 사용될 수 있어 병렬 프로세싱을 할 수 있다. 본래 작은 VN 기계일 수 있는 예외유닛은 예컨대 복잡하지만 덜 빈번하거나 심각한 시간압박이 없는 태스크들을 수행하기 위해 연결되어 사용될 수 있다. 그리고 기계-문맥 메모리 인터페이스들은 실행유닛들에 이용가능하게 만들어질 수 있고, 그래서 실행유닛들은 메모리유닛들의 기본 포맷을 이해해야만 하는 것은 아니고, 따라서 실행유닛들에 의해 실행되는 코드를 크게 단순화한다.
본 출원의 발명자는 1999년 6월 29일자로 발행된 미국특허번호 제5,916,305호의 "예측 파서들을 이용한 데이터통신에서의 패턴 인식"이란 명칭의 이전의 특허의 공동 발명자이다. '305특허에 기재된 기기 전체는 본 발명과는 꽤 다르지만, 네트워크 프로토콜과 연계되는 기본적인 예측 파서(parser)를 패턴 정합기(matcher)로서 사용하는 것은 개괄적인 도입으로서는 유익하다.
도 2는 '305특허에 기재된 기기(80)의 블록도를 보여준다. 의미엔진(82)은 패킷(70)을 읽고, 값들인 패킷 데이터옥텟들을 예측파서(84)에 넘겨준다. 예측파서(84)는 자신에게 넘어온 각 값(옥텟)을 검사한다. 먼저, 파서(84)는 이 값과 이 값 위치의 패킷(70) 시작위치로부터의 오프셋을 파서테이블(88)에 대한 인덱스로서 이용하여 테이블 룩업(lookup)을 수행한다. 파서테이블(88)은, 값 및 오프셋의 각 조합에 대해, 4개의 가능한 값들, 즉, 그 오프셋의 값을 받아들임을 의미하는 'A', 값 및 오프셋의 조합이 고려되지 않음을 의미하는 "D", 오프셋의 값이 인식하려는 패턴의 부분이 아니므로 실패를 의미하는 "F", 및 최종 심벌을 위한 "$" 중의 하나를 저장한다.
파서 스택(86)은 단어의 일반적인 의미에서는 (또는 간단히 기재하려는 발명의 실시형태들에 적용될 때) 진짜 "스택(stack)"이 아니고, 그것은 단순히 파서(84)가 정합을 시도하는 각 "필터"를 위해 상태변수를 유지한다. 각 상태변수는 엔트리상태로 초기화된다. 각 값 및 오프셋에 대해 테이블 엔트리들이 뒤이어 반환되므로, 스택은 각 스택변수를 갱신한다. 예를 들어, 'A'가 스택변수를 위해 반환된다면, 그 스택변수는 엔트리상태로부터 부분 정합(일치) 상태로 이동한다. 'F'가 반환된다면, 그 스택변수는 엔트리상태 또는 부분정합상태로부터 실패상태로 이동한다. 'D'가 반환된다면, 그 스택변수는 그것의 현재상태를 유지한다. 그리고 상태변수가 엔트리상태 또는 부분정합상태에 있는 동안 '$'가 반환된다면, 상태변수는 일치상태로 전이한다.
일단 의미엔진(82)이 모든 패킷값들을 예측파서(84)에 넘겼다면, 파서(84)는 파서 스택상태들에 기초하여 정합값을 반환한다. 그러면 의미엔진(82)은 정합(match)의 성공 또는 실패에 의존하여 약간의 출력동작을 취한다. 파서는 기기 기능을 제어하거나 조정(coordinate)하지 않고, 대신 단순히 더 큰 시스템에 대한 보조 패턴정합기로서 역할을 한다. 구별하려는 각각의 가능한 패턴은 파서테이블에 새로운 열(column)을 요구하고, 그래서 하드웨어 구현시 기기(80)는 제한된 수의 입력패턴들만을 정합할 수 있다. 그리고 파서테이블 행(row)은 입력옥텟 위치가 정합 결과에 영향을 주지 않을 수 있는 경우에도 각 입력옥텟 위치에 대해 요구된다.
여기에 기재된 실시형태들은 확실히 다른 접근법을 데이터 프로세싱에 대해 취한다. 도 3은 본 발명의 실시형태에 따른 의미처리기(100)를 보여준다. 특정 입력패턴을 특정의 저장된 패턴들에 단순히 정합시키기보다는, 의미처리기(100)는 입력패킷들의 처리를 제어하는 직접실행 파서(DXP; 200)를 담고 있다. DXP(200)는 입력포트(102)에 수신된 데이터를 구문분석하므로, 입력에 응답하여 실제 문법 생성물들을 확장하고 실행하며, 문법이 실행될 때, 의미코드실행엔진(SEE; 300)에 지시하여 입력의 세그먼트들을 처리하거나, 다른 동작들을 수행하게 한다.
이 구조는 기계 문맥 태스크들을 실행엔진에 할당하는 매우 복잡한 문법 파서를 가져, 데이터가 요구할 때, 유연하고 강력하다. 바람직한 실시형태들에서, 의미처리기는 재구성가능하고, 따라서 고도의 오버헤드 없이 VN 기계의 매력을 가진다. 의미처리기는 주어진 입력에만 응답하기 때문에, 그것은 VN 기계보다 작은 명령어 집합으로도 효율적으로 동작가능하다. 의미처리기가 기계 문맥에서의 처리를 가능케 하기 때문에 명령어 집합 역시 유익하다.
의미처리기(100)는 적어도 3개의 테이블들을 이용한다. SEE(300)를 위한 코드세그먼트들은 의미코드 테이블(160)에 저장된다. 복잡한 문법 생성규칙들은 생성규칙테이블(140)에 저장된다. 그러한 생성규칙들을 검색하기 위한 코드들은 파서테이블(120)에 저장된다. 파서테이블(120)에 있는 코드들 역시 DXP(200)가 주어진 생성규칙에 대해 의미코드테이블(160)로부터의 코드세그먼트가 SEE(300)에 의해 로드되고 실행될 수 있는지를 검출할 수 있게 한다.
본 발명의 일부 실시형태들은 도 3에 보인 것들보다 훨씬 많은 구성요소들을 포함하지만, 이러한 필수 구성요소들은 시스템 또는 소프트웨어 실시형태마다 보여진다. 따라서, 도 3의 각 블록의 설명은 더 복잡한 실시형태들이 다루어지기 전에 주어질 것이다.
도 4는 파서테이블(120)에 관한 전체 블록도를 보여준다. 생성규칙코드 메모리(122)는 테이블 값들을, 예컨대, 행렬포맷으로 저장한다. 이 테이블의 행들은 비말단(non-terminal) 코드에 의해 인덱스 된다. 테이블의 열들은 입력데이터값들에 의해 인덱스 된다.
실용상, 많은 다른 문법들을 위한 코드들이 생성규칙코드 메모리(122) 내에 동시에 존재할 수 있다. 예를 들어, 보인 바와 같이, 한 집합의 코드들은 MAC(Media Access Control) 패킷 헤더포맷 구문분석에 적합하고, 다른 집합들의 코드들은 주소분석프로토콜(ARP) 패킷 처리, 인터넷프로토콜(IP) 패킷 처리, 전송제어프로토콜(TCP) 패킷 처리, 실시간전송프로토콜(RTP) 패킷 처리 등에 적합할 수 있다. 비말단 코드들은 생성규칙코드 메모리(122)에 임의의 특정 순서로 할당될 필요가 없고 도시된 바의 특정 프로토콜에 적합한 블록들로 할당될 필요도 없다.
주소지정기(124)는 비말단(NT) 코드들과 데이터값들을 DXP(200)로부터 수신한다. 주소지정기(124)는 [NT코드, 데이터값] 쌍들을 생성규칙코드 메모리(122) 내의 물리위치에 옮기며, 그 위치에 저장된 생성규칙(PR)코드를 검색하고, 그 PR코드를 DXP에 반환한다. 개념적으로는 생성규칙코드 메모리(122)의 구조를 NT코드 및 데이터값의 각각의 유일한 조합을 위해 저장된 하나의 PR코드를 갖는 매트릭스로 간주하는 것이 종종 유용하지만, 본 발명은 그렇게 한정되지는 않는다. 다른 메모리유형들 및 메모리구성이 다른 응용들에 적합할 수 있다(그 중 하나는 도 11에 도시됨).
파서테이블(120)은 DXP(200) 및 SEE(300)가 하나의 회로에 통합될 때 칩 내에 또는 칩 밖에 위치될 수 있다. 예를 들어, 칩 상에 위치된 정적 RAM은 파서테이블(120)로서 사용될 수 있다. 다르게는, 오프칩(off-chip) DRAM 저장부는 주소지정기(124)가 DRAM을 위한 메모리제어기로서 사용되거나 이 메모리제어기와 통신하여 파서테이블(120)을 저장할 수 있다. 다른 실시형태들에서, 파서테이블은, 온칩 캐시가 파서테이블의 구역(section)을 유지할 수 있게 하여, 오프칩 메모리 내에 위치될 수 있다. 주소지정기(124)는 일부 구현들에는 필요하지 않을 수 있으나, 사용될 때 파서(200)의 부분, 파서테이블(120)의 부분, 또는 중간기능블록이 될 수 있다. 입력스트림 상의 다음 입력값 및 DXP의 파서 스택 상의 다음 값에의 가시성(visibility)을 주소지정기(124)에 제공함으로써, 파서테이블(120)에 대해 예견 능력(look-ahead)을 구현하는 것이 가능함에 유의하자.
도 5는 생성규칙테이블(140)을 위한 하나의 가능한 구현예를 도시한다. 생성규칙메모리(142)는, 예컨대 연속하는 메모리주소들의 널 종료형(null-terminated) 체인들과 같은, 말단 및 비말단 심벌들의 실제 생성규칙 시퀀스들을 저장한다. 주소지정기(144)는 DXP(200)로부터 또는 파서테이블(120)로부터 직접 PR코드들을 수신한다.
생성규칙들이 다양한 길이들을 가질 수 있으므로, 메모리(142)에의 용이한 인덱싱을 가능케 하는 접근법을 취하는 것이 바람직하다. 하나의 접근법에서, PR코드는 생성규칙의 물리적 메모리시작주소를 결정하기 위해 산술적으로 처리될 수 있다(이것은 가능하고, 예를 들어, 생성규칙들이 확장된 길이만큼 저장되었다면, PR코드들은 규칙의 저장된 위치에 따라 할당되었다). 일부 응용들에서 PR코드를 불필요하게 길게 만들기는 하지만, PR코드는 실제 PR시작주소일 수 있다. 도 5에 보인 접근법에서, 포인터테이블(150)에는 각 PR코드를 위한 PR시작주소가 거주할 수 있다. 주소지정기(144)는 PR코드를 주소로서 이용하여 포인터테이블(150)에 질의함으로써 생성규칙을 검색할 수 있다. 포인터테이블(150)은 PR시작주소(PR_ADD)를 반환한다. 그러면 주소지정기(144)는 이 시작주소를 이용하여 생성규칙 메모리(142)로부터 PR데이터를 검색한다. 주소지정기(144)는 시작주소를 증가시키고 널(NULL) 문자가 검출될 때까지 PR데이터를 계속 검색한다.
도 5는 테이블(150)에서 의미코드(SC) 시작주소를 저장하는데 사용되는 제2열을 보여준다. DXP(200)가 PR코드로써 주소지정기(144)에 질의하는 경우, 이 주소지정기는 대응하는 생성규칙을 반환할 뿐만 아니라, 수행하려는 SEE태스크를 위한 SC시작주소도 반환한다. 주어진 생성규칙에 대해 SEE태스크가 필요하지 않은 경우, SC시작주소는 널(NULL) 주소로 설정된다.
도 6은 DXP(200)를 위한 하나의 가능한 블록 구현예를 보여준다. 파서제어 유한상태기계(FSM; 210)는 도 6의 다른 로직블록들로부터의 입력들에 기초하여 전체 DXP동작을 제어하고 순서를 결정한다. 스택핸들러(220)와 스택(222)은 DXP(200)에 의해 실행되는 생성규칙들을 저장하고 순서를 결정한다. 파서테이블 인터페이스(230)는 DXP(200)가 부착된 파서테이블로부터 PR코드들을 검색할 수 있게 한다. 생성규칙테이블 인터페이스(240)는 DXP(200)가 부착된 생성규칙 테이블로부터 생성규칙들을 검색할 수 있게 한다. 그리고 S-코드테이블 인터페이스(250)는 DXP(200)가 생성규칙들에 관련된 의미코드세그먼트들의 메모리 위치를 식별할 수 있게 한다(도시된 실시형태에서, 인터페이스들(240 및 250)은 부분적으로 결합된다).
입력스트림 시퀀스 제어부(260) 및 레지스터(262)는 Si-버스로부터 입력데이터심벌들을 검색한다. 비교기(270)는 입력심벌들을 파서스택(222)으로부터의 심벌들과 비교한다. 끝으로, SEE인터페이스(280)는 Sx-버스 상에서 DXP(200)와 통신하는 하나 이상의 SEE들에 태스크들을 디스패치하는데 사용된다.
도 6의 블록들의 기본 동작이 도 7의 흐름도를 참조하여 이제 설명될 것이다. 각 구문분석사이클의 개시 시에(흐름 블록 400), 스택핸들러(220)는 스택상단포인터(psp)에 의해 포인터된 생성심벌(pX)을 검색한다. 생성심벌(pX)은 2개의 구성 부분들인 접두어(p)와 심벌(X)로 분할된다. 접두어(p)는 2비트의 접두어를 위한 다음의 맵핑에 따라 심벌(X)의 유형을 코딩한다.
접두어 값(p) 심벌(X)의 유형
00 무효심벌
01 비말단 심벌
10 말단 심벌
11 무정의 말단 심벌; 임의의 입력심벌 정합
무정의 말단 심벌의 접두어 대신, 이 접두어는 마스크된 말단 심벌을 나타낼 수 있다. 마스크된 말단 심벌은 입력심벌에 대해 비트마스크의 상술(specification)을 가능케 한다. 즉, 말단 심벌의 일부(또는 모든) 비트들이 무정의(don't care) 비트들이다. 마스크된 말단 심벌 구조는 예컨대, 많은 네트워크 프로토콜들에서 발생하는 패킷플래그 필드들을 구문분석 하기에 유용할 수 있다.
또한 입력스트림 시퀀스 제어부(260)는 입력포인터(ip)에 의해 포인팅되는 현재의 입력스트림값들을 aReg레지스터(262)에 로드한다. 이 단계는 이전의 구문분석 사이클이 입력포인터(ip)를 전진시키지 않는다면 필요하지 않다.
파서제어 FSM(210)은 스택핸들러(220)로부터 접두어코드(p)를 수신할 때, 3개의 가능한 논리경로들 중의 어느 것이 이 구문분석사이클을 위해 취해져야 할 지를 결정한다(흐름 블록 402). X가 말단 심벌임을 접두어코드가 나타낼 때, 경로(410)가 취해진다. X임의의 입력심벌과 일치함을 접두어코드가 나타낼 때, 경로(420)가 취해진다. X가 비말단 심벌임을 접두어코드가 나타낼 때, 경로(430)가 취해진다. 이제 각 경로에 관련한 처리가 설명될 것이다.
경로(410)가 취해질 때, 파서제어 FSM(210)은 비교기(270)에 의해 공급된 심벌정합신호(M)에 기초하여 다른 경로 분기를 만든다. 비교기(270)는 입력심벌(a)과 스택심벌(X)을 비교하며, 두 개가 동일하다면, 신호(M)가 표명(assertion)된다. 마스크된 말단 심벌들이 허용되고 마스크된 말단 심벌이 공급된다면, 비교기(270)는 신호(M)가 마스크되지 않은 스택심벌 비트들에만 의존하도록 마스크를 적용한다.
특정 입력심벌이 예측되나 발견되지 않는 경우, 파서제어 FSM(210)은 블록(414)에서 오류복구모드에 들어간다. 일반적으로, 오류복구는 입력으로부터 패킷의 나머지를 (예컨대, 정합이 검출되기까지 입력과 프레임끝(EOF) 심벌을 일치시킴으로써) 플러시(flush)되고, 나머지 심벌들을 스택에 팝(pop) 한다. semCode 세그먼트는 잘못된 패킷에 관련된 임의의 기계상태데이터를 깨끗하게 하기 위해 SEE에 디스패치될 수도 있다. 이러한 및 다른 작용들은 오류 시간에 구문분석되는 특정 문법에 의존할 것이다.
a 및 X 간의 정합이 블록(412)에서 발견된다고 가정하면, 추가의 처리가 처리경로(420)에 이어진다.
처리경로(420)는 도 7에서 블록들(422 및 424)로 보인 2개의 태스크들을 달성한다. 먼저, 파서제어 FSM(210)은 스택핸들러(220)에 신호하여 예컨대 스택포인터(psp)를 감소시킴으로써 스택(222)의 현재 값(X)을 팝 한다. 다음으로, 파서제어 FSM(210)은 입력스트림 시퀀스 제어부(260)에 신호하여 입력포인터(ip)를 입력스트림의 다음 심벌로 증가시킨다.
처리경로(430)는 스택(222) 상에 나타나는 비말단 심벌들을 처리한다. 비말단 심벌(X)이 스택의 상단에 도달할 때, 처리블록들(432, 434, 438 및 440)은 비말단 심벌을 그것의 대응하는 생성규칙으로 확장한다. 파서제어 FSM(210)은 먼저 파서테이블 인터페이스(230)에 신호하여 생성규칙코드 y=PT[X,a]를 반환시킨다. y가 유효하지 않다면, 파서제어 FSM(210)은 오류복구(블록 436)를 예컨대 위에서 설명된 바처럼 수행한다.
PR코드(y)가 유효하다고 가정하면, 파서제어 FSM(210)은 스택(222)의 X를 그것의 확장된 생성규칙으로 교체한다. 파서제어 FSM은 생성규칙테이블(PRT) 인터페이스(240) 및 SemCode테이블(SCT) 인터페이스(250)에 신호하여 PR코드(y)를 이용한 룩업을 수행토록 한다. 파서제어 FSM(210)은 또한 스택핸들러(220)에 신호하여 스택(222)의 X의 현재 값을 팝 한다. PRT인터페이스(240)가 생성규칙(PR[y])을 반환할 때, 파서제어 FSM(210)은 스택핸들러(220)에 신호하여 스택(222)에 PR[y]을 푸시(push)한다. 각각의 확장된 생성규칙이 대응하는 길이를 가지므로, 이 길이는 푸시할 때에 고려되어야 한다. 즉, 일부의 확장들은 생성규칙테이블로부터의 다중 심벌 전달을 요구할 수 있다(테이블로부터 스택핸들러까지의 경로폭이 한 심벌 폭보다 클 수 있음은 물론이다).
한편, SCT인터페이스(250)는 생성규칙(PR[y])에 대해 대응하는 SemCode 주소코드(SCT[y])를 반환하고 있다. 이 주소코드(SCT[y])는 PR코드(y)에 대응하는 제1 SemCode 마이크로명령어를 위한 실제 물리주소 또는 SEE가 그 마이크로명령어를 로드할 수 있게 하는 일부 추상(abstraction)을 담고 있을 수 있다. 주소코드(SCT[y])는 어떤 SEE(다중 SEE시스템에서)가 코드세그먼트를 수신해야하는지의 표시와 같은 다른 정보를 담고 있을 수 있다.
파서제어 FSM(210)에 의해 명령될 때, SEE 인터페이스(280)는 SCT[y]를 검사하고 코드세그먼트가 SEE에 디스패치되는 것을 필요로 하는지를 결정한다. 도 7의 판단블록(442)에 의해 보인 것처럼, SCT[y]가 "유효"하지 않다면 마이크로명령어 실행은 불필요하다. 즉, NULL 값이 표현된다. 그렇지 않으면, SEE인터페이스(280)는 SEE가 현재 이용가능한지를 결정한다(판단블록 444). SEE 인터페이스(280)는 세마포어(semaphore) 레지스터(미도시)를 검사하여 SEE 가용성을 결정한다. 특정 SEE가 SCT[y]에 의해 가리켜 진다면, SEE 인터페이스(280)는 그 SEE에 대한 세마포어를 검사한다. 요구된 SEE가 바쁨을 그 세마포어가 나타낸다면, SEE 인터페이스(280)는 그 세마포어가 클리어될 때까지 대기상태(466)에 들어간다. 임의의 SEE가 SemCode 세그먼트를 실행하려고 하면, SEE 인터페이스(280)는 세마포어 클리어로 하나를 간단히 선택할 수 있다.
선택된 SEE에 대해 세마포어가 클리어될 때, SEE 인터페이스(280)는 Sx-버스를 캡처하고 SCT[y]를 선택된 SEE에 송신한다. 선택된 SEE는 자신의 세마포어를 설정하여 자신이 요구를 수신하였음을 나타낸다.
우선 파서제어 FSM(210)이 SEE 인터페이스(280)에 SCT[y]를 디스패치하라고 명령할 때, SEE 인터페이스(280)는 SEE 상태선을 표명해제(deassertion)하여 추가의 구문분석을 중지시킴으로써, SCT[y]가 디스패치될 때까지 파서제어 FSM(210)가 현재의 구문분석 사이클을 빠져나가는 것을 방지한다(확장된 생성규칙(PR[y])의 스택 푸시는 SEE상태선이 표명해제된 동안 병행하여 계속될 수 있다). 일단 SCT[y]가 선택된 SEE에 전달되었다면 DXP(200)가 계속 보류될지는 SCT[y]에 달려 있을 수 있다. 예를 들어, SCT[y]는 대응하는 SemCode세그먼트가 파서제어 FSM(210)에 의한 추가의 구문분석을 얼마나 오랫동안 차단할지를 코딩할 수도 있다. 일 실시형태에서, DXU는, SCT[y]가 디스패치 되자마자; SEE가 자신의 세마포어를 설정하자마자; SEE가 자신의 세마포어를 설정한 후 프로그램가능한 클록사이클 개수 뒤에; 또는 SEE가 자신의 세마포어를 설정하고 클리어하고 나서야 해제될 수 있다. 다르게는, SEE는 이러한 다른 가능성들에 대응하는 다른 세마포어 상태들을 가질 수 있다.
각 파서 사이클의 말미에(도 7의 판단블록 460), 스택핸들러(220)는 스택이 비어있다면 스택 빔(empty) 신호(SE)를 파서제어 FSM(210)에 표명할 것이다. SE신호의 표명 하에, 파서제어 FSM(210)은 그것의 상태들을 리셋하여 다음 입력 패킷의 개시를 기다린다. 그러나, 스택이 비어있지 않는 한, 파서제어 FSM은 블록(400)에 복귀하여 새로운 구문분석 사이클을 개시한다.
도 8은 확장된 능력을 갖는 제2 RSP실시형태(500)를 보여준다. 도 3에 보인 단일 SEE(300) 대신, RSP(500)는 N+1개의 SEE들(300-0 내지 300-N)을 통합하고 있다. 또한 RSP(500)는 수개의 다른 의미 있는 부가사항들인 예외처리부(EPU; 600), 어레이 기계-문맥데이터 메모리(AMCD; 700), 및 가변 기계-문맥데이터 메모리(VMCD; 800)를 담고 있다. 도 8의 각 블록의 기능이 이제 설명될 것이다.
도 9는 SEE(300-0)의 기본 기능블록들을 도시한다. SEE(300-0)의 심장부에는 산술논리부(ALU; 310), 한 세트의 파이프라인 레지스터들(320), 및 SemCode(또는 s-코드) 명령어 디코더(330)가 있다. s-코드 큐(340)는 SEE에 의해 실행되는 마이크로명령어들을 저장한다. 마이크로명령어들 자체는 semCode 테이블(160)에 저장되고 SEE의 S-버스 인터페이스(360)에 의해 수신된다. SEE제어 유한상태기계(FSM; 350)는 도시된 SEE블록들의 동작을 조정한다.
SEE(300-0)는 그것이 Sx-버스 상에서 실행요구를 수신(DXP(200)로부터)하기까지 유휴상태로 있다. SEE제어 FSM(350)은 Sx-버스 상의 트래픽을 검사하며, SEE(300-0)로 향하는 요구를 기다린다(예를 들어, 16개까지의 SEE들은, 각각이 유일한 주소를 갖는 4개의 Sx-버스 주소선들로 주소지정될 수 있다). 요구가 SEE(300-0)에 지시될 때, 이 요구는 예컨대 시작 SemCode 주소를 담고 있다. SEE 제어 FSM(350)은, 이 요구에 응답하여, 그것의 세마포어를 현재 바쁜 상태임을 확인하게끔 설정하고, 또, S-버스 인터페이스(360)에 S-버스에 요구를 드라이브하게 명령하여 수신된 시작 SemCode 주소로 시작하는 마이크로명령어 코드세그먼트를 검색한다.
S-버스 인터페이스(360)는 s-코드 명령어 디코더(330)가 S-코드 명령어들을 필요로 하기 전에 S-코드 명령어들을 큐(340)에 놓는 작업을 한다. S-버스 인터페이스는 S-버스에 액세스하기 위해 다른 SEE의 S-버스 인터페이스들과 경쟁해야 하고, 그러므로 다수의 순차 명령어들을 한 번에 버스트형태로 다운로드하는 것이 유익할 것이다. S-버스 인터페이스(360)는 SEE제어 FSM(350)에 의해 다르게 지시되지 않는 한 s-코드 주소카운터(미도시)를 유지하고 명령어들을 순차적으로 계속 다운로드한다.
S-코드 마이크로명령어 디코더(330)는 DXP에 의해 요구된 코드세그먼트들을 ALU(310) 및 파이프라인 레지스터들(320) 상에서 실행한다. 바람직하게는 명령어 디코더(330) 내에 분기 능력이 존재하지만, 많은 코드세그먼트들은 RSP의 전체 구조 때문에 분기를 적게 필요로 하거나 분기를 필요로 하지 않을 것이다.
ALU(310)는 자신 소유의 레지스터 값들 및/또는 파이프라인 레지스터(320)로부터의 값들을 이용하여 기존의 예컨대 가산, 비교, 시프팅(shifting) 등을 수행하는 능력을 가질 수 있다.
파이프라인 레지스터들(320)은 데이터에 대한 기계-문맥 액세스를 가능케 한다. 표준 CPU와는 대조적으로, 바람직한 SEE 실시형태들은 그것들이 작용하는 데이터를 위해 사용되는 물리적 데이터저장 구조의 개념이 없다. 대신, 데이터에 대한 액세스들은 기계-문맥 트랜잭션 형식을 취한다. 가변(예컨대, 스칼라) 데이터는 V-버스로 액세스되며, 어레이 데이터는 A-버스로 액세스되고, 입력 스트림 데이터는 Si-버스로 액세스된다. 예를 들어, 데이터 문맥(ct) 내의 주어진 위치(offset)에 위치된 길이 m의 옥텟들의 스칼라 데이터 요소를 읽기 위해, 명령어 디코더(330)는 V-버스 인터페이스에 프롬프트하여 버스요구 {read, ct, offset, m}를 발행한다. 문맥(mct)은 RSP의 마스터 문맥을 말하고, 다른 서브문맥들은 통상 RSP가 입력데이터, 이를테면 현재의 TCP 패킷 또는 액티브 세션을 위한 서브문맥을 처리할 때 만들어지거나 파기될 것이다.
일단 파이프라인 레지스터가 명령을 발행하였다면, 그것은 데이터전달처리를 다룬다. 다중 버스전달들이 m개의 옥텟들을 읽거나 쓰기 위해 요구된다면, 파이프라인 레지스터는 트랜잭션을 완료하기까지 추적한다. 일 예로, Si-버스에서부터 파이프라인 레지스터로 6개의 옥텟들을 읽는 제1명령어와 레지스터에서부터 기계-문맥변수로 V-버스를 가로질러 6개의 옥텟들을 쓰는 제2명령어로 된 2개의 마이크로명령어들을 이용하여, 6-옥텟 필드는 스트림입력으로부터 기계-문맥변수에 전달될 수 있다. 레지스터 인터페이스들이 수행한다고 해도 많은 버스데이터 사이클들이 전달을 행하는데 요구된다.
VMCD(800)는 V-버스에서 시작되는 요구들에 소용된다. VMCD(800)는 기계-문맥 가변데이터를 물리 메모리 트랜잭션들로 옮기는 능력을 가진다. 따라서 VMCD(800)는 바람직하게는 기계 문맥 식별자들을 물리적 시작주소들에 참조시키는 번역테이블을 유지하며, 문맥들을 할당 및 할당해제하기 위한 메커니즘을 담고 있고, 주어진 SEE에 의해 문맥들이 잠길 수 있게 하고, 요구된 트랜잭션들이 요구된 문맥의 경계 밖으로 나가지 않는 것을 보장한다. 채용된 실제 저장메커니즘은 응용에 기초하여 변할 수 있어, 메모리는 완전히 내부, 완전히 외부, 이 둘의 조합, 큰 외부메모리를 갖는 캐시 등이 될 수 있다. 주어진 구현예에서, 외부메모리는 AMCD, e-코드테이블, 입력버퍼, 파서테이블, 생성규칙테이블, 및 semCode테이블과 같은 다른 메모리구역들을 위한 외부메모리와 공유될 수 있다.
A-버스인터페이스와 AMCD(700)는 유사하게 동작하지만, 어레이 기계 문맥 구성을 가진다. 바람직하게는, 다른 유형들의 어레이들 및 테이블들이 간단한 버스 요구들을 이용하여 할당, 크기변경, 할당해제, 기입(쓰기), 판독(읽기), 탐색, 및 아마도 해시 또는 소트될 수도 있다. 실제 기본 물리메모리는, 예를 들면 고속의 탑재형(onboard) RAM, 외부 RAM 또는 ROM, 콘텐츠-주소지정가능 메모리 등을 포함하여, 다른 유형들의 어레이들 및 테이블들에 대해 다를 수 있다.
SEE(300-0)와 그것의 파이프라인 레지스터들의 설명으로 돌아가서, 각 SEE는 버퍼(510)로부터 Si-버스를 가로질러 입력데이터에 액세스할 수 있다. 그리고 각 SEE는 P-버스 및 파서스택 상단의 현재 심벌에 액세스하고, 이것은 예컨대 동일한 s-코드가 다중 생성규칙들과 함께 사용될 때 유용하지만, 그것의 결과는 그것을 시작하는 생성규칙에 의존한다. 최종적으로, 일부 SEE들의 파이프라인 레지스터들은 전문화될 수 있다. 예를 들어, 도 8의 SEE(300-1)는 국부 I/O블록(520)과 통신하여 예컨대 국부 I/O블록(520)에 연결된 국부 USB 또는 직렬 ATA기기들과의 데이터경로를 제공한다. 도 8의 SEE(300-2)는 EPU(600)와 통신하여 예외유닛과의 데이터경로를 제공한다. 이론적으로는 각 SEE가 이러한 기기들의 각각과 개별적으로 연결될 수 있지만, 실제로는 기기는 어느 일정한 다른 기능들을 갖는 어떤 일정한 SEE들을 쌍으로 묶음으로써 단순화되어 성능 패널티를 거의 가지지 않게 된다.
예외처리부(600)는, 많은 응용들에서 매우 초보적인(rudimentary) 것이 될 수 있지만, 표준 폰 노이만 중앙처리부(CPU)일 수 있다. 구비될 때, EPU(600)는 바람직하게는 가끔 돌아가거나 타이밍이 중요하지 않은 복합코드(complex code)를 다루는데 사용된다. 예들로는 사용자 로그온 프로시저, 국부 드라이브를 원격 이용가능하게 만드는 요구, 오류 로깅 및 복구, 시스템 기동 시의 테이블 로딩, 및 시스템구성이 있다. EPU(600)는 SEE(300-2)에 로드된 s-코드세그먼트들 통해 DXP 요구들에 간접적으로 응답한다. 바람직하게는, EPU(600)는 SEE(300-2)를 호출하여 AMCD(700) 또는 VMCD(800)에 대해 읽고 쓰는 것과 같은 기능들을 수행하게 할 수도 있다.
e-코드 테이블(610)은 바람직하게는 EPU(600)에 이용가능하다. e-코드 테이블은 기기를 위한 부트 명령어들을 담고 있고, DXP에 의해 요구된 다른 기능들을 수행하기 위해 실행가능한 명령어들을 담고 있을 수 있다. 선택사항적으로, e-코드 테이블(610)은 실행하려는 코드를 위한 명령어주소들이 되게 s-코드 요구들을 번역하기 위한 것으로서 이 명령어주소들이 기존의 외부 메모리공간에 위치되는 테이블을 담고 있을 수 있다.
실시예
RSP(500)의 동작을 양호하게 도시하기 위해, IETF RFC 826에 기재된 바와 같은 주소분석프로토콜(ARP)의 구현의 실시예가 제시된다. 이 실시예는 생성규칙들, 파서테이블 엔트리들, 및 수신된 ARP패킷들을 다루기 위한 s-코드의 기능적 내용의 작성을 통해 동작한다.
간단히 말해, ARP 패킷들은 하나 이상의 네트워크 프로토콜들에 대해 국부 네트워크 노드들이 각 피어(peer)의 링크층(하드웨어)주소를 네트워크(프로토콜)주소에 관련시킬 수 있게 한다. 이 예는 하드웨어 프로토콜이 이더넷이고 네트워크 프로토콜은 인터넷 프로토콜(IP 또는 IPv4)이라고 가정한다. 따라서, ARP 패킷들은 도 10에 보인 포맷을 가진다. 조작부호(opcode) 필드가 1로 설정될 때, 송신기는 표적 프로토콜 주소에 관련된 표적 하드웨어주소 찾기를 시도하고 ARP 답신 패킷(reply packet)을 요구한다. 조작부호 필드가 2로 설정될 때, 송신기는 ARP 요구에 응답하며, 이 경우, 송신기의 하드웨어주소는 원래의 송신기가 찾았던 표적 하드웨어주소이다.
다음의 예시적인 문법은 RSP(500)가 입력포트에 수신된 ARP패킷들을 처리할 수 있는 하나의 방법을 기재하고 있다. $는 생성규칙의 개시를 나타내며, {}는 SEE에 의해 수행하려는 s-코드를 둘러싼다.
$MAC_PDU := MAC_DA MAC_SA MAC_PAYLOAD MAC_FCS EoFrame
$MAC_DA := 0X08 0X01 0X02 0X03 0X04 0X05
| 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF
$MAC_SA := etherAddType {s0: mct -> curr_SA = MAC_SA}
$SMAC_PAYLOAD := 0x08 ET2
$ET2 := 0X06 ARP_BODY | 0X00 IP_BODY
$ARP_BODY := ARP_HW_TYPE ARP_PROT_TYPE ARP_HW_ADD_LEN
ARP_PROT_ADD_LEN ARP_OP ARP_PADDING
$ARP_HW_TYPE := 0X001
$ARP_PROT_TYPE := 0x0800
$ARP_HW_ADD_LEN := 0X06
$ARP_PROT_ADD_LEN := 0X04 0x00
$ARP_OP := 0x01 ARP_REQ_ADDR
| 0x02 ARP_REPLY_ADDR
$ARP_REQ_ADDR := ARP_SENDER_HW ARP_SENDER_PROT ARP_TARGET_HW
ARP_TARGET_PROT {s1: s-code seg1}
$ARP_REPLY_ADDR := ARP_SENDER_HW ARP_SENDER_PROT ARP_TARGET_HW
ARP_TARGET_PROT {s2: s-code seg2}
$ARP_SENDER_HW := ehterAddType
$ARP_SENDER_PROT := ipAddType
$ARP_TARGET_HW := ehterAddType
$ARP_TARGET_PROT := ipAddType
$ARP_PADDING := octet | null {s3: calc. length; throw away}
$IP_BODY := //이 예에 의해 분석되지 않음
$MAC_FCS := octet octet octet octet {s4: check FCS}
$etherAddType := octet octet octet octet octet octet
$ipAddType := octet octet octet octet
{s-code seg1 := if APR_TARGET_PROT == mct -> myIPAddress
then generate ARP reply to mct -> curr_SA;
s-code seg2}
(s-code seg2 := update mct -> ArpCache with
ARP_SENDER_HW, ARP_SENDER_PROT, mct -> time}
이 실시예는 모든 가능한 ARP 패킷들 중 제한된 집합, 즉 이더넷 하드웨어 타입 및 IP프로토콜 타입과 일치하는 필드들을 적절히 표시하는 것들을 처리하기만 하고, 모든 다른 것들은 구문분석 하기에 실패할 것이고 거절될 것이다. 이 문법은 IP패킷들($IP_BODY)을 위한 후크(hook) 남겨두고 따라서 IP패킷들을 거절하지 않을 것이지만, 대응하는 IP문법은 이 실시예의 부분이 아니다.
생성물(production)을 통해 나아갈 때, $MAC_PDU는 단순히 MAC 프레임포맷을 정의한다. 2개의 목적지 MAC주소들인 특정 하드웨어주소(0x08 0x01 0x02 0x03 0x04 0x05) 및 모두 1로 된 방송주소는 $MAC_DA에 의해 허용될 것이다. 이러한 2개의 주소들 중 하나가 없는 패킷은 구문분석에 실패할 것이므로, 모든 다른 MAC주소들은 자동적으로 거절된다. 임의의 소스주소는 $MAC_SA에 의해 수락되며, SEE는 VMCD 상의 마스터 문맥 테이블변수(mct -> curr_SA)에 대한 소스 주소를 절약하기 위해 호출된다. $MAC_PAYLOAD 및 $ET2는 결합되어 2 유형의 페이로드들인 ARP페이로드 및 IP패이로드만이 구분문석되는 것을 보장한다(IP페이로드의 추가의 구문분석은 여기에 도시되지 않았다). 물론, 다른 패킷유형들이 이러한 생성물들을 확장함으로써 추가될 수 있다.
제1의 2 유형의 MAC_PAYLOAD가 ARP패킷을 나타낼 때(유형=0x0806), 파서는 그 다음에 $ARP_BODY를 구분분석하기 시작한다. 단순화를 위해, ARP의 제1의 4개의 요소들(하드웨어 및 프로토콜 유형들 그리고 주소길이들)이 고정되게 보여지며, 만약 ARP가 IP뿐 아니라 다른 프로토콜을 위해 구현되었다면, 이러한 요소들은 일반화될 수 있다(길이필드들의 일반화는 생성규칙들에서 고려해야 할 조건을 따르는 주소필드들에 다른 크기를 인정한다는 점에 주의한다).
요구를 위한 1과 답신을 위한 2라는 2개의 값들이 $ARP_OP에 대해 가능하다. ARP_OP의 2개의 값들에 대해, 주소 구문분석이 다르지는 않지만 각 경우에 실행하려는 s-코드는 다르다. ARP요구들에 대해 실행되는 S-코드세그먼트 1은 VMCD 상의 마스터 문맥 테이블에 저장된 국부 IP주소와 표적 프로토콜을 비교한다. 이것들이 같을 때, SEE는 송신기의 하드웨어 및 IP주소들에 대해 ARP 답신 패킷을 발생한다. S-코드세그먼트 2는 ARP요구들 및 ARP답신들 모두에 대해 실행되어, 이 세그먼트는 AMCD에 저장된 ArpCache 어레이에 대해 송신기의 하드웨어 및 프로토콜 주소들 및 수신된 시간을 갱신한다. mct -> ArpCache 에 대한 "갱신" 명령은, ArpCache 내의 데이터가 갱신을 수행하기 위해 사용되어야 하는지를 식별하기 위한 플래그 또는 마스크를 구비하며, 보통, 캐시는 적어도 IP주소에 의해 인덱스될 수 있다.
이더넷/IP ARP 패킷에서, ARP_PADDING은 18개 옥텟의 길이일 것이다. 그러나, 여기에 보인 ARP_PADDING 생성규칙은 어느 수의 옥텟들에도 알맞다. 이 실시예에서, s-코드세그먼트는 예컨대 입력포인터를 전진시킴으로써 패딩길이를 계산하고 그 많은 옥텟들을 "버리기(throw away)"위해 호출된다. 다르게는, 파서는 입력에서 EoFrame 토큰에 대해 5개 옥텟 예견능력을 이용할 수 있어, 토큰이 발견될 때, 선행하는 4개의 옥텟들은 FCS이다. 파서가 가변 심벌예측능력을 가지는 대체 실시예가 이 실시예의 말미에 설명될 것이다.
MAC_FCS 생성은 SEE가 패킷에 부착된 FCS를 점검하는 것임을 나타낸다. SEE는 실제로 체크섬을 계산할 수 있으나, 이 체크섬은 입력버퍼 또는 다른 하드웨어에 의해 계산될 수도 있고, 이 경우 SEE는 패킷값과 계산된 패킷값을 바로 비교하고 일치하지 않는다면 패킷을 버릴 것이다.
위의 ARP 문법을 실행하기 위해 RSP(500)가 어떻게 구성되었는지를 추가로 설명하기 위해, 이제 예시적인 생성규칙테이블 및 파서테이블 값들이 주어지고 설명될 것이다. 먼저, 생성규칙들이 보일 것이고, "옥텟"은 입력스트림의 헤드에서 발견된 임의의 옥텟과 일치할 것이다. 비말단(NT) 코드는 파서테이블에 대한 인덱스로서 사용되며; 생성규칙(PR)코드는 파서테이블에 저장되고 어떤 생성규칙이 NT코드 및 입력값의 주어진 조합에 적합한지를 나타낸다.
위의 ARP 생성규칙테이블에서, 예컨대, 특수한 규칙끝 심벌이 부착된 RHS 비말단 값들은 RSP의 생성규칙테이블에 저장된 것들이다. 생성규칙코드들은 대응하는 생성규칙들에 대한 "포인터들"이고, 파서테이블에 실제로 저장된 PR코드이다. 다음의 파서테이블 세그먼트는 PR과 PR코드 간의 관계를 도시한다.
* PR 148.1/.2는 파서나 SEE 중의 어느 것에서의 예측 능력을 이용하여 구현된다.
NT코드 및 "입력스트림데이터의 헤드 값"은 RSP의 파서테이블 값들을 인덱스한다. 시작심벌(S), EoFrame심벌, 및 스택하단심벌($)은 특수한 경우이고, 파서제어FSM은 이러한 심벌들에 대해 파서를 참조하지 않도록 구현될 수 있다. 많은 NT코드들에 대해, 이 테이블은 입력스트림의 헤드를 점유하는 데이터값에 무관하게 동일한 PR코드를 생성한다. 이 실시예에서, 모든 다른 NT코드들은 입력스트림 값들의 하나 이상의 헤드에 대해서만 유효한 값들을 가진다(셀에서 값이 빈 것은 유효하지 않은 엔트리를 나타낸다). 이 정보는 매트릭스 포맷으로 각 셀이 채워지게 코딩될 수 있거나, 또는 얼마간의 다른 더 경제적 포맷으로 코딩될 수 있다.
위의 테이블들이 주어지면, 이제 이더넷/ARP를 위한 RSP실행의 예가 제시된다. 이 예에서, DXP는 도 7에 보인 흐름도를 통해 하나의 "루프"에 대응하는 파서 사이클들에 의해 나아가게 된다. 각 사이클에서, 다음의 기계상태들, 즉 구문분석되는 현재 스트림 입력심벌의 바이트주소를 나타내는 입력포인터(ip); 입력포인터(*ip)에 의해 포인팅되는 입력심벌; 파서 사이클의 개시 시에 어떤 스택값이 포인팅되는 지를 나타내는 파서스택포인터(psp); 이 파서 사이클의 개시 시의 비말단 심벌들이 접두어 "nt."로 표시되고 말단 심벌 t.xx는 임의의 입력 심벌과 일치하는 파서스택상단 심벌(*psp); 파서테이블의 현재 인덱스된 값(PT[*ip, *psp]); PT[*ip, *psp]에 의해 포인팅된 생성규칙(PRT[PT]), PT[*ip, *psp]에 의해 포인팅된 s-코드세그먼트(SCT[PT]); 및 파서스택의 전체 콘텐츠들(*ps)이 추적된다.
다음의 ARP패킷은 모든 값들이 16진법 표기로 지정되는 예에서 사용될 것이다:
0x0000: FF FF FF FF FF FF 00 02 3F 77 6D 9E 08 06 00 01
0x0010: 08 00 06 04 00 01 00 02 3F 77 6D 9E C0 A8 00 04
0x0020: 00 00 00 00 00 00 C0 A8 00 06 3A 20 30 0D 0A 53
0x0030: 54 3A 20 75 72 6E 3A 73 63 68 65 6D EF 73 84 CC
이것은 방송 MAC주소에 보내진 ARP요구 패킷으로, 이 예에서 RSP에 할당된 네트워크 주소인 네트워크주소 192.168.0.6에 관련된 하드웨어주소를 요구한다. 이 예의 패킷의 파싱의 결과들은 표 형식으로 아래에 보이고 간단한 설명을 덧붙인다. 이 예는 길지만, RSP의 기본 기능들의 대부분을 사용하므로 교육적이다. 표 4는 ARP 패킷 파서 사이클 예를 보여준다.
일반적으로, 위의 상세한 실시예는, 생성규칙들이 어떻게 파서스택으로 확장되는지 그리고 그 후 개별적으로 처리되는 지에 관하여, 말단 심벌과 입력심벌을 일치시키는 것(예컨대, 파서사이클 2-7 참조); 말단 무정의 심벌(t.xx)과 입력심벌을 일치시키는 것(예컨대, 파서사이클 9-14 참조); 입력에 무관하게(예컨대, 파서사이클 8 참조) 또는 현재 입력심벌에 기초하여(예컨대, 파서사이클 0, 1, 17 참조) 비말단 심벌을 더 확장하는 것; 또는 널 사이클을 실행하여 이 경우 SEE가 패딩(padding)필드에 대한 구문분석을 "건너뛰기(skip)"하도록 입력포인터를 조정하는 것(파서사이클 63)에 의해 설명하고 있다. 이 실시예는 또한 구분분석처리 동안 적절한 지점들에서 s-코드세그먼트들에 대한 호출들을 설명하고 있고 이 호출들에 의존하여 생성규칙들은 스택에 로드된다(파서사이클 8, 33, 62, 64). 이러한 코드세그먼트들의 일부는 연속하는 구문분석과 병행하여 실행될 수 있다.
위에서 주어진 예시적인 문법은 본 발명의 실시예에 따른 ARP문법을 구현하는 하나의 방법일 뿐이다. 일부 사이클 비효율성은 예를 들면 비말단인 일부의 것들을 그것들의 모(parent) 생성규칙들로 명시적으로 확장함으로써 감소될 수 있다. ARP문법은 더 많은 가능성을 다루도록 상당히 일반화될 수도 있다. 그러나 선택된 코딩은 기본 원리들을 설명하기 위한 의도였지 모든 가능한 최적화나 ARP 특징들을 설명하기 위한 의도는 아니었다. 명시적 확장은 주어진 구현에 관해 선택된 스택사이즈에 의해 제한될 수도 있다.
대체 실시예에서, DXP(200)는, 예견능력값 f(X)가 스택심벌로 코딩되는 LL(f(X)) 파서를 구현할 수 있고, 그래서 각 스택심벌은 그것이 가진 예견능력을 지정할 수 있다. 일 예로서, 이전의 예에서의 ARP_PADDING에 대한 생성규칙은 다음
$ARP_PADDING := octet ARP_PADDING | EoFrame, (LA5)
과 같이 지정될 수 있었고 여기서 (LA5)는 이 규칙에 대해 입력심벌 예견능력이 5개의 심벌임을 나타낸다. 예견능력값은 생성규칙테이블로 코딩되고, 그래서 이 규칙이 실행될 때 DXP(200)는 생성규칙테이블에서 (X, a+5)를 찾는다.
가변 예견능력은 다수의 입력심벌들이 테이블 룩업에 사용됨을 나타내는데 사용될 수도 있다. 예를 들어, MAC_DA에 관한 생성규칙은 다음
$MAC_DA := 0X08 0X01 0X02 0X03 0X04 0X05
| OXFF 0XFF OXFF OXFF OXFF OXFF, (LA6)
과 같이 지정될 수 있다.
6개 말단 심벌들 각각으로 2개의 생성규칙 52 및 53을 만드는 대신, 파서테이블은 6개 심벌들 각각에 예컨대 파서테이블 위치들인 (X, a)=(130, 0x08 0x01 0x02 0x03 0x04 0x05) 및 (130, 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF)에서 일치하는 2개의 엔트리들을 담고 있다.
이러한 접근법으로는, 표준 행, 열 매트릭스 파서테이블은 최대 6-옥텟의 입력심벌 폭에 필요한 주소지정가능한 열들의 수와, 이러한 매트릭스의 성김성(sparsity) 때문에 매우 낭비적임이 입증될 수 있다. 3진(ternary) CAM을 이용하는 하나의 대체 구현예는 도 11에 보인다.
도 11의 3진 CAM(900)에는 정합주소들 및 대응하는 생성규칙코드들로 된 테이블이 로드된다. 각 정합주소는 1-옥텟 스택 심벌(X)과 6개 옥텟들의 입력심벌들(a1, a2, a3, a4, a5, a6)을 포함한다. 정합주소가 CAM(900)에 공급될 때, 이것의 파서테이블 엔트리들 내에 정합(일치)이 존재하는 지가 판단된다. 정합이 존재한다면, 대응하는 생성규칙코드가 반환된다(다르게는, 정합을 발생시키는 테이블 엔트리의 주소가 반환되어, 생성규칙코드들 또는 포인터들의 별도의 테이블로의 인덱스로서 사용될 수 있다).
도 11의 파서테이블 구현예의 이점은, 엔트리들이 스택 및 입력 심벌들의 유효한 조합들에 대해서만 만들어지므로, 매트릭스 접근법보다 더 효율적이다는 것이다. 이 동일한 효율은 긴 입력심벌들의 스트링들이 하나의 파서사이클 내에 구문분석될 수 있게 하고(6개까지의 입력심벌들이 보이지만, 설계자는 길이가 사용하기 좋은 것은 무엇이나 사용할 수 있다), 따라서 MAC 또는 IP 주소는 하나의 파서사이클에서 구문분석될 수 있다. 게다가, 예견능력은 CAM 속으로 함축적으로 코딩될 수 있고, 예컨대, 다음 6개 입력심벌들이 그 테이블에 항상 공급될 수 있다. LL (1) 구문분석에 대응하는 생성규칙들(이를테면 CAM(900)에서 X=136의 행)의 경우, 그 행의 a2, a3, a4, a5, a6에 대응하는 CAM비트들은 "무정의" 값 xx로 설정되고, 룩업에 기여하지 않는다. LL (2) 구문분석에 대응하는 생성규칙들(이를테면 ARP 및 IP 패킷들에 대해 2-옥텟 패킷유형 필드가 일치하는 X= 134 및 135의 행들)의 경우, 그러한 행들 상의 a3, a4, a5, a6에 대응하는 CAM비트들은 xx로 설정된다. X = 129에 대해 2개의 MAC주소엔트리들에서 보인 것처럼, LL (6)까지의 구문분석은 테이블에 들어갈 수 있다. a1, a2, a3, a4, a5가 xx로 설정되었다면, 진정한 6-심벌 예견능력이 구현될 수도 있다. 마지막 하나의 관찰소견은 이진CAM이 "무정의" 정보를 명확하게 저장할 수는 없고, 따라서 약간 다른 방식으로 임의의 "무정의" 기능성을 다루기에 확실한 파서 상태기계(또는 약간 다른 메커니즘)를 남겨둔다.
이 기술분야의 통상의 기술자는 여기서 가르쳐진 개념들이 특정 응용에 많은 다른 이로운 방식들로 맞춤될 수 있다는 것이 인식될 것이다. 예를 들어, 제시된 코드들 및 주소지정 체계들에 대해 많은 변형들이 가능하다. 기재된 실시예들에서, 마이크로명령어 코드세그먼트는 NULL명령어로 끝나고 NULL명령어의 발생은 SEE의 S-버스 인터페이스에 의해, 마이크로명령어 디코더에 의해, 또는 s-코드 테이블 기능에 의해서도 검출될 수 있다. s-코드 주소들은 SEE들에 알려져야 할 필요는 없고, SCT가 각 SEE에 대한 명령어 포인터들을 DXP에 의해 설정된 각 SEE에 대한 명령어포인터들로써 추적할 수 있다. 다른 인터페이스들을 갖는 다수의 메모리저장영역들이 예시되었지만, 수개의 인터페이스들은 둘 다에 대해 물리저장공간으로서 소용되는 공통 메모리 저장영역에 대한 액세스를 공유할 수 있다. 이 기술분야의 숙련자들은 예외처리부와 같은 일부 구성요소들이 RSP와 일체화되거나 또는 별개의 유닛으로서 RSP에 연결될 수 있다는 것을 인식할 것이다.
파서테이블, 생성규칙테이블 및 s-코드테이블이 주어진 집합의 문법들에 대해 어떻게 거주하는지는 중요하지 않고, 이러한 거주(population)는 예를 들면 EPU, SEE들 중의 하나 위의 부트-코드세그먼트, 또는 입력포트에 제공된 테이블 거주명령어를 갖는 부트-문법 세그먼트를 통해 달성될 수 있다. 이러한 테이블들은 또한 테이블 리로딩이 전원을 넣을 때마다 요구되지 않도록 비휘발성 메모리로써 구현할 수 있음은 물론이다.
DXP의 동작을 도시하는 흐름도는 단순히 예시적인 것이고, 예를 들어, 여기서 주어진 상태기계 구현은 순차적 태스크들로서 여기에 보인 병행하는 많은 태스크들을 달성할 수 있게 하고 많은 동작들을 투기적으로 수행할 수 있다는 것이 인정된다.
수개의 실시예들이 보여졌고 단일 입력포트와 함께 보이고 설명되었지만, "어느 하나"의 입력포트라는 기재는 단순히 적어도 하나의 포트가 존재함을 인정하는 것이다. 물리적 포트 구성은 응용에 따라 변할 수 있다. 예를 들어, 포트 대역폭 및 파서 성능에 따라, 수개의 입력포트들이 동일한 직접실행 파서에 대해 다중화될 수 있다.
이 기술분야의 통상의 지식을 가진 자는 본 발명의 범위 내에서 다른 기능적 분할들이 가능함을 인식할 것이다. 게다가, 공통 집적회로에 무슨 기능들이 구현되고 무슨 기능들이 구현되지 않는지는 설계상의 선택이고, 응용에 따라 변할 수 있다. 기재된 파서 기능들은 기존의 소프트웨어 기법들을 이용하여 범용 프로세서상에 구현할 수 있지만, 이것은 하드웨어 구현예로 나타나는 이점들 중의 일부가 이루어지지 못할 수도 있다.
최종적으로, 명세서는 실시예(들)의 여러 위치들에서 "어느 하나", "하나", "다른", 또는 "일부"에 대해 언급하고 있지만, 이것은 반드시 각각의 그러한 참조가 동일한 실시예(들)에 대한 것을 의미하는 것은 아니거나, 또는 반드시 그 특징이 단지 단일 실시예에 적용되는 것을 의미하지는 않는다.

Claims (56)

  1. 데이터심벌들을 수신하는 입력포트;
    스택심벌들을 저장하는 스택을 가지며, 수신된 데이터심벌들에 응답하여 스택심벌들을 처리할 수 있는 직접실행 파서;
    파서에 의해 액세스 가능하며, 적어도 하나의 수신된 데이터심벌 및 파서에 의해 공급된 스택심벌의 조합에 의해 인덱스 가능한 생성규칙코드들이 거주할 수 있는 파서테이블;
    파서에 의해 액세스 가능하며, 생성규칙코드들에 의해 인덱스 가능한 생성규칙들이 거주할 수 있는 생성규칙테이블;
    직접실행 파서에 의해 가리켜진 기계명령어 세그먼트들을 이용하여, 파서에 의해 프롬프트될 때 기계명령어들을 실행할 수 있는 제1의미코드실행엔진; 및
    제1의미코드실행엔진에 의해 액세스 가능하며, 생성규칙코드들에 의해 인덱스 가능한 기계명령어 세그먼트들이 거주할 수 있는 의미코드테이블을 포함하는 데이터처리시스템.
  2. 제1항에 있어서, 직접실행 파서에 의해 가리켜진 기계명령어들을 이용하여, 파서에 의해 프롬프트될 때 기계명령어들을 실행할 수 있는 제2의미코드실행엔진을 더 포함하며, 제1 및 제2 의미코드실행엔진들은 병렬로 기계명령어 실행을 할 수 있는 데이터처리시스템.
  3. 제2항에 있어서, 마이크로프로세서 및 관련된 메모리를 갖는 예외처리부를 더 포함하며, 예외처리부는 의미코드실행엔진들 중 적어도 하나의 요구에 의해 태스크들을 수행할 수 있는 데이터처리시스템.
  4. 제2항에 있어서, 의미코드실행엔진들 중 적어도 하나에 연결된 블록 입력/출력포트를 더 포함하며, 블록 입력/출력포트는 적어도 하나의 의미코드실행엔진의 제어 하에 블록 입력/출력 동작들을 시작할 수 있는 데이터처리시스템.
  5. 제2항에 있어서, 생성규칙코드는, 의미코드테이블 기계명령어들의 대응하는 세그먼트가, 이용가능한 의미코드실행엔진에 보내질 수 있는지, 또는 그 세그먼트가 특정 의미코드실행엔진에 보내져야 하는지를 직접실행 파서가 판단할 수 있게 하는 데이터처리시스템.
  6. 제1항에 있어서, 직접실행 파서 및 의미코드실행엔진 사이에 인터페이스를 더 포함하며, 이 인터페이스는 의미코드실행엔진에 의해 지시받을 때 직접실행 파서에 의한 스택심벌 처리를 중지시킬 수 있는 능력을 가지는 데이터처리시스템.
  7. 제1항에 있어서, 파서테이블, 생성규칙테이블, 및 의미코드테이블은 적어도 부분적으로는 재프로그램 가능한 저장부에 상주하는 데이터처리시스템.
  8. 제7항에 있어서, 데이터처리시스템은 각 데이터패킷이 적어도 하나의 네트워크프로토콜에 따라 포맷된 데이터패킷들을 처리하며, 파서테이블, 생성규칙테이블, 및 의미코드테이블은 서로 다른 네트워크 프로토콜들에 대한 구문분석을 지원하도록 재프로그램 가능한 데이터처리시스템.
  9. 제8항에 있어서, 데이터처리시스템은 이 시스템이 데이터패킷들을 처리하는 동안 파서테이블 재프로그램가능 저장부에 네트워크프로토콜을 로드할 수 있는 데이터처리시스템.
  10. 제1항에 있어서, 데이터저장영역에 연결되며 의미코드실행엔진에 의해 액세스 가능한 기계 문맥데이터 인터페이스를 더 포함하며, 기계 문맥데이터 인터페이스는 의미코드실행엔진에 의해 발행된 기계 문맥 명령어들에 응답하여 데이터저장영역을 관리하고 데이터작업을 수행하는 데이터처리시스템.
  11. 제10항에 있어서, 기계 문맥데이터 인터페이스는 가변 기계 문맥데이터 인터페이스 및 어레이 기계 문맥데이터 인터페이스를 포함하며, 어레이 기계 문맥데이터 인터페이스는 어레이데이터에 대한 데이터작업을 관리 및 수행할 수 있는 데이터처리시스템.
  12. 제11항에 있어서, 어레이 기계 문맥데이터 인터페이스는, 가변 기계 문맥데이터 인터페이스에 의해 액세스된 데이터저장영역의 데이터액세스포맷과는 다른 데이터액세스포맷을 갖는 적어도 하나의 데이터저장영역에 액세스하는 데이터처리시스템.
  13. 제1항에 있어서, 적어도 직접실행 파서, 파서테이블, 및 생성규칙테이블은 마이크로프로세서 및 그것의 부착 메모리를 구성하는 소프트웨어를 이용하여 구현되는 데이터처리시스템.
  14. 제1항에 있어서, 생성규칙테이블은 비트마스크된 말단 심벌들을 저장할 수 있고, 각 비트마스크된 말단 심벌은 대응하는 입력심벌의 선택된 비트들이 "무정의" 비트들임을 표시할 수 있는 데이터처리시스템.
  15. 제1항에 있어서, 직접실행 파서는 LL구문분석법, LR구문분석법, LALR구문분석법, 및 재귀하향식 구문분석법을 포함하는 방법 군으로부터 선택된 구문분석법을 수행하는 데이터처리시스템.
  16. 제1항에 있어서, 직접실행 파서는 각 스택심벌마다 가변될 수 있는 가변 입력심벌예견능력을 이용하여 입력심벌들을 구문분석할 수 있는 데이터처리시스템.
  17. 제16항에 있어서, 가변 입력심벌예견능력은 생성규칙테이블의 값으로서 생성규칙들과 함께 저장될 수 있고, 직접실행 파서는 이것이 생성규칙을 스택에 로드할 때 가변 입력심벌예견능력을 로드하는 데이터처리시스템.
  18. 제16항에 있어서, 파서테이블은 스택심벌 및 N개까지의 입력심벌들의 조합에 대응하는 엔트리들을 저장할 수 있는 워드 크기를 갖는 2진 또는 3진 콘텐츠-주소지정가능 메모리(CAM)를 포함하는 데이터처리시스템.
  19. 제18항에 있어서, 파서는 각각의 액세스에 대해 N개 입력심벌들을 파서테이에 공급하고, 각각의 CAM엔트리는 N개 입력심벌들 중의 어느 것이 당해 CAM엔트리에 대한 룩업에 영향을 주는 지를 판단하는 데이터처리시스템.
  20. 데이터심벌들을 수신하는 입력포트;
    스택심벌들을 저장하는 스택을 가지며, 수신된 데이터심벌들에 응답하여 스택심벌들을 처리할 수 있는 직접실행 파서;
    파서에 의해 액세스 가능하며, 수신된 데이터심벌 및 파서에 의해 공급된 스택심벌의 조합에 의해 인덱스 가능한 생성규칙코드들이 거주할 수 있는 파서테이블;
    파서에 의해 액세스 가능하며, 생성규칙코드들에 의해 인덱스 가능한 생성규칙들이 거주할 수 있는 생성규칙테이블;
    직접실행 파서에 의해 가리켜진 기계명령어 세그먼트들을 이용하여, 파서에 의해 프롬프트될 때 기계명령어들을 실행할 수 있는 제1의미코드실행엔진; 및
    제1의미코드실행엔진에 의해 액세스 가능하며, 생성규칙코드들에 의해 인덱스 가능한 기계명령어 세그먼트들이 거주할 수 있는 의미코드테이블을 포함하는 집적회로.
  21. 제20항에 있어서, 직접실행 파서에 의해 가리켜진 기계명령어들을 이용하여, 직접실행 파서에 의해 프롬프트될 때 기계명령어들을 실행할 수 있는 제2의미코드실행엔진을 더 포함하며, 제1 및 제2 의미코드실행엔진들은 병렬로 기계명령어 실행을 할 수 있는 집적회로.
  22. 제21항에 있어서, 마이크로프로세서를 갖는 예외처리부를 더 포함하며, 예외처리부는 의미코드실행엔진들 중 적어도 하나의 요구에 의해 프로그램가능한 태스크들을 수행할 수 있는 집적회로.
  23. 제21항에 있어서, 의미코드실행엔진들 중 적어도 하나에 연결된 블록 입력/출력포트를 더 포함하며, 블록 입력/출력포트는 적어도 하나의 의미코드실행엔진의 제어 하에 블록 입력/출력 동작들을 시작할 수 있는 집적회로.
  24. 제21항에 있어서, 생성규칙코드는, 의미코드테이블 기계명령어들의 대응하는 세그먼트가, 이용가능한 의미코드실행엔진에 보내질 수 있는지, 또는 그 세그먼트가 특정 의미코드실행엔진에 보내져야 하는지를 직접실행 파서가 판단할 수 있게 하는 집적회로.
  25. 제20항에 있어서, 직접실행 파서 및 의미코드실행엔진 사이에 인터페이스를 더 포함하며, 이 인터페이스는 의미코드실행엔진에 의해 지시받을 때 직접실행 파서에 의한 스택심벌 처리를 중지시킬 수 있는 능력을 가지는 집적회로.
  26. 제20항에 있어서, 파서테이블, 생성규칙테이블, 및 의미코드테이블은 적어도 부분적으로는 재프로그램 가능한 저장부에 상주하는 집적회로.
  27. 제26항에 있어서, 파서테이블, 생성규칙테이블, 및 의미코드테이블은 집적회로와는 별도의 메모리에 상주하는 큰 테이블용의 캐시들을 포함하는 집적회로.
  28. 제20항에 있어서, 데이터저장영역에 연결되며 의미코드실행엔진에 의해 액세스 가능한 기계 문맥 데이터 인터페이스를 더 포함하며, 기계 문맥 데이터 인터페이스는 의미코드실행엔진에 의해 발행된 기계 문맥 명령어들에 응답하여 데이터저장영역을 관리하고 데이터작업을 수행하는 집적회로.
  29. 제28항에 있어서, 데이터저장영역은 집적회로에 적어도 부분적으로 일체화되는 집적회로.
  30. 제28항에 있어서, 기계 문맥데이터 인터페이스는 가변 기계 문맥데이터 인터페이스 및 어레이 기계 문맥데이터 인터페이스를 포함하며, 어레이 기계 문맥데이터 인터페이스는 어레이데이터에 대한 데이터작업을 관리 및 수행할 수 있는 집적회로.
  31. 제30항에 있어서, 어레이 기계 문맥데이터 인터페이스는, 가변 기계 문맥데이터 인터페이스에 의해 액세스된 데이터저장영역의 데이터액세스포맷과는 다른 데이터액세스포맷을 갖는 적어도 하나의 데이터저장영역에 액세스하는 집적회로.
  32. 데이터심벌들을 수신하는 입력포트;
    스택심벌들을 저장하는 스택을 가지며, 수신된 데이터심벌들에 응답하여 스택심벌들을 처리할 수 있는 직접실행 파서;
    파서에 의해 액세스 가능하며, 수신된 데이터심벌 및 파서에 의해 공급된 스택심벌의 조합에 의해 인덱스 가능한 생성규칙코드들이 거주할 수 있는 파서테이블;
    파서에 의해 액세스 가능하며, 생성규칙코드들에 의해 인덱스 가능한 생성규칙들이 거주할 수 있는 생성규칙테이블;
    파서에 의해 가리켜진 기계명령어 세그먼트들을 이용하여, 직접실행 파서에 의해 프롬프트될 때 기계명령어들을 각각이 실행할 수 있는 다수의 의미코드실행엔진들;
    의미코드실행엔진들에 의해 액세스 가능하며, 생성규칙코드들에 의해 인덱스 가능한 기계명령어 세그먼트들이 거주할 수 있는 의미코드테이블; 및
    데이터저장영역에 연결 가능하고 의미코드실행엔진들에 의해 액세스 가능한 기계 문맥데이터 인터페이스로서, 의미코드실행엔진들에 의해 발행된 기계 문맥 명령어들에 응답하여 데이터저장영역을 관리하고 데이터작업을 수행하는 기계 문맥데이터 인터페이스를 포함하는 집적회로.
  33. 제32항에 있어서,
    의미코드실행엔진들 및 의미코드테이블 사이의 제1버스; 및
    의미코드실행엔진들 및 기계 문맥데이터 인터페이스 사이의 제2버스를 더 포함하는 집적회로.
  34. 제33항에 있어서, 의미코드실행엔진들이 데이터심벌들에 액세스할 수 있게 하는 입력버스를 더 포함하는 집적회로.
  35. 제32항에 있어서, 직접실행 파서 및 의미코드실행엔진들 사이에 인터페이스를 더 포함하며, 이 인터페이스는 각 의미코드실행엔진에 대한 상태정보에 액세스할 수 있게 하고 의미코드실행엔진의 상태에 기초하여 직접실행 파서에 의한 스택심벌 처리를 중지시킬 수 있는 능력을 가지는, 집적회로.
  36. 제35항에 있어서, 상태정보는, 의미코드실행엔진들에 대응하며 대응하는 의미코드실행엔진에 의해 설정 가능한 세마포어들의 집합을 포함하는 집적회로.
  37. 데이터심벌들을 수신하는 입력포트;
    스택심벌들을 저장하며, 직접실행 파서가 수신된 데이터심벌들에 응답하여 스택심벌들을 처리할 수 있게 하는 스택,
    각각의 생성규칙코드가 수신된 데이터심벌 및 파서에 의해 공급된 스택심벌의 조합에 의해 인덱스 가능한 생성규칙코드들이 거주할 수 있는 파서테이블에 파서가 액세스할 수 있게 하는 파서테이블 인터페이스, 및
    각각의 생성규칙이 생성규칙코드들에 의해 인덱스 가능한 생성규칙들이 거주할 수 있는 생성규칙테이블에 파서가 액세스할 수 있게 하는 생성규칙테이블 인터페이스,
    를 구비한 직접실행 파서;
    파서에 의해 가리켜진 기계명령어 세그먼트들을 이용하여, 직접실행 파서에 의해 프롬프트될 때 기계명령어들을 실행할 수 있는 제1의미코드실행엔진; 및
    생성규칙들에 대응하는 기계명령어 세그먼트들이 거주할 수 있는 의미코드테이블에 의미코드실행엔진이 액세스할 수 있게 하는 의미코드테이블 인터페이스를 포함하는 집적회로.
  38. 제36항에 있어서, 집적회로에 일체화된 파서테이블, 생성규칙테이블, 및 의미코드테이블의 적어도 한 부분을 더 포함하는 집적회로.
  39. 제36항에 있어서, 생성규칙테이블은 비트마스크된 말단 심벌들을 저장할 수 있고, 각각의 비트마스크된 말단 심벌은 대응하는 입력심벌 내의 선택된 비트들이 "무정의" 비트들임을 나타낼 수 있는 집적회로.
  40. 제36항에 있어서, 직접실행 파서는 LL구문분석법, LR구문분석법, LALR구문분석법, 및 재귀하향식 구문분석법을 포함하는 방법 군으로부터 선택된 구문분석법을 수행하는 집적회로.
  41. 제36항에 있어서, 직접실행 파서는 각 스택심벌에 대해 가변될 수 있는 가변 입력심벌예견능력을 이용하여 입력심벌들을 구문분석할 수 있는 집적회로.
  42. 제41항에 있어서, 가변 입력심벌예견능력은 생성규칙테이블에 값으로서 생성규칙들과 함께 저장될 수 있고, 직접실행 파서는 생성규칙을 스택에 로드할 때 가변 입력심벌예견능력을 로드하는 집적회로.
  43. 제41항에 있어서, 파서테이블은 스택심벌 및 최대 N개의 입력심벌들의 조합에 대응하는 엔트리들을 저장할 수 있는 워드 크기를 갖는 2진 또는 3진 콘텐츠-주소지정가능 메모리(CAM)를 포함하는 집적회로.
  44. 제43항에 있어서, 파서는 각각의 액세스에 대해 N개 입력심벌들을 파서테이블에 공급하고, 각각의 CAM엔트리는 N개 입력심벌들 중의 어느 것이 당해 CAM엔트리에 대한 룩업에 영향을 주는 지를 판단하는 집적회로.
  45. 데이터그램 데이터 입력스트림을 처리하도록 데이터처리기를 구성하는 방법에 있어서,
    데이터그램들의 번역용의 생성규칙들의 집합을 생성규칙테이블 내에 저장하는 단계로서, 각각의 생성규칙이 적어도 하나의 심벌을 포함하는 단계;
    의미실행엔진 명령어들이 생성규칙들의 적어도 일부에 관련된 코드세그먼트들을 포함하는 의미실행엔진 명령어들의 집합을 의미코드테이블에 저장하는 단계; 및
    생성규칙들에 관련한 생성규칙코드들의 집합을 파서테이블에 저장하는 단계를 포함하는 방법.
  46. 제45항에 있어서, 데이트그램 데이터 입력스트림의 시작심벌이 수신되면, 직접실행 파서를 초기화하여, 저장된 생성규칙들에 따라, 데이터그램의 구문분석을 개시하는 단계를 포함하는 방법.
  47. 네트워크 처리기를 동작하는 방법에 있어서,
    입력포트에서, 다수의 데이터심벌들을 포함하는 데이터그램의 시작부의 수신을 검출하는 단계;
    직접실행 파서에 지시하여 저장된 생성규칙들의 집합에 따라 데이터그램으로부터 데이터심벌들을 구문분석하게 하는 단계; 및
    구문분석 처리 중 적어도 한번은 의미코드실행엔진에 지시하여 생성규칙에 관련된 코드세그먼트를 실행하는 단계를 포함하는 방법.
  48. 제47항에 있어서, 코드세그먼트의 실행 중, 부착된 기계 문맥데이터 인터페이스에 기계-문맥데이터 요구를 발생하는 명령어를 실행하는 단계, 및 기계 문맥데이터 요구를 적어도 하나의 물리메모리 작업으로 번역하는 단계를 더 포함하는 방법.
  49. 제47항에 있어서, 의미코드실행엔진에 의해 처리될 수 없는 데이터그램 콘텐츠의 발생을 검출하는 단계; 및
    예외처리부에 데이터그램 콘텐츠를 처리하라고 지시하는 단계를 더 포함하는 방법.
  50. 제47항에 있어서, 코드세그먼트를 실행하는 단계는 블록 입력/출력 데이터작업을 블록 입력/출력 포트에 지시하는 단계를 포함하는 방법.
  51. 네트워크 패킷 프로토콜을 구현하는 방법에 있어서,
    프로토콜을 구문분석가능한 문법적 생성규칙들의 집합으로 나누는 단계로서, 각각의 구문분석가능한 문법적 생성규칙은 말단 및 비말단 심벌들의 군으로부터 선택된 적어도 하나의 심벌을 포함하고, 기계 문맥 태스크들의 집합은 실행엔진에 의한 생성규칙들 중 적어도 일부에 대해 수행되는 단계;
    비말단 코드 및 생성규칙코드를 각각의 생성규칙에 할당하는 단계;
    문법적 생성규칙들을 생성규칙코드에 의해 인덱스 가능한 기계 저장가능 포맷으로 편성하는 단계;
    기계 문맥 태스크들을 대응하는 생성규칙에 관련된 생성규칙코드에 의해 인덱스 가능한 실행-엔진 명령어코드 형식으로 편성하는 단계; 및
    생성규칙코드들의 파서테이블을 네트워크 패킷 프로토콜에 의해 구문분석되는 패킷에 나타나는 적어도 하나의 심벌과 비말단 심벌의 조합에 의해 인덱스 가능한 기계 저장가능 포맷으로 생성하는 단계를 포함하는 방법.
  52. 제51항에 있어서, 각 심벌이 말단 심벌인지 비말단 심벌인지를 나타내는 접두어 코드를 기계 저장가능포맷 생성규칙들의 심벌들에 부착하는 단계를 더 포함하는 방법.
  53. 제52항에 있어서, 접두어 코드는 말단 심벌이 쌍이 되는 네트워크 패킷 프로토콜 심벌과 일치할 수 있는 지를 나타내는 방법.
  54. 제51항에 있어서, 적어도 하나의 말단 심벌에 대해, 그 심벌에 비트마스크를 할당하고 당해 심벌을 담고 있는 생성규칙으로 비트마스크를 저장하는 단계를 더 포함하는 방법.
  55. 제51항에 있어서, 비말단 심벌 및 다수의 입력심벌들의 조합에 기초하여 파서테이블에 적어도 일부 인덱스들을 설정하는 단계를 더 포함하는 방법.
  56. 제55항에 있어서, 파서테이블의 각 인덱스는 N개 인덱스 위치들에서의 최대 N개의 입력심벌들에 기초할 수 있고, 파서테이블의 적어도 일부의 인덱스들을 설정하는 단계는, 각 인덱스에 대해, 1과 N사이의 인덱스위치들을 이용하는 단계와, 나머지 인덱스위치들이 만약 있다면 이 나머지 인덱스위치들을 "무정의" 상태로 설정하는 단계를 포함하는 방법.
KR1020057013618A 2003-01-24 2003-11-12 재구성가능 의미처리기 KR20050106591A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/351,030 2003-01-24
US10/351,030 US7130987B2 (en) 2003-01-24 2003-01-24 Reconfigurable semantic processor

Publications (1)

Publication Number Publication Date
KR20050106591A true KR20050106591A (ko) 2005-11-10

Family

ID=32735705

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057013618A KR20050106591A (ko) 2003-01-24 2003-11-12 재구성가능 의미처리기

Country Status (9)

Country Link
US (2) US7130987B2 (ko)
EP (1) EP1590744A4 (ko)
JP (1) JP4203023B2 (ko)
KR (1) KR20050106591A (ko)
CN (1) CN1742272A (ko)
AU (1) AU2003290817A1 (ko)
CA (1) CA2513097A1 (ko)
TW (1) TWI239475B (ko)
WO (1) WO2004068271A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100681199B1 (ko) * 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
EP1784018A2 (en) 2005-11-08 2007-05-09 Korea Electronics Technology Institute Method of providing user information-based search using get_data operation in TV anytime metadata service

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7415596B2 (en) * 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
US7082044B2 (en) * 2003-03-12 2006-07-25 Sensory Networks, Inc. Apparatus and method for memory efficient, programmable, pattern matching finite state machine hardware
US7751440B2 (en) * 2003-12-04 2010-07-06 Intel Corporation Reconfigurable frame parser
US7219319B2 (en) * 2004-03-12 2007-05-15 Sensory Networks, Inc. Apparatus and method for generating state transition rules for memory efficient programmable pattern matching finite state machine hardware
US20050223369A1 (en) * 2004-03-31 2005-10-06 Intel Corporation Method and system for programming a reconfigurable processing element
US7251722B2 (en) * 2004-05-11 2007-07-31 Mistletoe Technologies, Inc. Semantic processor storage server architecture
US20070027991A1 (en) * 2005-07-14 2007-02-01 Mistletoe Technologies, Inc. TCP isolation with semantic processor TCP state machine
WO2006017689A2 (en) * 2004-08-05 2006-02-16 Mistletoe Technologies, Inc. Data context switching in a semantic processor
WO2007014276A2 (en) * 2005-07-25 2007-02-01 Hercules Software, Llc Direct execution virtual machine
US20070022275A1 (en) * 2005-07-25 2007-01-25 Mistletoe Technologies, Inc. Processor cluster implementing conditional instruction skip
US20080022401A1 (en) * 2006-07-21 2008-01-24 Sensory Networks Inc. Apparatus and Method for Multicore Network Security Processing
US8117530B2 (en) * 2007-02-19 2012-02-14 International Business Machines Corporation Extensible markup language parsing using multiple XML parsers
US9424339B2 (en) 2008-08-15 2016-08-23 Athena A. Smyros Systems and methods utilizing a search engine
US9286892B2 (en) 2014-04-01 2016-03-15 Google Inc. Language modeling in speech recognition
CN110737628A (zh) * 2019-10-17 2020-01-31 辰芯科技有限公司 一种可重构处理器和可重构处理器系统
CN114679504B (zh) * 2022-05-27 2022-09-06 成都数联云算科技有限公司 Udp报文解析方法、装置及计算机设备

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4837735A (en) * 1987-06-09 1989-06-06 Martin Marietta Energy Systems, Inc. Parallel machine architecture for production rule systems
US5193192A (en) 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Vectorized LR parsing of computer programs
US5487147A (en) 1991-09-05 1996-01-23 International Business Machines Corporation Generation of error messages and error recovery for an LL(1) parser
US5805808A (en) 1991-12-27 1998-09-08 Digital Equipment Corporation Real time parser for data packets in a communications network
US5632034A (en) * 1993-06-01 1997-05-20 International Business Machines Corporation Controlling method invocation sequence through virtual functions in an object-oriented class library
US5581696A (en) 1995-05-09 1996-12-03 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging
US6493761B1 (en) 1995-12-20 2002-12-10 Nb Networks Systems and methods for data processing using a protocol parsing engine
US5793954A (en) 1995-12-20 1998-08-11 Nb Networks System and method for general purpose network analysis
US6034963A (en) 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US5916305A (en) 1996-11-05 1999-06-29 Shomiti Systems, Inc. Pattern recognition in data communications using predictive parsers
AU734115B2 (en) 1997-05-08 2001-06-07 Nvidia Corporation Hardware accelerator for an object-oriented programming language
US6330659B1 (en) 1997-11-06 2001-12-11 Iready Corporation Hardware accelerator for an object-oriented programming language
US6122757A (en) 1997-06-27 2000-09-19 Agilent Technologies, Inc Code generating system for improved pattern matching in a protocol analyzer
US5991539A (en) 1997-09-08 1999-11-23 Lucent Technologies, Inc. Use of re-entrant subparsing to facilitate processing of complicated input data
US6341130B1 (en) * 1998-02-09 2002-01-22 Lucent Technologies, Inc. Packet classification method and apparatus employing two fields
US6208649B1 (en) * 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6119215A (en) * 1998-06-29 2000-09-12 Cisco Technology, Inc. Synchronization and control system for an arrayed processing engine
US6145073A (en) 1998-10-16 2000-11-07 Quintessence Architectures, Inc. Data flow integrated circuit architecture
US6356950B1 (en) 1999-01-11 2002-03-12 Novilit, Inc. Method for encoding and decoding data according to a protocol specification
US6763499B1 (en) 1999-07-26 2004-07-13 Microsoft Corporation Methods and apparatus for parsing extensible markup language (XML) data streams
US6549916B1 (en) 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US6772413B2 (en) 1999-12-21 2004-08-03 Datapower Technology, Inc. Method and apparatus of data exchange using runtime code generator and translator
US6985964B1 (en) 1999-12-22 2006-01-10 Cisco Technology, Inc. Network processor system including a central processor and at least one peripheral processor
US6892237B1 (en) 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
US6952666B1 (en) * 2000-07-20 2005-10-04 Microsoft Corporation Ranking parser for a natural language processing system
JP3690730B2 (ja) * 2000-10-24 2005-08-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造回復システム、構文解析システム、変換システム、コンピュータ装置、構文解析方法、及び記憶媒体
US20020116527A1 (en) * 2000-12-21 2002-08-22 Jin-Ru Chen Lookup engine for network devices
US20020083331A1 (en) * 2000-12-21 2002-06-27 802 Systems, Inc. Methods and systems using PLD-based network communication protocols
US7379475B2 (en) 2002-01-25 2008-05-27 Nvidia Corporation Communications processor
US8218555B2 (en) 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
US6587750B2 (en) 2001-09-25 2003-07-01 Intuitive Surgical, Inc. Removable infinite roll master grip handle and touch sensor for robotic surgery
US6920154B1 (en) * 2001-12-17 2005-07-19 Supergate Technology Usa, Inc. Architectures for a modularized data optimization engine and methods therefor
US7535913B2 (en) 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7426634B2 (en) * 2003-04-22 2008-09-16 Intruguard Devices, Inc. Method and apparatus for rate based denial of service attack detection and prevention

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1784018A2 (en) 2005-11-08 2007-05-09 Korea Electronics Technology Institute Method of providing user information-based search using get_data operation in TV anytime metadata service
KR100681199B1 (ko) * 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치

Also Published As

Publication number Publication date
US20070083858A1 (en) 2007-04-12
EP1590744A4 (en) 2007-12-05
JP4203023B2 (ja) 2008-12-24
JP2006513667A (ja) 2006-04-20
US7130987B2 (en) 2006-10-31
US20040148415A1 (en) 2004-07-29
EP1590744A2 (en) 2005-11-02
TW200419443A (en) 2004-10-01
CA2513097A1 (en) 2004-08-12
WO2004068271A3 (en) 2005-02-10
AU2003290817A1 (en) 2004-08-23
AU2003290817A8 (en) 2004-08-23
CN1742272A (zh) 2006-03-01
TWI239475B (en) 2005-09-11
WO2004068271A2 (en) 2004-08-12

Similar Documents

Publication Publication Date Title
US20070083858A1 (en) Reconfigurable semantic processor
US7478223B2 (en) Symbol parsing architecture
EP1581841B1 (en) Methods and apparatuses for evaluation of regular expressions of arbitrary size
US9916145B2 (en) Utilizing special purpose elements to implement a FSM
US7529746B2 (en) Search circuit having individually selectable search engines
US7539032B2 (en) Regular expression searching of packet contents using dedicated search circuits
US7644080B2 (en) Method and apparatus for managing multiple data flows in a content search system
US7624105B2 (en) Search engine having multiple co-processors for performing inexact pattern search operations
US7539031B2 (en) Inexact pattern searching using bitmap contained in a bitcheck command
US20050281281A1 (en) Port input buffer architecture
WO2004063886A2 (en) Methods and apparatuses for evaluation of regular expressions of arbitrary size
US20070043871A1 (en) Debug non-terminal symbol for parser error handling
US11861171B2 (en) High-throughput regular expression processing with capture using an integrated circuit
JP2006505043A (ja) ハードウェアパーサアクセラレータ
US11983122B2 (en) High-throughput regular expression processing with path priorities using an integrated circuit
US20230342068A1 (en) High-throughput regular expression processing using an integrated circuit

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application