cpu-cache-line-demo:使用Golang原语的CPU缓存行无效

时间:2024-05-21 20:07:29
【文件属性】:

文件名称:cpu-cache-line-demo:使用Golang原语的CPU缓存行无效

文件大小:4KB

文件格式:ZIP

更新时间:2024-05-21 20:07:29

golang performance cpu-cache Go

使用Golang原语的CPU缓存行无效 介绍 一直是并行性的陷阱。 对于在高速缓存行边界内分配的共享上下文上同时进行读/写更新的应用程序,性能上的损失变得明显。 现代CPU倾向于利用高速缓存来频繁更新内存位置。 CPU“高速缓存”中的最小化单元是高速缓存行,大多数CPU的高速缓存行为64字节,因此,当CPU从内存中读取变量时,它将读取该变量附近的所有变量。 如果在不同CPU内核中的两个高速缓存行中存在一个变量,则会出现错误共享的问题。 一个内核上的负载更新操作将强制其他内核更新缓存。 更新多个内核中的缓存以及更新主内存中的实际位置位置也导致冻结所有参与内核中的几个周期。 解决上述问题的常用方法是,将频繁更新的数据块(变量/结构)与64字节边界的CPU高速缓存行对齐并对齐。 这将迫使一个变量单独占据内核的高速缓存行,因此,当其他内核更新单个变量时,其他变量将不会使该内核从内存中重新加载该


【文件预览】:
cpu-cache-line-demo-master
----cpu_cache_line_demo_test.go(2KB)
----LICENSE(1KB)
----README.md(3KB)
----cpu_cache_line_demo.go(2KB)

网友评论