問題タブ [instructions]

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.

0 投票する
2 に答える
907 参照

cpu - 現代のCPUはゼロによる乗算をスキップしますか?

現在のCPUが、少なくとも1つがゼロの場合に、2つの数値の乗算を回避するかどうかを知りたいです。ありがとう

0 投票する
1 に答える
76 参照

class - オブジェクト/クラスメソッドもシリアル化されていますか?

データメンバーがディスクに保存されることは知っていますが、オブジェクトの/クラス'メソッドもバイナリ形式で保存されるかどうか疑問に思っていましたか?たとえば、矛盾する情報を見つけたためです。

Ivor Horton:「クラスオブジェクトにはデータメンバーだけでなく関数メンバーも含まれ、データと関数の両方のすべてのメンバーにアクセス指定子があります。したがって、オブジェクトを外部ファイルに記録するには、ファイルに書き込まれる情報に次の完全な仕様が含まれている必要があります。関係するすべてのクラス構造。」

と:

メソッドも.NETのデータメンバーと一緒にシリアル化されますか?

したがって、メソッドのアセンブリ命令(オペコードとオペランド)もディスクに保存されますか?プリコンパイルされたLIBまたはDLLのように?DOSの時代、私は時々アセンブリを使用していました。

私がDelphiと次のサイトから覚えている限り(dan04による回答):

メソッドも.NETのデータメンバーと一緒にシリアル化されますか?

sizeof(<OBJECT or CLASS>)すべてのデータメンバーのサイズをまとめて示します(メソッド/プロシージャはありません)。また、1つのクラス/構造体で宣言されたデータとメンバーを含む優れたCの例が示されていますが、実行時にこれらのメソッドはデータの構造体に作用する別個のプロシージャです。ただし、PascalのVMTのような後のクラス/オブジェクトの実装はメモリ内で異なる可能性があると思います。

0 投票する
4 に答える
3103 参照

assembly - Intel 8080命令...「DAD」命令ニーモニックの語源は何ですか?

CharlesPetzoldの優れた本CodeでIntel8080プロセッサについて学んでいます。DAD命令は、それが何を達成するかについて説明されましたが、このようなアルファベットコードについては、それらが何を表すのかを知る必要があるという奇妙なことがあります。たとえば、ADCはADdwithCarryの略です。または、借り入れを伴うSuBtractのSBB。

しかし、DADはどうですか?それは私が知っているばかげた質問ですが、誰かが答えを知っているかどうか疑問に思います。グーグルは何も生み出していない...

0 投票する
3 に答える
4409 参照

c - C コードのループ性能

アプリケーション内に乗加算カーネルがあり、そのパフォーマンスを向上させたいと考えています。

Intel Core i7-960 (3.2 GHz クロック) を使用しており、次のように SSE 組み込み関数を使用してカーネルを手動で実装しています。

パックされた fp ベクトルを使用してパフォーマンスを向上できることはわかっており、すでに成功していますが、単一のスカラー コードではプロセッサのピーク パフォーマンスを達成できない理由を知りたいです。

私のマシンでのこのカーネルのパフォーマンスは、1 サイクルあたり 1.6 FP 操作ですが、最大は 1 サイクルあたり 2 FP 操作です (FP add + FP mul を並列で実行できるため)。

生成されたアセンブリ コードを調べて正しければ、理想的なスケジュールは次のようになります。mov命令に 3 サイクル、ロード ドメインから依存命令の FP ドメインへの切り替えレイテンシに 2 サイクル、FP 乗算に 2 サイクルかかります。 4 サイクルで、FP の追加には 3 サイクルかかります。(操作が同じドメインに属しているため、乗算 -> 加算からの依存関係によって切り替えレイテンシが発生しないことに注意してください)。

スケジュール

測定されたパフォーマンス (理論上の最大パフォーマンスの約 80%) によると、8 サイクルあたり約 3 命令のオーバーヘッドがあります。

私は次のいずれかをしようとしています:

  • このオーバーヘッドを取り除くか、
  • どこから来たのか説明する

もちろん、移動命令のレイテンシを増加させる可能性のあるキャッシュミスとデータのミスアライメントの問題がありますが、ここで役割を果たす可能性のある他の要因はありますか? レジスタ読み取りストールか何かのように?

私の問題が明確であることを願っています。ご回答ありがとうございます。


更新: 内部ループのアセンブリは次のようになります。

0 投票する
1 に答える
4969 参照

c - C コードのループ性能 [続き]

この質問は、ここでの私の質問に続きます (Mystical のアドバイスによる):

C コードのループ性能


私の質問を続けると、スカラー命令の代わりにパック命令を使用すると、組み込み関数を使用するコードは非常によく似たものになります。

このカーネルの測定されたパフォーマンスは、1 サイクルあたり約 5.6 FP 操作ですが、スカラー バージョンのパフォーマンスのちょうど 4 倍、つまり 1 サイクルあたり 4.1,6=6,4 FP 操作になると予想されます。

重み係数の移動を考慮すると (指摘してくれてありがとう)、スケジュールは次のようになります。

スケジュール

スケジュールは変更されていないように見えますが、movss操作の後にスカラーの重み値を XMM レジスタに移動し、shufpsこのスカラー値をベクター全体にコピーするために使用する追加の命令があります。mulpsロードから浮動小数点ドメインへの切り替えレイテンシを考慮して、重みベクトルを使用する準備ができているように見えるため、余分なレイテンシが発生することはありません。

このカーネルで使用されるmovaps(アラインされた、パックされた移動) addps&mulps命令 (アセンブリ コードでチェック) は、スカラー バージョンと同じレイテンシとスループットを持っているため、余分なレイテンシが発生することはありません。

このカーネルが得られる最大パフォーマンスがサイクルあたり 6.4 FP ops であり、サイクルあたり 5.6 FP ops で実行されていると仮定して、8 サイクルあたりのこの余分なサイクルがどこに費やされているかを知っている人はいますか?


ちなみに実際の組み立てはこんな感じ。

0 投票する
1 に答える
1566 参照

assembly - 組み立て MIPS TAL 説明書

すべてのアセンブリ (MIPS) TAL 命令を含むリストまたは何かを教えてもらえますか?

私は信じている

となります

しかし、すべての指示を見つけることができませんでした。

0 投票する
1 に答える
198 参照

linux - 1つのマシン命令が書き込むアドレスを取得するにはどうすればよいですか?

これで、EIPレジスタから機械命令のアドレスを取得しました。このマシン命令は、メモリの特定の領域の値を変更する可能性があります。必要ですが、このメモリのアドレスを取得できません。

もちろん、マシン命令のアドレスからデータを読み取ることはできますが、内容は0x8b0c4d8b ......のようなマシン命令であり、読み取れません(gdbのようなデバッグツールは使用できません)。

1つのマシン命令が書き込むアドレスを取得するにはどうすればよいですか?

0 投票する
1 に答える
3119 参照

mips - MIPS コードで実行された命令の総数は?

このMIPSプログラムでは

このコード フラグメントを実行すると、合計でいくつの命令が実行されますか?

0 投票する
1 に答える
127 参照

assembly - ストア命令でのデータバスの状態

組み立ての店の指示で混乱しています。アドレスバスが書き込み対象のメモリアドレスを運ぶとき、データバスの状態はどうなりますか。が指すアドレスのメモリ内容を運ぶか

0 投票する
1 に答える
600 参照

assembly - アセンブリー・リストで使用される SIMD 命令

次のコンパイル オプションを使用する場合

SIMD 命令が使用されていることをアセンブリ リストから知るにはどうすればよいですか?