FPGAやASICの設計について調べていると、「ソフトマクロCPU」と「ハードマクロCPU」という用語に出くわすことがあります。どちらもFPGAなどで使われるCPUの種類ですが、その設計の仕方や使われ方に違いがあります。
この記事では、ソフトマクロCPUとハードマクロCPUが何なのか、両者の違いとそれぞれのメリット・デメリットについて初心者向けに解説します。
ソフトマクロCPUとは?
ソフトマクロCPUは、論理ゲートで構成されたCPUの設計データをFPGAなどのプログラマブルデバイスに実装する形態のことです。FPGAのロジックセルを使ってCPUコアを構成するため、ソフトウェアのようにプログラムによって構造を定義します。
特徴
- 柔軟性が高い:ソフトマクロCPUは、FPGA上で実現されるため、構成を自由に変更できます。CPUのアーキテクチャや機能を必要に応じてカスタマイズしたり、プロセッサのコア数を増やしたりすることが容易です。
- FPGAのリソースを消費:ソフトマクロCPUはFPGAのロジックリソースを使うため、CPU以外の回路をFPGAに配置するための領域が制限されます。そのため、CPUの規模が大きくなるほどFPGAのリソースを多く使うことになります。
- 速度がハードマクロより遅い:FPGAのロジックセルを使ってCPUを構成するため、ASIC(専用の集積回路)やハードマクロCPUと比べると、動作速度が遅くなる傾向があります。
ソフトマクロCPUの例
代表的なソフトマクロCPUとして、以下のものがあります。
- Xilinx MicroBlaze:Xilinx FPGA向けのソフトマクロCPUで、カスタマイズが可能です。
- Intel Nios II:Intel(Altera)のFPGA向けソフトマクロCPUで、柔軟な設計が可能です。
- RISC-Vベースのコア:オープンソースで使われるRISC-VアーキテクチャのソフトマクロCPUが多く存在し、カスタマイズや設計の学習に使われています。
ハードマクロCPUとは?
ハードマクロCPUは、FPGAに事前に固定的に実装されたCPUのことです。FPGAの一部に専用のハードウェア回路として設計・配置されているため、ソフトマクロCPUとは異なり、FPGA上のロジックセルを使わずに動作します。
特徴
- 高性能・高効率:ハードマクロCPUは専用の回路として実装されているため、動作速度が速く、電力効率も高いです。そのため、リアルタイム処理や高い演算性能が求められるアプリケーションに向いています。
- 構成の柔軟性は低い:事前に固定された回路なので、CPUのアーキテクチャや機能を自由に変更することはできません。ただし、メモリや周辺回路といった外部の構成は変更できるため、システム全体の設計には柔軟性がある程度あります。
- FPGAリソースを消費しない:ハードマクロCPUはFPGAのロジックセルを使わないため、FPGAのリソースを他の用途(アクセラレータや周辺回路の実装など)に活用することができます。
ハードマクロCPUの例
代表的なハードマクロCPUとして、以下のものがあります。
- Xilinx Zynq SoC:FPGAファブリックとARMプロセッサを組み合わせたSoCで、FPGA部分でカスタムロジック、ARM CPUで汎用処理を行えます。
- Intel Stratix 10 SoC:Intel FPGAにARMプロセッサを組み込んだSoCで、高性能のFPGA部分とARM CPUを組み合わせた設計が可能です。
ソフトマクロCPUとハードマクロCPUの比較
項目 | ソフトマクロCPU | ハードマクロCPU |
---|---|---|
柔軟性 | 非常に高い。設計や機能を変更可能。 | 固定的な設計。変更はできない。 |
性能 | FPGAロジックリソースを使用するため遅い | 専用ハードウェアとして高速に動作 |
FPGAリソース | FPGAのリソースを消費 | FPGAのリソースは消費しない |
消費電力 | 高め | 専用設計のため低消費電力 |
用途 | プロトタイピング、低速でカスタム設計が必要な場合 | 高性能・高効率が求められる場合 |
ソフトマクロCPUとハードマクロCPUの選択
両者の使い分けについて、以下のようなポイントで検討することができます。
- 設計の柔軟性が重要か:カスタムのCPUアーキテクチャを使いたい、CPUの動作を細かく調整したい場合はソフトマクロCPUが向いています。
- 高い性能や電力効率が求められるか:リアルタイム性が重要だったり、高い演算性能が必要なアプリケーションにはハードマクロCPUが適しています。
- FPGAのリソースをどう活用するか:FPGAのロジックセルを他の周辺回路やカスタムロジックに多く使いたい場合は、ハードマクロCPUを使うことでFPGAリソースを温存できます。
まとめ
ソフトマクロCPUとハードマクロCPUは、FPGAなどのプログラマブルデバイスで使われるCPUの2つの形態です。ソフトマクロCPUはFPGA上で自由に設計できる柔軟性があり、プロトタイピングやカスタマイズ設計に適しています。一方、ハードマクロCPUは固定的に実装された専用ハードウェアで、速度と効率が高く、高性能アプリケーションに向いています。
FPGAを使ったシステム設計では、用途に応じてどちらのCPUを選ぶべきかを考えることが重要です。設計の柔軟性を取るか、高性能と効率を取るかで選択肢が変わるため、システム要件に合わせて最適なCPUタイプを選びましょう。