




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 2022-4-301第第8 8章章流水線處理技術(shù)流水線處理技術(shù) 2022-4-302本章主要內(nèi)容本章主要內(nèi)容 流水線的基本概念流水線的基本概念 概念、表示方法、特點(diǎn)和分類概念、表示方法、特點(diǎn)和分類 流水線的性能指標(biāo)流水線的性能指標(biāo) 吞吐率、加速比和效率吞吐率、加速比和效率 流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 DLX流水線實(shí)例流水線實(shí)例 流水線的流水線的“相關(guān)相關(guān)”問題問題 結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)和控制相關(guān)結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)和控制相關(guān) 指令級(jí)并行技術(shù)簡(jiǎn)介指令級(jí)并行技術(shù)簡(jiǎn)介 2022-4-303流水線的基本概念流水線的基本概念 不是計(jì)算機(jī)設(shè)計(jì)和實(shí)現(xiàn)領(lǐng)域所特有的技術(shù)不是計(jì)算機(jī)設(shè)計(jì)和實(shí)現(xiàn)領(lǐng)域所特有的技術(shù)在
2、計(jì)算機(jī)還沒有出現(xiàn)以前,工業(yè)生產(chǎn)中早已經(jīng)廣在計(jì)算機(jī)還沒有出現(xiàn)以前,工業(yè)生產(chǎn)中早已經(jīng)廣泛使用流水線方式進(jìn)行生產(chǎn)。泛使用流水線方式進(jìn)行生產(chǎn)。 2022-4-304流水線的基本概念流水線的基本概念 計(jì)算機(jī)中的流水線是把一個(gè)重復(fù)的過程分解為若干個(gè)子過程,每個(gè)子計(jì)算機(jī)中的流水線是把一個(gè)重復(fù)的過程分解為若干個(gè)子過程,每個(gè)子過程與其他子過程并行進(jìn)行。由于這種工作方式與工廠中的生產(chǎn)流水過程與其他子過程并行進(jìn)行。由于這種工作方式與工廠中的生產(chǎn)流水線十分相似,因此稱為線十分相似,因此稱為流水線技術(shù)流水線技術(shù)。 通常,可以從兩個(gè)方面來提高處理機(jī)內(nèi)部的并行性,一個(gè)是所謂的通常,可以從兩個(gè)方面來提高處理機(jī)內(nèi)部的并行性,一
3、個(gè)是所謂的空空間并行性間并行性,即在一個(gè)處理機(jī)內(nèi)設(shè)置多個(gè)獨(dú)立的操作部件,并且使這些,即在一個(gè)處理機(jī)內(nèi)設(shè)置多個(gè)獨(dú)立的操作部件,并且使這些部件并行工作;另一個(gè)是所謂的部件并行工作;另一個(gè)是所謂的時(shí)間并行性時(shí)間并行性,就是采用流水線技術(shù)。,就是采用流水線技術(shù)。流水線技術(shù)是一種非常經(jīng)濟(jì)、對(duì)提高計(jì)算機(jī)的運(yùn)算速度非常有效的技流水線技術(shù)是一種非常經(jīng)濟(jì)、對(duì)提高計(jì)算機(jī)的運(yùn)算速度非常有效的技術(shù)。采用流水線技術(shù)只需增加少量硬件就能把計(jì)算機(jī)的運(yùn)算速度提高術(shù)。采用流水線技術(shù)只需增加少量硬件就能把計(jì)算機(jī)的運(yùn)算速度提高幾倍,成為計(jì)算機(jī)中普遍使用的一種并行處理技術(shù)。幾倍,成為計(jì)算機(jī)中普遍使用的一種并行處理技術(shù)。 計(jì)算機(jī)各個(gè)部
4、分幾乎都可以采用流水線技術(shù),如果指令的執(zhí)行過程可計(jì)算機(jī)各個(gè)部分幾乎都可以采用流水線技術(shù),如果指令的執(zhí)行過程可以采用流水線,那么稱為以采用流水線,那么稱為指令流水線指令流水線。運(yùn)算器中的操作部件,如浮點(diǎn)。運(yùn)算器中的操作部件,如浮點(diǎn)加法器、浮點(diǎn)乘法器等可以采用流水線,稱為加法器、浮點(diǎn)乘法器等可以采用流水線,稱為操作部件流水線操作部件流水線;多個(gè);多個(gè)計(jì)算機(jī)之間,通過存儲(chǔ)器連接,也可以采用流水線,計(jì)算機(jī)之間,通過存儲(chǔ)器連接,也可以采用流水線,稱為宏流水線稱為宏流水線。 2022-4-305流水線的基本概念流水線的基本概念 一條指令的執(zhí)行過程可以分為多個(gè)階段一條指令的執(zhí)行過程可以分為多個(gè)階段取指令:按
5、照指令計(jì)數(shù)器的內(nèi)容訪問主存儲(chǔ)器,取指令:按照指令計(jì)數(shù)器的內(nèi)容訪問主存儲(chǔ)器, 取出一條指令送到指令寄存器。取出一條指令送到指令寄存器。指令分析:對(duì)指令操作碼進(jìn)行譯碼,按照給定的指令分析:對(duì)指令操作碼進(jìn)行譯碼,按照給定的尋址方式和地址字段中的內(nèi)容形成操作數(shù)的地址,尋址方式和地址字段中的內(nèi)容形成操作數(shù)的地址,并用這個(gè)地址讀取操作數(shù)。并用這個(gè)地址讀取操作數(shù)。指令執(zhí)行:根據(jù)操作碼的要求,完成指令規(guī)定的指令執(zhí)行:根據(jù)操作碼的要求,完成指令規(guī)定的功能,即把運(yùn)算結(jié)果寫到通用寄存器或主存中。功能,即把運(yùn)算結(jié)果寫到通用寄存器或主存中。 2022-4-306流水線的基本概念流水線的基本概念 指令的幾種執(zhí)行方式指令的
6、幾種執(zhí)行方式 指令多次重疊執(zhí)行方式實(shí)際上就是指令流水線指令多次重疊執(zhí)行方式實(shí)際上就是指令流水線 2022-4-307流水線的基本概念流水線的基本概念 如果取指令、分析指令、執(zhí)行指令的時(shí)間都相等,如果取指令、分析指令、執(zhí)行指令的時(shí)間都相等,每段的時(shí)間都為每段的時(shí)間都為t,則,則n條指令所用的時(shí)間為:條指令所用的時(shí)間為: 順序執(zhí)行順序執(zhí)行 一次重疊執(zhí)行一次重疊執(zhí)行 兩次重疊執(zhí)行兩次重疊執(zhí)行 ntT3tnT)21 ( tnT)2( 2022-4-308流水線的表示方法流水線的表示方法 流水線的每一個(gè)階段完成一條指令的一部分,不同階段并流水線的每一個(gè)階段完成一條指令的一部分,不同階段并行完成不同指令的
7、不同部分。行完成不同指令的不同部分。 流水線中的每一個(gè)階段稱為一個(gè)流水階段、流水節(jié)拍、流流水線中的每一個(gè)階段稱為一個(gè)流水階段、流水節(jié)拍、流水步、流水段、功能段、流水級(jí)等。一個(gè)流水階段與另一水步、流水段、功能段、流水級(jí)等。一個(gè)流水階段與另一個(gè)流水階段相連接形成流水線。個(gè)流水階段相連接形成流水線。 指令從流水線的一端進(jìn)入,經(jīng)過流水線的處理,從另一端指令從流水線的一端進(jìn)入,經(jīng)過流水線的處理,從另一端流出。目前大部分處理機(jī)的指令流水線在流出。目前大部分處理機(jī)的指令流水線在312段之間。段之間。 流水線常用的兩種表示方法流水線常用的兩種表示方法 流水線連接圖表示法,各個(gè)流水段順序連接在一起流水線連接圖表
8、示法,各個(gè)流水段順序連接在一起 流水線時(shí)空?qǐng)D表示法,直觀描述流水線工作過程流水線時(shí)空?qǐng)D表示法,直觀描述流水線工作過程 2022-4-309 流水線連接圖表示法流水線連接圖表示法流水線的表示方法流水線的表示方法 2022-4-3010流水線的表示方法流水線的表示方法 流水線時(shí)空?qǐng)D表示法流水線時(shí)空?qǐng)D表示法在時(shí)空?qǐng)D中,橫坐標(biāo)表示時(shí)間,也就是輸入到流水線中在時(shí)空?qǐng)D中,橫坐標(biāo)表示時(shí)間,也就是輸入到流水線中的各個(gè)任務(wù)在流水線中所經(jīng)過的時(shí)間。當(dāng)流水線中各個(gè)的各個(gè)任務(wù)在流水線中所經(jīng)過的時(shí)間。當(dāng)流水線中各個(gè)流水段的執(zhí)行時(shí)間都相等時(shí),橫坐標(biāo)被分割成相等長(zhǎng)度流水段的執(zhí)行時(shí)間都相等時(shí),橫坐標(biāo)被分割成相等長(zhǎng)度的時(shí)間段。
9、縱坐標(biāo)表示空間,即流水線的每一個(gè)流水段。的時(shí)間段??v坐標(biāo)表示空間,即流水線的每一個(gè)流水段。 2022-4-3011流水線的特點(diǎn)流水線的特點(diǎn) 第一,把一個(gè)任務(wù)(一條指令或一個(gè)操作)分解為幾個(gè)第一,把一個(gè)任務(wù)(一條指令或一個(gè)操作)分解為幾個(gè)有聯(lián)系的子任務(wù),每個(gè)子任務(wù)由一個(gè)專門的功能部件來有聯(lián)系的子任務(wù),每個(gè)子任務(wù)由一個(gè)專門的功能部件來實(shí)現(xiàn)。實(shí)現(xiàn)。 第二,流水線每一個(gè)功能段部件后面都要有一個(gè)緩沖寄第二,流水線每一個(gè)功能段部件后面都要有一個(gè)緩沖寄存器,或稱為鎖存器,其作用是保存本流水段的結(jié)果。存器,或稱為鎖存器,其作用是保存本流水段的結(jié)果。 2022-4-3012流水線的特點(diǎn)流水線的特點(diǎn) 第三,流水線
10、中各功能段的時(shí)間應(yīng)盡量相等,否第三,流水線中各功能段的時(shí)間應(yīng)盡量相等,否則將引起堵塞、斷流。要求流水線的時(shí)鐘周期不則將引起堵塞、斷流。要求流水線的時(shí)鐘周期不能快于最慢的流水段。能快于最慢的流水段。 第四,只有第四,只有連續(xù)不斷連續(xù)不斷地提供同一種任務(wù)時(shí)才能發(fā)地提供同一種任務(wù)時(shí)才能發(fā)揮流水線的效率,所以在流水線中處理的必須是揮流水線的效率,所以在流水線中處理的必須是連續(xù)任務(wù)。連續(xù)任務(wù)。 第五,流水線需要有第五,流水線需要有裝入時(shí)間裝入時(shí)間和和排空時(shí)間排空時(shí)間。裝入。裝入時(shí)間是指第一個(gè)任務(wù)進(jìn)入流水線到輸出流水線的時(shí)間是指第一個(gè)任務(wù)進(jìn)入流水線到輸出流水線的時(shí)間。排空時(shí)間是指第時(shí)間。排空時(shí)間是指第n個(gè)
11、(最后一個(gè))任務(wù)進(jìn)入個(gè)(最后一個(gè))任務(wù)進(jìn)入流水線到輸出流水線的時(shí)間。流水線到輸出流水線的時(shí)間。 2022-4-3013流水線的分類流水線的分類 部件功能級(jí)流水線部件功能級(jí)流水線所謂功能部件級(jí)流水線也可以稱為運(yùn)算操作流水線(所謂功能部件級(jí)流水線也可以稱為運(yùn)算操作流水線(Arithmetic Pipelines)。前面的浮點(diǎn)加法器就是一種典型的功能部件級(jí)流水線。)。前面的浮點(diǎn)加法器就是一種典型的功能部件級(jí)流水線。 處理機(jī)級(jí)流水線處理機(jī)級(jí)流水線所謂處理機(jī)級(jí)流水線,又叫指令流水線(所謂處理機(jī)級(jí)流水線,又叫指令流水線(Instruction Pipelines),它),它是把解釋指令的過程按照流水方式處
12、理,使處理機(jī)能夠重疊地解釋多是把解釋指令的過程按照流水方式處理,使處理機(jī)能夠重疊地解釋多條指令。條指令。 處理機(jī)間級(jí)流水線處理機(jī)間級(jí)流水線所謂處理機(jī)間流水線,又被稱為宏流水線(所謂處理機(jī)間流水線,又被稱為宏流水線(Macro Pipelines)。這種)。這種流水線由兩個(gè)或者兩個(gè)以上的處理機(jī)通過存儲(chǔ)器串行連接起來,每個(gè)流水線由兩個(gè)或者兩個(gè)以上的處理機(jī)通過存儲(chǔ)器串行連接起來,每個(gè)處理機(jī)完成整個(gè)任務(wù)的一部分。處理機(jī)完成整個(gè)任務(wù)的一部分。 2022-4-3014流水線的分類流水線的分類 單功能流水線單功能流水線如果一條流水線只如果一條流水線只能完成一種固定的能完成一種固定的功能,這種流水線功能,這種
13、流水線稱為單功能流水線。稱為單功能流水線。 多功能流水線多功能流水線多功能流水線是指多功能流水線是指流水線各段可以進(jìn)流水線各段可以進(jìn)行不同的連接。在行不同的連接。在不同時(shí)間內(nèi),或者不同時(shí)間內(nèi),或者在同一時(shí)間內(nèi),通在同一時(shí)間內(nèi),通過不同的連接方式過不同的連接方式實(shí)現(xiàn)不同的功能。實(shí)現(xiàn)不同的功能。 2022-4-3015流水線的分類流水線的分類靜態(tài)流水線靜態(tài)流水線所謂靜態(tài)流水線是指所謂靜態(tài)流水線是指在同一段時(shí)間內(nèi),多在同一段時(shí)間內(nèi),多功能流水線中的各個(gè)功能流水線中的各個(gè)功能段只能夠按照一功能段只能夠按照一種固定的方式連接,種固定的方式連接,實(shí)現(xiàn)一種固定的功能。實(shí)現(xiàn)一種固定的功能。只有當(dāng)按照這種連接只
14、有當(dāng)按照這種連接方式工作的所有任務(wù)方式工作的所有任務(wù)都流出流水線之后,都流出流水線之后,多功能流水線才能重多功能流水線才能重新進(jìn)行連接。新進(jìn)行連接。動(dòng)態(tài)流水線動(dòng)態(tài)流水線而動(dòng)態(tài)流水線是指在而動(dòng)態(tài)流水線是指在同一段時(shí)間內(nèi),多功同一段時(shí)間內(nèi),多功能流水線中的各段可能流水線中的各段可以按照不同的方式連以按照不同的方式連接,同時(shí)執(zhí)行多種功接,同時(shí)執(zhí)行多種功能。這種同時(shí)實(shí)現(xiàn)多能。這種同時(shí)實(shí)現(xiàn)多種連接方式是有條件種連接方式是有條件的,即流水線中的各的,即流水線中的各個(gè)功能部件之間不能個(gè)功能部件之間不能發(fā)生沖突。發(fā)生沖突。 2022-4-3016流水線的分類流水線的分類 線性流水線線性流水線所謂線性流水線是將
15、流水線的各段串行連接起來,沒有反饋回路。所謂線性流水線是將流水線的各段串行連接起來,沒有反饋回路。輸入數(shù)據(jù)從流水線的一端進(jìn)入,從另一端輸出。數(shù)據(jù)在流水線的各輸入數(shù)據(jù)從流水線的一端進(jìn)入,從另一端輸出。數(shù)據(jù)在流水線的各個(gè)功能段流過時(shí),每個(gè)功能段都流過且僅流過一次。個(gè)功能段流過時(shí),每個(gè)功能段都流過且僅流過一次。 非線性流水線非線性流水線而非線性流水線則是在流水線的各個(gè)功能段之間除了有串行的連接而非線性流水線則是在流水線的各個(gè)功能段之間除了有串行的連接之外,還有反饋回路。之外,還有反饋回路。 2022-4-3017流水線的分類流水線的分類 其他的流水線分類方法其他的流水線分類方法按照數(shù)據(jù)表示方式的不同
16、,可以把流水線分為標(biāo)量流水按照數(shù)據(jù)表示方式的不同,可以把流水線分為標(biāo)量流水線(處理機(jī)無向量數(shù)據(jù)表示,僅對(duì)標(biāo)量數(shù)據(jù)進(jìn)行流水處線(處理機(jī)無向量數(shù)據(jù)表示,僅對(duì)標(biāo)量數(shù)據(jù)進(jìn)行流水處理)和向量流水線(處理機(jī)有向量數(shù)據(jù)表示,有向量指理)和向量流水線(處理機(jī)有向量數(shù)據(jù)表示,有向量指令)兩種。本章主要介紹的都是標(biāo)量流水線。令)兩種。本章主要介紹的都是標(biāo)量流水線。在線性流水線中,根據(jù)對(duì)流水線控制方式的不同,可以在線性流水線中,根據(jù)對(duì)流水線控制方式的不同,可以把流水線分為同步流水線和異步流水線兩類。本章中介把流水線分為同步流水線和異步流水線兩類。本章中介紹的都是同步流水線,一般的宏流水線采用異步流水線紹的都是同步流
17、水線,一般的宏流水線采用異步流水線方式。方式。按照流水線輸出端流出的任務(wù)與流水線輸入端流入的任按照流水線輸出端流出的任務(wù)與流水線輸入端流入的任務(wù)的順序是否相同,還可以把流水線分為順序流水線和務(wù)的順序是否相同,還可以把流水線分為順序流水線和亂序流水線(又可稱為錯(cuò)序流水線或者無序流水線)兩亂序流水線(又可稱為錯(cuò)序流水線或者無序流水線)兩種。種。 2022-4-3018流水線的性能指標(biāo)流水線的性能指標(biāo) 衡量流水線性能的主要指標(biāo)有衡量流水線性能的主要指標(biāo)有吞吐率吞吐率、加速比加速比和和效率效率。 流水線設(shè)計(jì)中,流水線的流水線設(shè)計(jì)中,流水線的最佳段數(shù)最佳段數(shù)選擇也是一個(gè)選擇也是一個(gè)重要問題。重要問題。
18、下面以線性流水線為例,分析流水線的主要性能下面以線性流水線為例,分析流水線的主要性能指標(biāo)。其分析方法和有關(guān)公式也適用于非線性流指標(biāo)。其分析方法和有關(guān)公式也適用于非線性流水線。水線。 2022-4-3019流水線的性能指標(biāo)流水線的性能指標(biāo) 流水線的吞吐率流水線的吞吐率吞吐率(吞吐率(Throughput Rate)是衡量流水線速度)是衡量流水線速度的重要指標(biāo)。它是指在單位時(shí)間內(nèi)流水線所完成的重要指標(biāo)。它是指在單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)量,或是輸出結(jié)果的數(shù)量,計(jì)算流水線的任務(wù)數(shù)量,或是輸出結(jié)果的數(shù)量,計(jì)算流水線吞吐率的最基本的公式表示為:吞吐率的最基本的公式表示為:上面公式中,上面公式中,n為
19、任務(wù)數(shù),為任務(wù)數(shù),Tk為處理完成為處理完成n個(gè)任個(gè)任務(wù)所用的時(shí)間。務(wù)所用的時(shí)間。 kTnTP 2022-4-3020流水線的性能指標(biāo)流水線的性能指標(biāo) 流水線的吞吐率流水線的吞吐率各個(gè)流水段執(zhí)行時(shí)間相等的情況,各個(gè)流水段執(zhí)行時(shí)間相等的情況,k為流水線的段數(shù),為流水線的段數(shù), t為時(shí)鐘周期。為時(shí)鐘周期。從流水線輸出端看,用從流水線輸出端看,用k個(gè)時(shí)鐘周期輸出第一個(gè)任務(wù),其余個(gè)時(shí)鐘周期輸出第一個(gè)任務(wù),其余n1個(gè)個(gè)時(shí)鐘周期,每個(gè)時(shí)鐘周期輸出一個(gè)任務(wù),即用時(shí)鐘周期,每個(gè)時(shí)鐘周期輸出一個(gè)任務(wù),即用n1個(gè)時(shí)鐘周期輸出個(gè)時(shí)鐘周期輸出n1個(gè)任務(wù)。因此,流水線完成個(gè)任務(wù)。因此,流水線完成n個(gè)連續(xù)任務(wù)需要的總時(shí)間為
20、:個(gè)連續(xù)任務(wù)需要的總時(shí)間為: tnkTk) 1( 2022-4-3021流水線的性能指標(biāo)流水線的性能指標(biāo) 流水線的吞吐率流水線的吞吐率流水線的實(shí)際吞吐率為:流水線的實(shí)際吞吐率為:當(dāng)連續(xù)輸入的任務(wù)當(dāng)連續(xù)輸入的任務(wù)n時(shí),得最大吞吐率為:時(shí),得最大吞吐率為:最大吞吐率與實(shí)際吞吐率的關(guān)系是:最大吞吐率與實(shí)際吞吐率的關(guān)系是: tnknTP) 1(ttnknLimTPn1)1(maxmax) 1(TPnknTP 2022-4-3022流水線的性能指標(biāo)流水線的性能指標(biāo) 流水線的加速比流水線的加速比完成同樣一批任務(wù),不使用流水線所用的時(shí)間與完成同樣一批任務(wù),不使用流水線所用的時(shí)間與使用流水線所用的時(shí)間之比稱為
21、流水線的加速比使用流水線所用的時(shí)間之比稱為流水線的加速比(Speedup Ratio)。)。設(shè)設(shè)T0表示不使用流水線,即順序執(zhí)行所用的時(shí)間,表示不使用流水線,即順序執(zhí)行所用的時(shí)間,Tk表示使用流水線時(shí)的執(zhí)行時(shí)間,則流水線加速表示使用流水線時(shí)的執(zhí)行時(shí)間,則流水線加速比比S的基本公式為:的基本公式為: kTTS0 2022-4-3023流水線的性能指標(biāo)流水線的性能指標(biāo) 流水線的加速比流水線的加速比如果流水線各段執(zhí)行時(shí)間都相等,則一條如果流水線各段執(zhí)行時(shí)間都相等,則一條k段流段流水線完成水線完成n個(gè)連續(xù)任務(wù)實(shí)際加速比為:個(gè)連續(xù)任務(wù)實(shí)際加速比為:上述情況下的最大加速比為:上述情況下的最大加速比為: 1
22、) 1(nkkntnktknSknkknLimSn1max 2022-4-3024流水線的性能指標(biāo)流水線的性能指標(biāo) 流水線的效率流水線的效率流水線的設(shè)備利用率稱為流水線的效率(流水線的設(shè)備利用率稱為流水線的效率(Efficiency)。)。在時(shí)空?qǐng)D上,流水線的效率定義為完成在時(shí)空?qǐng)D上,流水線的效率定義為完成n個(gè)任務(wù)占用的時(shí)個(gè)任務(wù)占用的時(shí)空區(qū)有效面積與空區(qū)有效面積與n個(gè)任務(wù)所用的時(shí)間與個(gè)任務(wù)所用的時(shí)間與k個(gè)流水段所圍成個(gè)流水段所圍成的時(shí)空區(qū)總面積之比。因此,流水線的效率包含了時(shí)間的時(shí)空區(qū)總面積之比。因此,流水線的效率包含了時(shí)間和空間兩個(gè)因素。和空間兩個(gè)因素。n個(gè)任務(wù)占用的時(shí)空區(qū)有效面積就是順序執(zhí)
23、行個(gè)任務(wù)占用的時(shí)空區(qū)有效面積就是順序執(zhí)行n個(gè)任務(wù)所個(gè)任務(wù)所使用的總的時(shí)間使用的總的時(shí)間T0,而,而n個(gè)任務(wù)所用的時(shí)間與個(gè)任務(wù)所用的時(shí)間與k個(gè)流水段個(gè)流水段所圍成的時(shí)空區(qū)總面積為所圍成的時(shí)空區(qū)總面積為kTk,其中,其中Tk是流水線完成是流水線完成n個(gè)個(gè)任務(wù)所使用的總時(shí)間,計(jì)算流水線效率的一般公式可以任務(wù)所使用的總時(shí)間,計(jì)算流水線效率的一般公式可以表示為:表示為:kkTTknnE0總面積個(gè)流水段所圍的時(shí)空區(qū)效面積個(gè)任務(wù)占用的時(shí)空區(qū)有個(gè)任務(wù)所用的時(shí)間與 2022-4-3025流水線的性能指標(biāo)流水線的性能指標(biāo) 流水線的效率流水線的效率如果流水線的各段執(zhí)行時(shí)間均相等,而且輸入的如果流水線的各段執(zhí)行時(shí)間均
24、相等,而且輸入的n個(gè)任務(wù)是連續(xù)的,則一條個(gè)任務(wù)是連續(xù)的,則一條k段流水線的效率為:段流水線的效率為:在流水線的各段執(zhí)行時(shí)間均相等,輸入到流水線在流水線的各段執(zhí)行時(shí)間均相等,輸入到流水線的任務(wù)是連續(xù)的情況下,流水線的最高效率為:的任務(wù)是連續(xù)的情況下,流水線的最高效率為: 1) 1(nkntnkktknE11maxnknLimEn 2022-4-3026流水線的性能指標(biāo)流水線的性能指標(biāo) 流水線的最佳段數(shù)流水線的最佳段數(shù)增加流水線段數(shù)增加流水線段數(shù)k時(shí),流水線的吞吐率和加速比時(shí),流水線的吞吐率和加速比都能提高。但是每一流水段輸出端必須設(shè)置一個(gè)都能提高。但是每一流水段輸出端必須設(shè)置一個(gè)鎖存器,當(dāng)流水段
25、數(shù)增多時(shí),鎖存器的總延遲時(shí)鎖存器,當(dāng)流水段數(shù)增多時(shí),鎖存器的總延遲時(shí)間也將增加;并且流水線的價(jià)格也會(huì)增加。為此,間也將增加;并且流水線的價(jià)格也會(huì)增加。為此,要綜合考慮各方面的因素,根據(jù)總價(jià)性能價(jià)格比要綜合考慮各方面的因素,根據(jù)總價(jià)性能價(jià)格比來選擇流水線最佳段數(shù)。來選擇流水線最佳段數(shù)。目前,一般處理機(jī)中的流水線段數(shù)在目前,一般處理機(jī)中的流水線段數(shù)在3到到12之間,之間,極少有超過極少有超過15段的流水線。一般把段的流水線。一般把8段或超過段或超過8段段的流水線稱為超流水線,采用的流水線稱為超流水線,采用8段以上流水線的段以上流水線的處理機(jī)有時(shí)也稱為超流水線處理機(jī)。處理機(jī)有時(shí)也稱為超流水線處理機(jī)。
26、 2022-4-3027流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 DLX指令集結(jié)構(gòu)指令集結(jié)構(gòu)DLX(讀做(讀做Deluxe)是一種)是一種LoadStore型指令型指令集結(jié)構(gòu)。所謂集結(jié)構(gòu)。所謂LoadStore型又稱為寄存器寄型又稱為寄存器寄存器型,是指對(duì)通用寄存器型指令集而言,其所存器型,是指對(duì)通用寄存器型指令集而言,其所有的有的ALU指令都不包含存儲(chǔ)器操作數(shù)。指令都不包含存儲(chǔ)器操作數(shù)。DLX強(qiáng)調(diào):簡(jiǎn)單的強(qiáng)調(diào):簡(jiǎn)單的LoadStore指令集;設(shè)計(jì)上指令集;設(shè)計(jì)上重視流水線效率,包括固定長(zhǎng)度指令編碼;使編重視流水線效率,包括固定長(zhǎng)度指令編碼;使編譯器更容易產(chǎn)生高效的目標(biāo)代碼。總之,譯器更容易產(chǎn)生高效的
27、目標(biāo)代碼??傊珼LX是是一種適合于學(xué)習(xí)和研究的系統(tǒng)結(jié)構(gòu)模型。一種適合于學(xué)習(xí)和研究的系統(tǒng)結(jié)構(gòu)模型。 DLX指令格式指令格式 2022-4-3028流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 2022-4-3029流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 DLX的一種簡(jiǎn)單實(shí)現(xiàn)的一種簡(jiǎn)單實(shí)現(xiàn)每一條每一條DLX指令的實(shí)現(xiàn)至多需要指令的實(shí)現(xiàn)至多需要5個(gè)時(shí)鐘周期。這個(gè)時(shí)鐘周期。這5個(gè)時(shí)個(gè)時(shí)鐘周期如下:鐘周期如下:取指令周期(IF)指令譯碼讀寄存器周期(ID) 執(zhí)行有效地址計(jì)算周期(EX) 存儲(chǔ)器訪問分支完成周期(MEM) 寫回周期(WB)不同類型的指令在以上不同類型的指令在以上5個(gè)時(shí)鐘周期中進(jìn)行的操作各不相個(gè)時(shí)鐘周期中進(jìn)
28、行的操作各不相同。同。在這種實(shí)現(xiàn)方案中,分支指令需要在這種實(shí)現(xiàn)方案中,分支指令需要4個(gè)時(shí)鐘周期,而其他個(gè)時(shí)鐘周期,而其他指令需要指令需要5個(gè)時(shí)鐘周期。個(gè)時(shí)鐘周期。 2022-4-3030流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 DLX的一種簡(jiǎn)單實(shí)現(xiàn)的一種簡(jiǎn)單實(shí)現(xiàn) 2022-4-3031流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 簡(jiǎn)單的簡(jiǎn)單的DLX基本流水線基本流水線 每一個(gè)時(shí)鐘周期啟動(dòng)一條新的指令,就可以使每一個(gè)時(shí)鐘周期啟動(dòng)一條新的指令,就可以使DLX數(shù)據(jù)通路成功流水,每一個(gè)時(shí)鐘周期就是流水線的一數(shù)據(jù)通路成功流水,每一個(gè)時(shí)鐘周期就是流水線的一個(gè)流水段。每一條指令經(jīng)過個(gè)流水段。每一條指令經(jīng)過5個(gè)時(shí)鐘周期執(zhí)行完成,
29、個(gè)時(shí)鐘周期執(zhí)行完成,而在每一個(gè)時(shí)鐘周期內(nèi),硬件將啟動(dòng)一條新的指令并而在每一個(gè)時(shí)鐘周期內(nèi),硬件將啟動(dòng)一條新的指令并執(zhí)行執(zhí)行5條不同指令的某個(gè)部分。條不同指令的某個(gè)部分。 2022-4-3032流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理實(shí)際的流水線就這么簡(jiǎn)單嗎?實(shí)際的流水線就這么簡(jiǎn)單嗎?NO! 必須保證在指令重疊執(zhí)行時(shí)不會(huì)存在任何流水線資源沖突問題,必須保證在指令重疊執(zhí)行時(shí)不會(huì)存在任何流水線資源沖突問題,即要保證流水線的各段在同一個(gè)時(shí)鐘周期內(nèi)不會(huì)使用相同的數(shù)即要保證流水線的各段在同一個(gè)時(shí)鐘周期內(nèi)不會(huì)使用相同的數(shù)據(jù)通路資源。據(jù)通路資源。簡(jiǎn)化的簡(jiǎn)化的DLX流水線數(shù)據(jù)通路流水線數(shù)據(jù)通路 下圖從使用流水線資源的角度
30、描述上述流水線的流水過程,這下圖從使用流水線資源的角度描述上述流水線的流水過程,這張圖顯示了不同數(shù)據(jù)通路的重疊,其中周期張圖顯示了不同數(shù)據(jù)通路的重疊,其中周期5表示穩(wěn)定狀態(tài)。表示穩(wěn)定狀態(tài)。 在包圍每個(gè)流水段的線框中,如果實(shí)線在右側(cè),說明是讀操作;在包圍每個(gè)流水段的線框中,如果實(shí)線在右側(cè),說明是讀操作;如果實(shí)線在左側(cè),說明是寫操作;其他部分用虛線。如果實(shí)線在左側(cè),說明是寫操作;其他部分用虛線。 主要的功能部件都在不同的時(shí)鐘周期內(nèi)使用,因而多條指令重主要的功能部件都在不同的時(shí)鐘周期內(nèi)使用,因而多條指令重疊執(zhí)行時(shí)引入的沖突疊執(zhí)行時(shí)引入的沖突很少 。 分開的指令存儲(chǔ)器(分開的指令存儲(chǔ)器(IM)和數(shù)據(jù)存
31、儲(chǔ)器()和數(shù)據(jù)存儲(chǔ)器(DM)。)。對(duì)存儲(chǔ)器對(duì)存儲(chǔ)器性能要求?性能要求? 在兩個(gè)流水線段都使用了寄存器:在兩個(gè)流水線段都使用了寄存器:ID段讀,段讀,WB段寫。這兩段寫。這兩個(gè)流水段使用的寄存器一般是不同的。個(gè)流水段使用的寄存器一般是不同的。如果讀寫相同的寄存如果讀寫相同的寄存器呢?器呢? 沒有考慮沒有考慮PC的問題,流水要求的問題,流水要求IF段要形成新的段要形成新的PC值。值。如何如何處理分支指令呢?處理分支指令呢? 2022-4-3033流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 簡(jiǎn)化的簡(jiǎn)化的DLX流水線數(shù)據(jù)通路流水線數(shù)據(jù)通路 2022-4-3034流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 DLX流水線數(shù)據(jù)
32、通路流水線數(shù)據(jù)通路 2022-4-3035流水線的實(shí)現(xiàn)原理流水線的實(shí)現(xiàn)原理 DLX流水線數(shù)據(jù)通路流水線數(shù)據(jù)通路在流水線的各個(gè)流水段之間加入了被稱為流水線寄存器(流水線鎖在流水線的各個(gè)流水段之間加入了被稱為流水線寄存器(流水線鎖存器)的寄存器堆,并在這些寄存器堆上標(biāo)明所連接的流水段。存器)的寄存器堆,并在這些寄存器堆上標(biāo)明所連接的流水段。所有用于在同一條指令的各個(gè)時(shí)鐘周期之間保存臨時(shí)數(shù)據(jù)的寄所有用于在同一條指令的各個(gè)時(shí)鐘周期之間保存臨時(shí)數(shù)據(jù)的寄存器,都?xì)w入流水線寄存器這一類中。存器,都?xì)w入流水線寄存器這一類中。流水線寄存器保存著從一個(gè)流水段傳送到下一個(gè)流水段的所有流水線寄存器保存著從一個(gè)流水段傳
33、送到下一個(gè)流水段的所有數(shù)據(jù)和控制信息。數(shù)據(jù)和控制信息。PC值多路選擇器被移到值多路選擇器被移到IF段,這樣做的目的是保證對(duì)段,這樣做的目的是保證對(duì)PC值的寫操值的寫操作只出現(xiàn)在一個(gè)流水段內(nèi),否則當(dāng)分支轉(zhuǎn)移成功的時(shí)候,流水線中作只出現(xiàn)在一個(gè)流水段內(nèi),否則當(dāng)分支轉(zhuǎn)移成功的時(shí)候,流水線中兩條指令都試圖在不同的流水段修改兩條指令都試圖在不同的流水段修改PC值,從而發(fā)生寫沖突。值,從而發(fā)生寫沖突。每個(gè)時(shí)刻,每條指令都只在一個(gè)流水段上是活動(dòng)的,因此,任何指每個(gè)時(shí)刻,每條指令都只在一個(gè)流水段上是活動(dòng)的,因此,任何指令所作的任何動(dòng)作都發(fā)生在一對(duì)流水線寄存器之間,具體操作由指令所作的任何動(dòng)作都發(fā)生在一對(duì)流水線寄
34、存器之間,具體操作由指令類型決定。令類型決定。 2022-4-3036流水線的相關(guān)問題流水線的相關(guān)問題 什么是流水線中的什么是流水線中的“相關(guān)相關(guān)”?在流水線中經(jīng)常有一些被稱為在流水線中經(jīng)常有一些被稱為“相關(guān)相關(guān)”的情況發(fā)生,它使得指令序的情況發(fā)生,它使得指令序列中下一條指令無法按照設(shè)計(jì)的時(shí)鐘周期執(zhí)行,這些列中下一條指令無法按照設(shè)計(jì)的時(shí)鐘周期執(zhí)行,這些“相關(guān)相關(guān)”可能可能會(huì)降低流水線可以獲得的理想性能。會(huì)降低流水線可以獲得的理想性能。 流水線中的相關(guān)可以分為以下三種類型流水線中的相關(guān)可以分為以下三種類型第一種是第一種是結(jié)構(gòu)相關(guān)結(jié)構(gòu)相關(guān),是指令在重疊執(zhí)行的過程中,硬件資源滿足不,是指令在重疊執(zhí)行
35、的過程中,硬件資源滿足不了指令重疊執(zhí)行的要求,發(fā)生硬件資源沖突而產(chǎn)生的相關(guān)。了指令重疊執(zhí)行的要求,發(fā)生硬件資源沖突而產(chǎn)生的相關(guān)。第二種是第二種是數(shù)據(jù)相關(guān)數(shù)據(jù)相關(guān),是指在同時(shí)重疊執(zhí)行的幾條指令中,一條指令,是指在同時(shí)重疊執(zhí)行的幾條指令中,一條指令依賴于前面指令執(zhí)行結(jié)果數(shù)據(jù),但是又得不到時(shí)發(fā)生的相關(guān)。依賴于前面指令執(zhí)行結(jié)果數(shù)據(jù),但是又得不到時(shí)發(fā)生的相關(guān)。第三種是第三種是控制相關(guān)控制相關(guān),它是指流水線中的分支指令或者其他需要改寫,它是指流水線中的分支指令或者其他需要改寫PC的指令造成的相關(guān)。的指令造成的相關(guān)。 解決流水線中解決流水線中“相關(guān)相關(guān)”問題的重要性問題的重要性流水線相關(guān)問題是流水線執(zhí)行過程
36、中的主要障礙,會(huì)給流水線中指流水線相關(guān)問題是流水線執(zhí)行過程中的主要障礙,會(huì)給流水線中指令序列的順利執(zhí)行帶來許多不利的影響。如果不能較好的處理流水令序列的順利執(zhí)行帶來許多不利的影響。如果不能較好的處理流水線相關(guān)問題,就可能影響流水線的性能,甚至使程序運(yùn)行產(chǎn)生錯(cuò)誤線相關(guān)問題,就可能影響流水線的性能,甚至使程序運(yùn)行產(chǎn)生錯(cuò)誤的結(jié)果。的結(jié)果。 2022-4-3037結(jié)構(gòu)相關(guān)和相應(yīng)解決方法結(jié)構(gòu)相關(guān)和相應(yīng)解決方法如果因資源沖突而無法使用某種指令組合,那么就稱該流水線產(chǎn)生了如果因資源沖突而無法使用某種指令組合,那么就稱該流水線產(chǎn)生了結(jié)構(gòu)相結(jié)構(gòu)相關(guān)關(guān)。例如:指令和數(shù)據(jù)都共享一個(gè)存儲(chǔ)器,在某個(gè)時(shí)鐘周期內(nèi),流水線既
37、要。例如:指令和數(shù)據(jù)都共享一個(gè)存儲(chǔ)器,在某個(gè)時(shí)鐘周期內(nèi),流水線既要完成某條指令對(duì)數(shù)據(jù)的存儲(chǔ)器訪問操作,又要完成后續(xù)的另一條指令的取指完成某條指令對(duì)數(shù)據(jù)的存儲(chǔ)器訪問操作,又要完成后續(xù)的另一條指令的取指令操作,這樣就會(huì)發(fā)生存儲(chǔ)器訪問沖突問題,產(chǎn)生結(jié)構(gòu)相關(guān)。令操作,這樣就會(huì)發(fā)生存儲(chǔ)器訪問沖突問題,產(chǎn)生結(jié)構(gòu)相關(guān)。 2022-4-3038結(jié)構(gòu)相關(guān)和相應(yīng)解決方法結(jié)構(gòu)相關(guān)和相應(yīng)解決方法 消除結(jié)構(gòu)相關(guān)的最簡(jiǎn)單方法就是引入暫停周期,如下圖所示,這必然消除結(jié)構(gòu)相關(guān)的最簡(jiǎn)單方法就是引入暫停周期,如下圖所示,這必然要降低流水線的性能。要降低流水線的性能。 2022-4-3039結(jié)構(gòu)相關(guān)和相應(yīng)解決方法結(jié)構(gòu)相關(guān)和相應(yīng)解決
38、方法 解決結(jié)構(gòu)相關(guān)的基本方法解決結(jié)構(gòu)相關(guān)的基本方法結(jié)構(gòu)相關(guān)的起因是資源爭(zhēng)用,那么可以考慮采用資源充結(jié)構(gòu)相關(guān)的起因是資源爭(zhēng)用,那么可以考慮采用資源充分重復(fù)設(shè)置的方法來避免結(jié)構(gòu)相關(guān)。分重復(fù)設(shè)置的方法來避免結(jié)構(gòu)相關(guān)。 解決存儲(chǔ)器爭(zhēng)用沖突的辦法解決存儲(chǔ)器爭(zhēng)用沖突的辦法(1)如果指令和數(shù)據(jù)放在同一個(gè)存儲(chǔ)器,可使用雙端口存如果指令和數(shù)據(jù)放在同一個(gè)存儲(chǔ)器,可使用雙端口存儲(chǔ)器,其中一個(gè)端口存取數(shù)據(jù),另一個(gè)端口取指令。儲(chǔ)器,其中一個(gè)端口存取數(shù)據(jù),另一個(gè)端口取指令。(2)設(shè)置兩個(gè)存儲(chǔ)器,其中一個(gè)作為數(shù)據(jù)存儲(chǔ)器,另一個(gè)設(shè)置兩個(gè)存儲(chǔ)器,其中一個(gè)作為數(shù)據(jù)存儲(chǔ)器,另一個(gè)作為指令存儲(chǔ)器。作為指令存儲(chǔ)器。上述兩種方案中,取指
39、令和訪問數(shù)據(jù)可以并行進(jìn)行,不上述兩種方案中,取指令和訪問數(shù)據(jù)可以并行進(jìn)行,不會(huì)發(fā)生結(jié)構(gòu)相關(guān)。會(huì)發(fā)生結(jié)構(gòu)相關(guān)。 2022-4-3040數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法 流水線技術(shù)可以通過指令的流水線技術(shù)可以通過指令的重疊執(zhí)行重疊執(zhí)行來改變指令的來改變指令的相對(duì)執(zhí)行時(shí)間相對(duì)執(zhí)行時(shí)間,這,這就可能導(dǎo)致流水線中的指令序列就可能導(dǎo)致流水線中的指令序列讀寫操作數(shù)的順序讀寫操作數(shù)的順序發(fā)生改變,而不同發(fā)生改變,而不同于非流水線時(shí)的指令序列讀寫操作數(shù)的順序。示例如下:于非流水線時(shí)的指令序列讀寫操作數(shù)的順序。示例如下: 2022-4-3041數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法定向定向(旁路
40、旁路)技術(shù)技術(shù)解決數(shù)據(jù)相關(guān),主要思想是:在某條指令產(chǎn)生一個(gè)計(jì)算結(jié)果之解決數(shù)據(jù)相關(guān),主要思想是:在某條指令產(chǎn)生一個(gè)計(jì)算結(jié)果之前,其他指令并不真正需要使用這個(gè)計(jì)算結(jié)果,如果能夠從這個(gè)計(jì)算結(jié)果產(chǎn)前,其他指令并不真正需要使用這個(gè)計(jì)算結(jié)果,如果能夠從這個(gè)計(jì)算結(jié)果產(chǎn)生的地方直接將它送到后續(xù)指令需要使用它的地方,那么就可以避免暫停生的地方直接將它送到后續(xù)指令需要使用它的地方,那么就可以避免暫停 2022-4-3042數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法 定向技術(shù)對(duì)定向技術(shù)對(duì)DLX相應(yīng)數(shù)據(jù)通路的修改相應(yīng)數(shù)據(jù)通路的修改 2022-4-3043數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法 按照指令讀寫寄存
41、器順序?qū)?shù)據(jù)相關(guān)分類按照指令讀寫寄存器順序?qū)?shù)據(jù)相關(guān)分類對(duì)于兩條指令對(duì)于兩條指令i和和j,假設(shè)指令,假設(shè)指令i在在j之前進(jìn)入流水線,下面之前進(jìn)入流水線,下面討論幾種不同的數(shù)據(jù)相關(guān)。討論幾種不同的數(shù)據(jù)相關(guān)。 寫后讀相關(guān)(寫后讀相關(guān)(RAW:Read After Write)指令指令j的執(zhí)行需要使用指令的執(zhí)行需要使用指令i的計(jì)算結(jié)果,但是當(dāng)它們?cè)诹鞯挠?jì)算結(jié)果,但是當(dāng)它們?cè)诹魉€中重疊執(zhí)行時(shí),指令水線中重疊執(zhí)行時(shí),指令j可能在指令可能在指令i將其計(jì)算結(jié)果寫入將其計(jì)算結(jié)果寫入之前就先行對(duì)保存該計(jì)算結(jié)果的寄存器進(jìn)行了讀操作,之前就先行對(duì)保存該計(jì)算結(jié)果的寄存器進(jìn)行了讀操作,這樣指令這樣指令j讀出的寄存器值
42、就是錯(cuò)誤的。讀出的寄存器值就是錯(cuò)誤的。這是最常見的一種數(shù)據(jù)相關(guān),采用定向技術(shù)消除的數(shù)據(jù)這是最常見的一種數(shù)據(jù)相關(guān),采用定向技術(shù)消除的數(shù)據(jù)相關(guān)就屬于這種類型。相關(guān)就屬于這種類型。 2022-4-3044數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法寫后寫相關(guān)(寫后寫相關(guān)(WAW:Write After Write) 指令指令j和指令和指令i的目的操作數(shù)相同,但是當(dāng)它們?cè)诹魉€中重疊執(zhí)行時(shí),的目的操作數(shù)相同,但是當(dāng)它們?cè)诹魉€中重疊執(zhí)行時(shí),指令指令j可能在指令可能在指令i將其計(jì)算結(jié)果寫入之前就先行對(duì)保存該計(jì)算結(jié)果的將其計(jì)算結(jié)果寫入之前就先行對(duì)保存該計(jì)算結(jié)果的寄存器進(jìn)行了寫操作,這樣就導(dǎo)致了寄存器寫入順
43、序的錯(cuò)誤,此時(shí),寄存器進(jìn)行了寫操作,這樣就導(dǎo)致了寄存器寫入順序的錯(cuò)誤,此時(shí),目的寄存器的內(nèi)容是指令目的寄存器的內(nèi)容是指令i寫入的值,而不是指令寫入的值,而不是指令j寫入的值。寫入的值。DLX中不會(huì)發(fā)生中不會(huì)發(fā)生WAW相關(guān)相關(guān) 如果在流水線中不只一個(gè)流水段可以進(jìn)行寫操作,或者當(dāng)流水線暫如果在流水線中不只一個(gè)流水段可以進(jìn)行寫操作,或者當(dāng)流水線暫停某條指令的執(zhí)行時(shí),允許該指令之后的其他指令繼續(xù)執(zhí)行,就可停某條指令的執(zhí)行時(shí),允許該指令之后的其他指令繼續(xù)執(zhí)行,就可能發(fā)生這種數(shù)據(jù)相關(guān)。但是能發(fā)生這種數(shù)據(jù)相關(guān)。但是DLX流水線中的指令是不會(huì)發(fā)生這種數(shù)流水線中的指令是不會(huì)發(fā)生這種數(shù)據(jù)相關(guān)的,因?yàn)閾?jù)相關(guān)的,因?yàn)?/p>
44、DLX流水中只有流水中只有WB段才會(huì)寫寄存器。段才會(huì)寫寄存器。 如果對(duì)如果對(duì)DLX流水線進(jìn)行改變,將流水線進(jìn)行改變,將ALU運(yùn)算結(jié)果的寫回操作移到運(yùn)算結(jié)果的寫回操作移到MEM段進(jìn)行,因?yàn)檫@時(shí)計(jì)算結(jié)果已經(jīng)有效,同時(shí)再假定訪問數(shù)據(jù)存段進(jìn)行,因?yàn)檫@時(shí)計(jì)算結(jié)果已經(jīng)有效,同時(shí)再假定訪問數(shù)據(jù)存儲(chǔ)器需要兩個(gè)流水段,那么儲(chǔ)器需要兩個(gè)流水段,那么DLX流水線中執(zhí)行的指令就可能發(fā)生流水線中執(zhí)行的指令就可能發(fā)生WAW相關(guān)。相關(guān)。LW R1,0(R2)IFIDEXMEM1MEM2WBADD R1,R2,R3IFIDEXWB 2022-4-3045數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法讀后寫相關(guān)(讀后寫相關(guān)(WA
45、R:Write After Read) 指令指令j可能在指令可能在指令i讀取某個(gè)源寄存器的內(nèi)容之前就對(duì)該寄存器進(jìn)讀取某個(gè)源寄存器的內(nèi)容之前就對(duì)該寄存器進(jìn)行了寫操作,結(jié)果就是導(dǎo)致了指令行了寫操作,結(jié)果就是導(dǎo)致了指令i后來讀取的值是錯(cuò)誤的。后來讀取的值是錯(cuò)誤的。DLX中不會(huì)發(fā)生中不會(huì)發(fā)生WAR相關(guān)相關(guān) 因?yàn)橐驗(yàn)镈LX流水線在流水線在ID段完成所有的讀操作,而在段完成所有的讀操作,而在WB段完成所有段完成所有的寫操作。的寫操作。 但是在上面修改后的但是在上面修改后的DLX流水線中,是有可能發(fā)生這種數(shù)據(jù)相流水線中,是有可能發(fā)生這種數(shù)據(jù)相關(guān)的,觀察下面的兩條指令的執(zhí)行情況,如果關(guān)的,觀察下面的兩條指令的
46、執(zhí)行情況,如果SW指令在指令在MEM2的后半部分讀取寄存器的后半部分讀取寄存器R2的值,的值,ADD指令在指令在WB段的前半部分段的前半部分將計(jì)算結(jié)果寫回到寄存器將計(jì)算結(jié)果寫回到寄存器R2,那么,那么SW讀取的寄存器值就是錯(cuò)誤讀取的寄存器值就是錯(cuò)誤的,這個(gè)值是的,這個(gè)值是ADD指令的計(jì)算結(jié)果,并不是預(yù)期的結(jié)果。指令的計(jì)算結(jié)果,并不是預(yù)期的結(jié)果。SW 0(R5),),R2IFIDEXMEM1MEM2WBADD R2,R3,R4IFIDEXWB 2022-4-3046數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法 必須進(jìn)行暫停的數(shù)據(jù)相關(guān)必須進(jìn)行暫停的數(shù)據(jù)相關(guān) 2022-4-3047數(shù)據(jù)相關(guān)和相應(yīng)解決
47、方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法 為了保證流水線能夠正確執(zhí)行上述的指令序列,需要加入一種稱為為了保證流水線能夠正確執(zhí)行上述的指令序列,需要加入一種稱為“流水線互鎖流水線互鎖” 的新功能部件。通常,流水線互鎖檢測(cè)到上述的數(shù)據(jù)的新功能部件。通常,流水線互鎖檢測(cè)到上述的數(shù)據(jù)相關(guān)后就暫停流水線,直到能夠通過定向技術(shù)解決數(shù)據(jù)相關(guān)為止。相關(guān)后就暫停流水線,直到能夠通過定向技術(shù)解決數(shù)據(jù)相關(guān)為止。 2022-4-3048數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法編譯器調(diào)度方法處理數(shù)據(jù)相關(guān)編譯器調(diào)度方法處理數(shù)據(jù)相關(guān) 例如對(duì)于最常見的例如對(duì)于最常見的ABC這樣的操作形式,采用比較典型的代碼生成這樣的操作形式,采用比較
48、典型的代碼生成方法可以得到如下的指令序列:方法可以得到如下的指令序列:LWR1, BLWR2, CADDR3, R1, R2SWA, R3 這個(gè)指令序列的流水線時(shí)空?qǐng)D這個(gè)指令序列的流水線時(shí)空?qǐng)D 2022-4-3049數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法 編譯器調(diào)度方法處理數(shù)據(jù)相關(guān)編譯器調(diào)度方法處理數(shù)據(jù)相關(guān)編譯器是如何通過指令調(diào)度來消除流水線暫停的呢?例如有下面連編譯器是如何通過指令調(diào)度來消除流水線暫停的呢?例如有下面連續(xù)的兩個(gè)操作:續(xù)的兩個(gè)操作:abc;def;指令調(diào)度前后代碼對(duì)比(左:調(diào)度前,右:調(diào)度后)指令調(diào)度前后代碼對(duì)比(左:調(diào)度前,右:調(diào)度后)LW LW RbRb,b bLW
49、LW RcRc,c cADD RaADD Ra,RbRb,RcRcSW aSW a,RaRaLW ReLW Re,e eLW LW RfRf,f fSUB RdSUB Rd,ReRe,RfRfSW dSW d,RdRdLW LW RbRb,b bLW LW RcRc,c cLW ReLW Re,e e ;交換指令,消除;交換指令,消除ADDADD指令暫停指令暫停ADD RaADD Ra,RbRb,RcRcLW LW RfRf,f fSW aSW a,Ra Ra ;Store/LoadStore/Load交換,消除交換,消除SUBSUB指令暫停指令暫停SUB RdSUB Rd,ReRe,RfRf
50、SW dSW d,RdRd 2022-4-3050數(shù)據(jù)相關(guān)和相應(yīng)解決方法數(shù)據(jù)相關(guān)和相應(yīng)解決方法 數(shù)據(jù)相關(guān)的動(dòng)態(tài)調(diào)度數(shù)據(jù)相關(guān)的動(dòng)態(tài)調(diào)度這種方法是由硬件動(dòng)態(tài)調(diào)整指令這種方法是由硬件動(dòng)態(tài)調(diào)整指令執(zhí)行順序執(zhí)行順序以減少暫停的以減少暫停的影響,能夠簡(jiǎn)化編譯器設(shè)計(jì)。影響,能夠簡(jiǎn)化編譯器設(shè)計(jì)。動(dòng)態(tài)調(diào)度并不能真正消除數(shù)據(jù)相關(guān),但它能在出現(xiàn)數(shù)據(jù)動(dòng)態(tài)調(diào)度并不能真正消除數(shù)據(jù)相關(guān),但它能在出現(xiàn)數(shù)據(jù)相關(guān)時(shí)盡量避免出現(xiàn)處理器暫停。而靜態(tài)調(diào)度方法則是相關(guān)時(shí)盡量避免出現(xiàn)處理器暫停。而靜態(tài)調(diào)度方法則是盡量通過分離有相關(guān)問題的指令使它們不會(huì)導(dǎo)致沖突,盡量通過分離有相關(guān)問題的指令使它們不會(huì)導(dǎo)致沖突,從而減少暫停的影響。從而減少暫停
51、的影響。 動(dòng)態(tài)調(diào)度的主要思想:動(dòng)態(tài)調(diào)度的主要思想:指令順序發(fā)射指令順序發(fā)射亂序執(zhí)行亂序執(zhí)行指令亂序流出指令亂序流出動(dòng)態(tài)調(diào)度的問題:異常處理的不精確性。在采用動(dòng)態(tài)調(diào)動(dòng)態(tài)調(diào)度的問題:異常處理的不精確性。在采用動(dòng)態(tài)調(diào)度方法的處理機(jī)中,在某條指令產(chǎn)生異常情況時(shí),有可度方法的處理機(jī)中,在某條指令產(chǎn)生異常情況時(shí),有可能出現(xiàn)其后面的指令已經(jīng)執(zhí)行完成的情況,這樣異常處能出現(xiàn)其后面的指令已經(jīng)執(zhí)行完成的情況,這樣異常處理是不精確的。理是不精確的。 2022-4-3051控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法 流水線的流水線的控制相關(guān)控制相關(guān)是因?yàn)槌绦驁?zhí)行是因?yàn)槌绦驁?zhí)行轉(zhuǎn)移類指令轉(zhuǎn)移類指令而引起的相關(guān)。轉(zhuǎn)移類
52、而引起的相關(guān)。轉(zhuǎn)移類指令如無條件轉(zhuǎn)移、條件轉(zhuǎn)移、子程序調(diào)用、中斷等,它們屬于分支指令如無條件轉(zhuǎn)移、條件轉(zhuǎn)移、子程序調(diào)用、中斷等,它們屬于分支指令,執(zhí)行中可能改變程序的方向,從而造成流水線斷流。指令,執(zhí)行中可能改變程序的方向,從而造成流水線斷流。 數(shù)據(jù)相關(guān)影響到的僅僅是本條指令附近少數(shù)幾條指令,所以稱為數(shù)據(jù)相關(guān)影響到的僅僅是本條指令附近少數(shù)幾條指令,所以稱為局部局部相關(guān)相關(guān)。而控制相關(guān)影響的范圍要大得多,它會(huì)引起程序執(zhí)行方向的改。而控制相關(guān)影響的范圍要大得多,它會(huì)引起程序執(zhí)行方向的改變,使流水線損失更多的性能,所以稱為變,使流水線損失更多的性能,所以稱為全局相關(guān)全局相關(guān)。 控制相關(guān)會(huì)使流水線的連
53、續(xù)流動(dòng)受到破壞。當(dāng)執(zhí)行條件轉(zhuǎn)移指令時(shí),控制相關(guān)會(huì)使流水線的連續(xù)流動(dòng)受到破壞。當(dāng)執(zhí)行條件轉(zhuǎn)移指令時(shí),有兩種可能結(jié)果:有兩種可能結(jié)果:如發(fā)生轉(zhuǎn)移,將程序計(jì)數(shù)器如發(fā)生轉(zhuǎn)移,將程序計(jì)數(shù)器PC的內(nèi)容改變成轉(zhuǎn)移目標(biāo)地址;的內(nèi)容改變成轉(zhuǎn)移目標(biāo)地址;如不發(fā)生轉(zhuǎn)移,只將如不發(fā)生轉(zhuǎn)移,只將PC加上一個(gè)增量,指向下一條指令的地址。加上一個(gè)增量,指向下一條指令的地址。 2022-4-3052控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法 控制相關(guān)簡(jiǎn)單解決方法控制相關(guān)簡(jiǎn)單解決方法一旦發(fā)現(xiàn)分支指令就暫停流水線,即暫停一旦發(fā)現(xiàn)分支指令就暫停流水線,即暫停該指令之后的所有指令,直到分支指令達(dá)該指令之后的所有指令,直到分支指令達(dá)
54、到到MEM段確定了新的段確定了新的PC值為止。值為止。在發(fā)現(xiàn)它是分支指令之前是不愿意暫停流在發(fā)現(xiàn)它是分支指令之前是不愿意暫停流水線的,因此暫停在水線的,因此暫停在ID段之后才會(huì)發(fā)生,段之后才會(huì)發(fā)生,下圖所示的流水線時(shí)空?qǐng)D就描述了這種出下圖所示的流水線時(shí)空?qǐng)D就描述了這種出來方法。來方法。 2022-4-3053控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法 簡(jiǎn)單方法處理時(shí)空?qǐng)D簡(jiǎn)單方法處理時(shí)空?qǐng)D 減少流水線處理分支指令時(shí)暫停周期數(shù)的兩個(gè)步驟減少流水線處理分支指令時(shí)暫停周期數(shù)的兩個(gè)步驟 在流水線中盡早判斷出分支轉(zhuǎn)移是否成功;在流水線中盡早判斷出分支轉(zhuǎn)移是否成功; 盡早計(jì)算出分支成功轉(zhuǎn)移時(shí)的盡早計(jì)算出分
55、支成功轉(zhuǎn)移時(shí)的PC直(如分支的目標(biāo)直(如分支的目標(biāo)地址)。地址)。 2022-4-3054控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法 2022-4-3055控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法 減少流水線分支開銷的方法減少流水線分支開銷的方法凍結(jié)或者排空流水線的方法 預(yù)測(cè)分支轉(zhuǎn)移失敗的方法 譯碼到一條分支指令指令時(shí),就像分支指令就是一條譯碼到一條分支指令指令時(shí),就像分支指令就是一條普通的指令那樣,流水線繼續(xù)取后續(xù)的指令,并且允普通的指令那樣,流水線繼續(xù)取后續(xù)的指令,并且允許分支指令后續(xù)指令在流水線中正常流動(dòng)。(兩種情許分支指令后續(xù)指令在流水線中正常流動(dòng)。(兩種情況下的時(shí)空?qǐng)D見下頁)況
56、下的時(shí)空?qǐng)D見下頁)預(yù)測(cè)分支轉(zhuǎn)移成功的方法 一旦完成分支指令的譯碼并且計(jì)算出了分支的目標(biāo)地一旦完成分支指令的譯碼并且計(jì)算出了分支的目標(biāo)地址,就假設(shè)分支轉(zhuǎn)移成功,并且開始在分支目標(biāo)地址址,就假設(shè)分支轉(zhuǎn)移成功,并且開始在分支目標(biāo)地址處取指令執(zhí)行。處取指令執(zhí)行。分支延遲(延遲轉(zhuǎn)移)的方法 2022-4-3056控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法 預(yù)測(cè)分支轉(zhuǎn)移失敗的方法預(yù)測(cè)分支轉(zhuǎn)移失敗的方法 2022-4-3057控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法分支延遲的方法分支延遲的方法 延遲長(zhǎng)度為延遲長(zhǎng)度為n的分支指令的執(zhí)行順序如下:的分支指令的執(zhí)行順序如下:分支指令分支指令后續(xù)指令后續(xù)指令1
57、后續(xù)指令后續(xù)指令2后續(xù)指令后續(xù)指令n分支目標(biāo)地址指令(分支目標(biāo)地址指令(如果分支轉(zhuǎn)移成功如果分支轉(zhuǎn)移成功) 后續(xù)指令放在分支延遲槽中,不管分支轉(zhuǎn)移是否成功,這些指令后續(xù)指令放在分支延遲槽中,不管分支轉(zhuǎn)移是否成功,這些指令都要被流水執(zhí)行。延遲槽一般只放置一條指令。都要被流水執(zhí)行。延遲槽一般只放置一條指令。分支延遲槽分支延遲槽 2022-4-3058控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法 分支延遲的方法分支延遲的方法 無論分支轉(zhuǎn)移成功與否,延遲槽內(nèi)的指令都要執(zhí)行。如果分支轉(zhuǎn)無論分支轉(zhuǎn)移成功與否,延遲槽內(nèi)的指令都要執(zhí)行。如果分支轉(zhuǎn)移失敗,只需要按取來的指令執(zhí)行;否則,按照分支目標(biāo)地址的移失敗,
58、只需要按取來的指令執(zhí)行;否則,按照分支目標(biāo)地址的指令執(zhí)行。指令執(zhí)行。 2022-4-3059控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法分支延遲的方法分支延遲的方法 選擇放到分支延遲槽中的指令必須按照一定的原則經(jīng)過編譯器的選擇放到分支延遲槽中的指令必須按照一定的原則經(jīng)過編譯器的調(diào)度。對(duì)分支延遲的三種調(diào)度方法:調(diào)度。對(duì)分支延遲的三種調(diào)度方法: 2022-4-3060控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)解決方法分支延遲的方法分支延遲的方法 三種調(diào)度方法的所受的限制,以及他們各自的應(yīng)用場(chǎng)合。三種調(diào)度方法的所受的限制,以及他們各自的應(yīng)用場(chǎng)合。 2022-4-3061控制相關(guān)和相應(yīng)解決方法控制相關(guān)和相應(yīng)
59、解決方法 控制相關(guān)的動(dòng)態(tài)調(diào)度控制相關(guān)的動(dòng)態(tài)調(diào)度分支預(yù)測(cè)緩沖技術(shù)(Branch Prediction Buffer)緩沖區(qū)的每一項(xiàng)內(nèi)容被用來預(yù)測(cè)分支轉(zhuǎn)移是否成功,并且根據(jù)緩沖區(qū)的每一項(xiàng)內(nèi)容被用來預(yù)測(cè)分支轉(zhuǎn)移是否成功,并且根據(jù)實(shí)際的分支情況對(duì)內(nèi)容進(jìn)行修改。這種方法是基于如下的考慮:實(shí)際的分支情況對(duì)內(nèi)容進(jìn)行修改。這種方法是基于如下的考慮:如果本次分支轉(zhuǎn)移成功了,那么預(yù)測(cè)下一次分支轉(zhuǎn)移也成功,如果本次分支轉(zhuǎn)移成功了,那么預(yù)測(cè)下一次分支轉(zhuǎn)移也成功,例如一個(gè)循環(huán)體就是這種情況。例如一個(gè)循環(huán)體就是這種情況。 分支目標(biāo)緩沖技術(shù)(Branch Target Buffer)將分支轉(zhuǎn)移成功的分支指令的地址和它的分支
60、目標(biāo)地址都放到將分支轉(zhuǎn)移成功的分支指令的地址和它的分支目標(biāo)地址都放到一個(gè)緩沖區(qū)中保存起來,緩沖區(qū)以分支指令的地址作為標(biāo)志;一個(gè)緩沖區(qū)中保存起來,緩沖區(qū)以分支指令的地址作為標(biāo)志;在取指令階段,所有的指令地址都與保存的標(biāo)志作比較,如果在取指令階段,所有的指令地址都與保存的標(biāo)志作比較,如果相同,就認(rèn)為本條指令是分支指令,而且認(rèn)為它分支轉(zhuǎn)移成功,相同,就認(rèn)為本條指令是分支指令,而且認(rèn)為它分支轉(zhuǎn)移成功,同時(shí)它的分支目標(biāo)(下一條指令)地址就是保存在緩沖區(qū)中的同時(shí)它的分支目標(biāo)(下一條指令)地址就是保存在緩沖區(qū)中的分支目標(biāo)地址。分支目標(biāo)地址。 2022-4-3062指令級(jí)并行技術(shù)簡(jiǎn)介指令級(jí)并行技術(shù)簡(jiǎn)介 當(dāng)指令
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)鐵蓋圓桶市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)輕型龍門刨床市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)線圈活頁本冊(cè)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)瞬態(tài)電壓抑制二極管市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)瓷質(zhì)外墻磚市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)游泳館管理軟件市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)水晶大樓模型市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)木制穿線繞珠玩具市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)挖斗上料機(jī)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)平面研磨開閥市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 拳擊入門-北京理工大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 中石油職稱英語通用教材
- ICD-10疾病編碼完整版
- 智能客房控制器設(shè)計(jì)
- 滁州瑞芬生物科技有限公司年產(chǎn)1.5萬噸赤蘚糖醇項(xiàng)目環(huán)境影響報(bào)告書
- THMDSXH 003-2023 電商產(chǎn)業(yè)園區(qū)數(shù)字化建設(shè)與管理指南
- 新建ICU鎮(zhèn)痛、鎮(zhèn)靜藥物應(yīng)用幻燈片
- 橡膠和基材的粘接
- GB/T 10610-2009產(chǎn)品幾何技術(shù)規(guī)范(GPS)表面結(jié)構(gòu)輪廓法評(píng)定表面結(jié)構(gòu)的規(guī)則和方法
- GA/T 935-2011法庭科學(xué)槍彈痕跡檢驗(yàn)鑒定文書編寫規(guī)范
- 湖北省黃石市基層診所醫(yī)療機(jī)構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室信息
評(píng)論
0/150
提交評(píng)論