国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第3章 CPU微架構(gòu)

這篇具有很好參考價(jià)值的文章主要介紹了第3章 CPU微架構(gòu)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

3.1 指令集架構(gòu)

指令集ISA是軟件用來與硬件通信的詞匯集合,定義了軟件和硬件之間的通信協(xié)議。Intel x86、ARM v8、RISC-V是當(dāng)今廣泛使用指令集架構(gòu)的實(shí)例。ISA開發(fā)者通常要確保符合規(guī)范的軟件能在使用該規(guī)范構(gòu)建的任何處理器上執(zhí)行。廣泛部署的ISA組織通常還要保證向后兼容性以便第X代版本處理器編寫的代碼能夠繼續(xù)在第X+i代上運(yùn)行。

除了提供標(biāo)量訪存、標(biāo)量計(jì)算和控制指令之外,廣泛部署的架構(gòu)還在繼續(xù)增強(qiáng)ISA以支持新的計(jì)算范式,包括增強(qiáng)的向量處理指令和矩陣/張量指令。

隨著深度學(xué)習(xí)領(lǐng)域的快速發(fā)展,業(yè)界對其他數(shù)字格式變量驅(qū)動(dòng)的顯著性能提升重新產(chǎn)生了興趣。研究表明,在使用更少的位來表示變量、節(jié)省算力和內(nèi)存帶寬方面,深度學(xué)習(xí)模型表現(xiàn)同樣出色。

3.2 流水線

流水線是加快CPU速度的基礎(chǔ)技術(shù),其中多條指令在執(zhí)行過程中可以重疊。簡單5段流水線:取指、譯碼、執(zhí)行、訪存、寫回。(寄存器重命名、發(fā)射、去操作數(shù)、提交)

很多現(xiàn)代CPU都是深度流水線化的。流水線的吞吐量定義為單位時(shí)間內(nèi)完成和退出流水線的指令數(shù)。任何給定指令的延遲是指經(jīng)過流水線所有階段的總時(shí)間。將指令從一個(gè)階段移動(dòng)到另一個(gè)階段所需的時(shí)間定義為CPU的基本時(shí)鐘周期或時(shí)鐘。流水線運(yùn)行的時(shí)鐘周期數(shù)通常由流水線最慢的階段決定。理想流水線中每條指令的執(zhí)行時(shí)間由下式給出:
? ? ? ? 流水化后每條指令的執(zhí)行時(shí)間=非流水情況/流水階段數(shù)

實(shí)際中的流水線會(huì)引入幾個(gè)約束:結(jié)構(gòu)冒險(xiǎn)、數(shù)據(jù)冒險(xiǎn)和控制冒險(xiǎn)。幸運(yùn)的是,程序員不需要應(yīng)對流水線冒險(xiǎn),在現(xiàn)代單核CPU中所有類別的冒險(xiǎn)都是由硬件控制的。

結(jié)構(gòu)冒險(xiǎn)由資源沖突引起,可以通過復(fù)制硬件資源(多端口寄存器)來消除,代價(jià)是硅面積和功耗方面的成本會(huì)很高昂。

數(shù)據(jù)冒險(xiǎn)中WAW和WAR可以通過寄存器重命名來避免,RAW可以通過旁路網(wǎng)絡(luò)來減輕損失。

控制冒險(xiǎn)由程序執(zhí)行流程的變化而導(dǎo)致的。它們產(chǎn)生于流水線分支指令和其他更改程序流程的指令。決定分支方向的分支條件在流水線的EXE階段才能見分曉。因此,除非消除控制冒險(xiǎn),否則下一條指令的獲取不能被流水線化。不過可以用動(dòng)態(tài)分支預(yù)測和投機(jī)執(zhí)行來克服該冒險(xiǎn)。

3.3 利用指令級并行

因?yàn)槌绦蛑写蠖鄶?shù)指令是獨(dú)立的,所以適合流水線化和并行執(zhí)行。

3.3.1 亂序執(zhí)行

亂序執(zhí)行主要用于避免因?yàn)橐蕾嚩鸬牧魉€停頓。指令的動(dòng)態(tài)調(diào)度是通過復(fù)雜的硬件結(jié)構(gòu)(記分板)和諸如寄存器重命名之類的技術(shù)實(shí)現(xiàn)的。記分板的大小決定了硬件在調(diào)度此類獨(dú)立指令時(shí)可以提前多長時(shí)間進(jìn)行。

3.3.2 超標(biāo)量引擎和超長指令字

目前CPU的典型發(fā)射寬度為2~6。為了保證恰當(dāng)?shù)钠胶?,這種超標(biāo)量引擎還支持多個(gè)執(zhí)行單元和流水線執(zhí)行單元。CPU的多發(fā)射功能與深度流水線和亂序執(zhí)行功能相結(jié)合,以獲取軟件給定片段的最大ILP。

Intel Itanium等架構(gòu)使用VLIW,將調(diào)度超標(biāo)量和多執(zhí)行單元處理器的負(fù)擔(dān)從硬件轉(zhuǎn)移到編譯器?;驹碓谟谝缶幾g器選擇正確的指令組合使得機(jī)器被充分利用,從而簡化硬件。因?yàn)橛布苤朴谥噶畲翱陂L度的限制,而編譯器可以獲取全局信息。

3.3.3 投機(jī)執(zhí)行

如果指令在分支條件得到確定之前停頓,控制冒險(xiǎn)可能會(huì)導(dǎo)致流水線中顯著的性能損失。硬件預(yù)測分支邏輯是一種避免這種性能損失的技術(shù)。

在條件結(jié)果得以明確之前,無法提交對機(jī)器狀態(tài)的修改,以確保機(jī)器的架構(gòu)狀態(tài)永遠(yuǎn)不受投機(jī)執(zhí)行指令的影響。當(dāng)預(yù)測錯(cuò)誤時(shí),投機(jī)執(zhí)行的結(jié)果必須被制止和丟棄,即分支預(yù)測錯(cuò)誤懲罰。

3.4 利用線程級并行

硬件多線程CPU支持專用硬件資源以獨(dú)立地跟蹤C(jī)PU中每個(gè)線程的狀態(tài),目的是線程由于長時(shí)延活動(dòng)(如內(nèi)存引用)而被阻塞時(shí),以最小的延遲從一個(gè)上下文切換到另一個(gè)上下文(不會(huì)產(chǎn)生保存和恢復(fù)線程上下文的成本)。

同步多線程SMT將指令級并行技術(shù)和多線程技術(shù)相結(jié)合,以最大限度地利用硬件資源。來自多個(gè)線程的指令在同一時(shí)間周期內(nèi)執(zhí)行。為了支持SMT,CPU必須復(fù)制硬件來存儲(chǔ)線程狀態(tài)(程序計(jì)數(shù)器、寄存器等),跟蹤亂序執(zhí)行和投機(jī)執(zhí)行的資源可以在線程間復(fù)制或分段共享。

3.5 存儲(chǔ)器層次

CPU存儲(chǔ)器層次劃分基于兩個(gè)基本特性:時(shí)間和空間局部性。

3.5.1 高速緩存層次

高速緩存是CPU流水線發(fā)出訪存時(shí)的存儲(chǔ)器層次中的第一級。理想情況下,流水線在具有最小訪問延遲和無限容量緩存時(shí)表現(xiàn)最佳。實(shí)際上高速緩存訪問時(shí)間隨容量的增加而增加。因此,高速緩存被組織為最接近執(zhí)行單元的小型快速存儲(chǔ)塊的層次結(jié)構(gòu),且由更大、更慢的塊進(jìn)行備份。

高速緩存由多個(gè)確定大小的塊(緩存行)組成,典型大小為64字節(jié)。L1大小通常在8KB~32KB,而LLC大小通常在64KB~16MB。任何層級的高速緩存的架構(gòu)都可以由以下4個(gè)屬性定義:

3.5.1.1 高速緩存中數(shù)據(jù)的放置

內(nèi)存訪問請求中的地址可以用來訪問高速緩存。在直接映射中,內(nèi)存塊的地址只能出現(xiàn)在高速緩存中的一個(gè)位置。在全相聯(lián)中,給定的緩存塊可以放在高速緩存的任何位置。在組相聯(lián)中,給定地址首先映射到一個(gè)組中,該地址可以映射在組中的任何位置。

3.5.1.2 在高速緩存中查找數(shù)據(jù)

????????????????????????????????????????address:標(biāo)簽 索引 塊偏移量

地址中的最低順序位定義了塊內(nèi)偏移量,組則是基于索引位來選擇,一旦組被選定,就可以使用標(biāo)簽位來與該組中的所有標(biāo)簽進(jìn)行比較。如果其中一個(gè)標(biāo)簽與傳入請求的標(biāo)簽匹配并且設(shè)置了有效位,則緩存命中。與該塊條目相關(guān)聯(lián)的數(shù)據(jù)被提供給流水線。如果不匹配,則緩存未命中。

