Skip to content

Commit

Permalink
Merge pull request #92 from SAKURA-CAT/fix/second-chapter
Browse files Browse the repository at this point in the history
fix error image
  • Loading branch information
ZhikangNiu authored May 28, 2024
2 parents d63cb66 + c087518 commit 9b7a78c
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 10 deletions.
10 changes: 5 additions & 5 deletions docs/第二章/2.4 AI硬件加速设备.html
Original file line number Diff line number Diff line change
Expand Up @@ -862,7 +862,7 @@ <h2>2.4.1 TPU<a class="headerlink" href="#tpu" title="永久链接至标题">#</
<section id="id1">
<h3>芯片架构设计<a class="headerlink" href="#id1" title="永久链接至标题">#</a></h3>
<p>TPU的设计架构如下图</p>
<img src="./figures/TPU.jpg" />
<img src="../../source/第二章/figures/TPU.jpg" />
<p>上图:In-datacenter performance analysis of a tensor processing unit,figure 1</p>
<p>由上图可见,整个TPU中最重要的计算单元是右上角黄色的矩阵乘单元“Matrix Multiply Unit”,它包含256x256个MAC部件,每一个能够执行有符号或者无符号的8位乘加操作。它的输入为权重数据队列FIFO和统一缓冲Unified Buffer,即图中指向它的两个蓝色部分。在计算结束后,16位结果被收集并传递到位于矩阵单元下方的4MiB 32位蓝色累加器Accumulators中,之后由黄色的激活单元在累加后执行非线性函数,并最终将数据返回给统一缓冲。</p>
<p>Matrix Multiply Unit矩阵处理器作为TPU的核心部分,它可以在单个时钟周期内处理数十万次矩阵(Matrix)运算。MMU有着与传统CPU、GPU截然不同的架构,称为脉动阵列(systolic array)。之所以叫“脉动”,是因为在这种结构中,数据一波一波地流过芯片,与心脏跳动供血的方式类似。而如下图所示,CPU和GPU在每次运算中都需要从多个寄存器(register)中进行存取,而TPU的脉动阵列将多个运算逻辑单元(ALU)串联在一起,复用从一个寄存器中读取的结果。每个ALU单元结构简单,一般只包含乘法器、加法器以及寄存器三部分,适合大量堆砌。</p>
Expand All @@ -880,13 +880,13 @@ <h4>脉动阵列设计<a class="headerlink" href="#id4" title="永久链接至
<p>TPU采用了与传统CPU和GPU截然不同的脉动阵列(systolic array)结构来加速AI运算,脉动阵列能够在一个时钟周期内处理数十万次矩阵运算,在每次运算过程中,TPU能够将多个运算逻辑单元(ALU)串联在一起,并复用从一个寄存器中取得的结果。这种设计,不仅能够将数据复用实现最大化,减少芯片在运算过程中的内存访问次数,提高AI计算效率,同时也降低了内存带宽压力,进而降低内存访问的能耗。</p>
<p>MMU的脉动阵列包含256 × 256 = 65,536个ALU,也就是说TPU每个周期可以处理65,536次8位整数的乘法和加法。</p>
<p>TPU以700兆赫兹的功率运行,也就是说,它每秒可以运行65,536 × 700,000,000 = 46 × 1012次乘法和加法运算,或每秒92万亿(92 × 1012)次矩阵单元中的运算。</p>
<img src="./figures/MMU.jpg" style="zoom:80%;" />
<img src="../../source/第二章/figures/MMU.jpg" style="zoom:80%;" />
<p>上图:In-datacenter performance analysis of a tensor processing unit,figure 4</p>
</section>
<section id="id5">
<h4>确定性功能和大规模片上内存<a class="headerlink" href="#id5" title="永久链接至标题">#</a></h4>
<p>如图是TPU的平面设计简图,黄色为MMU运算单元,蓝色是统一缓存和累加器等数据单元,绿色是I/O,红色是逻辑控制单元。</p>
<img src="./figures/FloorPlan.jpg" style="zoom: 67%;" />
<img src="../../source/第二章/figures/FloorPlan.jpg" style="zoom: 67%;" />
<p>上图:In-datacenter performance analysis of a tensor processing unit,figure 2</p>
<p>传统GPU由于片上内存较少,因此在运行过程中需要不断地去访问片外动态随机存取存储器(DRAM),从而在一定程度上浪费了不必要的能耗。与CPU和GPU相比,TPU的控制单元更小,更容易设计,面积只占了整个冲模的2%,给片上存储器和运算单元留下了更大的空间。如上图所示的TPU一代架构中,总共设计了占总芯片面积35%的内存,其中包括24MB的局部内存、4MB的累加器内存,以及用于与主控处理器对接的内存。这一比例大大超出了GPU等通用处理器,节约了大量片外数据访存能耗,使得TPU计算的能效比大大提高。从TPU二代开始采用HBM片上高带宽内存,虽然和最新一代GPU片上内存技术相同,但是TPU芯片的面积要远远小于GPU。硅片越小,成本越低,良品率也越高。</p>
<p>另外,由于TPU是一个单用途芯片,不需要考虑缓存、分支预测、多道处理等问题。这就意味着TPU的功能是单一且确定的。因此,我们可以使用TPU轻易的预测运行一个神经网络需要多长时间,这样我们就能让芯片以吞吐量接近峰值的状态运行,同时严格控制延迟。</p>
Expand All @@ -906,7 +906,7 @@ <h3>DianNao<a class="headerlink" href="#diannao" title="永久链接至标题">#
<p>基于神经网络的人工智能算法,是模拟人类大脑内部神经元的结构。上图中的neuron代表的就是单个神经元,synapse代表神经元的突触。这个模型的工作模式,就要结合高中生物课的知识了。</p>
<p>一个神经元,有许多突触,给别的神经元传递信息。同样,这个神经元,也会接收来自许多其他神经元的信息。这个神经元所有接受到的信息累加,会有一个强烈程度,在生物上是以化学成分的形式存在,当这些信息达到一定的强烈程度,就会使整个神经元处于兴奋状态(激活),否则就是不兴奋(不激活)。如果兴奋了,就给其他神经元传递信息,如果不兴奋,就不传递。这就是单独一个神经元的工作模式。那么有成千上万个这样的神经元组合起来,就是一个神经网络模型。</p>
<p>那么DianNao是如何模拟神经元进行工作的呢,我们可以看看它的内部结构图:</p>
<p>![](./figures/accelerator .jpg)</p>
<p><img alt="" src="../../source/第二章/figures/accelerator.jpg" /></p>
<p>上图:DianNao: a small-footprint high-throughput accelerator for ubiquitous machine-learning,figure 11</p>
<p>如图所示,上图中浅蓝色的部分就是用硬件逻辑模拟的神经网络架构,称为NFU(Neural Functional Units)。它可以被细分为三个部分,即途中的NFU-1,NFU-2,和NFU-3。</p>
<p>NFU-1是乘法单元,它采用16bit定点数乘法器,1位符号位,5位整数位,10位小数位。该部分总计有256个乘法器。这些乘法器的计算是同时的,也就是说,在一个周期内可以执行256次乘法。</p>
Expand All @@ -923,7 +923,7 @@ <h3>DaDianNao<a class="headerlink" href="#dadiannao" title="永久链接至标
<section id="shidiannao">
<h3>ShiDianNao<a class="headerlink" href="#shidiannao" title="永久链接至标题">#</a></h3>
<p>ShiDianNao是机器视觉专用加速器,集成了视频处理的部分,它也是DianNao系列中唯一一个考虑运算单元级数据重用的加速器,也是唯一使用二维运算阵列的加速器,其加速器的运算阵列结构如下所示:</p>
<img src="./figures/shidiannao.jpg" style="zoom:67%;" />
<img src="../../source/第二章/figures/shidiannao.jpg" style="zoom:67%;" />
<p>上图:ShiDianNao: Shifting vision processing closer to the sensor,figure 5</p>
<p>ShiDianNao的运算阵列为2D格点结构,对于每一个运算单元(节点)而言,运算所使用的参数统一来源于Kernel,而参与运算的数据则可能来自于:数据缓存NBin,下方的节点,右侧的节点。</p>
<p>下图为每个运算单元的结构:</p>
Expand Down
10 changes: 5 additions & 5 deletions source/第二章/2.4 AI硬件加速设备.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ TPU即Tensor Processing Unit,中文名为张量处理器。2006年,谷歌开

TPU的设计架构如下图

<img src="./figures/TPU.jpg" />
![](./figures/TPU.jpg)

上图:In-datacenter performance analysis of a tensor processing unit,figure 1

Expand All @@ -53,15 +53,15 @@ MMU的脉动阵列包含256 × 256 = 65,536个ALU,也就是说TPU每个周期

TPU以700兆赫兹的功率运行,也就是说,它每秒可以运行65,536 × 700,000,000 = 46 × 1012次乘法和加法运算,或每秒92万亿(92 × 1012)次矩阵单元中的运算。

<img src="./figures/MMU.jpg" style="zoom:80%;" />
![](./figures/MMU.jpg)

上图:In-datacenter performance analysis of a tensor processing unit,figure 4

#### 确定性功能和大规模片上内存

如图是TPU的平面设计简图,黄色为MMU运算单元,蓝色是统一缓存和累加器等数据单元,绿色是I/O,红色是逻辑控制单元。

<img src="./figures/FloorPlan.jpg" style="zoom: 67%;" />
![](./figures/FloorPlan.jpg)

上图:In-datacenter performance analysis of a tensor processing unit,figure 2

Expand Down Expand Up @@ -93,7 +93,7 @@ NPU即Neural-network Processing Unit,中文名为神经网络处理器,它

那么DianNao是如何模拟神经元进行工作的呢,我们可以看看它的内部结构图:

![](./figures/accelerator .jpg)
![](./figures/accelerator.jpg)

上图:DianNao: a small-footprint high-throughput accelerator for ubiquitous machine-learning,figure 11

Expand All @@ -119,7 +119,7 @@ NFU-3是非线性激活函数,该部分由分段线性近似实现非线性函

ShiDianNao是机器视觉专用加速器,集成了视频处理的部分,它也是DianNao系列中唯一一个考虑运算单元级数据重用的加速器,也是唯一使用二维运算阵列的加速器,其加速器的运算阵列结构如下所示:

<img src="./figures/shidiannao.jpg" style="zoom:67%;" />
![](./figures/shidiannao.jpg)

上图:ShiDianNao: Shifting vision processing closer to the sensor,figure 5

Expand Down
File renamed without changes

0 comments on commit 9b7a78c

Please sign in to comment.