Skip to Content
독학사독학사 2단계논리회로23. 기억장치 개요와 주소·용량 계산

이번 문서의 목표: 이 파일을 다 읽으면 RAM과 ROM을 종류별로 구분하고, 기억장치의 용량·주소선·데이터선 사이의 관계를 계산하며, 작은 메모리 칩 여러 개를 조합해 원하는 크기의 메모리를 구성하는 방법을 설계할 수 있다.

왜 논리회로 과목에서 기억장치를 다루는가

06편에서 배운 진법·자리값, 17편에서 배운 ROM의 조합논리적 구조(주소를 입력으로, 저장된 값을 출력으로 하는 거대한 진리표), 18~22편의 플립플롭·레지스터는 모두 “기억장치”라는 하나의 주제로 수렴한다. 독학사 논리회로 출제기준은 CPU 파이프라인이나 캐시 정책 같은 컴퓨터구조 심화 내용까지는 다루지 않지만, 기억장치를 게이트·플립플롭의 집합으로 이해하고 용량·주소를 계산하는 수준은 시험 범위에 포함된다.

쉽게 말하면: 기억장치는 결국 “주소를 넣으면 그 자리에 저장된 데이터가 나오는 회로”이며, 이 편에서는 그 회로의 크기를 숫자로 계산하는 법을 다룬다.

RAM과 ROM: 읽고 쓰는가, 읽기만 하는가

쉽게 말하면: RAM은 전원이 켜져 있는 동안 자유롭게 읽고 쓸 수 있는 기억장치이고, ROM은 원래 정해진 값을 읽기 위주로만 쓰는 기억장치다.

RAM(Random Access Memory, 임의접근기억장치)은 이름과 달리 핵심은 “무작위(random)“가 아니라, 어느 주소든 접근하는 데 걸리는 시간이 똑같다는 뜻이다(순서대로만 읽어야 하는 테이프 같은 순차접근장치와 대비된다). RAM은 전원이 공급되는 동안 자유롭게 값을 읽고 쓸 수 있지만, 전원이 꺼지면 저장된 내용이 사라지는 휘발성(volatile) 메모리다.

구분SRAM(Static RAM)DRAM(Dynamic RAM)
저장 원리플립플롭(래치) 회로로 값을 유지커패시터(축전기)에 전하를 충전해 값을 유지
재충전(refresh) 필요 여부불필요(전원만 있으면 계속 유지)필요(커패시터 전하가 새어 나가 주기적으로 재충전해야 함)
속도빠름상대적으로 느림
셀 하나당 필요한 트랜지스터 수많음(보통 6개 내외)적음(1개 트랜지스터+1개 커패시터)
집적도·용량 대비 가격낮은 집적도, 비쌈높은 집적도, 저렴
대표 용도캐시 메모리처럼 속도가 중요한 곳주기억장치(메인 메모리)처럼 용량이 중요한 곳

ROM(Read Only Memory, 읽기전용기억장치)은 전원이 꺼져도 내용이 사라지지 않는 비휘발성(non-volatile) 메모리이며, 이름대로 원래는 읽기만 가능하도록 설계되었으나, 기술 발전에 따라 제한적으로 다시 쓸 수 있는 종류들이 등장했다.

종류정식 명칭데이터 기록 시점데이터 지우기·재기록 방법
Mask ROMMask Read Only Memory제조 공정에서 데이터를 회로에 직접 새겨 넣음불가능(제조 후 변경 불가)
PROMProgrammable ROM제조 후 사용자가 딱 한 번 프로그래밍불가능(한 번 쓰면 끝)
EPROMErasable Programmable ROM사용자가 프로그래밍자외선(UV)을 쬐어 전체를 지우고 재기록
EEPROMElectrically Erasable PROM사용자가 프로그래밍전기 신호로 바이트 단위 지우고 재기록
Flash memory플래시 메모리사용자가 프로그래밍전기 신호로 블록 단위로 빠르게 지우고 재기록

시험 함정: “ROM은 절대 다시 쓸 수 없는 메모리다”라는 진술은 EPROM·EEPROM·플래시 메모리를 무시한 틀린 설명이다. ROM의 핵심 성질은 재기록 불가능이 아니라 비휘발성(전원이 꺼져도 내용 유지)이며, 재기록 가능 여부는 ROM의 세부 종류에 따라 다르다.

기억장치의 조직: 셀, 워드, 주소선, 데이터선

쉽게 말하면: 메모리는 여러 개의 방(주소로 구분되는 저장 칸)이 늘어선 아파트와 같아서, “몇 개의 방이 있고 방마다 몇 비트를 담을 수 있는지”만 알면 필요한 배선 수를 계산할 수 있다.

  • 셀(cell): 1비트를 저장하는 가장 작은 단위(플립플롭 1개 또는 커패시터 1개에 해당).
  • 워드(word): 한 번의 접근으로 함께 읽거나 쓰는 비트 묶음. 워드의 크기(비트 수)를 워드 길이(word length)라 한다.
  • 주소선(address line): 몇 번째 워드에 접근할지 지정하는 신호선. 주소선이 kk개라면 2k2^k개의 서로 다른 워드를 구분해 가리킬 수 있다.
  • 데이터선(data line): 워드 하나를 실제로 실어 나르는 신호선. 데이터선의 개수는 워드 길이(비트 수)와 같다.

기억장치의 용량(capacity)은 “몇 개의 워드가 있고, 워드 하나가 몇 비트인지”로 표현한다.

용량=(워드 개수)×(워드 길이, 비트)\text{용량} = (\text{워드 개수}) \times (\text{워드 길이, 비트})

예를 들어 ”1K×81\text{K} \times 8 메모리”라는 표기는 10241024개의 워드가 있고, 워드 하나가 88비트라는 뜻이다(전산 분야의 1K1\text{K}는 정확히 10001000이 아니라 210=10242^{10}=1024를 뜻한다는 점을 06편에서 배운 진법 감각으로 다시 확인하자).

필요한 주소선 개수 계산

2k=워드 개수2^k = \text{워드 개수} k=log2(워드 개수)k = \log_2(\text{워드 개수})

1K×81\text{K} \times 8 메모리라면 워드 개수가 1024=2101024 = 2^{10}이므로 주소선은 k=10k=10개가 필요하고, 데이터선은 워드 길이 그대로 88개가 필요하다.

용량 계산 예제: 전 과정을 손으로 밟기

문제: 어떤 기억장치의 용량이 4K×164\text{K} \times 16이다. 필요한 주소선의 개수와 데이터선의 개수는?

1단계 — 워드 개수를 2의 거듭제곱으로 바꾼다

4K=4×1024=4096=2124\text{K} = 4 \times 1024 = 4096 = 2^{12}

2단계 — 주소선 개수를 구한다

k=log2(4096)=12k = \log_2(4096) = 12

워드 개수가 2122^{12}개이므로, 이를 모두 구분해 가리키려면 주소선이 1212개 필요하다.

3단계 — 데이터선 개수를 구한다

워드 길이가 1616비트이므로, 워드 하나를 통째로 실어 나르는 데이터선은 1616개가 필요하다.

4단계 — 전체 비트 용량을 확인한다(검산)

4096×16=65536 비트=8192 바이트=8K 바이트4096 \times 16 = 65536 \text{ 비트} = 8192 \text{ 바이트} = 8\text{K 바이트}

결과 해석: 4K×164\text{K} \times 16 메모리는 주소선 12개, 데이터선 16개로 구현되며, 총 저장 용량은 비트 단위로 6553665536비트, 바이트 단위로는 8K8\text{K}바이트다. “4K×164\text{K} \times 16이니까 용량이 4K4\text{K}바이트”라고 워드 개수만 보고 답하면 워드 길이가 11바이트(8비트)가 아니라 22바이트(16비트)라는 사실을 놓쳐 절반의 값을 답하게 되므로, 반드시 워드 길이를 바이트로 환산해 곱해야 한다.

작은 칩을 조합해 큰 메모리 만들기

쉽게 말하면: 원하는 크기의 메모리 칩이 없을 때는, 작은 칩을 옆으로 늘어놓아 워드 길이를 늘리거나(워드 확장), 위아래로 쌓아 워드 개수를 늘리는(주소 확장) 두 가지 방법으로 원하는 용량을 만든다.

실제로는 필요한 용량의 메모리 칩이 항상 존재하지 않으므로, 작은 칩 여러 개를 조합해서 원하는 용량을 만든다. 두 가지 확장 방식이 있다.

워드 확장(word expansion): 비트 폭을 넓힌다

1K×41\text{K} \times 4 칩(워드 개수는 충분한데 워드 길이가 부족)을 2개 나란히 사용해서 1K×81\text{K} \times 8 메모리를 만들 수 있다. 두 칩에 같은 주소선을 동시에 연결하고, 한 칩은 상위 4비트, 다른 칩은 하위 4비트를 담당하게 하면, 주소 하나에 대해 두 칩이 동시에 응답해 합쳐서 8비트 워드가 된다.

필요한 칩 개수=원하는 워드 길이칩 하나의 워드 길이=84=2\text{필요한 칩 개수} = \frac{\text{원하는 워드 길이}}{\text{칩 하나의 워드 길이}} = \frac{8}{4} = 2\text{개}

주소 확장(address expansion): 워드 개수를 늘린다

1K×81\text{K} \times 8 칩(워드 길이는 충분한데 워드 개수가 부족)을 2개 사용해서 2K×82\text{K} \times 8 메모리를 만들 수 있다. 이번엔 두 칩의 데이터선을 그대로 공유하되, 추가 주소선 1개를 디코더(16편에서 배운 디코더)에 연결해 두 칩 중 어느 쪽을 선택할지(칩 선택, chip select) 결정한다.

