20161017

1. Internet of Things: History and Hype, Technology and Policy
기술과 연구자들의 역할이 무엇인지 생각해보자. What is the Internet of Things? IoT를 활용하면 지진 그리고 허리케인 등을 탐지할 수 있다. Gartner hype cycle을 보여주며 신기술에 대한 기대가 얼마나 빠르게 증가하고, 또 얼마나 빠르게 줄어드는지 보여줌. 버블이 끝난 다음에 지속적인 발전이 계속된다. 25년 전에는 컴퓨터의 성능이 크게 낮았음. 당시의 IoT는 토스터기를 켜고 끄는 정도. 요즘의 IoT는 주문하는 버튼, 먹는 양을 조절하는 포크 등까지 발전함. IoT는 다양한 가능성을 제공하지만, 마찬가지로 위험도 제공한다. 정책적으로는 이러한 위험에 대비한 규제를 개발할 필요가 있다. 기술자들은 기술적인 기회를 찾아야 한다. 아키텍트는 안전하고 고성능의 에너지 효율적인 하드웨어, 인터페이스, 추상 레이어를 제공해야 한다.
오늘은 전력, 개인 정보, 보안에 대해서 중심을 두고 이야기할 것. IoT에 전력 문제가 있다. IoT 장치가 여러 곳에 deploy되었을 때, 이들이 전력을 낭비하면 안 된다. 그리고 사람 신체 내에 설치되었을 때 열 발생이 심하면 안 된다(조직 손상 유발). 아키텍트는 IoT 전력 문제를 해결해야 한다. energy harvesting이 한 가지 방법이 될 수 있을 것. 통신에서 에너지 손실이 심함. 통신 에너지가 연산 수행에 필요한 에너지보다 천 배 정도 많음. 이를 해결하기 위해 두 가지의 균형을 찾아야 한다. 통신에서의 에너지 소모를 줄이기 위해서는 두 가지가 필요함. 첫째로, 통신 범위를 줄임으로써 에너지 소모를 줄일 수 있음. 두 번째로, 압축해 통신함으로써 통신 오버헤드를 줄일 수 있음.
IoT에서는 보안이 중요함. 국가 기간 시스템에 해킹이 발생하면 그 피해가 심각하기 때문이다. IoT는 보안과 안전성에 대한 요구 사항을 늘리고 있고, 이를 해결하기 위한 많은 연구가 진행되고 있다 (SGX, TrustZone…). 그리고 IoT 환경에서는 data consistency가 중요하다. Consistency, coherency error를 사용해서 Rapsberry Pi 2에서 AES key를 추출해내는 공격을 보여주었다. CCICheck, PipeCheck, ArMOR, COATCheck, 등의 연구를 수행함. formal specification 또는 happens-before graph에 기반하여 consistency 확인을 수행한다. 해당 연구 결과들을 활용해 simulator, coherence mechanism, compiler, processor 등에서의 consistency 오류를 검증함. Consistency를 어떤 수준에서 보장할 것인지도 중요하다. Coarse-grained? Fine-grained? 미국인 87%가 생일, zip-code, 성별로 unique하게 확인 가능하다. 이러한 공격을 막기 위해 differential privacy라는 것이 발생함.


2. SABRes: Atomic Object Reads for In-Memory Rack-Scale Computing
원격 메모리에서 데이터를 가져오는 것에 대한 연구이다. 서비스들은 데이터 센터를 사용하고 있고, 이 과정에서 원격 메모리 접근이 발생한다. RDMA를 활용하면 원격의 메모리를 쉽게 받아올 수 있다. 원격 메모리를 읽는 과정에서 전송 이후에 atomicity를 확인하고, 이것이 객체 읽기 시간의 50% 걸린다. 대부분의 객체 저장에서 쓰기는 드물게 일어나고, 읽기는 많이 일어난다. software를 활용한 object read atomicity 메커니즘이 제안됨. FaRM에서는 데이터마다 버전을 두어 이를 확인한다. 하지만 이 과정에서 오버헤드가 발생한다. 현재의 RDMA에서는 전체 15%에 SW atomicity check 시간 소요됨. soNUMA와 같이 네트워크가 더 빠라지면 이러한 오버헤드가 차지하는 비율은 더 커질 것이다. 그리고 software atomicity overhead는 객체 크기가 커짐에 따라 성능의 50% 오버헤드를 차지하게 됨. 하드웨어 기반의 atomicity 보장 기법이 필요하다. SABRes는 low latency & high throughput, lightweight HW support, detect atomicit violations early를 목표로 한다. network interface가 coherent하게 통합된 것을 활용한다. software-hardware co-design을 목표로 함. 원격지의 메모리 읽기 연산이 일어나면, 데이터의 버전을 읽고, 데이터를 읽는다. 그리고 데이터의 버전을 다시 읽어 atomicity를 확인한다. 이 과정에서 version이 달라지면 abort한다. 이 과정을 network interface가 한다는 것 같다. 이 과정을 통해 atomicity 확인의 효율성을 높일 수 있음. 이러한 하드웨어 확장을 활용하면 version stripping에 필요한 성능 오버헤드를 획기적으로 줄일 수 있다. end-to-end latency를 35~52% 줄일 수 있다. FaRM, soNUMA 관련 논문을 잘 알지 못해서 어려웠지만, 그래도 하드웨어 기반으로 원격 객체 읽기를 가속한다는 점에서 마음에 들었다.


