00:00
爸爸,Hello喽,大家好,我是你们胖胖的中米,减肥真的没那么容易,每块肉都有他的脾气,今天呢,我们来到了AI芯片里面的m po详解,根据我们上一节的内容呢,讲了特斯拉doo里面的整体的概念之后呢,今天我们看一下兜兜里面的核心,也就是兜兜Co,现在呢,我们回顾一下在整个系列课程里面呢,我们已经处于AI专用处理器里面的第三个内容,兜走的架构,那我们在整个兜走的系列里面呢,之前讲的兜走的整体的架构,今天我们深入的来到了兜走扣,我们会分开四个内容给大家去汇报的,第一个呢就是兜走Co的整体的架构,然后我们看一下兜走Co的前端的处理,接着呢我们去看一下兜走Co的执行引擎,最后呢,我们看一下兜兜Co里面的SVM和它的内存到底是怎么去排布的,因为兜兜它属于一个纯算一体的架构。这里面的SM。
01:00
内存呢就很有意思了,在正式进入do走库之前呢,我想跟大家一起去回顾一下do走的整个整体的结构,首先呢,都是采用的是一个纯酸一体的架构,这个架构呢就决定了兜州Co里面的核应该长什么样子,它们之间的通讯应该长什么样子。下面呢,我们看一下整体的一个概念,今天我们的内容呢,就是在这里面,Do就Co里面的pencilm呢,有1.25MB,整体的算力其实并不多,但是呢,我们的都走的低呢,有354个兜周矿来去组成的,为什么不是360个呢?是因为它有容错率。接着呢,我们看一下兜走的T里面的训练芯片呢,主要是由五乘以五,也就是25个都九的第一组成整个T一个T呢,对应的是一块A100这么一块芯片,六个套呢就组成了一个主机,两个主机呢组成一个机柜,每十个机柜呢就形成一个。
02:00
Board这么一个组成的方式,在这里面呢,很有意思的一点就是兜兜阔可以把它完全当成一个小型或者微型的PC,每个兜兜阔呢都可以自己独立的去执行它的任务,不依赖于共享的cash,我们的存器,整个D呢,作为DO9的super,那里面有354个do Co嘛,是意味着特斯拉可以使用更多的线程来驱动更多的指令,通过do库来执行更多的计算任务。那下面呢,我们来到了第一个内容,就是do周阔的整体结构,下面我们看一下,左边呢是do周阔的一些主要的参数,右边的这个do的核心的架构图,我们可以看到数据格式是支持的非常的多的,而未环呢是64B,整体的MM呢,我觉得最重要的是这个MM的单元,也就矩阵层的单元有四路,八乘以八里面另外两个很重要的指标就是SM的size是1.25MB。
03:00
那S的wait呢,就是它的读写速率呢,是400GB每秒,写呢是200GB每秒,也只是我们读的更多,写的更少,是因为我们需要大量的数据去读取,然后写入,计算完之后写入单一个库少量的数据,那这里面呢,最重要就是我刚才讲到的SM size,还有ma Mo的就是我们的矩阵层里面的大小,另外的话,SMT有四路,这个呢也是比较重要的概念,后面呢,我们会详细的介绍这些参数的意义,下面我们看一下整个的结构和特点呢,实际上每个作的核心呢,就是这里面的SQ engine呢,实际上呢,每个作的核心呢,它是具有跟VE,也就是向量和标量计算单元的能力,而这里面跟VE呢,它自己又具备整体的曲子一码执行的部件,所以呢,整个督促的核心呢,是非常完善的,因要看到督促的整体的晶体管很少,或者部件很少呢,就觉得它的作用不大,接下来我们整体的去看看。
04:00
周括的一个整体的结构,首先呢,它有三部分或者四部分组成哦,第一部分呢就是form前端,接着呢就是真正的执行引擎,另外的话我们还有一个SM里面的memory,最后呢,还有一个OC的路由,OC的那三比CPU和GPU的控制部件呢,它都更少,就整个是非常的精简的,但是呢,这里面很核心的就是它有一个计算单元,类似于英伟达里面的矩阵计算单元,不过呢多组库确实非常非常的精简,这里面呢,可以看到它所有的部件还是非常的少的,里面呢就取消了内档,非常多的改善部件利用率的一些组件,同时呢也不支持虚拟的内存,所以这里面呢,用的SM里面存的是实际的物理的地址,这样做的意义呢,就是希望能够减少控制部件所占用的面积,把更多的面积留给我们这里面的ma Mo,还有alu,那可能ma Mo占的更多,把更多。
05:00
的芯片的面积留给我们的计算,另外一点呢,就是提供了一个比较大的SVM,所以呢,我们可以看到整个督作块的架构里面呢,Ma Mo就是我们的计算单元跟SM存储单元,决定了整个督作的计算的能效比,既然谈到存储了,也就是我们的memory sub system呢?呃,有一点非常值得注意的就是多种上面运行的代码呢,实际上不能够直接访问我们的系统内存的整个督促或里面的memory呢,只能访问自己的SM跟Co,跟英伟达的整体的架构呢,是完全不一样的,里面有非常多的共享的内存呢,Global memory呢,还有local memory呢,这里面都没有,只有一小部分的SM能够给我们的ma Mo进行计算和存储,而整个都数号的本地的SM呢,完全是由我们的编译器去进行管理,不能用作缓存,这个概念是非常的重要,了解完整体之后呢,接下来我们来到了第二个内容,Do括的前端处理我们的form end。
06:00
在整个方案的前端拈块,也就是我们右边的架构图里面黄色的这一小部分呢,一进来的第一个拈块呢,就是BTB,我们的分支目标缓冲去BTB最重要的工作呢,就是通过预测我们程序里面的分支的路径,还有缓存分支的使用的信息,来减少我们流水线处理器里面的分支的性能的损失。在BTP下面呢,就有一个内容或者一个小的模块,叫做PC,是计算机组成原理里面的程序计数器,对程序指令呢进行计数的,再往下呢就是I呢,这个就是L1的指令缓存,整个L1的指令缓存呢,直接跟do Co里面的SVM是直接相连的,去获取计算,接下来要进行计算的指令,接着呢就有废buffer,这里面呢就是取子器,而这里面呢,乘以四就是有四路,最多呢可以用了八条指令,再往下的dekcota呢,就是我们的译码,译码器呢。
07:00
取值缓冲器里面呢,获取到指定呢,并对它进行译码呢,根据每一条指定的要求呢,分配所需要的执行的单元,假设SC假veta的时候呢,它就会对它进行分发,分配主要的单元,这里面呢,上面的这些模块呢,就是我们的前端的模块,接下来就是现成的调度呢,线程调度呢,就是往下面的内容,我们的scale schedule了,还有SMT vect schedule了,这里面呢,都是作为一些调度的,分别指向我们的scalela跟Meta里面的具体的计算,那在整个前端模块里面呢,一旦BTB呢,生成下一条指令的时候呢,这种困难在每个时钟周期内呢,就会从我们的L开里面呢,去获取具体的指令给到我们的buffer,然后呢,Decota就会对我们的buffer呢进行译码,整体的工作原理呢,就是像刚才所讲到的,接下来呢,我们来到了第三个内容,就是do走的执行引擎,也就是里面最核心。
08:00
的计算单元,计算单元呢,就是我们下面绿色的这个拈,针对scale和VE呢,都有四路的SMT啊,下面呢,我们来打开一下整个执行引擎,也就是呃,红色这个模,还有紫色的这个模,具体的计算的方式,下面呢我们看一下执行引擎里面的最重要的计算的单元,也就是执行单元里面呢,有两路的a Lu,有两路的a ju,当然了还有512位的simd,另外的话,还有一个最重要最重要的就是里面都走最核心的MA8乘八四的这么一个矩阵的计算,现在呢,我们分开来看一下,A Lu跟ago呢,主要是负责除了矩阵计算以外的一些少量的逻辑的运算,那ago呢,主要是负责地址的生层单元,而alu啊,大家不用我讲都知道了,主要负责简单的加减储这些工作,另外的话我们看一下第二个内容或第二个简单。
09:00
的机型模块就是SIM负责例如激活呀,Ma啊这些简单的计算的,最后呢,也是最核心的ma,我们的矩阵计算单元主要负责呃,类似于现在大模型非常的全ma,包括以前啊比较火的一些卷积的核心的矩阵的计算,在执行单元里面的整体架构里面,很有意思的一点呢,就是都走的分开两个,第一个呢是的schedule,一个呢是VIVE的schedule,那分开两个呢,也就是两条执行的paline,一条呢是执行向量的计算,一条呢是执行矩阵的计算,一旦指令发起之后呢,我们的数据就会从S里面传送到我们具体的s scale里面或者vect的里面,最后呢,计算完之后呢,就会把我们的数据呢回传到我们的SVM上面,整体的计算逻辑就是像我们刚才所描述的那样。刚才讲到的数据的计算和。
10:00
存储呢,就构成了我们整个多作框里面最重要的内核,数据搬运会的最重要内核,多作框里面的功耗的一大部分。接下来呢,周敏就找到谷歌胚腾里面特斯拉发的几篇专利,那这几篇专利呢,全部都是围绕着刚才讲到的矩阵的计算单元,这个矩阵计算单元呢很有意思,就是不管是横和竖,都是一个八乘八的矩阵,而这里面的输入呢,有两个,一个是呢普通的data输入,一个呢是我们的weight的输入,就权重的输入,每个多数呢,就包括四路的八乘八的矩阵的计算,在计算完之后呢,就会有一个post process unit,也就是后处理的单元,专门去做一些累加啊或者激活的功能。而这里面呢,整个的计算流程呢,是由左边里面的control unit去做一个总体的控制的,那讲完这个之后呢,我们来到了第四个内容,也就是这个视频分享里面的最后一个内容了,SM跟内存。
11:00
人之间的一个关系,还有整个嘟嘟框里面的一个关系,今天呢,我们稍微拖一拖谈,然后把最后一个内容给它讲完了,那在第四部分呢,就是我们的S端跟我们的中间的路由嘛,说白了路由其实为的就是传输数据,而数据呢是存在SM里面的,在多框里面呢,每个节点也就每个多框里面呢,一共有1.25MB的SM,之所以说多框是一个纯酸一体的架构呢,是因为这里面把SBM呢跟我们的Mac ma里面的矩阵层是放在一起,最大限度的去减少我们数据的搬运,也就是memory的这个限制。有了这种架构的定义之后呢,我们的应用程序啊,主要是在本地的SVM当中去工作的,就是我们的计算任务都在CN里面去工作,如果我们需要来自于DD或者高带宽显存H里面的数据,那这个时候呢,必须要通过d ma进行一个操作和读入,然后通过路由把我们的数据呢放在S里面。最后呢,就通。
12:00
解析引擎,也就list passa engine来将我们不同的数据呢进行打包,然后丢给我们的deco进行解码,然后计算传输数据,一系列刚才讲过的前端的工作了,实际上呢,成酸一水这种架构呢,为的就是让我们的失盐更加的低,因此呢,SM的试计呢,并非缓存,而是我们的存跳过了一级缓存,然后节省了很多芯片的功耗的面积,我们传统电视计算机呃,组存原理里面呢,我们可能有HBN呢,有LL开始了,有L一开始有了,一系列的工作也在我们的GPU里面给大家去讲过的,那这里面呢,都没有喽。另外的话,为了减少我们的芯片的面积呢,Do兜里面也没有虚拟内存的支持,也没有TLB,各种列表,各种编利的机制,都把它这些都干掉,剩下的就是我们刚才讲到的前端后端还有S,另外还有一个OC路由这么几个内容,那接下来呢,我们谈到OC内容,我们看一下OC到底是个什么东。
13:00
西,首先呢,每个节点呢,也就每个嘟嘟call都可以连接到一个2D的网络,也就是导横导送,下一个内容呢,就又是我们另外一个了,那现在我们看一下整体的计算单元,也就是我们的MAT Mo或者ta scale了,里面的SM跟LC之间的数据呢,是怎么交互的,可以通过指令呢去控制C路由,直接把我们的数据呢搬运到或者搬出到我们的SVM存储器里面,在SN里面呢,有两个内容啊,刚才我们讲到了,讲了一个,一个呢就是我们的列表解析引擎Li passa engine,另外的一个呢,就是我们的搜集引擎data cat engine,那list pass engine呢,主要是指我们的指令进行发送嘛,给到的一个译码器,那另外呢,Get engine呢,主要是控制我们的数据的,把我们的数据呢进行打包,然后呢给到距离计算来源更近的just file寄存器,然后真正的进行计算,最后回传我们的数据。三要表写引擎呢。
14:00
有engine里面呢,更多的是对我们的数据呢进行封装,那我们可以看到这里面呢,Can list呢,就是把我们很多的一些数据呢,指定呢进行一个打包,更多是指令啊,使得我们的计算呢,在整个督数框之间呢,更加的高效,那可能在一个多数框里面呢,执行一个指令,在不同的督督数框里面呢,执行不同的指令,那不同的指令就带着不同的数据内容,下面呢,我们看一下整个do州的第一,Do作第呢是有354个do州Co,也就右边的这些小模块,我们刚才讲了很多的,而在整个多数第一里面呢,大部分都是do,这里面呢,没有DDR,没有P1,大部分都是裸芯片,都是大量的计算单元,而所有的IO,包括讲到的滴滴拉HBM呢,P31呢,都在外围的电路都在这上面,那刚才我们讲到了简单的这个五乘五呢,就是一个都走的第一在整个系统内存里面呢,都走的芯片呢,是不直接连接在内存的,而是装备到我们之前。在第。
15:00
这视频里面讲到的HBM,也就是上面的这个模块,而里面的存或者显存呢,就我们的HBM是在外围电路里面,刚才讲到所有东西呢,都是围绕着计算的和片内组存的,那单个多多呢,芯片是不能自给自足的,因为它没有滴滴拉,没有PC1呢啊,因此呢,刚才讲到的所有这些内容呢,都是分布在整个dial,就是training dial的一个,呃,外围,那我们可以看到外围有很多这种接口,9TB每秒的一个IO接口和P31的接口,诶我看了一下时间,时间差不多了,视频太长,可能看的就越来越少了,今天呢只能聚焦三个内容跟大家一起去交流的,那第一个呢,就是do code的整体的架构里面呢,就分为前端处理执行引擎,还有SM内存,最后还有一个ROC的路由,那简到前端的内容呢,我们就把前端的几个处理的流程打开,从b To B到我们的缓存到取码密码,怎么去解决的整体流程online给大家打。
16:00
开了最后呢,我们讲了多多号的自行引擎,主要是分开vect跟LA,最计算里面呢,最核心的就是特斯拉的发的那三篇专利,大家有机会呢,也可以去搜一下,我们在下集内容呢,再跟大家去展开M内存,还有一些在整个都走的核心系统里面的一些问题,之后就做一些简单的思考和回顾啦,那今天的内容呢,就到这里为止,谢谢各位,卷的不行了,卷的不行了,记得一键三连加关注哦,所有的内容都会开源在下面这条链接里面。拜了个拜。
我来说两句