在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何證明CPU指令是亂序執(zhí)行的呢?

sakobpqhz6 ? 來源:平凡人筆記 ? 2023-03-15 09:14 ? 次閱讀

雙擊QQ.exe從磁盤加載到內(nèi)存里面,內(nèi)存里面就會有了一個進程,進程產(chǎn)生的時候會產(chǎn)生一個主線程,就是main方法所在的線程,cpu會找到main開始的地方,把它的指令讀取過來放到程序計數(shù)器,把數(shù)據(jù)放到寄存器,然后ALU開始做計算,一步一步來執(zhí)行整個程序,這就是普通程序執(zhí)行的過程。

cpu速度要比內(nèi)存的速度快100倍,中間有各種各樣的緩存,最常見的是三級緩存,由于它的速度非???,在執(zhí)行指令的時候也會有一些優(yōu)化,比如現(xiàn)在有2條指令,一個是mov指令即從內(nèi)存中讀取一個數(shù)據(jù)到某一個寄存器中,第二個指令是把寄存器中的指令數(shù)值加1,如果嚴格按照前后寫的效率執(zhí)行,會發(fā)現(xiàn)它的效率比較低;第一條指令從內(nèi)存中讀數(shù)據(jù)出來,cpu等待99個時間周期,如果讀完第一個指令之后,才可以執(zhí)行第二個指令的話,cpu將會有99個空檔期,所以現(xiàn)在的cpu設計是流水線式的設計(采用流水線式后,并沒有加速單條指令的執(zhí)行,每條指令的操作步驟一個也不能少,只是多條指令的不同操作步驟同時執(zhí)行,因而從總體上看加快了指令流速度,縮短了程序執(zhí)行時間),發(fā)送一條指令在等待內(nèi)存數(shù)據(jù)返回的過程當中,會把后面這條指令執(zhí)行了即后面的指令跑到前面先執(zhí)行了,簡單稱為cpu的亂序執(zhí)行,主要是為了提高效率,在等待費時的指令執(zhí)行的時候,優(yōu)先執(zhí)行后面的指令。

證明cpu亂序執(zhí)行是存在的

a8a1ae18-c2ab-11ed-bfe3-dac502259ad0.png

這里有個死循環(huán),每一次循環(huán)都會把這4個值(x、y、a、b)設置為0,每一次循環(huán)都會起2個線程,第一個線程會執(zhí)行a=1、x=b,第二個線程會執(zhí)行b=1、y=a;假設所有的語句都是按照順序執(zhí)行的,從多線程微觀的角度進行時間順序上的排列組合,你會發(fā)現(xiàn)會有各種各樣的組合場景:

a8bd5a96-c2ab-11ed-bfe3-dac502259ad0.png

比如第一種組合,

aad8c54a-c2ab-11ed-bfe3-dac502259ad0.png

第一種組合先執(zhí)行a=1、x=b,后執(zhí)行b=1、y=a,得到的結果是x=0、y=1。

這6種排列組合的結果無論如何都不可能得到x=0、y=0的情況即只要按照順序執(zhí)行,絕對不會出現(xiàn)x=0、y=0。

這是數(shù)學上的排列組合,但cpu執(zhí)行指令的時候未必是按照順序執(zhí)行的。

出現(xiàn)x=0、y=0的情況比較少見,為什么這么難出現(xiàn)?什么樣的組合下才會出現(xiàn)?

aae81842-c2ab-11ed-bfe3-dac502259ad0.png

跑了270多萬次才出現(xiàn)了一次x=0、y=0的情況,

ab0b8f84-c2ab-11ed-bfe3-dac502259ad0.png

這兩種是亂序執(zhí)行的排列組合,比如第一個場景是線程1先執(zhí)行x=b、線程2執(zhí)行y=a,切換到線程1執(zhí)行a=1,切換到線程2執(zhí)行b=1,結果是x=0、y=0。

只有這2種場景,2個線程的這2個指令都得顛倒順序才會出現(xiàn),這種很難出現(xiàn),不管怎樣,得出一個結論:cpu內(nèi)部是亂序執(zhí)行的。

