【发布时间】:2019-01-19 15:12:34
【问题描述】:
当我们处理数组时,例如,分配 a[10000] = 3,它所做的就是首先将 10000 * sizeof(int) 加到 a 的内存地址,然后访问该内存地址。问题是,为什么访问这样的内存地址只需要 O(1) 时间?基本上,随机存取存储器背后的魔力是什么,它需要相同的时间访问地址#1 和地址#1,000,000?
【问题讨论】:
-
我认为这与 RAM 只是一堆晶体管/电容器而不是磁带有关。电信号的传播速度非常快。
-
访问(寻址)任意存储单元只需要相同的时间。这是由于技术设计造成的,并且对于不同的存储介质(如磁盘、磁性硬盘驱动器等)有所不同
-
这对于(基于 SRAM 的)缓存来说或多或少是正确的,因为它是硬件实现的,但对于现代 (D)RAM 则不然,因为它很慢,因此需要大量缓存。然后,内存访问取决于当前在缓存中的内容以及不在缓存中的内容以及您的内存访问模式(
标签: ram