六家对手发现CUDA弱点:不约而同扔掉硬件缓存和线程

别把缓存当神,那玩意儿在AI眼里就是个摆设。

CUDA这堵墙,六家对手没用锤子砸,而是直接绕了过去。他们发现AI干活的路数太死板,根本用不着硬件猜你下一步要干啥。这六个来自不同国家、不同架构的团队,各自闭门造车,结果造出来的车都没装传统缓存,也没用线程打架那一套。这巧合背后,是对AI计算本质的一次集体反叛。

硬件缓存被六家联手判了死刑

你打开任何一台电脑的CPU参数,L1、L2、L3缓存的大小和速度都是重点宣传对象。这玩意儿就像厨房台面,把锅碗瓢盆从大冰箱里提前拿出来搁着,省得做饭时现翻。GPU干这活更卖力,因为图形渲染时,你不知道哪个像素需要更多计算,所以得靠缓存随机应变,猜你可能要用啥数据。

但这六家AI芯片公司,包括Tenstorrent、Cerebras、亚马逊的Trainium、谷歌的TPU、Sambanova和Furiosa,全都把硬件缓存给毙了。他们用软件管理的SRAM取而代之,也就是让程序员或编译器明确告诉芯片,哪个数据该放在哪块快速存储里,完全不用硬件去猜。这个决定的底气来自AI工作负载的致命规律:极度 predictable。

矩阵乘法、注意力机制、混合专家模型的路由,这些AI核心操作的数据访问模式,比火车时刻表还准时。每次计算需要的数据块大小、顺序、位置,几乎一模一样。既然你每一步都明牌,硬件缓存那种猜错就要罚站的机制就显得很蠢。猜对了,快那么一点点;猜错了,得从主内存搬数据,代价巨大。而AI运算几乎不会猜错,所以干脆别猜,直接指定位置,永不罚站。

这就像你每天上班路线固定,根本不需要导航软件实时探测拥堵并缓存备选路线,你直接走那条最快的老路就行。把这套逻辑塞进芯片,省下来的晶体管和功耗可以堆更多计算单元,性价比直接起飞。

线程模型被扔进历史垃圾桶

CUDA编程模型里,线程、线程束、线程块是基础概念。一堆线程并行跑,像一群工人各干各的,但随时可能因为分支或者内存访问不同步而互相等待。这套东西继承自显卡处理图形的老本行,因为那时候每个像素的着色工作量不均衡,得靠细粒度线程动态调度。

然而AI计算是块大豆腐,切得方方正正。矩阵乘法就是把两个大格子阵列相乘,每个格子算完互不影响。注意力机制也是规整的矩阵运算序列。这些任务用线程来调度,好比让一百个快递员分别送同一栋楼的一百个包裹,还得协调谁先上电梯,纯属浪费管理成本。

Tenstorrent搞了生产者-消费者流水线,数据像流水线上的零件,经过每个处理单元自动流转,根本不用线程去喊开工完工。Cerebras用数据流架构,它的芯片整个就是个超大计算网格,数据像波浪一样向前推进,每个处理单元只管手头的小任务。Trainium更绝,让你写顺序代码,编译器自动找出能并行执行的部分,把并行这件事从程序员手里抢走了。

TPU直接在一个超宽向量单元上顺序执行指令,一次处理一大坨数据,完全舍弃多线程的杂乱无章。Sambanova把计算映射到硅片的物理空间上,像一个固定流水车间。Furiosa把张量收缩操作直接编译成硬件指令。六条路,都绕开了线程这个抽象层。事实摆在眼前,线程不是为AI这种规整活设计的,硬要用就是拿扳手当锤子使。

同步锁成了多余的口哨

写过CUDA程序的人,多半被同步函数搞崩溃过。__syncthreads() 让一个块里所有线程走到同一条线再继续。原子操作和内存屏障更恶心,多线程抢着改同一块数据时,得用这些锁防止数据错乱。调试这类问题,就像抓一群乱窜的仓鼠,谁先跑到终点完全随机。

Cerebras压根不需要同步,因为它的数据流天然有序。数据像排队进场,前一个操作完,后一个自动接上,没有谁抢谁的问题。TPU也省心,顺序执行意味着每一步都是上一步的后果,不需要插旗子喊集合。Sambanova的空间映射,让每个计算步骤待在固定物理位置,数据流过去就完事,没有竞争条件。

Tenstorrent用循环缓冲区替换了同步机制。数据在一个环形缓冲里打转,生产者和消费者指针自动维护,谁慢谁快都不影响大局,缓冲区空或满时自动暂停或继续,完全不用额外同步指令。这六个团队都不约而同地认为,AI计算是条单行道,没必要在路口装红绿灯。

数据赖在片上不走寻常路

GPU跑Transformer模型时,每一层都要从高带宽内存HBM读取权重和激活值,算完后存回HBM。这就好比每次做菜,都要从大冰箱拿出食材,切完炒完再放回冰箱,下个菜再拿出来。HBM虽然快,但比起片上SRAM还是慢不少,而且来回搬运耗电。

这六家芯片的策略是让数据在SRAM里直接流到下一步操作。Transformer第一层算完,结果就在片上SRAM里原地等着,第二层直接从那取数,根本不用回HBM绕一圈。Cerebras的巨型芯片,整个模型权重都在片上,数据流动起来像传纸条,一节课传遍全班。Tenstorrent的流水线,每级处理完的数据直接推给下级。Trainium和TPU的编译器会尽量把中间结果保留在片上寄存器或SRAM里。

这种设计让内存带宽不再是瓶颈。GPU那种每层都读写HBM的模式,在AI大模型面前越来越吃力,因为模型参数量暴增,数据搬运成了能耗大头。片上数据流则像血管里的血,循环利用,只在必要时才去HBM这个大心脏换氧。六家都押注未来AI计算是数据流驱动,而非内存驱动。

控制权的光谱从左到右拉开

虽然六家都砍了缓存和线程,但给程序员的控制权天差地别。Tenstorrent给了一套完整的C++内核SDK,相当于发你一把手术刀,你想怎么切就怎么切,但切坏了责任自负。Trainium和TPU则提供Python DSL,像高级厨具,能快速做出一桌菜,但想玩花活得看工具支不支持。

Sambanova和Furiosa目前压根不给内核级API,只能通过他们的高级框架用。但Furiosa放出话,未来几个月会提供底层编程API和更高级的DSL API,把选择权交给开发者。这意味着一个明显的光谱:一端是全控制,高手能榨干芯片最后一滴性能;另一端是黑盒编译,普通用户写简单脚本就能跑,但性能上限取决于编译器优化水平。

拿开车打比方,Tenstorrent是手动挡赛车,专业车手能贴地飞行;Trainium和TPU是自动挡性能车,踩油门就走,也能跑很快;Sambanova和Furiosa目前像高级自动驾驶,设定目的地就行,但路线你说了不算。选择哪家,相当于回答一个问题:你愿意花多少精力换那点额外性能?

殊途同归的底层共识

六家竞争者在CUDA的弱点上达成如此一致的判断,在芯片行业极其罕见。它们没有互相商量,却都认为硬件缓存和线程模型是GPU为图形优化留下的包袱,AI工作负载不该背着这俩包袱上路。这不是简单的模仿,而是各自从数学和物理层面重新审视了计算本质。

AI计算的核心是张量运算和规则内存访问。这个规律足够强,以至于可以抛弃通用处理器那套复杂的分支预测、缓存一致性、多线程调度机制。把省下来的硅片面积和功耗预算,全砸给矩阵乘法单元和片上存储。这种设计哲学的统一,暗示着AI专用芯片正脱离GPU的影子,形成自己的演化路径。

六家的方案虽有差异,但底层原则出奇一致:显式放置数据,规避缓存;使用数据流或顺序执行,规避线程;消除同步,规避并行乱局。这就像六位厨师用不同菜系烹饪同一道主料,调料和火候各异,但都拒绝放味精。

总之:六家对手不约而同扔掉缓存和线程,反倒在限定规则里跑得更欢。