From 40b16afe124cbfe9528aa5796e4c2f3f170dfa76 Mon Sep 17 00:00:00 2001 From: KAAANG <79990647+SAKURA-CAT@users.noreply.github.com> Date: Tue, 28 May 2024 18:34:10 +0800 Subject: [PATCH 1/3] update TPU source --- ...73\266\345\212\240\351\200\237\350\256\276\345\244\207.html" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/docs/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.html" "b/docs/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.html" index b8522bf76..75605d6d3 100644 --- "a/docs/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.html" +++ "b/docs/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.html" @@ -862,7 +862,7 @@
TPU的设计架构如下图
-上图:In-datacenter performance analysis of a tensor processing unit,figure 1
由上图可见,整个TPU中最重要的计算单元是右上角黄色的矩阵乘单元“Matrix Multiply Unit”,它包含256x256个MAC部件,每一个能够执行有符号或者无符号的8位乘加操作。它的输入为权重数据队列FIFO和统一缓冲Unified Buffer,即图中指向它的两个蓝色部分。在计算结束后,16位结果被收集并传递到位于矩阵单元下方的4MiB 32位蓝色累加器Accumulators中,之后由黄色的激活单元在累加后执行非线性函数,并最终将数据返回给统一缓冲。
Matrix Multiply Unit矩阵处理器作为TPU的核心部分,它可以在单个时钟周期内处理数十万次矩阵(Matrix)运算。MMU有着与传统CPU、GPU截然不同的架构,称为脉动阵列(systolic array)。之所以叫“脉动”,是因为在这种结构中,数据一波一波地流过芯片,与心脏跳动供血的方式类似。而如下图所示,CPU和GPU在每次运算中都需要从多个寄存器(register)中进行存取,而TPU的脉动阵列将多个运算逻辑单元(ALU)串联在一起,复用从一个寄存器中读取的结果。每个ALU单元结构简单,一般只包含乘法器、加法器以及寄存器三部分,适合大量堆砌。
From 1a7e68e3044abf4df51aa80952468162658a7528 Mon Sep 17 00:00:00 2001 From: KAAANG <79990647+SAKURA-CAT@users.noreply.github.com> Date: Tue, 28 May 2024 19:57:41 +0800 Subject: [PATCH 2/3] fix image error --- ...\345\212\240\351\200\237\350\256\276\345\244\207.html" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git "a/docs/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.html" "b/docs/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.html" index 75605d6d3..1605888e9 100644 --- "a/docs/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.html" +++ "b/docs/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.html" @@ -880,13 +880,13 @@上图:In-datacenter performance analysis of a tensor processing unit,figure 4
如图是TPU的平面设计简图,黄色为MMU运算单元,蓝色是统一缓存和累加器等数据单元,绿色是I/O,红色是逻辑控制单元。
-上图:In-datacenter performance analysis of a tensor processing unit,figure 2
传统GPU由于片上内存较少,因此在运行过程中需要不断地去访问片外动态随机存取存储器(DRAM),从而在一定程度上浪费了不必要的能耗。与CPU和GPU相比,TPU的控制单元更小,更容易设计,面积只占了整个冲模的2%,给片上存储器和运算单元留下了更大的空间。如上图所示的TPU一代架构中,总共设计了占总芯片面积35%的内存,其中包括24MB的局部内存、4MB的累加器内存,以及用于与主控处理器对接的内存。这一比例大大超出了GPU等通用处理器,节约了大量片外数据访存能耗,使得TPU计算的能效比大大提高。从TPU二代开始采用HBM片上高带宽内存,虽然和最新一代GPU片上内存技术相同,但是TPU芯片的面积要远远小于GPU。硅片越小,成本越低,良品率也越高。
另外,由于TPU是一个单用途芯片,不需要考虑缓存、分支预测、多道处理等问题。这就意味着TPU的功能是单一且确定的。因此,我们可以使用TPU轻易的预测运行一个神经网络需要多长时间,这样我们就能让芯片以吞吐量接近峰值的状态运行,同时严格控制延迟。
@@ -906,7 +906,7 @@基于神经网络的人工智能算法,是模拟人类大脑内部神经元的结构。上图中的neuron代表的就是单个神经元,synapse代表神经元的突触。这个模型的工作模式,就要结合高中生物课的知识了。
一个神经元,有许多突触,给别的神经元传递信息。同样,这个神经元,也会接收来自许多其他神经元的信息。这个神经元所有接受到的信息累加,会有一个强烈程度,在生物上是以化学成分的形式存在,当这些信息达到一定的强烈程度,就会使整个神经元处于兴奋状态(激活),否则就是不兴奋(不激活)。如果兴奋了,就给其他神经元传递信息,如果不兴奋,就不传递。这就是单独一个神经元的工作模式。那么有成千上万个这样的神经元组合起来,就是一个神经网络模型。
那么DianNao是如何模拟神经元进行工作的呢,我们可以看看它的内部结构图:
-
+上图:DianNao: a small-footprint high-throughput accelerator for ubiquitous machine-learning,figure 11
如图所示,上图中浅蓝色的部分就是用硬件逻辑模拟的神经网络架构,称为NFU(Neural Functional Units)。它可以被细分为三个部分,即途中的NFU-1,NFU-2,和NFU-3。
NFU-1是乘法单元,它采用16bit定点数乘法器,1位符号位,5位整数位,10位小数位。该部分总计有256个乘法器。这些乘法器的计算是同时的,也就是说,在一个周期内可以执行256次乘法。
@@ -923,7 +923,7 @@ShiDianNao是机器视觉专用加速器,集成了视频处理的部分,它也是DianNao系列中唯一一个考虑运算单元级数据重用的加速器,也是唯一使用二维运算阵列的加速器,其加速器的运算阵列结构如下所示:
-上图:ShiDianNao: Shifting vision processing closer to the sensor,figure 5
ShiDianNao的运算阵列为2D格点结构,对于每一个运算单元(节点)而言,运算所使用的参数统一来源于Kernel,而参与运算的数据则可能来自于:数据缓存NBin,下方的节点,右侧的节点。
下图为每个运算单元的结构:
From c087518270a757241e6afeb79abbe92b229a1a46 Mon Sep 17 00:00:00 2001 From: KAAANG <79990647+SAKURA-CAT@users.noreply.github.com> Date: Tue, 28 May 2024 20:43:33 +0800 Subject: [PATCH 3/3] fix source --- ...\212\240\351\200\237\350\256\276\345\244\207.md" | 10 +++++----- .../figures/accelerator.jpg" | Bin 2 files changed, 5 insertions(+), 5 deletions(-) rename "source/\347\254\254\344\272\214\347\253\240/figures/accelerator .jpg" => "source/\347\254\254\344\272\214\347\253\240/figures/accelerator.jpg" (100%) diff --git "a/source/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.md" "b/source/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.md" index 7a1b64c9c..d859df265 100644 --- "a/source/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.md" +++ "b/source/\347\254\254\344\272\214\347\253\240/2.4 AI\347\241\254\344\273\266\345\212\240\351\200\237\350\256\276\345\244\207.md" @@ -27,7 +27,7 @@ TPU即Tensor Processing Unit,中文名为张量处理器。2006年,谷歌开 TPU的设计架构如下图 -