Chapter 13

SRAM과 메모리 회로

요즘 프로세서 다이를 찍은 사진을 보면 넓은 면적이 바둑판처럼 반복되는 무늬로 덮여 있다. 캐시, 레지스터 파일, 버퍼, 태그 배열. 모두 SRAM이다. 칩 하나에 SRAM 비트가 수억~수십억 개 들어가니, 셀 하나가 0.001 µm²만 커져도 칩 전체가 눈에 띄게 커진다. 그래서 SRAM 셀은 공정이 허락하는 가장 작은 트랜지스터로, 가장 아슬아슬한 비율로 짓는다. 이 장에서는 8장의 래치를 극한까지 줄인 6T 셀이 어떻게 읽히고 써지는지, 읽는 동안 왜 내용이 지워질 뻔하는지, 미세한 비트라인 전압 차를 어떻게 0과 1로 키우는지, 그리고 공정 변동이 왜 SRAM의 최저 전압과 수율을 정하는지를 직접 만져 본다.

메모리 배열: 주소가 행과 열이 되기까지

메모리는 기억 소자를 바둑판처럼 늘어놓은 배열(Array)이다. 비트 하나를 기억하는 비트셀(Bitcell)이 가로 행과 세로 열로 반복되고, 각 행에는 가로로 지나가는 워드라인(Wordline, WL)이, 각 열에는 세로로 지나가는 비트라인(Bitline, BL)이 있다. 워드라인은 "이 행의 셀들은 비트라인에 연결되어라"라는 스위치 명령이고, 비트라인은 데이터가 오가는 통로다.

주소는 둘로 쪼개진다. 윗자리는 행 디코더(Row decoder)로 가서 수많은 워드라인 중 정확히 하나만 켠다. 아랫자리는 열 MUX(Column multiplexer)로 가서, 켜진 행의 여러 열 중 원하는 워드의 열만 골라 센스 앰프(Sense amplifier)나 쓰기 드라이버(Write driver)에 잇는다. 왜 굳이 열을 다시 고를까? 한 행에 워드 하나만 두면 배열이 기다란 막대가 되어 비트라인이 지나치게 길어진다. 한 행에 워드 여러 개를 섞어 넣으면 배열을 정사각형에 가깝게 만들 수 있다.

주소 비트 (눌러서 토글)
켜진 워드라인—
선택된 열—
읽은 데이터 D[1:0]—
해 보기32워드 × 2비트 메모리다. 주소 5비트 중 위 3비트(A4~A2)가 8개 워드라인 중 하나를 켜고, 아래 2비트(A1·A0)가 4:1 열 MUX를 고른다. 주소 비트를 눌러 보자. 워드라인 하나가 켜지면 그 행의 셀 8개가 모두 비트라인에 연결되지만, 실제로 바깥으로 나가는 것은 MUX가 고른 2개뿐이다. 한 데이터 비트의 열들이 4칸씩 묶여 있는 것을 열 인터리빙이라 한다.

배열의 위쪽에는 프리차지(Precharge) 회로가 있어 읽기 전에 모든 비트라인을 \(V_{DD}\)로 채워 둔다. 그림에서 보듯 워드라인이 켜진 행의 셀은 선택되지 않은 열에서도 비트라인에 연결된다. 이 "반쯤 선택된" 셀(Half-selected cell)들은 사실상 읽기를 당하는 셈이라, 뒤에서 볼 읽기 안정성을 모두 갖춰야 한다.

열 인터리빙이 주는 덤

같은 워드의 비트들이 물리적으로 4열씩 떨어져 있으면, 우주선 입자 하나가 이웃한 셀 여러 개를 한꺼번에 뒤집어도 한 워드 안에서는 한 비트만 틀린다. 한 비트 오류는 ECC로 고칠 수 있다. 소프트 에러와 ECC는 16장에서 다룬다.

6T SRAM 셀: 서로 붙잡은 두 인버터

8장에서 인버터 두 개를 고리로 이으면 두 안정 상태를 갖는 쌍안정 회로가 된다는 것을 보았다. 6T SRAM 셀(Six-transistor SRAM cell)은 바로 그것이다. 교차 결합된 인버터 두 개(트랜지스터 4개)가 노드 Q와 QB에 서로 반대 값을 붙잡고 있고, 여기에 nMOS 접근 트랜지스터(Access/pass-gate transistor) 두 개가 Q를 BL에, QB를 BLB에 잇는다. 접근 트랜지스터의 게이트가 워드라인이다. 클럭도, 리셋도, 전송 게이트도 없다. 래치에서 덜어낼 수 있는 것은 모두 덜어낸 것이다.

세 가지 동작은 다음과 같다.

동작
쓸 값 (Q에)
비트라인
Q / QB—
BL / BLB—
경과 시간—
상태—
해 보기처음 셀은 Q = 1을 담고 있다. 쓰기를 누르고 쓸 값 0을 고르면 BL이 0으로 몰리며 Q가 내려가고 어느 순간 셀이 휙 뒤집힌다. 이어 읽기를 누르면 비트라인이 프리차지된 뒤 0을 담은 쪽 비트라인이 서서히 내려간다. 이때 0인 노드가 0 V가 아니라 0.1 V 남짓 떠오르는 것을 보자. 이것이 읽기 교란이다. 트랜지스터 색의 진하기는 켜진 정도, 선 색은 전압(회색 0 V ↔ 초록 \(V_{DD}\))이다. DG-7 모델로 실제 전류를 적분하며, 시간은 약 30배 느리게 흐른다(1초 ≈ 30 ps 남짓).

