計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)全套教學(xué)課件_第1頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)全套教學(xué)課件_第2頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)全套教學(xué)課件_第3頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)全套教學(xué)課件_第4頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)全套教學(xué)課件_第5頁
已閱讀5頁,還剩611頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章

計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)概述ch1-計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)概述.pptxCh2-指令系統(tǒng).pptxCh3-流水線處理器.pptxCh4-指令級(jí)并行處理.pptxCh5-內(nèi)存系統(tǒng).pptxCh6-外存系統(tǒng).pptxCh7-數(shù)據(jù)級(jí)并行.pptxCh8-多處理器.pptxCh9-計(jì)算機(jī)集群和數(shù)據(jù)中心.pptxCh10-專用加速器.pptx全套可編輯PPT課件【學(xué)習(xí)目標(biāo)】理解計(jì)算機(jī)系統(tǒng)、處理器和關(guān)鍵部件的發(fā)展過程及趨勢(shì)掌握計(jì)算機(jī)系統(tǒng)關(guān)鍵組成部件及通用架構(gòu)理解計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)定義及分類掌握計(jì)算機(jī)量化評(píng)價(jià)方式和核心指標(biāo)掌握計(jì)算機(jī)系統(tǒng)設(shè)計(jì)原則并進(jìn)行量化分析理解計(jì)算機(jī)系統(tǒng)性能評(píng)價(jià)方法和工具1.1計(jì)算機(jī)系統(tǒng)-無處不在的各種計(jì)算機(jī)計(jì)算機(jī)廣泛應(yīng)用社會(huì)生活的方方面面微型計(jì)算裝置、物聯(lián)網(wǎng)設(shè)備、移動(dòng)手機(jī)、便攜式計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、服務(wù)器、超級(jí)計(jì)算機(jī)和互聯(lián)網(wǎng)數(shù)據(jù)中心1.1.1計(jì)算機(jī)起源和發(fā)展過程-核心動(dòng)機(jī)人類使用機(jī)械裝置提高力量人類使用機(jī)械裝置提高速度人類使用機(jī)械裝置提高計(jì)算能力

算得更快、記得更多提升信息處理能力沙特王國大廈(1007m)X-15(7274KM/h)PRELUDEFLNG(60WT)中國XGC88000型履帶式起重機(jī)(2200T)中國XXX大于1,102.00PFlop/s(????)中國605KM/h君子生非異也,善假于物-荀子《勸學(xué)》1.1.1現(xiàn)代計(jì)算機(jī)起源和發(fā)展過程-計(jì)算分類機(jī)械計(jì)算算盤,根據(jù)口訣執(zhí)行四則運(yùn)算,無法自動(dòng)執(zhí)行計(jì)算方式模擬計(jì)算(風(fēng)洞、光學(xué)和量子計(jì)算等)利用特定物理過程通過輸入/輸出的映射模擬實(shí)現(xiàn)特定計(jì)算過程數(shù)字計(jì)算:通過數(shù)字表示方法進(jìn)行通用數(shù)字計(jì)算自動(dòng)數(shù)字計(jì)算1822年提出的差分機(jī)(查爾斯·巴貝奇(CharlesBabbage)1943年電子數(shù)字計(jì)算機(jī)ENIAC(ElectronicNumericalIntegratorAndComputer,電子數(shù)字積分計(jì)算機(jī))通用數(shù)字計(jì)算機(jī)1.1.1現(xiàn)代計(jì)算機(jī)起源和發(fā)展過程-圖靈機(jī)模型(理論模型)圖靈機(jī)模型-自動(dòng)機(jī)械證明圖靈工作的最初動(dòng)機(jī)來源于數(shù)學(xué)家希爾伯特提出的“判定問題”形式化證明1930年,哥德爾《論數(shù)學(xué)原理及有關(guān)系統(tǒng)的形式不可判定命題》1936年,艾倫·圖靈《論可計(jì)算數(shù)及其在判定問題中的應(yīng)用》艾倫·麥席森·圖靈為了形式化證明,提出了一種通用計(jì)算模型,也就是“圖靈機(jī)”模型圖靈機(jī)假設(shè)有一條無限長(zhǎng)方格紙帶,每個(gè)方格可以儲(chǔ)存一個(gè)符號(hào),紙帶可以左右移動(dòng)等價(jià)于定義一個(gè)有限狀態(tài)機(jī),定義狀態(tài)及相應(yīng)狀態(tài)變遷操作,狀態(tài)通過紙帶位置和內(nèi)容標(biāo)識(shí),操作就是移動(dòng)紙帶、讀、寫格子符號(hào)圖靈證明任意復(fù)雜的計(jì)算都能按照?qǐng)D靈機(jī)模型,也就是可以通過執(zhí)行特定機(jī)械操作實(shí)現(xiàn)指定計(jì)算任務(wù),也就是把計(jì)算過程看成一系列機(jī)械操作,但控制操作的“有限狀態(tài)機(jī)”依賴于所求解的問題作為一種抽象,圖靈機(jī)模型并沒有給出物理計(jì)算機(jī)具體實(shí)現(xiàn)方法1.1.1現(xiàn)代計(jì)算機(jī)起源和發(fā)展過程-馮·諾依曼計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)(工程模型)馮·諾依曼計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)(工程模型)1946年馮·諾依曼在《電子計(jì)算機(jī)邏輯設(shè)計(jì)初探》和《關(guān)于離散變量自動(dòng)計(jì)算機(jī)的草案》報(bào)告中提出了存儲(chǔ)程序和程序控制的思想程序和運(yùn)行程序所需要的數(shù)據(jù)以二進(jìn)制的形式存放到存儲(chǔ)器中(統(tǒng)一二進(jìn)制表達(dá))“存儲(chǔ)程序”是將解題的步驟編制成程序,也就是指令流“程序控制”是計(jì)算機(jī)中的控制器逐條取出存儲(chǔ)器中指令,結(jié)合計(jì)算機(jī)當(dāng)前狀態(tài),控制各功能部件進(jìn)行相應(yīng)的操作,完成數(shù)據(jù)的加工處理1.1.1現(xiàn)代計(jì)算機(jī)起源和發(fā)展過程-馮·諾依曼計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)(工程模型)現(xiàn)代計(jì)算機(jī)發(fā)展驅(qū)動(dòng)力計(jì)算機(jī)技術(shù)的高速發(fā)展離不開理論科學(xué)(軟件)、材料科學(xué)(器件)、工程科學(xué)(硬件)、應(yīng)用需求(產(chǎn)業(yè))的共同推動(dòng)處理器中的電子元件(晶體管)可以抽象為基本數(shù)字處理單元計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)發(fā)展動(dòng)力50多年來,晶體管不斷縮小,當(dāng)前晶體管尺寸為納米(ns)規(guī)模,是十分精細(xì)的人工可制造及控制單元??梢哉J(rèn)為晶體管是構(gòu)建復(fù)雜計(jì)算芯片“城市”的基本“磚石”。隨著“磚石”越來越小,而“城市”規(guī)模越來越大,芯片已經(jīng)成為人類目前最精密、最宏偉的工程造物之一如何基于海量的極小、極簡(jiǎn)元件構(gòu)造出龐大而復(fù)雜的計(jì)算機(jī)呢?如何不斷擴(kuò)展計(jì)算機(jī)的計(jì)算速度和能力的極限呢?如何把日益強(qiáng)勁的硬件轉(zhuǎn)化為多樣化功能應(yīng)用呢?在這極小和極大之間,需要一套科學(xué)理論和工程方法來指導(dǎo)計(jì)算機(jī)宏偉“城市”的設(shè)計(jì)和建設(shè),這就是計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的原理、方法和技術(shù)的研究范疇。此外,計(jì)算機(jī)工程領(lǐng)域是深度產(chǎn)業(yè)化的,芯片、元件、系統(tǒng)可能都涉及很多學(xué)科和工業(yè)領(lǐng)域,因此也需要深刻理解計(jì)算機(jī)技術(shù)發(fā)展和產(chǎn)業(yè)之間深刻的相互作用關(guān)系

1.1.2通用計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)通用計(jì)算機(jī)結(jié)構(gòu),包括硬件和軟件計(jì)算機(jī)硬件包括中央處理器(CPU)、主板、主存儲(chǔ)器(內(nèi)存)、外部存儲(chǔ)器(外存)和各種I/O設(shè)備計(jì)算機(jī)軟件采用操作系統(tǒng)管理各種硬件資源,提供抽象層支撐各種應(yīng)用程序運(yùn)行硬件是軟件的物理載體,軟件是硬件的功能擴(kuò)展Inteli9桌面計(jì)算機(jī)硬件結(jié)構(gòu)華為鯤鵬服務(wù)器系統(tǒng)結(jié)構(gòu)圖1.1.3計(jì)算機(jī)系統(tǒng)類型-通用計(jì)算機(jī)的專業(yè)分化桌面計(jì)算機(jī)(DesktopComputers)服務(wù)器(Servers)物聯(lián)網(wǎng)/嵌入式計(jì)算機(jī)(InternetofThings/EmbeddedComputers)個(gè)人移動(dòng)裝置(PersonalMobileDevice)集群/數(shù)據(jù)中心計(jì)算系統(tǒng)(Clusters/Warehouse-ScaleComputers)特性個(gè)人移動(dòng)設(shè)備桌面計(jì)算機(jī)服務(wù)器計(jì)算機(jī)集群嵌入式設(shè)備價(jià)格(元)500~10K500~30K10K~10M100K~1B10~100K處理器價(jià)格(元)100~1K500~5K1K~20K1K~20K0.1~100關(guān)鍵系統(tǒng)設(shè)計(jì)目標(biāo)成本,能耗,性能,響應(yīng)度性價(jià)比,能耗,圖形性能吞吐率,可用性,擴(kuò)展性,能耗性價(jià)比,吞吐率,能耗負(fù)載成比例成本,能耗,特定程序性能1.1.4處理器發(fā)展趨勢(shì)-半導(dǎo)體工藝發(fā)展半導(dǎo)體器件是集成電路的基石,是計(jì)算機(jī)硬件基礎(chǔ)任何物理器件在時(shí)間和空間上都有物理限制,電子在器件間傳輸會(huì)消耗時(shí)間和能量集成電路的制造工藝是用特征尺寸來衡量從1971年的10微米下降到2022年的“4納米”特征尺寸線性下降時(shí),晶體管密度將平方上升晶體管性能的提高與特征尺寸的降低成線性關(guān)系1.1.4處理器發(fā)展趨勢(shì)-摩爾定律處理器中晶體管數(shù)量的指數(shù)級(jí)增漲高登·摩爾(GordonMoore)提出,最初預(yù)測(cè)中,稱晶體管密度會(huì)每年翻一番實(shí)際上晶體管數(shù)目每年大約增長(zhǎng)40%~55%,或者說每18-24個(gè)月翻番2003年摩爾定律開始放緩,2016年實(shí)際增長(zhǎng)率為摩爾定律預(yù)測(cè)的十分之一1.1.4處理器發(fā)展趨勢(shì)-登納德縮放定律登納德縮放定律晶體管密度增加,每個(gè)晶體管尺寸變小,相應(yīng)能耗也會(huì)降低,每平方毫米硅芯片能耗幾乎保持恒定登納德縮放定律從2004年開始大幅放緩,2012年左右接近失效原因晶體管不再越小、越快、越節(jié)能處理器頻率增加受限微處理器整體功率受限結(jié)果整體而言處理器性能提升變慢,即每20年才能翻倍一次,而不是像1986年至2003年那樣每1.5年性能翻番。為了保證集成電路的可靠性,電流和電壓不能無限下降,也導(dǎo)致無法顯著提高時(shí)鐘頻率單個(gè)處理器內(nèi)開始包含高效能和高性能異構(gòu)處理核1.1.4處理器發(fā)展趨勢(shì)-處理器整體發(fā)展趨勢(shì)處理器近四十年整體發(fā)展第一階段(1978年-1986年),單處理器年增長(zhǎng)率大約為25%第二階段(1986年到2003年),處理器器件和系統(tǒng)結(jié)構(gòu)技術(shù)的共同發(fā)展促成了計(jì)算機(jī)性能年增長(zhǎng)率提升到大約為52%第三階段(2003年到2011年),單處理器年增長(zhǎng)率下降到大約為23%第四階段(2011年到2021年),性能年增長(zhǎng)率從12%降到3.5%1.1.4處理器發(fā)展趨勢(shì)-處理器整體發(fā)展趨勢(shì)25%/year52%/year23%/year12%/year3.5%/yearAX-11/780,5MHzVAX8700,22MHzSun-4/260,16.7MHzMIPSM/120,16.7MHzMIPSM2000,25MHzIBMRS6000/540,30MHzHP9000/750,66MHzDigital3000AXP/500,150MHzIBMPOWERstation100,150MHzDigitalAlphastation4/266,266MHzDigitalAlphastation5/300,300MHzDigitalAlphastation5/500,500MHzAlphaServer40005/600,600MHz21164DigitalAlphaServer84006/575,575MHz,21264ProfessionalWorkstationXP1000,667MHz21264AIntelVC820motherboard,1.0GHzPentiumIIIprocessorIBMPower4,1.3GHzIntelD850EMVRmotherboard(3.06GHz,Pentium4processorwithHyper-ThreadingTechnology)IntelXeonEE3.2GHzAMDAthlon,2.6GHzAMDAthlon64,2.8GHzIntelCore2Extreme2cores,2.9GHzIntelCorei7Extreme4cores,3.2GHz(boostto3.5Ghz)IntelCoreDuoExtreme2cores,3.0GHzIntelXeon4cores,3.3GHz(boostto3.6GHz)IntelXeon4cores,3.3GHz(boostto3.6GHz)IntelXeon6cores,3.3GHz(boostto3.6GHz)IntelCorei74cores,3.4GHz(boostto3.8GHz)IntelXeon4cores,3.6GH(boostto4.0GHz)IntelXeon4cores,3.6GH(boostto4.0GHz)IntelXeon4cores,3.7GH(boostto4.1GHz)IntelCorei74cores4.0GHz(boost4.2GHz)IntelCorei74cores4.0GHz(boost4.2GHz)IntelCorei74cores4.2GHz(boost4.5GHz)1.1.4處理器發(fā)展趨勢(shì)-Intel微處理器發(fā)展Intel處理器發(fā)展過程微處理器16位地址/總線,微碼16位地址/總線,微碼5段流水,片上指令和數(shù)據(jù)緩存,浮點(diǎn)單元2路超標(biāo)量,64位總線亂序3路超標(biāo)量亂序超流水,片上2級(jí)緩存多核,亂序,4路片上緩存,turbo多核,大小核設(shè)計(jì),turbo產(chǎn)品Intel80286Intel80386Intel80486IntelPentiumIntelPentiumProIntelPentium4IntelCorei7IntelCorei9-12900K出貨年度19821985198919931997200120152021芯片大小(mm2)47438190308217122208晶體管數(shù)量134K275K1.2M3.1M5.5M42M1750MN/A處理器核數(shù)111111416引腳數(shù)6813216827338742314001700延遲(clocks)655510221410總線帶寬(位)163232646464196196時(shí)鐘(MHz)12.5162566200150040005200每秒百萬指令(MIPS)2625132600450064K100K延遲(ns)320313200765015431.1.4處理器發(fā)展趨勢(shì)-處理器發(fā)展限制基礎(chǔ)元器件物理性能的提升速度在降低芯片功率作用甚至比連線延遲還要重要當(dāng)前降低能耗和成本、提高性能的唯一途徑是應(yīng)用定制化1.1.5關(guān)鍵部件發(fā)展-動(dòng)態(tài)隨機(jī)存儲(chǔ)器動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DynamicRandomAccessMemory,DRAM)為處理器提供數(shù)據(jù)快速存儲(chǔ)DRAM同樣采用半導(dǎo)體工藝,也遵循摩爾定律DRAM容量增長(zhǎng)速度隨時(shí)間的變化(每2-4年翻一倍)典型DRAM模塊的特征1.1.5關(guān)鍵部件發(fā)展-外部存儲(chǔ)器外部存儲(chǔ)器,也稱為外存,主要是用于持久化保存數(shù)據(jù),即使掉電之后,數(shù)據(jù)也不會(huì)丟失閃存固態(tài)盤、非易失性內(nèi)存磁盤一直是最主要的外存儲(chǔ)器件,目前人類社會(huì)絕大多數(shù)數(shù)據(jù)仍存放在磁盤中典型磁盤的屬性

磁盤3600RPM5400RPM

7200RPM10,000RPM15,000RPM15,000RPM15000RPM產(chǎn)品CDCWrenI

94145-36Seagate

ST41600Seagate

ST15150Seagate

ST39102Seagate

ST373453Seagate

ST600MX0062SeagateST900MP0126出貨年度1983199019941998200320162021容量(GB)0.031.44.39.173.4600900介質(zhì)尺寸(inch)5.255.253.53.02.52.52.5接口ST-412SCSISCSISCSISCSISASSAS帶寬(MB/s)0.6492486250300延遲(μs)48.317.112.78.85.73.621.1.5關(guān)鍵部件發(fā)展-網(wǎng)絡(luò)器件互連網(wǎng)絡(luò)多個(gè)計(jì)算部件、計(jì)算機(jī)之間的互連方式網(wǎng)絡(luò)器件的性能,尤其是帶寬,獲得了長(zhǎng)足的進(jìn)步,這也使得基于高速網(wǎng)絡(luò)的計(jì)算機(jī)集群得以出現(xiàn)并發(fā)展帶寬和延遲典型網(wǎng)絡(luò)器件的特征局域網(wǎng)以太網(wǎng)快速以太網(wǎng)

