[py]你真的了解多核处理器吗? 了解多线程

越来越多的人搞爬虫,设计到多线程爬取, 还有一些机器学习的一些模块也需要这玩意, 感觉自己不会逼格不高. 抽时间赶紧玩一玩这东西, 希望提高对软件的认知和归属感,不要太傻.

cpu内部架构参考


你知道CPU是如何工作的?-视频
CPU核心越多越好?你的CPU可能正在养老!

你真的了解多核处理器吗?

1.双核≠双性能

多核不一定会使你的手机或电脑速度更快,但它将提高你的PC的整体性能,这是一个有所不同的细微的技术特色。多核处理器的性能提升并不是简单CPU核心的倍数,因为受到两(多)个核之间共享资源的拖累。比如双核性能只是单核的1.4~1.8倍,实际情况取决于具体的应用。


一个核拼命干活,拼命转啊转啊,其他核在看,最后温度不断上升然后蓝屏了。。。。

上图是个笑话,不过你可以用任务管理器可以看到并不是每个核的负载时均匀分配的。

这是为什么一个核转啊转啊,最后蓝屏的原因。

2.多核并不一定高能

从理论上来说,多核的性能肯定要比单核高很多。不过软件的发展远远跟不上硬件发展的速度,这样多核CPU在实际应用中就无法发挥其应用的功效,比如现在四核CPU已经非常的普及,但是针对四核优化的应用软件寥寥可数。即使你已经用上八核的CPU,在运行很多软件时仍然不会感到速度有多快得提升。因此我们并不要唯核是从,多核的不一定是最优的。“够用就好”永远是大家装机时选择硬件的唯一原则。另外由于架构、主频的不同,多核也并不一定比少核性能高。

多核不一定高能,的原理跟人多不一定力量大,是一个道理。

3.多核不仅是CPU

为了充分发挥CPU功效和减少用户支出,现在越来越多CPU集成GPU功能,比如Intel就在Sandy Bridge把GPU核心整合进了CPU当中,其GPU核心的图形核心性能大幅度的提升。

多核化是无奈之举:以前,半导体工艺的发展可以带来“一举三得”的效果,包括提高晶体管速度、降低功耗和缩小芯片面积。但是,当制造工艺发展到90nm或65nm时,泄漏电流的问题凸显,沿用以往的内部架构来提高频率的方法难以奏效。为了在不提高工作频率的条件下实现性能的提升,只能增加CPU内核的数量。

在有许多客户机要求进行并行处理的服务器中,多核架构容易获得比较好的效果。但是,问题发生在根据用户的要求运行应用软件的客户机里。由于可能同时运行的软件数量有限,即使可以将各个软件分割以后并行执行,但软件中必须串行执行的部分仍然会妨碍处理性能的提升。许多相关人士认为,在目前这种架构的PC中,4~8个内核可能是多核处理器能够获得较好性能提升效果的极限。

集成多个不同类型的内核:另一方面,提供新体验的高级用户接口、动态及静态图像分析等新的应用软件的不断出现,对处理器的处理性能提出了更高的要求。如果处理器仅在目前以CPU内核为主的架构上继续发展,这些新应用可能将无法实现。

2007年9月,英特尔公司董事会名誉主席Gordon Moore在英特尔秋季技术峰会上表示:“众所周知,摩尔定律在物理上是有极限的。大约10年或15年以后,摩尔定律将会遇到根本性障碍,而退出历史舞台。”反过来说,Moore认为,半导体工艺的发展很可能还会像以前那样再延续10年左右。在把工艺发展当作技术推动力的同时,为了越过横亘在多核架构前面的壁垒,处理器应该采用什么样的内部架构呢?

业界想到的方案是采用异构处理器架构,即将不同类型的内核集成在一起。在这种架构中,CPU内核所不擅长的浮点运算及信号处理工作,将由集成在同一块芯片上的其它可编程内核执行。相关人士认为,集成多个不同类型内核的异构多核架构将成为今后处理器的主流架构。
从同构到异构通用处理器将实现SoC化:Nvidia公司的总裁兼CEO指出:“目前,图形芯片具有的浮点运算性能已经大大超越了处理器。如果能够灵活运用,随着图形芯片的发展,将会涌现出各种各样新的应用。”在占据PC及服务器主流地位的x86处理器中,围绕GPU(图形处理单元)展开的相关研发工作突然活跃起来。

