[DAC'22] EMS

EMS: efficient memory subsystem synthesis for spatial accelerators

Liancheng Jia, et.al. on July 10, 2022
doi.org
obsidian에서 수정하기

author: Yun Liang

Abstract

(서론): Spatila Accelerator는 동종 PE 어레이를 통해 대규모 병렬 처리를 제공하며, PE Array의 데이터 흐름과 온칩 메모리를 통해 효율적인 데이터 재사용을 가능하게 합니다. 이전의 많은 연구에서 성능 분석과 자동 생성을 포함해 공간 가속기의 데이터 흐름 아키텍처를 연구해 왔습니다.

(한계): 그러나 기존 가속기 생성기는 전체 메모리 수준의 재사용 기회를 활용하지 못하고 데이터 중복과 비효율적인 상호 연결로 차선의 설계를 생성합니다.

(방법론): 공간 가속기를 위한 효율적인 메모리 서브시스템 합성 및 최적화 프레임워크인 EMS를 제안

  1. 먼저 Space-Time Transform(STT)을 사용하여 PE 수준과 메모리 수준의 데이터 재사용을 모두 분석
    • reuse analysis를 기반으로 멀티뱅크 스크래치패드 메모리의 데이터 레이아웃, 데이터 매핑, 메모리 액세스 컨트롤러를 자동으로 생성하는 알고리즘을 개발
  2. 생성된 메모리 서브시스템은 직접 연결, 멀티캐스트 연결, 회전 연결 등 다양한 PE-메모리 상호연결 토폴로지를 지원함.
    • 메모리 및 상호 연결 생성 방식은 메모리 수준의 재사용을 효율적으로 활용하여 낮은 하드웨어 비용으로 중복 데이터 저장을 방지할 수 있음.
  3. EMS는 Chisel에서 설계된 하드웨어에 텐서 대수를 자동으로 합성할 수 있음.

(결론) 제안한 메모리 생성기는 최신 기술보다 온칩 메모리 크기를 평균 28% 줄이고 비슷한 하드웨어 성능을 달성하는 것으로 나타남

Figure

figure 1 figure 1

figure 2 figure 2

figure 3 figure 3

figure 4 figure 4

figure 5 figure 5

figure 6 figure 6

figure 8 figure 8

Table

table 1 table 1

Background

Method

Citation

6 실험적 평가

6.1 실험 설정

텐서 대수 공식과 STT 행렬로 지정된 데이터 플로우를 주어진 EMS는 Chisel[1] 하드웨어 구현으로 메모리 뱅크 아키텍처와 인터커넥션을 생성합니다. 우리는 Tensorlib[6]을 사용하여 PE 배열을 생성하고 EMS와 통합하여 완전한 공간 가속기 아키텍처를 구축합니다. 생성된 Chisel 코드는 Verilog로 컴파일되고 ASIC 및 FPGA 플랫폼 모두에서 합성됩니다. ASIC 평가를 위해 우리는 Synopsys DC 컴파일러를 55nm UMC 1P8F 기술과 함께 사용합니다. FPGA 평가를 위해 우리는 Xilinx VU9P를 6840 DSP 및 2160 BRAM과 함께 사용하고 Xilinx Vivado 2020.1 소프트웨어를 사용합니다.

우리는 먼저 EMS가 생성한 메모리 모듈의 크기를 다양한 텐서 작업 부하 및 STT 매핑에 대해 평가하고 최첨단과 비교합니다. 그런 다음, 다양한 PE-메모리 인터커넥션 유형에 대한 하드웨어 전력 및 면적을 비교합니다. 마지막으로, 이전 작업과 FPGA에서의 전체 성능을 비교합니다.

6.2 메모리 크기 및 성능 비교

우리는 EMS가 생성한 온칩 메모리 크기 및 다양한 Conv2D 변형, MTTKRP 및 Jacobi2D를 포함한 벤치마크(Table 2)에 대한 피크 PE 활용도를 평가하고, Conv2D 벤치마크에서 최첨단 생성기 AutoSA[16]와 결과를 비교합니다. PE 크기는 32 × 32로 설정됩니다.

Table 2: Workload size of benchmarks

Conv2D의 경우, 초기 및 후기 레이어뿐만 아니라 스트라이드 및 심층 레이어를 평가합니다. EMS는 PE 배열의 두 차원에 매핑된 루프에 의해 표시된 세 가지 매핑을 생성합니다. KC 매핑은 TPU[7]에서 적용되며, KX 매핑은[17]에서 적용되며, XY 매핑은 ShiDiannao[5]에서 적용됩니다. 메모리 크기는 중복이 없는 최적 크기로 정규화됩니다.

그림 6은 다양한 벤치마크 및 시공간 매핑에 대해 EMS가 생성한 온칩 메모리 크기 및 PE 활용도 결과를 보여줍니다. 활용도를 기반으로, 각 Conv2D 레이어가 다른 매핑을 선호하는 것을 알 수 있습니다. (a, c, d)는 채널 크기가 작고 특징 맵 크기가 큰 KX 매핑을 선호합니다. (b)는 반대로 KC 매핑을 선호합니다. 일반적인 컨볼루션 네트워크에서, 초기 레이어는 특징 맵 크기가 크지만 채널 크기가 작기 때문에 KX 및 XY 매핑이 더 나은 성능을 제공합니다. 후기 레이어는 채널 크기가 크지만 특징 맵 크기가 작기 때문에 KC 매핑이 더 나은 성능을 제공합니다. KX 및 XY 매핑의 경우, 입력 데이터에 대한 인터-뱅크 재사용이 가능하므로 회전 버퍼를 적용하여 메모리 크기를 최적화할 수 있습니다. 전체 메모리 크기는 15%에서 64%까지 줄어들 수 있습니다. KC 매핑 및 MTTKRP 벤치마크는 인터-뱅크 재사용을 포함하지 않습니다. Conv2D 및 Jacobi-2D의 XY 매핑에는 수직 및 수평 인터-뱅크 재사용이 모두 포함되어 있지만, 회전 버퍼는 한 차원에서만 작동할 수 있으므로 EMS는 여전히 중복이 있는 하위 최적 메모리 레이아웃을 생성합니다.

그림 6: 메모리 크기 및 성능 평가

우리는 Conv2D 벤치마크에서 AutoSA[16]와 비교하여 (a)에서 (d)로 레이블된 네 가지 Conv2D 벤치마크에 대해 EMS의 메모리 크기를 비교하고 평균 결과를 보여줍니다. AutoSA와 EMS는 여러 솔루션을 생성할 수 있으며, 우리는 비교를 위해 가장 좋은 PE 활용도를 가진 매핑을 선택합니다. EMS는 세 레이어에서 15%에서 44%까지 메모리 크기 감소를 통해 AutoSA를 능가하며, (b) 레이어에 대해서는 AutoSA와 동일한 결과를 생성합니다. 평균 크기 감소는 28%입니다. 벤치마크 (a, c, d)는 KX 매핑을 선호하므로 EMS는 회전 버퍼를 사용하여 인터-뱅크 데이터 중복을 제거할 수 있습니다. 인터-뱅크 재사용이 없는 KC 매핑을 선호하는 레이어의 경우, EMS와 AutoSA는 동일한 성능을 가집니다. 더욱이, EMS는 AutoSA에서 지원하지 않는 Jacobi-2D와 같은 비시스톨릭 설계를 생성할 수 있습니다.

그림 7: 텐서 벤치마크의 메모리 크기 비교

6.3 하드웨어 비용 비교

다음으로, 회전 버퍼 설계의 하드웨어 비용을 연구합니다. 우리는 입력 데이터 인터커넥션을 위한 회전 버퍼를 사용하는 Conv2D-KX를 벤치마크로 사용하여 다양한 메모리 서브시스템 설계의 전력 및 면적을 비교합니다. EMS는 회전 버퍼를 사용하여 중복을 제거하고 메모리를 생성할 수 있으며(Rotated w/o Dup.), 회전 버퍼 없이 중복이 필요하지만 메모리를 생성할 수 있습니다(Direct w/ Dup.). 두 설계는 최적의 경우(Direct w/o Dup.)와 비교됩니다. 회전 버퍼를 사용하면 SRAM 크기는 168 KB에서 128 KB로 감소합니다. 그림 8은 다양한 메모리 및 인터커넥션 선택에 대한 전력 및 면적의 분해를 보여줍니다. 회전 버퍼는 인터커넥션 모듈에서 1.6배 오버헤드를 도입하지만, 메모리 크기 감소는 오버헤드를 상쇄하며, 전력 및 면적에서 각각 13% 및 28% 최적화를 제공합니다.

그림 8: 다양한 메모리 및 인터커넥션 선택에 대한 전력 및 면적 분해

6.4 전체 FPGA 성능 평가

우리는 Conv2D 작업 부하에서 완전한 가속기의 FPGA 성능을 평가하고 다른 작업과 비교합니다. 결과는 표 3에 나와 있습니다. [6]과 비교했을 때, EMS-WS의 LUT 및 DSP 자원은 약간만 증가하여, EMS의 메모리 접근 제어기가 거의 하드웨어 오버헤드를 가지지 않음을 의미합니다. EMS-OS에 회전 버퍼를 추가한 후, LUT 자원은 76%에서 83%로 증가합니다. 우리는 [16]에서 적용된 것과 유사한 주파수 부스트 기술을 적용하여 WS는 301MHz, OS는 295MHz를 달성합니다.

Table 3: FPGA Performance Comparison on Conv2D