第五章 標(biāo)量流水技術(shù)
在學(xué)這一章之前,我們先想一下"流水"是什么意思,我們看到過(guò)工廠的生產(chǎn)流水線,每一個(gè)工序都在工作,每一個(gè)工人都沒(méi)有閑著,他們同時(shí)在工作,做著同一件事,流水線每隔一個(gè)拍子就出來(lái)一個(gè)成品。這樣的生產(chǎn)效率是很高的。如果不是用流水線,而是從開(kāi)始一道工序一道工序地往后傳遞直到做成一個(gè)成品再?gòu)牡谝坏拦ば蜷_(kāi)始生產(chǎn),那么,在前一道工序完成任務(wù)之前,后面工序就會(huì)在等待,每個(gè)時(shí)刻只有一個(gè)工序在工作。這樣的效率是很低的,即使每一道工序的工作速度提高很多。
計(jì)算機(jī)的流水技術(shù)也就是應(yīng)用了這樣的技術(shù),它從系統(tǒng)結(jié)構(gòu)上考慮使計(jì)算機(jī)在運(yùn)行時(shí)各個(gè)"工序"都不能閑著,每時(shí)刻都要在進(jìn)行處理。這就是引入的并行處理能力。流水控制方式就是一種非常經(jīng)濟(jì)有效的方法。
一、控制流及其改變(領(lǐng)會(huì))
編過(guò)程序的人都知道,算法中,常常需要程序的流程發(fā)生轉(zhuǎn)移,比如從這條語(yǔ)句跳到另一條語(yǔ)句??刂屏骶褪潜惶幚淼闹噶钚蛄械膱?zhí)行順序。當(dāng)程序在執(zhí)行過(guò)程中遇到以下一些情況下時(shí),控制流就要發(fā)生改變:
1.轉(zhuǎn)移指令。2.過(guò)程調(diào)用和返回。3.協(xié)同程序。4.中斷和自陷。
控制流的改變就使得程序在執(zhí)行時(shí),要在存儲(chǔ)器中不相鄰的地址處讀取指令。
二、標(biāo)量流水工作原理(領(lǐng)會(huì))
這里我們提一下標(biāo)量。 標(biāo)量是代數(shù)量的一種,它們構(gòu)成一個(gè)域,通常是實(shí)數(shù)或復(fù)數(shù)。我們可以理解為單個(gè)的量。這是與向量相對(duì)的概念。而向量是通常由標(biāo)量的一組有序集合表示的量。在我們這里,它是一種地址,比如一個(gè)數(shù)組在C語(yǔ)言中用a[10]表示,實(shí)際上它指示的是一個(gè)首地址a,長(zhǎng)度為10.這10個(gè)數(shù)據(jù)的存儲(chǔ)空間在存儲(chǔ)器中就是一個(gè)向量。
在計(jì)算機(jī)中采用的重疊操作是指計(jì)算機(jī)中不同部件或同一部件內(nèi)的各種操作在時(shí)間上存在重疊的部分。就像上面提到的各個(gè)工序的工人們?cè)诓僮鲿r(shí)間上存在重疊的部分。
指令的解釋方式一般分為順序、重疊、流水三種。
在這一節(jié)內(nèi)容中。我們要掌握的就是重疊操作后指令執(zhí)行時(shí)間的計(jì)算。以及采用先行控制技術(shù)后時(shí)間的計(jì)算。
先行控制技術(shù):它的基本思想是使分析部件和執(zhí)行部件能分別連續(xù)不斷地分析和執(zhí)行指令,為了保證分析和執(zhí)行部件的連續(xù)工作,在系統(tǒng)中通常要增設(shè)指令緩沖棧、先行操作棧、數(shù)據(jù)緩沖棧等,所以這種技術(shù)實(shí)際上是預(yù)處理技術(shù)和緩沖技術(shù)的結(jié)合,即通過(guò)對(duì)指令流的先行控制,使指令分析器和執(zhí)行部件能盡量地連續(xù)工作。這里的緩沖部件一般采用先進(jìn)先出的工作方式。請(qǐng)理解教材圖5.6.各個(gè)緩沖部件的深度之間存在如下關(guān)系:
D指緩≥D操作數(shù)≥D讀棧≥寫(xiě)棧
標(biāo)量流水工作原理(領(lǐng)會(huì)):根據(jù)上面的重疊技術(shù)和先行控制技術(shù)。進(jìn)一步發(fā)展應(yīng)用就是標(biāo)量流水技術(shù)。如果把一條指令的解釋過(guò)程進(jìn)一步細(xì)分,如把分析、執(zhí)行兩個(gè)過(guò)程分成取指、譯碼、執(zhí)行、訪存、寫(xiě)回寄存器五個(gè)子過(guò)程,并用五個(gè)子部件分別處理每個(gè)子過(guò)程。就像工廠中的流水線,重疊的操作最后可以使用五個(gè)子部件同時(shí)對(duì)五條指令進(jìn)行操作。相應(yīng)的我們要能理解流水時(shí)空?qǐng)D。
在流水技術(shù)中有如下一些特點(diǎn):對(duì)照工廠的裝配流水線很容易理解:(領(lǐng)會(huì))
(1)一條流水線由多個(gè)流水段組成(多段)
(2)每個(gè)流水段有專(zhuān)門(mén)的功能部件對(duì)指令進(jìn)行某種加工(專(zhuān)件)
(3)各流水段所需時(shí)間是一樣的(同時(shí))
(4)流水線工作階段可分為建立、滿載和排空三個(gè)階段(在階段)
(5)在理想情況下,當(dāng)流水線充滿后,每隔Δt時(shí)間將會(huì)有一個(gè)結(jié)果流出流水線。
標(biāo)量流水的分類(lèi)(識(shí)記)
按處理級(jí)別分類(lèi):操作部件級(jí)、指令級(jí)、處理機(jī)級(jí)(這三個(gè)級(jí)別是從細(xì)到粗排列的)
按功能分類(lèi):?jiǎn)喂δ芰魉€和多功能流水線。大多數(shù)流水計(jì)算機(jī)采用單功能流水線。
按工作方式分類(lèi):靜態(tài)流水線和動(dòng)態(tài)流水線兩種。這里要注意的是靜態(tài)流水線可以是單功能的,也可以是多功能的。而動(dòng)態(tài)流水線必是多功能的。單功能流水線必是靜態(tài)的。
按連接方式分類(lèi):線性流水線與非線性流水線。
流水線的主要性能及其分析(簡(jiǎn)單應(yīng)用)
在這一節(jié)中,要對(duì)"吞吐率、效率、加速比"這三個(gè)衡量流水線性能的主要指標(biāo)進(jìn)行掌握。
1、吞吐率
吞吐率Tpmax: 指流水線達(dá)到穩(wěn)定狀態(tài)后可獲得的吞吐率。
實(shí)際吞吐率Tp :是指單位時(shí)間內(nèi)能處理的任務(wù)數(shù)或輸出結(jié)果的數(shù)量,它總是小于吞吐率。因?yàn)榱魉€有建立階段和排空階段,以及其他因素會(huì)影響流水線的連續(xù)流動(dòng)。
2、加速比(Sp):采用流水方式后的工作速度與等效的順序串行方式的工作速度之比。
3、效率E:指流水線中各功能段的利用率。
要能夠根據(jù)要求畫(huà)出時(shí)空?qǐng)D,同時(shí)要能夠計(jì)算上面幾個(gè)性能指標(biāo)。
另外,要記一下解決瓶頸的方法:一是將瓶頸子過(guò)程進(jìn)一步細(xì)分成若干子子過(guò)程使每一子子過(guò)程與其他子過(guò)程時(shí)間相等。二是在瓶頸段并聯(lián)設(shè)置多套功能段部件,使它們輪流工作。
三、流水操作中的主要障礙(領(lǐng)會(huì))
要使流水線具有良好的性能。必須設(shè)法使流水線能暢能流動(dòng),但是在流水過(guò)程中會(huì)出現(xiàn)以下三種相關(guān)(也就是沖突的意思)。它們是:資源或結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)和控制相關(guān)。
資源相關(guān)(結(jié)構(gòu)相關(guān)):當(dāng)有多條指令進(jìn)入流水線后在同一機(jī)器周期內(nèi)爭(zhēng)用同一功能部件所發(fā)生的沖突。解決的辦法有兩個(gè),一是停頓一拍流水線。二是重復(fù)設(shè)置被爭(zhēng)用的功能部件來(lái)解決。
數(shù)據(jù)相關(guān)沖突:當(dāng)后繼指令的操作數(shù)剛好是前一指令的運(yùn)算結(jié)果的情況下會(huì)導(dǎo)致數(shù)據(jù)相關(guān)的發(fā)生。因?yàn)楦鳁l指令的重疊操作使原來(lái)的數(shù)據(jù)訪問(wèn)順序發(fā)生了變化。解決的辦法是采用后推法,即遇到數(shù)據(jù)相關(guān)時(shí),就停頓后繼指令的執(zhí)行,直到前面指令的結(jié)果已經(jīng)生成。另一種方法就是采用定向技術(shù)(旁路技術(shù):就是使用專(zhuān)門(mén)設(shè)置的通路將產(chǎn)生的結(jié)果直接送往需要它的地方而不是通過(guò)寄存器再訪問(wèn))
數(shù)據(jù)相關(guān)沖突可分為RAW(Read Ahead of Write ) WAR 、WAW三種類(lèi)型。在按序流動(dòng)的流水線中,只可能出現(xiàn)RAW相關(guān)??赏ㄟ^(guò)定向傳送的方法解決。在非按序流動(dòng)的流水線中,則各種相關(guān)都可能發(fā)生。在RISC機(jī)流水線中,還存在一種裝入延遲。解決這種裝入延遲的辦法是采用硬件聯(lián)鎖或重排指令的優(yōu)化編譯方法。
控制轉(zhuǎn)移沖突:這是很經(jīng)常發(fā)生的沖突,主要是由轉(zhuǎn)移指令引起的,當(dāng)轉(zhuǎn)移發(fā)生時(shí),將使流水線的流動(dòng)受到破壞。為了減少因轉(zhuǎn)移面引起的流水線性能損失,可采用下述方法:
1.盡早判別轉(zhuǎn)移是否發(fā)生,盡早生成轉(zhuǎn)移目標(biāo)地址。(早)
2.預(yù)取轉(zhuǎn)移成功或不成功兩個(gè)控制流方向上的目標(biāo)指令。(預(yù))
3.加快和提前形成條件碼。(快條件)
4.加快短循環(huán)程序的處理。(循環(huán))
5.提高轉(zhuǎn)移方向的猜準(zhǔn)率。(猜準(zhǔn))
6.采用延遲轉(zhuǎn)移技術(shù)(延)
這是一種有效的軟件手段以減少控制相關(guān)造成的流水線性能下降。
為了在延遲槽中填入有效指令,一般可采用以下三種方法:
1)將轉(zhuǎn)移指令前的那條指令調(diào)度到延遲槽中。
2)將轉(zhuǎn)移目標(biāo)處的那條指令調(diào)度到延遲槽中。
3)將轉(zhuǎn)移不發(fā)生時(shí)該執(zhí)行的那條指令調(diào)度到延遲槽中。
四、流水的實(shí)現(xiàn)和控制(綜合應(yīng)用)
現(xiàn)在的流水都采用了精確斷點(diǎn)法。即不論在第i條指令中哪段上發(fā)生的中斷申請(qǐng),中斷處理程序都會(huì)對(duì)斷點(diǎn)處的現(xiàn)場(chǎng)進(jìn)行精確保護(hù)。當(dāng)然這時(shí)需要很多的后援寄存器來(lái)存儲(chǔ)和恢復(fù)。
這一節(jié)的一個(gè)重點(diǎn)是非線性流水線的的靜態(tài)調(diào)度。教材說(shuō)明比較清楚。我們要會(huì)作預(yù)約表、狀態(tài)圖和計(jì)算調(diào)度方案的平均間隔拍數(shù)。這里附帶說(shuō)明一下,圖5.27中的7≥9的意思是指沿著某條路徑間隔拍數(shù)的和大于等于9,并不是指最后一個(gè)間隔7大于等于9.
第二個(gè)重點(diǎn)就是先進(jìn)流水調(diào)度方法——?jiǎng)討B(tài)調(diào)度。動(dòng)態(tài)調(diào)度不需要借助軟件來(lái)對(duì)指令進(jìn)行調(diào)度,而是利用硬件重新安排指令的順序來(lái)減少流水的停頓。
動(dòng)態(tài)流水調(diào)度法又分集中式動(dòng)態(tài)調(diào)度和分布式動(dòng)態(tài)調(diào)度。這兩種調(diào)度法的原理圖及其原理解釋?xiě)?yīng)當(dāng)理解清楚并能夠表達(dá)。
另外,用于預(yù)測(cè)轉(zhuǎn)移目標(biāo)地址的方法,相應(yīng)的硬件轉(zhuǎn)移目標(biāo)緩沖器BTB的圖及工作原理應(yīng)該理解清楚并能表達(dá)。
為了進(jìn)一步提高計(jì)算機(jī)性能,還有各種開(kāi)發(fā)細(xì)粒度并行的方法。有
超級(jí)標(biāo)量方法:就是使每個(gè)時(shí)鐘周期能啟動(dòng)n條指令。
超級(jí)流水方法:就是不到一個(gè)時(shí)鐘周期就啟動(dòng)一條指令。
超長(zhǎng)指令字(Very Long Istruction Word)方法。
這里我們要對(duì)超級(jí)標(biāo)量機(jī)及VLIW機(jī)的結(jié)構(gòu)及其特點(diǎn)進(jìn)行領(lǐng)會(huì)和記憶。
另外還有一種軟件流水方法,它是借用硬件流水思想,使循環(huán)體程序段的執(zhí)行能夠重疊執(zhí)行的方法
在學(xué)這一章之前,我們先想一下"流水"是什么意思,我們看到過(guò)工廠的生產(chǎn)流水線,每一個(gè)工序都在工作,每一個(gè)工人都沒(méi)有閑著,他們同時(shí)在工作,做著同一件事,流水線每隔一個(gè)拍子就出來(lái)一個(gè)成品。這樣的生產(chǎn)效率是很高的。如果不是用流水線,而是從開(kāi)始一道工序一道工序地往后傳遞直到做成一個(gè)成品再?gòu)牡谝坏拦ば蜷_(kāi)始生產(chǎn),那么,在前一道工序完成任務(wù)之前,后面工序就會(huì)在等待,每個(gè)時(shí)刻只有一個(gè)工序在工作。這樣的效率是很低的,即使每一道工序的工作速度提高很多。
計(jì)算機(jī)的流水技術(shù)也就是應(yīng)用了這樣的技術(shù),它從系統(tǒng)結(jié)構(gòu)上考慮使計(jì)算機(jī)在運(yùn)行時(shí)各個(gè)"工序"都不能閑著,每時(shí)刻都要在進(jìn)行處理。這就是引入的并行處理能力。流水控制方式就是一種非常經(jīng)濟(jì)有效的方法。
一、控制流及其改變(領(lǐng)會(huì))
編過(guò)程序的人都知道,算法中,常常需要程序的流程發(fā)生轉(zhuǎn)移,比如從這條語(yǔ)句跳到另一條語(yǔ)句??刂屏骶褪潜惶幚淼闹噶钚蛄械膱?zhí)行順序。當(dāng)程序在執(zhí)行過(guò)程中遇到以下一些情況下時(shí),控制流就要發(fā)生改變:
1.轉(zhuǎn)移指令。2.過(guò)程調(diào)用和返回。3.協(xié)同程序。4.中斷和自陷。
控制流的改變就使得程序在執(zhí)行時(shí),要在存儲(chǔ)器中不相鄰的地址處讀取指令。
二、標(biāo)量流水工作原理(領(lǐng)會(huì))
這里我們提一下標(biāo)量。 標(biāo)量是代數(shù)量的一種,它們構(gòu)成一個(gè)域,通常是實(shí)數(shù)或復(fù)數(shù)。我們可以理解為單個(gè)的量。這是與向量相對(duì)的概念。而向量是通常由標(biāo)量的一組有序集合表示的量。在我們這里,它是一種地址,比如一個(gè)數(shù)組在C語(yǔ)言中用a[10]表示,實(shí)際上它指示的是一個(gè)首地址a,長(zhǎng)度為10.這10個(gè)數(shù)據(jù)的存儲(chǔ)空間在存儲(chǔ)器中就是一個(gè)向量。
在計(jì)算機(jī)中采用的重疊操作是指計(jì)算機(jī)中不同部件或同一部件內(nèi)的各種操作在時(shí)間上存在重疊的部分。就像上面提到的各個(gè)工序的工人們?cè)诓僮鲿r(shí)間上存在重疊的部分。
指令的解釋方式一般分為順序、重疊、流水三種。
在這一節(jié)內(nèi)容中。我們要掌握的就是重疊操作后指令執(zhí)行時(shí)間的計(jì)算。以及采用先行控制技術(shù)后時(shí)間的計(jì)算。
先行控制技術(shù):它的基本思想是使分析部件和執(zhí)行部件能分別連續(xù)不斷地分析和執(zhí)行指令,為了保證分析和執(zhí)行部件的連續(xù)工作,在系統(tǒng)中通常要增設(shè)指令緩沖棧、先行操作棧、數(shù)據(jù)緩沖棧等,所以這種技術(shù)實(shí)際上是預(yù)處理技術(shù)和緩沖技術(shù)的結(jié)合,即通過(guò)對(duì)指令流的先行控制,使指令分析器和執(zhí)行部件能盡量地連續(xù)工作。這里的緩沖部件一般采用先進(jìn)先出的工作方式。請(qǐng)理解教材圖5.6.各個(gè)緩沖部件的深度之間存在如下關(guān)系:
D指緩≥D操作數(shù)≥D讀棧≥寫(xiě)棧
標(biāo)量流水工作原理(領(lǐng)會(huì)):根據(jù)上面的重疊技術(shù)和先行控制技術(shù)。進(jìn)一步發(fā)展應(yīng)用就是標(biāo)量流水技術(shù)。如果把一條指令的解釋過(guò)程進(jìn)一步細(xì)分,如把分析、執(zhí)行兩個(gè)過(guò)程分成取指、譯碼、執(zhí)行、訪存、寫(xiě)回寄存器五個(gè)子過(guò)程,并用五個(gè)子部件分別處理每個(gè)子過(guò)程。就像工廠中的流水線,重疊的操作最后可以使用五個(gè)子部件同時(shí)對(duì)五條指令進(jìn)行操作。相應(yīng)的我們要能理解流水時(shí)空?qǐng)D。
在流水技術(shù)中有如下一些特點(diǎn):對(duì)照工廠的裝配流水線很容易理解:(領(lǐng)會(huì))
(1)一條流水線由多個(gè)流水段組成(多段)
(2)每個(gè)流水段有專(zhuān)門(mén)的功能部件對(duì)指令進(jìn)行某種加工(專(zhuān)件)
(3)各流水段所需時(shí)間是一樣的(同時(shí))
(4)流水線工作階段可分為建立、滿載和排空三個(gè)階段(在階段)
(5)在理想情況下,當(dāng)流水線充滿后,每隔Δt時(shí)間將會(huì)有一個(gè)結(jié)果流出流水線。
標(biāo)量流水的分類(lèi)(識(shí)記)
按處理級(jí)別分類(lèi):操作部件級(jí)、指令級(jí)、處理機(jī)級(jí)(這三個(gè)級(jí)別是從細(xì)到粗排列的)
按功能分類(lèi):?jiǎn)喂δ芰魉€和多功能流水線。大多數(shù)流水計(jì)算機(jī)采用單功能流水線。
按工作方式分類(lèi):靜態(tài)流水線和動(dòng)態(tài)流水線兩種。這里要注意的是靜態(tài)流水線可以是單功能的,也可以是多功能的。而動(dòng)態(tài)流水線必是多功能的。單功能流水線必是靜態(tài)的。
按連接方式分類(lèi):線性流水線與非線性流水線。
流水線的主要性能及其分析(簡(jiǎn)單應(yīng)用)
在這一節(jié)中,要對(duì)"吞吐率、效率、加速比"這三個(gè)衡量流水線性能的主要指標(biāo)進(jìn)行掌握。
1、吞吐率
吞吐率Tpmax: 指流水線達(dá)到穩(wěn)定狀態(tài)后可獲得的吞吐率。
實(shí)際吞吐率Tp :是指單位時(shí)間內(nèi)能處理的任務(wù)數(shù)或輸出結(jié)果的數(shù)量,它總是小于吞吐率。因?yàn)榱魉€有建立階段和排空階段,以及其他因素會(huì)影響流水線的連續(xù)流動(dòng)。
2、加速比(Sp):采用流水方式后的工作速度與等效的順序串行方式的工作速度之比。
3、效率E:指流水線中各功能段的利用率。
要能夠根據(jù)要求畫(huà)出時(shí)空?qǐng)D,同時(shí)要能夠計(jì)算上面幾個(gè)性能指標(biāo)。
另外,要記一下解決瓶頸的方法:一是將瓶頸子過(guò)程進(jìn)一步細(xì)分成若干子子過(guò)程使每一子子過(guò)程與其他子過(guò)程時(shí)間相等。二是在瓶頸段并聯(lián)設(shè)置多套功能段部件,使它們輪流工作。
三、流水操作中的主要障礙(領(lǐng)會(huì))
要使流水線具有良好的性能。必須設(shè)法使流水線能暢能流動(dòng),但是在流水過(guò)程中會(huì)出現(xiàn)以下三種相關(guān)(也就是沖突的意思)。它們是:資源或結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)和控制相關(guān)。
資源相關(guān)(結(jié)構(gòu)相關(guān)):當(dāng)有多條指令進(jìn)入流水線后在同一機(jī)器周期內(nèi)爭(zhēng)用同一功能部件所發(fā)生的沖突。解決的辦法有兩個(gè),一是停頓一拍流水線。二是重復(fù)設(shè)置被爭(zhēng)用的功能部件來(lái)解決。
數(shù)據(jù)相關(guān)沖突:當(dāng)后繼指令的操作數(shù)剛好是前一指令的運(yùn)算結(jié)果的情況下會(huì)導(dǎo)致數(shù)據(jù)相關(guān)的發(fā)生。因?yàn)楦鳁l指令的重疊操作使原來(lái)的數(shù)據(jù)訪問(wèn)順序發(fā)生了變化。解決的辦法是采用后推法,即遇到數(shù)據(jù)相關(guān)時(shí),就停頓后繼指令的執(zhí)行,直到前面指令的結(jié)果已經(jīng)生成。另一種方法就是采用定向技術(shù)(旁路技術(shù):就是使用專(zhuān)門(mén)設(shè)置的通路將產(chǎn)生的結(jié)果直接送往需要它的地方而不是通過(guò)寄存器再訪問(wèn))
數(shù)據(jù)相關(guān)沖突可分為RAW(Read Ahead of Write ) WAR 、WAW三種類(lèi)型。在按序流動(dòng)的流水線中,只可能出現(xiàn)RAW相關(guān)??赏ㄟ^(guò)定向傳送的方法解決。在非按序流動(dòng)的流水線中,則各種相關(guān)都可能發(fā)生。在RISC機(jī)流水線中,還存在一種裝入延遲。解決這種裝入延遲的辦法是采用硬件聯(lián)鎖或重排指令的優(yōu)化編譯方法。
控制轉(zhuǎn)移沖突:這是很經(jīng)常發(fā)生的沖突,主要是由轉(zhuǎn)移指令引起的,當(dāng)轉(zhuǎn)移發(fā)生時(shí),將使流水線的流動(dòng)受到破壞。為了減少因轉(zhuǎn)移面引起的流水線性能損失,可采用下述方法:
1.盡早判別轉(zhuǎn)移是否發(fā)生,盡早生成轉(zhuǎn)移目標(biāo)地址。(早)
2.預(yù)取轉(zhuǎn)移成功或不成功兩個(gè)控制流方向上的目標(biāo)指令。(預(yù))
3.加快和提前形成條件碼。(快條件)
4.加快短循環(huán)程序的處理。(循環(huán))
5.提高轉(zhuǎn)移方向的猜準(zhǔn)率。(猜準(zhǔn))
6.采用延遲轉(zhuǎn)移技術(shù)(延)
這是一種有效的軟件手段以減少控制相關(guān)造成的流水線性能下降。
為了在延遲槽中填入有效指令,一般可采用以下三種方法:
1)將轉(zhuǎn)移指令前的那條指令調(diào)度到延遲槽中。
2)將轉(zhuǎn)移目標(biāo)處的那條指令調(diào)度到延遲槽中。
3)將轉(zhuǎn)移不發(fā)生時(shí)該執(zhí)行的那條指令調(diào)度到延遲槽中。
四、流水的實(shí)現(xiàn)和控制(綜合應(yīng)用)
現(xiàn)在的流水都采用了精確斷點(diǎn)法。即不論在第i條指令中哪段上發(fā)生的中斷申請(qǐng),中斷處理程序都會(huì)對(duì)斷點(diǎn)處的現(xiàn)場(chǎng)進(jìn)行精確保護(hù)。當(dāng)然這時(shí)需要很多的后援寄存器來(lái)存儲(chǔ)和恢復(fù)。
這一節(jié)的一個(gè)重點(diǎn)是非線性流水線的的靜態(tài)調(diào)度。教材說(shuō)明比較清楚。我們要會(huì)作預(yù)約表、狀態(tài)圖和計(jì)算調(diào)度方案的平均間隔拍數(shù)。這里附帶說(shuō)明一下,圖5.27中的7≥9的意思是指沿著某條路徑間隔拍數(shù)的和大于等于9,并不是指最后一個(gè)間隔7大于等于9.
第二個(gè)重點(diǎn)就是先進(jìn)流水調(diào)度方法——?jiǎng)討B(tài)調(diào)度。動(dòng)態(tài)調(diào)度不需要借助軟件來(lái)對(duì)指令進(jìn)行調(diào)度,而是利用硬件重新安排指令的順序來(lái)減少流水的停頓。
動(dòng)態(tài)流水調(diào)度法又分集中式動(dòng)態(tài)調(diào)度和分布式動(dòng)態(tài)調(diào)度。這兩種調(diào)度法的原理圖及其原理解釋?xiě)?yīng)當(dāng)理解清楚并能夠表達(dá)。
另外,用于預(yù)測(cè)轉(zhuǎn)移目標(biāo)地址的方法,相應(yīng)的硬件轉(zhuǎn)移目標(biāo)緩沖器BTB的圖及工作原理應(yīng)該理解清楚并能表達(dá)。
為了進(jìn)一步提高計(jì)算機(jī)性能,還有各種開(kāi)發(fā)細(xì)粒度并行的方法。有
超級(jí)標(biāo)量方法:就是使每個(gè)時(shí)鐘周期能啟動(dòng)n條指令。
超級(jí)流水方法:就是不到一個(gè)時(shí)鐘周期就啟動(dòng)一條指令。
超長(zhǎng)指令字(Very Long Istruction Word)方法。
這里我們要對(duì)超級(jí)標(biāo)量機(jī)及VLIW機(jī)的結(jié)構(gòu)及其特點(diǎn)進(jìn)行領(lǐng)會(huì)和記憶。
另外還有一種軟件流水方法,它是借用硬件流水思想,使循環(huán)體程序段的執(zhí)行能夠重疊執(zhí)行的方法