计算所 。张晓东 。multicore(2)

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




“ILP没法玩了,你不能clock越做越高,一上电,可以在CPU上煮鸡蛋吧。。。”。张老师的原话不是这样,要学术的多。但如果我上去,我估计就是这样来忽悠计算所的小样们。其实道理很简单,SuerPipeline的日子倒头了,为啥捏?多看看和听听《弯曲评论》陈首席关于ILP和TLP的录音和Intel NetBurst微结构的文章就可以了。

之后,张老师把体系结构红宝书批判了一把。说现在的经典教材太落后了。。。

我非常紧张的听完他的阐述。是的,张老师太狠了。我其实就想抽时间写一本现代计算机体系结构的东东。。。但,但,如果张老师要写,估计会来给我买单的同学就基本上会接近于零。。。

在把问题引到多核系统中之后,张老师正式开始忽悠其演讲重点。多核系统的研发的问题在哪里?

这其实是个重要的问题。张老师说一是并发问题,一是locality问题。他最近比较专注于locality问题。

什么是locality问题?

用张老师的话,这不是multicore独有的问题,是系统软件的经典问题。

Locality的问题,用大白话来说,就是:

1. 你去过一个歌舞厅,你往往会在不远的将来再去N次。用洋文讲,叫做时序局部性(Temporal Locality)

(注:你点过一个妩媚的美眉,你应该会在下次再点她。这就是locality原理。所以大家不要以为就你自己多情。)

2.你去过一个歌舞厅,你往往也会在旁边的按摩店逛逛。用洋文将,叫做空间局部性(Space Locality)

理解了一,就知道为什么要L1,2,3的cache了。

理解了二,就知道总线上为什么要burst读写了。为什么有32和64字节cacheline这个概念和机制了。

还都不理解?

操作系统,CPU cache的机理其实与生活中很相似。就是把您喜欢的那位直接送到酒店房间(L1 Cache),或者大堂(L2 Cache),等待你的花钱和。。。这就是服务上门的意思。因为您(CPU)多忙呀。