3. A Cloud-Scale Acceleration Architecture (paper)
Reconfigurable cloud를 제시한다. Reconfigurable cloud는 세 개의 계층으로 이루어짐. 바깥쪽은 CPU layer, 내부에는 network로 이루어진다. 그리고 그 사이에 reconfigurable compute layer가 깔린다. Performance scaling의 한계에 달함에 따라, specialization이 성능에 중요한 요소가 되었다. 따라서 post-CPU enhanced cloud가 필요하다. Specialized accelerator는 많이 제안되었지만, inflexible하다. Catapult v0은 우수한 성능을 내었지만, 유연성이 떨어지고 single point of failure, slow network to hosts의 문제가 있었다. 이를 해결하기 위해 Catapult v1를 제안함. 각 블레이드마다 1개의 FPGA를 갖도록 하고, PCIe를 사용해 local FPGA에 접근 가능하다. 가속기는 torus 네트워크로 접근 가능하지만, rack-level elasticity 문제가 있었다. Configurable cloud는 가속을 목표로 하며, 대량 워크로드를 대상으로 한다. 그리고 유연성을 가져야 한다. Catapult v2를 만들었다. Torus network를 ethernet network로 변경했고, 이를 통해 더 높은 유연성을 갖게 되었다. 성능을 높일 뿐 아니라, 경제성도 갖는다. 로컬 가속 뿐 아니라, 네트워크로 나가거나 들어오는 요청의 가속 또한 가능하다. FPGA로 구현해 요청을 처리하면 latency가 짧을 뿐 아니라, variation도 적다. Microsoft azure에서 software defined networking을 가속하는 것에 FPGA를 사용함. 40Gb line rate 암복호화 또한 가능함. CPU stack위에 FPGA stack을 올림으로써, offloading 가능한 것은 완벽히 offloading하고, 또는 가속할 수 있다. Gen2 shell이라는 것을 만듦. FPGA 네트워크 인터페이스 정의를 위한 것인 듯. 이렇게 구현한 것을 shared DNN에 사용할 수 있음. 대부분의 accelerator는 한 개의 호스트가 감당하지 못하는 throughput을 갖는데, FPGA를 연결해 이를 달성할 수 있다. Consolidation도 가능하다. Configurable cloud는 post-CPU 데이터 센터로, reconfigurable computation plane을 갖는다.

decoupled programmable hardware plane.PNG


4. pTask: A Smart Prefetching Scheme for OS Intensive Applications
OS-intensive application은 application context와 kernel context 사이의 전환으로 인한 성능 저하가 크다. 이를 해결하기 위한 다양한 기법이 제안되었으나, 이 논문에서는 prefetch를 통해 문제를 해결하고자 한다. 두 개의 운영체제 이벤트 사이의 작업을 HyperTask로 정의하고, HyperTask 전환 시점에 prefetch를 수행함으로써 성능을 향상한다.

pTask execution overview.PNG


5. Register Sharing for Equality Prediction
value prediction을 통해 ILP를 높일 수 있다. 많은 명령어들은 예측할 수 없는 결과를 낸다. 같은 결과를 낼 것 같은 명령어를 예상하고, 이를 기반으로 값을 예측한다. iDist를 정의한다. 같은 결과를 내는 명령어 사이의 거리. instruction distance를 추정하기 위한 기법으로 TAGE를 선택함. fetch 단계에서 distance를 추정하고, rename 단계에서 뭔가 한다? Commit sequence number에 기반하여 같은 결과를 내는 명령어의 짝을 찾는다. 이를 위한 가능한 아키텍쳐 옵션을 제시한다. 이 연구에서는 FIFO 기반으로 짝을 찾는다. 같은 결과를 내는 명령어들을 연결해주어야 하고, 이를 위해 physical register sharing을 수행한다. rename 단계에서 idist를 사용해 물리적인 physical register index를 찾고, 이를 기반으로 sharing을 수행한다. inflight shared register buffer를 사용해 sharing을 수행할 수 있다. gem5에서 Haswell like processor (8-wide, 15 cycles, 4GHz)로 실험함. SPEC CPU 2006을 대상으로 실험.


