20161015

Rapid Exploration of Accelerator-rich Architectures: Automation from Concept to Prototyping
1. Accelerator Research Infrastructure Overview, Sophia Shao
Moore’s Law가 끝나고, CMOS Scaling이 느려지고 있다. Intel이 지금까지는 Moore’s Law를 잘 따라왔다. 새로운 기술이 기존의 기술을 따라잡는 것에는 늘 시간이 걸린다. Technology scaling이 잘 되는 새로운 기술이 있지만, integrated CMOS를 따라잡기에는 여전히 시간이 걸릴 것이다. 이러한 trend 때문에 specialized architecture가 부각되고 있다. Specialized architecture는 특정한 어플리케이션을 위해 가속기를 디자인하는 것. 이렇게 specialized된 architecture는 일반적인 architecture보다 더 높은 에너지 효율성을 보인다. Apple A8 SoC를 보자. 절반 정도의 die area가 out-of-core acclerator로 구성되어 있다. 그리고 시간이 지남에 따라 Apple SoC에 사용되는 specialized IP block의 수가 증가하고 있다.
Specialized architecture를 사용하는 것에는 여전히 challenge들이 존재한다. Accelerator 설계의 challenge: flexibility, programmability, design cost. Flexibility: 가속기들이 특정 타겟 어플리케이션을 위해 설계됨. Programmability: 가속기를 프로그래밍하기가 쉽지 않다. 최근의 SoC를 보면 여러 개의 IP 블록으로 구성되어 있음. ARM cores, audio, DSP, video, face, imaging, GPU, DMA, USB, SD… 가속기와 메모리 사이의 데이터 전송을 DMA로 하고 있는데, 데이터 전송의 유연성을 제공하지 못한다. 그리고 모든 블록이 한 개의 버스를 공유하는 것은 대역폭 제약을 준다. Design cost: 가속기 설계를 위해서는 많은 고민이 필요하다.
미래의 컴퓨터 시스템에는 여러 개의 코어들이 들어갈 것이고, sea of fine-grained accelerator들 중에서 선택해서 사용하게 될 것이다. Flexibility를 높이기 위해 어플리케이션을 어떻게 가속기로 나눌 것인지 기법이 필요함. Design cost를 낮추기 위해 가속기 설계 기법이 필요함. Programmability를 높이기 위해 공유 자원을 나누고 관리하는 기법이 필요함.
ICCAD’15에 발표된 PARADE: Platform for Accelerator-Rich Architectural Design & Exploration 소개. Core 모델링을 위해 gem5를 사용, 가속기 모델링을 위해 HLS 사용, memory 모델은 ruby, gem5 모델을 사용, NoC 모델을 위해 Garnet 사용. 그 다음으로 ARAPrototyper: Prototyping an ARA on FPGA가 있음. 앞서 한 내용을 Xilinx Zynq SoC를 활용해 모델링함. Core는 ARM 코어를 사용하고, 가속기는 programmable logic을 활용함.
본 연구팀의 contribution. 가속기의 워크로드 특성 분석 WIICA: Accelerator Workload Characterization (ISPASS’13), 가속기 벤치마크 MachSuite: Accelerator Benchmark Suite (IISWC’14), 가속기 시뮬레이터 Aladdin (ISCA’14, TopPicks’15), high-level synthesis 기반 가속기 설계 제안. 가속기와 시스템을 함께 디자인하는 gem5-Alladin 제안.
참석자의 질문: 서버 측의 가속기 사용에 대해 어떻게 생각하는가? IBM CAPI platform(Power 8과 accelerator를 cache-coherent하게 연결), Intel HARP platform (QPI)에서 CPU와 FPGA를 함께 사용하고자 한다. Mobile SoC가 더 가속기를 많이 사용하는 상황이다. 서버 측면에서는 programmability와 flexibility가 중요하므로 당분간은 CPU, GPU가 많이 사용될 것으로 보인다. Intel HARP v1에서는 같은 패키지 안에 있었는데, HARP v2에서는 CPU, FPGA가 다른 패키지에 들어가있다.