GPU的集成和通用化取得进展:围绕GPU的研发方向主要有两个。首先,是将GPU内核集成到处理器芯片上。AMD公司在2006年7月收购了加拿大的GPU生产商ATI科技公司,并提出了将ATI公司的GPU内核集成到处理器上的Fusion处理器方案。另外,英特尔公司在2007年4月明确表示,正在开发矢量处理器Larrabee(开发代号),其中集成了许多专用于浮点运算的CPU内核。

另一个研发方向是,利用GPU擅长对浮点运算进行并行处理的特点,将其用作矢量处理器。这就是面向通用计算领域的GPGPU(General Purpose Computing on GPU),NVIDIA公司从2006年下半年已陆续推出相关的硬件产品及软件开发工具(见图1)。

赛灵思推了一款新器件的时候,估计英特尔老大科再奇惊得要从椅子上掉下来了。

这个新器件是啥?这就是赛灵思今年在大年初五发布的基于16nm FinFET 3D晶体管的FPGA新品---Zynq UltraScale MPSoC

看看它的内部结构:

  • 1、 四核A53处理器 CPU
  • 2、 一个GPU Mali-400MP
  • 3、 一个Cortex-R5 CPU
  • 4、 电源管理单元,AMS单元
  • 5、 H.265(HEVC)视频编解码器
  • 6、 安全模块
  • 7、 UltraScale FPGA 单元;

这其实就是一款异构处理器,如前所述,它是一款ASIC就级的异构处理器!而且是64位,采用16nm FinFET工艺的处理器!而且是采用FPGA实现硬加速的处理器!

Intel收购Altera,说明Intel坐不住了。一场大戏即将开幕。拭目以待。

4. 什么是双核、双芯和超线程

双(多)核:是指拥有两(或多个)物理核心(又称为内核),各种CPU核心都具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元,各个核心通过超传输技术让CPU内核直接跟外部I/O相连,集成内存控制器技术,使得每个内核都有自己的高速缓存可资遣用,都有自己的专用车道直通I/O,没有资源争抢的问题。

双(多)芯:仅仅将两(或多个)完整的CPU封装在一起,连接到同一个前端总线上。由于总线的限制,两个核心必然会产生总线争抢,影响性能,而且这样的核心越多,越容易加剧处理器争用前端总线带宽,成为提升系统性能的瓶颈,这是CPU架构引发的先天故障,因此这种双(多)芯实际上是“假多核”。双芯有些像是北京郊区开发的大型社区一样,多个社区利用同一条城市快速路,人们出行(数据处理)肯定要遇到堵车的问题。双核则是为不同小区开发专用车道,每个小区出行并不交叉(数据可以并行处理),并不会发生堵车现象。

HT技术(即超线程技术):HT技术是在处理器实现2个逻辑处理器(注意不是物理处理器),是充分利用处理器资源,类似虚拟CPU,让系统误认为是双核处理器。而双核心处理器是集成2个物理核心,是实际意义上的双核心处理器。举个形象例子来说,前者好像是一个能用双手同时炒菜的厨师,但一次只能把一碟菜放到桌面;而双核心处理器好比2个厨师炒两个菜,并同时把两个菜送到桌面。

5.多任务与多线程

多任务是指系统可以同时执行多个任务,比如你可以一边下载、一边听歌,Windows可以很好支持多任务的运行,这和多核CPU并没有多大关系。多线程则是指系统可以针对某项操作,调用多个CPU进行并行处理。比如支持多线程的PS,在批处理多个操作(如滤镜、抠图)时,系统就会调用多路CPU并行处理这些操作以提高操作效率。

posted @ 2018-01-24 12:42  mmaotai  阅读(2311)  评论(0编辑  收藏  举报