가속기와 호스트 프로세서 간의 스케일러블 I/O

ID 721793
업데이트됨 2/16/2022
버전 Latest
공공

데이터 처리 최적화를 위해 사용자 모드 응용 프로그램과 가속기 사이를 효율적으로 조정하는 비결.

소개

데이터 중심 컴퓨팅의 시대가 도래하면서 워크로드 가속화와 데이터 센터의 매출원가(COGS) 절감에 관해 관심이 커지고 있습니다. 이러한 가속을 위한 하드웨어 방법에는 CPU 코어의 특수 명령어 집합 아키텍처(ISA) 확장, 프로그래밍할 수 있는 이기종 요소(예: GPU 및 FPGA), 데이터 이동 및 변환 기능을 위한 오프로드 가속 엔진이 포함됩니다. ISA 기반 가속은 호스트 CPU의 명령어 집합 아키텍처 내에 잘 정의되어 있지만, 오프로드 기반 가속은 일관된 구조와 기능 없이 기존 I/O 컨트롤러와 장치 드라이버 모델에서 유기적으로 발전했습니다. 이 문서에서는 곧 출시될 인텔® 제온® 프로세서에 도입된 다양한 가속기 인터페이스 기술의 개요를 제공합니다. 이러한 기술은 오프로드 오버헤드 감소, 엔드 투 엔드 지연 시간 최소화, 간소화된 메모리 모델, 가상 머신 및/또는 컨테이너를 통한 워크로드 배포에 적합한 스케일러블 가상화 기능을 목표로 합니다.

현재 상황

기존 I/O 컨트롤러 설계에서 발전한 오프로드 가속 하드웨어 및 소프트웨어에는 많은 어려움이 있습니다. 여기에는 작업 제출 오버헤드, 메모리 관리 복잡성, 작업 완료 동기화 오버헤드, 응용 프로그램 또는 테넌트 간의 가속기 공유가 포함됩니다.

작업 제출 오버헤드

일반적으로 응용 프로그램이 작업을 가속기에 제출할 때 요청은 기본 가속기 장치의 소프트웨어와 하드웨어 간의 인터페이스를 추상화하는 커널 모드 장치 드라이버로 라우팅됩니다. 커널 I/O 스택과 관련된 지연 시간 및 오버헤드는 고성능 스트리밍 가속기에 병목 현상을 일으킬 수 있습니다. 

메모리 관리 복잡성 오버헤드

기존 가속기 설계에는 응용 프로그램과 하드웨어 가속기 간에 데이터를 공유하기 위해 고정된 메모리가 필요합니다. 또한, 가속기의 메모리 보기(직접 메모리 액세스를 통해 액세스)는 응용 프로그램의 보기와 크게 다르므로 기본 소프트웨어 스택이 큰 비용이 드는 메모리 고정 및 고정 해제, DMA 매핑 및 매핑 해제 작업을 통해 두 보기를 연결해야 하는 경우가 많습니다.

작업 완료 동기화 오버헤드

기존 가속기용 소프트웨어 스택은 인터럽트 기반 처리, 완료 상태 레지스터의 비지 폴링 또는 메모리의 설명자에 의존합니다. 운영 체제 커널의 인터럽트 처리 아키텍처는 컨텍스트 전환 및 지연 처리로 오버헤드를 일으켜 시스템 성능이 저하될 수 있습니다. 반면, 비지 폴링은 더 많은 전력을 소비하고, 다른 응용 프로그램에서 사용할 수 있는 CPU 주기 수를 줄이며, 확장에 부정적인 영향을 미칠 수 있습니다.

가속기 공유성

여러 응용 프로그램, 컨테이너, 가상 머신에서 가속기를 효율적이고 안전하게 공유하는 것은 데이터 센터를 배포하기 위한 기본 요구 사항입니다. SR-IOV와 같은 하드웨어 지원 I/O 가상화는 게스트 소프트웨어의 요청에 따라 가속기에 액세스하는 과정에서 하이퍼바이저를 제거하여 I/O 가상화를 가속합니다.

그러나 이러한 아키텍처는 하드웨어 집약적인 경향이 있으며 다음 두 가지 설계에는 그다지 적합하지 않습니다.

  • 리소스가 제한된 단일 칩 시스템(SoC) 통합 가속기 설계
  • 가상 머신 기반 사용 시 현재 제공되는 것보다 더 큰 확장성이 필요한 사용 사례(예: 수천 개의 동시 컨테이너 간에 가속기를 공유하는 사용)

요약하면, 가속기용 시스템 아키텍처는 다음 요구 사항을 충족해야 합니다.

  • 오프로드 효율성 - 낮은 오버헤드, 사용자 모드, 기능 오프로드(스케일러블 및 저지연 작업 디스패치, 경량 동기화, 이벤트 신호 처리 등)
  • 메모리 모델 - 응용 프로그램별 및 가속기에 오프로드된 기능별 메모리에 대한 통합적 보기
  • 가상화 - 응용 프로그램, 컨테이너, 가상 머신 전반에서 가속기를 효율적으로 공유
  • 일관성 - 모든 IP에서 일관된 하드웨어 및 소프트웨어 인터페이스와 SoC 인터페이스 아키텍처

가속기 인터페이스 기술

이 섹션에서는 곧 출시될 인텔® 제온® 프로세서의 가속기 인터페이스 기술 기능을 요약합니다. 

이러한 기능은 위의 요구 사항을 충족하며 다음을 포함합니다.

  • 최적화된 오프로드를 위한 작업 디스패치 지침(MOVDIRI, MOVDIR64B, ENQCMD/S)
  • 효율적인 동기화를 위한 사용자 모드 대기 명령어(UMONITOR, UMWAIT, TPAUSE)
  • 지연 시간이 짧은 사용자 인터럽트
  • 가상 가상 메모리
  • 스케일러블 I/O 가상화

오프로드 효율성 및 확장성을 위한 개선 사항

MOVDIRI
직접 저장 의미론을 사용하여 처리량이 높은(4B 또는 8B) 도어벨 쓰기를 지원함으로써 작은 단위의 작업이 가속기에 고속으로 스트리밍되는 스트리밍 오프로드 모델에 도움이 됩니다.

MOVDIR64B
가속기 작업 대기열에 64바이트 원자 쓰기를 지원하여 가속기 장치가 요청된 작업을 최소한의 지연 시간으로 완료하도록 고도로 최적화된 저지연 오프로드 모델의 이점을 제공합니다. 64바이트 페이로드를 통해 가속기는 작업 설명자를 가져오거나 때에 따라 실제 데이터까지 가져오는 데 드는 DMA 읽기 지연 시간을 피할 수 있습니다(이를 통해 엔드 투 엔드 지연 시간을 줄임).

ENQCMD/S
다음 그림과 같이 여러 비협력 소프트웨어 엔터티(예: 응용 프로그램, 컨테이너, 또는 VM 내 응용 프로그램/컨테이너)에서 가속기의 작업 대기열(공유 작업 대기열 또는 SWQ라고 함)로 동시 및 직접 작업 제출을 지원합니다. 사용자 입력 명령을 대기열에 넣는 명령어인 ENQCMD(대기열에 명령 넣기)와 ENQCMDS(관리자 권한으로 대기열에 명령 넣기)에는 다음과 같은 두 가지 고유한 기능이 있습니다. 

  • 작업 설명자에는 가속기가 설명자별로 제출하는 소프트웨어 에이전트를 식별할 수 있도록 프로세스 주소 공간 식별자(PASID)가 포함됨
  • 해당 명령에서는 PCIe* 지연 가능 메모리 쓰기(DMWr) 요청을 사용하여 가속기가 수신되는 DMWr 요청을 수행하거나 지연할 수 있도록 함

ENQCMD/S 명령어는 소프트웨어에 "성공" 또는 "재시도(지연됨)" 표시를 반환합니다. 성공은 작업이 SWQ에 수락되었음을 나타내며 재시도는 SWQ 용량, QoS 또는 기타 이유로 인해 수락되지 않았음을 나타냅니다. 재시도 상태를 수신하면 작업 제출자는 나중에 다시 시도할 수 있습니다.