3.5.1.3 管理緩存未命中

當(dāng)發(fā)生高速未命中,控制器必須在緩存中選擇要替換的塊,以分配給導(dǎo)致緩存未命中的地址。直接映射只能分配一個(gè)位置,組相連可以分配組內(nèi)任何位置,全相聯(lián)可以分配所有位置。不過組相連和全相連一般會(huì)使用LRU策略來釋放緩存塊,為未命中地址騰出緩存空間。

3.5.1.4 管理寫操作

CPU設(shè)計(jì)使用2種基本機(jī)制來處理高速緩存中的緩存命中寫入操作:
? ? ? ? 1. 寫直達(dá):命中的數(shù)據(jù)同時(shí)寫入緩存塊和層次結(jié)構(gòu)中較低的層級。
? ? ? ? 2. 寫回:命中的數(shù)據(jù)只寫入緩存。因此層次結(jié)構(gòu)較低層級中就會(huì)包含過期數(shù)據(jù),修改后的緩存行的狀態(tài)通過標(biāo)簽中的臟標(biāo)識(shí)來追蹤。當(dāng)修改后的緩存行最終被從緩存行中驅(qū)逐時(shí),寫回操作會(huì)強(qiáng)制將緩存行寫回層次結(jié)構(gòu)的較低層級中。

寫入操作時(shí)的高速緩存未命中可以通過2種方式處理:
? ? ? ? 1. 寫分配:未命中位置的數(shù)據(jù)從層次結(jié)構(gòu)中較低層級加載到高速緩存中,隨后像寫入命中情況一樣處理剩余寫入操作。
? ? ? ? 2. 寫不分配:未命中事務(wù)直接被發(fā)送到層次結(jié)構(gòu)中所有的較低層級,并且緩存塊不會(huì)被加載到高速緩存中。

大多數(shù)設(shè)計(jì)寫分配+寫回,寫不分配+寫直達(dá)策略。

3.5.1.5 其他高速緩存優(yōu)化技術(shù)

從流水線的角度來說,任何訪問請求的延遲都可以由以下公式計(jì)算出來:
? ? ? ? 平均延遲 = 命中時(shí)間 + 未命中比例 * 未命中時(shí)間;

未命中比例高度依賴緩存的架構(gòu)(塊大小、關(guān)聯(lián)性)以及運(yùn)行在機(jī)器上的軟件。

硬件和軟件預(yù)?。簻p少緩存未命中以及后續(xù)停頓的方法之一,提前將指令和數(shù)據(jù)預(yù)取到高速緩存層次的不同層級。

硬件預(yù)取器觀察正在運(yùn)行的應(yīng)用程序的行為,并基于重復(fù)的高速緩存未命中規(guī)律啟動(dòng)預(yù)取。硬件預(yù)取技術(shù)可以自動(dòng)適應(yīng)程序行為,并且不需要優(yōu)化編譯器或者剖析功能的支持。另外,硬件預(yù)取也不會(huì)有額外的地址生成和指令預(yù)取開銷。

軟件預(yù)取是對硬件預(yù)取的補(bǔ)充,開發(fā)者可以通過特定的硬件指令提前指定需要的內(nèi)存位置。編譯器還可以自動(dòng)將預(yù)取指令添加到代碼中。預(yù)取技術(shù)需要平衡實(shí)際需求和預(yù)取請求,以避免預(yù)取流量擠壓實(shí)際需求流量。

3.5.2 主存

主存使用大容量且成本合適的DRAM技術(shù),主要屬性定義為延遲、帶寬和容量。延遲包括2部分:
? ? ? ? 1. 內(nèi)存訪問時(shí)間:請求到數(shù)據(jù)可用時(shí)所消耗的時(shí)間。
? ? ? ? 2. 內(nèi)存周期時(shí)間:兩個(gè)連續(xù)的內(nèi)存訪問之間所需的最短時(shí)間。

歷史上,DRAM帶寬每一代都得到提升,而延遲保持不變,甚至更高。

新的DRAM技術(shù),GDDR和HBM在需要更大更寬的定制處理器上使用,所以不被DDR接口支持。

現(xiàn)代CPU支持多個(gè)獨(dú)立通道的DRAM。一般而言,每一個(gè)內(nèi)存通道的寬度是32位或者64位。

3.6 虛擬內(nèi)存

