jaman 发表于 2012-5-6 08:34

axuka超线程技术解析

http://bbs.pceva.com.cn/thread-43263-1-1.html 原帖地址
额,大家好,大家非常好啊,能继续看Asuka腿了那么久的又一篇小讲座真是太给我面子了哇。这段时间突然有点迷茫,之前写了一个大的章节,写完就空虚了,然后就不知道该以什么内容继续了。经石大委托,我稍微就最近很火(其实也不是咱们这里火)的一个东西做了些survey(调查),那就是超线程技术。Asuka其实觉得挺郁闷的,之前的摩尔定律亦或是CMOS技术,哪怕是其中的FinFET a.k.a 3D TriGate技术都是些年龄差不多和我这么大的技术了,只不过近些年才来到产品面,为大家所知。今天这个超线程技术,其实吧,也不例外,又要从回顾当年开始了,大家拿好爆米花。
    超线程技术(Hyper Threading Technology, HTT),诚如大家所知,是由一颗物理核心模拟成两颗逻辑核心以达到多线程处理目的的,属于同步多线程技术(Simultaneous Multithreading, SMT)的一种实现形式。而与SMT相对的呢,叫做SMP(你们敢不长那么像吗?),全称是Simultaneous Multiprocessing,翻译成同步多任务技术?╮(╯▽╰)╭,随便吧!说穿了,就是多核心战略啦!所以,我们要从P4和速龙的爱恨情仇开始开始讲起了。
    好吧,其实也没什么好讲的,大家都知道,AMD曾经雄起的那个时代,都过去了,╮(╯_╰)╭。又是那个年代哦,.13micron (130nm)左右的制程,频率之争发展到瓶颈,为啥?诚如之前所叙述的,在制程不断进步的时候,晶体管的穿透性能已经非常出色,而晶体管间的连线电阻所导致的RC延迟已经超过了晶体管的延迟,成为了左右集成电路频率性能的最大障碍,集成电路设计开始从“门主导”转向“绕线主导”,频率之争开始进入胶着,眼看就打不下去了,大家想想现在仍然雄踞超频榜前列的赛扬,怀念怀念就行了。然后,Intel开始推广超线程技术,因为只要稍微加一点点小结构就好了。而AMD则更早意识到,今后的芯片性能基本靠堆,现在芯片里堆北桥堆时钟发生器什么的,这些原来扔在主板上的电路,将来则是要开始3D die stacking(就是集成电路的3D堆叠,别和3D晶体管搞错了哦!)。自从Intel在当时被AMD扇了一次以后,现在就同时走着SMT和SMP两条道路,反正都是用来赚钱的。插一句,AMD曾经的这一成功虽然在后期显得僵化而被我们诟病,但我们也不怎么能怪他,毕竟,芯片性能靠堆的这一现状基本没有变,而频率提升更是早被定义为没有前途,指望在硬件上获得突破其实已经非常困难,更值得期待的只能是“软”层面的架构与“并行”这些革新了,这也就是Intel的Tick-Tock愈加倾向于依赖架构进步的原因。
    让我们就来重温下速龙当时的辉煌吧!多核心战略其实很简单,两个物理核心达到几乎2倍性能,没什么好说的。那超线程呢?我们从它的基本原理开始看,Intel在当年也已经注意到了并行处理的需求,但显然没有摆脱以往的对于单核心性能的依赖,且依赖于复数核心对于能源的消耗要大很多,软件优化也没有很到位。同时,他们注意到,其实单核心的运算能力其实并没有经常被充分发挥出来,哪些时候呢?缓存误读,打断,分支结构等,比如,大家都知道CPU有多级缓存以及内存,以及硬盘等多级存储结构,拥有不同特性和存在目的的同时,性能也各不相同,效能优化勋章就是为了提升这其中的数据吞吐量而设置的,超频仅仅超运算速度意思就不如一起超频来得大,大家都知道。回归正题,那么CPU的高运算速度就会受限于低级的缓存之间的读写的拖累,从而在面向这些任务的时候就经常处于闲置状态,高运算速度得不到发挥。超线程技术就试图去利用这些延迟时间,更充分地发挥CPU的运算功力,所以通过模拟多颗逻辑核心来尽可能充分调度CPU的运算,让CPU可以不受限于各种读写等待,前置结果等待,分支结构等待。这样,两颗逻辑核心就可以共用一颗物理核心中的指令集,缓存,管线,而要实现则只要加一些用于调度、分配的小结构就好,这部分的调度原理相当繁杂,就不赘述了,大家有个概念就好。我们看一张图,

    大家不必纠结于加了些什么,只需要看到,其实只加了一点点东西哦,可能仅仅使物理核心大了5%不到,却让大家获得了20%左右的提升,可喜可贺,可喜可贺。
    然而,想法非常理想,并且为了让系统和软件可以方便调用这种技术,真的产生了两颗逻辑核心,这就必然导致了一个有限资源的分配问题,虽然Intel建立了一套非常完善的动态分配的调度策略,但当遇到CPU运算负担很重或者缓存占用率极高亦或是要调用非常复杂指令(过于复杂的指令HTT难以灵活调度)的任务时,亦即,当遇到一颗物理核心尚且处理吃力的进程时,由于兼顾两颗逻辑核心之间的公平性等考量而产生的僵化的分配策略就会拖运算的后腿了,也就是抢资源发生了。然后就是,当多线程技术应用于多核心CPU时,系统与软件如果对这些逻辑核心完全一视同仁,就有可能面对推土机遇到的问题,那就是难以充分调度闲置的物理核心,而纠结在了相对受限的部分逻辑核心中,导致性能瓶颈的产生。
    我们来看看数据,这里引用一篇paper中对超线程性能发挥的研究。受限是超线程发挥作用的表现。

    其中,横坐标是各种benchmark,各有侧重,几乎可以涵盖所有现实使用中的情况,纵坐标为效能乘数,图中的方框表示的是单一的一种benchmark同时在一颗物理核心中模拟出来的两颗逻辑核心中运行的结果范围,可见,HTT对于相同或相似线程的叠加,基本都可以做到20%左右的效能提升,反映到现实生活中,这就相当程度上代表了HTT在对诸如视频转码,数据库操作等相似任务中起到的优良表现,绝对的good job。
    当然,为了重温那个时代AMD的辉煌,我们也来看看走多核心道路的AMD赢了多少。

    一目了然,不必解释了吧。
    然后让我们看看,超线程不是万能的,非常依赖于软件的支持与调度策略的优化。

    这张图,表示的是横轴和纵轴的两种benchmark分别跑在同一颗物理核心模拟出的两颗逻辑核心中时,效能的提升或落后,图中越是深色的黑框表示效能越好,同时,越浅的框代表超线程技术越拖后腿的情况。
    通过对于这些情况的具体分析,基本可以总结为,超线程技术对于那些缓存误读率高(尤其是L1 Cache)的复数应用,比如数据库操作等,以及对CPU资源的利用存在异向性的多个线程,比如,两个线程一个主要依赖指令集,另一个依赖缓存这种互相不怎么抢资源的调度方式会有一定提升。而这些特征,显然更加依赖软件方面来解决,以充分利用硬件资源,说穿了就是个非常简单的结论了。诚如硬件发展至今,已然非常先进,软件层面的进步却还有相当大的空间。
    所以,希望大家综合评估预算和自己的使用习惯,理性分析并选择最合适的产品,不必盲从,过度消费等于浪费,就是这样。╮(╯_╰)╭
