- 积分
- 626
- 最后登录
- 2024-4-21
- 精华
- 0
- 阅读权限
- 40
- 主题
- 71
- UID
- 924712
- 帖子
- 1565
- PB币
- 1826
- 威望
- 0
- 贡献
- 0
- 技术
- 0
- 活跃
- 717
- UID
- 924712
- 帖子
- 1565
- PB币
- 1826
- 贡献
- 0
- 技术
- 0
- 活跃
- 717
|
36F
发表于 2019-7-17 19:58:14
IP属地福建
|只看该作者
多核心就是为了让逻辑多任务变成物理多任务
以下内容较多,没耐心或没兴趣可以略过,已经懂得可以无视
目前主流的计算机还是从冯诺依曼架构发展过来的,细节太多这里不说了,重点是这个架构使得每一个任务处理机制必须按顺序一步步来实现,这样的好处是可以让复杂任务设计也能变得简单化,比较符合人的思考习惯,缺点是机器处理比较慢。比如即使是计算两个加法a+b和x+y,你也得分成前后两次计算,而这两个计算过程实际上可以一次完成得到两个结果。如果只是慢也就算了,关键是在最早期的计算机是给科学家和高校设计用于搞研究用的,上面运行的东西在任何时候你都可以将从最底层bios例程到操作系统到上面的某个软件一起看作一个大程序在运行,任意时刻整个机器上都仍然只有单个指令在执行。其他指令只是在等着轮到自己而已。虽然硬件工程师也考虑过这个问题,并提供各种优化手段,包括流水线技术作微并行,但那些仍然是尽可能的对软件编写人员隐藏的,原因仍是让硬件的实现不至于改变软件的执行思路,所以大至的目标仍然是让一个执行过程变得更快,而不是把一个逻辑任务变成多个任务同时跑。
于是在这种机器上跑东西就会出现:我想打一篇文章听一首歌,你得执行音乐程序播放歌曲,等歌曲放完或中断播放了你才能打文章,或者你编辑文章,搞完了才能开始播放歌曲。为什么不能边放歌边打文章呢,于是就有了多任务分时的概念,就是利用一些机制把每个程序的执行过程切成微小的部分,再交替穿插在一起执行,这样就可以用一个执行过程“同时”执行两个任务了。这种机制有个问题就是同时处理的任务越多,整个机器的表现就越慢。
真正的多处理器技术就是来解决这个问题的,多核就是其中一种。为什么多处理器技术能解决呢,因为虽然即使是现在操作系统上看起来同时执行的程序可能达到成百上千,这些程序中的绝大部分时间都没在干什么很紧要的事情而仅仅是等待而已。比如打字程序大部分时间只是在等待键盘鼠标、改动屏幕上的光标对应的几个像素。各种服务宿主程序也基本都在睡觉。如果你拷一次文件,拷贝程序绝大部分时间也只是在等待磁盘控制器汇报状态。如果玩一款大型3d游戏。其他任务对游戏的干扰本身就少。如果为了游戏能更平顺快速的执行,可以把这些任务调度到其它处理器上去。
是的。多处理器技术并不能加快单个程序本身的执行速度,只是减少了需要同时执行的程序之间的干扰而已,减轻了互抢时间、一个程序拖慢其他程序的问题而已。
多处理器技术中,多核能使板卡布线较简单、电路稳定性高,因为走线长度和电磁干扰的问题相对于独立处理器间连接都变得比较容易解决。而缺点是散热问题。
有人可能会想,为什么不做非常多核心的处理器,让每个程序能单独跑在一个核心上。这有好几个原因,一个是兼容性。很多应用程序是从单处理器时代过来的。架构改变必然要求改动这些程序;另一个是cpu这种属于复杂电路,不像内存简单的几个晶体管就是一个单元,没法用很多单元简单叠加无限扩展。空间利用、布线、电气兼容、功耗控制等一大堆东西需要考虑,最终结果就诞生了如复杂大核心(每个单元性能好功能完善但很复杂,占用空间很大)和简单小核心(每个单元结构简单性能较弱占用空间少,可以布置几十到几千甚至上万个并行起来)这两类架构,而这两类架构上程序的思路和用途也有很大差异的
至于核心数是不是越多越好,看上面这大段文字能自己掂量
附注:可能还需要补充一些什么内容吧,想起来的话再说 |
|