查看: 1927|回复: 11
收起左侧

[分享] 关于核心的那点破事(番外篇)

[复制链接]
caolizhen
发表于 2009-12-26 18:29:46 | 显示全部楼层 |阅读模式
咳咳,今天老爸给我买了KFC,美美地大餐了一顿,真是高兴啊。
这是CPU工作原理的番外篇吧,因为涉及很多比较前沿的东西,所以单独拿出来做一次,搞点点击率什么的也不错
本次我完全以讲故事的方式来讲解多核心的处理问题,即使是什么都不懂的小白也能听个差不多的。括号内的东西属于补充的,忽略它也不会影响对文章的理解,当然最好还是不要跳过)当然不保证学术的严谨性。

言归正传啦~~

      也许很多朋友不明白为什么核心增多而性能不呈现线性增长,只要简单的举个例子就能明白了。
      现在一个工厂里只有一个工人,这一个工人在处理上面发布的任务,假定这个工人每分钟加工1个零件。那么1小时他就可以处理60个零件。
      这个时候如果再来一个工人帮助他,那么理想的情况是两人每小时可以处理60*2=120个零件。
      但是,因为加工的时候有可能会在同一时间内,两个人都希望使用同一个加工工具(cache,内存的一个块或一个数据的多请求,这是DDR内存怎么也改不了的通病,因为DQ总线只有一条),这样,因为工具在同一时刻只能让一个人用,那么这里就会减少他们的工作量,一个工人只能等另一个工人用完加工工具后才可以继续处理任务。
      当然聪明的你也可以告诉那位等待的工人,你可以在一位工人工作的时候让另一位工人干其他的事情,不过这也挺麻烦的,这个工人是个死脑筋,一旦想要做这项工作就不能被停止(任务指令一旦被发射,停不下来啊。。。。。)那么就只好在工作之前就把任务进行合理排列,减少这种影响时间(在计算机中这种调节属于控制器的范畴,我们称之为仲裁器或者调度器),但是呢想排列不就得有人帮忙吗?工人这种简单智商的又不会做这种复杂的工作(单纯的ALU啊,毫无可编程性。。。。。)所以你这个工厂的投资又要上来了(占用更多的晶体管,更大的核心面积)。
      这才仅仅是矛盾之一,有时候还会出现更囧的情况。比如一个工人对一个零件已经处理完毕了,结果另一个工人不知道,又拿来重新处理一遍,这样重复处理了一个零件好多遍,无疑是降低了效率。那怎么办呢?聪明的经理想到了一个好主意,让工人在处理零件的时候相互通告一声,这样,就不会出现一个零件多次被处理的事情了。(PS:说起来简单,做起来可就费劲了,这个问题其实类似于Cache的一致性问题,现在很多CPU为了通讯效率采用了独立Cache,这样使得每个核心内的信息都会不同,而这种情况往往会导致任务重复处理甚至出错,这样我们就不得不采用一种机制告诉核心某个任务不必处理,就好像tip那样)。
      还有的时候上司分配不合理,只给了一个工人一个很大的处理零件(这似乎类似于一个超长延迟的指令),而另一个工人只能傻看着,因为他需要对这个处理零件进行再加工(得到返回的值),没有办法,另一位工人只得忙别的去。而当这个很大的零件被处理完的时候,另一位工人也许刚刚接手一个处理工作,他是不可能放下手头工作的,另一个工人又在等待这个大零件搬离自己的位置,所以不能进行工作。这样时间又浪费了不少。
      所以从结果看来,两个人一起干似乎更加麻烦,但是人的工作能力有限啊,想要更高的处理能力只能搞更多的人,不得以的事情

当然在计算机里这些都有相应的术语,不过写成这种形式应该更加通俗易懂。实际上多核心的问题关键还是任务的关联性和cache,你看GPU就没那么多毛病。

评分

参与人数 2人气 +2 收起 理由
Daigo + 1 这种理论知识不强的东西放假之前就能看完,
小小梦 + 1 好~

查看全部评分

IllusionWing
发表于 2009-12-26 18:42:34 | 显示全部楼层
sofa
feiren
发表于 2009-12-26 23:17:16 | 显示全部楼层
支持鱼鱼, KFC的鳕鱼和虾堡不错嘛~
小小梦
发表于 2009-12-27 02:38:02 | 显示全部楼层
乃太帅了
Daigo
发表于 2009-12-27 10:29:32 | 显示全部楼层
2L纯抢SF,扣分[:27:]
Daigo
发表于 2009-12-27 10:40:49 | 显示全部楼层
那个啥……问个问题……GPU的流动处理器的个数不是相当于线程数么~?(相当于CPU的逻辑核心?)GPU目前还没有那么多物理核心数吧……会出现CPU这种情况么~?
清风皓月
发表于 2009-12-27 10:56:55 | 显示全部楼层
进来学习的
caolizhen
 楼主| 发表于 2009-12-30 14:36:32 | 显示全部楼层
回复 6# Daigo


    线程不取决于核心数目,比如P4,超线程。

超线程技术有很多种,有时间的话我会发个帖子的,现在在学校偷偷上网= =!!!
Daigo
发表于 2009-12-30 14:40:02 | 显示全部楼层
本帖最后由 Daigo 于 2009-12-30 14:41 编辑

回复 8# caolizhen


   我问的是GPU不是CPU~麻烦你在看一下……我只是在用GPU去类比CPU
caolizhen
 楼主| 发表于 2009-12-31 21:21:47 | 显示全部楼层
回复 9# Daigo


    GPU和CPU是一样的。
    GPU核心很多。。。。。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-24 08:42 , Processed in 0.127879 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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