52个知识点(二):多核处理器和矢量处理器之间的不同

Ant大约 4 分钟

52个知识点(二):多核处理器和矢量处理器之间的不同

原文链接:http://bristolcrypto.blogspot.com/2014/10/52-things-number-2-what-is-difference.htmlopen in new window

在一开始,你可能会产生这样的疑问:多核处理器和矢量处理器有什么区别?毕竟,你可能对并行计算这个词比较熟悉,也遇到过这两种不同类型的处理器。那这两种类型的处理器之间到底有什么样的区别呢?这就是本周密码学博士必须掌握的52个知识点所要讲述的问题。在我们深入讨论问题之前先来看一个概念:并行计算,多核处理器和矢量处理器都属于并行计算的一部分。

什么是并行计算?

在回答这个问题之前,我们需要先思考一下传统的“串行”处理模型是什么样的。假设我们需要处理一个问题,串行计算会把这个问题求解的过程划分成多个步骤(或指令),让处理器按顺序执行这些步骤(或指令)。当处理器执行完这些指令之后,问题的解也就出来了。尽管这是一个解决问题很好的方法,然而解决速度却是它的一个瓶颈,即处理器执行各指令的运行速度。如果要处理的问题不太复杂还好,如果我们要处理问题很复杂或者想要计算的更快会怎么样?是否有一种方式可以提高计算速度同时避免处理器运行速度的瓶颈?

答案你可能已经猜到了,就是并行计算。并行计算将我们要处理的问题划分成若干小问题,每个小问题被分开同时进行计算。这样,问题就被分布到不同的处理元素上,然后同时执行这些子问题,显著提升计算速度。计算速度增加的量由算法决定,可以由阿姆达尔定律[1](Amdahl`s law)确定。那这一切是怎么运行的呢?你怎样用这种方式处理问题呢?有两种方式可以解决这个问题:多核处理器和矢量处理器。

</什么是多核处理器?

一个多核处理器是一个单一的计算组件,它用多个串行处理器同时执行不同的任务来实现并行计算。允许以并行的方式计算的子问题,每个都由单独的处理器处理。这就像是一个项目中有多个工作人员,每个人被分配到不同的任务,同时为同一个项目做贡献。这可能会增加额外的组织工作,但完成项目的整体速度更快了。

什么是矢量处理器?

一个矢量处理器是一种计算单一的指令的处理器(就像串行处理器),但可以对以一维数组排列的多个数据集执行这些操作(与对单个数据集进行操作的标准串行处理器不同)。这个思路是:如果你的程序要把相同的指令在不同数据集上执行多次,而不是对每条数据执行一条指令,那为什么不在所有的数据集上执行一次指令呢?这个首字母的缩写SIMD(单指令多数据)常被用来表示这种类型的指令。

处理器之间的区别在什么地方?

按照通常的做法,我们举个例子总结一下。假设我们要将4块石头滚到马路对面,每滚一次需要1分钟。串行处理器每次滚动1块石头,依次将4块石头滚到对面总共需要4分钟。多核处理器使用两个内核相当于用两个人同时滚动石头,完成任务总共需要2分钟。矢量处理器使用一块长木板,放在四块石头的后面,同时推动四块石头,完成任务总共需要1分钟。多核处理器拥有多个工作者,矢量处理器同时对多个事物执行相同的操作。

参考文献

[1] http://en.wikipedia.org/wiki/Amdahl's_lawopen in new window

Loading...