Intel Core vs. AMD K8:CPU架构分析(1)

文章出处:anandtech.com  作者:HighDiy  发布时间:2006-05-10
内容概要

关键词:Intel Core AMD K8 CPU 架构

导言:Intel全力推出的Core架构CPU在技术上有哪些突出特点?与AMD 大获成功的K8架构相比,优势体现在哪里?

  HighDiy IT技术点评HighDiy注:本文转载自AnandTech,原文参见《Intel Core versus AMD's K8 architectureHighDiy IT技术点评

  宽动态执行(Wide Dynamic Execution),高级数字多媒体增强技术(Advanced Digital Media Boost),智能内存访问技术(Smart Memory Access),高级智能缓存技术(Advanced Smart Cache),这些都是 Intel 的市场人员用以宣传其新推出的Core 架构CPU的名词,以阐明Core架构的高性能与低功耗。

  当然,我们不会只关心市场宣传人员给他们的产品贴上怎样样漂亮的标签。如果只看宣传口号的话,“结合良好的性能与合理的功耗,扩展数字生活的方式”,这是VIA C7 CPU的广告词,与Intel Core架构CPU的宣传何其相似。但是,没人会认为宣传口号背后的 Intel Core 架构CPU会与 VIA C7 CPU相同。

  下面,就让我们来仔细了解一下隐藏在市场宣传人员的口号背后的 Core 架构的秘密,并且与 AMD 的 K8 架构(Athlon 64, Opteron) 、Intel 之前的 NetBurst 架构以及 Pentium M CPU进行对比。撰写这篇文章之前,我们与 Intel 以色列研发中心(Israel Development Center,简称IDC)的架构设计师之一——Jack Doweck 进行了交流。Jack Doweck 设计了全新的内存乱序缓冲区(Memory Reorder Buffer)和内存相关性预测系统(Memory disambiguation system)。

Core架构CPU:Intel的P8?

  Intel 的市场资料中表示,Core 架构是 Pentium M CPU架构和 NetBurst 架构的综合。然而,众所周知的是,Core 架构是 Pentium Pro 架构,或者说是 P6 架构的延续。在 Core 架构中,你很难找到任何与Pentium 4,或者说是 NetBurst 架构有关的东西。在我们与 Jack Doweck 的交谈之后,这个事实更加清晰:Core 架构中只有预读取机制是从 NetBurst 架构获得的灵感,所有其它的设计都是从 Yonah 架构(Core Duo CPU)演变而来,而 Yonah 架构显然是从 Banias CPU和 Dothan CPU演变而来的。尽管所有 Banias、Dothan、Yonah和采用 Core 架构的CPU都继承了 NetBurst CPU的前端总线设计,但除此之外,它们毫无疑问都是曾经获得巨大成功的 P6 架构的后代。在某种意义上,你可以把 Core 架构叫做“P8 架构”,因为 Banias 和 Dothan CPU曾经被称作“P7 架构”。(不过,需要注意的是,Intel 从未给出过 Banias 和 Dothan CPU所采用的架构的正式名称,我们一般用 Pentium M CPU代表它们,或者简称为 P-M CPU。)

  不过这并不意味着 Intel 的工程师只是把 Yonah CPU的一些功能单元和解码器重新包装一下然后换了个名字就推出来。Jack 告诉我们,Woodcrest、Conroe 和 Merom CPU都是基于 Yonah CPU的,但是几乎80%的架构和电路设计需要重新进行。

CPU架构浅释

  为使那些不熟悉CPU设计的读者也能理解文章后面的内容,我们首先简单介绍一下CPU架构。为了理解CPU设计的目标和优劣,你首先需要了解CPU执行的指令,所以我们从CPU运行的软件开始。

  典型的 X86 程序的代码中大约有50%的指令是存储器访问指令,其中存储器读指令大约是存储器写指令的2倍。然后,大约15%到20%的指令是分支指令(if, then, else等)。剩余指令中,大部分是诸如“ADD”、“MUL”这样的较简单的计算指令。像“DIV”、“SQRT”这些较复杂的计算指令在所有指令中只占很少的一部分。所有这些指令都按照典型的流水线步骤执行:取指,解码,取操作数,执行,退出。

  首先,CPU会根据指令指针寄存器(instruction pointer register)指示的地址取回指令。这时,对CPU来说,指令仅仅是一些没有意义的0、1字符串。只有在被解码之后,指令对CPU来说才开始有意义。指令被解码后可以得到操作数地址和操作码,而操作数地址可以在下一步发挥作用:取操作数。你不会希望CPU对操作数的地址进行计算,而是对那些地址里面存放的内容进行计算——与 C 语言里面的指针的概念很相似。当操作数被取出来以后,ALU根据操作码的指示,就可以对操作数进行正确的计算了。计算结果一般将被写回CPU内部的寄存器堆中。有时候,计算结果也需要写回到缓存和内存中。这就是最后的步骤——退出。到此为止,你应该略微了解一条指令的整个执行过程了。

  今天,对CPU设计者来说,主要的挑战是CPU的存储器访问平均延迟。在一个由 Pentium 4 3.6GHz 和 DDR400 内存构成的系统中,CPU的速度是内存的速度(200MHz)的18倍。也就是说,访问内存的每一个周期,CPU会经过18个周期。而且,发送一个内存访问请求需要多个内存周期,回应一个内存访问也需要多个周期。因此,对于 Pentium 4 来说,花费200到300个CPU周期来等待内存访问的完成并不罕见。设计CPU缓存的目标就是避免内存访问的发生。但即使CPU缓存的缺失率仅为4%,也就是说,在CPU访问存储器的所有情况中只有4%的比例需要访问内存,这4%也将显著降低CPU的执行效率。


  共9页: 1 [2] [3] [4] [5] [6] [7] [8] [9] 下一页   
 

当前位置:主页>>CPU>>CPU分析>> Intel Core vs. AMD K8:CPU架构分析(1)