高等計算機(jī)體系結(jié)構(gòu)_第1頁
高等計算機(jī)體系結(jié)構(gòu)_第2頁
高等計算機(jī)體系結(jié)構(gòu)_第3頁
高等計算機(jī)體系結(jié)構(gòu)_第4頁
高等計算機(jī)體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第一章計算機(jī)體系結(jié)構(gòu)的基本概念1八十年代后,有兩種技術(shù)使得體系結(jié)構(gòu)技術(shù)對計算機(jī)性能發(fā)展的影響越來越大: 1)RISC技術(shù)- 使得體系結(jié)構(gòu)的發(fā)展空間一下子被打開;2)微處理器技術(shù)-使得設(shè)計新型體系結(jié)構(gòu)的風(fēng)險、成本、耗時都大為降低。 2從計算機(jī)語言的角度,把計算機(jī)系統(tǒng)按功能劃分成多級層次結(jié)構(gòu)。微程序機(jī)器級, 機(jī)器語言, 操作系統(tǒng)虛擬機(jī), 匯編語言虛擬機(jī),高級語言虛擬機(jī),應(yīng)用語言虛擬機(jī)3語言實(shí)現(xiàn)的兩種基本技術(shù) 翻譯:先把N+1級程序全部變換成N級程序后,再去執(zhí)行新產(chǎn)生的N級程序,在執(zhí)行過程中N+1級程序不再被訪問。解釋:每當(dāng)一條N+1級指令被譯碼后,就直接去執(zhí)行一串等效的N級指令,然后再去取下一條N

2、+1級的指令,依此重復(fù)進(jìn)行。解釋執(zhí)行比翻譯花的時間多,但存儲空間占用較少。4計算機(jī)體系結(jié)構(gòu)的定義:程序員所看到的計算機(jī)的屬性,即概念性結(jié)構(gòu)與功能特性。5透明性:在計算機(jī)技術(shù)中,對這種本來是存在的事物或?qū)傩缘珡哪撤N角度看又好象不存在。6。對于通用寄存器型機(jī)器,這些屬性主要是指:(1) 數(shù)據(jù)表示(硬件能直接辯認(rèn)和處理的數(shù)據(jù)類型)(2) 尋址規(guī)則(包括最小尋址單元、尋址方式及其表示) (3) 寄存器定義(包括各種寄存器的定義、數(shù)量和使用方式)(4) 指令集(包括機(jī)器指令的操作類型和格式、指令間的排序和控制機(jī)構(gòu)等)(5) 中斷系統(tǒng)(中斷的類型和中斷響應(yīng)硬件的功能等)(6) 機(jī)器工作狀態(tài)的定義和切換(如

3、管態(tài)和目態(tài)等)(7) 存儲系統(tǒng)(主存容量、程序員可用的最大存儲容量等)(8) 信息保護(hù)(包括信息保護(hù)方式和硬件對信息保護(hù)的支持)(9) I/O結(jié)構(gòu)(包括I/O連接方式、處理機(jī)/存儲器與I/O設(shè)備間數(shù)據(jù)傳送的方式和格式以及I/O操作的狀態(tài)等)7.經(jīng)典計算機(jī)體系結(jié)構(gòu)概念的實(shí)質(zhì):計算機(jī)系統(tǒng)中軟硬件界面的確定,其界面之上的是軟件 的功能,界面之下的是硬件和固件的功能8.計算機(jī)組成:計算機(jī)體系結(jié)構(gòu)的邏輯實(shí)現(xiàn)。計算機(jī)組成包括的內(nèi)容可以有:處理機(jī)、主存等部件的邏輯結(jié)構(gòu),機(jī)器級內(nèi)數(shù)據(jù)流和控制流的組成、各部件的功能以及之間的聯(lián)系等。計算機(jī)實(shí)現(xiàn):計算機(jī)組成的物理實(shí)現(xiàn)。計算機(jī)實(shí)現(xiàn)包括的內(nèi)容可以有:處理機(jī)、主存等部件

4、的物理結(jié)構(gòu),包括器件的集成度和速度的確定,器件、模塊、插件、底板的劃分與連接,組裝裝配技術(shù)及信號連接、電源、冷卻方法等。一種體系結(jié)構(gòu)可以有多種組成。一種組成可以有多種物理實(shí)現(xiàn)。9.系列機(jī):在一個廠家內(nèi)生產(chǎn)的具有相同的體系結(jié)構(gòu),但具有不同組成和實(shí)現(xiàn)的一系列不同型號的機(jī)器。10.軟件兼容:同一個軟件可以不加修改地運(yùn)行于體系結(jié)構(gòu)相同的各檔機(jī)器,而且它們所獲得的結(jié)果一樣,差別只在于有不同的運(yùn)行時間。向上(下)兼容:按某檔機(jī)器編制的程序,不加修改的就能運(yùn)行于比它高(低)檔的機(jī)器。向前(后)兼容:按某個時期投入市場的某種型號機(jī)器編制的程序,不加修改地就能運(yùn)行于在它之前(后)投入市場的機(jī)器。向后兼容是軟件兼

5、容的根本特征,也是系列機(jī)的根本特征兼容機(jī)不同廠家生產(chǎn)的具有相同體系結(jié)構(gòu)的計算機(jī)。11存儲程序計算機(jī)的主要特點(diǎn)(1) 機(jī)器以運(yùn)算器為中心;(2) 采用存儲程序原理;(3)存儲器是按地址訪問的線性編址的空間;(4) 控制流由指令流產(chǎn)生;(5) 指令由操作碼和地址碼組成; (6)數(shù)據(jù)以二進(jìn)制編碼表示采用二進(jìn)制運(yùn)算。 11.保護(hù)的存儲器空間是否把指令和數(shù)據(jù)放在同一存儲器中?優(yōu)點(diǎn) :(1)不必預(yù)先區(qū)分指令和數(shù)據(jù),易實(shí)現(xiàn)存儲管理軟件;(2)程序和指令在執(zhí)行過程中可以被修改,因而可以編寫出靈活的可修改的程序;(3)對于存取指令和數(shù)據(jù)僅需一套讀/寫和尋址電路,硬件簡單;(4)數(shù)據(jù)可以分配于任何可用空間,從而可

