TWI694412B - 在多核心影像處理器上之應用程式軟體之組態 - Google Patents

在多核心影像處理器上之應用程式軟體之組態 Download PDF

Info

Publication number
TWI694412B
TWI694412B TW107104239A TW107104239A TWI694412B TW I694412 B TWI694412 B TW I694412B TW 107104239 A TW107104239 A TW 107104239A TW 107104239 A TW107104239 A TW 107104239A TW I694412 B TWI694412 B TW I694412B
Authority
TW
Taiwan
Prior art keywords
core
cores
template
data
processor
Prior art date
Application number
TW107104239A
Other languages
English (en)
Other versions
TW201901608A (zh
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 TW201901608A publication Critical patent/TW201901608A/zh
Application granted granted Critical
Publication of TWI694412B publication Critical patent/TWI694412B/zh

Links

Images

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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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 the load
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)

Abstract

本發明描述一種方法。該方法包含針對待在一影像處理器上執行之具有複數個內核的一程式之內核至內核連接計算資料傳送度量。該影像處理器包含複數個處理核心及連接該複數個處理核心之一網路。該等內核至內核連接之各者包含待在該等處理核心之一者上執行之一生產內核及待在該等處理核心之另一者上執行之一消費內核。該消費內核用以操作由該生產內核產生之資料。該方法亦包含基於該等經計算資料傳送度量將該複數個內核之內核指派給該等處理核心之各自者。

Description

