7

設定、読み取り、移動、比較などの操作の実行にはすべて同じ時間がかかりますか?

そうでない場合: どのくらいの期間かを調べる方法はありますか?

つまり、特定のタイプの cpu がさまざまなアセンブリ言語命令 (移動、読み取りなど) を実行する速度です。

4

4 に答える 4

10

おそらくあなたが探している重要な用語は次のとおりです。

  • 命令レイテンシ
  • 命令スループット

これらはグーグルで簡単に検索できるはずです。しかし、基本的に、命令は実行するのに一定のサイクル数 (レイテンシー) を要します。ただし、多くの場合、それらの複数を同時に実行できます (スループット)。

設定、読み取り、移動、比較などの操作の実行にはすべて同じ時間がかかりますか?

一般的にいいえ。命令が異なれば、レイテンシとスループットも異なります。たとえば、加算は通常、除算よりもはるかに高速です。


最新のプロセッサでのさまざまなアセンブリ命令の実際の値に興味がある場合は、Agner Fog のテーブルを参照してください。


とはいえ、コンピューターのパフォーマンスに影響を与える要因は他にも無数にあります。
そのほとんどは、間違いなく命令のレイテンシ/スループットよりも重要です。

  • キャッシュ
  • メモリー
  • ディスク
  • 膨張(これは大きなもののようです... :D)
  • など...リストはどんどん続きます...
于 2012-01-21T00:15:37.347 に答える
3

パイプラインとキャッシュ、そして CPU 自体が主要なボトルネックではなくなったことで、質問に対して 2 つのことが行われました。1 つ目は、現在の CPU は通常、クロックごとに 1 つの命令を実行します。2 つ目は、CPU に命令を供給するのに多く (数十から数百) のクロックがかかる場合があることです。最新のプロセッサは、命令セットが古い場合でも、クロック実行について言及することはめったにありません。これは、1 つのクロックであり、「実際の」実行速度を説明するのが難しすぎるためです。

キャッシュとパイプラインは、クロック レートごとにこの 1 つの命令で CPU を実行できるようにしようとしますが、たとえばメモリからの読み取りでは、応答が返されるまで待機する必要があります。このアイテムがキャッシュにない場合、キャッシュ内のラインを埋めるために多くの場所を読み取る必要があり、キャッシュを介してプロセッサに戻すためにさらにいくつかのクロックを読み取る必要があるため、これは数百のクロックサイクルになる可能性があります。

ここで、時間をさかのぼる、または現在の時間をさかのぼると、たとえばマイクロコントローラーの世界、またはメモリシステムが1つのクロックで応答できる他のシステム、または少なくとも非常に決定論的な数(たとえば、eepromに2つのクロック、ramに1つのクロック)で応答できます。のようなもの)、正確なクロック数を非常に簡単に数えることができます。プロセッサは、多くの場合、命令ごとのサイクルの表を公開しています。たとえば、2 命令の読み取りでは、命令をフェッチするのに 2 クロック、次に読み取りを実行するのに別のクロック、最低 3 クロックかかります。実際には実行に 1 クロック以上かかるものもあるため、それも追加されます。

Michael Abrash による Zen of Assembly Language の (使用済みの) コピーを見つけることを強くお勧めします。公開された時は古いですが、今でも重要な作品です。比較的単純な 8088/86 を使いこなすことを学ぶだけでも大変でしたが、今日の x86 やその他のシステムはかなり複雑になっています。

WindowsやLinuxなどを実行している場合、コードの時間を計っても、必ずしも目的の場所に到達するとは限りません。nop を追加または削除すると、コードが 1 バイトだけメモリ内で整列され、RAM 内の位置以外は変更されていないコードの残りの部分のパフォーマンスに劇的な影響を与える可能性があります。問題の複雑な性質を理解する簡単な例として。

どのプロセッサーまたはシステムに興味がありますか? stm32f4 ディスカバリー ボード (約 20 ドル) には、命令キャッシュとデータ キャッシュを備えた ARM (cortex-m) プロセッサが含まれています。それはより大きなシステムの複雑さを持っていますが、同時に(より大きなシステムに比べて)制御された実験を行うことができるほど単純です.

マイクロチップの写真の世界に精通している場合、イベント間の正確な遅延を実行するためにサイクルをカウントすることがよくあります。非常に決定論的な環境 (割り込みを使用しない限り)。

于 2012-01-21T02:51:33.180 に答える
2

アセンブリ言語の各命令にかかる時間はどれくらいですか? 設定、読み取り、移動、比較などの操作の実行にはすべて同じ時間がかかりますか?

この情報は、CPU の製造元 (Intel など) の CPU アセンブリ言語マニュアルに記載されています。通常、各 CPU 構造には 1 つまたは 2 つのページがあり、実行に必要な「サイクル」数がわかります。他の場所で「サイクル」を定義します。命令は、与えられた内容に応じて、実行にかかる時間が異なる場合があります。たとえば、条件付きジャンプは、ジャンプする場合としない場合があります。ゼロによる乗算は、7 による乗算よりも高速である可能性があります (私は想定しています)。

于 2012-01-21T00:17:56.390 に答える
0

答えは MIPS です。または 1 秒あたり IPS ミリオン命令。あなたは組み込みシステムについて話しているので。

于 2013-07-07T22:14:08.203 に答える