next up previous contents index
Next: 組み合わせ論理回路 Up: デジタル回路 Previous: NAND 回路と NOR 回路   Contents   Index

c-MOS ゲートの動作速度と電力損失

c-MOS インバータは消費電力 0 といったが、実際には電力消費もあるし、 動作速度も有限である。 遅延について言えば、デバイスそのものも動作遅れがあるし、さらに大きな 原因として、次段のゲートや配線の持つ静電容量である。 静電容量があるから出力電圧を上げる際には充電時間がかかるし、出力電圧を 下げる際には放電時間がかかる。 また、充放電の際、電力損失も発生する。

デバイスそのものが持つこの時定数は内因性遅延 (intrinsic delay) と呼ばれる。 これは、n- や p-MOS FET 自身のチャネル形成時間であり、チャネル抵抗 $ R_c$ を介してゲート容量 $ C_g$ に電荷が入ってくる時間であるので、 $ \tau_0=C_gR_c$ となる。 しかしチャネル抵抗と言っても電流-電圧特性が飽和する現象もあるので、 簡単に一つの定数で置き換えることはできないが、線形近似できるときにどの 程度であるかを見積もっておくことは悪いことではなかろう。

FET の特性を計算するときに、チャネルの抵抗はチャネル中の 電荷がどのくらいの時間でソースドレイン間を抜けられるのかで見積もった。 ということは、この見積もられた抵抗から計算される $ \tau_0$ は、この チャネルの走行時間で与えられることが推定できる。 したがって

$\displaystyle \tau_0=C_gR_c=\frac{L}{v}=\frac{L^2}{\mu V_{ds}}=\tau_t$ (4.1)

と書ける。 $ \tau_t$ はチャネル走行時間 (channel transit time) の意味である。

走行時間遅延はデバイスの動作に起因するため、集積回路のいろいろな遅延を 議論するための比較標準のような使われ方をするために、しばしば現れるが、 実はもっと大きな遅延があるために、普通は無視できることが多い。 その他の遅延は総じて外因性遅延(extrinsic delay)と呼ばれる。 現在の集積回路、あるいはボード上に作られた回路でもっとも大きな遅延は、 配線の持つ容量の充放電時間である。 配線容量は出力線から接地側、つまり 0V 側に対して静電容量を持つ。 出力電圧を上げるときには、電源である$ V_{dd}$より p-MOS を経由して、 この静電容量に充電する必要がある。 p-MOS のチャネル抵抗(時間ともに変化するので平均的な抵抗)を $ R_c$ とすると、充電にはおよそ $ \tau=CR_c$ ぐらいの時間が必要となる。 また、出力電圧を下げるときには n-MOS のチャネル抵抗によって放電を 行うが、n-MOS のチャネル抵抗は p-MOS のチャネル抵抗に近く 設計されているから、やはり同じぐらいの時間を必要とする。

次段のゲート容量の充放電時間も配線遅延ほどではないが、やはり 無視できないが、厳密な取扱はやや複雑になる。 というのは例えば p-MOS の場合、対向するチャネルの電圧が一定でなく、 接地電圧と次段の出力電圧の間の電圧を連続的に補間すること、それに加えて 出力電圧が時間とともに変化するからである。 しかし、最悪で計算しても、接地された静電容量の充放電時間であるので、 通常は接地容量で計算する。 しかも、年ごとに回路規模が大きくなってきているので、配線容量の占める 比率が高くなってきており、詳細な議論をしても意味が無くなりつつある。

いずれの時定数も $ R_c$ に、それぞれ該当する静電容量を掛けることにより 得られるので、種々の静電容量をゲート容量を基準にして 表すことがよくなされる。 例えば、配線容量、ゲート容量 (n-MOS と p-MOS の和に次段のゲート総数を 掛けたもの)、自身のゲート容量の総和が

$\displaystyle C=fC_g$ (4.2)

と表されるとき、そのゲートでの遅延時間は

$\displaystyle \tau=f\tau_0$ (4.3)

となる。