2. Aladdin: Accelerator Pre-RTL Modeling, Sophia Shao
Aladdin은 pre-RTL, power, performance accelerator simulator이다. 수정되지 않은 C-code와 design parameter를 넣어주고, shared memory model을 연결해주면 power/area, performance를 계산해준다. 이는 accelerator simulator로 사용될 수 있고, design assistant로 사용될 수도 있다. RTL을 설계하는 것에는 많은 시간이 걸리는데, 이를 설계하기 이전에 성능을 예측할 수 있게 해준다. 이를 사용하면 flexibility, programmability, design cost 문제 해결 가능.
Accelrator에서 design space란 어떤 것을 의미하는가? Accelerator에서 다양한 design parameter가 있다. 간단한 행렬 연산을 예제로 해보자. HLS를 사용하면 RTL로 변경할 수 있다. HLS는 RTL design process를 단순화해준다. Design paramter를 변경하면서 design space를 탐색할 수 있다. 하지만 HLS는 데이터가 accelerator parameter만 변경 가능하다는 한계. Aladdin은 더 많은 design space를 탐색할 수 있다. Aladdin을 활용하면 accelerator parameter 뿐 아니라, system level parameter까지 함께 수정하며 design space를 탐색할 수 있다. HLS를 활용하면 loop level parallelism, loop level pipelining을 확인할 수 있고, 이를 사용해서 C 코드 가속 성능을 예측한다. Aladin은 dynamic data dependence graph(DDDG)를 활용해 코드에 기반하여, 가속기 구조를 functional unit의 연결로 추상화한다. Aladdin은 C code에 기반하여 IR을 생성하고, 이를 활용해 idealistic DDDG를 생성한다. Idealistic DDDG는 의존성이 적은 경우를 가정한다. Idealistic DDDG에 parameter를 받아 accelerator를 추상화한다. Realization phase에서는 program constraints와 resource constraints를 함께 고려하여 성능을 추정한다. Pareto frontier에 관심있음. Power modeling을 위해서는 각 functional unit에 대해 microbenchmark를 사용함. Aladdin validation을 위해 Aladdin의 결과와 HLS + design compiler의 결과를 비교 분석함. 원래 design space exploration에 52시간이 걸렸는데, Aladdin을 사용하면 7분이면 되었다. Aladdin은 알고리즘에 대한 design space를 생성해준다. Aladdin은 입력에 의존적일 수 있다. Aladdin은 C 코드에 대한 DDDG는 생성해주지만, accelerator 밖의 시스템은 모델링해주지 못한다는 한계점을 갖는다. 미래 가속기 아키텍쳐 모델링에 GPGPU-sim, gem5, cacti/orion2, DRAMSim2를 사용할 수 있지만, sea of small accelerator를 모델링하는 simulator가 없었다. 이를 Aladdin이 해준다.


3. Rapid Hardware Specialization with HLS: Glass half full?, Prof. Zhiru Zhang
Accelerator 연구 하기에 좋은 시점이다. (1) 연산 가속에 대한 요구는 증가하고 있다. (2) 가속기를 활용하기 위한 환경이 조성되고 있음. 한편으로는 연구하기에 힘든 환경이기도 하다. 어플리케이션 가속 타겟이 매우 빠르게 변하고 있음. Deep neural network를 예로 들어보면, 기법 분만 아니라 소프트웨어 스택 또한 빠르게 변한다. CNN의 연산 및 메모리 요구량이 크다. CNN의 개선 버전으로 BNN이 있고, 이를 대상으로 가속하는 과정을 설명함. Challenges: (1) 병렬성을 활용해야 함. (2) sub-word 병렬성을 활용해야 함. 가속기를 활용하는 연구에서 생각보다 많이 accelerator를 활용한다는 점에서 놀랐음. Verilog로 주로 하고 HLS는 사용하지 않을 것으로 생각했는데, 뭐하러 그렇게 하느냐는 정도로 이야기를 해서 약간 놀람. Verilog도 HLS도 잘 알아야 할 것 같다. 물론 이 발표를 맡은 교수님의 연구 주제가 design automation이기 때문에 그럴 수도 있을 것 같다. 어쨌든 CNN의 개선 버전인 BNN을 가속하면서 있었던 문제들과 어떻게 해결했는지 등을 이야기함. pragma를 사용한 최적화를 수행함. unoptimized baseline에 비해 100배의 성능 향상을 보였지만, 부적절한 pragma 사용도 많았다. HLS를 잘 활용하기 위해서는 hardware design skill과 compiler optimization에 대한 지식을 동시에 가져야 한다. annotation을 넣는 것이 어떤 영향을 주는지 이해해야 함. 이 연구팀에서는 programming language, compiler, architecture를 함께 설계하는 것에 대해 연구하고 있음. 결론: HLS를 활용하면 빠르게 하드웨어를 개발할 수 있다. HLS 활용에 여전히 개선해야 할 점이 있다. 프로그래밍 추상화와 성능 개선에 대한 여지가 여전히 있음.


