现代 x86 处理器至少有 512K 的二级缓存。有些应用程序完全适合这个内存量。你能在没有附加 RAM 的情况下运行这些芯片吗?如果是这样,有没有办法在 CPU 尝试保持 RAM 一致性时消除写回时间损失?
我没有想到特定的应用程序,这只是闲置的好奇心。我敢肯定,在某个地方有一个利基应用程序,虽然这会很有用。
现代 x86 处理器至少有 512K 的二级缓存。有些应用程序完全适合这个内存量。你能在没有附加 RAM 的情况下运行这些芯片吗?如果是这样,有没有办法在 CPU 尝试保持 RAM 一致性时消除写回时间损失?
我没有想到特定的应用程序,这只是闲置的好奇心。我敢肯定,在某个地方有一个利基应用程序,虽然这会很有用。
是的你可以。通过从连续(不存在的)物理内存位置伪造读取,您可以在缓存中设置标签。然后关闭缓存线的进一步填充并输入回写,从而限制对缓存的读/写,它将表现为普通 RAM。
一些 bios 替代项目这样做是因为您可以在芯片组和芯片组内存控制器设置上花费更多代码,例如,您可以用 C 编写它。
这种做法广泛用于嵌入式 CPU 以及处理引导加载程序。将缓存转换为类似 RAM 模式的方法略有不同。
有关简短的低级介绍,您可以查看此演示文稿。
请注意,正如其他人指出的那样,您显然仍然需要从某个地方加载引导代码。
当 CPU 退出复位时,缓存将关闭。BIOS 是最初配置和清除缓存的内容。所以不,你不能在没有 RAM 的情况下运行它,因为一开始就没有 RAM 来启动它。
我不知道这有多准确,但这些是我的想法:
我不认为有任何方法可以让您以编程方式访问缓存。您无法保证从一条指令到下一条指令缓存中的内容以及缓存的位置,因此即使您可以直接访问它,也无法可靠地将其用作 RAM。
你可以在没有 RAM 的情况下运行 x86,但你不能让它变得非常有用。您将仅限于纯粹使用内部寄存器进行数据存储。