KR20230147055A - 3d 데이터 처리 유닛에서의 공간적 분배 - Google Patents

3d 데이터 처리 유닛에서의 공간적 분배 Download PDF

Info

Publication number
KR20230147055A
KR20230147055A KR1020237025326A KR20237025326A KR20230147055A KR 20230147055 A KR20230147055 A KR 20230147055A KR 1020237025326 A KR1020237025326 A KR 1020237025326A KR 20237025326 A KR20237025326 A KR 20237025326A KR 20230147055 A KR20230147055 A KR 20230147055A
Authority
KR
South Korea
Prior art keywords
accelerator
layer
functions
layers
nic
Prior art date
Application number
KR1020237025326A
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 KR20230147055A publication Critical patent/KR20230147055A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/1735Network adapters, e.g. SCI, Myrinet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

본원의 실시예는 복수의 계층을 사용하여 계산, 저장, 또는 네트워크 기능을 3차원으로 공간적으로 분배하는 3D SmartNIC를 설명한다. 즉, 2D에서 가속화 기능을 수행할 수 있는 현재의 SmartNIC와는 달리, 3D Smart는 다수의 적층된 계층에 걸쳐 이러한 기능을 분배할 수 있으며, 여기서 각각의 계층은 다른 계층과 직접 또는 간접적으로 통신할 수 있다.

Description

