このページは、ソフトウェア、機器組込みのエンベデット・ソフトウェア(ファームウェア)の開発に関連したコラムのページです。このコラムはメールマガジン「アメニティ&サウンド 音と快適の空間へ」で連載していた技術・開発コラムを再編集したものを掲載しています。
前回までは、コンパイラの生成コードの評価の具体例として型変換と暗黙のライブラリについてでした。今回は、メモリアクセスについての対応コードです(メモリアクセスとは、プロセッサからメモリを読み書きすることです)。
DSPやCPUの中には、メモリやスタック、メモリアクセス方法などに特殊な条件を持つものが多く存在します。
FILO(First In Last Out)といって、最初に記憶したデータが最後に、最後に記録したデータが最初に読み書きされるアルゴリズムをスタックと呼びます。
(A + B)×(C + D) という計算では、A+Bの結果を一時的に記憶し、C+Dの計算をして、先に計算して記憶している(A+B)の結果と加算します。
このような計算処理などで一般的にスタックが利用されます。順次記憶したものを逆順に取り出すという性質は利用頻度が高いため、様々な部分で利用されます。
大半のプロセッサは、ハードウェア的にスタック専用の機構をが用意されており、コンパイラは、このスタックを計算処理の一時記録メモリとして利用したコードを生成します。
▼「スタック」ASCII 24 デジタル用語辞典
http://yougo.ascii24.com/gh/19/001988.html
パソコン上で動作するプログラムコードを生成するためのコンパイラのカスタマイズ版であったり、スタートアップコードやライブラリなどを変更して行うクロス開発の場合、特殊用途のメモリアクセスについては生成コードを意識したコーディングが必要となります。
少しだけメモリ関連の特殊な例を上げてみたいと思います。
他にも色々ありますが、組込系、ワンチップマイコンやDSPなどでは、上に揚げたような点が代表例になるかと思います。
方言を沢山使ってしまったので、簡単にご案内します。解りやすくではありませんがご容赦を...(^^;
パソコンのプログラミングのみ経験のある方は、[7]のようにプロセッサがスタックを持たないのは考えにくいかと思います。スタックを持たないプロセッサは、小規模のコード利用を前提に考えられたプロセッサなどに見られるものです。
このような場合、通常、コンパイラを利用せずアセンブラでコードを作成するのですが、中には、このようなプロセッサを使いながら、ある程度大きい規模のプログラムを作成するためにコンパイラが採用される開発プロジェクトもあります。
スタックを持たないプロセッサの場合には、スタックを利用して作成される自動変数などを使わずに効率的にメモリを利用しなければならないのでプログラム全体のメモリ利用効率を最適化する必要が生じます。
ARIはハードウェア設計、製造、ファームウェア開発、 Windowsアプリケーションの開発をしています。 実績等に興味をお持ちいただけましたら、会社情報に主な開発実績を 「音響と開発」のコーナーには事例など関連情報を掲載していますのでご覧ください。
ソフトウェア開発と開発ツール関連の雑記
機器組込みのエンベデット・ソフトウェア(ファームウェア)の開発に関連したコラムです。 メールマガジン「アメニティ&サウンド 音と快適の空間へ」に連載していた技術・開発コラムを編集掲載しています。
ソフト、ハードウェア 技術関連の雑記
このコラムは無料メールマガジン「アメニティ&サウンド 音と快適の空間へ」 vol.36〜vol.64(2003年8/21〜2004年11/18)に 音響と開発の関連コラムとして連載していたものを編集掲載したものです。
技術・開発の閑話-2- vol.11〜20F1とコンピュータ技術 / ソフトウェアの標準と部品化
( 戦術と戦略の誤解 / アジャイル開発 / リファクタリング / 遺産と再生産 / 標準と生産管理 ほか)
|
技術・開発の閑話-2- vol.01〜10「ありえない」フェイルセーフと安全機能の連鎖 / HDD容量の差(天使の分け前) / リアルタイムとベストエフォート / エラーとコスト(ブルースクリーン/XP) / NDAと情報公開 / 専門ドメインの基礎範囲 / NHK技研公開(超高精細映像システム) |
エーアールアイはPCアプリケーション、デジタル機器の組込み(CPU)、信号処理(DSP)ソフトウェアの開発を行っています。 お客様のお役に立てることがございましたらご用命ください。