6. Data-Centric Execution of Speculative Parallel Programs
매니코어 시스템은 cache locality를 살려야 한다. speculative system은 locality를 살리지 않는다. spatial hint를 활용한다. Speculative sysem의 scalability가 떨어지는 이유. 언제 작업을 실행할 것인지가 아닌, 어디에 실행할 것인지를 고려해야 한다. 공간적인 locality를 살리기 위해 노력해야 함. Non-specultaive locality technique 소개. Static task mapping은 data dependences known a priori, graph partitioning 등이 있음. Dynamic task mapping은 work stealing이 있음. 각각의 장단점을 소개함. Baseline architecture는 MICRO’15에 발표된 SWARM. SWARM은 task를 out of order로 실행함. task queue가 크고, scalable ordered speculation, scalable ordered commits를 지원함. Spatial hints에 대해 소개. data movement를 줄이는 기법이 필요하다. 동적으로 hint를 얻어 실행하는 기법이 필요함. Spatial hint는 작업 생성 시점에 동적으로 생성되는 정수 값이다. 데이터 이동을 타일 내로 한정시키는 것이 목표이다. 어플리케이션에 힌트를 더하는 것에 대해 소개. 추가적인 코드를 통해 힌트를 더할 수 있음. 어플리케이션별로 어떤 힌트를 쓸 것인지 소개. Pin-based simulator를 사용했으며, 256-core, 64-tile chip을 대상으로 함. SWARM을 기반으로 했기 때문에 background 이해가 어려웠음. 현재로서는 수동으로 spatial hint를 찾는다는 점이 한계이다.


7. From High-Level Deep Neural Models to FPGAs
FPGA는 programmability가 크게 떨어진다는 문제가 있다. CPU > GPU > FPGA > ASIC 의 순서. 첫 번째로 translator가 필요함. Caffe의 high-level DNN model을 DNN Weaver ISA로 전환한다. DNNs를 macro-dataflow graph로 표현한다. Data graph에 기반하여 FPGA를 프로그래밍하겠다는 것?


8. vDNN: Virtualized Deep Neural Networks for Scalable, Memory-Efficient Neural Network Design
뉴럴 넷 연구는 계속해서 deep한 방향으로 가고 있다. CPU-GPU page migration에 20~50us가 걸린다. DNN 학습에 10s of GB memory allocation이 필요하다. 뉴럴 넷이 깊어질수록 메모리 대역폭 사용량이 늘어난다. 이 연구에서는 virtualized DNN을 제안한다. CPU, GPU memory를 함께 사용하도록 DNN 메모리를 가상화한다. feature map이 메모리 사용량의 대부분을 차지한다. 그리고 feature map의 reuse distance가 길다. DNN 연산 흐름은 directed acyclic graph이다.


9. Stripes: Bit-Serial Deep Neural Network Computing
?? 재미없고 이해도 안 되어서 다른 곳으로 옮겨옴.


10. Cache-Emulated Register File: An Integrated On-Chip Memory Architecture for High Performance GPGPUs
GPU는 다양한 어플리케이션의 가속에 사용되고 있다. GPU는 많은 연산 유닛을 갖고 있는데, CPU와 달리 GPU는 레지스터파일에 쓰이는 메모리 크기가 더 크다. GPGPU 성능에 캐시는 중요하다. Thrashing을 해결하는 것에 두 가지 방법이 있다. smarter cache 또는 larger cache. Smarter cache는 cache 관리 기법을 개선하는 것. larger cache는 캐시 크기를 늘리는 것. 하지만 자원이 더 필요하다는 문제가 있다. register file은 underutilization의 문제를 갖는다. register와 cache의 차이점이 줄어들고 있다. integrated on-chip memory architecture를 제안함. 관련 연구 소개 RF caching, cache bypassing, unified memory. Underutilized register file을 cache로 사용해서 성능 향상을 도모한다. GPGPU on-chip memory hierarchy를 단순화한다.


