超级兄弟姐妹与非超级兄弟姐妹之间的生产者/消费者共享内存位置的延迟和吞吐量成本是多少?
单个进程中的两个不同线程可以通过读取和/或写入共享一个公共内存位置。
通常,这种(有意的)共享是使用原子操作通过lock
x86上的前缀来实现的,lock
前缀本身本身具有众所周知的成本(即无竞争成本),并且在实际共享高速缓存行时具有额外的一致性成本(正确或错误共享)。
在这里,我很感兴趣,产生的消费成本,其中单个线程P
写入到存储位置,而另一个线程`C从内存读取的位置,无论是使用普通的读取和写入。
在最近的x86内核上,在同一套接字的不同内核上执行此操作,以及在同一物理内核上的同级超线程上执行操作时,这种操作的延迟和吞吐量是多少?
在标题中,我使用的术语“超兄弟”是指在同一核心的两个逻辑线程上运行的两个线程,而内核间的兄弟是指在不同物理核心上运行的两个线程的更常见的情况。