본문 바로가기

HW

[Xilinx] Versal ACAP(Adaptive Compute Acceleration Platform)

본 글은 아래 링크의 글을 읽고 작성하였습니다. 

https://www.xilinx.com/support/documentation/white_papers/wp505-versal-acap.pdf

불러오는 중입니다...

 

Xilinx에서는 Versal ACAP라는 Platform을 출시 했다고 합니다.


 

Software로  완전히 program 가능하고

Scala Engine(일반적으로 CPU),

Adaptable Engines, Intelligent Engines등과 

 

결합 하여 극적인 성능 향상을 얻어내는 그런 Platform이라고 합니다. 

 

해당 플랫폼을 사용하면

Data center,

wire network,

5G Wireless,

automotive driver assist(자율주행보조)등의 

 

Application에서

 

오늘날 가장 빠른 FPGA 대비 20배

오늘날 가장 빠른 CPU 대비 100배정도 빠른

 

실행능력을 갖추고 있다고 하네요.

 

 


Abstract를 살펴 보겠습니다. 

 

최근 컴퓨터가 해결하는 문제는 

단순히 CPU하나만으로는 부족합니다. 

 

이런 상황을 극복하기 위해서 DSP나 GPU같은 

매우 큰 Vector processing 제품들이 몇가지 문제를 해결해줬지만

이것들은 전통적으로 유연하지 않기 때문에

확장성 문제, 비효율적인 메모리 대역폭 사용 문제등이 있습니다. 

 

전통적인 FPGA 솔루션은 메모리 계층구조를 프로그래밍 할 수 있지만

전통적인 하드웨어 개발 흐름에 적용하기에는 광범위한 장벽이 있었습니다.

 

이런 문제를 해결하기 위해서 

 

ACAP라는 채택형 연산 가속기 플랫폼이 만들어 졌다고 하네요

 

이 새로운 device의 category에 속하는

Xilinx의 Versal ACAPs를 사용하면

사용자가 자신의 응용분야에 적절한 architecture를 만들수 있다고 합니다.

 


 

 

위 그림은 시간에 따른 Processor Performance의 증가를 나타내는데요 

시간이 지날수록 느리게 성장하고 있는 것을 볼 수 있습니다. 

 

그래프 상에서 볼수 있듯 2015년을 기준으로

사실상 Processor의 성능 증가가 멈췄다고 볼 수 있습니다. 

 

결과적으로 반도체 산업은

사용처에 명확한 구조(domain-specific architecture : DSA)를 찾으려고 노력하는 중입니다.

 

현재는 성능증가를 위해서 DSP나 GPU같은 vector processing 연산 유닛을 사용하거나

완전한 병렬처리 구현이 가능한 programmable HW인 FPGA를 사용하는 등의 방법을 사용중인데 

 

그럼 어떤 제품이 어떤 업무에서 가장 좋은 효율을 낼 수 있을까요?

 

 

전통적인 CPU에 해당하는

 

Scalar processing elements

광범위한 의사결정을 내려야 하는 복잡한 알고리즘이나

넓은 라이브러리 묶음을 가진 곳에서는 매우 효율적이지만

성능규모를 늘리는데 제한적입니다.

 

DSP나 GPU에 해당하는

Vector processing elements는 

병렬처리가 가능한 연산 함수에서 좀더 효율적입니다.

하지만 비효율적인 메모리 계층 때문에 효율성에 문제가 있습니다.

 

FPGA에 해당하는

Programmable logic

특별한 연산 기능에 정확하게 맞춰진 동작을 수행할 수 있어서

지연시간이 매우 큰 문제가 되는 실시간 application에 사용하기 좋고

불규칙적인 데이터 구조에 사용하기 좋습니다. 

하지만 알고리즘이 변경되는 경우에는 그에 맞추기 위해

긴 시간의 컴파일이 필요하다는 단점이 있습니다. 

 

 

Xilinx는 각 요소의 장점이 잘 반영된

