計算機構成 第9回 POCOの性能評価と論理合成 テキスト7章 情報工学科 天野英晴 CPUの性能評価 • プログラムを走らせてその実行時間を比較 – – – – デスクトップ、ラップトップ:SPECベンチマーク サーバー:TPC スーパーコンピュータ:Linpack, LLL 組み込み:EEMBC, MiBench • 走らせるプログラム 〇実プログラムによるベンチマーク集 △カーネル:プログラムの核となる部分 ×トイプログラム:Quicksort, 8queen, エラトステネスの篩 ×合成ベンチマーク:Whetstone, Dhrystone 評価のまとめ方、報告の仕方 • 複数のプログラムからなるベンチマークの実行時間をどのよ うに扱うか? – 基準マシンを決めて相対値を取る – 複数のプログラムに対しては相乗平均を取る 〇プログラムの実行時間、基準マシンに依らない一貫性のある結果が 得られる ×非線形が入る • 結果の報告 – 再現性があるように – ハードウェア: 動作周波数、キャッシュ容量、主記憶容量、ディスク 容量など – ソフトウェア:OSの種類、バージョン、コンパイラの種類、オプションな ど MIPS, MFLOPS, MOPS • MIPS (Million Instructions Per Second) – – – – 一秒間に何百万個命令が実行できるか? 一命令がどの程度の機能を持っているかが入っていない 異なる命令セット間の比較には無意味な基準 しかし分かりやすいし、IntelやARM間の比較にならばそれなりに有 効 • MFLOPS (Million FLoating Operations Per Second) – 一秒間に何百万回浮動小数演算ができるか? – 本来、MIPSより公平な基準だが、平方根や指数などの命令を持つ かどうかで問題が生じる→正規化FLOPS – MOPS(Million Operations Per Second)はDSP(信号処理用プロ セッサ)など整数演算の実行回数で評価する(積和演算回数だったり する)。 FLOPS 10の6乗 10の9乗 10の12乗 10の15乗 10の18乗 100万 10億 1兆 1000兆 100京 M(メガ) G(ギガ) T(テラ) P(ペタ) E(エクサ) iPhone4S 140MFLOPS スーパーコンピュータ 数10TFLOPS-10PFLOPS ハイスペックなPC アクセラレータ 注意! スーパーコンピュータの 50-80GFLOPS 数TFLOPS 性能向上率は1.9倍/年 10PFLOPS = 1秒に1京回浮動小数点演算を行う → 「京」の名前の由来 CPUの性能、コスト、電力 • プログラム実行時間= 実行する命令数×CPI×クロック周期 – CPI (Clock cycles Per Instruction) • 1命令を実行するのに何クロック掛かるか? • 今のPOCOはCPI=1 – クロック周期:論理合成結果から求める • クロック周波数= 1/(クロック周期) • コスト:半導体上の面積 – 実装上一定の値以下にする必要がある – コストは面積の4乗に比例とも言われる • 電力:動作電力(Dynamic)とリーク電力 – 動作電力は放熱、電源設計に重要 – リーク電力はバッテリーの保持時間にとって重要 → 論理合成、圧縮結果から求める クロック周波数の向上 周波数 Pentium4 3.2GHz 高速プロセッサのクロック周波数 Nehalem 3.3GHz 京2GHz 1GHz 年間40% Alpha21064 150MHz プロセッサの動作周波数は 2003年で限界に達した 消費電力、発熱が限界に 100MHz 1992 2000 2008 年 論理合成と圧縮 • VerilogHDLで記述しただけでは実際に動く システムはできない – 論理合成、圧縮が必要 – 対象デバイスのゲート接続の形に変換 • チップ上でCPUを実現する – Synopsys社Design Compiler →今回使う • FPGA上でCPUで実現する – FPGAベンダのツール →情報工学実験第2 フロントエンド設計 System-CなどCレベル設計 Verilog-HDL, VHDLなどハードウェア記述言語でRTL設計 論理シミュレーション 論理合成・圧縮 高位合成 バグ Synopsys社 Design Compiler 論理合成後のネットリスト バグ 論理合成後シミュレーション バックエンド バックエンド設計 論理合成後ネットリスト フロアプラン 電源ネット生成 レイアウトツール Synopsys社IC Compiler Cadence社SoC Encounter 配置 クロックツリー生成 配線 最適化 エラー レイアウトデータ(GDS) DRC, LVS, ERC Formulation検証 実配線シミュレーション エラー Design Compilerによる論理合成 • ライセンスの関係で天野研究室のマシン(sirius.am.ics.keio.ac.jp)を使う – アカウント情報は注意して管理 – VDECのライセンスなので教育研究専用 • 対象デバイスは、オクラホマ大のTSMC 0.18um CMOSプロセスを利用 – ライブラリのセル数が少ない – プロセスが時代遅れ – しかし、商用プロセスのライブラリを利用するためにはNDA契約が必要、非 常に高価 • バッチ処理で用いる – tclファイル(ここではpoco.tcl)にやることを書いておく – design_visionでゲート配線が見れるがこれは参考程度に使う • 実行 dc_shell-t –f poco.tcl | tee poco.rpt レポートファイルがpoco.rptに生成される poco.tclの中身 set search_path [concat "/home/cad/lib/osu_stdcells/lib/tsmc018/lib/" $search_path] set LIB_MAX_FILE {osu018_stdcells.db } set link_library $LIB_MAX_FILE set target_library $LIB_MAX_FILE read_verilog alu.v read_verilog rfile.v read_verilog poco1.v current_design "poco" create_clock -period 8.0 clk ライブラリの設定 ファイルの読み込み クロック周期の設定:8nsec → 125MHz 入出力遅延の設定 set_input_delay 2.5 -clock clk [find port "idatain*"] set_input_delay 7.0 -clock clk [find port "ddatain*"] set_output_delay 7.5 -clock clk [find port "iaddr*"] set_output_delay 3.0 -clock clk [find port "ddataout*"] set_output_delay 3.0 -clock clk [find port "daddr*"] set_output_delay 3.0 -clock clk [find port "we"] 入力遅延の設定 ‘0’ 2:0 00 01 10 extext11 pcsel THB ADD 00 01 10 S Y A + zero ‘1’ + 0 1 zero 7:0 comsel 10:0 00 7:0 pcjr B rf_a rf_b alu_bsel 01 10 ext ext0 aadr 10:8 PC ‘7’ 0 1 badr cadr rf_c casel rf_csel 00 01 rwe 10 7:5 2.5ns idatain 7ns ddatain iaddr … 命令メモリ ddataout データメモリ … daddr we 出力遅延の設定 ‘0’ 2:0 00 01 10 extext11 pcsel THB ADD 00 01 10 S Y A + zero ‘1’ + 0 1 zero 7:0 comsel 10:0 00 7:0 pcjr B rf_a rf_b alu_bsel 01 10 ext ext0 aadr 10:8 PC ‘7’ 0 1 rf_c casel 0.5nsくらいは必要 8-0.5=7.5ns badr cadr rf_csel 00 01 rwe 10 7:5 idatain 7ns ddatain 5nsくらいは必要 8-5=3ns iaddr … 命令メモリ ddataout データメモリ … daddr we 残りの設定 ファンアウトは12 set_max_fanout 12 [current_design] set_max_area 0 面積は小さいほど良い compile -map_effort medium -area_effort medium そこそこがんばって report_timing -max_paths 10 report_area report_power 長い方から10本表示 面積、電力を表示 write -hier -format verilog -output poco.vnet quit ネットリスト生成 クリティカルパスの表示 Point Incr Path -------------------------------------------------------------------------clock clk (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 input external delay 2.50 2.50 r idatain[12] (in) 0.00 2.50 r … rfile_1/r7_reg[15]/D (DFFPOSX1) 0.00 7.79 r data arrival time 7.79 clock clk (rise edge) 8.00 8.00 clock network delay (ideal) 0.00 8.00 rfile_1/r7_reg[15]/CLK (DFFPOSX1) 0.00 8.00 r library setup time -0.18 7.82 data required time 7.82 -------------------------------------------------------------------------data required time 7.82 data arrival time -7.79 -------------------------------------------------------------------------slack (MET) 0.04 クロックの立上りがスタート 遅延時間の合計は7.79 クロックの立上りがエンド セットアップタイム0.18 スラック(余裕)が0.04 動作周波数=1/(目標周期ースラック) スラックがマイナスのときは加算する クリティカルパス ‘0’ 2:0 00 01 10 extext11 pcsel THB ADD 00 01 10 S Y A + zero ‘1’ + 0 1 zero 7:0 comsel 10:0 00 7:0 pcjr B rf_a rf_b alu_bsel 01 10 ext ext0 aadr 10:8 PC ‘7’ 0 1 badr cadr rf_c casel rf_csel 00 01 rwe 10 7:5 idatain 7ns ddatain iaddr … 命令メモリ ddataout データメモリ … daddr we 面積と電力評価 Combinational area: 35211.000000 組み合わせ回路 Noncombinational area: 15104.000000 Net Interconnect area: undefined (No wire load specified) Total cell area: Total area: 50315.000000 undefined (単位は多分um2: 0.2mm角くらい) F.F. ここはレイアウトしないとわからない Cell Internal Power = 2.7845 mW (76%) Net Switching Power = 868.9760 uW (24%) --------Total Dynamic Power = 3.6535 mW (100%) Cell Leakage Power ネットを駆動する 電力 内部を含む全動作電力 もれ電力は0.18um ではあまり多くない = 88.5728 nW 125MHz動作時、シミュレーションをしていないため、スイッチング率は50%で評価しており 結果は目安に過ぎない 演習 1.周期を7.8nsにしてPOCOを論理合成し、 動作周波数、面積、電力を評価せよ。 2.前回のLDDとSTDを実装したPOCOを論 理合成し、動作周波数、面積、電力を評価せ よ。周期は8nsでやってみよ
© Copyright 2024 ExpyDoc