【zomi笔记】AI芯片基础

实质上ALU模块(逻辑运算单元)是用来完成数据计算,其他各个模块的存在都是为了保证指令能够一条接一条的有序执行。这种通用性结构对于传统的编程计算模式非常适合,同时可以通过提升CPU主频(提升单位时间内执行指令的条数)来提升计算速度。 

通用处理器 CPU

冯诺依曼架构

由运算器、控制器、存储器、输入和输出设备 5 部分组成:

  • 运算器:也叫算术逻辑单元(ALU),负责算术运算和逻辑运算。
  • 寄存器:分为指令寄存器和数据寄存器,负责暂存指令、ALU所需操作数、ALU算出结果等。
  • 控制器:负责调度工作,包括对要执行的指令进行译码、从内存中调取数据给寄存器、向运算器和寄存器发出具体操作指令等。

xxx

CPU主要擅长是逻辑控制,而非计算。

并行处理架构

  • 单指令流单数流(SISD)系统。
    • 每个指令部件每次仅译码一条指令,而且在执行时仅为操作部件提供一份数据
    • 串行计算,硬件不支持并行计算;在时钟周期内,CPU只能处理一个数据流。
  • 单指令流多数据流(SIMD)系统。
    • 一个控制器控制多个处理器,同时对一组数据中每一个分别执行相同操作
    • SIMD主要执行向量、矩阵等数组运算,处理单元数目固定,适用于科学计算
    • 特点是处理单元数量很多, 但处理单元速度受计算机通讯带宽传递速率的限制
  • 多指令流单数据流(MISD)系统。
    • 作为理论模型出现,没有投入到实际应用之中
  • 多指令流多数据流(MIMD)系统。
    • 在多个数据集上执行多个指令的多处理器机器
    • 共享内存 MIMD 和分布式内存 MIMD

SIMT(单指令多线程)

  • 单指令多线程,有效地管理和执行多个单线程,允许一条指令的多数据分开寻址
  • 无需开发者把数据凑成合适的矢量长度,并且SIMT允许每个线程有不同的分支
  • 条件跳转会根据输入数据不同在不同的线程中有不同表现

CISC 架构和 RISC 架构

CISC架构:复杂指令集架构,指令数量 > 200,如 X86

除常用指令还包含许多不常用特殊指令。随着越来越多的特殊指令被添加到 CISC 架构中,常用程序运算指令仅占指令集 20%,80% 指令则很少用到,而这些很少用到的指令让 CPU 的设计变得极其复杂,大大增加了硬件设计的时间成本和面积开销。

RISC架构:简单指令集架构,指令数量 < 100,如 ARM

只包含处理器常用指令,对于不常用操作,执行多条常用指令的方式来达到同样的效果。因而在 RISC 架构诞生后,移动端设备设计的 CPU 都倾向于选择使用 RISC 架构。

详细区别 CISC RISC
指令系统 复杂,庞大 简单,精简
指令数据 >200 <100
指令长度 不固定 定长
可访存指令 不加限制 只有Load/Store指令
指令执行时间 相差较大 大部分在一个周期内完成
指令使用频率 相差较大 都比较常用
通用寄存器数 较少
目标代码 难以用优化编译生成高效的目标代码程序 采用优化的编译程序,生成代码较为高效
控制方式 微程序控制 组合逻辑控制
指令流水 可以通过一定方式实现 必须实现

附录

PPT

https://github.com/chenzomi12/DeepLearningSystem

第一篇章

合集·【AI框架】基础概念:链接
合集·【AI框架】分布式并行策略:链接
合集·【AI编译器】传统编译器:链接
合集·【推理系统】整体概述:链接

第二篇章

合集·【AI芯片】AI计算体系:链接
合集·【AI芯片】芯片基础:链接


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nz_nuaa@163.com
github