The Core: Partition
核心:功能区间划分
首先我们需要清楚地知道,Nehalem是一款OOOE(Out of Order Execute)乱序执行的Superscaler超标量x86处理器。x86处理器上的超标量设计是从Pentium开始,乱序执行则是从Pentium Pro开始(Pentium仍然是IOE-In Order Execute的)。现在的乱序执行处理器采用的流水线可能深度不一,但是它们都离不开取指(Instruction Fetch)、解码(Decode)、执行(Execute)、串行顺序回退(Retire)这四个阶段。
既然是乱序执行,那么四个阶段中,取指令、指令解码和回退阶段实际上仍然是属于In-Order顺序的。加上内存存取方面的内容,Nehalem处理器可以按下面的颜色划分:
Nehalem Microarchitecture,经笔者整理
紫色部分属于取指令部分,橙色则属于解码部分。黄色部分是乱序执行的准备部分(灰色Retirement Register File属于乱序架构的Retire部分),蓝色方框是计算单元,绿色方框是内存子系统(包括紫色部分的指令缓存在内),计算单元和内存子系统的一部分(存取单元)一起成为乱序执行单元。绿色方框包含了Core和Uncore两部分,Uncore的内容,不同系列的Nehalem的处理器是不同的,就上图标明和本文谈论到的,都适用于我们的主角:Nehalem-EP处理器。
下面就大致从指令拾取开始介绍Nehalem的微架构,这些内容就经过了笔者的多方面查证以确保具有较高的准确性。然而由于内容太多,错漏难以避免,欢迎读者们一一指出。