TW202219747A - 簽名命令串流和命令執行 - Google Patents
簽名命令串流和命令執行 Download PDFInfo
- Publication number
- TW202219747A TW202219747A TW110135108A TW110135108A TW202219747A TW 202219747 A TW202219747 A TW 202219747A TW 110135108 A TW110135108 A TW 110135108A TW 110135108 A TW110135108 A TW 110135108A TW 202219747 A TW202219747 A TW 202219747A
- Authority
- TW
- Taiwan
- Prior art keywords
- commands
- gpu
- command
- signatures
- execution
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Mathematical Physics (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Image Generation (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
提供了用於簽名和執行圖形處理單元(GPU)命令的系統、方法和電腦可讀取媒體。在一些實例中,一種方法可以包括:由GPU接收一或多個命令,一或多個命令包括使用處理器而產生的一或多個驗證簽名,一或多個驗證簽名之每一者驗證簽名包括基於一或多個命令而產生的第一值;由GPU產生與一或多個命令相關聯的一或多個額外驗證簽名,其中一或多個額外驗證簽名之每一者驗證簽名包括由GPU基於一或多個命令而產生的第二值;及由GPU基於對一或多個驗證簽名和一或多個額外驗證簽名的比較來決定一或多個命令的有效性。
Description
概括而言,本案內容係關於圖形處理系統,並且更具體地,係關於簽名和執行圖形處理器命令串流。
諸如圖形處理單元(GPU)之類的專用處理器越來越多地用於執行電腦系統中的特定操作。例如,GPU在操縱電腦圖形和影像處理態樣是非常高效的。對於並行地處理大資料區塊的演算法,GPU的高度並行結構使GPU比許多其他處理器更高效。因此,GPU通常用於處理電腦圖形並且渲染圖形內容以在顯示設備上呈現。此外,GPU通常與其他處理器(諸如中央處理單元(CPU))協同工作,以更高效地執行電腦應用並且卸載某些處理任務。在一些實例中,CPU可以向GPU發送一或多個命令串流,GPU可以將其作為由CPU和GPU執行的電腦應用的部分來執行。
本文揭示用於簽名和執行圖形處理單元(GPU)命令串流的系統、方法和電腦可讀取媒體。根據至少一個實例,提供了一種用於簽名和執行GPU命令串流的方法。一種實例方法可以包括:由圖形處理單元(GPU)接收一或多個命令,該一或多個命令包括使用處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的第一值;由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的第二值;及由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的比較來決定該一或多個命令的有效性。
根據至少一些實例,提供了一種用於簽名和執行GPU命令串流的裝置。在一個實例中,一種實例裝置可以包括:記憶體和一或多個處理器,其被配置為:經由圖形處理單元(GPU)接收一或多個命令,該一或多個命令包括使用處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的第一值;經由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的第二值;及經由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的比較來決定該一或多個命令的有效性。
在另一實例中,一種實例裝置可以包括:用於經由圖形處理單元(GPU)接收一或多個命令的單元,該一或多個命令包括使用處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的第一值;用於經由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名的單元,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的第二值;及用於經由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的比較來決定該一或多個命令的有效性的單元。
根據至少一個實例,提供了用於簽名和執行GPU命令串流的非暫時性電腦可讀取媒體。一種實例非暫時性電腦可讀取媒體可以儲存指令,該等指令在由一或多個處理器執行時使得該一或多個處理器進行以下操作:經由圖形處理單元(GPU)接收一或多個命令,該一或多個命令包括使用處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的第一值;經由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的第二值;及經由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的比較來決定該一或多個命令的有效性。
在一些態樣中,如在上述方法、裝置和電腦可讀取媒體中描述的決定該一或多個命令的該有效性可以包括:決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值相匹配;及決定該一或多個命令是有效的。在一些實例中,決定該一或多個命令是有效的可以導致(及/或包括)以下各項中的至少一項:決定該一或多個命令被授權以由該GPU執行,決定該一或多個命令的完整性,及/或決定該一或多個命令不包括未經授權的改動。
在一些態樣中,上述方法、裝置和電腦可讀取媒體可以包括:基於該一或多個命令是有效的,授權在該GPU處對該一或多個命令的執行。
在一些情況下,決定該一或多個命令的該有效性可以包括:決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值不匹配;及決定該一或多個命令是無效的。在一些實例中,決定該一或多個命令是無效的可以導致(及/或包括)以下各項中的至少一項:決定該一或多個命令未被授權以由該GPU執行及/或決定該一或多個命令包括一或多個未經授權的改動。
在一些態樣中,上述方法、裝置和電腦可讀取媒體可以包括:基於該一或多個命令是無效的,防止在該GPU處對該一或多個命令的執行及/或在該GPU處的該一或多個命令的當前執行的完成。
在一些實例中,該一或多個命令指定要由該GPU執行的一或多個操作,並且該一或多個命令的該有效性是在該一或多個命令及/或與該一或多個命令相關聯的軟體應用的執行時執行期間決定的。
在一些情況下,該第一值和該第二值是基於該一或多個命令的一或多個特性來產生的。在一些實例中,該一或多個特性可以包括:命令數量、一或多個類型的命令的數量、該一或多個命令中的至少一個命令的內容、及/或在該一或多個命令中包括的一或多個間接指標。在一些情況下,該一或多個間接指標可以包括對一或多個額外命令的一或多個引用。
在一些態樣中,該一或多個驗證簽名和該第一值可以是由使用者空間設備驅動程式、核心空間驅動器及/或被授權以建立命令串流及/或操縱命令串流的處理器產生的。在一些實例中,該一或多個額外驗證簽名和該第二值可以是由與該GPU相關聯的命令處理器、與該GPU相關聯的著色器處理器及/或被授權以建立命令串流和操縱命令串流中的至少一個操作的處理器產生的。在一些情況下,該一或多個命令的該有效性可以是由該命令處理器及/或該著色器處理器來決定的。
在一些實例中,該一或多個命令可以包括:命令串流、著色器程式、引用該著色器程式的命令、及/或針對記憶體中的與該一或多個命令相關聯的一或多個位置的一或多個指標。
在一些情況下,該一或多個命令的該有效性可以是在與該一或多個命令相關聯的軟體應用的執行時執行期間以及在該一或多個命令的執行及/或與該一或多個命令相關聯的一或多個操作的完成之前決定的。
在一些情況下,該一或多個驗證簽名可以包括指示當該一或多個驗證簽名被決定為無效時應當拒絕該一或多個命令的執行的命令及/或指令。
在一些情況下,上述裝置可以是及/或可以包括行動電話、智慧可穿戴設備、可攜式電腦、桌上型電腦、伺服器、及/或相機系統。在一些情況下,上述裝置可以包括影像感測器、GPU、中央處理單元(CPU)及/或顯示器。
本發明內容並不意欲標識所要求保護的主題的關鍵或必要特徵,亦不意欲孤立地用於決定所要求保護的主題的範疇。本發明內容應當經由參考本案內容的整個說明書、附圖和請求項的合適部分來理解。
在參考以下說明書、請求項和附圖之後,前述內容以及其他特徵和實施例將變得更加顯而易見。
下文提供了本案內容的某些態樣和實施例。如對於本發明所屬領域中具有通常知識者將顯而易見的,這些態樣和實施例中的一些可以獨立地應用,並且它們中的一些可以相結合地應用。在以下描述中,出於解釋的目的,闡述了具體細節以便提供對本案的實施例的透徹理解。然而,將顯而易見的是,可以在沒有這些具體細節的情況下實施各個實施例。附圖和描述並不意欲是限制性的。
隨後的描述僅提供了實例實施例,並且不意欲限制本案內容的範疇、適用性或配置。確切而言,對這些實例性實施例的隨後描述將向本發明所屬領域中具有通常知識者提供用於實現示例性實施例的可行描述。應當理解的是,在不脫離如在所附的申請專利範圍中闡述的本案的精神和範疇的情況下,可以對元素的功能和佈置進行各種改變。
圖形處理單元(GPU)可以執行由驅動器及/或其他電腦部件(例如,在GPU內及/或與GPU分開)產生的命令,以執行GPU操作,諸如圖形渲染操作。在一些情況下,與GPU互動的驅動器和由GPU處理的命令可能暴露某些GPU資訊,使用者可能利用這些資訊來篡改GPU的功能,這可能對GPU的安全性、穩定性及/或行為產生負面影響。例如,若GPU沒有實現保護由GPU使用的命令及/或資訊的完整性的措施,則使用者可能能夠侵入GPU操作和資訊,實現未經授權的驅動器及/或命令,篡改GPU的功能,及/或以其他方式改變GPU的行為。
在一些情況下,使用者可能能夠分析GPU資料(例如,封包、命令、操作等),並且對由GPU執行的命令串流進行反向工程,以編寫和實現用於產生可以由GPU執行的命令的驅動器。這些命令可以被配置為觸發可以暴露關於GPU的私有資訊和其他資訊的GPU操作,諸如勘誤表;改動GPU的行為;造成安全性及/或穩定性問題;及/或允許使用者獲得對GPU的某些態樣及/或其操作的未經授權的存取。在一些實例中,使用者可以分析GPU資料(諸如GPU封包),以對GPU命令串流進行反向工程,以產生操縱GPU以渲染私有資訊、暴露隱藏或不可存取的圖形內容的GPU命令,及/或以其他方式篡改GPU操作。在一些情況下,使用者可能能夠侵入GPU二進位檔案(諸如著色器二進位檔案)以操縱GPU的行為。
例如,在沒有GPU保護的情況下,使用者可能在執行時對記憶體進行抓取,以辨識在視訊遊戲期間由GPU實現的命令和著色器中的圖案。隨後,使用者可能能夠修改這些圖案以控制頂點著色器中的不透明度。這樣,使用者可能能夠控制GPU將所渲染的物件從不透明改變為透明,以便看到在所渲染的物件後面的事物及/或爭用者,並且在視訊遊戲期間獲得優勢。
本文揭示的技術可以提供用於驗證由GPU實現的命令、著色器程式及/或其他指令的完整性的機制。例如,本文揭示的技術可以驗證由GPU實現的命令、著色器程式及/或其他指令沒有被侵入、篡改或改動。本文揭示的技術亦可以拒絕及/或停止對無法被驗證及/或決定為已經被侵入、篡改或改動的任何命令、著色器程式及/或其他指令的執行。本文揭示的技術亦可以模糊、隱藏及/或保護命令及/或著色器程式圖案,以防止他人對此類圖案進行反向工程和利用。在一些實例中,本文揭示的技術可以在命令串流、著色器程式及/或其他指令中的任意、假性隨機或其他位置處實現簽名,以防止他人對命令串流、著色器程式及/或其他指令進行反向工程並且驗證命令串流、著色器程式及/或其他指令的完整性。
在以下揭示內容中,提供了用於簽名和執行GPU命令串流和軟體的系統、裝置(或設備)、程序(或方法)和電腦可讀取媒體。將在以下揭示內容中如下描述本文的技術。論述首先以對用於簽名和執行GPU命令串流和軟體的實例系統、技術和方法的描述開始,如圖1至4B 所示。隨後將跟隨著對用於簽名和執行GPU命令串流和著色器程式的實例程序的描述,如圖5所示。論述以對實例計算設備架構的描述結束,該實例計算設備架構包括適於簽名和執行GPU命令串流和軟體的實例硬體部件,如圖6所示。本案內容現在轉到圖1。
圖1是示出可以被配置為實現本案內容的一或多個態樣的實例計算系統100的圖。在一些實例中,計算系統100可以簽名和執行處理器及/或電腦程式命令和命令串流,如本文進一步描述的。例如,在一些情況下,計算系統100可以簽名並且執行圖形處理單元(GPU)命令串流,以保護命令串流並且防止對命令串流的未經授權的反向工程。在一些實例中,計算系統100可以簽名和執行電腦圖形命令,諸如著色器命令。計算系統100亦可以執行任何其他電腦處理任務,例如,資料處理任務、影像處理任務以及圖形渲染及/或操縱等。
計算系統100可以是一或多個計算設備的部分。在一些實例中,計算系統100可以是電子設備(或多個電子設備)的部分,諸如桌上型電腦、膝上型電腦或筆記型電腦、伺服器、平板電腦、相機系統(例如,數位相機、IP相機、攝像機、安全相機等)、電話系統(例如,智慧型電話、蜂巢式電話、會議系統等)、嵌入式系統、行動電話、遊戲控制台、顯示系統、擴展現實(XR)設備(例如,頭戴式顯示器、智慧眼鏡等)、或任何其他合適的電子設備。
在圖1所示的實例中,計算系統100包括一或多個影像感測器102、一或多個其他感測器104、一或多個周邊設備106、儲存裝置108、記憶體110和計算部件120。在一些實現中,一或多個影像感測器102、一或多個其他感測器104、一或多個周邊設備 106、儲存裝置108、記憶體110和計算部件120可以是同一計算設備的部分。例如,在一些情況下,一或多個影像感測器102、一或多個其他感測器104、一或多個周邊設備106、儲存裝置108、記憶體110和計算部件120可以被整合到以下各者中:智慧型電話、膝上型電腦、平板電腦、遊戲系統、XR設備、伺服器、桌上型電腦及/或任何其他計算設備。然而,在一些實現中,一或多個影像感測器102、一或多個其他感測器104、一或多個周邊設備106、儲存裝置108、記憶體110和計算部件120可以是兩個或兩個以上單獨的計算設備的部分。
在一些實例中,一或多個影像感測器102可以包括任何影像及/或視訊感測器及/或相機設備,諸如數位相機、攝像機、智慧型電話相機、在諸如電視機或電腦之類的電子設備上的相機設備、相機系統等。在一些情況下,一或多個影像感測器102可以是相機或計算設備的部分,諸如數位相機、攝像機、IP相機、智慧型電話、智慧電視機、遊戲系統等。在一些實例中,一或多個影像感測器102可以是雙相機部件的部分。一或多個影像感測器102可以擷取影像及/或視訊內容(例如,原始影像及/或視訊資料),影像及/或視訊內容隨後可以由計算部件120進行處理以渲染、儲存及/或操縱影像及/或視訊內容。
一或多個其他感測器104可以包括用於偵測及/或量測諸如光、聲音、環境條件、物件、距離資訊、運動資訊、位置資訊、速度等的資訊的任何感測器。感測器的非限制性實例包括LIDAR、陀螺儀、加速度計、磁強計、雷達、慣性量測單元(IMU)、溫度感測器、濕度感測器、聲音感測器、光感測器、機器視覺感測器等。
一或多個周邊設備106可以包括能夠接收輸入及/或提供輸出的任何設備。周邊設備的非限制性實例可以包括顯示器、鍵盤、定點設備(例如,電腦滑鼠、軌跡點、觸控板、觸控式螢幕、操縱桿、遙控器、輸入追蹤設備、控制器等)、收發機、麥克風、揚聲器、螢幕、投影儀、印表機、掃瞄器、網路介面(例如,有線及/或無線通訊介面等)等。
儲存裝置108可以是用於儲存資料(諸如影像資料、視訊資料、檔、軟體、資料夾、內容項及/或任何其他類型的數位資料)的任何存放裝置。儲存裝置108可以儲存來自計算系統100的部件中的任何部件的資料。例如,儲存裝置108可以儲存來自以下各者中的任何一者的資料或量測(例如,處理參數、輸出、計算結果、狀態等):一或多個影像感測器102、一或多個其他感測器104、一或多個周邊設備106、記憶體110和計算部件120。在一些實例中,儲存裝置108可以包括用於儲存用於由計算部件120處理的資料的緩衝器。
記憶體110可以包括一或多個揮發性記憶體、非揮發性記憶體及/或電腦可讀取儲存媒體,諸如隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、唯讀記憶體(ROM)、可抹除可程式設計ROM(EPROM)、電子可抹除可程式設計ROM(EEPROM)、快閃記憶體、固態記憶體、磁性資料媒體、光學儲存媒體等。在一些實例中,記憶體110可以包括系統記憶體或主記憶體。
在一些實現中,計算部件120可以包括中央處理單元(CPU)122、圖形處理單元(GPU)124、數位訊號處理器(DSP)126及/或影像訊號處理器(ISP)128。在一些情況下,計算部件120可以包括其他電路或硬體、電腦軟體、韌體或其任何組合,以執行本文描述的各種操作中的任何一個操作。計算部件120可以執行各種操作,諸如資料處理操作、電腦程式執行和操作、影像處理操作、電腦視覺、圖形渲染、擴展現實(XR)(例如,增強現實、虛擬實境、混合現實等)、感測器處理、電腦系統操作、及/或本文描述的各種操作中的任何操作。
在一些實例中,計算部件120可以實現計算系統100的軟體應用130。軟體應用130可以包括任何軟體應用及/或電腦程式。例如,軟體應用130可以包括圖形使用者介面應用、視訊遊戲應用、媒體應用(例如,視訊重播/流式應用、影像渲染應用等)、XR應用、視訊及/或影像編輯應用、作業系統、虛擬化系統(例如,虛擬機器、軟體容器等)、圖形渲染應用、二維(2D)及/或三維(3D)動畫和渲染應用、類比應用、譯碼應用(例如,編碼、解碼)、用於科學計算的應用、建模應用、數位內容建立應用、人工智慧應用、影像處理應用、幾何計算應用、成像應用、電腦視覺應用等。
儘管計算系統100被示為包括某些部件,但是具有通常知識者將明白,計算系統100可以包括比在圖1中所示的部件更多或更少的部件。例如,在一些情況下,計算系統100亦可以包括快取記憶體、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、數據機及/或在圖1中未圖示的其他硬體或處理設備。下文參考圖6描述了可以利用計算系統100實現的計算設備和硬體部件的說明性實例。
圖2是示出圖形渲染系統200的實例部件的圖。在一些情況下,圖形渲染系統200可以由計算系統100實現。在該實例中,圖形渲染系統200包括記憶體110、CPU 122和GPU 124。
CPU 122可以處理用於在計算系統100內執行的指令。在一些實例中,CPU 122可以被配置為執行軟體應用130。軟體應用130可以包括實現GPU 124的一或多個功能的軟體應用。在此類實例中,CPU 122可以被配置為執行實現GPU 124的一或多個功能的軟體應用。例如,CPU 122可以被配置為執行軟體應用,該軟體應用包括用於GPU 124渲染圖形內容(諸如圖形使用者介面、視訊內容、影像內容、動畫等)的一或多個指令。
CPU 122可以實現驅動器202,驅動器202可以產生一或多個命令以實現與由CPU 122執行的軟體應用130相關聯的指令。在一些實例中,CPU 122可以使用驅動器202來產生指定用於GPU 124執行的操作的命令串流。CPU 122可以向GPU 124發送命令串流及/或經編譯的著色器程式,並且GPU 124可以執行與命令串流及/或經編譯的著色器程式相關聯的操作。在一些實例中,CPU 122可以(例如,經由驅動器202)向GPU 124發送指令(例如,經編譯的著色器程式),以供GPU 124上的一或多個著色器處理器210執行。
在一些實例中,驅動器202可以實現應用程式設計介面(API)功能。例如,驅動器202可以向GPU 124(及/或其部件)及/或計算系統100的其他部件發出API調用。在一些情況下,驅動器202可以包括一或多個核心模式驅動器。一或多個核心模式驅動器可以在核心模式下執行軟體代碼。例如,一或多個核心模式驅動器可以具有對底層硬體的完全及/或不受限制的存取,可以執行任何CPU指令及/或引用任何記憶體位址。在一些實例中,一或多個核心模式驅動器可以執行較低級功能,例如,初始化硬體、管理記憶體、管理中斷等。在一些情況下,驅動器202亦可以包括一或多個使用者空間驅動器。可以限制一或多個使用者空間驅動器直接存取底層硬體或引用記憶體。一或多個使用者空間驅動器可以替代地委託或依賴系統API存取硬體或記憶體。在一些實例中,一或多個使用者空間驅動器可以將系統API轉換為要執行的命令。
記憶體110可以包括用於儲存來自CPU 122及/或GPU 124的資料的一或多個緩衝器204。一或多個緩衝器204可以包括例如命令緩衝器、環形緩衝器及/或任何其他類型的緩衝器。在一些實例中,一或多個緩衝器204可以儲存由驅動器202及/或CPU 122發出的一或多個命令、指向由驅動器202及/或CPU 122發出的一或多個命令(及/或記憶體中的儲存一或多個命令的位置)的一或多個指標、指向由驅動器202及/或CPU 122發出的命令的一或多個間接命令緩衝器218的一或多個指標(下文進一步描述)、與記憶體存取操作相關聯的資料、與一或多個命令的操作相關聯的資料等。例如,一或多個緩衝器204可以儲存指定用於GPU 124執行的操作的命令串流(例如,經由一或多個著色器處理器210及/或命令處理器214)、命令串流的操作狀態、及/或指向間接緩衝器或指向記憶體及/或間接緩衝器中的命令的指標。
在一些情況下,一或多個緩衝器204可以儲存與命令串流的操作相關聯的狀態資料(例如,變數、操作的中間結果、處理事件、追蹤資訊、執行值等)。在一些情況下,一或多個緩衝器204可以允許計算系統100儲存與命令串流及/或命令串流的操作相關聯的資料(例如,狀態、命令、記憶體存取運算資料等)以供CPU 122及/或GPU 124快速存取,及/或避免將資料持久化在GPU 124上的記憶體(例如,記憶體216)及/或記憶體110中。
GPU 124可以被配置為執行圖形渲染操作及/或圖形處理操作。在一些實例中,GPU 124可以被配置為執行通用計算操作及/或其他處理操作,諸如影像處理操作。在圖2所示的實例中,GPU 124包括著色器系統208、命令處理器214和記憶體216。
著色器系統208可以包括一或多個著色器處理器210和由驅動器202中的一者或多者編譯的一或多個著色器程式212。一或多個著色器處理器210可以執行著色操作以渲染圖形內容。例如,一或多個著色器處理器210可以執行幾何體、頂點、圖元及/或其他著色操作。在一些情況下,一或多個著色器處理器210可以包括用於執行相關聯的操作的一或多個部件、用於執行計算的邏輯單元、暫存器、快取記憶體、記憶體等。一或多個著色器程式212可以包括由驅動器202中的一者或多者編譯的著色語言程式。在一些情況下,一或多個著色器程式212可以包括用於由一或多個著色器處理器210執行的相關聯的著色操作的指令(例如,命令、邏輯等)。
命令處理器214可以被配置為接收和處理來自驅動器202的命令串流。在一些實例中,命令處理器214可以是被配置為接收和處理來自CPU 122(例如,來自驅動器202)的命令串流的流處理器。在一些情況下,命令處理器214可以排程將由GPU 124執行的操作。例如,命令處理器214可以排程將由一或多個著色器處理器210執行的操作。在一些情況下,命令處理器214可以決定何時排程操作及/或哪些GPU資源來執行操作。在一些實例中,命令處理器214可以從驅動器202接收命令串流,並且排程命令串流的操作以供一或多個著色器處理器210執行。
在一些情況下,命令處理器214可以從驅動器202接收多個命令串流。在一些實例中,命令處理器214可以在GPU 124執行期間中斷命令串流的操作,並且發起(例如,啟動、重新啟動、切換到等)不同命令串流的操作。命令處理器214可以稍後重新啟動所中斷的命令串流的操作。在一些實例中,命令處理器214可以從驅動器202及/或CPU 122接收中斷,以從一個命令串流的操作切換到另一個命令串流。
命令處理器214可以儲存與命令串流的操作相關聯的資料。在一些情況下,命令處理器214可以將資料儲存在GPU 124上的一或多個緩衝器204、記憶體110及/或記憶體216上。例如,命令處理器214可以儲存命令串流、與命令串流的操作相關聯的狀態、運算資料、與記憶體存取操作相關聯的資料、及/或一或多個緩衝器204及/或記憶體216上的其他資料。在一些實例中,命令處理器214可以處理及/或排程一或多個間接命令緩衝器218中的命令的操作。
一或多個間接命令緩衝器218可以包括由命令處理器214從驅動器202接收的一或多個命令串流中的命令及/或針對命令的指標。例如,間接命令緩衝器可以包括針對來自驅動器202的命令串流中的命令的指標集合。在一些情況下,指標可以引用命令串流中的命令及/或記憶體中的儲存命令串流中的命令的位置。例如,間接命令緩衝器可以包括針對命令串流中的命令的指標集合。在一些情況下,每個指標可以引用記憶體(例如,記憶體216、一或多個緩衝器204等)中的儲存與該指標相關聯的命令及/或儲存與該命令相關聯的操作的狀態的位置。在一些情況下,命令處理器214可以對一或多個間接命令緩衝器218進行快取記憶體,在處理間接命令緩衝器218中的命令時保留一或多個間接命令緩衝器218,及/或將一或多個間接命令緩衝器218儲存在記憶體216上。
在一些情況下,一或多個緩衝器204可以包括針對一或多個間接命令緩衝器218的指標、與一或多個間接命令緩衝器218相關聯的命令及/或與一或多個間接命令緩衝器218中的命令相關聯的操作的狀態。在一些實例中,一或多個緩衝器204中的資料的至少一部分可以對應於一或多個間接命令緩衝器218中的資料。在一些情況下,間接命令緩衝器可以包括針對與不同命令串流相關聯的不同的間接命令緩衝器的指針。
例如,第一間接命令緩衝區可以包括針對第二間接命令緩衝器的指標,第二間接命令緩衝器與要作為第一命令串流的部分來處理的第二命令串流相關聯。命令處理器214可以發起及/或處理與第一命令串流相關聯的命令。在處理第一命令串流中的命令期間,當命令處理器214到達第一間接命令緩衝器中的針對第二間接命令緩衝器的指標時,命令處理器214可以處理與該指標相關聯的第二間接緩衝器中的第二命令串流。當第二命令串流的操作完成時,命令處理器214可以返回到第一間接緩衝器並且處理任何剩餘指標(及/或相關聯的命令)。
為了進一步說明,在一個實例中,第一命令串流可以對應於用於繪製要渲染的汽車的命令,並且第二命令串流可以對應於用於繪製汽車的車輪的命令。在該實例中,命令處理器214可以順序地存取第一間接命令緩衝器中的指標及/或命令,以發起用於繪製汽車的第一命令串流的操作。當命令處理器214遇到針對第二間接命令緩衝器的指標時,命令處理器214可以順序地存取第二間接命令緩衝器中的指標及/或命令,以發起用於繪製汽車的車輪的第二命令串流的操作。當第二命令串流的操作完成時,命令處理器214可以返回到第一間接命令緩衝器,以順序地存取任何剩餘指標及/或命令,並且發起用於繪製汽車的任何剩餘操作。
在一些情況下,當命令處理器214處理命令串流時,命令處理器214可以儲存與該命令串流的操作相關聯的資料。例如,命令處理器214可以緩衝與記憶體存取操作(例如,讀操作、寫操作等)相關聯的資料(例如,狀態、命令、記憶體存取運算資料等)及/或與依賴於特定記憶體位置中的資料的操作相關聯的資料。在一些情況下,這可以提供GPU 124對所緩衝的資料的快速存取,使GPU 124避免多次產生相同的資料,及/或使GPU 124避免將資料持久化在GPU 124上的記憶體216及/或記憶體110中。
在一些實例中,命令串流中的操作可以存取記憶體216、記憶體110及/或一或多個緩衝器204中的一或多個位置。在一些情況下,與這些操作相關聯的資料可以包括對記憶體216、記憶體110及/或一或多個緩衝器204中的與這些操作相關聯的一或多個位置的內容的指示。
記憶體216可以包括任何圖形記憶體。在一些實例中,記憶體216可以包括一或多個揮發性記憶體、非揮發性記憶體及/或電腦可讀取儲存媒體,諸如隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、可抹除可程式設計ROM(EPROM)、電子可抹除可程式設計ROM(EEPROM)、快閃記憶體等。
圖3是示出用於實現簽名命令串流的實例系統流程300的圖。在該實例中,驅動器302可以表示來自圖2中的驅動器202的驅動器。驅動器302可以與來自軟體應用130的軟體應用相關聯。
驅動器302可以產生命令串流304和306並且將其發送給命令處理器214。命令串流304和306可以包括指定用於GPU 124及/或命令處理器214執行的操作的命令。在圖3中,命令串流304表示被發送給命令處理器214並且被包括在間接命令緩衝器(ICB)310中的命令串流,並且命令串流306表示被發送給命令處理器214並且被包括在ICB 320中的命令串流。儘管圖3圖示兩個命令串流和兩個ICB,但是應當注意,其他實例可以包括單個命令串流及/或ICB、或者兩個以上的命令串流及/或ICB。命令串流304和306以及ICB 310和320是出於解釋目的而提供的非限制性實例。
在一些實例中,流304-306及/或ICB 310-320中的命令中的命令可以被封裝在封包中。例如,命令可以是命令串流及/或對應ICB中的封包的有效載荷(或有效載荷的一部分)。在一些情況下,封包可以具有由所使用的程式設計模型定義的特定結構。例如,封包可以具有由特定程式設計模型定義的標頭和有效載荷。
ICB 310和ICB 320可以表示來自圖2中的一或多個間接命令緩衝器218的間接命令緩衝器。ICB 310可以包括命令串流304中的命令(或針對命令的指標),並且ICB 320可以包括命令串流306中的命令(或針對命令的指標)。在圖3中的實例中,ICB 310亦包括引用(例如,指向)ICB 320的間接指標316。間接指標316可以引用ICB 320,以指示:當隨著命令處理器214順序地處理ICB 310中的命令串流304,命令處理器214到達間接指標316時,命令處理器214應當存取並且處理ICB 320中的命令串流306。換句話說,間接指標316可以類似於符號連結來起作用,以在命令處理器214到達間接指針316時將其引導到ICB 320。
以這種方式,當命令處理器214到達ICB 310內的間接指標316時,間接指標316可以將命令處理器214重定向到ICB 320中的命令串流306。基於間接指標316,命令處理器214可以存取ICB 320並且處理ICB 320中的命令串流306。當命令處理器214完成對ICB 320中的命令串流306的處理時,命令處理器214可以返回ICB 310並且繼續執行在間接指標316之後的下一個命令或指標(若有的話),其在圖3的實例中是狀態命令。
命令串流304和306可以包括由驅動器302產生的簽名312、314、322和324。例如,命令串流304可以包括在命令串流304內的不同位置處的簽名312和314,並且命令串流306可以包括在命令串流306內的不同位置處的簽名322和324。在圖3中所示的簽名的數量是出於解釋目的而提供的說明性實例。在其他實例中,命令串流304及/或306可以包括比在圖3中所示的更多或更少的簽名。
簽名312、314、322和324可以包括使用雜湊演算法而產生的雜湊值。驅動器302和命令處理器214可以知道用於產生簽名312、314、322和324的雜湊演算法和金鑰,以允許驅動器302和命令處理器214獨立地產生和驗證簽名312、314、322和322。在一些情況下,GPU 124的其他部件(諸如一或多個著色器處理器210)亦可以知道用於產生簽名312、314、322和324的雜湊演算法和金鑰,以獨立地產生和驗證簽名312、314、322和324。簽名312、314、322、324可以提供用於保護命令串流304和306的完整性以及GPU 124的操作的安全機制。例如,簽名312、314、322、324可以提供加密、驗證及/或模糊級別,以防止他人對由GPU 124和相關聯的軟體實現的命令串流進行反向工程及/或操縱。
在一些實例中,簽名312、314、322、324可以包括無操作指令或其他指令或命令,其指示:若簽名312、314、322、324未經命令處理器214驗證,則不應當執行及/或接受命令串流304和306。
在一些實例中,驅動器302可以產生簽名312、314、322和324,並且命令處理器214可以在接收、儲存、處理、排程及/或執行命令串流304和306時驗證簽名312、314、322和324。例如,命令處理器214可以使用相同的雜湊演算法,以基於從驅動器302接收的命令串流304和306來產生簽名。命令處理器214隨後可以將所產生的簽名與簽名312、314、322和324進行比較,以驗證命令串流304和306尚未被操縱(例如,被篡改、損壞、改動、侵入等)。
若命令處理器214未能驗證簽名312、314、322、324(例如,若所產生的簽名與簽名312、314、322、324不匹配),則命令處理器214可以拒絕(例如,中止、拒絕、忽略、拒絕處理/執行等)命令串流304和306。在一些實例中,若命令處理器214未能驗證簽名312、314、322、324,則命令處理器214可以產生故障(例如,錯誤、警報、通知、故障事件等),其阻止執行命令串流304和306(及/或停止執行命令串流304和306)及/或指示對簽名312、314、322、324的驗證已經失敗。在一些情況下,命令處理器214可以產生指示、警報、通知等,以向驅動器302、計算系統100及/或使用者通知簽名驗證已經失敗,這可以指示潛在問題及/或惡意行為。若命令處理器214能夠驗證簽名312、314、322、324(例如,若所產生的簽名與簽名312、314、322、324匹配),則命令處理器214可以允許執行及/或繼續執行命令串流304和306。
驅動器302(以及在驗證時的命令處理器214)可以基於命令串流304和306的一或多個特性來產生用於簽名312、314、322和324的雜湊值。例如,驅動器302可以基於以下各項來產生用於命令串流的簽名:命令串流的大小(例如,命令串流中的命令或封包數量)、命令串流中的間接指標數量、命令串流的內容的一或多個部分、特定類型的命令的數量(例如,繪製命令的數量、狀態命令的數量、讀命令的數量等)、特定類型的命令組的數量(例如,繪製、狀態及/或其他命令組的數量)、命令串流中的一或多個命令的內容(例如,繪製及/或狀態命令的內容、每三個命令的內容等)、及/或命令串流的任何其他特性。
舉例說明,在驅動器302產生命令串流304時,其可以追蹤其遇到的命令(或這些命令中的一部分命令)的數量、類型、模式、特性及/或內容。當驅動器302產生簽名312時,驅動器302可以知道驅動器302在命令串流304中在簽名312之前已經遇到的命令(或某些被追蹤的命令)的數量、類型、模式、特性及/或內容。驅動器302可以使用來自其遇到的命令的數量、類型、模式、特性及/或內容的任何資訊來產生簽名312。在產生簽名312之後,驅動器302可以繼續追蹤命令串流304中的命令的數量、類型、模式、特性及/或內容。當產生簽名314時,驅動器302可以類似地使用被追蹤的資訊來計算簽名314。簽名314可以基於在簽名之前追蹤的資訊來產生(例如,包括或不包括在簽名312之前追蹤的資訊)。驅動器302可以類似地產生用於命令串流306的簽名322和324。在一些情況下,因為命令串流304引用命令串流306(例如,經由間接指針316),所以當產生用於命令串流306的簽名322和324時,驅動器302可以可選地考慮(例如,在計算簽名322和324時使用)從命令串流304追蹤的資訊,及/或反之亦然。
在一些實例中,驅動器302可以在一或多個隨機、假性隨機及/或預定位置處在命令串流中插入簽名。例如,驅動器302可以在命令串流中的每
n個命令之後、在每
n千位元組資料及/或空間之後、在每
n個某種類型的命令之後、在一或多個任意選擇的位置處、在作為命令串流的一或多個特性及/或命令串流中的內容的一部分的因數(例如,作為命令串流中的一或多個有效載荷、命令串流的大小、命令串流中的命令模式等的因數)而計算的一或多個位置處、在作為一或多個執行時條件及/或用於計算具有隨機性水平的位置的任何其他特性的因數而計算的一或多個位置處,來在命令串流中插入簽名。
經由將命令串流中的簽名的位置隨機化、模糊及/或隱藏,驅動器302可以防止他人基於簽名及/或命令串流中的模式來對簽名及/或命令串流進行反向工程(或增加他人基於簽名及/或命令串流中的模式來對簽名及/或命令串流進行反向工程的難度)。例如,若惡意使用者分析命令串流並且偵測到簽名被插入在命令串流中的相同位置處,則惡意使用者可能能夠辨識關於簽名和命令串流的特定模式,並且基於所辨識的模式來對簽名進行反向工程。惡意使用者可能潛在地對命令串流進行反向工程,侵入(例如,改動、篡改、複製、損壞等)命令串流,侵入GPU 124的操作,及/或使用資訊(例如,命令串流及/或簽名資訊)進行未經授權及/或惡意的行為。
圖4A是示出用於編譯具有驗證簽名的著色器程式的實例系統流程400的圖。在該實例中,驅動器402可以編譯著色器程式404以供著色器處理器(例如,一或多個著色器處理器210)執行。在一些實例中,著色器程式404可以被儲存在記憶體216中以供著色器處理器檢索和執行。在其他實例中,著色器程式404可以被儲存在不同的記憶體或緩衝器中,諸如記憶體110或一或多個緩衝器204。
驅動器402可以表示來自圖2中的驅動器202的驅動器,並且著色器程式404可以表示來自圖2中的一或多個著色器程式212的著色器程式。驅動器402可以與來自軟體應用130的軟體應用相關聯。著色器程式404可以包括著色器命令串流及/或著色器指令集,其指定用於GPU 124及/或著色器處理器執行的操作。在一些情況下,著色器程式404可以包括用於著色器處理器的指令集。在一些實例中,指令集可以包括命令串流。例如,指令集之每一者指令皆可以包括命令,諸如著色器命令。
著色器程式404可以包括由驅動器402產生的簽名408和410。例如,著色器程式404可以包括在著色器程式404內的不同位置處的簽名408和410。在圖4A中所示的簽名的數量是出於解釋目的而提供的說明性實例。在其他實例中,著色器程式404可以包括比圖4A所示的更多或更少的簽名。
簽名408和410可以包括使用雜湊演算法而產生的雜湊值。簽名408和410可以提供用於保護著色器程式404和GPU 124的操作的完整性的安全機制。例如,簽名408和410可以提供加密、驗證及/或模糊級別,以防止他人對著色器程式404進行反向工程及/或操縱。
在一些實例中,驅動器402可以產生簽名408和410,並且命令處理器214及/或著色器處理器可以在接收、儲存、處理、排程及/或執行著色器程式404時驗證簽名408和410。例如,命令處理器214及/或著色器處理器210可以使用相同的雜湊演算法,以基於著色器程式404來產生簽名。命令處理器214及/或著色器處理器210隨後可以將所產生的簽名與簽名408和410進行比較,以驗證著色器程式404尚未被操縱(例如,篡改、損壞、改動、侵入等)。若命令處理器214及/或著色器處理器210未能驗證簽名408和410(例如,若所產生的簽名與簽名408和410不匹配),則命令處理器214及/或著色器處理器210可以拒絕(例如,中止、拒絕、忽略、拒絕執行等)著色器程式404。
在一些實例中,簽名408和410可以包括無操作指令或其他指令或命令,其指示:若簽名408和410未被著色器處理器210及/或命令處理器214驗證,則不應當執行及/或接受著色器程式404。
驅動器402(以及在驗證時的命令處理器214及/或著色器處理器)可以基於著色器程式404的一或多個特性來產生用於簽名408和410的雜湊值。例如,驅動器402可以基於以下各項來產生用於著色器程式404(及/或著色器程式404中的一或多個指令及/或命令)的簽名:著色器程式404的大小(例如,著色器程式404中的指令及/或命令的數量)、著色器程式404中的間接指標的數量、著色器程式404的內容的一或多個部分、特定類型(例如,繪製、狀態、讀、寫等)的命令的數量、特定類型(例如,繪製、狀態等)的命令組的數量、著色器程式404中的一或多個指令及/或命令的內容、及/或著色器程式404的任何其他特性。
舉例說明,在驅動器402產生著色器程式404時,其可以追蹤其已經遇到的命令(或這些命令中的一部分命令)的數量、類型、模式、特性及/或內容。當驅動器402產生簽名408時,驅動器402可以知道驅動器402在簽名408之前在著色器程式404中遇到的命令(或某些被追蹤的命令)的數量、類型、模式、特性及/或內容。驅動器402可以使用來自其已經遇到的命令的數量、類型、模式、特性及/或內容的任何資訊來產生簽名408。在產生簽名408之後,驅動器402可以繼續追蹤著色器程式404中的命令的數量、類型、模式、特性及/或內容。當產生簽名410時,驅動器402可以類似地使用被追蹤的資訊來計算簽名410。簽名410可以基於在簽名410之前追蹤的資訊(例如,包括或不包括在簽名408之前追蹤的資訊)來產生。
在一些實例中,驅動器402可以在著色器程式404中的一或多個隨機、假性隨機及/或預定位置處插入簽名。例如,驅動器402可以在著色器程式404中的每
n個命令之後、在每
n千位元組資料及/或空間之後、在每
n個某種類型的命令之後、在一或多個任意選擇的位置處、在作為著色器程式404的一或多個特性及/或著色器程式404中的內容的一部分的因數(例如,作為著色器程式404中的一或多個命令、著色器程式404的大小、著色器程式404中的命令模式等的因數)而計算的一或多個位置處、在作為一或多個執行時條件及/或用於計算具有隨機性水平的位置的任何其他特性的因數而計算的一或多個位置處,來在著色器程式404中插入簽名。
經由將著色器程式404中的簽名的位置隨機化、模糊及/或隱藏,驅動器402可以防止他人基於簽名及/或著色器程式404中的模式來對簽名及/或著色器程式404進行反向工程(或增加他人基於簽名及/或著色器程式404中的模式來對簽名及/或著色器程式404進行反向工程的難度)。例如,若惡意使用者偵測到簽名被插入在著色器程式中的相同位置處,則惡意使用者可能能夠辨識關於簽名和著色器程式404的特定模式,並且基於所辨識的模式來對簽名進行反向工程。惡意使用者可能潛在地對著色器程式404進行反向工程,侵入(例如,改動、篡改、複製、損壞等)著色器程式404,侵入GPU 124的操作,及/或使用資訊(例如,著色器程式404及/或簽名資訊)進行未經授權及/或惡意的行為。
圖4B是示出用於基於驗證簽名來驗證著色器程式的實例系統流程420的圖。在該實例中,驅動器402向命令處理器214發送命令串流422。命令串流422可以包括指示命令處理器214排程著色器程式404的執行(例如,及/或指示著色器處理器210執行著色器程式404)的命令。在一些實例中,命令串流422可以包括無操作指令或其他指令或命令,其指示:若著色器程式404中的簽名408和410未被命令處理器214及/或著色器處理器210驗證,則不應當執行著色器程式404。
命令處理器214可以向著色器處理器210發送命令424,以觸發著色器處理器210執行著色器程式404。在一些情況下,命令424可以包括如前述的無操作指令或其他指令或命令。在一些實例中,命令424可以包括針對記憶體(例如,記憶體216)中的與著色器程式404相對應的位置(例如,其中著色器程式404被儲存在記憶體中)的指針。著色器處理器210可以從記憶體中提取著色器程式404並且驗證簽名408和410,如下進一步描述的。在一些情況下,在將命令424發送給著色器處理器210之前,命令處理器214可以驗證著色器程式404中的簽名408和410,如下文關於著色器處理器210描述的。
為了驗證簽名408和410,著色器處理器210(可選地,以及命令處理器214)可以使用由驅動器402使用的雜湊演算法,以基於著色器程式404產生簽名。如前述,著色器處理器210(可選地,以及命令處理器214)可以基於著色器程式404的一或多個特性(及/或其內容)來產生簽名。著色器處理器210(可選地,以及命令處理器214)隨後可以將所產生的簽名與著色器程式404中的簽名408和410進行比較,以驗證著色器程式404尚未被操縱(例如,篡改、損壞、改動、侵入等)。
若著色器處理器210(或命令處理器214)未能驗證簽名408和410(例如,若所產生的簽名與簽名408和410不匹配),著色器處理器210(或命令處理器214)可以拒絕(例如,中止、拒絕、忽略、拒絕執行等)著色器程式404。在一些情況下,著色器處理器210(或命令處理器214)可以產生指示、警報、通知等,以向驅動器402、計算系統100及/或使用者通知簽名驗證已經失敗,這可以指示潛在問題及/或惡意行為。若著色器處理器210(可選地,以及命令處理器214)能夠驗證簽名408和410(例如,若所產生的簽名與簽名408和410匹配),則著色器處理器210(和命令處理器214)可以允許著色器程式404的執行開始、繼續及/或完成。
在揭示實例系統、技術和概念之後,本案內容現在轉向在圖5中所示的實例方法500。本文概述的步驟是實例,並且可以以其任何組合來實現,包括排除、添加或修改某些步驟的組合。
在方塊502處,方法500可以包括:由GPU(例如,GPU 124)接收一或多個命令(例如,命令串流304、命令串流306、命令串流422、命令424),一或多個命令包括使用處理器(例如,CPU 122)而產生的一或多個驗證簽名(例如,簽名312、314、322、324、408、410)。在一些實例中,每個驗證簽名可以包括基於一或多個命令而產生的第一值。在一些情況下,第一值可以包括基於雜湊演算法而產生的雜湊值。
在一些情況下,可以基於一或多個命令的一或多個特性來產生第一值。一或多個特性可以例如包括但不限於:一或多個命令中的命令數量、一或多個命令中的一或多個類型的命令的數量、一或多個命令中的至少一個命令的內容、在一或多個命令中包括的一或多個間接指標的內容(例如,間接指標316)、及/或在一或多個命令中包括的間接指標(例如,間接指針316)的數量。在一些實例中,間接指標可以包括對一或多個額外命令的一或多個引用。
在一些實例中,一或多個命令可以指定要由GPU(及/或GPU的一或多個部件)執行的一或多個操作。例如,一或多個命令可以指定要由GPU執行的一或多個著色及/或渲染操作。在一些實例中,一或多個命令可以包括命令串流(例如,命令串流304、306、422)、著色器程式(例如,著色器程式404)、引用著色器程式的命令(例如,命令424)、及/或針對記憶體中的與一或多個命令相關聯的一或多個位置的一或多個指標。
在一些實例中,一或多個驗證簽名可以包括無操作指令或命令,其指示:若一或多個驗證簽名未被GPU驗證(例如,經由命令處理器、著色器處理器及/或被授權以建立命令串流和操縱命令串流中的至少一種操作的處理器),則不應當執行及/或接受一或多個命令。例如,在一些情況下,一或多個驗證簽名可以包括指示如下內容的命令及/或指令(例如,無操作指令或其他指令或命令):若一或多個驗證簽名是無效的(及/或未被驗證是有效的),則不應當執行及/或應當終止一或多個命令。在一些實例中,一或多個命令可以包括包括複數個命令的命令串流。
在一些情況下,一或多個驗證簽名可以由使用者空間設備驅動程式、核心空間驅動器及/或被授權以建立命令串流及/或操縱命令串流的處理器來產生。核心空間驅動器可以包括核心驅動器及/或在核心模式下操作的驅動器。在一些實例中,核心空間驅動器可以在核心模式及/或核心空間中執行軟體代碼。例如,核心空間驅動器可以具有對底層硬體(例如,GPU、記憶體、處理器等)的完全及/或不受限制的存取,可以執行任何處理器指令(例如,任何CPU指令)及/或引用任何記憶體位址。在一些實例中,核心空間驅動器可以執行較低級別的功能,例如初始化硬體、管理記憶體、管理中斷等。
使用者空間驅動器可以包括在使用者空間及/或使用者空間模式下操作的驅動器。在一些實例中,可以限制使用者空間驅動器直接存取底層硬體或引用記憶體。例如,使用者空間驅動器可以替代地委託或依賴系統API存取硬體或記憶體。在一些實例中,使用者空間驅動器可以將系統API轉換為要執行的命令。
在方塊504處,方法500可以包括:由GPU產生與一或多個命令相關聯的一或多個額外驗證簽名。在一些實例中,每個驗證簽名可以包括由GPU基於一或多個命令而產生的第二值。在一些情況下,第二值可以是基於一或多個命令的一或多個特性來產生的,如前述。在一些實例中,第二值可以包括基於雜湊演算法而產生的雜湊值。例如,第二值可以包括經由對與一或多個命令的一或多個特性相對應(例如,標識、描述、表示一或多個特性等)的資料進行雜湊運算而產生的雜湊值。
在一些實例中,一或多個額外驗證簽名可以是由與GPU相關聯的命令處理器(例如,命令處理器214)及/或與GPU相關聯的著色器處理器(例如,著色器處理器210)來產生的。
在方塊506處,方法500可以包括:由GPU基於對一或多個驗證簽名和一或多個額外驗證簽名的比較來決定一或多個命令的有效性。在一些情況下,可以在一或多個命令及/或與一或多個命令相關聯的軟體應用的執行時執行期間決定一或多個命令的有效性。
在一些情況下,可以在與一或多個命令相關聯的軟體應用的執行時執行期間以及在一或多個命令的執行及/或與一或多個命令相關聯的一或多個操作的完成之前決定一或多個命令的有效性。
在一些實例中,決定一或多個命令的有效性可以包括:決定與一或多個驗證簽名相關聯的第一值與同一或多個額外驗證簽名相關聯的第二值相匹配;及決定一或多個命令是有效的。基於與一或多個驗證簽名相關聯的第一值與同一或多個額外驗證簽名相關聯的第二值相匹配,可以決定一或多個是有效的。在一些態樣中,方法500可以包括:基於一或多個命令是有效的,授權在GPU處對一或多個命令的執行(例如,執行的發起、執行的完成等)。
在一些情況下,決定一或多個命令是有效的可以導致:決定一或多個命令被授權以由GPU執行,決定一或多個命令的完整性,及/或決定一或多個命令不包括未經授權的改動。在一些實例中,若命令被決定為由GPU的製造商(或被授權以產生用於在GPU處執行的命令的實體)產生(或與由其產生的命令匹配)、由GPU的製造商(或被授權以產生用於在GPU處執行的命令的實體)批準或預先批準、符合一或多個授權要求(例如,安全性要求、穩定性要求、驗證要求、開發者要求、來源要求等)、由特定批準的來源產生及/或從特定批準的來源獲得等等,則該命令可以被授權以由GPU執行。
在一些實例中,命令的完整性可以對應於命令的來源(例如,開發者、GPU製造商等)的信任級別、命令的可靠性及/或安全性級別及/或狀態、命令尚未被改動(例如,損壞、篡改、侵入等)的保證等。在一些實例中,對命令的未經授權的改動可以包括最終使用者或未經授權的使用者(及/或未經授權的實體)進行的改動或侵入、由於命令的損壞及/或破壞而導致的修改、對命令的意外修改等。
在一些情況下,決定一或多個命令的有效性可以包括:決定與一或多個驗證簽名相關聯的第一值與同一或多個額外驗證簽名相關聯的第二值不匹配,以及決定一或多個命令是無效的。在一些實例中,決定一或多個命令是無效的可以導致決定一或多個命令未被授權以由GPU執行及/或決定一或多個命令包括一或多個未經授權的改動。
在一些態樣中,方法500可以包括:基於一或多個命令是無效的,防止在GPU處對一或多個命令的執行及/或在GPU處對一或多個命令的當前執行的完成。例如,當一或多個命令被決定為無效時,方法500可以防止執行一或多個命令,拒絕一或多個命令,或終止一或多個命令的執行。
在一些實例中,一或多個命令的有效性可以由命令處理器及/或著色器處理器來決定。在一些實例中,一或多個額外驗證簽名可以由命令處理器及/或著色器處理器來產生。
在一些實例中,方法500可以由一或多個計算設備或裝置執行。在一個說明性實例中,方法500可以由在圖1中所示的計算系統100及/或具有在圖6中所示的計算設備架構600的一或多個計算設備來執行。在一些情況下,此類計算設備或裝置可以包括處理器、微處理器、微型電腦或被配置為執行方法500的步驟的設備的其他部件。在一些實例中,此類計算設備或裝置可以包括被配置為擷取影像資料的一或多個感測器。例如,計算設備可以包括智慧型電話、頭戴式顯示器、行動設備、相機、平板電腦或其他合適的設備。在一些實例中,此類計算設備或裝置可包括被配置為擷取一或多個影像或視訊的相機。在一些情況下,此類計算設備可以包括用於顯示影像的顯示器。在一些實例中,一或多個感測器及/或相機是與計算設備分離的,在這種情況下,計算設備接收所感測的資料。此類計算設備亦可以包括被配置為傳送資料的網路介面。
計算設備的部件可以在電路中實現。例如,部件可以包括及/或可以使用電子電路或其他電子硬體來實現,該等電子電路或其他電子硬體可以包括一或多個可程式設計電子電路(例如,微處理器、圖形處理單元(GPU)、數位訊號處理器(DSP)、中央處理單元(CPU)、及/或其他適當的電子電路),及/或可以包括電腦軟體、韌體或其任何組合及/或使用其來實現,以執行本文描述的各種操作。計算設備亦可以包括顯示器(作為輸出設備的實例或除了輸出設備之外)、被配置為傳送及/或接收資料的網路介面、其任何組合、及/或其他部件。網路介面可以被配置為傳送及/或接收基於網際網路協定(IP)的資料或其他類型的資料。
方法500被示為邏輯流程圖,邏輯流程圖的動作表示可以用硬體、電腦指令或其組合來實現的一系列操作。在電腦指令的背景下,該等動作表示被儲存在一或多個電腦可讀取儲存媒體上的電腦可執行指令,該電腦可執行指令在由一或多個處理器執行時執行所記載的操作。通常,電腦可執行指令包括執行特定功能或實現特定資料類型的常式、程式、物件、部件、資料結構等。描述操作的順序並不意欲被解釋為限制,並且可以以任何順序及/或並行地組合任何數量的所描述的操作以實現這些程序。
另外,方法500可以在被配置有可執行指令的一或多個電腦系統的控制下執行,並且可以被實現為在一或多個處理器上共同執行的代碼(例如,可執行指令、一或複數個電腦程式、或一或多個應用),經由硬體來實現,或其組合。如上文所提到,代碼可以例如以包括可由一或多個處理器執行的多個指令的電腦程式的形式儲存在電腦可讀或機器可讀儲存媒體上。電腦可讀取儲存媒體或機器可讀儲存媒體可以是非暫時性的。
圖6圖示可以實現本文描述的各種技術的實例計算設備的實例計算設備架構600。例如,計算設備架構600可以實現在圖1中所示的計算系統100的至少一些部分。計算設備架構600的部件被示為使用連接605(諸如匯流排)彼此電通訊。實例計算設備架構600包括處理單元(CPU或處理器)610和計算設備連接605,計算設備連接605將包括計算設備記憶體615(例如,唯讀記憶體(ROM)620和隨機存取記憶體(RAM)625)的各種計算設備部件耦合到處理器610。
計算設備架構600可以包括高速記憶體的快取記憶體,快取記憶體直接與處理器610連接、靠近處理器610或作為處理器610的一部分整合。計算設備架構600可以將資料從記憶體615及/或存放裝置630複製到快取記憶體612,以供處理器610快速存取。以這種方式,快取記憶體可以提供效能提升,其避免處理器610在等待資料時延遲。這些模組和其他模組可以控制或被配置為控制處理器610以執行各種操作。其他計算設備記憶體615亦可以可供使用。記憶體615可以包括具有不同效能特性的多種不同類型的記憶體。
處理器610可以包括任何通用處理器以及硬體及/或軟體服務及/或被儲存在存放裝置630中的部件,其被配置為控制處理器610以及其中軟體指令被併入處理器設計中的專用處理器。處理器610可以是自包含系統,其包含多個核或處理器、匯流排、記憶體控制器、快取記憶體等。多核處理器可以是對稱的或非對稱的。
為了實現使用者與計算設備架構600的互動,輸入設備645可以表示任何數量的輸入機制,諸如用於語音的麥克風、用於手勢或圖形輸入的觸控式螢幕、鍵盤、滑鼠、運動輸入、語音等。輸出設備635亦可以是本發明所屬領域中具有通常知識者已知的多種輸出機制中的一或多個,諸如顯示器、投影儀、電視機、揚聲器設備。在一些情況下,多模態計算設備可以使得使用者能夠提供多種類型的輸入以與計算設備架構600進行通訊。通訊介面640通常可以控制和管理使用者輸入和計算設備輸出。對在任何特定硬體設定上的操作沒有限制,並且因此,此處的基本特徵可以容易地被改進的硬體或韌體配置(隨著它們被開發)所取代。
存放裝置630是非揮發性記憶體,並且可以是硬碟或可以儲存可由電腦存取的資料的其他類型的電腦可讀取媒體,諸如磁帶、快閃記憶卡、固態記憶體設備、數位多功能磁碟、盒式磁帶、隨機存取記憶體(RAM)165、唯讀記憶體(ROM)620、以及其的混合物。存放裝置630可以包括用於控制處理器610的軟體、韌體及/或邏輯。預期其他硬體或軟體模組。存放裝置630可以連接到計算設備連接605。在一個態樣中,執行特定功能的硬體模組可以包括被儲存在電腦可讀取媒體中的軟體部件,該軟體部件與執行該功能所必要的硬體部件(諸如處理器610、連接605、輸出設備635等)相連接。
術語「電腦可讀取媒體」包括但不限於可攜式或非可攜式存放裝置、光學存放裝置、以及能夠儲存、包含或攜帶指令及/或資料的各種其他媒體。電腦可讀取媒體可以包括資料可以被儲存在其中並且不包括以下各項的非暫時性媒體:無線地或者在有線連接上傳播的載波及/或暫時性電子訊號。非暫時性媒體的實例可以包括但不限於:磁碟或磁帶、諸如壓縮光碟(CD)或數位多功能光碟(DVD)之類的光學儲存媒體、快閃記憶體、記憶體或記憶體設備。電腦可讀取媒體可以具有被儲存在其上的代碼及/或機器可執行指令,代碼及/或機器可執行指令可以表示程序、函數、副程式、程式、常式、子常式、模組、套裝軟體、軟體部件、或者指令、資料結構或程式語句的任何組合。程式碼片段可以經由傳遞及/或接收資訊、資料、引數、參數或記憶體內容,來耦合到另一程式碼片段或硬體電路。可以經由包括記憶體共享、訊息傳遞、符記傳遞、網路傳輸等的任何適當的手段來傳遞、轉發或發送資訊、引數、參數、資料等。
在一些實施例中,電腦可讀存放裝置、媒體和記憶體可以包括包含位元串流等的電纜或無線訊號。然而,當提及時,非暫時性電腦可讀取儲存媒體明確地排除諸如能量、載波訊號、電磁波和訊號本身之類的媒體。
在以上描述中提供了具體細節以提供對本文提供的實施例和實例的透徹理解。然而,本發明所屬領域中具有通常知識者將理解的是,可以在沒有這些具體細節的情況下實施這些實施例。為了解釋清楚,在一些情況下,本文的技術可以被呈現為包括單獨的功能方塊,這些功能方塊包括設備、設備部件、以軟體體現的方法中的步驟或常式、或者硬體和軟體的組合。除了在各圖中所示及/或本文描述的部件之外,亦可以使用額外的部件。例如,電路、系統、網路、程序和其他部件可以以方塊圖形式被示為部件,以便不會在不必要的細節上模糊這些實施例。在其他情況下,公知的電路、程序、演算法、結構和技術可能被示為不具有不必要的細節,以便避免模糊這些實施例。
上文可能將各個實施例描述為程序或方法,該程序或方法被圖示為流程圖、流程示意圖、資料串流圖、結構圖或方塊圖。儘管流程圖可以將操作描述為順序的程序,但是這些操作中的許多操作可以並行或同時執行。另外,可以重新排列操作的次序。程序在其操作完成後被終止,但是可能具有未被包括在圖中的額外步驟。程序(process)可以對應於方法、函數、程序(procedure)、子常式、副程式等。當程序對應於函數時,其終止可以對應於該函數返回到調用函數或主函數。
根據上述實例的程序和方法可以使用電腦可執行指令來實現,電腦可執行指令被儲存在電腦可讀取媒體中或者以其他方式可從電腦可讀取媒體得到。此類指令可以包括例如指令或資料,指令或資料使得通用電腦、專用電腦或處理設備執行或者以其他方式將其配置為執行特定功能或特定的一組功能。可以經由網路存取所使用的電腦資源的部分。電腦可執行指令可以是例如二進位檔案、諸如組合語言之類的中間格式指令、韌體、原始程式碼。可以用於儲存指令、所使用的資訊及/或在根據所描述的實例的方法期間建立的資訊的電腦可讀取媒體的實例包括磁碟或光碟、快閃記憶體、設置有非揮發性記憶體的USB設備、網路存放裝置等。
實現根據這些揭示內容的程序和方法的設備可以包括硬體、軟體、韌體、中介軟體、微代碼、硬體描述語言或其任何組合,並且可以採用多種形狀因數中的任何一種。當用軟體、韌體、中介軟體或微代碼來實現時,用於執行必要任務的程式碼或程式碼片段(例如,電腦程式產品)可以被儲存在電腦可讀或機器可讀取媒體中。處理器可以執行必要任務。形狀因數的典型實例包括膝上型電腦、智慧型電話、行動電話、平板設備或其他小型形狀因數的個人電腦、個人數位助理、機架式設備、獨立設備等。本文描述的功能亦可以體現在周邊設備或外掛程式卡中。經由另外的舉例,這種功能亦可以在單個設備中執行的不同晶片或不同程序之間的電路板上實現。
指令、用於傳送此類指令的媒體、用於執行它們的計算資源以及用於支援此類計算資源的其他結構是用於提供在本案內容中描述的功能的實例模組。
在前面的描述中,參考本案的特定實施例描述了本案的各態樣,但是本發明所屬領域中具有通常知識者將認識到,本案不限於此。因此,儘管本文已經詳細描述了本案的說明性實施例,但是應理解的是,可以以其他方式不同地體現和採用本發明構思,並且所附的請求項意欲被解釋為包括此類變型,除了由現有技術限制的變型。可以單獨地或共同地使用上述應用的各個特徵和態樣。此外,在不脫離本說明書的更寬泛的精神和範疇的情況下,實施例可以在除了本文描述的環境和應用之外的任何數量的環境和應用中使用。因此,說明書和附圖被認為是說明性的而不是限制性的。為了說明的目的,以特定順序描述了方法。應當明白的是,在替代實施例中,可以以與所描述的順序不同的順序來執行該等方法。
本發明所屬領域中具有通常知識者將明白的是,在不脫離本說明書的範疇的情況下,本文中使用的小於(「<」)和大於(「>」)符號或術語可以分別用小於或等於(「≦」)以及大於或等於(「≧」)符號來替換。
在將部件描述為「被配置為」執行某些操作的情況下,這種配置可以例如經由以下方式來實現:將電路或其他硬體設計為執行該操作,將可程式設計電路(例如,微處理器或其他適當的電路)程式設計為執行該操作,或其任何組合。
短語「耦合到」代表直接或間接地實體連接到另一部件的任何部件、及/或直接或間接地與另一部件通訊的任何部件(例如,經由有線或無線連接及/或其他適當的通訊介面而連接到另一部件)。
記載集合中的「至少一個」及/或集合中的「一或多個」的請求項語言或其他語言指示該集合中的一個成員或者該集合中的多個成員(以任何組合)滿足該請求項。例如,記載「A和B中的至少一個」或「A或B中的至少一個」的請求項語言意指A、B、或者A和B。在另一實例中,記載「A、B和C中的至少一個」或「A、B或C中的至少一個」的請求項語言意指A、B、C、或者A和B、或者A和C、或者B和C、或者A和B和C。語言集合中的「至少一個」及/或集合中的「一或多個」並不將該集合限制為在該集合中列出的項目。例如,記載「A和B中的至少一個」或「A或B中的至少一個」的請求項語言可以意指A、B或者A和B,並且可以另外包括未在A和B的集合中列出的項目。
結合本文揭示的實例描述的各種說明性的邏輯區塊、模組、電路和演算法步驟可以被實現為電子硬體、電腦軟體、韌體或其組合。為了清楚地說明硬體和軟體的這種可互換性,上面已經對各種說明性的部件、方塊、模組、電路和步驟圍繞其功能進行了整體描述。至於這種功能被實現為硬體還是軟體取決於特定的應用和被施加在整個系統上的設計約束。具有通常知識者可以針對每種特定應用以不同的方式來實現所描述的功能,但是這種實現決策不應當被解釋為導致脫離本案的範疇。
本文描述的技術亦可以用電子硬體、電腦軟體、韌體或其任何組合來實現。此類技術可以在各種設備中的任何一種中實現,諸如通用電腦、無線通訊設備手機或具有多種用途(包括在無線通訊設備手機和其他設備中的應用)的積體電路設備。被描述為模組或部件的任何特徵皆可以在整合邏輯設備中一起實現,或者分別作為個別但是可交互動操作的邏輯設備來實現。若用軟體來實現,則該等技術可以至少部分地由電腦可讀取資料儲存媒體來實現,電腦可讀取資料儲存媒體包括程式碼,程式碼包括在被執行時執行上述方法、演算法及/或操作中的一項或多項的指令。電腦可讀取資料儲存媒體可以形成電腦程式產品的一部分,電腦程式產品可以包括包裝材料。電腦可讀取媒體可以包括記憶體或資料儲存媒體,諸如隨機存取記憶體(RAM)(諸如同步動態隨機存取記憶體(SDRAM))、唯讀記憶體(ROM)、非揮發性隨機存取記憶體(NVRAM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、快閃記憶體、磁或光資料儲存媒體等。補充或替代地,該等技術可以至少部分地由以指令或資料結構的形式攜帶或傳送程式碼並且可以由電腦存取、讀取及/或執行的電腦可讀通訊媒體(諸如傳播的訊號或波)來實現。
程式碼可以由處理器執行,處理器可以包括一或多個處理器,諸如一或多個數位訊號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、現場可程式設計邏輯陣列(FPGA)或其他等效的整合或個別邏輯電路。此類處理器可以被配置為執行在本案內容中描述的任何技術。通用處理器可以是微處理器,但是在替代方式中,處理器可以是任何習知的處理器、控制器、微控制器或狀態機。處理器亦可以被實現為計算設備的組合,例如,DSP和微處理器的組合、多個微處理器、一或多個微處理器與DSP核的結合、或任何其他此類配置。因此,如本文所使用的術語「處理器」可以代表任何前述結構、前述結構的任何組合、或適於實現本文描述的技術的任何其他結構或裝置。
本案內容的說明性態樣包括:
態樣1:一種處理至少一個命令的方法,包括:由圖形處理單元(GPU)接收一或多個命令,該一或多個命令包括使用處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的第一值;由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的第二值;及由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的比較來決定該一或多個命令的有效性。
態樣2:根據態樣1之方法,其中決定該一或多個命令的該有效性包括:決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值相匹配;及決定該一或多個命令是有效的。
態樣3:根據態樣2之方法,其中決定該一或多個命令是有效的導致以下各項中的至少一項:決定該一或多個命令被授權以由該GPU執行,決定該一或多個命令的完整性,以及決定該一或多個命令不包括未經授權的改動。
態樣4:根據態樣2或3中任一項所述的方法,亦包括:基於該一或多個命令是有效的,授權在該GPU處對該一或多個命令的執行。
態樣5:根據態樣1之方法,其中決定該一或多個命令的該有效性包括:決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值不匹配;及決定該一或多個命令是無效的。
態樣6:根據態樣5之方法,其中決定該一或多個命令是無效的導致以下各項中的至少一項:決定該一或多個命令未被授權以由該GPU執行,以及決定該一或多個命令包括一或多個未經授權的改動。
態樣7:根據態樣5或6中任一項所述的方法,亦包括:基於該一或多個命令是無效的,防止以下各項中的至少一項:在該GPU處對該一或多個命令的執行,以及在該GPU處的該一或多個命令的當前執行的完成。
態樣8:根據態樣1至7中任一項所述的方法,其中該一或多個命令指定要由該GPU執行的一或多個操作,並且其中該一或多個命令的該有效性是在該一或多個命令和與該一或多個命令相關聯的軟體應用中的至少一項的執行時執行期間決定的。
態樣9:根據態樣1至8中任一項所述的方法,其中該第一值和該第二值中的至少一項是基於該一或多個命令的一或多個特性來產生的,該一或多個特性包括以下各項中的至少一項:命令數量、一或多個類型的命令的數量、該一或多個命令中的至少一個命令的內容、以及在該一或多個命令中包括的一或多個間接指標,該一或多個間接指標包括對一或多個額外命令的一或多個引用。
態樣10:根據態樣1至9中任一項所述的方法,其中該一或多個驗證簽名和該第一值是由使用者空間設備驅動程式和核心空間驅動器中的至少一者產生的,並且其中該一或多個額外驗證簽名和該第二值是由以下各者中的至少一者產生的:與該GPU相關聯的命令處理器、與該GPU相關聯的著色器處理器、以及被授權以建立命令串流和操縱命令串流中的至少一個操作的處理器。
態樣11:根據態樣10之方法,其中該一或多個命令的該有效性是由該命令處理器和該著色器處理器中的至少一者來決定的。
態樣12:根據態樣1至11中任一項所述的方法,其中該一或多個命令包括以下各項中的至少一項:命令串流、著色器程式、引用該著色器程式的命令、以及針對記憶體中的與該一或多個命令相關聯的一或多個位置的一或多個指標。
態樣13:根據態樣1至12中任一項所述的方法,其中該一或多個命令的該有效性是在與該一或多個命令相關聯的軟體應用的執行時執行期間以及在該一或多個命令的執行和與該一或多個命令相關聯的一或多個操作的完成中的至少一項之前決定的。
態樣14:根據態樣1至13中任一項所述的方法,其中該一或多個命令包括命令串流,該命令串流包括複數個命令,並且該一或多個驗證簽名包括指示當該一或多個驗證簽名被決定為無效時應當拒絕該一或多個命令的執行的命令和指令中的至少一項。
態樣15:一種用於處理至少一個命令的裝置,包括:記憶體;及耦合到該記憶體的一或多個處理器,該一或多個處理器被配置為:經由圖形處理單元(GPU)接收一或多個命令,該一或多個命令包括使用處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的第一值;經由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的第二值;及經由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的比較來決定該一或多個命令的有效性。
態樣16:根據態樣15之裝置,其中決定該一或多個命令的該有效性包括:決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值相匹配;及決定該一或多個命令是有效的。
態樣17:根據態樣16之裝置,其中決定該一或多個命令是有效的包括以下各項中的至少一項:決定該一或多個命令被授權以由該GPU執行,決定該一或多個命令的完整性,以及決定該一或多個命令不包括未經授權的改動。
態樣18:根據態樣16或17中任一項所述的裝置,該一或多個處理器被配置為:基於該一或多個命令是有效的,授權在該GPU處對該一或多個命令的執行。
態樣19:根據態樣15之裝置,其中決定該一或多個命令的該有效性包括:決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值不匹配;及決定該一或多個命令是無效的。
態樣20:根據態樣19之裝置,其中決定該一或多個命令是無效的包括以下各項中的至少一項:決定該一或多個命令未被授權以由該GPU執行,以及決定該一或多個命令包括一或多個未經授權的改動。
態樣21:根據態樣19或20中任一項所述的裝置,該一或多個處理器被配置為:基於該一或多個命令是無效的,防止以下各項中的至少一項:在該GPU處對該一或多個命令的執行,以及在該GPU處的該一或多個命令的當前執行的完成。
態樣22:根據態樣15至21中任一項所述的裝置,其中該一或多個命令指定要由該GPU執行的一或多個操作,並且其中該一或多個命令的該有效性是在該一或多個命令和與該一或多個命令相關聯的軟體應用中的至少一項的執行時執行期間決定的。
態樣23:根據態樣15至22中任一項所述的裝置,其中該第一值和該第二值中的至少一項是基於該一或多個命令的一或多個特性來產生的,該一或多個特性包括以下各項中的至少一項:命令的數量、一或多個類型的命令的數量、該一或多個命令中的至少一個命令的內容、以及在該一或多個命令中包括的一或多個間接指標,該一或多個間接指標包括對一或多個額外命令的一或多個引用。
態樣24:根據態樣15至23中任一項所述的裝置,其中該一或多個驗證簽名和該第一值是由以下各者中的至少一者產生的:使用者空間設備驅動程式、核心空間驅動器、以及被授權以建立命令串流和操縱命令串流中的至少一個操作的處理器,並且其中該一或多個額外驗證簽名和該第二值是由以下各者中的至少一者產生的:與該GPU相關聯的命令處理器以及與該GPU相關聯的著色器處理器。
態樣25:根據態樣24之裝置,其中該一或多個命令的該有效性是由該命令處理器和該著色器處理器中的至少一者來決定的。
態樣26:根據態樣15至25中任一項所述的裝置,其中該一或多個命令包括以下各項中的至少一項:命令串流、著色器程式、引用該著色器程式的命令、以及針對記憶體中的與該一或多個命令相關聯的一或多個位置的一或多個指標。
態樣27:根據態樣15至26中任一項所述的裝置,其中該一或多個命令的該有效性是在與該一或多個命令相關聯的軟體應用的執行時執行期間以及在該一或多個命令的執行和與該一或多個命令相關聯的一或多個操作的完成中的至少一項之前決定的。
態樣28:根據態樣15至27中任一項所述的裝置,其中該裝置為行動設備。
態樣29:根據態樣15至28中任一項所述的裝置,包括該GPU和顯示設備。
態樣30:一種具有儲存在其上的非暫時性電腦可讀取媒體,該等指令在由一或多個處理器執行時使得該一或多個處理器執行態樣1至29中任一項所述的操作。
態樣31:一種用於處理至少一個命令的裝置,包括用於執行根據態樣1至29中任一項所述的操作的一或多個單元。
100:計算系統
102:影像感測器
104:感測器
106:周邊設備
108:儲存裝置
110:記憶體
120:計算部件
122:中央處理單元(CPU)
124:圖形處理單元(GPU)
126:數位訊號處理器(DSP)
128:影像訊號處理器(ISP)
130:軟體應用
200:圖形渲染系統
202:驅動器
204:緩衝器
208:著色器系統
210:著色器處理器
212:著色器程式
214:命令處理器
216:記憶體
218:間接命令緩衝器
300:系統流程
302:驅動器
304:命令串流
306:命令串流
310:間接命令緩衝器(ICB)
312:簽名
314:簽名
316:間接指針
320:間接命令緩衝器(ICB)
322:簽名
324:簽名
400:系統流程
402:驅動器
404:著色器程式
408:簽名
410:簽名
420:系統流程
422:命令串流
424:命令
500:方法
502:方塊
504:方塊
506:方塊
600:計算設備架構
605:連接
610:處理單元(CPU或處理器)
612:快取記憶體
615:隨機存取記憶體(RAM)
620:唯讀記憶體(ROM)
625:隨機存取記憶體(RAM)
630:存放裝置
635:輸出設備
640:通訊介面
645:輸入設備
下文參照以下附圖來詳細地描述本案的說明性實例:
圖1是示出根據本案內容的一些實例的實例影像處理系統的方塊圖;
圖2是示出根據本案內容的一些實例的圖形渲染系統的實例部件的圖;
圖3是示出根據本案內容的一些實例的用於實現簽名命令串流的實例系統流程的圖;
圖4A是根據本案內容的一些實例的用於編譯具有驗證簽名的著色器程式的實例系統流程的圖;
圖4B是根據本案內容的一些實例的用於基於驗證簽名來驗證著色器程式的實例系統流程的圖;
圖5是根據本案內容的一些實例的用於簽名和執行影像處理單元命令的方法的實例的流程圖;
圖6圖示根據本案內容的一些實例的實例計算設備架構。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
110:記憶體
122:中央處理單元(CPU)
124:圖形處理單元(GPU)
130:軟體應用
200:圖形渲染系統
202:驅動器
204:緩衝器
208:著色器系統
210:著色器處理器
212:著色器程式
214:命令處理器
216:記憶體
218:間接命令緩衝器
Claims (30)
- 一種處理至少一個命令的方法,包括以下步驟: 由一圖形處理單元(GPU)接收一或多個命令,該一或多個命令包括使用一處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的一第一值; 由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的一第二值;及 由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的一比較來決定該一或多個命令的一有效性。
- 根據請求項1之方法,其中決定該一或多個命令的該有效性包括以下步驟: 決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值相匹配;及 決定該一或多個命令是有效的。
- 根據請求項2之方法,其中決定該一或多個命令是有效的導致以下各項中的至少一項:決定該一或多個命令被授權以由該GPU執行,決定該一或多個命令的一完整性,以及決定該一或多個命令不包括未經授權的改動。
- 根據請求項2之方法,亦包括以下步驟: 基於該一或多個命令是有效的,授權在該GPU處對該一或多個命令的執行。
- 根據請求項1之方法,其中決定該一或多個命令的該有效性包括以下步驟: 決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值不匹配;及 決定該一或多個命令是無效的。
- 根據請求項5之方法,其中決定該一或多個命令是無效的導致以下各項中的至少一項:決定該一或多個命令未被授權以由該GPU執行,以及決定該一或多個命令包括一或多個未經授權的改動。
- 根據請求項5之方法,亦包括以下步驟: 基於該一或多個命令是無效的,防止以下各項中的至少一項:在該GPU處對該一或多個命令的執行,以及在該GPU處的該一或多個命令的一當前執行的完成。
- 根據請求項1之方法,其中該一或多個命令指定要由該GPU執行的一或多個操作,並且其中該一或多個命令的該有效性是在該一或多個命令和與該一或多個命令相關聯的一軟體應用中的至少一項的一執行時執行期間決定的。
- 根據請求項1之方法,其中該第一值和該第二值中的至少一項是基於該一或多個命令的一或多個特性來產生的,該一或多個特性包括以下各項中的至少一項:命令的一數量、一或多個類型的命令的一數量、該一或多個命令中的至少一個命令的一內容、以及在該一或多個命令中包括的一或多個間接指標,該一或多個間接指標包括對一或多個額外命令的一或多個引用。
- 根據請求項1之方法,其中該一或多個驗證簽名和該第一值是由一使用者空間設備驅動程式和一核心空間驅動器中的至少一者產生的,並且其中該一或多個額外驗證簽名和該第二值是由以下各者中的至少一者產生的:與該GPU相關聯的一命令處理器、與該GPU相關聯的一著色器處理器、以及被授權以建立命令串流和操縱命令串流中的至少一個操作的一處理器。
- 根據請求項10之方法,其中該一或多個命令的該有效性是由該命令處理器和該著色器處理器中的至少一者來決定的。
- 根據請求項1之方法,其中該一或多個命令包括以下各項中的至少一項:一命令串流、一著色器程式、引用該著色器程式的一命令、以及針對記憶體中的與該一或多個命令相關聯的一或多個位置的一或多個指標。
- 根據請求項1之方法,其中該一或多個命令的該有效性是在與該一或多個命令相關聯的一軟體應用的一執行時執行期間以及在該一或多個命令的一執行和與該一或多個命令相關聯的一或多個操作的一完成中的至少一項之前決定的。
- 根據請求項1之方法,其中該一或多個命令包括一命令串流,該命令串流包括複數個命令,並且該一或多個驗證簽名包括指示當該一或多個驗證簽名被決定為無效時應當拒絕該一或多個命令的執行的一命令和一指令中的至少一項。
- 一種用於處理至少一個命令的裝置,包括: 記憶體;及 耦合到該記憶體的一或多個處理器,該一或多個處理器被配置為: 經由一圖形處理單元(GPU)接收一或多個命令,該一或多個命令包括使用一處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的一第一值; 經由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的一第二值;及 經由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的一比較來決定該一或多個命令的一有效性。
- 根據請求項15之裝置,其中決定該一或多個命令的該有效性包括: 決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值相匹配;及 決定該一或多個命令是有效的。
- 根據請求項16之裝置,其中決定該一或多個命令是有效的包括以下各項中的至少一項:決定該一或多個命令被授權以由該GPU執行,決定該一或多個命令的一完整性,以及決定該一或多個命令不包括未經授權的改動。
- 根據請求項16之裝置,該一或多個處理器被配置為: 基於該一或多個命令是有效的,授權在該GPU處對該一或多個命令的執行。
- 根據請求項15之裝置,其中決定該一或多個命令的該有效性包括: 決定與該一或多個驗證簽名相關聯的該第一值與同該一或多個額外驗證簽名相關聯的該第二值不匹配;及 決定該一或多個命令是無效的。
- 根據請求項19之裝置,其中決定該一或多個命令是無效的包括以下各項中的至少一項:決定該一或多個命令未被授權以由該GPU執行,以及決定該一或多個命令包括一或多個未經授權的改動。
- 根據請求項19之裝置,該一或多個處理器被配置為: 基於該一或多個命令是無效的,防止以下各項中的至少一項:在該GPU處對該一或多個命令的執行,以及在該GPU處的該一或多個命令的一當前執行的完成。
- 根據請求項15之裝置,其中該一或多個命令指定要由該GPU執行的一或多個操作,並且其中該一或多個命令的該有效性是在該一或多個命令和與該一或多個命令相關聯的一軟體應用中的至少一項的一執行時執行期間決定的。
- 根據請求項15之裝置,其中該第一值和該第二值中的至少一項是基於該一或多個命令的一或多個特性來產生的,該一或多個特性包括以下各項中的至少一項:命令的一數量、一或多個類型的命令的一數量、該一或多個命令中的至少一個命令的一內容、以及在該一或多個命令中包括的一或多個間接指標,該一或多個間接指標包括對一或多個額外命令的一或多個引用。
- 根據請求項15之裝置,其中該一或多個驗證簽名和該第一值是由以下各者中的至少一者產生的:一使用者空間設備驅動程式、一核心空間驅動器、以及被授權以建立命令串流和操縱命令串流中的至少一個操作的一處理器,並且其中該一或多個額外驗證簽名和該第二值是由以下各者中的至少一者產生的:與該GPU相關聯的一命令處理器、以及與該GPU相關聯的一著色器處理器。
- 根據請求項24之裝置,其中該一或多個命令的該有效性是由該命令處理器和該著色器處理器中的至少一者來決定的。
- 根據請求項15之裝置,其中該一或多個命令包括以下各項中的至少一項:一命令串流、一著色器程式、引用該著色器程式的一命令、以及針對記憶體中的與該一或多個命令相關聯的一或多個位置的一或多個指標。
- 根據請求項15之裝置,其中該一或多個命令的該有效性是在與該一或多個命令相關聯的一軟體應用的一執行時執行期間以及在該一或多個命令的一執行和與該一或多個命令相關聯的一或多個操作的一完成中的至少一項之前決定的。
- 根據請求項15之裝置,其中該裝置為一行動設備。
- 根據請求項15之裝置,包括該GPU和一顯示設備。
- 一種具有儲存在其上的指令的非暫時性電腦可讀取媒體,該等指令在由一或多個處理器執行時使得該一或多個處理器進行以下操作: 經由一圖形處理單元(GPU)接收一或多個命令,該一或多個命令包括使用一處理器而產生的一或多個驗證簽名,該一或多個驗證簽名之每一者驗證簽名包括基於該一或多個命令而產生的一第一值; 經由該GPU產生與該一或多個命令相關聯的一或多個額外驗證簽名,其中該一或多個額外驗證簽名之每一者驗證簽名包括由該GPU基於該一或多個命令而產生的一第二值;及 經由該GPU基於對該一或多個驗證簽名和該一或多個額外驗證簽名的一比較來決定該一或多個命令的一有效性。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/070,734 | 2020-10-14 | ||
US17/070,734 US20220114284A1 (en) | 2020-10-14 | 2020-10-14 | Signed command stream and command execution |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202219747A true TW202219747A (zh) | 2022-05-16 |
Family
ID=78135182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110135108A TW202219747A (zh) | 2020-10-14 | 2021-09-22 | 簽名命令串流和命令執行 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220114284A1 (zh) |
EP (1) | EP4229535A1 (zh) |
KR (1) | KR20230088354A (zh) |
CN (1) | CN116261724A (zh) |
BR (1) | BR112023006292A2 (zh) |
TW (1) | TW202219747A (zh) |
WO (1) | WO2022081308A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120176386A1 (en) * | 2011-01-10 | 2012-07-12 | Hutchins Edward A | Reducing recurrent computation cost in a data processing pipeline |
US10771448B2 (en) * | 2012-08-10 | 2020-09-08 | Cryptography Research, Inc. | Secure feature and key management in integrated circuits |
US9305326B2 (en) * | 2013-12-26 | 2016-04-05 | Industrial Technology Research Institute | Apparatus and method for tile elimination |
US10297003B2 (en) * | 2015-09-21 | 2019-05-21 | Qualcomm Incorporated | Efficient saving and restoring of context information for context switches |
US10404470B2 (en) * | 2017-01-13 | 2019-09-03 | Microsoft Technology Licensing, Llc | Signature verification of field-programmable gate array programs |
US11496314B2 (en) * | 2019-12-18 | 2022-11-08 | Intel Corporation | Integrity protected command buffer execution |
-
2020
- 2020-10-14 US US17/070,734 patent/US20220114284A1/en active Pending
-
2021
- 2021-09-20 BR BR112023006292A patent/BR112023006292A2/pt unknown
- 2021-09-20 CN CN202180068233.3A patent/CN116261724A/zh active Pending
- 2021-09-20 WO PCT/US2021/051131 patent/WO2022081308A1/en unknown
- 2021-09-20 EP EP21791162.7A patent/EP4229535A1/en active Pending
- 2021-09-20 KR KR1020237011762A patent/KR20230088354A/ko unknown
- 2021-09-22 TW TW110135108A patent/TW202219747A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
EP4229535A1 (en) | 2023-08-23 |
KR20230088354A (ko) | 2023-06-19 |
BR112023006292A2 (pt) | 2023-05-09 |
US20220114284A1 (en) | 2022-04-14 |
WO2022081308A1 (en) | 2022-04-21 |
CN116261724A (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102546601B1 (ko) | 정적 바이너리 계측을 사용하여 커널 제어-흐름 무결성을 보호하기 위한 방법 및 장치 | |
EP3807797B1 (en) | Pointer authentication and dynamic switching between pointer authentication regimes | |
US8997230B1 (en) | Hierarchical data security measures for a mobile device | |
CN104050416A (zh) | 显示表面的安全绘制 | |
US20130067236A1 (en) | Systems for validating hardware devices | |
US8862892B2 (en) | System and method for detecting a security compromise on a device | |
US9727737B1 (en) | Trustworthy indication of software integrity | |
US20150033031A1 (en) | System and Method for Detecting a Security Compromise on a Device | |
KR102180529B1 (ko) | 어플리케이션 접근 제어 방법 및 이를 구현하는 전자 장치 | |
US10205732B2 (en) | Method, apparatus, system, and non-transitory medium for protecting a file | |
JP2018521403A (ja) | バイナリ併合装置、その方法及び該コンピュータプログラム | |
TW202219747A (zh) | 簽名命令串流和命令執行 | |
US20150178498A1 (en) | Secure attention for mobile devices | |
KR20200006258A (ko) | 데이터 변조 판단 방법 및 이를 지원하는 전자 장치 | |
US9952902B1 (en) | Determining a set of application resources | |
US11698948B2 (en) | Systems and methods for validating licenses | |
CN109145528A (zh) | 一种移动终端与摄像装置的调用拦截方法 | |
US11809550B2 (en) | Electronic device and control method therefor | |
US20230177154A1 (en) | Sparse Encodings for Control Signals | |
JP2024515450A (ja) | 読み取り専用メモリ(rom)のセキュリティ | |
EP4281891A1 (en) | Read-only memory (rom) security | |
TW202407562A (zh) | 安全加密協同處理器 | |
CN108970122A (zh) | 防止外挂的方法、装置、终端及存储介质 |