マルチコアで処理時間短縮の前にやるべきこと:組み込みマルチコア進化論(1)(2/4 ページ)
組み込みシステムでもマルチコアは当たり前。でもソフトウェア開発者はどのように開発を行えばいいの?
並列化可能部分のソフトウェア性能見積もり
組み込みソフトウェアの性能見積もりは、次の2つに着目します。
- 性能要求を満たすためのリアルタイム性を十分に確保する
- 特別に時間のかかる処理がある部分について高速化を検討する
このような性能要求に対しては、ターゲットで動作させてみなくては分かりません。ターゲットが完成する前には、CoSimulation環境などの仮想環境を用意するか、もしくはWindows(パソコン)環境などにおいてある程度の性能見積もりを行うことなどが考えられます。
ここでは、コアの数を決定する際に必要な性能見積もりについて記します。見積もりを行うには、まず次に記す「アムダールの法則(注)」の知識が必要です。
ここで重要なのは「コアの数を決定するには、並列化可能な部分の比率が重要である」ということです。むやみにコアの数を増やしても、ソフトウェアにおいて並列化可能でなければその性能を生かすことはできません。コアの数を決定するには、ソフトウェア開発における並列化可能部分の割合見積もりが必要になります。
並列化可能な部分が全体の80%の場合
並列化が可能な部分が80%で、それを4分割した場合を考えてみましょう。並列化可能な部分が80%なので、並列化不可能な部分は全体の20%ということになります。並列化可能な部分のコアを4分割して4倍の性能アップを行うと、80%が4倍に性能アップするため、20%の時間で処理が完了します。そして、並列化不可能な部分を加えた全体の処理時間は40%となり、並列化以前と比べ2.5倍の性能になります。
並列化可能な部分が全体の40%の場合
次に、並列化が可能な部分が40%で、それを4分割した場合を考えてみましょう。並列化可能部分が40%なので、並列化不可部分は全体の60%ということになります。並列化可能部分を4分割し4倍の性能アップを行うと、40%が4倍に性能アップするため、10%の時間で処理が完了します。そして、並列化不可部分を加えた全体の処理時間は70%となり、並列化以前と比べる約1.429倍の性能になります。
よって並列化を4分割で行う場合、上記の結果から分かるように、並列化可能な部分が80%なら2.5倍の性能が望めますが、並列化可能な部分が40%なら約1.429倍の性能アップしか望めません。並列化可能な部分の割合がいかに重要であり、全体のシステム性能を考えた場合に単にコアの数を増やしただけでは性能アップは困難だということが分かります。性能UPにはソフトウェアの構造が大きく影響し、またシステムにおけるコアの数を決定するにはソフトウェアにおける並列化可能部分の見積もりが必要だということになります。
並列化による処理時間カイゼン効果
全体の性能を考えた場合、最も効果のあるポイントで分割を行うことが重要となってきます。それらの一例を紹介します。まず、ソースコードの繰り返し処理の部分では繰り返し処理が実行されるため、実際の実行ステップは多くなり、その結果処理時間は長くなります。こうした実際の処理時間が多くかかっている部分を高速化した方が性能アップの効果が期待できます。
全体の処理時間が60%の部分を4つに並列化することで、45%の高速化が期待できます。しかし、全体の処理時間が10%部分を4つに並列化した場合は、7.5%の高速化しか期待できません。つまり、処理時間の長い部分について高速化を検討した方高速化による効果が期待できます。
Copyright © ITmedia, Inc. All Rights Reserved.