Amazon Web Services 한국 블로그

개발자 미리보기 – F1, 프로그래밍 기반 하드웨어를 위한 EC2 인스턴스

일반적인 도구와 특별한 목적의 도구를 선택해야 하실 때가 있으셨나요? 일반 도구는 많은 문제들을 범용적으로 풀기에 좋지만 항상 최선의 선택은 아닙니다. 반대로 특정 목적의 도구는 하나의 업무에는 좋지만, 이런 특정 작업은 자주 있으면 안되겠지요.

컴퓨팅 엔지니어들은 다양한 IT 워크로드에 대해 높은 성등을 달성하기 위해 아키텍처를 설계 및 가이드 마련 시 항상 이러한 선택의 문제에 봉착하게 됩니다. 시간이 흐름에 따라 새로운 형태의 업무와 작업 상태가 출현하고 이는 특정 하드웨어로 처리하는게 최선일 때가 있습니다. 이러한 점은 또 다른 실행 시 균형을 요구합니다. 즉, 높은 성과를 위한 가능성에 투자하느냐 아니면 분기별 측정하는 개발 주기에 맞추느냐의 상충되는 부분을 선택해야 합니다

FPGA 소개
또 하나의 흥미로운 선택은 FPGA(field programmable gate array, 필드 프로그래머블 게이트 어레이)라고 부르는 하드웨어 기반 맞춤형 솔루션입니다. 특정 기능 목적으로 만들어 하드웨어에 장착되는 일반 칩과는 달리 FPGA는 유연합니다. 즉, FPGA는 PC 보드 소켓에 연결 한 후 현장에서 프로그램을 할 수 있습니다. FPGA는 고정된 유한 논리 게이트를 포함합니다. FPGA 프로그래밍은 단순 논리 기능 (AND, OR, XOR 등) 또는 저장 요소 (플립 플롭 및 시프트 레지스터)를 연결하는 방식입니다. 일반적으로 시리얼 (몇 개의 병렬 요소)과 고정 크기의 명령어 및 데이터 경로 (일반적으로 32 또는 64 비트)를 가진 CPU와는 달리, FPGA는 많은 연산을 병렬로 수행하도록 프로그래밍 할 수 있으며 연산 자체는 크거나 작거나 모든 영역에 적용할 수 있습니다.

계산 집약적인 문제를 처리하기 위한 맞춤 가속기를 개발하는 데 이러한 병령 모델이 이상적입니다. FPGA 프로그래밍 모델을 통해 유전학, 지진 분석, 금융 위험 분석, 대용량 데이터 검색, 암호화 알고리즘 및 애플리케이션 등에 30배 이상의 속도 향상을 제공 할 잠재력을 가지고 있습니다.

FPGA를 사용하여 여러분 만의 애플리케이션 속도 향상을 해보시길 바랍니다. 물론 몇 가지 관심을 가져야할 도전 과제가 있습니다. 첫째, FPGA는 전통적으로 사실 더 큰 목적 지향 시스템의 구성 요소였습니다. 단순히 하나를 사서 데스크톱에 연결할 수 없습니다. 대신 FPGA 기반 솔루션을 통해 하드웨어 프로토 타이핑, 하드웨어 어플라이언스 구축, 대량 생산 및 장기 판매 및 배포 주기 등을 만들 수 있습니다. 해당 적용 시간에 따라 FPGA 적용 가능성을 제한 할 수 있으며, 무어의 법칙이 CPU 기반 솔루션을 보다 비용 효율적으로 만들 시간을 제공한다는 점입니다.

여기서 좀 더 자세하 알아보겠습니다.

신규 F1 인스턴스 타입
오늘 신규 F1 인스턴스에 대한 개발자 미리보기를 시작합니다. 직접 원하는 서비스나 애플리케이션을 만들 수도 있고, 여러분이 만든 패키지를 AWS Marketplace를 통해 재판매를 할 수도 있습니다. 다양한 소프트웨어에 사용하는 비지니스 모델에 맞는 FPGA 기반 애플리케이션을 만들기 위한 기본 요구 사항을 충족함으로서 막대한 비용 및 시간 투자를 피할 수 있게 됩니다. 여러분이 직접 자신의 로직을 기반으로 클라우드 기반 도구를 만들어 시험해 봄으로서, 수일 만에 시장에 선보일 수 있게 됩니다.

F1 인스턴스는 Intel Broadwell E5 2686 v4 프로세서 (2.3 GHz 기본 속도, 전체 코어 당 2.7 GHz Turbo 모드, 하나의 코어에 3.0 GHz Turbo 모드)와 최대 976 GiB 메모리, 최대 4TB의 NVMe SSD 스토리지와 하나에서 8개까지의 FPGA를 가진 인스턴스입니다. 이를 통해 FPGA 기반 로직 구현을 충분히 해 볼 수 있는 자원을 제공 받아, 전용 하드웨어에서 운용되기에 멀티 테넌트 환경에서 분리되어 서비스 됩니다.

아래는 FPGA의 기본 스펙으로, 하나의 F1 인스턴스에서 8개까지 늘릴 수 있습니다.

  • Xilinx UltraScale+ VU9P fabricated using a 16 nm process.
  • 64 GiB ECC-protected memory on a 288-bit wide bus (four DDR4 channels).
  • Dedicated PCIe x16 interface to the CPU.
  • Approximately 2.5 million logic elements.
  • Approximately 6,800 Digital Signal Processing (DSP) engines.
  • Virtual JTAG interface for debugging.