읽기에서 눈여겨볼 것이 있다. Q = 0인 셀을 읽으면 접근 트랜지스터는 \(V_{DD}\)로 차 있는 BL에서 Q로 전류를 밀어 넣고, 풀다운 nMOS는 그 전류를 접지로 빼낸다. 두 nMOS가 직렬로 맞서는 전압 분배기가 되어 Q는 0보다 조금 높은 \(V_{read}\)에 머문다. 이 값이 반대편 인버터의 스위칭 문턱을 넘으면 셀이 저절로 뒤집힌다. 읽기가 쓰기가 되어 버리는 읽기 교란(Read disturb)이다. 그래서 풀다운은 접근 트랜지스터보다 강해야 한다. 반대로 쓰기에서는 접근 트랜지스터가 풀업 pMOS를 이겨야 한다. 세 트랜지스터의 힘겨루기가 SRAM 설계의 전부라고 해도 과장이 아니다.

DRAM과 플래시는?

DRAM은 트랜지스터 하나와 커패시터 하나(1T1C)로 비트를 전하로 담고, 전하가 새기 전에 수십 ms마다 다시 써 주는 리프레시가 필요하다. 플래시는 전원이 꺼져도 전하가 남는 비휘발성 셀이다. 셀이 훨씬 작아 용량은 크지만 로직 공정과 따로 만들고 느리다. 이 둘의 셀·배열·인터페이스는 시리즈의 MemoryBook이 자세히 다룬다. 이 책은 로직 공정 그대로 칩 안에 넣을 수 있는 SRAM에 집중한다.

정적 잡음 여유와 나비 곡선

셀이 얼마나 튼튼한지 하나의 숫자로 말할 수 있을까? 4장에서 인버터 하나의 노이즈 마진을 VTC로 구했다. 셀에는 인버터가 둘이고 서로의 입력이 서로의 출력이다. 그래서 두 VTC를 한 그래프에 겹친다. 인버터 1의 VTC는 \(V_{QB} = f(V_Q)\)로 그리고, 인버터 2의 VTC는 축을 바꿔 \(V_Q = g(V_{QB})\)로 그린다. 두 곡선은 세 점에서 만나는데, 양 끝의 두 점이 안정 상태(0과 1)이고 가운데가 준안정점이다. 두 곡선이 둘러싼 두 개의 눈 모양이 나비 날개를 닮아 나비 곡선(Butterfly curve)이라 부른다.

두 인버터 입력에 같은 크기의 직류 잡음 전압이 반대 방향으로 끼어든다고 해 보자. 그러면 두 곡선이 서로를 향해 평행 이동한다. 잡음이 커져서 한쪽 눈이 닫히는 순간 그 안정 상태가 사라지고 셀은 뒤집힌다. 눈이 닫히기까지 버틸 수 있는 잡음의 크기가 정적 잡음 여유(Static noise margin, SNM)이고, 기하학적으로는 작은 쪽 눈에 들어가는 가장 큰 정사각형의 한 변이다(Seevinck, 1987).

SIMULATOR

나비 곡선과 SNM

모드
SNM—
SNM / VDD—
0 노드 전압 (읽기)—
상태—
왼쪽: 인버터 1(파랑, \(V_{QB}=f(V_Q)\))과 인버터 2(주황, \(V_Q=g(V_{QB})\))의 VTC. 두 눈에 각각 최대 정사각형을 그리고, 작은 쪽(진하게 칠한 것)이 SNM이다. 읽기 모드에서는 \(V_{DD}\)에 프리차지된 비트라인이 접근 트랜지스터를 통해 출력 노드를 끌어올리는 전류를 VTC 계산에 넣어, 장 안에서 직접 다시 푼다(옅은 점선은 유지 모드 곡선). ΔVt는 한쪽 인버터의 풀다운을 약하게·접근을 강하게, 다른 쪽은 반대로 만드는 최악 방향 불일치다. 오른쪽: 현재 \(V_{DD}\)·ΔVt에서 β에 따른 유지·읽기 SNM. 교육용 DG-7 모델(풀업 pMOS 폭 = 접근 폭)로, 실제 셀 수치와는 차이가 있다.

유지 모드에서 SNM은 \(V_{DD}\)의 약 35%로 넉넉하다. 읽기 모드로 바꾸면 0쪽 출력이 \(V_{read}\)만큼 떠오르고 VTC의 아래 끝이 들려, 눈이 절반 가까이 줄어든다. 셀이 가장 위험한 순간은 가만히 있을 때가 아니라 읽힐 때다. 그래서 SRAM에서 "SNM"이라 하면 보통 읽기 SNM(Read SNM, RSNM)을 가리킨다. 읽기 SNM을 지키는 가장 직접적인 손잡이가 셀 비율이다.

