【发布时间】:2016-06-02 12:55:56
【问题描述】:
我正在我的大学学习计算机架构课程。我的缓存映射主题有点问题。
假设我有这样的代码
for (int i=0;i<8;i++)
for (int j=0;j<256;j++)
a[i*1024+j] = i+j
我的 RAM 大小是 64kb,缓存大小是 2kb,块大小是 256b。 第一步是找出我在缓存和 RAM 中有多少块。经过计算,我在 RAM 中得到 256 个块,在缓存中得到 8 个块。我为每种映射技术找到了缓存的地址格式(标签|索引|偏移):直接、关联和设置关联,我需要根据该代码找到未命中缓存并计算访问时间以找到更好的映射技术。在这里我卡住了,因为我需要查看 RAM 的内容和缓存的内容。
【问题讨论】:
-
我在这里没有看到任何关于虚拟地址的信息。高速缓存和虚拟寻址是独立的特性。其余的:没有足够的信息并且:问题是什么?
-
给出我需要计算未命中缓存和访问内存所需时间的代码。
-
这既不是编码,也不是咨询服务。见How to Ask。
-
给定此代码,您无法计算未命中缓存和访问内存的时间。
-
为什么不呢?该代码在每次迭代时都会生成一个数字序列。
标签: c++ c caching computer-science