스킬캠퍼스

오늘 끝나면

RAM과 주소 선택

  • RAM과 주소 선택의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 RAM과이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

셀·디코더·read/write — 클럭 edge에 쓰인다 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

반도체 설계 · 13

RAM과
주소 선택

플립플롭 한 칸은 1비트만 담는다. 수천 칸을 격자로 깔면 메모리가 된다.
문제는 ‘어느 칸이냐’다. 주소를 주면 디코더가 딱 한 줄만 고른다.
쓰기는 클럭 edge에 박히고, 읽기는 고른 칸 값을 그대로 흘려보낸다.

P.01반도체 설계 · 13

1비트 셀을 격자로 깐다

레지스터는 플립플롭 몇 개를 묶은 것이었다. 그걸 수천 줄로 늘리면 RAM이 된다.

저장의 최소 단위는 이다. 1비트 하나 담는 칸이다.
셀을 옆으로 16개 늘어놓으면 한 번에 다루는 한 덩어리가 된다. 이게 word다.
그 word를 위아래로 수천 줄 쌓은 격자가 메모리 본체다.

칸이 많으니 ‘지금 어느 word를 건드릴 거냐’를 정해야 한다.
그 답을 정하는 게 주소다.

셀 = 플립플롭 1칸 · word = 한 줄
셀(1비트) → word(한 줄) → 격자
w0
0
1
0
0
1
0
1
1
w1
1
1
1
0
0
0
0
0
w2
0
0
0
1
0
1
1
0
w3
1
0
1
1
0
0
1
1
셀↑

칸 하나 = 플립플롭 1개 = 1비트 · 가로 8칸 = 1 word

강조된 w2가 지금 고른 한 word다. 나머지 줄은 값을 품고 잠들어 있다
P.02반도체 설계 · 13

주소 → 디코더가 한 줄만 켠다

주소는 ‘몇 번째 줄’을 가리키는 번호다. 디코더가 그 번호를 딱 한 줄짜리 선택 신호로 푼다.

주소가 n비트면 가리킬 수 있는 줄은 2ⁿ개다.
2비트면 4줄, 10비트면 1024줄이다. 비트 하나 늘 때마다 용량이 두 배가 된다.

디코더는 그 주소를 받아 word line 중 정확히 한 줄만 1로 올린다. 나머지는 전부 0이다.
켜진 줄의 셀만 깨어나 읽기와 쓰기에 응한다. 안 켜진 줄은 값을 그대로 품고 잠들어 있다.
주소 폭을 몇 비트로 잡느냐가 최종 MyChip 메모리의 용량을 정한다.

2비트 주소 → 4줄 중 1줄 선택
디코더, 주소 1개로 word line 1줄
주소 (2비트)10₂ = 2
2→4디코더
word 00
word 10
word 21
word 30
n비트 주소면 2ⁿ줄 중 딱 1줄만 1이고 나머지는 0이다
P.03반도체 설계 · 13

write는 edge에, read는 곧장

같은 격자인데 읽기와 쓰기는 타이밍이 다르다. 이걸 가르는 게 write enable과 클럭이다.

읽기(read)는 조합 회로다. 주소만 주면 고른 셀 값이 곧장 출력선으로 나오고, 클럭을 기다리지 않는다.
그래서 주소를 바꾸면 읽힌 값도 즉시 따라 바뀐다.

쓰기(write)는 다르다. 입력 데이터가 셀에 박히는 건 write enable=1이면서 클럭 edge가 올 때 그 순간뿐이다.
edge 전에는 입력선에 값이 떠 있어도 셀은 옛 값을 지킨다. edge 순간에만 새 값이 자리를 바꾼다.
이 한 박자 규칙 덕에 같은 칸에 안전하게 덮어쓸 수 있다.

쓰기=클럭 edge · 읽기=즉시
read는 즉시 · write는 edge에서만
READ · 조합클럭 안 기다림
주소셀 선택값 출력

주소를 바꾸면 출력도 즉시 따라간다