4. PARADE: A cycle-accurate full-system simulation platform for accelerator-rich architectural design and exploration, Zhenman Fang
최근 트렌드는 accelerator rich architecture로 변화하고 있음. Global Accelerator Manager (GAM)은 여러 개의 어플리케이션이 자원을 활용하도록 하기 위한 모듈. 이 연구는 accelerator-rich architecture 연구 도구를 제공하는 것이다. Accelerator-rich architecture의 채택을 빠르게 하는 것이 목표. Intel은 4년 뒤에는 데이터 센터의 30%에서 FPGA를 가지게 될 것이라고 예상. Accelerator-rich architecture modeling을 위해 core modeling에서는 extended gem5(McPAT), accelerator modeling에서는 auto-generated accelerators based on HLS, cache modeling을 위해서는 Ruby를 사용함. HLS-based automatic accelerator generation: 가속기 코드에 기반하여 HLS를 사용해 RTL을 자동으로 합성해 simulation하고, 여기에 application level info를 사용하여 자동으로 가속기를 생성한다. 발표 내용이 너무 구체적이어서 재미가 없었다 (코드 레벨에서 어떻게 쓰는지, 구조는 어떻게 되는지 설명). 관련 논문을 찾아보았고, 훨씬 이해가 쉬웠다. 선진이가 발표 자료 찾아줌.


5. gem5-Aladdin: Accelerator System Co-Design, Sam Xi
가속기 인터페이스를 일반적으로 DMA를 사용한다. 여러 개의 IP를 통합하기에는 좋으나, 프로그래밍이 어렵고 data를 공유하기 어렵다. 가속기 설계 단계에서 전체 시스템을 고려하지 못하고, 가속기만 떼어놓고 설계했었다. 하지만 전체 시스템을 함께 고려하는 것이 필요하다.
typical DMA flow: (1) CPU cache에서 입력 데이터를 flush하고 invalidate한다. (2) 가속기 출력으로 나올 메모리를 invalidate한다. (3) buffer descriptor를 프로그래밍한다. (4) 가속기를 초기화한다. (5) 가속기를 실행한다. (6) 가속기 실행 결과를 가져온다. 하지만 문제는 DMA는 매우 비용이 크다는 점이다. 전체 실행 시간의 20%를 차지하게 된다. 가속기만 떼어놓고 design space를 고려하는 것보다, 전체 시스템을 함께 고려하는 것이 더 큰 design space를 확인할 수 있고, 이는 더 효율적인 옵션을 찾을 수 있다. 이를 위해 gem5-Aladdin을 만듦(SoC simulator).
gem5-Aladdin의 기능. 가속된 워크로드의 end-to-end simulation 가능, hardware-managed cache 모델링, 여러 개의 가속기 지원, system-level study를 가능하게 함.
gem5-Aladdin의 강력한 기능은 DMA engine이다. gem5에 있는 DMA engine을 확장해 accelerator가 쓸 수 있도록 함. cache flush와 invalidation latency에 대한 analytical model 또한 제공한다. Cache와 virtual memory를 지원한다. gem5-Aladdin을 사용하는 두 가지 방법이 있음. standalone, with-CPU 방식이 있음.
Case study로 reducing DMA overhead를 제안한다. DMA는 flush, 전송 단계, 연산 단계로 이루어짐. 첫 번째 optimization으로 flush와 전송 단계를 pipelining하는 기법이 있을 수 있음. 그 다음 단계로 전송 단계와 사용을 pipelining하는 기법이 있을 수 있음. gem5-Aladdin에서는 design space exploration을 위해 Xenon을 사용함. Xenon은 declarative language로, 이를 사용하면 design space exploration이 쉬움.


6. ARAPrototyper: FPGA Prototyping, Zhenman Fang
ARA는 simulation과 실제 칩 사이의 gap을 줄여주기 위한 것. 이 프로젝트에서는 Xilinx Zynq SoC를 사용해 prototyping함. ARA는 ARM + FPGA fabric으로 구성됨. ARA에서 core는 ARM을 그대로 사용하고, sea of accelerator는 FPGA fabric으로 모델링함. 구체적으로는 Xilinx Zynq ZC706을 사용함. Dual-core Cortex-A9이 들어가있음.
ARAPrototyper의 장점: design efforts를 줄여줌. hardware IP를 자동으로 생성해주고, 쉬운 단계를 통해 design 가능. 그 다음으로 evaluation cycle을 줄여줌. native binary를 실행할 수 있고, microarchitecture를 쉽게 수정해 평가해볼 수 있음.
Accelerator design에는 Xilinx Vivado HLS를 사용함. ARA system design에는 microarchitecture를 정의하는 ARA specification file을 사용함. 그리고 추가적으로 push-button flow를 사용하는데, Vivado HLS, Xilinx PlanAhead를 사용함. ARA를 활용해 API를 자동으로 생성해준다.


NOPE (2nd Workshop on Negative Outcomes, Post-mortems, and Experiences)
7. Processor thermal management: from energy harvesting to advanced cooling, Carole Wu
고성능 프로세서를 보면 낭비되는 열이 있다. 신뢰성과 수명을 줄이는 주요한 원인이 된다. 따라서 이를 최대한 줄이기 위해 passive 또는 active하게 cooling을 수행한다. DVFS도 열 발생을 줄이기 위한 한 가지 방법이다. 이같은 열 발생을 회수해서 전기로 사용하고자 하는 시도를 했다. Thermoelectric module을 사용해서 전력을 만들고자 했음. Processor heat management with energy harvesting 기법에 대해 이야기할 것이고, 얼마나 회수 가능한지도 이야기할 것이다. Harvesting으로 시작했지만, 요즘에는 active heat management로 연구를 진행하고 있다.
Thermoelectric generator는 열을 전력으로 변환하는 소자이다. 열 변환 소자 양면의 온도 차이가 크면 클수록 더 많은 전력이 회수될 것으로 예상했다. 실제로 Intel Ivy bridge에 대해 이를 구현해서 실험함.
Lessons learned: 1-core workload 실행했을 때, 0.3W의 전력을 회수할 수 있었다. 4-core workload 실행했을 때 0.8W의 전력을 회수할 수 있었다. 그리고 전력 회수를 위해 삽입한 TEG가 온도를 추가로 높이는 효과를 냈다. 프로세서의 발열이 고르지 않기 때문에, 변동이 심하다.
Thermoelectric generator는 반대로 thermoelectric cooler로 사용될 수 있다. 해당 소자에 전압을 걸면 한 쪽은 온도가 낮아지고, 반대쪽은 온도가 높아진다. TEC를 사용하면 active cooling을 수행할 수 있다. Silicon substrate에 이를 붙여서 온도를 낮추는 것에 사용할 수 있다. 그리고 더불어 해당 소자는 passive cooling 역할을 할 수도 있다. 기존에 쓰이는 재질보다 더 높은 열 전도율을 갖기 때문이다.
ITHERM’16에 발표된 논문에 대한 소개. Thermoelectric-based Sustainable… Power density, heat density가 높아지고 있다. 일부 부분은 100W, 500W/cm^2이 되게 됨. 높은 온도는 문제가 되고, 이를 해결할 필요가 있다. SCOOL을 제안한다. 낭비되는 에너지를 TEG로 모아서 TEC로 cooling한다. 칩에서 파트마다 온도가 다른 것 (temperature heterogeneity)은 비효율을 일으키므로 fine-grained cooling이 필요하다. 칩의 reliability는 hot spot의 온도에 의존한다. hot spot과 cooler area의 온도 차이가 크다. SCOOL은 heat spreader와 heat sink 사이에 들어간다. 온도를 낮출 곳에 TEC를 넣고, 나머지 모든 곳에 TEG를 넣어 에너지를 회수한다.
두 가지 research questions. (1) 어디에 TEG, TEC를 넣어야 하는가? (2) TEG로 회수한 에너지가 TEC로 쿨링할 정도로 충분한가? 요구 전력은 생산 전력보다 낮아야 한다. gem5에서 functional unit의 activity trace를 뽑아내어 열 사용량을 측정함. 이렇게 했을 때 평균 온도는 높아지지만, hot spot의 온도는 낮아진다.
Lessons learned: self-power hot spot cooling mechanism을 제안함. temperature heterogeneity가 칩 효율성을 떨어뜨림을 확인함. 높은 온도가 칩 신뢰성을 떨어뜨림을 확인함. 칩 내 온도차가 큼을 확인함. functional unit 수준의 TEG, TEC placement를 제안함. 높은 온도를 해결했음. 이렇게 하면 CPU fan을 더 적게 돌려도 되므로, 더 높은 에너지 효율성을 얻을 수 있음. harvesting이 없을 때의 optimal보다 harvesting이 있을 때의 optimal이 더 높은 에너지 효율성을 보이게 될 것이다. 생산하기 어려워 보인다는 것이 문제이고, 정말 이 방법이 필요한지가 문제이다. 에너지 변환 과정에서 에너지 손실이 심하다.
스마트폰은 TEC를 적용하기에 좋다. 온도가 신체 온도를 넘어서면 안 되며, fan을 사용한 쿨링이 불가능하다. 따라서 TEC를 적용하기에 좋다. 하지만 TEC를 적용해도 한 면이 쿨링되면 다른 면은 뜨거워질텐데 정말 적용 가능한가?


