20160621

1. Decoupling Loads for Nano-Instruction Set Computers
OoO의 성능이 좋은 이유. 스케쥴링. 하드웨어 지원 덕분에 스케쥴링이 잘 됨. 동적으로 이벤트에 적응하므로 성능이 좋음. ISA evolution: CISC. 예전에는 한 개의 명령어로 여러 개의 작업을 하고자 했음. 하지만 아키텍쳐가 발전함에 따라 RISC로 변화. 한 명령어가 한 번에 한 개의 작업만 수행하고자 함. 이 연구에서는 더 나아가 NISC를 제안함. 현재의 load연산은 주소를 연산하고, 메모리를 접근하고, 레지스터에 쓰고, 순서를 맞추는 작업을 한다. 이처럼 load 명령어는 실제로 여러 개의 작업으로 구성되어 있으며, 이를 더 자세히 분해하고자 함. 주소 계산 및 메모리 접근을 함께 하도록 한다. 레지스터에 쓰고 순서를 맞추는 것을 함께 하도록 한다. 이처럼 load 명령어를 분해해서 한다면, 더욱 프로그램을 최적화할 수 있는 여지가 있다. Decoupling loads는 advanced load in Itanium, prefetching과는 다르다. Itanium의 advanced load는 speculative하다. Prefetching은 orthogonal한 문제이다. load 분해를 통해 성능 향상이 가능함. OpenRISC를 사용해 실험함. Load decoupling을 통해 평균 8.4%의 성능 향상 달성. Prefetching과 다름을 실험으로 보임. 이를 통해 in-order core의 성능을 OoO에 가깝게 만들 수 있다.

2. Future Vector Microprocessor Extensions for Data Aggregations
데이터는 기하급수적으로 늘고 있다. 이러한 데이터를 분석하는 것이 중요해지고 있다. 2005년부터 frequency scaling이 불가능하다. 명시적인 병렬성이 사용되어야 한다. 데이터 수준의 병렬성은 높은 성능을 낸다. 이 연구에서는 vector SIMD를 aggregation에 사용할 수 있는지 보고자 함. Data aggregation이란 무엇인가? 반복적으로 발생하는 연산들이 있다. 대표적인 aggregation function에서는 sum, average 등이 있다. SQL을 대상으로 실험함. SELECT, COUNT, SUM, GROUP BY를 사용함. Uniform / sorted / sequential / heavy hitter / zipfian distribution을 가지고 실험함. 데이터 셋에 unique한 키의 수를 cardinality라고 함. Low cardinality ~ high cardinality까지 다양한 설정으로 실험함. PTLsim, DRAMSim2를 사용해 실험함. Polytable 방식은 테이블을 복사해서 동시에 접근하는 것. Polytable은 low cardinality에서 scalar보다 좋지만, high cardinality에서는 더 나쁜 성능을 보인다. Sorted reduce 기법은 지난 HPCA에서 발표한 것(자세한 내용은 설명하지 않음). Sorted reduce 기법은 cardinality와 무관하게 scalar에 비해 좋은 성능을 보인다. Polytable에서는 gather-modify-scatter 충돌을 방지하기 위해 테이블을 복사해야만 한다. VPI와 유사하지만 다른 명령인 VGAsum을 소개함. 이를 사용하면 테이블을 복사하지 않고도 polytable과 같은 동작을 한다. 성능 향상을 볼 수 있음. 그 다음으로 partially sorted monotable을 제안. 처음에는 motivation, contribution 모두 이해되지 않았으나, 듣다보니 이해되는 것 같기도 함. 그러니까 핵심은 SIMD 프로세서를 data aggregation에 사용하고 싶다는 것이다. 이를 위해서 특정 어플리케이션 – SQL 데이터베이스를 대상으로 어떻게 하드웨어적으로 병렬 연산하면 성능을 개선할 수 있는지 설명한다. 그리고 다양한 메커니즘을 설명한다. 각각의 메커니즘이 가장 높은 성능을 보이는 cardinality 수준이 다르다. 2.7~7.6배의 성능 향상을 보인다. Single machine을 대상으로 함.

3. Efficiently Scaling Out-of-Order Cores for Simultaneous Multithreading
SMT의 쓰레드 수를 증가시킴에 따라 in-order core와 OoO core의 성능 격차가 줄어든다. SMT 쓰레드의 수가 증가함에 따라 in-order로 실행되는 명령어의 수가 증가한다. Hybrid instruction window를 제안한다. Shelf라는 새로운 구조를 추가함. 대부분의 명령어는 in-order로 실행될 수 있으므로, 그 명령어들을 shelf에 넣어둔다. 그리고 여기에 들어간 명령어들은 OoO 자원을 사용하지 않는다. Key challenges는 correctness, steering이다. Correctness를 보장해야 한다. OoO와 shelf가 잘 상호작용하여 올바르게 실행될 수 있도록 보장해야 한다. 그리고 OoO 자원을 사용할 것인지 shelf를 사용할 것인지 결정해야 한다. Shelf에 모든 명령어를 보내면 in-order core가 되고, shelf를 사용하지 않으면 이득이 없다. Shelf instructions는 IQ(instruction queue), PRF(physical register file), ROB(reorder buffer), LSQ(load-store queue)를 사용하지 않는다. Data dependence를 해결해야 한다. In-order shelf issue를 보장해야 한다. 그리고 speculation을 처리해야 한다. gem5 simulator를 사용해 실험함.

4. Accelerating Dependent Cache Misses with an Enhanced Memory Controller
메모리 접근 시간은 두 가지로 이루어진다. DRAM access latency와 on-chip latency로 이루어진다. 메모리 접근 시간이 미치는 영향은, 그것에 의존적인 캐시 미스가 얼마나 많으냐에 따라 달라진다. Enhanced memory controller를 제안한다. 무엇을 하겠다는 것인지는 잘 이해되지 않음. Dependence를 탐지하면 EMC가 처리해준다? 20%의 latency 감소.

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: