KR100468800B1 - 네트워크 프로세서 - Google Patents

네트워크 프로세서 Download PDF

Info

Publication number
KR100468800B1
KR100468800B1 KR10-2002-7002332A KR20027002332A KR100468800B1 KR 100468800 B1 KR100468800 B1 KR 100468800B1 KR 20027002332 A KR20027002332 A KR 20027002332A KR 100468800 B1 KR100468800 B1 KR 100468800B1
Authority
KR
South Korea
Prior art keywords
memory
frame
data
processors
substrate
Prior art date
Application number
KR10-2002-7002332A
Other languages
English (en)
Other versions
KR20020024332A (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 KR20020024332A publication Critical patent/KR20020024332A/ko
Application granted granted Critical
Publication of KR100468800B1 publication Critical patent/KR100468800B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/04Selecting arrangements for multiplex systems for time-division multiplexing
    • H04Q11/0428Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
    • H04Q11/0478Provisions for broadband connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management

Abstract

반도체 기판상에 형성된 다수의 인터페이스 프로세서와 다수의 메모리 소자의 협력에 의해 데이터 플로우 핸들링 및 유연성이 향상되는 네트워크 스위칭 장치, 이 장치를 위한 콤포넌트 및 이러한 장치의 동작 방법을 개시한다. 이 메모리 소자와 인터페이스 프로세서는 함께 네트워크 프로세서를 형성하여, 네트워크의 데이터 플로우를 감독하는 인스트럭션의 실행에 있어서 다른 소자와 협력할 수 있다. 메모리 소자로의 액세스는 특정 방식 및 동작 룰하에서 제어되어 다수의 프로세서에 의해 다수의 메모리로의 다중 액세스가 제공된다.

Description

네트워크 프로세서{NETWORK PROCESSOR}
이하에 기술되는 상세한 설명은 네트워크 데이터 통신과 이러한 통신 네트워크에 사용되는 스위치 및 라우터에 대한 지식을 지득하고 있다는 사실을 전제로 한다. 특히, 상세한 설명은 네트워크 동작을 계층으로 분리하는 네트워크 아키텍쳐의 ISO 모델을 잘 알고 있다는 것을 전제로 한다. ISO 모델 기반의 통상의 아키텍쳐는 신호가 상향 전달되는 물리적인 경로 또는 미디어인 계층 1(이것은 때때로 "L1"으로 표시됨)로부터 계층 2, 계층 3, 계층 4등을 통해 계층 7로 확장한다. 여기서 마지막에 언급된 계층은 네트워크에 링크된 컴퓨터 시스템상에서 동작하는 애플리케이션 프로그램 계층이다. 본 출원에서 L1, L2 등의 이름은 네트워크 아키텍쳐의 대응 계층을 지시하기 위한 것이다. 또한, 본 발명은 이러한 네트워크 통신에서 패킷 및 프레임으로 알려진 비트 스트링에 대한 기본적인 이해를 전제로 하고 있다.
오늘날의 네트워크화된 세계에서 밴드 폭은 중요한 자원이다. 인터넷 및 다른 출현 애플리케이션에 의해 야기된 네트워크 트래픽의 증가는 네트워크 인프라구조의 처리 능력을 압박하고 있다. 이에 보조를 맞추기 위해, 여러 기구(organizations)들은 트래픽 증가 및 음성과 데이터의 수렴을 지원하고 관리하기 위한 보다 나은 기술 및 방법론을 기대하고 있다.
오늘날 네트워크 트래픽의 폭증은 인터넷의 대중화, 정보에 대한 원격 액세스 요청의 증가 및 출현 애플리케이션에 기인한 것일 수 있다. 전자 상거래의 폭발적인 증가로 종종 인터넷 자체만으로도 네트워크 백본에 지원 불가능한 부하를 가하고 있다. 또한, 이것은 처음으로 음성 트래픽을 초과하는 증가된 데이터 트래픽 볼륨을 초래하는 가장 중요한 원인이기도 하다. 전자 메일, 데이터베이스 액세스 및 파일 전송을 포함하는 원격 액세스 애플리케이션에 대한 요청의 증가는 네트워크를 더 압박하고 있다.
음성과 데이터의 수렴은 장래의 네트워크 환경을 정의하는 데 큰 역할을 할 것이다. 현재는 인터넷 프로토콜(IP)를 통한 데이터의 전송이 자유롭다. 음성 통신은 자연적으로 가장 낮은 비용의 경로를 따를 것이며, 음성이 데이터와 수렴하는 것이 불가피하게 될 것이다. 보이스 오버 IP(Voice over IP; VoIP) 및 보이스 오버 프레임 릴레이(VoFR)가 이러한 변화하는 시장에서 비용 효율적인 대안이다. 그러나, 이러한 기술로의 이전을 가능하게 하기 위해서, 산업계는 음성에 대한 서비스 품질(QoS)을 보장하고 데이터 라인을 통한 음성 전송에 대한 부담 비용을 결정해야만 한다. 1996년의 원격 통신 규제 철폐법(Telecommunication Deregulation Act)은 이 환경을 더 복잡하게 한다. 이 법률은 선택된 음성 프로토콜 ATM 및 선택된 데이터 프로토콜 IP간의 공생 관계를 강화할 것이다.
또한, 새로운 제품과 기능이 사용 가능하게 됨에 따라 기존 시스템의 통합이 기구들의 매우 중요한 관심사가 되고 있다. 기존의 장치 및 소프트웨어에 대한 그들의 투자를 보존하기 위해, 기구들은 이들의 현시점에서의 동작을 방해하는 일이 없이 새로운 기술로 이전하게 하는 해결책을 요청하고 있다.
네트워크의 병목 현상을 제거하는 것은 서비스 공급자들에게 여전히 가장 우선적인 것이다. 라우터는 때때로 이들 병목 현상의 근원이다. 그러나, 가끔 일반적인 네트워크 혼잡(congestion)은 밴드폭 문제로 오진되어, 높은 밴드폭 솔루션을 찾는 것에 의해 접근되기도 한다. 오늘날, 제조업자들은 이러한 문제를 인식하고 있다. 이들은 밴드폭 자원을 보다 효율적으로 관리하고 와이어 속도(wire speed)에서 개선된 데이터 서비스를 제공하기 위해 라우터나 네트워크 애플리케이션 서버에 공통적으로 존재하는 네트워크 프로세서 기술로 전환하고 있다. 이들 서비스는 로드 밸런싱, QoS, 게이트웨이, 방화벽, 보안 및 웹 캐싱(web caching)을 포함한다.
원격 액세스 애플리케이션을 위해, 성능, 요청 밴드폭, 보안 및 인증(authentification)이 우선 순위로 분류된다. QoS와 CoS의 통합, 통합 음성 처리 및 보다 복잡한 보안 솔루션에의 요청가 장래의 원격 액세스 스위치 설계를 결정하게 될 것이다. 또한, 원격 액세스는 ISDN, T1, E1, OC-3 내지 OC-48, 케이블 및 xDSL 모뎀과 같은 물리적 매체의 갯수 증가를 수용해야 할 것이다.
산업계의 컨설턴트들은 하나 또는 그 이상의 다음 기능들을 수행할 수 있는 프로그램 가능한 통신 집적 회로로 네트워크 프로세서(여기서는 "NP"로도 불리움)를 정의하고 있다.
패킷 분류(packet classification) -- 어드레스 또는 프로토콜과 같은 기지(旣知)의 특성에 기반한 패킷을 확인함.
패킷 수정(packet modification) -- IP, ATM 또는 다른 프로토콜과 부합되도록 패킷을 수정함(예컨대, IP 헤더의 TTL(time to live) 필드를 갱신하는 것).
큐/정책 관리(Que/policy management) -- 패킷 큐잉(queuing), 디-큐잉(de-queuing) 및 특정 애플리케이션용의 패킷 스케쥴링을 위한 설계 전략을 반영함.
패킷 전송(packet forwarding) -- 스위치 패브릭(fabric)을 통한 데이터의 송신 및 수신, 적당한 어드레스로 패킷의 전송 또는 라우팅.
비록 이 정의는 초기 NP의 기본 특징에 대한 정확한 기술이지만, 실현되어야 할 NP의 완전한 기능 및 장점은 더 남아있다. 네트워크 프로세서는 소프트웨어에서 사전 처리되던 네트워킹 작업(task)을 하드웨어에서 실행되도록 함으로써 밴드폭을 증가시킬 수 있고 광범위한 애플리케이션에서 대기 시간 문제를 해결할 수 있다. 더욱이, NP는 병렬 분산(parallel distributed) 프로세싱 및 파이프 라인(pipeline) 프로세싱 설계와 같은 아키텍쳐를 통해 속도 향상을 제공할 수 있다. 이러한 기능은 효율적인 검색 엔진을 가능하게 하고, 쓰루풋(throughput)을 증가시키며, 복잡한 작업의 신속한 실행을 제공한다.
네트워크 프로세서는 PC에 있어서의 CPU처럼 네트워크에 대해 기본적인 네트워크 구축 블록(building block)이 될 것으로 기대된다. NP에 의해 제공되는 전형적인 기능은 실시간 프로세싱, 보안, 저장 및 전송, 스위치 패브릭 및 IP 패킷 핸들링 및 학습 기능이다. NP는 ISO 계층 2 내지 5를 목표로 하며 네트워크 전용 작업을 최적화하도록 설계되어 있다.
프로세서형(processor-model) NP는 다수의 범용 프로세서와 전용 로직을 포함한다. 공급자는 확장 가능하고 유연한 솔루션을 제공하여 즉시에 비용 효율적으로 변화를 수용할 수 있는 설계로 전환하고 있다. 프로세서형 NP는 보다 낮은 통합 레벨에서의 분산 프로세싱을 가능케 하므로, 높은 쓰루풋을 제공하고, 유연성 및 제어를 향상시킨다. 프로그램 가능성은 새로운 ASIC 설계를 요청하는 일이 없이 새로운 프로토콜 및 기술로의 손쉬운 이전을 가능하게 할 수 있다. 프로세서형 NP의 사용으로 NEV는 반환 불가능한 설계 비용의 감소 및 개선된 시장 즉시성(time-to-market)으로부터 이득을 얻게 된다.
본 발명은 정보 처리 시스템 또는 다양한 타입 및 기능을 갖는 컴퓨터와 함께 링크하여 사용되는 통신 네트워크 장치 및 이 장치의 콤포넌트에 관한 것이다. 보다 상세하게 말하자면, 본 발명은 확장 가능한 스위치(switch) 및 이 장치를 조립하는 데 유용한 콤포넌트에 관한 것이다. 본 발명은 미디어 스피드(media speed) 네트워크 스위치를 제공하기 위한 개선된 다기능 인터페이스 디바이스 및 이 디바이스의 다른 소자와의 결합에 관한 것이다. 또한, 본 발명은 이러한 장치의 네트워크 스위치의 데이터 플로우 처리 능력을 개선하는 작동 방법에 관한 것이다.
도 1은 본 발명에 따른 인터페이스 디바이스에 대한 블록도.
도 1a는 MAC에 대한 블록도.
도 2의 (a) 내지 도 2의 (d)는 상이한 시스템 구성에서 다른 콤포넌트와 연결된 인터페이스 디바이스를 도시한 도면,
도 3은 밀봉된 가이드 프레임의 플로우 및 프로세싱을 도시한 도면.
도 4는 내부 가이드 프레임의 플로우 및 프로세싱을 도시한 도면.
도 5는 가이드 셀(Guided Cell)에 대한 일반화된 포맷을 도시한 도면.
도 6은 프레임 제어 정보(Frame Control Information)에 대한 포맷을 도시한 도면.
도 7은 상관기(Correlator)에 대한 포맷을 도시한 도면.
도 8은 인스트럭션 제어 정보 포맷(Command Control Information Format)을 도시한 도면.
도 9는 어드레싱 정보 포맷(Addressing Information Format)을 도시한 도면.
도 10은 구조 어드레싱(Structure Addressing)의 일반 포맷(General Format)을 도시한 도면.
도 11은 어드레싱, 아일런드 인코딩(Island Encoding)을 도시한 챠트.
도 12a는 내장 복합 프로세서(Embedded Processor Complex)의 블록도.
도 12b는 내장 프로세서(Embeded Processor)의 개략도.
도 12c는 GxH 프로세서에 대한 구조를 도시한 도면.
도 13은 복합 메모리(memory complex)의 블록도.
도 14는 고정 매치(Fixed Match; FM) 검색 알고리즘을 도시한 흐름도.
도 15는 직접 테이블(Direct Table)을 사용하지 않은 경우와 사용한 경우의 데이터 구조(Data Structure)를 도시한 도면.
도 16은 프리즈마(Prizma)와 같은 스위칭 시스템의 블록도.
도 17은 CP의 블록도.
도 18은 EDS-UP, EDS-DOWN 및 EPC 기능을 강조한 단일칩 네트워크 프로세서의 블록도.
본 발명의 일목적은 전송되고 있는 데이터의 핸들링 속도를 개선하는 동시에 지원 능력을 일정한 범위의 잠재 요청 수준까지 확장할 수 있는 데이터 통신 네트워크에서 사용되는 확장성 스위치 아키텍쳐를 제공하는 것이다. 이 목적은 콤포넌트와 콤포넌트의 어셈블리를 제공함으로써 수행되는데, 이들은 프로세싱 유닛의 작업 부하에서 종전의 경우보다 큰 데이터 핸들링량을 제거하게 된다.
본 발명의 다른 목적은 단일 기판에 집적되어 계층 2, 계층 3, 계층 4 및 계층 5를 포함하는 프레임의 미디어 속도 전환을 제공하기 위해 협력하는 다수의 서브 어셈블리를 포함하는 인터페이스 디바이스 또는 네트워크 프로세서를 제공하는 것이다. 이 인터페이스 디바이스는 작업 그룹(work group) 스위치용으로 제1 레벨의 지원 능력을 제공하는 독립된 솔루션, 작업 그룹 스위치용으로 보다 높은 레벨의 지원 능력을 제공하는 상호 연결된 솔루션 또는 스위칭 패브릭 디바이스와 상호 작용하여 상향 추가 확장된 지원 능력을 제공하기 위한 솔루션으로 사용될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 양호한 실시예를 상세히 설명한다. 관련 분야의 숙련자는 이하 기술되는 본 발명을 변형하여 본 발명의 바람직한 결과를 달성할 수 있다는 것이 이해되어야 한다. 따라서, 이하 기술되는 상세한 설명은 관련 분야의 숙련자를 대상으로 한 광의의 교시(敎示)로서 이해되어야 하며, 본 발명을 제한하는 것으로 이해되어서는 안된다.
여기에서 기술되는 장치는 확장 가능하고, 데스크톱 또는 작업 그룹 스위치를 연결하고, 이들 스위치를 네트워크 백본에 총화(aggregate)할 수 있으며, 백본 스위치 서비스를 제공하는 기능을 행할 수 있다. 이 장치는 하드웨어내에서 계층 2, 계층 3, 계층 4+ 전송을 지원할 수 있다. 데스크 톱 또는 작업 그룹 스위치의 총화를 위해 특정 형태의 장치가 고안되며, 다른 장치가 코어 백본 스위치로서 고안된다.
이 장치에 사용된 아키텍쳐는 인터페이스 디바이스 또는 네트워크 프로세서 하드웨어 서브 시스템과 제어 포인트(control point)에서 동작하는 소프트웨어 라이브러리를 기반으로 한다. 이들 모두는 이 출원의 다른 곳에서 보다 상세히 기술된다. 인터페이스 디바이스 또는 네트워크 프로세서 서브 시스템은 L2, L3 및 L4+ 프로토콜 헤더의 분석 및 해석을 위해 설계되는 고성능 프레임 전송 엔진이다. 이것은 프로토콜이 하드웨어를 사용하여 보다 높은 속도로 스위치될 수 있게 한다. 인터페이스 디바이스 또는 네트워크 서브 시스템이 이 장치(box)를 통한 고속 경로(fast-path)를 제공하는 반면, 소프트웨어 라이브러리와 제어 포인트 프로세서는 이 고속 경로를 유지하기 위해 요청되는 관리 및 루트 디스커버리(route discovery) 기능을 제공한다. 제어 포인트 프로세서와 여기서 동작하는 소프트웨어 라이브러리는 함께 시스템의 제어 포인트(Control Point; CP)를 정의한다. CP는 투명 브릿징(Transparent Bridging) 및 OSPF와 같은 실제의 브릿징 및 라우팅 프로토콜이 동작하는 장소이다. 또한, 이것은 시스템의 저속 경로(slow-path)로 불려질 수도 있다.
이 출원에 기술된 장치는 하드웨어내에서 다계층 전송을 지원할 수 있는 동시에 L2 계층만의 스위치로서 동작할 수 있으며, 이것은 개시된 가장 단순한 형태의 디폴트 동작 모드이다. 각 포트는 단일 도메인하에 두어져, 어떤 디바이스가 다른 임의의 디바이스와 통신하도록 허용하게 될 것이다. 이 장치는 L2 계층에서 구성 가능(configurable)하므로, 시스템 관리자로 하여금 포트의 개별 도메인 또는 트렁크(trunk)로의 그룹화, 가상(Virtual) LAN 세그먼트의 설계, 또는 브로드캐스트(braodcast) 및 멀티캐스트(multicast) 트래픽을 제어하는 필터와 같은 특징을 구성(configure)할 수 있도록 한다.
이 확장 가능한 장치는 많은 장점을 가진다. 먼저, 이 장치는 시스템 관리자가 IP 및 IPX 트래픽의 L3 전송 및 라우팅을 구성할 기능을 가질 수 있도록 한다. 두번째로, 이 장치는 성능 향상과 동시에 캠퍼스 빌딩(campus buiding)을 연결하기 위해 외부 라우터를 사용할 필요성을 없앨 수 있다. 세번째로, 이 장치는 하나의 빌딩을 위한 L2/L3 서비스의 관리를 단순화하거나 단일한 제어 포인트로 결합할 수 있다. 마지막으로, 이 장치는 시스템 관리자가 임무 결정적(mission critical) 애플리케이션 및 서버들간의 부하 밸런싱(load balancing)을 위한 네트워크 디스패쳐(dispatcher)를 지원하기 위해 상이한 트래픽 분류화를 지정할 수 있도록 L4+ 기능을 가진 부가 가치 특성(value added feature)을 제공한다.
이 장치는 인터페이스 디바이스나 네트워크 프로세서, 제어 포인트(CP), 및 부가적인 스위칭 패브릭 디바이스를 기본적인 구축 블록으로 사용하는 모듈화 유닛이 되도록 설계된다. 인터페이스 디바이스는 CP가 고속 경로를 유지하기 위해 요청된 관리 및 루트 디스커버리 기능을 제공하는 동안 L2/L3/L4+ 고속 경로 전송 서비스를 제공한다. 부가 스위칭 패브릭 디바이스는 둘 이상의 인터페이스 디바이스 서브 시스템이 서로 연관될 때 사용된다. 이 부가 스위칭 패브릭 디바이스는 1991년 4월 16일에 발행된 "회로 및 패킷 스위치 트래픽을 위한 고속 모듈화 스위칭 장치"라는 제하의 미국 특허 공보 제5,008,878호에 기재된 것일 수 있다.
이 장치는 이하에서 "블레이드(blades)"로 언급되기도 하는 인쇄 회로 기판 소자를 사용하여 조립되는 것으로 예정될 수 있다. 인쇄 회로 기판 소자는, 인쇄 회로 기판 소자상에 장착되며 장치 하우징내에 제공된 커넥터에 수용되는 회로 소자를 구비하고 있다. 이와 유사한 디바이스를 "옵션 카드"로 부르기도 한다. 이 장치는, 적당한 커넥터와 후면(backplane) 전기 접속부가 제공되기만 하면 변화하는 새시 또는 하우징들간에 블레이드가 교환 가능하다는 것을 고려하고 있다. 모든 블레이드에서 발견되는 기본적인 콤포넌트는 캐리어 서브 시스템이다. 캐리어 서브 시스템에서부터 시작하면, 3개의 블레이드 타입이 생성될 수 있다. 첫번째 타입은 캐리어 서브 시스템과 CP 서브 시스템으로 구성된 CP 전용 블레이드이다. CP 전용 블레이드는 리던던시(redundancy)가 중요한 관심사인 경우의 제품에 주로 사용된다. 두번째 타입은 캐리어 서브 시스템, CP 서브 시스템 및 1-to-3 미디어 서브 시스템으로 구성된 CP+ 미디어(Media) 블레이드이다. CP+ 미디어 블레이드는 리던던시보다 포트 밀도가 더 중요한 경우의 제품에 주로 사용된다. 세번째 타입은 캐리어 서브 시스템과 1-to-4 미디어 서브 시스템으로 구성된 미디어 블레이드이다. 이 미디어 블레이드는 임의의 새시 및 사용된 미디어 서브 시스템의 타입이 구성 가능한 경우에 사용될 수 있다.
블레이드 관리는 폴트(fault) 감지, 전원 관리, 신규 장치 감지, 초기화, 및 구성화(configuration)를 포함한다. 이 관리는 다양한 레지스터, I/O 신호, 및 CP와 캐리어 서브 시스템간의 통신에 사용되는 가이드된 셀 인터페이스를 사용하여 수행될 수 있다. 그러나, 새시와는 달리 여기에는 모든 블레이드상의 프로그램 가능한 디바이스와 메모리는 존재하지 않는다. 프로그램 가능성의 정도는 블레이드의 타입에 의존한다. CP 서브 시스템이 블레이드상에 존재할 때, CP와 캐리어 서브 시스템 모두가 프로그램 가능하다. 또한, 미디어 서브 시스템은 캐리어 서브 시스템을 통하여 간접적으로 프로그램 가능하다.
보다 고성능의 제품에는 스위칭 패브릭 디바이스를 포함하는 스위치 블레이드(Switch Blade)가 존재한다. 이 블레이드의 관리는 폴트 감지, 전원 관리, 신규 장치 감지 및 초기화를 포함할 것이다. 이 관리는 CP 서브 시스템에서 맵핑되는 다양한 레지스터 및 I/O 신호를 사용하여 행해질 수 있다.
본 발명에 의해 안출되는 가장 단순한 형태의 스위치는 제어 포인트 프로세서; 및 이 제어 포인트 프로세서에 동작 가능하게 연결된 인터페이스 디바이스를 구비한다. 바람직하게는 상기 인터페이스 디바이스(네트워크 프로세서로도 알려짐)는 반도체 기판; 상기 기판상에 형성된 다수의 인터페이스 프로세서; 상기 기판상에 형성되고 상기 인터페이스 프로세서에 액세스 가능하게 인스트럭션을 저장하는 내부 인스트럭션 메모리 및 상기 기판상에 형성되고 상기 디바이스를 통해 상기 인터페이스 프로세서에 액세스 가능하게 데이터를 저장하는 내부 데이터 메모리; 및 다수의 입력/출력 포트를 포함하는 단일 VLSI 회로 디바이스 또는 칩이다. 상기 인터페이스 프로세서는 때때로 여기에서 피코프로세서 또는 프로세싱 유닛으로 언급되기도 한다. 제공되는 포트는 내부 데이터 메모리를 외부 데이터 메모리와 연결하는 최소한 하나의 포트와 인터페이스 프로세서의 감독하에 인터페이스 디바이스를 통과하는 데이터를 외부 네트워크와 스위칭하는 최소한 2개의 다른 포트를 포함한다. 제어 포인트는 인터페이스 프로세서에 의해 실행될 인스트럭션을 인스트럭션 메모리로 로딩함으로써 데이터 교환 입력/출력 포트간의 데이터 교환 및 데이터 메모리를 통한 데이터의 흐름을 감독하는 데 있어서 인터페이스 디바이스와 서로 협력한다.
여기에 기술되는 네트워크 프로세서는 이것이 합체될 스위치 어셈블리와는 별도로 발명 가치가 있는 것으로 해석된다. 또한, 이 출원에 기술되는 네트워크 프로세서는 여기에 기술되는 다른 발명 및 여기에 완전히 기술되지 않은 다른 발명도 그 소자로 포함하는 것으로 해석된다.
도 1은 기판(10)과 기판에 집적된 다수의 서브 어셈블리를 포함하는 인터페이스 디바이스 칩에 대한 블록도를 도시하고 있다. 서브 어셈블리는 상부 구성 및 하부 구성으로 배열되어 있다. 여기에서, "업 사이드(Upside)"란 데이터가 네트워크로부터 장치로 귀환(inbound)하는 것을 말하며, "다운 사이드(Downside)"는 장치로부터 데이터가 상기 장치에 의해 서비스되는 네트워크로 나가는(outbound) 것을 말한다. 그 결과, 여기에는 업 사이드 데이터 플로우와 다운 사이드 데이터 플로우가 있게 된다. 업 사이드의 서브 어셈블리는 인큐-디큐 스케쥴링 업 로직(Enqueue-Dequeue-Scheduling UP; EDS-UP; 16), 멀티플렉스된 MAC's-UP(PPM-UP; 14), 스위치 데이터 무버-업(Switch Data Mover-UP; SDM-UP; 18), 시스템 인터페이스(SIF; 20), 데이터 정렬 직렬 링크 A(Data Align Serial Link A; DASLA; 22) 및 데이터 정렬 직렬 링크 B(Data Align Serial Link B; DASLB; 24)를 포함한다. 데이터 정렬 직렬 링크는 1999년 6월 11일 출원된 "데이터 통신에서의 고속 병렬/직렬 링크"라는 제하의 미국 특허 출원 일련 번호 제09/330,968호에 보다 상세히 기술되어 있다. 본 발명에서 바람직한 형태의 장치는 DASL 링크를 사용하지만, 본 발명은 상대적으로 높은 데이터 플로우 속도를 달성하기 위해, 특히 데이터 플로우가 VLSI 구조내에서만 존재하도록 한정되는 곳에서 채용될 수 있는 다른 형태의 링크도 염두에 두고 있다.
다운 사이드의 서브 어셈블리는 DASL-A(26), DASL-B(28), SIF(30), SDM-DN(32), EDS-DN(34), 및 PPM-DN(36)을 포함한다. 이칩은 또한 다수의 내부 S-RAM, 트래픽 관리 스케쥴러(40), 및 내장 프로세서 콤플렉스(Embedded Processor Complex; EPC; 12)를 포함한다. 인터페이스 디바이스(38)는 개별 DMU 버스에 의해 PMM(14 및 36)에 결합된다. 인터페이스 디바이스(38)는 이더넷 피지컬(ethernet Physical; ENET PHY), ATM 프레이머(Framer) 등과 같은 임의의 적당한 L1 회로부일 수 있다. 인터페이스의 타입은 칩이 접속되는 네트워크 미디어에 의해 어느 정도는 지정된다. 다수의 외부 D-RAM 및 S-RAM이 칩에 의해 이용 가능하다.
이 출원에서는 관련 스위치 및 라우팅 디바이스 외부의 일반적인 데이터 플로우가 빌딩 내에 설치된 도선 및 케이블과 같은 전기적 전도체를 통과하는 네트워크에 대해 상세히 기술되어 있지만, 본 발명은 기술된 네트워크 스위치 및 그 콤포넌트가 무선 환경에서도 사용될 수 있다는 점을 고려하고 있다. 예시적인 실시예를 통해, 여기에 기술된 미디어 액세스 제어(MAC) 소자는 기지(旣知)의 실리콘 게르마늄(Silicon Germanium) 기술을 사용하는 적당한 무선 주파수 구성 소자에 의해 대체될 수 있다. 이것은 여기에 기술되는 상기 소자들을 무선 네트워크에 직접 링크할 수 있게 한다. 이러한 기술이 적절하게 채용되면, 무선 주파수 구성 소자는 이 응용 분야의 적당한 숙련자에 의해 VLSI 구조로 집적될 수 있다. 별법으로, 무선 주파수 디바이스 또는 적외선 응답 디바이스와 같은 다른 무선 응답 디바이스를 블레이드에 탑재함으로써 무선 네트워크 시스템에 유용하게 사용될 수 있는 스위치를 얻을 수 있다.
화살표는 인터페이스 디바이스내에서 데이터의 일반적인 플로우를 도시하고 있다. 이더넷 MAC로부터 수신된 프레임은 EDS-UP에 의해 내부 데이터 스토어(Data Store) 버퍼에 위치된다. 이들 프레임은 정상 데이터 프레임(normal Data Frame) 또는 시스템 제어 가이드 프레임(system control Guided Frame) 중의 하나로 식별되어 EPC로 인큐(enqueue)된다(도1 참조). EPC는 N(N>1) 개의 프레임까지 병렬로 작업할 수 있는 N 개의 프로토콜 프로세서를 포함한다. 10개의 프로토콜 프로세서를 갖는 실시예(도 12b)에서, 10개의 프로토콜 프로세서 중 2개가 특정되는데, 하나(범용 중앙 핸들러(Generic Central Handler; GCH))는 가이드 프레임의 핸들링용이고, 다른 하나(범용 트리 핸들러(Generic Tree Handler; GTH))는 제어 메모리의 룩업 데이터(Lookup Data) 구축용이다. 도 12a에 도시된 바와 같이, EPC는 또한 새로운 프레임을 유휴 프로세서에 매치시키는 디스패쳐, 프레임 시퀀스를 유지하는 완료 유닛(completion unit), 10개의 모든 프로세서에 의해 공유되는 공통 인스트럭션 메모리(common instruction memory), 프레임 분류를 정하고 프레임의 개시 인스트럭션 어드레스의 결정에 조력하는 코프로세서(coprocessor)를 결정하는 분류화 하드웨어 지원부(Classifier Hardware Assist), 프레임 버퍼의 판독 및 기록 동작을 제어하는 진입 및 퇴출 데이터 스토어 인터페이스(Ingress and Egress Data Store interface), 10개의 프로세서가 제어 메모리, 웹 제어기(Web Control), 중재기(Arbiter) 및 내부 인터페이스 디바이스 데이터 구조로의 디버그(debug) 액세스를 가능하게 하는 인터페이스를 공유하도록 하는 제어 메모리 중재기(Control Memory Arbiter)를 포함한다.
가이드 프레임(Guided Frame)이 이용 가능하게 되면 디스패쳐에 의해 GCH 프로세서로 송신된다. 레지스터 기록, 카운터 판독, 이더넷 MAC 구성 변화 등과 같은 가이드 프레임내에 인코드 되어 있는 동작이 실행된다. MAC 또는 IP 엔트리의 추가와 같은 룩업 테이블의 변경은 메모리 판독 및 기록과 같은 제어 메모리 동작을 위해 룩업 데이터 프로세서로 전달된다. MIB 카운터 판독과 같은 일부 인스트럭션들은 응답 프레임(response frame)이 적당한 인터페이스 디바이스상의 적당한 포트에 구축되고 전송될 것을 요하게 된다. 어떤 경우에 가이드 프레임은 인터페이스 디바이스의 퇴출측을 위해 인코드 된다. 이들 프레임은 질의되고 있는 인터페이스의 퇴출측으로 전송되고, 인코드 된 동작을 실행하여 임의의 적당한 응답 프레임을 구축하게 된다.
데이터 프레임은 프레임 룩업을 수행하기 위해 바로 다음의 이용 가능한 프로토콜 프로세서로 디스패치된다. 프레임 데이터는 분류화 하드웨어 지원부(CHA) 엔진으로부터의 처리 결과와 함께 프로토콜 프로세서로 전달된다. CHA는 IP 또는 IPX를 분석한다. 이 결과는 트리 검색 알고리즘 및 공통 인스트럭션 어드레스(CIA)를 결정한다. 지원되는 트리 검색 알고리즘은 고정 매치 트리(Fixed Match Tree)(계층 2 이더넷 MAC 테이블과 같은 정확한 매치를 요청하는 고정된 사이즈 패턴), 최장 접두 매치 트리(Longest Prefix Match Tree)(서브네트 IP 전송과 같은 가변 길이 매치를 요청하는 가변 길이 패턴) 및 소프트웨어 관리 트리(Software Managed Tree)(필터 룰용으로 사용되는 것과 같은 범위 또는 비트 마스크 세트를 정의하는 두 개의 패턴)을 포함한다.
룩업은 각 프로토콜 프로세서의 일부분인 트리 검색 엔진(TSE) 코프로세서의 협조에 의해 수행된다. TSE 코프로세서는 제어 메모리 액세스를 수행하여, 코프로세서가 실행을 계속할 수 있도록 구속 해제한다. 제어 메모리는 모든 테이블, 카운터, 및 피코 코드에 의해 요청되는 다른 데이터를 저장한다. 제어 메모리 동작은 10개의 복합 프로세서간의 메모리 액세스를 중재하는 제어 메모리 중재기에 의해 관리된다.
프레임 데이터는 데이터 스토어 코프로세서(Data Store Coprocessor)를 통해 액세스된다. 데이터 스토어 코프로세서는 주 데이터 버퍼(프레임 데이터 중 8개의16-바이트 세그먼트까지 보유), 스크래치 패드 데이터 버퍼(역시 프레임 데이터 중 8개의 16-바이트 세그먼트까지 보유) 및 데이터 스토어 동작을 위한 약간의 제어 레지스터를 포함한다. 일단 부합(match)이 발견되면, 진입 프레임 변경은 VLAN 헤더의 삽입 또는 오버레이(overlay)를 포함할 수 있다. 이 변경은 인터페이스 디바이스 프로세서 콤플렉스에 의해 수행되는 것이 아니며, 하드웨어 플래그(flag)가 유도되고 다른 진입 스위치 인터페이스 하드웨어가 이 변경을 수행한다. 다른 프레임 변경은, 피코코드(picocode) 및 데이터 스토어 코프로세서에 의해 진입 데이터 스토어에서 유지되는 프레임의 내용(content)을 수정함으로써 달성될 수 있다.
다른 데이터가 수집되어 스위치 패브릭 디바이스로 프레임을 전송하기 전에 스위치 헤더 및 프레임 헤더를 구축하기 위해 사용된다. 제어 데이터는 프레임의 목적지 블레이드와 같은 스위치 정보 뿐만 아니라, 목적지 포트의 프레임 룩업, 멀티캐스트 또는 유니캐스트 동작, 및 퇴출 프레임 변경을 편리하게 하는 퇴출 인터페이스 디바이스에 대한 정보도 포함한다.
완료시, 인큐 코프로세서는 프레임을 스위치 패브릭에 인큐하는 데 요청되는 포맷들을 구축하고 이들을 완료 유닛으로 송신한다. 완료 유닛은 10개의 프로토콜 프로세서로부터 스위치 패브릭 큐로의 프레임 순서를 보증한다. 스위치 패브릭 큐로부터의 프레임은 프리즈마-E 스위치(Prizma-E Switch)로 전송될 때 삽입된 프레임 헤더 바이트와 스위치 헤더 바이트를 가진 64 바이트 셀로 세그먼트된다.
스위치 패브릭으로부터 수신된 프레임은 퇴출 EDS(34)에 의해 퇴출 데이터 스토어(Egress DS) 버퍼에 위치되며, EPC로 인큐된다. 프레임 룩업을 수행하기 위해 프레임의 일부분이 디스패쳐에 의해 유휴 프로토콜 프로세서로 송신된다. 프레임 데이터는 분류화 하드웨어 지원부(CHA)로부터의 데이터와 함께 프로토콜 프로세서로 디스패치된다. 분류화 하드웨어 지원부는 진입 인터페이스 디바이스에 의해 생성된 프레임 제어 데이터를 사용하여 개시 코드 인스트럭션 어드레스(Code Instruction Address)의 결정을 돕는다.
퇴출 트리 검색은 진입 검색을 지원하는 것과 동일한 알고리즘을 지원한다. 룩업은 TSE 코프로세서로 수행되므로, 프로토콜 프로세서는 실행을 계속할 수 있게 된다. 모든 제어 메모리 동작은 10개의 복합 프로세서간의 메모리 액세스를 지정하는 제어 메모리 중재기에 의해 관리된다.
퇴출 프레임 데이터는 데이터 스토어 코프로세서를 통해 액세스된다. 데이터 스토어 코프로세서는 주 데이터 버퍼(프레임 데이터 중 8개의 16-바이트 세그먼트를 보유), 스크래치 패드 데이터 버퍼(역시 프레임 데이터 중 8개의 16-바이트 세그먼트를 보유), 및 데이터 저장 동작을 위한 약간의 제어 레지스터를 포함한다. 성공적인 룩업 결과는 전송 정보를 포함하고, 일정 경우에는 프레임 변경 정보를 포함한다. 프레임 변경은 VLAN 헤더 삭제, TTL 증가(IPX) 또는 감소(IP), IP 헤더 체크섬(Checksum) 재계산, 이더넷 프레임 CRC 오버레이 또는 삽입 및 MAC DA/SA 오버레이 또는 삽입을 포함할 수 있다. IP 헤더 체크섬은 체크섬 프로세서에 의해 작성된다. 변경은 복합 인터페이스 디바이스 프로세서에 의해 수행되는 것이 아니며, 하드웨어 플래그가 생성되고 PMM 퇴출 하드웨어가 이 변경을 수행하게 된다. 완료시, 인큐 프로세서는 EDS 퇴출 큐내의 프레임을 인큐하기 위해 요청되는 포맷들을 구축하고 완료 유닛으로 이들을 송신하는 데 협조할 책임이 있다. 완료 유닛은 10개의 프로코콜 프로세서로부터 퇴출 이더넷 MAC(36)에 공급하는 EDS 퇴출 큐로의 프레임 순서를 보증한다.
완료된 프레임은 최종적으로 PMM 퇴출 하드웨어에 의해 이더넷 MAC으로 송신되어 이더넷 포트를 벗어난다.
웹(Web)으로 불리는 내부 버스는 내부 레지스터, 카운터 및 메모리로의 액세스를 허용한다. 또한, 이 웹은, 인스트럭션 스텝을 제어하고 디버깅 및 진단을 위해 제어를 인터럽트하는 외부 인터페이스를 포함한다.
트리 검색 엔진 코프로세서는 메모리 범위 체크, 허용되지 않는 메모리 액세스 통지를 제공하고, 프로토콜 프로세서 실행과 병렬 동작하는 트리 검색 인스트럭션(메모리 판독, 기록 또는 판독 부가 기록(read-add-write))을 수행한다.
공통 인스트럭션 메모리는 한 개의 1024 ×128 RAM과 두 세트의 512 ×128 RAM으로 구성된다. 각 세트의 듀얼 RAM은 동일한 피코코드에 대한 두 개의 사본을 제공하여, 프로세서가 동일한 어드레스 범위내에 있는 인스트럭션들에 대해 독립적인 액세스를 할 수 있게 한다. 각 128-비트 워드는 4개의 32-비트 인스트럭션을 포함하여, 전체 8192개의 인스트럭션을 제공한다.
디스패쳐는 10개의 프로토콜 프로세서로의 프레임의 전달을 제어하고 인터럽트와 타이머를 관리한다.
완료 유닛은 프로세서 콤플렉스로부터 스위치 패브릭 및 타겟 포트 큐로의 프레임 순서를 보증한다. 리치(rich) 인스트럭션 세트는 조건부 실행, 패킹(packing)(입력 해시(hash) 키용), 조건부 분기, 승인(sign)되거나 비승인된 동작, 선행 제로(leading zero)의 카운트 등을 포함한다.
분류화 하드웨어 지원부 엔진은 각 프레임의 계층 2 및 계층 3 프로토콜 헤더를 분석하여, 프로토콜 프로세서로 디스패치될 때의 프레임과 함께 이 정보를 제공한다.
제어 메모리 중재기는 내부 및 외부 메모리로 프로세서 액세스를 제어한다.
외부 제어 메모리 옵션은 5 내지 7 개의 DDR DRAM 서브 시스템을 포함하는데, 각각은 한 쌍의 2M ×16 비트 ×4 뱅크 DDR DRAM을 지원한다. DDR DRAM 인터페이스는 133 MHz의 클록 속도 및 구성 가능한 CAS 대기 시간과 드라이브 강도를 갖는 266 MHz의 데이터 스트로브(strobe)에서 동작한다. 부가적인 133 MHz ZBT SRAM이 128K ×36, 2 ×256K ×18 또는 2 ×512K ×18 구성 중 어느 하나에 추가될 수 있다.
퇴출 프레임은 1개의 외부 데이터 버퍼(예컨대, DS0) 또는 2개의 외부 데이터 버퍼(DS0 또는 DS1) 중 어느 하나에 저장될 수 있다. 각 버퍼는 한 쌍의 2M ×16 비트 ×4 뱅크 DDR DRAM(256K 64-바이트 프레임까지 저장) 또는 한 쌍의 4 M ×16 비트 ×4 뱅크 DDR DRAM(512K 64-바이트 프레임까지 저장)으로 구성될 수 있다. 2.28 Mbps용으로 단일 외부 데이터 버퍼(예컨대, DS0)를 선택하거나 4.57Mbps의 계층 2 및 계층 3 스위칭을 지원하기 위해 제2 버퍼(예컨대, DS1)를 추가한다. 제2 버퍼의 추가는 성능을 개선하지만, 프레임 용량을 증가시키지는 않는다. 외부 데이터 버퍼 인터페이스는 133 MHz의 클록 속도와 266 MHz의 데이터 스트로브에서동작하고 구성 가능한 CAS 대기 시간 및 드라이브 강도를 지원한다.
내부 제어 메모리는 2개의 512 ×128 비트 RAM, 2개의 1024 ×36 비트 RAM 및 1개의 1024 ×64 비트 RAM을 포함한다.
내부 데이터 저장 공간은 진입 방향(UP)으로 최대 2048개의 64-바이트 프레임의 버퍼링을 제공한다.
고정 프레임의 변경은 진입 방향으로의 VLAN 태그 삽입, 퇴출 방향으로의 VLAN 태그 삭제, TTL 증가/감소(IP, IPX), 이더넷 CRC 오버레이/삽입 및 MAC DA/SA 오버레이/삽입을 포함한다.
포트 미러링(mirroring)은 프로토콜 프로세서 자원을 사용하는 일이 없이 1개의 수신 포트와 1개의 전송 포트가 시스템 지정 관찰 포트(system designated observation port)로 복사되는 것을 허용한다. 미러링된 인터페이스 디바이스 포트는 프레임 및 스위치 제어 데이터를 추가할 수 있도록 구성된다. 개별적인 데이터 경로는 직접 프레임(direct)이 진입 스위치 인터페이스로 인큐되는 것을 허용한다.
인터페이스 디바이스는 4개의 이더넷 마크로(macro)를 통합한다. 각 마크로는 1 기가비트 또는 10/100 고속 이더넷 모드 중 어느 하나에서 동작할 수 있도록 개별적으로 구성될 수 있다. 각 이더넷 마크로는 최대 10개의 10/100 Mbps MAC를 지원하거나 각각의 이더넷 마크로에 대해 1개의 1000 Mbps MAC를 지원한다.
도 1a는 MAC 코어의 블록도를 도시하고 있다. 각 마크로는 3개의 이더넷 코어 디자인을 포함한다. 즉, 다중 포트(multiport) 10/100 Mbps 코어(Fenet), 1000 Mbps 코어(Genet) 및 물리적 코딩 서브 계층(Physical Coding Sublayer; PCS) 코어이다.
다중 포트 이더넷 10/100 MAC 특성:
물리적 계층에 10개의 직렬 미디엄 독립 인터페이스를 제공.
10 Mbps 또는 100 Mbps 미디어 속도를 갖는 10개의 포트를 임의의 속도 조합(mix)에서 핸들링 가능.
단일한 MAC이 시분할 다중화(Time Division Multiplex) 인터페이스를 갖는 모든 10개의 포트를 서비스.
모든 포트상의 미디어 스피드에서 전이중(full-duplex)/반이중(half-duplex) 방식 동작을 지원.
IEEE 802.3 이진 지수 백오프(Binary Exponential Backoff)를 지원.
1000 Mbps 이더넷 MAC 코어 특성:
기가비트 미디엄 독립 인터페이스(GMII)를 물리적 PCS 계층에 또는 물리적 계층에 직접 지원.
PCS 코어로 완전한 TBI(8b/10b) 솔루션을 지원.
미디어 스피드에서 전이중 포인트 대 포인트 연결을 지원.
IBM PCS 코어의 유효 바이트 시그널링(signalling)을 지원.
1000 Mbps 이더넷 물리적 코딩 서브계층 코어 특성:
8b/10b 인코딩 및 디코딩을 수행.
IEEE 802.3z로 정의된 PMA 서비스 인터페이스를 지원하고, 이 인터페이스는 IEE 802.3z에 부합하는 임의의 PMA에 부착.
MAC(단일 클록)으로 PMA(2상 클록)로부터 수신된 데이터를 동기화.
다음 2페이지를 포함하는 자동 감지(Auto-Negotiation) 기능을 지원.
표준 정의된 2상 클럭 시스템으로부터 단일상 클록으로 변환.
새로운 데이터를 포함하는 신호를 클록 사이클을 나타내는 MAC에 공급.
COMMA's에 대한 수신된 코드 그룹(10 비트)을 검사하고, 워드 싱크(word sync)를 설정.
8b/10b 동작 디스패리티(disparity)를 계산하고 검사.
도 2의 (a) 내지 도 2의 (d)는 인터페이스 디바이스 칩에 대한 상이한 구성을 도시하고 있다. 이것은 DASL 및 스위칭 패브릭 디바이스로의 연결부에 의해 용이하게 구성된다. 각 DASL은 두 개의 채널을 포함한다. 즉, 전송 채널과 수신 채널이 그것이다.
도 2의 (a)는 단일 인터페이스 디바이스에 대한 랩 구성(wrap configuraton)을 도시하고 있다. 이 구성에서 전송 채널은 수신 채널에 랩(wrap)되어 있다.
도 2의 (b)는 2개의 인터페이스 디바이스 칩이 연결되는 구성을 도시하고 있다. 각 인터페이스 디바이스 칩에는 최소한 2개의 DASL이 제공된다. 이 구성에서, 하나의 칩의 1개의 DASL의 채널은 다른 칩의 부합되는 DASL의 채널에 동작 가능하게 접속된다. 각 칩상의 다른 DASL은 랩되어 있다.
도 2의 (c)는 다수의 인터페이스 디바이스가 스위치 패브릭에 연결되는 구성을 도시하고 있다. 양방향 화살표는 양 방향으로의 전송을 나타내고 있다.
도 2의 (d)는 메인 스위치 및 백업(backup) 스위치가 다수의 인터페이스 디바이스로 연결되는 구성을 도시하고 있다. 메인 스위치가 다운되면, 백업 스위치가 사용 가능하다.
제어 포인트(CP)는 구성의 각각에 연결되는 시스템 프로세서를 포함하고 있다. 다른 것들 중에서 CP에서의 시스템 프로세서는 칩에 대한 초기화 및 구성화 서비스(configuration service)를 제공한다. CP는 3가지 위치 중에 위치할 수 있다. 즉, 디바이스 칩 내, 칩이 장착되는 블레이스 위 또는 블레이드 외부가 그곳이다.
블레이브 외부에 장착되는 경우, CP는 원격(remote) 방식일 수 있다. 즉, 다른 곳에서 하우징되어 인터페이스 디바이스와 CP를 연결하는 네트워크에 의해 통신한다. CP의 구성 소자는 도 17에 도시되어 있고, 메모리 소자(캐시, 플래시 및 SDRAM), 메모리 제어기, PCI 버스, 및 후면 및 L1 네트워크 미디어용의 커넥터를 포함한다.
도 18은 단일 칩 네트워크 프로세서와 EDS-UP, 트래픽 관리(MGT) 스케쥴러 및 EDS-DOWN(DN)에 의해 제공되는 기능을 도시하고 있다. U-형 아이콘은 큐를 나타내며, 큐내의 콘텐트의 진로를 쫓는 제어 블록(CB)은 사각형 아이콘에 의해 나타내어지고 있다.
구성 소자의 설명, 각각의 기능 및 상호 작용은 다음과 같다.
PMM : 이것은 네트워크 프로세서에서 MAC(FEnet, POS, GEnet)을 포함하는 부분이며, 외부 PHY 디바이스에 부착한다.
UP-PMM : 이 로직은 PHY로부터 바이트를 가져오고 UP-EDS상으로 전달하기 위해 이것을 피시(FISH)(16 바이트)로 포맷한다. PMM내에는 4개의 DMU가 있고, 각각은 1 GEnet 또는 10 FEnet 디바이스와 동작할 수 있다.
UP-EDS : 이 로직은 UP-PMM으로부터 피시를 가져와서 UP-데이터 스토어(내부 RAM)에 저장한다. 이것은 한 번에 40 프레임을 작업할 수 있으며, 적당한 수의 바이트가 수신된 후 프레임을 EPC로 인큐할 것이다. EPC가 프레임과 함께 종료되면, UP-EDS는 프레임을 적당한 타겟 포트 큐(Target Port Queue)에 인큐하고 UP-SDM으로 프레임 전송을 개시할 것이다. UP-EDS는 모든 버퍼 및 프레임의 관리에 책임이 있고, UP-SDM으로의 전송이 완료될 때 프리 풀(free pool)로 버퍼/프레임을 복귀시킨다.
EPC : 이 로직은 피코 프로세서를 포함하고 있으며, 내장 PowerPC를 포함할 수 있다. 이 로직은 프레임 헤더를 주시하여 프레임에 대해 해야 할 일(전송, 수정, 필터 등)을 결정한다. EPC는 여러 개의 룩업 테이블에 대한 액세스를 하며, 하드웨어는 피코 프로세서가 네트워크의 고밴드폭 요청에 뒤떨어지지 않도록 지원한다.
UP-SDM : 이 로직은 프레임을 받아서, 프레임을 스위치 패브릭으로의 전송을 위한 PRIZMA 셀로 포맷한다. 또한, 이 로직은 VLAN 헤더를 프레임에 삽입할 수 있다.
UP-SIF : 이 로직은 UP-DASL 매크로를 포함하고, 외부 스위치 I/O에 부착한다.
DN-SIF : 이 로직은 DN-DASL 매크로를 포함하고, 외부 I/O로부터 PRIZMA 셀을 수신한다.
DN-SDM : 이 로직은 PRIZMA 셀을 수신하고 프레임 재조립(reassembly)에 도움이 될 수 있게 이를 사전 처리한다.
DN-EDS : 이 로직은 각 셀을 받아 이를 프레임으로 되돌린다. 셀은 외부 데이터 스토어에 저장되고, 버퍼는 프레임을 형성하기 위해 서로 링크된다. 프레임이 수신될 때, 이 프레임은 EPC로 인큐될 것이다. 프레임에 대한 EPC의 작업이 종료된 후, 스케쥴러(존재할 경우) 또는 타겟 포트 큐에 인큐된다. 이어서, DN-EDS는 프레임, 임의의 변경 정보, 및 제어 정보를 DN-PPM으로 송신함으로써 프레임을 적당한 포트로 송신한다.
DN-PPM : DN-EDS로부터 정보를 받아 프레임을 이더넷, POS 등을 포맷하고 프레임을 외부 PHY로 송신한다.
SPM : 이 로직은 네트워크 프로세서가 외부 디바이스(PHY, LED, FLASH 등)로 인터페이스 가능하게 하기 위해 사용되나, 3개의 I/O만을 요한다. 네트워크 프로세서는 SPM과 통신하기 위해 직렬 인터페이스를 사용하고, SPM은 이들 외부 디바이스를 관리하기 위해 필요한 기능을 수행한다.
업 사이드 플로우
1) 프레임이 PHY에 도달.
2) UP-PMM에 의해 바이트 수신.
3) UP-PMM이 피시를 UP-EDS로 전송(피시(fish)는 프레임의 일부분을 의미함).
4) UP-EDS가 피시를 UP-DS로 저장.
5) UP-EDS가 EPC로 헤더를 전송.
6) EPC가 헤더를 처리하여 인큐 정보를 UP-EDS로 전송.
7) UP-EDS는 UP-PMM으로부터 프레임의 나머지 부분을 계속 수신.
8) 적절한 데이터가 스위치로 전송될 준비가 될 때, UP-EDS가 정보를 UP-SDM으로 송신.
9) UP-SDM이 프레임 데이터를 판독하고 이를 PRIZMA 셀로 포맷.
10) UP-SDM이 셀을 UP-SIF로 송신.
11) UP-SIF가 셀을 DASL 직렬 링크를 통해 PRIZMA로 전달.
12) 모든 데이터가 얻어진 후 UP-EDS가 업 버퍼/프레임을 구속 해제.
다운 사이드 플로우
1) DN-SIF가 PRIZMA 셀을 수신.
2) DN-SDM이 셀을 저장하고 재조립 정보를 위해 사전 처리함.
3) DN-EDS가 셀 데이터와 재조립 정보를 수신하고 셀을 하부의 새로운 프레임에 링크.
4) DN-EDS가 DN-DS로 셀을 저장
5) 모든 데이터가 수신되었을 때, DN-EDS가 프레임을 EPC로 인큐.
6) EPC가 헤더를 처리하여 인큐 정보를 DN-EDS로 송신.
7) DN-EDS가 프레임을 스케쥴러 큐(존재할 경우) 또는 타겟 포트 큐로 인큐
8) DN-EDS가 큐를 서비스하고 프레임 정보를 PCB로 송신.
9) DN-EDS가 PCB를 사용하여 프레임을 "언레이블(unravel)"하고 적절한 데이터를 판독하여 이를 DN-PMM으로 송신.
10) DN-PPM이 데이터(변경이 요청되는 경우 그 변경과 함께)를 포맷하고 프레임을 외부 PHY로 송신.
11) 버퍼가 더 이상 요청되지 않을 때, DN-PMM이 DN-EDS에게 통지하고 DN-EDS는 이들 자원을 구속 해제.
프레임 제어 플로우
1) 헤더를 UP-DS 또는 DN-DS로부터 EPC로 송신.
2) EPC는 룩업 테이블의 헤더 정보를 룩업하고 프레임 인큐 정보를 수신.
3) EPC가 인큐 정보를 EDS로 전송하고 프레임이 적당한 큐로 인큐됨.
4) 재조립 및 프레임 전송을 돕기 위해 셀 헤더 및 프레임 헤더를 프레임 데이터와 함께 전송.
CP 제어 플로우
1) 제어 포인트가 가이드 프레임(Guided Frame)을 포맷하고 이를 네트워크 프로세서로 송신함.
2) 네트워크 프로세서가 가이드 프레임을 GCH 피코 프로세서로 인큐함.
3) GCH는 가이드 프레임을 처리하고 요청된 레이니어(Rainier) 영역을 판독 또는 기록함.
4) GCH가 테이블 갱신 요청를 GTH로 전달함.
5) GTH가 가이드 프레임으로부터의 정보에 따라 적절한 테이블을 갱신함.
6) 확인(acknowledgement) 가이드 프레임이 CP로 송신됨.
네트워크 프로세서 제어 플로우
1) 피코 프로세서는 다른 레이니어 또는 제어 포인터로 정보를 전송하기 위해 가이드 프레임을 구축할 수 있음.
2) 가이드 프레임이 처리를 위해 적절한 위치로 전송됨.
단일 인터페이스 디바이스는 최대 40개의 고속 이더넷 포트(도 2의 (a))를 지원하는 미디어 스피드 스위칭을 제공한다. 2개의 인터페이스가 IBM 데이터 정렬 동기 링크(DASL) 기술(도 2의 (b))을 사용하여 연결될 때 80개의 고속 이더넷 포트가 지원된다. 각 DASL 차동쌍은 440 Mbps의 데이터를 운반한다. 각각 8쌍으로 된 2개의 세트는 3,5 Gbps의 양방향 연결(각 방향으로 8 ×440 Mbps)을 제공한다. 도 2의 (c) 및 도 2의 (d)에 도시된 바와 같이, 다수의 인터페이스 디바이스를 IBM 프리즈마-E 스위치와 같은 스위치로 연결함으로써 보다 큰 시스템이 구축될 수 있다. 인터페이스 디바이스는 3.5 Gbps 양방향 DASL 접속들 중 2개의 접속을 제공하는데, 하나는 주접속이고 다른 하나는 부접속이며, 이들은 로컬 프레임 트래픽용으로 랩-백패스(wrap-backpath)(2개의 디바이스가 직접 연결될 때, 도 2의 (b)), 또는 리던던트 스위치 패브릭으로의 접속(도 2의 (d)의 백업 스위치 참조)을 제공하는 데 사용될 수 있다. 이상의 관점으로 볼 때, 단일 네트워크 프로세서 칩은 하나의 칩이 상대적으로 낮은 포트 밀도(즉, 40)를 갖는 로우(low) 엔드 시스템(end system)부터 상대적으로 높은 포트 밀도 즉, 80-n 포트)을 갖는 하이(high) 엔드 시스템을 제공할 수 있다는 점에서 확장 가능하다.
시스템의 하나의 인터페이스 디바이스는 최대 10개의 10/100 Mbps 고속 이더넷 포트 또는 단일 1000 Mbps 이더넷 포트를 통해 시스템 프로세서에 연결된다. 시스템 프로세서로 연결되는 이더넷 구성은 인터페이스 디바이스에 부착된 EEPROM 내에 위치하여 초기화시 로드된다. 시스템 프로세서는 이더넷 프레임으로서 캡슐화된(encapsulated) 특별 가이드 프레임을 구축함으로써 시스템내의 모든 인터페이스 디바이스와 통신한다(도 2 참조). 캡슐화 가이드 프레임은 DASL 링크를 통해 다른 디바이스로 전송되어, 시스템내의 모든 인터페이스 디바이스들이 단일한 포인트로부터 제어 가능하게 된다.
가이드 프레임은 제어 포인트(CP)와 인터페이스 디바이스 내의 내장 프로세서콤플렉스간에 제어 정보를 통신하기 위해 사용된다. 논의되는 가이드 셀(Guided Cell)을 설명하는 종전의 기술은 1998년 3월 3일에 발행된 "데이터 스위치용으로효과적인 하드웨어/소프트웨어"라는 제하의 미국 특허 제5,724,348호에서 알 수 있다.
가이드 프레임 트래픽이 CP에서 시작되도록 CP는 로컬 메모리의 데이터 버퍼내에 가이드 프레임을 구축한다. CP의 디바이스 드라이버는 가이드 프레임을 네트워크 프로세서의 미디어 인터페이스 중의 하나로 전송한다. 미디어 액세스 제어(MAC) 하드웨어는 가이드 프레임을 복구하여 이것을 내부 데이터 스토어(U-DS) 메모리에 저장한다. 가이드 프레임은 적당한 블레이드로 발송(route)되고 처리되어 요청된 바 대로 CP로 복귀한다. 외부 CP와 인터페이스 디바이스간에 전달되는 가이드 프레임은 외부 네트워크의 프로토콜에 적응하기 위해 캡슐화된다. 그 결과로서, 외부 네트워크가 이더넷을 포함하는 경우, 가이드 프레임은 이더넷 프레임 등으로 캡슐화된다.
이더넷 캡슐화는 CP와 인터페이스간에 가이드 트래픽(Guided Traffic)을 위한 통신 수단을 제공한다. 인터페이스 디바이스의 이더넷 MAC(ENet MAC)은 프레임을 수신할 때 목적지 어드레스(DA) 또는 근원지 어드레스(SA)를 분석하지 않는다. 이 분석은 EPC 피코 코드에 의해 수행된다. 가이드 트래픽은 인터페이스 디바이스가 아직 구성되지 않았고 DA 및 SA가 EPC 피코 코드에 의해 분석될 수 없음을 가정한다. 그러므로, 이들 프레임은 본질적으로 셀프-라우팅(self routing)된다. 그러나, 이더넷 MAC은 데이터 트래픽으로부터 가이드 트래픽을 구별해 내기 위해 이더넷 타입 필드를 분석한다. 가이드 프레임에 대한 이 이더넷 타입 밸류(value)의 값은 E_Type_C 레지스터로 로드된 값과 일치하여야 한다. 이 레지스터는 인터페이스디바이스의 부트 피코 코드에 의해 플래시 메모리로부터 로드된다.
CP는 로컬 메모리의 데이터 버퍼내에 가이드 프레임을 구축한다. CP 프로세서의 32 비트 레지스터의 내용이 도 3에 도시된 바와 같이 빅엔디안(big endian) 포맷으로 로컬 메모리내에 저장된다. 가이드 프레임을 구축한 후, CP의 디바이스 드라이버는 특정 가이드 셀 핸들러(GCH)에 대한 DA, CP의 광역 MAC 어드레스 또는 특정 인터페이스의 MAC 어드레스에 대응하는 SA, 가이드 프레임을 지시하는 특별한 이더넷 타입, 및 가이드 프레임 데이터를 포함하는 이더넷 프레임을 송신한다. 포트에 도달하는 모든 이더넷 프레임은 Enet MAC에 의해 수신되어 분석된다. E_Type_C 레지스터의 내용과 일치하는 이더넷 타입 값을 갖는 프레임에 대해, Enet MAC은 DA, SA 및 이더넷 타입 필드를 떼어 내고, 가이드 프레임 데이터를 U_DS 메모리에 저장한다. 바이트들은 Enet MAC에 의해 수집되고 피시로 불리는 16 바이트 블록에 저장된다. 이들 바이트는 가이드 프레임의 첫번째 바이트가 피시의 가장 중요한 바이트 위치(바이트 0)에 저장되는 빅엔디안 포맷으로 저장된다. 후속 바이트가 피시의 후속 바이트 위치(바이트 1, 바이트 2, ..., 바이트 15)에 저장된다. 이제 이들 16 바이트는 피시 0 위치에서 시작하여 U_DS의 버퍼에 저장된다. 버퍼내의 후속 피시 위치에 후속 피시가 저장된다(피시 1, 피시 2, 피시 3 등). 가이드 프레임의 나머지 부분을 저장하는 데 요청되는 추가 버퍼가 프리 풀(free pool)로부터 얻어질 수 있다.
인터페이스 디바이스(10)내의 가이드 트래픽의 플로우가 도 4에 도시되어 있다. 인터페이스 디바이스의 Enet MAC 기능은 프레임 헤더 정보를 검사하여 그 프레임이 가이드 프레임인지를 결정한다. Enet MAC은 가이드 프레임으로부터 프레임 헤더를 제거하고 인터페이스 디바이스의 내부 U_DS 메모리에 그 내용의 나머지를 버퍼링한다. Enet MAC은 그 프레임이 GCH에 의해 처리되기 위해 범용 제어(General Control; GC) 큐에 인큐되어야 한다는 것을 지시한다. 가이드 프레임의 끝에 이르면, 인큐, 디큐 및 스케쥴(EDS) 로직이 이 프레임을 GC 큐에 인큐한다.
CP에 로컬 부착된 블레이드상의 GCH 피코 코드는 가이드 프레임이 시스템내의 다른 블레이드를 위해 의도된 것인지 여부(도 6 참조)와 가이드 프레임이 인터페이스 디바이스의 다운 사이드에서 실행되어야 하는지 여부를 결정하기 위해 프레임 제어 정보를 검사한다. 프레임이 로컬 부착된 블레이드 이외의 블레이드 또는 이에 추가적인 블레이드를 위해 의도된 것이라면, GCH 피코 코드는 프레임 제어 블록(Frame Control Block; FCB)내의 TB 값을 가이드 프레임의 프레임 제어 정보로부터의 TB 값으로 갱신하고, EDS가 이 프레임을 멀티캐스트 프레임 타겟 블레이드 개시(Target Blade Start of Frame; TB_SOF) 큐로 인큐하도록 지시한다. 성능상의 이유로, 모든 가이드 트래픽은 지시된 목적지 블레이드의 수에 무관하게 멀티캐스트 TB_SOF 큐로 인큐된다.
프레임이 로컬 부착된 블레이드만을 위해 의도된 것이라면, GCH 피코 코드는 가이드 프레임이 인터페이스 디바이스의 업 사이드 또는 다운 사이드에서 실행되어야 하는지를 결정하기 위해 프레임 제어 정보의 업/다운(up/down) 필드를 검사한다(도 6 참조). 가이드 프레임이 인터페이스 디바이스의 다운 사이드에서 실행되어야 하는 것이라면, GCH 피코 코드는 FCB의 TB 값을 가이드 프레임 제어 정보로부터 얻은 TB 값으로 갱신하고 EDS가 이 프레임을 멀티캐스트 TB_SOF 큐로 인큐하도록 지시한다. 프레임 제어 정보가 이 가이드 프레임이 업 사이드에서 실행되어야 한다는 것을 나타내는 경우, GCH 피코 코드는 가이드 프레임을 분석하고 이에 포함된 가이드 코맨드(Command)에 의해 지시되는 동작을 수행한다.
가이드 코맨드를 처리하기 전에, 피코 코드는 프레임 제어 정보의 ack/필드의 값을 검사한다. 이 값이 '0'b이면, 가이드 프레임은 다음 프로세스를 거쳐 버려진다. 가이드 판독 코맨드는 이 카테고리의 것이 될 수 없다.
ack/의 값이 '1'b이고, early/필드의 값이 '1'b이면, 가이드 프레임의 가이드 코맨트를 처리하기 전에 피코 코드가 My_TB 레지스터의 내용과 동일한 프레임 제어의 TB 값을 갖는 Early_Ack 가이드 프레임의 내용과 동등한 프레임 제어의 TB 필드의 값으로 Early Ack 가이드 프레임을 구축한다. 피코 코드는 이 프레임의 FCB 내의 TB 값을 LAN 제어 포인트 어드레스(LAN_CP_Addr) 레지스터의 TB 필드에 포함된 값으로 갱신하고 EDS가 이 프레임을 멀티캐스터 TB_SOF 큐로 인큐하도록 지시함으로써 Early Ack 가이드 프레임을 CP로 라우트한다. 피코 코드는 가이드 프레임의 가이드 코맨드를 처리하고 가이드 프레임을 버린다. 가이드 판독 코맨드는 이 카테고리의 것이 될 수 없다.
한편, ack/필드의 값이 '1'b이고 early/필드의 값이 '0'b 이면, 피코 코드는 프레임 제어 정보의 resp/필드를 가이드 프레임 응답을 나타내는 '1'b 로 변경하고, TB 필드를 My_TB 필드 레지스터의 내용으로 대체하며, 가이드 프레임내의 가이드 코맨드를 처리한다. 가이드 코맨드의 처리 중에, 피코 코드는 바로 다음 가이드 코맨드의 완료 코드 필드를 현재의 가이드 코맨드에 대한 완료 상태 코드 값으로 갱신한다. 피코 코드는 FCB의 TB 값을 근원지 블레이드에 대응하는 값(CP에 대한 LAN_CP_Addr 레지스터 값)으로 갱신하고 EDS가 이 프레임을 멀티캐스터 TB_SOF 큐로 인큐하도록 지시함으로써 근원지로 응답을 귀환시킨다.
TB_SQF 큐에 있는 프레임은 EDS에 의해 전송되도록 스케쥴된다. 스위치 데이터 무버(Switch Data Mover; SDM)는 FCB에 포함된 정보로부터 스위칭 셀 헤더와 인터페이스 디바이스 프레임 헤더를 구축한다. 이들 셀은 스위칭 패브릭 디바이스를 통과하여 이들 셀이 프레임으로 재조립되는 곳인 D-DS 메모리내의 타겟 블레이드에 도착한다. 하부의 SDM은 프레임이 가이드 프레임이라는 것을 인식하고 EDS가 프레임을 GC 큐에 인큐하도록 신호를 보낸다.
GC 큐 또는 GT 큐로부터의 압박(pressure)은 피코 코드가 가이드 프레임을 액세스하고 분석하는 것을 촉진한다. 다운 사이드에 도달하는 모든 가이드 프레임은 일단 GC 큐에 인큐된다. GCH 피코 코드에 의해 이들 프레임에 대한 프레임 제어 정보의 gth/값이 검사된다. gth/값이 '0'b이면, 가이드 프레임은 GT 큐로 인큐된다. 아니라면, GCH 피코 코드는 프레임 제어 정보의 resp/필드를 검사하여 가이드 프레임이 이미 실행되었는지의 여부를 결정한다. resp/가 '1'b 값을 가지면, 가이드 프레임은 이미 실행된 것이고 가이드 프레임은 CP로 라우트된다. CP 접속부에 대응하는 타겟 포트 값이 EPC 피코 코드에 의해 보유된다. 이들 타겟 포트 큐로부터의 프레임은 인터페이스 디바이스로부터 CP로 전송된다.
resp/필드가 '0'b값을 가지면, 블레이드는 CP에 대해 로컬 또는 원격 블레이드일 수 있다. 이것은 LAN_CP_Addr 레지스터의 TB 필드 값을 MY_TB(My Target Blade) 레지스터의 내용과 비교함으로써 결정될 수 있다. 이들이 일치하는 경우, 블레이드는 CP에 대해 로컬이며, 일치하지 않는 경우 블레이드는 CP로부터 원격이다. 어느 경우에나 피코 코드는 프레임 제어 정보의 up/값을 검사한다. up/이 '1'b이면, 프레임은 U_DS로의 전송 및 상부의 GCH에 의한 처리를 위해 Wrap TP 큐로 인큐된다. up/이 '1'b가 아니라면, 피코 코드(GCH 또는 Gth)는 가이드 프레임에 포함된 가이드 코맨드에 의해 지시되는 동작을 수행한다. 가이드 코맨드의 처리 전에 피코 코드는 프레임 제어 정보의 ack/필드를 검사한다. 이 값이 '0'b이면, 가이드 프레임은 다음의 처리를 통해 버려진다. 가이드 판독 코맨드는 이 범주의 것이 될 수 없다.
ack/필드값이 '1'b이고 early/필드값이 '1'b이면, 가이드 프레임의 가이드 코맨드를 처리하기 전에 피코 코드는 프레임 제어 정보의 TB 필드값이 My_TB 레지스터의 값과 동등하게 되는 Early Ack 가이드 프레임을 구축한다. 블레이드가 CP로부터 원격이라면, 피코 코드는 Early Ack 가이드 프레임을 랩(wrap) 포트로 라우트한다. 블레이드가 CP로부터 원격이 아니라면, 블레이드는 CP에 대해 로컬이며 프레임은 CP에 대응하는 포트 큐로 라우트된다. 랩 포트가 D_DS로부터 U_DS로 Early Ack 가이드 프레임을 이동시키고 상부의 GC 큐로 프레임을 인큐하거나 프레임이 포트 큐로부터 CP로 전송되는 동안, 피코 코드는 가이드 코맨드를 처리한다. U_DS로 랩백(wrap-back)되는 프레임에 있어서, GCH 피코 코드는 이 프레임을 다시 검사하고, resp/필드는 '1'b의 값을 가지게 될 것이다. GCH 피코 코드는 FCB의 TB 필드를 LAN_CP_Addr 레지스터의 TB 필드에 포함된 값으로 갱신하고 EDS에게 이 프레임을 멀티캐스트 TB_SOF 큐로 인큐하도록 지시함으로써 이 프레임을 CP로 라우트한다. TB_SOF 큐에 있는 프레임은 EDS에 의해 전송을 위해 스케쥴된다. SDM은 FCB에 포함된 정보로부터 프리즈마 셀 헤더 및 인터페이스 디바이스 프레임 헤더를 구축한다. 이 프레임의 셀들은 프리즈마를 통고하여 CP의 로컬 블레이드상에서 프레임으로 재조립된다. 다운 사이드의 SDM은 이 프레임이 가이드 프레임이라는 것을 인식하고 EDS에게 이 프레임을 GC 큐로 인큐하도록 지시한다. 이 때, GCH 피코 코드가 프레임을 분석하면 resp/필드는 '1'b의 값을 가진다. 이것은 이 블레이드가 CP에 로컬 부착되며 가이드 프레임이 CP에 대응하는 포트 큐로 라우트된다는 것을 의미한다. 이 큐의 프레임들은 인터페이스 디바이스로부터 CP로 전송된다.
반면, ack/필드의 값이 '1'b이고 early/필드의 값이 '0'b라면, 피코 코드는 가이드 프레임 응답을 지시하기 위해 resp/필드를 '1'b로 변경하고, TB 필드를 My_TB 레지스터의 내용으로 교체하며, 가이드 프레임의 각 가이드 코맨드를 처리한다. 가이드 코맨드의 처리중에, 피코 코드는 박로 다음 가이드 코맨드의 완료 코드 필드를 현재 가이드 코맨드의 완료 상태 코드 값으로 갱신한다. 블레이드가 CP로부터 원격일 때, 피코 코드는 가이드 프레임을 랩 포트로 라우트한다. 블레이드가 원격이 아니라면, 블레이드는 CP에 대해 로컬이며 프레임은 CP에 대응하는 포트 큐로 라우트된다. Wrap 포트가 가이드 프레임을 D_DS로부터 U_DS로 이동시키고 이 프레임을 업 사이드의 GC 큐로 인큐하거나 프레임이 포트 큐로부터 CP로 전송된다. U_DS로 랩백된 프레임에 있어서, 피코 코드는 이 프레임을 다시 검사하게 되지만, resp/필드는 '1'b의 값을 가지게 될 것이다. GCH 피코 코드는 FCB의 TB 필드를 LAN_CP_Addr 레지스터의 TB 필드에 포함된 값으로 갱신하고 EDS에게 프레임을 멀티캐스트 TB_SOF 큐로 인큐하도록 지시함으로써 프레임을 CP로 라우트한다. TB_SOF 큐에 있는 프레임은 EDS에 의해 전송을 위해 스케쥴된다. SDM은 FCB에 포함된 정보로부터 프리즈마 셀 헤더 및 인터페이스 디바이스 프레임 헤더를 구축한다. 이 프레임의 셀들은 프리즈마를 통고하여 CP의 로컬 블레이드의 하부에서 프레임으로 재조립된다. 하부의 SDM은 이 프레임이 가이드 프레임이라는 것을 인식하고 EDS에게 이 프레임을 GC 큐로 인큐하도록 지시한다. 이 때, GCH 피코 코드가 D_DS의 프레임을 분석하면 resp/필드는 '1'b의 값을 가진다. 이것은 이 블레이드가 CP에 로컬 부착되며 가이드 프레임이 CP에 대응하는 포트 큐로 라우트된다는 것을 의미한다. 이 큐의 프레임들은 인터페이스 디바이스로부터 CP로 전송된다.
어떤 이유에 의해서 GCH 피코 코드가 프레임 제어 정보의 TB 필드가 '0000'h인 가이드 프레임을 만나게 되면, GCH 피코 코드는 이 프레임이 이 블레이드만을 위해 의도된 것으로 해석하고 이에 따라 대응한다. 이 대응은 My_TB 레지스터의 값이 모든 블레이드에 대해 '0000'h일 때인 초기화 기간동안 요청된다. CP는 프레임 제어 정보의 TB값이 '0000'h인 가이드 프레임에 기록 가이드 코맨드(Write Guided Command)를 전송함으로써 로컬 부착된 My_TB 레지스터를 초기화할 것이다.
EPC내의 임의의 피코 프로세서는 가이드 프레임을 생성할 수 있다. 이 프레임은 언솔리시트(Unsolicited) 가이드 프레임이거나 다른 형태의 가이드 프레임일 수 있다. 이러한 타입의 내부적으로 생성된 프레임은 확인(acknowledgement)을 허용하지 않는 방식(즉, ack/= '0'b)으로 구축된다. 이들 프레임은 동일 EPC 내의 2개의 피코 프로세서(GCH 또는 GTH) 중 하나로 전송되거나 다른 블레이드의 GCH 또는 GTH로 전송될 수 있다.
언솔리시트 가이드 프레임도 또한 CP로 전송될 수 있다. 동일 EPC를 목적으로 하는 가이드 프레임은 D_DS의 데이터 버퍼를 사용하여 구축된다. 이들 프레임은 GC 또는 GT 큐로 인큐되어 처리된다. 이들 프레임은 통상의 방식으로 처리되고 버려진다. 로컬 부착된 CP용의 언솔리시트 가이드 프레임은 D_DS의 데이터 버퍼를 사용하여 구축된다. 이들 프레임은 EPC에 의해 실행되었다는 것을 나타내는 방식(즉, resp/= '1'b 및 TB = My_TB)으로 구축된다. 이들 프레임은 CP에 대응하는 포트 큐로 인큐된다. 이 큐로부터의 프레임이 CP로 전송된다.
다른 블레이드를 목적으로 하는 가이드 프레임이 D_DS 또는 U_DS의 버퍼를사용하여 구축될 수 있다. CP를 목적으로 하는 언솔리시트 가이드 프레임은 EPC에 의해 실행되었다는 것을 나타내는 방식으로 구축된다. D_DS의 버퍼를 사용하여 구축된 프레임은 Wrap 포트로 인큐된다. 이들 프레임은 U_DS로 이동하여 상부의 GC 큐에 인큐된다. resp/값이 '1'b인 언솔리시트 가이드 프레임은 LAN_CP_Addr 레지스터의 TB 값을 사용하여 CP로 라우트될 것이다. resp/값이 그렇지 않다면, GCH 피코 코드는 이들 프레임을 가이드 프레임의 프레임 제어 정보의 TB 값을 사용하여 라우트한다. 수신 블레이드에서, 프레임은 하부의 GC 큐로 인큐된다. 이 블레이드의 GCH는 프레임을 실행 또는 폐기(resp/= '0'b 및 gth/= '1')하거나 프레임을 GT 큐로 인큐(resp/= '0'b 및 gth/= '0')하거나 프레임을 CP에 대응하는 포트 큐로 인큐(resp/= '1'b)한다. U_DS의 데이터 버퍼를 사용하여 구축된 프레임은 상부의 GC 큐로 직접 인큐된다. 이 전송 시점으로부터 프레임은 동일한 루트를 따르며 D_DS 데이터 버퍼를 사용하여 구축된 것과 동일한 방식으로 핸들링된다. 도 5는 가이드 프레임에 대한 일반적인 포맷을 도시하고 있다.
도시된 포맷은 가장 중요한 바이트를 왼쪽에 두고 가장 덜 중요한 바이트를 오른쪽에 구성하는 것을 논리적으로 표현하고 있다. 4 바이트 워드는 맨위의 워드 0에서 시작하여 페이지의 아래로 갈수록 증가한다.
가이드 프레임이 인터페이스 디바이스가 CP에 의해 구성되기 전에 라우트되고 처리되어야 하기 때문에, 이들 프레임은 셀프-라우팅(self-routing)되어야 한다. 룩업 및 분류에 의해 정상적으로 얻어진 결과는 가이드 프레임의 프레임 정보 필드에 포함되어, 칩이 룩업 동작을 수행하지 않고서도 이 정보에 의해 FCB를 갱신하도록 하는 것을 가능하게 한다. 가이드 프레임에 포함된 타겟 블레이드 정보는 가이드 프레임 핸들러에 의해 FCB의 잎 페이지 필드(Leaf Page field)를 작성하기 위해 사용된다. GCH 피코 코드가 FCB의 다른 필드를 채우는 동안 CP는 타겟 블레이드 정보를 제공한다. 이 FCB 정보는 SDM에 의해 셀 및 프레임 헤더를 작성하기 위해 사용된다. 가이드 프레임의 프레임 제어 정보 필드의 포맷이 도 6에 도시되어 있다.
도 6의 각 비트 위치에서의 간략한 설명:
resp/
응답(Response) 및 비요청(Not Request) 지시값. 이 필드는 요청(미처리된) 및 응답 가이드 프레임간을 차별하기 위해 사용된다.
0 요청
1 응답
ack/noack
확인(Acknowledgement) 또는 비확인(No Acknowledgement) 제어값. 이 필드는 GCH 피코 코드가 가이드 프레임을 확인하는지(ack) 또는 확인하지 않는지(noack)를 제어하기 위해 사용된다. 확인되지 않은 가이드 프레임은 판독을 수행할 어떠한 형태의 가이드 코맨드도 포함하지 않게 된다.
0 비확인(No Acknowledgement)
1 확인(Acknowledgement)
early/
사전(Early) 및 사후 확인(Late Acknowledgement) 제어값. 이 필드는 요청된 확인(ack/= '1'b)이 가이드 프레임이 처리되기 전(early) 또는 처리된 후(late)에 발생하는지를 제어하는 데 사용된다. 이 필드는 ack/= '0'b일 때 무시된다.
0 가이드 프레임 처리 후에 확인
1 가이드 프레임 처리 전에 확인
neg/
부정적 확인(Negative Acknowledgement) 또는 전부 확인(Acknowledgement All) 제어값. 이 필드는 ack/가 '0'b일 때 가이드 코맨드가 성공적으로 완료되지 않으면 무시된다.
0 ack/= '1'b이면 모든 가이드 프레임을 확인한다. 사전 또는 사후 승인은 early/값에 의해 결정된다.
1 성공적으로 완료되지 않은 가이드 프레임만을 확인한다. 이 확인은 ack/및 early/의 값에 무관하게 발생하고 당연히 사후 승인이 될 것이다.
up/
업/다운 제어값. 이 값은 프레임이 업 사이드 또는 다운 사이드에서 처리되는가를 제어하는 데 사용된다. 이 필드는 resp/가 '1'b일때 무시된다. 모든 멀티캐스트 프레임은 up/값이 '0'b이다. GTH 하드웨어 지원 인스트럭션의 사용을 요청하는 가이드 코맨드는 up/값 '0'b를 가질 것이다.
0 다운 사이드에서 처리.
1 업 사이드에서 처리.
gth/
범용 트리 핸들러 또는 가이드 셀 핸들러 제어값. 이 값은 가이드 프레임을 적당한 피코 프로세서로 인도하기 위해 사용된다.
0 GCH 피코 프로세서.
1 GTH 피코 프로세서.
TB
타겟 블레이드값. resp/가 '0'b일 때, 이 필드는 프리즈마에 의해 사용되는 라우팅 정보를 포함한다. 각 비트 위치는 타겟 블레이드에 대응한다. 이 값이 '0000'h이면, 가이드 프레임은 이 블레이드를 위해 존재하는 것으로 가정되고 이에 따라 실행된다. TB 필드의 하나 또는 그 이상의 비트 위치에 있는 '1'b 값은 셀이 대응 타겟 블레이드에 라우트된다는 것을 나타낸다. resp/가 '1'b일 때, 이 필드는 대응 블레이드의 My_TB 값을 포함한다.
가이드 프레임의 워드 1은 상관자(correlator) 값을 포함한다(도 7). 이 값은 가이드 프레임 응답들을 그 요청와 연관시키기 위해 CP 소프트웨어에 의해 할당된다. 상관자는 할당된 기능을 갖는 다수의 비트를 포함한다.
모든 가이드 코맨드는 코맨드 제어 정보 필드에서 시작된다. 이 코맨드 제어 정보 필드는 GCH 피코 프로세서가 가이드 프레임을 처리하는 데 도움을 주는 정보를 포함하고 있다. 이 정보를 위한 포맷은 도 8에 도시되어 있다.
길이값(Length Value) : 이 값은 가이드 프레임의 제어 정보(Cmd Word 0), 어드레스 정보(Cmd Word 1), 피연산자(Cmd Word 2+) 부분에 포함된 32 비트 워드의 총 갯수를 나타낸다.
완료 코드 테이블 : 이 필드는 가이드 코맨드의 처리시 CP에 의해 초기화되고 GCH 피코 코드에 의해 수정된다. GCH 피코 코드는 코맨드 리스트중 이전의 가이드 코맨드에 대한 완료 상태를 나타내기 위해 사용한다. 모든 가이드 코맨드 리스트가 최종 구분자 가이드 코맨드(End Delimiter Guided Command)로 끝나기 때문에, 마지막 코맨드의 완료 상태는 최종 구분자 완료 코드 테이블에 포함된다.
가이드 코맨드 타입값(심볼명)
심볼명 타입값 타입 기술
End_Delimiter 0000 가이드 프레임 시퀀스의 종점을 표시
Build_TSE_Free_List 0001 프리(free) 리스트를 구축
Software_Action 0010 소프트웨어 동작을 실행
Unsolicted 0011 EPC 피코 코드에 의해 개시된 프레임
Block_Write 0100 연속되는 어드레스에 데이터의 블록을 기록
Duplicate_Write 0101 레지스터 또는 메모리에 중복 데이터를 기록
Read resister 0110 판독 또는 메모리 데이터에 대한 요청 및 응답
0111 예약
Insert_Leaf 1000 검색 트리에 잎을 삽입
Update_Leaf 1001 검색 트리의 잎을 갱신
Read_Leaf 1010 페이지 데이터의 판독에 대한 요청 및 Leaf 응답
1011 예약
Delete_leaf 1100 검색 트리의 잎을 삭제
1101-1111 예약
가이드 프레임내에 포함된 어드레싱 정보는 네트워킹 프로세서의 어드레싱 체계내의 소자를 식별한다. 어드레스 정보 필드의 일반적 형태가 도 9에 도시되어 있다.
인터페이스 디바이스는 32 비트 어드레싱 체계를 사용한다. 이 어드레싱 체계는 어드레스 값을 인터페이스 디바이스의 모든 액세스 가능한 구조물에 할당한다. 이들 구조물은 프로세서 내부에 있거나 프로세서의 제어하에 인터페이스에 연결되어 있다. 이들 구조물 중 일부는 웹(Web) 인터페이스라 불리는 내부 인터페이스를 통해 내장 프로세서 콤플렉스(EPC)에 의해 액세스된다. 나머지 구조물은 메모리 제어기 인터페이스를 통해 액세스 된다. 이러한 모든 경우에 있어서 어드레스의 일반 형태가 도 10에 도시되어 있다.
네트워크 제어기는 주요한 칩 지역(island)으로 분할된다. 각 지역은 고유의 지역 ID 값이 부여된다. 이 5 비트의 지역 ID 값은 칩 지역에 의해 제어되는 구조물에 대한 5개의 가장 중요한 어드레스 비트를 형성한다. 인코드된 지역 ID 값과 칩 지역 명칭간의 대응 관계가 도 11에 도시되어 있다. 웹 어드레스의 2번째 부분은 바로 다음으로 가장 중요한 23비트로 구성된다. 이 어드레스 필드는 구조 어드레스 부분과 소자 어드레스 부분으로 세그먼트된다. 각 세그먼트에 대해 사용되는 비트의 수는 지역마다 달라질 수 있다. 어떤 지역은 소수의 대형 구조물을 포함할 수 있는 반면, 다른 지역은 다수의 소형 구조물을 포함할 수 있다. 이러한 이유로, 이들 어드레스 세그먼트에 대한 고정된 크기는 존재하지 않는다. 구조 어드레스 부분은 지역내의 어레이를 어드레스 하기 위해 사용되는 반면, 소자 어드레스 부분은 어레이내의 소자를 어드레스 하기 위해 사용된다. 어드레스의 나머지 부분은 웹 인터페이스의 32 비트 데이터 버스 제한을 수용하기 위한 것이다. 4 비트 워드 어드레스는 어드레스된 소자의 32 비트 세그먼트를 선택하는 데 사용된다. 이것은 32 비트보다 큰 폭을 갖는 구조 소자를 네트워크 제어기의 웹 데이터 버스를 통해 이동시키는 데 필요하다. 워드 어드레스 값 '0'h는 32개의 가장 중요한 구조 소자 비트를 지시하는 반면, 후속 워드 어드레스 값은 연속하여 덜 중요한 구조 소자의 세그먼트에 대응된다. 어드레스의 워드 어드레스 부분은 웹 인터페이스를 통해 어드레스 되지 않는 구조에는 요청되지 않는다. 이러한 이유로, 업 데이터 스토어(Up Data Store), 제어 메모리 및 다운 데이터 스토어는 구조 소자에 액세스하기 위해 모든 27개의 덜 중요한 어드레스 비트를 사용한다. 이러한 포맷에 대한 다른 예외는 SPM 인터페이스에 대한 어드레스이다. 이 경우 모든 27 비트의 어드레스가 사용되며 폭이 32 비트 이상인 소자는 존재하지 않는다.
내장 프로세서 콤플렉스(EPC)는 인터페이스 디바이스 칩의 프로그램 가능성을 제공하고 이를 제어한다. 이것은 다음의 콤포넌트를 포함한다(도 12의 (a)도 참조).
GxH라 불리는 N 개의 프로세싱 유닛 : GxH들은 공통 인스트럭션 메모리에 저장된 피코 코드를 동시에 실행한다. 각 GxH는 CLP라 불리는 프로세싱 유닛 코어로 구성되는데, 이것은 3-스테이지 파이프라인, 16개의 GPR 및 1개의 ALU를 포함하고 있다. 또한, 각 GxH는 예컨대, 트리 검색 엔진과 같은 여러개의 프로세서를 포함하고 있다.
인스트럭션 메모리(Instruction Memory) : 초기화 기간 동안에 로드되고, 프레임을 전송하기 위한 피코 코드를 보유하며, 시스템을 관리한다.
디스패쳐 : 업 및 다운 디스패쳐 큐로부터 프레임-어드레스를 디큐한다. 디큐 후, 디스패쳐는 프레임-헤더 부분을 업 또는 다운 데이터 스토어로부터 사전 인출(prefetch)하여 이것을 내부 메모리에 저장한다. GxH가 유휴 상태로 되자 마자, 디스패쳐는 코드 인스트럭션 어드레스와 같은 적절한 제어 정보와 함께 프레임 헤더를 GxH에 전달한다. 또한, 디스패쳐는 타이머와 인터럽트를 핸들링한다.
트리 검색 메모리(Tree Serch Memory; TSM) 중재기 : 각 GxH에 유용한 다수개의 공유된 내부 및 외부 메모리 위치가 있다. 이 메모리는 공유되어 있기 때문에, 중재기는 이 메모리에 대한 액세스를 제어하기 위해 사용된다. TSM은 피코 코드에 의해 직접 액세스될 수 있으며, 이것은 예컨대, TSM의 에이징(aging) 테이블을 저장하기 위해 사용되어질 수 있다. 또한, TSM은 트리 검색 중 TSE에 의해 액세스 되게 될 것이다.
완료 유닛(CU) : 완료 유닛은 2가지 기능을 수행한다. 첫 번째는 N 개의 프로세싱 유닛을 Up 및 Dn EDS(Enqueue, Dequeue and Schedule Island)에 인터페이스한다. EDS는 인큐 동작을 수행한다: FCB 페이지로 불리는 적당한 변수와 함께 프레임 어드레스가 전송 큐(transmission queue), 폐기 큐 또는 디스패치 큐에 큐된다. 두 번째로, 완료 유닛은 프레임 시퀀스(frame sequence)를 보증한다. 다수의 GxH가 동일한 처리 흐름에 속한 프레임을 처리하는 경우가 발생할 수 있기 때문에, 프레임이 업 또는 다운 전송 큐에 바른 순서로 인큐되도록 주의가 요청된다. 완료 유닛은 프레임 디스패치시 분류화 하드웨어 지원부에 의해 생성된 라벨(label)을 사용한다.
분류화 하드웨어 지원부(CHA) : 업-프레임(up-frame)에 대해, 분류화 하드웨어 지원부는 잘 알려진 프레임 포맷 케이스에 대한 분류화를 제공한다. CIA 및 하나 이상의 레지스터의 내용의 관점에서 분류화 결과는 프레임 디스패치 중에 GxH로전달된다. 다운-프레임에 대해, 분류화 하드웨어 지원부는 프레임 헤더에 기초하여 CIA를 결정한다. 업 및 다운 프레임 양자 모두에 대해, 분류화 하드웨어 지원부는 프레임 시퀀스를 유지하기 위해 완료 유닛에 의해 사용되는 라벨을 생성한다.
업 및 다운 데이터 스토어 인터페이스 및 중재기 : 각 GxH는 업 및 다운 데이터 스토어에 대해 액세스할 수 있다: 판독 액세스는 "더 많은 피시"를 판독할 때 제공되고, 기록 액세스는 피시풀(FishPool)의 내용을 데이터 스토어에 기록할 때 제공된다. N 개의 프로세싱 유닛이 존재하고, 한번에 하나만이 업 데이터 스토어를 액세스할 수 있고 한번에 하나만이 다운 데이터 스토어를 액세스할 수 있기 때문에, 각 데이터 스토어에 대해 1개의 중재기가 요청된다.
웹 중재기 및 웹 와치(WEBWatch) 인터페이스 : 웹 중재기는 WEB에 액세스하는 GxH들간을 중재한다. 모든 GxH는 웹에 액세스할 수 있는데, 이것은 인터페이스 디바이스내의 모든 메모리 및 레지스터에 대한 액세스를 가능하게 한다. 이것은 임의의 GxH가 모든 구성화(configuration) 영역을 수정하거나 판독하는 것을 허용한다. 웹은 인터페이스 디바이스 메모리 맵으로서 고려될 수 있다. 웹 와치 인터페이스는 3개의 칩 IO 핀을 통해 칩 외부로부터 전체 웹에 대한 액세스를 제공한다.
디버그, 인터럽트 및 단일 스텝 제어(Single Step Control) : 웹은 필요할 경우 GCH 또는 웹 와치가 칩상의 각 GxH를 제어하는 것을 가능하게 한다. 예컨대, 웹은 GxH상의 단일 스텝 인스트럭션을 위해 GCH 또는 웹 와치에 의해 사용될 수 있다.
Power PC와 같은 내장 범용 프로세서(embedded general purpose processor).
4개의 GxH 타입(도 12의 (b))이 있다.
범용 데이터 핸들러(General Data Handler; GDH). 8개의 GDH가 있다. 각 GDH는 5개의 코프로세서를 가진 완전한 CLP를 가진다. GDH는 프레임의 전송에 주로 사용된다.
가이드 셀 핸들러(GCH). GCH는 GDH와 같이 동일한 하드웨어를 가진다. 그러나, 가이드 프레임은 GCH에 의해서만 처리될 수 있다. 만약 GCH가 데이터 프레임도 처리 가능하도록 된 경우(이 경우에는 GDH의 역할도 가지게 된다)라면 GCH는 웹(CLP_Ena 레지스터)상의 프로그램이 가능하다. GCH는 GDH에 비해 추가적인 하드웨어를 가지고 있다: 즉, 트리 삽입 및 삭제를 수행하는 하드웨어 지원부. GCH는 가이드 셀 관련 피코 코드의 실행, 에이징과 같은 칩과 트리 관리 관련 피코 코드의 실행, 및 CP 및/또는 다른 GCH와 제어 정보의 교환을 수행하기 위해 사용될 수 있다. 이와 같은 실행 작업이 없을 때는 GCH는 프레임 전송 관련 피코 코드를 실행할 것이고, 이 경우 GDH와 동일하게 동작할 것이다.
범용 트리 핸들러(General Tree Handler; GTH). GTH는 트리 삽입, 트리 삭제 및 로프(rope) 관리를 수행하는 추가적인 하드웨어 지원부를 가진다. GTH는 GPQ에 (트리 관리 코맨드를 포함하는)프레임이 없을 경우에는 데이터 프레임을 처리할 것이다.
범용 PowerPC 핸들러(GPH). GPH는 GDH 및 GTH와 비교할 때 추가적인 하드웨어를 가진다. GPH는 메일 박스(Mailbox) 인터페이스(i/f)를 통해 범용 프로세서(General Purpose Processor)에 인터페이스한다.
GxH의 수(10 개)는 "최상의 추측(best-guess)"의 문제이다. 성능 평가에 의해 얼마나 많은 GxH가 실제로 요청되는지가 결정될 것이다. 아키텍쳐 및 구조는 보다 많은 GxH에 대해 완벽한 확장 가능성을 가진다. 유일한 제한은 실리콘 영역(silicon area)의 크기이다(보다 많은 중재기와 인스트럭션 메모리를 포함하여야 하기 때문이다).
각 GxH는 도 12c에 도시된 구조를 가진다. GxH는 범용 레지스터(GPR)와 산술 논리 유닛(Arithmetic Logic Unit; ALU)을 가진 CLP 외에, 다음의 5 개의 코프로세서를 가진다.
(DS) 코프로세서 인터페이스. 업 및 다운 데이터 스토어로의 판독 및 기록 액세스를 제공하는 디스패쳐와 서브 지역(sub-island)을 인터페이스한다. DS 인터페이스는 소위 피시풀(FishPool)을 가진다.
트리 검색 엔진 코프로세서(TSE). TSE는 트리에서 검색을 수행하고, 트리 검색 메모리(TSM)에 인터페이스 한다.
인큐 코프로세서. 완료 유닛 인터페이스에 인터페이스하고 FCB 페이지를 가진다. 이 코프로세서는 피코 코드가 FCB 페이지를 구축하기 위해 사용해야 할 추가 하드웨어 지원부가 있는 256 비트 레지스터를 구비하는데, 이 페이지는 인큐 파라미터를 포함하고 있다. FCB 페이지가 구축된 후, 피코 프로세서는 인큐 인스트럭션을 실행할 수 있으며, 이 코프로세서는 이 실행에 의해 FCB 페이지를 완료 유닛으로 전송하게 한다.
웹 인터페이스 코프로세서. 이 코프로세서는 웹 중재기에 대한 인터페이스를제공하고 인터페이스 디바이스 웹으로부터/으로 판독 및 기록을 가능하게 한다.
체크섬(Checksum) 코프로세서. 피시풀에 저장된 프레임에 대한 체크섬을 생성한다(이하에 기술된다).
완료 유닛은 진입 프로세싱 및 퇴출 프로세싱간에 공유된다. 퇴출 프로세싱 대 진입 프로세싱에 대해 예약되어야 하는 밴드폭의 크기는 프로그램 가능하다. 이 실시예에서는 2 모드가 있다 : 즉, 50/50(즉, 진입과 퇴출이 동일 밴드폭을 가짐) 또는 66/34(즉, 진입이 퇴출의 밴드폭에 비해 2배의 밴드폭을 가짐).
프로세싱 유닛의 동작은 이벤트-구동 방식이다. 즉, 타이머 또는 인터럽트의 발생(popping)과 마찬가지로 프레임의 도착이 이벤트로 다루어진다. 비록 우선 순위(1순위 인터럽트, 2순위 타이머 이벤트 및 3순위 프레임 도착 이벤트)가 있기는 하지만 디스패쳐는 상이한 이벤트를 동일한 방식으로 다룬다. 이벤트가 프로세싱 유닛으로 전달될 때, 적당한 정보가 프로세싱 유닛으로 주어진다. 프레임 도착 이벤트의 경우, 이 정보는 프레임 헤더의 일부분과 하드웨어 분류기(hardware classifier)로부터 발생하는 정보를 포함한다. 타이머 및 인터럽트의 경우, 이 정보는 코드 엔트리 포인트 및 이 이벤트에 관련된 다른 정보를 포함한다.
프레임이 진입측에 도착하고, 이 프레임의 수신 바이트의 수가 프로그램 가능한 임계치를 초과할 때, 프레임 제어 블록의 어드레스가 GQ에 기록된다.
퇴출측에서 완전한 프레임으로 재조립될 대, 프레임 어드레스는 GQ에 기록된다. 4가지 타입의 GQ가 있다(도 12b와 같이, 각 타입에 대해서는 진입 버전과 퇴출 버전이 있다).
GCQ : GCH에 의해 처리되어야 하는 프레임을 포함함.
GTQ : GTH에 의해 처리되어야 하는 프레임을 포함함.
GPQ : GPH에 의해 처리되어야 하는 프레임을 포함함.
GDQ : GDH(또는 데이터 프레임 처리가 가능할 때는 GCH/GTH)에 의해 처리되어야 하는 프레임을 포함함. GDQ의 경우, 다수의 우선 순위가 있고, 이에 의해 고순위의 GDQ가 저순위의 큐에 인큐되는 프레임의 처리 전에 처리될 것이다.
일부 프로세싱 유닛은 전용화될 수 있다. 이 실시예에서, 4가지 타입의 프로세싱 유닛(GxH)가 있다(도 12b 참조).
범용 데이터 핸들러(GDH). GDH는 주로 프레임 전송에 사용된다.
가이드 셀 핸들러(GCH). GDH와 동일한 하드웨어를 가진다. 그러나, 가이드 프레임은 GCH에 의해서만 처리될 수 있다. GCH가 데이터 프레임도 처리 가능하게 되는 경우 웹(CLP_Ena 레지스터)상에서 프로그램 가능하다(이 경우 GDH의 역할을 가진다).
범용 트리 핸들러(GTH). GTH는 GDH/GCH와 비교하여 추가적인 하드웨어 지원부를 가진다. 하드웨어 지원부는 트리 삽입, 트리 삭제 및 로프 관리를 수행한다. GTH는 GPQ에 (트리 관리 코맨드를 포함하는)프레임이 없을 경우에는 데이터 프레임을 처리할 것이다.
범용 PowerPC 핸들러(GPH). GPH는 GDH/GTH와 비교할 때 추가적인 하드웨어를 가진다. GPH는 메일 박스 인터페이스(Mailbox i/f)를 통해 내장 PowerPC에 인터페이스한다.
실제 구현에 있어서, GCH, GTH 및 GPH는 단일한 프로세싱 유닛에 구현될 수 있다. 예컨대, 한 실시예는 GCH 및 GPH에 대해 하나의 프로세싱 유닛을 가질 수 있다. GCQ, GTQ 및 GPQ에 대해서도 유사한 해석이 가능하다.
데이터 스토어 코프로세서의 목적 :
미디어로부터 수신된 프레임을 보유하는 업 데이터 스토어와 프리즈마 아틀란틱(Prizma Atlantic)으로부터 수신된 재조립된 프레임을 보유하는 다운 데이터 스토어에 인터페이스하기 위한 것이다.
또한, 데이터 스토어 코프로세서는 타이머 이벤트 또는 인터럽트의 디스패치 중에 구성 정보(configuration information)를 수신한다.
데이터 스토어 코프로세서는 프레임에 대한 체크섬을 계산할 수 있다.
데이터 스토어 코프로세서는 피시풀(8개의 피시를 포함할 수 있음), 스크래치 메모리(8개의 피시를 포함할 수 있음) 및 피시풀의 내용을 업 또는 다운 데이터 스토어로부터/업 또는 다운 데이터 스토어에 판독/기록하기 위한 약간의 제어 레지스터를 포함한다. 피시풀은 데이터 스토어를 위한 일종의 작업 영역으로 간주될 수 있다. 데이터 스토어로 직접 판독/기록하는 대신에, 프레임 데이터의 상당 부분이 데이터 스토어로부터 피시풀로 읽혀지고, 데이터의 상당 부분이 피시풀로부터 데이터 스토어로 기록된다. 전달되는 유닛은 16 바이트에 해당하는 피시이다.
피시풀은 8개의 피시, 즉 각각 128 비트인 8 워드를 가질 수 있는 메모리로 간주될 수 있다. CLP 프로세서 아키텍쳐에서, 피시풀은 128 바이트의 레지스터 어레이이다. 피시풀의 각 바이트는 7-비트 바이트 어드레스(0 .. 127)를 가지고 액세스는 16-비트 또는 32-비트 기반으로 행해진다. 모든 레지스터 어레이와 마찬가지로, 피시풀은 원형(circular) 어드레스 체계를 가진다. 즉, 피시풀의 126 위치에서 시작하는 어드레싱 워드(즉, 4 바이트)는 바이트 126, 127, 0 및 1을 리턴한다. 더욱이, 데이터 스토어 코프로세서의 관점에서, 피시풀에서의 피시 위치는 3 비트 피시 어드레스를 가진다.
프레임 디스패치시, 프레임의 처음 N개의 피시는 디스패치에 의해 피시 풀에 자동적으로 복사된다. N 값은 포트 구성 메모리(PortConfigMemory)에서 프로그램 가능하다. 통상적으로, N은 업 프레임 디스패치에서 4, 다운 유니캐스트(unicast) 프레임 디스패치에서 2, 다운 멀티캐스트 프레임 디스패치에서 4, 인터럽트 및 타이머에서 0이다.
피코 코드는 프레임에서 더 많은 바이트를 판독할 수 있는데, 이 경우 데이터 스토어 코프로세서는 프레임 데이터를 다음 피시 어드레스에서 피시풀로 자동적으로 판독하고, 피시풀의 바운더리(boundary)에 도달할 때 0으로 자동적으로 랩핑(wrapping)한다. 또한, 피코 코드는 절대 주소에서 업/다운 데이터 스토어를 판독 또는 기록할 수 있다.
웹 코프로세서는 EPC 웹 중재기와 인터페이스한다. EPC 웹 중재기는 인터페이스 디바이스 웹 인터페이스상의 마스터가 되기 위한 10개의 GxH 및 웹 와치(WEB Watch)간을 중재한다. 이것은 모든 GxH로 하여금 웹 상에 판독과 기록을 가능하도록 한다.
인터페이스 디바이스 메모리 콤플렉스는 내장 프로세싱 콤플렉스(EPC, 도 12a)용의 저장 장치를 제공한다. 이 메모리 콤플렉스는 트리-검색 메모리(TSM) 중재기 및 다수의 온칩 및 오프칩 메모리를 포함한다. 메모리는 트리 구조, 카운터 및 피코 코드가 메모리에 액세스하기 위해 요청되는 다른 것들을 포함한다. 더욱이, 메모리는 프리 리스트(free list), 큐 제어 블록(queue-control-block)과 같은 하드웨어에 의해 사용되는 데이터 구조를 저장하기 위해 사용된다. 카운터나 에이징 테이블처럼 트리에 할당되지 않은 메모리의 위치 또는 하드웨어에 의해 사용되지 않는 메모리의 위치는 디폴트(default)에 의해 피코 코드용으로 사용 가능하다.
도 13은 메모리 콤플렉스의 보다 상세한 블록도를 도시하고 있다. 트리 검색 메모리(TSM) 중재기는 내장 프로세서(GxH)와 메모리간에 통신 링크를 제공한다. 메모리는 5개의 온칩 SRAM, 1개의 오프칩 DRAM 및 7개의 오프칩 DRAM을 포함한다. TSM 중재기는 10개의 요청 제어 유닛(Request Control Unit)(각각은 내장 프로세서 GxH 중 하나에 연결됨)과 각 메모리에 대해 한개씩 할당되는 13개의 메모리 중재기 유닛을 포함한다. 버스 아키텍쳐는 각 제어 유닛과 이에 접속된 GxH가 모든 메모리에 대해 액세스하는 방식으로 요청 제어 유닛과 중재기 유닛을 접속시킨다.
제어 유닛은 내장 프로세서(GxH)와 중재기간에 데이터를 조종하기 위해 필요한 장치를 포함한다.
SRAM 중재기 유닛은 특히 내장 프로세서(GxH)와 온칩 및 오프칩 SRAM간의 데이터 플로우를 관리한다.
DRAM 중재기 유닛은 특히 내장 프로세서(GxH)와 오프칩 DRAM 디바이스간의 데이터 플로우를 관리한다.
각 메모리 중재기는 "백-도어(back-door)" 액세스를 포함하는데, 이것은 보통 칩의 다른 부분에 의해 사용되고 가장 높은 액세스 우선 순위를 가진다.
DRAM 메모리는 2가지 동작 모드에서 동작할 수 있다:
TDM 모드. DDRAM의 4개의 뱅크(bank)에 대한 액세스는 판독 윈도우 및 기록 윈도우를 교번시킴으로써 행해진다. 판독 윈도우에서 4개의 뱅크에 대한 액세스는 판독 전용이고, 기록 윈도우에서 4개의 뱅크에 대한 액세스는 기록 전용이다. 다수의 DDRAM에 TDM 모드를 사용하는 것은 DDRAM간에 일부 제어 신호를 공유하게 하며, 이것은 일부 칩 IO(이것은 매우 귀한 리소스이다)의 절감을 가져온다.
비TDM 모드. DDRAM의 4개의 뱅크에 대한 메모리 액세스는 판독 및 기록의 조합일 수 있다. 이것은 특정한 룰에 따른다. 예컨대, 하나의 액세스 윈도우에서 뱅크 A를 판독할 수 있고 뱅크 C에 기록할 수 있다.
TSM 중재기는 N 개 요청 장치에 의한 메모리 동시 액세스를 가능하게 한다. 다수의 요청 장치가 동일한 메모리를 액세스하기를 원할 때, 라운드 로빈(round-robin) 중재가 수행된다.
M개의 메모리 및 N 개의 요청 장치는 동질(homogeneous)이다: 임의의 요청 장치는 임의의 메모리에 액세스할 수 있다.
일부 메모리는 다수의 서브 메모리(DDRAM의 4개의 뱅크와 같이)로 논리적으로 분할된다. 이것은 동시에 논리적으로 액세스될 수 있다.
M개의 메모리의 일부는 내부적으로 사용되는 데이터 구조를 갖는 제어 메모리로 사용된다. 이것은 피코 프로세서에 대하여 높은 우선 액세스 순위를 가진다.이것은 피코 프로세서가 제어 메모리의 내용을 판독할 수 있기 때문에 또한 칩의 디버깅을 가능하게 한다.
중재기는 판독 액세스, 기록 액세스 및 판독 부가 기록(read-add-write) 액세스를 지원하는데, 원자 동작(atomic operation)시 N 비트 정수가 메모리의 내용에 부가된다.
M개의 메모리를 액세스하기 위해 범용 어드레스 체계가 사용된다. 따라서, 메모리 내의 객체의 물리적 위치는 투명(transparent)하다.
트리의 개념은 정보를 저장하고 검색하기 위해 트리 검색 엔진에 의해 사용된다. 검색, 즉 트리 검색과 삽입 및 삭제는, 예컨대 MAC 근원지 어드레스 또는 IP 근원지 어드레스와 IP 목적지 어드레스의 연결과 같은 비트 패턴(bit-pattern)과 유사한 키(Key) 기반으로 행해진다. 정보는 최소한 키(추후 설명되는 바와 같이, 저장된 비트 패턴은 실제 해시 키임)를 보유하고 있는 잎(Leaf)이라 불리는 제어 블록에 저장된다. 잎은 또한 에이징 정보, 사용자 정보와 같은 추가 정보를 포함할 수 있는데, 이것은, 예컨대 타겟 블레이드 및 타겟 포트 번호와 같은 전송 정보일 수 있다.
트리 타입(FM, LPM 및 SMT) 및 관련 트리 타입 검색, 즉 고정 매치(fixed match), 소프트웨어 관리 트리 및 최대 접두 매치(largest prefix match)가 있다. 트리 검색시 잎을 검사하기 위한 선택적인 추가 기준(criterium)은 벡터 마스크(VectorMask)이다. 로핑(Roping), 에이징 및 래치(latch)는 검색 성능을 향상시키기 위해 사용된다.
FM 트리를 위한 검색 알고리즘이 도 14에 도시되어 있다. 검색 알고리즘은 키를 포함하는 입력 파라미터에 따라 동작하고, 키에 대해 해시(hash)를 수행하고, 직접 테이블(Direct Table; DT)을 액세스하고, 패턴 검색 제어 블록(Pattern Search Control Block; PSCB)를 통해 트리를 워크(walk)하며 잎(도 14)에서 종료한다. 여기에는 각각 고유의 검색 알고리즘을 가지는 3 종류의 트리가 있으며, 이에 따라 트리 워크(tree walk)는 상이한 룰을 따라 발생하게 된다. 예컨대, 고정 매치(Fixed Match) 트리의 경우, 데이터 구조는 패트리샤 트리(Patricia Tree)이다. 잎이 발견될 때, 이 잎은 입력 키에 일치할 수 있는 유일하게 가능성 있는 후보이다. 소프트웨어 관리 트리의 경우, 링크된 리스트에 연쇄(chain)되는 다수의 잎이 있을 수 있다. 이 경우, 일치하는 경우가 발견될 때까지 또는 연쇄가 끝날 때가지 연쇄(chain)내의 모든 잎은 입력 키(input Key)로 검사된다. 입력 키를 잎에 저장된 패턴과 비교하는 소위 "종단(end)에서의 비교" 동작은 잎이 실제로 입력 키와 일치하는지를 검증한다. 잎이 발견되고 일치할 때 검색 결과는 OK가 될 것이고, 그렇지 않은 모든 경우에 검색 결과는 KO가 될 것이다.
검색 동작시 입력은 다음의 파라미터로 구성된다.
키(Key) : (128 비트). 키는 검색(삽입/삭제) 전에 전용 피코 코드 인스트럭션을 사용하여 구축되어야 한다. 여기에는 오직 하나의 키 레지스터가 있다. 그러나, 트리 검색이 개시된 후에는 TSE가 검색을 수햄함과 동시에 다음 검색을 위한 키를 구축하기 위해 키 레지스터가 피코 코드에 의해 사용될 수 있다. 이것은 TSE가 키와 충돌(bash)하여 그 결과를 내부 해시 키 레지스터에 저장하기 때문이다(따라서, 실제로 2개의 키 레지스터가 있게 된다).
키 길이(KeyLength) : (7 비트). 이 레지스터는 키의 길이를 비트로 보유한다. 이것은 키의 구축 중에 하드웨어에 의해 자동적으로 갱신된다.
LUDefIndex : (8 비트). 이것은 LUDefTable로의 인덱스이다. 이것은 검색되는 트리에 대한 완전한 정의를 포함하고 있다. LUDefTable은 나중에 보다 상세히 기술된다.
TSRNr : (1 비트). 검색 결과는 트리 검색 결과(Tree Search Result) 영역 0(TSR0) 또는 TSR1에 저장될 수 있다. 이것은 TSRNr에 의해 특정된다. TSE가 검색중일 때, 피코 코드는 이전 검색의 결과를 분석하기 위해 다른 TSR을 액세스할 수 있다.
VectorIndex : (6 비트). 인에이블된 벡터 마스크(VectorMask)를 가지는 트리의 경우, 벡터 인덱스(VectorIndex)는 벡터 마스크내의 비트를 나타낸다. 검색 종료시 이 비트 값이 리턴되어 피코 코드에 의해 사용될 수 있다.
도 14에 도시된 바와 같이, 입력 키는 해시 키로 해시될 수 있다. 사용 가능한 6 개의 고정 해시 알고리즘들이 있다(하나의 "알고리즘"은 해시 함수를 수행하지 않는다). 이것은 알고리즘이 사용될 LUDefTable에서 특정된다. 유연성의 부가를 위해 프로그램 가능한 해시 함수가 사용될 수 있다.
해시 함수(hash function)의 출력은 항상 128 비트의 숫자이며, 이것은 최초 입력키와 해시 함수의 출력간에 일대일 대응 특성을 갖는다. 이하에서 설명되는 바와 같이, 이 특성은 직접 테이블 다음에서 시작되는 트리의 깊이(depth)를 최소화한다.
도 14의 예에서와 같이 트리에 대해 컬러(color)가 인에이블되는 경우, 16 비트 컬러 레지스터가 128 비트 해시 함수 출력에 삽입된다. 이 삽입 동작은 직접 테이블에 따라 발생한다. 즉, 직접 테이블이 2N개의 엔트리를 가지면, 16 비트 컬러 값은 도시된 바와 같이 비트 위치 N에서 삽입된다. 삽입된 컬러 값과 함께(인에이블 된 경우) 해시 함수의 출력은 해시 키 레지스터에 저장된다.
해시 함수는 그 출력에서 대부분의 엔트로피가 최상위 비트에 존재하도록 정의된다. 해시 키의 N 개의 최상위 비트는 직접 테이블(DT)로의 인덱스를 계산하는 데 사용된다.
검색은 직접 테이블로의 액세스와 함께 시작된다. DT엔트리(DTEntry)는 직접 테이블로부터 읽혀진다. DT엔트리를 판독하기 위해 사용되는 어드레스는 LUDefTable에서 정의된 바의 트리 특성에서와 마찬가지로 해시 키의 N 개의 최상위 비트로부터 계산된다. 이것은 이하에서 상세히 기술된다. DT엔트리는 트리의 루트(root)로 간주될 수 있다. 사용되는 특정 트리 구조는 트리 타입에 의존한다. 현시점에서는 패트리샤 트리 데이터 구조가 FM 트리용으로 사용되고, 확장(extension) 패트리샤 트리가 LPM 및 SMT 트리에 사용된다는 점만 말해둔다.
8 엔트리 DT의사용의 예가 도 15에 도시되어 있다. 검색 시간(즉, 액세스되어야 하는 PSCB의 숫자)이 DT의 사용에 의해 감소될 수 있다는 것을 알 수 있다. 따라서, DT 사이즈를 증가시킴으로써 메모리 사용과 검색 성능간에 절충(trade-off)이 이루어질 수 있다.
도 15에서 알 수 있는 바와 같이, DT엔트리는 다음의 정보를 포함할 수 있다.
공백(empty). 이 DT엔트리에 부착된 잎이 존재하지 않음.
잎에 대한 포인터. 이 DT엔트리에 부착된 하나의 잎이 존재함.
PSCB에 대한 포인터. 이 DT엔트리에 부착된 하나 이상의 잎이 존재함. DT엔트리는 트리의 루트를 정의함.
소프트웨어 관리 트리에 대한 검색 알고리즘 및 트리 생성 알고리즘은 미국 특허 출원 일련 번호 제09/312,148호에 기술되어 있다.
"선택(Choice) 비트 알고리즘"으로 명명된 알고리즘은 세트(set)내의 "룰"로 명명된 아이템 또는 전체룰(universe of rule)로부터 선택된 비트에 기반하여 이진 검색 트리를 구축하기 위해 특정 미터법(metric)을 사용한다. 여기에 제시되는 모든 실시예는 인터넷 프로토콜(IP) 헤더의 관점에서 기술되지만, 다른 타입의 고정 포맷 헤더가 대신 사용될 수도 있다.
IP에서, 각 룰(Rule)은 다음의 서브 섹션과 함께 구축될 수 있는 임의의 키를 보유한다 : 근원지 어드레스(SA), 목적지 어드레스(DA), 근원지 포트(SP), 목적지 포트(DP) 및 프로토콜(P). 이들 데이터는 각각 32, 32, 16, 16 및 8 비트 길이이며, 따라서 테스트되는 키는 104 비트로 구성된다. 선택 비트 알고리즘은 104 비트중 특히 유용한 특정 비트들을 발견한다. 수개의 비트를 테스트하는 것은 가능한 애플리케이션으로부터 하나 또는 수개의 룰 이외의 모든 룰을 효과적으로 제거한다. 어떤 룰에 대해서는 단순 비교 동작에 의해 부등 관계(inequality)를 검사하는 것도 적절한 방법이다. 비트 테스트 및 비교는 이진 트리에서 논리적으로 조직화된다. 트리는 비트들을 고속으로 테스트하는 하드웨어 인에이블 구조로 맵핑(mapping)된다. 이러한 테스트를 통해 키(Key)에 적합한 하나의 룰 또는 적은 수의 룰(잎 연쇄라 불림)만을 얻게 된다. 전자의 경우 키는 그 룰에 의해 전부 검사되고, 후자의 경우 키는 비교(compare) 및 완전한 룰 테스트(full rule test)를 사용하여 검사 래티스(lattice of test)내에서 검사된다.
룰 세트의 각 룰은 그 룰이 키에 적합한 최우선 순위의 룰인 경우에 취해지는 조치와 관련되어 있다. 룰은 교차할 수 있다(1개의 키가 2개 또는 그 이상의 룰에 적합). 이 경우, 룰에는 우선 순위 번호 1, 2, 3, ..., 이 주어질 수 있고, 두 개의 교차하는 룰은 상이한 우선 순위(키가 둘 이상의 룰과 부합할 때 관리자는 어떤 룰이 지배적인지를 결정해야 함)를 가지게 된다. 따라서, 비트 테스트 및 비교 후 하나 이상의 룰이 테스트되어야 하는 경우, 이 룰들은 우선 순위에 따라 테스트된다. 낮은 우선 순위 번호는 높은 우선 순위를 갖는 룰임을 의미한다.
적합한 룰이 전혀 발견되지 않는 경우, 약간의 디폴트 규정이 명시될 수 있다.
최장 접두 매칭 방법(the longest Prefix Matching)을 위한 검색 알고리즘이 미국 특허 제5,787,430호에 기술되어 있다. 이 방법은 데이터 베이스의 노드(루트 노드)에서의 입력하는 단계; 검색 인자 세그먼트- 검색 인자는 다음 노드(차일드 노드)를 확인하는데 필요한 엔트리의 부분만을 포함함 - 와 상기 세그먼트가 소모되거나 제2 링크 정보를 결여하는 노드(잎 노드)에 도달하기 전에 상기 제2 링크 정보를 연속 처리함에 의해 트리 라이크(tree-like) 데이터 베이스를 통한 하나의 노드로부터 다른 노드로 검색 경로를 결정하는 단계; 검색 경로가 종료하는 노드에 저장된 엔트리를 상기 검색 인자와 비교하는 단계; 상기 검색 인자와 상기 엔트리 사이에 최소한 부분적인 일치가 존재하지 않으면, 현재 노드의 제1 링크 정보를 처리함으로써 상기 검색 경로를 백트래킹하는 단계; 최소한 부분적인 일치가 발견되거나 루트 노드에 이를 때가지 이전 두 단계를 반복하는 단계를 요한다.
도 16은 메인 스위칭 패브릭 디바이스의 실시예를 도시하고 있다. 바람직하게는, 각 인터페이스 디바이스 칩은 최소한 2개의 집적된 병렬-직렬(parallel-to-serial) 포트를 가진다. 이 포트는 병렬 데이터를 수신하여, 직렬 링크를 통해 스위칭 패브릭 디바이스로 전송될 고속 직렬 데이터 스트림으로 이 데이터를 변환한다. 고속 직렬 링크를 통해 스위칭 패브릭 디바이스로부터 수신된 데이터는 다른 DASL에 의해 병렬 데이터로 변환된다. DASL(Data Align Serial Link)로 명명된 직렬화기(Serializer)/비직렬화기(Deserializer)의 실시예가 여기에 기술된다.
최소한 1개의 DASL이 스위칭 패브릭 디바이스를 직렬 링크로 인터페이스한다. 직렬 링크로부터의 데이터는 스위칭 패브릭 디바이스로 전달되는 병렬 데이터로 변환된다. 이와 유사하게, 스위칭 패브릭 디바이스로부터의 병렬 데이터는 직렬 링크로 전달되는 직렬 데이터로 변환된다. 직렬 링크들은 쓰루풋을 증대시키기 위하여 총화(aggregate)될 수 있다.
도 16을 참조하면, 스위칭 시스템은 스위치 패브릭(11), 스위치 패브릭 입력포트(15, 15-1, ...., 15-k)에 연결되는 입력 스위치 어댑터(13, 13-1, ..., 13-k) 및 출력 포트에서 스위치 패브릭에 연결되는 출력 스위치 어댑터(17, 17-1, ..., 17-p)를 포함한다.
입력 및 출력 전송 링크(21, 21-1, ... , 21-q 및 23, 23-1, ..., 23-r)는 각각 라인(링크) 어댑터(25, 25-1, ..., 25-q)에 의해 스위치 시스템에 연결된다. 전송 링크는 워크 스테이션, 텔레비젼 세트 등과 같은 부착 유닛(참조 부호 WS를 링크), 지역 네트워크(LAN)(참조 부호 LAN을 링크), 통합 서비스 디지털 네트워크(Integrated Services Digital Network) 장치(참조 부호 ISDN을 링크), 또는 다른 통신 시스템으로부터 및 이들 시스템으로 회선 교환 방식(circuit switched) 또는 패킷 교환 방식(packet switched) 트래픽을 수송한다. 더욱이, 프로세서는 스위치 어댑터(13 및 17)에 직접 부착될 수 있다. 라인 어댑터(LA) 및 스위치 어댑터(SA)는 공통 인터페이스를 가진다.
입력 스위치 어댑터에서 패킷 교환 및 회로 교환 인터페이스로부터의 다양한 서비스가 수집되어 요청되는 스위치의 출력 포트(및 출력 링크)를 지시하는 라우팅 정보를 포함하는 헤더를 가진 균일한 미니 패킷(여러개의 가능한 고정 길이를 가짐)으로 변환된다. 입력 스위치 어댑터에서의 미니 패킷 포맷 및 미니 패킷 생성과 출력 스위치 어댑터에서의 디패킷화(depacketization)에 대해서는 다음 섹션에서 상세히 설명한다.
스위치 패브릭은 이 미니 패킷을 셀프 라우팅 접속 네트워크를 통해 임의의 입력 포트에서 임의의 출력 포트로 라우트한다. 셀프 라우팅 네트워크의 구조는 미니 패킷이 충돌없이 동시에 내부적으로 라우트될 수 있도록 되어 있다.
스위칭 시스템의 핵심은 스위치 패브릭이다. 두 개의 상이한 구현예를 고려하고 이를 각각 설명한다. 하나의 구현예에서, 스위치 패브릭은 각 입력 포트에 대한 셀프 라우팅 이진 트리를 포함하여, 개별 입력 포트를 모든 출력 포트에 연결한다. 스위치 패브릭은 이러한 k 개의 트리의 조합으로 구성된다(k개의 입력이 제공되는 경우). 다른 구현예에서, 출력 RAM을 갖는 버스 구조가 각 출력 포트에 대한 슬라이스(slice)로서 제공되어, 모든 입력 포트를 개별 출력 포트에 연결시킨다. 스위치 패브릭은 이러한 p개의 슬라이스의 조합으로 구성된다(p개의 출력 포트가 제공되는 경우).
DASL은 1999년 6월 11일에 출원된 미국 특허 출원 일련 번호 제09/330,968호에 기술되어 있다. DASL 인터페이스는 CMOS ASIC과 같은 병렬 인터페이스로부터 데이터를 수신하여, 병렬 인터페이스로부터의 비트를 더 작은 수의 병렬 비트 스트림으로 분할한다. 더 작은 수의 병렬 비트 스트림은 고속 직렬 스트림으로 변환되어, 전송 미디엄을 통해 다른 모듈의 수신기로 전송된다. 제어 임피던스를 갖는 차동 드라이버는 이 직렬 비트 스트림 데이터를 전송 미디어로 인도한다.
DASL은 N 비트의 병렬 데이터 스트림을 각각이 n 비트를 갖는 여러 개의 부분으로 분석하는 단계(여기서 n은 N에 대한 분율이다); 각 직렬화된 부분을 다수의 병렬 채널중 대응하는 채널로 전송하는 단계; 및 데이터 스트림을 복구하기 위해 전송된 각 데이터 스트림의 부분을 병렬 N 비트를 나타내도록 비직렬화하는 단계를 포함하는 방법을 구현한다.
이상, 도면 및 상세한 설명에서 본 발명의 바람직한 실시예를 기술하였고, 여기에서 비록 특정 용어를 사용하였지만, 이 용어는 일반적 의미 및 서술적인 의미로 사용되는 것에 불과하며, 본 발명을 제한하는 목적으로 사용되는 것은 아니다.

