TCP/IPプロトコル・スタックの省メモリ開発事例(前編) ――ミドルウェアの追加で既存の16ビット・マイコンがネット対応マイコンに変身
● くふうをこらして小さく実装(ここが腕の見せどころ)
実装する機能が決まったことにより,いよいよ具体的なプログラム設計に入るわけですが,当然ながら機能を限定するだけでは目標は実現できません.ここでは,いくつかの実装上のくふうについて説明します.
1) データ・コピー低減のためにバッファを共有する
一般的に,通信プロトコルは複数のプロトコルが層状に重なって全体を構成しています(だからプロトコル・スタックと呼ばれる).多くの場合,各プロトコル層に独立性を持たせるため,それぞれの層がバッファを備え,下の層からパケットを受け取ると自分の層のバッファにコピーして処理を行うようになっています(図10(a)).高性能のCPUを用いる場合にはそれでよいのですが,組み込みマイコンを用いる場合,そのコピーに要する時間が問題となってきます.複数のプロトコルの間でいちいちコピーしていると,最上位のアプリケーション・プログラムにデータが渡るまでに相当な時間を費やすことになります.そこで,IP層とTCP層のバッファを共通にし,プロトコル間ではそのポインタのみをやり取りするようにして,送受信時のメモリ・コピーの回数を減らしました(図10(b)).バッファ用のメモリを削減できたので,結果としてRAM使用量の低減につながりました.