05. Large and Fast: Exploiting Memory Hierarchy

chelseey·2024년 12월 12일

Introduction

Principle of Locality

• Temporal Locality (시간적 지역성)
: 최근에 접근한 데이터는 가까운 미래에도 다시 접근될 가능성이 높음.
ex. 루프 내의 명령어, 반복적으로 사용되는 변수

• Spatial Locality (공간적 지역성)
: 최근에 접근한 데이터 근처에 있는 데이터도 곧 접근될 가능성이 높음.
ex. 순차적인 명령어 접근, 배열 데이터

Taking Advantage of Locality

• 디스크에 모든 데이터 저장
: 기본적으로 데이터는 크기가 큰 디스크(예: HDD, SSD)에 저장됨.

• 디스크에서 DRAM으로 데이터 복사
: 최근에 접근한 데이터 또는 그와 근처에 있는 데이터는 디스크에서 더 빠른 메모리인 DRAM(주 메모리)으로 복사됨.

• DRAM에서 SRAM으로 데이터 복사
: 더 최근에 접근한 데이터 또는 그와 근처에 있는 데이터는 DRAM에서 더 작은 SRAM(캐시 메모리)으로 복사됨.
SRAM은 CPU에 직접 연결되어 있으며, DRAM보다 더 빠르게 데이터를 처리할 수 있음.

Memory Hierarchy Levels

• Block (aka line)
: 데이터 복사의 기본 단위로, 여러 단어를 포함할 수 있음.

• 데이터를 상위 메모리에서 찾을 경우 → Hit
데이터 접근 시간이 짧음.

Hit ratio: hits / accesses

• 데이터를 상위 메모리에서 찾을 수 없을 경우 → Miss
Miss penalty : 메모리에서 원하는 데이터가 캐시에 없을 때, 데이터를 가져오는 데 소요되는 추가적인 시간(사이클)

Miss ratio: misses / accesses = 1 - hit ratio

Memory Technologies

Memory Technology

DRAM Technology

• 데이터 저장 방식
: RAM은 데이터를 capacitor에 전하(charge) 형태로 저장.
capacitor : 매우 작은 전기 저장소 역할, 하나의 비트(0 또는 1)를 나타냄. 각 capacitor는 하나의 트랜지스터를 통해 접근됨.
트랜지스터 : 전하를 읽거나 쓸 때 스위치 역할을 함.

• 새로 고침(Refresh)
: capacitor에 저장된 전하는 시간이 지나면 자연적으로 방전되기 때문에 데이터를 잃을 위험이 있음.
→ 주기적으로 새로 고침(refresh) 작업을 수행해야 함.
DRAM 컨트롤러가 메모리의 내용을 읽고 다시 쓰는 과정을 반복함 (Dynamic).

Advanced DRAM Organization

• DRAM 배열 구조
: DRAM의 데이터는 직사각형 배열 형태로 구성.
특정 데이터를 읽으려면 행과 열의 위치를 선택.

• Burst Mode
: 한 번에 데이터를 연속적으로 읽는 방식으로, 여러 단어(words)를 한꺼번에 처리.
데이터를 읽는 대기 시간을 줄여 효율성을 높임.

• DDR DRAM (Double Data Rate DRAM)
: 상승(rising edge)과 하강(falling edge) 클럭에서 모두 데이터를 전송하여 성능을 극대화.

• QDR DRAM (Quad Data Rate DRAM)
: DDR의 한계를 넘어서 입력(input)과 출력(output)을 분리하여 더욱 빠른 데이터 처리 가능.
→ 한 클럭 사이클 동안 두 개의 입력과 두 개의 출력을 처리할 수 있음.

DRAM Performance Factors

• Row Buffer
: 행 단위의 데이터를 병렬로 읽고 새로 고칠 수 있는 기능.
메모리 접근 대역폭을 늘리고 병렬 처리 효율을 높임.

• Synchronous DRAM (SDRAM)
: CPU의 클럭 신호와 DRAM의 작업이 동기화되어 Burst Mode로 연속 접근 가능.
각 주소를 개별적으로 지정하지 않고 연속 데이터 접근.
(한 번 주소를 지정하면, 그 주소 이후의 데이터를 연속으로 읽어들일 수 있음.)
대역폭 향상과 데이터 전송 효율 증가.

• DRAM Banking
: 여러 DRAM bank에 동시에 접근 가능.
병렬 데이터 처리를 통해 대역폭을 더욱 증가.
CPU와 메모리 간 데이터 전송 속도를 크게 향상.

Increasing Memory Bandwidth

❯ Wide Memory
: 데이터를 더 넓게(한 번에 더 많은 비트를) 전송할 수 있는 메모리 구성.

ex. 4-word wide memory
Miss Penalty : 17 버스 사이클 (1 + 15 + 1)
1 사이클:
캐시에서 데이터가 없음을 확인하는 데 걸리는 시간.
15 사이클:
메모리(예: DRAM)에서 데이터를 가져오는 데 걸리는 시간.
1 사이클:
가져온 데이터를 캐시에 저장하고, CPU가 사용할 수 있도록 준비하는 시간.

