KR20240046830A - 칩-대-칩 인터페이스를 위한 온-디맨드 패킷화 - Google Patents

칩-대-칩 인터페이스를 위한 온-디맨드 패킷화 Download PDF

Info

Publication number
KR20240046830A
KR20240046830A KR1020247010541A KR20247010541A KR20240046830A KR 20240046830 A KR20240046830 A KR 20240046830A KR 1020247010541 A KR1020247010541 A KR 1020247010541A KR 20247010541 A KR20247010541 A KR 20247010541A KR 20240046830 A KR20240046830 A KR 20240046830A
Authority
KR
South Korea
Prior art keywords
protocol
words
interface
size
word
Prior art date
Application number
KR1020247010541A
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 KR20240046830A publication Critical patent/KR20240046830A/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
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

본 명세서의 실시예들은, 칩-대-칩(C2C) 인터페이스(140)에 대한 데이터 워드들(DW들)(130)로 직접 변환하기에는 너무 큰 데이터(115)가 대신 패킷화되는 온-디맨드 패킷화를 설명한다. C2C 인터페이스(140)의 DW(130)보다 큰 프로토콜 워드(115)를 식별할 때, 프로토콜 계층(120a)은 복수의 프로토콜 워드들(115)이 패킷화되어 전송으로서 발송되는 패킷화를 수행할 수 있다. 일 실시예에서, 프로토콜 계층(120a)은 프로토콜 워드들(120a)이 더 이상 DW(130)의 크기를 초과하지 않도록 프로토콜 워드들 내의 제어 데이터 또는 신호들의 일부 또는 전부를 제거한다. 그런 다음 이러한 단축된 프로토콜 워드들(115)은 DW들(130)로 매핑될 수 있고 C2C(140) 상에서 별도의 패킷들로서 송신될 수 있다. 프로토콜 계층(120a)은 그런 다음 프로토콜 워드들(115)로부터 제거된 제어 데이터의 부분을 수집하고 이 데이터를 C2C 인터페이스(140) 상에서 별도의 패킷으로서 송신할 수 있다.

Description

