OS & Architecture & Network

[컴퓨터 구조] 메모리 1. Introduction / Memory technologies

Presenthee 2023. 7. 17. 01:23

Computer Organization and Design 5th edition을 읽고 정리한 포스트입니다.

메모리는 유한하다. 하지만 프로그래머들은 무한하고, 빠른 메모리를 원하므로 Illusion을 만들어야 한다.

 

Introduction

Locality

  • Temporal Locality (in time) : 현재 참조reference 된 아이템이 가까운 시간 내에 다시 참조될 가능성이 높다.
    • 반복문loop. 반복문의 특정 변수나 data, instruction은 반복해서 참조될 것이다.
  • Spatial Locality (in space) : 현재 참조된 아이템의 근처 주소에 있는 아이템들이 참조될 가능성이 높다.
    • 배열array. 배열의 아이템들은 연속된 주소에 할당되어 있으며, 보통 연속적으로 참조될 가능성이 높다. 

 

Memory Hierarchy(메모리 계층 구조)

locality라는 특성을 적절히 잘 이용하여 memory hierarchy를 만들었다.

가장 빠르고, 가장 적고, 가장 비싼 메모리 (processor에 가장 가까움) 부터

가장 느리고, 가장 많고, 가장 싼 메모리 (processor에서 가장 멂) 까지 여러 레벨의 메모리로 이루어져 있다.

출처 위키백과

목표: 가장 싼 메모리에 최대한 많은 양을 제공하면서도, 가장 빠른 메모리의 접근 속도를 제공하는 것.

이를 위해 우리는 locality를 이용한다. 

현재 사용하는 데이터들과 Temporal & Spatial locality가 높은 데이터들을 더 높은 레벨의 memory에 둔다.

 

Terms(용어 정리)

  • block or line
    • 인접한 두 레벨의 메모리 사이에서는 데이터가 직접적으로 복사/전송(transfered) 된다. 이 전송의 최소 단위를 말한다.
  • hit  / miss
    • hit : processor가 데이터를 요청했을 때,  upper level에 해당 데이터가 있는 경우
      • hit rate: 메모리 접근access 중에서 hit이 발생한 접근의 비율을 의미한다.
      • hit rate는 주로 메모리 계층구조의 성능performance 을 측정하는 지표measure 로 사용된다.
    • miss : processor가 데이터를 요청했을 때, upper level에 해당 데이터가 없는 경우
      • 이 경우 lower level에 접근하여 요청된 데이터를 포함한 block을 가져온다.
      • miss rate: 메모리 접근 중에서 miss가 발생한 접근의 비율을 의미한다.
  • hit time
    • 메모리 계층구조에서 upper level에 접근하는 데에 걸리는 시간을 의미한다.
    • 해당 접근이 hit인지 miss인지 판단하는 시간도 포함한다.
  • miss penalty
    • upper level에서 miss가 발생한 block을 lower level에서 가져와서, 교체하는 데에 걸리는 시간
    • + 해당 block을 processor에게 전달하는 데에 걸리는 시간

 

이러한 구조는 컴퓨터의 다른 구성요소(OS, compiler 등)에도 많은 영향을 미쳤다.

일반적으로 모든 프로그램이 메모리 access에 많은 시간을 사용하기 때문에,

memory system은 성능에 영향을 주는 가장 큰 요인 중에 하나이다.

좋은 성능을 위해서는 메모리 구조를 잘 이해하는 게 매우 중요하다.

 

Memory Technologies

현대의 메모리 계층 구제에는 4개의 주요한 memory technology가 존재한다.

위에서 아래로 갈수록 access time은 더 느리며, 가격은 더 비싸다.

 

SRAM(Static Random Access Memory)

  • 빠르고 비쌈, 주로 캐시 메모리로 사용한다. 0.5 ~ 7.5ns of typical access time
  • 읽기 쓰기가 가능한 single access port를 가진 memory array의 IC(Integrated Circuits, 집적회로)이다.
  • 비트 당 6 ~ 8개의 트랜지스터 사용.
  • 전원이 공급되면 안정적으로 값을 유지하는 특성이 있다. -> Static
    • refresh(유출된 전하를 재충전) 할 필요가 없으므로 access time이 거의 cycle time에 근접한다.

 

DRAM(Dynamic Random Access Memory)

  • SRAM보다 비트 당 가격이 싸고, 밀도가 높음. 50 ~ 70ns of typical access time
  • cell에 값을 저장할 때 capacitor의 charge로 여부로 저장(1과 0), single 트랜지스터 사용
  • charge의 유출(leakage)가 있으므로 주기적인 refreshing이 필요하다. -> Dynamic

DRAM의 내부 구조

DRAM 내부에는 Bank가 있고, 각 Bank는 연속적인 Row로 이루어져 있다.

refresh시 row (line이라고도 한다.) 단위로 하며, 반복된 접근시 row를 buffering하여 성능을 향상시킨다.

이외에도 뱅크별로 buffer를 두어 read, write를 여러 뱅크에서 동시에 처리할 수 있도록 하기도 한다.

 

서버에서는 주로 DIMMs(Dual Inline Memory Modules)라고 불리는 작은 보드를 사용하는데, 보통 4-16개의 DRAM을 포함한다.

 

SDRAM(Synchronized DRAM)

  • DRAM에 clock이 추가된 형태. processor와 syncronize할 필요가 없음.
  • 대표적으로 DDR(Double Data Rate) SRAM은 clock의 falling edge & rising edge에 데이터를 전송하여 일반적인 SRAM 대비 약 약 두배의 bandwidth를 가진다.

 

Flash Memory

  • EEPROM(Electrically Erasable Programmable Read-Only Memory)의 일종이다.
    • 전기적으로 데이터를 지우고 다시 기록할 수 있는데, 이 과정에서 memory bits가 wear out, 닳을 수 있다.
    • 이로 인해 flash controller가 write를 spread 한다. (wear leveling)
  • semiconductor memory, 5000 ~ 50000ns of typical access time
  • non-volatile(비휘발성) memory. 즉 전원이 공급되지 않아도 정보를 유지할 수 있다. 

 

Magnetic Disk(HDD)

  • 5,000,000 ~ 20,000,000ns of typical access time (너무 느림, 그러나 싸다)
  • non-volatile(비휘발성) memory.