虛擬內(nèi)存是讓所有運(yùn)行在CPU上的進(jìn)程可以共享屬于物理內(nèi)存的機(jī)制。虛擬內(nèi)存提供一種保護(hù)機(jī)制,可以限制其他進(jìn)程對分配給指定進(jìn)程內(nèi)存的訪問。虛擬內(nèi)存還提供重定位機(jī)制,即能將程序加載到物理內(nèi)存的任意位置而無需改變程序內(nèi)尋址方式。

虛擬地址由提供虛擬地址和物理地址之間映射的專用硬件表翻譯成物理地址,這些表被稱為頁表。

????????????????????????????????虛擬地址:虛擬頁編號(hào)?頁偏移量

其中虛擬頁編號(hào)通過頁表被轉(zhuǎn)換為物理地址。如果請求的頁不在主存內(nèi),則會(huì)導(dǎo)致缺頁問題。

CPU通常使用層級結(jié)構(gòu)的頁表格式將虛擬地址位有效地映射到可用的物理內(nèi)存,缺點(diǎn)是缺頁代價(jià)很高,需要遍歷整個(gè)層級結(jié)構(gòu)。為了減少地址翻譯時(shí)間,CPU支持TLB的硬件結(jié)構(gòu)來緩存最近使用過的翻譯。

3.7 SIMD多處理器

向量和矩陣計(jì)算都非常適合SIMD架構(gòu),因?yàn)橄蛄炕蚓仃嚨拿總€(gè)元素都需要使用相同的指令進(jìn)行處理。SIMD多處理器主要用于數(shù)據(jù)并行并且只需要少量功能和操作的特殊用途任務(wù)。MMX-SSE-AVX。起初,新的SIMD指令以匯編的方式編程。后來,引入了特殊的編譯器內(nèi)建函數(shù)。

3.9 性能監(jiān)控單元

現(xiàn)代CPU包含性能檢測單元PMU,PMU有一組性能監(jiān)控計(jì)數(shù)器PMC,用以收集程序運(yùn)行過程中發(fā)生的各種性能事件。

PMU提供固定功能計(jì)數(shù)器以及可編程計(jì)數(shù)器。固定功能計(jì)數(shù)器總是測量CPU核內(nèi)的同一事件,而可編程計(jì)數(shù)器由用戶來選擇想要測量的事件。通常,每個(gè)邏輯核有4個(gè)可編程計(jì)數(shù)器和3個(gè)固定功能計(jì)數(shù)器。固定功能通常被設(shè)置為計(jì)算核時(shí)鐘、參考時(shí)鐘和退休指令。文章來源地址http://www.zghlxwxcb.cn/news/detail-671313.html

