简单谈一下cache性能问题

之前已经提到了很多关于cache的相关知识,我们知道,cache命中和未命中造成的性能差异会很大,两种时钟周期差异可以到达10倍以上。简单来说,我们可以将CPU运行时间用以下的式子表示

\( CPU \ execution \ time = (CPU \ clock \ cycles + Memory \ stall \ cycles ) \times Clock \ cycle \ time \)

这个等式假设 CPU 时钟周期包括处理缓存命中的时间,并且处理器在缓存未命中期间停顿的情况

内存停顿周期(\( Memory \ stall \ cycles \))取决于未命中数和每个未命中的花费

$$\begin{array}{l}
Memory \ stall \ cycles &=& Number \ of \ misses \times Miss \ penalty \\
& = & IC \times \frac{Misses}{Instruction} \times Miss \ penalty \\
& = & IC \times \frac{Memory \ accesses}{Instruction} \times Miss \ rate \times Miss \ penalty \\
\end{array}$$

其中\( IC \)指的是指令总数,\( \frac{Memory \ accesses}{Instuction} \)指的是每个指令引用的内存数量,\( Miss \ rate \)指未命中几率,\( Miss \ penalty \)未命中惩罚。

通过上面这个等式我们可以很清楚看到\( Memory \ stall \ cycles \)如何降低,一般通过降低\( Miss \ rate \)和\( Miss \ penalty \)两项来优化

顺便提一下,其实在读和写上\( Miss \ rate \)和\( Miss \ penalty \)是不同的,原本公式为:

\( Memory \ stall \ clock \ cycles = IC \times Reads \ per \ instruction \times Read \ miss \ rate \times Read \ miss \ penalty \\ + IC \times Writes \ per \ instruction \times Write \ miss \ rate \times Write \ miss \ penalty \)

但是我们一般简化,通过合并读和写找到平均未命中几率和平均未命中惩罚

\( Memory \ stall \ clock \ cycles = IC \times \frac{Memory \ accesses}{Instruction} \times Miss \ rate \times Miss \ penalty \)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Theme Argon
本网站自 2020-12-24 12:00:00 起已运行