20160620

1. Quantum and Cryo and DNA, oh my! Sights Along the New Yellow Brick Road
Wizard of Oz. 1900년대 소설, 1939년 영화. Emerald city: place of answers and hope, Yellow brick road: golden path to answers and hope. 예전에는 아이디어 얻기도 쉽고 성능 향상도 쉬웠으나, 요즘에는 어려움. 가능한 미래: quantum computing, cryogenic computing, DNA storage. 이들이 먼 미래로 보였으나, 실제로는 생각보다 가까움. Quantum computer를 태블릿을 사용해 접근할 수도 있다.
Early lessons: 1) Fundamentally different than CMOS, 2) At least two orders of magnitude improvement, 3) Manipulation of information at a fundamental levels. Quantum computing은 원자 이하의 수준에서 조작해서 데이터 연산. Crypogenic computing은 kTln2(?), DNA storage는 생물학적 요소를 사용해 데이터 저장.
Quantum computing에 대해서 설명. Quantum computing을 하는 이유? Dennard scaling is over, Moore’s Law will eventually end. 왜 quantum computing을 지금 하는가? thinkers – builders – improvers – producers가 함께 기술을 발전시켜나가는데, 현재 buildes가 활동하는 단계. Quantum computing을 사용하면 지금까지 풀지 못한 문제들을 풀 수 있게 될 것이다. 식량 문제, 기후 변화 문제, 그 외의 과학적 문제 등. Harmut Neven은 미래에는 quantum machine learning만이 있을 것이라 이야기함. Quantum computer의 구성에 여러 개의 인터페이스가 필요한데, 따라서 온도 관리도 중요하다고 함. CMOS는 상온에서 동작하고, Qubit은 절대 영도에 가까운 온도에서 동작하기 때문이다. Flux Qubit, Topological Qubit 모두 10개 정도의 배선이 필요하다. Qubit의 구조에 다양한 종류가 있는 것 같음. 그리고 여러 qubit 구조 중에서 무엇이 정말 쓰일지는 모름. Flux qubits (D-wave), gatemons, (trans, x) mons, spin qubits (quantum dots), Si P qubits, topological qubits (Microsoft가 사용), ion tras 등. 각각의 특성이 다른 것 같음. Decoherence 특성이 다르다고 함. Quantum gates가 DRAM하고 비슷하다는 이야기도 하는 것 같음. DRAM bits leak charge -> decoherence. DRAM software errors -> ?(넘어가버림). Liquid라는 언어(?)가 있는데, 이를 사용해 프로그램을 짜면 quantum qubits 레벨에서 회로가 구성되고(FPGA처럼), 이를 사용해 연산한다고 하는 것 같음… 잘 모르겠음… 이러한 quantum computer를 제어하려면 제어 논리가 매우 고성능이어야 한다고 함.
Cryogenic computing. 현재의 전통적인 컴퓨터는 상온에서 동작함. 현재 우리가 사용하는 것은 CMOS. Data는 1.3V, energy는 10^-15J, 3Gz. Cryogenic logic에서는 data는 더 낮은 전압으로 표현, 에너지도 더 적으며, 동작 속도는 훨씬 빠르다. 현재의 quantum computer는 절대 영도에 가까운 온도에서 동작하고, 하지만 전통적인 컴퓨터와의 인터페이스를 필요로 함. 동작 온도에 문제가 있으므로 인터페이스가 충분하지 못한데, 이를 해결하기 위해 중간 레벨에서 cryogenic computer를 넣어주자는 것. 낮은 온도에서 동작하는 컴퓨터를 끼워넣으면, quantum computer는 cryogenic computer와 높은 대역폭으로 통신하고, 마찬가지로 calssical computer도 cryogenic computer와 높은 대역폭으로 통신할 수 있다. 현재의 낮은 대역폭 문제를 해결할 수 있는 것이다. 어쩌면 classical computer에서 cryogenic computer로 전적으로 넘어갈 수도 있을 것.
DNA storage. DNA는 높은 수준으로 집적 가능하며, 500년 넘게 보존 가능하다. Data center에 있는 모든 정보를 한 숟가락 안에 담을 수 있을 것. Elecro chemical 기법을 사용해 메모리에 기록하듯 DNA를 성장시킬 수 있고, optical 기법을 통해 projector처럼 사용할 수 있음.

2. Asymmetry-Aware Work-Stealing Runtimes
Work-stealing, static asymmetry, dynamic asymmetry를 동시에 고려. Work stealing은 코어 사이에 작업을 분배하는 것. Work stealing을 통해 성능을 향상할 수 있다. Static asymmetry, dynamic asymmetry에 대한 설명. Samsung Exynos Ocat mobile processor는 static asymmetry의 예. Little core + big core로 구성된 시스템. Integrated voltage regulation은 dynamic asymmetry의 예. 지금까지 세 가지 차원 중에 두 가지를 조합한 연구는 있었다. 하지만 세 가지 모두를 조합한 연구는 처음이다. First-Order modeling에 대한 설명. Big + little core로 구성된 static asymmetry system에서,전력을 잘 조절하면 같은 전력으로 더 높은 성능을 낼 수 있다. Big core를 조금 느리게 해서 여유 전력을 얻은 뒤, 이를 little core 가속에 쓰는 것. 같은 전력으로 더 높은 성능을 찾는 효율적인 기법을 찾고자 함. 모든 코어가 작업을 가진 상황에서는 work-pacing을 적용. 같은 전력으로 가장 높은 성능을 내는 지점을 찾는다. 모든 코어가 작업하지 않는다면 저전력으로 work stealing하도록 한다. 각 작업 패턴에 따라 코어의 DVFS 정책을 결정한다. Work mugging mechanism은 이해하지 못함. 어쨌든 조금 더 효율적으로 big core / little core를 사용하며, 이 탐색 과정을 효율적으로 하겠다는 내용인 것 같음. Little core에서 실행되는 작업을 big core에서 실행되도록 함으로써 성능을 높이겠다는 것이 mugging인 것 같음. 성능 향상 및 전력 절감을 동시에 달성할 수 있음.

3. Morpheus: Creating Application Objects Efficiently for Heterogeneous Computing
입력으로부터 어플리케이션 오브젝트를 생성하는 것이 전체 실행 시간의 64%를 차지함. 입려 데이터가 매우 많아지고 있음. 현재의 컴퓨팅 모델에서 어플리케이션이 파일을 분석하기 위해서는 해당 파일을 메모리로 올린 뒤, 이 중의 일부를 코어에 올리고, 오브젝트로 만든 뒤, 메모리에 저장하고, 필요한 경우에 다시 GPU에 넘겨서 연산한다. 데이터를 연산해서 오브젝트를 생성하는 과정에서 매우 많은 트래픽이 발생한다. 해당 연구에서 전체 실행 시간 중에 얼마나 많은 시간을 오브젝트 생성에 쓰는지 분석함. 64%의 실행 시간을 오브젝트 생성에 사용하고 있다. 이러한 이유 때문에, 오브젝트 생성이 많은 워크로드의 경우에는 고속의 저장 장치가 도움이 되지 않는다 (실험 결과 있음). 이러한 결과를 볼 때, 저장 장치의 속도가 문제가 아니라 컴퓨팅 모델 자체에 문제가 있음을 확인할 수 있다. PCI express를 사용하면 저장 장치에서 GPU로 바로 데이터를 바로 보낼 수 있다. 하지만 실제로는 이와 같은 경로를 따르지 않음. 연산 이전에 어플리케이션 객체를 생성해야 하기 때문에 결국에 앞의 경로를 따라야 한다. 일반적인 어플리케이션 모델에 문제가 있고, 이를 해결하기 위해 새로운 모델인 Morpheus를 제안한다. 현재의 모델과 달리, Morpheus는 SSD의 연산 능력을 활용한다. SSD가 바로 객체를 생성해서 메모리에 보내고, 이 객체들을 바로 사용한다. CPU가 객체를 받고 싶다는 요청을 보내면 SSD가 메인 메모리 또는 GPU의 메모리를 직접 접근하여 데이터를 전송한다. Morpheus를 사용하면 시스템의 오버헤드를 우회할 수 있다. 그리고 P2P data communication의 장점을 살릴 수 있다. 시스템의 인터커넥트 트래픽을 줄일 수 있다. 에너지 사용량도 줄일 수 있다. Morpheus model을 구현하기 위해 운영체제와 라이브러리를 조금 수정해야 한다. Morpheus NVMe Driver, Morpheus runtime, NVMe-P2P가 필요하다. SSD와 시스템을 인터페이스하기 위해 Morpheus NVMe가 필요하다. 호스트 컴퓨터가 non-volatile memory devices와 통신하기 위한 인터페이스를 정의한다. 제안하는 시스템을 사용하면 32~39배의 성능 향상이 가능하다. 워크로드는 bfs, gaussian, hybridsort, kmeans, lud, nn, srad, JASPA, CC, PageRank. Morpheus model을 사용하면 전력 절감 또한 가능하다. Morpheus 어플리케이션은 CPU의 성능보다 GPU의 성능에 민감하다. 그만큼 직접적으로 GPU를 사용한다고 볼 수 있음

