TW201816608A - 影像處理單元及影像處理單元執行之方法 - Google Patents

影像處理單元及影像處理單元執行之方法 Download PDF

Info

Publication number
TW201816608A
TW201816608A TW106109064A TW106109064A TW201816608A TW 201816608 A TW201816608 A TW 201816608A TW 106109064 A TW106109064 A TW 106109064A TW 106109064 A TW106109064 A TW 106109064A TW 201816608 A TW201816608 A TW 201816608A
Authority
TW
Taiwan
Prior art keywords
kernel code
processing unit
commands
image processing
command decoder
Prior art date
Application number
TW106109064A
Other languages
English (en)
Inventor
陳啟明
鍾炘澔
Original Assignee
聯發科技股份有限公司
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 聯發科技股份有限公司 filed Critical 聯發科技股份有限公司
Publication of TW201816608A publication Critical patent/TW201816608A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

一種影像處理單元,用於並存執行用多於一個程式設計框架編寫之內核代碼,包含:一第一命令解碼器,解碼由一第一應用程式介面發出的一第一組命令,以執行一第一程式設計框架的一第一內核代碼;一第二命令解碼器,解碼由一第二應用程式介面發出的一第二組命令,以執行一第二程式設計框架的一第二內核代碼;多個著色器核心;以及一流水線管理器,耦接到該第一命令解碼器、該第二命令解碼器與該多個著色器核心,該流水線管理器分派一第一組著色器核心與一第二組著色器核心,來根據一解碼命令並行地分別執行該第一內核代碼與該第二內核代碼。

Description

