编写一个程序并尝试比较(如果可以的话测量)从主存和缓存访问数据的时间。
如果可以的话,那么如何衡量每一级缓存的速度呢?
您需要想出一个启发式方法,强制 100%(或非常接近)缓存未命中(希望您有缓存失效操作码?)和 100% 缓存命中。万岁,这适用于 1 级缓存。现在,如何对 2 级和 3 级执行相同操作?
严肃地说,如果没有特殊的硬件和连接到 CPU 和内存的跟踪,可能没有办法 100% 可靠地做到这一点,但我会这样做:
将“一堆”内容写入内存中的 1 个位置 - 足以让您可以确定它一致地命中 L1 缓存并记录时间(这会影响您的缓存,因此要小心)。您应该在没有分支的情况下执行这组写入,以尝试消除分支预测的不一致。那是最好的时光。现在,每隔一段时间,将缓存行的数据写入 RAM 中已知位置末尾的随机远位置,并记录新时间。希望这需要更长的时间。继续记录不同的时间,希望你会看到一些倾向于组合在一起的时间。这些组中的每一个都“可以”显示 L2、L3 的时序和内存访问时序。问题是有太多其他的东西阻碍了。操作系统可能会切换你的上下文并破坏你的缓存。休息期间可能会出现中断。会有很多东西可能会破坏价值观。但是,希望您能从数据中获得足够的信号来看看它是否有效。
在更简单的嵌入式类型系统上,这可能会更容易做到,其中操作系统(如果有)不会妨碍您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)