TWI776465B - 設置於圖形處理器中的二次卸載裝置和方法 - Google Patents
設置於圖形處理器中的二次卸載裝置和方法 Download PDFInfo
- Publication number
- TWI776465B TWI776465B TW110113316A TW110113316A TWI776465B TW I776465 B TWI776465 B TW I776465B TW 110113316 A TW110113316 A TW 110113316A TW 110113316 A TW110113316 A TW 110113316A TW I776465 B TWI776465 B TW I776465B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- execution
- mentioned
- graphics processor
- engine
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000015654 memory Effects 0.000 claims abstract description 53
- 238000004364 calculation method Methods 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims description 14
- 239000000284 extract Substances 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000005669 field effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 2
- 210000001072 colon Anatomy 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/458—Synchronisation, e.g. post-wait, barriers, locks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Image Generation (AREA)
Abstract
本發明涉及一種設置於圖形處理器中的二次卸載裝置和方法,其中該二次卸載裝置包含:引擎;和計算單元。引擎儲存操作表,並且操作表包含多個記錄。計算單元用於提取多個計算程式碼,其中,計算程式碼包含多個執行指令和多個同步請求;執行每個執行指令;以及依據同步請求發出多個請求給引擎,用於指示引擎依據操作表中的記錄讓圖形處理器中的或圖形處理器外的元件完成操作。本發明通過如上所述的引擎的設置,可讓計算單元得以專注執行自己最具優勢的純計算任務,減少花費時鐘週期以執行純計算以外的任務,並減少對記憶體頻寬的佔用。
Description
本發明涉及用於通用計算領域的圖形處理器,尤指一種設置於圖形處理器中的二次卸載裝置和方法。
目前包含圖形處理器(Graphics Processing Unit,GPU)的計算系統中還包含中央處理器(Central Processing Unit,CPU)。中央處理器適合處理傳統的應用程式的數值運算,而圖形處理器適合處理電腦圖形(Computer Graphics)以及大規模的併發計算。這樣的計算系統被編程後可執行各種應用任務,包含但不限於:線性和非線性資料轉化、資料庫操作、大數據運算、人工智慧計算、音訊、視訊資料的編碼、解碼、建模操作、圖像渲染操作等。為了實現異構高併發的計算,本發明提出一種設置於圖形處理器中的二次卸載裝置和方法。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本發明的實施例涉及一種設置於圖形處理器中的二次卸載裝置,包含:引擎;和計算單元。引擎儲存操作表,並且操作表包含多個記錄。計算單元用於提取多個計算程式碼,其中,上述計算程式碼包含多個執行指令和多個同步請求;執行每個執行指令;以及依據同步請求發出多個請求給引擎,用於指示引擎依據操作表中的記錄讓圖形處理器中的或圖形處理器外的元件完成操作。
本發明還涉及一種在圖形處理器中執行的二次卸載方法,包含:計算單元提取多個計算程式碼,其中,計算程式碼包含多個執行程式碼和多個同步請求;計算單元執行每個執行程式碼;以及計算單元依據同步請求發出多個請求給引擎,用於指示引擎依據操作表中的記錄讓圖形處理器中的或圖形處理器外的元件完成操作。
本發明的實施例還涉及一種設置於圖形處理器中的二次卸載裝置,包含:引擎;以及計算單元。計算單元用於提取多個計算程式碼;當每個計算程式碼適合由計算單元執行時,執行計算程式碼;以及當每個計算程式碼不適合由計算單元執行時,產生相應記錄,並且發出請求和相應記錄給引擎,用於指示引擎依據相應記錄讓圖形處理器中的或圖形處理器外的元件完成操作。
上述實施例的優點之一,通過如上所述的引擎的設置,可讓計算單元得以專注執行自己最具優勢的純計算任務,減少花費時鐘週期以執行純計算以外的任務,並減少對記憶體頻寬的佔用。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
10:電子裝置
100:計算系統
110:圖形處理器
120:命令處理器
130:計算單元
150:DMA/SDMA控制器
160:二級快取
170,185:記憶體
180:中央處理器
190,600:匯流排架構
210~270:裝置程式碼
410:全局同步引擎
412:介面
414:控制器
416:記憶體
440:特殊應用積體電路
450:場效可編程邏輯閘陣列
460:加速器
510:編譯器
532:運行時
534:驅動程式
552:原始程式核
554,830:全局同步引擎操作表
556,850:計算程式碼
570,810:重構後程式核
60:編譯電腦
610:處理單元
620:記憶體
630:顯示介面
640:輸入介面
650:儲存裝置
S710~S760:方法步驟
851~857:重構後程式碼
S910~S960:方法步驟
t1,t2,t3:時間點
圖1為依據本發明實施例的用於實施一次卸載的計算系統的方塊圖。
圖2為依據本發明實施例的裝置程式碼示意圖。
圖3為依據本發明實施例的二次卸載示意圖。
圖4為依據本發明實施例的用於實施二次卸載的計算系統的系統架構圖。
圖5為依據本發明實施例的二次卸載的實施過程示意圖。
圖6為依據本發明實施例的編譯電腦的系統架構圖。
圖7為依據本發明實施例的編譯方法流程圖。
圖8為依據本發明實施例的重構後的程式核的示意圖。
圖9為依據本發明實施例的由計算單元的控制電路執行的控制方法流程圖。
圖10顯示依據本發明實施例的應用二次卸載的順序執行的範例。
圖11顯示依據本發明實施例的應用二次卸載的並行執行的範例。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、”第二”、”第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為”連接”或”耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。
參考圖1。電子裝置10可設置包含圖形處理器(Graphics Processing Unit,GPU)110的計算系統100,讓計算系統100被編程後可執行各種應用任務,包含但不限於:線性和非線性資料轉化、資料庫操作、大數據運算、人工智慧計算、音訊、視訊資料的編碼、解碼、建模操作、圖像渲染操作等。包含圖形處理器110的計算系統100中還包含中央處理器(Central Processing Unit,CPU)180。圖形處理器(Graphics Processing Unit,GPU)110又可稱為通用圖形處理器
(General-Purpose computing on Graphics Processing Unit,GPGPU)。電子裝置10可實施為大型主機、工作站、個人電腦、筆記本電腦(Laptop PC)、平板電腦、行動電話、數位相機、數位攝影機等電子產品。圖形處理器110和中央處理器180各自擁有記憶體170和185,並且通過匯流排架構190相互連接以傳遞資料、地址、控制訊號等,例如快速周邊元件互聯(Peripheral Component Interconnect Express,PCI-E)。
一般來說,中央處理器180和圖形處理器110適合執行的任務不同,中央處理器180較適合處理複雜的循序邏輯、複雜的控制流、與系統的輸入輸出裝置間的交互,而圖形處理器110較適合單指令多資料的併發運算,例如單指令多資料流(Single Instruction Multiple Data,SIMD)指令、單指令多執行緒(Single Instruction Multiple Thread,SIMT)技術等。為了有效運用將圖形處理器110能力,中央處理器180可卸載(Offload)一系列的裝置程式碼給圖形處理器110,其過程大致如下所述:中央處理器180在記憶體185中準備裝置程式碼(Device Code)所需的資料,然後發出命令給圖形處理器110中的命令處理器(Command Processor,CP)120,請求從記憶體185複製資料到圖形處理器110中的記憶體170。命令處理器120可通過直接記憶體存取/系統直接記憶體存取控制器(Direct Memory Access/System Direct Memory Access,DMA/SDMA Controller)150以完成記憶體間的資料複製和儲存。中央處理器180把要執行的裝置程式碼發送給圖形處理器110,然後發送命令給圖形處理器110,用於啟動裝置程式碼的執行。圖形處理器110中的計算單元(Compute Unit,CU)130執行這些裝置程式碼指示的任務,從記憶體170讀取資料、進行各種計算、寫入計算結果到記憶體170。此時,裝置程式碼的執行都由計算單元130統籌。當計算單元130執行完後,通過命令處理器120通知中央處理器180,這些裝置程式碼已
經執行完畢的資訊。中央處理器180接著將記憶體170中的計算結果通過匯流排架構190遷移回記憶體185。這過程也可稱為一次卸載(First Offload)。
舉例來說,參考圖2。裝置程式碼210指示將記憶體170中的資料A預取(Preload)至二級快取160。裝置程式碼220指示對二級快取160中的資料A進行運算。裝置程式碼230指示清理(Flush)二級快取160,用於清除二級快取160中的資料A。裝置程式碼240指示將記憶體170中的資料B預取至二級快取160。裝置程式碼250指示對二級快取160中的資料B進行運算。裝置程式碼260指示清理二級快取160,用於清除二級快取160中的資料B。裝置程式碼270指示對記憶體170中的資料A和B進行歸併操作(All-Reduce Operation)而成為資料C。歸併操作可包含各式各樣的運算,例如,加法、減法、乘法、除法、取大值、取小值、各種比較等。
在一些實施方式中,圖形處理器110讓所有的裝置程式碼的執行都給計算單元130主導。然而,這可能造成計算單元130的工作量龐大,產生系統運行的瓶頸。並且,當計算單元130運行時,圖形處理器110中的其他元件(如命令處理器120、二級快取(Layer 2,L2 Cache)160、直接記憶體存取/系統直接記憶體存控制器150等)都處於等待閒置狀態,造成系統的運行沒有效率。此外,某些裝置程式碼的任務並不適合交由計算單元130完成,而是適合交由其他元件完成,例如二級快取(Layer 2-L2 Cache)160、直接記憶體存取/系統直接記憶體存控制器150等。舉例來說,裝置程式碼210、230~240、260~270就不適合交由計算單元130完成。如果讓計算單元130執行裝置程式碼210或240的任務,則計算單元130需要發出命令給記憶體170,用於從記憶體170中的指定地址讀取資料並儲存至二級快取160。如果讓計算單元130執行裝置程式碼230或260的任務,則計算單元130需要發出命令給記憶體170,用於清除二級快取160
中指定地址的資料。如果讓計算單元130執行裝置程式碼270的任務,則計算單元130依序發出命令給記憶體170及二級快取160,用於分別從記憶體170中的指定地址讀取資料A和B並儲存至二級快取160,以及從二級快取160的指定地址讀取資料A和B並儲存至計算單元130中的一級快取(Layer 1-L1 Cache),並且在運算完成後依序發出命令給二級快取160及記憶體170,用於分別從計算單元130中的一級快取讀取資料C並儲存至二級快取160,以及從二級快取160讀取資料C並儲存至記憶體170中的指定地址。因此,由計算單元130主導執行上述裝置程式碼的任務可能阻塞了後續裝置程式碼的執行,消耗大量的時間(也就是圖形處理器110的時鐘週期)、記憶體頻寬(Memory Bandwidth)等寶貴的系統資源,影響整體性能。
為瞭解決上述實施方式的缺點,從一個方面來說,本發明實施例在圖形處理器110執行二次卸載(Secondary Offload),用於將中央處理器180傳送來的裝置程式碼的任務再交給適合的元件執行,包含圖形處理器110之中的或圖形處理器110外的適合元件。
在二次卸載的一些實施例,參考圖3,圖形處理器110可將裝置程式碼220和250的任務交給計算單元130完成。計算單元130可執行各式各樣的操作,例如,整數、浮點數的加法和乘法計算、比較操作、布林(Boolean)運算、位元位移、代數函數(如平面插值、三角函數、指數函數、對數函數)等。圖形處理器110可將裝置程式碼210、230、240和260的任務交給二級快取160完成,並可將裝置程式碼270的任務交給DMA/SDMA控制器150完成,讓DMA/SDMA控制器150直接從記憶體170中的指定地址讀取資料並儲存至計算單元130中的一級快取,並且從計算單元130的一級快取讀取計算結果並儲存至記憶體170中的指定地址。
在二次卸載的另一些實施例,圖形處理器110可將特定裝置程式碼的任務交給圖形處理器110外但不包含中央處理器180的元件執行,
例如特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、場效可編程邏輯閘陣列(Field Programmable Gate Array,FPGA)、加速器(Accelerator)等。
在二次卸載的另一些實施例,圖形處理器110可將適合中央處理器180執行的裝置程式碼再交回給中央處理器180,例如,包括大段循序邏輯、複雜控制流(如If-else條件判斷跳轉)、與系統輸入輸出有大量交互的裝置程式碼等。
從一個方面來說,參考圖4,為了實現二次卸載來提升系統的整體效能,本發明實施例在圖形處理器110中設置全局同步引擎(Global Synchronization Engine,GSE)410,用於搭配計算單元130執行各種類型的順序和併發任務。全局同步引擎410通過內部匯流排架構420與命令處理器120、計算單元130、DMA/SDMA控制器150、二級快取160、記憶體170和其他元件相互連接以傳遞裝置程式碼、資料、地址、控制訊號等,並且通過命令處理器120和外部匯流排架構190與中央處理器180、特殊應用積體電路440、場效可編程邏輯閘陣列450、加速器460和其他元件相互連接以傳遞裝置程式碼、資料、地址、控制訊號等。如上所述的元件形成異構系統(Heterogenous System),而全局同步引擎410則用於協調異構系統中各個模組的工作。全局同步引擎410包含控制器414,用於完成裝置程式碼的二次卸載的工作。全局同步引擎410還包含介面412和記憶體416,介面412用於使用特定通信協定於其他設置在內部匯流排架構420上的其他模組通信,記憶體416用於儲存即將進行執行操作的必要資訊。
從另一個方面來說,參考圖5,本發明實施例不要求程式開發者因應如圖4的硬體架構來編寫程式碼,而是通過編譯器510分析程式開發者已經編寫完成的程式核(Kernel)552中的執行程式碼,把程式核552中的執行程式碼重新組織成適應於如圖4所述的異構系統的程
式核570,包含GSE操作表(Operation Table)554和計算程式碼556,使得命令處理器120將計算程式碼556交給計算單元130執行,並且把GSE操作表554交給全局同步引擎410,使得全局同步引擎410據以指示其他元件執行特定任務(也可稱為二次卸載),如DMA/SDMA控制器150、二級快取160、記憶體170、中央處理器180、特殊應用積體電路440、場效可編程邏輯閘陣列450、加速器460等。
整個實施過程可分為兩個階段:編譯階段;和運行階段。在編譯階段,編譯器510進行程式碼的重構。在運行階段,通過命令處理器120和全局同步引擎410的協同合作,實現多模組(或元件)的併發執行。
通常,程式開發者可通過編譯電腦完成編譯階段。參考圖6,編譯電腦60包含處理單元610、記憶體620、顯示介面630、輸入介面640和儲存裝置650。處理單元610可使用多種方式實施,如使用通用硬體(例如,單處理器、具有並行處理能力的多處理器、圖形處理器或其他具有運算能力的處理器),並且在執行編譯器510的程式碼時,提供如後所述的功能。記憶體620可為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM),提供揮發性的儲存空間,用於快取處理單元610在執行編譯的過程中所需要的資料,例如,變數、資料表等,以及從儲存裝置650讀取的資料,例如待分析的程式核552。儲存裝置650可為硬碟(Hard Disk)、固態硬碟等,提供非揮發性的儲存空間,用於儲存重構後的GSE操作表554和計算程式碼556。處理單元610另可通過顯示介面630和輸入介面640分別連接顯示器和輸入裝置。
在編譯階段中,處理單元610載入並執行編譯器510的程式碼時可實現如圖7所示的方法流程圖,用於根據原來的程式核552中的執行程式碼產生可適應於如圖4所述的異構系統的程式核570,包含GSE操
作表554和計算程式碼556。在另一些實施例中,GSE操作表554和計算程式碼556也可讓不同於圖4所述的異構系統實現多模組的併發執行,本發明並不因此受限制。詳細步驟說明如下:
步驟S710:獲取原始程式核552中的第一個或下一個執行程式碼。
步驟S720:判斷獲取的執行程式碼的操作是否適合由計算單元130執行。如果是,流程繼續進行步驟S730的處理。否則,流程繼續進行步驟S740的處理。當編譯器510發現獲取的執行程式碼的操作不適合由計算單元130執行時,就把這個執行程式碼標注出來。舉例來說,以下操作不適合由計算單元130執行:從記憶體中預取資料至二級快取的操作;對二級快取的指定局部進行清理的操作;對記憶體中的多段資料進行歸併操作;大段循序邏輯的操作;具有複雜的控制流的操作(如If-else條件判斷跳轉等);與系統輸入輸出有大量交互的操作。
步驟S730:將獲取的執行程式碼增加到重構後的計算程式碼556。這個新增到重構後計算程式碼556中的執行程式碼又可稱為執行指令。此外,編譯器510更判斷此執行程式碼的執行是否需要等待之前獲取的執行程式碼執行完畢。如果需要,新增此執行程式碼需要同步的資訊。如果不需要,新增此執行程式碼不需要同步的資訊。編譯器510可使用同步旗標(Synchronization Flag)來表示:「1」代表需要;「0」代表不需要。新增到重構後的計算程式碼556的執行順序相符於獲取的執行程式碼在原始程式核552中的順序。
步驟S740:增加相應於獲取的執行程式碼的記錄(Entry)至GSE操作表554。記錄中包含此操作由哪個模組(如DMA/SDMA控制器150、二級快取160、記憶體170、中央處理器180、特殊應用積體電路440、場效可編程邏輯閘陣列450、加速器460或其他不是計算單
元130的元件)運行的資訊。例如,步驟S720中範例的第一個和第二個操作適合由二級快取160執行,第三個操作適合由DMA/SDMA控制器150執行,第四個至第六個操作適合中央處理器180執行。此外,記錄中還包含此操作如何運行的資訊,如操作命令和操作參數,相應於步驟S710中獲取的執行程式碼。
步驟S750:增加同步請求(Synchronization Hook)至重構後的計算程式碼556,每個同步請求攜帶參數,用於指向GSE操作表554的新增加記錄。此外,編譯器510更判斷此同步請求的執行是否需要等待之前獲取的執行程式碼執行完畢。如果需要,新增此同步請求需要同步的資訊。如果不需要,新增此同步請求不需要同步的資訊。編譯器510可使用同步旗標來表示:「1」代表需要;「0」代表不需要。增加到重構後的計算程式碼556的同步請求的順序相符於獲取的執行程式碼在原始程式核552中的順序。
步驟S760:判斷是否原始程式核552中的所有執行程式碼都處理完畢。如果是,結束編譯。否則,流程繼續進行步驟S710的處理。
參考圖5中的範例,由於原始程式核552中的執行程式碼1和執行程式碼3不適合交給計算單元130執行,因此,通過編譯器510編譯後,GSE操作表554中包含了兩個記錄,第一個記錄儲存了操作1適合由那個模組運行以及如何運行的資訊,而第二個記錄儲存了操作3適合由那個模組運行以及如何運行的資訊。在重構後的計算程式碼556中,原來的執行程式碼1被替換成同步請求,攜帶指向GSE操作表554中第一個記錄的資訊,並且原來的執行程式碼3被替換成同步請求,攜帶指向GSE操作表554中第二個記錄的資訊。編譯後的GSE操作表554和計算程式碼556會儲存到電子裝置10中的儲存裝置,使得通用圖形處理器100能夠運行重構後的程式核570。
在另一些實施例中,電子裝置10也可用於完成編譯階段。中央處理器180可載入並執行編譯器510的程式碼已完成如圖7所示的方法流程圖,本發明並不局限於用專屬的編譯電腦完成編譯階段。
參考圖5,中央處理器180可執行運行時(Runtime)532和驅動程式534的程式碼。在運行階段,運行時532收到用戶請求運行程式核570的程式碼之後,把程式核570交給驅動程式534。驅動程式534發現程式核570包含兩個部分:GSE操作表554和計算程式碼556。於是,驅動程式534通知命令處理器120載入程式核570(也可當作啟動一次卸載)。命令處理器120將GSE操作表554儲存到全局同步引擎410中的記憶體416,使得全局同步引擎410中的控制器414能夠完成GSE操作表554中指示的操作。接著,命令處理器120將計算程式碼556交給計算單元130,啟動程式碼的執行。
參考圖8的另一個範例,命令處理器120接收到程式核810,包含GSE操作表830和計算程式碼850。GSE操作表830包含四筆記錄,每筆記錄中的冒號之前包含由那個模組運行的資訊(例如,「L2」代表二級快取160,「DMA」代表DMA/SDMA控制器150等),每筆記錄中的冒號之後包含如何運行的資訊(細節可參考以上關於圖2的說明)。計算程式碼850包含七個程式碼851至857。其中,程式碼851、853、855和856是同步請求,每個同步請求都帶有同步旗標(顯示在括弧中),「S」代表需要同步,「NS」代表不需要同步。程式碼852、854和857是能夠讓計算單元130執行的程式碼,每個程式碼都帶有同步旗標(顯示在括弧中),「S」代表需要同步,「NS」代表不需要同步。
計算單元130包含控制電路,用於控制計算程式碼850的執行。參考圖9所示的由計算單元130的控制電路執行的控制方法流程圖。
步驟S910:提取計算程式碼850中的第一個或下一個程式碼。
步驟S920:判斷此程式碼是否能夠被執行。如果是,則流程繼續進行步驟S940的處理。否則,流程繼續進行步驟S930的處理。舉例來說,當此程式碼所關聯的同步旗標指出不需要等待前一個程式碼執行完畢時,代表此程式碼能夠被執行。當此程式碼所關聯的同步旗標指出需要等待前一個程式碼執行完畢且前一個程式碼已經執行完畢時,代表此程式碼能夠被執行。當此程式碼所關聯的同步旗標指出需要等待前一個程式碼執行完畢且前一個程式碼還沒執行完畢時,代表此程式碼不能夠被執行。
步驟S930:等待一段預設的時間。
步驟S940:判斷提取的程式碼是否是同步請求。如果是,則流程繼續進行步驟S960的處理。否則(也就是提取的程式碼是能夠被計算單元執行的程式碼),流程繼續進行步驟S950的處理。
步驟S950:依據程式碼執行指定的計算。
步驟S960:向全局同步引擎410發出攜帶記錄編號的請求。全局同步引擎410收到請求後,搜索GSE操作表830以獲取記錄編號所指的記錄,並且依據記錄中的資訊通過命令處理器120發出適當命令給適當的元件。全局同步引擎410從元件收到執行完畢的資訊後,通知計算單元130此請求已經完成的資訊。
參考圖10。由於程式碼852需要等待前一個程式碼執行完畢才能繼續執行,因此計算單元130在時間點t1為程式碼851發出請求和記錄編號#1給全局同步引擎410後,程式碼852不能馬上被執行。全局同步引擎410中的控制器414通過介面412收到請求後,搜索記憶體416中的GSE操作表830以獲取記錄編號#1的記錄,依據記錄編號#1的記錄內容通過介面412以指示命令處理器120發出命令給二級快取160,用於將記憶體170中的資料A預取至二級快取160。全局同步引擎410中的控制器414通過介面412從二級快取160收到執行完畢的資訊後,在時間點t2通過介面412通知計算單元130關於此請求已經處
理完成的資訊。之後,在時間點t3,計算單元130依據程式碼852的指示對二級快取160中的資料A進行運算。
參考圖11。由於程式碼857不需要等待前一個程式碼執行完畢就能夠被執行,因此計算單元130在時間點t1為程式碼856發出請求和記錄編號#4給全局同步引擎410後,就能在時間點t2執行程式碼857,用於對二級快取160中的資料D進行運算。全局同步引擎410中的控制器414通過介面412收到請求後,搜索記憶體416中的GSE操作表830以獲取記錄編號#4的記錄,依據記錄編號#4的記錄內容通過介面412以指示命令處理器120發出命令給DMA/SDMA控制器150,用於對記憶體170中的資料A和B進行歸併操作而成為資料C。全局同步引擎410中的控制器414通過介面412從DMA/SDMA控制器150收到執行完畢的資訊後,在時間點t3通過介面412通知計算單元130關於此請求已經處理完成的資訊。因此,在時間點t1至t3之間,計算單元130和DMA/SDMA控制器150都在運行,提高了併發度,能夠減少程式核810的執行時間。
上述實施例的優點之一,通過上述全局同步引擎410的設置和程式核的重構,可讓計算單元130可以專注執行自己最具優勢的純計算任務,減少花費時鐘週期以執行純計算以外的任務,並減少對記憶體頻寬的佔用。
上述實施例的另一個優點,由於二次卸載可通過上述全局同步引擎410讓適合的操作給中央處理器180或者圖形處理器110外的其他元件執行,提供更多的應用彈性。
傳統整個程式核的執行會在中央處理器180和圖形處理器110間交替執行,使得整個程式核包含交錯的GPU程式碼和CPU程式碼。當中央處理器180執行完CPU程式碼後,將後續的GPU程式碼(也就是裝置程式碼)卸載到圖形處理器110執行。待圖形處理器110執行完後,中央處理器180再接著執行另一段CPU程式碼。如此反覆交替
到整個程式核執行完成。然而這樣頻繁的卸載和等待圖形處理器110執行完畢的交互也降低執行效率。上述實施例的另一個優點在於,中央處理器180可一次性卸載更多的裝置程式碼給圖形處理器110,再由上述全局同步引擎410將其中少數適合的操作二次卸載回中央處理器180,避免過多的中央處理器180和圖形處理器110之間的任務提交與等待,提高運算資源的利用率。
在另一些實施例中,GSE操作表554和計算程式碼556可以不在編譯階段由編譯器510產生,替代性地,在運行階段由計算單元130產生。計算單元130在原來的程式核552中發現不適合自己執行的執行程式碼時,直接產生如GSE操作表554或830所述的相應記錄,並把產生的相應記錄和請求一起傳送給全局同步引擎410,用於指示全局同步引擎410依據此相應記錄讓圖形處理器110中的或圖形處理器110外的元件完成操作。所屬技術領域人員可適度修改圖9的步驟S940和S960,用於整合如上所述的技術方案。
本發明所述的方法中的全部或部分步驟可以計算機指令實現,例如編譯器、執行時、驅動程式等。此外,也可實現於其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成計算機指令,為求簡潔不再加以描述。依據本發明實施例方法實施的計算機指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1、圖4、圖6中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖7、圖9的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個
步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
110:圖形處理器
120:命令處理器
130:計算單元
150:DMA/SDMA控制器
160:二級快取
170:記憶體
180:中央處理器
410:全局同步引擎
440:特殊應用積體電路
450:場效可編程邏輯閘陣列
460:加速器
510:編譯器
532:運行時
534:驅動程式
552:原始程式核
554:全局同步引擎操作表
556:計算程式碼
570:重構後程式核
Claims (20)
- 一種二次卸載裝置,設置於圖形處理器中,包含:引擎,儲存操作表,上述操作表包含多個記錄;以及計算單元,耦接上述引擎,用於提取多個計算程式碼,其中,上述計算程式碼包含多個執行程式碼和多個同步請求;執行每個上述執行程式碼;以及依據上述同步請求發出多個請求給上述引擎,用於指示上述引擎依據上述操作表中的記錄讓上述圖形處理器中的或上述圖形處理器外的元件完成操作。
- 如請求項1所述的二次卸載裝置,其中,上述引擎包括:記憶體,儲存上述操作表;介面;以及控制器,耦接上述記憶體和上述介面,通過上述介面從上述計算單元收到包含記錄編號的每個上述請求後,搜索上述操作表以獲取相應於上述記錄編號的記錄,依據上述獲取的記錄的內容通過上述介面以指示命令處理器發出命令給上述圖形處理器中的或上述圖形處理器外的元件。
- 如請求項2所述的二次卸載裝置,其中,上述命令處理器設置在上述圖形處理器之中。
- 如請求項2所述的二次卸載裝置,其中,上述控制器通過上述介面從上述圖形處理器中的或上述圖形處理器外的上述元件收到執行完畢的信息後,通過上述介面通知上述計算單元關於相應請求已經處理完成的信息。
- 如請求項1所述的二次卸載裝置,其中,上述計算單元判斷每個上述執行程式碼或同步請求是否能夠被執行;如果上述執行程式碼能夠被執行,則執行上述執行程式碼;如果上述同步請求能夠被執行,則發出請求給上述引擎;如果上述執行程式碼或同步請求不能夠被執行,則等待一段時間後再進行下回合的判斷。
- 如請求項5所述的二次卸載裝置,其中,當上述執行程式碼或同步請求所關聯的同步旗標指出不需要等待前一個程式碼執行完畢時,或者當上述執行程式碼或同步請求所關聯的同步旗標指出需要等待前一個程式碼執行完畢且前一個程式碼已經執行完畢時,上述執行程式碼或同步請求能夠被執行;當上述執行程式碼或同步請求所關聯的同步旗標指出需要等待前一個程式碼執行完畢且前一個程式碼還沒執行完畢時,上述執行程式碼或同步請求不能夠被執行。
- 如請求項1所述的二次卸載裝置,其中,每個上述記錄包含一個操作由上述圖形處理器中的或上述圖形處理器外的特定元件運行的信息,以及包含上述操作如何運行的信息。
- 如請求項7所述的二次卸載裝置,其中,每個上述記錄包含操作命令和操作參數。
- 如請求項1所述的二次卸載裝置,其中,上述圖形處理器中的元件為二級快取或直接記憶體存取/系統直接記憶體存取控制器,以及上述圖形處理器外的元件為中央處理器。
- 一種二次卸載方法,由圖形處理器中的計算單元和引擎共同執行,包含: 上述計算單元提取多個計算程式碼,其中,上述計算程式碼包含多個執行程式碼和多個同步請求;上述計算單元執行每個上述執行程式碼;以及上述計算單元依據上述同步請求發出多個請求給上述引擎,用於指示上述引擎依據操作表中的記錄讓上述圖形處理器中的或上述圖形處理器外的元件完成操作。
- 如請求項10所述的二次卸載方法,包含:當上述引擎從上述計算單元收到包含記錄編號的每個上述請求後,搜索上述操作表以獲取相應於上述記錄編號的記錄,依據上述獲取的記錄的內容指示命令處理器發出命令給上述圖形處理器中的或上述圖形處理器外的元件。
- 如請求項11所述的二次卸載方法,包含:當上述引擎從上述圖形處理器中的或上述圖形處理器外的上述元件收到執行完畢的信息後,通知上述計算單元關於相應請求已經處理完成的信息。
- 如請求項10所述的二次卸載方法,包含:上述計算單元判斷每個上述執行程式碼或同步請求是否能夠被執行;如果上述執行程式碼能夠被執行,則上述計算單元執行上述執行程式碼;如果上述同步請求能夠被執行,則上述計算單元發出請求給上述引擎;以及如果上述執行程式碼或同步請求不能夠被執行,則等待一段時間後再進行下回合的判斷。
- 如請求項13所述的二次卸載方法,其中,當上述執行程式碼或同步請求所關聯的同步旗標指出不需要等待前一個程式碼執行完畢時,或者當上述執行程式碼或同步請求所關聯的同步旗標指出需要等待前一個程式碼執行完畢且前一個程式碼已經執行完畢時,上述執行程式碼或同步請求能夠被執行;當上述執行程式碼或同步請求所關聯的同步旗標指出需要等待前一個程式碼執行完畢且前一個程式碼還沒執行完畢時,上述執行程式碼或同步請求不能夠被執行。
- 如請求項10所述的二次卸載方法,其中,每個上述記錄包含一個操作由上述圖形處理器中的或上述圖形處理器外的特定元件運行的信息,以及包含上述操作如何運行的信息。
- 如請求項15所述的二次卸載方法,其中,每個上述記錄包含操作命令和操作參數。
- 如請求項10所述的二次卸載方法,其中,上述圖形處理器中的元件為二級快取或直接記憶體存取/系統直接記憶體存取控制器,以及上述圖形處理器外的元件為中央處理器。
- 一種二次卸載裝置,設置於圖形處理器中,包含:引擎;以及計算單元,耦接上述引擎,用於提取多個計算程式碼;當每個上述計算程式碼適合由上述計算單元執行時,執行上述計算程式碼;以及當每個上述計算程式碼不適合由上述計算單元執行時,產生相應記錄,並且發出請求和上述相應記錄給上述引擎,用於指示上述引擎依據上述相應記錄讓上述圖形處理器中的或上述圖形處理器外的元件完成操作。
- 如請求項18所述的二次卸載裝置,其中,每個上述相應記錄包含一個操作由上述圖形處理器中的或上述圖形處理器外的特定元件運行的信息,以及包含上述操作如何運行的信息。
- 如請求項19所述的二次卸載裝置,其中,每個上述相應記錄包含操作命令和操作參數。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011140493.0 | 2020-10-22 | ||
CN202011140493.0A CN112214443B (zh) | 2020-10-22 | 2020-10-22 | 设置于图形处理器中的二次卸载装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202217559A TW202217559A (zh) | 2022-05-01 |
TWI776465B true TWI776465B (zh) | 2022-09-01 |
Family
ID=74054870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110113316A TWI776465B (zh) | 2020-10-22 | 2021-04-14 | 設置於圖形處理器中的二次卸載裝置和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11663044B2 (zh) |
CN (1) | CN112214443B (zh) |
TW (1) | TWI776465B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230147472A1 (en) * | 2021-11-11 | 2023-05-11 | Samsung Electronics Co., Ltd. | Neural network training with acceleration |
CN118296084B (zh) * | 2024-06-04 | 2024-09-20 | 北京壁仞科技开发有限公司 | 数据处理设备、指令同步方法、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1266598C (zh) * | 2001-10-31 | 2006-07-26 | 精工爱普生株式会社 | 用于应用程序执行的动态java类的加载 |
TW200811658A (en) * | 2005-12-14 | 2008-03-01 | Nvidia Corp | Chipset security offload engine |
CN104798056A (zh) * | 2012-12-21 | 2015-07-22 | 英特尔公司 | 将触摸处理卸载到图形处理器 |
TW201616383A (zh) * | 2011-12-16 | 2016-05-01 | 英特爾股份有限公司 | 對遠端伺服器的安全使用者認證及驗證 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7920701B1 (en) | 2004-12-15 | 2011-04-05 | Nvidia Corporation | System and method for digital content protection |
EP2383648B1 (en) | 2010-04-28 | 2020-02-19 | Telefonaktiebolaget LM Ericsson (publ) | Technique for GPU command scheduling |
CN102073543B (zh) * | 2011-01-14 | 2013-03-20 | 上海交通大学 | 通用处理器与图形处理器融合系统及其融合方法 |
US10013731B2 (en) * | 2011-06-30 | 2018-07-03 | Intel Corporation | Maximizing parallel processing in graphics processors |
US20130113809A1 (en) | 2011-11-07 | 2013-05-09 | Nvidia Corporation | Technique for inter-procedural memory address space optimization in gpu computing compiler |
US8707314B2 (en) * | 2011-12-16 | 2014-04-22 | Advanced Micro Devices, Inc. | Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations |
US9891949B2 (en) | 2013-03-06 | 2018-02-13 | Nvidia Corporation | System and method for runtime scheduling of GPU tasks |
US10235732B2 (en) * | 2013-12-27 | 2019-03-19 | Intel Corporation | Scheduling and dispatch of GPGPU workloads |
KR101585980B1 (ko) * | 2014-04-11 | 2016-01-19 | 전자부품연구원 | 멀티-프로세서의 공유 메모리를 적극 활용한 cr 알고리즘 처리 방법 및 이를 적용한 프로세서 |
WO2016039774A1 (en) * | 2014-09-12 | 2016-03-17 | Intel Corporation | Facilitating dynamic parallel scheduling of command packets at graphics processing units on computing devices |
CN110063044B (zh) * | 2016-10-07 | 2024-05-14 | 施耐德电气系统美国股份有限公司 | 可扩展模块化网络节点的通信和/或控制的系统和方法 |
GB2563589B (en) * | 2017-06-16 | 2019-06-12 | Imagination Tech Ltd | Scheduling tasks |
US20190332420A1 (en) * | 2018-04-27 | 2019-10-31 | Advanced Micro Devices, Inc. | Feedback guided split workgroup dispatch for gpus |
GB2575294B8 (en) * | 2018-07-04 | 2022-07-20 | Graphcore Ltd | Host Proxy On Gateway |
GB2580135B (en) * | 2018-12-21 | 2021-01-20 | Graphcore Ltd | Handling exceptions in a multi-tile processing arrangement |
GB2580428B (en) * | 2019-01-11 | 2021-08-25 | Graphcore Ltd | Handling exceptions in a machine learning processor |
US11010208B1 (en) * | 2019-10-25 | 2021-05-18 | Graphcore Limited | Sync groupings |
CN110852300A (zh) | 2019-11-19 | 2020-02-28 | 中煤航测遥感集团有限公司 | 地物分类的方法、地图的绘制方法、装置及电子设备 |
-
2020
- 2020-10-22 CN CN202011140493.0A patent/CN112214443B/zh active Active
-
2021
- 2021-04-14 TW TW110113316A patent/TWI776465B/zh active
- 2021-07-02 US US17/366,383 patent/US11663044B2/en active Active
-
2023
- 2023-04-21 US US18/305,085 patent/US20230267011A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1266598C (zh) * | 2001-10-31 | 2006-07-26 | 精工爱普生株式会社 | 用于应用程序执行的动态java类的加载 |
TW200811658A (en) * | 2005-12-14 | 2008-03-01 | Nvidia Corp | Chipset security offload engine |
TW201616383A (zh) * | 2011-12-16 | 2016-05-01 | 英特爾股份有限公司 | 對遠端伺服器的安全使用者認證及驗證 |
CN104798056A (zh) * | 2012-12-21 | 2015-07-22 | 英特尔公司 | 将触摸处理卸载到图形处理器 |
Also Published As
Publication number | Publication date |
---|---|
TW202217559A (zh) | 2022-05-01 |
CN112214443B (zh) | 2021-12-03 |
US20230267011A1 (en) | 2023-08-24 |
US11663044B2 (en) | 2023-05-30 |
US20220129272A1 (en) | 2022-04-28 |
CN112214443A (zh) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI525540B (zh) | 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 | |
Breß et al. | GPU-accelerated database systems: Survey and open challenges | |
US9336564B2 (en) | GPU enabled database systems | |
JP2966085B2 (ja) | 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法 | |
US4794521A (en) | Digital computer with cache capable of concurrently handling multiple accesses from parallel processors | |
EP2950211B1 (en) | Parallelism extraction method and method for making program | |
US7058945B2 (en) | Information processing method and recording medium therefor capable of enhancing the executing speed of a parallel processing computing device | |
US9619298B2 (en) | Scheduling computing tasks for multi-processor systems based on resource requirements | |
US10402223B1 (en) | Scheduling hardware resources for offloading functions in a heterogeneous computing system | |
TWI776465B (zh) | 設置於圖形處理器中的二次卸載裝置和方法 | |
JP2007328415A (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
US20220121444A1 (en) | Apparatus and method for configuring cooperative warps in vector computing system | |
US10318261B2 (en) | Execution of complex recursive algorithms | |
US9841957B2 (en) | Apparatus and method for handling registers in pipeline processing | |
WO2018076979A1 (zh) | 一种指令间数据依赖的检测方法和装置 | |
TWI807301B (zh) | 適應於圖形處理器的二次卸載的編譯裝置和方法和電腦程式產品 | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
US20120137300A1 (en) | Information Processor and Information Processing Method | |
Li et al. | XeFlow: Streamlining inter-processor pipeline execution for the discrete CPU-GPU platform | |
Stotland et al. | Image computing library for a next-generation VLIW multimedia processor | |
Vishkin | From algorithm parallelism to instruction-level parallelism: An encode-decode chain using prefix-sum | |
CN103744698A (zh) | Dsp工程的高效运行方法及系统 | |
KR20110067795A (ko) | 실시간 프로세스의 응답성 개선을 위한 tcm운용방법 | |
JP2846536B2 (ja) | マルチプロセッサ | |
Ding | Exploiting Hardware Abstraction for Parallel Programming Framework: Platform and Multitasking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |