20161018

1. Low Power CPU: From Mobile to Wearable & IoT
Mobile CPU에 대해서 이야기할 것. Mobile CPU는 일반적으로 mW 단위에서 동작한다. 기술 혁신에 대해서 이야기할 것. 여전히 혁신할 것이 많이 남아있다. wearable & IoT에 대해서 이야기할 것. mobile ultra-low-power processors에 대해 이야기할 것. 사용 시간이 중요하다. wearable device에서는 ultra-low-voltage가 중요하다. 베르누이 원리를 활용한 cargo ship이 있음. 가난한 원리를 적용해서 30%의 에너지 효율성을 얻음. 클럭을 높이는 것은 thermal cost를 높이는 반면에, 이로써 얻는 이득은 줄어든다. clock timing을 fishbone style로 하면 전력 소모를 크게 줄일 수 있다. CPU를 high power / low power / ultra low power로 구성하겠다는 것 같음. 낮은 에너지를 달성하기 위해서 몇 가지 해결해야 하는 문제가 있다. reliable operation을 보장할 수 있어야 한다. 오버헤드를 줄여서 낮은 에너지를 달성해야 한다. 성능을 실제 연산 수행에 사용해야 한다. reliable ULV operation을 위해서 SRAM을 사용. Architecture – circuit co-optimization으로 전력 사용량 절감 가능.


2. Continuous Shape Shifting: Enabling Loop Co-optimization via Near-Free Dynamic Code Rewriting
데이터센터에서 dynamism이 증가하고 있다. 다양한 요소가 어플리케이션의 성능에 영향을 미친다. 같이 실행되는 어플리케이션, 아키텍쳐 수준의 자원 할당 등. 이러한 결과로 사용 가능한 자원에 영향을 받고 있다. 컴파일 단계의 최적화 가정이 맞지 않을 수 있다. 같이 실행되는 어플리케이션, 파티셔닝된 캐시, 다른 아키텍쳐 등의 영향을 받을 수 있다. 이를 동적으로 확인하고 최적화하는 기법이 필요하다. 동적으로 cache tiling하면 성능 향상을 얻을 수 있다. 실행 환경에 동적으로 반응할 필요가 있다. 그리고 고성능의 tiling 전략을 사용할 필요가 있다. 다음으로 성능 오버헤드가 낮아야 한다. white-box 접근은 성능 오버헤드는 낮지만 부적절하다. BLAS library는 정확도는 높지만 오버헤드가 크다. black-box로 가정하고 실시간으로 최적화 기법을 적용해야 한다. 이를 위해 동적으로 tile을 생성할 것이다 (Protean Code + Polly). 동적으로 tiling 기회를 파악하고, 성능을 잘 낼 것으로 보이는 tile을 실행할 것이다. 실시간 학습을 수행한다. tile 크기를 선택하고 학습 데이터를 생성한다. 실시간으로 학습하고, tile을 선택하고, monitoring하는 방식으로 실행한다.


3. CrystalBall: Statically Analyzing Runtime Behavior via Deep Sequence Learning
성능 향상을 위한 다양한 방법이 있다. 아키텍쳐 개선, 컴파일러 개선 등이 있을 수 있음. 결국 프로그램의 행위를 이해해서 성능을 향상하는 것. 이 연구에서는 path에 대해 집중해서 본다. path는 basic block의 순열. hot path는 자주 실행되는 path. hot path를 찾는 방법에는 dynamic profiling이 있음. 이는 전체 프로그램을 실행해야 한다는 문제가 있음. 프로그램에 사용할 데이터 또한 필요하다. 그리고 실행에 많은 시간이 소요된다. 프로그램의 수정이 있을 때마다 재컴파일하고 다시 실행해봐야 한다. 이를 static하게 분석해서 hot path를 알아낼 수 있으면 좋을 것이다. static branch prediction 이 있다. 하지만 이는 전체 프로그램을 보는 것이 아니라, 일부만 본다는 문제가 있다. hot path prediction이 있는데, 손이 많이 갔다고 한다. static analysis는 개별 함수에 대해 분석할 수 있다는 장점이 있다. 이와 더불어 프로그램 데이터를 필요로 하지 않는다는 장점이 있다. 그리고 시간이 적게 소요된다는 장점이 있다. 해당 연구에서의 목표. 높은 정확도, 언어 독립성, 자동화된 분석. 이 연구에서 제안하는 CrystallBall은 이 목표들을 만족한다. high accuracy hot path prediction을 위해 long short-term memory recurrent network를 사용한다. RNN은 sequence learning을 가능하게 하고, LSTM은 네트워크가 잊을 수 있도록 해준다. 언어 독립성을 달성하기 위해서 intermediate representation을 사용한다. LLVM을 사용함. 자동화를 위해 LLVM을 사용한다.


