node,core,CPU和GPU的关系

最近在看论文时,经常会出现CPU,core和cache之类的,实验室的服务器又总是node和processor之类的,概念很多,有些晕。经过调研请教,现总结如下:

(1)node和CPU是等价的,其标志就是都有自己的cache和主存,有独立的支持电路。

(2)一个CPU上可能有多个core,每个core是一个独立的计算单元,同一个CPU的多个core共用缓存和主存。

(3)processor更多的是OS角度看到的逻辑处理器,由于CPU可以有多个物理核,而在操作系统的角度看,一个核就是一个逻辑处理器和独立的计算单元,所以processor的个数往往多余CPU的个数。

(4)多个CPU可以共享内存和统一寻址,即DSM或SMP结构,也可以不共享内存,每个CPU都有自己独立专用的内存空间和地址,例如集群系统。

(5)关于多个单核CPU与多核CPU。

1)从通信角度来看,多核CPU通过芯片内部总线通信,而多CPU往往需要通过主板总线、以太网或光纤通信。因此,多个单核CPU运行多线程程序时,由于每个线程需要独立运行在一个CPU上,则线程间通信开销较大。

2)从布线的角度,每个CPU都有独立的cache、主存和支持电路,因此主板布线难度较大。而多核CPU对主板空间的占用较小,布线压力较小。目前大部分主板仅支持单CPU,一般商用机器多采用多核单CPU的架构,系统具有多个逻辑核心,而少数高端机器和分布式系统需要更强的多任务并行计算能力,会采用多CPU架构。

3)从程序设计的角度,多核CPU可以通过软件封装被普通用户视为一个处理器,原来在单机上运行的程序不用更改就能执行,可以提高PC的计算能力而不增加程序的复杂性。而多CPU由于存在CPU间的数据一致性、主从关系控制等,导致程序实现、调试和运行的复杂性较高。

4)从程序运行的角度,多CPU运行时线程间的协作需要通过网络或主板总线完成,效率较低从而影响总体性能,而多核CPU可以通过共享的cache和主存完成,协同效率更高。然而在同时运行多个大型程序时,多个进程会分时使用多核CPU,程序切换开销较大。

5)从使用范围的角度,多CPU常见于分布式系统,多用于cluster,云计算平台等,该架构简单清晰,可以用商用机做数量堆叠,具有成本优势,适用于大计算量和对速度时间不敏感的任务,最大的瓶颈在于I/O,尤其是多个CPU之间的通信和协同,效率较低。而多核CPU架构适用于对I/O速度要求较高的应用,成本较高。

(6)关于CPU与GPU。CPU为中央处理器,CPU为图形处理器。两者都有总线与外界联系,有自己的数字逻辑运算单元和缓存体系,都是为完成计算任务而设计。二者的区别主要表现为:

1)从功能和原理来看,CPU主要用于管理硬件和保证操作系统及应用程序的运行,包含运算单元、控制单元和缓存等,其能够处理显示数据但效率较低。GPU是一种特殊用途的CPU,为加速视频游戏和显示而设计的。在三维游戏和显示中,往往需要对海量数据执行相同的操作,因此GPU采用众核结构把相同的指令发送到所有核上,每个核采用不同的输入数据执行相同的操作,同时针对3D图形处理进行专门的指令集优化和硬件设计。

2)从结构上,CPU的核数比GPU少,但其每个核拥有足够大的缓存和数字逻辑运算单元,并辅助有很多加速分支等复杂逻辑判断的硬件,因此擅长处理具有复杂计算步骤和数据依赖的计算任务,而GPU的核数很多,被称为众核,但每个核比较简单,拥有的缓存较少,数字逻辑运算单元的数量也较少,擅长对海量数据执行相同的操作,同时GPU针对视频和显示任务的特点进行专门的指令集优化和硬件设计以加速


3)从程序设计的角度看,为CPU编写程序时,往往倾向于利用复杂的逻辑结构优化算法,以减小计算任务的运行时间,为GPU编写程序时,则会利用其数据计算能力的优势,通过提高数据吞吐量来减小计算任务的运行时间。

由于GPU中蕴含大量的计算能力,目前已经开始将其用于通用计算,即GPGPU,例如CUDA,OpenCL等。


  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值