問題タブ [machine-instruction]
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.
cpu-architecture - 実行時の命令検出
コードの実行中に、実行されたさまざまなマシン命令と、それぞれに必要なクロック サイクルを特定して分析したいと考えています。
これを簡単に行う方法はありますか?動的バイナリ変換は方法かもしれませんが、より簡単なメカニズムを探しています。
前もって感謝します
cuda - CUDA 加算とシフト命令のパフォーマンス
私が取り組んでいる大規模な CUDA カーネルの命令スループットを理解しようとしています。加算命令とシフト命令のスループットを比較するために、2 つの小さなプログラムを作成しました。CUDA C Programming Guide によると、shift 命令のスループットは add 命令の半分です。しかし、Tesla M2070 で 2 つのプログラムの実行時間を測定すると、時間はまったく同じです。誰かがなぜこれが当てはまるのか説明してもらえますか?
追加プログラム:
シフトプログラム:
編集:ptxコードの追加およびシフトプログラムの追加。ご覧のとおり、唯一の違いは 78 行目です。つまり、add 命令と shl 命令です。
PTX コードを追加:
シフト PTX コード:
mips - 動的命令数と静的命令数
動的命令数と静的命令数の違いは何ですか?
を。次のパラメーターの関数としてユーザー CPU 時間を計算する式を導き出します: 動的命令カウント (N)、命令ごとのクロック サイクル (CPI)、およびクロック周波数 (f)
b. 質問 3a で「静的」命令数ではなく「動的」命令数をパラメータとして選択した理由を説明してください。
assembly - 16ビットレジスタペアはマシンを16ビットにしますか?
私は1月からxbox用の架空のレトロ仮想マシンに取り組んでいます(私は0x10cをまったくコピーしていません。実際、私のプロジェクトは古いです。ノッチファンがこれを読んだ場合に備えて、これを公開するだけです)。6つの汎用レジスタがあります。これらは8ビットですが、すべてを組み合わせて3つの16ビットレジスタを作成できます。メモリアドレスは16ビットであり、プログラムカウンタも同様です。これはばかげた質問だと知っていますが、私はこれを理解できませんでした、それは16ビットですか8ビットですか???? z80は16ビットアドレスを使用し、8ビットです
assembly - I/O 命令サイクルはデバイスの速度に依存しますか?
例えば、
ポート 8 のデバイスが非常に遅い場合、CPU は命令の完了を待つ必要がありますか?
ありがとう!</p>
io - 「I/Oポートからバイトを読み取る」と「メモリのアドレスからバイトを読み取る」?
説明を簡単にするために、実行中のスレッドは1つだけだと思います。以下は私の野蛮な憶測です。
1、CPUがメモリのアドレスからバイトを読み取る場合、同じアドレスから同じ値を繰り返し読み取ることができます。
2、CPUがポートからバイトを繰り返し読み取る場合、CPUは毎回異なる値を読み取る可能性があります。
2つの方法の違いは、ポートコントローラが各読み取り操作の後にポートの値を自動的に更新できることだと思います。
しかし、自分の発言を明確に裏付ける教科書は見つかりませんでした。
私は正しいですか?
c++ - C++プログラムの実行中に実際の操作数を数える方法は?
VMware (Ubuntu) で大きな C++ プロジェクトに取り組んでいます。いくつかのプロセスと多数の cpp ファイルがあります。
私が知りたいのはこれです:コードを実行している間、各cppファイルでいくつの操作(加算、乗算、読み取り、書き込み、シフトなど)が実行されていますか。
私はこれをたくさん検索しましたが、実行中のコードの命令数を教えてくれるプロファイラーを探す必要があることはわかっていますが、まだプロファイラーは見つかりませんでした。
私はプログラミングの初心者なので、助けていただければ幸いです。
java - ループ反転技術とは何ですか?
Java の Just-In -Time コンパイラ(JIT) 最適化手法について説明しているドキュメントを調べていました。その一つが「ループ反転」でした。そしてドキュメントには次のように書かれています。
通常
while
のループをループに置き換えdo-while
ます。そして、do-while
ループはif
句内に設定されます。この置換により、ジャンプが 2 回少なくなります。
ループ反転はどのように機能し、コード パスをどのように最適化するのでしょうか?
注: 誰かが Java コードの例と、JIT がそれをネイティブ コードに最適化する方法と、最新のプロセッサで最適である理由を説明できれば素晴らしいことです。