2022新思科技科普类短视频栏目《了不起的芯片》全新上线!新思科技一直致力于打造“人人都能懂”的行业科普视频,传播更多芯片相关小知识,解答各类科技小问题。每周3分钟,多一些“芯”知识。
第一期,我们一起聊聊CPU、GPU、GPGPU的前世今生。
CPU、GPU、GPGPU,这些名词大家都耳熟能详,但大多数人或许并不知道,这几个词包含着人们对数字世界“快,更快”的追求。它们关乎到你会议是否延迟、游戏是否卡顿、程序是否顺畅…… 今天我们就从CPU和GPU的不同,以及自GPU衍生而来的GPGPU,一起来看看IC时代下开发者们对“快”的追求是如何演进的。 CPU(Central Processing Unit),中央处理器应该是大家最熟悉的一个。它是我们电脑、手机等众多电子产品的“核心”, 我们就称它为老大哥吧。不管你在看视频、玩游戏,还是聊天、上网课,其实都是靠它来统一指挥调度,发号施令。为了满足很强的通用性能处理各种不同的数据,CPU的内部结构设计十分复杂,这也奠定了其老大哥的地位,基本上复杂一点的电子产品都离不开它。 简单一点来说,我们可以把CPU,或者说CPU的核心,分成三部分:计算单元(ALU)、控制单元(CU)和缓存单元(Cache)。例如下图,我们可以看到存储和控制单元占据了相当大的比例,也就是图中1、3、5和6的部分。相较而言,2和7所代表的计算区域就比较有限。这款CPU已经是非常老旧的Intel 486了,现代CPU中缓存单元的面积只多不少。 ▲ 来源:Wikimedia Commons(cc:https://creativecommons.org/licenses/by/3.0/deed.en) 迄今为止所有CPU都遵循老祖宗图灵定下的基本法:读取指令,进行解码,发出操作控制信号,然后再进行下一个工作。但随着计算机的普及,我们对于图形显示的要求越来越高,比如3D建模,大型游戏等,更丰富的网络生活,也要求电子产品实现更大的数据规模和更快的处理速度。如果让CPU一件一件来处理呢,大家可能就没办法这么开心地“网上冲浪”了。 尽管CPU的内部有各种各样的方法加速指令的执行,但越来越多的任务早已让CPU的那些小技俩江郎才尽。那怎么办,多堆几个CPU呢?Emmm……首先它太烧钱了(即便是最新款的CPU,它的物理核心数量也还是个位数哦),其次也有点大材小用。这时候聪明的开发者们就发现,既然CPU计算能力不足,我们就把计算单元都堆在同一块芯片上,让他们来主要负责大量重复运算的任务不就行了吗?所以GPU就出现了。 GPU(Graphics Processing Unit),就是图形处理器。 它只有很少的控制单元和缓存,但是堆满了运算单元,能够处 理以图形任务为代表的大规模并发运算。
图形渲染要对图像上的每一个像素点进行处理,而这些像素处理的过程和方式十分相似。这也是为什么GPU如此擅长图像处理。打个比方,CPU这个老大哥每天处理的指令包罗万象,但是图形图像处理属于单一重复工种,让老大哥费时费力来做这些显然不合适。于是GPU就像是老大哥招募来的一批小弟,能够同时处理大量重复的计算工作,这样老大哥可以高效地处理其他需要费脑子的活儿。也就是说CPU+GPU的强强联手,才让大家打游戏的时候能够纵享丝滑。 GPGPU(General-purpose computing on Graphics Processing Unit),从名字就可以看出来,它是GPU衍生出来的概念,指的是通用图形处理器。 随着GPU的功能和运算能力越来越强大,开发者就想GPU这个超强运算能力,除了图形处理之外还能不能去做一些别的?于是, 他们给GPU引入了通用可编程的功能 。所以GPGPU能够利用GPU可并行计算的架构以及可编辑的特性来实现可编程高算力的能力。如果我们把GPU看作CPU的小弟,那GPGPU就算是特长生小弟了。 GPGPU的发展过程也伴随着人工智能产业大火,我们对算力的需求不断攀升且计算不断复杂化,通过去掉了图形显示部分,将其余部分全部投入了通用计算,GPGPU在医疗健康、深度学习、VR等算力密集领域大放异彩。 好像听明白了,又好像没那么明白?没关系,我们举个通俗的例子。 如果我们将芯片处理的问题比作数学题, 图形处理 这种大量重复的简单任务就是 加减法运算 ,要分析指令、调取数据、控制操作等 逻辑控制类任务就是高考数学题,通用计算密集型任务就像是IMO国际奥数题。 那么相应的,GPU就是一群只会做简单运算的小学生,CPU是擅长逻辑控制的大学生,GPGPU就相当于一大群针对专门任务进行专项强化训练后的优秀奥赛选手。 很显然,如果脱离实际应用场景和成本来争论CPU、GPU、GPGPU哪个更厉害,这本身就是个伪命题。因为要处理的场景不同,所以三者设计的出发点也不一样。CPU、GPU和GPGPU在设计之初就都有EDA和IP的强大支持。如今市场上的大部分CPU和小型的GPU基本上都已经实现了IP化(同时有趣的是,在你笔记本里的x86 CPU里面还会套娃式的使用一些其他指令集CPU的IP)。大型的GPGPU目前也依然依赖EDA工具,特别是高效的后端数字工具来确保设计成功。 不同的处理器也许功能不同,但其终极目标是一致的,都是为了助力数字世界更快运作,三者各司其职又相互补充来协同工作,便就能给终端用户带来最佳的体验。
"image" data-miniprogram-servicetype="" _href="">