컴퓨터구조

[컴퓨터구조] Memory Hierarchy

슈넌 2023. 10. 18. 22:12

Memory Hierarchy

 

이번 포스팅에서는 Memory Hierarchy에 대해 소개해보겠다. CPU가 발전하면서 Computing Time은 빠르게 발전하였지만, Memory는 그것에 비해 발전 속도가 느렸다. 그 결과, 현재 Memory Wall 시대가 도래했다. 즉, 아무리 빨리 계산할 수 있어도, 메모리 접근하는 시간이 오래 걸려 성능이 저하되는 현상이 발생하는 것이다.

 

Memory Hierarchy는 메모리를 어떻게 하면 최대한 효율적으로 접근하고, 사용할지에 대한 결과물이다.

 

Capacity와 Latency 측면에서 Register << SRAM << DRAM 순서로 Register가 가장 크기가 작고, 접근 속도가 빠른 것을 익히 알고 있을 것이다. 즉, 가장 자주 접근하는 것을 Reigster와 SRAM에, 덜 접근하는 것을 DRAM에 두고 필요한 것만 가져와 쓰는 방법을 생각해 낼 수 있다. 자주 접근하는 것을 어떻게 알 수 있는지는 저번 포스팅에 설명했던 Temporal LocalitySpatial Locality를 생각해 보면 된다.

 

Memory Hierarchy에 가장 좋은 예시는 도서관의 비유인데, DRAM을 도서관이라고 한다면, SRAM은 책을 담는 카트이고, 책상을 Register라고 생각하면 된다. 원하는 책이 있다면 도서관에서 책을 찾아 카트에 담고, 책상에 두고 하나씩 꺼내 읽으면 된다.

 

 

Memory Technology

DRAM Architecture

Dynamic Random Access Memory의 약자로 Transistor와 Capacitor로 구성된다.

 

Capacitor: 데이터를 저장하는 소자 (0 or 1)

Transistor: Data Access를 할 수 있도록 특정 Capacitor와 연결해 주는 Switch 역할

 

D. Lee, Y. Kim, V. Seshadri, J. Liu, L. Subramanian and O. Mutlu, "Tiered-latency DRAM: A low latency and low cost DRAM architecture," 2013 IEEE 19th International Symposium on High Performance Computer Architecture (HPCA), Shenzhen, China, 2013, pp. 615-626, doi: 10.1109/HPCA.2013.6522354.

Word Line과 Bit Line으로 구성된 2-D Array의 형태를 보인다.

 

Modern architecture들은 4~16개의 Bank를 가지고 있고, 여러 개의 Bank를 통해 여러 Data를 동시에 접근할 수 있게 된다.

그렇다면, Port가 많다면 동시에 접근이 쉽지 않을까 생각할 수 있을 것이다.

 

CSE502 from Stony Brook University

하지만 Port수가 증가하면 Area가 증가하기 때문에 좋지 않다.

 

Dual Inline Memory Module (DIMM)은 이러한 DRAM Chip을 회로 기판에 모아놓은 모듈을 말한다. 

 

 

HBM

HBM은 High-Bandwidth MemoryWider Bus와 낮은 Clock Frequency를 통해 높은 Throughput과 적은 Power를 사용하도록 만든 DRAM Memory이다. DDR Memory에 비해 Area는 감소하였고, Bandwidth 증가, Energy 감소, Cost는 증가하였다.

 

NVIDIA

 

Cache

Cache는 위에서 언급한 SRAM을 의미하는 것으로 Register와 DRAM 사이에 존재한다.

CSED503 from POSTECH

Tag Match를 통해 Cache에서 존재 여부를 파악하고 HIT면 Cache에 있는 값을 Copy 하고, Miss인 경우에는 Main Memory에서 읽어와서 Cache에 저장한다.

 

Cache Miss가 생기는 이유가 무엇일까? 총 4가지의 원인이 존재한다.

  • Compulsory: 처음 참조하는 line은 무조건 Cache에는 존재하지 않을 테니 Miss가 발생한다. (a.k.a cold start misses) 이것은 어쩔 수 없이 무조건 발생하는 Miss이다.
  • Capacity: Cache의 크기가 작으면 담고 있을 수 있는 Data가 적으므로 Miss가 자주 발생한다.
  • Conflict: Cache의 line-placement strategy에 따라 생기는 Miss로, 같은 Set에 자주 접근하면 해당 Set이 가득 차서 생기는 Miss이다. ideal full-associativity의 경우에는 발생하지 않는다.
  • Coherence: Multi-core인 경우 코어당 캐시가 존재하여 coherence를 보장하기 위해 하나의 코어의 cache가 업데이트될 때, 다른 코어의 cache line의 값이 invalid 되어 miss가 나는 것을 말한다.

Placement Policy

CSED503 from POSTECH

Cache Placement Policy는 3가지로 볼 수 있는데

  • Fully Associative Cache: Cache Line 어느 곳이든 저장 가능
  • n-way Set Associative Cache : 1개 set 당 n개의 block을 저장할 수 있음
  • Direct Mapped Cache: 1개 set 당 1개의 Block만 존재한다.

 

Direct Mapped Cache

 

그림1. Direct Mapped Cache CSED503 from POSTECH
그림2. Direct Mapped Cache CSED503 from POSTECH

 

Direct Mapped Cache의 그림으로 Index로 row를 찾아가서 tag bit로 cache에 값이 있는지 확인한다. 하지만 여기에는 취약점이 존재한다. 연속적인 Memory Access가 일어나면 Tag Bit는 변하지만 같은 Index를 사용하게 된다. 그렇게 되면 Data Block이 가득 차서 Evict이 일어난다. 그렇기 때문에 Tag Bit가 그림 1처럼 MSB에 나와야 한다.

 

n-Way Set-Associative Cache

2-way로 같은 Index에 두 개의 Data Block을 둘 수 있다. 

 

장점

  • Cache Hit Rate이 증가한다. - 같은 Index이더라도 n개의 Data Block이 있으므로 n개만큼 저장할 수 있다.

 

단점

  • 구현이 복잡함
  • 모든 way를 확인해야 하기 때문에 access latency도 늘어난다.  

Fully Associative Cache

 

Index 정보가 존재하지 않고 Tag Bit로만 Data Block에 접근한다. 하지만 모든 Cache Line의 Tag Bit를 확인해야 하기 때문에 오래 걸리고 전력을 많이 소비한다.

 

Computer Architecture A Quantitative Approach, 6th ed., Hennessey & Patterson

그림에서 볼 수 있듯이 way 수가 많을수록 Access Latency가 증가하는 경향을 보이는 것을 알 수 있다.

 

Computer Architecture A Quantitative Approach, 6th ed., Hennessey & Patterson

Energy 또한, Access Latency와 비슷한 경향을 보이는 것을 알 수 있다.

 

Replacement Policy

새로 접근한 데이터가 가득 찬 Set에 해당하면 Evict가 발생하고, 여기서 어느 데이터를 내보낼지 선정을 해야 한다.

 

  • Random: 무작위로 뽑아서 Evict
  • Least-Recently Used (LRU): 가장 최근에 사용되지 않은 것 Evict
  • First-In, First-Out (FIFO) a.k.a. Round-Robin: 순서대로
  • Not-Most-Recently Used (NMRU): 가장 최근에 사용한 것 제외하고 FIFO

 

하지만, 주의할 점은 결국 second-order effect기 때문에 전체 성능에 영향이 별로 없을 수 있다. Second-order effect인 이유는 결국 cache miss가 발생해야 하기 때문이다.