12

最近、私たちが開発したアルゴリズムの MIPS (1 秒あたりの命令数) を作成するよう依頼されました。アルゴリズムは、一連の C スタイルの関数によって公開されます。Dell Axim でコードを実行して、さまざまな入力でのパフォーマンスをベンチマークしました。

この質問はハードウェア ベンダーから寄せられたものですが、私は主に HL ソフトウェア開発者であるため、要求にどのように対応すればよいかわかりません。おそらく、同様のハードウェア/ソフトウェアのバックグラウンドを持つ人が助けてくれるでしょう...

  1. 私たちのアルゴリズムはリアルタイムではないので、MIPS として定量化する必要はないと思います。組み立て説明書の総数を単純に引用することはできますか?

  2. 1 が true の場合、一般的に、または ARM/XScale に特化してこれを行う方法 (つまり、アセンブリ命令の数を測定する方法) を教えてください。

  3. 2 は、WM デバイスまたは VS2005 で提供されるデバイス エミュレーター経由で実行できますか?

  4. 3 自動化できますか?

どうもありがとうございました。チャールズ


ご助力いただきありがとうございます。S.Lottは釘を打ったと思います。フォローアップとして、さらに質問があります。

5 MIPS の測定方法に関する提案はありますか? MIS を計算するために、アルゴリズムを実行し、それをドライストーン/ホワイトストーン ベンチマークと比較することを提案する人がいると聞きました。

6 アルゴリズムはリアルタイムで実行する必要がないため、MIPS は本当に有用な尺度ですか? (例: factorial(N)) 処理要件を定量化する他の方法は何ですか? (実行時のパフォーマンスは既に測定しましたが、満足のいく結果ではありませんでした。)

7 最後に、MIPS は大雑把な見積もりであり、dep であると仮定します。コンパイラ、最適化設定などについて?

4

7 に答える 7

3

いくつかのメモ:

  1. MIPS は、プロセッサの一般的な「容量」の尺度としてよく使用されます。特に、作業でプロセッサが過負荷にならないようにする必要があるソフト リアルタイム/組み込み分野でよく使用されます。時間が非常に重要であるため、これは 1 秒あたりの命令であることに注意してください。

  2. この方法で使用される MIPS は、まったく非科学的です。

  3. この方法で使用される MIPS は、多くの場合、システムのサイジングとプロセッサの速度を決定するための最良の近似値です。25%オフかもしれませんが、気にしないでください...

  4. MIPS をカウントするには、使用しているものに近いプロセッサが必要です。使用中の実際のコンパイラから実際の命令ストリームをキャプチャするには、適切な命令セットが明らかに重要です。

これを PC で近似することはできません。これを正しく行うには、いくつかのツールのいずれかを引き出す必要があります。

  1. Qemu、ARM 独自のツール、Synopsys、CoWare、Virtutech、VaST などのターゲット アーキテクチャ用の命令セット シミュレータを使用します。これらは高速ですが、命令をかなりうまくカウントでき、適切な命令セットをサポートします。整数除算のような高価な命令を多用しない限り (そして浮動小数点は使用しないでください)、これらの数値は便利に近いものになる傾向があります。

  2. ターゲット プロセッサ (またはそれに近いもの) のクロック サイクルの正確なシミュレータを見つけてください。これにより、パイプラインの影響などをかなり正確に見積もることができます。もう一度、ARM または Carbon SoCDesigner から入手してください。

  3. 対象とするプロセッサ ファミリの開発ボード、またはそれに近い設計の ARM を入手し、そこでアプリケーションのプロファイルを作成します。ARM9 を使用して ARM11 のプロファイルを作成することはありませんが、ARM11 は、たとえば ARM Cortex-A8/A9 の適切な近似値である可能性があります。

于 2009-06-02T05:56:49.993 に答える
1

MIPS は、アルゴリズムのパフォーマンスではなく、CPU 速度の尺度です。誰かが少し混乱しているとしか思えません。彼らは何を見つけようとしていますか?私が考えることができる唯一の可能性のあるシナリオは、プログラムを満足に実行するために提供する必要があるプロセッサーの速度を決定するのを支援しようとしているということです。

