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

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

  [复制链接]
跳转到指定楼层
1#
Asuka 发表于 2012-4-22 00:55 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
点击数:22264|回复数: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 以资鼓励

查看全部评分

51#
Asuka  楼主| 发表于 2013-3-18 21:45 | 只看该作者
automation 发表于 2013-3-18 20:38
在win7+双路E5上,如果设置成一半确实很特殊,只会把任务分配到前面16个线程里(CPU0),后一半的CPU1几 ...

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

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

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

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

50#
automation 发表于 2013-3-18 20:38 | 只看该作者
Asuka 发表于 2013-3-18 20:12
略不熟openMP   但直覺看恐怕應該在軟件層面debug一下
少一個滿載   能否嘗試再減少一個會如何呢


在win7+双路E5上,如果设置成一半确实很特殊,只会把任务分配到前面16个线程里(CPU0),后一半的CPU1几乎空载。

在win8+i7的笔记本上,好像没有规律,会在8个线程里不断切换,显得乱七八糟的,但总占用率还是50%

少两个暂时没测,因为程序都在运行中。

程序结果肯定是对的(没有越界,内存泄露什么的),只是不知道如何改进,怎么才能让全部N线程满载运行时性能不至于比N-1时慢。
49#
Asuka  楼主| 发表于 2013-3-18 20:12 | 只看该作者
本帖最后由 Asuka 于 2013-3-18 20:17 编辑
automation 发表于 2013-3-18 19:03
请教楼主一个和可能超线程有关现象。

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


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

還有一些特殊的值   比如說  一半和一半減一這些
48#
automation 发表于 2013-3-18 19:03 | 只看该作者
本帖最后由 automation 于 2013-3-18 19:05 编辑

请教楼主一个和可能超线程有关现象。

我写了1个科学计算的程序,需要进行数万个计算任务(比如矩阵乘啥的),用openMP for在任务级进行并行,但是如果设置线程数恰好等于超线程数(比如在双路E5的工作站 设置成32,或者在i7的笔记本上设置成8),程序非常卡,每个任务完成时间不一,总时间也明显慢。

但是如果设置成超线程数-1(31和7),就非常流畅,每个任务完成时间相近而且很快,总时间也短不少,而且任务管理器里显示CPU占用还是基本满载而不是7/8。


请问,能推测下算得慢是超线程的问题么?还是缓存冲突?
47#
illidan2004 发表于 2013-3-17 18:40 | 只看该作者
普通用户 发表于 2012-6-11 20:11
超线程真就是一把双刃剑,得用好了才行。
前面有位要装机的,要做PS和网页等的。。。。。。。我告诉你PS就 ...

955是一颗好u
46#
illidan2004 发表于 2013-3-17 18:39 | 只看该作者
hxl 发表于 2012-4-22 10:10
推土机的设计理念就是"高频"
可惜GF工艺不行32NM搞到还不如45NM

amd的确是被gf的工艺坑了
不然apu也会功耗好很多 有更多市场
45#
shirong08 发表于 2012-12-19 10:09 | 只看该作者
简单来说,在非极限的情况下(日常的办公娱乐)使用的话超线程还是有好处的吧。。。
44#
kxsa 发表于 2012-6-23 12:49 | 只看该作者
写的很好,学习了。
43#
xiaoziom 发表于 2012-6-11 22:04 | 只看该作者
有点长,但还是看完了,受教受教
42#
普通用户 发表于 2012-6-11 20:11 | 只看该作者
超线程真就是一把双刃剑,得用好了才行。
前面有位要装机的,要做PS和网页等的。。。。。。。我告诉你PS就看CPU和内存,显卡无所谓。。。。。。你要是为了PS装了AMD的u那样会让同行笑话你没做过像样的东西的。。。。。。。一看你就没实力
如果是平面学习阶段的话就无所谓什么U了,再就是你绝大多数情况下用PS只是处理小于几十MB的文件的话那也不用考虑i还是A,看价格选U就可以了。如果是相对专业一点的话,经常处理150~300DPI的大图的话我建议你最好是选英特尔的CPU了。。。。。。。。内存越大越好。。。。。。。

