Comments
Description
Transcript
(日本語版) ( v1.3, 614 KB )
ホワ イ ト ペーパー : Virtex-6、 Spartan-6、 Kintex-7、 および Virtex-7 FPGA WP370 (v1.3) 2011 年 3 月 1 日 高度な ク ロ ッ ク ゲーテ ィ ングによ る ス イ ッ チング電力の削減 著者 : Frederic Rivoallon ザ イ リ ン ク ス は、 業界初の自動化 さ れた優れた ク ロ ッ ク ゲ ー テ ィ ン グ ソ リ ュ ー シ ョ ン を 開発 し、 Virtex®-6、 Spartan®-6、 Kintex™-7、 お よ び Virtex-7 FPGA デザ イ ンのダ イ ナ ミ ッ ク 消費電力を最大 30% 削減する こ と に成 功し ま し た。 ザ イ リ ン ク ス が提供す る 高度な ク ロ ッ ク ゲーテ ィ ン グ に よ る 最適化機能は、 デザ イ ン全体に対 し て自動的に実 行 さ れます。 新たな ツールあ る いは設計フ ロ ーの追加は 不要で、 既存 ロ ジ ッ ク や ク ロ ッ ク も 変更 さ れないため、 デザ イ ンの動作が変わ る こ と はあ り ません。 ま た、 ほ と ん ど の場合、 タ イ ミ ン グ も その ま ま維持 さ れます。 © Copyright 2010–2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners. WP370 (v1.3) 2011 年 3 月 1 日 japan.xilinx.com 1 高度な ク ロ ッ ク ゲーテ ィ ングの概要 ク ロ ッ ク ゲーテ ィ ン グは、不要な ス イ ッ チン グ動作を除いて電力を最適化す る と い う ASIC デザ イ ンや FPGA デザ イ ンにおいて広 く 用い ら れてい る 技術です。 通常、 こ の機能を使用す る には、 不要な順次動 作要素 (例 : レ ジ ス タ ) を取 り 除 く ため、 設計者が RTL コ ー ド に多少の ロ ジ ッ ク を追加す る 必要があ り ます。 こ の方法に よ っ てダ イ ナ ミ ッ ク 電力の大幅な削減が期待 さ れますが、 こ れ ら の最適化を手動で実 行す る には、 非常に負担の大 き な作業を伴い ます。 • デザ イ ンで不要な ア ク テ ィ ビ テ ィ を最低限にす る には、デザ イ ンについて詳細な知識が必要 と な り 、 通常は RTL コ ー ド に数々の変更を加え る 必要があ り ます。 • ほ と ん ど の ASIC お よ び FPGA デザ イ ンには、 新規/既存 IP やサー ド パーテ ィ IP の回路が混在 し てい る のが今日の状況です。 実際には、 ク ロ ッ ク ゲーテ ィ ン グの最適化オプシ ョ ンが利用 さ れ る の は新規デザ イ ン に対 し てのみです。 設計者が既存 IP デザ イ ン に対 し て、 こ れ ら の最適化オプシ ョ ン を使用す る こ と はほ と ん ど あ り ません。 こ れは既存の RTL コ ー ド の設計や動作について十分な 知識を持たないため、効果のあ る ク ロ ッ ク ゲーテ ィ ン グに よ る 最適化を手動で行 う には多大な労力 が伴 う ためです。 • 通常、 ク ロ ッ ク ゲーテ ィ ン グに よ る 最適化を適用す る には、 ツールや設計手順の追加が必要 と な り 、複雑な タ イ ミ ン グ解析が必要な新 し い ク ロ ッ ク グループ を作成 し なければな ら ない場合があ り ます (ASIC での最適化に よ く 用い ら れ る )。 し たがっ て、 ク ロ ッ ク ゲーテ ィ ン グに よ る 電力効率の 向上が十分に大 き く 、 こ の機能の適用がデザ イ ンに欠かせない場合でなければ、 デザ イ ンが さ ら に 複雑にな り 、 設計時間が増加す る こ と に よ る 負担が大 き く 、 リ ス ク に も な り 得ます。 ザ イ リ ン ク ス ソ フ ト ウ ェ アに標準 FPGA デザ イ ン フ ロ ーの配置配線に リ ン ク す る 自動機能があ り 、 こ れはデザ イ ン全体 (既存の IP お よ びサー ド パーテ ィ IP ブ ロ ッ ク を含む) に対 し て解析を実行す る 革新 的な アルゴ リ ズ ム を使用 し てい ます。 ソ フ ト ウ ェ アが論理式の解析か ら 各 ク ロ ッ ク サ イ ク ルの結果に影 響を与えない ソ ース レ ジ ス タ を検出 し 、ロ ジ ッ ク 内の豊富な ク ロ ッ ク イ ネーブル (CE) を使用 し て、図 1 の よ う に不要な ス イ ッ チン グ ア ク テ ィ ビ テ ィ を抑え る ための高精度な ク ロ ッ ク ゲーテ ィ ン グ、 つま り ロ ジ ッ ク ゲーテ ィ ン グ信号を作成 し ます。 X-Ref Target - Figure 1 Before After Power Consumption sig Power Consumption sig CE WP370_01_062610 図1: 2 高度な ク ロ ッ ク ゲーテ ィ ング機能によ る大幅なス イ ッ チ ング電力の削減 japan.xilinx.com WP370 (v1.3) 2011 年 3 月 1 日 各 CE は、 FPGA ロ ジ ッ ク の基本単位であ る ス ラ イ ス に接続 し てい る ため、 電力最適化に理想的な信号 です。 CE は少ない数の レ ジ ス タ (8 個のみ) を制御 し てい る ため、 デザ イ ンの大部分で使用 さ れ る バ ス の最小サ イ ズに合 う 粒度レベルを提供す る こ と が可能です (図 2 参照)。 X-Ref Target - Figure 2 SLICE LUT 8 Loads LUT CE LUT CLK LUT CE CLK WP370_02_041910 図2: ス ラ イ スのク ロ ッ ク イ ネーブル信号 こ の よ う な最適化に よ っ て、 既存 ロ ジ ッ ク や ク ロ ッ ク 配置が変更 さ れ る こ と はな く 、 新 し い ク ロ ッ ク が 作成 さ れ る こ と も あ り ません。 最適化後のデザ イ ンは元のデザ イ ン と 論理的に等価であ り 、 構成 さ れ る 追加 ロ ジ ッ ク は元の ロ ジ ッ ク と 分離 さ れ る ため、 わずか 2% 程度の LUT が追加 さ れ る のみです。 し た が っ て、 元の ロ ジ ッ ク パ ス に ロ ジ ッ ク レベルは追加 さ れないので、 タ イ ミ ン グに影響を及ぼす こ と は ほ と ん ど あ り ません。 こ れ ら の最適化機能は ISE ソ フ ト ウ ェ アのバージ ョ ン 12.1 で最初に導入 さ れ、当 時は Virtex-6 FPGA のみをサポー ト し てい ま し た。 その後、 ISE 12.3 で Spartan-6 FPGA のサポー ト が 追加 さ れ、 ISE 13.1 では、 Kintex-7 と Virtex-7 FPGA のサポー ト も 追加 さ れま し た。 その他の最適化機能 高度な ク ロ ッ ク ゲーテ ィ ン グに よ る 最適化機能は、 専用ブ ロ ッ ク RAM ( シ ンプルま たはデュ アル ポー ト ) の消費電力 も 削減 し ます。 こ れ ら のブ ロ ッ ク には、 ア レ イ イ ネーブル、 ラ イ ト イ ネーブル、 お よ び 出力 レ ジ ス タ の ク ロ ッ ク イ ネーブルな ど の イ ネーブル信号があ り ます。 電力削減の大半は、 ア レ イ イ ネーブルを使用す る こ と に よ っ て実現 さ れます (図 3 参照)。 X-Ref Target - Figure 3 Before After address address data out data in data out data in ce WP370_04_062610 図3: WP370 (v1.3) 2011 年 3 月 1 日 ブ ロ ッ ク RAM イ ネーブルを使用 し た高度な ク ロ ッ ク ゲーテ ィ ングによ る 最適化機能の活用 japan.xilinx.com 3 た と えば、 2:1 マルチプ レ ク サが接続 さ れてい る ブ ロ ッ ク RAM の場合、 最適化に よ っ て書 き 込み イ ネー ブル (weR) と セ レ ク ト (preselectR) を使用す る OR フ ァ ン ク シ ョ ンが LUT に イ ン プ リ メ ン ト さ れ、 そ れ ら がブ ロ ッ ク RAM の ENARDEN へ と 接続 さ れます。 こ の OR フ ァ ン ク シ ョ ンに よ っ て、 ブ ロ ッ ク でデー タ 書 き 込みが実行 さ れていない場合やブ ロ ッ ク の出力が使用 さ れない場合 (例 : マルチプ レ ク サ で選択 さ れていない と き な ど ) に、 ブ ロ ッ ク RAM の消費電力が抑え ら れ ます。 ブ ロ ッ ク RAM の書 き 込み イ ネーブルの ト グル レー ト が 50% であ る と 仮定 し た場合、 最適化に よ っ て削減 さ れ る ダ イ ナ ミ ッ ク 電力は 26% です。 Verilog コ ー ド の例を次に示 し ます。 module ram_mux ( input select, clk, we, input [7:0] bypass, input [10:0] addr, input [7:0] data_in, output reg [7:0] result_out ); reg preselectR, selectR, weR; reg [7:0] data_out, mem [2047:0]; always @(posedge clk) begin // RAM block 2048x8 (inferred) if (weR) mem[addr] = data_in; data_out <= mem[addr]; // Registering inputs weR <= we; preselectR <= select; selectR <= preselectR; // Mux: RAM output and input data result_out <= selectR ? data_out : bypass; end endmodule // ram_mux ISEv12.x お よ びそれ以降の ソ フ ト ウ ェ ア バージ ョ ン では、 ロ ジ ッ ク と し て イ ン プ リ メ ン ト さ れた ク ロ ッ ク イ ネーブル信号を検出 し 、 専用の CE に置 き 換え る こ と で図 4 の よ う に最適化で き ます。 X-Ref Target - Figure 4 Before After en en ce WP370_05_062610 図4: 4 専用 CE 信号 と し て再配線 し て電力を削減 japan.xilinx.com WP370 (v1.3) 2011 年 3 月 1 日 デザイ ン イ ン プ リ メ ン テーシ ョ ン フ ローの高度な ク ロ ッ ク ゲーテ ィ ング ISE Design Suite (v12.x お よ びそれ以降) では、 デザ イ ン合成後に実行 さ れ る ク ロ ッ ク ゲーテ ィ ン グの 最適化 ソ フ ト ウ ェ アがデザ イ ン イ ン プ リ メ ン テーシ ョ ン フ ロ ーに統合 さ れてい ま す。 デザ イ ン の イ ン プ リ メ ン テーシ ョ ンは、 主に次の 4 つの手順で実行 さ れます。 1. 変換プロセスで、ネットリストと制約を 1 つのザイリンクス デザイン ファイルに結合します。 2. 物理的制約およびタイミング制約に従って、デザイン エレメントを FPGA スライスへパックおよ び配置します。 3. タイミング制約に従ってデザインを配線します。 4. プログラミング ファイルを生成し、デバイスへダウンロードするためのビットストリーム ファイ ルを作成します。 変換プ ロ セ ス では、 NGD (ザ イ リ ン ク ス専用の Native Generic Database) フ ァ イ ルを作成す る ために 、 さ ま ざ ま なデザ イ ン ツールか ら の IP、 ネ ッ ト リ ス ト 、 お よ びブ ロ ッ ク (すべての RTL コ ー ド ) すべての 情報がデザ イ ン デー タ ベー ス ビ ルダ (NGDBuild) に送 ら れ ま す。 -power オプシ ョ ン を選択す る と ( 図 5 参照)、 MAP プ ロ セ ス で ロ ジ ッ ク 解析が実行 さ れて、 配置前に最適化 ロ ジ ッ ク が作成 さ れ、 適用 さ れます。 こ れに よ っ て、 デザ イ ン全体に対 し て自動的に電力最適化が適用 さ れ、 設計者が追加 し た新規 コ ー ド や サー ド パーテ ィ IP、既存のデザ イ ン ブ ロ ッ ク か ら 不要な ス イ ッ チン グ ア ク テ ィ ビ テ ィ が削除 さ れます。 その後、 MAP プ ロ セ ス は NGD フ ァ イ ルで DRC (デザ イ ン ルール チ ェ ッ ク ) を実行 し 、 ザ イ リ ン ク ス FPGA に ロ ジ ッ ク デザ イ ン を配置 し ます。マ ッ プ完了後は、配置配線で使用 さ れ る NCD (Native Circuit Description) フ ァ イ ルが出力 さ れます。 X-Ref Target - Figure 5 WP370_03_041810 図5: ISE ソ フ ト ウ ェ ア で ク ロ ッ ク ゲーテ ィ ングによ る最適化を有効にする設定 ベン チマー ク 結果 高度な ク ロ ッ ク ゲーテ ィ ン グ機能の効果はデザ イ ンに よ っ て異な り 、 高い効果が得 ら れ るデザ イ ン も あ れば、 あ ま り 効果がないデザ イ ン も あ り ます。 実際のカ ス タ マ デザ イ ンに基づいて統計を取っ た と こ ろ、 多 く のデザ イ ンで最大 30% のダ イ ナ ミ ッ ク 電力が削減 さ れ る こ と が証明 さ れま し た (図 6 参照)。 WP370 (v1.3) 2011 年 3 月 1 日 japan.xilinx.com 5 X-Ref Target - Figure 6 ISE 12.3 Software Ratio: Intelligent Clock Gating/Default 11% Average on Dynamic Power Reduction 1.0 0.8 0.6 0.4 0.2 0 Designs Sorted by Small to Large Power Reduction WP370_06_092310 図6: ダ イ ナ ミ ッ ク電力の削減 カ ス タ マ デザ イ ン のほかに、 こ の ク ロ ッ ク ゲーテ ィ ン グは Virtex-6 FPGA コ ネ ク テ ィ ビ テ ィ キ ッ ト のテ ス ト デザ イ ン に も 使用 さ れてい ま す。こ のデザ イ ン には、電力消費率が高い暗号化/復号化モジ ュ ー ルが含 ま れてい る ため、 41% のダ イ ナ ミ ッ ク 電力削減が見 ら れ ま し た。 こ のデザ イ ン は、 キ ッ ト に含 ま れてい る Virtex-6 XC6VLX240T FPGA に イ ン プ リ メ ン ト さ れてお り 、 その中には PCIe® ブ ロ ッ ク 、 DMA ユニ ッ ト 、 XAUI モジ ュ ール、 暗号化/復号化ブ ロ ッ ク が含 ま れ ます。 最適化に よ り 、 こ れ ら の処理能力を低下 さ せずに、 すべての リ ン ク (PCIe お よ び XAUI を含む) のシ ス テ ム バン ド 幅を その ま ま維持 し なが ら 、 VCCINT で消費 さ れ る ダ イ ナ ミ ッ ク 電力を 6.41 ワ ッ ト か ら 3.75 ワ ッ ト へ削減 し ま し た。 ま とめ FPGA デザ イ ンのダ イ ナ ミ ッ ク 電力は、 ISE Design Suite の高度な ク ロ ッ ク ゲーテ ィ ン グに よ る 最適化 に よ っ て簡単に削減で き ます。 ASIC デザ イ ンで使用 さ れ る 従来の ク ロ ッ ク ゲーテ ィ ン グに よ る 最適化 にはデザ イ ンの詳細知識が必要 と な る ため、 実際は既存 IP ブ ロ ッ ク やサー ド パーテ ィ IP ブ ロ ッ ク の最 適化は不可能です。 ま た、 新規ゲー ト ク ロ ッ ク や ロ ジ ッ ク の変更部分を補 う ために、 新 し い ツールやフ ロ ーの追加、 そ し て複雑な タ イ ミ ン グ解析が必要 と な り ます。 それ と は対照的に、 ザ イ リ ン ク ス の ク ロ ッ ク ゲーテ ィ ン グに よ る 最適化は、 デザ イ ン全体に対 し て自動 で実行 さ れ、 デフ ォ ル ト の フ ロ ー と 比較 し た場合に新 し い ツールやフ ロ ーの追加はあ り ません。 ま た、 既存 ロ ジ ッ ク や ク ロ ッ ク を変更す る こ と も ないため、 元のデザ イ ン動作や タ イ ミ ン グ を その ま ま維持で き ます。 6 japan.xilinx.com WP370 (v1.3) 2011 年 3 月 1 日 改訂履歴 次の表に、 こ の文書の改訂履歴を示 し ます。 日付 バージ ョ ン 内容 2010/05/03 1.0 初版 リ リ ース 2010/07/23 1.1 「その他の最適化機能」 セ ク シ ョ ン、 図 3、 および 図 4 の追加。 2010/10/05 1.2 Spartan-6 FPGA の説明を追加。 「その他の最適化機能」 セ ク シ ョ ン の内 容を変更。 図 6 を追加。 2011/03/01 1.3 Kintex-7 お よ び Virtex-7 FPGA の説明を追加。 ISE バージ ョ ン情報を追 加。 「高度な ク ロ ッ ク ゲーテ ィ ン グの概要」 セ ク シ ョ ンの内容を変更。 Notice of Disclaimer The information disclosed to you hereunder (the “Information”) is provided “AS-IS” with no warranty of any kind, express or implied. Xilinx does not assume any liability arising from your use of the Information. You are responsible for obtaining any rights you may require for your use of this Information. Xilinx reserves the right to make changes, at any time, to the Information without notice and at its sole discretion. Xilinx assumes no obligation to correct any errors contained in the Information or to advise you of any corrections or updates. Xilinx expressly disclaims any liability in connection with technical support or assistance that may be provided to you in connection with the Information. XILINX MAKES NO OTHER WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING THE INFORMATION, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT OF THIRD-PARTY RIGHTS. 本資料は英語版 (v1.3) を翻訳 し た も ので、 内容に相違が生 じ る 場合には原文を優先 し ます。 資料に よ っ ては英語版の更新に対応 し ていない も のがあ り ます。 日本語版は参考用 と し て ご使用の上、 最新情報につ き ま し ては、 必ず最新英語版を ご参照 く だ さ い。 WP370 (v1.3) 2011 年 3 月 1 日 japan.xilinx.com 7