作者woomar (hi)
看板hardware
标题Re: [请益] 请问双核心
时间Tue May 23 16:37:19 2006
我来说一下我的意见好了
在现阶段的CPU和OS配合之下
你可以把所有的系统都当成是多工的环境
简单的说
就是CPU每格一段时间会切换到不同的task中做事
但是
实际上一个时间点也只有一个task在做事(当然有多条pipeline在运算)
OS的排程方式
会让使用者有不同层级的多工观感
比如说在windows下面
当工作量很大的程式在跑的时候
他会把大多数的CPU时间和实体记忆体占去(甚至cache)
所以其他程式就会卡卡的(多工感小)
一来执行的时间少
二来可能轮到他执行的时候又在作swap的动作(实体<-->虚拟记忆体)or大量的cache miss
导致执行的效率很差
这种大量运算和吃大量记忆体的现象在多媒体类型的软体中很常见
这也是为什麽大家会说有处理多媒体的比较需要多核心的CPU的原因
至於Unix环境下OS可经过权限的设定
比较不会让人有资源都被一两个大程式吃光的感觉
所以多核心的意义是什麽?
简单说来
就是你在一个时间点下有多个task同时在做事
这里会遇到一个严重的问题
就是1+1通常会小於2
假如现在两个task彼此间没有任何关系的话
overhead就会比较小(但起码共用汇流排和其他资源)
有相关的两个task
彼此间可能需要互相沟通才做的下去
那在两个cpu中的task要怎麽沟通?(AMD和INTEL都有不同的设计)
这中间的沟通、等待、预测就要付出overhead
所以即使3.2G的双核心
他的效果也绝对不是单颗的两倍(千万不要被广告骗了)
事实上在资工和电机领域很早就在讨论这种多个task间的合作问题
大概十几年前这类型的研究都很盛行
不过那个时候因为硬体的支援太少
所以往往1+1<1
而且那个时候的硬体厂商会告诉你
他们能够让单核心的效能不断的double再double(单核心都做不完了)
所以当年的那些研究後来都没落了
不过现在的硬体也有点遇到了瓶颈
单颗的效能能增加的有限(散热是很严重的问题)
但是制程一值再进步
东西越做越小
剩下的空间做什麽?
乾脆多放一倍电路进去
然後把cache加大(cache加大不见得效能会提昇 但在目前来讲算是正向的)
来增加微幅的效能
虽然放进了两倍的电路
但是因为空冷的功率瓶颈还是没解决(好像是13X~14X)
所以很多目前的双核心都是降频在跑
也因此 1<0.7+0.7<1.4
所以很多人会建议看你的电脑要做什麽事
在决定要不要使用双核心
对於不支援双核心的程式来讲
你还是只用到一个核心的能力(而且这个核心的能力还比较弱)
所以惯用的软体支不支援双核心
支援性好不好才是最重要的考量
比如说前面有版友有转档的数据比较
这样的比较就很实际
当然就算你使用的软体不支援双核心
你还是可以用
毕竟当你偶尔执行工作量大的程式的时候
不会让其他的程式卡卡的
这还是会有爽度的
当然之後多核心几乎是一种必然的趋势
但在目前这个阶段的市售双核心是否算是发展成熟
还蛮见仁见智的
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.71.7
1F:推 danceking:一般人很难想这麽多,只知道双核一定比单核好,时脉高就是 05/23 16:53
2F:→ danceking:王道 05/23 16:54
3F:推 ktblast:推...打破双核心的迷思~~~ 05/23 17:15
4F:推 soonsoondog:不错 05/23 19:43
5F:推 fa18e: 推 05/23 19:52
6F:推 littleshan:...只能说不少地方讲错... 05/25 02:11
7F:→ ottokang:讲错也要拿出一点东西吧,楼上的 05/27 20:52