3D 데이터 처리 유닛에서의 공간적 분배
본 개시의 예는 일반적으로 서로 통신하는 다수의 적층된 계층을 포함하는 3D 네트워크 인터페이스 카드(network interface card; NIC)에 관한 것이다.
클라우드에서 호스팅된 서비스에 대한 계속되는 수요 증가를 따라잡기 위해 클라우드 인프라스트럭처의 성장이 가속화되고 있다. 서버 CPU를 확보하여 고객의 애플리케이션의 실행에 초점을 맞추기 위해, 계산, 네트워크, 및 저장 기능을 가속기에 오프로드해야 할 필요성이 증가하고 있다. 이들 가속기는 클라우드 공급업체에, 단일 고객 또는 다수의 고객의 다양한 계산-중심, 네트워크-중심, 및 저장-중심 작업부하를 관리하는 더 간단한 방식을 제공하는 클라우드의 하이퍼-컨버지드 인프라스트럭처(hyper-converged infrastructure; HCI)의 일부이다. 많은 클라우드 운영자는 이러한 작업부하를 처리하는 데 SmartNIC를 사용한다. 일반적으로, SmartNIC는 네트워크 트래픽 처리를 수행할 수 있고, 표준 또는 "단순" NIC가 사용되는 경우에는 호스트 CPU에 의해 수행되었을 다른 기능을 가속화 및 오프로드할 수 있는 데이터 처리 유닛(data processing unit)을 포함하는 NIC이다. SmartNIC는 하나의 컴포넌트 안에서 다수의 오프로드 가속화 기능(offload acceleration function)을 수렴하는 데 능숙하고, 새로운 기능을 가속화하거나 새로운 프로토콜을 지원하기에 충분히 적응 가능하고, 또한 HCI를 동시에 사용하는 다수의 클라우드 테넌트(예컨대, 고객)의 경우를 위해 가상화 및 보안을 관리하는 방식을 클라우드 공급업체에 제공한다. 또한 데이터 처리 유닛(DPU)이라는 용어는 가상화, 보안, 네트워킹, 계산 및 저장을 위한 처리, 가속화 및 오프로드 기능 또는 그의 서브세트의 집합을 설명하기 위해 SmartNIC 대신에 사용된다. 3D DPU는 주변 카드, OCP 가속기 모듈과 같은 다양한 타입의 폼 팩터를 가질 수 있거나, 다른 컴포넌트/가속기/메모리와 함께 마더보드 상에 직접 장착될 수 있다.
SmartNIC는 그의 수명 주기에 걸쳐 생성된 새로운 기능 및 프로토콜의 오프로드 가속화를 통해 빠르게 변화하는 작업부하에 적응 가능하다. SmartNIC(예컨대, PCIe 카드)는 전형적으로 클라우드 내의 서버 또는 저장 노드에 플러그되어, TOR(top-of-rack) 네트워크 스위치에 연결되고, 이어서 클라우드의 나머지에 연결된다. 이들 컴포넌트를 수백만 개의 유닛으로 대규모 배치하는 경우에도, 전력 소비가 SmartNIC의 키 메트릭이 된다. 적응형 지능과 저전력 소비를 조합하면, 프로그래밍 가능한 로직과 강화된 가속화의 조합은 SmartNIC 디바이스로서 매우 적합해진다.
SmartNIC의 하이퍼-컨버지드(hyper-converged) 특성이, 이들이 하나의 컴포넌트에서 계산, 네트워킹 및 저장 기능을 수행할 수 있음을 의미한다 할지라도, 현재의 SmartNIC는 이들 기능을 2차원으로 공간적으로 분해하여, 이들 기능을 패키지 내의 다수의 칩렛을 통해 분해하거나, 큰 모놀리식 다이를 통해 분해한다. 달리 말하면, 서버 내의 CPU에 의해 수행되어야 할 작업부하를 수행하는 데이터 처리 유닛은 2D 평면 상에 배열되는데, 동일한 기판(예컨대, 인쇄 회로 기판) 상에 장착된 칩렛이거나, 동일한 칩에 형성된 상이한 처리 유닛이다. 이는 장래의 대역폭 요구를 충족시키기 위한 이러한 SmartNIC의 확장성을 심각하게 제한한다.
또한, SmartNIC 처리의 특성은 네트워크 흐름의 이동뿐만 아니라 그러한 흐름과 연관된 상당량의 메타데이터의 이동을 필요로 한다. 메타데이터는 SmartNIC에서의 처리 또는 가속화 파이프라인의 현재 스테이지를 위한 동작 동사 또는 커맨드의 세트를 포함할 수 있고, 가속화 파이프라인의 다음 스테이지를 해석/실행하기 위한 동작 동사도 포함하거나 그를 위한 기준으로서 기능할 수 있다. SmartNIC에 의해 호스트 내의 다수의 테넌트에 동일한 서비스가 제공되거나, 동일한 테넌트에 다수의 네트워크, 계산, 또는 저장 기능이 제공되는 다중-테넌트 환경에서, 메타데이터는 또한 테넌트의 아이덴티티, 그들의 서비스 레벨 협약(service level agreement; SLA) 및/또는 테넌트가 원하는 서비스 또는 가속화 기능의 타입에 관한 정보를 반송(carry)할 수 있다. 오프로드 가속기 기능의 수가 증가함에 따라, 메타데이터의 양 또는 메타데이터의 타입도 증가한다. 이러한 속성으로 인해, 메타데이터는 대개 처리 또는 이동되는 데이터의 양에 비해 상당한 오버헤드이다. 더욱이, SmartNIC 처리는 또한, 특정 테넌트의 트래픽이 처리되고 있을 때, 또는 데이터에 대한 다음 기능 또는 프로세싱 단계를 결정하고 있을 때, 데이터의, 일부 경우에서는, 메타데이터 중 일부 또는 전부의 임시 버퍼링을 필요로 한다. 즉, 현재의 기법의 공간적 분배 특성으로 인해, 파이프라인의 다양한 스테이지를 통해 테넌트의 트래픽이 이동함에 따라, 데이터 및 메타데이터의 반복적인 버퍼링이 존재한다. 링크 대역폭의 양이 증가함에 따라, 반복적인 버퍼링의 양도 증가하면, 이는 데이터 이동을 공간적으로 분배하기 위한 자원의 비효율적인 사용을 초래한다.
본원에 기재된 하나의 실시예는 스택으로 배열되고 서로 통신 가능하게 커플링된 다수의 계층, 다수의 계층 내의 복수의 가속기 기능, 및 다수의 계층 중 하나에 배치된 시퀀서를 포함하는 NIC이며, 여기서 시퀀서는 NIC에서 수신된 트래픽 흐름을 복수의 가속기 기능 중 상이한 가속기 기능 사이에서 조정하여 파이프라인을 형성하도록 구성된다.
본원에 기재된 다른 실시예는 스택으로 배열되고 서로 통신 가능하게 커플링된 다수의 계층, 다수의 계층 내의 복수의 가속기 기능, 및 다수의 계층 중 하나에 배치된 시퀀서를 포함하는 3D 데이터 처리 유닛이며, 여기서 시퀀서는 3D 데이터 처리 유닛에서 수신된 트래픽 흐름을 복수의 가속기 기능 중 상이한 가속기 기능 사이에서 조정하여 파이프라인을 형성하도록 구성된다.
본원에 기재된 다른 실시예는 스택으로 배열되고 서로 통신 가능하게 커플링된 다수의 계층을 각각 포함하는 복수의 NIC 및 다수의 계층 내의 복수의 가속기 기능을 포함하는 시스템이다. 시스템은 복수의 가속기 카드 및 복수의 가속기 카드에 복수의 NIC를 통신 가능하게 커플링하는 스위치도 포함하고, 여기서 복수의 NIC, 복수의 가속기 카드, 및 스위치는 동일한 박스에 배치된다.
위에서 인용된 특징이 상세하게 이해될 수 있도록, 위에서 간략히 요약된 보다 구체적인 설명은 예시적인 구현예를 참조하여 행해질 있으며, 그 중 일부는 첨부된 도면에 도시되어 있다. 그러나, 첨부된 도면은 단지 전형적인 예시적 구현예를 도시하고, 따라서 그 범위를 제한하는 것으로 간주되어서는 안 된다는 점에 유의해야 한다.
도 1은 일 예에 따른, 3D SmartNIC를 갖는 컴퓨팅 시스템을 도시한다.
도 2는 일 예에 따른, 3D SmartNIC 내의 다수의 계층을 도시한다.
도 3은 일 예에 따른, 패브릭 계층을 갖는 3D SmartNIC를 도시한다.
도 4는 일 예에 따른, 중간 계층 내에 암호 엔진(crypto engine)을 갖는 3D SmartNIC를 도시한다.
도 5는 일 예에 따른, 시퀀서를 도시한다.
도 6은 일 예에 따른, SmartNIC를 포함하는 I/O 확장 박스의 블록도이다.
이해를 용이하게 하기 위해, 가능한 경우, 도면들에 공통되는 동일한 요소를 지정하는 데에는 동일한 참조 번호를 사용하였다. 일례의 요소는 다른 예에서 유익하게 포함될 수 있다는 것이 고려된다.
이하에서 도면을 참조하여 다양한 특징을 설명한다. 도면은 축척에 따라 그려질 수도 있고 그려지지 않을 수도 있으며 유사한 구조 또는 기능의 요소는 도면 전체에 걸쳐 유사한 참조 번호로 표시된다는 점에 유의해야 한다. 도면은 단지 특징의 설명을 용이하게 하기 위한 것임에 유의해야 한다. 그것들은 설명에 대한 철저한 설명 또는 청구범위에 대한 제한으로 의도되지 않는다. 또한, 도시된 예가, 도시된 모든 양태 또는 장점을 가질 필요는 없다. 특정 예와 관련하여 설명된 양태 또는 장점은 반드시 그 예에 제한되는 것은 아니며, 그와 같이 도시되지 않거나 그와 같이 명시적으로 설명되지 않더라도 임의의 다른 예에서 실시될 수 있다.
본원의 실시예는 복수의 계층을 사용하여 계산, 저장, 또는 네트워크 가속기 기능을 3차원으로 공간적으로 분배하는 3D SmartNIC를 설명한다. 즉, (예컨대, 공통 기판 상에 배치된 칩렛 또는 동일한 모놀리식 칩에 통합된 데이터 처리 유닛을 사용하여) 2D 평면에서 가속화 기능을 수행할 수 있는 현재의 SmartNIC와는 달리, 3D SmartNIC는 다수의 적층된 계층에 걸쳐 이러한 기능을 분배할 수 있으며, 여기서 각각의 계층은 다른 계층과 직접 또는 간접적으로 통신할 수 있다. 예를 들어, 호스트는 3D SmartNIC 내의 다수의 가속기 기능으로부터 형성된 파이프라인에서 실행되는 데이터(예컨대, 패킷)를 포함하는 네트워크 흐름을 송신할 수 있다. 예를 들어, 네트워크 흐름은 먼저 제1 계층에서 기능 A(Function A)에 의해 처리되고, 그 다음 제2 계층에서 기능 B 및 기능 C에 의해 처리되고, 그 다음 제3 계층에서 기능 D에 의해 처리될 수 있다. 이러한 파이프라인형 기능 사이의 레이턴시는 3D SmartNIC의 전체 처리량에 영향을 미칠 수 있기 때문에, 다수의 계층을 사용하는 것은, 모든 가속기 기능이 동일한 평면 상의 하드웨어에 의해 수행되는 SmartNIC에 비해, 파이프라인에서 상이한 스테이지(즉, 가속기 기능) 사이의 물리적 및 논리적 커플링을 개선할 수 있다. 즉, 기능 A 내지 D의 물리적 및 논리적 근접도는 다수의 계층의 사용으로 인해 2D SmartNIC보다 3D SmartNIC에서 더 작을 수 있다. 또한, 3D NIC는 2D SmartNIC에 비해 이러한 기능 사이의 데이터 이동과 연관된 레이턴시뿐만 아니라 반복 횟수를 감소시킬 수 있다.
3D SmartNIC의 타이트하게 커플링된 액티브-온-액티브(Active-on-Active; AoA) 계층으로 인해, 데이터 및 메타데이터의 처리 및 이동은 이전 기법으로 이용 가능한 것보다 더 작은 물리적 거리를 횡단하고 훨씬 더 큰 대역폭으로 경로를 횡단한다. 또한, 일 실시예에서, 데이터의 임시 버퍼링은 패킷 버퍼에서 범용/중앙집중형 방식으로 행해지고, 이로써 반복적인 버퍼링의 양이 감소되고, 네트워크, 저장 또는 계산 파이프라인형 가속화의 다양한 스테이지를 통해 이동하는 테넌트 트래픽에 대한 공간적으로 분배된 데이터 이동을 위한 자원의 효율적인 사용을 초래한다. 다른 실시예에서, 패킷 버퍼는 가속기 사용의 시퀀스, 네트워크, 저장, 또는 계산 파이프라인형 가속화의 물리적 위치, 및 패킷 버퍼와 소스 및 목적지 가속기 또는 외부 인터페이스 사이의 최적 레이턴시에 기초한, 2D 평면 또는 3D에서의 분배를 이용하여 공간적으로 분배된다. 공간적으로 분배된 버퍼 중 어느 것이 사용되는지에 대한 라우팅 결정은 메타데이터에서 선험적으로 결정되고 부호화(codify)될 수 있거나, 가속화 파이프라인에서 처리 단계에 의해 동적으로 결정될 수 있다.
또한, 일부 SmartNIC 보안 요건에 따르면, 테넌트 데이터를 반송하는 노출된 링크 인터페이스가 암호화되고 부채널 공격으로부터도 보호될 것이 요구되며, 노출된 링크는 공격 표면이고, 기밀 정보를 드러낸다. 종래 기법과 비교하여 3D SmartNIC의 장점은 노출된 링크를 통해 다른 칩 또는 칩렛 만으로 암호화된 테넌트 정보를 공간적으로 분배하는 것을 포함한다. z-축 상에서 연결이 노출되지 않기 때문에, 복호화된 테넌트 정보의 임의의 분배는 z-축에서(즉, 계층 사이에서)만 수행될 수 있다. 3D SmartNIC의 다른 장점은, 암호화가 z-축 상의 중간 계층에서 수행될 수 있다는 것이며, 이는 노출된 인터페이스의 레이저 프로브와 같은 비-침습적 프로빙 방법(non-invasive probing method)을 사용하여 사악한 행위자가 기밀 정보를 획득하는 것을 방지한다는 것이다.
도 1은 일 예에 따른, 3D SmartNIC(110)를 갖는 컴퓨팅 시스템(100)을 도시한다. 도시된 바와 같이, 컴퓨팅 시스템(100)은 네트워크(130)와 데이터를 교환하기 위해 SmartNIC(110)에 의존하는 호스트(105)를 포함한다. 예를 들어, 네트워크(130)는, 호스트(105)(예컨대, 서버)를 데이터 센터 내의 다른 컴퓨팅 시스템(예컨대, 다른 서버 또는 네트워크 저장 디바이스)에 연결하는, 데이터 센터 내의 로컬 네트워크일 수 있다. 3D SmartNIC(110)는 호스트(105)의 외부에 도시되어 있지만, 일 실시예에서 SmartNIC는 호스트(105) 내에 배치된다. 예를 들어, SmartNIC(110)는 호스트(105) 내의 PCIe 슬롯 안에 플러그된 PCIe 카드일 수 있다.
3D SmartNIC(110)는 3D 구조를 형성하는 다수의 계층(115)(또는 데크)을 포함한다. 즉, 공통 기판(예컨대, PCB 보드) 또는 단일 모놀리식 칩 상에 배치된 다수의 칩렛과 같이, 2D 평면 상에 배치된 계산 자원을 갖는 종래의 SmartNIC가 아닌 SmartNIC(110) 내의 계산 자원은 다수의 계층(115)에 걸쳐 분배된다. 일 실시예에서, 계층(115)은 스택을 형성하는 별개의 집적 회로(IC) 또는 칩이다. 예를 들어, IC는 상이한 계층(115) 내의 계산 자원이 통신할 수 있도록 땜납 연결을 사용하여 서로 본딩될 수 있다. 다른 실시예에서, 계층(115)은 PCB와 같은 별개의 기판을 포함할 수 있고, 이 기판은 이후, 예를 들어 땜납 범프 또는 와이어 본드를 사용하여, 다른 계층 내의 기판 상의 IC 또는 칩렛에 연결되는 IC 또는 칩렛을 포함한다. 또는 계층(115)은 계층을 적층하는 것에 의한 제3 차원의 연결성을 위해 실리콘관통전극(through silicon via) 연결을 사용하여 서로 직접 커플링될 수 있거나, 상이한 타입의 기판(예컨대, PCB)을 통과하고, 계층(115) 사이의 제3 차원의 연결성을 달성하기 위해 땜납 범프 또는 와이어 본드 연결을 사용할 수 있다.
계층(115)은 적어도 하나의 시퀀서(120)를 포함한다. 일 실시예에서는, SmartNIC(110) 내에 하나의 시퀀서만이 존재하는 반면(즉, 계층(115) 중 하나만이 시퀀서(120)를 가짐), 다른 실시예에서는, 동일한 계층(115) 내에 또는 상이한 계층(115) 상에 다수의 시퀀서(120)를 갖는 것이 유리할 수 있다. 일반적으로, 시퀀서(120)는 SmartNIC(110) 내의 상이한 가속기 기능(125) 사이에서 트래픽 흐름을 조정한다. 시퀀서는 또한 범용/중앙집중형 패킷 버퍼의 사용을 조정할 수 있거나, 공간적으로 분배된 패킷 버퍼의 사용 시퀀스를 조정할 수 있다. 일 실시예에서, 각각의 계층(115)은 호스트(105) 또는 네트워크(130)로부터 수신된 트래픽 흐름에서 데이터를 처리하는 적어도 하나의 기능(125)을 포함한다. 또한, 각각의 계층(115)은 다수의 기능(125)을 포함할 수 있다.
일 실시예에서, 각각의 가속기 기능(125)은 네트워크 흐름에서 데이터(또는 메타데이터)에 대해 계산, 네트워킹, 또는 저장 기능을 수행하는 하드웨어 요소이다. 이러한 하드웨어 요소는 계층(115) 내의 별개의 IC일 수 있거나, 하나의 IC는 다수의 가속기 기능(125)을 수행하기 위한 하드웨어 요소를 가질 수 있다. 가속기 기능(125)은 호스트(105) 및 네트워크(130)에 대한 인터페이스를 가속화하기 위한 하드웨어 요소, 암호화(암호) 가속기, 압축 가속기, 패브릭 가속기, 메모리 제어기, 메모리 요소(예컨대, 랜덤 액세스 메모리(RAM)) 등을 포함할 수 있다. 이러한 하드웨어 요소는 프로그래밍 가능한 로직 블록 또는 강화된 로직 블록을 사용하여 구현될 수 있다. 예를 들어, 메모리 제어기, RAM, 인터페이스(입력/출력(I/O)) 가속기, 압축 가속기, 및 암호 가속기는 강화된 로직을 사용하여 구현될 수 있는 반면, 패브릭 가속기는 프로그래밍 가능한 로직(예컨대, 구성 가능한 로직 블록)을 사용하여 구현된다. 그러나, 다른 실시예에서, 일부 가속기(예컨대, 암호 또는 압축 가속기)는 강화된 로직 대신에 프로그래밍 가능한 로직으로 구현될 수 있다.
도 2는 일 예에 따른, 3D SmartNIC(110) 내의 다수의 계층을 도시한다. 도 2에서, 3D SmartNIC(110)는 임의의 수의 계층(115)을 가질 수 있지만, 간략화를 위해 2개의 계층만이 도시된다: 계층(115A 및 115B). 예를 들어, 계층(115A 및 115B)은 SmartNIC(110)에서의 단지 2개의 계층일 수 있거나, 이들 2개의 계층 사이에 하나 이상의 계층이 있을 수 있다.
도시된 바와 같이, 두 계층(115) 모두는 가속기 기능(125A 내지 E)을 형성하는 하드웨어 요소를 포함한다. 이 예에서, 계층(115A)은 가속기 기능(125A 내지 D)을 포함하는 반면, 계층(115B)은 가속기 기능(125E)을 포함한다. 또한, 계층(115A)은 계층(115A) 내의 가속기 기능(125A 내지 D) 각각에 통신 가능하게 커플링된 시퀀서(120)를 포함한다. 도시되지 않았지만, 시퀀서(120)는 또한 계층(115B) 내의 가속기 기능(125E)에 커플링되고, 호스트 인터페이스(210) 및 네트워크 인터페이스(215)에 커플링될 수 있다.
전술한 바와 같이, 시퀀서(120)는 데이터 가속화 파이프라인에서 상이한 스테이지를 형성하기 위해 네트워크 트래픽이 가속기 기능(125) 사이에서 흐르는 방식을 조정한다. 일 실시예에서, 시퀀서(120)는 각각의 네트워크 흐름에 대한 파이프라인을 확립하며, 여기서 가속기 기능(125)은 파이프라인의 스테이지를 형성한다. 예를 들어, (제1 고객 또는 테넌트와 연관될 수 있는) 제1 네트워크 흐름의 경우, 데이터는 먼저 기능(125A)으로, 그 다음에는 기능(125D)으로, 그리고 마지막으로 기능(125E)으로 전송될 수 있다. 그러나, 상이한 고객 또는 테넌트의 제2 네트워크 흐름의 경우, 그의 데이터는 먼저 기능(125E)으로, 그 다음에는 기능(125B)으로 전송될 수 있다. 시퀀서(120)를 사용하여 상이한 네트워크 흐름에 대해 상이한 파이프라인을 확립하기 위한 상세사항은 도 5와 관련하여 아래에서 설명된다.
계층(115A)은 또한 기능(125)과 호스트 및 네트워크 인터페이스(210 및 215) 사이에서 전달되는 데이터에 대한 중앙집중형 및 범용 패킷 유지 영역으로서의 역할을 하는 패킷 버퍼(205)를 포함한다. 위의 예를 계속하면, 제1 네트워크 흐름의 패킷이 기능(125A)에 의해 처리된 후에, 파이프라인에서의 다음 기능(즉, 기능(125D))은 패킷에 대해 준비되지 않을 수 있다. 기능(125A)은 기능(125D)이 패킷에 대해 준비될 때까지 패킷 버퍼(205)에서 패킷을 저장할 수 있다. 따라서, 도시되지는 않았지만, 각각의 기능(125A 내지 D)은 패킷 버퍼(205)에 연결될 수 있다. 패킷 버퍼(205)는 또한 계층(115) 사이에서 패킷을 전달할 때 사용될 수 있다. 예를 들어, SmartNIC(110)는 이들 패킷이 기능(125E)의 일부로서 RAM에 저장되기 전에 패킷을 임시 저장하기 위해 패킷 버퍼(205)를 사용할 수 있다. 패킷 버퍼(205)는, 상이한 네트워크, 컴퓨터, 및 저장 가속화 작업을 수행할 수 있는 SmartNIC(110) 내의 다양한 기능(125)에 의해 사용될 수 있기 때문에 범용 버퍼이다. 따라서, 일 실시예에서, 각각의 가속기 기능(뿐만 아니라 호스트 및 네트워크 인터페이스(210, 215))은 패킷 버퍼(205)에 연결되고, 그에 따라 이들은 버퍼(205)에 패킷을 저장하고, 그로부터 패킷을 검색할 수 있다.
도 2에서 가속기 기능(125), 시퀀서(120), 패킷 버퍼(205), 및 호스트 및 네트워크 인터페이스(210, 215)의 배열은 단지 3D SmartNIC의 일례일 뿐이다. 예를 들어, 다른 실시예에서, 호스트 및 네트워크 인터페이스(210, 215)는 계층(115A) 상에 배치될 수 있다. 또한, 계층(115B)은 하나 초과의 가속기 기능(즉, 기능(125E))을 가질 수 있거나, 계층(115A)은 도시된 것보다 더 많거나 더 적은 가속기 기능을 포함할 수 있다.
도 3은 일 예에 따른, 패브릭 계층을 갖는 3D SmartNIC(300)를 도시한다. 도시된 바와 같이, SmartNIC(300)는 다양한 가속기 기능이 계층(315) 전체에 걸쳐 분배되는 3개의 계층(315A 내지 C)을 포함한다. 이 예에서, 계층(315A)은 프로세서(305), 호스트 인터페이스 가속기(310), 암호 가속기(317), 압축 가속기(320), 및 네트워크 인터페이스 가속기(325)와 함께, 위에서 논의된 바와 같이 시퀀서(120) 및 패킷 버퍼(205)를 포함한다. 프로세서(305), 호스트 인터페이스 가속기(310), 암호 가속기(317), 압축 가속기(320), 및 네트워크 인터페이스 가속기(325)는 도 1 및 도 2에서 논의된 가속기 기능(125)의 예이다.
프로세서(305)는 네트워크 흐름에서 데이터에 대한 계산 작업을 수행할 수 있는 ARM 또는 x86 프로세서일 수 있다. 호스트 인터페이스 가속기(310) 및 네트워크 인터페이스 가속기(325)는 호스트 인터페이스(210) 및 네트워크 인터페이스(215)에 의해 수행되는 기능을 각각 가속화한다. 암호 가속기(317)는 데이터가 SmartNIC(300)에 들어가고 그로부터 떠날 때 데이터를 복호화하고 암호화할 수 있다. 예를 들어, 일부 기능은 복호화된 데이터를 필요로 할 수 있고, 이 경우에, 시퀀서(120)는 먼저 (암호화된 상태에서 SmartNIC에 의해 수신된) 데이터를, 복호화되고, 기능에 의해 처리되고, 그 후 데이터가 SmartNIC(300)로부터 송신되기 전에 다시 암호화되도록 암호 가속기(317)로 라우팅할 수 있다.
압축 가속기(320)는 데이터 압축 및 압축해제를 수행할 수 있다. 예를 들어, 호스트는 네트워크 저장소에 저장될 데이터를 송신할 수 있다. 호스트(105)는 네트워크 흐름을 압축하기보다는, 호스트(105)는 압축된 데이터를 네트워크(130)를 사용하여 네트워크 저장 디바이스로 포워딩하기 전에, 네트워크 흐름에서 데이터를 압축하도록 SmartNIC(300) 내의 압축 가속기(320)에 지시할 수 있다. SmartNIC(300)가 네트워크 저장 디바이스로부터 압축된 데이터를 수신할 때, 압축 가속기(320)는 데이터를 압축해제한 후 이를 호스트(105)로 포워딩할 수 있다. 또한, SmartNIC(300)는 내부에 저장된 데이터를 압축 가속기(320)를 사용하여 압축할 수 있다.
일 실시예에서, 3D SmartNIC(300)는 다수의 암호 및 압축 가속기를 포함할 수 있다. 예를 들어, 계층(315A)은 AES-XTS 암호 가속기 및 AES-GCM 암호 가속기 둘 모두를 포함할 수 있다. SmartNIC(300)는 또한 상이한 압축 알고리즘을 실행하는 상이한 암호 가속기를 포함할 수 있다.
계층(315B)은, 일 실시예에서, 프로그래밍 가능한 로직을 사용하여 구현되는 패브릭 가속기(330)를 포함한다. 패브릭 가속기(330)는 계층(315A) 내의 기능과 계층(315C) 내의 기능 사이의 연결성을 제공할 수 있다. 예를 들어, 패브릭 가속기(330)는 계층(315C) 내의 메모리(340)(예컨대, RAM)에 데이터를 저장하기 위한 제1 패브릭 가속기를 포함할 수 있다. 가속기(330)는 또한, 다른 계층 내의 기능과 통신하기 위해 시퀀서(120)에 의해 사용되는 제2 패브릭 가속기, 및 계층 사이에서 데이터를 전달할 때 암호 가속기(317) 또는 압축 가속기(320)에 의해 사용되는 제3 패브릭 가속기를 포함할 수 있다. 계층(315A 및 315C)은 또한 가속기 기능을 커스터마이징하거나 가속기 기능 사이의 통신 또는 시퀀싱을 커스터마이징하는 능력을 생성하는 프로그래밍 가능한 로직(345)을 포함할 수 있다. 일 실시예에서, 계층(315A) 내의 프로그래밍 가능한 로직(345A)은 호스트 인터페이스 가속기(310)와 프로세서(305) 사이에 있고, 프로세서(305)의 캐시 효율을 증가시키기 위해 프로세서(305)에 처리 힌트를 제공하도록 특정 호스트 인터페이스 데이터를 커스터마이징한다. 다른 실시예에서, 암호 가속기(317)와 네트워크 인터페이스 가속기(325) 사이의 프로그래밍 가능한 로직(345A)은 네트워크 인터페이스 가속기(325)에 의해 수신되거나 그로 향하는 트래픽에 사용되는 암호화 키 또는 암호화 알고리즘을 커스터마이징한다. 이들 예에서, 프로그래밍 가능한 로직(345A)은 계층(315A) 내의 적어도 2개의 가속기 기능 사이의 커스터마이징된 처리 또는 통신을 제공하기 위해 심(shim)으로서 기능한다. 또한, 계층(315C)은 그의 강화된 컴포넌트 사이의 통신을 허용하기 위해 심으로서 기능하는 프로그래밍 가능한 로직(345B)도 포함할 수 있다.
일 실시예에서, 계층(315B)은 또한 계층(315A) 내의 패킷 버퍼(205)와 같은 패킷 버퍼 블록, 또는 네트워크 키 관리 블록을 포함한다. 또한, 계층(315A) 내에 있는 것들과 같은 강화된 가속기 블록(예를 들어, 가속기(310, 317, 320, 또는 325))도 계층(315B)에 포함될 수 있다.
일 실시예에서, 계층(315A)은 또한 계층(315A) 내의 기능 사이의 연결성을 제공하는 패브릭 가속기(예컨대, 하나 이상의 패브릭 가속기 블록)를 포함한다. 즉, 각각의 계층은 그 계층 내의 기능 사이의 통신을 제공하기 위해 자체적인 패브릭 가속기를 가질 수 있는 한편, 계층(315B) 내의 패브릭 가속기(330)는 계층(315A 내지 C) 사이의 연결을 제공한다.
계층(315C)은 호스트 인터페이스(210), 네트워크 인터페이스(215), 메모리 제어기(335), 및 메모리(340)를 포함한다. 메모리(340)는 패킷 버퍼(205)보다 더 긴 데이터를 저장하는 데 사용될 수 있다. 예를 들어, 데이터가 상이한 가속기 기능(예컨대, 파이프라인에서의 상이한 스테이지) 사이에서 천이할 때 데이터는 패킷 버퍼(205)에 저장될 수 있지만, 데이터가 더 긴 시간 기간 동안 대기해야 할 때, SmartNIC(300)는 데이터를 메모리(340)에 저장할 수 있다. 메모리(340)는 또한 가속기 관련 메타데이터, 예를 들어 암호 가속기(317)의 암호화 상태 또는 암호화 키를 저장하는 데 사용될 수 있다.
도시된 바와 같이, 계층(315)은 서로 통신할 수 있다. 일 실시예에서, 계층(315A 및 315C)은 패브릭 계층(즉, 상호연결부)으로서의 역할을 하는 계층(315B)을 사용하여 통신한다. 이 예에서, 계층(315B)은 계층(315A 및 315C) 사이에서 간접 연결부로서의 역할을 한다. 그러나, 다른 실시예에서, 계층(315A 및 315C)은 계층(315B) 내의 로직을 통과하지 않으면서 서로 직접 통신할 수 있다. 예를 들어, 계층(315B)은 계층(315C) 내의 범프 패드를 계층(315A) 내의 범프 패드에 직접 연결하는 관통 비아(through via)(예컨대, 실리콘관통전극)를 포함할 수 있다. 그러한 방식으로, 계층(315A) 내의 기능은 계층(315B) 내의 패브릭 가속기(330)에 의존하지 않으면서 계층(315C) 내의 기능과 직접 통신할 수 있다. 예를 들어, 계층(315A) 내의 일부 기능은 계층(315C)과 직접 통신하기 위해 이들 관통 비아를 사용할 수 있는 반면, 계층(315A) 내의 다른 기능은 계층(315C)과 통신할 때 패브릭 가속기(330)를 사용할 수 있다. SmartNIC(300)가 다수의 개재 계층(intermediate layer)을 포함하도록 확장되는 경우, 계층은 또한, 원하는 경우, 상단 계층(315A)과 저부 계층(315C) 사이의 직접 연결을 제공하기 위해 함께 연결된 관통 비아를 가질 수 있다.
도 1 내지 도 3에 도시된 바와 같이 다수의 계층에 기능을 공간적으로 분배시키는 것은, 이러한 모든 하드웨어 요소가 동일한 2D 평면 상에 배치되는 경우보다, 이러한 기능 사이의(그리고 패킷 버퍼(205)와 시퀀서(120) 사이의) 더 타이트한 커플링을 제공할 수 있다. 예를 들어, 이러한 기능이 모두 동일한 모놀리식 칩 상에 배치된 경우, 상이한 계층 상의 2개의 기능 사이에서 데이터를 전달하는 것보다, 칩의 양단부 상의 2개의 기능 사이에서 데이터를 전달하는 것이 더 많은 레이턴시를 필요로 할 수 있다. 따라서, SmartNIC(300)에 대해 3D 구조를 사용하는 것은 더 많은 기능이 SmartNIC(300)에서 구현될 수 있게 하며, 이는 기능을 공간적으로 분배하는 것과 관련되는 레이턴시를 증가시키지 않고 SmartNIC(300)를 더 유연하고 확장성이 있게 만든다.
도 4는 일 예에 따른, 중간 계층(415B) 내에 암호 엔진(405)을 갖는 3D SmartNIC(400)를 도시한다. 즉, SmartNIC(400)는 상부 계층(415A)과 하부 계층(415C) 사이에 샌드위치된 중간 계층(415B)에 암호 엔진(405)이 배치되는 3개의 계층(415A 내지 C)을 포함한다. 그와 같이 하면, 암호 엔진(405)에 대한 추가적인 물리적 보호가 제공된다. 예를 들어, 이는 암호 엔진(405)을 그의 키에 액세스하려는 물리적 침입 시도로부터 보호하여야 한다. 사악한 행위자는 암호 엔진(405)에 의해 사용되는 키에 액세스하기 위해 SmartNIC(400)가 계속 동작하도록 하는 방식으로 SmartNIC(400)를 분해해야 할 것이다. 그러나, 2D SmartNIC는, 액세스하기에 더 용이한 2D 평면 상에 그의 암호 엔진(405)이 위치되어야 할 것이기 때문에 동일한 보호를 제공하지 않는다.
일 실시예에서, 암호 엔진(405)은 SmartNIC(400)에서 자체 계층(415)에 배치될 수 있다. 그러나, 다른 실시예에서는, 추가적인 기능이 엔진(405)과 동일한 계층(415B)에 배치될 수 있다. 예를 들어, 계층(415B)은 또한 도 3에 도시된 패브릭 가속기(330)를 포함할 수 있다.
도 5는 본 예에서 도 3에 도시된 다양한 가속기 기능(예를 들어, 프로세서(305), 호스트 인터페이스 가속기(310), 암호 가속기(317), 압축 가속기(320), 및 네트워크 인터페이스 가속기(325))과 함께 사용될 수 있는 시퀀서(120)를 도시한다. 이 실시예에서, 시퀀서(120)는 이러한 기능과 통신하기 위한 서브-시퀀서 모듈을 갖는다. 즉, 시퀀서(120)는 호스트 및 네트워크 인터페이스 가속기(310, 325)에 대응하는 I/O 시퀀서(505), 프로세서(305)에 대응하는 프로세서 시퀀서(510), 암호 가속기(317)에 대응하는 암호 시퀀서(515), 및 압축 가속기(320)에 대응하는 압축 시퀀서(520)를 포함한다.
공간적으로 분배된 가속기 기능(예를 들어, 프로세서(305), 호스트 인터페이스 가속기(310), 암호 가속기(317), 압축 가속기(320), 및 네트워크 인터페이스 가속기(325))과 시퀀서(120) 사이의 통신은 적어도 2개의 방식으로 수행될 수 있다. 첫째, 시퀀서(120) 또는 기능에 의해 해석된 메타데이터는, 테넌트 데이터에 의해 파이프라인형 가속화가 수행할 때, 분배된 기능 중 어느 것을 특정 트래픽 흐름이 순차적으로 횡단할 필요가 있는지를 설명하는 순번 목록을 포함한다. 달리 말하면, 트래픽 흐름에 대응하는 메타데이터는 데이터가 기능에 의해 처리되어야 하는 순서를 정의할 수 있다. 이러한 순번 목록은, 네트워크 흐름에서 패킷을 처리하는 데 어느 기능이 사용되는지, 및 선택된 기능이 패킷을 처리하는 순서를 결정하는 파이프라인의 스테이지를 확립한다.
둘째, 메타데이터는 패킷을 처리하는 데 사용되어야 하는 파이프라인형 가속화 기능의 링크된 목록을 포함하며, 여기서 링크된 목록 내의 널 포인터는 출구점(egress point)(예를 들어, 호스트 또는 네트워크 출구(Network egress))을 나타내거나, 널 포인터는 널 포인터 이전에, 그 패킷의 처리에 기초하여 다음 링크된 목록 기능(또는 기능들)을 채울 것으로 예상되는, 링크된 목록의 끝에서 두 번째 목적지인 파이프라인 스테이지를 나타낸다. 이러한 방식으로, 파이프라인의 다음 스테이지 또는 기능은, 패킷이 처리되고 있을 때 동적으로 선택될 수 있다.
이러한 기법 둘 모두는 트래픽 흐름이 그의 상이한 기능을 횡단할 때 트래픽 흐름의 낮은 레이턴시를 달성하고 패킷 버퍼(205)에서 트래픽 흐름의 낮은 레지던시를 달성하며, 이로써 다른 테넌트의 네트워크 흐름에 대한 패킷 버퍼(205)의 효율을 증가시킨다.
도 6은 일 예에 따라 SmartNIC(110) 및 저장, 기계 학습, 또는 다른 가속기 카드(610)를 포함하는 I/O 확장 박스(600)의 블록도이다. 도 6에서, 호스트(105)는 별개의 기판이거나 동일한 기판일 수 있는 복수의 SmartNIC(110)와 통신한다. 이어서, SmartNIC(110)는 저장, 기계 학습, 또는 다른 가속기 카드(610)에 통신 가능하게 커플링된다. 확장 박스(600)는 호스트(105)와 SmartNIC(110) 사이, 및 SmartNIC와 저장, 기계 학습, 또는 다른 가속기 카드 사이의 통신을 허용하기 위한 스위치(605)를 포함한다. 일 실시예에서, 스위치는 호스트(105), SmartNIC(110), 및 저장, 기계 학습, 또는 다른 가속기 카드(610) 사이의 캐시 코히어런트 및 넌-캐시 코히어런트 통신을 용이하게 한다. 따라서, 스위치(605)는 호스트(105)의 메모리 공간이 SmartNIC(110) 및 저장, 기계 학습, 또는 다른 가속기 카드(610)에 의해 공유되는 캐시 코히어런트 방식으로, 또는 넌-코히어런트 데이터 전달(예를 들어, 직접 메모리 액세스(DMA) 판독 또는 기록)을 사용함으로써, 호스트(105), SmartNIC(110), 및 저장, 기계 학습, 또는 다른 가속기 카드(610) 사이에서 데이터를 전달하는 것을 지원할 수 있다.
일 예로서, 호스트(105)는, (데이터가 너무 크지 않다고 가정하고) 코히어런트 도메인을 사용하여 모든 SmartNIC(110)로 전송될 데이터를 전달하지만, 넌-코히어런트 도메인을 사용하여 다량의 데이터, 또는 SmartNIC(110) 중 하나만을 목적지로 하는 데이터를 전달한다.
앞에서, 본 개시에 제시된 실시예에 대한 참조가 이루어졌다. 그러나, 본 개시의 범위는 기술된 특정 실시예에 제한되지 않는다. 대신에, 다른 실시예와 관련이 있든 없든, 설명된 특징 및 요소의 임의의 조합이, 고려된 실시예를 구현하고 실행하기 위해 고려된다. 또한, 본원에 개시된 실시예가 다른 가능한 해결책 또는 종래 기술에 비해 장점을 달성할 수 있지만, 주어진 실시예에 의해 특정 장점이 달성되는지 여부는 본 발명의 범위를 제한하지 않는다. 따라서, 전술한 양태, 특징, 실시예 및 장점은 단지 예시적인 것이며 청구항(들)에서 명시적으로 인용된 경우를 제외하고는 첨부된 청구항의 요소 또는 제한으로 간주되지 않는다.
당업자라면 이해할 수 있는 바와 같이, 본원에 개시된 실시예는 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 양태는 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함) 또는 본원에서 모두 일반적으로 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태를 조합한 실시예의 형태를 취할 수 있다. 또한, 양태는 컴퓨터 판독 가능 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독 가능 매체(들)에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독 가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 신호 매체 또는 컴퓨터 판독 가능 저장 매체일 수 있다. 컴퓨터 판독 가능 저장 매체는 예를 들어 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 디바이스 또는 전술한 것의 임의의 적절한 조합일 수 있지만 이에 제한되지 않는다. 컴퓨터 판독 가능 저장 매체의 보다 구체적인 예(대략적인 목록(non exhaustive list))는 다음을 포함할 것이다: 하나 이상의 와이어를 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 가능한 프로그래밍 가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스 또는 전술한 것의 임의의 적절한 조합. 이 문서의 맥락에서, 컴퓨터 판독 가능 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형의 매체이다.
컴퓨터 판독 가능 신호 매체는 예를 들어 기저대역에서 또는 반송파의 일부로서 내부에 컴퓨터 판독 가능 프로그램 코드가 구현된 전파(propagated) 데이터 신호를 포함할 수 있다. 이러한 전파 신호는 전자기, 광학 또는 이들의 임의의 적절한 조합을 포함하지만 이에 제한되지 않는 다양한 형태들 중 임의의 것을 취할 수 있다. 컴퓨터 판독 가능 신호 매체는, 컴퓨터 판독 가능 저장 매체가 아니며 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 전달, 전파 또는 운송할 수 있는 임의의 컴퓨터 판독 가능 매체일 수 있다.
컴퓨터 판독 가능 매체에 구현된 프로그램 코드는 무선, 지상 통신선(wireline), 광섬유 케이블, RF 등 또는 전술한 것의 적절한 조합을 포함하지만 이에 제한되지 않는 임의의 적절한 매체를 사용하여 송신될 수 있다.
본 개시의 양태에 대한 동작을 수행하기 위한 컴퓨터 프로그램 코드는 객체 지향 프로그래밍 언어, 예를 들어 Java, Smalltalk, C++ 등 및 종래의 절차적 프로그래밍 언어, 예를 들어 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 전적으로 사용자의 컴퓨터에서, 부분적으로 사용자의 컴퓨터에서, 독립 실행형 소프트웨어 패키지로, 부분적으로는 사용자의 컴퓨터에서 그리고 부분적으로는 원격 컴퓨터에서 또는 전적으로 원격 컴퓨터나 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역망(WAN)을 포함하는 임의의 타입의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, (예를 들어, 인터넷 서비스 공급자를 이용하여 인터넷을 통해) 외부 컴퓨터에 대한 연결이 이루어질 수 있다.
본 개시의 양태는 본 개시에 제시된 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 아래에서 설명된다. 흐름도 예시 및/또는 블록도 내의 각 블록, 및 흐름도 예시 및/또는 블록도 내의 블록의 조합은 컴퓨터 프로그램 명령어에 의해 구현될 수 있음을 이해할 것이다. 이러한 컴퓨터 프로그램 명령어는 머신을 생산하기 위해 범용 컴퓨터, 특수 목적 컴퓨터 또는 기타 프로그래밍 가능한 데이터 처리 장치의 프로세서에 제공될 수 있으며, 그에 따라 컴퓨터 또는 다른 프로그래밍 가능한 데이터 처리 장치의 프로세서를 통해 실행되는 명령어는 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/행위를 구현하기 위한 수단을 생성한다.
이러한 컴퓨터 프로그램 명령어는 또한 컴퓨터, 기타 프로그래밍 가능한 데이터 처리 장치 또는 기타 디바이스가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독 가능 매체에 저장될 수 있으며, 그에 따라 컴퓨터 판독 가능 매체에 저장된 명령어는 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/행위를 구현하는 명령어를 포함하는 제조 물품을 생산한다.
컴퓨터 프로그램 명령어는 또한 컴퓨터, 다른 프로그래밍 가능한 데이터 처리 장치, 또는 컴퓨터 구현 프로세스를 생산하기 위해 컴퓨터, 다른 프로그래밍 가능한 장치 또는 다른 디바이스에서 일련의 동작 단계가 수행되도록 하는 다른 디바이스에 로딩될 수 있고, 그에 따라 컴퓨터 또는 기타 프로그래밍 가능한 장치에서 실행되는 명령어는 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/행위를 구현하기 위한 프로세스를 제공한다.
도면의 흐름도 및 블록도는 본 발명의 다양한 예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현예의 아키텍처, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도의 각 블록은 지정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 모듈, 세그먼트 또는 명령어의 일부를 나타낼 수 있다. 일부 대안적인 구현예에서, 블록에 언급된 기능은 도면에 언급된 순서와는 다르게 발생할 수 있다. 예를 들어, 연속으로 도시된 두 개의 블록이 실제로는 실질적으로 동시에 실행될 수 있거나, 때로는 관련된 기능에 따라 블록이 역순으로 실행될 수 있다. 블록도 및/또는 흐름도 예시의 각 블록, 및 블록도 및/또는 흐름도 예시 내의 블록의 조합은, 특정된 기능 또는 행위를 수행하거나 특수 목적 하드웨어 및 컴퓨터 명령어의 조합을 수행하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다는 것도 주목될 것이다.
전술한 내용은 특정 예에 관한 것이지만, 이의 기본 범위를 벗어나지 않으면서, 다른 및 추가의 예가 고안될 수 있으며, 이의 범위는 다음의 청구범위에 의해 결정된다.