4. Towards Statistical Guarantees in Controlling Quality Tradeoffs in Approximate Acceleration
Approximate computing을 통해 성능을 높이고 에너지 효율성을 높일 수 있다. 전체 프로그램 중에 일부 가속 가능한 영역을 approximate해서 실행할 수 있다. 비슷한 결과를 내면서 훨씬 더 빠르게 실행할 수 있다면 큰 도움이 될 것이다. Energy-performance-error의 삼차원에서 특정 수준의 quality를 보장해주고 하는 것이 목표이다. 이상 호출 현상을 해결해야 한다. 가속기 입력을 보면 해결 가능하다. 최종 에러의 수준을 제어하고 싶은데, 현재 알고 있는 것은 local error 뿐이다. local error에 대한 threahold를 지정한다. 어떻게 QoS를 보장할 것인가? 통계적인 기법을 사용해서 보장한다. Statistical optimizer. 입력 데이터셋을 가지고 original과 approximate를 비교한다. 그 오차가 threshold를 넘는지 아닌지 확인한다. 그리고 다양한 데이터 셋을 가지고, 미지의 데이터 셋에 대해서도 오차가 허용 가능한 수준인지 통계적으로 확인한다. 학습된 메커니즘을 사용해서 입력 데이터를 original코드로 실행할 것인지, 아니면 approximate하게 연산할 것인지 결정하는 것 같음.

5. Back to the Future: Leveraging Belady’s Algorithm for Improved Cache Replacement
Cache replacement policy는 어떤 캐시 블록을 내쫓을 것인가를 결정하는 것. 많은 연구가 있었다. Belady’s Optimal Algorithm은 가장 먼 미래에 접근될 캐시 블록을 내쫓고자 함. 실제로는 미래를 알 수 없으므로 휴리스틱을 사용한다. LRU는 최근에 접근하지 않은 것을 내쫓음. MRU는 쓰래싱하는 것을 내쫓음. 행렬 연산을 보자. A * B = C 일 때, A는 medium-term reuse, B는 long-term reuse, C는 short term reuse를 보임. 이에 대해 다른 교체 정책들을 비교해 봄. 수십년간 캐시 교체 정책을 연구했으나, 여전히 OPT에는 미치지 못하고 그 격차가 크게 줄어들지 못했음. 과거의 캐시 행위에 OPT를 적용해보고, 이를 미래에 다시 적용하고자 함. 문제는OPT가 임의의 먼 미래를 본다는 것. 이를 확인해보기 위해, 미래를 얼마나 아느냐에 따라 성능이 얼마나 달라지는지 측정해 봄. 캐시 크기 8배의 cache access를 보면 무한한 것을 보는 것과 거의 유사하다. OPTgen을 제안한다. online, sampling을 적용한다. OPTgen을 사용해서 PC-based predictor를 학습한다. 그리고 이후에 predictor의 결과를 기반으로 우선순위를 결정해 캐시에 삽입한다. Cache replacement championship simulator를 사용함. SPEC 2006을 워크로드로 사용했으며, LRU, DRRIP, SHIP, SDBP와 비교함. 모든 워크로드에서 성능 향상만을 보임. OPT를 사용해 캐시 블록의 우선순위를 학습. 캐시 교체 정책을 학습으로 풀고자 하는 시도. 다양한 locality를 갖는 데이터에 적용 가능함.

6. Efficient Synonym Filtering and Scalable Delayed Translation for Hybrid Virtual Caching
현재의 시스템에서 어플리케이션은 가상 주소 공간을 사용하고 있다. 따라서 캐시에 접근하기 위해서는 모든 메모리 요청을 물리 주소로 변환해야 한다. 시간적인 제약으로 인해 TLB의 크기를 더이상 늘리지 못하고 있음. 캐시에 있음에도 데이터를 접근하지 못하는 경우가 있음. Virtual caching은 캐시가 가상 주소를 사용하는 것. 캐시를 가상 주소를 사용해 직접 접근할 수 있지만, 물리 주소가 캐시에 두 개의 카피를 생성하는 synonym의 문제를 일으킬 수 있다. 이 연구에서는 캐시가 virtual addres, physical address를 함께 사용하는 hybrid virtual caching을 제안. 그리고 주소 변환을 LLC miss이후로 넘기면서 scalable segment based address translation을 사용한다. 우선 hybrid virtual caching은 캐시를 가상 주소와 물리 주소를 함께 사용하도록 하는 것. 여기에서 문제는 메모리 요청에 대해 캐시를 가상 주소로 접근할 것인지, 물리 주소로 접근할 것인지 결정하는 것. 이를 해결하기 위해 synonym filter를 사용한다. Core와 캐시 사이에 synonym filter를 위치시킨다. 대부분의 메모리 요청은 non-synonym이므로 virtual caching을 사용한다. 그리고 나머지 메모리 요청에 대해서는 physical caching을 사용한다. Virtual caching의 경우에는 LLC miss가 발생하면 delayed TLB를 사용한다. Synonym candidate의 경우에는 traditional TLB를 사용한다. 실험 결과, 대부분의 경우 synonym 대상이 아님을 확인. 대부분의 접근이 virtual cache로 향함. Delayed TLB 자체에 제약이 있음. TLB는 scalability가 떨어짐. TLB size를 늘린다고 해서 miss reduction이 보장되지 않음. 실험해본 결과, TLB size를 늘려나갈 때 TLB miss reduction이 적어서 scalable delayed translation을 제안. Direct segment가 TLB entry coverage 늘리고자 했었음. 세그먼트를 늘리는 것이 운영체제에 도움이 됨. 그리고 지금까지는 수많은 세그먼트를 제공하는 것이 부담이 되었음. Latency 문제 때문에 그 수를 늘릴 수 없었음. 훨씬 더 많은 세그먼트를 delay된 방식으로 제공한다. LLC miss가 발생하면 segment table을 사용해 주소를 확인할 수 있을 것. 하지만 이는 많은 수의 세그먼트를 서비스하기 어렵다. 따라서 index tree를 사용해서 segment table의 index를 구한다. 하지만 이것에도 문제가 있음. 메모리 접근에는 오버헤드가 있음. 이를 해결하고자 index tree의 탐색에index cache를 사용함. 이러한 과정을 하드웨어로 구현함. 이렇게 구현하면 속도도 빠르고 전력 소모도 적음.

7. LAP: Loop-Block Aware Inclusion Properties for Energy-Efficient Asymmetric Last Level Caches
최근에 들어 non-volatile memory가 각광받고 있다. density가 높고, leakage가 적으며, 비휘발성이기 때문이다.STT-MRAM이 실제 프로토타입으로 나옴. NVRAM은 leakage가 없지만, RW energy가 새로운 문제를 일으키고 있다. 쓰기 과정에서 에너지 소모가 크다. NVM에서 쓰기 에너지를 줄이고자 하는 시도가 많이 있었음. 하지만 모두 inclusion property를 가정했다. Inclusion cache에서 상위 캐시에 있던 데이터 중에 clean한 것은 그냥 쫓겨나고, dirty한 것만 LLC에 쓰인다. Non-inclusion cache는 back-invalidate하지 않는다. 이 두가지 정책에 따라 어떤 것이 캐시 / 메모리에 쓰이느냐가 달라진다. Exclusion 방식이 SRAM LLC에서 더 에너지 효율적이다. Inclusion, exclusion 정책 모두 장단점이 있다. 이 연구에서는 두 가지의 장점을 모두 취하는 새로운 정책을 제안하고자 하는 것. Exclusion cache에서 상위 캐시로 옮겨졌다가 아래로 내려올 때까지 데이터 변경이 없는 것은 loop block으로 정의, 이들은 불필요하게 쓰인다. 데이터 변경이 있는데 하위 레벨의 캐시에도 반영되는 것은 non-loop block으로 정의. 불필요하게 캐시를 차지하고 있다. 이 두 가지 문제를 모두 해결하고자 함. Loop-block prediction을 적용. Non-loop block은 NVM에 저장하고, loop block은 SRAM에 저장한다. Non-loop block을 NVM에 저장함으로써 불필요한 쓰기를 막을 수 있고, loop block을 지금처럼 SRAM에 저장함으로써 접근 속도를 맞춰줄 수 있다. Gem5, NVSim을 사용해 실험함.