Bandwidth : 전송된 데이터 크기 (Bytes) / 총 소요시간
= 16 바이트 / 17 사이클 = 0.94 B/cycle.

❯ Interleaved Memory
: 메모리를 여러 뱅크(bank)로 나누어 동시에 접근할 수 있도록 설계.

ex. 4-bank interleaved memory.
Miss Penalty : 20 버스 사이클 (1 + 15 + 4×1)
Bandwidth : 16 바이트 / 20 사이클 = 0.8 B/cycle.
→ 병렬 접근을 통해 더 높은 대역폭을 제공하지만, 각 뱅크 간 추가적인 시간(오버헤드)이 발생.

Flash Storage

SSD : 비휘발성 반도체(nonvolatile semiconductor)를 이용하여 데이터를 저장. 전원이 꺼져도 데이터가 유지됨.

• 속도 및 특징
: 디스크보다 100배에서 1000배 더 빠른 읽기/쓰기 성능.
크기가 작고 전력 소모가 적으며, 내구성이 높음.
디스크보다는 비싸지만 DRAM보다는 저렴.

Flash Types

❯ Flash 메모리의 한계

• 내구성 문제
: 수천 번의 읽기/쓰기 후에 플래시 메모리 셀이 마모(wear-out)될 수 있음.
NAND 플래시는 NOR보다 더 빨리 마모될 수 있음.

• Wear Leveling 기술
: 특정 블록이 집중적으로 사용되는 것을 방지하기 위해 데이터를 덜 사용된 블록으로 재배치. → 메모리의 수명을 연장하는 핵심 기술.

Disk Storage

: 비휘발성 회전형 자기 저장 장치

• 작동 원리 :
데이터를 자기 디스크(플래터)에 저장.
디스크가 회전하고, 읽기/쓰기 헤드가 데이터를 접근.

• 구조 :
디스크는 트랙(track), 섹터(sector), 실린더(cylinder)로 나뉨.
트랙은 디스크 표면의 원형 궤도이고, 각 트랙은 섹터로 나뉘어 데이터를 저장

• 특징 :
읽기/쓰기 속도가 SSD보다 느리지만, 대용량 데이터 저장에 적합.
GB당 비용이 SSD보다 훨씬 저렴.

Disk Sectors and Access

Disk Access Example

섹터 크기: 512B
디스크 속도: 15,000 RPM (회전 수)
평균 탐색 시간(Seek Time): 4ms
데이터 전송 속도: 100MB/s
컨트롤러 오버헤드: 0.2ms 인 경우,

Average Read Time Calculation:

4ms (Seek)+2ms (Rotational Latency)+0.005ms (Transfer)+0.2ms (Controller)=6.2ms

Disk Performance Issues

• Manufacturers Quote Average Seek Time
: 디스크의 평균 탐색 시간(Seek Time)을 기준으로 성능을 측정
평균 탐색 시간은 디스크의 모든 가능한 탐색 거리(섹터 간 거리)를 기준으로 계산됨.

Locality(지역성): 데이터가 디스크의 근처 위치에 저장될 가능성이 높음.
OS Scheduling: 운영 체제가 디스크 요청을 최적화하여 데이터를 효율적으로 접근.

으로 인해 실제 사용 환경에서는 평균 탐색 시간이 더 작아질 수 있음.

• Smart Disk Controller
: disk의 물리적 섹터를 효율적으로 할당하고 관리
물리적 섹터를 숨기고 논리적 섹터(Logical Sector) 인터페이스를 호스트(컴퓨터)에 제공.
호스트 시스템이 디스크의 물리적 세부 사항을 알 필요 없이 데이터를 처리할 수 있도록 함.

• Disk Drives Include Caches
: 디스크에 캐시(Cache)를 내장하여 성능을 향상시킴.

  1. Prefetch Sectors
    디스크가 미리 섹터 데이터를 읽어서 캐시에 저장(사전 로딩).
    데이터가 실제로 필요해질 때 지연 시간을 줄임.

  2. Seek and Rotational Delay 감소:
    캐시는 디스크 탐색(Seek) 및 회전 지연(Rotational Delay)을 피하거나 최소화할 수 있음.
    자주 사용하는 데이터는 캐시에 저장되어 디스크 접근을 피함.

The Basics of Caches

Cache Memory

: 메모리 계층 구조에서 CPU와 가장 가까운(가장 빠른) 메모리 레벨.
데이터 접근 속도를 높이기 위해 설계되었으며, 가장 최근에 사용된 데이터나 자주 사용되는 데이터를 저장.

  1. 캐시가 요청한 데이터가 메모리에 있는지 확인.
    : 태그(Tag)와 인덱스(Index)를 통해 빠르게 이루어짐.

  2. 요청한 데이터가 없을 경우, 데이터를 Main Memory에서 가져와 캐시에 저장.

XnX_n데이터를 참조한 후 캐시가 업데이트된 상태.

Direct Mapped Cache

Tags and Valid Bits

0개의 댓글