4. Low-Cost Soft Error Resilience with Unified Data Verification and Fine-Grained Recovery for Acoustic Sensor Based Detection
Soft error가 시스템을 망가뜨린다. 임의의 비트가 변경되는 오류이다. 가까운 미래에 하루 한 개의 칩에 에러가 발생할 것이다. detection & recovery mechanism이 필요하다. acoustic sensor detection이 제안됨 (ISCA’12, ISCA’14). 주기적으로 전체 레지스터와 캐시를 checkpoint하고, 오류를 인지하면 가장 최근의 체크포인트를 불러온다. 문제는 이 과정에서 너무 많은 오버헤드가 발생한다는 것이다. 이 연구에서는 software / hardware cooperative recovery 기법인 turnstile을 제안한다. 이를 사용하면 성능 오버헤드가 줄어든다. 프로그램 상태는 메모리 상태와 레지스터 상태로 정의된다. unified data verification 수행. verified data만 data cache에 쓰일 수 있도록 gated store queue를 사용한다.


5. Lazy Release Consistency for GPUs
현재의 GPU 시스템은 간단한 coherence action을 사용한다. 동기화 비용을 줄이기 위해, scoped synchronization이 사용된다. 하지만 이는 메모리 모델을 복잡하게 한다는 문제가 있다. 이를 해결하기 위해 remote scope promotion, DeNovo coherence가 제안됨. GPU에서 scoped synchronization이 문제가 됨. 동적 작업 분배가 안 된다는 문제도 있다. 이러한 문제를 해결하기 위해 remote scope promotion이 제안됨. 이 기법은 동적 공유를 가능하게 하지만, 메모리 모델을 더욱 복잡하게 만든다. 프로그래머가 더 많은 부분을 이해해야 한다. DeNovo는 scope-free memory model이고 locality를 살리지만, non-registered data에 대한 재사용이 제한된다는 문제가 있다. 이러한 문제를 해결하고자 HLRC를 제안한다. remote synch가 확인되었을 때애만 coherence를 수행한다. background가 부족해서 이해가 힘들었음.


6. Improving Energy Efficiency of DRAM by Exploiting Half Page Row Access
DRAM 아키텍쳐를 수정하여 에너지 사용량을 줄이고자 하는 연구. DRAM의 에너지를 줄이는 것이 중요하다. 모바일 장치에서 DRAM을 사용하고, 데이터센터에서도 저전력은 중요하기 때문이다. DRAM에는 row hammer 문제가 있다. DRAM에서 데이터를 가져오는 것의 비용은 크다. 지금까지 이러한 문제를 해결하기 위한 연구가 있었으나, DRAM은 cost-per-bit 최적화되어있다. subarray architecture에 대한 소개. DDR4 subarray를 baseline으로 해서 연구했음을 이야기함. half page access를 가능하게 한다. half page MATs를 interleave하겠다고 함(?). 그리고 새로운 아키텍쳐 제시. 그리고 저전력 refresh를 가능하게 하는 기법 제시.


7. CANDY: Enabling Coherent DRAM Caches for Multi-Node Systems
3D-DRAM의 활용 방안 중 하나는 cache로 사용하는 것. 4~8배의 bandwidth를 얻을 수 있다. DRAM cache의 단점이 있다. 이 연구에서는 multi-node system에서의 DRAM cache 연구함. memory-side cache로 사용했을 때 implicitly coherent하지만 local data만 cache 가능하고 remote data 얻는 것에 long latency 걸린다는 단점이 있다. coherent DRAM cache는 coherent하지만 coherency support 필요? Ideal coherent DRAM cache가 30%가량 성능이 더 좋다. Coherence directory를 사용하면 coherence directory가 너무 커진다. 그리고 latency도 길어진다는 문제가 있다. Coherence directory를 die에 구현할 수도 있고, 이 논문에서는 buffering을 제안한다. DRAM cache coherence buffer. On-chip coherence buffer? 어쨌든 원래 쓰는 공간이 있는데 이를 활용한다. 최근에 접근한 엔트리를 여기에 캐싱하는 것. Coherent DRAM Cache에 large coherence directory, slow request-for-data의 문제가 있었음. 이를 해결하기 위해 DRAM cache for multi-node systems를 제안함.


8. C3D: Mitigating the NUMA Bottleneck via Coherent DRAM Caches (paper)
새롭게 등장하는 워크로드들이 많은 메모리를 요구함에 따라, NUMA 환경으로 이동하고 있음. 하지만 NUMA 환경은 NUMA bottleneck 문제가 있다. 지금까지 스케쥴링 기법을 활용해 이 문제를 해결하고자 하는 연구들이 많이 있었으나, DRAM cache를 도입함으로써 이러한 NUMA bottleneck이 해결될 것으로 예상한다. 하지만 여전히 DRAM cache에서의 문제가 있고, 이 연구에서는 미래 아키텍쳐의 방향을 제시한다. DRAM cache를 private하게 쓸 것인지, shared로 쓸 것인지의 문제가 있고, private cache에 대해서는 coherence를 어떻게 제공해야 할 것인지의 문제가 있다. coherence를 맞추어주어야 하는데, coherence를 맞춰주면 오히려 접근 latency가 길어지는 문제가 있기 때문이다. 실험 결과, shared보다는 private하게 쓰는 것이 inter-socket latency를 줄임으로써 성능 향상한다는 것을 확인했다. 그리고 coherence를 유지하는 것보다는 DRAM cache를 항상 clean하게 유지하는 것이 remote memory access를 줄여 성능 향상에 도움이 됨을 확인한다.


9. Concise Loads and Stores: The Case for an Asymmetric Compute-Memory Architecture for Approximation
어플리케이션이 바뀌고 있다. 몇몇 어플리케이션은 부동 소수점 정확도를 필요로 한다. 의료 또는 금융에서는 필요로 함. 하지만 일부 어플리케이션은 이러한 정확도를 필요로 하지 않는다 (머신 러닝, 데이터마이닝, 이미지 프로세싱). 새롭게 등장하는 어플리케이션의 성능을 향상시키기 위한 도구가 없다. 임의의 bit-length를 지원해야 하고, 낮은 하드웨어 비용을 가져야 하며, 간결해야 한다. 모든 bits가 같은가? 데이터마다 적절한 bit-length가 다르다. arbitrary bit-lenth support는 높은 하드웨어 오버헤드를 일으킨다. 연산과 메모리에서 bit을 제거해보며 하드웨어를 새롭게 설계. 이 연구에서는 ACME를 제안한다. 메모리와 연산에서 데이터 형식을 다르게 한다. 메모리에서는 11-bit 데이터로 저장하고, 연산에서는 IEEE format으로 연산한다. 빠르게 형식을 전환해주는 모듈이 필요하다. 이를 위해 새로운 명령어 두 개를 추가한다. 그리고 concise memory address를 연산하기 위한 모듈을 추가한다. Intel Haswell processor를 모델링한 gem5에서 실험함. 99%의 정확도를 유지하면서 30%의 성능 향상.


10. Approxilyzer: Towards A Systematic Framework for Instruction-Level Approximate Computing and its Application to Hardware Resiliency
Approximate computing은 quality와 전력 / 성능 등을 trade-off함. 프로그램의 오류가 출력 quality에 어떤 영향을 미치는지 보고자 함. Approxilyzer는 출력 quality를 정하는 도구이다. Operand register의 single bit error 그리고 동적 명령어 변경이 어떤 영향을 미치는지 보고자 하는 것. 프로그램의 오류가 output quality에 미치는 영향을 분석한다. approximable instruction을 확인할 수 있다. Background로 Relyzer를 소개한다. Relyzer는 오류를 같은 종류끼리 분류한다. 그리고 각 클래스를 대표하는 것으로 실험해 결과를 분석한다. Approxilyzer는 quality aware error classification을 수행한다. Quality의 granularity를 어떻게 정할 것인가? 이 연구 팀에서 전체 quality loss의 range를 몇 가지로 분류함. SDC-good, SDC-maybe, SDC-bad, detectable data corruptions로 분류. SDC-bad, detectable data corruptions는 허용 불가능한 오류 수준.


