<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 1,  comments - 25,  trackbacks - 0

    優化屏障和內存屏障

    優化屏障 (Optimization Barrier)

    編譯器編譯源代碼時,會將源代碼進行優化,將源代碼的指令進行重排序,以適合于CPU的并行執行。然而,內核同步必須避免指令重新排序,優化屏障(Optimization barrier)避免編譯器的重排序優化操作,保證編譯程序時在優化屏障之前的指令不會在優化屏障之后執行。

    Linux用宏barrier實現優化屏障,gcc編譯器的優化屏障宏定義列出如下(在include/linux/compiler-gcc.h中): 

    #define barrier() __asm__ __volatile__("": : :"memory")

    上述定義中,“__asm__”表示插入了匯編語言程序,“__volatile__”表示阻止編譯器對該值進行優化,確保變量使用了用戶定義的精確地址,而不是裝有同一信息的一些別名。“memory”表示指令修改了內存單元。

    內存屏障 (Memory Barrier)

    軟件可通過讀寫屏障強制內存訪問次序。讀寫屏障像一堵墻,所有在設置讀寫屏障之前發起的內存訪問,必須先于在設置屏障之后發起的內存訪問之前完成,確保內存訪問按程序的順序完成。

    讀寫屏障通過處理器構架的特殊指令mfence(內存屏障)、lfence(讀屏障)和sfence(寫屏障)完成,見《x86-64構架規范》一章。另外,在x86-64處理器中,對硬件進行操作的匯編語言指令是“串行的”,也具有內存屏障的作用,如:對I/O端口進行操作的所有指令、帶lock前綴的指令以及寫控制寄存器、系統寄存器或調試寄存器的所有指令(如:cli和sti)。

    Linux內核提供的內存屏障API函數說明如表2。內存屏障可用于多處理器和單處理器系統,如果僅用于多處理器系統,就使用smp_xxx函數,在單處理器系統上,它們什么都不要。

    posted on 2012-06-25 12:05 Daniel 閱讀(604) 評論(0)  編輯  收藏 所屬分類: CoreJava
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(3)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 日韩亚洲欧洲在线com91tv| 亚洲人成电影在线观看青青| 久久狠狠躁免费观看| 亚洲va成无码人在线观看| 成人免费视频试看120秒| 二级毛片免费观看全程| 激情内射亚洲一区二区三区| 成人爱做日本视频免费| 成全在线观看免费观看大全 | 免费福利网站在线观看| MM1313亚洲精品无码久久| 亚洲妇熟XXXX妇色黄| 免费黄色大片网站| a级毛片免费播放| 亚洲AV无码国产一区二区三区| 亚洲精品~无码抽插| 午夜免费福利影院| 久久国产精品免费看| 亚洲AV综合永久无码精品天堂| 久久精品国产亚洲av麻豆| 免费无码看av的网站| 99精品视频免费观看| 污网站在线观看免费| 亚洲xxxxxx| 亚洲国产精品成人久久| 国产精品免费_区二区三区观看| 久久永久免费人妻精品下载 | 日本视频在线观看永久免费| 校园亚洲春色另类小说合集| 亚洲黄色三级视频| 国产亚洲高清不卡在线观看| 日本不卡免费新一二三区| 国产男女爽爽爽爽爽免费视频| 黄桃AV无码免费一区二区三区| 亚洲AV无码片一区二区三区| 亚洲精品中文字幕无乱码麻豆| 国产l精品国产亚洲区在线观看| 免费国产成人午夜电影| 妞干网免费观看视频| 久草视频免费在线| 无码人妻一区二区三区免费看|