加载失败
这篇讨论围绕 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 也会因为默认按总内存扩张而表现出不匹配。
不少评论都把重点放在“插更多 RAM 反而不一定更快”这件事上。以 Sony Vaio 505TX 和 Intel 430TX/430FX 这类 late Pentium chipset 为例,机器虽然能装到 128MB 甚至更多,但只有前 64MB 左右能被高速 cache 命中,超出的内存会明显拖慢访问。有人回忆当年在 Linux 里打 kernel patch,把 64MB 以上的部分当 RAM disk 来做 swap,这样至少还能优先吃到最快的那部分 RAM。也有人指出这并非偶然,而是芯片组被设计成让用户想要更多内存时顺便升级到更新的平台。
另一组评论在讨论老机器的 cache 和多处理器权衡。有人回忆 BeBox(早期双 PowerPC 电脑)在双 CPU 模式下会关闭 L2 cache,并猜测这是 memory controller 的限制,而不是单纯的产品策略。随后有人补充说,PPC603/604 这类处理器本身就对多 CPU 有限制,因此现实里往往是“要并行就接受更差的缓存表现”。评论里也有人对这个 trade-off 持保留态度,认为无 cache 的 x86 实在太慢,两颗也未必打得过一颗有 cache 的 CPU。
还有一波是在拆解文章和硬件术语本身。有人直接问文章是不是在说 L2 cache 无法访问某个地址之后的内存,说明文中表述让部分读者不太好理解。另一位补充 486 主板上 72-pin SIMM 的兼容细节:有些板子只要第一条插低容量模块、并把各 bank 填满,就能认到全部 RAM,但并不是所有主板都行。也有人顺手纠正了 Vaio 的芯片组型号,并提到某些主板上的 tag RAM 可扩展,但并非普遍支持。
评论区还出现了对内存价格的校正和回忆。有人用 1997 年 SDRAM 的每 MB 价格去反推,觉得文章里的总价看起来对不上,除非算上 inflation。随即有人拿 1999 年买到 512MB RAM 的经历,以及 AnandTech 的历史报价,说明 128MB 在两年内从约 $300 掉到约 $100,价格崩得非常快。这个分支的结论是,晚 90 年代 RAM 的确正在从“奢侈品”变成大众配件,所以高容量配置并非天方夜谭。
有人把这个老问题延伸到现代软件和启动流程。评论说很多应用会按总 RAM 来扩 cache,超过普通规格后并不会更聪明,Chrome 就被点名成典型例子。另一条补充说,在 32-bit 向 64-bit 过渡、且还在用 pre-UEFI BIOS 的年代,机器在开机时读取和初始化大内存也会更慢。还有人借机吐槽今天常见的 OOM、microservice 和多层封装,表示我们把“Mo RAM”换成了“Mo Layers”,却没更会理解硬件。
chipset: 主板上的控制芯片组,决定 CPU、内存和 I/O 的连接方式,也常带来缓存和寻址限制。
L2 cache: CPU 二级缓存,容量和可缓存地址范围会直接影响老机器的速度表现。
RAM disk: 把一部分 RAM 伪装成磁盘使用,常拿来放临时文件或 swap 以提高速度。
swap: 内存不足时换到磁盘上的交换区;在旧系统里常被拿来承接较慢的那部分内存。
NUMA: Non-Uniform Memory Access,按内存距离区分访问速度的架构,适合把快慢内存分层利用。