Why多核CPU

Why多核CPU

多核的核心之间ALU是独立的,但是cache等是可以共享的,这方便了核心之间的通信

原因是当前单核CPU的性能很难提升了,而用多核性能提升很明显,相对于单核性价比高。想想市场上能有几款4GHz的CPU,但集成多个2GHz 的multicore(多核)到处都是。

--------------------------------------------------------------------------

首先回答下,单核CPU****如何提升性能呢?主要有提升工艺,添加Pipeline(流水线)去增加主频;Superscalar等,同时处理多条指令(instruction);或者Out-of-order执行指令,instruction prediction/prefetch等。讲下他们具体怎么实现,有哪些问题。

  1. 当主频提升,由于Power=[公式],V(电压)又与f(频率)正相关,导致power基于f三次方上升。功耗会带来散热问题,也严重影响移动设备的续航能力。 工艺提升对power改善有限,并且也快达到临界电压了(每个transistor需要最低临界电压实现开关)。 对于Pipeline(流水线), 是不能无限分割。首先logic是不能无限分割的,并且每加一级pipeline,就需要增加register,增加了area,并且register读写也需要时间,导致一条指令从开始执行到结束的实际时间增加了。并且pipeline级数越多,越容易导致hazards,从而影响性能。
  2. Superscalar是 issue multiple instructions per cycle。但当同时处理更多的instruction,需要考虑互相间的data dependency(数据相关性),使设计变得很复杂,性能提升有限。
  3. 微架构级的优化,如Out-of-order 执行指令, 当当前指令被stall,若后面的指令与他没有数据相关性,则可以先执行后面的指令;或者做指令预测,提前 读取/执行 指令,instruction prediction/prefetch。但当前这些已经做得不错,再想提升就得运用复杂的预测算法,性能提升有限。

通过以上可以看出,单核的提升有限,所以大家转到多核。

------------------------------------------------------------------------------------------------------------------------

对于multicore,一切都变得简单,每个core可以设计的简单,并行处理数据。当前都是多个application并行运行,完美适合多核。比如同时处理图像,音频,跑APP,就交给几个core,每人处理一个。

在多核系统中,通常有一个centralized core负责task scheduling,将task合理分配到各个core;每个core只处理简单的task,core的设计反而变得简单。在heterogeneous MPSoC(异构多核)中,有些specialized cores,只处理固定的application,从general processor成为了application-specific instruction set processor (ASIP),甚至能成为ASIC,使处理速度大幅上升(专用处理器比通用处理器性能优越)。

一个大的单核与多个小核的多核系统对比图如下:

imgimg

posted @ 2020-02-02 23:42  别再闹了  阅读(268)  评论(0)    收藏  举报