Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >易失性限定符是否取消此内存的缓存?

易失性限定符是否取消此内存的缓存?
EN

Stack Overflow用户
提问于 2013-08-31 09:16:59
回答 1查看 4.9K关注 0票数 13

在本文中:http://www.drdobbs.com/parallel/volatile-vs-volatile/212701484?pgno=2说,我们不能对volatile进行任何优化,即使是(其中:volatile int& v = *(address);):

代码语言:javascript
代码运行次数:0
复制
v = 1;                // C: write to v
local = v;            // D: read from v

无法对此进行优化:

代码语言:javascript
代码运行次数:0
复制
v = 1;                // C: write to v
local = 1;            // D: read from v  // but it can be done for std::atomic<>

这是不可能的,因为在第1行和第2行之间,v值可以由硬件设备(而不是不能工作缓存一致性的CPU :网络适配器、GPU、FPGA等)(序列/并发)来改变,后者映射到这个内存位置。但是,只有当v不能在CPU缓存L1/2/3中缓存时才有意义,因为对于通常(非volatile)在第1行和第2行之间的变量来说,时间太短,很可能触发缓存。

volatile限定符是否保证不缓存此内存位置?

答案:

  1. 不,volatile 并不保证这个内存位置没有缓存,而且在C/C++标准或编译手册中也没有关于这一点的任何内容。
  2. 使用内存映射区域,当内存从设备内存映射到CPU内存时,内存已经标记为WC。 (写组合)代替WB,取消缓存。和不需要做缓存刷新.
  3. 相反,如果CPU内存映射到设备内存,那么顺便提一句,位于CPU晶体上的控制器PCIE正在窥探从该设备中通过DMA的数据,并更新(无效) CPU-cache L3。在这种情况下,如果设备上使用 volatile的可执行代码尝试执行相同的两行,它还会取消设备的高速缓存内存(例如,在缓存GPU-L2中)。和不需要进行GPU缓存刷新,也不需要进行CPU缓存刷新。。另外,对于CPU,可能需要使用std::atomic_thread_fence(std::memory_order_seq_cst); 如果l3-缓存(LLC)与DMA在PCIE上的一致性,但L1/L2不是。。对于nVidia数据自动化系统,我们可以使用:void __threadfence_system();
  4. 当发送未对齐的数据:)时,我们需要刷新DMA-控制器缓存
  5. 此外,我们还可以标记任何内存区域,如WC-通过MTRR寄存器自己标记。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-31 09:21:39

volatile确保变量不会在CPU寄存器中被“缓存”。CPU缓存对程序员是透明的,如果另一个CPU写入由另一个CPU的缓存映射的内存,则第二个CPU的缓存将失效,因此在下一次访问期间它将再次从内存中重新加载该值。

关于缓存一致性的一些事情

至于外部内存写入(通过DMA或另一个与CPU无关的通道),您可能需要手动刷新缓存(请参阅所以的问题)。

C标准第6.7.3节7:

构成对具有易失性限定类型的对象的访问的是实现定义的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18550784