Claims (27)

  1. 장치에 있어서,
    반도체 기판과,
    상기 기판상에 형성되며, 그 수가 최소한 5개인 다수의 인터페이스 프로세서와,
    상기 기판상에 형성되고, 상기 인터페이스 프로세서에 의해 액세스될 수 있으며, 인스트럭션들을 저장하는 내부 인스트럭션 메모리와,
    상기 기판상에 형성되고, 상기 인터페이스 프로세서에 의해 액세스될 수 있고, 다수의 메모리 소자-상기 메모리 소자의 수가 상기 인터페이스 프로세서의 수와 서로 관련있음-를 구비하며, 상기 장치를 통과하는 데이터를 저장하는 내부 데이터 메모리와,
    상기 각각의 인터페이스 프로세서와 메모리 소자들 사이에 동작 가능하게 배치되어, 상기 인터페이스 프로세서로부터 상기 메모리 소자들로의 데이터 요청 플로우를 제어하는 요청 제어기와,
    상기 각각의 메모리 소자와 상기 인터페이스 프로세서들 사이에 동작 가능하게 배치되어, 상기 인터페이스 프로세서들이 상기 메모리 소자를 액세스하는 것을 제어하는 메모리 중재기와,
    상기 기판에 형성된 다수의 입력/출력 포트--상기 입력/출력 포트들 중 적어도 하나가 상기 내부 데이터 메모리와 외부 데이터 메모리를 연결하고, 상기 입력/출력 포트들 중 최소한 다른 두 개가 상기 인터페이스 프로세서들의 감독하에 상기 장치를 통과하는 데이터를 외부 네트워크와 교환함--를 포함하고,
    상기 각각의 인터페이스 프로세서는 상기 다수의 메모리 소자를 액세스하고, 상기 각각의 메모리 소자는 상기 다수의 인터페이스 프로세서로부터의 요청들에 응답하는 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 장치에 있어서,
    반도체 기판과,
    상기 기판상에 형성된 다수의 프로세서와,
    상기 기판상에 형성되고 상기 프로세서 각각에 의해 액세스될 수 있으며, 인스트럭션들을 저장하는 내부 인스트럭션 메모리와,
    상기 기판상에 형성되고, 상기 프로세서 각각에 의해 액세스될 수 있고, 다수의 메모리 소자를 구비하며, 상기 장치를 통과하는 데이터를 저장하는 내부 데이터 메모리와,
    상기 각각의 프로세서와 메모리 소자들 사이에 동작 가능하게 배치되어, 상기 프로세서들 중 대응하는 프로세서로부터 상기 메모리 소자들로의 데이터 요청 플로우를 제어하는 요청 제어기와,
    상기 각각의 메모리 소자와 상기 프로세서들 사이에 동작 가능하게 배치되어, 상기 프로세서들이 상기 메모리 소자들 중 대응하는 메모리 소자를 액세스하는 것을 제어하는 메모리 중재기와,
    적어도 하나의 요청 제어기와 다수의 메모리 중재기를 서로 연결하는 적어도 하나의 버스와,
    상기 기판에 형성된 다수의 입력/출력 포트--상기 입력/출력 포트들 중 적어도 하나가 상기 내부 데이터 메모리와 외부 데이터 메모리를 연결하고, 상기 입력/출력 포트들 중 최소한 다른 두 개가 상기 프로세서들의 감독하에 상기 장치를 통과하는 데이터를 외부 네트워크와 교환함--를 포함하고,
    상기 각각의 프로세서는 상기 다수의 메모리 소자를 액세스하고, 상기 각각의 메모리 소자는 상기 다수의 인터페이스 프로세서로부터의 요청들에 응답하고,
    상기 요청 제어기들과 상기 메모리 중재기들이 서로 협력하여, 상기 프로세서들이 상기 메모리 소자들을 액세스하는 것을 통제하는 액세스 규칙들의 집합을 구현하는 것인 장치.
  7. 장치에 있어서,
    각각 상이한 타입을 갖는 다수의 메모리와,
    각 메모리 중재기가 상기 다수의 메모리 중 하나의 메모리에 동작 가능하게 연결되어 상기 하나의 메모리에 대한 액세스를 제공하는, 다수의 메모리 중재기와,
    상기 다수의 메모리 중 적어도 하나의 메모리를 액세스하기 위한 요청 신호를 발생시키도록 동작할 수 있는 다수의 요청 제어기와,
    각 전송 버스가 오직 하나의 요청 제어기를 상기 다수의 메모리 중재기 중 선택된 일부 또는 전부에 동작가능하게 연결시키는 다수의 전송 버스와,
    각 프로세서가 상기 다수의 요청 제어기 중 하나의 요청 제어기에 동작 가능하게 연결되는 다수의 프로세서를 포함하는 장치.
  8. 제7항에 있어서, 상기 상이한 타입의 메모리는 SRAM 및 DRAM을 포함하는 것인 장치.
  9. 제7항에 있어서, 상기 상이한 타입의 메모리는 상이한 타입의 데이터 구조를 저장하는 것인 장치.
  10. 제8항에 있어서, 상기 DRAM들은 4개의 뱅크로 분할되고, 각각의 뱅크는 다른 뱅크와 독립적으로 어드레스를 가지는 것인 장치.
  11. 삭제
  12. SRAM 모듈들 및 DRAM 모듈들--상기 DRAM 모듈들은 상기 DRAM 모듈들을 제1 동작 모드 또는 제2 동작 모드에 두는 구성(configuration) 신호에 응답하고 상기 제1 동작 모드는 다수의 연속되는 판독 또는 기록 동작이 상기 DRAM들 내의 뱅크상에서 단일 액세스 사이클 내에 실행될 수 있는 모드이고, 제2 동작 모드는 판독 및 기록 동작이 상기 DRAM들 내의 선택된 뱅크상에서 액세스 사이클 내에 실행될 수 있는 모드임--을 포함하는 메모리 시스템과,
    상기 구성 신호, 메모리 요청 신호들을 생성하고, 다른 작업들을 수행하는 다수의 프로세서와,
    상기 다수의 프로세서 내의 각 프로세서가 상기 메모리 시스템 내의 SRAM 모듈들과 DRAM 모듈들을 액세스하도록 하기 위하여, 상기 다수의 프로세서를 상기 메모리 시스템에 동작 가능하게 연결시키는 네트워크를 포함하는 장치.
  13. 제12항에 있어서, 상기 네트워크는 중재 타입(arbitration type)인 것인 장치.
  14. 제12항에 있어서, 상기 네트워크는 다수의 중재기--상기 다수의 중재기 중 선택된 중재기들은 상기 SRAM 모듈들 중 선택된 모듈에 동작 가능하게 연결되고, 상기 다수의 중재기 중 선택된 중재기들은 상기 다수의 DRAM 중 선택된 DRAM들에 동작 가능하게 연결됨--와,
    다수의 요청 제어기--상기 다수의 요청 제어기 중 선택된 요청 제어기들은 각각 상기 다수의 프로세서 중 선택된 프로세서들에 동작 가능하게 연결됨--와,
    다수의 버스--상기 다수의 버스는 각각 상기 다수의 요청 제어기 각각을 다수의 중재기에 동작 가능하게 연결시킴--를 포함하는 것인 장치.
  15. 반도체 기판과,
    상기 기판상에 형성되는 다수의 인터페이스 프로세서와,
    상기 기판상에 형성되고, 상기 인터페이스 프로세서에 의해 액세스될 수 있는 인스트럭션들을 저장하는 메모리와,
    상기 기판상에 형성되는 다수의 기판내(on-substrate) SRAM과,
    상기 기판의 바깥에 형성되는 다수의 기판외(off-substrate) SRAM과,
    상기 기판의 바깥에 형성되는 다수의 DRAM과,
    각 요청 제어기가 상기 다수의 인터페이스 프로세서 중 하나의 인터페이스 프로세서에 동작가능하게 연결되는, 다수의 요청 제어기와,
    제1 메모리 중재기 집합의 각 중재기가 상기 기판내 SRAM들과 동작 가능하게 연결되고, 제2 메모리 중재기 집합의 각 중재기가 상기 기판외 SRAM들과 동작 가능하게 연결되며, 제3 메모리 중재기 집합의 각 중재기가 상기 DRAM들과 동작 가능하게 연결되는, 다수의 메모리 중재기와,
    각 프로세서가 상기 SRAM들과 DRAM들을 액세스할 수 있도록 하기 위하여, 각 전송 버스가 상기 다수의 요청 제어기 각각을 상기 다수의 메모리 중재기에 동작가능하게 연결시키는, 다수의 전송 버스를 포함하는 장치.
  16. 제15항에 있어서, 상기 기판상에 형성되는 다수의 입력/출력 포트를 더 포함하고, 상기 입력/출력 포트들 중 최소한 하나는 상기 기판내 SRAM들을 상기 기판외 SRAM들 및 DRAM들과 상호접속하며, 상기 입력/출력 포트들 중 나머지는 외부 네트워크와 데이터를 교환하는 것인 장치.
  17. 제15항에 있어서, 상기 장치를 통과하여 전달되는 데이터를 저장하는 기판내 저장 장치를 더 포함하는 것인 장치.
  18. 제15항에 있어서, 메모리 중재기는 프로세서로부터의 명령(command)에 따라 DRAM을 제1 동작 모드 또는 제2 동작 모드로 구성하고, 상기 제1 동작 모드는 다수의 연속되는 판독 또는 기록 동작이 상기 DRAM들 내의 뱅크상에서 단일 액세스 사이클 내에 실행될 수 있는 모드이고, 상기 제2 동작 모드는 판독 및 기록 동작이 상기 DRAM들 내의 선택된 뱅크상에서 액세스 사이클 내에 실행될 수 있는 모드인 것인 장치.
  19. 제15항에 있어서, 메모리 중재기는 프로세서로부터의 단일 명령에 응답하여 상기 중재기가 연결된 상기 SRAM 및 상기 DRAM으로부터 어드레스를 판독하고, 상기 어드레스의 내용에 값을 부가하여 그 결과를 상기 어드레스로 기록하는 것인 장치.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
