首先需要解释CPU和GPU这两个缩写分别代表什么。CPU即中央处理器,GPU即图形处理器。其次,要解释两者的区别,要先明白两者的相同之处:两者都有总线和外界联系,有自己的缓存体系,以及数字和逻辑运算单元。一句话,两者都为了完成计算任务而设计。
两者的区别在于存在于片内的缓存体系和数字逻辑运算单元的结构差异:CPU虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件;GPU的核数远超CPU,被称为众核(NVIDIA Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(GPU初始时在浮点计算上一直弱于CPU)。从结果上导致CPU擅长处理具有复杂计算步骤和复杂数据依赖的计算任务,如分布式计算,数据压缩,人工智能,物理模拟,以及其他很多很多计算任务等。GPU由于历史原因,是为了视频游戏而产生的(至今其主要驱动力还是不断增长的视频游戏市场)
简而言之,当程序员为CPU编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,即Latency。当程序员为GPU编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖Lantency。目前,CPU和GPU的区别正在逐渐缩小,因为GPU也在处理不规则任务和线程间通信方面有了长足的进步。另外,功耗问题对于GPU比CPU更严重。
总的来讲,GPU和CPU的区别是个很大的话题,甚至可以花一个学期用32个学时十几次讲座来讲,所以如果提问者有更具体的问题,可以进一步提出。我会在我的知识范围内尝试回答。
当你操作电脑的时候,为了完成某项工作,需要电脑帮你工作,就像计算某个题目那样。
计算题目,理解题目并且整理出解题的步骤以及解法,那是CPU的事情。
但是解题的过程需要用到的众多计算,则需要一帮不需要很高逻辑理解力的计算者完成,他们只需要负责其中很简单但是数量又很大的简单运算就行了,最后他们把各自运算的结果交出来给CPU整理,那么这群计算者就是GPU。
这就是一个博士带着100个小学生的意思了
一个是通用计算,一个是专用计算。
CPU主要负责操作系统和应用程序,GPU主要负责跟显示相关的数据处理,
https://www.zhihu.com/question/19903344
作者:feng sam
链接:https://www.zhihu.com/question/19903344/answer/24298251
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一个Latency oriented
一个Throughput oriented
CPU会利用较高的主频、cache、分支预测等技术,使处理每条指令所需的时间尽可能少,从而减低具有复杂跳转分支程序执行所需的时间
GPU则通过数量丧心病狂的流处理器实现大量线程并行,使同时走一条指令的数据变多,从而提高数据的吞吐量
作者:杨囧囧
链接:https://www.zhihu.com/question/19903344/answer/90733894
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作者:王洋子豪
链接:https://www.zhihu.com/question/19903344/answer/13779421
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
作者:王洋子豪
链接:https://www.zhihu.com/question/19903344/answer/13779421
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。