五、伐指令优化器、乱序执行、SSE4等新特性
INTEL在Pentium M构架之初引入了一项新技术-伐指令处理器,伐处理器专门处理所有的X86伐操作例如PUSH、POP、CALL、RETURN等。伐处理器将这些伐数据集中处理而无需其他执行单元参与,这尤其简化了CPU整数执行单元的工作,加快了整数执行单元的处理速度。
AMD在Barcelona中也引入了类似的技术,AMD称之为伐指令优化器。有了伐指令优化器,处理器中的伐指令不再需要经过3路编码,也不再由整数执行单元处理,这加快了伐指令的处理速度,也同时加快了整数执行单元的处理速度。
当对比Athlon64和Core 2 的构架图后,我们就容易理解为什么同频率下CORE构架在以SSE数据为主的应用程序中表现的比Athlon64出色。但在3D图形应用方面又如何解释呢?难道CORE构架的大容量L2缓存和先进的预测技术使得CORE构架打败了内置内存控制器的K8构架?
CORE构架中一个重要改进是OOOE乱序执行:当装载指令队列发生等待时,处理器可以将队列后方处于等待的指令优先装载并执行,而不是一直等待到堵塞结束。平均而言,约30%的指令会发生一定时间的堵塞,这一乱序执行模式的引入,使新构架CPU性能有了明显的提高。AMD的K8构架并不支持OOOE乱序执行指令,所以即使K8构架有优秀的内置内存控制器,也依然被对手的CORE构架击败。正视这一技术上的落后,AMD在K8L构架的首款芯片Barcelona上及时改进为OOOE技术,这一改进必将为K8L构架的性能带来极大的提高。
Barcelona将可以乱序执行指令,同样也可以在前一指令尚未处理完成时,装载并用空载单元处理下一指令,即使这两条指令需要读取不同的内存地址。Barcelona拥有3个地址生成单元,可以完成3个寄存指令每周期,而CORE构架每周期只能执行1次-K8L构架的寄存速度要比 CORE构架强大3倍。
K8L构架中加入了新的SSE4指令扩展:SSEEXTRQ/INSERTQ指令和MOVNTSD/MOVNTSS指令。前者可以将多条指令合并为一条指令执行,后者用来计算流量寄存指令。INTEL也会将在稍候发布的Penryn处理器中加入。
六、内存控制器与预取器
当年当AMD将内存控制器集成至CPU内部时,我们看到了崭新而强大的K8构架。如今,Barcelona的内存控制器在设计上将又一次极大的改进其内存性能。
Intel已经运用在XEON处理器上的FB-DIMM内存构架可以同时执行读和写两项任务。而在DDR2内存中,处理器只能选择读或者写。DDR2内存在切换两种任务之间会浪费大量的性能和时间。在K8构架中,AMD采用优先处理简洁的读指令的方法来避免减少等待时间,而在K8L构架中,AMD采用了更智能的方案。零碎的写指令产生后,暂时集中寄存在缓存中,当写指令积累到一定数量后,内存将一次性集中处理这些指令,这将提高内存 50%的读写效率。
K8构架的内存控制器是128位的,而在K8L构架中,AMD将其划分为2个64位控制器,两个控制器可以独立运行,这将使处理器执行多任务能力有一定提高。K8L将可以支持DDR3内存和FB-DIMM标准,同时还将升级为Hyper-Transport 3,不过DDR3内存的引入对于K8L构架CPU性能的提升是有十分有限的。与显卡领域强势的GDDR3显存不同,DDR3内存带给K8L构架处理器的性能提升并不显著。
内存控制器的预取功能是运用相当广泛、十分重要的一项功能。预取可以减少内存延迟对整体性能的负面影响。当NVIDIA发布 nForce2主板时,重点介绍的就是nForce2芯片组的128位智能预取功能。INTEL在发布Core 2处理器之时也强调了CORE构架每核心拥有三个预取单元。
K8构架中每个核心设计有2个预取器,一个是指令预取器,另一个是数据预取器。K8L构架的Barcelona保持了2个的数量,但在性能上有了较大的改进。一个明显的改进是数据预取器直接将数据寄存入L1缓存中,相比K8构架中寄存入L2缓存的做法,新的数据预取器准确率更高,速度更快,内存性能及CPU整体性能将得益于此。