在此网站链接:
http://www.7-cpu.com/cpu/IvyBridge.html
它表示Ivy Bridge L1缓存访问的延迟是:
- L1数据高速缓存延迟=通过指针
进行简单访问的4个周期- L1数据高速缓存延迟=使用复杂地址计算进行访问的5个周期(size_t n,* p; n = p [n])。
而不是"简单",它们是否意味着指针大小是否与字大小相同?因此,如果指针是32位且它是32位操作系统,那么这将是简单的"否则它将花费"复杂"延迟?
我不太明白他们对两次延迟差异的解释。
答案 0 :(得分:6)
完整的x86有效地址看起来像displacement + base + index * scale
(其中displacement
是常量,base
和index
是寄存器,scale
是1,2 ,4或8)。
如果只有displacement
存在(或者可能另外是base
术语),听起来他们称地址简单,而index * scale
肯定属于复杂类别。< / p>
更新:实际上,英特尔优化手册有此声明(但对于Sandy Bridge):常见的加载延迟是五个周期。当使用简单的寻址模式时,基本加偏移就是 小于2048,负载延迟可以是四个周期。另见表2-12。 寻址模式对负载延迟的影响。