KR20210038560A - 고정 pcie 물리적 전송 네트워크를 통한 논리적 전송 - Google Patents

고정 pcie 물리적 전송 네트워크를 통한 논리적 전송 Download PDF

Info

Publication number
KR20210038560A
KR20210038560A KR1020217003145A KR20217003145A KR20210038560A KR 20210038560 A KR20210038560 A KR 20210038560A KR 1020217003145 A KR1020217003145 A KR 1020217003145A KR 20217003145 A KR20217003145 A KR 20217003145A KR 20210038560 A KR20210038560 A KR 20210038560A
Authority
KR
South Korea
Prior art keywords
transaction layer
logical
network
packet
pcie
Prior art date
Application number
KR1020217003145A
Other languages
English (en)
Inventor
밀린드 미탈
키란 에스. 푸라닉
자이딥 다스티다르
Original Assignee
자일링크스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20210038560A publication Critical patent/KR20210038560A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5651Priority, marking, classes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5652Cell construction, e.g. including header, packetisation, depacketisation, assembly, reassembly
    • H04L2012/566Cell construction, e.g. including header, packetisation, depacketisation, assembly, reassembly using the ATM layer
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하는 방법 및 시스템이 개시된다. 시스템은 제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층에 위치된 가상 채널을 지정한다. 시스템은 제 1 트랜잭션 계층에 의해 또한 인식가능한 트랜잭션 계층 패킷을 제 2 네트워크 프로토콜의 제 2 논리적 트랜잭션 계층에 어셈블링한다. 시스템은 제 2 논리적 트랜잭션 계층으로부터 가상 채널로 트랜잭션 계층 패킷을 전송한다. 시스템은 네트워크를 통해 지정된 가상 채널을 사용하여 제 1 트랜잭션 계층을 통해 트랜잭션 계층 패킷을 전송한다.

Description

