的我們知道,在內存分頁落空會帶來一個頁面錯誤,頁面處理程序必須在頁面加載到物理內存。這裏我想知道緩存中的miss是否也是系統故障?如果不是,內存故障和緩存故障有什麼區別?非常感謝。是高速緩存未命中的一種中斷/故障
回答
通過「緩存錯誤」你的意思是在處理器的L1/L2/L3高速緩存高速緩存未命中?如果是這樣,那麼不,至少在我聽說過的每個處理器架構上都不會產生故障。
原因是頁面錯誤需要軟件干預來決定訪問是否無效,訪問是否被交換到磁盤的頁面等。相反,高速緩存未命中可定義爲由處理器本身處理 - 因爲它不會導致頁面錯誤,所以數據必須已經存儲在主存儲器或低級高速緩存中,處理器可直接訪問該高速緩存。處理器將機械地將正在訪問的存儲器的地址從虛擬轉換爲物理,然後向低級高速緩存或主存儲器請求數據。
同樣的概念適用於同時多處理器,其中的緩存行可能會通過一個核心,寫它,即使另一個核心的它存儲在緩存中無效。處理器定義自己的一致性協議以確保不會讀取陳舊的副本,通常是通過強制具有無效高速緩存行的核心從較低級別的高速緩存刷新它,或者通過要求它觀察共享寫入總線所有處理器都可以看到正在寫入的值。
不,它只是導致處理器失速。也許一個適當的心理圖像是一條或多條NOP指令被插入管道。也稱爲「bubble"。不是很確定這是什麼現代處理器做,但效果肯定是相同的一個合適的模型,該處理器停止執行指令,直到數據可用。
一個緩存錯誤是當芯被阻斷,以讀/寫,因爲另一個芯打算同時讀/寫的非常相同的數據,這是多核並行的問題。例如,考慮到兩個核(0和1)需要一個可變X從RAM中,x的副本被放置在最高級別的高速緩存(L2或L3),其由所有的內核共享,那麼X第二副本被放置在覈心0而最內部高速緩存(L1)核心1請求非常相同的變量t o操作。核心1必須被阻止,同時執行從core_0更新變量值的衝突。 阻止操作是一個緩存故障。否則
沒有人迄今已提到TLB。一些CPU(例如MIPS)具有軟件填充的TLB,並且TLB未命中實際上觸發專用異常處理程序的執行,然後需要向CPU提供尋求的虛擬到物理映射。 IOW,某些緩存未命中/錯誤可能不會由硬件自動處理。
- 1. 緩存未命中與高速緩存命中
- 2. DRAM高速緩存未命中
- 3. 確定各種文件系統的高速緩存未命中
- 4. 存儲會話時從Memcache中高速緩存未命中
- 5. MySQL表高速緩存的命中率
- 6. 深度RISC管道中的高速緩存未命中懲罰
- 7. C#高速緩存未顯示存儲在高速緩存中的原始值
- 8. NHibernate緩存故障
- 9. 高速路由故障
- 10. 在JVM中測量高速緩存未命中
- 11. memcached在重負載下的高速緩存未命中
- 12. 高速緩存未命中時的平均訪問時間
- 13. 生成CPU高速緩存未命中時的性能
- 14. 爲什麼高速緩存未命中指令比率是緩存性能的一個更好的指標,與高速緩存未引用高速緩存未命中比率相比?
- 15. 爲什麼我使用Spring緩存服務的高速緩存未命中
- 16. 禁用高速緩存中的緩存
- 17. AIX中的高速緩存命中率或命中率
- 18. 減少指令高速緩存未命中(在C++)
- 19. 二級高速緩存行未命中數
- 20. 高速緩存未命中陷入哪個危險?
- 21. WCF故障 - 哪種故障?
- 22. 複製高速緩存中的數據大於一個高速緩存行
- 23. 高效的緩存和BLOB的 - 分析緩存命中/未命中
- 24. PIC編程中斷故障。
- 25. Fast_CGI + PHP7 + NGINX - 快速高速緩存命中,比沒有任何高速緩存緩存命中速度慢10倍
- 26. ASP.NET高速緩存唯一
- 27. Rails的高速緩存未到期
- 28. Hibernate的緩存未命中
- 29. 提高緩存命中率
- 30. Alachisoft.NCache.Runtime.Exceptions.OperationFailedException:高速緩存未初始化