KR20220042044A - 시간 민감형 네트워킹을 위한 결정론적 패킷 스케줄링 및 dma - Google Patents

시간 민감형 네트워킹을 위한 결정론적 패킷 스케줄링 및 dma Download PDF

Info

Publication number
KR20220042044A
KR20220042044A KR1020210112823A KR20210112823A KR20220042044A KR 20220042044 A KR20220042044 A KR 20220042044A KR 1020210112823 A KR1020210112823 A KR 1020210112823A KR 20210112823 A KR20210112823 A KR 20210112823A KR 20220042044 A KR20220042044 A KR 20220042044A
Authority
KR
South Korea
Prior art keywords
traffic
data
packet
data packet
circuitry
Prior art date
Application number
KR1020210112823A
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 KR20220042044A publication Critical patent/KR20220042044A/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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

하나의 실시예에서, NIC(network interface controller)는 송신을 위한 데이터 패킷들을 큐잉하는 다수의 패킷 송신 큐들을 포함한다. 데이터 패킷들은 다수의 트래픽 클래스들에 할당된다. NIC는 메모리로부터 데이터 패킷을 검색하기 위한 다수의 I/O(input/output) 인터페이스들을 또한 포함한다. 각각의 I/O 인터페이스는 트래픽 클래스들의 서브세트에 할당된다. NIC는 메모리로부터 검색될 제1 데이터 패킷을 선택하는 스케줄러 회로, 및 제1 데이터 패킷의 트래픽 클래스에 기초하여 I/O 인터페이스들 중 하나를 통해 메모리로부터 제1 데이터 패킷을 검색하고, 제1 데이터 패킷을 패킷 송신 큐들 중 하나에 저장하는 DMA(direct memory access) 엔진 회로를 또한 포함한다. NIC는 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 네트워크를 통해 제1 데이터 패킷을 송신하는 송신 인터페이스를 또한 포함한다.

Description

시간 민감형 네트워킹을 위한 결정론적 패킷 스케줄링 및 DMA{DETERMINISTIC PACKET SCHEDULING AND DMA FOR TIME SENSITIVE NETWORKING}
본 개시내용은 일반적으로 컴퓨터 네트워킹의 분야에, 보다 상세하게는, 배타적이지는 않더라도, 시간 민감형 네트워킹을 위한 결정론적 패킷 스케줄링 및 DMA에 관련된다.
TSN(Time Sensitive Networking)은 네트워크를 통한 데이터의 시간-민감형 송신을 위한 메커니즘들을 정의하는 표준들의 세트를 지칭한다. 그러나, 일부 경우들에서, TSN 능력들을 갖는 NIC(network interface controller)는 많은 시간-민감형 애플리케이션들의 점점 더 엄격한 네트워킹 요건들을 충족시키는 것이 불가능할 수 있다. 예를 들어, 다양한 설계 제한들로 인해, NIC에 의해 수행되는 패킷 스케줄링 및 DMA(direct memory access) 동작들은 패킷 송신 지연들로 이어지는 레이턴시 및 지터를 야기할 수 있다.
본 개시내용은 첨부 도면들과 함께 읽을 때 다음의 상세한 설명으로부터 가장 잘 이해된다. 산업에서의 표준 관행에 따라, 다양한 특징들이 반드시 스케일로 그려지는 것은 아니고, 단지 예시 목적들을 위해서 사용된다는 점이 강조되어야 한다. 스케일이, 명시적으로 또는 암시적으로, 도시되는 경우, 이것은 단지 하나의 예시적인 예를 제공한다. 다른 실시예들에서, 다양한 특징들의 치수들은 논의의 명확성을 위해 임의적으로 증가 또는 감소될 수 있다.
도 1은 네트워크 인터페이스 제어기의 예시적인 실시예를 예시한다.
도 2는 결정론적 패킷 송신들을 위한 트래픽-클래스-기반 스케줄링 및 DMA를 갖는 네트워크 인터페이스 제어기의 예시적인 실시예를 예시한다.
도 3은 다양한 실시예들에 따른 NIC(network interface controller) 상에서 결정론적 패킷 송신들을 위한 트래픽-클래스-기반 스케줄링 및 DMA를 수행하기 위한 흐름도를 예시한다.
도 4는 결정론적 패킷 송신들을 위한 분리된 디스크립터 및 데이터 DMA를 갖는 네트워크 인터페이스 제어기의 예시적인 실시예를 예시한다.
도 5는 다양한 실시예들에 따른 NIC(network interface controller) 상에서 결정론적 패킷 송신들을 위한 분리된 디스크립터 및 데이터 DMA를 수행하기 위한 흐름도를 예시한다.
도 6은 패킷 송신들을 위한 고-정밀 실시간 성능 모니터링을 갖는 네트워크 인터페이스 제어기의 예시적인 실시예를 예시한다.
도 7은 송신 디스크립터 라이트-백 포맷의 예를 예시한다.
도 8a 및 도 8b는 트랜잭션 인코딩 스킴 및 해당 스킴에 기초하는 다양한 인코딩된 트랜잭션들의 예들을 예시한다.
도 9는 패킷을 송신하기 위해 수행되는 동작들의 시퀀스에 대한 패킷 송신 레이턴시의 그래프를 예시한다.
도 10은 다양한 실시예들에 따른 NIC(network interface controller) 상에서 패킷 송신들을 위한 고-정밀 실시간 성능 모니터링을 수행하기 위한 흐름도를 예시한다.
도 11은 에지 컴퓨팅을 위한 에지 클라우드 구성의 개관을 예시한다.
도 12는 엔드포인트들, 에지 클라우드, 및 클라우드 컴퓨팅 환경들 사이의 동작 레이어들을 예시한다.
도 13은 에지 컴퓨팅 시스템에서의 네트워킹 및 서비스들을 위한 예시적인 접근법을 예시한다.
도 14는 다양한 실시예들에 따른 예시적인 컴퓨팅 플랫폼을 예시한다.
다음의 개시내용은, 본 개시내용의 상이한 특징들을 구현하기 위한 많은 상이한 실시예들 또는 예들을 제공한다. 본 개시내용을 단순화하기 위해 컴포넌트들 및 배열들의 특정 예들이 아래에 설명된다. 이러한 것들은, 물론, 단지 예들이고 제한적인 것으로 의도되는 것은 아니다. 추가로, 본 개시내용은 다양한 예들에서 참조 번호들 및/또는 문자들을 반복할 수 있다. 이러한 반복은 단순성 및 명확성의 목적을 위한 것이고 논의되는 다양한 실시예들 및/또는 구성들 사이의 관계를 그 자체가 지시하는 것은 아니다. 상이한 실시예들은 상이한 이점들을 가질 수 있으며, 임의의 실시예에 특정의 이점이 반드시 요구되는 것은 아니다.
서론
총체적으로 TSN("Time Sensitive Networking")이라고 지칭되는, 결정론적 네트워킹을 위한 신생 IEEE 표준들은 매우 높은 시간 정밀도로 네트워크를 통한 시간-민감형 데이터의 송신을 가능하게 한다. 그 결과, 산업 및 자동차 공간에서의 내장형 디바이스들은 시간 민감형 네트워킹의 혜택들을 활용하기 위해 TSN 제어기들을 점점 더 집적하고 있다. 그러나, IT(Information Technology) 및 OT(Operational Technology)의 불가피한 수렴, 작업부하 통합, 및 많은 접속된 디바이스들에 걸친 끊김 없는 통신에 대한 요구는, 더 높은 대역폭, 더 짧은 엔드-투-엔드 레이턴시, 및 경성 실시간 전달 요건들을 포함하는, 네트워크 성능에 대한 점점 더 엄격한 요건들을 부과하고 있다. 그러나, 일부 경우들에서, NIC들(network interface controllers)은 다양한 설계 제한들로 인해 이러한 점점 더 엄격한 요건들을 충족시키는 것이 불가능하다.
예로서, NIC가 짧은 기간 내에 패킷들의 큰 버스트를 결정론적으로 송신하는 능력은, 다른 인자들 중에서도, NIC에 의해 이용되는 스케줄링 알고리즘(들)(예를 들어, IEEE 802.1Qav 및 IEEE 802.1Qbv와 같은 다양한 IEEE TSN 표준들에서 정의되는 바와 같음), DMA(direct memory access)를 통해 메인 메모리로부터 패킷 디스크립터들 및 페이로드들을 페치하는 것과 연관된 레이턴시 및 지터, 버스트 크기(버스트 크기가 클수록, NIC에 의해 초래되는 레이턴시들이 더 높음), 및 업스트림 DMA 판독 요청들이 시퀀싱되는 순서를 포함하는, 다양한 인자들에 의해 제한된다.
예를 들어, NIC는, 각각의 패킷에 대한 디스크립터 및 페이로드 데이터와 같은, 메인 메모리로부터의 패킷 송신들을 위해 요구되는 데이터를 페치하기 위해 DMA(direct memory access) 동작들을 통상적으로 사용한다. 디스크립터는 패킷에 대한 페이로드 데이터가 저장되는 메모리 어드레스로의 포인터를 단지 포함하고, 한편 페이로드 데이터는 패킷의 실제 콘텐츠를 포함한다. 따라서, NIC는 디스크립터를 페치할 때까지 패킷 페이로드가 어디에 저장되는지에 대한 지식을 갖지 않으며, 이는 디스크립터가 패킷 페이로드 전에 페치되어야 함을 의미한다. 그 결과, NIC는 모든 패킷 송신에 대한 적어도 2개의 라운드-트립 DMA 동작들- 디스크립터를 프리페치하기 위한 하나의 DMA 동작 및 패킷 페이로드를 페치하기 위한 다른 DMA 동작 -을 통상적으로 수행한다. 그러나, 이러한 DMA 동작들과 연관된 레이턴시 및 지터는 특정 상황들에서, 특히 패킷들의 큰 버스트들을 송신할 때 패킷 송신 지연들로 이어질 수 있다.
패킷들이 시기적절한 방식(예를 들어, 고정된 우선순위, 가중된 엄격한 우선순위, 및 가중된 라운드 로빈)으로 송신되는 것을 보장하는 것을 돕기 위해 다양한 우선순위-기반 스케줄링 스킴들을 NIC가 활용할 수 있지만, 이러한 스킴들은 패킷 디스크립터들이 메모리로부터 프리페치될 때 패킷 착수 시간들 및 트래픽 클래스 우선순위들의 인식이 부족하기 때문에 항상 효과적인 것은 아니다. 따라서, 이러한 스킴들은 배선 상의 송신을 위한 데이터 패킷들의 스케줄링에서 일부 개선을 제공하지만, 패킷들에 대한 디스크립터들을 프리페치할 때를 완전히 인식하지 못하며, 이는, 특히 시간-민감형 트래픽이 최선 노력 트래픽과 혼합되는 상황들에서, 그것들을 낮은-레이턴시 및 경성 실시간 애플리케이션들에 부적합하게 한다. 예를 들어, 패킷들의 버스트를 송신할 때, 패킷 페이로드 데이터에 대한 높은-우선순위 업스트림 판독 요청들은 차단되거나 또는 낮은-우선순위 요청들 뒤에 갇힐 수 있고, 따라서 거대한 레이턴시 스파이크들 및 지터로 이어진다.
예를 들어, 패킷의 디스크립터가 그 페이로드 전에 페치되어야 하기 때문에, NIC의 DMA 스케줄러는 페이로드 페치들보다 디스크립터 프리페치들에 더 높은 우선순위를 통상적으로 부여한다. 이러한 것은 각각의 패킷 송신 큐로부터의 몇몇 디스크립터 프리페치 요청들의 생성으로 하여금 페이로드 페치 요청들에 앞서게 할 수 있다. 예를 들어, 각각의 큐에 깊이 16개의 엔트리들을 프리페치하는 것을 수행하는 8개의 패킷 송신 큐들을 갖는 NIC는 128개의 디스크립터 판독 요청들을 생성할 수 있고, 이는 실제 패킷 페이로드 DMA 요청들에 대한 헤드 오브 더 라인(head of the line) 차단을 야기할 수 있다. 최악의 시나리오는 제1 페이로드 DMA 요청이 심지어 스케줄링될 수 있기 전에 모든 128개의 디스크립터들에 대해 DMA 완료들을 대기하는 것을 요구한다. 미해결 크레디트들을 증가시키는 것은 평균 대역폭을 개선할 수 있지만, 페이로드 데이터 DMA 요청들이 모든 128개의 디스크립터 요청들 뒤에 여전히 시퀀싱되기 때문에 레이턴시 및 결정론을 돕지 않을 것이다. 또한, 현재의 NIC 아키텍처들에서, 내부 큐 버퍼들(예를 들어, RF 메모리)로의 액세스는 단일 채널이다-따라서, 낮은-우선순위 완료들을 큐 버퍼들에 기입하는 동안, 높은-우선순위 완료들이 대기해야 하고, 이는 송신 레이턴시를 추가로 증가시킨다.
TBS(time-based scheduling), CBS(credit-based shaper), 및 EST(enhancements for scheduled traffic)와 같은, 패킷 송신들에 대한 적시성 및 결정론을 개선하기 위해 NIC 상에 구현될 수 있는 다양한 스케줄링 알고리즘들이 존재한다.
TBS(time-based scheduling) 방법은 패킷에 대한 디스크립터에 패킷 착수 시간을 포함하는 새로운 필드를 추가한다. 이러한 방식으로, 일단 스케줄러가 디스크립터를 페치하고 파싱하면, 이것은 패킷을 언제 송신할지를 알고, 이는 패킷 송신과 연관된 일부 불확실성을 감소시킨다. 그러나, 착수 시간은 디스크립터 자체의 일부이기 때문에, 디스크립터들은 대응하는 패킷 페이로드 페치들이 심지어 스케줄링될 수 있기 전에 프리페치될 필요가 있다. 그 결과, 스케줄러는 모든 큐들 및 트래픽 클래스들에 대한 디스크립터 판독 요청들을 생성하고, 이는 높은-우선순위 패킷 페이로드 요청들이 디스크립터 요청들 뒤에 큐잉되기 때문에 레이턴시 버블을 생성할 수 있다.
IEEE 802.1Qav 표준들에서 정의되는 CBS(credit-based shaper) 방법은 각각의 큐들에 대한 크레디트들의 이용가능성에 기초하여 송신을 위한 패킷들을 스케줄링한다. 다시 한 번, 이러한 방법은 라인 상에서 패킷을 착수할 때를 결정하는 것에 초점을 맞춘다. 그러나, 디스크립터들은 항상 큐에 대한 크레디트들의 이용가능성에 관계없이 프리페치된다-스케줄러는 큐의 테일 포인트가 진행되고 새로운 디스크립터들이 프리페치에 이용가능하게 되자마자 디스크립터 프리페치들을 개시하기 시작할 것이다. 크레디트-기반 스케줄링 방법을 디스크립터들로 확장하는 것에 의해(예를 들어, 디스크립터들을 프리페치하기 전에 이용가능한 크레디트들을 대기하는 것에 의해) 헤드 오브 더 라인 차단 문제점이 잠재적으로 다루어질 수 있지만, (예를 들어, 크레디트들이 이용가능하게 되는 것을 대기한 후, 디스크립터를 페치하고, 다음으로 패킷 페이로드 데이터를 페치하는 것으로 인해) 전체 패킷 송신 레이턴시를 상당히 증가시키므로, 실행가능한 해결책이 아니다.
IEEE 802.1Qbv 표준들에서 정의되는 EST(enhancements for scheduled traffic) 방법은 패킷들을 언제 송신할지를 결정하기 위해 GCL들("gate control lists")을 사용한다. 각각의 게이트 제어 리스트는 해당 큐에서 패킷들을 송신할 목적으로 특정 큐가 언제 개방 또는 폐쇄되는지를 명시한다. 다시 한 번, 이러한 방법은 디스크립터보다는 오히려 패킷 페이로드 데이터와 관련하여 스케줄링에 초점을 맞춘다. 따라서, 이러한 방법은 언제 패킷들을 착수할지에 대한 제어를 개선하지만, 언제 디스크립터들을 프리페치할지는 다루지 않는다. 그 결과, 이러한 방법은 전술된 다른 스케줄링 방법들과 동일한 단점들을 겪는다.
위 방법들은 스케줄링을 상당히 개선하지만, 이들 중 어느 것도 디스크립터 프리페치들에 의해 야기되는 헤드 오브 더 라인 차단 문제점 및 연관된 레이턴시 스파이크들을 다루지 않는다. 위 방법들은 페이로드 데이터에 관하여 패킷 스케줄링 및 착수를 주로 다루며, 이는 라인 또는 배선 상에서 데이터 패킷들을 언제 송신할지를 의미하지만, (예를 들어, 대응하는 패킷들의 트래픽 클래스들에 기초하여) 디스크립터들을 지능적으로 프리페치하기 위한 메커니즘을 갖지 않는다.
또한, 트래픽 클래스에 기초하는 요청들의 분리가 존재하지 않는다-디스크립터들 및 페이로드들 양자 모두에 대한 모든 업스트림 DMA 판독 요청들은 단일 요청 큐에서 순차적으로 순서화된다. 그 결과, 높은-우선순위 요청에 앞서 있는 임의의 낮은-우선순위 요청은 높은-우선순위 요청을 차단하고 거대한 레이턴시 스파이크를 야기할 것이며, 이는 불확정성으로 이어지고 전체 엔드-투-엔드 레이턴시를 증가시킨다.
이러한 방법들의 다른 단점은 별개의 큐들을 갖는 것을 넘어서는 트래픽 클래스 QoS(quality of service) 차별화의 부족이다. 예를 들어, 실시간 트래픽 대 최선-노력 트래픽에 대한 데이터 페치에는 차별화가 존재하지 않는다-양자 모두의 타입들의 패킷들은 그들이 동일한 I/O 버스(예를 들어, AXI/IOSF 버스) 및 가상 채널을 통과하기 때문에 페치하는데 동일한 양의 시간이 걸린다. 또한, 단지 요청 개시의 시간에만 중재가 수행되며, 이는 낮은-우선순위 트래픽 요청들이 대기 중인 큐에서 뒤에 갇힌 직후에 오는 익스프레스 큐들로부터의 높은-우선순위 요청들을 의미한다. 추가로, 크레디트들의 수를 증가시키는 것은, 나중에 스케줄링된 높은-우선순위 요청이 이전에 스케줄링된 낮은-우선순위 디스크립터 요청 뒤에서 여전히 대기할 수 있기 때문에 도움이 되지 않을 것이다.
디스크립터들 및 패킷 데이터를 페치하는 것과 연관된 레이턴시들은, 디스크립터들을 메인 메모리보다는 오히려 NIC 자체에 저장하는 것과 같은, 다양한 다른 기술들을 사용하여 잠재적으로 개선될 수 있다. 해당 접근법은 전체 패킷 송신 레이턴시를 상당히 감소시킬 수 있지만, 기존의 NIC 하드웨어 및 NIC 소프트웨어 드라이버 모델에 실질적인 변경들을 요구한다.
따라서, 네트워크 인터페이스 제어기들은 특정 상황들에서 레이턴시, 지터, 및 송신 지연들에 민감하게 하는 다양한 설계 제한들을 겪는다. 그러나, 산업 제어 루프 애플리케이션들 및 작업부하 통합과 같은, 많은 애플리케이션들 및 사용 사례들에 대해 더 짧은 사이클 시간들이 필수적이다. 따라서, 본 개시내용은 네트워크 인터페이스 제어기에서 패킷 레이턴시 및 지터를 최소화하기 위한 다양한 해결책들과 함께, 패킷 레이턴시 및 지터를 실시간으로 정확하게 모니터링하기 위한 해결책들을 제시하며, 이는 TSN(time sensitive networking) 애플리케이션들에 특히 유익하다.
TSN(Time Sensitive Networking)을 위한 실시간 버스트 데이터의 결정론적, 낮은-레이턴시 스케줄링
위에 설명된 바와 같이, 네트워크 인터페이스 제어기들은 특정 시나리오들에서 패킷 레이턴시, 지터, 및 송신 지연들로 이어지는 다양한 설계 제한들을 겪는다. 도 1은 전술된 설계 제한들을 겪는 NIC(network interface controller)(100)의 예시적인 실시예를 예시한다. 예를 들어, 아래에 추가로 설명되는 바와 같이, 모든 트래픽 클래스들에 대해 단일 메모리 경로가 사용되며, 이는 병목현상으로 이어지고, 높은-우선순위 요청들이 낮은-우선순위 요청들 뒤에서 대기하고 있을 수 있기 때문에, 판독 요청들의 혼잡으로 인한 깔때기 효과는 요청들에 대한 승인 지연 및 결국 완료 지연으로 이어진다.
예시된 실시예에서, NIC(100)는 다수의 패킷 송신 큐들(102), 송신 인터페이스(117)를 통해 네트워크(130)를 통해 패킷들을 스케줄링하고(예를 들어, 스케줄러(105)를 사용하여) 송신하기 위한 MAC 레이어 엔진(104), MAC 레이어 엔진(104)에 공급하기 위해 큐들(102)로부터 패킷들을 선택하기 위한 멀티플렉서(103), 패킷 송신들을 위해 DMA 디스크립터 및 데이터를 검색하기 위한 DMA 엔진(108), DMA 엔진(108)에 의해 검색되는 DMA 디스크립터를 캐시하기 위한 디스크립터 캐시(110), 시스템 I/O를 위한 I/O 인터페이스(112), (예를 들어, 패킷 디스크립터들/데이터를 위한) 메모리 판독 요청들 및 완료들을 위한 판독 요청 큐(115) 및 완료 큐(116), 및 시스템 패브릭 또는 인터커넥트를 통해 컴퓨팅 시스템 또는 SoC(예를 들어, 메인 메모리(120))의 다른 부분들과 통신하기 위한 시스템 패브릭 브리지(114)를 포함한다.
예시된 실시예에서, NIC(100)는, 큐들 0-7(Q0-Q7)로서 지정되는, 8개의 패킷 송신 큐들(102)을 포함하고, 각각의 큐(102)는 애플리케이션에 의해 고유 VLAN(virtual local area network) ID에 매핑될 수 있다. 또한, 이러한 큐들(102)은 각각의 큐(102)에서의 패킷들에 대해 제공되어야 하는 QoS의 레벨에 기초하여 다양한 트래픽 클래스들(예를 들어, TC0-TC7)에 내부적으로 매핑된다. 그러나, 예시된 실시예에서, 모든 트래픽 클래스들은 컴퓨팅 시스템의 다른 부분들(예를 들어, 메인 메모리(120) 및 NIC(100)와 동일한 SoC(system-on-a-chip) 상의 임의의 다른 컴포넌트들)과의 통신 및 I/O를 위해 동일한 가상 채널(VC0)에 매핑된다.
예를 들어, 최고 우선순위를 갖는 익스프레스 트래픽(예를 들어, 엄격한 QoS 요건들을 갖는 시간-민감형 데이터)은 큐 7에 매핑될 수 있고, 큐 7은 실시간 트래픽에 사용되는 트래픽 클래스 7(TC7)에 매핑될 수 있다. 한편, 최저 우선순위 또는 QoS를 갖는 최선 노력 트래픽은 큐 0에 매핑될 수 있고, 큐 0은, 최저 우선순위를 갖는 트래픽을 위해 사용되는, 트래픽 클래스 0(TC0)에 매핑될 수 있다. 그러나, 이러한 트래픽 클래스들 모두는 온-칩 통신 및 I/O를 위해 동일한 가상 채널(VC0)을 공유한다.
이러한 방식으로, 각각의 큐는 고정된 우선순위를 갖는 트래픽 클래스에 정적으로 매핑된다. 또한, 이러한 매핑은 VLAN ID보다는 오히려 각각의 큐의 수치 할당에 기초한다. 예를 들어, 큐의 우선순위는 큐의 수치 할당에 의해 고정되며, 이는 큐 7이 큐 6보다 더 높은 우선순위를 갖고, 큐 6이 큐 5보다 더 높은 우선순위를 갖고,..., 큐 1이 큐 0보다 더 높은 우선순위를 갖는다는 것을 의미한다. 그러나, 이러한 고정-우선순위 스킴은 애플리케이션들을 제한하는데, 그 이유는 큐들에 대한 트래픽의 동적 할당이 가능하지 않기 때문이다-큐들에 트래픽을 동적으로 할당하는 능력은 필드 디바이스들이 추가되거나 또는 내려감(예를 들어, 실패)에 따라 작업부하들이 끊임없이 변경되는 산업 애플리케이션들과 같은 동적 환경들에서의 애플리케이션들에 대해 특히 중요하다.
패킷들이 각각의 큐들(102)로부터 송신되는 순서는, 위에 설명된 바와 같이, TBS(time based scheduling), CBS(credit based shaper)(IEEE 802.1Qav), 또는 EST(enhancements for scheduled traffic)(IEEE 802.1Qbv)와 같은, 스케줄러(105)에 의해 구현되는 스케줄링 알고리즘에 기초하여 결정된다.
스케줄러(105)에 의해 수행되는 스케줄링 알고리즘에 기초하여, MAC(media access control) 레이어(104)는 DMA(direct memory access) 엔진(108)에 대한 요청을 단순히 생성한다. DMA 엔진(108)은 다음으로 패킷 큐들(102) 사이에 그들의 고정된 우선순위에 기초하여 중재하고 선택된 패킷에 대한 DMA 요청을 생성한다. 그러나, 송신될 필요가 있는 패킷 페이로드 데이터로의 어드레스 포인터를 디스크립터가 보유하기 때문에, 패킷 페이로드에 대한 DMA 데이터 요청의 생성 이전에 디스크립터가 페치될 필요가 있다. 따라서, 디스크립터가 이미 프리페치되지 않았으면, DMA 엔진(108)은 패킷 데이터를 페치하기 전에 디스크립터 요청을 생성한다.
그러나, 예시된 실시예에서, I/O 요청들을 서비스하기 위한 단지 하나의 I/O(input/output) 인터페이스(112)만이 존재하며, 이는 모든 패킷 큐들(102)에 걸쳐 디스크립터들 및 패킷 데이터 양자 모두에 대해 단지 하나의 판독 요청 큐(115)만이 존재함을 의미한다. 그 결과, 패킷 페이로드에 대한 DMA 데이터 요청은 앞서 발행된 요청들이 승인될 때까지 판독 요청 큐(115)에서 대기해야 할 수도 있다. 이러한 것은 단일 큐에 대한 우선순위들이 존재하지 않는다면 단일 패킷 큐(102)를 취급할 때 문제가 되지 않는다. 그러나, 다수의 패킷 큐들(102)이 인에이블될 때(예를 들어, TSN-기반 애플리케이션들에 대한 경우), 패킷 데이터 요청들을 차단할 수 있는, 각각의 패킷 큐(102)에 속하는 디스크립터 프리페치 요청들이 존재할 것이다. 특히, 디스크립터 프리페치의 목적은 엔드-투-엔드 레이턴시를 감소시키는 것이지만, 백-투-백 데이터의 버스트가 낮은-우선순위 트래픽과 혼합되는 경성 실시간 트래픽을 포함할 때 발생할 수 있는 부작용이 존재하고, 그 이유는 실시간 요청들이 때때로 낮은-우선순위 요청들 뒤에 갇혀 거대한 레이턴시 스파이크들을 초래할 수 있기 때문이다. 프리페치의 개념은 전체 대역폭을 개선하는데 상당히 도움이 되며, 이러한 스킴은 실시간 트래픽 주위에 일부 보호 대역들이 존재할 때 사용될 수 있지만, 백-투-백 버스트 트래픽에는 별로 적합하지 않다.
따라서, 도 2는 도 1의 NIC(100)와 관련하여 위에 설명된 설계 제한들 및 불확정성들을 제거하는, 결정론적 패킷 송신들을 위한 트래픽-클래스-기반 스케줄링 및 DMA를 갖는 NIC(network interface controller)(200)의 예시적인 실시예를 예시한다.
예시된 실시예에서, NIC(200)는 다수의 패킷 송신 큐들(202), (예를 들어, 스케줄러 회로(205), VLAN 대 TC 매핑 레지스터(206), 및 시간-인식 중재기(207)를 사용하여) 송신 인터페이스(217)를 통해 네트워크(230)를 통해 패킷들을 스케줄링하고 송신하기 위한 MAC 레이어 엔진(204), MAC 레이어 엔진(204)에 공급하기 위해 큐들(202)로부터 패킷들을 선택하기 위한 멀티플렉서(203), 패킷 송신들을 위해 DMA 디스크립터들 및 데이터를 검색하기 위한 DMA 엔진 회로(208), DMA 엔진(208)에 의해 검색되는 DMA 디스크립터들을 캐시하기 위한 디스크립터 캐시(210), DMA 엔진(208)과 패킷 큐들(202) 사이의 익스프레스 및 최선-노력 트래픽을 위한 다수의 데이터 경로들(209a 및 209b), 익스프레스 및 최선-노력 트래픽을 위한 다수의 I/O 인터페이스들(212a 및 212b) 및 대응하는 요청 큐들(215a 및 215b) 및 완료 큐들(216a 및 216b), 및 시스템 패브릭 또는 인터커넥트를 통해 컴퓨팅 시스템 또는 SoC의 다른 부분들(예를 들어, 메인 메모리(220))과 통신하기 위한 시스템 패브릭 브리지(214)를 포함한다.
예시된 실시예에서, NIC(200)는, 큐들 0-7(Q0-Q7)로서 지정되는, 8개의 패킷 송신 큐들(202)을 포함하고, 각각의 큐(202)는 애플리케이션에 의해 고유 VLAN(virtual local area network) ID에 매핑될 수 있다. 또한, 이러한 큐들(202)은 각각의 큐(202)에서의 패킷들에 대해 제공되어야 하는 QoS의 레벨에 기초하여 다양한 트래픽 클래스들(예를 들어, TC0-TC7)에 내부적으로 매핑된다. 추가로, 각각의 트래픽 클래스는, 메인 메모리(220)와 같은, 컴퓨팅 시스템의 다른 컴포넌트들과의 통신 및 I/O를 위해 대응하는 VC(virtual channel)에 매핑된다.
예를 들어, 2개의 가상 채널들(VC0 및 VC1)을 지원하는 SoC에 대해, 최고 우선순위를 갖는 익스프레스 트래픽(예를 들어, 엄격한 QoS 요건들을 갖는 시간-민감형 데이터)은 큐들 5-7(Q5-Q7)에 매핑될 수 있고, 큐들 5-7(Q5-Q7)은 트래픽 클래스들 5-7(TC5-TC7)에 각각 매핑될 수 있고, 트래픽 클래스들 5-7(TC5-TC7) 상의 데이터 흐름은 가상 채널 1(VC1)을 통해 라우팅될 수 있고, 이는 실시간 트래픽을 위해 예약된다. 한편, 최저 우선순위 또는 QoS를 갖는 최선 노력 트래픽은 큐들 0-4(Q0-Q4)에 매핑될 수 있고, 큐들 0-4(Q0-Q4)는 트래픽 클래스들 0-4(TC0-TC4)에 각각 매핑될 수 있고, 트래픽 클래스들 0-4(TC0-TC4) 상의 데이터 흐름은 가상 채널 0(VC0)을 통해 라우팅될 수 있으며, 이는 낮은-우선순위 트래픽에 사용된다.
대안적으로, NIC(200)에 의해 지원되는 트래픽 클래스들의 수와 동일한 수의 가상 채널들을 지원하는 SoC에 대해, 각각의 트래픽 클래스는 고유 가상 채널에 매핑될 수 있다. 예를 들어, 8개의 트래픽 클래스들 및 가상 채널들이 지원된다고 가정하면, 트래픽 클래스들 TC0-TC7는 각각 가상 채널들 VC0-VC7에 매핑될 수 있다.
또한, 예시된 실시예에서, 트래픽-클래스-기반 중재가 패킷 큐들(202) 사이에서 수행되어, 그들의 트래픽 클래스에 기초하여 패킷들에 대한 DMA 디스크립터 및 데이터 요청들을 스케줄링하고, 그 요청들은, 익스프레스 대 최선-노력 트래픽과 같은, QoS의 상이한 레벨들에 대해 별개의 I/O 인터페이스들(212a 및 212b), 판독 요청 큐들(215a 및 215b), 및 완료 큐들(216a 및 216b)을 사용하여 처리된다. 이러한 방식으로, 각각의 패킷 송신 큐에 할당되는 트래픽 클래스에 기초하여 별개의 데이터 경로들을 통해 패킷들에 대한 DMA 디스크립터 및 데이터 요청들이 스케줄링되고 분열된다.
예를 들어, 상이한 레벨들의 우선순위를 갖는 트래픽을 처리하기 위해 다수의 별개의 I/O 인터페이스들(212a 및 212b), 판독 요청 큐들(215a 및 215b), 완료 큐들(216a 및 216b), 및 데이터 경로들(209a 및 209b)이 사용된다. 예시된 실시예에서, 예를 들어, NIC(200) 상의 익스프레스 트래픽 및 최선-노력 트래픽은 DMA 엔진(208)으로부터 다시 패킷 송신 큐들(202)로의 2개의 별개의 I/O 인터페이스들(212a 및 212b), 판독 요청 큐들(215a 및 215b), 완료 큐들(216a 및 216b), 및 데이터 경로들(209a 및 209b)을 사용하여 각각 처리된다.
그러나, 지원되는 I/O 경로들 및 트래픽 클래스들의 수는 상이한 실시예들에서 변할 수 있다. 일부 실시예들에서, 예를 들어, 지원되는 I/O 경로들 및 트래픽 클래스들의 수는, 각각의 트래픽 클래스가 그 자신의 전용 I/O 경로(예를 들어, 2개의 트래픽 클래스에 대해 2개의 별개의 I/O 경로들, 8개의 트래픽 클래스에 대해 8개의 별개의 I/O 경로들 등)를 갖도록, 동등할 수 있다. 대안적으로, 다수의 트래픽 클래스들이 동일한 I/O 경로(예를 들어, 트래픽 클래스들 0-4에 의해 공유되는 최선 노력 트래픽에 대한 제1 I/O 경로, 및 트래픽 클래스들 5-7에 의해 공유되는 익스프레스 트래픽에 대한 제2 I/O 경로)를 공유하도록, 지원되는 I/O 경로들의 수는 지원되는 트래픽 클래스들의 수보다 작을 수 있다.
예시된 실시예에서, MAC 스케줄러(205)는 트래픽 클래스에 기초하여 업스트림 판독 요청을 생성하고, 이러한 트래픽 클래스 정보를 DMA 엔진(208)에 전달한다. DMA 엔진(208)은 다음으로 2개의 별개의 요청 큐들(215a 및 215b)에서의 판독 요청들을 생성하고, 이는 2개의 별개의 I/O 인터페이스들(212a 및 212b)을 통해 처리된다. 예를 들어, "익스프레스(express)" 트래픽이라고 지칭되는, 높은-우선순위 실시간 트래픽에 대한 판독 요청들은, "익스프레스(express)" I/O 인터페이스(212a)를 통해 "익스프레스(express)" 판독 요청 큐(215a)로 갈 것이고, 응답 데이터는 유사하게 익스프레스 I/O 인터페이스(212a)를 통해 "익스프레스(express)" 완료 큐(216a)를 통해 반환될 것이다. 한편, "최선-노력(best-effort)" 트래픽이라고 지칭되는, 낮은-우선순위 트래픽에 대한 판독 요청들은 "최선 노력(best effort)" I/O 인터페이스(212b)를 통해 "최선 노력(best effort)" 판독 요청 큐 (215b)로 갈 것이고, 응답 데이터는 유사하게 익스프레스 I/O 인터페이스(212a)를 통해 "최선 노력(best effort)" 완료 큐(216b)를 통해 반환될 것이다. I/O 인터페이스들(212a 및 212b), 큐들(215a 및 215b 및 216a 및 216b), 및 시스템 브리지(214)는, 다른 예들 중에서도, AXI(Advanced eXtensible Interface) 및/또는 IOSF(Intel On-Chip System Fabric)와 같은, 임의의 적합한 I/O 인터페이스 또는 패브릭 표준들을 사용하여 구현될 수 있다.
또한, 충돌들을 제거하기 위해 트래픽 클래스들에 걸쳐 내부 패킷 송신 큐 버퍼들(202)(예를 들어, RF 메모리)로의 데이터 경로가 또한 분열된다. 예시된 실시예에서, 예를 들어, DMA 엔진(208)으로부터 패킷 송신 큐들(202)로의 별개의 익스프레스 및 최선 노력 데이터 경로들 또는 인터페이스들(209a 및 209b)이 존재한다.
예시된 실시예에서, MAC 레이어(204)는 스케줄러(205)에 의해 구현되는 기존 스케줄링 알고리즘들(예를 들어, TBS/Qav/Qbv) 외에 "트래픽-클래스-인식(traffic-class-aware)" 중재를 구현한다. 이러한 것을 용이하게 하기 위해, 각각의 큐(202)에 대해 VLAN ID를 트래픽 클래스에 매핑하는 레지스터(206)가 MAC 레이어(204)에 존재하고, 이는 VLAN 대 트래픽 클래스 매핑 레지스터(206)라고 지칭된다. 이러한 매핑은 고정된 우선순위 스킴(예를 들어, 도 1의 NIC(100)의 고정된 우선순위 스킴)으로 제한되기보다는 오히려 트래픽 클래스 우선순위들의 동적 할당을 가능하게 한다.
VLAN ID 대 TC 매핑 레지스터(206) 외에도, MAC 레이어(204)는 각각의 큐(202)에 대해 별개의 프리페치 타이머들을 사용하는 시간-인식 중재기(207)를 포함한다. 예를 들어, 각각의 프리페치 타이머의 값은 트래픽 클래스에 의존할 수 있다.
따라서, 트래픽 클래스 및 프리페치 타이머 값과 함께 스케줄링 알고리즘(예를 들어, TBS/Qav/Qbv)에 기초하여, MAC 레이어(204) 및/또는 스케줄러(205)는 이제 디스크립터 프리페치 요청들을 언제 생성할지를 정밀하게 안다. 모든 큐들(202)에 대한 디스크립터 프리페치 요청들을 블라인드 생성하는 대신에, 이제 MAC 레이어(204)는 패킷에 대한 디스크립터를 프리페치할 때 및 패킷에 대한 데이터 DMA 요청을 발행할 때를 결정하기 위한 충분한 정보를 갖는다. 따라서, 중재는 이제 DMA 엔진(208)보다는 오히려 MAC 레이어(204)에서 발생한다-DMA 엔진(208)은 단순히 MAC 레이어(204)에 대한 도관이다.
MAC 레이어(204)가 요청을 스케줄링할 때, 트래픽 클래스 정보는 판독 요청과 함께 DMA 엔진(208)으로 전달되고, DMA 엔진(208)은 단순히 요청을 그 트래픽 클래스에 기초하여 "익스프레스(express)" 또는 "최선 노력(best effort)"으로서 처리한다. 예를 들어, 높은-우선순위(익스프레스) 요청들은 익스프레스 요청 큐(215a)로 지향되는 반면, 낮은-우선순위(최선 노력) 요청들은 최선 노력 요청 큐(215b)로 지향된다. 각각의 요청 큐 (215a 및 215b)는 그 자신의 크레디트들을 가질 수 있다.
SoC 패브릭 측에서, 각각의 요청 큐(215a 및 215b)는 NIC(200)로부터 더 큰 컴퓨팅 시스템 또는 시스템-온-칩(SoC)으로의 브리지(214) 상의 별개의 가상 채널에 매핑된다. 이러한 가상 채널들의 배관(plumbing)은 메모리(220)까지 내내 SoC 측 상에 이미 존재하기 때문에, 낮은-레이턴시 QoS는 엔드-투-엔드로 유지된다. 완료들은 2개의 별개의 가상 채널들- "최선 노력(best effort)" 트래픽을 위한 가상 채널 0(VC0) 및 "익스프레스(express)" 트래픽을 위한 가상 채널 1(VC1) -을 통해 NIC(200)로 반환되고, 유사하게, 그들은 다음으로 NIC(200) 상의 2개의 별개의 완료 버퍼들(216a 및 216b)로 지향된다.
완료가 디스크립터에 대한 것이면, DMA 엔진(208)은 디스크립터를 파싱하고, 동일한 타입의 요청 큐(215a 또는 215b) 상에서 패킷 페이로드에 대한 데이터 DMA 요청을 생성한다. 완료 데이터는 다음으로 익스프레스 대 최선 노력 트래픽을 위해 별개의 데이터 경로들(209a 및 209b) 상에서 로컬 큐 메모리(202)에 라우팅된다. 내부 메모리 경로를 분열하는 것은 패킷 큐 메모리(202)에 기입하는 동안 높은-우선순위 및 낮은-우선순위 데이터의 충돌이 존재하지 않는 것을 보장한다.
스케줄링 알고리즘 및 착수 시간에 기초하여, 패킷 데이터는 로컬 큐 메모리(202)로부터 판독되고, 패킷의 각각의 필드들을 추가하는 것에 의해 패킷화되고, 다음으로 결정론적 방식으로 네트워크(230)를 통해 배선 상에서 송신된다.
이러한 해결책은 많은 이점들을 제공한다. 예를 들어, 이러한 해결책은 엔드-투-엔드 레이턴시를 감소시키고, 더 짧은 사이클 시간 및 더 많은 작업부하 통합을 달성할 수 있으며, 트래픽 클래스 스케줄링마다 정밀한 패킷 송신을 제공하고, 따라서 전체 사이클 지터를 개선한다. 특히, 이러한 해결책은 트래픽-클래스-기반 스케줄링/중재를 갖는 것에 의해 그리고 높은-우선순위 익스프레스 트래픽 디스크립터들 및 데이터 및 낮은-우선순위 최선 노력 트래픽 디스크립터들 및 데이터에 대한 별개의 요청 큐들을 갖는 것에 의해 레이턴시를 상당히 감소시킨다. 트래픽-클래스 기반 중재를 갖는 것 및 높은 및 낮은-우선순위 요청들을 상이한 큐들로 분리하는 것은 결정론을 상당히 개선하고 레이턴시를 감소시킨다. 또한, 이러한 스킴은 (예를 들어, 도 1의 NIC(100)와 관련하여) 위에 설명된 "헤드 오브 더 라인(head of the line)" 차단 문제점을 제거하는데, 그 이유는 높은-우선순위 트래픽 요청들이 더 이상 낮은-우선순위 트래픽 요청들 뒤에서 대기하지 않을 것이기 때문이다. 또한, 위 예들은 2개의 트래픽 클래스들 또는 우선순위들과 관련하여 주로 설명되지만, 이러한 해결책은 임의의 수의 트래픽 클래스들 및 큐들로 스케일링될 수 있다. 예를 들어, IEEE 802.1Q 사양에 따라, 최대 8개의 트래픽 클래스 우선순위들이 존재할 수 있다.
다양한 실시예들에서, NIC(200)의 각각의 컴포넌트들 및 기능성은 다른 실시예들과 관련하여 설명되는 바와 같이, 처리 회로, 메모리, 통신 인터페이스들, 펌웨어, 드라이버들, 애플리케이션들 등을 포함하는 하드웨어 및/또는 소프트웨어 로직의 임의의 적합한 조합을 사용하여 구현될 수 있다.
도 3은 다양한 실시예들에 따른 NIC(network interface controller) 상에서 결정론적 패킷 송신들을 위한 트래픽-클래스-기반 스케줄링 및 DMA를 수행하기 위한 흐름도(300)를 예시한다. 다양한 실시예들에서, 예를 들어, 흐름도(300)는 도 2의 NIC(200) 및/또는 본 개시내용 전반적으로 설명되는 임의의 다른 네트워크 인터페이스 제어기들, 컴퓨팅 디바이스들, 플랫폼들, 시스템들 및 환경들을 사용하여 구현 및/또는 수행될 수 있다.
흐름도는 블록 302에서 시작하고, 여기서 NIC의 스케줄러 회로는 (예를 들어, 스케줄링 알고리즘들, 트래픽 클래스들/트래픽 우선순위들, 프리페치 타이머들 등에 기초하여) 호스트 컴퓨팅 시스템의 메인 메모리로부터 검색할 패킷을 스케줄링하거나 또는 선택한다.
다음으로, 흐름도는 블록 304로 진행하고, 여기서 스케줄러 회로는 선택된 패킷에 대한 판독 요청 및 트래픽 클래스를 DMA 엔진 회로로 전송한다.
다음으로, 흐름도는 블록 306으로 진행하고, 여기서 DMA 엔진 회로는 (예를 들어, 스케줄러 회로에 의해 제공되는 트래픽 클래스에 기초하여) 패킷이 최선 노력을 포함하는지 또는 익스프레스 트래픽을 포함하는지를 결정한다.
패킷이 최선-노력 트래픽을 포함하면, 흐름도는 다음으로 블록 308로 진행하고, 여기서 DMA 엔진 회로는 최선 노력 I/O 인터페이스를 통해 패킷에 대한 디스크립터 요청, 및 (예를 들어, 일단 디스크립터가 반환되면) 후속하여 데이터 DMA 요청을 전송한다.
그러나, 패킷이 익스프레스 트래픽을 포함하면, 흐름도는 다음으로 블록 310으로 진행하고, 여기서 DMA 엔진 회로는 익스프레스 I/O 인터페이스를 통해 패킷에 대한 디스크립터 요청, 및 (예를 들어, 일단 디스크립터가 반환되면) 후속하여 데이터 DMA 요청을 전송한다.
다음으로, 흐름도는 블록 312로 진행하고, 여기서 DMA 엔진 회로가 패킷 페이로드 데이터와 함께 데이터 완료를 수신하고, 다음으로 블록 314로 진행하여, 여기서 DMA 엔진 회로가 패킷 데이터를 그 패킷에 대한 NIC의 적절한 송신 큐에 저장한다.
다음으로, 흐름도는 블록 316으로 진행하고, 여기서 NIC의 MAC 레이어 및/또는 스케줄러가 패킷에 대한 명시된 착수 시간에 송신 인터페이스를 통한 송신을 위해 패킷을 스케줄링한다.
이러한 포인트에서, 흐름도가 완료될 수 있다. 그러나, 일부 실시예들에서, 흐름도가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 흐름도는 데이터 패킷들을 스케줄링하고 송신하는 것을 계속하기 위해 블록 302에서 재시작할 수 있다.
시간 민감형 네트워킹을 위한 결정론적, 낮은-레이턴시 디스크립터 디커플링된 DMA
NIC가 패킷을 짧은 양의 시간 내에 결정론적으로 송신하는 능력은 (예를 들어, IEEE 802.1Qav 및 IEEE 802.1Qbv와 같은, 다양한 IEEE TSN 표준들에서 정의되는 바와 같이) 그 스케줄링 알고리즘들 뿐만 아니라, 메인 메모리로부터 데이터를 페치하는데 요구되는 시간의 양과 연관된 레이턴시 및 지터에도 의존한다.
예를 들어, 위에 설명된 바와 같이, NIC는, 각각의 패킷에 대한 디스크립터 및 페이로드 데이터와 같은, 메인 메모리로부터의 패킷 송신들을 위해 요구되는 데이터를 페치하기 위해 DMA(direct memory access) 동작들을 통상적으로 사용한다. 디스크립터는 패킷에 대한 페이로드 데이터가 저장되는 메모리 어드레스로의 포인터를 단지 포함하고, 한편 페이로드 데이터는 패킷의 실제 콘텐츠를 포함한다. 따라서, NIC는 디스크립터를 페치할 때까지 패킷 페이로드가 어디에 저장되는지에 대한 지식을 갖지 않으며, 이는 디스크립터가 패킷 페이로드 전에 페치되어야 함을 의미한다. 그 결과, NIC는 모든 패킷 송신에 대한 적어도 2개의 라운드-트립 DMA 동작들- 디스크립터를 프리페치하기 위한 하나의 DMA 동작 및 패킷 페이로드를 페치하기 위한 다른 DMA 동작 -을 통상적으로 수행한다. 그러나, 일부 경우들에서, 이러한 DMA 동작들과 연관된 레이턴시 및 지터는 패킷 송신 지연들로 이어질 수 있다.
특히, NIC는 (예를 들어, 도 1의 NIC(100)와 관련하여 도시되고 위에 설명된 바와 같이) 디스크립터들 및 패킷 페이로드들 양자 모두를 페치하기 위해 단일 DMA 엔진을 통상적으로 이용한다. 예를 들어, 일단 패킷 송신 큐의 테일 포인터가 NIC 소프트웨어 드라이버에 의해 전진되면, MAC 레이어는 디스크립터를 페치하기 위해 NIC 상의 유일한 DMA 엔진에 대한 요청을 개시한다. 그러나, 시간-민감형 애플리케이션들에 대해, NIC는 종종 하나보다 많은 패킷 큐: 경성 실시간 트래픽을 위한 적어도 하나의 큐 및 최선-노력 트래픽을 위한 하나 이상의 큐를 요구한다. 일부 실시예들에서, 예를 들어, NIC는 최대 8개의 송신 큐들 및 8개의 수신 큐들을 지원할 수 있다. 그 결과, NIC는 디스크립터 요청들 및 페이로드 데이터 요청들 양자 모두의 혼합을 포함하는 다수의 업스트림 판독 요청들을 발행해야 한다. 예를 들어, MAC 레이어는 일부 큐들에 대한 디스크립터들 및 다른 큐들에 대한 페이로드 데이터를 페치하면서, 또한 특정 큐들에 대한 업스트림 기입들을 수행할 수 있다. 또한, 모든 이러한 동작들은 현재의 NIC 아키텍처에서 단일 DMA 엔진에 의해 처리된다. 그러나, 시간-민감형 트랜잭션들과 비-시간-임계형 트랜잭션들의 혼합을 위한 단일 DMA 엔진의 사용은 큰 레이턴시 스파이크들로 이어질 것이며, 이는 시간-민감형 애플리케이션들(예를 들어, 실시간 산업 애플리케이션들)에 매우 문제가 될 수 있다. 예를 들어, 결정론적/더 짧은 사이클 시간들은 산업 제어 루프 애플리케이션들 및 작업부하 통합에 필수적이다. 따라서, 이러한 애플리케이션들에 대해 이러한 레이턴시 스파이크들을 제거하는 것이 중요하다.
예를 들어, 패킷 송신 레이턴시의 대부분은 디스크립터 및 패킷 데이터 DMA 동작들에 의해 야기된다. 모든 패킷 송신은 NIC의 MAC 레이어와 메인 메모리 사이에 2개의 라운드-트립 지연들(디스크립터에 대한 하나의 라운드 트립 및 패킷 페이로드에 대한 다른 라운드 트립)을 요구한다. 현재의 NIC 아키텍처에서, 디스크립터 프리페치는 대응하는 패킷 송신보다 훨씬 미리 수행되며, 이는 라인 처리량 및 대역폭을 크게 개선한다. 그러나, 다수의 시간-민감형 큐들이 인에이블될 때, 하나의 큐로부터의 디스크립터 프리페치 요청들은 종종 다른 큐로부터의 패킷 데이터 요청들에 앞서 스케줄링된다. 그 결과, 시간-민감형 패킷 데이터 요청들은 이전에 스케줄링된 디스크립터 요청들이 승인되기를 대기하여야 하고, 그러한 패킷 데이터 요청들은 그들이 결국 승인될 때까지 요청 큐에서 단순히 대기할 것이고, 이는 추가적인 패킷 레이턴시 및 지터로 이어진다.
예를 들어, 도 1을 다시 참조하면, NIC(100)는 큐들 0-7로서 지정되는 다수의 패킷 송신 큐들(102)을 포함하고, 각각의 큐(102)는 애플리케이션에 의해 고유 VLAN(virtual local area network) ID에 매핑될 수 있다. 또한, 이러한 큐들(102)은 각각의 큐(102)에서의 패킷들에 대해 제공되어야 하는 QoS의 레벨에 기초하여 다양한 트래픽 클래스들(예를 들어, TC0-TC7)에 내부적으로 매핑된다. 예를 들어, 최고 우선순위를 갖는 익스프레스 트래픽(예를 들어, 엄격한 QoS 요건들을 갖는 시간-민감형 데이터)은 큐 7에 매핑될 수 있고, 큐 7은 실시간 트래픽에 사용되는 트래픽 클래스 7(TC7)에 매핑될 수 있다. 한편, 최저 우선순위 또는 QoS를 갖는 최선 노력 트래픽은 큐 0에 매핑될 수 있고, 큐 0은, 최저 우선순위를 갖는 트래픽을 위해 사용되는, 트래픽 클래스 0(TC0)에 매핑될 수 있다. 또한, 예시된 실시예에서, 트래픽 클래스들 모두는 온-칩 통신 및 I/O를 위해 동일한 가상 채널(VC0)을 공유한다.
이러한 방식으로, 각각의 큐(102)는 VLAN ID보다는 오히려 각각의 큐의 수치 할당에 기초하는, 고정된 우선순위를 갖는 트래픽 클래스에 정적으로 매핑된다(예를 들어, 큐 7은 큐 6보다 더 높은 우선순위를 갖고, 큐 6은 큐 5보다 더 높은 우선순위를 갖고,..., 큐 1은 큐 0보다 더 높은 우선순위를 갖는다).
스케줄러(105)에 의해 구현되는 스케줄링 알고리즘(예를 들어, TBS, CBS(IEEE 802.1Qav), EST(IEEE 802.1Qbv))에 기초하여, MAC(media access control) 레이어(104)는 단순히 DMA(direct memory access) 엔진(108)에 대한 요청을 생성한다. DMA 엔진(108)은 다음으로 큐들(102) 사이에 그들의 고정된 우선순위에 기초하여 중재하고 선택된 패킷에 대한 DMA 요청을 생성한다. 그러나, 송신될 필요가 있는 패킷 페이로드 데이터로의 어드레스 포인터를 디스크립터가 보유하기 때문에, 패킷 페이로드에 대한 DMA 데이터 요청의 생성 이전에 디스크립터가 페치될 필요가 있다. 따라서, 디스크립터가 이미 프리페치되지 않았으면, DMA 엔진(108)은 패킷 데이터를 페치하기 전에 디스크립터 요청을 생성한다.
그러나, 예시된 실시예에서, I/O 요청들을 서비스하기 위한 단지 하나의 I/O(input/output) 인터페이스(112)만이 존재하며, 이는 모든 패킷 큐들(102)에 걸쳐 디스크립터들 및 패킷 데이터 양자 모두에 대해 단지 하나의 판독 요청 큐(115)만이 존재함을 의미한다. 그 결과, 패킷 페이로드에 대한 DMA 데이터 요청은 앞서 발행된 요청들이 승인될 때까지 판독 요청 큐(115)에서 대기해야 할 수도 있다. 이러한 것은 단일 큐에 대한 우선순위들이 존재하지 않는다면 단일 패킷 큐(102)를 취급할 때 문제가 되지 않는다. 그러나, 다수의 패킷 큐들(102)이 인에이블될 때(예를 들어, TSN-기반 애플리케이션들에 대한 경우), 패킷 데이터 요청들을 차단할 수 있는, 몇몇 패킷 큐들(102)로부터의 디스크립터 프리페치 요청들이 존재할 것이다.
따라서, 디스크립터 프리페치의 목적은 대역폭 이용을 증가시키고 엔드-투-엔드 레이턴시를 감소시키는 것이지만, 디스크립터 프리페치가 다수의 시간-임계형 큐들과 함께 사용될 때 다양한 부작용들이 발생할 수 있기 때문에, 현재의 접근법은 단일 큐에 대해서만 단지 효과적이다. 예를 들어, 디스크립터들과 데이터 패킷 페이로드 요청들의 혼합으로 인해, 때때로 시간-민감형 데이터 페이로드 요청들은 낮은-우선순위(예를 들어, 최선-노력) 데이터 패킷 및 디스크립터 요청들 뒤에 갇힐 수 있고, 이는 패킷 송신 레이턴시들에 심각하게 영향을 줄 수 있다.
이러한 부작용은, 도 2의 NIC(200)의 구현과 관련하여 위에 설명된 바와 같이, 별개의 I/O 인터페이스들 및 요청 큐들을 갖는 것에 의해 익스프레스 트래픽으로부터 최선-노력 트래픽을 분리하는 것에 의해 감소될 수 있다. 이러한 채널 분리 기술은 최선-노력 트래픽으로부터의 간섭을 크게 감소시킬 수 있지만, 각각의 익스프레스 트래픽 요청들 사이에 의도되지 않은 간섭이 여전히 존재할 수 있다. 예를 들어, 하나의 익스프레스 큐로부터의 디스크립터 요청은 다른 익스프레스 큐로부터의 패킷 데이터 요청에 잘 앞서 있을 수 있고, 이는 큰 레이턴시 스파이크들을 야기할 수 있다.
따라서, (예를 들어, 도 2의 NIC(200)와 관련하여 위에 설명된 바와 같은) 다수의 트래픽 클래스 및 가상 채널의 사용은 이러한 레이턴시 스파이크들을 어느 정도 감소시킬 수 있지만, 이들을 제거하지는 않는다. 예를 들어, 다수의 큐가 시간-민감형 큐들로서 할당될 수 있고, 그러한 시간-민감형 큐들 사이의 트랜잭션들은 동일한 트래픽 클래스 및 가상 채널 상에서 진행할 수 있다. 시간-민감형 큐들로부터 최선-노력 큐들을 분리하고, 별개의 트래픽 클래스 및 가상 채널 상에서 최선-노력 트랜잭션들을 라우팅하는 것(예를 들어, TC0/VC0)은 레이턴시 스파이크들을 크게 감소시킬 수 있다. 그러나, 다수의 시간-민감형 큐들이 동일한 트래픽 클래스 및/또는 가상 채널에 할당될 수 있기 때문에, 레이턴시 스파이크의 위험이 여전히 존재하고, 그 이유는 하나의 시간-민감형 큐에 대한 디스크립터 프리페치가 다른 시간-민감형 큐에 대한 패킷 페이로드 페치와 혼합될 수 있기 때문이다. 단일의 DMA 엔진이 디스크립터들 및 패킷 데이터 양자 모두에 대해 사용되기 때문에, 이러한 트랜잭션들이 동일한 요청 큐에 차례로 들어간다. 그 결과, 패킷 페이로드 트랜잭션은 디스크립터 프리페치가 승인될 때까지 대기해야 하고, 따라서 추가적인 레이턴시를 초래한다. 그 외에, 디스크립터 프리페치가 통상적으로 버스트 모드에서 수행되기 때문에, 이러한 시간 주위에 개시되는 임의의 패킷 페이로드 트랜잭션은 디스크립터 프리페치 트랜잭션들의 전체 버스트가 승인되기를 대기하여야 할 것이다. 이러한 시나리오에서 초래되는 추가적인 레이턴시는 통상적으로 송신 큐들에 대한 프리페치 깊이에 의존한다-프리페치 깊이가 클수록, 추가적인 레이턴시가 더 높아진다.
따라서, 최선 노력 및 익스프레스 트래픽을 위해 별개의 요청 큐들을 갖는 것은 레이턴시를 상당히 개선할 것이지만, 그것은 여전히 큰 레이턴시 스파이크들에 민감하다. 예를 들어, 다수의 익스프레스 큐들이 인에이블될 때, 모든 익스프레스 큐들은 동일한 트래픽 클래스 및 채널을 공유할 것이다. 따라서, 심지어 최선-노력 트래픽 요청들이 익스프레스 트래픽 요청들로부터 분리되더라도, 다양한 익스프레스 패킷 큐들에서의 디스크립터들 및 패킷 데이터는 여전히 동일한 요청 큐를 공유해야 하며, 이는 결국 의도되지 않은 레이턴시 스파이크들로 이어진다.
디스크립터-기반 DMA는 레이턴시를 감소시키기 위해 많은 Ethernet NIC들 및 다른 I/O 프로토콜들(예를 들어, USB)에 의해 활용되는 표준 아키텍처이다. 또한, 본 개시내용 전반적으로 설명되는 바와 같이, TBS(time-based scheduling), CBS(credit-based shaper)(IEEE 802.1Qav), 및 EST(enhancements for scheduled traffic)(IEEE 802.1Qbv)와 같은, 레이턴시를 감소시키기 위해 NIC들에 의해 사용되는 다양한 스케줄링 알고리즘들이 또한 존재한다. 이러한 DMA 및 스케줄링 기술들은 상당한 레이턴시 개선들을 제공하지만, 그들 중 어느 것도 디스크립터 프리페치 및 디스크립터 프리페치 요청들과 패킷 데이터 요청들의 혼합과 같은 특정 DMA 동작들로부터 초래되는 레이턴시들을 다루지 않는다.
DMA 레이턴시를 감소시키기 위한 다른 잠재적인 접근법은 각각의 패킷 큐에 대해 고유 트래픽 클래스 및 가상 채널을 할당하는 것이다. 이러한 접근법은 본 개시내용 전반적으로 설명되는 실시예들에 의해 지원되지만, 이러한 접근법의 주요 단점은 증가된 면적 비용 및 다이 크기이다. 예를 들어, 8개의 송신(Tx) 큐들 및 8개의 수신(Rx) 큐들을 갖는 NIC에 대해, 각각의 큐에 대한 고유 트래픽 클래스들 및 가상 채널들을 갖는 것은 면적 및 다이 크기를 상당히 증가시킬 것이다. 또한, 많은 현재의 SoC들이 단지 2개의 가상 채널들(VC0 및 VC1)만을 지원하기 때문에, SoC는 고유한 큐별 할당들을 지원하기에 충분한 가상 채널들을 갖지 않을 수 있다. 추가로, 단지 IEEE 802.1Q 표준들에서 정의되는 8개의 트래픽 클래스들만이 존재하므로, 이러한 접근법은 많은 수의 큐들을 요구하는 애플리케이션들에 대해서는 확장가능하지 않다.
DMA 레이턴시를 감소시키기 위한 다른 잠재적인 접근법은 단순히 디스크립터 프리페치를 완전히 턴 오프 또는 디스에이블하는 것이다. 이러한 것은 패킷이 송신을 위해 스케줄링되는 시간에 MAC가 패킷에 대한 디스크립터를 페치하도록 강제할 것이고, 이는 패킷의 디스크립터 및 데이터 페이로드에 대한 DMA 동작들이 순차적일 것임을 의미하며, 따라서 몇몇 디스크립터 요청들이 데이터 페이로드 요청에 앞서게 될 가능성을 제거한다. 그러나, 이러한 접근법의 주요 단점은 NIC가 큰 패킷간 갭들로 인해 매우 낮은 대역폭 이용을 가질 것이라는 점이다. 예를 들어, SoC와 연관된 레이턴시들로 인해 큰 패킷간 갭들이 존재할 것이고, 따라서 풀 라인 레이트가 달성되는 것을 방지한다. 이러한 것은 풀 라인 레이트가 필요하고 비-실시간 애플리케이션들에 대한 많은 양의 최선-노력 트래픽이 있을 때의 애플리케이션들에 대한 주요 제한이다.
DMA 레이턴시를 감소시키기 위한 다른 잠재적인 접근법은 메인 메모리(예를 들어, DDR 메모리)보다는 오히려 NIC 자체에 디스크립터들을 저장하는 것이며, 이는 전체 패킷 송신 레이턴시를 상당히 감소시킬 수 있지만, 기존의 NIC 하드웨어 및 NIC 소프트웨어 드라이버 모델에 대한 실질적인 변경들을 또한 요구한다.
따라서, 본 개시내용은 디스크립터 프리페치를 패킷 데이터 페치로부터 분리하고 분리하는 것에 의해 네트워크 인터페이스 제어기에서 DMA 레이턴시를 감소시키기 위한 신규한 해결책을 제시한다. 디스크립터들은 상이한 트래픽 클래스/채널 상에서 패킷 페이로드들로부터 독립적으로 프리페치되고 디스크립터 캐시에 저장된다.
제안된 해결책에서, 예를 들어, 디스크립터 DMA는 패킷 데이터 DMA로부터 완전히 분리되고, 디스크립터 DMA 트랜잭션들은 최선 노력 채널 상에서 처리된다. 예를 들어, 디스크립터 및 패킷 데이터에 사용되는 DMA 엔진은 다수의 별개의 DMA 엔진으로 분열될 수 있고, 그 각각은 디스크립터 DMA 또는 패킷 데이터 DMA를 처리한다. 각각의 DMA 엔진들은, 디스크립터 및 패킷 데이터 DMA를, 각각, 수행하는 2개의 독립적인 또는 구별되는 DMA 엔진들, 또는 디스크립터들 및 패킷 데이터 DMA에 대한 별개의 그리고 독립적인 DMA 스레드들을 논리적으로 지원하는 단일의 DMA 엔진과 같이, 물리적으로 또는 논리적으로 별개일 수 있다. 기본 구현에 관계없이, 키는 DMA 엔진(들)이 (예를 들어, 별개의 트랜잭션 ID들을 사용하여) 독립적으로 그리고 병렬로 처리될 수 있도록 디스크립터 요청들을 패킷 데이터 요청들과 구별할 수 있게 하기 위한 것이다.
예를 들어, DMA 엔진들 중 하나는 디스크립터 프리페치를 배타적으로 처리하는데 전용될 수 있다. 디스크립터들이 패킷 데이터 페이로드들보다 훨씬 미리 프리페치되기 때문에, 이러한 트랜잭션들은 큰 레이턴시들을 허용할 수 있다. 따라서, 동일한 낮은-우선순위 트래픽 클래스 및 가상 채널 상에 최선 노력 및 익스프레스 큐들 양자 모두에 속하는 디스크립터 프리페치들을 조합하는 것은 허용가능하다. 그러나, 패킷 데이터 페치는 매우 시간 임계형이기 때문에, 별개의 DMA 엔진은 이러한 트랜잭션들을 처리하고, 트래픽 클래스 및 시간 우선순위에 기초하여 트랜잭션들을 라우팅할 것이다. 이러한 방식으로, 디스크립터 프리페치가 패킷 데이터 트랜잭션들로부터 완전히 분리되기 때문에, 디스크립터들을 시간-민감형 패킷 페이로드 데이터 트랜잭션들과 혼합하는 것으로부터의 추가적인 레이턴시가 제거되고, 따라서 짧은 사이클 시간에 지터를 덜 갖는 더 결정론적 패킷 송신들을 제공한다.
제안된 해결책은 디스크립터와 패킷 데이터 요청들 및 완료들의 혼합을 회피하는 것에 의해 레이턴시를 상당히 감소시킨다. 예를 들어, 디스크립터들은 시간-임계형 데이터 페이로드들에 비해 훨씬 미리 프리페치되고 매우 시간 임계형이지 않기 때문에, 최선 노력 및 익스프레스 큐들 양자 모두로부터의 디스크립터들은 단일의 별개의 트래픽 클래스들 및 가상 채널들 상에서 안전하게 라우팅되고, 이는 헤드 오브 더 라인 차단 문제점 및 연관된 레이턴시들 및 불확정성을 제거한다. 그 결과, 제안된 해결책은 엔드-투-엔드 레이턴시를 감소시키고 더 짧은 사이클 시간들 및 더 큰 작업부하 통합을 달성한다. 제안된 해결책은 또한 트래픽-클래스-당 스케줄링을 사용하여 정밀한 패킷 송신들을 제공하며, 이는 전체 사이클 지터를 개선한다.
도 4는, 위에 설명된 바와 같이, 결정론적 패킷 송신들을 위한 분리된 디스크립터 및 데이터 DMA를 활용하는 NIC(network interface controller)(400)의 예시적인 실시예를 예시한다.
예시된 실시예에서, NIC(400)는 다수의 패킷 송신 큐들(402), 송신 인터페이스(417)를 통해(예를 들어, 스케줄러(405), VLAN 대 TC 매핑 레지스터(406), 및 시간-인식 중재기(407)를 사용하여) 네트워크(430)를 통해 패킷들을 스케줄링하고 송신하기 위한 MAC 레이어 엔진(404), MAC 레이어 엔진(404)에 공급하기 위해 큐들(402)로부터 패킷들을 선택하기 위한 멀티플렉서(403), 패킷 송신들을 위해 DMA 디스크립터들 및 데이터를 검색하기 위한 DMA 엔진(들)(408a 및 408b), 디스크립터 DMA 엔진(408b)에 의해 검색되는 DMA 디스크립터들을 캐시하기 위한 디스크립터 캐시(410), DMA 엔진(들)(408)과 패킷 큐들(402) 사이의 익스프레스 및 최선-노력 트래픽을 위한 다수의 데이터 경로들(409a 및 409b), 트래픽 라우터(412), 및 시스템 패브릭 또는 인터커넥트를 통해 컴퓨팅 시스템 또는 SoC의 다른 부분들(예를 들어, 메인 메모리(420))과 통신하기 위한 시스템 패브릭 브리지(414)를 포함한다. 다양한 실시예들에서, NIC(400)의 컴포넌트들의 일부 또는 전부는 도 2의 NIC(200)로부터의 유사한 참조 번호들을 갖는 것들과 유사할 수 있다.
예시된 실시예에서, 디스크립터 DMA는 패킷 데이터 DMA로부터 완전히 분리되고, 디스크립터 DMA 트랜잭션들은 낮은-우선순위 또는 최선-노력 채널 상에서 처리된다. 예를 들어, 디스크립터 및 패킷 데이터에 사용되는 DMA 엔진(들)(408)은 다수의 DMA 엔진들(408a 및 408b)로 분열되고, 그 각각은 디스크립터 DMA 또는 패킷 데이터 DMA를 처리한다. 각각의 DMA 엔진들(408a 및 408b)은, 디스크립터 및 패킷 데이터 DMA를, 각각, 수행하는 2개의 독립적인 또는 구별되는 DMA 엔진들(408a 및 408b), 또는 디스크립터들 및 패킷 데이터 DMA에 대한 별개의 그리고 독립적인 DMA 스레드들(408a 및 408b)을 논리적으로 지원하는 단일의 DMA 엔진(408)과 같이, 물리적으로 또는 논리적으로 별개일 수 있다. 기본 구현에 관계없이, 키는 DMA 엔진(들)(408)이 (예를 들어, 별개의 트랜잭션 ID들을 사용하여) 독립적으로 그리고 병렬로 처리될 수 있도록 디스크립터 요청들을 패킷 데이터 요청들과 구별할 수 있게 하기 위한 것이다.
예시된 실시예에서, 예를 들어, 데이터 DMA 엔진(408a)은 패킷 데이터 DMA 요청을 처리하기 위해 사용되고, 디스크립터 DMA 엔진(408b)은 디스크립터 DMA 요청을 처리하기 위해 사용된다.
또한, 디스크립터들이 프리페치되기 때문에, 디스크립터 DMA 요청들은 패킷 데이터 DMA 요청들보다 훨씬 덜 시간 민감형이다. 따라서, 예시된 실시예에서, 모든 디스크립터 DMA 요청들은 낮은-우선순위 트래픽 클래스에 정적으로 매핑되고, 그들의 실제 트래픽 클래스 또는 우선순위에 관계없이, 항상 최선-노력 가상 채널(예를 들어, VC0)에 간다.
데이터 DMA 엔진(408a)은 패킷 페이로드에 대한 DMA 데이터 전송에 배타적으로 전용된다. 또한, 데이터 DMA 엔진(408a)은 도 2의 NIC(200)에 관하여 위에 설명된 기능성과 유사하게 트래픽 클래스 및 트래픽-클래스-기반 중재 능력에 대한 지식을 갖는다. 따라서, 데이터 DMA 요청들은 그들의 트래픽 클래스 또는 우선순위에 기초하여 처리된다.
예로서, NIC(400)가 8개의 패킷 송신 큐들(402)(Q0-Q7) 및 8개의 트래픽 클래스(TC0-TC7)를 지원하지만, NIC(400)는 단지 2개의 가상 채널(VC0 및 VC1)만을 지원하는 컴퓨팅 시스템 또는 SoC 상에서 구현된다고 가정한다. 일부 실시예들에서, 최저 우선순위 또는 QoS를 갖는 최선-노력 트래픽은 큐들 0-4(Q0-Q4)에 매핑될 수 있고, 큐들 0-4(Q0-Q4)는 트래픽 클래스들 0-4(TC0-TC4)에 각각 매핑될 수 있고, 트래픽 클래스들 0-4(TC0-TC4)에 대한 데이터 흐름은 컴퓨팅 시스템의 가상 채널 0(VC0)을 통해 라우팅될 수 있고, 이는 낮은-우선순위 트래픽에 사용될 수 있다. 한편, 최고 우선순위를 갖는 익스프레스 트래픽(예를 들어, 엄격한 QoS 요건들을 갖는 시간-민감형 데이터)은 큐들 5-7(Q5-Q7)에 매핑될 수 있고, 큐들 5-7(Q5-Q7)은 트래픽 클래스들 5-7(TC5-TC7)에 각각 매핑될 수 있고, 트래픽 클래스들 5-7(TC5-TC7)에 대한 데이터 흐름은 실시간 트래픽을 위해 예약될 수 있는 컴퓨팅 시스템의 가상 채널 1(VC1)을 통해 라우팅될 수 있다.
이러한 예에서, 컴퓨팅 시스템 또는 SoC는 단지 2개의 가상 채널(VC0 및 VC1)만을 지원하기 때문에, 데이터 DMA 엔진(408a)은 트래픽 클래스 TC0-TC7를, 각각, 최선-노력 및 익스프레스 트래픽 큐에 매핑하는것에 의해 데이터 DMA 트래픽을 2개의 별개의 판독 요청 큐에 푸시할 것이다. 예를 들어, 트래픽 클래스들 TC0-TC4는 최선-노력 트래픽을 포함하기 때문에, 이들은 최선-노력 요청 큐에 매핑되고, 이는 궁극적으로 낮은-우선순위 트래픽(예를 들어, VC0)에 사용되는 가상 채널을 통해 라우팅된다. 또한, 트래픽 클래스들 TC5-TC7이 익스프레스 트래픽을 포함하기 때문에, 이들은 익스프레스 요청 큐에 매핑되고, 이는 궁극적으로 높은-우선순위 트래픽에 사용되는 가상 채널(예를 들어, VC1)을 통해 라우팅된다.
그러나, 디스크립터 DMA 엔진(408b)은 모든 디스크립터 요청들을 그들의 실제 트래픽 클래스 또는 우선순위에 관계없이 최선-노력 트래픽으로서 취급한다. 예를 들어, 모든 디스크립터 요청들은 그들의 실제 트래픽 클래스 또는 우선순위에 관계없이 단일 판독 요청 큐에 푸시되고, 이는 최선-노력 트래픽으로서 처리되고 궁극적으로 낮은-우선순위 트래픽에 사용되는 가상 채널(예를 들어, VC0)을 통해 라우팅된다.
DMA 엔진들(408a,b)의 다양한 요청 큐들로부터의 트래픽은 다음으로 트래픽 라우터(412)에 공급되고, 이는 트래픽을 적절한 가상 채널들(VC0 및 VC1)에 대한 대응하는 업스트림 큐들에 매핑하거나 또는 라우팅한다.
예를 들어, 트래픽 라우터(412)는 모든 트래픽 클래스들(TC0-TC7)에 대한 디스크립터 요청들을 포함하는 단일 판독 요청 큐를 통해 디스크립터 DMA 엔진(408b)으로부터 트래픽을 수신한다. 그러나, 모든 디스크립터 요청들이 그들의 실제 트래픽 클래스 또는 우선순위에 관계없이 최선-노력 트래픽으로서 취급되기 때문에, 모든 트래픽 클래스들(TC0-TC7)에 대한 디스크립터 트래픽은 낮은-우선순위 트래픽에 사용되는 가상 채널 0(VC0)에 대한 요청 큐에 라우팅된다.
또한, 트래픽 라우터(412)는 (예를 들어, 최선-노력 트래픽 및 익스프레스 트래픽 각각에 대해) 2개의 별개의 판독 요청 큐를 통해 데이터 DMA 엔진(408a)으로부터 트래픽을 수신한다. 그 요청 큐들 중 하나로부터의 트래픽은 트래픽 클래스들 0-4에 대한 데이터 DMA 요청들(TC0-TC4)을 포함하는 반면, 다른 요청 큐로부터의 트래픽은 트래픽 클래스들 5-7에 대한 데이터 DMA 요청들(TC5-TC7)을 포함한다. 트래픽 클래스들 0-4에 대한 데이터 DMA 요청들(TC0-TC4)이 최선-노력 트래픽으로서 취급되기 때문에, 그 트래픽은 낮은-우선순위 트래픽에 대해 사용되는 가상 채널 0에 대한 요청 큐(VC0)로 라우팅된다. 또한, 트래픽 클래스들 5-7에 대한 데이터 DMA 요청들(TC5-TC7)이 익스프레스 트래픽으로서 취급되기 때문에, 그 트래픽은 높은-우선순위 트래픽에 대해 사용되는 가상 채널 1에 대한 요청 큐(VC1)로 라우팅된다.
이러한 방식으로, 트래픽 라우터(412)는 최선-노력 트래픽 클래스들(예를 들어, TC0-TC4)에 대한 데이터 페이로드들 및 모든 트래픽 클래스들(예를 들어, TC0-TC7)에 대한 디스크립터들을 동일한 낮은-우선순위 가상 채널(예를 들어, VC0)로 푸시하는 한편, 익스프레스 트래픽 클래스들(예를 들어, TC5-TC7)에 대한 데이터 페이로드들은 높은-우선순위 가상 채널(예를 들어, VC1)로 푸시된다.
그 결과, 낮은-우선순위 트래픽(VC0)에 사용되는 가상 채널은 (i) 모든 트래픽 클래스들에 대한 디스크립터들(예를 들어, TC0-TC7에 대한 디스크립터들) 및 (ii) 낮은-우선순위 또는 최선-노력 트래픽 클래스들에 대한 패킷 데이터 페이로드들(예를 들어, TC0-TC4에 대한 패킷 데이터)에 의해 공유되는데, 그 이유는 그러한 트래픽 타입들이 높은-우선순위 익스프레스 트래픽 클래스들에 대한 패킷 데이터 페이로드들(예를 들어, TC5-TC7에 대한 패킷 데이터)에 비해 비교적 덜 시간 민감하기 때문이다.
한편, 높은-우선순위 트래픽(VC1)에 대해 예약된 가상 채널은 높은-우선순위 또는 익스프레스 트래픽 클래스들(예를 들어, TC5-TC7에 대한 패킷 데이터)에 대한 시간-민감형 패킷 데이터 페이로드들에 대해 배타적으로 사용된다.
이러한 방식으로, 디스크립터 DMA는 모든 패킷 데이터 DMA로부터 분리되고, 디스크립터 DMA 및 낮은-우선순위 패킷 데이터 DMA는 최선-노력 트래픽(예를 들어, VC0)에 할당되는 가상 채널을 공유하고, 시간-민감형 패킷 데이터 DMA는 익스프레스 트래픽(예를 들어, VC1)을 위해 예약된 가상 채널을 사용한다. 그 결과, 이러한 접근법은 결정론을 크게 개선하고 지터를 감소시킨다.
도 5는 다양한 실시예들에 따른 NIC(network interface controller) 상에서 결정론적 패킷 송신들을 위한 분리된 디스크립터 및 데이터 DMA를 수행하기 위한 흐름도(500)를 예시한다. 다양한 실시예들에서, 예를 들어, 흐름도(500)는 도 4의 NIC(400) 및/또는 본 개시내용 전반적으로 설명되는 임의의 다른 네트워크 인터페이스 제어기들, 컴퓨팅 디바이스들, 플랫폼들, 시스템들 및 환경들을 사용하여 구현 및/또는 수행될 수 있다.
흐름도는 블록 502에서 시작하고, 여기서 디스크립터 DMA 엔진이 NIC 상의 스케줄러로부터 디스크립터 프리페치 요청을 수신한다.
다음으로 흐름도는 블록 504로 진행하고, 여기서 디스크립터 DMA 엔진이 그 트래픽 클래스에 관계없이 낮은-우선순위 가상 채널을 통해 최선-노력 트래픽으로서 디스크립터 요청을 전송/라우팅한다.
다음으로, 흐름도는 블록 506으로 진행하고, 여기서 디스크립터 DMA 엔진이 디스크립터 완료를 수신하고 디스크립터를 디스크립터 캐시에 캐시한다.
다음으로, 흐름도는 블록 508로 진행하고, 여기서 데이터 DMA 엔진이 스케줄러 회로로부터 패킷 데이터 요청을 수신한다.
다음으로, 흐름도는 블록 510으로 진행하고, 여기서 데이터 DMA 엔진이 패킷이 (예를 들어, 스케줄러 회로에 의해 제공되는 트래픽 클래스에 기초하여) 최선 노력 또는 익스프레스 트래픽을 포함하는지를 결정한다.
패킷이 최선-노력 트래픽을 포함하면, 흐름도는 다음으로 블록 512로 진행하고, 여기서 데이터 DMA 엔진이 데이터 DMA 요청을 낮은-우선순위 가상 채널을 통해 최선-노력 트래픽으로서 전송/라우팅한다.
그러나, 패킷이 익스프레스 트래픽을 포함하면, 흐름도는 다음으로 블록 514로 진행하고, 여기서 데이터 DMA 엔진이 데이터 DMA 요청을 높은-우선순위 가상 채널을 통해 익스프레스 트래픽으로서 전송/라우팅한다.
다음으로, 흐름도는 블록 516으로 진행하고, 여기서 데이터 DMA 엔진이 패킷 페이로드 데이터를 갖는 데이터 완료를 수신하고 패킷 데이터를 그 패킷에 대한 NIC의 적절한 송신 큐에 저장한다.
다음으로, 흐름도는 블록 518로 진행하고, 여기서 NIC의 MAC 레이어 및/또는 스케줄러가 패킷에 대한 명시된 착수 시간에 송신 인터페이스를 통한 송신을 위해 패킷을 스케줄링한다.
이러한 포인트에서, 흐름도가 완료될 수 있다. 그러나, 일부 실시예들에서, 흐름도가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 흐름도는 데이터 패킷들을 스케줄링하고 송신하는 것을 계속하기 위해 블록 502에서 재시작할 수 있다.
시간 민감형 네트워킹을 위한 패킷 레이턴시 및 지터의 실시간 모니터링
TSN(Time Sensitive Networking) 표준들은 패킷의 정밀한 스케줄링을 위한 알고리즘들을 정의하지만, 패킷의 송신 레이턴시 및 착수 시간 지터의 정밀한, 실시간 모니터링을 위해 정의된 표준화된 방법들은 존재하지 않는다.
IEEE 802.3 표준들은 다양한 네트워크 모니터들 및 콘솔 시스템들이 네트워크 모니터링 데이터를 교환하는 것을 가능하게 하는 표준 모니터링 사양인 RMON MIB(Remote Network Monitoring Management Information Base) 사양을 정의한다. 예를 들어, RMON1 MIB는 10개의 그룹으로 이루어지고, 여기서 그룹 1은, 이용, 충돌, CRC 에러 등과 같은, 실시간 LAN 통계를 수집한다. 이러한 표준들로 인해, 현재의 NIC 구현들은 모든 양호 및 불량 프레임들에 대한 프레임 크기 카운터, 양호한 멀티캐스트 프레임들에 대한 프레임 카운터, CRC 에러들에 대한 프레임 카운터 등과 같은, 이러한 통계들을 모니터링하고 수집하는 다양한 RMON 카운터들을 갖는다. 그러나, 이러한 RMON 카운터들은 일반 네트워크 통계(예를 들어, 일반적인 Ethernet LAN 통계)만을 단지 모니터한다-이들은 TSN 패킷 전송들과 연관된 TSN 특정 실시간 패킷 레이턴시 및 지터를 모니터하지 않고, 규정된 착수 시간을 위반하는 패킷을 카운트하거나 또는 추적하지 않는다. 경성 실시간 산업 애플리케이션들에 대해, (예를 들어, 애플리케이션이 실행 중인 동안) 패킷 레이턴시들 및 지터를 실시간으로 모니터링하여 각각의 패킷이 정확한 시간에 실제로 착수되는지를 결정하고 임의의 누락들을 애플리케이션에 보고하는 것이 중요하다. 따라서, 시간-임계형 애플리케이션이 실행되고 있을 때 패킷 레이턴시 및 지터를 정밀하게 실시간으로 모니터링하기 위한 표준 메커니즘이 현재 존재하지 않는다. 기존의 RMON 카운터들은 일반 Ethernet-기반 통계를 위한 것이고 TSN 애플리케이션들에 적합하지 않다.
패킷 송신들의 성능을 모니터링하거나 또는 평가하기 위해 합성 작업부하들 및 테스트 프로시저들이 또한 사용될 수 있다. 그러나, 이러한 합성 작업부하들 및 테스트 프로시저들은 실시간으로 수행되지 않고, 이들은 부정확하고, 이들은 시스템이 경성 실시간 요건들을 충족시키고 있는지를 보장할 수 없다.
예를 들어, 이러한 접근법은 패킷 레이턴시들 및 지터를 측정하기 위해 합성 작업부하들에 기초하는 비-런타임 합성 테스트의 사용을 수반한다. 합성 테스트는 (예를 들어, NIC 드라이버에 의해 수행되는) 테일 포인터 업데이트로부터 MII(media-independent interface)(예를 들어, GMII(gigabit media-independent interface) 또는 SGMII(serial gigabit media-independent interface))와 같은 물리 레이어 인터페이스까지의 패킷 레이턴시를 측정한다. 테일 포인터는 새로운 데이터 페이로드로의 어드레스 포인터들로 디스크립터들을 업데이트할 때마다 NIC 드라이버에 의해 전진된다. 테일 포인터가 헤드 포인터 앞서 있을 때, NIC는 대응하는 전송 링 버퍼(TRB)로부터 디스크립터들을 페치하기 시작하고, 그것들을 그 로컬 프리페치 버퍼에 저장한다. 합성 테스트에서, 테스트 소프트웨어는 NIC 내의 테일 포인터를 업데이트하기 직전에 RDTSC("read time-stamp counter") 명령어를 실행하고, 따라서 타임 스탬프 카운터 클록을 참조하여 데이터 전송의 시작점을 캡처한다. NIC는 디스크립터를 페치하고, 이를 파싱하고, 다음으로 메모리로부터 데이터 페이로드를 페치하기 위해 DMA를 개시한다.
일단 데이터 페이로드가 로컬 메모리 NIC(예를 들어, 로컬 SRAM)에서 이용가능하면, MAC는 데이터를 패킷화하고 이를 물리 레이어 인터페이스(예를 들어, GMII 인터페이스) 상에서 송신한다. 이러한 포인트에서, MAC는 PTP 클록에 관하여 타임스탬프를 기록한다. 패킷 송신 시간은 (예를 들어, TSC 클록에 기초하는) 테일 포인터 업데이트와 (예를 들어, PTP 타임스탬프에 기초하는) 물리 레이어/GMII 인터페이스를 통한 송신 사이의 시간 차이에 기초하여 계산된다. 유사하게, 지터는 (예를 들어, TSC 클록 및 PTP 클록 각각에 기초하여) 실제 착수 시간으로부터 스케줄링된 착수 시간을 감산하는 것에 의해 계산되고 레지스터에 포스팅된다. 이러한 접근법에는 몇몇 문제들이 존재한다.
첫째, 패킷 레이턴시는, 고객 현장 애플리케이션들과 동일하지 않은, 합성 작업부하 및 합성 테스트 프로시저를 사용하여 측정된다. 실시간 패킷 레이턴시들은 작업부하, 간섭, 및 실시간 트래픽 패턴들에 의해 크게 영향을 받지만, 실험실에서 고객 실시간 고장들을 재생하는 것은 종종 어렵다. 또한, 몇몇 리소스들이 공유되기 때문에(예를 들어, CPU 코어, 메모리/캐시, 패브릭), 이러한 합성 테스트들은 패킷 레이턴시들의 정확한 측정들을 제공하지 않을 것이다.
둘째, 측정은 테일 포인터 업데이트로부터 행해지며, 이는 두 가지 이유로 매우 부정확하다. 첫째 이유는 NIC가 페치 직후에 디스크립터를 파싱하지 않기 때문이다. 디스크립터들은 디스크립터를 파싱하고 데이터 페이로드를 페치할 시간까지 NIC 내부의 프리페치 캐시에 저장된다. 둘째 이유는 디스크립터들이 버스트들로 프리페치된다는 것이며, 이는 디스크립터들이 하나씩 페치되지 않는다는 것을 의미한다. 예를 들어, MAC 레이어는 헤드 포인터 마이너스 테일 포인터와 동일한 버스트 요청을 한다. 이러한 것을 극복하기 위해, 테스트 프로시저에서, 프리페치가 턴 오프되고, 테일 포인터는 한 번에 단지 하나의 디스크립터만 증분된다. 이러한 것을 행하는 것에 의해, 패킷들은 이제 드물게 송신될 것이고, 백-투-백 패킷 압력, 헤드-오브-더-라인 차단, 미해결 크레디트들의 제한된 이용가능성, 제한된 프리페치 캐시, 및 몇몇 다른 하드웨어 특정 제한들과 연관된 레이턴시들은 고려되지 않는다. 그 결과, 측정들은 지나치게 낙관적인 레이턴시 값들을 제공하며, 이는 이상치들을 캐치하거나 또는 식별하는 것을 어렵게 한다.
셋째, 소프트웨어는 NIC와 상이한 클록을 사용한다. 예를 들어, 소프트웨어는 SoC의 TSC(time stamp counter)에 대응하는 애플리케이션 클록을 사용하는 반면, NIC는 PTP(Precision Time Protocol) 클록을 사용한다. 그 결과, 고려될 필요가 있는 클록들 사이에 일부 불일치가 존재한다.
이러한 문제들로 인해, 현재의 방법들은 부정확하고, 매우 낮은 사이클 시간 및 경성 실시간 산업 애플리케이션들에 요구되는 정확도 또는 신뢰성의 레벨(예를 들어, 9개의 9의 정확도, 또는 99.9999999%)을 보장할 수 없다.
따라서, 하드웨어 특정 실시간 레이턴시들 및 런타임 시의 지터를 모니터링하기 위해 이용가능한 알려진 해결책들이 존재하지 않는다.
따라서, 본 개시내용은 패킷 레이턴시 및 지터를 높은 정밀도로 실시간으로 모니터링하기 위한 해결책을 제시한다. 제안된 해결책은 NIC에서 PTP 클록을 사용하여 상이한 클록 도메인들의 사용으로 초래되는 부정확성을 제거한다. NIC 하드웨어는 패킷 레이턴시들 및 지터를 정밀하게 측정하고, 각각의 패킷 송신에 대한 송신 레이턴시, 착수 시간 지터 및 송신 타임스탬프로 디스크립터들을 업데이트한다. 어떠한 합성 작업부하도 합성 테스트도 필요하지 않다. 또한, 모니터링은 애플리케이션이 실행되고 있을 때 실시간으로 수행된다.
예를 들어, 각각의 패킷에 대한 패킷 레이턴시들 및 지터는 NIC에 의해 계산되고, 송신 디스크립터 라이트-백 포맷의 예를 예시하는 도 7에 도시된 바와 같이, 패킷이 언제 송신되었는지에 대응하는 타임스탬프와 함께, "송신 레이턴시(transmit latency)" 및 "송신 지터(transmit jitter)"로 명명되는 송신 디스크립터 내의 새롭게 정의된 필드들에서 업데이트된다. NIC는 실제 착수 시간으로부터 스케줄링된 착수 시간을 감산하는 것에 의해 패킷 지터를 계산하고, 다음으로 결과적인 지터 값이 디스크립터에 다시 기입된다.
소프트웨어는 패킷이 스케줄링된 시간에 그리고 요구된 착수 시간 윈도우 내에 송신되었는지를 알기 위해 다른 상태 비트들과 함께 이러한 레이턴시들 및 지터를 판독할 수 있다. 제안된 아키텍처는 또한 최악의 경우의 수를 신뢰성있게 획득하기 위해 109 샘플들에 걸쳐 실시간으로 몇몇 패킷들에 걸쳐 최소, 평균, 및 최대 레이턴시 값들에 관한 통계를 제공한다.
제안된 아키텍처는 시간-민감형 산업 애플리케이션들을 위한 실시간 모니터링 기술을 제공하고, 기존의 RMON 표준들에 대한 확장을 제공하는 것에 의해 실시간 네트워크들을 관리하는 부담을 크게 감소시킨다. 제안된 해결책은 실제 애플리케이션 조건들 하에서 런타임 시에 하드웨어 패킷 레이턴시들 및 착수 시간 지터를 정밀하게 측정한다. 예를 들어, 레이턴시 및 지터 필드들은 디스크립터 자체 내부에 내장되고, NIC는 NIC가 디스크립터들을 폐쇄할 때 각각의 패킷에 대한 이러한 값들을 정밀하게 측정하고 다시 기입한다.
제안된 방법은, 경성 실시간 애플리케이션들에 필요한, 더 신뢰성 있는 런타임 통계들을 제공한다. 예를 들어, 제안된 해결책은 더 신뢰성 있는 데이터를 제공하고, 최대 9개의 9의 정확도(예를 들어, 99.9999999% 정확도)를 보장할 수 있으며, 이는 매우 낮은 사이클 시간 및 경성 실시간 산업 애플리케이션들에 요구된다.
또한, 이러한 기술을 구현하기 위한 추가적인 소프트웨어가 필요하지 않다. NIC 드라이버는 런타임 성능 통계를 판독하여 이를 애플리케이션 소프트웨어에 제공할 수 있고, 애플리케이션 소프트웨어는 이러한 정보를 코스 정정을 위해 실시간으로 사용할 수 있다.
이러한 해결책의 다른 이점은 이러한 해결책을 활용하는 NIC의 개발자 및 고객 양자 모두에 대한 추가적인 테스트 비용을 상당히 감소시킨다는 것이다. 예를 들어, NIC 개발자들은 실시간 성능 데이터를 수집하는 상당한 양의 시간 및 리소스들을 소비하는데, 이는 이러한 해결책으로 크게 단순화될 수 있다.
도 6은 패킷 송신들을 위한 고-정밀 실시간 성능 모니터링을 갖는 네트워크 인터페이스 제어기(600)의 예시적인 실시예를 예시한다. 일부 실시예들에서, 예를 들어, NIC(600)는 TSN 애플리케이션들에 대해 높은 매우 정밀도로 실시간으로 패킷 송신들의 레이턴시 및 지터를 모니터링하기 위해 사용될 수 있다. 또한, 일부 실시예들에서, NIC(600) 상에서 구현되는 해결책은 본 개시내용 전반적으로 설명되는 다른 NIC 실시예들(예를 들어, 도 1의 NIC(100), 도 2의 NIC(200), 및/또는 도 4의 NIC(400)) 상에서 구현될 수 있다.
예시된 실시예에서, NIC(600)는 다수의 송신 및 수신 큐들(602)을 포함하고, 데이터 트래픽은 VLAN ID(가상 LAN 식별자)에 기초하여 이러한 큐들(602)로 분리된다. 이러한 큐들(602)은 QoS를 제공하기 위해 우선순위에 기초하여 다양한 트래픽 클래스들에 내부적으로 매핑된다.
예를 들어, 높은 우선순위를 갖는 익스프레스 패킷들은 특정 VLAN ID로 태깅되고 큐 0에 매핑될 수 있고, 큐 0은 트래픽 클래스 1(TC1)에 매핑될 수 있다. 또한, 트래픽 클래스 1(TC1)에 매핑되는 데이터 흐름은 가상 채널 1(TC1)을 통해 라우팅될 수 있으며, 이는 실시간 트래픽을 위해 예약될 수 있다. VLAN 대 TC(traffic class) 대 VC(virtual channel) 매핑은 (예를 들어, I/O 인터페이스(612), 시스템 브리지(614) 및 메인 메모리(620)를 통해) NIC(600)와 연관된 호스트 컴퓨팅 시스템 또는 SoC 전반적으로 시간-민감형 실시간 패킷 데이터에 대한 낮은 레이턴시 경로를 제공한다. 따라서, 이러한 매핑은 애플리케이션으로부터 Ethernet 배선들까지 내내 패킷의 QoS를 보장한다.
유사하게, 낮은 우선순위를 갖는 최선-노력 트래픽은 상이한 VLAN ID로 태깅되고 큐 1에 매핑될 수 있고, 큐 1은 트래픽 클래스 0(TC0)에 매핑되고 가상 채널 0(VC0)을 통해 라우팅될 수 있으며, 이는 많은 다른 I/O 디바이스들과 공유될 수 있다. 최선-노력 트래픽은 비-시간-임계형 트래픽에 대해 사용되고, 레이턴시들은 보장되지 않는다.
레이턴시들은 상이한 큐들(602)에 걸쳐 극적으로 변하기 때문에, 런타임에 정밀하게 패킷들을 모니터링하기 위해, 이러한 패킷들을 고유 트랜잭션 ID로 태깅하는 것이 필수적이다. 도 8a는 트랜잭션 인코딩 스킴의 예를 예시한다. 이러한 인코딩 스킴은 큐 또는 채널 번호, 데이터의 타입(예를 들어, 디스크립터 또는 데이터 페이로드), 및 트랜잭션의 타입(예를 들어, 송신(Tx) 또는 수신(Rx) 트랜잭션 또는 업스트림 판독 또는 기입 트랜잭션)에 기초하여 패킷을 고유하게 식별하는 능력을 제공한다. 도 8b는, 아래에 추가로 논의되는 바와 같이, 도 8a의 인코딩 스킴에 기초하는 다양한 인코딩된 트랜잭션들의 예들을 예시한다.
NIC(600)에서, 모니터링 로직(616)은 NIC PTP 클록(619)에서 실행되는 자유 실행 16-비트 타이머를 수용한다. 250MHz에서의 PTP 클록에 대해, 이러한 타이머는 최대 256 μs(microseconds) 레이턴시를 측정할 수 있다. 모니터링 로직(616)은 각각의 업스트림 트랜잭션을 보고 ARID 및 RID에 기초하여 트랜잭션을 디코딩한다.
예를 들어, 채널 0에서 판독된 업스트림 디스크립터가 개시될 때, 모니터(616)는 5'b00010의 ARID로 이러한 트랜잭션을 식별하고 시간 't1'에서 PTP 타임스탬프의 스냅샷을 취하고 상태 머신은 완료를 대기한다. 완료가 NIC(600)에 도달할 때, 모니터 로직(616)은 5'b00010의 동일한 값을 갖는 RID를 갖는 대응하는 큐 0 디스크립터 완료를 식별하고, 시간 't2'에서 PTP 타임스탬프의 다른 스냅샷을 취하여 이를 FIFO(first-in first-out) 버퍼에 저장한다.
디스크립터를 수신할 시에, MAC(604)는 디스크립터를 파싱하고 패킷 페이로드에 대한 DMA를 (예를 들어, DMA 엔진(608)을 통해) 스케줄링한다. 새로운 인코딩 스킴은 디스크립터들과 데이터 사이를 구별하는 능력을 갖기 때문에, 이제 동일한 채널 0 상의 업스트림 데이터 트랜잭션이 5'b00011의 ARID로 개시된다. 이제, 모니터 블록 616은 시간 't3'에서 다른 PTP 타임스탬프를 취하고 그 타임스탬프를 FIFO에 저장하고 상태 머신은 완료를 대기한다. 채널 0 데이터 페이로드에 대응하는 완료가 NIC(600)에 도달할 때, 모니터링 블록(616)은 5'b00011의 동일한 ID 값을 갖는 이러한 트랜잭션을 식별하고 시간 't4'에서 PTP 타임스탬프를 취하고 타임스탬프를 FIFO로 푸시한다.
트랜잭션들은 다양한 우선순위들로 인해 그리고 착수 시간에 따라 상이한 가상 채널들 상에서 그리고 상이한 시간들에서 진행할 수 있다. 또한, 완료들은 큐가 어느 VC(virtual channel)에 매핑되는지에 기초하여 비순서적으로 올 수 있다. 업스트림 미해결 크레디트들, 패킷 크기, 버스트 크기, 큐들의 수 등을 포함하는 다양한 인자들이 레이턴시들 및 따라서 패킷 타임스탬프 값들에 영향을 미칠 수 있다.
일단 데이터 페이로드가 MAC(604)에 의해 수신되면, MAC(604)는 로컬 패킷 버퍼(602)에 데이터를 저장하고, 프레임 패킷을 생성하고, 이를 물리 레이어 인터페이스(617)(예를 들어, GMII) 상에서 물리적 코딩 서브레이어(PCS) 및 시리얼라이저/디시리얼라이저(SerDes)에 송신하여 최종적으로 이를 직렬 배선으로 전송한다. MAC(604)가 (네트워크(630)를 통해) 물리 레이어 인터페이스(617)(예를 들어, GMII) 상에서 패킷을 송신할 때, 모니터(616)는 't5'에서 다른 타임스탬프를 취한다.
(예를 들어, 제어 레지스터(615)를 통해) 디스크립터 내의 CTL 비트에 기초하여, 모니터 로직(616)은 다음의 방정식에 기초하여(예를 들어, 감산기(617)를 사용하여) 패킷 레이턴시를 계산한다:
Packet Transmit Latency (PTL) = CTL*(descriptor (t2-t1) + parsing (t3-t2)) + data (t4-t3) + xmt (t5-t4)
모니터링 로직(616)은 또한, 다음의 방정식에 의해 도시된 바와 같이, (예를 들어, 감산기(617)를 사용하여) 실제 착수 시간(t5)으로부터 스케줄링된 착수 시간을 감산하는 것에 의해 착수 시간 지터를 계산한다:
Launch Time Jitter (LTJ) = actual launch time (t5) - scheduled launch time (t5')
예를 들어, 감산기 로직(617)은 주어진 채널에 대해 모니터(616)의 FIFO로부터 타임스탬프들 t1 내지 t5를 판독하고, 제어 비트들 및 전술된 방정식들에 기초하여 송신 레이턴시 및 송신 지터를 계산한다.
다음으로, 모니터링 로직(616)은 패킷 송신 레이턴시 및 착수 시간 지터 값들을 MAC 레이어(604)에 전송하고, 이는 나중에 디스크립터를 닫는 것에 의해 디스크립터 필드들을 내부적으로 업데이트한다.
각각의 송신 채널/큐는 그 패킷 타임스탬프들을 저장하기 위한 별개의 FIFO를 가질 것이다. 최소/평균/최대 로직(618)은 모든 과거 송신된 패킷들에 걸쳐 최소, 평균, 및 최대 패킷 레이턴시 값들을 계산한다. 통상적으로, 평균값은 테일 엔드에서 몇몇 이상치들을 금지하는 최소값에 가까울 것이다.
도 9는 패킷을 송신하기 위해 수행되는 동작들의 시퀀스에 대한 패킷 송신 레이턴시의 그래프(900)를 예시한다. 예를 들어, 그래프(900)는 패킷 송신(예를 들어, 디스크립터 요청, 디스크립터 완료, 페이로드 요청, 페이로드 완료, 데이터 송신) 동안 발생하는 동작들의 시퀀스, 각각의 동작의 레이턴시, 및 전체 패킷 송신의 전체 레이턴시를 도시한다. 패킷 지터는 송신 디스크립터에 명시된 착수 시간 및 패킷이 송신된 실제 시간 t5에 기초하여 계산된다. 애플리케이션 소프트웨어는 디스크립터들 및 상태 레지스터들을 판독하여 타이밍 이상치들의 근본 원인을 결정하고, 리소스 이용, 작업부하, 간섭 트래픽, 변경 스케줄링 등과 같은 시스템의 동작을 적절히 미세 조정할 수 있다.
도 10은 다양한 실시예들에 따른 NIC(network interface controller) 상에서 패킷 송신들을 위한 고-정밀 실시간 성능 모니터링을 수행하기 위한 흐름도(1000)를 예시한다. 다양한 실시예들에서, 예를 들어, 흐름도(1000)는 도 6의 NIC(600) 및/또는 본 개시내용 전반적으로 설명되는 임의의 다른 네트워크 인터페이스 제어기들, 컴퓨팅 디바이스들, 플랫폼들, 시스템들 및 환경들을 사용하여 구현 및/또는 수행될 수 있다.
흐름도는 블록 1002에서 시작하고, 여기서 디스크립터 판독 요청이 시간 t1에서 검출되고 대응하는 PTP 타임스탬프가 캡처된다.
흐름도는 다음으로 블록 1004로 진행하고, 여기서 디스크립터 판독 완료가 시간 t2에서 검출되고 대응하는 PTP 타임스탬프가 캡처된다.
흐름도는 다음으로 블록 1006으로 진행하고, 여기서 디스크립터 페이로드에 대한 데이터 DMA 요청이 시간 t3에서 검출되고 대응하는 PTP 타임스탬프가 캡처된다.
흐름도는 다음으로 블록 1008로 진행하고, 여기서 디스크립터 페이로드에 대한 데이터 DMA 완료가 시간 t4에서 검출되고 대응하는 PTP 타임스탬프가 캡처된다.
흐름도는 다음으로 블록 1010으로 진행하고, 여기서 패킷 송신이 시간 t5에서 검출되고 대응하는 PTP 타임스탬프가 캡처된다.
다음으로 흐름도는 블록 1012로 진행하여 타임스탬프들 t1-t5에 기초하여 패킷 송신 레이턴시 및 지터를 계산하고, 다음으로 블록 1014로 진행하여 패킷 레이턴시 및 지터 계산들로 디스크립터 필드들을 업데이트한다.
이러한 포인트에서, 흐름도가 완료될 수 있다. 그러나, 일부 실시예들에서, 흐름도가 재시작될 수 있고 그리고/또는 특정 블록들이 반복될 수 있다. 예를 들어, 일부 실시예들에서, 흐름도는 블록 1002에서 재시작하여, 패킷 송신들과 연관된 이벤트들을 모니터링하고 검출하고 패킷 송신들에 대한 레이턴시 및 지터를 계산하는 것을 계속할 수 있다.
예시적인 컴퓨팅 환경들
다음의 섹션은, 본 개시내용 전반적으로 설명되는 시간 민감형 네트워킹 기능성을 구현하거나 또는 구현하기 위해 사용될 수 있는 다양한 컴퓨팅 디바이스들, 플랫폼들, 시스템들, 및 환경들의 예들을 제시한다.
도 11은, 다음의 예들 중 많은 것에서 "에지 클라우드(edge cloud)"라고 지칭되는 처리의 레이어를 포함하는, 에지 컴퓨팅을 위한 구성의 개관을 도시하는 블록도(1100)이다. 도시된 바와 같이, 에지 클라우드(1110)는, 액세스 포인트 또는 기지국(1140), 로컬 처리 허브(1150), 또는 중앙 오피스(1120)와 같은 에지 위치에 공동-위치되고, 따라서 다수의 엔티티들, 디바이스들, 및 장비 인스턴스들을 포함할 수 있다. 에지 클라우드(1110)는 클라우드 데이터 센터(1130)보다 엔드포인트(소비자 및 생산자) 데이터 소스들(1160)(예를 들어, 자율 차량들(1161), 사용자 장비(1162), 기업 및 산업 장비(1163), 비디오 캡처 디바이스들(1164), 드론들(1165), 스마트 도시들 및 건물 디바이스들(1166), 센서들 및 IoT 디바이스들(1167) 등)에 훨씬 더 가깝게 위치된다. 에지 클라우드(1110)에서의 에지들에 제공되는 컴퓨팅, 메모리, 및 저장 리소스들은 엔드포인트 데이터 소스들(1160)에 의해 사용되는 서비스들 및 기능들에 대한 초저 레이턴시 응답 시간들을 제공할 뿐만 아니라 에지 클라우드(1110)로부터 클라우드 데이터 센터(1130)를 향한 네트워크 백홀 트래픽을 감소시키는 데에 중요하고, 따라서 다른 혜택들 중에서도 에너지 소비 및 전체 네트워크 사용들을 개선한다.
컴퓨팅, 메모리, 및 저장소는 부족한 리소스들이고, 일반적으로 에지 위치에 따라 감소한다(예를 들어, 기지국에서보다, 중앙 오피스에서보다 소비자 엔드포인트 디바이스에서 이용가능한 처리 리소스가 더 적다). 그러나, 에지 위치가 엔드포인트(예를 들어, 사용자 장비(UE))에 더 가까울수록, 더 많이 공간 및 전력이 종종 제약된다. 따라서, 에지 컴퓨팅은 지리적으로 그리고 네트워크 액세스 시간 양자 모두에서 더 가깝게 위치되는 더 많은 리소스들의 배포를 통해, 네트워크 서비스들을 위해 필요한 리소스들의 양을 감소시키려고 시도한다. 이러한 방식으로, 에지 컴퓨팅은 적절한 경우 컴퓨팅 리소스들을 작업부하 데이터로 가져오거나, 또는 작업부하 데이터를 컴퓨팅 리소스들로 가져오려고 시도한다.
다음은 다수의 잠재적 배치들을 커버하고 일부 네트워크 운영자들 또는 서비스 제공자들이 그들 자신의 인프라스트럭처들을 가질 수 있는 제한들을 다루는 에지 클라우드 아키텍처의 양태들을 설명한다. 이러한 것들은 에지 위치에 기초하는 구성들의 변형(예를 들어, 기지국 레벨에서의 에지들이 멀티-테넌트 시나리오에서 더 제약된 성능 및 능력들을 가질 수 있기 때문임); 에지 위치들, 위치들의 계층들, 또는 위치들의 그룹들에 이용가능한 컴퓨팅, 메모리, 저장소, 패브릭, 가속, 또는 유사한 리소스들의 타입에 기초하는 구성들; 서비스, 보안, 및 관리 및 오케스트레이션 능력들; 및 최종 서비스들의 유용성 및 성능을 달성하기 위한 관련 목적들을 포함한다. 이러한 배치는, 레이턴시, 거리, 및 타이밍 특성들에 따라, "근거리 에지(near edge)", "가까운 에지(close edge)", "로컬 에지(local edge)", "중간 에지(middle edge)", 또는 "원거리 에지(far edge)" 레이어들로서 고려될 수 있는 네트워크 레이어들에서의 처리를 달성할 수 있다.
에지 컴퓨팅은 네트워크의 "에지"에서 또는 그에 더 가까이에서, 통상적으로, 데이터를 생산하고 소비하는 엔드포인트 디바이스들에 훨씬 더 가까운 기지국들, 게이트웨이들, 네트워크 라우터들, 또는 다른 디바이스들에서 구현되는 컴퓨팅 플랫폼(예를 들어, x86 또는 ARM 컴퓨팅 하드웨어 아키텍처)의 사용을 통해 컴퓨팅이 수행되는 개발 패러다임이다. 예를 들어, 에지 게이트웨이 서버들은 접속된 클라이언트 디바이스들에 대한 낮은 레이턴시 사용-사례들(예를 들어, 자율 주행 또는 비디오 감시)에 대해 실시간으로 계산을 수행하기 위해 메모리 및 저장 리소스들의 풀들을 갖출 수 있다. 또는 예로서, 기지국들은, 백홀 네트워크들을 통해 데이터를 추가로 통신하지 않고, 접속된 사용자 장비에 대한 서비스 작업부하들을 직접 처리하기 위해 컴퓨팅 및 가속 리소스들로 증강될 수 있다. 또는 다른 예로서, 중앙 오피스 네트워크 관리 하드웨어는 가상화된 네트워크 기능들을 수행하고 접속된 디바이스들에 대한 서비스들 및 소비자 기능들의 실행을 위한 컴퓨팅 리소스들을 제공하는 표준화된 컴퓨팅 하드웨어로 대체될 수 있다. 에지 컴퓨팅 네트워크들 내에서는, 컴퓨팅 리소스가 데이터로 "이동될(moved)" 서비스들에서의 시나리오들뿐만 아니라, 데이터가 컴퓨팅 리소스로 "이동될(moved)" 시나리오들이 있을 수 있다. 또는 예로서, 기지국 컴퓨팅, 가속 및 네트워크 리소스들은, 코너 사례들, 긴급 상황들을 관리하기 위해 또는 상당히 더 길게 구현된 라이프사이클에 걸쳐 배치된 리소스들에 대해 오랜 수명(longevity)을 제공하기 위해 휴면 중인 용량(가입, 요구에 따른 용량(capacity on demand))을 활성화하는 것에 의해 필요에 따른 기준으로 작업부하 요구들에 대해 스케일링하기 위해 서비스들을 제공할 수 있다.
도 12는 엔드포인트들, 에지 클라우드, 및 클라우드 컴퓨팅 환경들 사이의 동작 레이어들을 예시한다. 구체적으로, 도 12는 네트워크 컴퓨팅의 다수의 예시적인 레이어들 중에서 에지 클라우드(1110)를 이용하는 계산 사용 사례들(1205)의 예들을 묘사한다. 레이어들은 데이터 생성, 분석, 및 데이터 소비 활동들을 수행하기 위해 에지 클라우드(1110)에 액세스하는 엔드포인트(디바이스들 및 사물들) 레이어(1200)에서 시작한다. 에지 클라우드(1110)는 게이트웨이들, 구내 서버들, 또는 에지 시스템들에 물리적으로 근접하여 위치되는 네트워크 장비(노드들(1215))를 갖는 에지 디바이스들 레이어(1210); 기지국, 무선 처리 유닛, 네트워크 허브, 지역 데이터 센터(DC), 또는 로컬 네트워크 장비(장비(1225))를 포함하는 네트워크 액세스 레이어(1220); 및 그 사이에 위치되는 임의의 장비, 디바이스들, 또는 노드들(레이어(1212)에서, 상세히 예시되지 않음)와 같은 다수의 네트워크 레이어들에 걸쳐 있을 수 있다. 에지 클라우드(1110) 내의 그리고 다양한 레이어들 사이의 네트워크 통신은 묘사되지 않은 연결 아키텍처들 및 기술들을 통해 발생하는 것을 포함하여, 임의의 수의 유선 또는 무선 매체들을 통해 발생할 수 있다.
네트워크 통신 거리 및 처리 시간 제약들로부터 초래되는, 레이턴시의 예들은, 엔드포인트 레이어(1200) 중에 있을 때의 ms(millisecond) 미만으로부터, 에지 디바이스들 레이어(1210)에서의 5 ms 아래, 심지어 네트워크 액세스 레이어(1220)에서의 노드들과 통신할 때의 10 내지 40 ms 사이의 범위일 수 있다. 에지 클라우드(1110) 너머에는 코어 네트워크(1230) 및 클라우드 데이터 센터(1240) 레이어들이 있고, 각각은 증가하는 레이턴시를 갖는다(예를 들어, 코어 네트워크 레이어(1230)에서의 50-60 ms 사이, 내지 클라우드 데이터 센터 레이어에서의 100 ms 이상). 그 결과, 적어도 50 내지 100 ms 이상의 레이턴시들을 갖는, 코어 네트워크 데이터 센터(1235) 또는 클라우드 데이터 센터(1245)에서의 동작들은 사용 사례들(1205)의 많은 시간-임계형 기능들을 달성하지 못할 것이다. 이러한 레이턴시 값들 각각은 예시 및 대비의 목적들을 위해 제공되고; 다른 액세스 네트워크 매체들 및 기술들의 사용이 레이턴시들을 추가로 감소시킬 수 있다는 점이 이해될 것이다. 일부 예들에서, 네트워크의 각각의 부분들은, 네트워크 소스 및 목적지에 관하여, "가까운 에지(close edge)", "로컬 에지(local edge)", "근거리 에지(near edge)", "중간 에지(middle edge)", 또는 "원거리 에지(far edge)" 레이어들로서 카테고리화될 수 있다. 예를 들어, 코어 네트워크 데이터 센터(1235) 또는 클라우드 데이터 센터(1245)의 관점에서, 중앙 오피스 또는 콘텐츠 데이터 네트워크는 "근거리 에지(near edge)" 레이어(클라우드에 "근거리(near)", 사용 사례들(1205)의 디바이스들 및 엔드포인트들과 통신할 때 높은 레이턴시 값들을 가짐) 내에 위치되는 것으로서 고려될 수 있는 반면, 액세스 포인트, 기지국, 온-프레미스 서버, 또는 네트워크 게이트웨이는 "원거리 에지" 레이어(클라우드로부터 "원거리", 사용 사례들(1205)의 디바이스들 및 엔드포인트들과 통신할 때 낮은 레이턴시 값들을 가짐) 내에 위치되는 것으로서 고려될 수 있다. "가까운(close)", "로컬(local)", "근거리(near)", "중간(middle)", 또는 "원거리(far)"에지를 구성하는 것으로서의 특정 네트워크 레이어의 다른 카테고리화들은, 네트워크 레이어들(1200-1240) 중 임의의 것에서의 소스로부터 측정되는, 레이턴시, 거리, 네트워크 홉의 수, 또는 다른 측정가능한 특성들에 기초할 수 있다는 것이 이해될 것이다.
다양한 사용 사례들(1205)은, 에지 클라우드를 이용하는 다수의 서비스로 인해, 착신되는 스트림들로부터의 사용 압력 하에 리소스들에 액세스할 수 있다. 낮은 레이턴시를 갖는 결과들을 달성하기 위해, 에지 클라우드(1110) 내에서 실행되는 서비스들은 (a) 우선순위(처리량 또는 레이턴시) 및 QoS(quality of service)(예를 들어, 자율 주행차에 대한 트래픽은 응답 시간 요건의 관점에서 온도 센서보다 더 높은 우선순위를 가질 수 있거나; 또는, 애플리케이션에 따라, 컴퓨팅/가속기, 메모리, 저장소, 또는 네트워크 리소스에 성능 감도/병목현상이 존재할 수 있음); (b) 신뢰성 및 탄력성(예를 들어, 일부 입력 스트림들은 미션-크리티컬 신뢰성으로 작용되고 트래픽은 라우팅될 필요가 있으며, 일부 다른 입력 스트림들은 애플리케이션에 따라 가끔의 고장을 허용할 수 있음); 및 (c) 물리적 제약들(예를 들어, 전력, 냉각 및 폼 팩터)의 관점에서 다양한 요건들의 균형을 맞춘다.
이러한 사용 사례에 대한 엔드-투-엔드 서비스 뷰(end-to-end service view)는 서비스-흐름의 개념을 수반하고 트랜잭션과 연관된다. 트랜잭션은 서비스를 소비하는 엔티티에 대한 전체 서비스 요건 뿐만 아니라, 리소스들, 작업부하들, 작업 흐름들, 및 기업 기능 및 기업 레벨 요건들에 대한 연관된 서비스들을 상술한다. 설명된 "관점들(terms)"로 실행되는 서비스는 서비스의 라이프사이클 동안 트랜잭션에 대한 실시간 및 런타임 계약 준수를 보장하는 방식으로 각각의 레이어에서 관리될 수 있다. 트랜잭션에서의 컴포넌트가 SLA에 합의된 것을 놓치고 있을 때, 시스템 전체(트랜잭션에서의 컴포넌트들)는 (1) SLA 위반의 영향을 이해하고, (2) 전체 트랜잭션 SLA를 재개하기 위해 시스템 내의 다른 컴포넌트들을 증강하고, (3) 교정하는 조치들을 구현하는 능력을 제공할 수 있다.
따라서, 이러한 변형들 및 서비스 특징들을 염두에 두고서, 에지 클라우드(1110) 내의 에지 컴퓨팅은 사용 사례들(1205)의 다수의 애플리케이션(예를 들어, 객체 추적, 비디오 감시, 커넥티드 카(connected car)들 등)을 실시간으로 또는 거의 실시간으로 서비스하고 그에 응답하는 능력을 제공하고, 이러한 다수의 애플리케이션들에 대한 초저 레이턴시 요건들을 충족시킬 수 있다. 이러한 이점들은, 레이턴시 또는 다른 제한들로 인해 종래의 클라우드 컴퓨팅을 활용할 수 없는, 완전히 새로운 클래스의 애플리케이션들(VNF들(Virtual Network Functions), FaaS(Function as a Service), EaaS(Edge as a Service), 표준 프로세스들 등)을 가능하게 한다.
그러나, 에지 컴퓨팅의 이점들과 함께 다음의 경고들이 온다. 에지에 위치되는 디바이스들은 종종 리소스 제약되고 따라서 에지 리소스들의 사용에 대한 압력이 존재한다. 통상적으로, 이러한 것은 다수의 사용자(테넌트) 및 디바이스에 의한 사용을 위한 메모리 및 저장 리소스들의 풀링을 통해 다루어진다. 에지는 전력 및 냉각 제약될 수 있고 따라서 전력 사용은 가장 많은 전력을 소비하고 있는 애플리케이션들에 의해 고려될 필요가 있다. 이러한 풀링된 메모리 리소스에는 내재된 전력-성능 트레이드오프들이 있을 수 있는데, 그 이유는 이들 중 많은 것이 더 많은 전력이 더 큰 메모리 대역폭을 요구하는 신생 메모리 기술들을 사용할 가능성이 있기 때문이다. 마찬가지로, 하드웨어 및 루트 오브 트러스트(root of trust) 신뢰형 기능들의 개선된 보안이 또한 요구되는데, 그 이유는 에지 위치들이 무인(unmanned)일 수 있고(예를 들어, 제3자 위치에 하우징될 때) 심지어 허가 받은 액세스를 요구할 수도 있기 때문이다. 이러한 문제들은 멀티-테넌트, 다중-소유자, 또는 멀티-액세스 환경에서 에지 클라우드(1110)에서 확대되고, 여기서 서비스들 및 애플리케이션들은, 특히 네트워크 사용이 동적으로 변동하고 다수의 이해 관계자들, 사용 사례들, 및 서비스들의 조성이 변경될 때, 많은 사용자들에 의해 요청된다.
더 일반적인 레벨에서, 에지 컴퓨팅 시스템은, 클라이언트 및 분산 컴퓨팅 디바이스들로부터 조정을 제공하는, 에지 클라우드(1110)에서 동작하는 이전에 논의된 레이어들(네트워크 레이어들(1200-1240))에서의 임의의 수의 배치들을 포함하는 것으로 설명될 수 있다. 하나 이상의 에지 게이트웨이 노드, 하나 이상의 에지 집성 노드, 및 하나 이상의 코어 데이터 센터가 네트워크의 레이어들에 걸쳐 분산되어 통신 서비스 제공자( "telco", 또는 "TSP"), 사물 인터넷 서비스 제공자, 클라우드 서비스 제공자(CSP), 기업 엔티티, 또는 임의의 다른 수의 엔티티들에 의해 또는 그를 대신하여 에지 컴퓨팅 시스템의 구현을 제공될 수 있다. 에지 컴퓨팅 시스템의 다양한 구현들 및 구성들은, 서비스 목적들을 충족시키도록 오케스트레이션될 때와 같이, 동적으로 제공될 수 있다.
본 명세서에 제공된 예들과 일관되게, 클라이언트 컴퓨팅 노드는 데이터의 생산자 또는 소비자로서 통신 가능한 임의의 타입의 엔드포인트 컴포넌트, 디바이스, 기기, 또는 다른 것으로서 구현될 수 있다. 추가로, 에지 컴퓨팅 시스템에서 사용되는 라벨 "노드(node)" 또는 "디바이스(device)"는 반드시 이러한 노드 또는 디바이스가 클라이언트 또는 에이전트/미니언/팔로워 역할에서 동작하는 것을 의미하는 것은 아니고; 오히려, 에지 컴퓨팅 시스템 내의 노드들 또는 디바이스들 중 임의의 것은 에지 클라우드(1110)를 용이하게 하거나 또는 사용하기 위해 개별 또는 접속된 하드웨어 또는 소프트웨어 구성들을 포함하는 개별 엔티티들, 노드들, 또는 서브시스템들을 지칭한다.
이와 같이, 에지 클라우드(1110)는 네트워크 레이어들(1210-1230) 중에서 에지 게이트웨이 노드들, 에지 집성 노드들, 또는 다른 에지 컴퓨팅 노드들에 의해 그리고 그 안에서 동작되는 네트워크 컴포넌트들 및 기능 특징들로 형성된다. 따라서 에지 클라우드(1110)는, 본 명세서에서 논의되는, 무선 액세스 네트워크(RAN)가능 엔드포인트 디바이스들(예를 들어, 모바일 컴퓨팅 디바이스들, IoT 디바이스들, 스마트 디바이스들 등)에 근접하게 위치되는 에지 컴퓨팅 및/또는 저장 리소스들을 제공하는 임의의 타입의 네트워크로서 구현될 수 있다. 다시 말해서, 에지 클라우드(1110)는, 캐리어 네트워크들(예를 들어, GSM(Global System for Mobile Communications) 네트워크들, LTE(Long-Term Evolution) 네트워크들, 5G/6G 네트워크들 등)을 포함하는, 서비스 제공자 코어 네트워크들 내로의 입구 포인트의 역할을 하는 전통적인 네트워크 액세스 포인트들과 엔드포인트 디바이스들을 연결하면서도, 또한 저장 및/또는 컴퓨팅 능력들을 제공하는, "에지(edge)"로서 구상될 수 있다. 다른 타입들 및 형식들의 네트워크 액세스(예를 들어, 광학 네트워크들을 포함하는 Wi-Fi, 장거리 무선, 유선 네트워크들)가 또한 이러한 3GPP 캐리어 네트워크들 대신에 또는 그와 조합하여 이용될 수 있다.
에지 클라우드(1110)의 네트워크 컴포넌트들은 서버들, 멀티-테넌트 서버들, 기기 컴퓨팅 디바이스들, 및/또는 임의의 다른 타입의 컴퓨팅 디바이스들일 수 있다. 예를 들어, 에지 클라우드(1110)는 하우징, 섀시, 케이스 또는 쉘을 포함하는 자족적인 전자 디바이스인 기기 컴퓨팅 디바이스를 포함할 수 있다. 일부 상황들에서, 하우징은 휴대성을 위해 치수가 정해져서 인간에 의해 휴대되고/되거나 또는 선적될 수 있도록 할 수 있다. 예시적인 하우징들은 기기의 콘텐츠를 부분적으로 또는 완전히 보호하는 하나 이상의 외부 표면을 형성하는 재료들을 포함할 수 있고, 여기서 보호는 날씨 보호, 위험한 환경 보호(예를 들어, EMI, 진동, 극한 온도들)를 포함할 수 있고, 및/또는 수중 사용(submergibility)을 가능하게 할 수 있다. 예시적인 하우징들은, AC 전력 입력들, DC 전력 입력들, AC/DC 또는 DC/AC 컨버터(들), 전력 조정기들, 변압기들, 충전 회로, 배터리들, 유선 입력들 및/또는 무선 전력 입력들과 같은, 고정형 및/또는 휴대용 구현들을 위한 전력을 제공하는 전력 회로를 포함할 수 있다. 예시적인 하우징들 및/또는 이들의 표면들은 건물들, 통신 구조물들(예를 들어, 기둥들, 안테나 구조물들 등) 및/또는 랙들(예를 들어, 서버 랙들, 블레이드 마운트들 등)과 같은 구조물들에의 부착을 가능하게 하기 위해 장착 하드웨어에 접속되거나 또는 이를 포함할 수 있다. 예시적인 하우징들 및/또는 이들의 표면들은 하나 이상의 센서(예를 들어, 온도 센서들, 진동 센서들, 광 센서들, 음향 센서들, 용량성 센서들, 근접 센서들 등)를 지원할 수 있다. 하나 이상의 이러한 센서는 표면에 포함되거나, 표면에 의해 휴대되거나, 또는 그렇지 않으면 표면에 내장되고 및/또는 기기의 표면에 장착될 수 있다. 예시적인 하우징들 및/또는 이들의 표면들은 추진 하드웨어(예를 들어, 휠들, 프로펠러들 등) 및/또는 관절식 하드웨어(예를 들어, 로봇 암들, 피봇 가능한 부속물들 등)와 같은 기계적 연결을 지원할 수 있다. 일부 상황들에서, 센서들은 사용자 인터페이스 하드웨어(예를 들어, 버튼, 스위치, 다이얼, 슬라이더 등)와 같은 임의의 타입의 입력 디바이스들을 포함할 수 있다. 일부 상황들에서, 예시적인 하우징들은 그 안에 포함되거나, 그에 의해 휴대되거나, 그 안에 내장되고/되거나 또는 그것에 부착된 출력 디바이스들을 포함한다. 출력 디바이스들은 디스플레이들, 터치스크린들, 라이트들, LED들, 스피커들, I/O 포트들(예를 들어, USB) 등을 포함할 수 있다. 일부 상황들에서, 에지 디바이스들은 특정 목적(예를 들어, 교통 신호등)을 위해 네트워크에 제시되는 디바이스들이지만, 다른 목적들을 위해 이용될 수 있는 처리 및/또는 다른 능력들을 가질 수 있다. 이러한 에지 디바이스들은 다른 네트워크화된 디바이스들과 독립적일 수 있으며, 그 주 목적에 적합한 폼 팩터를 갖는 하우징을 제공받을 수 있고; 그 주 태스크를 간섭하지 않는 다른 컴퓨팅 태스크들에 대해 여전히 이용가능할 수 있다. 에지 디바이스들은 사물 인터넷 디바이스들을 포함한다. 기기 컴퓨팅 디바이스는 디바이스 온도, 진동, 리소스 이용, 업데이트, 전력 문제, 물리적 및 네트워크 보안 등과 같은 로컬 문제들을 관리하기 위한 하드웨어 및 소프트웨어 컴포넌트들을 포함할 수 있다. 기기 컴퓨팅 디바이스를 구현하기 위한 예시적인 하드웨어가 도 14와 관련하여 설명된다. 에지 클라우드(1110)는 하나 이상의 서버 및/또는 하나 이상의 멀티-테넌트 서버를 또한 포함할 수 있다. 이러한 서버는 운영 체제 및 가상 컴퓨팅 환경을 포함할 수 있다. 가상 컴퓨팅 환경은 하나 이상의 가상 머신, 하나 이상의 컨테이너 등을 관리(생성(spawning), 배치, 파괴 등)하는 하이퍼바이저를 포함할 수 있다. 이러한 가상 컴퓨팅 환경들은 하나 이상의 애플리케이션 및/또는 다른 소프트웨어, 코드 또는 스크립트가 하나 이상의 다른 애플리케이션, 소프트웨어, 코드 또는 스크립트로부터 격리되면서 실행될 수 있는 실행 환경을 제공한다.
도 13에서는, (모바일 디바이스들, 컴퓨터들, 자율 차량들, 기업 컴퓨팅 장비, 산업 처리 장비의 형태의) 다양한 클라이언트 엔드포인트들(1310)이 엔드포인트 네트워크 집성의 타입에 특정한 요청들 및 응답들을 교환한다. 예를 들어, 클라이언트 엔드포인트들(1310)은, 온-프레미스 네트워크 시스템(1332)을 통해 요청들 및 응답들(1322)을 교환하는 것에 의해, 유선 광대역 네트워크를 통해 네트워크 액세스를 획득할 수 있다. 모바일 컴퓨팅 디바이스들과 같은 일부 클라이언트 엔드포인트들(1310)은, 액세스 포인트(예를 들어, 셀룰러 네트워크 타워)(1334)를 통해 요청들 및 응답들(1324)을 교환하는 것에 의해, 무선 광대역 네트워크를 통해 네트워크 액세스를 획득할 수 있다. 자율 차량들과 같은, 일부 클라이언트 엔드포인트들(1310)은 거리-위치 네트워크 시스템(1336)을 통해 무선 차량 네트워크를 통해 요청들 및 응답들(1326)에 대한 네트워크 액세스를 획득할 수 있다. 그러나, 네트워크 액세스의 타입에 관계없이, TSP는 트래픽 및 요청들을 집성하기 위해 에지 클라우드(1110) 내에 집성 포인트들(1342, 1344)을 배치할 수 있다. 따라서, 에지 클라우드(1110) 내에서, TSP는 요청된 콘텐츠를 제공하기 위해, 에지 집성 노드들(1340)에서와 같이, 다양한 컴퓨팅 및 저장 리소스들을 배치할 수 있다. 에지 클라우드(1110)의 에지 집성 노드들(1340) 및 다른 시스템들은 클라우드 또는 데이터 센터(1360)에 접속되고, 이는 백홀 네트워크(1350)를 사용하여 웹사이트들, 애플리케이션들, 데이터베이스 서버들 등에 대한 클라우드/데이터 센터로부터의 더 높은 레이턴시 요청들을 충족시킨다. 단일 서버 프레임워크 상에 배치된 것들을 포함하여, 에지 집성 노드들(1340) 및 집성 포인트들(1342, 1344)의 추가적인 또는 통합된 인스턴스들이 또한 에지 클라우드(1110) 또는 TSP 인프라스트럭처의 다른 영역들 내에 존재할 수 있다.
도 14는 다양한 실시예들에 따른 컴퓨팅 플랫폼(1400)("시스템(1400)", "디바이스(1400)", "기기(1400)" 등이라고 또한 지칭됨)의 예를 예시한다. 다양한 실시예들에서, 컴퓨팅 플랫폼(1400)은 본 개시내용 전반적으로 설명되는 TSN(time sensitive networking) 기능성으로 구현될 수 있거나, 또는 이를 구현하기 위해 사용될 수 있다. 일부 실시예들에서, 예를 들어, 컴퓨팅 플랫폼(1400)의 NIC(network interface controller)(1416)는 각각 도 1, 2, 4 및 6의 NIC들(100, 200, 400 및/또는 600)의 TSN 기능성의 일부 또는 전부로 구현될 수 있다.
다양한 실시예들에서, 플랫폼(1400)은 본 명세서에 도시되고 설명되는 임의의 다른 도면에 관하여 본 명세서에서 논의되는 임의의 다른 엘리먼트/디바이스로서 사용하기에 적합할 수 있다. 플랫폼(1400)은 또한 본 명세서에 논의되는 서버 컴퓨터 시스템 또는 일부 다른 엘리먼트, 디바이스, 또는 시스템에서 또는 그로서 구현될 수 있다. 플랫폼(1400)은 예에 도시된 컴포넌트들의 임의의 조합들을 포함할 수 있다. 플랫폼(1400)의 컴포넌트들은 IC들(integrated circuits), 이들의 부분들, 개별 전자 디바이스들, 또는 컴퓨터 플랫폼(1400)에 적응된 다른 모듈들, 로직, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로서, 또는 더 큰 시스템의 섀시 내에 다른 방식으로 통합되는 컴포넌트들로서 구현될 수 있다. 도 14의 예는 컴퓨터 플랫폼(1400)의 컴포넌트들의 하이 레벨 뷰를 도시하도록 의도된다. 그러나, 도시된 컴포넌트들 중 일부가 생략될 수 있고, 추가의 컴포넌트들이 존재할 수 있으며, 도시된 컴포넌트들의 상이한 배열들이 다른 구현들에서 발생할 수 있다.
플랫폼(1400)은 프로세서 회로(1402)를 포함한다. 프로세서 회로(1402)는, 이에 제한되는 것은 아니지만, 하나 이상의 프로세서 코어 및 캐시 메모리, LDO들(low drop-out voltage regulators), 인터럽트 제어기들, SPI, I2C 또는 범용 프로그램가능 직렬 인터페이스 회로와 같은 직렬 인터페이스들, RTC(real time clock), 인터벌 및 워치독 타이머들을 포함하는 타이머-카운터들, 범용 I/O, SD/MMC(secure digital/multi-media card) 또는 유사한 인터페이스들과 같은 메모리 카드 제어기들, MIPI(mobile industry processor interface) 인터페이스들 및 JTAG(Joint Test Access Group) 테스트 액세스 포트들 중 하나 이상과 같은 회로를 포함한다. 일부 구현들에서, 프로세서 회로(1402)는, 마이크로프로세서들, 프로그램가능 처리 디바이스들(예를 들어, FPGA, ASIC 등) 등일 수 있는, 하나 이상의 하드웨어 가속기를 포함할 수 있다. 하나 이상의 하드웨어 가속기는, 예를 들어, 컴퓨터 비전 및/또는 딥 러닝 가속기들을 포함할 수 있다. 일부 구현들에서, 프로세서 회로(1402)는, DRAM, SRAM, EPROM, EEPROM, 플래시 메모리, 솔리드-스테이트 메모리, 및/또는, 본 명세서에 논의되는 것들과 같은, 임의의 다른 타입의 메모리 디바이스 기술과 같은, 임의의 적합한 휘발성 및/또는 비-휘발성 메모리를 포함할 수 있는, 온-칩 메모리 회로를 포함할 수 있다.
프로세서 회로(1402)의 프로세서(들)는, 예를 들어, 하나 이상의 프로세서 코어(CPU), 애플리케이션 프로세서, GPU, RISC 프로세서, ARM(Acorn RISC Machine) 프로세서, CISC 프로세서, 하나 이상의 DSP, 하나 이상의 FPGA, 하나 이상의 PLD, 하나 이상의 ASIC, 하나 이상의 기저대역 프로세서, 하나 이상의 무선 주파수 집적 회로(RFIC), 하나 이상의 마이크로프로세서 또는 제어기, 또는 이들의 임의의 적합한 조합을 포함할 수 있다. 프로세서 회로(1402)의 프로세서들(또는 코어들)은 메모리/저장소와 연결되거나 또는 이를 포함할 수 있고, 메모리/저장소에 저장된 명령어들을 실행하여 다양한 애플리케이션들 또는 운영 체제들이 플랫폼(1400) 상에서 실행되는 것을 가능하게 하도록 구성될 수 있다. 이러한 실시예들에서, 프로세서 회로(1402)의 프로세서들(또는 코어들)은 플랫폼(1400)의 사용자에게 특정 서비스를 제공하기 위해 애플리케이션 소프트웨어를 동작시키도록 구성된다. 일부 실시예들에서, 프로세서 회로(1402)는 본 명세서의 다양한 실시예들에 따라 동작하는 특수 목적 프로세서/제어기일 수 있다.
예들로서, 프로세서 회로(1402)는 i3, i5, i7, i9-기반 프로세서와 같은 Intel® Architecture CoreTM 기반 프로세서; QuarkTM, AtomTM 또는 다른 MCU-기반 프로세서와 같은 Intel® 마이크로컨트롤러-기반 프로세서; Pentium® 프로세서(들), Xeon® 프로세서(들), 또는 캘리포니아주 산타 클라라 소재의 Intel® Corporation으로부터 이용가능한 다른 이러한 프로세서를 포함할 수 있다. 그러나, Ryzen® 또는 EPYC® 프로세서(들), APU들(Accelerated Processing Units), MxGPU들, Epyc® 프로세서(들) 등과 같은 AMD(Advanced Micro Devices) Zen® 아키텍처; Apple® Inc.로부터의 A5-A12 및/또는 S1-S4 프로세서(들), Qualcomm® Technologies, Inc.로부터의 SnapdragonTM 또는 CentriqTM 프로세서(들), Texas Instruments, Inc.® OMAP(Open Multimedia Applications Platform)TM 프로세서(들); MIPS Warrior M-class, Warrior I-class, and Warrior P-class 프로세서들과 같은, MIPS Technologies, Inc.로부터의 MIPS-기반 설계; ARM Cortex-A, Cortex-R, 및 Cortex-M 계열의 프로세서들과 같은, ARM Holdings, Ltd.로부터 라이센싱된 ARM-기반 설계; CaviumTM, Inc.에 의해 제공되는 ThunderX2®; 등 중 하나 이상과 같은, 임의의 수의 다른 프로세서들이 사용될 수 있다. 일부 구현들에서, 프로세서 회로(1402)는 SoC(system on a chip), SiP(System-in-Package), MCP(multi-chip package) 등의 일부일 수 있으며, 프로세서 회로(1402) 및 다른 컴포넌트들은 단일 집적 회로, 또는, Intel® Corporation으로부터의 EdisonTM 또는 GalileoTM SoC 보드들과 같은, 단일 패키지로 형성된다. 프로세서 회로(1402)의 다른 예들은 본 개시내용의 다른 곳에서 언급된다.
추가적으로 또는 대안적으로, 프로세서 회로(1402)는, 이에 제한되는 것은 아니지만, FPGA 등과 같은 하나 이상의 FPD 등; CPLD, HCPLD 등과 같은 PLD; 구조화된 ASIC 등과 같은 ASIC; PSoC; 등과 같은 회로를 포함할 수 있다. 이러한 실시예들에서, 프로세서 회로(1402)의 회로는 본 명세서에 논의되는 다양한 실시예들의 프로시저들, 방법들, 기능들 등과 같은 다양한 기능들을 수행하도록 프로그래밍될 수 있는 다른 상호접속된 리소스들을 포함하는 로직 블록들 또는 로직 패브릭을 포함할 수 있다. 이러한 실시예들에서, 프로세서 회로(1402)의 회로는 LUT들 등에 로직 블록들, 로직 패브릭, 데이터 등을 저장하기 위해 사용되는 메모리 셀들(예를 들어, EPROM, EEPROM, 플래시 메모리, 정적 메모리(예를 들어, SRAM, 안티-퓨즈들 등)를 포함할 수 있다.
프로세서 회로(1402)는 인터커넥트(1406)(예를 들어, 버스)를 통해 시스템 메모리 회로(1404)와 통신할 수 있다. 임의의 수의 메모리 디바이스들이 주어진 양의 시스템 메모리를 제공하기 위해 사용될 수 있다. 예들로서, 메모리 회로(1404)는, DDR 또는 모바일 DDR 표준들(예를 들어, LPDDR, LPDDR2, LPDDR3, 또는 LPDDR4), DRAM(dynamic RAM), 및/또는 SDRAM(synchronous DRAM))과 같은 JEDEC(Joint Electron Devices Engineering Council) 설계에 따른 RAM(random access memory)일 수 있다. 메모리 회로(1404)는 고속 전기적 소거가능 메모리(보통 "플래시 메모리(flash memory)"라고 지칭됨)와 같은 NVM(nonvolatile memory), PRAM(phase change RAM), MRAM(magnetoresistive random access memory)와 같은 저항성 메모리 등을 또한 포함할 수 있고, Intel® 및 Micron®으로부터의 3D(three-dimensional) XPOINT(cross-point) 메모리들을 또한 포함할 수 있다. 메모리 회로(1404)는, 이에 제한되는 것은 아니지만, 비-휘발성 메모리, 광학, 자기, 및/또는 솔리드 스테이트 대용량 저장소 등을 포함하는, 임의의 타입의 일시적 및/또는 영구적 저장소일 수 있는, 영구적 저장소 디바이스를 또한 포함할 수 있다.
메모리 회로(1404)의 개별 메모리 디바이스들은 솔더 다운 패키징된 집적 회로들, 소켓 메모리 모듈들, 및 플러그-인 메모리 카드들 중 하나 이상으로서 구현될 수 있다. 메모리 회로(1404)는 SDP(single die package), DDP(dual die package) 또는 Q17P(quad die package)와 같은 임의의 수의 상이한 패키지 타입들로서 구현될 수 있다. 이러한 디바이스는, 일부 예들에서, 더 낮은 프로파일 해결책을 제공하기 위해 마더보드 상에 직접 솔더링될 수 있는 반면, 다른 예들에서 디바이스들은 주어진 커넥터에 의해 마더보드에 차례로 연결되는 하나 이상의 메모리 모듈로서 구성된다. 다른 타입의 메모리 모듈들, 예를 들어, 이에 제한되는 것은 아니지만 microDIMM들 또는 MiniDIMM들을 포함하는 상이한 종류의 DIMM들(dual inline memory modules)과 같은, 임의의 수의 다른 메모리 구현들이 사용될 수 있다. 실시예들에서, 메모리 회로(1404)는 프로세서 회로(1402)와 동일한 다이 또는 패키지 내에 또는 상에 배치될 수 있다(예를 들어, 프로세서 회로(1402)와 동일한 SoC, 동일한 SiP, 또는 동일한 MCP 상에 납땜됨).
데이터, 애플리케이션들, OS(operating systems) 등과 같이 정보의 영구적인 저장소를 제공하기 위해, 저장 회로(1408)는 또한 인터커넥트(1406)를 통해 프로세서 회로(1402)에 연결될 수 있다. 예에서, 저장 회로(1408)는 SSDD(solid-state disk drive)를 통해 구현될 수 있다. 저장 회로(1408)에 사용될 수 있는 다른 디바이스들은 SD 카드들, microSD 카드들, xD 픽처 카드들 등과 같은 플래시 메모리 카드들, 및 USB 플래시 드라이브들을 포함한다. 저전력 구현들에서, 저장 회로(1408)는 프로세서 회로(1402)와 연관된 온-다이 메모리 또는 레지스터들일 수 있다. 그러나, 일부 예들에서, 저장 회로(1408)는 마이크로 HDD(hard disk drive)를 사용하여 구현될 수 있다. 추가로, 다른 것들 중에서도, 저항 변화 메모리들, 상 변화 메모리들, 홀로그래픽 메모리들, 또는 화학적 메모리들과 같은, 임의의 수의 신기술들이 설명된 기술들 외에도 또는 그 대신에 저장 회로(1408)로 사용될 수 있다.
저장 회로(1408)는 본 명세서에 설명되는 기술들을 구현하기 위해 소프트웨어, 펌웨어, 또는 하드웨어 커맨드들의 형태로 계산 로직(1483)(또는 "모듈들(1483)")을 저장한다. 계산 로직(1483)은 플랫폼(1400)의 다양한 컴포넌트들(예를 들어, 드라이버들 등), 플랫폼(1400)의 OS 및/또는 본 명세서에 논의되는 실시예들을 수행하기 위한 하나 이상의 애플리케이션의 동작을 위해, 컴퓨터 프로그램들의 작업 사본들 및/또는 영구적 사본들, 또는 컴퓨터 프로그램들을 생성하기 위한 데이터를 저장하기 위해 이용될 수 있다. 계산 로직(1483)은 본 명세서에 설명되는 기능들을 제공하기 위해 프로세서 회로(1402)에 의한 실행을 위해 명령어들(1482) 또는 명령어들(1482)을 생성하기 위한 데이터로서 메모리 회로(1404)에 저장되거나 또는 로딩될 수 있다. 다양한 엘리먼트들은 프로세서 회로(1402)에 의해 지원되는 어셈블러 명령어들 또는 이러한 명령어들(예를 들어, 명령어들(1470) 또는 명령어들(1470)을 생성하기 위한 데이터)로 컴파일될 수 있는 하이-레벨 언어들에 의해 구현될 수 있다. 프로그래밍 명령어들의 영구적 사본은, 예를 들어, 배포 매체(도시되지 않음)를 통해, 통신 인터페이스를 통해(예를 들어, 배포 서버(도시되지 않음)로부터), 또는 OTA(over-the-air)를 통해 공장에서 또는 현장에서 저장 회로(1408)의 영구적 저장소 디바이스들에 배치될 수 있다.
예에서, 도 14의 메모리 회로(1404) 및/또는 저장 회로(1408)를 통해 제공되는 명령어들(1482)은, 예를 들어, 이전에 묘사된 동작들 및 기능성의 흐름도(들) 및 블록도(들)에 관하여 설명된 바와 같이, 플랫폼(1400)에서 전자 동작들을 수행하라고 및/또는 특정 시퀀스 또는 흐름의 액션들을 수행하라고 플랫폼(1400)의 프로세서 회로(1402)에 지시하기 위해, 컴퓨터 프로그램 또는 데이터와 함께, 컴퓨터 프로그램을 생성하기 위한 프로그램 코드, 컴퓨터 프로그램 제품 또는 데이터를 포함하는 하나 이상의 비-일시적 컴퓨터 판독가능 저장 매체(예를 들어, NTCRSM(1460) 참조)로서 구현된다. 프로세서 회로(1402)는 인터커넥트(1406)를 통해 하나 이상의 비-일시적 컴퓨터 판독가능 저장 매체에 액세스한다.
대안적인 실시예들에서, 프로그래밍 명령어들(또는 명령어들을 생성하기 위한 데이터)이 다수의 NTCRSM(1460) 상에 배치될 수 있다. 대안적인 실시예들에서, 프로그래밍 명령어들(또는 명령어들을 생성하기 위한 데이터)가, 신호들과 같은, 컴퓨터-판독가능 일시적 저장 매체 상에 배치될 수 있다. 머신 판독가능 매체에 의해 구현되는 명령어들은 다수의 전송 프로토콜(예를 들어, HTTP) 중 어느 하나를 이용하는 네트워크 인터페이스 디바이스를 통해 송신 매체를 사용하여 통신 네트워크를 통해 추가로 송신 또는 수신될 수 있다. 하나 이상의 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는, 예를 들어 이에 제한되는 것은 아니지만, 하나 이상의 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 디바이스, 또는 전파 매체일 수 있다. 예를 들어, NTCRSM(1460)은 저장 회로(1408) 및/또는 메모리 회로(1404)에 대해 설명되는 디바이스들에 의해 구현될 수 있다. 컴퓨터-판독가능 매체의 더 많은 특정 예들(비-배타적 리스트)은 다음: 하나 이상의 배선을 갖는 전기 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(random access memory), ROM(read-only memory), 소거가능 프로그램가능 판독-전용 메모리(EPROM, 플래시 메모리 등), 광섬유, 휴대용 CD-ROM(compact disc read-only memory), 광학 저장소 디바이스 및/또는 광학 디스크들, 인터넷 또는 인트라넷을 지원하는 것들과 같은 송신 매체, 자기 저장소 디바이스, 또는 임의의 수의 다른 하드웨어 디바이스들을 포함할 것이다. 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는 심지어 종이 또는 프로그램(또는 프로그램을 생성하기 위한 데이터)이 인쇄되는 다른 적합한 매체일 수 있는데, 그 이유는 프로그램(또는 프로그램을 생성하기 위한 데이터)이, 예를 들어, 종이 또는 다른 매체의 광학적 스캐닝을 통해, 전자적으로 캡처될 수 있고, 다음으로, 필요하다면, 적합한 방식으로 컴파일링, 해석, 또는 다른 방식으로 처리되고, 다음으로 컴퓨터 메모리에 (하나 이상의 중간 저장 매체에 스테이징되거나 또는 되지 않고) 저장될 수 있기 때문이라는 점에 유의한다. 본 문서의 맥락에서, 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는, 명령어 실행 시스템, 장치, 또는 디바이스에 의한 사용을 위해 또는 그와 관련하여 프로그램(또는 프로그램을 생성하기 위한 데이터)을 포함, 저장, 통신, 전파, 또는 이송할 수 있는 임의의 매체일 수 있다. 컴퓨터-사용가능 매체는 기저대역에서 또는 반송파의 일부로서, 컴퓨터-사용가능 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)가 구현된 전파된 데이터 신호를 포함할 수 있다. 컴퓨터-사용가능 프로그램 코드(또는 프로그램을 생성하기 위한 데이터)는, 이에 제한되는 것은 아니지만 무선, 유선, 광섬유 케이블, RF 등을 포함하는 임의의 적절한 매체를 사용하여 송신될 수 있다.
다양한 실시예들에서, 본 명세서에 설명되는 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)는 압축된 포맷, 암호화된 포맷, 단편화된 포맷, 패키징된 포맷 등 중 하나 이상으로 저장될 수 있다. 본 명세서에 설명되는 바와 같은 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)는 이들을 컴퓨팅 디바이스 및/또는 다른 머신에 의해 직접 판독가능하고/하거나 또는 실행가능하게 하도록 설치, 수정, 적응, 업데이트, 조합, 보완, 구성, 해독, 압축 해제, 언패킹, 배포, 재할당 등 중 하나 이상을 요구할 수 있다. 예를 들어, 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)는 개별적으로 압축되고, 암호화되고, 별개의 컴퓨팅 디바이스들에 저장되는 다수의 부분들에 저장될 수 있고, 이러한 부분들은, 복호화, 압축해제, 및 연결될 때, 프로그램 코드(본 명세서에 설명되는 것과 같은 프로그램 코드를 생성하기 위한 데이터)를 구현하는 실행가능한 명령어들의 세트를 형성한다. 다른 예에서, 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)는 컴퓨터에 의해 판독될 수 있는 상태로 저장될 수 있지만, 특정 컴퓨팅 디바이스 또는 다른 디바이스 상에서 명령어들을 실행하기 위해 라이브러리(예를 들어, 동적 링크 라이브러리), SDK(software development kit), API(application programming interface) 등의 추가를 요구한다. 다른 예에서, 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)는 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)가 전체적으로 또는 부분적으로 실행/사용될 수 있기 전에 구성(예를 들어, 설정 저장, 데이터 입력, 네트워크 어드레스 기록 등)될 필요가 있을 수 있다. 이러한 예에서, 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)는 언패킹되고, 적절한 실행을 위해 구성되고, 제1 위치와 구별되는 제2 위치에 위치되는 구성 명령어들과 함께 제1 위치에 저장될 수 있다. 구성 명령어들은 개시된 기술들을 가능하게 하는 명령어들과 저장 또는 실행 위치에 공동-위치되지 않은 액션, 트리거, 또는 명령어에 의해 개시될 수 있다. 따라서, 개시된 프로그램 코드(또는 프로그램 코드를 생성하기 위한 데이터)는 저장되거나 또는 그렇지 않으면 휴지 상태이거나 또는 운송 중일 때 머신 판독가능 명령어들 및/또는 프로그램(들)의 특정 포맷 또는 상태에 관계없이 이러한 머신 판독가능 명령어들 및/또는 프로그램(들)(또는 이러한 머신 판독가능 명령어 및/또는 프로그램들을 생성하기 위한 데이터)을 포함하도록 의도된다.
본 개시내용의 동작들(예를 들어, 계산 로직(1483), 이전에 논의된 명령어들(1482, 1470))을 수행하기 위한 컴퓨터 프로그램 코드는, Python, Ruby, Scala, Smalltalk, JavaTM, C++, C# 등과 같은 객체 지향 프로그래밍 언어를 포함하는, 하나 이상의 프로그래밍 언어; "C" 프로그래밍 언어, Go(또는 "Golang") 프로그래밍 언어 등과 같은 프로시저형 프로그래밍 언어들; JavaScript, SSJS(Server-Side JavaScript), JQuery, PHP, Pearl, Python, Ruby on Rails, AMPscript(Accelerated Mobile Pages Script), Mustache Template Language, Handlebars Template Language, GTL(Guide Template Language), PHP, Java 및/또는 JSP(Java Server Pages), Node.js, ASP.NET, JAMscript 등과 같은 스크립팅 언어; HTML(Hypertext Markup Language), XML(Extensible Markup Language), JSON(Java Script Object Notion), Apex®, CSS(Cascading Stylesheets), JSP(JavaServer Pages), MessagePackTM, Apache® Thrift, ASN.1(Abstract Syntax Notation One), Google® protobuf(Protocol Buffers) 등과 같은 마크업 언어; 독점 프로그래밍 언어들 및/또는 개발 툴들, 또는 임의의 다른 언어 툴들을 포함하는 일부 다른 적합한 프로그래밍 언어들의 임의의 조합으로 기입될 수 있다. 본 개시내용의 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 본 명세서에 논의되는 프로그래밍 언어들의 임의의 조합으로 또한 기입될 수 있다. 프로그램 코드는 시스템(1400) 상에서 전체적으로, 독립형 소프트웨어 패키지로서 시스템(1400) 상에서 부분적으로, 시스템(1400) 상에서 부분적으로 그리고 원격 컴퓨터 상에서 부분적으로 또는 원격 컴퓨터 또는 서버 상에서 전체적으로 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 LAN 또는 WAN을 포함하는 임의의 타입의 네트워크를 통해 시스템(1400)에 접속될 수 있거나, 또는 접속은 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대해 이루어질 수 있다.
예에서, 프로세서 회로(1402) 상의 명령어들(1470)은 (컴퓨터 판독가능 저장 매체에 저장된 명령어들(1482) 및/또는 로직/모듈들(1483)과 별개로, 또는 조합하여) TEE(trusted execution environment)(1490)의 실행 또는 동작을 구성할 수 있다. TEE(1490)는 데이터로의 보안 액세스 및 명령어들의 보안 실행을 가능하게 하기 위해 프로세서 회로(1402)에 의해 액세스 가능한 보호 영역으로서 동작한다. 일부 실시예들에서, TEE(1490)는 보안-내장형 제어기, 전용 SoC, 또는 변조-방지 칩셋 또는 내장형 처리 디바이스들 및 메모리 디바이스들을 갖는 마이크로컨트롤러와 같은 시스템(1400)의 다른 컴포넌트들과 별개인 물리적 하드웨어 디바이스일 수 있다. 이러한 실시예들의 예들은 각각이 Intel® AMT(Active Management Technology) 및/또는 Intel® vProTM Technology와 관련하여 동작할 수 있는 DASH(Desktop and mobile Architecture Hardware) 준수 NIC(Network Interface Card), Intel® Management/Manageability Engine, Intel® CSE(Converged Security Engine) 또는 CSME(Converged Security Management/Manageability Engine), Intel®에 의해 제공되는 TXE(Trusted Execution Engine); AMD® PSP(Platform Security coProcessor), DASH 관리성을 갖는 AMD® PRO A-Series APU(Accelerated Processing Unit), Apple® Secure Enclave 코프로세서; IBM® Crypto Express3®, IBM® 4807, 4808, 4809, 및/또는 4765 Cryptographic Coprocessors, IPMI(Intelligent Platform Management Interface)를 갖는 IBM® BMC(Baseboard Management Controller), DRAC II(DellTM Remote Assistant Card II), iDRAC(integrated DellTM Remote Assistant Card) 등을 포함한다.
다른 실시예들에서, TEE(1490)는 시스템(1400)의 프로세서 및/또는 메모리/저장 회로 내의 코드 및/또는 데이터의 격리된 영역들인 보안 엔클레이브들로서 구현될 수 있다. 단지 보안 엔클레이브 내에서 실행되는 코드만이 동일한 보안 엔클레이브 내의 데이터에 액세스할 수 있고, 보안 엔클레이브는 보안 애플리케이션 프로그램(애플리케이션 프로세서 또는 변조-방지 마이크로컨트롤러에 의해 구현될 수 있음)만을 사용하여 단지 액세스가능할 수 있다. TEE(1490)의 다양한 구현들, 및 프로세서 회로(1402) 또는 메모리 회로(1404) 및/또는 저장 회로(1408)에서의 수반되는 보안 영역은, 예를 들어, Intel® SGX(Software Guard Extensions), ARM® TrustZone® 하드웨어 보안 확장들, Oasis LabsTM에 의해 제공되는 Keystone Enclaves 등의 사용을 통해 제공될 수 있다. 보안 강화, 하드웨어 신뢰-루트들, 및 신뢰 또는 보호 동작들의 다른 양태들이 TEE(1490) 및 프로세서 회로(1402)를 통해 디바이스(1400)에서 구현될 수 있다.
일부 실시예들에서, 메모리 회로(1404) 및/또는 저장 회로(1408)는 컨테이너들, 파티션들, VE들(virtual environments) 등과 같은 격리된 사용자-공간 인스턴스들로 분할될 수 있다. 격리된 사용자-공간 인스턴스들은 Docker® 컨테이너들, Kubernetes® 컨테이너들, Solaris® 컨테이너들 및/또는 구역들, OpenVZ® 가상 사설 서버들, DragonFly BSD® 가상 커널들 및/또는 제일들(jails), 크루트 제일들(chroot jails) 등과 같은 적합한 OS-레벨 가상화 기술을 사용하여 구현될 수 있다. 가상 머신들이 일부 구현들에서 또한 사용될 수 있다. 일부 실시예들에서, 메모리 회로(1404) 및/또는 저장 회로(1408)는 TEE(1490)의 애플리케이션들 또는 소프트웨어 모듈들을 저장하기 위한 하나 이상의 신뢰형 메모리 영역으로 분할될 수 있다.
명령어들(1482)이 메모리 회로(1404)에 포함된 코드 블록들로서 도시되고 계산 로직(1483)이 저장 회로(1408)에서의 코드 블록들로서 도시되더라도, 코드 블록들 중 임의의 것이, 예를 들어, FPGA, ASIC, 또는 일부 다른 적합한 회로에 내장된, 하드와이어드 회로들로 대체될 수 있다는 점이 이해되어야 한다. 예를 들어, 프로세서 회로(1402)가 (예를 들어, FPGA-기반) 하드웨어 가속기들뿐만 아니라 프로세서 코어들을 포함하는 경우, 하드웨어 가속기들(예를 들어, FPGA 셀들)은 (프로세서 코어(들)에 의해 실행될 프로그래밍 명령어들의 이용 대신에)이전에 논의된 기능들 중 일부 또는 전부를 수행하기 위해 전술된 계산 로직으로(예를 들어, 적절한 비트 스트림들로) 미리 구성될 수 있다.
메모리 회로(1404) 및/또는 저장 회로(1408)는, 범용 OS 또는 컴퓨팅 플랫폼(1400)에 구체적으로 기입되고 맞춤화된 OS일 수 있는, OS(operating system)의 프로그램 코드를 저장할 수 있다. 예를 들어, OS는 Unix 또는 Red Hat Enterprise에 의해 제공되는 Linux와 같은 Unix-like OS, Microsoft Corp.®에 의해 제공되는 Windows 10TM, Apple Inc.®에 의해 제공되는 macOS 등일 수 있다. 다른 예에서, OS는, Google Inc.®에 의해 제공되는 Android®, Apple Inc.®에 의해 제공되는 iOS®, Microsoft Corp.®에 의해 제공되는 Windows 10 Mobile®, KaiOS Technologies Inc.에 의해 제공되는 KaiOS 등과 같은, 모바일 OS일 수 있다. 다른 예에서, OS는, Apache Software Foundation®에 의해 제공되는 Apache Mynewt, Microsoft Corp.®에 의해 제공되는 Windows 10 For IoT®, Micrium®, Inc.에 의해 제공되는 Micro-Controller Operating Systems( "MicroC/OS" 또는 "μC/OS"), FreeRTOS, Wind River Systems, Inc.®에 의해 제공되는 VxWorks®, Sysgo AG®에 의해 제공되는 PikeOS, Google Inc.®에 의해 제공되는 Android Things®, BlackBerry Ltd.에 의해 제공되는 QNX® RTOS와 같은 RTOS(real-time OS), 또는 본 명세서에서 논의되는 것들과 같은, 임의의 다른 적합한 RTOS일 수 있다.
OS는 플랫폼(1400)에 내장되거나, 플랫폼(1400)에 부착되거나, 또는 그렇지 않으면 플랫폼(1400)과 통신가능하게 연결되는 특정 디바이스들을 제어하도록 동작하는 하나 이상의 드라이버를 포함할 수 있다. 드라이버들은 플랫폼(1400)의 다른 컴포넌트들이 플랫폼(1400) 내에 존재하거나 또는 플랫폼(1400)에 접속될 수 있는 다양한 I/O 디바이스들을 상호작용하거나 또는 제어하게 하는 개별 드라이버들을 포함할 수 있다. 예를 들어, 드라이버들은 디스플레이 디바이스를 제어하고 그에 대한 액세스를 허용하는 디스플레이 드라이버, 플랫폼(1400)의 터치스크린 인터페이스를 제어하고 그에 대한 액세스를 허용하는 터치스크린 드라이버, 센서 회로(1421)의 센서 판독치들을 획득하고 센서 회로(1421)에 대한 액세스를 제어하고 허용하는 센서 드라이버들, 액추에이터들(1422)의 액추에이터 위치들을 획득하고 및/또는 액추에이터들(1422)에 대한 액세스를 제어하고 허용하는 액추에이터 드라이버들, 내장형 이미지 캡처 디바이스에 대한 액세스를 제어하고 허용하는 카메라 드라이버, 하나 이상의 오디오 디바이스에 대한 액세스를 제어하고 허용하는 오디오 드라이버들을 포함할 수 있다. OS들은 또한 하나 이상의 애플리케이션이 플랫폼(1400)(도시되지 않음)의 보안 실행 환경, 신뢰형 실행 환경, 및/또는 관리 엔진으로부터 데이터를 획득하고 사용하기 위한 프로그램 코드 및/또는 소프트웨어 컴포넌트들을 제공하는 하나 이상의 라이브러리, 드라이버들, API들, 펌웨어, 미들웨어, 소프트웨어 글루 등을 포함할 수 있다.
컴포넌트들은 IX(1406)를 통해 통신할 수 있다. IX(1406)는 ISA, 확장된 ISA, I2C, SPI, 포인트-투-포인트 인터페이스들, PMBus(power management bus ), PCI, PCIe, PCIx, Intel® UPI, Intel® Accelerator Link, Intel® CXL, CAPI, OpenCAPI, Intel® QPI, UPI, Intel® OPA IX, RapidIOTM 시스템 IX들, CCIX, Gen-Z Consortium IX들, HyperTransport 인터커넥트, NVIDIA®에 의해 제공되는 NVLink, TTP(Time-Trigger Protocol) 시스템, FlexRay 시스템, 및/또는 임의의 수의 다른 IX 기술들을 포함하는, 임의의 수의 기술들을 포함할 수 있다. IX(1406)는 예를 들어, SoC-기반 시스템에서 사용되는 독점 버스일 수 있다.
인터커넥트(1406)는 다른 디바이스들과의 통신을 위해 프로세서 회로(1402)를 통신 회로(1409)에 연결한다. 통신 회로(1409)는, 하나 이상의 네트워크(예를 들어, 클라우드(1401))를 통해 및/또는 다른 디바이스(예를 들어, 메시 디바이스/포그(1464))와 통신하기 위해 사용되는 하드웨어 엘리먼트 또는 하드웨어 엘리먼트들의 집합이다. 통신 회로(1409)는 기저대역 회로(1410)(또는 "모뎀(1410)") 및 RF 회로(1411 및 1412)를 포함한다.
기저대역 회로(1410)는 다양한 프로토콜 및 무선 제어 기능들을 수행하기 위한 하나 이상의 처리 디바이스(예를 들어, 기저대역 프로세서들)를 포함한다. 기저대역 회로(1410)는 기저대역 신호들의 생성 및 처리를 위해 그리고 RF 회로(1411 또는 1412)의 동작들을 제어하기 위해 플랫폼(1400)의 애플리케이션 회로(예를 들어, 프로세서 회로(1402), 메모리 회로(1404), 및/또는 저장 회로(1408)의 조합)와 인터페이스할 수 있다. 기저대역 회로(1410)는 RF 회로(1411 또는 1412)를 통해 하나 이상의 무선 네트워크와의 통신을 가능하게 하는 다양한 무선 제어 기능들을 처리할 수 있다. 기저대역 회로(1410)는, 이에 제한되는 것은 아니지만, RF 회로(1411 및/또는 1412)의 수신 신호 경로로부터 수신되는 기저대역 신호들을 처리하고, 송신 신호 경로를 통해 RF 회로(1411 또는 1412)에 제공될 기저대역 신호들을 생성하는 하나 이상의 단일-코어 또는 멀티-코어 프로세서들(예를 들어, 하나 이상의 기저대역 프로세서) 또는 제어 로직과 같은 회로를 포함할 수 있다. 다양한 실시예들에서, 기저대역 회로(1410)는 기저대역 회로(1410)의 리소스들을 관리하고, 태스크들을 스케줄링하는 등을 위해 RTOS를 구현할 수 있다. RTOS의 예들은 Enea®에 의해 제공되는 OSE(Operating System Embedded)TM, Mentor Graphics®에 의해 제공되는 Nucleus RTOSTM, Mentor Graphics®에 의해 제공되는 VRTX(Versatile Real-Time Executive), Express Logic®에 의해 제공되는 ThreadXTM, FreeRTOS, Qualcomm®에 의해 제공되는 REX OS, OK(Open Kernel) Labs®에 의해 제공되는 OKL4, 또는 본 명세서에서 논의되는 것들과 같은 임의의 다른 적합한 RTOS를 포함할 수 있다.
도 14에 도시되지 않더라도, 하나의 실시예에서, 기저대역 회로(1410)는 하나 이상의 무선 통신 프로토콜(예를 들어, "멀티-프로토콜 기저대역 프로세서" 또는 "프로토콜 처리 회로 ")을 동작시키는 개별 처리 디바이스(들) 및 PHY 기능들을 구현하는 개별 처리 디바이스(들)를 포함한다. 이러한 실시예에서, 프로토콜 처리 회로는 하나 이상의 무선 통신 프로토콜의 다양한 프로토콜 레이어들/엔티티들을 동작시키거나 또는 구현한다. 제1 예에서, 프로토콜 처리 회로는 통신 회로(1409)가 mmWave(millimeter wave) 통신 회로 또는 일부 다른 적합한 셀룰러 통신 회로와 같은 셀룰러 무선주파수 통신 시스템일 때 LTE 프로토콜 엔티티들 및/또는 5G/NR 프로토콜 엔티티들을 동작시킬 수 있다. 제1 예에서, 프로토콜 처리 회로(1402)는 MAC, RLC, PDCP, SDAP, RRC, 및 NAS 기능들을 동작시킬 것이다. 제2 예에서, 프로토콜 처리 회로는 통신 회로(1409)가 WiFi 통신 시스템일 때 하나 이상의 IEEE-기반 프로토콜을 동작시킬 수 있다. 제2 예에서, 프로토콜 처리 회로는 WiFi MAC 및 LLC 기능들을 동작시킬 것이다. 프로토콜 처리 회로는 프로토콜 기능들을 동작시키기 위한 프로그램 코드 및 데이터를 저장하기 위한 하나 이상의 메모리 구조(도시되지 않음) 뿐만 아니라, 프로그램 코드를 실행하고 데이터를 사용하여 다양한 동작들을 수행하기 위한 하나 이상의 처리 코어(도시되지 않음)를 포함할 수 있다. 프로토콜 처리 회로는 기저대역 회로(1410) 및/또는 RF 회로(1411 및 1412)에 대한 제어 기능을 제공한다. 기저대역 회로(1410)는 또한 하나보다 많은 무선 프로토콜에 대한 무선 통신을 지원할 수 있다.
전술된 실시예를 계속하면, 기저대역 회로(1410)는 HARQ 기능들, 스크램블링 및/또는 디스크램블링, (인)코딩 및/또는 디코딩, 레이어 매핑 및/또는 디-매핑, 변조 심볼 매핑, 수신된 심볼 및/또는 비트 메트릭 결정, 공간-시간, 공간-주파수 또는 공간 코딩 중 하나 이상을 포함할 수 있는 다중-안테나 포트 프리코딩 및/또는 디코딩, 기준 신호 생성 및/또는 검출, 프리앰블 시퀀스 생성 및/또는 디코딩, 동기화 시퀀스 생성 및/또는 검출, 제어 채널 신호 블라인드 디코딩, 무선 주파수 시프팅, 및 다른 관련 기능들을 포함하는 PHY를 구현하기 위한 개별 처리 디바이스(들) 등을 포함한다. 변조/복조 기능성은 FFT(Fast-Fourier Transform), 프리코딩, 또는 성상도 매핑/디매핑 기능성을 포함할 수 있다. (인)코딩/디코딩 기능성은 컨볼루션, 테일-바이팅 컨볼루션, 터보, Viterbi, 또는 LDPC(Low Density Parity Check) 코딩을 포함할 수 있다. 변조/복조 및 인코더/디코더 기능성의 실시예들이 이러한 예들에 제한되는 것은 아니며, 다른 실시예들에서는 다른 적합한 기능성을 포함할 수 있다.
통신 회로(1409)는 또한 비-고체 매체를 통한 변조된 전자기 방사를 사용하여 무선 네트워크들과의 통신을 가능하게 하는 RF 회로(1411 및 1412)를 포함한다. RF 회로(1411 및 1412) 각각은, 아날로그 RF 신호(예를 들어, 기존의 또는 수신된 변조된 파형)를 기저대역 회로(1410)에 제공될 디지털 기저대역 신호로 변환하는 회로를 포함할 수 있는 수신 신호 경로를 포함한다. RF 회로(1411 및 1412) 각각은 또한, 기저대역 회로(1410)에 의해 제공된 디지털 기저대역 신호를, 하나 이상의 안테나 엘리먼트(도시되지 않음)를 포함하는 안테나 어레이를 통해 증폭되고 송신될 아날로그 RF 신호(예를 들어, 변조된 파형)로 변환되도록 변환하도록 구성된 회로를 포함할 수 있는 송신 신호 경로를 포함한다. 안테나 어레이는 하나 이상의 인쇄 회로 기판의 표면 상에 제조되는 복수의 마이크로스트립 안테나 또는 인쇄 안테나일 수 있다. 안테나 어레이는 다양한 형상의 금속 포일의 패치(예를 들어, 패치 안테나)로서 형성될 수 있고, 금속 송신 라인 등을 사용하여 RF 회로(1411 또는 1412)와 연결될 수 있다.
RF 회로(1411)( "메시 송수신기"이라고 또한 지칭됨)는 다른 메시 또는 포그 디바이스들(1464)과의 통신을 위해 사용된다. 메시 송수신기(1411)는, 다른 것들 중에서도, Bluetooth® Special Interest Group에 의해 정의되는 바와 같은, BLE(Bluetooth® low energy) 표준, 또는 ZigBee® 표준을 사용하는, IEEE 802.15.4 표준 하에서의 2.4 GHz 송신들과 같은, 임의의 수의 주파수들 및 프로토콜들을 사용할 수 있다. 특정한 무선 통신 프로토콜을 위해 구성된 임의의 수의 RF 회로(1411)가 메시 디바이스(1464)로의 접속에 사용될 수 있다. 예를 들어, IEEE 802.11 표준에 따라 WiFiTM 통신을 구현하기 위해 WLAN 유닛이 사용될 수 있다. 또한, 예를 들어, 셀룰러 또는 다른 무선 광역 프로토콜에 따른 무선 광역 통신들은 WWAN 유닛을 통해 발생할 수 있다.
메시 송수신기(1411)는 상이한 거리들에서의 통신을 위해 다수의 표준들 또는 무선들을 사용하여 통신할 수 있다. 예를 들어, 플랫폼(1400)은, 전력을 절감하기 위해, BLE에 기초하는 로컬 송수신기, 또는 다른 저전력 무선을 사용하여, 가까운/근접한 디바이스들과, 예를 들어, 약 10 미터 내에서 통신할 수 있다. 예를 들어, 약 50 미터 이내의, 더 멀리 떨어진 메시 디바이스들(1464)은 ZigBee 또는 다른 중간 전력 무선들을 통해 도달될 수 있다. 양자 모두의 통신 기술들은 상이한 전력 레벨들에서 단일 무선을 통해 이루어질 수 있거나, 또는, 별개의 송수신기들, 예를 들어, BLE를 사용하는 로컬 송수신기 및 ZigBee를 사용하는 별개의 메시 송수신기를 통해 이루어질 수 있다.
RF 회로(1412)( "무선 네트워크 송수신기(wireless network transceiver)", "클라우드 송수신기(cloud transceiver,)" 등이라고 또한 지칭됨)는 로컬 영역 또는 광역 네트워크 프로토콜들을 통해 클라우드(1401)에서의 디바이스들 또는 서비스들과 통신하기 위해 포함될 수 있다. 무선 네트워크 송수신기(1412)는 클라우드(1401)에서의 디바이스들과 통신하기 위해 하나 이상의 무선을 포함한다. 클라우드(1401)는 이전에 논의된 클라우드(144)와 동일하거나 또는 유사할 수 있다. 무선 네트워크 송수신기(1412)는, 본 명세서에 논의되는 것들과 같은, 다른 것들 중에서도, IEEE 802.15.4, 또는 IEEE 802.15.4g 표준들을 따르는 LPWA 송수신기일 수 있다. 플랫폼(1400)은 Semtech 및 LoRa Alliance에 의해 개발된 LoRaWANTM(Long Range Wide Area Network)을 사용하여 광역에 걸쳐 통신할 수 있다. 본 명세서에 설명되는 기술들은 이러한 기술들로 제한되지 않고, Sigfox와 같은, 장거리, 낮은 대역폭 통신, 및 다른 기술들을 구현하는 임의의 수의 다른 클라우드 송수신기들과 함께 사용될 수 있다. 추가로, IEEE 1002.15.4e 사양에서 설명되는, 시간-슬롯형 채널 호핑(time-slotted channel hopping)과 같은, 다른 통신 기술들이 사용될 수 있다.
본 명세서에 설명되는 바와 같은, 메시 송수신기(1411) 및 무선 네트워크 송수신기(1412)에 대해 언급된 시스템들 외에도 임의의 수의 다른 무선 통신 및 프로토콜들이 사용될 수 있다. 예를 들어, 무선 송수신기들(1411 및 1412)은 고속 통신을 구현하기 위해 확산 스펙트럼(SPA/SAS) 통신을 사용하는 LTE 또는 다른 셀룰러 송수신기를 포함할 수 있다. 추가로, 중간 속도 통신 및 네트워크 통신의 제공을 위한 WiFi® 네트워크와 같은 임의의 수의 다른 프로토콜이 사용될 수 있다.
송수신기들(1411 및 1412)은 이에 제한되는 것은 아니지만 본 명세서에 논의되는 것들을 포함하는 다음의 무선 통신 기술들 및/또는 표준들 중 임의의 하나 이상과 호환되고, 및/또는 이에 따라 동작할 수 있는 무선들을 포함할 수 있다.
NIC(network interface circuitry/controller)(1416)는 표준 네트워크 인터페이스 프로토콜을 사용하여 클라우드(1401)에 또는 메시 디바이스들(1464)과 같은 다른 디바이스들에 유선 통신을 제공하기 위해 포함될 수 있다. 표준 네트워크 인터페이스 프로토콜은 Ethernet, GRE Tunnel들을 통한 Ethernet, MPLS(Multiprotocol Label Switching)를 통한 Ethernet, USB를 통한 Ethernet를 포함할 수 있거나, 또는 많은 다른 것들 중에서도 특히, CAN(Controller Area Network), LIN(Local Interconnect Network), DeviceNet, ControlNet, Data Highway+, PROFIBUS, 또는 PROFINET와 같은, 다른 타입들의 네트워크 프로토콜들에 기초할 수 있다. 네트워크 접속성은 전기적(예를 들어, "구리 인터커넥트") 또는 광학적일 수 있는 물리적 접속을 사용하여 NIC(1416)를 통해 플랫폼(1400)에/으로부터 제공될 수 있다. 물리적 접속은 또한 적합한 입력 커넥터들(예를 들어, 포트들, 리셉터클들, 소켓들 등) 및 출력 커넥터들(예를 들어, 플러그들, 핀들 등)을 포함한다. NIC(1416)는 전술된 네트워크 인터페이스 프로토콜들 중 하나 이상을 사용하여 통신하기 위해 하나 이상의 전용 프로세서 및/또는 FPGA를 포함할 수 있다. 일부 구현들에서, NIC(1416)는 동일하거나 또는 상이한 프로토콜들을 사용하여 다른 네트워크들에 대한 연결을 제공하기 위해 다수의 제어기를 포함할 수 있다. 예를 들어, 플랫폼(1400)은 Ethernet를 통해 클라우드에 통신을 제공하는 제1 NIC(1416) 및 다른 타입의 네트워크를 통해 다른 디바이스들에 통신을 제공하는 제2 NIC(1416)를 포함할 수 있다.
컴퓨팅 플랫폼(1400)은, 하나 이상의 AI 가속기, 뉴럴 컴퓨팅 스틱(neural compute stick), 뉴로모픽 하드웨어(neuromorphic hardware), FPGA, GPU들의 배열, 하나 이상의 SoC, 하나 이상의 CPU, 하나 이상의 디지털 신호 프로세서, 전용 ASIC, 또는 하나 이상의 특수화된 태스크를 달성하도록 설계되는 다른 형식의 특수 프로세서들 또는 회로에 의해 구현될 수 있는, 가속 회로(1462)를 포함하거나 또는 이에 연결될 수 있다. 이러한 태스크들은 AI 처리(머신 학습, 훈련, 추론, 및 분류 동작들을 포함함), 시각 데이터 처리, 네트워크 데이터 처리, 객체 검출, 규칙 분석 등을 포함할 수 있다.
인터커넥트(1406)는 프로세서 회로(1402)를, 외부 디바이스 또는 서브시스템을 접속하기 위해 사용되는 외부 인터페이스(1418)( "I/O 인터페이스 회로(I/O interface circuitry)" 등이라고 또한 지칭됨)에 연결할 수 있다. 외부 디바이스들은, 그 중에서도, 센서 회로(1421), 액추에이터들(1422), 및 포지셔닝 회로(1445)를 포함한다.
센서 회로(1421)는 그 목적이 이벤트들 또는 그 환경에서의 변경들을 검출하고 검출된 이벤트들에 관한 정보(센서 데이터)를 일부 다른 디바이스, 모듈, 서브시스템 등에 전송하는 것인 디바이스들, 모듈들, 또는 서브시스템들을 포함할 수 있다. 이러한 센서들(1421)의 예들은, 그 중에서도, 가속도계들, 자이로스코프들, 및/또는 자력계들을 포함하는 IMU(inertia measurement units); 3-축 가속도계들, 3-축 자이로스코프들, 및/또는 자력계들을 포함하는 MEMS(microelectromechanical systems) 또는 NEMS(nanoelectromechanical systems); 레벨 센서들; 흐름 센서들; 온도 센서들(예를 들어, 서미스터들); 압력 센서들; 기압 센서들; 중력계들; 고도계들; 이미지 캡처 디바이스들(예를 들어, 카메라들); LiDAR(light detection and ranging) 센서들; 근접 센서들(예를 들어, 적외선 검출기 등), 깊이 센서들, 주변광 센서들, 초음파 송수신기들; 마이크로폰들; 등을 포함한다.
외부 인터페이스(1418)는 플랫폼(1400)을 액추에이터들(1422)에 접속하여, 플랫폼(1400)이 그 상태, 위치, 및/또는 배향을 변경하거나, 또는 메커니즘 또는 시스템을 이동 또는 제어하는 것을 허용한다. 액추에이터(1422)는 메커니즘 또는 시스템을 이동 또는 제어하기 위한 전기 및/또는 기계 디바이스를 포함하고, 에너지(예를 들어, 전류 또는 이동하는 공기 및/또는 액체)를 일부 종류의 모션으로 변환한다. 액추에이터들(1422)은, 압전 바이오모프들, 솔리드 스테이트 액추에이터들, SSR들(solid state relays), 형상-기억 합금-기반 액추에이터들, 전기활성 폴리머-기반 액추에이터들, 릴레이 드라이버 IC들(integrated circuits) 등과 같은, 하나 이상의 전자(또는 전기화학) 디바이스를 포함할 수 있다. 액추에이터들(1422)은 공압 액추에이터들, 유압 액추에이터들, EMR들(electromechanical relays)을 포함하는 전기기계 스위치들, 모터들(예를 들어, DC 모터들, 스테퍼 모터들, 서보메커니즘들 등), 휠들, 추력기들, 프로펠러들, 클로들, 클램프들, 후크들, 가청 사운드 발생기, 및/또는 다른 유사한 전기기계 컴포넌트들과 같은 하나 이상의 전기기계 디바이스를 포함할 수 있다. 플랫폼(1400)은 서비스 제공자 및/또는 다양한 클라이언트 시스템들로부터 수신된 하나 이상의 캡처된 이벤트 및/또는 명령어 또는 제어 신호에 기초하여 하나 이상의 액추에이터(1422)를 동작시키도록 구성될 수 있다.
포지셔닝 회로(1445)는 GNSS(global navigation satellite system)의 포지셔닝 네트워크에 의해 송신/브로드캐스팅된 신호들을 수신 및 디코딩하기 위한 회로를 포함한다. 내비게이션 위성 성상도들(또는 GNSS)의 예들은 미국의 GPS(Global Positioning System), 러시아의 GLONASS(Global Navigation System), 유럽 연합의 Galileo 시스템, 중국의 BeiDou Navigation Satellite System), 지역 내비게이션 시스템 또는 GNSS 증강 시스템(예를 들어, NAVIC(Navigation with Indian Constellation), 일본의 QZSS(Quasi-Zenith Satellite System), 프랑스의 DORIS(Doppler Orbitography and Radio-positioning Integrated by Satellite) 등) 등을 포함한다. 포지셔닝 회로(1445)는, 내비게이션 위성 성상도 노드들과 같은, 포지셔닝 네트워크의 컴포넌트들과 통신하기 위해 다양한 하드웨어 엘리먼트들(예를 들어, OTA 통신을 용이하게 하기 위해 스위치들, 필터들, 증폭기들, 안테나 엘리먼트들 등과 같은 하드웨어 디바이스들을 포함함)을 포함한다. 일부 실시예에서, 포지셔닝 회로(1445)는, GNSS 보조없이 위치 추적/추정을 수행하기 위해 마스터 타이밍 클록을 사용하는 Micro-PNT(Micro-Technology for Positioning, Navigation, and Timing) IC를 포함할 수 있다. 포지셔닝 회로(1445)는 또한 포지셔닝 네트워크의 노드들 및 컴포넌트들과 통신하기 위해 통신 회로(1409)의 일부이거나 또는 그와 상호작용할 수 있다. 포지셔닝 회로(1445)는 위치 데이터 및/또는 시간 데이터를 애플리케이션 회로에 또한 제공할 수 있고, 애플리케이션 회로는 턴-바이-턴 내비게이션 등을 위해, 다양한 인프라스트럭처(예를 들어, 무선 기지국들)와 동작들을 동기화시키기 위해 데이터를 사용할 수 있다. GNSS 신호가 이용가능하지 않을 때 또는 GNSS 위치 정확도가 특정의 애플리케이션 프로그램 또는 서비스에 충분하지 않을 때, 애플리케이션 프로그램 또는 서비스에 증강된 포지셔닝 정보 및 데이터를 제공하기 위해 포지셔닝 증강 기술이 사용될 수 있다. 이러한 포지셔닝 증강 기술은, 예를 들어, 위성 기반 포지셔닝 증강(예를 들어, EGNOS) 및/또는 지상 기반 포지셔닝 증강(예를 들어, DGPS)을 포함할 수 있다.
일부 구현들에서, 포지셔닝 회로(1445)는, 외부 참조들에 대한 필요성 없이 플랫폼(1400)의 위치, 배향, 및/또는 속도(이동의 방향 및 속도를 포함함)를(예를 들어, 추측 내비게이션(dead by dead reckoning), 삼각측량 등을 사용하여) 연속적으로 계산하기 위해 센서 회로(1421)(예를 들어, 가속도계들과 같은 모션 센서들, 자이로스코프들, 및 고도계들과 같은 회전 센서들, 자기 센서들 등)를 사용하는 시스템 또는 디바이스인, INS이거나, 또는 이를 포함한다.
일부 예들에서, 도 14에서 입력 디바이스 회로(1486) 및 출력 디바이스 회로(1484)로 지칭되는 다양한 I/O 디바이스들이 플랫폼(1400) 내에 존재하거나 또는 플랫폼에 접속될 수 있다. 입력 디바이스 회로(1486) 및 출력 디바이스 회로(1484)는 플랫폼(1400)과의 사용자 상호작용을 가능하게 하도록 설계되는 하나 이상의 사용자 인터페이스 및/또는 플랫폼(1400)과의 주변 컴포넌트 상호작용을 가능하게 하도록 설계되는 주변 컴포넌트 인터페이스를 포함한다. 입력 디바이스 회로(1486)는, 그 중에서도, 하나 이상의 물리적 또는 가상 버튼(예를 들어, 리셋 버튼), 물리적 키보드, 키패드, 마우스, 터치패드, 터치스크린, 마이크로폰, 스캐너, 헤드셋 등을 포함한, 입력을 수락하기 위한 임의의 물리적 또는 가상 수단을 포함할 수 있다.
출력 디바이스 회로(1484)는, 센서 판독치, 액추에이터 위치(들), 또는 다른 유사한 정보와 같은, 정보를 보여주거나 또는 다른 방식으로 정보를 전달하기 위해 포함될 수 있다. 출력 디바이스 회로(1484)의 하나 이상의 사용자 인터페이스 컴포넌트 상에 데이터 및/또는 그래픽이 디스플레이될 수 있다. 출력 디바이스 회로(1484)는, 그 중에서도, 하나 이상의 간단한 시각적 출력들/표시기들(예를 들어, 바이너리 상태 표시기들(예를 들어, LED들(light emitting diodes)) 및 멀티-캐릭터 시각적 출력들, 또는 디스플레이 디바이스들 또는 터치스크린들(예를 들어, LCD(Liquid Chrystal Displays), LED 디스플레이들, 양자점 디스플레이들, 프로젝터들 등)과 같은 더 복잡한 출력들을 포함하는, 오디오 또는 시각적 디스플레이의 임의의 수 및/또는 조합들을 포함할 수 있고, 캐릭터들, 그래픽들, 멀티미디어 객체들 등의 출력은 플랫폼(1400)의 동작으로부터 발생되거나 또는 생성된다. 출력 디바이스 회로(1484)는 스피커들 또는 다른 오디오 방출 디바이스들, 프린터(들) 등을 또한 포함할 수 있다. 일부 실시예들에서, 센서 회로(1421)는 입력 디바이스 회로(1486)(예를 들어, 이미지 캡처 디바이스, 모션 캡처 디바이스 등)로서 사용될 수 있으며, 하나 이상의 액추에이터(1422)는 출력 디바이스 회로(1484)(예를 들어, 햅틱 피드백을 제공하는 액추에이터 등)로서 사용될 수 있다. 다른 예에서, 안테나 엘리먼트와 연결되는 NFC 제어기 및 처리 디바이스를 포함하는 NFC(near-field communication) 회로가 전자 태그들을 판독하고 및/또는 다른 NFC-가능형 디바이스와 접속하기 위해 포함될 수 있다. 주변 컴포넌트 인터페이스들은 비-휘발성 메모리 포트, USB 포트, 오디오 잭, 전원 인터페이스 등을 포함할 수 있지만, 이에 제한되지 않는다.
배터리(1424)는 플랫폼(1400)에 전력을 공급하기 위해 플랫폼(1400)에 연결될 수 있으며, 이는 플랫폼(1400)이 고정된 위치에 있지 않은 실시예들에서 사용될 수 있다. 배터리(1424)는 리튬 이온 배터리, 납-산 자동차 배터리, 또는 아연-공기 배터리, 알루미늄-공기 배터리, 리튬-공기 배터리, 리튬 폴리머 배터리 등과 같은 금속-공기 배터리일 수 있다. 플랫폼(1400)이 고정된 위치에 장착되는 실시예들에서, 플랫폼(1400)은 전기 그리드에 연결되는 전원을 가질 수 있다. 이러한 실시예들에서, 플랫폼(1400)은 단일 케이블을 사용하여 플랫폼(1400)에 전원 및 데이터 접속성 양자 모두를 제공하기 위해 네트워크 케이블로부터 인출되는 전력을 제공하기 위한 전력 티 회로를 포함할 수 있다.
PMIC(1426)는 배터리(1424)의 SoCh(state of charge)를 추적하고 플랫폼(1400)의 충전을 제어하기 위해 플랫폼(1400)에 포함될 수 있다. PMIC(1426)는, 배터리(1424)의 SoH(state of health) 및 SoF(state of function)와 같은, 고장 예측들을 제공하기 위해 배터리(1424)의 다른 파라미터들을 모니터링하기 위해 사용될 수 있다. PMIC(1426)는 전압 조정기들, 서지 보호기들, 전력 경보 검출 회로를 포함할 수 있다. 전력 경보 검출 회로는 정전(부족-전압) 및 서지(과-전압) 조건들 중 하나 이상을 검출할 수 있다. PMIC(1426)는 배터리(1424) 상의 정보를 인터커넥트(1406)를 통해 프로세서 회로(1402)에 통신할 수 있다. PMIC(1426)는 프로세서 회로(1402)가 배터리(1424)의 전압 또는 배터리(1424)로부터의 전류 흐름을 직접 모니터링하는 것을 허용하는 ADC(analog-to-digital) 변환기를 또한 포함할 수 있다. 송신 주파수, 메시 네트워크 동작, 감지 주파수 등과 같은, 플랫폼(1400)이 수행할 수 있는 액션들을 결정하기 위해 배터리 파라미터들이 사용될 수 있다. 예로서, PMIC(1426)는, Linear Technologies로부터의 LTC4020 또는 LTC2990, Phoenix Arizona의 ON Semiconductor로부터의 ADT7488A, 또는 Dallas, TX의 Texas Instruments로부터의 UCD90xxx 계열로부터의 IC와 같은, 배터리 모니터링 집적 회로일 수 있다.
전력 블록(1428), 또는 그리드에 연결되는 다른 전원이, PMIC(1426)와 연결되어 배터리(1424)를 충전할 수 있다. 일부 예들에서, 전력 블록(1428)은, 예를 들어, 플랫폼(1400)에서의 루프 안테나를 통해 무선으로 전력을 획득하기 위해 무선 전력 수신기로 대체될 수 있다. 다른 것들 중에서도, Milpitas, California의 Linear Technologies로부터의 LTC4020 칩과 같은, 무선 배터리 충전 회로가 PMIC(1426)에 포함될 수 있다. 선택되는 특정 충전 회로들은 배터리(1424)의 크기, 그리고 따라서, 요구되는 전류에 의존한다. 충전은, 다른 것들 중에서도, Airfuel Alliance에 의해 공표된 Airfuel 표준, Wireless Power Consortium에 의해 공표된 Qi 무선 충전 표준, 또는 Alliance for Wireless Power에 의해 공표된 Rezence 충전 표준을 사용하여 수행될 수 있다.
본 개시내용 전반적으로 설명되는 기술들의 예시적인 예들이 아래에 제공된다. 이러한 기술들의 실시예들은 아래에 설명되는 예들 중 임의의 하나 이상 및 임의의 조합을 포함할 수 있다. 일부 실시예들에서, 이전 도면들 중 하나 이상에 제시된 시스템들 또는 컴포넌트들 중 적어도 하나는 다음의 예들에 제시되는 바와 같은 하나 이상의 동작, 기술, 프로세스, 및/또는 방법을 수행하도록 구성될 수 있다.
예 1은 네트워크 인터페이스 제어기를 포함하고, 이는, 송신을 위해 복수의 데이터 패킷들을 큐잉하는 복수의 패킷 송신 큐들- 복수의 데이터 패킷들은 복수의 트래픽 클래스들에 할당됨 -; 호스트 컴퓨팅 시스템의 메모리로부터 복수의 데이터 패킷들을 검색하기 위한 복수의 I/O(input/output) 인터페이스들- 복수의 I/O 인터페이스들의 각각의 I/O 인터페이스는 복수의 트래픽 클래스들 중 하나 이상에 할당됨 -; 메모리로부터 검색될 제1 데이터 패킷을 선택하는 스케줄러 회로- 제1 데이터 패킷은 복수의 데이터 패킷들로부터 선택될 것임 -; 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 복수의 I/O 인터페이스들 중 하나를 통해 메모리로부터 제1 데이터 패킷을 검색하는 DMA(direct memory access) 엔진 회로- DMA 엔진 회로는 제1 데이터 패킷을 복수의 패킷 송신 큐들 중 대응하는 패킷 송신 큐에 저장하는 것임 -; 및 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 네트워크를 통해 제1 데이터 패킷을 송신하는 송신 인터페이스를 포함한다.
예 2는 예 1의 네트워크 인터페이스 제어기를 포함하고, 복수의 I/O 인터페이스들은, 익스프레스 트래픽을 위한 제1 I/O 인터페이스; 및 최선-노력 트래픽을 위한 제2 I/O 인터페이스를 포함한다.
예 3은 예 2의 네트워크 인터페이스 제어기를 포함하고, 제1 I/O 인터페이스와 연관된 제1 판독 요청 큐- 제1 판독 요청 큐는 익스프레스 트래픽을 위한 것임 -; 및 제2 I/O 인터페이스와 연관된 제2 판독 요청 큐- 제2 판독 요청 큐는 최선-노력 트래픽을 위한 것임 -를 추가로 포함한다.
예 4는 예 1의 네트워크 인터페이스 제어기를 포함하고, 메모리로부터 검색될 제1 데이터 패킷을 선택하는 스케줄러 회로는 추가로, 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택한다.
예 5는 예 4의 네트워크 인터페이스 제어기를 포함하고, 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택하는 스케줄러 회로는 추가로, 제1 데이터 패킷의 대응하는 트래픽 클래스에 대한 프리페치 타이머에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택한다.
예 6은 예 5의 네트워크 인터페이스 제어기를 포함하고, 스케줄러는 복수의 트래픽 클래스들에 대한 복수의 프리페치 타이머들을 포함한다.
예 7은 예 4의 네트워크 인터페이스 제어기를 포함하고, 스케줄러 회로는 복수의 VLAN들(virtual local area networks)을 복수의 트래픽 클래스들에 매핑하는 매핑 레지스터를 포함하고, 복수의 VLAN들은 복수의 패킷 송신 큐들에 할당된다.
예 8은 예 1의 네트워크 인터페이스 제어기를 포함하고, DMA 엔진 회로는, 복수의 데이터 패킷들에 대응하는 복수의 디스크립터들을 검색하는 디스크립터 DMA 엔진; 및 복수의 디스크립터들에 대응하는 복수의 데이터 페이로드들을 검색하는 데이터 DMA 엔진을 포함한다.
예 9는 예 8의 네트워크 인터페이스 제어기를 포함하고, 트래픽 라우터를 추가로 포함하고, 트래픽 라우터는 복수의 I/O 인터페이스들을 포함하고, 트래픽 라우터는, 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 복수의 디스크립터들을 라우팅하고- 제1 가상 채널은 최선-노력 트래픽에 대응함 -; 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 복수의 데이터 페이로드들의 제1 서브세트를 라우팅하고- 제1 서브세트는 최선-노력 트래픽에 대응함 -; 호스트 컴퓨팅 시스템과 연관된 제2 가상 채널을 통해 복수의 데이터 페이로드들의 제2 서브세트를 라우팅한다- 제2 서브세트는 익스프레스 트래픽에 대응함 -.
예 10은 명령어들을 저장하고 있는 적어도 하나의 비-일시적 머신 판독가능 저장 매체를 포함하고, 명령어들은, 네트워크 인터페이스 제어기의 회로 상에서 실행될 때, 회로로 하여금, 네트워크 인터페이스 제어기의 스케줄러 회로에 의해, 호스트 컴퓨팅 시스템의 메모리로부터 검색될 제1 데이터 패킷을 선택하게- 제1 데이터 패킷은 네트워크 인터페이스 제어기의 복수의 패킷 송신 큐들에 대응하는 복수의 데이터 패킷들로부터 선택되는 것이고, 복수의 데이터 패킷들은 복수의 트래픽 클래스들에 할당됨 -; 네트워크 인터페이스 제어기의 DMA(direct memory access) 엔진 회로에 의해, 메모리로부터 제1 데이터 패킷을 검색하게- 제1 데이터 패킷은 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 네트워크 인터페이스 제어기의 복수의 I/O(input/output) 인터페이스들 중 하나를 통해 검색되는 것이고, 복수의 I/O 인터페이스들의 각각의 I/O 인터페이스는 복수의 트래픽 클래스들 중 하나 이상에 할당됨 -; DMA 엔진 회로에 의해, 제1 데이터 패킷을 복수의 패킷 송신 큐들 중 대응하는 패킷 송신 큐에 저장하게; 그리고 네트워크 인터페이스 제어기의 송신 인터페이스를 통해, 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 네트워크를 통해 제1 데이터 패킷을 송신하게 한다.
예 11은 예 10의 저장 매체를 포함하고, 복수의 I/O 인터페이스들은, 익스프레스 트래픽을 위한 제1 I/O 인터페이스; 및 최선-노력 트래픽을 위한 제2 I/O 인터페이스를 포함한다.
예 12는 예 10의 저장 매체를 포함하고, 스케줄러 회로로 하여금 메모리로부터 검색될 제1 데이터 패킷을 선택하게 하는 명령어들은 추가로 스케줄러 회로로 하여금, 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택하게 한다.
예 13은 예 12의 저장 매체를 포함하고, 스케줄러 회로로 하여금 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택하게 하는 명령어들은 추가로 스케줄러 회로로 하여금, 제1 데이터 패킷의 대응하는 트래픽 클래스에 대한 프리페치 타이머에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택하게 한다.
예 14는 예 10의 저장 매체를 포함하고, 명령어들은 추가로 회로로 하여금, DMA 엔진 회로의 디스크립터 DMA 엔진에 의해, 복수의 데이터 패킷들에 대응하는 복수의 디스크립터들을 검색하게; 그리고 DMA 엔진 회로의 데이터 DMA 엔진에 의해, 복수의 디스크립터들에 대응하는 복수의 데이터 페이로드들을 검색하게 한다.
예 15는 예 14의 저장 매체를 포함하고, 명령어들은 추가로 회로로 하여금, 네트워크 인터페이스 제어기의 트래픽 라우터에 의해, 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 복수의 디스크립터들을 라우팅하게- 제1 가상 채널은 최선-노력 트래픽에 대응함 -; 트래픽 라우터에 의해, 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 복수의 데이터 페이로드들의 제1 서브세트를 라우팅하게- 제1 서브세트는 최선-노력 트래픽에 대응함 -; 그리고, 트래픽 라우터에 의해, 호스트 컴퓨팅 시스템과 연관된 제2 가상 채널을 통해 복수의 데이터 페이로드들의 제2 서브세트를 라우팅하게- 제2 서브세트는 익스프레스 트래픽에 대응함 - 한다.
예 16은 네트워크 인터페이스 제어기에 의해 수행되는 방법을 포함하고, 이는, 네트워크 인터페이스 제어기의 스케줄러 회로에 의해, 호스트 컴퓨팅 시스템의 메모리로부터 검색될 제1 데이터 패킷을 선택하는 단계- 제1 데이터 패킷은 네트워크 인터페이스 제어기의 복수의 패킷 송신 큐들에 대응하는 복수의 데이터 패킷들로부터 선택되는 것이고, 복수의 데이터 패킷들은 복수의 트래픽 클래스들에 할당됨 -; 네트워크 인터페이스 제어기의 DMA(direct memory access) 엔진 회로에 의해, 메모리로부터 제1 데이터 패킷을 검색하는 단계- 제1 데이터 패킷은 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 네트워크 인터페이스 제어기의 복수의 I/O(input/output) 인터페이스들 중 하나를 통해 검색되는 것이고, 복수의 I/O 인터페이스들의 각각의 I/O 인터페이스는 복수의 트래픽 클래스들 중 하나 이상에 할당됨 -; DMA 엔진 회로에 의해, 제1 데이터 패킷을 복수의 패킷 송신 큐들 중 대응하는 패킷 송신 큐에 저장하는 단계; 및 네트워크 인터페이스 제어기의 송신 인터페이스를 통해, 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 네트워크를 통해 제1 데이터 패킷을 송신하는 단계를 포함한다.
예 17은 예 16의 방법을 포함하고, 복수의 I/O 인터페이스들은, 익스프레스 트래픽을 위한 제1 I/O 인터페이스; 및 최선-노력 트래픽을 위한 제2 I/O 인터페이스를 포함한다.
예 18은 예 16의 방법을 포함하고, 스케줄러 회로에 의해, 메모리로부터 검색될 제1 데이터 패킷을 선택하는 단계는, 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택하는 단계를 포함한다.
예 19는 예 18의 방법을 포함하고, 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택하는 단계는, 제1 데이터 패킷의 대응하는 트래픽 클래스에 대한 프리페치 타이머에 기초하여 복수의 데이터 패킷들로부터 제1 데이터 패킷을 선택하는 단계를 포함한다.
예 20은 예 16의 방법을 포함하고, DMA 엔진 회로의 디스크립터 DMA 엔진에 의해, 복수의 데이터 패킷들에 대응하는 복수의 디스크립터들을 검색하는 단계; 및, DMA 엔진 회로의 데이터 DMA 엔진에 의해, 복수의 디스크립터들에 대응하는 복수의 데이터 페이로드들을 검색하는 단계를 추가로 포함한다.
예 21은 예 20의 방법을 포함하고, 네트워크 인터페이스 제어기의 트래픽 라우터에 의해, 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 복수의 디스크립터들을 라우팅하는 단계- 제1 가상 채널은 최선-노력 트래픽에 대응함 -; 트래픽 라우터에 의해, 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 복수의 데이터 페이로드들의 제1 서브세트를 라우팅하는 단계- 제1 서브세트는 최선-노력 트래픽에 대응함 -; 그리고, 트래픽 라우터에 의해, 호스트 컴퓨팅 시스템과 연관된 제2 가상 채널을 통해 복수의 데이터 페이로드들의 제2 서브세트를 라우팅하는 단계- 제2 서브세트는 익스프레스 트래픽에 대응함 -를 추가로 포함한다.
예 22는 네트워크를 통해 복수의 데이터 패킷들을 송신하기 위한 컴퓨팅 디바이스를 포함하고, 이는, 호스트 프로세서; 메모리; 네트워크 인터페이스 제어기를 포함하고, 네트워크 인터페이스 제어기는, 송신을 위해 복수의 데이터 패킷들을 큐잉하는 복수의 패킷 송신 큐들- 복수의 데이터 패킷들은 복수의 트래픽 클래스들에 할당됨 -; 메모리로부터 복수의 데이터 패킷들을 검색하기 위한 복수의 I/O(input/output) 인터페이스들- 복수의 I/O 인터페이스들의 각각의 I/O 인터페이스는 복수의 트래픽 클래스들 중 하나 이상에 할당됨 -; 메모리로부터 검색될 제1 데이터 패킷을 선택하는 스케줄러 회로- 제1 데이터 패킷은 복수의 데이터 패킷들로부터 선택될 것임 -; 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 복수의 I/O 인터페이스들 중 하나를 통해 메모리로부터 제1 데이터 패킷을 검색하는 DMA(direct memory access) 엔진 회로- DMA 엔진 회로는 제1 데이터 패킷을 복수의 패킷 송신 큐들 중 대응하는 패킷 송신 큐에 저장하는 것임 -; 및 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 네트워크를 통해 제1 데이터 패킷을 송신하는 송신 인터페이스를 포함한다.
예 23은 예 22의 컴퓨팅 디바이스를 포함하고, 복수의 I/O 인터페이스들은, 익스프레스 트래픽을 위한 제1 I/O 인터페이스; 및 최선-노력 트래픽을 위한 제2 I/O 인터페이스를 포함한다.
예 24는 예 23의 컴퓨팅 디바이스를 포함하고, 네트워크 인터페이스 제어기는, 제1 I/O 인터페이스와 연관된 제1 판독 요청 큐를- 제1 판독 요청 큐는 익스프레스 트래픽을 위한 것임 -; 및 제2 I/O 인터페이스와 연관된 제2 판독 요청 큐- 제2 판독 요청 큐는 최선-노력 트래픽을 위한 것임 -를 추가로 포함한다.
예 25는 예 22의 컴퓨팅 디바이스를 포함하고, DMA 엔진 회로는, 복수의 데이터 패킷들에 대응하는 복수의 디스크립터들을 검색하는 디스크립터 DMA 엔진; 및 복수의 디스크립터들에 대응하는 복수의 데이터 페이로드들을 검색하는 데이터 DMA 엔진을 포함한다.
예 26은 예 25의 컴퓨팅 디바이스를 포함하고, 네트워크 인터페이스 제어기는 트래픽 라우터를 추가로 포함하고, 트래픽 라우터는 복수의 I/O 인터페이스들을 포함하고, 트래픽 라우터는, 컴퓨팅 디바이스와 연관된 제1 가상 채널을 통해 복수의 디스크립터들을 라우팅하고- 제1 가상 채널은 최선-노력 트래픽에 대응함 -; 컴퓨팅 디바이스와 연관된 제1 가상 채널을 통해 복수의 데이터 페이로드들의 제1 서브세트를 라우팅하고- 제1 서브세트는 최선-노력 트래픽에 대응함 -; 및 컴퓨팅 디바이스와 연관된 제2 가상 채널을 통해 복수의 데이터 페이로드들의 제2 서브세트를 라우팅한다- 제2 서브세트는 익스프레스 트래픽에 대응함 -.
예 27은 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 수단을 포함하는 장치를 포함한다.
예 28은 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 로직, 모듈들, 또는 회로를 포함하는 장치를 포함한다.
예 29는 전자 디바이스로 하여금, 전자 디바이스의 하나 이상의 프로세서에 의한 명령어들의 실행 시에, 예 16 내지 예 21 중 어느 하나의 방법을 구현하게 하는 명령어들을 포함하는 하나 이상의 비-일시적 컴퓨터 판독가능 매체를 포함한다.
예 30은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금 예 16 내지 예 21 중 어느 하나의 방법을 구현하게 하는 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 매체를 포함하는 장치를 포함한다.
예 31은 명령어들을 포함하는 컴퓨터 프로그램을 포함하고, 처리 엘리먼트에 의한 이러한 프로그램의 실행은 처리 엘리먼트로 하여금 예 16 내지 예 21 중 어느 하나의 방법을 구현하게 하는 것이다.
예 32는 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 회로를 포함하는 모바일 디바이스를 포함한다.
예 33은 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 회로를 포함하는 사용자 장비 디바이스를 포함한다.
예 34는 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 회로를 포함하는 클라이언트 컴퓨팅 디바이스 또는 최종 사용자 디바이스를 포함한다.
예 35는 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 회로를 포함하는 미디어 스트리밍 디바이스 또는 서버를 포함한다.
예 36은 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 회로를 포함하는 콘텐츠 전달 서버 또는 네트워크를 포함한다.
예 37은 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 노드들을 포함하는 무선 통신 시스템을 포함한다.
예 38은 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 액세스 포인트를 포함한다.
예 39는 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 기지국을 포함한다.
예 40은 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 회로를 포함하는 클라우드 컴퓨팅 시스템, 클라우드 서버, 또는 클라우드 노드를 포함한다.
예 41은 예 16 내지 예 21 중 어느 하나의 방법을 구현하는 회로를 포함하는 에지 컴퓨팅 시스템, 에지 서버, 또는 에지 노드를 포함한다.
많은 다른 변경들, 대체들, 변형들, 개조들, 및 수정들이 본 기술분야의 통상의 기술자에게 확인될 수 있으며, 본 개시내용은 첨부된 청구항들의 범위 내에 속하는 이러한 모든 변경들, 대체들, 변형들, 개조들, 및 수정들을 포함하는 것으로 의도된다.

Claims (25)

  1. 네트워크 인터페이스 제어기로서,
    송신을 위해 복수의 데이터 패킷들을 큐잉하는 복수의 패킷 송신 큐들- 상기 복수의 데이터 패킷들은 복수의 트래픽 클래스들에 할당됨 -;
    호스트 컴퓨팅 시스템의 메모리로부터 상기 복수의 데이터 패킷들을 검색하기 위한 복수의 I/O(input/output) 인터페이스들- 상기 복수의 I/O 인터페이스들의 각각의 I/O 인터페이스는 상기 복수의 트래픽 클래스들 중 하나 이상에 할당됨 -;
    상기 메모리로부터 검색될 제1 데이터 패킷을 선택하는 스케줄러 회로- 상기 제1 데이터 패킷은 상기 복수의 데이터 패킷들로부터 선택될 것임 -;
    상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 복수의 I/O 인터페이스들 중 하나를 통해 상기 메모리로부터 상기 제1 데이터 패킷을 검색하는 DMA(direct memory access) 엔진 회로- 상기 DMA 엔진 회로는 상기 제1 데이터 패킷을 상기 복수의 패킷 송신 큐들 중 대응하는 패킷 송신 큐에 저장하는 것임 -; 및
    상기 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 네트워크를 통해 상기 제1 데이터 패킷을 송신하는 송신 인터페이스를 포함하는 네트워크 인터페이스 제어기.
  2. 제1항에 있어서, 상기 복수의 I/O 인터페이스들은,
    익스프레스 트래픽을 위한 제1 I/O 인터페이스; 및
    최선-노력 트래픽을 위한 제2 I/O 인터페이스를 포함하는 네트워크 인터페이스 제어기.
  3. 제2항에 있어서,
    상기 제1 I/O 인터페이스와 연관된 제1 판독 요청 큐- 상기 제1 판독 요청 큐는 익스프레스 트래픽을 위한 것임 -; 및
    상기 제2 I/O 인터페이스와 연관된 제2 판독 요청 큐- 상기 제2 판독 요청 큐는 최선-노력 트래픽을 위한 것임 -를 추가로 포함하는 네트워크 인터페이스 제어기.
  4. 제1항에 있어서, 상기 메모리로부터 검색될 상기 제1 데이터 패킷을 선택하는 상기 스케줄러 회로는 추가로,
    상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 복수의 데이터 패킷들로부터 상기 제1 데이터 패킷을 선택하는 네트워크 인터페이스 제어기.
  5. 제4항에 있어서, 상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 복수의 데이터 패킷들로부터 상기 제1 데이터 패킷을 선택하는 상기 스케줄러 회로는 추가로,
    상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 대한 프리페치 타이머에 기초하여 상기 복수의 데이터 패킷들로부터 상기 제1 데이터 패킷을 선택하는 네트워크 인터페이스 제어기.
  6. 제5항에 있어서, 상기 스케줄러는 상기 복수의 트래픽 클래스들에 대한 복수의 프리페치 타이머들을 포함하는 네트워크 인터페이스 제어기.
  7. 제4항에 있어서, 상기 스케줄러 회로는 복수의 VLAN들(virtual local area networks)을 상기 복수의 트래픽 클래스들에 매핑하는 매핑 레지스터를 포함하고, 상기 복수의 VLAN들은 상기 복수의 패킷 송신 큐들에 할당되는 네트워크 인터페이스 제어기.
  8. 제1항에 있어서, 상기 DMA 엔진 회로는,
    상기 복수의 데이터 패킷들에 대응하는 복수의 디스크립터들을 검색하는 디스크립터 DMA 엔진; 및
    상기 복수의 디스크립터들에 대응하는 복수의 데이터 페이로드들을 검색하는 데이터 DMA 엔진을 포함하는 네트워크 인터페이스 제어기.
  9. 제8항에 있어서, 트래픽 라우터를 추가로 포함하고, 상기 트래픽 라우터는 복수의 I/O 인터페이스들을 포함하고, 상기 트래픽 라우터는,
    상기 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 상기 복수의 디스크립터들을 라우팅하고- 상기 제1 가상 채널은 최선-노력 트래픽에 대응함 -;
    상기 호스트 컴퓨팅 시스템과 연관된 상기 제1 가상 채널을 통해 상기 복수의 데이터 페이로드들의 제1 서브세트를 라우팅하고- 상기 제1 서브세트는 최선-노력 트래픽에 대응함 -;
    상기 호스트 컴퓨팅 시스템과 연관된 제2 가상 채널을 통해 상기 복수의 데이터 페이로드들의 제2 서브세트를 라우팅하는- 상기 제2 서브세트는 익스프레스 트래픽에 대응함 - 네트워크 인터페이스 제어기.
  10. 명령어들을 저장하고 있는 적어도 하나의 비-일시적 머신 판독가능 저장 매체로서, 상기 명령어들은, 네트워크 인터페이스 제어기의 회로 상에서 실행될 때, 상기 회로로 하여금,
    상기 네트워크 인터페이스 제어기의 스케줄러 회로에 의해, 호스트 컴퓨팅 시스템의 메모리로부터 검색될 제1 데이터 패킷을 선택하게- 상기 제1 데이터 패킷은 상기 네트워크 인터페이스 제어기의 복수의 패킷 송신 큐들에 대응하는 복수의 데이터 패킷들로부터 선택되는 것이고, 상기 복수의 데이터 패킷들은 복수의 트래픽 클래스들에 할당됨 -;
    상기 네트워크 인터페이스 제어기의 DMA(direct memory access) 엔진 회로에 의해, 상기 메모리로부터 상기 제1 데이터 패킷을 검색하게- 상기 제1 데이터 패킷은 상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 네트워크 인터페이스 제어기의 복수의 I/O(input/output) 인터페이스들 중 하나를 통해 검색되는 것이고, 상기 복수의 I/O 인터페이스들의 각각의 I/O 인터페이스는 상기 복수의 트래픽 클래스들 중 하나 이상에 할당됨 -;
    상기 DMA 엔진 회로에 의해, 상기 제1 데이터 패킷을 상기 복수의 패킷 송신 큐들 중 대응하는 패킷 송신 큐에 저장하게; 그리고
    상기 네트워크 인터페이스 제어기의 송신 인터페이스를 통해, 상기 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 네트워크를 통해 상기 제1 데이터 패킷을 송신하게 하는 저장 매체.
  11. 제10항에 있어서, 상기 복수의 I/O 인터페이스들은,
    익스프레스 트래픽을 위한 제1 I/O 인터페이스; 및
    최선-노력 트래픽을 위한 제2 I/O 인터페이스를 포함하는 저장 매체.
  12. 제10항에 있어서, 상기 스케줄러 회로로 하여금 상기 메모리로부터 검색될 상기 제1 데이터 패킷을 선택하게 하는 상기 명령어들은 추가로 상기 스케줄러 회로로 하여금,
    상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 복수의 데이터 패킷들로부터 상기 제1 데이터 패킷을 선택하게 하는 저장 매체.
  13. 제12항에 있어서, 상기 스케줄러 회로로 하여금 상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 복수의 데이터 패킷들로부터 상기 제1 데이터 패킷을 선택하게 하는 상기 명령어들은 추가로 상기 스케줄러 회로로 하여금,
    상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 대한 프리페치 타이머에 기초하여 상기 복수의 데이터 패킷들로부터 상기 제1 데이터 패킷을 선택하게 하는 저장 매체.
  14. 제10항에 있어서, 상기 명령어들은 추가로 상기 회로로 하여금,
    상기 DMA 엔진 회로의 디스크립터 DMA 엔진에 의해, 상기 복수의 데이터 패킷들에 대응하는 복수의 디스크립터들을 검색하게; 그리고
    상기 DMA 엔진 회로의 데이터 DMA 엔진에 의해, 상기 복수의 디스크립터들에 대응하는 복수의 데이터 페이로드들을 검색하게 하는 저장 매체.
  15. 제14항에 있어서, 상기 명령어들은 추가로 상기 회로로 하여금,
    상기 네트워크 인터페이스 제어기의 트래픽 라우터에 의해, 상기 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 상기 복수의 디스크립터들을 라우팅하게- 상기 제1 가상 채널은 최선-노력 트래픽에 대응함 -;
    상기 트래픽 라우터에 의해, 상기 호스트 컴퓨팅 시스템과 연관된 상기 제1 가상 채널을 통해 상기 복수의 데이터 페이로드들의 제1 서브세트를 라우팅하게- 상기 제1 서브세트는 최선-노력 트래픽에 대응함 -; 그리고
    상기 트래픽 라우터에 의해, 상기 호스트 컴퓨팅 시스템과 연관된 제2 가상 채널을 통해 상기 복수의 데이터 페이로드들의 제2 서브세트를 라우팅하게- 상기 제2 서브세트는 익스프레스 트래픽에 대응함 - 하는 저장 매체.
  16. 네트워크 인터페이스 제어기에 의해 수행되는 방법으로서,
    상기 네트워크 인터페이스 제어기의 스케줄러 회로에 의해, 호스트 컴퓨팅 시스템의 메모리로부터 검색될 제1 데이터 패킷을 선택하는 단계- 상기 제1 데이터 패킷은 상기 네트워크 인터페이스 제어기의 복수의 패킷 송신 큐들에 대응하는 복수의 데이터 패킷들로부터 선택되는 것이고, 상기 복수의 데이터 패킷들은 복수의 트래픽 클래스들에 할당됨 -;
    상기 네트워크 인터페이스 제어기의 DMA(direct memory access) 엔진 회로에 의해, 상기 메모리로부터 상기 제1 데이터 패킷을 검색하는 단계- 상기 제1 데이터 패킷은 상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 네트워크 인터페이스 제어기의 복수의 I/O(input/output) 인터페이스들 중 하나를 통해 검색되는 것이고, 상기 복수의 I/O 인터페이스들의 각각의 I/O 인터페이스는 상기 복수의 트래픽 클래스들 중 하나 이상에 할당됨 -;
    상기 DMA 엔진 회로에 의해, 상기 제1 데이터 패킷을 상기 복수의 패킷 송신 큐들 중 대응하는 패킷 송신 큐에 저장하는 단계; 및
    상기 네트워크 인터페이스 제어기의 송신 인터페이스를 통해, 상기 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 네트워크를 통해 상기 제1 데이터 패킷을 송신하는 단계를 포함하는 방법.
  17. 제16항에 있어서, 상기 복수의 I/O 인터페이스들은,
    익스프레스 트래픽을 위한 제1 I/O 인터페이스; 및
    최선-노력 트래픽을 위한 제2 I/O 인터페이스를 포함하는 방법.
  18. 제16항에 있어서, 상기 스케줄러 회로에 의해, 상기 메모리로부터 검색될 상기 제1 데이터 패킷을 선택하는 단계는,
    상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 복수의 데이터 패킷들로부터 상기 제1 데이터 패킷을 선택하는 단계를 포함하는 방법.
  19. 제16항에 있어서,
    상기 DMA 엔진 회로의 디스크립터 DMA 엔진에 의해, 상기 복수의 데이터 패킷들에 대응하는 복수의 디스크립터들을 검색하는 단계; 및
    상기 DMA 엔진 회로의 데이터 DMA 엔진에 의해, 상기 복수의 디스크립터들에 대응하는 복수의 데이터 페이로드들을 검색하는 단계를 추가로 포함하는 방법.
  20. 제19항에 있어서,
    상기 네트워크 인터페이스 제어기의 트래픽 라우터에 의해, 상기 호스트 컴퓨팅 시스템과 연관된 제1 가상 채널을 통해 상기 복수의 디스크립터들을 라우팅하는 단계- 상기 제1 가상 채널은 최선-노력 트래픽에 대응함 -;
    상기 트래픽 라우터에 의해, 상기 호스트 컴퓨팅 시스템과 연관된 상기 제1 가상 채널을 통해 상기 복수의 데이터 페이로드들의 제1 서브세트를 라우팅하는 단계- 상기 제1 서브세트는 최선-노력 트래픽에 대응함 -; 및
    상기 트래픽 라우터에 의해, 상기 호스트 컴퓨팅 시스템과 연관된 제2 가상 채널을 통해 상기 복수의 데이터 페이로드들의 제2 서브세트를 라우팅하는 단계- 상기 제2 서브세트는 익스프레스 트래픽에 대응함 -를 추가로 포함하는 방법.
  21. 네트워크를 통해 복수의 데이터 패킷들을 송신하기 위한 컴퓨팅 디바이스로서,
    호스트 프로세서,
    메모리; 및
    네트워크 인터페이스 제어기를 포함하고, 상기 네트워크 인터페이스 제어기는,
    송신을 위해 상기 복수의 데이터 패킷들을 큐잉하는 복수의 패킷 송신 큐들- 상기 복수의 데이터 패킷들은 복수의 트래픽 클래스들에 할당됨 -;
    상기 메모리로부터 상기 복수의 데이터 패킷들을 검색하기 위한 복수의 I/O(input/output) 인터페이스들- 상기 복수의 I/O 인터페이스들의 각각의 I/O 인터페이스는 상기 복수의 트래픽 클래스들 중 하나 이상에 할당됨 -;
    상기 메모리로부터 검색될 제1 데이터 패킷을 선택하는 스케줄러 회로- 상기 제1 데이터 패킷은 상기 복수의 데이터 패킷들로부터 선택될 것임 -;
    상기 제1 데이터 패킷의 대응하는 트래픽 클래스에 기초하여 상기 복수의 I/O 인터페이스들 중 하나를 통해 상기 메모리로부터 상기 제1 데이터 패킷을 검색하는 DMA(direct memory access) 엔진 회로- 상기 DMA 엔진 회로는 상기 제1 데이터 패킷을 상기 복수의 패킷 송신 큐들 중 대응하는 패킷 송신 큐에 저장하는 것임 -; 및
    상기 스케줄러 회로에 의해 표시되는 대응하는 착수 시간에 상기 네트워크를 통해 상기 제1 데이터 패킷을 송신하는 송신 인터페이스를 포함하는 컴퓨팅 디바이스.
  22. 제21항에 있어서, 상기 복수의 I/O 인터페이스들은,
    익스프레스 트래픽을 위한 제1 I/O 인터페이스; 및
    최선-노력 트래픽을 위한 제2 I/O 인터페이스를 포함하는 컴퓨팅 디바이스.
  23. 제22항에 있어서, 상기 네트워크 인터페이스 제어기는,
    상기 제1 I/O 인터페이스와 연관된 제1 판독 요청 큐- 상기 제1 판독 요청 큐는 익스프레스 트래픽을 위한 것임 -; 및
    상기 제2 I/O 인터페이스와 연관된 제2 판독 요청 큐- 상기 제2 판독 요청 큐는 최선-노력 트래픽을 위한 것임 -를 추가로 포함하는 컴퓨팅 디바이스.
  24. 제21항에 있어서, 상기 DMA 엔진 회로는,
    상기 복수의 데이터 패킷들에 대응하는 복수의 디스크립터들을 검색하는 디스크립터 DMA 엔진; 및
    상기 복수의 디스크립터들에 대응하는 복수의 데이터 페이로드들을 검색하는 데이터 DMA 엔진을 포함하는 컴퓨팅 디바이스.
  25. 제24항에 있어서, 상기 네트워크 인터페이스 제어기는 트래픽 라우터를 추가로 포함하고, 상기 트래픽 라우터는 복수의 I/O 인터페이스들을 포함하고, 상기 트래픽 라우터는,
    상기 컴퓨팅 디바이스와 연관된 제1 가상 채널을 통해 상기 복수의 디스크립터들을 라우팅하고, 상기 제1 가상 채널은 최선-노력 트래픽에 대응함 -;
    상기 컴퓨팅 디바이스와 연관된 상기 제1 가상 채널을 통해 상기 복수의 데이터 페이로드들의 제1 서브세트를 라우팅하고- 상기 제1 서브세트는 최선-노력 트래픽에 대응함 -;
    상기 컴퓨팅 디바이스와 연관된 제2 가상 채널을 통해 상기 복수의 데이터 페이로드들의 제2 서브세트를 라우팅하는- 상기 제2 서브세트는 익스프레스 트래픽에 대응함 - 컴퓨팅 디바이스.
KR1020210112823A 2020-09-26 2021-08-26 시간 민감형 네트워킹을 위한 결정론적 패킷 스케줄링 및 dma KR20220042044A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/033,722 2020-09-26
US17/033,722 US20210014177A1 (en) 2020-09-26 2020-09-26 Deterministic packet scheduling and dma for time sensitive networking

Publications (1)

Publication Number Publication Date
KR20220042044A true KR20220042044A (ko) 2022-04-04

Family

ID=74101811

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210112823A KR20220042044A (ko) 2020-09-26 2021-08-26 시간 민감형 네트워킹을 위한 결정론적 패킷 스케줄링 및 dma

Country Status (4)

Country Link
US (1) US20210014177A1 (ko)
EP (1) EP3974995A1 (ko)
KR (1) KR20220042044A (ko)
CN (1) CN114285510A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102536943B1 (ko) * 2022-10-20 2023-05-30 주식회사 망고부스트 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886308B2 (en) * 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9847918B2 (en) * 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
WO2020039538A1 (ja) * 2018-08-23 2020-02-27 三菱電機株式会社 通信装置、通信方法及び通信プログラム
US11689423B2 (en) * 2020-11-13 2023-06-27 Centurylink Intellectual Property Llc Autonomous internet service scaling in a network
CN112395011B (zh) * 2020-11-24 2022-11-29 海宁奕斯伟集成电路设计有限公司 命令响应信息的返回方法、返回控制装置和电子设备
US11374872B1 (en) * 2020-12-08 2022-06-28 Pensando Systems, Inc. Methods and systems for adaptive network quality of service for latency critical applications
US11449447B2 (en) * 2020-12-31 2022-09-20 Texas Instruments Incorporated Latency and jitter for traffic over PCIe
US20220337331A1 (en) * 2021-04-14 2022-10-20 Meta Platforms, Inc. Utilizing high-bandwidth memory and multi-thread processors to implement a precision time memory and synchronous processing system on a network interface card
CN113259420A (zh) * 2021-04-26 2021-08-13 苏州市伯太数字科技有限公司 基于tsn网络标准的智能传感器的边缘计算系统
US11443479B1 (en) * 2021-05-19 2022-09-13 Apple Inc. Snapshot arbitration techniques for memory requests
US20230011602A1 (en) * 2021-07-07 2023-01-12 EdgeQ, Inc. Systems and methods for converged baseband and ai operations
US11886372B1 (en) * 2021-07-14 2024-01-30 Cadence Design Systems, Inc. Systems and methods for packing of transaction layer (TL) packets
US11665113B2 (en) * 2021-07-28 2023-05-30 Hewlett Packard Enterprise Development Lp System and method for facilitating dynamic triggered operation management in a network interface controller (NIC)
US11528232B1 (en) * 2021-08-27 2022-12-13 Hong Kong Applied Science and Technology Research Institute Company Limited Apparatus and method for handling real-time tasks with diverse size based on message queue
CN113766017B (zh) * 2021-08-30 2023-09-19 西安微电子技术研究所 一种基于请求响应式实时以太网载荷数据传输控制系统和方法
US20230142107A1 (en) * 2021-11-05 2023-05-11 Dragos, Inc. Data pipeline management in operational technology hardware and networks
US11740978B2 (en) 2021-12-10 2023-08-29 International Business Machines Corporation Edged cloud application backup
TWI783827B (zh) * 2021-12-15 2022-11-11 瑞昱半導體股份有限公司 無線網路裝置
CN116615899A (zh) * 2021-12-15 2023-08-18 新华三技术有限公司 确定性流传输方法及装置
CN114780449B (zh) * 2022-04-01 2022-11-25 扬州宇安电子科技有限公司 一种基于zynq芯片的数据存储及传输系统
CN116185891B (zh) * 2023-04-27 2023-07-21 珠海妙存科技有限公司 描述符管理方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6956818B1 (en) * 2000-02-23 2005-10-18 Sun Microsystems, Inc. Method and apparatus for dynamic class-based packet scheduling
US8660137B2 (en) * 2005-09-29 2014-02-25 Broadcom Israel Research, Ltd. Method and system for quality of service and congestion management for converged network interface devices
JP6210743B2 (ja) * 2013-06-10 2017-10-11 オリンパス株式会社 データ処理装置およびデータ転送制御装置
US9952991B1 (en) * 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US9264256B2 (en) * 2014-07-01 2016-02-16 Netronome Systems, Inc. Merging PCP flows as they are assigned to a single virtual channel
US9270488B2 (en) * 2014-07-01 2016-02-23 Netronome Systems, Inc. Reordering PCP flows as they are assigned to virtual channels
US10789371B2 (en) * 2016-06-20 2020-09-29 Intel Corporation Technologies for trusted I/O with a channel identifier filter and processor-based cryptographic engine
US10853308B1 (en) * 2018-11-19 2020-12-01 Xilinx, Inc. Method and apparatus for direct memory access transfers
US10754816B2 (en) * 2018-12-21 2020-08-25 Intel Corporation Time sensitive networking device
JP7145794B2 (ja) * 2019-03-14 2022-10-03 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
US20190280991A1 (en) * 2019-05-16 2019-09-12 Intel Corporation Quality of service traffic management in high-speed packet processing systems
US11477123B2 (en) * 2019-09-26 2022-10-18 Apple Inc. Methods and apparatus for low latency operation in user space networking
US11159445B1 (en) * 2019-11-26 2021-10-26 Xilinx, Inc. Systems and methods for extending internal endpoints of a network device
US20210320866A1 (en) * 2020-01-28 2021-10-14 Intel Corporation Flow control technologies
WO2021173572A1 (en) * 2020-02-24 2021-09-02 Sunrise Memory Corporation Channel controller for shared memory access
US11765250B2 (en) * 2020-06-26 2023-09-19 Western Digital Technologies, Inc. Devices and methods for managing network traffic for a distributed cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102536943B1 (ko) * 2022-10-20 2023-05-30 주식회사 망고부스트 데이터 절감 장치, 데이터 절감 방법 및 데이터 절감 장치를 포함하는 시스템

Also Published As

Publication number Publication date
CN114285510A (zh) 2022-04-05
US20210014177A1 (en) 2021-01-14
EP3974995A1 (en) 2022-03-30

Similar Documents

Publication Publication Date Title
EP3974995A1 (en) Deterministic packet scheduling and dma for time sensitive networking
EP4202677A1 (en) Optimizing deployment and security of microservices
US20210144122A1 (en) Technologies for scheduling time sensitive cyclical network traffic in real-time
US20220345417A1 (en) Technologies for configuring and reducing resource consumption in time-aware networks and time-sensitive applications
EP3563532B1 (en) A multi-core lock-free rate limiting apparatus and method
US20220345863A1 (en) Reconfigurable radio systems including radio interface engines and radio virtual machines
US20230096468A1 (en) In-transit packet detection to reduce real-time receiver packet jitter
CN116112110A (zh) 用于补偿时钟漂移引起的时间同步中的错误的技术
US20210117418A1 (en) Time-aware general-purpose input output for industrial control systems
US20220014946A1 (en) Methods and apparatus for digital twin aided resiliency
CN117897980A (zh) 无线接入网智能应用管理器
US20220417117A1 (en) Telemetry redundant measurement avoidance protocol
NL2033544B1 (en) Methods and apparatus to implement edge scalable adaptive-grained monitoring and telemetry processing for multi-qos services
US20230236909A1 (en) Service mesh architecture for integration with accelerator systems
WO2021258391A1 (en) Power management techniques for computing platforms in low temperature environments
US20220326757A1 (en) Multi-timescale power control technologies
US20240039860A1 (en) Methods, systems, apparatus, and articles of manufacture to manage network communications in time sensitive networks
US20240036631A1 (en) Protocol state aware power management
US20220357975A1 (en) Optimizations for virtual environment execution in a network
US20230030013A1 (en) Buffer status report (bsr) data reporting based on application processor (ap) assistance
US20220116132A1 (en) Synchronizing a real-time clock and a network clock
US20220222337A1 (en) Micro-enclaves for instruction-slice-grained contained execution outside supervisory runtime
US20230003826A1 (en) Systems, apparatus, articles of manufacture, and methods for distributed and scalable high performance location and positioning
US20240014831A1 (en) Systems, apparatus, articles of manufacture, and methods for wireless network optimization
US20220224624A1 (en) Methods, apparatus, and articles of manufacture to improve bandwidth for packet timestamping