하나 이상의 FPGA가 있는 인스턴스에서 전용 PCIe 패브릭을 사용하면 FPGA가 동일한 메모리 주소 공간을 공유하고 각 방향으로 최대 12Gbps의 PCIe 패브릭을 통해 서로 통신 할 수 있습니다. 인스턴스 내의 FPGA는 낮은 지연 속도 및 높은 대역폭 통신을 위한 400Gbps 양방향 네트워크를 공유합니다 (이러한 고급 기능을 사용하려면 자체 프로토콜을 정의해야 합니다.)

FPGA 개발 과정
개발자 미리보기에서는 FPGA 개발자를 위한 AMI를 제공합니다. 이 AMI를 메모리 또는 컴퓨팅 최적화 인스턴스에 실행하여 개발 및 실험을 해 보고 난 뒤 F1 인스턴스에서 마지막 테스트 및 디버깅을 하면 됩니다.

AMI에는 AWS 클라우드에서 사용할 수 있는 개발자 도구를 (추가 비용 없이) 포함하고 있습니다. VHDLVerilog를 통해 FPGA 코드를 작성한 후, 컴파일 및 시뮬레이션을 해볼 수 있고, Xilinx Vivado Design Suite (서드파티 시뮬레이터, 고 수준 언어별 컴파일러, 그래픽 프로그래밍 도구, FPGA 지적 재산권 정보 사용 가능) 등을 통해 검증할 수 있습니다.

아래는 간단한 8비트 카운터를 위한 Verilog 코드입니다.

module up_counter(out, enable, clk, reset);
output [7:0] out;
input enable, clk, reset;
reg [7:0] out;
always @(posedge clk)
if (reset) begin
  out <= 8'b0;
end else if (enable) begin
  out <= out + 1;
end
endmodule

C언어 문법과 유사하게 표현하는 언어들로서

이러한 언어는 C와 유사한 문법을 가지고 있는 것 같지만, 기존 코드를 가져 와서 FPGA에서 사용할 수 있도록 다시 컴파일 할 수있는 것은 아닙니다. 대신 FPGA 프로그래밍 모델에 대해 깊이 이해한 뒤 부울 대수(Boolean algebra)를 배우고, 전파 지연 및 클럭 에지와 같은 문제를 신경 써야합니다. 이를 통해 FPGA를 사용자 환경에 어떻게 사용할 수 있을까 하는 방법을 생각할 수 있습니다. 너무 간단하게 설명을 했다면, 고급 합성 도구나 FPGA를 프로그래밍을 위한 OpenCL을 사용할 수 있습니다.

인스턴스를 띄운 후, 로그인 한 뒤 패키지를 설치하고 Vivado 도구를 실행하기 위한 라이선스 매니저를 설정합니다. 데스크톱에서 RDP로 연결한 후 터미널 윈도를 열어서 Vivado를 GUI 모드로 실행합니다.

우선 샘플 프로젝트(counter.xpr)를 열어 어떻게 FPGA 프로그램을 할 수 있는 지 살펴 볼 수 있습니다.

잠시 살펴 본 후, 첫 번째 FPGA를 조합해 봅니다. (이 시점에서 흥미로운 것을 좀 더 클릭함으로서 초보자를 벗어나고 있다는 점입니다.)

여기서 부터 내가 만든 디자인 패키지를 Amazon FPGA Image (AFI)로 테스트하고, 이를 직접 애플리케이션으로 만들거나 AWS Marketplace에 올릴 수 있습니다. 이러한 일련의 개발 및 서비스 개시를 몇 주 안에 모두 할 수 있을 것이라 생각합니다.

The F1 하드웨어 개발 도구
F1 인스턴스에서 대해 공부 한 후 드는 첫번째 질문은 아마 FPGA와 CPU, 메모리 사이의 인터페이스를 어떻게 할 것인가 하는 점일 것입니다. F1 하드웨어 개발 도구 (HDK)를 통해 I/O 인터페이스와 호스트-FPGA간, FPGA-메모리간, FPGA-FPGA간 등 멀티 통신 방법을 미리 설정할 수 있는 샘플 애플리케이션을 제공합니다. 여기에는 전체 통합 스크립트, 참조 예제 및 실무 디버그 도구를 포함하고 있습니다.

The Net-Net
이제 F1 인스턴스와 클라우드 기반 개발 도구를 결합하고, FPGA 기반 애플리케이션을 판매할 수 있다는 것은 매우 독특하고 강력한 서비스 모델이 될 것 입니다. FPGA 모델의 강점과 유연성을 이제 모든 AWS 고객이 이용해 볼 수 있게 되었고, 향후 새로운 형태의 애플리케이션과 비즈니스가 출현할 것으로 전망합니다.

미리보기 출시
개발자 미리보기는 US East (Northern Virginia) 리전에서 먼저 시작합니다.(향후 2017년 초에 정식 출시될 때, 여러 리전에서 사용 가능할 것입니다.) 여러분이 이전에 FPGA 프로그래밍 경험이 있고, 지금 시작해 보시려면 미리 보기 이용 신청을 해 주시기 바랍니다.

Jeff;

이 글은 AWS re:Invent 2016 신규 출시 소식으로 Developer Preview – EC2 Instances (F1) with Programmable Hardware의 한국어 번역입니다. re:Invent 출시 소식에 대한 자세한 정보는 12월 온라인 세미나를 참고하시기 바랍니다.