低コスト・低消費電力のカーナビ・システムを構築するためのハード&ソフト設計 ――拡張性のあるプロセッサ・ベースの開発プラットホーム作り

Paffen Matthijs

tag: 組み込み

技術解説 2006年3月 1日

● アセンブリ・コードでアルゴリズムの効率を確認する

 現在の組み込みソフトウェアの多くは,特定プロセッサの拡張機能に対応したANSI-Cコードを利用して開発されています.また,CPUパワーを節約するためにアセンブリ言語を用いて最適化することがあります.この方法はある程度の労力が必要となりますが,その反面,プロセッサで実行されるアルゴリズムの効率を把握するうえで役立ちます.例として,CDブロックの復号時に使用する巡回冗長コード(CRC)検査サブモジュールのアセンブリ・コードをリスト1に示します.

 リスト1はCコンパイラに合わせて記述されています.この例は,プロローグ(A)とエピローグ(E)で構成されています.スタックを介してレジスタを保存(save)および復元(restore)するという命令を使用しています.下位レジスタ(スクラッチ・レジスタ)は実行環境によって自動的に保存されます.

 レジスタR0~R2には関数の引き数が格納されます.CRCアルゴリズムは特定の多項式を用いて入力ビットを除算することによって余りを算出します.実装例としては,事前に計算された参照テーブルを用いて,CRCの余りを格納したレジスタに続く八つの状態を求めます.ループの前後に八つの命令(リスト1のBとDの部分)を挿入することで,その八つの状態を求めることができます.ループ内にも同じ命令が記述されていますが,依存性を防止するために再度並べ替えて最適化しています.リスト1のCの部分で並列命令が発行されていることがわかります.これは,値の処理と読み込みの組み合わせを表しています.最終的にCRCの結果は,レジスタR0に戻り値として保存されます.

リスト1 32ビット巡回冗長コード・サブモジュールのアセンブリ・コード

list01_01.gif

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日