主板上来了一个新邻居,CPU慌了!

你们好,我是CPU一号车间的那个阿Q,很久不见,我想死大家了~程序员

不认识个人请去这里这里补补课:完了!CPU一味求快出事儿了!算法

主板上的新邻居

“阿Q,快别忙了,立刻去一趟会议室,领导有重要事情开会”,一大早,我们CPU厂里的总线主任就挨个到8个车间通知你们开会,神色有些凝重。编程

“什么事情,这么着急?”跨域

“据说是主板上新来了一家单位,来抢我们CPU工厂的饭碗了”,主任小声的说到。缓存

“还有这种事情?”,我二话没说赶忙起身出门了。网络

来到会议室,没想到你们都已经到齐了,就差我了。架构

 

见我到来,领导开始讲话:“诸位,想必你们可能都有所耳闻,就在昨天,在我们CPU工厂的不远处,主板上新来了一家叫GPU的单位,公开抢咱们饭碗,今天召集你们就是商讨应对之策”编程语言

“GPU,我知道,就是图形处理器,就是干图形计算的,怎么能抢咱们的活呢?领导你多虑了吧”,我回头一看,原来是六号车间的表明小六在发言。性能

 

“哦,看来你对他们很了解嘛?”,领导问小六。学习

小六有些很差意思的说到:“实不相瞒,在跳槽到这里来以前,我在另一家CPU工厂上班,那里的主板上就有个GPU。他们主要承接一些图形渲染相关的计算工做,不过他们都是执行一些固定的操做,计算电路都是固定的,根本都不具有可编程的能力,跟咱们CPU那是无法比的”

“小六,士别三日都当另眼相看,你有多久没见他们了?如今他们不只和咱们同样能够编程,听说团队规模扩张,如今已是通用计算架构了,名字都要改了,叫什么GPGPU,连计算速度都比咱们快了!”,领导说的掷地有声,会场一下安静了下来。

“阿Q、小六,大家两个想办法混进去他们工厂摸摸状况,汇报之后我们再继续讨论,你们意下如何?”,领导望向你们。

我还没反应过来,你们都纷纷说好,看来这份差事我是躲不掉了。

潜入GPU内部

当天夜里,我与小六偷偷溜进了GPU工厂,没想到虽然夜已深,但里面仍是灯火通明,一派繁忙的景象。

等到进入了他们工做的地方,我和个人小伙伴都惊呆了!好家伙,这规模也太大了,放眼望去,全是一个个的工做车间,一眼望不到头。

 

“Q哥,他们这也太猛了,我们CPU也就8核,才8个车间,他们这我目测不下1000个车间,难道他们有1000多个核,看得我眼睛都花了!”,小六满脸惊讶的说到。

“我看没那么简单,你仔细看他们的工做车间,比咱们的可简陋多了”

“还真是,那些橙色的地方应该就是缓存吧,比咱们可小多了。还有他们好像大部分都是计算电路,逻辑控制电路不多”

“大家不去干活,躲在这干吗?”,很差,咱们被巡逻的给发现了!但好像他并无认出咱们的身份,把咱们当成这里的员工了。

我俩尴尬的点头笑着说到:“休息休息,咱们这就回去”

“你俩快去1024号车间,那里还缺人手”

“好嘞好嘞,这就去,这就去”

我堂堂CPU一号车间的指令执行长官阿Q,竟然在这里对这个小小巡逻点头哈腰的,想一想都气!

GPU的秘密

找了很久,我俩终于来到1024号车间,这里有一个小哥正忙的不可开交。见到咱们到来,小哥高兴的说到:“大家可算是来了,我这都忙死了”

“今天都这么晚了,这是在忙着执行什么程序啊”,我试探性的问到。

“今天有点背,程序员下班前留了一个深度学习的神经网络训练任务给咱们,今儿晚上你们确定无法休息了,搞很差得通宵”,小哥一边忙着操做计算电路进行数据计算,一边对咱们说到。

小六给我使了个眼神,而后对小哥说到:“你空了给咱们介绍下工做吧,让咱们也干点活”

“对,对,让咱们也帮你分担点”,我跟着附和。

“大家先坐坐,这一轮训练立刻就要结束了,趁着空当给大家介绍介绍。”,小哥说完擦了擦额头的汗。

趁着小哥在忙,我俩四处转了转,“小六啊,他们这车间比起我们CPU确实显得寒酸了许多。咱们每一个车间可都是标配了一二级缓存的,少说也有几百KB,他们可没有这个待遇。并且他们的计算资源电路也简单不少,像咱们用于分支预测和乱序执行的逻辑控制电路这里都没有”

 

“Q哥高手啊,这里这么多电路你都能认得出来?”

“俺在CPU厂里混了那么多年,这都认不出来那不白干了吗?”

“不对啊,按照你说的,他们这里的电路应该不多才对,但是你看怎么这么多”,小六的话引发了个人注意。

 

再仔细一看,计算电路虽然没咱们那么复杂,但计算单元ALU却有不少份!要知道在我们CPU工厂,一个车间也只有一份。

正在纳闷之际,小哥忙完了手里的活,走了过来,“总算能够歇口气了”。

“大哥辛苦了,想问一下这里怎么这么多重复的计算电路啊?这不浪费吗?”,我赶忙上前问到。

小哥不觉得然,“这可不是浪费,在我们GPU工厂的车间里,每一个车间都配置了不少个计算单元,我能够操做它们同时进行批量的数据计算,提高速度”

“批量计算?还能同时?”,小六问到。

“是啊,像咱们GPU工厂承包的活基本都是这种类型,像3D图像渲染中每一个像素的计算,深度学习中张量和矩阵的计算,它们有一个特色,都是算法固定,只是数据不同而已。一样的计算逻辑,我喂给它们不一样的数据就能够并行计算了!这个叫SIMT(Single Instruction,Multiple Threads)技术”,小哥得意的说到。

“SIMT?这技术怎么感受那么眼熟呢?”,我问到。

小哥继续笑着说到:“那可不,这一招CPU他们早就用过了,咱们这是借鉴”

“哦,我想起来了,Q哥,他说的应该是SIMD(Single Instruction Multiple Data,单指令多数据流),一条指令中能够批量操做多个数据,提高性能”

小六一下点醒了我,“原来如此!咱们,哦不,是他们CPU只是批量操做数据,GPU这里是批量执行计算,真是妙啊!”

“Q哥,听起来不错啊,为何我们CPU不能这样搞呢?”,小六悄悄问我。

“你个笨蛋,我们CPU内部有八个车间,每一个车间同时执行一个线程不就是并行吗?只不过我们执行的多个线程都是功能各异,有些是IO密集,有些是计算密集,既有缓存和逻辑控制电路的的建设成本,还要作到通用,没有办法像他们这样搞不少个出来。”

接下来,小哥带咱们来到了操做平台,告诉咱们如何操做这一堆电路执行计算工做,我天然是轻车熟路了,这比在咱们那儿简单多了。

“那边是寄存器和保存执行上下文的地方,大家等会儿会用到。”,小哥指着一堆箱子说到。

“哎,老哥,这执行上下文怎么这么多,比计算单元ALU还多”,我问到。

小哥一拍脑壳说到:“嗨,瞧我这记性,忘记给大家说了。我们GPU虽然以计算见长,但仍是会遇到分支判断的场景,我们这又没有CPU那样的分支预测和乱序执行的能力,大家不知道内存那家伙可慢了,有时候不免会遇到停顿等待的状况,浪费计算资源。后来领导交代了,为了充分利用计算资源,不让ALU闲置着,遇到这种停顿的状况,就把计算资源ALU挪出来去执行别的计算代码。因此就须要多预留一些执行上下文来保存现场了。”

 

“卧槽,这不就是超线程技术嘛!又抄袭咱们CPU”,我几乎突口而出,说完看了一眼小六。

“怎么能叫抄袭呢,借鉴,是借鉴哈”,小哥龇着牙笑着。

小六忽然问了一句:“我们GPU这么厉害,之后是否是都没他们CPU啥事儿啦?”

小哥摇了摇头:“这话说的有些吹牛皮了,咱们连中断处理和虚拟内存都没有,还须要借助CPU他们的帮忙才能工做呢,是不可能取代他们的。他们CPU太忙了,又要忙着计算,又要忙着执行IO,处理中断,还有各类复杂逻辑的判断处理,咱们就简单了,没有那么多顾虑,就是用人海战术,作纯粹的计算工做,人多力量大,又能并行,因此在数学计算方面咱们要快得多。不过整体来讲咱们和CPU是合做关系,不是竞争关系!”

听到小哥这么一说,我俩悬着的心总算放了下来,这下回去可算是给领导有个交代了。

我正想的出神,小六从背后悄悄拍了拍我,使了个眼神。

顺着他示意的地方望去,只见刚才那个巡逻正带着几个保安朝咱们这边走了过来。

来不及向小哥告别,我俩赶忙逃之夭夭···

 

 

往期TOP5文章

那天,我被拉入一个Redis群聊···

CPU明明8个核,网卡为啥拼命折腾一号核?

由于一个跨域请求,我差点丢了饭碗

完了!CPU一味求快出事儿了!

哈希表哪家强?几大编程语言吵起来了!