gpt4 book ai didi

c++ - "non-native"指针会损害缓存性能吗?

转载 作者:IT老高 更新时间:2023-10-28 22:10:10 50 4
gpt4 key购买 nike

据我所知,硬件预取器至少会检测并获取内存中的恒定步幅。另外它可以monitor data access patterns ,无论这真正意味着什么。这让我想知道,硬件预取器会根据存储在内存中的实际数据做出决定,还是纯粹基于程序表现出的行为?

我问的原因是因为我偶尔会使用“非本地”指针作为指针。一个简单的例子是一个预先分配的数组,以及索引这个数组的小整数而不是指针。如果我需要存储大量这样的“指针”,那么节省的内存可以快速增加,进而通过使用更少的内存间接提高缓存性能。

但据我所知,这可能会干扰硬件预取器的工作方式。或不!

我当然可以想象,不管现实与否,一个预取单元检查进入 L1 高速缓存的本地指针地址的高速缓存行,并开始将它们提取到 L2 或类似的东西中。在这种情况下,我节省内存的巧妙技巧突然变得不那么聪明了。

那么,现代硬件预取器到底是做什么的呢?它们会被“非本地”指针绊倒吗?

最佳答案

硬件预取器看不到指针,它看到的是内存地址。它不关心地址来自哪里,也不关心它在您编写的 C++ 程序中的类型。它只是查看 CPU 被告知从哪个地址读取或写入。

所以不,对数组进行索引不会是 CPU 从未遇到过的可怕新事物。

关于c++ - "non-native"指针会损害缓存性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19954549/

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