8. Biscuit: A Framework for Near-Data Processing of Big Data Workloads
Near data processing은 연산을 데이터 근처에서 하는 것. 현재는 데이터를 프로세서로 옮겨서 연산한다. PM1725를 사용해 NDP framework를 만들고자 함. Multi threading 또한 지원한다. Cooperative multithreading을 제공. Context switching 오버헤드는 작음. 모든 데이터 전송은 입출력 포트를 사용한다. 프로그램의 동적 로딩을 지원한다. 프로그래머가 host-side task, SSD-side task 모두를 빌드해서 시스템에 올린다. 대역폭 소모를 크게 줄임. Biscuit을 사용하면 10~11배의 성능 향상이 가능하다.

9. Energy Efficient Architecture for Graph Analytics Accelerators
Dark silicon era. 하드웨어 설계는 복잡하고 오랜 시간이 걸린다. 어플리케이션이 많은데 이 중에 무엇을 가속할 것인가? Template based 가속을 해보자. 그래프 분석. 그래프 분석을 통해 각 객체 사이의 관계를 파악할 수 있다. Graph accelerator template. 이 연구에서는 그래프 어플리케이션을 위한 에너지 효율적인 가속기를 제안한다. 다른 어플리케이션에도 쓸 수 있는 템플릿을 제안한다. 아키텍쳐 탐색 및 하드웨어 설계를 위한 합성 가능한 SystemC를 제안한다. 먼저 그래프 분석이 무엇인지 알아보자. 지금까지의 HPC 어플리케이션과 다르다. 불규칙적인 데이터 접근 그리고 커뮤니케이션이 발생한다. 지역성 또한 떨어진다. 메모리 접근으로 인한 시간 소모가 크다. Throughput과 work-efficiency 사이에 trade off가 있다. 어플리케이션에 asymmetric converge가 발생한다. 어떤 점들은 적은 반복 만으로도 수렴하고, 어떤 점들은 매우 많은 반복 이후에 수렴한다. 따라서 모든 loop에서 모든 점을 연산하는 것은 비효율적이다. 모든 점을 매번 연산하는 것은 throughput이 높지만 비효율적이고, active vertices만 연산하는 것은 throughput이 낮지만 효율적이다. 이 논문에서 제안하는 것은 높은 효율성과 높은 throughput 모두를 취하고자 하는 기법. Gather-Apply-Scatter. 주변의 점 정보를 모으고, 해당 점에 적용하고, 주변에 다시 반영하는 단계. 그래프 처리를 하기 위해 아키텍쳐를 설계하고, 각각의 요소를 설명함. PageRank, Single Source Shortest Path, Stochastic Gradient Descent, Loopy Belief.. 등을 워크로드로 사용함. 전력 소모가 크게 줄어듦.

10. ASIC Clouds: Specializing the Datacenter
2016년 컴퓨팅 트렌드. 사용자는 모바일 시스템 사용, 클라우드는 데이터 센터 사용, Dennard scaling이 끝남. GPU-based cloud, FPGA-based cloud가 제안됨, Xeon Processors도 customer specialized되고 있음. 마찬가지 맥락에서 ASIC-based clouds도 가능하지 않을까? 특정 목적의 연산 요구가 계속해서 증가하고 있음. 이를 특화해서 ASIC으로 굽고, 서비스하는 클라우드 서비스도 가능하지 않을까? ASIC-based clouds를 사용하면 설계상에서 이득을 얻을 수 있으며, 운영 상에서도 비용을 크게 줄일 수 있다. 이미 ASIC clouds는 존재하고 있다고 봐도 된다. Bitcoin mining에 ASIC cloud를 사용하고 있다. 많은 Bitcoin miner가 사실상 최적화되어있지 않다. ASIC cloud architecture. 논문에서 Verilog로부터 TCO최적화된 데이터 센터 설계까지를 설명하고 있음. Bitcoin mining, Youtube transcoding 등에 사용할 수 있음.