$$ \beta = \frac{(W/L)_{\text{PD}}}{(W/L)_{\text{AX}}}, \qquad V_{read} \approx \frac{V_{DD} - V_t}{1 + \beta \cdot (\text{보정})} \;\downarrow \;\text{ as } \beta \uparrow $$
PD = 풀다운 nMOS, AX = 접근 nMOS. β가 클수록 풀다운이 접근을 이겨 \(V_{read}\)가 낮고 읽기 SNM이 커진다. 고전적인 설계 지침은 β ≳ 1.5~2, \(V_{read}\)가 반대 인버터의 문턱보다 넉넉히 낮을 것.
β를 키우면 무엇을 잃을까?

시뮬레이터에서 β를 3까지 올리면 읽기 SNM이 늘어난다. 그렇다면 왜 모든 셀을 β = 3으로 만들지 않을까? 잃는 것 두 가지를 떠올려 보자.

답 보기

첫째, 면적이다. 풀다운이 넓어지면 셀이 커지고, 수억 개를 곱하면 칩이 커진다. 둘째, 같은 셀 면적이라면 접근 트랜지스터를 줄여 β를 키우게 되는데, 그러면 읽기 전류가 줄어 비트라인이 늦게 내려가고(읽기 지연↑), 접근 트랜지스터가 약해져 쓰기가 어려워진다. 읽기 안정성과 쓰기 능력은 늘 반대 방향으로 당긴다.

ΔVt 슬라이더를 움직여 보자. 두 인버터가 조금만 달라져도 한쪽 눈이 줄고 다른 쪽이 커진다. SNM은 작은 쪽 눈으로 정해지므로 불일치는 언제나 손해다. ΔVt가 ±0.15 V쯤 되면 β가 작은 셀은 읽기 중 눈 하나가 아예 닫힌다. 셀이 단안정이 되어 읽는 순간 한쪽 값으로 굴러 떨어진다. 최소 크기 트랜지스터의 Vt는 무작위 도펀트 요동 같은 이유로 셀마다 수십 mV씩 흩어지므로, 수억 개 중 몇 개는 반드시 이 꼬리에 걸린다. 이 이야기는 마지막 절의 수율로 이어진다.

핀은 정수 개다

평면 트랜지스터 시절에는 폭을 연속적으로 골라 β = 1.5 같은 비율을 쉽게 맞췄다. FinFET에서는 폭이 핀 개수로 양자화된다. 가장 작은 고밀도 셀은 풀업·접근·풀다운이 모두 핀 1개인 "1-1-1" 구조라 β = 1, γ = 1에 묶인다(밀도형 1-1-1, 성능형 1-2-2 등). β로 읽기 SNM을 벌 수 없으니 FinFET 이후의 SRAM은 아래에서 볼 어시스트 회로에 크게 기댄다. GAA(나노시트)는 시트 폭을 어느 정도 다시 연속적으로 고를 수 있게 한다.

쓰기 능력: 접근 트랜지스터 대 풀업

Q = 1을 담은 셀에 0을 쓰는 순간을 보자. BL은 0 V로 몰려 있고 WL이 켜진다. Q 노드에는 두 힘이 걸린다. 접근 nMOS는 Q를 BL 쪽(0)으로 끌어내리고, 풀업 pMOS(게이트 QB = 0이라 완전히 켜져 있다)는 Q를 \(V_{DD}\)로 붙잡는다. 두 전류가 같아지는 Q 전압이 반대 인버터의 문턱보다 낮아지면 QB가 올라가기 시작하고, 그러면 풀업이 꺼지며 되먹임이 셀을 끝까지 뒤집는다. 그러니 쓰기의 손잡이는 풀업 비율(Pull-up ratio)이다.

$$ \gamma = \frac{(W/L)_{\text{PU}}}{(W/L)_{\text{AX}}}, \qquad \text{쓰기 성공} \iff V_Q\big|_{I_{AX}=I_{PU}} < V_{trip} $$
PU = 풀업 pMOS. γ가 작을수록(풀업이 약할수록) 쓰기가 쉽다. pMOS는 같은 폭이라도 nMOS보다 약 1.6배 약하므로(DG-7의 이동도 비) γ = 1이면 대개 쓸 수 있다. 쓰기 마진은 "셀을 여전히 뒤집을 수 있는 최대 BL 전압"으로 정의하는 경우가 많다.
Q가 내려가는 바닥—
반대 인버터 문턱—
쓰기 마진 (최대 BL)—
결과—
해 보기가로축은 Q 노드 전압, 두 곡선은 Q로 들어오는 풀업 전류(분홍)와 Q에서 빠져나가는 접근 전류(파랑)다. 두 곡선이 만나는 점이 Q가 내려갈 수 있는 바닥이다. 이 점이 세로 점선(반대 인버터 문턱)보다 왼쪽이면 쓰기 성공. γ를 2 이상으로 올려 쓰기를 실패시킨 뒤, \(V_{WL}\)을 \(V_{DD}\) 위로 올리거나(워드라인 부스트) \(V_{BL}\)을 0 아래로 내려(음의 비트라인) 다시 살려 보자. 둘 다 실제로 쓰는 쓰기 어시스트다. β = 2, \(V_{DD}\) = 0.75 V.