혁신적인 새로운 heterogeneous compute architecture는 소개했는데요.

 

Adaptive Compute Acceleration Platform(ACAP)라는 architecture입니다.

 

부족한 실력이지만 영어 그대로 읽어보면

적절한 연산 가속 플랫폼이라는 뜻이네요.

한국어로 읽어보니까 뭘 말하고자 하는지 딱 느껴지는데 

3가지 Computing Engine이 가지고 있는 장점들을 모아 놓은 것 이라고 하네요

 

세계적인 수준의 Vector processing element와 scalar processing element가

새로운 programmable logic(PL)과 tightly coupled 되어 있고 

이것들은 memory-mapped access를 제공하는

모두 높은 대역폭의 Network-on-chip(NoC)로 연결되어 있다고 합니다.

 

이렇게 tightly coupled hybrid architecture는 

(이렇게 각자의 요소를 매우 가깝게 잘 묶어낸 hybrid 형태의 구조는)

각 유닛을 하나씩만 사용할때보다 훨씬 수월하게 

원하는 플랫폼에 적절한 형태로 customization할 수 있고

매우 큰 성능 향상을 이뤄낼 수 있다고 합니다.

 

 

이런 플랫폼을 새로 도입하기 위해서 중요한것은

플랫폼에 좋아도 사용환경이 어렵다면 사용하기 어렵다는 것인데 

 

Xilinx의 ACAP는 쉽게 사용할수 있도록 만들었다고 합니다. 

 

RTL flow 없이 설계할수 있고 

ACAP자체가 software로 programmable하며

C-based 그리고 framework-based의 design flow를 허용한다고 합니다.

 

Device는 통합 쉘이 있는데 이걸 통해서 DMA와 NoC가 통합된

cache-coherent host interface(PCIe or CCIX technology)를 구성하고

통합된 memory controller 제공하고

RTL work가 필요한 부분을 제거합니다.

 

새로운 ACAP 구조는 극적인 사용성의 향상을 이뤄낼 수 있다고 하는데요

통합된 toolchain을 통한 programming을 위한 완전히 통합된,

memory-mapped platform을 제공한다고 합니다. 

 

 

이어서 예시로 Xilinx의 ACAP's toolchain이 제공할 수 있는

예시를 보여주는데요

 

AI machine learning inference와 같은 상황에서

framework level(Caffe, Tensorflow)로 ACAP를 사용할수 있다던지

 

다른 C를 이용해서 미리 최적화 하는 작업을 한다던지

 

기존의 하드웨어 개발자들이 미리 만들어 놓은 RTL을 ACAP에 포팅하는 작업을

전통적인 RTL entry flow를 따라서 진행하는 것도 가능하다고 합니다. 

 

 


그래서 ACAP의 주된 장점 3가지는

 

1. Software Programmability

software를 활용한 application에 최적화 된 개발이 가능하다.

 

2. Acceleration

다양한 분야에 가속이 가능하다.

(AI, smart network interface card, high density storage, 5G wireless,

self-driving cars, advanced modular rade, terabit optical networks)

 

3. Dynamically Adaptable Reconfiguration

가속을 위한 hardware 재구성 시간을 millisecond안에 끝내는 능력이 있다.


결국엔 ACAP는

HW 와 SW를 활용한 병렬 이종 컴퓨팅(Parallel Heterogeneous Computation)최적화 장치인 것 입니다.

 

ACAP의 특징은

다음세대의 Scalar Engine과 Adaptable Engine 그리고 Intelligent Engine을 섞은 것 입니다.

 

pdf에서 제공하는 그림 구조를 보면

 

 

Scala Engine으로는

Xilinx에서 지난세대에서 사용했던 Arm Coretex-A53보다

single-threded performance가 2배 향상된

Dual Core Arm Cortex-A72를 사용합니다. 

 

제작공정도 이전세대의 16nm에서 7nm FinFet 공정을 사용해서 DMIPs/watt 를 이전 세대보다 

두배 좋게 만들었다고 합니다. 

 

