深入理解Intel Core Microarchitecture

Core 2的2级Cache

1级Cache分为 32KB L1i Cache和32KB L1d Cache,都是8路组相联write back buffer,64bytes per line,每个core拥有独立的L1 Cache,共享L2 Cache和总线接口, L2 Cache为16路组相联,64bytes per line,与L1 Cache之间的数据带宽为256bit。两个Core的L1d Cache之间可以互相传输数据,L1 Cache拥 有几个数据和指令硬件预取器,L2 Cache的预取器是基于L1 Cache预取器的访问模式和密集程度来工作的 ,使用了一个改进的Round-Robin算法动态的在两个处理器之间分配带宽。前端总线接口也采用了类似的 方式以确保平衡。L1 Cache和L2 Cache采用了独立访问设计,也就是说Core可以直接从L2 L1或Main Memory中直接取数据,无须逐级上升。intel cache使用了mainly inclusive设计,相比AMD使用的是 exclusive设计。

数据和指令地址对齐的重要性

现代微处理器架构在Load和Store内存时,如果访问地址为N的整数倍时,则可以一次操作N个字节(N = 2^M),但如果操作的N个字节处于的地址对N取余不为0,则需要2个或以上个时钟周期,特别是在地址跨越 了Cache Line后,性能影响更为严重。比如读取4 BYTE的int变量,如果此变量所在内存物理地址(注意 是物理地址,不是线性地址)正好为4的整数倍,则能高效的完成操作(处于同样的BUFFER中时)。而且 数据按其自然长度对齐还有一个好处就是将数据跨越Cache line的几率降到了最低(后面我们会详细讲到 Core微处理器架构的Cache工作原理)。既然对齐那么重要,那我们如何让数据位于对齐的地址上呢?

对于全局变量我们可以使用__declspec(align(N))来达到目的,当然也可以使用INTEL相关的一些类型 比如__m128,比如:

typedef __declspec(align(16)) int A16INT;

A16INT i;

现在这个变量i的地址就是16字节对齐的了。

对于位于堆栈中的变量特别复杂,当然我们同样可以使用__declspec(align(N))来对齐变量地址,但 需要提醒的是,microsoft visual c++ compiler 的默认堆栈对齐是4BYTE,但官方文档称编译器会智能 的判断数据组织,进行必要对齐转换,堆栈默认对齐相当诡异,我测试过跟编译优化选项有关系,实际上 变量在堆栈中的排列顺序与定义顺序通常是不一致的,而且也不敢保证struct的字节对齐,double在8字 节对齐除非手动加上__declspec(align(N)),在优化条件为/O2时,测试中显示堆栈都是自然长度对齐,仅 仅限于我的个人测试,我没有找到相关文档明确说明/O2条件下堆栈一定是数据自然对齐的,所以如果在 明确要求数据对齐的地方,还是要加上对齐标志。

动态内存分配的对齐

参考_aligned_malloc、_mm_malloc,如果用malloc分配的内存大小大于8,则内存是8字节对齐的,否 则为最小2的多次方对齐,比如如果分配7字节,则4字节对齐。

Pentium Pro, 2 and 3 pipeline

时间: 2024-12-03 03:01:59

深入理解Intel Core Microarchitecture的相关文章

规格对比:AMD Threadripper VS Intel Core X

 爱好者产品线 Intel和AMD已经开始把其精力聚焦到爱好者市场.今年春天,Intel发布了新款的Core X,希望通过这个平台为游戏玩家们提供具有极高性能和超强任务能力的产品.Intel的这款产品,与AMD最近发布的Threadripper Ryzen处理器(这款产品针对游戏玩家和内容创造者)形成了正面交锋之势.位于加利福尼亚州圣克拉拉的Intel和位于桑尼维尔的AMD都有充足的理由来争夺爱好者市场.据Intel表示,游戏玩家和爱好者客户的市场份额会有20%的年复合增长率,尽管PC市场增长缓

AMD黑版Phenom处理器性能超越Intel Core终极版

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   AMD本周四推出了最新的Phenom II X4黑版处理器,型号为965.这款处理器的速度从原来最快的955的3.2GHz提高到了3.4GHz.这个时钟速度使AMD的这款965处理器稍微领先于英特尔目前最快的四核桌面处理器Core i7 975终极版.英特尔这款处理器的时钟速度是3.33GHz. 但是,有经验的购买者已经认识到对比采用不同架构的两种处理器的时钟速

精英H61H2-I2主板支持Intel 22nm第三代酷睿系列处理器

支持微软 Windows 8最大支持 95W TDP功耗处理器 支持Intel® 22nm第三代酷睿系列处理器 独一无二的M.I.B III超频界面,让超频更简单 支持Intel® K系列不锁倍频CPU超频 支持DirectX® 11,加速蓝光3D和DivX解码 图形化UEFI界面BIOS灵活易用, 支持包简体中文的多种语言,支持3TB以上硬盘 支持Intel高清显卡支持InTru 3D.Intel Quick Sync Video 高速影像同步转档技术.Intel Clear Video高清解

精英H61H2-A DVI主板支持双显示输出

100% 全固态电容设计,提升提升6倍使用寿命,使超频更加容易和 稳定 支持 Intel LGA1155第三代22nm酷睿系列处理器 支持双通道 DDR3 1333,最高支持32G 双显示输出选项: D-Sub, DVI Realtek8111E千兆网卡,完全兼容无盘网络 图形化 UEFI 界面灵活易用, 支持包含简体中文的多种语言,支持3TB以上硬盘 独一无二的M.I.B III超频界面,让超频更简单 通过在50℃环境温度下72小时的烧机测试 ECS EZ Charger快速充电技术,即便是在

NI发布3U PXI Express嵌入式控制器 采用Intel第二代Core i5处理器

新闻发布-2012年5月-美国国家仪器公司(National Instruments, 简称NI)近日发布了NI PXIe-8115高性能嵌入式控制器,配备了最新的Intel®第二代 Core i5双核处理器,能够缩短测试时间,是多核应用程序的理想选择. NI PXIe-8115控制器具有多种外设I / O端口以及6个行业领先的USB 2.0端口. 这些板载外设端口最大限度地减少了外部适配器的个数,帮助工程师搭建符合成本效益的混合系统. NI PXIe-8115嵌入式控制器的In-ROM和硬盘驱

从Java视角理解系统结构(三)伪共享

从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态 从我的前一篇博文中, 我们知道了CPU缓存及缓存行的概念, 同时用一个例子说明了编写单线程Java代码时应该注意的问题. 下面我们讨论更为复杂, 而且更符合现实情况的多核编程时将会碰到的问题. 这些问题更容易犯, 连j.u.c包作者Doug Lea大师的JDK代码里也存在这些问题. MESI协议及RFO请求 从前一篇我们知道, 典型的CPU微架构有3级缓存, 每个核都有自己私有的L1, L2缓存. 那么多线程编程时, 另外一个核

从Java视角理解伪共享(False Sharing)

作者:coderplay 从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态从我的前一篇博文中, 我们知道了CPU缓存及缓存行的概念, 同时用一个例子说明了编写单线程Java代码时应该注意的问题. 下面我们讨论更为复杂, 而且更符合现实情况的多核编程时将会碰到的问题. 这些问题更容易犯, 连j.u.c包作者Doug Lea大师的JDK代码里也存在这些问题.MESI协议及RFO请求从前一篇我们知道, 典型的CPU微架构有3级缓存, 每个核都有自己私有的L1, L2缓存. 那么多线程

Core i7将加快SOA/SaaS/Web 2.0应用开发

Intel官方正式确认,基于全新Nehalem架构的下一代桌面处理器将沿用"Core"(酷睿)名称,命名为"Intel Core i7"系列,至尊版的名称是"Intel Core i7 Extreme"系列.而同架构服务器处理器将继续延用"Xeon"名称.至于为什么是"I7",而不是大多数人认为的"Core 3",Intel方面还没给出详细的解释,估计意思是Intel的第七代处理器,但2

CPU中Intel Haswell是什么

  Intel Haswell是Intel目前正在研发的微处理器架构,由Intel的俄勒冈团队负责研发,用以取代目前的Intel Ivy Bridge和Intel Sandy Bridge.和Ivy Bridge一样,采用22纳米制程根据Intel的"Tick-Tock"策略和产品路线图,基于Intel Haswell微架构的处理器将于2013年3月至6月之间发布.Intel曾于2011年的IDF上展示出基于Haswell微架构的芯片. 沿袭自Intel Ivy Bridge/Inte