【发布时间】:2014-01-06 22:21:25
【问题描述】:
我们被告知 RAM 内存的抽象是一个长字节数组。对于 CPU 来说,访问它的任何部分都需要相同的时间。什么设备能够同时访问 4 GB(在我的计算机上)中的任何字节?因为这对我来说似乎不是一项微不足道的任务。
我问过同事和我的教授,但没有人能确定如何使用简单的逻辑门来完成这项任务,如果它不仅仅是逻辑门的复杂组合,那是什么?
我个人的猜测是,您可以以 O(log(n)) 的速度访问任何内存,其中 n 是内存的大小。因为每个门都会将内存一分为二,并将内存访问指令发送给下一个将内存一分为二的门。但这需要很多门。我想不出任何其他有根据的猜测,我什至不知道我应该在 Google 中查找的设备的名称。
请帮助我痛苦的好奇心,并在此先感谢。
编辑
引用您的“RAM 可以将地址为 X 的单元格中的值发送到某些输出引脚”,这是每个人(再次)跳过对我来说并非微不足道的事情的地方。在我看来,为了构建一个从 64 个引脚决定要获取 2^64 中的哪个字节的门,每个引脚需要将整个可能的内存范围分成两部分。如果索引 0 的位是 0 -> 那么地址在内存 0-2^64/2,否则地址在内存 2^64/2-2^64。依此类推,但是内存获取将通过的门数(让我们称之为)将是 64,(一个常数)。然而,所需的门数量是 N,其中 N 是内存字节数。
仅仅因为有 64 个引脚,并不意味着您仍然可以将其解码为 2^64 范围内的单个提取。 4GB内存是否在内存控制中带有4GB门???
现在这可以改进,因为随着我越来越多地阅读有关此内存如何架构的内容,如果将内存放入具有 sqrt(N) 行和 sqrt(N) 列的矩阵中,那么获取内存需要经过 O(log(sqrt(N)*2) 并且需要的门数量将是 2*sqrt(N),这要好得多,我认为它可能是商业秘密。
/编辑
【问题讨论】:
-
这个问题似乎跑题了,因为它是关于硬件架构的
-
什么是n?内存大小?
-
如果它跑题了,那么它跑题了?我不知道应该是什么话题,顺便说一句,这里的第一个问题。
-
@user3167049 请参阅help center 了解此处的主题。
-
实际上最好的渐近访问速度是
O(sqrt(n))。我们的宇宙是 3D 的,但最大信息密度与空间的表面积(而不是体积)成正比(参见 physics.stackexchange.com/questions/2281)。信息的传播速度不能超过光速。但在实践中,我们将所有这些问题都抛在脑后,并假设 RAM 是持续访问的,因为 (a) 它在实践中足够接近,并且 (b) 它仍然允许我们比较竞争算法的相对优点。
标签: memory ram computer-architecture