欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: CPU指令的流水線執(zhí)行 [打印本頁]

作者: 51黑黑黑    時間: 2016-3-4 14:20
標題: CPU指令的流水線執(zhí)行
       指令集是CPU體系架構的重要組成部分。C語言的語法是對解決現(xiàn)實問題的運算和流程的方法的高度概況和抽象,其主要為算術、邏輯運算和分支控制,而指令集就是對這些抽象的具體支持,匯編只不過是為了讓開發(fā)人員更好地記住指令,但它跟CPU所認的機器碼其實是一一對應的,因此匯編也是低級語言。
        CPU的指令執(zhí)行一般包括取指、譯碼和執(zhí)行,這是經典的三級指令執(zhí)行流水線,教科書上往往以這三種過程來描述,arm7也是。但是現(xiàn)代的CPU設計往往使用更廣泛使用的5級流水線,也就是分為取指、譯碼、執(zhí)行、訪存和回寫。為什么要分為5級?這是由流水線的各個階段的時間來決定的。我們可以考慮現(xiàn)實生活的工廠的流水線。
        假設某流水線只有 三個工序,有三個工人A、B、C,則這條生產線的效率就取決于效率最低的那個工人的效率,F(xiàn)假設B做完其負責的工序需要10秒,而A和C完成只需要5秒,總共要完成4個產品。那總時間應該是:5+10*4+5 = 50秒,(第一個5是A先做第一道工序的時間,這時B和C都得等,而最后一個5是C必須要等B全部完成后才能開始)即會出現(xiàn)C在等待,而B一直在忙死忙活的場景。
        當然,無論怎樣,流水線的執(zhí)行總比完成沒有流水好,就好比A、B、C負責的工作都由一個人去做,那做完一個得20秒。全部做完得20*4 = 80秒。
        最理性的場景就是三個人做事的效率是一樣的,那就不會出現(xiàn)等待的情況。那現(xiàn)在確實遇到B工作效率最低的問題,怎么解決呢?就是將B的工作重新分解,平均分成兩個工序,也就是B1和B2,分別都是5秒完成,那完成的總時間是40秒。
         CPU指令的三級流水執(zhí)行正是遇到各步驟流水時間不均的問題,也就是取指和譯碼往往比較快,而執(zhí)行包括運算和訪問寄存器、內存或者回寫等功能,因此執(zhí)行的時間一般比取指和譯碼要長,取指和譯碼可以在單時鐘周期內完成,但執(zhí)行需要2到3個時鐘周期才能完成。要想得到更高的流水效率,就需要將執(zhí)行部分分解為執(zhí)行(運算等)、訪存(內存)和回寫(寄存器)。
         CPU指令的流水線執(zhí)行對于軟件開發(fā)人員來說,最重要的就是要知道當前PC(程序計數(shù)寄存器)的值與當前執(zhí)行指令的關系。取指指的是CPU根據(jù)當前PC的值內存的對應地址去取指令,因此PC值永遠都指的都是當前取指令步驟的地址,而譯碼則是CPU的一部分電路根據(jù)取出來的指令機器碼進行譯碼,選擇對應的電路來執(zhí)行這條執(zhí)行,如選擇加法電路還是減法電路,還是邏輯與電路等等;執(zhí)行就是這個電路的執(zhí)行過程了。
         arm7的流水線示意圖是:

             從圖可以看到在T1時刻,CPU的執(zhí)行電路執(zhí)行的是MOV指令,而取指電路取的是SUB指令,因此當前執(zhí)行電路的MOV對應的運行地址應該是當前PC值減8. 如果當前運行的指令是一個函數(shù)調用(即BL指令),但返回地址就應該是ADD指令所在的地址,即(PC減4)。

        有人問到流水線斷流的問題,補充說明一下,斷流主要有以下情況:
        1)數(shù)據(jù)相關。如第二條指令需要的數(shù)據(jù)正好是第一條指令執(zhí)行的結果。這時第二條必須等待。
        2)分支跳轉。指令分支判斷之后,可能會順序執(zhí)行,也可能跳轉到其他地方,這時也會引起流水線的斷流。






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1