KR100986006B1 - 마이크로프로세서 서브시스템 - Google Patents

마이크로프로세서 서브시스템 Download PDF

Info

Publication number
KR100986006B1
KR100986006B1 KR1020067001734A KR20067001734A KR100986006B1 KR 100986006 B1 KR100986006 B1 KR 100986006B1 KR 1020067001734 A KR1020067001734 A KR 1020067001734A KR 20067001734 A KR20067001734 A KR 20067001734A KR 100986006 B1 KR100986006 B1 KR 100986006B1
Authority
KR
South Korea
Prior art keywords
delete delete
processor
soc
protocol
bus
Prior art date
Application number
KR1020067001734A
Other languages
English (en)
Other versions
KR20060110858A (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
Priority claimed from US10/604,491 external-priority patent/US7353362B2/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20060110858A publication Critical patent/KR20060110858A/ko
Application granted granted Critical
Publication of KR100986006B1 publication Critical patent/KR100986006B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7828Architectures of general purpose stored program computers comprising a single central processing unit without memory
    • G06F15/7832Architectures of general purpose stored program computers comprising a single central processing unit without memory on one IC chip (single chip microprocessors)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/602Multilayer or multiprotocol switching, e.g. IP switching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Bus Control (AREA)
  • Communication Control (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

시스템-온-칩(SoC) 컴포넌트는 복수의 다중 프로세서를 포함한 단일의 독립 멀티프로세서 서브시스템 코어를 포함하는데, 각각의 다중 프로세서는 프로세서 클러스터를 형성하는 로컬 메모리와 그 클러스터 내의 각 프로세서를 접속시키는 FC 스위치를 포함한다. SoC 코어는 DSP, 코프로세서, 하이브리드 ASIC 또는 기타 네트워크 장치로서 구성될 경우 SoC 디바이스들을 위하여 멀티-스레딩 동작 프로세싱을 수행할 수 있다. SoC 코어는 제1 프로토콜 타입에 따라 생성된 패킷들을 수신하고 프로토콜 변환을 수행하도록 상기 패킷들을 프로세싱하여 그 출력으로서 제2 프로토콜 타입의 변환된 패킷들을 생성할 수 있는 단일 칩 프로토콜 컨버터 집적 회로(IC)로서 구성되며, 그러한 프로토콜 변환 프로세스는 하나의 코어 내에서 전적으로 수행된다. 프로토콜 컨버터 칩은 시스템-온-칩 구현의 매크로 코어로서 구현되고, 프로토콜 변환 프로세스는 호스트 시스템의 프로세싱 리소스들을 필요로 하지 않으면서 SoC 프로토콜 변환 매크로 코어 내에 포함된다.
Figure R1020067001734
시스템-온-칩, 집적 회로, 프로토콜 변환, 멀티프로세서

Description

마이크로프로세서 서브시스템{MICROPROCESSOR SUBSYSTEM}
본 발명은 멀티프로세서 장치에 관한 것이며, 구체적으로는 복잡한 시스템-온-칩(System-On-Chip; SoC) 설계를, SoC 설계를 위한 컴포넌트로서 독립(self-contained) 프로세서 서브시스템을 제공함으로써, 단순화하는 시스템 및 방법에 관한 것이다. 본 발명은 또한 네트워크 프로세서 장치 및 저장 영역 네트워크에 관한 것이며, 구체적으로는 통상적 SoC, DSP, FPGA 또는 이와 비슷한 집적 회로 서브-시스템에 있어서, 단일 IC 칩 내에 또는 서브-프로세서 코어 컴포넌트로서 구현된 프로토콜 변환용 아키텍처를 제공하여 복수의 네트워크 프로토콜 간에 걸친 시스템 및 방법에 관한 것이다.
SoC를 조립하는 현재의 최신 기술은 설계자로 하여금 a) 마이크로프로세서, 메모리, 기본 I/O 매크로(예컨대, 프레이머(framer))와 같은 기본 컴포넌트들을 모으고; b) 상이한 장치들 간의 버스 경쟁을 모델링하고, 적절한 버스 구조를 선택하며; c) SoC 하드웨어를 설계하는 동안 모든 컴포넌트들을 통합하고; d) 커스텀 소프트웨어를 사용하여 모든 컴포넌트를 통합할 것을 요구한다.
그러나, 최신 SoC 설계 방법론에 있어서는, 노동 집약적인 점, 에러 발생이 쉽다는 점, 특정 애플리케이션 도메인에 친숙한 고도로 숙련된 설계자가 필요하다 는 점, 공용 시스템 버스 상에서 버스 모델링 및/또는 경쟁을 위한 높은 모델링 오버헤드가 요구된다는 점, (TCP/IP, 인피니밴드(Infiniband), FC(Fibre Channel), iSCSI 및 기타 다른 표준화 프로토콜들과 같은) 기본 서비스들을 제공하기 위한 하드웨어 및 소프트웨어 통합이 요구된다는 점 등과 같은 (이에 제한되지 않는다) 고유한 문제점들이 존재한다. 성공적인 SoC 통합 설계 접근법의 예가 Motorola, Inc.로부터 이용 가능한 MPC8560 통합 통신 프로세서(Integrated Communications Processor)에 구현되어 있다.
하나의 카드 또는 보드 상에 다수의 서브 시스템들이 통합되는 SoC 설계에 대한 기타 다른 접근법들은, 시스템 비용, 실패 가능성 증가 및 높은 상호 접속 다층 보드(high-interconnection multi-layer boards) 비용을 유발하는 컴포넌트 수로 인한 문제를 나타낸다.
SoC 프로세서 및 컴포넌트 설계의 태양들을 기술한 관련 참조 문헌에는 다음이 포함된다.
미국 특허 번호 6,331,977은 칩 내부의 여러 기능적 I/O들과 다수의 외부 접속 핀들 사이에 크로스바 스위치를 포함하는 SoC를 기술하는데, 핀의 수는 내부 I/O의 수보다 적다.
미국 특허 번호 6,262,594는 SoC의 패드 집합의 구성 가능한 사용을 위한 크로스바 스위치를 구현하는 장치 및 방법을 기술한다.
미국 특허 번호 6,038,630은 다수의 데이터 버스들을 통해 외부 구조들에 액세스하는 다수의 기능적 유닛들(functional units)을 구비한 집적 시스템에 대해, 공유 액세스 제어 장치(shared access control device)를 제공하기 위한 크로스바 스위치를 구현하는 장치 및 방법을 기술한다.
미국 특허 출원 번호 US2002/0184419는 공용 버스 시스템을 사용하는 SoC를 위하여 다양한 컴포넌트들의 사용을 가능하게 하는 ASIC에 대해 기술하고, 공용 버스와의 호환성을 달성하기 위하여 다양한 속도 및 데이터 폭(data width)을 갖춘 기능적 유닛을 위한 랩퍼(wrapper)에 대해 기술한다.
미국 특허 출원 번호 US2002/0176402는 SoC 상의 기능적 유닛들을 링크시키기 위한 8각 상호 접속 네트워크(octagonal interconnection network)를 기술한다. 상호 접속 네트워크 상의 기능적 유닛들은 환형으로 구성되고, 중간 컴포넌트들(halfway components)을 연결시키는 여러 크로싱 데이터 링크들(crossing data links)을 사용한다.
미국 특허 출원 번호 US2001/0042147은 SoC 상호 접속을 위한 시스템 리소스 라우터를 기술하는데, 이는 각각 데이터 캐시(D-캐시) 및 명령어(I-캐시)와의 접속을 갖춘 두 개의 채널 소켓을 구비한다. 또한, 상호 접속을 제공하기 위하여, 외부 데이터 전송 개시자(external data transfer initiators), 두 개의 내부 M-채널 버스들, 및 M-채널 컨트롤러가 포함된다.
미국 특허 출원 번호 US2002/0172197은 칩에 포함된 크로스바 스위치를 통해 점 대 점(point to point) 방식으로 다수의 전송 및 수신 장치들을 접속시키는 통신 시스템을 기술한다.
미국 특허 출원 번호 US2001/0047465는 전송들을 개별 전송 작업들로 분할함 으로써 전체 게이트를 최소화하고, 각각의 전송 작업에 대한 계산 복잡도 및 회로 당 MIPS의 수에 기초한 계산 복잡도를 판단하기 위하여, 통신 시스템(통상적으로 SoC 또는 ASIC)을 위한 확장 가능 아키텍처를 제공하는, 발명의 여러 변형물을 기술한다.
2003년 9월 26일 내지 27일, 뉴욕, 로체스터의 "Proceedings of ASIC2003" 회의에서의, A. Brinkmann, J.C. Niemann, I. Hehemann, D. Langen, M. Porrmann 및 U. Ruckert에 의한 "차세대 SoC를 위한 온-칩 상호 접속(On-Chip Interconnects for Next Generation System-on-Chips)"이라는 문서를 참조하면, 패킷 네트워크 통신을 가능하게 하기 위하여 프로세서 셀들을 접속시키기 위해 활성 스위치 박스를 이용하는 SoC 아키텍처에 관해 기술되어 있다. 이 문헌은 멀티스레딩 기능을 갖는 프로세서 코어에 대해 언급 또는 기술하지는 않는다.
2001년 9월 4일 내지 6일, 폴란드, 바르샤바의 "Proceedings of Euromicro Symposium on Digital System Design(DSS'01)" 회의에서의, Kyeong Keol Ryu, Eung Shin 및 Vincent J. Mooney에 의한 "다섯 개의 상이한 멀티프로세서 SoC 버스 아키텍처들의 비교(A Comparision of Five Different Multiprocessor SoC Bus Architectures)"라는 문서를 참조하면, GBIA(Global Bus I Architecture), GBIIA(Global Bus II Architecture), BFBA(Bi-FIFO Bus Architecture), CSBA(Crossbar Switch Bus Architecture) 및 CCBA(CoreConnect Bus Architecture)를 포함하는 멀티프로세서 SoC 버스 아키텍처에 관해 기술되어 있다.
종래 기술 구성의 어느 것도, 프로세서 성능 및 추가적인 SoC, ASIC, NP 또 는 DSP 통합을 개선하기 위하여 멀티스레드 구성에 있어서 각각 SRAM 또는 eDRAM를 로컬로 접속시키는 다수의 서브-프로세서들(스레드 군들)을 포함한 프로세서 코어를 제시하지는 않는다.
따라서, 컴포넌트로서 멀티프로세서 서브시스템을 구비하고 이에 더하여 독립적인 SoC 컴포넌트로서 구현을 위해 미리 정의된 기능을 갖춘 독립(self-contained) 멀티프로세서 서브시스템을 구비한, 더 나아가 멀티스레딩 기능을 제공하는 SoC 집적 회로를 제공하는 것이 매우 바람직할 것이다.
인터넷의 양적 팽창과 함께 시장이 SAN(Storage Area Network) 및 NAS(Network Attached Storage) 시스템으로 이동함에 따라, 서버 및 저장 장치 설계에 대한 새로운 요구가 나타나게 되었다. 병렬 SCSI 접속을 통하여 부착된 저장 장치는 FC(Fibre Channel) SAN 및 그 밖의 새로운 네트워킹 아키텍처, 예컨대 iSCSI 및 FC-IP(Fibre Channel over IP)에 의해 대체되고 있다. iSCSI는 통상적으로 기가비트 이더넷 주위에 구축되고, TCP/IP 네트워크 상에서 블록 데이터를 전송하는 것과 관련되지만, FC-IP는 IP 네트워크 상의 SAN 설비들 사이에서 데이터를 터널링함으로써 FC 정보를 전송하는 것을 가능하게 하는 IP(Internet Protocol) 기반의 저장 장치 네트워킹 기술이다.
범용 CPU는 네트워크 프로토콜 변환에 필요한 계산 요구에 부응할 수 없거나, 유닛 비용, 공간 및 전력의 관점에서 지나치게 비싸다. 이는 호스트 프로세서로부터 네트워킹 및 프로토콜 처리 기능의 상당수를 HBA(Host-Bus-Adapter) 또는 NIC(Network Interface Controller)로 내려보내는 결과를 낳았다. 처음에는, 대부 분의 HBA 및 NIC가 배선 로직을 이용하는 ASIC으로 구현되었다. 그러나 복잡한 네트워크 프로토콜을 구현해 달라는 요구가 증가함에 따라, TCP/IP 또는 iSCSI와 같은 프로그램 가능한 솔루션이 이들이 제공하는 다수의 장점으로 인해 매력적으로 다가오게 되었다. 즉, 이들은 서로 다른 변화하는 프로토콜을 수용할 수 있고, 프로그램 변경을 통해 쉽게 업그레이드가 가능하며, 시장에 더 빠른 속도를 제공할 수 있다.
기존의 SAN은 종종 매우 먼 거리만큼 물리적으로 떨어져 있으며, 복수의 네트워크 아키텍처를 종종 이용한다. 기존의 SAN을 통합하고 기존의 WAN 및 LAN 인프라스트럭처를 이용하기 위해서는 데이터 통신 및 원격 통신 분야에 있어서 네트워크 프로토콜 변환이 필요하다. 프로토콜 변환은 시스템 내의 모든 다양한 부분들의 연속적 통합 및 동작을 가능하게 한다.
시스템 레벨의 프로토콜 컨버터 제품은 멀티프로토콜 FC 스위치(fabric) 라우팅 서비스를 위한 것으로서 Brocade Communications Systems에 의해 발표된 바 있으며([http://biz.yahoo.com/prnews/031028/sftu100_1.html], 이는 FC-투-FC, iSCSI-투-FC 브리징 및 FC에서 FC-IP로의 변환을 제공할 계획이다.
기존의 프로토콜 컨버터는 복수의 칩들을 카드에 통합시켜 원하는 로직 기능을 얻거나, 보다 일반적으로는 HBA를 기존의 호스트 시스템에 삽입하거나, 또는 메인 호스트 I/O 카드 상의 도터(daughter) 카드로서 동작하는데, 이는 유닛 비용, 공간 및 전력의 면에서 부피가 크고 보다 비싼 제품이 되는 결과를 낳는다. 또한, 기존의 프로토콜 컨버터들은 프로그램 가능하지 않거나 매우 제한된 프로그램 가능 성을 갖춘 것으로서, 상이하거나 새로운 프로토콜들을 수용하도록 업그레이드하는 것이 쉽지 않다. 또한, 다양한 물리 계층 액세스 모듈들 또는 칩들이 존재하고, 이들의 구현물 및 회로 기술이 종종 특정한 물리 계층 프로토콜에 대하여 최적화되므로, 이에 따라 새로운 물리 계층 프로토콜이 포트에서 필요하게 되는 경우 전체 HBA 카드 또는 여러 컴포넌트들을 교체할 필요가 생긴다. 동일한 물리 I/O 카드 내의 변환은 통상적으로 이루어지지 않으며, 단일 칩 솔루션 내에서 또는 SoC 반도체 장치 내의 내장 코어로 이루어지지 않는다.
종래 기술에 따른 SoC 설계(20)가 도 1a에 도시되어 있다. 이는 PPC440(Power PC)(25), 로컬 프로세서 버스(PLB)(21), 온칩 주변 버스(OPB)(24) 및 SRAM(15), DDR 컨트롤러(18), PCI-X 브리지(22), DMA(26) 및 DMA 컨트롤러(28), 이더넷 LAN 시스템을 위한 데이터 링크 계층을 제공하는데 사용되는 이더넷 MAC(Medium Access Control) 프로토콜 장치(50), 프로세서 코어 타이머(33) 및 인터럽트 컨트롤러(35), OPB 버스(24) 및 PLB(21)을 인터페이싱하는 OPB 브리지(29)와 같은 다수의 컴포넌트들을 포함한다. 도 1a에 도시된 종래 기술의 구현예에서, IBM의 내장 PowerPC 440 프로세서 코어 및 CoreConnect 로컬 버스가 이용되었으나, 예컨대 ARM(http://www.arm.com/products/?OpenDocument 참조)이나 MIPS(http://www.ce.chalmers.se/~thomasl/inlE/mips32_4Kp_brief.pdf의 "MIPS32 4KP Embedded MIPS Processor Core" 참조) 등과 같은 다른 내장 프로세서 코어들을 이용한 유사한 구성을 찾아볼 수 있다. 도 1a에 도시된 바처럼, 온칩 주변 버스(24)와 인터페이싱하도록 제공되는 다른 장치들은 RAM/ROM 주변 컨트롤러(45a), 외 부 버스 마스터(45b), UART 장치(45c), 인터-IC 버스(I2C) 인터페이스(45d), 범용 I/O 인터페이스(45e) 및 게이트웨이 인터페이스(45f) 중 하나 이상을 포함한다.
단일 내장 프로세서에 기초한 방법은 일부 애플리케이션의 경우 비용이 절감되는 통합 솔루션을 제공할 수 있으나, 보다 요구가 많은 애플리케이션에서 필요로 하는 계산 능력과, 예컨대 2.5Gbps FC에서 10Gbps FC로의 장래의 프로토콜 속도 증가나 프로토콜 변환에 대한 유연성을 제공하지 못할 수 있다.
최근 몇 년 동안, 도 1a의 SoC의 계산 능력은 다수의 네트워킹 애플리케이션에 있어서 도 1b에 도시된 공통 버스(PLB)에 부착되어 프로세서 코어(25)와 병렬로 동작하는 특수-목적 프로세서 코어들(액셀러레이터들)의 추가를 통해 향상되어 왔다. 이러한 특수 목적 프로세서 코어들(39a, 39b 등)의 추가는, 통상적으로 일반적인 범용 프로세서의 기능(예컨대 가상 어드레싱을 지원하기 위한 메모리 관리 유닛 등) 중 다수가 제외되므로, 실리콘 영역에서 작은 영역을 차지한다. 이러한 방식의 예는 IBM의 PowerNP (예컨대 "IBM Power Network processor architecture", Proceedings of Hot Chips 12, Palo Alto, CA, USA, August 2000, IEEE Computer Society by M. Heddes와 같은 문헌 참조) 및 NEC의 TCP/IP 오프로드 엔진(예컨대 http://www.tensilica.com/html/pr_2003_05_12.html의 "NEC's New TCP/IP Offload Engine Powered by 10 Tensilica Xtensa Processor Cores" 참조)이 있다. 비록 이들 시스템이 프로그램 가능하여 하드와이어 액셀러레이터들에 비하여 보다 유연하지만, 이들은 a) SoC 버스{예컨대 PLB(21)}가 명령어는 물론 프로세서 액셀러레이터에 대한 데이터 스트림도 지원해야 하므로 버스 상에 부가적인 트래픽을 유발하 게 되어 더욱 많은 대역폭 경합을 일으키고 시스템 성능을 제한하게 되며, b) SoC 버스가 종종 멀티프로세서 성능에 최적화되지 않고 표준화된 컴포넌트들에 대한 호환성 및 SoC 시스템의 접속 프로토콜에 대하여 최적화되며, c) 프로세서 액셀러레이터(39)가 종종 매우 제한된 명령어 집합을 구현하고 어셈블러 언어를 사용하므로, 프로세서 액셀러레이터 상에서 동작하는 애플리케이션의 개발 및 유지를 매우 어렵고 비싸게 하는 것과 같은 몇몇 단점을 갖게 된다.
SoC 설계(75)의 제3 유형은 Motorola의 MPC 5554 마이크로컨트롤러 (Design News, 2003년 11월 3일자 38면 참조)와 같은 크로스바 스위치를 통해 접속되는 내장 프로세서 코어이며, 그 블록도가 도 2에 도시되어 있다. 도 2에 도시된 바처럼, Motorola의 SoC 설계는 도 1a 및 도 1b의 SoC 설계과 비교하여 볼 때 PowerPC 프로세서 코어, 메모리 및 버스 인터페이스를 포함하여 유사한 요소들을 많이 포함하고 있지만, 로컬 버스들 중 하나를 대체하기 위하여 3 x 5 크로스바 스위치(72)를 이용하고 있다. 크로스바 스위치(72)를 SoC 설계에 결합시킴으로써, 프로세서 코어 통신은 3개의 동시 동작하는 라인에 의해 보다 빠르게 이루어질 수 있으며, 이에 따라 대역폭 경합 문제에 어느 정도 대처할 수 있다. 그러나, SoC는 멀티프로세서 지원이나, 단일 SoC 칩 내에서의 프로토콜 변환과 같은 고급 기능이나, 고속 인터페이스에 대해서는 여전히 최적화되어있지 않다. 칩 내에서의 I/O 통신은 크로스바 스위치에 의해 제한되며, 외부 버스 인터페이스 및 호스트 시스템 버스와의 통신을 여전히 필요로 하므로, 성능 및 장래의 업그레이드에 대한 마이크로컨트롤러(SoC 칩)의 유연성을 제한하게 된다. 어떠한 프로토콜 변환이 여러 단계에서 칩 외부(off-chip)에서 또는 칩에서 수행될 필요가 있다. 또한, 데이터 패킷은 호스트 시스템 버스에 배치되는 명령들로부터 분리될 수 없다. 도 2의 예에서, 하나의 프로토콜, 예컨대 자동차 애플리케이션에서 통상적으로 사용되는 FlexCAN{CAN(Control Area Network) 프로토콜)} 데이터 스트림은 외부 I/O 브리지(78)를 통해 Motorola의 MPC 5554 칩으로 구현되며, DSPI(또는 "직렬 주변 인터페이스") 또는 eSCI("Enhanced Serial Communication Interface")와 같은 다른 프로토콜은 각 프로토콜 또는 I/O 특정 스트림이 I/O 브리지, 크로스바 스위치, 그리고 통상적으로 내부 칩 버스나 시스템 버스에 대한 외부 버스 인터페이스 중 하나를 통과한다.
현재, 하나의 독립적인 프로토콜이나 프로토콜 버전 레벨로부터 완전히 새로운 프로토콜이나 버전 레벨로 단일 칩 내에서 프로토콜을 변환하거나, 내부 칩 버스에 부착된 내장 코어로 프로토콜을 변환하는 수단은 존재하지 않는다.
현재의 프로토콜 변환은 앞서 언급한 바처럼 시스템 또는 복수의 칩들을 포함하는 카드 레벨에서만 이루어지며, 그 예는 앞서 언급한 도 3에 도시된 SAN 네트워크를 위한 Brocade Silkworm Fabric Application Server(예컨대, http://www.brocade.com/san/extending_valueof_SANs.jsp 참조)이다.
도 3에 개념적으로 도시된 종래 기술인 Brocade 시스템(80)에서는, FC-투-FC 라우팅(82), iSCSI-투-FC 브리징(84) 및 FC-투-FC-IP 변환(83) 기능이 제공된다. Brocade의 설계는 하나의 파이버 I/O 포트 카드가 복수의 프로토콜을 지원하고, 동일한 I/O 카드 상에서 시스템 내의 다른 포트들에서의 트래픽을 방해하지 않고도 하나의 프로토콜로부터 다른 프로토콜로 이주하는 것을 가능하게 한다는 점에서 오늘날 존재하는 기술에 대하여 개선을 이룬 것이다. 이는 패킷들, 로컬 메모리 및 프레임 버퍼들을 갖는 여러 인라인 RISC 프로세서 칩들, 소프트웨어 프리-프로세서들 및 프로세서 카드 내의 변환 엔진들의 처리 기능에 있어서 데이터 및 제어 프레임을 분할함으로써 이루어진다. 이는 표준 단일 HBA 카드에 비하여 진보된 것으로서, 단일 HBA 카드 내에서 두 개의 네트워크 프로토콜을 가능하게 하며, 비용 및 공간 문제를 제거하고, 메인 시스템 버스에서의 트래픽을 방해하지 않고 프로토콜을 유연하게 변경할 수 있으며, 메인 시스템 프로세서 메모리에서의 데이터 전송 오버헤드 및 메모리 경합을 줄일 수 있다. Brocade의 방식에 있어서, 멀티프로세서는 로컬 메모리에 부착되어 완전히 파이프라인된다.
단일 HBA 카드 또는 브리지 카드와는 달리 단일 칩 내에 이러한 기능을 통합시킴으로써, 단일 칩 내에서의 진정한 프로토콜 변환을 가능하게 하고 프로토콜 컨버터 내에서 데이터 및 제어 프레임들을 처리하여 완성된 패킷을 로컬 SoC 버스 또는 시스템 버스에 전달할 수 있게 하는 것이 매우 바람직할 것이다. 이는 또한 I/O 카드의 잠재적인 감소를 가능하게 하며, 하드웨어를 절약할 수 있으며(칩 수의 감소), 낮은 대역폭 경합 및 메모리 경합을 가능하게 하며, 더 높은 프로토콜 속도를 제공하고, SoC 칩 내(또는 로컬 시스템 버스에 부착하여) 보다 많은 프로세서를 가능하게 하며, 더 높은 스루풋(throughput)을 제공할 수 있다.
본 발명의 목적은 SoC 집적 회로 내에서 멀티스레딩 동작을 수행할 수 있는 특별히 프로그래밍된 컴포넌트로서 동작하는 독립 멀티프로세서 시스템 컴포넌트를 제공하는 것이다.
본 발명의 또 다른 목적은, 호스트 시스템의 리소스를 필요로 하지 않고도 단일 칩 또는 내장 매크로 구현 내에서 프로토콜 변환 처리를 전적으로 수행하는, 단일 칩 상의, 또는 SoC 매크로로서 내장 된 프로토콜 컨버터를 제공하는 것이다.
본 발명의 일 태양에 따르면, 독립 멀티프로세서(MP) 컴포넌트는 로컬 메모리(예컨대 SRAM)를 각각 포함하는 서브 프로세서 코어들을 포함하여 SoC 설계 내의 컴포넌트로서 멀티스레딩 프로세서 코어를 가능하게 한다. 독립 멀티프로세서 컴포넌트 내에 부가적으로 크로스바 스위치(또는 유사한 유형의 스위치 설계)와 같은 로컬 상호 접속 매체가 포함되는데, 이는 SoC 집적 회로의 단일 로컬 프로세서 버스에 접속된다. SoC IC는 어드밴스드 마이크로프로세서, DSP(Digital Signal Processor), 코프로세서(coprocessor), 하이브리드 ASIC, 네트워크 프로세서(NP) 또는 그 밖의 프로세서 배열 ASIC으로 구현될 수 있다. 이러한 독립 멀티프로세서 시스템 컴포넌트를 갖는 SoC 집적 회로는 멀티스레딩 기능을 제공하고, 이에 의해 하나의 컨텍스트로부터의 프로그램 코드 및 데이터가 다른 컨텍스트들과 독립적으로 유지될 수 있게 함으로써 서브프로세서 코어(스레드 유닛)가 다른 스레드들과 독립적으로 동작할 수 있게 한다. 크로스바 스위치는 또한 잘 정의된 하드웨어 및 소프트웨어 인터페이스를 통해 칩의 나머지 부분과 통신할 수 있게 한다.
본 발명의 또 다른 태양에 있어서, SoC ASIC 설계에서의 컴포넌트로서의 독립 멀티프로세서(MP) 컴포넌트는 특정 용도를 위하여 적합한 소프트웨어를 갖는 이미 만들어진 멀티스레딩 코어로서 이용 가능하다. MP 컴포넌트는 CoreConnect-PLB 버스 또는 다른 온칩 버스나 버스 프로토콜과 같은 표준화된 ASIC 방식 버스와 로컬 상호 접속 매체를 브리징하는 PLB(Processor Local Bus) 어댑터와 같은 표준화된 인터페이스를 이용하여 다른 컴포넌트들에 접속된다.
본 발명의 멀티스레딩 동작을 제고하는 독립 멀티프로세서(MP) 컴포넌트는 프로세서 속도를 증가시킬 뿐만 아니라, 오프칩 액세스 시간을 감소시키고, 캐시 지연을 현저히 감소시키며, 명령 및 데이터 패킷의 처리를 향상시킨다. 쉽게 재구성이 가능한 소프트웨어 폴링(polling) 기술을 통해, 프로세서 코어는 다양한 통신 프로토콜들(FC, 이더넷, IPsec, ATM, IPv6 등)에 맞게 구성될 수 있다.
본 발명의 또 다른 태양에 따르면, 멀티프로세서 코어는 MP 코어가 로컬 프로세서 버스 및/또는 통상의 매체 인터페이스 MAC들(이더넷, FC, iSCSI 등)과 접속될 수 있도록 하는 폴링 소프트웨어를 포함한다. 이는 보다 효율적 데이터 처리, 재사용 가능한 코어의 설계, 프로토콜 독립적 코어의 설계, 그리고 보다 높은 SoC 성능을 위한 통상의 프로세서 버스에 부착되는 다수의 시스템 처리 코어를 가능하게 한다. SoC 마이크로프로세서 설계로서 구성되는 경우, 통상의 버스에 부착되는 멀티프로세서는 높은 속도, 낮은 지연, 현저히 향상된 캐시 성능 및/또는 오프칩 캐시 또는 메모리 오프로드의 제거(외부 저장 장치 및 요청은 제외)와 같이 성능을 향상시킬 수 있다. 프로세서 속도가 증가함에 따라(예컨대 2GHz 내지 10GHz), 본 발명은 통상의 마이크로프로세서 속도 및 오늘날의 PC와 워크스테이션 컴퓨터 설계에서 찾아볼 수 있는 메모리 캐시 병목 현상을 활용하는 가장 효율적인 방법을 제공한다.
바람직하게는, 본 발명의 SoC 설계는 IPSec VPN(Virtual Private Network) 터널링 엔진, TCP/IP 오프로드 엔진, iSCSI를 위한 네트워크 처리, MPEG 인코딩/디코딩, 음향/음성/비디오 처리와 같은 멀티미디어 처리, 암호화 엔진, 압축/해제 엔진 등과 같은 응용예(이에 한정되지 않음)로 구현될 수 있다.
본 발명에 추가적인 태양에 따르면, SOC형 설계에서의 사용을 위해 효과적 프로토콜 컨버터가 단일 반도체 칩 상에 또는 단일 칩 내장 프로토콜 컨버터 매크로서 제공되는데, 상기 칩 또는 내장 SoC 매크로 구현은 하나의 통신 프로토콜을 별개의 새로운 통신 프로토콜로 변환할 수 있고/있거나 하나의 통신 프로토콜 버전 레벨을 다른 통신 프로토콜 버전 레벨로 변환할 수 있다. 예컨대, SoC 내장 프로토콜 컨버터 매크로나 단일 칩 프로토콜 컨버터는 단일 칩이나 내장 SoC 매크로 내에서 하나의 프로토콜 버전 레벨(예컨대, FC 2Gb/s)로부터의 패킷을 다른 버전(예컨대, FC 10Gb/s)으로, 또는 하나의 프로토콜을 완전히 상이한 프로토콜(예컨대, FC로부터 이더넷이나 iSCSI 등으로)로 변환하도록 구성될 수 있다.
단일 칩으로 구현되든 내장 매크로로서 구현되든, 프로토콜 컨버터는 하나 이상의 프로세서 코어 어셈블리를 포함하고, 각 프로세서 코어 어셈블리는 프로토콜 변환 능력을 구현하기 위한 동작을 실행할 수 있는 두 개 이상의 마이크로프로세서 장치; 각 프로세서 코어 어셈블리 내에 적어도 하나의 데이터 및 명령을 저장하기 위해 상기 두 개 이상의 마이크로프로세서 장치와 연관된 로컬 저장 장치; 하나 이상의 통신 프로토콜에 따른 통신 패킷의 수신 및 전송을 가능하게 하는 하나 이상의 구성가능한 인터페이스 장치; 및 상기 두 개 이상의 마이크로프로세서 장치 및 상기 인터페이스 장치 사이의 통신을 가능하게 하는 상호 접속 수단을 포함한다. 그래서, 유리하게, 단일 칩 프로토콜 컨버터 및 내장 매크로 설계는 더 높은 프로토콜 속도로 SoC형 설계를 스케일링하는 수단을 포함하고, SoC 구현 내에 다수 프로세서를 통합하는 능력이 있다.
단일 칩이나 내장 프로토콜 컨버터 기능은 완전히 파이프라인된, 멀티-스레딩, 멀티-프로세서 칩 설계로 구현될 수 있는데, 그러한 칩 설계에서는 완성된 패킷(complete packet)을 로컬 버스로 전달하기 위한 프로토콜 변환의 모든 기능들(리사이징(resizing), 리포맷팅(reformatting), 제어(control), 분할(partitioning))을 처리하기 위해 로컬 메모리가 칩(또는 SOC 부착된 매크로) 내에 통합된다.
바람직하게, 단일 칩 프로토콜 컨버터나 내장 매크로 설계는 대부분의 프로토콜 프로세싱을 호스트 시스템 버스의 리소스를 요구하지 않고 (즉, 프로세싱이 SOC 부착 매크로에서 이루어짐) 수행하는데, 즉 임의의 프로토콜 변환 패킷은 필요시에 로컬 SoC나 시스템 버스 상에 추후 배치된다. 프로토콜 프로세싱 명령들은 전적으로 독립 설계를 위한 프로토콜 변환 칩이나 SoC 프로토콜 매크로 내에서 실행된다. 향상된 버스 성능, 시스템 대역폭, 시스템 내의 증가된 프로토콜 수 및 호스트 버스 부착 카드의 상당한 저감이나 생략이 달성될 수 있다.
단일 칩 내장 매크로로 인해, 일반적으로 프로토콜 변환 애플리케이션에 채용되던 주 시스템 도터 카드(main system daughter card)가 생략되어서 비용을 줄이고 성능을 향상시킨다.
또한, SoC 내장 프로토콜 컨버터 매크로나 단일 칩 프로토콜 컨버터 아키텍처는 하나의 기능(즉, 프로토콜 변환)으로부터 완전히 새로운 기능(TCP/IP 오프로드, 액셀러레이터(Accelerator), 방화벽 기능(Firewall function) 등)으로 용이하게 재구성할 수 있다. 그래서, 단일 칩이나 내장 프로토콜 컨버터 매크로의 동작 기능은 초기에 프로그램된 제1 동작 기능으로부터 별개이고 고유한, 완전히 새로운 동작 기능으로 변경될 수 있다. 이 동작 기능 변화는 칩 내의 프로세서 코어 어셈블리(프로세서 클러스터)의 수, 클러스터 내의 프로세서의 수, 클러스터 내의 로컬 메모리(예컨대, 명령 캐시 메모리)의 양 및 각 클러스터에 연관된 로컬 메모리(SRAM, DRAM 등)의 양을 포함하는 인자에 기반할 수 있는데, 이에 한정되는 것은 아니다.
본 발명의 또 다른 태양에 따르면, 단일 칩 프로토콜 컨버터 IC나 SOC 프로토콜 변환 매크로 코어 구현은 단일 칩 설계 내에서 멀티-스레딩, 파이프 라인, 충분한 로컬 메모리가 내장 된 멀티-프로세서 코어, 제어 로직, 컬렉트 및 워크 큐(collect and work queue), 크로스바 스위치나 기타 다른 스위칭 서브 시스템, 프로토콜 제어, 인터페이스 및 버스 브리지 I/O 기능들을 이용한다. 표준 버스 브리지 I/O 기능들을 SoC 로컬 버스로 통합함으로써, 높은 집적도, 효율성, 향상된 호스트 프로세서 성능, 대역폭 및 메모리 충돌 문제 개선, 오버헤드 저감을 위한 내장 프로토콜 컨버터 매크로가 추가적으로 실현된다. 적은 수의 명령, 단순한 프로세서 구조, 내장 메모리 및 프로세서로 깊이까지 이르지 않는 콘텍스트를 이용하여 파이프라이닝되는 멀티-스레딩 방식, 프로토콜 컨버터 칩이나 내장 매크로는 오리지널 프로토콜 컨버터 칩 또는 내장 SoC 매크로가 초기에 의도했던 것보다도, 훨씬 적응성이 있고 다중 프로토콜, 버전 레벨 및 심지어 별개의 네트워킹 기능으로 재구성 가능해 질 수 있다.
유리하게는, 본 발명의 SoC 내장 프로토콜 컨버터 매크로나 단일 칩 프로토콜 컨버터는 SAN 네트워크, 서버, 홈네트워크, 자동차 네트워크, 산업용 및 통신으로부터 단순한 I/O 프로토콜 데이터 스트림까지 많은 애플리케이션에 적용된다.
본 발명의 장치 및 방법에 관한 추가적 특징, 태양 및 이점들은 다음의 상세한 설명과 청구범위와 관련하여 잘 이해될 것이다.
도 1a, 도 1b 및 도 2는 복수의 프로세싱 코어, 메모리 및 인터페이스들을 포함하는 네트워크 프로세서 칩에 대한 다양한 종래의 구현을 도시한 도면.
도 3은 종래 기술에 따른, SAN 네트워크를 위한 Brocade's SilkwormTM Fabric Application Server를 도시한 블록도.
도 4a 및 도 4b는 본 발명의 일 실시예에 따른 예시적 프로세서 코어를 도시한 도면.
도 5는 본 발명의 바람직한 실시예에 따른, 기능성을 구현하는 멀티프로세서 서브시스템의 예시적 개요를 도시한 도면.
도 6은 본 발명의 또 다른 실시예에 따른, 도 4b의 SoC 서브시스템을 사용하 는 네트워크 부착 프로세서(Network Attached Processor)에 대한 또 다른 실시예를 도시한 도면.
도 7은 본 발명의 또 다른 실시예에 따른, 프로세서 기반 서브시스템을 사용하는 SoC를 도시한 도면.
도 8은 본 발명의 추가적인 실시예에 따른, SoC 멀티프로세서 서브시스템을 도시한 도면.
도 9는 도 8의 시스템에서 제공되는 브리지 컴포넌트의 가능한 구현을 도시한 도면.
도 10은 본 발명에 따른 독립 멀티프로세서 코어(150)를 구현하는 예시적 네트워크 프로세서 구성(200)를 도시한 도면.
도 11은 본 발명의 또 다른 실시예에 따른 단일 칩 프로토콜 컨버터 코어 설계의 예시적 개요를 도시한 도면.
도 12는 본 발명의 또 다른 실시예에 따른 FC-투-기가비트 이더넷 단일 칩으로 구성된 프로토콜 코어의 예시적 구현을 도시한 도면.
도 13은 본 발명의 또 다른 실시예에 따른 단일 칩 프로토콜 컨버터 내에서의 예시적 메모리 할당을 도시한 도면,
도 14는 본 발명의 또 다른 태양에 따른 SoC 설계 내의 내장 매크로로서 구성된 프로토콜 컨버터 칩을 도시한 도면.
도 15는 본 발명에 따른 도 14의 시스템에 대한 SoC 매크로-투-외부 I/O에 있어서의 SoC 프로토콜 컨버터 패킷 흐름을 도시한 도면.
도 16은 본 발명에 따라, 호스트 버스로부터 SoC 장치 외부 패킷 전달 인터페이스로의 예시적 SoC 프로토콜 컨버터 패킷 흐름을 도시한 도면.
멀티프로세서 시스템 온 칩(multiprocessor system-on-a-chip)은 다양한 컴포넌트들 - (i) 기능 유닛들(functional units); (ii) (캐시 및 메인 메모리를 포함하는) 메모리; 및 (iii) 상호 접속(interconnection) - 의 다수의 구성예들로 구성되어 있다. 설계 선택 사항들(design choices)은 컴포넌트들의 상대적 및 절대적 수, 이들의 특정한 특징들 및 서로에 대한 배치를 포함한다.
도 4b는 본 발명에 따른 멀티프로세서 시스템 온 칩 설계를 위한 컴포넌트로서 예시적 독립 프로세서 기반 서브시스템(self-contained processor-based subsystem; 90)을 도시한다. 도 4b에 도시된 예에서, 독립 프로세서 기반 서브시스템(90)은 복수의 프로세서 유닛들(85), SRAM 메모리(93)에 의해 제공되는 것과 같은 공유 메모리 및 스위치 FC(switch fabric; 95)을 구비한다. 도 4a에 도시된 바와 같이, 각각의 프로세서 유닛(85)은 복수의 개별 프로세서 코어(processor core; 87)를 구비한다. 예컨대, 프로세서 유닛(85)은 도 4a에 도시된 바와 같이 프로세싱 유닛 또는 "쿼드(Quad)"를 포함하는 4개의 프로세서 코어들(87)을 포함하며, 여기서 각각의 프로세서 코어(87)는 실행 유닛 또는 프로세서 장치를 구비하며, 예컨대 16kB의 메모리를 제공하는 SRAM(88)으로 도시된 공용 로컬(개인) 메모리와 접속된다.
일 실시예에서, 도 4b에 도시된 독립 프로세서 기반 서브시스템(90)은 본 발 명의 양수인인 IBM(International Business Machines Corporation)에 의해 개발된 멀티스레디드 아키텍처 칩 설계(multithreaded architecture chip design) - 본 명세서에서는 "사이클롭스(Cyclops)"라고 지칭되고, 캘리포니아 애너하임 2002년 2월 8일 내지 9일의 "Proceedings of Workshop on Network Processors"에서 C.J. Georgiou에 의한 "차세대 네트워킹을 위한 프로그램 가능하고 확장 가능한 플랫폼(A programmable scalable platform for next generation networking)"을 참조하여 상세히 기술됨 - 에 기초한다. 단일 사이클롭스 칩은 수 많은(통상적으로 수백 개의) 단일 스레드 실행 유닛들(simple thread execution units) - 각각의 유닛은 동시에 명령어들의 독립 스트림을 실행함 - 을 구비할 수 있다. 각각의 개별 스레드의 성능은 매우 뛰어나서 집합적 칩 성능(aggregate chip performance)은 동일한 수의 트랜지스터를 갖는 종래 설계들을 훨씬 능가한다. 사이클롭스는 메인 메모리와 프로세싱 로직이 하나의 실리콘 단편으로 조합되는(독립적인) 프로세서-인-메모리(Processor-In-Memory; PIM) 설계를 사용한다. 대형 확장 가능 시스템은, 각각의 칩에서 제공되는 통신 링크를 통해 정규화된 패턴으로 셀들을 상호 연결하여, 구성 요소로서 사이클롭스를 사용하는 셀 방식(cellular approach)으로 만들어진다.
도 4b에 도시된 바람직한 실시예에서, 8개의 프로세서 유닛들 또는 "쿼드들"(85) - 각각의 쿼드는 내부 메모리와 함께 내장 공유 메모리(SRAM; 93)에 접속되고, 또한 온 칩 크로스 바 스위치(on-chip cross bar switch) 또는 패킷 FC 스위치(packet switch fabric)일 수 있는 온 칩 FC 스위치(on-chip switch fabric; 95)에 접속됨 - 은 네트워킹 애플리케이션들을 위하여 기술된 사이클롭스 설계에 포함되어 존재한다. 그러므로, 일 실시예에서, 독립 프로세서 기반 서브시스템(90) 컴포넌트는 128kB의 로컬 RAM(88) 및 512kB의 공유 SRAM(93)까지 32개의 실행 스레드를 제공한다. 과학/공학용 애플리케이션을 위한 64bit 하이 엔드 버전(high-end version)을 포함하는 다른 설계들이 가능함을 이해하여야 한다. 이러한 설계에서, 많은 프로세싱 작업들이 여러 스레드들로 나누어져서, 동시에 수행되어 진정한 멀티스레딩 기능을 제공할 수 있다.
특히, 도 5에 도시된 바와 같이, 멀티프로세싱 방법은 프로세서 클러스터(100) - 각각은 감소된 그러나 범용의, 대략 40개의 RISC 유사 명령어들(RISC-like instructions)의 명령어 세트를 가짐 - 를 형성하는 많은 단순 코어들(125)을 포함한다. 도 5에 도시된 바와 같이, 클러스터(100)의 각 프로세서 코어(125)는 자신의 레지스터 파일(126), 산술 논리 연산 회로(arithmetic logic unit; ALU)(127) 및 명령 시퀀서(instruction sequencer; 128)를 갖는다. 기술된 실시예에서, 프로세서 코어들(125)은 단순한 4단 깊이 파이프라인(four stages deep pipeline)을 갖는 단일 이슈 아키텍처(single-issue architecture)를 갖는다. 네 개의 코어들은 자신들의 스택 및 로컬 변수들을 저장하기 위하여 로컬 SRAM(130) 및 헤더 필드들과 같은 처리되어야 할 패킷들의 일부를 공유하고, 프로세서 데이터 캐시의 어떠한 통상적인 속성(usual attribute)이 없이도, 정보 "캐시" 장치로서 효과적으로 기능할 수 있다. 기술된 실시예에서, 두 개의 4-프로세서 클러스터들(100)은 명령어 캐시(I 캐시; 131) - 명령어 캐시는 명령어 결핍(instruction starvation)을 예방 하기에 충분한 프로세서(125)를 위한 대역폭을 가지고, 캐시 정리(cash trashing) 또는 명령어 소실율(miss rate)의 증가를 야기하지 않고 프로세서의 대부분의 작동중인 세트를 수용함 - 를 공유한다. 각각의 프로세스 코어(125)는 스레드 집합을 포함하고, 멀티 스레딩 기능에서의 수행을 위하여 I-캐시(131)를 통해 접속될 수 있는 것으로 이해된다. 서브프로세서(스레드 집합들)가 더 많을수록, 전체적인 프로세서 코어는 더 빠른 프로세서 사이클 시간(processor cycle time)과 감소된 캐시 요청/지연(demand/latency)으로 인해 보다 효과적으로 동작할 것이다. 본 예시적 실시예는 32 서브 프로세서 집합을 기술하고 있지만, 다른 실시예에서는 2 내지 256 서브 프로세서 집합들을 구현할 수 있다는 점을 알아야 한다. 그러나, 본 발명은 서브 프로세서들의 수에 의해 제한되지 않고, 진정한 동시(simultaneous), 멀티 스레딩, 멀티 프로세서 설계를 제공하는 것으로 해석된다.
소규모 명령어 세트 및 특징들의 단순함으로 인해 프로세서 코어들의 크기가 작아져서, 실리콘 영역의 높은 MIPS/mm2 비율을 제공할 수 있다. 이는 다소 작은 면적의 칩 상에 많은 코어들의 배치를 가능하게 하여 스레드 수준의 병렬 처리(parallelism)를 이용할 수 있도록 한다. 그러므로, 본 발명은 플로그 앤 플레이 시스템(plug-n-play system)을 위한 다중 "코어들"을 허용하고, 더 큰 아키텍처 유연성(flexibility)을 제공하는 진정한 "시스템-온-칩" 구현이므로, 본 발명을 유익하게 적용함으로써, 낮은 카드 어셈블리 비용(card assembly cost)으로 높은 집적/보드(integration/board) 밀도가 가능해지고, 더 넓은 대역폭 애플리케이션들 및 프로세싱 코어들을 위한 강화된 확장성(scalability)을 제공할 수 있다. 그러나, 프로세서 코어는 전송 작업이나 계산 부하에 기초하여 게이트 또는 트랜지스터의 수를 감소시킬 수 있도록 확장 가능한 것이 아니고, 오히려 애플리케이션/표적 시장(application/targeted market)에 의존하여 고정된 설계를 갖는 것으로 해석된다. 더욱이, 멀티프로세서 또는 서브시스템 코어는 작업들을 분할하여 DSP 또는 ASIC 기능 블록들에 할당하지 않고, 오히려 프로그램 코드 및 데이터 패킷들은 각각이 동일한 메모리(예컨대, 데이터 캐시를 위한 16kB SRAM) 및 회로(ALU, 레지스터 파일 등)를 갖는 다수의 서브프로세서들(스레드 그룹들)에서 처리된다. 스레드 그룹들 내의 이러한 서브프로세서들은 (SoC 애플리케이션들을 위해) 전체적으로 로컬 시스템 또는 온-칩 로컬 버스에 부착된 프로세서 코어를 구비한 스레드 유닛들을 형성한다.
본 발명에서, 각각의 로컬 프로세서(차례로 다중 스레드 유닛들 또는 추가로 서브 프로세스들을 포함하는 스레드 그룹들)는 셀 모양 조직으로 배열되어, 각각의 프로세서가 대칭적인 온-칩 메모리(예컨대, 4 x 64kB로 256kB, 또는 n x 512kB 블록들로 4 또는 8MB eDRAM)의 N개의 뱅크(bank) - 각각의 뱅크는 크로스바 스위치를 통해 각각의 로컬 프로세서 그룹(스레드 그룹)으로 주소 지정 가능함(addressable) - 를 갖는다. 모든 서브 프로세서 코어들(또는 스레드 그룹들)에 대한 연속적인 주소 공간(address space)을 취급하기 위하여 SRAM 또는 eDRAM의 개별 온-칩 메모리가 제공된다. 집적된 16kB SRAM 메모리(스레드 그룹 당 한 개)는 칩 상의 모든 프로세서 스레드들에 의해 액세스 가능하다.
본 명세서에 기술된 본 발명의 실시예들에 있어서, "프로토콜"이라는 용어는 일반적으로는 표준 협회에 의하여 지정되거나 회사 내부 사유 인터페이스(company internal proprietary interface)일 수 있는 임의의 특정 입/출력(I/O) 통신 데이터의 물리층 스트림을 말하는 것이고, 예로는 FC, 기가비트 이더넷, iSCSI, IP, TCP/IP, FC-IP, ESCON, FCON, CAN, SAMBA, DSL, VoIP, MPLS, GMPLS 및 기타 등등을 포함하며 다만 이로써 제한되는 것은 아니다. 또한, 본 명세서에 기술된 본 발명의 실시예들에 있어서, 프로토콜은 FC, 이더넷, iSCSI, ESCON, FCON, IP 등의 계층형 통신 프로토콜이거나 FC-IP, IP/MPLS 등의 캡슐형 프로토콜이다. 데이터 통신 프로토콜은 일반적으로 데이터 비트들을, 비트 스트림의 페이로드 내에 실제 데이터 뿐만 아니라 프레임의 시작, 각 프레임, 소스, 목적지 등과 같은 제어 특성들과 포함하는, 바이트, 워드 또는 집합, 프레임 및 패킷 단위로 정렬한다.
도 10을 보다 자세히 관찰하면, 본 발명에 따른 멀티프로세서 SoC 설계는 FC(Fibre Channel; 201), 인피니밴드(Infiniband; 202) 및 Gb 이더넷(Gb Ethernet; 203) 프로토콜에 따른(이에 제한되지 않음) 네트워크 패킷 통신 기능들을 처리할 수 있는 SAN(Storage Area Network) 프로세서 아키텍처(150)를 포함한다. 도 5에 상세히 도시된 바와 같이, 네트워크 프로세서 SoC 설계(150)는 데이터 패킷, 접속 정보 및 프로그램들을 저장하기 위한 내장 메모리 뱅크들(160)을 포함한다. 과도하게 크기를 증가시키지 않고 많은 양의 메모리가 칩 상에 배치될 수 있으므로, 내장 메모리(SRAM 또는 DRAM)의 사용은 유용하다. 부가하여, 내장 메모리는 짧고 예측 가능한 (단일 패킷의 프로세싱을 위한 시간 예산(time budget)으로 설명될 수 있는) 액세스 시간(access time)을 갖고, 내부 상호 접속 상에서의 전체적인 트래픽 감소로 인해 리소스 충돌(resource collision)을 줄이고, 성능 저하 및 전력 소비 감소를 초래하므로, 전통적인 오프-칩 메모리(off-chip memory)에 비하여 상당한 성능 이점을 제공한다. 데이터를 저장하는 이외에도, 현재의 제어, 상태 및 라우팅 정보가 내장 메모리(160)에 유지된다. 일부 애플리케이션이 이용 가능한 온-칩 메모리를 초과하는 메모리 요구 사항을 요구할 수 있으므로, SoC 네트워크 프로세서 아키텍처는 고 대역폭(high-bandwidth) DDR 메모리 인터페이스(165)를 통해 접속된 오프-칩 DRAM(도시되지 않음)을 사용한다. 외부 DRAM은 정체 버퍼링(congestion buffering)을 제공할 뿐만 아니라, 통계(statistics) 및 기록 정보(archival information)를 저장할 수 있다.
도 5의 SoC 네트워크 프로세서(150)에서, 대부분의 네트워크 통신 프로토콜 기능들은 프로그램으로 구현된다. 그러나, 네트워크 프로토콜의 저 수준에서 시간에 매우 민감한 기능들(highly time critical functions)은 하드웨어 액셀러레이터들을 통해 구현된다. 하드웨어 액셀러레이터들은 데이터 인코딩/디코딩, 직렬화/역직렬화, 링크 관리 및 CRC와 체크섬(checksum) 계산과 같은 저 수준 프로토콜 작업을 처리한다. 이러한 작업들은 전송된 패킷들의 매 바이트에 대해 수행되고, 소프트웨어로 구현되면 많은 계산 비용이 들 것이다. 그러므로, FC(Fibre Channel) 및 기가비트 이더넷(Gigabit Ethernet)용 네트워크 인터페이스(175) 그리고 인피니밴드용 네트워크 인터페이스(185)로 구현된 하드웨어 액셀러레이터들 - 각각은 오직 작은 실리콘 영역만을 요구하고, 각각 인피니밴드 및 FC 통신 링크들(190 및 195)과 인터페이싱함 - 과 같은 이러한 기능들의 하드웨어 구현이 제공된다.
도 5에 도시된 바와 같이, SoC 네트워크 프로세서 설계(150)는, 프로세서 클러스터들(100), 공유 메모리 블록(160), 외부 DRAM 메모리 액세스를 위한 외부 메모리 인터페이스(165) 및 네트워크 프로토콜 계층 하드웨어 보조 장치들(network protocole layer hardware assist devices; 175 및 185)을 상호 접속시키는 크로스바 스위치(120)를 구비한 내부 상호 접속을 포함한다. 예시적인 실시예에서, 크로스바 스위치(120)는 64 비트 데이터 경로를 가지고, 데이터 오버플로우(data overflow)를 피하기 위해 파이프라이닝(pipelining) 및 토큰 신호화(token signaling)의 역할을 하는 여러 워드를 제공한다. 프로세서 쿼드는 크로스바(120)로의 포트를 공유하여, 예컨대 16 포트를 갖는 크로스바는 32 프로세스 시스템까지 상호 접속시키기에 충분하다. 그러나, 도 8에 관하여 이하에서 기술되는 바와 같이, 크로스바 스위치(120)는 준-크로스바(pseudo-crossbar), 버스, 스위치 또는 적절한 다른 상호 접속으로 대체될 수 있음이 추측된다.
본 명세서에서 일반적으로 언급된 바와 같이, SoC 네트워크 프로세서 아키텍처는 셀 방식이다. 즉, 이로 인해 애플리케이션 요구사항들에 따라 설계가 고객 주문형으로 된다. 예컨대, FC의 종단점(endpoint) 기능은 인피티밴드로의 iSCSI 프로토콜 변환을 갖는 더욱 복잡한 TCP/IP 종점(termination)보다 더 적은 계산 파워를 요구한다. 그러나, 본 발명에서는, 중대한 설계 변경없이 애플리케이션 요구 사항에 맞추어 프로세서 코어 또는 클러스터들(100) 및 내장 메모리 블록의 수를 용이하게 변경시킬 수 있다.
도 6은 도 5 및 도 10의 독립 멀티프로세서 서브시스템(150)을 사용하는 SoC 네트워크 부착 프로세서(200)의 제1 실시예를 도시한다. 서브시스템(150)으로서의 사용을 위한 한 가지 가능성으로 IBM으로부터 구입 가능한 사이클롭스E(CyclopsE)가 있다. 도 6의 실시예에서, 서브시스템(150)은, 예컨대 ARM AMBA(Advanced Microcontroller Bus Architecture), MIPs(Microprocessor Interface Program), 개방 표준 코어 접속(open standard CoreConnect), AHB(Advanced High-Performance Bus) 등과 같은 SoC 표준화 프로세서-로컬 버스(Processor-Local Bus; PLB)를 구비하는 프로세서 로컬 버스(210)에 공용 매크로(예컨대, PLB 접속 매크로)를 통해 접속되어, 멀티 소스 버스 아키텍처로의 진정한 플러그-앤-플레이 시스템 온 칩을 가능하게 한다.
도 6 및 10에 도시된 네트워크 부착 프로세서(200)의 실시예는, SoC 서브시스템에서 계산 기능을 제공하기 위한 PowerPC 또는 다른 유사한 프로세서(225)를 구현한다는 점을 이해해야 한다. 마찬가지로, PPC440은 SoC 완성자(integrator)에 의해 선택된 다른 PPC 코어, MIPS 코어 또는 다른 마이크로프로세서로 대체될 수 있다. 마찬가지로, 도 6에 도시된 다른 컴포넌트들은 하나 이상의 I/O 인터페이스 장치들(245)을 통해 외부 컴포넌트들과 인터페이스하기 위하여 SRAM(215), DDR 컨트롤러(218), PCI-X 브리지(222), 직접 메모리 액세스(DMA) 장치(226), DMA 컨트롤러(228), 온 칩 주변 버스(On-chip Peripheral Bus; OPB; 240)를 포함한다. 이더넷 LAN 시스템을 위한 데이터 링크 계층을 제공하기 위하여 MAC(Medium Access Control) 프로토콜 장치(250)가 부가적으로 사용된다. 특정 SoC의 설계자/완성자 에 의한 선택에 따라 프로세서 코어 타이머(233) 및 인터럽트 컨트롤러(235)가 존재할 수도 생략될 수도 있다.
도 7은 본 발명에 따른, SoC 네트워크 부착 멀티프로세싱 시스템(300)의 또 다른 실시예를 도시한다. 도 6에서와 같이, 도 7의 SoC 멀티프로세싱 시스템(300)은 프로세서(예컨대, 440 코어), 로컬 프로세서 버스(PLB; 210), 온 칩 주변 버스(OPB) 및 (SRAM, DDR 컨트롤러, PCI-X 브리지 및 DMA 컨트롤러와 같은) 다수의 컴포넌트들을 구비하는 한편, OPB 버스(240)와 인터페이스하는 OPB 브리지(229)를 포함한다. 프로세서 버스 또는 PLB(210)는 AMBA, MIPs, 코어 접속 PLB(CoreConnect PLB), AHB 등과 같은 SoC 표준화 프로세서 로컬 버스이다. 도 8과 관련하여 이하에서 보다 자세히 기술되는 프로세서 기반 서브시스템(350)은 PLB(210)에 접속된 컴포넌트들 중의 하나이다. 도 7에 도시된 요소들은 예시적이고, 제한적이지 않다. 예컨대, PPC440는 다른 PPC 코어 유사 PPC405 또는 PPC440, 또는 ARM 또는 MIPS 프로세서 코어들, 또는 SoC 완성자에 의해 선택된 다른 마이크로프로세서들로 대체되거나, 본 발명의 핵심 범위를 제한하지 않는 완전히 새로운 코어들을 포함할 수 있다. 마찬가지로, 본 명세서에 나열된 다른 컴포넌트들(또는 SoC 라이브러리의 임의의 다른 컴포넌트)은 특정 SoC의 설계자/완성자에 의한 선택에 따라 존재할 수도 생략될 수도 있다. 예컨대, 도 7에 도시된 바와 같이, OPB(240)와 인터페이스하기 위하여 제공된 장치들은, RAM/ROM 주변 컨트롤러(245a), 외부 버스 마스터(245b), UART 장치(245c), IC간 버스(Inter-IC bus; I2C) 인터페이스(245d), 범용 I/O 인터페이스(245e) 및 게이트웨이 인터페이스(245f) 중의 하나 이상을 포함할 수 있지만, 이에 제한되지 않는다. 그러므로, 가능한 다수의 칩 구성이 존재하는 것을 알 수 있다.
도 8은 본 발명의 추가적인 실시예에 따른 독립 프로세서 기반 서브시스템(350)을 도시한다. 이러한 서브시스템은 도 6 및 도 7에서 도시된 것과 같은 SoC 네트워크 부착 프로세서 시스템 내에 컴포넌트로서 통합되고, ASIC 라이브러리에서 통상적인 매크로가 될 수 있는 PLB 브리지를 통해 프로세서 버스(210)에 접속된다. 프로세서 기반 서브시스템(350)은 (도 5의 프로세서 클러스(100)와 같은) 하나 이상의 프로세서 클러스터, (데이터 및/또는 명령어들을 저장하기 위한) 하나 이상의 로컬 메모리 셀 및 (개별 버스, FC 스위치, 크로스바 스위치 또는 다른 상호 접속 수단들(120)로 구현된) 로컬 상호 접속 수단을 구비한다. 바람직한 실시예에서, 멀티프로세서 서브시스템(350)은 SoC 네트워크 프로세서 버스(210)를 통해 통신하기 위해 PLB 브리지 매크로 컴포넌트(410)를 구비하지만, 프로세서 기반 서브시스템(350)과 SoC 버스(210) 사이의 데이터 플로우를 가능하게 하기 위하여 임의의 다른 브리지 매크로가 선택될 수 있음이 예측된다. 프로세서 버스(210)는 프로세서 및 컴포넌트들을 접속시키기 위하여 SoC 어셈블리에서 사용되는 개별 버스, 스위치 또는 상호 접속 수단이다.
1) 서브시스템 트래픽이 PLB 트래픽과 분리되어, 대역폭 경쟁(bandwidth contention)을 피하게 되고; 2) 글로벌 표준화 버스(global standardized bus) 상의 서브시스템과 SoC 시스템 사이의 트래픽 만이 인터페이스 트래픽(데이터 수신 및 송신)이며; 3) SoC 시스템에서 표준화된 컴포넌트들 및 접속 프로토콜을 수용해 야 하는 요구 조건 없이 고성능 솔루션을 구현하기 위한 최적화 MP 구조를 제공하도록 서브 시스템 버스/스위치 상호 접속 구조가 설계되었다는 점에서 서브 시스템과 프로세서 버스들(210)(도 6 및 도 7)의 분리가 유익하다. 이러한 방식으로, 멀티프로세서(MP) 구조가 MP 고성능을 위해 최적화될 수 있고, SoC 라이브러리로부터의 모든 표준 기존 컴포넌트들이 사용될 수 있다는 두 가지 점으로부터 SoC 솔루션이 유용한 효과를 얻을 수 있다.
상호 접속 버스/스위치/FC 스위치(120)를 포함하는 서브시스템(350)은 특히, 기존 브리지(예컨대, PLB 대 OPB 브리지 또는 PLB 대 PCI-X)가 수행하는 방식으로, 양 통신 시스템 간의 상이한 속도, 데이터 폭, 신호 및 두 통신 시스템 간의 신호 프로토콜을 조정하는 브리징 컴포넌트(410)를 사용하여 프로세서 버스(210)에 접속된다. PLB 또는 AMBA와 같은 표준화된 프로세서 로컬 상호 접속으로의 인터페이스를 구현함으로써, 이러한 새로운 컴포넌트를 SoC 컴포넌트 라이브러리로 통합하는 것이 가능해진다. 이러한 브리지 컴포넌트(410) 구현의 가능한 한 가지 형태가 도 9에 도시되어 있다. 이러한 브리지 매크로(410)의 목적은 SoC 프로세서 버스(210)와 프로세서 기반 서브시스템 로컬 버스(120) 사이에서 제어 신호, 데이터 폭, 동작 주파수 및 주소 공간을 변환/조절하는 것이다. 바람직하게, 브리지 매크로 컴포넌트(410)는 프로세서 기반 서브시스템 모듈로 유입되거나 유출되는 데이터를 위한 데이터 버퍼링을 구현하고, 서브시스템 및 PLB를 위한 DMA 컨트롤러를 포함할 수 있다. 구성 및 상태 레지스터는 서브시스템 주소 공간에서 메모리 맵핑 레지스터들(memory mapped registers)로 구현될 수 있다. 구성 레지스터들은 프로세서 기반 서브시스템(350)에 의해 설정되고, 브리지(410)의 상태를 판독한다. 또한, 이러한 모듈은 SoC 프로세서 버스 상의 다양한 데이터 폭 간에 선택을 위한(예컨대, 64 또는 128 PLB와 동작하도록 동작 모드(operation mode)를 설정하기 위한) 설정, 그리고/또는 다양한 모드의 동작(예컨대, 라인 또는 버스트 데이터 전송)을 지원하기 위한 설정을 포함할 수 있다. SoC 주소 공간 및 서브시스템 주소 공간은 동일한 주소 공간을 공유할 수 있지만, 필수적인 것은 아니다.
특히, 도 9의 브리지 매크로(410)는 PLB 슬레이브(420a) 및 PLB 마스터(420b)로서 PLB 버스 상에서 기능한다. PLB 슬레이브로서, 브리지 매크로(410)는 프로세서 기반 서브시스템(350)으로부터 데이터를 얻기 위한 SoC 프로세서로부터의 판독 및 기록 요청을 구현한다. 프로세서 기반 서브시스템에서, 메모리 내의 데이터에 대한 판독을 요청하는 동안, 브리지는 PLB(210)로부터 판독 요청을 수신하고, 주소를 분석하며, 프로세서 기반 서브시스템 버스/FC 스위치/스위치(120)를 위한 판독 요청을 생성한다. 브리지는 프로세서 기반 서브시스템(350)으로부터의 판독 데이터를 버퍼링하고, PLB 버스(210)에 의해 지정된 폭 및 속도로 PLB(210)에 데이터를 전송한다. 프로세서 기반 서브시스템에서, 메모리 내의 데이터에 대한 기록을 요청하는 동안, 브리지는 기록 요청에 대한 데이터를 PLB(210)로부터 버퍼링하고, 프로세서 기반 서브시스템에서 메모리 뱅크를 위한 주소를 분석하며, 프로세서 기반 서브시스템 버스/FC 스위치/스위치(120)에 의해 지정된 대로 프로세서 기반 서브시스템(350) 내의 적절한 메모리 뱅크로 데이터를 전송한다.
반대로, PLB 마스터(20b)로 기능하는 경우, 브리지 매크로(410)는 프로세서 기반 서브시스템으로, 그리고 그로부터 데이터를 전송하기 위한 DMA 컨트롤러를 구현할 수 있지만, 반드시 그래야만 하는 것은 아니다. DMA 컨트롤러에 의해 프로세서 기반 서브시스템으로부터 SoC의 DDR 메모리로 데이터를 전송함에 있어서, 컨트롤러는 PLB 기록 요청을 위한 주소 및 신호를 설정하고, DDR 메모리로 데이터를 전송한다. DDR로부터 프로세서 기반 서브시스템으로 데이터를 DMA 전송하는 동안, 매크로는 PLB 판독 요청을 위한 주소 및 신호를 설정하고, 데이터를 버퍼링하며, 프로세서 기반 서브시스템 내의 메모리 뱅크로 데이터를 전송한다.
바람직한 실시예에서, 프로세서 기반 서브시스템(350)은 특정 기능 세트를 위한 레디-메이드 기능성(ready-made functionality)(전유물(personalization))을 제공하는 내장 소프트웨어를 구비한다. 가능한 사용 예로, 하나의 네트워크 프로토콜로부터의 다른 프로토콜로의 네트워크 프로토콜 변환, (TCP/IP 오프로드 엔진, IPSec VPN 터널링 엔진(tunneling engine)과 같은) 프로토콜 트래픽 종점(termination), (iSCSI, 암호화 엔진, 압축/압축 해제 엔진을 위한, 또는 MPEG 인코딩/디코딩과 같은 멀티미디어 프로세싱을 위한) 네트워크 프로세싱 또는 사운드/음성/비디오 프로세싱이 있다.
프로세서 기반 서브시스템에서의 데이터 플로우의 예로서, 도 8의 프로세서 기반 서브시스템(350)과 도 6 및/또는 도 7의 SoC 아키텍처를 사용하는 TCP/IP 오프로드 엔진의 가능한 구현예가 다음과 같이 기술된다.
● SoC 프로세서 코어(225)(예컨대, PPC440)는 데이터 프로세싱을 위한 요청을 설정하고, DDR 메모리 내의 데이터를 가리키는 포인터 및 요청을 브리지(410)를 통해 프로세서 기반 서브시스템(350)으로 송신한다. 이는 인터럽트 신호를 호출하거나, 주기적으로 폴링되는 전용 레지스터(도시되지 않음) 또는 사전 지정된 메모리 위치(pre-specified memory location)에 데이터를 기록함으로써 구현될 수 있다.
● 프로세서 기반 서브시스템(350)은 이러한 요청을 인식하고, DMA 엔진(226)(도 7)을 활성화시켜서 SoC 메모리로부터 프로세서 기반 서브시스템 내의 메모리로 데이터를 전송한다.
● 데이터는 프로세서 기반 서브시스템(350) 내의 메모리로 전송되고, 데이터의 끝(end of data)을 나타내는 신호가 발생된다.
● 프로세서 기반 서브시스템(350)은 TCP/IP 프로토콜-파티션 데이터를 일련의 패킷들로의 전환하는 등(TCP/IP protocol-partitions data to series of packets)과 같은 특정 프로토콜 작업들을 구현하고, 패킷 등에 대한 적절한 헤더를 생성하며, 이러한 데이터를 이더넷 MAC(Media Access Control) 네트워크 인터페이스 회로로 전송한다. 프로세서 기반 서브시스템(350)은 SoC 프로세서(300)로부터의 간섭없이 프로토콜에 의해 지정된 대로, 필요하다면 패킷을 재전송한다.
● 모든 데이터가 전송되면, SoC 프로세서(300)는 작업 완료에 대한 통지를 수신한다. PPC로 인터럽트를 송신하거나, SoC 프로세서에 의해 주기적으로 폴링되는 사전 정의된 위치에 인터럽트를 기록함으로써 위의 과정이 구현될 수 있다.
다음은, 하나 이상의 네트워크 프로토콜에 따라, 수신된 패킷을 라우팅하기 위한 바람직한 실시예에서의 예시 서브시스템 코드이다.
for(;;)
{
poll AC;
if(packet received)
process packet in accordance with protocol
if(packet successfully received)
transfer packet via PLB bridge
cause notification event to CoreConnect bus master
poll PLB bridge status;
if(request)
process request
if(packet should be transmitted)
transfer packet via MAC
}
프로세서 기반 서브시스템에서의 데이터 플로우는 (예컨대, 미디어 I/O(MAC) 장치 및 프로세서 로컬 버스(PLB) 사이에서) 소프트웨어 폴링을 통해 수행되지만, 이러한 접속은 프로토콜에 무관하고, 다수의 네트워크 프로토콜 유형들(이더넷, FC, IPv6, ATM, IPsec, HIPPI 등)이 동일한 접속 라인을 통해 지원될 수 있음을 이해해야 한다. 버스를 감독하기 위하여 소프트웨어 폴링 및 접속 메커니즘이 제공되고, I/O 미디어 접속은 추가적인 이점을 제공하며 본 발명의 특징들을 강화시키 는데, 상기 특징들은 미디어 유형이나 출처에 무관하게 데이터 패킷이 성공적으로 처리되는 시점을 식별하기 위한 파이프라인 구조 및 병렬 처리(parallelism)를 포함한다.
본 발명의 단일 칩 프로토콜 컨버터 설계에서, 본 명세서에서 기술된 바와 같은 SoC형 설계 내에 집적되거나 독립형으로 구현된 특수 프로세서 서브-시스템이 채용된다. SoC 구현을 위해 매크로로 이용될 수 있는 기초(base) 프로토콜 컨버터 칩(350')의 블록도가 도 11과 관련하여 본 명세서에서 도시되고 설명된다.
이러한 코어의 기본 구조 및 동작이 명세서에서 설명된다. 간단하게, 도 11에 도시된 바와 같이, 단일 칩 상(또는 SoC 내장 매크로 코어로서)의 프로토콜 컨버터는 프로토콜 변환 전용(다른 네트워크 기능으로 재구성도 가능함)의 독립 프로세서-기반 서브 시스템(350')인데, 하나 이상의 프로세서 클러스터(100), 데이터 및/또는 명령을 저장하기 위한 하나 이상의 로컬 메모리 뱅크(160) 및 크로스바 스위치(또는 대신에 FC 스위치나 MP 버스가 사용될 수 있음)로 구현된 로컬 상호 접속 수단(120) 또는 이와 유사한 스위칭 수단을 포함한다. 본 발명의 단일 칩 프로토콜 컨버터 설계는 예컨대 PowerPC 아키텍처로부터 파생된 소규모 범용 명령 세트를 가진 다수의 단순 프로세서 코어를 포함한다. 각 프로세서 클러스터(100)는 하나 이상의 프로세싱 코어를 포함하는데, 각 코어는 4-단 깊이 파이프라인을 가진 단일-이슈 아키텍처이고, 각 프로세서 코어는 도 5에 도시된 바와 같이 자신의 레지스터 파일, ALU(Arithmetic Logic Unit) 및 명령 시퀀서를 가진다. 도 11에 도시된 단일 칩 프로토콜 컨버터 및 도 14에 도시된 프로토콜 변환용 SoC 내장 매크 로의 실시예에서, 8개의 프로세서 코어(125)가 명령 캐시(131)와 함께 프로세서 클러스터(100)에 패킹된다. 명령 캐시의 크기는 설계 선택사항이며, 예컨대 네트워크 애플리케이션에 충분한 32Kb이다. 로컬 버스를 통해 적어도 두 개의 프로세서 코어(125)와 연관된 로컬 SRAM 메모리 유닛이 부가적으로 제공된다. 충분한 계산 파워(예컨대 1, 2 또는 심지어 16 프로세서 클러스터(128 코어로 구성))를 지원하기 위해 필요한 프로토콜 컨버터(350') 내의 프로세서 클러스터(125)의 정확한 수는 애플리케이션의 요구에 따른다. 예컨대, FC 네트워크 프로토콜을 위한 기능 구현은 보다 더 복잡한 TCP/IP 종단, IP나 iSCSI 프로토콜 변환 구현보다 더 적은 계산 파워를 요구한다.
본 발명의 프로세서-기반 서브시스템 프로토콜 컨버터(350')의 또 다른 특징은 애플리케이션 프로그램, 현재 제어 정보 및 애플리케이션에 의해 사용되는 데이터의 저장을 위한 내장 메모리(160)의 사용이다. 정상 동작 조건 아래에서 원활한 동작을 제공하기 위해 충분한 양의 메모리가 너무 과하지 않을 정도로 프로토콜 컨버터 내에 배치된다. 종래의 오프칩 메모리와 비교해, 내장 메모리의 추가적인 장점은 짧고 예측가능한 액세스 시간을 제공해서, 패킷 프로세싱을 위한 시간 소요 추정을 더 정확하게 한다는 점이다.
프로토콜 컨버터 칩(350') 내의 모든 요소들은 크로스바 스위치(120)를 통해서 상호 접속되는데, 크로스바 스위치(120)는 구체적으로 프로세서 클러스터(100), 공유 메모리 블록(160) 및 네트워크 프로토콜 계층 하드웨어 보조 장치나 내장 MAC 인터페이스(175', 185')를 상호 접속시킨다. (도 14 내지 16에 대해 본 명세서에 서 기술된 바와 같이) SoC 내에서 내장 매크로로서 구현할 경우, 크로스바 스위치(120)는 차례로 SoC 프로세서 로컬 버스(210)나 호스트 또는 외부 시스템 버스(223)(예컨대, PCI나 PCI-X 등)에 브리지 매크로 (버스)(224) 수단을 통해서나 직접 부착되어 접속된다. 브리지는 상이한 속도, 버스 대역, 신호 및 신호 프로토콜을 수용하게 될 수 있다. 매크로 SoC 구현에서, 프로토콜 컨버터 매크로(350') 및 내장 프로세서 로컬 버스(210)(예컨대, IBM의 코어커넥터(CoreConnect) 내의 PLB나 ARMBA 내의 ARM, MIPs등) 사이의 표준 인터페이스의 장점은 프로토콜 컨버터의 집적을 SoC 컴포넌트 라이브러리 내의 매크로로서 할 수 있다는 것이다.
네트워크 프로토콜의 더 낮은 레벨에서 매우 시간에 민감한 기능들을 위해 하드웨어 액셀러레이터(데이터 인코딩/디코딩, 직렬화/직병렬화, 링크 관리 및 CRC/체크 섬 계산을 처리함)가 추가로 구현된다. 이들 작업은 전송된 패킷의 매 바이트마다 실행되고, 소프트웨어로 구현되면 매우 비싼 계산일 것이다. 이들 기능의 하드웨어 구현은 그래서 FC 및 기가비트 이더넷(185')을 위한 네트워크 인터페이스(175') 내에 구현된 하드웨어 액셀러레이터들로서 제공되는데, 각 액셀러레이터는 작은 실리콘 면적 만을 필요로 하고, 각각 FC 및 기가비트 이더넷 통신 링크(190, 195)와 인터페이싱한다.
프로토콜 컨버터 코어(350') 및 프로세서 버스(단일 칩 구현 내의 시스템 버스나 SoC 프로세서 로컬 버스)의 분리로부터 야기되는 추가적인 이점은 1) 프로토콜 코어 및 SoC 시스템 또는 시스템 버스 사이의 트래픽만이 데이터 플로우 트래픽(데이터 수신 및 발신)이 되어서 대역폭 충돌을 최소화하고, 2) 서브시스템 상호 접속 FC 스위치(예컨대, 스위치)는 모든 SoC, FC 스위치에 부착된 다른 프로세서나 주 시스템 버스 자체에 대한 접속 프로토콜 및 표준 컴포넌트 인터페이스를 수용할 필요없이, 최적화된 고성능 솔루션을 프로토콜 코어에 제공하여, 더 고속의 프로토콜 변환 속도, 단일 SoC나 호스트 버스 어댑터 카드 내에서 처리되는 더 많은 프로토콜 및 주 시스템 버스 상에서의 더 적은 충돌이 가능하게 한다.
프로토콜 컨버터(독립 단일 칩이나 내장 SoC 매크로)로서 구현시의 프로세서 서브시스템의 동작이 이제 설명된다. 일 실시예에서, 단일 칩 프로토콜 컨버터(350')(또는 SoC 설계를 위한 내장 매크로)는 FC를 기가비트 이더넷(GE)으로 변환하는 것을 제공한다. 이러한 설계는 FC로부터 IP로, FC로부터 iSCSI로, FC로부터 인피니밴드(Infiniband)로, TCP/IP에서 iSCSI로, 그리고 본 명세서에서 언급한 다른 프로토콜 중 임의의 것과 같은 다수의 조합 등을 고려한 것임을 알아야 한다. 실제로, 이러한 구현은 데이터 통신 프로토콜에만 한정되지 않고, CAN과 같은 자동차 네트워크나 홈 애플리케이션을 위한 SAMBA 네트워크를 위한 모토롤라 MPC5554 마이크로컨트롤러와 같이 자동차 네트워크, 홈 네트워크, 또는 산업 환경에서도 구현될 수 있다.
도 12는 FC에서 기가비트 이더넷으로의 단일 칩 프로토콜 컨버터(300)로 구성되는 도 11의 단일 칩 프로토콜 코어(350')의 예시적인 도면이다.
도 12에서 도시된 프로토콜 코어에서는, 두 프로토콜 사이의 변환을 위해 필요한 패킷 리사이징 및 리포매팅 뿐만 아니라 요청된 엔드포인트(endpoint) 기능이 구현된다. 이 구현의 기본은 프로토콜 동작을 분할해서 칩 내의 다양한 리소스들 에 의해 처리될 수 있도록 하는 것이다. 프로세서(또는 프로세서 그룹)에 대한 각 프로토콜 동작은, 구현된 네트워크의 물리적 인터페이스에 가까운 일부 시간에 민감한 기능을 제외하고는 하드웨어 액셀러레이터에 의해 수행된다. 패킷 및 프로세싱 플로우가 도 12를 참고로 다음과 같이 설명된다. 수신된 패킷 및 일부 상태 정보가 프리 버퍼(free buffer)의 목록으로부터 빈 메모리 영역에 대한 포인터를 이미 수신한 DMA 로직에 의해 인바운드(inbound) FIFO 버퍼로부터 내장 메모리로 전송된다. 패킷 헤더는 패킷 콘텍스트를 결정하고, 필요한 경우, 패킷이 새로운 교환에서 제일 먼저 있는 경우에 새 제어 정보를 생성하거나 메모리로부터 제어 정보를 획득함으로써 콘텍스트를 교환하기 위해 조사된다. 추가해서, 수신된 패킷은 이것이 속한 교환 서비스의 클래스를 따르는지 확인된다. 수신된 패킷에 관한 승인이 소스로 다시 전송될 필요가 있다면(예컨대, FC 내의 클래스 2 서비스), 승인 패킷이 생성된다. 승인 패킷에 관한 해당 헤더 정보가 모아져서, 패킷인 아웃바운드(outbound) FC 네트워크 인터페이스로 전송된다. 패킷은 본 명세서에서 데이터 비트의 모음으로 정의되는데 적어도 목적지 정보를 포함하고, 보통은 통신 패킷에 대하여 헤더도 포함한다.
동시에, 기가비트 이더넷 패킷 헤더가 수신된 패킷마다 생성되고, 이더넷 네트워크 프로토콜에 따라서 패킷이 리사이징된다. 새로이 생성된 패킷(들)은 이더넷(EMAC) 네트워크 인터페이스 하드웨어 모듈(185') 내의 아웃바운드 FIFO 버퍼로 전송된다. 유사한 작업이 역 프로토콜 변환 수행, 즉 이더넷으로부터 FC 네트워크로의 패킷 전송을 위해 이루어진다. 이 프로토유형 단일 칩 FC/이더넷 프로토콜 컨버터 구현(300)의 논리적 표현이 도 12에 도시된다. 이 예시적 구현은 도 12에 도시된 프로세싱 블럭(260)에 표시된 FC로부터 (FC 입력 패킷이 프로세서(P1)에서 수신됨) 이더넷으로의 변환을 위해 동작하는 14개의 프로세서를 사용하는데, 역변환 프로세스가 도 12의 프로세싱 블럭(270)에 표시된다.
하드웨어 리소스에 대한 프로토콜 작업의 할당은 다음과 같이 도 12에 도시된 프로세스 흐름에 따라 수행된다. 프로세서 P1은 FC 인바운드 DMA 설정과 타겟 메모리 영역 할당을 관리하고, 프로세서 P2는 패킷 헤더 정보에 기초하여 4개의 프로세서 P3-P6 중 하나로 패킷을 디스패치하여 컨텍스트 전환, 패킷 확인, 그리고 필요하다면 승인 패킷 생성을 수행한다. 프로세서 P7은 이더넷 헤더 생성을 수행하여 이더넷 아웃바운드 네트워크 인터페이스로의 데이터 전달을 수립하고, 더 이상 필요로 되지 않는 메모리 영역 블록들을 연결 리스트 프리 버퍼로 반환한다. 마찬가지로, 이더넷 네트워크로부터 FC 네트워크로의 패킷 흐름은 도 12에 도시된 바와 같이 프로세서 P8-P14에 의하여 처리된다. 이더넷 네트워크로 송신되는 패킷들로의 포인터들이 워크 큐(249) 내에 배치되고, FC 상에서 전송될 패킷들로의 포인터들은 FC 아웃바운드 워크 큐(259) 상에 배치된다.
기타 다른 네트워크 프로토콜이나 프로토콜 변환이 비슷한 방식으로 쉽게 구현될 수 있다. 예컨대, iSCSI 또는 TCP/IP 프로토콜 스택 구현에 있어서, 단일 프로세서 구현을 위한 기존의 코드가 재사용될 수 있으며, 이러한 경우 이를 해당 아키텍처로 적합화하기 위한 약간의 프로그래밍 노력만이 필요로 된다. 좀 더 구체적으로, 패킷 디스패칭과 컬렉팅 작업들(수신 경로를 위한 레이블 P2 및 P7의 프로 세서들, 그리고 송신 경로를 위한 레이블 P9 및 P14의 프로세서들)이 구현되어야 하지만, 네트워크 프로토콜은 레이블 P3 내지 P6 및 P10 내지 P13 프로세서들 상에서 거의 변경없이 병렬로 실행되도록 적합화되어 있다. 병렬로 프로토콜 작업들을 실행하는 프로세서의 수는 타이밍 요구를 충족하기 위한 작업 복잡도에 따라 크기 조정되어야 한다. 예컨대, iSCSI 프로토콜 변환은, 단일 칩 프로토콜 변환을 수행하기 위한 도 12에 도시된 일 예에서의 14개 이상의 프로세서를 요구할 수 있다.
다수의 프로세서 코어 상에서의 패킷 프로세싱은 모든 프로세싱 동작들을 수행하는 단일 프로세서로 패킷이 할당되는 실행-완료(run-to-completion) 방법에 따르거나 패킷 프로세싱 동작들이 복수의 파이프라인 단들로 분할되어 별도의 프로세서들로 할당되는 파이프라이닝을 통하여 수행된다. 본 명세서에 기술된 일 구현의 경우, 파이프라인 방법이, 예컨대 I-캐시 등의 하드웨어 리소스에 대한 더 나은 활용률을 제공한다. 개별 파이프라인 단들에 할당될 수 있는 네트워크 동작들의 예로는 헤더 핸들링, 패킷 확인, 승인 응답의 생성, 패킷 재정렬 및 메시지 어셈블리, 그리고 종단간 제어가 있다.
프로세서에 대한 프로토콜 작업의 스케줄링은 초기화 동안 정적으로 수행되며, 즉 각 프로세서(125)가 다양한 패킷들에 대해 동일한 동작 세트를 실행한다. 마찬가지로, 동적 메모리 관리, 예컨대 가비지 컬렉션 등과 관련된 오버헤드를 피하기 위하여, 정적 메모리 관리가 이용된다. 이용되는 모든 메모리 구조(230)는 시스템 기동시 초기화된다. 이들은 데이터 패킷 저장을 위한 메모리 영역(275)과, 기존의 네트워크 접속의 제어 및 상태 정보에 대한 메모리(280), 프로그램 코드 (285) 및 워크 큐들을 포함한다. 이러한 아키텍처에서 이용되는 다양한 메모리 구조가 도 13에 도시되어 있다. 이러한 구조들의 제공은 패킷 프로토콜 변환의 모든 하위 프로세스들을 단일 칩 내에 남아있도록, 또는 SoC 유형 설계에 부착된 내장 매크로로서 남아있도록 하고, 이는 최종 완성된 패킷을 시스템 버스 또는 내부 SoF 버스로 전달되도록 인에이블링한다.
도 13에 도시된 바와 같이, 데이터 패킷을 저장하는 메모리 영역(230)은 연결 리스트(275)로 구성된다. 들어오는 패킷은 그 연결 리스트로부터 획득되는 다음 프리 버퍼에 저장된다. 패킷 프로세싱 동안, 패킷이 저장된 메모리 영역으로의 포인터 만이 프로세서들 간에 전달된다. 패킷 프로세싱이 완료되면, 그 패킷은 아웃바운드 네트워크 인터페이스로 전달되고, 해당 버퍼는 프리 버퍼 리스트로 복귀한다.
도 13에 도시된 바와 같이 워크 큐(290)를 통한 메시지 전달 형식으로 프로세서 동기화가 수행된다. 이러한 방법에서, 각 프로세서 P1-P4는 스레드로써 처리를 기다리고 있는 패킷들에 대한 포인터들을 저장하는 워크 큐(290)와 연관된다. 프로세서가 다음 패킷에 대해 작업할 준비가 되면, 그 워크 큐로부터 다음 펜딩 중인 패킷의 포인터를 얻는다. 프로세싱을 끝마치면, 그 패킷에 대한 포인터를 파이프라인에 있어서의 다음 스레드의 워크 큐에 넣는다. 메모리 액세스 충돌에 있어서의 정확한 동작을 보장하기 위하여, 로킹이 이용된다.
프로세서 스케줄링에 있어서 중요한 고려사항은 모든 파이프라인 단들이 동일한 패킷 프로세싱 시간을 요구하지는 않을 수 있다는 점과, 또한 각 파이프라인 단에서의 프로세싱 시간이 패킷 컨텍스트에 따라 변화할 수 있다는 점이다. 예컨대, FC에서, 패킷 프로세싱 시간은 그 패킷이 패킷 시퀀스의 처음인가, 가운데인가, 아니면 끝인가의 문제, 패킷이 링크 제어 정보를 보유하고 있는가 여부, 그리고 패킷이 요청 메시지에 속하는지 아니면 비요청 메시지에 속하는지 문제에 의존한다. 파이프라인의 각 단들 중 하나가 다른 단들에 비해 크게 느린 경우라면, 그 워크 큐는 과부하가 되고, 병목이 발생하게 된다. 이는 여러 개의 프로세서, 예컨대 도 13의 P1-P4를 이용하여 병렬로 그 해당 파이프라인 단에 대한 작업을 수행함으로써 치유된다.
파이프라인 단들에 있어서의 프로세싱 시간은 패킷들에 걸쳐 달라질 수 있으므로, 모든 프로세서가 완전히 활용되지는 않을 수 있다. 대신에, 충분한 버퍼링과 디커플링 논리를 제공함으로써 파이프라인 단들 사이에서의 매칭되는 스루풋을 달성할 수 있다.
동일한 작업에 대한 작업을 위해 복수의 프로세서들을 할당하는 것은 작업 디스패칭 프로세서(예컨대 도 13에 프로세서 P5라고 표시되고 "MT"라고 레이블링된 것)의 개입을 필요로 한다. 패킷 할당 방법은 간단해서 짧은 프로세싱 시간 내에 실행되고, 리소스 경쟁 및 로킹을 통한 성능 열화를 야기하지는 않는다.
대신에, FC 구현에 있어서는, 단일 프로세서에 의하여 동일한 컨텍스트 그룹에 속한 모든 패킷들dl 프로세싱되도록 하는 빈-소팅(bin-sorting) 알고리즘이 이용된다. 현재 컨텍스트에 관한 정보가 프로세서의 레지스터 파일에 캐시되고, 이러한 정보 페치를 위한 평균 액세스 시간과 리소스 경쟁을 줄인다. 소팅 오버헤드 는 간단한 해시 함수를 이용함으로써 낮게 유지된다. 일 구현에 있어서, 패킷 소팅과 프로세서 할당 작업은 약 50개의 명령어들만을 이용한다. 그러나, 이는 설계 선택에 따라 변할 수 있고 35-200개 중 얼마 정도의 범위일 수 있다는 점을 알아야 한다. 도시된 실시예에서, 가능한 적은 명령어 세트, 예컨대 35-50개 범위의 명령어 세트가 이용되고 잇다. 전형적 네트워크 트래픽에 있어서는 임의의 주어진 시간에 프로세서 보다 더 많은 활성 컨텍스트 그룹이 존재할 수 있고, 수 개의 각기 다른 컨텍스트들이 동시에 동일한 프로세서로 할당될 수 있다. 최악의 경우, 모든 패킷들이 하나의 프로세서로 할당되어 과부하를 야기할 수도 있다. 그러나, 실제 애플리케이션을 실행하는 네트워크 트래픽은 병렬로 동작하는 프로세서들 가운데 컨텍스트 그룹이 균등하게 배분되기 때문에 이러한 문제가 없다.
단일 칩 프로토콜 컨버터의 아키텍처는 구획식이므로, 그 설계는 주문 확장되는 것이 가능하다. 설계에 있어서, 프로세서 코어와 내장 메모리 블록의 수는 설계를 크게 변경시키지 않으면서 애플리케이션 요구사항들에 맞추어 쉽게 적합화된다. 예컨대, 다음과 같은 네트워킹 애플리케이션에 있어서, 10Gb/s의 라인 속도로 동작하는 멀티프로세서 프로토콜 컨버터에 대해 요구되는 계산 용량은 이하 기술되는 바와 같이 변화할 수 있다. 이와 관련하여, 이러한 프로토콜 컨버터 설계는, 각 프로세서가 TCP/IP 오프로드 함수, 프레임 분류자 함수(Frame Classifier function), 프리-프로세싱 함수(Pre-Processing function), 하드웨어 액셀러레이터, RISC 또는 데이터 프로세싱 함수 등과 같은 오직 하나의 주어진 잠재적 기능성을 갖는 종래 기술과는 달리, 레이아웃 설계, 내장 메모리, 네트워크 파티셔닝, 그 리고 각기 다른 프로세스에 의하여 처리되고 다양한 서브-프로세서들로 배분된 프로토콜 리소스들에 의하여 기타 다른 네트워크 프로세싱 기능들로 실제로 "조정 가능"하고, "비제한적"이어서, 즉 프로세서들이 특정 네트워크 기능으로부터 독립적이다. 목표하는 동작을 확장하기 위한 충분한 프로세싱 능력이 허용되는 한, 본 발명의 단일 칩 프로토콜 컨버터(350') 내에서, 또는 내장 매크로 코어(550)으로서, 동일한 프로세서들과 로컬 메모리 쌍들이 다양한 네트워크 기능들(즉, 동작들)을 수행할 수 있다. 다음에는 몇 가지 예가 열거된다.
프로토콜 변환 : 14개의 프로세서(즉, 두 개의 8-코어 프로세서 클러스터). 64 바이트의 I-캐시, 64 킬로바이트의 데이터 SRAM, PowerPC 440(또는 기타 다른 프로세서들), 그리고 도 11 및 도 12에 도시된 기타 다른 매크로들을 포함하는 칩이 0.13m ASIC 테크놀로지에서 대략 35mm2를 필요로 할 것이다.
TCP/IP 오프로드 엔진 : 32개의 프로세서, 즉 128 킬로바이트의 I-캐시와 128 킬로바이트의 SRAM을 가정한 4개의 프로세서 클러스터, 이는 전술한 테크놀로지에 있어서 50mm2를 차지할 것이다.
통합형 방화벽 : 128개의 프로세서(추정치), 즉 512 킬로바이트의 I-캐시와 512 킬로바이트의 SRAM을 가정한 16-프로세서 코어 클러스터, 그에 따른 칩은 약 150mm2를 차지할 것이다.
이러한 기본적 아키텍처(주어진 애플리케이션에 대해 필요로 되는 SoC 내장 매크로로서 또는 하나의 칩 내에, 더 많은 서브-프로세서들을 구축할 수 있다.)는 네트워크 속도나 시장 조건 변화에 적응력이 있다. 예컨대, "방화벽 프로세서" 또는 "프로토콜 컨버터"로서 칩을 재구성하도록 적응되거나, 아직 구현된 바 없는 완전히 새로운 설계나 프로토콜에 이러한 아키텍처가 적응될 수 있다. 따라서, 한 가지 기초적 설계가 많은 애플리케이션들과 잠재적 기능들로 확장 가능하다. 칩 또는 내장 매크로 SoC 코어의 네트워크 기능은, 단순히 프로세서 수와 메모리 유닛을 선택한 다음, 적절한 소프트웨어 코드나 버전 레벨을 적용함으로써, 칩의 재설계없이 변경될 수 있다. 새로운 프로토콜 기능을 위한 메모리 유닛들과 선택된 프로세서 수는 목표한 새로운 기능을 위한 코어 성능의 통계적 시뮬레이션에 의하여 선택된다.
먼저 언급한 바와 같이, 프로토콜 컨버터는 개별 반도체 기판 상의 독립형 집적 회로 칩으로서 구현될 수도 있고, SoC형 설계, FPGA, DSP 등에 있어서 매크로로서 내장 될 수도 있다. 본 발명의 제2 태양에 따른 SoC(시스템-온-칩) 설계(400) 내에 내장 된 매크로 코어로서 구현된 프로토콜 컨버터의 일 예가 도 14에 도시되어 있다. 필요한 것은 (변환되었거나 변환되지 않은) 완성된 패킷을 전달하기 위한 표준 버스 인터페이스 또는 브리지일 뿐이므로, 이러한 매크로는 SoC 설계로 제한되는 것이 아니라, 표준 DSP, 마이크로-컨트롤러, FPGA, ASIC's 및 마이크로프로세서로서 구현될 수도 있다는 점을 알아야 한다. "SoC"라는 용어는 일반적으로 적어도 하나의 프로세싱 소자, 메모리 소자, I/O 인터페이스 및 로컬 버스나 복수의 온-칩 버스들에 부착된 코어들을 구비한, 시스템-온-칩을 정의하는데 이용된다.
도 14에 도시된 바와 같이, 내장 프로토콜 컨버터 매크로 코어(550)(도 11에서 독립 칩 설계로서 도시된 것과 같음)를 포함하는 SoC(400)의 일 실시예는 CPU 또는 MPU 소자(425)(여기서는 IBM's PowerPC 440로서 도시되어 있지만, PowerPC 외에도, ARM, MIPs 등과 같은 기타 다른 SoC 프로세서 코어들이 구현될 수 있음을 알아야 한다.), 로컬 SoC 버스(210)(도 14에는 IBM's CoreConntect PLB(210)(프로세서 로컬 버스)로 도시됨), 선택적 저속 버스(도 14에는 IBM's 온-칩 주변 버스 즉 OPB(240)로서 도시됨), 그리고 SRAM(415), DDR 컨트롤러(418), PCI-X 브리지(422), DMA(426) 및 DMA 컨트롤러(428), OPB 브리지(429) 등을 포함한 도 14에 도시된 것과 같은 임의의 수의 SoC 컴포넌트들(코어들)을 포함한다. OPB(240)는, RAM/ROM 주변 컨트롤러(445a), 외부 버스 마스터(445b), UART 장치(445c), Inter-IN 버스(12C) 인터페이스(445d), 범용 I/O 인터페이스(445e) 및 게이트웨이 인터페이스(445f) 중 하나 이상을 포함한 또 다른 장치들과 접속된다.
도 14에 도시된 실시예는 SoC 시스템(400) 내의 내장 매크로 코어 또는 단일 칩 프로토콜 컨버터로서 통합되고 브리지(224) 및 PLB(210)를 통하여 프로세서 코어(425)와 통신하는 독립형, 프로세서-기반 프로토콜 컨버터를 포함한다. 기술된 바와 같이, 프로세서 기반 프로토콜 컨버터 매크로 코어(550)는 하나 또는 복수의 프로세서 클러스터(200), 데이터 및/또는 명령어 저장을 위한 하나 이상의 로컬 메모리 뱅크(230), 본 실시예에서 도시된 크로스바 스위치(120)나 그와 등가의 FC 스위치, 즉 NxX 스위치 등과 같은 로컬 상호 접속 수단, 그리고 적어도 두 개의 네트워크 프로토콜을 위한 적어도 두 개의 MAC(Media Access Control) 인터페이스 유닛 (175', 185')을 포함한다. 도 14에 도시된 바와 같이, 이들 MAC 유닛(175', 185')은, PHY(Physical Layer Chips), SoC 내장 MAC 또는 PHY 함수, 또는 SoC나 호스트 카드와는 다른 외부 프로토콜 칩들일 수 있는 각각의 외부 MAC 인터페이스 장치(475, 485)와 인터페이싱한다. 즉, 도 14에 도시된 MAC(475, 485)은 FC 하드웨어 어시스트 코어와 이더넷 10/100/1G EMAC을 포함할 수 있고, 한편으로는 임의의 프로토콜을 위한 인터페이스들을 포함할 수 있으며, 별개의 MAC 또는 PHY 장치로서 오프칩(물리층 칩) 통합되거나 로컬 카드 상의 SoC 칩 외부에 있을 수도 있다. 자동차 애플리케이션이나 홈 네트워킹 등의 오늘날 저속 애플리케이션에 있어서, 이는 바람직한 것일 수 있다.
도 15는 내장 SoC 내에서 하나의 패킷을 외부 프로토콜 인터페이스로 프로토콜 변환하는 프로세스 흐름을 도시하고 있다. 매크로 컨트롤에 속한 로컬 메모리가 패킷의 프로세싱과 DMA 전달 양자 모두를 제어하므로, 패킷들은 매크로에 의한 프로토콜 변환 이후 제1 인터페이스로부터 제2 I/O 인터페이스로 전달될 수 있도, 또는 로컬 SoC 버스(210)로 출력되고 최종적으로 호스트 시스템 버스(223)(예컨대, 도 15에 도시된 PCI-X 133MHz나 비슷한 등가물)로 출력될 수도 있다. 바람직하게, 통신은 듀플렉스, 즉 전송 방향과 수신 방향 모두의 통신을 가능하게 하는 링크들을 포함한다. 도 15에 도시된 예로써, A/B 패킷 변환은 제1 프로토콜에 따른 패킷으로 도시되며, 예컨대 1G 이더넷 패킷들이 SoC 외부 프로토콜 칩, 매크로 또는 EMAC(외부 이더넷 I/O) 인터페이스(485)에서 수신되고 컨버터 매크로의 EMAC(185') 내부 FIFO로 전달되고 크로스바 스위치(120)를 통해 매크로의 내부 메모리(230)까 지 전달된다. 워크 큐로서 매크로의 내부 메모리(SRMA, DRAM 등)는 이더넷 패킷들을 모으고, 온-칩 컨트롤러 기능이 크로스바 스위치를 통해 이더넷 패킷을 서브-프로세서, 예컨대 도 9 내지 15에 도시된 "proc 1" 클러스터로 전달한다. 본 명세서에서 기술하는 바와 같이, 병렬성, 파이프라이닝 및 멀티스레딩으로 인하여, 프로토콜 변환 프로세스는 프로토콜 변환을 위한 내장 프로토콜 컨버터 매크로 코어(550) 내의 다수의 서브-프로세서들 간에 균등하게 분할되고, 다수의 변환 프로세스가 하나의 프로세서와 매칭된다. 따라서, 오직 하나의 라운드, 예컨대 "proc 1"로부터의 "proc 3"으로의 "A"의 "B"로의 변환은, 실제로 변환을 위한 다수의 프로세서들 간에 패킷이 분할되는 것으로 도시되어 있다. 프로토콜 A/B 패킷 변환이 도 15에 도시되어 있지만, 이와 다른 프로세스는 프로토콜 B의 패킷들이 "B 피시쉬(finish)"의 반대쪽으로 들어가서 프로토콜 #1(A-측)에서 빠져나오는 과정을 포함할 것이다. B' 및 A' 프로세스 플로우는 양방향 듀플렉스 링크의 서로 반대 쪽이 된다는 점을 알아야 한다.
실제 프로토콜 변환 코드는 내장 프로토콜 컨버터 매크로 코어(550)에 포함된 프로세싱 요소들 상에서 수행된다. 매크로는 병렬로 실행 중인 수 개의 프로세스(P0, P1, ... Pn) - 각 방향 별로 한 셋트(즉, 수신 및 송신) - 를 갖는다. 이들 프로세스 각각은, Proc. 0, Proc. 1, Proc. 2 등으로 레이블링된 매크로의 프로세싱 요소들 중 하나로 매핑된다. 개시되는 실시예들에서는 내장 SoC 매크로 프로세서들 상에서 실행되도록 이하 3개의 다른 종류의 프로세스가 제공된다.
1. 디스패치: 작업들을 프로세서들에 할당하는 프로세스
2. 프로토콜 프로세싱: 프로토콜-프로세싱 작업들
3. 수집: DMA SoC 컨트롤러가 코어의 내부 메모리로부터 패킷을 전송하고, 패킷들이 전송된 후 소정의 메모리 관리 기능을 수행하도록 설정
이들 프로세서들 간의 통신은 도 13에 도시된 것과 같은 메모리 내 기본적 전용 영역인 워크 큐(work queue)들을 통해 이루어진다. 유휴(idle) 프로세스는 그의 워크 큐들을 주기적으로 폴링(polling)함으로써 펜딩 중인 워크가 있는지 여부를 판정한다.
프로토콜 매크로 코어는, 데이터를 일련의 IP 패킷들로 분할(partitioning)하고, IP 패킷 헤더를 생성하고, 이더넷 패킷을 생성하는 등과 같은, 요구되는 모든 특정 프로토콜 작업들을 실행하고, 이 패킷들을 다시 이더넷 MAC 매크로로 이동시킨다. 프로토콜에 의해 정의된 바와 같이 패킷 재전송이 요구되는 경우, 패킷 재전송은 SoC 로컬 프로세서의 개입없이 발생하며, 단지 외부 DMA나 DDR 메모리에 의한 패킷/데이터 전송 요청 또는 실제 데이터 전송만이 요구된다. 패킷 "A"에서 "B"로 프로토콜 변환이 된 후, 패킷은 로컬 온-칩 매크로 메모리로 다시 전송되고, 데이터의 끝이 신호된다. 이로부터, 로컬 매크로 메모리 및 내장 로컬 DMA 컨트롤러는 변환된 패킷을 크로스 바 스위치(cross bar switch), FC 인터페이스(Fibre channel Interface) 및 외부 I/O 인터페이스를 통해 전송한다. 이와 달리, FC 인터페이스가 최종 변환된 패킷을 전송하는 내장 컨트롤러를 구비할 수도 있다.
외부 SoC DDR(418) 또는 DMA(426)는, 프로토콜 컨버터 인터페이스로부터 패킷을 전송하는 것과 대조적으로, 필요한 경우 버스 브리지를 통해 로컬 SoC 버스 상으로, 최종적으로는 호스트 시스템 버스(223) 상으로 패킷을 전달하라고 추가적으로 요청할 수 있다. 마찬가지로, 호스트 버스(223)는 프로토콜 변환을 위한 패킷(들)을 매크로로 전송하고 다시 변환 완료된 패킷을 수신하거나 각각의 프로토콜 및 패킷 유형에 따라 외부 프로토콜 인터페이스들(475, 485)로 전송할 수 있다.
도 16은 호스트 버스(223)로부터 수신되고, 전송을 위해 외부 SoC 인터페이스(485)로 전달되는 단일 패킷의 프로토콜 변환에 대한 예시적인 프로세스 흐름을 도시한 것이다. 도 16에 도시된 예시적인 프로세스 흐름에서, FC 프로토콜 패킷은 호스트 시스템 버스(223)로부터 전송(발생)되어, 변환 및 전송(예컨대 외부 이더넷 인터페이스 1G EMAC 인터페이스(485)로의 전송)을 위한 SoC 프로토콜 컨버터 매크로(350')로 전송된다. 도 16에 도시된 바와 같이, SoC 메인 프로세서(PowerPC 440)는 데이터 처리에 대한 요청을 설정하고, 이 요청 및 외부 DDR 메모리에 있는 데이터에 대한 포인터를 버스 브리지(224)를 통해 프로토콜 컨버터 매크로 코어(550)로 전송한다. 도시된 실시예에서, 인터럽트 신호가 발생하지만, 이것은 전용 레지스터 또는 사전-지정된(pre-specified) 메모리 영역에 데이터를 기록함으로써 구현될 수 있다.
내장 프로토콜 컨버터 매크로 코어(550)가 그 요청을 인식하고, DMA 엔진을 활성화시켜 외부 호스트나 SoC 로컬 메모리로부터 매크로 로컬 메모리로 데이터를 전달하도록 한다. 데이터(예컨대, 패킷 #B)는 로컬 SoC 버스 및 브리지 버스를 통해 매크로의 로컬 메모리(230)로 전달된다. 모든 데이터가 전송되면, SoC 프로세서는 작업 종료에 대한 통지를 받는다. 이것은 PowerPC 440으로 인터럽트를 전송 하거나, PowerPC 440에 의해 정기적으로 폴링되는 소정의 미리-정해진(pre-defined) 영역에 기록함으로써 구현될 수 있다.
본 명세서에 기술된 바와 같이, 워크 큐, 수집 시퀀스 및 (도 13에 도시된 바와 같은) 작업 디스패칭 프로세서(MT)에 의하여, 패킷 분할함으로써 FC 패킷(B)은 매크로의 로컬 메모리로부터 복수의 서브-프로세서로 전달된다. 프로토콜 변환, 예컨대 프로토콜 "B"(FC 유형)에서 프로토콜 "A"(기가비트 이더넷 유형)로 변환이 완료되면, 완성된 패킷은 크로스바 스위치(120)를 통해 로컬 매크로 메모리로 다시 전달된다. 로컬 DMA 요청은, 전달 및 변환을 완료하기 위해 패킷 "A"를 매크로 메모리로부터 외부 이더넷 인터페이스(485)로 전달한다.
본 명세서에서 기술된 방법들은, 현재의 방법보다 I/O 카드 및 칩의 개수를 줄이고, 적응성 개선, 네트워크 기능성, 고밀도성(더 많은 프로세서를 하나의 로컬 또는 호스트 버스에 연결하는 것), 고속의 프로토콜 처리, 대역폭 개선, 메모리 경쟁 감소, 말단 시스템 사용자들에 대한 적응성, 네트워크 설계/업그레이드의 용이성을 상당히 향상시킨다.
본 발명은, 예시적으로 미리 정해진 실시예들에 대해 구체적으로 도시되고 기술되었지만, 당업자라면 본 발명의 사상과 범위를 벗어나지 않고, 형식 및 세부에서 전술한 변경 및 기타 변경들이 이루어질 수 있으며, 본 발명은 오직 첨부되는 청구항의 범위로서만 제한되어야 함을 이해할 수 있을 것이다.

Claims (57)

  1. 프로세서 디바이스, 통신 버스 디바이스 및 통신을 가능하게 하기 위한 표준화된 컴포넌트(standardized components)를 포함하는 시스템-온-칩(SoC) 집적 회로(IC)에서 사용하기 위한 독립(self-contained) 마이크로프로세서 서브시스템에 있어서, 상기 독립 마이크로프로세서 서브시스템은,
    복수의 프로세서 코어 어셈블리 - 상기 프로세서 코어 어셈블리 각각은,
    소정의 프로세싱 기능을 구현하는 동작들을 수행할 수 있는 2개 이상의 마이크로프로세서 디바이스;
    상기 프로세서 코어 어셈블리 내에서 데이터 및 명령어들 중 적어도 한쪽을 저장하기 위한, 상기 프로세서 코어 어셈블리 내의 상기 2개 이상의 마이크로프로세서 디바이스에 연관된 저장 디바이스;
    상기 2개 이상의 마이크로프로세서 디바이스들 사이에 명령어 및 데이터의 통신을 가능하게 하기 위한, 상기 프로세서 코어 어셈블리 각각에 존재하는 제1 로컬 상호 접속 수단(interconnect means)을 포함함 -;
    상기 복수의 프로세서 코어 어셈블리들 사이에 통신을 가능하게 하기 위한 제2 로컬 상호 접속 수단; 및
    상기 독립 마이크로프로세서 서브시스템의 상기 제2 로컬 상호 접속 수단과 상기 SoC IC 통신 버스 디바이스 사이의 데이터 송신 및 수신 통신을 가능하게 하기 위한 공통 매크로(common macro)를 구현하는 브리지 다바이스
    를 포함하며,
    상기 복수의 프로세서 코어 어셈블리는 상기 브리지 디바이스를 통해 상기 SoC IC의 표준화된 컴포넌트와 통신할 수 있고, 상기 SoC IC 내의 표준화된 컴포넌트를 수용(accommodate)할 필요 없이 상기 독립 마이크로프로세서 서브시스템의 통신 트래픽이 상기 SoC IC 내의 통신 트래픽으로부터 분리되는,
    독립 마이크로프로세서 서브시스템.
  2. 제1항에 있어서,
    상기 SoC IC는 네트워크 프로세서 어셈블리이고,
    상기 마이크로프로세서 서브시스템은 패킷 통신 프로세싱 기능을 구현하는, 마이크로프로세서 서브시스템.
  3. 제2항에 있어서,
    상기 독립 마이크로프로세서 서브시스템은, 파이버 채널(Fibre Channel), 기가비트 이더넷(Gb Ethernet), 인피니밴드(Infiniband)를 포함하는 그룹 중의 하나 이상을 포함하는 네트워크 통신 프로토콜에 따라 통신을 수신할 수 있는 하나 이상의 인터페이스 디바이스를 더 포함하는, 마이크로프로세서 서브시스템.
  4. 제3항에 있어서,
    상기 네트워크 프로세서 어셈블리는 DSP, 코프로세서, 하이브리드 ASIC(Hybrid ASIC) 또는 그 밖의 네트워크 프로세싱 장치 중 하나로서 구성되며,
    상기 네트워크 프로세서 어셈블리는
    네트워크 프로세싱 디바이스; 및
    상기 네트워크 프로세서 어셈블리의 컴포넌트는 상기 네트워크 프로세싱 디바이스와 상호 접속시키기 위한 고속 로컬 버스 수단
    을 포함하는, 마이크로프로세서 서브시스템.
  5. 제4항에 있어서,
    상기 네트워크 프로세서 어셈블리의 표준화된 컴포넌트는, SRAM, DDR 컨트롤러, PCI-X 브리지, 직접 메모리 액세스 DMA 디바이스, DMA 컨트롤러, 하나 이상의 I/O 인터페이스 디바이스를 통하여 외부 컴포넌트와 인터페이싱하기 위한 온-칩 주변장치 버스(OPB), 그리고 이더넷 LAN 시스템에 데이터 링크 계층 인터페이스를 제공하기 위해 사용되는 매체 액세스 제어(MAC) 프로토콜 디바이스를 포함하는 그룹으로부터 선택된 하나 이상을 포함하는, 마이크로프로세서 서브시스템.
  6. 제1항에 있어서,
    상기 브리지 장치는, 상기 독립 마이크로프로세서 서브시스템과 상기 SoC IC 통신 버스 디바이스 간의 데이터 흐름을 가능하게 하기 위한 프로그램 가능 프로세서 로컬 버스 브리지 디바이스(programmable processor local bus bridge device)를 더 포함하는, 마이크로프로세서 서브시스템.
  7. 제6항에 있어서,
    상기 프로그램 가능 프로세서 로컬 버스 브리지 디바이스가 상기 독립 마이크로프로세서 서브시스템을 구현하는 상기 SoC IC 디바이스를 통해 통신하는 2개의 통신 시스템들 간의 통신 신호들 및 신호 프로토콜들을 적합화시키는, 마이크로프로세서 서브시스템.
  8. 제1항에 있어서,
    상기 제2 상호 접속 수단은 상기 2개 이상의 마이크로프로세서 디바이스들에 대응하는 독립적 스레드 그룹들을 서로 묶기 위한 크로스바 스위치(crossbar switch)를 포함하는, 마이크로프로세서 서브시스템.
  9. 제1항에 있어서,
    상기 독립 마이크로프로세서 서브시스템 내의 상기 2개 이상의 마이크로프로세서 디바이스들과 연관된 상기 저장 디바이스는, 상기 마이크로프로세서 디바이스들을 서로 접속하는, 로컬 SRAM 메모리, 메모리 캐시 및 I-캐시 중 하나 이상을 포함하는, 마이크로프로세서 서브시스템.
  10. 제5항에 있어서,
    상기 프로세서 코어 어셈블리 각각의 상기 2개 이상의 마이크로프로세서 디바이스들은, 하나 이상의 네트워크 프로토콜 통신 프로세싱을 처리하기 위해 상기 SoC IC 통신 버스 디바이스를 폴링(polling)하는 수단을 포함하는, 마이크로프로세서 서브시스템.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
KR1020067001734A 2003-07-25 2004-07-23 마이크로프로세서 서브시스템 KR100986006B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/604,491 US7353362B2 (en) 2003-07-25 2003-07-25 Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus
US10/604,491 2003-07-25
US10/768,828 2004-01-30
US10/768,828 US7412588B2 (en) 2003-07-25 2004-01-30 Network processor system on chip with bridge coupling protocol converting multiprocessor macro core local bus to peripheral interfaces coupled system bus

Publications (2)

Publication Number Publication Date
KR20060110858A KR20060110858A (ko) 2006-10-25
KR100986006B1 true KR100986006B1 (ko) 2010-10-06

Family

ID=34119193

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020067001734A KR100986006B1 (ko) 2003-07-25 2004-07-23 마이크로프로세서 서브시스템
KR1020040057615A KR100754578B1 (ko) 2003-07-25 2004-07-23 단일 칩 프로토콜 컨버터

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020040057615A KR100754578B1 (ko) 2003-07-25 2004-07-23 단일 칩 프로토콜 컨버터

Country Status (4)

Country Link
US (3) US7412588B2 (ko)
EP (1) EP1654669A2 (ko)
KR (2) KR100986006B1 (ko)
WO (1) WO2005013143A2 (ko)

Families Citing this family (200)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225003B2 (en) 1996-11-29 2012-07-17 Ellis Iii Frampton E Computers and microchips with a portion protected by an internal hardware firewall
US6725250B1 (en) * 1996-11-29 2004-04-20 Ellis, Iii Frampton E. Global network computers
US7926097B2 (en) * 1996-11-29 2011-04-12 Ellis Iii Frampton E Computer or microchip protected from the internet by internal hardware
US6167428A (en) * 1996-11-29 2000-12-26 Ellis; Frampton E. Personal computer microprocessor firewalls for internet distributed processing
US7506020B2 (en) * 1996-11-29 2009-03-17 Frampton E Ellis Global network computers
US7634529B2 (en) 1996-11-29 2009-12-15 Ellis Iii Frampton E Personal and server computers having microchips with multiple processing units and internal firewalls
US20050180095A1 (en) * 1996-11-29 2005-08-18 Ellis Frampton E. Global network computers
US8312529B2 (en) 1996-11-29 2012-11-13 Ellis Frampton E Global network computers
US7805756B2 (en) 1996-11-29 2010-09-28 Frampton E Ellis Microchips with inner firewalls, faraday cages, and/or photovoltaic cells
WO2002003744A1 (en) * 2000-06-30 2002-01-10 Hughes Electronics Corporation Residential broadband communications device, and method of operating same
US20030105799A1 (en) * 2001-12-03 2003-06-05 Avaz Networks, Inc. Distributed processing architecture with scalable processing layers
US8539089B2 (en) * 2003-04-23 2013-09-17 Oracle America, Inc. System and method for vertical perimeter protection
US7412588B2 (en) 2003-07-25 2008-08-12 International Business Machines Corporation Network processor system on chip with bridge coupling protocol converting multiprocessor macro core local bus to peripheral interfaces coupled system bus
US8667194B2 (en) * 2003-12-15 2014-03-04 Finisar Corporation Two-wire interface in which a master component monitors the data line during the preamble generation phase for synchronization with one or more slave components
US8572289B1 (en) * 2003-12-19 2013-10-29 Nvidia Corporation System, method and computer program product for stateless offloading of upper level network protocol operations
US7949792B2 (en) * 2004-02-27 2011-05-24 Cisco Technology, Inc. Encoding a TCP offload engine within FCP
US8225024B2 (en) * 2004-03-05 2012-07-17 Finisar Corporation Use of a first two-wire interface communication to support the construction of a second two-wire interface communication
WO2005089241A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for providing object triggers
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20050228509A1 (en) * 2004-04-07 2005-10-13 Robert James System, device, and method for adaptively providing a fieldbus link
JP4528551B2 (ja) * 2004-04-14 2010-08-18 株式会社日立製作所 ストレージシステム
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US7864681B2 (en) * 2004-07-15 2011-01-04 Broadcom Corp. Method and system for a gigabit ethernet IP telephone chip with 802.1p and 802.1Q quality of service (QoS) functionalities
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7761608B2 (en) * 2004-09-01 2010-07-20 Qlogic, Corporation Method and system for processing markers, data integrity fields and digests
DE102004049671B4 (de) * 2004-10-12 2007-08-02 Mühlbauer Ag Elektronisches Modul für die Herstellung, Programmierung und das Testen von Chipkarten und zugehöriges Verfahren
US8478907B1 (en) * 2004-10-19 2013-07-02 Broadcom Corporation Network interface device serving multiple host operating systems
CA2586763C (en) 2004-11-08 2013-12-17 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US20060133417A1 (en) * 2004-12-02 2006-06-22 International Business Machines Corporation Method and system for providing interoperability of different version protocols without access to protocol specific code
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP1872249B1 (en) 2005-04-07 2016-12-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
JP2006333438A (ja) 2005-04-28 2006-12-07 Fujitsu Ten Ltd ゲートウェイ装置及びルーティング方法
US7761649B2 (en) * 2005-06-02 2010-07-20 Seagate Technology Llc Storage system with synchronized processing elements
US20060274787A1 (en) * 2005-06-07 2006-12-07 Fong Pong Adaptive cache design for MPT/MTT tables and TCP context
US7596144B2 (en) * 2005-06-07 2009-09-29 Broadcom Corp. System-on-a-chip (SoC) device with integrated support for ethernet, TCP, iSCSI, RDMA, and network application acceleration
US7392338B2 (en) * 2006-07-31 2008-06-24 Metaram, Inc. Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
GB2441726B (en) * 2005-06-24 2010-08-11 Metaram Inc An integrated memory core and memory interface circuit
US8090897B2 (en) * 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US9542352B2 (en) * 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US20080126690A1 (en) * 2006-02-09 2008-05-29 Rajan Suresh N Memory module with memory stack
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US7609567B2 (en) * 2005-06-24 2009-10-27 Metaram, Inc. System and method for simulating an aspect of a memory circuit
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US7590796B2 (en) * 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US8359187B2 (en) * 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8077535B2 (en) * 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US7472220B2 (en) * 2006-07-31 2008-12-30 Metaram, Inc. Interface circuit system and method for performing power management operations utilizing power management signals
US7580312B2 (en) * 2006-07-31 2009-08-25 Metaram, Inc. Power saving system and method for use with a plurality of memory circuits
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8327104B2 (en) * 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US7386656B2 (en) * 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
EP1750396A1 (en) * 2005-08-03 2007-02-07 Siemens Aktiengesellschaft Method and communication device for transmitting packet-oriented information
US7734839B1 (en) * 2005-08-25 2010-06-08 American Megatrends, Inc. Method and integrated circuit for providing enclosure management services utilizing multiple interfaces and protocols
JP5242397B2 (ja) * 2005-09-02 2013-07-24 メタラム インコーポレイテッド Dramをスタックする方法及び装置
US20070109015A1 (en) * 2005-11-15 2007-05-17 Alcatel Switched integrated circuit connection architectures and techniques
US7673199B2 (en) 2006-02-03 2010-03-02 Teradyne, Inc. Multi-stream interface for parallel test processing
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
US7904519B2 (en) * 2006-02-21 2011-03-08 Alcatel-Lucent Usa Inc. Method for switching between embedded communications and external communications
DE102006025133A1 (de) * 2006-05-30 2007-12-06 Infineon Technologies Ag Speicher- und Speicherkommunikationssystem
US7610408B2 (en) * 2006-06-29 2009-10-27 Agilent Technologies, Inc. Automatic link commissioning
US20080025136A1 (en) * 2006-07-31 2008-01-31 Metaram, Inc. System and method for storing at least a portion of information received in association with a first operation for use in performing a second operation
US20080028137A1 (en) * 2006-07-31 2008-01-31 Schakel Keith R Method and Apparatus For Refresh Management of Memory Modules
US20080028135A1 (en) * 2006-07-31 2008-01-31 Metaram, Inc. Multiple-component memory interface system and method
US7724589B2 (en) * 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
US9455953B2 (en) * 2006-10-11 2016-09-27 Lantiq Beteiligungs-GmbH & Co. KG Router chip and method of selectively blocking network traffic in a router chip
WO2008060948A2 (en) * 2006-11-10 2008-05-22 Sandbridge Technologies, Inc. Method and system for parallelization of pipelined computations
US7917599B1 (en) 2006-12-15 2011-03-29 The Research Foundation Of State University Of New York Distributed adaptive network memory engine
US20080163358A1 (en) * 2007-01-03 2008-07-03 Texas Instruments Incorporated Initiator and target firewalls
US8307416B2 (en) * 2007-01-03 2012-11-06 Texas Instruments Incorporated Data structures for use in firewalls
KR100855701B1 (ko) * 2007-01-26 2008-09-04 엠텍비젼 주식회사 복수의 프로세서 코어가 통합된 칩 및 데이터 처리 방법
US7925798B2 (en) * 2007-01-26 2011-04-12 Lantiq Deutschland Gmbh Data packet processing device
CN101918931B (zh) * 2007-02-02 2013-09-04 普西迈斯特公司 具有集成高速分组交换串行接口的处理器芯片架构
KR100881191B1 (ko) * 2007-03-27 2009-02-05 삼성전자주식회사 멀티 프로토콜 씨리얼 인터페이스 장치 및 그에 따른soc 장치
US7562162B2 (en) * 2007-04-25 2009-07-14 At&T Intellectual Property I, L.P. Systems and methods for distributed computing utilizing a smart memory apparatus
JP2008287308A (ja) * 2007-05-15 2008-11-27 Toshiba Corp ブリッジプログラム、ブリッジ方法、シミュレータ
US8209479B2 (en) * 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
US7925794B2 (en) * 2007-08-17 2011-04-12 At&T Intellectual Property I, L.P. Systems and methods for localizing a network storage device
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8125796B2 (en) 2007-11-21 2012-02-28 Frampton E. Ellis Devices with faraday cages and internal flexibility sipes
WO2009108902A2 (en) * 2008-02-29 2009-09-03 Atrato, Inc. Storage system front end
US7827334B2 (en) * 2008-06-26 2010-11-02 Triune Ip Llc Protocol method apparatus and system for the interconnection of electronic systems
EP2150021B1 (en) * 2008-07-30 2013-12-11 Alcatel Lucent Network apparatus for a communication network and method for assembling it
US8250281B2 (en) * 2008-10-15 2012-08-21 International Business Machines Corporation Data communications through a host fibre channel adapter
US9946667B2 (en) * 2008-11-12 2018-04-17 Microchip Technology Incorporated Microcontroller with configurable logic array
US8051228B2 (en) * 2008-11-13 2011-11-01 International Business Machines Corporation Physical interface macros (PHYS) supporting heterogeneous electrical properties
US8332552B2 (en) * 2008-11-13 2012-12-11 International Business Machines Corporation Supporting multiple high bandwidth I/O controllers on a single chip
US20100191911A1 (en) * 2008-12-23 2010-07-29 Marco Heddes System-On-A-Chip Having an Array of Programmable Processing Elements Linked By an On-Chip Network with Distributed On-Chip Shared Memory and External Shared Memory
WO2010074872A1 (en) * 2008-12-23 2010-07-01 Transwitch Corporation System-on-a-chip and multi-chip systems supporting advanced telecommunications and other data processing applications
US20100158005A1 (en) * 2008-12-23 2010-06-24 Suvhasis Mukhopadhyay System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions
US20100162265A1 (en) * 2008-12-23 2010-06-24 Marco Heddes System-On-A-Chip Employing A Network Of Nodes That Utilize Logical Channels And Logical Mux Channels For Communicating Messages Therebetween
US20100158023A1 (en) * 2008-12-23 2010-06-24 Suvhasis Mukhopadhyay System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions
US20100161938A1 (en) * 2008-12-23 2010-06-24 Marco Heddes System-On-A-Chip Supporting A Networked Array Of Configurable Symmetric Multiprocessing Nodes
US8260976B1 (en) 2009-01-30 2012-09-04 American Megatrends, Inc. Multiple frequency state detection for serial I/O interfaces
US9218290B2 (en) * 2009-04-27 2015-12-22 Intel Corporation Data caching in a network communications processor architecture
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
EP2247154B1 (en) * 2009-04-27 2012-05-16 Telefonaktiebolaget L M Ericsson (PUBL) Technique for coordinated RLC and PDCP processing
US9444757B2 (en) 2009-04-27 2016-09-13 Intel Corporation Dynamic configuration of processing modules in a network communications processor architecture
EP2247020B1 (en) * 2009-04-27 2012-01-04 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Technique for performing layer 2 processing using a distributed memory architecture
DE102009023199A1 (de) * 2009-05-29 2010-12-02 Siemens Aktiengesellschaft Kommunikationssystem
WO2010144624A1 (en) * 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
US9069929B2 (en) 2011-10-31 2015-06-30 Iii Holdings 2, Llc Arbitrating usage of serial port in node card of scalable and modular servers
US20130107444A1 (en) 2011-10-28 2013-05-02 Calxeda, Inc. System and method for flexible storage and networking provisioning in large scalable processor installations
US9077654B2 (en) 2009-10-30 2015-07-07 Iii Holdings 2, Llc System and method for data center security enhancements leveraging managed server SOCs
US20110103391A1 (en) 2009-10-30 2011-05-05 Smooth-Stone, Inc. C/O Barry Evans System and method for high-performance, low-power data center interconnect fabric
US9465771B2 (en) 2009-09-24 2016-10-11 Iii Holdings 2, Llc Server on a chip and node cards comprising one or more of same
US9876735B2 (en) 2009-10-30 2018-01-23 Iii Holdings 2, Llc Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect
US9054990B2 (en) 2009-10-30 2015-06-09 Iii Holdings 2, Llc System and method for data center security enhancements leveraging server SOCs or server fabrics
US8599863B2 (en) 2009-10-30 2013-12-03 Calxeda, Inc. System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
US9680770B2 (en) 2009-10-30 2017-06-13 Iii Holdings 2, Llc System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9648102B1 (en) 2012-12-27 2017-05-09 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9311269B2 (en) 2009-10-30 2016-04-12 Iii Holdings 2, Llc Network proxy for high-performance, low-power data center interconnect fabric
US8270420B2 (en) * 2009-12-15 2012-09-18 Hewlett-Packard Development Company, L.P. iSCSI to FCoE gateway
US9015333B2 (en) 2009-12-18 2015-04-21 Cisco Technology, Inc. Apparatus and methods for handling network file operations over a fibre channel network
US8639769B2 (en) * 2009-12-18 2014-01-28 International Business Machines Corporation Handling of data transfer in a LAN-free environment
US8429735B2 (en) 2010-01-26 2013-04-23 Frampton E. Ellis Method of using one or more secure private networks to actively configure the hardware of a computer or microchip
CN101808123B (zh) * 2010-03-09 2013-04-17 浪潮(北京)电子信息产业有限公司 在存储系统中访问存储资源的方法和装置
US9158713B1 (en) * 2010-04-07 2015-10-13 Applied Micro Circuits Corporation Packet processing with dynamic load balancing
US8611352B2 (en) 2010-04-20 2013-12-17 Marvell World Trade Ltd. System and method for adapting a packet processing pipeline
US20130151750A1 (en) * 2010-08-19 2013-06-13 Balaji Kanigicherla Multi-root input output virtualization aware switch
US8789170B2 (en) 2010-09-24 2014-07-22 Intel Corporation Method for enforcing resource access control in computer systems
GB2484901A (en) * 2010-10-21 2012-05-02 Bluwireless Tech Ltd Data processing unit with scalar processor, vector processor array, parity and FFT accelerator units
WO2012052774A2 (en) 2010-10-21 2012-04-26 Bluwireless Technology Limited Data processing units
GB2484900A (en) * 2010-10-21 2012-05-02 Bluwireless Tech Ltd Data processing unit with scalar processor, vector processor array, parity and FFT accelerator units
US9674318B2 (en) 2010-12-09 2017-06-06 Solarflare Communications, Inc. TCP processing for devices
US8996644B2 (en) 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US9258390B2 (en) 2011-07-29 2016-02-09 Solarflare Communications, Inc. Reducing network latency
US10873613B2 (en) 2010-12-09 2020-12-22 Xilinx, Inc. TCP processing for devices
US9600429B2 (en) 2010-12-09 2017-03-21 Solarflare Communications, Inc. Encapsulated accelerator
CN102202058B (zh) * 2011-05-19 2013-11-06 中国兵器工业集团第二一四研究所苏州研发中心 多路uart总线与can总线之间协议转换控制器
US9380132B2 (en) 2011-06-27 2016-06-28 Marvell Israel (M.I.S.L.) Ltd. FCoE over trill
US9170952B1 (en) * 2011-12-28 2015-10-27 Altera Corporation Configurable multi-standard device interface
JP5930767B2 (ja) * 2012-02-23 2016-06-08 キヤノン株式会社 電子デバイス、通信制御方法
CN103635894A (zh) 2012-05-11 2014-03-12 松下电器产业株式会社 总线控制装置、总线控制系统以及网络接口
US9390042B2 (en) * 2012-07-03 2016-07-12 Nvidia Corporation System and method for sending arbitrary packet types across a data connector
DE102012215765A1 (de) * 2012-09-05 2014-05-15 Robert Bosch Gmbh Gateway-Modul für ein Kommunikationssystem, Kommunikationssystem und Verfahren zur Übertragung von Daten zwischen Teilnehmern eines Kommunikationssystems
WO2014041395A1 (en) 2012-09-12 2014-03-20 Freescale Semiconductor, Inc. System-on-chip device, method of peripheral access and integrated circuit
US10505747B2 (en) 2012-10-16 2019-12-10 Solarflare Communications, Inc. Feed processing
US9129071B2 (en) * 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
US20140120845A1 (en) * 2012-10-30 2014-05-01 Anayas360.Com, Llc Low noise and loss biasing circuit
US9424228B2 (en) 2012-11-01 2016-08-23 Ezchip Technologies Ltd. High performance, scalable multi chip interconnect
WO2014080247A1 (en) * 2012-11-23 2014-05-30 Freescale Semiconductor, Inc. System on chip
WO2014080248A1 (en) 2012-11-23 2014-05-30 Freescale Semiconductor, Inc. System on chip
US9135202B2 (en) 2013-02-06 2015-09-15 Apple Inc. Bridge circuit for bus protocol conversion and error handling
DE102013210182A1 (de) * 2013-05-29 2014-12-04 Robert Bosch Gmbh Verfahren zur Bereitstellung einer generischen Schnittstelle sowie Mikrocontroller mit generischer Schnittstelle
DE102013210077A1 (de) * 2013-05-29 2014-12-04 Robert Bosch Gmbh Verfahren zur Bereitstellung einer generischen Schnittstelle sowie Mikrocontroller mit generischer Schnittstelle
DE102013210064A1 (de) * 2013-05-29 2014-12-04 Robert Bosch Gmbh Verfahren zur Bereitstellung einer generischen Schnittstelle sowie Mikrocontroller mit generischer Schnittstelle
WO2014207572A2 (en) 2013-06-19 2014-12-31 Schneider Electric Industries Sas Universal ethernet solution
US9781120B2 (en) 2013-07-18 2017-10-03 Nxp Usa, Inc. System on chip and method therefor
US9436844B2 (en) 2013-08-29 2016-09-06 Microsoft Technology Licensing, Llc Access enablement security circuit
US9716708B2 (en) 2013-09-13 2017-07-25 Microsoft Technology Licensing, Llc Security certificates for system-on-chip security
DE102014209006A1 (de) * 2014-05-13 2015-11-19 Wobben Properties Gmbh Synchrongenerator einer getriebelosen Windenergieanlage
US9971730B2 (en) 2014-06-16 2018-05-15 Qualcomm Incorporated Link layer to physical layer (PHY) serial interface
DE102014217321A1 (de) * 2014-08-29 2016-03-03 Continental Teves Ag & Co. Ohg Mikrocontrollersystem und Verfahren für sicherheitskritische Kraftfahrzeugsysteme sowie deren Verwendung
US9690719B2 (en) 2014-09-11 2017-06-27 Nxp Usa, Inc. Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof
EP4366171A2 (en) * 2014-10-02 2024-05-08 Altera Corporation Integrated circuit device with embedded programmable logic
US10523585B2 (en) 2014-12-19 2019-12-31 Amazon Technologies, Inc. System on a chip comprising multiple compute sub-systems
US10394731B2 (en) 2014-12-19 2019-08-27 Amazon Technologies, Inc. System on a chip comprising reconfigurable resources for multiple compute sub-systems
US11200192B2 (en) * 2015-02-13 2021-12-14 Amazon Technologies. lac. Multi-mode system on a chip
US9588921B2 (en) 2015-02-17 2017-03-07 Amazon Technologies, Inc. System on a chip comprising an I/O steering engine
US9860841B2 (en) * 2015-08-20 2018-01-02 Apple Inc. Communications fabric with split paths for control and data packets
US10275385B2 (en) * 2016-02-25 2019-04-30 SK Hynix Inc. Integrated circuit system
FI127266B (en) 2016-07-08 2018-02-28 Sarokal Test Systems Oy A system for processing data stream messages
JP6786324B2 (ja) * 2016-09-20 2020-11-18 株式会社東芝 多重化装置及び多重化方法
US11055657B2 (en) 2017-03-02 2021-07-06 Micron Technology, Inc. Methods and apparatuses for determining real-time location information of RFID devices
US10075392B1 (en) 2017-03-02 2018-09-11 Micron Technology, Inc. Methods and apparatuses for processing multiple communications signals with a single integrated circuit chip
US10516606B2 (en) 2017-07-12 2019-12-24 Micron Technology, Inc. System for optimizing routing of communication between devices and resource reallocation in a network
US10511353B2 (en) * 2017-07-12 2019-12-17 Micron Technology, Inc. System for optimizing routing of communication between devices and resource reallocation in a network
EP3704595A4 (en) * 2017-10-31 2021-12-22 Micron Technology, Inc. SYSTEM WITH A HYBRID THREADING PROCESSOR, HYBRID THREADING MATRIX WITH CONFIGURABLE COMPUTER ELEMENTS AND HYBRID CONNECTION NETWORK
WO2019089816A2 (en) * 2017-10-31 2019-05-09 Micron Technology, Inc. System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network
US11115383B2 (en) * 2018-05-24 2021-09-07 Texas Instruments Incorporated System on chip firewall memory architecture
TWI666647B (zh) * 2018-09-03 2019-07-21 瑞昱半導體股份有限公司 記憶體裝置
US11030102B2 (en) 2018-09-07 2021-06-08 Apple Inc. Reducing memory cache control command hops on a fabric
US11138135B2 (en) * 2018-09-20 2021-10-05 Samsung Electronics Co., Ltd. Scale-out high bandwidth memory system
KR20200066774A (ko) 2018-12-03 2020-06-11 삼성전자주식회사 반도체 장치
CN109634894A (zh) * 2018-12-06 2019-04-16 英业达科技有限公司 数据转换电路及数据转换方法
US10860325B1 (en) 2019-07-05 2020-12-08 Nokia Solutions And Networks Oy Dynamic control of processor instruction sets
CN114868372A (zh) * 2019-11-12 2022-08-05 马维尔亚洲私人有限公司 具有集中式存储的汽车网络
TWI758675B (zh) * 2019-12-31 2022-03-21 新唐科技股份有限公司 微控制電路及印刷電路板
CN112187936B (zh) * 2020-09-29 2024-03-29 北京车和家信息技术有限公司 车辆数据处理方法、装置、设备、存储介质及车辆
US11347512B1 (en) * 2021-02-03 2022-05-31 International Business Machines Corporation Substitution through protocol to protocol translation
US20230065780A1 (en) * 2021-08-27 2023-03-02 International Business Machines Corporation Message management via a universal interface apparatus

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4633394A (en) * 1984-04-24 1986-12-30 International Business Machines Corp. Distributed arbitration for multiple processors
US4751634A (en) * 1985-06-14 1988-06-14 International Business Machines Corporation Multiple port communications adapter apparatus
US4829511A (en) * 1987-10-14 1989-05-09 International Business Machines Corporation Switched network of optical buses
US4929939A (en) * 1988-10-31 1990-05-29 International Business Machines Corporation High-speed switching system with flexible protocol capability
US4952930A (en) * 1988-11-18 1990-08-28 International Business Machines Corp. Multipath hierarchical network
JP2986802B2 (ja) * 1989-03-13 1999-12-06 株式会社日立製作所 プロトコル高速処理方法
DE3930396C2 (de) 1989-09-12 1993-11-04 Bosch Gmbh Robert Verfahren zum einstellen von luft- und kraftstoffmengen fuer eine mehrzylindrige brennkraftmaschine
FR2667465A1 (fr) * 1990-09-27 1992-04-03 Cit Alcatel Pont pour relier un reseau local, conforme a la norme ieee 802.3, a un reseau de telecommunication a technique temporelle asynchrone.
US5250943A (en) * 1991-03-29 1993-10-05 International Business Machines Corporation GVT-NET--A Global Virtual Time Calculation Apparatus for Multi-Stage Networks
US5189314A (en) * 1991-09-04 1993-02-23 International Business Machines Corporation Variable chip-clocking mechanism
JP2571655B2 (ja) * 1991-11-27 1997-01-16 インターナショナル・ビジネス・マシーンズ・コーポレイション プロトコル変換機構、交換ネットワーク及びコンピュータ・システム
US5195181A (en) * 1992-01-10 1993-03-16 Digital Equipment Corporation Message processing system having separate message receiving and transmitting processors with message processing being distributed between the separate processors
US5742760A (en) * 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
US5640399A (en) * 1993-10-20 1997-06-17 Lsi Logic Corporation Single chip network router
US5708659A (en) * 1993-10-20 1998-01-13 Lsi Logic Corporation Method for hashing in a packet network switching system
US5586273A (en) * 1994-08-18 1996-12-17 International Business Machines Corporation HDLC asynchronous to synchronous converter
JPH08292932A (ja) 1995-02-24 1996-11-05 Matsushita Electric Ind Co Ltd マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法
US5838935A (en) * 1995-06-15 1998-11-17 Intel Corporation Method and apparatus providing programmable decode modes for secondary PCI bus interfaces
US5651002A (en) * 1995-07-12 1997-07-22 3Com Corporation Internetworking device with enhanced packet header translation and memory
EP0789882B1 (en) 1995-07-21 2000-10-04 Koninklijke Philips Electronics N.V. Multi-media processor architecture with high performance-density
US5798918A (en) * 1996-04-29 1998-08-25 International Business Machines Corporation Performance-temperature optimization by modulating the switching factor of a circuit
JP3636399B2 (ja) * 1996-05-29 2005-04-06 富士通株式会社 プロトコル変換システム及びプロトコル変換方法
JPH10161973A (ja) 1996-11-29 1998-06-19 Hitachi Ltd バス制御装置およびバスユニット
DE19782200B4 (de) 1996-12-19 2011-06-16 Magnachip Semiconductor, Ltd. Maschine zur Videovollbildaufbereitung
US5905873A (en) * 1997-01-16 1999-05-18 Advanced Micro Devices, Inc. System and method of routing communications data with multiple protocols using crossbar switches
US5931933A (en) * 1997-06-16 1999-08-03 International Business Machines Corporation Apparatus and method for communication and translation for selected one of a variety of data bus formats
US6032245A (en) * 1997-08-18 2000-02-29 International Business Machines Corporation Method and system for interrupt handling in a multi-processor computer system executing speculative instruction threads
US6055581A (en) * 1997-08-18 2000-04-25 International Business Machines Corporation Vital product data concentrator and protocol converter
US6065038A (en) * 1998-02-06 2000-05-16 Accton Technology Corp. Method and apparatus for transmitting data at different data transfer rates using multiple interconnected hubs
US6088800A (en) * 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US6038630A (en) * 1998-03-24 2000-03-14 International Business Machines Corporation Shared access control device for integrated system with multiple functional units accessing external structures over multiple data buses
JP2000004273A (ja) 1998-04-16 2000-01-07 Toshiba Corp 通信プラットフォームlsiシステム、及び同システムに用いられる通信プラットフォームlsi、並びに同システムに於けるその通信制御方法
US7100020B1 (en) * 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
US6331977B1 (en) * 1998-08-28 2001-12-18 Sharp Electronics Corporation System on chip (SOC) four-way switch crossbar system and method
US6385748B1 (en) * 1999-03-30 2002-05-07 Nec Electronics, Inc. Direct access logic testing in integrated circuits
US6262594B1 (en) * 1999-11-05 2001-07-17 Ati International, Srl Apparatus and method for configurable use of groups of pads of a system on chip
US6769046B2 (en) * 2000-02-14 2004-07-27 Palmchip Corporation System-resource router
US7032223B2 (en) * 2000-03-01 2006-04-18 Realtek Semiconductor Corp. Transport convergence sub-system with shared resources for multiport xDSL system
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
JP2001325207A (ja) 2000-05-17 2001-11-22 Hitachi Ltd キャッシュ内蔵型スイッチおよび計算機システムおよびキャッシュ内蔵型スイッチのスイッチ制御方法
JP4694092B2 (ja) * 2000-06-02 2011-06-01 ラディシス・コーポレーション エコー・キャンセレーションのないvoip通信
US6678535B1 (en) * 2000-06-30 2004-01-13 International Business Machines Corporation Pervasive dock and router with communication protocol converter
US6721313B1 (en) * 2000-08-01 2004-04-13 International Business Machines Corporation Switch fabric architecture using integrated serdes transceivers
US6662253B1 (en) * 2000-09-13 2003-12-09 Stmicroelectronics, Inc. Shared peripheral architecture
US7218616B2 (en) * 2001-03-09 2007-05-15 Stmicroelectronics, Inc. Octagonal interconnection network for linking processing nodes on an SOC device and method of operating same
US20020172197A1 (en) * 2001-05-18 2002-11-21 Dale Michele Zampetti System interconnect with minimal overhead suitable for real-time applications
US20020174244A1 (en) * 2001-05-18 2002-11-21 Telgen Corporation System and method for coordinating, distributing and processing of data
GB2376390B (en) * 2001-06-05 2003-08-06 3Com Corp Asic system architecture including data aggregation technique
US20030046492A1 (en) * 2001-08-28 2003-03-06 International Business Machines Corporation, Armonk, New York Configurable memory array
US7404000B2 (en) 2001-09-28 2008-07-22 Emc Corporation Protocol translation in a storage system
US6904040B2 (en) * 2001-10-05 2005-06-07 International Business Machines Corporaiton Packet preprocessing interface for multiprocessor network handler
US7072970B2 (en) * 2001-10-05 2006-07-04 International Business Machines Corporation Programmable network protocol handler architecture
US7013398B2 (en) * 2001-11-15 2006-03-14 Nokia Corporation Data processor architecture employing segregated data, program and control buses
US6920154B1 (en) * 2001-12-17 2005-07-19 Supergate Technology Usa, Inc. Architectures for a modularized data optimization engine and methods therefor
US7412588B2 (en) * 2003-07-25 2008-08-12 International Business Machines Corporation Network processor system on chip with bridge coupling protocol converting multiprocessor macro core local bus to peripheral interfaces coupled system bus
US7826470B1 (en) * 2004-10-19 2010-11-02 Broadcom Corp. Network interface device with flow-oriented bus interface

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ALLEN J R, 'IBM PowerNP network processor: Hardware, software and applications' (2003. 5.)

Also Published As

Publication number Publication date
US8811422B2 (en) 2014-08-19
KR100754578B1 (ko) 2007-09-05
KR20050012677A (ko) 2005-02-02
WO2005013143A3 (en) 2005-06-30
KR20060110858A (ko) 2006-10-25
US7412588B2 (en) 2008-08-12
US20120082171A1 (en) 2012-04-05
US8036243B2 (en) 2011-10-11
US20050021874A1 (en) 2005-01-27
US20090059955A1 (en) 2009-03-05
WO2005013143A2 (en) 2005-02-10
EP1654669A2 (en) 2006-05-10

Similar Documents

Publication Publication Date Title
KR100986006B1 (ko) 마이크로프로세서 서브시스템
JP4542845B2 (ja) システム・オン・チップ設計のための構成要素としての自己完結型プロセッサ・サブシステムおよびネットワーク・プロセッサ
EP3400688B1 (en) Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications
US8127112B2 (en) SIMD array operable to process different respective packet protocols simultaneously while executing a single common instruction stream
US8924688B2 (en) Plural processing cores communicating packets with external port via parallel bus to serial converter and switch with protocol translation and QOS
WO2006069126A2 (en) Method and apparatus to support multiple memory banks with a memory block
Kavaldjiev et al. A survey of efficient on-chip communications for soc
EP1346549B1 (en) Intercommunication preprocessor
JP4088611B2 (ja) シングル・チップ・プロトコル・コンバーター
Furuta et al. Spatial-temporal mapping of real applications on a dynamically reconfigurable logic engine (DRLE) LSI
Cao et al. Design of hpc node with heterogeneous processors
Lv et al. Transparent Buffer Management: An Intra-cluster Task Scheduling Method Based on Dynamic Virtual Channel
SHERMI et al. A Novel Architecture of Bidirectional NoC Router with Flexible Buffer
Matos et al. Reconfigurable intercommunication infrastructure: NoCs
Salapura et al. A Multiprocessor System-on-a-Chip Design Methodology for Networking Applications

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: 20130813

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140814

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150827

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160831

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 10