在多核心影像處理器上之應用程式軟體之組態
本發明之領域大體上係關於運算科學且更具體言之,係關於在多核心影像處理器上之應用程式軟體之組態。
影像處理通常涉及處理組織成一陣列之像素值。此處,一空間組織二維陣列擷取影像之二維性質(額外維度可包含時間(例如,二維影像之一序列)及資料類型(例如,色彩))。在一典型案例中,由已產生一靜止影像或一系列圖框之一攝影機提供陣列式像素值以擷取運動影像。傳統影像處理器通常落於兩個極端之任一端上。 一第一極端執行如在一通用處理器或似通用處理器(例如,具有向量指令增強之一通用處理器)上執行之軟體程式之影像處理任務。儘管第一極端通常提供一高度通用的應用程式軟體開發平台,但其使用與相關聯額外負擔(例如,指令提取及解碼、晶片上及晶片外資料之處置、臆測執行)組合之細粒化資料結構最終導致在執行程式碼期間每單位資料消耗較大量能量。 一第二、對置極端將固定功能固線式電路應用於大得多之資料單元。使用直接應用於客製化設計電路之較大資料單元(與細粒化資料單元相比)大大地降低每單位資料之電力消耗。然而,使用客製化設計之固定功能電路一般導致處理器能夠執行之任務集受限。因而,在第二極端中缺乏用途廣泛的程式化環境(與第一極端相關聯)。 提供高度通用的應用程式軟體開發機會與每單位資料之經改善功率效率兩者之一技術平台仍係一種有待找尋之解決方案。
描述一種方法。該方法包含針對待在一影像處理器上執行之具有複數個內核的一程式之內核至內核連接計算資料傳送度量。該影像處理器包含複數個處理核心及連接該複數個處理核心之一網路。該等內核至內核連接之各者包含待在該等處理核心之一者上執行之一生產內核及待在該等處理核心之另一者上執行之一消費內核。該消費內核用以操作由該生產內核產生之資料。該方法亦包含基於該等經計算資料傳送度量將該複數個內核之內核指派給該等處理核心之各自者。 因此,更通用應用程式處理可結合經改善運算及能量效率使用。 例如,內核至內核連接可為在內核之間傳遞的資料之路線且資料傳送度量可描述內核之間的介面(例如,跳躍)之速度、頻率、數目及/或在內核之間傳送的資料之類型。 視情況,該影像處理器進一步包括複數個緩衝器單元,該等緩衝器單元用以儲存及轉送該等內核至內核連接之資料。 視情況,該等緩衝器單元進一步包括用以儲存及轉送一內核至內核連接之一影像的線群組之線緩衝器單元。 視情況,該等資料傳送度量之該計算進一步包括基於該網路內生產內核與消費內核之間的節點跳躍之數目將權重指派給該等內核至內核連接。 視情況,該等資料傳送度量之該計算進一步包括基於生產內核與消費內核之間經由該網路傳送的影像之大小將權重指派給該等內核至內核連接。 視情況,將該等內核指派給該等處理核心之各自者進一步包括:計算該程式之不同組態之權重,該程式之各組態包括對該等處理核心之一不同內核指派集,其中計算一特定組態之一權重係基於針對該特定組態之特定內核至內核連接計算的該等資料傳送度量之一子集;及選擇該等組態中具有最佳權重之一者。 根據一進一步態樣,提供一種含有程式碼之非暫時性機器可讀儲存媒體,該程式碼在由一運算系統處理時引起該運算系統執行一方法,該方法包括:針對待在一影像處理器上執行之包括複數個內核的一程式之內核至內核連接計算資料傳送度量,該影像處理器包括複數個處理核心及連接該複數個處理核心之一網路,該等內核至內核連接之各者包括待在該等處理核心之一者上執行之一生產內核及待在該等處理核心之另一者上執行之一消費內核,該消費內核用以操作由該生產內核產生之資料;及基於該等經計算資料傳送度量將該複數個內核之內核指派給該等處理核心之各自者。 視情況,該影像處理器包括複數個緩衝器單元,該等緩衝器單元用以儲存及轉送該等內核至內核連接之資料。 視情況,該等緩衝器單元進一步包括用以儲存及轉送一內核至內核連接之一影像的線群組之線緩衝器單元。 視情況,該等資料傳送度量之該計算進一步包括基於在該網路內、介於生產內核與消費內核之間的節點跳躍之數目將權重指派給該等內核至內核連接。 視情況,該等資料傳送度量之該計算進一步包括基於生產內核與消費內核之間經由該網路傳送的影像之大小將權重指派給該等內核至內核連接。 視情況,將該等內核指派給該等處理核心之各自者進一步包括:計算該程式之不同組態之權重,該程式之各組態包括對該等處理核心之一不同內核指派集,其中計算一特定組態之一權重係基於針對該特定組態之特定內核至內核連接計算的該等資料傳送度量之一子集;及選擇該等組態中具有最佳權重之一者。 視情況,該等處理核心包括一執行道陣列及一個二維位移暫存器陣列。 根據一進一步態樣,提供一種運算系統,其包括:複數個通用處理核心;一系統記憶體;一記憶體控制器,其介於該系統記憶體與該複數個通用處理核心之間;一非暫時性機器可讀儲存媒體,其含有程式碼,該程式碼在由該運算系統處理時引起該運算系統執行一方法,該方法包括:針對待在一影像處理器上執行之包括複數個內核的一程式之內核至內核連接計算資料傳送度量,該影像處理器包括複數個處理核心及連接該複數個處理核心之一網路,該等內核至內核連接之各者包括待在該等處理核心之一者上執行之一生產內核及待在該等處理核心之另一者上執行之一消費內核,該消費內核用以操作由該生產內核產生之資料;及基於該等經計算資料傳送度量將該複數個內核之內核指派給該等處理核心之各自者。 視情況,該影像處理器包括複數個緩衝器單元,該等緩衝器單元用以儲存及轉送該等內核至內核連接之資料。 視情況,其中該等緩衝器單元進一步包括用以儲存及轉送一內核至內核連接之一影像的線群組之線緩衝器單元。 視情況,該等資料傳送度量之該計算進一步包括基於該網路內生產內核與消費內核之間的節點跳躍之數目將權重指派給該等內核至內核連接。 視情況,該等資料傳送度量之該計算進一步包括基於生產內核與消費內核之間經由該網路傳送的影像之大小將權重指派給該等內核至內核連接。 視情況,將該等內核指派給該等處理核心之各自者進一步包括:計算該程式之不同組態之權重,該程式之各組態包括對該等處理核心之一不同內核指派集,其中計算一特定組態之一權重係基於針對該特定組態之特定內核至內核連接計算的該等資料傳送度量之一子集;及選擇該等組態中具有最佳權重之一者。 視情況,該等處理核心包括一執行道陣列及一個二維位移暫存器陣列。 應注意,上文所描述之任何特徵可結合本發明之任何特定態樣或實施例使用。
1.0 獨有影像處理器架構 如此項技術中已知,用於執行程式碼之基本電路結構包含一執行級及暫存器空間。執行級含有用於執行指令之執行單元。將一待執行指令之輸入運算元自暫存器空間提供至執行級。將自執行級執行一指令產生之結果寫回至暫存器空間。 在一傳統處理器上執行一軟體執行緒需要透過執行級循序地執行一系列指令。最常見地,在自單個輸入運算元集產生單個結果之意義上,操作係「純量」。然而,在「向量」處理器之情況下,由執行級執行一指令將自輸入運算元之一向量產生結果之一向量。 圖1展示包含耦合至二維位移暫存器陣列102之一執行道陣列101的一獨有影像處理器架構100之一高階視圖。此處,執行道陣列中之各執行道可被視為含有執行由處理器100支援之指令集所需的執行單元之一離散執行級。在各項實施例中,各執行道接收在一相同機器循環中執行之一相同指令使得該處理器操作為二維單指令多資料(SIMD)處理器。 各執行道在二維位移暫存器陣列102內之一對應位置中具有其本身專用的暫存器空間。例如,隅角執行道103在隅角位移暫存器位置104中具有其本身專用的暫存器空間,隅角執行道105在隅角位移暫存器位置106中具有其本身專用的暫存器空間等。 另外,位移暫存器陣列102能夠使其內容位移使得各執行道能夠自其本身暫存器空間直接操作在一先前機器循環期間駐留於另一執行道之暫存器空間中之一值。例如,a+1水平位移引起各執行道之暫存器空間自其最左鄰近者之暫存器空間接收一值。由於使值在左及右兩個方向上沿一水平軸位移及使值在上及下兩個方向上沿一垂直軸位移之能力,故該處理器能夠有效地處理影像資料之模板。 此處,如此項技術中已知,一模板係用作一基本資料單元之影像表面區域之一切片。例如,一輸出影像中之一特定像素位置之一新值可經計算為一輸入影像之一區域(特定像素位置在該區域內居中)中的像素值之一平均值。例如,若模板具有3個像素x3個像素之一尺寸,則特定像素位置可對應於3x3像素陣列之中間像素且可對3x3像素陣列內之所有九個像素計算平均值。 根據圖1之處理器100之各項操作實施例,執行道陣列101之各執行道負責計算一輸出影像中之一特定位置之一像素值。因此,繼續上文剛提及之3x3模板平均實例,在輸入像素資料之一初始載入及位移暫存器內八次位移操作之一經協調位移序列之後,執行道陣列中之各執行道已將計算其對應像素位置之平均值所需之所有九個像素值接收至其本地暫存器空間中。即,該處理器能夠同時處理居中於例如鄰近輸出影像像素位置之多個重疊模板。由於圖1之處理器架構尤其善於處理影像模板,故其亦可稱為模板處理器。 圖2展示具有多個模板處理器202_1至202_N之一影像處理器的一架構200之一實施例。如圖2中所觀察,架構200包含複數個線緩衝器單元201_1至201_M,其等透過一網路204 (例如,一網路晶片(NOC),包含一晶片上交換網路、一晶片上環狀網路或其他類型之網路)互連至複數個模板處理器單元202_1至202_N及對應圖表產生器單元203_1至203_N。在一實施例中,任何線緩衝器單元201_1至201_M可透過網路204連接至任何圖表產生器203_1至203_N及對應模板處理器202_1至202_N。 編譯程式碼且將其載入至一對應模板處理器202上以執行早先由一軟體開發者定義之影像處理操作(例如,取決於設計及實施方案,亦可將程式碼載入至模板處理器之相關聯圖表產生器203上)。因而,各模板處理器202_1至202_N可更一般地特性化為一處理核心、處理器核心、核心及類似者且總體影像處理器可特性化為多核心影像處理器。在至少一些例項中,可藉由將一第一管線級之一第一內核程式載入至一第一模板處理器202_1中、將一第二管線級之一第二內核程式載入至一第二模板處理器202_2中等而實現一影像處理管線,其中第一內核執行管線之第一級之函數,第二內核執行管線之第二級之函數等,且額外控制流程方法經安裝以將輸出影像資料自管線之一個級傳遞至管線之下一級。 在其他組態中,影像處理器可經實現為具有操作相同內核程式碼之兩個或兩個以上模板處理器202_1、202_2之一平行機。例如,可藉由跨多個模板處理器(其各者執行相同功能)散佈圖框而處理一高度密集且高資料速率之影像資料串流。 在又其他組態中,可藉由組態各自模板處理器及其自身之各自程式碼內核且將適當控制流程鉤組態至硬體中以將來自一個內核之輸出影像引導至有向非循環圖(DAG)設計中之下一內核之輸入而將內核之基本上任何DAG載入至影像處理器上。 作為一般流程,影像資料圖框由一巨集I/O單元205接收且逐圖框傳遞至線緩衝器單元201之一或多者。一特定線緩衝器單元將其影像資料圖框剖析成影像資料之一較小區域(稱為「線群組」),且接著透過網路204將該線群組傳遞至一特定圖表產生器。一完整或「全」單個線群組可例如由一圖框之多個連續完整列或行之資料組成(為簡便起見,本說明書將主要係指連續列)。圖表產生器將影像資料之線群組進一步剖析成影像資料一較小區域(稱為「圖表」),且將圖表呈現給其對應模板處理器。 就具有一單一輸入之一影像處理管線或一DAG流程而言,一般將輸入圖框引導至相同線緩衝器單元201_1,線緩衝器單元201_1將影像資料剖析成線群組且將線群組引導至圖表產生器203_1,圖表產生器203_1之對應模板處理器202_1執行管線/DAG中之第一內核之程式碼。在完成由模板處理器202_1操作其處理之線群組之後,圖表產生器203_1將輸出線群組發送至一「下游」線緩衝器單元201_2 (在一些使用情況中,可將輸出線群組發送回至早先已發送輸入線群組之相同線緩衝器單元201_1)。 接著,一或多個「消費者」內核(其表示在其自身之各自其他圖表產生器及模板處理器(例如圖表產生器203_2及模板處理器202_2)上執行之管線/DAG中之下一級/操作)自下游線緩衝器單元201_2接收由第一模板處理器202_1產生之影像資料。依此方式,操作一第一模板處理器之一「生產者」內核使其輸出資料轉送至操作一第二模板處理器之一「消費者」內核,其中消費者內核在與總管線或DAG之設計一致之生產者內核之後執行下一組任務。 如上文關於圖1所述,各模板處理器202_1至202_N經設計以同時操作影像資料之多個重疊模板。多個重疊模板及模板處理器之內部硬體處理容量有效地判定一圖表之大小。再者,如上文所論述,在模板處理器202_1至202_N之任一者內,執行道陣列一齊操作以同時處理由多個重疊模板覆蓋之影像資料表面區域。 另外,在各項實施例中,藉由一模板處理器202之對應(例如,本地)圖表產生器203將影像資料圖表載入至該模板處理器之二維位移暫存器陣列中。據信,使用圖表及二維位移暫存器陣列結構可藉由將大量資料移動至大量暫存器空間(作為(例如)一單一載入操作)且此後由一執行道陣列即時對資料直接執行處理任務來有效地提供電力消耗改善方案。另外,使用一執行道陣列及對應暫存器陣列提供可容易程式化/組態之不同模板大小。下文在章節3.0中進一步提供關於線緩衝器單元、圖表產生器及模板處理器之操作之更多細節。 圖3係圖2之影像處理器的一特定硬體實施方案之一更詳細實施例。如圖3中所觀察,以在一線緩衝器單元301與圖表產生器/模板處理器核心302之間的各交叉點處具有一4x4網路節點314之一環狀拓撲304實施圖2之網路204。為簡便起見,圖3僅標記駐留於線緩衝器單元301_4與圖表產生器/模板處理器核心302_4之間的網路節點314。 此處,圖表產生器/模板處理器核心302_1至302_8之各者應被理解為包含一模板處理器及其對應表產生器兩者。為簡便起見,圖表產生器/模板處理器核心302_1至302_8之各者將在後文中簡稱為模板處理器核心或核心。儘管在圖3之特定實施例中描繪八個線緩衝器單元301_1至301_8及八個核心302_1至302_8,但應瞭解,具有不同數目個線緩衝器單元及/或核心之不同架構係可能的。除一環狀拓撲外之網路拓撲亦係可能的。 關於圖3之影像處理器,環狀網路304容許:1) I/O單元305將輸入資料傳遞至任何線緩衝器單元301_1至301_8 (或任何核心302_1至302_8);2)任何線緩衝器單元301_1至301_8將一線群組轉送至任何核心302_1至302_8;3)任何核心302_1至302_8將其輸出資料傳遞至任何線緩衝器單元301_1至301_8;及4)任何線緩衝器單元301_1至301_8將影像處理器輸出資料傳遞至I/O單元305。因而,很多不同軟體內核載入選項及內部網路組態係可能的。即,理論上,針對由待在處理器之各種核心302上執行的多個內核組成之任何軟體應用程式,任何內核可經載入至任何核心上且任何線緩衝器單元可經組態以將輸入資料供給至任何核心/自任何核心汲集輸出資料。2.0 在影像處理器上之應用程式軟體之組態 圖4展示可載入至圖3之影像處理器上之一例示性應用程式軟體程式或其部分。如圖4中所觀察,預期程式碼可處理輸入影像資料401之一或多個圖框以使某一總變換作用於輸入影像資料401。該變換係憑藉以由應用程式軟體開發者闡明之一統籌序列操作輸入影像資料的一或多個程式碼內核402之操作實現。 在圖4之實例中,藉由首先使用一第一內核K1處理各輸入影像而實現總變換。接著由內核K2操作由內核K1產生之輸出影像。接著由內核K3_1或K3_2操作由內核K2產生之輸出影像之各者。接著由內核K4操作由(若干)內核K3_1/K3_2產生之輸出影像。在圖3之特定實例中,內核K3_1及K3_2可為例如執行不同影像處理操作之不同內核(例如,內核K3_1操作一第一特定類型之輸入影像且內核K3_2操作一第二不同類型之輸入影像)。 為簡便起見,僅展示四個內核K1至K4。參考圖3之影像處理器硬體架構實施例,應注意,在其中各內核操作一不同模板處理器之一基本組態中,可設想:在處理器之所有核心402執行一內核之前(圖4之四個內核流僅利用圖3之處理器之一半核心),另四個內核可自內核K4流動。 圖4亦展示可與各種內核輸入/輸出相關聯之不同影像大小。此處,如上文所提及,影像處理器接收一系列輸入圖框401。輸入圖框之各者之大小(例如,任一圖框中之像素之總數目)被描繪為具有一(1.0)之正規化大小。內核K1操作輸入圖框401以產生各具有四倍於輸入圖框之大小的一大小之輸出圖框411 (內核K1之輸出圖框大小被展示為具有4.0之大小)。可例如藉由內核K1對輸入影像圖框401執行增加取樣而實現影像大小之增大。 內核K2處理由內核K1產生之(較大)輸出影像圖框411且產生各具有一大小(1.0)之較小輸出影像圖框412_1、412_2。可例如藉由內核K2對內核K1之輸出影像411執行降低取樣而實現大小之減小。內核K3操作圖框412_1以產生具有4.0之一正規化大小之較大輸出圖框,而內核K3_2操作圖框412_2以產生具有5.0之一正規化大小之更大輸出圖框。內核K4操作內核K3_1及K3_2之輸出影像413_1、413_2以產生一大小1.0之輸出圖框。 如自圖4之實例可見,例如,可取決於由一生產內核產生且由一消費內核處理之圖框之大小而在內核之間傳遞不同量之資料。此處,再次參考圖3之例示性硬體實施方案,其改善將在彼此之間傳遞大量資料的生產內核及消費內核放置於模板處理器上之總處理器效率,該等模板處理器彼此靠近或至少彼此接近以免沿環304長距離傳遞大量資料。 因而,自圖3之論述回想到:處理器實施方案300在其可支援之不同內核至核心放置及內核至內核互連方面係極其通用的,其係關於分析待經組態以在處理器300上運行之一應用程式軟體程式之資料流使得其內核可經放置於特定核心上且其線緩衝器可經組態以供給/汲集特定內核/核心使得較大大小之資料流沿網路304經歷較少跳躍且例如容許較小大小之資料流沿網路304經歷較多跳躍。 圖5及圖6用圖表描繪分析一應用程式軟體程式且將其特定內核映射至特定核心使得在處理器內達成有效資料流之一親和性映射器軟體程式之一些計算。為便於圖解,圖5及圖6演示針對圖4之應用程式軟體流程之例示性計算。如在緊接著的論述中將更顯而易見,親和性映射器透過內核至核心放置之不同可能組合進行執行緒以識別將一應用程式軟體程式之各內核映射至一特定處理核心之一更佳總體組態。 作為此等計算之部分,映射器判定指示一特定連接在經實施之情況下低效或繁瑣程度的各種連接之度量。在各項實施例中,映射器將權重指派給正經分析之各種連接,其中沿較多節點跳躍之較大資料傳送及/或沿網路環之較長距離被指派較高權重且沿較少節點跳躍之較小資料傳送及/或沿網路環之較短距離被指派較小權重。其他可能因素可包含例如沿一連接自例如較慢對較快傳送速度之較大或較小傳播延遲。 因此,更一般言之,較高權重對應於較小內部處理器資料傳送效率及/或較大資料輸送負擔。在各項實施例中,產生最低總權重之組態最終經選擇為處理器之正確組態。替代實施例可選擇將較高權重指派給較不繁重資料傳送且嘗試找到產生最高總權重之一組態。為便於論述,文件之剩餘部分將主要描述其中將較高權重指派給不太有效或較繁重連接之一方法。無論如何,在各項實施例中,一完整組態對應於識別:1)哪些內核操作哪些核心;2)哪些線緩衝器供給(饋送)哪些內核;及3)哪些線緩衝器汲集哪些內核(自哪些內核接收輸出資料)。 為簡便起見,圖5及圖6之例示性親和性映射程序未定址I/O單元305與將輸入圖框饋送至第一內核K1之線緩衝器單元之間的連接。圖5概述圖4之K1至K2內核連接之一組例示性計算。此處,如上文所論述,一第一「生產」內核(K1)操作一第一核心且將其輸出資料轉送至一線緩衝器單元。線緩衝器單元接著將自第一內核(K1)接收之資料轉送至第二「消費」內核(K2)。 在一實施例中,為保持所含有的搜尋空間之大小且為簡化線緩衝器單元記憶體資源之分配,藉由映射演算法模型化內核至內核連接而無需考量任何中介線緩衝器單元。即,線緩衝器單元之存在最初被映射演算法忽略,即時實際上,本質上由一中介線緩衝器單元佇列化自一生產內核至一消費內核之資料傳送。 圖5展示內核K1將其輸出資料發送至其消費內核K2之各種組態之權重指派。在圖5中將此特定連接標記為「K1->K2」。一第一表501 (被標記為「K1->K1」)展示內核K1與消費內核K2之間的可用/可能連接集合。此處,將圖3之處理器實施方案用作目標架構,所有連接係可能的。即,假定第一生產內核K1經映射至處理核心302_1至302_8之一特定者上,則可將其對應消費內核K2放置至其他七個剩餘處理核心之任一者上。 在表501中所列舉之第一連接及第二連接(分別標記為「Path_1」及「Path_2」)對應於內核K1將其輸出資料發送至其鄰近核心之任一者(消費內核K2在其中操作)。例如,參考圖3,若內核K1操作核心302_2,則Path_1對應於內核K2操作核心302_1且Path_2對應於內核K2操作核心302_3。另兩個路徑Path_3及Path_4對應於將內核K1之輸出資料發送至駐留於鄰近K1之核心的核心之相對側上的處理核心之一者。例如,再次假定內核K1操作核心302_2,則Path_3對應於內核K2操作核心302_4且Path_4對應於內核K2操作核心302_8。 此處,應注意,Path_1及Path_2兩者各被指派1.0之一節點跳躍距離。一個單位之節點跳躍距離對應於沿網路環304之一個邏輯單位長度。即,自一核心至其緊鄰者之任一者之距離被指派1.0之一節點跳躍距離。由於Path_1及Path_2兩者將K1之輸出資料發送至其鄰近核心之一者,故此等路徑兩者被指派1.0之一節點跳躍距離。相比之下,在表501中,Path_3及Path_4之各者具有2.0之一節點跳躍距離,因為如上文所論述,Path_3及Path_4對應於內核K1之資料自內核K1所操作之核心轉送至圍繞環之兩個核心位置。 繼續此方法,Path_5及Path_6對應於將K1之輸出資料轉送至離K1之核心達三個節點跳躍的核心之任一者(此等路徑具有3.0之一節點跳躍距離)。最後,Path_7具有4.0之一節點跳躍距離且對應於與網路環上之K1核心相對地定位之(單個)路徑。例如,再次使用其中內核K1操作核心302_2之實例,Path_7對應於將核心K1之輸出資料轉送至核心302_6。 表501中所列舉之路徑之各者具有一相關聯權重,該權重對應於節點跳躍距離及沿連接傳送之影像資料之大小之倍數。在K1至K2連接之情況下,自圖4中之應用程式軟體程式之描繪,影像資料具有一4.0大小。因此,圖4中所列舉之一特定路徑之各節點跳躍距離以4.0為因子以判定路徑之總權重。K1->K2表501因此列舉自K1至處理器內K1可發送其資料所至之各種其他核心的所有可能路徑之總權重。 接著繼續描述K1->K2連接之不同可能路徑之K1->K2表501,圖5進一步演示由親和性映射器針對此等路徑之一者執行的下一級分析。此處,K2->K3_1表502展示可用於來自K1->K2表501之Path_1的K2->K3_1連接(將K2之輸出資料發送至K3_1內核)之剩餘可用連接。自上文回想到,Path_1對應於其中K1將其輸出資料轉送至鄰近執行內核K1之核心的一核心之組態,若此特定組態起作用,則K2->K3_1表502展示剩餘路徑選項。 此處,應注意,K2->K3_1表502僅具有一個路徑Path_11,Path_11具有1之一節點跳躍。此係核心中對應於1之一跳躍節點之一者已被消費執行內核K1且因此不可用以自內核K2接收資料之結果(本實例假定不同內核將在不同核心上執行)。換言之,圖5之特定K2->K3_1表502之目的係將內核K3_1有效地放置於一可用核心上,從而辨識在其上執行內核K1之核心係不可用的。 此處,Path_11對應於將內核K3_1放置於緊鄰內核K2在其上執行之核心之一個剩餘可用核心上。再者,回想Path_1之實例(其中內核K1在圖3之核心302_2上執行且內核K1將其輸出資料轉送至操作核心302_2之內核K2),Path_11對應於內核K2將其輸出資料發送至K3_1在其中操作之核心301_3。同樣地,Path_12及Path_13對應於K3_1操作離內核K2所操作之核心達兩個跳躍的核心之一者。再者,已認知圖5之Path_1對應於例如內核K1操作核心302_1且內核K2操作核心302_2,Path_12可對應於內核K3_1操作核心302_4且Path_13可對應於內核K3_1操作核心302_8。剩餘路徑Path_14至Path_16展示在內核K3_1所操作之核心圍繞網路環移動遠離內核K2所操作之核心時之對應節點跳躍。自圖4注意到,K2至K3_1連接維持1.0之一影像大小且因而,表501之路徑之各者具有等於節點跳躍距離之一總權重(使節點跳躍距離乘以1以判定路徑之總權重)。 此處,各獨有路徑名稱對應於通過處理器之一獨有路徑。由於K2->K3表502中所列舉之所有路徑源自K1->K2表501之Path_1,故K2->K3_1表502中所列舉之路徑之各者必需包含內核K1將其輸出資料轉送至其鄰近核心(K2在其中操作)之一者。Path_11可因此經定義以不僅包含此連接而且包含至緊鄰K2所操作之核心的唯一剩餘可用核心之一連接。同樣地,Path_12可經定義以包含K1至K2單個跳躍連接及至離K2之核心達兩個跳躍的核心之一者的一連接(且Path_12經定義為至此等核心之另一者)。應注意,無需明確地定義K1操作哪個特定核心,因為組態可經定義為自環上之K1的核心之位置偏移(無論最終係哪個核心)。 圖5中所觀察之K2->K3表502僅展示表501之Path_1起作用時之可用連接。在各項實施例中,親和性映射器針對K1->K2表501中所列舉之路徑之各者執行一類似下一分析。即,應注意,K1->K2表501列舉七個不同路徑,親和性映射器將有效地計算如同K2->K3_1表502之七個表。然而,此等表將含有相對不同節點跳躍及權重值以反映表501中所反映之其等不同對應基本路徑。例如,K2->K3_1表502含有僅一個1.0節點跳躍清單,因為鄰近K2所操作之核心之一核心不可用以消費K2之資料(因為K1正操作該資料)。然而,兩個1.0節點跳躍清單將可用於自K1->K2表501中除Path_1外之路徑的任一者產生之任何下一表。 圖6展示由在圖5之Path_11起作用時應用之親和性映射器執行的較深下一級計算之一實例。此處,回想到,Path_11對應於其中K1將其輸出資料轉送至其緊鄰核心之一者(K2在其中操作)且K2將其輸出資料轉送至唯一剩餘可用鄰近核心之一者(K3_1在其中操作)之一組態。例如,若K1操作圖3之核心302_2且K2操作核心302_3,則Path_11必需包含K3_1操作核心302_4。被描繪為圖6之K2->K3_2表601之下一級計算判定在Path_11起作用之情況下K2將其資料轉送至哪個核心以供K3_2消費。參考表601,應注意,具有1.0之一節點跳躍之路徑係不可用的。此處,在Path_11之組態下,利用鄰近K2之核心的核心之兩者(一個核心執行K1且另一核心執行K3_1)。因而,最接近的核心相隔2.0個節點跳躍。表601之總權重亦以1為因子,因為自圖4,自內核K2發送至內核K3_2之影像圖框之大小亦係1.0。 若表601之K2->K3_2路徑之Path_112起作用,則K3_1->K4表602列舉可能路徑及相關聯總權重。此處,Path_112對應於其中K1及K3_1操作緊鄰K2之核心的核心且K3_2操作緊鄰K1之核心或緊鄰K3_1之核心的一核心之一組態。假定Path_112對應於其中K3_2操作靠近於K1之核心的核心之一組態,則K4將具有四個剩餘操作核心:一個核心離K3_1之核心達一個跳躍,一個核心離K3_1之核心達兩個跳躍,一個核心離K3_1之核心達三個跳躍且一個核心離K3_1之核心達四個跳躍。例如,若K1操作核心302_2,K2操作核心302_3,K3_1操作核心302_4且K3_2操作核心302_1,則可將K4放置於分別離K3_1之核心(302_4)達1.0、2.0、3.0及4.0個節點跳躍的核心302_5、302_6、302_7、302_8之任一者上。表602反映具有適當權重之此等選項。針對圖4之應用程式結構,放置K4完成內核至核心映射。 應注意,透過來自圖5至圖6之各級計算,可用路徑之數目不斷減少反映核心對由不斷深入計算之執行緒表示之特定組態之現有保證。再者,在各項實施例中,親和性映射器探索/計算來自所有可能連接之所有級。通過各級之獨有計算之各執行緒對應於特定核心上之特定內核之一不同組態。各執行緒累積沿其特定選定路徑集合之總權重,此導致完整執行緒/組態之一最終權重。選擇具有最低總權重之執行緒作為用於處理器之應用程式軟體程式之組態。 在各項實施例中,在已定義內核至核心映射之後,將緩衝器(佇列)分配至線緩衝器單元上。自圖2及圖3之論述回想到,一線緩衝器單元接收例如自一生產內核發送之影像資料之線群組且在將線群組轉送至消費內核之前佇列化線群組。此處,針對單個生產者/消費者連接之佇列化可稱為「緩衝器」。一緩衝器具有其所消耗之一相關聯量之線緩衝器單元記憶體空間以便實施其對應佇列。此處,單個線緩衝器單元可經組態以實施多個緩衝器。在一實施例中,線緩衝器單元之各者具有有限量之記憶體空間使得分配至一特定線緩衝器單元之所有緩衝器之總大小應適合線緩衝器單元之記憶體空間。 在一實施例中,定義應用程式軟體程式中之各緩衝器及其對應記憶體消耗佔據面積。接著,針對各緩衝器,映射演算法建置藉由至緩衝器之生產核心之距離排序之線緩衝器單元之清單(此處,首先列舉最接近於緩衝器之生產內核的核心之線緩衝器單元且最後列舉最遠離緩衝器之生產內核的核心之線緩衝器單元)。演算法接著將緩衝器分配至在清單上具有用以容納緩衝器之記憶體空間之排序最高的線緩衝器單元。映射演算法根據此程序串列地處理各緩衝器直至所有緩衝器已經考量且經分配至一線緩衝器單元。 例如,藉由將較高階應用程式軟體程式碼編譯成較低階目標(可執行)程式碼之一編譯器執行內核映射及緩衝器分配。編譯器計算表示所有可能內部內核組態及連接之(例如)所有可能執行緒之總權重使得最低執行緒/組態可經識別且定義將哪些緩衝器分配於哪些線緩衝器單元上。如此做,編譯器將識別一特定核心上之各生產內核將其輸出資料發送至哪一(些)特定線緩衝器單元且識別各線緩衝器單元將其佇列化資料轉送至哪一(些)核心上之哪一(些)消費內核。識別包含闡明哪些內核待在哪些核心上執行(或核心彼此之至少位置偏移)。例如,以伴隨所編譯應用程式軟體之後設資料記錄選定組態。接著作為將應用程式軟體程式載入於影像處理器上以供執行之部分,使用後設資料以例如將特定值鍵入至內核及/或處理器之組態暫存器空間中。 儘管圖5及圖6之上述方法係關於將一權重指派給忽略在連接過程中儲存及轉送資料之一線緩衝器單元之存在之一內核至內核連接,但可進一步粒化其他實施例使得針對一內核至內核連接判定一生產內核至線緩衝器單元權重及一線緩衝器單元至消費內核權重。然而,相較於圖5及圖6之方法,使用此一方法顯著擴展搜尋空間。亦可將緩衝器分配指派給可添加至搜尋空間額外負擔之此等連接。 儘管圖5及圖6之論述係關於判定具有圖3之影像處理器架構的一硬體平台之一應用程式軟體程式組態,但應注意,上述教示可應用於各項其他替代實施例。例如,圖3之影像處理器實施方案具有相等數目之線緩衝器單元及核心。其他實施方案可具有不同數目之線緩衝器單元及核心。 更進一步,如上文所論述,線緩衝器單元301轉送一影像之線群組。具體而言,替代實施方案未必接收及轉送線群組。又,儘管圖3之影像處理器包含一環狀網路304,但可使用其他類型之網路(例如,一交換式網路、一傳統多點匯流排等)。此外,核心無需包含具有二維執行道陣列或二維位移暫存器陣列之一各自圖表產生器或模板處理器。 圖7展示如上文所描述之一方法。該方法包含針對待在一影像處理器上執行之具有複數個內核的一程式之內核至內核連接計算資料傳送度量701。該影像處理器包含複數個處理核心及連接複數個處理核心之一網路。內核至內核連接之各者包含待在處理核心之一者上執行之一生產內核及待在處理核心之另一者上執行之一消費內核。消費內核用以操作由生產內核產生之資料。該方法亦包含基於經計算資料傳送度量將複數個內核之內核指派給處理核心之各自者702。3.0 影像處理器實施方案實施例 圖8a-e至圖12提供關於上文詳細描述之影像處理器及相關聯模板處理器的各項實施例之操作及設計的額外細節。自圖2之論述回想到,一線緩衝器單元將線群組饋送至一模板處理器之相關聯圖表產生器,圖8a至圖8e繪示一線緩衝器單元201之剖析活動、一圖表產生器單元203之細粒化剖析活動兩者以及耦合至圖表產生器單元203之模板處理器之模板處理活動的一高階實施例。 圖8a描繪影像資料801之一輸入圖框之一實施例。圖8a亦描繪一模板處理器經設計以在其上操作之三個重疊模板802之一輪廓(各模板具有3個像素x3個像素之尺寸)。以加粗黑色突顯各模板分別針對其產生輸出影像資料之輸出像素。為簡便起見,三個重疊模板802被描繪為僅在垂直方向上重疊。應切實認識到,一模板處理器實際上可經設計以具有垂直方向及水平方向兩者上之重疊模板。 由於模板處理器內之垂直重疊模板802 (如圖8a中所觀察),故單個模板處理器可在其上操作之圖框內存在一寬頻帶影像資料。如下文將更詳細論述,在一實施例中,模板處理器依一從左至右方式跨影像資料處理其重疊模板內之資料(且接著依從上至下順序對下一組線重複)。因此,隨著模板處理器使其操作繼續向前,加粗黑色輸出像素區塊之數目將水平向右增長。如上文所論述,一線緩衝器單元201負責自足以使模板處理器在擴大數目之未來週期內於其上操作之一傳入圖框剖析輸入影像資料之一線群組。一線群組之一例示性描繪經繪示為一陰影區域803。在一實施例中,線緩衝器單元201可綜合不同動態表現以將一線群組發送至一圖表產生器/自一圖表產生器接收一線群組。例如,根據一個模式(稱為「全群組(full group)」),在一線緩衝器單元與一圖表產生器之間傳遞影像資料之完整全寬線。根據一第二模式(稱為「實際上高(virtually tall)」),首先使用全寬列之一子集來傳遞一線群組。接著,以較小(非全寬)件依序傳遞剩餘列。 在輸入影像資料之線群組803已由線緩衝器單元界定且被傳遞至圖表產生器單元之情況下,圖表產生器單元進一步將線群組剖析成更精確適應模板處理器之硬體限制的精細圖表。更具體而言,如下文將進一步更詳細描述,在一實施例中,各模板處理器由一二維位移暫存器陣列組成。二維位移暫存器陣列基本上在一執行道陣列「下方」位移影像資料,其中位移之型樣引起各執行道操作其自身各自模板內之資料(即,各執行道處理其自身之資訊模板以產生該模板之一輸出)。在一實施例中,圖表係「填充」二維位移暫存器陣列或以其他方式載入至二維位移暫存器陣列中之輸入影像資料之表面區域。 如下文將更詳細描述,在各項實施例中,實際上存在可於任何週期上位移之二維暫存器資料之多個層。為方便起見,本描述之大部分將僅使用術語「二維位移暫存器」及類似者以指代具有可位移之二維暫存器資料的一或多個此等層之結構。 因此,如圖8b中所觀察,圖表產生器自線群組803剖析一初始圖表804且將其提供至模板處理器(此處,資料圖表對應於一般由元件符號804識別之陰影區域)。如圖8c及圖8d中所觀察,模板處理器藉由在圖表上依一從左至右方式有效地移動重疊模板802來操作輸入影像資料之圖表。截至圖8d,已耗盡可自圖表內之資料計算其之一輸出值的像素之數目(其他像素位置不可具有自圖表內之資訊判定之一輸出值)。為簡便起見,已忽略影像之邊界區域。 接著,如圖8e中所觀察,圖表產生器提供下一圖表805來供模板處理器繼續操作。應注意,模板之初始位置隨著其開始操作下一圖表而自第一圖表上之耗盡點接著向右前進(如先前圖8d中所描繪)。就新圖表805而言,模板將僅在模板處理器依相同於處理第一圖表之方式的方式操作新圖表時繼續向右移動。 應注意,由於包圍一輸出像素位置之模板之邊界區域,第一圖表804之資料與第二圖表805之資料之間存在某一重疊。可僅藉由圖表產生器重新傳輸重疊資料兩次來處置重疊。在替代實施方案中,為將下一圖表饋送至模板處理器,圖表產生器可繼續將新資料僅發送至模板處理器且模板處理器重新使用來自前一圖表之重疊資料。 圖9展示一模板處理器架構900之一實施例。如圖9中所觀察,模板處理器包含一資料運算單元901、一純量處理器902及相關聯記憶體903以及一I/O單元904。資料運算單元901包含一執行道陣列905、一二維位移陣列結構906及與陣列之特定列或行相關聯之單獨隨機存取記憶體907。 I/O單元904負責將自圖表產生器接收之「輸入」資料圖表載入至資料運算單元901中及將來自模板處理器之「輸出」資料圖表儲存至圖表產生器中。在一實施例中,將圖表資料載入至資料運算單元901中需要將一接收圖表剖析成影像資料列/行且將影像資料列/行載入至二維位移暫存器結構906或執行道陣列之列/行之各自隨機存取記憶體907中(如下文將更詳細描述)。若首先將圖表載入至記憶體907中,則執行道陣列905內之個別執行道可視情況將圖表資料自隨機存取記憶體907載入至二維位移暫存器結構906中(例如,作為恰好在操作圖表之資料之前的一載入指令)。在完成將一資料圖表載入至暫存器結構906中(無論是否直接來自一圖表產生器或記憶體907)之後,執行道陣列905之執行道操作資料且最終「寫回」完成資料作為直接返回至圖表產生器或進入隨機存取記憶體907之一圖表。若執行道寫回至隨機存取記憶體907,則I/O單元904自隨機存取記憶體907提取資料以形成接著轉送至圖表產生器之一輸出圖表。 純量處理器902包含一程式控制器909,其自純量記憶體903讀取模板處理器之程式碼之指令且將指令發出至執行道陣列905中之執行道。在一實施例中,將一單一相同指令廣播至陣列905內之所有執行道以實現來自資料運算單元901之似單指令多資料(SIMD)行為。在一實施例中,自純量記憶體903讀取且發出至執行道陣列905之執行道的指令之指令格式包含一極長指令字(VLIW)型格式,其包含每指令之一個以上運算碼。在另一實施例中,VLIW格式包含一ALU運算碼(其指導由各執行道之ALU (如下文將描述,在一實施例中,其可指定一個以上傳統ALU運算)執行之一數學函數)及一記憶體運算碼(其指導一特定執行道或執行道集合之一記憶體運算)兩者。 術語「執行道」係指能夠執行一指令之一組一或多個執行單元(例如可執行一指令之邏輯電路)。然而,在各項實施例中,一執行道可包含不只是執行單元之更多似處理器功能性。例如,除一或多個執行單元之外,一執行道亦可包含解碼一接收指令之邏輯電路,或就更多似多指令多資料(MIMD)設計而言,包含提取及解碼一指令之邏輯電路。關於似MIMD方法,儘管本文已主要描述一集中式程式控制方法,但可在各種替代實施例中實施一更分散方法(例如,其包含陣列905之各執行道內之程式碼及一程式控制器)。 一執行道陣列905、程式控制器909及二維位移暫存器結構906之組合對一寬範圍之可程式化功能提供一可廣泛適應/組態之硬體平台。例如,應用程式軟體開發者能夠程式化具有一寬範圍之不同功能性能及尺寸(例如模板大小)之內核,假定個別執行道能夠執行各種功能且能夠容易地存取接近任何輸出陣列位置之輸入影像資料。 除充當由執行道陣列905操作之影像資料之一資料儲存器之外,隨機存取記憶體907亦可保存一或多個查找表。在各項實施例中,一或多個純量查找表亦可樣例化於純量記憶體903內。 一純量查找涉及:將來自相同查找表之相同資料值自相同指標傳遞至執行道陣列905內之各執行道。在各項實施例中,上文所描述之VLIW指令格式經擴展以亦包含使由純量處理器執行之一查找操作針對一純量查找表之一純量運算碼。經指定與運算碼一起使用之指標可為一立即運算元或自某一其他資料儲存位置提取。無論如何,在一實施例中,自純量記憶體內之一純量查找表之一查找基本上涉及:在相同時脈週期期間,將相同資料值廣播至執行道陣列905內之所有執行道。下文將進一步提供關於查找表之使用及操作的額外細節。 圖9b概述上文所論述之(若干) VLIW指令字實施例。如圖9b中所觀察,VLIW指令字格式包含用於以下三個單獨指令之欄位:1)一純量指令951,其由純量處理器執行;2)一ALU指令952,其經廣播且由執行道陣列內之各自ALU依SIMD方式執行;及3)一記憶體指令953,其經廣播且依一部分SIMD方式執行(例如,若沿執行道陣列中之一相同列之執行道共用一相同隨機存取記憶體,則來自不同列之各者之一個執行道實際上執行指令(記憶體指令953之格式可包含識別來自各列之何種執行道執行指令之一運算元))。 亦包含用於一或多個立即運算元之一欄位954。可以指令格式識別指令951、952、953之何者使用何種立即運算元資訊。指令951、952、953之各者亦包含其自身之各自輸入運算元及所得資訊(例如用於ALU運算之局部暫存器及用於記憶體存取指令之一局部暫存器及一記憶體位址)。在一實施例中,在執行道陣列內之執行道執行其他兩個指令952、953之任一者之前,由純量處理器執行純量指令951。即,VLIW字之執行包含其中執行純量指令951之一第一週期及接著其中可執行其他指令952、953之一第二週期(應注意,在各項實施例中,可並行執行指令952及953)。 在一實施例中,由純量處理器執行之純量指令包含發出至圖表產生器以自資料運算單元之記憶體或2D位移暫存器載入圖表/將圖表儲存至資料運算單元之記憶體或2D位移暫存器中的命令。此處,圖表產生器之操作可取決於線緩衝器單元之操作或其他變數(其防止預運行時間包含圖表產生器完成由純量處理器發出之任何命令所花費之週期數)。因而,在一實施例中,任何VLIW字(其純量指令951對應於待發出至圖表產生器之一命令或以其他方式引起一命令發出至圖表產生器)亦包含其他兩個指令欄位952、953中之無操作(NOOP)指令。接著,程式碼進入指令欄位952、953之NOOP指令之一迴路,直至圖表產生器完成其至資料運算單元之載入/來自資料運算單元之儲存。此處,在將一命令發出至圖表產生器之後,純量處理器可設定一互鎖暫存器之一位元,圖表產生器在完成命令之後重設該位元。在NOOP迴路期間,純量處理器監測互鎖暫存器之位元。當純量處理器偵測到圖表產生器已完成其命令時,正常執行再次開始。 圖10展示一資料運算組件1001之一實施例。如圖10中所觀察,資料運算組件1001包含邏輯上定位於一二維位移暫存器陣列結構1006「上方」之一執行道陣列1005。如上文所論述,在各項實施例中,將由一圖表產生器提供之一影像資料圖表載入至二維位移暫存器1006中。接著,執行道操作來自暫存器結構1006之圖表資料。 執行道陣列1005及位移暫存器結構1006相對於彼此固定位置。然而,位移暫存器陣列1006內之資料依一策略性協調方式位移以引起執行道陣列中之各執行道處理資料內之一不同模板。因而,各執行道判定所產生之輸出圖表中之一不同像素之輸出影像值。應自圖10之架構明白,由於執行道陣列1005包含垂直相鄰執行道及水平相鄰執行道,所以重疊模板不僅經垂直配置,且亦經水平配置。 資料運算單元1001之一些顯著架構特徵包含具有比執行道陣列1005寬之尺寸的位移暫存器結構1006。即,執行道陣列1005外存在暫存器之一「暈圈」1009。儘管暈圈1009經展示為存在於執行道陣列之兩側上,但取決於實施方案,暈圈可存在於執行道陣列1005之更少側(一側)或更多側(三個或四個側)上。暈圈1009用於對資料提供「外溢(spill-over)」空間,其隨著資料在執行道1005「下方」位移而溢出至執行道陣列1005之界限外。簡單而言,當處理模板之最左像素時,居中於執行道陣列1005之右邊緣上的一5×5模板將需要進一步向右之四個暈圈暫存器位置。為便於繪製,圖10將暈圈之右側之暫存器展示為僅具有水平位移連接且將暈圈之底側之暫存器展示為僅具有垂直位移連接,但在一名義實施例中,任一側(右側、底側)上之暫存器將具有水平連接及垂直連接兩者。在各項實施例中,暈圈區域不包含用以執行影像處理指令之對應執行道邏輯(例如,不存在ALU)。然而,個別記憶體存取單元(M)存在於暈圈區域位置之各者中使得個別暈圈暫存器位置可個別地自記憶體載入資料且將資料儲存至記憶體。 額外外溢空間由耦合至陣列中之各列及/或各行的隨機存取記憶體1007或其部分提供(例如,可將一隨機存取記憶體指派給跨越逐列4個執行道及逐行2個執行道之執行道陣列之一「區域」。為簡便起見,應用程式之剩餘部分將主要係指基於列及/或行之分配方案)。此處,若一執行道之內核運算需要其處理二維位移暫存器陣列1006外之像素值(一些影像處理常式需要該等像素值),則影像資料之平面能夠(例如)自暈圈區域1009進一步外溢至隨機存取記憶體1007中。例如,考量一6×6模板,其中硬體包含執行道陣列之右邊緣上之一執行道右側的僅四個儲存元件之一暈圈區域。在此情況中,需要使資料自暈圈1009之右邊緣進一步向右位移以完全處理模板。接著,經位移至暈圈區域1009外之資料將外溢至隨機存取記憶體1007。下文將進一步提供隨機存取記憶體1007及圖9之模板處理器之其他應用。 圖11a至圖11k演示在執行道陣列「下方」之二維位移暫存器陣列內位移影像資料(如上文所提及)之方式之一工作實例。如圖11a中所觀察,一第一陣列1107中描繪二維位移陣列之資料內容且由一圖框1105描繪執行道陣列。又,簡單地描繪執行道陣列內之兩個鄰近執行道1110。在此簡化描繪1110中,各執行道包含一暫存器R1,其可自位移暫存器接受資料,自一ALU輸出接受資料(例如,充當一跨週期累加器),或將輸出資料寫入至一輸出目的地中。 各執行道亦可使用其「下方」之二維位移陣列中之一局部暫存器R2中之內容。因此,R1係執行道之一實體暫存器,而R2係二維位移暫存器陣列之一實體暫存器。執行道包含可操作由R1及/或R2提供之運算元的一ALU。如下文將進一步更詳細描述,在一實施例中,位移暫存器實際上由每陣列位置之多個儲存器/暫存器元件(儲存器/暫存器元件之一「深度」)實施,但位移活動受限於儲存元件之一個平面(例如儲存元件之僅一個平面可每週期位移)。圖11a至圖11k將此等較深暫存器位置之一者描繪為用於儲存來自各自執行道之結果X。為便於繪示,較深結果暫存器經繪製成與其配對暫存器R2並排而非位於其配對暫存器R2下方。 圖11a至圖11k著重於兩個模板(其中央位置與執行道陣列內所描繪之執行道位置對1111對準)之計算。為便於圖解,執行道對1110經繪製為水平鄰近者,但事實上,根據以下實例,執行道對1110係垂直鄰近者。 首先,如圖11a中所觀察,執行道居中於其中央模板位置上。圖11b展示由兩個執行道執行之目標碼。如圖11b中所觀察,兩個執行道之程式碼引起位移暫存器陣列內之資料下移一個位置且右移一個位置。此使兩個執行道對準於其各自模板之左上角。接著,程式碼引起定位於其各自位置(R2)中之資料載入至R1中。 接著,如圖11c中所觀察,程式碼引起執行道對使位移暫存器陣列內之資料左移一個單位,其引起至各執行道之各自位置右側之值位移至各執行道之位置中。接著,將R1中之值(先前值)與已位移至執行道之位置(R2)中之新值相加。將結果寫入至R1中。如圖11d中所觀察,重複相同於上文針對圖11c所描述之程序的程序,其引起所得R1現包含上執行道中之值A+B+C及下執行道中之值F+G+H。此時,兩個執行道已處理其各自模板之上列。應注意至執行道陣列之左側上之一暈圈區域中(若左手側上存在暈圈區域)或至隨機存取記憶體中(若執行道陣列之左手側上不存在一暈圈區域)的外溢。 接著,如圖11e中所觀察,程式碼引起位移暫存器陣列內之資料上移一個單位,其引起兩個執行道與其各自模板之中間列之右邊緣對準。兩個執行道之暫存器R1當前包含模板之頂列及中間列之最右值之總和。圖11f及圖11g演示跨兩個執行道之模板之中間列向左移動之繼續進展。累加繼續,使得在圖11g之處理結束時,兩個執行道包含其各自模板之頂列及中間列之值之總和。 圖11h展示用於使各執行道與其對應模板之最下列對準的另一位移。圖11i及圖11j展示用於完成兩個執行道之整個模板之處理的繼續位移。圖11k展示用於使各執行道與資料陣列中之其校正位置對準且將結果寫入至校正位置中的額外位移。 應注意,在圖11a至圖11k之實例中,用於位移運算之目標碼可包含識別以(X, Y)座標所表達之位移之方向及量值的一指令格式。例如,用於上移一個位置之目標碼可以目標碼表達為SHIFT 0, +1。作為另一實例,右移一個位置可以目標碼表達為SHIFT+1, 0。在各項實施例中,亦可在目標碼中指定較大量值之位移(例如SHIFT 0, +2)。此處,若2D位移暫存器硬體僅支援每週期位移一個位置,則指令可由機器解譯為需要多週期執行,或2D位移暫存器硬體可經設計以支援每週期位移一個以上位置。下文將進一步更詳細描述後者之實施例。 圖12展示一執行道及對應位移暫存器結構之單位胞元之另一更詳細描繪(在各項實施例中,暈圈區域中之暫存器不包含一對應執行道但包含一記憶體單元)。在一實施例中,藉由樣例化在執行道陣列之各節點處圖12中所觀察之電路而實施執行道及與執行道陣列中之各位置相關聯之暫存器空間。如圖12中所觀察,單位胞元包含一執行道1201,執行道1201經耦合至由四個暫存器R2至R5組成之一暫存器檔案1202。在任何週期期間,執行道1201可自暫存器R1至R5之任一者讀取或寫入至暫存器R1至R5之任一者。對於需要兩個輸入運算元之指令,執行道可自R1至R5之任一者擷取兩個運算元。 在一實施例中,藉由以下操作來實施二維位移暫存器結構:容許暫存器R2至R4之任何(僅)一者之內容在一單一週期期間透過輸出多工器1203移「出」至其鄰近者之暫存器檔案之一者且使暫存器R2至R4之任何(僅)一者之內容由透過輸入多工器1204自其鄰近者之一對應者移「入」的內容替換,使得鄰近者之間的位移係在一相同方向上(例如,所有執行道左移,所有執行道右移,等等)。儘管一相同暫存器在一相同週期上使其內容移出且由移入之內容替換可較為常見,但多工器配置1203、1204容許一相同週期期間之一相同暫存器檔案內之不同位移源及位移目標暫存器。 應注意,如圖12中所描繪,在一位移序列期間,一執行道將使內容自其暫存器檔案1202移出至其左、右、頂部及底部之各鄰近者。結合相同位移序列,執行道亦將使內容自其左、右、頂部及底部之一特定鄰近者移入至其暫存器檔案中。又,移出目標及移入源應與所有執行道之一相同位移方向一致(例如,若移出係朝向右鄰近者,則移入應來自左鄰近者)。 儘管在一項實施例中,容許每週期每執行道位移僅一個暫存器之內容,但其他實施例可容許移入/移出一個以上暫存器之內容。例如,若將圖12中所觀察之多工器電路1203、1204之一第二例項併入至圖12之設計中,則可在一相同週期期間移出/移入兩個暫存器之內容。當然,在容許每週期位移僅一個暫存器之內容的實施例中,自多個暫存器之位移可藉由使數學運算之間的位移消耗更多時脈週期來發生於數學運算之間(例如,可藉由在數學運算之間消耗兩個位移運算來在數學運算之間位移兩個暫存器之內容)。 若在一位移序列期間移出一執行道之暫存器檔案之非所有內容,則應注意,各執行道之未經移出暫存器之內容保留於適當位置中(未位移)。因而,未由移入內容替換之任何未位移內容跨位移週期存留於執行道之局部處。各執行道中所觀察之記憶體單元(「M」)用於自與執行道陣列內之執行道之列及/或行相關聯之隨機存取記憶體空間載入資料/將資料儲存至與執行道陣列內之執行道之列及/或行相關聯之隨機存取記憶體空間。此處,M單元充當一標準M單元,此係因為其常用於載入/儲存無法自執行道自身之暫存器空間載入/儲存至執行道自身之暫存器空間的資料。在各項實施例中,M單元之主要操作係將資料自一局部暫存器寫入至記憶體中及自記憶體讀取資料且將其寫入至一局部暫存器中。 關於由硬體執行道1201之ALU單元支援的ISA運算碼,在各項實施例中,由硬體ALU支援之數學運算碼包含例如ADD、SUB、MOV、MUL、MAD、ABS、DIV、SHL、SHR、MIN/MAX、SEL、AND、OR、XOR、NOT。恰如上文所描述,記憶體存取指令可由執行道1201執行以自其相關聯之隨機存取記憶體提取資料/將資料儲存至其相關聯之隨機存取記憶體。另外,硬體執行道1201支援用於位移二維位移暫存器結構內之資料的位移運算指令(向右、向左、向上、向下)。如上文所描述,程式控制指令主要由模板處理器之純量處理器執行。4.0 實施方案實施例 需要指出的是,上文所描述之各種影像處理器架構特徵未必僅限於傳統意義上之影像處理且因此可應用於可(或可不)引起影像處理器重新特性化之其他應用。例如,若上文所描述之各種影像處理器架構特徵之任何者用於建立及/或產生及/或渲染動畫而非處理實際攝影機影像,則影像處理器可經特性化為一圖形處理單元。另外,上文所描述之影像處理器架構特徵可應用於其他技術應用,諸如視訊處理、視覺處理、影像辨識及/或機器學習。依此方式應用之影像處理器可與一更通用處理器(例如,即為或係運算系統之一CPU之部分)整合(例如,作為一共處理器)或可為一運算系統內之一獨立處理器。 上文所論述之硬體設計實施例可體現於一半導體晶片內及/或體現為用於最終針對一半導體製程之一電路設計之一描述。就後者而言,此等電路描述可呈以下形式:一(例如VHDL或Verilog)暫存器轉移層次(RTL)電路描述、一閘級電路描述、一電晶體級電路描述或遮罩描述或其各種組合。電路描述通常體現於一電腦可讀儲存媒體(諸如一CD-ROM或其他類型之儲存技術)上。 應自上述章節切實認識到,上文所描述之一影像處理器可體現於一電腦系統上之硬體中(例如,作為一手持器件之系統單晶片(SOC)之部分,其處理來自該手持器件之攝影機之資料)。應注意,在影像處理器體現為一硬體電路之情況中,可自一攝影機直接接收由影像處理器處理之影像資料。此處,影像處理器可為一離散攝影機之部分或具有一整合式攝影機之一運算系統之部分。就後者而言,可自攝影機或運算系統之系統記憶體直接接收影像資料(例如,攝影機將其影像資料發送至系統記憶體而非影像處理器)。亦應注意,上述章節中所描述之諸多特徵可應用於一圖形處理器單元(其渲染動畫)。 圖13提供一運算系統之一例示性描繪。下文所描述之運算系統之諸多組件可適用於具有一整合式攝影機及相關聯影像處理器之一運算系統(例如,一手持器件,諸如一智慧型電話或平板電腦)。一般技術者將能夠容易區分兩者。另外,圖13之運算系統亦包含一高效能運算系統之諸多特徵,諸如工作站或超級電腦。 如圖13中所觀察,基本運算系統可包含一中央處理單元1301 (其可包含(例如)安置於一多核心處理器或應用處理器上之複數個通用處理核心1315_1至1315_N及一主記憶體控制器1317)、系統記憶體1302、一顯示器1303 (例如觸控螢幕、平板顯示裝置)、一區域有線點對點鏈接(例如USB)介面1304、各種網路I/O功能1305 (諸如乙太網路介面及/或蜂巢式數據機子系統)、一無線區域網路(例如WiFi)介面1306、一無線點對點鏈接(例如Bluetooth)介面1307及一全球定位系統介面1308、各種感測器1309_1至1309_N、一或多個攝影機1310、一電池1311、一電力管理控制單元1312、一揚聲器及麥克風1313以及一音訊編碼器/解碼器1314。 一應用處理器或多核心處理器1350可包含其CPU 1301內之一或多個通用處理核心1315、一或多個圖形處理單元1316、一記憶體管理功能1317 (例如一記憶體控制器)、一I/O控制功能1318及一影像處理單元1319。通用處理核心1315通常執行運算系統之作業系統及應用程式軟體。圖形處理單元1316通常執行圖形密集功能以(例如)產生呈現於顯示器1303上之圖形資訊。記憶體控制功能1317與系統記憶體1302介接以將資料寫入至系統記憶體1302/自系統記憶體1302讀取資料。電力管理控制單元1312一般控制系統1300之電力消耗。 可根據上述章節中所詳細描述之影像處理單元實施例之任何者來實施影像處理單元1319。替代地或組合地,IPU 1319可耦合至GPU 1316及CPU 1301之任一者或兩者作為其之一共處理器。另外,在各項實施例中,可使用上文所詳細描述之影像處理器特徵之任何者來實施GPU 1316。影像處理單元1319可組態有如上文詳細描述之應用程式軟體。另外,一運算系統(諸如圖13之運算系統)可執行程式碼,該程式碼執行上文所描述之計算,該等計算判定一應用程式軟體程式至一影像處理器上之組態。 觸控螢幕顯示器1303、通信介面1304至1307、GPS介面1308、感測器1309、攝影機1310及揚聲器/麥克風編解碼器1313、1314之各者可全部被視為相對於總運算系統(其視情況亦包含一整合式周邊器件(例如一或多個攝影機1310))之各種形式之I/O (輸入及/或輸出)。取決於實施方案,此等I/O組件之各者可整合於應用處理器/多核心處理器1350上或可定位成離開晶粒或定位於應用處理器/多核心處理器1350之封裝外。 在一實施例中,一或多個攝影機1310包含能夠量測攝影機與其視野中之一物件之間的深度的一深度攝影機。在一應用處理器或其他處理器之一通用CPU核心(或具有用於執行程式碼之一指令執行管線之其他功能區塊)上執行之應用程式軟體、作業系統軟體、器件驅動器軟體及/或韌體可執行上文所描述之功能之任何者。 本發明之實施例可包含上文所闡述之各種程序。程序可體現於機器可執行指令中。指令可用於引起一通用或專用處理器執行特定程序。替代地,此等程序可由含有用於執行程序之固線式及/或可程式化邏輯的特定硬體組件或由程式化電腦組件及客製化硬體組件之任何組合執行。 本發明之元件亦可提供為用於儲存機器可執行指令之一機器可讀媒體。機器可讀媒體可包含(但不限於)軟碟、光碟、CD-ROM及磁光碟、FLASH記憶體、ROM、RAM、EPROM、EEPROM、磁卡或光卡、傳播媒介或適合於儲存電子指令之其他類型之媒體/機器可讀媒體。例如,本發明可下載為一電腦程式,其藉由以一載波或其他傳播媒介體現之資料信號經由一通信鏈路(例如一數據機或網路連接)自一遠端電腦(例如一伺服器)傳送至一請求電腦(例如一用戶端)。 上述說明中已參考特定例示性實施例描述本發明。然而,應明白,可在不背離隨附申請專利範圍中所闡述之本發明之較廣泛精神及範疇的情況下對本發明作出各種修改及改變。相應地,本說明書及圖式應被視為闡釋性而非限制性。
100‧‧‧影像處理器架構101‧‧‧執行道陣列102‧‧‧二維位移暫存器陣列103‧‧‧隅角執行道104‧‧‧隅角位移暫存器位置105‧‧‧隅角執行道106‧‧‧隅角位移暫存器位置200‧‧‧架構201_1至201_M‧‧‧線緩衝器單元202_1至202_N‧‧‧模板處理器/模板處理器單元203_1至203_N‧‧‧圖表產生器單元/圖表產生器204‧‧‧網路205‧‧‧巨集I/O單元300‧‧‧處理器301_1至301_8‧‧‧線緩衝器單元302_1至302_8‧‧‧圖表產生器/模板處理器核心304‧‧‧環狀拓撲/網路環305‧‧‧I/O單元314‧‧‧網路節點401‧‧‧輸入影像資料/輸入影像圖框402‧‧‧核心411‧‧‧輸出影像圖框412_1‧‧‧輸出影像圖框412_2‧‧‧輸出影像圖框413_1‧‧‧輸出影像413_2‧‧‧輸出影像501‧‧‧第一表/K1->K2表502‧‧‧K2->K3_1表601‧‧‧K2->K3_2表602‧‧‧K3_1->K4表701‧‧‧步驟702‧‧‧步驟801‧‧‧影像資料802‧‧‧重疊模板803‧‧‧線群組/陰影區域804‧‧‧圖表805‧‧‧圖表900‧‧‧模板處理器架構901‧‧‧資料運算單元902‧‧‧純量處理器903‧‧‧記憶體904‧‧‧I/O單元905‧‧‧執行道陣列906‧‧‧二維位移陣列結構907‧‧‧隨機存取記憶體909‧‧‧程式控制器951‧‧‧純量指令952‧‧‧ALU指令/指令欄位953‧‧‧記憶體指令/指令欄位954‧‧‧欄位1001‧‧‧資料運算組件/資料運算單元1005‧‧‧執行道陣列1006‧‧‧二維位移暫存器陣列結構/暫存器結構1007‧‧‧隨機存取記憶體1009‧‧‧暈圈/暈圈區域1105‧‧‧圖框1107‧‧‧第一陣列1110‧‧‧執行道1111‧‧‧執行道位置對1201‧‧‧執行道1202‧‧‧暫存器檔案1203‧‧‧輸出多工器/多工器配置/多工器電路1204‧‧‧輸入多工器/多工器配置/多工器電路1300‧‧‧系統1301‧‧‧中央處理單元1302‧‧‧系統記憶體1303‧‧‧顯示器1304‧‧‧區域有線點對點鏈接介面1305‧‧‧網路I/O功能1306‧‧‧無線區域網路介面1307‧‧‧無線點對點鏈接介面1308‧‧‧全球定位系統介面1309_1至1309_N‧‧‧感測器1310‧‧‧攝影機1311‧‧‧電池1312‧‧‧電力管理控制單元1313‧‧‧揚聲器及麥克風1314‧‧‧音訊編碼器/解碼器1315_1至1315_N‧‧‧通用處理核心1316‧‧‧圖形處理單元1317‧‧‧主記憶體控制器/記憶體管理功能/記憶體控制功能1350‧‧‧應用處理器/多核心處理器1318‧‧‧I/O控制功能1319‧‧‧影像處理單元K1‧‧‧第一內核K2‧‧‧內核 K3_1‧‧‧內核K3_2‧‧‧內核K4‧‧‧內核R1‧‧‧暫存器R2‧‧‧暫存器R3‧‧‧暫存器R4‧‧‧暫存器R5‧‧‧暫存器
下文描述及隨附圖式用以繪示本發明之實施例。在圖式中: 圖1展示一模板處理器架構之一高階視圖; 圖2展示一影像處理器架構之一更詳細視圖; 圖3展示一影像處理器架構之一甚至更詳細視圖; 圖4展示可由一影像處理器執行之一應用程式軟體程式; 圖5及圖6展示用於判定在一影像處理器上執行之圖4的應用程式軟體程式之一組態的一實施例; 圖7展示用於判定在一影像處理器上執行之一應用程式軟體程式的一組態之一方法; 圖8a、圖8b、圖8c、圖8d及圖8e描繪將影像資料剖析成一線群組,將一線群組剖析成一圖表及對具有重疊模板之一圖表執行之操作; 圖9a展示一模板處理器之一實施例; 圖9b展示模板處理器之一指令字之一實施例; 圖10展示一模板處理器內之一資料運算單元之一實施例; 圖11a、圖11b、圖11c、圖11d、圖11e、圖11f、圖11g、圖11h、圖11i、圖11j及圖11k描繪使用二維位移陣列及一執行道陣列以判定具有重疊模板之一對鄰近輸出像素值之一實例; 圖12展示一整合式執行道陣列及二維位移陣列之一單位胞元之一實施例; 圖13展示一例示性運算系統。
701‧‧‧步驟
702‧‧‧步驟