到了這里,關(guān)于第3章 CPU微架構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 后端接口性能優(yōu)化分析

    ??作者簡介:大家好,我是愛吃芝士的土豆倪,24屆校招生Java選手,很高興認(rèn)識(shí)大家 ??系列專欄:Spring源碼、JUC源碼 ??如果感覺博主的文章還不錯(cuò)的話,請??三連支持??一下博主哦 ??博主正在努力完成2023計(jì)劃中:源碼溯源,一探究竟 ??聯(lián)系方式:nhs19990716,加我進(jìn)群

    2024年02月05日
    瀏覽(13)
  • 性能優(yōu)化之影響分析

    性能非常重要,而具體反映到我們的業(yè)務(wù)場景中,可能會(huì)有如下影響: 不利于用戶留存 站點(diǎn)頁面的展現(xiàn)速度非常影響用戶體驗(yàn),很多用戶會(huì)因等待的不耐而放棄站點(diǎn)。 研究表明,47 % 的消費(fèi)者希望頁面能夠在 2s 內(nèi)打開。 移動(dòng)端的頁面應(yīng)該在 3 秒鐘內(nèi)完成加載,若超過這個(gè)時(shí)

    2024年02月06日
    瀏覽(16)
  • Unity性能優(yōu)化分析篇

    Unity性能優(yōu)化分析篇

    性能優(yōu)化是游戲項(xiàng)目開發(fā)中一個(gè)重要環(huán)節(jié)。游戲幀率過低,手機(jī)發(fā)燙, 包體太大,低端機(jī)上跑不起來等, 這些都需要來做優(yōu)化,不管過去,現(xiàn)在,未來,性能優(yōu)化都是永恒的話題。 而性能優(yōu)化首先要掌握的是性能分析,通過分析才能發(fā)現(xiàn)問題所在。性能分析對于游戲開發(fā)是必

    2024年02月03日
    瀏覽(25)
  • 【萬字解析】Webpack 優(yōu)化構(gòu)建性能(分析->優(yōu)化)

    全局安裝 webpack-bundle-analyzer 插件 運(yùn)行 webpack-bundle-analyzer 開始打包,需要獲取所有的依賴模塊 搜索所有的依賴項(xiàng),這需要占用一定的時(shí)間,即搜索時(shí)間,那么就確定了: 需要優(yōu)化的第一個(gè)時(shí)間就是 搜索時(shí)間 。 解析所有的依賴模塊(解析成瀏覽器可運(yùn)行的代碼) Webpack 根據(jù)

    2024年01月21日
    瀏覽(48)
  • [MySQL] SQL優(yōu)化之性能分析

    [MySQL] SQL優(yōu)化之性能分析

    ??鍵盤敲爛,年薪30萬?? 目錄 一、索引優(yōu)化 1、索引是什么: 2、索引的數(shù)據(jù)結(jié)構(gòu): 3、索引種類: 4、sql分析(回表查詢) 二、定位慢查詢語句 1、慢查詢?nèi)罩?2、profile詳情 3、explain執(zhí)行計(jì)劃(重點(diǎn)) 4、查看執(zhí)行頻次 ? 1、索引是什么: 通過一些約束,快速查詢到相應(yīng)字段

    2024年02月05日
    瀏覽(84)
  • Unity性能優(yōu)化與分析--GPU

    Unity性能優(yōu)化與分析--GPU

    每一幀,Unity 都需要確定必須渲染哪些對象,然后創(chuàng)建繪制調(diào)用。繪制調(diào)用是調(diào)用圖形 API 來繪制對象(如三角形),而批處理是要一起執(zhí)行的一組繪制調(diào)用。 隨著項(xiàng)目變得更加復(fù)雜,您需要用管線來優(yōu)化 GPU 的工作負(fù)載。 通用渲染管線 (URP) 目前使用單通道前向渲染器將高質(zhì)

    2024年03月15日
    瀏覽(23)
  • PyTorch 模型性能分析和優(yōu)化 - 第 2 部分

    PyTorch 模型性能分析和優(yōu)化 - 第 2 部分

    動(dòng)動(dòng)發(fā)財(cái)?shù)男∈郑c(diǎn)個(gè)贊吧! 這是有關(guān)分析和優(yōu)化在 GPU 上運(yùn)行的 PyTorch 模型主題的系列文章的第二部分。在第一篇文章中,我們演示了使用 PyTorch Profiler 和 TensorBoard 迭代分析和優(yōu)化 PyTorch 模型的過程以及巨大潛力。在這篇文章中,我們將重點(diǎn)關(guān)注 PyTorch 中由于使用急切執(zhí)行

    2024年02月11日
    瀏覽(27)
  • PyTorch 模型性能分析和優(yōu)化 - 第 3 部分

    PyTorch 模型性能分析和優(yōu)化 - 第 3 部分

    這 [1] 是關(guān)于使用 PyTorch Profiler 和 TensorBoard 分析和優(yōu)化 PyTorch 模型主題的系列文章的第三部分。我們的目的是強(qiáng)調(diào)基于 GPU 的訓(xùn)練工作負(fù)載的性能分析和優(yōu)化的好處及其對訓(xùn)練速度和成本的潛在影響。特別是,我們希望向所有機(jī)器學(xué)習(xí)開發(fā)人員展示 PyTorch Profiler 和 TensorBoard 等

    2024年02月10日
    瀏覽(37)
  • Unreal Engine 虛幻引擎,性能分析,優(yōu)化(二)

    Unreal Engine 虛幻引擎,性能分析,優(yōu)化(二)

    目錄 一、CPU 性能分析 二、GPU性能分析 三、Memory內(nèi)存使用 一、CPU 性能分析 如渲染線程中出現(xiàn) CPU 受限,原因可能是繪制調(diào)用過多。這是一個(gè)常見問題,美術(shù)師通常會(huì)將繪制調(diào)用進(jìn)行組合,從而減少消耗(如:將多個(gè)墻壁組合為一個(gè)網(wǎng)格體)。實(shí)際消耗存在于多個(gè)區(qū)域中:

    2024年02月05日
    瀏覽(36)
  • kafka消費(fèi)、生產(chǎn)性能問題分析及優(yōu)化方法

    問題分析:將代碼邏輯注釋掉,直進(jìn)行拉取數(shù)據(jù)操作,性能應(yīng)為每分鐘產(chǎn)生消息的2倍以上

    2024年02月07日
    瀏覽(40)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包