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