정리하면 6T 셀의 크기 순서는 풀다운 > 접근 > 풀업이다. 풀다운이 접근을 이겨야 읽기가 안전하고(β > 1), 접근이 풀업을 이겨야 쓰기가 된다(γ 작게). 접근 트랜지스터는 그 사이에서 양쪽의 눈치를 본다. 접근이 강하면 읽기가 빠르고 쓰기도 쉽지만 읽기 SNM이 줄고, 약하면 그 반대다. 이 줄다리기는 \(V_{DD}\)를 낮출수록 팽팽해진다.

읽기 동작과 센스 앰프

셀은 작고 비트라인은 길다. 비트라인 하나에는 같은 열의 셀이 수백 개 매달려 있고, 각 셀의 접근 트랜지스터 드레인 커패시턴스와 배선 커패시턴스가 쌓여 \(C_{BL}\)은 수십 fF에 이른다. 반면 셀이 흘릴 수 있는 전류는 최소 크기 트랜지스터 두 개를 직렬로 지난 수십 µA다. 비트라인을 \(V_{DD}\)에서 0까지 끌어내리려면 수백 ps가 걸린다. 그래서 SRAM은 비트라인을 끝까지 기다리지 않는다. 두 비트라인 사이에 수십 mV의 차만 생기면 센스 앰프가 그것을 \(V_{DD}\) 크기로 키운다.

$$ \Delta V(t) = \frac{I_{cell}\,t}{C_{BL}}, \qquad t_{sense} = \frac{C_{BL}\,\Delta V_{min}}{I_{cell}}, \qquad E_{BL} \approx C_{BL}\,V_{DD}\,\Delta V $$
\(C_{BL}\) ≈ 행 수 × 셀당 커패시턴스(여기서는 0.1 fF) + 고정분 2 fF. \(\Delta V_{min}\)은 센스 앰프의 입력 오프셋(소자 불일치로 생기는, 증폭기가 틀리지 않는 최소 입력 차)보다 커야 한다. 다음 프리차지는 내려간 \(\Delta V\)만 다시 채우므로, 작은 스윙은 지연과 에너지를 함께 줄인다.

가장 흔한 센스 앰프는 래치형(Latch-type / strobed sense amplifier)이다. 교차 결합 인버터 쌍을 비트라인에 걸고 센스 인에이블(SAE) 신호로 꼬리 트랜지스터를 켜면, 두 노드의 작은 전압 차가 양의 되먹임으로 지수적으로 벌어진다. 8장의 메타안정성 해소와 같은 식이다: \(V_{diff}(t) = V_{diff}(0)\,e^{t/\tau}\). 문제는 SAE를 언제 켤지다. 너무 이르면 ΔV가 오프셋보다 작아 틀린 쪽으로 넘어가고, 너무 늦으면 시간과 에너지를 버린다.

SIMULATOR

비트라인 방전과 센스 시점

읽는 셀
재생
\(C_{BL}\)—
센스 시점의 ΔV—
결과—
읽기 지연 (WL→출력)—
열당 에너지—
풀 스윙이었다면—
위: 워드라인(WL)과 센스 인에이블(SAE). 아래: BL(\(V_{DD}\) 유지), BLB(셀 전류로 방전), 센스 앰프 출력 두 개. 회색 띠는 "ΔV가 오프셋보다 작은" 위험 구간이다. 셀이 1을 담고 있어 BLB가 내려가고, 출력 OUT이 1로 올라가야 정답이다. 오프셋은 정답을 방해하는 최악 방향으로 넣었다. 센스 앰프 재생 시정수 τSA = 3 ps, SAE가 켜지면 WL이 꺼져 비트라인 방전이 멈춘다고 가정한 교육용 모델이다.
행 수를 두 배로 하면?

열당 행 수를 256에서 512로 늘리면 같은 오프셋을 넘기는 데 필요한 센스 시점은 어떻게 될까? 열당 에너지는?

답 보기

\(C_{BL}\)이 거의 두 배(25.6+2 → 51.2+2 fF)가 되므로 \(t_{sense} = C_{BL}\Delta V/I\)도 거의 두 배가 된다. 에너지 \(C_{BL}V_{DD}\Delta V\)도 두 배다. 그래서 큰 메모리는 하나의 긴 배열로 만들지 않고 128~256행 정도의 작은 뱅크(Bank / sub-array) 여럿으로 쪼갠다. 배열을 쪼갤수록 주변 회로(디코더·센스 앰프) 면적이 늘어 효율이 떨어지므로, 그 균형점에서 뱅크 크기가 정해진다.

약한 셀로 바꿔 보자. 같은 센스 시점에서 ΔV가 40% 줄어 오프셋 아래로 떨어질 수 있다. 실제 설계는 평균 셀이 아니라 수백만 개 중 가장 약한 셀(−5σ, −6σ)과 가장 나쁜 센스 앰프 오프셋이 만나도 성공하도록 센스 시점을 잡는다. 그래서 SAE 타이밍은 보통 실제 비트라인을 흉내 내는 복제 비트라인(Replica bitline)으로 만든다. 공정·전압·온도가 바뀌면 복제 경로도 같이 느려져 타이밍이 스스로 따라간다.

