算機(jī)體系結(jié)構(gòu)考點(diǎn)梳理:從ISA到流水線、Cache與MESI)
提到計(jì)算機(jī)體系結(jié)構(gòu)很多人第一反應(yīng)是背名詞Cache、流水線、Tomasulo、MESI……但真到期末拿到卷子才發(fā)現(xiàn)拉開差距的全是“算”出來的題而不是名詞默寫。山東大學(xué)的計(jì)算機(jī)體系結(jié)構(gòu)課程通常會從指令集和性能量化講起一路推進(jìn)到流水線、存儲層次和多核一致性問題表面上是概念多、模型多實(shí)際上是一條非常清晰的“成本、性能、功耗之間做權(quán)衡”的主線。這份清單不是簡單羅列知識點(diǎn)而是幫你把整門課的骨架抽出來。我會把每個(gè)模塊里最常考、最容易錯、最能拉開分差的內(nèi)容按主線串起來配上計(jì)算公式、答題套路和備考優(yōu)先級適合正在上這門課的同學(xué)、準(zhǔn)備期末的考研黨以及想快速捋清體系結(jié)構(gòu)核心框架的自學(xué)者。1. 主線怎么串ISA、微架構(gòu)和量化權(quán)衡1.1 體系結(jié)構(gòu)、組成與實(shí)現(xiàn)三層關(guān)系別混很多同學(xué)第一節(jié)課就懵了體系結(jié)構(gòu)、計(jì)算機(jī)組成、計(jì)算機(jī)實(shí)現(xiàn)這三個(gè)概念到底差在哪我當(dāng)時(shí)也繞了很久后來用一句話記住了——ISA指令集體系結(jié)構(gòu)是軟硬件之間的契約微架構(gòu)是這份契約的硬件實(shí)現(xiàn)方式。計(jì)算機(jī)體系結(jié)構(gòu)關(guān)注程序員能看到的機(jī)器屬性包括指令集、寄存器、尋址方式、數(shù)據(jù)類型這些決定了軟件能怎么用硬件。計(jì)算機(jī)組成關(guān)注微架構(gòu)層面的設(shè)計(jì)比如ALU怎么組織、數(shù)據(jù)通路怎么連、流水線怎么劃分。計(jì)算機(jī)實(shí)現(xiàn)更偏向物理實(shí)現(xiàn)關(guān)注邏輯門、電路布線、工藝參數(shù)?!爸噶罴瘹w體系結(jié)構(gòu)管數(shù)據(jù)通路和控制器歸組成管電路實(shí)現(xiàn)歸物理設(shè)計(jì)管”這是山大課程里反復(fù)強(qiáng)調(diào)的分層思想??荚嚾绻龊喆痤}讓你區(qū)分這三者一定要舉具體例子比如“加法指令存在”是體系結(jié)構(gòu)的事“加法器用超前進(jìn)位還是行波進(jìn)位”是組成的事“加法器用多少納米的工藝實(shí)現(xiàn)”是實(shí)現(xiàn)的事。1.2 ISA設(shè)計(jì)看什么寄存器、尋址方式與指令格式ISA部分的考點(diǎn)相對固定不會太深但容易出選擇、填空和名詞解釋。核心就三塊寄存器組織MIPS/RISC-V里通用寄存器數(shù)量、用途約定為什么寄存器不能太少也不能太多。尋址方式立即數(shù)、寄存器、基址偏移、PC相對尋址、偽直接尋址??荚嚦=o一條指令讓你判斷用的哪種尋址。指令格式R型、I型、S型、U型等字段劃分和位寬要能看懂。山大的題通常會給指令編碼讓你反推操作碼和寄存器編號。CISC和RISC的對比也是高頻簡答題。對比維度建議從指令長度、尋址方式數(shù)量、寄存器數(shù)量、是否支持訪存指令、硬布線還是微程序控制這幾個(gè)角度展開。記住一句話RISC把復(fù)雜度從硬件挪給了編譯器CISC相反。1.3 這門課的底層思維方式量化比較體系結(jié)構(gòu)區(qū)別于其他硬件課的關(guān)鍵是它不做“能不能實(shí)現(xiàn)”的判斷而是做“值不值得實(shí)現(xiàn)”的權(quán)衡。比如加一個(gè)轉(zhuǎn)發(fā)通路能減少多少停頓加一級Cache能把失效率降到多少這些都靠量化分析。所以復(fù)習(xí)時(shí)不要背概念要背公式、會算例。后面每一章我都會把最核心的計(jì)算公式單獨(dú)拉出來這些才是考試真正的得分點(diǎn)。2. 性能與Amdahl所有計(jì)算題的“第一性原理”2.1 CPU性能公式的正確打開方式整個(gè)體系結(jié)構(gòu)課程里最基礎(chǔ)也最重要的公式就是CPU時(shí)間CPU時(shí)間 指令數(shù)IC × 平均CPI × 時(shí)鐘周期長度其中時(shí)鐘周期長度 1 / 時(shí)鐘頻率。做題時(shí)單位換算最容易踩坑GHz和秒的關(guān)系一定要算清楚。舉個(gè)例子某程序有100萬條指令平均CPI為2.0處理器頻率2GHz則執(zhí)行時(shí)間 1,000,000 × 2.0 / 2,000,000,000 0.001秒即1ms。這個(gè)公式看起來簡單但很多題目會反過來考你給定時(shí)間反推CPI、給定CPI變化反推指令數(shù)變化。你要清楚IC、CPI、時(shí)鐘頻率三者是相互制約的。編譯器優(yōu)化可能減少指令數(shù)但引入了更復(fù)雜的指令、CPI反而升高流水線深度增加可能提高頻率但分支預(yù)測失敗懲罰也變大。我復(fù)習(xí)時(shí)喜歡把這類題的所有變量列成表先標(biāo)出哪些變化、哪些不變再套公式基本不會錯。2.2 Amdahl定律與多核下的變形Amdahl定律是用來衡量“優(yōu)化某一部分后整個(gè)系統(tǒng)能快多少”的工具公式長這樣系統(tǒng)加速比 1 / [ (1 - Fe) Fe / Se ]Fe可增強(qiáng)部分占原執(zhí)行時(shí)間的比例Se該部分增強(qiáng)后的加速比考試最愛考的場景是某個(gè)功能模塊占程序執(zhí)行時(shí)間的40%把它優(yōu)化10倍總加速比是多少代入公式1 / (0.6 0.4/10) 1 / 0.64 ≈ 1.5625。注意不是10倍也不是2.5倍因?yàn)椴荒鼙粌?yōu)化的60%始終拖后腿。還有一個(gè)變形就是多核并行場景程序有s比例的部分無法并行剩余1-s可以無限并行那么n核加速比 1 / (s (1-s)/n)。當(dāng)n趨向無窮時(shí)加速比上限是1/s這就是Amdahl對多核性能的警示。2.3 功耗墻新時(shí)代的性能指標(biāo)近幾年山大試卷里逐漸開始出現(xiàn)功耗相關(guān)題目畢竟體系結(jié)構(gòu)教材都在強(qiáng)調(diào)功耗墻。你需要掌握動態(tài)功耗公式動態(tài)功耗 P ≈ αCV2fα是翻轉(zhuǎn)率C是電容V是電壓f是頻率。從公式能看出降電壓對功耗的降低是平方級的但電壓又不能無限降因?yàn)殚撝惦妷合拗?。這就解釋了為什么單核頻率很難無限提升廠商轉(zhuǎn)而去堆多核、做亂序執(zhí)行和專用加速器。做題時(shí)經(jīng)常會問“電壓降一半、頻率降為原來0.8功耗變?yōu)槎嗌佟敝苯影垂剿憔托袆e漏掉頻率的線性影響。3. 數(shù)據(jù)表示與運(yùn)算器補(bǔ)碼、IEEE 754和加法器考點(diǎn)3.1 補(bǔ)碼運(yùn)算與溢出判斷計(jì)算機(jī)組成課里就講過補(bǔ)碼但山大體系結(jié)構(gòu)考試依然會牽涉到運(yùn)算和溢出判斷。核心考點(diǎn)有幾個(gè)補(bǔ)碼的表示范圍n位補(bǔ)碼范圍為-2^(n-1)到(2^(n-1)-1)這個(gè)不對稱特性經(jīng)??继羁?。加減法統(tǒng)一用加法器A-B就是A加B的補(bǔ)碼。溢出判斷兩個(gè)正數(shù)相加結(jié)果為負(fù)或兩個(gè)負(fù)數(shù)相加結(jié)果為正說明溢出更通用的方法是最高位進(jìn)位和符號位進(jìn)位相異則溢出。舉個(gè)例子4位補(bǔ)碼549已經(jīng)超過范圍直接計(jì)算010101001001結(jié)果是負(fù)數(shù)顯然溢出。這種題屬于送分題但很多人上來忘了補(bǔ)碼范圍直接算錯。3.2 IEEE 754浮點(diǎn)數(shù)從規(guī)格化到舍入浮點(diǎn)數(shù)這章幾乎每年都出計(jì)算題重點(diǎn)就是IEEE 754標(biāo)準(zhǔn)。單精度格式是1位符號位、8位階碼、23位尾數(shù)階碼偏置值是127雙精度對應(yīng)11位階碼、52位尾數(shù)、偏置值1023。規(guī)格化數(shù)的取值范圍、非規(guī)格化數(shù)denormal作用、無窮大和NaN的編碼規(guī)律這三塊是填空和判斷的??汀^D(zhuǎn)換計(jì)算題有個(gè)固定套路把-6.75轉(zhuǎn)成IEEE 754單精度格式。 第一步符號位為1。 第二步6.75 110.11B規(guī)格化為1.1011 × 2^2。 第三步階碼E 2 127 129 10000001B。 第四步尾數(shù)取規(guī)格化后小數(shù)點(diǎn)后的1011后面補(bǔ)零到23位。 最終結(jié)果1 10000001 10110000000000000000000。很多人丟分在忘記隱含的整數(shù)位“1”或者沒有把階碼加上偏置。練習(xí)時(shí)建議至少手算10個(gè)正負(fù)數(shù)轉(zhuǎn)換做到閉眼都能寫出步驟。舍入模式也要了解默認(rèn)的是就近舍入注意“正好在中間時(shí)舍入到偶數(shù)尾數(shù)”這條規(guī)則選擇題喜歡考。3.3 運(yùn)算部件進(jìn)位鏈、Booth與除法器山大這門課對運(yùn)算部件的考察程度取決于你之前有沒有上過計(jì)算機(jī)組成。如果組成學(xué)得扎實(shí)這節(jié)可以快速過如果是跨考或?qū)W得稀碎需要補(bǔ)三個(gè)核心點(diǎn)超前進(jìn)位加法器理解generateGA·B和propagatePA⊕B以及進(jìn)位表達(dá)式C(i1)G(i)P(i)·C(i)。這是把串行進(jìn)位延遲變成并行計(jì)算的關(guān)鍵。Booth乘法通過編碼減少部分積的數(shù)量理解為什么能處理補(bǔ)碼乘法不需要單獨(dú)處理符號位。不恢復(fù)余數(shù)除法掌握流程和判斷規(guī)則這個(gè)考得不多但一旦考到就是計(jì)算大題。復(fù)習(xí)建議是不要去背電路圖會推導(dǎo)進(jìn)位表達(dá)式、會做一行Booth編碼表就夠了。4. 存儲層次Cache、頁表和TLB的得分套路4.1 局部性原理與存儲層次存儲層次是體系結(jié)構(gòu)里最“劃算”的一章知識點(diǎn)結(jié)構(gòu)清晰題型固定拿分效率極高。根基是局部性原理時(shí)間局部性訪問過的數(shù)據(jù)短期內(nèi)還會訪問和空間局部性訪問過的地址附近很可能被訪問。存儲層次由寄存器、Cache、主存、磁盤組成往上速度越快、成本越高、容量越小往下的數(shù)據(jù)是上層的后備。經(jīng)典問題“為什么 Cache 不能做得又大又快”就是成本與性能權(quán)衡的體現(xiàn)。4.2 Cache三大映射方式與地址字段Cache計(jì)算題基本必考務(wù)必吃透下面這套參數(shù)C Cache總?cè)萘縎 組數(shù)E 每組行數(shù)相聯(lián)度B 塊大小字節(jié)關(guān)系式C S × E × B。地址被劃分成三個(gè)字段Tag標(biāo)記、Index組索引、Block Offset塊內(nèi)偏移。塊內(nèi)偏移位數(shù) log2(B)組索引位數(shù) log2(S)Tag位數(shù) 地址總位數(shù) - 塊內(nèi)偏移位數(shù) - 組索引位數(shù)。給出一道山大規(guī)模常見題64KB Cache4路組相聯(lián)塊大小64B32位物理地址求Index位數(shù)和Tag位數(shù)。 塊內(nèi)偏移 log2(64) 6位。 Cache總行數(shù) 64KB / 64B 1024行。 組數(shù)S 1024 / 4 256組Index log2(256) 8位。 Tag 32 - 6 - 8 18位。這種題想拿滿分的訣竅是畫一張“地址分段”圖把每段位數(shù)標(biāo)在對應(yīng)位置再列式計(jì)算閱卷老師看著也清晰。三種映射方式要會對比直接映射硬件簡單但沖突率高全相聯(lián)靈活、沖突率低但比較器太多組相聯(lián)是折中方案。填表對比這幾個(gè)維度基本是考試標(biāo)配。4.3 替換算法與寫策略怎么選替換算法考點(diǎn)主要是LRU、FIFO和隨機(jī)。LRU要會模擬給一個(gè)訪問序列按組內(nèi)行數(shù)維護(hù)一個(gè)“最近使用順序”缺頁時(shí)替換最久未使用的行。模擬時(shí)不建議心算畫一個(gè)小表格一行代表一個(gè)Cache行列寫訪問序列遇到缺失標(biāo)個(gè)M有同學(xué)對MVP算法結(jié)構(gòu)進(jìn)行模擬。寫策略四象限必須分清楚寫直達(dá) 寫不分配寫直達(dá) 寫分配寫回 寫分配寫回 寫不分配常見組合是“寫回配寫分配寫直達(dá)配寫不分配”。要理解為什么寫回時(shí)如果寫不分配數(shù)據(jù)不進(jìn)Cache后續(xù)讀又缺失寫回的意義就不大了。平均訪存時(shí)間公式也要背AMAT 命中時(shí)間 失效率 × 缺失代價(jià)給定命中時(shí)間、失效率、缺失代價(jià)就能算。有的題會考增加Cache容量后命中時(shí)間增加、失效率降低問總效果是變好還是變壞本質(zhì)就是代入公式算量化結(jié)果。4.4 虛擬內(nèi)存與TLB的完整翻譯流程虛擬內(nèi)存的核心是把虛擬地址翻譯成物理地址。頁表是存在主存里的映射表TLB是頁表的Cache用于加速地址翻譯。做題時(shí)一定要畫出下面的流程用虛擬頁號查詢TLBTLB命中直接拿到物理頁號拼接頁內(nèi)偏移TLB缺失去查內(nèi)存中的頁表頁表命中更新TLB并返回物理地址頁表也缺失觸發(fā)缺頁異常從磁盤換入頁面常見錯誤是把TLB缺失和缺頁搞混。TLB缺失只代表地址翻譯緩存沒命中頁表可能還在內(nèi)存里而缺頁是頁面壓根不在物理內(nèi)存中必須從磁盤調(diào)入代價(jià)高得多。多級頁表的題目偶爾出現(xiàn)核心是理解每一級頁表索引怎么分割地址。山大近年喜歡把TLB和Cache串在一道題里先算TLB的索引和Tag再算Cache的Index和Tag完整做一遍比單純背結(jié)論有用得多。5. 流水線三類冒險(xiǎn)、轉(zhuǎn)發(fā)和分支預(yù)測怎么用5.1 從單周期到五級流水線流水線這章是課程最大的一座山理解難度高、計(jì)算題多、概念題也多。先要搞清單周期和流水線的本質(zhì)區(qū)別單周期時(shí)鐘長度由最慢指令決定所有指令都執(zhí)行一個(gè)很長的時(shí)鐘周期流水線把指令執(zhí)行分成IF、ID、EX、MEM、WB五段每個(gè)時(shí)鐘周期可以啟動一條新指令時(shí)鐘長度由最慢段決定理想情況下吞吐率提升為原來近5倍但單條指令的延遲并沒有降低??荚嚦3龅幕居?jì)算題給出五段每段延遲求單周期時(shí)鐘周期和流水線時(shí)鐘周期。流水線時(shí)鐘周期 max(各段延遲) 流水線寄存器開銷千萬別漏掉寄存器延遲。5.2 三類冒險(xiǎn)的判定與解決冒險(xiǎn)是流水線的核心內(nèi)容必須能用“指令序列五級流水線圖”判斷出會出現(xiàn)什么冒險(xiǎn)、在哪個(gè)周期停頓。三類冒險(xiǎn)定義結(jié)構(gòu)冒險(xiǎn)硬件資源沖突比如只有一個(gè)存儲器IF和MEM同時(shí)訪問。解決方法是分離指令Cache和數(shù)據(jù)Cache。數(shù)據(jù)冒險(xiǎn)后面指令用到前面指令還沒寫回的結(jié)果最常見的是RAW相關(guān)??刂泼半U(xiǎn)分支指令改變了PC導(dǎo)致預(yù)取的指令作廢。數(shù)據(jù)冒險(xiǎn)的判定要能寫出來例如lw t0, 0(t1) add t2, t0, t3add在ID階段需要讀t0而lw要到WB階段才寫回t0如果不處理add會讀到舊值。處理方法優(yōu)先級是先轉(zhuǎn)發(fā)解決不了再停頓。轉(zhuǎn)發(fā)旁路是最重要的機(jī)制。要能看出從EX/MEM寄存器或MEM/WB寄存器把結(jié)果直接送到EX段ALU的輸入。但如果第一條是lw、第二條馬上用它的結(jié)果轉(zhuǎn)發(fā)也來不及因?yàn)閿?shù)據(jù)要到MEM段才有結(jié)果這時(shí)必須插一個(gè)氣泡stall??刂泼半U(xiǎn)的代價(jià)計(jì)算也很???。例如五級流水線中分支在ID段確定那么每次分支即使預(yù)測成功也可能有1個(gè)周期損失如果默認(rèn)不跳轉(zhuǎn)且實(shí)際跳轉(zhuǎn)。計(jì)算CPI的典型公式CPI 1 分支頻率 × 分支懲罰周期如果分支占20%每次分支懲罰2個(gè)周期則CPI 1 0.2×2 1.4。5.3 分支預(yù)測與超標(biāo)量基礎(chǔ)分支預(yù)測的考點(diǎn)包括靜態(tài)預(yù)測總是跳轉(zhuǎn)/總是不跳轉(zhuǎn)、一位動態(tài)預(yù)測和兩位飽和計(jì)數(shù)器預(yù)測。兩位飽和計(jì)數(shù)器狀態(tài)機(jī)強(qiáng)跳轉(zhuǎn)→弱跳轉(zhuǎn)→弱不跳轉(zhuǎn)→強(qiáng)不跳轉(zhuǎn)要能畫出來。BTB分支目標(biāo)緩沖器的簡單原理是緩存最近分支指令地址和目標(biāo)地址取指階段直接用目標(biāo)地址替代順序地址。超標(biāo)量部分重點(diǎn)理解“每周期發(fā)射多條指令”的含義掌握IPC每周期執(zhí)行指令數(shù)概念知道多發(fā)射分為靜態(tài)調(diào)度和動態(tài)調(diào)度兩大流派這是下一章Tomasulo算法的引子。6. 指令級并行與多核Tomasulo和MESI的提分區(qū)間6.1 Tomasulo算法與亂序執(zhí)行指令級并行ILP依賴硬件動態(tài)調(diào)度Tomasulo算法是必須會分析的經(jīng)典??荚囃ǔR院喆鸹虼箢}形式出現(xiàn)讓你分析某條指令在哪個(gè)周期發(fā)射、執(zhí)行、寫結(jié)果。Tomasulo的核心部件有保留站Reservation Station、寄存器結(jié)果狀態(tài)表、公共數(shù)據(jù)總線CDB。關(guān)鍵機(jī)制是寄存器重命名——通過保留站保存指令的源操作數(shù)消除了WAR和WAW冒險(xiǎn)。做題前先把概念理清Issue發(fā)射指令從指令隊(duì)列進(jìn)入保留站如果操作數(shù)就緒則標(biāo)記為Vj否則記錄來自哪個(gè)保留站Qj。Execute執(zhí)行兩個(gè)源操作數(shù)都就緒后開始計(jì)算。Write Result寫結(jié)果結(jié)果通過CDB廣播給所有等待該結(jié)果的保留站和寄存器。我復(fù)習(xí)時(shí)專門畫過一個(gè)三行指令的跟蹤表第一列是周期序號第二列是每條指令當(dāng)前狀態(tài)第三列是CDB上傳送的值。這個(gè)表一畫完整個(gè)算法的邏輯就清楚了。6.2 多核、緩存一致性與MESI多核必考緩存一致性因?yàn)槊總€(gè)核都有自己的Cache如果核A改了變量x核B還持有舊副本程序就錯了。解決思路是讓所有Cache對同一地址的訪問達(dá)成一致。MESI協(xié)議要掌握四個(gè)狀態(tài)ModifiedM數(shù)據(jù)被修改只在當(dāng)前核緩存中與內(nèi)存不一致需要寫回。ExclusiveE數(shù)據(jù)只緩存在當(dāng)前核與內(nèi)存一致。SharedS數(shù)據(jù)可能在多個(gè)核中緩存均與內(nèi)存一致。InvalidI緩存行無效。狀態(tài)轉(zhuǎn)換常見的考點(diǎn)是當(dāng)前緩存行是Modified時(shí)發(fā)生本地寫命中不需要向總線發(fā)消息直接修改如果狀態(tài)是Shared本地寫命中需要向其他核發(fā)送Invalidate使其他副本失效。監(jiān)聽協(xié)議適合總線互連簡單但擴(kuò)展性差目錄協(xié)議引入目錄記錄每個(gè)塊的共享狀態(tài)更適合大規(guī)模多核。這個(gè)對比經(jīng)常作為簡答題。6.3 存儲一致性模型與互連網(wǎng)絡(luò)存儲一致性模型是更高一層的約束。順序一致性最嚴(yán)格但性能受限x86用的是TSO全存儲定序通過寫緩沖提升性能代價(jià)是讀操作可能讀到舊值。判斷題如果出現(xiàn)“x86禁止寫緩沖重排”就是錯的?;ミB網(wǎng)絡(luò)的拓?fù)鋷缀跄昴暾催吙偩€、環(huán)形、交叉開關(guān)、2D Mesh。要會判斷拓?fù)涞亩?、直徑、對分帶寬。例?D Mesh的直徑隨節(jié)點(diǎn)數(shù)開方增長而總線、交叉開關(guān)的直徑分別是1和1但交叉開關(guān)成本是O(n2)。沒有電路基礎(chǔ)也不用慌用“城市路網(wǎng)”類比來記總線是一條單行路mesh是棋盤網(wǎng)格。7. 期末復(fù)習(xí)節(jié)奏與高頻易錯點(diǎn)7.1 高頻考點(diǎn)分層表最后一個(gè)月如果時(shí)間不夠先按下面的優(yōu)先級推進(jìn)優(yōu)先級考點(diǎn)板塊常見題型建議投入時(shí)間高Cache地址字段與命中率計(jì)算計(jì)算題2天高流水線冒險(xiǎn)與轉(zhuǎn)發(fā)/停頓大題/計(jì)算3天高Amdahl與CPU性能公式計(jì)算1天中IEEE 754轉(zhuǎn)換計(jì)算/填空1天中MESI狀態(tài)轉(zhuǎn)換簡答/選擇1.5天中Tomasulo指令跟蹤大題/簡答2天低互連網(wǎng)絡(luò)拓?fù)浼?xì)節(jié)選擇/填空0.5天低功耗公式選擇/計(jì)算0.5天注意這個(gè)優(yōu)先級只是通用經(jīng)驗(yàn)具體以老師畫的重點(diǎn)為準(zhǔn)。如果老師上課反復(fù)強(qiáng)調(diào)某個(gè)方向那優(yōu)先級一定要調(diào)。7.2 大題專門練的答題套路計(jì)算題想拿高分光會算不行要按閱卷老師喜歡的格式寫。我建議每道大題都固定四步寫已知條件把題目給的參數(shù)翻譯成公式變量。畫圖或分字段Cache題畫地址位分段流水線題畫周期表格。代公式先寫公式再代入數(shù)字避免跳步。寫結(jié)論帶單位必要時(shí)一句話說明結(jié)果的含義。比如Cache題第一步就寫出B64、E4、C64KB再算S再算Index位數(shù)、Tag位數(shù)。每一步都有得分點(diǎn)只寫最終答案一旦算錯就全盤皆輸。7.3 復(fù)習(xí)時(shí)間安排與資料建議正常節(jié)奏建議三輪復(fù)習(xí)。第一輪用5到7天把PPT和教材過一遍重點(diǎn)理解主線概念這輪不用刷太多題第二輪用5天左右集中刷題每一章先做教材例題再做課后題第三輪考前3天只看錯題和公式卡把高頻公式默寫一遍。資料方面山大本科生可以重點(diǎn)看課上配套PPT和課后作業(yè)如果想加深理解胡偉武的《計(jì)算機(jī)體系結(jié)構(gòu)教學(xué)與習(xí)題指導(dǎo)第2版》題目風(fēng)格貼近國內(nèi)考試Patterson Hennessy的《計(jì)算機(jī)體系結(jié)構(gòu)量化研究方法》適合啃核心章節(jié)性能公式、Cache、流水線、多處理器。不建議一上來就刷國外大部頭容易陷入細(xì)節(jié)。7.4 我踩過的坑和最后提醒每次說復(fù)習(xí)總會有人倒在同一個(gè)坑里沉迷看網(wǎng)課大腦覺得“我會了”一合上書本連Cache的Index位數(shù)都算不出來。體系結(jié)構(gòu)這門課非常吃“手動計(jì)算”尤其是指令級并行和Cache模擬題目一定要拿起筆在紙上完整算一遍算錯的地方才是你真正缺的知識點(diǎn)。另一個(gè)經(jīng)驗(yàn)是考前至少完整模擬一套歷年題。不要分章節(jié)做掐時(shí)間、拿白紙、按考場狀態(tài)寫答案。我當(dāng)年就是模擬的時(shí)候發(fā)現(xiàn)流水線大題寫得太慢最后考試時(shí)調(diào)整了答題順序先寫計(jì)算后寫簡答才沒在小題上耗太長時(shí)間。這套清單覆蓋了山東大學(xué)計(jì)算機(jī)體系結(jié)構(gòu)課程絕大部分核心考點(diǎn)但“看了”和“會了”之間還差著一輪又一輪的練習(xí)。把重點(diǎn)公式抄在卡片上把錯題標(biāo)出來反復(fù)做這門課拿高分的難度其實(shí)比你想象中低得多。