專利名稱:用于重放轉換的指令的方法和裝置的制作方法
技術領域:
本公開內容涉及處理器領域。更具體地講,本公開內容涉及這樣的處理器,該處理器在一次或多次初始嘗試執(zhí)行指令過程中碰到困難時,它可以變更、轉換、變異,換句話說即“轉化”上述指令。
然而,持續(xù)提高處理器的性能的任務是困難的?,F(xiàn)有技術的處理器已經(jīng)使用了分支預測、預測執(zhí)行、亂序(OOO)執(zhí)行的技術。此外,這種處理器通常包括多個并行執(zhí)行單元,以便并行地處理大量的指令。隨著所應用的并行硬件的量的增加,由于可被抽取的有限指令級的并行度或由于指令當前對許多現(xiàn)有軟件程序的依賴,提供足夠多的指令以便保持硬件處于繁忙越來越困難。
多線程是一種可以用于減少并行執(zhí)行單元的空閑時間的技術。多線程允許多個程序或線程來共享硬件資源。由于執(zhí)行的是獨立的程序序列,所以指令相關性不太可能會嚴重降低指令單元的應用。只要多線程能夠被抽取或者是顯式地由正在執(zhí)行的軟件提供,這種多線程機固然會受益于由于執(zhí)行多線程而產(chǎn)生的額外的并行度。
因此,在設計現(xiàn)代處理器中大量的精力重點一直都用在這種指令調度技術上。這些技術至少部分地設法增加了向有意執(zhí)行單元進行調度的指令數(shù)目。然而,有時在調度之后會碰到重要的導致延遲的問題(例如,故障、數(shù)字計算問題、超高速緩存未命中等等)。在現(xiàn)有技術處理器中,一旦向執(zhí)行單元調度了指令,執(zhí)行單元總體上是與它獲得的指令“粘”在一起的。
指令譯碼是一種在處理器接收指令后所出現(xiàn)的指令改變的類型。然而,指令的譯碼通常涉及要把一條指令擴張為微指令,或者把指令的編碼改變成供執(zhí)行單元執(zhí)行的一種更便利的形式或另一種指令集。一般來講,指令的譯碼并不超出從所輸入的指令到或者個別信號或者個別微指令的特定映射。此外,指令譯碼在處理系統(tǒng)中是固有的前端操作,并且指令譯碼缺少在遍及執(zhí)行指令中引入所收集的信息的能力。
因此,現(xiàn)有技術的處理器一般并不把原始指令轉化為這樣的變更的指令,即一旦出現(xiàn)嘗試執(zhí)行,與原始指令相比,這些變更的指令會得到更有效或者更不相同的執(zhí)行。
本發(fā)明通過示例方式進行闡述,但并不限制于附圖中的圖形。
圖1a展示的是應用指令轉化電路的處理器的一種實施方案。
圖1b展示的是可用于由圖1a的系統(tǒng)所應用的指令轉化技術。
圖2展示的是在高速緩存(cache)存儲器中出現(xiàn)高速緩存未命中時用于轉化加載指令的技術的一種實施方案。
圖3a-3d展示的是用于使用指令轉化來處理指令相關性的技術的各種實施方案。
圖4展示的是使用公開的指令轉化技術的系統(tǒng)的另一種實施方案。
圖5展示的是用于使用指令轉化來處理頁故障的技術的一種實施方案。
圖6展示的是用于使用指令轉化來處理諸如間接加載指令的間接指令的技術的一種實施方案。
圖7展示的是結合數(shù)字處理使用指令轉化的系統(tǒng)的一種實施方案。
圖8展示的是用于處理與某些極少數(shù)據(jù)相關的數(shù)學運算的技術的一種實施方案。
圖9展示的是用于使用公開的技術進行設計的模擬、仿真以及制造的各種設計表示和格式。
具體實施例方式
下面的描述實現(xiàn)重放指令轉化。為了實現(xiàn)對本發(fā)明有更加徹底的理解,在下面的描述中,闡述了大量具體細節(jié)諸如原始和轉化的指令的類型、可能適合轉化的環(huán)境、可能體現(xiàn)轉化的系統(tǒng)環(huán)境、執(zhí)行單元和轉化電路的相互作用以及邏輯劃分/集成的選擇。然而,應該理解的是,對于一位本領域的熟練技術人員來說,在沒有上述具體細節(jié)的情況下本發(fā)明是可以實現(xiàn)的。在其它情況下,為了不使本發(fā)明晦澀難懂,就沒有詳細表示控制結構和門級電路。本領域的一般技術人員使用所包含的描述在無需過分實驗的情況下將能夠實現(xiàn)合適的邏輯電路。
當前所公開的指令轉化技術可以有利地允許更高效地在處理系統(tǒng)中執(zhí)行指令。當特定硬件不可用時或正確完成被視為當前是不可能的時,通過轉化某些指令,處理器可以釋放用于執(zhí)行其它任務的資源。
圖1a表示的是執(zhí)行指令轉化的處理器的一種實施方案。圖1a的處理器包括從多路復用器115接收指令的執(zhí)行單元125。檢驗器150與執(zhí)行單元125相耦合,它判定指令是否是已經(jīng)得到正確執(zhí)行。在一些實施方案中可以添加附件的檢驗器和/或執(zhí)行單元。此外,分級(staging)隊列(未示出)可以從多路復用器115接收指令并向檢驗器150傳遞這些指令,以便及時地檢驗。轉發(fā)得到正確執(zhí)行的指令以便退出,而把沒有得到正確執(zhí)行的指令反饋給復用器115,以便重新執(zhí)行。
用于從檢驗器150把指令反饋給執(zhí)行單元125的方式有兩種。耦合的轉化邏輯120用于從檢驗器150接收原始指令,并且它可以檢測用于保證指令轉化的條件。然而,在一些情況下,轉化是不適當?shù)摹R虼?,轉化邏輯120可以向多路復用器115返回原始指令或者轉化了的指令。在一些實施方案中,某些類型的指令或專用指令可以由轉化邏輯120自動進行轉化。在其它實施方案中,某些條件可以促使轉化邏輯120來執(zhí)行轉化操作。在指令返回到執(zhí)行單元125之前,可能會引入各種延遲或對各種延遲進行條件測試。
圖1b展示的是可用于由圖1a的系統(tǒng)所應用的指令轉化的兩種技術。在塊160,處理器嘗試原始指令的執(zhí)行。原始指令是從多路復用器115的接收的指令輸入端接收的,然后被傳遞到執(zhí)行單元,以便實現(xiàn)在塊160中所指示的執(zhí)行。接收的指令可以從各種譯碼、高速緩存、或者其它前端處理邏輯中加以接收。
如在塊165所指示的,對阻礙原始指令本次成功執(zhí)行的問題進行檢測。在圖1a的實施方案中,該檢測是由檢驗器150實現(xiàn)的。如果指令和/或條件表明,該指令應在不作變更的情況下進行重放,則轉化邏輯120可以把該指令返回給多路復用器115而不對其進行改變。
如果指令和/或條件表明,應該轉化該指令,則轉化邏輯120如在塊170中所指示的那樣變更該指令,從而使該指令得到更高效或至少不同的執(zhí)行。將在下面論述具體轉化操作的各種實施方案。如在塊175中所指示的,然后執(zhí)行該轉化了的指令。
在一些情況下,轉化了的指令是有意用于替換原始指令的。在這種情況下,如在塊180中所指示的那樣,轉化了的指令的退出結束了原始指令所期望的執(zhí)行。在這種情況下,轉化的指令是與原始指令產(chǎn)生同樣結果的代用指令;然而,在當時已經(jīng)感知轉化的指令是達到那些結果的更好的或更高效的途徑。
在其它情況下,可以轉化指令以便滿足原始指令成功執(zhí)行的前置條件。例如,存儲器訪問可能導致頁故障的發(fā)生。正確執(zhí)行存儲器訪問的前置條件是頁故障已得到解決。特殊前置條件可能需要大量的轉化操作以便得到滿足。因此,如在塊185中所指示的那樣,處理器進行檢驗以便判定前置條件是否由轉化指令的執(zhí)行滿足。如果不滿足,如返回到塊170所指示的那樣執(zhí)行進一步的轉化。如果前置條件是滿足的,如在塊190中所指示的那樣可以恢復原始指令。然后,如在塊195中所指示的那樣退出原始指令。在一些情況下,一旦前置條件已經(jīng)得到滿足,則可以執(zhí)行原始指令的指令替換。
圖2展示的是在高速緩存存儲器中出現(xiàn)高速緩存未命中時用于轉化加載指令的技術的一種實施方案。如在塊200中所指示的,處理器判定在第二級或以上的高速緩存器未命中的加載指令。到第二級,意味著第二最低層次式高速緩存器,而不論其特殊標記。在圖1a的實施方案中,檢驗器150從最低級高速緩存器接收未命中信號,因此判定加載指令未正確執(zhí)行。轉化邏輯120接收這樣的信號(未示出),這些信號表明較高級高速緩存器也經(jīng)歷過高速緩存器未命中。
在這些條件下,隨著加載指令通過重放回路的循環(huán)運行,連續(xù)測試較高級高速緩存器可能是不經(jīng)濟的,其原因是當檢索時,所需要的數(shù)據(jù)將會寫在較高級高速緩存器和最低級高速緩存器這兩者中。因此,可以節(jié)省較高級高速緩存器的帶寬,其方法是在較高級高速緩存器未命中之后僅嘗試從較低級高速緩存器中檢索數(shù)據(jù)。從而,如在塊210中所表示的,可以轉化加載以便在后續(xù)的迭代中僅在最低級的高速緩存器中執(zhí)行查詢。
如果在最低級高速緩存器中找到了有效數(shù)據(jù)(如在塊215中所測試的),則該加載將得到正確的執(zhí)行。如在塊225中所指示的那樣,當檢驗器檢測到轉化的加載正確執(zhí)行時,然后就可以退出原始加載。如果在最低級高速緩存器中沒有找到有效數(shù)據(jù),則如在塊220中所展示的那樣重放轉化的加載指令。盡管可以繼續(xù)加載從而不成功地執(zhí)行多次,然而在該過程中,至少它沒有不經(jīng)濟地消耗較高級高速緩存器的帶寬。
圖3a展示的是用于使用指令轉化來處理指令相關性的技術的一種實施方案。如在塊300所指示的,標識相關指令和與其相關的前一條指令。在塊310中,檢測當前缺乏執(zhí)行前一條指令的能力。在圖1a的實施方案中,可以由檢驗器150實現(xiàn)塊310,以便檢測前一條指令的錯誤執(zhí)行。
因為與相關指令相關的指令不能夠得到正確的執(zhí)行,因此,相關指令當前是不能夠得到正確執(zhí)行的。因此,繼續(xù)試圖執(zhí)行相關指令可能是不經(jīng)濟的。從而,如塊320所指示的,可以通過標記相關指令為“不良(poisoned)”來阻止繼續(xù)執(zhí)行該相關指令。具有“不良”標記的指令是用這種簡單的方式標記的,從而使重放系統(tǒng)和/或執(zhí)行單元認識到不應該試圖執(zhí)行該指令。例如,可以抑制一有效位,從而使該指令表現(xiàn)為無效并因此將不被執(zhí)行。這種技術可以方便地降低在執(zhí)行相關指令時不成功嘗試的次數(shù)。
如塊330所指示的,檢測不良清除事件(poison-clearingevent)。不良清除事件專門指示相關性已經(jīng)得到解決,或者不良清除事件是一個可能會使相關性得到解決的事件。在一些實施方案中,在對將使每個獨特的相關性得以解決的確切條件的跟蹤上的開銷可能會十分昂貴。因此,可以使特定相關性得以解決的公用事件用于清除一條或多條指令的不良指示符。如塊330所指示的,把該相關指令標記為安全(非不良),以便嘗試執(zhí)行。
圖3b展示的是在圖3a的塊330所執(zhí)行的操作的一種實施方案。在這種實施方案中,在332檢測任何退出的指令。作為檢測任何指令退出的結果,如塊334所指示的,復位全部不良指令從而將再次嘗試執(zhí)行。這種實施方案在用于實施所需求的硬件方面相對低廉;然而,在相關性還沒有清除的地方,它可能會導致相關指令的一些不希望的執(zhí)行。
圖3c展示的是在圖3a的塊330所執(zhí)行的操作的另一種實施方案。在這種實施方案中,在塊336檢測對最低級高速緩存器的寫操作。如塊334再次指示的那樣,對該寫操作的檢測使指令的全部不良位得以復位。這種技術在所需要的硬件的量上也是便利的,但是也可能會導致相關指令一些不成功的執(zhí)行。
圖3d展示的是用于通過使用指令轉化來處理指令相關性的另一種實施方案。圖3d與圖3a共享塊300、310和320。然而,在塊300標識了相關指令和與其相關的前一條指令后,圖3d的實施方案包括一個附加的操作。如塊305所指示的,使用用于指示與相關指令相關的前一條指令的標識符給相關指令加上標簽。標識符可以是指令的序列號或者是用于標識前一條指令的任何其它值。值得注意的是,在塊305執(zhí)行的加標簽操作可以按照不同于在圖3d中所表示的確切序列的順序來執(zhí)行。例如,可以不給相關指令加標簽直到經(jīng)過塊310和320中的一個塊或兩個塊為止。
在塊336,檢測指令的退出。因為較早地就用與相關指令相關的指令的標識符給相關指令加上了標簽,所以可以執(zhí)行指令專用的不良清除。換句話說,當指令退出時,可以復位僅用于與退出的指令相關的那些指令的不良指示符,方法是通過比較任何加標簽的相關指令的指示符和用于退出中的指令的對應值。因此,如塊338所指示的,清除用于那些相關指令的不良指示,該相關指令具有指示已清除退出的指令的指示符。在由于與相關指令相關的指令還沒有結束而妨礙它們得到正確執(zhí)行時,這種技術可以非常有利地在很大程度上降低相關指令不成功的執(zhí)行。
圖4展示的是應用指令轉化技術的系統(tǒng)的另一種實施方案。圖4的實施方案包括執(zhí)行邏輯425,它接收來自多路復用器415的指令。此外,分級隊列410接收來自多路復用器415的指令。分級隊列410存儲向執(zhí)行邏輯425進行調度的指令,并把這些指令傳遞到也與指令邏輯425相耦合的檢驗器450,以便判定執(zhí)行邏輯425是否已經(jīng)正確地執(zhí)行了指令。如在圖1a的實施方案中的情況下,檢驗器重放沒有得到正確執(zhí)行的指令。轉化邏輯420可以依賴于特定指令和/或指令不正確執(zhí)行的條件來轉化這樣的指令。
圖4還展示的是頁未命中處理器(PMH)460、變換后備緩沖區(qū)(translation lookaside buffer(TLB))470以及存儲器480。根據(jù)已知的頁處理技術,系統(tǒng)在TLB470中存儲一些頁表項。當在TLB470中找不到頁表項時,通過頁未命中處理器460執(zhí)行頁移動,以便從存儲器中檢索頁描述符項(PDE)以及接著的頁表項(PTE)。
圖5展示的是用于處理在圖4的系統(tǒng)中的頁故障的技術的一種實施方案。如塊500所指示的,標識產(chǎn)生頁故障的指令。這可以由轉化邏輯420使用來自執(zhí)行邏輯425和/或檢驗器450的輸入來執(zhí)行。如塊510所指示的,然后,轉化邏輯420把產(chǎn)生頁故障的指令轉化為對導致故障的該頁的頁描述符項進行的加載。如果指令轉化沒有被用于把頁描述符項加載引入到該重放系統(tǒng),則可能會阻礙另一條指令的執(zhí)行。
例如,替代使指令邏輯420執(zhí)行用于檢索頁描述符項的轉化操作,頁未命中處理器通過虛線連接465能把頁描述符項插入到執(zhí)行流中。該新添加的指令會置換另一條指令,從而在得到執(zhí)行該被置換指令的機會之前,使它通過重放系統(tǒng)再次得以循環(huán)。相反,因為已知產(chǎn)生頁故障的指令不能夠被成功執(zhí)行,所以在過渡時期,與置換另一個潛在地可能會成功得以執(zhí)行的指令相比,轉化那條指令可能是更高效的。
相似地,在完成頁描述符項的加載之后,如塊520所指示的,可以把頁描述符項的加載轉化為頁表項的加載(塊530)。這種轉化技術再次避免置換另一條指令。如塊540所指示的,完成頁表項的加載,并且可以把該指令轉化回為原始頁故障產(chǎn)生的指令(塊550)。因為在重放系統(tǒng)中,隨著在沒有置換其它操作的情況下使頁故障得到解決,現(xiàn)在該指令就可以在不產(chǎn)生頁故障的情況下得到執(zhí)行。
圖6展示的是用于處理間接指令的技術的一種實施方案。諸如MOVEBX,MEM[EAX]這樣的間接指令涉及兩級檢索。首先,必須檢索EAX的值,以便查找請求要加載到EBX中的數(shù)據(jù)的地址。其次,執(zhí)行對所請求的數(shù)據(jù)的地址(EAX的內容)的實際存儲器的訪問。如果把該指令譯碼為多個微操作,則就消耗額外的資源。因此,不把間接指令譯碼為多個微操作,而轉化為執(zhí)行適當?shù)牟僮骺赡苁怯欣摹?br>
因此,圖6表示的這種技術可以用于允許單個微操作實現(xiàn)間接尋址。在塊600,標識間接存儲器引用指令。間接存儲器引用技術和指令是眾所周知的,在此就不作進一步的論述了。這種技術可以用于多種間接的或相似的尋址技術,它們隱式地需要多次存儲器或寄存器的訪問或者存儲器和寄存器訪問的組合。
在塊610,把指令轉化為用于加載所請求數(shù)據(jù)的地址的變更指令。在上面的示例(MOV EBX,MEM[EAX])中,可以對EAX的值進行加載,并如塊620所指示的由存儲器執(zhí)行單元來接收它。下一步,如塊630所指示的,把指令轉化為對所請求數(shù)據(jù)的加載,并且執(zhí)行對由EAX寄存器所指示的存儲器單元的加載。因此,可以使用單指令槽來執(zhí)行間接或相似的存儲器訪問技術。
圖7展示的是用于處理數(shù)值計算的重放指令轉化的一種實施方案。在圖7的實施方案中,重放系統(tǒng)尤其要處理的是過于精確或高精確的情況。過于精確或高精確的情況可能是需要附加的周期或硬件來計算達到預期精度結果的指令或與特定數(shù)據(jù)相關的情況。因此,對附加的資源的需要可能是由于指令或者涉及的特定數(shù)字所請求的精度。
在塊700,檢測過于精確或高精確的情況。在塊710,執(zhí)行單元不嘗試計算最終結果,而是計算中間結果。如塊715所指示的那樣轉化指令,然后為其加上過于精確重放的標簽。下一步,如塊720所指示的那樣,執(zhí)行使用了中間結果的轉化或變更的指令。如塊725所指示的那樣,把最終結果放置在適當?shù)哪康拇鎯卧?br>
僅計算中間結果是有利的,這可能具有幾個原因。在一些情況下,使用更簡單的硬件也許是可行的,該更簡單的硬件不能夠以相同的周期數(shù)計算所有輸入數(shù)據(jù)的結果。通常,一些極少的情況需要添加大量硬件,以確保用與其它數(shù)字同樣的時間系統(tǒng)進行合適的處理。在這種情況下,通過重放可以獲得正確的最終結果,并且可以節(jié)省硬件。此外,一些不同的較高精度指令可以用與較低精度指令相似的方式方便地加以處理,除非要通過重放系統(tǒng)把它們回送,以便計算最終的和足夠準確的結果。
相似地,圖8展示的是用于處理某些極少的與數(shù)據(jù)相關的數(shù)學運算技術的一種實施方案。在圖8的實施方案中,可以執(zhí)行指令和/或操作數(shù)的代替物,以便方便地簡化硬件。可以再次去除在處理困難的和極少的情況所需要的某些方面的硬件,從而導致對性能僅有極少的影響而更緊湊的部件。
如塊800所指示的,檢測與數(shù)據(jù)相關的在計算上密集或硬件密集的數(shù)學運算。例如,某些舍入指令在計算上就很密集,因此需要大量的硬件。在塊810,把指令轉化為硬件和/或計算密集性較低的運算。例如,可以把舍入運算轉化為加法指令或減法指令,這要取決于所涉及的確切操作數(shù)。
最后,如圖820所指示的,執(zhí)行替代運算以便產(chǎn)生完全相同的結果。該結果與用戶的是“完全”相同的,其原因在于數(shù)字執(zhí)行單元所產(chǎn)生的達到所請求精度的結果與如果執(zhí)行了原始指令而產(chǎn)生的結果是一模一樣的。因此,用戶可能沒有意識到,執(zhí)行的是加法而不是舍入,但是執(zhí)行單元本身可以加以簡化從而它就不必處理稀少和困難的情況了。
圖9展示的是用于使用所公開的技術進行設計的模擬、仿真以及制造的各種設計表示或格式。代表設計的數(shù)據(jù)可以用非常多的方式來代表設計。首先,如在仿真中應用的那樣,硬件可以使用硬件描述語言或另一種功能性描述語言來代表,硬件描述語言或另一種功能性描述語言基本上提供所設計硬件預期要如何加以執(zhí)行的計算機化的模型。硬件模型910可以存儲在諸如計算機存儲器的存儲介質900中,從而可以使用仿真軟件920來仿真該模型,該仿真軟件把特定的測試套件930施加在硬件模型910上,以便判定它是否確實按預期發(fā)揮了作用。在一些實施方案中,并不把該仿真軟件記錄、捕獲、或保留在該介質中。
此外,在設計過程的一些階段,可以生成具有邏輯和/或晶體管門的電路級模型。這種模型有時可以通過使用可編程邏輯形成該模型的專用硬件仿真器來相似地加以仿真。這種仿真類型在一定程度上還可以是一種模擬技術。在任何情況下,可重新配置的硬件是另一種實施方案,它可以涉及一種存儲應用了所公開的技術的模型的機器可讀介質。
此外,多數(shù)設計在有些階段會達到代表各種器件在硬件模型中的物理布置的數(shù)據(jù)級別。在應用常規(guī)半導體制造技術的情況下,代表硬件模型的數(shù)據(jù)可以是這樣的數(shù)據(jù),該數(shù)據(jù)指定在用于生成集成電路的掩膜的不同掩膜層上各種特征的存在或缺失。這種代表集成電路的數(shù)據(jù)還體現(xiàn)所公開的技術,原因在于,在該數(shù)據(jù)中的電路或邏輯能夠加以仿真或制造以便執(zhí)行這些技術。
在該設計的任何表示中,數(shù)據(jù)可以存儲在任何形式的計算機可讀介質中。這種介質可以是經(jīng)過調制的或以其它方式產(chǎn)生的用于傳送上述信息的光或電波960、存儲器950、或者諸如盤的磁或光存儲裝置940。描述該設計或該設計的特定部分的比特組可以是為了其它進一步設計或制造而銷售或使用的物品。
至此,公開了重放指令轉化。盡管已經(jīng)對某些示例實施方案加以描述并在附圖中加以表示,但是可以理解,上述實施方案僅是對本發(fā)明廣義的說明而不是限制;由于那些熟悉本領域的普通技術人員通過對公開內容的學習可以想到各種其它的修改方案,所以本發(fā)明并不局限于所表示和描述的專門的結構和安排。
權利要求
1.一種裝置,它包括用于執(zhí)行指令的執(zhí)行單元;用于在該執(zhí)行單元沒有正確地執(zhí)行指令的情況下重放變更了的指令的重放系統(tǒng)。
2.權利要求1的裝置,其中重放系統(tǒng)包括用于在第一條件下重復指令的重放回路;以及用于在第二條件下重放所述變更了的指令的指令轉化電路。
3.權利要求1的裝置,其中重放系統(tǒng)包括用于在該指令是第一指令的情況下重放該指令的重放回路;以及用于在該指令是第二指令的情況下重放變更了的指令的指令轉化電路。
4.權利要求3的裝置,其中第一指令是多條不可修改的指令之一,并且第二指令是多條可修改的指令之一。
5.權利要求4的裝置,其中多條可修改的指令僅在它們初始執(zhí)行出現(xiàn)故障的情況下進行轉化。
6.權利要求1的裝置,其中所述重放系統(tǒng)跟蹤允許進行指令變更的至少一個額外的比特。
7.權利要求1的裝置,其中所述裝置包括低級高速緩存器和較高級的高速緩存器,其中重放系統(tǒng)變更已經(jīng)在較高級的高速緩存中未命中的加載指令,以便其后僅訪問低級高速緩存器。
8.權利要求1的裝置,其中所述裝置包括用于處理導致頁故障的指令的頁未命中處理器,其中該指令是導致頁故障的存儲器訪問,以及其中重放系統(tǒng)把存儲器訪問變成一次或多次存儲器訪問以便處理頁故障。
9.權利要求8的裝置,其中重放系統(tǒng)用頁描述符讀出來替換存儲器訪問,接著用頁表項讀出替換所述頁描述符讀出,然后恢復存儲器訪問。
10.權利要求1的裝置,其中所述指令是相關指令,該指令與前一條指令的結果相關,并且其中重放系統(tǒng)變更該相關指令,以便在前一條指令得到成功執(zhí)行之前,通過重放系統(tǒng)避免執(zhí)行進一步的迭代。
11.權利要求10的裝置,其中重放系統(tǒng)通過設置用于指示該指令無效的相關指令的有效位來變更相關指令。
12.權利要求10的裝置,其中當所述前一條指令退出時,重放系統(tǒng)把相關指令變更回為可執(zhí)行的形式。
13.權利要求11的裝置,其中當任何指令退出時,重放系統(tǒng)復位有效位。
14.權利要求10的裝置,其中重放系統(tǒng)跟蹤前一條指令的序列號,并且其中當所述前一條指令結束時,重放系統(tǒng)把相關指令返回為可執(zhí)行的形式。
15.權利要求10的裝置,其中該裝置還包括高速緩存器,并且其中當出現(xiàn)對該高速緩存器的寫操作時,重放系統(tǒng)把相關指令返回為可執(zhí)行的形式。
16.權利要求1的裝置,其中所述指令是高精確度的指令,并且所述重放系統(tǒng)生成第一結果,然后執(zhí)行變更了的指令以便根據(jù)第一結果生成最終結果。
17.權利要求1的裝置,其中所述執(zhí)行單元是數(shù)字執(zhí)行單元,并且其中所述重放系統(tǒng)檢測指令的與數(shù)據(jù)相關的條件,并提供變更了的指令以便獲得完全相同的結果。
18.權利要求17的裝置,其中指令是舍入指令,而變更了的指令是加指令。
19.權利要求17的裝置,其中數(shù)字執(zhí)行單元缺少用于計算一個或多個相對稀少的數(shù)字情況的硬件,并且其中這種相對稀少的數(shù)字情況代之以通過重放系統(tǒng)注入變更了的指令以便獲得有效的完全相同的結果而實施。
20.一種處理器,它包括用于調度原始指令的調度器;用于嘗試執(zhí)行原始指令的執(zhí)行單元;用于判定原始指令是否正確執(zhí)行的檢驗器;一個重放系統(tǒng),它包括用于重放原始指令的重放回路;用于把原始指令變?yōu)樽兏说闹噶畈⒅胤旁撟兏说闹噶畹闹胤烹娐贰?br>
21.權利要求20的處理器,其中,連接所述重放系統(tǒng)以便當?shù)谝粭l件出現(xiàn)時重放原始指令,并且當?shù)诙l件出現(xiàn)時,重放變更了的指令。
22.權利要求20的處理器,其中,連接所述重放系統(tǒng)以便當原始指令是第一指令時重放原始指令,并且當原始指令是第二指令時,重放變更了的指令。
23.權利要求22的處理器,其中所述第一指令是多條不可變更的指令之一,并且其中所述第二指令是多條可變更的指令之一。
24.一種方法,它包括執(zhí)行原始指令;判定第一條件是否出現(xiàn);如果所述第一條件出現(xiàn),則轉化所述原始以便形成轉化了的指令;以及執(zhí)行所述轉化指令。
25.權利要求24的方法,其中對第一條件是否出現(xiàn)的判定還包括判定原始指令是否得到正確的執(zhí)行。
26.權利要求24的方法,它還包括判定是否出現(xiàn)第二條件;如果所述第二條件出現(xiàn),則重放所述原始指令以便執(zhí)行。
27.權利要求24的方法,其中轉化包括變更已經(jīng)在較高級的高速緩存器中未命中的加載指令,以便在其后僅訪問較低級高速緩存器。
28.權利要求24的方法,其中轉化包括變更產(chǎn)生頁故障的指令,以便執(zhí)行用于處理頁故障的一條或多條其它指令。
29.一種包括用于存儲表示集成電路的數(shù)據(jù)的機器可讀介質的物品,它包括用于執(zhí)行指令的執(zhí)行單元;用于在執(zhí)行單元沒有正確地執(zhí)行指令的情況下重放變更了的指令的重放系統(tǒng)。
30.權利要求29的還存儲表示集成電路的數(shù)據(jù)的物品,它還包括用于在第一條件下重放指令的重放回路;以及用于在第二條件下重放變更了的指令的指令轉化電路。
31.權利要求29的物品,其中表示集成電路的數(shù)據(jù)包括集成電路的功能性描述。
32.權利要求29的物品,其中表示集成電路的數(shù)據(jù)包括硬件描述語言代碼。
33.權利要求29的物品,其中表示集成電路的數(shù)據(jù)包括表示多個掩膜層的串物理數(shù)據(jù)的數(shù)據(jù),該物理數(shù)據(jù)表示在所述多個掩膜層的每個的各種位置的材料的存在或缺失。
34.一種包括已在其上存儲了數(shù)據(jù)的機器可讀載體介質的物品,當結合仿真例程把該數(shù)據(jù)加載到計算機系統(tǒng)存儲器中時,該數(shù)據(jù)提供模型的功能,該模型包括用于執(zhí)行指令的執(zhí)行單元;用于在執(zhí)行單元沒有正確地執(zhí)行指令時重放變更了的指令的重放系統(tǒng)。
35.權利要求34的物品,其中模型還包括用于在第一條件下重放指令的重放回路;以及用于在第二條件下重放變更了的指令的指令轉化電路。
全文摘要
重放指令轉化。所公開的裝置包括用于執(zhí)行指令的執(zhí)行單元。如果該執(zhí)行單元沒有正確地執(zhí)行指令,則重放系統(tǒng)就重放該指令的變更了的指令。
文檔編號G06F9/38GK1449520SQ01814866
公開日2003年10月15日 申請日期2001年6月21日 優(yōu)先權日2000年6月30日
發(fā)明者K·梅內澤斯, D·薩格爾, T·托爾, D·卡梅安 申請人:英特爾公司