复制
相关文章
非易失性内存技术及数据库
“2013年开始这个项目的研究,当时不确定非易失性内存技术是否可商用。2019年Intel商用了NVM产品,NVM对下一代数据库系统的影响吸引了广大研究者”--Joy Arulraj和Andrew Pavlo。
yzsDBA
2020/05/17
1.8K0
非易失性内存技术及数据库
非易失性内存技术及数据库
“2013年开始这个项目的研究,当时不确定非易失性内存技术是否可商用。2019年Intel商用了NVM产品,NVM对下一代数据库系统的影响吸引了广大研究者”--Joy Arulraj和Andrew Pavlo。
yzsDBA
2020/10/28
7740
非易失性WAL buffer
今天看到PG邮件列表里有非易失性内存在PG应用的讨论,做下记录,接着学习其补丁,如何将WAL buffer改造成非易失性buffer,以及和之前有和区别。该补丁是也是日本NTT公司提供。
yzsDBA
2020/10/28
7410
非易失性WAL buffer
今天看到PG邮件列表里有非易失性内存在PG应用的讨论,做下记录,接着学习其补丁,如何将WAL buffer改造成非易失性buffer,以及和之前有和区别。该补丁是也是日本NTT公司提供。 一、原文
yzsDBA
2020/01/30
5620
非易失性WAL buffer
管理数据库系统中的非易失性内存
Managing Non-Volatile Memory in Database Systems
yzsDBA
2020/07/22
1.2K0
管理数据库系统中的非易失性内存
论文赏析:极致性价比,非易失性内存在向量检索的应用
HM-ANN: Efficient Billion-Point Nearest Neighbor Search on Heterogenous Memory 是一篇被 2020 年 Conference on Neural Information Processing Systems (NeurIPS 2020). 本文提出了一种基于图的相似性搜索的新型算法,称为 HM-ANN。
Zilliz RDS
2021/08/20
7340
非易失性存储一览
RAM:随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。 内存速度非常快,但是同时也有一个特性就是易失性,当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。 硬盘虽然非易失性,但是速度非常慢。所以硬盘和内存之间就有非常多的非易失性存储,一直在发展。今天简单梳理下常见的: SSD
大数据和云计算技术
2018/03/08
2K0
非易失性存储一览
非易失性WAL buffer实现解析(四)
本文接着介绍checkpoint对WAL BUFFER的改造。改造函数CreateCheckPoint函数。
yzsDBA
2020/10/28
3610
非易失性WAL buffer实现解析(四)
非易失性WAL buffer实现解析(一)
前文简要介绍了非易失性WAL buffer的PostgreSQL email,本文开始主要介绍其实现机制。
yzsDBA
2020/10/28
5560
非易失性WAL buffer实现解析(一)
非易失性WAL buffer实现解析(五)
2)ControlFile->discardedUpTo为新增加的变量,表示这个节点之前的WAL段文件可以回收了,这个位点以WAL段文件大小为单位。
yzsDBA
2020/10/28
4570
非易失性WAL buffer实现解析(五)
非易失性WAL buffer实现解析(三)
本文接上文介绍函数WaitForWALToBecomeAvailable打开WAL日志文件并切换日志源的实现。该函数不涉及关于NVM WAL BUFFER的修改。
yzsDBA
2020/10/28
4900
非易失性WAL buffer实现解析(三)
非易失性WAL buffer实现解析(二)
1、XLogInsert函数改造:将日志写入NVM,此时不确定CPU CACHE何时刷以及顺序
yzsDBA
2020/10/28
3430
非易失性WAL buffer实现解析(二)
非易失性WAL buffer实现解析(六)
本文接上文接着介绍PreallocNonVolatileXlogBuffer的实现。
yzsDBA
2020/10/28
3820
非易失性WAL buffer实现解析(六)
Excel VBA解读(142): 易失性函数和函数参数
通常,Excel的智能重新计算引擎仅重新计算已更改/输入的公式,或者取决于已在公式的更高层级引用链某处发生更改的单元格或公式。
fanjy
2019/07/19
2.5K0
单条512GB!Intel 开始部署傲腾非易失性内存条
10 月 31 日消息,Intel 宣布,已经为广泛部署傲腾数据中心用、非易失性内存条(Optane DC persistent memory)做好了准备。
Debian中国
2018/12/21
7240
NVM (非易失型存储-持久性内存) 编程模型与访问模式; PMDK 架构
https://pmem.io/glossary/#programming-model
西湖醋鱼
2021/07/08
8920
volatile相关知识
的易失性的关键字是类型限定符防止从编译器optimization.According至C标准的对象,具有挥发性限定类型可以以实施方式未知进行修改或具有其他未知侧effects.You也可以说,一个对象可以随时更改volatile限定对象的值,而不需要代码执行任何操作。
用户4645519
2020/09/08
6090
常见的非易失存储器简介
非易失存储器(Non-Volatile Memory,NVM)是一种能够在断电后保持存储数据的计算机存储器。
用户10524139
2023/04/22
2K0
非易失性数据库系统存储与恢复方法
非易失性内存的出现从根本上改变了数据库管理系统的内存和持久存储的架构。这些新型NVM设备具有堪比DRAM的速度,但是写到NVM设备后这些数据就具备了持久性。因为现现有的数据库管理系统基于内存是易失的这样的条件下,所以并不能充分利用这项技术。通过NVM,传统数据库管理系统的很多部件都将变得不再必要,并且会降低数据库的性能。
yzsDBA
2020/07/20
1.4K0
非易失性数据库系统存储与恢复方法
点击加载更多

相似问题

const易失性限定符的丢失

11

易失性和缓存行为

10

易失性是否会影响非易失性变量?

46

此并发遗留代码是否需要易失性?

12

C易失性内存模型

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文