】が使われることについて書いてきました。Blog)もう少し突っ込んだ話をしますと、実は開発の現場ではMIPSでちょっと困る話があります。命令数を指標としても1命令にどれくらいの時間*1がかかるのかによって実際の処理量(演算量)が変わるからです。】の略として使用したいと思います。1秒間に何百万命令か?ということですが、デジタル信号処理のソフトウェアを考えたとき、MIPS計算は次の式になります。この時のフレームサイズとはサンプル数です。命令数をサイクル数に置き換えただけです。×ソフトウェアの演算量を表す時にMIPSという言葉を使う場合が多いですが、実際のところは命令数ではなくサイクル数による計測が多いです。命令数を測定した場合(または算出した場合)MIPSになりますが、実際のところは1命令に何サイクルかかるかによってMIPSの意味が変わります。Blog)例にあげた地上波デジタル放送の放送局側のAAC-LCエンコーダでは、サンプリング周波数48kHzの場合21.33ms*2以内に処理しなければならないので、仮にCPUの動作クロックが100MHzだった場合、リソースを100%使えたとして*3、ソフトウェアに求められる演算量は2,133,333サイクル以内になります(200MHzなら4,266,666サイクル)。48kHzの1フレーム(ロングフレーム)のMCPSとMIPSあるCPUに実装するソフトウェアに求められる要件として、その演算量を示す指標がMIPSだった場合、要件としては曖昧なところが出てきます。MIPSあるCPUで、この表のフレーム時間以内に収まるソフトウェア開発を依頼され、その要件が100MIPS以内だった時、出来上がったソフトウェアが99MIPSならば要件は満たしたことになります。動作クロックで100MHzで、2サイクルで1命令の場合は動かない事になります。要件が100MCPS以内だった場合はどうでしょう。1命令に何サイクルかかるかに関わらず動作することになります。「CPUのリソース以内に収めろ!」という明確な要件だと思います。現代のCPUでは、1命令に2サイクル以上かかるインストラクションアーキテクチャはほぼないでしょう。MIPSの関係になり次のようなイメージです。具体的には、キャッシュメモリで、例えばL1とかL2とかを耳にしたことはないでしょうか。CPUのコアの内部メモリをL1メモリ(L1キャッシュ)と呼び、コアの外にあるメモリをL2メモリ(L2キャッシュ)と呼ぶ場合が多いです。L3があったり外部に拡張メモリという構成もあります。一般的には、L1は高速にアクセルでき、L2はコアの外のクロックを使用するためL1より時間がかかります。MIPSとなりますが、L1に収まらずL2メモリを使用する場合ロード/ストア命令を実行する時にウェイトが入ります。L1キャッシュ構成の場合もキャッシュミスが発生しL2アクセスで待たされます。仮に100MIPSのファームウェアを作った場合はどうでしょうか。メモリが全てL1に収まっていないと動かないことになります。L1キャッシュミスが発生しても動きませんので、要件としては「100MCPS以内」というのが適切かなと思います(個人的には)。私の経験ではMIPS(ミップス)が定着していて、MCPS(エムシーピーエス)と言う人は少ないです(ちょっと言いにくい?)。要件が100MIPS以内とされた場合、技術者としてどのようなソフトウェアを提供するか。組み込みの技術者ならば、きっと動作クロック100MHzで動くもの(100MCPS)を提供しますね。Code思考のサルベージ(その6)月別アーカイブはてなブログをはじめよう!jspnetさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。