低消費電力設計手法 - パート II



序章

低消費電力設計は、ASIC チップの安定したパフォーマンスに関係します。これは ASIC、特に一部の SoC チップの設計に重要な影響を及ぼし、集積規模の大幅な増加に伴い、チップ自体の消費電力の影響がますます明らかになってきています。低消費電力設計の需要と必要性もますます注目に値します。この記事では、書籍「システムオンチップ設計のための低消費電力方法論マニュアル」の研究に基づいた低消費電力設計の理論的知識を記録します。

参考

【1】マイケル・キーティング・デヴィッド・フリン・ロバート・エイトケン・アラン・G・イボンズ・カイジアン・シー。システムオンチップ設計のための低消費電力方法論マニュアル

前のリンク:

低消費電力設計手法 - パート I


しばらく前から使用されており、成熟したテクノロジーである電力削減方法が多数あります。この章では、次のような低電力設計テクニックのいくつかについて説明します。
• クロック ゲーティング
• ゲート レベルの電力最適化
• 複数の VDD
• 複数の VT 

クロックゲーティング

チップ内の動的電力の大部分はクロック分配ネットワークにあります。動的電力の最​​大 50% 以上がクロック バッファーに費やされる可能性がありますこれらのバッファはシステム内で最も高いスイッチング レートを持ち、多数存在し、通常はクロック遅延を最小限に抑えるための高い駆動強度を備えているため、この結果は直感的に理にかなっています。また、クロックを受信するフリップフロップは、入力と出力が同じであっても、ある程度の動的電力を消費します。
この電力を削減する最も一般的な方法は、不要なときに時計をオフにすることです。このアプローチはクロック ゲーティングとして知られています。
最新の設計ツールは自動クロック ゲーティングをサポートしており、ロジック機能を変更せずにクロック ゲーティングを挿入できる回路を特定できます。以下の図は、これがどのように機能するかを示しています。

オリジナルのRTLでは、レジスタが更新されるかどうかは変数(EN)に依存します。同じ変数に基づいてクロックをゲート制御することによっても、同じ結果が得られます。
関連するレジスタが単一ビットの場合、わずかな節約が行われます。レジスタが 32 ビット レジスタの場合、1 つのクロック ゲーティング ユニットで 32 レジスタすべて (およびクロック ツリー内のバッファ) にクロックをゲートできます。これにより電力が大幅に節約されます。
RTL 設計の初期段階では、エンジニアはクロック ゲーティング回路を RTL で明示的にコーディングしていました。このアプローチはエラーが発生しやすく、ゲート処理中に誤動作を起こして誤動作を引き起こすクロック ゲーティング回路を簡単に作成してしまいます。現在、ほとんどのライブラリには、合成ツールで認識される特定のクロック ゲーティング セルが含まれています。明示的なクロック ゲーティング セルと自動挿入を組み合わせることで、クロック ゲーティングが簡単かつ信頼性の高い方法で消費電力を削減できます。このタイプのクロック ゲーティングを実装するには、RTL を変更する必要はありません。
その結果、
最近の論文 [1] で、Pokhrel 氏は、彼のグループが最近、(ほぼ) 同一のチップをクロック ゲーティングの有無で比較する必要があったというユニークな機会を報告しています。
電力削減プロジェクトとして、クロック ゲーティングのない既存の 180nm チップが、クロック ゲーティングと同じテクノロジーで再実装されました。小規模な論理変更のみが実装されました (機能のわずかな純増加のために、小さなブロックが削除され、他のブロックに置き換えられました)。
動作モードに応じて、面積が 20% 削減され、電力が 34% ~ 43% 節約されるとポクレル社は報告しています。(節約はチップのクロック ゲーティング部分で実現されます。プロセッサはハード マクロであり、クロック ゲーティングではありません。電力測定は、プロセッサが IDLE モードにあるとき、つまりプロセッサがオフのときにチップ全体で行われます。 ) 実際のシリコンからの電力測定。
面積の節約は、複数のマルチプレクサを単一のクロック ゲーティング セルに置き換えることによるものです。
ポクレル氏は、いくつかの興味深い観察を行いました。
•  いくつかの分析と実験の後、チームはレジスタでクロック ゲーティングを使用します彼らは、1 ビット レジスタでのクロック ゲーティングが電力や面積の点で効率的ではないことを発見しました。
• 消費電力のほとんどは、クロック ゲート要素がクロック パスの早い段階に配置されているためです。クロック バッファの約 60% はクロック ゲーティング セルの後に出現するため、ゲーティング中にそれらのアクティビティはゼロに減少します。

ゲートレベルの電力最適化