KR10-2002-7002332A 1999-08-27 2000-08-24 네트워크 프로세서 KR100468800B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/384,744 US6460120B1 (en) 1999-08-27 1999-08-27 Network processor, memory organization and methods
US09/384,744 1999-08-27

Publications (2)

Publication Number Publication Date
KR20020024332A KR20020024332A (ko) 2002-03-29
KR100468800B1 true KR100468800B1 (ko) 2005-02-02

Family

ID=23518576

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-7002332A KR100468800B1 (ko) 1999-08-27 2000-08-24 네트워크 프로세서

Country Status (8)

Country Link
US (1) US6460120B1 (ko)
EP (1) EP1208447B1 (ko)
JP (1) JP3832816B2 (ko)
KR (1) KR100468800B1 (ko)
CN (1) CN1204509C (ko)
AT (1) ATE354830T1 (ko)
DE (1) DE60033529T2 (ko)
WO (1) WO2001016779A1 (ko)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020071321A1 (en) * 2000-11-29 2002-06-13 International Business Machines Corporation System and method of maintaining high bandwidth requirement of a data pipe from low bandwidth memories
US6882642B1 (en) 1999-10-14 2005-04-19 Nokia, Inc. Method and apparatus for input rate regulation associated with a packet processing pipeline
US6934250B1 (en) 1999-10-14 2005-08-23 Nokia, Inc. Method and apparatus for an output packet organizer
US6757249B1 (en) * 1999-10-14 2004-06-29 Nokia Inc. Method and apparatus for output rate regulation and control associated with a packet pipeline
EP1234406A1 (en) * 1999-12-01 2002-08-28 BRITISH TELECOMMUNICATIONS public limited company Apparatus for simulating communication equipment
US6598088B1 (en) * 1999-12-30 2003-07-22 Nortel Networks Corporation Port switch
US7116680B1 (en) * 2000-03-02 2006-10-03 Agere Systems Inc. Processor architecture and a method of processing
US20020107903A1 (en) * 2000-11-07 2002-08-08 Richter Roger K. Methods and systems for the order serialization of information in a network processing environment
US20020105972A1 (en) * 2000-03-03 2002-08-08 Richter Roger K. Interprocess communications within a network node using switch fabric
US6704794B1 (en) 2000-03-03 2004-03-09 Nokia Intelligent Edge Routers Inc. Cell reassembly for packet based networks
US20050195743A1 (en) * 2000-04-03 2005-09-08 P-Cube Ltd. Real time charging of pre-paid accounts
US6675163B1 (en) 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US7107265B1 (en) * 2000-04-06 2006-09-12 International Business Machines Corporation Software management tree implementation for a network processor
US6947931B1 (en) * 2000-04-06 2005-09-20 International Business Machines Corporation Longest prefix match (LPM) algorithm implementation for a network processor
GB2371381B (en) * 2000-04-06 2004-09-01 Ibm Search algorithm implementation for a network processor
US6799207B1 (en) * 2000-04-10 2004-09-28 International Business Machines Corporation Method and system for downloading software managed trees in a network processing system
US6785734B1 (en) * 2000-04-10 2004-08-31 International Business Machines Corporation System and method for processing control information from a general through a data processor when a control processor of a network processor being congested
US6675223B1 (en) * 2000-04-10 2004-01-06 International Business Machines Corporation Method and apparatus for processing frames using static and dynamic classifiers
US6965922B1 (en) * 2000-04-18 2005-11-15 International Business Machines Corporation Computer system and method with internal use of networking switching
US6671725B1 (en) * 2000-04-18 2003-12-30 International Business Machines Corporation Server cluster interconnection using network processor
US7013394B1 (en) * 2000-04-18 2006-03-14 International Business Machines Corporation Data flow pattern recognition and manipulation
US6772218B1 (en) * 2000-04-18 2004-08-03 International Business Machines Corporation Server acceleration using network processor
EP1162793B1 (en) * 2000-06-09 2012-08-15 Broadcom Corporation Gigabit switch with multicast handling
US7047317B1 (en) * 2000-06-14 2006-05-16 Altera Corporation High performance network address processor system
US6721313B1 (en) * 2000-08-01 2004-04-13 International Business Machines Corporation Switch fabric architecture using integrated serdes transceivers
US7143185B1 (en) * 2000-08-29 2006-11-28 Advanced Micro Devices, Inc. Method and apparatus for accessing external memories
US6990098B1 (en) * 2000-09-11 2006-01-24 Sun Microsystems, Inc. Reliable multicast using merged acknowledgements
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US20100042565A1 (en) * 2000-09-25 2010-02-18 Crossbeam Systems, Inc. Mezzazine in-depth data analysis facility
US6792423B1 (en) * 2000-11-28 2004-09-14 International Business Machines Corporation Hybrid longest prefix match and fixed match searches
AU2001219103A1 (en) * 2000-11-29 2002-06-11 Telefonaktiebolaget Lm Eriksson Publ Method and apparatus for forwarding of telecommunications traffic
US20020120769A1 (en) * 2000-12-21 2002-08-29 Ammitzboell Benny Loenstrup Multicast traffic control protocol pruning in a layer 2 switch
US6987760B2 (en) 2001-03-05 2006-01-17 International Business Machines Corporation High speed network processor
US6813620B2 (en) * 2001-03-07 2004-11-02 Broadcom Corporation Binary search engine and method
US7085266B2 (en) 2001-03-21 2006-08-01 International Business Machines Corporation Apparatus, method and limited set of messages to transmit data between components of a network processor
US7149212B2 (en) 2001-03-21 2006-12-12 International Business Machines Corporation Apparatus, method and limited set of messages to transmit data between scheduler and a network processor
US6940854B1 (en) * 2001-03-23 2005-09-06 Advanced Micro Devices, Inc. Systems and methods for determining priority based on previous priority determinations
US6987775B1 (en) 2001-08-15 2006-01-17 Internet Machines Corp. Variable size First In First Out (FIFO) memory with head and tail caching
US6934264B2 (en) * 2001-08-30 2005-08-23 Qualcomm, Incorporated Method and apparatus for acknowledging a reception of a data packet in a CDMA communication system
US7362751B2 (en) 2001-10-03 2008-04-22 Topside Research, Llc Variable length switch fabric
US7426572B1 (en) * 2001-10-31 2008-09-16 Juniper Networks, Inc. Network router using embedded and external memory based on packet destination
US7203203B2 (en) * 2001-12-05 2007-04-10 Internet Machines Corp. Message ring in a switching network
US7042886B2 (en) * 2001-12-06 2006-05-09 P-Cube Ltd. Apparatus, method, and computer program for wire-speed classification and pre-processing of data packets in an ATM network
TW550508B (en) * 2001-12-21 2003-09-01 Via Tech Inc Configuration method for auto-negotiation mode and the associated devices
US6967951B2 (en) 2002-01-11 2005-11-22 Internet Machines Corp. System for reordering sequenced based packets in a switching network
US7680043B2 (en) * 2002-03-20 2010-03-16 International Business Machines Corporation Network processor having fast flow queue disable process
US7254632B2 (en) * 2002-04-26 2007-08-07 P-Cube Ltd. Apparatus and method for pattern matching in text based protocol
US20030214949A1 (en) * 2002-05-16 2003-11-20 Nadim Shaikli System for reordering sequenced based packets in a switching network
US8015303B2 (en) * 2002-08-02 2011-09-06 Astute Networks Inc. High data rate stateful protocol processing
US7814218B1 (en) 2002-10-17 2010-10-12 Astute Networks, Inc. Multi-protocol and multi-format stateful processing
US7596621B1 (en) * 2002-10-17 2009-09-29 Astute Networks, Inc. System and method for managing shared state using multiple programmed processors
US8151278B1 (en) 2002-10-17 2012-04-03 Astute Networks, Inc. System and method for timer management in a stateful protocol processing system
US20040098509A1 (en) * 2002-11-14 2004-05-20 Vic Alfano System for reordering sequenced based packet segments in a switching network
US7596634B2 (en) * 2002-12-12 2009-09-29 Millind Mittal Networked application request servicing offloaded from host
US7114041B2 (en) * 2002-12-20 2006-09-26 Lsi Logic Corporation AMBA modular memory controller
US7680769B2 (en) * 2003-01-14 2010-03-16 International Business Machines Corporation Method of creating a database and search keys and for searching the database
US7000052B2 (en) * 2003-02-24 2006-02-14 Cisco Technology, Inc. System and method for configuring and deploying input/output cards in a communications environment
US7990987B2 (en) * 2003-02-25 2011-08-02 Topside Research, Llc Network processor having bypass capability
US8190858B2 (en) * 2003-02-25 2012-05-29 Topside Research, Llc Interface device for interfacing a main processor to processing engines and classifier engines, and methods for configuring and operating interface devices
US7278162B2 (en) * 2003-04-01 2007-10-02 International Business Machines Corporation Use of a programmable network processor to observe a flow of packets
US7398322B1 (en) * 2003-05-20 2008-07-08 Sun Microsystems, Inc. System using routing bridges to transparently interconnect multiple network links to form a single virtual network link
US8843604B2 (en) * 2003-06-19 2014-09-23 International Business Machines Corporation Method for interlocking a server to a server system and a computer system utilizing the same
US7480720B2 (en) * 2003-06-25 2009-01-20 International Business Machines Corporation Method and system for load balancing switch modules in a server system and a computer system utilizing the same
US6954387B2 (en) * 2003-07-15 2005-10-11 International Business Machines Corporation Dynamic random access memory with smart refresh scheduler
US7464181B2 (en) * 2003-09-11 2008-12-09 International Business Machines Corporation Method for caching lookups based upon TCP traffic flow characteristics
US7454552B2 (en) * 2003-11-18 2008-11-18 Topside Research, Llc Switch with transparent and non-transparent ports
US7421532B2 (en) * 2003-11-18 2008-09-02 Topside Research, Llc Switching with transparent and non-transparent ports
US7539190B2 (en) * 2004-01-05 2009-05-26 Topside Research, Llc Multicasting in a shared address space
US7426602B2 (en) * 2004-01-08 2008-09-16 Topside Research, Llc Switch for bus optimization
US7487542B2 (en) * 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
US7457241B2 (en) * 2004-02-05 2008-11-25 International Business Machines Corporation Structure for scheduler pipeline design for hierarchical link sharing
US7564976B2 (en) 2004-03-02 2009-07-21 International Business Machines Corporation System and method for performing security operations on network data
US8468337B2 (en) * 2004-03-02 2013-06-18 International Business Machines Corporation Secure data transfer over a network
US7586851B2 (en) * 2004-04-26 2009-09-08 Cisco Technology, Inc. Programmable packet parsing processor
US7599361B2 (en) * 2004-07-02 2009-10-06 P-Cube Ltd. Wire-speed packet management in a multi-pipeline network processor
US7478426B2 (en) * 2004-07-20 2009-01-13 International Busines Machines Corporation Multi-field classification dynamic rule updates
US7653619B1 (en) 2004-07-23 2010-01-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height
US7747599B1 (en) 2004-07-23 2010-06-29 Netlogic Microsystems, Inc. Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations
US7725450B1 (en) 2004-07-23 2010-05-25 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations
US7603346B1 (en) 2004-07-23 2009-10-13 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein
US8886677B1 (en) 2004-07-23 2014-11-11 Netlogic Microsystems, Inc. Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length
US7769875B1 (en) * 2004-08-03 2010-08-03 Juniper Networks, Inc. Managing a network flow using application classification information and active signaling relay
US8055787B2 (en) * 2004-09-10 2011-11-08 Invensys Systems, Inc. System and method for managing industrial process control data streams over network links
US7376809B2 (en) * 2005-03-09 2008-05-20 International Business Machines Corporation Systems and methods for multi-frame control blocks
US7466715B2 (en) * 2005-03-28 2008-12-16 International Business Machines Corporation Flexible control block format for frame description and management
US7903687B2 (en) * 2005-04-01 2011-03-08 International Business Machines Corporation Method for scheduling, writing, and reading data inside the partitioned buffer of a switch, router or packet processing device
US7694287B2 (en) * 2005-06-29 2010-04-06 Visa U.S.A. Schema-based dynamic parse/build engine for parsing multi-format messages
US7774402B2 (en) * 2005-06-29 2010-08-10 Visa U.S.A. Adaptive gateway for switching transactions and data on unreliable networks using context-based rules
US7698498B2 (en) * 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
JP2007265019A (ja) * 2006-03-28 2007-10-11 Sony Computer Entertainment Inc 演算処理装置
TW200813724A (en) * 2006-07-28 2008-03-16 Samsung Electronics Co Ltd Multipath accessible semiconductor memory device with host interface between processors
US7697518B1 (en) 2006-09-15 2010-04-13 Netlogic Microsystems, Inc. Integrated search engine devices and methods of updating same using node splitting and merging operations
US8086641B1 (en) 2006-11-27 2011-12-27 Netlogic Microsystems, Inc. Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
US7987205B1 (en) 2006-11-27 2011-07-26 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations
US7953721B1 (en) 2006-11-27 2011-05-31 Netlogic Microsystems, Inc. Integrated search engine devices that support database key dumping and methods of operating same
US7831626B1 (en) 2006-11-27 2010-11-09 Netlogic Microsystems, Inc. Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node
US9106606B1 (en) 2007-02-05 2015-08-11 F5 Networks, Inc. Method, intermediate device and computer program code for maintaining persistency
US8046527B2 (en) * 2007-02-22 2011-10-25 Mosaid Technologies Incorporated Apparatus and method for using a page buffer of a memory device as a temporary cache
US7996520B2 (en) * 2007-09-19 2011-08-09 Cisco Technology, Inc. Behavioral classification of communication sessions using active session initiation
US7886176B1 (en) 2007-09-24 2011-02-08 Integrated Device Technology, Inc. DDR memory system for measuring a clock signal by identifying a delay value corresponding to a changed logic state during clock signal transitions
US8028124B2 (en) * 2007-12-20 2011-09-27 International Business Machines Corporation Fast processing memory array
US7716204B1 (en) 2007-12-21 2010-05-11 Netlogic Microsystems, Inc. Handle allocation managers and methods for integated circuit search engine devices
US7801877B1 (en) 2008-04-14 2010-09-21 Netlogic Microsystems, Inc. Handle memory access managers and methods for integrated circuit search engine devices
KR20100026509A (ko) * 2008-08-29 2010-03-10 삼성전자주식회사 복수의 데이터 플로우를 전송하는 반도체 장치
US9246826B2 (en) 2009-11-11 2016-01-26 Synopsys, Inc. Integrated circuit arrangement for buffering service requests
SG186910A1 (en) 2010-07-09 2013-02-28 Visa Int Service Ass Gateway abstraction layer
US8850137B2 (en) 2010-10-11 2014-09-30 Cisco Technology, Inc. Memory subsystem for counter-based and other applications
US9465662B2 (en) * 2011-10-17 2016-10-11 Cavium, Inc. Processor with efficient work queuing
US9324397B1 (en) * 2015-01-16 2016-04-26 Qualcomm Incorporated Common die for supporting different external memory types with minimal packaging complexity
EP3251021B1 (en) * 2015-01-30 2023-07-19 Hewlett Packard Enterprise Development LP Memory network to prioritize processing of a memory access request
CN106878440B (zh) * 2017-02-27 2019-08-06 多林科技(武汉)有限公司 正向编址和反向重编址互联通信方法、设备和系统
CN107040523B (zh) * 2017-03-21 2020-09-11 百富计算机技术(深圳)有限公司 交易数据传输方法、装置和电子设备
CN110830408B (zh) * 2019-11-13 2022-02-22 天津德力仪器设备有限公司 一种应用于embms系统中快速捕获cas的方法
US20240037550A1 (en) * 2022-07-29 2024-02-01 Ncr Corporation Information encoding and transmission techniques

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4803617A (en) * 1986-02-10 1989-02-07 Eastman Kodak Company Multi-processor using shared buses
US4933846A (en) 1987-04-24 1990-06-12 Network Systems Corporation Network communications adapter with dual interleaved memory banks servicing multiple processors
US4969088A (en) 1988-04-26 1990-11-06 International Business Machines Corporation Hardware mechanism for automatically detecting hot-spot references and diverting same from memory traffic in a multiprocessor computer system
US5163149A (en) 1988-11-02 1992-11-10 International Business Machines Corporation Combining switch for reducing accesses to memory and for synchronizing parallel processes
EP0429733B1 (en) 1989-11-17 1999-04-28 Texas Instruments Incorporated Multiprocessor with crossbar between processors and memories
GB9206126D0 (en) * 1992-03-20 1992-05-06 Maxys Circuit Technology Limit Parallel vector processor architecture
US5761455A (en) * 1995-02-06 1998-06-02 Cpu Technology, Inc. Dynamic bus reconfiguration logic
US5802278A (en) 1995-05-10 1998-09-01 3Com Corporation Bridge/router architecture for high performance scalable networking
JP3365705B2 (ja) 1995-05-24 2003-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散型データ処理システム
US5982459A (en) * 1995-05-31 1999-11-09 8×8, Inc. Integrated multimedia communications processor and codec
US5664116A (en) 1995-07-07 1997-09-02 Sun Microsystems, Inc. Buffering of data for transmission in a computer communication system interface
US5796944A (en) * 1995-07-12 1998-08-18 3Com Corporation Apparatus and method for processing data frames in an internetworking device
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5875470A (en) * 1995-09-28 1999-02-23 International Business Machines Corporation Multi-port multiple-simultaneous-access DRAM chip

Also Published As

Publication number Publication date
EP1208447A4 (en) 2004-10-20
CN1204509C (zh) 2005-06-01
US20020099855A1 (en) 2002-07-25
EP1208447A1 (en) 2002-05-29
ATE354830T1 (de) 2007-03-15
CN1369074A (zh) 2002-09-11
JP3832816B2 (ja) 2006-10-11
WO2001016779A1 (en) 2001-03-08
DE60033529T2 (de) 2007-11-15
US6460120B1 (en) 2002-10-01
KR20020024332A (ko) 2002-03-29
DE60033529D1 (de) 2007-04-05
JP2003508851A (ja) 2003-03-04
EP1208447B1 (en) 2007-02-21

Similar Documents

Publication Publication Date Title
KR100468800B1 (ko) 네트워크 프로세서
KR100506323B1 (ko) 네트워크 프로세서를 사용하는 네트워크 스위치 및 그의방법
KR100466083B1 (ko) 인터페이스 디바이스를 포함하는 장치 및 데이터 플로우 핸들링 방법
KR100481258B1 (ko) 네트워크 프로세서 프로세싱 콤플렉스 및 방법
KR100498824B1 (ko) Vlsi 네트워크 프로세서 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20091203

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee