本公開的方面是關(guān)于在計算機(jī)系統(tǒng)上執(zhí)行計算機(jī)應(yīng)用程序。具體地講,本公開的方面是關(guān)于提供針對計算機(jī)系統(tǒng)的較舊版本設(shè)計的應(yīng)用程序/標(biāo)題的向后兼容性的系統(tǒng)或方法。
背景技術(shù):
現(xiàn)代計算機(jī)系統(tǒng)對于不同的計算任務(wù)經(jīng)常使用不同的處理器。除了中央處理單元(cpu)之外,現(xiàn)代計算機(jī)可具有專用于圖形管線中的某些計算任務(wù)的圖形處理單元(gpu),兩者都可能是也可含有其他單元的加速處理單元(apu)的一部分。
能力較強(qiáng)的中央處理單元(cpu)、圖形處理單元(gpu)和加速處理單元(apu)可具有較高等待時間,或與能力較弱的組件不同的等待時間特征。例如,能力較強(qiáng)的gpu與能力較弱的gpu相比在其紋理管線方面可具有較多階段。在這種情況下,這個管線的等待時間增加。在另一實例中,能力較強(qiáng)的apu對于cpu可含有l(wèi)3高速緩存,相比之下能力較弱的apu沒有這種高速緩存。在這種情況下,隨著針對能力較強(qiáng)的apu存取丟失所有高速緩存的數(shù)據(jù)所需的時間增加,存儲器等待時間特征不同,但針對能力較強(qiáng)的apu的平均等待時間將減少。
能力較強(qiáng)的裝置和能力較弱的裝置可能夠執(zhí)行相同的處理(例如,在cpu上執(zhí)行程序指令或在gpu上執(zhí)行各種編程功能和固定功能操作),但這個處理的等待時間的差異可導(dǎo)致能力較強(qiáng)的裝置無法相對于能力較弱的裝置向后兼容。類似地,在處理速度或吞吐量方面可存在差異,這導(dǎo)致能力較強(qiáng)的裝置無法向后兼容。例如,對于某些類型的處理,能力較強(qiáng)的裝置可能夠在相同的時間間隔內(nèi)執(zhí)行較多處理迭代?;蛘撸芰^強(qiáng)的裝置可使用不同的算法來執(zhí)行處理,這些算法導(dǎo)致行為比能力較弱的裝置快或慢,這取決于環(huán)境。
在視頻游戲控制臺的情況下,操作通常處于設(shè)定的始終頻率,且對軟件應(yīng)用程序進(jìn)行測試以按這個設(shè)定的頻率獲得恰當(dāng)操作。有時,需要在能力較強(qiáng)的控制臺上運行針對原始的能力較弱的控制臺創(chuàng)建的應(yīng)用程序。這個能力經(jīng)常稱作“向后兼容性”。在此類情況下,能力較強(qiáng)的裝置需要能夠運行針對能力較弱的裝置創(chuàng)建的應(yīng)用程序而不會對等待時間或處理速度的差異產(chǎn)生不利影響。
這在本公開的方面形成的背景內(nèi)。
附圖說明
可易于通過結(jié)合附圖考慮以下詳細(xì)描述來理解本公開的教示,在附圖中:
圖1為圖示根據(jù)本公開的方面的可按各種操作頻率配置的系統(tǒng)的框圖。
圖2為圖示根據(jù)本公開的方面的確定系統(tǒng)的操作頻率的可能的過程流的實例的流程圖。
具體實施方式
盡管以下詳細(xì)描述出于圖示的目的含有許多特定細(xì)節(jié),然而本領(lǐng)域技術(shù)人員將了解,以下細(xì)節(jié)的許多變化和更改在本發(fā)明的范圍內(nèi)。因此,闡述下文所描述的本發(fā)明的示例性實施方案而完全不失所要求的發(fā)明的一般性且不對所要求的發(fā)明施加限制。
導(dǎo)言
若干方法可用于在能力較強(qiáng)的控制臺上運行針對能力較弱的控制臺創(chuàng)建的應(yīng)用程序。在一個實例中,能力較強(qiáng)的控制臺可被設(shè)定成按原始控制臺的頻率運行。在這個頻率設(shè)定下,能力較強(qiáng)的控制臺的操作將基于在任何時刻正執(zhí)行的特定處理而變化,且可由于正執(zhí)行的那個特定處理的等待時間(和其他)特征而比能力較弱的控制臺慢或快。當(dāng)能力較強(qiáng)的控制臺的操作比原始控制臺慢時,可由于無法滿足顯示時序、音頻流輸出或類似者施加的即時截止時間而在應(yīng)用程序中發(fā)生許多錯誤。
在另一實例中,能力較強(qiáng)的控制臺可被設(shè)定成按遠(yuǎn)高于原始控制臺的頻率運行。操作速度將基于正執(zhí)行的處理的特定性而變化,但其將始終如一地高于原始控制臺且因此可順利地滿足即時截止時間。然而,由于這個高速操作的未經(jīng)測試的結(jié)果,應(yīng)用程序中可發(fā)生許多錯誤。例如,在生產(chǎn)者-消費者模型中,如果數(shù)據(jù)的消費者以高于最初預(yù)期的速度操作,則其可在數(shù)據(jù)生產(chǎn)者使數(shù)據(jù)可用之前試圖存取數(shù)據(jù),且盡管可存在同步機(jī)制,然而它們不可能在此類狀況下在原始控制臺上測試。替代地,如果數(shù)據(jù)的生產(chǎn)者以高于最初預(yù)期的速度操作,則其可重寫仍正由數(shù)據(jù)消費者使用的數(shù)據(jù)。
實施方案
本公開的實施方案提供將控制臺(即,能力較強(qiáng)的控制臺)設(shè)定為按高于控制臺的先前版本(即,能力較弱的控制臺)的頻率運行的系統(tǒng)和方法。理想地,能力較強(qiáng)的控制臺的頻率被設(shè)定為稍高于原始控制臺的操作頻率,這是因為能力較強(qiáng)的控制臺的操作速度基于在任何時刻正執(zhí)行的處理的特定性而變化。通過這種配置,錯誤發(fā)生率可最小化,這是因為操作速度不會大得足以觸發(fā)高速操作的無意結(jié)果,也不會足夠低以致無法滿足即時截止時間。
具體地講,在不需要抵消處理的等待時間、吞吐量或其他方面的差異的影響的情況下,能力較強(qiáng)的控制臺僅可按兩個頻率操作:針對被創(chuàng)建成在能力較強(qiáng)的控制臺上運行的應(yīng)用程序的較高頻率;以及為了向后兼容性而與原始控制臺相同的頻率(即,當(dāng)運行針對原始控制臺創(chuàng)建的應(yīng)用程序時)。但由于需要抵消處理的等待時間、吞吐量和其他方面的差異的影響,需要對操作頻率具有細(xì)粒度控制,使得能力較強(qiáng)的控制臺可按稍高于原始控制臺的頻率運行。確切頻率設(shè)定可通過實驗使用控制臺和各種軟件應(yīng)用程序兩者來確定,或頻率設(shè)定可隨應(yīng)用程序而變化,或頻率設(shè)定可取決于應(yīng)用程序的性能特征時時刻刻變化。
應(yīng)注意,軟件應(yīng)用程序可存取循環(huán)計數(shù)器,例如,cpu或gpu的操作循環(huán)的計數(shù)器,或替代地以較慢速率遞增的計數(shù)器,例如,計數(shù)器可在每當(dāng)cpu或gpu完成16個時鐘循環(huán)時遞增。由于cpu和gpu的頻率在原始控制臺上為固定的,因此應(yīng)用程序可依賴于這個時序的一致性。例如,軟件應(yīng)用程序可關(guān)于cpu與gpu之間的時鐘比做出假設(shè)。替代地,應(yīng)用程序可使用gpu循環(huán)計數(shù)器以計算至下一垂直消隱間隔的時間,且接著在開始垂直消隱之前修改正執(zhí)行的顯現(xiàn)操作以便確保所有顯現(xiàn)為完整的。
當(dāng)這個相同的軟件應(yīng)用程序在能力較強(qiáng)的控制臺上按較高頻率運行時,可因為使用循環(huán)計數(shù)器而發(fā)生許多錯誤。例如,因為在較高頻率下,垂直消隱間隔之間的循環(huán)數(shù)目將較大,因此關(guān)于在下一垂直消隱間隔開始之前的可用時間的計算將不正確,從而導(dǎo)致關(guān)于所執(zhí)行的顯現(xiàn)的不恰當(dāng)?shù)臎Q策且可能導(dǎo)致致命錯誤。
因此,本公開的方面也提供以欺騙時鐘替換真實的循環(huán)計數(shù)器的系統(tǒng)和方法,欺騙時鐘傳回對應(yīng)于能力較弱的控制臺的頻率的數(shù)目。循環(huán)計數(shù)器的讀數(shù)是否傳回真實的循環(huán)計數(shù),或替代地其是否傳回欺騙時鐘值取決于使用情況且將由操作系統(tǒng)配置。本公開的實施方案提供被配置成在兩種模式下操作的系統(tǒng)。第一模式為正常模式,其中系統(tǒng)按正常操作頻率操作,且第二模式為兼容模式,其中系統(tǒng)在假設(shè)系統(tǒng)與其他系統(tǒng)(例如,系統(tǒng)的舊版本)之間兼容的情況下操作。系統(tǒng)被配置成在正常模式中啟動和操作。然而,當(dāng)運行最初針對系統(tǒng)的較舊版本設(shè)計的應(yīng)用程序或標(biāo)題時,系統(tǒng)可被配置成針對所加載的應(yīng)用程序切換至合適的操作頻率。
現(xiàn)轉(zhuǎn)向圖1,描繪了根據(jù)本公開的方面的被配置成按各種頻率操作的計算系統(tǒng)100的說明性實例。根據(jù)本公開的方面,系統(tǒng)100可為嵌入式系統(tǒng)、移動電話、個人計算機(jī)、平板計算機(jī)、便攜式游戲裝置、工作站、游戲控制臺及類似者。
系統(tǒng)一般而言可包括處理器和存儲器,其被配置成例如通過執(zhí)行在特征方面與下文論述的圖2的方法有共同之處的方法以實施本公開的方面。在圖示實例中,處理器為加速處理單元110,其包括中央處理單元(cpu)120和單晶片上的圖形處理單元(gpu)130。在替代具體實施中,cpu120和gpu130可實施為單獨晶片上的單獨硬件組件。系統(tǒng)100還可包括存儲器140。存儲器140可任選地包括cpu120及gpu130可存取的主存儲器單元,且主存儲器的一部分可任選地包括圖形存儲器142的一部分。cpu120和gpu130可各自包括一個或多個處理器核,例如,單核、雙核、四核、八核或更多核。cpu120和gpu130可被配置成使用數(shù)據(jù)總線190存取一個或多個存儲器單元,且在一些具體實施中,其可用于系統(tǒng)100以包括兩個或兩個以上不同的總線。
存儲器140可包括呈集成電路的形式的一個或多個存儲器單元,其提供可尋址存儲器,例如,ram、dram及類似者。存儲器含有被配置成在執(zhí)行時實施圖2的方法以用于確定系統(tǒng)的操作頻率的可執(zhí)行指令。另外,圖形存儲器142可臨時存儲圖形資源、圖形緩沖區(qū)和用于圖形顯現(xiàn)管線的其他圖形數(shù)據(jù)。圖形緩沖區(qū)可包括例如用于存儲頂點參數(shù)值的一個或多個頂點緩沖區(qū)和用于存儲頂點索引的一個或多個索引緩沖區(qū)。圖形緩沖區(qū)還可包括一個或多個顯現(xiàn)目標(biāo)144,其可包括容納根據(jù)本公開的方面計算的像素/樣本值的顏色緩沖區(qū)145和深度緩沖區(qū)146。在某些具體實施中,顏色緩沖區(qū)145和/或深度緩沖區(qū)146可用以確定待存儲在顯示緩沖區(qū)147中的顯示像素顏色值的最終陣列,其可構(gòu)成意欲呈現(xiàn)于顯示器上的最終顯現(xiàn)的圖像。在某些具體實施中,顯示緩沖區(qū)可包括前緩沖區(qū)和一個或多個后緩沖區(qū),且gpu130可被配置成從顯示緩沖區(qū)147的前緩沖區(qū)掃描輸出圖形幀以用于呈現(xiàn)于顯示器180上。
cpu120可被配置成執(zhí)行cpu代碼,cpu120可包括作業(yè)系統(tǒng)121或應(yīng)用程序122,其利用所顯現(xiàn)的圖形(諸如視頻游戲)和對應(yīng)圖形api124以用于基于應(yīng)用程序122的狀態(tài)來向gpu130實施的程序發(fā)布繪制命令或繪制調(diào)用。cpu代碼還可實施物理模擬和其他功能。cpu和gpu時鐘156c、156g可被配置成允許cpu和gpu基于與系統(tǒng)100的標(biāo)準(zhǔn)時鐘速率不同的時鐘速率來執(zhí)行指令。作為實例,且不作為限制,如果應(yīng)用程序122用于系統(tǒng)100的能力較弱的版本,則時鐘頻率156c、156g的值可對應(yīng)于能力較弱的版本的時鐘頻率,或稍高于因系統(tǒng)100的等待時間較高而出現(xiàn)問題時的頻率。
為了支持圖形的顯現(xiàn),gpu130可執(zhí)行著色器134,其可包括頂點著色器和像素著色器。gpu還可執(zhí)行其它著色器程序,諸如,例如幾何著色器、細(xì)分曲面著色器、計算著色器及類似者。gpu130還可包括特殊硬件模塊132,其可包括一個或多個紋理映射單元和/或被配置成在圖形管線的一個或多個階段下實施操作的其他硬件模塊。著色器134和硬件模塊132可在最終像素值輸出至顯示器之前在管線中的各階段下與存儲器140和緩沖區(qū)144中的數(shù)據(jù)交互。被配置成由apu110、cpu120和gpu130執(zhí)行的著色器134和/或其他程序可作為指令存儲在非暫時性計算機(jī)可讀介質(zhì)中。作為實例且不作為具體實施,gpu可實施光柵器模塊136,其可被配置成針對屏幕空間像素獲取多個原始樣本且根據(jù)樣本性質(zhì)調(diào)用一個或多個像素著色器。
系統(tǒng)100還可包括眾所周知的支持功能150,其可例如經(jīng)由總線190與系統(tǒng)的其他組件通信。此類支持功能可包括但不限于輸入/輸出(i/o)元件152、可包括分別用于cpu120和gpu130的單獨時鐘156c、156g的一個或多個時鐘,以及高速緩存存儲器158。系統(tǒng)100可任選地包括用以存儲程序和/或數(shù)據(jù)的大容量存儲裝置160,諸如盤驅(qū)動器、cd-rom驅(qū)動器、快閃存儲器、磁帶驅(qū)動器、藍(lán)光驅(qū)動器或類似者。在一個實例中,大容量存儲裝置160可接收含有最初被設(shè)計成在能力較弱的系統(tǒng)上運行的舊有應(yīng)用程序的計算機(jī)可讀介質(zhì)162。替代地,舊有應(yīng)用程序162(或其一部分)可存儲于存儲器140中或部分存儲于高速緩存存儲器158中。
裝置100還可包括用以向用戶呈現(xiàn)所顯現(xiàn)的圖形182的顯示單元180和促進(jìn)系統(tǒng)100與用戶之間的交互的用戶界面單元170。顯示單元180可呈以下形式:平板顯示器、陰極射線管(crt)屏幕、觸摸屏、頭戴式顯示器(hmd)或可顯示文字、數(shù)字、圖形符號或圖像的其他裝置。顯示器180可顯示根據(jù)本文中描述的各種技術(shù)處理的所顯現(xiàn)的圖形182。用戶界面170可含有一個或多個周邊設(shè)備,諸如鍵盤、鼠標(biāo)、操縱桿、光筆、游戲控制器、觸摸屏和/或可結(jié)合圖形用戶界面(gui)使用的其他裝置。在某些具體實施中,應(yīng)用程序122的狀態(tài)和圖形的基本內(nèi)容可至少部分由通過用戶界面170進(jìn)行的用戶輸入確定,例如,在應(yīng)用程序122包括視頻游戲的視頻游戲具體實施中。
系統(tǒng)100還可包括使得裝置能夠經(jīng)由網(wǎng)絡(luò)與其他裝置通信的網(wǎng)絡(luò)界面172。網(wǎng)絡(luò)可為例如局域網(wǎng)(lan)、廣域網(wǎng)(諸如因特網(wǎng))、個人區(qū)域網(wǎng)(諸如藍(lán)牙網(wǎng)絡(luò))或其他類型的網(wǎng)絡(luò)。所示和所描述組件中的各者可以硬件、軟件或固件,或其中兩者或兩者以上的某一組合實施。
根據(jù)本公開的方面,cpu120可包括實施循環(huán)計數(shù)器ccc以使cpu操作的執(zhí)行同步的硬件組件。gpu130可類似地包括實施循環(huán)計數(shù)器ccg以使gpu操作的執(zhí)行同步的硬件組件。循環(huán)計數(shù)器ccc、ccg從時鐘讀取時鐘循環(huán),其可為對應(yīng)的標(biāo)準(zhǔn)時鐘156c、156g或?qū)?yīng)的欺騙時鐘125、135。根據(jù)本公開的方面,當(dāng)運行針對系統(tǒng)100的當(dāng)前版本編寫的應(yīng)用程序時,循環(huán)計數(shù)器ccc、ccg可被配置成從標(biāo)準(zhǔn)時鐘156c、156g讀取循環(huán),而當(dāng)運行針對系統(tǒng)的能力較弱的版本編寫的應(yīng)用程序時,循環(huán)計數(shù)器ccc、ccg可被配置成從欺騙時鐘125、135讀取循環(huán),欺騙時鐘125、135可設(shè)定為硬件的能力較弱的版本的標(biāo)準(zhǔn)操作頻率。
圖2為圖示根據(jù)本公開的方面的確定控制臺的操作頻率的可能的過程流的實例的流程圖,過程流由作業(yè)系統(tǒng)121或其他軟件或硬件機(jī)構(gòu)實施。在201處,當(dāng)將應(yīng)用程序122加載以在系統(tǒng)100上運行時,操作可在正常模式中開始。首先,經(jīng)由軟件id、軟件核對和、與軟件相關(guān)聯(lián)的元數(shù)據(jù)、介質(zhì)類型或其它機(jī)構(gòu)的檢查確定應(yīng)用程序122是否被設(shè)計用于這個系統(tǒng)或用于系統(tǒng)的先前版本,如210處所指示。當(dāng)確定所加載的應(yīng)用程序意欲用于系統(tǒng)100時,系統(tǒng)可按正常頻率運行,如220處所指示。例如,cpu120和gpu130可分別按其正常操作頻率運行。具體地講,循環(huán)計數(shù)器ccc、ccg可讀取對應(yīng)時鐘156c和156g,如222處所指示。
當(dāng)所加載的應(yīng)用程序122被設(shè)計用于系統(tǒng)100的能力較弱的版本時,系統(tǒng)可確定無錯誤操作的時鐘頻率,如230處所指示。作為實例且不作為限制,時鐘156c、156g可被設(shè)定成按稍高于能力較弱的系統(tǒng)中的對應(yīng)時鐘頻率的頻率運行cpu120和gpu130。替代地,時鐘頻率156c、156g可即時地調(diào)整,使得當(dāng)系統(tǒng)100的操作速度基于任何時刻正執(zhí)行的處理的特定性而變化時,處理以與能力較弱的系統(tǒng)相同的速度或比其稍快的速度發(fā)生。可以考慮cpu120和/或gpu130的處理的較高等待時間、吞吐量和其他方面的影響的方式確定時鐘頻率。欺騙時鐘頻率125、135被設(shè)定成對應(yīng)于能力較弱的系統(tǒng)的cpu和gpu操作的標(biāo)準(zhǔn)頻率,如232處所指示。具體地講,循環(huán)計數(shù)器ccc、ccg被配置成讀取對應(yīng)的欺騙時鐘125和135,如234處所指示。
為了給出實例,系統(tǒng)的先前版本的gpu可在500mhz的gpu時鐘下運行,且當(dāng)前系統(tǒng)可在750mhz的gpu時鐘156g下運行。當(dāng)加載被設(shè)計成僅用于當(dāng)前系統(tǒng)的應(yīng)用程序時,系統(tǒng)在156g設(shè)定為750mhz的情況下運行。在這個實例中,循環(huán)計數(shù)器ccg將對應(yīng)于750mhz頻率(即,其為真實循環(huán)計數(shù)器)。當(dāng)加載舊有應(yīng)用程序(即,被設(shè)計成用于系統(tǒng)的先前版本的應(yīng)用程序)時,系統(tǒng)100可在稍高于先前系統(tǒng)的操作頻率的頻率(例如,156g設(shè)定為505mhz的情況下)下運行。在這個向后兼容模式中,gpu欺騙時鐘135將被配置成在500mhz下運行,且循環(huán)計數(shù)器ccg將從欺騙時鐘衍生,因而向舊有應(yīng)用程序提供預(yù)期值。
當(dāng)前系統(tǒng)在等待時間特征、吞吐量或用于計算的算法方面與先前系統(tǒng)不同,因此盡管計算結(jié)果可能相同,但控制臺的操作速度將基于所執(zhí)行的操作的特定性而變化。因此,當(dāng)加載的應(yīng)用程序122為舊有應(yīng)用程序時,可能需要將時鐘156c、156g設(shè)定為通過對所加載的特定應(yīng)用程序進(jìn)行測試確定的值,例如通過按較高時鐘頻率運行且逐步減小有效時鐘頻率直到處理錯誤不再發(fā)生為止。也可能需要基于應(yīng)用程序的性能特征動態(tài)地調(diào)整時鐘156c、156g。
本公開的方面克服了針對能力較弱的系統(tǒng)編寫的程序在能力較強(qiáng)的系統(tǒng)上運行時出現(xiàn)的向后兼容性問題。調(diào)整能力較強(qiáng)的系統(tǒng)的系統(tǒng)時鐘速率適應(yīng)裝置之間的差異。使可讀循環(huán)計數(shù)器基于欺騙時鐘而非真實時鐘允許舊有應(yīng)用程序碼的正確操作。
盡管以上內(nèi)容為對本發(fā)明的優(yōu)選實施方案的完整描述,但有可能使用各種替代方案、修改和等效物。因此,本發(fā)明的范圍不應(yīng)參考以上描述確定,而應(yīng)替代地參考隨附權(quán)利要求連同其等效物的全范圍判定。本文中描述的無論是否為優(yōu)選的任何特征都可與本文中描述的無論是否為優(yōu)選的任何其他特征組合。在隨附權(quán)利要求中,除非另外明確陳述,否則不定冠詞“一”指該冠詞之后的項目中的一者或多者的數(shù)量。隨附權(quán)利要求不應(yīng)解釋為包括構(gòu)件加功能限制,除非此限制在給定權(quán)利要求中使用短語“用于……的構(gòu)件”明確地敘述。