我研究了一些关于内存合并的论文和书籍,但是,我仍然对是否合并虚拟地址的内存请求或者物理地址的内存请求感到困惑会合并吗?
由于内存合并意图减少对内存设备的内存访问,因此可以减少延迟。并且该过程通常由MMU(存储器管理单元)实现。但是我没有发现任何明确的断言说它用虚拟或物理地址合并内存请求。但考虑到其目的,虚拟地址在转换为物理地址后可能不相邻。所以,我猜它指的是物理地址。
有人熟悉这个领域吗?在此先感谢!!!
答案 0 :(得分:0)
为了合并,地址必须本地关闭(读取:彼此相邻 1 )在主存储器中,所以他们必须是物理地址。
然而,在大多数体系结构中,只要没有越过页边界 2 ,连续虚拟地址也是连续的物理地址。
当跨越页面边界时,无法保证物理地址是连续的,甚至硬件也不支持合并。
虽然每个架构都是独一无二的,但从这个意义上讲,你的问题没有一般的答案,内存合并是负责与内存通信的单元的一个特性。 因此,它发生在比MMU操作更低的级别,并且对于它们是透明的。
1 不同的存储器架构具有“后续”或“关闭”地址的不同概念。
2 在页面大小为4KiB且线程访问 0ffeh , 0fffh , 1000h 和 1001h 跨越页面边界的系统中在 0fffh 和 1000h 之间,因为这两个地址属于不同的页面。但是 00feh , 00ffh , 0100h , 0101h 始终是连续的,无论映射如何。