【Linux 内核 内存管理】优化内存屏障 ④ ( 处理器内存屏障 | 八种处理器内存屏障 | 通用内存屏障 | 写内存屏障 | 读内存屏障 | 数据依赖屏障 | 强制性内存屏障 |SMP内存屏障 )
生活随笔
收集整理的這篇文章主要介紹了
【Linux 内核 内存管理】优化内存屏障 ④ ( 处理器内存屏障 | 八种处理器内存屏障 | 通用内存屏障 | 写内存屏障 | 读内存屏障 | 数据依赖屏障 | 强制性内存屏障 |SMP内存屏障 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、處理器內存屏障
- 二、Linux 內核處理器內存屏障
一、處理器內存屏障
" 處理器內存屏障 “ 針對 ” CPU " 之間的內存訪問亂序 和 CPU 訪問外設亂序 問題 ;
為了 提高 " 流水線 " 性能 , 新式處理器可以采用 " 超標量 體系結構 “ 和 ” 亂序執行 " 技術 , 可以在 一個時鐘周期 中 并行執行多條指令 ;
但是 CPU 執行優化會導致 指令亂序執行 , 后面的指令先于前面的指令執行 , 導致 寄存器中的值沖突 ;
CPU 執行優化總結 :
- 順序取指令 ,
- 亂序執行 ,
- 執行結果順序提交 ;
二、Linux 內核處理器內存屏障
Linux 內核中有 888 種 " 處理器內存屏障 " ;
內存屏障 有 444 種類型 ,
- ① 通用內存屏障
- ② 寫內存屏障
- ③ 讀內存屏障
- ④ 數據依賴屏障
每種類型的 內存屏障 又分為
- ① 強制性內存屏障
- ② SMP 內存屏障
兩種類型 ;
因此將上面 888 種 " 處理器內存屏障 " 列成表格如下 :
| ① 通用內存屏障 | mb() | smp_mb() |
| ② 寫內存屏障 | wmb() | smp_wmb() |
| ③ 讀內存屏障 | rmb() | smp_rmb() |
| ④ 數據依賴屏障 | read_barrier_depends() | smp_read_barrier_depends() |
如果使用 " 處理器內存屏障 " , 其隱含著同時使用 " 編譯器優化屏障 " ; ( 數據依賴屏障 除外 ) ;
總結
以上是生活随笔為你收集整理的【Linux 内核 内存管理】优化内存屏障 ④ ( 处理器内存屏障 | 八种处理器内存屏障 | 通用内存屏障 | 写内存屏障 | 读内存屏障 | 数据依赖屏障 | 强制性内存屏障 |SMP内存屏障 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux 内核 内存管理】优化内存屏
- 下一篇: 【Linux 内核 内存管理】Linux