본문 바로가기
CS

[컴퓨터 구조] 메모리 계층 구조

by doodoom 2022. 9. 28.

메모리 계층 구조란?

메모리 계층 구조란 메모리를 필요에 따라 여러가지 종류로 나누어 둠을 의미한다. 이때 필요한 대부분의 경우 CPU가 메모리에 더 빨리 접근하기 위함이다.
-위키 백과-

메모리 계층 구조는 어떻게하면 컴퓨터를 최대한 빠르고 저렴하게 만들까에 대한 고민으로 고안된 구조이다. 보통 싼 메모리일 수록 용량이 크지만 느리고, 비싼 메모리는 용량이 작지만 빠르다.
그래서 성능이 좋고 비싼 메모리는 CPU 바로 옆에 작게 만들고, 느리고 용량이 큰 메모리는 먼 곳에 둔다. 이러한 원칙으로 만든 구조가 메모리 계층 구조이다.

메모리 계층 구조

메모리 계층 구조는 Register, Cache, Memory, Disk로 나눌 수 있다.


사진에서 볼 수 있듯 위로 갈수록 빠르고 용량이 작고, 아래로 갈수록 느리고 느리고 용량이 크다(속도는 CPU와의 거리와 비례).용량 면에서 봤을 때 메모리 계층 구조는 피라미드 구조와 비슷하다.

여기서 한가지 의문이 든다. "성능을 위해서라면 메모리 용량을 줄이고 캐시를 늘리면 되는 거 아니야?" 라고 말이다. 완전히 틀린 말은 아니지만 이런 구조가 되는 이유가 있다.

여기서 컴퓨터 과학에서 증명된 법칙이 있다. "큰 메모리를 사용한다고 해서 그 안의 모든 데이터를 고르게 접근하지 않는다. 자주 쓰이는 데이터는 계속 자주 쓰고, 자주 쓰이지 않는 데이터는 계속 자주 쓰이지 않는다." 라는 법칙이다.

이를 이용해서 운영체제나 CPU는 자동으로 자주 쓰이는 데이터, 또는 자주 쓰일 것 같은 데이터를 메모리에서 캐시로 읽어온다. 자주 쓰이는 데이터는 전체 데이터 양에 비해 작은 양이기 때문에 캐시는 메모리보다 작아도 된다. 메모리와 하드 디스크의 관계도 마찬가지이다.

각 메모리 특징

1. Register (32bit, 64bit)

컴퓨터에서 제일 빠른 메모리. CPU 안에 존재하고 명령어와 데이터를 일시적으로 저장하는 역할을 한다. 한 CPU에 100개 들어있으면 매우 많은 편이라고 한다. 그러나 무작정 많다고 좋은 건 아니라고 함.
보통 요즘 컴퓨터에서는 메인 메모리나 캐시에서 레지스터로 데이터를 옮겨와 데이터를 처리한 후, 결과를 다시 레지스터에서 메인 메모리로 저장하는 로드-스토어 설계를 이용한다.

2. Cache

레지스터 다음으로 빠른 메모리. 대개 CPU 안에 존재하고 하위 캐시인 경우는 메인보드에 있는 경우도 있음.
CPU와의 거리에 따라 L1, L2, L3 등 여러 단계로 나뉨. 숫자가 작을 수록 CPU에 가까운 상위 레벨 캐시로 용량이 작고 빠름. 보통 SRAM이라는 메모리로 구성 됨.
보통 프로그래머가 직접 제어할 수 없으며 CPU에 의해 자동으로 통제됨. 물론 캐시의 특성을 이해하고 프로그래밍을 하면 훨씬 효율 좋은 코드를 생성할 수 있음.

3. 메인 메모리(RAM)

CPU나 메인보드와 분리 되어있는 메모리 중에서는 최상위 메모리. 프로그램을 직접 구동하는데 사용되는 '주 기억 장치'의 최하위 메모리이기도 하다.
주로 DRAM으로 구성. 가끔 좋은 컴은 SRAM으로 구성된다고 함.
32bit 컴퓨터의 최대 메모리 용량은 4GB이고, 64bit 컴퓨터의 이론상 최대 메모리 용량은 16EB까지 가능하다고 한다. 근데 128GB 램 가격이 8-90만원대라고 함..

4. SSD(Solid State Drive)

HDD를 대체하려고 개발된 보조저장장치. 데이터 입/출력 속도가 HDD에 비해 매우 빠르고 작고 가벼워서 컴퓨터 체감 속도를 비약적으로 상승시킴.

5. HDD(Hard Disk Drive)

비휘발성 데이터 저장소를 의미. CPU, 그래픽카드, RAM은 전기적으로 동작하는 반면 하드디스크는 물리적으로 동작하여 병목현상으로 인한 속도 저하가 심함.
하지만 1TB HDD가 5만원이 안된다는 엄청난 가성비를 가지고 있음.