一種多軸運動處理的流水線技術(shù)_第1頁
一種多軸運動處理的流水線技術(shù)_第2頁
一種多軸運動處理的流水線技術(shù)_第3頁
一種多軸運動處理的流水線技術(shù)_第4頁
一種多軸運動處理的流水線技術(shù)_第5頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

一種多軸運動處理的流水線技術(shù)

0.對計算機性能的提高新產(chǎn)品的出現(xiàn)給計算機的開發(fā)帶來了很大的變化。一方面,人們都在不斷的嘗試開發(fā)新的元件,不斷改進工藝,來提高計算機的性能。另一方面,人們也嘗試通過改進計算機的組織結(jié)構(gòu)來提高計算機的性能。在眾多的體系結(jié)構(gòu)改進中,流水線技術(shù)的應用起著舉足輕重的作用。1.利用現(xiàn)代信息技術(shù)進行產(chǎn)品制作的技術(shù)工廠都使用流水線來生產(chǎn)產(chǎn)品。流水線利用了這樣一個原理,一個產(chǎn)品的生產(chǎn)需要好幾個制作步驟。我們使用流水技術(shù)來生產(chǎn)產(chǎn)品,可以使產(chǎn)品的各個制作步驟同時進行,這樣便提高了生產(chǎn)一個產(chǎn)品的效率。在計算機的內(nèi)部同樣也大量采用了流水線技術(shù)。如圖1所示:每一級都對到達的信息進行相應的加工處理。1.1pipe機制簡介流水線技術(shù)能用硬件來實現(xiàn),也可以用軟件來實現(xiàn)。所謂軟件流水線就是讓各個軟件程序以流水線的方式運行,即一個程序的輸出連接到另一個程序的輸入。并且軟件流水線的實現(xiàn)不受機器硬件的影響(硬件可以支持硬件流水技術(shù),也可以不支持)。例如:在Unix系統(tǒng)中提供了一個Pipe機制,可以用來構(gòu)成一個軟件流水線。Unix的Shell允許用戶創(chuàng)建如下一個軟件流水線:將以下三個程序cat、sed和more連接成一個流水線:其中程序cat將文件x的一個副本寫出作為其輸出,該輸出作為程序sed的輸入。程序sed處于流水線的中間,它從cat接收輸入,然后進行處理(把出現(xiàn)的每個字friend轉(zhuǎn)換成字partner)并發(fā)送輸出到more,流水線的最后一個程序more將輸入接收到的所有東西都顯示在用戶屏幕上。從程序員的角度來看,使用軟件流水線有兩個優(yōu)點:其一,使用軟件流水為解決復雜問題提供了途徑。其二,軟件流水線可以使不同的程序再利用。1.2數(shù)據(jù)處理內(nèi)部處理硬件流水線是指:計算硬件在工作的時候就采用流水線的原理,這樣來提高處理數(shù)據(jù)的速度和效率。硬件流水線通常分為兩類:(1)數(shù)據(jù)流水線(2)指令流水線數(shù)據(jù)流水線:將數(shù)據(jù)的處理過程按照流水線的原理一步一步的處理,特別適用于計算機處理來自網(wǎng)絡的數(shù)據(jù)。例如:對于從網(wǎng)絡上獲取的數(shù)據(jù)包需要進行三個處理過程:數(shù)據(jù)包解壓、完整性驗證、加工處理。我們可以采用一個處理器來進行完成所有三個步驟,也可以采用三個處理器來組成數(shù)據(jù)處理流水線。第一個處理器完成數(shù)據(jù)包解壓,第二個處理器完成完整性驗證,最后一個處理器進行加工處理。這樣便可以在單個處理器性能無法再提升的前提下,同樣提高計算機處理數(shù)據(jù)的能力。指令流水線:計算機執(zhí)行指令也是分為好幾個步驟來進行的,我們采用流水線的方式來進行這些步驟的執(zhí)行。2.控制部分描述由于計算機的工作就是取指令、執(zhí)行指令,所以指令流水線在計算機中得到了最廣泛的應用。所以也就是本文我們討論的重點。簡單起見我們把處理一條指令分成兩個階段:取指令和執(zhí)行指令。在一條指令執(zhí)行的期間,若主存還有時間未被訪問,這個時間可用于取下條指令。因此,取下一條指令就能和當前指令的執(zhí)行并行進行。如圖3所示:采用這種流水線的方式就使得指令的執(zhí)行效率大大提高,也提高了計算機取指令部件和執(zhí)行部件的利用率。如果取指令和執(zhí)行指令的時間是相等的,則指令的執(zhí)行周期將減少為原來的一半。為了使得指令的執(zhí)行效率進一步提高我們把流水線分成更多的階段:取指令(FI)、譯碼指令(DI)、計算操作數(shù)(CO)、取操作數(shù)(FO)、執(zhí)行指令(EI)、寫操作數(shù)(WO)一共六個階段,并假定各個階段所用的時間是相等的。則指令的執(zhí)行情況如圖4所示:如果不采用流水線技術(shù)執(zhí)行8條指令,需要48個時間單位。采用了流水線技術(shù)之后,從第7個時間開始,每過一個時間單位就能執(zhí)行完一條指令。執(zhí)行效率相當于不采用流水線技術(shù)的6倍??梢娛褂昧魉€技術(shù)可以提高計算機執(zhí)行指令的效率,而且進一步增加流水線的級數(shù),可以使整條流水線擁有更短的工作周期。6級流水就比2級流水快很多。例如,一個計算機采用2級流水第一級用30個時間單位,第二級用30個時間單位,則每過30個單位就產(chǎn)生一個運算結(jié)果。另一個計算機采用6級流水,對于某一條指令執(zhí)行完畢還是60秒,但由于采用6級流水,所以它每過10秒就產(chǎn)生一個運算結(jié)果。由于級數(shù)多就可以擁有更短的工作周期,而頻率是周期的倒數(shù)。這也正好說明為什么頻率高的CPU性能比較好了。當然流水線也不可以無線的延長下去。首先,由于現(xiàn)有芯片制造工藝的限制,頻率的提升會帶來高功耗、高發(fā)熱量的問題,而且過長的流水線意味著更加復雜的內(nèi)部結(jié)構(gòu),生產(chǎn)的良品率也難以保證。其次,指令執(zhí)行的過程中一旦執(zhí)行出錯,流水線越長排空流水線所花費的時間和代價就越大。例如:Northwood核心處理器要浪費20級工序的時間,而Prescott核心處理器就要浪費31級工序的時間!最后,由于任何電導體都會產(chǎn)生延時,流水線越長、級數(shù)越多就會導致延遲次數(shù)越多,總延時就越大,CPU完成單個任務的時間就會越長。所以流水線的長度是個需要全面衡量的問題。當然上述都是理想狀態(tài)下的流水線的性能,在實際情況中還有很多因素限制了流水線的性能的提升:(1)執(zhí)行時間不同上述的2指令流水,我們假設每個階段所用的時間都是相同的。而事實上,具體指令的各個階段的執(zhí)行時間是不一樣的。例如,指令的執(zhí)行階段會比較長一些。這樣它的上一個階段,取指令階段可能就得等待一定的時間才能排空它的緩沖。而這段時間取指令部件會處于閑置狀態(tài),沒有被充分利用。(2)控制了對方進入校園的信號假定指令3是一條轉(zhuǎn)移指令。如圖5所示,在指令3處發(fā)生了轉(zhuǎn)移,程序需要轉(zhuǎn)去執(zhí)行指令11。而這時候指令11還沒有進入到流水線當中,并沒有對它提前進行處理,這樣就沒有發(fā)揮流水線的優(yōu)點。而且指令4,5,6,7已經(jīng)被執(zhí)行了一部分,這還需要對流線進行排空操作,這更會浪費很多的時間。(3)高效訪問高效主機使用流水線技術(shù)還會遇到訪存沖突的問題。如圖4所示,在第5個時間段,指令1執(zhí)行指令可能會訪問內(nèi)存,指令2取操作數(shù)會訪問內(nèi)存,而指令5去取指令也會訪問內(nèi)存。這樣就會發(fā)生內(nèi)存的訪問沖突。所以有些指令的必須踏步等待。(4)提取目的指令有些程序的語句之間存在著相關(guān)性,造成這些語句不能并行的執(zhí)行。例如如下指令:指令1計算A加B的和并且存入寄存器C中,指令2把C的值存入內(nèi)存中。兩條指令不能完全并行執(zhí)行,指令2必須等指令1執(zhí)行完畢之后,才能把C的值存入內(nèi)存。因為這時候的C值才是最新的值,所以指令2也必須等待。3.指令沖突方面的配合對于以上的問題我們可以采用相應的辦法來緩解或解決。對于指令各個階段執(zhí)行時間不一致的問題。我采用在各個階段之間加入緩存來解決流水線的斷流和等待問題。如圖6所示對于訪存沖突問題,一方面,可以設置兩個獨立的存儲器分別存放操作數(shù)和指令,以免取指令和取操作數(shù)同時進行時互相沖突,使得取某條指令和取另一條指令的操作數(shù)實現(xiàn)時間上的重疊。另一方面,采用指令欲取技術(shù),在CPU中設置指令隊列,將指令預先取到指令隊列中排隊。在執(zhí)行指令時,當主存空閑的時候,只要指令隊列空出,就可以取下一條指令,并放到指令隊列中。從而保證執(zhí)行第n條指令時對第n+1條指令譯碼的并行執(zhí)行。對于數(shù)據(jù)相關(guān)問題,通常采用旁路技術(shù),即在執(zhí)行部件與指令部件之間設置直接傳送數(shù)據(jù)的通路,在執(zhí)行部件產(chǎn)生結(jié)果向寄存器送數(shù)的同時,把此數(shù)直接送至指令部件。如下圖所示:圖7中ALU的運算結(jié)果在送入寄存器組的同時,也送到鎖存器1,這樣就不需要等待。鎖存器1直接就獲得了下次運算所需的數(shù)據(jù),無需再訪問寄存器,節(jié)省了時間。對于轉(zhuǎn)移問題主要采用代碼優(yōu)化和預判技術(shù)來盡可能的減少轉(zhuǎn)移帶來的性能損失。(1)控制了含指令的控制使用代碼重組技術(shù),使得轉(zhuǎn)移延遲。就利用轉(zhuǎn)移指令直到下面一條指令之后才產(chǎn)生影響這一特點,在轉(zhuǎn)移指令之后安排一條有用指令來替代僅為延遲的空操作。例如如下指令其中:I代表取指令,E代表執(zhí)行,D代表存儲。流水線如下圖所示:圖8中在時間段4執(zhí)行JUMP后需要跳轉(zhuǎn)到指令105而此時指令103已經(jīng)進入流水線了,所以流水必須清除指令103,并在時間段5取來指令105來繼續(xù)建立流水線執(zhí)行。圖9中時間段3執(zhí)行的時候取來了指令102,JUMP執(zhí)行完之后須要轉(zhuǎn)去執(zhí)行指令105,正好可以指令102的執(zhí)行與105的取指令同時執(zhí)行,流水線沒有被打斷。(2)轉(zhuǎn)移歷史表動態(tài)轉(zhuǎn)移預測策略,試圖通過記錄條件轉(zhuǎn)移指令在程序中的歷史來改善預測的準確度。每個條件轉(zhuǎn)移指令都有與之關(guān)聯(lián)的一位或幾位,它們用來反映此指令的最近的歷史。處理器下次遇到此指令時會根據(jù)這些歷史記錄為經(jīng)行轉(zhuǎn)移判斷。轉(zhuǎn)移歷史表是一個與流水指令相關(guān)聯(lián)的高速緩沖存儲器。每個表項由三部分組成:轉(zhuǎn)移指令的地址;記錄的歷史位;目標指令地址。轉(zhuǎn)移歷史表作為cache對待,每次預測都觸發(fā)一次轉(zhuǎn)移歷史表中的查找,若未發(fā)現(xiàn)匹配,則用下一順序地址。若匹配,則根據(jù)表進行轉(zhuǎn)移預測。最后根據(jù)實際的執(zhí)行結(jié)果,再修改、更新轉(zhuǎn)移歷史表。4.

溫馨提示

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

評論

0/150

提交評論