原帖地址


sukidayo35 发表于 2012-5-6 09:16

看完了 沙发!

wwwxp127 发表于 2012-5-6 09:32

这个技术好像就是视频处理时用得比较多吧,比如解码、渲染什么,但我用的有限元计算软件(如ANSYS)就只认物理核心,完全不理超线程啊

jaman 发表于 2012-5-6 12:39

wwwxp127 发表于 2012-5-6 09:32 static/image/common/back.gif
这个技术好像就是视频处理时用得比较多吧,比如解码、渲染什么,但我用的有限元计算软件(如ANSYS)就只认 ...

转的别人的贴,以前看过一篇评测,双核的超线程在游戏中提升明显,四核以上就没多大优势了,当然,超线程在其他方面的优势还是有的,正如你说的视频解码方面

wwwxp127 发表于 2012-5-6 14:08

jaman 发表于 2012-5-6 12:39 static/image/common/back.gif
转的别人的贴,以前看过一篇评测,双核的超线程在游戏中提升明显,四核以上就没多大优势了,当然,超线程 ...

那因为游戏制作时最多只考虑对四核进行优化吧,超线程压片解码时确实有提升,但不知道除了这两个用途外,一般用户还能在什么地方还能用上超线程。

Zria 发表于 2012-5-6 15:03

本帖最后由 Zria 于 2012-5-6 15:04 编辑

软件层面是硬伤
除非是专业的软件公司 否则很难去做多核优化(游戏?你管那个简单的分割线程叫优化?)
所以最后还是要看微软的进度了

jaman 发表于 2012-5-6 15:05

wwwxp127 发表于 2012-5-6 14:08 static/image/common/back.gif
那因为游戏制作时最多只考虑对四核进行优化吧,超线程压片解码时确实有提升,但不知道除了这两个用途外, ...

我平时用的笔记本。问一下,现在给cpu超频真的意义大吗,提高的帧数多不?为以后配机作参考,听其他人说超频只是跑分高,提不了几帧,

jaman 发表于 2012-5-6 16:06

jaman 发表于 2012-5-6 15:05 static/image/common/back.gif
我平时用的笔记本。问一下,现在给cpu超频真的意义大吗,提高的帧数多不?为以后配机作参考,听其他人说 ...

呵呵,我知道,我意思是以后就买i5了,关键是买可以超频的还是买不可超的,如果超频提升帧数不大,就不去折腾超频了

wwwxp127 发表于 2012-5-6 17:13

本帖最后由 wwwxp127 于 2012-5-6 17:17 编辑

jaman 发表于 2012-5-6 15:05 static/image/common/back.gif
我平时用的笔记本。问一下,现在给cpu超频真的意义大吗,提高的帧数多不?为以后配机作参考,听其他人说 ...
CPU超频?估计是显卡没喂饱吧?听说游戏渲染时的第一步的是靠CPU给GPU发送模型顶点,与CPU主频挂钩,不过我不想超,反正已经够用了

页: [1]
查看完整版本: axuka超线程技术解析