アルゴリズムは命令数で測定できるため (間違いなく入力データに依存するため、これは自明ではありません)、MIPS を取得するにはある程度の時間を測定する必要があります。たとえば、"毎秒 1000 回呼び出す必要があります。」アルゴリズムがその特定のケースで 1000 の命令である場合、最終的には次のようになります。

1000 instructions / (1/1000) seconds = 1000000 instructions per second = 1 MIPS.

私はまだそれが物事をやろうとする本当に奇妙な方法だと思うので、あなたは説明を求めたいと思うかもしれません. 具体的な質問については、Visual Studio に詳しい方にお任せします。

于 2009-03-24T19:14:30.060 に答える
1

また、コンパイラとコンパイラ オプションが異なると、大きな違いが生じることも覚えておいてください。同じソース コードをさまざまな速度で実行できます。したがって、2mips プロセッサを購入する代わりに、1/2mips プロセッサを使用し、コンパイラ オプションを使用できる場合があります。または、より優れたコンパイラにお金を費やして、安価なプロセッサを使用します。

ベンチマークにはせいぜい欠陥があります。趣味として、同じハードウェアのさまざまなベンダーのさまざまなコンパイラーで同じ dhrystone (および Whetstone) コードをコンパイルしていましたが、その数はいたるところにあり、桁違いでした。同じソース コード、同じプロセッサ、dhrystone は意味がなく、ベースラインとしては役に立ちません。ベンチマークで重要なのは、アルゴリズムの実行速度です。必要以上に高速である必要があります。フィニッシュラインにどれだけ近いかに応じて、十分なスロップを許可します. 初期の段階では、おそらく必要な速度よりも 5 倍、10 倍、または 100 倍速く実行したいと思うでしょう。そうすれば、プロジェクトの終わりまでに、必要な速度よりも少なくともわずかに速くなります。

私は S. Lott が言っていることに同意します。これはすべて、セールス、マーケティング、および経営陣の話です。経営陣が岩と困難な場所の間に置いたものである場合、あなたがする必要があるのは、カラフルな円グラフとグラフに基づいて、彼らが喜んで費やす最速のプロセッサと最高のツールを購入してもらうことです.正当化として薄い空気から生成します。道の終わり近くでパフォーマンスを完全に満たしていない場合は、stackoverflow に戻ることができますが、同時に経営陣は、ほぼすべての価格で別のツールチェーンを購入するか、プロセッサを交換してボードを再スピンすることを余儀なくされます。それまでに、目標にどれだけ近づいているかがわかります。1.0 が必要であり、購入したプロセッサの 2 倍の速度のプロセッサを購入すれば、1.25 になります。

これらの種類のことを自動化またはシミュレートできるかどうかは、ツールによって異なります。あなたが話しているツールに詳しくないので、直接話すことはできません。

于 2009-04-29T06:05:23.653 に答える
1

この回答は、質問に直接回答することを意図したものではありませんが、この質問が尋ねられる理由に関する追加のコンテキストを提供することを目的としています。

アルゴリズムの MIPS は、必要な時間内にイベントに応答する必要があるアルゴリズムにのみ関連します。

たとえば、風速が時速 25 マイルを超えると、風速を検出してアクチュエータを 1 秒以内に動かすように設計されたコントローラーを考えてみましょう。風速を計算してしきい値と比較するのに 1000 命令が必要だとします。このアルゴリズムの MIPS 要件は、1 秒あたり 1 キロ命令 (KIP) です。コントローラが 1 MIPS プロセッサに基づいている場合、コントローラには他の機能を追加するための機能がたくさんあると言えます。

コントローラに追加できるその他の機能は何ですか? それは、追加する関数/アルゴリズムの MIPS に依存します。1 秒間に 100,000 命令 (つまり 100 KIP) を実行する必要がある別の関数がある場合でも、この新しい関数に対応でき、他の関数を追加する余地がまだあります。

于 2012-06-14T21:20:08.670 に答える
0

最初の見積もりには、PC のベンチマークが役立つ場合があります。

ただし、特定のデバイスとクロック周波数にコミットする前に、ARM ターゲット アーキテクチャ用の開発者ボード (または PDA?) を入手して、そこでベンチマークする必要があります。

今日のマシン (キャッシング、パイプライン、さまざまな命令セットなど) の速度に影響を与える多くの要因があるため、PC でのベンチマークは ARM から大きく外れている可能性があります。

于 2009-03-25T07:13:44.963 に答える