ㅋ컴구 레포트 ㅜ_ㅜ
이제 이것만 하면 끝이다..쿄쿄쿄
열심히 했으니 에이 뿔 주세요..ㅠ_ㅠ
Botine, C., F. Cazorla, R. Gioiosa, A. Buyuktosunoglu, C.Y. Cher and M. Valero
Proceedings of the 35th International Symposium on Computer Architecture, pp. 415-426, 2008
1. Introduction
ILP 의 한계는 프로세서의 성능을 향상시키는 전략으로서 TLP의 활용을 촉진시키고 있다. Common TLP 패러다임은 Simultaneous Multi-Threading과 Chip-Multi-Processor, 혹은 이 둘의 혼합이다. IBM POWER5는 dual core processor로 각 코어가 두 개의 Thread를 실행한다. Thread는 GCT(reorder buffer), BHT, TLB등의 리소스를 공유하는데, IBM POWER5 시스템은 HW mechanism을 사용하여 Thread 간 리소스를 적절히 분배하고, 여기에 SW/HW co-design을 통해서 8개의 priority level을 갖는 instruction decode rate을 제어 mechanism을 사용한다. SW-controlled priority는 application type에 따라서 throughput과 execution time 모두를 크게 향상시킬 수 있다. 이 논문의 주요 contribution은:
특정한 workload characteristic을 갖는 선택된 micro-benchmark 집합을 가지고 실험하여, 어플리케이션의 실행시간에 대한 POWER5 priority mechanism의 효과를 자세히 분석하였다.
서로 다른 metric, aggregated IPC와 execution time을 향상시키기 위해 POWER5의 priority가 어떻게 사용되는지를 보이는 어플리케이션 case study를 제공한다.
2. The POWER5 Processor
2.1 Dynamic HW resource balancing
POWER5는 HW dynamic resource balancing을 제공하는데, Thread가 L2 cache의 threshold에 도달하거나, TLB miss이거나, 너무 많은 reorder buffer entry를 사용했을 때, unbalanced한 리소스의 사용이 있다고 판단하여 blocking한다.
- Stall: congestion이 해결될 때까지 offending thread의 instruction decode를 멈춘다.
- Flush: congestion이 해결될 때까지, dispatch를 기다리고 있는 offending thread의 모든 instruction을 flush하고, 이 Thread가 더 이상 추가적인 instruction을 decode하지 않도록 한다.
2.2 SW-controlled priorities
이 SW-controlled priority는 decode stage에서 HW에 의해 수행되는데, 일반적으로, 높은 우선 순위는 더 높은 수의 decode cycle을 Thread에 할당한다. primary thread(PThread)와 secondary thread(SThread)가 있다고 하고, 각각 PrioP, PrioS의 우선 순위를 가지고 POWER5의 두 코어 중 하나에서 동작한다고 하자.
R은 PThread와 SThread의 우선 순위의 차이인, PrioP - PrioS를 사용해서 계산된다. 더 높은 우선 순위를 갖는 Thread는 R-1 decode slot을 받고, 낮은 우선 순위를 갖는 Thread는 나머지 slot을 받는다. PThread로 실행되는 프로세서는 SThread로 실행되는 프로세서에게 손해를 주어서 성능이 증가한다. 두 Thread가 같은 우선 순위를 갖는 특별한 경우, slot을 교대로 받는다.
표 1. Software-controlled thread priorities in the IBM POWER5 processor.
POWER5 에서 SW-controlled priority는 0부터 7사이의 값을 갖는데, 그 의미와 변경 권한은 표1과 같다.
우선 순위는 OR instruction으로 변경되는데, OR X,X,X의 형태이며, X는 레지스터의 번호이다. 두 Thread가 모두 우선순위 1을 가질 때는 둘의 차를 0으로 간주하는 것이 아니라, 우선 순위를 가지지 않은 것으로 하여 수행한다.
3. Evaluation Methodology
POWER5 프로세서에서 SW-controlled priority mechanism의 능력을 알아보기 위해, 프로세서의 특정 성격 한 가지에 초점을 둔 micro-benchmark를 사용한다.
3.1 Running the experiments
이 논문에서는 FAME(FAirly MEasuring Multithreading Architectures) methodology를 사용한다. workload가 steady state로 될 때 그 프로그램의 IPC와 비슷하다면, average accumulated IPC가 대표 값이 될 수 있다. FAME은 average IPC와 steady state IPC의 차이가 threshold이하가 되려면 benchmark가 몇 번 실행되어야 하는지를 결정한다. 이 threshold는 MAIV(Maximum Allowable IPC Variation)이라고 부른다. 이 논문에서는 1%의 MAIV에 도달하기 위해 각 micro-benchmark가 최소 10회 반복되어야 한다.
3.2 Micro-benchmark
Micro-benchmark는 Integer, Floating point, Memory와 Branch, 네 그룹으로 나뉘어 진다. integer group은 latency가 짧은 cpu_int와 latency가 긴 lng_chain_cpuint를 갖는다. memory group에서는 ldint_l2는 모든 load가 항상 L2 데이터 캐시에 hitting되고, ldint_mem은 메모리에 hitting된다. ldint_l2는 ldint_mem보다 높은 IPC를 갖는다. Branch 그룹에서는 br_hit과 br_miss가 높고 낮은 hit prediction rate을 갖는다. 표2는 벤치마크의 loop body structure를 보여준다. 몇 가지 벤치마크는 똑같이 행동하기 때문에 결과 분석에 영향을 주지 않는 것으로 판단되어, cpu_int, lng_chain_cpuint, ldint_l1, ldint_l2, ldint_mem, cpu_fp만을 다룬다.
3.3 The Linux kernel
IBM POWER5에서 동작하는 현재의 Linux kernel(2.6.23)은 아주 적은 경우에 SW-controlled prioritization을 사용하지만, 본 논문에서는 커널 모드에서 사용 가능한 모든 우선 순위를 유저가 set할 수 있는 인터페이스를 제공하는 non-intrusive kernel patch를 만들었다.<!--[if !supportLists]-->
-
1부터 6까지의 우선 순위를 유저가 사용할 수 있게 하였다. 0과 7은 유저가 hypervisor call을 하여 사용할 수 있다.
-
Linux kernel내의 SW-controlled prioritization을 사용하지 않고, 예측할 수 없는 우선 순위의 변화의 영향만을 실험하였다.
-
유저 어플리케이션이 자신의 우선 순위를 변경할 수 있도록 /sys pseudo file system으로 인터페이스를 제공하였다.
4. Analysis of the Results
POWER5 prioritization의 확장이 주어진 Thread의 실행에 어떤 영향을 미치는가와 prioritization과 throughput간의 trade-off에 대해 분석한다. 표 3은 두 개의 PThread와 SThread의 우선 순위가 (4,4)인 SMT mode일 때와 single thread mode일 때의 IPC 값을 보여준다.
4.1 Effect of Positive Priorities
그림 2는 positive priority(PrioP > PrioS)일 때, SThread의 우선순위 변화에 따른 PThread의 성능 향상을 나타낸다.
일반적으로, 낮은 IPC를 갖고 memory-bound가 아닌, lng_chain_cpuint나 cpu_fp와 같은 thread는 높은 우선 순위로부터 얻는 이득이 적다. ldint_l2와 ldint_mem과 같은 memory-bound benchmark는 다른 memory-bound thread와 함께 작동할 때 prioritization mechanism의 이익을 얻어, ldint_l2의 성능은 240%, ldint_mem의 성능은 70%까지 향상되었다. 반면, cpu_int나 ldint_l1과 같은 높은 IPC의 thread는 추가적인 하드웨어 리소스로부터 이익을 얻을 수 있는 것과 같이 prioritization에 매우 민감했다. 그러므로, prioritization은 보통 total throughput이나 성능을 향상시킨다.
이 결과는 memory-bound benchmark가 유사한 요구조건의 다른 벤치마크와 경쟁할 때, POWER5 prioritization mechanism에 의한 영향을 받는다는 것을 보여준다. 그들은 순수한 cpu-bound benchmark보다는 덜 민감하며, memory-bound benchmark와 co-schedule 되었을 때만 증가된 우선 순위에 대한 이득을 얻는다. 때문에 memory-bound benchmark는 다른 memory-bound benchmark와 스케줄 될 때가 아니면 prioritization되지 않아야 한다.
추가적으로, +2의 우선순위의 차이는 상대적인 포화점을 나타내며, 거의 모든 벤치마크가 자신의 성능의 95%이상에 다다랐다는 것을 의미한다. memory-bound benchmark는 가장 큰 성능의 증가가 +2에서 +3에서 나타나므로 이 규칙의 예외이다.
4.2 Effect of Negative Priorities
그림 3은 ldint_mem을 제외한 모든 마이크로 벤치마크의 성능이 negative priority(PrioP < PrioS)에 의해 큰 영향을 받는 것을 보여준다.
이는 positive priority의 영향보다 훨씬 크다. 그림3의 (f)는 ldint_mem이 다른 ldint_mem thread와 함께 수행되지 않는 경우에는 낮은 우선 순위에 민감하지 않은 것을 보인다. 일반적으로 높은 latency의 메모리 오퍼레이션이나 long dependency chain, 느리고 복잡한 오퍼레이션을 가진 thread는 우선 순위의 감소에 덜 영향을 받는다.
memory-bound benchmark는 다른 thread에 가장 큰 영향을 받는 것 중 하나이다. 우선순위 차가 -2에서 -3으로, -4에서 -5로 변할 때 성능이 명확하게 변화한다.
-5 와 같은 우선순위 차는 Pthread가 오직 memory thread가 남긴 것 만을 얻을 수 있기 때문에, transparent background thread와 같이 성능이 중요하지 않은 경우에만 사용되어야 한다.
+2 의 우선순위 차가 보통 최대 성능에 가깝다고 하면, -3은 성능 손실의 명백한 delta이다. Memory-bound thread의 경우 0부터 -2까지는 큰 성능의 변화가 없다. +2일 때를 고려해보면 대부분의 높은 IPC thread는 그 최대 성능의 95%에 달했고 즉, 우선순위 차가 +2/-2보다 커지는 것을 피해야 한다는 결론을 얻을 수 있다.
4.3 Optimizing IPC Throughput
POWER5 는 낮은 IPC task의 decode를 stalling하거나 시스템의 전반적인 성능을 저하시킬 수 있는 thread를 dispatch하는 등, global throughput을 향상시키는 몇 가지 HW mechanism을 사용하며, 대체로 효과적이다.
그림 4는 총 throughput이 두 배 이상 증가할 수 있는 몇 가지 경우를 보여준다. 이는 우선 순위가 낮은 Thread의 slowdown의 비용에서 얻는 것으로 특히 lng_chain_cpuint와 같이 낮은 우선 순위의 Thread가 낮은 IPC를 가진 경우이다. 이러한 경우는 낮은 IPC의 Thread가 이 slowdown을 커버할 수 있고, 총 throughput이 중점적인 목표일 때 사용될 수 있다.
Cpu-bound benchmark의 성능이 그 우선 순위와 함께 향상되는데 반해 memory-bound benchmark는 상대적으로 일정하게 유지된다. 일반적으로 높은 IPC의 Thread의 우선 순위를 증가시켰을 때 IPC throughput의 향상을 얻을 수 있다. 그림 5는 실제 시스템에서 SW-controlled prioritization이 total IPC 향상에 미치는 영향을 그래프로 나타낸 것이다.
그림 5 Total IPCs with increasing priorities
4.4 Optimizing execution time
높은 throughput이 항상 직접적으로 전체 어플리케이션의 짧은 실행시간으로 대응되는 것은 아니다. 병렬 시스템에서의 load balancing은 동기화된 태스크들이 같은 시간에 완전하게 종료되는 경우가 거의 없기 때문에 어려운 문제이다. 표 4는 prioritization mechanism을 사용해서 전체 성능을 향상시키는 예시이다.
표 4 Execution time, in seconds, of FFT and LU.
4.5 Transparent execution
transparent thread는 foreground thread가 full speed로 수행되지 않아도 될 때 background thread가 리소스를 사용할 수 있도록 하는 mechanism이다. POWER5에서는 background thread의 우선순위를 1로 하여 이를 구현하였다. 그림 6의 (a), (b)는 foreground thread가 각각 우선 순위 6과 5 수행될 때 foreground thread에 대한 background thread의 효과에 대한 그래프이다. 대부분의 영향을 받는 thread는 ldint_l1, cpu_int, ldint_l2로 memory-bound thread와 실행되었을 때이다.
그림 6의 (c)는 background thread의 우선순위가 6에서 2로 줄어들면서 foreground thread(ldint_l2, cpu_fp, lng_chain_cpuint)에 미치는 최대 효과를 보여준다. ldint_mem을 background로 하여 실행된 foreground thread가 가장 좋지 않은 성능을 보였음을 알 수 있다.
우선 순위가 6에서 2로 갈수록, cpu_fp와 lng_chain_cpuint는 ST 성능의 10% 정도까지 background thread의 효과가 선형적으로 증가한다. ldint_mem은 우선순위 3과 2일 때 갑작스럽게 증가한다. ldint_mem_2의 레이블은 ldint_mem이 foreground로 실행되면서, ldint_mem이 background는 아닐 경우의 성능을 나타낸다. 그래프는 다른 마이크로 벤치마크가 ldint_mem에 미친 효과가 대략 7%인 것을 보여준다. 즉, 자신의 다른 복사본과 함께 수행되지 않는다면, ldint_mem은 항상 큰 성능의 저하 없이 foreground로 수행된다는 결론을 얻을 수 있다.
마지막으로 그림 6의 (d)는 background thread의 성능을 보인다. 각 포인트는 모든 background thread의 평균을 나타내는데 ldint_mem (6, 1)은 ldint_mem과 다른 네 개의 벤치마크, 그리고 자기 자신과의 pair들이 우선순위 6,1로 실행 했을 때의 background thread의 평균이다. 일반적으로 high-latency thread는 가장 좋은 foreground thread, 가장 좋지 않은 background thread가 된다. 그리고 아주 좋은 성능을 갖는 thread는 다른 thread의 영향을 매우 쉽게 받기 때문에 background thread로서 적합하지 않다.
5. Conclusion
이 논문에서는 SW-controlled prioritization mechanism의 효과를 알아보기 위해 프로세서의 특정 성격에 중점을 둔 마이크로 벤치마크의 집합을 사용하여 심도 깊은 평가를 수행하였다. 이로부터 얻은 결론은 다음과 같다. 첫째로 많은 양의 long-latency operation을 보이는 workload는 low-latency operation을 수행하는 것에 비해 우선 순위에 영향을 덜 받는다. 두 번째로 prioritization mechanism을 사용하여 매우 특별한 경우 두 배 이상의 전반적인 throughput이 향상될 수 있다. 그러나 이러한 극단적인 향상은 낮은 IPC를 갖는 thread의 성능이 대폭 감소함을 의미한다. 조금 덜 극단적인 경우로 40% 정도의 throughput 향상이 가능하다. 세 번째로 우선순위의 full spectrum을 사용하는 대신 +/-2까지 만을 사용하고, 둘 중 하나의 thread가 별로 중요하지 않을 경우에는 "extreme" 우선 순위를 사용한다.
우선 순위가 throughput을 23.7%향상시키고 실행시간을 9.3%줄이며, background thread를 갖는 경우의 case study를 제시하였다. 마지막으로 POWER5의 priority mechanism은 몇 가지 metric을 향상시키는 데 사용될 수 있는 매우 강력한 툴이라는 결론을 내린다. 이 연구는 HW resource를 thread 간에 balancing하는 것을 더 효과적으로 하는 것을 허용하는 SW/HW c-design의 폭넓은 활용으로 가는 길을 열어 주었다.
'HotStudy+-+ > ...*ETC*...' 카테고리의 다른 글
| [Review] Software-controlled Priority Characterization of POWER5 Processor (2) | 2009/06/25 |
|---|---|
| For Semantic Web Final Exam (0) | 2009/06/25 |
| [Advanced Computer Architecture] Advanced Memory Hierarchy (0) | 2009/06/19 |
| [Advanced Computer Architecture] Directory based multiprocessor (0) | 2009/06/19 |


Advanced Memory Hierarchy
Ontology Engineering Methodologies_copy.ppt
NeOn_2007_D5.3.1.pdf