專利名稱:通過跟蹤動(dòng)態(tài)死指令來減少微處理器中的虛假差錯(cuò)檢測(cè)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器中的差錯(cuò)(error)檢測(cè),具體地說,涉及通過跟蹤動(dòng)態(tài)死指令來減少微處理器中的虛假差錯(cuò)檢測(cè)。
背景技術(shù):
由于中子和阿爾發(fā)粒子的撞擊造成的瞬態(tài)故障(fault)正在成為未來處理技術(shù)中處理器晶體管數(shù)量增多的明顯阻礙。雖然個(gè)別晶體管的故障率可能不會(huì)升高很多,但是向一個(gè)器件中加入更多的晶體管就使得該器件更有可能遇到故障。結(jié)果,預(yù)計(jì)將處理器差錯(cuò)率保持在可接受的水平上將需要更多設(shè)計(jì)方面的努力。
由瞬態(tài)故障引起的單比特翻轉(zhuǎn)已成為今天微處理器設(shè)計(jì)中很重要的挑戰(zhàn)之一。這些故障因帶能量粒子而起,例如宇宙射線中的中子以及來自封裝材料的阿爾法粒子。晶體管源節(jié)點(diǎn)和擴(kuò)散節(jié)點(diǎn)可以收集這些電荷。足夠量的累積電荷可以反轉(zhuǎn)邏輯器件(例如SRAM單元、鎖存器或者門電路)的狀態(tài),從而向電路運(yùn)行中引入邏輯故障。因?yàn)檫@一類型的故障并不反映器件的永久失效,所以它被稱為軟差錯(cuò)或瞬態(tài)差錯(cuò)。
隨著片上晶體管的數(shù)量不斷呈指數(shù)上升,軟差錯(cuò)對(duì)于微處理器的設(shè)計(jì)者而言正成為越來越大的負(fù)擔(dān)。對(duì)于下幾代技術(shù)而言,計(jì)劃每鎖存器或SRAM位的原始差錯(cuò)率要大致保持常數(shù)或略微下降。因此,除非有另外的差錯(cuò)保護(hù)機(jī)制或者使用更具魯棒性的技術(shù)(例如全耗盡型SOI),在接下來的每一代中,微處理器的差錯(cuò)率可能隨附加到處理器的器件的數(shù)量而成正比地上升。
發(fā)明內(nèi)容
為解決以上問題,本發(fā)明提供了一種通過跟蹤動(dòng)態(tài)死指令來減少微處理器中的虛假差錯(cuò)檢測(cè)的技術(shù)。當(dāng)一條指令提交(commit)時(shí),它被接著存儲(chǔ)在PET緩沖區(qū)中。當(dāng)所述指令正在從PET緩沖區(qū)中被移出(removed)時(shí),而不是在提交時(shí)刻,處理器可以當(dāng)時(shí)宣告機(jī)器檢驗(yàn)差錯(cuò)。處理器可以掃描PET緩沖區(qū),以確定所述指令是不是動(dòng)態(tài)死指令。這進(jìn)一步使得處理器能夠減少虛假肯定。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種方法,包括提交指令;在緩沖區(qū)中存儲(chǔ)所述指令;判斷所述指令是不是動(dòng)態(tài)死指令;從所述緩沖區(qū)中移出所述指令;以及如果指令不是動(dòng)態(tài)死指令,則引發(fā)差錯(cuò)。在所述方法中,從所述緩沖區(qū)中移出所述指令還包括檢驗(yàn)所述指令的某一位的狀態(tài);以及如果所述位被置位,則檢查其他指令。所述的檢查其他指令還包括判斷所述其他指令在插入的讀取之前是否將覆寫所移出指令的結(jié)果;以及如果所述指令的結(jié)果不被覆寫,則引發(fā)差錯(cuò)。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種處理器,包括提交指令的提交模塊;以及耦合到所述提交模塊的緩沖區(qū),該緩沖區(qū)用于存儲(chǔ)所述指令,其中如果所述指令不是動(dòng)態(tài)死指令的話,響應(yīng)于從所述緩沖區(qū)中移出所述指令,所述處理器引發(fā)差錯(cuò)。
根據(jù)本發(fā)明的又一個(gè)方面,提供了一種裝置,包括對(duì)條目進(jìn)行譯碼的譯碼模塊;與所述條目相關(guān)聯(lián)的位;耦合到所述譯碼模塊的流水線,該流水線傳播條目流通過多個(gè)階段;耦合到所述流水線的提交模塊,該模塊提交所述條目;以及耦合到所述提交模塊的緩沖區(qū),該緩沖區(qū)在所述條目被提交后存儲(chǔ)所述條目。
根據(jù)本發(fā)明的再一個(gè)方面,提供了一種系統(tǒng),包括在條目取出之前存儲(chǔ)條目的片外存儲(chǔ)器;以及耦合到所述片外存儲(chǔ)器的處理器,其中所述處理器還包括對(duì)條目進(jìn)行譯碼的譯碼模塊;與所述條目相關(guān)聯(lián)的位;耦合到所述譯碼模塊的流水線,該流水線傳播條目流通過多個(gè)階段;耦合到所述流水線的提交模塊,該模塊提交所述條目;以及耦合到所述提交模塊的緩沖區(qū),該緩沖區(qū)在所述條目被提交后存儲(chǔ)所述條目。
參考附圖,根據(jù)以下對(duì)優(yōu)選實(shí)施方案的描述,將會(huì)清楚本發(fā)明的各種特征,在整個(gè)附圖中一般用相同的標(biāo)號(hào)來表示相同的部分。附圖不一定是按比例繪制的,重點(diǎn)放在說明本發(fā)明的原理上。
圖1是微處理器中的故障位的可能結(jié)果的框圖。
圖2是圖示了本發(fā)明一種具有差錯(cuò)跟蹤緩沖區(qū)用以在指令提交后存儲(chǔ)它們的實(shí)施方案的框圖。
圖3是圖示了將指令從圖2的差錯(cuò)跟蹤緩沖區(qū)中逐出的框圖。
圖4是圖示了在存儲(chǔ)和加載請(qǐng)求期間本發(fā)明的另一實(shí)施方案的框圖。
圖5是圖示了根據(jù)本發(fā)明一種實(shí)施方案的操作的流程圖。
圖6是圖示了實(shí)現(xiàn)本發(fā)明以檢測(cè)軟差錯(cuò)的示例性計(jì)算機(jī)系統(tǒng)的框圖。
具體實(shí)施例方式
在以下描述中,出于解釋而非限制的目的,闡述了很多具體的細(xì)節(jié),例如具體的結(jié)構(gòu)、體系結(jié)構(gòu)、接口、技術(shù)等,以提供對(duì)本發(fā)明各個(gè)方面的完整理解。然而,獲知本發(fā)明公開內(nèi)容的本領(lǐng)域的技術(shù)人員將會(huì)清楚,在不偏離這些具體細(xì)節(jié)的其他實(shí)施例中也可以實(shí)現(xiàn)本發(fā)明的各個(gè)方面。此外,忽略了對(duì)公知的器件、電路和方法的描述,以免因不必要的細(xì)節(jié)而模糊了對(duì)本發(fā)明的說明。
圖1圖示了微處理器中單個(gè)位故障的可能結(jié)果。一開始,微處理器確定是否已讀出了故障位100。如果故障位未被讀出110,則它被認(rèn)為是一個(gè)良性故障,因而沒有差錯(cuò)。如果已讀出了故障位,則處理器接下來確定該位是否具有差錯(cuò)保護(hù)115。當(dāng)讀出故障位時(shí),至少有三種可能的結(jié)果。首先,如果對(duì)于該位檢測(cè)到差錯(cuò)保護(hù)并進(jìn)行了校正,則認(rèn)為所述故障已被校正120。
第二,如果所述位不具有差錯(cuò)保護(hù),則處理器判斷指令是否會(huì)影響程序的結(jié)果125。如果指令不影響程序的結(jié)果,則故障位被認(rèn)為是一個(gè)良性故障130。故障110、120和130全都表示非差錯(cuò)條件,因?yàn)樵摴收蠜]有什么影響,或者已被檢測(cè)出來并被校正。
如果指令的確影響程序的結(jié)果,則它被認(rèn)為是一個(gè)沉寂(silent)數(shù)據(jù)破壞(SDC)135。SDC 135是一種最可怕形式的差錯(cuò),在這種情況下,故障導(dǎo)致系統(tǒng)生成錯(cuò)誤的輸出。為了避免SDC 135,設(shè)計(jì)者可以采用基本的差錯(cuò)檢測(cè)機(jī)制,例如奇偶檢驗(yàn)。
第三種可能的結(jié)果是當(dāng)位具有差錯(cuò)保護(hù)時(shí),檢測(cè)出差錯(cuò)的情況140。具有檢測(cè)故障但不校正它的能力,系統(tǒng)就可以避免生成無效的輸出,但是當(dāng)差錯(cuò)發(fā)生時(shí)不能恢復(fù)。因此,單純的差錯(cuò)檢測(cè)不會(huì)減小差錯(cuò)率,但是能夠提供故障終止的行為,從而可減少任何數(shù)據(jù)破壞。這些類型的差錯(cuò)被稱為可檢測(cè)但無法恢復(fù)的差錯(cuò)(DUE)。
根據(jù)檢測(cè)出的差錯(cuò)是否會(huì)影響執(zhí)行的最終結(jié)果,DUE事件又被進(jìn)一步劃分。檢測(cè)出的良性差錯(cuò)被稱為虛假DUE事件145,其他的則被稱為真實(shí)DUE事件150。在微處理器中,虛假DUE事件可能因?qū)﹀e(cuò)誤路徑指令、虛假預(yù)測(cè)指令的撞擊以及對(duì)正確路徑指令的撞擊而產(chǎn)生,所述正確路徑指令是指不影響最終程序狀態(tài)的指令,包括無操作指令、預(yù)取指令和動(dòng)態(tài)死指令。
為了跟蹤虛假DUE事件,微處理器可以將一個(gè)被稱為pi(即,可能不正確的)位的位附加到每條指令,并潛在地附加到各種硬件結(jié)構(gòu)(在相關(guān)申請(qǐng)中有詳細(xì)的論述)。當(dāng)檢測(cè)出差錯(cuò)時(shí),硬件將對(duì)受影響指令的pi位進(jìn)行置位,而不是發(fā)信令通知該差錯(cuò)。隨后,通過檢查pi位并且識(shí)別所述指令的特性,硬件可以判定是否真的發(fā)生了可見差錯(cuò)。
區(qū)分虛假差錯(cuò)和真實(shí)差錯(cuò)是復(fù)雜的。處理器在它檢測(cè)出差錯(cuò)的時(shí)候可能沒有足夠的信息來進(jìn)行區(qū)分。例如,當(dāng)指令隊(duì)列在一條指令上檢測(cè)到差錯(cuò)時(shí),它也許無法判斷該指令是否原是一條錯(cuò)誤路徑指令。結(jié)果,處理器可能需要將所述差錯(cuò)信息沿流水線向下傳播,并且在它有足夠的信息進(jìn)行區(qū)分時(shí)才喚起所述差錯(cuò)。
為了在微處理器硬件的不同部分之間傳播差錯(cuò)信息,系統(tǒng)利用了pi位。當(dāng)指令沿流水線從譯碼到退休(retirement)向下流動(dòng)時(shí),pi位與每條指令相互邏輯關(guān)聯(lián)。
pi位機(jī)制有助于避免因故障檢測(cè)機(jī)制(例如奇偶檢驗(yàn))而產(chǎn)生的虛假肯定匹配。具體地說,對(duì)于一條指令,當(dāng)指令被譯碼200時(shí),pi位被附加到該指令,并被初始化為0以表示該指令還未遇到任何差錯(cuò)。當(dāng)所述指令流過流水線205時(shí),它將被變換多次以適于機(jī)器,并被寫入很多不同的存儲(chǔ)結(jié)構(gòu)并從中讀出。如果這些存儲(chǔ)結(jié)構(gòu)210具有某種形式的故障檢測(cè),例如奇偶檢驗(yàn),并且所述指令積累了單比特翻轉(zhuǎn),則標(biāo)記出奇偶差錯(cuò)。通常,這將引發(fā)一次機(jī)器檢驗(yàn)例外,一般會(huì)使所述機(jī)器崩潰。這里,不再造成機(jī)器崩潰,處理器通過將pi位的值改變?yōu)?,而在pi位中公告這一差錯(cuò)。
在流水線205的提交階段215,提交硬件有足夠的信息來判斷指令是一個(gè)錯(cuò)誤路徑指令、虛假預(yù)測(cè)指令還是NOP指令。在這些情形中,處理器不會(huì)引發(fā)機(jī)器檢驗(yàn)例外,而會(huì)讓機(jī)器繼續(xù)正常運(yùn)行。但是,在其他情形中,可能已存在了真實(shí)差錯(cuò),必須引發(fā)機(jī)器檢驗(yàn)例外。
pi位(在相關(guān)申請(qǐng)中有詳細(xì)討論)善于在硬件結(jié)構(gòu)之間傳播(潛在的)差錯(cuò)信息,從而延遲機(jī)器檢驗(yàn)例外,一直到機(jī)器必須完全地宣告所述差錯(cuò)。然而,pi位自身不能斷定某一具體結(jié)構(gòu)是否遇到了故障,以及所述故障是否最終將對(duì)用戶可見。pi位機(jī)制有賴于差錯(cuò)檢測(cè)技術(shù),例如奇偶檢驗(yàn)來檢測(cè)單比特翻轉(zhuǎn)。反pi位(在相關(guān)申請(qǐng)中有詳細(xì)討論)和提交后差錯(cuò)跟蹤(PET)緩沖區(qū)這兩種技術(shù)可以幫助pi位機(jī)制來識(shí)別某些情形,在這些情形中故障實(shí)際上將不會(huì)表明自己是對(duì)用戶可見的差錯(cuò)。
在微處理器中有很多實(shí)例,在這些實(shí)例中某些指令類型上的故障不會(huì)導(dǎo)致差錯(cuò)。反pi位跟蹤對(duì)差錯(cuò)中立的指令和硬件活動(dòng)。當(dāng)和pi位組合在一起時(shí),反pi位有助于進(jìn)一步減小虛假差錯(cuò)檢測(cè)率。例如,對(duì)NOP指令的非操作碼位的撞擊通常不會(huì)產(chǎn)生對(duì)用戶可見的差錯(cuò)。類似地,對(duì)預(yù)取指令或分支預(yù)測(cè)提示指令的撞擊也不會(huì)引起差錯(cuò),這兩種指令典型地將增強(qiáng)微處理器的性能,而又不影響其正確性。這樣的指令是對(duì)差錯(cuò)中立的。反pi位跟蹤穿過流水線的指令并減少虛假肯定的次數(shù)。
即便在不是性能增強(qiáng)指令或NOP的提交指令流中,也有大量這樣的實(shí)例,其中故障不會(huì)表明自己是用戶可見的差錯(cuò)。這些都是從動(dòng)態(tài)死指令中產(chǎn)生的,所述動(dòng)態(tài)死指令的目的寄存器在任何插入使用之前都被重寫。
這篇申請(qǐng)描述了另一種進(jìn)一步減少虛假肯定的技術(shù)。在程序執(zhí)行過程中,有很多這樣的實(shí)例,其中指令的結(jié)果或目的寄存器再也不會(huì)被任何后續(xù)指令使用。通常,另一條指令在任何插入指令可以讀取所述寄存器之前將對(duì)它進(jìn)行覆寫。在這一序列中的第一指令被稱為動(dòng)態(tài)死指令(DDI)。動(dòng)態(tài)死指令的大多數(shù)位(除了目的指定符位以外)上的故障都不會(huì)導(dǎo)致用戶可見的差錯(cuò)。
與錯(cuò)誤路徑指令不同,當(dāng)一條指令提交時(shí),系統(tǒng)并不知道該指令是不是動(dòng)態(tài)死指令。將要提交的指令是不是動(dòng)態(tài)死指令,這取決于其目的寄存器的未來使用,而這在提交時(shí)還不可知。因此,即使指令是動(dòng)態(tài)死指令,如果pi位被置位的話,系統(tǒng)也可能不得不引發(fā)機(jī)器檢驗(yàn)例外。
圖2圖示了允許跟蹤DDI的PET緩沖區(qū)(buffer)的一種實(shí)施方案。PET緩沖區(qū)使得硬件可減少虛假宣告的動(dòng)態(tài)死指令上差錯(cuò)的數(shù)量。指令即便在提交215后也被存儲(chǔ)在PET緩沖區(qū)250中。提交可能是指令退休到體系結(jié)構(gòu)狀態(tài)的時(shí)刻。PET緩沖區(qū)250可以在指令從流水線的退休階段中退休后接收這些指令。所述流水線可以是有序或亂序的流水線。例如,PET緩沖區(qū)250可以從亂序流水線中的重排序緩沖區(qū)或其他排序結(jié)構(gòu)接收指令,或者可以從有序機(jī)器中的有序退休單元接收指令。
PET緩沖區(qū)250例如可以是FIFO緩沖區(qū)。有了PET緩沖區(qū)250,處理器就可以不在指令的提交時(shí)刻215來宣告差錯(cuò)。更準(zhǔn)確地,僅當(dāng)指令必須從PET緩沖區(qū)250中移出時(shí),處理器才引發(fā)機(jī)器檢驗(yàn)。當(dāng)指令就要從PET緩沖區(qū)250中被移出時(shí),硬件可以掃描緩沖區(qū)以發(fā)現(xiàn)有關(guān)其未來使用的信息。如果PET緩沖區(qū)250幫助確定將從PET緩沖區(qū)250中移出的指令是動(dòng)態(tài)死指令,則處理器不必引發(fā)差錯(cuò),即便該指令的pi位被置位。
然而,當(dāng)指令提交215時(shí),系統(tǒng)沒有關(guān)于該指令的未來使用的任何信息,因此無法判斷該指令是不是死的。因而,在沒有PET緩沖區(qū)的情況下,如果指令的pi位被置位,則將會(huì)由指令的提交時(shí)刻215而引發(fā)機(jī)器檢驗(yàn)例外,即便該指令可能隨后將證明是動(dòng)態(tài)死指令。
當(dāng)指令提交215時(shí),指令被輸入到PET緩沖區(qū)250中。如果在PET緩沖區(qū)250中有空間的話,指令可以正常插入,沒有問題。如果在PET緩沖區(qū)250中沒有空間的話,意味著緩沖區(qū)已滿,則處理器必須在插入指令前必須首先從PET緩沖區(qū)250中逐出舊一些的指令。
圖3圖示了從PET緩沖區(qū)250中逐出指令的過程。為了從PET緩沖區(qū)250中逐出指令,系統(tǒng)要檢驗(yàn)pi位是否被置位。如果是的,那么可能需要在該指令上引發(fā)差錯(cuò),除非該指令被確定為動(dòng)態(tài)死指令。為了判斷指令是不是動(dòng)態(tài)死指令,由控制器255來檢查PET緩沖區(qū)250,以確定是否有任何其他指令將在插入的讀取之前覆寫其內(nèi)容(即,覆寫這一指令的結(jié)果)??刂破?55確定將如何解釋存儲(chǔ)在PET緩沖區(qū)250中的數(shù)據(jù)。
如果當(dāng)前在PET緩沖區(qū)中的指令可能在插入的讀取之前覆寫將被逐出的指令的結(jié)果,則該指令被宣告為動(dòng)態(tài)死指令,這是因?yàn)樵撝噶畹慕Y(jié)果沒有被使用。因此,差錯(cuò)可以被抑制。否則,將引發(fā)機(jī)器檢驗(yàn)例外來處理差錯(cuò)。
例如,假設(shè)PET緩沖區(qū)250是滿的。如果將被存儲(chǔ)在緩沖區(qū)250中的指令是R3=R1+R2??刂破?55可以解釋緩沖區(qū)250中的信息,以確定這個(gè)指令(R3=R1+R2)是否可以在插入的讀取之前覆寫將被逐出的指令的結(jié)果。在這種情形中,緩沖區(qū)具有R3=0的條目。這個(gè)條目將在讀取之前被逐出,因而可以由控制器255宣告為動(dòng)態(tài)死指令,因?yàn)檫@一指令的結(jié)果將不被使用。因此,這個(gè)指令(R3=0)被逐出,并且新指令R3=R1+R2現(xiàn)在被存儲(chǔ)在PET緩沖區(qū)250中。
至少有三個(gè)動(dòng)態(tài)死指令的源通過寄存器、通過存儲(chǔ)器以及通過返回。關(guān)于從寄存器文件而來的動(dòng)態(tài)死指令,在指令的提交時(shí)刻215,處理器可能不知道源操作數(shù)是否可能具有潛在的差錯(cuò)。在這種情形中,可以保存一張按寄存器號(hào)索引的表。這張表指示出寄存器的最后寫入者是否已使其pi位置位。于是,就要提交的指令可以查找所述表,以確定它是否需要檢查PET緩沖區(qū)中的條目。因而,在沒有差錯(cuò)的一般情況中,正在提交的指令無需檢查PET緩沖區(qū)。
圖4圖示了避免存儲(chǔ)器中數(shù)據(jù)破壞的一種實(shí)施方案。在流水線205中,一旦指令被譯碼200,pi位就被附加到所述指令,并被初始化為0以表示所述指令還未遇到任何差錯(cuò)。隨著指令流經(jīng)流水線205,它將被轉(zhuǎn)換多次以適于所述機(jī)器,并被寫入很多不同的存儲(chǔ)結(jié)構(gòu)并從中讀出。如果存儲(chǔ)結(jié)構(gòu)210具有某種形式的故障檢測(cè),例如奇偶檢驗(yàn),并且指令累積了單比特翻轉(zhuǎn),那么將標(biāo)記出奇偶差錯(cuò)。在流水線205中的提交階段215,提交硬件有足夠的信息來判斷所述指令是否遇到了軟差錯(cuò)。接下來,所述指令被存儲(chǔ)220。
為了避免存儲(chǔ)器中的數(shù)據(jù)破壞,無論何時(shí)一條存儲(chǔ)指令離開存儲(chǔ)緩沖區(qū)220,如果它的pi位被置位,則宣告差錯(cuò)。然而,如果pi位沒有被置位,則所述存儲(chǔ)指令提交其結(jié)果。當(dāng)加載請(qǐng)求到來時(shí),從存儲(chǔ)器213中讀出所述指令。讓存儲(chǔ)指令的數(shù)據(jù)傳播到存儲(chǔ)器將不會(huì)造成數(shù)據(jù)破壞。這個(gè)實(shí)施方案實(shí)現(xiàn)了關(guān)于存儲(chǔ)指令的失效停止(fail-stop)模型,因?yàn)橹灰幚砥鹘?jīng)由存儲(chǔ)指令產(chǎn)生了不正確的數(shù)據(jù),它就被停止。
可替換地,如果關(guān)于每條指令的失效停止模型都需要的話(即,如果指令產(chǎn)生不正確的數(shù)據(jù)就停止),那么在所有的在前指令已被證明沒有差錯(cuò)之前,所述存儲(chǔ)指令的數(shù)據(jù)都絕不會(huì)傳播到存儲(chǔ)器系統(tǒng)。為了獲得這一結(jié)果,PET緩沖區(qū)的大小可能需要受到限制。此外,如果緩存(cache)也包含pi位的話,那么存儲(chǔ)數(shù)據(jù)可以去往緩存。于是,只有當(dāng)pi位被置位的塊從緩存回寫到主存儲(chǔ)器時(shí),處理器才會(huì)引發(fā)機(jī)器檢驗(yàn)例外。
返回是DDI的另外一個(gè)源。在具有寄存器窗的體系結(jié)構(gòu)中,一旦從一個(gè)過程中返回,由該特定過程產(chǎn)生的所有局部寄存器在返回后都將變成死的。
有利的是,PET緩沖區(qū)不僅降低了DUE(檢測(cè)出的不可恢復(fù)的差錯(cuò))率,而且在一些實(shí)施方案中,還允許使用失效停止模型,該模型或者是關(guān)于存儲(chǔ)指令的,或者是關(guān)于每條指令的,這取決于實(shí)現(xiàn)者的選擇。
圖5是圖示了檢測(cè)軟差錯(cuò)的方法的一種實(shí)施方案的流程圖。在這個(gè)具體的實(shí)施方案中,流程圖500圖示了處理器判斷在動(dòng)態(tài)死亡的指令上是否發(fā)生差錯(cuò)的情形。一開始,當(dāng)指令提交505時(shí),所提交的指令將被輸入到PET緩沖區(qū)中。然而,首先處理器需要判斷PET緩沖區(qū)是不是滿的510。如果PET緩沖區(qū)不是滿的,則所提交的指令被存儲(chǔ)在緩沖區(qū)中515,否則,處理器必須在插入所提交的指令之前首先從PET緩沖區(qū)中逐出舊一些的指令。
為了從PET緩沖區(qū)中逐出指令,處理器可以首先檢驗(yàn)pi位是否被置位520。如果指令的pi位未被置位,意味著在該指令上可能已經(jīng)引發(fā)了差錯(cuò),則該指令可以從緩沖區(qū)525中被移出,并且所提交的指令現(xiàn)在可以被存儲(chǔ)在PET緩沖區(qū)中530。然而,如果將被移出的指令使其pi位被置位,則處理器可以判斷該指令是不是動(dòng)態(tài)死指令535。如果將被移出的指令被確定為動(dòng)態(tài)死指令,則該指令可以從緩沖區(qū)中被移出525,并且所提交的指令現(xiàn)在可以被存儲(chǔ)在PET緩沖區(qū)中535。否則,可以引發(fā)差錯(cuò)540。
圖6圖示了用于檢測(cè)軟差錯(cuò)的一種典型系統(tǒng)實(shí)現(xiàn)方式。在所示出的計(jì)算機(jī)600中,處理器605用作單獨(dú)一個(gè)處理器或者多個(gè)處理器之一,包括中央處理單元(CPU)或計(jì)算機(jī)600的單元。典型地,處理器605被實(shí)現(xiàn)為單個(gè)集成電路芯片。處理器605可以包括執(zhí)行(處理)核610,它具有一個(gè)或多個(gè)執(zhí)行單元。處理器605的一部分專用于包括指令處理裝置615。指令處理裝置615被示為與核610耦合。
根據(jù)以上描述來實(shí)現(xiàn)本發(fā)明,以在核610中執(zhí)行指令。存儲(chǔ)器可能位于片上(如片上存儲(chǔ)器620所示)或片外(如片外存儲(chǔ)器625所示)。典型地,片上存儲(chǔ)器可以是緩存存儲(chǔ)器或者主存儲(chǔ)器(RAM)的一部分。片外存儲(chǔ)器一般由主存儲(chǔ)器(以及片外緩存,如果有的話)和其他存儲(chǔ)設(shè)備(例如盤存儲(chǔ)介質(zhì))組成。然而,要注意的是,可以用其他方式來配置本發(fā)明,以處理指令供核610來執(zhí)行。
在以上描述中,出于解釋而非限制的目的,闡述了很多具體的細(xì)節(jié),例如具體的結(jié)構(gòu)、體系結(jié)構(gòu)、接口、技術(shù)等,以提供對(duì)本發(fā)明各個(gè)方面的完整理解。然而,獲知本公開內(nèi)容的本領(lǐng)域的技術(shù)人員將會(huì)清楚,也可以在不偏離這些具體細(xì)節(jié)的其他實(shí)施例中實(shí)現(xiàn)本發(fā)明的各個(gè)方面。在某些情況下,省略了對(duì)公知設(shè)備、電路和方法的描述,以免用不必要的細(xì)節(jié)模糊了對(duì)本發(fā)明的描述。
權(quán)利要求
1.一種方法,包括提交指令;在緩沖區(qū)中存儲(chǔ)所述指令;判斷所述指令是不是動(dòng)態(tài)死指令;從所述緩沖區(qū)中移出所述指令;以及如果指令不是動(dòng)態(tài)死指令,則引發(fā)差錯(cuò)。
2.如權(quán)利要求1所述的方法,其中從所述緩沖區(qū)中移出所述指令的操作還包括檢驗(yàn)所述指令的某一位的狀態(tài);以及如果所述位被置位,則檢查其他指令。
3.如權(quán)利要求2所述的方法,其中所述的檢查其他指令的步驟還包括判斷所述其他指令在插入的讀取之前是否將覆寫所移出指令的結(jié)果;以及如果所述指令的結(jié)果不被覆寫,則引發(fā)差錯(cuò)。
4.一種處理器,包括提交指令的提交模塊;以及耦合到所述提交模塊的緩沖區(qū),該緩沖區(qū)用于存儲(chǔ)所述指令,其中如果所述指令不是動(dòng)態(tài)死指令的話,響應(yīng)于從所述緩沖區(qū)中移出所述指令,所述處理器引發(fā)差錯(cuò)。
5.如權(quán)利要求4所述的處理器,還包括與所述指令相關(guān)聯(lián)的位。
6.如權(quán)利要求5所述的處理器,其中所述處理器檢查所述位的狀態(tài)。
7.如權(quán)利要求6所述的處理器,其中如果位被置位,則所述處理器檢查所述緩沖區(qū)中的其他指令。
8.如權(quán)利要求7所述的處理器,其中所述處理器判斷所述其他指令在插入的讀取之前是否將覆寫所移出指令的結(jié)果。
9.如權(quán)利要求8所述的處理器,其中如果所述指令的結(jié)果將不被覆寫,則所述處理器引發(fā)差錯(cuò)。
10.如權(quán)利要求5所述的處理器,其中所述位是pi位。
11.如權(quán)利要求6所述的處理器,其中所述位由于奇偶差錯(cuò)而被置位。
12.一種裝置,包括對(duì)條目進(jìn)行譯碼的譯碼模塊;與所述條目相關(guān)聯(lián)的位;耦合到所述譯碼模塊的流水線,該流水線傳播條目流通過多個(gè)階段;耦合到所述流水線的提交模塊,該模塊提交所述條目;以及耦合到所述提交模塊的緩沖區(qū),該緩沖區(qū)在所述條目被提交后存儲(chǔ)所述條目。
13.如權(quán)利要求12所述的裝置,其中所述位是pi位。
14.如權(quán)利要求12所述的裝置,其中如果所述條目不是動(dòng)態(tài)死條目,則所述裝置引發(fā)差錯(cuò)。
15.如權(quán)利要求12所述的裝置,還包括耦合到所述緩沖區(qū)的控制器,該控制器解釋所述緩沖區(qū)中的條目。
16.如權(quán)利要求15所述的裝置,其中所述控制器在從所述緩沖區(qū)中移出所述條目之前,檢驗(yàn)所述緩沖區(qū)中的其他條目。
17.如權(quán)利要求16所述的裝置,其中所述控制器判斷其他條目在插入的讀取之前是否將覆寫所述條目的結(jié)果。
18.如權(quán)利要求17所述的裝置,其中如果所述條目的結(jié)果將不被覆寫,則引發(fā)差錯(cuò)。
19.如權(quán)利要求12所述的裝置,還包括處理所述條目的指令隊(duì)列。
20.一種系統(tǒng),包括在條目取出之前存儲(chǔ)條目的片外存儲(chǔ)器;以及耦合到所述片外存儲(chǔ)器的處理器,其中所述處理器還包括對(duì)條目進(jìn)行譯碼的譯碼模塊;與所述條目相關(guān)聯(lián)的位;耦合到所述譯碼模塊的流水線,該流水線傳播條目流通過多個(gè)階段;耦合到所述流水線的提交模塊,該模塊提交條目;以及耦合到所述提交模塊的緩沖區(qū),該緩沖區(qū)在所述條目被提交后存儲(chǔ)所述條目。
21.如權(quán)利要求20所述的系統(tǒng),還包括耦合到所述片外存儲(chǔ)器的音頻接口。
22.如權(quán)利要求20所述的系統(tǒng),還包括耦合到所述緩沖區(qū)的控制器,該控制器解釋所述緩沖區(qū)中的所述條目。
23.如權(quán)利要求20所述的系統(tǒng),其中所述位是pi位。
24.如權(quán)利要求20所述的系統(tǒng),其中如果所述條目不是動(dòng)態(tài)死條目,則所述系統(tǒng)引發(fā)差錯(cuò)。
25.如權(quán)利要求20所述的系統(tǒng),還包括處理所述條目的指令隊(duì)列。
26.如權(quán)利要求22所述的系統(tǒng),其中所述控制器在從所述緩沖區(qū)中移出所述條目之前檢驗(yàn)所述緩沖區(qū)中的其他條目。
27.如權(quán)利要求26所述的系統(tǒng),其中所述控制器判斷其他條目在插入的讀取之前是否將覆寫所述條目的結(jié)果。
28.如權(quán)利要求27所述的系統(tǒng),其中如果所述條目的結(jié)果將不被覆寫,則引發(fā)差錯(cuò)。
全文摘要
本發(fā)明提供的技術(shù)通過跟蹤動(dòng)態(tài)死指令來減少微處理器中的虛假差錯(cuò)檢測(cè)。當(dāng)一條指令提交時(shí),它被接著存儲(chǔ)在PET緩沖區(qū)中。當(dāng)所述指令正在從PET緩沖區(qū)中被移出時(shí),而不是在提交時(shí)刻,處理器可以當(dāng)時(shí)宣告機(jī)器檢驗(yàn)差錯(cuò)。處理器可以掃描PET緩沖區(qū),以確定所述指令是不是動(dòng)態(tài)死指令。這進(jìn)一步使得處理器能夠減少虛假肯定。
文檔編號(hào)G06F9/38GK1710533SQ200510076829
公開日2005年12月21日 申請(qǐng)日期2005年6月17日 優(yōu)先權(quán)日2004年6月17日
發(fā)明者克里斯托弗·韋弗, 舒布亨杜·穆克赫基, 喬爾·埃默, 史蒂文·萊因哈特 申請(qǐng)人:英特爾公司