8. Pre-silicon power-performance modeling and management: challenges and pitfalls, Pradip Bose
The epochs of computing. 1960년대에는 mainframe사용, 1970년대에는 ISA를 효율적으로 활용하기 위한 연구가 활발하게 진행되던 시점. 1980년대에는 microprocessor 시대. x86 아키텍쳐가 개발되고, RISC, CISC 논의가 활발하던 시점. CMOS가 Bipolar 기술을 교체하던 시기. 1990년대에는 성능이 중요해지고 많은 학술적 연구가 진행됨. CISC vs RISC 논의는 계속되었으나, Pentium Pro가 성공하며 이러한 구분을 모호하게 함. 기사 소개 (http://www.marketwatch.com/story/ibm-mainframe-techs-dinosaur-turns-50-2014-04-11). 2000년대에는 power wall이 등장하고 멀티 코어 시대가 됨. 전력 효율성이 중요해지고, SMT가 도입됨. 신뢰성 또한 중요해짐. 2010년대에는 CMP, SMT 패러다임이 지속함. 캐시 구조가 강화되고 있으며, 가속기들이 효율성을 높이고 있다.
Cycle-accurate power-performance modeling 연구 흐름 소개. 1980년대에 Cheetah / America RISC super-scalar simulator 개발. ??? 이야기하고자 하는 것이 무엇인지 잘 모르겠음. Cycle-accurate한 성능 모델링을 해본 경험을 계속해서 설명하고 있음. Power wall에 대해서도 처음 제시한 것 같다. PowerTimer.
1990년대 초에 쓰였던 BRAT cycle-accurate simulator가 성능 차이가 많았다(large margin). trace sampling에도 문제가 있었다. 이러한 문제가 발견됨에 따라 validation에 대한 투자가 시작됨. 그리고 예전에는 power-aware, temperature-aware desgin을 수행하지 않았다는 문제가 있었음. 전반적으로 성능 모델링 연구를 진행한 경험을 이야기하는 발표였음.


9. The unrealized potential of data value speculation, Antonio González
Data value speculation에 대해서 이야기할 것. 1990년대 그리고 2000년대 초반에 많이 진행되던 연구이다. Prediction is very difficult, especially if it’s about the future (Niels Bohr). 초기 제안,멀티코어로의 확장, 산업계의 영향, 그리고 결론에 대해서 이야기할 것. ILP가 제약된다는 것이 근본적인 문제이다. Unbounded window를 가정했을 때의 성능과 128-window에서의 성능에 차이가 있음. Window에 의한 성능 제약을 낮추기 위한 기법이 speculation이다. 구체적인 예제로 control dependence를 제거하기 위한 기법이 branch prediction이다. data predence를 제거하기 위해 적용할 수도 있다. 해당 시점에는 값을 예측하겠다는 주장이 다소 터무니없이 느껴졌을 것. 값을 예측한다는 것은 어렵게 여겨졌기 때문이다. 하지만 실제로 어떤 값들은 예측 가능하다. 어떤 명령어들은항상 같은 결과를 낸다. load from an invariant의 경우에는 last value predictor를 사용해 결과를 가져올 수 있을 것. 어떤 값들은 단순한 사칙연산으로 예측 가능하다. array traversal의 경우가 그렇다. 어떤 명령들은 반복되는 순열을 만든다. 이런 경우에는 context-based value predictor를 사용하면 된다.
그렇다면 값 예측은 얼마나 잘 되는가? 세 가지의 predictor에 대하여 다른 크기의 history table에 기반하여 예측해보았다. 얼마나 많은 것이 맞는지 확인해봄. 약 50%의 정확도로 SPECInt 예측, 더 높은 정확도로 SPECFP 예측. 이처럼 값 예측 가능성을 보았고, 값 예측의 정확도를 개선해나갔다.
하지만 실제 성능 개선은 moderate했다. 이 기법을 적용하는 실제 프로세서는 없다. 왜 성공적이지 못했나? 예측 정확도가 충분히 높지 못했다. 일반적으로 branch predictor는 수백 명령어마다 작업을 수행한다. 같은 수준의 정확도를 가지려면 아주 높은 정확도를 갖는 predictor를 구현해야 한다(99%). 다음으로 validation을 위해서는 실행을 해서 결과를 비교해야 한다는 문제가 있다. 이는 latency를 길게 할 뿐 아니라, validation 완료 시점까지는 commit이 불가능하다는 문제가 있다. 그 다음으로 fetch, commit이 프로그램 순서로 진행되어야 한다는 문제가 있다. 따라서 이를 통해 얻을 수 있는 성능의 이득이 instruction window에 제약된다.
이러한 문제에 직면하고 이 연구팀에서는 몇 개의 중요한 명령어를 예측하는 것에 목표를 둔다. Speculative multithreading을 목표로 둠. 이를 통해 instruction window의 제약을 극복할 수 있을 것으로 기대함. 프로그램 병렬화는 효과적이지 못했다. 손수 병렬화하는 것은 많은 경우에 어렵고, 컴파일러의 병렬화는 너무 보수적이라는 문제점이 있다. ILP를 제약하는 것이 무엇인지에 대한 연구는 있었으나, TLP를 제약하는 것이 무엇인지에 대한 연구는 없었다. 이에 대해 확인해보았더니, 많은 어플리케이션의 TLP가 10을 넘지 못했다(많은 연구들이 미래에 1000개 넘는 코어를 서용하게 될 것이라고 이야기 함에도 불구하고). 이러한 의존성을 해결하기 위해서 speculative multithreading을 제안한다. speculative threads를 지원하고자 하는 것이 핵심 아이디어이다. 보수적으로 갈 필요 없이, 의존성이 해결되지 못해도 data value prediction으로 병렬 실행할 수 있다. 물론 이러한 경우에는 spculation이 맞는지 확인하기 위한 하드웨어 및 소프트웨어 지원이 필요할 것. misspeculation은 전력 손실을 일으키지만, 이미 ILP가 매우 speculative하다는 점을 고려하면 ILP, TLP의 low-hanging fruit을 가져가는 것도 좋다. anaphase compiler 연구 소개.
이러한 기법이 왜 실제로 적용되지 못했나? 프로그램의 특성에 크게 의존한다.이미 병렬성을 충분히 많이 활용하는 경우에는 speculation할 필요가 없다. 병렬화할 수 없는 경우도 있다. 그리고 하드웨어 오버헤드가 크다는 문제가 있다. Intel은 하스웰부터 transactional memory를 지원하고, IBM은 POWER8부터 transactional memory를 지원한다. 컴파일러에는 한계가 있으므로, 여전히 많은 부분은 프로그래머의 역할로 남아있다.
많은 경우에 우리는 복잡성에 대해 무시하는 경우가 있다. 시뮬레이터에서 구현하기 쉽다는 것이 하드웨어에서 구현하는 것이 쉽다는 것을 의미하지는 않는다. 그리고 성능 모델과 전력 모델과 부정확하다는 문제가 있다. 정량적인 분석을 목표로 하지만, 실제로는 모델이 정확하지 않다. 너무 정량적인 분석에 의존하는 것 같다. 때로는 정성적인 분석이 필요하기도 하다. 어떤 점이 왜 동작하는지, 어떤 것이 장점인지 등을 분석하려는 노력이필요하다. 더 자세한 성능 모델링이 필요하다. 단순한 평가를 위한 도구가 아닌, 분석을 위한 도구가 필요하다. 더 다양한 종류의 벤치마크가 필요하다.


10. Through fire and flood – what it took to get Catapult into production, Andrew Putnam
Intel이 Altera를 산 것은 Catapult 때문. Catapult는 두 배의 검색 성능 개선을 이룸. Bing은 2009년에 시작함. 2010년에 Doug Burger & Jim Laurus가 성능 최적화를 시도함. 연말에 FPGA 가속기를 설계함.
2011년에 검색에 5ms 걸림. FPGA에서 8us걸림. 소프트웨어 기반 검색이 추후 최적화를 통해 125us까지 떨어짐. Bing ranking stage는 크게 세 단계로 나뉨. FPGA 가속한 부분은 200배 빨라졌지만, 전체 프로세스를 고려하면 2배 개선에 그침.
논문을 발표하는 것은 쉬웠지만, 실제로 만들기에는 쉽지 않았다. FPGA를 실제로 데이터센터에 넣어야 한다. FPGA를 한 곳에 몰아두는 곳은 좋은 설계가 아님. single point of failure가 발생할 수 있기 때문이다. 따라서 분산해서 연결하기로 결심함. FPGA를 사용하면 throughput은 두 배 개선, latency는 29% 개선됨.
하지만 다른 문제가 있었음. Bing이 아닌 Azure가 더 큰 워크로드가 됨. FPGA 가속의 대상이 Bing 뿐만 아니라 다른 워크로드도 됨. Computer acceleration은 application-specific하다. Infrastructure acceleration 은 모든 워크로드에 대해 성능 이득을 볼 수 있다(네트워크 가속). 네트워크 출력을 FPGA로 가도록 하고, FPGA에서 다시 스위치로 네트워크를 연결하여 두 가지 목적을 모두 달성할 수 있다. Compute & infrastructure acceleration. 여러가지 장점이 있음을 강조함. Stay optimistic. Keep going.
ASIC으로 굽는 것도 방법이 될 수 있지만, 이미 FPGA 보드에 있는 것을 사용하는 것이 편하기도 하고, 성능 개선 및 재프로그래밍에 편하다는 장점이 있다.
Intel + Altera HARP에 대해 질문함. 처음에는 내가 질문을 잘못 이야기하기도 하고, 발표자도 의도를 못 알아들어서 다시 질문함. 간단하게 요약하자면 QPI로 연결한 HARP와 같은 형태는 실제로 사용될 경우가 적다는 것이다. 본인이 틀렸을 수도 있지만 적어도 지금까지는 cache coherent하다는 점, CPU-FPGA 사이에서 빠르게 통신하는 장점을 살릴 수 있는 경우를 찾지 못했다고 한다.

Advertisements
Tagged with: , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 96,190 hits
%d bloggers like this: