logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

芯片的静态功耗:关不掉的“待机耗电“

静态功耗是芯片的"基础代谢",通电就有,空闲时反而更显眼。想省电,要么工艺进步降低漏电流,要么干脆断电——电源门控就是后者的工程实现。

#性能优化#服务器
C++/Java/Python写合并优化实战

语言关键工具核心优化Java减少系统调用,避免JNI拷贝Python零拷贝视图,直接buffer操作C++手动buffer, mmap, writev穿透抽象,直接系统调用关键认知缓冲不是万能的,大数据批量写反而要避免二次缓冲零拷贝(memoryview/mmap)比缓冲更快,但代码更复杂系统调用次数是瓶颈,每次write都有上下文切换开销理解这些,写高性能IO代码时就能做出正确选择。

#性能优化#服务器
写缓冲区合并:把零碎写入打包成批量传输

优化效果代价写缓冲隐藏写入延迟需要缓冲区硬件写合并减少总线事务,提高带宽增加合并逻辑复杂度WC内存类型最大化合并效果弱序,需要显式fence关键要点合并需要地址连续,对齐访问很重要4条目缓冲区在现代CPU下仍可能满,导致5-10%性能损失WC内存类型适合流式写入,但不适合需要顺序保证的场景MMIO和设备寄存器必须禁用合并理解写合并,写高性能代码时就能知道什么时候用memcpy,什么时候用movnt

#服务器#性能优化
缓存里的“组“和“路“到底是啥关系?

概念类比作用设计影响组(Set)楼层号快速定位候选区域,限制比较范围组数多→Index位数多→Tag比较器简单,但索引电路复杂路(Way)房间号提供多个位置减少冲突缺失路数多→miss rate低→但比较电路复杂、延迟高、功耗大直接映射= 1路,最快但冲突多,适合实时系统全相联= 1组N路,无冲突但太慢,只能做小缓存组相联= 平衡方案,4-8路是现代L1的甜点区理解了这个二维结构,再看缓存优化、伪

#服务器#性能优化
增加流水线段数对高相联度缓存的影响

场景推荐方案理由服务器CPU(高吞吐)L1缓存访问3-4段流水线 + 8-16路频率优先,预测准确率可接受,吞吐量最大化桌面CPU(均衡)L1缓存访问2-3段流水线 + 4-8路平衡延迟和频率,兼顾游戏和生产力移动端CPU(低功耗)L1缓存访问1-2段流水线 + 4路减少动态功耗,避免预测失败惩罚实时系统(确定性)单周期L1缓存访问 + 2-4路延迟可预测,无预测失败风险GPU(高吞吐+延迟容忍)

#性能优化#服务器
SRAM与DRAM:速度 vs 容量的永恒博弈

维度SRAMDRAMHBM速度0.5-2.5ns50-100ns~10ns容量MB级GB级10-100GB成本$5000+/GB$1-3/GB$50-100/GB用途缓存主存AI/HPC加速器关键认知SRAM和DRAM的分工由物理原理决定,短期内不会改变DRAM容量增长放缓,但HBM通过3D堆叠继续提升带宽Memory Wall问题无解,只能通过缓存层次、预取、近内存计算缓解未来可能是DRAM +

#服务器#性能优化
缓存分块(Cache Blocking):矩阵乘法的救命稻草

优化效果复杂度解决空间局部性低解决时间局部性中SIMD向量化提升单周期算力中多层分块利用整个缓存层次高关键认知3B2≤CL13B2≤CL1​实际B值通常取64或128(考虑SIMD对齐)多层分块(L1/L2/L3)能进一步提升性能现代编译器能自动分块,但手工调优仍有价值理解分块,就能理解为什么OpenBLAS/GotoBLAS比naive实现快10倍以上。

#性能优化#服务器
到底了