小编Sev*_*ves的帖子

如果条件在C/C++中成立,如何以原子方式设置值?

a = b如果条件c成立,我需要自动分配,如果条件不成立,则不分配.有没有办法在C/C++中做到这一点?

澄清:我的意思是原子地"测试和分配",而不是"原子分配".

c++ atomic compare-and-swap c++11

3
推荐指数
1
解决办法
1273
查看次数

x86-64:缓存加载和逐出指令

对于x86-64架构,是否有一条指令可以将给定内存地址的数据加载到缓存中?类似地,是否存在可以在给定与该高速缓存行对应的存储器地址(或类似高速缓存行标识符)的情况下逐出高速缓存行的指令?

x86 assembly x86-64

2
推荐指数
1
解决办法
1478
查看次数

预取指令行为

为了满足某些安全属性,我想确保一个重要数据在语句访问时已经在缓存中(因此不会有缓存未命中).例如,对于此代码

...
a += 2;
...
Run Code Online (Sandbox Code Playgroud)

我想确保aa += 2执行之前就在缓存中.

我正在考虑使用PREFETCHhx86 的指令来实现这个目的:

...
__prefetch(&a);     /* pseudocode */
a += 2;
...
Run Code Online (Sandbox Code Playgroud)

但是,我已经读过,之前插入预取指令a += 2可能为时已晚,无法确保aa += 2执行时是否在缓存中.这个说法是真的吗?如果是,我可以通过CPUID在预取之后插入指令来修复它,以确保执行了prefectch指令(因为英特尔手册中说明了相关PREFETCHh的命令CPUID)?

x86 assembly caching prefetch

0
推荐指数
1
解决办法
708
查看次数

标签 统计

assembly ×2

x86 ×2

atomic ×1

c++ ×1

c++11 ×1

caching ×1

compare-and-swap ×1

prefetch ×1

x86-64 ×1