칩-대-칩 인터페이스를 위한 온-디맨드 패킷화
본 개시의 예들은 일반적으로, 전송(transfer)되는 데이터 워드가 인터페이스 내의 와이어들의 수를 초과하는 칩-대-칩 인터페이스를 통해 데이터를 전송하기 위한 온-디맨드 패킷화에 관한 것이다.
컴퓨터 시스템들이 보다 밀접하게 통합됨에 따라, 칩-대-칩(chip-to-chip; C2C) 인터페이스들이 보다 널리 사용되고 있다. 하나의 이러한 컴퓨팅 시스템은 하나 이상의 칩렛들(예를 들어, 고속 I/O 또는 고대역폭 메모리(HBM))과 통신하기 위해 C2C 인터페이스들을 사용하는 앵커 칩(예를 들어, 프로세서, ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 SOC(system on a chip))이다. 칩렛 기반 아키텍처를 달성하기 위해, C2C 인터페이스는 명확하게 정의되어야 한다. C2C 인터페이스들은 인터페이스를 통과할 수 있는 신호 및 와이어의 수를 제한하는 비치프론트(beachfront)의 영역(예를 들어, 앵커 칩의 측면들)에 의해 제약된다. 따라서, 요구되는 대역폭은 높은 데이터 레이트로 인터페이스를 실행함으로써 달성된다.
그러나, 칩들에서 실행되는 애플리케이션 회로부에 의해 사용되는 데이터 프로토콜은 C2C 인터페이스에 의해 지원되는 데이터 워드들(DW)의 크기와 상이한 워드 크기를 가질 수 있다. 데이터 프로토콜이 C2C 인터페이스에 의해 사용되는 DW보다 큰 워드 크기를 갖는 경우, 칩은 프로토콜 워드와 DW 사이의 일대일 매핑(one-to-one mapping)을 수행할 수 없다. 대신에, 단일 프로토콜 워드가 세분화되어 다수의 DW들로서 C2C 인터페이스를 통해 발송(send)될 수 있다. 그러나, 프로토콜 워드는 DW보다 단지 약간 더 클 수 있으며, 이는 C2C의 대역폭의 많은 부분이 낭비됨을 의미한다. 다른 접근법은 C2C를 통해 더 적은 데이터가 발송되어야 하지만 기능성을 감소시키는 것이 옵션이 아닐 수 있도록 버스 인터페이스의 기능성을 제한하는 것이다.
일 실시예는 애플리케이션 회로부, 칩-대-칩(C2C) 인터페이스 및 애플리케이션 회로부와 C2C 인터페이스 사이에 연결된 프로토콜 계층을 포함하는 집적 회로를 설명한다. 프로토콜 계층은, 각각이 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과하는, C2C 인터페이스 상에서 송신(transmit)될, 복수의 프로토콜 워드들을 애플리케이션 회로부로부터 수신하고, 및 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하고 - 여기서 서브부분들 각각은 DW의 크기와 동일하거나 그보다 작음 -, 그리고 서브부분들에 포함되지 않은 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성함으로써 복수의 프로토콜 워드들을 패킷화하도록 구성된다.
본 명세서에 설명된 다른 실시예는 칩-대-칩(C2C) 인터페이스를 통해 제2 집적 회로에 연결된 제1 집적 회로를 포함하는 시스템이며, 여기서 제1 집적 회로는 애플리케이션 회로부와 C2C 인터페이스 사이에 연결된 프로토콜 계층을 포함한다. 프로토콜 계층은, 각각이 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과하는, C2C 인터페이스 상에서 송신(transmit)될, 복수의 프로토콜 워드들을 애플리케이션 회로부로부터 수신하고, 및 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하고 - 여기서 서브부분들 각각은 DW의 크기와 동일하거나 그보다 작음 -, 그리고 서브부분들에 포함되지 않은 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성함으로써 복수의 프로토콜 워드들을 패킷화하도록 구성된다.
본 명세서에 설명된 다른 실시예는, 집적 회로 내의 프로토콜 계층에서, C2C 인터페이스 상에서 송신될 복수의 프로토콜 워드들을 수신하는 단계 - 복수의 프로토콜 워드들 각각은 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과함 -; 및 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하고 - 서브부분들 각각은 DW의 크기와 동일하거나 그보다 작음 -; 및 서브부분들에 포함되지 않은 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성하는 것에 의해 복수의 프로토콜 워드들을 패킷화하는 단계를 포함하는 방법이다.
위에서 언급된 특징들이 상세히 이해될 수 있는 방식으로, 위에서 간략히 요약된 보다 구체적인 설명이 예시적인 구현예들을 참조하여 이루어질 수 있으며, 이들 중 일부는 첨부된 도면들에 예시된다. 그러나, 첨부된 도면들은 전형적인 예시적인 구현예들만을 예시하고, 따라서 그 범위를 제한하는 것으로 간주되지 않는다는 것에 유의해야 한다.
도 1은 일 예에 따른, 칩-대-칩 인터페이스에 대한 온-디맨드 패킷화를 수행하기 위한 패킷화기(packetizer)들을 갖는 통신 시스템의 블록도이다.
도 2는 일 예에 따른 온-디맨드 패킷화를 수행하기 위한 흐름도이다.
도 3은 일 예에 따른, C2C 인터페이스를 통해 송신되는 데이터를 패킷화하는 것을 예시한다.
도 4는 일 예에 따른, 패킷화를 회피하기 위해 제어 신호들을 인코딩하기 위한 흐름도이다.
도 5는 일 예에 따른 인코딩될 수 있고 인코딩될 수 없는 제어 신호들을 예시한다.
도 6은 일 예에 따라, C2C 인터페이스에서 수신된 데이터 워드들에 대해 제어 신호들을 디코딩하고 역 패킷화를 수행하기 위한 흐름도이다.
다양한 특징들이 도면들을 참조하여 이하에서 설명된다. 도면들은 축척대로 도시될 수 있거나 또는 도시되지 않을 수 있고, 유사한 구조들 또는 기능들의 요소들은 도면들 전체에 걸쳐 유사한 참조 번호들에 의해 표현된다는 점에 유의해야 한다. 도면들은 특징들의 설명을 용이하게 하기 위해서만 의도된다는 점에 유의해야 한다. 이들은 특징들의 완전한 설명으로서 또는 청구항들의 범위에 대한 제한으로서 의도되지 않는다. 또한, 예시된 예는 도시된 모든 양태들 또는 장점들을 가질 필요는 없다. 특정 예와 관련하여 설명된 양태 또는 장점은 반드시 그 예로 제한되지 않으며, 그렇게 예시되지 않거나 그렇게 명시적으로 설명되지 않더라도 임의의 다른 예들에서 실시될 수 있다.
본 명세서의 실시예들은 너무 커서 C2C 인터페이스에 대한 DW들로 직접 변환될 수 없는 데이터가 대신 패킷화되는 온-디맨드 패킷화를 설명한다. 예를 들어, 제한된 와이어들 때문에, C2C는 단지 288 비트의 DW를 지원할 수 있지만, 프로토콜(예를 들어, 데이터 스트리밍 프로토콜)은 300 비트인 워드들을 생성할 수 있다. 프로토콜 워드들은 C2C 인터페이스 상에서 송신될 때 2개의 DW들로 매핑될 수 있지만, 이는 C2C 인터페이스의 576 비트들이 300 비트들만을 송신하기 위해 사용되어, C2C 인터페이스의 대역폭의 52% 이용도(utilization)를 초래한다는 것을 의미할 것이다. 대신에, C2C 인터페이스의 DW보다 큰 프로토콜 워드를 식별할 때, 프로토콜 계층은 복수의 프로토콜 워드들이 패킷화되어 전송(transfer)으로서 발송되는 패킷화를 수행할 수 있다. 일 실시예에서, 프로토콜 계층은 프로토콜 워드들이 더 이상 DW의 크기를 초과하지 않도록 프로토콜 워드들 내의 제어 데이터 또는 신호들(예를 들어, 스트로브 신호들, 리던던시 비트들, 오류 정정 비트들, 플래그들 등)의 일부 또는 전부를 제거한다. 그런 다음 이러한 단축된 프로토콜 워드들은 DW들로 매핑될 수 있고 C2C 상에서 별도의 패킷들로서 송신될 수 있다. 프로토콜 계층은 그런 다음 프로토콜 워드들로부터 제거된 제어 데이터의 부분을 수집하고 이 데이터를 C2C 인터페이스 상에서 별도의 패킷으로서 송신할 수 있다. 이것은 (수신 칩이 프로토콜 워드들을 재구성할 수 있기 전에 제어 비트들이 수신되기를 기다려야 하기 때문에) 약간의 레이턴시를 도입할 수 있지만, 이는 C2C 인터페이스에서 낭비되는 대역폭의 양을 감소시킨다.
다른 실시예에서, 큰 프로토콜 워드들을 패킷화하는 대신에, 프로토콜 계층은, 프로토콜 워드들이 DW들의 크기와 동일하거나 그보다 작도록 프로토콜 워드들의 크기를 감소시키기 위해 제어 데이터를 인코딩할 수 있다. 예를 들어, 제어 데이터는 일련의 연속적인 1 또는 0을 가질 수 있다. 각각의 1 또는 0을 저장하는 대신에, 프로토콜 계층은 시리즈가 시작되거나 종료되는 곳을 표시하기 위해 프로토콜 워드를 단지 인코딩할 수 있다. 그러나, 프로토콜 계층이 DW보다 작도록 프로토콜 워드를 인코딩할 수 없는 경우, 패킷화가 사용될 수 있다.
도 1은 일 예에 따른, C2C 인터페이스(140)에 대한 온-디맨드 패킷화를 수행하기 위한 패킷화기(125)를 갖는 통신 시스템(100)의 블록도이다. 도시된 바와 같이, 시스템(100)은 집적 회로들(IC들 또는 칩들)(105A 및 105B)을 포함한다. 통신 시스템(100)은 앵커 칩렛 시스템, 또는 2개의 IC들이 C2C 인터페이스를 사용하여 직접 통신하는 임의의 다른 시스템일 수 있다. IC들(105)은 ASIC들, FPGA들, SoC들, CPU들, 메모리들 등일 수 있다.하나의 IC(105)는 1차 IC일 수 있는 반면, 다른 하나는 2차 IC이거나, 또는 IC들(105)은 피어들일 수 있다. 일 실시예에서, IC들(105)은 동일한 기판 상에 나란히 배치될 수 있거나, 이들은 적층된 형태로 배열될 수 있다.
이 예에서, 각각의 IC(105)는 유사한 컴포넌트들: 애플리케이션 회로부(110), 프로토콜 계층(120), 링크 계층(130), 및 물리(PHY) 계층(135)을 포함한다. 애플리케이션 회로부(110)는 사용자 기능을 수행하는 임의의 회로부를 나타낸다. 회로부(110)는 프로세서 코어, 데이터 처리 엔진, 그래픽 처리 유닛 등과 같은 프로그래밍 가능하지 않는(하드닝된) 회로부를 포함할 수 있다. 또는, 회로부(110)는 구성 가능한 로직 블록들(CLB들) 또는 즉석에서(on the fly) 사용자에 의해 맞춤화될 수 있는 다른 유형의 프로그래밍 가능한 로직과 같은 프로그래밍 가능한 회로부를 포함할 수 있다. 어느 경우든, 애플리케이션 회로부(110)는 C2C 인터페이스(140)를 사용하여 다른 IC(105)로 전송되는 데이터를 생성한다.
애플리케이션 회로부(110)는 특정 프로토콜을 사용하여 IC(105) 내의 다른 하드웨어 요소들, 예를 들어, 프로토콜 계층(120)에 데이터를 송신한다. 프로토콜은 종종 C2C 인터페이스(140) 상에서 데이터를 송신하는데 사용되는 프로토콜과 상이하다. C2C 인터페이스(140) 상에서 애플리케이션 회로부(110)로부터 수신된 데이터를 송신할 때, 프로토콜 계층(120)은 애플리케이션 회로부(110)에 의해 사용되는 프로토콜과 호환되는 프로토콜 워드(115)를 C2C 인터페이스(140)와 호환되는 DW(150)로 매핑하기 위한 변환을 수행한다. 본 명세서의 실시예들은 임의의 특정 유형의 프로토콜에 제한되지 않고, 오히려 내부 회로부가 C2C 인터페이스(140)와 상이하거나 호환되지 않는 통신 프로토콜을 사용하는 임의의 IC에 적용될 수 있다. 예를 들어, 애플리케이션 회로부(110)는 AXI(Advanced EXtensible Interface), AXI 스트리밍, AMBA-CXS(Advanced Microcontroller Bus Architecture), 또는 PCIe(peripheral Interconnect Component Express)와 같은 데이터 프로토콜을 사용할 수 있다.
프로토콜 계층들(120)은 프로토콜 워드들(115)을 DW(150)로 그리고 DW(150)를 프로토콜 워드들(115)로 변환하기 위한 패킷화기(125)를 포함한다. 아래에서 더 상세히 논의되지만, 일반적으로 패킷화기들(125)(예를 들어, 프로토콜 계층(120) 내의 회로부)은 프로토콜 워드들(115)의 제어 데이터의 일부 또는 전부를 제거하여 결과적인 단축된 프로토콜 워드들(115)이 DW들(150)로 일대일로 매핑될 수 있다. 그런 다음, 제거된 제어 데이터는 별도의 패킷(예를 들어, 다른 DW(150))으로 발송될 수 있다. 수신 IC(105)의 패킷화기(125)는 패킷들(예를 들어, DW들(150))로부터 프로토콜 워드들(115)을 재구성하고 프로토콜 워드들(115)을 애플리케이션 회로부로 송신할 수 있다. 이러한 방식으로, C2C 인터페이스(140)의 대역폭은 하나의 프로토콜 워드(115)를 둘 이상의 DW들(150)로 매핑하는 것에 비해 더 효율적으로 사용될 수 있다.
IC들(105)은 또한 C2C 인터페이스(140)를 따라 통신하기 위한 링크 계층들(130) 및 PHY 계층들(135)을 포함한다. 위에서 언급한 바와 같이, C2C 인터페이스(140)는 IC들(105) 사이에 와이어 연결들을 형성하기 위해 제한된 리얼 에스테이트(real estate)을 가질 수 있다. 그 결과, DW(150)의 크기(예를 들어, 비트 수)는 프로토콜 워드(115)의 크기보다 작을 수 있다. 그러나, 패킷화는 C2C 인터페이스의 대역폭을 최대화하는 효율적인 방식으로 프로토콜 워드들(115)의 크기를 감소시키기 위해 수행될 수 있다.
도 2는 일 예에 따른 온-디맨드 패킷화를 수행하기 위한 방법(200)의 흐름도이다. 블록(205)에서, 프로토콜 계층 내의 패킷화기는 애플리케이션 회로부로부터 수신된 프로토콜 워드가 C2C 인터페이스를 통해 데이터를 송신하는데 사용되는 DW들의 크기를 초과하는지 여부를 결정한다. 이 실시예에서, 프로토콜 워드들은 때때로 DW들보다 크지만, 다른 경우들은 그렇지 않다. 예를 들어, 일부 프로토콜 워드들은 다른 프로토콜 워드들보다 더 많은 데이터 또는 더 많은 제어 비트들을 가질 수 있다. 다른 예에서, 애플리케이션 회로부는 프로토콜 계층에 데이터를 송신하기 위해 2개의 상이한 프로토콜들을 사용할 수 있으며, 여기서 하나의 프로토콜(예를 들어, 스트리밍 프로토콜)은 DW의 크기를 초과하는 프로토콜 워드들을 갖지만 다른 프로토콜(예를 들어, 메모리 매핑된 프로토콜)은 그렇지 않다.
프로토콜 워드가 DW의 크기를 초과하지 않는 경우, 블록(210)에서, 패킷화기는 프로토콜 워드를 DW로 일대일 매핑하는 것을 수행한다. 즉, 프로토콜 워드 내의 모든 비트들은 DW 내의 대응하는 비트에 매핑될 수 있다. 그 결과, 프로토콜 워드는 C2C 인터페이스를 통해 단일 DW로 송신될 수 있다.
그러나, 프로토콜 워드가 DW의 크기를 초과하는 경우, 블록(215)에서 패킷화기는 복수의 프로토콜 워드들을 패킷화한다. 즉, 패킷화기는 단축된 프로토콜 워드들이 대응하는 DW들에 매핑되어 C2C 인터페이스 상에서 송신될 수 있도록 워드들 내의 제어 데이터/비트들의 전부 또는 일부를 제거함으로써 프로토콜 워드들을 단축시킨다.
이러한 패킷화는 2개의 블록들로 표현될 수 있으며, 여기서 블록(220)에서, 패킷화기는 프로토콜 워드들의 데이터 부분들을 별도의 DW 패킷들로 매핑한다. 예를 들어, 패킷화기는 프로토콜 워드들로부터 모든 제어 비트들을 제거하여 이들 워드들이 이제 데이터 비트들(예를 들어, 사용자 또는 애플리케이션 데이터)만을 포함하고 DW들과 동일하거나 그보다 작도록 할 수 있다. 그 결과, 이들 프로토콜 워드들은 이제 DW들과 일대일로 매핑될 수 있다.
다른 예에서, 패킷화기는 제어 비트들(예를 들어, 스트로브 신호들)의 일부만을 제거할 수 있지만 다른 유형들의 제어 비트들(예를 들어, 오류 리던던시 비트들)을 남겨서, 프로토콜 워드들이 데이터 비트들 또는 사용자 데이터뿐만 아니라 제어 비트들의 나머지 부분을 포함하도록 할 수 있다. 다시, 이는 제어 비트들의 일부를 제거하는 것이 프로토콜 워드들을 DW들과 동일하거나 그보다 작도록 충분히 축소시킨다고 가정한다. 제어 데이터/비트들의 전부 또는 일부만이 제거되는지 여부에 관계없이, 단축된 프로토콜 워드들은 그런 다음 DW들에 매핑되고 각각의 패킷들로서 발송될 수 있다.
블록(225)에서, 패킷화기는 블록(220)에서 복수의 프로토콜 워드들 각각으로부터 제거된 제어 데이터를 포함하는 DW 패킷을 생성한다. 즉, 패킷화기는 블록(220)에서 모든 프로토콜 워드들로부터 제거된 제어 데이터/비트들을 수집하고, 그런 다음 C2C 인터페이스를 통해 자신의 패킷(예를 들어, DW)으로 이러한 제어 데이터를 송신할 수 있다. 블록들(220 및 225)은 도 3에 예시되어 있다.
도 3은 일 예에 따른, C2C 인터페이스를 통해 송신되는 데이터를 패킷화하는 것을 예시한다. 이 예에서, 송신기(예를 들어, 도 1의 IC들(105) 중 하나)는 8개의 프로토콜 워드들(115)을 수신기(예를 들어, 도 1의 IC들(105) 중 다른 하나)에 송신하기를 원한다. 프로토콜 워드들(115) 각각은 제어 데이터 및 사용자 데이터를 포함한다. 각각의 프로토콜 워드(115)(제어 데이터 + 사용자 데이터)의 총 크기는 C2C 인터페이스에 의해 지원되는 DW의 크기를 초과한다고 가정한다.
DW들에 매핑될 수 있도록 프로토콜 워드들(115)의 크기를 감소시키기 위해, 패킷화기는 프로토콜 워드들(115) 각각으로부터 제어 데이터를 제거한다. 도 3의 좌측 하단에 도시된 바와 같이, 패킷화기는 프로토콜 워드들(115)의 사용자 데이터(예를 들어, 데이터 부분)를 별도의 DW들(즉, DW(150B-150I))로서 발송한다. 패킷화기는 또한 프로토콜 워드들(115)로부터 제거된 제어 데이터를 수집하고 이를 별도의 패킷(즉, DW(150A))으로서 송신한다. 이러한 방식으로, 8개의 프로토콜 워드들(115)은 패킷화되고 C2C 인터페이스 상에서 9개의 DW들(150A-I)로서 송신된다.
도 3은 모든 제어 데이터를 제거하는 것을 예시하지만, 위에서 언급한 바와 같이, 패킷화기는 DW들과 일대일 매핑을 수행하기 위해 프로토콜 워드들(115)의 크기를 충분히 감소시키기 위해 제어 데이터의 일부만을 제거하기만 하면 될 수 있다. 또한, 그룹(그들의 제어 데이터가 수집됨)으로 패킷화된 프로토콜 워드들(115)의 수는 사용자 설정 속성일 수 있다. 도 3은 8개의 프로토콜 워드들(115)을 패킷화하는 것을 예시하지만, 다른 실시예들에서, 4개 또는 16개의 프로토콜 워드들(115)이 수집되고 패킷화될 수 있다. 예를 들어, 패킷화기는 4개의 프로토콜 워드들을 수신하고, 이러한 워드들로부터 제어 데이터의 일부 또는 전부를 제거하고, C2C 인터페이스 상에서 5개(또는 6개)의 DW들을 송신할 수 있으며, 여기서 이러한 5개의 DW들 중 하나(또는 6개의 DW들 중 2개)는 제어 데이터를 포함한다.
도 3의 우측은 프로토콜 계층에서 9개의 DW들(150A-I)을 수신하는 수신기를 예시한다. DW들(150)을 송신기에 의해 생성된 동일한 프로토콜 워드들(115)로 다시 변환하기 위해, 패킷화기는 제어 데이터를 포함하는 DW(150A)를 수신해야 한다. 이 패킷이 수신되면, 패킷화기는 DW(150A) 내의 제어 데이터를 DW들(150B-I) 내의 대응하는 사용자 데이터와 조합함으로써 프로토콜 워드들(115)을 재구성할 수 있다.
패킷화를 수행하는 것은, 예를 들어, 프로토콜 워드들 각각을 2개의 DW들에 매핑하는 것에 비해 대역폭 이용도가 향상될 수 있다. 그 경우, C2C 인터페이스는 8개의 프로토콜 워드들(115)에 대해 16개의 DW들을 송신해야 할 것이다. 패킷화가 일부 추가적인 레이턴시를 인젝트(inject)할 수 있지만(패킷화기가 DW들(150B-I)을 다시 프로토콜 워드들(115)로 변환하기 위해 제어 데이터를 포함하는 DW(150A)를 기다려야 하기 때문에), C2C 인터페이스는 9개의 DW들만을 송신해야 하며, 이는 다른 프로토콜 워드들(예를 들어, 8개의 프로토콜 워드들의 다른 뱃치(batch))을 송신하는 데 사용될 수 있는 대역폭을 절약한다.
도 4는 일 예에 따른, 패킷화를 회피하기 위해 제어 신호들을 인코딩하기 위한 방법(400)의 흐름도이다. 패킷화는 프로토콜 워드들을 다수의 DW들에 매핑하는 것에 비해 성능을 개선할 수 있지만, 그것은 레이턴시를 추가한다. 따라서, 프로토콜 워드의 크기가 DW의 크기와 동일하거나 그보다 작도록 프로토콜 워드에서 제어 데이터를 인코딩하는 것이 유리할 수 있는데, 이는 그렇게 하는 것이 일대일 매핑을 허용하고 패킷화와 연관된 레이턴시를 회피할 것이기 때문이다. 방법(400)은 제어 데이터를 인코딩할 수 있는 패킷화기를 예시한다.
블록(405)에서, 패킷화기는 프로토콜 워드가 DW의 크기를 초과하는지 여부를 결정한다. 이는, 어떤 경우에는 프로토콜 워드가 DW보다 클 수 있지만, 다른 경우에는 프로토콜 워드가 DW보다 작거나 동일할 수 있는 방법(200)의 블록(205)과 유사할 수 있다. 프로토콜 워드가 DW와 동일하거나 더 작은 경우, 방법(400)은 방법(200)의 블록(210)으로 진행하고, 여기서 프로토콜 워드는 일대일 매핑을 사용하여 송신된다. 그렇지 않으면, 방법(400)은 패킷화기가 제어 신호에 홀(hole)이 있는지 여부를 결정하는 블록(410)으로 진행한다. 달리 말하면, 패킷화기는 프로토콜 워드 내의 제어 데이터가 더 작은 크기로 인코딩될 수 있는지 여부를 결정한다. 일반적으로, 제어 데이터가 홀을 포함하는 경우 - 예를 들어, 양쪽에서 0으로 경계를 이루는 일련의 1, 또는 양쪽에서 1로 경계를 이루는 일련의 0, 또는 복수의 프로토콜 워드들의 전송의 마지막이 아닌 워드에서 일련의 1이 끝나거나, 또는 복수의 프로토콜 워드들의 전송의 마지막 워드에서 일련의 1이 시작하는 경우 - 이는 제어 데이터가 인코딩될 수 없음을 의미한다. 이 경우, 방법(400)은 도 3에 도시된 바와 같이 패킷화가 수행되는 방법(200)의 블록(215)으로 진행한다.
도 5는 일 예에 따른 인코딩될 수 있고 인코딩될 수 없는 제어 데이터를 예시한다. 즉, 도 5는 홀을 갖는 프로토콜 워드들의 전송에서의 제어 데이터와 홀을 갖지 않는 제어 데이터를 예시한다. 도 5의 제어 데이터는 AXI 스트리밍에서의 스트로브 신호들이지만, 본 명세서의 실시예들은 일련의 1 또는 0(예를 들어, 식별가능한 패턴)을 갖는 제어 데이터를 갖는 임의의 프로토콜에 적용될 수 있다. 이 예에서, 해칭을 갖는 제어 데이터의 부분은 "1"(유효 비트)을 표시하는 반면, 제어 데이터의 빈 부분은 "0"(무효 비트)을 표시한다. 또한, 실시예들은 다른 유형들의 식별 가능한 패턴들을 갖는 제어 데이터를 갖는 임의의 프로토콜에 또한 적용될 수 있다. 예를 들어, 제어 데이터는 더 적은 비트를 사용하여 인코딩될 수 있는 1 및 0(예를 들어, 0011001100)의 하나 이상의 패턴을 가질 수 있다. 따라서, 실시예들은 일련의 1 또는 0을 포함하는 제어 데이터로 제한되지 않는다.
도 5의 상위 4개의 예들은 홀들을 갖지 않는 프로토콜 워드들의 전송을 위한 제어 데이터를 예시한다. 이러한 예들에서, 제어 데이터는 인코딩되거나 압축될 수 있다. 예를 들어, 제어 데이터의 모든 비트를 송신하는 대신, DW는 전송에서의 마지막이 아닌 프로토콜 워드에서 첫 번째 유효 바이트 위치의 위치(즉, TLAST가 0일 때) 또는 전송에서의 마지막 프로토콜 워드에서 첫 번째 무효 바이트의 위치(즉, TLAST가 1일 때)를 표시할 수 있다. 플래그 비트는 전송을 위한 제어 데이터의 모든 데이터 바이트가 유효한 때를 표시하는 데 사용될 수 있다. 이러한 방식으로, 스트로브 신호들에 홀들이 없을 때, DW는 모든 제어 데이터를 인코딩 또는 표현하기 위해 단지 몇 비트(예를 들어, 32 비트 이하)만을 필요로 한다. 이러한 제어 데이터의 인코딩 또는 압축은, 인코딩된 프로토콜 워드와 DW 사이에서 일대일 매핑이 수행될 수 있도록 프로토콜 워드의 크기를 감소시키기에 충분할 수 있다. 예를 들어, 프로토콜 워드가 300 비트이지만 DW가 288인 경우, 프로토콜 워드에서 제어 데이터를 인코딩하는 것은, 각각의 비트가 DW의 대응하는 비트에 매핑될 수 있도록 이를 288 비트 이하로 감소시킬 수 있다.
도 5의 하위 6개의 예들은 제어 데이터에 홀들이 있는 예들을 예시하며, 이는 제어 데이터가 인코딩되거나 압축될 수 없음을 의미한다. AXI 스트리밍을 예로 들면, 프로토콜 워드들의 전송은 다음 조건들 중 하나 이상이 거짓(false)인 경우 홀을 갖는다:
TLAST == 0 및 TKEEP[W-1] == 0
TKEEP[N-1:0]은 모두 1이고, TKEEP[M-1:N+K]는 모두 1이고, TKEEP[N+K-1:N]은 모두 0이며, 여기서 K >= 1, M > N+1, M <= W이다
TKEEP[N-1:0]은 모두 0이고, TKEEP[M-1:N+K]는 모두 0이고, TKEEP[N+K-1:N]은 모두 1이며, 여기서 K >= 1, M > N+1, M <= W
TLAST == 1 및 TKEEP[0] == 0이고, 여기서 W는 AXI-S 인터페이스에서의 TKEEP 신호의 폭이고, M은 프로토콜 워드에서의 데이터 비트들이고, N은 프로토콜 워드에서의 제어 비트들이다.
방법(400)으로 돌아가서, 전송(예를 들어, 프로토콜 워드들의 그룹)에 홀들이 없다고 가정하면, 방법(400)은 패킷화기가 인코딩된 프로토콜 워드(들)의 크기가 DW의 크기를 초과하지 않도록 제어 데이터를 인코딩하는 블록(415)으로 진행한다. 도 5의 예를 사용하여, DW의 일부 비트들은 전송에서의 마지막이 아닌 프로토콜 워드에서의 첫 번째 유효 바이트 위치의 위치, 또는 전송에서의 마지막 프로토콜 워드에서의 첫 번째 무효의 위치를 표시하기 위해 사용된다. 플래그 비트는 전송을 위한 제어 데이터의 모든 데이터 바이트가 유효한 때를 표시하는 데 사용될 수 있다.
블록(420)에서, 패킷화기는 각각의 DW들로의 전송에서 인코딩된 프로토콜 워드(들)에 대한 일대일 매핑을 수행할 수 있다. 그 결과, 인코딩된 프로토콜 워드들은 원본(original)이 DW의 크기를 초과하지 않았던 프로토콜 워드와 동일한 효율성으로 C2C 상에서 송신될 수 있다. 따라서, 프로토콜 워드들을 인코딩하는 것은 패킷화에 의해 도입된 레이턴시를 회피할 수 있다.
프로토콜 워드들을 인코딩하는 것은 수학적으로 설명될 수 있다. 프로토콜(예를 들어, 버스 인터페이스)이 M 데이터 비트(예를 들어, 사용자 데이터) 및 N 제어 비트를 포함하는 워드를 프로토콜 계층에 송신한다고 가정한다. DW가 이용가능한 D 와이어들을 갖는다고 가정한다. 이 문제는 다음과 같이 기술된다: M + N > D, M < D, N < D가 주어지면, 제한된 기능성 하에서 N을 K로 제한하여 M + K ≤ D가 되도록 하는 방법을 정의하고, N을 K로 제한할 수 없을 때 N을 패킷화하는 방법을 정의하여, 대역폭과 레이턴시 사이의 원하는 트레이드 오프가 달성될 수 있다. N이 K로 압축될 수 없도록 전송이 도착하면, 패킷화기는 블록(410)의 "예" 결과에 의해 도시된 바와 같이 전송을 패킷화한다. 패킷화는 다음과 같이 표현될 수 있다: R을 N*R ≤ D-1 < N*(R+1)이 되도록 양의 정수라 하자. 패킷화기는 R 전송들을 누적(accumulate)하고, N 제어 비트들을 스트립하고, 이들을 레지스터에 별도로 누적한다. 일단 R 전송들이 누적되면, 패킷화기는 R 제어 비트들일 "헤더" 플리트(flit)를 발송하고, 이어서 R 전송들이 이어진다. 이것은 위의 도 3에 예시되어 있다.
그렇지 않고, N이 K로 압축될 수 있다면, 패킷화기는 이들 인코딩된 워드들이 DW들과 일대일 매핑될 수 있도록 프로토콜 워드들을 압축한다. 이는 방법(400)의 블록들(415 및 420)에 의해 예시된다.
또한, 방법(400)은 DW의 크기를 초과하는 프로토콜 워드들을 항상 생성하는 프로토콜과 함께 사용되도록 수정될 수 있다. 그 경우, 프로토콜 워드들이 항상 DW보다 크기 때문에 블록(405)의 로직은 생략될 수 있다. 그러나, 패킷화기는 프로토콜 워드들이 (예를 들어, 제어 데이터가 홀을 갖지 않을 때) 인코딩될 수 있는지 또는 압축될 수 있는지를 즉석에서 결정할 수 있고, 그렇다면, 패킷화를 수행하지 않고 인코딩된 프로토콜 워드들을 송신할 수 있기 때문에, 여전히 패킷화는 "온-디맨드"이다. 그러나, 프로토콜 워드들이 그들의 크기가 DW의 크기와 동일하거나 그보다 작게 감소되도록 압축되거나 인코딩될 수 없으면, 패킷화가 수행된다.
도 6은 일 예에 따른, 제어 신호들을 디코딩하고 칩-대-칩 인터페이스에서 수신된 데이터 워드들에 대해 역 패킷화를 수행하기 위한 방법(600)의 흐름도이다. 방법(400)은 송신기 IC의 패킷화기에서의 로직을 설명하지만, 방법(600)은 수신기 IC의 패킷화기에서의 로직을 설명한다.
블록(605)에서, 패킷화기는 C2C 인터페이스를 통해 송신된 후에 PHY 및 링크 계층들로부터 DW를 수신한다. 블록(610)에서, 패킷화기는, 인코딩된 제어 데이터를 사용하여, 또는 패킷화에 의해, DW가 정상적으로(즉, 인코딩되거나 패킷화되지 않고) 발송되었는지를 결정한다. 예를 들어, 전송에서의 제1 DW는 송신 패킷화기가 프로토콜 워드들을 어떻게 처리했는지(예를 들어, DW와의 직접 일대일 매핑, 수행된 제어 데이터 인코딩, 또는 패킷화)를 표시하기 위해 사용되는 하나 이상의 비트들을 가질 수 있다.
DW가 정상적으로 발송되었다면(즉, 원래의 프로토콜 워드가 DW의 크기를 초과하지 않았다면), 방법(600)은 패킷화기가 DW를 다시 프로토콜 워드로 변환하는 블록(615)으로 진행한다.
그러나, 송신 패킷화기가 제어 데이터를 인코딩한 경우, 방법(600)은 수신 패킷화기가 DW에서 제어 데이터를 디코딩하는 블록(620)으로 진행한다. 즉, 패킷화기는 인코딩된 데이터를 평가하고, 전송에서의 마지막이 아닌 프로토콜 워드에서 첫 번째 유효 바이트 위치의 위치, 또는 전송에서의 마지막 프로토콜 워드에서 첫 번째 무효의 위치를 결정할 수 있다. 또는 패킷화기는 전송을 위한 제어 데이터의 모든 데이터 바이트들이 유효한 때를 결정하기 위해 플래그 비트를 평가할 수 있다.
블록(625)에서, 일단 디코딩되면, 패킷화기는 이 정보를 사용하여 디코딩된 DW를 원래의 프로토콜 워드로 변환할 수 있다.
DW가 패킷화된 경우, 방법(600)은 수신 패킷화기가 전체 패킷 전송을 수신할 때까지 기다리는 블록(630)으로 진행한다. 예를 들어, 도 3에 도시된 바와 같이, 패킷화기는 각각의 패킷화 전송이 9개의 DW들을 포함한다는 것을 알 수 있고, 이와 같이, DW가 전송에서 제1 워드임을 검출할 때, 패킷화기는 그 전송에서 9개의 DW들 모두를 수신할 때까지 기다린다.
블록(635)에서, 패킷화기는 제거된 제어 데이터를 프로토콜 워드들에 다시 병합한다. 이러한 방식으로, 패킷화 프로세스는 도 3의 마지막 단계에 의해 도시된 바와 같이 원래의 프로토콜 워드들이 재구성되도록 역전된다.
전술한 내용에서, 본 개시에서 제시된 실시예들이 참조된다. 그러나, 본 개시의 범위는 설명된 특정 실시예들로 제한되지 않는다. 대신에, 설명된 특징들과 요소들의 임의의 조합은 상이한 실시예들에 관련되든 아니든, 고려되는 실시예들을 구현하고 실시하는 것으로 고려된다. 뿐만 아니라, 본원에서 개시된 실시예들은 다른 가능한 솔루션들에 비해 또는 종래 기술에 비해 장점들을 달성할 수 있지만, 소정의 실시예에 의해 특정 장점이 달성되든 안 되든, 본 개시의 범위를 제한하는 것은 아니다. 이에 따라, 전술한 양태들, 특징들, 실시예들 및 장점들은 단지 예시적인 것이고, 청구항(들)에서 명시적으로 언급되는 경우를 제외하고는 첨부되는 청구항들의 요소들 또는 제한들로 고려되지 않는다.
당업자에 의해 이해될 바와 같이, 본원에서 개시된 실시예들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 이에 따라, 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함), 또는 본원에서 "회로", "모듈" 또는 "시스템"으로 모두 일반적으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 조합하는 실시예의 형태를 취할 수 있다. 뿐만 아니라, 양태들은 컴퓨터 판독가능 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독가능 매체(들)로 구현되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체일 수 있다. 컴퓨터 판독가능 저장 매체는 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 전술한 것의 임의의 적절한 조합일 수 있지만, 이에 제한되는 것은 아니다. 컴퓨터 판독가능 저장 매체의 보다 구체적인 예들(불완전한 리스트)은 하나 이상의 와이어를 갖는 전기 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능 프로그래밍 가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 전술한 것의 임의의 적절한 조합을 포함할 것이다. 본 문헌의 맥락에서, 컴퓨터 판독가능 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 포함하거나, 또는 저장할 수 있는 임의의 유형 매체이다.
컴퓨터 판독가능 신호 매체는 예를 들어, 기저대역에서 또는 반송파의 일부로서 컴퓨터 판독가능 프로그램 코드가 구현된 전파된 데이터 신호를 포함할 수 있다. 이러한 전파된 신호는 전자기, 광학, 또는 이의 임의의 적절한 조합을 포함하지만 이에 제한되지 않는 다양한 형태들 중 임의의 형태를 취할 수 있다. 컴퓨터 판독가능 신호 매체는 컴퓨터 판독가능 저장 매체가 아닌, 그리고 명령어 실행 시스템, 장치, 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 통신, 전파, 또는 전송할 수 있는 임의의 컴퓨터 판독가능 매체일 수 있다.
컴퓨터 판독가능 매체 상에 구현된 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등, 또는 전술한 것의 임의의 적절한 조합을 포함하지만 이에 제한되지 않는 임의의 적절한 매체를 사용하여 송신될 수 있다.
본 개시의 양태들에 대한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 Java, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 이상의 프로그래밍 언어의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 전적으로 사용자의 컴퓨터 상에서, 부분적으로 사용자의 컴퓨터 상에, 독립형 소프트웨어 패키지로서, 부분적으로 사용자 컴퓨터 상에서 그리고 부분적으로 원격 컴퓨터 상에서 또는 전적으로 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하는 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 연결은 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대해 이루어질 수 있다.
본 개시의 양태들은 본 개시에서 제시된 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 아래에서 설명된다. 흐름도들 및/또는 블록도들의 각 블록, 및 흐름도들 또는 블록도들의 블록들의 조합들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것이 이해될 것이다. 이러한 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터, 또는 기계를 생성하기 위한 다른 프로그래밍 가능한 데이터 처리 장치의 프로세서에 제공될 수 있어서, 컴퓨터 또는 다른 프로그래밍 가능한 데이터 처리 장치의 프로세서를 통해 실행되는 명령어들은 흐름도 및/또는 블록도 블록 또는 블록들에서 특정된 기능들/동작들을 구현하기 위한 수단들을 생성한다.
또한, 이러한 컴퓨터 프로그램 명령어들은 컴퓨터, 다른 프로그래밍 가능한 데이터 처리 장치, 또는 다른 디바이스들에 특정 방식으로 기능할 것을 지시할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있어서, 컴퓨터 판독가능 매체 내에 저장된 명령어들은 흐름도 및/또는 블록도 블록 또는 블록들에서 특정된 기능/동작을 구현하는 명령어들을 포함하는 제조품을 생성한다.
또한, 컴퓨터 프로그램 명령어들은 컴퓨터 또는 다른 프로그래밍 가능한 장치 상에서 실행되는 명령어들이 흐름도 및/또는 블록도 블록 또는 블록들에서 특정된 기능들/동작들을 구현하기 위한 프로세스들을 제공하도록 컴퓨터, 다른 프로그래밍 가능한 장치 또는 다른 디바이스들 상에서 일련의 동작 단계들이 수행되게 하는 컴퓨터, 다른 프로그래밍 가능한 데이터 처리 장치, 또는 다른 디바이스 상에 로딩될 수 있다.
도면들에서의 흐름도들 및 블록도들은 본 발명의 다양한 예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현예들의 아키텍처, 기능, 및 동작을 도시한다. 이와 관련하여, 흐름도들 또는 블록도들 내의 각 블록은 모듈, 세그먼트, 또는 특정된 로직 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어를 포함하는 명령어들의 부분을 나타낼 수 있다. 일부 대안적인 구현예들에서, 블록에서 언급된 기능들은 도면들에서 표시된 순서와 다르게 일어날 수 있다. 예를 들어, 연속적으로 도시된 두 개의 블록들은 실제로는, 실질적으로 동시에 실행될 수 있거나, 블록들은 때때로 수반되는 기능성에 따라, 역순으로 실행될 수 있다. 또한, 블록도들 및/또는 흐름도 예시의 각각의 블록, 및 블록도들 및/또는 흐름도 예시에서의 블록들의 조합들은 특정 기능들 또는 동작들을 수행하거나 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들을 수행하는 특수 목적 하드웨어 기반 시스템들에 의해 구현될 수 있다는 점에 유의할 것이다.
개시된 기술의 일부 비제한적인 예들은 다음과 같이 표현될 수 있다.
예 1. 집적 회로로서,
애플리케이션 회로부;
칩-대-칩(C2C) 인터페이스; 및
상기 애플리케이션 회로부와 상기 C2C 인터페이스 사이에 연결된 프로토콜 계층을 포함하고, 상기 프로토콜 계층은:
각각이 상기 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과하는, 상기 C2C 인터페이스 상에서 송신될, 복수의 프로토콜 워드들을 상기 애플리케이션 회로부로부터 수신하고, 및
상기 복수의 프로토콜 워드들을 패킷화하도록 구성되고, 상기 패킷화하는 것은:
상기 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하는 것 - 상기 서브부분들 각각은 상기 DW의 크기와 동일하거나 그보다 작음 -; 및
상기 서브부분들에 포함되지 않은 상기 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성하는 것에 의해 상기 패킷화하는, 집적 회로.
예 2. 예 1에 있어서, 상기 복수의 프로토콜 워드들의 나머지 부분들은 상기 복수의 프로토콜 워드들에서의 제어 데이터를 포함하고, 상기 서브부분들은 사용자 데이터를 포함하는, 집적 회로.
예 3. 예 2에 있어서, 상기 적어도 하나의 DW는 상기 복수의 프로토콜 워드들 각각으로부터의 제어 데이터를 포함하지만, 상기 복수의 프로토콜 워드들로부터의 사용자 데이터를 포함하지 않는, 집적 회로.
예 4. 예 1에 있어서, 상기 DW의 크기는 상기 C2C 인터페이스 내의 와이어들의 수로 제한되는, 집적 회로.
예 5. 예 1에 있어서,
링크 계층; 및
물리(PHY) 계층을 더 포함하고, 상기 링크 계층 및 PHY 계층은 상기 프로토콜 계층과 상기 C2C 인터페이스 사이에 결합되는, 집적 회로.
예 6. 예 1에 있어서, 상기 프로토콜 계층은, 상기 복수의 프로토콜 워드들을 패킷화하기 전에, 상기 복수의 프로토콜 워드들 중 적어도 하나가 상기 DW의 크기와 동일하거나 그보다 작도록 상기 프로토콜 워드들 중 상기 적어도 하나의 크기를 감소시키기 위해 인코딩될 수 없는 제어 데이터를 포함한다고 결정하도록 구성되는, 집적 회로.
예 7. 예 1에 있어서, 상기 프로토콜 계층은: 예 1에 있어서, 상기 프로토콜 계층은:
상기 애플리케이션 회로부로부터 제1 프로토콜 워드를 수신하고;
상기 DW의 크기와 동일하거나 그보다 작도록 상기 제1 프로토콜 워드의 크기를 감소시키기 위해 상기 제1 프로토콜 워드 내의 제어 데이터가 인코딩될 수 있음을 결정하고;
패킷화 없이 상기 C2C 인터페이스 상에서, 상기 인코딩된 제어 데이터를 포함하는 상기 제1 프로토콜 워드를 송신하도록 구성되는, 집적 회로.
예 8. 예 7에 있어서, 상기 인코딩된 제어 데이터는 상기 제1 프로토콜 워드에서 식별가능한 패턴의 위치를 표시하는, 집적 회로.
예 9. 시스템으로서,
칩-대-칩(C2C) 인터페이스를 통해 제2 집적 회로에 연결된 제1 집적 회로를 포함하고,
상기 제1 집적 회로는 애플리케이션 회로부와 상기 C2C 인터페이스 사이에 연결된 프로토콜 계층을 포함하고, 상기 프로토콜 계층은:
각각이 상기 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과하는, 상기 C2C 인터페이스 상에서 송신될, 복수의 프로토콜 워드들을 상기 애플리케이션 회로부로부터 수신하고, 및
상기 복수의 프로토콜 워드들을 패킷화하도록 구성되고, 상기 패킷화하는 것은:
상기 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하는 것 - 상기 서브부분들 각각은 상기 DW의 크기와 동일하거나 그보다 작음 -; 및
상기 서브부분들에 포함되지 않은 상기 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성하는 것에 의해 상기 패킷화하는, 시스템.
예 10. 예 9에 있어서, 상기 복수의 프로토콜 워드들의 나머지 부분들은 상기 복수의 프로토콜 워드들에서의 제어 데이터를 포함하고, 상기 서브부분들은 사용자 데이터를 포함하는, 시스템.
예 11. 예 10에 있어서, 상기 적어도 하나의 DW는 상기 복수의 프로토콜 워드들 각각으로부터의 제어 데이터를 포함하지만, 상기 복수의 프로토콜 워드들로부터의 사용자 데이터를 포함하지 않는, 시스템.
예 12. 예 9에 있어서, 상기 DW의 크기는 상기 C2C 인터페이스 내의 와이어들의 수로 제한되는, 시스템.
예 13. 예 9에 있어서,
링크 계층; 및
물리(PHY) 계층을 더 포함하고, 상기 링크 계층 및 PHY 계층은 상기 프로토콜 계층과 상기 C2C 인터페이스 사이에 결합되는, 시스템.
예 14. 예 9에 있어서, 상기 프로토콜 계층은, 상기 복수의 프로토콜 워드들을 패킷화하기 전에, 상기 복수의 프로토콜 워드들 중 적어도 하나가 상기 DW의 크기와 동일하거나 그보다 작도록 상기 프로토콜 워드들 중 상기 적어도 하나의 크기를 감소시키기 위해 인코딩될 수 없는 제어 데이터를 포함한다고 결정하도록 구성되는, 시스템.
예 15. 예 9에 있어서, 상기 프로토콜 계층은,
상기 애플리케이션 회로부로부터 제1 프로토콜 워드를 수신하고;
상기 DW의 크기와 동일하거나 그보다 작도록 상기 제1 프로토콜 워드의 크기를 감소시키기 위해 상기 제1 프로토콜 워드 내의 제어 데이터가 인코딩될 수 있음을 결정하고;
패킷화 없이 상기 C2C 인터페이스 상에서, 상기 인코딩된 제어 데이터를 포함하는 상기 제1 프로토콜 워드를 송신하도록 구성되는, 시스템.
예 16. 예 15에 있어서, 상기 인코딩된 제어 데이터는 상기 제1 프로토콜 워드에서 식별가능한 패턴의 위치를 표시하는, 시스템.
예 17. 방법으로서, 집적 회로 내의 프로토콜 계층에서,
C2C 인터페이스 상에서 송신될 복수의 프로토콜 워드들을 수신하는 단계 - 상기 복수의 프로토콜 워드들 각각은 상기 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과함 -; 및
상기 복수의 프로토콜 워드들을 패킷화하는 단계를 포함하고, 상기 패킷화하는 단계는:
상기 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하는 단계 - 상기 서브부분들 각각은 상기 DW의 크기와 동일하거나 그보다 작음 -; 및
상기 서브부분들에 포함되지 않은 상기 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성하는 단계에 의해 상기 패킷화하는, 방법.
예 18. 예 17에 있어서, 상기 복수의 프로토콜 워드들의 나머지 부분들은 상기 복수의 프로토콜 워드들에서의 제어 데이터를 포함하고, 상기 서브부분들은 사용자 데이터를 포함하는, 방법.
예 19. 예 18에 있어서, 상기 적어도 하나의 DW는 상기 복수의 프로토콜 워드들 각각으로부터의 제어 데이터를 포함하지만, 상기 복수의 프로토콜 워드들로부터의 사용자 데이터를 포함하지 않는, 방법.
예 20. 예 17에 있어서, 상기 DW의 크기는 상기 C2C 인터페이스 내의 와이어들의 수로 제한되는, 방법.
전술한 것은 특정 예들에 관한 것이지만, 다른 예들 및 추가적인 예들이 그 기본 범위로부터 벗어나지 않으면서 고안될 수 있고, 그 범위는 다음의 청구항들에 의해 결정된다.

