20140811 – Workshop

1. Support for multi-granular pages for the Hardware TLB, 박창현
요즘에 쓰이는 시스템에서는 virtual address를 사용하므로, address translation이 필요하다. Address translation의 효율을 높이기 위해 사용하는 것이 TLB이다. 문제는 현재 트렌드인 빅 메모리 워크로드에 지금의 TLB가 적합하지 않다는 것이다. 실험 결과, 일부 워크로드에서는 50% 이상의 CPU 사이클을 address translation에 쓰고 있었다. 4KB 페이지를 사용하는 것으로는 빅 메모리 워크로드에 적합하지 않다. 더 큰 페이지 사이즈가 필요하다.

1) [MICRO’12] Coalesced Large Reach TLBs
여러 개의 페이지를 하나의 TLB entry로 커버할 수 있도록 한 연구.
2) [MICRO’13] Large-reach MMU Caches
Page walking cache를 효율적으로 사용해 page walking 속도를 높이자.
3) [ISCA’13] Efficient Virtual Memory for Big Memory Servers
빅 메모리 어플리케이션은 초반에 메모리를 많이 할당받고, 나중에는 자체적으로 쓴다. 그 영역을 할당받은 이후에는 잘 변하지 않음. 그냥 처음부터 하나의 segment로 할당해주고 그 안에서 offset을 가지고 접근하도록 한다.

Linux에서는 Huge TLB page라는 것을 지원한다. 페이지를 할당할 때 2MB 단위로 페이지 할당한다. 하지만 이를 사용하기 위해서는 어플리케이션을 다시 컴파일해야 함. 이를 해결하고자 다시 Transparent Huge Pages(THP)라는 것을 도입했다. THP를 사용했을 때 성능이 향상됨을 볼 수 있다.

하지만 이렇게 해도 부족하다. Multi granular L2 TLB entries를 제안한다. level1은 그대로 두고, level 2를 multi granularity로 할당하자. Level 1은 lookup latency를 낮게 유지하고자 그대로 4KB로 유지한다. Multigranular TLB를 사용하면 더 적은 TLB entry로도 TLB reach를 높일 수 있다.

기존의 multigranular TLB와 어떻게 다른지가 의문이다. Complexity가 너무 높을 것 같다. TLB가 너무 느려지지 않을까? Big memory 어플리케이션이 그렇게 많지 않다. 그리고 지금까지 한 연구들과 크게 다르지 않은 것 같다. In memory database와 graph 처리 쪽으로 생각하고 있다.

2. Support for Virtual Address Translation with Paging and Segmentation Policy, 이선영
창현이 형과 같이 연구하고 있음. Paging에 segmentation을 추가하자. Large working set을 사용하는 어플리케이션이 늘어나고 있다. 매우 큰 메모리를 사용하는 프로그램이 많아진다. 2MB, 1GB의 크기의 페이지를 지원하는 TLB를 제공한다. 하지만 따라서 flexibility가 낮다. address translation에 의한 오버헤드가 크다. x86의 경우 4 level page table을 사용하는데, big memory를 요구하는 application의 경우 TLB miss가 많아서 address translation으로 인한 오버헤드가 크다.

1) [MICRO’13] Large reach MMU caches
Page table이 구성되어 있는 상태에서 MMU cache가 커버할 수 있는 범위를 늘리기 위해 물리적으로 연속된 페이지는 한 번의 address translation으로 커버하도록 함.
2) [ISCA’13] Apply segmentation policy in native system
Big memory에 초점을 맞춘 연구이다. 처음에 메모리를 할당할 때 segment로 할당해, 이를 잘 쓰도록 하자는 것. swap을 하는 영역 빼고는 segment 단위로 할당한다.

Segmentation과 paging을 동시에 사용하는 것을 제안한다. 기존의 연구에서는 segment를 하나를 뒀으나, segment를 여러 개 두는 것을 제안한다. Segment를 몇 개 둘 것인지를 연구할 것. 여러 개의 segment를 두는 것이 메모리를 많이 할당받는 어플리케이션에는 좋으나, 동적으로 할당과 해제하는 어플리케이션에는 그다지 좋지 않을 수 있다. Policy를 어떻게 할 것인지를 고려해야 함. Fragmentation, compaction에 대한 문제가 있음.

3. Buffering-based Disk I/O Management in Hadoop, 정준기
Hadoop은 IO intensive하다. 그런데 contention으로 인해 성능에 크게 제약을 받음. [EuroSys’10] Delay Scheduling을 보면, 읽기는 계속 일어나지만 쓰기는 간헐적으로 일어나고, burst write가 read throughput을 크게 떨어뜨린다. Page cache의 write back policy로 인해 burst write가 일어난다.  지금까지의 접근 방식이 모두 적합하지 않다. 메모리를 버퍼로 사용해 디스크 관리를 하는 것을 제안한다. Burst write를 줄여서 read write contention을 제거하자. Memory buffer를 만들어, burst write를 없애자. Caching의 효과도 볼 수 있을 것이다. 이를 연구하려면 consistency, reliability 등의 문제를 해결해야 함.

4. Exploring Heterogeneous Memory System, 김태훈
Memory wall이 성능을 저하시킴. 코어의 개수가 증가하더라도 메모리 대역폭이 커지지 않으면 성능이 떨어진다. 3D stacking memory가 최근에 많이 연구되고 있음. DRAM chip을 쌓아올려 high bandwidth를 제공한다. 3D stacked memory는 여러 형태로 나옴. 3D stacked, HMC, HBM 등. HBM을 연구하고자 함. 3D stacked memory를 어떻게 사용할 것인지가 연구 주제. 최대 13배의 bandwidth를 제공한다.

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