11. The Bunker Cache for Spatio-Value Approximation
Data를 이동하는 것에 많은 에너지가 소요됨. data movement와 storage를 동시에 개선한다. spatio-value similarity를 제안한다. memory address에 기반하여 many-to-one similarity mapping을 수행한다. data가 저장된 위치와 어떤 data가 저장되어 있는지의 correlation을 찾고자 함. 3차원 배열을 따라가는 경우를 생각해보자. 유사한 데이터가 일정 패턴으로 나타난다. 그리고 근접한 데이터는 유사하다. X와 X+STRIDE를 같은 것으로 간주한다. 이를 통해 캐시 크기를 늘리는 효과를 가질 수 있다. 같은 값을 갖는 데이터들에 대해 주소 매핑을 같은 곳으로 하는 것. PERFECT and AxBench를 사용함.


12. ReplayConfusion: Detecting Cache-based Covert Channel Attacks Using Record and Replay (paper)
클라우드 컴퓨팅 환경이 도래하면서 보안 위협이 증가하고 있음. Cache side channel 공격과 방어 기법 모두 꾸준히 제시되고 있다. 지금까지 제시된 방어 기법들은 너무 지엽적이거나, 오버헤드가 너무 크다. 이 논문에서는 cache side channel 공격들이 (1) cache address mapping을 알아야 한다는 점, (2) 일정한 패턴을 가진다는 점에 기반하여 방어 기법을 구현한다. Record and deterministic replay를 활용한다. 캐시 매핑이 바뀌어도 일반 어플리케이션들은 miss rate 차이가 비슷하지만, 악의적인 어플리케이션들은 다르다는 점에 착안. 그리고 추가적으로 패턴을 탐지해 공격을 확인한다. MARSSx86을 사용해 성능 평가함. Record and deterministic replay를 사용해 cache side channel attack을 막는다는 점, cache side channel attack의 특징을 기반으로 방어한다는 점은 장점. 하지만 side channel attack 이후 detect일 뿐, 방어가 되지 않는다는 점에서 한계.

ReplayConfusion architecture.PNG


13. Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR (paper)
code reuse attack을 방어하기 위해 ASLR이 도입되었다. 이 논문에서는 BTB side channel attack을 활용해 ASLR을 무력화하는 기법을 제안한다. BTB는 branch prediction을 위해 target address를 저장하는 프로세서의 구조인데, BTB를 공유함으로 인해 공격의 여지가 발생한다. BTB entry는 address tag에 대해 target 주소를 결정하게 되는데, 이 때 area 오버헤드를 줄이기 위해 전체 address가 아닌 일부만을 사용한다. 게다가 프로세스 구분 없이 BTB를 공유함으로 인해, 간섭이 발생할 수 있다. 두 개의 프로세스가 같은 BTB entry를 공유하게 함으로써 collision을 유발했고, 이 때 성능 저하가 발생하는 것을 확인할 수 있었다. 이에 기반하여 kernel space와 user space의 ASLR을 무력화할 수 있다. Victim application의 예상 branch address를 잡고, 해당 branch를 유발하는 서비스 루틴을 계속해서 호출하면서 공격자 또한 간섭이 발생하는 주소를 찾아내면 된다. 성능이 떨어지는 지점의 주소가 해당 branch address이다. 이렇게 간단하게 공격 가능한 한 가지 원인은 ASLR이 coarse-grained하다는 점이다. 한 코드 세그먼트의 주소만 알면, 나머지 영역의 주소도 쉽게 알아낼 수 있다.

branch target buffer collision.PNG

stages of the user ASLR attack.PNG

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,200 hits
%d bloggers like this: