我正在使用英特尔凌动处理器(原装英特尔(R)CPU)。我做过cat / proc / cpuinfo。它显示了两个处理器但是对于物理和核心ID,它显示为0.我做了grep“^ core id”/ proc / cpuinfo | sort -u | wc -l找不到cpu核心。它显示1.这是什么意思?它只有一个物理核心和两个逻辑核心吗?在这种情况下,mesi缓存一致性协议是否适用?
答案 0 :(得分:2)
来自英特尔架构手册第3卷:
8.7.13.1“处理器缓存”
对于支持Intel超线程技术的处理器,缓存是共享的。任何缓存 在一个逻辑处理器上执行的操作指令 对物理处理器的缓存层次结构的全局影响。
根据我的理解,这意味着您有1个物理内核,启用了超线程,为您提供2个逻辑内核。这些逻辑内核几乎共享物理内核的所有资源,包括所有缓存,因此不需要缓存一致性协议,两个内核总是看到相同的缓存状态。
http://en.wikipedia.org/wiki/Hyper-threading上提到了一个有趣的副作用:
2005年5月,Colin Percival在奔腾4上证明了这一点 恶意线程可以使用定时攻击来监视内存访问 与其共享缓存的另一个线程的模式,允许 窃取加密信息。