Caching 有没有办法强制变量在x86(/_64)中保持高速缓存?

Caching 有没有办法强制变量在x86(/_64)中保持高速缓存?,caching,x86,x86-64,Caching,X86,X86 64,使用Blackfin处理器,我可以在gcc中声明一个具有“l1_数据”属性的变量,该变量将保留在l1数据SRAM中。在x86或x86_64上有这样做的方法吗?没有。允许这样的事情是没有意义的,原因有三: 考虑到现代x86的二级/三级缓存的大小(和关联性),一个有意义的变量很可能大部分都留在缓存中 允许这样的选项将使缓存结构更加复杂(因为它必须支持“固定”内存) 它与线程之间的交互不好。如果线程发生更改,会发生什么情况,这或多或少会导致缓存刷新。如果变量保留在缓存中,这将允许一个程序完全阻止缓存,

使用Blackfin处理器,我可以在gcc中声明一个具有“l1_数据”属性的变量,该变量将保留在l1数据SRAM中。在x86或x86_64上有这样做的方法吗?

没有。允许这样的事情是没有意义的,原因有三:

  • 考虑到现代x86的二级/三级缓存的大小(和关联性),一个有意义的变量很可能大部分都留在缓存中
  • 允许这样的选项将使缓存结构更加复杂(因为它必须支持“固定”内存)
  • 它与线程之间的交互不好。如果线程发生更改,会发生什么情况,这或多或少会导致缓存刷新。如果变量保留在缓存中,这将允许一个程序完全阻止缓存,而缓存不会正常运行。否则,此选项的意义何在
  • 虽然我不知道Blackfin处理器,但快速搜索表明L1并不是完全组织为缓存,而是由一部分缓存和一部分显式可寻址内存组成。因此在这种情况下,属性很可能会在显式可寻址药剂中创建变量,这比固定一些变量更有意义这些处理器可能没有典型的fesktop cpu那么多运行线程,所以这是有道理的