【Linux 内核 内存管理】优化内存屏障 ④ ( 处理器内存屏障 | 八种处理器内存屏障 | 通用内存屏障 | 写内存屏障 | 读内存屏障 | 数据依赖屏障 | 强制性内存屏障 |SMP内存屏障 )
文章目錄
- 一、處理器內(nèi)存屏障
- 二、Linux 內(nèi)核處理器內(nèi)存屏障
一、處理器內(nèi)存屏障
" 處理器內(nèi)存屏障 “ 針對(duì) ” CPU " 之間的內(nèi)存訪問(wèn)亂序 和 CPU 訪問(wèn)外設(shè)亂序 問(wèn)題 ;
為了 提高 " 流水線 " 性能 , 新式處理器可以采用 " 超標(biāo)量 體系結(jié)構(gòu) “ 和 ” 亂序執(zhí)行 " 技術(shù) , 可以在 一個(gè)時(shí)鐘周期 中 并行執(zhí)行多條指令 ;
但是 CPU 執(zhí)行優(yōu)化會(huì)導(dǎo)致 指令亂序執(zhí)行 , 后面的指令先于前面的指令執(zhí)行 , 導(dǎo)致 寄存器中的值沖突 ;
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)存屏障 又分為
- ① 強(qiáng)制性內(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)存屏障 " , 其隱含著同時(shí)使用 " 編譯器優(yōu)化屏障 " ; ( 數(shù)據(jù)依賴屏障 除外 ) ;
總結(jié)
以上是生活随笔為你收集整理的【Linux 内核 内存管理】优化内存屏障 ④ ( 处理器内存屏障 | 八种处理器内存屏障 | 通用内存屏障 | 写内存屏障 | 读内存屏障 | 数据依赖屏障 | 强制性内存屏障 |SMP内存屏障 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Linux 内核 内存管理】优化内存屏
- 下一篇: 【Linux 内核 内存管理】Linux