TW201411550A - 執行對於圖像硬體之排程操作技術 - Google Patents

執行對於圖像硬體之排程操作技術 Download PDF

Info

Publication number
TW201411550A
TW201411550A TW102124368A TW102124368A TW201411550A TW 201411550 A TW201411550 A TW 201411550A TW 102124368 A TW102124368 A TW 102124368A TW 102124368 A TW102124368 A TW 102124368A TW 201411550 A TW201411550 A TW 201411550A
Authority
TW
Taiwan
Prior art keywords
image
cpu
scheduler
computing device
engine
Prior art date
Application number
TW102124368A
Other languages
English (en)
Other versions
TWI601093B (zh
Inventor
Balaji Vembu
Aditya Navale
Murali Ramadoss
David I Standring
Kritika Bala
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201411550A publication Critical patent/TW201411550A/zh
Application granted granted Critical
Publication of TWI601093B publication Critical patent/TWI601093B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • User Interface Of Digital Computer (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)

Abstract

一種用以執行用於圖像硬體之排程操作的運算裝置於此處被說明。該電腦運算包含一中央處理單元(CPU),其被組態以執行一應用。該電腦運算也包含一圖像排程器,其被組態以無關於該CPU而獨立地操作。該圖像排程器被組態以從在該CPU上執行之一應用而接收有關工作負擔的工作佇列,並且依該等工作佇列為基礎而執行用於一些圖像引擎之任何一者的排程操作。

Description

執行對於圖像硬體之排程操作技術 發明領域
本發明一般係有關執行用於圖像引擎之排程操作。更明確地說,本發明係有關經由一圖像排程器,無關於中央處理單元(CPU)而獨立地執行用於一運算裝置的圖像引擎之排程操作。
發明背景
於一運算裝置中之圖像子系統硬體一般包含許多獨立之圖像引擎。習知如一圖像排程器之軟體可被使用來排程該圖像引擎以執行在硬體上執行之圖像工作負擔。但是,依據目前技術,該圖像排程器係藉由該電腦運算之中央處理單元(CPU)而被執行。在CPU上執行該圖像排程器可能由於在該圖像引擎以及該CPU之間的通訊延遲而施加有效的潛在負擔,其經由中斷以及記憶體對映輸入/輸出(MMIO)為基礎的程式來通訊。此外,在該CPU以及該圖像引擎之間的此等通訊可能導致大量的功率消耗,因為該CPU可能為了執行排程操作而被迫間歇地自低功率狀態切換至高功率狀態。
依據本發明之一實施例,係特地提出一種運算裝置,其包括:一中央處理單元(CPU),該CPU被組態以執行一應用;一圖像排程器,其被組態以無關於該CPU而獨立地操作,該圖像排程器被組態以進行下列動作:從在該CPU上執行之應用接收有關工作負擔的工作佇列;並且依據該等工作佇列為基礎而執行對於複數個圖像引擎之任何一者的排程操作。
100‧‧‧運算裝置
102‧‧‧CPU
104‧‧‧記憶體
106‧‧‧匯流排
108‧‧‧應用
110‧‧‧儲存裝置
112‧‧‧圖像排程器
114‧‧‧圖像微控制器
115‧‧‧圖像排程軟體
116‧‧‧圖像硬體
118‧‧‧中介層
202‧‧‧圖像子系統
204‧‧‧快取
206‧‧‧可程控中斷控制器
208‧‧‧中斷聚集器
210‧‧‧前端匯流排介面
212‧‧‧訊息通道介面
214‧‧‧位址解碼器
216‧‧‧圖像轉譯門鈴單元
218‧‧‧圖像引擎
218A‧‧‧形成圖像引擎
218B‧‧‧MFX圖像引擎
218C‧‧‧VE箱圖像引擎
218D‧‧‧WD箱圖像引擎
218E‧‧‧傳圖函數圖像引擎
220‧‧‧顯示引擎
222‧‧‧顯示裝置
224‧‧‧圖像記憶體
226‧‧‧圖像記憶體介面
228‧‧‧直接記憶體存取引擎
230‧‧‧輸入/輸出記憶體管理單元
232‧‧‧靜態隨機存取記憶體
234‧‧‧密碼確認區塊
236‧‧‧電力管理單元
238‧‧‧計時器
240‧‧‧開機唯讀記憶體
300-306‧‧‧指示箭號
308‧‧‧執行列表
310‧‧‧命令訊流器
400‧‧‧排程及執行工作佇列方法之流程圖
402-410‧‧‧排程及執行工作佇列方法之處理步驟
500‧‧‧位址空間
502‧‧‧圖像記憶體對映輸入/輸出
504‧‧‧LAPIC MMIO
506‧‧‧GVA
508‧‧‧HPA
510‧‧‧圖像轉譯記憶體介面
600‧‧‧工作負擔狀態之流程圖
602‧‧‧提交狀態
604‧‧‧正常完成
606‧‧‧完成狀態
608‧‧‧翻頁故障時之等待
610‧‧‧等待狀態
612‧‧‧翻頁完成/故障被修正
614‧‧‧備妥狀態
616‧‧‧錯誤
618‧‧‧錯誤狀態
620‧‧‧故障修正錯誤
700‧‧‧執行圖像硬體之排程操 作方法流程圖
702-704‧‧‧執行圖像硬體之排程操作流程步驟
800‧‧‧電腦可讀取媒體
802‧‧‧處理器
804‧‧‧電腦匯流排
806‧‧‧圖像排程模組
808‧‧‧中斷控制模組
900‧‧‧系統
902‧‧‧平臺
904、1004‧‧‧顯示器
906‧‧‧內容服務裝置
908‧‧‧內容傳送裝置
910‧‧‧導航控制器
912‧‧‧晶片組
914‧‧‧處理器
916‧‧‧記憶體裝置
918‧‧‧儲存裝置
920‧‧‧無線電
922‧‧‧使用者介面
924‧‧‧網路
1000‧‧‧小外形裝置
1002‧‧‧外殼
1006‧‧‧輸入/輸出裝置
1008‧‧‧天線
1010‧‧‧導航特點
圖1是依據實施例可被使用之運算裝置的方塊圖;圖2是包含運算裝置之圖像子系統內部構件之運算裝置的方塊圖;圖3是展示運算裝置之圖像排程器功能的方塊圖;圖4是展示用以排程以及執行工作佇列之方法的處理程序流程圖;圖5是依據實施例可被使用的位址空間範例之方塊圖;圖6是展示對於一工作負擔之一些可能狀態之流程圖;圖7是展示用以執行對於圖像硬體之排程操作方法的處理程序流程圖;圖8是展示儲存用以執行對於圖像硬體之排程操作的程式碼之實體、非暫態電腦可讀取媒體的方塊圖;圖9是用以實作一圖像子系統的系統範例之方塊圖;以及圖10是圖9之系統可被實施於其中之小外形裝置之分解圖。
相同號碼被使用於全文之揭示以及圖形中以指示相同的構件以及特點。100序列中之號碼係指示初始被發現於圖1中之特點;200序列中之號碼係指示初始被發現於圖2中之特點;等等。
較佳實施例之詳細說明
如上面之討論,此處說明之實施例係有關經由圖像排程器,無關於中央處理單元(CPU),而獨立地執行用於運算裝置的圖像引擎之排程操作。圖像排程器可包含一圖像微控制器,其是可依從運算裝置CPU上執行之一個或多個應用所接收的工作負擔為基礎而執行排程操作。例如,圖像排程器可動態地決定用以執行各特定工作負擔的一適當之圖像引擎。此外,圖像排程器可決定用以執行各個圖像引擎之工作負擔的一順序。接著,圖像排程器可傳送該等工作負擔,以及工作負擔執行順序,至用於執行之適當的圖像引擎。於各種實施例中,圖像排程器藉由自運算裝置之CPU的微少輸入而執行此等排程操作。
於下面的說明以及申請專利範圍中,用語“被耦合”以及“被連接”,以及它們的衍生詞,可被使用。應了解,這些名詞不是有意地作為彼此之同義字。反而,於特定實施例中,“被連接”可被使用以指示二個或更多個元件是彼此以直接方式實際或電氣接觸。“耦合”可表示二個或更多個元件是以實際或電氣方式接觸。但是,“耦合”也可表示二個或更多個元件不是彼此以直接方式接觸,但是仍然可 彼此協同操作或互動。
一些實施例可以一硬體、韌體以及軟體或其之組合被實作。一些實施例也可被實作如被儲存在一機器可讀取媒體上之指令,其可藉由一運算平臺被讀取以及被執行以執行此處說明之操作。一機器可讀取媒體可包含任何機構,該機構用以藉由一機器(例如,一電腦)可讀取之一形式而儲存或發送資訊。例如,一機器可讀取媒體可包含唯讀記憶體(ROM);隨機存取記憶體(RAM);磁碟儲存媒體;光學儲存媒體;快閃記憶體裝置;或電氣、光學、聲學或其他形式之傳輸信號,例如,載波、紅外線信號、數位信號、或尤其是發送及/或接收信號之界面。
一實施例是一實作例或範例。於說明文中關於“一實施例”、“一個實施例”、“一些實施例”、“各種實施例”、或“其他實施例”意謂著有關實施例所述的一特定特點、結構或特性被包含在至少一些實施例中,但不必定得是本發明的所有實施例。“一實施例”、“一個實施例”、或“一些實施例”之各種出現不必定得是都關連於相同實施例。
並非於此處被說明以及被展示的所有構件、特點、結構、特性等等,皆需要被包含在一特定的實施例或一些實施例中。如果說明文中聲明一構件、特點、結構、或特性,例如,“可以”、“可”、“可能”或“能夠”被包含,則該特定的構件、特點、結構或特性不是得必需被包含。如果說明文或申請專利範圍中提到“一”或“一個”元件,其不表示僅有一個元件。如果說明文或申請專利範圍中提到“一 另外的”元件,其不排除有多於一個的另外元件。
應注意到,雖然一些實施例已參照特定實作例被說明,依據一些實施例之其他實作例是可能的。另外地,被展示於圖形中及/或於此被說明之電路元件或其他特點的配置及/或順序不需要以被展示以及被說明之特定方式被配置。依據一些實施例,許多其他配置是可能。
於一圖形被展示之各系統中,一些情況中之元件可以各具有一相同的參考數碼或一不同的參考數碼以建議所呈現之元件可以是不同及/或相似的。但是,一元件可具有足夠彈性以具有不同的實作而與藉由於此處被展示或被說明之一些或所有的系統工作。於圖形中展示之各種元件可以是相同或不同的。哪一者被稱為一第一元件以及哪一者被稱為一第二元件是任意地。
圖1是依據實施例之可被使用的運算裝置100之方塊圖。運算裝置100可以是,例如,膝上型電腦、桌上型電腦、平板電腦、移動式裝置、或伺服器。運算裝置100可包含適用於執行被儲存的指令之CPU 102、以及儲存可利用CPU 102執行之指令的記憶體裝置104。CPU 102可控制以及協調運算裝置100的全部操作。CPU 102可以是單核心處理器、多核心處理器、運算群集或任何數量之其他組態。
記憶體裝置104可包含運算裝置100之主記憶體。此外,記憶體裝置104可包含任何形式之隨機存取記憶體(RAM)、唯讀記憶體(ROM)、快閃記憶體或其類似者。例如,記憶體裝置104可以是記憶體晶片或積體電路之一個 或多個儲存庫。CPU 102可經由匯流排106而直接存取記憶體裝置104。
利用CPU 102被執行之指令可被使用以執行存在運算裝置100之儲存裝置110內的一些應用108之任何一者。應用108可以是將被顯示至運算裝置100之一使用者的任何型式之應用或程式,該等應用或程式具有圖像、圖像物件、圖像影像、圖像訊框、視訊或其類似者。CPU 102可經由匯流排106被連接到儲存裝置110。儲存裝置110可包含一硬碟驅動器、一光學驅動器、一拇指驅動器、一驅動器陣列或其任何組合。
CPU 102也可經由匯流排106被鏈接至一圖像排程器112。圖像排程器112可被組態以執行用以在CPU 102上執行之應用108的排程操作。圖像排程器112可包含圖像微控制器114。圖像微控制器114可被組態以執行用於圖像硬體116之排程操作。
於各種實施例中,圖像微控制器114經由一中介層118而與圖像硬體116界接。中介層118可被組態以自圖像硬體116而截取中斷以及其他訊息,並且傳送此等中斷以及其他訊息至圖像微控制器114。這可藉由自CPU 102之微少輸入而允許利用應用108所要求的作業、或工作佇列之直接排程。因此,用以排程圖像作業之延遲以及功率消耗可以是較低於關聯先前技術的延遲以及功率消耗,其依賴用以排程圖像作業而在CPU 102上被執行之排程演算法以及決定。
於各種實施例中,圖像微控制器114包含圖像排 程軟體115。圖像排程軟體115可在運算裝置100之開機階段之後,立刻經由一圖像驅動器(未被展示)而被裝載進入運算裝置100之硬體中。圖像驅動器可被包含在運算裝置100之圖像子系統內,並且可包含系統軟體。
應了解,圖1之方塊圖不欲指示運算裝置100是包含被展示於圖1中的所有構件。進一步地,取決於特定實作例,該運算裝置100可包含未被展示於圖1中之任何數量的另外構件。
圖2是包含運算裝置100之一圖像子系統202的內部構件之運算裝置100的方塊圖。具有相同編號的項目如相關於圖1被說明。於各種實施例中,圖像子系統202包含圖像排程器112以及圖像硬體116兩者。如上面之討論,圖像排程器112可包含圖像微控制器114,其用以執行用於圖像硬體116之排程操作、以及中介層118,其作為在圖像微控制器114以及圖像硬體116之間的介面。
圖像微控制器114可以是存在運算裝置100的圖像子系統202內之一般用途核心,並且可以相似於圖像子系統202的典型頻率(例如,高至大約1.4十億赫(gigahertz))之頻率而操作。此外,圖像微控制器114可包含一快取204。該快取可以是小的,例如,大約在8千位元組,並且可被使用以儲存有關自任何的應用108所接收的工作佇列之資料,以及有關用於圖像硬體116之排程操作的資訊。
圖像微控制器114也可包含一局域性先進可程控中斷控制器(LAPIC)206。該LAPIC 206可被使用以處理來自 各種來源(例如應用108、CPU 102以及圖像硬體116)之中斷。於各種實施例中,來自該等各種來源之該等中斷經由存在中介層118內之一中斷聚集器208而被收集並且被傳送至該LAPIC 206。
圖像微控制器114可經由一前端匯流排(FSB)介面210而與該中介層118界接。該中介層118可經由一訊息通道介面212而通訊於其餘的圖像子系統202。資料可經由記憶體在圖像微控制器114以及於CPU 102上執行的應用108之間被轉移。於一些實施例中,一位址解碼器214可被作為用於資料轉移之一交通徑由器。進一步地,訊息通道介面212可被組態以在圖像微控制器114以及其餘的圖像子系統202之間處理訊息之轉移或通知。例如,應用108之一者可寫入命令以及資料至在圖像子系統202內之一個或多個記憶體位置以要求工作佇列提交至圖像硬體。回應地,包含在圖像硬體116內之一圖像轉譯(GT)門鈴單元216可監視被改變之記憶體位置以檢測新的工作佇列之到達,並且經由訊息通道介面212而傳送一訊息至該圖像微控制器114。該訊息可包含關於一中斷原因之資訊。該圖像微控制器接著可讀取該訊息佇列以決定將被執行的圖像工作負擔之細節。
如於圖2之展示,圖像硬體116包含一些圖像引擎218。該等圖像引擎218之各者可被組態以進行特定圖像作業,或執行特定型式之工作負擔。此外,圖像硬體116可包含一顯示引擎220,其被組態以經由一顯示裝置222而顯示資料至運算裝置100之一使用者。被顯示之資料可包含,例 如,利用一個或多個圖像引擎218被形成的資料。進一步地,該等圖像引擎218以及顯示引擎220可被組態以傳送關於執行工作負擔之事件通知至圖像微控制器114。例如,顯示引擎220可傳送關於典型同步化事件(例如,輕擊或Vsyncs)之通知,至圖像微控制器114。於一些實施例中,此等事件通知以中斷形式被傳送,其指示一特定的工作負擔或一特定的硬體裝置正要求注意。
圖像硬體116也可包含圖像記憶體224。於一些實施例中,被專用於儲存圖像資料之圖像記憶體224是運算裝置100的主記憶體(例如,記憶體裝置104)之一部份。例如,圖像記憶體224可包含被使用於排程步驟之資料結構。圖像排程器112可經由一圖像記憶體介面226而存取存在中介層118內之圖像記憶體224。該中介層118也可包含一直接記憶體存取(DMA)引擎228,其被組態以允許圖像子系統202之某些構件,例如,圖像微控制器114,無關於CPU 102,而有效地獨立存取特定記憶體區域,例如,記憶體裝置104或圖像記憶體224。
圖像硬體116也可包含一輸入/輸出記憶體管理單元(IOMMU)230。該IOMMU 230可被組態以自應用108之一者而轉譯一圖像虛擬記憶體位址(例如,被包含在一指令或工作佇列中之一圖像虛擬位址(GVA)),至一實體記憶體位址(例如,一主機實際位址(HPA))。這可被達成,例如,經由一多-位準頁表搜尋,其中被包含在頁表搜尋中之位準數,取決於將被支援的位址空間之尺度。
被使用以實作此處說明之排程步驟的程式碼可被儲存在中介層118中之靜態隨機存取記憶體(SRAM)232之內。在SRAM 232內之程式碼可被使用以引導圖像微控制器114之作用。於一些實施例中,該程式碼經由DMA引擎228被裝載進入SRAM 232中。此外,中介層118可包含一密碼確認區塊234,其被組態以在執行之前鑑定在SRAM 232內之程式碼以確保該程式碼不曾被修改。
於一些實施例中,該圖像硬體116包含一電力管理(PM)單元236。該PM單元236可被組態以監視圖像微控制器114之活動。於一些實施例中,當所有的圖像引擎218是閒置時,該PM單元236可使圖像裝置之電源失效。此外,一計時器238可被使用以追蹤排程時間線。
如上面之討論,於一些實施例中,圖像排程器112在運算裝置100開機階段之後,經由一圖像驅動器(未被展示)立即被裝載進入運算裝置100之硬體中。於此等實施例中,用於圖像排程器112之啟始程式碼被包含在開機唯讀記憶體(bootROM)240內。此啟始程式碼可被使用以證實被包含在SRAM 232中之排程程式碼。例如,該排程程式碼可被複製進入一隔離的記憶體區域並且在排程步驟執行之前使用該啟始程式碼被證實。
應了解,圖2之方塊圖不欲指示運算裝置100是包含被展示於圖2中的所有構件。進一步地,取決於特定實作例,運算裝置100可包含未被展示於圖2中之任何數量的另外構件。
圖3是展示運算裝置100之圖像排程器112的功能之方塊圖。相同編號的項目相關於圖1以及2被說明。於各種實施例中,一應用108傳送包含一些圖像工作負擔之工作佇列至GT門鈴單元216,如藉由箭號300之指示。該GT門鈴單元216接著可傳送有關該等工作佇列之資訊至圖像排程器112。有關該等工作佇列之資訊可被圖像排程器112所採用以供用於排程步驟。此外,有關該等工作佇列之任何資訊可被儲存在SRAM 232之內以供將來之使用。
於各種實施例中,圖像排程器112也使用自一些來源之任何一者所接收的中斷以執行排程步驟。例如,中斷可自如利用箭號302被指示之CPU 102、如利用箭號304被指示之顯示引擎220、或如利用箭號306被指示之任何一者的圖像引擎218而被接收。該等中斷可包含有關要求注意之事件的資訊。此等中斷可被收集在中斷聚集器208內。於一些實施例中,該中斷聚集器208依任何數量因素為基礎而按優先順序處理該等中斷。這優先序處理允許圖像排程器112分配較高的優先序至從該等圖像引擎218之一者所接收的一中斷,其可能完成一先前的任務並且被備妥以接受下一個任務,而不是自應用108所接收的一中斷。例如,如果圖像排程器112是讀取記憶體中之應用工作負擔,則圖像排程器112可藉由指示一圖像引擎218是閒置的一高優先序中斷而被中斷。這允許圖像排程器112中止該應用工作負擔處理程序,提交一等待之工作負擔至圖像引擎218,並且接著返回至該應用工作負擔處理程序。
進一步地,中斷可被傳送至CPU 102,例如,主機。於一些實施例中,此等中斷經由顯示引擎220被傳送,如利用箭號307之指示。但是,該等中斷也可無關於顯示引擎220而獨立地被傳送至CPU 102。該等中斷可被傳送至CPU 102,以便通知在CPU 102上進行之圖像驅動器關於排程步驟之狀態,例如,該排程步驟是否已順利地被完成,是待決,或已失敗。該等中斷也可通知CPU 102關於在該等工作佇列內的工作負擔之各者的狀態,例如,工作負擔之執行是否已順利被完成,是待決,或已失敗。
依據此處揭示之實施例,圖像排程器112被使用以排程用於任何的圖像引擎218或顯示引擎220或其任何組合之工作負擔。例如,回應於自圖像微控制器114之輸入,圖像排程器112可提交一執行列表308至任何的圖像引擎218。該執行列表308可包含將藉由該等圖像引擎218之各者而執行的特定工作負擔。
於一些實施例中,圖像引擎218之各者包含一命令訊流器310,其被組態以指示至包含有關將被完成之工作負擔的指令/命令之特定記憶體位置,並且自該等記憶體位置擷取該等指令/命令。例如,執行列表308可包含關於特定記憶體位置的一些工作負擔,並且該命令訊流器310可包含一執行列表埠暫存器(未被展示),其包含依據執行列表308為基礎而自其中擷取命令的特定記憶體位置。圖像排程器112可藉由將該執行列表308寫入至對應的圖像引擎之執行列表埠暫存器而提交執行列表308。
進一步地,於各種實施例中,該等圖像引擎218之各者被組態以執行有關圖像任務之特定工作負擔。例如,形成圖像引擎218A可被組態以存取被儲存在該圖像記憶體224中之圖像資料,並且形成此等圖像資料。於一些實施例中,該形成圖像引擎218A包含一形成資料通道,該形成資料通道包含用以轉變GVA至HPA之轉譯列表。MFX圖像引擎218B可被組態以執行視訊解碼圖像任務,並且VE箱圖像引擎218C可被組態以執行視訊編碼圖像任務。此外,WD箱圖像引擎218D可被組態以提供無線顯示功能,並且傳圖函數圖像引擎218E可被組態以提供區塊影像轉移功能。
依據此處說明之實施例,一旦該執行列表308已被提交至該等圖像引擎218並且利用對應的命令訊流器310被處理時,則該等圖像引擎218可執行它們分別的工作負擔。此外,中斷可被產生,例如,以指示特定的工作負擔已順利地被完成,或在特定工作負擔的執行期間發生問題。
顯示引擎220也可通訊事件至圖像排程器112以引動在圖像引擎218上排程新的任務。例如,顯示引擎220可進行用以切換利用一顯示屏幕被顯示之一頁的一翻頁。顯示引擎220可被組態以傳送一完成的訊息,例如,關於工作負擔完成之一“翻頁完成”訊息,至圖像排程器112,如利用箭號304之指示。
於各種實施例中,IOMMU 230被組態以使一GVA轉譯至一HPA,如上面之討論。此外,IOMMU 230可被使用以存取被一工作負擔所要求之特定的記憶體位置、 或記憶頁。但是,於一些實施例中,對記憶體之此一存取可能失效,例如,因為頁表搜尋器可能發現該GVA不具有至HPA之一有效的轉譯,或企圖存取之型式不被頁表屬性所允許,例如,對被標記為唯讀之一記憶頁的一寫入存取。這可能導致IOMMU 230產生一記憶頁故障事件以通知在系統軟體內之一IOMMU驅動器(未被展示)。該IOMMU驅動器接著可整理該頁表以允許該存取繼續前進,例如,記憶頁故障修正,或指示至該IOMMU 230關於該記憶頁故障不能被服務。該IOMMU可通訊該記憶頁故障被修正或不被修正的訊息至該圖像排程器112。該圖像排程器112可使用此等訊息以決定用於圖像引擎218之排程的可能改變。例如,該圖像排程器可決定以預先取得其之進展可能被記憶頁故障所阻礙的一執行任務並且排程可在圖像引擎218上構成較佳進展之一不同的任務。
圖4是展示用以排程以及執行工作佇列之方法的處理程序流程圖。有關上面討論之圖1、2、以及3的圖像排程器112可被使用以排程工作佇列,並且圖像引擎218可被使用以執行該等工作佇列。
該方法在方塊402開始,在其中工作佇列於一圖像排程器自一應用被接收。該應用可在圖像排程器存在於其中之運算裝置上執行。該等工作佇列可包含將利用同時也存在該運算裝置內之圖像引擎而被執行的一些工作負擔。
在方塊404,包含一些工作佇列的一執行列表經由圖像排程器被決定以供用於圖像引擎之各者。該等執行 列表可依據能夠利用各個圖像引擎被執行的該等型式之工作佇列而被決定。該等執行列表可指定將利用各個圖像引擎被執行之特定工作佇列,以及用於該等工作佇列之適當的執行順序。
在方塊406,圖像排程器提交各執行列表至對應的圖像引擎,其中該圖像引擎被組態以執行在該執行列表內之該等工作佇列。於一些實施例中,一圖像引擎即時地執行該等工作佇列。於其他實施例中,該圖像引擎等待一指定時間,或直至一先前的執行列表之執行被完成為止,以執行該等工作佇列。
在方塊408,指示在該執行列表內之工作佇列是否已順利被完成之一訊息自各個對應的圖像引擎被接收。該圖像排程器可使用該等訊息以決定該排程步驟是否已順利地被完成。例如,如果在執行列表內之任何的工作佇列無法執行,則該圖像排程器可重新排程該等工作佇列。
在方塊410,訊息被傳送至啟動該等工作佇列之應用及/或運算裝置之CPU。於一些實施例中,如果一訊息指示一工作佇列已順利地被完成,則該應用及/或該CPU可存取利用對應的圖像引擎被產生的工作佇列之結果或輸出。
應了解,圖4之程序流程圖不欲指示方法400的方塊將以任何特定的順序被執行,或所有的方塊是將被包含在每個情況中。進一步地,取決於特定實作例,未被展示於圖4中之任何數量的另外方塊可被包含在方法400之內。
圖5是可依據實施例被使用之位址空間500範例 的方塊圖。相同之標號項目如關於圖1以及2之說明。該位址空間可包含圖像記憶體對映輸入/輸出(MMIO)502以及LAPIC MMIO 504,其提供在圖像子系統202以及CPU 102內的各種裝置之間的輸入以及輸出。例如,位址空間500也包含SRAM 232以及bootROM 240之部份,例如,位址空間400相關之特定工作負擔所參考的SRAM 232以及bootROM 240之部份。
位址空間500也可包含一圖像虛擬記憶體位址,例如,GVA506,其係關於在運算裝置100之實體記憶體內,例如,記憶體裝置104或圖像記憶體224,一特定的實體記憶體位址,例如,HPA 508。
於各種實施例中,例如,存在IOMMU 230內之一圖像轉譯(GT)記憶體介面510可被使用以轉換GVA 506至HPA 508。這可回應於來自圖像微控制器114之關於將被執行的一些活動之輸入而被進行。一旦HPA 508已被得到,則存在對應的實體記憶體位址中之特定資料結構可被存取。
轉譯步驟可經由一多層頁表搜尋而被執行,其中被包含在該頁表搜尋中之位準數量是取決於將被支援之位址空間的尺度。該頁表搜尋可以是依據,例如,用於DMA裝置(VtD)之一圖像轉譯列表(GTT)或虛擬化技術為基礎。該GTT可被使用以使該GVA 506轉譯至該HPA 508。此外,該GTT可在運算裝置100內之一應用108的裝載或執行期間藉由圖像驅動器被產生。
圖6是一流程圖600,其展示對於一工作負擔的一 些可能狀態。相同的編號項目如關於圖1以及2之說明。當圖像排程器112提交工作負擔至圖像引擎218之一者時,該工作負擔進入一提交狀態602。一旦該工作負擔進入該提交狀態602,工作負擔可嘗試正常完成。如果工作負擔的正常完成之一指示604被接收,該工作負擔進入一完成狀態606。該圖像引擎218接著可傳送一通知至啟動該工作負擔之圖像排程器112或應用108而指示該工作負擔已被執行。
如果該工作負擔不是在第一次嘗試時順利地被完成,而是遇到在繼續進行之前等待一事件之一通知608,則該工作負擔進入一等待狀態610。該事件可以是顯示引擎220已結束顯示緩衝器,例如,翻頁,或一記憶頁故障已發生,之一通知。該工作負擔可保持在等待狀態中直至該翻頁已被完成或該故障已被修正之一指示612被接收為止。一旦該翻頁已被完成或該故障已被修正,該工作負擔進入一備妥狀態614。自該備妥狀態614,該工作負擔可重返該提交狀態602。
如果一錯誤616之一指示被接收,則該工作負擔可進入一錯誤狀態618。此外,如果一錯誤之一指示620,例如,該工作負擔是在等待狀態610中時一故障修正錯誤被接收,則該工作負擔可進入該錯誤狀態618。於一些實施例中,如果該工作負擔進入該錯誤狀態618,則該圖像排程器112被通知該失效以執行該特定的工作負擔。該圖像排程器接著可傳送這至應用108。
圖7是展示用以執行用於圖像硬體之排程操作的 方法700之處理程序流程圖。方法700可以利用運算裝置100被執行,如有關於圖1、2以及3所述。
該方法在方塊702開始,在其中有關來自一應用之工作負擔的工作佇列被接收。該等工作佇列可自在運算裝置之CPU上執行的一應用而被接收。該等工作佇列之各者可包含一些工作負擔,其中該等工作負擔係關於將被執行的圖像任務。圖像任務範例包含形成圖像資料以產生圖像影像或顯示圖像影像至運算裝置之一使用者。此等圖像影像可包含像素影像、編碼影像、視訊影像或訊框、靜態影像、拍照影像或動畫影像。
在方塊704,用於圖像引擎之排程操作依據該等工作佇列為基礎而被進行。於各種實施例中,該等排程操作經由圖像排程器無關於CPU而獨立地被進行。進行用於該等圖像引擎之排程操作可包含決定一圖像引擎以執行該等工作負擔之各者,並且決定執行用於各個圖像引擎之工作負擔的一順序。執行用於各個圖像引擎之工作負擔的順序可依據任何型式之按優先順序處理機構而被決定。該圖像排程器可藉由寫入至在該等圖像引擎之各者的一命令訊流器內之一執行列表埠暫存器,而通知該等圖像引擎關於執行工作負擔之決定的順序。
於一些實施例中,該圖像排程器可藉由使圖像虛擬記憶體位址轉譯成為對應的實體記憶體位址,而存取有關該等工作佇列之任何的實體記憶體空間。存取此等實體記憶體空間可藉由提供該圖像排程器有關該等工作佇列之 各者更多的資訊而於排程步驟中協助。例如,該圖像排程器可藉由分析關於該等工作負擔之各者的內容而決定在一特定工作佇列內之工作負擔的尺度以及複雜性。
有關該等排程操作之中斷可自CPU、顯示引擎、或任何的圖像引擎,或其任何組合被接收。此等中斷可被收集在圖像排程器的一中斷聚集器之內。該等中斷接著可被圖像排程器所使用以進行該等排程操作。
應了解,圖7之處理程序流程圖不欲指示方法700之方塊是將以任何特定順序被執行,或所有的方塊是將被包含在每個情況中。進一步地,取決於特定實作例,任何數量的另外方塊可被包含在方法700之內。
於一些實施例中,方法700同時也包含利用一對應的圖像引擎而通知該應用關於一工作負擔之順利完成。當一圖像引擎完成一特定工作負擔時,該圖像引擎可經由一內部通聯系統而通知該圖像排程器有關該工作負擔已進入完成狀態。該圖像排程器接著可通知該應用或主機,例如,CPU它本身,該工作負擔已順利被完成。進一步地,於一些實施例中,該圖像引擎可通知該圖像排程器,是否該工作負擔已進入一等待狀態或一錯誤狀態。該圖像排程器接著可通知該應用或主機,該圖像引擎是沒完成該工作負擔,或已無法完成該工作負擔。
圖8是展示儲存用以執行用於圖像硬體之排程操作的程式碼之一實體、非暫態電腦可讀取媒體800的方塊圖。該實體、非暫態電腦可讀取媒體800可經由一電腦匯流 排804利用一處理器802被存取。更進一步地,該實體、非暫態電腦可讀取媒體800可包含被組態以指示處理器802執行此處說明之方法的程式碼。
此處討論之各種軟體構件可被儲存在實體、電腦可讀取媒體800上,如圖8之指示。例如,圖像排程模組806可被組態以執行用於圖像硬體之排程操作。此外,一中斷控制模組808可被組態以分析自該圖像硬體或該CPU所接收的中斷,並且回應至此等中斷。
圖9是用以實作圖像子系統202之範例系統900的方塊圖。相同的編號項目是如有關於圖1以及2之說明。於一些實施例中,系統900是一媒體系統。此外,該系統900可被包含進入一個人電腦(PC)、膝上型電腦、超級膝上型電腦、平板電腦、觸控鍵盤、輕便型電腦、手持電腦、掌上型電腦、個人數位助理(PDA)、行動電話、組合式行動電話/PDA、電視、智慧型裝置(例如,智慧型手機、智慧型平板電腦或智慧型電視)、移動式網際網路裝置(MID)、通聯裝置、資料通訊裝置、或其類似者。
於各種實施例中,系統900包括耦合至顯示器904之平臺902。平臺902可自內容裝置(例如,內容服務裝置906或內容傳送裝置908、或其他相似內容來源)接收內容。包含一個或多個導航特點之導航控制器910可被使用以與,例如,平臺902及/或顯示器904互動。這些構件之各者將在下面更詳細地被說明。
平臺902可包含一晶片組912、一處理器914、一 記憶體裝置916、一儲存裝置918、圖像子系統202、應用108以及一無線電920之任何組合。該晶片組912可提供在處理器914、記憶體裝置916、儲存裝置918、圖像子系統202、應用108以及無線電920之中的相互通訊。例如,晶片組912可包含能夠提供與儲存裝置918之相互通訊的一儲存轉接器(未被展示)。
處理器914可被實作如複雜指令集電腦(CISC)或簡化指令集電腦(RISC)處理器、x86指令集相容處理器、多核心或任何其他微處理機或中央處理單元(CPU)。於一些實施例中,處理器914包含雙核心處理器、雙核心移動式處理器、或其類似者。
記憶體裝置916可被實作如一依電性記憶體裝置,例如,但是不受限定於,隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、或靜態RAM(SRAM)。儲存裝置918可被實作如一非依電性儲存裝置,例如,但是不受限定於,磁碟驅動器、光碟驅動器、卡帶驅動器、內部儲存裝置、附帶之儲存裝置、快閃記憶體、電池備用SDRAM(同步DRAM)、及/或網路可接取儲存裝置。於一些實施例中,例如,當複數個硬碟驅動器被包含時,儲存裝置918包含增加用於貴重數位媒體之儲存性能提高保護的技術。
圖像子系統202可進行,例如,用以顯示之靜態或視訊的影像處理。該圖像子系統202可包含,例如,一圖像處理單元(GPU)或一視覺處理單元(VPU)。一類比或數位介面可被使用以通訊地耦合該圖像子系統202以及該顯示器 904。例如,該介面可以是高清晰度多媒體介面、顯示埠、無線HDMI、及/或無線HD遵循技術的任何一者。圖像子系統202可被整合進入處理器914或晶片組912中。另外地,圖像子系統202可以是通訊地被耦合至晶片組912之一獨立卡。
此處說明之圖像及/或視訊處理技術可以各種硬體結構被實作。例如,圖像及/或視訊功能可被整合在晶片組912之內。另外地,一離散圖像及/或視訊處理器可被使用。再於另一實施例中,該等圖像及/或視訊功能可利用包含一多核心處理器的一般用途處理器被實作。於一進一步的實施例中,該等功能可被實作於一消費性電子裝置中。
無線電920可包含能夠使用各種適當的無線通訊技術而發送以及接收信號之一個或多個無線電。此等技術可包含跨越一個或多個無線網路之通訊。無線網路範例包含無線局域性區域網路(WLAN)、無線個人區域網路(WPAN)、無線都會區域網路(WMAN)、行動電話網路、衛星網路或其類似者。於跨越此等網路之通訊中,無線電920可依據任何版本之一個或多個可應用標準而操作。
顯示器904可包含任何電視型式之監視器或顯示器。例如,顯示器904可包含一電腦顯示屏幕、觸控螢幕顯示器、視訊監視器、電視、或其類似者。顯示器904可以是數位及/或類比。於一些實施例中,顯示器904是一全像攝影顯示器。同時,顯示器904也可以是可接收一視覺投射之透明表面。此等投射可傳送各種形式之資訊、影像、物件或其類似者。例如,此等投射可以是用於一移動擴增實境 (MAR)應用之一視覺重疊圖。在一個或多個應用108控制之下,平臺902可顯示一使用者介面922在顯示器904上。
內容服務裝置906可以主持任何全國性的、國際性的、或獨立性的服務,並且因此,可以是,例如,經由網際網路而能夠接取至平臺902。內容服務裝置906可被耦合至平臺902及/或至顯示器904。平臺902及/或內容服務裝置908可被耦合至一網路924以通訊(例如,傳送及/或接收)媒體資訊至以及自該網路924。內容傳送裝置908同時也可被耦合至平臺902及/或至顯示器904。
內容服務裝置906可包含能夠傳送數位資訊之一有線電視盒、個人電腦、網路、電話或網際網路引動裝置。此外,內容服務裝置906可包含經由網路924或直接單向地或雙向地通訊在內容提供者以及平臺902或顯示器904之間的內容之任何其他相似裝置。應了解,內容可經由網路924單向地及/或雙向地被通訊至以及自任何系統900以及內容提供者中的構件之一者。內容範例可包含任何媒體資訊,而包含,例如,視訊、音樂、醫學與遊戲資訊、以及其它者。
內容服務裝置906可接收內容,例如,有線電視節目,包含媒體資訊、數位資訊、或其他內容。內容提供者範例可包含任何電纜線或衛星電視或無線電或網際網路內容提供者。
於一些實施例中,平臺902自包含一個或多個導航特點之導航控制器910而接收控制信號。導航控制器910之導航特點可被使用,例如,以互動於使用者介面922。導 航控制器910可以是一指示裝置,其可以是允許使用者輸入空間(例如,連續的以及多維度的)資料進入電腦之一電腦硬體構件(明確地說是人類介面裝置)。許多系統,例如,圖形使用者介面(GUI)、以及電視和監視器允許使用者使用實際手勢而控制以及提供資料至電腦或電視。
導航控制器910之導航特點的移動可藉由被顯示在顯示器904上之一指針、游標、聚光環或其他視覺指示器的移動而被回應在顯示器904上。例如,在應用108的控制之下,被安置於導航控制器910上之導航特點可被對映至被顯示在使用者介面922上之虛擬導航特點。於一些實施例中,導航控制器910可以不是一分離構件,但卻可被整合進入平臺902及/或顯示器904中。
系統900可包含驅動器(未被展示),其包含,例如,當被引動時,於初始啟動之後藉由按鈕之觸控而引動使用者立即導通以及關閉平臺902之技術。當平臺被“關閉”時,程式邏輯可允許平臺902傳送內容至媒體轉接器或其他內容服務裝置906或內容傳送裝置908。此外,晶片組912可包含,例如,支援5.1環繞聲響音訊及/或高清晰度7.1環繞聲響音訊之硬體及/或軟體。該等驅動器可包含用於整合的圖像平臺之一圖像驅動器。於一些實施例中,圖像驅動器包含一週邊構件互連快速(PCIe)圖像卡。
於各種實施例中,被展示於系統900中之任何的一個或多個構件可被整合。例如,平臺902以及內容服務裝置906可被整合;平臺902以及內容傳送裝置908可被整合; 或平臺702、內容服務裝置906、以及內容傳送裝置908可被整合。於一些實施例中,平臺902以及顯示器904是一整合單元。例如,顯示器904以及內容服務裝置906可被整合,或顯示器904以及內容傳送裝置908可被整合。
系統900可被實作如一無線系統或一有線系統。當被實作如一無線系統時,系統900可包含適用於在一無線共用媒體之上(例如,一個或多個天線、發送器、接收器、收發器、放大器、濾波器、控制邏輯以及其它者)通訊之構件以及介面。無線共用媒體之一範例可包含一無線頻譜之部份,例如,RF頻譜。當被實作如一有線系統時,系統900可包含適用於在有線通訊媒體(例如,輸入/輸出(I/O)轉接器、實際連接器)之上通訊的構件以及介面,以連接I/O轉接器與一對應的有線通訊媒體、一網路介面卡(NIC)、碟盤控制器、視訊控制器、音訊控制器或其類似者。有線通訊媒體之範例可包含一電線、電纜線、金屬導線、印刷電路板(PCB)、基板、切換結構、半導體材料、雙絞線、同軸電纜線、光纖、或其類似者。
平臺902可建立一個或多個邏輯或實際通道以通訊資訊。該資訊可包含媒體資訊以及控制資訊。媒體資訊可關連代表用於一使用者之內容的任何資料。內容範例可包含,例如,來自一聲音會話、視訊會議、訊流視訊、電子郵件(email)訊息、聲音郵件訊息、字母與數字符號、圖像、影像、視訊、文字、以及其類似者之資料。來自一聲音會話之資料可以是,例如,語音資訊、靜音週期、背景 雜訊、舒適雜訊、音調、以及其類似者。控制資訊可以關連代表用於一自動化系統之命令、指令或控制字組的任何資料。例如,控制資訊可被使用以經由系統而引導媒體資訊,或指示一節點而以一預定方式而處理媒體資訊。但是,該等實施例,是不受限定於被展示或被說明於圖9中之元件或本文脈絡。
圖10是圖9之系統900可於其中被實施之一小外形裝置1000之分解圖。相同的編號項目如有關於圖9之說明。於一些實施例中,例如,該裝置1000被實作如具有無線性能之一移動式運算裝置。一移動式運算裝置可以是關連於,例如,具有一處理系統以及一移動式電源或供應器,例如一個或多個電池之任何裝置。
如上所述,移動式運算裝置之範例可包含個人電腦(PC)、膝上型電腦、超級-膝上型電腦、平板電腦、觸控鍵盤、輕便型電腦、手持電腦、掌上型電腦、個人數位助理(PDA)、行動電話、組合行動電話/PDA、電視、智慧型裝置(例如,智慧型手機、智慧型平板電腦或智慧型電視)、移動式網際網路裝置(MID)、通聯裝置、資料通訊裝置以及其類似者。
移動式運算裝置之範例也可包含被配置而將被一人員所佩帶的一電腦,例如,一腕式電腦、手指式電腦、戒指式電腦、眼鏡式電腦、腰帶式電腦、臂帶式電腦、鞋式電腦、衣著式電腦、或任何其他適當型式之可佩帶電腦。例如,該移動式運算裝置可被實作如能夠執行電腦應用、 以及聲音通訊及/或資料通訊的智慧型手機。雖然一些實施例可藉由範例,而以被實作如一智慧型手機的一移動式運算裝置被說明,應了解,同樣地其他實施例也可使用其他無線移動式電腦裝置而被實作。
如於圖10之展示,裝置1000可包含一外殼1002、一顯示器1004、一輸入/輸出(I/O)裝置1006以及一天線1008。裝置1000也可包含導航特點1010。顯示器1004可包含用以顯示適用於一移動式運算裝置之資訊的任何適當之顯示單元。I/O裝置1006可包含用以將資訊輸入一移動式運算裝置之任何適當的I/O裝置。例如,I/O裝置1006可包含一字母與數字符號鍵盤、一數字袖珍型鍵盤、一觸控鍵盤、輸入鍵、按鈕、開關、弧形搖桿開關、麥克風、擴音機、一聲音辨識裝置以及軟體或其類似者。資訊也可藉由麥克風被輸入裝置1000中。此資訊可利用一聲音辨識裝置被數位化。
範例1
一運算裝置於此處被說明。該運算裝置包含一中央處理單元(CPU)(其被組態以執行一應用)以及一圖像排程器(其被組態以無關於CPU而獨立地操作)。該圖像排程器被組態以自在該CPU上執行之該應用而接收有關工作負擔之工作佇列並且依據該等工作佇列為基礎進行用於一些圖像引擎之任何一者的排程操作。
該圖像排程器可包含一圖像微控制器以及一中介層。該圖像微控制器可經由該中介層而與該圖像引擎界 接。該圖像排程器可被組態以藉由寫入至圖像引擎之一執行列表埠暫存器而執行用於一圖像引擎之排程操作。此外,該等圖像引擎之各者可被組態以執行特定型式之工作負擔。
該圖像排程器可被組態以存取有關該等工作佇列之任何一者的實體記憶體空間。為了存取有關該等工作佇列之任何一者的該等實體記憶體空間,該圖像排程器可被組態以經由一輸入/輸出記憶體管理單元(IOMMU),而使圖像虛擬記憶體位址轉譯成為對應的實體記憶體位址。該圖像排程器也可被組態以依據該等工作佇列為基礎而執行用於一顯示引擎之排程操作。此外,該圖像排程器可被組態以經由一中斷聚集器而收集來自該等圖像引擎、該CPU、或該顯示引擎、或其任何組合之任何一者的中斷,並且使用該等中斷以執行該等排程操作。
該運算裝置可包含一無線電,其中該無線電通訊地被耦合至該CPU。該運算裝置也可包含一顯示器,其中該顯示器通訊地被耦合至該CPU。此外,該圖像排程器可被組態以無關於該CPU之功率狀態而獨立地操作。
範例2
一種用以執行用於圖像硬體之排程操作的方法於此處被說明。該方法包含自在運算裝置之一中央處理單元(CPU)上執行的一應用,而在一運算裝置之一圖像排程器,接收有關工作負擔之工作佇列。該方法同時也包含依據該等工作佇列為基礎而執行用於一些圖像引擎之任何一 者的排程操作,其中該等排程操作經由圖像排程器無關於該CPU而獨立地被進行。
執行用於一圖像引擎之排程操作可包含決定執行用於該圖像引擎之工作負擔的一順序。決定執行用於該圖像引擎之工作負擔的順序可包含寫入至該圖像引擎之一執行列表埠暫存器。
於一些實施例中,有關該等工作佇列之任何一者的實體記憶體空間可藉由使圖像虛擬記憶體位址轉譯成為對應的實體記憶體位址而被存取。此外,於一些實施例中,用於一顯示引擎之排程操作可被執行。
有關該等排程操作之中斷可自該CPU、該顯示引擎、或該等圖像引擎之任何一者或其任何組合而被接收。該等中斷可被使用以執行該等排程操作。此外,於一些實施例中,一應用可於一工作負擔之順利完成時藉由一對應的圖像引擎被通知。
範例3
具有被儲存於其中的指令之至少一非暫態機器可讀取媒體於此處被說明。回應於在一運算裝置上被執行,該等指令導致該運算裝置自在一中央處理單元(CPU)上執行的一應用,在一圖像排程器,接收有關工作負擔之工作佇列。該等指令同時也導致該運算裝置依據該等工作佇列為基礎,而執行用於一些圖像引擎之之任何一者的排程操作,其中該等排程操作經由圖像排程器無關於該CPU而獨立地被執行。
執行該等排程操作可包含決定一圖像引擎以執行一些工作負擔之各者。此外,執行用於一圖像引擎之排程操作可包含決定執行用於圖像引擎之工作負擔的一順序。進一步地,於一些實施例中,該等指令可導致該運算裝置於一工作負擔之順利完成時藉由一對應的圖像引擎而通知該應用。
應了解,上述範例中之細節可被使用在一個或多個實施例中之任何地方。例如,上述運算裝置的所有選擇特點也可以有關於此處說明之方法或電腦-可讀取媒體被實作。更進一步地,雖然流程圖及/或狀態圖已於此處被使用以說明實施例,本發明是不受限定於那些圖形或受限定於此處對應的說明。例如,流程不需要經由如此處展示以及說明之各圖解說明的方塊或狀態或確切地相同順序而移動。
本發明是不受限定於此處列出之特定細節。實際上,那些熟習本技術者具有本揭示的助益後應明白,自前面之說明以及圖形中可以有許多其他變化落在本發明範疇之內。因此,下面的申請專利範圍包含界定本發明範疇之任何修正。
100‧‧‧運算裝置
102‧‧‧CPU
104‧‧‧記憶體
106‧‧‧匯流排
108‧‧‧應用
110‧‧‧儲存裝置
112‧‧‧圖像排程器
114‧‧‧圖像微控制器
115‧‧‧圖像排程軟體
116‧‧‧圖像硬體
118‧‧‧中介層

Claims (24)

  1. 一種運算裝置,其包括:一中央處理單元(CPU),該CPU被組態以執行一應用;一圖像排程器,其被組態以無關於該CPU而獨立地操作,該圖像排程器被組態以進行下列動作:從在該CPU上執行之應用接收有關工作負擔的工作佇列;並且依據該等工作佇列為基礎而執行對於複數個圖像引擎之任何一者的排程操作。
  2. 如請求項1之運算裝置,其中該圖像排程器包括一圖像微控制器以及一中介層(shim layer)。
  3. 如請求項2之電腦裝置,其中該圖像微控制器經由該中介層而與該等複數個圖像引擎界接。
  4. 如請求項1之運算裝置,其中該圖像排程器被組態以藉由寫入至一圖像引擎之一執行列表埠暫存器而執行用於該圖像引擎之排程操作。
  5. 如請求項1之運算裝置,其中該等圖像引擎之各者被組態以執行特定型式之工作負擔。
  6. 如請求項1之運算裝置,其中該圖像排程器被組態以存取有關任何該等工作佇列之實體記憶體空間。
  7. 如請求項6之運算裝置,其中,為了存取有關任何該等工作佇列之該等實體記憶體空間,該圖像排程器被組態 以經由一輸入/輸出記憶體管理單元(IOMMU)而使圖像虛擬記憶體位址轉譯成為對應的實體記憶體位址。
  8. 如請求項1之運算裝置,其中該圖像排程器被組態以依據該據等工作佇列為基礎而執行用於一顯示引擎之排程操作。
  9. 如請求項8之運算裝置,其中該圖像排程器被組態以進行下列動作:經由一中斷聚集器,收集來自該等複數個圖像引擎之任何一者、該CPU、或該顯示引擎、或其任何組合之中斷;並且使用該等中斷以執行該等排程操作。
  10. 如請求項1之運算裝置,其包括一無線電,其中該無線電通訊地被耦合至該CPU。
  11. 如請求項1之運算裝置,其包括一顯示器,其中該顯示器通訊地被耦合至該CPU。
  12. 如請求項1之運算裝置,其中該圖像排程器被組態以無關於該CPU之一功率狀態而獨立地操作。
  13. 一種用以執行對於圖像硬體之排程操作的方法,該方法包括下列步驟:在一運算裝置之一圖像排程器上,從在該運算裝置之一中央處理單元(CPU)上執行之一應用接收有關工作負擔的工作佇列;以及依據該等工作佇列為基礎而執行對於複數個圖像引擎之任何一者的排程操作,其中該等排程操作經由該 圖像排程器無關於該CPU而獨立地被執行。
  14. 如請求項13之方法,其中執行對於一圖像引擎之排程操作包括決定執行對於該圖像引擎之工作負擔的一順序。
  15. 如請求項14之方法,其中決定執行對於該圖像引擎之工作負擔的該順序包括寫入至該圖像引擎之一執行列表埠暫存器。
  16. 如請求項13之方法,包括藉由轉譯圖像虛擬記憶體位址成為對應的實體記憶體位址而存取有關於該等工作佇列之任何一者的實體記憶體空間。
  17. 如請求項13之方法,其包括接收來自該CPU或該等複數個圖像引擎之任何一者、或其任何組合的有關於該等排程操作之中斷。
  18. 如請求項17之方法,其包括使用該等中斷以執行該等排程操作。
  19. 如請求項13之方法,其包括當藉由一對應的圖像引擎之一工作負擔成功完成時而通知在該應用。
  20. 一種具有指令被儲存在其中之至少一非暫態機器可讀取媒體,該等指令響應於被執行在一運算裝置上,而導致該運算裝置進行下列動作:在一圖像排程器,從在一中央處理單元(CPU)上執行之一應用接收有關工作負擔的工作佇列;以及依據該等工作佇列為基礎而執行對於複數個圖像引擎之任何一者的排程操作,其中該等排程操作係經由該圖像排程器無關於該CPU而獨立地被執行。
  21. 如請求項20之至少一非暫態機器可讀取媒體,其中執行排程操作包括決定一圖像引擎以執行複數個工作負擔之各者。
  22. 如請求項20之至少一非暫態機器可讀取媒體,其中執行對於一圖像引擎之排程操作包括決定執行對於該圖像引擎之工作負擔的一順序。
  23. 如請求項22之至少一非暫態機器可讀取媒體,其中決定執行對於該圖像引擎之工作負擔的該順序包括寫入至該圖像引擎之一執行列表埠暫存器。
  24. 如請求項20之至少一非暫態機器可讀取媒體,其中該等指令導致該運算裝置當藉由一對應的圖像引擎之一工作負擔成功完成時通知該應用。
TW102124368A 2012-07-18 2013-07-08 執行對於圖像硬體之排程操作技術 TWI601093B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/552,122 US9304813B2 (en) 2012-07-18 2012-07-18 CPU independent graphics scheduler for performing scheduling operations for graphics hardware

Publications (2)

Publication Number Publication Date
TW201411550A true TW201411550A (zh) 2014-03-16
TWI601093B TWI601093B (zh) 2017-10-01

Family

ID=49947672

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102124368A TWI601093B (zh) 2012-07-18 2013-07-08 執行對於圖像硬體之排程操作技術

Country Status (4)

Country Link
US (1) US9304813B2 (zh)
CN (1) CN104380258B (zh)
TW (1) TWI601093B (zh)
WO (1) WO2014014628A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304813B2 (en) 2012-07-18 2016-04-05 Intel Corporation CPU independent graphics scheduler for performing scheduling operations for graphics hardware
US9591358B2 (en) * 2013-03-15 2017-03-07 Intel Corporation Media playback workload scheduler
WO2015000106A1 (en) * 2013-07-01 2015-01-08 Intel Corporation Efficient graphics virtualization with address ballooning
US9773292B2 (en) * 2014-06-26 2017-09-26 Intel Corporation Graphics workload submissions by unprivileged applications
US9536276B2 (en) * 2014-06-30 2017-01-03 Intel Corporation Method of submitting graphics workloads and handling dropped workloads
US10331595B2 (en) * 2014-10-23 2019-06-25 Mellanox Technologies, Ltd. Collaborative hardware interaction by multiple entities using a shared queue
CN107250980B (zh) * 2015-03-26 2021-02-09 英特尔公司 具有图形和系统存储器冲突检查的计算方法和设备
US9747225B2 (en) * 2015-05-05 2017-08-29 Microsoft Technology Licensing, Llc Interrupt controller
US20170069054A1 (en) * 2015-09-04 2017-03-09 Intel Corporation Facilitating efficient scheduling of graphics workloads at computing devices
WO2017062541A1 (en) 2015-10-06 2017-04-13 Carnegie Mellon University Method and apparatus for trusted display on untrusted computing platforms to secure applications
US20170126548A1 (en) * 2015-10-29 2017-05-04 Kabushiki Kaisha Toshiba Electronic Device and Method
US10410311B2 (en) * 2016-03-07 2019-09-10 Intel Corporation Method and apparatus for efficient submission of workload to a high performance graphics sub-system
US10990436B2 (en) * 2018-01-24 2021-04-27 Dell Products L.P. System and method to handle I/O page faults in an I/O memory management unit
US10388255B2 (en) 2018-06-29 2019-08-20 Intel Corporation Computers for supporting multiple virtual reality display devices and related methods
CN109036431A (zh) * 2018-07-11 2018-12-18 北京智能管家科技有限公司 一种语音识别系统和方法
US11360543B2 (en) * 2020-06-24 2022-06-14 Intel Corporation USB Type-C subsystem power management
US20230368325A1 (en) * 2022-05-16 2023-11-16 Qualcomm Incorporated Technique to optimize power and performance of xr workload

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI327436B (en) * 2004-11-15 2010-07-11 Nvidia Corp Video processing
US20090160867A1 (en) 2007-12-19 2009-06-25 Advance Micro Devices, Inc. Autonomous Context Scheduler For Graphics Processing Units
US8654134B2 (en) * 2008-12-08 2014-02-18 Microsoft Corporation Command remoting
US8310492B2 (en) 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
US8780122B2 (en) 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
EP2383648B1 (en) 2010-04-28 2020-02-19 Telefonaktiebolaget LM Ericsson (publ) Technique for GPU command scheduling
US9304813B2 (en) 2012-07-18 2016-04-05 Intel Corporation CPU independent graphics scheduler for performing scheduling operations for graphics hardware

Also Published As

Publication number Publication date
US20140026137A1 (en) 2014-01-23
CN104380258B (zh) 2018-11-06
TWI601093B (zh) 2017-10-01
US9304813B2 (en) 2016-04-05
WO2014014628A1 (en) 2014-01-23
CN104380258A (zh) 2015-02-25

Similar Documents

Publication Publication Date Title
TWI601093B (zh) 執行對於圖像硬體之排程操作技術
JP6391077B2 (ja) コンピューティングデバイス、コンピューティングシステム、方法、データ処理システム、非一時的な機械可読媒体、およびプログラム
TWI605342B (zh) 共享虛擬記憶體的技術
US20190095623A1 (en) Secure firmware devices and methods
US9591358B2 (en) Media playback workload scheduler
KR101590820B1 (ko) 멀티 터치 인터페이스 방안
US9323542B2 (en) Optimized cold boot for non-volatile memory
TWI546665B (zh) 用於圖形處理單元的記憶體映射技術
US10089019B2 (en) Minimizing latency from peripheral devices to compute engines
KR102223446B1 (ko) 비특권 애플리케이션에 의한 그래픽 작업부하 실행의뢰
US20170140078A1 (en) Techniques for parallel execution of ransac algorithm
TWI587694B (zh) 固定功能媒體裝置之先佔
US9892480B2 (en) Aborting graphics processor workload execution
KR102423768B1 (ko) 복수의 스레드들에 포함된 복수의 명령어들을 처리하기 위한 방법 및 그 전자 장치
US10168985B2 (en) Dynamic audio codec enumeration
BR102014026739B1 (pt) Método e dispositivo gráfico para gerenciamento de gráficos de consumo de energia e desempenho