6、更有效地利用存儲空間等。缺點(diǎn):(1)不利于進(jìn)行程序調(diào)試診斷; (2)不利于實(shí)現(xiàn)程序的可再入性和程序的遞歸調(diào)用(3不利于重疊和流水方式的操作。12.計算機(jī)可以根據(jù)價格分為五個檔次: 巨型機(jī)、大型機(jī)、中型機(jī)、小型機(jī)、微型機(jī)13.根據(jù)當(dāng)前的計算機(jī)應(yīng)用市場的現(xiàn)狀和價格特征,通常把計算機(jī)分為:服務(wù)器、桌面系統(tǒng)和嵌入式計算三大領(lǐng)域。14. 新型體系結(jié)構(gòu)的設(shè)計(1)合理地增加計算機(jī)系統(tǒng)中硬件的功能比例,這種體系結(jié)構(gòu)對操作系統(tǒng)、高級語言甚至應(yīng)用軟件提供更多更好的支持;(2) 通過多種途徑提高計算機(jī)體系結(jié)構(gòu)中的并行性等級,使得凡是能并行計算和處理的問題都能并行計算和處理,使這種體系結(jié)構(gòu)和組成對算法提供更多更好的

7、支持15. 計算機(jī)的設(shè)計受兩方面因素的影響(1)計算機(jī)現(xiàn)在和未來的使用方法(2)下層的實(shí)現(xiàn)技術(shù)16.軟件技術(shù)最重要的發(fā)展趨勢程序及數(shù)據(jù)所使用存儲器容量的不斷增大;(2) 編譯器的重要性日益突出,逐漸成為用戶與計算機(jī)的主要界面。17桌面計算、服務(wù)器和嵌入式計算對計算機(jī)系統(tǒng)設(shè)計的巨大影響:(1)桌面計算市場是銷售額最大的市場,是對性能價格比要求最為苛刻和敏感的市場。(2)服務(wù)器市場對計算機(jī)的要求是可用性、大容量和可擴(kuò)展性。(3)嵌入式計算與解決的應(yīng)用問題密切相關(guān),需求千差萬別。18.現(xiàn)代計算機(jī)實(shí)現(xiàn)技術(shù)的基礎(chǔ)核心是以晶體管為基本單元的平面集成電路。摩爾定律集成電路密度大約每兩年翻一番。19四種實(shí)現(xiàn)技

8、術(shù)對于當(dāng)代計算機(jī)的發(fā)展發(fā)揮著非常關(guān)鍵的作用邏輯電路 ,半導(dǎo)體DRAM(動態(tài)隨機(jī)訪問存儲器) ,磁盤 ,網(wǎng)絡(luò) 20.集成電路制造中的重要技術(shù)指標(biāo)之一:特征尺寸隨著特征尺寸減小,挑戰(zhàn)首先是功耗。原因:(1) 導(dǎo)致集成電路連線的相對長度增加,單位長度阻抗也增大,更高的電路工作主頻需要更大的電流來驅(qū)動電平的翻轉(zhuǎn)和信號變化的傳遞;(2) 電路密度增加,導(dǎo)致芯片單位面積功率(功率密度)上升;(3) 集成電路在減小特征尺寸的同時,也在減少電路各層的厚度從而降低了工作電壓;(4) 隨著特征尺寸的下降,晶體管各個電極之間的絕緣層性能急劇下降,電極之間漏電流的問題日益突出;(5) 由于現(xiàn)代微處理器中的部件成千上萬

9、,而這些部件并不都是同時工作,這就需要在設(shè)計中合理分配電力使用,對于不工作的部件暫時減低工作性能或者暫停工作,以減少系統(tǒng)的功耗。在設(shè)計上將面臨的問題:微處理器芯片正確性驗(yàn)證復(fù)雜性成倍上升。一個計算機(jī)體系結(jié)構(gòu),從產(chǎn)生到消亡,大致 需要1520年的時間21. 影響計算機(jī)系統(tǒng)成本的主要因素(1) 時間(對成本產(chǎn)生最直接影響)即使實(shí)現(xiàn)技術(shù)沒有變動,計算機(jī)系統(tǒng)的制造成本也會不斷下降。 (2) 產(chǎn)量產(chǎn)量的增加會加速工藝的穩(wěn)定; 產(chǎn)量增加提高了生產(chǎn)效率,降低了成本;產(chǎn)量增加降低每臺單機(jī)必須加入的開發(fā)費(fèi)用,從而使得單機(jī)成本下降。 (3) 商品化(更重要的是它影響產(chǎn)品的價格)22.集成電路的基本制造工藝:(1)

10、首先生產(chǎn)圓片;(2)在圓片上制造出一些小程序;大量電路單元;(3)園片經(jīng)過測試后按照制造的電路單元被切割成基片;(4) 基片在外殼中封裝好以后就是集成電路成品。集成電路成本 = 基片成本 = 每塊園片上的基片數(shù) = -基片成品率= 園片成品率 (1+ )- 23.計算機(jī)性能的評測 響應(yīng)時間:從事件開始到結(jié)束之間的時間,也稱為執(zhí)行時間。(計算機(jī)完成某一任務(wù)所花費(fèi)的全部時間) 流量:在單位時間內(nèi)所能完成的工作量。 相同點(diǎn):都認(rèn)為能夠以最短時間完成指定任務(wù)的計算機(jī)就是最快的。不同點(diǎn):響應(yīng)時間針對單任務(wù),而流量針對多任務(wù)。 X比Y快n倍: = nn = = =24.CPU時間CPU工作的時間,不包含I

11、/O等待時間及運(yùn)行其它程序的時間。用戶CPU時間,系統(tǒng)CPU時間25.目前常用的測試程序可以分為5類:(按測試可靠性由高至低的順序列出) (1) 真實(shí)程序:真實(shí)使用的程序;(2)修正的應(yīng)用程序(3) 核心程序:從真實(shí)程序中提取能反映系統(tǒng)性能的關(guān)鍵程序段組成的程序(4) 小測試程序:特地編寫的反映系統(tǒng)某一方面性能的;(5) 合成測試程序:根據(jù)對大量應(yīng)用程序中各種操作的比例進(jìn)行統(tǒng)計后按照這個比例人為制造出來的程序。26。測試程序組件,選擇一組各個方面有代表性的測試程序,組成一個通用測試程序集合。最大優(yōu)點(diǎn):避免了獨(dú)立測試程序存在的片面性,盡可能全面地測試了一個計算機(jī)系統(tǒng)的性能。最常見的測試程序組件是

12、基于UNIX的SPEC主要版本包括SPEC89、SPEC92 SPEC95和SPEC2000等。、 27. 性能設(shè)計和評測的基本原則 三條基本原則和方法:(1)大概率事件優(yōu)先的原則對于大概率事件(最常見的事件),賦予它優(yōu)先的處理權(quán)和資源使用權(quán),以獲得全局的最優(yōu)結(jié)果。(2)Amdahl定律加快某部件執(zhí)行速度所獲得的系統(tǒng)性能加速比,受限于該部件在系統(tǒng)中所占的重要性。 (3) 一個“好”的計算機(jī)系統(tǒng):具有高性價比的計算機(jī)系統(tǒng)是一個帶寬平衡的系統(tǒng),而不是看它使用的某些部件的性能 。(1)系統(tǒng)加速比 = = 系統(tǒng)加速比依賴于兩個因素: 可改進(jìn)比例:可改進(jìn)部分在原系統(tǒng)計算時間中所占的比例,它總是小于等于的

13、。例如: 一個需運(yùn)行60秒的程序中有20秒的運(yùn)算可以加速,那么該比例就是20/60。部件加速比:可改進(jìn)部分改進(jìn)以后的性能提高,一般情況下它是大于的 。例如: 系統(tǒng)改進(jìn)后執(zhí)行程序,其中可改進(jìn)部分花費(fèi)2秒的時間,而改進(jìn)前該部分需花費(fèi)5秒,則性能提高為5/2??倛?zhí)行時間改進(jìn)后 = 不可改進(jìn)部分的執(zhí)行時間 +可改進(jìn)部分改進(jìn)后的執(zhí)行時間總執(zhí)行時間改進(jìn)后=(1-可改進(jìn)比例)總執(zhí)行時間改進(jìn)前+ =(1-可改進(jìn)比例) + 總執(zhí)行時間改進(jìn)前 系統(tǒng)加速比 = =Amdahl定律:性能遞減規(guī)則如果僅僅對計算機(jī)中的一部分做性能改進(jìn),則改進(jìn)越多,系統(tǒng)獲得的效果越小。1)可改進(jìn)比例為,這時系統(tǒng)加速比等于,即系統(tǒng)性能無法提

14、高。2)部件加速比趨于無窮,這時分母中可改進(jìn)比例與部件加速比之比趨于,由此系統(tǒng)加速比趨于除以減可改進(jìn)比例,這是加速這個部件所獲得的系統(tǒng)性能改善的極限。 推論:如果只針對整個任務(wù)的一部分進(jìn)行優(yōu)化,那么所獲得的加速比不大于1/(1-fe)。28程序的局部性原理程序在執(zhí)行時所訪問地址的分布不是隨機(jī)的,而是相對地簇聚;這種簇聚包括指令和數(shù)據(jù)兩部分。程序的時間局部性:程序即將用到的信息很可能就是目前正在使用的信息。程序的空間局部性:程序即將用到的信息很可能與目前正在使用的信息在空間上相鄰或者臨近。29CPU的性能將程序執(zhí)行的時間進(jìn)行分解 (1) 計算機(jī)工作的時鐘頻率:計算機(jī)系統(tǒng)中與實(shí)現(xiàn)技術(shù)和工藝有關(guān)的因