Gb以太網(wǎng)10Gb以太網(wǎng)100Gb以太網(wǎng)400Gb以太網(wǎng)IEEE標(biāo)準(zhǔn)802.3803.3u802.3ab802.3ac802.3ba802.3bs出貨年度197819951999200320102017帶寬(MB/s)10100100010k100k400k延遲(μs)3000500340190100601.1.5關(guān)鍵部件發(fā)展-計(jì)算機(jī)內(nèi)部器件的協(xié)同發(fā)展帶寬和延遲帶寬可以通過多部件方式提升延遲較難提高1.2計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)(ComputerArchitecture)和計(jì)算機(jī)體系結(jié)構(gòu)具有相同的英文名狹義計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)通常特指計(jì)算機(jī)體系結(jié)構(gòu)40年前計(jì)算機(jī)體系結(jié)構(gòu)一般特指指令集體系架構(gòu)(InstructionSetArchitecture,ISA)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)不再僅限于研究處理器,而是隨著計(jì)算機(jī)類型、功能、形態(tài)、實(shí)現(xiàn)和應(yīng)用方式多樣化而不斷拓展。計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)體現(xiàn)更一般的研究范疇處理器微架構(gòu)(Microarchitecture),微架構(gòu)用來特指處理器的硬件組織實(shí)現(xiàn)方式錢學(xué)森定義“系統(tǒng)是由相互作用、相互依賴的若干組成部分結(jié)合而成的,具有特定功能的有機(jī)整體,而且這個(gè)有機(jī)整體又是它從屬的更大系統(tǒng)的組成部分?!庇?jì)算機(jī)系統(tǒng)結(jié)構(gòu)定義為:滿足設(shè)計(jì)目標(biāo)需求的計(jì)算機(jī)軟硬部件的系統(tǒng)組織方式Patterson從功能和性能角度來,定義計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)為設(shè)計(jì)滿足目標(biāo)要求計(jì)算平臺(tái)的科學(xué)和藝術(shù)更強(qiáng)調(diào)工程目標(biāo)驅(qū)動(dòng)我們強(qiáng)調(diào)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)是構(gòu)建計(jì)算機(jī)系統(tǒng)的組織方式,是全面考慮不同規(guī)模、不同功能層次的計(jì)算機(jī)系統(tǒng)設(shè)計(jì)中個(gè)體和整體的組織原則和形式1.2.1計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)定義-整體功能需求如何組織海量晶體管實(shí)現(xiàn)應(yīng)用功能基本物理單元是晶體管,計(jì)算機(jī)系統(tǒng)世界的“原子”或者“磚”,基于“原子”,最終實(shí)現(xiàn)處理器芯片。存在無限大的設(shè)計(jì)空間計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)通過分層、分模塊設(shè)計(jì)方式,把層間、模塊內(nèi)的設(shè)計(jì)復(fù)雜度控制在一個(gè)可接受的范圍內(nèi),最終實(shí)現(xiàn)系統(tǒng)級(jí)功能計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)也研究計(jì)算機(jī)系統(tǒng)抽象層的設(shè)計(jì)方法和實(shí)現(xiàn)機(jī)制應(yīng)用物理實(shí)現(xiàn)距離太遠(yuǎn),無法僅有一步實(shí)現(xiàn)1.2.1計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)定義-多種計(jì)算機(jī)系統(tǒng)需求首先確定計(jì)算機(jī)系統(tǒng)的必要屬性和功能其次考慮在成本、可靠性、功耗、安全性等約束下最大化性能綜合設(shè)計(jì)最后充分掌握實(shí)現(xiàn)方式細(xì)節(jié)五類計(jì)算機(jī)的功能需求1.2.2計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)范疇計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)研究范疇單機(jī)系統(tǒng)結(jié)構(gòu)流水線微架構(gòu):靜態(tài)和動(dòng)態(tài)指令調(diào)度,超標(biāo)量和多線程,分支預(yù)測(cè)、猜測(cè)執(zhí)行等存儲(chǔ)層次結(jié)構(gòu):緩存策略和算法、多級(jí)緩存、虛擬內(nèi)存、外存I/O和數(shù)據(jù)管理等多處理器結(jié)構(gòu)數(shù)據(jù)緩存一致性、數(shù)據(jù)共享和同步機(jī)制、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和通信尋徑等(A)單機(jī)研究范疇(B)多處理器研究范疇(C)整體抽象視圖1.2.3計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)并行分類性能提升:采用多個(gè)部件,并能讓多個(gè)任務(wù)并行執(zhí)行邁克爾·弗林:指令流及數(shù)據(jù)流并行分類單指令流、單數(shù)據(jù)流(SISD),單指令流、多數(shù)據(jù)流(SIMD),多指令流、多數(shù)據(jù)流(MIMD),多指令流、單數(shù)據(jù)流(MISD)軟件并行:數(shù)據(jù)級(jí)并行,任務(wù)級(jí)并行(A)SISD(B)SIMD(C)MIMD(D)MISD1.3計(jì)算機(jī)系統(tǒng)評(píng)價(jià)指標(biāo)計(jì)算機(jī)是針對(duì)任務(wù)工作負(fù)載的服務(wù)裝置任務(wù)具有不同的類型、數(shù)據(jù)訪問模式等特征在給定時(shí)間內(nèi)處理的一系列任務(wù)序列稱之為工作負(fù)載工作負(fù)載具有各種特征,例如任務(wù)類型分布、強(qiáng)度變化等1.3.1性能指標(biāo)-執(zhí)行時(shí)間任務(wù)執(zhí)行時(shí)間可被觀察、被測(cè)量,是評(píng)估一個(gè)系統(tǒng)性能的核心指標(biāo)其快慢是用戶最能直觀感受到的服務(wù)體驗(yàn)響應(yīng)時(shí)間、服務(wù)時(shí)間、處理延遲等任務(wù)是相對(duì)的應(yīng)用程序,I/O請(qǐng)求通過任務(wù)執(zhí)行時(shí)間相對(duì)快慢來評(píng)價(jià)系統(tǒng)的性能高低(加速比)1.3.1性能指標(biāo)-吞吐率任務(wù)吞吐率單位時(shí)間內(nèi)完成的任務(wù)總數(shù)網(wǎng)絡(luò):每秒位數(shù)(bps);存儲(chǔ)設(shè)備:每秒兆字節(jié)數(shù)(MB/s)或者每秒I/O數(shù)(IOPS;數(shù)據(jù)庫:每秒查詢數(shù)(QPS)實(shí)際吞吐率依賴于工作負(fù)載行為服務(wù)裝置通常是被動(dòng)接受并處理任務(wù)單位時(shí)間內(nèi)任務(wù)發(fā)送數(shù)量稱之為負(fù)載強(qiáng)度不斷增加負(fù)載強(qiáng)度到一定值之后,服務(wù)裝置實(shí)際吞吐率不會(huì)再增加,這個(gè)吞吐率稱之為峰值吞吐率,也被稱為處理容量或帶寬峰值吞吐率或者帶寬是系統(tǒng)內(nèi)在稟性的反映如果系統(tǒng)只能串行執(zhí)行任務(wù),則平均吞吐率就是平均執(zhí)行時(shí)間的倒數(shù)隊(duì)列系統(tǒng)實(shí)際吞吐率提升往往也會(huì)增加響應(yīng)時(shí)間(排隊(duì)因素)1.3.2能耗和功率計(jì)算機(jī)及其部件的運(yùn)行需要消耗能量,設(shè)計(jì)者在系統(tǒng)和部件兩個(gè)層次考慮功率和電流設(shè)計(jì)首先必須確定最高功率主動(dòng)調(diào)節(jié),從而適應(yīng)電源功率供給及其變化必須考慮在內(nèi)部部件之間合理分配能量供給根據(jù)熱力學(xué)第二定律,功耗最終都會(huì)變成熱能設(shè)計(jì)時(shí)必須考慮系統(tǒng)的散熱能力,從而確定持續(xù)功耗熱設(shè)計(jì)功率(ThermalDesignPower,TDP)當(dāng)處理器達(dá)到最大負(fù)荷時(shí)所釋放的熱量,決定了冷卻需求TDP既不是峰值功率(通常高1.5倍),也不是一定時(shí)間段內(nèi)的實(shí)際平均功率系統(tǒng)典型供電應(yīng)該超過TDP,而冷卻系統(tǒng)通常設(shè)計(jì)為匹配或超過TDP不能提供足夠冷卻能力,會(huì)導(dǎo)致處理器溫度超過其最大忍耐值(結(jié)溫,JunctionTemperature)現(xiàn)代處理器提供兩個(gè)方法來幫助主動(dòng)管理過熱當(dāng)溫度接近結(jié)溫限制,電路會(huì)降低時(shí)鐘速率,從而降低功耗。如果此方法不成功,則強(qiáng)制芯片斷電能耗和能耗效率功率是單位時(shí)間消耗的能量,而能耗是一段時(shí)間內(nèi)消耗功率的總和1.3.2能耗和功率-動(dòng)態(tài)功耗CMOS芯片來說,傳統(tǒng)的主要能耗來自開關(guān)晶體管,也稱為動(dòng)態(tài)能耗。每個(gè)晶體管的能耗與該晶體管驅(qū)動(dòng)的電容性負(fù)載(Capacitive

Load)與電壓平方的乘積成正比:邏輯轉(zhuǎn)變脈沖0→1→0或1→0→1的能耗。那么一次轉(zhuǎn)換(0→1或1→0)的能耗就是:每個(gè)晶體管所需要的功率就是一次轉(zhuǎn)換的能耗與轉(zhuǎn)換頻率的乘積:對(duì)于一項(xiàng)固定任務(wù),降低時(shí)鐘頻率可以降低功率,但增加執(zhí)行時(shí)間,不一定會(huì)降低能耗1.3.2能耗和功率-動(dòng)態(tài)功耗-例子例題現(xiàn)代微處理器采用可調(diào)電壓,電壓降低15%可能導(dǎo)致頻率下降15%。這對(duì)動(dòng)態(tài)能耗和動(dòng)態(tài)功率有什么影響?解答由于電容值不變,所以能耗變化就是電壓平方之比:

動(dòng)態(tài)能耗降低為原來的72%。對(duì)于功率,需要考慮開關(guān)頻率的比值:

動(dòng)態(tài)功率降低為原來的61%。當(dāng)改進(jìn)制造工藝時(shí),晶體管的開關(guān)次數(shù)以及其開關(guān)頻率的增高強(qiáng)于負(fù)載電容和電壓的下降,從而導(dǎo)致功耗和能耗的總體上升。第一代微處理器消耗的功率低于1瓦,第一代32位微處理器(比如Intel80386)的功耗約為2瓦,而4.0GHzIntelCorei7-6700K的功耗為95瓦。如果這些熱量必須從1.5cm左右邊長(zhǎng)的芯片上消散出去,那實(shí)際已經(jīng)達(dá)到了風(fēng)冷的極限,因此現(xiàn)在處理器(包括GPU)散熱是一個(gè)重要的工程問題。1.3.2能耗和功率-時(shí)鐘頻率影響如果不能降低電壓或提高每個(gè)芯片的功率,那么時(shí)鐘頻率的增長(zhǎng)速度就會(huì)放緩1978年至1986年間,時(shí)鐘頻率每年提升不到15%,而性能每年提高22%1986年至2003年間,每年性能提升52%,時(shí)鐘頻率每年增加近40%2003年之后,時(shí)鐘頻率總增長(zhǎng)不到1倍,每年增長(zhǎng)不到2%

2%/year40%/year15%/year1.3.2能耗和功率-能耗優(yōu)化方法處理器A比處理器B高20%的功率,但是完成同樣的任務(wù),A的執(zhí)行時(shí)間是B的70%,那么A完成這個(gè)任務(wù)的總能耗為1.2*0.7=0.84對(duì)于移動(dòng)裝置,其電池電量是固定的,提高任務(wù)能效非常重要功率分配、散熱、避免熱點(diǎn)已經(jīng)成為越來越困難的問題在保證時(shí)鐘頻率和電源電壓不變的情況下閑時(shí)關(guān)閉動(dòng)態(tài)電壓-頻率調(diào)整(Dynamicvoltage-frequencyscaling,DVFS)針對(duì)典型情景的設(shè)計(jì)超頻1GHzDAS節(jié)省(%)1.8GHz2.4GHz1.3.3成本和價(jià)格計(jì)算機(jī)應(yīng)用范圍越廣,其成本和價(jià)格就越成為一個(gè)關(guān)鍵因素評(píng)估成本是非困難的成本會(huì)不斷變化,不同行業(yè)和部門能夠看到的成本是不同的決定了是否在新設(shè)計(jì)中使用某一項(xiàng)新功能或者新技術(shù)計(jì)算機(jī)組件的制造成本是也會(huì)隨著時(shí)間而降低(學(xué)習(xí)曲線)產(chǎn)量是決定成本的第二個(gè)重要因素產(chǎn)量提升縮短了學(xué)習(xí)曲線所需要的時(shí)間產(chǎn)量的增加會(huì)提高購買與制造效率產(chǎn)量增加攤銷成本1.3.3成本和價(jià)格-電路成本一個(gè)已封裝集成電路的成本為:一個(gè)晶圓上的合格芯片數(shù),需要知道每個(gè)晶圓上的晶片數(shù)、合格晶片的百分比(即晶片成品率計(jì)算晶片成本公式:更準(zhǔn)確的估算公式為:芯片制造的過程,左上角是整個(gè)晶圓,下面是切割后的晶片組(chiplet),可以分為多個(gè)質(zhì)量檔次,最好晶片制造的芯片能夠運(yùn)行更高的頻率1.3.3成本和價(jià)格-電路成本-例題1例題若晶片邊長(zhǎng)為1.5cm,求一個(gè)300mm(30cm)晶圓上的晶片數(shù)目,若晶片的邊長(zhǎng)為1.0cm,又可以有多少個(gè)晶片?解答當(dāng)晶片面積為2.25cm2時(shí):由于較大晶片的面積大了2.25倍,所以每個(gè)晶圓上的小晶片數(shù)大約多2.25倍:IntelSkylack微結(jié)構(gòu)下的晶片圖像和功能分區(qū)1.3.3成本和價(jià)格-電路成本-例題2集成電路成品率的一種簡(jiǎn)單模型是假定晶圓上的缺陷是隨機(jī)分布的,成品率與制造工藝的復(fù)雜度成反比:例題設(shè)每平方厘米上有0.047個(gè)缺陷,N為12,若晶片邊長(zhǎng)為1.5cm和1.0cm,求晶片成品率。解答晶片面積分別為2.25cm2和1.00cm2。較大晶片的成品率為:較小晶片的成品率為:1.3.4可靠度

1.3.4可靠度-例題1例題設(shè)磁盤子系統(tǒng)的組件及MTTF如下:

10個(gè)磁盤,均為1000000小時(shí)MTTF 1個(gè)ATA控制器,500000小時(shí)MTTF 1個(gè)電源,200000小時(shí)MTTF 1個(gè)風(fēng)扇,200000小時(shí)MTTF 1根ATA電纜,1000000小時(shí)MTIF采用簡(jiǎn)化假設(shè):壽命符合指數(shù)分布,各故障相互獨(dú)立,試計(jì)算整個(gè)系統(tǒng)的MTTF。解答:故障率之和為:

即為2.3*10-6,系統(tǒng)的MTTF就是故障率的倒數(shù):

略低于5年1.3.4可靠度-例題2例題磁盤子系統(tǒng)經(jīng)常備有冗余電源以提高可靠性。假設(shè)一個(gè)電源足以運(yùn)行磁盤子系統(tǒng),添加一個(gè)冗余電源提高可靠性。假定組件的壽命為指數(shù)分布,而且組件故障之間沒有相關(guān)性。計(jì)算冗余電源的可靠性。解答:冗余電源對(duì)的MTTF就是兩個(gè)量的比值,分子是從初始時(shí)刻到一個(gè)電源發(fā)生故障的平均時(shí)間,分母是在更換第一個(gè)電源之前另一電源也發(fā)生故障的幾率。因此,如果在修復(fù)第一個(gè)故障之前發(fā)生第二個(gè)故障的機(jī)會(huì)很小,那么電源對(duì)的MTTF就很大。由于有兩個(gè)電源,而且故障獨(dú)立,則在一個(gè)電源發(fā)生故障之前的平均時(shí)間為MTTF電源/2。發(fā)生第二個(gè)故障的概率有一個(gè)很好的近似:用MTTR除以另一電源發(fā)生故障之前的平均時(shí)間。因此,冗余電源對(duì)的MTTF合理近似為:

使用上個(gè)例題中的數(shù)據(jù),如果假設(shè)操作人員平均需要24小時(shí)才能注意到電源發(fā)生故障并進(jìn)行更換,則這個(gè)容錯(cuò)電源對(duì)的可靠性為:

使用電源對(duì)的可靠程度約為單電源的4150倍。1.4計(jì)算機(jī)系統(tǒng)設(shè)計(jì)原則系統(tǒng)分層設(shè)計(jì)原則并行性設(shè)計(jì)與挖掘原則局域性挖掘原則加快經(jīng)常事件原則平衡設(shè)計(jì)原則性能評(píng)價(jià)驅(qū)動(dòng)設(shè)計(jì)原則1.4.1計(jì)算機(jī)設(shè)計(jì)原則-系統(tǒng)分層設(shè)計(jì)原則計(jì)算機(jī)系統(tǒng)整體設(shè)計(jì)空間巨大且復(fù)雜,通過分層抽象設(shè)計(jì),保證每層涉及組件數(shù)量和復(fù)雜度有限計(jì)算機(jī)系統(tǒng)涉及范圍從納米級(jí)晶體管電路到百萬服務(wù)器規(guī)模的倉儲(chǔ)式計(jì)算機(jī),包含各種各樣硬件和軟件部件層間定義相對(duì)固定抽象接口,可以抽象為上層的一個(gè)基本組件這樣在每層可以進(jìn)行相對(duì)獨(dú)立的專業(yè)化、產(chǎn)業(yè)化的設(shè)計(jì)與開發(fā)。每個(gè)功能層都可以看成抽象的計(jì)算機(jī)可通過垂直層間的高效分工和合作,實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的整體演進(jìn)功能層次化劃分是計(jì)算機(jī)系統(tǒng)設(shè)計(jì)中常用的思考方式一層復(fù)雜時(shí),可以進(jìn)一步劃分例如在操作系統(tǒng)可以進(jìn)一步細(xì)化為多個(gè)功能層1.4.1計(jì)算機(jī)設(shè)計(jì)原則-系統(tǒng)分層設(shè)計(jì)原則計(jì)算機(jī)系統(tǒng)整體功能棧:電子元件到應(yīng)用縱向大體分為9個(gè)功能層物理電子層,研究基礎(chǔ)電子材料,包括晶體管(Transistors)材料(例如石墨烯)、結(jié)構(gòu)和制造工藝等器件層(Device),就是構(gòu)造基礎(chǔ)邏輯元器件(LogicGates),例如與門、與非門等邏輯電路層(LogicCircuits),包括邏輯組合電路(CombinationalLogic)和時(shí)序電路(SequentialLogic)微體系結(jié)構(gòu)層(Microarchitecture)指令集體系結(jié)構(gòu)層(InstructionSetArchitecture,ISA),注意到指令集體系結(jié)構(gòu)是計(jì)算機(jī)硬件和軟件的分界層,對(duì)于軟件而言,它實(shí)現(xiàn)硬件層的抽象;對(duì)于硬件而言,它給出基礎(chǔ)的功能需求。運(yùn)行時(shí)系統(tǒng)軟件層,包括操作系統(tǒng)、虛擬機(jī)、編譯器等,為應(yīng)用提供軟件運(yùn)行時(shí)環(huán)境開發(fā)語言和環(huán)境,提供各種編程語言和編譯平臺(tái)讓程序員根據(jù)功能需求設(shè)計(jì)應(yīng)用程序算法層,針對(duì)一些共性問題提供算法解決方案第九層是應(yīng)用層,給用戶提供功能性程序滿足特定應(yīng)用需求。1.4.1計(jì)算機(jī)設(shè)計(jì)原則-并行性設(shè)計(jì)與挖掘原則計(jì)算機(jī)系統(tǒng)中可以通過增加組件數(shù)量提高整體處理能力空間并行:增加功能相同部件的數(shù)量,每個(gè)部件獨(dú)立處理任時(shí)間并行:一組部件合作完成一個(gè)任務(wù),每個(gè)部件僅執(zhí)行任務(wù)特定環(huán)節(jié)計(jì)算機(jī)系統(tǒng)每層都可以增加并行性(系統(tǒng)并行度)任務(wù)具有并行性指令級(jí)并行、請(qǐng)求級(jí)并行和線程級(jí)并行需要發(fā)掘硬件和任務(wù)內(nèi)在并行性1.4.1計(jì)算機(jī)設(shè)計(jì)原則-局域性挖掘原則局域性原理:程序常常重復(fù)使用它們最近用過的數(shù)據(jù)和指令兩種類型:時(shí)間局域性和空間局域性時(shí)間局域性是指最近訪問過的內(nèi)容很可能會(huì)在短期內(nèi)被再次訪問空間局域性是指地址相互臨近的對(duì)象很可能會(huì)在短時(shí)間內(nèi)被用到來源于人類思考問題的方式經(jīng)驗(yàn)規(guī)律是:一個(gè)程序90%的執(zhí)行時(shí)間花費(fèi)在僅10%的代碼中局域性意味著可以根據(jù)程序最近訪問的指令,比較準(zhǔn)確地預(yù)測(cè)近期將執(zhí)行的內(nèi)容局域性原則也適應(yīng)于數(shù)據(jù)訪問行為在第5章研究?jī)?nèi)存系統(tǒng)時(shí)詳細(xì)討論局域性原理及應(yīng)用1.4.1計(jì)算機(jī)設(shè)計(jì)原則-加快經(jīng)常事件原則加快經(jīng)常性事件原則就是指重點(diǎn)關(guān)注常見情形,常見情形優(yōu)先于非常見情形優(yōu)化頻繁出現(xiàn)的場(chǎng)景,會(huì)產(chǎn)生更顯著的整體效果也適應(yīng)于可靠性,能耗優(yōu)化等方面在計(jì)算機(jī)系統(tǒng)設(shè)計(jì)中會(huì)大量使用這一簡(jiǎn)單原則。但前提是必須確定哪些是常見情形,而這通常通過統(tǒng)計(jì)和分析過去的負(fù)載行為來得到加快經(jīng)常性事件原則能使性能提高多少,可以使用Amdahl定律來量化1.4.1計(jì)算機(jī)設(shè)計(jì)原則-平衡設(shè)計(jì)原則根據(jù)設(shè)計(jì)目標(biāo)要求,協(xié)同多個(gè)部件完成任務(wù)處理流程,需要整體優(yōu)化設(shè)計(jì),保證所有部件平衡工作,避免局部成為瓶頸整體性能往往取決于瓶頸部件或者關(guān)鍵步驟的性能努力使得每個(gè)部件工作在最佳工作范圍,也就是平衡點(diǎn),從而獲得最佳性能多個(gè)系統(tǒng)指標(biāo)之間也需要平衡,需要根據(jù)設(shè)計(jì)目標(biāo),確定更好的綜合平衡點(diǎn)一旦組成部件技術(shù)進(jìn)化,可能導(dǎo)致過去較好平衡的系統(tǒng)結(jié)構(gòu)方案可能不再平衡舊平衡被打破,需要設(shè)計(jì)新的平衡I/O性能提升改變現(xiàn)有系統(tǒng)性能平衡點(diǎn)1.4.1計(jì)算機(jī)設(shè)計(jì)原則-性能評(píng)價(jià)驅(qū)動(dòng)設(shè)計(jì)原則客觀評(píng)價(jià)計(jì)算機(jī)系統(tǒng)性能時(shí)困難的由大量軟硬部件構(gòu)成的復(fù)雜系統(tǒng)工作負(fù)載也是多樣、多變的先驗(yàn)?zāi)P碗y以準(zhǔn)確預(yù)測(cè)計(jì)算機(jī)系統(tǒng)的運(yùn)行時(shí)性能在運(yùn)行時(shí)負(fù)載行為難以準(zhǔn)確實(shí)時(shí)預(yù)測(cè)多部件協(xié)同工作的最佳平衡點(diǎn)會(huì)動(dòng)態(tài)變化外部市場(chǎng)、應(yīng)用需求和內(nèi)部技術(shù)發(fā)展合力推動(dòng)計(jì)算機(jī)系統(tǒng)不斷進(jìn)化計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的演化就是基于不斷的性能評(píng)價(jià)和迭代開發(fā)系統(tǒng)設(shè)計(jì)者需要在設(shè)計(jì)時(shí)確定性能目標(biāo)、測(cè)試方法和測(cè)試平臺(tái),這也是計(jì)算機(jī)領(lǐng)域存在大量標(biāo)準(zhǔn)測(cè)試集、標(biāo)準(zhǔn)測(cè)試程序及套件的原因1.4.2Amdahl定律

1.4.2Amdahl定律-例題1假設(shè)希望改進(jìn)面向Web服務(wù)的處理器。新處理器執(zhí)行Web服務(wù)應(yīng)用程序的計(jì)算速度是原處理器的10倍。假定原處理器有40%的時(shí)間忙于計(jì)算,60%的時(shí)間等待I/O,進(jìn)行這一改進(jìn)后,所得到的總加速比為多少?解答改進(jìn)比例=0.4;局部加速比=10;總加速比為:1.4.2Amdahl定律-例題2例題圖形處理器中經(jīng)常需要的一種運(yùn)算是求平方根。浮點(diǎn)(FP)平方根的實(shí)現(xiàn)在性能方面有很大差異。假設(shè)FP平方根(FPSQR)占用一項(xiàng)關(guān)鍵圖形基準(zhǔn)測(cè)試中20%的執(zhí)行時(shí)間。第一種方案:升級(jí)FPSQR硬件,使這一運(yùn)算速度提高到原來的10倍。第二種方案是讓圖形處理器中所有FP指令的運(yùn)行速度提高到原來的1.6倍,F(xiàn)P指令占用該應(yīng)用程序一半的執(zhí)行時(shí)間。試比較這兩種設(shè)計(jì)方案。解答可以通過計(jì)算加速比來比較兩種方案。提高整體FP運(yùn)算的性能要稍好一些,原因是它的使用頻率較高。也就是加快經(jīng)常性事件原理的一種體現(xiàn)。1.4.3處理器性能公式(Iron定律)處理器以時(shí)鐘周期作為運(yùn)行時(shí)間單位,可以用時(shí)鐘周期的絕對(duì)時(shí)間(例如,1ns)或頻率(例如,1GHz)來描述時(shí)鐘周期。程序花費(fèi)CPU時(shí)間可以有兩種表示方法:

或者除了程序執(zhí)行時(shí)間之外,我們還需要關(guān)心程序執(zhí)行的指令數(shù)(IC)。之后,就可以計(jì)算執(zhí)行每條指令所需的平均時(shí)鐘周期數(shù)(CPI)。設(shè)計(jì)師使用每個(gè)時(shí)鐘周期所能執(zhí)行的指令數(shù)(IPC)作為性能指標(biāo),它是CPI的倒數(shù)。CPI的計(jì)算公式為:這個(gè)指標(biāo)可以反映不同指令集及其實(shí)現(xiàn)的特點(diǎn)。利用IC*CPI計(jì)算時(shí)鐘周期數(shù),代入上面的公式,就可以通過CPI來計(jì)算CPU時(shí)間:將第一個(gè)公式逐項(xiàng)按單位展開,可以看到各部分是怎樣組合在一起的:1.4.3處理器性能公式(Iron定律)在設(shè)計(jì)處理器時(shí),采用以下公式計(jì)算處理器總時(shí)鐘周期數(shù)目:其中,ICi表示一個(gè)程序中第i種指令的執(zhí)行次數(shù),CPIi表示第i種指令執(zhí)行所需的平均時(shí)鐘周期數(shù)。利用這一公式,CPU時(shí)間可以用以下方法來計(jì)算:總CPI為:CPI此種計(jì)算形式使用了各種指令CPIi和該指令在一個(gè)程序中所占的比例(即ICi除以指令數(shù))。CPIi應(yīng)當(dāng)通過實(shí)際測(cè)量得出,因?yàn)槎喾N因素影響,包括流水線、緩存缺失和存儲(chǔ)系統(tǒng)等??紤]前面給出的性能示例,這里改為使用指令執(zhí)行頻率的測(cè)試值和指令CPI測(cè)量值,在實(shí)際中,后者是通過模擬或硬件測(cè)試獲得的。這就是需要使用上述基于實(shí)際測(cè)試的設(shè)計(jì)原則1.4.3處理器性能公式(Iron定律)-例題1例題假設(shè)已經(jīng)進(jìn)行以下測(cè)量:FP操作頻率=25%FP操作的平均CPI=4.0其他指令的平均CPI=1.33FPSQR的頻率=2%FPSQR的CPI=20假定有兩種設(shè)計(jì)方案,一種方案將FPSQR指令的CPI降至2,另一種是把所有FP指令的CPI降至2.5。使用處理器性能公式對(duì)比這兩種方案。解答首先,觀察到僅有CPI發(fā)生變化,時(shí)鐘頻率和指令數(shù)保持不變。首先求出沒有任何改進(jìn)時(shí)的原CPI1.4.3處理器性能公式(Iron定律)-例題2從原CPI中減去節(jié)省的CPI就可以求出改進(jìn)FPSQR后的CPI:采取相同方式可以計(jì)算改進(jìn)所有FP指令后的CPI,也可以將FP的CPI和非FP指令的CPI相加,采取后一種方法的計(jì)算過程為:改進(jìn)FP指令后的CPI比改進(jìn)FPSQR指令后CPI更低,所以性能更好一些。改進(jìn)FP指令所帶來的加速比為:使用Amdahl定律可以計(jì)算出相同的加速比1.5計(jì)算機(jī)系統(tǒng)性能評(píng)價(jià)性能測(cè)量方法:基準(zhǔn)程序測(cè)試方法基準(zhǔn)測(cè)試:選擇最常用、最具代表性(覆蓋面)的程序作為標(biāo)準(zhǔn)測(cè)試程序,運(yùn)行在實(shí)際機(jī)器之上,收集統(tǒng)計(jì)運(yùn)行結(jié)果基準(zhǔn)測(cè)試應(yīng)用程序集(稱為基準(zhǔn)測(cè)試套件)例如標(biāo)準(zhǔn)性能評(píng)估機(jī)構(gòu)(SPEC)工作負(fù)載測(cè)試方法完全運(yùn)行測(cè)量真實(shí)應(yīng)用程序是最客觀的,但是安裝、調(diào)試和配置可能過于復(fù)雜宏基準(zhǔn)測(cè)試程序(Macrobenchmark):模擬部分或者全部真實(shí)應(yīng)用程序的行為微基準(zhǔn)測(cè)試程序(Microbenchmark):創(chuàng)建負(fù)載組合請(qǐng)求類型、大小、強(qiáng)度等基于追蹤記錄(Trace)測(cè)試方法從真實(shí)生產(chǎn)系統(tǒng)中抓取實(shí)際的請(qǐng)求行為并記錄到追蹤文件(trace)中,在測(cè)試系統(tǒng)時(shí),可以重放這些記錄,模擬相應(yīng)的真實(shí)生產(chǎn)負(fù)載1.5.1性能測(cè)量方法

1.5.2性能綜合評(píng)價(jià)方法

1.5.2性能綜合評(píng)價(jià)方法-實(shí)例SPEC-SSJ測(cè)試集本章附錄補(bǔ)充處理器價(jià)格和成本知識(shí)習(xí)題第2章

計(jì)算機(jī)指令集【學(xué)習(xí)目標(biāo)】理解計(jì)算機(jī)指令集體系架構(gòu)概念掌握計(jì)算機(jī)指令集體系架構(gòu)內(nèi)容理解指令集和編譯器的相互作用了解RISC-V指令集、ARMv8指令集和龍芯指令集2.1計(jì)算機(jī)指令集指令集體系架構(gòu)(InstructionSetArchitecture,ISA),簡(jiǎn)稱指令集計(jì)算機(jī)硬件具有標(biāo)準(zhǔn)接口和操作規(guī)范軟硬件的分界線本章討論內(nèi)容計(jì)算機(jī)指令集編址和尋址方式、指令類型及格式與指令集相輔相成的編譯器典型指令集,包括RISC-V指令集、ARMv8指令集和龍芯指令集2.1.1計(jì)算機(jī)指令集概述指令集提供了處理器硬件抽象定義了軟硬件系統(tǒng)之間的邏輯接口決定了CPU微架構(gòu)的具體功能在兼容指令集的前提下,軟件和硬件系統(tǒng)能各自獨(dú)立發(fā)展復(fù)雜指令集(CISC)體系結(jié)構(gòu)與精簡(jiǎn)指令集體系架構(gòu)(RISC)CISC通常提供數(shù)百條指令,為每種特定操作提供一條專用指令,這樣降低了對(duì)編譯器要求,但增加了硬件實(shí)現(xiàn)的復(fù)雜性RISC指令集僅提供必要的基礎(chǔ)指令,由編譯器將復(fù)雜操作分解為多條基礎(chǔ)指令的組合,所有數(shù)據(jù)處理源和目的都是寄存器,避免運(yùn)算指令的直接內(nèi)存操作,進(jìn)一步采用硬件流水線提升指令執(zhí)行效率現(xiàn)有CISC指令集CPU也能在硬件中采用微碼(Microcode)方式實(shí)現(xiàn)復(fù)雜指令的分解,在內(nèi)部獲得RISC指令集優(yōu)勢(shì)。而RISC指令集也適當(dāng)增加一些專用指令流行指令集Intel公司的x86指令集、ARM公司的ARM指令集,開源的RISC-V指令集2.1.1計(jì)算機(jī)指令集概述-處理過程高級(jí)C語言編寫的程序通過編譯過程生成二進(jìn)制機(jī)器碼機(jī)器碼映射到硬件表示,CPU內(nèi)部通過硬件微架構(gòu)(Microarchitecture)識(shí)別、執(zhí)行指令(機(jī)器碼)微架構(gòu)實(shí)現(xiàn)所有指令到內(nèi)部計(jì)算單元、邏輯判定單元、存儲(chǔ)單元和通訊單元等硬件功能模塊之間的映射每個(gè)基本硬件功能單元通過一套特定電路實(shí)現(xiàn)在兼容指令集的前提下,軟件和硬件系統(tǒng)能各自獨(dú)立發(fā)展2.1.1計(jì)算機(jī)指令集概述-處理器視圖CPU視圖體系結(jié)構(gòu)寄存器(Architecturalregisters)顯示寄存器(通用寄存器、狀態(tài)寄存器和指令計(jì)數(shù)器等)內(nèi)存地址空間指令執(zhí)行過程就是在當(dāng)前CPU視圖狀態(tài)下,執(zhí)行一條指令,變遷到下一個(gè)CPU視圖狀態(tài)的過程RISC類型CPU首先更新顯示寄存器,之后修改相應(yīng)的內(nèi)存地址空間,因此顯示寄存器集合就能夠代表當(dāng)前CPU狀態(tài)2.1.2指令集體系架構(gòu)指令集體系結(jié)構(gòu)定義了程序員可見的處理器視圖包括全部指令集合、每條指令格式和功能、寄存器和內(nèi)存視圖指令集是有格式的,讓CPU能夠機(jī)械地正確識(shí)別和解析所有指令指令集格式必須標(biāo)識(shí)所有的功能,這包括指令碼、尋址模式、數(shù)據(jù)類型、指令類型和指令格式,還要為寄存器命名、定義條件碼等指令集體系架構(gòu)仍然是最為重要的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)研究領(lǐng)域。通常從7個(gè)方面對(duì)于指令集體系結(jié)構(gòu)進(jìn)行定義和分類包括1)數(shù)據(jù)存取模式;2)內(nèi)存編址模式;3)內(nèi)存尋址;4)操作數(shù)類型及大?。?)操作數(shù);6)控制指令;7)指令格式2.1.3指令集數(shù)據(jù)存取模式數(shù)據(jù)訪問操作很大程度決定了ISA內(nèi)存操作數(shù)與每條典型ALU指令中總操作數(shù)的典型組合方式最常見通用計(jì)算機(jī)數(shù)據(jù)存取模式的優(yōu)勢(shì)和劣勢(shì)內(nèi)存地址的數(shù)目最大操作數(shù)個(gè)數(shù)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)類型示