Claims (15)

  1. 집적 회로로서,
    애플리케이션 회로부;
    칩-대-칩(C2C) 인터페이스; 및
    상기 애플리케이션 회로부와 상기 C2C 인터페이스 사이에 연결된 프로토콜 계층을 포함하고, 상기 프로토콜 계층은:
    각각이 상기 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과하는, 상기 C2C 인터페이스 상에서 송신될, 복수의 프로토콜 워드들을 상기 애플리케이션 회로부로부터 수신하고, 및
    상기 복수의 프로토콜 워드들을 패킷화하도록 구성되고, 상기 패킷화하는 것은:
    상기 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하는 것 - 상기 서브부분들 각각은 상기 DW의 크기와 동일하거나 그보다 작음 -; 및
    상기 서브부분들에 포함되지 않은 상기 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성하는 것에 의해 상기 패킷화하는, 집적 회로.
  2. 제1항에 있어서, 상기 복수의 프로토콜 워드들의 나머지 부분들은 상기 복수의 프로토콜 워드들에서의 제어 데이터를 포함하고, 상기 서브부분들은 사용자 데이터를 포함하는, 집적 회로.
  3. 제2항에 있어서, 상기 적어도 하나의 DW는 상기 복수의 프로토콜 워드들 각각으로부터의 제어 데이터를 포함하지만, 상기 복수의 프로토콜 워드들로부터의 사용자 데이터를 포함하지 않는, 집적 회로.
  4. 제1항에 있어서, 상기 DW의 크기는 상기 C2C 인터페이스 내의 와이어들의 수로 제한되는, 집적 회로.
  5. 제1항에 있어서,
    링크 계층; 및
    물리(PHY) 계층을 더 포함하고, 상기 링크 계층 및 PHY 계층은 상기 프로토콜 계층과 상기 C2C 인터페이스 사이에 결합되는, 집적 회로.
  6. 제1항에 있어서, 상기 프로토콜 계층은, 상기 복수의 프로토콜 워드들을 패킷화하기 전에, 상기 복수의 프로토콜 워드들 중 적어도 하나가 상기 DW의 크기와 동일하거나 그보다 작도록 상기 프로토콜 워드들 중 상기 적어도 하나의 크기를 감소시키기 위해 인코딩될 수 없는 제어 데이터를 포함한다고 결정하도록 구성되는, 집적 회로.
  7. 제1항에 있어서, 상기 프로토콜 계층은:
    상기 애플리케이션 회로부로부터 제1 프로토콜 워드를 수신하고;
    상기 DW의 크기와 동일하거나 그보다 작도록 상기 제1 프로토콜 워드의 크기를 감소시키기 위해 상기 제1 프로토콜 워드 내의 제어 데이터가 인코딩될 수 있음을 결정하고; 및
    패킷화 없이 상기 C2C 인터페이스 상에서, 상기 인코딩된 제어 데이터를 포함하는 상기 제1 프로토콜 워드를 송신하도록 구성되고; 상기 인코딩된 제어 데이터는 상기 제1 프로토콜 워드에서 식별가능한 패턴의 위치를 표시하는, 집적 회로.
  8. 시스템으로서,
    칩-대-칩(C2C) 인터페이스를 통해 제2 집적 회로에 연결된 제1 집적 회로를 포함하고,
    상기 제1 집적 회로는 애플리케이션 회로부와 상기 C2C 인터페이스 사이에 연결된 프로토콜 계층을 포함하고, 상기 프로토콜 계층은:
    각각이 상기 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과하는, 상기 C2C 인터페이스 상에서 송신될, 복수의 프로토콜 워드들을 상기 애플리케이션 회로부로부터 수신하고, 및
    상기 복수의 프로토콜 워드들을 패킷화하도록 구성되고, 상기 패킷화하는 것은:
    상기 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하는 것 - 상기 서브부분들 각각은 상기 DW의 크기와 동일하거나 그보다 작음 -; 및
    상기 서브부분들에 포함되지 않은 상기 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성하는 것에 의해 상기 패킷화하는, 시스템.
  9. 제8항에 있어서, 상기 복수의 프로토콜 워드들의 나머지 부분들은 상기 복수의 프로토콜 워드들에서의 제어 데이터를 포함하고, 상기 서브부분들은 사용자 데이터를 포함하고, 상기 적어도 하나의 DW는 상기 복수의 프로토콜 워드들 각각으로부터의 제어 데이터를 포함하지만 상기 복수의 프로토콜 워드들로부터의 사용자 데이터를 포함하지 않는, 시스템.
  10. 제8항에 있어서, 상기 DW의 크기는 상기 C2C 인터페이스 내의 와이어들의 수로 제한되는, 시스템.
  11. 제8항에 있어서,
    링크 계층; 및
    물리(PHY) 계층을 더 포함하고, 상기 링크 계층 및 PHY 계층은 상기 프로토콜 계층과 상기 C2C 인터페이스 사이에 결합되는, 시스템.
  12. 제8항에 있어서, 상기 프로토콜 계층은, 상기 복수의 프로토콜 워드들을 패킷화하기 전에, 상기 복수의 프로토콜 워드들 중 적어도 하나가 상기 DW의 크기와 동일하거나 그보다 작도록 상기 프로토콜 워드들 중 상기 적어도 하나의 크기를 감소시키기 위해 인코딩될 수 없는 제어 데이터를 포함한다고 결정하도록 구성되는, 시스템.
  13. 제8항에 있어서, 상기 프로토콜 계층은,
    상기 애플리케이션 회로부로부터 제1 프로토콜 워드를 수신하고;
    상기 DW의 크기와 동일하거나 그보다 작도록 상기 제1 프로토콜 워드의 크기를 감소시키기 위해 상기 제1 프로토콜 워드 내의 제어 데이터가 인코딩될 수 있음을 결정하고;
    패킷화 없이 상기 C2C 인터페이스 상에서, 상기 인코딩된 제어 데이터를 포함하는 상기 제1 프로토콜 워드를 송신하도록 구성되는, 시스템.
  14. 제13항에 있어서, 상기 인코딩된 제어 데이터는 상기 제1 프로토콜 워드에서 식별가능한 패턴의 위치를 표시하는, 시스템.
  15. 방법으로서,
    집적 회로 내의 프로토콜 계층에서, C2C 인터페이스 상에서 송신될 복수의 프로토콜 워드들을 수신하는 단계 - 상기 복수의 프로토콜 워드들 각각은 상기 C2C 인터페이스에 의해 지원되는 데이터 워드(DW)의 크기를 초과함 -; 및
    상기 복수의 프로토콜 워드들을 패킷화하는 단계를 포함하고, 상기 패킷화하는 단계는:
    상기 복수의 프로토콜 워드들의 서브부분들을 별도의 DW들로 매핑하는 단계 - 상기 서브부분들 각각은 상기 DW의 크기와 동일하거나 그보다 작음 -; 및
    상기 서브부분들에 포함되지 않은 상기 복수의 프로토콜 워드들의 나머지 부분들을 포함하는 적어도 하나의 DW를 생성하는 단계에 의해 상기 패킷화하는, 방법.
