我可以直接在处理器缓存中存储数据吗?

时间:2011-12-13 17:26:21

标签: caching memory assembly

我想知道是否有办法将数据直接存储在处理器的数据缓存中,而不是存储在主存储器中。我知道缓存的工作方式是存储最常用的数据,但是,有一个汇编指令告诉处理器是有意义的,这将是一个经常使用的数据。 我使用的是IA-32汇编语言。

谢谢!

2 个答案:

答案 0 :(得分:2)

不,您无法直接在程序集级别访问缓存。因为缓存在处理器中是“隐藏”的(L1和L2),可能根本就没有缓存。

答案 1 :(得分:2)

根据体系结构,有预取提示可将数据直接移动到缓存中。对于ia32,这是prefetch指令,它可以将数据移动到L1,L2。

另一方面,有一些指令告诉处理器避免使用缓存,例如moventdq,它直接从/向内存移动数据。

编辑:此外还有指令为特定类型的缓存算法设置内存范围,如回写,直写,写入组合或无法访问。请参阅http://en.wikipedia.org/wiki/Memory_type_range_register