TW201947524A - 具有可組態數目之主動核心及支援內部網路之影像處理器 - Google Patents
具有可組態數目之主動核心及支援內部網路之影像處理器 Download PDFInfo
- Publication number
- TW201947524A TW201947524A TW108136896A TW108136896A TW201947524A TW 201947524 A TW201947524 A TW 201947524A TW 108136896 A TW108136896 A TW 108136896A TW 108136896 A TW108136896 A TW 108136896A TW 201947524 A TW201947524 A TW 201947524A
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- execution
- cores
- configuration
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- 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
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17375—One dimensional, e.g. linear array, ring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Advance Control (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上執行的多個內核組成之任何軟體應用程式,任何內核可經載入至任何核心上且任何線緩衝器單元可經組態以將輸入資料供給至任何核心/自任何核心汲集輸出資料。
圖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之影像處理器硬體架構實施例,應注意,在其中各內核操作一不同模板處理器之一基本組態中,可設想:在處理器之所有核心302具有一對應內核之前(圖4之四個內核流僅利用圖3之處理器之一半核心),另四個內核可自內核K4流動。
2.0 具有可組態數目之核心及支援內部網路之影像處理器
圖5以環狀網路實施方案及指派給網路環上之各節點之特定位址的一更詳細視圖展示圖3之影像處理器之一實施例500。如圖5中所觀察,環狀網路包含用以啟用不同數目之處理器核心502_1至502_8之多工器對506_1、506_2及506_3。此處,影像處理器500可包含組態暫存器空間(圖5中未展示),該組態暫存器空間例如判定多工器之通道選擇值以便實現或以其他方式實施數個不同網路組態之任何特定者(諸如下文所論述之任何/所有組態)。如圖5中所觀察,若選擇一多工器對之A通道,則該環繼續向前以連接下一對處理器核心。相比之下,若選擇一多工器對之B通道,則該環「短接電路」以便切斷下一對處理器核心。
圖6a至圖6d展示圖5之影像處理器可能具有的不同環狀網路及不同數目之主動處理器核心組態。
圖6a對應於其中已選擇多工器對506_1之B通道之一組態,其有效地形成節點1 (其對應於處理核心502_1之環上之位置)與節點2 (其對應於處理核心502_2之環上之位置)之間的一直接連接邏輯。如圖5及圖6a中所觀察,選擇多工器對506_1之B通道自環狀網路有效地切斷處理核心502_3、502_5、502_7、502_8、502_6及502_4。因而,環狀網路僅耦合I/O單元505及處理核心502_1及502_2。例如,若待在影像處理器500上執行之應用程式軟體程式僅包含一個或兩個內核(在此情況中,啟動不超過兩個處理核心(核心502_1及核心502_2)),則可選取此特定組態。其他核心502_3、502_5、502_7、502_8、502_6及502_4可置於例如一非作用低電力狀態以降低影像處理器之總電力消耗。
圖6b對應於其中已選擇多工器對506_1之A通道且已選擇多工器對506_2之B通道的一組態。相較於圖6a之組態,此特定多工器組態使環擴展使得環不僅耦合核心502_1及502_2而且耦合核心502_3及502_4。此處,在節點3 (其對應於處理核心502_3之環上之位置)與節點4 (其對應於處理核心502_4之環上之位置)之間形成一直接連接邏輯。如圖5及圖6b中所觀察,選擇多工器對506_1之A通道及多工器對506_2之B通道自環狀網路有效地切斷處理核心502_5、502_7、502_8及502_6。因而,環狀網路僅耦合I/O單元505及處理核心502_1、502_2、502_3及502_4。
例如,若待在影像處理器500上執行之應用程式軟體程式僅包含三個或四個內核(在此情況中,啟動不超過四個處理核心(核心502_1、502_2、502_3及502_4)),則可選擇此特定組態。其他核心502_5、502_7、502_8及502_6可置於例如一非作用低電力狀態以降低影像處理器之總電力消耗。
圖6c對應於其中已選擇多工器對506_1及506_2之A通道且已選擇多工器對506_3之B通道的一組態。相較於圖6b之組態,此特定多工器組態使環擴展使得環不僅耦合核心502_1、502_2、502_3及502_4而且耦合核心502_5及502_6。此處,在節點5 (其對應於處理核心502_5之環上之位置)與節點6 (其對應於處理核心502_6之環上之位置)之間形成一直接連接邏輯。如圖5及圖6c中所觀察,選擇多工器對506_1及506_2之A通道與多工器對506_3之B通道自環狀網路有效地切斷處理核心502_7及502_8。因而,環狀網路僅耦合I/O單元505及處理核心502_1、502_2、502_3、502_4、502_5及502_6。
例如,若待在影像處理器500上執行之應用程式軟體程式僅包含五個或六個內核(在此情況中,啟動不超過六個處理核心(核心502_1、502_2、502_3、502_4、502_5及502_6)),則可選擇此特定組態。其他核心502_7及502_8可置於例如一非作用低電力狀態以降低影像處理器之總電力消耗。
圖6d對應於其中已選擇多工器對506_1、506_2及506_3之A通道的一組態。相較於圖6b之組態,此特定多工器組態使環擴展使得環耦合I/O單元505及所有核心502_1、502_2、502_3、502_4、502_5、502_6、502_7及502_8。此處,在節點7 (其對應於處理核心502_7之環上之位置)與節點8 (其對應於處理核心502_8之環上之位置)之間的固線式連接形成環之右邊緣。例如,若待在影像處理器500上執行之應用程式軟體程式僅包含七個或八個內核,則可選擇此特定組態。
圖5之處理器的網路環設計之另一相關特徵係對不同網路節點之位址值指派之獨有配置。此處,簡要地再次參考圖3,應注意,圖3之處理器300按慣例對圍繞環之串聯節點進行編號。然而,圖5之環狀網路上之網路位址指派不同於圖3之傳統方法使得任何主動網路組態上之數值位址保持連續且連貫,而不管在環上組態為主動之核心數目。
即,若選擇圖6a之組態,則環上之主動數值位址包含位址0、1及2。相比之下,若選擇圖6b之組態,則環上之主動數值位址包含位址0、1、2、3及4。更進一步,若選擇圖6c之組態,則環上之主動數值位址包含位址0、1、2、3、4、5及6。最後,若選擇圖6d之組態,則環上之主動數值位址包含位址0、1、2、3、4、5、6、7及8。
以此方式配置網路位址可幫助避免將應用程式軟體源碼重新編譯成多個不同最低階目標碼(亦稱為二進位碼)例項,即使跨具有不同組態數目之主動處理器核心及對應不同基礎環狀網路組態之不同軟體應用程式重用此最低階碼。此處,在各個環境中,以具有一邏輯位址(其理論上可映射至例如實際硬體處理器內之任何核心)之一應用程式軟體之源碼級識別作一內核(其係一通信之目的地)。然而,當將源碼編譯成較低階目標碼或二進位碼時,將邏輯位址轉換成處理器上之一特定硬體核心之識別碼(即,環狀網路上之特定位址之一者)。
例如,考量使用兩個內核K1及K2之一應用程式軟體程式,其中I/O單元將輸入資料發送至內核K1,且內核K1將其輸出資料發送至內核K2。在將源碼編譯成較低階目標碼之後,假定內核K1經指派以具體言之在核心502_1上運行且內核K2經指派以具體言之在核心502_2上運行。因而,任何目標碼通信將包含用於發送至內核K1之通信之一網路位址1及用於發送至內核K2之通信之一網路位址2。
歸因於圍繞環之網路節點位置指派之獨有配置,最低階程式碼之此特定例項不僅可操作圖6a之雙核心處理器組態,而且可操作圖6b、圖6c及圖6d之其他處理器核心組態之各者。因而,用於包含內核K1及K2之應用程式軟體程式之源碼無需重新編譯成不同目標碼例項,應用程式軟體程式之目標應係在影像處理器組態6a、6b、6d、6e之不同者上運行。無需重新編譯相對於應用程式軟體開發及/或構造提供更大效率。
即,可更容易達成目標碼級之程式碼重用及/或可使用如可插入至一較大目標碼應用程式中之分量的目標碼之例項以目標碼級完成應用程式軟體之構造。考量其中具有內核K1及K2之前述應用程式軟體程式執行一操作OP1(其具有不僅作為一獨立程式而且作為例如在具有其本身獨有處理任務之數個其他操作之前執行的一前端操作之重要用途)之一實例。為簡便起見,假定存在三個此等其他操作。1)OP2,其使用兩個內核(例如,K3及K4)實施;2) OP3,其使用三個內核(例如,K3、K4及K5)實施;及3) OP4,其使用五個內核(例如,K3、K4、K5、K6及K7)實施。
此處,考量其中OP1前端操作經編譯成一目標碼例項(其中內核K2將其輸出資料發送至網路節點3處之核心502_3 (例如,而非網路節點0處之I/O單元505))之一應用程式軟體開發環境。另外,假定後繼操作OP2、OP3及OP4經編譯成目標碼例項使得:1) OP2、OP3及OP4之第一(輸入、K3)及第二(K4)內核分別操作核心502_3及502_4;2) OP3及OP4之第三(K5)內核操作核心502_5;及3) OP4之第四(K6)及第五(K7)內核分別操作核心502_6及502_7。
在此情況中,經編譯前端OP1例項可「照原樣」以目標碼級分別與經編譯OP2、OP3及OP4目標碼例項之任一者組合以建立三個單獨的可即時執行應用程式軟體程式:1)對應於OP1+OP2之一第一應用程式軟體程式;2)對應於OP1+OP3之一第二應用程式軟體程式;及3)對應於OP1+OP4之一第三應用程式軟體程式。
此處,不僅OP1之目標碼例項可與OP2、OP3及OP4目標碼例項之各者單獨組合以建立三個不同目標碼級應用程式,而且應注意,使用四個核心之第一應用程式軟體程式(OP1+OP2)可經組態而以圖6b之處理器組態操作,使用五個核心之第二應用程式軟體程式(OP1+OP3)可經組態而以圖6c之處理器組態操作,且使用七個核心之第三應用程式軟體程式(OP1+OP4)可經組態而以圖6d之處理器組態操作。
因此,OP1之目標碼例項不僅可與其他目標碼例項組合且產生較大工作目標碼級應用程式,而且OP1之目標碼例項可如此組合,即使導致不同應用程式之組合需要具有不同數目之主動硬體核心之不同處理器組態及對應不同內部環狀網路組態。即,可以無關於目標硬體處理器中之主動核心的組態/數目之目標碼級完成程式碼構造,即時該處理器內之內部網路跨不同處理器組態而不同。
此外,在目標碼級使用抽象內核識別符之情況下,任何目標碼程式可容易插入至較大目標碼級構造中且經組態以在不同處理器核心上執行。例如,假定所編譯之上文論述之OP3之目標碼例項:1)使用一輸入變數=BASE識別其第一內核(來自上文論述之K3);2)使用一識別符=BASE+1識別其第二內核(來自上文論述之K4);及3)使用一識別符=BASE+2識別其第三內核(來自上文論述之K5)。在此情況中,藉由設定BASE=3,用於與上文所論述之第二(OP1+OP3)應用程式一起利用之OP3之目標碼之組態係簡單的。
此外,僅藉由設定BASE=1,亦可容易地完成將OP3目標碼之一相同例項重用於獨立操作。使用網路環上之正確內核至內核通信,後者將引起OP3之第一內核在核心502_1上執行且其第二內核操作核心502_2。因此,在輸入變數/組態資訊(BASE)簡單改變之情況下,在目標碼級之OP3之相同例項可容易以圖6c之處理器組態操作(針對上文剛論述之第二應用程式(OP1+OP3)),或以圖6a之處理器組態操作為一獨立應用程式。
因而,藉由一目標級程式內之不同內核相對於彼此的網路位址偏移而識別該等內核,一目標級程式之相同例項可容易經映射至不同處理器組態,因為處理器之網路環上之獨有定址圖案本質上保留此等偏移之含義,即時環上之節點之數目隨各不同處理器組態而改變。因而,在諸多情境中,一旦建立一程式之一目標碼例項,便可將其之相同複本作為一「插件」重用於諸多不同應用程式及對應組態,而非針對例如該程式之功能之各新用途或不同基礎處理器組態自一相同源碼級編譯目標碼之一新例項。
若亦將輸入串流所源自之位址及/或輸出串流欲發送至之位址指定為源碼級之各自輸入變數,則亦增強將一目標碼例項插入至一較大目標碼構造中之能力。例如,再次使用OP3作為一實例,當將OP3用於上文所論述之第二(OP1+OP3)應用程式且BASE=3時,可將識別OP3之輸入資料來自何處之一額外輸入變數IN設定為IN=2 (在核心502_2上執行之OP1之K2針對OP1+OP3應用程式發送OP3之輸入資料)。可使用設定為OUT=0之另一變數OUT指定識別OP3將其輸出資訊發送至何處之目的地(當用於OP1+OP3應用程式中時,OP3將其輸出資料發送至I/O單元505)。如上文所論述,使用此等設定,OP3之目標碼例項可在OP1+OP2應用程式內操作,其中處理器經設定成圖6c之組態。
為將OP3目標碼之相同例項之一複本重用於獨立操作,輸入組態資訊僅需要設定為IN=OUT=0及BASE=1。使用此組態,OP3將自I/O單元505接收其輸入資料且將其輸出資料發送至I/O單元505。又,使用此組態,OP3例項可以圖6a之處理器組態操作。因而,OP3之相同例項本質上無關於包含不同內部網路環組態之基礎處理器組態。
因此,總體應用程式軟體開發環境可包含以源碼級開發經寫入以執行基本、常用/重用處理功能之較小細粒化應用程式軟體程式。將較小細粒化源碼應用程式經編譯成各自目標碼例項。接著視需要複製目標碼例項且將其等與目標碼例項之其他複本組合以形成更大、更全面的可執行目標碼級應用程式。
若存在具有不同數目之核心之不同硬體平台,則可實現一更高效率。此處,上文關於圖6a至圖6d之論述係關於具有八個核心之單個硬體平台,其中八個核心平台可組態有兩個、四個、六個或八個主動核心。又,上文展示,例如雙內核目標碼級程式(例如,OP1)可在此等組態之任一者上操作而無針對OP1程式之兩個重新編譯新目標碼例項。
此通用性可進一步延伸至例如一產品線,該產品線由以下各者組成:1)一第一硬體平台,其僅由兩個核心組成而支援兩個主動核心之單個組態;2)一第二硬體平台,其由四個核心組成而支援兩個主動核心之一第一組態及四個主動核心之一第二組態;3)一第三硬體平台,其由六個核心組成而支援支援兩個核心之一第一組態、支援四個核心之一第二組態及支援六個核心之一第三組態;及4)一第四硬體平台,其由八個核心組成而支援上文關於圖6a至圖6d所描述之四個不同組態。
上文詳細描述,使用兩個內核之一目標碼級程式OP1將在上述硬體平台4)之四個組態之各者上操作。然而,若上述硬體平台1)、2)及3)經設計以枚舉如本文中所描述之網路節點,則可在硬體平台4)之所有四個組態上操作之目標碼級程式OP1亦將在以下之任一者上操作:i)上述硬體平台3)之三個不同組態;ii)上述硬體平台2)之兩個不同組態;及iii)上述硬體平台1)。因而,碼重用能力不僅延伸至一相同硬體平台之不同組態,而且延伸至不同硬體平台之不同組態。碼可獨立或與如上文所描述之其他目標碼級程式組合。
圖7展示上文所描述之一方法。如圖7中所觀察,該方法包含組態701目標碼之一第一例項以在一處理器上執行,該處理器具有多個核心及一內部網路,該內部網路經組態成使一第一數目之該等核心能夠通信地耦合之一第一組態。該方法亦包含組態702該目標碼之一第二例項以在該處理器之一第二例項上執行,該處理器之該第二例項之一各自內部網路經組態成使一不同數目之核心能夠通信地耦合之一第二組態,其中該處理器及該處理器之該第二例項上之相同定位核心針對該第一組態及該第二組態具有相同網路位址。
應切實認識到,上文所描述之理念限於圖5之特定處理器。此處,具有例如不同數目之處理核心或甚至不同類型之內部網路拓撲之其他處理器可使用本文中之教示。即,其他網路拓撲(例如,一交換式連接網路)可經設計以跨不同內部網路組態保持其源/目的地節點之實體位址恆定及/或跨不同內部網路組態保持實體位址連續且連貫。
3.0 影像處理器實施方案實施例
圖8a至e至圖12提供關於上文詳細描述之影像處理器及相關聯模板處理器的各項實施例之操作及設計的額外細節。自圖2之論述回想到,一線緩衝器單元將線群組饋送至一模板處理器之相關聯圖表產生器,圖8a至圖8e繪示一線緩衝器單元201之剖析活動、一圖表產生器單元203之細粒化剖析活動兩者以及耦合至圖表產生器單元203之模板處理器702之模板處理活動的一高階實施例。
圖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、磁卡或光卡、傳播媒介或適合於儲存電子指令之其他類型之媒體/機器可讀媒體。例如,本發明可下載為一電腦程式,其藉由以一載波或其他傳播媒介體現之資料信號經由一通信鏈路(例如一數據機或網路連接)自一遠端電腦(例如一伺服器)傳送至一請求電腦(例如一用戶端)。
上述說明中已參考特定例示性實施例描述本發明。然而,應明白,可在不背離隨附申請專利範圍中所闡述之本發明之較廣泛精神及範疇的情況下對本發明作出各種修改及改變。相應地,本說明書及圖式應被視為闡釋性而非限制性。
在下文中,描述一些實例。
實例 1:一種影像處理器,其包括:
複數個處理核心;及
一環狀網路,其經耦合於處理核心之間,該網狀網路用以提供耦合一第一組該等處理核心之一第一組態及耦合該第一組該等處理核心及一第二組該等處理核心之一第二組態,其中該第一組態及該第二組態以一連續序列將網路位址指派給各處理核心,其中該第一組態及該第二組態將相同網路位址指派給該第一組處理核心中之各處理核心,其中指派給圍繞該環之該等處理核心之該等網路位址不同於該連續序列。
實例 2:如實例1之處理器,其中該影像處理器包括用以建立該第一組態及該第二組態之暫存器空間。
實例 3:如實例1或2之處理器,其中該環狀網路包括一組多工器使得該組多工器之一第一通道之選擇引起該環狀網路容許包含該環上之額外節點且該組多工器之一第二通道之選擇引起該環狀網路排除該等額外節點。
實例 4:如實例3之處理器,其中該組多工器包括一對多工器。
實例 5:如前述實例中至少一者之處理器,其中該等處理核心執行程式碼。
實例 6:如前述實例中至少一者之處理器,其中該等處理核心包括一各自執行道陣列及二維位移暫存器陣列。
實例 7:如前述實例中至少一者之處理器,其中一影像處理器之架構包括至少一個線緩衝器、至少一個圖表產生器及/或至少一個模板產生器。
實例 8:如前述實例中至少一者之處理器,其經組態以處理模板,特定言之重疊模板。
實例 9:如前述實例中至少一者之處理器,其經組態以在一資料運算單元上操作,該資料運算單元包括具有寬於該執行道陣列之尺寸之一位移暫存器結構,特定言之在該執行道陣列外存在暫存器。
實例 10:一種包括程式碼之非暫時性機器可讀儲存媒體,該程式碼在由一運算系統處理時引起執行一方法,該方法包括:
組態目標碼之一第一例項以在一處理器上執行,該處理器具有多個核心及一內部網路,該內部網路經組態成使一第一數目之該等核心能夠通信地耦合之一第一組態;及
組態該目標碼之一第二例項以在該處理器之一第二例項上執行,該處理器之該第二例項之一各自內部網路經組態成使一不同數目之核心能夠通信地耦合之一第二組態,其中該處理器及該處理器之該第二例項上之相同定位核心針對該第一組態及該第二組態具有相同網路位址。
實例 11:如實例10之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該目標碼之該第二例項在該處理器及該處理器之該第二例項之不同各自核心上執行。
實例 12:如實例10或11之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該第二例項將不同核心定址為自一基底位址偏移。
實例 13:如實例10至12中至少一者之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該第二例項之該組態包含針對該第一例項及該第二例項設定不同基底位址。
實例 14:如實例10至13中至少一者之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該第二例項之一者將作為一較大應用程式內之一較小碼分量在其各自處理器上執行,其中該較大應用程式係藉由組合另一程式之一目標碼例項與該目標碼之該第一例項及該第二例項之該一者而建構。
實例 15:如實例10至14中至少一者之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該第二例項之另一者將作為一獨立應用程式在其各自處理器上執行。
實例 16:如實例10至15中至少一者之非暫時性機器可讀媒體,其中該方法進一步包括:
組態該目標碼之一第三例項以在具有不同於該處理器之一數目之核心之另一處理器上執行。
實例 17:如實例10至16中至少一者之非暫時性機器可讀媒體,其中該方法在包括至少一個線緩衝器、至少一個圖表產生器及/或至少一個模板產生器之一影像處理器之一架構上操作。
實例 18:如實例10至17中至少一者之非暫時性機器可讀媒體,其經組態以處理模板,特定言之重疊模板。
實例 19:如實例10至18中至少一者之非暫時性機器可讀媒體,其經組態以在一資料運算單元上操作,該資料運算單元包括具有寬於該執行道陣列之尺寸之一位移暫存器結構,尤其在該執行道陣列外存在暫存器。
實例 20:一種運算系統,其包括:
複數個處理核心;
一系統記憶體;
一系統記憶器控制器,其介於該系統記憶體與該複數個處理核心之間;
一非暫時性機器可讀儲存媒體,其包括程式碼,該程式碼在由該運算系統處理時引起執行一方法,該方法包括:
組態目標碼之一第一例項以在一處理器上執行,該處理器具有多個核心及一內部網路,該內部網路經組態成使一第一數目之該等核心能夠通信地耦合之一第一組態;及
組態該目標碼之一第二例項以在該處理器之一第二例項上執行,該處理器之該第二例項之一各自內部網路經組態成使一不同數目之核心能夠通信地耦合之一第二組態,其中該處理器及該處理器之該第二例項上之相同定位核心針對該第一組態及該第二組態具有相同網路位址。
實例 21:如實例20之運算系統,其中該目標碼之該第一例項及該目標碼之該第二例項在該處理器及該處理器之該第二例項之不同各自核心上執行。
實例 22:如實例20或21之運算系統,其中該目標碼之該第一例項及該第二例項將不同核心定址為自一基底位址偏移。
實例 23:如實例20至22中至少一者之運算系統,其中該目標碼之該第一例項及該第二例項之該組態包含針對該第一例項及該第二例項設定不同基底位址。
實例 24:如實例20至23中至少一者之運算系統,其中該目標碼之該第一例項及該第二例項之一者將作為一較大應用程式內之一較小碼分量在其各自處理器上執行,其中該較大應用程式係藉由組合另一程式之一目標碼例項與該目標碼之該第一例項及該第二例項之該一者而建構。
實例 25:如實例20至24中至少一者之運算系統,其中該目標碼之該第一例項及該第二例項之另一者將作為一獨立應用程式在其各自處理器上執行。
實例 26:如實例20至25中至少一者之運算系統,其中該處理器及該處理器之該第二例項係影像處理器。
實例 27:如實例20至26中至少一者之運算系統,其包括具有包括至少一個線緩衝器、至少一個圖表產生器及/或至少一個模板產生器之一架構之一影像處理器。
實例 28:如實例20至27中至少一者之運算系統,其經組態以處理模板,特定言之重疊模板。
實例 29:如實例20至28中至少一者之運算系統,其包括一資料運算單元,該資料運算單元包括具有寬於該執行道陣列之尺寸之一位移暫存器結構,尤其在該執行道陣列外存在暫存器。
如此項技術中已知,用於執行程式碼之基本電路結構包含一執行級及暫存器空間。執行級含有用於執行指令之執行單元。將一待執行指令之輸入運算元自暫存器空間提供至執行級。將自執行級執行一指令產生之結果寫回至暫存器空間。
在一傳統處理器上執行一軟體執行緒需要透過執行級循序地執行一系列指令。最常見地,在自單個輸入運算元集產生單個結果之意義上,操作係「純量」。然而,在「向量」處理器之情況下,由執行級執行一指令將自輸入運算元之一向量產生結果之一向量。
圖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上執行的多個內核組成之任何軟體應用程式,任何內核可經載入至任何核心上且任何線緩衝器單元可經組態以將輸入資料供給至任何核心/自任何核心汲集輸出資料。
圖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之影像處理器硬體架構實施例,應注意,在其中各內核操作一不同模板處理器之一基本組態中,可設想:在處理器之所有核心302具有一對應內核之前(圖4之四個內核流僅利用圖3之處理器之一半核心),另四個內核可自內核K4流動。
2.0 具有可組態數目之核心及支援內部網路之影像處理器
圖5以環狀網路實施方案及指派給網路環上之各節點之特定位址的一更詳細視圖展示圖3之影像處理器之一實施例500。如圖5中所觀察,環狀網路包含用以啟用不同數目之處理器核心502_1至502_8之多工器對506_1、506_2及506_3。此處,影像處理器500可包含組態暫存器空間(圖5中未展示),該組態暫存器空間例如判定多工器之通道選擇值以便實現或以其他方式實施數個不同網路組態之任何特定者(諸如下文所論述之任何/所有組態)。如圖5中所觀察,若選擇一多工器對之A通道,則該環繼續向前以連接下一對處理器核心。相比之下,若選擇一多工器對之B通道,則該環「短接電路」以便切斷下一對處理器核心。
圖6a至圖6d展示圖5之影像處理器可能具有的不同環狀網路及不同數目之主動處理器核心組態。
圖6a對應於其中已選擇多工器對506_1之B通道之一組態,其有效地形成節點1 (其對應於處理核心502_1之環上之位置)與節點2 (其對應於處理核心502_2之環上之位置)之間的一直接連接邏輯。如圖5及圖6a中所觀察,選擇多工器對506_1之B通道自環狀網路有效地切斷處理核心502_3、502_5、502_7、502_8、502_6及502_4。因而,環狀網路僅耦合I/O單元505及處理核心502_1及502_2。例如,若待在影像處理器500上執行之應用程式軟體程式僅包含一個或兩個內核(在此情況中,啟動不超過兩個處理核心(核心502_1及核心502_2)),則可選取此特定組態。其他核心502_3、502_5、502_7、502_8、502_6及502_4可置於例如一非作用低電力狀態以降低影像處理器之總電力消耗。
圖6b對應於其中已選擇多工器對506_1之A通道且已選擇多工器對506_2之B通道的一組態。相較於圖6a之組態,此特定多工器組態使環擴展使得環不僅耦合核心502_1及502_2而且耦合核心502_3及502_4。此處,在節點3 (其對應於處理核心502_3之環上之位置)與節點4 (其對應於處理核心502_4之環上之位置)之間形成一直接連接邏輯。如圖5及圖6b中所觀察,選擇多工器對506_1之A通道及多工器對506_2之B通道自環狀網路有效地切斷處理核心502_5、502_7、502_8及502_6。因而,環狀網路僅耦合I/O單元505及處理核心502_1、502_2、502_3及502_4。
例如,若待在影像處理器500上執行之應用程式軟體程式僅包含三個或四個內核(在此情況中,啟動不超過四個處理核心(核心502_1、502_2、502_3及502_4)),則可選擇此特定組態。其他核心502_5、502_7、502_8及502_6可置於例如一非作用低電力狀態以降低影像處理器之總電力消耗。
圖6c對應於其中已選擇多工器對506_1及506_2之A通道且已選擇多工器對506_3之B通道的一組態。相較於圖6b之組態,此特定多工器組態使環擴展使得環不僅耦合核心502_1、502_2、502_3及502_4而且耦合核心502_5及502_6。此處,在節點5 (其對應於處理核心502_5之環上之位置)與節點6 (其對應於處理核心502_6之環上之位置)之間形成一直接連接邏輯。如圖5及圖6c中所觀察,選擇多工器對506_1及506_2之A通道與多工器對506_3之B通道自環狀網路有效地切斷處理核心502_7及502_8。因而,環狀網路僅耦合I/O單元505及處理核心502_1、502_2、502_3、502_4、502_5及502_6。
例如,若待在影像處理器500上執行之應用程式軟體程式僅包含五個或六個內核(在此情況中,啟動不超過六個處理核心(核心502_1、502_2、502_3、502_4、502_5及502_6)),則可選擇此特定組態。其他核心502_7及502_8可置於例如一非作用低電力狀態以降低影像處理器之總電力消耗。
圖6d對應於其中已選擇多工器對506_1、506_2及506_3之A通道的一組態。相較於圖6b之組態,此特定多工器組態使環擴展使得環耦合I/O單元505及所有核心502_1、502_2、502_3、502_4、502_5、502_6、502_7及502_8。此處,在節點7 (其對應於處理核心502_7之環上之位置)與節點8 (其對應於處理核心502_8之環上之位置)之間的固線式連接形成環之右邊緣。例如,若待在影像處理器500上執行之應用程式軟體程式僅包含七個或八個內核,則可選擇此特定組態。
圖5之處理器的網路環設計之另一相關特徵係對不同網路節點之位址值指派之獨有配置。此處,簡要地再次參考圖3,應注意,圖3之處理器300按慣例對圍繞環之串聯節點進行編號。然而,圖5之環狀網路上之網路位址指派不同於圖3之傳統方法使得任何主動網路組態上之數值位址保持連續且連貫,而不管在環上組態為主動之核心數目。
即,若選擇圖6a之組態,則環上之主動數值位址包含位址0、1及2。相比之下,若選擇圖6b之組態,則環上之主動數值位址包含位址0、1、2、3及4。更進一步,若選擇圖6c之組態,則環上之主動數值位址包含位址0、1、2、3、4、5及6。最後,若選擇圖6d之組態,則環上之主動數值位址包含位址0、1、2、3、4、5、6、7及8。
以此方式配置網路位址可幫助避免將應用程式軟體源碼重新編譯成多個不同最低階目標碼(亦稱為二進位碼)例項,即使跨具有不同組態數目之主動處理器核心及對應不同基礎環狀網路組態之不同軟體應用程式重用此最低階碼。此處,在各個環境中,以具有一邏輯位址(其理論上可映射至例如實際硬體處理器內之任何核心)之一應用程式軟體之源碼級識別作一內核(其係一通信之目的地)。然而,當將源碼編譯成較低階目標碼或二進位碼時,將邏輯位址轉換成處理器上之一特定硬體核心之識別碼(即,環狀網路上之特定位址之一者)。
例如,考量使用兩個內核K1及K2之一應用程式軟體程式,其中I/O單元將輸入資料發送至內核K1,且內核K1將其輸出資料發送至內核K2。在將源碼編譯成較低階目標碼之後,假定內核K1經指派以具體言之在核心502_1上運行且內核K2經指派以具體言之在核心502_2上運行。因而,任何目標碼通信將包含用於發送至內核K1之通信之一網路位址1及用於發送至內核K2之通信之一網路位址2。
歸因於圍繞環之網路節點位置指派之獨有配置,最低階程式碼之此特定例項不僅可操作圖6a之雙核心處理器組態,而且可操作圖6b、圖6c及圖6d之其他處理器核心組態之各者。因而,用於包含內核K1及K2之應用程式軟體程式之源碼無需重新編譯成不同目標碼例項,應用程式軟體程式之目標應係在影像處理器組態6a、6b、6d、6e之不同者上運行。無需重新編譯相對於應用程式軟體開發及/或構造提供更大效率。
即,可更容易達成目標碼級之程式碼重用及/或可使用如可插入至一較大目標碼應用程式中之分量的目標碼之例項以目標碼級完成應用程式軟體之構造。考量其中具有內核K1及K2之前述應用程式軟體程式執行一操作OP1(其具有不僅作為一獨立程式而且作為例如在具有其本身獨有處理任務之數個其他操作之前執行的一前端操作之重要用途)之一實例。為簡便起見,假定存在三個此等其他操作。1)OP2,其使用兩個內核(例如,K3及K4)實施;2) OP3,其使用三個內核(例如,K3、K4及K5)實施;及3) OP4,其使用五個內核(例如,K3、K4、K5、K6及K7)實施。
此處,考量其中OP1前端操作經編譯成一目標碼例項(其中內核K2將其輸出資料發送至網路節點3處之核心502_3 (例如,而非網路節點0處之I/O單元505))之一應用程式軟體開發環境。另外,假定後繼操作OP2、OP3及OP4經編譯成目標碼例項使得:1) OP2、OP3及OP4之第一(輸入、K3)及第二(K4)內核分別操作核心502_3及502_4;2) OP3及OP4之第三(K5)內核操作核心502_5;及3) OP4之第四(K6)及第五(K7)內核分別操作核心502_6及502_7。
在此情況中,經編譯前端OP1例項可「照原樣」以目標碼級分別與經編譯OP2、OP3及OP4目標碼例項之任一者組合以建立三個單獨的可即時執行應用程式軟體程式:1)對應於OP1+OP2之一第一應用程式軟體程式;2)對應於OP1+OP3之一第二應用程式軟體程式;及3)對應於OP1+OP4之一第三應用程式軟體程式。
此處,不僅OP1之目標碼例項可與OP2、OP3及OP4目標碼例項之各者單獨組合以建立三個不同目標碼級應用程式,而且應注意,使用四個核心之第一應用程式軟體程式(OP1+OP2)可經組態而以圖6b之處理器組態操作,使用五個核心之第二應用程式軟體程式(OP1+OP3)可經組態而以圖6c之處理器組態操作,且使用七個核心之第三應用程式軟體程式(OP1+OP4)可經組態而以圖6d之處理器組態操作。
因此,OP1之目標碼例項不僅可與其他目標碼例項組合且產生較大工作目標碼級應用程式,而且OP1之目標碼例項可如此組合,即使導致不同應用程式之組合需要具有不同數目之主動硬體核心之不同處理器組態及對應不同內部環狀網路組態。即,可以無關於目標硬體處理器中之主動核心的組態/數目之目標碼級完成程式碼構造,即時該處理器內之內部網路跨不同處理器組態而不同。
此外,在目標碼級使用抽象內核識別符之情況下,任何目標碼程式可容易插入至較大目標碼級構造中且經組態以在不同處理器核心上執行。例如,假定所編譯之上文論述之OP3之目標碼例項:1)使用一輸入變數=BASE識別其第一內核(來自上文論述之K3);2)使用一識別符=BASE+1識別其第二內核(來自上文論述之K4);及3)使用一識別符=BASE+2識別其第三內核(來自上文論述之K5)。在此情況中,藉由設定BASE=3,用於與上文所論述之第二(OP1+OP3)應用程式一起利用之OP3之目標碼之組態係簡單的。
此外,僅藉由設定BASE=1,亦可容易地完成將OP3目標碼之一相同例項重用於獨立操作。使用網路環上之正確內核至內核通信,後者將引起OP3之第一內核在核心502_1上執行且其第二內核操作核心502_2。因此,在輸入變數/組態資訊(BASE)簡單改變之情況下,在目標碼級之OP3之相同例項可容易以圖6c之處理器組態操作(針對上文剛論述之第二應用程式(OP1+OP3)),或以圖6a之處理器組態操作為一獨立應用程式。
因而,藉由一目標級程式內之不同內核相對於彼此的網路位址偏移而識別該等內核,一目標級程式之相同例項可容易經映射至不同處理器組態,因為處理器之網路環上之獨有定址圖案本質上保留此等偏移之含義,即時環上之節點之數目隨各不同處理器組態而改變。因而,在諸多情境中,一旦建立一程式之一目標碼例項,便可將其之相同複本作為一「插件」重用於諸多不同應用程式及對應組態,而非針對例如該程式之功能之各新用途或不同基礎處理器組態自一相同源碼級編譯目標碼之一新例項。
若亦將輸入串流所源自之位址及/或輸出串流欲發送至之位址指定為源碼級之各自輸入變數,則亦增強將一目標碼例項插入至一較大目標碼構造中之能力。例如,再次使用OP3作為一實例,當將OP3用於上文所論述之第二(OP1+OP3)應用程式且BASE=3時,可將識別OP3之輸入資料來自何處之一額外輸入變數IN設定為IN=2 (在核心502_2上執行之OP1之K2針對OP1+OP3應用程式發送OP3之輸入資料)。可使用設定為OUT=0之另一變數OUT指定識別OP3將其輸出資訊發送至何處之目的地(當用於OP1+OP3應用程式中時,OP3將其輸出資料發送至I/O單元505)。如上文所論述,使用此等設定,OP3之目標碼例項可在OP1+OP2應用程式內操作,其中處理器經設定成圖6c之組態。
為將OP3目標碼之相同例項之一複本重用於獨立操作,輸入組態資訊僅需要設定為IN=OUT=0及BASE=1。使用此組態,OP3將自I/O單元505接收其輸入資料且將其輸出資料發送至I/O單元505。又,使用此組態,OP3例項可以圖6a之處理器組態操作。因而,OP3之相同例項本質上無關於包含不同內部網路環組態之基礎處理器組態。
因此,總體應用程式軟體開發環境可包含以源碼級開發經寫入以執行基本、常用/重用處理功能之較小細粒化應用程式軟體程式。將較小細粒化源碼應用程式經編譯成各自目標碼例項。接著視需要複製目標碼例項且將其等與目標碼例項之其他複本組合以形成更大、更全面的可執行目標碼級應用程式。
若存在具有不同數目之核心之不同硬體平台,則可實現一更高效率。此處,上文關於圖6a至圖6d之論述係關於具有八個核心之單個硬體平台,其中八個核心平台可組態有兩個、四個、六個或八個主動核心。又,上文展示,例如雙內核目標碼級程式(例如,OP1)可在此等組態之任一者上操作而無針對OP1程式之兩個重新編譯新目標碼例項。
此通用性可進一步延伸至例如一產品線,該產品線由以下各者組成:1)一第一硬體平台,其僅由兩個核心組成而支援兩個主動核心之單個組態;2)一第二硬體平台,其由四個核心組成而支援兩個主動核心之一第一組態及四個主動核心之一第二組態;3)一第三硬體平台,其由六個核心組成而支援支援兩個核心之一第一組態、支援四個核心之一第二組態及支援六個核心之一第三組態;及4)一第四硬體平台,其由八個核心組成而支援上文關於圖6a至圖6d所描述之四個不同組態。
上文詳細描述,使用兩個內核之一目標碼級程式OP1將在上述硬體平台4)之四個組態之各者上操作。然而,若上述硬體平台1)、2)及3)經設計以枚舉如本文中所描述之網路節點,則可在硬體平台4)之所有四個組態上操作之目標碼級程式OP1亦將在以下之任一者上操作:i)上述硬體平台3)之三個不同組態;ii)上述硬體平台2)之兩個不同組態;及iii)上述硬體平台1)。因而,碼重用能力不僅延伸至一相同硬體平台之不同組態,而且延伸至不同硬體平台之不同組態。碼可獨立或與如上文所描述之其他目標碼級程式組合。
圖7展示上文所描述之一方法。如圖7中所觀察,該方法包含組態701目標碼之一第一例項以在一處理器上執行,該處理器具有多個核心及一內部網路,該內部網路經組態成使一第一數目之該等核心能夠通信地耦合之一第一組態。該方法亦包含組態702該目標碼之一第二例項以在該處理器之一第二例項上執行,該處理器之該第二例項之一各自內部網路經組態成使一不同數目之核心能夠通信地耦合之一第二組態,其中該處理器及該處理器之該第二例項上之相同定位核心針對該第一組態及該第二組態具有相同網路位址。
應切實認識到,上文所描述之理念限於圖5之特定處理器。此處,具有例如不同數目之處理核心或甚至不同類型之內部網路拓撲之其他處理器可使用本文中之教示。即,其他網路拓撲(例如,一交換式連接網路)可經設計以跨不同內部網路組態保持其源/目的地節點之實體位址恆定及/或跨不同內部網路組態保持實體位址連續且連貫。
3.0 影像處理器實施方案實施例
圖8a至e至圖12提供關於上文詳細描述之影像處理器及相關聯模板處理器的各項實施例之操作及設計的額外細節。自圖2之論述回想到,一線緩衝器單元將線群組饋送至一模板處理器之相關聯圖表產生器,圖8a至圖8e繪示一線緩衝器單元201之剖析活動、一圖表產生器單元203之細粒化剖析活動兩者以及耦合至圖表產生器單元203之模板處理器702之模板處理活動的一高階實施例。
圖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、磁卡或光卡、傳播媒介或適合於儲存電子指令之其他類型之媒體/機器可讀媒體。例如,本發明可下載為一電腦程式,其藉由以一載波或其他傳播媒介體現之資料信號經由一通信鏈路(例如一數據機或網路連接)自一遠端電腦(例如一伺服器)傳送至一請求電腦(例如一用戶端)。
上述說明中已參考特定例示性實施例描述本發明。然而,應明白,可在不背離隨附申請專利範圍中所闡述之本發明之較廣泛精神及範疇的情況下對本發明作出各種修改及改變。相應地,本說明書及圖式應被視為闡釋性而非限制性。
在下文中,描述一些實例。
實例 1:一種影像處理器,其包括:
複數個處理核心;及
一環狀網路,其經耦合於處理核心之間,該網狀網路用以提供耦合一第一組該等處理核心之一第一組態及耦合該第一組該等處理核心及一第二組該等處理核心之一第二組態,其中該第一組態及該第二組態以一連續序列將網路位址指派給各處理核心,其中該第一組態及該第二組態將相同網路位址指派給該第一組處理核心中之各處理核心,其中指派給圍繞該環之該等處理核心之該等網路位址不同於該連續序列。
實例 2:如實例1之處理器,其中該影像處理器包括用以建立該第一組態及該第二組態之暫存器空間。
實例 3:如實例1或2之處理器,其中該環狀網路包括一組多工器使得該組多工器之一第一通道之選擇引起該環狀網路容許包含該環上之額外節點且該組多工器之一第二通道之選擇引起該環狀網路排除該等額外節點。
實例 4:如實例3之處理器,其中該組多工器包括一對多工器。
實例 5:如前述實例中至少一者之處理器,其中該等處理核心執行程式碼。
實例 6:如前述實例中至少一者之處理器,其中該等處理核心包括一各自執行道陣列及二維位移暫存器陣列。
實例 7:如前述實例中至少一者之處理器,其中一影像處理器之架構包括至少一個線緩衝器、至少一個圖表產生器及/或至少一個模板產生器。
實例 8:如前述實例中至少一者之處理器,其經組態以處理模板,特定言之重疊模板。
實例 9:如前述實例中至少一者之處理器,其經組態以在一資料運算單元上操作,該資料運算單元包括具有寬於該執行道陣列之尺寸之一位移暫存器結構,特定言之在該執行道陣列外存在暫存器。
實例 10:一種包括程式碼之非暫時性機器可讀儲存媒體,該程式碼在由一運算系統處理時引起執行一方法,該方法包括:
組態目標碼之一第一例項以在一處理器上執行,該處理器具有多個核心及一內部網路,該內部網路經組態成使一第一數目之該等核心能夠通信地耦合之一第一組態;及
組態該目標碼之一第二例項以在該處理器之一第二例項上執行,該處理器之該第二例項之一各自內部網路經組態成使一不同數目之核心能夠通信地耦合之一第二組態,其中該處理器及該處理器之該第二例項上之相同定位核心針對該第一組態及該第二組態具有相同網路位址。
實例 11:如實例10之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該目標碼之該第二例項在該處理器及該處理器之該第二例項之不同各自核心上執行。
實例 12:如實例10或11之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該第二例項將不同核心定址為自一基底位址偏移。
實例 13:如實例10至12中至少一者之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該第二例項之該組態包含針對該第一例項及該第二例項設定不同基底位址。
實例 14:如實例10至13中至少一者之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該第二例項之一者將作為一較大應用程式內之一較小碼分量在其各自處理器上執行,其中該較大應用程式係藉由組合另一程式之一目標碼例項與該目標碼之該第一例項及該第二例項之該一者而建構。
實例 15:如實例10至14中至少一者之非暫時性機器可讀媒體,其中該目標碼之該第一例項及該第二例項之另一者將作為一獨立應用程式在其各自處理器上執行。
實例 16:如實例10至15中至少一者之非暫時性機器可讀媒體,其中該方法進一步包括:
組態該目標碼之一第三例項以在具有不同於該處理器之一數目之核心之另一處理器上執行。
實例 17:如實例10至16中至少一者之非暫時性機器可讀媒體,其中該方法在包括至少一個線緩衝器、至少一個圖表產生器及/或至少一個模板產生器之一影像處理器之一架構上操作。
實例 18:如實例10至17中至少一者之非暫時性機器可讀媒體,其經組態以處理模板,特定言之重疊模板。
實例 19:如實例10至18中至少一者之非暫時性機器可讀媒體,其經組態以在一資料運算單元上操作,該資料運算單元包括具有寬於該執行道陣列之尺寸之一位移暫存器結構,尤其在該執行道陣列外存在暫存器。
實例 20:一種運算系統,其包括:
複數個處理核心;
一系統記憶體;
一系統記憶器控制器,其介於該系統記憶體與該複數個處理核心之間;
一非暫時性機器可讀儲存媒體,其包括程式碼,該程式碼在由該運算系統處理時引起執行一方法,該方法包括:
組態目標碼之一第一例項以在一處理器上執行,該處理器具有多個核心及一內部網路,該內部網路經組態成使一第一數目之該等核心能夠通信地耦合之一第一組態;及
組態該目標碼之一第二例項以在該處理器之一第二例項上執行,該處理器之該第二例項之一各自內部網路經組態成使一不同數目之核心能夠通信地耦合之一第二組態,其中該處理器及該處理器之該第二例項上之相同定位核心針對該第一組態及該第二組態具有相同網路位址。
實例 21:如實例20之運算系統,其中該目標碼之該第一例項及該目標碼之該第二例項在該處理器及該處理器之該第二例項之不同各自核心上執行。
實例 22:如實例20或21之運算系統,其中該目標碼之該第一例項及該第二例項將不同核心定址為自一基底位址偏移。
實例 23:如實例20至22中至少一者之運算系統,其中該目標碼之該第一例項及該第二例項之該組態包含針對該第一例項及該第二例項設定不同基底位址。
實例 24:如實例20至23中至少一者之運算系統,其中該目標碼之該第一例項及該第二例項之一者將作為一較大應用程式內之一較小碼分量在其各自處理器上執行,其中該較大應用程式係藉由組合另一程式之一目標碼例項與該目標碼之該第一例項及該第二例項之該一者而建構。
實例 25:如實例20至24中至少一者之運算系統,其中該目標碼之該第一例項及該第二例項之另一者將作為一獨立應用程式在其各自處理器上執行。
實例 26:如實例20至25中至少一者之運算系統,其中該處理器及該處理器之該第二例項係影像處理器。
實例 27:如實例20至26中至少一者之運算系統,其包括具有包括至少一個線緩衝器、至少一個圖表產生器及/或至少一個模板產生器之一架構之一影像處理器。
實例 28:如實例20至27中至少一者之運算系統,其經組態以處理模板,特定言之重疊模板。
實例 29:如實例20至28中至少一者之運算系統,其包括一資料運算單元,該資料運算單元包括具有寬於該執行道陣列之尺寸之一位移暫存器結構,尤其在該執行道陣列外存在暫存器。
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‧‧‧核心
500‧‧‧影像處理器
502_1至502_8‧‧‧處理器核心/處理核心
505‧‧‧I/O單元
506_1至506_3‧‧‧多工器對
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‧‧‧主記憶體控制器/記憶體管理功能/記憶體控制功能
1318‧‧‧I/O控制功能
1319‧‧‧影像處理單元
1350‧‧‧應用處理器/多核心處理器
K1‧‧‧第一內核
K2‧‧‧內核
K3_1‧‧‧內核
K3_2‧‧‧內核
K4‧‧‧內核
R1‧‧‧暫存器
R2‧‧‧暫存器
R3‧‧‧暫存器
R4‧‧‧暫存器
R5‧‧‧暫存器
下文描述及隨附圖式用以繪示本發明之實施例。在圖式中:
圖1展示一模板處理器架構之一高階視圖;
圖2展示一影像處理器架構之一更詳細視圖;
圖3展示一影像處理器架構之一甚至更詳細視圖;
圖4展示可由一影像處理器執行之一應用程式軟體程式;
圖5展示具有經組態以支援可組態數目之主動核心的網路環之圖3的影像處理器;
圖6a、圖6b、圖6c及圖6d展示組態有不同數目之主動核心的圖5之影像處理器;
圖7展示一處理器組態方法;
圖8a、圖8b、圖8c、圖8d及圖8e描繪將影像資料剖析成一線群組,將一線群組剖析成一圖表及對具有重疊模板之一圖表執行之操作;
圖9a展示一模板處理器之一實施例;
圖9b展示模板處理器之一指令字之一實施例;
圖10展示一模板處理器內之一資料運算單元之一實施例;
圖11a、圖11b、圖11c、圖11d、圖11e、圖11f、圖11g、圖11h、圖11i、圖11j及圖11k描繪使用二維位移陣列及一執行道陣列以判定具有重疊模板之一對鄰近輸出像素值之一實例;
圖12展示一整合式執行道陣列及二維位移陣列之一單位胞元之一實施例;
圖13展示一例示性運算系統。
Claims (6)
- 一種影像處理器,其包括: 複數個處理核心;及 一環狀網路,其經耦合於處理核心之間,該環狀網路提供耦合一第一組該等處理核心之一第一組態及耦合該第一組該等處理核心及一第二組該等處理核心之一第二組態,其中該第一組態及該第二組態以一連續序列將網路位址指派給各處理核心,其中該第一組態及該第二組態將相同網路位址指派給該第一組處理核心中之各處理核心,其中指派給圍繞該環之該等處理核心之該等網路位址不同於該連續序列。
- 如請求項1之處理器,其中該影像處理器包括用以建立該第一組態及該第二組態之暫存器空間。
- 如請求項1之處理器,其中該環狀網路包括一組多工器使得該組多工器之一第一通道之選擇引起該環狀網路容許包含該環上之額外節點且該組多工器之一第二通道之選擇引起該環狀網路排除該等額外節點。
- 如請求項3之處理器,其中該組多工器包括一對多工器。
- 如請求項1之處理器,其中該等處理核心執行程式碼。
- 如請求項5之處理器,其中該等處理核心包括一各自執行道陣列及二維位移暫存器陣列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/594,502 | 2017-05-12 | ||
US15/594,502 US10789202B2 (en) | 2017-05-12 | 2017-05-12 | Image processor with configurable number of active cores and supporting internal network |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201947524A true TW201947524A (zh) | 2019-12-16 |
TWI735971B TWI735971B (zh) | 2021-08-11 |
Family
ID=61132915
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108136896A TWI735971B (zh) | 2017-05-12 | 2018-02-08 | 具有可組態數目之主動核心及支援內部網路之影像處理器 |
TW107104426A TWI676150B (zh) | 2017-05-12 | 2018-02-08 | 具有可組態數目之主動核心及支援內部網路之影像處理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107104426A TWI676150B (zh) | 2017-05-12 | 2018-02-08 | 具有可組態數目之主動核心及支援內部網路之影像處理器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10789202B2 (zh) |
EP (1) | EP3622370A1 (zh) |
JP (1) | JP6967597B2 (zh) |
KR (1) | KR102235056B1 (zh) |
CN (1) | CN110300944B (zh) |
TW (2) | TWI735971B (zh) |
WO (1) | WO2018208339A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI740761B (zh) * | 2020-01-21 | 2021-09-21 | 大陸商上海商湯智能科技有限公司 | 數據處理裝置、人工智能晶片 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10489878B2 (en) * | 2017-05-15 | 2019-11-26 | Google Llc | Configurable and programmable image processor unit |
US11074213B2 (en) * | 2019-06-29 | 2021-07-27 | Intel Corporation | Apparatuses, methods, and systems for vector processor architecture having an array of identical circuit blocks |
CN110597755B (zh) * | 2019-08-02 | 2024-01-09 | 北京多思安全芯片科技有限公司 | 一种安全处理器的重组配置方法 |
CN113342719B (zh) * | 2021-06-30 | 2022-12-13 | 珠海一微半导体股份有限公司 | 一种运算加速单元及其运算方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1400962A (en) * | 1920-03-09 | 1921-12-20 | Roy E Leonard | Process of and apparatus for drilling oil-wells |
JP2900359B2 (ja) * | 1986-10-30 | 1999-06-02 | 株式会社日立製作所 | マルチプロセッサシステム |
CA2101848A1 (en) * | 1991-02-06 | 1992-08-07 | Robert Walsh | Disk drive array memory system using nonuniform disk drives |
JPH06290159A (ja) * | 1993-03-30 | 1994-10-18 | Agency Of Ind Science & Technol | 並列計算機のプロセス割当方法 |
JP3290798B2 (ja) * | 1994-03-14 | 2002-06-10 | 富士通株式会社 | 並列コンピュータ |
US20030033374A1 (en) * | 2001-07-24 | 2003-02-13 | Condor Engineering, Inc. | Method and system for implementing a communications core on a single programmable device |
JP2004252508A (ja) * | 2003-02-18 | 2004-09-09 | Nec Corp | 単一プロセッサ用ソフトウェアプログラムをマルチプロセッサ用ソフトウェアプログラムに変換する方法 |
JP2006093937A (ja) * | 2004-09-22 | 2006-04-06 | Canon Inc | 光電融合回路 |
US7941698B1 (en) * | 2008-04-30 | 2011-05-10 | Hewlett-Packard Development Company, L.P. | Selective availability in processor systems |
JP2012252490A (ja) * | 2011-06-02 | 2012-12-20 | Renesas Electronics Corp | マルチプロセッサおよびそれを用いた画像処理システム |
WO2013105931A1 (en) | 2012-01-10 | 2013-07-18 | Intel Corporation | Router parking in power-efficient interconnect architectures |
US9514563B2 (en) | 2013-08-30 | 2016-12-06 | Arm Limited | Graphics processing systems |
WO2015163897A1 (en) | 2014-04-24 | 2015-10-29 | Empire Technology Development Llc | Core prioritization for heterogeneous on-chip networks |
US9769356B2 (en) * | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
-
2017
- 2017-05-12 US US15/594,502 patent/US10789202B2/en active Active
-
2018
- 2018-01-12 KR KR1020197023971A patent/KR102235056B1/ko active IP Right Grant
- 2018-01-12 EP EP18702599.4A patent/EP3622370A1/en not_active Withdrawn
- 2018-01-12 WO PCT/US2018/013582 patent/WO2018208339A1/en active Application Filing
- 2018-01-12 CN CN201880011667.8A patent/CN110300944B/zh active Active
- 2018-01-12 JP JP2019543927A patent/JP6967597B2/ja active Active
- 2018-02-08 TW TW108136896A patent/TWI735971B/zh active
- 2018-02-08 TW TW107104426A patent/TWI676150B/zh active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI740761B (zh) * | 2020-01-21 | 2021-09-21 | 大陸商上海商湯智能科技有限公司 | 數據處理裝置、人工智能晶片 |
Also Published As
Publication number | Publication date |
---|---|
JP6967597B2 (ja) | 2021-11-17 |
TWI735971B (zh) | 2021-08-11 |
TWI676150B (zh) | 2019-11-01 |
CN110300944B (zh) | 2023-05-16 |
US20180329864A1 (en) | 2018-11-15 |
KR20190107101A (ko) | 2019-09-18 |
US10789202B2 (en) | 2020-09-29 |
WO2018208339A1 (en) | 2018-11-15 |
JP2020519979A (ja) | 2020-07-02 |
CN110300944A (zh) | 2019-10-01 |
EP3622370A1 (en) | 2020-03-18 |
KR102235056B1 (ko) | 2021-04-01 |
TW201901612A (zh) | 2019-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7202987B2 (ja) | 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ | |
KR101971657B1 (ko) | 이미지 프로세서에 대한 에너지 효율적인 프로세서 코어 아키텍처 | |
US11153464B2 (en) | Two dimensional shift array for image processor | |
TWI676150B (zh) | 具有可組態數目之主動核心及支援內部網路之影像處理器 | |
CN107533750B (zh) | 虚拟图像处理器及在其上处理图像数据的方法和系统 | |
CN112967169B (zh) | 用于图像生成器的数据片生成器 | |
CN107133908B (zh) | 用于图像处理器的编译器管理存储器 | |
TWI670968B (zh) | 影像處理器輸入輸出單元 | |
TWI694412B (zh) | 在多核心影像處理器上之應用程式軟體之組態 | |
TW201941047A (zh) | 執行雙輸入值絕對值及加總運算的電路 |