UMONITOR/UMWAIT/TPAUSE
사용자 모드 소프트웨어와 오프로드된 작업 간의 저지연 동기화를 활성화합니다. 또한, 가속기가 디스패치된 작업이 완료되기를 기다리는 동안 프로세서가 구현에 따라 달라지며 최적화된 상태가 되도록 지원합니다. 최적화된 상태는 경량 전력 또는 성능 최적화 상태이거나 향상한 전력/성능 최적화 상태일 수 있습니다. UMWAIT 및 TPAUSE 명령어를 사용하면 소프트웨어는 두 가지 최적화된 상태 중에서 선택할 수 있으며, 선택적 시간 초과 값을 지정하는 메커니즘도 제공합니다. TPAUSE 명령어는 트랜잭션 동기화 확장과 함께 사용하여 여러 이벤트를 대기할 수 있습니다. 이러한 명령어를 통해 이웃 스레드가 이벤트를 효율적으로 대기하고 있을 때 하이퍼스레드(HT)가 컴퓨팅 리소스를 사용할 수 있습니다.

사용자 인터럽트
사용자 모드 소프트웨어에 대해 직접 신호를 처리하는 경량 메커니즘을 제공합니다. 사용자 인터럽트를 사용하면 커널 개입 없이 사용자 공간 응용 프로그램에 이벤트를 전달할 수 있으며, 커널 에이전트가 운영 체제 신호 처리 메커니즘을 사용하는 대신 사용자 공간 응용 프로그램에 알림을 전송할 수 있습니다. 사용자 인터럽트는 고성능 응용 프로그램의 엔드 투 엔드 지연 시간, 전체 지터, 컨텍스트 전환 오버헤드를 줄여 줍니다.

공유 가상 메모리(SVM)

SVM 아키텍처는 다음과 같은 방법으로 CPU와 가속기 모두에서 메모리의 통합 보기를 지원합니다. 

  • 가속기가 CPU와 동일한 가상 주소 사용 가능
  • 가속기가 고정되지 않은 메모리에 액세스하고 I/O 페이지 오류로부터 복구할 수 있도록 지원

곧 출시될 인텔 제온 프로세서는 프로세스 주소 공간 식별자(PASID), 주소 변환 서비스(ATS), 페이지 요청 서비스(PRS)와 같은 SVM 기능을 지원합니다. 시스템 소프트웨어는 PASID를 할당하여 작업을 제출하는 각 클라이언트의 주소 공간을 식별하고, 인텔® Directed I/O용 가상화 기술은 클라이언트의 CPU 페이지 테이블을 인텔 VT-d와 공유하도록 확장되어 PASID로 세분화된 DMA 재매핑을 수행하고 가속기가 I/O 페이지 오류로부터 복구하는 데 도움이 됩니다.

가속기는 SVM 기능을 사용하여 응용 프로그램 주소 공간에서 데이터를 직접 처리합니다. 작업 설명자를 수신하면 가속기는 DMA 주소 변환에 대한 장치 변환 색인 버퍼(DevTLB)를 조회합니다. 주소 변환이 이미 캐시된 경우(DevTLB 히트 시나리오), DevTLB에서 확보한 변환된 호스트 물리적 주소(HPA)로 DMA 요청이 발행됩니다. DevTLB 누락이 발생하면 가속기는 ATS 주소 변환 요청을 IOMMU에 제출하며, 이는 주소 변환 테이블을 참조하여 변환을 확보합니다. 성공적으로 변환되면 반환된 주소 변환 정보가 DevTLB에 캐시되고 DMA 요청이 발행됩니다. 변환에 실패하면(즉, I/O 페이지 부재) 가속기는 시스템 소프트웨어에 PRS 페이지 요청을 발행하여 오류 페이지에 대해 "페이지 인"을 요청할 수 있습니다(예: CPU 페이지 오류 처리). 페이지 응답을 성공적으로 수신하면 가속기는 주소 변환 요청을 재발행하여 호스트에서 오류가 성공적으로 처리된 후 변환을 가져옵니다.

시스템 소프트웨어는 프로세스의 작업 집합을 트리밍하고, VMM 메모리에 대한 오버 커밋을 처리하고, 응용 프로그램 또는 VM을 해체하는 등의 방법으로 응용 프로그램/VM 페이지 테이블을 변경할 수 있습니다. 이 경우 시스템 소프트웨어는 가속기에 이 변경과 관련된 DevTLB 항목을 무효로 하도록 지시한 다음 응답을 동기화합니다.

인텔® Scalable I/O Virtualization(인텔® Scalable IOV)