KR1020247010541A 2021-09-01 2022-05-26 칩-대-칩 인터페이스를 위한 온-디맨드 패킷화 KR20240046830A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/464,642 US11636061B2 (en) 2021-09-01 2021-09-01 On-demand packetization for a chip-to-chip interface
US17/464,642 2021-09-01
PCT/US2022/031208 WO2023033887A1 (en) 2021-09-01 2022-05-26 On-demand packetization for a chip-to-chip interface

Publications (1)

Publication Number Publication Date
KR20240046830A true KR20240046830A (ko) 2024-04-09

Family

ID=82100289

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247010541A KR20240046830A (ko) 2021-09-01 2022-05-26 칩-대-칩 인터페이스를 위한 온-디맨드 패킷화

Country Status (4)

Country Link
US (1) US11636061B2 (ko)
KR (1) KR20240046830A (ko)
CN (1) CN117897697A (ko)
WO (1) WO2023033887A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240045822A1 (en) * 2022-08-02 2024-02-08 Xilinx, Inc. Systems and Methods to Transport Memory Mapped Traffic amongst integrated circuit devices

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7006898B2 (en) * 2003-07-17 2006-02-28 Proton Energy Systems, Inc. Method and apparatus for operating and controlling a power system
US7398325B2 (en) 2003-09-04 2008-07-08 International Business Machines Corporation Header compression in messages
US7437500B2 (en) * 2005-08-05 2008-10-14 Lsi Corporation Configurable high-speed memory interface subsystem
US8972828B1 (en) * 2008-09-18 2015-03-03 Compass Electro Optical Systems Ltd. High speed interconnect protocol and method
US10230665B2 (en) 2013-12-20 2019-03-12 Intel Corporation Hierarchical/lossless packet preemption to reduce latency jitter in flow-controlled packet-based networks
US10135760B2 (en) * 2015-06-30 2018-11-20 Ciena Corporation Flexible Ethernet chip-to-chip inteface systems and methods
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US11973624B2 (en) * 2019-11-29 2024-04-30 Intel Corporation Extended link-training time negotiated on link start-up