Claims (17)

  1. 一種由一或多個電腦執行之方法,該方法包括:接收針對待在具有複數個模板(stencil)處理器之一器件上執行之一影像處理應用程式以計算最終內核指派之一請求,其中該影像處理應用程式界定包括複數個內核之一影像處理管線;產生複數個候選(candidate)內核指派,每一內核指派將該影像處理管線之每一內核指派給該複數個模板處理器之一各自者,包含:將在該影像處理管線中之內核順序地指派給還未被指派在該影像處理管線中之一內核之可用模板處理器,直到在該影像處理管線中之所有內核已經被指派給該複數個模板處理器之一各自模板處理器;針對該複數個候選內核指派之每一者計算一總權重,每一候選內核指派之該總權重表示資料傳輸效率之一量測且係基於傳送於內核之間的資料之各自傳送大小及沿著連接該複數個模板處理器之一網路之各自傳送距離;根據針對該複數個候選內核指派之每一者所計算之該等各自總權重選擇具有最佳資料傳送效率之一後選內核指派;及根據該經選定候選內核指派將該複數個內核之內核指派給各自模板處理器。
  2. 如請求項1之方法,其中該器件進一步包括複數個線緩衝器單元,且進一步包括: 判定哪些線緩衝器單元流出(source)哪些內核及判定哪些線緩衝器單元沒入(sink)哪些內核。
  3. 如請求項2之方法,其中判定哪些線緩衝器單元沒入哪些內核包括:針對指派給一特定模板處理器之一特定生產內核,產生以與該特定模板處理器之傳送距離而分類的線緩衝器單元之一清單;及將對於由該特定生產內核所產生之緩衝資料具有足夠記憶體之一最接近線緩衝器單元指派給該特定模板處理器。
  4. 如請求項1之方法,其中該等傳送距離係基於在內核之間在該網路內的節點跳躍之一各自數目。
  5. 如請求項1之方法,其中該等傳送距離係基於沿著該網路之一網路環(ring)之距離。
  6. 一種以電腦程式指令編碼之一或多個非暫時性電腦儲存媒體,當該等電腦程式指令由一或多個電腦執行時引起該一或多個電腦執行以下之操作,包括:接收針對待在具有複數個模板處理器之一器件上執行之一影像處理應用程式以計算最終內核指派之一請求,其中該影像處理應用程式界定包括複數個內核之一影像處理管線;產生複數個候選內核指派,每一內核指派將該影像處理管線之每一內核指派給該複數個模板處理器之一各自者,包含: 將在該影像處理管線中之內核順序地指派給還未被指派在該影像處理管線中之一內核之可用模板處理器,直到在該影像處理管線中之所有內核已經被指派給該複數個模板處理器之一各自模板處理器;針對該複數個候選內核指派之每一者計算一總權重,每一候選內核指派之該總權重表示資料傳輸效率之一量測且係基於傳送於內核之間的資料之各自傳送大小及沿著連接該複數個模板處理器之一網路之各自傳送距離;根據針對該複數個候選內核指派之每一者所計算之該等各自總權重選擇具有最佳資料傳送效率之一後選內核指派;及,根據該經選定候選內核指派將該複數個內核之內核指派給各自模板處理器。
  7. 如請求項6之一或多個非暫時性電腦儲存媒體,其中該器件包括複數個線緩衝器單元,且進一步包括:判定哪些線緩衝器單元流出哪些內核及判定哪些線緩衝器單元沒入哪些內核。
  8. 如請求項7之一或多個非暫時性電腦儲存媒體,其中判定哪些線緩衝器單元沒入哪些內核包括:針對指派給一特定模板處理器之一特定生產內核,產生以與該特定模板處理器之傳送距離而分類的線緩衝器單元之一清單;及將對於由該特定生產內核所產生之緩衝資料具有足夠記憶體之一 最接近線緩衝器單元指派給該特定模板處理器。
  9. 如請求項6之一或多個非暫時性電腦儲存媒體,其中該等傳送距離係基於在內核之間在該網路內的節點跳躍之一各自數目。
  10. 如請求項6之一或多個非暫時性電腦儲存媒體,其中該等傳送距離係基於沿著該網路之一網路環之距離。
  11. 如請求項6之一或多個非暫時性電腦儲存媒體,其中每一模板處理器包括一執行道陣列及一個二維位移暫存器陣列。
  12. 一種運算系統,其包括:一或多個電腦及一或多個儲存可操作之指令之儲存器件,當該等指令由該一或多個電腦執行時引起該一或多個電腦執行以下之操作,包括:接收針對待在具有複數個模板處理器之一器件上執行之一影像處理應用程式以計算最終內核指派之一請求,其中該影像處理應用程式界定包括複數個內核之一影像處理管線;產生複數個候選內核指派,每一內核指派將該影像處理管線之每一內核指派給該複數個模板處理器之一各自者,包含:將在該影像處理管線中之內核順序地指派給還未被指派在該影像處理管線中之一內核之可用模板處理器,直到在該影像處理管線中之所有內核已經被指派給該複數個模板處理器之一各自模板處理器; 針對該複數個候選內核指派之每一者計算一總權重,每一候選內核指派之該總權重表示資料傳輸效率之一量測且係基於傳送於內核之間的資料之各自傳送大小及沿著連接該複數個模板處理器之一網路之各自傳送距離;根據針對該複數個候選內核指派之每一者所計算之該等各自總權重選擇具有最佳資料傳送效率之一後選內核指派;及,根據該經選定候選內核指派將該複數個內核之內核指派給各自模板處理器。
  13. 如請求項12之運算系統,其中該器件包括複數個線緩衝器單元,且進一步包括:判定哪些線緩衝器單元流出哪些內核及判定哪些線緩衝器單元沒入哪些內核。
  14. 如請求項13之運算系統,其中判定哪些線緩衝器單元沒入哪些內核包括:針對指派給一特定模板處理器之一特定生產內核,產生以與該特定模板處理器之傳送距離而分類的線緩衝器單元之一清單;及將對於由該特定生產內核所產生之緩衝資料具有足夠記憶體之一最接近線緩衝器單元指派給該特定模板處理器。
  15. 如請求項12之運算系統,其中該等傳送距離係基於在內核之間在該網路內的節點跳躍之一各自數目。
  16. 如請求項12之運算系統,其中該等傳送距離係包括基於沿著該網路之一網路環之距離。
  17. 如請求項12之運算系統,其中每一模板處理器包括一執行道陣列及一個二維位移暫存器陣列。
TW107104239A 2017-05-12 2018-02-07 在多核心影像處理器上之應用程式軟體之組態 TWI694412B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/594,529 US10467056B2 (en) 2017-05-12 2017-05-12 Configuration of application software on multi-core image processor
US15/594,529 2017-05-12

Publications (2)

Publication Number Publication Date
TW201901608A TW201901608A (zh) 2019-01-01
TWI694412B true TWI694412B (zh) 2020-05-21

Family

ID=61094605

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107104239A TWI694412B (zh) 2017-05-12 2018-02-07 在多核心影像處理器上之應用程式軟體之組態

Country Status (7)

Country Link
US (2) US10467056B2 (zh)
EP (1) EP3622396B1 (zh)
JP (1) JP6820428B2 (zh)
KR (1) KR102217969B1 (zh)
CN (1) CN110192184B (zh)
TW (1) TWI694412B (zh)
WO (1) WO2018208338A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108614460B (zh) * 2018-06-20 2020-11-06 东莞市李群自动化技术有限公司 分布式多节点控制系统及方法
CN110032407B (zh) * 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备
GB2595696B (en) * 2020-06-04 2022-12-28 Envisics Ltd Forming a hologram of a target image for projection using data streaming

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201206165A (en) * 2010-07-16 2012-02-01 Primax Electronics Ltd Image testing method of image pickup device and image testing device using the same
US20120102500A1 (en) * 2010-10-25 2012-04-26 Samsung Electronics Co., Ltd. Numa aware system task management
US20130219130A1 (en) * 2012-02-17 2013-08-22 Nokia Corporation Method, apparatus, and computer program product for inter-core communication in multi-core processors

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7499960B2 (en) 2001-10-01 2009-03-03 Oracle International Corporation Adaptive memory allocation
US7331037B2 (en) 2004-08-12 2008-02-12 National Instruments Corporation Static memory allocation in a graphical programming system
US7818725B1 (en) 2005-04-28 2010-10-19 Massachusetts Institute Of Technology Mapping communication in a parallel processing environment
JP4923602B2 (ja) 2006-02-10 2012-04-25 富士ゼロックス株式会社 画像形成処理シミュレーション装置及び画像形成処理シミュレーション方法
WO2007149476A2 (en) * 2006-06-19 2007-12-27 Trustees Of Columbia University In The City Of New York Assays for non-apoptotic cell death and uses thereof
US8306348B2 (en) 2007-04-24 2012-11-06 DigitalOptics Corporation Europe Limited Techniques for adjusting the effect of applying kernels to signals to achieve desired effect on signal
US7890314B2 (en) 2007-12-05 2011-02-15 Seagate Technology Llc Method for modeling performance of embedded processors having combined cache and memory hierarchy
US8856794B2 (en) * 2009-10-13 2014-10-07 Empire Technology Development Llc Multicore runtime management using process affinity graphs
US20110191758A1 (en) 2010-01-29 2011-08-04 Michael Scharf Optimized Memory Allocator By Analyzing Runtime Statistics
US10235220B2 (en) * 2012-01-23 2019-03-19 Advanced Micro Devices, Inc. Multithreaded computing
KR20130093995A (ko) * 2012-02-15 2013-08-23 한국전자통신연구원 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템
US9213781B1 (en) * 2012-09-19 2015-12-15 Placemeter LLC System and method for processing image data
DE102013205608A1 (de) * 2013-03-28 2014-10-02 Siemens Aktiengesellschaft Montagevorrichtung für ein Seitenwandverkleidungselement eines Schienenfahrzeugs
TW201604805A (zh) * 2014-07-30 2016-02-01 林政毅 帳號驗證方法及其系統
US9785423B2 (en) * 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
US9965824B2 (en) * 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
KR102384346B1 (ko) * 2015-06-01 2022-04-07 삼성전자주식회사 저장 방식에 상관없이 데이터를 억세스하는 애플리케이션 프로세서 및 이를 포함하는 모바일 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201206165A (en) * 2010-07-16 2012-02-01 Primax Electronics Ltd Image testing method of image pickup device and image testing device using the same
US20120102500A1 (en) * 2010-10-25 2012-04-26 Samsung Electronics Co., Ltd. Numa aware system task management
US20130219130A1 (en) * 2012-02-17 2013-08-22 Nokia Corporation Method, apparatus, and computer program product for inter-core communication in multi-core processors

