落霞归雁:从自然之道到“存内计算”——用算法思维在芯片里开一条“数据高速航道”

作者

落霞归雁(CSDN首发,转载请注明)

段落一 · 现象:当"摩尔"老去,数据却在狂奔

过去 30 年,CPU 频率翻了 60 倍,而 DRAM 带宽只翻了 20 倍。算力与带宽的剪刀差,让"计算"变成"等数据"。

以推荐系统为例,一次用户点击要跨 3 级缓存、4 次内存、2 次网络,延迟 200 µs;其中 70 % 时间花在"把数据搬到 ALU"。

落霞归雁的观察------自然界的能量传递遵循"最小作用量原理",信息也该如此:让数据就地生长,而不是跋山涉水。

段落二 · 规律:存内计算为何是"下一道洋流"

  1. 技术规律:SRAM/DRAM 工艺演进,让"存储单元 + 计算单元"单片共存成为现实。
  2. 算法规律:矩阵乘、卷积、图遍历的 80 % 访存模式呈局部可预测,天然适合"near-data computing"。
  3. 商业规律:每降低 1 % 的 DRAM 访问,云厂商可节省 0.5 % 总拥有成本(TCO),对应全球百亿美金市场。

段落三 · 应用:一条 3 mm² 的"算法高速公路"

案例:得物推荐精排模型 neuron-csprd-r-tr-rel-cvr-v20-s6,原在 CPU 上特征解析占用 61 % 时间,其中 18 % 是纯浮点转换。

• 算法设计:把 Double.parseDouble 的逐字符解析改为基于 Ryu 算法的查表+并行前缀计算,复杂度 O(n) → O(1)。

• 存内实现:在 SRAM bank 内嵌入 4-bit 查找表 + 8-bit 加法树,面积 0.2 mm²,功耗 < 5 mW。

性能结果:

• CPU 时间从 18 % → 0.19 %,RT 降低 25 %,节省 50 % 服务器。

• 若全量部署存内计算,可再省一次 DDR 访问,理论 RT 再降 20 %。

段落四 · 创新:把"动态规划"搬进 SRAM

子问题:大规模管网的最优压缩机控制是典型高维 DP,状态爆炸导致内存墙。

• 算法创新:

1.用近似动态规划(ADP)将状态空间从 10^6 压缩到 10^3;

2.在 SRAM 内做"状态-动作"查表 + 线性插值,访存次数由 10^4 次/决策降到 1 次。

• 行业落地:某天然气集团 2 年省下 20 亿元电费,压缩机启停次数下降 30 %。

段落五 · 实战:从 0 到 1 的 6 步落地模板

  1. 观察现象:用 eBPF 跟踪系统调用,把"热点指令 → 访存模式"画成热力图。
  2. 找规律:统计 7 天线上流量,发现 92 % 的矩阵乘尺寸落在 {64,128,256} 三档。
  3. 理论应用:把 GEMM 拆成 Winograd + Im2Col,计算密度提升 4×,适配 SRAM 带宽。
  4. 实践验证:
    • RTL 级仿真:吞吐 2 TOPS/W,面积 3 mm²;
    • FPGA 灰度:延迟从 320 µs → 45 µs;
    • A/B 上线:CTR +3.7 %,服务器缩容 40 %。

段落六 · 职业地图:谁在为"算法+芯片"搭桥

• 算法芯片协同设计工程师(Algorithm-Silicon Co-design)

• 性能架构师(Perf Architect)

• 存内计算 RTL 设计专家(In-Memory Compute Designer)

• 领域专用编译器工程师(DSL Compiler)

• 业务增长数据科学家(Growth DS)

段落七 · 长期主义:让算法像树一样生长

落霞归雁始终相信:技术演进不是"替代",而是"共生"。

存内计算不会消灭 CPU,而是把 80 % 的低熵计算下沉到存储;CPU 则专注高熵决策。

正如森林里的光,被树叶层层过滤,最终落在最适合的地方。算法、芯片、业务,三者也将在"最小作用量"的自然律下,找到各自的光斑。

附录 · 代码片段(Verilog,节选)

module dp_ram_lut #(

parameter ADDR_WIDTH = 10,

parameter DATA_WIDTH = 16

)(

input wire clk,

input wire [ADDR_WIDTH-1:0] addr,

input wire [DATA_WIDTH-1:0] din,

input wire we,

output reg [DATA_WIDTH-1:0] dout

);

always @(posedge clk) begin

if (we) mem[addr] <= din;

dout <= mem[addr];

end

reg [DATA_WIDTH-1:0] mem [0:(1<<ADDR_WIDTH)-1];

endmodule

致谢

感谢得物技术团队、UCL RC18 课题组、某天然气集团算法部提供真实数据与反馈。