Claims (15)

  1. 네트워크 인터페이스 카드(network interface card; NIC)로서,
    스택으로 배열되고 서로 통신 가능하게 커플링된 다수의 계층;
    상기 다수의 계층 내의 복수의 가속기 기능; 및
    상기 다수의 계층 중 하나에 배치된 시퀀서를 포함하고, 상기 시퀀서는 상기 NIC에서 수신된 트래픽 흐름을 상기 복수의 가속기 기능 중 상이한 가속기 기능 사이에서 조정하여 파이프라인을 형성하도록 구성되는, 네트워크 인터페이스 카드(NIC).
  2. 제1항에 있어서, 상기 다수의 계층은 각각 적어도 하나의 집적 회로를 포함하는, NIC.
  3. 제1항에 있어서,
    상기 복수의 가속기 기능에 연결된 패킷 버퍼를 더 포함하고, 상기 상이한 가속기 기능은 상기 파이프라인의 스테이지 사이에 패킷을 임시 저장하기 위해 상기 패킷 버퍼를 사용하도록 구성되며, 상기 상이한 가속기 기능은 상기 파이프라인에서 상기 스테이지를 형성하는, NIC.
  4. 제1항에 있어서, 상기 다수의 계층은 적어도 상부 계층, 중간 계층, 및 저부 계층을 포함하고, 상기 중간 계층은,
    프로그래밍 가능한 로직을 사용하여 구현된 적어도 하나의 패브릭 가속기, 또는
    상기 트래픽 흐름에서 데이터를 암호화 또는 복호화하기 위한 암호화 엔진을 포함하는, NIC.
  5. 제1항에 있어서, 상기 다수의 계층은 적어도 2개의 가속기 기능을 포함하는 제1 계층을 포함하고, 상기 제1 계층은 상기 적어도 2개의 가속기 기능 사이의 커스터마이징된 처리 또는 통신을 제공하기 위한 프로그래밍 가능한 로직을 더 포함하는, NIC.
  6. 제5항에 있어서, 상기 적어도 2개의 가속기 기능은 강화된 로직을 사용하여 형성되는, NIC.
  7. 3D 데이터 처리 유닛(data processing unit; DPU)으로서,
    스택으로 배열되고 서로 통신 가능하게 커플링된 다수의 계층;
    상기 다수의 계층 내의 복수의 가속기 기능; 및
    상기 다수의 계층 중 하나에 배치된 시퀀서를 포함하고, 상기 시퀀서는 상기 3D DPU에서 수신된 트래픽 흐름을 상기 복수의 가속기 기능 중 상이한 가속기 기능 사이에서 조정하여 파이프라인을 형성하도록 구성되는, 3D 데이터 처리 유닛(DPU).
  8. 제7항에 있어서, 상기 다수의 계층은 각각 적어도 하나의 집적 회로를 포함하는, 3D DPU.
  9. 제7항에 있어서,
    상기 복수의 가속기 기능에 연결된 패킷 버퍼를 더 포함하고, 상기 상이한 가속기 기능은 상기 파이프라인의 스테이지 사이에 패킷을 임시 저장하기 위해 상기 패킷 버퍼를 사용하도록 구성되며, 상기 상이한 가속기 기능은 상기 파이프라인에서 상기 스테이지를 형성하는, 3D DPU.
  10. 제7항에 있어서, 상기 다수의 계층은 적어도 상부 계층, 중간 계층, 및 저부 계층을 포함하고, 상기 중간 계층은 프로그래밍 가능한 로직을 사용하여 구현된 적어도 하나의 패브릭 가속기를 포함하는, 3D DPU.
  11. 제7항에 있어서, 상기 다수의 계층은 적어도 상부 계층, 중간 계층, 및 저부 계층을 포함하고, 상기 중간 계층은 상기 트래픽 흐름에서 데이터를 암호화 또는 복호화하기 위한 암호화 엔진을 포함하는, 3D DPU.
  12. 제7항에 있어서, 상기 다수의 계층은 적어도 2개의 가속기 기능을 포함하는 제1 계층을 포함하고, 상기 제1 계층은 상기 적어도 2개의 가속기 기능 사이의 커스터마이징된 처리 또는 통신을 제공하기 위한 프로그래밍 가능한 로직을 더 포함하는, 3D DPU.
  13. 시스템으로서,
    스택으로 배열되고 서로 통신 가능하게 커플링된 다수의 계층; 및
    상기 다수의 계층 내의 복수의 가속기 기능
    을 각각 포함하는 복수의 NIC;
    복수의 가속기 카드; 및
    상기 복수의 가속기 카드에 상기 복수의 NIC를 통신 가능하게 커플링하는 스위치를 포함하고, 상기 복수의 NIC, 상기 복수의 가속기 카드, 및 스위치는 동일한 박스에 배치되는, 시스템.
  14. 제13항에 있어서, 상기 스위치는 호스트, 상기 복수의 NIC, 및 상기 복수의 가속기 카드 사이의 캐시 코히어런트 통신 및 넌-캐시 코히어런트 통신 둘 모두를 용이하게 하도록 구성되는, 시스템.
  15. 제14항에 있어서, 상기 스위치는 상기 호스트가 코히어런트 도메인을 사용하여 상기 복수의 NIC 중 제1 NIC로 데이터를 전달하고 넌-코히어런트 도메인을 사용하여 상기 복수의 NIC 중 제2 NIC로 데이터를 전달하는 것을 가능하게 하도록 구성되고,
    상기 캐시 코히어런트 통신은 상기 복수의 NIC 및 상기 복수의 가속기 카드가 상기 호스트의 메모리 공간을 공유하는 것을 허용하는, 시스템.