單線程的情況下,2個指令亂了順序執(zhí)行沒有關系,反正最終的結果是一樣的,但是在多線程的情況下,非常有可能出現(xiàn)你不想看到的情形,比如x=0、y=0的情況,比如在預知中沒有這種情況,但是多線程的情況下,會出現(xiàn),所以一定會影響整個多線程程序的運行,單線程的程序不會影響。

有了as-if-serial(看上去像序列化的)指令就可以隨便變換順序,只要維持最終一致性即可;單線程的重排序只需要保證最終的一致性,比如a=b、y=1,隨便重排序,只要能保證單線程的最終一致性。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5357

    瀏覽量

    120668
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10879

    瀏覽量

    212198
  • 計數(shù)器
    +關注

    關注

    32

    文章

    2256

    瀏覽量

    94706
  • ALU
    ALU
    +關注

    關注

    0

    文章

    33

    瀏覽量

    13110

原文標題:證明CPU指令是亂序執(zhí)行的

文章出處:【微信號:IC學習,微信公眾號:IC學習】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機執(zhí)行指令過程詳解

    因為指令是要求把取得的數(shù)送到A累加器,所以取出的數(shù)字經(jīng)內(nèi)部數(shù)據(jù)總線進入A累加器,而不是進入指令寄存器。至此,一條指令執(zhí)行完畢。單片機中PC=0002H,PC在
    的頭像 發(fā)表于 02-15 09:53 ?1.9w次閱讀

    CPU指令的條件執(zhí)行分享!

    ,是LE標志:恰巧,在print中有puts函數(shù),puts函數(shù)中有判斷,正好改變了CPSR中的高四位,使CPU執(zhí)行該異常指令。再說一句,CPU執(zhí)行
    發(fā)表于 09-10 05:45

    CPU周期與微指令周期的關系

    CPU周期與微指令周期的關系 在串行方式的微程序控制器中:       微指令周期 = 讀出微指令的時間 +
    發(fā)表于 03-26 16:16 ?35次下載

    什么是CPU分枝/亂序執(zhí)行?

    什么是分枝/亂序執(zhí)行?   分枝(branch)是指程序運行時需要改變的節(jié)點。分枝有無條件分枝和有條件分枝,其中無條件分枝只
    發(fā)表于 02-04 10:49 ?907次閱讀

    cpu執(zhí)行指令的過程詳解

    計算機每執(zhí)行一條指令都可分為三個階段進行。即取指令-----分析指令-----執(zhí)行指令。
    的頭像 發(fā)表于 03-09 16:30 ?10.4w次閱讀
    <b class='flag-5'>cpu</b><b class='flag-5'>執(zhí)行</b><b class='flag-5'>指令</b>的過程詳解

    CPU操作指令詳解

    CPU將CS:IP指向的內(nèi)存單元中的內(nèi)容看作指令,因為,在任何時候,CPU將CS,IP中的內(nèi)容當作指令的段地址和偏移地址,用它們合成指令的物
    的頭像 發(fā)表于 09-24 17:52 ?9900次閱讀

    80C51單片機指令的取指和執(zhí)行時序詳細說明

    現(xiàn)按4類指令介紹CPU時序。因為CPU工作的過程就是取指令執(zhí)行指令的過程,所以
    發(fā)表于 09-27 17:16 ?1次下載
    80C51單片機<b class='flag-5'>指令</b>的取指和<b class='flag-5'>執(zhí)行</b>時序詳細說明

    嵌入式RISC-V亂序執(zhí)行處理器的設計方案

    具有順序單發(fā)射、亂序執(zhí)行、亂序寫回等特性的三級流水線結構,運用哈佛體系結構及AHB總線協(xié)議,可滿足并行訪問指令與數(shù)據(jù)的需求。在 Artix-7(XC7A35T-L1CSG324FPGA
    發(fā)表于 03-11 10:57 ?17次下載
    嵌入式RISC-V<b class='flag-5'>亂序</b><b class='flag-5'>執(zhí)行</b>處理器的設計方案

    超標量處理器的指令亂序提交機制綜述

    針對超標量處理器中長周期執(zhí)行指令延遲退休及持續(xù)譯碼導致的重排序緩存(ROB)阻塞問題,提出一種指令亂序提交機制。通過設計容量可配置的多緩存指令
    發(fā)表于 06-07 11:39 ?13次下載

    單片機是怎么執(zhí)行指令的?

    單片機執(zhí)行程序的過程,實際上就是執(zhí)行我們所編制程序的過程。即逐條指令的過程。計算機每執(zhí)行一條指令都可分為三個階段進行。即取
    發(fā)表于 02-09 11:13 ?3次下載
    單片機是怎么<b class='flag-5'>執(zhí)行</b><b class='flag-5'>指令</b>的?

    CPU指令執(zhí)行過程 CPU指令流水線

    幾乎所有的馮·諾伊曼型計算機的 CPU,其工作都可以分為 5 個階段:取指令、指令譯碼、執(zhí)行指令、訪存取數(shù)、結果寫回。
    發(fā)表于 05-09 17:29 ?2w次閱讀
    <b class='flag-5'>CPU</b><b class='flag-5'>指令</b>的<b class='flag-5'>執(zhí)行</b>過程 <b class='flag-5'>CPU</b><b class='flag-5'>指令</b>流水線

    證明CPU指令亂序執(zhí)行

    雙擊QQ.exe從磁盤加載到內(nèi)存里面,內(nèi)存里面就會有了一個進程,進程產(chǎn)生的時候會產(chǎn)生一個主線程,就是main方法所在的線程,cpu會找到main開始的地方,把它的指令讀取過來放到程序計數(shù)器,把數(shù)據(jù)放到寄存器,然后ALU開始做計算,一步一步來
    的頭像 發(fā)表于 03-15 09:13 ?978次閱讀

    當我們在談論cpu指令亂序的時候,究竟在談論什么?

    知道指令亂序策略很重要,原因是這樣我們就能夠通過barrier(內(nèi)存屏障)等指令,在正確的位置告訴cpu或者是編譯器,這里我可以接受亂序,
    的頭像 發(fā)表于 05-19 14:42 ?1373次閱讀
    當我們在談論<b class='flag-5'>cpu</b><b class='flag-5'>指令</b><b class='flag-5'>亂序</b>的時候,究竟在談論什么?

    編譯器的亂序策略

    寫這篇文章的目的,是想明確下cpu指令亂序這件事。只要是熟悉計算機底層系統(tǒng)的同學就會知道,程序里面的每行代碼的執(zhí)行順序,有可能會被編譯器和cpu
    的頭像 發(fā)表于 05-19 14:46 ?733次閱讀
    編譯器的<b class='flag-5'>亂序</b>策略

    cpu執(zhí)行程序內(nèi)部變化

    CPU(Central Processing Unit)是計算機的核心部件之一,它負責執(zhí)行計算機程序的指令,并進行數(shù)據(jù)處理和控制操作。CPU執(zhí)行
    的頭像 發(fā)表于 12-05 11:26 ?661次閱讀
    主站蜘蛛池模板: 亚洲免费视频网址 | 六月丁香婷婷网 | 久久系列| 一久久 | 中文字幕在线一区二区在线 | 成人永久免费视频网站在线观看 | 九九热在线视频观看 | 国产三级高清 | 在线视频 二区 | 99久久久免费精品免费 | 色猫av| 日日夜夜天天干 | 傲视影院午夜毛片 | 男女www视频在线看网站 | 色中色在线视频 | 色天天天天 | 波多野结衣三个女人蕾丝边 | 一级片免费在线 | 最新国产在线播放 | 好吊操免费视频 | 成人在色线视频在线观看免费大全 | 国产精品成人观看视频国产奇米 | 国产农村女人一级毛片了 | 深夜视频在线 | 久热国产精品 | 五月六月伊人狠狠丁香网 | 性天堂网 | a级男女性高爱潮高清试 | 亚洲夜夜操| 久久国产精品免费看 | 六月激情婷婷 | 日本特黄特色aaa大片免费欧 | 97人人揉人人捏人人添 | 天天爱添天天爱添天天爱添 | 天堂网在线资源 | 黄色网大全 | 亚洲国产日韩欧美在线as乱码 | 桃桃酱无缝丝袜在线播放 | 国产网红主播精品福利大秀专区 | 色激情综合网 | 免费一级欧美在线观看视频片 |