Also Published As

Publication number Publication date
WO2018208338A1 (en) 2018-11-15
TW201901608A (zh) 2019-01-01
CN110192184B (zh) 2023-07-07
JP2020519977A (ja) 2020-07-02
EP3622396A1 (en) 2020-03-18
US20180329746A1 (en) 2018-11-15
JP6820428B2 (ja) 2021-01-27
EP3622396B1 (en) 2023-03-08
US11030005B2 (en) 2021-06-08
KR102217969B1 (ko) 2021-02-19
KR20190095462A (ko) 2019-08-14
US10467056B2 (en) 2019-11-05
US20200050486A1 (en) 2020-02-13
CN110192184A (zh) 2019-08-30

Similar Documents

Publication Publication Date Title
JP7202987B2 (ja) 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ
JP6612403B2 (ja) 画像プロセッサのためのエネルギ効率的なプロセッサコアアーキテクチャ
JP6389571B2 (ja) 画像プロセッサのための二次元シフトアレイ
TWI698832B (zh) 用於影像處理器之編譯器管理記憶體
JP2020061168A (ja) プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法
TWI735971B (zh) 具有可組態數目之主動核心及支援內部網路之影像處理器
TWI736880B (zh) 處理器、電腦程式產品及處理器所執行之方法
TWI690850B (zh) 非暫時性之電腦儲存媒體、運算系統及由一或多個電腦執行之方法
TW201907298A (zh) 按行緩衝器單元記憶體分配之判定
TWI670968B (zh) 影像處理器輸入輸出單元
TWI694412B (zh) 在多核心影像處理器上之應用程式軟體之組態
TWI718359B (zh) 具有高傳輸量內部通信協定之影像處理器