電力消費はこれらの容量の充放電の際、n- や p-MOS FET で発生する抵抗損失で 起こる。 放電の場合は、かなり簡単に考えることができる。 というのは $ C$ の静電容量に $ CV_{dd}^2/2$ だけ貯められていた 静電エネルギーを、すべて p-MOS で無くしてしまうからである。 つまり、放電のたびにこれだけのエネルギーが n-MOS で消費される。 充電の場合は、静電容量に 0 から $ CV_{dd}^2/2$ だけのエネルギーが 蓄えられるのだが、その際、電源は $ V_{dd}$ の電圧で $ CV_{dd}$ だけの 電荷を送り込むという仕事を行っている。 したがって、$ CV_{dd}^2$ のエネルギーを使って、 $ CV_{dd}^2/2$ だけの エネルギーを蓄えたことになる。 この差額の $ CV_{dd}^2/2$ のエネルギーは、充電側の抵抗である p-MOS で消費されたことになる。 クロック周波数が$ f_c$のとき、クロックのたびごとに出力論理が 反転するものとすると、

$\displaystyle P_0=f_cCV_{dd}^2/2$ (4.4)

だけの電力消費があることになる。 再び $ C=fC_g$ とし、このゲートの出力の反転確率を $ p$ としよう。 すると、このゲートでの電力消費は

$\displaystyle P=pfP_0$ (4.5)

となる。

NAND や NOR ゲートでも議論はほとんど変わらない。 しかし、多入力 NAND や NOR で、ファンイン (fan in)、つまり入力の線の 本数、が非常に多い場合には、n-MOS 側か p-MOS 側のいずれかに、FET がたくさん直列になる回路が入ってくるため、充電あるいは放電のいずれかの 遅延時間が大幅に延びる。 最大八入力 NAND や NOR ぐらいまでは気にしなくても、それよりも 多入力になると、遅延時間が無視できなくなり、何らかの工夫が 必要になってくる。 このような場合は、いくつかの少入力 NAND を用意し、その出力を NOR に 入れることにより、多入力 AND を構成する。 さらに多入力の場合は、こうしたいくつかの NOR を NAND に入れて、多入力 NAND とする。

同様に、ファンアウト (あるいはファンナウト、fan out)、つまり一つの ゲートの出力線につながっている次段のゲート数、が非常に多い場合も、 駆動すべき負荷の静電容量が大きくなり、やはり遅延が大きくなる。 この場合は、徐々に駆動力の高いインバータを従属接続し、駆動力を 上げてから、複数の次段ゲートを駆動することが行われる。 駆動力を高くするには、横幅の大きなコンダクタンスの高い FET を用いた インバータを利用する。

ファンインが大きい場合は、段ごとに指数関数的にゲート数を減らし、 ファンアウトが大きい場合は、指数関数的に駆動力を上げていったが、 どのくらいの比率で駆動力を上げるのが良いだろうかというと、次のような 計算で決定することができる。 いずれの場合も同じ論理で計算できるので、ここではファンアウトをとる場合で 議論しよう。 全体で $ f_t$ のファンアウトをとる場合、$ n$ 段で対処することとし、 各段で $ f$ のファンアウトをとることとしよう。 当然

$\displaystyle f^n=f_t$ (4.6)

が成立する。 内因性遅延や配線遅延を無視し、次段ゲート駆動の遅延だけを考えると、 各段での遅延時間は $ f\tau_0$ となるから、全体の遅延時間 $ \tau_t$

$\displaystyle \tau_t=nf\tau_0$ (4.7)

となる。

前式の条件で、この式を最小にすることを考えればよい。 前式の $ \log$ をとって $ n$ を求め、この式に代入すると

$\displaystyle \frac{\tau_t}{\tau_0}=\frac{f}{\log f}\log f_t$ (4.8)

となる。 $ f$ で微分してみると、この式は $ f=e$ で最小値 $ e\log f_t$ をとることがわかる。 したがって、理想的には各段2、3倍ごとにインバータを 大きくしていけばよいことになる。 ただ、段数を増やすことは、集積回路でも、ボード上でも面積をとるので、 実際はもう少し大きな拡大率をとる。 $ f=10$ で遅延は $ f=e$ の場合の1.6倍ぐらいとなるから、この辺が 現実的な拡大率であろう。 ファンインの場合の縮小率についても全く同様の議論が成立する。


next up previous contents index
Next: 組み合わせ論理回路 Up: デジタル回路 Previous: NAND 回路と NOR 回路   Contents   Index
Yoichi OKABE 2008-02-17