是否可以将共享L2缓存的一部分分配给不同的核心

可以说,4个线程在Multicore x86处理器的4个独立核心上运行,并且它们不共享任何数据,是否可以通过编程方式使4个核心使用共享L2缓存的单独和预定义部分.

最佳答案
让我们使用两个术语,独占和共享缓存,而不是L1,L2,L3,L4缓存.不同的CPU系列开始在不同级别共享缓存.在所提出的术语中,最初的问题是 – 是否可以将共享缓存拆分为部分,每个部分将由其中一个CPU /核心专用?没有明确的答案.此外,有两个答案彼此相反.

1)首先和一般答案:没有.
缓存是通过硬件管理设计的.在软件中只能访问缓存的控制杠杆很少,例如对整个内存或已定义的内存区域启用/禁用缓存,应用指定的缓存刷新策略(直写/写回).基本上没有,因为它被设计为在硬件中管理.因此,没有有用的界面可以在软件中优雅地管理它.

2)第二个答案:是的.
实际上,缓存是以这种方式设计的,即缓存的每一行都可以保存来自指定内存行的数据.由于这一点,如果内存管理器提供保证,相同的CPU一个CPU /内核拥有并使用专门分配给同一缓存行的所有内存行,则内存管理器保证该CPU将专门使用该缓存行.这是一个非常棘手的解决方法.它的优点非常有限,并且有严重的缺点:内存布局非常分散,缓存使用不平衡,内存管理复杂,非常依赖于软件(详细信息可以在“MetallicPriest”提供的文章中找到).

简历:从理论上说这是可能的,而在实践中几乎是不可能的.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...