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