Also Published As

Publication number Publication date
US11636061B2 (en) 2023-04-25
CN117897697A (zh) 2024-04-16
US20230066736A1 (en) 2023-03-02
WO2023033887A1 (en) 2023-03-09

Similar Documents

Publication Publication Date Title
US8516165B2 (en) System and method for encoding packet header to enable higher bandwidth efficiency across bus links
CN102866971B (zh) 传输数据的装置、系统及方法
US7849252B2 (en) Providing a prefix for a packet header
CN1608255B (zh) 使用包括扩展类型/扩展长度字段的分组头部的计算机系统中的代理之间的通信事务类型
US10802995B2 (en) Unified address space for multiple hardware accelerators using dedicated low latency links
CN110297797B (zh) 异构协议转换装置和方法
US9678891B2 (en) Efficient search key controller with standard bus interface, external memory interface, and interlaken lookaside interface
CN111064545B (zh) 基于fpga实现具有spw接口的专网地检装置及方法
WO2021147050A1 (zh) 一种基于PCIe的数据传输方法及装置
US7779194B2 (en) Data modification module
CN113179216B (zh) 一种寄存器的远程配置方法、计算机设备及存储介质
US9594702B2 (en) Multi-processor with efficient search key processing
KR20240046830A (ko) 칩-대-칩 인터페이스를 위한 온-디맨드 패킷화
WO2021147046A1 (zh) 一种PCIe的数据传输方法及装置
US9594706B2 (en) Island-based network flow processor with efficient search key processing
US9112736B2 (en) Data transfer apparatus, data transfer method, and inter-chip communication system
CN113986969A (zh) 数据处理方法、装置、电子设备和存储介质
WO2021147051A1 (zh) 一种基于PCIe的数据传输方法及装置
Saadé et al. A system-level overview and comparison of three High-Speed Serial Links: USB 3.0, PCI Express 2.0 and LLI 1.0
US9632959B2 (en) Efficient search key processing method
CN109213710B (zh) 高速串行接口装置与其数据传输方法
JP2005303787A (ja) パケット生成装置
CN116795763B (zh) 基于axi协议的数据分组传输的方法、片上系统和芯片
JP5906078B2 (ja) データ転送装置及びデータ転送方法
US20230198538A1 (en) Data transfer between analog and digital integrated circuits