WRITE · 클럭 edgeWE=1 + ↑edge
CLK저장!옛 값새 값

edge 전에는 입력이 떠 있어도 셀은 변하지 않고, edge 순간에만 박힌다

읽기는 흐름이고 쓰기는 사건이다. 한 박자 규칙으로 안전하게 덮어쓴다
P.04반도체 설계 · 13

직접 주소를 골라 읽고 쓴다

주소를 고르면 그 줄만 밝아지고, 쓰기는 STEP(클럭 edge)에서만 박힌다.

4줄짜리 8비트 메모리다. 주소를 0에서 3 사이에서 고르면 디코더가 그 word만 강조하고 나머지는 흐려진다.

STEP을 누르기 전에는 셀이 변하지 않는다. 입력선에만 값이 떠 있다.
STEP(클럭 edge)을 누르는 순간 write enable인 줄에만 새 값이 저장된다. read는 늘 고른 줄 값을 즉시 비춘다.
여기서 정한 주소 폭과 word 크기가 그대로 MyChip의 데이터 보관소가 된다.

4×8 메모리 · 주소·데이터·R/W
4 word × 8비트 메모리 · 주소로 선택
주소 (2비트), 어느 word를 건드릴까
메모리 격자, 선택 안 된 줄은 흐림
w0
0
1
0
0
1
0
1
1
w1
1
1
1
0
0
0
0
0
w2
0
0
0
1
0
1
1
0
w3
1
0
1
1
0
0
1
1
입력 데이터 (쓸 값)00101010 · 42
읽기만, STEP 눌러도 셀은 안 변한다
근거 패널
주소 10₂ → 디코더 → word line
w0
0
w1
0
w2
1
w3
0
읽힌 값 (read · 즉시)
00010110
= 22
입력선 (write 대기)
00101010
WE=0 · 무시됨

읽기는 흐름, 주소만 바꿔도 읽힌 값이 즉시 따라간다. 클럭과 무관하다.

P.05반도체 설계 · 13

RAM은 칩의 데이터 보관소다

레지스터는 지금 당장 쓰는 몇 칸이고, RAM은 잔뜩 쌓아두는 큰 창고다. 둘은 역할이 다르다.

레지스터는 ALU 바로 옆에 붙어 가장 빠르다. 대신 칸이 몇 개 안 된다.
RAM은 멀리 있어 한 박자 느리지만, 주소만 바꿔 수천, 수만 칸을 들락거릴 수 있다.

그래서 CPU는 RAM에서 데이터를 한 word씩 불러와(load) 레지스터에 올리고, 다 쓰면 다시 RAM에 내려둔다(store).
주소를 디코더에 넣어 word를 고르고 edge에 저장하는 이 한 흐름이 모든 메모리의 뼈대다.

Q. RAM에 값이 실제로 ‘쓰이는’ 시점은 언제인가?정답은 클럭 edge (write enable일 때)다.
입력선에 데이터가 떠 있어도 셀은 변하지 않는다. write enable=1이면서 클럭 edge가 오는 그 순간에만 새 값이 박힌다.
반대로 읽기는 클럭과 무관하게, 주소가 고른 셀 값을 즉시 출력선으로 흘려보낸다.
레지스터 ↔ RAM 역할 분담
레지스터 ↔ RAM
레지스터RAM
위치ALU 옆멀리 떨어진 격자
속도가장 빠름한 박자 느림
칸 수몇 개수천·수만
고르는 법번호 직접주소 → 디코더
RAMload →REGstore ↓RAM
창고(RAM)에서 꺼내 작업대(REG)에 올리고 다시 내려둔다

3줄 요약

  1. 1셀·디코더·read/write — 클럭 edge에 쓰인다
  2. 2RAM과 주소 선택은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

RAM과

셀·디코더·read/write — 클럭 edge에 쓰인다

ALU

산술·논리 연산을 하는 회로

ISA

CPU가 이해하는 명령어 집합과 인코딩