15、素。單位是MHz(f)。 (2) 總時鐘周期數(shù)程序執(zhí)行的cpu時間 =總時鐘周期數(shù) / 時鐘頻率 “指令時鐘數(shù)”CPI”一個與計算機(jī)體系結(jié)構(gòu)有關(guān)的參數(shù)。CPI = 總時鐘周期數(shù) / IC IC:程序執(zhí)行過程中所處理的指令數(shù)??侰PU時間 = CPI IC / 時鐘頻率 時鐘頻率:反映了計算機(jī)實(shí)現(xiàn)技術(shù)、生產(chǎn)工藝和計算機(jī)組織。 CPI:反映了計算機(jī)實(shí)現(xiàn)技術(shù)、計算機(jī)指令集的結(jié)構(gòu)和計算機(jī)組織。IC:反映了計算機(jī)指令集的結(jié)構(gòu)和編譯技術(shù)對CPU性能公式進(jìn)行進(jìn)一步細(xì)化假設(shè):計算機(jī)系統(tǒng)有n種指令; CPIi :第i種指令的處理時間; ICi :在程序中第i種指令出現(xiàn)的次數(shù); 則程序執(zhí)行時間為CPU時間 = (

16、CPIi ICi) / 時鐘頻率CPI = (CPIi ICi) / IC = (CPIi ICi / IC)其中:(ICi / IC)反映了第i種指令在程序中所占的比例。 例1.1假設(shè)我們考慮條件分支指令的兩種不同設(shè)計方法如下:(1) CPUA:通過比較指令設(shè)置條件碼,然后測試條件碼進(jìn)行分支。 (2)CPUB:在分支指令中包括比較過程在兩種CPU中,條件分支指令都占用2個時鐘周期而所有其它指令占用1個時鐘周期,對于CPUA,執(zhí)行的指令中分支指令占20%;由于每個分支指令之前都需要有比較指令,因此比較指令也占20%。由于CPUA在分支時不需要比較,因此假設(shè)它的時鐘周期時間比CPUB快1.25倍

17、。哪一個CPU更快?如果CPUA的時鐘周期時間僅僅比CPUB快1.1倍,哪一個CPU更快呢?解:我們不考慮所有系統(tǒng)問題,所以可用CPU性能公式。占用2個時鐘周期的分支指令占總指令的20%,剩下的指令占用1個時鐘周期。所以CPIA= 0.2 2 + 0.80 1 = 1.2則CPU性能為:總CPU時間A = IC 1.2 時鐘周期A根據(jù)假設(shè)有時鐘周期B = 1.25 時鐘周期A在CPUB中沒有獨(dú)立的比較指令,所以CPUB的程序量為CPUA的80%,分支指令的比例為:20%/80% = 25%這些分支指令占用2個時鐘周期,而剩下的75%的指令占用1個時鐘周期,因此: CPIB = 0.25 2 +

18、 0.75 1 = 1.25因?yàn)镃PUB不執(zhí)行比較故:ICB = 0.8 ICA因此CPUB性能為: 總CPU時間B = ICB CPIB 時鐘周期B = 0.8 ICA 1.25 (1.25 時鐘周期A) = 1.25 ICA 時鐘周期A 在這些假設(shè)之下,盡管CPUB執(zhí)行指令條數(shù)較少,CPUA因?yàn)橛兄痰臅r鐘周期,所以比CPUB快。如果CPUA的時鐘周期時間僅僅比CPUB快1.1倍 則時鐘周期B = 1.10 時鐘周期ACPUB的性能為:總CPU時間B = ICB CPIB 時鐘周期B = 0.8 ICA 1.25 (1.10 時鐘周期A) = 1.10 ICA 時鐘周期A因此CPUB由于

19、執(zhí)行更少指令條數(shù),比CPUA運(yùn)行更快。30并行性在同一時刻或是同一時間間隔內(nèi)完成兩種或兩種以上性質(zhì)相同或不相同的工作。只要時間上互相重疊,就存在并行性。同時性兩個或多個事件在同一時刻發(fā)生的并行性。并發(fā)性兩個或多個事件在在同一時間間隔內(nèi)發(fā)生的并行性。 31從執(zhí)行程序的角度看,并行性等級從低到高可分為:(1)指令內(nèi)部并行:指令內(nèi)部的微操作之間的并行。 (2)指令級并行:并行執(zhí)行兩條或多條指令。(3)線程級并行:并發(fā)執(zhí)行多個線程,通常是以一個進(jìn)程內(nèi)控制派生的多個線程為調(diào)度單位。(4)任務(wù)級或過程級并行:并行執(zhí)行兩個或多個過程或任務(wù)(程序段)。(5)作業(yè)或程序級并行:在多個作業(yè)或程序間的并行。從處理數(shù)

20、據(jù)的角度,并行性等級從低到高可以分為:(1)字串位串: 同時只對一個字的一位進(jìn)行處理。(2)字串位并:同時對一個字的全部位進(jìn)行處理,不同字之間是串行的。(3)字并位串:同時對許多字的同一位(稱位片)進(jìn)行處理。(4) 全并行: 同時對許多字的全部或部分位進(jìn)行處理。32提高并行性的三種技術(shù)途徑(1) 時間重疊。多個處理過程在時間上相互錯開,輪流重疊地使用同一套硬件設(shè)備的各個部分,以加快硬件周轉(zhuǎn)而贏得速度。 (2) 資源重復(fù)。根據(jù)“以數(shù)量取勝”的原則,通過重復(fù)地設(shè)置資源,尤其是硬件資源,以大幅度提高計算機(jī)系統(tǒng)的性能。 (3) 資源共享。這是一種軟件方法,它使多個任務(wù)按一定時間順序輪流使用同一套硬件設(shè)

