兩個反相器的對視較量
想像兩個人面對面,各自對對方低語:「不管你剛說什麼,我都說相反的。」第一個說「高」,第二個答「低」,這又繞回去再次確認「高」。這段對話自洽、永不停止。這條無盡、自我強化的迴路,正是交叉耦合反相器對所做的事——也是每一個 SRAM 位元細胞的核心。
CMOS 反相器其實就是兩顆 MOSFET:當輸入為低時,PMOS 上拉把輸出接到 VDD;當輸入為高時,NMOS 下拉把輸出接到地。把反相器 A 的輸出接到 B 的輸入、B 的輸出再接回 A 的輸入,你就得到一個有兩個穩態的鎖存器(latch)。要嘛 A 的輸出為高、B 的為低,要嘛反過來。沒有第三種選項,而且關鍵在於——中間任何狀態都不穩定。
VDD VDD
| |
[ PL ] [ PR ] <- PMOS pull-ups
| |
Q ----+----. .----+---- QB
| \ / |
| `-----' | <- cross-coupling wires
| .' `. |
[ NL ] [ NR ] <- NMOS pull-downs
| |
GND GND
Q holds the bit (say '1' = high)
QB holds its complement ('0' = low)加上兩道門:存取電晶體與字元線
一個沒人能對話的鎖存器毫無用處。為了讀寫細胞,我們再加兩顆 NMOS 電晶體——也就是存取電晶體(access transistor)——每個儲存節點各接一顆。它們的閘極綁在一起接到字元線(WL)。另一端則接到一對垂直走線,也就是位元線 BL 與 BLB。兩個反相器(四顆電晶體)加上兩顆存取電晶體共六顆——所以叫 6T。
WL (wordline) ________________|________________ | | [AL] access [AR] access | transistor | transistor | | Q o----[ inverter pair ]----o QB | | | | BL BLB (bitline) (bitline-bar) WL = 0 -> AL, AR OFF -> cell isolated, holds its bit (HOLD) WL = 1 -> AL, AR ON -> Q/QB connected to BL/BLB (ACCESS)
這裡有一個優雅的分工。當字元線為低時,存取電晶體關閉,細胞與外界隔絕,反相器迴路安靜地保存它的位元。這是「保持」(hold)狀態——細胞 99.99% 的時間都待在這裡。當字元線轉為高時,兩道門同時打開,儲存節點便暴露在位元線上。此時——且僅在此時——外界才能讀出裡面的值,或強行寫入新值。
讀取卻不破壞它
讀取 SRAM 細胞是一個精細的動作,因為「觀看」這個行為本身可能改變你所看的對象。流程如下。首先,兩條位元線都預充電(precharge)到 VDD 後讓它們浮接——把它們想成兩個裝到滿的水桶。接著字元線升起,打開存取電晶體。在細胞存 0 的那一側,位元線現在有一條經由存取電晶體與下拉 NMOS 通往地的放電路徑。那條位元線會慢慢下垂,另一條則維持高位。感測放大器(第五階的主題)偵測這微小的電壓差——通常只有 50–100 mV——並把它放大成乾淨的邏輯位準。
但危險就在這裡。存 0 那一側的位元線剛被預充電到 VDD。當字元線打開時,那條高位的位元線會試圖經由存取電晶體把內部的 0 節點往上拉。若內部節點升得太高——超過了對面反相器的切換臨界——細胞就會翻轉,你便剛好摧毀了你正想讀取的那個位元。這叫做讀取擾動(read disturb),避免它正是這顆細胞最核心的平衡課題。
防禦之道就是尺寸。我們把下拉 NMOS 做得比存取電晶體更強,這樣在讀取時它能贏得這場拔河,把內部的 0 節點牢牢壓在接近地的位置。下拉強度對存取強度的比值稱為細胞比(cell ratio,或 β 比)。典型值約在 1.5–2.5。細胞比愈大,讀取愈安全——但細胞也愈大、愈慢。
READ of a cell holding Q=1, QB=0
Step 0 Precharge: BL = VDD, BLB = VDD (both high)
Step 1 WL -> 1: access transistors ON
BL side (Q=1): no discharge path -> BL stays ~VDD
BLB side (QB=0): path to GND -> BLB droops
Step 2 Sense: V(BL) - V(BLB) ~ +60 mV -> read '1'
DANGER on the QB side:
BLB(=VDD) pushes charge onto QB(=0) node
If QB climbs past V_trip of the left inverter -> FLIP!
Guard: make pull-down NMOS stronger than access NMOS
cell ratio CR = (W/L)_pulldown / (W/L)_access >= ~1.5寫入:刻意逼它翻轉
寫入是讀取的鏡像,並揭示了一種美妙的張力。讀取時我們奮力阻止細胞翻轉;寫入時我們希望它翻轉——但只翻我們選中的那一顆,且每次都可靠地翻。我們要如何壓倒一個正主動保持其值的鎖存器?答案是巧妙施加的蠻力。
要把 0 寫入一個目前存著 1(Q=1, QB=0)的細胞,寫入驅動器把 BL 位元線狠狠拉到地,同時讓 BLB 維持高位。字元線打開,現在 BL 奮力把內部 Q 節點(停在 VDD)往下拉。存取電晶體能傳遞強 0,因此它能把 Q 拉下——前提是存取電晶體比那顆試圖把 Q 撐在高位的 PMOS 上拉更強。一旦 Q 跌破右側反相器的切換點,再生迴路便接手,把細胞猛地推進新狀態,自行完成翻轉。
這帶出第二條尺寸規則。要讓寫入成功,存取電晶體必須能壓倒 PMOS 上拉。所以我們把上拉做得弱。上拉強度對存取強度的比值就是上拉比(pull-up ratio,PR),我們希望它小——通常 0.5 或更小。上拉之所以做弱,也正是為何那些存取電晶體不必做得很大:它們只需贏過一顆刻意做弱的 PMOS。
實例演練:對同一顆細胞讀與寫
讓我們用一顆細胞、連續兩個動作把這份停戰協議講具體。假設細胞存著 Q=1, QB=0。我們先讀它,再把 0 寫進去,看看同一顆存取電晶體如何必須表現出不同行為——輸掉一場拔河、又贏下另一場。
- 讀取。 預充電 BL=BLB=VDD,拉高 WL。在 QB=0 那一側,存取電晶體與下拉 NMOS 在高位位元線與地之間形成分壓。下拉(細胞比約 2)是較強的元件,所以 QB 節點只微微上抬一點點——遠在切換點之下。細胞存活;BLB 下垂,感測放大器讀出「1」。
- 為何沒翻。 當細胞比 CR ≈ 2,分壓把內部 0 節點維持在大約 VDD/(1+CR) ≈ 0.33·VDD。對 1.0 V 供電而言約 0.33 V,安穩地落在反相器約 0.5 V 切換點之下。還有餘裕。
- 寫入 0。 現在寫入驅動器把 BL 一路拉到 0 V(BLB 維持高位)。拉高 WL。這次 Q 側的存取電晶體把內部 Q 節點(在 VDD)連到一條接地的位元線。
- 翻轉。 Q 現在透過存取 NMOS 被往下拉,對抗 PMOS 上拉。因為上拉比 PR ≈ 0.5,存取電晶體獲勝:Q 跌破切換點,左側反相器開始把 QB 推高,QB 回饋並關掉撐住 Q 的 PMOS——迴路再生,細胞安定在 Q=0, QB=1。
- 同一顆電晶體,兩種角色。 讀取時它輸了(被保持得比下拉弱 → 細胞比)。寫入時它贏了(被保持得比上拉強 → 上拉比)。這兩件事能同時成立,唯獨因為下拉強、且上拉弱。
Numbers for a ~1.0 V cell (illustrative)
Devices (W/L, relative strength):
pull-down NMOS strong (ratio 2)
access NMOS medium (ratio 1) <- pivot device
pull-up PMOS weak (ratio 0.5)
Cell ratio CR = pulldown/access = 2.0 -> read-safe
Pull-up ratio PR = pullup/access = 0.5 -> write-able
READ : internal 0-node rises to ~VDD/(1+CR) = 0.33 V < V_trip (~0.5 V) OK, no flip
WRITE0: access (str 1) vs pull-up (str 0.5) -> access wins -> Q dragged to 0 FLIP
Squeeze: CR large (read) AND PR small (write)
=> pull-down >> access >> pull-up為何是六顆?最小抉擇的經濟學
你也許會問,為何不像 DRAM 那樣每個位元只用一顆電晶體。答案是速度、簡潔與矽面積之間的取捨。DRAM 把位元存成微小電容上的電荷——一顆電晶體、一顆電容——所以密度高得多。但那電荷會漏,因此 DRAM 必須每秒更新數千次,而且較慢。SRAM 的六顆電晶體要付出面積,卻買來珍貴的東西:一個不需更新、能自我保持的位元,能在不到一奈秒內被讀寫,並且用的是與周圍處理器完全相同的 CMOS 邏輯——所以它能愉快地住在晶片上。
這就是為何 SRAM 是晶片上的主力:它構成緊貼 CPU 執行單元、僅幾奈米之遙的快取,構成暫存器檔案,構成路由器內的查找表。一顆現代處理器可能把一半的晶粒面積花在 SRAM 上。每顆細胞都以一種超級優化、近乎打破規則的形狀(所謂「薄細胞」thin cell)佈局,晶圓廠一個製程節點接一個節點地打磨它——因為對一個要複製十億次的結構省下幾個百分點,值得投入巨大的工程心力。