如何将来自CPU的32位内存地址映射到C中的本地内存



因此,我使用Queues在较小级别上实现了缓存,并且我有一个跟踪文件,该文件以CPU生成的方式生成读写流,例如读取位置0x20000064(32位地址(。在我的main.c中,我实现了一个全局内存,使用特定维度的数组来模拟RAM内存的行为。然而,问题是,我正在解码32位地址,该地址访问内存以获得高速缓存的标记和偏移位,而数组地址索引从0开始到1023,例如int array[1024]。我如何将32位地址映射到地址,就像我希望索引从20000000开始,直到30000000,而不是从0到10000000。有些类似于哈希表。

如果我能正确理解您要做的事情,那么您将希望利用大多数内存地址未使用的事实。现代处理器上的地址空间是巨大的,但我怀疑您将用于应用程序的测试数据是否会使用其中的一小部分。也许您可以先了解页面大小(例如4096字节(,然后创建每个页面的基地址的哈希值,将其存储到该页面的存储阵列中。然后,当您需要查找地址时,您可以使用"address address%page_size"计算页面基址,在页面哈希中查找数组,然后您想要的值位于该数组中的"(address%page_size("。从你的问题中很难说出你想要什么,但我希望这个建议能给你一些帮助。

最新更新