問題タブ [micro-architecture]

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 投票する
0 に答える
92 参照

x86 - インテルが最適化リファレンス マニュアルから 16 バイトの分岐ターゲット アラインメント コーディング ルールを削除したのはなぜですか?

インテル® 64 および IA-32 アーキテクチャー最適化リファレンス・マニュアルの以前のバージョンには、次のコーディング規則が含まれていました。

アセンブリ/コンパイラ コーディング ルール 12. (M の影響、H の一般性)
すべての分岐ターゲットは 16 バイト アラインされている必要があります。

2020 年 5 月版にはこのルールはありません。なぜ削除されたのですか?

ここLinux カーネル メーリング リストで説明されているように、16 バイトへのアライメントにはコストがかかります。しかし、これは長年の規則であり、ARM はマイクロアーキテクチャに対して同じ規則を持っています。

サブルーチンのエントリ ポイントと分岐ターゲットをクワッドワード (16 バイト) 境界に揃えることを検討してください。

AMD ファミリ 17h プロセッサ用の AMD のソフトウェア最適化ガイドには、次のように記載されています。

分岐ターゲットを 16 バイトに揃えることで、最大のピッカー スループットが得られ、キャッシュラインの終わりの短い op キャッシュ (OC) エントリが回避されます。