C 17 引入了和std::hardware_constructive_interference_size,提供有關快取行大小的資訊。然而,這些常數除了簡單地獲取 L1 快取行大小之外還有更廣泛的用途。
這些常數的目的是提供表示最佳偏移的值或限制資料結構以避免錯誤共享或促進真實共享。雖然從理論上講,這些值應該與 L1 快取行大小保持一致,但不能保證在實踐中一定是如此。
這些常數可以在各種場景中使用:
這些常數在編譯時定義,不一定代表運行時的實際快取行大小。不同的機器可以有不同的快取行大小。
如果最大化效能是一項關鍵要求,建議使用預處理器巨集或使用偵測快取的特定於平台的函式庫來定義精確的快取行大小值。運行時的行大小。
提供的範例程式示範如何有效地使用這些常數。它透過分配具有不同對齊方式的 int 包裝數組和一對具有不同對齊方式的 int 來演示錯誤共享,展示對性能的影響。
程式還包括一個實用程式函數,cache_line_size(),它用於作為後備方案,或者可以在編譯期間重新定義以使用已知的 L1 快取行大小(如果可用)。
透過理解這些常數並正確使用它們,您可以優化您的程式碼以實現高效的記憶體存取並提高效能。
以上是std::hardware_delta_interference_size 和 std::hardware_constructive_interference_size 如何協助優化記憶體存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!