組み込みシステムにおけるソフトウェアとハードウェアのギャップを埋めることでビジネスの成功を実現します
テクノロジーソリューションの設計と試作段階は通常、長期間にわたり、ビジネスの成功にとって極めて重要です。これらのプロジェクトでは、初期投資額が高額になる場合があります。そのため、リスクと期待は大きくなります。パンデミックの影響による配送遅延や電子部品不足が依然として続いているため、多くの企業は市場に投入し、確約された在庫を期日通りに納品するという大きなプレッシャーを感じています。
アプリケーションは処理能力の向上を頻繁に要求するため、ハードウェアリソースの獲得競争は絶え間なく続きます。つまり、ハードウェアは当初は大きすぎる可能性があり、時間の経過とともに陳腐化していく可能性があります。そのため、技術製品のハードウェア機能を継続的に追加するために設計を改訂する必要があり、コストと投資が不必要に増大することになります。
最後に、組み込みシステム、ハードウェア、ソフトウェアの知識を同時に備えた経験豊富なスタッフを見つけることは必ずしも容易ではありません。企業によっては、組み込みシステムの経験がないエンジニアが技術プロジェクトを主導・開発している場合もあります。そのため、これらのシステムへの馴染みやすさや、他のシステムとの統合を容易にする標準機能を重視し、開発キット(Jetson Nano、Arduino、Raspberry PIなど)を選択する場合があります。開発ボードには独自の産業用途があり、詳しくはこちらのブログ記事をご覧ください。しかし、量産段階では必ずしもそうとは限りません。
これらすべての要因は、言語プログラミング、アルゴリズムアーキテクチャ、そしてアプリケーションソフトウェア開発全体に関する決定に悪影響を及ぼす可能性があります。場合によっては、カスタマイズされたオペレーティングシステムや専用オペレーティングシステムではなく、標準のオペレーティングシステムを使用すること、あるいは独自のアルゴリズムではなくStack Overflowのコラージュコードを使用することという決定に至ることもあります。これは、未活用のリソース、過大なハードウェアコンポーネント、不要な遅延、追加の再設計または再認証コストにつながります。そのため、最初は費用対効果の高いソリューションに思えるかもしれませんが、後になって、必ずしも最も費用対効果の高いソリューションではなかったことが判明するかもしれません。さらに悪いことに、通常運用中にハードウェアがフル稼働すると、発熱、平均故障間隔の短縮、修理コストの増加につながる可能性があります。
アルゴリズムアーキテクチャ
企業がアルゴリズムアーキテクチャを構築する上で一般的に採用されている手法を分析してみましょう。残念ながら、組み込みシステムを扱うエンジニアの中には、何の計画も設計もなしにプログラミングに着手してしまう人もいます。問題は、アルゴリズムが効果的か非効率的かが、事後になって初めて分かるということです。
理想的なアルゴリズムの例として、線形アルゴリズムと対数アルゴリズムの2つを挙げます。各基本演算に1秒かかると仮定します。線形アルゴリズムの場合、入力が増えると実行時間も増加します(表1を参照)。一方、このアルゴリズムが対数的に動作する場合、入力が増えても実行時間は一定に保たれます(表2)。例えば、二分探索アルゴリズムは対数的な動作を示します。
表 1. 線形アルゴリズムの入力と実行時間の関係。
入力 |
実行時間 |
10 |
0.00000001 |
100 |
0.0000001 |
1000 |
0.000001 |
1 000 000 000 |
1 |
表2. 対数アルゴリズムの入力と実行時間の関係。
入力 |
実行時間 |
10 |
3.3E-09 |
100 |
6.6E-09 |
1000 |
1.0E-08 |
1 000 000 000 |
3.0E-08 |
これら 2 つの例は、アルゴリズムが線形または対数的に動作することはほとんどないため、現実世界では通常見られません。「Stupid sort」アルゴリズムは、プログラミングを開始する前に計画や設計が行われなかった場合の結果の例として使用できます。これは、階乗動作を持つカードのグループでのランダム テストに基づく構造化アルゴリズムです (表 3)。入力が 100 個ある場合、解決には 3.2E+183 年かかります。NASA によると、宇宙の年齢は 13,7E9 年であるため、宇宙が作成された日にアルゴリズムを実行すると、まだ解がないまま実行されていることになります。ハードウェア リソースの無駄を避けるために、「Stupid sort」アルゴリズムのような階乗アルゴリズムは使用しないでください。
表 3. 階乗アルゴリズムの入力と実行時間の関係。
入力 |
実行時間 |
期間(年) |
10 |
10 |
3.171E-7 |
100 |
1.0E+191 |
3.2E+183 |
1000 |
? |
? |
1 000 000 000 |
? |
? |
実際、ハードウェアには限界があります。一般的に、組み込みシステムの時間スケールは人間には把握しにくいものです。そのため、この分析ではより理解しやすいスケールを定義します。2014年の一般的なコンピューターに搭載されている典型的な3.9GHzプロセッサの場合、1CPUサイクルは表4に示す時間で1秒かかると言えます。このような場合、ハードドライブ内のファイルの読み取りには最悪のシナリオで1.5年、RAMメモリ内のファイルの読み取りには32秒かかる可能性があります。このように、設計が不十分なアルゴリズムはリソースを無駄に消費します。そのため、ソフトウェアの開発方法を見直す必要がある場合、より堅牢で機能強化されたハードウェアが必要であると考えるかもしれません。
表 4. コンピューター内の通常のプロセスの実行時間をわかりやすいスケールで示します。
活動 |
時間 |
ヒューマンスケール |
CPUサイクル |
0.256ナノ秒 |
1秒 |
キャッシュL1 |
1.026ナノ秒 |
4秒 |
キャッシュL2 |
3.077ナノ秒 |
12秒 |
キャッシュL3 |
6.154ナノ秒 |
24秒 |
RAMメモリ |
8.4ナノ秒 |
32秒 |
ハードドライブ – 最良の場合 |
2.9ミリ秒 |
132日 |
ハードドライブ – 最悪の場合 |
12ミリ秒 |
1.5年 |
SDD |
85μs |
3日20時間 |
コンテキストの変更 |
10μs |
10.8時間 |
量子 |
100ミリ秒 |
12.4年 |
テクノロジー製品を開発する際に、どのようにビジネスの成功を達成するのでしょうか?
綿密なアルゴリズムアーキテクチャの構築が必要です。組み込みシステムに精通したエンジニアを少なくとも1名含むチームを編成する必要があります。この専門家は、特定のハードウェアで動作するアルゴリズムを設計するのに最適な人材です。基本的に、ハードウェアに最適なソフトウェア(その逆ではありません)に改良することで、投資収益率が向上し、運用や製造における多くの課題を解消できます。
組み込みシステムエンジニアは、ソフトウェア開発におけるよくあるミスを回避するための戦略、計画、プログラミングを行い、ハードウェアの性能を予測することができます。これにより、課題を軽減し、ビジネスの成功をより容易に達成できるようになります。もしかしたら、あなたの会社でインダストリー4.0、IoT、ロボティクス、画像処理のヒーローになれるかもしれません。
このトピックについてさらに読みたい場合は、以下をご覧ください。 このブログ。また、 このページをご覧ください 組み込みシステムの詳細については、こちらをご覧ください。