人类的意识已经达到无限了,关键是承认物理的有限性。
费林(Michael J.Flynn)于1972年提出了计算平台的费林分类法(Flynn’s Taxonomy),其主要根 据指令流和数据流将计算平台分为四类,如图1-7所示。图中的PU是Processing Unit的缩写。
(1)单指令单数据(SISD)机器。SISD机器是一种传统的串行计算机,它硬件不支持任何形式的并行计算,所有的指令都是串行执行,并且,在某个时钟周期内,CPU只能处理一个数据流。早期的计算机都是SISD机器,如早期的巨型机和许多8位的家用机等。
下面几种有点类似定制电路的思路,就是针对特定的领域/应用情况设计的电路,也是从一向多发展,符合多原子的自然物理特征。
(2)单指令多数据(SIMD)机器。SIMD是指采用一个指令流处理多个数据流,它在数字信号处理、图像处理、多媒体信息处理等领域非常有效。Intel处理器实现的MMXTM、SSE、SSE2以及SSE3扩展指令集,都能在单个时钟周期内处理多个数据单元。也就是说,我们现在用的CPU都是SIMD机器。按道理就是新增了电路啊?
(3)多指令单数据(MISD)机器。MISD是指采用多个指令流来处理单个数据流。由于在实际情况中采用多指令流来处理多数据流才是更有效的方法,因此,MISD只是作为理论模型出现,实际应用很少。一般认为,脉动阵列是MISD的实例,例如谷歌的TPU系列深度学习加速器。我没懂啊,为什么TPU用MISD,深度学习加速不应该用SIMD吗,比如向量/矩阵运算?
TPU与MISD的误解澄清
脉动阵列工作原理:
数据流 → PE1(乘操作) → PE2(加操作) → PE3(激活函数) → 结果输出
每个处理单元(PE)执行不同指令操作,但处理的是同一批数据的不同阶段
这符合MISD定义中的"多指令流处理单个数据流"特征
深度学习中的特殊需求:
- 矩阵乘法需要级联操作(乘→加→非线性变换)
- 权重固定时的数据流水线处理
- 与SIMD的纯数据并行有本质区别 什么是脉动阵列? (4)多指令多数据(MIMD)机器。MIMD机器可以同时执行多个指令流,这些指令流分别对不同的数据流进行操作。最新的多核计算平台MIMD机器的范畴,例如,Intel和AMD的双核处理器等都是MIMD机器。它是最为通用的体系结构,各个处理处理器既可以执行同一程序,也可以执行不同的程序。虽然MIMD机器的通用性最高,但是设计复杂,所以MIMD机器的性能较低。我晕了,英伟达的芯片不就是MIMD吗,为什么叫SIMT? Flynn分类法的现代演进
graph LR
A[传统Flynn分类] --> B[SIMD扩展]
B --> C[多核MIMD]
C --> D[异构计算]
D --> E[SIMT架构]
E --> F[域特定架构DSA]
现代芯片的混合特征
- NVIDIA GPU:SIMT + SIMD(Tensor Core)
- Google TPU:MISD + 脉动阵列 + SIMD
- Intel CPU:SISD(标量核) + SIMD(AVX) + MIMD(多核) 关键结论:
- TPU的MISD特性体现在处理流水线的阶段化指令差异
- SIMT是MIMD的优化变种,通过约束条件(同指令流)降低调度开销,MI调度开销大
- Flynn分类法需结合现代架构扩展理解,纯理论分类已不能完全描述复杂芯片 建议通过具体硬件架构分析理解(附对比表): | 架构 | 指令流特征 | 数据流特征 | 典型实现 | |-----------|-------------------|-------------------|--------------| | CPU核心 | 动态多指令流 | 单数据流 | 乱序执行 | | GPU SM | 静态单指令流 | 动态多数据流 | Warp调度器 | | TPU阵列 | 固定多指令流 | 流水线数据流 | 脉动控制器 | | FPGA | 可重构指令流 | 任意数据流 | 逻辑单元阵列 |
计算机并行体系结构最基本的形式是单核内指令级并行,即处理器在同一时刻可以执行多条指令。流水线技术是实现指令级并行的使能技术,采用流水线技术设计的指令级并行微处理器内核已经成为设计典范。在这个基础上可以实现多线程和多核并行,即一个芯片上集成多个处理单元或处理核心,以同时完成多个任务。 再上一个层次的并行就是计算机并行,即多个芯片通过专用的网络连接在一起实现更大规模的并行。 更高层次的并行是仓储级计算机,即借助互联网几数据将数以万计的处理器和计算节点连接在一起,每个节点是一个独立的计算机服务器。 仓储级计算机具备前面描述的多种层面的并行。指令级和数据级并行适合在内核完成,因为它所需的寄存器传输级(RTL)通信和协作在核内可以以极低的延迟完成。现代处理器中每个核心都会综合运用流水化、超标量、超长指令、分支预测、乱序执行等技术充分挖掘指令级并行的潜能。相对来说,MIMD的并行层次更高,会更多地利用多个处理单元、多个处理核心、多个处理器或更多节点来实现