我们可以在比RAM更快的速度下运行linux吗?


21

这可能是一个愚蠢的问题,也可能是误解的结果。我正在研究CPU的当前状态,尤其是内存。我只是在读SRAM比DRAM快多少,但价格却更高。SRAM非常昂贵:我花了一点钱就找到了一块电池供电的16 MB SRAM卡,价格约为400美元。

最近,一个朋友提到他一直在RAM中运行“小狗linux”,而且速度很快。不过,我注意到,微小的内核linux甚至可以更小...甚至只有8 MB!这让我开始思考:我们可以在SRAM中运行linux吗?这个问题是否格式正确?

谷歌搜索这个问题被证明是无效的,但是提出了更多的问题。可以在L3缓存中运行linux吗?英特尔酷睿i7可以具有足够大的L3缓存以容纳8MB ...但是我犯了一个分类错误?这个和“嵌入式” Linux有什么区别?

这就是问题:我们可以在SRAM或L3缓存中运行linux吗?有什么更快的方法吗?我们的Linux能有多快!!

z。


3
嵌入式Linux通常在ram或非易失性内存上运行。嵌入式Linux通常只是被精简为仅在特定硬件上运行,或者使用一些不太常见的内核选项,例如低延迟
Journeyman Geek

2
我想知道这个问题是否有实际用途?
罗伯特·涅斯特罗伊

4
+1,用于将“ linux”用作动词(在最后一句话中)!
沃拉克

Answers:


20

Linux或任何其他操作系统都不知道RAM的工作方式。只要正确配置了内存控制器(例如,为非SRAM设置的刷新率),那么操作系统就不在乎它是否在纯动态内存(普通RAM),快速页面模式RAM(FP RAM)上运行(来自C64-ish)次),扩展数据输出模式RAM(EDO),同步RAM(SDRAM),双倍数据速率SDRAMS(DDR 1/2/3)中的任何一种。

所有这些都支持从随机位置进行读写。一切都会工作。

现在缓存有所不同。您无需写入即可更改内容。那会妨碍你的。尽管如此,它还是有用的。我知道coreboot在启动期间会在适当配置内存控制器之前将缓存用作一种内存。(有关详细信息,请查看FOSDEM 2011期间coreboot对话中的视频)。

因此从理论上讲,您可以使用它。

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

  1. 以正常的“廉价”方式构建事物。如果需要更高的速度,请添加几十台额外的计算机(所有计算机均具有“慢速”内存)
  2. 或以十几倍的价格构建一台计算机,而性能却大大低于十几倍。

除非在极少数情况下,否则最后一个都不明智。


6
许多CPU通过CPU的模型专用寄存器(MSR)支持“按RAM缓存”模式。还要注意,SRAM比DRAM消耗更多的功率,这也是设计因素。如果CPU的高速缓存足够大或内核足够小,则可以启用此RAM缓存模式,并使它完全在CPU的SRAM中执行。但是,您将有有限的RAM来运行程序等。因为AFAIK RAM缓存和普通模式无法同时工作。我对此可能是错的。即使这样做,这些天大多数CPU的速度也要归功于使用L2,L3缓存。
LawrenceC

@Hennes是Linux仅关心(映射的)内存地址吗?
Alvin Wong

SDRAM是同步D(动态)RAM,而SRAM是静态RAM。我不知道您打算在第一段中指的是哪一个,并且我没有代表来进行“琐碎的”编辑,但是也许您可以解决这个问题?除此之外,好的答案。
CVn

我不介意澄清,但我不确定您想澄清什么。您可以在评论中添加它吗,我将对其进行编辑。
Hennes

当我第一次阅读此评论时,我看到“ Linux或任何其他OS死于RAM的工作方式。” 您的故障很不错:我认为我并不幻想这会“更好”。我只是想知道是否可以做到。
Ziggy 2013年

8

是的,您可以,实际上这是自动完成的过程。RAM中最常用的部分被复制到缓存中。如果您的总RAM使用量小于您的缓存大小(如您假设的那样),则现有的缓存机制将复制RAM中的所有内容。

然后将缓存复制回普通RAM的唯一时间是PC进入S3睡眠模式。这是必需的,因为在S3模式下关闭了高速缓存。


1
并非所有可以/将要复制。对于Intel / x86高速缓存结构:如果我具有256KiB高速缓存和1024KiB高速缓存,我可以读取地址0。它将存储在高速缓存中的位置0。然后,我可以读取地址1,并将其存储在高速缓存中的位置1。但是,如果我从(256Kib + 1)中读取了地址,该地址也将存储在缓存中的地址1处。高速缓存使用一个额外的(标签)SRAM来指示存储了两者中的哪一个。这意味着从高速缓存大小的倍数读取将无法正常工作。(请注意,这将是一件罕见的事情,通常可以忽略)。
Hennes

这是有见地的!当我可以让一群天才确定要执行的最佳操作并编写CPU来执行该最佳操作时,为什么我会笨拙地将我认为重要的内容填充到L3缓存中。对?
Ziggy 2013年

3

许多CPU允许将缓存用作RAM。例如,大多数较新的x86 CPU可以将某些区域配置为回写,而通过MTRR读取时不填充。这可以用来将地址空间的一个区域有效地指定为cache-as-ram。

这是否有好处是另一个问题-它将内核锁定在RAM中,但同时会减小缓存的有效大小。可能还会有副作用(例如必须为系统的其余部分禁用缓存),这会使此过程变慢得多。


2

“我们可以在L3缓存中运行linux吗?”

,这是不可能的,因为未直接/线性寻址高速缓存。
由于缓存存储器的设计方式,CPU程序计数器(IP)注册表无法指向缓存存储器中的某个位置。

CPU缓存具有自己的“关联性”,这种关联性定义了“正常”内存“映射”到缓存的方式。高速缓存的这一功能是高速缓存如此之快的原因之一。


1

“我们可以在L3缓存中运行linux吗?”

不,缓存是一项专门的工作,用于保存程序数据和指令,以备处理器需要时使用。无论如何,您会在缓存中找到操作系统,因为它一直在使用。将所有操作系统加载到缓存中效率不高,因为您没有一次使用内核中的每个代码路径。

“我们可以在SRAM中运行Linux吗?”

当然,您可以将电池支持的SRAM用作启动分区,然后可以在适当位置使用内嵌的execute标志。这可能导致更快的启动时间和稍快的操作。但是,一个主要因素是L3高速缓存和内核所在位置(引导驱动器或RAM)之间的带宽。

“有没有更快的东西?我们能以多快的速度!!”

通常,硬件制造商和操作系统开发人员正在努力使处理速度尽可能快。但是,您的问题很笼统,您想加快启动时间,优化文件系统访问,加快计算速度还是其他?一旦遇到更具体的问题,您当然可以开始查找瓶颈并将其删除。您的SRAM驱动器肯定会加快启动过程。在3秒钟内进入GUI将会非常酷。


1

早在486年代,曾经有一些机器的所有RAM都是SRAM。当8MB很大时又回来了,但似乎符合您的限制。我敢肯定,现在8MB的SRAM比以前便宜很多。

因此,如果采用这种方式制造计算机,则可以在SRAM中运行Linux。这不是理论上的;已经完成了。

但是,不在缓存中。缓存的连接方式不同,更重要的是寻址方式也不同。您不能以同样的方式解决。块以不同的方式映射,而不是连续的块。而且内容不一定是您在磁盘上看到的-较新的Intel芯片会及时进行“编译”(更多是CISC => RISC-micro-op re-encoding),其中微型操作就是这样最终在缓存中。简而言之,缓存中的内容不是您的程序,而是更改后的视图,因此您不能再将其用作程序的内存表示形式。

问题是为什么。除了“因为我可以”以外,没有很多原因。高速缓存系统以更少的成本为您带来了大部分的速度优势。请记住,成本不仅仅是美元。...SRAM需要更多的晶体管,这意味着更多的电力。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.