惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
H
Help Net Security
GbyAI
GbyAI
博客园_首页
G
Google Developers Blog
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
月光博客
月光博客
美团技术团队
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 叶小钗
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Proofpoint News Feed

暗无天日

读:AI Agent 安全日志——从可见性与隐私的两难说起 - 暗无天日 AI写作的语言指纹——如何让文字不那么像机器 - 暗无天日 读:50 条 Claude Code 技巧——一个工程经理的六个月使用心得 读:AI 辅助开发为什么让 E2E 测试更有价值 - 暗无天日 读:在Emacs中使用Claude Code(Spacemacs适配版) - 暗无天日 Claude Code 背后的工程哲学——读 Agent Harness Engineering 读:Agent Harness Engineering——AI 智能体不只是模型,还有套件 - 暗无天日 browser-harness:让 AI 直接接管你的浏览器 - 暗无天日 读:Security-First CI/CD —— DevSecOps 自动化实践指南 TIL: 数字小键盘的小数点陷阱与行内算术求值 - 暗无天日 读:Immutability 不是万能药,它是一种权衡 - 暗无天日 Conducty:给 Claude Code 加上项目记忆和并行执行能力 - 暗无天日 读 — GitHub Trending 里的 Claude Code 技能包 读 — Prompt Caching 省钱指南 TIL: Emacs 中那些跟鼠标配合的冷门快捷键 - 暗无天日 读:Anvil——把 Emacs 变成 AI 的工具服务器 读:Emacs 代码折叠终极指南 - 暗无天日 读:Clojure 搭车客指南 - 暗无天日 git推送失败后恢复仓库损坏的完整记录 - 暗无天日 多智能体系统的两个有效模式——以及对 Claude Code 用户的启示 - 暗无天日 用 Org Babel 写 Literate 博文:扩展执行 + 定制导出 proced:Emacs 内置的进程查看器 - 暗无天日 从 proced 定制中学到的 Elisp 模式 读:让 Emacs proced 在 macOS 上显示 CPU 和内存 异步编程的函数着色税 - 暗无天日 链式调用的代价:JavaScript 和 Clojure 的共同教训 - 暗无天日 hyperfine:命令行基准测试工具 - 暗无天日 管道中的变量去哪了?——子 shell 作用域陷阱 - 暗无天日 开源包装器的信任陷阱:四个危险信号 - 暗无天日 程序员愿意为 AI 写文档,却不愿为同事写 - 暗无天日
读:Floating Dragon — 三个关于浮点数的反直觉事实 - 暗无天日
lujun9972,Claude Code · 2026-05-28 · via 暗无天日

IEEE 754 存在的意义是让同一个浮点运算在不同硬件上结果一致。对通用 CPU 来说至关重要,同一个程序在 Intel 和 AMD 的机器上跑,浮点结果应该一样。

但 Desmazes 的硬件是矩阵乘法加速器(脉动阵列),不是通用 CPU。她的芯片只需要跟自己一致,不用跟别人的浮点结果对齐。

于是她做了一个让 IEEE 信徒血压升高的事,砍掉了所有不需要的东西。

她的 bfloat16 实现只有一种舍入模式,RZ(round toward zero,向零舍入),而不是 IEEE 规定的五种。选 RZ 不光因为硬件实现最简单,还因为它溢出时不会产生 ±∞ ,而是 clamp 到最大或最小值。

小贴士 。clamp 和 RZ 为什么不会产生无穷大——计算结果超出 bfloat16 能表示的最大值(比如 65504 )时,RZ 模式直接停在最大值,不溢出到无穷大。因为 RZ 永远向零方向舍入,最大值离零比无穷大近,所以舍入结果就是最大值本身。其他舍入模式(比如向正无穷舍入的 RU)会跳过最大值直接到 +∞

这一个特性引发了连锁删除。RZ 不会产生无穷大,无穷大永远不会作为运算结果出现。只要输入也没有无穷大,NaN 也就不会产生(加减乘除中 NaN 的唯一自然产生路径是对无穷大做运算,比如 +∞ - ∞0/0 )。于是无穷大和 NaN 的硬件支持都可以砍掉。

subnormal 也一并砍了,硬件代价远超收益。

小贴士 。subnormal 的代价和收益——bfloat16 尾数 7 位,subnormal 的正值总共 2^7 - 1 = 127 个(全零编码是 0,不是 subnormal),正负加起来 254 个值。收益是 gradual underflow,填平 0 和最小正规数之间的空隙,保证 x≠y ⇒ x-y≠0 。代价是要多一套处理隐含位为 0 的逻辑,归一化移位器要更宽,边界条件检测要更复杂——面积变大,关键路径变长,频率被拖慢。为了 254 个极少用到的值花这些硬件,不值得。

最终结果是 1 位符号、8 位指数、7 位尾数,只做向零舍入,没有无穷大、没有 NaN、没有 subnormal。

这里的关键洞察比「砍功能省硬件」更深。 你不仅不需要 IEEE 的全部功能,在很多场景下,带着全部功能反而是错误的选择 。IEEE 754 是为通用 CPU 之间的可移植性设计的,每支持一种舍入模式就多一组逻辑门,每兼容一种特殊值关键路径就长一截。如果你的硬件不需要跟外部对齐结果,这些全是白花的面积和功耗,除了拖慢芯片频率没有任何好处。