计算所 。张晓东 。multicore(2)
作者 陈怀临 | 2009-11-12 01:51 | 类型 专题分析, 行业动感 | 19条用户评论 »
“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问题。 (未完待续) | |
雁过留声
“计算所 。张晓东 。multicore(2)”有19个回复
这个歌舞厅的比喻太搞笑了!
“我个人其实认为并发问题才是multicore更大的问题,而非locality问题。”——有同感!
木有去过歌舞厅。。。任老板说那里是堕落的地方。
1. 能得到黄大师的肯定本首席感激涕零。。。
2. 小帅,按任正非同志的意见办。
很强很贴切
多核有前途吗?到最后能多到几个核?多不了到时候,何去何从?
人有多少个细胞?细胞里有多少个线粒体?我看现在的多核技术还没发展到那一步……目前看,多核还是有前途的
首席见多识广啊,比喻恰如其分
“操作系统,CPU cache的机理其实与生活中很相似。就是把您喜欢的那位直接送到酒店房间(L1 Cache),或者大堂(L2 Cache),等待你的花钱和。。。这就是服务上门的意思。因为您(CPU)多忙呀”
真是厉害呀!陈首席能把成人网站的语言和cutting edge的CPU技术用语这么smooth地融合在一起,佩服了。。。
这个比喻太牛了…
看来作者深有体会
我个人觉得,Locality对多核也很重要。
如多个男人一起进歌舞厅,都看上了一个美眉,只能轮流让她陪。并且,陪完第一个男的就弄脏了(Cache line dirty),得洗干净才能陪第二个。。。这样就严重降低了效率。
在多核中,如果多个core同时写一个cache line,会导致第一个core写了以后,为保持cache line一致性,第二个core要重新更新cache line才能访问。因此,在分配多核访问的变量,譬如packet counter之类的数据结构的时候就要注意这个问题了。最好给每个core弄一个自己的cache line对齐的memory,免得这些臭男人进了歌舞厅就一股脑儿抢小姐,right?
kao
这个比喻更强 ~~
小帅,首席
不管是并发还是cache一致性,你们说的其实都在某个点上。
实际上业界普遍认为multicore最大的挑战是它的program model上,就是如何有效挖掘每个核的潜能,如何在保证性能的情况下如何让它们”和谐”的工作。
然而由于多核的应用case或者说它的workload比较复杂。如何提取pattern?。。。。产生新的模型。。。
我相信David Patterson先生正在为此努力。
当然你们说的两点尤为重要,我归纳一下multi-core的challege…
* program model.
* cache coherency
* interconnect
* lock & spin…..
硬件可以做很多核,但是软件如何使用这些核,是个问题。并行计算应该有很多年了吧,科学计算可能容易一下,但是对应用来说,就没有一个广泛适用的模型。SMP的内核是一个例子,它的scalability有多少哪? 32,64还是更多?
ILP为什么功耗会大,能不能解释一下?按道理ILP还是TLP,晶体管的数量是一样的啊,难道是主频的原因?ILP对软件没什么帮助啊,单线程的软件,性能没法再优化了吧。
数电第二章说,MOS数字电路功耗与开关频率成正比。这是因为,MOS数字电路的频率如果高的话,MOS管的结电容充电/放电会变得频繁,从而增加功耗。
另外,还有一个很纠结的问题,主频高的话,数字信号的上升沿和下降沿遇到干扰,会造成系统不稳定,如果提高电压则能够使得上升沿和下降沿更sharp,使得系统更稳定。
但是,咱们知道,功耗同电压的平方成正比,如果提高5%的电压就会提高10%多一点的功耗。这很可怕。
因此,人们才用“双拳难敌四手”的道理创造多核处理器,它能够在低频率低电压下获得高性能,这样,虽然晶体管数目变多,但总功率其实是更小的。
Yes, 谢谢小帅。非常正确。
“功耗同电压的平方成正比” P=V^2 * f
帅总的解释非常不错。首席确实应该把这个网站给很多学校推广一下,比很多老师讲得要好。或者说,老师一般下课就走不愿意解答这些弱智问题。
昨天睡着前,突发奇想。其实有时候计算机工程师苦思冥想,花很长时间解决的问题。只要客户在自己哪里调整好流程,做好计划,可能也就解决了大半了,不用那么心急火燎的非要计算机赶紧算出来。
我当然认为无论如何我们这些计算机科技工作者的努力都是有益的。
多核也不能无限多下去,因为,
1,控制平面的限制
2,只要有那么一个spinlock,所有的并行的Core/Thread跑到这个地方,就都得挨个排队了。这对软件的限制很大。
3,Cache一致性的问题。这个很要命。如果一个cache line被标注为dirty,那就是几百个cycle的overhead。