20161019

1. A Patch Memory System For Image Processing and Computer Vision
Image 영역 중에 연산을 수행해야 하는 부분을 patch라고 한다. 그리고 patch가 여러 개일 수 있는데, 이 경우에 tensor가 된다. 이미지 연산에서 1D보다 2D가 더 많은 정보를 포함한다. 하지만 메모리 시스템은 선형이라는 특징을 갖는다. 하지만 앞서 설명했듯이 이미지는 multidimensional하다는 점이 문제이다. patch memory system을 제안한다. 다차원 addressing을 지원하는 메모리 시스템인 듯. patch 기능을 잘 지원하는 메모리 시스템 제안 정도로 이해하면 될 듯? 이러한 메모리 시스템을 활용하면 코드가 더 깔끔해질 수 있다고 함. patch가 다음 메모리 영역 연산하기 이전에 이미 prefetch하므로 성능이 32% 정도 향상됨. 에너지 효율성도 향상됨.


2. Evaluating Programmable Architectures for Imaging and Vision Applications
이미지 처리에 효율적인 대안을 선택해야 함. 시간 측면에서 programmable한 CPU, GPU를 쓸 것인지? 공간 측면에서 programmable한 FPGA, CGRA를 쓸 것인지? ??? 잘 이해가 안 됨. Spatial architecture와 temporal architecture를 설계 및 최적화하고 비교한 듯? CGRA가 좋았다고 함.


3. Redefining QoS and Customizing the Power Management Policy to Satisfy Individual Mobile Users
사용자 장치의 QoS를 만족시키는 것이 중요해지고 있다. QoS를 만족시키면서도 battery life를 함께 고려하는 것이 필요하다. mobile device에서의 QoS를 정의하는 것에 responsiveness, display quality를 함게 고려해야 함. QoS와 battery life의 최적 균형은 사용자마다 다를 수 있다. Personality는 사용 특성에서 분석. 입력 이후 반응이 나타나기까지의 시간은 UPT, UIT로 나눌 수 있음 (인지 가능, 불가능). 그리고 디스플레이에서의 사용자 만족을 해치지 않으면서 전력 소모를 줄인다.


4. Snatch: Opportunistically Reassigning Power Allocation between Processor and Memory in 3D Stacks
package의 크기와 비용은 pin 수에 비례한다. Dynamically, opportunistically divert power between processor and memory. 같은 pin 수로도 더 많은 전력을 공급할 수 있다. 어플리케이션 성능을 23%까지 향상할 수 있다. On-chip voltage regulator를 두어 전력 공급할 수 있도록 한다.


5. Ti-states: Processor Power Management in the Temperature Inversion Region
온도에 따라 트랜지스터 속도가 느려지는 것을 예상하지만, 실제로는 더 빨라지기도 한다. 이는 인가 전압에 따른다. 전압이 0.7일 때에는 더 빨라지고, 1.1일 때에는 더 느려진다. 왜 temperature inversion이 발생하나? drive current가 줄어드는 효과가 발생하기 때문이다. 예전에도 이러한 현상은 알려져 있었으나, technology scaling이 지속됨에 따라 공급 전압과 inversion point가 가까워지게 됨. AMD APU를 대상으로 실험했으며, GPU의 온도를 높여가며 실험함.


6. Graphicionado: A High-Performance and Energy-Efficient Accelerator for Graph Analytics
그래프 워크로드가 많은 곳에서 쓰이고 있음. 실세계의 문제를 표현하는 것에 적합함. 그래프 분석은 프로그래밍하기 쉽지 않다. 불규칙적인 패턴을 가지며, locality가 낮다. software graph processing framework가 이러한 문제의 해법이 될 수 있음. 프로그래머는 그래프를 추상화해서 표현할 수 있다. 하지만 software framework는 한계점을 갖는다. 현재의 프로세서는 어플리케이션을 인지하지 못한 메모리 시스템을 사용한다. 메모리 대역폭 소모가 심하다. 그리고 데이터 이동에 너무 많은 에너지를 소모한다. Graphicionado는 소프트웨어 프레임워크의 한계점을 극복하고, 여전히 programmability는 살리는 고성능 가속기이다.


