【问题标题】:How to map a 32 bit memory address coming from CPU to a local memory in C如何将来自CPU的32位内存地址映射到C中的本地内存
【发布时间】:2020-05-08 15:00:35
【问题描述】:

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

【问题讨论】:

    标签: c memory indexing hashmap


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 2016-05-05
      相关资源
      最近更新 更多