基金定投助手:为什么你的基金定投总在追涨杀跌?价值平均法定投引擎 + 综合估值模型+动态再平衡仓位管理,一个单文件 HTML 的免费定投工具-CSDN博客 https://download.csdn.net/download/weitingfu/93339607?spm=1011.2124.3001.6210
本文为《AI 硬件体系深度调研》系列第 21 篇。上一篇讲终端异构调度,让 CPU、GPU、NPU 各司其职。这一篇往底层走一层:GPU 和 TPU/NPU 凭什么比 CPU 能算?答案藏在两套并行计算架构里——SIMT 与脉动阵列。
黄金 100 字
你是否困惑:同样是芯片,GPU 和 TPU 凭什么比 CPU 能算这么多?多数对比只说"GPU适合并行",却讲不清两类并行架构的根本分歧。本文把 SIMT 与脉动阵列这两条路摆在一起,说清它们各自的脾气。
读完后你会明白:“能算"从来不是单核多强,而是"怎么把千军万马组织起来”。
一、为什么 AI 要靠并行
1.1 算力的瓶颈,从来不是单核
CPU 单核再强,也架不住 AI 模型的算力需求。一个现代大模型的推理,动不动就是几千亿次乘加运算,如果全靠单核串行算,等到天荒地老。
AI 算力的本质,来自并行架构的定向优化。把一个大计算任务,拆成成千上万个可以同时进行的小任务,让它们在同一时刻一起算,算力自然暴涨。
💡 单核是"一个学霸刷题",并行是"一千个学生同时刷"。学霸再快,也刷不过一千个人一起上。
1.2 神经网络:天然为并行而生
为什么 AI 特别适合并行?因为神经网络的计算结构,天生就是并行的。矩阵乘法里,每一个输出元素,都可以独立地由对应的输入和权重算出来,彼此之间没有依赖。
这意味着:计算之间几乎没有先后顺序的约束,可以大规模同时进行。这是 AI 与串行任务(如指针跳转、分支密集的逻辑)最大的不同。
💡 神经网络是"流水线分装"——每个包裹独立打包,互不影响,天然适合一百个人并排干。
1.3 两类主流的并行范式
面对"如何并行"这个问题,业界走出了两条截然不同的路:
- SIMT(单指令多线程):GPU 的路子,用成千上万颗简单核心,同一条指令同时处理不同数据。
- 脉动阵列(Systolic Array):TPU/NPU 的路子,让数据在计算单元之间像血液一样流动,减少对内存的反复读写。
这两条路,一条强调"人多力量大",一条强调"流水不争先"。后面四章,就沿着这两条路讲透它们的脾气。
💡 两条路就像两种军队:一种是"人海战术",一种是"精密的流水线"。都能打胜仗,但打法完全不同。
1.4 串行与并行:一道"分汤"的算术题
串行和并行的区别,可以用一道简单的算术题说清。假设要算 100 个互不相关的加法,串行是一个一个算,算 100 次;并行是 100 个同时算,理论上只要 1 次的时间。
当任务可以被拆成大量互不依赖的小任务时,并行就是降维打击。AI 计算恰恰满足这个条件——矩阵乘里的海量乘加,彼此独立,可以大规模并行。这正是 AI 硬件"堆核心、上阵列"能成立的前提。
💡 串行是"一个人搬 100 块砖",并行是"100 个人各搬 1 块砖"。砖都一样重,但后者瞬间搬完。
1.5 并行不是万能药:它有自己的天花板
并行虽猛,但也有天花板。不是所有计算都能无限并行——如果任务之间有依赖(后一步必须等前一步的结果),就并行不起来,只能串行等。
另外,并行度越高,"组织协调"的开销也越大。把人从 1 个加到 100 个,搬砖是快了,但分工、喊号、传料这些管理成本也上来了。当协调开销超过并行收益时,再堆人就是负收益。
💡 并行是"人多力量大",但"人多嘴也杂"。组织不好,人多反而添乱。这正是 SIMT 和脉动阵列要各自解决的问题。
二、SIMT:GPU 的万核哲学
2.1 SIMT 是什么:单指令、多线程
SIMT 是 Single Instruction, Multiple Threads 的缩写,即单指令多线程。它的核心思想是:一条指令,同时驱动成千上万个线程,每个线程处理不同的数据。
GPU 内部有成千上万颗简单的计算核心,它们共享同一个指令流,但各自拿着不同的数据在算。一个指令发下去,一万个核心同时开工,这就是 GPU 算力密度比 CPU 高出一个数量级的根本原因。
💡 SIMT 是"广播体操"——领操员喊一个口令(单指令),全场一万个人(多线程)同时做,但每个人站的位置不同(不同数据)。
2.2 为什么 GPU 的核心要"简单"
CPU 核心设计得很"重":复杂的流水线、分支预测、乱序执行,为的是把单线程跑得飞快。但代价是单个核心又大又贵又费电。
GPU 反其道而行:核心设计得极简,砍掉那些为单线程提速的复杂逻辑,用数量换性能。一个核心不够,就来一万个。简单核心堆积起来,总的算力密度反而远超复杂核心。
💡 CPU 核心是"豪华办公室",GPU 核心是"开放式工位"。工位虽简陋,但能塞下几千人同时干活,整体产出碾压。
2.3 线程的组织:从线程到 Warp
GPU 的线程不是一盘散沙,而是按层次组织的:线程(Thread)组成线程束(Warp,通常是 32 个线程一组),线程束再组成线程块(Block),线程块再组成网格(Grid)。
Warp 是 GPU 调度和执行的基本单位——一个 Warp 里的 32 个线程,执行同一条指令,只是数据不同。这种"同指令、多数据"的组织方式,让硬件能用一个控制单元,驱动大量计算单元,极大节省了控制开销。
💡 线程组织是"军队编制"——单兵(线程)组成班(Warp),班组成排(Block),排组成连(Grid)。统一指挥,才能万人齐动。
2.4 SIMT 的强项与软肋
SIMT 的强项很明显:灵活性极高。只要是能并行的计算,GPU 都能通过编程适配,无论卷积、矩阵乘还是各种自定义算子,都能跑。
但 SIMT 也有软肋:控制开销大。为了管理成千上万的线程、处理分支分歧、调度 Warp,硬件要花不少力气在"组织管理"上,这些开销并不能直接产生算力。万核哲学的背后,是高昂的"管理成本"。
💡 SIMT 是"万能团队"——什么活都能接,但人太多,光管理协调就耗掉不少精力。
2.5 分支分歧:SIMT 的一个经典痛点
SIMT 有个经典痛点叫分支分歧(Branch Divergence)。因为一个 Warp 里 32 个线程执行同一条指令,如果它们走到 if-else 分支,一部分线程走 if,另一部分走 else,硬件就只能两条分支都执行,再分别屏蔽不相关的线程。
这意味着分支会白白浪费算力——本来 32 个线程一起跑,结果一半线程"打酱油"。这也是为什么 AI 计算里"规整的矩阵乘"效率最高,而"分支密集的逻辑"在 GPU 上反而不划算。
💡 分支分歧是"岔路口"——一个班 32 人,到了岔路一半往左一半往右,班长只能先陪左边走完再陪右边,效率减半。
2.6 从图形到 AI:SIMT 的一次华丽转身
SIMT 这套万核哲学,最早其实是为图形渲染发明的。显卡要同时给屏幕上成千上万个像素上色,每个像素的着色计算彼此独立——这和"同指令、多数据"简直是天作之合。
后来人们发现,AI 的神经网络计算,和图形渲染有着惊人的相似:都是海量独立的小计算。于是 GPU 顺理成章地被搬来跑 AI,从"游戏显卡"摇身一变成为"AI 算力主力"。SIMT 的灵活性,让这次转身几乎零成本。
💡 SIMT 的转身是"跨界演员"——本是演图形的,发现 AI 这出戏也合适,直接上台就成了主角。灵活性,就是它最大的本钱。
三、脉动阵列:TPU/NPU 的流动哲学
3.1 脉动阵列是什么:数据流动,而非反复读写
脉动阵列(Systolic Array)是另一条路。它的核心思想是:数据在计算单元之间流动,而不是反复读写内存。
在脉动阵列里,计算单元排成矩阵,数据像脉搏跳动一样,从一端进入,在单元之间一级一级地传递,边流动边计算。权重预加载到计算单元里,输入数据从一侧进入,沿着阵列节奏性地流动,像心脏泵血一样,源源不断。
💡 脉动阵列是"流水线工厂"——原料(输入)从一头进,经过每道工序(计算单元)时被加工,成品从另一头出,中间不需要把半成品搬回仓库(内存)。
3.2 为什么流动能省传输开销
传统架构里,每算一步都要把数据从内存读出来、算完再写回内存。内存读写是巨大的瓶颈,传输开销居高不下。
脉动阵列的精髓在于:数据在计算单元之间直接传递,绕过了反复的内存读写。权重预加载后常驻计算单元,输入数据流动着完成多次计算,中间结果就地传递,不再频繁进出内存。传输开销因此下降一个数量级以上。
💡 流动是"流水线不停"——半成品不回流仓库,而是直接送到下一道工序。少了来回搬运,效率自然飙升。
3.3 脉动阵列的节奏:像泵血一样
脉动阵列的名字来自"systolic"(心脏收缩)。它强调的是一种节奏感:数据不是乱窜,而是按照固定的节奏,一步步地在阵列里推进。
这种节奏让硬件的行为高度可预测、可流水线化。每个计算单元在同一时刻做同一类操作,数据按拍子流动,整个阵列像一台精密的心脏,有节奏地把数据泵过每一级计算。
💡 脉动阵列的节奏是"心跳"——每一次收缩,都推着血液(数据)往前流一步。稳定、规律、高效。
3.4 脉动阵列的强项与软肋
脉动阵列的强项是效率极高:数据流动代替内存读写,传输开销大降,特别适合矩阵乘法这类规整、密集的运算。
但它的软肋是不灵活:阵列结构是为特定计算模式(如矩阵乘)定制的,遇到不规整、分支多的计算,就难以发挥。流动哲学在"规整的海洋"里如鱼得水,在"崎岖的山路"上却举步维艰。
💡 脉动阵列是"专业流水线"——做标准件飞快,一旦来的是非标件,就卡壳了。
3.5 "权重预加载、输入侧入"到底怎么运作
脉动阵列里两个关键动作,值得拆开讲清楚:
- 权重预加载:把权重数据提前"钉"在计算单元里,常驻不动。这样每次算的时候,权重不用再从内存里反复读。
- 输入侧入:输入数据从阵列的一侧进入,像水流一样,沿着行列方向依次流过各个单元,边流边和预加载的权重相乘累加。
“权重不动、输入流动”,是脉动阵列省传输的核心机制。权重复用被拉满,输入只需扫一遍,中间结果在单元间就地传递,内存读写被压到最低。
💡 权重预加载是"工具常驻工位"——常用工具不用每次去仓库取;输入侧入是"原料流水线"——原料从一头进,一路加工,不必来回搬运。
四、两条路的适用边界
4.1 算力密度 vs 灵活性:一条光谱的两端
SIMT 和脉动阵列,本质上是**"算力密度"与"灵活性"的取舍**,就像一条光谱的两端:
- SIMT 偏灵活:什么都能跑,但每单位算力的控制开销高,算力密度相对低。
- 脉动阵列偏高效:规整计算跑得飞快,算力密度高,但灵活性差。
没有谁绝对更好,只有谁更适合当前的计算模式。选架构,就是在光谱上选一个点。
💡 光谱两端是"瑞士军刀"和"专业菜刀"——瑞士军刀啥都能干但不精,专业菜刀切菜飞快但干不了别的。
4.2 何时选 SIMT,何时选脉动阵列
何时选 SIMT:计算模式多变、需要频繁适配新模型、新算子,追求通用性和编程生态。GPU 就是典型,适合训练和通用推理。
何时选脉动阵列:计算模式固定、规整(尤其矩阵乘),追求极致能效比和算力密度。TPU、NPU 就是典型,适合大规模、成熟的推理和特定训练负载。
💡 选架构是"看菜下饭"——菜式多变就请万能厨师(SIMT),菜式固定就请专精大厨(脉动阵列)。
4.3 现实中往往"两者都要"
真实芯片很少"二选一",而是混合使用。很多 AI 芯片内部,既有类似 SIMT 的通用并行单元,又有脉动阵列这类专用单元。
通用单元负责灵活性,专用阵列负责高效率,两者配合,兼顾"能跑新东西"和"把老东西跑到极致"。这就像终端异构调度里 CPU/GPU/NPU 的分工,在芯片内部再次上演。
💡 现实是"混编团队"——万金油和专精专家搭配,灵活性与效率兼得。
4.4 边界正在变模糊:融合是大势所趋
值得留意的是,两条路的边界正在变模糊。GPU 里加了 Tensor Core(类脉动阵列的专用单元),NPU 里也有类似 SIMT 的通用核心,大家都不再"纯粹"。
融合的底层逻辑很朴素:用通用单元保住"什么都能算"的底线,用专用阵列冲高"矩阵乘这种大头"的效率。既想灵活又想高效,那就把两种脾气不同的单元装进同一颗芯片,让调度去协调它们。
💡 边界模糊是"融合菜"——中餐西餐不再分得清,取其精华混搭。芯片架构也在走这条"混搭出奇迹"的路。
4.5 一张图看懂两条路的差异
把两条路的差异浓缩成几组对比,一目了然:
| 核心思想 | 单指令驱动万核 | 数据在单元间流动 |
| 优势 | 灵活、通用 | 高效、省传输 |
| 软肋 | 控制开销大、分支分歧 | 不灵活、挑计算 |
| 数据方式 | 各核心读写内存 | 权重常驻、输入流动 |
| 典型场景 | 训练、通用推理 | 矩阵乘、成熟推理 |
这张表不是让你二选一,而是帮你判断:当任务偏灵活,往左看;当任务偏规整高效,往右看。心里有这张表,选芯片、写代码都不慌。
💡 对比表是"菜单"——看清楚每道菜的食材和口味,才知道今天该点哪道。点对了,才吃得爽。
五、架构选择影响上层编程
5.1 架构的"脾气",写进了编程模型里
底层架构的选择,直接决定了上层怎么编程。SIMT 的 GPU 催生了 CUDA 这类编程模型——程序员要显式地管理线程、线程块、共享内存,因为硬件就是这么组织的。
脉动阵列则更多被框架和编译器"藏起来"——程序员不用关心数据怎么流动,只需写高层的矩阵运算,编译器自动映射到阵列上。架构的脾气,决定了程序员离硬件的远近。
💡 架构是"地基",编程模型是"房子"。地基什么样,房子就怎么盖。选错了地基,房子再漂亮也盖不起来。
5.2 SIMT 编程:把并行"摊开"给程序员看
在 GPU 上写程序(如 CUDA),程序员要显式地思考并行:这个计算怎么拆成线程?线程怎么组织成块?共享内存怎么用?数据怎么对齐?
这种"摊开"带来的好处是控制力极强,坏处是门槛高、易出错。程序员离硬件很近,能榨出性能,但也要为硬件细节负责。SIMT 的灵活性,是以程序员的辛劳为代价的。
💡 SIMT 编程是"手写菜谱"——每个步骤、每样调料都要写清楚,累,但能做出口味独特的菜。
5.3 脉动阵列编程:把流动"藏起来"
脉动阵列上的编程,则被框架和编译器"藏起来"。程序员只写高层算子(如矩阵乘),剩下的数据流动、阵列映射、节奏控制,全由编译器代劳。
这种"藏起来"的好处是上手快、不易错,坏处是难以微调——当性能不达预期时,程序员很难像调 GPU 那样"手把手"优化。脉动阵列的高效,是以程序员失去部分控制力为代价的。
💡 脉动阵列编程是"点外卖"——报个菜名(矩阵乘),剩下的交给后厨。省事,但口味没得挑。
5.4 好的编程模型,是"翻译"架构的脾气
无论是 SIMT 的显式并行,还是脉动阵列的隐藏流动,好的编程模型都是在"翻译"底层架构的脾气,让程序员用最自然的方式,写出架构最能发挥的代码。
理解了两类架构的本质,再去看 CUDA、Tensor Core、NPU 的编程接口,就不只是记 API,而是看懂它们背后"为什么这么设计"。这正是从"会用"到"会选、会优化"的分水岭。
💡 好的编程模型是"翻译官"——把硬件的脾气,翻译成程序员听得懂的话。听懂了脾气,才能配合默契。
5.5 给开发者的三条选择建议
理解了架构如何影响编程,落到开发实践,可以总结三条建议:
- 先看负载形态:你的计算是规整的矩阵乘为主,还是分支多、变化大?前者优先考虑能发挥专用阵列的 NPU/TPU,后者优先考虑 GPU。
- 再看编程生态:需要快速迭代、频繁改模型,选生态成熟的 SIMT(GPU);模型固定、追求极致部署,选专用加速器。
- 最后看优化深度:愿意手写算子、榨干性能,SIMT 给你的掌控力更强;只想用高层 API、省心省力,专用阵列的封装更友好。
架构没有标准答案,只有"合不合适"。把底层范式搞明白,再回头看这些选择,就不再是拍脑袋,而是有据可依。
💡 选架构是"选工具"——先想清楚要干什么活,再决定用锤子还是用锯子。活儿没想清,工具再好也白搭。
5.6 理解底层,才能不被参数忽悠
最后补一句实在话:理解了 SIMT 和脉动阵列的底层差异,你就很难再被厂商的参数表忽悠。看到"XX 核心""XX TOPS"时,你会多问一句:这算力是 SIMT 那种灵活算力,还是脉动阵列那种专用算力?是能跑所有算子,还是只对矩阵乘有效?
同样的数字,背后的"脾气"完全不同。灵活算力和专用算力,就像"通才的高考总分"和"专才的单科状元",没法直接比大小。看懂底层范式,才是看懂芯片的第一步。
💡 理解底层是"看体检报告"——不能只看一个总数字,得看每个指标背后的含义。看懂了,才不会被漂亮的数字带偏。说到底,架构这门课,学的从来不是结论,而是"为什么这么设计"的思维方式。
配图
图 1:SIMT 万核同指令多线程示意图
flowchart TB
I[同一条指令] –> C1[核心1 处理数据1]
I –> C2[核心2 处理数据2]
I –> C3[核心3 处理数据3]
I –> C4[核心… 处理数据…]
I –> CN[核心N 处理数据N]
同一条指令同时驱动成千上万颗核心,每颗核心处理不同数据,这就是 SIMT"万核哲学"。
图 2:SIMT vs 脉动阵列 数据流动方式对比
flowchart LR
subgraph SIMT[ SIMT:核心各自读内存 ]
M1[内存] –> A[核心A]
M1 –> B[核心B]
M1 –> C[核心C]
end
subgraph SA[ 脉动阵列:数据在单元间流动 ]
D[输入] –> E[单元1] –> F[单元2] –> G[单元3] –> H[输出]
end
SIMT 里各核心反复读写内存;脉动阵列里数据在计算单元间一级级流动,权重预加载、输入侧入,大幅减少内存读写。
写在最后
SIMT 与脉动阵列,是 AI 并行计算的两条底层路:SIMT 用"万核同指令"换灵活性,脉动阵列用"数据流动"换高效率。SIMT 让 GPU 什么都能跑,但控制开销大;脉动阵列让 TPU/NPU 跑矩阵乘飞快,但不灵活。
回顾这一篇的线索:为什么 AI 要并行? 因为神经网络天然可并行,单核算力不够;SIMT 是什么? 单指令多线程,成千上万简单核心同指令处理不同数据;脉动阵列是什么? 数据在计算单元间流动,权重预加载、输入侧入,传输开销降一个数量级以上;边界在哪? SIMT 偏灵活,脉动阵列偏高效;影响什么? 架构的脾气直接决定了上层的编程模型。
"能算"的真相,从来不在单核的肌肉,而在千军万马的组织方式。
成稿自检记录(5 层)
【思考题】
SIMT 灵活但控制开销大,脉动阵列高效却不灵活,能否二者融合?已有尝试吗?欢迎探讨。
答案是:已经在融合,而且正成为主流趋势。最典型的尝试是 GPU 里的 Tensor Core——它在 SIMT 的通用并行核心之外,内嵌了类似脉动阵列的专用矩阵乘单元。Tensor Core 保留了 GPU 的灵活性(SIMT 负责通用计算、调度、数据搬运),又把矩阵乘这种规整计算交给高效的专用单元,在"灵活"和"高效"之间找到了一个折中点。类似的还有各种 NPU、DPU 里的"异构多核 + 专用阵列"设计。融合的本质,是用通用单元守住灵活性底线,用专用阵列冲高算力密度——这正是当前 AI 芯片架构演进的核心方向之一。
【系列文章预告】
下一篇讲存储——HBM 如何用 3D 堆叠和先进封装解决"内存墙",看看算力再快,数据喂不进来也是白搭。
标签:并行计算、SIMT、脉动阵列、GPU架构、TPU、NPU、算力密度
AI 算力本质来自并行架构定向优化,两类主流;SIMT 为单指令多线程,GPU 类核心以成千上万简单核心同指令多线程处理不同数据,匹配神经网络并行性,算力密度提升一个数量级;脉动阵列为 TPU/NPU 类,数据在计算单元间流动而非反复读写内存,权重预加载、输入侧入、节奏流动如泵血,传输开销降一个数量级以上;两种架构对应不同芯片类型。
网硕互联帮助中心




评论前必须登录!
注册