7. Improving Bank-Level Parallelism for Irregular Applications
최근 불규칙한 접근을 보이는 어플리케이션이 증가하고 있음. 그리고 이들이 multicore, manycore platform에서 실행됨. 메모리 시스템을 효율적으로 사용하고 있는가? 데이터 접근 성능이 multithreaded application 성능에 중요하다. LLC hit rate을 증가시키는 것으로는 부족하다. off-chip 접근 비용이 크고, off-chip latency가 uniform하지 않다. 소프트웨어 기반하여 bank-level parallelism을 활용하고자 함.


8. Delegated Persist Ordering (paper)

Persistent memory에 recoverable data structure를 저장할 수 있게 되었다. 하지만 이를 위해서는 쓰기 순서를 올바르게 유지해야 한다. prepareUndoLog(P) -> mutateData(M) -> commitTx(C)를 유지해야 함. 따라서 이를 위해서는 persistent memory에 쓰기 순서를 유지하는 memory persistency model이 필요하다. Memory persistency model은 programmer가 쓰기 순서를 표현할 수 있게 해주고, 하드웨어는 이에 기반하여 쓰기를 수행한다. 이 논문에서는 우선 Intel에서 사용하고 있는 synchronous ordering이 얼마나 성능 저하를 보이는지 보이고, 3.5배의 성능 개선할 수 있는 delegated persist ordering을 제안한다.
미래의 컴퓨터 시스템은 volatile memory와 non-volatile memory로 구성될 것. Failure가 발생하면 volatile memory의 내용은 날아가지만, persistenet memory의 내용은 유지될 것이다. 몇 가지 용어를 정의하고 가자. Persist는 persistent memory에 저장하는 행위를 의미한다. Persist memory order는 persistency model에 의해 순서가 정해진 메모리 이벤트를 의미한다.
persistency model.PNG
쓰기 연산의 happens-before를 보장하는 것은 consistency model에서 하는 것이고, recovery correctness를 보장하는 것은 persistency model에서 하는 것이다. 따라서 writeback caching, memory control reordering은 persistency model과 무관하고, persistency model은 성능 오버헤드를 유발하면 안 된다는 것이다.
이 연구에서 epoch persistency에 기반하여 이야기할 것. epoch persistency는 프로그래머가 정의한 epoch의 순서로 쓰기 연산을 보장한다. epoch persistency는 다양한 방식으로 구현되고, 한 가지로 synchronous ordering이 있음. CLWB은 modified cache block을 memory controller에 write back하는 명령어이고, PCOMMIT은 메모리 컨트롤러에 들어온 store 명령을 실제로  persistent memory에 수행하는 것이다. 이 두 가지 명령을 사용해 persistency를 보장하는 방법을 살펴보자.
ordering via stalling.PNG
CLWB 명령어 이전에 수정된 캐시 블록이 writeback되고, pcommit이 되면 이것이 persistent memory에 쓰인다. 그리고 이 모든 것이 완료된 이후에야 그 다음 명령어가 진행될 수 있다. 이 사이에 stall이 발생하고, 이것이 성능 저하를 유발한다.
further drawbacks.PNG
이 외에도 pcommit이 critical path에 있다는 것, 그리고 CLWB를 명시해주어야 해서 프로그래밍이 어렵다는 점이 문제가 된다. PCM main memory에서 7.2배 성능 저하가 발생하는 것을 확인했다. 그렇다면 이상적인 ordering은 어떻게 되어야 할까? A와 B를 각각 저장해야 한다고 할 때, persistency와 무관하게 코어에서는 실행을 지속한다. 하지만 memory persistency만 유지해주면 된다. 이러한 ordering 기법은 buffered persistency에서 구현되었다.
ideal ordering.PNG
이 연구에서는 delegated persist ordering을 제안한다. delegated persist ordering의 목표는 processor stall을 줄이고, memory controller의 scheduling 자유도를 높이는 것이다.
delegated persist ordering.PNG
이 논문에서 delegated persist ordering을 지원하기 위해 다음과 같은 아키텍쳐를 제안한다. L1D$에 persist buffer를 둔다(FIFO). 그리고 각 persist buffer는 persistent memory에 대한 쓰기 요청을 저장해둔다. 코어 간 의존성을 확인하기 위해 coherence traffic을 사용한다. persist buffer에서 내려오는 요청을 write back과 연관하지 않고, memory controller 수준에서 해결한다.
proposed architecture.PNG

