ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

163、MLIR的Multi-Bank Memory与Interleaving

163、MLIR的Multi-Bank Memory与Interleaving MLIR的Multi-Bank Memory与Interleaving去年在调一个AI加速器项目,板子跑起来后吞吐死活上不去。DDR带宽监控显示利用率不到40%,但内存控制器那边报的延迟却高得离谱。折腾了两周,最后发现是HBM的bank冲突——多个PE同时往同一个bank写数据,硬件自动做了串行化,带宽直接腰斩。那个下午我盯着波形图,突然意识到:MLIR里那些看似多余的memory attribute,其实是在帮我们提前暴露这种问题。从硬件视角理解Bank冲突现代加速器(包括GPU、TPU、NPU)的片上内存几乎都是多bank结构。HBM2e通常有8-32个独立bank,每个bank有自己的读写端口和行缓冲区。理想情况下,连续地址访问会均匀分布在各个bank上,硬件可以并行处理。但现实是,如果两个地址的bank index相同(比如地址A和地址B的(addr row_bits) bank_mask相等),它们就会竞争同一个bank的访问权。这个冲突的代价有多大?以HBM2e为例,bank冲突会导致额外的行激活延迟(tRP + tRCD,大约50-80ns),而正常访问只有CAS延迟(约15ns)。如果冲突率超过10%,有效带宽会下降30%以上。更坑的是,这种问题在仿真阶段很难复现——仿真器通常不模拟bank冲突的时序细节。MLIR中的Memory Space与Bank映射MLIR的m
返回列表