渲染服務器、中央服務器、編碼設備、控制方法、編碼方法、程序以及記錄媒體的制作方法
【專利摘要】在將附加有奇偶校驗信息的數據寫入將要檢驗的存儲器中之后,編碼設備從該存儲器中讀出數據,并且對該數據應用運行長度編碼處理從而生成經編碼數據。當編碼設備是根據所寫入數據的比特序列來生成經編碼數據時,編碼設備通過比較該比特序列與所附加的奇偶校驗信息,從而檢測比特翻轉錯誤。
【專利說明】渲染服務器、中央服務器、編碼設備、控制方法、編碼方法、程序以及記錄媒體
【技術領域】
[0001]本發明涉及一種渲染服務器、中央服務器、編碼設備、控制方法、編碼方法、程序以及記錄媒體,尤其是涉及一種使用視頻編碼處理的GPU存儲器檢驗方法。
【背景技術】
[0002]諸如個人計算機(PC)之類的具有網絡連接功能的客戶端裝置已得到廣泛應用。伴隨這類裝置的廣泛應用,互聯網的網絡人口正在增長。最近面向網絡用戶開發了多種使用互聯網的服務,并且還提供了諸如游戲之類的娛樂服務。
[0003]面向網絡用戶的服務之一是多用戶在線網絡游戲,如MMORPG (大型多人在線角色扮演游戲)。在多用戶在線網絡游戲中,用戶將他/她所使用的客戶端裝置連接到提供游戲的服務器上,由此與使用連接到服務器上的另一客戶端裝置的另一用戶進行對戰游戲或組隊游戲。
[0004]在一般的多用戶在線網絡游戲中,每個客戶端裝置將用于游戲渲染的必要數據發送到服務器,或從服務器接收這些數據。客戶端裝置使用所接收的用于渲染的必要數據來執行渲染處理,并且將生成的游戲畫面呈現到連接到客戶端裝置的顯示裝置上,由此將游戲畫面提供給用戶。將用戶通過操作輸入接口而輸入的信息發送至服務器,并且該信息用于服務器中的計算處理或被傳輸至連接到服務器上的另一客戶端裝置。
[0005]然而,一些使客戶端裝置執行渲染處理的網絡游戲需要用戶使用具有足夠渲染性能的PC或專用游戲機。因此,網絡游戲(一個內容)的用戶數量取決于內容所需要的客戶端裝置性能。理所當然地,高性能的裝置很貴,并且可擁有這種裝置的用戶數量也是有限的。也就是說,增加需要高渲染性能的游戲(例如,提供精美畫面的游戲)的用戶數量很困難。
[0006]然而,近年來,也有不依靠客戶端裝置處理能力(例如渲染性能)且用戶可玩的游戲。在第2009/138878號國際公開中所述的游戲中,服務器獲取在客戶端裝置中引起的操作的信息,并且將通過使用該信息執行渲染處理從而獲得的游戲畫面提供給客戶端裝置。
[0007]執行前述渲染處理的裝置的渲染性能取決于包括在該裝置內的GPU的處理性能。GPU的金融引進成本的變化不僅取決于該GPU的處理性能,而且還取決于包括在GPU內的GI3U存儲器的可靠性。也就是說,當渲染服務器像第2009/138878號國際公開中一樣來渲染將提供給客戶端裝置的畫面時,渲染服務器的引進成本隨著采用的GPU的存儲器的可靠性提升而提高。相比之下,可使用包括可靠性較低的GPU存儲器的GPU來實現成本的降低。在這種情況下,必須定期執行GPU存儲器的錯誤檢查處理。
[0008]然而,如第2009/138878號國際公開中所述,當GPU的存儲器的存儲器檢查處理與GI^U主要的處理(例如,為每一幀畫面提供的渲染處理)并行執行時,會導致計算量的增加,并且所提供的服務質量可能會降低。
【發明內容】
[0009]鑒于這樣的常規問題提出了本發明。本發明提供一種渲染服務器、中央服務器、編碼設備、控制方法、編碼方法、程序以及記錄媒體,其使用編碼處理來執行高效的存儲器檢驗。
[0010]本發明在其第一方面提供了一種用于輸出經編碼圖像數據的渲染服務器,其包括:渲染構件,其用于使用GPU渲染圖像;寫入構件,其用于將由渲染構件所渲染的圖像寫入包括在GPU中的GPU存儲器;以及編碼構件,其用于從GPU存儲器中讀出由寫入構件寫入的圖像,并且通過對該圖像應用運行長度編碼處理從而生成經編碼圖像數據,其中寫入構件在將奇偶校驗信息附加到圖像的情況下將圖像寫入GPU存儲器;并且當編碼構件是根據從GPU存儲器中讀出的圖像的比特序列來生成經編碼圖像數據時,編碼構件通過比較比特序列與寫入構件所附加的奇偶校驗信息,從而檢測比特翻轉錯誤。
[0011]本發明在其第二方面提供了一種編碼設備,其包括:寫入構件,其用于將附加有奇偶校驗信息的數據寫入存儲器;以及編碼構件,其用于從存儲器中讀出由寫入構件寫入的數據,并且通過對該數據應用運行長度編碼處理從而生成經編碼數據,其中當編碼構件是根據所寫入數據的比特序列來生成經編碼數據時,編碼構件通過比較比特序列與所附加的奇偶校驗信息,從而檢測比特翻轉錯誤。
[0012]以下對示例性實施例的說明將使本發明的其他特征變得顯而易見(參照附圖)。
【專利附圖】
【附圖說明】
[0013]圖1所示為根據本發明的一個實施例的渲染系統的系統配置圖;
[0014]圖2所示為根據本發明的實施例的渲染服務器100的功能布置的框圖;
[0015]圖3所示為根據本發明的實施例的中央服務器200的功能布置的框圖;
[0016]圖4所示為根據本發明的實施例舉例說明畫面提供處理的流程圖;以及
[0017]圖5所示為根據本發明的實施例舉例說明畫面生成處理的流程圖。
【具體實施方式】
[0018]下文將參照附圖詳細說明本發明的示例性實施例。請注意,將在下文中說明的一個實施例會闡明一個實例,其中本發明被應用于可接受一個或多個客戶端裝置的連接的中央服務器,以及可同時生成分別提供給該一個或多個客戶端裝置的畫面的渲染服務器,該渲染服務器作為渲染系統的一個實例。然而,本發明適用于可同時生成提供給一個或多個客戶端裝置的畫面(圖像數據)的任意裝置與系統。
[0019]假設由本說明書中的中央服務器提供給客戶端裝置的畫面是執行游戲處理時生成的游戲畫面。在渲染服務器為每一幀渲染畫面后,對畫面進行編碼后將其提供給客戶端裝置。然而,本發明不僅限于游戲畫面的生成。本發明可應用于向客戶端裝置提供經編碼圖像數據的任意設備。
[0020]<渲染系統的配置>
[0021]圖1所示為根據本發明的一個實施例的渲染系統的系統配置圖。
[0022]如圖1所示,接受服務的客戶端裝置300a至300e與提供服務的中央服務器200通過網絡400 (例如互聯網)相連接。同樣地,用于渲染將提供給客戶端裝置300的畫面的渲染服務器100通過網絡400連接到中央服務器200上。請注意,在以下說明中,“客戶端裝置300”表示客戶端裝置300a至300e中的任意一個,除非另作說明。
[0023]客戶端裝置300不僅限于PC、家用游戲機和便攜式游戲機,而且還可以是,例如,移動電話、PDF和平板計算機等裝置。在這個實施例的渲染系統中,渲染服務器100根據客戶端裝置處作出的操作輸入來生成游戲畫面,并且中央服務器200將生成的游戲畫面分發給客戶端裝置300。因此,客戶端裝置300不必具有任何生成游戲畫面所需的渲染功能。也就是說,客戶端裝置300可以是具有用于作出操作輸入的用戶接口以及顯示畫面的顯示裝置的裝置,或是可連接有用戶接口與顯示裝置的裝置。此外,客戶端裝置可以是可對接收到的游戲畫面進行解碼并且可使用顯示裝置顯示經解碼的游戲畫面的裝置。
[0024]中央服務器200執行并管理游戲處理程序、向渲染服務器100發布渲染處理指令,并且與客戶端裝置300進行數據通信。更確切地說,中央服務器200執行與將要提供給客戶端裝置300的游戲相關的游戲處理程序。
[0025]中央服務器200管理(例如)每個客戶端裝置的用戶所操作的角色在地圖上的位置和方向以及將要提供給每個角色的事件等多條信息。之后,中央服務器200控制渲染服務器100根據所管理角色的狀態生成游戲畫面。例如,當每個已連接的客戶端裝置上由用戶執行的操作輸入的信息通過網絡400輸入至中央服務器200時,中央服務器200執行處理,從而將該信息反映到所管理角色的信息中。之后,中央服務器200基于角色的信息來決定與游戲畫面相關的渲染參數,操作輸入信息是被反映到該角色信息中,并且中央服務器200向包括在渲染服務器100中的任何一個GPU發出渲染指令。請注意,渲染參數包括相機(視點)的位置與方向以及包括在渲染范圍內的渲染對象的信息。
[0026]渲染服務器100的作用是執行渲染處理。在這個實施例中,渲染服務器100具有四個GPU,這將在之后進行說明。渲染服務器100根據從中央服務器200接收的渲染指令來渲染游戲畫面,并且將生成的游戲畫面輸出至中央服務器200。假設渲染服務器100能夠同時生成多個游戲畫面。渲染服務器100使用指定的GPU,并基于從中央服務器200接收的與游戲畫面相關的渲染參數來執行游戲畫面的渲染處理。
[0027]中央服務器200根據包括渲染對象的識別信息與詳細信息的所傳輸的渲染指令,將從渲染服務器100接收的游戲畫面作為經編碼視頻數據的一個幀的圖像數據分發給對應的客戶端裝置。以此方式,這個實施例的渲染系統可根據在各客戶端裝置上執行的操作輸入來生成游戲畫面,并且可通過所述客戶端裝置的顯示裝置向用戶提供游戲畫面。
[0028]請注意,以下說明將在下面的假設條件下提出:這個實施例的渲染系統包括一個渲染服務器100與一個中央服務器200。然而,本發明不僅限于這樣的特定實施例。例如,一個渲染服務器100可被分配給多個中央服務器200,或多個渲染服務器100可被分配給多個中央服務器200。
[0029]<渲染服務器100的布置>
[0030]圖2所示為根據本發明的實施例的渲染服務器100的功能布置的框圖。
[0031]CPUlOl控制包括在渲染服務器100中的相應塊的操作。更確切地說,CPUlOl通過讀出存儲在(例如)R0M102或記錄媒體104中的渲染處理的操作程序、將讀出的程序抽取到RAM103上、并執行所抽取的程序,從而控制相應塊的操作。
[0032]R0M102是(例如)可重寫非易失性存儲器。除了渲染處理的操作程序外,R0M102還存儲其他操作程序和信息,如包括在渲染服務器100中的相應塊的操作所需要的常量。[0033]RAM103是易失性存儲器。RAM103不僅用作操作程序的抽取區域,而且還用作用于暫時存儲中間數據及類似數據的存儲區域,這些數據在包括于渲染服務器100中的相應塊的操作過程中被輸出。
[0034]記錄媒體104是(例如)諸如HDD之類的記錄裝置,其可移除地連接到渲染服務器100上。在這個實施例中,假設記錄媒體104存儲用于在渲染處理中生成畫面的以下數據:
[0035].模型數據
[0036].紋理數據
[0037].渲染程序
[0038].在渲染程序中用于計算的數據
[0039]通信單元113是包括在渲染服務器100中的通信接口。通信單元113與通過網絡400連接的另一個裝置(如中央服務器200)進行數據通信。當渲染服務器100傳輸數據時,通信單元113將數據轉換成其自身與網絡400或傳輸目標裝置之間指定的數據傳輸格式,并且將數據傳輸至傳輸目標裝置。此外,當渲染服務器100接收數據時,通信單元113將通過網絡400接收的數據轉換成渲染服務器100可讀的任意數據格式,并且將經轉換數據存儲在(例如)RAM103中。
[0040]第一 GPU105、第二 GPU106、第三GPU107和第四GPU108在渲染處理中生成將要提供給客戶端裝置300的游戲畫面。用作游戲畫面的渲染區域的視頻存儲器(第一 VRAM109、第二 VRAM110、第三VRAM111和第四VRAM112)被連接到各個GPU上。各個GPU具有作為工作區域的GPU存儲器。當各個GPU在已連接的VRAM上執行渲染時,將渲染對象抽取到GPU存儲器上,并且之后將抽取的渲染對象渲染到對應的VRAM上。請注意,這個實施例的以下說明將在下面的假設條件下提出:一個視頻存儲器連接到一個GPU上。然而,本發明不僅限于這樣的特定實施例。也就是說,每個GPU上可連接任意數目的視頻存儲器。
[0041]<中央服務器200的布置>
[0042]這個實施例的中央服務器200的功能布置將在下面進行說明。圖3所示為根據本發明的實施例的中央服務器200的功能布置的框圖。
[0043]中央CPU201控制包括在中央服務器200中的相應塊的操作。更確切地說,中央CPU201通過讀出存儲在(例如)中央R0M202或中央記錄媒體204中的游戲處理程序、將讀出的程序抽取到中央RAM203上、并執行所抽取的程序,從而控制相應塊的操作。
[0044]中央R0M202是(例如)可重寫非易失性存儲器。除了游戲處理程序外,中央R0M202還可存儲其他程序。此外,中央R0M202還存儲諸如包括在中央服務器200中的相應塊的操作所需要的常量之類的信息。
[0045]中央RAM203是易失性存儲器。中央RAM203不僅用作游戲處理程序的抽取區域,而且還用作用于暫時存儲中間數據及類似數據的存儲區域,這些數據在包括于中央服務器200中的相應塊的操作過程中被輸出。
[0046]中央記錄媒體204是(例如)諸如HDD之類的記錄裝置,其可拆卸地連接到中央服務器200上。在這個實施例中,中央記錄媒體204用作管理使用游戲的用戶與客戶端裝置的數據庫、管理游戲相關的多種類型的信息(這些信息是生成將要提供給已連接的客戶端裝置的游戲畫面所需要的)的數據庫,以及類似數據庫。
[0047]中央通信單元205是包括在中央服務器200中的通信接口。中央通信單元205與通過網絡400連接的渲染服務器100或客戶端裝置300進行數據通信。請注意,中央通信單元205根據通信單元113中的通信規范來轉換數據格式。
[0048]<畫面提供處理>
[0049]以下將參照圖4所示的流程圖來說明這個實施例的具有前述布置的中央服務器200的實際畫面提供處理。當中央CPU201讀出存儲在(例如)中央R0M202中的對應的處理程序、將讀出的程序抽取到中央RAM203上、并執行所抽取的程序時,可實施對應于該流程圖的處理。
[0050]注意到,以下說明將在下面的假設條件下提出:該畫面提供處理開始于(例如)各個客戶端裝置連接完成且向該客戶端裝置提供游戲所需要的準備處理完成時,并且為游戲的每一幀執行該畫面提供處理。此外,以下說明將在下面的假設條件下提出:為簡單起見,一個客戶端裝置300連接到中央服務器200。然而,本發明不僅限于這樣的特定實施例。當和前述系統配置中一樣,多個客戶端裝置300連接到中央服務器200時,可為相應客戶端裝置300執行該畫面提供處理。
[0051]在步驟S401中,中央CPU201執行數據反映處理從而決定與將要提供給已連接的客戶端裝置300的游戲畫面相關的渲染參數。數據反映處理用于反映在客戶端裝置上執行的輸入(角色移動指令、相機移動指令、窗口顯示指令等等)、渲染對象的狀態變化以及類似信息,其中渲染對象的狀態是由游戲處理所管理,接著數據反映處理指定將要提供給客戶端裝置的游戲畫面的渲染內容。更確切地說,中央CPU201通過中央通信單元205接收在客戶端裝置300上執行的輸入,并且更新用在前一幀游戲畫面中的渲染參數。另一方面,渲染對象,其狀態由游戲處理所管理,包括稱為NPC (非玩家角色)的不作為任何用戶操作目標的角色、諸如地形之類的背景對象,以及其類似物。渲染對象的狀態根據經過的時間或用戶操作目標角色的動作而改變。中央CPU201為前一幀更新與渲染對象相關的渲染參數,渲染對象的狀態由游戲處理根據經過的時間以及在進行游戲處理時在客戶端裝置上執行的輸入來管理。
[0052]在步驟S402中,中央CPU201從包括在渲染服務器100中并且能夠執行渲染處理的GPU中決定用于渲染游戲畫面的GPU。在這個實施例中,連接到中央服務器200上的渲染服務器100包括四個GPU,即,第一 GPU105、第二 GPU106、第三GPU107、和第四GPU108。中央CPU201決定包括在渲染服務器100中的四個GPU中的一個,以便生成將要提供給連接到中央服務器200上的每個客戶端裝置的游戲畫面。用于渲染畫面的GPU可從待選定的GPU中決定出,以便鑒于(例如)渲染對象的數目、所需的處理成本以及與同時發出的渲染請求對應的游戲畫面的類似因素來分發負載。注意到,在這一步驟中,待選定的GPU根據渲染服務器100中的存儲器檢驗結果而變化,稍后將說明這一點。
[0053]在步驟S403中,中央CPU201將渲染指令傳輸至在步驟S402中決定并且用于渲染游戲畫面的GPU。更確切地說,中央CPU201將與當前幀的游戲畫面相關的渲染參數以及渲染指令傳送至中央通信單元205,這些渲染參數已在步驟S401中由游戲處理更新,并且中央CPU201控制中央通信單元205以將此些渲染參數傳輸至渲染服務器100。假設渲染指令包括指示用于渲染游戲畫面的GPU的信息,以及客戶端裝置300的識別信息,游戲畫面將被提供給該客戶端裝置。
[0054]在步驟S404中,中央CPU201確定是否從渲染服務器100接收將要提供給已連接的客戶端裝置300的游戲畫面。更確切地說,中央CPU201檢查中央通信單元205是否接收具有客戶端裝置300識別信息的游戲畫面的數據,游戲畫面將被提供給該客戶端裝置。假設在這個實施例中,由于對于游戲的每一幀都要將畫面傳輸給客戶端裝置300,因此鑒于通信量的縮減,將要提供給客戶端裝置300的游戲畫面是對應于經編碼視頻數據的一個幀的經編碼圖像數據。當中央通信單元205從渲染服務器100接收數據時,中央CPU201參考該信息的標頭信息,來檢查該數據是否是對應于將要提供給已連接的客戶端裝置300的游戲畫面的經編碼圖像數據。如果中央CPU201確定接收到將要提供給已連接的客戶端裝置300的游戲畫面,那么中央CPU201將使該過程繼續進行到步驟S405 ;否則,中央CPU201重復這一步驟的過程。
[0055]在步驟S405中,中央CPU201將接收到的游戲畫面傳輸至已連接的客戶端裝置300。更確切地說,中央CPU201將接收到的游戲畫面傳送至中央通信單元205,并且控制中央通信單元205以將游戲畫面傳輸至已連接的客戶端裝置300。
[0056]在步驟S406中,中央CPU201對于第一 GPU105、第二 GPU106、第三GPU107、和第四GPU108中的任何一個,來確定GPU存儲器的比特翻轉錯誤被檢測到的次數是否超過閾值。在這個實施例中,正如稍后將在畫面生成處理中說明的,當各個GPU的GPU存儲器中出現比特翻轉錯誤時,渲染服務器100的CPUlOl向中央服務器200通知比特翻轉錯誤的數目的信息以及引起該錯誤的GPU的識別信息。因此,中央CPU201在這一步驟中首先確定中央通信單元205是否從渲染服務器100接收了比特翻轉錯誤數目的信息。如果確定已接收比特翻轉錯誤數目的信息,那么中央CPU201進一步檢查比特翻轉錯誤數目是否超過閾值。假設閾值是一個預先設置的、確定GPU存儲器可靠性是否下降所需的值,并且被存儲在(例如)中央R0M202中。如果中央CPU201確定包括在渲染服務器100中的任一 GPU中的GPU存儲器的比特翻轉錯誤被檢測到的次數超過閾值,那么中央CPU201將使該過程繼續進行到步驟S407 ;否則,中央CPU201將結束這個畫面提供處理。
[0057]在步驟S407中,中央CPU201將比特翻轉錯誤的數目超過閾值的GPU排除在選擇目標之外,對下一幀游戲畫面渲染處理將被分配給所述選擇目標。更確切地說,中央CPU201將邏輯信息與所述GPU的識別信息存儲在中央R0M202中,該邏輯信息指示所述GPU被排除在選擇目標之外,渲染將被分配給所述選擇目標。當在步驟S402中選擇游戲畫面的渲染被分配到的GPU時,會參考此信息。
[0058]注意到,這個實施例的以下說明將在下面的假設條件下提出:中央CPU201通過檢查比特翻轉錯誤的數目是否超過閾值來判定GPU存儲器的可靠性。然而,本發明不僅限于這樣的特定實施例。中央CPU201可獲取其中已經出現比特翻轉錯誤的存儲器地址分布的信息,并且可根據在預定地址范圍內的比特翻轉錯誤數目來評估GPU存儲器的可靠性。
[0059]<畫面生成處理>
[0060]以下將參照圖5所示的流程圖來詳細說明根據這個實施例的在渲染服務器100中用于生成將提供給客戶端裝置的游戲畫面(經編碼圖像數據)的畫面生成處理。當CPUlOl讀出儲存在(例如)R0M102中的對應的處理程序、將讀出的程序抽取到RAM103上、并執行所抽取的程序時,可實施對應于該流程圖的處理。注意到,以下說明將在下面的假設條件下提出:該畫面生成處理開始于(例如)CPU101判定通信單元113從中央服務器200接收游戲畫面的渲染指令時。[0061]在步驟S501中,CPUlOl基于接收到的與游戲畫面相關的渲染參數來渲染游戲畫面。更確切地說,CPUlOl將由通信單元113接收的渲染指令以及渲染參數存儲在RAM103中,這些渲染參數與渲染指令相關聯并且與當前幀的游戲畫面相關。然后,CPUlOl參考包括在渲染指令中并且指示用于渲染游戲畫面的GPU的信息,并且控制由該信息指定的GPU(目標GPU)來渲染對應于連接到目標GPU的VRAM上的渲染參數的游戲畫面。
[0062]在步驟S502中,CPUlOl控制目標GPU來對在步驟S501中在VRAM上渲染的游戲畫面執行DCT (離散余弦變換)處理。更確切地說,目標GPU把游戲畫面劃分成各自具有預定數目的像素的塊,并且對相應塊執行DCT處理,由此將塊轉換成頻域數據。轉換到頻域上的游戲畫面被目標GPU量化,并且被寫入目標GPU的GPU存儲器中。此時,假設目標GPU將經量化數據寫入GPU存儲器中,與此同時將奇偶校驗位(奇偶校驗信息)附加到具有預定數據長度的每個比特序列上。注意到,這個實施例的以下說明將在下面的假設條件下提出:直接對游戲畫面執行DCT處理。然而,如上所述,由于游戲畫面是對應于經編碼視頻數據的一個幀的數據,因此可對從游戲畫面生成的圖像數據執行DCT處理。例如,當視頻編碼格式是MPEG格式時,目標GPU可在通過運動補償精度從前一幀的游戲畫面生成的圖像數據與為當前幀所生成的游戲畫面之間生成差值圖像,并且可對該差值圖像執行DCT處理。
[0063]在步驟S503中,CPUlOl對轉換到頻域上的游戲畫面(經量化游戲畫面)執行運行長度編碼處理,從而生成最終將提供給客戶端裝置的游戲畫面數據。此時,為了執行運行長度編碼,CPUlOl從目標GPU的GPU存儲器中讀出經量化游戲畫面,并將其存儲在RAM103中。當比特翻轉錯誤出現在GPU存儲器中時,畫面數據與存儲在RAM103中的經量化游戲畫面中的奇偶校驗信息之間出現不一致性。
[0064]在另一方面,運行長度編碼處理是通過檢查連續數據的比特序列中的相同值的運行長度,而用于實現數據壓縮。也就是說,在運行長度編碼處理被應用于存儲在RAM103中的經量化游戲畫面時,CPUlOl可抓取(例如)奇偶校驗位之間的數據序列中“I”的數量,原因是其指的是包括在預定數目的比特序列中的所有值。也就是說,在本發明中,CPUlOl使用在運行長度編碼中的比特序列的布置的檢查,來實現奇偶校驗檢查處理。
[0065]在這一步驟中,CPUlOl通過如上所述的運行長度編碼處理,并且執行奇偶校驗檢查處理來檢測與目標GPU的GPU存儲器相關的比特翻轉錯誤的出現,從而生成最終將提供的游戲畫面的經編碼數據。注意到,CPUlOl對與目標GPU的GPU存儲器相關的比特翻轉錯誤被檢測到的次數進行計數。
[0066]在步驟S504中,CPUlOl將在步驟S503中生成的最終將提供的游戲畫面的經編碼數據,以及指示與目標GPU的GPU存儲器相關的比特翻轉錯誤被檢測到的次數的信息,傳送到通信單元113中,并且控制通信單元113來將其傳輸至中央服務器200。假設此時,傳輸最終將提供的游戲畫面的經編碼數據以及包括在渲染指令中的客戶端裝置300的識別信息,游戲畫面將提供給該客戶端裝置300。此外,假設傳輸指示比特翻轉錯誤被檢測到的次數的信息以及GPU的識別信息,識別信息包括在渲染指令中并且用于渲染游戲畫面。
[0067]以此方式,可使用編碼處理來檢測比特翻轉錯誤的出現,而不用執行與GPU存儲器相關聯的任何專用檢查程序。注意到,在這個實施例的以上說明中,附加有奇偶校驗信息的經量化游戲畫面被寫入GPU存儲器中。然而,要被寫入GPU存儲器中的數據不僅限于此。也就是說,在本發明的GPU存儲器的錯誤檢查處理中,只需要在對數據附加奇偶校驗信息的同時將數據寫入GPU存儲器,緊接著應用運行長度編碼。也就是說,本發明適用于若干方面,其中數據被應用于運行長度編碼預處理,在對所應用的數據附加奇偶校驗信息的同時將其寫入GPU存儲器,并且通過讀出所述數據來執行運行長度編碼。
[0068]注意到,這個實施例已經舉例說明了 GPU存儲器。然而,本發明并不僅限于GPU存儲器,而且還適用于一般的存儲器以作為所述存儲器的錯誤檢查方法。
[0069]這個實施例已經舉例說明了包括多個GPU的渲染服務器。然而,本發明不僅限于這樣的特定布置。例如,當多個各自具有一個GPU的渲染服務器連接到中央服務器時,中央服務器可將具有對應于比特翻轉錯誤數目超過閾值的GPU的渲染服務器排除在那些用于渲染游戲畫面的渲染服務器之外。或者,可將客戶端裝置300直接連接到渲染服務器100,而不布置任何中央服務器。在這種情況下,CPUlOl可檢查比特翻轉錯誤的數目是否超過閾值,并且可將超過閾值的GPU排除在用于渲染游戲畫面的GPU的分配目標之外。
[0070]注意到,在上述實施例的說明中,當GPU存儲器的比特翻轉錯誤的數目超過閾值時,下一幀的游戲畫面的渲染不會被分配給具有該GPU存儲器的GPU。然而,GPU排除方法并不僅限于此。例如,比特翻轉錯誤的數目超過閾值的次數可被進一步計數,并且當該次數變得不小于預定值時,可排除該GPU。或者,在服務器維護時間段中,可排除對應于比特翻轉錯誤的數目超過閾值的GPU。
[0071]如上所述,這個實施例的編碼設備可利用編碼處理來執行高效的存儲器檢驗。更確切地說,編碼設備將附加有奇偶校驗信息的數據寫入將要被檢驗的存儲器中,之后從該存儲器中讀出數據。編碼設備接著通過對數據執行運行長度編碼處理從而生成經編碼數據。當編碼設備是根據與所寫入數據相關聯的每個比特序列生成經編碼數據時,比較該比特序列與所附加的奇偶校驗信息,由此檢測存儲器的比特翻轉錯誤。
[0072]以此方式,由于可在執行運行長度編碼處理的同時檢查存儲器的可靠性,因此不用調度專用檢查程序就可檢測出可靠性差的存儲器。此外,在前述實施例的渲染系統中,可實施高效自動容錯。
[0073]其他實施例
[0074]盡管已經參考示例性實施例對本發明進行了說明,但了解到本發明并不僅限于所披露的示例性實施例。所附加權利要求書的范圍應符合最廣義的解釋,以便涵蓋所以這類修改以及等效的結構與功能。
[0075]本申請要求2011年11月7日提交的美國專利臨時申請第61/556,554號以及2011年12月19日提交的日本專利申請第2011-277628號的權益,所述申請特此通過引用將其
全文結合在此。
【權利要求】
1.一種用于輸出經編碼圖像數據的渲染服務器,其包括: 渲染構件,其用于使用GPU渲染圖像; 寫入構件,其用于將所述渲染構件所渲染的所述圖像寫入包括在所述GPU內的GPU存儲器;以及 編碼構件,其用于從所述GPU存儲器中讀出所述寫入構件寫入的所述圖像,并且通過對所述圖像應用運行長度編碼處理從而生成所述經編碼圖像數據, 其中所述寫入構件在將奇偶校驗信息附加到所述圖像的情況下將所述圖像寫入所述GPU存儲器;并且 當所述編碼構件是根據從所述GPU存儲器中讀出的所述圖像的比特序列來生成所述經編碼圖像數據時,所述編碼構件通過比較所述比特序列與所述寫入構件所附加的所述奇偶校驗信息,從而檢測比特翻轉錯誤。
2.根據權利要求1所述的服務器,其中所述寫入構件在對所述圖像應用編碼預處理的情況下將所述渲染構件渲染的所述圖像寫入所述GPU存儲器中。
3.根據權利要求2所述的服務器,其中所述編碼預處理包括離散余弦變換處理。
4.根據權利要求1至3中任一權利要求所述的服務器,其中所述經編碼圖像數據是與經編碼視頻數據的一個幀相對應的數據。
5.根據權利要求1至4中任一權利要求所述的服務器,其進一步包括: 計數構件,其用于對所述編碼構件檢測出的比特翻轉錯誤的數目進行計數;以及通知構件,其用于將由所述計數構`件計數的所檢測出的比特翻轉錯誤的所述數目,以及指示著在其中檢測出了所述比特翻轉錯誤的GPU的信息通知給外部設備。
6.一種中央服務器,其連接有根據權利要求5所述的一個或多個渲染服務器,所述中央服務器包括: 檢測構件,其用于檢測客戶端裝置的連接; 分配構件,其用于將經編碼圖像數據的生成分配給包括在所述一個或多個渲染服務器中的多個GPU中的任一 GPU,所述經編碼圖像數據將被提供給所述檢測構件檢測出的所述客戶端裝置;以及 傳輸構件,其用于從所述渲染服務器接收所述經編碼圖像數據,并且將所述經編碼圖像數據傳輸至所述客戶端裝置,所述渲染服務器包括被所述分配構件分配給已連接的所述客戶端裝置的所述GPU, 其中所述分配構件從包括所述GPU的所述渲染服務器接收與所述GPU相關聯的檢測出的比特翻轉錯誤的數目,所述GPU被分配有所述經編碼圖像數據的生成;并且 當所述次數超過閾值時,所述分配構件將所述GPU排除在被分配有所述經編碼圖像數據的生成的所述多個GPU之外。
7.一種編碼設備,其包括: 寫入構件,用于將附加有奇偶校驗信息的數據寫入存儲器;以及編碼構件,其用于從所述存儲器中讀出所述寫入構件寫入的所述數據,以及通過對所述數據應用運行長度編碼處理從而生成經編碼數據, 其中當所述編碼構件是根據所述寫入數據的比特序列來生成所述經編碼數據時,所述編碼構件通過比較所述比特序列與所附加的所述奇偶校驗信息,從而檢測比特翻轉錯誤。
8.—種對渲染服務器的控制方法,所述渲染服務器用于輸出經編碼圖像數據,所述控制方法包括: 渲染步驟,其中所述渲染服務器的渲染構件使用GPU渲染圖像; 寫入步驟,其中所述渲染服務器的寫入構件將在所述渲染步驟中渲染的所述圖像寫入包括在所述GPU中的GPU存儲器;以及 編碼步驟,其中所述渲染服務器的編碼構件從所述GPU存儲器中讀出在所述寫入步驟中寫入的所述圖像,并且通過對所述圖像應用運行長度編碼處理從而生成所述經編碼圖像數據, 其中在所述寫入步驟中,所述寫入構件在將奇偶校驗信息附加到所述圖像的情況下將所述圖像寫入所述GPU存儲器;并且 當所述編碼構件是根據在所述編碼步驟中從所述GPU存儲器中讀出的所述圖像的比特序列來生成所述經編碼圖像數據時,所述編碼構件通過比較所述比特序列與在所述寫入步驟中所附加的所述奇偶校驗信息,從而檢測比特翻轉錯誤。
9.一種對中央服務器的控制方法,所述中央服務器連接有根據權利要求5所述的一個或多個渲染服務器,所述控制方法包括: 檢測步驟,其中所述中央服務器的檢測構件檢測客戶端裝置的連接; 分配步驟,其中所述中央服務器的分配構件將經編碼圖像數據的生成分配給包括在所述一個或多個渲染服務器中的多個GPU中的任一 GPU,所述經編碼圖像數據將被提供給在所述檢測步驟中檢測出的所述客戶端裝置;以及 傳輸步驟,其中 所述中央服務器的傳輸構件從所述渲染服務器接收所述經編碼圖像數據,并且將所述經編碼圖像數據傳輸至所述客戶端裝置,所述渲染服務器包括在所述分配步驟中分配給已連接的所述客戶端裝置的所述GPU, 其中在所述分配步驟中,所述分配構件從包括所述GPU的所述渲染服務器接收與所述GPU相關聯的檢測出的比特翻轉錯誤的數目,所述GPU被分配有所述經編碼圖像數據的生成,并且當所述次數超過閾值時,所述分配構件將所述GPU排除在被分配有所述經編碼圖像數據的生成的所述多個GPU之外。
10.一種編碼方法,其包括: 寫入步驟,其中寫入構件將附加有奇偶校驗信息的數據寫入存儲器;以及編碼步驟,其中編碼構件從所述存儲器中讀出在所述寫入步驟中寫入的所述數據,并且通過對所述數據應用運行長度編碼處理從而生成經編碼數據, 其中在所述編碼步驟中,當所述編碼構件是根據所述寫入數據的比特序列來生成所述經編碼數據時,所述編碼構件通過比較所述比特序列與所附加的所述奇偶校驗信息,從而檢測比特翻轉錯誤。
11.一種用于控制計算機使之起到根據權利要求1至5中任一權利要求所述的渲染服務器的相應構件的作用的程序。
12.—種計算機可讀記錄媒體,其記錄用于控制計算機以起到根據權利要求1至5中任一權利要求所述的渲染服務器的相應構件的作用的程序。
13.一種用于控制計算機以起到根據權利要求6所述的中央服務器的相應構件的作用的程序。
14.一種計算機可讀記錄媒體,其記錄用于控制計算機以起到根據權利要求6所述的中央服務器的相應構件的作用的程序。
15.一種用于控制計算機以起到根據權利要求7所述的編碼設備的相應構件的作用的程序。
16.一種計算機可讀記錄媒體,其記錄用于控制計算機以起到根據權利要求7所述的編碼設備的相應構件的作用的程`序。
【文檔編號】G06F12/16GK103874989SQ201280050441
【公開日】2014年6月18日 申請日期:2012年10月31日 優先權日:2011年11月7日
【發明者】巖崎哲史 申請人:史克威爾·艾尼克斯控股公司