AMD的955也不是不能考虑,这个U性价比确实很高,我用了它两年。。。。。。。。。关键是AMD的主板芯片组在磁盘存储方面跟英特尔的速度没法比,还有USB2.0的速度。这在PS中比较要命况且现在的SNB速度很理想已非955所能比了。。。。。。。。。。
如果是3D类设计软件的话没有明显的指令集倾向性,所以AMD的CPU并不占弱势而且还可以发挥多和优势,性价比很高。平面类的英特尔绝对优势。搞专业的人的话多花一些钱是值得的。
41#
junyi_de 发表于 2012-6-10 08:03 | 只看该作者
之前学intel的Cache的命中率机制,觉得超牛逼,超线程技术其实很依赖于分支预测机制,预测的好,效率还会更高。
40#
dana94210 发表于 2012-6-2 01:36 | 只看该作者
小白来学习了
39#
hudagao 发表于 2012-5-25 23:01 | 只看该作者
printfxy 发表于 2012-5-20 23:07
这么说吧,在组机的时候,一般来说考虑到硬件更新换代快,所以我向来不支持一次性组高性能主机,譬如说, ...

多谢,说的很有道理,够用就好,硬件更新很快,计划比不上变化快,思想也要跟上变化才行!
38#
yumeyao 发表于 2012-5-25 11:11 | 只看该作者
现在的HT已经和当时的HT不可同日而语了吧
ALU和物理寄存器数量的上升,解码前端字长的提升,扒拉扒拉
37#
printfxy 发表于 2012-5-20 23:07 | 只看该作者
hudagao 发表于 2012-5-19 22:40
多谢你的快速回复!我平时多用PS编辑图片,制作网页,还有喜欢高清电影,一般不玩大型游戏。想法是:一次 ...

这么说吧,在组机的时候,一般来说考虑到硬件更新换代快,所以我向来不支持一次性组高性能主机,譬如说,3000块的显卡用4年,可以换成是1500的显卡用两年,用两个两年,就是两张1500的显卡,旧显卡还能出掉,可以说相当划算。

不过说起CPU就要考虑到主板接口的问题。。。想起intel到Haswell就换接口,真心蛋疼。。。貌似你说的是AMD,考虑到接口兼容的情况下,不妨参考一下我上面说的购买原则(当然前提是够你需求)
36#
hudagao 发表于 2012-5-20 22:28 | 只看该作者
多谢受用了,分析的很透彻,我恍然大悟!!
35#
赵小囧 发表于 2012-5-20 10:07 | 只看该作者
hudagao 发表于 2012-5-19 22:40
多谢你的快速回复!我平时多用PS编辑图片,制作网页,还有喜欢高清电影,一般不玩大型游戏。想法是:一次 ...

那你可以选择AMD 955四核+880g的主板+6850的显卡这三样加起来不过2000元(400W电源如果不虚标的话绝对够用!我的开核B55超频3.8G+镭风HD6850主机功耗满载也不过200-300W之间(北电专业版功率计),我用的是全汉蓝暴450)
你如果选择intel的平台的话主板+cpu都差不多2000了
另外就你的需求,完全没必要用太好的U
话说我开核的555 OC到3.8G以后玩什么都没压力。。。平时开节能都是跑在800mhz的
现在CPU性能严重过剩啊,所以没必要跟风去玩什么intel的极限性能,你根本用不到。
有句话怎么说来着?貌似是没用的东西再便宜都不要,何况intel那U还不便宜。。。
一个I5最便宜的是1200+加个差不多的主板也就2000了。
具体怎么选择看你了
955这个U未来3年绝对够用,这是我的理解
34#
hudagao 发表于 2012-5-19 22:40 | 只看该作者
赵小囧 发表于 2012-5-19 22:26
你要明白你的需求

多谢你的快速回复!我平时多用PS编辑图片,制作网页,还有喜欢高清电影,一般不玩大型游戏。想法是:一次升级到较好平台,好用过几年!现在问题是:电源现用长城节电发烧版,只有400W,显卡是早期的迪兰恒进HD5550高频版,如果用I5 3570K,散热器和电源需要更新,显卡可以晚一步!请给建议,CPU对我是否性能浪费!
33#
赵小囧 发表于 2012-5-19 22:26 | 只看该作者
hudagao 发表于 2012-5-19 22:22
就是,现在双核4000+一般应用没有什么问题。打算把旧平台送人,纠结I5 3570K,主要是超频温度是问题! ...

你要明白你的需求
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部