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

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

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

3天內不再提示

微操作μ-op與宏操作macro-op

佐思汽車研究 ? 來源:佐思汽車研究 ? 作者:佐思汽車研究 ? 2022-03-18 11:23 ? 次閱讀

微操作μ-op與宏操作macro-op

英特爾SunnyCove內核前端

6d591f78-a40a-11ec-952b-dac502259ad0.png

圖片來源:英特爾

上圖為英特爾Sunny Cove內核前端。因為CISC的指令長度不確定,且比較復雜,英特爾將這些指令切割成固定長度,這個微指令從Pentium Pro開始在IA架構出現。處理器接受的是x86指令(CISC指令,復雜指令集),而在執行引擎內部執行的卻不是x86指令,而是一條一條的類RISC指令,Intel 稱之為Micro Operation,即micro-op或μ-op,一般用比較方便的寫法來替代掉希臘字母: u-op或者uop。相對地,融合了多條指令的操作就稱之為Macro Operation或macro-op,即宏操作。 英特爾逐漸改進微指令,后來加入微指令緩存即uOP cache,也有的地方叫L0級緩存,表面看來,uOP cache被定位為一個2級指令cache單元,是1級指令cache單元的子集。其獨特之處在于它所存儲的是譯碼之后的指令(uOPs)。早期Micro-op cache是由32組8條cacheline組成。每條cacheline最多保留6條uOps,共計1536條uOps,Sunny Cove是48組,也就是2304條uOps。這個Cache是在兩個線程之間共享的,并保留了指向micro sequencer ROM的指針。它也是虛擬地址尋址,是L1指令cache的嚴格的子集。每條cacheline還包括其包含的uop數量及其長度。 內核一直都在處理來自指令流(Instruction Stream)的連續的32byte信息。同樣地,uOPcache也是基于32byte窗口。因此uOP cache可以基于LRU(Least Recently Used)策略存儲或者放棄整個窗口。英特爾將傳統的流水線稱為“legacy decode pipeline”。在首次迭代時,所有的指令都是經過“legacy decode pipeline”。一旦整個指令流窗口被譯碼并且發送到分配隊列,窗口的拷貝就被發送到uOP cache。這是與所有其他操作同時發生的,因此這個功能沒有增加額外的流水線階段。后續的迭代,被緩存的已經解碼好的指令流就可以直接被發送到分配隊列了,省卻了取指、預譯碼和譯碼的階段,節省功耗,增加了吞吐量。這也是一個更短的流水線,延遲也減小了。 uOP cache有著高于80%的命中率。在取指期間,分支預測器將會讀取uOPscache的tags。如果命中了cache,會可以每周期發送至多4條uops(可能包含了fused macro-ops)到Instruction Decode Queue(IDQ),繞開了其他所有本該進行的預譯碼和譯碼。

ARMCortex-A77微架構

6d70b2dc-a40a-11ec-952b-dac502259ad0.png

圖片來源:ARM

上圖為ARM Cortex-A77的架構圖,自A77開始,ARM也添加了經解碼后的指令緩存,與英特爾的uOP緩存高度類似,只不過ARM反其道用之,英特爾是把CISC指令切割成微指令,ARM是融合,把定長定格式的RISC指令融合成宏操作MOP(Macro Operation),然后再分割成uOP。這樣做可能是RISC指令分得太散,有些是可以融合的,這樣效率更高。再有就是解碼器通常比后端吞吐量更高,有足夠的MOP緩存可以讓后端工作更飽和,利用率更高。 A78也是如此,每周期4個指令,6個MOPs,X1則不同,每周期5個指令,8個MOPs。

A78譯碼到分布

6d8f2942-a40a-11ec-952b-dac502259ad0.png

圖片來源:互聯網

發射與執行

ARM和AMD的執行單元一般將整數計算(ALU)與浮點計算(FPU)分開,英特爾則是合二為一,執行端關鍵的參數是發射寬度(Issue Width),目前最寬的是ARM的V1,多達15位,寬度越寬,ALU和FPU數量可以越多。通常ALU是4個,整數運算單元4個就夠。V1有4個ALU,4個針對浮點的NEON,其中包含兩個SVE。3個Load加載,2個寫入Store。還有兩個分支針對特定計算類型。

