20170906

Title: Decoupling Data Supply from Computation for Latency-Tolerant Communication in Heterogeneous Architectures

Speaker : Taejun Ham Ph.D candidate (Princeton University)

Abstract: In today’s computers, heterogeneous processing is used to meet performance targets at manageable power. In adopting increased compute specialization, however, the relative amount of time spent on communication increases. System and software optimizations for communication often come at the costs of increased complexity and reduced portability. The Decoupled Supply-Compute (DeSC) approach offers a way to attack communication latency bottlenecks automatically, while maintaining good programability, portability and low complexity. Our work expands prior Decoupled Access Execute techniques with hardware/software specialization and parallelization. For a range of single-threaded workloads, DeSC offers an average of 2.04× speedup over a single core baseline. For a range of parallel workloads, DeSC parallel configurations with 4 compute cores offers 1.75x speedup on multi-threaded workloads and 2.12x speedup on multi-programmed workloads over a 4-core processor baseline.

Dennard scaling이 끝남에 따라 가속기로 성능 향상을 도모하고 있는데, 가속기의 사용은 memory wall 문제를 심화시킨다. 연산 속도는 더 빨라지지만, memory latency를 숨겨주는 OoO, multithreading이 안 되기 때문이다. 프로그래머가 제공하는 data supply는 오류가 발생하기 쉽고, suboptimal하기 쉽다. 이를 해결하기 위해 DeSC를 제안한다. 프로그래머는 데이터 공급을 위해 코드를 작성할 필요 없으며, 컴파일러가 이를 대신한다. DeSC 컴파일러는 프로그램을 access slice와 execute slice로 분리해낸다. Access slice는 사용할 데이터에 대한 주소를 연산하고, execute slice는 이를 실제로 연산해 저장한다. Access slice가 execute slice에 앞서서 실행할 수 있다. 따라서 특화된 OoO core가 access slice를 앞서서 실행한다. DeSC는 데이터를 사용하기 전에 이를 준비해준다는 것이 핵심이다.
몇 가지 optimization을 소개함. ROB의 앞 부분이 long latency load에 의해 사용되지 못하고 있는 경우에, 해당 load가 terminal load(해당 결과가 쓰이지 않는 load)라면 early retire할 수 있다. 이를 위해 supply queue를 추가해야 한다. 그 다음으로 loss of decoupling events를 해결하는 최적화 기법 소개. access slice code 이내에서 read-after-write(RAW)가 발생하면 loss of decoupling event가 발생한다. Branch가 있는 경우에도 loss of decoupling이 발생하는데, 데이터 연산을 branch에서 꺼내서 해결한다. 마지막 optimization은 non-terminal long-latency load가 ROB를 막고 있을 때 이를 해결하는 기법을 제안한다. 이를 해결하기 위해 separate ROB를 사용한다(miss dependent instruction buffer).
Data supplier rate와 data consumption rate의 균형을 유지하는 것이 중요하다. 이를 위해 한 개의 큰 data supplier를 갖기보다는 여러 개의 작은 data supplier를 갖는 것이 좋을 수 있다. 여러 개의 어플리케이션이 서로 다른 data consumption rate을 가지는 경우에는 한 개의 data supplier를 사용하되, 이를 SMT 특성을 갖도록 설계하면 된다.

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

누적 방문자 수
  • 103,814 hits
%d bloggers like this: