最近在看Intel P6架构的介绍,已经吓坏了。
从顺序前段到乱序后端,三路解码,微指令库,寄存器重命名,高效率打乱再还原,而且全部采用流水线设计并每周期都完美控制数据流动,避免数据冒险,分支预测失误,还能接受系统中断,保存及暂停处理。。。我已经不知道该说什么了。比起90年的一代Pentium和486的架构,P6的改变也太疯狂太伟大了,简直就是革命。然而我也在想,P6虽然不是第一个乱序执行的处理器,但也基本上就是把能想到的方法全用上了,为了提高IPC,架构越来越复杂,95年的Pentium Pro用了四百万晶体管,超出当时A21264一倍,但以后还能复杂到哪儿去,又如继续何革命?
我刚学架构时只考虑怎么用逻辑电路连接内存啊,寄存器啊,加法器啊,等等,根本没想过将指令分成步奏,更别说平行处理或乱序处理。继承P6的Netburst架构加深了流水线,但因为材料和物理原因,频率提升也就限制在了4GHz左右,之后的Core,Nehalem,甚至11年的Sandy Bridge架构除了细节上的改变,比如SNB先按指令长度解码再根据长度对应不同的解码器,不用的可以关掉省电,但SNB在根本上依然和P6很相似,按需前段,分微指令dispatch,乱序后端。这些年的CPU性能提升也基本上是靠外界因素造成的,比如Core增加了核心数量,可效利用软件和编译器优化,Nehalem集成了内存控制器,等等。
所以我认为P6是一个很伟大的架构,或许太伟大了,可以说活了足足15年。研究这个架构后我学到了不少,也理解为什么这么多教材都拿它为例子。我同时也担心以后x86的发展余地,是否还能见到如此大规模,根本上的革命。
从顺序前段到乱序后端,三路解码,微指令库,寄存器重命名,高效率打乱再还原,而且全部采用流水线设计并每周期都完美控制数据流动,避免数据冒险,分支预测失误,还能接受系统中断,保存及暂停处理。。。我已经不知道该说什么了。比起90年的一代Pentium和486的架构,P6的改变也太疯狂太伟大了,简直就是革命。然而我也在想,P6虽然不是第一个乱序执行的处理器,但也基本上就是把能想到的方法全用上了,为了提高IPC,架构越来越复杂,95年的Pentium Pro用了四百万晶体管,超出当时A21264一倍,但以后还能复杂到哪儿去,又如继续何革命?
我刚学架构时只考虑怎么用逻辑电路连接内存啊,寄存器啊,加法器啊,等等,根本没想过将指令分成步奏,更别说平行处理或乱序处理。继承P6的Netburst架构加深了流水线,但因为材料和物理原因,频率提升也就限制在了4GHz左右,之后的Core,Nehalem,甚至11年的Sandy Bridge架构除了细节上的改变,比如SNB先按指令长度解码再根据长度对应不同的解码器,不用的可以关掉省电,但SNB在根本上依然和P6很相似,按需前段,分微指令dispatch,乱序后端。这些年的CPU性能提升也基本上是靠外界因素造成的,比如Core增加了核心数量,可效利用软件和编译器优化,Nehalem集成了内存控制器,等等。
所以我认为P6是一个很伟大的架构,或许太伟大了,可以说活了足足15年。研究这个架构后我学到了不少,也理解为什么这么多教材都拿它为例子。我同时也担心以后x86的发展余地,是否还能见到如此大规模,根本上的革命。