POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 6409|回复: 35
打印 上一主题 下一主题

INTER 和AMD 和双核的工作原理

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-19 09:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
记得前段时间论坛里有个帖子是讨论 INTER 和AMD 和双核的工作原理的

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

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

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


         是不是这样子的?? 高人解答一下,对这个很有兴趣
2#
发表于 2007-9-19 09:58 | 只看该作者
那是鬼扯。八个字
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2007-9-19 10:02 | 只看该作者
原帖由 acqwer 于 2007-9-19 09:58 发表
那是鬼扯。八个字



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

使用道具 举报

4#
发表于 2007-9-19 10:11 | 只看该作者
原帖由 Miss 于 2007-9-19 10:02 发表



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

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

使用道具 举报

5#
 楼主| 发表于 2007-9-19 10:14 | 只看该作者
原帖由 acqwer 于 2007-9-19 10:11 发表

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



好像是吧.里面吵的有点意思
回复 支持 反对

使用道具 举报

6#
发表于 2007-9-19 13:20 | 只看该作者
原帖由 Miss 于 2007-9-19 09:56 发表
记得前段时间论坛里有个帖子是讨论 INTER 和AMD 和双核的工作原理的

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

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

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



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

使用道具 举报

7#
发表于 2007-9-19 14:24 | 只看该作者
原帖由 Miss 于 2007-9-19 09:56 发表
记得前段时间论坛里有个帖子是讨论 INTER 和AMD 和双核的工作原理的

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

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

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


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

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

当然,我说的是目前大部分通用操作系统的调度算法。你完全可以修改这个算法,搞一个按程序去分配cpu核心的操作系统,呵呵。那么在你定制的这个系统上,无论是AMD还是Intel,都是一个核心负责一个程序。
回复 支持 反对

使用道具 举报

8#
发表于 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。
回复 支持 反对

使用道具 举报

9#
发表于 2007-9-19 19:56 | 只看该作者
:wacko: 怎么总有人把Intel拼成Inter……是不是国米的粉丝太多了?
回复 支持 反对

使用道具 举报

10#
发表于 2007-9-19 19:59 | 只看该作者
原帖由 fineday 于 2007-9-19 19:56 发表
:wacko: 怎么总有人把Intel拼成Inter……是不是国米的粉丝太多了?

广告做得不够多
回复 支持 反对

使用道具 举报

11#
发表于 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了,而且负载是顺次递增的,这是什么原理?属于那种结构?
回复 支持 反对

使用道具 举报

12#
发表于 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 该用户已被删除
13#
发表于 2007-9-19 23:16 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

14#
发表于 2007-9-20 07:39 | 只看该作者
原帖由 BrownGuo 于 2007-9-19 23:16 发表
re
我也感觉很奇怪加上很不舒服...
Intel


肯定是Intel 注册的时候没请半仙赐名,也没看风水选良辰吉日。w00t)
回复 支持 反对

使用道具 举报

15#
发表于 2007-9-20 10:49 | 只看该作者
1,SMP的对称是指硬件架构而定的,但作业调度没有强制要求一定在多个核心中分担,这是操作系统根据需要来实现的.
2,目前绝大部分应用的现代操作系统,调度和执行的单元都是线程(thread),而不是进程.当然会出现单线程设计的进程,对于此类程序,无法通过SMP带来性能提升,有时因为在多个CPU核心中迁移导致的时间浪费,甚至可能降低性能.
3,关于处理器黏着,目前的操作系统大部分都已经加入了这方面的考虑.大体思路是尽量保证某个线程始终在某一特定处理器核心上执行.这样做的意义有:1)避免线程在处理器之间迁移导致的cache miss;2)避免核心间迁移线程带来的额外处理时间;3)对于全抢占式设计的内核,避免某些高优先级内核线程被迁移导致的死锁问题,例如IRQ处理等。
4,处理器黏着也不是绝对的,只是“尽可能”保证。具体算法是在调度某一thread运行时先判断其上次运行的那个核心是否空闲,再判断是否有其余空闲核心。对于某些特殊的高优先级内核thread,可能出现如果判断上次运行的核心非空闲则将thread继续放入就绪队列中等待下一次调度。
回复 支持 反对

使用道具 举报

16#
发表于 2007-9-20 11:11 | 只看该作者
INTEL变INTER 唯一因素就是: 中文是 英特尔 ... 尔是卷舌音......
回复 支持 反对

使用道具 举报

17#
发表于 2007-9-20 12:25 | 只看该作者
来听高人传经讲道:)
回复 支持 反对

使用道具 举报

18#
发表于 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需要用软件去实现。
回复 支持 反对

使用道具 举报

19#
发表于 2007-9-20 14:57 | 只看该作者
游戏就无法有效利用SMP了,真奇怪
回复 支持 反对

使用道具 举报

waynts 该用户已被删除
20#
发表于 2007-9-20 15:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-2-5 05:07

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表