Computer Architecture

Computer Architecture - Memory (1)

tangerine0302 2024. 12. 26. 12:13

일반적으로 Memory 하면 DRAM, NAND Flash, Cache에 대해 많이 들어봤을 것이다.

그렇다면 DRAM에서 RAM은 무엇을 의미하는 것일까?

 

RAM(Random Access Memory)

-Data의 위치에 상관없이, 일정한 access time을 가지는 Memory를 의미한다.

- 그렇다면 왜 일정한 access time을 가지는 것이 더 중요할까?

- 예측 가능한 access time( = 일정한 access time)이 access를 조금 더 빠르게 하는 것보다 더 좋기 때문이다.( HW복잡도 감소 등)

e.g. DRAM, SRAM, Flash Memory, SSD

 

Non-random access Memory

-non-random access memory의 경우 데이터의 위치에 따라 access time이 달라짐 

-일반적으로 non-random access memory의 경우 random access memory보다 10^5 ~ 10^8까지 느리다.

 

 


Bottleneck(병목현상)

- Logic은 점점 더 빨라지고 있고, 메모리 용량도 점점 더 커지고 있지만 메모리는 로직만큼 빨라지지 못해 발생하는 현상

 

Design Philosophy(설계 철학)

- 두 종류의 메모리를 모두 활용하는 Hybrid Solution을 사용하자

  • 자주 사용되는 데이터는 더 빠르고 비싼 메모리(cache)에 저장
  • 나머지는 느리지만 더 저렴한 메모리에 저장

이를 Memory Hierarchy (메모리 계층구조) 라고 한다.

Memory Hierarchy

 


Cache


Block

- 서로 다른 계층 사이에서 주고받는 데이터의 단위

 

Hit

- 우리가 access하려는 data가 해당 level의 cache에 존재한다 → Hit! 

  • Hit rate: 해당 level cache에 data가 존재하는 비율
  • Hit time: 해당 level cache를 접근하는데 걸리는 시간

 

Miss

- 우리가 access 하려는 data가 해당 level의 cache에 없다 → Miss!

  • 프로세서는 data를 다음 level 캐시에서 불러올 때까지 기다려야 한다.
  • Miss rate = (1 - Hit rate)
  • Miss penalty = 다음 level cache에서 data를 access 하는데 걸리는 time + 해당 level cache의 data를 저장(교체) 하는데 걸리는 time
  •  Hit Time << Miss penalty

 

따라서 성능을 올리기 위해서는 Hit rate를 올리고 Hit time을 줄이는 것이 중요함

이를 위해 사용되는 것이 Locality(지역성)이다.

 

Principle of locality

- program들은 보통 특정시간 동안 상대적으로 적은 부분의 address에 접근한다.

  • 90%의 메모리 접근은 전체 Memory address 중 10%에서만 이루어지기 때문에 이를 활용하는 것이 매우 유용하다

 

Types of locality

- Temporal locality(시간적 지역성)

  • 만약 어떤 data가 최근에 사용되었다면, 곧 다시 사용될 가능성이 높음
  • cache에서는 시간적 지역성을 활용할 때 
    • 1. 최근에 접근한 데이터를 프로세서에서 가까운 메모리에 저장
    • 2. Data를 evict 하고 새로운 data를 저장할 공간을 마련할 때도 최근에 접근된 data를 캐시에 남겨놓음(LRU)

- Spatial locality(공간적 지역성)

  • 만약 어떤 data가 최근에 사용되었다면, 그 주변에 있는 data가 곧 사용될 가능성이 높음
  • cache에서는 공간적 지역성을 활용할 때
    • 연속적인 word로 구성된 blcok을 상위레벨 캐시에 저장함

 

Average Access Time 

- Access time = hit time + miss penalty * miss rate

- 따라서 Hit time은 낮고, Hit rate는 높아야 한다.

※ miss penalty가 hit time보다 매우 매우 높기 때문

 

 

Handling a Cache Miss

-Cache hit 경우, hit time이 1 cycle 이내라면 pipline에 영향을 미치지 않지만, cache miss의 경우 pipline에 영향을 준다.

 

Instruction Miss인 경우와 Data Miss인 경우에 따라 action이 달라진다.

 

1. Instruction Miss 인 경우

  • 기존 PC값을 메모리에 전달함
  • 메인 메모리에서 기존 PC값에 해당하는 명령어를 읽어올 때까지 기다림
  • 읽어 들인 명령어 값을 적절한 캐시 공간에 씀
  • 명령어 수행을 재시작

 

2. Data Miss인 경우

  •  Stall 발생
  • 메인 메모리에서 해당 데이터를 읽어 들일 때까지 기다림
  • 메모리에서 읽어온 값으로 Pipeline 수행을 계속함