GAIO CLUB

2005年11月02日

ノンプログラミングで画像アセンブリソースを生成 リコー社製「Riシリーズ用」上流プログラミングツール

GAIO CLUB 特集
GAIO CLUB【2005/11月号】
ノンプログラミングで画像処理アセンブリソースを生成
実装前にホスト環境で画像処理結果をシミュレーション
~ リコー社製「Riシリーズ」用上流プログラミングツールの紹介 ~


本稿では、株式会社リコー・電子デバイスカンパニー様による監修を頂き、ガイオが取り組んでいる上流設計ツールの1つとして、リコー社製画像処理プロセッサ「Riシリーズ」用の、プログラム上流設計ツールを紹介致します。

※本稿は、ガイオテクノロジーがRiシリーズ用上流設計ツールの仕様を基に記事としてまとめたものを、株式会社リコー・電子デバイスカンパニー様に監修頂いたものです。

難易度の高い画像処理プログラム

Riシリーズは、従来ハードワイヤードLSIにより行われる画像処理をソフトウエアで実行する画像プロセッサです。下図のように、必要に合わせて処理プログラムを他のホストマイコンからロードして実行することで、よりスケーラビリティの高い画像処理を可能にしています。
画像処理プログラムは、一般マイコンの制御プログラムとは異なり、DSPの様な信号処理プログラムに近く、ソフトウエアの開発は難易度が高いとされています。プロセッサで処理を行う場合、データの入出力部分にあるFIFO(First-in First-out)バッファと連動しているため、取り込んだデータの処理時間に制限をもつものがあり、さらにソフト開発の難易度を高くしています。

開発者のスキルに依存して、開発したソフトウエアの品質にばらつきが出やすく、他の開発者にとって、コーディングされた処理ロジックが難解になってしまう傾向があります。

ソフト品質を標準化する「ノンプログラミング」ソフト開発

画像処理は決まった処理内容が多くあり、処理ブロックをライブラリ化して再利用することが比較的容易です。例えば、画像処理に多く使われる「シェーディング」「フィルタリング」「縮小・拡大」「色空間変換」などのアルゴリズムは、既に実績のあるものが多くあります。それならば、アプリケーションの要求に従って、処理ライブラリを組み合わせて、必要な画像処理フローを構成すれば、確実なコードが生成できます。
本ツールは、このような「ライブラリベース」の考え方を基に、ハンドコーディングをすることなく、ブロック線図エディタでアルゴリズムを作成するだけで、Riシリーズ用のアセンブラコード(一部オブジェクトコード)を生成する「ノンプログラミング」ソフト開発ツールです。

ブロック線図による開発は、設計者のスキルや固有の手法に依存する部分を最小限にすることが可能で、設計するプログラムの標準化が可能なばかりか、プログラムのメンテナンスも容易になります。

開発の各フェーズで動作検証が可能な開発ツールチェーン

本ツールは、実行アセンブリコードを生成する基本機能の他に、作成した画像処理アルゴリズムを検証するための、3つのラインの検証環境を提供しています。

開発の初期段階での、画像処理アルゴリズムの検証には、Windowsホスト上で処理アルゴリズムの動作シミュレーションが可能な、「ネイティブシミュレータ」が用意されています。処理対象となる画像をBMPファイルで入力するだけで、処理結果をWindows上のビューアーで確認できます。

次のフェーズとしては、実機への実装前に、実際のROM化コードを検証可能なシミュレーション環境が用意されています。本ツールが生成したアセンブリソースから、クロスアセンブラで生成されたRiシリーズ用のターゲットコードを、マイコンシミュレータ(ガイオ製ISS)で実行するものです。シミュレータ実行のための環境設定ファイル(コマンドスクリプトファイル)を自動生成する機能や、画像処理結果をWindows上で確認できる画像ビューアも備わっています。

これらのシミュレーション環境で動作確認を行えば、本ツールが生成したアセンブリコードは、そのまま実機に組み込むことができます。

ブロック線図から画像処理アセンブルソースを生成

このツールでは、画像処理のフローを、ブロック線図で作成します。各ブロックは、アルゴリズムの汎用化が可能な部分の構造をまとめたもので、ソフトウエアの関数に相当し、入力と出力を持ちます。このブロックの順序や分岐フローなどを作成することで、画像処理全体のアルゴリズムを表します。

ブロックには、処理ライブラリのアセンブラソース(一部オブジェクトコード)がリンクしており、エディタで処理ブロックが配置されると、それに該当するマクロアセンブラソースが関数として出力されます。各ブロックの接続や処理フローについては、ブロックに相当する関数をコールするアセンブラソースが生成されます。

フローチャートにより制御フローアセンブリソースを生成

作成した処理アルゴリズムをRiシリーズのチップ上で実行するためには、Riの初期化処理、メモリマッピング、I/Oポート設定など、マイコンソフトのスタートアップルーチンに当たる部分を作成する必要があります。

本ツールでは、画像処理部分に加え、この部分も、フローチャートエディタにより簡単に作成できるようになっています。下図が、各制御フローの基本ブロックと拡張ブロックです。
これらを組み合わせて、下図のような制御フローを作成します。

使用リソースの最適化機能

画像の様な大量のデータを短時間で処理するためには、各処理ブロックへ使用メモリ、レジスタなどを最適に割り当てる必要があります。データ入力部にはFIFOバッファを持っており、決められた時間内にバッファ内のデータを処理して出力することが求められます。

Riシリーズは、200組以上のレジスタを持つSIMD(並列演算アーキテクチャ)構造を持っており、CPUを効率よく使用するためには、一度に同時に処理できる画素数の算出や、それに必要なバッファ量の算出を行い、リソースを適切に割り当てる必要があります。

本ツールでは、各処理ブロックが必要とするCPUリソースを自動計算し各ブロックへの割り当てを行い、この要件を満たす処理ブロックと初期化処理のアセンブラソースを自動生成します。

複雑な画像処理や大量の画像処理を必要とする場合、1つのプロセッサのリソースを越えてしまう場合もあります。本ツールでは、複数のプロセッサへ自動分割し、各々の処理プログラム生成も可能です。

ガイオはノンプログラミング上流ツール開発に取り組んでいます

ガイオ・テクノロジーは、1980年の設立以来長年に渡り培った、マイコン、DSP、メディアプロセッサ用のコード生成技術、クロスコンパイラなどのコード解析技術をベースに、従来のC言語やアセンブリ言語を使用しない、「ノンプログラミング環境」の開発に取り組んでいます。

これには、「ハードウエアリソース自動マッピング」や、「ソフトウエアソース自動生成」など、コアとなる技術が多く含まれています。本特集で取り上げました「リコー社製Riシリーズ用上流プログラミングツール」は、ノンプログラミング上流ツールの製品第1弾として、まもなくリリースの予定です。

【Riシリーズ製品のお問い合わせ先】
Riシリーズについての情報は、(株)リコーWEBサイトをご覧下さい。
また、お問い合わせにつきましては、下記までお願い致します。
製品情報WEBページ : http://www.ricoh.co.jp/LSI
株式会社リコー電子デバイスカンパニー : 045-477-1705 (直通)
【記事監修】
株式会社リコー
電子デバイスカンパニー 画像LSI開発センター
岸川準(きしかわ ひとし)氏

人気のコラム

最新のコラム