このコラムでは「意外と知られていないけど、知っていると差がつく FPGA の技術情報」をご紹介します。
FPGA初心者の方からベテランの方まで、幅広くご活用いただける内容ですので、ぜひ最後までお付き合いください。

【第 7 回】 信号振幅(Vs)と電源電圧(VCC)を低減する方法

消費電力計算式の中から電圧の Vs と VCC を低減する方法を検討します。

一般的にコア電圧は Vs=VCC なので、計算式の “Vs(信号振幅) * VCC(電源電圧)” は「V2」と表現できます。
スイッチング電力は電源電圧の二乗に比例するだけでなく、ショートサーキット電力やリーク電力にも大きく影響します。

コア電圧(VCC)の低減

コア電圧は消費電力に非常に影響がありますが、設計者がコア電圧を変えるのは難しいですね。
ところが、インテルはコア電圧を下げるオプションを多く提供していますので、ぜひご活用ください。 

(a)SmartVID
SmartVID はスペック通りの速度で動作させつつ、消費電力を下げることができる方法です。

製造バラツキにより、同じFPGAでも動作が早いデバイスと遅いデバイスがあります。
インテルは出荷テストの際に動作を維持できる最低電圧をデバイスに書き込んでいます。
この値を “SmartVID” と言います。

 例えば、基本が 0.9V で SmartVID が 0.8V の FPGA なら、(0.8/0.9)2 で 20% 低いスイッチング電力で動作します。加えて電圧を下げるとリーク電力も削減できます(Arria® 10 では最大 40% 削減)。 

(b)VCC PowerManager
VCC PowerManager は、速度は遅くなりますが、消費電力を下げる方法です。
高速スピードグレードのデバイスは速度に余裕があるので、あえて速度を落とす(電圧を下げる)ことで消費電力を下げることができます。
例えば、パフォーマンス優先なら 0.95V を使い、パワー優先ならスピードグレードが 1~2 段落ちますが、0.9V で動作させます。もちろん。どちらの電圧でも、Quartus® Prime でタイミングを検証できます。

遅くなった速度を補完する方法として、並列化やパイプラインがあります。
ちなみに ASIC では下記のような事例があります。Stratix® 10 はパイプライン化によって速度が 2 倍になっているので、VCC PowerManager は有効な方法です。 

図1 : 並列化による速度向上分の電圧を下げた例
図2 : パイプライン化による速度向上分の電圧を下げた例

 

(c)パワー・ゲーティング
クロック・ゲーティングは、使われていない期間だけブロックの「クロックを止める」方法ですが、
パワー・ゲーティングは、使われていない期間だけ「電源を止める」方法です。 

クロック・ゲーティングは 【第 8 回】のコラムをご参照ください。
インテルは DSP やメモリセルなどでパワー・ゲーティングのサポートを始めました。 

(d)プログラマブル・パワー・テクノロジ
Quartus Prime でデザインをコンパイルする際に、タイミングに余裕がある場合は閾値を上げた低電力モードにします。リーク電力に大きく影響するほか、閾値を変えるのでダイナミックパワーにも影響します。 

(e)低電圧デバイス
インテルの FPGA には、通常電圧とは別に低電圧を提供しているファミリがあります。
この FPGA を使うと低電圧での動作が可能です。 

(f)最新プロセスのデバイス
プロセスが新しくなるとコア電圧は低くなるので、最新の FPGA に変えるだけでコア電圧が下がります。
ただし、動作が遅い回路だとダイナミック電力よりもリーク電力の割合が増えるので、旧プロセスの方がトータルの消費電力が低くなることがあります。 

信号振幅(Vs)の低減

(a)小信号振幅の I/O
小振幅 I/O を使うと消費電力が下がります。
小振幅 I/O は低消費電力だけでなく高速でもあるので、積極的に使いたい I/O です。

インテルは電圧を下げるオプションを多く用意していますね。