스터디/컴퓨터구조

[혼자 공부하는 컴퓨터구조와 운영체제] 6_메모리와 캐시 메모리

왹져박사 2025. 4. 18. 16:47

💡

  • RAM의 특징과 종류
  • 논리 주소와 물리 주소의 차이
  • 논리 주소를 물리 주소로 변환하는 방법 이해
  • 캐시 메모리와 저장 장치 계층 구조 개념 이해

1) RAM의 특징과 종류

RAM의 특징

RAM에는 실행할 프로그램의 명령어와 데이터가 저장됨

전원을 끄면 저장된 명령어와 데이터가 모두 날아감: 휘발성 저장 장치 → ‘실행할 대상’ 저장

전원이 꺼져도 저장된 내용이 유지되는 저장 장치: 비휘발성 저장 장치 → ‘보관할 대상’ 저장

CPU가 실행하고 싶은 프로그램을 RAM으로 복사하여 저장 후 실행

 

RAM의 용량과 성능

RAM용량이 클수록 보조기억장치에서 미리 저장하는 데이터가 많아짐 → 실행 시간이 짧아짐 / 많은 프로그램 동시에 실행 유리

하지만, 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가 X.

 

RAM의 종류

DRAM, SRAM, SDRAM, DDRSDRAM

 

DRAM (Dynamic RAM)

저장된 데이터가 동적으로 변하는(사라지는) RAM

→ 데이터의 소멸을 막기 위해 일정 주기로 데이터 재활성화 필요

일반적으로 메모리로써 사용 → 소비 전력이 비교적 낮음, 저렴, 집적도(작고 밀도 높게) 높아 대용량 설계 용이

 

SRAM (Static RAM)

저장된 데이터가 변하지 않는 RAM

DRAM보다 일반적으로 속도가 빠름

하지만 메모리로써 일반적으로 사용 X → DRAM보다 집적도 낮음, 소비 전력 큼, 가격도 비쌈

→ 메모리가 아닌 ‘대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치’ like 캐시 메모리에서 사용

 

SDRAM (Synchronous Dynamic RAM)

클럭 신호와 동기화된 발전된 형태의 DRAM = 클럭에 맞춰 클럭마다 CPU와 정보를 주고받기 가능한 DRAM

 

DDR SDRAM (Double Data Rate SDRAM)

최근 가장 흔히 사용되는 RAM

대역폭(데이터를 주고받는 길의 너비)을 넓혀 속도를 빠르게 만든 SDRAM

SDRAM과 비교하여 2배의 대역폭, 전송속도.

한 클럭당 하나씩 데이터를 주고받을 수 있는 SDRAM: SDR SDRAM

 

 

 

2) 메모리의 주소 공간

물리 주소와 논리 주소

정보가 실제로 저장된 하드웨어상의 주소: 물리 주소

CPU와 실행 중인 프로그래밍 사용하는 주소: 논리 주소

CPU가 메모리와 상호작용하려면 논리 주소와 물리 주소 간의 변환 필요

→ CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MMU) 하드웨어에 의해 수행

MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환.

→ 프로그램의 첫 물리 주소를 저장: 베이스 레지스터

→ 프로그램의 시작점으로부터 떨어진 거리: 논리 주소

 

메모리 보호 기법

논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법

한계 레지스터가 담당

한계 레지스터: 논리 주소의 최대 크기 저장

베이스 레지스터 값 < 프로그램의 물리 주소 범위 <베이스 레지스터 값+한계 레지스터 값

 

 

3) 캐시 메모리

저장 장치 계층 구조

일반적인 저장 장치의 명제

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

→ ‘CPU에 얼마나 가까운가’를 기준으로 계층적으로 나타낸 것: 저장 장치 계층 구조

 

캐시 메모리

CPU와 메모리 사이에 위치, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM기반 저장 장치

CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위해 탄생.

일부 데이터를 미리 캐시 메모리로 가져와 활용.

 

코어와 가까운 순서대로 계층을 구성

L1 (level1)캐시, L2 캐시, L3캐시

 

멀티 코어 프로세서에서는 L1-L2 캐시는 각 코어마다 고유한 캐시 메모리로 할당,

L3 캐시는 여러 코어가 공유하는 형태로 사용

L1 캐시는 조금이라도 접근 속도를 빠르게 하기 위해 분리하는 경우: 분리형 캐시

→ 명령어만을 저장하는 L1I 캐시

→ 데이터만을 저장하는 L1D 캐시

 

 

참조 지역성 원리

캐시메모리는 CPU가 사용할 법한 대상을 예측하여 저장

→ 예측이 실제로 맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우: 캐시 히트

→ 예측이 틀려 메모리에서 데이터를 가져와야 하는 경우: 캐시 미스

캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

 

캐시 메모리가 메모리로부터 가져올 데이터를 결정하는 한 가지 원칙

→ 참조 지역성의 원리

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

  1. CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있음: 시간 지역성
  2. CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있음: 공간 지역성

C++에서 Delegate가 캐시 적중률이 낮은 이유?

Delegate로 이벤트 콜백 시, 그 콜백 함수들이 코드 영역에 따로 흩어져 존재하기 때문에 연속적인 메모리 접근이 어려워 공간 지역성 측면에서 낮음