KR1020237025326A 2021-02-24 2022-02-17 3d 데이터 처리 유닛에서의 공간적 분배 KR20230147055A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/184,456 2021-02-24
US17/184,456 US11709790B2 (en) 2021-02-24 2021-02-24 Spatial distribution in a 3D data processing unit
PCT/US2022/016837 WO2022182570A1 (en) 2021-02-24 2022-02-17 Spatial distribution in a 3d data processing unit

Publications (1)

Publication Number Publication Date
KR20230147055A true KR20230147055A (ko) 2023-10-20

Family

ID=80682260

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237025326A KR20230147055A (ko) 2021-02-24 2022-02-17 3d 데이터 처리 유닛에서의 공간적 분배

Country Status (6)

Country Link
US (2) US11709790B2 (ko)
EP (1) EP4298526A1 (ko)
JP (1) JP2024508393A (ko)
KR (1) KR20230147055A (ko)
CN (1) CN116917877A (ko)
WO (1) WO2022182570A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11709790B2 (en) * 2021-02-24 2023-07-25 Xilinx, Inc. Spatial distribution in a 3D data processing unit
US20220385474A1 (en) * 2021-05-28 2022-12-01 Comcast Cable Communications, Llc Systems and methods for secure communication
US11995021B2 (en) * 2022-01-12 2024-05-28 Xilinx, Inc. Zoned accelerator embedded processing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734857B2 (en) * 2007-07-31 2010-06-08 Intel Corporation Cache coherent switch device
US10078613B1 (en) * 2014-03-05 2018-09-18 Mellanox Technologies, Ltd. Computing in parallel processing environments
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
IL238690B (en) * 2015-05-07 2019-07-31 Mellanox Technologies Ltd Network-based computational accelerator
WO2017009859A1 (en) * 2015-07-10 2017-01-19 Prasad Lalathuputhanpura Kochukunju Amicro data center (mdc) in a box system and method thereof
US10763861B2 (en) * 2016-02-13 2020-09-01 HangZhou HaiCun Information Technology Co., Ltd. Processor comprising three-dimensional memory (3D-M) array
US10761877B2 (en) * 2017-07-21 2020-09-01 Intel Corporation Apparatuses, methods, and systems for blockchain transaction acceleration
CN109714302B (zh) * 2017-10-25 2022-06-14 阿里巴巴集团控股有限公司 算法的卸载方法、装置和系统
US10841243B2 (en) * 2017-11-08 2020-11-17 Mellanox Technologies, Ltd. NIC with programmable pipeline
US11451609B2 (en) * 2018-03-16 2022-09-20 Intel Corporation Technologies for accelerated HTTP processing with hardware acceleration
US10698842B1 (en) 2019-04-10 2020-06-30 Xilinx, Inc. Domain assist processor-peer for coherent acceleration
US10817462B1 (en) 2019-04-26 2020-10-27 Xilinx, Inc. Machine learning model updates to ML accelerators
US20200328192A1 (en) 2020-06-26 2020-10-15 Intel Corporation Stacked die network interface controller circuitry
US11709790B2 (en) * 2021-02-24 2023-07-25 Xilinx, Inc. Spatial distribution in a 3D data processing unit

