《超標(biāo)量處理器設(shè)計(jì)》編著者姚永斌。
《超標(biāo)量處理器設(shè)計(jì)》講述超標(biāo)量(SuperScalar)處理器的設(shè)計(jì),現(xiàn)代的高性能處理器都采用了超標(biāo)量結(jié)構(gòu),大至服務(wù)器和高性能PC的處理器,小至平板電腦和智能手機(jī)的處理器,無(wú)一例外。本書(shū)以超標(biāo)量處理器的流水線為主線展開(kāi)內(nèi)容介紹。本書(shū)主要內(nèi)容包括超標(biāo)量處理器的背景知識(shí)、流水線、順序執(zhí)行和亂序執(zhí)行兩種方式的特點(diǎn); Cache的一般性原理、提高Cache性能的方法以及超標(biāo)量處理器中的Cache,尤其是多端口的Cache; 虛擬存儲(chǔ)器的基礎(chǔ)知識(shí)、頁(yè)表、TLB和Cache加入流水線后的工作流程; 分支預(yù)測(cè)的一般性原理、在超標(biāo)量處理器中使用分支預(yù)測(cè)時(shí)遇到的問(wèn)題和解決方法以及如何在分支預(yù)測(cè)失敗時(shí)對(duì)處理器的狀態(tài)進(jìn)行恢復(fù); 一般的 RISC指令集體系的簡(jiǎn)單介紹; 指令解碼的過(guò)程,尤其是超標(biāo)量處理器中的指令解碼; 寄存器重命名的一般性原理、重命名的方式、超標(biāo)量處理器中使用寄存器重命名時(shí)遇到的問(wèn)題和解決方法以及如何對(duì)寄存器重命名的過(guò)程實(shí)現(xiàn)狀態(tài)恢復(fù); 指令的分發(fā)(Dispatch)和發(fā)射(Issue)、發(fā)射過(guò)程中的流水線、選擇電路和喚醒電路的實(shí)現(xiàn)過(guò)程; 處理器中使用的基本運(yùn)算單元、旁路網(wǎng)絡(luò)、Cluster結(jié)構(gòu)以及如何對(duì)Load/Store指令的執(zhí)行過(guò)程進(jìn)行加速; 重排序緩存(ROB)、處理器狀態(tài)的管理以及超標(biāo)量處理器中對(duì)異常的處理過(guò)程; 經(jīng)典的Alpha 21264處理器的介紹。在本書(shū)中使用了一些現(xiàn)實(shí)世界的超標(biāo)量處理器作為例子,以便于讀者加深對(duì)超標(biāo)量處理器的理解和認(rèn)識(shí)。
本書(shū)可用作高等院校電子及計(jì)算機(jī)專業(yè)研究生和高年級(jí)本科生教材,也可供自學(xué)者閱讀。
《超標(biāo)量處理器設(shè)計(jì)》編著者姚永斌。 第1章主要介紹普通處理器和超標(biāo)量處理器的一些背景知識(shí)。 第1章主要介紹普通處理器和超標(biāo)量處理器的一些背景知識(shí)。 第2章開(kāi)始講述Cache,這是由于一般的指令都是從ICache中取出來(lái)并送到流水線中的,因此流水線始于ICache,當(dāng)然,在處理器中也存在DCache,它也會(huì)在這一章進(jìn)行講述。不同結(jié)構(gòu)的Cache對(duì)處理器的性能有著重要的影響,尤其是在超標(biāo)量處理器中,每周期需要同時(shí)執(zhí)行多條指令,這給Cache的設(shè)計(jì)帶來(lái)了一些挑戰(zhàn)。 第3章主要介紹虛擬存儲(chǔ)器(Virtual Memory),因?yàn)樘幚砥髟谌≈噶畹臅r(shí)候,如果送出的是虛擬地址,那么首先需要被轉(zhuǎn)化為物理地址,然后才能夠取得指令,對(duì)數(shù)據(jù)的訪問(wèn)也是類似的,虛擬存儲(chǔ)器是現(xiàn)代操作系統(tǒng)運(yùn)行的基礎(chǔ),在處理器中需要軟硬件配合工作,才可以對(duì)虛擬存儲(chǔ)器提供完整的支持。 ……
第1章 超標(biāo)量處理器概覽 1.1 為什么需要超標(biāo)量 1.2 普通處理器的流水線 1.2.1 流水線概述 1.2.2 流水線的劃分 1.2.3 指令間的相關(guān)性 1.3 超標(biāo)量處理器的流 第1章 超標(biāo)量處理器概覽 1.1 為什么需要超標(biāo)量 1.2 普通處理器的流水線 1.2.1 流水線概述 1.2.2 流水線的劃分 1.2.3 指令間的相關(guān)性 1.3 超標(biāo)量處理器的流水線 1.3.1 順序執(zhí)行 1.3.2 亂序執(zhí)行 第2章 Cache 2.1 Cache的一般設(shè)計(jì) 2.1.1 Cache的組成方式 2.1.2 Cache的寫(xiě)入 2.1.3 Cache的替換策略 2.2 提高Cache的性能 2.2.1 寫(xiě)緩存 2.2.2 流水線 2.2.3 多級(jí)結(jié)構(gòu) 2.2.4 Victim Cache 2.2.5 預(yù)取 2.3 多端口Cache 2.3.1 True Multiport 2.3.2 Multiple Cache Copies 2.3.3 Multibanking 2.3.4真實(shí)的例子: AMD Opteron的多端口Cache 2.4 超標(biāo)量處理器的取指令 第3章 虛擬存儲(chǔ)器 3.1 概述 3.2 地址轉(zhuǎn)換 3.2.1 單級(jí)頁(yè)表 3.2.2 多級(jí)頁(yè)表 3.2.3 Page Fault 3.2.4 小結(jié) 3.3 程序保護(hù) 3.4 加入TLB和Cache 3.4.1 TLB的設(shè)計(jì) 3.4.2 Cache的設(shè)計(jì) 3.4.3 將TLB和Cache放入流水線 第4章 分支預(yù)測(cè) 4.1 概述 4.2 分支指令的方向預(yù)測(cè) 4.2.1 基于兩位飽和計(jì)數(shù)器的分支預(yù)測(cè) 4.2.2 基于局部歷史的分支預(yù)測(cè) 4.2.3 基于全局歷史的分支預(yù)測(cè) 4.2.4 競(jìng)爭(zhēng)的分支預(yù)測(cè) 4.2.5 分支預(yù)測(cè)的更新 4.3 分支指令的目標(biāo)地址預(yù)測(cè) 4.3.1 直接跳轉(zhuǎn)類型的分支預(yù)測(cè) 4.3.2 間接跳轉(zhuǎn)類型的分支預(yù)測(cè) 4.3.3 小結(jié) 4.4 分支預(yù)測(cè)失敗時(shí)的恢復(fù) 4.5 超標(biāo)量處理器的分支預(yù)測(cè) 第5章 指令集體系 5.1 復(fù)雜指令集和精簡(jiǎn)指令集 5.2 精簡(jiǎn)指令集概述 5.2.1 MIPS指令集 5.2.2 ARM指令集 5.3 Load/Store指令 5.3.1 Load指令 5.3.2 Store指令 5.4 計(jì)算指令 5.4.1 加減法 5.4.2 移位指令 5.4.3 邏輯指令 5.4.4 乘法指令 5.4.5 乘累加指令 5.4.6 特殊計(jì)算指令 5.5 分支指令 5.6 雜項(xiàng)指令 5.7 異常 第6章 指令解碼 6.1指令緩存 6.2一般情況 6.3特殊情況 6.3.1分支指令的處理 6.3.2乘累加/乘法指令的處理 6.3.3前/后變址指令的處理 6.3.4LDM/STM指令的處理 6.3.5條件執(zhí)行指令的處理 第7章 寄存器重命名 7.1概述 7.2寄存器重命名的方式 7.2.1使用ROB進(jìn)行寄存器重命名 7.2.2將ARF擴(kuò)展進(jìn)行寄存器重命名 7.2.3使用統(tǒng)一的PRF進(jìn)行寄存器重命名 7.3重命名映射表 7.3.1基于SRAM的重命名映射表 7.3.2基于CAM的重命名映射表 7.4超標(biāo)量處理器的寄存器重命名 7.4.1解決RAW相關(guān)性 7.4.2解決WAW相關(guān)性 7.5寄存器重命名過(guò)程的恢復(fù) 7.5.1使用Checkpoint 7.5.2使用WALK 7.5.3使用Architecture State 7.6分發(fā) 第8章 發(fā)射 8.1概述 8.1.1集中式VS分布式 8.1.2數(shù)據(jù)捕捉VS非數(shù)據(jù)捕捉 8.1.3壓縮VS非壓縮 8.2發(fā)射過(guò)程的流水線 8.2.1非數(shù)據(jù)捕捉結(jié)構(gòu)的流水線 8.2.2數(shù)據(jù)捕捉結(jié)構(gòu)的流水線 8.3分配 8.4仲裁 8.4.11ofM的仲裁電路 8.4.2NofM的仲裁電路 8.5喚醒 8.5.1單周期指令的喚醒 8.5.2多周期指令的喚醒 8.5.3推測(cè)喚醒 第9章 執(zhí)行 9.1概述 9.2FU的類型 9.2.1ALU 9.2.2AGU 9.2.3BRU 9.2.4其他FU 9.3旁路網(wǎng)絡(luò) 9.3.1簡(jiǎn)單設(shè)計(jì)的旁路網(wǎng)絡(luò) 9.3.2復(fù)雜設(shè)計(jì)的旁路網(wǎng)絡(luò) 9.4操作數(shù)的選擇 9.5Cluster 9.5.1Cluster IQ 9.5.2Cluster Bypass 9.6存儲(chǔ)器指令的加速 9.6.1Memory Disambiguation 9.6.2非阻塞Cache 9.6.3關(guān)鍵字優(yōu)先 9.6.4提前開(kāi)始 第10章 提交 10.1概述 10.2重排序緩存 10.2.1一般結(jié)構(gòu) 10.2.2端口需求 10.3管理處理器的狀態(tài) 10.3.1使用ROB管理指令集定義的狀態(tài) 10.3.2使用物理寄存器管理指令集定義的狀態(tài) 10.4特殊情況的處理 10.4.1分支預(yù)測(cè)失敗的處理 10.4.2異常的處理 10.4.3中斷的處理 10.4.4Store指令的處理 10.4.5指令離開(kāi)流水線的限制 第11章 真實(shí)世界的例子: Alpha 21264處理器 11.1概述 11.2取指令和分支預(yù)測(cè) 11.2.1line/way的預(yù)測(cè) 11.2.2分支預(yù)測(cè) 11.3寄存器重命名 11.4發(fā)射 11.5執(zhí)行單元 11.5.1整數(shù)的執(zhí)行單元 11.5.2浮點(diǎn)數(shù)的執(zhí)行單元 11.6存儲(chǔ)器的訪問(wèn) 11.6.1Speculative Disambiguation 11.6.2Load hit/miss Prediction 11.7退休 11.8結(jié)論參考文獻(xiàn)