인텔 Scalable IOV는 하드웨어 지원 I/O 가상화에 대한 새로운 접근 방식입니다. 이를 통해 격리된 도메인(응용 프로그램, VM, 컨테이너 등) 전체에서 세밀하고 유연하며 고성능을 발휘하는 I/O 장치 공유를 지원하는 동시에 엔드포인트 하드웨어 장치에 대한 공유의 복잡성을 줄일 수 있습니다. 또한, 세밀하고 프로비저닝된 장치 리소스(예: 작업 대기열, 대기열 쌍 또는 컨텍스트)를 클라이언트 도메인에 독립적으로 할당할 수 있습니다. 가속기에 대한 소프트웨어 액세스는 '직접 경로' 또는 '인터셉트 경로'로 분류됩니다. 직접 경로 액세스(예: 작업 제출 또는 작업 완료 처리)는 성능을 위해 가속기 리소스에 직접 매핑됩니다. 구성 작업과 같은 인터셉트 경로 액세스는 유연성을 향상하기 위해 가상 장치 구성 모듈(VDCM)로 에뮬레이트됩니다. 또한, 인텔 Scalable IOV는 다른 도메인에 할당된 장치 리소스 간의 세밀한 격리를 위해 인텔® VT-d를 확장하여 PASID 세분화, DMA 재매핑을 지원합니다.

인텔 Scalable IOV는 주소 도메인이 서로 다르고 응용 프로그램 프로세스용 시스템 호출 또는 VM용 가상 장치 인터페이스 등의 다양한 추상화를 사용하는 장치 리소스를 유연하게 공유할 수 있습니다. 또한, VDEV를 장치 리소스에 동적으로 매핑하여 VMM이 장치 리소스를 오버 프로비저닝할 수 있습니다. 더 광범위하게는 인텔 Scalable IOV를 통해 VMM은 VDCM을 사용하여 데이터 센터에서 세대 호환성을 유지함으로써 VDEV의 기능을 가상화하고, 다양한 세대의 물리적 I/O 장치와 관계없이 호환되는 VDEV 기능을 제공할 수 있습니다. 이렇게 하면 VDEV 드라이버가 포함된 특정 게스트 운영 체제 이미지를 모든 물리적 머신에 배포하거나 마이그레이션할 수 있습니다.

인텔® Data Streaming Accelerator를 통한 가속기 인터페이스 기술

데이터 복사 및 변환을 위한 고성능 가속기인 인텔® Data Streaming Accelerator(인텔® DSA)는 곧 출시될 인텔 제온 프로세서에 통합됩니다. 인텔 DSA의 목적은 고성능 스토리지, 네트워킹, 영구 메모리를 위해 설계된 응용 프로그램과 다양한 데이터 처리 응용 프로그램에서 일반적으로 사용되는 스트리밍 데이터의 이동 및 변환을 최적화하는 것입니다. 

인텔 DSA는 앞서 언급한 가속기 인터페이스 기술을 사용하여 효율적이고 스케일러블 가속기 오프로드를 지원하는 동시에 스케일러블 가속기 하드웨어 구축과 관련된 비용 및 복잡성을 줄입니다.

인텔 DSA는 개별 클라이언트가 작업 대기열의 흐름/점유를 소유하거나 제어할 수 있도록 장치 호스팅 전용 작업 대기열(DWQ)과 스케일러블 공유를 제공하는 장치 호스팅 공유 작업 대기열(SWQ)을 지원합니다. 아래 그림과 같이 소프트웨어는 SWQ를 하나 이상의 클라이언트에 매핑하면서 DWQ를 개별 클라이언트에 할당할 수 있습니다. 소프트웨어는 MOVDIR64B 명령어를 사용하여 64바이트 작업 설명자를 DWQ에 제출하고, ENQCMD/S 명령어를 사용하여 64바이트 작업 설명자를 SWQ에 제출합니다. 작업 설명자는 또한 완료 인터럽트, 완료 쓰기 또는 두 가지 모두를 요청할 수 있으므로UMONITOR/UMWAIT 명령어를 통해 효율적으로 동기화할 수 있습니다.

인텔 DSA는 SVM 및 복구 가능한 I/O 페이지 오류를 지원하여 프로그래밍 모델을 간소화하고 응용 프로그램, 운영 체제, 하이퍼바이저 소프트웨어에서 원활하게 도입할 수 있도록 합니다. 확장 가능한 I/O 가상화 기능을 지원함으로써 가상 머신 또는 컨테이너 기반 배포에서 인텔 DSA 오프로드가 가능하며, 인텔 DSA 가상 장치를 VM 또는 컨테이너에 할당하는 동안 실시간 마이그레이션을 실행할 수 있습니다.