CPU 是否可以仅使用电源和 ROM,仅使用内部缓存作为 RAM 运行?

电器工程 微处理器 内存 缓存
2022-01-16 01:06:59

具有片上高速缓存 RAM 的 CPU(例如 Intel i3/i5/i7/Xeon)是否可以将其用作其唯一的功能性 RAM,而无需连接任何外部存储器组?

还是必须有外接RAM,不能单独访问或使用缓存?

现代台式机/服务器 CPU 的内部缓存 RAM 通常比 1990 年代的许多计算机在整个系统内存中的内存更多,因此应该有足够的内存来运行简单的代码。

在缓存存在之前的 CPU(例如 6502)将无法执行任何操作,因为内部 CPU RAM 仅占地址计数器和累加器的几个字节。

这不是运行任何类型的现代操作系统的问题,而是运行编程到自定义 ROM 中的简单代码,或者使用十六进制输入键盘手动输入的问题。

4个回答

请参阅这个关于 PC 启动顺序的极其详细的说明:http ://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

由于此时没有可用的 DRAM,因此代码最初在无堆栈环境中运行。大多数现代处理器都有一个内部缓存,可以配置为 RAM 以提供软件堆栈。开发人员在使用这种缓存即 RAM 功能时必须编写非常紧凑的代码,因为在引导序列的此时系统无法接受驱逐;没有记忆来保持连贯性。这就是为什么处理器在启动过程中以“No Evict Mode”(NEM)运行的原因,当它们在缓存作为 RAM 的基础上运行时。在 NEM 中,处理器中的高速缓存行未命中不会导致驱逐。使用可用的软件堆栈开发代码要容易得多,并且初始化代码通常会执行最小设置以使用堆栈,甚至在 DRAM 初始化之前。

您可以通过运行没有 RAM 的 PC 来观察这一点:它会发出一系列哔声。播放这些的程序是从 BIOS Flash ROM 运行的。

我也在一些 ARM 处理器上看到了这种行为。SoC 内部将有配置寄存器,允许您在启动序列的早期将缓存用作 RAM,以便运行查找、枚举和配置 DRAM 的程序。

通常,高速缓冲存储器是不可寻址的。程序不能有意地从中存储或检索数据。

虽然这并不能直接解决问题中指定的处理器系列,但下面的方案将适用于早期的 x86 处理器,因此,是的,可以在没有 RAM 或缓存​​的情况下运行,尽管这种方法需要一些创造性的编程技能。

早在 1980 年代,我就遇到了一种无线电接收器的设计,它可以解码在英国广播的MSF 时间信号。本设计使用 Z80 处理器,只有一个 ROM 用于程序存储。所有处理和数据存储都是使用处理器内的内部寄存器执行的。这显然意味着不可能有子程序调用,因为有可用的内存来保存堆栈。

那时 RAM 的成本很高,因为这是一个爱好项目,所以降低成本很重要,除了它是一项有趣的学术活动。这也是在广泛使用的微控制器时代之前(带有 eprom 的 8751 成本超过 100 英镑 IIRC)。

通常,CPU 需要外部时钟。但是,是的,它可以。