我们能在比 RAM 更快的上运行 Linux 吗?

我们能在比 RAM 更快的上运行 Linux 吗?

这个问题可能有点愚蠢,也可能是误解的结果。我现在正在研究 CPU,尤其是内存。我刚刚读到 SRAM 比 DRAM 快得多,但价格更贵。SRAM 非常昂贵:我逛了一会儿,发现一张 16 MB 的电池供电 SRAM 卡售价约为 400 美元。

最近一位朋友提到他一直在 RAM 中运行 Puppy Linux,而且运行速度很快。不过我注意到,微型 Linux 核心可以更小……小到 8 MB!这让我开始思考:我们可以在 SRAM 中运行 Linux 吗?这个问题是否合理?

谷歌搜索这个问题是无效的,但它提出了更多问题。可以在 L3 缓存中运行 Linux 吗?Intel Core i7 可以拥有足够大的 L3 缓存来容纳 8MB……但我犯了一个分类错误吗?这与“嵌入式”Linux 有什么区别?

这就是问题所在:我们可以在 SRAM 或 L3 缓存中运行 Linux 吗?还有更快的吗?Linux 能跑多快!?

答案1

Linux 或任何其他操作系统都不知道 RAM 的工作原理。只要内存控制器配置正确(例如,为非 SRAM 设置刷新率),那么操作系统就不会关心它是在普通动态内存(普通 RAM)、快速页面模式 RAM(FP RAM,从 C64 时代开始)、扩展数据输出模式 RAM (EDO)、同步 RAM (SDRAM) 还是任何双倍数据速率 SDRAM(DDR 1/2/3)上运行。

所有这些都支持从随机位置进行读写。全部都可以工作。

现在缓存有点不同了。您不必写入缓存即可更改内容。那样会造成麻烦。不过,它还是有点用处的。我知道 coreboot 在启动期间将缓存用作一种内存,在内存控制器正确配置之前。(有关详细信息,请查看 FOSDEM 2011 期间 coreboot 演讲的视频)。

所以从理论上来说,是的,你可以使用它。

:对于实际任务,具有 1 GB“常规”“中速”内存的系统的性能将比仅具有几 MB 超高速内存的系统好得多。这意味着您有三种选择:

  1. 以通常的“廉价”方式构建事物。如果您需要更快的速度,请添加几十台额外的计算机(所有计算机都具有“慢速”内存)
  2. 或者制造一台价格是十几倍但性能却远低于十几倍的计算机。

除了极少数情况外,最后一种情况是不明智的。

答案2

是的,可以,而且事实上它已经自动完成了。RAM 中最常用的部分被复制到缓存中。如果您的总 RAM 使用量小于缓存大小(如您所想),则现有的缓存机制将复制 RAM 中的所有内容。

只有当 PC 进入 S3 睡眠模式时,缓存才会被复制回正常 RAM。这是必要的,因为缓存在 S3 模式下会关闭。

答案3

许多 CPU 允许将缓存用作 RAM。例如,大多数较新的 x86 CPU 可以将某些区域配置为通过 MTRR 读取时不填充的写回。这可用于将地址空间的某个区域指定为缓存作为 RAM - 实际上是。

这是否有用则是另一个问题——它会将内核锁定在 RAM 中,但同时会减少缓存的有效大小。还可能存在副作用(例如必须禁用系统其余部分的缓存),从而使其速度变慢。

答案4

在 486 时代,曾经有机器的所有 RAM 都是 SRAM。当时 8MB 已经很多了,但似乎符合您的限制。我敢肯定,现在 8MB 的 SRAM 比那时便宜得多。

因此,如果机器是那样制造的,你就可以在 SRAM 中运行 Linux。这不是理论上的;已经实现了。

但是,缓存中不是这样。缓存的连接方式不同,更重要的是寻址方式也不同。您不能以相同的方式寻址。块的映射方式不同,而不是连续的块。而且内容不一定是您在磁盘上看到的内容 - 较新的英特尔芯片会进行某种即时“编译”(更像是 CISC=>RISC 微操作重新编码),其中微操作最终会进入缓存。简而言之,缓存中的内容不是您的程序,而是对它的更改视图,因此您不能再将其用作程序的内存表示。

问题是为什么。除了“因为我可以”之外,没有太多理由这样做。缓存系统可以让你以更少的成本获得最大的速度优势。请记住,成本不仅仅是美元……SRAM 需要更多晶体管,这意味着更多的电力。

相关内容