고정 PCIE 물리적 전송 네트워크를 통한 논리적 전송
본 개시의 예는 일반적으로 컴퓨팅 시스템의 버스 아키텍처에 관한 것으로, 특히 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하는 것에 관한 것이다.
개인용 컴퓨터 및 서버 아키텍처는 시간이 지남에 따라 점점 정교해지는 버스 시스템을 이용(employ)했다. PCI(Peripheral Component Interconnect) 버스는 이전 버스 구현에 비해 많은 장점을 제공했다. 가장 중요한 것은 프로세서 독립성, 버퍼형 분리, 버스 마스터링 및 진정한 플러그 앤 플레이 동작이었다. 버퍼형 분리는 본질적으로 PCI 버스로부터 중앙 처리 장치(central processing unit; CPU) 로컬 버스를 전기적으로 그리고 클럭 도메인별로 모두 분리한다. 디바이스를 자동으로 검출하고 구성할 수 있는 플러그 앤 플레이 동작은 ISA(Industry Standard Architecture) 기반 보드 사용자를 좌절시키는 기본 주소에 대한 스위치 및 점퍼의 수동 설정 및 직접 메모리 액세스(direct memory access; DMA) 인터럽트를 제거하였다.
PCI는 큰 성공을 거두었지만, 대역폭 제한, 호스트 핀 수 제한, 등시성 데이터 전송과 같은 실시간 데이터 전송 서비스 부족, 및 서비스 품질, 전원 관리, 캐시 일관성 및 I/O 가상화와 같은 차세대 입출력(I/O) 요구 사항을 충족하기 위한 기능 부족을 비롯한 일련의 문제에 직면해 있다. 서비스 품질 측정 및 전원 관리와 같은 차세대 I/O 요구 사항은 데이터 무결성을 개선하고 시스템 디바이스의 선택적 전원 차단을 허용하며, 이는 최신 PC에 필요한 전력량이 계속 증가함에 따라 중요한 고려 사항이다. 이러한 기능 중 일부는 종래의 PCI 요구 사항 이상의 소프트웨어 제어를 필요로 하며, OS 및 디바이스 드라이버 지원을 사용할 수 있을 때까지 사용할 수 없다.
PCIe(Peripheral Component Interface Express)는 종래의 PCI 구현의 많은 격차를 메웠지만, PCIe는 명령 기능, 라우팅 및 캐시 일관성 부족과 관련하여 특정한 제한이 있다. 일반적으로, 로드/저장 또는 일관성 시맨틱(semantics)을 가진 프로토콜은 로드/저장을 수행하는 디바이스의 소스에 관계없이, 기능적 정확성을 유지하기 위해, 해당 주소 위치에 대한 동작/이벤트 사이에 동일한 주소의 순서화를 요구한다. 캐시 일관성은 여러 로컬 캐시에 저장된 공유 자원 데이터의 균일성이다. 시스템의 클라이언트가 공통 메모리 자원의 캐시를 유지할 때, 일관성 없는 데이터로 인해 문제가 발생할 수 있으며, 이는 특히 다중 처리 시스템의 CPU의 경우에 해당한다.
PCIe 버스 기반 아키텍처에서 로드/저장 또는 캐시 일관성 시맨틱 부족을 극복하는 한 가지 옵션은, PCIe 버스와 동일하거나 추가의 장점을 갖는 캐시 일관성 있는 버스 아키텍처로 PCIe 버스와 관련된 모든 하드웨어 및 소프트웨어를 교체하는 것이다. 그러나, 하드웨어의 완전한 교체는 비용이 많이 들고, 시간이 많이 소요되며, 오류가 발생하기 쉽다.
따라서, 기본 버스 구조의 모든 물리 계층 하드웨어를 교체하지 않고 기존의 버스 아키텍처에 부분적으로 오버레이될 수 있는 캐시 일관성 있는 버스 아키텍처를 제공하는 것이 바람직하다.
기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하는 기술이 개시된다. 예에서, 방법은 제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층(transaction layer)에 위치된 가상 채널을 지정하는 단계, 제 2 네트워크 프로토콜의 제 2 논리적 트랜잭션 계층에 트랜잭션 계층 패킷을 어셈블링하는 단계, 및 제 2 논리적 트랜잭션 계층으로부터 가상 채널로 트랜잭션 계층 패킷을 전송하는 단계를 포함한다. 방법은 또한 네트워크를 통해 가상 채널을 사용하여 제 1 트랜잭션 계층을 통해 트랜잭션 계층 패킷을 전송하는 단계를 포함한다.
일부 실시예들에서, 트랜잭션 계층 패킷은 제 1 트랜잭션 계층이 인식할 수 있는 서드 파티 식별자(third party identifier), 및 제 2 논리적 트랜잭션 계층이 인식할 수 있는 서드 파티 메시지 유형 및 서드 파티 헤더를 포함한다.
일부 실시예들에서, 제 1 트랜잭션 계층은 제 1 네트워크 프로토콜을 따르는 데이터 링크 계층 및 물리 계층을 통해 트랜잭션 계층 패킷을 전송한다.
일부 실시예들에서, 제 2 논리적 트랜잭션 계층은 물리 계층의 기존 특성(properties)을 활용(leverage)하지만, 제 2 논리적 트랜잭션 계층에 고유한 서비스 클래스(COS) 속성(attributes)을 이용한다.
일부 실시예들에서, COS 속성은 저 레이턴시 속성(low latency attributes) 및 프로토콜 속성 중 적어도 하나이다.
일부 실시예들에서, 트랜잭션 계층 패킷 내에 포함된 적어도 하나의 속성은 제 1 트랜잭션 계층이 인식할 수 없지만, 패킷의 나머지 필드는 제 1 트랜잭션 계층에 의해 인식가능하다.
일부 실시예들에서, 패킷의 나머지 필드는 제 2 논리적 트랜잭션 계층에 고유하다.
일부 실시예들에서, 제 2 네트워크 프로토콜은 로드/저장 시맨틱을 포함한다.
일부 실시예들에서, 제 1 네트워크 프로토콜은 PCIe 프로토콜이고, 제 2 네트워크 프로토콜은 CCIX 프로토콜이다.
일부 실시예들에서, 제 2 논리적 트랜잭션 계층은 순차적 패킷 전달(in-order packet delivery)을 제공한다.
다른 예에서, 방법은 제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층에 위치된 트랜잭션 계층 패킷을 수신하는 단계, 및 제 2 네트워크 프로토콜을 따르는 제 2 논리적 트랜잭션 계층에 의해 사용되도록 지정된 트랜잭션 계층 패킷을 제 1 트랜잭션 계층에 위치된 가상 채널로부터 추출하는 단계를 포함한다. 방법은 또한 제 2 논리적 트랜잭션 계층이 인식할 수 있는 제 2 네트워크 프로토콜을 따르는 트랜잭션 계층 패킷을 어셈블링하는 단계, 및 가상 채널로부터 제 2 논리적 트랜잭션 계층으로 트랜잭션 계층 패킷을 전송하는 단계를 포함한다.
다른 예에서, 시스템은 기존의 물리적 전송 네트워크에 논리적 트랜잭션 네트워크를 투명하게 오버레이한다. 시스템은 컴퓨터 프로세서 및 컴퓨터 프로세서에 결합된 메모리를 포함한다. 컴퓨터 프로세서는 제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층에 위치된 가상 채널을 지정하고, 제 2 네트워크 프로토콜의 제 2 논리적 트랜잭션 계층에 트랜잭션 계층 패킷을 어셈블링하며, 제 2 논리적 트랜잭션 계층으로부터 가상 채널로 트랜잭션 계층 패킷을 전송하기 위해 메모리에 위치된 코드를 실행하도록 구성된다. 컴퓨터 프로세서는 또한 네트워크를 통해 가상 채널을 사용하여 제 1 트랜잭션 계층을 통해 트랜잭션 계층 패킷을 전송하도록 구성된다.
이들 및 다른 양태들은 다음의 상세한 설명을 참조하여 이해될 수 있다.
상기 나열된 특징들이 상세하게 이해될 수 있는 방식으로, 위에서 간략하게 요약된 보다 구체적인 설명은 예시적인 구현예들을 참조하여 이루어질 수 있으며, 이들 중 일부는 첨부된 도면에 도시되어 있다. 그러나, 첨부된 도면은 단지 전형적인 예시적인 구현예들을 나타내므로 그 범위를 제한하는 것으로 간주되어서는 안 된다는 것을 유념해야 한다.
도 1은 일 예에 따라 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하기 위한 시스템을 나타내는 블록도이다.
도 2는 PCIe 디바이스가 PCIe를 통해 로드/저장 및 일관성 시맨틱을 가질 수 있도록 하는 CCIX 기능을 갖는 PCIe 디바이스를 도시한다.
도 3은 PCIe 패킷의 레이아웃을 도시한다.
도 4는 트리 토폴로지를 갖는 PCIe 네트워크의 블록도이다.
도 5는 일 예에 따라 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하기 위한 제 1 방법을 나타내는 흐름도이다.
도 6은 일 예에 따라 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하기 위한 방법을 나타내는 흐름도이다.
도 7은 일 예에 따라 프로그램가능 IC를 나타내는 블록도이다.
도 8은 일 예에 따라 프로그램가능 IC의 시스템 온 칩(System-on-Chip; SoC) 구현을 나타내는 블록도이다.
도 9는 일 예에 따라 프로그램가능 IC의 필드 프로그램가능 게이트 어레이(field programmable gate array; FPGA) 구현을 도시한다.
이해를 용이하게 하기 위해, 가능한 경우 도면에 공통인 동일한 요소를 지정하기 위해 동일한 참조 번호가 사용되었다. 하나의 예의 요소들이 다른 예들에 유리하게 통합될 수 있음이 고려된다.
본 명세서에서, 도면을 참조하여 다양한 특징들이 설명된다. 도면은 실적도로 도시되거나 도시되지 않을 수 있고, 유사한 구조 또는 기능의 요소들은 도면 전체에 걸쳐 동일한 참조 번호로 표시됨을 유념해야 한다. 도면은 단지 특징들의 설명을 용이하게 하기 위해 의도된 것임을 유념해야 한다. 이들은 청구된 발명의 완전한 설명 또는 청구된 발명의 범위에 대한 제한으로서 의도되지 않는다. 또한, 도시된 예는 도시된 모든 양태들 또는 장점들을 가질 필요는 없다. 특정 예와 관련하여 설명된 양태 또는 장점은 반드시 그 예로 제한되는 것이 아니며, 도시되지 않았거나 또는 명시적으로 설명되지 않은 경우에도 임의의 다른 예에서 실시될 수 있다.
기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하는 기술이 개시된다. 결합된 논리적/물리적 전송 네트워크는 물리적 전송의 기존 특성을 활용하지만, 물리적 전송 네트워크를 통해 기본적으로 사용할 수 없는 해당 논리적 전송 네트워크에 고유한 서비스 클래스(class of service; COS) 속성도 포함한다. 일 예에서, 물리적 전송 네트워크 및 프로토콜은 PCIe(Peripheral Component Interconnect Express) 네트워크일 수 있지만 이에 제한되지 않는다. PCIe 프로토콜 스택은 내장된 물리 계층 및 데이터 링크 계층을 포함한다. 일 예에서, 논리적 전송 네트워크는 CCIX(Cache Coherence Interconnect for Accelerators) 프로토콜의 전송 계층을 포함할 수 있지만 이에 제한되지 않는다. 본 명세서에 설명된 기술은 CCIX 메시지의 논리적 전송을 위해 PCIe 가상 채널(virtual channel; VC)을 지정한다. 이 기술은 벤더 정의 메시지(Vendor Defined Messages; VDM)로 알려진 PCIe 서드 파티 메시지를 통해, PCIe 물리적 전송 계층을 통해 투명하게 전달되는 논리적 전송 네트워크에 대한 서비스 클래스 속성을 생성한다. 이 기술은 PCle 표준 트랜잭션 계층 패킷(transaction layer packet; TLP)과 상이한 최적화된 트랜잭션 계층 패킷(TLP)을 생성하며, 이는 지정된 VC를 통해서만 전달된다. 최적화된 TLP에는 오버레이된 논리적 전송 네트워크에 특유한 저 레이턴시 및 프로토콜 특성이 포함되어 있다.
본 개시의 예는 CCIX 논리적 전송의 요구 사항을 충족하는 사용 가능한 PCIe 메커니즘을 활용한다. CCIX 논리적 전송 속성은 물리적 전기 및 물리적 논리 계층, 데이터 링크 계층 및 VDM이 있는 트랜잭션 계층에 위치된 PCIe 정의 메커니즘에 오버레이된다. PCIe TLP 패킷 정의와 상이한 CCIX 패킷 정의는 트랜잭션 계층의 PCIe VDM에 오버레이되며, CCIX 특성의 순차적 패킷 전달은 또한 PCIe TLP 특성의 VDM의 순차적 전달을 통해 달성된다.
본 개시의 예는 새로운 메커니즘을 정의하며, 이러한 메커니즘은 논리적 전송을 위해 필요하지만, 물리적 전송에서는 기본적으로 사용할 수 없다. 이러한 메커니즘은 PCIe 가상 채널(VC) 지정을 포함하며, 여기서 해당 VC 상의 PCIe VDM은 CCIX 논리적 전송에 고유한 특성을 포함한다. 특성에는 서비스 클래스 속성 및 지정된 PCIe 가상 채널 내에서 전송되는 CCIX 가상 채널이 포함된다. 이러한 특성으로부터 도출된 CCIX 기능은 PCIe 트랜잭션 계층을 통해 연결된 디바이스에서 보편적으로 사용할 수 있는데, 이러한 VDM이 PCIe를 통해 투명하게 전달되기 때문이다.
본 개시의 예는 PCIe 표준 트랜잭션 계층 패킷(TLP)과 상이한 최적화된 트랜잭션 계층 패킷(TLP)의 생성을 추가로 허용하며, 이는 지정된 VC를 사용하는 하나의 디바이스로부터 동일한 지정된 VC를 사용하는 다른 디바이스로만 전달된다. 최적화된 TLP에는 CCIX에 특유한 저 레이턴시 및 프로토콜 속성이 포함되어 있다.
도 1은 일 예에 따라 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하기 위한 시스템(100)을 나타내는 블록도이다. 시스템(100)은 컴퓨터 시스템(102)을 포함한다. 컴퓨터 시스템(102)은 하드웨어 플랫폼("하드웨어(104)") 및 하드웨어(104) 상에서 실행되는 소프트웨어 플랫폼("소프트웨어(106)")을 포함한다. 하드웨어(104)는 처리 시스템(110), 시스템 메모리(116), 저장 디바이스("저장소(118)") 및 주변 디바이스(122)를 포함한다. 소프트웨어(106)는 운영 체제(operating system; OS)(144), 디바이스 드라이버(146) 및 애플리케이션(150)을 포함한다. OS(144)는 실시예들에 따라 PCIe 데이터 링크 계층 및 물리 계층에 CCIX 트랜잭션 계층을 구현하도록 구성된 결합된 CCIX/PCIe 프로토콜 스택(152)을 구현하도록 구성된다.
처리 시스템(110)은 마이크로 프로세서(112), 지원 회로(114) 및 주변 버스(115)를 더 포함한다. 마이크로 프로세서(112)는 x86 기반 프로세서, ARM® 기반 프로세서 등과 같은 임의의 유형의 범용 중앙 처리 장치(CPU)일 수 있다. 마이크로 프로세서(112)는 하나 이상의 코어 및 관련 회로(예를 들어, 캐시 메모리, 메모리 관리 장치(memory management unit; MMU), 인터럽트 컨트롤러 등)를 포함할 수 있다. 마이크로 프로세서(112)는 본 명세서에서 설명되는 하나 이상의 동작을 수행하고 시스템 메모리(116) 및/또는 저장소(118)에 저장될 수 있는 프로그램 코드를 실행하도록 구성된다. 지원 회로(114)는 마이크로 프로세서(112), 시스템 메모리(116), 저장소(118), 주변 디바이스(122) 또는 임의의 다른 주변 디바이스 사이의 데이터 흐름을 관리하기 위해 마이크로 프로세서(112)와 협력하는 다양한 디바이스를 포함한다. 예를 들어, 지원 회로(114)는 칩셋(예를 들어, 노스 브리지, 사우스 브리지, 플랫폼 호스트 컨트롤러 등), 전압 조정기, 펌웨어(예를 들어, BIOS) 등을 포함할 수 있다. 지원 회로(114)는 마이크로 프로세서(112)와 주변 버스(115) 사이의 데이터 흐름을 관리하며, 주변 버스(115)에는 주변 디바이스(122)와 같은 다양한 주변장치가 연결된다. 일부 예들에서, 마이크로 프로세서(112)는 칩셋(예를 들어, 노스 브리지, 사우스 브리지 등)의 기능의 전부 또는 상당 부분을 흡수하는 SiP(System-in-Package; 시스템 인 패키지), SoC(System-on-Chip; 시스템 온 칩) 등일 수 있다. 주변 버스는 PCIe(Peripheral Component Interconnect Express)와 같은 확장 버스 표준을 구현할 수 있다. 이 예에서, 처리 시스템(110)은 주변 디바이스(122)와 별개로 도시되어 있다. 아래에 더 논의되는 다른 예들에서, 처리 시스템(110) 및 주변 디바이스(122)는 동일한 집적 회로(integrated circuit; IC) 상에 구현될 수 있다.
시스템 메모리(116)는 실행 가능 명령어 및 데이터와 같은 정보가 저장되고 검색될 수 있게 하는 디바이스이다. 시스템 메모리(116)는, 예를 들어, 더블 데이터 레이트(double-data rate; DDR) 동적 RAM(dynamic RAM; DRAM)과 같은 하나 이상의 랜덤 액세스 메모리(random access memory; RAM) 모듈을 포함할 수 있다. 저장소(118)는 로컬 저장 디바이스(예를 들어, 하나 이상의 하드 디스크, 플래시 메모리 모듈, 솔리드 스테이트 디스크 및 광 디스크) 및/또는 컴퓨터 시스템(102)이 하나 이상의 네트워크 데이터 저장 시스템과 통신할 수 있게 하는 저장 인터페이스를 포함한다. 하드웨어(104)는 그래픽 카드, 범용 직렬 버스(universal serial bus; USB) 인터페이스 등과 같은 컴퓨팅 시스템의 다양한 다른 종래의 디바이스 및 주변장치를 포함할 수 있다.
주변 디바이스(122)는 프로그램가능 IC(128), 비휘발성 메모리(124) 및 RAM(126)을 포함한다. 프로그램가능 IC(128)는 필드 프로그램가능 게이트 어레이(FPGA) 등이거나, FPGA 등을 갖는 SoC일 수 있다. NVM(124)은 플래시 메모리 등과 같은 임의의 유형의 비휘발성 메모리를 포함할 수 있다. RAM(126)은 DDR DRAM 등을 포함할 수 있다. 프로그램가능 IC(128)는 NVM(124) 및 RAM(126)에 결합된다. 프로그램가능 IC(128)는 또한 처리 시스템(110)의 주변 버스(115)에 결합된다. 프로그램가능 IC(128)는 주변 버스(115)의 물리 계층을 구현하는 PCIe 회로 로직(130A)을 더 포함할 수 있고, 주변 디바이스(122)와 같은 CCIX 전송 프로토콜 인식 디바이스에 특정한 하드웨어 기능을 구현하고 CCIX 펌웨어(119)를 구현하기 위한 CCIX 맞춤형 로직(130B)을 포함할 수 있다.
OS(144)는 당 업계에 공지된 임의의 상용 운영 체제일 수 있다. 드라이버(146)는 명령 및 그 명령의 제어를 위해 주변 디바이스(122)에 애플리케이션 프로그래밍 인터페이스(application programming interface; API)를 제공하는 드라이버 및 라이브러리를 포함한다. 애플리케이션(150)은 결합된 CCIX/PCIe 프로토콜 스택(152)을 통해 주변 디바이스(122)를 호출하는 마이크로 프로세서(112) 상에서 실행되는 소프트웨어를 포함하여 CCIX/PCIe 속성 및 트랜잭션 계층 패킷(TLP)을 전송한다. 애플리케이션(150)은 주변 디바이스(122)에 일부 기능을 오프로드하는 신경망, 비디오 처리, 네트워크 처리 유형의 애플리케이션 등을 포함할 수 있다.
CCIX 아키텍처 사양은 5 개의 개별 논리 계층으로 구성된다. 여기에는 CCIX 프로토콜 계층, CCIX 링크 계층 및 CCIX 트랜잭션 계층이 포함된다. CCIX 트랜잭션 계층, 데이터 링크 계층 및 물리 계층은 함께 CCIX 전송으로 지칭된다. CCIX 아키텍처 사양에는 PCIe 트랜잭션 계층, PCIe 데이터 링크 계층 및 PCIe 물리 계층도 포함된다. 이러한 각각의 계층은 아웃바운드 (전송될) 정보를 처리하는 섹션과 인바운드 (수신된) 정보를 처리하는 섹션으로 분할된다.
도 2는 PCIe 디바이스(200)가 PCIe를 통해 로드/저장 및 일관성 시맨틱을 가질 수 있도록 하는 CCIX 기능을 갖는 PCIe 디바이스(200)를 도시한다. PCIe 디바이스(200)는 하나 이상의 기가비트 트랜스시버(gigabit transceiver; GT)(202)에 결합된다. PCIe 디바이스(200)는 PCIe 물리 계층(204) 및 PCIe 데이터 링크 계층(206)을 보유하지만, CCIX 인식 디바이스가 CCIX 전송의 특징을 이용할 수 있도록 PCIe 트랜잭션 계층(210)이 CCIX 트랜잭션 계층(208)과 함께 존재하도록 허용한다. CCIX 사양은 PCIe 트랜잭션 계층(210)을 수정하지 않는다. PCIe 트랜잭션 계층(210)의 주요 책임은 트랜잭션 계층 패킷(TLP)의 어셈블리 및 디스어셈블리(disassembly)이다. TLP는 트랜잭션(예를 들어, 읽기, 쓰기) 및 특정 유형의 이벤트를 전달하는 데 사용된다. PCIe 트랜잭션 계층(210)은 또한 TLP에 대한 크레딧 기반 흐름 제어를 관리하는 역할을 한다. CCIX 사양은 PCIe 데이터 링크 계층(206) 및 PCIe 물리 계층(204)을 수정하지 않고 그대로 사용한다. PCIe 데이터 링크 계층(206)은 PCIe 트랜잭션 계층(210)과 CCIX 트랜잭션 계층(208) 사이의 중간 단계로서 기능한다. PCIe 데이터 링크 계층(206)의 주요 책임은 오류 검출 및 오류 정정을 포함하는 링크 관리 및 데이터 무결성을 포함한다.
기존의 물리적 전송(예를 들어, PCIe)에 논리적 전송 네트워크를 투명하게 오버레이하는 기술은 새로운 트랜잭션 계층, 예를 들어, CCIX 트랜잭션 계층(208)을 정의한다. CCIX 트랜잭션 계층(208)은 다중 VC 구현에서 PCIe 가상 채널(VC) 중 하나에서 PCIe 트랜잭션 계층(210)을 대체한다. CCIX 트랜잭션 계층(208)은 최적화된 CCIX 호환 TLP 및 PCIe 호환 TLP를 지원하는 축소된 PCIe 트랜잭션 계층이다.
CCIX 트랜잭션 계층의 주요 책임은 CCIX 트랜잭션 계층 패킷(TLP)의 어셈블리 및 디스어셈블리이다. 수신 경로에서, CCIX 트랜잭션 계층(208)은 TLP를 PCIe 데이터 링크 계층(206)으로 전달하기 전에, CCIX TLP 무결성을 검사한다. PCIe 호환 TLP의 경우, PCIe 기본 사양에 지정된 PCIe 트랜잭션 계층(210) 검사가 적용 가능하다. 최적화된 TLP의 경우, 새로운 세트의 CCIX 트랜잭션 계층 검사가 지정된다.
CCIX 트랜잭션 계층(208)은 또한 CCIX TLP에 대한 크레딧 기반 흐름 제어를 관리하는 역할을 한다. 수신 경로에서, 발송된 흐름 제어 크레딧이 데이터 무결성 검사를 통과하는 CCIX TLP에 대해 반환되고 CCIX 트랜잭션 계층(208)으로 전달된다. 전송 경로에서, 사용 가능한 발송된 크레딧을 기반으로 CCIX TLP의 흐름을 제어하기 위해 크레딧 게이트가 구현된다. 이러한 발송된 크레딧은 링크 전체를 기준으로 정의된다.
CCIX는 트랜잭션 계층 패킷(TLP)을 사용하여 PCIe 데이터 링크 계층(206) 및 물리 계층(204)을 통해 정보를 전달한다. 전송된 패킷이 CCIX 트랜잭션 계층(208), PCIe 데이터 링크 계층(206) 및 PCIe 물리 계층(204)을 통해 다운 스트림으로 흐름에 따라, CCIX 패킷은 전술한 각각의 계층에서 패킷을 처리하는 데 필요한 추가 정보로 확장된다. 수신 측에서, 역 프로세스가 발생하고, 패킷은 PCIe 물리 계층(204) 표현에서 PCIe 데이터 링크 계층(206) 표현으로 그리고 마지막으로 (트랜잭션 계층 패킷의 경우) 수신 디바이스의 CCIX 트랜잭션 계층(208)에 의해 처리될 수 있는 형태로 변환된다.
CCIX 전송은 지정된 PCIe 가상 채널을 통해 이루어진다. 지정된 VC는 다른 PCle 트래픽과의 성능 격리를 가능하게 하고, 다른 PCle 트래픽과의 자원 종속성 교착 상태를 방지한다. CCIX 프로토콜 메시지가 서드 파티 PCIe 벤더 정의 메시지(VDM)를 통해 전송된다. PCIe VDM은 VDM의 순차적 특성 및 발송되는 VDM의 성능 특성(즉, 실행 후 삭제, 트랜잭션)을 활용한다. 발신자는 패킷이 승인될 때까지 기다릴 필요가 없으며, 시간 순서로 여러 VDM을 전달하는 PCIe 순차적 네트워크에 의존할 수도 있다. CCIX 트래픽을 위한 지정된 가상 채널로, CCIX 트랜잭션 계층(208)은 지정될 수 있다. PCle 전송을 통해 나타나는 트래픽은 트래픽이 CCIX 또는 비-CCIX VC에 있는지 여부에 따라, CCIX 트랜잭션 계층(208) 또는 PCle 트랜잭션 계층(210)으로 분기된다. 이는 일반적으로 프로토콜을 로드/저장하고 일관성을 유지하는 데 중요한 레이턴시 및 대역폭 장점을 제공한다. 또한, PCle에 독립적인 CCIX 트랜잭션 계층(208)은 PCIe 트랜잭션 계층에서 사용할 수 없는 기능을 허용함으로써 레이턴시 및 성능 장점을 제공하며, 이는 CCIX 요청 체인 및 CCIX 메시지 패킹을 포함한다.
도 3은 PCIe/TLP 패킷(300)의 레이아웃을 도시한다. PCIe/TLP 패킷(300)은 적어도 페이로드(302), 벤더 ID(벤더 특정 식별자) 필드(304) 및 메시지 코드 필드(306)를 포함한다. OS(144)는 디바이스 사이의 패킷 트래픽을 처리하기 위해 PCIe 가상 채널을 생성하고 이용한다. CCIX VDM이 OS(144)에 의해 검출되면, CCIX 펌웨어(119)는 PCIe 트랜잭션 계층(210)에 알려지지 않은 CCIX 트랜잭션 계층(208)에서 PCIe 가상 채널을 가능하게 한다. CCIX 맞춤형 로직(130B)이 CCIX 지정 PCIe 가상 채널의 활성화를 발견하면, CCIX 맞춤형 로직(130B)은 결합된 CCIX/PCIe 프로토콜 스택(152)에 위치된 PCIe 패킷이 CCIX 기반 디바이스에서 인식 가능한 벤더 정의 메시지를 포함하는지 여부를 발견하기 위해 진행한다. PCIe는 벤더 정의 메시지라고 하는 프로토콜 내에서 기존의 서드 파티 벤더 식별자(ID) 및 서드 파티 패킷 유형을 인식하도록 구성된다. CCIX는 모든 CCIX 벤더의 모든 CCIX 기반 디바이스가 통신에서 인식하고 이용할 수 있는 벤더 정의 메시지를 사용한다. PCIe 트랜잭션 계층(210)은 CCIX 가상 채널 상의 PCIe 속성을 인식하고, 이러한 속성이 PCIe의 기능을 확장하는 CCIX 속성으로 지정된다는 것을 인식하지 못한다.
도 3은 PCIe/TLP 패킷(300)의 레이아웃을 도시한다. PCIe/TPL 패킷(300)은 헤더(301) 및 페이로드(302)를 포함한다. 도 1 및 도 3을 참조하면, CCIX 인식 펌웨어(119)는 헤더(301)에 벤더 ID(304)라고 하는 벤더 특정 식별자를 갖는 PCIE 호환 TLP 패킷(300)을 검출한다. 그런 다음, CCIX 펌웨어(119)는 그 패킷을 벤더 정의 메시지로 식별하는 헤더(301)의 메시지 코드 필드(306)를 검사한다. CCIX 헤더(301)가 CCIX-통신과 관련된 VDM을 포함하는 것으로 검출하는 것에 응답하여, CCIX-인식 펌웨어(119)는 CCIX 패킷을 처리하는 방법을 결정하기 위해 TLP 패킷(300) 내에 내장된 CCIX TLP의 CCIX 기반 헤더(301)의 내용을 검사한다. 그런 다음, CCIX 펌웨어(119)는 VDM에 포함된 정보가 CCIX 인식 애플리케이션과 연관되어 있으며 CCIX 인식 OS(144)는 CCIX 트랜잭션 계층(208)을 통해 수신된 하나 이상의 CCIX 유형 TLP를 처리할 것으로 예상해야 함을 CCIX 인식 OS(144)에 알린다.
CCIX는 또한 DVSEC(Designated Vendor-Specific Expended Capabilities)라고 하는, 벤더 정의 메시지에 대응하는 소프트웨어 데이터 구조를 이용한다. 이 DVSEC 소프트웨어 데이터 구조는 디바이스 벤더에 특유하다. OS(144)가 DVSEC 벤더 정의 메시지 식별자를 인식할 때, OS(144)는 동반되는 DVSEC 패킷이 PCIe에 의해 인식가능하지 않은 추가 속성을 가지고 있음을 인식한다. 그런 다음, OS(144)는 DVSEC 속성 및 패킷을 해석하기 위해 CCIX 인식 펌웨어(119)를 참조한다. 따라서, OS(144)의 PCIe 부분은 CCIX 패킷을 처리해야 함을 인식하지만, 패킷의 내장된 속성을 해석하는 방법을 인식하지 못한다. 그런 다음, OS(144)는 추가 해석을 위해 DVSEC 메시지를 결합된 CCIX/PCIe 프로토콜 스택(152)의 CCIX 트랜잭션 계층(208) 및 CCIX 펌웨어(119)로 전달한다.
도 4는 트리 토폴로지를 갖는 PCIe 네트워크(400)의 블록도이다. PCIe 네트워크(400)는 PCIe 스위치(406)에 연결된 PCIe 루트 포트(404)를 포함하는 호스트/서버(402)를 포함하며, 이는 한 세트의 PCIe 디바이스(408a-408n) 및 복수의 CCIX 인식 디바이스(410a-410n)와 통신한다. 가상 채널을 통해 VDM을 사용하여 하나의 CCIX 디바이스(예를 들어, 410a)로부터 다른 CCIX 디바이스(예를 들어, 410n)로 이동하는 트래픽은 요청된 목적지로 이동하기 전에 PCIe 스위치(406)를 통과해야 한다.
PCIe 디바이스(408a-408n) 사이에 전송된 메시지는 실질적으로 지점 간 메시지이다. 그러나, CCIX 인식 디바이스(410a-410n)는 종래의 PCIe 디바이스에서 찾을 수 없는 많은 확장 기능을 가지고 있다. 예를 들어, 디바이스(410a)는 디바이스(410n)의 주소를 갖는 VDM으로 TLP를 전송할 수 있다. TLP 메시지가 PCIe 스위치(406)를 통해 목적지 디바이스(410n)로 전송되면, 디바이스(410n)는 수신된 VDM을 향상된 기능을 사용하여 추가 해석할 수 있다. 향상된 기능의 한 유형은 VDM이 수신된 메시지를 네트워크(400)의 추가 CCIX 인식 디바이스(도시되지 않음)로 전송하기 위한 명령어를 포함할 수 있다는 것이다. PCIe 트랜잭션 계층(210)은 이러한 추가 전송을 인식하지 못한다.
도 5는 일 예에 따라 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하기 위한 제 1 방법(500)을 나타내는 흐름도이다. 방법(500)의 양태는 도 1 내지 도 4를 참조하여 이해될 수 있다. 방법(500)은 블록(502)에서 시작하며, 여기서 컴퓨터 시스템(102)은 제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층에 위치된 가상 채널을 지정한다. 블록(504)에서, 컴퓨터 시스템(102)은 제 1 트랜잭션 계층에 의해 또한 인식가능한 트랜잭션 계층 패킷을 제 2 네트워크 프로토콜의 제 2 논리적 트랜잭션 계층에 어셈블링한다. 트랜잭션 계층 패킷 내에 포함된 적어도 하나의 속성은 제 1 트랜잭션 계층이 인식할 수 없지만, 패킷의 나머지 필드는 제 1 트랜잭션 계층에 의해 인식가능하다. 패킷의 나머지 필드는 제 2 논리적 트랜잭션 계층에 고유하다.
일 예에서, 트랜잭션 계층 패킷은 제 1 트랜잭션 계층이 인식할 수 있는 서드 파티 식별자, 및 제 2 논리적 트랜잭션 계층이 인식할 수 있는 서드 파티 메시지 유형 및 서드 파티 헤더를 포함한다. 블록(506)에서, 컴퓨터 시스템(102)은 제 2 논리적 트랜잭션 계층으로부터 가상 채널로 트랜잭션 계층 패킷을 전송한다. 블록(508)에서, 컴퓨터 시스템(102)은 네트워크를 통해 지정된 가상 채널을 사용하여 제 1 트랜잭션 계층을 통해 트랜잭션 계층 패킷을 전송한다. 예에서, 제 1 트랜잭션 계층은 제 1 네트워크 프로토콜을 따르는 데이터 링크 계층 및 물리 계층을 통해 트랜잭션 계층 패킷을 전송한다.
예에서, 제 2 논리적 트랜잭션 계층은 물리 계층의 기존 특성을 활용하지만, 제 2 논리적 트랜잭션 계층에 고유한 서비스 클래스(COS) 속성을 이용한다. COS 속성은 저 레이턴시 속성 및 프로토콜 속성 중 적어도 하나이다.
예에서, 제 2 네트워크 프로토콜은 캐시 일관성이 있다. 예에서, 제 1 네트워크 프로토콜은 PCIe 프로토콜이고, 제 2 네트워크 프로토콜은 CCIX 프로토콜이다.
도 6은 일 예에 따라 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하기 위한 제 2 방법(600)을 나타내는 흐름도이다. 방법(600)의 양태는 도 1 내지 도 4를 참조하여 이해될 수 있다. 방법(600)은 블록(602)에서 시작하며, 여기서 컴퓨터 시스템(102)은 제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층에 위치된 트랜잭션 계층 패킷을 수신한다. 블록(604)에서, 컴퓨터 시스템(102)은 제 2 네트워크 프로토콜을 따르는 제 2 논리적 트랜잭션 계층에 의해 사용되도록 지정된 트랜잭션 계층 패킷을 제 1 트랜잭션 계층에 위치된 가상 채널로부터 추출한다. 트랜잭션 계층 패킷 내에 포함된 적어도 하나의 속성은 제 1 트랜잭션 계층이 인식할 수 없지만, 패킷의 나머지 필드는 제 1 트랜잭션 계층에 의해 인식가능하다. 패킷의 나머지 필드는 제 2 논리적 트랜잭션 계층에 고유하다.
일 예에서, 트랜잭션 계층 패킷은 제 1 트랜잭션 계층이 인식할 수 있는 서드 파티 식별자, 및 제 2 논리적 트랜잭션 계층이 인식할 수 있는 서드 파티 메시지 유형 및 서드 파티 헤더를 포함한다. 블록(606)에서, 컴퓨터 시스템(102)은 제 2 논리적 트랜잭션 계층이 인식할 수 있는 제 2 네트워크 프로토콜을 따르는 트랜잭션 계층 패킷을 어셈블링한다. 블록(608)에서, 컴퓨터 시스템(102)은 가상 채널로부터 제 2 논리적 트랜잭션 계층으로 트랜잭션 계층 패킷을 전송한다.
일 예에서, 트랜잭션 계층 패킷은 제 1 트랜잭션 계층이 인식할 수 있는 서드 파티 식별자, 및 제 2 논리적 트랜잭션 계층이 인식할 수 있는 서드 파티 메시지 유형 및 서드 파티 헤더를 포함한다. 블록(610)에서, 컴퓨터 시스템(102)의 제 2 논리적 트랜잭션 계층은 서드 파티 메시지 유형에 기초하여 트랜잭션 계층 패킷으로부터 서드 파티 헤더를 추출하고 처리한다.
예에서, 제 2 논리적 트랜잭션 계층은 물리 계층의 기존 특성을 활용하지만, 제 2 논리적 트랜잭션 계층에 고유한 서비스 클래스(COS) 속성을 이용한다. COS 속성은 저 레이턴시 속성 및 프로토콜 속성 중 적어도 하나이다.
예에서, 제 2 네트워크 프로토콜은 캐시 일관성이 있다. 예에서, 제 1 네트워크 프로토콜은 PCIe 프로토콜이고, 제 2 네트워크 프로토콜은 CCIX 프로토콜이다.
도 7은 일 예에 따라 프로그램가능 IC(1)를 나타내는 블록도이다. 프로그램가능 IC(1)는 프로그램가능 로직(3), 구성 로직(25) 및 구성 메모리(26)를 포함한다. 프로그램가능 IC(1)는 비휘발성 메모리(27), DRAM(28) 및 다른 회로(29)와 같은 외부 회로에 결합될 수 있다. 프로그램가능 로직(3)은 로직 셀(30), 지원 회로(31) 및 프로그램가능 인터커넥트(32)를 포함한다. 로직 셀(30)은 복수의 입력의 일반적인 로직 기능을 구현하도록 구성될 수 있는 회로를 포함한다. 지원 회로(31)는 트랜스시버, 입출력 블록, 디지털 신호 프로세서, 메모리 등과 같은 전용 회로를 포함한다. 로직 셀 및 지원 회로(31)는 프로그램가능 인터커넥트(32)를 사용하여 상호 연결될 수 있다. 로직 셀(30)을 프로그래밍하고, 지원 회로(31)의 파라미터를 설정하며, 프로그램가능 인터커넥트(32)를 프로그래밍하기 위한 정보가 구성 로직(25)에 의해 구성 메모리(26)에 저장된다. 구성 로직(25)은 비휘발성 메모리(27) 또는 임의의 다른 소스(예를 들어, DRAM(28) 또는 다른 회로(29))로부터 구성 데이터를 획득할 수 있다. 일부 예들에서, 프로그램가능 IC(1)는 처리 시스템(2)을 포함한다. 처리 시스템(2)은 마이크로 프로세서(들), 메모리, 지원 회로, IO 회로 등을 포함할 수 있다.
도 8은 일 예에 따라 프로그램가능 IC(1)의 시스템 온 칩(SoC) 구현을 나타내는 블록도이다. 이 예에서, 프로그램가능 IC(1)는 처리 시스템(2) 및 프로그램가능 로직(3)을 포함한다. 처리 시스템(2)은 실시간 처리 장치(real-time processing unit; RPU)(4), 애플리케이션 처리 장치(application processing unit; APU)(5), 그래픽 처리 장치(graphics processing unit; GPU)(6), 구성 및 보안 장치(configuration and security unit; CSU)(12), 플랫폼 관리 장치(platform management unit; PMU)(11) 등과 같은 다양한 처리 장치를 포함한다. 처리 시스템(2)은 또한 온 칩 메모리(on-chip memory; OCM)(14), 트랜스시버(7), 주변장치(8), 인터커넥트(16), DMA 회로(9), 메모리 컨트롤러(10), 주변장치(15), 및 다중화 IO(multiplexed IO; MIO) 회로(13)와 같은 다양한 지원 회로를 포함한다. 처리 장치 및 지원 회로는 인터커넥트(16)에 의해 상호 연결된다. PL(3)은 또한 인터커넥트(16)에 결합된다. 트랜스시버(7)는 외부 핀(24)에 결합된다. PL(3)은 외부 핀(23)에 결합된다. 메모리 컨트롤러(10)는 외부 핀(22)에 결합된다. MIO(13)는 외부 핀(20)에 결합된다. PS(2)는 일반적으로 외부 핀(21)에 결합된다. APU(5)는 CPU(17), 메모리(18) 및 지원 회로(19)를 포함할 수 있다.
도 8의 예에서, 프로그램가능 IC(1)는 주변 디바이스(122)에서 사용될 수 있고, 위에서 설명된 바와 같이 기능 할 수 있다. PCIe 회로 로직(130A) 및 CCIX 맞춤형 로직(130B)은 PL(3)에서 프로그래밍될 수 있고, 위에서 설명된 바와 같이 기능 할 수 있다. 다른 예에서, 위에서 설명된 하드웨어(104)의 기능은 컴퓨팅 시스템의 하드웨어를 통하지 않고 PS(2)를 사용하여 구현될 수 있다. 이러한 경우에, 소프트웨어(106)는 PS(2) 상에서 실행되며, 위에서 설명된 바와 같이 기능 한다.
PS(2)를 참조하면, 각각의 처리 장치는 하나 이상의 중앙 처리 장치(CPU) 및 메모리, 인터럽트 컨트롤러, 직접 메모리 액세스(DMA) 컨트롤러, 메모리 관리 장치(MMU), 부동 소수점 장치(floating point unit; FPU) 등과 같은 관련 회로를 포함한다. 인터커넥트(16)는 처리 장치를 상호 연결할 뿐만 아니라 PS(2)의 다른 컴포넌트를 처리 장치에 상호 연결하도록 구성된 다양한 스위치, 버스, 통신 링크 등을 포함한다.
OCM(14)은 하나 이상의 RAM 모듈을 포함하며, 이들은 PS(2) 전체에 분배될 수 있다. 예를 들어, OCM(14)은 BBRAM(battery backed RAM), TCM(tightly coupled memory) 등을 포함할 수 있다. 메모리 컨트롤러(10)는 외부 DRAM에 액세스하기 위한 DRAM 인터페이스를 포함할 수 있다. 주변장치(8, 15)는 PS(2)에 인터페이스를 제공하는 하나 이상의 컴포넌트를 포함할 수 있다. 예를 들어, 주변장치(15)는 그래픽 처리 장치(GPU), 디스플레이 인터페이스(예를 들어, DisplayPort, HDMI(High-Definition Multimedia Interface) 포트 등), 범용 직렬 버스(universal serial bus; USB) 포트, 이더넷 포트, 범용 비동기식 트랜스시버(universal asynchronous transceiver; UART) 포트, 직렬 주변 인터페이스(serial peripheral interface; SPI) 포트, 범용 IO(general purpose IO; GPIO) 포트, 직렬 고급 기술 결합(serial advanced technology attachment; SATA) 포트, PCIe 포트 등을 포함할 수 있다. 주변장치(15)는 MIO(13)에 결합될 수 있다. 주변장치(8)는 트랜스시버(7)에 결합될 수 있다. 트랜스시버(7)는 시리얼라이저/디시리얼라이저(serializer/deserializer; SERDES) 회로, MGT 등을 포함할 수 있다.
도 9는 트랜스시버(37), 구성 가능 로직 블록("CLB")(33), 랜덤 액세스 메모리 블록("BRAM")(34), 입출력 블록("IOB")(36), 구성 및 클럭킹 로직("CONFIG/CLOCKS")(42), 디지털 신호 처리 블록("DSP")(35), 특수 입출력 블록("I/O")(41)(예를 들어, 구성 포트 및 클럭 포트) 및 디지털 클럭 관리자, 아날로그-디지털 변환기, 시스템 모니터링 로직 등과 같은 기타 프로그램가능 로직(39)을 포함한 다양한 상이한 프로그램가능 타일을 포함하는 프로그램가능 IC(1)의 필드 프로그램가능 게이트 어레이(FPGA) 구현을 도시한다. FPGA는 또한 PCIe 인터페이스(40), 아날로그-디지털 변환기(analog-to-digital converter; ADC)(38) 등을 포함할 수 있다.
일부 FPGA에서, 각각의 프로그램가능 타일은 도 9의 상단에 포함된 예에 의해 도시된 바와 같이, 동일한 타일 내의 프로그램가능 로직 요소의 입력 및 출력 단자(48)에 연결되는 적어도 하나의 프로그램가능 인터커넥트 요소("INT")(43)를 포함할 수 있다. 각각의 프로그램가능 인터커넥트 요소(43)는 또한 동일한 타일 또는 다른 타일(들)에서의 인접한 프로그램가능 인터커넥트 요소(들)의 인터커넥트 세그먼트(49)에 대한 연결을 포함할 수 있다. 각각의 프로그램가능 인터커넥트 요소(43)는 또한 로직 블록(도시되지 않음) 사이의 일반적인 라우팅 자원의 인터커넥트 세그먼트(50)에 대한 연결을 포함할 수 있다. 일반적인 라우팅 자원은 인터커넥트 세그먼트(예를 들어, 인터커넥트 세그먼트(50))의 트랙을 포함하는 로직 블록(도시되지 않음)과 인터커넥트 세그먼트를 연결하기 위한 스위치 블록(도시되지 않음) 사이의 라우팅 채널을 포함할 수 있다. 일반적인 라우팅 자원의 인터커넥트 세그먼트(예를 들어, 인터커넥트 세그먼트(50))는 하나 이상의 로직 블록에 걸쳐 있을 수 있다. 일반적인 라우팅 자원과 함께 취해진 프로그램가능 인터커넥트 요소(43)는 도시된 FPGA를 위한 프로그램가능 인터커넥트 구조("프로그램가능 인터커넥트")를 구현한다.
예시적인 구현에서, CLB(33)는 사용자 로직을 구현하도록 프로그래밍될 수 있는 구성 가능 로직 요소("CLE")(44) 및 단일 프로그램가능 인터커넥트 요소("INT")(43)를 포함할 수 있다. BRAM(34)은 하나 이상의 프로그램가능 인터커넥트 요소에 더하여 BRAM 로직 요소("BRL")(45)를 포함할 수 있다. 일반적으로, 타일 내에 포함된 인터커넥트 요소의 수는 타일의 높이에 따라 다르다. 도시된 예에서, BRAM 타일은 5 개의 CLB와 동일한 높이를 갖지만, 다른 수(예를 들어, 4 개)도 사용될 수 있다. DSP 타일(35)은 적절한 수의 프로그램가능 인터커넥트 요소에 더하여 DSP 로직 요소("DSPL")(46)를 포함할 수 있다. IOB(36)는 예를 들어 프로그램가능 인터커넥트 요소(43)의 하나의 인스턴스에 더하여 입출력 로직 요소("IOL")(47)의 2 개의 인스턴스를 포함할 수 있다. 당업자에게 명백한 바와 같이, 예를 들어 I/O 로직 요소(47)에 연결된 실제 I/O 패드는 전형적으로 입출력 로직 요소(47)의 영역에 한정되지 않는다.
도시된 예에서, (도 9에 도시된) 다이의 중심 근처의 수평 영역은 구성 로직, 클럭 로직, 및 기타 제어 로직을 위해 사용된다. 이러한 수평 영역 또는 열로부터 연장되는 수직 열(51)은 FPGA의 폭에 걸쳐 클럭 및 구성 신호를 분배하는데 사용된다.
도 9에 도시된 아키텍처를 활용한 일부 FPGA는 FPGA의 대부분을 구성하는 규칙적인 기둥형 구조를 방해하는 추가적인 로직 블록을 포함한다. 추가적인 로직 블록은 프로그램가능 블록 및/또는 전용 로직일 수 있다.
도 9는 단지 예시적인 FPGA 아키텍처를 도시하기 위한 것임을 유념한다. 예를 들어, 행 내의 로직 블록 수, 행의 상대적 폭, 행의 수 및 순서, 행 내에 포함된 로직 블록의 유형, 로직 블록의 상대적 크기 및 도 9의 상단에 포함된 인터커넥트/로직 구현은 단순히 예시적인 것이다. 예를 들어, 실제의 FPGA에서는, 사용자 로직의 효율적인 구현을 용이하게 하기 위해, 일반적으로 CLB가 나타날 때마다, 하나 이상의 인접한 CLB 행이 포함되지만, 인접한 CLB 행의 수는 FPGA의 전체 크기에 따라 다르다.
앞서 말한 것은 특정 예에 관한 것이지만, 본 발명의 기본 범위를 벗어나지 않고 다른 예 및 추가의 예가 고안될 수 있으며, 그 범위는 다음의 청구 범위에 의해 결정된다.

Claims (15)

  1. 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하는 방법에 있어서,
    제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층(transaction layer)에 위치된 가상 채널을 지정하는 단계;
    제 2 네트워크 프로토콜의 제 2 논리적 트랜잭션 계층에 트랜잭션 계층 패킷을 어셈블링하는 단계;
    상기 제 2 논리적 트랜잭션 계층으로부터 상기 가상 채널로 상기 트랜잭션 계층 패킷을 전송하는 단계; 및
    상기 네트워크를 통해 상기 가상 채널을 사용하여 상기 제 1 트랜잭션 계층을 통해 상기 트랜잭션 계층 패킷을 전송하는 단계
    를 포함하는, 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하는 방법.
  2. 제 1 항에 있어서, 상기 트랜잭션 계층 패킷은 상기 제 1 트랜잭션 계층이 인식할 수 있는 서드 파티 식별자(third party identifier), 및 상기 제 2 논리적 트랜잭션 계층이 인식할 수 있는 서드 파티 메시지 유형 및 서드 파티 헤더를 포함하는 것인, 방법.
  3. 제 1 항에 있어서, 상기 제 1 트랜잭션 계층은 상기 제 1 네트워크 프로토콜을 따르는 물리 계층 및 데이터 링크 계층을 통해 상기 트랜잭션 계층 패킷을 전송하는 것인, 방법.
  4. 제 1 항에 있어서, 상기 제 2 논리적 트랜잭션 계층은 상기 물리 계층의 기존 특성(property)들을 활용(leverage)하지만, 상기 제 2 논리적 트랜잭션 계층에 고유한 서비스 클래스(class of service; COS) 속성(attribute)들을 이용(employ)하는 것인, 방법.
  5. 제 4 항에 있어서, 상기 COS 속성들은 저 레이턴시 속성(low latency attribute)들 및 프로토콜 속성들 중 적어도 하나인 것인, 방법.
  6. 제 1 항에 있어서, 상기 트랜잭션 계층 패킷 내에 포함된 적어도 하나의 속성은 상기 제 1 트랜잭션 계층이 인식할 수 없지만, 상기 트랜잭션 계층 패킷의 나머지 필드들은 상기 제 1 트랜잭션 계층에 의해 인식가능한 것인, 방법.
  7. 제 1 항에 있어서, 상기 트랜잭션 계층 패킷의 나머지 필드들은 상기 제 2 논리적 트랜잭션 계층에 고유한 것인, 방법.
  8. 제 1 항에 있어서, 상기 제 2 네트워크 프로토콜은 로드/저장 시맨틱(semantic)들을 포함하는 것인, 방법.
  9. 제 1 항에 있어서, 상기 제 1 네트워크 프로토콜은 PCIe 프로토콜이고, 상기 제 2 네트워크 프로토콜은 CCIX 프로토콜인 것인, 방법.
  10. 제 1 항에 있어서, 상기 제 2 논리적 트랜잭션 계층은 순차적 패킷 전달(in-order packet delivery)을 제공하는 것인, 방법.
  11. 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하는 방법에 있어서,
    제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층에 위치된 트랜잭션 계층 패킷을 수신하는 단계;
    제 2 네트워크 프로토콜을 따르는 제 2 논리적 트랜잭션 계층에 의한 사용을 위해 지정된 상기 제 1 트랜잭션 계층에 위치된 가상 채널로부터 상기 트랜잭션 계층 패킷을 추출하는 단계;
    상기 제 2 논리적 트랜잭션 계층이 인식할 수 있는 상기 제 2 네트워크 프로토콜을 따르는 트랜잭션 계층 패킷을 어셈블링하는 단계; 및
    상기 가상 채널로부터 상기 제 2 논리적 트랜잭션 계층으로 상기 트랜잭션 계층 패킷을 전송하는 단계
    를 포함하는, 기존의 물리적 전송 네트워크에 논리적 전송 네트워크를 투명하게 오버레이하는 방법.
  12. 제 11 항에 있어서, 상기 트랜잭션 계층 패킷은 상기 제 1 트랜잭션 계층이 인식할 수 있는 서드 파티 식별자, 및 상기 제 2 논리적 트랜잭션 계층이 인식할 수 있는 서드 파티 메시지 유형 및 서드 파티 헤더를 포함하는 것인, 방법.
  13. 제 11 항에 있어서, 상기 제 2 논리적 트랜잭션 계층은 물리 계층의 기존 특성들을 활용하지만, 상기 제 2 논리적 트랜잭션 계층에 고유한 서비스 클래스(COS) 속성들을 이용하는 것인, 방법.
  14. 제 11 항에 있어서, 상기 트랜잭션 계층 패킷 내에 포함된 적어도 하나의 속성은 상기 제 1 트랜잭션 계층이 인식할 수 없지만, 상기 트랜잭션 계층 패킷의 나머지 필드들은 상기 제 1 트랜잭션 계층에 의해 인식가능한 것인, 방법.
  15. 기존의 물리적 전송 네트워크에 논리적 트랜잭션 네트워크를 투명하게 오버레이하는 시스템에 있어서,
    컴퓨터 프로세서; 및
    상기 컴퓨터 프로세서에 결합된 메모리
    를 포함하고, 상기 컴퓨터 프로세서는 상기 메모리에 위치된 코드를,
    제 1 네트워크 프로토콜을 따르는 네트워크의 제 1 트랜잭션 계층에 위치된 가상 채널을 지정하고;
    제 2 네트워크 프로토콜의 제 2 논리적 트랜잭션 계층에 트랜잭션 계층 패킷을 어셈블링하고;
    상기 제 2 논리적 트랜잭션 계층으로부터 상기 가상 채널로 상기 트랜잭션 계층 패킷을 전송하며;
    상기 네트워크를 통해 상기 가상 채널을 사용하여 상기 제 1 트랜잭션 계층을 통해 상기 트랜잭션 계층 패킷을 전송하기 위해
    실행하도록 구성되는 것인, 기존의 물리적 전송 네트워크에 논리적 트랜잭션 네트워크를 투명하게 오버레이하는 시스템.
KR1020217003145A 2018-08-02 2019-07-29 고정 pcie 물리적 전송 네트워크를 통한 논리적 전송 KR20210038560A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/053,384 US11477049B2 (en) 2018-08-02 2018-08-02 Logical transport over a fixed PCIE physical transport network
US16/053,384 2018-08-02
PCT/US2019/043912 WO2020028249A1 (en) 2018-08-02 2019-07-29 Logical transport over a fixed pcie physical transport network

Publications (1)

Publication Number Publication Date
KR20210038560A true KR20210038560A (ko) 2021-04-07

Family

ID=67551745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217003145A KR20210038560A (ko) 2018-08-02 2019-07-29 고정 pcie 물리적 전송 네트워크를 통한 논리적 전송

Country Status (6)

Country Link
US (1) US11477049B2 (ko)
EP (1) EP3830708B1 (ko)
JP (1) JP7411633B2 (ko)
KR (1) KR20210038560A (ko)
CN (1) CN112534418B (ko)
WO (1) WO2020028249A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190004990A1 (en) 2017-07-01 2019-01-03 Stephen R. Van Doren Techniques to support mulitple interconnect protocols for an interconnect
US10853296B2 (en) * 2018-12-28 2020-12-01 Intel Corporation Technologies for establishing communication channel between accelerator device kernels
US10817455B1 (en) * 2019-04-10 2020-10-27 Xilinx, Inc. Peripheral I/O device with assignable I/O and coherent domains
US10817462B1 (en) 2019-04-26 2020-10-27 Xilinx, Inc. Machine learning model updates to ML accelerators
US11586369B2 (en) 2019-05-29 2023-02-21 Xilinx, Inc. Hybrid hardware-software coherent framework
US11074208B1 (en) 2019-07-24 2021-07-27 Xilinx, Inc. Routing network using global address map with adaptive main memory expansion for a plurality of home agents
US11474871B1 (en) 2019-09-25 2022-10-18 Xilinx, Inc. Cache coherent acceleration function virtualization
CN113498595B (zh) * 2020-01-22 2022-10-11 华为技术有限公司 一种基于PCIe的数据传输方法及装置
US11556344B2 (en) 2020-09-28 2023-01-17 Xilinx, Inc. Hardware coherent computational expansion memory
CN114579490A (zh) * 2020-11-30 2022-06-03 深圳市中兴微电子技术有限公司 一种数据传输方法、装置、电子设备和存储介质
US11886372B1 (en) * 2021-07-14 2024-01-30 Cadence Design Systems, Inc. Systems and methods for packing of transaction layer (TL) packets
US11722436B2 (en) 2021-08-24 2023-08-08 International Business Machines Corporation Transport control word architecture for physical port mirroring
US12028276B2 (en) 2021-08-24 2024-07-02 International Business Machines Corporation Transport control word architecture for virtual port mirroring
US20220108649A1 (en) * 2021-12-17 2022-04-07 Intel Corporation Asynchronous display pixel data streaming over i/o connections

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050144339A1 (en) * 2003-12-24 2005-06-30 Wagh Mahesh U. Speculative processing of transaction layer packets
TWI273420B (en) * 2005-07-21 2007-02-11 Via Tech Inc Data processing method and system based on a serial transmission interface
JP5108261B2 (ja) * 2006-07-11 2012-12-26 株式会社リコー 情報処理装置およびデータ通信装置
US20080082708A1 (en) * 2006-09-29 2008-04-03 Kar Leong Wong Token hold off for chipset communication
US8234458B2 (en) * 2008-12-09 2012-07-31 Nvidia Corporation System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message
US8199759B2 (en) * 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express
US8291146B2 (en) * 2010-07-15 2012-10-16 Ati Technologies Ulc System and method for accessing resources of a PCI express compliant device
US8904079B2 (en) * 2012-06-25 2014-12-02 Intel Corporation Tunneling platform management messages through inter-processor interconnects
US10915468B2 (en) 2013-12-26 2021-02-09 Intel Corporation Sharing memory and I/O services between nodes
KR102173089B1 (ko) 2014-08-08 2020-11-04 삼성전자주식회사 인터페이스 회로 및 그것의 패킷 전송 방법
US11281618B2 (en) * 2014-10-31 2022-03-22 Xlnx, Inc. Methods and circuits for deadlock avoidance
US9841902B2 (en) * 2014-11-20 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Peripheral component interconnect express controllers configured with non-volatile memory express interfaces
US10229076B2 (en) 2015-09-09 2019-03-12 International Business Machines Corporation Peripheral component interconnect express (PCIE) pseudo-virtual channels using vendor defined messages
US10120809B2 (en) * 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class
CN107992436B (zh) * 2016-10-26 2021-04-09 华为技术有限公司 一种NVMe数据读写方法及NVMe设备
US10587534B2 (en) * 2017-04-04 2020-03-10 Gray Research LLC Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks
US20190004990A1 (en) * 2017-07-01 2019-01-03 Stephen R. Van Doren Techniques to support mulitple interconnect protocols for an interconnect
US11204867B2 (en) * 2017-09-29 2021-12-21 Intel Corporation PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory
US20190042455A1 (en) * 2018-05-04 2019-02-07 Intel Corporation Globally addressable memory for devices linked to hosts
US10606785B2 (en) * 2018-05-04 2020-03-31 Intel Corporation Flex bus protocol negotiation and enabling sequence
CN110519004B (zh) * 2018-05-21 2021-12-14 华为技术有限公司 一种编码方法及相关设备
US20190042511A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Non volatile memory module for rack implementations
US11025544B2 (en) * 2019-06-07 2021-06-01 Intel Corporation Network interface for data transport in heterogeneous computing environments

Also Published As

Publication number Publication date
EP3830708A1 (en) 2021-06-09
US20200044895A1 (en) 2020-02-06
JP7411633B2 (ja) 2024-01-11
JP2021533481A (ja) 2021-12-02
CN112534418B (zh) 2024-06-21
EP3830708B1 (en) 2022-07-06
CN112534418A (zh) 2021-03-19
WO2020028249A1 (en) 2020-02-06
US11477049B2 (en) 2022-10-18

Similar Documents

Publication Publication Date Title
JP7411633B2 (ja) 固定PCIe物理トランスポートネットワーク上の論理トランスポート
US9747245B2 (en) Method, apparatus and system for integrating devices in a root complex
US8537848B2 (en) Flexibly integrating endpoint logic into varied platforms
KR101744465B1 (ko) 데이터를 저장하기 위한 방법 및 장치
US8291141B2 (en) Mechanism to flexibly support multiple device numbers on point-to-point interconnect upstream ports
KR102654610B1 (ko) 멀티스테이지 부트 이미지 로딩 및 프로그램가능 로직 디바이스들의 구성
US10853289B2 (en) System, apparatus and method for hardware-based bi-directional communication via reliable high performance half-duplex link
JP2018531461A6 (ja) マルチステージブートイメージロードおよびプログラマブルロジックデバイスの構成
CN115203095A (zh) PCIe装置及其操作方法
US20040141518A1 (en) Flexible multimode chip design for storage and networking
CN115203101A (zh) PCIe装置及其操作方法
US20170269959A1 (en) Method, apparatus and system to send transactions without tracking
US11563639B1 (en) Logical transport overlayed over a physical transport having a tree topology
JP7383645B2 (ja) システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換
US20230350824A1 (en) Peripheral component interconnect express device and operating method thereof