b + c; d = e + f; Veryl(ハードウェア) C 1 2 assign a = b + c; assign d = e + f; 基本的には「何をどの順番で実行するか」 2 つの加算器回路が物理的に存在し, という時系列を記述 毎サイクル同時に動く Veryl ソフトウェアのような実行順序ではなく,回路が同時に動くことを意識する 13
遅延: 0.8 ns Reg B (FF) AND ... OR MUX 次段 Reg群 遅延: 1.5 ns Reg C (FF) NOT MUX AND ... (Capture) OR 遅延: 2.2 ns Reg D MUX AND MUX OR MUX (FF) 遅延: 3.8 ns(クリティカルパス) ... MUX ※ 遅延値は例 回路全体のクロック周期は,最も遅延の長い「クリティカルパス」で決まる 他の経路にどれだけ余裕があっても,この 1 箇所が全体の動作周波数を制限する 14
C2 C3 C4 C5 IF ID EX MEM WB 命令 2 C6 C7 C8 C9 C10 IF ID EX MEM WB 5段階パイプライン(並行処理:毎サイクル1命令完了!) 命令 1 命令 2 命令 3 命令 4 C1 C2 C3 C4 C5 C6 C7 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM C8 WB 1 命令のレイテンシは変わらないが,理想的には毎サイクル 1 命令を完了できる 20