1. <blockquote id="lwgwu"></blockquote>
    2. <kbd id="lwgwu"><samp id="lwgwu"></samp></kbd>
    3. <abbr id="lwgwu"><tt id="lwgwu"></tt></abbr>
      免费专区丝袜调教视频,亚洲午夜无码极品久久,亚洲乳大丰满中文字幕,乱乱网,两个人看的www视频中文字幕,中文字幕日韩精品无码内射,欧美成aⅴ人高清免费,女人被爽到高潮视频免费国产
      泡泡網(wǎng)CPU頻道 PCPOP首頁      /      CPU     /      評測    /    正文

      輕松讀懂移動處理器 CPU微架構全解析

      當然,還有更復雜的情況:

      if (a > 5)
          b = c;
      else
          b = d; 

      將其按照匯編語言編寫出來:

           cmp a, 5    ; a > 5 ?
          ble L1
          mov c, b    ; b = c
          br L2
      L1: mov d, b     ; b = d
      L2: ...

      這里的第二條指令是一個條件分支指令(ble 是小于或等于轉(zhuǎn)移指令,ble L1 表示如果寄存器 a 小于等于 5 就轉(zhuǎn)移到 L1 這行執(zhí)行 mov d,b 這條指令)。

      這條指令抵達“執(zhí)行單元”的時候,位于流水線前段的取指單元和解碼單元肯定已經(jīng)拾取和解碼了若干條指令,但是哪一條指令才應該接下來被執(zhí)行呢?應該是第三、四條還是第五條呢?

      在第二行的條件分支指令完成之前,處理器只能等待。處理器平均六條指令就會遇到一條分支指令,因此流水線設計帶來的大部分性能提升優(yōu)勢此時會被喪失掉。

      為此處理器必須進行“猜測”,按照猜測結果進行取指并推測哪些指令能開始執(zhí)行,不過這些指令的執(zhí)行結果并不會被遞交(寫回)直到分支指令的執(zhí)行結果完成。

      如果猜錯的話,這部分指令的結果就會被扔掉,這也意味著這些指令對應的時間或者周期數(shù)會被浪費掉。當然如果猜中的話,處理器就能全速運行了。

      那么如何去做“猜測”呢?

      一個辦法是所謂的靜態(tài)分支預測,例如在指令編碼格式里留出一個位元作為預測信息,編譯器編譯的時候,對這個位元進行標記,告訴處理器該跑那條分支,不過這對于已經(jīng)采用了不具備這類條件執(zhí)行指令的舊式 ISA 二進制程序來說這樣顯然是不可能的。

      另一個辦法就是“運行過程中”進行猜測即動態(tài)分支預測,通常是采用類似被稱作“片上分支預測表”的單元來記錄最近分支的地址以及用一個位元指示出哪一條分支是最近是否被采用的。

      不過現(xiàn)在大多數(shù)處理器實際上是用兩個位元來作標記的,因此單次的分支“不跳轉(zhuǎn)”并不會馬上導致一般的“跳轉(zhuǎn)”預測出現(xiàn)反轉(zhuǎn)(這對于循環(huán)邊界來說是很重要的)。不過兩位元分支預測并有考慮到分支相關性,所以人們后來有采用兩級分支預測來解決這個問題,使得預測精度大大提高。

      動態(tài)分支表需要占用相當可觀的芯片面積,但是另一方面來說分支預測對流水線化處理器是相當重要的,所以是物有所值的。

      不過就算是最好的分支預測技術也可能會猜錯,對于超級流水線或者說深流水線來說就會有很多指令的結果會被扔掉,這樣的情況被稱作 mispredict penalty(誤預測性能懲罰)。

      像 Pentium III 這類具備非常先進分支預測技術的處理器,在遇到分支預測失敗的時候,也會出現(xiàn) 10~15 個周期的性能損失,因此即使正確命中了 90% 的分支,也會因為分支誤預測導致 30% 的性能損失,所以 Pentium III 其實很多時候會出現(xiàn) 30% 的時間在走冤枉路。

      人們在 ISA 中引入條件執(zhí)行指令(predicated instruction),希望籍此盡量減少分支,例如上面的例子,引入名為 cmovle 的判定指令后,可以寫成這樣:

      cmp a, 5       ; a > 5 ?
      mov c, b       ; b = c
      cmovle d, b    ; if le, then b = d

      cmovle 的作用是“當小于或者等于的時候就進行賦值”,只有在條件為“真”的時候才會遞交執(zhí)行,因此被稱作條件執(zhí)行指令。

      采用了判定指令后,原來的 5 條指令變成 3 條,避免了兩條分支指令,cmp 和 mov 可以并行執(zhí)行實現(xiàn) 50% 的性能提升,消除了分支預測錯誤導致的大量誤預測懲罰。

      ARM 從一開始具備完整的判定指令集,而 MIPS 和 x86 后了也都添加了條件賦值指令,IA64(EPIC)中幾乎每條指令都具備條件執(zhí)行功能。

      2人已贊

      關注我們

      泡泡網(wǎng)

      手機掃碼關注
      主站蜘蛛池模板: 亚洲国产成人av国产自| 亚洲原创无码| 人妻久久久一区二区三区| 秋霞鲁丝片成人无码| 韩国无码一区二区三区| 亚洲精品成人中文网| 亚洲人成在线观看网站不卡| 久久99热精品免费观看欧美| 久久不射影院| 国产av麻豆mag剧集| 久久国产精品偷任你爽任你| 精品综合久久久久久97超人| 亚洲精品一区二三区不卡| 精品久久久中文字幕一区| 国产精品亚洲专区无码蜜芽| av无码av在线a∨天堂毛片| 免费无码AV一区二区波多野结衣 | 国产精品区视频中文字幕| 精品国产sm最大网站蜜芽| 欧美真人做爰在线观看| 中文字幕高清无码不卡在线| 国产成人一区二区无码不卡在线| 精品人妻av区波多野结衣| 免费无码一区二区三区蜜桃大| 亚洲男人天堂2022| 国产成人av在线播放不卡| 国产一区二区三区我不卡| 99在线精品国自产拍不卡| 无码av免费毛片一区二区| 国产AV嫩草研究院| 亚洲AV色香蕉一区二区蜜桃 | 婷婷丁香五月中文字幕| 日韩在线中文| 日韩欧美第一区二区三区| 制服丝袜亚洲欧美中文字幕| 国产在线观看黄| 婷婷精品国产一区二区三区日韩| 岛国av免费在线播放| www国产精品| 苍井空张开腿实干12次| 97国产成人无码精品久久久|