Lead Reconfigurable Memory Computing to the Feature

4 GPU架构(上)—千芯科技AI芯片设计入门

TensorChip Homepage - TensorChip    原创技术文章    4 GPU架构(上)—千芯科技AI芯片设计入门

千芯科技(千芯半导体)AI芯片设计入门系列,适合AI芯片设计人员入门与芯片赛道投资人了解技术内涵,由千芯团队编写。欢迎关注千芯,为设计世界领先的AI芯片助力。

 

爱因斯坦说过:财富绝不能使人类进步。

同样,资本套路也不可能塑造伟大的半导体企业。——与做实事的半导体创业者们共勉

 

CPU和GPU架构对比

 

在架构上,GPU由数以千计的更小、更高效的核心(类似于CPU中的ALU)组成,这些核心专为同时处理多任务而设计。现在的CPU,一般是多核(Multi-Core)结构;而GPU一般是众核(Many-Core)结构。

 

GPU中并行计算改进了很多重要细节:

1)一个计算问题可以分解成可同时处理的离散指令;

2)每部分指令进一步细分为一系列内部指示;

3)每个部分的问题可以同时在不同的计算单元上执行,显著提高了算法的处理速度。

 

并行运算示意图

 

为充分利用GPU的计算能力,NVIDIA在2006年推出了CUDA(Computer Unifie Device Architecture,统一计算设备架构)这一编程架构。该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。

 

OpenCL全称Open Computing Language即开放计算语言, 为异构平台提供了一个编写程序,尤其是并行程序的开放的框架标准。OpenCL所支持的异构平台可由多核CPU、GPU或其他类型的处理器组成。

 

CUDA只能够在NVIDIA的GPU硬件上运行。但是,OpenCL的目标是面向任何一种并行处理器,OpenCL是第一种真正的开放自由版权编程标准,适用于异构系统上的通用计算。而异构平台可由CPU、GPU、DSP、FPGA或其他类型的处理器搭建。

 

NVIDIA A100 架构(Ampere架构)

 

深度学习推理的大部分计算工作都是基于数学运算, 这些运算可以大致分成四个部分: 卷积,激活,pooling(池化)和normalization(归一化)。它们的内存访问模式是非常可预测的,并且适合并行化。NVDLA(NVIDIA Deep Learning Accelerator)是NVIDIA发布的一个开源架构,以解决深度学习的计算需求。标准化深度学习硬件加速模块旨在促进机器学习的发展。

 

NVDLA 硬件模块提供了一个简单的、灵活的、推理加速解决方案。开源的版本里面包含的了工业级的 RTL 设计,基于TLM System C 写的仿真模型(用于软件开发,系统整合及验证),开源的软件包含了 firmware,模型 builder。

 

NVDLA 硬件利用标准接口与系统的其余部分进行数据交连接: 一个控制通道实现一个寄存器文件和中断接口,并使用一对标准的 AXI 总线接口来与内存进行交互。主内存接口是用来连接系统的宽内存系统,包括系统DRAM;这个内存接口与系统的 CPU 和外围 I/O 设备共享。第二个内存接口是可选的,它允许连接到更高带宽的内存(例如HDM),这些内存可能专门用于 NVDLA 或计算机视觉子系统。异构内存接口提供更高的数据传输性能与灵活性。

 

NVDLA 的实现一般分为两类:

Headless(small) — NVDLA 硬件的单元管理是在主系统处理器上进行的。

Headed(large) — 将高中断频率任务委托给一个与 NVDLA 子系统紧密耦合的微控制器。

 

两种NVDLA实现模型的比较

 

上图中的小系统模型显示了一个 headless NVDLA 实现的例子;而大系统模型显示了一个 headed 实现。小系统模型实现了一个对成本更敏感的构建模式。大系统模型的特点是增加了专用的控制协处理器(微控制器)和高带宽的 SRAM 来支持 NVDLA 子系统。大系统模型更倾向与高性能的物联网设备,这些设备可以同时运行许多任务。
 

 

 

--未完待续--

 

 

 

千芯科技 AI Chip Design Book 目录

 

1     概述

  1.1        主要AI应用

  Reference

2     机器学习

  2.1        线性模型

  2.2        模型评估与选择

  2.3        SVM

    2.3.1    简介

    2.3.2    线性分类器及其求解

    2.3.3    核函数

    2.3.4    松弛变量

  2.4        贝叶斯网络

    2.4.1    贝叶斯定理

    2.4.2    贝叶斯网络

  Reference

3     深度学习

  3.1        多层感知机

  3.2        卷积

    3.2.1    基本概念

    3.2.2    运算过程

  3.3        激活函数

    3.3.1    激活函数简介

    3.3.2    常用激活函数及其特点

    3.3.3    激活函数的选择

  3.4        AlexNet

    3.4.1    AlexNet网络特点

    3.4.2    网络整体结构与流程

  3.5        Faster-RCNN

    3.5.1    RCNN与Fast-RCNN简介

    3.5.2    Faster-RCNN简介

    3.5.3    Faster-RCNN算法特点

    3.5.4    Faster-RCNN性能对比

  3.6        SSD

    3.6.1    SSD网络结构与流程

    3.6.2    SSD算法特点

    3.6.3    SSD性能对比

  3.7        YoloV5

    3.7.1    简介

    3.7.2    网络结构

    3.7.3    性能评估

  3.8        Bert

    3.8.1    Attention

    3.8.2    Transformer

    3.8.3    Bert

  3.9        MobileNet

    3.9.1    MobileNet网络特点

    3.9.2    MobileNet网络结构

    3.9.3    MobileNet性能对比

  Reference

4     GPU架构

  4.1        基本架构

  4.2        NVDLA解读

    4.2.1    两种实现模型的比较

    4.2.2    小系统NVDLA模型

    4.2.3    大系统NVDLA模型

  Reference

5     ASIC架构

  5.1        基本架构

  5.2        卷积计算加速

    5.2.1    乘法器设计

    5.2.2    数据结构

  5.3        池化加速

  5.4        激活函数加速

  5.5        Softmax加速

  5.6        海思达文西架构

  5.7        Wave Computing架构

  Reference

6     可重构架构

  6.1        传统可重构

  6.2        软件定义的可重构

  6.3        DSP结构

  Reference

7     存算架构

  7.1        基于SRAM/DRAM的存算

  7.2        基于FLASH的存算

  7.3        基于新型NVM的存算

  Reference

8     可重构存算架构

 

 

 

 

 

 

2021-07-24 00:40
Pageviews:0