除法是CPU最慢的操作之一。傳統(tǒng)設(shè)計(jì)里,除法單元獨(dú)占24+周期,期間其他指令只能干等。流水線化讓除法也能像加法一樣流水執(zhí)行,大幅提升吞吐量。這篇聊聊除法流水化的原理、實(shí)現(xiàn)和代...
除法是CPU最慢的操作之一。傳統(tǒng)設(shè)計(jì)里,除法單元獨(dú)占24+周期,期間其他指令只能干等。流水線化讓除法也能像加法一樣流水執(zhí)行,大幅提升吞吐量。這篇聊聊除法流水化的原理、實(shí)現(xiàn)和代...
CPU只有16個(gè)整數(shù)寄存器(x86-64),但現(xiàn)代處理器內(nèi)部有上百個(gè)物理寄存器。寄存器重命名技術(shù)把程序看到的"邏輯寄存器"動(dòng)態(tài)映射到"物理寄存器",消除WAW和WAR假依賴,...
流水線讓CPU同時(shí)執(zhí)行多條指令,但指令之間會(huì)打架。結(jié)構(gòu)冒險(xiǎn)搶硬件,數(shù)據(jù)冒險(xiǎn)搶數(shù)據(jù),控制冒險(xiǎn)搶方向。這篇聊聊這三種冒險(xiǎn)的本質(zhì)和應(yīng)對(duì)方法。 1. 結(jié)構(gòu)冒險(xiǎn):硬件不夠用了 1.1 ...
ROB:現(xiàn)代CPU的"指揮中心" 超標(biāo)量處理器每周期發(fā)射多條指令,但程序要求順序執(zhí)行的效果。Reorder Buffer(ROB,重排序緩沖區(qū))就是這個(gè)矛盾的核心解決方案——...
流水線讓CPU同時(shí)執(zhí)行多條指令,但數(shù)據(jù)依賴會(huì)卡住流水線。轉(zhuǎn)發(fā)(Forwarding/Bypassing)技術(shù)通過把結(jié)果直接傳給需要它的指令,避免等待寫回寄存器。x86和ARM...
CPU緩存用SRAM,內(nèi)存用DRAM,這是計(jì)算機(jī)體系結(jié)構(gòu)的基本常識(shí)。但為什么不用SRAM做主存?DRAM這些年在忙什么?這篇從物理原理到產(chǎn)業(yè)現(xiàn)實(shí)聊清楚。 1. 物理原理:6T...
緩存優(yōu)化是計(jì)算機(jī)體系結(jié)構(gòu)的核心課題。《計(jì)算機(jī)體系結(jié)構(gòu):量化研究方法》中總結(jié)了10種高級(jí)優(yōu)化技術(shù),每種都在性能、功耗、復(fù)雜度之間做取舍。 1. 降低命中時(shí)間的技術(shù) 1.1 小而...
矩陣乘法是科學(xué)計(jì)算的核心,但 naive 實(shí)現(xiàn)性能慘不忍睹。問題出在緩存——三個(gè)大矩陣來回折騰,L1緩存根本裝不下。緩存分塊(Cache Blocking/Tiling)通過...
CPU等內(nèi)存是最浪費(fèi)時(shí)間的事。硬件預(yù)?。℉ardware Prefetching)讓CPU在需要數(shù)據(jù)之前就把它從內(nèi)存抓到緩存,等真正要用的時(shí)候,數(shù)據(jù)已經(jīng)在緩存里了。 1. 為...
緩存miss了,傳統(tǒng)做法是等整個(gè)64字節(jié)塊從內(nèi)存回來再交給CPU。但CPU可能只需要其中4字節(jié)。關(guān)鍵字優(yōu)先(Critical Word First)和提前重啟動(dòng)(Early ...
緩存Bank化不只是為了提升帶寬,更是為了省電。把大緩存拆成多個(gè)小Bank,每次只激活需要的部分,功耗能降30%以上。 1. 單Bank的功耗噩夢(mèng) 想象一個(gè)32KB的L1緩存...
上一篇我們聊了寫合并,實(shí)際情況中寫文件、發(fā)網(wǎng)絡(luò)包、填顯存,如果逐字節(jié)/逐字段操作,性能會(huì)慘不忍睹。這一篇具體講講在業(yè)務(wù)代碼中可能遇到的情況。 1. 核心思想:緩沖+批量 無論...
CPU寫內(nèi)存時(shí),如果每個(gè)寫都直接發(fā)到內(nèi)存總線,效率會(huì)很低。寫緩沖區(qū)合并(Write Combining/Merging)技術(shù)把多個(gè)小寫入攢起來,打包成一個(gè)大塊一起發(fā),既省帶寬...
CPU的緩存越來越大,但單端口SRAM的訪問速度跟不上處理器的發(fā)射寬度。多緩存組(Multi-Banking)技術(shù)把一個(gè)大緩存拆成多個(gè)獨(dú)立的小塊,讓它們并行工作。 1. 單端...
緩存miss了咋整?傳統(tǒng)做法是CPU干等著,直到數(shù)據(jù)從內(nèi)存回來。無阻塞緩存(Non-blocking Cache)打破了這個(gè)規(guī)矩——即使前面有個(gè)miss正在處理,后面的請(qǐng)求該...
很多人學(xué)緩存時(shí)都被"組相聯(lián)"、"N路"這些概念搞暈。其實(shí)組和路就是緩存的兩個(gè)維度——組是行,路是列。這篇用實(shí)際芯片數(shù)據(jù)和硬件原理講清楚。 1. 組是樓層,路是房間 想象一棟公...
高相聯(lián)度緩存(8路、16路組相聯(lián))是減少?zèng)_突缺失的有效手段,但硬件復(fù)雜度過高會(huì)拖慢訪問速度。增加流水線段數(shù)能否解決這個(gè)問題? 1. 高相聯(lián)度緩存的痛點(diǎn) 組相聯(lián)緩存的訪問流程很...
芯片的靜態(tài)功耗:關(guān)不掉的"待機(jī)耗電" 做低功耗設(shè)計(jì)時(shí),靜態(tài)功耗(Static Power)是個(gè)繞不開的坑。它跟動(dòng)態(tài)功耗不同,不管芯片干不干活,只要通電就在耗電。 靜態(tài)功耗從哪...
在一些芯片相關(guān)的描述或者書籍中,經(jīng)常把"功率"和"能耗"混著用。但在實(shí)際工程中,這兩個(gè)概念差別很大。結(jié)合最近看的資料,聊聊里面的門道。 功率帶來的硬約束 現(xiàn)代芯片面臨的首要問...