建议先补一下张老师说的已经过了时的体系结构课程:-(

张老师昨天就主要是谈他和他的研究生们在locality方面的工作。

我个人其实认为并发问题才是multicore更大的问题,而非locality问题。

(未完待续)

(4个打分, 平均:5.00 / 5)

雁过留声

“计算所 。张晓东 。multicore(2)”有19个回复

  1. snowweihua 于 2009-11-12 2:17 上午

    这个歌舞厅的比喻太搞笑了!

  2. 黄辉煌 于 2009-11-12 3:40 上午

    “我个人其实认为并发问题才是multicore更大的问题,而非locality问题。”——有同感!

  3. 帅云霓 于 2009-11-12 3:53 上午

    木有去过歌舞厅。。。任老板说那里是堕落的地方。

  4. 陈怀临 于 2009-11-12 4:14 上午

    1. 能得到黄大师的肯定本首席感激涕零。。。
    2. 小帅,按任正非同志的意见办。

  5. 老韩 于 2009-11-12 5:50 上午

    很强很贴切

  6. 游客 于 2009-11-12 7:13 上午

    多核有前途吗?到最后能多到几个核?多不了到时候,何去何从?

  7. wj_hd 于 2009-11-12 9:44 上午

    人有多少个细胞?细胞里有多少个线粒体?我看现在的多核技术还没发展到那一步……目前看,多核还是有前途的

  8. tree 于 2009-11-12 9:50 上午

    首席见多识广啊,比喻恰如其分

  9. 读者 于 2009-11-12 10:05 上午

    “操作系统,CPU cache的机理其实与生活中很相似。就是把您喜欢的那位直接送到酒店房间(L1 Cache),或者大堂(L2 Cache),等待你的花钱和。。。这就是服务上门的意思。因为您(CPU)多忙呀”

    真是厉害呀!陈首席能把成人网站的语言和cutting edge的CPU技术用语这么smooth地融合在一起,佩服了。。。 :-)

  10. 读者 于 2009-11-12 10:17 上午

    这个比喻太牛了…
    看来作者深有体会

  11. 帅云霓 于 2009-11-12 5:12 下午

    我个人觉得,Locality对多核也很重要。
    如多个男人一起进歌舞厅,都看上了一个美眉,只能轮流让她陪。并且,陪完第一个男的就弄脏了(Cache line dirty),得洗干净才能陪第二个。。。这样就严重降低了效率。
    在多核中,如果多个core同时写一个cache line,会导致第一个core写了以后,为保持cache line一致性,第二个core要重新更新cache line才能访问。因此,在分配多核访问的变量,譬如packet counter之类的数据结构的时候就要注意这个问题了。最好给每个core弄一个自己的cache line对齐的memory,免得这些臭男人进了歌舞厅就一股脑儿抢小姐,right?

  12. mips 于 2009-11-12 7:42 下午

    kao
    这个比喻更强 ~~

  13. aaa 于 2009-11-12 7:50 下午

    小帅,首席
    不管是并发还是cache一致性,你们说的其实都在某个点上。
    实际上业界普遍认为multicore最大的挑战是它的program model上,就是如何有效挖掘每个核的潜能,如何在保证性能的情况下如何让它们”和谐”的工作。
    然而由于多核的应用case或者说它的workload比较复杂。如何提取pattern?。。。。产生新的模型。。。
    我相信David Patterson先生正在为此努力。

    当然你们说的两点尤为重要,我归纳一下multi-core的challege…

    * program model.
    * cache coherency
    * interconnect
    * lock & spin…..

  14. droplet 于 2009-11-12 9:03 下午

    硬件可以做很多核,但是软件如何使用这些核,是个问题。并行计算应该有很多年了吧,科学计算可能容易一下,但是对应用来说,就没有一个广泛适用的模型。SMP的内核是一个例子,它的scalability有多少哪? 32,64还是更多?

  15. droplet 于 2009-11-12 9:05 下午

    ILP为什么功耗会大,能不能解释一下?按道理ILP还是TLP,晶体管的数量是一样的啊,难道是主频的原因?ILP对软件没什么帮助啊,单线程的软件,性能没法再优化了吧。

  16. 帅云霓 于 2009-11-14 6:37 上午

    数电第二章说,MOS数字电路功耗与开关频率成正比。这是因为,MOS数字电路的频率如果高的话,MOS管的结电容充电/放电会变得频繁,从而增加功耗。
    另外,还有一个很纠结的问题,主频高的话,数字信号的上升沿和下降沿遇到干扰,会造成系统不稳定,如果提高电压则能够使得上升沿和下降沿更sharp,使得系统更稳定。
    但是,咱们知道,功耗同电压的平方成正比,如果提高5%的电压就会提高10%多一点的功耗。这很可怕。
    因此,人们才用“双拳难敌四手”的道理创造多核处理器,它能够在低频率低电压下获得高性能,这样,虽然晶体管数目变多,但总功率其实是更小的。

  17. 陈怀临 于 2009-11-14 3:27 下午

    Yes, 谢谢小帅。非常正确。

    “功耗同电压的平方成正比” P=V^2 * f

  18. 大荣 于 2009-11-15 8:26 下午

    帅总的解释非常不错。首席确实应该把这个网站给很多学校推广一下,比很多老师讲得要好。或者说,老师一般下课就走不愿意解答这些弱智问题。
    昨天睡着前,突发奇想。其实有时候计算机工程师苦思冥想,花很长时间解决的问题。只要客户在自己哪里调整好流程,做好计划,可能也就解决了大半了,不用那么心急火燎的非要计算机赶紧算出来。
    我当然认为无论如何我们这些计算机科技工作者的努力都是有益的。

  19. 帅云霓 于 2009-11-16 2:45 上午

    多核也不能无限多下去,因为,
    1,控制平面的限制
    2,只要有那么一个spinlock,所有的并行的Core/Thread跑到这个地方,就都得挨个排队了。这对软件的限制很大。
    3,Cache一致性的问题。这个很要命。如果一个cache line被标注为dirty,那就是几百个cycle的overhead。