왜 비트라인이 둘인가

BL과 BLB를 함께 쓰는 차동 읽기는 두 선에 똑같이 실린 잡음(전원 흔들림, 이웃 선의 결합)을 빼 버린다. 기준 전압 하나와 비교하는 단일 선 읽기보다 훨씬 작은 ΔV로도 확실히 판정할 수 있다. 쓰기에서도 BL·BLB를 반대로 몰아 한쪽은 끌어내리고 한쪽은 받쳐 주므로 쓰기가 쉽다.

디코더: 주소에서 워드라인까지

행 디코더는 n비트 주소를 받아 \(2^n\)개 워드라인 중 하나만 켜는 회로다. 가장 단순한 방법은 행마다 n입력 AND 게이트를 두고 각 입력을 주소 비트나 그 보수에 잇는 것이다. 그러나 8입력 NAND는 nMOS 8개가 직렬로 쌓여 느리고(5장의 스택 효과), 주소선 하나가 행의 절반, 수백 개 게이트를 구동해야 한다. 그래서 실제 디코더는 미리 디코딩(Predecoding)을 쓴다. 주소를 2~3비트씩 묶어 먼저 작은 디코더(2→4, 3→8)로 풀어 놓고, 행 게이트는 각 묶음에서 한 선씩만 골라 AND한다.

구조
주소 A3~A0 (눌러서 토글)
켜진 워드라인—
경로 노력 F (직접 / 미리)—
최소 지연 (직접 / 미리)—
트랜지스터 (직접 / 미리)—
해 보기그림은 4비트 주소, 16행 디코더다. 세로선은 주소선(직접) 또는 미리 디코딩된 선(미리)이고, 행 선 위의 점은 그 행의 AND 게이트 입력이다. 점이 모두 초록인 행만 워드라인을 켠다. 미리 디코딩에서는 각 묶음의 4선 중 정확히 하나만 켜지고, 행 게이트는 2입력이면 된다. 아래 수치는 n비트 주소, 128열(워드라인 부하 약 356 단위 게이트 커패시턴스, 주소 입력 12 단위)일 때 6장의 논리적 노력으로 구한 값이다. 지연은 τ와 FO4로 적었다(DG-7: τ ≈ 1.5 ps, FO4 ≈ 5τ).

논리적 노력으로 보면 디코더는 가지치기 노력이 큰 경로다. 주소선 하나(참 또는 보수)는 \(2^n/2\)개 행으로 갈라지고, 끝에서는 워드라인 하나가 한 행의 접근 트랜지스터 수백 개와 긴 배선을 끌어야 한다.

$$ F = G\,B\,H, \quad B = \frac{2^n}{2}, \quad H = \frac{C_{WL}}{C_{addr}}, \qquad \hat N = \log_4 F, \quad D = N F^{1/N} + P $$
G: 경로의 논리적 노력(n입력 NAND는 \((n+2)/3\)), B: 가지치기 노력, H: 전기적 노력, P: 기생 지연 합. 미리 디코딩은 B와 H를 바꾸지 못하지만, 큰 팬인 게이트를 작은 게이트 두 단으로 나눠 G와 P를 줄이고 트랜지스터 수도 줄인다. 남는 노력은 워드라인 드라이버(인버터 사슬)가 단당 약 4씩 나눠 맡는다.

n = 8에서 경로 노력은 수천~만 단위다. 단당 노력 4를 맞추려면 6~7단이 필요하고, 디코더 지연만 FO4 7~8개 정도가 된다. SRAM 접근 시간의 상당 부분이 셀이 아니라 디코더와 워드라인에서 쓰이는 이유다. 워드라인 자체도 긴 RC 배선이어서 끝의 셀이 늦게 켜진다. 배선의 분산 RC는 14장에서 다룬다.

레지스터 파일, CAM, ROM

같은 배열 구조가 쓰임새에 따라 모양을 바꾼다. 프로세서의 레지스터 파일(Register file)은 한 사이클에 여러 레지스터를 동시에 읽고 쓴다. 예를 들어 슈퍼스칼라 코어는 명령 4개를 한 번에 처리하려고 읽기 포트 8개, 쓰기 포트 4개를 가진다. 포트마다 워드라인과 비트라인이 하나씩(쓰기는 차동이라 둘) 더 필요하고, 셀은 배선 트랙 수로 크기가 정해진다. 가로·세로가 함께 늘어나니 면적은 포트 수의 대략 제곱으로 커진다.

트랜지스터 / 비트—
배선 트랙 (가로×세로)—
면적 (6T 대비)—
해 보기포트 수를 늘려 보자. 가운데 상자는 값을 붙잡는 교차 결합 인버터(4T), 가로선은 포트별 워드라인, 세로선은 포트별 비트라인이다. 읽기 포트는 저장 노드를 게이트로만 보는 2T 직렬 스택(단일 선)이라 읽어도 셀을 교란하지 않고, 쓰기 포트는 접근 트랜지스터 2개와 비트라인 2개를 쓴다. 점선 상자는 같은 축척의 6T 셀. 면적은 "셀이 배선 트랙으로 정해진다"는 단순 모델이다.