例03寄存器-寄存器ARM,MIPS,PowerPC,SPARC,RISC-V12寄存器-內(nèi)存IBM360/370,Intel80x86,Motorola,68000,TITMS320C54x22內(nèi)存-內(nèi)存VAX(有三個(gè)操作數(shù)格式)33內(nèi)存-內(nèi)存VAX(有兩個(gè)操作數(shù)格式)類型優(yōu)

勢(shì)劣

勢(shì)寄存器-寄存器

簡(jiǎn)單、固定長(zhǎng)度指令編碼。簡(jiǎn)單代碼生產(chǎn)模型。指令執(zhí)行花費(fèi)時(shí)鐘相似。指令數(shù)目高于指令中采用內(nèi)存引用的系統(tǒng)結(jié)構(gòu)。指令多、指令密度低,增加了程序的代碼數(shù)量。寄存器-內(nèi)存

無需獨(dú)立的載入指令就可以訪問數(shù)據(jù)。指令格式易于編碼,可以得到很好的指令密度。在二元運(yùn)算中,源操作數(shù)會(huì)被清除,所有操作數(shù)是不等價(jià)的。在每條指令中對(duì)寄存器數(shù)目和內(nèi)存地址進(jìn)行編碼可能會(huì)限制寄存器的個(gè)數(shù)。每條指令的時(shí)鐘數(shù)會(huì)隨著操作數(shù)的位置變化內(nèi)存-內(nèi)存最緊湊。不為臨時(shí)值花費(fèi)寄存器。指令規(guī)模變化很大,特別是對(duì)于三操作數(shù)指令。此外,每條指令的工作延遲也有很大變化。內(nèi)存訪問會(huì)造成內(nèi)存瓶頸。2.2編址和尋址方式指令集首先需要建立全局存儲(chǔ)空間CPU按照地址存取寄存器、內(nèi)存中的數(shù)據(jù),使得訪存指令能夠根據(jù)指令類型和訪問地址正確存取數(shù)據(jù)。因此內(nèi)存編址方式是指令集最基礎(chǔ)內(nèi)容指令集內(nèi)存空間通常是字節(jié)編址和尋址主流CPU中,字節(jié)內(nèi)的位(bit)次序是一致的,避免位轉(zhuǎn)換CPU訪問內(nèi)存的單位是字(word)64位CPU的基本存取單元是64個(gè)bit(雙字)需要提供對(duì)字節(jié)(8位)、半字(16位)和字(32位)的訪問方式。一些指令集擴(kuò)展提供512位的訪問2.2.1內(nèi)存編址-數(shù)據(jù)對(duì)象內(nèi)部字節(jié)次序多字節(jié)數(shù)據(jù)對(duì)象訪問,必須約定存取數(shù)據(jù)對(duì)象內(nèi)部的字節(jié)次序數(shù)據(jù)對(duì)象中的字節(jié)排位方式有大端模式和小端模式x86和ARM架構(gòu)都采用小端模式CPU的D0線是最低位,而D7線是最高位以太網(wǎng)的物理層是大端的字節(jié)序2.2.1內(nèi)存編址-CPU字對(duì)齊模式在許多計(jì)算機(jī)中,對(duì)多字節(jié)數(shù)據(jù)對(duì)象進(jìn)行尋址時(shí)都必須和CPU字是對(duì)齊的s字節(jié)的數(shù)據(jù)對(duì)象,字節(jié)地址為A,如果Amods=0,則對(duì)該對(duì)象的尋址是對(duì)齊的一般CPU和內(nèi)存硬件連線是固定而且對(duì)齊的具體的對(duì)齊策略由體系結(jié)構(gòu)、操作系統(tǒng)、編譯器和語言規(guī)范定義32/64位機(jī)器上的VisualC/C++將雙精度數(shù)據(jù)類型對(duì)齊到8個(gè)字節(jié)字節(jié)地址的低3位取值對(duì)象寬度012345671字節(jié)(字節(jié))對(duì)齊對(duì)齊對(duì)齊對(duì)齊對(duì)齊對(duì)齊對(duì)齊對(duì)齊2字節(jié)(半字)對(duì)齊對(duì)齊對(duì)齊對(duì)齊2字節(jié)(半字)

未對(duì)齊未對(duì)齊未對(duì)齊未對(duì)齊4字節(jié)(字)對(duì)齊對(duì)齊4字節(jié)(字)

未對(duì)齊未對(duì)齊4字節(jié)(字)

未對(duì)齊未對(duì)齊4字節(jié)(字)

未對(duì)齊未對(duì)齊8字節(jié)(雙字)對(duì)齊8字節(jié)(雙字)

未對(duì)齊8字節(jié)(雙字)

未對(duì)齊8字節(jié)(雙字)

未對(duì)齊8字節(jié)(雙字)

未對(duì)齊8字節(jié)(雙字)

未對(duì)齊8字節(jié)(雙字)

未對(duì)齊8字節(jié)(雙字)

未對(duì)齊2.2.2尋址模式指令集確定指令在地址空間進(jìn)行精確尋址,從而得到要訪問數(shù)據(jù)對(duì)象的內(nèi)存地址、寄存器地址在訪存地址時(shí),由尋址方式指定的實(shí)際內(nèi)存地址稱為有效地址需要解決常數(shù)處理增加尋址模式能夠大幅減少指令數(shù)量,但也會(huì)增加計(jì)算機(jī)實(shí)現(xiàn)的復(fù)雜度常用的尋址方式及其示例、含義及用法2.2.2尋址模式-確定方式

常用內(nèi)存尋址方式(包括立即數(shù)尋址)使用頻率位移值的分布統(tǒng)計(jì)立即數(shù)大小分布。x軸給出表示立即值取值大小所需要的位數(shù)。0表示立即數(shù)字段值為2.2.3數(shù)據(jù)類型指令集定義指令操作的數(shù)據(jù)類型(數(shù)據(jù)對(duì)象)最常用在指令操作碼中的標(biāo)識(shí)來定義操作數(shù)的類型,能被硬件識(shí)別的標(biāo)簽對(duì)數(shù)據(jù)類型進(jìn)行標(biāo)記操作數(shù)類型(整數(shù)、單精度浮點(diǎn)、字符等)的有效地址決定了其大小。常見操作數(shù)類型包括字符(8位)、半字(16位)、字(32位)、單精度浮點(diǎn)(單字)和雙精度浮點(diǎn)(雙字)整數(shù)幾乎都是用二進(jìn)制補(bǔ)碼數(shù)字表示;浮點(diǎn)數(shù)通常都使用IEEE754浮點(diǎn)標(biāo)準(zhǔn)近年指令集支持向量或矩陣數(shù)據(jù)類型基準(zhǔn)測(cè)試程序中訪問數(shù)據(jù)類型的大小分布2.3.1指令類型及格式指令集功能類型和格式遵循加快經(jīng)常性事件設(shè)計(jì)原則,通常簡(jiǎn)單、基礎(chǔ)操作為最頻繁執(zhí)行的指令指令功能完備性,必要功能指令都需要支持大多數(shù)指令集支持的操作類型操作符類型示例算數(shù)與邏輯整數(shù)算術(shù)與邏輯運(yùn)算:加、減、與、或、乘、除數(shù)據(jù)傳送Load-Store(在采用內(nèi)存尋址的計(jì)算機(jī)上為move指令)控制分支、跳轉(zhuǎn)、過程調(diào)用與返回、陷入系統(tǒng)操作系統(tǒng)調(diào)用、虛擬內(nèi)存管理指令浮點(diǎn)浮點(diǎn)運(yùn)算:加、乘、除、比較十進(jìn)制十進(jìn)制加、十進(jìn)制乘、二進(jìn)制到字符的轉(zhuǎn)換字符串字符串移動(dòng)、字符串比較、字符串搜索圖形像素與點(diǎn)操作、壓縮/解壓縮操作2.3.1指令類型-80x86實(shí)例80x86中執(zhí)行最多的前10類指令來自于5個(gè)SPECint92程序的均值,占流行整數(shù)程序的96%主體都是簡(jiǎn)單指令新應(yīng)用場(chǎng)景增加新指令一些特殊強(qiáng)化指令、向量指令一組同步指令和內(nèi)存訪問一致性指令排位80x86指令整數(shù)均值(占所執(zhí)行指總數(shù)的百分比)1Load載入22%2條件分支20%3比較16%4Store存儲(chǔ)12%5加8%6與6%7減5%8寄存器之間值的移動(dòng)4%9調(diào)用1%10返回1%總計(jì)96%80x86中執(zhí)行最多的前10類指令2.3.2控制流指令-類型及參數(shù)選擇控制流指令實(shí)現(xiàn)程序分支與跳轉(zhuǎn),分為4種不同類型:1)條件分支2)跳轉(zhuǎn)3)過程調(diào)用4)過程返回確定分支指令頻率2.3.2控制流指令-尋址方式控制流指令需要明確目標(biāo)地址分支指令包含地址或者地址計(jì)算模式使用程序計(jì)數(shù)器(PC)加上偏移量方式尋址,稱為PC相對(duì)分支指令高級(jí)語言表達(dá)分支語義case或switch語句:大多數(shù)編程語言中都會(huì)運(yùn)行時(shí)選擇一個(gè)候選項(xiàng)虛擬函數(shù)或虛擬方法:C++或Java等面向?qū)ο笫秸Z言允許根據(jù)參數(shù)類型調(diào)用不同例程高階函數(shù)或函數(shù)指針:C或C++等語言允許以參數(shù)方式傳遞一些函數(shù),提供面向?qū)ο缶幊虅?dòng)態(tài)共享庫:允許運(yùn)行時(shí)加載和鏈接庫函數(shù),而不是在運(yùn)行程序之前進(jìn)行靜態(tài)加載和鏈接通常采用寄存器間接跳轉(zhuǎn),統(tǒng)計(jì)分支偏移量分布確定其距離2.3.2控制流指令-條件分支選項(xiàng)條件分支的判定方式條件分支中不同比較類型的使用頻率2.3.2控制流指令-過程調(diào)用選項(xiàng)過程調(diào)用和返回包括控制轉(zhuǎn)移和上下文保存過程返回地址需要保存在特殊鏈接寄存器,或者保存通用寄存器中兩種基本約定方式:保存在調(diào)用位置或者被調(diào)用過程內(nèi)部。調(diào)用者保存是指發(fā)出調(diào)用的過程必須保存它希望在調(diào)用之后進(jìn)行訪問的寄存器,因此,被調(diào)用的過程不需要為寄存器操心。被調(diào)用者保存與之相反:被調(diào)用過程必須保存它希望使用的寄存器,而調(diào)用者不受限制多數(shù)實(shí)際系統(tǒng)都采用這兩種機(jī)制的組合方式。這一約定在應(yīng)用程序二進(jìn)制接口(ABI)中指定,它確定了一些基本規(guī)則,指出哪些寄存器應(yīng)當(dāng)由調(diào)用者保存或被調(diào)用者保存2.3.3指令格式-指令編碼考量指令格式能讓硬件電路快速識(shí)別操作和操作數(shù)指令格式規(guī)格化特定字段,并且編碼描述操作、尋址方式等較早的計(jì)算機(jī)有1-5個(gè)操作數(shù),每個(gè)操作數(shù)有10種尋址方式,這樣導(dǎo)致較大組合空間Load-Store計(jì)算機(jī)可以將尋址方式嵌入到操作碼中統(tǒng)一編碼指令進(jìn)行編碼時(shí),確定寄存器字段和尋址方式字段寄存器數(shù)目和尋址方式的數(shù)目都對(duì)指令大小有顯著影響1)寄存器和尋址方式的數(shù)量;2)寄存器字段和尋址方式字段大小對(duì)平均指令長(zhǎng)度的影響;3)編碼后的指令長(zhǎng)度易于以流水線實(shí)施方式處理。指令長(zhǎng)度最好為字節(jié)的倍數(shù)。許多指令集已經(jīng)選擇使用固定長(zhǎng)度的指令格式加快硬件譯碼,但這也會(huì)增加代碼大小通用寄存器數(shù)目是由ISA決定的,寄存器字段單獨(dú)編碼,但平衡寄存器數(shù)量2.3.3指令格式-指令編碼類型通用寄存器數(shù)目是由ISA決定的,寄存器字段單獨(dú)編碼,但平衡寄存器數(shù)量常見指令編碼方式變長(zhǎng)編碼定長(zhǎng)編碼混合編碼方法采用固定16位格式的RISC指令集新混合RISC指令集,同時(shí)擁有16位和32位指令。這些較短的指令支持較少的運(yùn)算、較小的地址與立即數(shù)字段、較少的寄存器和兩地址格式指令編碼的三種基本變體:變長(zhǎng)編碼、定長(zhǎng)編碼、混合編碼2.4編譯器-編譯器架構(gòu)編譯器技術(shù)對(duì)于設(shè)計(jì)、實(shí)現(xiàn)指令集是至關(guān)重要的編譯器把高層語言程序傳化為可以在CPU上運(yùn)行的二進(jìn)制指令流幾乎所有的臺(tái)式機(jī)和服務(wù)器應(yīng)用程序都是用高級(jí)語言編寫的。這意味著,絕大多數(shù)程序指令都是編譯器生成的,所以指令集體系結(jié)構(gòu)最主要的“用戶”就是編譯器編譯器整體結(jié)構(gòu)和編譯過程每種編程語言都有一個(gè)和語言相關(guān)的前端,也稱之為分析(analysis),把源程序分級(jí)成為多個(gè)組成要素及其之間的語法結(jié)構(gòu),通過要經(jīng)過詞法分析、語法分析、語義分析和中間代碼生成器,得到中間表示和符號(hào)表。之后節(jié)點(diǎn)整體成為綜合(synthesis),進(jìn)一步分為于機(jī)器無關(guān)的高級(jí)優(yōu)化階段、代碼生成階段、目標(biāo)機(jī)器相關(guān)代碼的優(yōu)全局優(yōu)化階段。編譯器通常需要通過2-4遍掃描優(yōu)化程序,程度更高的優(yōu)化會(huì)需要更多遍的掃描2.4.1編譯器架構(gòu)-編譯器目標(biāo)及優(yōu)化分類編譯器的首要目標(biāo)是確保正確性,其次是確保編譯后的代碼執(zhí)行速度編譯器多次掃描將抽象的高級(jí)語義表示逐漸轉(zhuǎn)換為更具體、更確定的低層表示,最后達(dá)到指令級(jí)別。在這個(gè)過程中可以控制每層轉(zhuǎn)換的復(fù)雜度,從而更容易編寫正確的編譯器編譯器整體結(jié)構(gòu)和編譯過程編譯器設(shè)計(jì)與實(shí)現(xiàn)是一個(gè)很復(fù)雜的工程,執(zhí)行優(yōu)化的程度受限于編譯復(fù)雜度編譯步驟次序和指令集體系結(jié)構(gòu)是相互影響現(xiàn)代編譯器執(zhí)行的優(yōu)化方面分類:高層優(yōu)化,一般對(duì)高級(jí)語言源代碼執(zhí)行,并將輸出結(jié)果傳送給后續(xù)的優(yōu)化掃描局域優(yōu)化,僅對(duì)無分支代碼段(編譯器設(shè)計(jì)者稱為基本塊)內(nèi)的代碼進(jìn)行優(yōu)化全局優(yōu)化,將本地優(yōu)化擴(kuò)展到分支范圍之外,并引入一組專為優(yōu)化循環(huán)的轉(zhuǎn)換寄存器分配,將寄存器與操作數(shù)關(guān)聯(lián)在一起與CPU相關(guān)的優(yōu)化,嘗試充分利用目標(biāo)體系結(jié)構(gòu)的特性進(jìn)行專門優(yōu)化2.4.1編譯器架構(gòu)-寄存器分配編譯器基本操作之一是寄存器分配寄存器是最快的數(shù)據(jù)存儲(chǔ)單元,其分配效果對(duì)于CPU執(zhí)行過程至關(guān)重要寄存器使用分為兩個(gè)過程:寄存器分配和寄存器指派寄存器分配指在每個(gè)時(shí)間點(diǎn),選擇一組將被放到寄存器中的變量寄存器指派為每個(gè)變量分配一個(gè)寄存器寄存器分配算法稱為圖(Graph)著色技術(shù)基本思想是構(gòu)造一幅變量關(guān)系圖(例如數(shù)據(jù)相關(guān)),從而進(jìn)行寄存器合理分配,就是使用有限種顏色(不同寄存器)使相關(guān)圖中兩個(gè)相鄰節(jié)點(diǎn)的顏色都不相同(不會(huì)沖突)重點(diǎn)是將活躍變量全部分配到不同寄存器中圖著色最好使用至少16個(gè)通用寄存器,對(duì)于整數(shù)變量進(jìn)行全局分配2.4.2編譯優(yōu)化-典型優(yōu)化編譯質(zhì)量:代碼大小和運(yùn)行速度給定程序可以實(shí)現(xiàn)為多種指令序列,不同實(shí)現(xiàn)具有不同的運(yùn)行效果編譯器與高級(jí)語言之間的關(guān)系顯著影響生產(chǎn)機(jī)器代碼的質(zhì)量針對(duì)高級(jí)語言用來保存數(shù)據(jù)的三個(gè)獨(dú)立結(jié)構(gòu)進(jìn)行分析。棧:用于本地變量分配全局?jǐn)?shù)據(jù)區(qū):聲明為靜態(tài)分配對(duì)象的使用,比如全局變量和常量堆:用于不符合棧規(guī)則的動(dòng)態(tài)對(duì)象分配2.4.2編譯優(yōu)化-典型優(yōu)化類型這組示例來源于一組12個(gè)小型Fortran和Pascal程序中的優(yōu)化使用頻率在測(cè)量過程中,編譯器共完成了11個(gè)局域優(yōu)化與全局優(yōu)化給出了這些優(yōu)化中的6種的百分比,剩下5種的靜態(tài)優(yōu)化所占比例之和為18%主要優(yōu)化類型及每種類型的示例2.4.2編譯優(yōu)化-指令集特性指令集特性可以幫助更好地編寫編譯器:指令功能格式的正則性提供基礎(chǔ)原語平衡多因素盡量在編譯時(shí)確定和使用常量設(shè)計(jì)考量寄存器數(shù)量:新指令集體系結(jié)構(gòu)中至少擁有16個(gè)通用寄存器(另外用于浮點(diǎn)數(shù)的寄存器不計(jì)在內(nèi)),以簡(jiǎn)化使用圖著色的寄存器分配正交性:意味著所支持的全部尋址方式都適用于所有傳送數(shù)據(jù)的指令。簡(jiǎn)單性:提供原語而非解決方案、簡(jiǎn)化候選項(xiàng)之間的權(quán)衡、不要在運(yùn)行時(shí)綁定常量在指令集設(shè)計(jì)中,少就是多2.4.3多媒體指令科學(xué)計(jì)算和多媒體應(yīng)用都需要處理向量,而向量具有內(nèi)部數(shù)據(jù)(元素)并行性向量計(jì)算機(jī)的一個(gè)主要優(yōu)勢(shì)一次載入多個(gè)元素,然后將執(zhí)行與數(shù)據(jù)傳輸重疊起來,從而隱藏內(nèi)存訪問的延遲SIMD指令通常是向量指令集體系結(jié)構(gòu)的簡(jiǎn)化版,通常處理較短的向量,具有特定的編譯方式2.4.4擴(kuò)展指令集各種應(yīng)用涌現(xiàn),需要擴(kuò)展出特殊指令以更好支持特定應(yīng)用場(chǎng)景同步和一致性指令協(xié)調(diào)多線程并發(fā)工作需要引入原子和一致性操作,這也是指令集普遍支持的。原子表示某一處理器內(nèi)存讀寫之間的過程不會(huì)被打斷,內(nèi)存值也不會(huì)被其它處理器修改虛擬化指令集在主機(jī)操作系統(tǒng)中進(jìn)一步分層,底層是虛擬機(jī)控制器(VirtualMachineMonitor,VMM),上層支持運(yùn)行多個(gè)虛擬機(jī)。這也是計(jì)算機(jī)系統(tǒng)分層原則的體現(xiàn)。但是現(xiàn)有操作系統(tǒng)和應(yīng)用是運(yùn)行在不同CPU級(jí)別的,一些特權(quán)指令和敏感指令不能在應(yīng)用層執(zhí)行,為了解決這個(gè)問題,在軟件層面可以使用解釋執(zhí)行、動(dòng)態(tài)二進(jìn)制翻譯、掃描和翻譯和半虛擬化技術(shù),但是這增加額外的處理流程和延遲安全擴(kuò)展指令集當(dāng)前CPU提供基于硬件的內(nèi)存加密,將內(nèi)存中的特定應(yīng)用代碼和數(shù)據(jù)隔離開來,以免受到擁有更高權(quán)限的進(jìn)程的影響,例如旁路攻擊2.5RISC-V指令集加州大學(xué)伯克利分校在2010年發(fā)布的第五代RISC通用指令集架構(gòu),融合了ARM、MIPS等RISC指令系統(tǒng)的優(yōu)勢(shì),重新設(shè)計(jì)了的一套開源指令系統(tǒng)采用大量通用寄存器、易于流水線化和一組精簡(jiǎn)指令,包括32位和64位指令集核心指令集RV32I以及4個(gè)標(biāo)準(zhǔn)擴(kuò)展集:RV32M(乘除法)、RV32F(單精度浮點(diǎn))、RV32D(雙精度浮點(diǎn))、RV32A(原子操作),核心指令集RV32I只包括47條指令,其指令格式規(guī)整,易于硬件實(shí)現(xiàn),可用于嵌入式應(yīng)用提供模塊化可選擴(kuò)展,包括乘法(RV32M),單精度浮點(diǎn)(RV32F)和雙精度浮點(diǎn)(RV32D)尋址模式:偏移量(12-16位大?。⒘⒓磾?shù)(8-16位大?。┖烷g接寄存器數(shù)據(jù)大小和類型:8位、16位、32位和64位整數(shù)和64位IEEE754浮點(diǎn)數(shù)支持簡(jiǎn)單操作指令包括:加載、存儲(chǔ)、加、減、移動(dòng)寄存器-寄存器和移位支持條件指令包括比較相等、比較不相等、比較小于、分支(帶有PC相對(duì)地址至少8位長(zhǎng))、跳轉(zhuǎn)、調(diào)用和返回使用固定指令編碼模式,也支持可變指令編碼。提供的ISA壓縮指令集擴(kuò)展從而減少代碼大小提供至少16個(gè),最好是32個(gè)通用寄存器,確保所有尋址模式適用于所有數(shù)據(jù)傳輸指令2.5RISC-V指令集RV32I指令系統(tǒng),該指令系統(tǒng)包括47條整型指令,可支持操作系統(tǒng)的運(yùn)行RV32I為定長(zhǎng)指令集,但操作碼字段預(yù)留了擴(kuò)展空間,可以擴(kuò)展為變長(zhǎng)指令,但指令字長(zhǎng)必須是雙字節(jié)對(duì)齊,RISC-V包括6種指令格式2.6龍芯指令集國產(chǎn)自主可控的龍芯系列通用處理器LoongArch仍采用RISC指令集原則,32位定長(zhǎng)指令、32個(gè)通用寄存器、32個(gè)浮點(diǎn)/向量寄存器,具體包括基礎(chǔ)指令337條、虛擬機(jī)擴(kuò)展10條、二進(jìn)制翻譯擴(kuò)展176條、128位向量擴(kuò)展1024條、256位向量擴(kuò)展1018條,共計(jì)2565條原生指令。相對(duì)于MIPS,LoongArch單條指令支持的立即數(shù)從MIPS的最大16位擴(kuò)展到最大24位,分支跳轉(zhuǎn)偏移也從64K擴(kuò)展到1M字節(jié)。此外,MIPS只有3種指令格式,LoongArch重新設(shè)計(jì)了指令格式,類型擴(kuò)大到了9種,包含3種無立即數(shù)格式和6種有立即數(shù)格式本章附錄附錄內(nèi)容說明附錄B進(jìn)一步介紹了指令集相關(guān)的擴(kuò)展知識(shí),并按照本章的相關(guān)主題進(jìn)行了分類在2.2節(jié)基礎(chǔ)之上增加了尋址方式-實(shí)例(附錄B.1.1)、數(shù)據(jù)類型-實(shí)例(附錄B.1.2)在2.3節(jié)基礎(chǔ)之上增加了控制流指令-實(shí)例(附錄B.2.1)和指令格式(附錄B.2.2在2.4節(jié)基礎(chǔ)之上增加了編譯優(yōu)化-實(shí)例(附錄B.3.1)和多媒體指令-例子(附錄B.3.2)介紹了ARM指令集(附錄B.4)。習(xí)題第3章

指令流水線【學(xué)習(xí)目標(biāo)】理解通過微架構(gòu)實(shí)現(xiàn)指令集掌握指令流水線原理及性能分析掌握和分析指令流水線沖突掌握數(shù)據(jù)沖突原因及解決思路掌握分支沖突原因及解決思路掌握流水線具體實(shí)現(xiàn)方法3.1指令集實(shí)現(xiàn)指令集ISA是軟硬件的分界線,指令集的硬件實(shí)現(xiàn)稱為微架構(gòu)解析指令格式,并執(zhí)行相應(yīng)功能具體過程對(duì)于程序員和軟件來說是透明的微架構(gòu)指令執(zhí)行流水線、超標(biāo)量處理(多指令發(fā)射)、緩存機(jī)制、內(nèi)存存取調(diào)度策略、猜測(cè)執(zhí)行、時(shí)鐘門、預(yù)取機(jī)制、電壓/頻率調(diào)節(jié)、糾錯(cuò)等功能保證軟件的兼容性,指令集保持不變,但是微架構(gòu)會(huì)不斷優(yōu)化早期的處理器設(shè)計(jì)者主要考慮電路的正確性,當(dāng)前的處理器設(shè)計(jì)者主要考慮處理器架構(gòu)的執(zhí)行性能、擴(kuò)展功能、控制能耗和效率提升等方面。3.1.1基本邏輯電路微結(jié)構(gòu)硬件由邏輯電路部件構(gòu)成一個(gè)邏輯電路實(shí)現(xiàn)輸入線和輸出線的功能映射通過真值表描述輸入和輸出之間的邏輯關(guān)系進(jìn)一步分解為基本門電路的組合傳播延遲(propagationdelay)輸入信號(hào)的改變導(dǎo)致輸出信號(hào)的改變,改變過程需要時(shí)間邏輯電路包括組合電路:輸出嚴(yán)格依賴于輸入的組合基本門電路(例如與、或、非、異或等)、多路選擇器、

解碼器、可編程邏輯陣列等時(shí)序電路:輸出依賴于前期的數(shù)據(jù)輸出和當(dāng)前的數(shù)據(jù)輸入鎖存器(Latch)和D觸發(fā)器(Flip-Flop)邏輯電路模型時(shí)序電路3.1.1基本邏輯電路組合邏輯和時(shí)序路徑電路可以構(gòu)造出更復(fù)雜的邏輯電路部件數(shù)據(jù)存儲(chǔ)部件(A)是一個(gè)32位的指令計(jì)數(shù)器(B)是32位尋址的指令存儲(chǔ)器結(jié)構(gòu)(C)是32個(gè)32位寄存器組,能夠?qū)崿F(xiàn)兩端讀和單端寫(D)是32位尋址的數(shù)據(jù)存儲(chǔ)器結(jié)構(gòu)(A)指令計(jì)數(shù)器

(B)指令存儲(chǔ)器(C)寄存器文件(D)數(shù)據(jù)存儲(chǔ)器3.1.2處理器單周期實(shí)現(xiàn)-基本原理CPU運(yùn)行就是自動(dòng)執(zhí)行有限狀態(tài)機(jī)在當(dāng)前CPU狀態(tài)下(ArchitecturalState),讀取、執(zhí)行一條指令及處理相應(yīng)數(shù)據(jù)之后,產(chǎn)生新的CPU狀態(tài),每個(gè)時(shí)鐘周期執(zhí)行一步從微架構(gòu)角度來看,處理器硬件對(duì)于一條指令的執(zhí)行進(jìn)一步分為數(shù)據(jù)路徑和控制路徑數(shù)據(jù)路徑包含數(shù)據(jù)存儲(chǔ)和計(jì)算部件指令計(jì)數(shù)器、指令寄存器、寄存器組、算術(shù)邏輯運(yùn)算單元和主存等單元當(dāng)前所有數(shù)據(jù)存儲(chǔ)單元的值確定了CPU當(dāng)前系統(tǒng)狀態(tài)控制路徑就是控制指令在數(shù)據(jù)路徑中的執(zhí)行過程控制路徑中獲取指令,并告訴數(shù)據(jù)路徑如何執(zhí)行這條指令控制器根據(jù)當(dāng)前指令,控制指令和數(shù)據(jù)在數(shù)據(jù)路徑中有序受控流動(dòng)(A)處理過程(B)數(shù)據(jù)和控制路徑3.1.2處理器單周期實(shí)現(xiàn)-基本執(zhí)行過程在RISC處理器上執(zhí)行addrd,rs1,rs2的數(shù)據(jù)路徑和時(shí)序第一個(gè)階段MA:=PCmeansRegSel=PC;RegW=0;RegEn=1;MALd=1第二個(gè)階段B:=Reg[rs2]meansRegSel=rs2;RegW=0;RegEn=1;BLd=1A:=Reg[rs1]meansRegSel=rs1;RegW=0;RegEn=1;BLd=1第三個(gè)階段Reg[rd]:=A+BmeansALUop=Add;ALUEn=1;RegSel=rd;RegW=1最后Reg[rd]=Reg[rs1]+Reg[rs2]PC=PC+43.1.2處理器單周期實(shí)現(xiàn)-數(shù)據(jù)和控制路徑簡(jiǎn)單RISC-V處理器的完整數(shù)據(jù)路徑和控制路徑單周期實(shí)現(xiàn)處理器中指令執(zhí)行的五個(gè)階段3.1.2處理器單周期實(shí)現(xiàn)-關(guān)鍵路徑單周期處理器中,時(shí)鐘周期是由最長(zhǎng)的指令執(zhí)行時(shí)間決定的需要分析其關(guān)鍵路徑(最長(zhǎng)組合邏輯電路通道)的總延遲,并做針對(duì)性優(yōu)化也可把一個(gè)長(zhǎng)時(shí)鐘周期分解為多個(gè)短時(shí)鐘周期(微指令思想)執(zhí)行階段IFIDEXMEMWB整體延遲執(zhí)行部件內(nèi)存寄存器邏輯運(yùn)算內(nèi)存寄存器R型指令2005010050400I型指令2005010050400取數(shù)據(jù)指令2005010020050600寫數(shù)據(jù)指令20050100200550分支20050100350跳轉(zhuǎn)200200LOAD指令執(zhí)行關(guān)鍵路徑和延遲不同類型指令的關(guān)鍵路徑和延遲3.1.2處理器單周期實(shí)現(xiàn)-微碼例子微指令寫使用寄存器傳輸:MA:=PCmeansRegSel=PC;RegW=0;RegEn=1;MALd=1B:=Reg[rs2]meansRegSel=rs2;RegW=0;RegEn=1;BLd=1Reg[rd]:=A+BmeansALUop=Add;ALUEn=1;RegSel=rd;RegW=1Condition?MainMemoryPCRegistersALU32(PC)rdrs1rs2RegisterRAMAddressInDataOutInstructionReg.Mem.AddressBAImmediateImmEnRegEnALUEnMemEnALUOpMemWImmSelRegWBLdInstLdMALdALdRegSelBusy?OpcodeInstructionFetch: MA,A:=PC PC:=A+4 waitformemory IR:=Mem dispatchonopcodeALU: A:=Reg[rs1] B:=Reg[rs2] Reg[rd]:=ALUOp(A,B) gotoinstructionfetchALUI: A:=Reg[rs1] B:=ImmI //Sign-extend12bimmediate Reg[rd]:=ALUOp(A,B) gotoinstructionfetch

微碼的單總線數(shù)據(jù)路徑實(shí)現(xiàn)微碼程序3.2指令流水線單周期實(shí)現(xiàn)的不足單周期處理器雖然可以實(shí)現(xiàn)指令集,但從硬件角度來看,整體利用率不高,并且不同指令執(zhí)行周期長(zhǎng)短不一一個(gè)部件使用時(shí),其他部件可能完全空閑為了提升硬件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論