6d9e8798-a40a-11ec-952b-dac502259ad0.png

圖片來源:互聯網

所有計算機程序的本質,是指令的執行過程,從根本上說,也就是處理器的寄存器(Register)到內存之間的數據交互過程。這個交互,無非兩個步驟:讀內存,也就是加載操作(load), 從內存讀到寄存器,寫內存,就是存儲操作(store),從寄存器寫入到內存,LSU就是Load Store Unit。 LSU部件是指令流水線的一個執行部件,其上接收來自內核的LSU發射序列,其下連接著存儲器子系統即數據緩存。其主要功能是將來自CPU的存儲器請求發送到存儲器子系統,并處理其下存儲器子系統的應答數據和消息。在許多微架構中,引入了AGU(尋址生成器)計算有效地址以加速存儲器指令的執行,使用ALU(計算單元,通常是標量計算單元)的部分流水處理LSU中的數據。而從邏輯功能上看,AGU和ALU所做的工作依然屬于LSU。

定點與浮點

所謂定點格式,即約定機器中所有數據的小數點位置是固定不變的。通常將定點數據表示成純小數或純整數,為了將數表示成純小數,通常把小數點固定在數值部分的最高位之前;而為了將數表示成純整數,則把小數點固定在數值部分的最后面。

比如十進制的3.75,那么你可以用011+0.11,但是這種加法首先要對齊位寬,對齊目的就是讓大家的單位一致。你可以把011擴展為011.00,把0.11擴展為000.11,這樣一相加就得到011.11,就是十進制的3.75了,存在電腦的時候,電腦是沒有小數點的,只會存為01111。如果是定點格式,這個小數點的位置就固定了,無法變動,由于計算的時候必須對齊位寬,這使得電腦能處理的數據范圍受到限制,不能太大,也不能太小。假設以一個字節表示小數,小數點固定在5.3的位置,高5位表示整數,低3位表示小數:11001_001 —— 11001.001,轉換一下:整數部分11001= 25, 小數部分001 = 1(分子部分) 分母是1000(8),所以小數部分1/8(二級制只有0和1)。最終的小數表示是 25+ 1/8,即存在 0/8, 1/8,2/8, …. 7/8共八個檔,表示精度為1/8,所以定點小數存在數值范圍和數值精度的問題!數值范圍與精度是一對矛盾,一個變量要想能夠表示比較大的數值范圍,必須以犧牲精度為代價;而想精度提高,則數的表示范圍就相應地減小。在實際的定點算法中,為了達到最佳的性能,必須充分考慮到這一點,即權衡動態范圍和精度。

如果是邏輯運算或簡單的整數運算還可以,如果要顯示比較大的變量,小數點的位置必須可以自由移動,這就是浮點。

6db3ace0-a40a-11ec-952b-dac502259ad0.png

圖片來源:互聯網

比如123.45用十進制科學計數法可以表示為1.2345x102,其中1.2345為尾數,10為基數,2為指數。浮點數利用指數達到了浮動小數點的效果,從而可以靈活地表達更大范圍的實數。IEEE754指定了:兩種基本的浮點格式:單精度和雙精度。其中單精度格式具有24位有效數字(即尾數)精度,總共占用32位;雙精度格式具有53位有效數字(即尾數)精度,總共占用64位。

兩種擴展浮點格式:單精度擴展和雙精度擴展。此標準并未規定這些格式的精確精度和大小,但指定了最小精度和大小,例如IEEE雙精度擴展格式必須至少具有64位有效數字精度,并總共占用至少79位。

浮點運算和定點運算(整數運算)不同,它通常是6個步驟:1. 異常檢測:主要檢測NAN(非數) 2. 對階,尾數右移:不同階碼尾數不能直接相加減,所以需要對階,比如1.1 * 2 E 1 + 1.1 * 2 E 2 尾數就不能運算,對階,尾數右移,最終階碼一致。3 . 尾數求和求差,將對階后的尾數按定點加減運算規則進行運算。4. 規格化:把非規格的小數轉換為規格化的小數。5. 在對階和右移過程中,可能會將尾數的低位丟失,引起誤差,影響精度,為此可用舍入法來提高尾數的精度。IEEE754標準列出了四種可選的舍入處理方法:向上舍入,向下舍入,向最近舍入,直接截去。6. 溢出檢查,與定點數運算不同的是,浮點數的溢出是以其運算結果的階碼的值是否產生溢出來判斷的。若階碼的值超過了階碼所能表示的最大正數,則為上溢,進一步,若此時浮點數為正數,則為正上溢。若浮點數為負數,則為負上溢。進一步,若此時浮點數為正數,則為正下溢,若浮點數為負數,則為負下溢。正下溢和負下溢都作為機器零處理,即將尾數各位強制為零。

具體CPU微架構

特斯拉使用AMD的CPU,因此特別對AMD的微架構做以說明。

6dd27918-a40a-11ec-952b-dac502259ad0.png

圖片來源:互聯網

這是Zen 2代微架構的前端,ITLB就是 Instruction Translation Lookaside Buffer,另一種說法是指令轉換后備緩沖區。AMD的L0/L1/L2緩存與傳統的緩存定義不同,它解簽了軟件意義上的緩存而非硬件,L1里有BTB緩存,Hash路徑緩存表,ITLB緩存好幾種。Zen3代則將L1的BTB緩存由512條擴展到1024條,提高分支預測準確度。雖然L1緩存異常復雜,但總容量還是32K,分8路。Return Stack是方法返回棧,可能是分支預測異常的返回地址。

分支預測器經過Micro tags最終變為8個宏操作Marco Ops,進入宏操作緩存,緩存量為4K條,指令緩存排成序列,進入譯碼器,譯碼器寬度是4位,8個宏操作和4個譯碼后的指令進入OC/IC,分解為微操作序列,再分別進入堆疊引擎和存儲獨立偵測系統還有微碼序列ROM,再進入分發站。

6deaac68-a40a-11ec-952b-dac502259ad0.png

圖片來源:互聯網

Zen2代微架構的執行端,執行端分整數和浮點兩大執行器,綠色為整數,粉色為浮點。整數部分指令經過重命名和定位后進入序列器,完成后提交或者說退出Retire再進入物理寄存器文件,再前向混合,進入ALU4個算數計算器,3個地址生成器。Zen3代的寄存器條目增加到212個。浮點方面寄存器略少,FADD和FMA分別是加法和乘法管線,管線有4條,Zen3代增加到6條,不過計算管線還是4條。

6e04e7b8-a40a-11ec-952b-dac502259ad0.png

圖片來源:互聯網

最后是加載和寫入部分。

Zen2 Die Shot

6e19023e-a40a-11ec-952b-dac502259ad0.png

圖片來源:互聯網

Zen 2代一個核的透視圖,可以看到緩存占芯片的面積最大,其次是浮點運算用的SIMD,然后是分支預測,加載與寫入,譯碼,計算用的ALU所占面積很小。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    455

    文章

    50851

    瀏覽量

    423990
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10870

    瀏覽量

    211901

原文標題:深入了解汽車系統級芯片SoC連載之六:CPU微架構

文章出處:【微信號:zuosiqiche,微信公眾號:佐思汽車研究】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    西門子OP27和OP37的中文操作手冊免費下載

    本文檔的主要內容詳細介紹的是西門子OP27和OP37的中文操作手冊免費下載。
    發表于 01-19 16:17 ?26次下載
    西門子<b class='flag-5'>OP</b>27和<b class='flag-5'>OP</b>37的中文<b class='flag-5'>操作</b>手冊免費下載

    OP727 SPICE模型

    OP727 SPICE模型
    發表于 04-13 18:08 ?1次下載
    <b class='flag-5'>OP</b>727 SPICE<b class='flag-5'>宏</b>模型

    OP162/OP262/OP462 SPICE模型

    OP162/OP262/OP462 SPICE模型
    發表于 04-13 18:11 ?6次下載
    <b class='flag-5'>OP</b>162/<b class='flag-5'>OP</b>262/<b class='flag-5'>OP</b>462 SPICE<b class='flag-5'>宏</b>模型

    OP262 SPICE模型

    OP262 SPICE模型
    發表于 04-13 18:17 ?0次下載
    <b class='flag-5'>OP</b>262 SPICE<b class='flag-5'>宏</b>模型

    OP470 SPICE模型

    OP470 SPICE模型
    發表于 04-14 08:46 ?8次下載
    <b class='flag-5'>OP</b>470 SPICE<b class='flag-5'>宏</b>模型

    OP1177 SPICE模型

    OP1177 SPICE模型
    發表于 04-14 09:03 ?1次下載
    <b class='flag-5'>OP</b>1177 SPICE<b class='flag-5'>宏</b>模型

    OP90 SPICE模型

    OP90 SPICE模型
    發表于 06-08 13:12 ?1次下載
    <b class='flag-5'>OP</b>90 SPICE<b class='flag-5'>宏</b>模型

    OP270 SPICE模型

    OP270 SPICE模型
    發表于 06-10 19:12 ?6次下載
    <b class='flag-5'>OP</b>270 SPICE<b class='flag-5'>宏</b>模型

    OP2177 SPICE模型

    OP2177 SPICE模型
    發表于 06-17 15:25 ?5次下載
    <b class='flag-5'>OP</b>2177 SPICE<b class='flag-5'>宏</b>模型

    OP295 SPICE模型

    OP295 SPICE模型
    發表于 06-17 15:29 ?10次下載
    <b class='flag-5'>OP</b>295 SPICE<b class='flag-5'>宏</b>模型

    OP4177 SPICE模型

    OP4177 SPICE模型
    發表于 06-17 15:45 ?1次下載
    <b class='flag-5'>OP</b>4177 SPICE<b class='flag-5'>宏</b>模型

    OP184 SPICE模型

    OP184 SPICE模型
    發表于 06-17 16:02 ?0次下載
    <b class='flag-5'>OP</b>184 SPICE<b class='flag-5'>宏</b>模型

    OP1177 SPICE模型

    OP1177 SPICE模型
    發表于 06-17 16:23 ?2次下載
    <b class='flag-5'>OP</b>1177 SPICE<b class='flag-5'>宏</b>模型

    OP747 SPICE模型

    OP747 SPICE模型
    發表于 06-18 11:07 ?2次下載
    <b class='flag-5'>OP</b>747 SPICE<b class='flag-5'>宏</b>模型

    OP162OP262OP462 SPICE模型

    OP162OP262OP462 SPICE模型
    發表于 06-18 11:29 ?3次下載
    <b class='flag-5'>OP162OP262OP</b>462 SPICE<b class='flag-5'>宏</b>模型
    主站蜘蛛池模板: 日韩高清毛片| 中文字幕va| 欧美色图一区| 日本不卡在线观看| 爱操成人网| 天天射天天干天天色| 国产伦子一区二区三区四区| 色丁香影院| www.亚洲欧美| tube69xxxxhd日本| 九九精品在线观看| 天天操网| 亚洲三级色| 成年人黄色大片大全| 久久夜色精品国产亚洲| 色操网| 欧美性淫爽www视频播放| 久久精品亚洲一区二区三区浴池| 国产普通话一二三道| 夜夜爱夜夜爽| 影音先锋 色天使| 高清成人| 国产三级中文字幕| 久优草| 男人的天堂在线免费视频| 色视频在线观看网站| 亚洲xx视频| 一级做a爱 一区| 在线精品一区二区三区| 久久99热精品免费观看无卡顿| 黄 在线| 1024国产欧美日韩精品| 成人免费黄色网| 亚洲 丝袜 制服 欧美 另类| 亚洲国产毛片aaaaa无费看| 国产黄色小视频在线观看| 美女扒开腿让男人桶尿口| 高清视频一区| 最新天堂| 色噜噜噜| 国产成人精品亚洲日本在线|