컴퓨터가 과거 상태를 기억하려면 시간의 흐름을 측정하고 상태(state)를 저장할 수 있는 장치가 필요하다. 현실에서 시계를 보듯이, 컴퓨터 내부에도 주기적인 시계 신호(clock)가 존재한다. 발진기(oscillator)라는 전자 회로를 사용하면 일정한 주기의 진동 신호를 만들어 시간을 측정할 수 있다. 예를 들어, 진자가 흔들리는 주기 등을 이용해 주기 함수를 만들고, 이를 전기 신호로 변환하면 컴퓨터의 클록(clock) 신호로 활용할 수 있다. 클록 신호는 마치 밴드의 드러머가 박자를 맞추듯이 컴퓨터 회로 전체의 동작 타이밍을 결정한다. 모든 순차 논리 회로는 이 클록 신호에 맞춰 한 단계씩 상태를 변화시키며 동작한다.
순차 논리 회로의 기본 요소로는 래치(latch)와 플립플롭(flip-flop)이 있다. 래치는 가장 간단한 1비트 기억 소자로서, 입력 신호를 보관하여 유지하는 역할을 한다. 래치는 입력이 활성화되어 있는 동안 출력이 따라가다가, 입력이 비활성화되면 그 마지막 상태를 유지한다. 한편 플립플롭은 래치를 발전시킨 형태로, 클록 신호의 특정 순간(엣지)에만 입력을 받아들이고 그 외 시간에는 상태를 유지하는 1비트 저장 소자이다. 보통 D 플립플롭 등으로 구현되며, 클록의 상승 또는 하강 에지에 동작하여 한 번에 한 비트의 값을 확정짓고 저장한다. 래치와 플립플롭 모두 현재 1비트의 상태를 기억하기 위해 사용되지만, 플립플롭은 클록에 동기화되어 동작하므로 시간 흐름에 맞춘 제어가 가능하여 디지털 시스템에서 널리 사용된다.
이러한 1비트 저장소자들을 활용하면 여러 비트를 차례로 저장하는 더 복잡한 회로도 만들 수 있다. 예를 들어, 여러 개의 플립플롭을 연결하면 비트를 순서대로 증가시키는 카운터(counter)를 구성할 수 있다. 카운터는 클록 펄스가 들어올 때마다 내부 상태가 0, 1, 2, 3... 순으로 변하며, 입력 펄스 개수를 숫자로 세어주는 대표적인 순차 논리 회로이다. 또 다른 중요한 회로인 레지스터(register)는 동일한 클록을 공유하는 여러 개의 플립플롭을 한 패키지로 묶은 것이다. 레지스터는 다수의 비트로 이루어진 데이터를 한꺼번에 저장하는 데 쓰인다. 예컨대 8개의 플립플롭으로 구성된 8비트 레지스터는 한 번에 8비트(1바이트)의 데이터를 저장하거나 출력할 수 있어, CPU가 연산을 수행할 때 일시적으로 데이터를 보관하는 데 사용된다. 이처럼 순차 논리 회로(래치, 플립플롭, 레지스터, 카운터 등)는 현재 상태를 저장하고 시간에 따라 변하는 입력을 다룰 수 있게 함으로써, 컴퓨터가 연속적인 연산과 기억 기능을 수행할 수 있게 해준다.
레지스터를 사용하면 비교적 소량의 데이터를 저장할 수 있지만, 컴퓨터는 그보다 훨씬 방대한 정보를 저장해야 한다. 많은 양의 데이터를 체계적으로 저장하고 관리하려면 메모리(memory)라는 조직화된 저장 장치가 필요하다. 메모리 조직(memory organization)이란 수많은 비트를 효율적으로 저장하고 접근하기 위한 구조를 의미한다.
가장 기본적인 아이디어는 여러 개의 레지스터를 쌓아두고 번호를 붙이는 것이다. 각각의 레지스터에 일련번호를 부여하면, 그 번호를 통해 원하는 레지스터를 지정할 수 있다. 이 번호가 바로 주소(address)이다. 메모리는 마치 집이 늘어서 있는 거리와 같아서, 각 집(메모리 셀 또는 레지스터)은 똑같은 크기의 방(비트들을 저장하는 공간)을 가지고 있고, 거리의 위치에 따라 고유한 주소를 갖는다. 외부에서 메모리에 접근할 때는 해당 집의 주소를 알려주면, 그 집에 들어 있는 정보를 얻거나(new data를 쓰거나) 꺼낼 수 있다.
현대 메모리 칩에는 이러한 주소를 전달하는 주소 버스(address bus)와 데이터를 주고받는 데이터 버스(data bus)가 연결되어 있다. 주소 버스를 통해 어느 메모리 위치를 접근할지 지정하고, 데이터 버스를 통해 그 위치에 읽거나 쓸 데이터를 전달하는 방식이다. 임의 접근 메모리(Random Access Memory, RAM)는 메모리 내의 원하는 임의의 위치를 순서에 상관없이 동일한 속도로 접근(read/write)할 수 있는 기억 장치를 말한다. "임의 접근"이라는 말은 저장된 순서와 무관하게 아무 위치나 직접 접근 가능하다는 뜻으로, 테이프 드라이브처럼 순차적으로 감아서 찾아야 하는 장치와 대비되는 개념이다. 대부분의 컴퓨터 주 메모리는 RAM에 속한다.
RAM에는 구현 방식에 따라 몇 가지 종류가 있다:
위 두 가지 RAM은 모두 전원이 공급되는 동안에만 데이터 유지가 가능하며, 전원을 잃으면 저장된 내용이 사라진다. 한때 과거 컴퓨터에서는 코어 메모리(core memory)라는 비휘발성 RAM도 사용된 적이 있다. 코어 메모리는 작은 토러스 형태의 자성체 코어에 자화 방향으로 0과 1을 저장하는 방식으로, 전원이 없어도 데이터가 지워지지 않는 장점이 있었다. 하지만 코어 메모리는 현대에는 거의 쓰이지 않고, 현재 컴퓨터 메모리는 대부분 반도체 기반의 휘발성 RAM(SRAM, DRAM)으로 구현된다.
RAM과 달리 읽기 전용 메모리(Read-Only Memory, ROM)도 있다. ROM은 말 그대로 읽을 수만 있는 메모리를 의미하지만, 실제로 완전히 변경이 불가능한 것은 아니다. 처음 한 번 데이터를 써서 기록한 후에는 그 내용을 계속 반복하여 읽기만 가능한 메모리를 가리킨다. 일반적으로 제조 과정이나 특별한 프로그래밍 장치를 통해 데이터를 기록하며, 이후 시스템 동작 중에는 내용이 변하지 않는다. ROM은 비휘발성이라 전원을 꺼도 데이터가 유지되고, 한 번 기록된 프로그램이나 데이터를 영구 보관해야 하는 용도로 사용된다. 예를 들어, 컴퓨터의 펌웨어(firmware)나 임베디드 시스템의 프로그램 코드를 저장하는 데 ROM을 활용한다. 필요한 프로그램을 미리 하드웨어에 내장해 두어야 하는 경우에 매우 유용하다.
메모리는 CPU가 직접 빠르게 접근할 수 있는 장치이지만, 용량이 제한적이고 비용이 높다. 디스크 드라이브(disk drive)는 대용량의 데이터를 경제적으로 저장하기 위한 블록 장치(block device)의 대표적인 예이다. 디스크 드라이브는 흔히 하드 디스크라고도 부르며, 대단히 큰 용량의 데이터를 영구적으로 저장할 수 있는 장치이다. 자기 디스크 판(플래터)을 고속으로 회전시키고, 그 위에 작은 자기 헤드(head)를 이동시키면서 데이터를 읽고 쓴다. 디스크 표면의 미세한 영역들을 자화(magnetize)시켜 비트를 기록하기 때문에, 전원이 없어도 저장된 데이터가 유지되는 비휘발성 저장 장치이다.
디스크 드라이브의 큰 장점은 저렴한 비용으로 방대한 데이터를 저장할 수 있다는 점이다. 반면, 단점은 데이터 접근 속도가 상대적으로 느리다는 것이다. 메모리(RAM)가 전기적인 신호로 즉각 접근하는 데 비해, 디스크는 기계적인 움직임을 수반한다. 원하는 데이터가 디스크에 저장된 위치로 접근하려면, 우선 디스크 헤드를 해당 트랙(track)으로 이동시켜 정렬해야 한다(탐색 시간), 그리고 디스크가 회전하여 그 데이터가 헤드 아래로 올 때까지 기다려야 한다(회전 지연 시간). 이 과정은 밀리초(ms) 단위의 시간이 걸리므로, 나노초(ns) 단위로 동작하는 반도체 메모리와 비교하면 훨씬 느리다. 또한 디스크 드라이브는 모터, 베어링 등 기계 부품을 가지고 있어 시간이 지남에 따라 마모되거나 고장 날 가능성도 존재한다.
디스크 드라이브는 데이터를 블록 단위로 읽고 쓰는 특징이 있다. 즉, 바이트 단위로 임의의 위치를 직접 접근하는 RAM과 달리, 디스크는 한 번에 특정 크기의 연속된 바이트 덩어리(블록)를 단위로 데이터 전송을 수행한다. 전통적으로 이 블록을 섹터(sector)라고 불렀으며, 과거에는 일반적으로 섹터 하나의 크기가 512바이트였다. 최근 디스크는 섹터당 4096바이트(4KB)로 더 큰 블록 크기를 사용하기도 한다. 블록 단위 접근의 의미는, 예를 들어 디스크에서 1바이트를 수정하기 위해서는 해당 바이트가 속한 전체 블록(예: 4KB)을 통째로 읽어 와서 그 중 1바이트를 변경한 다음, 수정된 블록 전체를 다시 디스크에 써야 한다는 뜻이다. 이러한 특성 때문에 디스크에서는 임의 접근이 제한적이고, 데이터 전송의 최소 단위가 블록 크기로 정해져 있다.
디스크 드라이브는 많은 부분이 병렬성보다는 밀도에 최적화된 장치라고 볼 수 있다. 디스크 표면에 데이터를 빽빽이 저장할수록 용량은 늘어나지만, 물리적 회전과 이동이라는 접근 시간은 피할 수 없는 병목이 된다. 그럼에도 불구하고 디스크는 가격 대비 용량 면에서 탁월하기 때문에, 방대한 양의 데이터를 장기간 저장하는 용도로 여전히 많이 사용된다. 최근에는 디스크 드라이브가 점차 반도체 기반의 SSD로 대체되고 있지만, 데이터 센터나 개인용 저장장치 등에서 자기 디스크 기술도 병존하고 있다.