캐시의 태그 비교, TLB, 네트워크 라우터의 주소 표처럼 "이 값이 어디에 있는가"를 묻는 곳에는 CAM(Content-addressable memory, 내용 주소 메모리)을 쓴다. 보통 메모리가 주소를 받아 내용을 내놓는다면 CAM은 내용을 받아 주소를 내놓는다. 각 셀에 비교 트랜지스터를 붙이고, 한 항목의 셀들이 하나의 매치라인(Matchline)을 공유한다. 매치라인을 프리차지한 뒤 검색 키를 서치라인에 실으면, 한 비트라도 다른 셀은 매치라인을 끌어내린다. 끝까지 높게 남은 매치라인이 일치한 항목이다. 7장의 동적 NOR(와이어드 OR)와 같은 구조다.

종류
검색 키 K3~K0 (눌러서 토글)
키
일치 항목—
우선순위 인코더 출력—
방전된 매치라인—
해 보기검색 키 비트를 누르거나, 저장된 셀을 직접 눌러 값을 바꿔 보자(TCAM에서는 0 → 1 → X 순환). 키와 다른 셀은 빨간 테두리로 표시되고 그 항목의 매치라인을 방전시킨다. TCAM의 X(don't care) 셀은 어떤 키와도 일치한다. 라우터가 "10으로 시작하는 주소는 모두 이쪽" 같은 접두사 규칙을 한 번에 찾을 때 쓰는 방식이다. 여러 항목이 일치하면 우선순위 인코더가 가장 위 항목을 고른다.

CAM은 검색 한 번에 모든 항목을 동시에 비교하므로 빠르지만, 매번 대부분의 매치라인이 방전되었다가 다시 충전되어 전력이 크다. 그림에서 "방전된 매치라인"이 거의 늘 항목 수에 가깝다는 것을 확인해 보자. CAM 셀은 10T(TCAM은 16T) 정도라 면적도 크다. 그래서 꼭 필요한 작은 표에만 쓴다.

ROM(Read-only memory)은 가장 단순한 배열이다. 저장 값이 제조 때 정해지므로 셀은 "그 교차점에 트랜지스터가 있느냐 없느냐"(또는 비아가 있느냐) 하나로 1비트를 담는다. 비트라인을 프리차지하고 워드라인을 켜면 트랜지스터가 있는 열만 방전된다. 부트 코드, 마이크로코드, 상수 표에 쓰인다. 구조는 CAM의 매치라인과 마찬가지로 동적 NOR다.

저전압 SRAM과 수율

전력을 줄이는 가장 강력한 방법은 \(V_{DD}\)를 낮추는 것이다(15장). 로직은 0.5 V 아래에서도 느리게나마 돌지만, SRAM은 보통 그보다 훨씬 먼저 실패한다. 칩이 정상 동작하는 가장 낮은 전압을 Vmin이라 하는데, 많은 SoC에서 Vmin을 정하는 것은 로직이 아니라 SRAM이다. 이유는 SNM 시뮬레이터에서 이미 보았다. \(V_{DD}\)가 낮아지면 SNM이 줄고, 셀 사이의 Vt 불일치는 그대로다. 평균 셀은 멀쩡해도 수억 개 중 꼬리에 있는 몇 개가 실패한다.

$$ P_{fail} = Q\!\left(\frac{\mu_{SNM}}{\sigma_{SNM}}\right), \qquad \sigma_{SNM} \approx \left|\frac{\partial\,SNM}{\partial\,\Delta V_t}\right| \sigma_{\Delta V_t}, \qquad Y = (1-P_{fail})^{N_{bit}} $$
Q(x): 표준 정규 분포의 위 꼬리 확률. \(\sigma_{\Delta V_t} \approx \sqrt{2}\,\sigma_{V_t}\)(두 쪽 트랜지스터의 차). 1 Mb 배열이 99% 수율을 내려면 \(P_{fail}\) ≲ 1e-8, 곧 μ/σ ≳ 5.6이 필요하다. 그래서 SRAM 설계는 "6시그마" 언어로 이야기한다. 실제로는 여분 행·열(리던던시)과 ECC가 몇 개의 실패 셀을 구해 준다.
배열 크기
6T 읽기 μ/σ—
6T 셀 실패 확률—
배열 수율 (6T / 8T)—
6T Vmin (수율 99%)—
해 보기세로축(로그)은 셀 하나가 읽기 중 뒤집힐 확률, 가로축은 \(V_{DD}\)다. 실선은 6T 셀의 읽기 SNM, 점선은 읽기 경로가 분리된 8T 셀(읽기 중에도 유지 SNM을 지킨다)로 계산했다. 가로 점선은 고른 배열 크기에서 99% 수율에 필요한 실패 확률이다. σVt를 키우거나 배열을 키우면 6T의 Vmin이 오른쪽으로 밀린다. SNM과 그 민감도는 앞의 나비 곡선 모델(β = 2)에서 직접 계산했고, 분포는 정규 근사다. 8T의 Vmin은 실제로는 쓰기 마진과 유지 안정성이 정한다.

저전압에서 SRAM을 살리는 길은 크게 둘이다. 하나는 셀을 바꾸는 것이다. 8T 셀은 6T에 읽기 전용 트랜지스터 2개(저장 노드를 게이트로 보는 nMOS + 읽기 워드라인 nMOS)를 붙여 읽기 경로를 저장 노드에서 떼어 낸다. 읽기 비트라인이 셀 노드에 직접 닿지 않으니 읽기 교란이 사라지고, 셀은 읽는 중에도 유지 SNM을 누린다. 위의 레지스터 파일 그림에서 R = 1, W = 1이 바로 8T 셀이다. 대가는 약 30% 큰 면적과 단일 선 읽기다. 그래서 8T는 낮은 전압에서 돌아야 하는 L1 캐시나 레지스터 파일에, 6T는 밀도가 중요한 큰 캐시에 쓰는 식으로 나눈다.

다른 하나는 셀은 그대로 두고 주변 회로로 돕는 것, 곧 어시스트 회로(Assist circuits)다.

VDD를 0.1 V 낮추면 실패 확률은?

σVt = 25 mV, \(V_{DD}\) = 0.6 V에서 0.5 V로 낮추면 6T 셀 실패 확률은 대략 몇 배가 될까? 2배? 10배? 그보다 훨씬 더?

답 보기

그림에서 직접 확인해 보면 μ/σ가 약 5.6에서 4.9로, 0.7σ쯤 줄어든다. 정규 분포의 꼬리에서 이 차이는 확률로 수십 배다(5.6σ ≈ 1e-8, 4.9σ ≈ 5e-7). 평균 읽기 SNM은 겨우 13% 줄었는데 실패 확률은 한 자릿수 넘게 뛰고, 1 Mb 배열 수율은 99%에서 약 55%로 떨어진다. 수율이 "평균"이 아니라 "꼬리"로 정해지기 때문이다. 이것이 SRAM이 전압 미세화를 가장 먼저 멈추게 하는 이유다. 변동과 몬테카를로는 16장에서 더 다룬다.

실제 수치: 비트셀 면적과 캐시 용량

오랫동안 SRAM 비트셀 면적은 공정 세대마다 약 절반씩 줄었고, 파운드리는 새 공정을 발표할 때 고밀도 SRAM 셀 면적을 가장 먼저 내세웠다. 그런데 5 nm급 이후 그 곡선이 거의 평평해졌다. 로직 밀도는 계속 늘었지만 SRAM 셀은 0.02 µm² 근처에서 머물렀다. 핀 하나짜리 트랜지스터를 더 좁게 늘어놓기 어렵고, 크기가 줄수록 Vt 변동이 커져 앞 절의 수율을 맞추기 어렵기 때문이다. 아래 표는 공개 발표의 대략값이다.

공정 (대략 양산 연도)고밀도 6T 셀 면적이전 세대 대비비고
90 nm (~2004)약 1.0 µm²—평면 트랜지스터
65 nm (~2006)약 0.57 µm²×0.57
45 nm (~2008)약 0.35 µm²×0.61High-k 금속 게이트
32 nm (~2010)약 0.17 µm²×0.49
22 nm (~2012)약 0.09 µm²×0.54첫 FinFET 세대
14 nm (~2014)약 0.06 µm²×0.64
7 nm급 (~2018)약 0.027 µm²×0.45DG-7이 흉내 내는 세대
5 nm급 (~2020)약 0.021 µm²×0.78감소 폭이 줄기 시작
3 nm급 (~2022–23)약 0.020–0.021 µm²≈×1.0사실상 정체
2 nm급 GAA (~2025)약 0.0175 µm²×0.85나노시트로 약간 회복

0.021 µm² 셀이면 1 MB(8 Mb) 배열의 셀만 약 0.18 mm²다. 디코더·센스 앰프·리던던시 같은 주변 회로까지 넣으면 배열 효율이 60~70%여서 실제로는 그보다 1.5배쯤 크다. 그럼에도 칩에 넣는 SRAM은 계속 늘고 있다.

제품 (연도)온칩 SRAM 캐시메모
스마트폰 SoC 프라임 코어 (~2024)L2 약 1~2 MB/코어, 시스템 캐시 약 8~32 MB코어 하나보다 캐시 면적이 큰 경우도 많다
데이터센터 GPU (~2022)L2 약 50 MB레지스터 파일만 수십 MB
3D 적층 캐시 데스크톱 CPU (~2022)L3 약 96 MBSRAM 다이 약 64 MB를 위에 쌓음
3D 적층 캐시 서버 CPU (~2023)L3 약 1.1 GBSRAM이 로직보다 잘 안 줄자 SRAM만 오래된 공정 다이로 떼어 쌓는 흐름

SRAM이 로직만큼 줄지 않자, 큰 캐시를 따로 덜 비싼 공정의 다이에 만들어 쌓는 방식이 늘고 있다. 캐시를 어떤 계층으로 얼마나 둘지는 아키텍처의 문제로 SoCBook의 캐시 장이, 칩 밖의 큰 메모리(DRAM·HBM)와 비휘발성 메모리는 MemoryBook이 다룬다.

SRAM 말고 다른 선택지?

eDRAM(로직 공정 안의 DRAM), MRAM(자기 터널 접합) 같은 내장 메모리는 셀이 SRAM보다 작지만 공정 단계가 늘고, 속도나 쓰기 에너지·내구성에서 손해가 있다. 일부 제품의 마지막 단계 캐시나 비휘발성 저장에 쓰인다. 소자 원리는 DeviceBook, 공정은 ProcessBook을 보자.

핵심 정리

  1. 메모리 배열은 행 디코더가 워드라인 하나를 켜고, 열 MUX가 그 행의 여러 열 중 워드를 골라 센스 앰프·쓰기 드라이버에 잇는 구조다. 선택된 행의 나머지 셀도 반쯤 선택되어 읽힌다.
  2. 6T 셀은 교차 결합 인버터와 nMOS 접근 트랜지스터 2개다. 유지는 WL = 0, 읽기는 프리차지된 BL·BLB의 작은 차, 쓰기는 BL을 강하게 몰아 뒤집는다.
  3. 정적 잡음 여유는 나비 곡선의 작은 쪽 눈에 들어가는 최대 정사각형의 한 변이다. 읽기 중에는 0 노드가 떠올라(읽기 교란) SNM이 크게 줄어든다.
  4. 크기 순서는 풀다운 > 접근 > 풀업. β(풀다운/접근)는 읽기 안정성을, γ(풀업/접근)를 작게 하는 것은 쓰기 능력을 지킨다. FinFET 셀은 비율이 핀 수로 묶여 어시스트 회로에 기댄다.
  5. 읽기는 비트라인을 끝까지 내리지 않는다. \(\Delta V = I_{cell}t/C_{BL}\)이 센스 앰프 오프셋을 넘는 순간 래치형 센스 앰프가 증폭한다. 큰 메모리는 \(C_{BL}\)을 줄이려고 뱅크로 쪼갠다.
  6. 디코더는 가지치기·전기적 노력이 큰 경로라 미리 디코딩과 워드라인 드라이버 사슬로 단당 노력을 맞춘다.
  7. SRAM 수율은 평균이 아니라 수억 개 셀 분포의 꼬리(5~6σ)가 정한다. 그래서 SRAM이 칩의 Vmin을 정하고, 8T 셀·어시스트·이중 전원으로 이를 푼다. 비트셀 면적은 5 nm급 이후 약 0.02 µm²에서 거의 멈췄다.

확인 퀴즈

Q1. 6T SRAM 셀에서 읽기 중 내용이 뒤집히는 읽기 교란을 막으려면 어떤 두 트랜지스터의 세기 관계가 가장 중요한가?

읽기 중 0 노드는 BL에서 접근 트랜지스터로 들어오는 전류와 풀다운이 빼는 전류의 분배로 정해진다. 풀다운이 강할수록(β가 클수록) \(V_{read}\)가 낮아 반대 인버터를 건드리지 않는다.

Q2. 나비 곡선에서 SNM을 정하는 것은?

잡음이 어느 방향으로 오든 한쪽 눈이 먼저 닫히면 그 상태가 사라진다. 그래서 작은 눈이 셀의 강도를 정한다. Vt 불일치는 한쪽 눈을 줄이므로 늘 손해다.

Q3. 열당 512행, 셀당 0.1 fF(고정분 무시), 셀 전류 25 µA일 때 비트라인에 50 mV 차가 생기는 데 걸리는 시간은 대략?

\(C_{BL}\) = 512 × 0.1 fF ≈ 51 fF. \(t = C\Delta V/I\) = 51e-15 × 0.05 / 25e-6 ≈ 1.0e-10 s = 100 ps.

Q4. 쓰기가 실패하는 셀을 살리는 쓰기 어시스트로 알맞지 않은 것은?

쓰기는 접근 트랜지스터가 풀업을 이겨야 성공한다. 풀업을 넓히면 γ가 커져 쓰기가 더 어려워진다. 나머지 셋은 접근을 강하게 하거나 풀업을 약하게 한다.

Q5. 8T SRAM 셀이 저전압에서 6T보다 유리한 가장 큰 이유는?

8T는 저장 노드를 게이트로만 보는 읽기 스택을 따로 둔다. 읽기 중에도 셀은 유지 SNM을 가지므로 읽기 SNM이 Vmin을 정하지 않는다. 대신 면적이 크고 읽기는 단일 선이다.

Q6. 셀 실패 확률이 1e-6에서 1e-9로 줄면, 1 Mb(약 1.05×10⁶ 비트) 배열의 수율(리던던시 없음)은 대략 어떻게 바뀌는가?

\(Y = (1-p)^N \approx e^{-pN}\). p = 1e-6이면 e^(−1.05) ≈ 0.35, p = 1e-9이면 e^(−0.001) ≈ 0.999. 셀 확률이 세 자릿수 좋아져야 배열이 제대로 나온다.