影像處理單元及影像處理單元執行之方法
本發明之實施例有關於一種影像處理系統的架構。
在電腦圖像領域,渲染是指將圖像物件或模型的描述在顯示裝置上生成圖像的過程。影像處理單元(graphics processing unit,GPU)渲染2D 及3D圖像物件成為圖像元素(圖元),2D 及3D圖像物件通常由一些例如是點、線、多面體以及更高階多面體的圖元(primitive)的合成表示。
GPU一般包含用於渲染操作的渲染流水線。渲染流水線包含下列主要階段: (1) 頂點處理(vertex processing),處理及轉變頂點(用於描述圖元)為投射空間(projection space),(2) 光柵化(rasterization),這將每個圖元轉化為一組圖元,並與顯示器的圖元格(pixel grid)對齊,其包含位置,顏色,普通(normal)及紋理(texture)等屬性, (3)片斷處理(fragment processing),處理每一組圖元,以及 (4) 輸出處理,將所有圖元的圖元合成進2D顯示空間。
為編寫GPU執行的高性能的軟體已經開發出多種編寫架構。舉例來說,舉例來說,開放計算語言(Open Computing Language)的OpenCLTM 是一種應用程式介面(Application Program Interface,API),其支援在跨平臺硬體上的大量並行代碼的執行,以及開放圖像庫(Open Graphics Library)的OpenGL® (還有其在嵌入式系統上的變形,(OpenGL for Embedded Systems,GLES)),這是一個支持在跨平臺上渲染2D與3D圖像的API。圖像系統通常在處理的不同階段調用這些API。舉例來說,在中央處理器上運行的API能發送命令指揮GPU來執行影像處理及幀合成的內核代碼。舉例來說,這些API可包含多於一個API類型;也就是說,可以被編寫進例如OpenGL與OpenCL等的兩種或更多種程式設計框架。不同API類型的API發出不同命令類型的命令來執行不同內核代碼類型的內核代碼。舉例來說,OpenCL的API發出OpenCL命令來執行OpenCL內核代碼;OpenGL的API發出OpenGL命令來執行OpenGL內核代碼。在內核代碼執行中,從一個框架切換到另一個框架涉及到內容切換(context switching)。而頻繁的內容切換會大幅降低每秒幀率(frames per second,FPS)等的系統性能。因此,需要解決這樣內容切換引起的性能影響。
有鑑於此,本發明為了解決GPU中在執行多於一個程式設計框架編寫的代碼時需要的內容切換會降低系統性能的技術問題。
本發明提供一種影像處理單元,用於並存執行用多於一個程式設計框架編寫之內核代碼,該影像處理單元包含:第一命令解碼器,解碼由第一應用程式介面發出的第一組命令,以執行第一程式設計框架的第一內核代碼;第二命令解碼器,解碼由第二應用程式介面發出的第二組命令,以執行第二程式設計框架的第二內核代碼;多個著色器核心;以及流水線管理器,耦接到該第一命令解碼器、該第二命令解碼器與該些著色器核心,該流水線管理器用於分派第一組著色器核心與第二組著色器核心,來根據解碼命令並行地分別執行該第一內核代碼與該第二內核代碼。
本發明另提供一種影像處理單元執行之方法,用於並存執行用多於一個程式設計框架編寫之內核代碼,該方法包含:從驅動模組接收多個命令,用於在並行模式下執行第一程式設計框架的第一內核代碼以及第二程式設計框架的第二內核代碼,其中該些命令包含由第一應用程式介面發出的第一組命令以及由第二應用程式介面發出的第二組命令;用第一命令解碼器解碼該第一組命令並用第二命令解碼器解碼該第二組命令;以及根據解碼的命令並行地由第一組著色器核心執行該第一內核代碼且由第二組著色器核心執行該第二內核代碼。
本發明所提出之影像處理單元及影像處理單元執行之方法能並行處理不同程式設計框架所編寫之內核代碼,從而降低了內容切換操作,提升了系統之整體性能。
本發明之實施例支持在多於一個程式設計架構上編寫的內核代碼的並存執行。在不同程式設計框架內編寫的內核代碼這裡稱為不同類型的內核代碼。類似地,在不同程式設計框架內編寫的API這裡稱為不同類型的API。一個實施例中,並存執行由GPU運行。GPU可從執行第一程式設計框架的第一內核代碼與第二程式設計框架的第二內核代碼的驅動模組接收命令。命令可包含由第一API發出的第一組命令以及第二API 發出的第二組命令。GPU可用兩個命令解碼器同時解碼這些命令。GPU可分配第一組著色器(shader)核心來執行第一內核代碼,並分配第二組著色器核心來執行第二內核代碼。第一組與第二組著色器的數量可根據驅動模組提供的權重來決定。GPU接著根據解碼的命令並行地用第一組著色器核心執行第一內核代碼以及用第二組著色器核心執行第二內核代碼。
後面介紹支援並存執行兩種類型的內核代碼的系統及方法。舉例來說,OpenGL與OpenCL是並存執行的內核代碼的所述的兩個程式設計框架。可是,需要瞭解的是,系統與方法可延伸到並存執行超過兩個類型的內核代碼。而且,需要瞭解的是,系統與方法可支援除 OpenGL與OpenCL之外的程式設計框架。
第1圖顯示根據本發明一實施例的包含CPU 110 與GPU 120的系統100。其中CPU 110與GPU 120由互連130相互連接。雖然圖中僅顯示一個CPU與一個GPU,需要理解的是,系統100可包含任何數量的CPU與GPU,也可以包含任何數量的通用或專用處理器。需要瞭解的是,本發明此處為陳述方便而省略了其他系統元件。
在一個實施例中,系統100可實施為一個晶片上系統(SoC)。在一個實施例中,系統100可以是移動計算以及/或通信裝置(例如智慧手機,平板電腦或筆記型電腦等等)的一部分。在另一實施例中,系統100可以是伺服器電腦的一部分。每個CPU 110可包含多個CPU核心,每個GPU可包含多個GPU核心。在一個實施例中,CPU 110與GPU 120通過互連130與記憶體170 (例如DRAM或其他易失性或非易失性隨機存取記憶體) 通信。
在一個實施例中,CPU 110可扮演為一個主機,其發送命令給GPU 120來執行用戶應用;例如先進驅動器助理系統(Advanced Driver Assistance Systems,ADAS),深度神經網路(Deep Neural Network,DNN),及其他應用。命令可通過例如GPU 驅動器113的驅動模組從API發送給GPU 120。GPU驅動器113在CPU軟體與GPU硬體之間提供一個低水準介面(low-level interface)。在一個實施例中,用戶應用111可包含在多於一種程式設計語言編寫的軟體。舉例來說,用戶應用 111可包含OpenCL中的平行計算代碼(parallel computing code)與OpenGL中的圖像渲染代碼(graphics rendering code),且用於執行不同類型代碼的命令可通過例如第一API 121與第二API 122的對應類型的API發出。在一個實施例中,不同類型的API也在GPU驅動器113中具有對應不同類型的驅動器,例如第一驅動器131及第二驅動器132。根據這些命令,GPU 120執行圖像操作與平行計算來產生顯示器160的多個圖像層。產生的圖像層包含使用者介面、狀態列、圖像物件的圖片以及其他元素。在一個實施例中,GPU 120 可將多個圖像層合成為在顯示器160上顯示的幀。
在一個實施例中,GPU 120包含著色器硬體140,用於執行平行計算與圖像操作,這些圖像操作包含著色,但不限於頂點著色與片斷著色。著色器硬體的一個實施例是一個統一著色器,程式設計來執行不同的著色操作。著色器硬體包含著色器核心的一個陣列,例如算數邏輯單位(arithmetic logic units,ALUs),其執行著色器程式內的指令,這裡稱作內核代碼。內核代碼可用高階語言編寫。對平行計算而言,內核代碼可用OpenCL或其他並行程式設計語言;對圖像操作來說,內核代碼可用OpenGL 著色語言(OpenGL Shading Language,GLSL),嵌入式系統的 OpenGL(OpenGL for Embedded Systems,GLES),Direct3D 的高級著色語言(High-Level Shading Language ,HLSL) 或圖像C語言(C for Graphics ,Cg)等等來編寫。
在一個實施例中,GPU 120可使用固定功能硬體180來執行圖像操作。在一個實施例中,固定功能硬體180可包含為圖像操作優化的硬體。舉例來說,GPU 120可用著色器核心與固定功能硬體180執行2D或3D渲染操作。GPU120也可通過用固定功能硬體180實施的合成器功能將多個圖像層合成為顯示的幀。
第2圖顯示本發明一個實施例的GPU 120的更多細節。GPU 120 可操作於多個執行模式,包含但不限於,並行模式(concurrent mode)與互斥模式(exclusive mode)。在並行模式中,GPU 120可並行地處理兩個或多個不同類型的內核代碼;而在互斥模式中,GPU 120可僅執行一個類型的內核代碼。每種類型的內核代碼都根據對應命令類型處理。舉例來說,GPU 120根據OpenCL命令來執行OpenCL內核代碼,並根據OpenGL命令來執行OpenGL內核代碼。第2圖實施例中的GPU 120 包含兩個命令解碼器210 與220,用來解碼不同類型的命令(例如OpenGL/GLES與OpenCL);但是,需要理解的是,GPU 120可包含多於兩個命令解碼器來解碼超過兩個類型的命令,每個命令解碼器來解碼對應類型的命令。
在第2圖的實施例中,GPU 120包含第一命令解碼器 210來解碼執行第一內核代碼 (也就是第一類型的內核代碼)的命令。GPU 120也包含第二命令解碼器 220 來解碼執行第二內核代碼 (也就是第二類型的內核代碼)的命令。第一與第二命令解碼器 210與220可用硬體、固件、軟體或其組合來實施。命令解碼器210與220分別從記憶體170中的命令序列175與176接收命令。第一命令序列175儲存由第一API 121 通過第一驅動器131發出的命令,用來指揮GPU 120執行第一內核代碼。第二命令序列176儲存由第二API 122通過第二驅動器132發出的命令,用來指揮GPU 120執行第二內核代碼。
在一個實施例中,GPU 120也包含流水線管理器(pipe manager)230與統一著色器(unified shader)240。統一著色器240是第1圖的著色器硬體140的一個實施例。統一著色器240包含一個著色器核心陣列,並耦接到流水線管理器230。流水線管理器230從第一命令解碼器210與第二命令解碼器220接收解碼的命令,並發送解碼的命令給統一著色器240。解碼的命令可指示是否GPU驅動器113請求操作在並行模式或互斥模式下進行。若請求的操作指示並行模式下執行兩個類型的內核代碼,著色器核心可被劃分為2個不重疊組的著色器核心:第一組的著色器核心(“第一著色器核心組”)來執行第一內核代碼,以及第二組著色器核心(“第二著色器核心組”)來執行第二內核代碼。
在一個實施例中,GPU驅動器113可發送在並行模式中處理兩種內核代碼類型的命令給GPU 120,也可發送兩個命令序列175與176的權重 (或等同地,發送兩個內核代碼類型的權重)。權重可用來計算第一著色器核心組中的第一數量的著色器核心以及第二著色器核心組中第二數量的著色器核心。所以,GPU 120可分派第一數量的著色器核心來執行第一內核代碼以及第二數量的著色器核心來執行第二內核代碼,例如第一內核代碼與第二內核代碼可並行處理。在一個實施例中,流水線管理器230可根據權重執行著色器核心分派的任務。在一個實施例中,GPU驅動器113 (更具體地,第一驅動器131與第二驅動器132) 可基於以下(但不限於)的多個因素決定權重:執行內核代碼所需要的性能以及執行內核代碼所用的負荷。
在一個實施例中,當第一驅動器131與第二驅動器132都請求並行模式時,GPU驅動器113可為第一命令序列175選擇第一權重(例如X),為第二命令序列176選擇第二權重(例如Y)。如果在統一著色器240中一共有N個著色器核心,第一著色器核心組中著色器核心的數量是,而在第二著色器核心組中的著色器核心的數量是N-M。
另外,GPU驅動器113可請求一個內核代碼類型的互斥模式操作。舉例來說,第一驅動器131可請求所有的著色器核心都被分派去執行第一內核代碼。第二驅動器132也可請求所有的著色器核心被分派去執行第二內核代碼。並行模式或互斥模式的請求可基於但不限於下面的考慮:著色器計算能力、內核代碼的頻寬需求以及系統功耗。如果第一驅動器131與第二驅動器132請求互斥模式操作,流水線管理器230可根據輪詢調度(round-robin scheduling)從命令序列175與176發送解碼的命令給著色器核心。
在一個實施例中,GPU 120更包含固定流水線252 以及工作項目產生器(work item generator)262。固定流水線252是第1圖中固定功能硬體180的一個實施例。固定流水線252與第一組著色器核心組成3D引擎250來根據對應解碼命令執行第一內核代碼,以進行圖像渲染及圖像合成操作。工作項目產生器262產生工作項目,每個工作項目都是操作的獨立元素。工作項目產生器262與第二組著色器核心組成計算引擎260來根據對應解碼命令執行第二內核代碼,以進行平行計算。在一個實施例中,當第二內核代碼是OpenCL或其他平行計算代碼時,第二內核代碼如一組工作項目那樣並存執行於第二組著色器核心上。
在一個實施例中,3D引擎250的輸出可包含第一緩衝對象(first buffer object)271,而計算引擎260的輸出可包含第二緩衝對象(second buffer object)272。第一緩衝物件271與第二緩衝物件272可包含例如圖像層等的圖像資料。在一個實施例中,第一緩衝物件271與第二緩衝物件272可被儲存於記憶體270中,例如圖像記憶體或分配給GPU 120的系統記憶體的一部分。記憶體170 與記憶體270可被安置在同個記憶體設備中或分離的不同記憶體設備中。
在一個實施例中,3D引擎250與計算引擎260 各自都維持有一個程式計數器以及執行的內核代碼的內容。因此,第一內核代碼與第二內核代碼可並存執行而不需要切換內容。
第3圖顯示執行圖像使用者應用的時間線的實施例,其中圖像應用例如是ADAS。對於ADAS應用,幀的產生有兩個階段:在第一階段GPU基於OpenCL規範執行影像處理,在第二階段GPU基於GLES規範執行圖像合成。ADAS應用是計算密集型,減少GPU內的內容切換量能大幅改善系統性能。在一個實施例中,應用的影像處理部分(OpenCL,縮寫為“CL”) 以及應用的圖像合成部分(GLES,縮寫為“GL”)可以平行作業來減少內容切換。
第3圖的操作可由圖像系統執行,例如第1圖的系統100以及第1圖及第2圖的GPU 120。請參考第3圖,產生一個幀的操作包含但不限於下列步驟。首先,系統從來源(例如照相機)接收圖像資料(步驟310)。在接收圖像資料之後,CL驅動器調用GPU的計算引擎260來執行例如影像處理的平行計算(步驟320)。CPU 110在平行計算完成時被通知(步驟330),然後其也通知CL驅動器(步驟340)。CL驅動器接著通知GL驅動器(步驟350),其調用GPU的3D引擎250來執行包含圖像合成的圖像操作(步驟360)。在圖像合成完成後,CPU 110指揮輸出到一顯示器(步驟370) 。
步驟310-370的操作對每一幀重複執行,在一定時間,GPU的3D引擎250 (用於第二階段操作)以及計算引擎260 (用於第一階段操作)可同時操作。舉例來說,幀_i的第二階段與幀_k的第一階段在時間上重疊(例如T1與T2之間的時間間隔)。通過設置OpenCL與OpenGL操作為並行模式,著色器核心可如第2圖所述被劃分為兩個不重疊的組,以讓第一階段(步驟320)與第二階段(步驟360)的GPU操作平行作業。
第4圖顯示本發明一實施例的並行模式下執行不同類型的內核代碼的GPU的方法400的流程圖。也就是說,GPU並行處理多於一個程式設計框架編寫的內核代碼。在一個實施例中,方法400可由第1圖與第2圖中的GPU120所執行。方法400是GPU從驅動模組接收命令來執行並行模式的第一程式設計框架的第一內核代碼與第二程式設計框架的第二內核代碼開始(步驟410)。命令包含由第一API發出的第一組命令與由第二API發出的第二組命令;例如,第1圖中的第一API 121與第二API 122。GPU用第一命令解碼器解碼第一組命令並用第二命令解碼器解碼第二組命令(步驟420)。根據解碼的命令,GPU並行地用第一組著色器核心處理第一內核代碼以及用第二組著色器核心處理第二內核代碼(步驟430)。
第5圖顯示根據本發明一實施例在互斥模式下執行不同類型內核代碼的GPU所執行的方法500的流程圖。在一個實施例中,方法500可由第1圖與第2圖的GPU 120執行。方法500中,GPU從驅動模組接收命令來執行互斥模式的第一程式設計框架的第一內核代碼與第二程式設計框架的第二內核代碼開始(步驟510)。命令包含由第一API 發出的第一組命令與由第二API 發出的第二組命令;例如,第1圖中的第一API 121與第二API 122。對應於命令,GPU交替第一內核代碼與第二內核代碼的操作,將所有著色器核心交替分派給一個內核代碼;也就是第一內核代碼與第二內核代碼其中之一(步驟520)。舉例來說,如果第一內核代碼要首先執行,第一命令解碼器解碼第一組命令,GPU中的整個著色器核心根據解碼命令執行第一內核代碼。在操作完成或計時器到期後,第二命令解碼器解碼第二組命令,整個著色器核心根據解碼命令執行第二內核代碼。因此,命令的解碼以及內核代碼的執行可在不同類型的內核代碼之間進行交替切換。如果有超過兩種類型的內核代碼,命令解碼與內核代碼執行可以輪詢調度的方式進行。
於是,所述的圖像系統支援兩種或以上類型的內核代碼的並行模式與互斥模式的執行。因為並行處理不同類型的內核代碼減少了內容切換,系統性能得到提高。
第4圖與第5圖中流程圖的操作可參考第1圖與第2圖的實施例說明。可是,需要注意的是,第4圖與第5圖中流程圖的操作可以用不同於第1圖與第2圖中的實施例來實施。第1圖與第2圖中的實施例也可以執行不同於第4圖與第5圖中的流程圖的操作。雖然第4圖與第5圖的流程圖顯示了本發明實施例的操作執行的一個特定順序,可以瞭解這樣的順序僅是示範作用(例如,不同的實施例可以不同循序執行操作,也可以將一些操作合併或是略去一些操作等等)。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
110‧‧‧CPU
120‧‧‧GPU
111‧‧‧用戶應用
121‧‧‧第一API
122‧‧‧第二API
113‧‧‧GPU驅動器
131‧‧‧第一驅動器
132‧‧‧第二驅動器
130‧‧‧互連
140‧‧‧著色器硬體
160‧‧‧顯示器
170,270‧‧‧記憶體
180‧‧‧固定功能硬體
210‧‧‧第一命令解碼器
220‧‧‧第二命令解碼器
230‧‧‧流水線管理器
240‧‧‧統一著色器
250‧‧‧3D引擎
252‧‧‧固定流水線
260‧‧‧計算引擎
262‧‧‧工作項目產生器
271‧‧‧第一緩衝對象
272‧‧‧第二緩衝對象
圖1顯示根據本發明一實施例的圖像系統。 圖2顯示根據本發明一實施例的支援兩個並行流程處理的GPU。 圖3顯示根據本發明一實施例的處理圖像應用的時間線。 圖4顯示根據本發明一實施例的並行模式下執行不同程式設計框架的內核代碼的方法流程圖。 圖5顯示根據本發明一實施例的互斥模式下執行不同程式設計框架的內核代碼的方法流程圖。

Claims (20)

  1. 一種影像處理單元,用於並存執行用多於一個程式設計框架編寫之內核代碼,該影像處理單元包含: 一第一命令解碼器,解碼由一第一應用程式介面發出之一第一組命令,以執行一第一程式設計框架之一第一內核代碼; 一第二命令解碼器,解碼由一第二應用程式介面發出之一第二組命令,以執行一第二程式設計框架之一第二內核代碼; 多個著色器核心;以及 一流水線管理器,耦接到該第一命令解碼器、該第二命令解碼器與該多個著色器核心,其中該流水線管理器用於分派一第一組著色器核心與一第二組著色器核心,來根據一解碼命令並行地分別執行該第一內核代碼與該第二內核代碼。
  2. 如申請專利範圍第1項所述之影像處理單元,另包含: 一固定功能流水線,根據由該第一命令解碼器解碼之該第一組命令,用該第一組著色器核心執行該第一內核代碼。
  3. 如申請專利範圍第2項所述之影像處理單元,其中,該固定功能流水線與該第一組著色器核心根據該第一內核代碼執行3D圖像渲染及圖像合成操作。
  4. 如申請專利範圍第1項所述之影像處理單元,其中,該影像處理單元另包含一工作專案產生器,從該第二內核代碼產生多個工作專案,該多個工作專案由該第二組著色器核心根據由該第二命令解碼器解碼的該第二組命令來執行。
  5. 如申請專利範圍第4項所述之影像處理單元,其中該工作專案產生器與該第二組著色器核心根據該第二內核代碼執行平行計算。
  6. 如申請專利範圍第1項所述之影像處理單元,其中,該第一組著色器核心包含一第一數量之著色器核心,該第二組著色器核心包含一第二數量之著色器核心,且該第一數量與該第二數量是由一驅動模組提供之權重計算得到。
  7. 如申請專利範圍第1項所述之影像處理單元,其中,該多個著色器核心另將該多個著色器核心分派給該第一內核代碼與該第二內核代碼其中之一,來交替執行該第一內核代碼與該第二內核代碼,以回應一額外命令來於互斥模式下執行該第一內核代碼與該第二內核代碼。
  8. 如申請專利範圍第1項所述之影像處理單元,其中,該第一命令解碼器從一記憶體內之一第一命令序列接收該第一組命令,且該第二命令解碼器從該記憶體之一第二命令序列接收該第二組命令。
  9. 如申請專利範圍第1項所述之影像處理單元,其中,該第一命令解碼器解碼OpenGL代碼且該第二命令解碼器解碼OpenCL代碼。
  10. 如申請專利範圍第1項所述之影像處理單元,其中,該第一應用程式介面是OpenGL應用程式介面,該第二應用程式介面是OpenCL應用程式介面。
  11. 一種影像處理單元執行之方法,用於並存執行用多於一個程式設計框架編寫之內核代碼,該方法包含: 從一驅動模組接收多個命令,用於在一並行模式下執行一第一程式設計框架之一第一內核代碼以及一第二程式設計框架之一第二內核代碼,其中該等命令包含由一第一應用程式介面發出之一第一組命令以及由一第二應用程式介面發出之一第二組命令; 用一第一命令解碼器解碼該第一組命令並用一第二命令解碼器解碼該第二組命令;以及 根據解碼之命令並行地由一第一組著色器核心執行該第一內核代碼且由一第二組著色器核心執行該第二內核代碼。
  12. 如申請專利範圍第11項所述之影像處理單元執行之方法,另包含: 根據該第一命令解碼器解碼之該第一組命令,由該第一組著色器核心與一固定功能流水線執行該第一內核代碼。
  13. 如申請專利範圍第12項所述之影像處理單元執行之方法,其中執行該第一內核代碼之步驟另包含: 根據該第一內核代碼執行3D圖像渲染與圖像合成的操作。
  14. 如申請專利範圍第11項所述之影像處理單元執行之方法,另包含: 根據該第二命令解碼器解碼之該第二組命令,由該第二組著色器核心執行該第二內核代碼作為工作專案。
  15. 如申請專利範圍第14項所述之影像處理單元執行之方法,其中執行該第二內核代碼之步驟另包含: 根據該第二內核代碼執行平行計算。
  16. 如申請專利範圍第11項所述之影像處理單元執行之方法,其中該第一組著色器核心包含一第一數量之著色器核心,該第二組著色器核心包含一第二數量之著色器核心,該方法另包含: 根據該驅動模組提供之權重計算該第一數量與該第二數量。
  17. 如申請專利範圍第11項所述之影像處理單元執行之方法,另包含: 將該多個著色器核心分派給該第一內核代碼與該第二內核代碼其中之一,來交替執行該第一內核代碼與該第二內核代碼,以回應一額外命令來於一互斥模式下執行該第一內核代碼與該第二內核代碼。
  18. 如申請專利範圍第11項所述之影像處理單元執行之方法,另包含: 由該第一命令解碼器從一記憶體之一第一命令序列中接收該第一組命令;以及 由該第二命令解碼器從該記憶體之一第二命令序列中接收該第二組命令。
  19. 如申請專利範圍第11項所述之影像處理單元執行之方法,其中解碼該第一組命令與該第二組命令之步驟另包含: 由該第一命令解碼器解碼OpenGL代碼且由該第二命令解碼器解碼OpenCL代碼。
  20. 如申請專利範圍第11項所述之影像處理單元執行之方法,其中該第一應用程式介面是OpenGL應用程式介面,該第二應用程式介面是OpenCL應用程式介面。
TW106109064A 2016-07-26 2017-03-20 影像處理單元及影像處理單元執行之方法 TW201816608A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/219,509 US20180033114A1 (en) 2016-07-26 2016-07-26 Graphics Pipeline That Supports Multiple Concurrent Processes
US15/219,509 2016-07-26

Publications (1)

Publication Number Publication Date
TW201816608A true TW201816608A (zh) 2018-05-01

Family

ID=61011658

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106109064A TW201816608A (zh) 2016-07-26 2017-03-20 影像處理單元及影像處理單元執行之方法

Country Status (3)

Country Link
US (1) US20180033114A1 (zh)
CN (1) CN107657580A (zh)
TW (1) TW201816608A (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US20190278574A1 (en) * 2018-03-09 2019-09-12 Nvidia Corporation Techniques for transforming serial program code into kernels for execution on a parallel processor
CN110837395B (zh) * 2018-08-17 2022-03-25 北京图森智途科技有限公司 多gpu并行训练的归一化处理方法、装置和系统
US20200183485A1 (en) * 2018-12-07 2020-06-11 Advanced Micro Devices, Inc. Hint-based fine-grained dynamic voltage and frequency scaling in gpus
US11120603B2 (en) 2019-06-18 2021-09-14 Samsung Electronics Co., Ltd. Heavy-weight/light-weight GPU shader core pair architecture
CN111614906B (zh) * 2020-05-29 2022-02-22 阿波罗智联(北京)科技有限公司 一种图像预处理方法、装置、电子设备及存储介质
US20230161616A1 (en) * 2021-11-23 2023-05-25 Vmware, Inc. Communications across privilege domains within a central processing unit core

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8854381B2 (en) * 2009-09-03 2014-10-07 Advanced Micro Devices, Inc. Processing unit that enables asynchronous task dispatch
US9019289B2 (en) * 2012-03-07 2015-04-28 Qualcomm Incorporated Execution of graphics and non-graphics applications on a graphics processing unit
CN103064657B (zh) * 2012-12-26 2016-09-28 深圳中微电科技有限公司 单个处理器上实现多应用并行处理的方法及装置
CN105027089B (zh) * 2013-03-14 2018-05-22 英特尔公司 内核功能性检查器
US20140333639A1 (en) * 2013-05-13 2014-11-13 Qnx Software Systems Limited System and method for forwarding a graphics command stream
CN105787865B (zh) * 2016-03-01 2018-09-07 西华大学 基于游戏引擎和gpu并行处理的分形图生成与渲染方法

Also Published As

Publication number Publication date
US20180033114A1 (en) 2018-02-01
CN107657580A (zh) 2018-02-02

Similar Documents

Publication Publication Date Title
TW201816608A (zh) 影像處理單元及影像處理單元執行之方法
US10249073B2 (en) Distributed frame buffer and API for scalable parallel rendering
CN107077717B (zh) 促进计算设备上的图形处理单元上的工作负荷执行的动态流水线化
KR101563098B1 (ko) 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛
US10789675B2 (en) Apparatus and method for correcting image regions following upsampling or frame interpolation
TW201706840A (zh) 促進圖形處理命令的動態運行時變換以用於在計算裝置之改善的圖形效能
TWI632524B (zh) 以邊緣爲基礎之覆蓋遮罩壓縮技術
US10515431B2 (en) Global optimal path determination utilizing parallel processing
EP3920029A1 (en) Hierarchical thread scheduling
US20210339130A1 (en) Cloud gaming adaptive synchronization mechanism
TW201631550A (zh) 用於管理一虛擬圖形處理器單元(vgpu)的設備與方法
US9418616B2 (en) Technique for storing shared vertices
WO2017052746A1 (en) Efficient saving and restoring of context information for context switches
US11977895B2 (en) Hierarchical thread scheduling based on multiple barriers
US10546411B2 (en) Directed acyclic graph path enumeration with application in multilevel instancing
US10937126B2 (en) Tile-based multiple resolution rendering of images
US10956359B2 (en) Smart performance of spill fill data transfers in computing environments
TW201706956A (zh) 有助於進行高效圖形命令產生及用於改善在計算裝置中圖形效能的執行
US20170140570A1 (en) Facilitating efficeint centralized rendering of viewpoint-agnostic graphics workloads at computing devices
EP3923137A1 (en) Thread modification to reduce command conversion latency
TW201810179A (zh) 用於虛擬實境和多視角系統之交錯光柵化和像素著色的架構
US20220229576A1 (en) Distributed copy engine
US20180067763A1 (en) Mechanism to Increase Thread Parallelism in a Graphics Processor
JP2021082260A (ja) 並列解凍メカニズム
CN111667396A (zh) 用于支持每命令多个遍历器的系统和方法