組み込み分野へ急接近、リアルとシミュレーションをつなぐ組み込み企業最前線 − ナショナルインスツルメンツ −(2/2 ページ)

» 2007年09月18日 00時00分 公開
[石田 己津人,@IT MONOist]
前のページへ 1|2       

マルチコア対応の新バージョンが登場

 組み込み分野で存在感を増しているNI製品だが、弱点も指摘されている。「PCベースのため、複雑な演算を高速処理しなければならないようなシミュレーションでは、性能が不足してしまう」(許斐氏)のだ。特に、関数型のグラフィカル言語であるLabVIEWは、C言語のような手続き型のテキスト言語に比べ、プログラム実行のオーバーヘッドが高く、プラットフォームに合わせた細かな最適化が行えないことから実行速度が若干劣る面もあるという。

 しかし、2007年8月にリリースされた最新バージョン「LabVIEW 8.5」では、性能面でのハンディは大幅に解消されそうだ。新バージョンの最大の特徴は、マルチコアプロセッサへの最適化を進めている点である。同社マーケティング部 マーケティングエンジニアの古川亨氏は次のように話す。「LabVIEWは10年前からマルチタスク、マルチスレッドへの対応を果たしており、その精度を高めてきたが、ここ1〜2年でプロセッサのマルチコア化が一般化してきた。これを受けて、さらに機能強化を進めた」。

日本ナショナルインスツルメンツ マーケティング部 マーケティングエンジニア 古川 亨氏 日本ナショナルインスツルメンツ マーケティング部 マーケティングエンジニア 古川 亨氏

 プロセッサがマルチコア化しても、それに合わせてプログラムを最適にスレッド化しないと、プロセッサ性能を十分に生かせないが、プログラムのスレッド化は、開発者にかなりのスキルが求められる。LabVIEW 8.5は、そのスレッド化を2段階で支援する。1つ目は、LabVIEW自体が自動でプログラムのスレッド分割を行うもの。2つ目は、人手によるマルチスレッドプログラミングを支援するものだ。

 スレッドの自動分割は、LabVIEWがプログラムの中身を解析し、並列性の高いプロセスを抽出し、スレッド化してOS経由で複数のコアへ処理を受け渡す。「例えば、クルマの車輪を制御するプログラムがあるとして、前輪、後輪で並列的に処理が行われていれば、LabVIEWが自動的にスレッド分割を行う。例えば、コアが2つなら2つのスレッド、4つなら4つのスレッドに自動的に分割する(最大スレッド数はコア数×4スレッド)」(古川氏)という。

 2つ目の支援機能により、特別なスキルのない開発者も効率的なマルチスレッドプログラムを容易に設計できるだろう。もともとLabVIEWは、データフロー記述方式であり、データフローを視覚的に記述しながらプログラムを設計できる。そのため、1つのデータフローを分割(並列化)するのも簡単だ。例えば、画像処理プログラムで画像の上半分と下半分で並列処理する場合も、データフローの特定部分を分割するだけで済む。スレッドの生成や停止を特別に記述する必要がなく、LabVIEWが自動的に必要な処理を行う。

LabVIEW上でデータフローを分割(並列化)するだけで効率的なスレッド処理が可能になる 画像3 LabVIEW上でデータフローを分割(並列化)するだけで効率的なスレッド処理が可能になる

 組み込みシステム向けのLabVIEW Real-Timeモジュールのマルチコア対応も同様に進化している。GUIでのマルチスレッドプログラミングを可能とし、並列タスクの負荷を複数コアへ自動分散する。また、各コアへのスレッド割り当てを設定でき、細かな性能調整が可能だ。さらに、新しくなった「Real-Time 実行トレースツールキット」が登場し、マルチスレッドプログラムのデバッグ、実行状況のトレースも実現した。組み込みシステムでもプロセッサのマルチコア化は進んでいるが、LabVIEWは、ハードウェア進化を生かせる開発環境といえよう。

 では、マルチコアプロセッサへの最適化により、LabVIEWで設計したプログラムは、どれぐらい実行速度がアップするのか。古川氏は「もともと並列性が高いプログラムならば、手を入れずとも、高い性能アップが期待できる」と指摘する。実際、PCホスト上の計測・制御プログラムでは、優れたベンチマーク結果が報告されている。車載トランスミッションのテストにおいて、データを集録する計測プログラムでは、コードを書き換えることなく、1コアから4コアプロセッサへ切り替えた結果、処理チャネル数を22から80チャネル以上に増やせた。また、既存の制御プログラムでデータ処理の並列化を進め、プロセッサコアを1から8へ増やしたところ、実行速度が一気に20倍になった例もあるという。これならば、組み込み分野でも高性能システムの開発に役立ちそうだ。

ソフトウェア開発の抽象化を推し進める

 LabVIEWの新バージョンと併せてリリースされた新しい機能拡張ツール「LabVIEW Statechart(ステートチャート)」も注目に値する。UMLに基づくステートチャート(状態遷移)図により抽象的にプログラムを設計、コードを自動生成できる。開発が大規模化する組み込み分野でもUMLによるモデルベース開発は浸透しつつあるが、業界標準のモデリング表記法であるUMLベースでLabVIEWを扱えるようになったことの意味は大きい。

LabVIEW上でもUMLでおなじみのステートチャート図を使ったプログラム設計(モデルベース開発)が可能となった 画像4 LabVIEW上でもUMLでおなじみのステートチャート図を使ったプログラム設計(モデルベース開発)が可能となった

 一方、2007年8月にNIが米国で開催したプライベートカンファレンス「NIWeek 2007」において、LabVIEWの次世代バージョンで実装を予定している、新しい設計手法の一端が披露された。それは、LabVIEW上でアイコン化されたハードウェアをつなぎ合わせ、実装するプログラムやI/O処理を割り当てていくというもの。現在のLabVIEWの開発環境よりはるかに抽象的で、ほとんど“イラスト”の世界。許斐氏は「ソフトウェアの開発言語は、機械語から始まり、現在のモデルベース言語まで抽象化の一途をたどっている。この流れは、今後も続くだろう」と指摘する。NI製品は今後も組み込みの分野へ大きなインパクトをもたらしそうだ。


「組み込み企業最前線」バックナンバー
前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.