오늘 끝나면
RAM과 주소 선택
- ✓RAM과 주소 선택의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 RAM과이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
셀·디코더·read/write — 클럭 edge에 쓰인다 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
반도체 설계 · 13
RAM과
주소 선택
플립플롭 한 칸은 1비트만 담는다. 수천 칸을 격자로 깔면 메모리가 된다.
문제는 ‘어느 칸이냐’다. 주소를 주면 디코더가 딱 한 줄만 고른다.
쓰기는 클럭 edge에 박히고, 읽기는 고른 칸 값을 그대로 흘려보낸다.
1비트 셀을 격자로 깐다
레지스터는 플립플롭 몇 개를 묶은 것이었다. 그걸 수천 줄로 늘리면 RAM이 된다.
저장의 최소 단위는 셀이다. 1비트 하나 담는 칸이다.
셀을 옆으로 16개 늘어놓으면 한 번에 다루는 한 덩어리가 된다. 이게 word다.
그 word를 위아래로 수천 줄 쌓은 격자가 메모리 본체다.
칸이 많으니 ‘지금 어느 word를 건드릴 거냐’를 정해야 한다.
그 답을 정하는 게 주소다.
칸 하나 = 플립플롭 1개 = 1비트 · 가로 8칸 = 1 word
주소 → 디코더가 한 줄만 켠다
주소는 ‘몇 번째 줄’을 가리키는 번호다. 디코더가 그 번호를 딱 한 줄짜리 선택 신호로 푼다.
주소가 n비트면 가리킬 수 있는 줄은 2ⁿ개다.
2비트면 4줄, 10비트면 1024줄이다. 비트 하나 늘 때마다 용량이 두 배가 된다.
디코더는 그 주소를 받아 word line 중 정확히 한 줄만 1로 올린다. 나머지는 전부 0이다.
켜진 줄의 셀만 깨어나 읽기와 쓰기에 응한다. 안 켜진 줄은 값을 그대로 품고 잠들어 있다.
주소 폭을 몇 비트로 잡느냐가 최종 MyChip 메모리의 용량을 정한다.
write는 edge에, read는 곧장
같은 격자인데 읽기와 쓰기는 타이밍이 다르다. 이걸 가르는 게 write enable과 클럭이다.
읽기(read)는 조합 회로다. 주소만 주면 고른 셀 값이 곧장 출력선으로 나오고, 클럭을 기다리지 않는다.
그래서 주소를 바꾸면 읽힌 값도 즉시 따라 바뀐다.
쓰기(write)는 다르다. 입력 데이터가 셀에 박히는 건 write enable=1이면서 클럭 edge가 올 때 그 순간뿐이다.
edge 전에는 입력선에 값이 떠 있어도 셀은 옛 값을 지킨다. edge 순간에만 새 값이 자리를 바꾼다.
이 한 박자 규칙 덕에 같은 칸에 안전하게 덮어쓸 수 있다.
주소를 바꾸면 출력도 즉시 따라간다
edge 전에는 입력이 떠 있어도 셀은 변하지 않고, edge 순간에만 박힌다
직접 주소를 골라 읽고 쓴다
주소를 고르면 그 줄만 밝아지고, 쓰기는 STEP(클럭 edge)에서만 박힌다.
4줄짜리 8비트 메모리다. 주소를 0에서 3 사이에서 고르면 디코더가 그 word만 강조하고 나머지는 흐려진다.
STEP을 누르기 전에는 셀이 변하지 않는다. 입력선에만 값이 떠 있다.
STEP(클럭 edge)을 누르는 순간 write enable인 줄에만 새 값이 저장된다. read는 늘 고른 줄 값을 즉시 비춘다.
여기서 정한 주소 폭과 word 크기가 그대로 MyChip의 데이터 보관소가 된다.
읽기는 흐름, 주소만 바꿔도 읽힌 값이 즉시 따라간다. 클럭과 무관하다.
RAM은 칩의 데이터 보관소다
레지스터는 지금 당장 쓰는 몇 칸이고, RAM은 잔뜩 쌓아두는 큰 창고다. 둘은 역할이 다르다.
레지스터는 ALU 바로 옆에 붙어 가장 빠르다. 대신 칸이 몇 개 안 된다.
RAM은 멀리 있어 한 박자 느리지만, 주소만 바꿔 수천, 수만 칸을 들락거릴 수 있다.
그래서 CPU는 RAM에서 데이터를 한 word씩 불러와(load) 레지스터에 올리고, 다 쓰면 다시 RAM에 내려둔다(store).
주소를 디코더에 넣어 word를 고르고 edge에 저장하는 이 한 흐름이 모든 메모리의 뼈대다.
Q. RAM에 값이 실제로 ‘쓰이는’ 시점은 언제인가?
정답은 클럭 edge (write enable일 때)다.입력선에 데이터가 떠 있어도 셀은 변하지 않는다. write enable=1이면서 클럭 edge가 오는 그 순간에만 새 값이 박힌다.
반대로 읽기는 클럭과 무관하게, 주소가 고른 셀 값을 즉시 출력선으로 흘려보낸다.
| 레지스터 | RAM | |
|---|---|---|
| 위치 | ALU 옆 | 멀리 떨어진 격자 |
| 속도 | 가장 빠름 | 한 박자 느림 |
| 칸 수 | 몇 개 | 수천·수만 |
| 고르는 법 | 번호 직접 | 주소 → 디코더 |