1

我刚刚在 Minecraft(使用红石)中制作了一个简单的 RAM 内存,地址为 4 位,每个单元格中存储 4 位。我们的下一个目标是在其中存储不同类型的变量并以不同的方式处理它们。

我们不是工程师,所以我们真的不知道,但我们做了一些相当复杂的事情,我们认为我们可以做到。问题是我们无法弄清楚如何存储可以存储在单个单元格中的更多位变量。我举个例子。

考虑一个 16 位变量。我们认为创建大单元没有任何意义,因此我们决定在每个单元中存储 4 位的数据。但这还不够,我们必须关联这 4 个单元格。所以我们认为我们必须创建 8 位单元,具有 4 位内容和 4 位来存储变量的下一个 4 位存储的地址。但是,4 位地址对于 RAM 来说不算什么,我们不能在那里存储任何内容。所以我们需要至少 8 位的地址。4bits的内容似乎也很低,而且我们还需要至少其他4bits来存储变量的类型。

好吧,最后我们认为这种技术是荒谬的,在现实生活中不可能这样做。而且我们现在不知道该怎么做。我在网上搜索了 RAM 的工作原理,但我发现少数几个对于我们的需求来说太复杂了。

有人可以解释一下这在现实生活中是如何完成的吗?

4

1 回答 1

2

嘿,您正在玩​​指责游戏,试图将内存管理的所有责任都归咎于物理 RAM 实现。

事实上,RAM 只是一个存储设备(你的红石图块),实际上在其中存储数据是你的程序的责任。换句话说,不需要为 RAM 制定标准化的内存单元“链接”策略,因为是您的程序写入它然后再读回它,因此它知道自己的常见做法。

考虑到这一点,存储值很容易。假设您想要一个 16 位整数存储在 4 位/字 RAM 中(即 4 个字的数据)。只需将地址 0 到 4 称为变量即可。不需要“链接”,因为你们都知道如何从中读取和写入,而且您不会踩到自己的脚趾(理论上)。

扩展构造的其他想法:专用注册表的特殊位置(使用堆栈进行递归计算的堆栈指针,图灵机的程序指针等)。我还有一个,但我写的时候忘记了,如果我记得它,我会编辑..

于 2012-10-25T16:41:01.833 回答