memory persistency에서 happens before relationship을 기록하기 위한 새로운 구조를 도입한다. ID, dependency, cache block 정보를 담는 구조이며, 이는 cache coherence protocol에서도 정보를 공유한다. 구체적인 동작 방식은 영상을 보는 것이 이해가 더 잘 됨. 11분 15초.
DPO in action.PNG


9. Spectral Profiling: Observer-Effect-Free Profiling by Monitoring EM Emanations
프로그램을 수정하지 않고 profiling을 하는 것이 목표. 프로그램을 실행할 때 발생하는 전자파를 활용해서 profiling. loop는 주기를 보이므로, 전자파도 이 주기를 따라 생성됨. 이를 사용해 profiling할 수 있다. noise, interference를 제거하고, spectrum을 처리한 다음에 spectrum을 클러스터링한다.


10. Path Confidence based Lookahead Prefetching
이 논문에서는 lookahead prefetching 기법인 path confidence based lookahead prefetching을 제안한다. prefetching 기법이 많이 제안되었지만, 기존의 기법들은 한계를 갖는다. 하드웨어 복잡도가 높거나, adaptive throttling을 구현하지 않았다. 그리고 virtual memory space를 고려하지 않고 prefetching했다. 이 논문에서 제안하는 signature path prefetcher는 이같은 문제들을 모두 해결한다. SPP에서는 confidence라는 개념을 도입한다. lookahead prefetching에서는 signature에 기반하여 recursive하게 prefetch하게 되는데, 첫 번째 prefetch의 신뢰도가 p0, 두 번째 prefetch의 신뢰도가 p1이라면 해당 path의 신뢰도는 p0*p1이 된다. 이처럼 특정 path에 대한 신뢰도를 구할 수 있고, 이를 기반으로 prefetch에 대한 결정을 내릴 수 있다. 캐시 레벨 중에 어떤 곳에 prefetch를 삽입할 것인지, prefetch를 수행할 것인지 아닌지를 결정할 수 있다. 더불어 confidence를 구하는 과정에서 throttling을 수행할 수 있다. confidence를 낮추거나 높임으로써 prefetch를 aggressive하게 하거나 conservative하게 할 수 있다. 구체적인 구현 및 동작 방식에 대한 내용은 Section 3에 있다.


11. Continuous Runahead: Transparent Hardware Acceleration for Memory Intensive Workloads
runahead execution은 pipeline이 stall되었을 때에 instruction window를 확장하는 것. 지금까지 제안된 runahead는 95%의 정확도를 갖는다. 하지만 13%의 coverage밖에 갖지 못한다. 그리고 성능 향상도 oracle performance에 비하면 여전히 개선의 여지가 많다. 이러한 gap은 어디서 발생하는가? 어떤 명령어를 runahead할 것인가? 세 종류의 정책을 갖고 실험함. PC-based policy, maximum misses policy, stall policy. dependence chain을 만들 때 어떤 것을 기준으로 할 것이냐에 따른 정책. 기존의 runahead의 coverage가 낮은 것이 문제이고, 이를 해결하고자 dependence chain을 동적으로 생성하고 계속해서 실행한다는 이야기인 것 같음. Coverage를 높이는 것이 목적.

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

누적 방문자 수
  • 98,779 hits
%d bloggers like this: