新人技術者のためのロジカル・シンキング入門(9) ―― メモリ転送速度の最適化設計
前回に引き続き,組み込みシステム開発における最適化設計について解説する.今回は,メモリのアクセス速度がボトル・ネックとなる場合の最適化について解説する.また,最適化の際に新たなバグを混入させないためのテスト方法について解説する. (編集部)
技術解説・連載「新人技術者のためのロジカル・シンキング入門」 記事一覧
第1回 いかにしてバグの原因を突き止めるか
第2回 プログラミングにおける良いデータ構造
第3回 「必要とされる設計書」の作り方
第4回 直したバグがゾンビのごとく復活する
第5回 ソース・コード規約の作り方
第6回 ハードウェア基礎の基礎
第7回 「ひたすら流すだけのテスト」にさよなら
第8回 CPUの演算量をひたすら削る
第9回 メモリ転送速度の最適化設計
第10回 「工学の知」を実務に生かす
●お知らせ
本連載記事を元に加筆・再編集した書籍『組み込みエンジニアのためのロジカル・シンキング入門』が好評発売中!
前回,3Dグラフィックス・モジュールの最適化を迫られたFさんでしたが,なんとか処理速度を向上することに成功したようです.とりあえず,修正済みのライブラリ・モジュールをリリースして様子を見てもらうことにしました.
画面の動きは前より速くなり,これならば一応許容範囲ではないかという評価を受けたFさんたちは,まずまずの結果にほっと胸をなでおろしました.
しかし,システム・テストが進むにつれ,新たな問題が生じました.あるゲームで不具合が発生したというのです.3面までゲームが進むと新たに登場してくるモンスターがあるのですが,これが時々消えてなくなるというのです.再現してみると,モンスターが壁にぶつかったとたんにみるみる形が崩れていくのが分かりました.そして切り分けの結果,まずいことにFさんたちの3Dグラフィックス・モジュールのバグであることが分かってしまいました.最適化した結果,新たなバグを入れてしまったようなのです.
問題はこれだけではありませんでした.処理速度は以前よりも向上したように思えたのですが,ある描画パターンになると,以前と同じように描画が滞るのです.これも切り分けの結果,3Dグラフィックス・モジュールが処理速度のボトル・ネックになっていることが分かりました.
しばらく見なかったはずのトロトロとした描画を見ながら,Fさんたちはため息をもらすのでした.「バグを生んだ上に,まだ最適化する必要があるのか...」
tag: 技術教育