11. Opportunistic Competition Overhead Reduction for Expediting Critical Section in NoC based CMPs
공유 변수를 갖는 멀티 쓰레드 어플리케이션에서, crticial section은 동기화되어야 하고 반드시 exclusive하게 진입되어야만 한다. 이 경우에 성능 오버헤드는 critical section에 의해서만 발생하는 것이 아니라, competition overhead에 의해서도 발생한다. Critical section에 진입하기 위해 경쟁하는 과정에서 오버헤드가 발생한다. 이러한 경쟁으로 인한 오버헤드를 줄이는 것이 연구의 목적이다. 현대 운영체제에서는 queue spinlock을 사용하고 있는데, 이는 spinning phase, sleep phase로 구성된다. SW / HW 협력 메커니즘을 통해 competition overhead(COH)를 줄이는 것이 이 연구의 목적이다. Gem5를 사용해 실험했으며, 워크로드로는 PARSEC, SPEC을 사용함.

12. Short-Circuit Dispatch: Accelerating Virtual Machine Interpreters on Embedded Processors
요즘 스크립트 언어는 많은 곳에서 쓰인다. 간단한 코드로 강력한 프로그램을 만들 수 있다. 높은 생산성이 있음. 하지만 효율이 떨어진다는 문제가 있다. 한편, 하드웨어 측면에서는 single-board computer가 등장하고 있다. 이들은 매우 낮은 비용, 저전력이라는 특성을 갖는다. 하지만 자원이 적다는 단점이 있다. IoT 프로그래밍에 스크립트 언어는 높은 생산성이라는 장점을 갖는다. 하지만 IoT 플랫폼은 자원의 한계로 인해 느려진다. 현재 스크립트 언어가 낮은 효율성을 보이는 이유. 간접 점프를 예측하기 힘들다. 불필요한 추가적인 컴파일이 발생한다. 이를 해결하고자 short-circuit dispatch (SCD)를 제안한다. BTB 공간을 효율적이고 소프트웨어로 관리되는 바이트코드 점프 테이블로 사용한다. 적은 하드웨어 오버헤드로 두 가지 문제를 모두 해결한다. SCD를 구현하고자 다섯 개의 명령어를 추가한다. 세 개의 레지스터 또한 추가한다. Gem5, FPGA로 실험함. Lua, SpiderMonkey, computer language benchmarks game을 워크로드로 사용함.

토 / 일 / 월 모두 하루종일 학회에 있으니 정신이 혼미해지기 시작함.

13. A Measurement Study of ARM Virtualization Performance
가상화는 한 개의 물리적인 컴퓨터 위에 여러 개의 논리적인 컴퓨터를 실행하는 것. ARM hardware virtualization support. x86에는 Root / Non-root 모드가 있음. VM exit이 발생하면 가상 머신의 상태를 VMCS에 저장한다. ARM은 EL0(User), EL1(Kernel), EL2(Hypervisor) 모드를 제공함. EL2는 하이퍼바이저를 위한 모드이다. 이렇게 함으로써 계층을 단순하고 구조적으로 사용하도록 함. Microbenchmarks, macrobenchmarks를 사용해 실험함. ARM, x86 실험 환경을 비교함. KVM, Xen의 성능을 확인. VM – Hypervisor transition이 중요하다. No-Op hypercall을 사용해서 오버헤드를 측정할 수 있다. ARM은 하이퍼바이저를 무엇을 사용하느냐에 따라, 4배 느릴 수도 있고 4배 빠를 수도 있다. x86에서는 VM-exit이 발생하면 VMCS를 저장해야 하므로 오버헤드가 발생할 수 있음. 하지만 ARM은 type 2 가상화에 적합하게 구현되지 않았다는 문제가 있음. Type 2 가상화(Xen)에서는 성능이 떨어질 수 있음. 이런 특성이 실제 워크로드에서는 어떻게 보일 것인가? 그래프의 색감이 좋음. 파랑 / 녹색 / 노랑/ 주황. 입출력에 있어서 KVM이 높은 성능을 보인다. KVM은 리눅스를 그대로 사용하는 점에서 빠르다.. Xen에서는 모든 드라이버를 하이퍼바이저에 구현할 수 없으므로, Dom0에 드라이버를 둔다. VM이 입출력할 때 트랩이 발생하고, 이것이 하이퍼바이저에 전달됨. 이것은 다시 Dom0에 전달되고, 다시 입출력 장치를 사용하게 된다. Virtualization Host Extension(VHE)는 EL2에서 리눅스와 KVM을 모두 실행하고자 하는 시도이다. 기존에는 EL1에서 리눅스와 KVM을 실행함. VHE는 EL2를 EL1의 기능을 사용할 수 있도록 확장한다. 그리고 레지스터 접근 권한도 제어한다. ARM은 x86보다 빠를 수 있다. 하지만 type 2 가상화에서는 느리다. Type 1 가상화는 입출력 오버헤드가 크다. ARMv8.1은 hosted hypervisor를 위해 VHE를 추가함.

