铁臂阿童木——Intel ATOM处理器剖析与研究 (4)

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




二 十万马力——ATOM 处理器硬件系统浅析 (2)

前面,我们分析了ATOM的FSB。现在我们再来看看处理器的内核。

ATOM支持Intel的Hyper-Thread(超线程)技术。它字面上的意义,是在一个Core里面集成了两个硬件“线程”。在操作系统以及程序设计层面看,Hyper-Threading处理器相当于两个CPU。而从硬件上看,Hyper-threading实际上就是实现了两套MMU以及CPU寄存器组(register file)。对于Intel x86来说,就是以下的这些寄存器:

通用寄存器EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP;

段寄存器CS, DS, ES, SS, 以及IA32新增的FS和GS;

标志寄存器EFLAGS;

另外还有控制寄存器CR0~CR4,调试寄存器DR0~DR7,测试寄存器TR4~TR7。这些寄存器属于特殊用途,只能在Ring0(内核态)访问,否则系统会抛出一个“一般保护错误”(general protection exception)。

我们知道,依据冯.诺依曼的理论,计算机由存储器、控制器和运算器组成。存储器,包括磁盘、内存或Cache,自然与Hyper-threading无关。前面提到的寄存器组和MMU属于控制器的范畴。而运算器ALU,在采用了Hyper-threading技术的处理器中,每个core只有一个。也就是说,多个hardware-thread共用一个ALU。这样,能够在芯片面积有限增加的前提下,大大提高多任务下的执行效率。

多硬件线程提升系统性能的原理大致是,由于现代CPU都属于流水线架构,在流水线中只有少数环节要用到ALU,更多的时间用在取指、译码、内存访问上,特别是出现Cache-line miss的时候,甚至会在内存访问上消耗数十到上百个cycle。在这种情况下,Hyper-threading的社会主义优越性就体现出来了:当一个thread出现cache-line miss而空转的时候,另一个thread可以把ALU拿过来用!这是不是有点类似多进程操作系统中,一个进程被I/O阻塞时,让出CPU给其他进程使用的情形呢?

实际上,与此种情况相比,Hyper-threading还有一个优势,那就是省去了上下文切换的开销。所谓上下文切换,指的是操作系统进程/线程切换的时候,涉及到寄存器组的保存,以及TLB页表的切换。由于Hyper-threading处理器实现了两套MMU和寄存器组,因此,两个Threads轮番调度使用ALU时,切换的开销远远小于操作系统的软件进程上下文切换。

另外,在Intel处理器的流水线架构中,只有一个环节能用到ALU。在这里有必要简介一下ATOM的流水线架构,一是为了更加详细地说明Hyper-threading的优势所在,二是可以澄清一些同学的误解,认为ATOM只是“穿了马甲的Pentium-III”。

ATOM号称是轻量级的解决方案,但它的流水线级数却达到了恐怖的16级。它们分别是:

取指令(Instruction fetch)阶段的IF1/IF2/IF3;

译码(Instruction decode)阶段的ID1/ID2/ID3;

指令分配(Instruction dispatch)阶段的SC/IS;

源操作数读取(Source operand read)阶段的IRF;

数据缓存访问(Data Cache Access)阶段的AG/DC1/DC2;

执行(Execute)阶段的EX1;

异常处理(Exceptions & MT handling)阶段的FT1/FT2;

提交(Commit)阶段的IWB/DC1;

图3-1 ATOM流水线示意图

我们看到,在这16级流水线中,真正用到ALU的只有一个阶段,即EX1的Execture(红色部分)。在这之前的12个阶段中,任何一个环节的延迟,都会造成ALU的暂时空闲(流水线空泡)。这个时候,另外一个thread就可以把ALU拿过来用了,而且,几乎没有进程上下文切换(context switch)的开销。为什么呢?因为,在Hyper-threading技术中,除了ALU以外,MMU、寄存器、流水线这些必不可少的部件都是双份的,只是公用ALU而已,如图3-2所示:

图3-2 支持Hyper-Threading的流水线

顺便说一句,过长的流水线除了有可能增加功耗以外,还有另一个问题,就是分支预测错误的惩罚级数增加,也就是代价变大。对于ATOM,这个级数为13级。也就是,一旦发生分支预测错误,前面的13级的工作全部要推翻重来。目前,ATOM的性能受这方面影响的多少,也许还需要更多的评测和定量分析才能有结论。

ATOM与Intel其他处理器还有一个非常大的区别:重新回归了CISC的世界。比较早接触计算机的朋友们,也许记忆中还有Pentium Pro这款出生不久就因先天不足而逐渐淡出市场的处理器。但是,从Intel技术的演进角度看,这颗处理器却又有着路标性质的意义——从P6架构开始,Intel在处理器中内建了一个RISC内核,外部的CISC指令首先需要被打散为一系列微操作(micro operation),送到RISC内核执行。由于RISC内核在性能功耗比上的优势,能够将性能做得很高,所以,这种架构一直沿用到后来的NetBurst、Core等微结构中。

