版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機體系結(jié)構(gòu)課后習(xí)題原版答案-張晨曦著第1章計算機系統(tǒng)結(jié)構(gòu)的基本概念1.1解釋下列術(shù)語層次機構(gòu):按照計算機語言從低級到高級的次序,把計算機系統(tǒng)按功能劃分成多級層次結(jié)構(gòu),每一層以一種不同的語言為特征。這些層次依次為:微程序機器級,傳統(tǒng)機器語言機器級,匯編語言機器級,高級語言機器級,應(yīng)用語言機器級等。虛擬機:用軟件實現(xiàn)的機器。翻譯:先用轉(zhuǎn)換程序把高一級機器上的程序轉(zhuǎn)換為低一級機器上等效的程序,然后再在這低一級機器上運行,實現(xiàn)程序的功能。解釋:對于高一級機器上的程序中的每一條語句或指令,都是轉(zhuǎn)去執(zhí)行低一級機器上的一段等效程序。執(zhí)行完后,再去高一級機器取下一條語句或指令,再進行解釋執(zhí)行,如此反復(fù),直到解釋執(zhí)行完整個程序。隔內(nèi)進行多種運算或操作。只要在時間上相互重疊,就存在并行性。它包括同時性與并發(fā)性兩種含義。時間重疊:在并行性概念中引入時間因素,讓多個處理過程在時間上相互錯開,輪流重疊地使用同一套硬件設(shè)備的各個部分,以加快硬件周轉(zhuǎn)而贏得速度。資源重復(fù):在并行性概念中引入空間因素,以數(shù)量取勝。通過重復(fù)設(shè)置硬件資源,大幅度地提高計算機系統(tǒng)的性能。資源共享:這是一種軟件方法,它使多個任務(wù)按一定時間順序輪流使用同一套硬件設(shè)備。耦合度:反映多機系統(tǒng)中各計算機之間物理連接的緊密程度和交互作用能力的強弱。緊密耦合系統(tǒng):又稱直接耦合系統(tǒng)。在這種系統(tǒng)中,計算機之間的物理連接的頻帶較高,一般是通過總線或高速開關(guān)互連,可以共享主存。松散耦合系統(tǒng):又稱間接耦合系統(tǒng),一般是通過通道或通信線路實現(xiàn)計算機之間的互連,可以共享外存設(shè)備(磁盤、磁帶等)。計算機之間的相互作用是在文件或數(shù)據(jù)集一級上進行。異構(gòu)型多處理機系統(tǒng):由多個不同類型、至少擔(dān)負不同功能的處理機組成,它們按照作業(yè)要求的順序,利用時間重疊原理,依次對它們的多個任務(wù)進行加工,各自完成規(guī)定的功能動作。同構(gòu)型多處理機系統(tǒng):由多個同類型或至少擔(dān)負同等功能的處理機組成,它們同時處理同一作業(yè)中能并行執(zhí)行的多個任務(wù)。1.2試用實例說明計算機系統(tǒng)結(jié)構(gòu)、計算機組成與計算機實現(xiàn)之間的相互關(guān)系。答:如在設(shè)計主存系統(tǒng)時,確定主存容量、編址方式、尋址范圍等屬于計算機系統(tǒng)結(jié)構(gòu)。確定主存周期、邏輯上是否采用并行主存、邏輯設(shè)計等屬于計算機組成。選擇存儲芯片類型、微組裝技術(shù)、線路設(shè)計等屬于計算機實現(xiàn)。計算機組成是計算機系統(tǒng)結(jié)構(gòu)的邏輯實現(xiàn)。計算機實現(xiàn)是計算機組成的物理實現(xiàn)。一種體系結(jié)構(gòu)可以有多種組成。一種組成可以有多種實現(xiàn)。1.3計算機系統(tǒng)結(jié)構(gòu)的Flynn分類法是按什么來分類的?共分為哪幾類?答:Flynn分類法是按照指令流和數(shù)據(jù)流的多倍性進行分類。把計算機系統(tǒng)的結(jié)構(gòu)分為:單指令流單數(shù)據(jù)流SISD單指令流多數(shù)據(jù)流SIMD多指令流單數(shù)據(jù)流MISD多指令流多數(shù)據(jù)流MIMD1.4計算機系統(tǒng)設(shè)計中經(jīng)常使用的4個定量原理是什么?并說出它們的含義。答:(1)以經(jīng)常性事件為重點。在計算機系統(tǒng)的設(shè)計中,對經(jīng)常發(fā)生的情況,賦予它優(yōu)先的處理權(quán)和資源使用權(quán),以得到更多的總體上的改進。(2)Amdahl定律。加快某部件執(zhí)行速度所獲得的系統(tǒng)性能加速比,受限于該部件在系統(tǒng)中所占的重要性。(3)CPU性能公式。執(zhí)行一個程序所需的CPU時間=IC×CPI×?xí)r鐘周期時間。(4)程序的局部性原理。程序在執(zhí)行時所訪問地址的分布不是隨機的,而是相對地簇聚。1.5分別從執(zhí)行程序的角度和處理數(shù)據(jù)的角度來看,計算機系統(tǒng)中并行性等級從低到高可分為哪幾級?答:從處理數(shù)據(jù)的角度來看,并行性等級從低到高可分為:(1)字串位串:每次只對一個字的一位進行處理。這是最基本的串行處理方式,不存在并行性;(2)字串位并:同時對一個字的全部位進行處理,不同字之間是串行的。已開始出現(xiàn)并行性;(3)字并位串:同時對許多字的同一位(稱為位片)進行處理。這種方式具有較高的并行性;(4)全并行:同時對許多字的全部位或部分位進行處理。這是最高一級的并行。從執(zhí)行程序的角度來看,并行性等級從低到高可分為:(1)指令內(nèi)部并行:單條指令中各微操作之間的并行;(2)指令級并行:并行執(zhí)行兩條或兩條以上的指令;(3)線程級并行:并行執(zhí)行兩個或兩個以上的線程,通常是以一個進程內(nèi)派生的多個線程為調(diào)度單位;(4)任務(wù)級或過程級并行:并行執(zhí)行兩個或兩個以上的過程或任務(wù)(程序段),以子程序或進程為調(diào)度單元;(5)作業(yè)或程序級并行:并行執(zhí)行兩個或兩個以上的作業(yè)或程序。1.6某臺主頻為400MHz的計算機執(zhí)行標(biāo)準測試程序,程序中指令類型、執(zhí)行數(shù)量和平均時鐘周期數(shù)如下:指令類型指令執(zhí)行數(shù)量平均時鐘周期數(shù)整數(shù)450001數(shù)據(jù)傳送750002浮點80004分支15002求該計算機的有效CPI、MIPS和程序執(zhí)行時間。解:(1)CPI=(45000×1+75000×2+8000×4+1500×2)/129500=1.776(2)MIPS速率=f/CPI=400/1.776=225.225MIPS(3)程序執(zhí)行時間=(45000×1+75000×2+8000×4+1500×2)/400=575s1.7將計算機系統(tǒng)中某一功能的處理速度加快10倍,但該功能的處理時間僅為整個系統(tǒng)運行時間的40%,則采用此增強功能方法后,能使整個系統(tǒng)的性能提高多少?解由題可知:可改進比例=40%=0.4部件加速比=10根據(jù)Amdahl定律可知:采用此增強功能方法后,能使整個系統(tǒng)的性能提高到原來的1.5625倍。1.8計算機系統(tǒng)中有三個部件可以改進,這三個部件的部件加速比為:部件加速比1=30;部件加速比2=20;部件加速比3=10如果部件1和部件2的可改進比例均為30%,那么當(dāng)部件3的可改進比例為多少時,系統(tǒng)加速比才可以達到10?如果三個部件的可改進比例分別為30%、30%和20%,三個部件同時改進,那么系統(tǒng)中不可加速部分的執(zhí)行時間在總執(zhí)行時間中占的比例是多少?解:(1)在多個部件可改進情況下,Amdahl定理的擴展:已知S1=30,S2=20,S3=10,Sn=10,F(xiàn)1=0.3,F(xiàn)2=0.3,得:得F3=0.36,即部件3的可改進比例為36%。(2)設(shè)系統(tǒng)改進前的執(zhí)行時間為T,則3個部件改進前的執(zhí)行時間為:(0.3+0.3+0.2)T=0.8T,不可改進部分的執(zhí)行時間為0.2T。已知3個部件改進后的加速比分別為S1=30,S2=20,S3=10,因此3個部件改進后的執(zhí)行時間為:改進后整個系統(tǒng)的執(zhí)行時間為:Tn=0.045T+0.2T=0.245T那么系統(tǒng)中不可改進部分的執(zhí)行時間在總執(zhí)行時間中占的比例是:1.9假設(shè)某應(yīng)用程序中有4類操作,通過改進,各操作獲得不同的性能提高。具體數(shù)據(jù)如下表所示:操作類型程序中的數(shù)量(百萬條指令)改進前的執(zhí)行時間(周期)改進后的執(zhí)行時間(周期)操作11021操作2302015操作335103操作41541(1)改進后,各類操作的加速比分別是多少?(2)各類操作單獨改進后,程序獲得的加速比分別是多少?(3)4類操作均改進后,整個程序的加速比是多少?解:根據(jù)Amdahl定律可得操作類型各類操作的指令條數(shù)在程序中所占的比例Fi各類操作的加速比Si各類操作單獨改進后,程序獲得的加速比操作111.1%21.06操作233.3%1.331.09操作338.9%3.331.37操作416.7%41.144類操作均改進后,整個程序的加速比:第2章指令集結(jié)構(gòu)的分類解釋下列術(shù)語堆棧型機器:CPU中存儲操作數(shù)的單元是堆棧的機器。累加器型機器:CPU中存儲操作數(shù)的單元是累加器的機器。通用寄存器型機器:CPU中存儲操作數(shù)的單元是通用寄存器的機器。CISC:復(fù)雜指令集計算機RISC:精簡指令集計算機尋址方式:指令系統(tǒng)中如何形成所要訪問的數(shù)據(jù)的地址。一般來說,尋址方式可以指明指令中的操作數(shù)是一個常數(shù)、一個寄存器操作數(shù)或者是一個存儲器操作數(shù)。數(shù)據(jù)表示:硬件結(jié)構(gòu)能夠識別、指令系統(tǒng)可以直接調(diào)用的那些數(shù)據(jù)結(jié)構(gòu)。 區(qū)別不同指令集結(jié)構(gòu)的主要因素是什么?根據(jù)這個主要因素可將指令集結(jié)構(gòu)分為哪3類?答:區(qū)別不同指令集結(jié)構(gòu)的主要因素是CPU中用來存儲操作數(shù)的存儲單元。據(jù)此可將指令系統(tǒng)結(jié)構(gòu)分為堆棧結(jié)構(gòu)、累加器結(jié)構(gòu)和通用寄存器結(jié)構(gòu)。常見的3種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點有哪些?答:指令系統(tǒng)結(jié)構(gòu)類型優(yōu)點缺點寄存器-寄存器型(0,3)指令字長固定,指令結(jié)構(gòu)簡潔,是一種簡單的代碼生成模型,各種指令的執(zhí)行時鐘周期數(shù)相近。與指令中含存儲器操作數(shù)的指令系統(tǒng)結(jié)構(gòu)相比,指令條數(shù)多,目標(biāo)代碼不夠緊湊,因而程序占用的空間比較大。寄存器-存儲器型(1,2)可以在ALU指令中直接對存儲器操作數(shù)進行引用,而不必先用load指令進行加載。容易對指令進行編碼,目標(biāo)代碼比較緊湊。由于有一個操作數(shù)的內(nèi)容將被破壞,所以指令中的兩個操作數(shù)不對稱。在一條指令中同時對寄存器操作數(shù)和存儲器操作數(shù)進行編碼,有可能限制指令所能夠表示的寄存器個數(shù)。指令的執(zhí)行時鐘周期數(shù)因操作數(shù)的來源(寄存器或存儲器)不同而差別比較大。存儲器-存儲器型(2,2)或(3,3)目標(biāo)代碼最緊湊,不需要設(shè)置寄存器來保存變量。指令字長變化很大,特別是3操作數(shù)指令。而且每條指令完成的工作也差別很大。對存儲器的頻繁訪問會使存儲器成為瓶頸。這種類型的指令系統(tǒng)現(xiàn)在已不用了。指令集應(yīng)滿足哪幾個基本要求?答:對指令集的基本要求是:完整性、規(guī)整性、高效率和兼容性。完整性是指在一個有限可用的存儲空間內(nèi),對于任何可解的問題,編制計算程序時,指令集所提供的指令足夠使用。規(guī)整性主要包括對稱性和均勻性。對稱性是指所有與指令集有關(guān)的存儲單元的使用、操作碼的設(shè)置等都是對稱的。均勻性是指對于各種不同的操作數(shù)類型、字長、操作種類和數(shù)據(jù)存儲單元,指令的設(shè)置都要同等對待。高效率是指指令的執(zhí)行速度快、使用頻度高。指令集結(jié)構(gòu)設(shè)計所涉及的內(nèi)容有哪些?答:(1)指令集功能設(shè)計:主要有RISC和CISC兩種技術(shù)發(fā)展方向;(2)尋址方式的設(shè)計:設(shè)置尋址方式可以通過對基準程序進行測試統(tǒng)計,察看各種尋址方式的使用頻率,根據(jù)適用頻率設(shè)置必要的尋址方式。(3)操作數(shù)表示和操作數(shù)類型:主要的操作數(shù)類型和操作數(shù)表示的選擇有:浮點數(shù)據(jù)類型、整型數(shù)據(jù)類型、字符型、十進制數(shù)據(jù)類型等等。(4)尋址方式的表示:可以將尋址方式編碼于操作碼中,也可以將尋址方式作為一個單獨的域來表示。(5)指令集格式的設(shè)計:有變長編碼格式、固定長度編碼格式和混合型編碼格式3種。簡述CISC指令集結(jié)構(gòu)功能設(shè)計的主要目標(biāo)。從當(dāng)前的計算機技術(shù)觀點來看,CISC指令集結(jié)構(gòu)的計算機有什么缺點?答:主要目標(biāo)是增強指令功能,把越來越多的功能交由硬件來實現(xiàn),并且指令的數(shù)量也是越來越多。缺點:(1)CISC結(jié)構(gòu)的指令集中,各種指令的使用頻率相差懸殊。(2)CISC結(jié)構(gòu)指令的復(fù)雜性帶來了計算機體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時間和成本,而且還容易造成設(shè)計錯誤。(3)CISC結(jié)構(gòu)指令集的復(fù)雜性給VLSI設(shè)計增加了很大負擔(dān),不利于單片集成。(4)CISC結(jié)構(gòu)的指令集中,許多復(fù)雜指令需要很復(fù)雜的操作,因而運行速度慢。(5)在CISC結(jié)構(gòu)的指令集中,由于各條指令的功能不均衡性,不利于采用先進的計算機體系結(jié)構(gòu)技術(shù)(如流水技術(shù))來提高系統(tǒng)的性能。簡述RISC指令集結(jié)構(gòu)的設(shè)計原則。答(1)選取使用頻率最高的指令,并補充一些最有用的指令;(2)每條指令的功能應(yīng)盡可能簡單,并在一個機器周期內(nèi)完成;(3)所有指令長度均相同;(4)只有Load和Store操作指令才訪問存儲器,其它指令操作均在寄存器之間進行;(5)以簡單有效的方式支持高級語言。指令中表示操作數(shù)類型的方法有哪幾種?答:操作數(shù)類型有兩種表示方法:(1)操作數(shù)的類型由操作碼的編碼指定,這是最常見的一種方法;(2)數(shù)據(jù)可以附上由硬件解釋的標(biāo)記,由這些標(biāo)記指定操作數(shù)的類型,從而選擇適當(dāng)?shù)倪\算。表示尋址方式的主要方法有哪些?簡述這些方法的優(yōu)缺點。答:表示尋址方式有兩種常用的方法:(1)將尋址方式編于操作碼中,由操作碼在描述指令的同時也描述了相應(yīng)的尋址方式。這種方式譯碼快,但操作碼和尋址方式的結(jié)合不僅增加了指令的條數(shù),導(dǎo)致了指令的多樣性,而且增加了CPU對指令譯碼的難度。(2)為每個操作數(shù)設(shè)置一個地址描述符,由該地址描述符表示相應(yīng)操作數(shù)的尋址方式。這種方式譯碼較慢,但操作碼和尋址獨立,易于指令擴展。通常有哪幾種指令格式,請簡述其適用范圍。答:(1)變長編碼格式。如果系統(tǒng)結(jié)構(gòu)設(shè)計者感興趣的是程序的目標(biāo)代碼大小,而不是性能,就可以采用變長編碼格式。(2)固定長度編碼格式。如果感興趣的是性能,而不是程序的目標(biāo)代碼大小,則可以選擇固定長度編碼格式。(3)混合型編碼格式。需要兼顧降低目標(biāo)代碼長度和降低譯碼復(fù)雜度時,可以采用混合型編碼格式。根據(jù)CPU性能公式簡述RISC指令集結(jié)構(gòu)計算機和CISC指令集結(jié)構(gòu)計算機的性能特點。答:CPU性能公式:CPU時間=IC×CPI×T其中,IC為目標(biāo)程序被執(zhí)行的指令條數(shù),CPI為指令平均執(zhí)行周期數(shù),T是時鐘周期的時間。相同功能的CISC目標(biāo)程序的指令條數(shù)ICCISC少于RISC的ICRISC,但是CISC的CPICISC和TCISC都大于RISC的CPIRISC和TRISC,因此,CISC目標(biāo)程序的執(zhí)行時間比RISC的更長。第3章流水線技術(shù)3.1解釋下列術(shù)語流水線:將一個重復(fù)的時序過程,分解成為若干個子過程,而每一個子過程都可有效地在其專用功能段上與其它子過程同時執(zhí)行。單功能流水線:指流水線的各段之間的連接固定不變、只能完成一種固定功能的流水線。多功能流水線:指各段可以進行不同的連接,以實現(xiàn)不同的功能的流水線。靜態(tài)流水線:指在同一時間內(nèi),多功能流水線中的各段只能按同一種功能的連接方式工作的流水線。當(dāng)流水線要切換到另一種功能時,必須等前面的任務(wù)都流出流水線之后,才能改變連接。動態(tài)流水線:指在同一時間內(nèi),多功能流水線中的各段可以按照不同的方式連接,同時執(zhí)行多種功能的流水線。它允許在某些段正在實現(xiàn)某種運算時,另一些段卻在實現(xiàn)另一種運算。部件級流水線:把處理機中的部件進行分段,再把這些部件分段相互連接而成。它使得運算操作能夠按流水方式進行。這種流水線也稱為運算操作流水線。處理機級流水線:又稱指令流水線。它是把指令的執(zhí)行過程按照流水方式進行處理,即把一條指令的執(zhí)行過程分解為若干個子過程,每個子過程在獨立的功能部件中執(zhí)行。處理機間流水線:又稱為宏流水線。它是把多個處理機串行連接起來,對同一數(shù)據(jù)流進行處理,每個處理機完成整個任務(wù)中的一部分。前一個處理機的輸出結(jié)果存入存儲器中,作為后一個處理機的輸入。線性流水線:指各段串行連接、沒有反饋回路的流水線。數(shù)據(jù)通過流水線中的各段時,每一個段最多只流過一次。非線性流水線:指各段除了有串行的連接外,還有反饋回路的流水線。順序流水線:流水線輸出端任務(wù)流出的順序與輸入端任務(wù)流入的順序完全相同。亂序流水線:流水線輸出端任務(wù)流出的順序與輸入端任務(wù)流入的順序可以不同,允許后進入流水線的任務(wù)先完成。這種流水線又稱為無序流水線、錯序流水線、異步流水線。吞吐率:在單位時間內(nèi)流水線所完成的任務(wù)數(shù)量或輸出結(jié)果的數(shù)量。流水線的加速比:使用順序處理方式處理一批任務(wù)所用的時間與按流水處理方式處理同一批任務(wù)所用的時間之比。流水線的效率:即流水線設(shè)備的利用率,它是指流水線中的設(shè)備實際使用時間與整個運行時間的比值。數(shù)據(jù)相關(guān):考慮兩條指令i和j,i在j的前面,如果下述條件之一成立,則稱指令j與指令i數(shù)據(jù)相關(guān):(1)指令j使用指令i產(chǎn)生的結(jié)果;(2)指令j與指令k數(shù)據(jù)相關(guān),而指令k又與指令i數(shù)據(jù)相關(guān)。名相關(guān):如果兩條指令使用了相同的名,但是它們之間并沒有數(shù)據(jù)流動,則稱這兩條指令存在名相關(guān)。控制相關(guān):是指由分支指令引起的相關(guān)。它需要根據(jù)分支指令的執(zhí)行結(jié)果來確定后面該執(zhí)行哪個分支上的指令。反相關(guān):考慮兩條指令i和j,i在j的前面,如果指令j所寫的名與指令i所讀的名相同,則稱指令i和j發(fā)生了反相關(guān)。輸出相關(guān):考慮兩條指令i和j,i在j的前面,如果指令j和指令i所寫的名相同,則稱指令i和j發(fā)生了輸出相關(guān)。換名技術(shù):名相關(guān)的兩條指令之間并沒有數(shù)據(jù)的傳送,只是使用了相同的名??梢园哑渲幸粭l指令所使用的名換成別的,以此來消除名相關(guān)。結(jié)構(gòu)沖突:因硬件資源滿足不了指令重疊執(zhí)行的要求而發(fā)生的沖突。數(shù)據(jù)沖突:當(dāng)指令在流水線中重疊執(zhí)行時,因需要用到前面指令的執(zhí)行結(jié)果而發(fā)生的沖突。控制沖突:流水線遇到分支指令或其它會改變PC值的指令所引起的沖突。定向:用來解決寫后讀沖突的。在發(fā)生寫后讀相關(guān)的情況下,在計算結(jié)果尚未出來之前,后面等待使用該結(jié)果的指令并不見得是馬上就要用該結(jié)果。如果能夠?qū)⒃撚嬎憬Y(jié)果從其產(chǎn)生的地方直接送到其它指令需要它的地方,那么就可以避免停頓。寫后讀沖突:考慮兩條指令i和j,且i在j之前進入流水線,指令j用到指令i的計算結(jié)果,而且在i將結(jié)果寫入寄存器之前就去讀該寄存器,因而得到的是舊值。讀后寫沖突:考慮兩條指令i和j,且i在j之前進入流水線,指令j的目的寄存器和指令i的源操作數(shù)寄存器相同,而且j在i讀取該寄存器之前就先對它進行了寫操作,導(dǎo)致i讀到的值是錯誤的。寫后寫沖突:考慮兩條指令i和j,且i在j之前進入流水線,,指令j和指令i的結(jié)果單元(寄存器或存儲器單元)相同,而且j在i寫入之前就先對該單元進行了寫入操作,從而導(dǎo)致寫入順序錯誤。這時在結(jié)果單元中留下的是i寫入的值,而不是j寫入的。鏈接技術(shù):具有先寫后讀相關(guān)的兩條指令,在不出現(xiàn)功能部件沖突和Vi沖突的情況下,可以把功能部件鏈接起來進行流水處理,以達到加快執(zhí)行的目的。分段開采:當(dāng)向量的長度大于向量寄存器的長度時,必須把長向量分成長度固定的段,然后循環(huán)分段處理,每一次循環(huán)只處理一個向量段。半性能向量長度:向量處理機的性能為其最大性能的一半時所需的向量長度。向量長度臨界值:向量流水方式的處理速度優(yōu)于標(biāo)量串行方式的處理速度時所需的向量長度的最小值。3.2指令的執(zhí)行可采用順序執(zhí)行、重疊執(zhí)行和流水線三種方式,它們的主要區(qū)別是什么?各有何優(yōu)缺點。答:(1)指令的順序執(zhí)行是指指令與指令之間順序串行。即上一條指令全部執(zhí)行完后,才能開始執(zhí)行下一條指令。優(yōu)點:控制簡單,節(jié)省設(shè)備。缺點:執(zhí)行指令的速度慢,功能部件的利用率低。(2)指令的重疊指令是在相鄰的指令之間,讓第k條指令與取第k+l條指令同時進行。重疊執(zhí)行不能加快單條指令的執(zhí)行速度,但在硬件增加不多的情況下,可以加快相鄰兩條指令以及整段程序的執(zhí)行速度。與順序方式相比,功能部件的利用率提高了,控制變復(fù)雜了。(3)指令的流水執(zhí)行是把一個指令的執(zhí)行過程分解為若干個子過程,每個子過程由專門的功能部件來實現(xiàn)。把多個處理過程在時間上錯開,依次通過各功能段,每個子過程與其它的子過程并行進行。依靠提高吞吐率來提高系統(tǒng)性能。流水線中各段的時間應(yīng)盡可能相等3.3簡述先行控制的基本思想。答:先行控制技術(shù)是把緩沖技術(shù)和預(yù)處理技術(shù)相結(jié)合。緩沖技術(shù)是在工作速度不固定的兩個功能部件之間設(shè)置緩沖器,用以平滑它們的工作。預(yù)處理技術(shù)是指預(yù)取指令、對指令進行加工以及預(yù)取操作數(shù)等。采用先行控制方式的處理機內(nèi)部設(shè)置多個緩沖站,用于平滑主存、指令分析部件、運算器三者之間的工作。這樣不僅使它們都能獨立地工作,充分忙碌而不用相互等待,而且使指令分析部件和運算器分別能快速地取得指令和操作數(shù),大幅度地提高指令的執(zhí)行速度和部件的效率。這些緩沖站都按先進先出的方式工作,而且都是由一組若干個能快速訪問的存儲單元和相關(guān)的控制邏輯組成。采用先行控制技術(shù)可以實現(xiàn)多條指令的重疊解釋執(zhí)行。3.4設(shè)一條指令的執(zhí)行過程分成取指令、分析指令和執(zhí)行指令三個階段,每個階段所需的時間分別為△t、△t和2△t。分別求出下列各種情況下,連續(xù)執(zhí)行N條指令所需的時間。(1)順序執(zhí)行方式;(2)只有“取指令”與“執(zhí)行指令”重疊;(3)“取指令”、“分析指令”與“執(zhí)行指令”重疊。解:(1)每條指令的執(zhí)行時間為:△t+△t+2△t=4△t連續(xù)執(zhí)行N條指令所需的時間為:4N△t(2)連續(xù)執(zhí)行N條指令所需的時間為:4△t+3(N-1)△t=(3N+1)△t(3)連續(xù)執(zhí)行N條指令所需的時間為:4△t+2(N-1)△t=(2N+2)△t3.5簡述流水線技術(shù)的特點。答:流水技術(shù)有以下特點:(1)流水線把一個處理過程分解為若干個子過程,每個子過程由一個專門的功能部件來實現(xiàn)。因此,流水線實際上是把一個大的處理功能部件分解為多個獨立的功能部件,并依靠它們的并行工作來提高吞吐率。(2)流水線中各段的時間應(yīng)盡可能相等,否則將引起流水線堵塞和斷流。(3)流水線每一個功能部件的前面都要有一個緩沖寄存器,稱為流水寄存器。(4)流水技術(shù)適合于大量重復(fù)的時序過程,只有在輸入端不斷地提供任務(wù),才能充分發(fā)揮流水線的效率。(5)流水線需要有通過時間和排空時間。在這兩個時間段中,流水線都不是滿負荷工作。3.6解決流水線瓶頸問題有哪兩種常用方法?答:細分瓶頸段與重復(fù)設(shè)置瓶頸段3.7減少流水線分支延遲的靜態(tài)方法有哪些?答:(1)預(yù)測分支失敗:沿失敗的分支繼續(xù)處理指令,就好象什么都沒發(fā)生似的。當(dāng)確定分支是失敗時,說明預(yù)測正確,流水線正常流動;當(dāng)確定分支是成功時,流水線就把在分支指令之后取出的指令轉(zhuǎn)化為空操作,并按分支目標(biāo)地址重新取指令執(zhí)行。(2)預(yù)測分支成功:當(dāng)流水線ID段檢測到分支指令后,一旦計算出了分支目標(biāo)地址,就開始從該目標(biāo)地址取指令執(zhí)行。(3)延遲分支:主要思想是從邏輯上“延長”分支指令的執(zhí)行時間。把延遲分支看成是由原來的分支指令和若干個延遲槽構(gòu)成。不管分支是否成功,都要按順序執(zhí)行延遲槽中的指令。3種方法的共同特點:它們對分支的處理方法在程序的執(zhí)行過程中始終是不變的。它們要么總是預(yù)測分支成功,要么總是預(yù)測分支失敗。3.8簡述延遲分支方法中的三種調(diào)度策略的優(yōu)缺點。調(diào)度策略對調(diào)度的要求對流水線性能改善的影響從前調(diào)度分支必須不依賴于被調(diào)度的指令總是可以有效提高流水線性能從目標(biāo)處調(diào)度如果分支轉(zhuǎn)移失敗,必須保證被調(diào)度的指令對程序的執(zhí)行沒有影響,可能需要復(fù)制被調(diào)度指令分支轉(zhuǎn)移成功時,可以提高流水線性能。但由于復(fù)制指令,可能加大程序空間從失敗處調(diào)度如果分支轉(zhuǎn)移成功,必須保證被調(diào)度的指令對程序的執(zhí)行沒有影響分支轉(zhuǎn)移失敗時,可以提高流水線性能3.9列舉出下面循環(huán)中的所有相關(guān),包括輸出相關(guān)、反相關(guān)、真相關(guān)。for(i=2;i<100;i=i+1) a[i]=b[i]+a[i] ;/*s1*/ c[i+1]=a[i]+d[i] ;/*s2*/ a[i-1]=2*b[i] ;/*s3*/ b[i+1]=2*b[i] ;/*s4*/ 解:展開循環(huán)兩次:a[i]=b[i]+a[i] ;/*s1*/c[i+1]=a[i]+d[i] ;/*s2*/a[i-1]=2*b[i] ;/*s3*/b[i+1]=2*b[i] ;/*s4*/a[i+1]=b[i+1]+a[i+1] ;/*s1’*/c[i+2]=a[i+1]+d[i+1] ;/*s2‘*/a[i]=2*b[i+1] ;/*s3‘*/b[i+2]=2*b[i+1] ;/*s4‘*/輸出相關(guān):無反相關(guān):無真相關(guān):S1&S2由于循環(huán)引入的相關(guān):S4&S4’(真相關(guān))、S1’&S4(真相關(guān))、S3’&S4(真相關(guān))、S1&S33.10簡述三種向量處理方式,它們對向量處理機的結(jié)構(gòu)要求有何不同?答(1)橫向處理方式:若向量長度為N,則水平處理方式相當(dāng)于執(zhí)行N次循環(huán)。若使用流水線,在每次循環(huán)中可能出現(xiàn)數(shù)據(jù)相關(guān)和功能轉(zhuǎn)換,不適合對向量進行流水處理。(2)縱向處理方式:將整個向量按相同的運算處理完畢之后,再去執(zhí)行其他運算。適合對向量進行流水處理,向量運算指令的源/目向量都放在存儲器內(nèi),使得流水線運算部件的輸入、輸出端直接與存儲器相聯(lián),構(gòu)成M-M型的運算流水線。(3)縱橫處理方式:把長度為N的向量分為若干組,每組長度為n,組內(nèi)按縱向方式處理,依次處理各組,組數(shù)為「N/n」,適合流水處理。可設(shè)長度為n的向量寄存器,使每組向量運算的源/目向量都在向量寄存器中,流水線的運算部件輸入、輸出端與向量寄存器相聯(lián),構(gòu)成R-R型運算流水線。3.11可采用哪些方法來提高向量處理機的性能?答:可采用多種方法:設(shè)置多個功能部件,使它們并行工作;采用鏈接技術(shù),加快一串向量指令的執(zhí)行;采用循環(huán)開采技術(shù),加快循環(huán)的處理;采用多處理機系統(tǒng),進一步提高性能。3.12有一指令流水線如下所示求連續(xù)輸入10條指令,該流水線的實際吞吐率和效率;該流水線的“瓶頸”在哪一段?請采取兩種不同的措施消除此“瓶頸”。對于你所給出的兩種新的流水線,連續(xù)輸入10條指令時,其實際吞吐率和效率各是多少?解:(1)(2)瓶頸在3、4段。變成八級流水線(細分)重復(fù)設(shè)置部件1123-13-24-14-24-34-43.13有一個流水線由4段組成,其中每當(dāng)流經(jīng)第3段時,總要在該段循環(huán)一次,然后才能流到第4段。如果每段經(jīng)過一次所需要的時間都是,問:當(dāng)在流水線的輸入端連續(xù)地每時間輸入任務(wù)時,該流水線會發(fā)生什么情況?此流水線的最大吞吐率為多少?如果每輸入一個任務(wù),連續(xù)處理10個任務(wù)時的實際吞吐率和效率是多少?當(dāng)每段時間不變時,如何提高該流水線的吞吐率?仍連續(xù)處理10個任務(wù)時,其吞吐率提高多少?解:(1)會發(fā)生流水線阻塞情況。第1個任務(wù)S1S2S3S3S4第2個任務(wù)S1S2stallS3S3S4第3個任務(wù)S1stallS2stallS3S3S4第4個任務(wù)S1stallS2stallS3S3S4(2)(3)重復(fù)設(shè)置部件吞吐率提高倍數(shù)==1.643.14有一條靜態(tài)多功能流水線由5段組成,加法用1、3、4、5段,乘法用1、2、5段,第3段的時間為2△t,其余各段的時間均為△t,而且流水線的輸出可以直接返回輸入端或暫存于相應(yīng)的流水寄存器中?,F(xiàn)要在該流水線上計算,畫出其時空圖,并計算其吞吐率、加速比和效率。解:首先,應(yīng)選擇適合于流水線工作的算法。對于本題,應(yīng)先計算A1+B1、A2+B2、A3+B3和A4+B4;再計算(A1+B1)×(A2+B2)和(A3+B3)×(A4+B4);然后求總的結(jié)果。其次,畫出完成該計算的時空圖,如圖所示,圖中陰影部分表示該段在工作。由圖可見,它在18個△t時間中,給出了7個結(jié)果。所以吞吐率為: 如果不用流水線,由于一次求積需3△t,一次求和需5△t,則產(chǎn)生上述7個結(jié)果共需(4×5+3×3)△t=29△t。所以加速比為: 該流水線的效率可由陰影區(qū)的面積和5個段總時空區(qū)的面積的比值求得: 3.15動態(tài)多功能流水線由6個功能段組成,如下圖:其中,S1、S4、S5、S6組成乘法流水線,S1、S2、S3、S6組成加法流水線,各個功能段時間均為50ns,假設(shè)該流水線的輸出結(jié)果可以直接返回輸入端,而且設(shè)置有足夠的緩沖寄存器,若以最快的方式用該流水計算:畫出時空圖;計算實際的吞吐率、加速比和效率。解:機器一共要做10次乘法,4次加法。3.16在MIPS流水線上運行如下代碼序列:LOOP:LW R1,0(R2)DADDIU R1,R1,#1SW R1,0(R2)DADDIU R2,R2,#4DSUBR4,R3,R2BNEZR4,LOOP其中:R3的初值是R2+396。假設(shè):在整個代碼序列的運行過程中,所有的存儲器訪問都是命中的,并且在一個時鐘周期中對同一個寄存器的讀操作和寫操作可以通過寄存器文件“定向”。問:在沒有任何其它定向(或旁路)硬件的支持下,請畫出該指令序列執(zhí)行的流水線時空圖。假設(shè)采用排空流水線的策略處理分支指令,且所有的存儲器訪問都命中Cache,那么執(zhí)行上述循環(huán)需要多少個時鐘周期?假設(shè)該流水線有正常的定向路徑,請畫出該指令序列執(zhí)行的流水線時空圖。假設(shè)采用預(yù)測分支失敗的策略處理分支指令,且所有的存儲器訪問都命中Cache,那么執(zhí)行上述循環(huán)需要多少個時鐘周期?假設(shè)該流水線有正常的定向路徑和一個單周期延遲分支,請對該循環(huán)中的指令進行調(diào)度,你可以重新組織指令的順序,也可以修改指令的操作數(shù),但是注意不能增加指令的條數(shù)。請畫出該指令序列執(zhí)行的流水線時空圖,并計算執(zhí)行上述循環(huán)所需要的時鐘周期數(shù)。解:寄存器讀寫可以定向,無其他旁路硬件支持。排空流水線。第i次迭代(i=0..98)開始周期:1+(i×17)總的時鐘周期數(shù):(98×17)+18=1684有正常定向路徑,預(yù)測分支失敗。第i次迭代(i=0..98)開始周期:1+(i×10)總的時鐘周期數(shù):(98×10)+11=991有正常定向路徑。單周期延遲分支。LOOP:LWR1,0(R2)DADDIUR2,R2,#4DADDIUR1,R1,#1DSUBR4,R3,R2BNEZR4,LOOPSWR1,-4(R2)第i次迭代(i=0..98)開始周期:1+(i×6)總的時鐘周期數(shù):(98×6)+10=5983.17假設(shè)各種分支指令數(shù)占所有指令數(shù)的百分比如下:條件分支20%(其中的60%是分支成功的)跳轉(zhuǎn)和調(diào)用5%現(xiàn)有一條段數(shù)為4的流水線,無條件分支在第二個時鐘周期結(jié)束時就被解析出來,而條件分支要到第三個時鐘周期結(jié)束時才能夠被解析出來。第一個流水段是完全獨立于指令類型的,即所有類型的指令都必須經(jīng)過第一個流水段的處理。請問在沒有任何控制相關(guān)的情況下,該流水線相對于存在上述控制相關(guān)情況下的加速比是多少?解:沒有控制相關(guān)時流水線的平均CPI=1存在控制相關(guān)時:由于無條件分支在第二個時鐘周期結(jié)束時就被解析出來,而條件分支要到第3個時鐘周期結(jié)束時才能被解析出來。所以:(1)若使用排空流水線的策略,則對于條件分支,有兩個額外的stall,對無條件分支,有一個額外的stall:CPI=1+20%*2+5%*1=1.45加速比S=CPI/1=1.45(2)若使用預(yù)測分支成功策略,則對于不成功的條件分支,有兩個額外的stall,對無條件分支和成功的條件分支,有一個額外的stall1:CPI=1+20%*(60%*1+40%*2)+5%*1=1.33加速比S=CPI/1=1.33(3)若使用預(yù)測分支失敗策略,則對于成功的條件分支,有兩個額外的stall;對無條件分支,有一個額外的stall;對不成功的條件分支,其目標(biāo)地址已經(jīng)由PC值給出,不必等待,所以無延遲:CPI=1+20%*(60%*2+40%*0)+5%*1=1.29加速比S=CPI/1=1.293.18在CRAY-1機器上,按照鏈接方式執(zhí)行下述4條向量指令(括號中給出了相應(yīng)功能部件的執(zhí)行時間),如果向量寄存器和功能部件之間的數(shù)據(jù)傳送需要1拍,試求此鏈接流水線的通過時間是多少拍?如果向量長度為64,則需多少拍才能得到全部結(jié)果?V0←存儲器(從存儲器中取數(shù):7拍)V2←V0+V1(向量加:3拍)V3←V2<A3(按(A3)左移:4拍)V5←V3∧V4(向量邏輯乘:2拍)解:通過時間就是每條向量指令的第一個操作數(shù)執(zhí)行完畢需要的時間,也就是各功能流水線由空到滿的時間,具體過程如下圖所示。要得到全部結(jié)果,在流水線充滿之后,向量中后繼操作數(shù)繼續(xù)以流水方式執(zhí)行,直到整組向量執(zhí)行完畢。3.19某向量處理機有16個向量寄存器,其中V0~V5中分別放有向量A、B、C、D、E、F,向量長度均為8,向量各元素均為浮點數(shù);處理部件采用兩條單功能流水線,加法功能部件時間為2拍,乘法功能部件時間為3拍。采用類似于CARY-1的鏈接技術(shù),先計算(A+B)*C,在流水線不停流的情況下,接著計算(D+E)*F。求此鏈接流水線的通過時間?(設(shè)寄存器入、出各需1拍)假如每拍時間為50ns,完成這些計算并把結(jié)果存進相應(yīng)寄存器,此處理部件的實際吞吐率為多少MFLOPS?解:(1)我們在這里假設(shè)A+B的中間結(jié)果放在V6中,(A+B)×C地最后結(jié)果放在V7中,D+E地中間結(jié)果放在V8中,(D+E)×F的最后結(jié)果放在V9中。具體實現(xiàn)參考下圖:通過時間應(yīng)該為前者((A+B)×C)通過的時間:T通過=(1+2+1)+(1+3+1)=9(拍)(2)在做完(A+B)×C之后,作(C+D)×E就不需要通過時間了。V6←A+BV7←V6×CV8←D+EV9←V8×F第4章指令級并行4.1解釋下列術(shù)語 指令級并行:簡稱ILP。是指指令之間存在的一種并行性,利用它,計算機可以并行執(zhí)行兩條或兩條以上的指令。指令調(diào)度:通過在編譯時讓編譯器重新組織指令順序或通過硬件在執(zhí)行時調(diào)整指令順序來消除沖突。指令的動態(tài)調(diào)度:是指在保持數(shù)據(jù)流和異常行為的情況下,通過硬件對指令執(zhí)行順序進行重新安排,以提高流水線的利用率且減少停頓現(xiàn)象。是由硬件在程序?qū)嶋H運行時實施的。指令的靜態(tài)調(diào)度:是指依靠編譯器對代碼進行靜態(tài)調(diào)度,以減少相關(guān)和沖突。它不是在程序執(zhí)行的過程中、而是在編譯期間進行代碼調(diào)度和優(yōu)化的。保留站:在采用Tomasulo算法的MIPS處理器浮點部件中,在運算部件的入口設(shè)置的用來保存一條已經(jīng)流出并等待到本功能部件執(zhí)行的指令(相關(guān)信息)。CDB:公共數(shù)據(jù)總線。動態(tài)分支預(yù)測技術(shù):是用硬件動態(tài)地進行分支處理的方法。在程序運行時,根據(jù)分支指令過去的表現(xiàn)來預(yù)測其將來的行為。如果分支行為發(fā)生了變化,預(yù)測結(jié)果也跟著改變。BHT:分支歷史表。用來記錄相關(guān)分支指令最近一次或幾次的執(zhí)行情況是成功還是失敗,并據(jù)此進行預(yù)測。分支目標(biāo)緩沖:是一種動態(tài)分支預(yù)測技術(shù)。將執(zhí)行過的成功分支指令的地址以及預(yù)測的分支目標(biāo)地址記錄在一張硬件表中。在每次取指令的同時,用該指令的地址與表中所有項目的相應(yīng)字段進行比較,以便盡早知道分支是否成功,盡早知道分支目標(biāo)地址,達到減少分支開銷的目的。前瞻執(zhí)行:解決控制相關(guān)的方法,它對分支指令的結(jié)果進行猜測,然后按這個猜測結(jié)果繼續(xù)取指、流出和執(zhí)行后續(xù)的指令。只是指令執(zhí)行的結(jié)果不是寫回到寄存器或存儲器,而是放到一個稱為ROB的緩沖器中。等到相應(yīng)的指令得到“確認”(即確實是應(yīng)該執(zhí)行的)后,才將結(jié)果寫入寄存器或存儲器。ROB:ReOrderBuffer。前瞻執(zhí)行緩沖器。超標(biāo)量:一種多指令流出技術(shù)。它在每個時鐘周期流出的指令條數(shù)不固定,依代碼的具體情況而定,但有個上限。超流水:在一個時鐘周期內(nèi)分時流出多條指令。超長指令字:一種多指令流出技術(shù)。VLIW處理機在每個時鐘周期流出的指令條數(shù)是固定的,這些指令構(gòu)成一條長指令或者一個指令包,在這個指令包中,指令之間的并行性是通過指令顯式地表示出來的。循環(huán)展開:是一種增加指令間并行性最簡單和最常用的方法。它將循環(huán)展開若干遍后,通過重命名和指令調(diào)度來開發(fā)更多的并行性。4.2簡述Tomasulo算法的基本思想。答:核心思想是:①記錄和檢測指令相關(guān),操作數(shù)一旦就緒就立即執(zhí)行,把發(fā)生RAW沖突的可能性減小到最少;②通過寄存器換名來消除WAR沖突和WAW沖突。寄存器換名是通過保留站來實現(xiàn),它保存等待流出和正在流出指令所需要的操作數(shù)?;舅枷耄褐灰僮鲾?shù)有效,就將其取到保留站,避免指令流出時才到寄存器中取數(shù)據(jù),這就使得即將執(zhí)行的指令從相應(yīng)的保留站中取得操作數(shù),而不是從寄存器中。指令的執(zhí)行結(jié)果也是直接送到等待數(shù)據(jù)的其它保留站中去。因而,對于連續(xù)的寄存器寫,只有最后一個才真正更新寄存器中的內(nèi)容。一條指令流出時,存放操作數(shù)的寄存器名被換成為對應(yīng)于該寄存器保留站的名稱(編號)。4.3根據(jù)需要展開下面的循環(huán)并進行指令調(diào)度,直到?jīng)]有任何延遲。指令的延遲如表4.4。LOOP: L.D F0,0(R1) MUL.D F0,F0,F2 L.D F4,0(R2) ADD.D F0,F0,F4 S.D F0,0(R2) DSUBI R1,R1,#8 DSUBI R2,R2,#8 BNEZ R1,LOOP解:將循環(huán)展開兩次,進行指令調(diào)度,即可以消除延遲,代碼如下:LOOP:L.D F0,0(R1)L.D F10,-8(R1)MUL.D F0,F(xiàn)0,F(xiàn)2MUL.D F10,F(xiàn)10,F(xiàn)2L.D F4,0(R2)L.D F14,-8(R2)ADD.D F0,F(xiàn)0,F(xiàn)4ADD.D F10,F(xiàn)10,F(xiàn)14DSUBI R1,R1,16S.D 0(R2),F(xiàn)0DSUBI R2,R2,16BNEZ R1,LOOPS.D 8(R2),F(xiàn)104.4假設(shè)有一條長流水線,僅僅對條件轉(zhuǎn)移指令使用分支目標(biāo)緩沖。假設(shè)分支預(yù)測錯誤的開銷為4個時鐘周期,緩沖不命中的開銷為3個時鐘周期。假設(shè):命中率為90%,預(yù)測精度為90%,分支頻率為15%,沒有分支的基本CPI為1。求程序執(zhí)行的CPI。相對于采用固定的2個時鐘周期延遲的分支處理,哪種方法程序執(zhí)行速度更快?解:(1)程序執(zhí)行的CPI=沒有分支的基本CPI(1)+分支帶來的額外開銷分支帶來的額外開銷是指在分支指令中,緩沖命中但預(yù)測錯誤帶來的開銷與緩沖沒有命中帶來的開銷之和。分支帶來的額外開銷=15%*(90%命中×10%預(yù)測錯誤×4+10%沒命中×3)=0.099所以,程序執(zhí)行的CPI=1+0.099=1.099(2)采用固定的2個時鐘周期延遲的分支處理CPI=1+15%×2=1.3由(1)(2)可知分支目標(biāo)緩沖方法執(zhí)行速度快。4.5假設(shè)分支目標(biāo)緩沖的命中率為90%,程序中無條件轉(zhuǎn)移指令的比例為5%,沒有無條件轉(zhuǎn)移指令的程序CPI值為1。假設(shè)分支目標(biāo)緩沖中包含分支目標(biāo)指令,允許無條件轉(zhuǎn)移指令進入分支目標(biāo)緩沖,則程序的CPI值為多少?解:設(shè)每條無條件轉(zhuǎn)移指令的延遲為x,則有:1+5%×x=1.1x=2當(dāng)分支目標(biāo)緩沖命中時,無條件轉(zhuǎn)移指令的延遲為0。所以程序的CPI=1+2×5%×(1-90%)=1.014.6下面的一段MIPS匯編程序是計算高斯消去法中的關(guān)鍵一步,用于完成下面公式的計算:Y=aX+Y其浮點指令延遲如表4.3所示,整數(shù)指令均為1個時鐘周期完成,浮點和整數(shù)部件均采用流水。整數(shù)操作之間以及與其它所有浮點操作之間的延遲為0,轉(zhuǎn)移指令的延遲為0。X中的最后一個元素存放在存儲器中的地址為DONE。FOO: L.D F2,0(R1) MUT.D F4,F2,F0 L.D F6,0(R2) ADD.D F6,F4,F6 S.D F6,0[R2] DADDIU R1,R1,#8 DADDIU R2,R2,#8 DSUBIU R3,R1,#DONE BNEZ R3,FOO 對于標(biāo)準的MIPS單流水線,上述循環(huán)計算一個Y值需要多少時間?其中有多少空轉(zhuǎn)周期?對于標(biāo)準的MIPS單流水線,將上述循環(huán)順序展開4次,不進行任何指令調(diào)度,計算一個Y值平均需要多少時間?加速比是多少?其加速是如何獲得的?對于標(biāo)準的MIPS單流水線,將上述循環(huán)順序展開4次,優(yōu)化和調(diào)度指令,使循環(huán)處理時間達到最優(yōu),計算一個Y值平均需要多少時間?加速比是多少?對于采用如圖4.8前瞻執(zhí)行機制的MIPS處理器(只有一個整數(shù)部件)。當(dāng)循環(huán)第二次執(zhí)行到BNEZ R3,FOO時,寫出前面所有指令的狀態(tài),包括指令使用的保留站、指令起始節(jié)拍、執(zhí)行節(jié)拍和寫結(jié)果節(jié)拍,并寫出處理器當(dāng)前的狀態(tài)。對于2路超標(biāo)量的MIPS流水線,設(shè)有兩個指令流出部件,可以流出任意組合的指令,系統(tǒng)中的功能部件數(shù)量不受限制。將上述循環(huán)展開4次,優(yōu)化和調(diào)度指令,使循環(huán)處理時間達到最優(yōu)。計算一個Y值平均需要多少時間?加速比是多少?對于如圖4.13結(jié)構(gòu)的超長指令字MIPS處理器,將上述循環(huán)展開4次,優(yōu)化和調(diào)度指令,使循環(huán)處理時間達到最優(yōu)。計算一個Y值平均需要多少時間?加速比是多少?解:(1) L.D F2,0(R1) 1 Stall MUT.D F4,F2,F0 2 L.D F6,0(R2) 3 Stall Stall ADD.D F6,F4,F6 4 Stall StallS.D F6,0[R2] 5 DADDIU R1,R1,#8 6 DADDIU R2,R2,#8 7DSUBIU R3,R1,#DONE 8 BNEZ R3,FOO 9所以,共有14個時鐘周期,其中有5個空轉(zhuǎn)周期。(2)循環(huán)順序展開4次,不進行任何指令調(diào)度,則指令1~5及其間的stall都是必要的,只是指令6~9只需執(zhí)行一次,因此,共有10×4+4=44個時鐘周期,計算出4個Y值,所以計算一個Y值需要11個時鐘周期,加速比為:14/11=1.27。加速主要是來自減少控制開銷,即減少對R1、R2的整數(shù)操作以及比較、分支指令而來的。(3)循環(huán)順序展開4次,優(yōu)化和調(diào)度指令,如下: L.D F2,0(R1) L.D F8,8(R1)L.D F14,16(R1) L.D F20,24(R1) MUT.D F4,F2,F0 MUT.D F10,F8,F0 MUT.D F16,F14,F0 MUT.D F22,F20,F0 L.D F6,0(R2) L.D F12,8(R2) L.D F18,16(R2) L.D F24,24(R2) ADD.D F6,F4,F6 ADD.D F12,F10,F12 ADD.D F18,F16,F18 ADD.D F24,F22,F24 S.D F6,0[R2] S.D F12,8[R2] S.D F18,16[R2] S.D F24,24[R2] DADDIU R1,R1,#32 DADDIU R2,R2,#32 DSUBIU R3,R1,#DONE BNEZ R3,FOO 共用了24個時鐘周期,則計算一個Y值平均需要24/4=6個時鐘周期,加速比:14/6=2.33(4)指令指令執(zhí)行時鐘流出執(zhí)行寫結(jié)果確認L.D F2,0(R1)1234MUL.D F4,F2,F02456L.D F6,0(R2)3467ADD.D F6,F4,F648910S.D F6,0(R2)5111213DADDIU R1,R1,#8678DADDIU R2,R2,#8789DSUBIU R3,R1,#DONE8910BNEZ R3,FOO910L.D F2,0(R1)10111314MUL.D F4,F2,F011131415L.D F6,0(R2)12131516ADD.D F6,F4,F613171819S.D F6,0(R2)14202122DADDIU R1,R1,#8151617DADDIU R2,R2,#8161718DSUBIU R3,R1,#DONE171819BNEZ R3,FOO18名稱保留站BusyOpVjVkQjQkDestAAdd1yesADD.DRegs[F4]Regs[F6]Add2noAdd3noMult1yesMult2no項號ROBBusy指令狀態(tài)目的Value1yesADD.DF6,F4,F6執(zhí)行F6Regs[F4]+Regs[F6]2yesS.DF6,0(R2)流出Mem[0+Regs[R2]]#2字段浮點寄存器狀態(tài)F0F2F4F6F8F10…F30ROB項編號1Busyyes…(5)整數(shù)指令浮點指令時鐘周期數(shù)L.D F2,0(R1)1L.D F8,8(R1)2L.D F14,16(R1)MUT.D F4,F2,F03L.D F20,24(R1)MUT.D F10,F8,F04L.D F6,0(R2)MUT.D F16,F14,F05L.D F12,8(R2)MUT.D F22,F20,F06L.D F18,16(R2)ADD.D F6,F4,F67L.D F24,24(R2)ADD.D F12,F10,F128DADDIUR1,R1,#32ADD.D F18,F16,F189S.D F6,0(R2)ADD.D F24,F22,F2410S.D F12,8(R2)11S.D F18,16(R2)12S.D F24,24(R2)13DADDIUR2,R2,#3214DSUBIU R3,R1,#DONE15BNEZ R3,FOO16計算一個Y值需要16/4=4個時鐘周期,加速比=14/4=3.5(6)訪存1訪存2浮點指令1浮點指令2整數(shù)指令時鐘周期L.DF2,0(R1)L.D F8,8(R1)1L.DF14,16(R1)L.DF20,24(R1)L.DF6,0(R2)L.DF12,8(R2)MUT.DF4,F2,F0MUT.DF10,F8,F03L.DF18,16(R2)L.DF24,24(R2)MUT.DF16,F14,F0MUT.DF22,F20,F04ADD.DF6,F4,F6ADD.DF12,F10,F125ADD.DF18,F16,F18ADD.DF24,F22,F24DADDIUR1,R1,#326DADDIUR2,R2,#327DSUBIUR3,R1,#DONE8BNEZ R3,FOO9S.DF6,-32(R2)S.DF12,-24(R2)10S.DF18,-16(R2)S.DF24,-8(R2)11計算一個Y值需要11/4個時鐘周期,加速比=14/(11/4)=56/114.7對于兩路超標(biāo)量處理器,從存儲器取數(shù)據(jù)有兩拍附加延遲,其它操作均有1拍附加延遲,對于下列代碼,請按要求進行指令調(diào)度。LW R4,(R5)LW R7,(R8)DADD R9,R4,R7LD R10,(R11)DMUL R12,R13,R14DSUB R2,R3,R1SW R15,(R2)DMUL R21,R4,R7SW R23,(R22)SW R21,假設(shè)兩路功能部件中同時最多只有一路可以是訪問存儲器的操作,同時也最多只有一路可以是運算操作,指令順序不變。假設(shè)兩路功能部件均可以執(zhí)行任何操作,指令順序不變。假設(shè)指令窗口足夠大,指令可以亂序(out-of-order)流出,兩路功能部件均可以執(zhí)行任何操作。解:(1)第一路第二路LW R4,(R5)LW R7,(R8)DADD R9,R4,R7LD R10,(R11)DMUL R12,R13,R14DSUB R2,R3,R1SW R15,(R2)DMUL R21,R4,R7SW R23,(R22)SW R21,(R24)(2)第一路第二路LW R4,(R5)LW R7,(R8)DADD R9,R4,R7LD R10,(R11)DMUL R12,R13,R14DSUB R2,R3,R1SW R15,(R2)DMUL R21,R4,R7SW R23,(R22)SW R21,(R24)(3)第一路第二路LW R4,(R5)LW R7,(R8)DSUB R2,R3,R1LD R10,(R11)SW R23,(R22)DMUL R12,R13,R14DADD R9,R4,R7DMUL R21,R4,R7SW R15,(R2)SW R21,(R24)4.8對于例4.5,在相同的條件下,如果展開7遍循環(huán),求:每遍循環(huán)的平均時鐘周期;每個時鐘周期流出指令數(shù);操作槽(功能部件)的使用效率;如果展開10遍,會出現(xiàn)哪些問題?解:展開7遍循環(huán)訪存指令1訪存指令2浮點指令1浮點指令2整數(shù)/轉(zhuǎn)移指令L.DF0,0(R1)L.DF6,-8(R1)L.DF10,-16(R1)L.DF14,-24(R1)L.DF18,-32(R1)L.DF22,-40(R1)ADD.DF4,F0,F2ADD.DF8,F6,F2L.DF26,-48(R1)ADD.DF12,F10,F2ADD.DF16,F14,F2ADD.DF20,F18,F2ADD.DF24,F22,F2S.DF4,0(R1)S.DF8,-8(R1)ADD.DF28,F26,F2S.DF12,-16(R1)S.DF16,–24(R1)S.DF20,-32(R1)S.DF24,–40(R1)DADDIUR1,R1,#-56S.DF28,8(R1)BNER1,Loop這段程序的運行時間為9個時鐘周期,每遍循環(huán)平均約1.28個時鐘周期。9個時鐘周期內(nèi)流出了23條指令,每個時鐘周期2.55條。9個時鐘周期共有操作槽95=45個,有效槽的比例為51.1%。4.9設(shè)指令流水線由取指令、分析指令和執(zhí)行指令3個部件構(gòu)成,每個部件經(jīng)過的時間為△t,連續(xù)流入12條指令。分別畫出標(biāo)量流水處理機以及ILP均為4的超標(biāo)量處理機、超長指令字處理機、超流水處理機的時空圖,并分別計算它們相對于標(biāo)量流水處理機的加速比。解:標(biāo)量流水處理機的時空圖:執(zhí)行完12條指令需T1=14△t。超標(biāo)量流水處理機與超長指令字處理機的時空圖:超標(biāo)量流水處理機中,每一個時鐘周期同時啟動4條指令。執(zhí)行完12條指令需T2=5△t,相對于標(biāo)量流水處理機的加速比為:超長指令字處理機中,每4條指令組成一條長指令,共形成3條長指令。執(zhí)行完12條指令需T3=5△t,相對于標(biāo)量流水處理機的加速比為:超流水處理機的時空圖:超流水處理機中,每1/4個時鐘周期啟動一條指令。執(zhí)行完12條指令需T4=5.75△t,相對于標(biāo)量流水處理機的加速比為:第5章存儲層次5.1解釋下列術(shù)語多級存儲層次:采用不同的技術(shù)實現(xiàn)的存儲器,處在離CPU不同距離的層次上,各存儲器之間一般滿足包容關(guān)系,即任何一層存儲器中的內(nèi)容都是其下一層(離CPU更遠的一層)存儲器中內(nèi)容的子集。目標(biāo)是達到離CPU最近的存儲器的速度,最遠的存儲器的容量。全相聯(lián)映象:主存中的任一塊可以被放置到Cache中任意一個地方。直接映象:主存中的每一塊只能被放置到Cache中唯一的一個地方。組相聯(lián)映象:主存中的每一塊可以放置到Cache中唯一的一組中任何一個地方(Cache分成若干組,每組由若干塊構(gòu)成)。替換算法:由于主存中的塊比Cache中的塊多,所以當(dāng)要從主存中調(diào)一個塊到Cache中時,會出現(xiàn)該塊所映象到的一組(或一個)Cache塊已全部被占用的情況。這時,需要被迫騰出其中的某一塊,以接納新調(diào)入的塊。LRU:選擇最近最少被訪問的塊作為被替換的塊。實際實現(xiàn)都是選擇最久沒有被訪問的塊作為被替換的塊。寫直達法:在執(zhí)行寫操作時,不僅把信息寫入Cache中相應(yīng)的塊,而且也寫入下一級存儲器中相應(yīng)的塊。寫回法:只把信息寫入Cache中相應(yīng)塊,該塊只有被替換時,才被寫回主存。按寫分配法:寫失效時,先把所寫單元所在的塊調(diào)入Cache,然后再進行寫入。不按寫分配法:寫失效時,直接寫入下一級存儲器中,而不把相應(yīng)的塊調(diào)入Cache。命中時間:訪問Cache命中時所用的時間。失效率:CPU訪存時,在一級存儲器中找不到所需信息的概率。失效開銷:CPU向二級存儲器發(fā)出訪問請求到把這個數(shù)據(jù)調(diào)入一級存儲器所需的時間。強制性失效:當(dāng)?shù)谝淮卧L問一個塊時,該塊不在Cache中,需要從下一級存儲器中調(diào)入Cache,這就是強制性失效。容量失效:如果程序在執(zhí)行時,所需要的塊不能全部調(diào)入Cache中,則當(dāng)某些塊被替換后又重新被訪問,就會產(chǎn)生失效,這種失效就稱作容量失效。沖突失效:在組相聯(lián)或直接映象Cache中,若太多的塊映象到同一組(塊)中,則會出現(xiàn)該組中某個塊被別的塊替換(即使別的組或塊有空閑位置),然后又被重新訪問的情況。2:1Cache經(jīng)驗規(guī)則:大小為N的直接映象Cache的失效率約等于大小為N/2的兩路組相聯(lián)Cache的實效率。相聯(lián)度:在組相聯(lián)中,每組Cache中的塊數(shù)。VictimCache:位于Cache和存儲器之間的又一級Cache,容量小,采用全相聯(lián)策略。用于存放由于失效而被丟棄(替換)的那些塊。每當(dāng)失效發(fā)生時,在訪問下一級存儲器之前,先檢查VictimCache中是否含有所需塊。故障性預(yù)取:在預(yù)取時,若出現(xiàn)虛地址故障或違反保護權(quán)限,就會發(fā)生異常。非故障性預(yù)?。涸陬A(yù)取時,若出現(xiàn)虛地址故障或違反保護權(quán)限,不發(fā)生異常。非阻塞Cache:Cache在等待預(yù)取數(shù)據(jù)返回時,還能繼續(xù)提供指令和數(shù)據(jù)。盡早重啟動:在請求字沒有到達時,CPU處于等待狀態(tài)。一旦請求字到達,就立即發(fā)送給CPU,讓等待的CPU盡早重啟動,繼續(xù)執(zhí)行。請求字優(yōu)先:調(diào)塊時,首先向存儲器請求CPU所要的請求字。請求字一旦到達,就立即送往CPU,讓CPU繼續(xù)執(zhí)行,同時從存儲器調(diào)入該塊的其余部分。虛擬Cache:地址使用虛地址的Cache。多體交叉存儲器:具有多個存儲體,各體之間按字交叉的存儲技術(shù)。存儲體沖突:多個請求要訪問同一個體。TLB:一個專用高速存儲器,用于存放近期經(jīng)常使用的頁表項,其內(nèi)容是頁表部分內(nèi)容的一個副本。簡述“Cache—主存”層次與“主存—輔存”層次的區(qū)別。答:存儲層次比較項目“Cache—主存”層次“主存—輔存”層次目的為了彌補主存速度的不足為了彌補主存容量的不足存儲管理的實現(xiàn)全部由專用硬件實現(xiàn)主要由軟件實現(xiàn)訪問速度的比值(第一級比第二級)幾比一幾萬比一典型的塊(頁)大小幾十個字節(jié)幾百到幾千個字節(jié)CPU對第二級的訪問方式可直接訪問均通過第一級不命中時CPU是否切換不切換切換到其它進程地址映象方法有哪幾種?它們各有什么優(yōu)缺點?答:(1)全相聯(lián)映象。實現(xiàn)查找的機制復(fù)雜,代價高,速度慢。Cache空間的利用率較高,塊沖突概率較低,因而Cache的失效率也低。(2)直接映象。實現(xiàn)查找的機制簡單,速度快。Cache空間的利用率較低,塊沖突概率較高,因而Cache的失效率也高。(3)組相聯(lián)映象。組相聯(lián)是直接映象和全相聯(lián)的一種折衷。降低Cache失效率有哪幾種方法?簡述其基本思想。答:常用的降低Cache失效率的方法有下面幾種:增加Cache塊大小。增加塊大小利用了程序的空間局部性。增加Cache的容量。提高相聯(lián)度,降低沖突失效。偽相聯(lián)Cache,降低沖突失效。當(dāng)對偽相聯(lián)Cache進行訪問時,首先是按與直接映象相同的方式進行訪問。如果命中,則從相應(yīng)的塊中取出所訪問的數(shù)據(jù),送給CPU,訪問結(jié)束。如果不命中,就將索引字段的最高位取反,然后按照新索引去尋找“偽相聯(lián)組”中的對應(yīng)塊。如果這一塊的標(biāo)識匹配,則稱發(fā)生了“偽命中”。否則,就訪問下一級存儲器。硬件預(yù)取技術(shù)。在處理器提出訪問請求前預(yù)取指令和數(shù)據(jù)。由編譯器控制的預(yù)取,硬件預(yù)取的替代方法,在編譯時加入預(yù)取的指令,在數(shù)據(jù)被用到之前發(fā)出預(yù)取請求。編譯器優(yōu)化,通過對軟件的優(yōu)化來降低失效率?!盃奚盋ache。在Cache和其下一級存儲器的數(shù)據(jù)通路之間增設(shè)一個全相聯(lián)的小Cache,存放因沖突而被替換出去的那些塊。每當(dāng)發(fā)生不命中時,在訪問下一級存儲器之前,先檢查“犧牲”Cache中是否含有所需的塊。如果有,就將該塊與Cache中某個塊做交換,把所需的塊從“犧牲”Cache調(diào)入Cache。簡述減小Cache失效開銷的幾種方法。答:讓讀失效優(yōu)先于寫、寫緩沖合并、請求字處理技術(shù)、非阻塞Cache或非鎖定Cache技術(shù)、采用二級Cache。5.6通過編譯器對程序優(yōu)化來改進Cache性能的方法有哪幾種?簡述其基本思想。答:(1)數(shù)組合并。通過提高空間局部性來減少失效次數(shù)。有些程序同時用相同的索引來訪問若干個數(shù)組的同一維,這些訪問可能會相互干擾,導(dǎo)致沖突失效,可以將這些相互獨立的數(shù)組合并成一個復(fù)合數(shù)組,使得一個Cache塊中能包含全部所需元素。(2)內(nèi)外循環(huán)交換。循環(huán)嵌套時,程序沒有按數(shù)據(jù)在存儲器中的順序訪問。只要簡單地交換內(nèi)外循環(huán),就能使程序按數(shù)據(jù)在存儲器中的存儲順序進行訪問。(3)循環(huán)融合。有些程序含有幾部分獨立的程序段,它們用相同的循環(huán)訪問同樣的數(shù)組,對相同的數(shù)據(jù)作不同的運算。通過將它們?nèi)诤铣梢粋€單一循環(huán),能使讀入Cache的數(shù)據(jù)被替換出去之前得到反復(fù)的使用。(4)分塊。通過改進時間局部性來減少失效。分塊不是對數(shù)組的整行或整列進行訪問,而是對子矩陣或塊進行操作。5.7在“Cache—主存”層次中,主存的更新算法有哪兩種?它們各有什么特點?答:(1)寫直達法。易于實現(xiàn),而且下一級存儲器中的數(shù)據(jù)總是最新的。(2)寫回法。速度快,“寫”操作能以Cache存儲器的速度進行。而且對于同一單元的多個寫最后只需一次寫回下一級存儲器,有些“寫”只到達Cache,不到達主存,因而所使用的存儲器頻帶較低。5.8組相聯(lián)Cache的失效率比相同容量直接映象Cache的失效率低。由此能否得出結(jié)論:采用組相聯(lián)一定能帶來性能上的提高?為什么?答:不一定。因為組相聯(lián)命中率的提高是以增加命中時間為代價的,組相聯(lián)需要增加多路選擇開關(guān)。5.9寫出三級Cache的平均訪問時間的公式。解:平均訪存時間=命中時間+失效率×失效開銷只有第I層失效時才會訪問第I+1。設(shè)三級Cache的命中率分別為HL1、Hl2、HL3,失效率分別為Ml1、Ml2、ML3,第三級Cache的失效開銷為PL3。平均訪問時間TA=HL1+Ml1{Hl2+Ml2(HL3+ML3×PL3)}5.10假設(shè)對指令Cache的訪問占全部訪問的75%;而對數(shù)據(jù)Cache的訪問占全部訪問的25%。Cache的命中時間為1個時鐘周期,失效開銷為50個時鐘周期,在混合Cache中一次load或store操作訪問Cache的命中時間都要增加一個時鐘周期,32KB的指令Cache的失效率為0.39%,32KB的數(shù)據(jù)Cache的失效率為4.82%,64KB的混合Cache的失效率為1.35%。又假設(shè)采用寫直達策略,且有一個寫緩沖器,并且忽略寫緩沖器引起的等待。試問指令Cache和數(shù)據(jù)Cache容量均為32KB的分離Cache和容量為64KB的混合Cache相比,哪種Cache的失效率更低?兩種情況下平均訪存時間各是多少?解:(1)根據(jù)題意,約75%的訪存為取指令。因此,分離Cache的總體失效率為:(75%×0.15%)+(25%×3.77%)=1.055%;容量為128KB的混合Cache的失效率略低一些,只有0.95%。(2)平均訪存時間公式可以分為指令訪問和數(shù)據(jù)訪問兩部分:平均訪存時間=指令所占的百分比×(讀命中時間+讀失效率×失效開銷)+數(shù)據(jù)所占的百分比×(數(shù)據(jù)命中時間+數(shù)據(jù)失效率×失效開銷)所以,兩種結(jié)構(gòu)的平均訪存時間分別為:分離Cache的平均訪存時間=75%×(1+0.15%×50)+25%×(1+3.77%×50)=(75%×1.075)+(25%×2.885)=1.5275混合Cache的平均訪存時間=75%×(1+0.95%×50)+25%×(1+1+0.95%×50)=(75%×1.475)+(25%×2.475)=1.725因此,盡管分離Cache的實際失效率比混合Cache的高,但其平均訪存時間反而較低。分離Cache提供了兩個端口,消除了結(jié)構(gòu)相關(guān)。5.11給定以下的假設(shè),試計算直接映象Cache和兩路組相聯(lián)Cache的平均訪問時間以及CPU的性能。由計算結(jié)果能得出什么結(jié)論?理想Cache情況下的CPI為2.0,時鐘周期為2ns,平均每條指令訪存1.2次;兩者Cache容量均為64KB,塊大小都是32字節(jié);組相聯(lián)Cache中的多路選擇器使CPU的時鐘周期增加了10%;這兩種Cache的失效開銷都是80ns;命中時間為1個時鐘周期;64KB直接映象Cache的失效率為1.4%,64KB兩路組相聯(lián)Cache的失效率為1.0%。解:平均訪問時間=命中時間+失效率×失效開銷平均訪問時間1-路=2.0+1.4%*80=3.12ns平均訪問時間2-路=2.0*(1+10%)+1.0%*80=3.0ns兩路組相聯(lián)的平均訪問時間比較低CPUtime=(CPU執(zhí)行+存儲等待周期)*時鐘周期CPUtime=IC(CPI執(zhí)行+總失效次數(shù)/指令總數(shù)*失效開銷)*時鐘周期=IC((CPI執(zhí)行*時鐘周期)+(每條指令的訪存次數(shù)*失效率*失效開銷*時鐘周期))CPUtime1-way=IC(2.0*2+1.2*0.014*80)=5.344ICCPUtime2-way=IC(2.2*2+1.2*0.01*80)=5.36IC相對性能比:5.36/5.344=1.003直接映象cache的訪問速度比兩路組相聯(lián)cache要快1.04倍,而兩路組相聯(lián)Cache的平均性能比直接映象cache要高1.003倍。因此這里選擇兩路組相聯(lián)。5.12假設(shè)一臺計算機具有以下特性:95%的訪存在Cache中命中;塊大小為兩個字,且失效時整個塊被調(diào)入;CPU發(fā)出訪存請求的速率為109字/s;25%的訪存為寫訪問;存儲器的最大流量為109字/s(包括讀和寫);主存每次只能讀或?qū)懸粋€字;在任何時候,Cache中有30%的塊被修改過;寫失效時,Cache采用按寫分配法?,F(xiàn)欲給該計算機增添一臺外設(shè),為此首先想知道主存的頻帶已用了多少。試對于以下兩種情況計算主存頻帶的平均使用比例。寫直達Cache;寫回法Cache。解:采用按寫分配(1)寫直達cache訪問命中,有兩種情況:讀命中,不訪問主存;寫命中,更新cache和主存,訪問主存一次。訪問失效,有兩種情況:讀失效,將主存中的塊調(diào)入cache中,訪問主存兩次;寫失效,將要寫的塊調(diào)入cache,訪問主存兩次,再將修改的數(shù)據(jù)寫入cache和主存,訪問主存一次,共三次。上述分析如下表所示。訪問命中訪問類型頻率訪存次數(shù)Y讀95%*75%=71.3%0Y寫95%*25%=23.8%1N讀5%*75%=3.8%2N寫5%*25%=1.3%3一次訪存請求最后真正的平均訪存次數(shù)=(71.3%*0)+(23.8%*1)+(3.8%*2)+(1.3%*3)=0.35已用帶寬=0.35×109/109=35.0%(2)寫回法cache訪問命中,有兩種情況:讀命中,不訪問主存;寫命中,不訪問主存。采用寫回法,只有當(dāng)修改的cache塊被換出時,才寫入主存;訪問失效,有一個塊將被換出,這也有兩種情況:如果被替換的塊沒有修改過,將主存中的塊調(diào)入cache塊中,訪問主存兩次;如果被替換的塊修改過,則首先將修改的塊寫入主存,需要訪問主存兩次;然后將主存中的塊調(diào)入cache塊中,需要訪問主存兩次,共四次訪問主存。訪問命中塊為臟頻率訪存次數(shù)YN95%*70%=66.5%0YY95%*30%=28.5%0NN5%*70%=3.5%2NY5%*30%=1.5%4所以:一次訪存請求最后真正的平均訪存次數(shù)=66.5%*0+28.5%*0+3.5%*2+1.5%*4=0.13已用帶寬=0.13×109/109=13%5.13在偽相聯(lián)中,假設(shè)在直接映象位置沒有發(fā)現(xiàn)匹配,而在另一個位置才找到數(shù)據(jù)(偽命中)時,不對這兩個位置的數(shù)據(jù)進行交換。這時只需要1個額外的周期。假設(shè)失效開銷為50個時鐘周期,2KB直接映象Cache的失效率為9.8%,2路組相聯(lián)的失效率為7.6%;128KB直接映象Cache的失效率為1.0%,2路組相聯(lián)的失效率為0.7%。推導(dǎo)出平均訪存時間的公式。利用(1)中得到的公式,對于2KBCache和128KBCache,計算偽相聯(lián)的平均訪存時間。解:不管作了何種改進,失效開銷相同。不管是否交換內(nèi)容,在同一“偽相聯(lián)”組中的兩塊都是用同一個索引得到的,因此失效率相同,即:失效率偽相聯(lián)=失效率2路。偽相聯(lián)cache的命中時間等于直接映象cache的命中時間加上偽相聯(lián)查找過程中的命中時間*該命中所需的額外開銷。命中時間偽相聯(lián)=命中時間1路+偽命中率偽相聯(lián)×1交換或不交換內(nèi)容,偽相聯(lián)的命中率都是由于在第一次失效時,將地址取反,再在第二次查找?guī)淼?。因此偽命中率偽相?lián)=命中率2路-命中率1路=
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度數(shù)據(jù)中心基礎(chǔ)設(shè)施建設(shè)合同范本6篇
- 二零二五版基礎(chǔ)小學(xué)門衛(wèi)崗位職責(zé)與待遇聘用合同3篇
- 商場電梯維修與保養(yǎng)合同(二零二五年)2篇
- 二零二五年度離婚協(xié)議書起草與子女撫養(yǎng)權(quán)執(zhí)行服務(wù)合同范本3篇
- 買賣2024年經(jīng)濟型住宅房屋合同書
- 2025年70米煙囪拆除工程材料采購與質(zhì)量控制合同3篇
- 2025版旅游地產(chǎn)開發(fā)投資合同4篇
- 2025年無錫市二手房買賣合同范本細則解讀3篇
- 年度Β-內(nèi)酰胺類抗菌藥物競爭策略分析報告
- 年度超精過濾設(shè)備競爭策略分析報告
- 綿陽市高中2022級(2025屆)高三第二次診斷性考試(二診)歷史試卷(含答案)
- 廠級安全培訓(xùn)資料
- 中國藥科大學(xué)《藥物化學(xué)》教學(xué)日歷
- 露天礦山課件
- 經(jīng)濟效益證明(模板)
- 銀行卡凍結(jié)怎么寫申請書
- 果樹蔬菜病害:第一章 蔬菜害蟲
- 借條借款合同帶擔(dān)保人
- 人工地震動生成程序
- SSB變槳系統(tǒng)的基礎(chǔ)知識
- 大五人格量表(revised)--計分及解釋
評論
0/150
提交評論