21、備。33單機(jī)系統(tǒng)中并行性的發(fā)展 (1) 在發(fā)展高性能單處理機(jī)過程中,起著主導(dǎo)作用的是時間重疊這個途徑。實(shí)現(xiàn)時間重疊的基礎(chǔ):部件功能專用化。 把一件工作按功能分割為若干相互聯(lián)系的部分; 把每一部分指定給專門的部件完成; 然后按時間重疊原則把各部分執(zhí)行過程在時間上重疊起來,使所有部件依次分工完成一組同樣的工作。(2) 在單處理機(jī)中,資源重復(fù)的運(yùn)用已經(jīng)普遍起來。部件冗余;多操作部件,多存儲體;并行處理機(jī),相聯(lián)處理機(jī);同構(gòu)型(對稱型)多處理機(jī)系統(tǒng)(3) 資源共享實(shí)質(zhì):用單處理機(jī)模擬多處理機(jī)的功能,形成所謂虛擬機(jī)的概念。多道程序,分時系統(tǒng);智能終端;分布處理系統(tǒng)分布處理系統(tǒng)把若干個具有獨(dú)立功能的處理機(jī)(

22、或計算機(jī))相互連接起來,在操作系統(tǒng)全盤控制下,統(tǒng)一協(xié)調(diào)地工作,而最少依賴集中的程序、數(shù)據(jù)或硬件。34多機(jī)系統(tǒng)中并行性的發(fā)展(1) 耦合度。反映多機(jī)系統(tǒng)的各機(jī)器之間的物理連接的緊密程度和交互作用能力的強(qiáng)弱。最低耦合:耦合度最低的系統(tǒng)。除通過某種中間存儲介質(zhì)之外,各計算機(jī)之間沒有物理連接,也無共享的聯(lián)機(jī)硬件資源。松散耦合或間接耦合系統(tǒng):通過通道或通信線路實(shí)現(xiàn)計算機(jī)間互連,共享某些外圍設(shè)備(例如磁盤、磁帶等),機(jī)間的相互作用是在文件或數(shù)據(jù)集一級進(jìn)行。緊密耦合系統(tǒng)或直接耦全系統(tǒng):機(jī)間物理連接的頻帶較高,它們往往通過總線或高速開關(guān)實(shí)現(xiàn)互連,可以共享主存。 (2) 功能專用化。專用外圍處理機(jī)(松散耦合系統(tǒng)

23、);高級語言處理機(jī)、數(shù)據(jù)庫處理機(jī);異構(gòu)型多處理機(jī)系統(tǒng)(3) 機(jī)間互連??芍貥?gòu)、容錯多處理機(jī);緊密耦合系統(tǒng); 同構(gòu)型多處理機(jī)系統(tǒng)(4) 網(wǎng)絡(luò)化。通信處理機(jī),遠(yuǎn)程網(wǎng)絡(luò);局部計算機(jī)網(wǎng);分布處理系統(tǒng)第二章 計算機(jī)指令集結(jié)構(gòu)設(shè)計1指令集結(jié)構(gòu)分類 (1) 在CPU中操作數(shù)的存儲方法(2) 指令中顯式表示的操作數(shù)個數(shù) (3) 操作數(shù)的尋址方式 (4) 指令集所提供的操作類型 (5) 操作數(shù)的類型和大小 2CPU中操作數(shù)的存儲方法,是各種指令集結(jié)構(gòu)之間最主要的區(qū)別所在。CPU中用來存儲操作數(shù)的存儲單元主要有:堆棧,累加器,一組寄存器指令中的操作數(shù)可以顯式給出,也可以隱式地給出。3根據(jù)CPU內(nèi)部存儲單元類型進(jìn)行

24、分類堆棧型指令集結(jié)構(gòu),累加器型指令集結(jié)構(gòu), 通用寄存器型指令集結(jié)構(gòu)例 C=A+B表達(dá)式在這三種類型指令集結(jié)構(gòu)上的實(shí)現(xiàn)方法。假設(shè)A、B、C均是保存在存儲器單元中,且A和B的值在運(yùn)算過程中一直被保持。堆棧:PUSH A,PUSH B,ADD,POP C累加器:LOAD A,ADD B,Store C寄存器(寄存器存儲器):LOAD R1,AADD R1,B,Store C,R1寄存器(寄存器寄存器):LOAD R1,ALOAD R2,B,Add R3,R1,R2,Store C,R34三種類型指令集結(jié)構(gòu)的優(yōu)缺點(diǎn) 堆棧型:優(yōu)點(diǎn)是一種表示計算的簡單模型;指令短小。缺點(diǎn)堆棧不能被隨機(jī)訪問,從而很難生成有

25、效代碼。同時,由于堆棧是瓶頸,所以很難被高效地實(shí)現(xiàn)。累加器型:優(yōu)點(diǎn)減小了機(jī)器的內(nèi)部狀態(tài);指令短小。缺點(diǎn)由于累加器是唯一的暫存器,這種機(jī)器的存儲器通信開銷最大。寄存器型:優(yōu)點(diǎn)是代碼生成最一般的模型。缺點(diǎn)所有操作數(shù)均需命名,且顯式表示,因而指令比較長。5通用寄存器型指令集結(jié)構(gòu)的主要優(yōu)點(diǎn)使編譯器有效地使用寄存器。(1) 在表達(dá)式求值方面,比其它類型指令集結(jié)構(gòu)具有更大的靈活性;(2) 寄存器可以用來存放變量。減少存儲器的通信量,加快程序的執(zhí)行速度(因?yàn)榧拇嫫鞅却鎯ζ骺欤?;可以用更少的地址位來尋址寄存器,從而?以有效改進(jìn)程序的目標(biāo)代碼大小。 6CPU需要設(shè)置多少個寄存器 主要由編譯器使用寄存器的情況來

26、決定。為表達(dá)式求值保留一些寄存器;為傳遞參數(shù)保留一些寄存器;用剩下的寄存器來保存變量。(一般來說,ALU指令有03個存儲器操作數(shù)。)7通用寄存器指令集結(jié)構(gòu)進(jìn)一步細(xì)分為三種類型:寄存器 - 寄存器型;寄存器 - 存儲器型;存儲器 - 存儲器型8常見的三種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點(diǎn)注:表中(m,n)的含義是, 指令的n個操作數(shù)中有m個存儲器操作數(shù)。寄存器寄存器型(0,3):優(yōu)點(diǎn)簡單,指令字長固定,是一種簡單的代碼生成模型,各種指令的執(zhí)行時鐘周期數(shù)相近。缺點(diǎn)和指令中含有對存儲器操作數(shù)訪問的結(jié)構(gòu)相比,指令條數(shù)多,因而其目標(biāo)代碼較大。寄存器存儲器型(1,2):優(yōu)點(diǎn)可以直接對存儲器操作數(shù)進(jìn)行訪問,容易

27、對指令進(jìn)行編碼,且其目標(biāo)代碼較小。缺點(diǎn)指令中的操作數(shù)類型不同。在一條指令中同時對一個寄存器操作數(shù)和存儲器操作數(shù)進(jìn)行編碼,將限制指令所能夠表示的寄存器個數(shù)。由于指令的操作數(shù)可以存儲在不同類型的存儲器單元,所以每條指令的執(zhí)行時鐘周期數(shù)也不盡相同。存儲器存儲器型(3,3):優(yōu)點(diǎn)是一種最緊密的編碼方式,無需“浪費(fèi)”寄存器保存變量。缺點(diǎn)指令字長多種多樣。每條指令的執(zhí)行時鐘周期數(shù)也大不一樣,對存儲器的頻繁訪問將導(dǎo)致存儲器訪問瓶頸問題。9.當(dāng)前指令集結(jié)構(gòu)中所使用的一些操作數(shù)尋址方式。 寄存器尋址Add R4 , R3立即值尋址Add R4 , #3偏移尋址Add R4 , 100(R1) 寄存器間接尋址Ad

28、d R4 , (R1) 索引尋址Add R3 , (R1 + R2) 直接尋址或絕對尋址Add R1 , (1001) 存儲器間接尋址Add R1 , (R3)自增尋址Add R1 , (R2)+ 自減尋址Add R1, -(R2) 縮放尋址Add R1 , 100(R2)R310指令集中操作的分類 算術(shù)和邏輯運(yùn)算;數(shù)據(jù)傳輸;控制;系統(tǒng);浮點(diǎn);十進(jìn)制;字符串;圖形11指令集結(jié)構(gòu)功能設(shè)計問題復(fù)雜指令集計算機(jī)(CISC)強(qiáng)化指令功能,實(shí)現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。精簡指令集計算機(jī)(RISC)盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達(dá)到簡化實(shí)現(xiàn),提高性能的目的。當(dāng)今指令集結(jié)構(gòu)功能設(shè)計的一個主要趨勢。 CIS

29、C的主要特點(diǎn):1)指令系統(tǒng)復(fù)雜,表現(xiàn)在指令數(shù)多,一般大于100條;尋址方式多,一般大于4種指令格式多,一般大于4種;2)絕大多數(shù)指令需要多個機(jī)器時鐘周期方可完成。3)各種指令都可訪問存儲器。4)多采用微程序控制。5)有專用寄存器。6)難以進(jìn)行優(yōu)化編譯CISC結(jié)構(gòu)追求的目標(biāo):強(qiáng)化指令功能,減少程序的指令條數(shù),以達(dá)到提高性能的目的。CISC結(jié)構(gòu)存在的缺點(diǎn)(1) 在CISC結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻率相差懸殊。(2) CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來了計算機(jī)體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時間和成 本,而且還容易造成設(shè)計錯誤。(3) CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性給VLSI設(shè)計增加了很大負(fù)擔(dān)

