時間常數RC是什麼?決定導線延遲與時脈速度的原理
時間常數(τ = RC)表示透過電阻R替電容器C充電的快慢。只要把電阻和電容相乘就能求出。電壓經過τ會達到最終值的約63%,經過5τ約達99%。晶片中的訊號,也是由電晶體替下一個電路和導線充電來傳遞。因此RC大大左右時脈速度的極限和導線的延遲。
這篇文章可以了解
- 晶片中的電壓,為什麼無法瞬間切換
- 時間常數τ = RC的意思,以及63%、2.2τ、5τ這些數字
- RC如何決定時脈速度的極限
- 長導線的延遲為什麼隨長度的平方增加,以及對策
先備知識:電壓、電流、電阻的大致意思(國中理化的程度)。知道電晶體是電的開關(「電晶體是什麼?」)。
生活中的例子
電腦和手機的CPU,常標有「3 GHz」這樣的數字。意思是讓電路步調一致的訊號(時脈),1秒跳動30億次。每一次只有約0.33奈秒(奈是十億分之一)。
在這麼短的時間內,代表0和1的電壓必須在晶片中接連切換。但是電壓並不會在打開開關的瞬間就立刻改變,而是要花一點時間,平緩地上升。
決定這個平緩程度的,是電阻和電容。兩者相乘的值,稱為時間常數。晶片速度的極限、長導線的延遲、讀取按鈕有沒有按下,都能用同樣的想法說明。
原理1:晶片中的「電阻」與「電容」
電阻是電流流動的困難程度,單位是Ω(歐姆)。金屬線越細越長,電阻就越大。
把兩片金屬板夾著薄薄的絕緣物相對擺放,就能儲存電荷。這種元件稱為電容器。加上電壓後,一片板子會累積正電荷,另一片累積負電荷。
表示儲存電荷難易程度的量,稱為靜電容量(以下簡稱電容),單位是F(法拉)。板子越大、中間的絕緣物越薄,電容就越大。電容大的話,要達到同樣的電壓就需要很多電荷。
晶片中就算沒有放電容器這種元件,到處也都有電容。電晶體的閘極(開關電流的電極),是導體疊在薄絕緣膜上的形狀,本身就是一個小電容器。導線也隔著絕緣膜,與旁邊的導線和上下層相對,所以也有電容。
另一方面,導通的電晶體和導線的金屬都有電阻。也就是說,晶片中的訊號,都是靠「透過電阻替電容充電」來改變電壓。從0切換到1是充電,從1切換到0是放電(CMOS反相器的圖解)。
原理2:一開始充得快,之後越來越慢
想像把電池接上電阻和電容器,剛開始充電的時候。一開始電容器的電壓是0,與電池的電壓差最大,所以會流進很多電流。
隨著充電,電容器的電壓上升,與電池的差距變小。差距越小,流進的電流也越少,所以電壓上升得越來越慢。電壓會越來越接近電池的電壓,但不會剛好相同。
像這樣,差距以和剩餘差距成正比的速度縮小,這種變化稱為指數變化。特徵是每經過一段固定時間,剩餘的差距就以相同比例減少。本文的數字,全都來自這個性質。
原理3:時間常數τ = RC
這種變化的快慢,只由電阻R乘以電容C的值決定。這稱為時間常數,用希臘字母τ(tau)表示。電阻大,流過的電流就少;電容大,就要儲存很多電荷。所以不論哪一個大,都會變慢。
計算Ω × F,單位會變成秒。電阻和電容相乘,就會得到時間。
舉例來說,用1 kΩ(1000 Ω)和1 pF(皮法拉,一兆分之一 F)計算。τ = 1000 × 10⁻¹²秒 = 10⁻⁹秒,也就是1奈秒。電阻變成10倍,或電容變成10倍,τ都會變成10倍的10奈秒。
經過τ,電壓會上升到最終值的約63%。因為每經過τ,剩餘的差距就縮小到約37%(正確來說是1/e,e是約2.718的數)。
| 開始充電後的時間 | 相對於最終值的電壓 |
|---|---|
| 約0.69τ | 50% |
| τ | 約63.2% |
| 2τ | 約86.5% |
| 3τ | 約95.0% |
| 5τ | 約99.3% |
電壓從最終值的10%上升到90%的時間,常稱為上升時間。這是為了去掉開始和結束時平緩的部分,只比較變化的快慢。RC電路的上升時間約為2.2τ(正確來說約2.197τ)。
數位電路通常以「輸入越過一半電壓」到「輸出越過一半」的時間,作為延遲來量測。這稱為傳播延遲。如果是一級RC電路,就是到達一半所需的約0.69τ。
在晶片中的作用1:電路替下一個電路充電
NOT、NAND這類負責運算的元件,稱為邏輯閘。邏輯閘的輸出,會對相連的下一個邏輯閘輸入充電、放電,來傳遞0和1。這時的電阻是導通的電晶體的電阻,電容則是下一個閘極和途中導線的電容總和。
以下數字只是說明用的例子。電阻10 kΩ、電容1 fF(飛法拉,千兆分之一 F)時,τ是10皮秒。到達一半約是其0.69倍,約7皮秒。輸出連接的閘越多,電容越大,也就越慢。
在一次時脈之內,訊號要依序通過好幾級邏輯閘和導線。結果必須在下一次時脈之前到達並穩定下來。5 GHz時一次是200皮秒,1 GHz時是1奈秒(建立時間與保持時間的圖解)。
因此,最慢那條路徑的延遲,決定時脈能快到什麼程度。這條路徑稱為關鍵路徑。設計時會把每條路徑的RC延遲加起來,確認是否來得及。
充電也會耗電。每次切換都要把電荷存進電容再放掉,所以電容越大、切換越頻繁,耗電就越多(動態功耗)。縮小電容,對速度和省電都有幫助。
在晶片中的作用2:導線越細,電阻越大
導線的電阻與長度成正比,與截面積成反比。寬度和厚度都減半,截面積就變成四分之一,同樣長度的電阻變成4倍。微縮讓導線越來越細,每1 mm的電阻就不斷增加。
在非常細的導線中,連金屬本身的導電難易度(電阻率)都會上升。這是因為銅導線的寬度細到數十nm以下時,電子撞上導線表面和晶界的次數會增加(銅、鈷、釕導線的差異)。
另一方面,導線每單位長度的電容不太會減少。變細之後與上下層相對的面積雖然減少,但與旁邊導線的間距也變窄了。結果,導線越細,同樣長度的RC就越大。
在晶片中的作用3:長導線的延遲隨長度的平方增加
長導線的電阻和電容,並不是集中在一個地方。導線的每一段,都有一點點電阻和電容。可以把它想成細小的電阻和電容器,像梯子一樣一級一級連接起來。這稱為分佈式RC線路。
導線長度變成2倍,電阻變2倍,電容也變2倍。延遲由兩者的乘積決定,所以是2 × 2 = 4倍。3倍的話就是9倍,延遲隨長度的平方增加。這和擴散距離隨時間的平方根增加,是同樣的形式(「擴散是什麼?」)。
梯子前端的電容,只透過前面一小段的電阻充電。所以延遲比整體電阻乘以整體電容的值小,到達一半約是其0.38倍。
設計估算時,也常用美國物理學家Elmore在1948年提出的Elmore延遲。梯狀導線的Elmore延遲是0.5倍,比實際到達一半的時間稍長。
用導線RC延遲計算器的預設值,算算看只有導線的延遲。寬50 nm、厚100 nm的銅導線,每1 mm的電阻是3.4 kΩ,電容是0.12 pF。電容是相當簡化的值,實際上會再大一些。
| 導線長度 | 到達一半的延遲 |
|---|---|
| 1 mm | 約150皮秒 |
| 2 mm | 約620皮秒(4倍) |
| 4 mm | 約2.5奈秒(16倍) |
4 mm導線的延遲,超過5 GHz時脈一次(200皮秒)的10倍。晶片從一端到另一端,通常有數mm以上。如果什麼都不做,長導線根本無法使用(導線 RC 延遲計算器)。
在晶片中的作用4:用中繼電路分段
既然延遲隨長度的平方增加,只要切成短段就好。所以在長導線的途中,放入接收訊號後重新送出的電路。這種電路稱為中繼器(repeater),內部是簡單的邏輯閘。
把4 mm的導線每1 mm切一段、分成4段,每段的延遲約150皮秒,4段合計約0.6奈秒。這是不分段時約2.5奈秒的四分之一。不過,每一段都會加上重新送出訊號的電路延遲,也會消耗電力和面積。
只要每段長度保持固定,導線變長也只是段數增加。因此延遲不再隨長度的平方增加,而是大致與長度成正比。中繼器的數量和大小,要權衡延遲與耗電來決定。
讓長導線走在上方又厚又寬的金屬層,也是常用的對策。截面積大,電阻就小。先進晶片的導線疊了10層以上,每層的粗細都不同(多層金屬導線)。
在晶片中的作用5:換材料,降低R和C
銅導線
要降低R,就用導電性更好的金屬。晶片的導線長期使用鋁,但IBM在1997年發表了用銅做導線的晶片製造技術。20 ℃時的電阻率,銅約1.7 µΩ·cm,鋁約2.7 µΩ·cm,銅低了將近4成。
銅過去長期無法實用。因為它容易滲入矽和絕緣膜中,損傷電晶體。於是用很薄的金屬膜包住銅,防止滲入。這層膜稱為阻障金屬。
銅也是很難用氣體蝕刻成形的金屬。所以改成先在絕緣膜挖出溝槽,填入銅之後,再把多餘的部分研磨掉。這種方法稱為鑲嵌製程(鑲嵌製程與蝕刻成形導線的差異)。
電容小的絕緣膜
要降低C,就把導線之間的絕緣膜,換成不容易儲存電荷的材料。這種儲存難易度用相對介電常數(k)表示,越小電容越小。長期使用的二氧化矽(SiO2),k約為4。
降低k的絕緣膜,稱為低介電常數材料(Low-k)。從2000年前後開始使用,含碳的氧化膜k約為3。加入細小孔洞、把k降到2.5左右的膜,也已用於產品。
不過孔洞越多,膜越脆,也越難製造。也有把導線之間一部分做成空洞的氣隙方法,因為空氣的k幾乎是1。
同樣的式子也出現在這些地方
RC濾波器
把電阻和電容器相接,取出電容器的電壓,緩慢的變化可以通過,快速的變化則不易通過。用這種方式去除細小雜訊的電路,稱為RC濾波器。通過與不通過的分界截止頻率,是1 ÷(2π × τ)。τ為1毫秒時,約159 Hz(RC 時間常數計算工具)。
讀取按鈕
按下機械式開關時,金屬接點會細微地彈跳,在極短時間內反覆導通和斷開好幾次。這稱為彈跳。嵌入式系統工程師Ganssle量測多個開關的例子中,彈跳時間平均約1.6毫秒。
如果直接讀取,微控制器會把按一次算成好幾次。所以先用電阻和電容器把變化撫平,再讀取。例如10 kΩ和1 µF時,τ是10毫秒,可以撫平彈跳期間的細小變化。也有用程式等待固定時間再重讀的方法(「微控制器(MCU)是什麼?」)。
接收端常使用施密特觸發器,這種電路即使輸入變化緩慢,輸出也不會來回跳動。
再進一步:邊振盪邊穩定的情況
加上線圈(阻礙電流變化的元件)的性質後,若電阻很小,電壓會衝過目標,邊振盪邊穩定下來。這和掛在彈簧上的重物的晃動很像。在晶片外的電源,以及電路板上高速訊號的走線,會成為問題。控制領域也會出現同樣形式的式子(PID控制步階響應模擬器)。
常見的誤解
誤解:電以光速傳遞,所以晶片的導線沒有延遲
實際上,在細導線中,延遲由充電所需的時間決定。電訊號的波在絕緣膜(SiO2)中的速度約為光速的一半,前進1 mm約需6.6皮秒,這是延遲的下限。但在上面例子的1 mm導線中,由RC決定的延遲約150皮秒,是20倍以上。以接近那個速度、以波的形式傳遞的,是電阻小的粗導體或纜線。
誤解:經過時間常數τ,電容器就充滿了
實際上,經過τ只有約63%。要5τ才約達99%,而且仍然不是100%。因為名稱中有「常數」,容易以為會在固定時間內結束。τ不是「結束所需的時間」,而是「變化快慢的尺度」。需要高精度讀取的電路,有時會等待超過5τ(7τ約99.9%)。
誤解:電晶體變小,導線也會一起變快
實際上,導線越細,每1 mm的電阻就越大,所以不會像電晶體那樣變快。短導線的長度也會縮短,延遲與閘極大致相同,或只是緩慢增加。但是橫越晶片的長導線,長度並不會縮短。即使加入中繼器,相對於越來越快的閘極,還是會變慢(Ho等人2001年的分析)。
從數字來看
| 例子 | 電阻 × 電容 | 時間常數、延遲 |
|---|---|---|
| 一級邏輯閘(說明用的例子) | 10 kΩ × 1 fF | τ = 10皮秒 |
| 銅導線1 mm(工具的預設值) | 3.4 kΩ × 0.12 pF | 到一半約150皮秒 |
| 讀取按鈕 | 10 kΩ × 1 µF | τ = 10毫秒 |
同樣的τ = RC想法,從皮秒到毫秒,用在相差10億倍的時間上。晶片中的R和C都非常小,所以是皮秒的等級。讀取按鈕時,則是刻意選用大的R和C。
進一步學習
- 用語:RC延遲 / 時脈偏斜 / STA(靜態時序分析) / 電遷移
- 用數字試試看:RC 時間常數計算工具 / 導線 RC 延遲計算器
- 用表格看差異:靜態功耗與動態功耗的差異
- 相關的解說:「擴散是什麼?」 / 「CPU是什麼?」 / 「「2奈米」「3奈米」是什麼的長度?」