이 글은 직접 학습하거나 구현하며 남긴 개인 기술 기록입니다. 참고 자료가 있는 경우 본문에 출처를 남기고, 틀린 부분을 발견하면 수정합니다.
레지스터, 카운터, 메모리는 전부 “정보를 저장하는” 회로라는 공통점이 있지만 저장하는 방식과 용도가 다르다. 이 글은 셋을 하나씩 쌓아가며 정리한다 — 레지스터는 값을 담고, 시프트 레지스터는 값을 이동시키고, 카운터는 값을 세고, 메모리는 이 모든 것을 대규모로 조직화한 형태다.
1. n비트 레지스터
n개의 플립플롭과 데이터 처리용 조합회로로 구성되어 n비트의 2진 정보를 저장한다.

- 모든 플립플롭이 공통 clock을 공유해 동시에 동작한다.
- Clear 입력이 0이 되면 출력이 전부 0으로 초기화된다.
- Clock을 차단하면 레지스터 내용이 그대로 유지된다(정지 상태 = 값 보존).
2. 병렬 로드 레지스터

Load 제어입력이 클럭펄스가 실제로 데이터를 반영할지 결정한다. Load=1이면 클럭 상승 시점에 새 데이터를 로드하고, Load=0이면 클럭이 와도 기존 값을 유지한다. 이 Load 신호 덕분에 “매 클럭마다 갱신”과 “값 유지”를 하나의 회로로 선택할 수 있다.
3. 시프트 레지스터
시프트 레지스터는 저장 대신 “이동”에 특화된 레지스터다. 플립플롭들을 연쇄적으로 연결해, 클럭펄스마다 저장된 값 전체를 한 방향(또는 양방향)으로 1비트씩 밀어낸다.

병렬 로드 양방향 시프트 레지스터는 4개의 D 플립플롭과 4×1 MUX로 구성되어, 클럭 입력·좌우 시프트·병렬 로드/출력·정보 유지까지 네 가지 모드를 하나의 회로로 처리한다. 이런 다기능 시프트 레지스터는 원격 시스템 간 직렬-병렬 데이터 변환(예: UART 통신)에 널리 쓰인다.
4. 카운터
카운터는 입력펄스가 들어올 때마다 정해진 순서로 상태를 바꾸는 회로로, 사건 발생 횟수를 세거나 타이밍 신호를 만드는 데 쓰인다. n비트 카운터는 0부터 2ⁿ-1까지 셀 수 있다.
- 동기식 카운터: 모든 플립플롭이 같은 클럭을 공유 — 모든 비트가 동시에 바뀌어 빠르다.
- 비동기식 카운터: 앞 플립플롭의 출력이 다음 플립플롭의 클럭이 됨 — 회로는 단순하지만 신호가 순차적으로 전파되므로(전파 지연 누적) 비트 수가 많아지면 느려진다.
병렬 로드 2진 카운터는 Clear(전체 0 초기화)·Load(병렬 입력 로드)·Increment(오름차순 계수) 세 모드를 함께 지원해, 카운터의 초기값을 임의로 설정할 수 있다.

5. 메모리 장치
레지스터가 몇 비트를 다뤘다면, 메모리는 이런 저장 단위를 대규모로 조직한 것이다. 정보 입출력 기능을 가진 저장요소들의 집합으로, Word(비트 그룹) 단위로 데이터를 담고 Byte(8비트) 단위로 세며, k비트 주소로 0~2ᵏ-1개의 위치를 지정한다.
| 단위 | 크기 |
|---|---|
| 1K | 2¹⁰ Byte |
| 1M | 2²⁰ Byte |
| 1G | 2³⁰ Byte |
RAM vs ROM
| 구분 | RAM | ROM |
|---|---|---|
| 읽기/쓰기 | 둘 다 가능 | 읽기만 가능(설계상 변경 불가) |
| 접근 시간 | 모든 워드 동일 | 모든 워드 동일 |
| 내부 구성 | 데이터 라인 + 주소 라인 + 제어 라인 | 디코더 + OR 게이트 |
| 대표 용도 | 실행 중 데이터/프로그램 저장 | 고정된 프로그램, 부팅 코드 |
RAM에 값을 쓸 때는 주소 지정 → 데이터 입력 → Write 활성화 순서로, 읽을 때는 주소 지정 → Read 활성화 순서로 동작한다.

ROM은 용도에 따라 세분화된다.
- 고정 프로그램 ROM: 제조 시점에 내용이 고정
- PROM: 사용자가 한 번 프로그래밍 가능
- EPROM: 자외선으로 지우고 재프로그래밍 가능
- EEPROM: 전기적으로 지우고 재프로그래밍 가능 — 오늘날 펌웨어 저장에 흔히 쓰이는 방식(EEPROM의 발전형이 플래시 메모리다)

핵심 정리
- 레지스터(값 저장) → 시프트 레지스터(값 이동) → 카운터(값 세기) → 메모리(대규모 조직화)는 같은 플립플롭 기반 원리가 점점 큰 단위로 확장된 것이다.
- 동기식 카운터는 빠르지만 배선이 많고, 비동기식은 단순하지만 비트 수가 늘수록 지연이 누적된다.
- RAM과 ROM의 차이는 결국 “쓰기가 가능한가”이며, ROM 계열(PROM/EPROM/EEPROM)의 차이는 “누가, 어떻게 다시 쓸 수 있는가”에 있다.
댓글이 보이지 않으면 GitHub에 로그인한 뒤 새로고침해 주세요. 공개 댓글은 로그인 상태에서 더 안정적으로 표시됩니다.