相关疑难解决方法(0)

如何强制cpu内核刷新c中的存储缓冲区?

我有一个具有2个线程的应用程序,与内核1关联的线程A和与内核2关联的线程B,内核1和内核2在同一x86套接字中。

线程A忙于整数x的旋转,线程B在某些情况下会增加x,当线程B决定增加x时,它将使x所在的缓存行无效,并根据x86 MESI协议,它将新的x存储到存储缓冲区在core2收到无效ack之前,然后在core2收到无效ack之后,core2刷新存储缓冲区。

我想知道,在core2收到无效ack之后,core2刷新是否立即存储缓冲区?我是否有可能迫使cpu用C语言执行刷新存储缓冲区?因为在我的情况下,core1旋转x的线程A应该尽早获得x新值。

c multithreading cpu-architecture

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

有什么方法可以为Intel CPU直接核心间通信代​​码编写代码?

我想将线程ping通到两个CPU插槽中的所有内核,并在线程之间写入通信而无需回写DRAM。

如果仅在一个插槽中使用内核,则写回高速缓存对我的吞吐量就可以了,但是对于两个插槽,我想知道是否有更快的速度,例如片上网络或Intel QuickPath Interconnect?

此外,是否有任何简单的方法可以利用这种功能而无需直接编写汇编代码?

参考:https : //software.intel.com/zh-cn/forums/intel-moderncode-for-parallel-architectures/topic/700477

cpu x86 assembly intel cpu-architecture

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

标签 统计

cpu-architecture ×2

assembly ×1

c ×1

cpu ×1

intel ×1

multithreading ×1

x86 ×1