[CS] Chapter 06. 메모리와 캐시 메모리
혼자 공부하는 컴퓨터 구조 + 운영체제 (한빛미디어 출판, 강민철 지음) 으로 공부한 내용을 정리합니다.
CS Study를 통해 함께 공부하고 있습니다. [github repository]
✅ 06 - 1. RAM의 특징과 종류
RAM의 하드웨어적 특성과 종류에 대해 학습한다.
핵심 키워드 :휘발성 저장 장치
비휘발성 저장 장치
DRAM
SRAM
SDRAM
DDR SDRAM
✔️ RAM의 특징
- RAM에는 실행할 프로그램의
명령어
와데이터
가 저장된다. 휘발성 저장 장치(volatile memory)
: 전원을 끄면 저장된 내용이 사라지는 저장 장치- ex) RAM
비휘발성 저장 장치(non-volatile memory)
: 전원이 꺼져도 저장된 내용이 유지되는 저장 장치.- ex) 하드 디스크, SSD, CD-ROM, USB 메모리와 같은 보조기억장치가 대표적인 비휘발성 저장 장치
보조기억장치는 전원을 꺼도 내용을 유지하지만, CPU는 보조기억장치에 직접 접근하지 못한다. 그래서 일반적으로 보조기억장치인 비휘발성 저장 장치에는 보관할 대상
을 저장하고, 휘발성 저장 장치인 RAM에는 실행할 대상
을 저장한다.
✔️ RAM의 용량과 성능
- RAM 용량이 크면 많은 프로그램들을 동시에 빠르게 실행하는 데 유리함
- 하지만, RAM 용량이 무지막지하게 크다고해서 실행 속도가 그에 비례하는 것은 아님
✔️ RAM의 종류
RAM의 종류에는 크게 DRAM, SRAM, SDRAM, DDR SDRAM
이 있다.
🔎 DRAM
DRAM
은 Dynamic RAM의 준말이다.- 저장된 데이터가 동적으로 변하는(사라지는) RAM을 의미한다.
- DRAM은 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야 한다.
- 소비 전력이 비교적 낮고, 저렴하고, 집적도가 높기 때문에 대용량으로 설계하기 용이하기 때문에, 일반적으로 메모리로써 사용하는 RAM은 DRAM이다.
‘집적도가 높다’는 의미는 ‘더 작고 빽빽하게 만들 수 있다’는 말과 같다.
🔎 SRAM
SRAM
은 Static RAM의 준말이다.- 저장된 데이터가 변하지 않는 RAM을 의미한다.
- SRAM은 DRAM보다 일반적으로 속도가 빠르다.
시간이 지나도 저장된 데이터가 사라지지 않는다고 해서 SRAM이 비휘발성 메모리인 것은 아니다. SRAM도 전원이 공급되지 않으면 저장된 내용이 날아간다.
- SRAM은 DRAM보다 집적도가 낮고, 소비 전력도 크며, 가격도 더 비싸기 때문에 메모리로 잘 사용하지 않는다.
- SRAM은 메모리가 아닌
대용량으로 만들어질 필요는 없지만 속도가 빨라야 하는 저장 장치
, 가령캐시 메모리
에서 사용된다.
DRAM | SRAM | |
---|---|---|
재충전 | 필요함 | 필요 없음 |
속도 | 느림 | 빠름 |
가격 | 저렴함 | 비쌈 |
집적도 | 높음 | 낮음 |
소비 전력 | 적음 | 높음 |
사용 용도 | 주기억장치(RAM) | 캐시 메모리 |
🔎 SDRAM
SDRAM(Synchronous Dynamic RAM)
은 클럭 신호와 동기화된, 발전된 형태의 DRAM이다.클럭 신호와 동기화되었다
는 말은 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있음을 의미한다.
🔎 DDR SDRAM
DDR SDRAM(Double Data Rate SDRAM)
은 최근 가장 흔히 사용되는 RAM이다.- 대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다.
대역폭(data rate)
이란데이터를 주고받는 길의 너비
를 의미한다.- 한 클럭당 하나씩 데이터를 주고받을 수 있는 SDRAM을
SDR SDRAM(Single Data Rate SDRAM)
이라고 부르기도 한다.
SDRAM | 설명 | SDRAM와 비교 |
---|---|---|
DDR SDRAM | 대역폭이 두 배 넓은 SDRAM | 2배 |
DDR2 SDRAM | DDR SDRAM보다 대역폭이 두 배 넓은 SDRAM | 4배 |
DDR3 SDRAM | DDR2 SDRAM보다 대역폭이 두 배 넓은 SDRAM | 8배 |
DDR4 SDRAM | DDR3 SDRAM보다 대역폭이 두 배 넓은 SDRAM | 16배 |
✅ 06 - 2. 메모리의 주소 공간
주소에는 물리 주소와 논리 주소가 있다. 이 두 주소의 개념과 차이, 그리고 변환 방법을 알아보자.
핵심 키워드 :물리 주소
논리 주소
MMU
베이스 레지스터
한계 레지스터
✔️ 물리 주소와 논리 주소
물리 주소(physical address)
- 메모리 하드웨어가 사용하는 주소
논리 주소(logical address)
- CPU와 실행 중인 프로그램이 사용하는 주소
논리 주소와 물리 주소간의 변환은 CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MMU: Memory Management Unit)
라는 하드웨어에 의해 수행된다.
MMU는 CPU가 발생시킨 논리 주소
에 베이스 레지스터
값을 더하여 논리 주소를 물리 주소로 변환한다.
베이스 레지스터
는 프로그램의 가장 작은 물리주소, 즉 프로그램의 첫 물리 주소를 저장하는 셈이고, 논리 주소
는 프로그램의 시작점으로부터 떨어진 거리인 셈이다.
✔️ 메모리 보호 기법
다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법이 필요하다. 이는 한계 레지스터(limit register)
라는 레지스터가 담당한다.
한계 레지스터
- 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
- 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장
- 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값
✅ 06 - 3. 캐시 메모리
저장 장치 계층 구조를 통해 저장 장치의 큰 그림을 그리고, CPU와 메모리 사이에 위치한 캐시 메모리를 학습한다.
핵심 키워드 :저장 장치 계층 구조
캐시 메모리
캐시 적중률
참조 지역성의 원리
CPU가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느리다. CPU가 연산을 아무리 빨리 한다 해도 메모리에 접근하는 시간이 느리면 CPU의 빠른 연산 속도는 아무런 쓸모가 없을 것이다. 이를 극복하기 위한 장치가 캐시 메모리
이다.
✔️ 저장 장치 계층 구조(memory hierarchy)
‘빠른 저장 장치’와 ‘용량이 큰 저장 장치’는 양립하기 어렵다. 저장 장치는 일반적으로 아래와 같은 명제를 따르기 떄문이다.
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
ex) CPU 내의 레지스터, 메모리(RAM), USB 메모리
저장 장치 계층 구조(memory hierarchy)
- 컴퓨터가 사용하는 저장장치들은 ‘CPU에 얼마나 가까운가’를 기준으로 계층적으로 나타낸 것
✔️ 캐시 메모리(cache memory)
캐시 메모리(cache memory)
는 CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치이다.- 캐시 메모리는 CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생했다.
- 캐시 메모리는 CPU(코어)와 가까운 순서대로 계층을 구성한다.
- 코어와 가장 가까운 캐시 메모리를
L1(level 1) 캐시
- 그 다음 가까운 캐시 메모리를
L2(level 2) 캐시
- 그 다음 가까운 캐시 메모리를
L3(level 3) 캐시
라고 부른다.
- 코어와 가장 가까운 캐시 메모리를
일반적으로 L1 캐시와 L2 캐시는 코어 내부에, L3 캐시는 코어 외부에 위치해 있다.
🔎 분리형 캐시(split cache)
L1 캐시는 조금이라도 접근 속도를 빠르게 만들기 위해 명령어만을 사용하는 L1 캐시인 L1I 캐시
와 데이터만을 저장하는 L1 캐시인 L1D 캐시
로 분리하는 경우도 있다. 이를 분리형 캐시
라고 한다.
✔️ 참조 지역성 원리(locality of reference, principle of locality)
메모리가 보조기억장치의 일부를 복사하여 저장하는 것 처럼 캐시 메모리는 메모리의 일부를 복사하여 저장한다.
- 🔎 캐시 히트(cache hit)
- 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
- 🔎 캐시 미스(cache miss)
- 자주 사용될 것으로 예측하여 캐시 메모리에 저장했지만, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
- 🔎 캐시 적중률(cache hit ratio)
- 캐시가 히트되는 비율 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
우리가 사용하는 컴퓨터의 캐시 적중률은 대략 85%~95% 이상이다.
캐시 메모리는 참조 지역성의 원리(locality of reference, principle of locality)
한 가지 원칙에 따라 메모리로부터 가져올 데이터를 결정한다.
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
1️⃣ ‘최근에 접근했던 메모리 공간에 다시 접근하려는 경향’
변수에 저장된 값은 일반적으로 한 번만 사용되지 않고 프로그램이 실행되는 동안 여러 번 사용된다. ‘최근에 접근했던 메모리 공간에 다시 접근하려는 경향’을 시간 지역성(temporal locality)
이라고 한다.
2️⃣ ‘접근한 메모리 공간 근처를 접근하려는 경향’
- CPU가 실행하려는 프로그램은 보통 관련 데이터들끼리 한데 모여 있다.
- 그리고 하나의 프로그램 내에서도 관련 있는 데이터들은 모여서 저장된다.
- ‘접근한 메모리 공간 근처를 접근하려는 경향’을
공간 지역성(spatial locality)
이라고 한다.