Also Published As

Publication number Publication date
US20220269638A1 (en) 2022-08-25
US20230359577A1 (en) 2023-11-09
JP2024508393A (ja) 2024-02-27
EP4298526A1 (en) 2024-01-03
CN116917877A (zh) 2023-10-20
WO2022182570A1 (en) 2022-09-01
US11709790B2 (en) 2023-07-25

Similar Documents

Publication Publication Date Title
US11546189B2 (en) Access node for data centers
KR20230147055A (ko) 3d 데이터 처리 유닛에서의 공간적 분배
US10887238B2 (en) High performance, scalable multi chip interconnect
US20210117249A1 (en) Infrastructure processing unit
US10929175B2 (en) Service chaining hardware accelerators within a data stream processing integrated circuit
JP5363064B2 (ja) ネットワーク・オン・チップ(noc)上のソフトウェア・パイプライン化の方法、プログラムおよび装置
US11381526B2 (en) Multi-tenant optimized serverless placement using smart network interface cards and commodity storage
US9575689B2 (en) Data storage system having segregated control plane and/or segregated data plane architecture
US8020168B2 (en) Dynamic virtual software pipelining on a network on chip
US8438578B2 (en) Network on chip with an I/O accelerator
Abts et al. High performance datacenter networks: Architectures, algorithms, and opportunities
CN112685159B (zh) 基于fpga异构处理系统的联邦学习计算任务处理方案
CN102724035B (zh) 一种加密卡的加解密方法
Shafiee et al. Secure DIMM: Moving ORAM primitives closer to memory
US20180217823A1 (en) Tightly integrated accelerator functions
CN111752890A (zh) 封装中系统网络处理器
CN115130090A (zh) 基于容器的环境中的安全密钥供应和硬件辅助的安全密钥存储和安全密码学功能操作
CN107688750B (zh) 用于向静止数据提供透明在线加密的系统和方法
KR101940636B1 (ko) 계층적 및 병렬 파티션 네트워크들
CN111984202A (zh) 一种数据处理方法、装置、电子设备和存储介质
KR20190116034A (ko) 네트워크 인터페이스 장치 및 그 네트워크 인터페이스 장치의 데이터 처리 방법
US20220326676A1 (en) Shared Non-Blocking Crossbar Buffer Circuits And Methods
CN118176699A (zh) 用于云原生工作负载的自动加密
Reddy et al. Encrypted KNN Implementation on Distributed Edge Device Network
WO2024015127A1 (en) Distributed configuration of programmable devices