V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhangzzzzz
V2EX  ›  问与答

C 语言中使用 volalite 关键字能否从 cpu 缓存中读值

  •  
  •   zhangzzzzz · 2017-11-28 23:13:21 +08:00 · 1433 次点击
    这是一个创建于 2541 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前一直记得 volatile 关键字能避免编译器优化,每次都从内存中取值。 但今天看到段代码定义了一个数组

    volatile unsigned char data[L1CACHE_SIZE + CACHELINE_SIZE];
    for(int i = 0; i < sizeof(data); i += CACHELINE_SIZE)
    

    L1CACHE SIZE 为一级缓存大小,注释中说这样声明是为了保证每次遍历都会从二级缓存中读值

    leavic
        1
    leavic  
       2017-11-29 07:04:03 +08:00 via iPhone
    我怀疑一二级缓存的映射地址根本就不开放给用户
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 02:17 · PVG 10:17 · LAX 18:17 · JFK 21:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.