CMOS是什麼?組合nMOS與pMOS來省電的原理
CMOS是把nMOS和pMOS這2種電晶體配成一組來製作電路的方式。這2種電晶體會因相反的訊號而導通,所以其中一個一定是關閉的。因此在輸出不變的期間,幾乎沒有電流從電源直接流過去。由於這種省電的特性,CPU、記憶體等大多數的數位晶片,都是用CMOS製作的。
這篇文章可以了解
- nMOS和pMOS是「因相反訊號而接通的開關」
- 把2個配成一組的NOT閘(反相器)如何動作,以及靜止時幾乎不耗電的理由
- 即使如此仍會耗電的3種情況(每次切換時的充電與放電、漏電、一瞬間的直接穿過)
- 大多數數位晶片採用CMOS的理由,以及從1963年開始的歷史
- 和電腦設定中的「CMOS」、相機的「CMOS感測器」有什麼關係
先備知識:知道「電晶體是用電來切換的開關」和「電腦把電壓的高、低當成1和0」這2件事。詳細說明請看「電晶體是什麼?」。
生活中的例子:數十億個開關與電池
高效能的手機晶片裡,有超過100億個電晶體。2023年iPhone用的「A17 Pro」,約有190億個。如果每一個在什麼都不做的時候,也一直讓電流流過,會怎麼樣呢?電流加起來會很大,電池很快就沒電,晶片也會變熱。
實際上並不會這樣。原因之一,就是CMOS這種電路的做法。本文會依序說明CMOS為什麼能省電,以及即使如此,它還會在哪裡耗電。
另外,這裡說的「反相器」,是把0和1反過來的小電路。它和冷氣等家電裡的「逆變器」(改變電的形式的裝置)是不同的東西,只是兩者的英文都叫inverter。
原理①:因相反訊號而接通的2種開關
晶片中的電晶體,是用電的訊號把電流的通路接通或切斷的開關。接收訊號的部分稱為閘極。加在閘極上的電壓是高還是低,決定了開關的切換。
這種開關有動作正好相反的2種。一種是閘極電壓高,也就是1的時候接通的nMOS。另一種是電壓低,也就是0的時候接通的pMOS。
對兩者同時送出相同的訊號,一個會接通,另一個一定切斷。CMOS就是利用這種「正好相反」的方式。開頭的C是英文Complementary(互補)的縮寫,意思是「互相補足」。
為了讓說明簡單,這裡把兩者當成只會「接通、切斷」的開關。內部原理的差異,可以在比較頁「nMOS與pMOS的差異」中閱讀。
原理②:配成一組就成為NOT閘
最簡單的CMOS電路,是把pMOS和nMOS各1個上下排列。上面的pMOS接到電源的+端,下面的nMOS接到0 V端。2個閘極輸入相同的訊號,再從兩者之間取出輸出。
輸入為0時,上面的pMOS接通,下面的nMOS切斷。輸出和電源的+端相連,變成1。輸入為1時則相反,輸出和0 V端相連,變成0。
這個電路會輸出和輸入相反的值,所以稱為NOT閘,或反相器(把值反過來的東西)。依固定規則處理0和1的一個電路單位,稱為邏輯閘。種類和規則在「邏輯閘是什麼?」中說明。
這裡的重點是:不論輸出是0還是1,上下其中一個一定是切斷的。從電源的+端到0 V端,不會形成讓電流直接穿過的通路。
原理③:靜止時幾乎不耗電的理由
在CMOS普及之前的1970年代,電腦用晶片的主流,是只用nMOS製作的方式。這種方式會在輸出和電源+端之間,放一個一直讓電流通過的零件。那是電阻(讓電流不容易流動的零件),或是代替電阻的電晶體。
輸入為1、nMOS接通時,輸出變成0。但這時電流會從電源+端,經過電阻和nMOS,持續流向0 V端。只要輸出維持在0,就算什麼都沒在計算,電流也一直在流。
晶片上排列著數萬、數百萬個這樣的邏輯閘。只用nMOS的方式,其中輸出為0的邏輯閘,在靜止時也一直耗電。如果是CMOS,維持輸出時的電流幾乎是零。說「幾乎」,是因為有後面會說明的漏電。
原理④:即使如此仍會耗電的3種情況
每次切換時的充電與放電
輸出的後面,連接著下一個邏輯閘的輸入和配線。這些東西有儲存少量電荷的性質,這種性質稱為電容。它的作用和儲存電的零件相同(「電容器是什麼?」)。
輸出從0變成1時,電流從電源經過pMOS,流進配線等的電容。這稱為充電。輸出從1變成0時,儲存的電荷經過nMOS,流向0 V端。這就是放電。每次電流流動時,那些能量主要在電晶體中變成熱。
也就是說,CMOS主要依「0和1互換的次數」耗電。CPU配合像時鐘一樣、每秒跳動數十億次的訊號動作。在這樣的CPU中,這部分的電力在很多情況下占了很大的比例。這種切換時使用的電力,稱為動態功耗。
降低電壓,效果很好
1次充電儲存的電荷量,和電源電壓成正比。而把電荷推出去的力道也是電壓。所以電壓減半時,1次切換使用的能量是一半的一半,也就是4分之1。
寫成公式,切換的電力是「切換的比例 × 電容 × 電壓的平方 × 每秒的訊號次數」。用符號寫成 P = αCV²f。想代入數字試試看的人,可以使用CMOS功耗計算工具。
把電晶體和配線做小,電容也會變小。這是晶片世代進步後,1次切換的能量會減少的理由之一(「「2奈米」「3奈米」是什麼的長度?」)。
關閉時也會漏一點
理想的開關在切斷時,完全不讓電流通過。實際的電晶體即使切斷,也會漏出極少量的電流。因為這種漏電,在靜止時也持續消耗的電力,稱為靜態功耗。
電晶體越小,漏電越容易增加,溫度上升時也會增加。因此,現在的晶片會下各種工夫,例如把沒在使用的部分整個斷電。2種電力的差異,可以在比較頁「靜態功耗與動態功耗的差異」中閱讀。
切換的一瞬間,兩邊都會接通
輸入的電壓不是一瞬間從0變成1,而是花一點時間上升。在途中的電壓,pMOS和nMOS會同時處於稍微接通的狀態。只有在這段短暫的時間,電流會從電源直接穿過,流到0 V端。這稱為貫穿電流,通常比充電和放電的電力小。
NAND也用同樣的想法製作
輸入有2個以上的邏輯閘,也能用同樣的想法製作。讓輸出變成1的上方通路用pMOS組成,讓輸出變成0的下方通路用nMOS組成。並且讓其中一條通路接通時,另一條一定切斷。
例如2輸入的NAND閘,是「只有兩個都是1時才輸出0」的電路。下方通路把2個nMOS排成一列(串聯),上方通路把2個pMOS並排(並聯)。兩個都是1時,下方通路接通;任一個是0時,上方通路接通。共使用4個電晶體。
不論哪種輸入,上下都不會同時接通。因此NAND閘在靜止時的電力也幾乎是零。組合邏輯閘來做加法的原理,在「電腦怎麼用0和1計算?」中說明。
為什麼大多數晶片都是CMOS?
第1個理由,是前面看到的低耗電。1個晶片裡塞進數十億個電晶體,即使每個只有一點點電流,加起來也會變成很大的電力和熱。靜止時幾乎不用電流的CMOS,是容易增加1個晶片(積體電路)上電晶體數量的方式。
第2個理由,是0和1很分明。CMOS的輸出,會確實地連到電源+端或0 V端的其中一端。只用nMOS的方式,0的電壓由上方電阻和下方nMOS「拔河」決定,所以不會剛好是0 V。0和1的電壓差越大,配線上有雜訊時越不容易讀錯(這個餘裕稱為雜訊邊限)。
第3個理由,是能用同一種做法,把各種電路放進1個晶片。計算的電路、CPU裡又小又快的記憶體、DRAM和快閃記憶體周邊的電路,都能用CMOS製作。相機的影像感測器也用同樣的技術,將光轉成電的像素和讀出電路,整合在1個晶片上。
另一方面,處理大電力的零件等,也會使用其他種類的電晶體(「功率半導體是什麼?」)。
歷史:從1963年的發明到成為主角
CMOS在1963年,誕生於美國快捷(Fairchild)公司的研究所。法蘭克·萬拉斯(Frank Wanlass)和薩支唐(C. T. Sah)在學會論文中,發表了把nMOS和pMOS配成一組的電路。萬拉斯在同一年1963年的6月申請專利,1967年12月取得美國專利。
不過,早期的CMOS在性能上有弱點,沒有馬上普及。投入製造的是美國的RCA公司,最先為太空與航空設備製作。1968年,RCA推出了通用邏輯IC「CD4000」系列的第一款產品(根據電腦歷史博物館的說明)。
1970年代的電腦用晶片,如原理③所見,主流是速度較快、只用nMOS的方式。CMOS主要用在鐘錶等特別重視低耗電的用途。改變潮流的例子之一,是日立在1978年發表的高速CMOS記憶體(後來的產品「HM6147」)。它用少得多的電流,達到和英特爾高速nMOS記憶體「2147」相同的速度(根據日本半導體歷史館的說明)。
| 年 | 事件 |
|---|---|
| 1963年 | 快捷的萬拉斯和薩支唐發表CMOS。萬拉斯申請專利 |
| 1967年 | CMOS的美國專利(第3,356,858號)成立 |
| 1968年 | RCA推出邏輯IC「CD4000」系列的第一款產品 |
| 1978年 | 日立發表和nMOS記憶體一樣快的高速CMOS記憶體 |
| 之後 | CMOS也逐漸擴展到微處理器、DRAM等 |
根據日本半導體歷史館的說明,在日立的記憶體之後,CMOS也擴展到了微處理器、DRAM等。現在,進行計算的晶片大多是CMOS。
常見的誤解
誤解:CMOS是在電晶體導通的期間耗電
實際上,主要是在輸出「切換的時候」耗電。即使有導通的電晶體,只要後面的通路被另一個切斷的電晶體堵住,電流就不會持續流動。這是從電燈那種「開著的期間一直用電」的印象,容易產生的誤解。靜止時使用的,只有漏電的部分。
誤解:電腦設定畫面中的「CMOS」,指的是CPU的製作方式
實際上,它指的是一個小記憶體,在關掉電源後,仍能保存BIOS(開機時最先執行的程式)的設定和日期、時間。以前的電腦在這裡使用低耗電的CMOS晶片(例如摩托羅拉的MC146818A),並用鈕扣電池保存內容。現在它已成為另一顆大晶片的一部分,但這顆電池至今仍稱為「CMOS電池」。「清除CMOS」是把設定恢復成初始狀態的操作,和CPU的電路無關。
誤解:「CMOS感測器」的CMOS,是相機專用零件的名稱
實際上,意思是用CMOS的做法製作的影像感測器。因為能使用和CPU等同一類的製造技術,容易把讀出和處理的電路整合在同一個晶片上,也能降低耗電。它稱為CMOS 影像感測器。和以前就有的CCD方式的差異,可以在「CMOS 影像感測器與CCD的差異」中比較。
從數字來看
| 數字 | 意義 |
|---|---|
| 2個 | CMOS的NOT閘使用的電晶體(pMOS和nMOS各1個) |
| 4個 | CMOS的2輸入NAND閘使用的電晶體 |
| 4分之1 | 電源電壓減半時,1次切換使用的能量 |
| 最大20 µA | CMOS的IC「74HC00」(內含4個NAND閘)的電源電流。輸入固定在電源電壓或0 V、輸出什麼都不接的時候(電源6 V、最高85 °C。德州儀器的資料手冊) |
| 約15 mA與約110 mA | 1978年日立的CMOS記憶體,和同樣速度的英特爾nMOS記憶體「2147」的電流(日本半導體歷史館說明中的數值) |
µA(微安培)是100萬分之1安培,mA(毫安培)是1000分之1安培。74HC00的20 µA,是4個閘合計的上限。日立記憶體的電流,約為7分之1(本站的計算)。
進一步學習
- 用圖來看:在圖解「CMOS反相器」中,可以確認NOT閘的電晶體排列。
- 用表格看差異:「CMOS與TTL的差異」(邏輯IC的2種方式)、「時脈閘控與電源閘控的差異」(為了省電而停止電路的方法)
- 動手試試:邏輯電路模擬器(排列NOT和NAND,讓它們動作)
- 下一步的用語:臨界電壓(開關導通的電壓分界)、DVFS(動態電壓頻率調整),也就是配合工作量改變電壓和速度的做法
- 需要注意的現象:閂鎖效應(在CMOS中意外形成的通路,持續流過大電流的故障)
- 繼續閱讀:電力變成熱之後的事,請看「晶片怎麼散熱?」;配線的電容如何決定速度,請看「時間常數RC是什麼?」。