計(jì)算機(jī)科學(xué)中的流水線技術(shù)_第1頁(yè)
計(jì)算機(jī)科學(xué)中的流水線技術(shù)_第2頁(yè)
計(jì)算機(jī)科學(xué)中的流水線技術(shù)_第3頁(yè)
計(jì)算機(jī)科學(xué)中的流水線技術(shù)_第4頁(yè)
計(jì)算機(jī)科學(xué)中的流水線技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGE40CPU中指令流水線技術(shù)研究摘要流水線技術(shù)是提高系統(tǒng)吞吐率的一項(xiàng)強(qiáng)大的實(shí)現(xiàn)技術(shù),并且不需要大量重復(fù)設(shè)置硬件。20世界60年代早期的一些高端機(jī)器中第一次采用了流水線技術(shù)。第一個(gè)采用指令流水線的機(jī)器是IBM7030(又稱(chēng)作Stretch計(jì)算機(jī))。后來(lái)的CDC6600同時(shí)采用了流水線和多功能部件。到了20世紀(jì)80年代,流水線技術(shù)成為RISC處理器設(shè)計(jì)方法中最基本的技術(shù)之一。RISC設(shè)計(jì)方法的大部分技術(shù)都直接或者間接以提高流水線性能為目標(biāo)。從此以后,流水線技術(shù)也被有效地應(yīng)用到CISC處理器的設(shè)計(jì)中。Inteli486是IA32體系結(jié)構(gòu)中的第一個(gè)流水線實(shí)現(xiàn)。Digital的VAX和Motorola的M68K的流水線版本在商業(yè)上也取得了成功。流水線技術(shù)是當(dāng)前指令集處理器設(shè)計(jì)中廣泛采用的技術(shù)。在這里我們將重點(diǎn)放在(標(biāo)量)流水線處理器的設(shè)計(jì)。流水線處理器設(shè)計(jì)中的許多方法和技術(shù),例如用于檢測(cè)和化解相關(guān)的流水線互鎖機(jī)制,都是標(biāo)量處理器設(shè)計(jì)的基本方法。當(dāng)前的趨勢(shì)是朝著超深度流水線的方向發(fā)展。流水線的深度已經(jīng)從不到10發(fā)展到超過(guò)20.深度流水是獲得高速始終頻率的必要條件,這是提高處理器性能的一個(gè)非常有效的方法。有跡象表明。這種趨勢(shì)還將持續(xù)下去。[關(guān)鍵詞]流水線技術(shù)猜測(cè)法中斷處理吞吐率指令重疊加快短循環(huán)程序的處理AbstractPipelinetechnologyistoimprovethesystemthroughputofapowerfultechnology,anddoesnotrequirerepetitivesethardware.The20worldearly60'ssomehigh-endmachinesusedthefirstpipelinetechnology.ThefirstuseoftheinstructionpipelinemachineisIBM7030(alsocalledStretchcomputer).LaterCDC6600atthesametimelinesandmultiplefunctionalcomponents.Inthenineteeneighties,pipelinetechnologytobecometheRISCprocessordesignmethodisoneofthemostbasictechniques.ThedesignmethodofRISCmostofthetechniquesaredirectlyorindirectlytoimproveperformanceasthegoalline.Sincethen,assemblylinetechniqueshavealsobeenappliedeffectivelytotheCISCprocessor.Inteli486isIA32architectureisthefirstinapipelinedimplementation.DigitalVAXandMotorolaM68Kpipelinedversionalsoachievedsuccessinbusiness.Pipelinetechnologyisthecurrentinstructionsetprocessoriswidelyusedinthedesignoftechnology.Herewewillfocusonthe(scalar)pipelinedprocessordesign.Apipelinedprocessorinthedesignofmanymethodsandtechniques,forexample,usedtodetectandresolvetherelevantpipelineinterlockmechanism,isascalarprocessordesignmethod.Thecurrenttrendistowardssuperdepthlinedirection.Pipelinedepthhaslessthan10tothedevelopmentofmorethan20depthofwaterisalwaysnecessarytoobtainhighspeedfrequency,whichistoimprovetheperformanceofaveryeffectivemethod.Therearesigns.Thistrendwillcontinue.Keywords:Pipelinetechnologyforecastmethodofinterruptprocessingthroughputinstructionoverlappingaccelerateshortcycleprogramprocessing目錄第一章 緒論 31.1 現(xiàn)代RISC中的流水線技術(shù) 31.1.1 超流水線技術(shù) 31.1.2 超標(biāo)量技術(shù) 41.1.3 流水技術(shù)在Pentium系列微處理器中的實(shí)現(xiàn) 4第二章 流水線基礎(chǔ) 72.1 流水線概念 72.1.1 指令重疊 72.1.2 流水線 82.1.3 流水線的特點(diǎn) 92.1.4 流水線的分類(lèi) 102.2 流水線的主要性能 112.2.1 吞吐率 122.2.2 加速比和效率 12第三章 指令流水線設(shè)計(jì) 153.1 流水線理想假設(shè) 153.1.1 一致的運(yùn)算分量 153.1.2 重復(fù)的運(yùn)算 163.1.3 獨(dú)立的運(yùn)算 173.2 指令流水線 183.2.1 指令流水線設(shè)計(jì) 183.2.2 指令集體系結(jié)構(gòu)的影響 193.2.3 流水線分級(jí)的考慮 203.3 流水線處理器設(shè)計(jì) 213.3.1 保持流水段均衡 213.3.2 統(tǒng)一指令類(lèi)型 223.3.3 減少流水線停頓 26第四章 流水線中各種相關(guān)及中斷處理 274.1 流水線中相關(guān) 274.2 資源相關(guān) 274.3 數(shù)據(jù)相關(guān) 284.3.1 指令相關(guān) 284.3.2 主存空間操作數(shù)相關(guān) 294.3.3 通用寄存器組相關(guān) 294.4 控制相關(guān) 314.4.1 猜測(cè)法 314.4.2 加快和提前形成條件碼 324.4.3 采取轉(zhuǎn)移延遲 324.4.4 加快短循環(huán)程序的處理 32第五章 中斷處理與流水線調(diào)度 355.1 中斷處理 355.2 流水線調(diào)度 35第六章 總結(jié)與展望 39致謝 41參考文獻(xiàn) 42緒論流水線技術(shù)是提高系統(tǒng)吞吐率的一項(xiàng)強(qiáng)大的實(shí)現(xiàn)技術(shù),并且不需要大量重復(fù)設(shè)置硬件。20世界60年代早期的一些高端機(jī)器中第一次采用了流水線技術(shù)。第一個(gè)采用指令流水線的機(jī)器是IBM7030(又稱(chēng)作Stretch計(jì)算機(jī))。后來(lái)的CDC6600同時(shí)采用了流水線和多功能部件。到了20世紀(jì)80年代,流水線技術(shù)成為RISC處理器設(shè)計(jì)方法中最基本的技術(shù)之一。RISC設(shè)計(jì)方法的大部分技術(shù)都直接或者間接以提高流水線性能為目標(biāo)。從此以后,流水線技術(shù)也被有效地應(yīng)用到CISC處理器的設(shè)計(jì)中。Inteli486是IA32體系結(jié)構(gòu)中的第一個(gè)流水線實(shí)現(xiàn)。Digital的VAX和Motorola的M68K的流水線版本在商業(yè)上也取得了成功。流水線技術(shù)是當(dāng)前指令集處理器設(shè)計(jì)中廣泛采用的技術(shù)。在這里我們將重點(diǎn)放在(標(biāo)量)流水線處理器的設(shè)計(jì)。流水線處理器設(shè)計(jì)中的許多方法和技術(shù),例如用于檢測(cè)和化解相關(guān)的流水線互鎖機(jī)制,都是標(biāo)量處理器設(shè)計(jì)的基本方法。當(dāng)前的趨勢(shì)是朝著超深度流水線的方向發(fā)展。流水線的深度已經(jīng)從不到10發(fā)展到超過(guò)20.深度流水是獲得高速始終頻率的必要條件,這是提高處理器性能的一個(gè)非常有效的方法。有跡象表明。這種趨勢(shì)還將持續(xù)下去。現(xiàn)代RISC中的流水線技術(shù)超流水線技術(shù)超級(jí)流水線(超級(jí)流水線集)技術(shù)是用在一個(gè)并行處理技術(shù)。在他稀疏的水,增加的數(shù)量和提高頻率,從而在每個(gè)機(jī)器周期完成一個(gè)或2個(gè)浮點(diǎn)操作。其實(shí)質(zhì)是以時(shí)間換取空間。超純水機(jī)的特點(diǎn)是在所有的功能單位只使用水,并具有更高的時(shí)鐘頻率和更深的水的深度。超標(biāo)量技術(shù)超標(biāo)量(SuperScalar)技術(shù)是RISC采用的有一種處理技術(shù)。它通過(guò)內(nèi)裝多條流水線來(lái)同時(shí)執(zhí)行多個(gè)處理。其實(shí)質(zhì)就是以空間換取時(shí)間。流水線實(shí)現(xiàn)中的問(wèn)題及解決:這是一個(gè)問(wèn)題的連續(xù)流動(dòng),這似乎并沒(méi)有流下,從而獲得更高的效率。停止的原因很多,除了編譯生成的目標(biāo)程序可以發(fā)揮結(jié)構(gòu)的作用,水,或存儲(chǔ)系統(tǒng)可以提供一個(gè)連續(xù)流動(dòng)所需的指令和操作數(shù),基本上還出現(xiàn)相關(guān),轉(zhuǎn)移和中斷指令相關(guān)的。解偏相關(guān)有2種方法:后退方法和路徑的方法;解決全球相互關(guān)系有三種方法:猜測(cè)轉(zhuǎn)移,加快推進(jìn)形成條件代碼,加快短循環(huán)程序處理。流水技術(shù)在Pentium系列微處理器中的實(shí)現(xiàn)流水線技術(shù)早在英特爾凌動(dòng)芯片已經(jīng)實(shí)現(xiàn)。奔騰系列處理器產(chǎn)品是一個(gè)高級(jí)的超標(biāo)量處理器。它是建筑在一般整數(shù)流水線和一個(gè)浮點(diǎn)單元在線,這使處理器執(zhí)行整數(shù)指令。一對(duì)透明的軟件動(dòng)態(tài)分支預(yù)測(cè)機(jī)制可以使分支流水線堵塞最小化。奔騰處理器可以在一個(gè)時(shí)鐘周期內(nèi)完成2指示,流水線完成命令。第一個(gè)邏輯管叫“你”的流水線,一次電話(huà)“五”流水線。在任何一個(gè)給定的指令解碼時(shí),它是安排后面的指令將被檢查。和,如果可能的話(huà),第一個(gè)指令被分配到“你”流水線執(zhí)行指令,其次是分配到“勝利”的流水線執(zhí)行。如果不是,那么第一個(gè)指令設(shè)置為“你”“五”流水線流水線執(zhí)行,不安排指令操作。教學(xué)中的操作和流水線的順序執(zhí)行所產(chǎn)生的效果是完全一樣的。當(dāng)流水線堵塞,隨后的指令指令是阻止任何流水線。技術(shù)的奔騰處理器的整數(shù)流水線增加一個(gè)額外的處理階段。指令代碼緩沖區(qū)緩存預(yù)取,美聯(lián)儲(chǔ)的“預(yù)”(公積金)階段,并在“提取”(女)階段的教學(xué)語(yǔ)法分析。此外,所有前綴的解碼階段。在教學(xué)第一先出(先進(jìn)先出)指令緩沖區(qū)中的語(yǔ)法分析和指令解碼分開(kāi),緩沖區(qū)位于的階段,the1stage(D1)之間的解碼。先進(jìn)先出緩沖空間指令處理最多四個(gè)指示。先進(jìn)先出緩沖區(qū)是透明的,當(dāng)它是空的,沒(méi)有額外的延遲。在每個(gè)時(shí)鐘周期的指令,指令緩沖區(qū)(按有效代碼字節(jié),和其他因素,如前綴)。然后,對(duì)指令的先進(jìn)先出緩沖射出去,到d1stage。由于指令的平均執(zhí)行效率為每個(gè)時(shí)鐘周期不超過(guò)2指令,所以通常全是先進(jìn)先出。只要是先進(jìn)先出,你可以防止取指令和語(yǔ)法分析產(chǎn)生阻塞。如果這阻塞,先進(jìn)先出也可以使阻塞的執(zhí)行管線階段發(fā)生。但如果是先進(jìn)先出空,因?yàn)闆](méi)有指令流水線操作,這可能導(dǎo)致執(zhí)行一個(gè)塊。長(zhǎng)指令或一個(gè)前綴可以在先進(jìn)先出入口產(chǎn)生阻塞。超流水線(SuperPipeline)在本質(zhì)上仍為一種流水線技術(shù),但它做了以下的改進(jìn):1、流水線條數(shù)從奔騰的兩條增至三條,還有十一個(gè)獨(dú)立的執(zhí)行單元并行支持。2、在實(shí)施無(wú)序執(zhí)行(采取所有加工)技術(shù)。當(dāng)一個(gè)指令需要一些數(shù)據(jù)并不能立即執(zhí)行,它將被刪除線和等數(shù)據(jù),處理器是立即執(zhí)行的指示下,就像在裝配線發(fā)現(xiàn)產(chǎn)品不合格,但被淘汰,等原因。這樣,可以防止無(wú)法執(zhí)行命令影響整個(gè)生產(chǎn)線的效率。3、在p6instruction分為更細(xì)的相位,使邏輯設(shè)計(jì),工藝等更為簡(jiǎn)化,提高了速度。在486chip,指令一般分為五個(gè)部分,奔騰也是如此。在六,由于采用了類(lèi)似的精簡(jiǎn)指令集計(jì)算機(jī)技術(shù),一個(gè)指令分為十四階段。這大大提高了線速度。六系列處理器使用動(dòng)態(tài)執(zhí)行結(jié)構(gòu)。結(jié)構(gòu)通過(guò)一個(gè)硬件寄存器重命名和分支預(yù)測(cè)的方法,將亂序執(zhí)行和投機(jī)執(zhí)行的合成。這些處理器有一個(gè)有序的進(jìn)入流水線,它將英特爾386macro指令分為簡(jiǎn)單的微操作(或國(guó)外)和一個(gè)可以處理這些微操作外序的超標(biāo)量處理器核心。亂序處理器內(nèi)核包含幾行,連接整數(shù),浮點(diǎn)數(shù)和跳躍,內(nèi)存執(zhí)行單元。幾種不同的執(zhí)行單元可以集成在同一行。例如:一個(gè)整數(shù)地址邏輯單元和浮點(diǎn)執(zhí)行單元(加法器,乘法器和除法器)共用線。數(shù)據(jù)緩沖區(qū)緩存由一個(gè)專(zhuān)用的讀端口和其他存儲(chǔ)端口交錯(cuò)成。最簡(jiǎn)單的手術(shù)(國(guó)際鋁,浮點(diǎn)此外,甚至浮點(diǎn)乘法)每時(shí)鐘周期才能完成一個(gè)工作通量裝配線。浮點(diǎn)除法不能進(jìn)入流水線,長(zhǎng)和短延遲延遲操作可以在平行處理。六系列線由三部分組成:前端(按序有序的組織單位,核心(前端)序序核心)單元和有序退出(有序退休)單位。英特爾最近推出的奔騰Ⅲ處理器使用的p6dynamic執(zhí)行技術(shù),包括多個(gè)分支預(yù)測(cè),數(shù)據(jù)流分析,推測(cè)執(zhí)行。同時(shí),奔騰Ⅲ處理器有一個(gè)流水線浮點(diǎn)單元(浮點(diǎn)運(yùn)算單元),可支持32位,64位和80位浮點(diǎn)運(yùn)算。英特爾最近發(fā)表的奔騰4,奔騰4basic指令管線長(zhǎng)度達(dá)到20級(jí),是六建筑2倍,更比AMDAthlon。時(shí)間線可以使處理器運(yùn)行在更高的頻率,從而提高處理器的性能,但可能有一些指令執(zhí)行延遲。流水線基礎(chǔ)加快機(jī)器語(yǔ)言的解釋過(guò)程,提高機(jī)器的速度是一個(gè)基本任務(wù)的計(jì)算機(jī)設(shè)計(jì)。這可以實(shí)現(xiàn)的方式。一種方法是增加了設(shè)備的速度,更好的算法,增加指令的微平行度,減少解釋過(guò)程需要擊敗多項(xiàng)措施加快機(jī)器指令的解釋。另一種方法是使用重疊和水的方法,同時(shí),多個(gè)2解釋整個(gè)過(guò)程,從而加快整個(gè)機(jī)器語(yǔ)言程序的解釋。流水線技術(shù)現(xiàn)已廣泛應(yīng)用于微處理芯片的關(guān)鍵技術(shù),英特爾公司的微處理器應(yīng)用技術(shù)首次實(shí)現(xiàn)。流水線概念指揮控制方法三:序列的方法,重疊,運(yùn)行模式。順序法是指機(jī)器指令序列之間的串行執(zhí)行的機(jī)器指令,和每個(gè)微指令的執(zhí)行順序。雖然這種方法的優(yōu)點(diǎn)是控制簡(jiǎn)單但速度上不去,利用率低的機(jī)器零件。重疊模式是指解釋第鉀指令操作完成之前開(kāi)始的鉀1instruction解釋。通常使用的重疊,即,在任何時(shí)間,命令解析單元和指令執(zhí)行部只有相鄰指令重疊的解釋。這意味著指令解釋速度增加,控制不是很復(fù)雜,但出現(xiàn)沖突,轉(zhuǎn)移,相關(guān)的問(wèn)題,這些都是需要在設(shè)計(jì)解決。水是一個(gè)并行或并行嵌入計(jì)算機(jī)系統(tǒng)中的一種形式。它是重疊的連續(xù)過(guò)程分解為一個(gè)進(jìn)程的個(gè)數(shù),每個(gè)進(jìn)程的特殊模塊獨(dú)立有效的并行工程技術(shù)。論“流”可以被視為“重疊”的延伸。不同的是一個(gè)“重疊”只是一個(gè)指令的解釋是分解成2個(gè)過(guò)程,與“水”分解為多個(gè)子過(guò)程。指令重疊一個(gè)指令執(zhí)行過(guò)程可以分為取指令,類(lèi)型和執(zhí)行一三個(gè)過(guò)程(圖2.1)。取指令,取出指令,指令寄存器。教學(xué)分析指指令的操作碼進(jìn)行譯碼,解決和地址字段地址操作數(shù)的真正形成,這是地址讀取操作,但準(zhǔn)備取下一條指令是預(yù)先形成的下一條指令的地址。指令執(zhí)行是指一些操作,加工業(yè)務(wù),或存儲(chǔ)操作結(jié)果。指令的重疊解釋方法是指,在解釋的指令操作完成之前,開(kāi)始解釋鉀1instruction。假設(shè)這三個(gè)過(guò)程,分別以不同的硬件(命令控制器,分析和執(zhí)行單元),當(dāng)K線指令在分析階段,該控制器在空閑狀態(tài),這個(gè)時(shí)候可以為鉀1instruction到取指令操作,當(dāng)K線的指令被執(zhí)行時(shí),解析器在空閑狀態(tài),并可以進(jìn)行鉀1instruction分析(圖2.2)。顯然,重疊的解釋方式和不能加快指令來(lái)實(shí)現(xiàn)的,但可以加速相鄰的指令和程序的解釋。圖2.1機(jī)器指令的順序執(zhí)行方式圖2.2指令的重疊解釋方式流水線水實(shí)際上是重疊延伸,上面提到的重疊模型實(shí)際上是一個(gè)simple3水模型。如果分析和執(zhí)行階段分為指令解碼,執(zhí)行操作,存儲(chǔ)和計(jì)算結(jié)果,當(dāng)鉀1instruction在指令執(zhí)行的操作時(shí)可以開(kāi)始解碼,而不必等到分析鉀完全結(jié)束。這樣一個(gè)指令周期可以同時(shí)executing5指令。裝配線的工作方式是一個(gè)反復(fù)的過(guò)程分解成幾個(gè)子進(jìn)程,每個(gè)進(jìn)程可以與其他子過(guò)程在同一時(shí)間。由于這種工作方法在工程和生產(chǎn)線是非常相似的,因此,他把工作流程。該處理器可以用在幾乎所有地區(qū)的工作流程。在指令執(zhí)行使用線,到指令流水線。手術(shù)操作元件,如浮點(diǎn)加法器,浮點(diǎn)乘法器可以被用來(lái)作為部分的流水線,流水線。訪問(wèn)主存儲(chǔ)器單元也可用于流水線。即使在處理器,機(jī)器也可以使用流水線。圖2.3指令流水線流水線的特點(diǎn)從上面的分析中可以看到,在處理機(jī)中采用流水線方式與采用傳統(tǒng)的串行方式相比,具有一下特點(diǎn):1、在處理流水線必須是連續(xù)的任務(wù),只有不斷提供任務(wù)才能充分發(fā)揮效率的流水線。比如說(shuō)呢。如果浮點(diǎn)加法器的充分發(fā)揮,需要連續(xù)提供浮點(diǎn)加法器。然而,由于程序本身的原因和程序設(shè)計(jì)過(guò)程所造成的一些原因,數(shù)據(jù)關(guān)聯(lián),不可能為浮點(diǎn)加法器是提供一個(gè)連續(xù)運(yùn)行。因此,在使用流水線的方式處理,尤其是當(dāng)線的多個(gè)系列,應(yīng)該在軟件和硬件方面的線提供連續(xù)的任務(wù),為了提高效率,流水線。2、任務(wù)分解成幾個(gè)相關(guān)的任務(wù),每個(gè)任務(wù)由一個(gè)專(zhuān)門(mén)的功能組件實(shí)現(xiàn)。因此,線實(shí)際上是一個(gè)功能成分分解成多個(gè)獨(dú)立的功能部件,并依靠多個(gè)功能部件并行工作縮短程序的執(zhí)行時(shí)間。在流水線,任務(wù)通常被稱(chēng)為一個(gè)過(guò)程,或一個(gè)功能段。3、在每一個(gè)功能單位線回有一個(gè)緩沖寄存器,或鎖存器,用于保存所執(zhí)行的結(jié)果。這是因?yàn)樵诿恳欢蔚难舆t可以不相等,因此,在轉(zhuǎn)移的任務(wù),必須通過(guò)緩沖寄存器。當(dāng)一個(gè)函數(shù)的時(shí)間范圍較大,設(shè)立多個(gè)緩沖寄存器。4、線段的對(duì)稱(chēng)性,即相同的時(shí)間要求盡可能,否則將造成“堵”,“停止”和其他問(wèn)題。執(zhí)行時(shí)間最長(zhǎng)的部分將成為整個(gè)線路的“瓶頸”,那么,線段將受到限制,不能充分發(fā)揮作用。只有當(dāng)全是滿(mǎn)滿(mǎn)的,整個(gè)流水線的效率可以得到充分發(fā)揮。為了設(shè)計(jì)出高效率的流水線,要充分注意上述問(wèn)題。流水線的分類(lèi)從不同的角度,根據(jù)不同的角度,可以分成許多不同類(lèi)型的線。通常所說(shuō)的一些線路,通常按一定的角度,或從一個(gè)特定角度線的分類(lèi)結(jié)果。因此,從名字上只能反映一維線功能或特征。按照流水線的各功能段之間是否有反饋信號(hào),可以把流水線分為線性流水線合非線性流水線。線性線是線各功能部分的每一個(gè)系列,輸入數(shù)據(jù)從流水線部分進(jìn)入,從另一部分流出。數(shù)據(jù)流水線通過(guò),沒(méi)有一個(gè)功能部分流經(jīng)的第一,只有通過(guò)A線性線通常只能完成固定功能,在現(xiàn)代計(jì)算機(jī)系統(tǒng),線性線已被廣泛應(yīng)用在指令執(zhí)行過(guò)程中,各種算術(shù)運(yùn)算,內(nèi)存訪問(wèn)操作。圖2.4非線性流水線非線性流水線經(jīng)常用于遞歸調(diào)用,或者構(gòu)成多功能流水線。根據(jù)線使用不同層次,可以將流水線分成功能組件,處理器和處理器和其他類(lèi)型。處理器的流水線階段的指令流水線,他把一個(gè)指令執(zhí)行過(guò)程分解成若干個(gè)子過(guò)程,每個(gè)子進(jìn)程中的一個(gè)獨(dú)立的功能部件。特征線,又稱(chēng)為操作線,如浮點(diǎn)加法器流水線,浮點(diǎn)乘法器組件。處理器間流水線也被稱(chēng)為流水線,一般是兩年多處理器通過(guò)記憶的串行連接,每個(gè)處理器在數(shù)據(jù)流的不同部分分別進(jìn)行處理。圖2.6指令流水線流水線又可分為單功能流水線和多功能流水線。顧名思義,單功能流水線只能完成固定的單一功能,多流水線通過(guò)各個(gè)段間進(jìn)行不同的連接,在不同的時(shí)間內(nèi)或者統(tǒng)一時(shí)間內(nèi)通過(guò)不同的連接方式完成不同的功能。多功能流水線,根據(jù)同一時(shí)間是否可以連接到各種不同的方式,并執(zhí)行各種任務(wù),你可以把多功能流水線分為靜態(tài)和動(dòng)態(tài)線。靜態(tài)線是在同一時(shí)間,多功能流水線部分只有按照一定的固定連接,實(shí)現(xiàn)一個(gè)固定功能。只有當(dāng)根據(jù)連接方式工作的所有任務(wù)脫節(jié),重新連接,完成其他功能。動(dòng)態(tài)線的同時(shí),可以根據(jù)不同的連接方式,完成各種不同的功能。這一次請(qǐng)求行功能不能沖突。除了以上幾種分類(lèi)方法外,還可以根據(jù)其他標(biāo)準(zhǔn),從不同角度對(duì)流水線進(jìn)行分類(lèi)。流水線的主要性能衡量流水線主要性能的指標(biāo)主要有吞吐率,加速比和效率。吞吐率吞吐率是指在單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)量或者輸出的結(jié)果數(shù)量。即:式(2.1)中,n為任務(wù)數(shù),是處理完成n個(gè)任務(wù)做用的時(shí)間。本式為計(jì)算吞吐率最基本的公式。有的時(shí)候我們還需要求一條流水線的最大吞吐率:式(2.2)中為第k個(gè)子過(guò)程所花費(fèi)的時(shí)間。最大吞吐率受限于流水線中最慢子過(guò)程即瓶頸子過(guò)程所需要的時(shí)間。為了提高流水線的最大吞吐率,首先要找出瓶頸,然后設(shè)法消除此瓶頸。消除瓶頸有兩種辦法,一是將瓶頸子過(guò)程再細(xì)分,另一種辦法是通過(guò)重復(fù)設(shè)置多套瓶頸段并聯(lián),讓他們交叉進(jìn)行。后一種方法需要解決好在各并行子過(guò)程之間的任務(wù)分配合同步控制,比起瓶頸子過(guò)程再細(xì)分控制要復(fù)雜、設(shè)備量要多一些。加速比和效率完成一批任務(wù),不使用流水線所花的時(shí)間與使用流水線所用時(shí)間直比即為流水線的加速比。如果不使用流水線,即順序執(zhí)行所用時(shí)間為,使用流水線的執(zhí)行時(shí)間為,則流水線的加速比為:這是計(jì)算流水線加速比的基本公式。流水線效率是指設(shè)備的利用率和流水線。在時(shí)空?qǐng)D,線效率定義為,任務(wù)時(shí)間區(qū)域與鉀功能區(qū)占用空間面積比。因此,效率線包含2個(gè)方面的時(shí)間和空間因素。事實(shí)上,在任務(wù)的時(shí)間區(qū)域是順序執(zhí)行的任務(wù)使用的總時(shí)間。而一個(gè)流水線,完整的總?cè)蝿?wù)在顳區(qū),這是一個(gè)對(duì)完成任務(wù)的總時(shí)間。是一個(gè)段線效率可表示為:此式是計(jì)算流水線效率的一般公式。如果流水線各段執(zhí)行時(shí)間均相等,且輸入的n個(gè)任務(wù)是連續(xù)的,則一條k段流水線的效率為:從流水線的時(shí)空?qǐng)D上來(lái)看,上式分母部分是完成n個(gè)任務(wù)所用時(shí)間與k個(gè)功能段所圍成的總面積,而分子部分則是k個(gè)功能段實(shí)際所占有的面積。因此,利用時(shí)空?qǐng)D來(lái)計(jì)算流水線的效率十分方便。指令流水線設(shè)計(jì)我們做任何事情,都希望能夠達(dá)到理想狀態(tài),但這往往是不現(xiàn)實(shí)的,我們研究理想狀態(tài)的意義就在于給出一個(gè)衡量的標(biāo)準(zhǔn),并且努力向這個(gè)標(biāo)準(zhǔn)靠近,這在指令流水線的設(shè)計(jì)過(guò)程中也不例外。流水線理想假設(shè)為目的的指令流水線,我們希望能夠最大限度地提高系統(tǒng)性能。然而在實(shí)踐中,但往往不這樣做,因?yàn)橹挥性诶硐氲臈l件下,等級(jí)度流水線設(shè)計(jì)可以提高吞吐量的時(shí)間,理想的情況是主要基于三假說(shuō),我們稱(chēng)它為“線理想的假設(shè)”,他是正確評(píng)估流水線設(shè)計(jì)。設(shè)計(jì)各種方案解決實(shí)際線和線之間的矛盾,理想的假設(shè),它們構(gòu)成的主要工藝流水線的設(shè)計(jì)。流水線的理想假設(shè)包括:一致的運(yùn)算分量:要完成的整個(gè)運(yùn)算量可以均勻的分成延遲一只的若干分量。重復(fù)的運(yùn)算:輸入數(shù)據(jù)有大量相同的、重復(fù)的運(yùn)算。獨(dú)立的運(yùn)算:所有相同的重復(fù)運(yùn)算之間沒(méi)有相關(guān)性。一致的運(yùn)算分量第一行的理想的假說(shuō)解釋?zhuān)瑫?huì)使計(jì)算部分水均勻地分為鉀延遲相同的組件。這意味著以前的設(shè)計(jì)可以分為鉀平衡水段。如果以前的總計(jì)算延遲,不是設(shè)計(jì)類(lèi)型的水循環(huán),然后鉀流水線設(shè)計(jì)風(fēng)格的周期是鉀,也就是流水在每一段的延遲?;谶@一假設(shè),時(shí)鐘頻率可以增加,并提高吞吐量倍。在實(shí)際的流水線設(shè)計(jì),這種假設(shè)可能不成立??偛僮鹘M件完全均勻的分成幾個(gè)部分是不可能的。在3級(jí)流水線浮點(diǎn)加法器的例子,設(shè)置總延遲for500ns,線分為3個(gè)部分,每個(gè)部分都200ns延遲,容錯(cuò),200ns。顯然,總延誤是不均勻分布在整個(gè)線路的三段。因?yàn)榫€路時(shí)鐘周期決定推遲最長(zhǎng)延遲時(shí)間較短,所以會(huì)有一些無(wú)效或失敗時(shí)。如浮點(diǎn)加法器的后半部分,這是100ns的無(wú)效時(shí)間,我們可以稱(chēng)它為“內(nèi)部碎片”。由于內(nèi)部分裂,執(zhí)行同樣的操作延遲將增加。有一種內(nèi)在的假設(shè),即水段之間引入緩沖不會(huì)帶來(lái)額外的延遲線時(shí)鐘信號(hào),也不引入額外的延遲。同樣,假設(shè)在實(shí)踐中是不成立的。在一些例子中,為了保證信號(hào)的時(shí)鐘信號(hào)準(zhǔn)確地成立的,注冊(cè)成立,所以總時(shí)鐘周期延長(zhǎng),從而導(dǎo)致實(shí)際業(yè)績(jī)可能不到3次。第一行的理想假設(shè)主要包含以下兩點(diǎn):以前的操作部件分為多個(gè)部分,不引入一個(gè)無(wú)效的時(shí)間;一個(gè)緩沖和時(shí)鐘不會(huì)帶來(lái)額外的延遲介紹。在芯片級(jí)設(shè)計(jì),可以使用一些鎖,如·鎖可以使時(shí)鐘產(chǎn)生延遲盡可能小。那么如何來(lái)操作均勻分成各種水段構(gòu)成的流水線設(shè)計(jì)的第一個(gè)挑戰(zhàn)。我們的目標(biāo)是,盡可能使所有水段保持平衡,減少內(nèi)部分裂。由于各水段不能完全平衡內(nèi)部分裂是不滿(mǎn)足第一行的理想假設(shè)的主要原因,這將是一個(gè)架空,并導(dǎo)致鉀級(jí)管線設(shè)計(jì)吞吐量增長(zhǎng)達(dá)到理想的倍。重復(fù)的運(yùn)算第二線的理想的假說(shuō)解釋?zhuān)€反復(fù)執(zhí)行相同的操作。這意味著在一組輸入數(shù)據(jù),一些運(yùn)營(yíng)商是相同的,這些操作執(zhí)行。每次執(zhí)行時(shí),線路提供組件執(zhí)行順序是相同的。因?yàn)楦↑c(diǎn)加法器的例子,將含有大量浮點(diǎn)數(shù)在一起,對(duì)每一個(gè)操作數(shù)是通過(guò)same3線。這一集,每次重復(fù)計(jì)算可以使用所有的小節(jié)線。在我們的例子,這顯然是建立。浮點(diǎn)加法滿(mǎn)足這個(gè)假設(shè),因?yàn)楸揪€只完成一個(gè)功能,例如,浮點(diǎn)加法運(yùn)算。如果你想設(shè)計(jì)一個(gè)流水線完成多種功能,這種假設(shè)是不滿(mǎn)意。例如,設(shè)計(jì)一個(gè)可以計(jì)算加法和乘法運(yùn)算流水線可以計(jì)算。多功能流水線,一個(gè)單獨(dú)的功能可能不需要所有的流動(dòng)部分,可由水段的不同子集完成不同的功能。因?yàn)檩斎氲臄?shù)據(jù)在一個(gè)同步的方式通過(guò)流水線,有些數(shù)據(jù)可能不需要一些水段,當(dāng)他們經(jīng)過(guò)一段,什么也不做。這并沒(méi)有使用或自由流動(dòng)的部分帶來(lái)另一種形式的流水線,可稱(chēng)為“外碎片”。和內(nèi)部分裂的外部碎片是類(lèi)似的,一個(gè)流水線架空,應(yīng)盡量減少。第二線的理想假設(shè)所有水段總是充分利用。除了表明不存在外部碎片,這個(gè)假設(shè)也說(shuō)明了數(shù)據(jù)的處理是許多。第一數(shù)據(jù)線最后一段需要鉀鉀循環(huán)周期,稱(chēng)為“填充”。最后的數(shù)據(jù)線的第一段,也需要鉀定期排空流水線。在灌裝和排空過(guò)程中,并不是所有的流水線階段的工作狀態(tài)。如果有大量輸入數(shù)據(jù)的處理,可以使線的填充和排空時(shí)間只有一小部分的總時(shí)間。因此,許多水段可認(rèn)為一直處于工作狀態(tài)。獨(dú)立的運(yùn)算第三線假說(shuō)解釋?zhuān)€加工操作是相互獨(dú)立的。這意味著,所有同一時(shí)間居住在流水線的操作是不相關(guān)的,也就是說(shuō),任何兩者之間不存在的數(shù)據(jù)或控制。這一假設(shè)保證線在“流動(dòng)”的工作方法,即后面操作不是因?yàn)榇嬖谙嚓P(guān)性而等待操作完成。因?yàn)楦↑c(diǎn)加法器的例子,這個(gè)假設(shè)是成立的。如果有更多的操作數(shù)在一起,一對(duì)操作數(shù)的增加不是因?yàn)榱硪粋€(gè)加法的結(jié)果。這些操作可以依照“流”的處理。這一假設(shè)的一些行可能不成立。后面的操作可能需要在前面的結(jié)果,和2個(gè)操作也可能居住在流水線。如果是后者的經(jīng)營(yíng)已進(jìn)入了結(jié)果所需的水,但這次在術(shù)前尚未到達(dá)產(chǎn)生的結(jié)果流動(dòng)段,這是背后的操作必須等待期。這是被稱(chēng)為“流水線攤位”。如果一個(gè)操作暫停線一定時(shí)間,隨后的所有操作可能被迫停頓。流水線攤位不可避免地導(dǎo)致一些處于閑置狀態(tài),它可被視為一個(gè)動(dòng)態(tài)外部碎片,從而使吞吐量率降低。如果相關(guān)是不可避免的,設(shè)計(jì)時(shí),盡量多的停止線。指令流水線前三行是行的理想假設(shè)。在大多數(shù)情況下,算術(shù)流水線的實(shí)際情況與理想的假設(shè)是不太大。然而,對(duì)指令流水線,和實(shí)際情況之間的差距會(huì)更理想的假設(shè)。而連接過(guò)橋正式指令管線設(shè)計(jì)有趣和有挑戰(zhàn)性的地方。設(shè)計(jì)中的流水線處理器,三個(gè)假設(shè)成為三大挑戰(zhàn)。三大挑戰(zhàn),同時(shí)與探索的流水線處理器的設(shè)計(jì)理念。指令流水線設(shè)計(jì)設(shè)計(jì)中的命令行,三行,成為設(shè)計(jì)目標(biāo)。一個(gè)指令處理是精簡(jiǎn)業(yè)務(wù),它必須被分成多個(gè)作為輔助操作,得到的平衡線。處理指令延遲時(shí)間成為“指令周期”,每一段時(shí)間延遲決定了機(jī)器周期。”。指令周期是一個(gè)邏輯概念,它指的是執(zhí)行的指令周期。一個(gè)程序,包括一個(gè)多元化的指令,程序的執(zhí)行相當(dāng)于相應(yīng)的操作重復(fù)執(zhí)行。機(jī)器周期是一個(gè)物理概念,它包含了數(shù)字邏輯電路的存儲(chǔ)單元的時(shí)鐘,同時(shí)它也是流水線時(shí)鐘周期。指令流水線設(shè)計(jì)的主要任務(wù)可以看作是將邏輯指令周期映射到物理機(jī)器周期。換句話(huà)說(shuō),就是將指令周期所對(duì)應(yīng)的運(yùn)算分成一個(gè)子運(yùn)算的序列,由流水線的各段運(yùn)行。要有效的進(jìn)行這種分割或者映射,必須考慮三條流水線的理想假設(shè)。符合業(yè)務(wù)的組成部分,我們將指令周期分為多個(gè)機(jī)器周期的過(guò)程稱(chēng)為“定量水段”。在量化的流動(dòng)部分,以盡量減少內(nèi)部分裂。如果在量化流動(dòng)部分是不充分的考慮,將引入內(nèi)部碎片,從而影響線的利用率。第一行的理想假設(shè)帶來(lái)的指令流水線設(shè)計(jì)的第一個(gè)挑戰(zhàn),稱(chēng)為平衡線。線平衡,減少內(nèi)部分裂。重復(fù)的運(yùn)算與單一功能的算術(shù)的流水線是不一樣的,指令流水線是一種天然多功能流水線,即它必須能夠處理各種不同類(lèi)型的指令。不同類(lèi)型的指令需要稍微不同的子操作序列,相應(yīng)的硬件資源的不同。指令流水線的設(shè)計(jì)挑戰(zhàn)二連接,或整合不同類(lèi)型不同的資源需求。線應(yīng)該能夠支持所有類(lèi)型的指示;同時(shí)應(yīng)盡量減少對(duì)每種類(lèi)型的指令是無(wú)效的或空的機(jī)器周期,也是降低外部碎片。獨(dú)立的運(yùn)算運(yùn)算流水線是一個(gè)數(shù)組的數(shù)據(jù),他們一般是不相關(guān)的。和算術(shù)流水線是不同的,指令流水線處理指令不完全是相互獨(dú)立的。因此,指令流水線必須有一套內(nèi)部機(jī)制,用來(lái)檢測(cè)指令發(fā)生之間的相關(guān)和有關(guān)的指令不會(huì)導(dǎo)致錯(cuò)誤。相關(guān)的指令可能導(dǎo)致流水線攤位,導(dǎo)致失敗。如前所述,流水線停滯在動(dòng)態(tài)外部碎片,這會(huì)降低流水線的吞吐量。因此,指令流水線設(shè)計(jì)的第三大挑戰(zhàn)是減少流水線攤位。指令集體系結(jié)構(gòu)的影響在正式討論指令流水線設(shè)計(jì)的三個(gè)主要挑戰(zhàn)之前,簡(jiǎn)單的考慮一下指令集體系結(jié)構(gòu)對(duì)于指令流水線的影響,將很有啟發(fā)意義。下面將一次考慮三條流水線理想假設(shè)。一致的運(yùn)算分量使水段保持均衡的第一個(gè)挑戰(zhàn),必須確保組件的延遲是一致的。研究教學(xué)過(guò)程的所有操作元件,有部分的長(zhǎng)期拖延,以及部分不易破碎成細(xì)計(jì)算組件。在一個(gè)流水線處理器的設(shè)計(jì),關(guān)鍵部件是訪問(wèn)內(nèi)存。由于速度的差異之間的處理器和內(nèi)存,內(nèi)存訪問(wèn)將成為關(guān)鍵運(yùn)算部件。為使指令流水線的效率更高,應(yīng)在尋址模式進(jìn)行優(yōu)化,并應(yīng)能夠緊跟高速緩存的處理器速度。重復(fù)的運(yùn)算第一個(gè)挑戰(zhàn)是不同類(lèi)型的指令的資源要求是統(tǒng)一的,它的主要目的是精簡(jiǎn)指令集計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)。減少指令類(lèi)型的復(fù)雜性和多樣性的整合不同的指令類(lèi)型可以減少困難的任務(wù)。復(fù)雜尋址模式不僅需要額外的內(nèi)存,并增加了對(duì)資源的需求的多樣性。所有這些資源整合到一個(gè)指令管線的看法相當(dāng)困難,和線的許多教學(xué)效率很低。這些指示將產(chǎn)生外部碎片,從而降低線路的利用率。一個(gè)精簡(jiǎn)指令集計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的流水線,整合資源,簡(jiǎn)單的把線更有效,減少外部碎片。獨(dú)立的運(yùn)算第三個(gè)挑戰(zhàn)是盡量減少相關(guān)指令所造成的流水線攤位,這可能是一個(gè)流水線處理器的設(shè)計(jì)是最吸引人的地方。正確地完成操作,指令流水線必須檢測(cè)和解決相關(guān)的指令。復(fù)雜的處理方式,特別是與內(nèi)存訪問(wèn)模式,因?yàn)閮?nèi)存地址標(biāo)識(shí)符問(wèn)題引起了相關(guān)檢測(cè)是非常困難的。一般來(lái)說(shuō),比較容易發(fā)現(xiàn)因?yàn)榧拇嫫?,寄存器的指令是明確指出。簡(jiǎn)單和樁適合指令解碼和相關(guān)檢測(cè)。相關(guān)檢測(cè)和解決可以是靜態(tài)的,也可以從本機(jī)運(yùn)行的硬件動(dòng)態(tài)完整。編譯和運(yùn)行分別決定如何處理,在動(dòng)靜態(tài)界面(接口)定義。定義接口,將導(dǎo)致許多有趣的和微妙的平衡。平衡,必須被編譯,(微)結(jié)構(gòu)和微處理器設(shè)計(jì)緊密結(jié)合起來(lái)。流水線分級(jí)的考慮理想流動(dòng)性能和流水線的深度(即,線段)是成正比的,因此似乎是最好的設(shè)計(jì),增加行數(shù)。然而,由于時(shí)鐘約束,線分段數(shù)總是有一個(gè)物理限制。線的每一部分可以被視為一個(gè)組合邏輯加上最后鎖存器,信號(hào)通過(guò)后的鎖。定義的最大傳輸延時(shí),即通過(guò)長(zhǎng)度的延遲信號(hào)路徑;為的最小傳輸延遲,即通過(guò)短的信號(hào)路徑延遲;為建立正確的時(shí)鐘信號(hào)所需的時(shí)間,包括必要的建立和保持時(shí)間,保證正確的鎖存器,同時(shí)也包括可能的時(shí)鐘偏移,滿(mǎn)足不同鎖存時(shí)鐘沿最大時(shí)間差。第一組信號(hào)時(shí)的作用,假設(shè)在一個(gè)級(jí)別的輸入,然后輸出的最新有效。當(dāng)另一組信號(hào)在時(shí)間的輸入端子,以最快的時(shí)間就可以存L保證二組信號(hào)不覆蓋第一組的信號(hào),必須滿(mǎn)足:該公式說(shuō)明,信號(hào)可能到達(dá)的最早時(shí)刻不能早于信號(hào)正確鎖存的時(shí)刻。該不等式可以重寫(xiě)為:其中就是最短時(shí)鐘周期T。因此,時(shí)鐘周期T必須比大,而最大時(shí)鐘頻率不能超過(guò)1/T。從中我們可以看到,時(shí)鐘最終決定管線深度,除了這一限制,如果考慮價(jià)格,即流水線間接成本,最好的設(shè)計(jì)通常不是最大的流水線深度。在一個(gè)流水線系統(tǒng)的硬件設(shè)計(jì),必須考慮價(jià)格和性能的權(quán)衡。一般來(lái)說(shuō),價(jià)格相對(duì)深度的流水線流水線成線性增長(zhǎng)。流水線深度一直是影響處理器效率的重要因素,流水線深度的增加可以讓處理器時(shí)鐘頻率進(jìn)一步提高,但隨著流水線深度的增長(zhǎng)帶來(lái)的處理器的單周期執(zhí)行效率降低、發(fā)熱量上升,同時(shí)容易產(chǎn)生分支預(yù)測(cè)等問(wèn)題反面影響也會(huì)加劇,因此流水線長(zhǎng)度的尺度把握一直是處理器設(shè)計(jì)中的一個(gè)重要核心問(wèn)題。在設(shè)計(jì)流水線,要綜合各方面的因素,根據(jù)最佳性?xún)r(jià)比的要求來(lái)選擇流水線的最佳段數(shù)。流水線處理器設(shè)計(jì)流水線處理器設(shè)計(jì)中的主要問(wèn)題就是縮小實(shí)際情況與理想假設(shè)之間的差異。所有關(guān)于流水線處理器的設(shè)計(jì)技術(shù),都可以看作是為解決這三個(gè)挑戰(zhàn)而進(jìn)行的努力。保持流水段均衡要流水化的運(yùn)算就是每個(gè)指令周期所要進(jìn)行的工作。一個(gè)典型的指令周期可以根據(jù)功能劃分成以下5個(gè)基本分量:取指(IF,Instructionfetch)譯碼(ID,Instructiondecode)取操作數(shù)(OF,Operand(ds)fetch)執(zhí)行(EX,Instructionexecution)存儲(chǔ)(OS,Operandstore)一個(gè)典型的指示,從取指令周期開(kāi)始,然后解碼,它決定了指令完成操作。一個(gè)指令是通常帶有一個(gè)或多個(gè)操作數(shù),操作數(shù)在寄存器或內(nèi)存,這取決于使用的尋址方式。一旦所需的錯(cuò)誤計(jì)數(shù)都準(zhǔn)備好了,你可以執(zhí)行指定的操作指令。實(shí)施所產(chǎn)生的結(jié)果存儲(chǔ)起來(lái),就算結(jié)束指令周期。分段指令周期是一個(gè)自然的方式是按照5個(gè)基本算術(shù)元件劃分,每個(gè)業(yè)務(wù)組件對(duì)應(yīng)一個(gè)流動(dòng)部分,造成a5stage指令流水線,我們稱(chēng)這些為基本指令流水線,簡(jiǎn)稱(chēng)槍花線。在與流水線,邏輯指令周期將被映射到5個(gè)物理機(jī)器周期。機(jī)器周期,指令周期的比例為5,這是反映了流動(dòng)的程度和水段大小。定量的水段設(shè)計(jì)成指令周期分割平衡水段,以便盡量減少一些內(nèi)部分裂。定量的水部分的自然功能分區(qū)開(kāi)始。作為基本算術(shù)組件。多個(gè)延遲更小的組件可以組合成一個(gè)新的組成部分,以獲取更平衡線。另外一個(gè)平衡線方法是相反的,不是有一個(gè)較短的延遲元件組合,但會(huì)延遲較長(zhǎng)的操作部件被分成多個(gè)短時(shí)延的組成部分。該方法延遲短的組成部分為參考,長(zhǎng)潛伏期操作部件分成較小的部分,使每一個(gè)組件的延遲和參考元件延遲幾乎。這將導(dǎo)致在一個(gè)機(jī)器周期粒度更細(xì),在更高程度。在具體進(jìn)行指令流水線設(shè)計(jì)的時(shí)候,這兩種方法可以結(jié)合起來(lái)使用。不管在什么情況下,量化流水段的目標(biāo)都是盡量減小內(nèi)部碎片的開(kāi)銷(xiāo)。統(tǒng)一指令類(lèi)型第二線的理想假設(shè)需要線應(yīng)重復(fù)同樣的操作。為廣大的指令流水線,重復(fù)相同的操作理想的假設(shè)是不成立的。指令流水線指令重復(fù)處理不同的指令類(lèi)型。雖然指令周期重復(fù),但每次過(guò)程的不同類(lèi)型的指令。不同的指令類(lèi)型有不同的資源要求,每個(gè)組成部分的業(yè)務(wù)訂單可能不一樣。指令流水線的要求,滿(mǎn)足不同需求,您必須提供所有類(lèi)型的指令所需的所有操作元件的超集。一個(gè)單一的指令類(lèi)型可能不需要所有的流動(dòng)剖面線。一個(gè)單一的指令類(lèi)型,不需要水段為某種形式的失敗或架空,即外部碎片。目的的統(tǒng)一指揮,是盡量減少所有指令式外碎片。要完成一次運(yùn)算,計(jì)算機(jī)必須完成一下三個(gè)基本任務(wù):算術(shù)操作數(shù)據(jù)移動(dòng)指令定序算術(shù)運(yùn)算包括指定的操作執(zhí)行算術(shù)和邏輯運(yùn)算,它最突出的部分操作,所以經(jīng)常和整個(gè)操作是等同的。一個(gè)處理器能夠支持大量的算術(shù)運(yùn)算式。數(shù)據(jù)移動(dòng)將負(fù)責(zé)操作數(shù)和結(jié)果存儲(chǔ)在地址的移動(dòng)。通常是內(nèi)存地址的層次和專(zhuān)業(yè)指示移動(dòng)數(shù)據(jù)。指令序列負(fù)責(zé)指令序列的測(cè)定。通常的運(yùn)作程序,含有大量的指令,通過(guò)執(zhí)行一系列指令需要完成操作。該指令序列,或打電話(huà)程序,可以通過(guò)指令本身的確定。如何將這三個(gè)基本任務(wù)分派給ISA中的各種指令,是指令集實(shí)際中的關(guān)鍵問(wèn)題。受RISC體系結(jié)果的影響,現(xiàn)在的大多數(shù)指令集體系結(jié)構(gòu)都有一些共同的特征。這些體系結(jié)果包括Hewlett-Packard的Precision體系結(jié)構(gòu),IBM的Power體系結(jié)構(gòu),IBM/Motorola的PowerPC體系結(jié)構(gòu),還有Digital的Alpha體系結(jié)構(gòu)。這些現(xiàn)代ISA傾向于采用定長(zhǎng)指令、正交的指令格式、load/store型體系結(jié)構(gòu)和簡(jiǎn)單的尋址模式。這些體系結(jié)構(gòu)中的大多數(shù)都能與指令流水線很好的協(xié)調(diào)起來(lái)。在一個(gè)典型的現(xiàn)代RISC體系結(jié)構(gòu)中,指令集采用一種專(zhuān)門(mén)的指令類(lèi)型來(lái)完成三個(gè)基本任務(wù)中的一個(gè),也就是說(shuō),每一種指令類(lèi)型只完成三個(gè)基本任務(wù)中的一個(gè)。根據(jù)三個(gè)基本任務(wù),可以將指令分成三種類(lèi)型:ALU指令完成算術(shù)和邏輯運(yùn)算Load/store指令完成數(shù)據(jù)在寄存器及存儲(chǔ)器間的移動(dòng)分支指令控制執(zhí)行指令的順序ALU指令所執(zhí)行的算術(shù)邏輯操作嚴(yán)格地針對(duì)寄存器操作數(shù)進(jìn)行,只有l(wèi)oad和store指令能訪問(wèn)數(shù)據(jù)存儲(chǔ)器。Load/store指令和分支指令都采用比較簡(jiǎn)單的尋址模式,通常只支持帶偏移量的寄存器間接尋址模式。對(duì)于分支指令,還支持PC相對(duì)尋址。在下面列出關(guān)于前兩種指令類(lèi)型的詳細(xì)規(guī)范,其中假設(shè)使用了指令cache(I-cache)和數(shù)據(jù)cache(D-cache)。比較表3.1與表3.1中的兩種主要指令類(lèi)型規(guī)范,我們可以看到,兩種指令類(lèi)型的初始化分量比較類(lèi)似,然而后面的分量有些差異。這些語(yǔ)意上的差異將導(dǎo)致不同的資源需求。基本運(yùn)算分量ALU指令類(lèi)型IF-取指令(訪問(wèn)I-cache)ID-解碼指令OF-訪問(wèn)寄存器文件EX-執(zhí)行ALU操作OS-回寫(xiě)寄存器文件表3.1ALU指令類(lèi)型規(guī)范基本運(yùn)算分量Load指令store指令I(lǐng)F-取指令(訪問(wèn)I-cache)-取指令(訪問(wèn)I-cache)ID-解碼指令-解碼指令OF-訪問(wèn)寄存器文件(基地址)-生成有效地址(基地址+偏移量)-訪問(wèn)(讀)內(nèi)存(訪問(wèn)D-cache)-訪問(wèn)FP寄存器文件(寄存器操作數(shù)及基地址)EX--OS-回寫(xiě)寄存器文件-生成有效地址(基地址+偏移量)-訪問(wèn)(寫(xiě))內(nèi)存(訪問(wèn)D-cache)表3.2Load/store指令類(lèi)型規(guī)范統(tǒng)一不同指令類(lèi)型主要是將不同資源需求有效的整合到一條指令流水線中去,使得這條流水線適合于所有的指令類(lèi)型。整合的目標(biāo)是,盡量減少流水線所需要的資源總數(shù),同時(shí)盡量提高流水線中所有資源的利用率。通常,資源的整合過(guò)程包含以下三個(gè)步驟。分析每種指令類(lèi)型的運(yùn)算分量序列,確定相應(yīng)的資源需求。找出指令類(lèi)型之間的共性,合并相同的運(yùn)算分量,已使用相同的流水段。如果在不違背指令語(yǔ)意的情況下存在一定的靈活性,可以改變或者重新排列分量的順序,以便進(jìn)一步的整合??梢詫⑦@一過(guò)程應(yīng)用到表3.1和表3.2中。ALU,load,store指令類(lèi)型的規(guī)范總結(jié)如圖3.3所示。現(xiàn)在我們由上至下實(shí)施統(tǒng)一的過(guò)程,檢查3個(gè)分量的序列合要求提供支持的硬件資源。這個(gè)過(guò)程產(chǎn)生了指令流水線各段的定義。ALULOADSTORE取指令取指令取指令更新PC更新PC更新PCIF解碼解碼解碼ID讀寄存器讀寄存器讀寄存器RDALU.Op生成地址生成地址ALU讀內(nèi)存寫(xiě)內(nèi)存MEM寫(xiě)寄存器寫(xiě)寄存器WB圖3.3ALU,load,store指令類(lèi)型的規(guī)范總結(jié)所有3種指令類(lèi)型都有相同的IF和ID分量,因此,這兩個(gè)運(yùn)算分量可以很容易的合并起來(lái),并用來(lái)定義流水線的前兩個(gè)段,即IF和ID段,從而完成取指和譯碼工作。所有3種指令類(lèi)型的OF分量都要讀寄存器文件。ALU指令訪問(wèn)兩個(gè)寄存器并且獲得寄存器操作數(shù);load指令訪問(wèn)一個(gè)寄存器并獲得地址;store指令訪問(wèn)一個(gè)寄存器并且獲得操作數(shù),訪問(wèn)另外一個(gè)寄存器以獲得基地址。在3中情況下都要訪問(wèn)一個(gè)或者兩個(gè)寄存器,這些相似的分量可以合并到流水線的第三段,成RD段并從寄存器文件讀取最多兩個(gè)寄存器操作數(shù)。因此寄存器文件在每個(gè)時(shí)鐘周期內(nèi)必須支持兩個(gè)獨(dú)立的并行操作數(shù)。ALU指令要求有一個(gè)ALU功能單元來(lái)完成必要的算術(shù)邏輯運(yùn)算。雖然load,store指令不需要執(zhí)行這樣的操作,但是他們需要生成有效的地址來(lái)訪存??梢钥闯觯刂飞煽梢杂葾LU功能單元來(lái)完成。因此,這些分量可以合并到流水線第4段,成為ALU段并包含一個(gè)ALU功能單元,完成算術(shù)邏輯運(yùn)算或者有效地址的生成。ALU和load指令都需要想寄存器寫(xiě)回結(jié)果,這是他們的最后一個(gè)運(yùn)算分量。ALU指令將寄存器操作的結(jié)果寫(xiě)回寄存器,load將訪存的數(shù)據(jù)寫(xiě)入到目標(biāo)寄存器。ALU指令不需要訪存,因此,理論上向目標(biāo)寄存器回寫(xiě)這一過(guò)程可以在ALU段之后立即進(jìn)行。然而為了load指令回寫(xiě)分量統(tǒng)一起來(lái),ALU指令的寄存器回寫(xiě)分量向后推遲了一段,在流水線的第6段進(jìn)行,成為WB段。這將導(dǎo)致ALU指令在MEM段產(chǎn)生一個(gè)空閑周期。這是一種外部碎片并將給流水線帶來(lái)一些效率損失。通過(guò)對(duì)不同指令類(lèi)型的整合,可以得到一條6級(jí)流水線,如圖3.3右側(cè)所示。減少流水線停頓第三線理想的假說(shuō)認(rèn)為,流水線執(zhí)行的操作是相互獨(dú)立的。在一個(gè)等級(jí)的流水線,可能有不同的操作處理的指令流水線,具有最大鉀不同的指示,同時(shí)在流水線。這些指令可能不是相互獨(dú)立的。事實(shí)上,這些指令通常與。如果流水線指令不相關(guān),將有助于流水線流動(dòng),或者說(shuō),指令通過(guò)線路沒(méi)有任何流水線攤位。如果指令相關(guān)的,它必須檢測(cè)和解決有關(guān)。該解決方案可能需要流水線攤位。設(shè)計(jì)的挑戰(zhàn),目的是減少流量減少流水線攤位,防止通量下降率。關(guān)于具體怎樣判斷各種相關(guān)并且將其化解,將在下一章中進(jìn)行討論。流水線中各種相關(guān)及其處理我們知道級(jí)數(shù)為n的流水線,在理想情況下可以提高處理性能n倍。但是,在實(shí)際中,有一些情況會(huì)阻止指令流中的下一條指令在預(yù)定的時(shí)鐘周期內(nèi)執(zhí)行,這些情況就稱(chēng)為“相關(guān)冒險(xiǎn)”或者“相關(guān)”。這一章,我們?cè)敿?xì)的討論流水線中各種相關(guān)產(chǎn)生的原因及其處理方法。流水線中相關(guān)流水線相關(guān)阻止了流水線以理想的加速比改進(jìn)處理器的性能。在流水線設(shè)計(jì)中,我們需要考慮以下三種相關(guān):資源相關(guān):當(dāng)硬件無(wú)法支持所有可能,同時(shí)重疊執(zhí)行指令組合,將有資源沖突,導(dǎo)致相關(guān)資源,也被稱(chēng)為“結(jié)構(gòu)”。數(shù)據(jù)相關(guān):在流水線重疊執(zhí)行指令,如果指令依賴(lài)于前面的另一個(gè)指令執(zhí)行的結(jié)果,導(dǎo)致流水線攤位,你有數(shù)據(jù)相關(guān)??刂葡嚓P(guān):這種相關(guān)主要是由于轉(zhuǎn)移指令和其他能夠改變PC內(nèi)容的指令,在流水線進(jìn)行處理時(shí)產(chǎn)生的。在接下來(lái)幾節(jié)中我們將對(duì)這三種相關(guān)分別進(jìn)行討論。資源相關(guān)通常,一些功能不完全流水線是產(chǎn)生資源相關(guān)的基本原因。然后,當(dāng)一個(gè)指令序列的許多指令都使用這一功能,該指令將不在流水線連續(xù)起動(dòng)過(guò)程。另一個(gè)原因,流水線沖突的主要原因是,在系統(tǒng)無(wú)行中的所有命令組合,提供了足夠的硬件資源。例如,一個(gè)機(jī)可能只有注冊(cè)成立寫(xiě)端口,但是在某些情況下,可能需要在一個(gè)循環(huán)寄存器寫(xiě)動(dòng)作,這導(dǎo)致資源。當(dāng)一個(gè)指令序列滿(mǎn)足資源,流水線將暫停一個(gè)指令的執(zhí)行需要知道的資源閑置。許多流水線處理器指令和數(shù)據(jù)訪問(wèn)只使用一個(gè)內(nèi)存流水線。因此,當(dāng)一個(gè)指令是必要的操作數(shù)的內(nèi)存訪問(wèn)操作,數(shù)據(jù)訪問(wèn)會(huì)占用內(nèi)存端口,那么處理器將是下一個(gè)指令存取,即線已暫停一個(gè)時(shí)鐘周期,以便按照指令集。我們?cè)谠O(shè)計(jì)可以避免資源沖突。此外,在其他條件相同的情況下,沒(méi)有資源沖突處理器始終是更好地讓資源沖突的處理器有一個(gè)較小的消費(fèi)物價(jià)指數(shù)。然而,在具體的設(shè)計(jì)中,在許多情況下,我們?nèi)匀豢梢源嬖谫Y源沖突,主要有2個(gè)原因,一是降低成本,此外,是降低單位延遲。所有過(guò)流部件可以使機(jī)器成本超出承受能力。如果在實(shí)踐中,一些沖突發(fā)生的頻率較低,可能不值得我們完全避免他們付出高昂的代價(jià)。此外,設(shè)置組件的流量或不完全流水線的成分,有可能會(huì)比完全流水線部件產(chǎn)生較小的總延遲。例如,稱(chēng)重,疾病預(yù)防控制中心7600和聚合物2012floating點(diǎn)單位完全放棄了流水線設(shè)計(jì),并選擇一個(gè)較小的延遲(每個(gè)操作數(shù)周期)方案。允許某些資源沖突可以減少部件的等待時(shí)間,因此,設(shè)計(jì)師可以在其他一些方面的機(jī)器的性能得到改善,從而彌補(bǔ)資源沖突不利。數(shù)據(jù)相關(guān)數(shù)據(jù)相關(guān)主要有3種,分別是指令相關(guān)、主存空間數(shù)相關(guān)和通用寄存器組相關(guān)。解決數(shù)據(jù)相關(guān)的方法主要有兩種,一種是退后分析法,在遇到數(shù)據(jù)相關(guān)時(shí),退后本條指令的分析,直至所需要的數(shù)據(jù)寫(xiě)入到相關(guān)的存儲(chǔ)單元中。另一種方法是設(shè)置專(zhuān)用通路,即不必等待所需要的數(shù)據(jù)寫(xiě)入到相關(guān)的存儲(chǔ)單元中,而是經(jīng)專(zhuān)門(mén)設(shè)置的數(shù)據(jù)通路讀取所需要的數(shù)據(jù)。指令相關(guān)如果一個(gè)指令的內(nèi)容取決于前一個(gè)指令執(zhí)行的結(jié)果,可以產(chǎn)生相關(guān)的指令。之所以會(huì)有相關(guān)的指令,關(guān)鍵是由于馮諾伊曼型機(jī)器指令允許修改的。如果規(guī)定在程序運(yùn)行過(guò)程中不允許修改的指令,不會(huì)出現(xiàn)相關(guān)的指令。此外,沒(méi)有修改指令也帶來(lái)了重要的好處是可以實(shí)現(xiàn)的程序是折返和程序的遞歸調(diào)用。然而,為了滿(mǎn)足需要的程序設(shè)計(jì)的靈活性,有時(shí)需要在運(yùn)行過(guò)程中的修改指令,可以通過(guò)設(shè)置“執(zhí)行”的指令來(lái)解決?!眻?zhí)行“370機(jī)指示提供一個(gè)命令。由於指令改為“執(zhí)行”操作的指令格式,指令相關(guān)變成幾個(gè)相關(guān)的,那么根據(jù)統(tǒng)一編號(hào)與處理。主存空間操作數(shù)相關(guān)由于操作數(shù)可能存放于主存,也可能存放在寄存器中,因此數(shù)相關(guān)可以分為主存空間操作數(shù)相關(guān)合通用寄存器組相關(guān)。一些內(nèi)存空間是相鄰的指令要求出現(xiàn)在同一單位第一次到主存儲(chǔ)器寫(xiě)入和讀出的協(xié)會(huì)。如果前面的“執(zhí)行”和“分析”背后的相鄰的指示,在時(shí)間上重疊,將使“分析”的指令后,讀取的操作不需要的程序指令執(zhí)行完成之前,應(yīng)該寫(xiě)的結(jié)果,從而導(dǎo)致錯(cuò)誤。這種情況下避免錯(cuò)誤,只有回到下一條指令的“分析”讀操作。為推動(dòng)閱讀后,常用的方法是通過(guò)控制讀,寫(xiě)幾個(gè)安排不同的訪問(wèn)優(yōu)先解決。因?yàn)橹醒胩幚砥骱鸵粋€(gè)以上的通道可以直接訪問(wèn)主內(nèi)存,中央處理器訪問(wèn)可能被預(yù)取指令,讀取或?qū)懭?,信道接入可以讀,寫(xiě)數(shù)據(jù),以控制通道,通道狀態(tài)字。這些訪問(wèn)請(qǐng)求,如果發(fā)出的同時(shí),會(huì)有沖突,因此需要由鎖存控制根據(jù)預(yù)先確定的優(yōu)先隊(duì)列處理。只要寫(xiě)作水平高于閱讀水平的反應(yīng),對(duì)自然的解決這個(gè)主內(nèi)存空間相關(guān)的數(shù)。通用寄存器組相關(guān)在寄存器-寄存器型(RR型)指令和寄存器-存儲(chǔ)器型(RS)型指令的執(zhí)行過(guò)程中可能發(fā)生通用寄存器組數(shù)相關(guān)。看下面兩條指令:k:OP,;=()OP()K+1:OP;=()OP()如果發(fā)生:稱(chēng)數(shù)相關(guān)。如果發(fā)生:稱(chēng)數(shù)相關(guān)。發(fā)生通用寄存器數(shù)相關(guān)的情況與寄存器本身的結(jié)構(gòu)合所采用的控制時(shí)序等也有關(guān)系。解決通用寄存器數(shù)相關(guān)主要有以下幾種方法:1.如果通用寄存器所使用的觸發(fā),但也在通用寄存器算術(shù)單元之間建立直接數(shù)據(jù)路徑,即不設(shè)置緩沖的注冊(cè)或鎖存器,不是通用寄存器數(shù)據(jù)的相關(guān)性。由于觸發(fā)器允許在同一節(jié)奏之間的循環(huán)移位寄存器。在這種情況下,不需要分析周期,在節(jié)奏可以完成從通用寄存器的選擇分別讀取操作等操作,操作數(shù)的算術(shù)單元完成操作,并將結(jié)果寫(xiě)回寄存器。如果構(gòu)成通用寄存器的不是D觸發(fā)器,或者在通用寄存器到運(yùn)算器之間設(shè)有緩沖寄存器或者鎖存器,則會(huì)發(fā)生寄存器數(shù)相關(guān)。2.將分析指令推后一個(gè)周期執(zhí)行。此方法跟前面處理主存空間數(shù)相關(guān)一樣,完全可以解決問(wèn)題。3.將分析指令推后一個(gè)節(jié)拍。這種方法跟方法2相似,只是分的更細(xì)了。與方法2相比較,此方法在控制上稍嫌復(fù)雜,但是在速度上卻要快一些。4.設(shè)置“相關(guān)專(zhuān)用通路”。在推動(dòng)“分析”和“設(shè)置專(zhuān)用道”是解決了流水線處理2種基本方法。為減少的速度,成本的硬件設(shè)備,基本不增加。后者是增加硬件成本和維修設(shè)備,流水線效率。在流水線的設(shè)計(jì)過(guò)程,權(quán)衡之間運(yùn)行速度和價(jià)格等因素,選擇適當(dāng)?shù)姆椒ā?刂葡嚓P(guān)相關(guān)的數(shù)據(jù),控制將產(chǎn)生更大的性能損失。控制程序執(zhí)行的方向可能造成的相對(duì)變化,有時(shí),我們也被稱(chēng)為全球相關(guān)。程序的執(zhí)行可能改變方向的無(wú)條件轉(zhuǎn)移指令,一般條件轉(zhuǎn)移,轉(zhuǎn)移,復(fù)雜條件,中斷子程序調(diào)用。這里有一些常用的處理方法。猜測(cè)法設(shè)有條件轉(zhuǎn)移指i,其兩個(gè)分支分別為i和p,若轉(zhuǎn)移成功時(shí)按原來(lái)的順序從i接著往下執(zhí)行;若轉(zhuǎn)移成功是則轉(zhuǎn)向p執(zhí)行。流水方式是同時(shí)解釋多條指令,因此,當(dāng)指令i進(jìn)入流水線,后面進(jìn)i+1還是進(jìn)p,只有等條件碼建立才能知道,而這一般要等這條條件轉(zhuǎn)移指令快流出流水線時(shí)才行。如果在此期間讓i后的指令都等著,流水線就會(huì)“斷流”,性能急劇下降。這種時(shí)候,絕大多數(shù)機(jī)器都采用猜測(cè)法來(lái)解決這一問(wèn)題。所以,猜想法選擇哪支比較好?如果兩家分支概率接近,應(yīng)保持原來(lái)的順序,繼續(xù)執(zhí)行我+1,因?yàn)檫@些指令預(yù)取指令緩沖區(qū),可以迅速清除從指令緩沖區(qū),進(jìn)入流水線不等待。如果你選擇的成功轉(zhuǎn)讓的分支,該命令是不可能在緩沖區(qū)的指令,這將需要很長(zhǎng)的時(shí)間去,實(shí)際上停止線。預(yù)測(cè)方法,應(yīng)能保證預(yù)測(cè)錯(cuò)誤恢復(fù)分支點(diǎn)原來(lái)的網(wǎng)站,通常有三種方式。一個(gè)是在指令解碼,好操作,轉(zhuǎn)讓條件代碼之前出現(xiàn)的任何操作;一個(gè)是讓他做完手術(shù),但不返回結(jié)果;另一個(gè)是讓它和正常情況下,不分青紅皂白地解釋?zhuān)灰锌赡芷茐牡脑紶顟B(tài)是后備緩沖區(qū)儲(chǔ)存期,一旦猜錯(cuò)了后備緩沖區(qū)的內(nèi)容恢復(fù)分支點(diǎn)。早期前用2種方法?,F(xiàn)在,隨著價(jià)格,體積,設(shè)備技術(shù)的進(jìn)步,一般采用第三種方法來(lái)確保效率。為了在猜錯(cuò)時(shí)能盡快回復(fù)到原分支點(diǎn),轉(zhuǎn)入另一分支,在沿猜測(cè)路徑向前流動(dòng)的同時(shí),還可以由存貯器預(yù)取轉(zhuǎn)移成功分支的頭幾條指令放在轉(zhuǎn)移目標(biāo)指令緩沖器中。以便在猜錯(cuò)時(shí),不必從訪存取p開(kāi)始,減少了流水線的等待時(shí)間。加快和提前形成條件碼盡快、盡早獲得條件碼以便提前知道流向哪個(gè)分支,是會(huì)有利于流水機(jī)器簡(jiǎn)化對(duì)轉(zhuǎn)移的處理的。這可以從兩方面采取措施。一是加快質(zhì)疑教學(xué)內(nèi)部條件代碼的形成,從指令執(zhí)行前結(jié)束,形成反應(yīng)結(jié)果的操作條件碼。例如,結(jié)果是積極的,消極的和無(wú)條件的代碼可以在手術(shù)前形成。amdahl470v/6英寸按照這個(gè)思路,在流水線的操作輸入裝置設(shè)置運(yùn)氣,幾乎可以確定其條件指令代碼,以便具體操作可操作的結(jié)果狀態(tài)代碼的指令發(fā)送到分析組件。另一方面是在一個(gè)程序預(yù)先形成的條件代碼,這是特別適合回收計(jì)劃在判斷是否循環(huán)繼續(xù),轉(zhuǎn)讓的情況。例如,F(xiàn)ORTRAN做周期,執(zhí)行循環(huán)終端語(yǔ)句,總是對(duì)循環(huán)控制數(shù)減1,如果降低的結(jié)果for0out的回路,或繼續(xù)循環(huán)身體的一部分,這是通常使用的1和2等于零的條件轉(zhuǎn)移指令的實(shí)現(xiàn)。為了使等于零的條件轉(zhuǎn)移指令的條件代碼可以形成,可以減少to1of事前指示和不相關(guān)的其他指令之前,甚至在推進(jìn)到循環(huán)開(kāi)始。采取轉(zhuǎn)移延遲這是一個(gè)軟件方法靜態(tài)指令調(diào)度技術(shù)。沒(méi)有額外的硬件,在編譯目標(biāo)教學(xué)計(jì)劃,將轉(zhuǎn)移指令和前面不相關(guān)的一個(gè)或多個(gè)指令交換位置,讓成功轉(zhuǎn)移一直延遲到一個(gè)或一個(gè)以上的指令執(zhí)行后。這樣,可以使轉(zhuǎn)移造成的性能損失降低到0。加快短循環(huán)程序的處理一個(gè)小於長(zhǎng)度的指令緩沖區(qū)容量可以短期循環(huán)程序整個(gè)一次性到指令緩沖區(qū),并暫停預(yù)取指令執(zhí)行周期,避免指令預(yù)取指令緩沖區(qū)循環(huán)指令執(zhí)行被開(kāi)發(fā),可以減少內(nèi)存存取重復(fù)取號(hào);但因?yàn)檠h(huán)分支概率高,所以退出循環(huán)結(jié)束的條件轉(zhuǎn)移指令不斷猜測(cè)循環(huán)分支,由于減少了條件分支線斷線造成機(jī)會(huì)。有些機(jī)器也要執(zhí)行,讓預(yù)取指令都在正常使用的指令緩沖區(qū),轉(zhuǎn)移到目標(biāo)指令緩沖區(qū)。在檢測(cè)周期,可以轉(zhuǎn)移到指令緩沖區(qū)的內(nèi)容作為短周期控制程序,消除了第一個(gè)周期,再?gòu)闹鲀?nèi)存和短周期中的程序指令操作的開(kāi)銷(xiāo)。有些機(jī)器允許的指令緩沖寄存器連接使用,允許更大的循環(huán)程序也可以加速處理。中斷處理與流水線調(diào)度中斷處理和非線性流水線及多功能流水線調(diào)度問(wèn)題也是設(shè)計(jì)指令流水線時(shí)非常值得注意的兩個(gè)大問(wèn)題,在本章,我們將對(duì)這兩大問(wèn)題進(jìn)行初步的研究。中斷處理中斷導(dǎo)致線路斷開(kāi)。然而,它的概率比條件的概率要低得多,這也是一個(gè)隨機(jī)事件。因此,機(jī)加工中斷是如何處理現(xiàn)場(chǎng)的保護(hù)和斷點(diǎn)恢復(fù),而不是如何縮短線路斷開(kāi)時(shí)間。在執(zhí)行指令在我中斷,應(yīng)在執(zhí)行結(jié)束指令指示我,我+1已經(jīng)沒(méi)有開(kāi)始執(zhí)行的地方,但水是在同一時(shí)間機(jī)器解釋多個(gè)指令,指示我,我++1…可能已進(jìn)入流水線和部分解釋。一個(gè)流,其中的一些指令流的命令我吧。早期水機(jī),如360/91,為簡(jiǎn)化中斷處理,采用不精確斷點(diǎn)”方法。無(wú)論是否命令我,線路中斷,不再允許后續(xù)指令尚未進(jìn)入進(jìn)入,但已在流水線不斷流動(dòng)的所有指令執(zhí)行,然后轉(zhuǎn)移到中斷處理程序。在這方面,斷點(diǎn)當(dāng)然不會(huì)是我,可能背后我+1,2+1…斷點(diǎn)是不確定的。只有當(dāng)指令在第一段中斷時(shí),我的反應(yīng),斷點(diǎn)是準(zhǔn)確的。這種“不精確斷點(diǎn)”方法不好的編程和程序的調(diào)試。后來(lái),水機(jī)多采用“精確斷點(diǎn)”的方法,如amdahl470/6。無(wú)論我在教學(xué)中,響應(yīng)中斷,中斷處理程序領(lǐng)域所有相應(yīng)的我,我到流水線指令的原始場(chǎng)均可以恢復(fù)。這種方法需要許多支持注冊(cè),保證線路的每個(gè)指令能夠恢復(fù)原來(lái)的領(lǐng)域。如前所述,這些寄存器也”指令重試”,不需要另外設(shè)置。流水線調(diào)度由于線性線在每個(gè)任務(wù)的執(zhí)行,每個(gè)通過(guò)只有一個(gè),所以每個(gè)鏡頭都是一個(gè)新的任務(wù),這些任務(wù)的線,沒(méi)有競(jìng)爭(zhēng)相同的水段。非線性流水線是不同的。因?yàn)椴糠质前才胖g的反饋回路,一個(gè)任務(wù)在運(yùn)行過(guò)程中,可反復(fù)通過(guò)同一段或在一定的時(shí)期。所以,如果每一次的線到一個(gè)新的任務(wù),將產(chǎn)生幾個(gè)任務(wù)競(jìng)爭(zhēng)同一時(shí)期使用的功能沖突現(xiàn)象。為了不沖突,有適當(dāng)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論