从谷歌TPU到Xilinx Versal:聊聊Systolic Array(脉动阵列)如何成为AI芯片的“老树新花”
脉动阵列的文艺复兴从学术论文到AI芯片核心架构的进化之路1982年卡内基梅隆大学的H.T. Kung教授在论文《Why systolic architectures?》中首次提出了脉动阵列(Systolic Array)的概念。当时这位计算机科学家可能不会想到这个在当时被视为过于专用的架构会在三十多年后成为人工智能计算浪潮中的核心设计范式。从谷歌TPU到Xilinx Versal的AI Engine这条技术演进的轨迹不仅讲述了一个经典计算架构的复兴故事更揭示了硬件设计领域轮回创新的独特魅力。1. 被时代错过的天才设计脉动阵列的起源与沉寂在通用处理器一统天下的1980年代Kung教授的脉动阵列就像一颗被埋没的明珠。这种架构的核心思想是通过规则排列的处理单元(PE)形成数据流水线使数据像心脏血液般有节奏地脉动通过整个阵列。其精妙之处在于数据复用最大化每个数据元素进入阵列后会被多个PE重复使用内存墙突破大幅减少对外部存储器的访问需求并行计算优化规则结构天然适合矩阵/向量运算然而当时的计算需求主要集中在通用场景这种为特定计算模式优化的架构显得过于超前。就像文艺复兴前的古希腊雕塑脉动阵列的价值需要等待适合它的时代到来。提示脉动阵列名称中的systolic源自医学术语形容数据像心脏收缩压送血液一样有节奏地通过处理单元2. AI计算浪潮下的重生谷歌TPU的启示2016年谷歌在其I/O大会上公开了专为神经网络推理设计的TPU(Tensor Processing Unit)芯片让脉动阵列重新回到聚光灯下。这背后是深度学习对矩阵乘法的巨大需求计算类型传统CPU/GPU处理方式TPU脉动阵列处理方式数据存取模式频繁访问主存单次加载多次复用计算并行度有限的多核并行大规模PE阵列并行能效比相对较低可达到30-80TOPS/WTPU第一代采用256×256的脉动阵列设计在处理神经网络典型的矩阵乘加运算时能够实现# 简化的脉动阵列矩阵乘法流程 for i in range(0, matrix_size, array_size): for j in range(0, matrix_size, array_size): # 数据块加载到脉动阵列 load_tile_to_systolic_array(a_tile, b_tile) # 阵列内并行计算 systolic_array_compute() # 累加部分结果 accumulate_results(c_tile)这种架构使得TPU在神经网络推理任务上的性能功耗比远超同期CPU和GPU也证明了脉动阵列在AI时代的独特价值。3. 现代进化Xilinx Versal AI Engine的架构创新当Xilinx设计Versal系列自适应计算加速平台时工程师们对经典脉动阵列进行了现代化改造创造出更强大的AI Engine架构。对比传统脉动阵列AI Engine的进化体现在3.1 计算能力的质变每个AIE核心是完整的32位RISC-V处理器支持标量和矢量两种计算模式集成专用AI指令扩展3.2 存储系统的升级存储特性传统SA PEVersal AIE容量通常几KB32KB本地存储带宽有限高达1TB/s的访问带宽共享机制简单相邻传递全阵列可寻址3.3 互联架构的革命%% 注意根据规范要求此处不应使用mermaid图表改为文字描述AI Engine阵列采用多维互联总线支持近邻通信上/下/左/右跨节点直接内存访问通过NoC与芯片其他部分连接这种设计既保留了脉动阵列数据流高效性的精髓又突破了传统架构的局限性使其能够适应更复杂的AI工作负载。4. 架构复兴背后的技术驱动力脉动阵列的复兴不是简单的历史重复而是多种技术因素共同作用的结果4.1 内存墙问题的加剧随着计算单元性能的指数级增长内存带宽成为主要瓶颈。脉动阵列计算靠近数据的理念正好应对这一挑战数据局部性最大化片上存储层次优化减少数据搬运能耗4.2 专用架构的回归后摩尔定律时代通用处理器性能提升放缓领域专用架构(DSA)重新受到重视。现代AIE架构的成功实践表明专用性不等于不灵活可配置性与高效性可以兼得领域优化带来数量级能效提升4.3 新型计算范式的需求神经网络计算的特点与脉动阵列优势高度契合密集的矩阵/张量运算规则的数据流模式可预测的内存访问模式对计算精度相对宽容5. 未来展望脉动阵列思想的延伸从TPU到Versal AI Engine的演进路径可以看出脉动阵列的设计哲学正在向更广阔的领域扩展异构计算集成与FPGA、CPU等其他计算单元协同工作可配置数据流支持多种计算模式的动态切换3D堆叠技术通过先进封装进一步提升集成度光互连应用解决传统金属互连的带宽限制在VCK190等先进平台上工程师们正在将这些理念转化为实际生产力。一个典型的AIE开发流程可能包括# 使用Vitis工具链开发AIE应用 aiecompiler --targetAIE -I/path/to/include aie_kernel.cpp aiesimulator --pkg-dir./Work --dump-vcdon vitis_analyzer aiesimulator_output/default.aierun_summary这种开发体验既保留了传统软件编程的抽象层次又能充分发挥硬件加速器的性能潜力。