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 是小于或等于轉移指令,ble L1 表示如果寄存器 a 小于等于 5 就轉移到 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ù)處理器實際上是用兩個位元來作標記的,因此單次的分支“不跳轉”并不會馬上導致一般的“跳轉”預測出現(xià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)

      手機掃碼關注
      主站蜘蛛池模板: 久久青青草原精品国产麻豆| 天天躁日日躁狠狠躁2018小说| 色偷偷无码| 亚洲自拍另类欧美综合| 积石山| 国产亚洲精品自在久久77| 国产一三四2021不卡| 97超碰人人| 全黄h全肉边做边吃奶视频| 精品超清无码视频在线观看| 国产拳交| 97丨九色丨国产人妻熟女| 久青草国产在视频在线观看| 337p日本欧洲亚洲大胆人人| xxx综合网| 亚洲精品Aa| 亚洲熟女av一区少妇| 国产精品成人午夜久久| 亚洲av精选一区二区| 日本黄色一区二区| 塘沽区| 老汉老妇姓交视频| 日韩av第一页在线播放| 免费午夜无码片在线观看影院| 亚洲中久无码永久在线观看同| 国产精品美女久久久久av爽李琼 | 国产精品毛片99久久久久| 久久无码免费束人妻| 午夜精品久久久久久久四虎 | 亚洲国产日韩精品自拍| 精品香蕉久久久午夜福利| 成人三级片网站| 衣服被扒开强摸双乳18禁网站| 亚洲AV无码AV在线播放| 日本一卡二卡四卡无卡乱码视频免费| 日韩在线一区二区三区免费视频 | 欧美日韩一卡2卡三卡4卡 乱码欧美孕交| 亚洲AV无码秘?蜜桃蘑菇| 亚洲精品人妻中文字幕| 日韩乱码av| 亚洲欧美日韩在线码|