30、,不利于單片集成(4) CISC結(jié)構(gòu)的指令系統(tǒng)中,許多復(fù)雜指令需要很復(fù)雜的操作,因而運(yùn)行速度慢。(5) 在CISC結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功能不均衡性,不利于采用先進(jìn)的計算機(jī)體系結(jié)構(gòu)技術(shù)(如流水技術(shù))來提高系統(tǒng)的性能。RISC的主要特點(diǎn):1)精簡指令系統(tǒng)指令條數(shù)少,一般小于100條;2)基本尋址方式少,一般23種2)指令格式少,一般23種; 4)指令長度一致(32位);3)以寄存器-寄存器方式工作,除了Load/Store指令訪問存儲器外,其余指令只訪問寄存器;3)除了Load/Store指令訪問存儲器外,所有指令在一個機(jī)器時鐘周期完成,并采用流水線技術(shù);4)使用較多的通用寄存器,一般

31、至少32個,不允許有專用寄存器;5)大多采用硬聯(lián)線控制,少用或不用微程序?qū)崿F(xiàn);6)采用針對體系結(jié)構(gòu)特點(diǎn)的優(yōu)化編譯技術(shù),防止或減少流水線中出現(xiàn)的相關(guān)性,保證流水線暢通。(設(shè)計思想指令系統(tǒng)只包含那些使用頻率很高的指令和一些必要指令)目的:使得計算機(jī)體系結(jié)構(gòu)更加簡單、更加合理和更加有效,克服CISC結(jié)構(gòu)的缺點(diǎn),使機(jī)器速度更快,程序運(yùn)行時間縮短,從而提高計算機(jī)系統(tǒng)的性能設(shè)計原則:選取使用頻率最高的指令,并補(bǔ)充一些最有用的指令;每條指令的功能應(yīng)盡可能簡單,并在一個機(jī)器周期內(nèi)完成;所有指令長度均相同;只有Load和Store操作指令才訪問存儲器; 其它指令操作均在寄存器之間進(jìn)行;以簡單有效的方式支持高級語

32、言。12控制指令(1) 跳轉(zhuǎn): 當(dāng)控制指令為無條件改變控制流時,稱之為“跳轉(zhuǎn)”(2) 分支:當(dāng)控制指令是有條件改變控制流時,稱之為“分支”。(3)控制流程的各種改變情況:條件分支跳轉(zhuǎn);過程調(diào)用;過程返回13常用的三種表示分支條件的技術(shù)及其優(yōu)缺點(diǎn) 條件碼(CC):測試分支條件的方法在程序的控制下,由ALU操作設(shè)置特殊的位。優(yōu)點(diǎn)可以自由設(shè)置分支條件。缺點(diǎn)CC是額外狀態(tài),條件碼限制了指令順序,因?yàn)楸仨殢囊粭l指令將分支條件信息傳送到分支指令。條件寄存器:測試分支條件的方法根據(jù)比較結(jié)果測試條件寄存器。優(yōu)點(diǎn)簡單。缺點(diǎn)占用了一個寄存器。比較且分支:測試分支條件的方法比較操作是分支指令的一部分,通常這種比較是

33、受一定限制的。優(yōu)點(diǎn)比較操作是分支指令的一部分,通常這種比較是受一定限制的。缺點(diǎn)分支指令的操作增多14兩種方法來保存寄存器的內(nèi)容: (1) “調(diào)用者保存”方法 在一個調(diào)用者調(diào)用別的過程時,必須保存調(diào)用者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠再次訪問調(diào)用者。 (2) “被調(diào)用者保存”方法被調(diào)用的過程必須保存它要用的寄存器,保證不會破壞過程調(diào)用者的程序執(zhí)行環(huán)境,并在過程調(diào)用結(jié)束返回時,恢復(fù)這些寄存器的內(nèi)容。15操作數(shù)類型和操作數(shù)表示是軟硬件主要界面之一 。操作數(shù)類型:面向應(yīng)用、面向軟件系統(tǒng)所處理的各種數(shù)據(jù)結(jié)構(gòu).操作數(shù)表示:硬件結(jié)構(gòu)能夠識別、指令系統(tǒng)可以直接調(diào)用的那些結(jié)構(gòu)。16操作數(shù)的類型整數(shù)(定

34、點(diǎn));浮點(diǎn);十進(jìn)制;字符;字符串;向量;堆棧17操作數(shù)類型的兩種表示方法 (1) 操作數(shù)的類型由操作碼的編碼指定。(最常見的一種方法,ADD和FADD)(2) 數(shù)據(jù)可以附上由硬件解釋的標(biāo)記,由這些標(biāo)記指定操作數(shù)的類型,從而選擇適當(dāng)?shù)倪\(yùn)算(少見)。 18操作數(shù)大?。鹤止?jié);半字(16位);單字(32位);雙字(64位)(1) 字符: 用ASCII碼表示,為一個字節(jié)大小。(2) 整數(shù): 用二進(jìn)制補(bǔ)碼表示,其大小可以是字節(jié)、半字或單字。(3) 浮點(diǎn)操作數(shù): 單精度浮點(diǎn)(單字大?。┖碗p精度浮點(diǎn)(雙字大?。?4) 字符串: 將字符串中的每個字符當(dāng)作一個字節(jié)來看待。 (5) 十進(jìn)制操作數(shù) 壓縮十進(jìn)制用4位二

35、進(jìn)制數(shù)編碼數(shù)字09,然后將兩個十進(jìn)制數(shù)字壓縮在一個字節(jié)中存儲。 二進(jìn)制編碼十進(jìn)制將十進(jìn)制數(shù)字直接用字符串來示 19指令集格式的設(shè)計 指令由操作碼和地址碼組成設(shè)計原則(1)盡可能地增加寄存器數(shù)目和尋址方式類型;(2)充分考慮寄存器字段和尋址方式字段對指令平均字長的影響,以及它們對目標(biāo)代碼大小的影響;(3)設(shè)計出的指令集格式能夠在具體實(shí)現(xiàn)中容易處理。20兩種表示尋址方式的方法(1) 將尋址方式編碼于操作碼中,由操作碼在描述指令操作的同時,也描述了相應(yīng)操作的尋址方式;(2) 為每個操作數(shù)設(shè)置一個地址描述符,由該地址描述符表示相應(yīng)操作數(shù)的尋址方式。選擇哪種表示尋址方式的方法?由兩個因數(shù)決定:(1) 指

36、令集結(jié)構(gòu)所采用的尋址方式種類及其適用范圍 (2) 操作碼與尋址方式之間的獨(dú)立程度尋址方式多,指令中操作數(shù)多適合用地址描述符方法。 21三種指令集編碼格式 : 變長編碼格式;固定長度編碼格式;混合型編碼格式變長編碼格式:(1)有效減少指令集結(jié)構(gòu)的平均指令長度,降低目標(biāo)代碼的長度。(2)使得各條指令的字長和執(zhí)行時間大不一樣。多數(shù)CISC計算機(jī)的指令集結(jié)構(gòu)均是采用這種編碼格式。固定長度編碼格式將操作類型和尋址方式組合編碼在操作碼中,所有指令的長度是固定唯一的混合型編碼格式通過提供一定類型的指令字長期望能夠兼顧降低目標(biāo)代碼長度和降低譯碼復(fù)雜度兩個目標(biāo)。22 DLX指令集結(jié)構(gòu)DLX中的寄存器:(1) 3

37、2個通用寄存器。命名:R0、R1、R31。長度:32位寄存器R0的值總是為0。(2) 32個浮點(diǎn)寄存器。命名:F0、F1、F31長度:32位(用來保存32位的單精度浮點(diǎn)數(shù) )(3) 一些特殊的寄存器(比如用來保存浮點(diǎn)操作結(jié)果信息的浮點(diǎn)狀態(tài)寄存器)可以和通用寄存器相互進(jìn)行數(shù)據(jù)傳送。DLX的數(shù)據(jù)類型(1)整型數(shù)據(jù)。有8位、16位和32位多種長度。(當(dāng)8位和16位整型數(shù)據(jù)載入到寄存器中時,用0或數(shù)據(jù)的符號位來填充32位通用寄存器中的剩余位。) (2)浮點(diǎn)數(shù)據(jù)。有32位單精度浮點(diǎn)數(shù)和64位雙精度浮點(diǎn)數(shù)。浮點(diǎn)數(shù)據(jù)表示采用的是IEEE 754標(biāo)準(zhǔn)DLX的尋址方式和數(shù)據(jù)傳送(1)尋址方式:寄存器尋址;立即值

38、尋址;偏移尋址;寄存器間接尋址 (2) 寄存器尋址字段的大小為5位,用來表示32個通用寄存器或浮點(diǎn)寄存器。(3) 存儲器地址采用的是高端字節(jié)表示順序,存儲器按字節(jié)尋址,其地址寬度為32位。(4) 通過寄存器(通用寄存器和浮點(diǎn)寄存器)和存儲器之間的數(shù)據(jù)傳送操作完成對存儲器的訪問。DLX的指令格式:尋址方式編碼在操作碼中;指令的字長32位,其中用6位表示操作碼。DLX中四種類型的操作:Load和Store操作;ALU操作;分支和跳轉(zhuǎn)操作;浮點(diǎn)操作約定:(1) 符號“”: 數(shù)據(jù)傳送操作其后附帶一個下標(biāo)n,也即“n” 表示傳送一個n位數(shù)據(jù)。(2) 符號“#”: 兩個域的串聯(lián)操作(3) 域的下標(biāo):表明從

39、該域中選擇某一位。域中位的標(biāo)記是從最高位開始標(biāo)記,并且起始標(biāo)記為0;下標(biāo)可以是一個單獨(dú)的數(shù)字如 RegsR40 :選擇寄存器R4中內(nèi)容的符號位;下標(biāo)也可以是一個范圍。RegsR324.31 :選擇寄存器R3中內(nèi)容的最低一個字節(jié)。(4) 上標(biāo):表示復(fù)制一個域。如 024可以得到一個24位全為0的一個域。(5) 變量Mem:表示存儲器中的一個數(shù)組,存儲器按照字節(jié)尋址。例R8和R10:32位寄存RegsR1016.31 16(MemRegsR80)8 # MemRegsR8的含義。第三章 流水線技術(shù)流水線的基本概念1. 指令流水線把指令的解釋過程分解為“分析”和“執(zhí)行” 兩個子過程,并讓這兩個子過程

40、分別用獨(dú)立的分析部件和執(zhí)行部件來實(shí)現(xiàn)。理想情況:速度提高一倍浮點(diǎn)加法流水線把浮點(diǎn)加法的全過程分解為“求階差”、“對階”、“尾數(shù)相加”、“規(guī)格化”四個子過程,并讓它們分別用各自獨(dú)立的部件來實(shí)現(xiàn)。理想情況:速度提高3倍時空圖時空圖從時間和空間兩個方面描述了流水線的工作過程。時空圖中,橫坐標(biāo)代表時間,縱坐標(biāo)代表流水線的各個段。流水技術(shù)流水技術(shù)是指:將一個重復(fù)的時序過程分解成為若干個子過程,而每個子過程都可有效地在其專用功能段上與其他子過程同時執(zhí)行。流水技術(shù)的特點(diǎn)(1) 流水過程由多個相聯(lián)系的子過程組成,每個子過程稱為流水線的“級”或“段”?!岸巍钡哪糠Q為流水線的“深度”。(2) 每個子過程由專用的功

41、能段實(shí)現(xiàn);(3) 各個功能段所需時間應(yīng)盡量相等,否則,時間的功能段將成為流水線的瓶頸,會造成流水線的“堵塞”和“斷流”。這個時間一般為一個時鐘周期(拍);(4) 流水線需要有“通過時間”(第一個任務(wù)流出結(jié)果所需的時間),在此之后流水過程才進(jìn)入穩(wěn)定工作狀態(tài),每一個時鐘周期(拍)流出一個結(jié)果;(5) 流水技術(shù)適合于大量重復(fù)的時序過程,只有輸入端能連續(xù)地提供任務(wù),流水線的效率才能充分發(fā)揮。3.1.2 流水線的分類1按功能的多少來分單功能流水線:只能完成一種固定功能的 流水線。多功能流水線:流水線的各段可以進(jìn)行不同的 連接,從而實(shí)現(xiàn)不同的功能。2按同一時間內(nèi)各段之間的連接方式來分靜態(tài)流水線:在同一時刻

42、,流水線的各段只能 按同一種功能的連接方式工作。在靜態(tài)流水線中,只有當(dāng)輸入是一串相同的運(yùn)算操作時,流水的效率才能得到發(fā)揮。動態(tài)流水線:在同一時刻,流水線的各段可以按不同功能的連接方式工作。這樣就不是非得相同運(yùn)算的一串操作才能流水處理。 優(yōu)點(diǎn):能提高流水線的效率 缺點(diǎn):會使流水線的控制變得復(fù)雜3按照流水線的級別來分部件級流水線(運(yùn)算操作流水線):把處理機(jī)的算術(shù)邏輯部件分段,使得各種數(shù)據(jù)類型的操作能夠進(jìn)行流水。處理機(jī)級流水線(指令流水線):把指令的解釋執(zhí)行過程按照流水方式進(jìn)行處理。 例如:前面把指令解釋過程分解為:分析和執(zhí)行DLX的基本流水線把指令解釋過程分解為:取指令、指令譯碼、執(zhí)行、訪存、寫回

43、。(圖示) 處理機(jī)間流水線(宏流水線):它是指由兩個以上的處理機(jī)串行地對同一數(shù)據(jù)流進(jìn)行處理,每個處理機(jī)完成一項任務(wù)。4按照數(shù)據(jù)表示來分標(biāo)量處理機(jī):不具有向量指令和向量數(shù)據(jù)表示, 僅對標(biāo)量進(jìn)行流水處理的處理機(jī)。例如:IBM360/91, Amdahl 470V/6 等向量處理機(jī):具有向量指令和向量數(shù)據(jù)表示的 處理機(jī)。例如:TI ASC, CRAY-I 等5. 按照是否有反饋回路來分線性流水線:流水線中的各段串行連接,沒 有反饋回路。非線性流水線:流水線中的各段除有串行連接 外,還有反饋回路。 6. 按照流動是否可以亂序來分順序流動流水線:流水線輸出端任務(wù)流出的順 序與輸入端任務(wù)流入的順序相同。異

44、步流動流水線(亂序流水線):流水線輸出端任務(wù)流出的順序與輸入端任務(wù)流入的順序不同。3.2DLX的基本流水線1. 實(shí)現(xiàn)DLX指令的一種簡單數(shù)據(jù)通路定義:ADD:加法器PC:指令計數(shù)器NPC:下一條順序指令計數(shù)器IR:指令寄存器A、B:操作數(shù)臨時寄存器Imm:立即數(shù)臨時寄存器Cond:條件值寄存器MUX:多路開關(guān)ALU:運(yùn)算器ALU Output:運(yùn)算器輸出寄存器LMD:存儲器數(shù)據(jù)讀取寄存器2. 一條DLX指令最多需要以下5個時鐘周期:(1) 取指令周期(IF) IR MemPC NPC PC4(2)指令譯碼/讀寄存器周期(ID) A RegsIR6 .10 B RegsIR11 .15 Imm

45、(IR16)16 # IR16 .31指令譯碼和讀寄存器是并行進(jìn)行的。之所以能做到這一點(diǎn),是因?yàn)樵贒LX指令格式中,操作碼在固定位置。這種技術(shù)也稱為固定字段譯碼。(3)執(zhí)行/有效地址計算周期(EX) 在這個周期,不同的指令有不同的操作。(4)存儲器訪問/分支完成周期(MEM) 在該周期處理的DLX指令只有Load、Store和 分支指令。存儲器訪問LMD MemALUOutput 或 Mem ALUOutput B 分支操作if(cond)PC ALUOutput else PC NPC (5)寫回周期(WB)不同指令在該周期完成的工作也不一樣 寄存器寄存器型 ALU 指令 RegsIR16

46、.20 ALUOutput 寄 存器立即值型 ALU 指令 RegsIR11 .15 ALUOutput Load 指令RegsIR11 .15 LMD 3. 分支指令需要4個時鐘周期,其它指令需要5 5個時鐘周期假設(shè)分支指令占總指令數(shù)的12, 則: CPI4.88上述實(shí)現(xiàn)無論在性能上還是在硬件開銷上,都不是優(yōu)化的。3.2.2 基本的DLX流水線1一種簡單的 DLX 流水線我們可以把3.2.1中的數(shù)據(jù)通路流水化:每個時鐘周期啟動一條新的指令。這樣,該數(shù)據(jù)通路中的每一個周期就成了一個流水段。2. 簡單DLX流水線的流水過程第一種描述(類似于時空圖)第二種描述(按時間錯開的數(shù)據(jù)通路序列)3. 采用

47、流水技術(shù)還應(yīng)解決好以下幾個問題:(1)應(yīng)保證不會在同一個時鐘周期內(nèi)在同一數(shù)據(jù) 通路資源上做不同的操作。例如,不能要求一個ALU同時既做有效地址計算,又做減法操作。上述簡單DLX流水線中:指令存儲器(IM)和數(shù)據(jù)存儲器(DM)分開,避免了訪存沖突; ID段和WB段都要訪問同一寄存器文件。ID段:讀WB段:寫 如何解決對同一寄存器的訪問沖突?;沒有考慮 PC 問題。流水線為了能夠每個時鐘周期啟動一條新的指令,就必須在每個時鐘周期進(jìn)行PC值的加4操作,并保留新的PC值。這種操作必須在IF段完成,以便為取下一條指令做好準(zhǔn)備。(2)每一流水段內(nèi)的操作都必須在一個時鐘周期 內(nèi)完成(3)流水線寄存器(組)流

48、水線各段之間需設(shè)置流水線寄存器(也稱為鎖存器)流水線寄存器組及其所含寄存器的命名。例如,ID段和EX段之間的流水線寄存器組中的IR寄存器的名稱為:ID/EX.IR流水線寄存器的作用把數(shù)據(jù)和控制信息從一個流水段傳送到下一個流水段。4. DLX流水線的操作對于流水線中的指令來說,在任一時刻,它僅在流水線中的某一段內(nèi)執(zhí)行操作。因此,只要知道每一流水段在各種指令下進(jìn)行何種操作,就知道了整個流水線的操作。(表3.1)給出了DLX流水線各段的操作。5DLX流水線的控制主要是確定如何控制那四個多路選擇器。IF段MUX:下一條指令地址為增長后的PC(當(dāng)前PC 加4)或向前數(shù)第三條指令的ALUOutput的值,

49、前提是那條指令為分支指令并且條件成立EX段MUX:上面一個MUX選擇一個操作數(shù)是寄存器值還是NPC(分支指令),下面一個MUX選擇另一個操作數(shù)是寄存器值還是立即數(shù)(I型指令)WB段MUX:寫回寄存器的值來自于LMD(Load指令)或ALUOutput(ALU指令)3.2.3 流水線性能分析1. 吞吐率吞吐率是指單位時間內(nèi)流水線所完成的任務(wù)數(shù)或輸出結(jié)果的數(shù)量。(1) 最大吞吐率TPmax 最大吞吐率是指流水線在連續(xù)流動達(dá)到穩(wěn)定狀態(tài)后所得到的吞吐率。 若流水線各段的時間相等,均為t0 ,則: TPmax 1 /t0 若流水線各段的時間不等,則: 1TPmaxm axti 最大吞吐率取決于流水線中最

50、慢的一段所需的時間,這段就成了流水線的瓶頸。 消除瓶頸的方法 細(xì)分瓶頸段 重復(fù)設(shè)置瓶頸段 (時-空圖)(2) 實(shí)際吞吐率TP 流水線的實(shí)際吞吐率小于最大吞吐率 第一種情況:各段時間相等(設(shè)為t0) 假設(shè)流水線由 m 段組成,完成 n 個任務(wù)。時空圖完成 n 個任務(wù)所需的時間 T流水mt0(n1)t0 第二種情況:各段時間不等時空圖完成 n 個任務(wù)所需的時間T流水ti(n1)tj tj maxti 實(shí)際吞吐率TP ti(n1)tjTP mi=1n2. 加速比S加速比是指流水線的速度與等功能非流水線的速度之比。ST非流水T流水(其中T流水和T非流水分別為按流水和按非流水方式處理 n 個任務(wù)所需的時

51、間)若流水線為 m 段,且各段時間相等,均為t0 ,則: T非流水n mt0 T流水mt0(n1)t0 S T非流水T流水nmt0mt0(n1)t0mnmn1mn1 m1 可以看出:當(dāng)n m 時,S m想一想:n 越大越好?3效率 E效率是指流水線的設(shè)備利用率。(1) 由于流水線有通過時間和排空時間,所以 流水線的各段并不是一直滿負(fù)荷地工作。故:E 1(2) 若各段時間相等,則各段的效率ei相等,即 e1e2 e3emnt0T流水 (解釋) 整個流水線的效率為:nt0 n 1E T流水 m+n-1 1m-1 n當(dāng) n m 時,E 1(3) 從時空圖上看,效率實(shí)際上就是 n 個任務(wù)所占的時空區(qū)與

52、 m 個段總的時空區(qū)之比,即: n 個任務(wù)占用的時空區(qū)E m 個段總的時空區(qū)(4) 提高流水線效率所采取的措施對于提高吞吐率也有好處。4流水線性能分析舉例例3.1 在靜態(tài)流水線上計算 AjBj (j從1到4), 求:吞吐率,加速比,效率。解:(1) 確定適合于流水處理的計算過程(2) 畫時空圖(3) 計算性能 吞吐率 TP7(20t) 加速比 S(34t)(20t)1.7 效率 E(4436)(820)0.21例3.2 假設(shè)前面DLX非流水線實(shí)現(xiàn)的時鐘周期時間 為10ns,ALU和分支指令需要4個時鐘周期,訪 問存儲器指令需5個時鐘周期,上述指令在程序 中出現(xiàn)的相對頻率分別是:40%、20%和

53、40%。在 基本的DLX流水線中,假設(shè)由于時鐘扭曲和寄存 器建立延遲等原因,流水線要在其時鐘周期時 間上附加1ns的額外開銷?,F(xiàn)忽略任何其他延遲 因素的影響,請問:相對于非流水實(shí)現(xiàn)而言, 基本的DLX流水線執(zhí)行指令的加速比是多少?解:當(dāng)非流水執(zhí)行指令時,指令的平均執(zhí)行時間為 TPI非流水 = 10ns(40%+20%)440%5) = 10ns4.4 = 44ns 在流水實(shí)現(xiàn)中,指令執(zhí)行的平均時間是最慢一段的執(zhí)行時間加上額外開銷,即 TPI流水 = 10ns+1ns = 11ns 所以基本的DLX流水線執(zhí)行指令的加速比為S =TPI非流水TPI流水44ns11ns= 4例3.3 假設(shè)在DLX的

54、非流水實(shí)現(xiàn)和基本流水線中,5個功能單元的時間為:10,8,10,10,7(ns), 流水額外開銷為:1ns,求加速比S。解:T非流水1081010745 (ns) T流水 10111 (ns) S 45114.15有關(guān)流水線性能的若干問題(1) 流水線并不能減少(而且一般是增加)單條指 令的執(zhí)行時間,但卻能提高吞吐率。(2) 增加流水線的深度(段數(shù))可以提高流水線的 性能。(3) 流水線的深度受限于流水線的延遲和流水線 的額外開銷。(4) 流水線的額外開銷包括: 流水寄存器的延遲(建立時間和傳輸延遲) 時鐘扭曲(5) 當(dāng)時鐘周期小到與額外開銷相同時,流水已沒意 義。因?yàn)檫@時在每一個時鐘周期中已

55、沒有時間來 做有用的工作。(6) 需用高速的鎖存器來作為流水寄存器。 Earle鎖存器(1965)的三個特點(diǎn): 對時鐘扭曲不太敏感(相對而言) 其延遲為常數(shù):2個門級延遲,避免了數(shù)據(jù)通 過鎖存器時的扭曲。 鎖存器中可以進(jìn)行兩級邏輯運(yùn)算而不增延遲時 間。這樣每個流水段中的兩級邏輯可以與鎖存 器重疊,從而能隱藏鎖存器開銷的絕大部分。(7) 相關(guān)問題 如果流水線中的指令相互獨(dú)立,則可以充分 發(fā)揮流水線的性能。但在實(shí)際中,指令間可能會 是相互依賴,這會降低流水線的性能。下一節(jié)介 紹如何解決相關(guān)問題。3.3流水線中的相關(guān)1相關(guān)的概念流水線中的相關(guān)是指相鄰或相近的兩條指令因存在某種關(guān)聯(lián),后一條指令不能在原

56、指定的時鐘周期開始執(zhí)行。2相關(guān)的分類 結(jié)構(gòu)相關(guān) 當(dāng)硬件資源滿足不了同時重疊執(zhí)行的指令的要求,而發(fā)生資源沖突時,就發(fā)生了結(jié)構(gòu)相關(guān)。 數(shù)據(jù)相關(guān) 當(dāng)一條指令需要用到前面某條指令的結(jié) 果,從而不能重疊執(zhí)行時,就發(fā)生了數(shù)據(jù)相關(guān)。 控制相關(guān) 當(dāng)流水線遇到分支指令和其他能夠改變 PC值的指令時,就會發(fā)生控制相關(guān)。3幾個問題 相關(guān)有可能會使流水線停頓。 消除相關(guān)的基本方法:讓流水線中的某些指令暫停,而讓其它指令繼續(xù)執(zhí)行。3.3.1 流水線中的結(jié)構(gòu)相關(guān)1. 在流水線機(jī)器中,為了使各種指令組合能順利地重疊執(zhí)行,需要把功能部件流水化,并把資源重復(fù)設(shè)置。2. 如果某種指令組合因資源沖突而不能順利重 疊執(zhí)行,則稱該機(jī)器

57、具有結(jié)構(gòu)相關(guān)。3. 常見的導(dǎo)致結(jié)構(gòu)相關(guān)的原因: 功能部件不是全流水 重復(fù)設(shè)置的資源的份數(shù)不夠4. 結(jié)構(gòu)相關(guān)舉例:訪存沖突當(dāng)數(shù)據(jù)和指令存在同一存儲器中時,訪存指令會導(dǎo)致訪存沖突。解決辦法: 插入暫停周期(“流水線氣泡”或“氣泡”)解決方法: 設(shè)置相互獨(dú)立的指令存儲器和 數(shù)據(jù)存儲器或設(shè)置相互獨(dú)立的指令Cache和數(shù)據(jù)Cache。5. 避免結(jié)構(gòu)相關(guān): 所有功能單元完全流水化 設(shè)置足夠的硬件資源。硬件代價很大。6. 有些設(shè)計方案允許有結(jié)構(gòu)相關(guān) 降低成本 減少部件的延遲3.3.2 流水線的數(shù)據(jù)相關(guān)1. 數(shù)據(jù)相關(guān)簡介當(dāng)指令在流水線中重疊執(zhí)行時,流水線有可能改變指令讀/寫操作數(shù)的順序,使之不同于它們在非流水

58、實(shí)現(xiàn)時的順序,這將導(dǎo)致數(shù)據(jù)相關(guān)。2. 利用定向技術(shù)減少數(shù)據(jù)相關(guān)引起的暫停 (1) 定向技術(shù)的主要思路:在發(fā)生上述 數(shù)據(jù)相關(guān)時,后面的指令并不是馬上就要用到前一條指令的計算結(jié)果。如果能夠?qū)⒂嬎憬Y(jié)果從其產(chǎn)生的地方直接送到需要它的地方,就可以避免暫停。 (2) 采用定向技術(shù)消除上例中的相關(guān)(3) 當(dāng)定向硬件檢測到前面某條指令的結(jié)果寄存 器就是當(dāng)前指令的源寄存器時,控制邏輯會 將前面那條指令的結(jié)果直接從其產(chǎn)生的地方 定向到當(dāng)前指令所需的位置。(4) 一個功能單元的輸出不僅可以定向到其自身 的輸入,而且還可以定向到其它單元的輸入(5) 在DLX中,任何流水寄存器到任何功能單元的 輸入都可能需要定向路徑。

59、(6) 當(dāng)兩條指令對存儲器同一單元進(jìn)行讀寫時, 也可能發(fā)生數(shù)據(jù)相關(guān)。但本章僅討論有關(guān)寄 存器的數(shù)據(jù)相關(guān)。3. 數(shù)據(jù)相關(guān)的分類按照指令對寄存器的讀寫順序,可以將數(shù)據(jù)相關(guān)分為以下三種類型:(考慮兩條指令i和j , 假設(shè)i 先進(jìn)入流水線)(1) 寫后讀相關(guān) (RAW) (命名規(guī)則) 在 i 寫入之前,j 先去讀。 j 讀出的內(nèi)容是錯誤的。這是最常見的相關(guān)。(2) 寫后寫相關(guān) (WAW) 在 i 寫入之前,j 先寫。 最后寫入的結(jié)果是 i 的,錯誤 這種相關(guān)僅出現(xiàn)在這樣的流水線中: 流水線中有多個段可以進(jìn)行寫操作 當(dāng)某條指令在流水線中暫停時,允許其后 的指令繼續(xù)向前流動。 DLX整數(shù)流水線中不會發(fā)生這

60、種相關(guān) (僅在WB段進(jìn)行寫操作) 若對DLX作以下修改,則會發(fā)生WAW相關(guān): 把ALU操作指令的“寫回”移到MEM段 假設(shè)訪問數(shù)據(jù)存儲器需占用兩拍(3) 讀后寫相關(guān) (WAR)在 i 讀之前,j 先寫。i 讀出的內(nèi)容是錯誤的! 這種相關(guān)僅出現(xiàn)在這樣的流水線中:有些指令是在流水線的后部讀源操作數(shù),而有些指令則是在流水線的前部寫結(jié)果。 DLX流水線中不會發(fā)生這種相關(guān); (讀在先(ID),寫在后(WB)) 這種相關(guān)很少發(fā)生; (因?yàn)榱魉€一般是先讀操作數(shù),后寫結(jié)果 復(fù)雜指令可能導(dǎo)致這種相關(guān)。4. 需要暫停的數(shù)據(jù)相關(guān)(1) 并非所有的數(shù)據(jù)相關(guān)都可以用定向技術(shù)解決(2) 增加流水線互鎖硬件,插入“暫?!?/p>

溫馨提示

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

最新文檔

評論

0/150

提交評論