그리고 추가로 Ultra Scale+ Cortex-R5 Scalar Engine도 함께 있습니다. 

 

Adaptable Engine은 programmable logic과 memory cell로 이루어져 있고

업계에서 가장 빠른 memory cells은 next generation programmable logic과 연결 되어 있습니다. 

특정 연산 업무에 맞춰서 memory 계층을 customize 할수 있습니다. 

 

바로 이 점 때문에 Intelligent Engine이

최신 GPU나 CPU보다 더 높은 cycle 효율과 더 높은 memory bandwidth를 가질 수 있습니다. 

 

Intelligent Engine은 혁신적인 VLIW의 배열로 되어 있으며 Single Instruction, Multiple Data(SIMD) 처리 engine과 메모리로 구성되어 있습니다.

 

 

이런 연산 기능들은 다른 비율, 다른 강도로 mix 됩니다. 

 

 

 

 

홈페이지에서 확인해보니

https://www.xilinx.com/products/silicon-devices/acap/versal.html

 

Versal

Introducing Versal ACAP, a fully software-programmable, heterogeneous compute platform that combines Scalar Engines, Adaptable Engines, and Intelligent Engines to achieve dramatic performance improvements of up to 20X over today's fastest FPGA implementati

www.xilinx.com

 

위에서 말한것 처럼 각 Series 별로 ACAP의 내부 조합이 다릅니다. 

 

 

 

 

 

Versal Preminum Series

Network IP on Power-optimized Adaptable Platform

Versal Premium Series

Versal Prime Series

optimized for Connectivity, Inline Acceleration, and Diverse Workloads

Versal AI Core

Portfolio's Highest Compute for Maximum AI and Workload Acceleration

 

 

 


 

이어서 나오는 내용은 

 

Software Programmability

Heterogeneous Acceleration

Adaptability

 

3가지에 대한 내용입니다.


 

Software Programmability에서는 

 

ACAP는 Software로 Program 가능한 HW이고

Application에 관계 없이 사용하기가 아주 수월하기 때문에 쓰기 좋다고 하네요.

 

위와 같은 Top-Level Concept Diagram 을 보여주는데 

 

주되게 말하고 싶은 점은

Versal 제품은 Hardware관련 전문 지식이 없어도 쉽게 설계 할수 있다

 

인거 같습니다. 

 


Heterogeneous Acceleration

 

여러가지 상황에 맞춰서 테스트 해본 결과 ACAP를 쓴게 더 좋았다~~ 라는 표를 첨부하면서 ACAP 사용의 이점을 보여줍니다. 

 

이어서 실제 테스트에 대한 약간 상세한 내용들이 상황별로 추가적으로 설명됩니다.

 


Adaptability에서는

 

주된 이점을 조금더 세분화 해서 이야기 해주는데 

 

Adaptable Hardware

Programmable Memory Hierarchy

Dynamic Reconfiguration

 

이런 3가지 장점이 있다고 하네요!

 

사실 Adaptable Hardware는 앞에서 하던 이야기 그대로 하는 것이고 

 

Programmable Memory Hierarchy도 앞에서 살짝 언급되었던 내용인데

장점의 활용가능 예시로 딥러닝을 들어줍니다. 

GPU는 Vector processing Unit으로 Core수가 엄청 많아서 연산이 빠른대신

Memory Hiearchy가 고정되어 있어서 연산에 따라

다소 비효율적인 구조가 될 수 있는데

 

이런 부분에서 ACAP를 쓰면 Vector processor와 programmable logic을 조합해서

GPU대비 2배정도 좋은 성능을 낼수 있다고 합니다. 

 

Dynamic Reconfiguration은 역시 앞에서 나왔던 내용입니다. 

 


결론!

 

Xilinx왈

 

기존 연산 장치들의 장점을 조합해서 만들었다.

 

hardware지식 없이도 쓰기 쉽도록 만들어놨다.

 

쓸수 있는 곳이 무지무지 많다.

ACAP 짱이다.