Title: Question No.2

Question:
         What is the difference between a multi-core processor and a vector processor?
 
Motivation:
         在面对耗时和困难计算任务时,我们最自然的想法一定是在更加快速的设备上执行这个运算。那么多核心处理和矢量处理器就是加强运算能力的两种可选的途径,事实上现在更经济的选择应该是使用公有云计算服务,比如Amazon的EC2和Google的GAE,花费要低廉的多。
 
Answer:
详细的讨论非常复杂,足够单独开设课程,我们在这方面没有深入的了解和经验,只能结合文献简单谈谈。密码学中经常涉及复杂的运算,比如快速傅里叶变换FFT、矩阵相乘或者1024比特的长整数相乘等等。而所有已知的最快的算法,基本都是基于Divide-and-conquer原理进行的设计,把复杂任务分割成可以并行处理的若干子任务,以期能够加速完成。如果各个任务的数据相对独立,那么利用Multi-core processor的特性就非常合适。如果需要花大力气来保证依赖的正确性,或者每个运算都涉及到相邻的一组数组,那么利用Vector processor的特性可能更好。
Multi-core processor:
 

 

1 Multi-core processor
(From: www.soundonsound.com/sos/jan08/articles/pcmusician_0108.htm)
由于集成电路技术的限制,复杂度不能任意提高,时钟频率不能无限提高(否则耗电量巨大),制造商在同一个集成电路晶片上整合多个计算核心。多个核心之间可以共享储存空间,例如i7,四个处理核心,每个核心有各自的L1和L2缓存,四个核心共享L3缓存。注意由于延迟的不可避免,各个核心之间如果数据有相互依赖,还要加入指令保证正确的依赖顺序。
 
Vector processor:
 

2. 标量计算与矢量计算
不增加计算核心的数目,而是把指令操作的寄存器标量文件,扩展成寄存器矢量文件,每个寄存器都是一个矢量,含有多个数据项,同时对多个数据项进行操作。减少了指令取码和译码所占据的带宽空间。现代桌面处理器都融合了一部分Vector processor的设计思想,特别是SSE指令集,而显卡GPU则是大量使用vector processor units。由于每次对一组数据进行操作,同步要求应用在整组数据上,而非单个数据,同步开销要小很多。
 
References: