Advertisement

False sharing是并发编程中的无声音效的性能破坏者

阅读量:

共享概念解析

以下图表展示了计算系统的基础架构。其中,L1、L2、L3分别对应一级缓存、二级缓存与三级缓存。距离CPU越近的缓存,其访问速度越快,但存储容量相对较小。因此,L1缓存虽然容量有限,但响应速度极快,并且直接集成在对应的CPU核心内部;L2缓存则在容量和速度上均有所提升,但仍仅限于单一CPU核心使用;而L3缓存则具备更大的存储空间和更长的访问延迟,并能够被同一插槽内的所有CPU核心共同调用;最终是主内存,其存储空间最大且访问速度最慢,可供整个系统中所有插槽上的CPU核心共享使用。

在这里插入图片描述

在CPU进行运算处理时,其首先会从L1缓存中检索所需的数据,若未找到,则继续前往L2缓存,随后是L3缓存。倘若所有层级的缓存均未包含所需数据,则必须从主内存中获取。数据访问层级越远,所耗费的时间也就越长。因此,在执行频繁操作时,应尽可能保证相关数据存储于L1缓存之中。

此外,在多个线程共享同一份数据的情况下,一个线程需要将数据写入主内存,而另一个线程则需从主内存中读取对应的数据。

以下为CPU访问不同层级数据所耗费时间的概览:

|从CPU到|大约需要的CPU周期|大

全部评论 (0)

还没有任何评论哟~