gpt4 book ai didi

c - 在内存映射设备的情况下使用 volatile ?

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:56 25 4
gpt4 key购买 nike

以下链接表示“对设备寄存器的访问始终未缓存”

http://techpubs.sgi.com/library/dynaweb_docs/hdwr/SGI_Developer/books/DevDrvrO2_PG/sgi_html/ch01.html

我的问题是,在访问内存映射的设备寄存器时,我们是否需要 volatile?

最佳答案

这里的混淆来自于两种机制,它们在目标上有相似之处,但在机制和实现级别上却截然不同。

该链接指的是内存映射 I/O 区域被配置为不符合硬件缓存条件的快速中间内存,与访问较慢的主内存组相比,该内存用于加速操作。这在传统上对软件几乎是透明的(异常(exception)情况是在具有不同指令和数据缓存的机器上修改代码)。

相比之下,volatile 用于禁止优化编译器执行“软件”缓存值,方法是将它们战略性地保存在寄存器中,延迟计算它们直到需要,或者如果不-可能从不计算它们需要。基本效果是通知编译器该值可能由对其分析不可见的机制产生或消耗 - 可以是当前处理器内核之外的硬件,也可以是不同的线程或执行上下文。

关于c - 在内存映射设备的情况下使用 volatile ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29102530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com