컴퓨터 구조#5 메모리와 캐시 메모리

성찬홍·2025년 11월 23일

Computer Science

목록 보기
8/17

RAM

RAM의 특징

: RAM은 휘발성 저장 장치이고 ,보조 기억장치는 비휘발성 저장 장차입니다.

DRAM (Dynamic Ram)

  • 저장된 데이터가 동적으로 사라지는 RAM
  • 데이터 소멸을 막기 위해 주기적으로 재활성화 해야한다
  • 일반적으로 메모리로 사용되는 RAM (주기억장치로 주로 사용)
    • 상대적으로 소비전력이 낮고 저렴하고 집적도가 높아 대용량으로 설계하기 용이하다

SRAM (Static RAM)

  • Staic = ‘정적의’
  • 저장된 데이터가 정적인(사라지지 않는) RAM
  • DRAM보다 일반적으로 더 빠르다
  • 일반적으로 캐시 메모리에서 사용되는 RAM
    • 상대적으로 소비전력이 높고 가격이 높고 집적도가 낮아 “대용량으로 설계할 필요는 없으나 빨라야 하는 장치”에 사용한다

SDRAM

  • 특별한 (발전된 형태의) DRAM
  • 클럭 신호와 동기화된 DRAM

DDR SDRAM (Double Data Rate SDRAM)

  • 특별한 (발전된 형태의) SDRAM
  • 최근 가장 대중적으로 사용하는 RAM
  • 대역폭을 넓혀 속도를 빠르게 만든 SDRAM
  • 대역폭은 데이터를 주고받을 수 있는 길의 너비

물리 주소와 논리 주소

물리주소와 논리 주소로 나눠주는 이유

  • 메모리에 저장된 값들은 시시각각 변하기 때문
    • 새롭게 실행되는 포로그램은 새롭게 메모리에 적재
    • 실행이 끝난 프로그램은 메모리에서 삭제
    • 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라짐

물리 주소

  • 메모리 입장에서 바라본 주소
  • 말 그대로 정보가 실제로 저장된 하드웨어상의 주소
    • 진짜 DRAM 칩의 어느 위치에 값이 저장되는지 나타내는 주소

논리 주소

  • CPU와 실행중인 프로그램 입장에서 바라본 주소
    • CPU가 명령을 실행할 때 사용하는 주소
  • 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소
    • 프로세스 시작 주소는 항상 0
    • 코드, 데이터, 스택 등이 이 논리주소로 표시됨

물리 주소와 논리 주소의 변환

: MMU(메모리 관리 장치)라는 하드웨어에 의해 변환된다
→ CPU는 항상 논리 주소를 사용한다

CPU가 논리주소 생성
      ↓
MMU가 논리주소 → 물리주소로 변환
      ↓
RAM에 실제 접근

명령어 주소 변환

Base Register (기저 레지스터)

  • 프로그램의 가장 작은 물리 주소를 저장
    • 현재 프로세스의 물리적 시작 주소(Base Address) 저장
  • OS가 문맥전환 시 프로세스마다 다른 Base를 설정
  • 논리주소 0이 실제 물리주소 Base를 의미하도록 만드는 장치

논리 주소 (= 오프셋 offset )

  • 프로그램의 시작점으로부터 떨어진 거리인 셈
  • 명령어 내부에 기록된 값

한계 레지스터

  • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
  • 베이스 레지스터가 실행중인 프로그램의 가장 작은 물리 주소를 저장한다면,
    한계 레지스터는 논리 주소의 최대 크기를 저장
  • 베이스 레지스터 값 < = 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값

메모리 보호

CPU는 메모리에 접근하기 전 , 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사한다

실행 중인 프로그램의 독립적인 실행 공간을 확보 & 하나의 프로그램이 다른 프로그램을 침범하지 못하게 보호한다

캐시 메모리

저장 장치 계층 구조

→ 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조

(1) CPU와 가까운 저장 장치는 빠르고 , 멀리 있는 저장 장치는 느리다.
(2) 속도가 빠른 저장 장치는 저장 용량이 작고 ,가격이 비싸다.

캐시 메모리

  • CPU와 메모리 사이에 위치한, 레지스터보다 용량이 크고 ,메모리보다 빠른 SRAM 기반의 저장 장치이다.
    • 캐시 메모리 = CPU 바로 옆에 있는 작고 빠른 임시 저장소
  • CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
    • CPU가 “지금 당장 쓸 가능성이 높은 데이터”를 보관해 둠
    • 메모리 접근 속도를 수백~수천 배 빠르게 만듦
  • “CPU가 매번 메모리에 왔다 갔다 하는 건 시간이 오래 걸리니 , 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 쓰자”

캐시 계층 구조(Levels)


CPU에는 보통 아래 구조가 존재

캐시속도크기위치
L1 Cache가장 빠름가장 작음 (수십 KB)CPU 코어 내부
L2 Cache빠름중간 (수백 KB~MB)코어 내부 또는 옆
L3 Cache느림큼 (수 MB~수십 MB)CPU 전체 공유
메모리(RAM)훨씬 느림큼 (GB 단위)CPU 외부

참조 지역성의 원리

: CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리

(1) CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다

(2) CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.

  • 예측이 맞을 경우 → 캐시 히트
  • 예측이 틀렸을 경우 → 캐시 미스

캐시의 핵심 개념 3가지

  • 시간 지역성 (Temporal Locality)
    • 최근 사용한 데이터는 조만간 또 사용될 가능성이 높다
  • 공간 지역성 (Spatial Locality)
    • 어떤 주소를 썼다면 그 근처 주소도 쓸 가능성이 높다
    • 배열 순차 접근
  • 캐시 라인(Cache Line)
    • 캐시는 데이터를 “조각 단위”로 불러오는데 보통 한 라인 = 32~128byte
    • 주소 기반으로 주변 데이터까지 묶어서 가져온다 → 공간 지역성 활용

핵심 정리

  1. RAM은 휘발성 메모리로 DRAM(주기억장치)과 SRAM(캐시 메모리)로 나뉜다. DRAM은 값이 자연 소멸되어 주기적 새로고침이 필요하며 저렴하고 대용량 구조에 적합하다. 반면 SRAM은 속도가 매우 빠르지만 비싸고 전력 소모가 크기 때문에 CPU의 캐시(L1/L2/L3)에 사용된다. 프로그램은 실제 메모리의 물리주소를 직접 다루지 않고, CPU는 항상 논리주소를 사용하며 MMU가 이를 물리주소로 변환한다. Base Register는 프로그램의 물리적 시작 주소, Limit Register는 접근 가능한 주소 범위를 정해 메모리 보호 역할을 한다.

  2. 캐시 메모리는 CPU와 RAM 사이 속도 차이를 줄이기 위해 최근 또는 근처에서 사용될 가능성이 높은 데이터를 미리 저장하는 고속 저장소이다(SRAM 기반). 캐시는 시간 지역성(최근 데이터 반복 사용), 공간 지역성(근처 데이터 사용) 원리를 이용해 캐시 라인 단위로 데이터를 불러오며, 이를 통해 CPU가 매번 느린 메모리에 접근하지 않도록 해 성능을 크게 향상시킨다.


참고

https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

profile
꾸준한 개발자

0개의 댓글