Pulse

NI社の「LabVIEW 8.6」、マルチコアとFPGAへの対応を強化

[2008年10月号]

この記事を :  印刷する プリントする ブックマーク  はてなブックマークに登録 この記事をクリップ! Buzzurlにブックマーク Yahoo!ブックマークに登録 メールで送る メールで送る
写真1 NIWeek 2008基調講演の様子
写真1 NIWeek 2008基調講演の様子

 米National Instruments(以下、NI)社は、2008年8月5日~7日まで米国テキサス州オースチンで『NIWeek 2008』を開催(写真1)。計測機器の制御や組み込みソフトウエア開発に利用されているグラフィカル開発環境「NI LabVIEW」の最新バージョン「LabVIEW 8.6」の新機能を公開した。

 LabVIEWは、プログラミングの専門家でなくても理解しやすい直感的なインターフェースを備えたグラフィカル開発環境である。一般的なプログラミング言語における関数に当たるものを、VI(Virtual Instruments)と呼ぶGUI(graphical user interface)のアイコンで表現し、それらを任意に配置/接続することでプログラムを作成できる。作成後のプログラムを新たなVIとして利用することも可能である。

 最新バージョンであるLabVIEW 8.6は、プログラミングに関する知識がさらに少ない人でも利用できるようにすることで、LabVIEWユーザーの底辺を広げることを目的として開発された。前年の『NIWeek 2007』で発表された「LabVIEW 8.5」と比べて、マルチコアシステムとFPGAにかかわるコード記述作業を大幅に簡素化したことを最大の特徴としている。

手作業での処理の分散化が不要に
 LabVIEWにおけるマルチコアシステムへの対応は1998年に始まったが、リアルタイム処理におけるマルチコア対応は昨年発表のLabVIEW 8.5からになる。LabVIEW 8.5では、分散処理を行うことを前提としてプログラム上でスレッドを記述し、各スレッドに、その処理を担うコアを割り当てる。しかし、行列の演算やフーリエ変換などのように、高い処理能力を要求されるものの、スレッド1本で表現できるようなプログラムの場合には、ユーザー自身でスレッドを分割しなければ各コアに処理を割り当てて分散処理を行うことはできなった。

 LabVIEW 8.6では、そうした処理負荷の重いプログラムに用いる1200種類以上の「解析関数(Analysis Function)」について、マルチコアにおける処理に最適化し、関数内部でスレッド分割とコアの割り当てを行うようにした。

図1 LabVIEW 8.6のマルチコアシステムへの対応例(提供:NI社)
図1 LabVIEW 8.6のマルチコアシステムへの対応例(提供:NI社)
画像データに対する畳み込み処理をデュアルコアプロセッサで分散処理する場合、LabVIEW 8.5ではユーザー自身で画像データとスレッドの分割を行う必要があった。それに対し、LabVIEW 8.6ではそうした作業が関数内部で自動的に行われる。

 例えば、画像データに対してフィルタリングを行うことでノイズを除去する際には、画像データに対する畳み込み(image convolution)処理が行われる。これをデュアルコアプロセッサで行う場合、従来であれば画像データそのものを2つに分割するとともに、スレッドも2本分記述する必要があった。それに対し、LabVIEW 8.6では、アイコンを1つ使ってプログラムを記述するだけでマルチコアシステムの処理能力を利用できるので、プログラミングの工数を大幅に削減することができる(図1)。さらに、マルチコア処理に対応した解析関数ではメモリー管理機能も最適化されており、分散処理時により高い処理能力を発揮できるようになった。デュアルコアプロセッサによる画像データの畳み込み処理の場合、LabVIEW 8.5で手作業によりスレッド分割したプログラムでは、シングルコアと比べて処理速度が1.7~1.8倍になるが、LabVIEW 8.6では1.9倍にまで向上する。

FPGAプログラミングも自動化
 NI社は、各種インターフェース、マイコン、FPGAなどを搭載したボードを組み込んで運用する計測/制御プラットフォーム「PXI」や、あらかじめマイコンとFPGAを搭載してあるコントローラに機能拡張モジュールを組み合わせて構成する制御システム「CompactRIO」などを展開している。これらのハードウエア製品のプログラミングにはLabVIEWを利用することになる。

 LabVIEWとハードウエア製品をつなぐという意味で重要な役割を果たしているのがFPGAである。FPGAによりI/Oの再構成を自由に行うことができるため、NI社のハードウエア製品の用途は大幅に広がった。

 LabVIEWでは、2003年から提供を開始した「LabVIEW FPGA モジュール」により、通常はVHDLなどを使ってテキストベースで記述する必要のあるFPGAプログラミングをグラフィカルに行えるようにしている。しかし、グラフィカルにFPGAプログラミングが行えるといっても、従来はFPGAに関するある程度の専門知識が必要だった。LabVIEW 8.6では、組み込みコード(マイコンで用いるプログラム)に記述されているI/Oに関する情報から、自動的に必要なI/Oを持ったFPGAの回路を構成する「Scan Engine」を開発することにより、FPGAプラグラミングをほとんど行わなくてもFPGAを利用できるようになった。

 Scan Engineは、ミドルウエアに近い性質を持っており、LabVIEWで記述した組み込みコードのコンパイル時にリアルタイムOSのアプリケーションとして組み込まれる。そして、組み込みコードから自動的にI/Oに関するメモリーテーブルを生成するとともに、FPGA側にも「RIO SCAN Interface」と呼ぶインターフェース機能を組み込むことにより、FPGAプログラミングを自動化する。Scan Engineは、LabVIEWユーザーがFPGAで利用することの多いI/O関連の関数のうち約80%をカバーしているという。

 また、FPGAにおける機能実現に必要なIP(Intellectual Property)については、自社製の新しいIPコアを拡充するとともに、既存のVHDL記述によるIPをLabVIEWに直接インポートできる「コンポーネントレベルIP(CLIP)ノード」機能を新たに開発した。

“非同期”でシステム設計を実現
 LabVIEWによるプラグラミングの可能性をさらに広げる機能として開発されているのが、システム設計モジュールの「System Diagram」である。このモジュールについては、NIWeek 2007においてコンセプトが紹介されていた。

 従来のLabVIEWでは、PXIやCompactRIOなど個々のハードウエア内部で使われるプログラムを、VIのアイコンを使ってグラフィカルに表示することはできていた。しかし、これらのハードウエアを連動させた全体システムのグラフィカル表示や、プログラム記述には対応していなかった。

 現在開発中のSystem Diagramでは、各ハードウエアを示す大きな枠の中に関連するVIが配置され、それらの間の接続状況を表示することで、システム全体のグラフィカル表示を実現する。各VIのアイコンを選択すれば、従来のLabVIEWのプログラミング画面に移行して、再記述などを行うことができる。

 NIWeek 2008で公開した開発版では、異なるハードウエア上でも動作できるVIとして非同期VI(AVI:Asynchronous VI)と非同期接続(Asynchronous Wires)というコンセプトを導入した。現行のLabVIEWのプログラムは、ある処理の結果を受け取るまで次の処理を待つ同期(Synchronus)関数と同期接続を前提として構成されている。しかし、処理結果を得るまでに時間のかかるハードウエア(プログラム)と、処理を連続して行う必要のあるハードウエアを連動させる場合、同期関数と同期接続だけでプログラミングを行うと、ある部分でプログラムが停止してシステムがフリーズしてしまう可能性がある。この問題を解決するためのものが非同期のコンセプトである。

 基調講演では、LabVIEWへのSystem Diagramの導入時期は明らかにされなかった。しかし、NI社フェローで“LabVIEWの父”と呼ばれているJeffrey L Kodosky氏は、個別インタビューにおいて「2007年にコンセプト、2008年にデモンストレーションと来ているので、2009年中には最初のバージョンを投入したい」と答えた。

(朴 尚洙)



この記事を :  印刷する プリントする ブックマーク  はてなブックマークに登録 この記事をクリップ! Buzzurlにブックマーク Yahoo!ブックマークに登録 メールで送る メールで送る

Sponsor Links

Partner Solutions

EDN RESOURCE CENTER


新着ホワイトペーパー情報




アナログ・デバイセズ - 22件
インターナショナル・レクティファイアー・ジャパン - 1件
ナショナル セミコンダクター ジャパン - 9件
リニアテクノロジー - 15件
日本アルテラ - 4件
リード・ビジネス・インフォメーション - 1件

このカテゴリーの他の記事