기억장치(Memory) 란 말 그대로 정보를 저장하는 장치를 지칭한다.
메모리를 판단하는 요소는 딱 2가지로 저장할 수 있는 최대 용량 그리고 데이터를 입출력하는 속도이며
기본적으로 입출력이 빠른 메모리는 용량이 작고 용량이 큰 메모리는 입출력이 느리다.
컴퓨터에서는 이러한 메모리들이 기능에 따라 나뉘어 사용되고 있으며 크게 다음과 같은 계층 구조로 나뉜다.

위 계층의 메모리는 물리적으로 CPU 에 보다 가깝게 위치해있으며 속도가 빠르고 용량이 작으며 아래 계층의 메모리는 물리적으로 CPU 에서 더욱 멀고 속도가 느리지만 더 큰 용량을 가지고 있다. 이러한 이유는 우리가 도서관에서 책을 찾는 경우를 생각해 보면되는데, 만약 내가 'apple' 이란 단어의 한국어 뜻을 찾아 동생에서 알려준다고 가정해보자. 그러면 일단 나는 도서관에서 영한 사전 책을 찾아야 하고 책을 꺼내어 책에 'apple' 이 적힌 페이지를 찾아야 하며 해당 페이지 어느 줄에 'apple' 이 있는지 찾아야 한다.
이때 나 자신을 CPU 에 비유해보자면 동생이라는 프로그램이 나에게 'apple' 이라는 단어의 한국어 뜻을 찾아달라는 프로세스를 실행한 것이고 나는 그것을 도서관 이라는 보조기억장치에서 찾는 것이고 내 손으로 책을 꺼내었을 때 손이라는 주기억장치에 내가 사용할 정보가 담겨져 온 것이고 'apple' 이 적힌 페이지의 정보를 내가 읽는 순간 나의 뇌이자 레지스터에 해당 정보가 들어와 처리된 것이라고 비유해볼 수 있다.
1. 레지스터
CPU 내부에서 CPU 연산 간 사용되는 정보를 일시적으로 담아두는 기억장치이며 담아두는 정보에 따라 다양한 종류로 나뉜다. 더 자세한 설명은 CPU 포스팅을 참고하자.
2. 캐시(Cache) 메모리
CPU 와 주기억장치 사이의 속도 차이를 완화해 주기위해 중간에 위치한 고속 메모리.
예를 들어 우리가 어떤 게임을 실행했다고 가정하면 게임은 실행되면서 CPU 에게 지속적으로 게임을 실행하는데 필요한 데이터들을 요청할 것이다. 그렇다면 해당 게임에 관련된 데이터들은 다시 사용될 가능성이 높을 수 밖에 없고 이를 데이터의 지역성이라고 한다. 데이터의 지역성은 한 번 사용된 데이터가 가까운 미래에 다시 사용될 수 있는 가능성이 높은 '시간 지역성', 사용한 데이터의 근처 데이터들이 사용될 가능성이 높은 '공간 지역성', 메모리에 저장된 데이터의 순서 기반으로 가능성을 보는 '순차 지역성' 으로 나뉜다. 즉 캐시 메모리는 CPU 가 하위 계층 메모리까지 가지 않고 더욱 빠르게 데이터를 사용할 수 있게 해주는 역할을 수행한다. 추가로 캐시의 데이터 갱신 방식들은 가장 오래된 데이터를 먼저 교체하는 FIFO, 가장 적게 사용된 데이터를 먼저 교체하는 LFU, 가장 오래 사용되지 않은 데이터 먼저 교체하는 LRU 로 나뉘며 캐시에 CPU 가 원하는 타겟 데이터가 없어서 다시 하위 계층 기억장치에서 가져와야 하는 것을 캐시 부적중이라고 한다.
3. 주기억장치(Main Memory)
CPU 에서 수행되는 프로그램의 정보와 데이터를 저장하는 메모리.
CPU 에서 수행되는 프로세스가 직접 접근 가능한 유일한 대용량 메모리로 데이터가 필요할 경우 보조기억장치에서 데이터를 읽어오거나 CPU 가 수행한 내용을 보조기억장치에 기록한다.
4. 보조기억장치
전원이 없어도 영구적으로 데이터를 보관하는 대용량 메모리.
마지막으로 CPU 접근에 따른 메모리의 분류 말고도 실제 위 역할을 수행하기 위해 설계된 메모리들을 살펴보자.
1. RAM (Random Access Memory)
휘발성(전원이 없을 경우 내용이 지워짐) 메모리로 메모리 내 어느 위치에든 똑같은 속도로 접근이 가능하다.
대표적으로는 DRAM(Dynamic RAM) 과 SRAM(Static RAM) 으로 나뉘는데 SRAM 은 정적 메모리로 전원이 있는 상태에서 한 번 입력된 내용이 고정되어 변경 되지 않고 DRAM 의 경우 한 번 입력한 정보에 대해 똑같은 신호를 주지 않으면 정보가 변한다. 하지만 DRAM 은 SRAM 보다 더 많은 정보를 저장할 수 있고 SRAM 은 DRAM 보다 빠르다. SRAM 은 주로 캐시메모리, DRAM 은 주기억장치에 사용된다.
2. ROM (Read Only Memory)
비휘발성(전원과 상관없이 내용이 유지됨) 메모리로 입력된 정보를 수정, 삭제할 수 없다.
대표적으로는 수정될 일이 없는 프로그램인 HW 의 펌웨어를 담는 용도로 사용된다.
3. Flash Memory
비휘발성 메모리로 자유롭게 재기록이 가능한 메모리이다.
우리가 흔히 아는 SSD 와 USB 메모리 같은 보조기억장치로 사용되며 종종 특정 HW 의 펌웨어의 메모리로 사용되기도 한다.
4. Hard Disk Drive
보조기억장치인 하드 디스크로 위에 전기적 저장 방식이 아닌 디스크에 기계적으로 저장한다.
용량이 크고 느리지만 다소 안정적으로 데이터를 보관할 수 있다.