本公開的各方面涉及在計(jì)算機(jī)系統(tǒng)上執(zhí)行計(jì)算機(jī)應(yīng)用程序。具體地說,本公開的各方面涉及一種為針對(duì)計(jì)算機(jī)系統(tǒng)的較舊版本所設(shè)計(jì)的應(yīng)用程序/標(biāo)題提供向后兼容性的系統(tǒng)或方法。
背景
現(xiàn)代計(jì)算機(jī)系統(tǒng)經(jīng)常針對(duì)不同計(jì)算任務(wù)使用若干不同處理器。例如,除了若干中央處理單元(CPU),現(xiàn)代計(jì)算機(jī)還可以具有專用于圖形管線中的某些計(jì)算任務(wù)的圖形處理單元(GPU),或?qū)S糜卺槍?duì)音頻的數(shù)字信號(hào)處理的單元,所有這些單元潛在地是加速處理單元(APU)的一部分,所述APU也可以包含其他單元。使用可以在APU內(nèi)部或在外部位于計(jì)算機(jī)的母板上的總線將這些處理器連接到各種類型的存儲(chǔ)器。
通常針對(duì)諸如視頻游戲控制臺(tái)或智能電話(“舊版裝置”)的計(jì)算機(jī)系統(tǒng)創(chuàng)建一組應(yīng)用程序,并且當(dāng)發(fā)布計(jì)算機(jī)系統(tǒng)的變體或更先進(jìn)版本(“新裝置”)時(shí),希望舊版裝置的應(yīng)用程序在新裝置上完美地運(yùn)行,而不需要考慮到新裝置的性質(zhì)而進(jìn)行的重新編譯或任何修改。如新裝置的硬件體系結(jié)構(gòu)、固件和操作系統(tǒng)中所包含,新裝置的這個(gè)方面經(jīng)常被稱為“向后兼容性”。
向后兼容性經(jīng)常通過二進(jìn)制兼容性來實(shí)現(xiàn),其中新裝置能夠執(zhí)行針對(duì)舊版裝置創(chuàng)建的程序。然而,當(dāng)這種裝置的實(shí)時(shí)行為對(duì)于它們的操作很重要時(shí),如在視頻游戲控制臺(tái)或智能電話的情況下,新裝置的操作速度的顯著差別可能使其不能相對(duì)于舊版裝置向后兼容。如果新裝置具有比舊版裝置低的性能,那么阻止向后兼容性的問題可能出現(xiàn);如果新裝置具有更高的性能或與舊版裝置相比具有不同的性能特性,也是這樣。
本公開的各個(gè)方面正是在此背景下產(chǎn)生。
附圖說明
通過結(jié)合附圖考慮以下詳述,可以輕易地理解本公開的教義,在附圖中:
圖1是示出根據(jù)本公開的各方面的中央處理單元(CPU)核心的一個(gè)實(shí)例的框圖,所述CPU核心可以被配置來以向后兼容模式操作。
圖2是示出根據(jù)本公開的各方面的用于以向后兼容模式操作CPU的可能過程流程的一個(gè)實(shí)例的流程圖。
圖3是根據(jù)本公開的各方面的具有被配置來以向后兼容模式操作的CPU的裝置的框圖。
具體實(shí)施方式
盡管以下詳述為了說明目的包括許多特定細(xì)節(jié),但是本領(lǐng)域任何普通技術(shù)人員將理解的是,對(duì)于以下細(xì)節(jié)的許多變化和改變?cè)诒景l(fā)明的范圍內(nèi)。因此,以下描述的本發(fā)明的示例性實(shí)施方案是在不損害本發(fā)明的一般性也不對(duì)要求保護(hù)的發(fā)明強(qiáng)加任何限制的情況下陳述的。
介紹
即使新裝置的CPU與舊版裝置二進(jìn)制兼容(即,能夠執(zhí)行針對(duì)舊版裝置創(chuàng)建的程序),新裝置的CPU與舊版裝置的CPU之間的性能特性的差別仍可能導(dǎo)致舊版應(yīng)用程序中的錯(cuò)誤,并且因此新裝置將不是向后兼容的。
如果新裝置的CPU具有低于舊版裝置的CPU的性能,那么舊版應(yīng)用程序中的許多錯(cuò)誤可能由于不能滿足由顯示定時(shí)、音頻流出等等強(qiáng)加的實(shí)時(shí)期限而產(chǎn)生。如果新裝置的CPU具有實(shí)質(zhì)上高于舊版裝置的CPU的性能,那么舊版應(yīng)用程序中的許多錯(cuò)誤可能由于這種高速操作的未測(cè)試結(jié)果而產(chǎn)生。例如,在生產(chǎn)者-消費(fèi)者模型中,如果數(shù)據(jù)消費(fèi)者(例如,CPU)以比初始預(yù)期更高的速度操作,那么它可能試圖在數(shù)據(jù)生產(chǎn)者(例如,計(jì)算機(jī)的一些其他部件)使數(shù)據(jù)可用之前訪問數(shù)據(jù)??蛇x地,如果數(shù)據(jù)生產(chǎn)者(例如,CPU)以比初始預(yù)期更高的速度操作,那么它可能覆寫數(shù)據(jù)消費(fèi)者(例如,計(jì)算機(jī)的一些其他部件)仍在使用的數(shù)據(jù)。
另外,由于CPU執(zhí)行代碼的速度取決于被執(zhí)行的特定代碼的特性,因此可能的是,新裝置的CPU的性能相對(duì)于舊版裝置增加的程度將取決于被執(zhí)行的特定代碼。這可以導(dǎo)致上述生產(chǎn)者-消費(fèi)者模型中的問題,其中生產(chǎn)者和消費(fèi)者都是CPU,但是以在舊版硬件上沒有遇到的相對(duì)速度執(zhí)行舊版應(yīng)用程序的代碼。
實(shí)施方案
本公開的各方面描述可以允許相對(duì)于舊版計(jì)算機(jī)系統(tǒng)的更高程度向后兼容性的計(jì)算機(jī)系統(tǒng)和方法。
在本公開的實(shí)現(xiàn)方式中,當(dāng)以向后兼容模式(“BC模式”)執(zhí)行時(shí),與CPU有關(guān)的某些資源被限制并且CPU的操作的各方面被更改。
由于各種資源的限制,CPU在BC模式中的性能可能變得更接近舊版CPU的性能,從而導(dǎo)致舊版應(yīng)用程序中由CPU的非預(yù)期性能特性引起的錯(cuò)誤更少。
另外,舊版CPU上不存在的某些CPU特征可以在BC模式中被禁用;CPU的指令執(zhí)行的延時(shí)可以在BC模式中更改為等于或變得更接近舊版CPU的延時(shí);并且CPU的各種單元的操作的算法細(xì)節(jié)可以在BC模式中更改為匹配或近似于舊版CPU的那些單元的操作的算法細(xì)節(jié)。因此,當(dāng)在BC模式中時(shí),新CPU的性能可以變得更接近舊版CPU的性能,從而導(dǎo)致舊版應(yīng)用程序中由新CPU的非預(yù)期性能特性引起的錯(cuò)誤更少。
下文描述CPU的一般體系結(jié)構(gòu)以及本公開的各方面,這些方面與當(dāng)在BC模式中時(shí)特定資源的限制、特征的禁用、延時(shí)的更改和操作的算法細(xì)節(jié)的更改有關(guān)。
圖1描述CPU核心100的一般體系結(jié)構(gòu)。CPU核心100通常包括分支預(yù)測(cè)單元102,其試圖預(yù)測(cè)分支是否將被采用,并且還試圖(在所述分支被采用的情況下)預(yù)測(cè)所述分支的目標(biāo)地址。在這些預(yù)測(cè)是正確的情況下,推測(cè)地執(zhí)行的代碼的效率將增加;因此高度準(zhǔn)確的分支預(yù)測(cè)是極度需要的。分支預(yù)測(cè)單元102可以包括高度專門化的子單元,諸如追蹤來自子例程的返回地址的返回地址堆棧104、追蹤間接分支的目的地的間接目標(biāo)陣列106,以及追蹤分支的過去歷史以便更準(zhǔn)確地預(yù)測(cè)分支的所得地址的分支目標(biāo)緩沖器108和其相關(guān)聯(lián)預(yù)測(cè)邏輯。
根據(jù)本公開的某些方面,在BC模式中,新CPU的間接目標(biāo)陣列106的大小、返回地址堆棧104的大小或分支目標(biāo)緩沖器108的大小可以被減小以匹配或更緊密地近似于它們針對(duì)舊版CPU的相應(yīng)大小。為了清楚起見,這種減小采取減小資源的可用部分的形式,例如,不允許使用返回地址堆棧的一部分,并且因此減小可以追蹤的調(diào)用和相關(guān)聯(lián)返回的數(shù)量;當(dāng)不在BC模式中時(shí),全部資源是可用的。
根據(jù)本公開的某些方面,在BC模式中,新CPU的分支目標(biāo)緩沖器108和其相關(guān)聯(lián)預(yù)測(cè)邏輯的操作的算法細(xì)節(jié)可以被更改以匹配舊版CPU的算法細(xì)節(jié)。以舉例而不是限制的方式,如果舊版CPU在其追蹤彼此接近的分支指令的能力方面受到限制,那么在BC模式中,新CPU可以匹配這個(gè)舊版CPU行為;或如果舊版CPU使用實(shí)質(zhì)上不同風(fēng)格的分支預(yù)測(cè)邏輯(例如,飽和計(jì)數(shù)器而不是自適應(yīng)預(yù)測(cè)器),那么新CPU可以包括舊版CPU的邏輯并且在BC模式中啟用所述邏輯。
根據(jù)本公開的某些方面,如果新CPU的分支目標(biāo)緩沖器108和其相關(guān)聯(lián)預(yù)測(cè)邏輯包括專用循環(huán)預(yù)測(cè)器,但是舊版CPU上不存在專用循環(huán)預(yù)測(cè)器,那么在BC模式中,可以禁用新CPU的專用循環(huán)預(yù)測(cè)器。
CPU核心100通常包括指令提取和解碼單元110,其包括指令提取單元112、指令字節(jié)緩沖器114和指令解碼單元116。CPU核心100通常還包括若干指令相關(guān)的高速緩存和指令轉(zhuǎn)換后備緩沖器(ITLB)120。這些可以包括ITLB高速緩存層次結(jié)構(gòu)124,其將虛擬地址高速緩存到物理地址轉(zhuǎn)換信息,諸如頁面表?xiàng)l目、頁面目錄條目等等。使用這個(gè)信息來將指令的虛擬地址變換成物理地址,使得指令提取單元112可以從高速緩存層次結(jié)構(gòu)加載指令。以舉例而不是限制的方式,可以根據(jù)高速緩存層次結(jié)構(gòu)來高速緩存程序指令,所述高速緩存層次結(jié)構(gòu)包括駐留在核心中的1級(jí)指令高速緩存(L1I-高速緩存)122以及在CPU核心100外部的其他高速緩存級(jí)別176;使用指令的物理地址,首先搜索這些高速緩存來找到程序指令。如果未找到指令,那么從系統(tǒng)存儲(chǔ)器101加載指令。取決于體系結(jié)構(gòu),還可以存在如下文所述的包含已解碼指令的微操作(micro-op)高速緩存126。
在本公開的某些方面中,在BC模式中,L1I-高速緩存124、微操作高速緩存126或ITLB高速緩存層次結(jié)構(gòu)122的各種級(jí)別的大小或關(guān)聯(lián)性可以被改變以匹配或更緊密地近似于它們針對(duì)舊版CPU的相應(yīng)大小和關(guān)聯(lián)性。以舉例而不是限制的方式,改變(例如減小)ITLB高速緩存層次結(jié)構(gòu)124的大小可以涉及(1)減小級(jí)別的數(shù)量;或(2)改變一個(gè)或多個(gè)級(jí)別的大小(例如,高速緩存大小、塊大小、一組中的塊數(shù))。更改高速緩存的關(guān)聯(lián)性可以涉及例如使全關(guān)聯(lián)高速緩存作為四向或雙向高速緩存來操作。盡管本公開的各方面包括指令相關(guān)的高速緩存或ITLB的大小或關(guān)聯(lián)性被減小的實(shí)現(xiàn)方式,但是本公開不限于此類實(shí)現(xiàn)方式。例如,有可能舊版CPU必須具有更大的高速緩存,所述高速緩存的關(guān)聯(lián)性在舊版CPU中更小(例如,雙向而不是四向)。在這種情況下,新CPU可以在BC模式中運(yùn)行,其中對(duì)應(yīng)高速緩存的大小增加并且關(guān)聯(lián)性減小以匹配或近似于舊版CPU上的高速緩存的行為。
一旦提取了程序指令,通常將指令放在指令字節(jié)緩沖器114中,等待由指令提取和解碼單元110處理。解碼可以是非常復(fù)雜的過程;難以每個(gè)循環(huán)解碼多個(gè)指令,并且可能存在對(duì)指令對(duì)準(zhǔn)或指令類型的限制,這限制了一個(gè)循環(huán)中可以解碼多少個(gè)指令。取決于體系結(jié)構(gòu),可以將已解碼指令放在微操作高速緩存126中(如果在新CPU上存在微操作高速緩存),使得可以繞過解碼階段以便隨后使用程序指令。
在本公開的某些方面中,在BC模式中,新CPU的指令提取和解碼單元110的操作的算法細(xì)節(jié)可以被更改以匹配舊版CPU的算法細(xì)節(jié)。以舉例而不是限制的方式,如果舊版CPU將解碼限于在指令字節(jié)緩沖器114中的特定區(qū)域內(nèi)具有操作碼的指令,那么新CPU可以類似地限制解碼。
在本公開的某些方面中,如果微操作高速緩存126在新CPU上存在并且在舊版CPU上不存在,那么在BC模式中,可以禁用新CPU的微操作高速緩存126。
通常將已解碼指令傳送到其他用于分派和調(diào)度的單元130。這些單元可以使用停用隊(duì)列132來追蹤遍及CPU管線的剩余部分的指令的狀態(tài)。并且,由于在許多CPU體系結(jié)構(gòu)上可用的通用和SIMD寄存器的數(shù)量有限,可以執(zhí)行寄存器重命名,其中當(dāng)在被執(zhí)行的指令流中遇到邏輯(也稱為體系結(jié)構(gòu)的)寄存器時(shí),指派物理寄存器140來表示它們。物理寄存器140可以包括單指令多數(shù)據(jù)(SIMD)寄存器組142和通用(GP)寄存器組144,其大小可以遠(yuǎn)大于在特定CPU體系結(jié)構(gòu)上可用的邏輯寄存器的數(shù)量,并且因此性能可以得到顯著增加。在執(zhí)行寄存器重命名134后,通常將指令放在調(diào)度隊(duì)列136中,每個(gè)循環(huán)可以從調(diào)度隊(duì)列136選擇若干指令(基于依賴性)來由執(zhí)行單元150執(zhí)行。
在本公開的某些方面中,在BC模式中,CPU的停用隊(duì)列132的大小、調(diào)度隊(duì)列136的大小或SIMD寄存器組142或GP寄存器組144的大小可以被減小以匹配或更緊密地近似于它們針對(duì)舊版CPU的相應(yīng)大小。為了清楚起見,這種減小采取減小資源的可用部分的形式,例如,限制在BC模式中可供應(yīng)用程序使用的物理寄存器的數(shù)量;當(dāng)不在BC模式中時(shí),全部寄存器組將可供應(yīng)用程序使用。
執(zhí)行單元150通常包括:對(duì)SIMD寄存器組142中所包含的128位或更寬SIMD寄存器中所包含的多個(gè)數(shù)據(jù)字段執(zhí)行若干并行操作的SIMD管152、對(duì)GP寄存器組144中所包含的GPR執(zhí)行若干邏輯運(yùn)算、算術(shù)運(yùn)算和混雜運(yùn)算的算術(shù)和邏輯單元(ALU)154,以及計(jì)算地址的地址生成單元(AGU)156,存儲(chǔ)器應(yīng)從所述地址進(jìn)行存儲(chǔ)或加載。每個(gè)類型的執(zhí)行單元可以有多個(gè)實(shí)例,并且所述實(shí)例可以具有不同能力,例如特定SIMD管152可以能夠執(zhí)行浮點(diǎn)乘法運(yùn)算但是不能執(zhí)行浮點(diǎn)加法運(yùn)算。
在本公開的某些方面中,在BC模式中,ALU、AGU或SIMD管的可用數(shù)量可以被減小以匹配或更緊密地近似于存在于舊版CPU上的此類單元的相應(yīng)數(shù)量。
在本公開的某些方面中,在BC模式中,新CPU的指令執(zhí)行的延時(shí)可以用這種方式更改以便等于或更接近舊版CPU的延時(shí);例如,在BC模式中,新CPU上的除法運(yùn)算的延時(shí)可以延長(例如,通過更緩慢地計(jì)算結(jié)果,或通過延遲將結(jié)果傳輸?shù)焦芫€的后續(xù)階段)以匹配或更緊密地近似于舊版CPU上的除法運(yùn)算的延時(shí)。
存儲(chǔ)和加載通常在存儲(chǔ)隊(duì)列162和加載隊(duì)列164中進(jìn)行緩沖,使得許多存儲(chǔ)操作可以并行執(zhí)行。為了幫助存儲(chǔ)器操作,CPU核心100通常包括若干數(shù)據(jù)相關(guān)的高速緩存和數(shù)據(jù)轉(zhuǎn)換后備緩沖器(DTLB)170。DTLB高速緩存層次結(jié)構(gòu)172將虛擬地址高速緩存到物理地址轉(zhuǎn)換,諸如頁面表?xiàng)l目、頁面目錄條目等等;使用這個(gè)信息來將存儲(chǔ)器操作的虛擬地址變換成物理地址,使得可以從系統(tǒng)存儲(chǔ)器存儲(chǔ)或加載數(shù)據(jù)。數(shù)據(jù)通常被高速緩存在駐留在核心中的1級(jí)數(shù)據(jù)高速緩存(L1D-高速緩存)174以及在核心100外部的其他高速緩存級(jí)別176中。
在本公開的某些方面中,在BC模式中,L1D-高速緩存174或DTLB高速緩存層次結(jié)構(gòu)172的各種級(jí)別的大小或關(guān)聯(lián)性可以被減小以匹配或更緊密地近似于它們針對(duì)舊版CPU的相應(yīng)大小和關(guān)聯(lián)性。在本公開的某些方面中,在BC模式中,CPU的存儲(chǔ)隊(duì)列162或加載隊(duì)列164的大小(例如,可允許的未完成存儲(chǔ)或加載的數(shù)量)可以被減小以匹配或更緊密地近似于它們針對(duì)舊版CPU的相應(yīng)大小。
圖2是示出根據(jù)本公開的各方面的方法的可能過程流程的一個(gè)實(shí)例的流程圖。所述方法在201處開始,例如,從將應(yīng)用程序加載到具有新CPU的系統(tǒng)上開始。經(jīng)由檢查軟件ID、軟件校驗(yàn)和、與軟件相關(guān)聯(lián)的元數(shù)據(jù)、媒體類型或其他機(jī)制,確定應(yīng)用程序是針對(duì)新CPU設(shè)計(jì)的還是針對(duì)系統(tǒng)的先前版本設(shè)計(jì)的,如210處所指示。這種確定可以在系統(tǒng)上運(yùn)行的軟件中或在系統(tǒng)的硬件中實(shí)現(xiàn)。當(dāng)確定所加載應(yīng)用程序意圖用于新CPU時(shí),系統(tǒng)可以正常運(yùn)行,如220處所指示。例如,CPU可以在不限制可用資源、不禁用特征、不更改指令執(zhí)行的延時(shí)或不更改算法細(xì)節(jié)的情況下正常運(yùn)行以便匹配或近似于舊版CPU的行為。
當(dāng)確定所加載應(yīng)用程序意圖用于舊版CPU時(shí),CPU在BC模式中運(yùn)行,其中所選擇可用資源受到限制242,在舊版CPU上不存在的所選擇特征被禁用244,指令執(zhí)行的延時(shí)被更改246,或算法細(xì)節(jié)被更改248,或這些中的兩個(gè)或更多個(gè)的某種組合,以便匹配或近似于舊版CPU的行為。以上討論了這些可能性的實(shí)例。
以舉例而不是限制的方式,為了在所選擇資源受到限制242的情況下操作所述CPU,BC模式可以由新CPU的硬件的合適配置、由運(yùn)行CPU的操作系統(tǒng)的合適配置或兩者的某種組合來實(shí)現(xiàn)。例如,如上文所討論,在BC模式中,CPU的間接目標(biāo)陣列106的大小、返回地址堆棧104的大小或分支目標(biāo)緩沖器108的大小可以被減小以匹配或更緊密地近似于它們針對(duì)舊版CPU的相應(yīng)大小。以舉例而不是限制的方式,相關(guān)硬件可以被配置成使得在BC模式中,操作系統(tǒng)或CPU固件可以減小間接目標(biāo)陣列106的大小以便匹配或更緊密地近似于它們針對(duì)舊版CPU的相應(yīng)大小。以下偽碼示出如何可以實(shí)現(xiàn)這種情況的實(shí)例:
可以用類似的方式減小返回地址堆棧104的大小或分支目標(biāo)緩沖器108的大小或其他可用資源。
以類似的方式,為了在所選擇特征被禁用244的情況下操作CPU,新CPU上存在的在舊版CPU上不存在的某些硬件資源(例如,微操作高速緩存126)可以被配置成使得它們可以在BC模式中由操作系統(tǒng)或CPU固件禁用??蛇x地,新CPU上存在的在舊版CPU上不存在的硬件資源可以被配置成使得它們?cè)贐C模式中被應(yīng)用程序忽略。
以舉例而不是限制的方式,為了在新CPU的指令執(zhí)行的延時(shí)被更改246以匹配或近似于舊版CPU的延時(shí)的情況下操作所述CPU,執(zhí)行單元150的硬件可以被配置成在BC模式中添加“無操作”指令的等效物來獲得BC模式中所需的延時(shí)。
以舉例而不是限制的方式,為了在新CPU的一個(gè)或多個(gè)單元的操作的算法細(xì)節(jié)被更改248的情況下操作新CPU。以舉例而不是限制的方式,分支預(yù)測(cè)單元102的操作的算法細(xì)節(jié)可以在BC模式中被更改。例如,如上文所討論,如果舊版CPU在其追蹤彼此接近的分支指令的行為的能力方面受到限制,那么在BC模式中,分支預(yù)測(cè)單元102可以被配置成在BC模式中匹配這個(gè)舊版CPU行為??蛇x地,如果舊版CPU使用實(shí)質(zhì)上不同風(fēng)格的分支預(yù)測(cè)邏輯(例如,飽和計(jì)數(shù)器而不是自適應(yīng)預(yù)測(cè)器),那么新CPU的分支預(yù)測(cè)單元102可以包括舊版CPU的可以在BC模式中啟用的邏輯。在其他實(shí)現(xiàn)方式中,可以利用可以在BC模式中啟用的舊版邏輯來類似地配置新CPU的指令提取和解碼單元110、分派和調(diào)度單元130或執(zhí)行單元150的操作的算法細(xì)節(jié)。
現(xiàn)在轉(zhuǎn)到圖3,描述被配置來根據(jù)本公開的各方面操作的系統(tǒng)300的說明性實(shí)例。根據(jù)本公開的各方面,系統(tǒng)300可以是嵌入式系統(tǒng)、移動(dòng)電話、個(gè)人計(jì)算機(jī)、平板計(jì)算機(jī)、便攜式游戲裝置、工作站、游戲控制臺(tái)等等。
系統(tǒng)300總體上包括中央處理單元(CPU)320,所述CPU 320可以包括CPU核心和在圖1中描述并且在上文討論的類型的其他特征。以舉例而不是限制的方式,CPU 320可以是加速處理單元(APU)310的一部分,所述APU 310包括處于單個(gè)芯片上的CPU 320和圖形處理單元(GPU)330。在替代實(shí)現(xiàn)方式中,CPU 320和GPU 330可以實(shí)現(xiàn)為單獨(dú)芯片上的單獨(dú)硬件部件。
系統(tǒng)300還可以包括存儲(chǔ)器340。存儲(chǔ)器340可以任選地包括可供CPU 320和GPU 330訪問的主存儲(chǔ)器單元。CPU 320和GPU 330可以各自包括一個(gè)或多個(gè)處理器核心,例如,單個(gè)核心、兩個(gè)核心、四個(gè)核心、八個(gè)核心或更多個(gè)核心。CPU 320和GPU 330可被配置來使用數(shù)據(jù)總線390訪問一個(gè)或多個(gè)存儲(chǔ)器單元,并且在一些實(shí)現(xiàn)方式中,系統(tǒng)300包括兩個(gè)或更多個(gè)不同總線可能是有用的。
存儲(chǔ)器340可以包括呈集成電路形式的一個(gè)或多個(gè)存儲(chǔ)器單元,所述集成電路提供可訪問的存儲(chǔ)器,例如,RAM、DRAM等等。存儲(chǔ)器包含可執(zhí)行指令,所述可執(zhí)行指令被配置來在執(zhí)行時(shí)實(shí)現(xiàn)圖2的方法以便確定當(dāng)運(yùn)行原始針對(duì)在舊版CPU上執(zhí)行所創(chuàng)建的應(yīng)用程序時(shí),以BC模式操作CPU 320。另外,存儲(chǔ)器340可以包括專用圖形存儲(chǔ)器,用于暫時(shí)存儲(chǔ)圖形資源、圖形緩沖器和用于圖形渲染管線的其他圖形數(shù)據(jù)。
CPU 320可以被配置來執(zhí)行CPU代碼,所述代碼可以包括操作系統(tǒng)(OS)321或應(yīng)用程序322(例如,視頻游戲)。OS 321可以被配置來實(shí)現(xiàn)以BC模式操作CPU 320的某些特征,如上文所討論。CPU代碼可以包括圖形應(yīng)用程序編程接口(API)324,用于基于應(yīng)用程序322的狀態(tài)向由GPU 330實(shí)現(xiàn)的程序發(fā)出繪圖命令或繪圖調(diào)用。CPU代碼還可以實(shí)現(xiàn)物理模擬和其他功能。所述代碼的用于OS 321、應(yīng)用程序322或API 324中的一個(gè)或多個(gè)的部分可以存儲(chǔ)在存儲(chǔ)器340中、在CPU內(nèi)部或外部的高速緩存中或可供CPU 320訪問的大容量存儲(chǔ)裝置中。
系統(tǒng)300還可以包括眾所周知的支持功能350,所述支持功能350可以例如通過總線390與系統(tǒng)的其他部件通信。此類支持功能可以包括但不限于輸入/輸出(I/O)元件352、可以包括分別用于CPU和GPU的單獨(dú)時(shí)鐘的一個(gè)或多個(gè)時(shí)鐘356,以及可以在CPU 320外部的一個(gè)或多個(gè)級(jí)別的高速緩存358。系統(tǒng)300可以任選地包括大容量存儲(chǔ)裝置360,諸如磁盤驅(qū)動(dòng)器、CD-ROM驅(qū)動(dòng)器、閃存、磁帶驅(qū)動(dòng)器、藍(lán)光驅(qū)動(dòng)器等等,用來存儲(chǔ)程序和/或數(shù)據(jù)。在一個(gè)實(shí)例中,大容量存儲(chǔ)裝置360可以接收計(jì)算機(jī)可讀介質(zhì)362,所述計(jì)算機(jī)可讀介質(zhì)362包含原始設(shè)計(jì)成在具有舊版CPU的系統(tǒng)上運(yùn)行的舊版應(yīng)用程序??蛇x地,舊版應(yīng)用程序362(或其部分)可以存儲(chǔ)在存儲(chǔ)器340中或部分地存儲(chǔ)在高速緩存358中。
裝置300還可以包括顯示單元380,用來向用戶呈現(xiàn)由GPU 330準(zhǔn)備的渲染圖形382。裝置300還可以包括用戶界面單元370,用來促進(jìn)系統(tǒng)100與用戶之間的交互。顯示單元380可以呈以下形式:平板顯示器、陰極射線管(CRT)屏幕、觸摸屏、頭戴式顯示器(HMD)或可以顯示文字、數(shù)字、圖形符號(hào)或圖像的其他裝置。顯示器380可以顯示根據(jù)本文所述的各種技術(shù)加以處理的渲染圖形382。用戶界面370可以包含一個(gè)或多個(gè)外圍裝置,諸如鍵盤、鼠標(biāo)、操縱桿、光筆、游戲控制器、觸摸屏和/或可以結(jié)合圖形用戶界面(GUI)使用的其他裝置。在某些實(shí)現(xiàn)方式中,應(yīng)用程序322的狀態(tài)和圖形的基本內(nèi)容可以至少部分由通過用戶界面370的用戶輸入來確定,例如,在應(yīng)用程序322包括視頻游戲或其他圖形密集應(yīng)用程序的情況下。
系統(tǒng)300還可以包括網(wǎng)絡(luò)接口372,用來使所述裝置能夠通過網(wǎng)絡(luò)與其他裝置通信。網(wǎng)絡(luò)可以是例如局域網(wǎng)(LAN)、廣域網(wǎng)(諸如因特網(wǎng))、個(gè)人局域網(wǎng)(諸如藍(lán)牙網(wǎng)絡(luò))或其他類型的網(wǎng)絡(luò)。所示出并且描述的部件中的各個(gè)部件可以在硬件、軟件或固件或這些中的兩個(gè)或更多個(gè)的某種組合中實(shí)現(xiàn)。
根據(jù)本公開的各方面,CPU 320可以包括硬件部件,諸如圖1的CPU核心100的部件,所述部件可以在BC模式中操作,其中所選擇可用資源受到限制242,在舊版CPU上不存在的所選擇特征被禁用244,指令執(zhí)行的延時(shí)被更改246,或算法細(xì)節(jié)被更改248或這些中的兩個(gè)或更多個(gè)的某種組合,以便匹配或近似于舊版CPU的行為,如以上參考圖2所討論。
本公開的各方面克服了在針對(duì)舊版系統(tǒng)編寫的程序在更強(qiáng)大的新系統(tǒng)上運(yùn)行時(shí)產(chǎn)生的向后兼容性問題。通過在所選擇可用資源受到限制、在舊版CPU上不存在的所選擇特征被禁用、指令執(zhí)行的延時(shí)被更改或算法細(xì)節(jié)被更改或這些中的兩個(gè)或更多個(gè)的某種組合的情況下以BC模式運(yùn)行新CPU,新CPU可以匹配或近似于舊版CPU的行為。
雖然以上是對(duì)本發(fā)明的優(yōu)選實(shí)施方案的完整描述,但是可以使用各種替代、修改和等效物。因此,本發(fā)明的范圍不應(yīng)參考以上描述來確定,而是應(yīng)參考隨附權(quán)利要求書以及其完整的等效物范圍來確定。本文所描述的任何特征(不論優(yōu)選與否)可與本文所描述的任何其他特征組合(不論優(yōu)選與否)。在以下權(quán)利要求書中,不定冠詞“一個(gè)”或“一種”是指冠詞后的一個(gè)或多個(gè)項(xiàng)目的數(shù)量,除非另外明確說明。如本文所用,在替代例中的一列元件中,術(shù)語“或”用作包括含義,例如,“X或Y”只涵蓋X、只涵蓋Y或涵蓋X和Y兩者一起,除非另外明確說明。作為替代例列出的兩個(gè)或更多個(gè)元件可以組合在一起。隨附權(quán)利要求書不應(yīng)被理解為包括裝置加功能限制,除非在給定權(quán)利要求中使用短語“用于……的裝置”明確陳述了這種限制。