14. Base-Victim Compression: An Opportunistic Cache Compression Architecture
메모리는 현대 CPU의 bottleneck. LLC 크기를 키움으로써 성능을 향상할 수 있으나, 비용이 문제이다. 따라서 캐시 압축 기법은 매우 매력적인 기법이다. 하지만 압축은 캐시 교체 기법과 간섭 현상을 일으킨다. 캐시 압축 기법은 어떻게 동작하나? 압축을 하기 위해서는 캐시의 데이터를 압축하고 압축 해제해야 한다. 이를 위한 모듈이 필요하다. 만약 압축하게 된다면 더 많은 데이터를 넣을 수 있으므로 tag array 크기는 늘어나게 됨. 그리고 압축 / 압축 해제에 8% 공간 오버헤드가 발생한다. 문제는 고밀도이고 timing sensitive한 SRAM의 레이아웃을 변경하는 것이 쉽지 않다는 것이다. 실험해보면 압축률은 높지만 성능은 떨어지는 문제가 발생한다. 무엇이 문제인가? Partner line victimization 의 문제가 있다. 두 개의 데이터가 한 개의 way에 들어가있다고 하자. LRU way를 내쫓는 것이 의도치 않게 MRU line을 내쫓는 결과를 일으킬 수 있음. 이러한 문제를 해결하기 위해 무언가 했다고 하는 것 같은데 이해하지 못함. Opportunistic compression을 제안함. 제대로 이해한 것인지는 모르겠지만, 태훈이 형에게 물어본 것에 따르면, 한 캐시 라인에 두 개의 압축된 캐시 라인이 들어간다면 한 개는 victim cache처럼 쓰겠다는 것. 이를 통해 victim cache의 효과를 보면서도 partner line victimization 문제를 해결할 수 있다. 8% area overhead만을 가지고도 50% area overhead를 추가한 것과 비슷한 성능을 보임.

15. Bit-Plane Compression: Transforming Data for Better Compression in Many-core Architectures
왜 메모리 압축 기법을 사용해야 하는가? GPU FLOPS는 빠르게 증가하고 있으나, 대역폭은 크게 증가하고 있지 못하다. 에너지 절감 또한 메모리 압축을 요구한다. 메모리 압축 기법은 실제로 적용하기 쉽지 않다. 메모리 압축율이 좋지 않고, latency-critical하다는 점이 문제가 된다. 압축율을 높이기 위해 bit-plane compression을 제안한다. 손실없는 압축 기법이다. 정수 벤치마크의 경우 4배, 플로팅 포인트 벤치마크의 경우 2배 정도 압축 가능하다. Run length encoding은 반복되는 패턴에 대해서 높은 비율로 압축할 수 있다. Delta-BitPlane-XOR 변환을 제안한다. Delta transform은 이웃한 심볼을 제거한다. 이렇게 만든 delta를 사용해 plane을 만든다(차원을 바꿈? 회전? 잘 모르겠음). 이렇게 plane을 만들면 반복되는 패턴이 생기고, 어떻게 변환을 하면?… 많은 0이 생긴다. 이러한 encoding을 통하면 4배의 압축이 가능하다. 동적인 영역을 반복되는 0으로 치환할 수 있다는 점이 DBX의 가장 큰 특징이라고 함. 많은 프로그램에서 배열을 사용한다는 점에서 성능 향상의 가능성이 크다. 그리고 많은 경우에 homogeneously-typed 배열을 가지고 있었다. GPGPU 프로그램에서 사용하는 많은 데이터 타입이 homogeneously-typed 이다. Floating point에서 압축률이 integer만큼 좋지 않은 이유는, 작은 값의 차이도 floating point에서 크게 나타나기 때문이다.

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

누적 방문자 수
  • 101,234 hits
%d bloggers like this: