News Hacker|极客洞察

😅旧芯片组的64MB缓存墙:加 RAM 反而变慢
再加内存,怎么先把缓存和整机速度一起丢光了?

🎯 讨论背景

这篇讨论围绕 1990 年代末 x86 主板/笔记本上的缓存上限展开,核心是 Intel 430TX/430FX(晚期 Pentium 芯片组)这类平台虽然能插更多 RAM,但只有前 64MB 左右能被外部 L2 cache 高速命中。评论里提到 Sony Vaio 505TX(1990 年代的轻薄笔记本)在 Linux 下可以把超出部分改成 RAM disk 或 swap,以尽量让最快的内存先服务于系统。也有人把话题延伸到 BeBox(早期双 PowerPC 电脑)、486 主板和 tag RAM,说明当时缓存标签、内存控制器和寻址设计都会直接决定“多加内存”是不是有意义。最后又扯到 pre-UEFI BIOS(传统 BIOS)启动大内存更慢,以及现代软件如 Chrome 也会因为默认按总内存扩张而表现出不匹配。

📌 讨论焦点

64MB 缓存墙与“多装内存不一定更快”

不少评论都把重点放在“插更多 RAM 反而不一定更快”这件事上。以 Sony Vaio 505TX 和 Intel 430TX/430FX 这类 late Pentium chipset 为例,机器虽然能装到 128MB 甚至更多,但只有前 64MB 左右能被高速 cache 命中,超出的内存会明显拖慢访问。有人回忆当年在 Linux 里打 kernel patch,把 64MB 以上的部分当 RAM disk 来做 swap,这样至少还能优先吃到最快的那部分 RAM。也有人指出这并非偶然,而是芯片组被设计成让用户想要更多内存时顺便升级到更新的平台。

[来源1] [来源2] [来源3] [来源4]

L2 cache、双 CPU 与硬件权衡

另一组评论在讨论老机器的 cache 和多处理器权衡。有人回忆 BeBox(早期双 PowerPC 电脑)在双 CPU 模式下会关闭 L2 cache,并猜测这是 memory controller 的限制,而不是单纯的产品策略。随后有人补充说,PPC603/604 这类处理器本身就对多 CPU 有限制,因此现实里往往是“要并行就接受更差的缓存表现”。评论里也有人对这个 trade-off 持保留态度,认为无 cache 的 x86 实在太慢,两颗也未必打得过一颗有 cache 的 CPU。

[来源1] [来源2] [来源3] [来源4]

文章表述与具体硬件细节的纠正

还有一波是在拆解文章和硬件术语本身。有人直接问文章是不是在说 L2 cache 无法访问某个地址之后的内存,说明文中表述让部分读者不太好理解。另一位补充 486 主板上 72-pin SIMM 的兼容细节:有些板子只要第一条插低容量模块、并把各 bank 填满,就能认到全部 RAM,但并不是所有主板都行。也有人顺手纠正了 Vaio 的芯片组型号,并提到某些主板上的 tag RAM 可扩展,但并非普遍支持。

[来源1] [来源2] [来源3] [来源4] [来源5]

内存价格记忆与年代背景

评论区还出现了对内存价格的校正和回忆。有人用 1997 年 SDRAM 的每 MB 价格去反推,觉得文章里的总价看起来对不上,除非算上 inflation。随即有人拿 1999 年买到 512MB RAM 的经历,以及 AnandTech 的历史报价,说明 128MB 在两年内从约 $300 掉到约 $100,价格崩得非常快。这个分支的结论是,晚 90 年代 RAM 的确正在从“奢侈品”变成大众配件,所以高容量配置并非天方夜谭。

[来源1] [来源2] [来源3] [来源4]

现代软件与启动流程的反讽

有人把这个老问题延伸到现代软件和启动流程。评论说很多应用会按总 RAM 来扩 cache,超过普通规格后并不会更聪明,Chrome 就被点名成典型例子。另一条补充说,在 32-bit 向 64-bit 过渡、且还在用 pre-UEFI BIOS 的年代,机器在开机时读取和初始化大内存也会更慢。还有人借机吐槽今天常见的 OOM、microservice 和多层封装,表示我们把“Mo RAM”换成了“Mo Layers”,却没更会理解硬件。

[来源1] [来源2] [来源3]

📚 术语解释

chipset: 主板上的控制芯片组,决定 CPU、内存和 I/O 的连接方式,也常带来缓存和寻址限制。

L2 cache: CPU 二级缓存,容量和可缓存地址范围会直接影响老机器的速度表现。

RAM disk: 把一部分 RAM 伪装成磁盘使用,常拿来放临时文件或 swap 以提高速度。

swap: 内存不足时换到磁盘上的交换区;在旧系统里常被拿来承接较慢的那部分内存。

NUMA: Non-Uniform Memory Access,按内存距离区分访问速度的架构,适合把快慢内存分层利用。