“主要矛盾和次要矛盾,在一定条件下可以互相转化。”Intel在处理器中引入RISC内核,是为了解决CISC指令不断增加,与ALU面积功耗限制的矛盾。但是,在ATOM这样的嵌入式处理器中,整体的功耗和成本就上升为主要矛盾,原来的解决之道就不再适用了。ATOM处理器直接采用了CISC架构,不再需要将CISC指令转化为RISC内核的微操作,这样,省略掉了转换指令的部分,对整体的成本和功耗节省有很大的好处。

(没有打分)

雁过留声

“铁臂阿童木——Intel ATOM处理器剖析与研究 (4)”有13个回复

  1. 陈怀临 于 2010-01-17 8:30 上午

    ATOM里都有HyperThreading了。不错。

  2. 老韩 于 2010-01-17 9:25 上午

    很好的系列文章,通俗易懂,老少皆宜:)

  3. 帅云霓 于 2010-01-17 5:05 下午

    写技术文章比灌水费脑子多了:-(
    写500字的灌水内容,只要大脑往歪处稍微一拨方向盘,立即就文思泉涌,很快能编出Chris Lee跟Jane Zhang是百合恋人之类的八卦。
    但是如果想写500字的科技文章,哪怕是十万个为什么之类的科普文章,往往需要阅读消化50000字的资料,而这50000字又是从更大一个数量级的资料里面甄选的……这还是在有Google的年代。可以想象,叶永烈爷爷在给我们这拨祖国的花朵们写《十万个为什么》的时候,是多么的艰辛……

  4. coder 于 2010-01-17 5:14 下午

    HT部分可以参考 首席的http://www.tektalk.cn/2008/10/24/%E9%99%88%E6%80%80%E4%B8%B4%E6%97%B6%E9%97%B4-%E6%B5%85%E8%B0%88%E5%A4%9A%E6%A0%B8%E5%A4%9A%E7%BA%BF%E7%A8%8B%E6%8A%80%E6%9C%AF%EF%BC%9Ailp-vs-tlp/

    ATOM分析可以参考 http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3276

    详细的micro archi部分可以参考 http://www.agner.org/optimize/

  5. coder 于 2010-01-17 5:17 下午

    ATOM没有回归CISC。没有处理器会回归CISC了。ATOM的 decode 部分跟AMD K8是比较像的 (not micro op, but macro op)

  6. kevin 于 2010-01-17 6:15 下午

    “ATOM号称是轻量级的解决方案,但它的流水线级数却达到了恐怖的16级。””

    恐怖的16级………………
    你去查一下P3的流水线是多少级
    再去查查netburst的P4用的多少级流水线
    你很好奇你会用什么形容词。。。

  7. 左岸读书 于 2010-01-17 8:01 下午

    ATOM的强大动力来自重组!

  8. appleleaf 于 2010-01-17 8:41 下午

    7楼真是左岸吗?也是圈里的人?

  9. james 于 2010-01-17 8:47 下午

    >恐怖的16级………………
    >你去查一下P3的流水线是多少级
    >再去查查netburst的P4用的多少级流水线
    >你很好奇你会用什么形容词。。。

    Share your knowledge of pipeline with us please.
    楼主写篇文章不容易阿.

  10. 帅云霓 于 2010-01-18 1:34 上午

    ATOM的16级流水线比起经典MIPS的五级来说,当然是恐怖的范畴了。从前没有dig into过基于x86的处理器,只是在若干年前基于兴趣看过一些x86 IA32软件方面的内容,也不深入。
    大家提出的意见我都会去查相关的资料,非常感激各位读者督促我进步。

  11. kevin 于 2010-01-18 3:29 上午

    mips的五级流水线也只在教科书里有了。34kc已经9级了

    印象中coppermine以后的p3的流水线是12级

    netburst为了追求更高频率。流水线长达xx的32级。

    之后netburst完败amd。也被intel扔进了垃圾桶。

    所以说atom是山寨p3.一点不过分。。。

  12. coder 于 2010-01-18 4:23 上午

    p3的micro-archi 是 P6(微结构)(out of order cpu)。ATOM是in-order cpu. 所以 atom不是山寨的p3.ATOM跟P5(微结构)有点像。关于atom的一点历史 http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3276 文章里边有解释。intel 的48core 应该是 P5的core堆起来的。

  13. 黄岩 于 2010-01-20 4:04 上午

    好文章,顶一个。