11. Zorua: A Holistic Approach to Resource Virtualization in GPUs (paper)
570-Zorua.png
지금의 시스템에서 GPU의 자원은 프로그래머에 의해 프로그래밍 시점에 정적으로 할당된다(thread slots, registers, scratchpad). 하지만 지금과 같이 정적으로 자원이 할당되는 것은 문제를 일으킬 수 있다. 크게 세 가지 문제가 있다. (1) programming ease, (2) portability, (3) performance. (1) programming ease: 어떻게 자원을 할당하는 것이 최적인지 모르기 때문에 프로그래밍이 어렵다. (2) portability: 한 아키텍쳐에서는 최적 할당이었을지라도, 아키텍쳐가 달라지면 최적이 아닐 수 있다. portability가 떨어진다. (3) performance: 실행 중에 자원 요구량이 달라지기 때문에, 정적 할당으로는 한계가 있다. 이 논문에서는 물리적인 자원 할당과 자원 사용을 분리하는 GPU 자원 가상화 프레임워크인 Zorua를 제안한다.
프로그램 가속에 대한 요구의 증가로 인해, GPU가 사용되는 곳은 증가하고 있다. GPU에서 한 개의 thread가 실행되기 위해서는 thread slot, register file, scratchpad memory가 필요하다. 이러한 자원들은 프로그래머와 소프트웨어의 정의에 의해 관리된다. 하지만 앞서 설명했듯이, resource specification과 allocation 사이에 강한 연관이 있다는 것이 문제이다. 크게 두 가지 종류의 underutilization이 발생할 수 있다: static underutilization, dynamic underutilization.
Static underutilization에 대해서 살펴보자. HW에서의 thread slot이 thread의 수보다 많은 경우에는 static underutilization이 발생한다. 20개의 slot이 있고, 10개의 쓰레드가 있다면 동시에 두 개의 쓰레드 블록을 실행할 수 있지만, 한 블록에 11개의 쓰레드가 있다면 한 개의 블록밖에 실행하지 못한다. 다른 종류의 자원들에도 마찬가지의 문제가 있다(register file, scratchpad memory). 블록 안의 쓰레드 수를 증가시켜가며 성능을 보면 performance cliff를 볼 수 있다. 이처럼 소프트웨어 수준에서 자원 할당이 성능에 큰 영향을 미친다. 뿐만 아니라 아키텍쳐에 따라 성능 최적점이 다르다. performance portability가 떨어진다. 다른 GPU에 따라 새롭게 tuning되어야 한다. 다음으로 dynamic underutilization에 대해서 살펴보자. GPU 어플리케이션의 실행 phase에 따라서 실제로 필요로 하는 자원이 계속해서 달라진다.
programming ease, portability, performance optimzation을 위해 이 연구에서는 Zorua를 제안한다. programmer, software 영역과 하드웨어 자원을 분리하고, 그 사이에 자원을 가상화하여 제공한다.

zorua GPU resource virtualization.PNG

가상화를 어떻게 해야 할 것인가? Static underutilization을 해결하기 위해 oversubscription을 허용하고, dynamic underutilization을 해결하기 위해 phase에 기반해 자원을 동적으로 할당한다. Zorua는 크게 세 부분으로 이루어진다. Compiler, coordinator, hardware로 구성됨.

Zorua platform.PNG

Compiler 수준에서는 자원 요구량을 파악해 phase를 구분하고, 명령어를 삽입해 요구 자원을 하드웨어에게 알린다. Coordinator에서는 동적으로 oversubscription 결정을 내리고, 자원의 coordination을 맡는다. 그리고 하드웨어적으로 이를 지원하기 위한 구조들이 필요하다. 이 구조들이 virtual resource와 physical resource 사이의 동적 매핑을 유지해준다. Onur 교수님의 학생들 슬라이드는 깔끔하고 intuitive한 것 같다. 색감도 좋고 글자도 잘 보임.


12. GRAPE: Minimizing Energy for GPU Applications with Performance Requirements
상호작용하는 어플리케이션이 GPU에서 실행되는 경우가 많음.


13. NeSC: Self-Virtualizing Nested Storage Controller (paper)

an outline of NeSC architecture.PNG

저장 장치가 빨라지고 대역폭이 넓어짐에 따라, 가상화된 환경에서의 bottleneck이 저장 장치가 됨. 가상 머신이 직접 장치에 접근하게 함으로써 성능 오버헤드를 줄일 수 있으나, 성능 오버헤드가 발생함. 이러한 성능 오버헤드를 줄이면서도 격리를 제공하기 위한 기법으로 nested storage controller(NeSC) 아키텍쳐를 제안한다. NeSC는 SR-IOV를 활용해 물리적으로 한 개의 저장 장치를 여러 개의 가상 머신이 고성능으로 공유하고, 격리 환경은 여전히 제공한다.

Advertisements
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

누적 방문자 수
  • 93,420 hits
%d bloggers like this: