計(jì)算機(jī)體系結(jié)構(gòu)課后習(xí)題原版答案-張晨曦著_第1頁
計(jì)算機(jī)體系結(jié)構(gòu)課后習(xí)題原版答案-張晨曦著_第2頁
計(jì)算機(jī)體系結(jié)構(gòu)課后習(xí)題原版答案-張晨曦著_第3頁
計(jì)算機(jī)體系結(jié)構(gòu)課后習(xí)題原版答案-張晨曦著_第4頁
計(jì)算機(jī)體系結(jié)構(gòu)課后習(xí)題原版答案-張晨曦著_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)體系結(jié)構(gòu)課后習(xí)題原版答案-張晨曦著第1章計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的基本概念1.1解釋下列術(shù)語層次機(jī)構(gòu):按照計(jì)算機(jī)語言從低級(jí)到高級(jí)的次序,把計(jì)算機(jī)系統(tǒng)按功能劃分成多級(jí)層次結(jié)構(gòu),每一層以一種不同的語言為特征。這些層次依次為:微程序機(jī)器級(jí),傳統(tǒng)機(jī)器語言機(jī)器級(jí),匯編語言機(jī)器級(jí),高級(jí)語言機(jī)器級(jí),應(yīng)用語言機(jī)器級(jí)等。虛擬機(jī):用軟件實(shí)現(xiàn)的機(jī)器。翻譯:先用轉(zhuǎn)換程序把高一級(jí)機(jī)器上的程序轉(zhuǎn)換為低一級(jí)機(jī)器上等效的程序,然后再在這低一級(jí)機(jī)器上運(yùn)行,實(shí)現(xiàn)程序的功能。解釋:對(duì)于高一級(jí)機(jī)器上的程序中的每一條語句或指令,都是轉(zhuǎn)去執(zhí)行低一級(jí)機(jī)器上的一段等效程序。執(zhí)行完后,再去高一級(jí)機(jī)器取下一條語句或指令,再進(jìn)行解釋執(zhí)行,如此反復(fù),直到解釋執(zhí)行完整個(gè)程序。隔內(nèi)進(jìn)行多種運(yùn)算或操作。只要在時(shí)間上相互重疊,就存在并行性。它包括同時(shí)性與并發(fā)性兩種含義。時(shí)間重疊:在并行性概念中引入時(shí)間因素,讓多個(gè)處理過程在時(shí)間上相互錯(cuò)開,輪流重疊地使用同一套硬件設(shè)備的各個(gè)部分,以加快硬件周轉(zhuǎn)而贏得速度。資源重復(fù):在并行性概念中引入空間因素,以數(shù)量取勝。通過重復(fù)設(shè)置硬件資源,大幅度地提高計(jì)算機(jī)系統(tǒng)的性能。資源共享:這是一種軟件方法,它使多個(gè)任務(wù)按一定時(shí)間順序輪流使用同一套硬件設(shè)備。耦合度:反映多機(jī)系統(tǒng)中各計(jì)算機(jī)之間物理連接的緊密程度和交互作用能力的強(qiáng)弱。緊密耦合系統(tǒng):又稱直接耦合系統(tǒng)。在這種系統(tǒng)中,計(jì)算機(jī)之間的物理連接的頻帶較高,一般是通過總線或高速開關(guān)互連,可以共享主存。松散耦合系統(tǒng):又稱間接耦合系統(tǒng),一般是通過通道或通信線路實(shí)現(xiàn)計(jì)算機(jī)之間的互連,可以共享外存設(shè)備(磁盤、磁帶等)。計(jì)算機(jī)之間的相互作用是在文件或數(shù)據(jù)集一級(jí)上進(jìn)行。異構(gòu)型多處理機(jī)系統(tǒng):由多個(gè)不同類型、至少擔(dān)負(fù)不同功能的處理機(jī)組成,它們按照作業(yè)要求的順序,利用時(shí)間重疊原理,依次對(duì)它們的多個(gè)任務(wù)進(jìn)行加工,各自完成規(guī)定的功能動(dòng)作。同構(gòu)型多處理機(jī)系統(tǒng):由多個(gè)同類型或至少擔(dān)負(fù)同等功能的處理機(jī)組成,它們同時(shí)處理同一作業(yè)中能并行執(zhí)行的多個(gè)任務(wù)。1.2試用實(shí)例說明計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、計(jì)算機(jī)組成與計(jì)算機(jī)實(shí)現(xiàn)之間的相互關(guān)系。答:如在設(shè)計(jì)主存系統(tǒng)時(shí),確定主存容量、編址方式、尋址范圍等屬于計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。確定主存周期、邏輯上是否采用并行主存、邏輯設(shè)計(jì)等屬于計(jì)算機(jī)組成。選擇存儲(chǔ)芯片類型、微組裝技術(shù)、線路設(shè)計(jì)等屬于計(jì)算機(jī)實(shí)現(xiàn)。計(jì)算機(jī)組成是計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的邏輯實(shí)現(xiàn)。計(jì)算機(jī)實(shí)現(xiàn)是計(jì)算機(jī)組成的物理實(shí)現(xiàn)。一種體系結(jié)構(gòu)可以有多種組成。一種組成可以有多種實(shí)現(xiàn)。1.3計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的Flynn分類法是按什么來分類的?共分為哪幾類?答:Flynn分類法是按照指令流和數(shù)據(jù)流的多倍性進(jìn)行分類。把計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)分為:單指令流單數(shù)據(jù)流SISD單指令流多數(shù)據(jù)流SIMD多指令流單數(shù)據(jù)流MISD多指令流多數(shù)據(jù)流MIMD1.4計(jì)算機(jī)系統(tǒng)設(shè)計(jì)中經(jīng)常使用的4個(gè)定量原理是什么?并說出它們的含義。答:(1)以經(jīng)常性事件為重點(diǎn)。在計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)中,對(duì)經(jīng)常發(fā)生的情況,賦予它優(yōu)先的處理權(quán)和資源使用權(quán),以得到更多的總體上的改進(jìn)。(2)Amdahl定律。加快某部件執(zhí)行速度所獲得的系統(tǒng)性能加速比,受限于該部件在系統(tǒng)中所占的重要性。(3)CPU性能公式。執(zhí)行一個(gè)程序所需的CPU時(shí)間=IC×CPI×?xí)r鐘周期時(shí)間。(4)程序的局部性原理。程序在執(zhí)行時(shí)所訪問地址的分布不是隨機(jī)的,而是相對(duì)地簇聚。1.5分別從執(zhí)行程序的角度和處理數(shù)據(jù)的角度來看,計(jì)算機(jī)系統(tǒng)中并行性等級(jí)從低到高可分為哪幾級(jí)?答:從處理數(shù)據(jù)的角度來看,并行性等級(jí)從低到高可分為:(1)字串位串:每次只對(duì)一個(gè)字的一位進(jìn)行處理。這是最基本的串行處理方式,不存在并行性;(2)字串位并:同時(shí)對(duì)一個(gè)字的全部位進(jìn)行處理,不同字之間是串行的。已開始出現(xiàn)并行性;(3)字并位串:同時(shí)對(duì)許多字的同一位(稱為位片)進(jìn)行處理。這種方式具有較高的并行性;(4)全并行:同時(shí)對(duì)許多字的全部位或部分位進(jìn)行處理。這是最高一級(jí)的并行。從執(zhí)行程序的角度來看,并行性等級(jí)從低到高可分為:(1)指令內(nèi)部并行:單條指令中各微操作之間的并行;(2)指令級(jí)并行:并行執(zhí)行兩條或兩條以上的指令;(3)線程級(jí)并行:并行執(zhí)行兩個(gè)或兩個(gè)以上的線程,通常是以一個(gè)進(jìn)程內(nèi)派生的多個(gè)線程為調(diào)度單位;(4)任務(wù)級(jí)或過程級(jí)并行:并行執(zhí)行兩個(gè)或兩個(gè)以上的過程或任務(wù)(程序段),以子程序或進(jìn)程為調(diào)度單元;(5)作業(yè)或程序級(jí)并行:并行執(zhí)行兩個(gè)或兩個(gè)以上的作業(yè)或程序。1.6某臺(tái)主頻為400MHz的計(jì)算機(jī)執(zhí)行標(biāo)準(zhǔn)測試程序,程序中指令類型、執(zhí)行數(shù)量和平均時(shí)鐘周期數(shù)如下:指令類型指令執(zhí)行數(shù)量平均時(shí)鐘周期數(shù)整數(shù)450001數(shù)據(jù)傳送750002浮點(diǎn)80004分支15002求該計(jì)算機(jī)的有效CPI、MIPS和程序執(zhí)行時(shí)間。解:(1)CPI=(45000×1+75000×2+8000×4+1500×2)/129500=1.776(2)MIPS速率=f/CPI=400/1.776=225.225MIPS(3)程序執(zhí)行時(shí)間=(45000×1+75000×2+8000×4+1500×2)/400=575s1.7將計(jì)算機(jī)系統(tǒng)中某一功能的處理速度加快10倍,但該功能的處理時(shí)間僅為整個(gè)系統(tǒng)運(yùn)行時(shí)間的40%,則采用此增強(qiáng)功能方法后,能使整個(gè)系統(tǒng)的性能提高多少?解由題可知:可改進(jìn)比例=40%=0.4部件加速比=10根據(jù)Amdahl定律可知:采用此增強(qiáng)功能方法后,能使整個(gè)系統(tǒng)的性能提高到原來的1.5625倍。1.8計(jì)算機(jī)系統(tǒng)中有三個(gè)部件可以改進(jìn),這三個(gè)部件的部件加速比為:部件加速比1=30;部件加速比2=20;部件加速比3=10如果部件1和部件2的可改進(jìn)比例均為30%,那么當(dāng)部件3的可改進(jìn)比例為多少時(shí),系統(tǒng)加速比才可以達(dá)到10?如果三個(gè)部件的可改進(jìn)比例分別為30%、30%和20%,三個(gè)部件同時(shí)改進(jìn),那么系統(tǒng)中不可加速部分的執(zhí)行時(shí)間在總執(zhí)行時(shí)間中占的比例是多少?解:(1)在多個(gè)部件可改進(jìn)情況下,Amdahl定理的擴(kuò)展:已知S1=30,S2=20,S3=10,Sn=10,F(xiàn)1=0.3,F(xiàn)2=0.3,得:得F3=0.36,即部件3的可改進(jìn)比例為36%。(2)設(shè)系統(tǒng)改進(jìn)前的執(zhí)行時(shí)間為T,則3個(gè)部件改進(jìn)前的執(zhí)行時(shí)間為:(0.3+0.3+0.2)T=0.8T,不可改進(jìn)部分的執(zhí)行時(shí)間為0.2T。已知3個(gè)部件改進(jìn)后的加速比分別為S1=30,S2=20,S3=10,因此3個(gè)部件改進(jìn)后的執(zhí)行時(shí)間為:改進(jìn)后整個(gè)系統(tǒng)的執(zhí)行時(shí)間為:Tn=0.045T+0.2T=0.245T那么系統(tǒng)中不可改進(jìn)部分的執(zhí)行時(shí)間在總執(zhí)行時(shí)間中占的比例是:1.9假設(shè)某應(yīng)用程序中有4類操作,通過改進(jìn),各操作獲得不同的性能提高。具體數(shù)據(jù)如下表所示:操作類型程序中的數(shù)量(百萬條指令)改進(jìn)前的執(zhí)行時(shí)間(周期)改進(jìn)后的執(zhí)行時(shí)間(周期)操作11021操作2302015操作335103操作41541(1)改進(jìn)后,各類操作的加速比分別是多少?(2)各類操作單獨(dú)改進(jìn)后,程序獲得的加速比分別是多少?(3)4類操作均改進(jìn)后,整個(gè)程序的加速比是多少?解:根據(jù)Amdahl定律可得操作類型各類操作的指令條數(shù)在程序中所占的比例Fi各類操作的加速比Si各類操作單獨(dú)改進(jìn)后,程序獲得的加速比操作111.1%21.06操作233.3%1.331.09操作338.9%3.331.37操作416.7%41.144類操作均改進(jìn)后,整個(gè)程序的加速比:第2章指令集結(jié)構(gòu)的分類解釋下列術(shù)語堆棧型機(jī)器:CPU中存儲(chǔ)操作數(shù)的單元是堆棧的機(jī)器。累加器型機(jī)器:CPU中存儲(chǔ)操作數(shù)的單元是累加器的機(jī)器。通用寄存器型機(jī)器:CPU中存儲(chǔ)操作數(shù)的單元是通用寄存器的機(jī)器。CISC:復(fù)雜指令集計(jì)算機(jī)RISC:精簡指令集計(jì)算機(jī)尋址方式:指令系統(tǒng)中如何形成所要訪問的數(shù)據(jù)的地址。一般來說,尋址方式可以指明指令中的操作數(shù)是一個(gè)常數(shù)、一個(gè)寄存器操作數(shù)或者是一個(gè)存儲(chǔ)器操作數(shù)。數(shù)據(jù)表示:硬件結(jié)構(gòu)能夠識(shí)別、指令系統(tǒng)可以直接調(diào)用的那些數(shù)據(jù)結(jié)構(gòu)。 區(qū)別不同指令集結(jié)構(gòu)的主要因素是什么?根據(jù)這個(gè)主要因素可將指令集結(jié)構(gòu)分為哪3類?答:區(qū)別不同指令集結(jié)構(gòu)的主要因素是CPU中用來存儲(chǔ)操作數(shù)的存儲(chǔ)單元。據(jù)此可將指令系統(tǒng)結(jié)構(gòu)分為堆棧結(jié)構(gòu)、累加器結(jié)構(gòu)和通用寄存器結(jié)構(gòu)。常見的3種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點(diǎn)有哪些?答:指令系統(tǒng)結(jié)構(gòu)類型優(yōu)點(diǎn)缺點(diǎn)寄存器-寄存器型(0,3)指令字長固定,指令結(jié)構(gòu)簡潔,是一種簡單的代碼生成模型,各種指令的執(zhí)行時(shí)鐘周期數(shù)相近。與指令中含存儲(chǔ)器操作數(shù)的指令系統(tǒng)結(jié)構(gòu)相比,指令條數(shù)多,目標(biāo)代碼不夠緊湊,因而程序占用的空間比較大。寄存器-存儲(chǔ)器型(1,2)可以在ALU指令中直接對(duì)存儲(chǔ)器操作數(shù)進(jìn)行引用,而不必先用load指令進(jìn)行加載。容易對(duì)指令進(jìn)行編碼,目標(biāo)代碼比較緊湊。由于有一個(gè)操作數(shù)的內(nèi)容將被破壞,所以指令中的兩個(gè)操作數(shù)不對(duì)稱。在一條指令中同時(shí)對(duì)寄存器操作數(shù)和存儲(chǔ)器操作數(shù)進(jìn)行編碼,有可能限制指令所能夠表示的寄存器個(gè)數(shù)。指令的執(zhí)行時(shí)鐘周期數(shù)因操作數(shù)的來源(寄存器或存儲(chǔ)器)不同而差別比較大。存儲(chǔ)器-存儲(chǔ)器型(2,2)或(3,3)目標(biāo)代碼最緊湊,不需要設(shè)置寄存器來保存變量。指令字長變化很大,特別是3操作數(shù)指令。而且每條指令完成的工作也差別很大。對(duì)存儲(chǔ)器的頻繁訪問會(huì)使存儲(chǔ)器成為瓶頸。這種類型的指令系統(tǒng)現(xiàn)在已不用了。指令集應(yīng)滿足哪幾個(gè)基本要求?答:對(duì)指令集的基本要求是:完整性、規(guī)整性、高效率和兼容性。完整性是指在一個(gè)有限可用的存儲(chǔ)空間內(nèi),對(duì)于任何可解的問題,編制計(jì)算程序時(shí),指令集所提供的指令足夠使用。規(guī)整性主要包括對(duì)稱性和均勻性。對(duì)稱性是指所有與指令集有關(guān)的存儲(chǔ)單元的使用、操作碼的設(shè)置等都是對(duì)稱的。均勻性是指對(duì)于各種不同的操作數(shù)類型、字長、操作種類和數(shù)據(jù)存儲(chǔ)單元,指令的設(shè)置都要同等對(duì)待。高效率是指指令的執(zhí)行速度快、使用頻度高。指令集結(jié)構(gòu)設(shè)計(jì)所涉及的內(nèi)容有哪些?答:(1)指令集功能設(shè)計(jì):主要有RISC和CISC兩種技術(shù)發(fā)展方向;(2)尋址方式的設(shè)計(jì):設(shè)置尋址方式可以通過對(duì)基準(zhǔn)程序進(jìn)行測試統(tǒng)計(jì),察看各種尋址方式的使用頻率,根據(jù)適用頻率設(shè)置必要的尋址方式。(3)操作數(shù)表示和操作數(shù)類型:主要的操作數(shù)類型和操作數(shù)表示的選擇有:浮點(diǎn)數(shù)據(jù)類型、整型數(shù)據(jù)類型、字符型、十進(jìn)制數(shù)據(jù)類型等等。(4)尋址方式的表示:可以將尋址方式編碼于操作碼中,也可以將尋址方式作為一個(gè)單獨(dú)的域來表示。(5)指令集格式的設(shè)計(jì):有變長編碼格式、固定長度編碼格式和混合型編碼格式3種。簡述CISC指令集結(jié)構(gòu)功能設(shè)計(jì)的主要目標(biāo)。從當(dāng)前的計(jì)算機(jī)技術(shù)觀點(diǎn)來看,CISC指令集結(jié)構(gòu)的計(jì)算機(jī)有什么缺點(diǎn)?答:主要目標(biāo)是增強(qiáng)指令功能,把越來越多的功能交由硬件來實(shí)現(xiàn),并且指令的數(shù)量也是越來越多。缺點(diǎn):(1)CISC結(jié)構(gòu)的指令集中,各種指令的使用頻率相差懸殊。(2)CISC結(jié)構(gòu)指令的復(fù)雜性帶來了計(jì)算機(jī)體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時(shí)間和成本,而且還容易造成設(shè)計(jì)錯(cuò)誤。(3)CISC結(jié)構(gòu)指令集的復(fù)雜性給VLSI設(shè)計(jì)增加了很大負(fù)擔(dān),不利于單片集成。(4)CISC結(jié)構(gòu)的指令集中,許多復(fù)雜指令需要很復(fù)雜的操作,因而運(yùn)行速度慢。(5)在CISC結(jié)構(gòu)的指令集中,由于各條指令的功能不均衡性,不利于采用先進(jìn)的計(jì)算機(jī)體系結(jié)構(gòu)技術(shù)(如流水技術(shù))來提高系統(tǒng)的性能。簡述RISC指令集結(jié)構(gòu)的設(shè)計(jì)原則。答(1)選取使用頻率最高的指令,并補(bǔ)充一些最有用的指令;(2)每條指令的功能應(yīng)盡可能簡單,并在一個(gè)機(jī)器周期內(nèi)完成;(3)所有指令長度均相同;(4)只有Load和Store操作指令才訪問存儲(chǔ)器,其它指令操作均在寄存器之間進(jìn)行;(5)以簡單有效的方式支持高級(jí)語言。指令中表示操作數(shù)類型的方法有哪幾種?答:操作數(shù)類型有兩種表示方法:(1)操作數(shù)的類型由操作碼的編碼指定,這是最常見的一種方法;(2)數(shù)據(jù)可以附上由硬件解釋的標(biāo)記,由這些標(biāo)記指定操作數(shù)的類型,從而選擇適當(dāng)?shù)倪\(yùn)算。表示尋址方式的主要方法有哪些?簡述這些方法的優(yōu)缺點(diǎn)。答:表示尋址方式有兩種常用的方法:(1)將尋址方式編于操作碼中,由操作碼在描述指令的同時(shí)也描述了相應(yīng)的尋址方式。這種方式譯碼快,但操作碼和尋址方式的結(jié)合不僅增加了指令的條數(shù),導(dǎo)致了指令的多樣性,而且增加了CPU對(duì)指令譯碼的難度。(2)為每個(gè)操作數(shù)設(shè)置一個(gè)地址描述符,由該地址描述符表示相應(yīng)操作數(shù)的尋址方式。這種方式譯碼較慢,但操作碼和尋址獨(dú)立,易于指令擴(kuò)展。通常有哪幾種指令格式,請(qǐng)簡述其適用范圍。答:(1)變長編碼格式。如果系統(tǒng)結(jié)構(gòu)設(shè)計(jì)者感興趣的是程序的目標(biāo)代碼大小,而不是性能,就可以采用變長編碼格式。(2)固定長度編碼格式。如果感興趣的是性能,而不是程序的目標(biāo)代碼大小,則可以選擇固定長度編碼格式。(3)混合型編碼格式。需要兼顧降低目標(biāo)代碼長度和降低譯碼復(fù)雜度時(shí),可以采用混合型編碼格式。根據(jù)CPU性能公式簡述RISC指令集結(jié)構(gòu)計(jì)算機(jī)和CISC指令集結(jié)構(gòu)計(jì)算機(jī)的性能特點(diǎn)。答:CPU性能公式:CPU時(shí)間=IC×CPI×T其中,IC為目標(biāo)程序被執(zhí)行的指令條數(shù),CPI為指令平均執(zhí)行周期數(shù),T是時(shí)鐘周期的時(shí)間。相同功能的CISC目標(biāo)程序的指令條數(shù)ICCISC少于RISC的ICRISC,但是CISC的CPICISC和TCISC都大于RISC的CPIRISC和TRISC,因此,CISC目標(biāo)程序的執(zhí)行時(shí)間比RISC的更長。第3章流水線技術(shù)3.1解釋下列術(shù)語流水線:將一個(gè)重復(fù)的時(shí)序過程,分解成為若干個(gè)子過程,而每一個(gè)子過程都可有效地在其專用功能段上與其它子過程同時(shí)執(zhí)行。單功能流水線:指流水線的各段之間的連接固定不變、只能完成一種固定功能的流水線。多功能流水線:指各段可以進(jìn)行不同的連接,以實(shí)現(xiàn)不同的功能的流水線。靜態(tài)流水線:指在同一時(shí)間內(nèi),多功能流水線中的各段只能按同一種功能的連接方式工作的流水線。當(dāng)流水線要切換到另一種功能時(shí),必須等前面的任務(wù)都流出流水線之后,才能改變連接。動(dòng)態(tài)流水線:指在同一時(shí)間內(nèi),多功能流水線中的各段可以按照不同的方式連接,同時(shí)執(zhí)行多種功能的流水線。它允許在某些段正在實(shí)現(xiàn)某種運(yùn)算時(shí),另一些段卻在實(shí)現(xiàn)另一種運(yùn)算。部件級(jí)流水線:把處理機(jī)中的部件進(jìn)行分段,再把這些部件分段相互連接而成。它使得運(yùn)算操作能夠按流水方式進(jìn)行。這種流水線也稱為運(yùn)算操作流水線。處理機(jī)級(jí)流水線:又稱指令流水線。它是把指令的執(zhí)行過程按照流水方式進(jìn)行處理,即把一條指令的執(zhí)行過程分解為若干個(gè)子過程,每個(gè)子過程在獨(dú)立的功能部件中執(zhí)行。處理機(jī)間流水線:又稱為宏流水線。它是把多個(gè)處理機(jī)串行連接起來,對(duì)同一數(shù)據(jù)流進(jìn)行處理,每個(gè)處理機(jī)完成整個(gè)任務(wù)中的一部分。前一個(gè)處理機(jī)的輸出結(jié)果存入存儲(chǔ)器中,作為后一個(gè)處理機(jī)的輸入。線性流水線:指各段串行連接、沒有反饋回路的流水線。數(shù)據(jù)通過流水線中的各段時(shí),每一個(gè)段最多只流過一次。非線性流水線:指各段除了有串行的連接外,還有反饋回路的流水線。順序流水線:流水線輸出端任務(wù)流出的順序與輸入端任務(wù)流入的順序完全相同。亂序流水線:流水線輸出端任務(wù)流出的順序與輸入端任務(wù)流入的順序可以不同,允許后進(jìn)入流水線的任務(wù)先完成。這種流水線又稱為無序流水線、錯(cuò)序流水線、異步流水線。吞吐率:在單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)量或輸出結(jié)果的數(shù)量。流水線的加速比:使用順序處理方式處理一批任務(wù)所用的時(shí)間與按流水處理方式處理同一批任務(wù)所用的時(shí)間之比。流水線的效率:即流水線設(shè)備的利用率,它是指流水線中的設(shè)備實(shí)際使用時(shí)間與整個(gè)運(yùn)行時(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ù)流動(dòng),則稱這兩條指令存在名相關(guān)。控制相關(guān):是指由分支指令引起的相關(guān)。它需要根據(jù)分支指令的執(zhí)行結(jié)果來確定后面該執(zhí)行哪個(gè)分支上的指令。反相關(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í)行時(shí),因需要用到前面指令的執(zhí)行結(jié)果而發(fā)生的沖突??刂茮_突:流水線遇到分支指令或其它會(huì)改變PC值的指令所引起的沖突。定向:用來解決寫后讀沖突的。在發(fā)生寫后讀相關(guān)的情況下,在計(jì)算結(jié)果尚未出來之前,后面等待使用該結(jié)果的指令并不見得是馬上就要用該結(jié)果。如果能夠?qū)⒃撚?jì)算結(jié)果從其產(chǎn)生的地方直接送到其它指令需要它的地方,那么就可以避免停頓。寫后讀沖突:考慮兩條指令i和j,且i在j之前進(jìn)入流水線,指令j用到指令i的計(jì)算結(jié)果,而且在i將結(jié)果寫入寄存器之前就去讀該寄存器,因而得到的是舊值。讀后寫沖突:考慮兩條指令i和j,且i在j之前進(jìn)入流水線,指令j的目的寄存器和指令i的源操作數(shù)寄存器相同,而且j在i讀取該寄存器之前就先對(duì)它進(jìn)行了寫操作,導(dǎo)致i讀到的值是錯(cuò)誤的。寫后寫沖突:考慮兩條指令i和j,且i在j之前進(jìn)入流水線,,指令j和指令i的結(jié)果單元(寄存器或存儲(chǔ)器單元)相同,而且j在i寫入之前就先對(duì)該單元進(jìn)行了寫入操作,從而導(dǎo)致寫入順序錯(cuò)誤。這時(shí)在結(jié)果單元中留下的是i寫入的值,而不是j寫入的。鏈接技術(shù):具有先寫后讀相關(guān)的兩條指令,在不出現(xiàn)功能部件沖突和Vi沖突的情況下,可以把功能部件鏈接起來進(jìn)行流水處理,以達(dá)到加快執(zhí)行的目的。分段開采:當(dāng)向量的長度大于向量寄存器的長度時(shí),必須把長向量分成長度固定的段,然后循環(huán)分段處理,每一次循環(huán)只處理一個(gè)向量段。半性能向量長度:向量處理機(jī)的性能為其最大性能的一半時(shí)所需的向量長度。向量長度臨界值:向量流水方式的處理速度優(yōu)于標(biāo)量串行方式的處理速度時(shí)所需的向量長度的最小值。3.2指令的執(zhí)行可采用順序執(zhí)行、重疊執(zhí)行和流水線三種方式,它們的主要區(qū)別是什么?各有何優(yōu)缺點(diǎn)。答:(1)指令的順序執(zhí)行是指指令與指令之間順序串行。即上一條指令全部執(zhí)行完后,才能開始執(zhí)行下一條指令。優(yōu)點(diǎn):控制簡單,節(jié)省設(shè)備。缺點(diǎn):執(zhí)行指令的速度慢,功能部件的利用率低。(2)指令的重疊指令是在相鄰的指令之間,讓第k條指令與取第k+l條指令同時(shí)進(jìn)行。重疊執(zhí)行不能加快單條指令的執(zhí)行速度,但在硬件增加不多的情況下,可以加快相鄰兩條指令以及整段程序的執(zhí)行速度。與順序方式相比,功能部件的利用率提高了,控制變復(fù)雜了。(3)指令的流水執(zhí)行是把一個(gè)指令的執(zhí)行過程分解為若干個(gè)子過程,每個(gè)子過程由專門的功能部件來實(shí)現(xiàn)。把多個(gè)處理過程在時(shí)間上錯(cuò)開,依次通過各功能段,每個(gè)子過程與其它的子過程并行進(jìn)行。依靠提高吞吐率來提高系統(tǒng)性能。流水線中各段的時(shí)間應(yīng)盡可能相等3.3簡述先行控制的基本思想。答:先行控制技術(shù)是把緩沖技術(shù)和預(yù)處理技術(shù)相結(jié)合。緩沖技術(shù)是在工作速度不固定的兩個(gè)功能部件之間設(shè)置緩沖器,用以平滑它們的工作。預(yù)處理技術(shù)是指預(yù)取指令、對(duì)指令進(jìn)行加工以及預(yù)取操作數(shù)等。采用先行控制方式的處理機(jī)內(nèi)部設(shè)置多個(gè)緩沖站,用于平滑主存、指令分析部件、運(yùn)算器三者之間的工作。這樣不僅使它們都能獨(dú)立地工作,充分忙碌而不用相互等待,而且使指令分析部件和運(yùn)算器分別能快速地取得指令和操作數(shù),大幅度地提高指令的執(zhí)行速度和部件的效率。這些緩沖站都按先進(jìn)先出的方式工作,而且都是由一組若干個(gè)能快速訪問的存儲(chǔ)單元和相關(guān)的控制邏輯組成。采用先行控制技術(shù)可以實(shí)現(xiàn)多條指令的重疊解釋執(zhí)行。3.4設(shè)一條指令的執(zhí)行過程分成取指令、分析指令和執(zhí)行指令三個(gè)階段,每個(gè)階段所需的時(shí)間分別為△t、△t和2△t。分別求出下列各種情況下,連續(xù)執(zhí)行N條指令所需的時(shí)間。(1)順序執(zhí)行方式;(2)只有“取指令”與“執(zhí)行指令”重疊;(3)“取指令”、“分析指令”與“執(zhí)行指令”重疊。解:(1)每條指令的執(zhí)行時(shí)間為:△t+△t+2△t=4△t連續(xù)執(zhí)行N條指令所需的時(shí)間為:4N△t(2)連續(xù)執(zhí)行N條指令所需的時(shí)間為:4△t+3(N-1)△t=(3N+1)△t(3)連續(xù)執(zhí)行N條指令所需的時(shí)間為:4△t+2(N-1)△t=(2N+2)△t3.5簡述流水線技術(shù)的特點(diǎn)。答:流水技術(shù)有以下特點(diǎn):(1)流水線把一個(gè)處理過程分解為若干個(gè)子過程,每個(gè)子過程由一個(gè)專門的功能部件來實(shí)現(xiàn)。因此,流水線實(shí)際上是把一個(gè)大的處理功能部件分解為多個(gè)獨(dú)立的功能部件,并依靠它們的并行工作來提高吞吐率。(2)流水線中各段的時(shí)間應(yīng)盡可能相等,否則將引起流水線堵塞和斷流。(3)流水線每一個(gè)功能部件的前面都要有一個(gè)緩沖寄存器,稱為流水寄存器。(4)流水技術(shù)適合于大量重復(fù)的時(shí)序過程,只有在輸入端不斷地提供任務(wù),才能充分發(fā)揮流水線的效率。(5)流水線需要有通過時(shí)間和排空時(shí)間。在這兩個(gè)時(shí)間段中,流水線都不是滿負(fù)荷工作。3.6解決流水線瓶頸問題有哪兩種常用方法?答:細(xì)分瓶頸段與重復(fù)設(shè)置瓶頸段3.7減少流水線分支延遲的靜態(tài)方法有哪些?答:(1)預(yù)測分支失敗:沿失敗的分支繼續(xù)處理指令,就好象什么都沒發(fā)生似的。當(dāng)確定分支是失敗時(shí),說明預(yù)測正確,流水線正常流動(dòng);當(dāng)確定分支是成功時(shí),流水線就把在分支指令之后取出的指令轉(zhuǎn)化為空操作,并按分支目標(biāo)地址重新取指令執(zhí)行。(2)預(yù)測分支成功:當(dāng)流水線ID段檢測到分支指令后,一旦計(jì)算出了分支目標(biāo)地址,就開始從該目標(biāo)地址取指令執(zhí)行。(3)延遲分支:主要思想是從邏輯上“延長”分支指令的執(zhí)行時(shí)間。把延遲分支看成是由原來的分支指令和若干個(gè)延遲槽構(gòu)成。不管分支是否成功,都要按順序執(zhí)行延遲槽中的指令。3種方法的共同特點(diǎn):它們對(duì)分支的處理方法在程序的執(zhí)行過程中始終是不變的。它們要么總是預(yù)測分支成功,要么總是預(yù)測分支失敗。3.8簡述延遲分支方法中的三種調(diào)度策略的優(yōu)缺點(diǎn)。調(diào)度策略對(duì)調(diào)度的要求對(duì)流水線性能改善的影響從前調(diào)度分支必須不依賴于被調(diào)度的指令總是可以有效提高流水線性能從目標(biāo)處調(diào)度如果分支轉(zhuǎn)移失敗,必須保證被調(diào)度的指令對(duì)程序的執(zhí)行沒有影響,可能需要復(fù)制被調(diào)度指令分支轉(zhuǎn)移成功時(shí),可以提高流水線性能。但由于復(fù)制指令,可能加大程序空間從失敗處調(diào)度如果分支轉(zhuǎn)移成功,必須保證被調(diào)度的指令對(duì)程序的執(zhí)行沒有影響分支轉(zhuǎn)移失敗時(shí),可以提高流水線性能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簡述三種向量處理方式,它們對(duì)向量處理機(jī)的結(jié)構(gòu)要求有何不同?答(1)橫向處理方式:若向量長度為N,則水平處理方式相當(dāng)于執(zhí)行N次循環(huán)。若使用流水線,在每次循環(huán)中可能出現(xiàn)數(shù)據(jù)相關(guān)和功能轉(zhuǎn)換,不適合對(duì)向量進(jìn)行流水處理。(2)縱向處理方式:將整個(gè)向量按相同的運(yùn)算處理完畢之后,再去執(zhí)行其他運(yùn)算。適合對(duì)向量進(jìn)行流水處理,向量運(yùn)算指令的源/目向量都放在存儲(chǔ)器內(nèi),使得流水線運(yùn)算部件的輸入、輸出端直接與存儲(chǔ)器相聯(lián),構(gòu)成M-M型的運(yùn)算流水線。(3)縱橫處理方式:把長度為N的向量分為若干組,每組長度為n,組內(nèi)按縱向方式處理,依次處理各組,組數(shù)為「N/n」,適合流水處理??稍O(shè)長度為n的向量寄存器,使每組向量運(yùn)算的源/目向量都在向量寄存器中,流水線的運(yùn)算部件輸入、輸出端與向量寄存器相聯(lián),構(gòu)成R-R型運(yùn)算流水線。3.11可采用哪些方法來提高向量處理機(jī)的性能?答:可采用多種方法:設(shè)置多個(gè)功能部件,使它們并行工作;采用鏈接技術(shù),加快一串向量指令的執(zhí)行;采用循環(huán)開采技術(shù),加快循環(huán)的處理;采用多處理機(jī)系統(tǒng),進(jìn)一步提高性能。3.12有一指令流水線如下所示求連續(xù)輸入10條指令,該流水線的實(shí)際吞吐率和效率;該流水線的“瓶頸”在哪一段?請(qǐng)采取兩種不同的措施消除此“瓶頸”。對(duì)于你所給出的兩種新的流水線,連續(xù)輸入10條指令時(shí),其實(shí)際吞吐率和效率各是多少?解:(1)(2)瓶頸在3、4段。變成八級(jí)流水線(細(xì)分)重復(fù)設(shè)置部件1123-13-24-14-24-34-43.13有一個(gè)流水線由4段組成,其中每當(dāng)流經(jīng)第3段時(shí),總要在該段循環(huán)一次,然后才能流到第4段。如果每段經(jīng)過一次所需要的時(shí)間都是,問:當(dāng)在流水線的輸入端連續(xù)地每時(shí)間輸入任務(wù)時(shí),該流水線會(huì)發(fā)生什么情況?此流水線的最大吞吐率為多少?如果每輸入一個(gè)任務(wù),連續(xù)處理10個(gè)任務(wù)時(shí)的實(shí)際吞吐率和效率是多少?當(dāng)每段時(shí)間不變時(shí),如何提高該流水線的吞吐率?仍連續(xù)處理10個(gè)任務(wù)時(shí),其吞吐率提高多少?解:(1)會(huì)發(fā)生流水線阻塞情況。第1個(gè)任務(wù)S1S2S3S3S4第2個(gè)任務(wù)S1S2stallS3S3S4第3個(gè)任務(wù)S1stallS2stallS3S3S4第4個(gè)任務(wù)S1stallS2stallS3S3S4(2)(3)重復(fù)設(shè)置部件吞吐率提高倍數(shù)==1.643.14有一條靜態(tài)多功能流水線由5段組成,加法用1、3、4、5段,乘法用1、2、5段,第3段的時(shí)間為2△t,其余各段的時(shí)間均為△t,而且流水線的輸出可以直接返回輸入端或暫存于相應(yīng)的流水寄存器中?,F(xiàn)要在該流水線上計(jì)算,畫出其時(shí)空?qǐng)D,并計(jì)算其吞吐率、加速比和效率。解:首先,應(yīng)選擇適合于流水線工作的算法。對(duì)于本題,應(yīng)先計(jì)算A1+B1、A2+B2、A3+B3和A4+B4;再計(jì)算(A1+B1)×(A2+B2)和(A3+B3)×(A4+B4);然后求總的結(jié)果。其次,畫出完成該計(jì)算的時(shí)空?qǐng)D,如圖所示,圖中陰影部分表示該段在工作。由圖可見,它在18個(gè)△t時(shí)間中,給出了7個(gè)結(jié)果。所以吞吐率為: 如果不用流水線,由于一次求積需3△t,一次求和需5△t,則產(chǎn)生上述7個(gè)結(jié)果共需(4×5+3×3)△t=29△t。所以加速比為: 該流水線的效率可由陰影區(qū)的面積和5個(gè)段總時(shí)空區(qū)的面積的比值求得: 3.15動(dòng)態(tài)多功能流水線由6個(gè)功能段組成,如下圖:其中,S1、S4、S5、S6組成乘法流水線,S1、S2、S3、S6組成加法流水線,各個(gè)功能段時(shí)間均為50ns,假設(shè)該流水線的輸出結(jié)果可以直接返回輸入端,而且設(shè)置有足夠的緩沖寄存器,若以最快的方式用該流水計(jì)算:畫出時(shí)空?qǐng)D;計(jì)算實(shí)際的吞吐率、加速比和效率。解:機(jī)器一共要做10次乘法,4次加法。3.16在MIPS流水線上運(yùn)行如下代碼序列:LOOP:LW R1,0(R2)DADDIU R1,R1,#1SW R1,0(R2)DADDIU R2,R2,#4DSUBR4,R3,R2BNEZR4,LOOP其中:R3的初值是R2+396。假設(shè):在整個(gè)代碼序列的運(yùn)行過程中,所有的存儲(chǔ)器訪問都是命中的,并且在一個(gè)時(shí)鐘周期中對(duì)同一個(gè)寄存器的讀操作和寫操作可以通過寄存器文件“定向”。問:在沒有任何其它定向(或旁路)硬件的支持下,請(qǐng)畫出該指令序列執(zhí)行的流水線時(shí)空?qǐng)D。假設(shè)采用排空流水線的策略處理分支指令,且所有的存儲(chǔ)器訪問都命中Cache,那么執(zhí)行上述循環(huán)需要多少個(gè)時(shí)鐘周期?假設(shè)該流水線有正常的定向路徑,請(qǐng)畫出該指令序列執(zhí)行的流水線時(shí)空?qǐng)D。假設(shè)采用預(yù)測分支失敗的策略處理分支指令,且所有的存儲(chǔ)器訪問都命中Cache,那么執(zhí)行上述循環(huán)需要多少個(gè)時(shí)鐘周期?假設(shè)該流水線有正常的定向路徑和一個(gè)單周期延遲分支,請(qǐng)對(duì)該循環(huán)中的指令進(jìn)行調(diào)度,你可以重新組織指令的順序,也可以修改指令的操作數(shù),但是注意不能增加指令的條數(shù)。請(qǐng)畫出該指令序列執(zhí)行的流水線時(shí)空?qǐng)D,并計(jì)算執(zhí)行上述循環(huán)所需要的時(shí)鐘周期數(shù)。解:寄存器讀寫可以定向,無其他旁路硬件支持。排空流水線。第i次迭代(i=0..98)開始周期:1+(i×17)總的時(shí)鐘周期數(shù):(98×17)+18=1684有正常定向路徑,預(yù)測分支失敗。第i次迭代(i=0..98)開始周期:1+(i×10)總的時(shí)鐘周期數(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í)鐘周期數(shù):(98×6)+10=5983.17假設(shè)各種分支指令數(shù)占所有指令數(shù)的百分比如下:條件分支20%(其中的60%是分支成功的)跳轉(zhuǎn)和調(diào)用5%現(xiàn)有一條段數(shù)為4的流水線,無條件分支在第二個(gè)時(shí)鐘周期結(jié)束時(shí)就被解析出來,而條件分支要到第三個(gè)時(shí)鐘周期結(jié)束時(shí)才能夠被解析出來。第一個(gè)流水段是完全獨(dú)立于指令類型的,即所有類型的指令都必須經(jīng)過第一個(gè)流水段的處理。請(qǐng)問在沒有任何控制相關(guān)的情況下,該流水線相對(duì)于存在上述控制相關(guān)情況下的加速比是多少?解:沒有控制相關(guān)時(shí)流水線的平均CPI=1存在控制相關(guān)時(shí):由于無條件分支在第二個(gè)時(shí)鐘周期結(jié)束時(shí)就被解析出來,而條件分支要到第3個(gè)時(shí)鐘周期結(jié)束時(shí)才能被解析出來。所以:(1)若使用排空流水線的策略,則對(duì)于條件分支,有兩個(gè)額外的stall,對(duì)無條件分支,有一個(gè)額外的stall:CPI=1+20%*2+5%*1=1.45加速比S=CPI/1=1.45(2)若使用預(yù)測分支成功策略,則對(duì)于不成功的條件分支,有兩個(gè)額外的stall,對(duì)無條件分支和成功的條件分支,有一個(gè)額外的stall1:CPI=1+20%*(60%*1+40%*2)+5%*1=1.33加速比S=CPI/1=1.33(3)若使用預(yù)測分支失敗策略,則對(duì)于成功的條件分支,有兩個(gè)額外的stall;對(duì)無條件分支,有一個(gè)額外的stall;對(duì)不成功的條件分支,其目標(biāo)地址已經(jīng)由PC值給出,不必等待,所以無延遲:CPI=1+20%*(60%*2+40%*0)+5%*1=1.29加速比S=CPI/1=1.293.18在CRAY-1機(jī)器上,按照鏈接方式執(zhí)行下述4條向量指令(括號(hào)中給出了相應(yīng)功能部件的執(zhí)行時(shí)間),如果向量寄存器和功能部件之間的數(shù)據(jù)傳送需要1拍,試求此鏈接流水線的通過時(shí)間是多少拍?如果向量長度為64,則需多少拍才能得到全部結(jié)果?V0←存儲(chǔ)器(從存儲(chǔ)器中取數(shù):7拍)V2←V0+V1(向量加:3拍)V3←V2<A3(按(A3)左移:4拍)V5←V3∧V4(向量邏輯乘:2拍)解:通過時(shí)間就是每條向量指令的第一個(gè)操作數(shù)執(zhí)行完畢需要的時(shí)間,也就是各功能流水線由空到滿的時(shí)間,具體過程如下圖所示。要得到全部結(jié)果,在流水線充滿之后,向量中后繼操作數(shù)繼續(xù)以流水方式執(zhí)行,直到整組向量執(zhí)行完畢。3.19某向量處理機(jī)有16個(gè)向量寄存器,其中V0~V5中分別放有向量A、B、C、D、E、F,向量長度均為8,向量各元素均為浮點(diǎn)數(shù);處理部件采用兩條單功能流水線,加法功能部件時(shí)間為2拍,乘法功能部件時(shí)間為3拍。采用類似于CARY-1的鏈接技術(shù),先計(jì)算(A+B)*C,在流水線不停流的情況下,接著計(jì)算(D+E)*F。求此鏈接流水線的通過時(shí)間?(設(shè)寄存器入、出各需1拍)假如每拍時(shí)間為50ns,完成這些計(jì)算并把結(jié)果存進(jìn)相應(yīng)寄存器,此處理部件的實(shí)際吞吐率為多少M(fèi)FLOPS?解:(1)我們?cè)谶@里假設(shè)A+B的中間結(jié)果放在V6中,(A+B)×C地最后結(jié)果放在V7中,D+E地中間結(jié)果放在V8中,(D+E)×F的最后結(jié)果放在V9中。具體實(shí)現(xiàn)參考下圖:通過時(shí)間應(yīng)該為前者((A+B)×C)通過的時(shí)間:T通過=(1+2+1)+(1+3+1)=9(拍)(2)在做完(A+B)×C之后,作(C+D)×E就不需要通過時(shí)間了。V6←A+BV7←V6×CV8←D+EV9←V8×F第4章指令級(jí)并行4.1解釋下列術(shù)語 指令級(jí)并行:簡稱ILP。是指指令之間存在的一種并行性,利用它,計(jì)算機(jī)可以并行執(zhí)行兩條或兩條以上的指令。指令調(diào)度:通過在編譯時(shí)讓編譯器重新組織指令順序或通過硬件在執(zhí)行時(shí)調(diào)整指令順序來消除沖突。指令的動(dòng)態(tài)調(diào)度:是指在保持?jǐn)?shù)據(jù)流和異常行為的情況下,通過硬件對(duì)指令執(zhí)行順序進(jìn)行重新安排,以提高流水線的利用率且減少停頓現(xiàn)象。是由硬件在程序?qū)嶋H運(yùn)行時(shí)實(shí)施的。指令的靜態(tài)調(diào)度:是指依靠編譯器對(duì)代碼進(jìn)行靜態(tài)調(diào)度,以減少相關(guān)和沖突。它不是在程序執(zhí)行的過程中、而是在編譯期間進(jìn)行代碼調(diào)度和優(yōu)化的。保留站:在采用Tomasulo算法的MIPS處理器浮點(diǎn)部件中,在運(yùn)算部件的入口設(shè)置的用來保存一條已經(jīng)流出并等待到本功能部件執(zhí)行的指令(相關(guān)信息)。CDB:公共數(shù)據(jù)總線。動(dòng)態(tài)分支預(yù)測技術(shù):是用硬件動(dòng)態(tài)地進(jìn)行分支處理的方法。在程序運(yùn)行時(shí),根據(jù)分支指令過去的表現(xiàn)來預(yù)測其將來的行為。如果分支行為發(fā)生了變化,預(yù)測結(jié)果也跟著改變。BHT:分支歷史表。用來記錄相關(guān)分支指令最近一次或幾次的執(zhí)行情況是成功還是失敗,并據(jù)此進(jìn)行預(yù)測。分支目標(biāo)緩沖:是一種動(dòng)態(tài)分支預(yù)測技術(shù)。將執(zhí)行過的成功分支指令的地址以及預(yù)測的分支目標(biāo)地址記錄在一張硬件表中。在每次取指令的同時(shí),用該指令的地址與表中所有項(xiàng)目的相應(yīng)字段進(jìn)行比較,以便盡早知道分支是否成功,盡早知道分支目標(biāo)地址,達(dá)到減少分支開銷的目的。前瞻執(zhí)行:解決控制相關(guān)的方法,它對(duì)分支指令的結(jié)果進(jìn)行猜測,然后按這個(gè)猜測結(jié)果繼續(xù)取指、流出和執(zhí)行后續(xù)的指令。只是指令執(zhí)行的結(jié)果不是寫回到寄存器或存儲(chǔ)器,而是放到一個(gè)稱為ROB的緩沖器中。等到相應(yīng)的指令得到“確認(rèn)”(即確實(shí)是應(yīng)該執(zhí)行的)后,才將結(jié)果寫入寄存器或存儲(chǔ)器。ROB:ReOrderBuffer。前瞻執(zhí)行緩沖器。超標(biāo)量:一種多指令流出技術(shù)。它在每個(gè)時(shí)鐘周期流出的指令條數(shù)不固定,依代碼的具體情況而定,但有個(gè)上限。超流水:在一個(gè)時(shí)鐘周期內(nèi)分時(shí)流出多條指令。超長指令字:一種多指令流出技術(shù)。VLIW處理機(jī)在每個(gè)時(shí)鐘周期流出的指令條數(shù)是固定的,這些指令構(gòu)成一條長指令或者一個(gè)指令包,在這個(gè)指令包中,指令之間的并行性是通過指令顯式地表示出來的。循環(huán)展開:是一種增加指令間并行性最簡單和最常用的方法。它將循環(huán)展開若干遍后,通過重命名和指令調(diào)度來開發(fā)更多的并行性。4.2簡述Tomasulo算法的基本思想。答:核心思想是:①記錄和檢測指令相關(guān),操作數(shù)一旦就緒就立即執(zhí)行,把發(fā)生RAW沖突的可能性減小到最少;②通過寄存器換名來消除WAR沖突和WAW沖突。寄存器換名是通過保留站來實(shí)現(xiàn),它保存等待流出和正在流出指令所需要的操作數(shù)。基本思想:只要操作數(shù)有效,就將其取到保留站,避免指令流出時(shí)才到寄存器中取數(shù)據(jù),這就使得即將執(zhí)行的指令從相應(yīng)的保留站中取得操作數(shù),而不是從寄存器中。指令的執(zhí)行結(jié)果也是直接送到等待數(shù)據(jù)的其它保留站中去。因而,對(duì)于連續(xù)的寄存器寫,只有最后一個(gè)才真正更新寄存器中的內(nèi)容。一條指令流出時(shí),存放操作數(shù)的寄存器名被換成為對(duì)應(yīng)于該寄存器保留站的名稱(編號(hào))。4.3根據(jù)需要展開下面的循環(huán)并進(jì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)展開兩次,進(jì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è)有一條長流水線,僅僅對(duì)條件轉(zhuǎn)移指令使用分支目標(biāo)緩沖。假設(shè)分支預(yù)測錯(cuò)誤的開銷為4個(gè)時(shí)鐘周期,緩沖不命中的開銷為3個(gè)時(shí)鐘周期。假設(shè):命中率為90%,預(yù)測精度為90%,分支頻率為15%,沒有分支的基本CPI為1。求程序執(zhí)行的CPI。相對(duì)于采用固定的2個(gè)時(shí)鐘周期延遲的分支處理,哪種方法程序執(zhí)行速度更快?解:(1)程序執(zhí)行的CPI=沒有分支的基本CPI(1)+分支帶來的額外開銷分支帶來的額外開銷是指在分支指令中,緩沖命中但預(yù)測錯(cuò)誤帶來的開銷與緩沖沒有命中帶來的開銷之和。分支帶來的額外開銷=15%*(90%命中×10%預(yù)測錯(cuò)誤×4+10%沒命中×3)=0.099所以,程序執(zhí)行的CPI=1+0.099=1.099(2)采用固定的2個(gè)時(shí)鐘周期延遲的分支處理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)移指令進(jìn)入分支目標(biāo)緩沖,則程序的CPI值為多少?解:設(shè)每條無條件轉(zhuǎn)移指令的延遲為x,則有:1+5%×x=1.1x=2當(dāng)分支目標(biāo)緩沖命中時(shí),無條件轉(zhuǎn)移指令的延遲為0。所以程序的CPI=1+2×5%×(1-90%)=1.014.6下面的一段MIPS匯編程序是計(jì)算高斯消去法中的關(guān)鍵一步,用于完成下面公式的計(jì)算:Y=aX+Y其浮點(diǎn)指令延遲如表4.3所示,整數(shù)指令均為1個(gè)時(shí)鐘周期完成,浮點(diǎn)和整數(shù)部件均采用流水。整數(shù)操作之間以及與其它所有浮點(diǎn)操作之間的延遲為0,轉(zhuǎn)移指令的延遲為0。X中的最后一個(gè)元素存放在存儲(chǔ)器中的地址為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 對(duì)于標(biāo)準(zhǔn)的MIPS單流水線,上述循環(huán)計(jì)算一個(gè)Y值需要多少時(shí)間?其中有多少空轉(zhuǎn)周期?對(duì)于標(biāo)準(zhǔn)的MIPS單流水線,將上述循環(huán)順序展開4次,不進(jìn)行任何指令調(diào)度,計(jì)算一個(gè)Y值平均需要多少時(shí)間?加速比是多少?其加速是如何獲得的?對(duì)于標(biāo)準(zhǔn)的MIPS單流水線,將上述循環(huán)順序展開4次,優(yōu)化和調(diào)度指令,使循環(huán)處理時(shí)間達(dá)到最優(yōu),計(jì)算一個(gè)Y值平均需要多少時(shí)間?加速比是多少?對(duì)于采用如圖4.8前瞻執(zhí)行機(jī)制的MIPS處理器(只有一個(gè)整數(shù)部件)。當(dāng)循環(huán)第二次執(zhí)行到BNEZ R3,FOO時(shí),寫出前面所有指令的狀態(tài),包括指令使用的保留站、指令起始節(jié)拍、執(zhí)行節(jié)拍和寫結(jié)果節(jié)拍,并寫出處理器當(dāng)前的狀態(tài)。對(duì)于2路超標(biāo)量的MIPS流水線,設(shè)有兩個(gè)指令流出部件,可以流出任意組合的指令,系統(tǒng)中的功能部件數(shù)量不受限制。將上述循環(huán)展開4次,優(yōu)化和調(diào)度指令,使循環(huán)處理時(shí)間達(dá)到最優(yōu)。計(jì)算一個(gè)Y值平均需要多少時(shí)間?加速比是多少?對(duì)于如圖4.13結(jié)構(gòu)的超長指令字MIPS處理器,將上述循環(huán)展開4次,優(yōu)化和調(diào)度指令,使循環(huán)處理時(shí)間達(dá)到最優(yōu)。計(jì)算一個(gè)Y值平均需要多少時(shí)間?加速比是多少?解:(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個(gè)時(shí)鐘周期,其中有5個(gè)空轉(zhuǎn)周期。(2)循環(huán)順序展開4次,不進(jìn)行任何指令調(diào)度,則指令1~5及其間的stall都是必要的,只是指令6~9只需執(zhí)行一次,因此,共有10×4+4=44個(gè)時(shí)鐘周期,計(jì)算出4個(gè)Y值,所以計(jì)算一個(gè)Y值需要11個(gè)時(shí)鐘周期,加速比為:14/11=1.27。加速主要是來自減少控制開銷,即減少對(duì)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個(gè)時(shí)鐘周期,則計(jì)算一個(gè)Y值平均需要24/4=6個(gè)時(shí)鐘周期,加速比:14/6=2.33(4)指令指令執(zhí)行時(shí)鐘流出執(zhí)行寫結(jié)果確認(rèn)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項(xiàng)號(hào)ROBBusy指令狀態(tài)目的Value1yesADD.DF6,F4,F6執(zhí)行F6Regs[F4]+Regs[F6]2yesS.DF6,0(R2)流出Mem[0+Regs[R2]]#2字段浮點(diǎn)寄存器狀態(tài)F0F2F4F6F8F10…F30ROB項(xiàng)編號(hào)1Busyyes…(5)整數(shù)指令浮點(diǎn)指令時(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計(jì)算一個(gè)Y值需要16/4=4個(gè)時(shí)鐘周期,加速比=14/4=3.5(6)訪存1訪存2浮點(diǎn)指令1浮點(diǎn)指令2整數(shù)指令時(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計(jì)算一個(gè)Y值需要11/4個(gè)時(shí)鐘周期,加速比=14/(11/4)=56/114.7對(duì)于兩路超標(biāo)量處理器,從存儲(chǔ)器取數(shù)據(jù)有兩拍附加延遲,其它操作均有1拍附加延遲,對(duì)于下列代碼,請(qǐng)按要求進(jìn)行指令調(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í)最多只有一路可以是訪問存儲(chǔ)器的操作,同時(shí)也最多只有一路可以是運(yùn)算操作,指令順序不變。假設(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對(duì)于例4.5,在相同的條件下,如果展開7遍循環(huán),求:每遍循環(huán)的平均時(shí)鐘周期;每個(gè)時(shí)鐘周期流出指令數(shù);操作槽(功能部件)的使用效率;如果展開10遍,會(huì)出現(xiàn)哪些問題?解:展開7遍循環(huán)訪存指令1訪存指令2浮點(diǎn)指令1浮點(diǎn)指令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這段程序的運(yùn)行時(shí)間為9個(gè)時(shí)鐘周期,每遍循環(huán)平均約1.28個(gè)時(shí)鐘周期。9個(gè)時(shí)鐘周期內(nèi)流出了23條指令,每個(gè)時(shí)鐘周期2.55條。9個(gè)時(shí)鐘周期共有操作槽95=45個(gè),有效槽的比例為51.1%。4.9設(shè)指令流水線由取指令、分析指令和執(zhí)行指令3個(gè)部件構(gòu)成,每個(gè)部件經(jīng)過的時(shí)間為△t,連續(xù)流入12條指令。分別畫出標(biāo)量流水處理機(jī)以及ILP均為4的超標(biāo)量處理機(jī)、超長指令字處理機(jī)、超流水處理機(jī)的時(shí)空?qǐng)D,并分別計(jì)算它們相對(duì)于標(biāo)量流水處理機(jī)的加速比。解:標(biāo)量流水處理機(jī)的時(shí)空?qǐng)D:執(zhí)行完12條指令需T1=14△t。超標(biāo)量流水處理機(jī)與超長指令字處理機(jī)的時(shí)空?qǐng)D:超標(biāo)量流水處理機(jī)中,每一個(gè)時(shí)鐘周期同時(shí)啟動(dòng)4條指令。執(zhí)行完12條指令需T2=5△t,相對(duì)于標(biāo)量流水處理機(jī)的加速比為:超長指令字處理機(jī)中,每4條指令組成一條長指令,共形成3條長指令。執(zhí)行完12條指令需T3=5△t,相對(duì)于標(biāo)量流水處理機(jī)的加速比為:超流水處理機(jī)的時(shí)空?qǐng)D:超流水處理機(jī)中,每1/4個(gè)時(shí)鐘周期啟動(dòng)一條指令。執(zhí)行完12條指令需T4=5.75△t,相對(duì)于標(biāo)量流水處理機(jī)的加速比為:第5章存儲(chǔ)層次5.1解釋下列術(shù)語多級(jí)存儲(chǔ)層次:采用不同的技術(shù)實(shí)現(xiàn)的存儲(chǔ)器,處在離CPU不同距離的層次上,各存儲(chǔ)器之間一般滿足包容關(guān)系,即任何一層存儲(chǔ)器中的內(nèi)容都是其下一層(離CPU更遠(yuǎn)的一層)存儲(chǔ)器中內(nèi)容的子集。目標(biāo)是達(dá)到離CPU最近的存儲(chǔ)器的速度,最遠(yuǎn)的存儲(chǔ)器的容量。全相聯(lián)映象:主存中的任一塊可以被放置到Cache中任意一個(gè)地方。直接映象:主存中的每一塊只能被放置到Cache中唯一的一個(gè)地方。組相聯(lián)映象:主存中的每一塊可以放置到Cache中唯一的一組中任何一個(gè)地方(Cache分成若干組,每組由若干塊構(gòu)成)。替換算法:由于主存中的塊比Cache中的塊多,所以當(dāng)要從主存中調(diào)一個(gè)塊到Cache中時(shí),會(huì)出現(xiàn)該塊所映象到的一組(或一個(gè))Cache塊已全部被占用的情況。這時(shí),需要被迫騰出其中的某一塊,以接納新調(diào)入的塊。LRU:選擇最近最少被訪問的塊作為被替換的塊。實(shí)際實(shí)現(xiàn)都是選擇最久沒有被訪問的塊作為被替換的塊。寫直達(dá)法:在執(zhí)行寫操作時(shí),不僅把信息寫入Cache中相應(yīng)的塊,而且也寫入下一級(jí)存儲(chǔ)器中相應(yīng)的塊。寫回法:只把信息寫入Cache中相應(yīng)塊,該塊只有被替換時(shí),才被寫回主存。按寫分配法:寫失效時(shí),先把所寫單元所在的塊調(diào)入Cache,然后再進(jìn)行寫入。不按寫分配法:寫失效時(shí),直接寫入下一級(jí)存儲(chǔ)器中,而不把相應(yīng)的塊調(diào)入Cache。命中時(shí)間:訪問Cache命中時(shí)所用的時(shí)間。失效率:CPU訪存時(shí),在一級(jí)存儲(chǔ)器中找不到所需信息的概率。失效開銷:CPU向二級(jí)存儲(chǔ)器發(fā)出訪問請(qǐng)求到把這個(gè)數(shù)據(jù)調(diào)入一級(jí)存儲(chǔ)器所需的時(shí)間。強(qiáng)制性失效:當(dāng)?shù)谝淮卧L問一個(gè)塊時(shí),該塊不在Cache中,需要從下一級(jí)存儲(chǔ)器中調(diào)入Cache,這就是強(qiáng)制性失效。容量失效:如果程序在執(zhí)行時(shí),所需要的塊不能全部調(diào)入Cache中,則當(dāng)某些塊被替換后又重新被訪問,就會(huì)產(chǎn)生失效,這種失效就稱作容量失效。沖突失效:在組相聯(lián)或直接映象Cache中,若太多的塊映象到同一組(塊)中,則會(huì)出現(xiàn)該組中某個(gè)塊被別的塊替換(即使別的組或塊有空閑位置),然后又被重新訪問的情況。2:1Cache經(jīng)驗(yàn)規(guī)則:大小為N的直接映象Cache的失效率約等于大小為N/2的兩路組相聯(lián)Cache的實(shí)效率。相聯(lián)度:在組相聯(lián)中,每組Cache中的塊數(shù)。VictimCache:位于Cache和存儲(chǔ)器之間的又一級(jí)Cache,容量小,采用全相聯(lián)策略。用于存放由于失效而被丟棄(替換)的那些塊。每當(dāng)失效發(fā)生時(shí),在訪問下一級(jí)存儲(chǔ)器之前,先檢查VictimCache中是否含有所需塊。故障性預(yù)?。涸陬A(yù)取時(shí),若出現(xiàn)虛地址故障或違反保護(hù)權(quán)限,就會(huì)發(fā)生異常。非故障性預(yù)?。涸陬A(yù)取時(shí),若出現(xiàn)虛地址故障或違反保護(hù)權(quán)限,不發(fā)生異常。非阻塞Cache:Cache在等待預(yù)取數(shù)據(jù)返回時(shí),還能繼續(xù)提供指令和數(shù)據(jù)。盡早重啟動(dòng):在請(qǐng)求字沒有到達(dá)時(shí),CPU處于等待狀態(tài)。一旦請(qǐng)求字到達(dá),就立即發(fā)送給CPU,讓等待的CPU盡早重啟動(dòng),繼續(xù)執(zhí)行。請(qǐng)求字優(yōu)先:調(diào)塊時(shí),首先向存儲(chǔ)器請(qǐng)求CPU所要的請(qǐng)求字。請(qǐng)求字一旦到達(dá),就立即送往CPU,讓CPU繼續(xù)執(zhí)行,同時(shí)從存儲(chǔ)器調(diào)入該塊的其余部分。虛擬Cache:地址使用虛地址的Cache。多體交叉存儲(chǔ)器:具有多個(gè)存儲(chǔ)體,各體之間按字交叉的存儲(chǔ)技術(shù)。存儲(chǔ)體沖突:多個(gè)請(qǐng)求要訪問同一個(gè)體。TLB:一個(gè)專用高速存儲(chǔ)器,用于存放近期經(jīng)常使用的頁表項(xiàng),其內(nèi)容是頁表部分內(nèi)容的一個(gè)副本。簡述“Cache—主存”層次與“主存—輔存”層次的區(qū)別。答:存儲(chǔ)層次比較項(xiàng)目“Cache—主存”層次“主存—輔存”層次目的為了彌補(bǔ)主存速度的不足為了彌補(bǔ)主存容量的不足存儲(chǔ)管理的實(shí)現(xiàn)全部由專用硬件實(shí)現(xiàn)主要由軟件實(shí)現(xiàn)訪問速度的比值(第一級(jí)比第二級(jí))幾比一幾萬比一典型的塊(頁)大小幾十個(gè)字節(jié)幾百到幾千個(gè)字節(jié)CPU對(duì)第二級(jí)的訪問方式可直接訪問均通過第一級(jí)不命中時(shí)CPU是否切換不切換切換到其它進(jìn)程地址映象方法有哪幾種?它們各有什么優(yōu)缺點(diǎn)?答:(1)全相聯(lián)映象。實(shí)現(xiàn)查找的機(jī)制復(fù)雜,代價(jià)高,速度慢。Cache空間的利用率較高,塊沖突概率較低,因而Cache的失效率也低。(2)直接映象。實(shí)現(xiàn)查找的機(jī)制簡單,速度快。Cache空間的利用率較低,塊沖突概率較高,因而Cache的失效率也高。(3)組相聯(lián)映象。組相聯(lián)是直接映象和全相聯(lián)的一種折衷。降低Cache失效率有哪幾種方法?簡述其基本思想。答:常用的降低Cache失效率的方法有下面幾種:增加Cache塊大小。增加塊大小利用了程序的空間局部性。增加Cache的容量。提高相聯(lián)度,降低沖突失效。偽相聯(lián)Cache,降低沖突失效。當(dāng)對(duì)偽相聯(lián)Cache進(jìn)行訪問時(shí),首先是按與直接映象相同的方式進(jìn)行訪問。如果命中,則從相應(yīng)的塊中取出所訪問的數(shù)據(jù),送給CPU,訪問結(jié)束。如果不命中,就將索引字段的最高位取反,然后按照新索引去尋找“偽相聯(lián)組”中的對(duì)應(yīng)塊。如果這一塊的標(biāo)識(shí)匹配,則稱發(fā)生了“偽命中”。否則,就訪問下一級(jí)存儲(chǔ)器。硬件預(yù)取技術(shù)。在處理器提出訪問請(qǐng)求前預(yù)取指令和數(shù)據(jù)。由編譯器控制的預(yù)取,硬件預(yù)取的替代方法,在編譯時(shí)加入預(yù)取的指令,在數(shù)據(jù)被用到之前發(fā)出預(yù)取請(qǐng)求。編譯器優(yōu)化,通過對(duì)軟件的優(yōu)化來降低失效率。“犧牲”Cache。在Cache和其下一級(jí)存儲(chǔ)器的數(shù)據(jù)通路之間增設(shè)一個(gè)全相聯(lián)的小Cache,存放因沖突而被替換出去的那些塊。每當(dāng)發(fā)生不命中時(shí),在訪問下一級(jí)存儲(chǔ)器之前,先檢查“犧牲”Cache中是否含有所需的塊。如果有,就將該塊與Cache中某個(gè)塊做交換,把所需的塊從“犧牲”Cache調(diào)入Cache。簡述減小Cache失效開銷的幾種方法。答:讓讀失效優(yōu)先于寫、寫緩沖合并、請(qǐng)求字處理技術(shù)、非阻塞Cache或非鎖定Cache技術(shù)、采用二級(jí)Cache。5.6通過編譯器對(duì)程序優(yōu)化來改進(jìn)Cache性能的方法有哪幾種?簡述其基本思想。答:(1)數(shù)組合并。通過提高空間局部性來減少失效次數(shù)。有些程序同時(shí)用相同的索引來訪問若干個(gè)數(shù)組的同一維,這些訪問可能會(huì)相互干擾,導(dǎo)致沖突失效,可以將這些相互獨(dú)立的數(shù)組合并成一個(gè)復(fù)合數(shù)組,使得一個(gè)Cache塊中能包含全部所需元素。(2)內(nèi)外循環(huán)交換。循環(huán)嵌套時(shí),程序沒有按數(shù)據(jù)在存儲(chǔ)器中的順序訪問。只要簡單地交換內(nèi)外循環(huán),就能使程序按數(shù)據(jù)在存儲(chǔ)器中的存儲(chǔ)順序進(jìn)行訪問。(3)循環(huán)融合。有些程序含有幾部分獨(dú)立的程序段,它們用相同的循環(huán)訪問同樣的數(shù)組,對(duì)相同的數(shù)據(jù)作不同的運(yùn)算。通過將它們?nèi)诤铣梢粋€(gè)單一循環(huán),能使讀入Cache的數(shù)據(jù)被替換出去之前得到反復(fù)的使用。(4)分塊。通過改進(jìn)時(shí)間局部性來減少失效。分塊不是對(duì)數(shù)組的整行或整列進(jìn)行訪問,而是對(duì)子矩陣或塊進(jìn)行操作。5.7在“Cache—主存”層次中,主存的更新算法有哪兩種?它們各有什么特點(diǎn)?答:(1)寫直達(dá)法。易于實(shí)現(xiàn),而且下一級(jí)存儲(chǔ)器中的數(shù)據(jù)總是最新的。(2)寫回法。速度快,“寫”操作能以Cache存儲(chǔ)器的速度進(jìn)行。而且對(duì)于同一單元的多個(gè)寫最后只需一次寫回下一級(jí)存儲(chǔ)器,有些“寫”只到達(dá)Cache,不到達(dá)主存,因而所使用的存儲(chǔ)器頻帶較低。5.8組相聯(lián)Cache的失效率比相同容量直接映象Cache的失效率低。由此能否得出結(jié)論:采用組相聯(lián)一定能帶來性能上的提高?為什么?答:不一定。因?yàn)榻M相聯(lián)命中率的提高是以增加命中時(shí)間為代價(jià)的,組相聯(lián)需要增加多路選擇開關(guān)。5.9寫出三級(jí)Cache的平均訪問時(shí)間的公式。解:平均訪存時(shí)間=命中時(shí)間+失效率×失效開銷只有第I層失效時(shí)才會(huì)訪問第I+1。設(shè)三級(jí)Cache的命中率分別為HL1、Hl2、HL3,失效率分別為Ml1、Ml2、ML3,第三級(jí)Cache的失效開銷為PL3。平均訪問時(shí)間TA=HL1+Ml1{Hl2+Ml2(HL3+ML3×PL3)}5.10假設(shè)對(duì)指令Cache的訪問占全部訪問的75%;而對(duì)數(shù)據(jù)Cache的訪問占全部訪問的25%。Cache的命中時(shí)間為1個(gè)時(shí)鐘周期,失效開銷為50個(gè)時(shí)鐘周期,在混合Cache中一次load或store操作訪問Cache的命中時(shí)間都要增加一個(gè)時(shí)鐘周期,32KB的指令Cache的失效率為0.39%,32KB的數(shù)據(jù)Cache的失效率為4.82%,64KB的混合Cache的失效率為1.35%。又假設(shè)采用寫直達(dá)策略,且有一個(gè)寫緩沖器,并且忽略寫緩沖器引起的等待。試問指令Cache和數(shù)據(jù)Cache容量均為32KB的分離Cache和容量為64KB的混合Cache相比,哪種Cache的失效率更低?兩種情況下平均訪存時(shí)間各是多少?解:(1)根據(jù)題意,約75%的訪存為取指令。因此,分離Cache的總體失效率為:(75%×0.15%)+(25%×3.77%)=1.055%;容量為128KB的混合Cache的失效率略低一些,只有0.95%。(2)平均訪存時(shí)間公式可以分為指令訪問和數(shù)據(jù)訪問兩部分:平均訪存時(shí)間=指令所占的百分比×(讀命中時(shí)間+讀失效率×失效開銷)+數(shù)據(jù)所占的百分比×(數(shù)據(jù)命中時(shí)間+數(shù)據(jù)失效率×失效開銷)所以,兩種結(jié)構(gòu)的平均訪存時(shí)間分別為:分離Cache的平均訪存時(shí)間=75%×(1+0.15%×50)+25%×(1+3.77%×50)=(75%×1.075)+(25%×2.885)=1.5275混合Cache的平均訪存時(shí)間=75%×(1+0.95%×50)+25%×(1+1+0.95%×50)=(75%×1.475)+(25%×2.475)=1.725因此,盡管分離Cache的實(shí)際失效率比混合Cache的高,但其平均訪存時(shí)間反而較低。分離Cache提供了兩個(gè)端口,消除了結(jié)構(gòu)相關(guān)。5.11給定以下的假設(shè),試計(jì)算直接映象Cache和兩路組相聯(lián)Cache的平均訪問時(shí)間以及CPU的性能。由計(jì)算結(jié)果能得出什么結(jié)論?理想Cache情況下的CPI為2.0,時(shí)鐘周期為2ns,平均每條指令訪存1.2次;兩者Cache容量均為64KB,塊大小都是32字節(jié);組相聯(lián)Cache中的多路選擇器使CPU的時(shí)鐘周期增加了10%;這兩種Cache的失效開銷都是80ns;命中時(shí)間為1個(gè)時(shí)鐘周期;64KB直接映象Cache的失效率為1.4%,64KB兩路組相聯(lián)Cache的失效率為1.0%。解:平均訪問時(shí)間=命中時(shí)間+失效率×失效開銷平均訪問時(shí)間1-路=2.0+1.4%*80=3.12ns平均訪問時(shí)間2-路=2.0*(1+10%)+1.0%*80=3.0ns兩路組相聯(lián)的平均訪問時(shí)間比較低CPUtime=(CPU執(zhí)行+存儲(chǔ)等待周期)*時(shí)鐘周期CPUtime=IC(CPI執(zhí)行+總失效次數(shù)/指令總數(shù)*失效開銷)*時(shí)鐘周期=IC((CPI執(zhí)行*時(shí)鐘周期)+(每條指令的訪存次數(shù)*失效率*失效開銷*時(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相對(duì)性能比:5.36/5.344=1.003直接映象cache的訪問速度比兩路組相聯(lián)cache要快1.04倍,而兩路組相聯(lián)Cache的平均性能比直接映象cache要高1.003倍。因此這里選擇兩路組相聯(lián)。5.12假設(shè)一臺(tái)計(jì)算機(jī)具有以下特性:95%的訪存在Cache中命中;塊大小為兩個(gè)字,且失效時(shí)整個(gè)塊被調(diào)入;CPU發(fā)出訪存請(qǐng)求的速率為109字/s;25%的訪存為寫訪問;存儲(chǔ)器的最大流量為109字/s(包括讀和寫);主存每次只能讀或?qū)懸粋€(gè)字;在任何時(shí)候,Cache中有30%的塊被修改過;寫失效時(shí),Cache采用按寫分配法?,F(xiàn)欲給該計(jì)算機(jī)增添一臺(tái)外設(shè),為此首先想知道主存的頻帶已用了多少。試對(duì)于以下兩種情況計(jì)算主存頻帶的平均使用比例。寫直達(dá)Cache;寫回法Cache。解:采用按寫分配(1)寫直達(dá)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一次訪存請(qǐng)求最后真正的平均訪存次數(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塊被換出時(shí),才寫入主存;訪問失效,有一個(gè)塊將被換出,這也有兩種情況:如果被替換的塊沒有修改過,將主存中的塊調(diào)入cache塊中,訪問主存兩次;如果被替換的塊修改過,則首先將修改的塊寫入主存,需要訪問主存兩次;然后將主存中的塊調(diào)入cache塊中,需要訪問主存兩次,共四次訪問主存。訪問命中塊為臟頻率訪存次數(shù)YN95%*70%=66.5%0YY95%*30%=28.5%0NN5%*70%=3.5%2NY5%*30%=1.5%4所以:一次訪存請(qǐng)求最后真正的平均訪存次數(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)匹配,而在另一個(gè)位置才找到數(shù)據(jù)(偽命中)時(shí),不對(duì)這兩個(gè)位置的數(shù)據(jù)進(jìn)行交換。這時(shí)只需要1個(gè)額外的周期。假設(shè)失效開銷為50個(gè)時(shí)鐘周期,2KB直接映象Cache的失效率為9.8%,2路組相聯(lián)的失效率為7.6%;128KB直接映象Cache的失效率為1.0%,2路組相聯(lián)的失效率為0.7%。推導(dǎo)出平均訪存時(shí)間的公式。利用(1)中得到的公式,對(duì)于2KBCache和128KBCache,計(jì)算偽相聯(lián)的平均訪存時(shí)間。解:不管作了何種改進(jìn),失效開銷相同。不管是否交換內(nèi)容,在同一“偽相聯(lián)”組中的兩塊都是用同一個(gè)索引得到的,因此失效率相同,即:失效率偽相聯(lián)=失效率2路。偽相聯(lián)cache的命中時(shí)間等于直接映象cache的命中時(shí)間加上偽相聯(lián)查找過程中的命中時(shí)間*該命中所需的額外開銷。命中時(shí)間偽相聯(lián)=命中時(shí)間1路+偽命中率偽相聯(lián)×1交換或不交換內(nèi)容,偽相聯(lián)的命中率都是由于在第一次失效時(shí),將地址取反,再在第二次查找?guī)淼?。因此偽命中率偽相?lián)=命中率2路-命中率1路=

溫馨提示

  • 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)論