我想知道是否有办法将数据直接存储在处理器的数据缓存中,而不是存储在主存储器中。我知道缓存的工作方式是存储最常用的数据,但是,有一个汇编指令告诉处理器是有意义的,这将是一个经常使用的数据。 我使用的是IA-32汇编语言。
谢谢!
答案 0 :(得分:2)
不,您无法直接在程序集级别访问缓存。因为缓存在处理器中是“隐藏”的(L1和L2),可能根本就没有缓存。
答案 1 :(得分:2)
根据体系结构,有预取提示可将数据直接移动到缓存中。对于ia32,这是prefetch
指令,它可以将数据移动到L1,L2。
另一方面,有一些指令告诉处理器避免使用缓存,例如moventdq
,它直接从/向内存移动数据。
编辑:此外还有指令为特定类型的缓存算法设置内存范围,如回写,直写,写入组合或无法访问。请参阅http://en.wikipedia.org/wiki/Memory_type_range_register。