nao-milkの経験ブログ

25年間の半導体エンジニア経験で知り得た内容を記載したブログです。

ソフトウェアとハードウェアの違い

f:id:nao-milk:20210317123239p:plain

ソフトウェアとハードウェアの違いはわかりますか?

 

FPGAというデバイスができてから、FPGAもソフトウェアと言えるとも思います。

ハードウェアを「簡単に書き換えられない」、

ソフトウェアを「簡単に書き換えられる」

と定義すれば。。。

そうなると、ハードウェアは基板回路とASICとなり、

ソフトウェアは組み込みマイコンやPCアプリケーションとFPGAとなります。

 

ただ根本的に違うのは、

並列処理がハードウェア、逐次処理がソフトウェアとだと思います。

※CPUコアが4個とか8個とかになるとその分並列処理できますが、

 それはコア数によるもので、HDLでは作りたいだけ並列処理できます。

 

下の図はFPGA(SoC)の場合を例にとって構成を記載しています。

f:id:nao-milk:20210311162455p:plain

ソフトウェアは、CPUを動かす為のもの。

ハードウェアは、論理回路そのもの。

となり、それぞれ言語が違います。並列処理用か逐次処理用かによります。

車でいうと、ハードウェアは車、ソフトウェアは人間(運転手)となります。

 

さて、なぜ、ソフトウェアは逐次処理なんでしょうか?

単に、リソース(資源)を最小に抑え、流用しているからです。

これは1例ですが、四則演算(加算,減算,乗算,除算)と条件演算とレジスタだけの構成で

処理を行っているからです。

(CPUは色々あり、その構成は色々あるので、ここでは割愛します。)

 

尚、過去にとあるメーカーの専用CPUを設計した経験があります。

この時は、どのような命令があるのかお客様に聞き。。。分岐するのか、ストールする処理なのか、、、

色々と検討して設計しました。