Abstract
Hybrid2의 필요성
-3D-stacked Memory와 Off chip DRAM으로 구성된 시스템을 위함
-기존에는 DRAM Cache 혹은 Flat address space 방식으로 사용되었음
-메모리 용량 및 데이터 전송 Cost의 절충을 위한 Hybrid 방식을 구성
Intro
문제점
-컴퓨터 시스템의 성능은 대부분 Memory hierarchy 구조에 의해 좌우
-높은 대역폭:적은 용량을 가진 3D-stacked DRAM을 Near Memory, 낮은 대역폭:많은 용량을 가진 일반 DRAM을 Far Memory
-NM이 DRAM cache로 사용될 때, 메모리 시스템에서 NM용량은 무시
-NM이 Flat address space로 사용될 때, Swap으로 인한 오버헤드 증가
-공통적으로 캐시라인 및 마이그레이션 블록이 작을수록 메타데이터의 크기가 증가(Tag Array 및 Remapping Table)
제안
-3D stacked DRAM의 작은 부분을 cache로 사용, 나머지를 Flat address space로 사용한다.
-Tag Array또한 On chip NM에 위치하여 빠른 액세스 시간, Migration에 필요한 Remapping metadata의 Cache 역할로 확장
-요청된 모든 데이터는 DRAM cache로 copy, DRAM cache에서 제거될 때 NM or FM 마이그레이션 결정
-DRAM cache와 Flat address space는 논리적 분할
Related Work
DRAM Cache
-작은 캐시라인은 Tag Overhead가 높지만 캐시공간을 효율적이게 사용
-큰 캐시라인은 Tag Overhead가 낮지만 Over fetching 현상이 나타난다.
-Off chip DRAM의 대역폭은 Processor의 접근보다 대부분 Cache miss, writeback에서만 사용된다.
Data Migration
-3D stacked DRAM을 시스템이 직접적으로 사용할 수 있어 높은 대역폭과 용량의 이점을 가지게 된다.
-초기에는 HW적 지원으로 구성했지만, OS에 기능을 추가해 Remapped data를 추적 할 때 page table을 사용할 수 있게 되었다. 하지만 Working set 변화에 대한 민감도가 저하되었다.
Motivation and Design
Motivation
-Cache와 Migration의 큰 차이점은 메모리 공간을 그대로 사용한다는 점
-Migration은 Cache와 다르게 Copy가 아닌 Swap을 해야함
-Coarse Granularity는 공간 지역성이 좋지만, Over fetching 문제가 있다.
-Finer Granularity는 대역폭을 효과적으로 사용하지만 Metadata overhead 가 존재한다.
-공격적인 Migration은 과도한 트래픽을 발생시킬 수 있으며, 덜 공격적인 Migration은 적시를 놓칠 수 있다.
-Cache에서는 Tag, Migration에서는 주소변환을 사용하기 때문에 성능저하 유도
-Max Perf는 작은 캐시라인이 더 높은 성능에 대한 기회를 놓칠 수 있다는 것을 나타낸다.
-Min Perf는 큰 캐시라인이 Over fetching으로 인한 성능이 저하될 수 있음을 나타낸다.
Design choice
-Migration을 위한 3D DRAM의 대부분의 공간을 Flat address space로 사용, 대부분의 공간을 메모리로 사용가능
-Cache를 위한 3D DRAM의 작은 부분을 사용하면 캐시 이점 확보 가능, Working set 변화에 따라 빠른 대응 가능
-작은 캐시라인을 가져 큰 캐시라인의 부정적은 성능 영향을 방지
-DRAM cache 를 sector화 하여 sector단위로 Migration한다. 따라서 메타데이터 오버헤드를 줄이고 Cache miss시 요청된 Cache line만 Copy한다.
-Cache 공간과 Migration 공간의 데이터 이동은 Relocate가 필요하지 않아야 한다. Cache와 Migration에 필요한 Metadata를 위한 통합 메커니즘을 제공
Proposed Technic
Overview
-작은 Sectored DRAM Cache를 가진다. Tag는 On chip에 유지되며, Data 부분은 NM의 상대적으로 작은 부분에 유지된다.
-Data는 Cache line 단위(e.g. 64B)로 Fetch, Tag는 Sector 단위(e.g. 2KB)로 유지한다.
-메모리 액세스시 DRAM cache Tag가 확인되고 miss일 때 섹터에 대한 new entry가 DRAM cache에 할당.
-실제 Data는 NM or FM에 있으며 FM에 있는 경우에만 Cache에 대한 New entry를 할당
-NM은 DRAM Cache Tag에 있는 Pointer를 사용해 Cache와 Flat address space를 논리적으로 분할한다. 이를 통해 NM에 있는 Sector를 DRAM cache Tag에 간단히 연결가능 하고, 캐시 된 FM Sector를 Copy한 캐시라인을 이동하지 않고 NM으로 마이그레이션이 가능하다.
-DRAM Cache Tag Array는 메모리 세그먼트의 재매핑된 주소를 저장하여 Remapping table의 캐시 역할을 한다.
eXtended Tag Array
-XTA는 DRAM Cache에 대한 모든 Tag를 가지고 있는 On chip Tag Array
-Set associative 방식으로 Cache 구성, 즉 Dirty Flag가 있는 다중 섹터에 대한 항목 유지
-Tag, Cache State는 Sector화된 Cache에 필요한 필드, Counter와 Pointer는 추가 항목
-NM 포인터는 set/way 방법에 따라 할당된 NM위치를 가리킨다.
-FM 포인터는 해당 Sector가 NM으로 Migration 되지 않았을 때 FM의 물리적 위치를 가리켜 Remap table을 lookup하지 않도록 한다.
Memory space layout and metadata
-NM, FM에 대한 all to all remapping을 지원한다.
-Remap Table과 Inverted Remap Table을 유지한다.
-FM 포인터를 통해 DRAM Cache에 현재 있는 FM Sector의 Remap Table 항목에 대한 Cache 역할을 한다.
-Free FM stack은 FM에서 NM으로 Migration된 Sector의 위치이다. 즉, FM에서 사용 가능한 sector의 위치를 저장한다.
Memory access path
-1. XTA Hit, XTA에 Sector에 대한 항목이 있더라도 요청된 캐시라인은 NM에 있거나 FM에 있다.
-1.a. XTA Hit/Cache line hit, 요청된 캐시라인이 NM에 존재한다. Sector는 NM or FM에 존재한다. 두 경우모두 NM Pointer를 사용해 캐시라인에 접근 가능하다.
-1.b. XTA Hit/Cache line miss, 요청된 캐시라인이 NM에 존재하지 않는다. 즉, Sector에 대한 항목은 있지만 캐시라인이 유효하지 않다. 이것은 Sector가 FM에 존재하고 일부 캐시라인만 DRAM Cache 로 Fetch된 것을 의미한다. 따라서, FM Pointer를 사용해 Cache line을 읽고 NM Pointer를 사용해 해당 위치에 기록한다.
-2. XTA Miss, XTA에 요청된 Sector와 일치하는 항목이 존재하지 않는다. 요청된 Sector는 NM or FM에 있다. 메모리 시스템에서 Sector위치를 찾기 위해 Processor Physical sector address를 사용해 NM의 Remap table을 액세스한다. 찾았다면 NM or FM 여부에 관계없이 해당 Sector에 대한 entry가 XTA에 할당된다.
-1.a. XTA Miss/Sector in NM, Sector가 NM에 있음을 나타낸다. 즉, 모든 캐시라인이 NM에 이미 존재하고 XTA의 항목만 업데이트 한다.
-1.a. XTA Miss/Sector in FM, Sector가 FM에 있음을 나타낸다. NM에 공간을 할당하고 요청된 캐시라인을 FM에서 할당받은 NM으로 Copy해야한다. 이후 XTA는 새로운 Sector로 업데이트 한다.
Allocating NM
-NM에 new sector를 할당하려면 NM에 존재하는 Sector를 FM으로 Migration한다.
-1. NM에서 victim을 선택한다. 2. FM에서 Free sector를 확인한다. 3.데이터를 NM으로부터 FM으로 Copy한다. 4. Remapping Structure를 업데이트한다.
-Victim을 선택할 때 DRAM Cache로 사용되지 않는 NM Sector를 선택해야 한다. 즉, 자주 사용되는 Sector가 DRAM Cache에 있을 가능성이 높기 때문이다.
-FM에서 NM으로 Migration되는 경우 해당 FM위치를 Free sector stack에 추가한다.
DRAM cache evictions
-LRU 방식을 사용한다.
-이미 NM으로 Migration된 Sector를 DRAM cache에서 제거하는 경우 데이터 이동이 필요하지 않으며, 재 매핑 테이블은 NM으로 마이그레이션 되었을 때 업데이트 되었다.
-Sector가 FM에 있을 때, Migration Decision을 사용해 NM or FM으로 Evict한다. NM으로 Migration하려면 Invalid cache line 을 Copy하여 NM에 저장하고 재매핑 테이블을 업데이트한다. FM으로 Evict하려면 모든 Dirty Cache line을 FM으로 Writeback 한다.
Migration Decision
-해당 Migration으로 인한 FM Access 오버헤드를 감당할 수 있는지 확인한다.(Counter사용)
-Counter가 Sector를 Migration하는데 필요한 추가 FM Access보다 작다면 FM위치로 Evict된다.
-만약 Counter가 크다면, DRAM cache set에서 가장 많이 Access된 Sector가 있는지 검사한후 많다면 NM으로 Migration한다.
'개인 공부 > 논문' 카테고리의 다른 글
LSP Collective Cross-Page Prefetching for NVM (0) | 2021.03.10 |
---|---|
Towards Efficient NVDIMM-based Heterogeneous Storage Hierarchy Management for Big Data Workloads (0) | 2021.03.08 |
The gem5 Simulator (1) | 2021.03.08 |
Adaptive Memory Fusion: Towards Transparent, Agile Integration of Persistent Memory (0) | 2021.02.16 |
Don’t Shoot Down TLB Shootdown (1) | 2021.02.16 |