在上期《软硬件融合技术内幕 基础篇 (13) —— 温度墙是什么?》里面,我们了解到了,CPU及计算机中其他部件的频率,是由数字锁相环决定的,并且计算机系统可以基于温度来控制各产品的工作频率。在最坏的情况下,系统会强行切断所有部件的供电,直到系统温度恢复后,供电才能恢复正常。
在文章的最后,我们还提到了一个问题:
社会上有一部分人,批量采购GPU,用于一些非法的金融活动(俗称“挖矿”)。由于成本考量,这些GPU有可能在非标准的机房工作,散热条件较为恶劣,导致工作温度长期偏高。因此,有人认为,这类GPU在恶劣条件下有可能受损导致工作不稳定。实际上,由于GPU也具有类似CPU的温度保护机制,在高温下GPU会被强制下电,大家是不需要担心所谓的“矿卡”会损坏的。
这也引出了这几期的话题——所谓的“挖矿”到底是在干什么呢?
先说答案:实际上,所谓的“挖矿”,就是利用GPU找一个方程的解:
SHA256 (String) = 0
其中,SHA256是一种摘要算法,又称为Hash算法。String是变量。由于摘要算法是不可逆的,想求出满足这个方程的解,只能通过穷举法。为了提升运算效率,一些人想到,利用GPU运算来解这个方程。
为什么GPU可以用于解这个方程呢?
让我们先回到开篇的小霸王学习机——
上图是游戏《沙罗曼蛇》的画面,玩家操纵的战机发射子弹,与试图置玩家于死地的敌人对抗。《沙罗曼蛇》是一款对玩家反应能力要求极高的游戏,玩家的战机和敌人的行动速度都非常快,也需要实时的响应。
在小霸王学习机中,为了实时处理这一类快速变换的画面,引入了另一颗处理器,作为CPU的协处理器,来处理精灵(Sprite)和背景(Background)的绘制,它被称为PPU。
小霸王学习机中,所有呈现的画面,都是由PPU绘制的,CPU只是给PPU绘制画面的指令。如《沙罗曼蛇》中,玩家在按下B键,让战机发射子弹时,CPU会向PPU发出一条指令,让PPU绘制一个精灵,其图形为子弹,从左向右移动。由于PPU的处理能力也非常低下,PPU有一些规格限制,也决定了小霸王学习机上的一些游戏画面。
如这个图:
图中一组敌人的个数为5,这是因为,小霸王学习机的PPU只能支持在同一个水平线上呈现8个精灵。5个敌人占用了5个名额,如果战机,2发子弹和5个敌人在同一条线上,就会占满8个名额。
这是一个典型的硬件限制约束游戏设定的例子。
流光一瞬,华表千年。
20世纪末,随着NVidia Geforce 256的推出,GPU也成为了一个新名词,但其实质依然是接受来自CPU的指令,在显存中绘制数字化的图形 (术语曰:bitmap).
《古墓丽影》是这个时期流行的游戏之一。游戏的女主角劳拉的人物设定是一名女考古学家,需要在古墓中保卫自己并取得胜利。
由于当时的硬件限制,劳拉的形象只能绘制成这样,勉强能看得出是人。
为什么劳拉会被绘制成这个样子呢?
原来,为了让计算机中数字化的模型,尽量逼近真实的人体,程序员们在对人物建模的时候,会把人物的形状用多个三角形来模拟,而皮肤、衣着等利用所谓的材质贴图来实现。因此,游戏中每一帧画面,实际上都是CPU向GPU发出绘制三角形指令,以及材质贴图指令实现的。
1999年的NVidia Geforce 256 GPU,虽然其性能已经能够碾压3dfx Voodoo3和S3 Savage2 等竞争产品,但其每秒钟只能绘制1500万三角形和4.8亿的像素贴图,因此,劳拉就有了上图中的样子。
天波易谢,光景西驰。
当时代的车轮转动到中国特色社会主义新时代,英伟达最新的RTX3080TI也登上了历史舞台。它具备10240个CUDA核心,三角形绘制能力和贴图能力比20年前的GPU高出了若干个数量级。
所以,我们可以看到宛如真人的游戏形象:
不要光顾着玩游戏了!敲黑板!
我们发现,无论是小霸王学习机,还是桌面PC和服务器,GPU的作用,都是作为CPU的协处理器,CPU给GPU发放带有重复性的并行工作(绘制游戏上的飞机、绘制劳拉、算SHA256等),GPU去完成这些指令并向CPU返回。
由于GPU内部有大量的并行计算单元,它被认为适合重复的并行运算,如AI训练等任务。
请看下期详解。