필요한 칩 개수=원하는 워드 개수칩 하나의 워드 개수=2K1K=2\text{필요한 칩 개수} = \frac{\text{원하는 워드 개수}}{\text{칩 하나의 워드 개수}} = \frac{2\text{K}}{1\text{K}} = 2\text{개}

2K=2112\text{K} = 2^{11}이므로 전체 주소선은 1111개가 필요한데, 칩 하나가 이미 1010개의 주소선(1K=2101\text{K}=2^{10})을 갖고 있으므로, 남는 주소선 11개(1110=111-10=1)를 디코더에 연결해 두 칩 중 하나를 켜고 끄는 칩 선택 신호로 사용한다.

시험 함정: 워드 확장과 주소 확장을 헷갈리면 안 된다. 워드 길이(비트 폭)가 부족하면 칩을 나란히(가로로) 이어 붙이고, 워드 개수(용량)가 부족하면 칩을 여러 뱅크로(세로로) 쌓아 올려 추가 주소선으로 선택한다. 두 방식을 반대로 적용하면 실제로는 존재하지 않는 회로 구성이 된다.

단순한 메모리 맵 읽기

쉽게 말하면: 메모리 맵은 전체 주소 공간을 몇 개의 구역으로 나눠 “이 주소 범위는 ROM, 저 주소 범위는 RAM”처럼 미리 정해 놓은 배치도다.

컴퓨터 시스템은 하나의 큰 주소 공간 안에 ROM(부팅 코드 저장), RAM(작업 중 데이터 저장), I/O 장치(입출력 포트)를 함께 배치한다. 이렇게 주소 범위별로 어떤 장치가 응답하는지 정리한 표를 메모리 맵(memory map)이라 한다.

주소 범위(16진수)크기할당 장치
00003FFF16KROM(부팅용 프로그램)
4000BFFF32KRAM(작업용 메모리)
C000FFFF16KI/O 장치(입출력 포트)

이 표에서 각 구간의 크기는 끝 주소에서 시작 주소를 뺀 값에 1을 더해 계산한다. 예를 들어 0000부터 3FFF까지는 0x3FFF0x0000+1=16384=16K0x3FFF - 0x0000 + 1 = 16384 = 16\text{K}개의 주소이며, 이 범위 전체가 ROM에 할당되어 있다는 뜻이다. 시스템은 CPU가 내보낸 주소가 어느 구간에 속하는지 판단해(디코더로) 해당 장치를 활성화(칩 선택)한다.

핵심 정리

  • RAM은 읽고 쓸 수 있지만 전원이 꺼지면 내용이 사라지는 휘발성 메모리이며, SRAM(플립플롭 기반, 빠름)과 DRAM(커패시터 기반, 재충전 필요, 저렴)으로 나뉜다.
  • ROM은 비휘발성 메모리이며, Mask ROM·PROM(재기록 불가)부터 EPROM·EEPROM·플래시(재기록 가능)까지 종류가 다양하다.
  • 기억장치의 용량은 워드 개수 × 워드 길이로 표현하며, 워드 개수가 2k2^k개면 주소선이 kk개, 데이터선은 워드 길이만큼 필요하다.
  • 작은 칩으로 큰 메모리를 만들 때, 워드 길이가 부족하면 워드 확장(칩을 나란히 연결), 워드 개수가 부족하면 주소 확장(추가 주소선으로 칩 선택)을 사용한다.
  • 메모리 맵은 전체 주소 공간을 ROM·RAM·I/O 등으로 구역을 나눠 배치한 표이며, 각 구역의 크기는 끝 주소와 시작 주소의 차이에 1을 더해 계산한다.

마무리 복습

문제 14지선다
RAM과 ROM의 근본적인 차이에 대한 설명으로 가장 적절한 것은?
문제 24지선다
DRAM이 SRAM과 달리 주기적인 재충전(refresh)이 필요한 이유는?
문제 34지선다
ROM의 종류 중 자외선(UV)을 쬐어 전체 내용을 지우고 재기록할 수 있는 것은?
문제 44지선다
용량이 8K x 8인 기억장치를 구현하는 데 필요한 주소선의 개수는?
문제 54지선다
용량이 2K x 8인 기억장치의 전체 저장 용량을 바이트 단위로 나타내면?
문제 64지선다
1K x 4 크기의 메모리 칩만 있을 때, 1K x 8 메모리를 만들려면 몇 개의 칩과 어떤 확장 방식이 필요한가?
문제 74지선다
주소 확장 방식으로 여러 메모리 칩 중 하나만 활성화할 때 사용하는 회로는?

참고 자료

Last updated on