L1缓存的延迟访问时间

use*_*112 1 cpu performance x86 assembly

在此网站链接:

http://www.7-cpu.com/cpu/IvyBridge.html

它说Ivy Bridge L1缓存访问的延迟是:

  • L1数据高速缓存延迟=通过指针进行简单访问的4个周期
  • L1数据高速缓存延迟=使用复杂地址计算进行访问的5个周期(size_t n,*p; n = p [n]).

而不是"简单",它们是否意味着指针大小是否与字大小相同?因此,如果指针是32位且它是32位操作系统,那么这将是"简单",否则它将花费"复杂"延迟?

我只是不太明白他们对两个延迟差异的解释.

Jes*_*ter 6

完整的x86有效地址看起来像displacement + base + index * scale(在哪里displacement是常量,base并且index是寄存器,并且scale是1,2,4或8).

听起来他们称一个地址很简单,只要displacement它存在(或者可能是附加的 base术语),而index * scale肯定属于复杂类别.

更新:事实上,英特尔优化手册有这样的说法(但对于Sandy Bridge):常见的加载延迟是五个周期.当使用简单的寻址模式,基本加偏移小于2048时,负载延迟可以是四个周期.另见表2-12.寻址模式对负载延迟的影响.