POPPUR爱换

标题: INTER 和AMD 和双核的工作原理 [打印本页]

作者: Miss    时间: 2007-9-19 09:56
标题: INTER 和AMD 和双核的工作原理
记得前段时间论坛里有个帖子是讨论 INTER 和AMD 和双核的工作原理的

好像说   当只运行一个程序时

            inter的两个核心都去干 这个程序

           AMD 的只有一个核心去 搞那个程序,另外一个核心空闲的


         是不是这样子的?? 高人解答一下,对这个很有兴趣
作者: acqwer    时间: 2007-9-19 09:58
那是鬼扯。八个字
作者: Miss    时间: 2007-9-19 10:02
原帖由 acqwer 于 2007-9-19 09:58 发表
那是鬼扯。八个字



好像有人上图了,不知道那位兄弟有那个帖子的链接,让我看看~
作者: acqwer    时间: 2007-9-19 10:11
原帖由 Miss 于 2007-9-19 10:02 发表



好像有人上图了,不知道那位兄弟有那个帖子的链接,让我看看~

TPY的那篇搞笑文吗?一个打开了winrar的多线程支持,一个没打开。
作者: Miss    时间: 2007-9-19 10:14
原帖由 acqwer 于 2007-9-19 10:11 发表

TPY的那篇搞笑文吗?一个打开了winrar的多线程支持,一个没打开。



好像是吧.里面吵的有点意思
作者: samhrc    时间: 2007-9-19 13:20
原帖由 Miss 于 2007-9-19 09:56 发表
记得前段时间论坛里有个帖子是讨论 INTER 和AMD 和双核的工作原理的

好像说   当只运行一个程序时

            inter的两个核心都去干 这个程序

           AMD 的只有一个核心去 搞那个程序,另外一个 ...



只有一个核心去 搞那个程序,另外一个核心执行别的程序,没有任务就空闲。那是非SMP 的结构。 所有SMP 体系都是多个CPU 平均分配负载。
作者: cell_man    时间: 2007-9-19 14:24
原帖由 Miss 于 2007-9-19 09:56 发表
记得前段时间论坛里有个帖子是讨论 INTER 和AMD 和双核的工作原理的

好像说   当只运行一个程序时

            inter的两个核心都去干 这个程序

           AMD 的只有一个核心去 搞那个程序,另外一个 ...


和操作系统的任务调度算法有关系,和硬件关系不大,除非驱动程序没做好。

程序都可以细分为很多线程,每个线程都可以从操作系统内核申请到一定的执行时间,在这段执行时间内,线程跑在哪个cpu核心上,一般来说是随机的。从这点你可以看出,程序作为线程的集合,本身和cpu核心没有依赖关系。

当然,我说的是目前大部分通用操作系统的调度算法。你完全可以修改这个算法,搞一个按程序去分配cpu核心的操作系统,呵呵。那么在你定制的这个系统上,无论是AMD还是Intel,都是一个核心负责一个程序。
作者: cell_man    时间: 2007-9-19 14:42
原帖由 samhrc 于 2007-9-19 13:20 发表



只有一个核心去 搞那个程序,另外一个核心执行别的程序,没有任务就空闲。那是非SMP 的结构。 所有SMP 体系都是多个CPU 平均分配负载。


其实不会出现这样的情况。

即使在非smp的系统上,例如mpp和numa结构,或者是现在已经很不常见的AMP结构,也不会把程序(program)和CPU绑定到一起,甚至不会把线程(thread)和CPU绑定。即使是mpp结构下,没有UMA(Uniform Memory Access),现代操作系统的设计者,也认识到很有必要做线程跳跃(thread jump)。只是在mpp下,两个需要做thread jump的CPU之间的分布式节点,需要软件来做UMA。
作者: fineday    时间: 2007-9-19 19:56
:wacko: 怎么总有人把Intel拼成Inter……是不是国米的粉丝太多了?
作者: awoo    时间: 2007-9-19 19:59
原帖由 fineday 于 2007-9-19 19:56 发表
:wacko: 怎么总有人把Intel拼成Inter……是不是国米的粉丝太多了?

广告做得不够多
作者: samhrc    时间: 2007-9-19 20:04
原帖由 cell_man 于 2007-9-19 14:42 发表


其实不会出现这样的情况。

即使在非smp的系统上,例如mpp和numa结构,或者是现在已经很不常见的AMP结构,也不会把程序(program)和CPU绑定到一起,甚至不会把线程(thread)和CPU绑定。即使是mpp结构下,没 ...


想起来了, SGI 有一种工作站叫 Onyx 2 , 这个机器4个CPU 好像是串联工作的。 资源占用很小时候只有 CPU 0 工作,其他都是零占用。等CPU 0占用慢了之后CPU 1 再加进来工作,如果CPU0和CPU 1 没有满占用 CPU 2和CPU 3仍然是零占用。(观察了好长时间发现0~3那个CPU 最先占用那个最后占用这个排序是随机的。)如果我做一个死循环程序(就是直接在C shell 里面做一个死循环)这时候只有一个CPU 100%占用(这个是随机的),其他的不受影响,也不会死机。 可以肯定不是SMP了,而且负载是顺次递增的,这是什么原理?属于那种结构?
作者: cell_man    时间: 2007-9-19 20:29
原帖由 samhrc 于 2007-9-19 20:04 发表
想起来了, SGI 有一种工作站叫 Onyx 2 , 这个机器4个CPU 好像是串联工作的。 资源占用很小时候只有 CPU 0工作,其他都是零占用。等CPU 0占用慢了之后CPU 1 再加进来工作,如果CPU0和CPU 1 没有满占用 CPU 2和CPU3仍然是零占用。(观察了好长时间发现0~3那个CPU 最先占用那个最后占用这个排序是随机的。)如果我做一个死循环程序(就是直接在C shell里面做一个死循环)这时候只有一个CPU 100%占用(这个是随机的),其他的不受影响,也不会死机。可以肯定不是SMP了,而且负载是顺次递增的,这是什么原理?属于那种结构?


我没有见过这样的情况,真是惭愧了。期待高人来解答。

可能这样的调度设计是基于一定的特殊用途吧,否则这样的做法不是白白浪费了很多CPU资源吗?

还有一点想说的,这样的调度算法不能说明就一定不是SMP,SMP也不一定是平均负载。SMP的特征是,每个CPU都保持了相同的操作系统镜像,或者说每个CPU都运行着一样的操作系统复本,所以在访问共享资源的时候,不需要做内存同步,这种特征,业内的术语叫UMA(Uniform Memory Access)。你完全可以写一种调度算法,把一个进程(以及它的所有子进程和线程)都绑定到一个CPU上进行调度,这样在运行单一用户进程的时候,就会出现一个CPU 100%但其他CPU完全idle的情况,但系统结构依然是SMP。
作者: BrownGuo    时间: 2007-9-19 23:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: samhrc    时间: 2007-9-20 07:39
原帖由 BrownGuo 于 2007-9-19 23:16 发表
re
我也感觉很奇怪加上很不舒服...
Intel


肯定是Intel 注册的时候没请半仙赐名,也没看风水选良辰吉日。w00t)
作者: colddawn    时间: 2007-9-20 10:49
1,SMP的对称是指硬件架构而定的,但作业调度没有强制要求一定在多个核心中分担,这是操作系统根据需要来实现的.
2,目前绝大部分应用的现代操作系统,调度和执行的单元都是线程(thread),而不是进程.当然会出现单线程设计的进程,对于此类程序,无法通过SMP带来性能提升,有时因为在多个CPU核心中迁移导致的时间浪费,甚至可能降低性能.
3,关于处理器黏着,目前的操作系统大部分都已经加入了这方面的考虑.大体思路是尽量保证某个线程始终在某一特定处理器核心上执行.这样做的意义有:1)避免线程在处理器之间迁移导致的cache miss;2)避免核心间迁移线程带来的额外处理时间;3)对于全抢占式设计的内核,避免某些高优先级内核线程被迁移导致的死锁问题,例如IRQ处理等。
4,处理器黏着也不是绝对的,只是“尽可能”保证。具体算法是在调度某一thread运行时先判断其上次运行的那个核心是否空闲,再判断是否有其余空闲核心。对于某些特殊的高优先级内核thread,可能出现如果判断上次运行的核心非空闲则将thread继续放入就绪队列中等待下一次调度。
作者: 蔡锷南路走九遍    时间: 2007-9-20 11:11
INTEL变INTER 唯一因素就是: 中文是 英特尔 ... 尔是卷舌音......
作者: 287381906    时间: 2007-9-20 12:25
来听高人传经讲道:)
作者: cell_man    时间: 2007-9-20 14:28
原帖由 colddawn 于 2007-9-20 10:49 发表
关于处理器黏着,目前的操作系统大部分都已经加入了这方面的考虑.大体思路是尽量保证某个线程始终在某一特定处理器核心上执行.这样做的意义有:1)避免线程在处理器之间迁移导致的cache miss;2)避免核心间迁移线程带来的额外处理时间;3)对于全抢占式设计的内核,避免某些高优先级内核线程被迁移导致的死锁问题,例如IRQ处理等。


有一点值得商榷:在SMP系统中,线程在处理器之间迁移,不会导致cache miss。因为在SMP系统中,每个CPU的独立cache是需要同步的,具体的说,当一个CPU修改了它的某个cache line,它会通知其他CPU把它们cache中的该cache line设置为invalid,  这样其他CPU以后访问该cache line就会导致一个invalidations of shared cache lines,这种情况就叫做cache miss。CPU之间正是通过cache miss的机制来保证MESI的。

只有在非SMP的系统中,线程迁移才会带来额外的处理时间,因为此时的UMA需要用软件去实现。
作者: 花泥    时间: 2007-9-20 14:57
游戏就无法有效利用SMP了,真奇怪
作者: waynts    时间: 2007-9-20 15:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: cell_man    时间: 2007-9-20 16:07
共享式和独立式二级cache,很难说哪种方案更有优越性。

大致来说,共享式cache必须被多个核心互斥访问,在满负荷条件下,肯定不如独立式cache。它的优点是cache可以被多个核心利用,而且数据同步变得更加简单——几乎不用做任何事情。这是一种低成本的解决方案。

独立式cache也有很多优点,比如多个核心可以同时读写cache,在满负荷的条件下,表现应该好得多,但APIC可能会消耗掉一些多余资源。而且正如大家都知道的,因为每个核心都需要独立的cache,要做到和共享式cache相同的容量,成本就大大提高了。

从长远来看,我还是看好独立式cache的设计。看论坛也有朋友说过,在多线程满负荷条件下,感觉扣肉比x2更卡,也正是共享式cache的弱点表现吧。
作者: colddawn    时间: 2007-9-20 16:21
楼上别忘了不光是L2,还有L1的miss。这个迁移的时候必然损失掉了。
其实还有更复杂的隐患就是核心越来越多,L2的cache互锁导致的问题,再加上L3添乱的话,问题可能就更复杂了,目前的桌面用操作系统还未很好地对〉2 thread做更细致的考虑,主要体现在任务调度方面。而应用软件甚至连线程化尚未完全实现。
共享还是独享,都是根据实际环境在变,理论恐怕证明不出谁强谁弱来,就好像真假n核一个道理,最终只能凭实际体验数据。
作者: yuuto    时间: 2007-9-20 16:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: samhrc    时间: 2007-9-20 16:34
原帖由 cell_man 于 2007-9-20 16:07 发表
共享式和独立式二级cache,很难说哪种方案更有优越性。

大致来说,共享式cache必须被多个核心互斥访问,在满负荷条件下,肯定不如独立式cache。它的优点是cache可以被多个核心利用,而且数据同步变得更加简单 ...


都已经是独立的Cache 其实就是两个完全不相干的处理器了嘛。既然是两个互不相干的处理器,做在一块硅片上跟做在两块独立封装的IC 里是没有分别的。

既然这样由此引申一下(下面的话A fan 可能不爱听了) 那争论所谓胶水四核和真就没有多大意义了。多出来那两个核心放哪儿都行,干嘛非要用成本更高的工艺集成在一块硅片上?简简单单的胶水工艺多好。

呢个I 所谓的胶水四核学名应该叫MCM (Multi-Chip Module)。I直接宣传用了全新的MCM 技术封装光明正大地告诉消费者MCM 是什么意思那多好。不用藏着,这里头就是两个Die ,双心看得见!不缺斤不短两,明明白白购买踏踏实实使用。
作者: itany    时间: 2007-9-20 16:47
原帖由 samhrc 于 2007-9-20 16:34 发表


都已经是独立的Cache 其实就是两个完全不相干的处理器了嘛。既然是两个互不相干的处理器,做在一块硅片上跟做在两块独立封装的IC 里是没有分别的。

既然这样由此引申一下(下面的话A fan 可能不爱听了) ...


AMD用"真假双核"搞宣传的时候, IBM的脸色肯定不好看
作者: samhrc    时间: 2007-9-20 16:57
原帖由 itany 于 2007-9-20 16:47 发表


AMD用"真假双核"搞宣传的时候, IBM的脸色肯定不好看

w00t) 想起来了IBM 的P690 就是胶水4核,我还拿着那芯片看过呢,手掌大的铁疙瘩,不带散热片都有好几斤。真是胶水4核的,4个正方形的比一块钱硬币还大的die 贴在一块紫色的陶瓷板上 。w00t)
A这个打击面大了。 IBM 好些大机都是搭载胶水U的。

[ 本帖最后由 samhrc 于 2007-9-20 16:59 编辑 ]
作者: kasperskysky    时间: 2007-9-20 17:09
名字都写不对,还谈什么原理,搞笑
作者: itany    时间: 2007-9-20 17:11
原帖由 samhrc 于 2007-9-20 16:57 发表

w00t) 想起来了IBM 的P690 就是胶水4核,我还拿着那芯片看过呢,手掌大的铁疙瘩,不带散热片都有好几斤。真是胶水4核的,4个正方形的比一块钱硬币还大的die 贴在一块紫色的陶瓷板上 。w00t)
A这个打击面大了 ...


IBM的MCM确实YY,至少个头足够大,上边还一堆管芯,还L3缓存……
不想PC处理器屁大点大小,上边一个顶盖,C 420和QX6850长得都一样……
作者: Vitto    时间: 2007-9-20 17:36
原帖由 colddawn 于 2007-9-20 16:21 发表
楼上别忘了不光是L2,还有L1的miss。这个迁移的时候必然损失掉了。
其实还有更复杂的隐患就是核心越来越多,L2的cache互锁导致的问题,再加上L3添乱的话,问题可能就更复杂了,目前的桌面用操作系统还未很好地 ...


没有你想得这么恐怖,还有一个东西叫编译器,专门给不同的物理运算单元分配算法,解决这些逻辑混乱的。
那些几万个CPU的机器都算得好好的不互相锁,这几个核算的了什么。

[ 本帖最后由 Vitto 于 2007-9-20 17:38 编辑 ]
作者: Vitto    时间: 2007-9-20 17:43
原帖由 samhrc 于 2007-9-20 16:57 发表

w00t) 想起来了IBM 的P690 就是胶水4核,我还拿着那芯片看过呢,手掌大的铁疙瘩,不带散热片都有好几斤。真是胶水4核的,4个正方形的比一块钱硬币还大的die 贴在一块紫色的陶瓷板上 。w00t)
A这个打击面大了 ...


你说的是传说中的,能用十进制计算的POWER6 吗?w00t)
作者: itany    时间: 2007-9-20 18:01
原帖由 Vitto 于 2007-9-20 17:43 发表


你说的是传说中的,能用十进制计算的POWER6 吗?w00t)


这个好像是Power4家族的吧……
作者: samhrc    时间: 2007-9-20 19:47
原帖由 itany 于 2007-9-20 18:01 发表


这个好像是Power4家族的吧……


P690 是机器,里头的U 是Power 4MCM,俺公司这个是16路1.3Ghz  的。
IBM管一个物理的芯片叫一路,不管里面有几个核心都叫一个CPU ,SMIT里面也只显示16个物理CPU。
每两个MCM 和32根内存装在一块板子上叫一个节点,每4个节点配上一块时钟板和一块路由板。装在一个横抽屉里用螺丝锁在机架上,主机里一共四个抽屉最下面是电源还有系统主控制器各一个抽屉。

主机加IO柜 重量超过两吨,用3相 380v动力电,电源功率20KW 不是一般的YY 。

[ 本帖最后由 samhrc 于 2007-9-20 19:50 编辑 ]
作者: cell_man    时间: 2007-9-20 20:01
原帖由 Vitto 于 2007-9-20 17:36 发表


那些几万个CPU的机器都算得好好的不互相锁,这几个核算的了什么。


几万个CPU的规模不可能还是SMP,一般都是MPP,或者UMUA了
作者: 铁道虫    时间: 2007-9-20 20:02
又见Inter!:mad:
又见Inter!:mad:
又见Inter!:mad:
又见Inter!:mad:
又见Inter!:mad:
又见Inter!:mad:
又见Inter!:mad:
又见Inter!:mad:
作者: colddawn    时间: 2007-9-20 22:49
原帖由 Vitto 于 2007-9-20 17:36 发表


没有你想得这么恐怖,还有一个东西叫编译器,专门给不同的物理运算单元分配算法,解决这些逻辑混乱的。
那些几万个CPU的机器都算得好好的不互相锁,这几个核算的了什么。


几万个CPU?你说的是什么产品?请问这几万个CPU是共享缓存的吗?L2还是L3?
别说是高速缓存,几万个CPU读取同一片内存听起来就已经恐怖透了.这类问题靠编译器解决更是南辕北辙了吧.照你这么说也不用设立什么APIC了,FSB上能接几路就上几路U,编译器能让所有U刚好同时工作却不出现资源争用..........
作者: vincelau    时间: 2007-9-20 23:11
BS INTER的~~~:mad: :mad: :mad: :mad:




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4