gpt4 book ai didi

c - 是否可以将部分共享二级缓存分配给不同的内核

转载 作者:IT王子 更新时间:2023-10-29 00:58:02 29 4
gpt4 key购买 nike

比方说,4 个线程在多核 x86 处理器的 4 个独立内核上运行,并且它们不共享任何数据,是否有可能以编程方式使 4 个内核使用共享 L2 缓存的独立和预定义部分。

最佳答案

让我们使用两个术语,独占和共享缓存来代替 L1、L2、L3、L4 缓存。不同的 CPU 系列开始共享不同级别的缓存。在所提出的术语中,最初的问题是——是否可以将共享缓存拆分为多个部分,每个部分将由一个 CPU/内核独占使用?没有明确的答案。此外,还有两个相互对立的答案。

1) 第一个一般性答案:否。缓存在设计上由硬件管理。在软件中只有少数可访问的缓存控制杆,例如为整个内存或定义的内存区域启用/禁用缓存,应用指定的缓存刷新策略(直写/回写)。不,主要是因为它被设计为在硬件中进行管理。所以没有有用的界面可以在软件中优雅地管理它。

2) 第二个答案:是的。实际上,缓存的设计方式是,缓存的每一行都可以保存来自指定一组内存行的数据。因此,如果内存管理器提供保证,同一个 CPU 一个 CPU/核心拥有并独占使用分配给同一缓存行的所有内存行,则内存管理器提供保证该缓存行将由该 CPU 独占使用。这是一个非常棘手的解决方法。而且它的好处非常有限,并且有严重的缺点:内存布局非常碎片化,缓存使用不平衡,内存管理复杂,非常依赖硬件(详细信息可以在“MetallicPriest”提供的论文中找到)。

Resume:理论上可以,实践上几乎不可能。

关于c - 是否可以将部分共享二级缓存分配给不同的内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15765845/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com