CMOSとは? nMOSとpMOSを組み合わせて電力を節約するしくみ
CMOS(シーモス)は、正反対の合図でオンになる2種類のトランジスタ、nMOSとpMOSを組にして回路を作る方式です。どちらか一方が必ずオフになるので、出力が変わらない間は、電源から電流がほとんど流れ抜けません。この省電力のおかげで、CPUやメモリなど、ほとんどのデジタルのチップがCMOSで作られています。
この記事でわかること
- nMOSとpMOSが「逆の合図で入るスイッチ」であること
- 2つを組にしたNOTゲート(インバータ)の動きと、止まっている間に電力をほとんど使わない理由
- それでも電力を使う3つの場面(切り替えのたびの充電と放電、漏れ、一瞬の通り抜け)
- ほとんどのデジタルのチップがCMOSである理由と、1963年からの歴史
- パソコンの設定の「CMOS」や、カメラの「CMOSセンサー」との関係
前提知識: 「トランジスタは電気で切り替えるスイッチ」「コンピュータは電圧の高い・低いを1と0に見立てる」の2つ。くわしくは「トランジスタとは?」で説明しています。
身近なところでは: 何十億個のスイッチと電池
高性能なスマホのチップには、トランジスタが100億個以上入っています。2023年のiPhone用「A17 Pro」では、約190億個です。もしその一つひとつが、何もしていない間も電流を流し続けたらどうなるでしょう。合計の電流は大きくなり、電池はすぐに減り、チップは熱くなってしまいます。
実際には、そうなりません。理由の一つが、CMOSという回路の作り方です。この記事では、CMOSがなぜ電力を節約できるのか、それでもどこで電力を使うのかを順に見ていきます。
なお、ここで出てくる「インバータ」は、0と1をひっくり返す小さな回路です。エアコンなどの「インバーター」(電気の形を変える装置)とは別物です。
しくみ① 逆の合図で入る2種類のスイッチ
チップの中のトランジスタは、電気の合図で、電流の通り道をつないだり切ったりするスイッチです。合図を受ける部分をゲート(英語で「門」)と呼びます。ゲートにかける電圧が高いか低いかで、スイッチが切り替わります。
このスイッチには、正反対に動く2種類があります。1つは、ゲートの電圧が高いとき、つまり1のときにつながるnMOSです。もう1つは、電圧が低いとき、つまり0のときにつながるpMOSです。
同じ合図を2つに同時に送ると、片方がつながり、もう片方は必ず切れます。CMOSは、この「正反対」を利用する方式です。頭のCは英語のComplementary(相補型)で、「互いに補い合う」という意味です。
ここでは話を簡単にするため、2つを「つながる・切れる」だけのスイッチとして扱います。中のしくみの違いは、比較「nMOSとpMOSの違い」で読めます。
しくみ② 2つを組にするとNOTゲートになる
いちばん簡単なCMOSの回路は、pMOSとnMOSを1つずつ縦に並べたものです。上のpMOSは電源の+側に、下のnMOSは0 Vの側につなぎます。2つのゲートには同じ入力を入れ、2つの間から出力を取り出します。
入力が0のときは、上のpMOSがつながり、下のnMOSは切れます。出力は電源の+側とつながって、1になります。入力が1のときはその逆で、出力は0 Vの側とつながって0になります。
入力を反対にして出すので、この回路をNOTゲート、またはインバータ(反転させるもの)と呼びます。0と1を決まりどおりに処理する回路の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が入れ替わった回数」に応じて電力を使います。1秒に何十億回も刻まれる、時計のような合図に合わせて動くCPUでは、多くの場合、この電力が大きな割合を占めます。この、切り替えに使う電力を動的消費電力と呼びます。
電圧を下げると、よく効く
1回の充電でためる電気の量は、電源の電圧に比例します。そして、その電気を押し出す強さも電圧です。そのため電圧を半分にすると、1回の切り替えに使うエネルギーは、半分の半分で4分の1になります。
式にすると、切り替えの電力は「切り替わる割合 × 容量 × 電圧の2乗 × 1秒あたりの合図の回数」です。記号では P = αCV²f と書きます。数字を入れて試したい人は、CMOSの消費電力の計算ツールを使ってみてください。
トランジスタや配線を小さくすると、ためる容量も小さくなります。チップの世代が進むと1回の切り替えのエネルギーが減る、理由の一つです(「「2nm」「3nm」は何の長さ?」)。
オフでも少し漏れる
理想のスイッチは、切れていれば電流をまったく通しません。実際のトランジスタは、切れていても、ごくわずかな電流が漏れて流れます。この漏れによって、止まっている間も使われ続ける電力を静的消費電力と呼びます。
漏れは、トランジスタを小さくするほど増えやすく、温度が上がっても増えます。そこで今のチップは、使っていない部分の電源をまるごと切るなどの工夫をしています。2種類の電力の違いは、比較「静的消費電力と動的消費電力の違い」で読めます。
切り替わる一瞬だけ、両方が入る
入力の電圧は、0から1へ一瞬で変わるわけではなく、少し時間をかけて上がります。その途中の電圧では、pMOSとnMOSが両方とも少しつながった状態になります。この短い間だけ、電源から0 Vの側へ電流が通り抜けます。これを貫通電流と呼び、ふつうは充電と放電の電力より小さな部分です。
NANDも同じ考え方で作る
入力が2つ以上のゲートも、同じ考え方で作れます。出力を1にする上の道はpMOSで、出力を0にする下の道はnMOSで組みます。そして、片方の道がつながるときは、もう片方が必ず切れるようにします。
たとえば2入力のNANDゲートは、「両方が1のときだけ0」を出す回路です。下の道はnMOS 2個を一列に(直列に)つなぎ、上の道はpMOS 2個を横に並べて(並列に)つなぎます。両方が1なら下の道がつながり、どちらかが0なら上の道がつながります。使うトランジスタは4個です。
どの入力でも、上と下が同時につながることはありません。そのため、NANDでも止まっている間の電力はほぼゼロです。ゲートを組み合わせて足し算をするしくみは、「コンピュータは0と1でどう計算するの?」で説明しています。
なぜ、ほとんどのチップがCMOSなのか
1つ目の理由は、ここまで見てきた電力の小ささです。1つのチップに何十億個も詰めると、1個あたりのわずかな電流でも、合計は大きな電力と熱になります。止まっている間ほとんど電流を使わないCMOSは、1つのチップ(集積回路)に載せる数を増やしやすい方式でした。
2つ目は、0と1がはっきりすることです。CMOSの出力は、電源の+側か0 Vの側の、どちらかにしっかりつながります。nMOSだけの方式では、上の抵抗と下のnMOSの「引っぱり合い」で0の電圧が決まるので、ぴったり0 Vにはなりません。0と1の電圧の差が大きいほど、配線に雑音が乗っても読み違えにくくなります(この余裕をノイズマージンと呼びます)。
3つ目は、同じ作り方で、いろいろな回路を1枚のチップに載せられることです。計算の回路、CPUの中の小さく速いメモリ、DRAMやフラッシュメモリの周りの回路も、CMOSで作れます。カメラのイメージセンサも、光を電気に変える画素と読み出す回路を、同じ技術で1つのチップにまとめています。
一方、大きな電力を扱う部品などでは、別の種類のトランジスタも使われます(「パワー半導体とは?」)。
歴史: 1963年の発明から主役になるまで
CMOSは、1963年に米国のフェアチャイルドという会社の研究所で生まれました。フランク・ワンラスとC. T. サー(薩支唐)が学会の論文で、nMOSとpMOSを組にした回路を発表したのです。ワンラスは同じ1963年の6月に特許を出願し、1967年12月に米国の特許が認められました。
ただ、初めのころのCMOSは性能の面で弱点があり、すぐには広まりませんでした。製造に力を入れたのは米国のRCAで、まず宇宙・航空の機器向けに作りました。1968年には、汎用の論理IC「CD4000」シリーズの最初の製品を出しています(コンピュータ歴史博物館の解説による)。
1970年代のコンピュータ用のチップでは、しくみ③で見たように、より速いnMOSだけの方式が主流でした。CMOSは、時計など電力の小ささが特に大事な用途が中心でした。流れを変えた例の一つが、日立が1978年に発表した高速なCMOSのメモリ(のちの製品「HM6147」)です。インテルの高速なnMOSのメモリ「2147」と同じ速さを、ずっと少ない電流で実現しました(半導体歴史館の解説による)。
| 年 | 出来事 |
|---|---|
| 1963年 | フェアチャイルドのワンラスとサーがCMOSを発表。ワンラスが特許を出願 |
| 1967年 | CMOSの米国特許(第3,356,858号)が成立 |
| 1968年 | RCAが論理IC「CD4000」シリーズの最初の製品を出す |
| 1978年 | 日立が、nMOSのメモリと同じ速さの高速なCMOSのメモリを発表 |
| その後 | マイクロプロセッサやDRAMなどにも、CMOSが広がっていく |
半導体歴史館の解説では、日立のメモリの後、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」(NANDゲート4個入り)の電源の電流。入力を電源の電圧か0 Vに止め、出力に何もつながないとき(電源6 V、85 °Cまで。TIのデータシート) |
| 約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とは?」へ。