KR102584507B1 - 링크 계층 데이터 패킹 및 패킷 흐름 제어 기법 - Google Patents

링크 계층 데이터 패킹 및 패킷 흐름 제어 기법 Download PDF

Info

Publication number
KR102584507B1
KR102584507B1 KR1020217007733A KR20217007733A KR102584507B1 KR 102584507 B1 KR102584507 B1 KR 102584507B1 KR 1020217007733 A KR1020217007733 A KR 1020217007733A KR 20217007733 A KR20217007733 A KR 20217007733A KR 102584507 B1 KR102584507 B1 KR 102584507B1
Authority
KR
South Korea
Prior art keywords
packet
link
packets
candidate
queue
Prior art date
Application number
KR1020217007733A
Other languages
English (en)
Other versions
KR20210040447A (ko
Inventor
그레고리 디. 돈레이
브라이언 피. 브루사드
비드히야나단 칼야나순드하람
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20210040447A publication Critical patent/KR20210040447A/ko
Application granted granted Critical
Publication of KR102584507B1 publication Critical patent/KR102584507B1/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/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority

Landscapes

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

Abstract

컴퓨팅 시스템에서 효율적인 데이터 전달을 수행하기 위한 시스템들, 장치들 및 방법들이 개시된다. 컴퓨팅 시스템은 클라이언트들에서의 다수의 패브릭 인터페이스들 및 패브릭을 포함한다. 패브릭 인터페이스에서의 패킷 송신기는 각각 각각의 유형의 패킷들을 저장하기 위한 다수의 큐들을 포함한다. 패킷 송신기는 각각 다수의 큐들 각각으로부터 후보 패킷을 선택하기 위한 다수의 큐 아비터들(queue arbiters)을 포함한다. 패킷 송신기는 링크 패킷을 저장하기 위한 버퍼를 포함하며, 이 링크 패킷은 다수의 후보 패킷들을 저장하기 위한 데이터 저장 공간을 포함한다. 패킷 송신기는 다수의 큐들로부터 자격이 있는 패킷들을 선택하고 이러한 후보 패킷들을 링크 패킷에 삽입한다. 패킹 아비터는 후보 패킷들을 링크 패킷에 삽입하는 속도와 수신기에서의 수신 큐에 이용 가능한 데이터 저장 공간을 생성하는 속도 간 불일치를 고려함으로써 수신기에서의 데이터 충돌을 회피한다.

Description

링크 계층 데이터 패킹 및 패킷 흐름 제어 기법
컴퓨팅 시스템들에서, 몇몇 응용 프로그램 유형은 다른 응용 프로그램들보다 병렬 처리 및 공유 메모리를 더 잘 활용할 수 있는 기능들을 수행한다. 이러한 응용 프로그램들의 예들은 기계 학습 응용 프로그램들, 엔터테인먼트 및 실시간 응용 프로그램들뿐만 아니라, 몇몇 비즈니스, 과학, 의료 및 다른 응용 프로그램들 을 포함한다. 몇몇 프로세서 아키텍처들은 하나보다 많은 처리 장치(예를 들어, CPU, GPU 등) 또는 처리 코어를 포함하지만, 몇몇 경우, 메모리에 결합된 하나 또는 두 개의 추가 처리 장치 또는 코어가 반드시 원하는 성능 수준을 제공하기에 충분한 병렬 처리 수준을 제공하는 것은 아니다.
또한 시스템에서는 판독 및 기록 액세스 명령들 및 대응하는 데이터 외에, 코히런시 프로브들, 인터럽트들 및 다른 통신 메시지들이 통신 패브릭(또는 패브릭)을 통해 전달된다. 패브릭에서의 상호 연결부들의 예들은 버스 아키텍처, 크로스바 기반 아키텍처, 네트워크 온 칩(NoC, network-on-chip) 통신 서브 시스템, 다이들 사이의 통신 채널, 칩을 나란히 적층하는 데 사용되는 실리콘 인터포저, 특수용 다이들을 프로세서 다이들 위에 수직으로 적층하는 데 사용되는 관통 실리콘 비아(TSV, through silicon via)을 포함한다.
많은 경우, 패브릭은 각각 상대적으로 넓은 패킷들을 지원하는 다수의 물리적 채널을 가진다. 단일 패브릭 내에서 데이터를 전달하는 동안, 상대적으로 많은 수의 물리적 와이어들이 이용 가능하므로 패브릭은 레이턴시를 감소시킨다. 그러나, 패브릭을 통해 별개의 다이들을 함께 연결하고 각각이 각각의 패브릭을 갖는 별개의 처리 노드들을 함께 연결할 때, 훨씬 더 적은 수의 물리적 와이어들을 통해 데이터가 전달되며, 이는 이용 가능한 대역폭을 제한한다. 몇몇 경우, 링크 물리적 와이어들은 다이 상에서의 물리적 와이어 데이터 속도의 배수인 데이터 속도로 데이터를 전송한다. 그러나, 다이 사이 및 노드들 사이의 통신시 여전히 대역폭 감소가 상당하다.
데이터 전송에 대한 위의 비효율성 외에도, 상이한 소스들로부터의 다양한 유형의 패킷들이 제어 정보와 함께 여러 번 조합된다. 다양한 패킷 유형들의 소스들 중 하나 이상은 상이한 버스 폭들을 가지며 단일 소스 내에서 패킷 간에 다양한 양의 정보를 전달한다. 상이한 소스들로부터의 상이한 크기들의 이러한 패킷들은 비효율적인 방식으로 여러 번 조합되며, 이는 링크 대역폭 효율성을 더 감소시킨다.
더 나아가, 송신기로부터 패킷들을 전송하는 속도가 수신기에서 패킷들을 수신하는 속도와 일치하지 않을 때, 수신기에서의 데이터 충돌을 통해 데이터 손상이 발생한다. 일례에서, 송신기는 처리 장치에서의 그래픽 처리 장치(GPU)이고 수신기는 패브릭이다. 송신기로부터의 패킷들의 데이터 전송 속도를 감소시키는 보수적인 접근 방식은 데이터 손상을 방지하지만, 이는 또한 링크 대역폭 효율성을 더 감소시킨다.
이상의 관점에서, 컴퓨팅 시스템에서 효율적인 데이터 전달을 수행하기 위한 효율적인 방법들 및 시스템들이 요구된다.
여기서 설명되는 방법들 및 메커니즘들의 이점들은 첨부 도면들과 함께 이하의 구체적인 내용을 참조함으로써 보다 잘 이해될 수 있으며, 첨부 도면들에서:
도 1은 컴퓨팅 시스템의 일 실시 예의 블록도이다.
도 2는 패킷 송신기의 일 실시 예의 블록도이다.
도 3은 컴퓨팅 시스템에서 효율적인 데이터 전달을 수행하기 위한 방법의 일 실시 예의 흐름도이다.
도 4는 컴퓨팅 시스템에서 효율적인 데이터 전달을 수행하기 위한 방법의 또 다른 실시 예의 흐름도이다.
도 5는 컴퓨팅 시스템에서 효율적인 데이터 전달을 수행하기 위한 방법의 또 다른 실시 예의 흐름도이다.
도 6은 패킷 수신기의 일 실시 예의 블록도이다.
도 7은 컴퓨팅 시스템에서 효율적인 데이터 전달을 수행하기 위한 방법의 또 다른 실시 예의 흐름도이다.
본 발명은 다양한 변형 예 및 대안적인 형태를 허용하지만, 구체적인 실시 예들이 도면들에 예로서 도시되며 본 명세서에서 상세히 설명된다. 그러나, 도면들 및 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려는 것이 아니고, 반대로, 본 발명은 첨부된 청구범위에 의해 정의되는 바에 따라 본 발명의 범위 내에 속하는 모든 변형 예, 등가물 및 대안 예를 커버하는 것으로 이해되어야 한다.
이하의 구체적인 내용에서, 여기서 제시되는 방법들 및 메커니즘들에 대한 완전한 이해를 제공하기 위해 많은 구체적인 세부 사항들이 제시된다. 그러나, 해당 기술분야의 통상의 기술자는 다양한 실시 예들이 이러한 구체적인 세부 사항들 없이도 실시될 수 있다는 것을 인식해야 한다. 경우에 따라서는, 주지된 구조들, 구성요소들, 신호들, 컴퓨터 프로그램 명령들 및 기술들이 여기에 설명되는 접근법들을 모호하게 하 것을 방지하기 위해 구체적으로 제시되지 않는다. 도시의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 일정한 비율로 그려진 것은 아니라는 것이 이해될 것이다. 예를 들어, 몇몇 요소의 치수들이 다른 요소들에 비해 과장될 수 있다.
컴퓨팅 시스템에서 효율적인 데이터 전달을 수행하기 위한 다양한 시스템들, 장치들, 방법들 및 컴퓨터 판독 가능한 매체들이 개시된다. 다양한 실시 예들에서, 컴퓨팅 시스템은 응용 프로그램들을 처리하기 위한 하나 이상의 클라이언트들을 포함한다. 클라이언트들의 예들은 범용 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 가속 처리 장치(APU), 입력/출력(I/O) 디바이스 등을 포함한다. 컴퓨팅 시스템은 또한 적어도 하나의 전력 제어기, 및 클라이언트들 사이에서 데이터를 전달하기 위한 다수의 링크 인터페이스들을 포함한다.
다양한 실시 예들에서, 하나 이상의 클라이언트 및 패브릭은 각각 패킷 송신기 및 패킷 수신기를 갖는 패브릭 인터페이스들을 포함한다. 패킷 송신기는 각각 각각의 유형의 패킷들을 저장하기 위한 다수의 큐들을 포함한다. 패킷 유형의 예들은 요청 유형, 응답 유형, 프로브 유형, 및 토큰 또는 크레딧 유형을 포함한다. 다른 유형의 예들은 제어 유형들인 명령 또는 메시지와 같은 패킷에서의 데이터의 유형을 포함한다. 기록 요청의 경우, 일부 실시 예들에서, 기록 요청은 명령 또는 제어 패킷에 삽입된 기록 명령으로 나뉜다. 기록 요청은 기록 명령에 대응하는 별개의 기록 데이터 패킷으로 나뉜다. 판독 요청은 명령 또는 제어 패킷에 삽입된 판독 명령으로서 전송된다. 판독 명령에 대한 응답은 명령 또는 제어 패킷에 삽입된 판독 메시지로서 전송된다. 판독 응답 데이터는 별개의 데이터 패킷에 삽입된다.
일부 실시 예들에서, 다수의 큐들 중 둘 이상은 상이한 크기의 패킷들을 저장한다. 일 실시 예에서, 패킷 송신기는 또한 각각 다수의 큐들 각각으로부터 후보 패킷을 선택하기 위한 다수의 큐 아비터들(queue arbiters)을 포함한다. 패킷 송신기는 추가적으로 링크 패킷을 저장하기 위한 버퍼를 포함한다. 다양한 실시 예들에서, 링크 패킷은 다수의 후보 패킷들을 저장하기 위한 데이터 저장 공간을 포함한다. 링크 패킷은 더 이상 다른 데이터를 전달하고 있지 않은 링크를 통해 수신기로 전송된다. 일부 실시 예들에서, 링크 패킷을 저장하기 위한 버퍼는 다수의 레지스터들, 플립 플롭 회로들, 또는 다른 순차적 요소들을 포함한다.
패킷 송신기는 또한 다수의 큐들로부터 자격이 있는 패킷들을 선택하고 이러한 후보 패킷들을 링크 패킷에 삽입하는 패킹 아비터를 포함한다. 일부 실시 예들에서, 패킹 아비터는 오래된 정도, 패킷 유형의 우선 순위 레벨, 서비스 품질 파라미터, 소스 식별자, 응용 프로그램 식별자 또는 실시간 응용 프로그램과 같은 유형, 실시간 트래픽과 같은 트래픽 유형의 표시, 대역폭 요건 또는 레이턴시 허용 오차 요건 등을 포함하는 하나 이상의 속성에 기초하여 후보 패킷들을 선택하고 이것들을 링크 버퍼에 삽입한다. 다양한 실시 예들에서, 패킹 아비터는 또한 충전 링크 패킷이 소정의 후보 패킷에 이용 가능한 나머지 데이터 저장 공간을 갖는지 여부를 결정한다. 일부 실시 예들에서, 패킹 아비터는 또한 충전 링크 패킷이 소정의 후보 패킷에 이용 가능한 소정의 경계 상에 정렬되는 나머지 데이터 저장 공간을 갖는지 여부를 결정한다.
패킹 아비터는 후보 패킷들을 링크 패킷에 패킹(삽입)하는 속도와 수신기에서의 수신 큐에 이용 가능한 데이터 저장 공간을 생성하는 속도 간 불일치를 고려하기 위한 제어 로직을 포함한다. 불일치는 또한 링크 패킷을 송신하는 데 링크를 이용 가능할 때 패브릭에서의 네트워크가 클록 사이클들을 추가 및 삭제하는 것으로 인해 발생한다.
일례에서, 패브릭 인터페이스들이 데이터 전달 에러들을 검출하고 데이터를 재전송할 때, 패킷 송신기의 관점에서 유휴 클록 사이클들이 링크 상에 삽입된다. 몇몇 경우, 이러한 유휴 사이클들은 유지되지 않고, 패브릭에서의 네트워크 전체에 걸쳐 버스 이용 및 중재로 인해 패킷 송신기로부터 전송되는 두 링크 패킷들 사이에서 제거된다. 이에 따라, 수신기의 수신 큐에서의 데이터 충돌을 회피하기 위해, 패킷 송신기는 각각 다음 링크 패킷이 패킷 송신기에 연결된 링크를 사용할 수 있게 하는 인에이블된 네트워크 사이클들의 제1 카운트, 및 링크 패킷에 삽입되는 소정의 유형의 후보 패킷 수의 제2 카운트를 유지한다. 패킷 송신기는 소정의 유형의 패킷들을 저장하는 수신 큐에서 데이터 충돌을 회피하기 위해 수신기에 대해 수신된 링크 패킷들 사이의 최소 사이클 수의 제3 카운트를 저장한다. 패킷 송신기는 이러한 카운트들을 사용하여 소정의 후보 패킷을 링크 패킷에 삽입할 시기를 결정한다.
도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시 예의 블록도가 도시되어 있다. 도시된 바와 같이, 컴퓨팅 시스템(100)은 클라이언트들(110), 메모리 제어기(130), 전력 제어기(170) 및 링크 인터페이스들(180) 각각 사이의 통신 패브릭(120)을 포함한다. 일부 실시 예들에서, 처리 노드(100)의 구성요소들은 시스템 온 칩(SOC)과 같은, 집적 회로(IC) 상의 개별 다이들이다. 다른 실시 예들에서, 구성요소들은 시스템 인 패키지(SiP, system-in-package) 또는 멀티 칩 모듈(MCM, multi-chip module)에서의 개별 다이들이다.
도시된 실시 예에서, 클라이언트들(110)은 중앙 처리 장치(CPU)(112), 그래픽 처리 장치(GPU)(114) 및 허브(116)를 포함한다. 허브(116)는 멀티미디어 엔진(118)과 통신하는 데 사용된다. CPU(112), GPU(114) 및 멀티미디어 엔진(118)은 응용 프로그램들을 처리할 수 있는 컴퓨팅 자원들의 예들이다. 도시되지는 않았지만, 다른 실시 예들에서, 클라이언트들(110)에 다른 유형들의 컴퓨팅 자원들이 포함된다. CPU(112)에서의 하나 이상의 프로세서 코어 각각은 소정의 선택된 명령어 집합 아키텍처(ISA, instruction set architecture)에 따라 명령어들을 실행하기 위한 회로부를 포함한다. 다양한 실시 예들에서, CPU(112)에서의 프로세서 코어들 각각은 소정의 ISA의 명령어들을 처리하는 데 사용되는 슈퍼 스칼라, 멀티 스레드 마이크로 아키텍처를 포함한다. 일 실시 예에서, GPU(114)는 상당 수의 병렬 실행 레인들을 갖는 고 병렬 데이터 마이크로 아키텍처를 포함한다. 일 실시 예에서, 마이크로 아키텍처는 병렬 실행 레인들에 단일 명령 다중 데이터(SIMD, single-instruction-multiple-data) 파이프라인을 사용한다. 멀티미디어 엔진(118)은 멀티미디어 응용 프로그램들에 대한 오디오 데이터 및 시각 데이터를 처리하기 위한 프로세서들을 포함한다.
일 실시 예에서, 전력 제어기(170)는 소정의 샘플 간격들 동안 샘플링된 미리 결정된 신호들과 같은 데이터를 클라이언트들(110)로부터 수집한다. 일부 실시 예들에서, 노드(100)에서의 온 다이 전류 센서들 및 온도 센서들은 또한 전력 제어기(170)에 정보를 전송한다. 일부 실시 예들에서, 전력 제어기(170)는 클라이언트들(110)에서의 컴퓨팅 자원들 각각에 대한 각각의 전력-성능 상태(P-상태)를 선택한다. P-상태는 적어도 작동 전압 및 작동 클록 주파수를 포함한다.
단일 메모리 제어기(130)가 도시되어 있지만, 다른 실시 예들에서는, 또 다른 수의 메모리 제어기들이 처리 노드(100)에서 사용된다. 다양한 실시 예들에서, 메모리 제어기(130)는 패브릭(120)을 통해 클라이언트들(110)로부터 메모리 요청들을 수신하고, 메모리 요청들을 스케줄링하며, 스케줄링된 메모리 요청들을 시스템 메모리 및 메인 메모리 중 하나 이상으로 전송한다. 메모리 제어기(130)는 또한 시스템 메모리 및 메인 메모리로부터 응답들을 수신하고 클라이언트들(110)에서의 요청의 대응하는 소스로 응답들을 전송한다. 다양한 실시 예들에서, 시스템 메모리는 I/O 제어기 및 버스(160) 및 메모리 버스(150)를 통해 메인 메모리로부터의 데이터로 채워진다. 요청된 블록을 갖는 대응하는 캐시 필 라인은 원래의 메모리 요청을 완료하기 위해 메인 메모리로부터 클라이언트들(110)에서의 캐시 메모리 서브 시스템들 중의 대응하는 것으로 전달된다. 캐시 필 라인은 하나 이상의 레벨의 캐시들에 배치된다.
일부 실시 예들에서, 처리 노드(100)의 어드레스 공간은 적어도 CPU(112), GPU(114) 및 허브(116) 및 하나 이상의 다른 구성요소 이를테면 입/출력(I/O) 주변 디바이스(도시되지 않음) 및 다른 유형들의 컴퓨팅 자원 중에 배분된다. 어느 어드레스들이 어느 구성요소에 매핑되는지, 그리고 이로 인해 특정 어드레스에 대한 메모리 요청이 CPU(112), GPU(114) 및 허브(116) 중 어디로 라우팅되어야 하는지를 결정하기 위한 메모리 맵들이 유지된다. 일 실시 예에서, 시스템 메모리는 다양한 동적 랜덤 액세스 메모리(DRAM) 중 하나이고 메모리 제어기(130)에 의해 대응하는 프로토콜이 지원된다. 프로토콜은 클록 사이클당 데이터 전달 수, 신호 전압 레벨들, 신호 타이밍들, 신호 및 클록 위상들 및 클록 주파수들과 같이, 정보 전달에 사용되는 값들을 결정한다. 일부 실시 예들에서, 메인 메모리는 데이터의 다양한 유형들의 비휘발성 랜덤 액세스 보조 저장 장치 중 하나이다. 메인 메모리의 예들은 하드 디스크 드라이브들(HDD) 및 고체 상태 디스크들(SSD)이다.
다양한 실시 예들에서, 통신 패브릭(120)(또는 패브릭(120))은 컴퓨팅 자원들(110)과 메모리 제어기(130) 사이에서 트래픽을 주고 받으며 각각의 통신 프로토콜들을 지원하기 위한 인터페이스들을 포함한다. "트래픽"은 데이터 이를테면 명령들 및 메시지들, 프로브들, 인터럽트들, 및 명령들 및 메시지들에 대응하는 데이터를 포함한다. 일부 실시 예들에서, 패브릭(120)은 적어도 요청들 및 응답들을 저장하기 위한 큐들, 내부 네트워크에 걸쳐 요청들을 전송하기 전에 수신된 요청들 사이에서 중재하기 위한 선택 로직, 패킷들을 구축 및 디코딩하기 위한 로직, 및 패킷들에 대한 경로들을 선택하기 위한 로직을 포함한다.
일부 실시 예들에서, 패브릭 전송 인터페이스(FTI, fabric transport interface)(180)는 링크들 상에서 트래픽을 전달함으로써 컴퓨팅 시스템(100)과 다른 컴퓨팅 시스템들 또는 처리 노드들 사이의 통신을 지원한다. 다양한 실시 예들에서, 링크들에 걸쳐 전송되는 트래픽은 하나 이상의 처리 노드에 대한 작동 상태의 표시, 전력 차단 요청, 요청들에 대한 응답들, 인터럽트들, 및 다른 정보를 포함한다. 도시된 바와 같이, 클라이언트들(110)은 CPU(112)에 대한 FTI(113), GPU(114)에 대한 FTI(115) 및 허브(116)에 대한 FTI(117)를 포함한다. 추가적으로, 메모리 제어기(130)는 FTI(132)를 포함하는 반면, 전력 제어기(170)는 FTI(172)를 포함한다. 패브릭(120)은 도시의 편의상 도시되진 않은 다수의 패브릭 전송 인터페이스들을 포함한다. 일부 실시 예들에서, 패브릭 전송 인터페이스에 연결된 각 링크는 점 대 점 통신 채널이다. 다른 실시 예들에서, 패브릭 전송 인터페이스에 연결된 하나 이상의 링크는 단 대 단 통신 채널이다.
물리적 레벨에서, 링크는 하나 이상의 레인을 포함한다. 일부 실시 예들에서, 패브릭 전송 인터페이스들은 통신에 사용되는 제어 로직 및 버퍼들 또는 큐들을 포함한다. 일부 실시 예들에서, 패브릭 전송 인터페이스들 및 대응하는 링크들은 PCIe(Peripheral Component Interconnect Express), InfiniBand, RapidIO, HyperTransport, AXI(Advanced eXtensible Interface) 등과 같은 통신 프로토콜 연결부들을 포함한다.
일부 실시 예들에서, 각 패브릭 전송 인터페이스들은 각각 각각의 유형의 패킷들을 저장하기 위한 다수의 큐들을 포함한다. 추가적으로, 각각 다수의 큐들 각각으로부터 후보 패킷을 선택하기 위한 다수의 큐 아비터들이 있다. 컴퓨팅 시스템(100)에서의 패브릭 전송 인터페이스들 중 하나 이상은 링크 패킷을 저장하기 위한 버퍼를 포함하며, 이 링크 패킷은 다수의 후보 패킷들을 저장하기 위한 데이터 저장 공간을 포함한다. 일부 실시 예들에서, 다수의 큐 중 둘 이상은 상이한 크기들의 후보 패킷들을 저장한다. 패브릭 전송 인터페이스에서의 패킹 아비터는 다수의 큐들로부터 자격이 있는 패킷들을 선택하고 이러한 후보 패킷들을 링크 패킷에 삽입한다. 일부 실시 예들에서, 패킹 아비터는 또한 충전 링크 패킷이 소정의 후보 패킷에 이용 가능한 소정의 경계 상에 정렬되는 나머지 데이터 저장 공간을 갖는지 여부를 결정한다. 패브릭 전송 인터페이스에서의 패킷 수신기는 패킷 송신기에 의해 전송되는 링크 패킷을 수신하기 위한 수신 큐를 포함한다. 패킷 송신기에서의 패킹 아비터는 후보 패킷들을 링크 패킷에 삽입하는 속도와 수신기에서의 수신 큐에 이용 가능한 데이터 저장 공간을 생성하는 속도 간 불일치를 고려함으로써 수신기에서의 데이터 충돌을 회피한다.
도 2를 참조하면, 패킷 송신기(200)의 일 실시 예의 일반화된 블록도가 도시되어 있다. 도시된 실시 예에서, 패킷 송신기(200)는 각각 각각의 유형의 패킷들을 저장하기 위한 다수의 큐들(210-214)을 포함한다. 일부 실시 예들에서, 패킷은 흐름 제어 유닛("플릿(flit)")이다. 플릿은 더 큰 패킷의 서브 세트이다. 플릿들은 일반적으로 더 큰 패킷에 대한 헤더 및 테일 정보와 같은 데이터 및 제어 정보를 전달한다. 전송할 데이터는 네트워크에서 라우팅되는 패킷들로서 설명되지만, 다른 실시 예들에서, 전송할 데이터는 점 대 점 상호 연결에서 비트 스트림 또는 바이트 스트림이다. 다양한 실시 예들에서, 큐들(210-214)은 패브릭 링크 상에서 전송될 제어 패킷들을 저장한다. 플릿들에 대응하는 더 큰 패킷들과 같은 대응하는 데이터 패킷은 또 다른 소스로부터 전송된다.
일부 실시 예들에서, 더 큰 데이터 패킷들에 대한 소스와 같은 하나 이상의 다른 소스는 패킷 송신기(200)와 패브릭 링크를 공유한다. 이에 따라, 패브릭 링크가 제어 패킷들을 전송하는 데 항상 이용 가능한 것은 아니다. 패킷 송신기(200)는 또한 후보 패킷들(230-234) 중 하나 이상을 링크 패킷(260)에 삽입하기 위한 패킹 버퍼 아비터(250)를 포함한다. 링크 패킷(260)은 패브릭 전송 인터페이스(FTI, fabric transport interface) 후보 패킷들(230-234)을 저장하기에 충분한 데이터 저장 공간을 가진다. 일 실시 예에서, 패킷 송신기(200)는 두 개의 요건들이 충족될 때 패브릭 링크 상에서 링크 패킷(260)을 전송한다. 제1 요건은 패브릭 전송 인터페이스가 패브릭 링크가 이용 가능함을 나타내는 신호를 패킷 송신기(200)로 전송하는 것이다. 제2 요건은 패킷 송신기(200)가 링크 패킷(260)이 비어 있지 않다고 결정하는 것이다.
큐들(210-214)에 저장되는 제어 패킷 유형의 예들은 요청 유형, 응답 유형, 프로브 유형, 및 토큰 또는 크레딧 유형을 포함한다. 또한 다른 실시 예들에서는 패킷 유형들의 다른 예들도 포함된다. 도시된 바와 같이, 큐(210)는 일 실시 예에서 제어 요청 유형인 "유형 1"의 패킷들을 저장한다. 큐(212)는 일 실시 예에서 제어 응답 유형인 "유형 2"의 패킷들을 저장한다. 큐(214)는 일 실시 예에서 제어 토큰 또는 크레딧 유형인 "유형 N"의 패킷들을 저장한다.
큐 아비터(220)는 큐(210)로부터 패브릭 전송 인터페이스(FTI) 후보 패킷(230)을 선택한다. 일부 실시 예들에서, 패킹 아비터(220)는 오래된 정도, 패킷 유형의 우선 순위 레벨, 패캣의 우선 순위 레벨, 서비스 품질 파라미터, 소스 식별자, 응용 프로그램 식별자 또는 실시간 응용 프로그램과 같은 유형, 실시간 트래픽과 같은 트래픽 유형의 표시, 대역폭 요건 또는 레이턴시 허용 오차 요건 등을 포함하는 하나 이상의 속성에 기초하여 FTI 후보 패킷들(230)을 선택한다. 유사한 방식으로, 큐 아비터들(222-224)은 큐들(212-214)로부터 FTI 후보 패킷들(232-234)을 선택한다.
일부 실시 예들에서, 큐 아비터들(220-224)은 각 클록 사이클마다 큐들(210-214)로부터 FTI 후보 패킷들(230-234)을 선택한다. 다른 실시 예들에서, 큐 아비터들(220-224)은 이전에 선택된 FTI 후보 패킷들(230-234)이 링크 패킷(260)에 삽입된 후 큐들(210-214)로부터 FTI 후보 패킷들(230-234)을 선택한다. 또 다른 실시 예들에서, 큐 아비터들(220-224)은 이전에 선택된 FTI 후보 패킷들(230-234)이 패킹 버퍼 아비터(250)에 의해 선택된 후 큐들(210-214)로부터 FTI 후보 패킷들(230-234)을 선택하나, 링크 패킷(260)에서 데이터 저장 공간이 이용 가능하지 않은 것, 링크 패킷(260)에서 소정의 경계에 정렬된 데이터 저장 공간이 이용 가능하지 않은 것, 또는 다른 조건들이 충족되지 않는 것으로 인해 링크 패킷(260)에 삽입되지 않는다.
도시된 바와 같이, 각각의 FTI 후보 패킷들(230-234)은 상이한 데이터 크기들(240-244)을 가진다. 일부 실시 예들에서, FTI 후보 패킷들(230-234) 중 둘 이상은 동일한 데이터 크기를 가진다. 일 실시 예에서, 큐들(210-214) 중 하나 이상은 상이한 크기들의 FTI 패킷들을 저장한다. 이에 따라, 큐 아비터들(222-224) 중 소정의 하나가 FTI 후보 패킷을 선택할 때, 선택된 FTI 후보 패킷은 동일한 큐로부터 선택된 이전에 선택된 FTI 후보 패킷과 상이한 크기를 가진다. 일례에서, 큐(210)가 요청 유형의 패킷들을 저장할 때, 큐(210)는 128 비트 크기의 압축되지 않은 요청 패킷들을 저장하고, 64 비트 크기의 압축된 요청 패킷들을 저장한다. 이에 따라, 큐(210)의 일부 엔트리들은 데이터 크기(240)와 상이한 데이터 크기들의 FTI 후보 패킷들을 저장한다.
도시된 바와 같이, 링크 패킷(260)은 섹터들(262-266)로 분할된다. 일 실시 예에서, 각 섹터는 32 비트이다. 섹터들(262-266)에 대한 다른 데이터 크기들이 가능하고 고려된다. 일 실시 예에서, 링크 패킷(260)은 여덟 개의 섹터들을 포함한다. 다른 실시 예들에서, 링크 패킷(260)은 다른 수의 섹터들을 포함한다. 다양한 실시 예들에서, 링크 패킷(260)은 레지스터들에 저장된다. 다른 실시 예들에서, 다른 순차적 저장 요소들이 사용된다. 제어 FTI 후보 패킷들과 같은 데이터를 저장하는 것 외에도, 섹터들(262-266) 중 어느 섹터(들)가 이용 가능하고 어느 섹터들이 할당되는지에 대한 표시와 같은 다른 메타 데이터(도시되지 않음)도 저장된다. 패킹 버퍼 아비터(250)는 FTI 후보 패킷들(230-234)을 수신하고 링크 패킷(260)에서의 이용 가능한 데이터 저장 공간에 삽입하기 위해 수신된 FTI 후보 패킷들(230-234) 중 하나 이상을 선택한다. 일부 실시 예들에서, 패킹 버퍼 아비터(250)는 클록 사이클마다 FTI 후보 패킷들(230-234) 중 하나를 선택하고 이를 링크 패킷(260)에 삽입할 수 있다. 또 다른 실시 예에서, 패킹 버퍼 아비터(250)는 클록 사이클마다 FTI 후보 패킷들(230-234) 중 둘 이상을 선택하고 이것들을 링크 패킷(260)에 삽입할 수 있다.
다양한 실시 예들에서, 패킹 버퍼 아비터(250)는 조합 로직 및 순차적 요소들의 조합을 포함한다. 패킹 버퍼 아비터(250)는 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현된다. 일부 실시 예들에서, 패킹 버퍼 아비터(250)는 패킷의 오래된 정도, 패킷 유형의 우선 순위 레벨, 서비스 품질 파라미터, 소스 식별자, 응용 프로그램 식별자 또는 실시간 응용 프로그램과 같은 유형, 실시간 트래픽과 같은 트래픽 유형의 표시, 대역폭 요건 또는 레이턴시 허용 오차 요건 등을 포함하는 하나 이상의 속성에 기초하여 FTI 후보 패킷들(230-234)을 선택하고 이것들을 링크 버퍼(260)에 삽입한다. 일부 실시 예들에서, 패킹 버퍼 아비터(250)는 클록 사이클마다 삽입(패킹)을 위해 FTI 후보 패킷들(230-234) 중 하나를 선택한다. 다른 실시 예들에서, 패킹 버퍼 아비터(250)는 클록 사이클마다 삽입(패킹)을 위해 FTI 후보 패킷들(230-234) 중 둘 이상을 선택한다.
다양한 실시 예들에서, 패킹 버퍼 아비터(250)는 또한 링크 패킷(260)이 FTI 후보 패킷들(232-234) 중 소정의 후보 패킷에 이용 가능한 나머지 데이터 저장 공간을 갖는지 여부를 결정한다. 일부 실시 예들에서, 패킹 버퍼 아비터(250)는 또한 링크 패킷(260)이 FTI 후보 패킷들(232-234) 중 소정의 후보 패킷에 이용 가능한 소정의 경계 상에 정렬되는 나머지 데이터 저장 공간을 갖는지 여부를 결정한다. 일부 실시 예들에서, 패킹 버퍼 아비터(250)는 FTI 후보 패킷들(232-234)을 링크 패킷(260)에 패킹(삽입)하는 속도와 패브랙 링크의 타단의 수신기에서의 수신 큐에 이용 가능한 데이터 저장 공간을 생성하는 속도 간 불일치를 고려하기 위한 제어 로직을 포함한다. 이러한 불일치는 또한 링크 패킷을 송신하는 데 링크를 이용 가능할 때 패브릭에서의 네트워크가 유휴 클록 사이클들("버블들")을 추가 및 삭제하는 것으로 인해 발생한다.
일례에서, 패브릭 인터페이스들이 데이터 전달 에러들을 검출하고 데이터를 재전송할 때, 유휴 클록 사이클들("버블들")이 패브릭 링크 상에 삽입된다. 몇몇 경우, 이러한 유휴 사이클들은 유지되지 않고, 패브릭에서의 네트워크 전체에 걸쳐 버스 이용 및 중재로 인해 패킷 송신기(200)로부터 수신기로 전송되는 두 링크 패킷들 사이에서 제거된다. 이에 따라, 수신기의 수신 큐에서의 데이터 충돌을 회피하기 위해, 일 실시 예에서, 패킷 버퍼 송신기(250)는 소정의 유형의 패킷들을 저장하는 수신 큐에서 데이터 충돌을 회피하기 위해 패킷 수신기에 대해 수신된 링크 패킷들 사이의 최소 사이클 수의 제3 카운트를 저장한다.
일례에서, 패브릭 링크의 타단 상의 패킷 수신기는 소정의 유형(예를 들어, 제어 응답 패킷들)에 대한 수신 큐를 가지며 이러한 수신 큐는 수신된 패킷들을 할당하는 데 이용 가능한 두 개의 엔트리들을 가진다. 임의의 엔트리에 소정의 유형의 수신된 패킷들을 할당하는 대신, 액세스 로직을 단순화하고 타이밍 요건들을 충족시키기 위해, 일부 실시 예들에서는, 수신된 패킷들을 할당하는 데 수신 큐에서의 동일한 두 개의 엔트리들이 이용 가능하다. 다음 클록 사이클에서, 소정의 유형의 할당된 두 패킷들에 대응하는 정보는 다른 엔트리들에 재위치된다. 일 실시 예에서, 정보는 두 개의 엔트리들만큼 아래로(또는 위로) 시프트된다. 다른 실시 예에서, 정보는 하나의 엔트리만큼 아래로(또는 위로) 시프트된다. 또 다른 실시 예에서, 정보는 속성들에 기초하여 다른 엔트리들에 저장된 정보와 소팅(sort)된다. 속성들의 예들은 이전에 제공되었다. 다양한 실시 예들에서, 패킷 송신기(200)에서의 패킹 버퍼 아비터(250)는 패킷 수신기에서의 구현을 인식하고 FTI 후보 패킷들(230-234)을 링크 패킷(260)에 삽입할 때 이러한 지식을 사용한다.
이상의 예를 사용하여, 패킹 버퍼 아비터(250)는 데이터 충돌을 회피하기 위해 패킷 수신기에 대한 수신된 링크 패킷들 사이의 최소 클록 사이클(또는 사이클)의 수가 1 사이클이라는 것을 알고 있다. 예를 들어, 클록 사이클 1에서, 패킷 수신기는 소정의 유형의 두 개의 제어 FTI 패킷들(예를 들어, 제어 응답 패킷들)을 수신하고 이것들을 소정의 유형의 수신 큐의 두 개의 엔트리들(예를 들어, 엔트리들 0 및 1)에 할당할 수 있다. 클록 사이클 2에서, 수신 큐는 최근 수신된 제어 FTI 패킷들에 대응하는 정보를 두 개의 엔트리들(예를 들어, 엔트리들 0 및 1)로부터 수신 큐에서의 다른 엔트리들로 시프트한다. 예를 들어, 수신 큐의 엔트리들에 저장된 정보는 일 실시 예에서, 중재 목적으로 소팅된다.
클록 사이클 2에서, 두 개의 엔트리들(예를 들어, 엔트리들 0 및 1)은 새로운 정보를 수신할 수 없다. 소정의 유형의 하나 이상의 새로운 제어 FTI 패킷에 대한 새로운 정보가 수신되면, 두 개의 엔트리들(예를 들어, 엔트리들 0 및 1)에서 데이터 충돌이 발생한다. 클록 사이클 3에서, 두 개의 엔트리들(예를 들어, 엔트리들 0 및 1)은 할당할 새로운 정보를 수신하는 데 다시 한 번 이용 가능하다. 이에 따라, 이러한 예에서 소정의 유형의 제어 FTI 패킷들에 대해, 패킷 수신기는 소정의 유형의 제어 FTI 패킷들에 대한 데이터 충돌을 회피하기 위해 패킷 수신기에 대해 수신된 링크 패킷들 사이의 하나의 최소 클록 사이클 수를 필요로 한다. 다양한 실시 예들에서, 제1 유형의 제어 FTI 패킷들에 대한 패킷 수신기에서의 데이터 충돌을 회피하기 위해 수신된 링크 패킷들 사이의 최소 클록 사이클 수는 제2 유형의 제어 FTI 패킷들에 대한 최소 클록 사이클 수와 상이하다. 다양한 실시 예들에서, 패킹 버퍼 아비터(250)는 "유형 1” 내지 "유형 N"과 같은 제어 유형들 각각에 대한 최소 클록 사이클 수에 대해 별개의 값들을 저장한다.
일부 실시 예들에서, 패킹 버퍼 아비터(250)는 추가적으로 각각 패킷 송신기(200)로부터의 다음 링크 패킷(260)이 패브릭 링크를 사용할 수 있게 하는 인에이블된 네트워크 사이클들의 제1 카운트를 유지한다. 일부 실시 예들에서, 패킹 버퍼 아비터(250)는 또한 링크 패킷(260)에 삽입된 소정의 유형의 FTI 후보 패킷 수의 제2 카운트를 유지한다. 이에 따라, 패킹 버퍼 아비터(250)는 "유형 1” 내지 “유형 N”과 같은 제어 유형들 각각에 대해 별개의 제2 카운트를 유지한다. 다양한 실시 예들에서, 패킹 버퍼 아비터(250)는 세 개의 피연산자들을 추가함으로써 소정의 유형의 FTI 패킷들에 대한 합을 결정한다. 제1 피연산자는 지정된 유형에 대한 제2 카운트이다. 제2 피연산자는 지정된 유형에 대해 저장된 최소 클록 사이클 수이다. 그리고 제3 피연산자는 섹터들(262-266)(여기서 연속적인 섹터들은 소정의 경계와 정렬된다)의 하나 이상의 연속적인 섹터에 적합할 FTI 후보 패킷에 대한 것이다. 일 실시 예에서, 패킹 버퍼 아비터(250)가 합이 제1 카운트보다 작다고 결정하면, 패킹 버퍼 아비터(250)는 FTI 후보 패킷을 링크 패킷(260)에 삽입하고 제2 카운트를 증분시킨다.
이제 도 3을 참조하면, 컴퓨팅 시스템에서의 효율적인 데이터 전달을 수행하기 위한 방법(300)의 일 실시 예가 도시되어 있다. 논의를 위해, 본 실시 예(도 4 내지 도 5 및 도 7뿐만 아니라)에서의 단계들은 순차적인 순서로 도시되어 있다. 그러나, 설명되는 방법들의 다양한 실시 예들에서, 설명되는 요소들 중 하나 이상의 요소가 동시에 또는 도시된 것과 상이한 순서로 수행되거나, 또는 완전히 생략됨을 유념한다. 또한 다른 추가 요소들도 요구되는 바에 따라 수행된다. 여기에 설명된 다양한 시스템들 또는 장치들 중 어느 하나가 방법(300)을 구현하도록 구성된다.
링크 상에서 전송할 패킷들이 수신된다(블록 302). 일례에서, 처리 장치가 목적지로 전송할 제어 요청 패킷을 생성한다. 다른 예에서는, 메모리 제어기가 요청 처리 장치로 전송할 응답 패킷들을 생성한다. 패브릭 전송 인터페이스는 패킷 송신기를 포함하며, 이는 제어 패킷들을 수신한다. 수신된 패킷들은 패킷 유형에 기초하여 다수의 큐들에 저장된다(블록 304). 전술된 바와 같이, 제어 패킷 유형의 예들은 요청 유형, 응답 유형, 프로브 유형, 및 토큰 또는 크레딧 유형을 포함한다. 또한 다른 실시 예들에서는 패킷 유형들의 다른 예들도 포함된다.
각 큐로부터 후보 패킷이 선택된다(블록 306). 일부 실시 예들에서, 큐 아비터들은 오래된 정도, 패킷 유형의 우선 순위 레벨, 패캣의 우선 순위 레벨, 서비스 품질 파라미터, 소스 식별자, 응용 프로그램 식별자 또는 실시간 응용 프로그램과 같은 유형, 실시간 트래픽과 같은 트래픽 유형의 표시, 대역폭 요건 또는 레이턴시 허용 오차 요건 등을 포함하는 하나 이상의 속성에 기초하여 큐들로부터 후보 패킷들을 선택한다.
수신기에 대한 링크가 이용 가능하고 링크 패킷이 비어 있지 않다면(조건부 블록 308의 "예” 분기), 패킹된 링크 패킷이 이용 가능한 링크를 통해 수신기로 전송된다(블록 310). 일부 실시 예들에서, 패브릭 전송 인터페이스는 패브릭 링크가 패킹된 링크 패킷을 전송하는 데 이용 가능함을 명시하는 신호 또는 다른 표시를 패킷 송신기로 전송한다. 수신기에 대한 링크가 이용 불가능하거나 링크 패킷이 비어있다면(조건부 블록 308의 "아니오” 분기), 하나 이상의 후보 패킷은 조건부로 링크 패킷에 패킹된다(블록 312).
조건들은 링크 패킷이 소정의 후보 패킷을 수신하기에 충분한 데이터 저장 공간을 가지는지 여부를 포함한다. 일부 실시 예들에서, 또한 링크 패킷이 소정의 후보 패킷에 충분히 이용 가능한 소정의 경계 상에 정렬되는 데이터 저장 공간을 갖는지 여부가 결정된다. 링크 패킷이 최대한이면(조건부 블록 314의 "예” 분기), 수신기에 대한 링크가 이용 가능해질 때까지 대기가 시작된다(블록 316). 이후, 방법(300)의 제어 흐름은 블록 310으로 이동한다. 링크 패킷이 최대한이 아니면(조건부 블록 314의 "아니오” 분기), 방법(300)의 제어 흐름은 조건부 블록 308로 되돌아 가서 수신기에 대한 링크가 이용 가능하고 링크 패킷이 비어 있는지 여부가 결정된다.
이제 도 4를 참조하면, 컴퓨팅 시스템에서의 효율적인 데이터 전달을 수행하기 위한 방법(400)의 일 실시 예가 도시되어 있다. 각각 각각의 유형의 패킷들을 저장하는 다수의 큐들로부터 후보 패킷들이 수신된다(블록 402). 일부 실시 예들에서, 큐 아비터들은 각 클록 사이클마다 큐들로부터 후보 패킷들을 선택한다. 다른 실시 예들에서, 큐 아비터들은 이전에 선택된 후보 패킷들이 링크 패킷에 삽입된 후 큐들로부터 후보 패킷들을 선택한다. 또 다른 실시 예들에서, 큐 아비터들은 이전에 선택된 후보 패킷들이 패킹 버퍼 아비터에 의해 선택된 후 큐들로부터 후보 패킷들을 선택하나, 링크 패킷에서 데이터 저장 공간이 이용 가능하지 않은 것, 링크 패킷에서 소정의 경계에 정렬된 데이터 저장 공간이 이용 가능하지 않은 것, 또는 다른 조건들이 충족되지 않는 것으로 인해 링크 패킷에 삽입되지 않는다.
이용 가능한 큐들의 그룹이 식별된다(블록 404). 일부 실시 예들에서, 소정의 큐가 하나 이상의 후보 패킷을 저장할 때 소정의 큐는 이용 가능한 큐들의 그룹에 있다. 일 실시 예에서, 다수의 큐들 중 하나 이상은 링크 패킷이 이용 가능한 링크를 통해 전송되기 전에 큐로부터 링크 패킷에 삽입되는 패킷 수에 대한 각각의 제한을 가진다. 일부 실시 예들에서, 제한은 구성 및 상태 레지스터에 저장된다. 다양한 실시 예들에서, 레지스터는 프로그래밍 가능하다. 최고 우선 순위를 갖는 이용 가능한 큐들의 그룹으로부터 큐가 선택된다(블록 410). 일부 실시 예들에서, 우선 순위는 오래된 정도, 패킷 유형의 우선 순위 레벨, 서비스 품질 파라미터, 소스 식별자, 응용 프로그램 식별자 또는 실시간 응용 프로그램과 같은 유형, 실시간 트래픽과 같은 트래픽 유형의 표시, 대역폭 요건 또는 레이턴시 허용 오차 요건 등을 포함하는 하나 이상의 속성에 기초한다.
선택된 큐의 후보 패킷이 삽입 조건들을 충족하면(조건부 블록 412의 "예” 분기), 후보 패킷이 링크 패킷에 삽입된다(블록 418). 전술된 바와 같이, 일부 실시 예들에서, 링크 패킷이 소정의 후보 패킷에 이용 가능한 소정의 경계 상에 정렬되는 나머지 데이터 저장 공간을 갖는지 여부가 결정된다. 또한 후보 패킷을 링크 패킷에 삽입하는 것이 후보 패킷들을 링크 패킷에 삽입하는 속도와 수신기에서의 수신 큐에 이용 가능한 데이터 저장 공간을 생성하는 속도 간 불일치를 고려함으로써 수신기에서의 데이터 충돌을 회피하는지 여부가 결정된다.
선택된 큐의 후보 패킷이 삽입 조건들을 충족하지 않으면(조건부 블록 412의 "아니오” 분기), 선택된 큐에 또 다른 후보 패킷을 선택할 것이 통지된다(블록 414). 일 실시 예에서, 다음 후보 패킷은 다음 클록 사이클에서 선택된 큐에 의해 선택된다. 일부 실시 예들에서, 후보 패킷이 링크 패킷에 삽입되거나 링크 패킷이 전송될 때까지 선택된 큐의 우선 순위가 감소된다(블록 416). 다른 실시 예들에서는, 선택된 큐의 우선 순위가 유지된다. 또 다른 실시 예에서, 우선 순위는 선택된 큐에 대해 유지되지만, 선택된 큐가 이용 가능한 큐들의 그룹에서 제거된다. 이후, 방법(400)의 제어 흐름은 블록 404로 되돌아 가서 이용 가능한 큐들의 그룹이 식별된다. 일부 실시 예들에서, 블록 404 내지 블록 416 또는 블록 418의 루프는 클록 사이클 내에서 여러 번 반복된다.
이제 도 5를 참조하면, 컴퓨팅 시스템에서의 효율적인 데이터 전달을 수행하기 위한 방법(500)의 일 실시 예가 도시되어 있다. 선택된 큐로부터 후보 패킷이 수신된다(블록 502). 일 실시 예에서, 링크 패킷을 패킹하는 데 사용되는 패킹 버퍼 아비터는 후보 패킷을 수신한다. 선택된 큐의 후보 패킷에 대한 수신기에 이용 가능한 공간이 없으면(조건부 블록 504의 "아니오” 분기), 선택된 큐는 이용 가능한 큐 그룹에서 제거된다(블록 506).
선택된 큐의 후보 패킷에 대한 수신기에 이용 가능한 공간이 있지만(조건부 블록 504의 "예” 분기), 선택된 큐의 후보 패킷에 대한 링크 패킷에 이용 가능한 공간이 없다면(조건부 블록 508의 "아니오" 분기), 선택된 큐가 이용 가능한 큐들의 그룹에서 제거된다(블록 506). 선택된 큐의 후보 패킷에 대한 링크 패킷에 이용 가능한 공간이 있지만(조건부 블록 508의 "예” 분기), 링크 패킷에서의 이용 가능한 공간이 소정의 경계에 정렬되지 않는다면(조건부 블록 510의 "아니오” 분기), 선택된 큐가 이용 가능한 큐들의 그룹에서 제거된다(블록 506). 링크 패킷에서의 이용 가능한 공간이 소정의 경계에 정렬되면(조건부 블록 510의 "예” 분기), 후보 패킷이 링크 패킷에 삽입된다(블록 512).
도 6을 참조하면, 패킷 송신기(600)의 일 실시 예의 일반화된 블록도가 도시되어 있다. 도시된 실시 예에서, 패킷 수신기(600)는 각각 각각의 유형의 패킷들을 저장하기 위한 큐들(610-614)을 포함한다. 도시된 바와 같이, 패킷 수신기(600)는 패브릭 링크로부터 링크 패킷(660)을 수신한다. 링크 패킷(660)은 두 개 이상의 패브릭 전송 인터페이스(FTI) 패킷들을 저장하기에 충분한 데이터 저장 공간을 가진다. 분배 디멀티플렉서 로직(650)(또는 로직(650))은 링크 패킷(600)에서의 섹터들(662-666)을 분석하고, 링크 패킷(660)에 있는 FTI 제어 패킷들의 수와 링크 패킷(660)에서의 위치를 결정하며, 저장을 위해 FTI 제어 패킷들을 큐들(610-614)에 전송한다.
큐들(610-614)에 저장되는 제어 패킷 유형의 예들은 요청 유형, 응답 유형, 프로브 유형, 및 토큰 또는 크레딧 유형을 포함한다. 또한 다른 실시 예들에서는 패킷 유형들의 다른 예들도 포함된다. 도시된 바와 같이, 큐(610)는 일 실시 예에서 제어 요청 유형인 "유형 1"의 패킷들을 저장한다. 큐(612)는 일 실시 예에서 제어 응답 유형인 "유형 2"의 패킷들을 저장한다. 큐(614)는 일 실시 예에서 제어 토큰 또는 크레딧 유형인 "유형 N"의 패킷들을 저장한다.
도시된 바와 같이, 링크 패킷(660)은 섹터들(662-666)로 분할된다. 일 실시 예에서, 각 섹터는 32 비트이다. 섹터들(662-666)에 대한 다른 데이터 크기들이 가능하고 고려된다. 일 실시 예에서, 링크 패킷(660)은 여덟 개의 섹터들을 포함한다. 다른 실시 예들에서, 링크 패킷(660)은 다른 수의 섹터들을 포함한다. 제어 FTI 패킷들과 같은 데이터를 저장하는 것 외에도, 일부 실시 예들에서 제어 FTI 패킷들이 다양한 데이터 크기들을 가지므로, 섹터들(662-666) 중 어느 섹터(들)가 할당되고 어느 제어 FTI 패킷들이 시작되는지에 대한 표시와 같은 다른 메타 데이터(도시되지 않음)도 저장된다.
다양한 실시 예들에서, 로직(650)은 조합 로직 및 순차적 요소들의 조합을 포함한다. 로직(650)은 하드웨어, 소프트웨어, 또는 조합으로 구현된다. 도시된 바와 같이, 로직(650)은 링크 패킷(660)에서 하나 이상의 제어 FTI 패킷을 제거하고 이것들을 큐들(610-614)로 전송한다. 다양한 실시 예들에서, 각각의 FTI 후보 패킷들(630-634)은 상이한 데이터 크기들(640-644)을 가진다. 일부 실시 예들에서, FTI 후보 패킷들(630-634) 중 둘 이상은 동일한 데이터 크기를 가진다. 일 실시 예에서, 큐들(610-614) 중 하나 이상은 상이한 크기들의 FTI 패킷들을 저장한다. 이에 따라, 로직(650)이 FTI 패킷(630)과 같은 FTI 패킷을 큐(610)로 전송할 때, FTI 패킷은 동일한 큐에 전송된 이전 FTI 패킷과 상이한 크기를 가진다. 일례에서, 큐(610)가 요청 유형의 패킷들을 저장할 때, 큐(610)는 128 비트 크기의 압축되지 않은 요청 패킷들을 저장하고, 64 비트 크기의 압축된 요청 패킷들을 저장한다. 이에 따라, 큐(610)의 일부 엔트리들은 데이터 크기(640)와 상이한 데이터 크기들의 FTI 후보 패킷들을 저장한다.
일 실시 예에서, 각각의 큐들(610-614)은 수신된 패킷들을 할당하기 위한 두 개의 이용 가능한 엔트리들을 가진다. 임의의 엔트리에 FTI 패킷들(630-634)을 할당하는 대신, 액세스 로직을 단순화하고 타이밍 요건들을 충족시키기 위해, 일부 실시 예들에서는, 수신된 패킷들을 할당하는 데 큐들(610-614)에서의 동일한 두 개의 엔트리들이 이용 가능하다. 도시된 바와 같이, 상위 두 개의 엔트리들이 FTI 패킷들(630-634) 중 하나 이상을 수신하는 데 사용된다. 다른 실시 예들에서는, 또 다른 수의 엔트리들 및 큐들(610-614) 내의 다른 위치들이 사용된다. 일부 실시 예들에서, 유효 필드들(611, 613 및 615)이 이용 가능한 엔트리들을 나타내는 데 사용된다. 일 실시 예에서, 유효 필드들(611, 613 및 615)에 저장된 무효 값은 이용 가능한 엔트리를 나타내고, 유효 필드들(611, 613 및 615)에 저장된 어써트 값은 할당된 엔트리를 나타낸다.
다음 클록 사이클에서, 큐들(610-614)에 새로 할당된 정보는 다른 엔트리들로 재위치된다. 일 실시 예에서, 정보는 두 개의 엔트리들만큼 아래로(또는 위로) 시프트된다. 다른 실시 예에서, 정보는 하나의 엔트리만큼 아래로(또는 위로) 시프트된다. 또 다른 실시 예에서, 정보는 속성들에 기초하여 다른 엔트리들에 저장된 정보와 소팅된다. 속성들의 예들은 이전에 제공되었다. 다양한 실시 예들에서, 패킷 송신기(200)(도 2)는 패킷 수신기(600)에서의 구현을 인식하고 FTI 후보 패킷들을 링크 패킷에 삽입할 때 이러한 지식을 사용한다.
일부 실시 예들에서, 로직(650)은 패킷 유형들 각각에 대한 토큰들 또는 크레딧들(652)을 측파대 연결 상의 패킷 송신기로 전송한다. 일부 실시 예들에서, 큐들(610-614) 중 하나 이상에 대해 이용 가능한 엔트리 수는 저장된 FTI 패킷들이 처리를 위해 전송될 때 큐들(610-614)에서의 엔트리들의 할당 해제에 기초하여, 두 개의 엔트리들과 같은 디폴트 값을 지나 증가한다. 이러한 경우들에서, 패킷 송신기는 큐들(610-614)에서 데이터 충돌을 회피하기 위해 패킷 수신기(600)에 대해 수신된 링크 패킷들 사이의 최소 사이클 수에 대한 이의 저장된 값들을 업데이트한다.
이제 도 7을 참조하면, 컴퓨팅 시스템에서의 효율적인 데이터 전달을 수행하기 위한 방법(700)의 일 실시 예가 도시되어 있다. 제1 카운트가 저장되며, 여기서 제1 카운트는 소정의 유형의 패킷들을 저장하는 수신 큐에서 데이터 충돌을 회피하기 위해 수신기에 대해 수신된 링크 패킷들 사이의 최소 사이클 수이다(블록 702). 하나 이상의 명령 패킷을 포함하는 링크 패킷이 링크를 통해 수신기로 전송된다(블록 704). 인에이블된 네트워크 사이클들의 제2 카운트가 리셋되며, 여기서 각 인에이블된 네트워크 사이클은 다음 링크 패킷이 링크를 사용할 수 있게 하는 것이다(블록 706). 제3 카운트가 리셋되며, 여기서 제3 카운트는 링크 패킷에 삽입된 소정의 유형의 후보 패킷 수이다(블록 708).
링크가 패브릭에서의 네트워크에 의해 인에이블되면(조건부 블록 710의 "예” 분기), 제2 카운트가 증분된다(블록 712). 삽입 조건들을 충족하는 소정의 유형의 후보 패킷이 있는 경우(조건부 블록 714의 "예” 분기), 제1 카운트, 제3 카운트 및 후보 패킷에 대한 1을 더함으로써 합계가 결정된다(블록 716). 합이 제2 카운트보다 적으면(조건부 블록 720의 "예” 분기), 소정의 유형의 후보 패킷이 링크 패킷에 삽입된다(블록 722). 추가적으로, 제3 카운트가 증가된다(블록 724). 이후, 방법(700)의 제어 흐름은 조건부 블록 726으로 이동한다. 유사하게, 삽입 조건들을 충족하는 소정의 유형의 후보 패킷이 없거나(조건부 블록(714)의 "아니오” 분기), 또는 합계가 제2 카운트보다 적지 않다면(조건부 블록 720의 "아니오” 분기), 방법(700)의 제어 흐름은 조건부 블록(726)으로 이동한다.
링크 패킷이 전송될 준비가 되면(조건부 블록 726의 "예” 분기), 방법 700의 제어 흐름은 조건부 블록 704로 되돌아 가서 하나 이상의 명령 패킷을 포함하는 링크 패킷이 수신기로 전송된다. 일부 실시 예들에서, 링크 패킷은 링크가 이용 가능하고 링크 패킷이 비어 있지 않다는 신호 또는 다른 표시를 패브릭 전송 인터페이스가 전송할 때 준비된 것으로 고려된다. 링크 패킷이 전송될 준비가 되지 않았다면(조건부 블록 726의 "아니오” 분기), 방법(700)은 다음 클록 사이클까지 대기한다(블록 728). 예를 들어, 링크가 이용 가능하고 링크 패킷이 비어 있다는 신호 또는 다른 표시를 패브릭 전송 인터페이스가 전송하지 않는다면, 링크 패킷은 전송되도록 준비되지 않은 것이다. 이후, 방법(700)의 제어 흐름은 블록 "A"를 통해 조건부 블록 710으로 되돌아 가서 조건부 블록 710에서 링크가 패브릭에서의 네트워크에 의해 인에이블되는지 여부가 결정된다.
다양한 실시 예들에서, 전술된 방법들 및/또는 메커니즘들을 구현하는 데 소프트웨어 응용 프로그램의 프로그램 명령어들이 사용된다. 프로그램 명령어들은 하드웨어의 거동을 C와 같은 상위 레벨 프로그래밍 언어로 기술한다. 대안적으로는, Verilog와 같은 하드웨어 설계 언어(HDL)가 사용된다. 프로그램 명령어들은 비일시적 컴퓨터 판독 가능한 저장 매체 상에 저장된다. 많은 저장 매체 유형이 이용 가능하다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령어들 및 수반 데이터를 제공하기 위해 사용 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 프로그램 명령어들을 실행하는 하나 이상의 프로세서 및 하나 이상의 메모리를 포함한다.
상술된 실시 예들은 구현들의 단지 비제한적인 예들일 뿐이라는 것이 강조되어야 한다. 해당 기술분야의 통상의 기술자들에게는 상기한 개시 내용이 충분히 이해되면, 다양한 변형들 및 수정들이 명백해질 것이다. 이하의 청구범위는 이러한 모든 변형들 및 수정들을 포함하는 것으로 해석되어야 한다.

Claims (20)

  1. 장치로서,
    각각 각각의 유형의 패킷들을 저장하도록 구성된 복수의 큐들;
    각각 상기 복수의 큐들 각각으로부터 후보 패킷을 선택하도록 구성된 복수의 큐 아비터들(queue arbiters);
    패킹 아비터(packing arbiter)로서:
    상기 복수의 큐들로부터 이용 가능한 큐들의 그룹을 식별하도록;
    제1 큐가 상기 이용 가능한 큐들의 그룹 중 최고 우선 순위를 가진다는 결정에 응답하여, 상기 이용 가능한 큐들의 그룹으로부터 큐를 선택하도록; 그리고
    상기 제1 큐로부터의 상기 후보 패킷이 삽입 조건들을 충족시킨다는 결정에 응답하여, 상기 제1 큐로부터의 상기 후보 패킷을 복수의 후보 패킷들을 위한 공간을 포함하는 링크 패킷에 삽입하도록 구성된, 상기 패킹 아비터를 포함하고,
    상기 링크 패킷에, 선택된 상기 큐로부터의 상기 후보 패킷을 저장하는 데 이용 가능한 데이터 저장 공간이 있는 경우, 선택된 상기 큐로부터의 상기 후보 패킷은 삽입 조건들을 충족시키는 것인, 장치.
  2. 제1항에 있어서, 상기 패킹 아비터는 또한 선택된 상기 큐로부터의 상기 후보 패킷이 삽입 조건들을 충족시키지 않는다는 결정에 응답하여, 선택된 상기 큐에 대응하는 큐 아비터에 상이한 후보 패킷을 선택할 것을 통지하도록 구성되는, 장치.
  3. 제1항에 있어서, 선택된 상기 큐로부터의 상기 후보 패킷이 삽입 조건들을 충족시키지 않는다는 결정에 응답하여, 상기 패킹 아비터는 또한:
    후보 패킷이 상기 링크 패킷에 삽입되는 것; 그리고
    상기 링크 패킷이 전송되는 것 중 하나를 검출할 때까지 선택된 상기 큐의 상기 우선 순위를 감소시키도록 구성되는, 장치.
  4. 삭제
  5. 제1항에 있어서, 선택된 상기 큐로부터의 상기 후보 패킷이 삽입 조건들을 충족시킨다는 결정은 상기 링크 패킷에서 상기 이용 가능한 데이터 저장 공간이 소정의 경계에 정렬된다는 결정을 포함하는 것인, 장치.
  6. 제1항에 있어서, 선택된 상기 큐로부터의 상기 후보 패킷이 삽입 조건들을 충족시킨다는 결정은 수신기에, 선택된 상기 큐로부터의 상기 후보 패킷을 저장하는 데 이용 가능한 데이터 저장 공간이 있다는 결정을 포함하는 것인, 장치.
  7. 제1항에 있어서, 링크 패킷이 링크를 통해 수신기로 전송된다는 결정에 응답하여, 상기 패킹 아비터는 또한:
    각각 다음 링크 패킷이 상기 링크를 사용할 수 있게 하는 인에이블된 네트워크 사이클들의 제1 카운트; 및
    링크 패킷에 삽입된 소정의 유형의 후보 패킷 수의 제2 카운트;
    각각을 리셋하도록 구성되는, 장치.
  8. 제7항에 있어서, 상기 링크가 상기 링크를 통해 상기 수신기에 다음 링크 패킷을 전송하는 데 이용 가능하다는 결정에 응답하여, 상기 패킹 아비터는 또한 상기 제1 카운트를 증분시키도록 구성되는, 장치.
  9. 제8항에 있어서, 상기 다음 링크 패킷에 삽입하기 위한 조건들을 충족시키는 상기 소정의 유형의 후보 패킷이 있다는 결정에 응답하여, 상기 패킹 아비터는 또한:
    상기 제2 카운트,
    상기 후보 패킷에 대한 1, 및
    상기 소정의 유형의 패킷들을 저장하는 수신 큐에서 데이터 충돌을 회피하기 위한 상기 수신기에 대한 수신된 링크 패킷들 사이의 최소 사이클 수
    를 더함으로써 합을 결정하도록 구성되는, 장치.
  10. 제9항에 있어서, 상기 합이 상기 제1 카운트보다 작다는 결정에 응답하여, 상기 패킹 아비터는 또한:
    상기 소정의 유형의 상기 후보 패킷을 상기 다음 링크 패킷에 삽입하도록; 그리고
    상기 제2 카운트를 증분시키도록 구성되는, 장치.
  11. 제2항에 있어서, 상기 이용 가능한 큐들의 그룹은:
    적어도 하나의 유효 패킷을 저장하는 큐; 및
    연속적인 소정의 횟수만큼 선택되지 않았던 큐;
    와 같은 하나 이상의 큐를 포함하는 것인, 장치.
  12. 방법으로서,
    각각 각각의 유형의 패킷들을 저장하도록 구성된 복수의 큐들에 패킷들을 저장하는 단계;
    복수의 큐 아비터들에 의해, 상기 복수의 큐들 각각으로부터 후보 패킷을 선택하는 단계;
    제어 로직에 의해, 상기 복수의 큐들로부터 이용 가능한 큐들의 그룹을 식별하는 단계;
    상기 제어 로직에 의해, 선택되는 큐가 상기 이용 가능한 큐들의 그룹 중 최고 우선 순위를 가진다는 결정에 응답하여, 상기 제어 로직에 의해, 상기 이용 가능한 큐들의 그룹으로부터 큐를 선택하는 단계; 및
    선택된 상기 큐로부터의 상기 후보 패킷이 삽입 조건들을 충족시킨다는 결정에 응답하여, 상기 제어 로직에 의해, 선택된 상기 큐로부터의 상기 후보 패킷을 복수의 후보 패킷들을 위한 공간을 포함하는 링크 패킷에 삽입하는 단계를 포함하고,
    상기 링크 패킷에, 선택된 상기 큐로부터의 상기 후보 패킷을 저장하는 데 이용 가능한 데이터 저장 공간이 있는 경우, 선택된 상기 큐로부터의 상기 후보 패킷은 삽입 조건들을 충족시키는 것인, 방법.
  13. 삭제
  14. 제12항에 있어서, 링크 패킷이 링크를 통해 수신기로 전송된다는 결정에 응답하여:
    각각 다음 링크 패킷이 상기 링크를 사용할 수 있게 하는 인에이블된 네트워크 사이클들의 제1 카운트; 및
    링크 패킷에 삽입된 소정의 유형의 후보 패킷 수의 제2 카운트;
    각각을 리셋하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서, 상기 링크가 상기 링크를 통해 상기 수신기에 다음 링크 패킷을 전송하는 데 이용 가능하다는 결정에 응답하여, 상기 제1 카운트를 증분시키는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서, 상기 다음 링크 패킷에 삽입하기 위한 조건들을 충족시키는 상기 소정의 유형의 후보 패킷이 있다는 결정에 응답하여:
    상기 제2 카운트,
    상기 후보 패킷에 대한 1, 및
    상기 소정의 유형의 패킷들을 저장하는 수신 큐에서 데이터 충돌을 회피하기 위해 상기 수신기에 대해 수신된 링크 패킷들 사이의 최소 사이클 수
    를 더함으로써 합을 결정하는 단계를 더 포함하는, 방법.
  17. 제16항에 있어서, 상기 합이 상기 제1 카운트보다 적다는 결정에 응답하여:
    상기 소정의 유형의 상기 후보 패킷을 상기 다음 링크 패킷에 삽입하는 단계; 및
    상기 제2 카운트를 증분시키는 단계를 더 포함하는, 방법.
  18. 프로그램 명령어들을 저장하는 비일시적 컴퓨터 판독 가능한 저장 매체로서, 상기 프로그램 명령어들은 프로세서에 의해:
    각각 각각의 유형의 패킷들을 저장하도록 구성된 복수의 큐들에 패킷들을 저장하도록;
    상기 복수의 큐들 각각으로부터 후보 패킷을 선택하도록;
    상기 복수의 큐들로부터 이용 가능한 큐들의 그룹을 식별하도록;
    선택되는 큐가 상기 이용 가능한 큐들의 그룹 중 최고 우선 순위를 가진다는 결정에 응답하여, 상기 이용 가능한 큐들의 그룹으로부터 상기 큐를 선택하도록; 그리고
    선택된 상기 큐로부터의 상기 후보 패킷이 삽입 조건들을 충족시킨다는 결정에 응답하여, 선택된 상기 큐로부터의 상기 후보 패킷을 복수의 후보 패킷들을 위한 공간을 포함하는 링크 패킷에 삽입하도록 실행 가능하고,
    상기 링크 패킷에, 선택된 상기 큐로부터의 상기 후보 패킷을 저장하는 데 이용 가능한 데이터 저장 공간이 있는 경우, 선택된 상기 큐로부터의 상기 후보 패킷은 삽입 조건들을 충족시키는 것인, 비일시적 컴퓨터 판독 가능한 매체.
  19. 삭제
  20. 제18항에 있어서, 선택된 상기 큐로부터의 상기 후보 패킷이 삽입 조건들을 충족시킨다는 결정은 수신기에, 선택된 상기 큐로부터의 상기 후보 패킷을 저장하는 데 이용 가능한 데이터 저장 공간이 있다는 결정을 포함하는 것인, 비일시적 컴퓨터 판독 가능한 매체.
KR1020217007733A 2018-08-20 2019-06-26 링크 계층 데이터 패킹 및 패킷 흐름 제어 기법 KR102584507B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/105,367 US20200059437A1 (en) 2018-08-20 2018-08-20 Link layer data packing and packet flow control scheme
US16/105,367 2018-08-20
PCT/US2019/039276 WO2020040873A1 (en) 2018-08-20 2019-06-26 Link layer data packing and packet flow control scheme

Publications (2)

Publication Number Publication Date
KR20210040447A KR20210040447A (ko) 2021-04-13
KR102584507B1 true KR102584507B1 (ko) 2023-10-04

Family

ID=67297339

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217007733A KR102584507B1 (ko) 2018-08-20 2019-06-26 링크 계층 데이터 패킹 및 패킷 흐름 제어 기법

Country Status (6)

Country Link
US (1) US20200059437A1 (ko)
EP (1) EP3841484B1 (ko)
JP (1) JP7161032B2 (ko)
KR (1) KR102584507B1 (ko)
CN (1) CN112585593A (ko)
WO (1) WO2020040873A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016018251A (ja) * 2014-07-04 2016-02-01 株式会社ソシオネクスト データ転送装置及びデータ転送方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721334B1 (en) * 1999-02-18 2004-04-13 3Com Corporation Method and apparatus for packet aggregation in packet-based network
JP2001197067A (ja) * 2000-01-06 2001-07-19 Nippon Telegr & Teleph Corp <Ntt> データ連結転送方法及びシステム、並びにデータ連結転送プログラムを記録した記録媒体
JP4605911B2 (ja) * 2001-01-24 2011-01-05 富士通株式会社 パケット送出装置
CA2451764A1 (en) * 2001-07-05 2003-01-16 Sandburst Corporation Method and apparatus for allocating link bandwidth
US7757033B1 (en) * 2004-02-13 2010-07-13 Habanero Holdings, Inc. Data exchanges among SMP physical partitions and I/O interfaces enterprise servers
BRPI0517561B1 (pt) * 2004-11-11 2018-11-13 Koninl Philips Electronics Nv método e aparelho de multiplexação para multiplexar pacotes de dados
EP1750202A1 (en) * 2005-07-11 2007-02-07 Nvidia Corporation Combining packets for a packetized bus
US7881303B2 (en) * 2006-12-13 2011-02-01 GlobalFoundries, Inc. Command packet packing to mitigate CRC overhead
GB2458952B (en) * 2008-04-04 2012-06-13 Micron Technology Inc Queue processing method
JP2010027032A (ja) * 2008-06-17 2010-02-04 Nec Electronics Corp Fifo装置及びfifoバッファへのデータ格納方法
US8478950B2 (en) * 2008-07-29 2013-07-02 Synopsys, Inc. Data processing circuit with arbitration between a plurality of queues
US8665724B2 (en) * 2009-06-12 2014-03-04 Cygnus Broadband, Inc. Systems and methods for prioritizing and scheduling packets in a communication network
US8737418B2 (en) * 2010-12-22 2014-05-27 Brocade Communications Systems, Inc. Queue speed-up by using multiple linked lists
US10411830B2 (en) * 2015-02-11 2019-09-10 Avago Technologies International Sales Pte. Limited Codeword builder for communication systems
JP7000988B2 (ja) * 2018-05-21 2022-01-19 富士通株式会社 パケット転送装置及びパケット転送方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016018251A (ja) * 2014-07-04 2016-02-01 株式会社ソシオネクスト データ転送装置及びデータ転送方法

Also Published As

Publication number Publication date
CN112585593A (zh) 2021-03-30
JP7161032B2 (ja) 2022-10-25
EP3841484A1 (en) 2021-06-30
EP3841484B1 (en) 2022-10-19
JP2021534684A (ja) 2021-12-09
US20200059437A1 (en) 2020-02-20
KR20210040447A (ko) 2021-04-13
WO2020040873A1 (en) 2020-02-27

Similar Documents

Publication Publication Date Title
US10698853B1 (en) Virtualization of a reconfigurable data processor
US11831565B2 (en) Method for maintaining cache consistency during reordering
EP1738267B1 (en) System and method for organizing data transfers with memory hub memory modules
JP7138190B2 (ja) ネットワークスイッチのキュー
JP2023156472A (ja) 同じチャネルで不均一なレイテンシを有するメモリタイプのための応答のサポート
US11994996B2 (en) Transmission of address translation type packets
KR20220103931A (ko) 메모리와 분산된 계산 어레이 간의 데이터 전송
KR102584507B1 (ko) 링크 계층 데이터 패킹 및 패킷 흐름 제어 기법
US10684965B2 (en) Method to reduce write responses to improve bandwidth and efficiency
JP2023507330A (ja) 電力節約のためのクロックイネーブルとしてのバイトイネーブルの転用
TW202032383A (zh) 可重組態資料處理器的組態加載和卸載

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant