我正在读CPU 获取时间,我发现与访问硬盘相比,CPU 从 RAM 访问数据所需的时间要少得多,并且 RAM 用于存储执行程序的信息和数据。
那么我想知道当我们只使用硬盘而没有使用RAM时会发生什么?
答案1
在某种程度上,这涉及到什么才算“RAM”的问题。许多 CPU 和微控制器都具有足够的片上内存来运行小型操作系统,而无需连接单独的 RAM 芯片。事实上,这在嵌入式系统领域实际上相对常见。因此,如果您只是指不连接任何单独的 RAM 芯片,那么是的,您可以使用许多当前芯片做到这一点,尤其是那些为嵌入式世界设计的芯片。我自己在工作中就这样做过。但是,由于可寻址片上内存和单独的 RAM 芯片之间唯一真正的区别只是位置(显然还有延迟),因此将片上内存本身视为 RAM 是完全合理的。如果您将其算作 RAM,那么当前现实世界中实际运行而不需要 RAM 的处理器数量将大大减少。
如果您指的是普通 PC,那么,您无法在没有连接单独的 RAM 条的情况下运行它,但这只是因为 BIOS 设计为不会在未安装 RAM 的情况下尝试启动(这反过来又是因为所有现代 PC 操作系统都需要 RAM 才能运行,特别是因为 x86 机器通常不允许您直接寻址片上内存;它仅用作缓存。)
最后,正如 Zeiss 所说,没有任何理论理由说你不能设计一台完全没有 RAM 的计算机,除了几个寄存器。RAM 的存在仅仅是因为它比片上内存便宜,而且比磁盘快得多。现代计算机有一个内存层次结构,从大但慢到非常快但小。正常的层次结构是这样的:
- 寄存器 - 非常快(可以直接由 CPU 指令操作,通常没有额外的延迟),但通常非常小(例如,64 位 x86 处理器内核只有 16 个通用寄存器,每个寄存器可以存储一个 64 位数字。)寄存器大小通常很小,因为寄存器每个字节的成本非常高。
- CPU 缓存 - 仍然非常快(通常 1-2 个周期延迟)并且比寄存器大得多,但仍然比普通 DRAM 小得多(也快得多)。CPU 缓存的每字节成本也比 DRAM 高得多,这就是为什么它通常要小得多。此外,许多 CPU 实际上甚至在缓存中都有层次结构。它们通常具有较小、较快的缓存(L1 和 L2),以及较大且较慢的缓存(L3)。
- DRAM(大多数人认为是“RAM”) - 比缓存慢得多(访问延迟往往是几十到几百个时钟周期),但每字节便宜得多,因此通常比缓存大得多。然而,DRAM 仍然比磁盘访问快很多倍(通常快几百到几千倍)。
- 磁盘 - 同样,磁盘比 DRAM 慢得多,但通常每字节更便宜,因此容量更大。此外,磁盘通常是非易失性的,这意味着即使在进程终止后(以及计算机重新启动后),它们也可以保存数据。
请注意,内存层次结构的全部原因都是出于经济原因。没有任何理论原因(至少在计算机科学领域)可以解释为什么我们不能在 CPU 芯片上拥有 1TB 的非易失性寄存器。问题是,构建它非常困难且成本高昂。拥有从少量非常昂贵的内存到大量廉价内存的层次结构使我们能够以合理的成本保持快速的速度。
答案2
这将是理论上可以设计一台只使用很少(几个寄存器的价值)或没有 RAM 的计算机(查找图灵机的定义 - 它实际上可以在康威生命模拟的适当大/快速的实现中构建)。
所有现实世界的计算机都使用 RAM 的原因首先是历史性的:核心存储器(RAM 的原型,只是半易失性的)远远早于磁鼓或磁盘等大容量存储器(尽管它确实在穿孔卡和纸带之后出现——前者的原始形式可以追溯到1801(是的,19 世纪初;提花织机使用穿孔卡自动编织任意复杂程度的彩色图案,比巴贝奇差分机或霍尔瑞斯制表机出现还要早几十年);其次,RAM(如核心存储器)是电子的,比任何依赖存储介质的物理运动将数据呈现给读/写机制的设备都要快得多。
一个系统或类似复杂度的现代 Windows 或 Linux 计算机在没有 RAM 的情况下运行(类似于真正的图灵机),需要几天才能启动,并需要几个小时才能更新现代分辨率的图形界面屏幕。即使是与 CP/M 或早期版本的 DOS 相当的纯文本操作系统也需要很长时间到达初始命令提示符。
答案3
可以,因为当 x86 CPU 启动时,L2 缓存最初是 SRAM,然后才用作缓存。因此,您可以编写自己的 bios,以便不初始化 RAM,只使用 CPU 内部的少量 SRAM 作为 RAM,而不是 L2/L3 缓存。
只需阅读 CPU 制造商提供的 BIOS 指南。
答案4
个人电脑需要运行内存。每个从硬盘启动的应用程序在执行前都会先复制到内存中。
因此,如果您的计算机中没有任何 RAM,您的计算机将无法启动,可能会发出几声警告蜂鸣声,让您知道没有安装任何 RAM。