このツールは、クロック ゲーティングに加えて、動的消費電力を最小限に抑えるために多くのロジック最適化を実行できます。以下の図は、これらの最適化のうち 2 つを示しています。
プロットの上部では、AND ゲート出力のアクティビティが特に高くなります。その後に NOR ゲートが続くため、2 つのゲートを AND-OR ゲートとインバーターに再マッピングして、高アクティビティ ネットがセルの内部になるようにすることができます。現在、非常にアクティブなノード (AND ゲートの出力) がより小さなコンデンサを駆動し、動的電力が削減されます。
図の下部では、AND ゲートが最初にマップされており、高アクティビティのネットが高電力入力ピンに接続され、低アクティビティのネットが低電力ピンに接続されています。複数の入力ゲートの場合、異なるピンの入力容量と電力に大きな違いが生じる可能性があります。最適化ツールは、高アクティビティのネットが低電力入力に接続されるように入力を再マッピングすることにより、動的電力を削減できます。
ゲートレベルの電力最適化の他の例には、セルサイズやバッファ挿入などがあります。バッテリーのサイジングでは、このツールはクリティカル パス全体でバッテリー駆動強度を選択的に増減させてタイミングを達成し、動的電力を最小限に抑えることができます。
バンパーを挿入する際、ゲート自体の作動強度を高める代わりに、ツールをバンパーに挿入することができます。これは、適切な状況で行われた場合、電力の低下につながる可能性があります。
クロック ゲーティングと同様、ゲート レベルの電力最適化は実装ツールによって実行され、RTL 設計者にとって透過的です。

複数の VDD

動的電力は VDD^2 に比例するため、選択したブロックの VDD を下げると電力を大幅に削減できます。残念ながら、電圧を下げると、設計内のゲートの遅延も増加します
以下の図の例を考えてみましょう。ここで、キャッシュ RAM はタイミングが重要なパス上にあるため、最高電圧で動作します。CPU の性能がシステムのパフォーマンスを決定するため、CPU は高電圧で動作します。ただし、キャッシュよりもわずかに低い電圧で実行でき、それでも全体的な CPU サブシステムのパフォーマンスはキャッシュの速度によって決まります。チップの残りの部分は、システム全体のパフォーマンスに影響を与えることなく、より低い電圧で動作できます。通常、チップの残りの部分も CPU よりもはるかに低い周波数で動作します。

したがって、システムのすべての主要コンポーネントは、システムのタイミングを満たす最低電圧で動作します。この方法により大幅に電力を節約できます。
異なる VDD 電源でブロックを混在させると、設計がさらに複雑になります。異なる電源レールに電力を供給するための IO ピンを追加する必要があるだけでなく、ブロック間の信号のためのより複雑なグリッドとレベル シフタも必要になります。これらの問題については、本書の後半で詳しく説明します。

複数のしきい値ロジック

形状が 130nm、90nm 以下に縮小するにつれて、複数の VT を備えたライブラリを使用することがリーク電圧を低減する一般的な方法になりました。
図 2 ~ 4 は、90nm プロセスの遅延とリークの関係を示しています。図 2 ~ 5 は、マルチ VT プールのリークとレイテンシの代表的な曲線をいくつか示しています。前述したように、サブスレッショルド リーク インデックスは VT に依存します。レイテンシは VT にあまり依存しません。
現在、多くのライブラリでは、低 VT、標準 VT、および高 VT の 2 つまたは 3 つのバージョンのユニットが提供されています。実装ツールはこれらのライブラリを利用して、タイミングと電力の両方を最適化できます。

現在、合成中に「デュアル VT」ストリームを使用するのが一般的です。このアプローチの目標は、タイミングを満たすために必要なだけ配置することで、高速でリークの多い低 VT トランジスタの総数を最小限に抑えることです。これには通常、メイン ライブラリに対する最初の合成と、その後に異なるしきい値を持つ 1 つ (または複数) の追加ライブラリに対する最適化ステップが含まれます。
通常、電力を最適化する前に、最小パフォーマンス要件を満たす必要があります。実際には、これは通常、最初に高性能、高リークのライブラリを使用して合成し、次にクリティカル パス上にないセルを、パフォーマンスが低く、リークの少ない同等のライブラリと交換することによって緩和することを意味します。
最小限のパフォーマンスを達成するよりもリークを最小限に抑えることが重要な場合は、プロセスを逆にすることができます。最初に低リークのライブラリをターゲットにし、次に、速度が重要な領域でより高性能でリークの高い同等のライブラリを置き換えることができます。

要約する



おすすめ

転載: blog.csdn.net/qq_43045275/article/details/130328287