메모리라는 주제는 너무 광범위했다.. 이번 스터디에서는 메모리란 무엇인지 정의와 개발자로서 알아야 하는 메모리 계층구조와 그 쓰임에 대해 정리해보고자 한다.
메모리란 무엇일까?
데이터와 프로그램을 일시적으로 저장하고 관리하는 주기억 장치를 의미한다. 메모리는 컴퓨터 시스템의 핵심 구성 요소 중 하나로, 프로그램이 실행되고 작업을 수행하는 동안 필요한 데이터와 명령어를 저장하고 빠르게 접근할 수 있도록 한다. 처음에는 가상 메모리, 물리 메모리 두 종류로 나뉘는 줄 알았는데 생각보다 광범위한 내용을 포함하고 있었다. 메모리는 다음과 같은 계층 구조를 가지고 있다.
혹자는 도서관에 책을 꽂아두는 것처럼 메모리의 용도를 비유한다. 도서관에는 수십만 종류의 책들이 보관되고 있고 각각의 방식으로(오래된 책, 자주 읽는 책 등등..) 배치된다. 이렇듯 컴퓨터의 저장공간도 여러 방식으로 나누어져 있다.
1. CPU의 Register
CPU 레지스터는 현재 실행 중인 명령어, 데이터 등을 저장한다. 엄청나게 빨리 데이터를 가져올 수 있다. 크기가 몇십 바이트로 매우 작고 CPU가 즉시 사용할 데이터와 명령어를 저장하는 용도로 사용한다.
2. RAM (Random Access Memory)
어떤 랜덤한 위치가 주어질 때, 그 위치로 즉시 이동해서 값을 읽을 수 있다는 뜻이다. 덕분에 RAM은 데이터 접근이 빠르다. RAM의 중요한 특징은 '휘발성'이다. 전원이 꺼지면 RAM에 저장된 데이터는 날아간다. RAM에는 크게 두 가지가 있다. SRAM, DRAM
1) SRAM (캐시; Cache)
가장 빠르고 비싼 메모리다. Static RAM은 6개의 트랜지스터로 만든 '플립플롭' 회로에 하나의 비트를 저장한다. 트랜지스터가 6개 사용되기 때문에 밀도를 높이거나, 가격을 낮추기가 어렵다. 비싼 대신 빠르고, 안정적이다. SRAM은 '전기가 들어오는' 동안에는 외부 방해에도 끄떡없고, 기록한 비트값이 안정적으로 유지된다. 'Static' RAM인 이유다.
CPU 내부 또는 CPU와 RAM 사이에 위치했으며 킬로바이트 ~ 메가바이트의 작은 크기를 가진다. 레지스터 다음으로 빠른 속도를 가지며 자주 사용되는 데이터와 명령어를 저장하여 CPU 접근 시간을 줄이는데 사용된다. 캐시 메모리는 비교적 느린 메인 메모리와 프로세서 사이 중간 다리 역할을 한다.
- L1 캐시: 각 코어에 독립적으로 존재, 가장 작고 빠름
- L2 캐시: L1 캐시보다 큼, 각 코어에 존재하거나 공유됨
- L3 캐시: 여러 코어가 공유, 가장 큼, L2 캐시보다 느림
2) DRAM (메인 메모리)
DRAM은 캐시 메모리보다 용량이 더 큰 주 기억 장치 (메인 메모리)에 사용되는 저장 매체다. 하지만 이 캐파시터의 전자가 시간이 지나면 새어나간다. 시간이 지나면 값이 사라진다. 마치 모래 위에 쓴 글씨처럼. 이게 문제다. 안정적인 SRAM과 다르다고 해서, 'Dynamic RAM'이라는 이름이 붙었다.
DRAM은 방전되어 내용이 사라지기 전에 충전을 다시 해줘야 한다. DRAM의 전자가 유지되는 시간은 10-100ms 정도다. 0.01초에서 0.1초만 지나면 내용이 사라진다.
3. ROM (Read-Only Memory)
ROM은 RAM과 달리 전원이 꺼져서 내용이 사라지지 않는 메모리다. RAM만큼 데이터를 빠르게 가져올 수는 없다. ROM은 데이터를 읽기만 가능하고 쓰기는 불가능한 메모리다. 즉, 한 번 기록된 데이터는 변경할 수 없다.
최근에는 "프로그램 가능 ROM(PROM)", "전기적으로 지워지는 ROM(EEPROM)", "플래시 메모리(Flash Memory)" 등이 개발되어 여러 번 기록 및 지우기가 가능한 ROM 형태가 등장했다. 플래시 메모리는 비휘발성인데도 속도가 빠르고, 내구성이 강하고, 전력도 적게 쓴다. 우리가 사용하는 USB 드라이브, 디지털 카메라, 스마트폰, 노트북, 다 이 플래시 메모리를 사용한다.
4. 디스크 드라이브
컴퓨터나 다른 디지털 장치에 데이터를 저장하고 읽고 쓸 수 있는 장치다. 주로 하드 디스크 드라이브(Hard Disk Drive, HDD)와 SSD(Solid State Drive)가 가장 널리 사용되고 있다. 디스크는 앞에 나온 저장 매체보다 훨씬 느리다. DRAM보다 수십만배 느리다고 한다. 대신 디스크는 전원이 꺼져도 데이터가 사라지지 않는다. 또한 많은 용량을 저장할 수 있는데 RAM은 보통 커야 수십 GB인 반면, 디스크는 수천 GB다. 자주 꺼내기는 힘들지만, 많은 양이 들어가기 때문에 디스크는 컴퓨터에서 '보조 기억 장치' 역할을 한다.
1) 하드 디스크 드라이브 (HDD)
HDD는 회전하는 자기 디스크(플래터) 위에 자기 헤드를 사용하여 데이터를 읽고 쓰는 원리로 동작한다. 플래터는 회전하면서 자기 헤드가 데이터를 읽고 쓸 수 있는 위치로 이동한다. 그러나 물리적 속도에 한계가 있다. 데이터가 저장된 위치로 헤드가 이동하는 시간이 필요하다. 접근 속도가 느리다. 반면에 기록 밀도는 매우 높아서 많은 양의 데이터가 들어간다. 용량당 가격도 저렴하다.
2) SSD (Solid State Drive)
SSD는 최근 새롭게 떠오르는 기술이다. 하드 디스크보다 훨씬 더 빠르고, 내구성도 좋다. SSD는 물리적 회전 없이 전자적으로 데이터를 저장하고 읽고 쓰는 장치로, 플래시 메모리를 사용한다. 플래시 메모리는 전기 신호를 통해 데이터를 기록하고 읽는다. 가격 면에서 아직 하드 디스크보다 비싸다는 게 유일한 흠이다. 그러나 SSD가격은 빠르게 싸지고 있고, 이 차이는 거의 줄어들고 있다. 휴대성이 중요한 디바이스에서는 완전히 하드 디스크를 대체했다.
메모리 계층 구조를 알아야 할까?
메모리 계층 구조는 프로그램 성능을 좌지우지한다. 프로그램이 사용하는 데이터가 어떤 층에 저장돼있냐, 여기에 따라서 프로그램 성능은 수십배에서 수천만배까지 차이가 난다. 시간이 흐르면서 CPU의 계산 속도와 메모리 접근 속도는 모두 향상되고 있지만 메모리 접근 속도는 CPU 계산 속도만큼 빠르게 증가하진 않는다. 따라서 메모리에서 데이터를 '가져오는 시간'은 전체 프로그램 실행 시간을 크게 좌우한다. 메모리 계층을 잘 알아야 프로그램의 성능을 이해할 수 있다.
참고
https://velog.io/@eddy_song/memory-hierarchy
https://www.youtube.com/watch?v=CmQ_mvZpshM
'CS 지식 > 운영체제' 카테고리의 다른 글
[운영체제] 캐시 (0) | 2024.11.10 |
---|---|
[운영체제] 운영체제 동기화 방법: 세마포어와 뮤텍스 (0) | 2024.09.21 |
[운영체제] 프로세스와 스레드 (0) | 2024.08.02 |
[운영체제] PCB(Process Control Block)란? (0) | 2024.05.17 |