首页 > 编程笔记

异构计算是什么意思?

CPU 也像人类社会一样存在专业分工。

异构计算(Heterogeneous Computing)是指不同类型的计算单元合作完成计算任务。每个计算单元采用不同的架构,分别擅长处理某一种类型的计算任务。整个计算任务分解为小的单位,分别交给适合的计算单元来处理。

异构计算已经是成熟的架构,其基于两个本质思想。

一个本质思想是“专人干专事”

计算任务是多种多样的,以前计算机中只有一个通用处理器,运行通用的操作系统,“通用”的意思就是什么都能干。人们在实践中发现,可以把一些专门的工作独立出来,针对这种工作设计专用处理器,这些特定的场景包括数字信号处理、3D 图形渲染、人工智能算法等。

专用处理器是为了这种特定的工作设计的最优芯片架构,在执行效率上远远高于通用处理器,也有利于降低功耗和缩小芯片面积。

另一个本质思想是“把原来软件干的活,交给硬件来做”

在通用处理器上,具体功能由软件来实现。而软件由一段指令序列组成, CPU 一条条地执行这些指令,一个较为复杂的功能往往需要多条指令,导致一个软件的执行时间与指令的数量成正比,需要占用大量指令周期才能完成一项计算任务。

专用处理器可以把这样的功能通过一组电路来实现,用硬件实现等同于使用软件执行多条指令的功能,而总的执行时间远远少于用软件实现的执行时间。

异构计算的典型例子是图形处理器(Graphics Processing Unit,GPU)。

例如,如果要在计算机屏幕上显示一条线段,因为 CPU 的每一条指令只能显示一个点,所以要执行的指令条数就是线段中包含的点的数量,这样显然是很慢的。为了加快图形的显示速度,可以设计一个专门用于显示图形的处理器(即 GPU)。

CPU 和 GPU 之间定义协作接口,CPU 只需要告诉 GPU 一条线段的两个端点的坐标,然后由 GPU 转换成线段上每一个点的坐标,再发送给显示器进行显示。

这样的 GPU 可以基于非常简单的结构,但是显示图形的速度可以是通用处理器的上百倍甚至更高。

最早的 GPU 直接以硬件方式显示直线、矩形、圆形这些几何图形,称为“2D硬件加速”功能,后来又支持立体图形的“3D加速”功能,以及播放高清视频等“视频硬解码”功能。甚至像在屏幕上显示鼠标指针这件“小事情”,由于每台计算机上都要执行,现在也是由 GPU 而不是 CPU 来做了。

在现在的计算机上,如果使用媒体播放软件播放一段高清视频,可以看到 CPU 的执行负载往往不到 5%,就是因为 GPU 分担了绝大部分和显示相关的计算任务。

推荐阅读