欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置的制作方法

文檔序號:6434093閱讀:206來源:國知局
專利名稱:快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種流水線處理器,尤其指快速處置分支指令預(yù)測錯(cuò)誤能力特征的流水線處理器裝置。
背景技術(shù)
微處理器一般都使用流水線實(shí)現(xiàn),特別是對于高性能微處理器,其流水線劃分細(xì)致,級數(shù)較多。John Hermessy和David Patterson在其著作《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)量化研究方法》中闡述了經(jīng)典的五級流水線處理器結(jié)構(gòu)。五級流水段分別指取指、解碼、執(zhí)行、訪存、回寫,其中取指段負(fù)責(zé)訪問指令存儲器獲得指令;解碼段負(fù)責(zé)解碼指令并準(zhǔn)備指令執(zhí)行操作數(shù);執(zhí)行段負(fù)責(zé)指令執(zhí)行得到結(jié)果;訪存段負(fù)責(zé)訪問數(shù)據(jù)處理器完成數(shù)據(jù)的讀入和寫出; 回寫段完成寄存器文件和處理器狀態(tài)的更新。為提升微處理器的性能,更先進(jìn)、更復(fù)雜的技術(shù)應(yīng)用到了流水線處理器的架構(gòu)設(shè)計(jì)中。研究表明,指令之間存在一定的并行性,即前后指令之間不存在絕對的依賴關(guān)系, 而指令之間的并行執(zhí)行可以有效提高單位時(shí)間內(nèi)處理器的指令吞吐量。為充分挖掘指令級并行性,使后續(xù)無依賴關(guān)系指令盡快執(zhí)行,現(xiàn)代高性能微處理器引入了亂序推測執(zhí)行技術(shù)。 該技術(shù)通常在經(jīng)典五級流水線中增加一級發(fā)射段,用于將操作數(shù)準(zhǔn)備就緒的指令推入執(zhí)行部件并緩存操作數(shù)未就緒指令。為保證程序語義的正確性和維護(hù)精確異常、中斷,亂序推測執(zhí)行技術(shù)引入了重排序緩存(ROB,Re-Order Buffer),指令在重排序緩存中按照程序語義定義的順序依次退休。在實(shí)際實(shí)現(xiàn)中,通常只有當(dāng)指令在重排序緩存中變?yōu)樽罾现噶顣r(shí),才可以退休并更新寄存器文件和處理器狀態(tài)。因此,在亂序推測執(zhí)行微處理器中,回寫段通常被退休段所代替。分支指令影響處理器的取指。實(shí)際分支方向和目標(biāo)地址只有在執(zhí)行段才可以得到,從而導(dǎo)致了多個(gè)流水線空操作,降低了微處理器性能。為消除或降低分支指令對取指的負(fù)面影響,現(xiàn)代微處理器一般都使用分支預(yù)測技術(shù),即在執(zhí)行段之前預(yù)測分支方向和目標(biāo)地址。分支預(yù)測技術(shù)又可分為靜態(tài)預(yù)測和動(dòng)態(tài)預(yù)測兩種,預(yù)測準(zhǔn)確率與預(yù)測方法和運(yùn)行程序密切相關(guān)。一般靜態(tài)分支預(yù)測的準(zhǔn)確率在50 % 60 %左右,動(dòng)態(tài)預(yù)測的準(zhǔn)確率在80 % 99%左右。無論采用何種預(yù)測技術(shù),都存在分支預(yù)測錯(cuò)誤的情況。對于流水線較深的微處理器而言,盡早處置分支指令預(yù)測錯(cuò)誤,恢復(fù)正確路徑上的指令預(yù)取對提高處理器性能具有積極意義?,F(xiàn)有的亂序推測執(zhí)行微處理器一般都在分支預(yù)測錯(cuò)誤指令退休時(shí)統(tǒng)一處置分支預(yù)測錯(cuò)誤,即當(dāng)分支預(yù)測錯(cuò)誤指令變?yōu)橹嘏判蚓彺嬷凶罾系闹噶疃煌诵輹r(shí),排空整個(gè)流水線,并通知取指部件從正確的分支目標(biāo)地址上開始取指。這種處置方式本質(zhì)上是等待分支預(yù)測錯(cuò)誤指令之前的指令全部處置完畢后,再處理分支預(yù)測錯(cuò)誤。這種方式需等待流水線完全排空后再開始取指,因此需要多個(gè)時(shí)鐘周期才能恢復(fù)執(zhí)行,導(dǎo)致了較多的流水線空操作,影響微處理器性能。

發(fā)明內(nèi)容
為了克服現(xiàn)有的流水線處理器在遇到分支指令預(yù)測錯(cuò)誤時(shí)的存在較多流水線空操作、影響了流水線處理器性能的不足,本發(fā)明提供一種消除或大大減少分支指令預(yù)測錯(cuò)誤導(dǎo)致的流水線空操作、提升流水線處理器性能的快速處置分支指令預(yù)測錯(cuò)誤的流水線處
理器裝置。為了解決上述技術(shù)問題采用的技術(shù)方案是一種快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,包括至少按順序依次包含取指、解碼、發(fā)射、執(zhí)行、退休段的流水線處理器,其中取指部件負(fù)責(zé)從指令存儲器中獲取指令送到解碼部件,解碼部件負(fù)責(zé)譯碼指令的功能并將指令送入發(fā)射部件,發(fā)射部件將操作數(shù)準(zhǔn)備就緒的指令推入執(zhí)行部件,執(zhí)行部件完成指令的計(jì)算并將結(jié)果和執(zhí)行完成信息一起壓入退休部件,退休部件等待指令變?yōu)樽罾虾笸诵葜噶畈⑼瓿杉拇嫫魑募吞幚砥鳡顟B(tài)的更新;所述流水線處理器裝置還包括 分支預(yù)測單元,位于流水線執(zhí)行部件之前,用于提前預(yù)測分支方向和目標(biāo)地址,控制取指部件在預(yù)測目標(biāo)地址上進(jìn)行預(yù)取,并將預(yù)測方向和地址傳遞給分支結(jié)果檢測單元;分支結(jié)果檢測單元,用于計(jì)算實(shí)際分支方向和目標(biāo)地址,并與分支預(yù)測單元傳遞下來的預(yù)測分支方向和目標(biāo)地址進(jìn)行比較,若比較結(jié)果不一致,則發(fā)生分支預(yù)測錯(cuò)誤,并將預(yù)測結(jié)果傳送到分支取指重定向單元和流水線控制單元;分支取指重定向單元,用于接收分支結(jié)果檢測單元產(chǎn)生的檢測結(jié)果和實(shí)際分支目標(biāo)地址,若分支預(yù)測錯(cuò)誤,則立即通知取指部件在實(shí)際分支目標(biāo)地址上進(jìn)行取指;流水線控制單元,用于接收分支結(jié)果檢測單元產(chǎn)生的檢測結(jié)果,若發(fā)現(xiàn)分支預(yù)測錯(cuò)誤,則負(fù)責(zé)控制各級流水線處置分支預(yù)測錯(cuò)誤,具體過程如下當(dāng)分支指令預(yù)測錯(cuò)誤被檢測到時(shí),所述流水線控制單元立即清空取指部件和解碼部件,消除取指部件和解碼部件中錯(cuò)誤分支路徑上的所有指令,保證后續(xù)取指部件和解碼部件中的指令均為正確分支目標(biāo)地址上預(yù)取的指令;當(dāng)分支指令預(yù)測錯(cuò)誤被檢測到時(shí),所述流水線控制單元立即停止解碼部件向發(fā)射部件傳送正確分支目標(biāo)地址上預(yù)取的指令;當(dāng)分支預(yù)測錯(cuò)誤指令在退休部件中變?yōu)樽罾现噶疃煌诵輹r(shí),所述流水線控制單元立即解除解碼部件向發(fā)射部件傳送指令的停止?fàn)顟B(tài),此時(shí)若解碼部件中的指令有效,則可以立即傳送到發(fā)射部件,若解碼部件中沒有指令,則等待流水線依次填充;當(dāng)分支預(yù)測錯(cuò)誤指令在退休部件中變?yōu)樽罾现噶疃煌诵輹r(shí),所述流水線控制單元立即清空從發(fā)射到退休的各段流水線中的錯(cuò)誤分支路徑上的指令。作為優(yōu)選的一種方案所述的流水線控制單元中,在分支預(yù)測錯(cuò)誤被檢測到時(shí)立即更新分支預(yù)測單元的歷史信息,或者在分支預(yù)測錯(cuò)誤指令在退休時(shí)更新分支預(yù)測單元的歷史信息,。作為優(yōu)選的另一種方案所述的分支結(jié)果檢測單元中,從發(fā)射部件獲取分支指令類型信息和分支條件操作數(shù),以及分支指令當(dāng)前程序計(jì)數(shù)器值和分支偏移量。進(jìn)一步,所述的分支結(jié)果檢測單元中,通過分支指令類型信息和分支條件操作數(shù)計(jì)算實(shí)際分支方向;通過分支指令當(dāng)前程序計(jì)數(shù)器值、分支偏移量和分支指令長度信息,以及實(shí)際分支方向計(jì)算實(shí)際分支目標(biāo)地址。再進(jìn)一步,所述的分支結(jié)果檢測單元中,比較預(yù)測分支方向和實(shí)際分支方向,若結(jié)果不相符,則發(fā)生分支預(yù)測錯(cuò)誤。更進(jìn)一步,所述分支結(jié)果檢測單元比較預(yù)測分支目標(biāo)地址和實(shí)際分支目標(biāo)地址, 若結(jié)果不相符,則發(fā)生分支預(yù)測錯(cuò)誤。作為優(yōu)選的再一種方案所述的分支取指重定向單元,連接分支結(jié)果檢測單元和取指部件,當(dāng)分支預(yù)測錯(cuò)誤被檢測到時(shí),立即將實(shí)際分支目標(biāo)地址傳遞給取指部件并請求取指部件從實(shí)際分支目標(biāo)地址開始預(yù)取指令。本發(fā)明的技術(shù)構(gòu)思是在流水線處理器中,將分支預(yù)測錯(cuò)誤的處置分為兩個(gè)步驟。 第一步,在發(fā)現(xiàn)分支指令預(yù)測錯(cuò)誤時(shí),立即發(fā)起正確分支目標(biāo)地址上的指令預(yù)取,同時(shí)清空發(fā)射級以上各級流水段,并停止解碼部件向發(fā)射部件繼續(xù)傳送指令。該步驟將整個(gè)流水線劃分為以發(fā)射段為界的兩部分,發(fā)射段以上各段指令排空,而發(fā)射段以下(包括發(fā)射段)各段包含的指令,既有語義上位于分支預(yù)測錯(cuò)誤指令之前的指令,又有錯(cuò)誤分支目標(biāo)地址上的指令。第二步,當(dāng)分支預(yù)測錯(cuò)誤指令經(jīng)若干時(shí)鐘周期后變?yōu)橹嘏判蚓彺嬷凶罾系闹噶顣r(shí), 清空發(fā)射至退休各級流水段,同時(shí)解除解碼部件的停止?fàn)顟B(tài)。此時(shí),發(fā)射段以上各段指令均為重新預(yù)取的正確分支目標(biāo)地址上的指令;而發(fā)射段以下(包括發(fā)射段),所有語義上位于分支預(yù)測錯(cuò)誤指令之前的指令均已在退休段退休,而所有分支錯(cuò)誤路徑上的指令均未退休,此時(shí)可以安全的排空所有未退休的指令。分支預(yù)測錯(cuò)誤指令退休的同時(shí)立即解除解碼部件的停止?fàn)顟B(tài),則可以第一時(shí)間恢復(fù)分支指令預(yù)測錯(cuò)誤處置后指令的執(zhí)行。本發(fā)明與現(xiàn)有技術(shù)相比,充分利用了流水線各段的時(shí)間并行性,在流水線后級等待處置分支預(yù)測錯(cuò)誤的同時(shí),使流水線前級從正確分支目標(biāo)地址上開始預(yù)取并緩存指令, 從而縮短分支預(yù)測錯(cuò)誤處理后指令恢復(fù)執(zhí)行的時(shí)間。本發(fā)明的有益效果主要表現(xiàn)在消除或減少了分支指令預(yù)測錯(cuò)誤導(dǎo)致的流水線空操作,提高了流水線處理器的性能。


圖1是本發(fā)明包含的流水線處理器裝置各級流水段和快速處置分支預(yù)測錯(cuò)誤各單元與流水段之間的連接關(guān)系的示意圖。圖2是分支結(jié)果檢測單元計(jì)算實(shí)際分支方向和目標(biāo)地址并判斷分支預(yù)測是否出錯(cuò)的結(jié)構(gòu)示意圖。圖3是分支取指重定向單元與分支結(jié)果檢測單元和取指部件的連接關(guān)系示意圖。圖4是流水線控制單元對流水線各段的控制機(jī)制以及與流水線各功能部件的連接關(guān)系的示意圖。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式
進(jìn)行說明。參照圖1 圖4,一種快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,包括至少按順序依次包含取指、解碼、發(fā)射、執(zhí)行、退休段的流水線處理器,其中取指部件11負(fù)責(zé)從
6指令存儲器中獲取指令送到解碼部件,解碼部件12負(fù)責(zé)譯碼指令的功能并將指令送入發(fā)射部件,發(fā)射部件13將操作數(shù)準(zhǔn)備就緒的指令推入執(zhí)行部件,執(zhí)行部件14完成指令的計(jì)算并將結(jié)果和執(zhí)行完成信息一起壓入退休部件,退休部件15等待指令變?yōu)樽罾虾笸诵葜噶畈⑼瓿杉拇嫫魑募吞幚砥鳡顟B(tài)的更新;所述流水線處理器裝置還包括分支預(yù)測單元16,位于流水線執(zhí)行部件之前,用于提前預(yù)測分支方向和目標(biāo)地址, 控制取指部件在預(yù)測目標(biāo)地址上進(jìn)行預(yù)取,并將預(yù)測方向和地址傳遞給分支結(jié)果檢測單元;分支結(jié)果檢測單元17,用于計(jì)算實(shí)際分支方向和目標(biāo)地址,并與分支預(yù)測單元傳遞下來的預(yù)測分支方向和目標(biāo)地址進(jìn)行比較,若比較結(jié)果不一致,則發(fā)生分支預(yù)測錯(cuò)誤,并將預(yù)測結(jié)果傳送到分支取指重定向單元和流水線控制單元;分支取指重定向單元18,用于接收分支結(jié)果檢測單元產(chǎn)生的檢測結(jié)果和實(shí)際分支目標(biāo)地址,若分支預(yù)測錯(cuò)誤,則立即通知取指部件在實(shí)際分支目標(biāo)地址上進(jìn)行取指;流水線控制單元19,用于接收分支結(jié)果檢測單元產(chǎn)生的檢測結(jié)果,若發(fā)現(xiàn)分支預(yù)測錯(cuò)誤,則負(fù)責(zé)控制各級流水線處置分支預(yù)測錯(cuò)誤,具體過程如下當(dāng)分支指令預(yù)測錯(cuò)誤被檢測到時(shí),所述流水線控制單元立即清空取指部件和解碼部件,消除取指部件和解碼部件中錯(cuò)誤分支路徑上的所有指令,保證后續(xù)取指部件和解碼部件中的指令均為正確分支目標(biāo)地址上預(yù)取的指令;當(dāng)分支指令預(yù)測錯(cuò)誤被檢測到時(shí),所述流水線控制單元立即停止解碼部件向發(fā)射部件傳送正確分支目標(biāo)地址上預(yù)取的指令;當(dāng)分支預(yù)測錯(cuò)誤指令在退休部件中變?yōu)樽罾现噶疃煌诵輹r(shí),所述流水線控制單元立即解除解碼部件向發(fā)射部件傳送指令的停止?fàn)顟B(tài),此時(shí)若解碼部件中的指令有效,則可以立即傳送到發(fā)射部件,若解碼部件中沒有指令,則等待流水線依次填充;當(dāng)分支預(yù)測錯(cuò)誤指令在退休部件中變?yōu)樽罾现噶疃煌诵輹r(shí),所述流水線控制單元立即清空從發(fā)射到退休的各段流水線中的錯(cuò)誤分支路徑上的指令。所述的流水線控制單元中,在分支預(yù)測錯(cuò)誤被檢測到時(shí)立即更新分支預(yù)測單元的歷史信息,或者在分支預(yù)測錯(cuò)誤指令退休時(shí)更新分支預(yù)測單元的歷史信息,。圖1示出了本發(fā)明涉及的流水線處理器裝置包含的各級流水段及其連接關(guān)系。本發(fā)明涉及的流水線處理器裝置至少包括取指部件11,解碼部件12,發(fā)射部件13、執(zhí)行部件 14和退休部件15。取指部件11負(fù)責(zé)從指令存儲器中獲取指令并送到解碼部件12,解碼部件 12負(fù)責(zé)譯碼指令的功能并將指令送入發(fā)射部件13,發(fā)射部件13緩存操作數(shù)未就緒指令,將操作數(shù)準(zhǔn)備就緒的指令推入執(zhí)行部件14,執(zhí)行部件14完成指令的計(jì)算并將指令結(jié)果和執(zhí)行完成信息一起壓入退休部件15,退休部件15等待指令變?yōu)橹嘏判蚓彺嬷凶罾系闹噶詈笸诵葜噶畈⑼瓿杉拇嫫魑募吞幚砥鳡顟B(tài)的更新。一般流水線處理器中還包括訪存部件, 本發(fā)明提出的快速處置分支指令預(yù)測錯(cuò)誤的機(jī)制不涉及訪存部件,但本說明書定義的流水線處理器裝置同樣適用于包含有訪存部件的流水線處理器。圖1示出的流水線處理器裝置中包含分支預(yù)測單元16。分支預(yù)測單元16在執(zhí)行流水段之前對分支方向和目標(biāo)地址進(jìn)行預(yù)測,并按照預(yù)測分支目標(biāo)地址進(jìn)行指令的預(yù)取。 在具體實(shí)施例中,分支預(yù)測單元既可以在取指段實(shí)現(xiàn),也可以在解碼段實(shí)現(xiàn),本發(fā)明無特別限制。進(jìn)一步,圖1示出的分支預(yù)測單元16對分支預(yù)測的方法無特別限制。分支預(yù)測方法既可以采用靜態(tài)預(yù)測,也可以采用動(dòng)態(tài)預(yù)測,但無論何種方式,都必須將預(yù)測信息傳送到分支結(jié)果檢測單元。分支預(yù)測信息包括預(yù)測分支方向和預(yù)測分支目標(biāo)地址,也可以只包括預(yù)測分支方向,但不能只包括預(yù)測分支目標(biāo)地址。圖1示出的流水線處理器裝置中包含分支結(jié)果檢測單元17。分支結(jié)果檢測單元 17位于指令執(zhí)行段,發(fā)射部件13向分支結(jié)果檢測單元17傳送分支指令類型信息、分支條件操作數(shù)、當(dāng)前分支指令程序計(jì)數(shù)器值(PC)、分支偏移量以及分支指令長度信息。特別的,對于定長指令集而言,分支指令長度固定,無需傳送;對于變長指令集或混編指令集而言,不同編碼分支指令長度不固定,因此需要從發(fā)射部件13傳送分支指令長度信息。圖1示出的分支結(jié)果檢測單元17計(jì)算實(shí)際分支方向和目標(biāo)地址,并與分支預(yù)測單元16傳遞的預(yù)測分支方向和預(yù)測目標(biāo)地址進(jìn)行比較,若兩者比較均相同,則分支預(yù)測正確,處理器無需做分支預(yù)測錯(cuò)誤處理;反之,若其中之一不相同或兩者均不相同,則分支預(yù)測錯(cuò)誤,處理器必須正確處置。處理器對分支預(yù)測錯(cuò)誤的處置分為兩個(gè)步驟。第一步在分支預(yù)測錯(cuò)誤被檢測到時(shí)進(jìn)行,由分支取指重定向單元18和流水線控制單元19共同完成;第二步在分支預(yù)測錯(cuò)誤指令退休時(shí)進(jìn)行,由流水線控制單元19完成。兩個(gè)步驟的具體描述如下第一步,分支取指重定向單元18接收到由分支結(jié)果檢測單元17產(chǎn)生的分支預(yù)測錯(cuò)誤信息后,立即將正確的分支目標(biāo)地址傳送給取指部件11并向取指部件11發(fā)起分支取指重定向請求。若此時(shí)取指部件11未收到其他優(yōu)先級更高的取指重定向請求,則取指部件 11立即響應(yīng)分支取指重定向請求,從正確分支目標(biāo)地址開始取指。同時(shí),流水線控制單元 19發(fā)起清空取指部件11和解碼部件12的操作,并停止解碼部件12向發(fā)射部件13傳送指令。第二步,流水線控制單元19接收到退休部件15指示的分支預(yù)測錯(cuò)誤指令退休的信息后,清空發(fā)射至退休各級流水段。同時(shí),流水線控制單元19解除對解碼部件12向發(fā)射部件13傳送指令的停止?fàn)顟B(tài)。流水線控制單元19提供當(dāng)前分支指令的實(shí)際分支方向和目標(biāo)地址用于更新分支預(yù)測單元16的分支歷史信息。需要說明的是,流水線控制單元19對分支預(yù)測單元16歷史信息的更新,既可以在分支結(jié)果檢測單元17檢測到分支預(yù)測錯(cuò)誤之后進(jìn)行,也可以在分支預(yù)測錯(cuò)誤指令在退休部件15中退休時(shí)進(jìn)行。圖2示出了分支結(jié)果檢測單元17計(jì)算實(shí)際分支方向和目標(biāo)地址并判斷分支預(yù)測是否出錯(cuò)的具體實(shí)現(xiàn)方式。發(fā)射部件13將操作數(shù)準(zhǔn)備就緒的分支指令發(fā)射到分支結(jié)果檢測單元17。分支結(jié)果檢測單元17的組成結(jié)構(gòu)可以劃分為三部分計(jì)算實(shí)際分支方向、計(jì)算實(shí)際分支目標(biāo)地址、判斷分支預(yù)測是否出錯(cuò)。下面參照圖2對分支結(jié)果檢測單元17組成結(jié)構(gòu)進(jìn)行說明。第一部分,計(jì)算實(shí)際分支方向。分支結(jié)果檢測單元17從發(fā)射部件13獲得分支指令類型信息21,分支條件操作數(shù)22,用于計(jì)算實(shí)際分支方向。分支指令類型信息21指示當(dāng)前分支指令在何種條件下發(fā)生跳轉(zhuǎn)。例如,在一個(gè)具體實(shí)施例中,分支指令類型包含以下集合,{大于、等于、小于};對另一些具體實(shí)施例,分支指令類型集合可以更復(fù)雜,功能更完善,本說明書不做特別約束。分支條件操作數(shù)22用于計(jì)算分支條件是否滿足。在一個(gè)具體實(shí)施例中,分支條件操作數(shù)22可以是兩個(gè)用于大小比較的值;對另一些具體實(shí)施例,分支條件操作數(shù)22可以是一位或幾位條件碼,本說明書不做特別約束。進(jìn)一步,分支結(jié)果計(jì)算邏輯26接收分支條件操作數(shù)并計(jì)算各分支條件是否滿足。分支條件選擇27根據(jù)分支指令類型信息21選擇相應(yīng)的分支條件,得到當(dāng)前分支指令的實(shí)際分支方向。第二部分,計(jì)算實(shí)際分支目標(biāo)地址。分支結(jié)果檢測單元17從發(fā)射部件13獲得當(dāng)前分支指令程序計(jì)數(shù)器值(PC) 23和分支偏移量M,以及分支指令長度25,用于計(jì)算實(shí)際分支目標(biāo)地址。圖2中加法器觀用于計(jì)算分支跳轉(zhuǎn)地址,其輸入為當(dāng)前分支指令程序計(jì)數(shù)器值(PC) 23和分支偏移量M ;加法器四用于計(jì)算分支不跳轉(zhuǎn)地址,其輸入為當(dāng)前分支指令程序計(jì)數(shù)器值(PC) 23和分支指令長度25。最后數(shù)據(jù)選擇器30根據(jù)第一部分中得到的實(shí)際分支方向從分支跳轉(zhuǎn)地址和分支不跳轉(zhuǎn)地址兩者中選擇最終的分支目標(biāo)地址,即若實(shí)際分支方向?yàn)樘D(zhuǎn),則選擇分支跳轉(zhuǎn)地址,若實(shí)際分支方向?yàn)椴惶D(zhuǎn),則選擇分支不跳轉(zhuǎn)地址。第三部分,檢測分支預(yù)測是否出錯(cuò)。圖2中比較器31用于判斷實(shí)際分支方向和預(yù)測分支方向是否相同,若比較器31輸出為1,表示兩者不相等,分支方向預(yù)測錯(cuò)誤;反之,則分支方向預(yù)測正確。比較器32用于判斷實(shí)際分支目標(biāo)地址與預(yù)測分支目標(biāo)地址是否相同, 若比較器32輸出為1,表示兩者不相等,分支目標(biāo)地址預(yù)測錯(cuò)誤;反之,則分支目標(biāo)地址預(yù)測正確。只有當(dāng)分支方向預(yù)測和分支目標(biāo)地址預(yù)測均正確時(shí),最終的分支預(yù)測結(jié)果才為正確;反之,若分支方向預(yù)測和分支目標(biāo)地址預(yù)測有一個(gè)出錯(cuò),或均錯(cuò)誤,則最終的分支預(yù)測結(jié)果錯(cuò)誤。分支預(yù)測錯(cuò)誤指示信息將輸入到流水線控制單元19和分支取指重定向單元18, 用于處置分支預(yù)測錯(cuò)誤,保證程序正確執(zhí)行。圖3示出了分支取指重定向單元18與分支結(jié)果檢測單元17和取指部件11的連接關(guān)系。分支取指重定向單元18是快速處置分支指令預(yù)測錯(cuò)誤的核心單元。分支取指重定向單元18接收分支結(jié)果檢測單元17的檢測結(jié)果,若分支預(yù)測正確,則分支取指重定向單元18無操作;若分支預(yù)測發(fā)生錯(cuò)誤,則分支取指重定向單元18立即將分支結(jié)果檢測單元 17產(chǎn)生的實(shí)際分支目標(biāo)地址傳輸至取指部11的指令地址產(chǎn)生器42,并向取指部件11的取指請求發(fā)生器41發(fā)送分支取指重定向請求。若取指請求發(fā)生器41在當(dāng)前周期無更高優(yōu)先級的取指重定向請求,則取指請求發(fā)生器41將響應(yīng)分支取指重定向請求。分支取指重定向單元18在發(fā)現(xiàn)分支預(yù)測錯(cuò)誤后無需等待分支預(yù)測錯(cuò)誤指令退休,即可向取指部件11發(fā)起取指重定向請求,縮短了分支預(yù)測錯(cuò)誤造成的流水線空操作,提高了處理器性能。圖4示出了流水線控制單元19對流水線各段的控制機(jī)制以及與流水線各功能部件的連接關(guān)系。流水線控制單元19負(fù)責(zé)分支預(yù)測錯(cuò)誤后對各級流水線動(dòng)作的控制,以保障分支預(yù)測錯(cuò)誤被正確處置。流水線控制單元19接收分支結(jié)果檢測單元17產(chǎn)生的分支預(yù)測檢測結(jié)果,若分支預(yù)測正確,則流水線控制單元19無動(dòng)作;若分支預(yù)測錯(cuò)誤,則流水線控制單元19控制流水線各段正確處置分支預(yù)測錯(cuò)誤。發(fā)生分支預(yù)測錯(cuò)誤后,流水線控制單元19 對流水線各段的控制分為兩個(gè)步驟,第一步在分支預(yù)測錯(cuò)誤被檢測到時(shí)進(jìn)行,第二步在分支預(yù)測錯(cuò)誤指令退休時(shí)進(jìn)行。流水線控制單元19在這兩步的具體動(dòng)作和實(shí)現(xiàn)方式如下第一步,流水線控制單元19接收到分支結(jié)果檢測單元17產(chǎn)生的分支預(yù)測錯(cuò)誤信息后,立即發(fā)起操作清空取指部件11和解碼部件12,包括這兩個(gè)部件中的指令緩存,同時(shí)停止解碼部件I2向發(fā)射部件13傳送指令。流水線控制單元19通過內(nèi)部有限狀態(tài)機(jī)51記錄分支預(yù)測錯(cuò)誤發(fā)生,即有限狀態(tài)機(jī)51由正常態(tài)進(jìn)入凍結(jié)態(tài)。有限狀態(tài)機(jī)51的正常態(tài)表征無分支預(yù)測錯(cuò)誤發(fā)生或分支預(yù)測錯(cuò)誤已處置完畢,凍結(jié)態(tài)表征分支預(yù)測錯(cuò)誤正在處置,此時(shí)凍結(jié)解碼部件12繼續(xù)向發(fā)射部件13傳輸新的指令。這一步將取指部件11和解碼部件 12中的分支錯(cuò)誤路徑上的指令完全清除,保證了后續(xù)預(yù)取的指令均為正確分支路徑上的指令。第二步,流水線控制單元19接收到退休部件15產(chǎn)生了分支預(yù)測錯(cuò)誤指令退休的消息后,立即發(fā)起操作清空從發(fā)射到退休的各級流水段,包括發(fā)射緩存中的指令,同時(shí)解除對解碼部件12向發(fā)射部件13傳送指令的停止?fàn)顟B(tài)。由于退休部件使用按序退休的機(jī)制, 因此當(dāng)分支預(yù)測錯(cuò)誤指令退休時(shí),所有比所述分支預(yù)測錯(cuò)誤指令老的指令均已退休,而所有比所述分支預(yù)測錯(cuò)誤指令年輕的指令均未退休。這些未退休的指令均為所述分支指令錯(cuò)誤分支路徑上的指令。此時(shí)流水線控制單元19清空發(fā)射段到退休段所有指令,則將第一步處理后剩余的分支錯(cuò)誤路徑上的指令全部安全的清除。此時(shí),處理器中已無所述分支預(yù)測錯(cuò)誤導(dǎo)致的錯(cuò)誤分支路徑上的指令,則流水線控制單元19可以安全的恢復(fù)解碼部件12向發(fā)射部件13繼續(xù)傳送指令。本發(fā)明利用流水線不同段的時(shí)間并行性,在等待分支預(yù)測錯(cuò)誤指令退休的同時(shí), 使取指部件和解碼部件從正確的分支目標(biāo)地址上預(yù)取指令并緩存,有效的縮短或消除了分支預(yù)測錯(cuò)誤導(dǎo)致的流水線停頓,提高了流水線處理器的性能。
權(quán)利要求
1.一種快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,包括至少按順序依次包含取指、解碼、發(fā)射、執(zhí)行、退休段的流水線處理器,其中取指部件負(fù)責(zé)從指令存儲器中獲取指令送到解碼部件,解碼部件負(fù)責(zé)譯碼指令的功能并將指令送入發(fā)射部件,發(fā)射部件將操作數(shù)準(zhǔn)備就緒的指令推入執(zhí)行部件,執(zhí)行部件完成指令的計(jì)算并將結(jié)果和執(zhí)行完成信息一起壓入退休部件,退休部件等待指令變?yōu)樽罾虾笸诵葜噶畈⑼瓿杉拇嫫魑募吞幚砥鳡顟B(tài)的更新;其特征在于所述流水線處理器裝置還包括分支預(yù)測單元,位于流水線執(zhí)行部件之前,用于提前預(yù)測分支方向和目標(biāo)地址,控制取指部件在預(yù)測目標(biāo)地址上進(jìn)行預(yù)取,并將預(yù)測方向和地址傳遞給分支結(jié)果檢測單元;分支結(jié)果檢測單元,用于計(jì)算實(shí)際分支方向和目標(biāo)地址,并與分支預(yù)測單元傳遞下來的預(yù)測分支方向和目標(biāo)地址進(jìn)行比較,若比較結(jié)果不一致,則發(fā)生分支預(yù)測錯(cuò)誤,并將預(yù)測結(jié)果傳送到分支取指重定向單元和流水線控制單元;分支取指重定向單元,用于接收分支結(jié)果檢測單元產(chǎn)生的檢測結(jié)果和實(shí)際分支目標(biāo)地址,若分支預(yù)測錯(cuò)誤,則立即通知取指部件在實(shí)際分支目標(biāo)地址上進(jìn)行取指;流水線控制單元,用于接收分支結(jié)果檢測單元產(chǎn)生的檢測結(jié)果,若發(fā)現(xiàn)分支預(yù)測錯(cuò)誤, 則負(fù)責(zé)控制各級流水線處置分支預(yù)測錯(cuò)誤,具體過程如下當(dāng)分支指令預(yù)測錯(cuò)誤被檢測到時(shí),所述流水線控制單元立即清空取指部件和解碼部件,消除取指部件和解碼部件中錯(cuò)誤分支路徑上的所有指令,保證后續(xù)取指部件和解碼部件中的指令均為正確分支目標(biāo)地址上預(yù)取的指令;當(dāng)分支指令預(yù)測錯(cuò)誤被檢測到時(shí),所述流水線控制單元立即停止解碼部件向發(fā)射部件傳送正確分支目標(biāo)地址上預(yù)取的指令;當(dāng)分支預(yù)測錯(cuò)誤指令在退休部件中變?yōu)樽罾现噶疃煌诵輹r(shí),所述流水線控制單元立即解除解碼部件向發(fā)射部件傳送指令的停止?fàn)顟B(tài),此時(shí)若解碼部件中的指令有效,則可以立即傳送到發(fā)射部件,若解碼部件中沒有指令,則等待流水線依次填充;當(dāng)分支預(yù)測錯(cuò)誤指令在退休部件中變?yōu)樽罾现噶疃煌诵輹r(shí),所述流水線控制單元立即清空從發(fā)射到退休的各段流水線中的錯(cuò)誤分支路徑上的指令。
2.如權(quán)利要求1所述的快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,其特征在于所述的流水線控制單元中,在分支預(yù)測錯(cuò)誤被檢測到時(shí)立即更新分支預(yù)測單元的歷史信息,或者在分支預(yù)測錯(cuò)誤指令退休時(shí)更新分支預(yù)測單元的歷史信息。
3.如權(quán)利要求1或2所述的快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,其特征在于所述的分支結(jié)果檢測單元中,從發(fā)射部件獲取分支指令類型信息和分支條件操作數(shù), 以及分支指令當(dāng)前程序計(jì)數(shù)器值和分支偏移量。
4.如權(quán)利要求1或2所述的快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,其特征在于所述的分支結(jié)果檢測單元中,通過分支指令類型信息和分支條件操作數(shù)計(jì)算實(shí)際分支方向;通過分支指令當(dāng)前程序計(jì)數(shù)器值、分支偏移量和分支指令長度信息,以及實(shí)際分支方向計(jì)算實(shí)際分支目標(biāo)地址。
5.如權(quán)利要求1或2所述的快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,其特征在于所述的分支結(jié)果檢測單元中,比較預(yù)測分支方向和實(shí)際分支方向,若結(jié)果不相符,則發(fā)生分支預(yù)測錯(cuò)誤。
6.如權(quán)利要求1或2所述的快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,其特征在于所述分支結(jié)果檢測單元比較預(yù)測分支目標(biāo)地址和實(shí)際分支目標(biāo)地址,若結(jié)果不相符, 則發(fā)生分支預(yù)測錯(cuò)誤。
7.如權(quán)利要求1或2所述的快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,其特征在于所述的分支取指重定向單元,連接分支結(jié)果檢測單元和取指部件,當(dāng)分支預(yù)測錯(cuò)誤被檢測到時(shí),立即將實(shí)際分支目標(biāo)地址傳遞給取指部件并請求取指部件從實(shí)際分支目標(biāo)地址開始預(yù)取指令。
全文摘要
一種快速處置分支指令預(yù)測錯(cuò)誤的流水線處理器裝置,包括至少按順序依次包含取指、解碼、發(fā)射、執(zhí)行、退休段的流水線處理器,以及分支預(yù)測單元,用于提前預(yù)測分支方向和目標(biāo)地址;分支結(jié)果檢測單元,用于計(jì)算實(shí)際分支方向和目標(biāo)地址,并與分支預(yù)測單元傳遞下來的預(yù)測分支方向和目標(biāo)地址進(jìn)行比較,判定是否發(fā)生分支預(yù)測錯(cuò)誤;分支取指重定向單元,用于接收檢測結(jié)果和實(shí)際分支目標(biāo)地址,若分支預(yù)測錯(cuò)誤,則立即通知取指部件;流水線控制單元,用于接收分支結(jié)果檢測單元產(chǎn)生的檢測結(jié)果,若發(fā)現(xiàn)分支預(yù)測錯(cuò)誤,則負(fù)責(zé)控制各級流水線處置分支預(yù)測錯(cuò)誤。本發(fā)明能消除或大大減少分支指令預(yù)測錯(cuò)誤導(dǎo)致的流水線空操作、提升流水線處理器性能。
文檔編號G06F9/38GK102360282SQ20111028756
公開日2012年2月22日 申請日期2011年9月26日 優(yōu)先權(quán)日2011年9月26日
發(fā)明者嚴(yán)曉浪, 孟建熠, 楊軍, 高金加 申請人:杭州中天微系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
景德镇市| 法库县| 察哈| 建水县| 邢台市| 延庆县| 崇明县| 朔州市| 车致| 望谟县| 深水埗区| 兴文县| 衡南县| 阿坝县| 潮州市| 安吉县| 江阴市| 息烽县| 昔阳县| 郑州市| 辽宁省| 隆回县| 天门市| 石屏县| 金塔县| 金华市| 双辽市| 乐至县| 肥西县| 孝昌县| 汽车| 黄浦区| 长垣县| 沙雅县| 那坡县| 沅江市| 宁河县| 如东县| 浑源县| 宿迁市| 建瓯市|