八編にわたって素子を一つ作ってきました。シリコンに不純物を入れて P 型と N 型を得て、二つを貼り合わせて接合を作り、その上にゲートを載せて電流を調節するトランジスタまで来ました。前編では、それを小さく作るときに何がついてくるのかも見ました。
ところがトランジスタ一つでは、まだ何も計算できません。それは点けたり消したりできるスイッチにすぎません。この編の問いは一つです — スイッチを幾つかつなぐと、どうして計算になるのか。
答えは簡素です。スイッチ二つで「ではない」を作り、四つで「両方ともではない」と「どちらでもない」を作ります。そしてその四つ組の部品が一種類あれば、残りの論理はすべて作れます。
本文の条件値は計算の道筋を示すための例であり、特定の企業の仕様ではありません。引用した数値はいずれも公開文献で確認した値であり、出典は記事の末尾に記します。
まず、アナログ素子をデジタルとして使うという約束
前の編で見てきたトランジスタはアナログ素子です。ゲート電圧を少し上げれば電流が少し増え、もっと上げればもっと増えました。中間の値はいくらでもあります。
デジタル回路はその中間を捨てます。電圧が電源側に近ければ 1、接地側に近ければ 0 と読むことに決め、そのあいだの区間は使いません。ウィキペディアの「Inverter (logic gate)」の項目は、デジタル回路が論理 0 と 1 に対応する固定された電圧準位で動作すると記し、例として TTL 回路の 0 V と +5 V を挙げています。
ウィキペディアの「Logic gate」の項目は、論理ゲートがダイオードやトランジスタを電子スイッチとして使って作られると記述しています。出力が高いとは正の電源端子から電流を引いてくることであり、低いとは負の電源端子へ流し込むことだと「Logic gate」の項目は説明しています。
まとめるとこうです。素子はアナログですが、読み方を二つの値に制限してデジタルとして使います。この制限がなぜ得なのかは、あとで雑音の話をするときに現れます。
インバータ — スイッチ二つで作る「ではない」
もっとも単純な論理は否定です。ウィキペディアの「Inverter (logic gate)」の項目は、NOT ゲートを論理否定を実装するゲートと定義し、入力ビットと反対の値を持つビットを出力すると記しています。真理値表は二行だけです — 0 が入れば 1、1 が入れば 0。
片方が開けば、もう片方は閉じる
作り方は幾つもあります。「Inverter (logic gate)」の項目はまず NMOS 一つに抵抗を付ける方式を紹介し、その弱点を突きます — 二つの状態のうち一方で抵抗に電流が流れ続けるので、電力と処理速度の面で不利だというのです。
代わりになるのが CMOS です。抵抗の位置に PMOS を置きます。ウィキペディアの「CMOS」の項目が記述する配線はこうです。上に PMOS、下に NMOS を置き、二つのゲートを同じ入力にまとめてつなぎます。上は電源 Vdd に、下は接地 Vss に触れており、二つが出会う地点が出力です。
「CMOS」の項目が記す動作は二行です。
- 入力が低いとき — NMOS のチャネルが高抵抗状態になって接地が出力から切れ、PMOS のチャネルが低抵抗状態になって電源が出力につながります。出力は 1 です。
- 入力が高いとき — 逆です。PMOS が高抵抗状態になって電源を切り、NMOS が低抵抗状態になって接地をつなぎます。出力は 0 です。
同じ入力を受けているのに、反応は正反対です。「相補(complementary)」という名はここから来ています。ウィキペディアの「Inverter (logic gate)」の項目は、この構成が二つの論理状態のいずれでもトランジスタの一方が常にオフであるため、消費電力を大きく減らすと記しています。
なぜよりによって上が PMOS で下が NMOS なのか
順序を入れ替えてもよいのかと問うこともできます。できません。二つの素子がうまく伝える値が互いに違うからです。
ウィキペディアの「Transmission gate」の項目は、この性質を一文で記しています — PMOS は強い 1 を伝えるが 0 は不出来にしか伝えず、NMOS は強い 0 を伝えるが 1 は不出来にしか伝えない、というものです。
だから配置が決まります。1 を出す仕事は 1 をうまく伝える PMOS に、0 を出す仕事は 0 をうまく伝える NMOS に任せます。上が PMOS で下が NMOS である理由です。二つの素子は互いの弱いほうを覆い合っています。
だから電力をほとんど使わない
電源から接地まで電流が流れるには道がつながっていなければなりません。CMOS インバータでは上下のうち一方が常に切れており、その道がありません。ウィキペディアの「CMOS」の項目はこう記しています — MOSFET の対のうち一方は常にオフなので、この直列の組み合わせはオンとオフのあいだを行き来する瞬間にだけ意味のある電力を引いてくる、というのです。
「CMOS」の項目は、静的 CMOS ゲートが休んでいるときにほぼ 0 に近い電力を消費すると記述しています。NMOS 論理ではトランジスタがオンのあいだ、Vdd から Vss へ向かう電流経路が常にあり、電力を使い続けます。
電力は値が変わる瞬間に使われる
では電力はどこに使われるのでしょうか。四番目の編で見たものがここで戻ってきます。接合のあるところには、望まなくてもコンデンサがついてきます。
ウィキペディアの「CMOS」の項目は、CMOS 回路がスイッチングするたびにさまざまな負荷容量を充電しながら電力を消費すると記しています。ゲート容量と配線容量が大半で、ドレイン・ソース容量もあると付け加えています。一回の完全な周期で、電流は VDD から負荷容量へ流れてそれを満たし、放電するときは満たされた容量から接地へ流れ出ます。
「CMOS」の項目は一周期に運ばれる電荷を Q = CLVDD と記し、これにスイッチング周波数と平均電圧を掛けて電力を得ます。
P = 0.5 C V2 f
ほとんどのゲートは毎クロック値を変えるわけではないので、「CMOS」の項目は活動率 α を付けて P = α C V2 f と書き直します。
この式が言っていることは明白です。電力は値が変わった回数に比例します。じっとしていればほとんど使いません。そして電圧は二乗で入ってきます — 電源電圧を下げることが、電力を減らすもっとも強い手段です。
ただし「ほぼ 0」は「0」ではありません。「CMOS」の項目は、速度のためにしきい値電圧を下げた現代の素子ではサブスレッショルド漏れ電流が無視できなくなり、活発にスイッチングしていない回路を多く含む設計でもこの漏れのために電力が消費されると記しています。前編で見た短いチャネルの問題が、電力の項目として再び現れたわけです。
伝達特性曲線 — 真ん中が急なほどよい
インバータの品質は一枚の図で測ります。入力電圧を 0 から電源電圧までゆっくり上げながら出力電圧を描いた曲線です。ウィキペディアの「Inverter (logic gate)」の項目はこれを電圧伝達曲線(VTC、voltage transfer curve)と呼び、ここから雑音許容度・利得・動作論理準位を得られると記しています。
「Inverter (logic gate)」の項目は、理想的な VTC がひっくり返った階段関数だと記述しています。ある一点で出力が垂直に落ちる形です。実際の素子ではなだらかな遷移区間ができます。そして付け加えます — この遷移区間の傾きが品質の尺度であり、急なほど正確なスイッチングになる。
傾きがなぜ品質なのか
傾きがなだらかだと、「1 でも 0 でもない」入力区間が広くなります。その区間に入ってきた信号は、次のゲートがどちらにも読めてしまいます。計算が狂う場所です。
この余裕を数値として定めたものが雑音余裕(noise margin)です。ウィキペディアの「Noise margin」の項目は、これを雑音のない最悪の入力準位に加えても出力が許容論理準位から外れないようにする最大の雑音振幅と定義しています。
基準点は四つです。
- VOH — 出力が 1 のときの電圧。「Noise margin」の項目は、CMOS インバータではこの値が VDD と等しくなると記しています。
- VOL — 出力が 0 のときの電圧。CMOS では接地電位と等しくなります。
- VIH — VTC の傾きが −1 になる最も高い入力電圧と定義されます。
- VIL — 傾きが −1 になる最も低い入力電圧です。
余裕は二回の引き算です。
NMH = VOH − VIH そして NML = VIL − VOL
「Noise margin」の項目は、この値が正でなければ正常動作が保証されず、負であれば動作が損なわれるか、まったく失敗すると記しています。
ここで曲線の形と余裕がつながります。傾きが −1 になる二点 VIH と VIL が真ん中へ寄るほど、二つの引き算の結果が大きくなります。遷移区間が急だということは、すなわち雑音余裕が広いということです。
「Noise margin」の項目は、CMOS の雑音余裕が TTL よりはるかに大きい理由も記しています — VOH の最小値が電源電圧により近く、VOL の最大値が 0 により近いからです。出力を上下の端まで押し切る CMOS の構造が、そのまま余裕になります。「CMOS」の項目がこの技術の重要な特性として高い雑音耐性と低い静的消費電力の二つを挙げるのも同じ文脈です。
先の「中間を捨てる」という約束がここで値を発揮します。アナログであれば雑音はそのまま誤差として残ります。二つの値だけを使えば、余裕の内で揺らいだ信号は次のゲートを通るときに再び端の値へ押し戻されて消えます。
スイッチをつなぐ二つの方法 — NAND と NOR
インバータで入力を二つに増やします。方法は二つだけです — 直列につなぐか、並列につなぐかです。
直列は「両方とも点かなければ通らない」であり、並列は「一方だけ点いても通る」です。この二つの文がそのまま論理積と論理和です。CMOS は上下が反対でなければならないので、下を直列に置けば上はおのずと並列になります。
NAND — 下を直列に
ウィキペディアの「NAND gate」の項目は、CMOS 実装をこう記述しています。スイッチの役を果たすのは n 型トランジスタ二つであり、プルアップ抵抗の役を果たすのは p 型トランジスタ二つで、この p 型の対は n 型の対の補をなします。
補という語が配置を決めます。下の NMOS 二つが直列なら、上の PMOS 二つは並列です。四つの入力を追ってみます。
- A=0, B=0 — 下の NMOS が二つともオフで、接地へ向かう道がありません。上の PMOS は二つともオンで、電源が出力に届きます。出力 1。
- A=0, B=1 — 下の NMOS が一つだけオンになりました。直列なので道は依然として切れています。上は並列なので片方だけオンでも電源が届きます。出力 1。
- A=1, B=0 — 前の行と左右対称です。出力 1。
- A=1, B=1 — 下の NMOS が二つともオンになって直列の道がつながります。上の PMOS は二つともオフです。出力 0。
両方が 1 のときだけ 0 です。ウィキペディアの「NAND gate」の項目が載せる 2 入力真理値表と同じであり、「NAND gate」の項目はこの関数が NOT(A AND B) と論理的に等しいと記しています。
NOR — 下を並列に
反対に置けば反対のゲートになります。ウィキペディアの「NOR gate」の項目は、CMOS 実装でプルアップ抵抗の機能を上側の p 型トランジスタ二つの直列接続が担うと記述しています。下はその補である並列の NMOS 二つです。
「NOR gate」の項目は動作をこう要約しています — 入力のうちどれか一つでも高ければ、対応する n チャネル素子がオンになって出力が低く引かれ、そうでなければ出力は上へ引かれます。
- A=0, B=0 — 下が二つともオフで接地へ向かう道がなく、上の直列 PMOS 二つがいずれもオンで電源が届きます。出力 1。
- A=0, B=1 — 下は並列なので一つだけオンでも接地へつながります。上は直列なので一つオフになるだけで切れます。出力 0。
- A=1, B=0 — 前の行と左右対称です。出力 0。
- A=1, B=1 — 下の二つの道がいずれもつながり、上は完全に切れます。出力 0。
両方が 0 のときだけ 1 です。「NOR gate」の項目は NOR を、二つの入力がいずれも低いときだけ高い出力が出るゲートと定義しています。
二つの回路図を並べて置けば上下をひっくり返した図です。直列と並列が場所を入れ替えただけです。
どちらか一つで足りるのだが、その一つは NAND だ
一種類で全部作る
ウィキペディアの「NAND gate」の項目は、NAND が機能的完全性を持つと記しています。AND でも OR でも、ほかのどんな論理関数でもNAND だけで実装できるという意味であり、同じ性質を NOR も持ちます。「NAND gate」の項目は、プロセッサ全体を NAND ゲートだけで作れると付け加えています。
「Logic gate」の項目はこの事実の来歴まで記しています。パース(Charles Sanders Peirce)が 1880~1881 年に、NOR ゲートだけで、あるいは NAND ゲートだけでほかのすべての論理ゲートの機能を再現できることを示した、というものです。だからこの二つを普遍論理ゲートと呼びます。
実際にそう作られた機械もあります。「NOR gate」の項目は、初期のアポロ誘導コンピュータが3 入力 NOR ゲートを二つだけ収めた集積回路 4,100 個で作られたと記しています。月へ行ってきた計算機が、ゲート一種類でした。
ところが CMOS では NAND のほうが有利だ
どちらも普遍ゲートなら、どちらを使ってもよさそうに思えます。ところが分かれます。理由は七番目の編にすでに出ていました — 正孔は電子より遅いのです。
ウィキペディアの「Electron mobility」の項目の表は、結晶シリコンの移動度を電子 1,400、正孔 450 cm2/(V·s) と記しています。三倍を超える差です。「Electron mobility」の項目は、正孔の移動度が全般に低いと記述しています。
移動度が低いということは同じ大きさでは同じ電流を出せないという意味です。PMOS は NMOS に合わせるにはより広くなければならず、広くなればゲート容量が大きくなります。容量は前節で見たとおり、そのまま遅延と電力になります。そこへ直列につないだ素子は抵抗が足し合わされます。すでに遅い PMOS を二つずつ直列に置くほうが、それゆえ不利なのです。
ウィキペディアの「NAND gate」と「NOR gate」の二つの項目が、同じ文でこれを記しています — CMOS では NAND ゲートが NOR ゲートより効率的であり、それは n チャネル MOSFET の電荷移動度が p チャネルより速いため、NAND で実現される p チャネル素子二つの並列接続が NOR での直列接続より有利だから、というものです。だから CMOS 回路では NAND が NOR より好まれると、二つの項目はどちらも同じ文で締めくくっています。
材料の性質一つが回路の選択にまで押し寄せてきたわけです。正孔が遅い → PMOS を広げねばならない → 直列の PMOS は避けたい → チップの中で NAND をより頻繁に見ることになる。
まとめ
- デジタルは素子の性質ではなく約束です。アナログ素子の電圧を二つの値としてだけ読むと決めたことです。
- CMOS インバータは PMOS と NMOS を上下に積み、ゲートをまとめて結びます。文献は二つの論理状態のいずれでも一方が常にオフであると記しています。上は 1 を、下は 0 をうまく伝えるほうです。
- 静的な状態では電源と接地をつなぐ道がないので休んでいるときにほぼ 0 に近い電力を使います。電力は値が変わるときに容量を満たし空にしながら使われ、P = α C V2 f に従います。
- 電圧伝達曲線の急な真ん中が品質です。傾きが −1 になる二点が VIH・VIL であり、雑音余裕は NMH = VOH − VIH、NML = VIL − VOL で決まります。
- 下を直列に置けば NAND、並列に置けば NOR です。どちらも機能的に完全で、一種類だけであらゆる論理を作れます。ただし正孔が遅く直列の PMOS が不利なので、CMOS 回路では NAND が好まれます。
ここでシリーズを閉じます。振り返れば一本の線でつながります。材料の抵抗が金属と不導体のあいだにあるという事実から出発し、不純物を入れて P 型と N 型を作り、二つを貼り合わせて一方向にだけ流れる接合を得て、そこについてくるコンデンサを見て、端子を三つに増やして流れを調節するトランジスタに至りました。それをオンとオフの二つだけで読むことにして四つをつなぐと、論理が出てきました。石ころ一つから計算までやって来た道のりです。
次のシリーズ「TFT 特性パラメータ」では、このトランジスタがどれだけよく作られているかを測る数字たち — しきい値電圧・移動度・オンオフ比・サブスレッショルドスイング — を一つずつ解きほぐしていきます。
参考資料
- CMOS — Wikipedia:インバータの配線と入力の高低に応じたチャネル抵抗、対の一方が常にオフでスイッチングの瞬間にだけ電力を使うという記述、待機電力がほぼ 0、P = 0.5 C V2 f · P = α C V2 f、サブスレッショルド漏れ
- Inverter (logic gate) — Wikipedia:NOT ゲートの定義と真理値表、抵抗負荷方式の弱点、二つの論理状態のいずれでも一方が常にオフであるという記述、固定された論理電圧準位(TTL 0 V・+5 V)、電圧伝達曲線と遷移区間の傾きが品質の尺度であるという記述
- Noise margin — Wikipedia:雑音余裕の定義、VIH・VIL が VTC の傾き −1 の地点であるという定義、NMH・NML の式、CMOS で VOH が VDD・VOL が接地と等しくなるという記述と TTL より余裕が大きい理由
- Transmission gate — Wikipedia:PMOS が強い 1 と不出来な 0 を、NMOS が強い 0 と不出来な 1 を伝えるという記述
- NAND gate — Wikipedia:2 入力真理値表と NOT(A AND B) の同値、n 型二つがスイッチ・p 型二つがその補であるという CMOS 実装、機能的完全性、NAND が NOR より効率的な理由
- NOR gate — Wikipedia:2 入力の定義と真理値表、上側の p 型二つが直列であるという CMOS 実装、入力が一つでも高ければ出力が低く引かれるという説明、アポロ誘導コンピュータの集積回路 4,100 個
- Logic gate — Wikipedia:ダイオード・トランジスタを電子スイッチとして使うという記述、高い出力・低い出力の意味、パースが 1880~1881 年に NOR だけ、あるいは NAND だけですべてのゲートを再現できることを示したという記述
- Electron mobility — Wikipedia:結晶シリコンの電子移動度 1,400 · 正孔移動度 450 cm2/(V·s)
- ※ 上記の一覧のうち Wikipedia の項目から引用した部分は CC BY-SA 4.0 ライセンスに従います。