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

저장된 데이터가 동적으로 사라지는 RAM
데이터 소멸을 막기 위해 주기적으로 재활성화해야 한다.
일반적으로 메모리로 사용되는 RAM(주기억장치로 주로 사용)
Static = ‘정적인’
저장된 데이터가 정적인, 즉 사라지지 않는 RAM
DRAM보다 일반적으로 더 빠르다.
일반적으로 캐시 메모리에 사용되는 RAM


메모리에 저장된 값들은 시시각각 변하기 때문
새롭게 실행되는 프로그램은 새롭게 메모리에 적재
실행이 끝난 프로그램은 메모리에서 삭제
같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라짐
메모리 입장에서 바라본 주소
말 그대로 정보가 실제로 저장된 하드웨어상의 주소
CPU와 실행 중인 프로그램 입장에서 바라본 주소
실행 중인 프로그램 각각에 부여된 0번지부터 시작하는 주소
: MMU(메모리 관리 장치)라는 하드웨어에 의해 변환된다.
→ CPU는 항상 논리 주소를 사용한다.

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

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

CPU는 메모리에 접근하기 전, 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지 항상 검사한다.
실행 중인 프로그램의 독립적인 실행 공간을 확보하고, 하나의 프로그램이 다른 프로그램의 영역을 침범하지 못하도록 보호한다.

캐시 메모리
→ 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조
(1) CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
(2) 속도가 빠른 저장 장치는 저장 용량이 작고 가격이 비싸다.

CPU와 메모리 사이에 위치한, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치이다.
CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
“CPU가 매번 메모리에 왔다 갔다 하는 것은 시간이 오래 걸리므로, 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가져와서 사용하자.”

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
주소를 기준으로 주변 데이터까지 묶어서 가져온다. → 공간 지역성 활용
핵심 정리
RAM은 휘발성 메모리로 DRAM(주기억장치)과 SRAM(캐시 메모리)으로 나뉜다. DRAM은 값이 자연적으로 소멸되어 주기적인 새로고침이 필요하며 저렴하고 대용량 구조에 적합하다. 반면 SRAM은 속도가 매우 빠르지만 비싸고 전력 소모가 크기 때문에 CPU의 캐시(L1/L2/L3)에 사용된다. 프로그램은 실제 메모리의 물리 주소를 직접 다루지 않고, CPU는 항상 논리 주소를 사용하며 MMU가 이를 물리 주소로 변환한다. Base Register는 프로그램의 물리적 시작 주소를 저장하고, Limit Register는 접근 가능한 주소 범위를 정해 메모리를 보호하는 역할을 한다.
캐시 메모리는 CPU와 RAM 사이의 속도 차이를 줄이기 위해 최근 또는 근처에서 사용될 가능성이 높은 데이터를 미리 저장하는 고속 저장소이다(SRAM 기반). 캐시는 시간 지역성(최근 데이터 반복 사용), 공간 지역성(근처 데이터 사용) 원리를 이용해 캐시 라인 단위로 데이터를 불러오며, 이를 통해 CPU가 매번 느린 메모리에 접근하지 않도록 하여 성능을 크게 향상시킨다.
참고