PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

Asuka小讲座之五:超线程技术通识

  [复制链接]
跳转到指定楼层
1#
Asuka 发表于 2012-4-22 00:55 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
点击数:22235|回复数:50
本帖最后由 Asuka 于 2012-4-22 01:00 编辑


    额,大家好,大家非常好啊,能继续看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资源的利用存在异向性的多个线程,比如,两个线程一个主要依赖指令集,另一个依赖缓存这种互相不怎么抢资源的调度方式会有一定提升。而这些特征,显然更加依赖软件方面来解决,以充分利用硬件资源,说穿了就是个非常简单的结论了。诚如硬件发展至今,已然非常先进,软件层面的进步却还有相当大的空间。
    所以,希望大家综合评估预算和自己的使用习惯,理性分析并选择最合适的产品,不必盲从,过度消费等于浪费,就是这样。╮(╯_╰)╭

Asuka小讲堂开讲啦!之一:摩尔定律 http://bbs.pceva.com.cn/thread-40293-1-1.html
Asuka小讲座之二:CMOS性能与制程上 http://bbs.pceva.com.cn/thread-40527-1-1.html
Asuka小讲座之三:CMOS性能与制程中 http://bbs.pceva.com.cn/thread-40803-1-1.html
Asuka小讲座之四:CMOS性能与制程下 http://bbs.pceva.com.cn/thread-41263-1-1.html
Asuka小讲座之五:超线程技术通识   http://bbs.pceva.com.cn/thread-43263-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1活跃度 +5 收起 理由
spartan + 5 以资鼓励

查看全部评分

2#
Asuka  楼主| 发表于 2012-4-22 23:48 | 显示全部楼层

RE: Asuka小讲座之五:超线程技术通识

Slaughter 发表于 2012-4-22 22:50
我感觉,超线程是为了弥补超长流水线带来分支预测错误后引起效能低下问题的解决方案。
记得P4是超 ...

对啊对啊   这就是其中一个方面   没有错
3#
Asuka  楼主| 发表于 2012-4-23 01:44 | 显示全部楼层

RE: Asuka小讲座之五:超线程技术通识

时光匆匆 发表于 2012-4-23 01:17
意思是AMD又重走当年intel高频路线?

我好像没那么说
4#
Asuka  楼主| 发表于 2012-4-23 20:50 | 显示全部楼层
cltyky 发表于 2012-4-23 11:19
Asuka  可以这样理解,不过我觉得从产能不同流水线间的调度这个角度去理解更好,因为你举的这个例子似乎并 ...

嗯  差不多  这种东西   有概念就可以了   意会既可 O(∩_∩)O~
5#
Asuka  楼主| 发表于 2012-4-25 08:58 | 显示全部楼层

RE: Asuka小讲座之五:超线程技术通识

yanleiberg 发表于 2012-4-25 02:06
现在最新的snb的超线程技术已经远不是p4时代可比较了的吧,对于相似的任务性能提升最优时可以有80%左右的提 ...

这位站友很求是,手机在线没法送分啊!
6#
Asuka  楼主| 发表于 2013-3-18 20:12 | 显示全部楼层
本帖最后由 Asuka 于 2013-3-18 20:17 编辑
automation 发表于 2013-3-18 19:03
请教楼主一个和可能超线程有关现象。

我写了1个科学计算的程序,需要进行数万个计算任务(比如矩阵乘啥的 ...


略不熟openMP   但直覺看恐怕應該在軟件層面debug一下
少一個滿載   能否嘗試再減少一個會如何呢

還有一些特殊的值   比如說  一半和一半減一這些
7#
Asuka  楼主| 发表于 2013-3-18 21:45 | 显示全部楼层
automation 发表于 2013-3-18 20:38
在win7+双路E5上,如果设置成一半确实很特殊,只会把任务分配到前面16个线程里(CPU0),后一半的CPU1几 ...

雙路的話只分配到一顆CPU里了

單顆CPU分配到一半  則會動態調整的感覺

如果要測試  我可能會這麼做   把筆記本的超線程關掉
然後分配4線程  和2線程
看看會有什麽現象

有點像線程調度這方面的問題呢

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部