在哪些应用程序中缓存没有任何优势?

use*_*282 2 embedded caching

我们的教授要求我们考虑嵌入式系统设计,其中缓存不能充分利用它们.我一直试图找到这样的设计,但还没找到.如果您知道这样的设计,可以提供一些提示吗?

Vla*_*hev 5

缓存利用事实数据(和代码)展示地点.

因此,不会显示位置的嵌入式系统不会从缓存中受益.

例:

嵌入式系统具有1MB内存和1kB缓存.如果这个嵌入式系统通过短跳转访问内存,它将在相同的1kB内存区域内保持很长时间,这可以成功缓存.如果这个嵌入式系统在这个1MB内的不同地方跳跃并经常这样做,那么就没有地方性,并且会严重地使用缓存.

另请注意,根据体系结构,您可以使用不同的数据和代码缓存,也可以使用单个缓存.

更具体的例子:

如果您的嵌入式系统花费大部分时间访问相同的数据并且(例如)以适合缓存的紧密循环运行,那么您将充分利用缓存.如果您的系统类似于将从任何内存范围中获取随机数据的数据库,则无法使用缓存来充分利用它.(因为应用程序没有展示数据/代码的位置.)

另一个,但奇怪的例子

有时,如果您正在构建安全关键或任务关键型系统,您将希望您的系统具有高度可预测性.缓存会使您的代码执行变得非常不可预测,因为您无法预测某个内存是否被缓存,因此您不知道访问此内存需要多长时间.因此,如果禁用缓存,它可以让您更精确地判断程序的性能并计算最坏情况的执行时间.这就是在这种系统中禁用缓存的常见原因.

  • 我想补充说1kB不必是连续的."......在这个1MB内的遥远的地方跳......"令人困惑.存储器位置之间的"距离"无关紧要.重要的是访问相同内存位置的频率. (2认同)