gpt4 book ai didi

performance - 堆栈是否在缓存中?

转载 作者:行者123 更新时间:2023-12-04 11:46:58 26 4
gpt4 key购买 nike

在现代计算机中,我知道当前代码区域在高速缓存中。但是,在许多计算机语言实现中,本地(自动)变量将位于堆栈中,因此将有大量内存访问堆栈。

堆栈是否在正常架构中的另一个缓存中?

如果不是,则假设堆栈可以重新定位为“本地”,即非常靠近当前代码段,以便它位于用于代码的缓存中。这会加速自动变量的内存访问吗?

最佳答案

大多数现代计算机都会不加选择地缓存内存,因此 CPU 访问的任何内存都将被缓存。所以,这包括包括堆栈在内的内存。事实上,堆栈很可能几乎一直被缓存,因为它被频繁访问。
缓存堆栈的主要问题是,由于它被频繁修改,可能会导致缓存与主内存不同步并触发缓存未命中,这会损害性能。这通常不会发生,因为大多数架构使用所谓的回写缓存,这意味着缓存的每个块,称为缓存行,都有一个脏位,并在需要时使用缓存的延迟副本返回到主内存。这通常会导致相对罕见的主内存更新,性能会很好。
但是,如果两个不同的线程尝试写入同一内​​存,则会出现性能问题。这可能会导致一致性缺失,从而导致缓存写入和更新内存并降低性能。通常,软件的结构不会使两个不同的线程使用相同的堆栈。但是,如果发生这种情况,则某些体系结构上的性能可能会很差,因为不同线程的堆栈访问冲突会导致频繁的缓存未命中。

关于performance - 堆栈是否在缓存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37749269/

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