ソフトウェアとハードウェアの違い
ソフトウェアとハードウェアの違いはわかりますか?
FPGAというデバイスができてから、FPGAもソフトウェアと言えるとも思います。
ハードウェアを「簡単に書き換えられない」、
ソフトウェアを「簡単に書き換えられる」
と定義すれば。。。
そうなると、ハードウェアは基板回路とASICとなり、
ソフトウェアは組み込みマイコンやPCアプリケーションとFPGAとなります。
ただ根本的に違うのは、
並列処理がハードウェア、逐次処理がソフトウェアとだと思います。
※CPUコアが4個とか8個とかになるとその分並列処理できますが、
それはコア数によるもので、HDLでは作りたいだけ並列処理できます。
下の図はFPGA(SoC)の場合を例にとって構成を記載しています。
ソフトウェアは、CPUを動かす為のもの。
ハードウェアは、論理回路そのもの。
となり、それぞれ言語が違います。並列処理用か逐次処理用かによります。
車でいうと、ハードウェアは車、ソフトウェアは人間(運転手)となります。
さて、なぜ、ソフトウェアは逐次処理なんでしょうか?
単に、リソース(資源)を最小に抑え、流用しているからです。
これは1例ですが、四則演算(加算,減算,乗算,除算)と条件演算とレジスタだけの構成で
処理を行っているからです。
(CPUは色々あり、その構成は色々あるので、ここでは割愛します。)
尚、過去にとあるメーカーの専用CPUを設計した経験があります。
この時は、どのような命令があるのかお客様に聞き。。。分岐するのか、ストールする処理なのか、、、
色々と検討して設計しました。