問題タブ [cpu-cycles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - メモリー・サイズのロードおよびストアのペナルティ分析?
ocount を使用してコードをプロファイリングすると、ペナルティがオンのサイクルが多く、ペナルティがオフのサイクルが少ないことが示されます。ペナルティフラグがオンになっていると、なぜより多くのペナルティがあるのか を理解しようとしていますか?
pipeline - パイプライン ゲート 2015
以下に示す一連の機械命令を考えてみましょう。
上記のシーケンスで、R0
toR8
は汎用レジスタです。示されている命令では、最初のレジスタは、2 番目と 3 番目のレジスタで実行された演算の結果を格納します。この一連の命令は、次の 4 つのステージを持つパイプライン化された命令プロセッサで実行されます。
- 命令フェッチおよびデコード (IF)、
- オペランドフェッチ (OF)、
- オペレーション(PO)を実行し、
- 結果 (WB) を書き戻します。
IF
、OF
およびステージはWB
、命令ごとにそれぞれ 1 クロック サイクルかかります。PO
ステージは or 命令に 1 クロック サイクル、命令ADD
にSUB
3 クロック サイクル、MUL
命令に 5 クロック サイクルかかりDIV
ます。パイプライン プロセッサは、PO ステージから OF ステージへのオペランド転送を使用します。上記の一連の命令の実行にかかるクロック サイクル数は、次のとおりです。
POステージからOFステージまでオペランド転送を使用する必要があることが明確に与えられているため、上記の答えは15クロックサイクルである必要があります。
しかし、多くの場所で答えは 13 クロック サイクルとして与えられます。POからPOへのオペランド転送を使用すると、13の答えが得られます。
私の答え:
多くの場所で与えられた答え:
どちらの答えが正しいか誰にもわかりますか?
assembly - サイクル数と命令数、MSP430 でのアセンブリ プログラミング
次のことを行う MSP430 用に記述されたアセンブリ プログラムがあります。
- メモリにロード - プレーン テキスト
- メモリにロード - キー
- キーを使用してプレーンテキストを暗号化する
ここで、暗号化だけを実行するのに必要なサイクルと命令の数を計算したいと思います。これについてどうすればよいですか?暗号化アルゴリズムは非常に複雑で、メモ用紙の裏からサイクル数を計算できるものではありません。
必要に応じて、他の情報を提供できます。前もって感謝します。
assembly - Intel 8086 のクロック サイクルのカウント
Intel 8086 エミュレーターに取り組んでから約 1 か月が経ちました。エミュレーションをより正確にし、PIT と正しく同期させるために、サイクルのカウントを開始することにしました。
各命令に使用されるクロック サイクルは、Intel のユーザー マニュアルに詳しく記載されていますが、それらの計算方法を知りたいです。たとえば、XCHG mem8,reg8
命令について次の手順を推測しました。マニュアルによると、正確に 17 クロック サイクルかかります。
- 命令の 2 番目のバイトをデコードします。+1 サイクル。
- 最初のオペランドをメモリから一時的な場所に転送する: +7 サイクル。
- 第 2 オペランドをレジスタからメモリの宛先に転送: +8 サイクル。
- 最初のオペランドを一時的な場所からレジスタの宛先に転送します: +1 サイクル。
しかし、私の推論がすべての命令でうまくいくとは限らないので、私はおそらく完全に間違っています。たとえば、命令が 8 クロック サイクルしかかからないのに、PUSH reg
命令が 11 クロック サイクルかかる理由がわかりませんPOP reg
。
それでは、各命令でクロックサイクルがどのように費やされているか、またはそれらの数値がどこから来たのかを理解するための一般的な方法を教えていただけますか?
ありがとうございました。
linux - Python: data-link-layer での 2 つの出来事の間の CPU サイクルのカウント
ローカルとリモートの 2 つのホストがあります。私は次のことをしたい:
L2 (データリンク層) RTS フレームでローカル マシンから送信し、その瞬間 (瞬間 A ) の CPU サイクルを確認します。フレームはリモート マシンで受信しています。リモートが応答を送信します。ローカルでは、この回答 (CTS-frame) をキャッチしています。そして、再度 CPU サイクルを確認します (瞬間 B )。
A と B の間の CPU サイクルをカウントする必要があります: Ncycles = BA (次のように考えてください)。
ローカルでのみ、リモート ホストを使用しないでください。CPU ローカル マシンの MIPS アーキテクチャがあります。
Scapy 経由で作成しようとしましたが、方法がわかりません。
- Python-scipt を使用してローカル マシンで RTS フレームを送信し、CTS フレームを受信できますか?
- これらの出来事の間の CPU サイクルを数えることは可能ですか?
- Pythonで実現できない場合、何を使用すればよいですか?
前もって感謝します。
c++ - プロセスはどのようにして多くの CPU サイクルを取得できますか?
MP4 から MP3 へのファイル変換を実行しているときに、VLC メディア プレーヤーが最大 98% の CPU を使用することがあることに気付きました。私の理解では、OS は各プロセスが取得する時間のバランスをとろうとするため、これが私の注意を引きました。ディスク デフラグ ツールやアンチウイルスなどのプログラムも、このような規模のプロセッサ サイクルを必要とする可能性があると感じています。コード(C、C++)でどのように達成しましたか?