簡體   English   中英

使用 -O3 編譯 gcc 在技術上會增加我的緩存未命中率

[英]compiling gcc with -O3 technically increases my cache miss rate

我一直在使用 cachegrind 進行分析並注意到一些事情。 當我用 -O3 編譯時,我有較少的數據獲取,但相同數量的緩存未命中導致更高的未命中率。 這很棒,但對我來說似乎是一件有趣的奇怪的事情,我想知道幕后發生了什么。 我打開的唯一其他相關編譯器選項是 -march=native 。 為了比較,

不含 O3

==16951== D   refs:        923,170,681  (817,941,424 rd   + 105,229,257 wr)
==16951== D1  misses:        9,477,102  (  8,115,150 rd   +   1,361,952 wr)
==16951== LLd misses:          647,219  (    262,227 rd   +     384,992 wr)
==16951== D1  miss rate:           1.0% (        1.0%     +         1.3%  )
==16951== LLd miss rate:           0.1% (        0.0%     +         0.4%  )

含 O3

==16978== D   refs:      218,804,125  (205,979,405 rd   + 12,824,720 wr)
==16978== D1  misses:      9,372,533  (  8,016,083 rd   +  1,356,450 wr)
==16978== LLd misses:        647,195  (    262,191 rd   +    385,004 wr)
==16978== D1  miss rate:         4.3% (        3.9%     +       10.6%  )
==16978== LLd miss rate:         0.3% (        0.1%     +        3.0%  )

這很可能是由於矢量化:

-O3

Optimize yet more. -O3 turns on all optimizations specified by -O2
and also turns on ... -ftree-vectorize and -fipa-cp-clone options. 

(來自 GCC 聯機幫助頁)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM