欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

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

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

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

英特爾SunnyCove內(nèi)核前端

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

圖片來源:英特爾

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

ARMCortex-A77微架構(gòu)

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

圖片來源:ARM

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

A78譯碼到分布

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

圖片來源:互聯(lián)網(wǎng)

發(fā)射與執(zhí)行

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

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

圖片來源:互聯(lián)網(wǎng)

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

定點(diǎn)與浮點(diǎn)

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

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

如果是邏輯運(yùn)算或簡單的整數(shù)運(yùn)算還可以,如果要顯示比較大的變量,小數(shù)點(diǎn)的位置必須可以自由移動(dòng),這就是浮點(diǎn)。

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

圖片來源:互聯(lián)網(wǎng)

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

兩種擴(kuò)展浮點(diǎn)格式:單精度擴(kuò)展和雙精度擴(kuò)展。此標(biāo)準(zhǔn)并未規(guī)定這些格式的精確精度和大小,但指定了最小精度和大小,例如IEEE雙精度擴(kuò)展格式必須至少具有64位有效數(shù)字精度,并總共占用至少79位。

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

具體CPU微架構(gòu)

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

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

圖片來源:互聯(lián)網(wǎng)

這是Zen 2代微架構(gòu)的前端,ITLB就是 Instruction Translation Lookaside Buffer,另一種說法是指令轉(zhuǎn)換后備緩沖區(qū)。AMD的L0/L1/L2緩存與傳統(tǒng)的緩存定義不同,它解簽了軟件意義上的緩存而非硬件,L1里有BTB緩存,Hash路徑緩存表,ITLB緩存好幾種。Zen3代則將L1的BTB緩存由512條擴(kuò)展到1024條,提高分支預(yù)測準(zhǔn)確度。雖然L1緩存異常復(fù)雜,但總?cè)萘窟€是32K,分8路。Return Stack是方法返回棧,可能是分支預(yù)測異常的返回地址。

分支預(yù)測器經(jīng)過Micro tags最終變?yōu)?個(gè)宏操作Marco Ops,進(jìn)入宏操作緩存,緩存量為4K條,指令緩存排成序列,進(jìn)入譯碼器,譯碼器寬度是4位,8個(gè)宏操作和4個(gè)譯碼后的指令進(jìn)入OC/IC,分解為微操作序列,再分別進(jìn)入堆疊引擎和存儲(chǔ)獨(dú)立偵測系統(tǒng)還有微碼序列ROM,再進(jìn)入分發(fā)站。

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

圖片來源:互聯(lián)網(wǎng)

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

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

圖片來源:互聯(lián)網(wǎng)

最后是加載和寫入部分。

Zen2 Die Shot

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

圖片來源:互聯(lián)網(wǎng)

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

審核編輯 :李倩

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

    關(guān)注

    456

    文章

    51264

    瀏覽量

    427753
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10911

    瀏覽量

    213140

原文標(biāo)題:深入了解汽車系統(tǒng)級芯片SoC連載之六:CPU微架構(gòu)

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

收藏 人收藏

    評論

    相關(guān)推薦

    西門子OP27和OP37的中文操作手冊免費(fèi)下載

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

    OP727 SPICE模型

    OP727 SPICE模型
    發(fā)表于 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模型
    發(fā)表于 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模型
    發(fā)表于 04-13 18:17 ?0次下載
    <b class='flag-5'>OP</b>262 SPICE<b class='flag-5'>宏</b>模型

    OP470 SPICE模型

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

    OP1177 SPICE模型

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

    OP90 SPICE模型

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

    OP270 SPICE模型

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

    OP2177 SPICE模型

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

    OP295 SPICE模型

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

    OP4177 SPICE模型

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

    OP184 SPICE模型

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

    OP1177 SPICE模型

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

    OP747 SPICE模型

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

    OP162OP262OP462 SPICE模型

    OP162OP262OP462 SPICE模型
    發(fā)表于 06-18 11:29 ?3次下載
    <b class='flag-5'>OP162OP262OP</b>462 SPICE<b class='flag-5'>宏</b>模型