intel历代架构演进1——p6微架构

linux的学习主要还是基于x86系统,而intel是典型的代表,之前由于部分博客保存在个人空间被搞丢了。所以这部分历史文章重新基于《intel开发手册卷一》来进行回忆。


太早的历史我们就不多复述了,有兴趣大家自己去看intel开发手册吧。这里先从p6微架构开始讲


从95年开始intel公司引入了p6微架构。使用该架构的芯片主要为奔腾2,3和奔腾2,3至强系列cpu.

p6微架构后来被增强了基于芯片的二级缓存,被成为高级转换缓存。

该架构是一种基于流水线的三层架构(Three-way superscalar )。这样cpu可以利用并行处理技术。处理器可以平均的解码,分发和完成执行(回退)三个指令在一个时钟周期。

为了提升吞吐量p6家族使用了一个解耦的12-阶段的超流水线来支持乱序执行指令。

下图展示了p6微架构流水线以及增强的高级转换缓存

intel历代架构演进1——p6微架构_第1张图片

为了确保向指令执行流水线稳定提供指令和数据,p6微架构包含了2级缓存.L1 cache提供了一个8-KByte指令缓存和一个8-KByte数据缓存,两者和流水线紧密耦合。L2cache提供256-KByte,512-KByte或1-MByte的静态RAM通过全时钟同步64位的缓存总线和核心处理器紧密耦合。

p6微架构的核心在于乱序执行环境,又称为动态执行环境。

包含了3个概念:

  • 深层分支预测(Deep branch prediction)允许处理器在解码指令的时候排除分支让指令流水线满负荷。P6处理器实现了一个高度优化的分支预测算法来预测指令的方向。

  • 动态数据流分析(Dynamic data flow analysis)为乱序执行环境提供实时数据分析来确定依赖和检测机会。乱序执行环境内核可以监控很多指令并且执行这些指令的顺序可以优化,尽量利用多个处理单元,并且保持数据的完整性。

  • 投机执行(Speculative execution)是指处理器在执行一个超出尚未解决的分支条件时的能力,并且保证最终提交的顺序和原始指令流一致。未来确保投机执行的可能,p6微架构在提交结果的时候将指令的分发和执行进行解耦。乱序执行器内核使用数据流分析将指令池中所有可以执行的执行分析了一把并且保存结果到临时寄存器中。回退单元接下来线性搜索指令池中已经完成的指令(不再有数据或者指令依赖,或者是尚未解决的分支预测)。当完成的指令被发现,回退单元按照顺序提交这些指令的结果到内存或者寄存器(8个通用寄存器和8各x87浮点数据寄存器),他们最初是从指令池中被发布和回退的。




你可能感兴趣的:(linux内核学习)