TWI661360B - 處理器、電腦程式產品及處理器所執行之方法 - Google Patents

處理器、電腦程式產品及處理器所執行之方法 Download PDF

Info

Publication number
TWI661360B
TWI661360B TW106121713A TW106121713A TWI661360B TW I661360 B TWI661360 B TW I661360B TW 106121713 A TW106121713 A TW 106121713A TW 106121713 A TW106121713 A TW 106121713A TW I661360 B TWI661360 B TW I661360B
Authority
TW
Taiwan
Prior art keywords
data
processor
tile
shift register
slice
Prior art date
Application number
TW106121713A
Other languages
English (en)
Other versions
TW201812641A (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 TW201812641A publication Critical patent/TW201812641A/zh
Application granted granted Critical
Publication of TWI661360B publication Critical patent/TWI661360B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)

Abstract

本發明描述一種方法,其包含將一內容陣列載入至一二維移位暫存器中。該二維移位暫存器耦合至一執行通道陣列。該方法包含重複地執行一第一序列,其包含:運用該移位暫存器使沿一特定列或行駐留之第一內容移位至第二內容所駐留之另一平行列或行中及運用該執行通道陣列之一特定對應列或行對該第一內容及該第二內容執行數學運算。該方法亦包含重複地執行一第二序列,其包含:運用該移位暫存器使內容自沿與該第一序列之該等列或行平行的一所得列或行之一組第一位置移位至沿該所得列或行之對應一組第二位置中。該所得列或行具有至少部分地自該第一序列之該等數學運算判定的值。該第二序列進一步包含運用該執行通道陣列對來自該組第一位置之內容項及來自該組第二位置之各自內容項執行數學運算。

Description

處理器、電腦程式產品及處理器所執行之方法
本發明描述大體上係關於影像處理,且更具體言之係關於一二維影像處理器上之統計運算。
影像處理通常涉及組織成一陣列之像素值的處理。在此,一空間組織二維陣列捕獲影像之二維性質(額外維度可包含時間(例如,一二維影像序列)及資料類型(例如,色彩))。在一典型案例中,由已產生一靜止影像或一圖框序列以捕獲運動影像之一相機提供陣列化像素值。傳統影像處理器通常落於兩種極端情況之任一側上。
一第一極端情況如在一通用處理器或類似通用處理器(例如,具有向量指令增強之一通用處理器)上執行之軟體程式般執行影像處理任務。儘管第一極端情況通常提供一高度多樣化的應用程式軟體開發平台,但其使用較精細粒度資料結構與相關聯額外負擔(例如,指令提取及解碼、晶片上及晶片外資料之處置、臆測執行)最終導致在執行程式碼期間每資料單元消耗之較大量能量。
一第二、相對極端情況將固定功能硬接線電路應用於大得多的資料區塊。使用直接應用於客製化設計電路之較大(與較精細粒度相反)資料區 塊大大地降低每資料單元之功率消耗。然而,使用客製化設計固定功能電路通常導致處理器能夠執行之有限任務集合。因而,在第二極端情況中缺少廣泛多樣化的程式化環境(與第一極端情況相關聯)。
提供高度多樣化的應用程式軟體開發機會與改良的每資料單元之功率效率兩者的一技術平台仍係一所期望但缺失的解決方案。
描述一種方法,其包含將一內容陣列載入至一二維移位暫存器中。該二維移位暫存器耦合至一執行通道陣列。該方法包含重複地執行一第一序列,包含:運用該移位暫存器使沿一特定列或行駐留之第一內容移位至第二內容所駐留之另一平行列或行中及運用該執行通道陣列之一特定對應列或行對該第一內容及該第二內容執行數學運算。該方法亦包含重複地執行一第二序列,包含:運用該移位暫存器使內容自沿與該第一序列之該等列或行平行的一所得列或行之一組第一位置移位至沿該所得列或行之對應一組第二位置中。該所得列或行具有至少部分地自該第一序列之該等數學運算判定的值。該第二序列進一步包含運用該執行通道陣列對來自該組第一位置之內容項及來自該組第二位置之各自內容項執行數學運算。
描述一種具有用於執行上述第一序列及用於執行上述第二序列之構件的裝置。
100‧‧‧架構
101_1‧‧‧線緩衝器單元
101_2‧‧‧線緩衝器單元
102_1‧‧‧模板處理器單元
102_2‧‧‧模板處理器單元
103_1‧‧‧片產生器單元
103_2‧‧‧片產生器單元
104‧‧‧網路
105‧‧‧巨集I/O單元
201‧‧‧影像資料
202‧‧‧模板
203‧‧‧線群組
204‧‧‧初始片/第一片
205‧‧‧下一片/第二片
300‧‧‧模板處理器單元架構
301‧‧‧資料計算單元
302‧‧‧純量處理器
303‧‧‧純量記憶體
304‧‧‧I/O單元
305‧‧‧執行通道陣列
306‧‧‧二維移位陣列結構
309‧‧‧程式控制器
401‧‧‧資料計算單元
405‧‧‧執行通道陣列
406‧‧‧二維移位暫存器陣列結構
407_1‧‧‧隨機存取記憶體
407_2‧‧‧隨機存取記憶體
409‧‧‧光暈/光暈區
505‧‧‧圖框/執行通道陣列
507‧‧‧第一陣列/移位暫存器陣列
510‧‧‧執行通道
511‧‧‧執行通道位置/執行通道
601‧‧‧執行通道
602‧‧‧暫存器檔
603‧‧‧輸出多工器/多工器配置/多工器電路
604‧‧‧輸入多工器/多工器配置/多工器電路
700‧‧‧影像圖框/影像
801‧‧‧第一圖塊
802‧‧‧第二相鄰圖塊
1001‧‧‧時間
1002‧‧‧時間
1016‧‧‧時間
1017‧‧‧時間
1200‧‧‧行
1201‧‧‧行
1202‧‧‧行
1204‧‧‧行
1206‧‧‧行
1208‧‧‧行
1210‧‧‧行
1212‧‧‧行
1214‧‧‧行
1250‧‧‧影像
1251‧‧‧窗口
1252‧‧‧窗口
1253‧‧‧窗口
1254‧‧‧路徑
1255‧‧‧路徑
1256‧‧‧光柵掃描路徑
1307_1‧‧‧隨機存取記憶體
1307_2‧‧‧隨機存取記憶體
1501‧‧‧執行通道/群組
1501_1‧‧‧執行通道
1507‧‧‧隨機存取記憶體
1601‧‧‧執行通道群組
1602‧‧‧執行通道群組
1607_1‧‧‧記憶體空間
1607_2‧‧‧記憶體空間
1701‧‧‧第一群組
1702‧‧‧第二群組
1703‧‧‧群組
1704‧‧‧群組
1810‧‧‧第一4×2群組
1811‧‧‧第二4×2群組
1901‧‧‧相機
1902‧‧‧處理器
1903‧‧‧軟體
1904‧‧‧影像信號處理器(ISP)/影像處理單元(IPU)
1905‧‧‧相機統計單元/硬體統計引擎
1906‧‧‧影像感測器
1907‧‧‧透鏡總成
2001‧‧‧步驟
2002‧‧‧第一序列
2003‧‧‧第二序列
2100‧‧‧系統
2101‧‧‧中央處理單元
2102‧‧‧系統記憶體
2103‧‧‧顯示器/觸控螢幕顯示器
2104‧‧‧區域有線點對點鏈路(例如,USB)介面/通信介面
2105‧‧‧網路I/O功能/通信介面
2106‧‧‧無線區域網路(例如,WiFi)介面/通信介面
2107‧‧‧無線點對點鏈路(例如,藍芽)介面/通信介面
2108‧‧‧全球定位系統介面
2109_1-2109_N‧‧‧感測器
2110‧‧‧相機
2111‧‧‧電池
2112‧‧‧功率管理控制單元
2113‧‧‧揚聲器及麥克風/揚聲器/麥克風編解碼器
2114‧‧‧音訊編碼器/解碼器/揚聲器/麥克風編解碼器
2115_1-2115_N‧‧‧通用處理核心
2116‧‧‧圖形處理單元
2117‧‧‧主記憶體控制器/記憶體管理功能
2118‧‧‧I/O控制功能
2119‧‧‧影像處理單元
2150‧‧‧應用程式處理器/多核心處理器
A‧‧‧點
B‧‧‧點
C‧‧‧點
D‧‧‧點
C1‧‧‧循環
C2‧‧‧循環
C3‧‧‧循環
C4‧‧‧循環
C5‧‧‧循環
C6‧‧‧循環
C8‧‧‧第八循環
C16‧‧‧循環
R1-R5‧‧‧暫存器
下文描述及隨附圖式用來繪示各項實施例。在圖式中:圖1展示一影像處理器硬體架構之一實施例;圖2a、圖2b、圖2c、圖2d及圖2e描繪將影像資料剖析成一線群組,將一線群組剖析成一片及運用重疊模板對一片執行運算; 圖3展示一模板處理器之一實施例;圖4展示一模板處理器內之一資料計算單元之一實施例;圖5a、圖5b、圖5c、圖5d、圖5e、圖5f、圖5g、圖5h、圖5i、圖5j及圖5k描繪使用一二維移位陣列及一執行通道陣列以運用重疊模板判定一對相鄰輸出像素值的一實例;圖6展示用於一整合式執行通道陣列及二維移位陣列的一單位單元之一實施例;圖7描繪一影像圖框內之圖塊;圖8描繪跨圖塊邊界之光柵處理;圖9描繪跨片邊界之處理;圖10描繪具有相關聯上下文切換之跨片邊界及圖塊邊界之處理;圖11展示一二維移位暫存器陣列內之累加值;圖12a至圖12e描繪一精簡程序;圖12f展示窗口統計追蹤;圖13展示分配至執行通道之群組的一模板處理器之隨機存取記憶體;圖14展示一直方圖;圖15a展示記憶體空間之一每執行通道分配;圖15b展示記憶體空間之一合併每執行通道分配;圖16展示分配至第一及第二合併記憶體空間區的執行通道之第一及第二群組;圖17a至圖17c展示一直方圖精簡程序;圖18a及圖18b展示用於擴展一直方圖之大小的一機制;圖19展示一整合式相機系統及處理器; 圖20展示由一二維移位暫存器執行之一統計方法;圖21展示一計算系統。
a.影像處理器硬體架構及運算
圖1展示實施為硬體之一影像處理器的一架構100之一實施例。例如,一編譯器可以影像處理器為目標,該編譯器將針對一模擬環境內之一虛擬處理器寫入之程式碼轉換成實際上由硬體處理器執行之程式碼。如圖1中觀察到,架構100包含複數個線緩衝器單元101_1至101_M(下文中稱作「線緩衝器」、「線緩衝器單元」或類似者),該複數個線緩衝器單元101_1至101_M透過一網路104(例如,一晶片上網路(NOC),包含一晶片上交換網路、一晶片上環形網路或其他種類之網路)互連至複數個模板處理器單元102_1至102_N(下文中稱作「模板處理器」、「模板處理器單元」或類似者)及對應片產生器單元103_1至103_N(下文中稱作「片產生器」、「片產生器單元」或類似者)。在一實施例中,任何線緩衝器單元可透過網路104連接至任何片產生器及對應模板處理器。
在一實施例中,程式碼經編譯且經載入至一對應模板處理器102上以執行先前由一軟體開發者定義之影像處理運算(程式碼亦可例如取決於設計及實施方案而載入至該模板處理器之相關聯片產生器103上)。在至少一些例項中,可藉由下列步驟而實現一影像處理管線:將一第一管線階段之一第一核心程式載入至一第一模板處理器102_1中;將一第二管線階段之一第二核心程式載入至一第二模板處理器102_2中等,其中第一核心執行管線之第一階段之功能,第二核心執行管線之第二階段之功能等,且額外控制流方法經安裝以將輸出影像資料自管線之一個階段傳遞至管線之下一 階段。
在其他組態中,影像處理器可實現為具有對相同核心程式碼進行運算之兩個或更多個模板處理器102_1、102_2的一平行機器。例如,可藉由跨其各者執行相同功能之多個模板處理器分散圖框而處理一高度密集且高資料速率的影像資料串流。
在又其他組態中,本質上核心之任何有向非循環圖(DAG)可藉由下列步驟而載入至硬體處理器上:在DAG設計中,用各自模板處理器其等自身的各自程式碼核心組態各自模板處理器;及將適當控制流攔截程式組態至硬體中以將輸出影像自一個核心引導至下一核心之輸入。
作為一般流程,影像資料之圖框係由一巨集I/O單元105接收且在一逐圖框基礎上傳遞至線緩衝器單元101之一或多者。一特定線緩衝器單元將其影像資料圖框剖析成一較小影像資料區(稱為「線群組」),且接著透過網路104將線群組傳遞至一特定片產生器。一完整或「完全」單一線群組可例如由一圖框之多個連續完整列或行(為了簡潔起見,本說明書將主要指稱連續列)之資料組成。該片產生器將影像資料之線群組進一步剖析成一更小影像資料區(稱為「片」),且將片提供至其對應模板處理器。
在一影像處理管線或一DAG流程具有一單一輸入之情況中,通常將輸入圖框引導至相同線緩衝器單元101_1,該線緩衝器單元101_1將影像資料剖析成線群組且將線群組引導至片產生器103_1,該片產生器103_1之對應模板處理器102_1在管線/DAG中執行第一核心之程式碼。在由模板處理器102_1對其處理之線群組之運算完成之後,片產生器103_1將輸出線群組發送至一「下游」線緩衝器單元101_2(在一些使用情況中,輸出線群組可被發送回至先前已發送輸入線群組之相同線緩衝器單元101_1)。
表示在其等自身之各自其他片產生器及模板處理器(例如,片產生器103_2及模板處理器102_2)上執行之管線/DAG中之下一階段/運算的一或多個「消費者」核心接著自下游線緩衝器單元101_2接收由第一模板處理器102_1產生之影像資料。以此方式,一第一模板處理器上進行運算之一「生產者」核心將其輸出資料轉遞至一第二模板處理器上進行運算之一「消費者」核心,其中在該生產者核心符合整個管線或DAG之設計之後,該消費者核心執行下一任務集合。
一模板處理器102經設計以對影像資料之多個重疊模板同時進行運算。多個重疊模板及模板處理器之內部硬體處理容量有效地判定一片之大小。在此,在一模板處理器102內,執行通道陣列聯合地進行運算以同時處理由多個重疊模板覆蓋之影像資料表面區域。
如下文將更詳細地描述,在各項實施例中,影像資料之片載入至模板處理器單元102內之一二維暫存器陣列結構中。據信,片及二維暫存器陣列結構之使用藉由作為例如一單一載入運算將大量資料移動至大量暫存器空間中,緊隨其後由一執行通道陣列對資料直接執行處理任務而提供功率消耗改良。另外,一執行通道陣列及對應暫存器陣列之使用提供可容易程式化及/或組態之不同模板大小。
圖2a至圖2e依高階繪示一線緩衝器單元101之剖析活動、一片產生器單元103之較精細粒度剖析活動兩者以及耦合至片產生器單元103的模板處理器102之模板處理活動的實施例。
圖2a描繪影像資料201之一輸入圖框之一實施例。圖2a亦描繪一模板處理器經設計以進行運算的三個重疊模板202之一輪廓(各模板具有3像素×3像素之一尺寸)。各模板分別針對其產生輸出影像資料之輸出像素以實 心黑色突顯。為了簡潔起見,三個重疊模板202被描繪為僅沿垂直方向重疊。應相關地認知,實際上,一模板處理器可經設計以沿垂直方向及水平方向兩者具有重疊模板。
如圖2a中觀察到,由於模板處理器內之垂直重疊模板202,在一單一模板處理器可進行運算之圖框內存在影像資料之一寬帶。如下文將更詳細地論述,在一實施例中,模板處理器以一由左至右方式跨影像資料處理其等重疊模板內之資料(且接著以一由上至下順序針對下一組線重複)。因此,隨著模板處理器繼續其等之運算,實心黑色輸出像素區塊之數目將水平地向右增長。如上文論述,一線緩衝器單元101負責自足以供模板處理器進行運算達擴展數目個即將來臨循環的一傳入圖框剖析輸入影像資料之一線群組。一線群組之一例示性描繪被繪示為一陰影區203。在一實施例中,線緩衝器單元101可理解用於發送一線群組至一片產生器/自一片產生器接收一線群組之不同動態。例如,根據稱為「全群組」之一種模式,在一線緩衝器單元與一片產生器之間傳遞影像資料之完整全寬線。根據稱為「虛高」之一第二模式,初始傳遞具有全寬列之一子集之一線群組。接著以較小(小於全寬)件循序地傳遞剩餘列。
在輸入影像資料之線群組203已由線緩衝器單元定義且傳遞至片產生器單元的情況下,片產生器單元將線群組進一步剖析成更精確地配合至模板處理器之硬體限制的較精細片。更具體言之,如下文將進一步更詳細地描述,在一實施例中,各模板處理器係由一二維移位暫存器陣列組成。二維移位暫存器陣列本質上使影像資料於一執行通道陣列「下方」移位,其中移位之型樣引起各執行通道對其自身各自模板內之資料進行運算(即,各執行通道處理其自身資訊模板以針對該模板產生一輸出)。在一實施例 中,片係「填入」或以其他方式載入至二維移位暫存器陣列中的輸入影像資料之表面區域。
如下文將更詳細地描述,在各項實施例中,實際上存在可在任何循環中移位之多個二維暫存器資料層。為了方便起見,本發明描述之大部分將簡單地使用術語「二維移位暫存器」及類似者以指稱具有可移位之一或多個此等二維暫存器資料層的結構。
因此,如圖2b中觀察到,片產生器剖析來自線群組203之一初始片204且將該初始片204提供至模板處理器(在此,資料之片對應於大致由參考符號204識別之5×5陰影區)。如圖2c及圖2d中觀察到,模板處理器藉由以一由左至右方式在輸入影像資料之片上方有效地移動重疊模板202而對該片進行運算。截至圖2d,可針對其自片內之資料計算的一輸出值之像素之數目(在一黑色3×3陣列中係九)被耗盡(無其他像素位置可具有自片內之資訊判定的一輸出值)。為了簡單起見,已忽略影像之邊界區。
如圖2e中觀察到,片產生器接著提供下一片205以供模板處理器繼續運算。應注意,模板在其等開始對下一片進行運算時之初始位置接下來自第一片上之耗盡點繼續進行至右邊(如先前在圖2d中描繪)。運用新片205,隨著模板處理器以相同於處理第一片之方式對該新片進行運算,模板將簡單地繼續移動至右邊。
應注意,歸因於環繞一輸出像素位置的模板之邊界區,在第一片204之資料與第二片205之資料之間存在一定重疊。可藉由片產生器重新傳輸重疊資料兩次而簡單地處置重疊。在替代實施方案中,為了將下一片饋送至模板處理器,片產生器可繼續進行以僅將新資料發送至模板處理器且模板處理器再使用來自先前片之重疊資料。
b.模板處理器設計及運算
圖3展示一模板處理器單元架構300之一實施例。如圖3中觀察到,該模板處理器包含一資料計算單元301、一純量處理器302與相關聯記憶體303及一I/O單元304。資料計算單元301包含一執行通道陣列305、一二維移位陣列結構306及與該陣列之特定列或行相關聯的單獨各自隨機存取記憶體307。
I/O單元304負責將自片產生器接收的資料之「輸入」片載入至資料計算單元301中且將來自模板處理器的資料之「輸出」片載入至片產生器中。在一實施例中,將片資料載入至資料計算單元301中需要將一經接收片剖析成影像資料之列/行且將影像資料之列/行載入至二維移位暫存器結構306或執行通道陣列之列/行之各自隨機存取記憶體307中(下文更詳細地描述)。若片初次載入至記憶體307中,則在適當時執行通道陣列305內之個別執行通道接著可將片資料自隨機存取記憶體307載入至二維移位暫存器結構306中(例如,作為緊接在對片之資料進行運算之前的一載入指令)。在完成將一資料片載入至暫存器結構306中之後(無論直接自一片產生器或自記憶體307),執行通道陣列305之執行通道對資料進行運算且最終直接將所完成資料作為一片「回寫」至片產生器或「回寫」至隨機存取記憶體307中。若執行通道回寫至隨機存取記憶體307,則I/O單元304自隨機存取記憶體307提取資料以形成一輸出片,該輸出片接著被轉遞至片產生器。
純量處理器302包含一程式控制器309,該程式控制器309自純量記憶體303讀取模板處理器之程式碼之指令且將該等指令發佈至執行通道陣列305中之執行通道。在一實施例中,一單一相同指令被傳播至陣列305內 之所有執行通道以實現來自資料計算單元301之一類似單一指令多重資料(SIMD)行為。在一實施例中,自純量記憶體303讀取且發佈至執行通道陣列305之執行通道的指令之指令格式包含每指令含一個以上運算碼之一極長指令字(VLIW)型格式。在一進一步實施例中,該VLIW格式包含引導由各執行通道之ALU執行的一數學函數之一ALU運算碼(如下文描述,其在一實施例中可指定一個以上傳統ALU運算)及一記憶體運算碼(其引導針對一特定執行通道或一組執行通道之一記憶體運算)。
術語「執行通道」指稱能夠執行一指令之一組一或多個執行單元(例如,可執行一指令之邏輯電路)。然而,在各項實施例中,一執行通道可包含超出僅執行單元之更多類似處理器的功能性。例如,除一或多個執行單元外,一執行通道亦可包含解碼一經接收指令之邏輯電路,或在更多類似多重指令多重資料(MIMD)設計之情況中包含提取及解碼一指令之邏輯電路。關於類似MIMD之方法,儘管本文中已大體上描述一集中式程式控制方法,但在各項替代實施例中可實施一更分散式方法(例如,包含程式碼及陣列305之各執行通道內的一程式控制器)。
一執行通道陣列305、程式控制器309與二維移位暫存器結構306之組合為寬範圍之可程式化功能提供一可廣泛調適/組態的硬體平台。例如,應用程式軟體開發者能夠程式化具有寬範圍之不同功能能力以及尺寸(例如,模板大小)的核心,前提是個別執行通道能夠執行多種功能且能夠容易地存取接近任何輸出陣列位置之輸入影像資料。
除充當用於由執行通道陣列305進行運算之影像資料之一資料儲存器外,隨機存取記憶體307亦可保存一或多個查找表。在各項實施例中,一或多個純量查找表亦可具現於純量記憶體303內。
一純量查找涉及將來自於來自相同索引之相同查找表之相同資料值傳遞至執行通道陣列305內的執行通道之各者。在各項實施例中,上文描述之VLIW指令格式經擴展以亦包含一純量運算碼,該純量運算碼將由純量處理器執行之一查找運算引導至一純量查找表中。被指定結合運算碼使用之索引可為一即刻運算元或自一些其他資料儲存位置提取。無論如何,在一實施例中,來自純量記憶體內之一純量查找表之一查找本質上涉及在相同時脈循環期間將相同資料值傳播至執行通道陣列305內之所有執行通道。下文進一步提供關於查找表之使用及運算之進一步細節。
圖4展示一資料計算單元401之一實施例。如圖4中觀察到,資料計算單元401包含邏輯上定位於一二維移位暫存器陣列結構406「上方」之一執行通道陣列405。如上文論述,在各項實施例中,由一片產生器提供之一影像資料片載入至二維移位暫存器406中。執行通道接著對來自暫存器結構406之片資料進行運算。
執行通道陣列405及移位暫存器結構406相對於彼此而固定於適當位置中。然而,移位暫存器陣列406內之資料以一策略且協調方式移位以引起執行通道陣列中之各執行通道處理該資料內之一不同模板。因而,各執行通道判定正產生之輸出片中的一不同像素之輸出影像值。自圖4之架構應明白,重疊模板不僅垂直配置而且水平配置,此係因為執行通道陣列405包含垂直相鄰執行通道以及水平相鄰執行通道。
資料計算單元401之一些顯著架構特徵包含移位暫存器結構406具有寬於執行通道陣列405之尺寸。即,在執行通道陣列405外側存在一暫存器「光暈(halo)」409。儘管光暈409被展示為存在於執行通道陣列之兩側上,但取決於實施方案,該光暈可存在於執行通道陣列405之更少(一個) 或更多(三或四個)側上。光暈409用來為在資料於執行通道405「下方」移位時,溢出執行通道陣列405之界限外側的資料提供「外溢」空間。作為一簡單情況,在處理以執行通道陣列405之右邊緣為中心的一5×5模板之最左像素時,該模板將需要進一步向右的四個光暈暫存器位置。為了便於繪製,當在一標稱實施例中任一側(右側、底側)上之暫存器將具有水平連接及垂直連接兩者時,圖4將光暈之右側之暫存器展示為僅具有水平移位連接且將光暈之底側之暫存器展示為僅具有垂直移位連接。
由耦合至陣列中之各列及/或各行、或其部分的隨機存取記憶體407提供額外外溢空間(例如,一隨機存取記憶體可被指派至執行通道陣列之逐列橫跨4個執行通道且逐行橫跨2個執行通道之一「區」。為了簡單起見,本申請案之剩餘部分將主要提及基於列及/或行之分配方案)。在此,若一執行通道之核心運算需要其處理二維移位暫存器陣列406外側之像素值(一些影像處理常式可需要該等像素值),則影像資料之平面能夠例如自光暈區409進一步外溢至隨機存取記憶體407中。例如,考量一6×6模板,其中硬體包含至執行通道陣列之右邊緣上的一執行通道之右邊的僅四個儲存元件之一光暈區。在此情況中,資料將需要進一步移位至光暈409之右邊緣之右邊以完全地處理模板。移出光暈區409外側之資料接著將外溢至隨機存取記憶體407。下文進一步提供隨機存取記憶體407及圖3之模板處理器的其他應用。
圖5a至圖5k演示如上文提及之影像資料在執行通道陣列「下方」之二維移位暫存器陣列內移位的方式之一工作實例。如圖5a中觀察到,以一第一陣列507描繪二維移位陣列之資料內容且由一圖框505描繪執行通道陣列。再次,簡單化地描繪執行通道陣列內之兩個相鄰執行通道510。在 此簡單化描繪510中,各執行通道包含一暫存器R1,該暫存器R1自移位暫存器接受資料,自一ALU輸出接受資料(例如,以表現為跨循環之一累加器),或將輸出資料寫入至一輸出目的地中。
各執行通道亦使二維移位陣列中在其「下方」之內容在一局部暫存器R2中可用。因此,R1係執行通道之一實體暫存器,而R2係二維移位暫存器陣列之一實體暫存器。執行通道包含可對由R1及/或R2提供之運算元進行運算的一ALU。如下文將進一步更詳細地描述,在一實施例中,移位暫存器實際上經實施為每陣列位置具有多個(一「深度」之)儲存/暫存器元件,但移位活動限於儲存元件之一個平面(例如,每循環僅儲存元件之一個平面可移位)。圖5a至圖5k將此等較深暫存器位置之一者描繪為用來儲存來自各自執行通道之所得X。為了便於繪示,較深所得暫存器被繪製為與其相應暫存器R2並排而非在其下方。
圖5a至圖5k側重於其等之中心位置與在執行通道陣列505內描繪之該對執行通道位置511對準的兩個模板之計算。為了便於繪示,該對執行通道510被繪製為水平相鄰者,而事實上根據下列實例,其等係垂直相鄰者。
如初始在圖5a中觀察到,執行通道511係以其等之中心模板位置為中心。圖5b展示由兩個執行通道511執行之目標碼。如圖5b中觀察到,兩個執行通道511之程式碼引起移位暫存器陣列507內之資料向下移位一個位置且向右移位一個位置。此使兩個執行通道511對準於其等各自模板之左上角。程式碼接著引起定位於其等各自位置(R2)中之資料載入至R1中。
如圖5c中觀察到,程式碼接著引起該對執行通道511使移位暫存器陣列507內之資料向左移位一個單元,此引起至各執行通道之各自位置之右邊的值移位至各執行通道之位置中。接著將R1中之值(先前值)與已移位至 各執行通道之位置(R2)中的新值相加。將所得寫入至R1中。如圖5d中觀察到,重複如上文針對圖5c描述之相同程序,此引起所得R1現包含上部執行通道中之值A+B+C及下部執行通道中之值F+G+H。此時,兩個執行通道511已處理其等各自模板之上部列。應注意至執行通道陣列505之左側上的一光暈區中之外溢(若在左手側上存在一個光暈區)或至隨機存取記憶體中之外溢(若在執行通道陣列505之左手側上不存在一光暈區)。
如圖5e中觀察到,程式碼接著引起移位暫存器陣列內之資料向上移位一個單元,此引起兩個執行通道511與其等各自模板之中間列之右邊緣對準。兩個執行通道511之暫存器R1當前包含模板之頂部列的最右值及中間列的最右值之和。圖5f及圖5g演示跨兩個執行通道模板之中間列向左移動的繼續進展。累加繼續,使得在圖5g之處理結束時,兩個執行通道511包含其等各自模板之頂部列及中間列的值之和。
圖5h展示用以將各執行通道與其對應模板之最低列對準的另一移位。圖5i及圖5j展示用以完成對兩個執行通道之模板之過程的處理之繼續移位。圖5k展示用以將各執行通道與其在資料陣列中之正確位置對準且將所得寫入至該正確位置的額外移位。
在圖5a至圖5k之實例中,應注意,用於移位運算之目標碼可包含識別在(X,Y)座標中表達之移位的方向及量值的一指令格式。例如,用於向上移位達一個位置之目標碼可在目標碼中表達為SHIFT 0,+1。作為另一實例,向右移位達一個位置可在目標碼中表達為SHIFT +1,0。在各項實施例中,亦可在目標碼中指定較大量值之移位(例如,SHIFT 0,+2)。在此,若2D移位暫存器硬體僅支援每循環移位達一個位置,則可由機器解譯指令以要求多循環執行,或2D移位暫存器硬體可經設計以支援每循環 移位達一個以上位置。下文進一步更詳細地描述後者之實施例。
圖6展示用於陣列執行通道及移位暫存器結構的單位單元之另一、更詳細描繪(光暈區中之暫存器不包含一對應執行通道)。在一實施例中,藉由在執行通道陣列之各節點處具現圖6中觀察到之電路而實施執行通道及與執行通道陣列中之各位置相關聯的暫存器空間。如圖6中觀察到,單位單元包含一執行通道601,該執行通道601耦合至由四個暫存器R2至R5組成之一暫存器檔602。在任何循環期間,執行通道601可自暫存器R1至R5之任一者讀取或寫入至暫存器R1至R5之任一者。對於需要兩個輸入運算元之指令,該執行通道可自R1至R5之任一者擷取兩個運算元。
在一實施例中,藉由下列步驟實施二維移位暫存器結構:在一單一循環期間容許暫存器R2至R4之任(僅)一者之內容透過輸出多工器603移「出」至其相鄰者之暫存器檔之一者;及用透過輸入多工器604自其相鄰者之一對應者移「入」的內容取代暫存器R2至R4之任(僅)一者之內容,使得相鄰者之間的移位係沿一相同方向(例如,所有執行通道向左移位,所有執行通道向右移位等)。儘管一相同暫存器使其內容移出且用在一相同循環內移入之內容取代可為常見,但在一相同循環期間多工器配置603、604容許一相同暫存器內之不同移位源及移位目標暫存器。
如圖6a中描繪,應注意,在一移位序列期間,一執行通道將使內容自其暫存器檔602移出至其左相鄰者、右相鄰者、頂部相鄰者及底部相鄰者之各者。結合相同移位序列,該執行通道亦將使內容自其左相鄰者、右相鄰者、頂部相鄰者及底部相鄰者之一特定者移入其暫存器檔。再次,對於所有執行通道,移出目標及移入源應符合一相同移位方向(例如,若移出係至右相鄰者,則移入應自左相鄰者)。
儘管在一項實施例中,每循環每個執行通道容許僅一個暫存器之內容移位,但其他實施例可容許移入/移出一個以上暫存器之內容。例如,若圖6a中觀察到的多工器電路603、604之一第二例項併入至圖6a之設計中,則可在一相同循環期間移出/移入兩個暫存器之內容。當然,在每循環容許僅一個暫存器之內容移位的實施例中,可藉由針對數學運算之間的移位消耗更多時脈循環而在數學運算之間發生自多個暫存器之移位(例如,可藉由在數學運算之間消耗兩個移位運算而使兩個暫存器之內容在數學運算之間移位)。
若在一移位序列期間並未移出一執行通道之暫存器檔之所有內容,則應注意,各執行通道之非移出暫存器之內容保持於適當位置中(不移位)。因而,未用移入內容取代之任何非移位內容跨移位循環保留於執行通道本地。各執行通道內觀察到之記憶體單元「M」用來自與執行通道陣列內之執行通道的列及/或行相關聯的隨機存取記憶體空間載入資料/將資料儲存至與執行通道陣列內之執行通道的列及/或行相關聯的隨機存取記憶體空間。在此,M單元充當一標準M單元,因為其通常用來載入/儲存無法自執行通道之自身暫存器空間載入/儲存至執行通道之自身暫存器空間的資料。在各項實施例中,M單元之主要運算係將資料自一局部暫存器寫入至記憶體中,及自記憶體讀取資料且將該資料寫入至一局部暫存器中。
對於由硬體執行通道601之ALU單元支援的ISA運算碼,在各項實施例中,由硬體ALU支援之數學運算碼整體上相關於(例如,實質上相同於)由一虛擬執行通道支援之數學運算碼(例如,ADD、SUB、MOV、MUL、MAD、ABS、DIV、SHL、SHR、MIN/MAX、SEL、AND、OR、XOR、NOT)。如上文剛剛描述,可由執行通道601執行記憶體存取指令 以自其等相關聯隨機存取記憶體提取資料/將資料儲存至其等相關聯隨機存取記憶體。另外,硬體執行通道601支援移位運算指令(右、左、上、下)以使二維移位暫存器結構內之資料移位。如上文描述,程式控制指令大體上係由模板處理器之純量處理器執行。
c.模板處理器上執行之統計運算
圖7展示一影像圖框700之一例示性描繪。如圖7中觀察到,影像700可被視為分解成一圖塊陣列。圖7之特定例示性影像係由一16圖塊×16圖塊陣列組成。如圖8中觀察到,各圖塊可進一步分解成一片陣列。圖8之例示性描繪展示例如沿圖7之影像700之圖塊之頂部列的前兩個圖塊801、802。如圖8展示,各圖塊可分解成一片陣列。在圖8之特定實例中,各圖塊係由一16×16片陣列組成。各片可例如由一16×16像素值陣列組成。
如上文詳細地描述,在各項實施例中,一模板處理器經設計以將一片作為其資料單元處理。在此,一影像資料片載入至該模板處理器之二維暫存器空間中且該處理器對該影像資料片執行某些影像處理任務。如圖8中觀察到,在各項實施例中,一整個影像之處理包含例如跨一第一圖塊801(例如,跨該圖塊以一由左至右方式)處理一片列且接著繼續沿一第二相鄰圖塊802內之相同列在一相同方向上處理片。
該程序繼續直至跨所有影像圖塊處理沿特定列之所有片為止。接著處理下一(例如,較低)片列且該程序重複。例如,在處理沿影像之第一片列的第十六圖塊之第十六片之後,接著處理沿第二片列的第一圖塊之第一片。
一影像之統計之處理通常需要計算該影像內之像素值之一和。例如,一常見統計運算係計算一平均像素值。因而,像素值係跨一影像求和且接 著藉由求和像素之數目而標準化。在各項實施例中,以圖塊粒度組織影像統計。因而,例如,針對一影像中之各圖塊維持一平均像素值。接著,隨後根據需要處理圖塊以計算該影像之其他統計。
圖9展示用於對一圖塊內之像素值求和的一種方法。圖9描繪針對一圖塊之左上角的片配置。如圖9中觀察到,在多個片內,對一片陣列內之相同定位之像素值求和。例如,將片_0之最左上像素值與片_1之最左上像素值相加。接著將所得和加上片_2之最左上像素值。該程序繼續直至已考量圖塊中之所有片為止。
回想到模板處理器以片單元處理資料,求和自身係在一逐片基礎上執行。如上文描述,在一實施例中,對於一片內之各陣列位置,一模板處理器包含一執行通道及相關聯暫存器空間。最初,將片_0載入至該模板處理器之二維移位暫存器結構中且處理片_0。將與該片中之各陣列位置相關聯的一像素值保存於該二維移位暫存器內之該陣列位置之局部暫存器空間中。接著,將片_1載入至該模板處理器之二維移位暫存器結構中且處理片_1。
將與片_1中之各陣列位置相關聯的一像素值加上片_0中之相同陣列位置的像素值。將各陣列位置之所得保存於二維移位暫存器結構中之該位置之局部暫存器空間中且該程序繼續進行。因此,對於模板處理器處理之各新片,可針對片內之所有陣列位置累加跨迄今為止處理之所有片的一和。在一替代方法中,執行上述程序,惟將經累加之和資料保存於一模板處理器之內部記憶體空間而非暫存器空間(例如,參考圖3,耦合至執行陣列305之記憶體執行單元的RAM 307及/或與純量處理器303相關聯之純量記憶體303)中除外。在另一替代實施例中,將經累加之和資料保存於該模板 處理器外部之記憶體(諸如耦合至一線緩衝器單元101之記憶體)中。
比較圖8與圖9,應注意,將不處理圖塊0之片_16直至已處理圖塊15之片_15之後為止。即,跨圖塊處理一相同片列。因此,若在一逐圖塊基礎上追蹤統計,則每當處理跨圖塊邊界進行時需要切換統計上下文。圖10圖示描繪上下文切換程序。在此,當一模板處理器處理一特定圖塊時,假定保存針對該特定圖塊之統計的一資料結構經產生且駐留於該模板處理器之暫存器空間或內部記憶體空間中。
例如,在針對圖塊_0處理片0至15時,將圖塊_0之一統計資料結構保存於模板處理器之內部記憶體及/或二維暫存器空間中。在針對圖塊_0處理片_15之後,在時間1001,將圖塊_0之統計資料結構切出模板處理器之二維暫存器空間或內部記憶體空間且將圖塊_1之統計資料結構切入模板處理器之暫存器空間或內部記憶體空間。同樣地,在時間1002,在處理圖塊_1之片_15與圖塊_2之片_0的間歇,將圖塊_1之統計資料結構切出模板處理器之暫存器空間或內部記憶體且將圖塊_2之統計資料結構切入模板處理器之暫存器或記憶體空間。
在處理圖塊_15之片_15之後,在時間1016,當該程式開始處理影像內之第二片列時,將圖塊_15之統計資料結構切出模板處理器之暫存器或內部記憶體空間,且將圖塊_0之統計資料結構切換回至模板處理器之暫存器或內部記憶體空間。同樣地,在時間1001,將圖塊_0之統計資料結構切出模板處理器之暫存器空間或內部記憶體空間且將圖塊_1之統計資料結構切入至模板處理器之暫存器空間或內部記憶體空間。處理接著以此方式繼續直至已處理圖塊0至15之所有片為止,此時圖塊0至15之各者之統計資料結構係完整的。該程序接著針對影像內之第二片列繼續。
圖11展示可為一特定圖塊保存的前述統計資料結構之一例示性描繪。在此,如上文論述,例如,該統計資料結構可將所有像素值之一和保存於該圖塊之一片內的一相同像素位置處。當已對該圖塊內之所有片求和時,針對該圖塊產生一「完整」資料結構。即,一完整資料結構包含在跨該圖塊內之所有片之相同片像素位置處之和。為了便於繪示,圖11僅圖示描繪片之四個邊角像素位置處之和。
一額外統計程序係將圖11之整個累加陣列精簡成例如對圖11之陣列之所有像素位置求和的一純量值,此繼而對應於整個圖塊內之所有像素值之一和。即,在圖11係在一相同片像素位置處之一圖塊內之所有像素值之和之陣列的情況下,跨圖11之陣列中的所有元素的和對應於在一逐片像素位置基礎上之一圖塊內之所有像素值的和。圖12a至圖12e展示將整個陣列精簡成一純量。如將自圖12a至圖12e之論述明白,精簡程序特定地利用作為模板處理器之一組件的二維移位暫存器陣列。
在此,假定圖11之統計陣列初始載入至模板處理器之二維移位陣列中。圖12a展示移位暫存器之一第一移位動作,其中每隔一行之資料被移位至其左相鄰者中。圖12a中描繪之各移位包含一經移位之像素值及該經移位之像素值所移入之位置中的一像素值。此等對之像素值接著在所移入之執行通道中相加且保存於相同執行通道之暫存器空間中。
因而,在完成圖12a之移位及後續求和之後,每隔一個陣列行包含該行之各像素位置之暫存器空間中的相鄰對像素值之一和。即,例如,行1201包含行1201之每一像素位置中的相鄰像素值之一和,行1202包含行1202之每一像素位置中的相鄰像素值之一和等。應注意,圖12a中觀察到之所有移位可在一單一循環中發生,且求和可在一緊接其後的循環中發生 。因而,精簡可在僅兩個循環(循環C1及C2)中將陣列精簡達50%。
如圖12b中觀察到,具有來自圖12a之運算之一和的最近相鄰行被移位且相加。即,在圖12a之運算之後,僅行1200、1202、1204、1206、1208、1210、1212及1214具有來自圖12a之求和運算的和內容(其他行亦可具有和內容但其等內容未被利用,在一實施例中,未執行判定未使用內容之移位及求和運算以便節省功率)。因而,行1202之像素值向左移位達兩個陣列位置至行1200中。亦針對行1206至1204、1210至1208及1214至1212存在對應源-目的地對。正如圖12之運算,藉由目的地處之執行通道邏輯將像素值對相加。因而,在圖12b之運算之後,在行1200、1204、1208及1212中現存在和值。應注意在一實施例中,二維移位暫存器能夠在一單一循環中執行「雙位置跳躍」移位。因此,可在一單一循環(C3)中執行圖12b中觀察到之所有移位且在一緊接其後的循環(C4)中執行求和運算。因而,在四個循環之後,精簡運算可將圖11之陣列精簡達75%。
在此,然而,應相關地指出,在各項實施例中,各執行通道具有多個暫存器。即,簡要地重新參考圖6,各執行通道具有用於移入/移除資料及/或儲存來自一ALU運算之一所得的多個暫存器R1至R5。另外,諸多影像處理演算法具有多個資料「通道」。例如,由紅色(R)、綠色(G)及藍色(B)像素組成之一影像可獨立於由G資料之片/圖塊/圖框組成的一第二通道而處理由R資料之片/圖塊/圖框組成的一第一通道,獨立於B資料之片/圖塊/圖框組成的一第三通道而處理所有該第一通道及該第二通道。
儘管圖12a及圖12b之前述實例指示必須消耗兩個循環來執行一移位及一求和,但應相關地認知,此限制僅適用於一相同通道內之運算,此係因為該求和對一先前移位之相依性。重要的是,在一實施例中,執行通道 陣列接收可指定一單一循環內之一移位運算及一ALU運算的一VLIW型指令字。運用此指令格式及每陣列位置之多個暫存器,可根據圖12a及圖12b之核心程序同時精簡兩個不同通道。即,以一類似軟體管線迴路之方式,例如,在一第一循環中,使R移位且對G求和,並且在一第二後續循環中,對剛剛移位之R求和且使來自剛剛求和之G的所得移位。以此方式,整個處理器可跨兩個通道在例如每一循環中執行一移位及求和精簡。
如圖12c中觀察到,精簡程序繼續但(再次)移位較長。在此,行1204之像素值移位至行1200中且在行1200中相加,並且行1212之像素值移位至行1208中且在行1208中相加。因而,在圖12c之運算之後(其再次可僅消耗接下來兩個循環(C5及C6),假定二維移位暫存器支援例如4個單元位置之移位),求和值僅存在於行1200及1208中。圖12d展示在行1208中之值移位至行1200中且在行1200內相加時,沿水平軸之完整精簡。再次,假定二維移位暫存器可在一單一循環中執行圖12d中觀察到之移位,藉由第八循環C8實現圖12d之精簡(在一實施例中,該移位暫存器通常不支援圖12d中觀察到的量值之移位但在一單一循環中支援自行1208至行1200之一移位)。
圖12e展示沿行1200執行之後續精簡,此截至循環C16最終將整個陣列精簡成一純量和值。圖12e之精簡本質上係圖12a至圖12d之相同精簡但在垂直方向上且僅沿一行。在一實施例中,正如圖12a至圖12d之水平精簡,各精簡序列消耗一個循環以供移位暫存器執行其對應移位且消耗另一循環將一局部值與剛剛移位至相同位置中之一值相加。
圖12a至圖12e之精簡程序之上文論述係關於其中如圖11中展示針對一圖塊內之所有片對一片中之各像素位置維持一單獨和值的一實施例。然 而,如關於圖10論述,在可實現針對一特定圖塊之一「完整」統計結構之前,需要處理該圖塊中之所有列。由於跨一影像列之掃描將橫跨多個圖塊,故在每次橫跨一圖塊邊界的情況下,使針對該等圖塊之資料結構上下文切入及切出。
各每圖塊統計資料結構因此包含迄今為止已處理之片中的一片內之各像素位置之一和值或「計數」。因此,一圖塊之統計資料結構之尺寸對應於該圖塊內之一片之尺寸(例如,16×16和值)。若在一影像內存在多個圖塊(如藉由圖9及圖10建議),則針對一影像保存之統計資料之量可為大(即,(該影像中之圖塊之數目)×(每圖塊計數之數目))。在此,一旦針對一圖塊存在一完整資料結構便將一圖塊精簡成一純量可幫助減輕統計追蹤負擔。
替代地,重新參考圖10,每當統計陣列將上下文切出時,可將統計陣列精簡成一純量。例如,針對圖塊_0之統計陣列可在緊接在其儲存之前的時間1001精簡成一純量且在緊隨在其儲存之前的時間1017再次精簡成一純量。在此,在各上下文切出之前執行圖12a至圖12e之精簡可消耗更多處理(每圖塊執行多個純量精簡而非每圖塊執行一個純量精簡),但正切出之統計的資料佔據空間大小要小得多,此使切出之統計資料更可能保存於模板處理器記憶體之內部而非跨整個影像處理器引導至線緩衝器記憶體。
其他統計程序可能不太繁瑣。例如,根據稱為「全域」之一種統計保存模式,一整個圖框/影像被視為僅消耗一單一圖塊。因此,僅存在一個統計資料結構且不發生上下文切換(即,在光柵掃描處理中不橫跨圖塊邊界)。當已處理影像內之所有片時,該資料結構係「完整的」,此時可藉由執行上文剛剛論述的圖12a至圖12e之精簡而產生整個影像之一純量。
在圖12f中描繪之另一統計追蹤模式中,針對一影像1250內之一或多個「窗口」1251、1252、1253保存統計,在各項實施例中該一或多個「窗口」1251、1252、1253可重疊或可不重疊。可以一特定型樣處理片(例如,在下降以處理下一列之前跨影像自左至右)。在一特定窗口內處理時,針對各像素位置累加統計,其中片尺寸符合上文圖9之論述。在離開一窗口之後,累加活動停止。在光柵掃描最終橫跨回至該窗口之後,統計累加重啟。
例如,參考圖12f,當光柵掃描遵循路徑1254且橫跨出窗口1251時將針對窗口1251停止統計累加,但在光柵掃描到達路徑1255且橫跨回至窗口1251中時將重新開始統計累加。應注意,針對所有窗口遵循此行為,此可導致針對重疊窗口之區同時累加統計。例如,參考光柵掃描路徑1256,在到達點A時,將針對窗口1251重啟統計追蹤。一段時間之後,在到達點B時,將針對窗口1252重啟統計追蹤。進一步時間之後,在到達點C時,將針對窗口1251暫停統計追蹤且接著在到達點D時將針對窗口1252暫停統計追蹤。一旦在光柵掃描已覆蓋一窗口之整個表面區域之後,已針對一窗口完成累加,便可根據上文關於圖12a至圖12e論述之程序精簡針對該窗口累加之資料(再次,一片內之每像素位置一個累加值)。
自圖4之論述回想到,隨機存取記憶體407可耦合至執行通道陣列405及二維移位暫存器406以賦予模板處理器一局部系統記憶體功能。在此,執行通道陣列405內之多個執行通道可共用一相同隨機存取記憶體單元。例如,參考圖4,一第一子組之執行通道可耦合至隨機存取記憶體407_1,一第二子組之執行通道可耦合至隨機存取記憶體407_2等。圖4展示其中沿一相同列駐留之執行通道耦合至一相同隨機存取記憶體的一種方法。
圖13展示其中二維執行通道區塊耦合至一相同隨機存取記憶體之另一方法。在圖13之特定實例中,四個執行通道之區塊耦合至一相同隨機存取記憶體。在此,例如,四個執行通道之最左上區塊耦合至隨機存取記憶體1307_1,四個執行通道之最右上區塊耦合至隨機存取記憶體1307_2等。假定四個執行通道之其他單獨區塊耦合至其等自身之各自隨機存取記憶體但為了便於繪示而未描繪。
針對一影像保存之另一常見統計集合係一直方圖。一直方圖本質上將一特定參數劃分成數個格(bin)。例如,一8位元強度值可分解成256個單獨格(各唯一8位元值一個格)。針對各格追蹤在一影像之資料中觀察到一值的次數。因而,例如,運用針對各格之一計數值個別地記錄觀察到各唯一8位元值之次數。各自計數值跨格組之分散對應於一直方圖。圖14展示一直方圖之一例示性描繪,其展示針對多個格之各者(沿水平軸)的一單獨計數(沿垂直軸)。
圖15a及圖15b係關於用於擴展圖4及圖13之模板處理器之能力以產生高解析度直方圖的一技術。即,具有大量格之一直方圖。圖15a展示圖4及圖13之模板處理器之一標稱設計點之一實施例,其中共用一相同隨機存取記憶體的一群組之執行通道內之各執行通道被提供其在該隨機存取記憶體內的自身私人記憶體空間。在此,參考圖15a,該組四個執行通道1501各耦合至隨機存取記憶體1507。然而,各執行通道標稱上經設計以僅存取其在隨機存取記憶體1507內之自身私人空間。如圖15中繪製,例如,執行通道1501_1經設計以僅存取隨機存取記憶體內之可定址區1502_1。觀察到隨機存取記憶體1507之其他分區被分配給群組1501內之其他執行通道。
圖15a之每執行通道記憶體分區之一問題係分區有效地限制執行通道可將觀察到之資料分格成的直方圖格之數目。即,由於各分區對應於有限量的記憶體空間,故各執行通道僅僅可跨可在一單一分區內建立之總數目個格將資料項分格。此可具有限制執行通道可分格成的直方圖之解析度之非期望效應(亦應注意,在各項實施例中,一群組中之執行通道之僅一者可在一給定循環中存取記憶體)。
因而,圖15b展示一較佳方法,其中至少在一直方圖模式期間,一隨機存取記憶體內之分區有效地合併,使得共用該隨機記憶體之各執行通道可自由地存取總量的合併空間。合併分區及容許共用該隨機存取記憶體之執行通道之各者自由地存取總量的合併空間有效地提供容納更多格之一更寬資料欄位。容納越多格,可導致越高解析度之直方圖。因而,例如,若圖15a之方法之一單一分區僅可容納256個格之計數值,則圖15b之合併空間可容納1024個格之計數值。因此,圖15a之方法之執行通道僅可產生具有256個格之直方圖,而圖15b之方法中之相同執行通道可產生具有1024個格之直方圖。其他實施例可具有其他數目個格。
圖16及圖17a至圖17c係關於其中可藉由下列步驟而跨一整個影像判定一直方圖之一方法:首先使執行通道將觀察到之資料分格至其等局部記憶體且接著使用二維移位暫存器結構及執行通道之ALU能力以將各自計數列於格內。
圖16展示其中相鄰執行通道被分組成四個相鄰區塊之一高階描繪,其中各群組被賦予對一各自隨機存取記憶體之存取,其中各隨機存取記憶體之空間經合併,使得一相同群組內之各執行通道可存取如上文剛剛關於圖15a及圖15b之描述所述的相同合併記憶體空間。為了簡單起見,描繪 執行通道群組1601、1602之僅兩個區塊連同其等對應的各自合併記憶體空間1607_1、1607_2。
為了產生一直方圖,將一影像之一系列片載入至二維移位暫存器中。該直方圖之格分配於針對各執行通道群組之合併記憶體空間中且,個別執行通道針對各執行通道觀察到之特定值使針對該合併記憶體空間內之各格維持之一各自計數值遞增。例如,若一相同群組內之執行通道1、2、3及4分別觀察到對應於格4、9、12及21之值,則執行通道1將更新針對格4之計數值,執行通道2將更新針對格9之計數值,執行通道3將更新針對格12之計數值,且執行通道4將更新針對格21之計數值。在各項實施例中,由於僅一個執行通道可存取一執行通道群組共用之記憶體,故該等執行通道將在連續循環中執行其等的前述更新。
在已針對影像處理數個片之後,隨機存取記憶體之各者的合併記憶體空間本質上含有針對其構成執行通道之一直方圖。例如,參考圖16,隨機存取記憶體內之合併記憶體空間1607_1含有針對群組1601內之執行通道之直方圖資料且隨機存取記憶體內之合併記憶體空間1607_2含有針對群組1602內之執行通道之直方圖資料。
下一運算接著係合併各隨機存取記憶體之內容,使得可實現所有執行通道之一直方圖。圖17a係關於一簡單化實例,其中直方圖僅含有32個格(格0至31)。在此,針對各執行通道群組及其等對應合併記憶體空間,將格0至7之計數值載入至左上部執行通道之暫存器空間中,將格8至15之計數值載入至右上部執行通道之暫存器空間中,將格16至23之計數值載入至右下部執行通道之暫存器空間中,且將格24至31之計數值載入至左下部執行通道之暫存器空間中。圖17a展示針對群組1701及1702之執行通 道之各自暫存器空間之內容。再次,為了便於繪示,僅展示兩個群組且在各項實施例中,跨執行通道陣列內之所有群組重複群組1701及1702之內容型樣。在實施例中,經載入之暫存器內容採取一向量資料結構之形式,該向量資料結構維持針對該資料結構中之不同位元位置之各自計數值,其中該等不同位元位置對應於由該資料結構維持之不同格。
圖17b展示一第一精簡序列,其中來自一第一群組之執行通道之直方圖內容移位至來自一第二群組之相同的相對定位執行通道之暫存器空間中。即,例如,第二群組1702之左上部執行通道使其暫存器內容移位至第一群組1701之左上部執行通道之暫存器空間中以將跨兩個群組1701、1702收集的格0至7之直方圖資料併入至群組1701之左上部執行通道之暫存器空間中。針對其他三個執行通道位置執行一對應運算。應注意,假定二維移位暫存器可在一單一循環中使適當大小之資料結構跨兩個陣列通道位置移位,移位可在一單一循環中發生。若8個格之格內容消耗可在一單一循環中移位之更多資料,則可使用多個循環。
無論如何,在第二群組1702之格內容已移位至第一群組1701之暫存器空間中之後,執行通道對其等各自對格資料執行一向量加法以累加其等各自格之總計數值。即,例如,在該向量加法運算之後,群組1701之上部執行通道將含有一資料結構,該資料結構具有由兩個群組1701及1702所列的格0至7之各者之總計數。在群組1701之其他三個執行通道之暫存器空間中亦將存在計數值之一對應累加。再次,如同移位運算,在各項實施例中,亦可在一單一循環中執行向量求和。再次,儘管圖17a及圖17b僅展示兩個群組,但在各項實施例中,針對執行通道陣列中之所有對群組同時執行圖17a及圖17b之運算。
圖17c展示其中根據一類似程序(惟移位長度更長除外)再次併入剛剛所列(例如,截至圖17b)之經累加計數的下一反覆。例如,簡要地重新參考圖17b,吾人可設想各實體駐留於陣列中之群組1702正下方的另一對四個執行通道之群組1703、1704。圖17c展示此兩個群組1703、1704。在完成圖17b之運算之後,群組1703及1704之內容將在群組1703中累加。因而,圖17c之運算使移位至群組1701之暫存器空間中的群組1703之經累加內容移位。在圖17c之向量加法運算之後,群組1701將含有針對如由群組1701至1704之各者原始所列的所有格之經累加計數。在圖17c之簡單化8×8執行通道陣列中,在圖17c之向量加法運算之後,所有值將已累加至群組之頂部列中。
自此,群組之頂部列當中之一水平精簡可類似於圖12e之垂直精簡而開始(其中一群組內之各不同執行通道位置繼續維持其自身格組)。最終,該程序將併入至一單一群組,其中該群組中之各陣列位置具有針對其對應格之跨影像之總計數。
在各項實施例中,以圖塊粒度追蹤直方圖。因而,可在直方圖之累加期間執行類似於上文關於圖10論述之上下文切換的直方圖資料之上下文切換。在此,例如,處理器之隨機存取記憶體內的前述合併資料結構經組態以僅針對一特定圖塊儲存直方圖資料。當影像資料之光柵掃描處理引起圖塊邊界被橫跨時,切出剛剛離開處理的圖塊之直方圖資料結構(例如,藉由自模板處理器記憶體寫入至例如一線緩衝器中)及切入剛剛進入處理的圖塊之直方圖資料結構(例如,正寫入至模板處理記憶體中)。在光柵掃描完全地處理一完整圖塊之後,此後可執行圖17a至圖17c之精簡以判定該整個圖塊之一完整直方圖。
應注意,可想而知,較低解析度直方圖可能無需模板處理器之隨機存取記憶體中之合併儲存空間。在此,例如,圖15a之專用每執行通道記憶體空間可足以容納針對一較低解析度直方圖之所有格。因而,每執行通道記憶體空間之合併可能並非必要(且因此可僅為高解析度直方圖提供)。更進一步,一些直方圖可為格計數值可保存於執行通道之各自暫存器空間中的足夠低解析度(在此,可用一像素值對暫存器檔動態地索引,使得各執行通道可存取一不同暫存器)。在此情況中,無需使用隨機存取記憶體。對於較低解析度直方圖,諸如無需合併每執行通道專用記憶體或暫存器空間之彼等直方圖,可使用圖12a至圖12e而非圖17a至圖17c之程序累加格總數。
類似地,關於上下文切換,可構想,僅高解析度直方圖資料結構將需要切出模板處理器記憶體或暫存器空間(例如,至一線緩衝器中)。在此,較低解析度直方圖可能能夠將「切出」直方圖資料上下文保存於模板處理器之局部記憶體及/或暫存器空間中。
圖16及圖17a至圖17c描述供一執行通道群組共同地共用其等所耦合至之記憶體資源以允許具有較大數目個格之直方圖之一機制。相比之下,圖18a及圖18b描述藉由其可跨不同群組之執行通道擴展一直方圖之格計數的一機制。圖18a展示例如執行通道陣列之左上角。在此,觀察到一第一4×2群組1810之執行通道及一第二4×2群組1811之執行通道。兩個群組1810、1811可共用記憶體資源以擴展如上文關於圖16及圖17a至圖17c描述之格大小。
在此,若群組1810、1811之各者能夠個別地支援1024個不同直方圖格,則群組1810、1811之兩者亦可邏輯上經組合以支援2048個格。因此 ,可藉由組合執行通道群組而擴展相對於格數目之直方圖大小。根據稱為「空間」之一種方法,一相同邏輯組合內之不同執行通道群組負責分格至不同格範圍中。例如,群組1810內之執行通道負責分格至格0至1023中且群組1811內之執行通道負責分格至格1024至2047中。因此,為了完全地處理輸入像素資料,使得保證將其佈置至其應被佈置之特定正確格中,資料如圖18b中觀察到般移位。即,例如,首先將待分格之資料載入至第一群組1810之執行通道中且若任何資料項落至格0至1023內,則其等藉由其等在群組1810中之各自執行通道而分格。在初始分格處理之後,載入至第一群組中之資料移位至第二群組1811中,如圖18b中觀察到。由於落至格範圍1024至2047內而未由第一群組分格之任何剩餘資料項將由群組1811內之各自執行通道分格。
因此,在此實例中,初始將資料載入至執行通道陣列中之每一群組之每一通道中且該整個陣列對在分格程序間移位之資料執行處理。例如,初始將資料載入至群組1810及1811之兩者中。在載入資料之後,群組1810對載入至群組1810中、落至格0至1023中之彼等資料值分格且群組1811對載入至群組1811中、落至格1024至2047中之彼等資料值分格。在此初始分格序列之後,原始載入至群組1810中之資料移位至群組1811中且原始載入至群組1811中、分格至格0至1023中之資料移位至另一群組(諸如群組1811正下方之群組)中。為了簡單起見,圖18b未展示原始載入至群組1811中的資料之移位。應注意,可藉由組合兩個以上群組而更進一步擴展格大小。例如,可使用群組1811正下方的4×2執行通道群組以分格至格範圍2048至3072中。
在稱為時間之另一替代分格擴展方法中,取而代之,未組合執行通 道群組,而非組合執行通道之實體群組及使用二維移位暫存器以在經組合群組之間移位。而是,分格範圍上下文切入及切出執行通道。在此情況中,例如,初始將資料載入至所有執行通道群組中。在一第一反覆期間,各群組根據一第一格範圍(例如,格0至1023)分格。在完成分格至第一範圍中之後,資料未在暫存器陣列內移位,而是切換判定哪個分格範圍適用之分格上下文資訊(例如,用於分格至範圍0至1023中之上下文切出執行通道群組且用於分格至範圍1024至2047中之上下文切入執行通道群組)。執行通道接著針對新、更高範圍重新執行一分格程序。該程序繼續直至切入及分格至最終分格範圍上下文之後為止。
在各項實施例中,影像處理器具有組態暫存器空間以建立上文描述之運算模式之任一者(例如,模板處理器之上下文切出、執行通道暫存器空間之合併、全域統計追蹤、每圖塊統計追蹤、窗口統計追蹤等)。上文描述之統計運算可編碼為程式碼(例如,由一模板處理器執行之目標碼)且儲存於一機器可讀儲存媒體中。
儘管上述各項實施例已在某些情況中將程序應用於列且在某些其他情況中應用於行,但應容易明白,對列執行之程序可替代地對行執行且反之亦然。
圖19展示一整合式相機1901、ISP/IPU及處理器1902。相機1901可包含一透鏡總成1907及影像感測器1906。來自相機1901之原始影像資料可自相機1901傳遞至一ISP子系統,該ISP子系統包含一影像信號處理器(ISP)及/或影像處理單元(IPU)1904及一相機統計單元1905。在各項實施例中,相機統計單元1905係運用專用邏輯電路自由相機1901產生之原始影像資料計算統計的一硬體組件。在又其他實施例中,相機統計單元 1905係一軟體組件且相機統計係在能夠執行程式碼之IPU硬體1904上執行(在此,影像信號處理(ISP)硬體傳統上無法執行程式碼)。在此,此一IPU可經組態以依軟體執行傳統ISP相關任務且因此實際上無傳統ISP駐留於平台中(即,所有統計及影像信號處理功能係由一IPU以軟體執行)。在又其他方法中,ISP/IPU子系統可實施為專用硬體統計電路、一IPU上執行之軟體及/或ISP硬體電路的一組合。無論如何,在其中IPU硬體1904至少部分地執行統計軟體(或其中ISP/IPU硬體1904充當自一硬體統計引擎1905接收較粗糙粒度統計相關命令而非執行精細粒度程式碼)之實施方案中,ISP/IPU 1904可含有一二維移位暫存器陣列結構且依據上文詳細地提供之任何論述及教示而執行精簡及/或產生直方圖。在此等實施例中,ISP/IPU 1904可經設計以包含上文在先前段落中詳細地描述之IPU特徵之任一者/所有。
ISP/IPU子系統之各種硬體電路組件可整合於一大晶片上系統,該晶片上系統亦包含處理器1902及其他電功能(例如,一圖形處理單元(GPU))。但在諸多實施例中,處理器1902可為一計算系統(諸如一手持型器件)之一處理核心。在其他實施例中,處理器1902可更緊密地耦合至相機1901或甚至作為相機1901之一組件。
相機統計引擎1905自由相機1901產生之像素資料計算統計。由統計引擎1905產生之統計接著可用於較高階程序。例如,將統計轉遞至處理器1902,該處理器1902使用統計來執行較高階相機控制功能,此等較高階功能包含自動聚焦、自動曝光及/或自動白平衡。相機控制功能可實施為例如在處理器1902上執行之軟體1903(諸如與一Android作業系統相關聯之3A相機控制軟體)。用於除相機控制外之用途的其他類型之統計資料 亦可轉遞至處理器1902或他處用於其他程序(例如,針對電腦視覺軟體或硬體之統計資訊)。
圖20展示由前文論述描述之一方法。如圖20中觀察到,該方法包含將一內容陣列載入至一二維移位暫存器中2001,其中該二維移位暫存器耦合至一執行通道陣列。該方法進一步包含重複地執行一第一序列2002,該第一序列2002包括:運用該移位暫存器使沿一特定列或行駐留之第一內容移位至第二內容所駐留之另一平行列或行中,及運用該執行通道陣列之一特定對應列或行對該第一內容及該第二內容執行數學運算。該方法進一步包含重複地執行一第二序列2003,該第二序列2003包括:運用該移位暫存器使內容自沿與該第一序列之該等列或行平行的一所得列或行之一組第一位置移位至沿該所得列或行之對應一組第二位置中。該所得列或行具有至少部分地自該第一序列之該等數學運算判定的值。該第二序列進一步包含運用該執行通道陣列對來自該組第一位置之內容項及來自該組第二位置之各自內容項執行數學運算。
d.實施方案實施例
應相關地指出,上文描述之各種影像處理器架構特徵未必限於傳統意義上之影像處理且因此可適用於可(或可不)引起影像處理器重新特性化之其他應用。例如,若相對於實際相機影像之處理,將在動畫之創建及/或產生及/或呈現中使用上文描述之各種影像處理器架構特徵之任一者,則影像處理器可特性化為一圖形處理單元。另外,上文描述之影像處理器架構特徵可適用於其他技術應用,諸如視訊處理、視覺處理、影像辨識及/或機器學習。以此方式應用,影像處理器可與一更通用處理器(例如,即或作為計算系統之一CPU之部件)整合(例如,作為其之一協同處理器), 或可為一計算系統內之一獨立處理器。
上文論述之硬體設計實施例可在一半導體晶片內具體體現及/或具體體現為以一半導體製程為最終目標的一電路設計之一描述。在後者之情況中,此等電路描述可採取下列之形式:一(例如,VHDL或Verilog)暫存器轉移位準(RTL)電路描述、一閘位準電路描述、一電晶體位準電路描述或遮罩描述或其等之各種組合。電路描述通常具體體現在一電腦可讀儲存媒體(諸如一CD-ROM或其他類型之儲存技術)上。
自先前段落,應相關地認知,如上文描述之一影像處理器可具體體現為一電腦系統上之硬體(例如,作為一手持型器件之晶片上系統(SOC)之部件,該晶片上系統(SOC)處理來自該手持型器件之相機之資料)。在其中影像處理器具體體現為一硬體電路之情況中,應注意,可直接自一相機接收由影像處理器處理之影像資料。在此,影像處理器可為一離散相機之部件,或具有一整合式相機之一計算系統之部件。在後者之情況中,可直接自該相機或自該計算系統之系統記憶體接收影像資料(例如,該相機將其影像資料發送至系統記憶體而非影像處理器)。亦應注意,先前段落中描述之諸多特徵可適用於一圖形處理器單元(其呈現動畫)。
圖21提供一計算系統之一例示性描繪。下文描述之計算系統之諸多組件適用於具有一整合式相機及相關聯影像處理器之一計算系統(例如,一手持型器件,諸如一智慧型電話或平板電腦)。一般技術者將能夠容易區別兩者。
如圖21中觀察到,基本計算系統可包含一中央處理單元2101(其可包含例如安置於一多核心處理器或應用程式處理器上之複數個通用處理核心2115_1至2115_N及一主記憶體控制器2117)、系統記憶體2102、一顯 示器2103(例如,觸控螢幕、平板)、一區域有線點對點鏈路(例如,USB)介面2104、各種網路I/O功能2105(諸如一乙太網路介面及/或蜂巢式數據機子系統)、一無線區域網路(例如,WiFi)介面2106、一無線點對點鏈路(例如,藍芽)介面2107及一全球定位系統介面2108、各種感測器2109_1至2109_N、一或多個相機2110、一電池2111、一功率管理控制單元2112、一揚聲器及麥克風2113與一音訊編碼器/解碼器2114。
一應用程式處理器或多核心處理器2150可包含其CPU 2101內之一或多個通用處理核心2115、一或多個圖形處理單元2116、一記憶體管理功能2117(例如,一記憶體控制器)、一I/O控制功能2118及一影像處理單元2119。通用處理核心2115通常執行計算系統之作業系統及應用程式軟體。圖形處理單元2116通常執行圖形密集型功能以,例如產生呈現於顯示器2103上之圖形資訊。記憶體控制功能2117與系統記憶體2102介接以將資料寫入至系統記憶體2102/自系統記憶體2102讀取資料。功率管理控制單元2112通常控制系統2100之功率消耗。
可根據上文在先前段落中詳細地描述之影像處理單元實施例之任一者而實施影像處理單元2119。替代地或組合地,IPU 2119可耦合至GPU 2116及CPU 2101之任一者或兩者作為其協同處理器。另外,在各項實施例中,可運用上文詳細地描述之影像處理器特徵之任一者而實施GPU 2116。
觸控螢幕顯示器2103、通信介面2104至2107、GPS介面2108、感測器2109、相機2110及揚聲器/麥克風編解碼器2113、2114之各者皆可被視為與整個計算系統相關的各種形式之I/O(輸入及/或輸出),該計算系統在適當情況下亦包含一整合式周邊器件(例如,一或多個相機2110)。取決於 實施方案,此等I/O組件之各者可整合於應用程式處理器/多核心處理器2150上,或可定位於晶粒外或定位於應用程式處理器/多核心處理器2150之封裝外側。
在一實施例中,一或多個相機2110包含能夠量測相機與其視場中之一物件之間的深度之一深度相機。在一應用程式處理器或其他處理器之一通用CPU核心(或具有用以執行程式碼之一指令執行管線之其他功能區塊)上執行的應用程式軟體、作業系統軟體、器件驅動器軟體及/或韌體可執行上文描述之功能之任一者。
本發明之實施例可包含如上文陳述之各種程序。該等程序可具體體現為機器可執行指令。該等指令可用來引起一通用或專用處理器執行某些程序。替代地,此等程序可由含有用於執行該等程序之硬接線邏輯之特定硬體組件或由程式化電腦組件與客製化硬體組件之任何組合執行。
本發明之元件亦可提供為用於儲存機器可執行指令之一機器可讀媒體。該機器可讀媒體可包含但不限於軟碟、光碟、CD-ROM及磁光碟、FLASH記憶體、ROM、RAM、EPROM、EEPROM、磁卡或光學卡、傳播媒體或適於儲存電子指令的其他類型之媒體/機器可讀媒體。例如,元件可作為藉由具體體現在一載波或其他傳播媒體中之資料信號而經由一通信鏈路(例如,一數據機或網路連接)自一遠端電腦(例如,一伺服器)傳送至一請求電腦(例如,用戶端)的一電腦程式下載。
在前述說明書中,已描述特定例示性實施例。然而,將明白,在不背離如隨附申請專利範圍中陳述的本發明之更廣泛精神及範疇之情況下,可對該等實施例作出各種修改及變更。說明書及圖式據此被視為一闡釋性意義而非一限制性意義。

Claims (12)

  1. 一種處理器,其包括:一二維移位暫存器陣列;處理器元件之一二維陣列,其中該移位暫存器陣列之每一移位暫存器係專用於該等處理器元件中之一者,且其中每一處理器元件經組態以自專用於該處理器元件之一各自移位暫存器中讀取及寫入;及隨機存取記憶體,其耦合至處理器元件之該二維陣列;其中該處理器經組態以執行指令以在圖塊(tile)之一列(row)中判定用於資料之一第一圖塊的一經累加值(an accumulated value),其中在圖塊之該列中之每一圖塊包括片(sheets)之複數個列,其中片之每一列橫跨圖塊之該列中所有的該等圖塊,且其中該等指令致使該處理器以執行運算(operations)以在跨圖塊之該列以處理片之一下一列(next row)之前,跨圖塊之該列而處理片之每一列,該等運算包括:跨圖塊之該列以在片之每一列上反覆(iterating)包括針對片之每一列以:處理待載入之一下一片,其包含:判定待載入之該下一片是否為用於一各自圖塊之片之該列中之一第一片;每當(whenever)待載入之該下一片為用於該各自圖塊之片之該列中之該第一片時,(i)將用於一當前(current)圖塊之統計資料儲存於專用於該當前圖塊之該隨機存取記憶體中之一位置中及(ii)自專用於該各自圖塊之該隨機存取記憶體中之一位置將用於該各自圖塊之統計資料載入至處理器元件之該二維陣列中;將片之該列中之該下一片載入至該二維移位暫存器陣列中;及藉由處理器元件之該二維陣列之每一處理器元件以計算(i)來自專用於該處理器元件之一移位暫存器中之該經載入之片之資料及(ii)用於該各自圖塊之該統計資料中之一對應之值的一和;及使用藉由處理器元件之該二維陣列之每一處理器元件所計算之和以更新用於該各自圖塊之該統計資料;將用於複數個圖塊之該第一圖塊之該統計資料載入至該二維移位暫存器陣列中;沿該第二維移位暫存器陣列之一第一維中之列或行(column)以平行計算複數個精簡(reductions);及沿該第二維移位暫存器陣列之一第二維中之一單一列或行以計算一最終(final)精簡,以計算用於該第一圖塊之一最終經累加值。
  2. 如請求項1之處理器,其中該複數個圖塊係不重疊(non-overlapping)。
  3. 如請求項1之處理器,其中沿該第二維移位暫存器陣列之一第一維中之列或行以平行計算複數個精簡包括:重複地針對從0至一最大值N的每一值n執行運算,其包括:沿該第一維以將該移位暫存器陣列中之該資料移位2n步驟;使用(i)專用於該處理器元件之一移位暫存器中之資料及(ii)移位至該處理器元件之資料以藉由資料被移位至之每一處理器元件以計算一累加運算。
  4. 如請求項3之處理器,其中沿該第二維移位暫存器陣列之一第二維中之一單一列或行以計算一最終精簡,以計算用於該第一圖塊之一最終經累加值包括:重複地針對從0至一最大值M的每一值m執行運算,其包括:沿該第二維以將該移位暫存器陣列中之資料移位2m步驟;使用(i)專用於該處理器元件之一移位暫存器中之資料及(ii)移位至該處理器元件之資料以藉由資料被移位至之每一處理器元件以計算一累加運算。
  5. 一種電腦程式產品,其被編碼在一或多個非暫時性之電腦儲存媒體上,其包括多個指令,當該多個指令由一處理器執行時致使以下步驟,該處理器具有:一二維移位暫存器陣列;處理器元件之一二維陣列,其中該移位暫存器陣列之每一移位暫存器係專用於該等處理器元件中之一者,且其中每一處理器元件經組態以自專用於該處理器元件之一各自移位暫存器中讀取及寫入;及隨機存取記憶體,其耦合至處理器元件之該二維陣列;致使該處理器藉由執行運算以在跨圖塊之該列以處理片之一下一列之前,跨圖塊之該列而處理片之每一列以在圖塊之一列中判定用於資料之一第一圖塊的一經累加值,其中在圖塊之該列中之每一圖塊包括片之複數個列,其中片之每一列橫跨圖塊之該列中所有的該等圖塊,該等運算包括:跨圖塊之該列以在片之每一列上反覆包括針對片之每一列以:處理待載入之一下一片,其包含:判定待載入之該下一片是否為用於一各自圖塊之片之該列中之一第一片;每當待載入之該下一片為用於該各自圖塊之片之該列中之該第一片時,(i)將用於一當前圖塊之統計資料儲存於專用於該當前圖塊之該隨機存取記憶體中之一位置中及(ii)自專用於該各自圖塊之該隨機存取記憶體中之一位置將用於該各自圖塊之統計資料載入至處理器元件之該二維陣列中;將片之該列中之該下一片載入至該二維移位暫存器陣列中;及藉由處理器元件之該二維陣列之每一處理器元件以計算(i)來自專用於該處理器元件之一移位暫存器中之該經載入之片之資料及(ii)用於該各自圖塊之該統計資料中之一對應之值的一和;及使用藉由處理器元件之該二維陣列之每一處理器元件所計算之和以更新用於該各自圖塊之該統計資料;將用於複數個圖塊之該第一圖塊之該統計資料載入至該二維移位暫存器陣列中;沿該第二維移位暫存器陣列之一第一維中之列或行以平行計算複數個精簡;及沿該第二維移位暫存器陣列之一第二維中之一單一列或行以計算一最終精簡以計算用於該第一圖塊之一最終經累加值。
  6. 如請求項5之電腦程式產品,其中該複數個圖塊係不重疊。
  7. 如請求項5之電腦程式產品,其中沿該第二維移位暫存器陣列之一第一維中之列或行以平行計算複數個精簡包括:重複地針對從0至一最大值N的每一值n執行運算包括:沿該第一維以將該移位暫存器陣列中之該資料移位2n步驟;使用(i)專用於該處理器元件之一移位暫存器中之資料及(ii)移位至該處理器元件之資料以藉由資料被移位至之每一處理器元件以計算一累加運算。
  8. 如請求項7之電腦程式產品,其中沿該第二維移位暫存器陣列之一第二維中之一單一列或行以計算一最終精簡以計算用於該第一圖塊之一最終經累加值包括:重複地針對從0至一最大值M的每一值m執行運算包括:沿該第二維以將該移位暫存器陣列中之資料移位2m步驟;使用(i)專用於該處理器元件之一移位暫存器中之資料及(ii)移位至該處理器元件之資料以藉由資料被移位至之每一處理器元件以計算一累加運算。
  9. 一種由一處理器所執行之方法,該處理器包括:一二維移位暫存器陣列;處理器元件之一二維陣列,其中該移位暫存器陣列之每一移位暫存器係專用於該等處理器元件中之一者,且其中每一處理器元件經組態以自專用於該處理器元件之一各自移位暫存器中讀取及寫入;及隨機存取記憶體,其耦合至處理器元件之該二維陣列;其中該方法藉由在跨圖塊之該列以處理片之一下一列之前,跨圖塊之該列而處理片之每一列以在圖塊之一列中判定用於資料之一第一圖塊的一經累加值,其中在圖塊之該列中之每一圖塊包括片之複數個列,其中片之每一列橫跨圖塊之該列中所有的該等圖塊,該方法包括:跨圖塊之該列以在片之每一列上反覆包括針對片之每一列以:處理待載入之一下一片,其包含:判定待載入之該下一片是否為用於一各自圖塊之片之該列中之一第一片;每當待載入之該下一片為用於該各自圖塊之片之該列中之該第一片時,(i)將用於一當前圖塊之統計資料儲存於專用於該當前圖塊之該隨機存取記憶體中之一位置中及(ii)自專用於該各自圖塊之該隨機存取記憶體中之一位置將用於該各自圖塊之統計資料載入至處理器元件之該二維陣列中;將片之該列中之該下一片載入至該二維移位暫存器陣列中;及藉由處理器元件之該二維陣列之每一處理器元件以計算(i)來自專用於該處理器元件之一移位暫存器中之該經載入之片之資料及(ii)用於該各自圖塊之該統計資料中之一對應之值的一和;及使用藉由處理器元件之該二維陣列之每一處理器元件所計算之和以更新用於該各自圖塊之該統計資料;將用於複數個圖塊之該第一圖塊之該統計資料載入至該二維移位暫存器陣列中;沿該第二維移位暫存器陣列之一第一維中之列或行以平行計算複數個精簡;及沿該第二維移位暫存器陣列之一第二維中之一單一列或行以計算一最終精簡以計算用於該第一圖塊之一最終經累加值。
  10. 如請求項9之方法,其中該複數個圖塊係不重疊。
  11. 如請求項9之方法,其中沿該第二維移位暫存器陣列之一第一維中之列或行以平行計算複數個精簡包括:重複地針對從0至一最大值N的每一值n執行運算包括:沿該第一維以將該移位暫存器陣列中之該資料移位2n步驟;使用(i)專用於該處理器元件之一移位暫存器中之資料及(ii)移位至該處理器元件之資料以藉由資料被移位至之每一處理器元件以計算一累加運算。
  12. 如請求項11之方法,其中沿該第二維移位暫存器陣列之一第二維中之一單一列或行以計算一最終精簡以計算用於該第一圖塊之一最終經累加值包括:重複地針對從0至一最大值M的每一值m執行運算包括:沿該第二維以將該移位暫存器陣列中之資料移位2m步驟;使用(i)專用於該處理器元件之一移位暫存器中之資料及(ii)移位至該處理器元件之資料以藉由資料被移位至之每一處理器元件以計算一累加運算。
TW106121713A 2016-07-01 2017-06-29 處理器、電腦程式產品及處理器所執行之方法 TWI661360B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/201,134 2016-07-01
US15/201,134 US20180005059A1 (en) 2016-07-01 2016-07-01 Statistics Operations On Two Dimensional Image Processor

Publications (2)

Publication Number Publication Date
TW201812641A TW201812641A (zh) 2018-04-01
TWI661360B true TWI661360B (zh) 2019-06-01

Family

ID=59227904

Family Applications (2)

Application Number Title Priority Date Filing Date
TW106121713A TWI661360B (zh) 2016-07-01 2017-06-29 處理器、電腦程式產品及處理器所執行之方法
TW108114332A TWI736880B (zh) 2016-07-01 2017-06-29 處理器、電腦程式產品及處理器所執行之方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW108114332A TWI736880B (zh) 2016-07-01 2017-06-29 處理器、電腦程式產品及處理器所執行之方法

Country Status (8)

Country Link
US (2) US20180005059A1 (zh)
JP (1) JP6895466B2 (zh)
KR (1) KR102253027B1 (zh)
CN (1) CN107563951B (zh)
DE (2) DE202017103695U1 (zh)
GB (1) GB2554492B (zh)
TW (2) TWI661360B (zh)
WO (1) WO2018005029A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489878B2 (en) * 2017-05-15 2019-11-26 Google Llc Configurable and programmable image processor unit
US10503689B2 (en) * 2017-05-15 2019-12-10 Google Llc Image processor I/O unit
US11562280B2 (en) 2017-08-09 2023-01-24 Google Llc Reducing parasitic interactions in a qubit grid for surface code error correction
CN111183433B (zh) 2017-08-09 2023-10-31 谷歌有限责任公司 减少量子网格中的寄生相互作用
CN116957087A (zh) 2017-08-09 2023-10-27 谷歌有限责任公司 用于减少量子网格中的寄生相互作用的频率模式
US10467142B1 (en) * 2019-05-07 2019-11-05 12 Sigma Technologies Enhancement of real-time response to request for detached data analytics
US11500811B2 (en) * 2020-06-12 2022-11-15 Alibaba Group Holding Limited Apparatuses and methods for map reduce
KR20220049325A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 가속기 및 이를 포함한 전자 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200741633A (en) * 2005-12-07 2007-11-01 Qualcomm Mems Technologies Inc Method and system for writing data to MEMS display elements
US20080262984A1 (en) * 2007-04-19 2008-10-23 Microsoft Corporation Field-Programmable Gate Array Based Accelerator System
US20140344545A1 (en) * 2013-05-17 2014-11-20 Analog Devices, Inc. Parallel atomic increment

Family Cites Families (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4445177A (en) 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
JPS60151789A (ja) * 1984-01-19 1985-08-09 Hitachi Ltd 多機能画像処理プロセツサ
JPS6379180A (ja) 1987-03-06 1988-04-09 Hitachi Ltd 並列画像処理用lsi
DE3851005T2 (de) 1987-06-01 1995-04-20 Applied Intelligent Syst Inc Paralleles Nachbarverarbeitungssystem und -Verfahren.
US4935894A (en) 1987-08-31 1990-06-19 Motorola, Inc. Multi-processor, multi-bus system with bus interface comprising FIFO register stocks for receiving and transmitting data and control information
US4972495A (en) * 1988-12-21 1990-11-20 General Electric Company Feature extraction processor
US4939642A (en) * 1989-02-01 1990-07-03 The Board Of Trustees Of The Leland Stanford Jr. University Virtual bit map processor
US5253308A (en) 1989-06-21 1993-10-12 Amber Engineering, Inc. Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing
US5173947A (en) * 1989-08-01 1992-12-22 Martin Marietta Corporation Conformal image processing apparatus and method
US5093871A (en) 1989-10-10 1992-03-03 Unisys Corporation Method and apparatus for effecting background suppression of image data
GB8925723D0 (en) * 1989-11-14 1990-01-04 Amt Holdings Processor array system
WO1994009595A1 (en) 1991-09-20 1994-04-28 Shaw Venson M Method and apparatus including system architecture for multimedia communications
US5581773A (en) * 1992-05-12 1996-12-03 Glover; Michael A. Massively parallel SIMD processor which selectively transfers individual contiguously disposed serial memory elements
US5644517A (en) * 1992-10-22 1997-07-01 International Business Machines Corporation Method for performing matrix transposition on a mesh multiprocessor architecture having multiple processor with concurrent execution of the multiple processors
US5428804A (en) * 1992-12-18 1995-06-27 Xerox Corporation Edge crossing circuitry for SIMD architecture
JP3482660B2 (ja) 1993-09-08 2003-12-22 ソニー株式会社 画像データ処理装置および画像データ処理方法
US5612693A (en) 1994-12-14 1997-03-18 International Business Machines Corporation Sliding window data compression using a toroidal bit shift register
DE59607143D1 (de) 1996-01-15 2001-07-26 Infineon Technologies Ag Prozessor zur bildverarbeitung
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US6148111A (en) * 1998-04-27 2000-11-14 The United States Of America As Represented By The Secretary Of The Navy Parallel digital image compression system for exploiting zerotree redundancies in wavelet coefficients
US6366289B1 (en) 1998-07-17 2002-04-02 Microsoft Corporation Method and system for managing a display image in compressed and uncompressed blocks
US6587158B1 (en) 1998-07-23 2003-07-01 Dvdo, Inc. Method and apparatus for reducing on-chip memory in vertical video processing
US7010177B1 (en) 1998-08-27 2006-03-07 Intel Corporation Portability of digital images
JP4489305B2 (ja) 1999-03-16 2010-06-23 浜松ホトニクス株式会社 高速視覚センサ装置
EP1181648A1 (en) * 1999-04-09 2002-02-27 Clearspeed Technology Limited Parallel data processing apparatus
US6681058B1 (en) * 1999-04-15 2004-01-20 Sarnoff Corporation Method and apparatus for estimating feature values in a region of a sequence of images
EP1107107A1 (en) * 1999-12-10 2001-06-13 Koninklijke Philips Electronics N.V. Parallel data processing and shuffling
JP3922859B2 (ja) 1999-12-28 2007-05-30 株式会社リコー 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6745319B1 (en) 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US6728862B1 (en) 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
US6728722B1 (en) 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
GB2371459B (en) * 2001-01-19 2005-05-04 Pixelfusion Ltd Image scaling
US6922716B2 (en) * 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7286717B2 (en) 2001-10-31 2007-10-23 Ricoh Company, Ltd. Image data processing device processing a plurality of series of data items simultaneously in parallel
JP4146654B2 (ja) 2002-02-28 2008-09-10 株式会社リコー 画像処理回路、複合画像処理回路、および、画像形成装置
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
WO2003088033A1 (en) 2002-04-09 2003-10-23 University Of Rochester Multiplier-based processor-in-memory architectures for image and graphics processing
US7506135B1 (en) * 2002-06-03 2009-03-17 Mimar Tibet Histogram generation with vector operations in SIMD and VLIW processor by consolidating LUTs storing parallel update incremented count values for vector data elements
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
EP1450214A1 (en) * 2002-12-16 2004-08-25 Ricoh Company Data conversion system for image processing and image forming apparatus
US20060044576A1 (en) 2004-07-30 2006-03-02 Kabushiki Kaisha Toshiba Apparatus for image processing
US7667764B2 (en) 2004-06-04 2010-02-23 Konica Minolta Holdings, Inc. Image sensing apparatus
JP4219887B2 (ja) 2004-12-28 2009-02-04 富士通マイクロエレクトロニクス株式会社 画像処理装置及び画像処理方法
JP6059413B2 (ja) 2005-04-28 2017-01-11 クアルコム,インコーポレイテッド 再構成可能命令セル・アレイ
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US20070198901A1 (en) * 2005-07-12 2007-08-23 Amit Ramchandran Configurable interface for connecting various chipsets for wireless communication to a programmable (multi-)processor
JP2007067917A (ja) 2005-08-31 2007-03-15 Matsushita Electric Ind Co Ltd 画像データ処理装置
US20070073999A1 (en) * 2005-09-28 2007-03-29 Verheyen Henry T Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register
US7602974B2 (en) 2005-10-21 2009-10-13 Mobilic Technology (Cayman) Corp. Universal fixed-pixel-size ISP scheme
FR2895103B1 (fr) 2005-12-19 2008-02-22 Dxo Labs Sa Procede et systeme de traitement de donnees numeriques
US7750915B1 (en) * 2005-12-19 2010-07-06 Nvidia Corporation Concurrent access of data elements stored across multiple banks in a shared memory resource
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US8176265B2 (en) * 2006-10-30 2012-05-08 Nvidia Corporation Shared single-access memory with management of multiple parallel requests
US20080111823A1 (en) 2006-11-13 2008-05-15 Faraday Technology Corp. Graphics processing system
EP1927949A1 (en) * 2006-12-01 2008-06-04 Thomson Licensing Array of processing elements with local registers
US8321849B2 (en) 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US20080244222A1 (en) 2007-03-30 2008-10-02 Intel Corporation Many-core processing using virtual processors
US7876330B2 (en) * 2007-03-30 2011-01-25 Kabushiki Kaisha Toshiba Color conversion apparatus, filter processing apparatus and color conversion method
JP4389976B2 (ja) 2007-06-29 2009-12-24 ブラザー工業株式会社 画像処理装置および画像処理プログラム
WO2009031302A1 (ja) 2007-09-05 2009-03-12 Tohoku University 固体撮像素子及びその駆動方法
US9513905B2 (en) * 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
EP2289001B1 (en) 2008-05-30 2018-07-25 Advanced Micro Devices, Inc. Local and global data share
JP4999791B2 (ja) 2008-06-30 2012-08-15 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US8456480B2 (en) * 2009-01-14 2013-06-04 Calos Fund Limited Liability Company Method for chaining image-processing functions on a SIMD processor
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
JP5302769B2 (ja) * 2009-05-14 2013-10-02 キヤノン株式会社 スキャン変換装置及び画像符号化装置及びそれらの制御方法
US20110055495A1 (en) 2009-08-28 2011-03-03 Qualcomm Incorporated Memory Controller Page Management Devices, Systems, and Methods
US8726281B2 (en) * 2009-08-31 2014-05-13 Imec Method and system for improving performance and reducing energy consumption by converting a first program code into a second program code and implementing SIMD
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
US8436857B2 (en) 2009-10-20 2013-05-07 Oracle America, Inc. System and method for applying level of detail schemes
US8595428B2 (en) 2009-12-22 2013-11-26 Intel Corporation Memory controller functionalities to support data swizzling
US8749667B2 (en) 2010-08-02 2014-06-10 Texas Instruments Incorporated System and method for maintaining maximum input rate while up-scaling an image vertically
GB2483225B (en) * 2010-08-27 2018-07-11 Nvidia Tech Uk Limited Improved processor architecture
US8508612B2 (en) 2010-09-30 2013-08-13 Apple Inc. Image signal processor line buffer configuration for processing ram image data
US8797323B2 (en) 2011-01-18 2014-08-05 Intel Corporation Shadowing dynamic volumetric media
WO2012105174A1 (ja) 2011-01-31 2012-08-09 パナソニック株式会社 プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム
US9092267B2 (en) 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US20130027416A1 (en) 2011-07-25 2013-01-31 Karthikeyan Vaithianathan Gather method and apparatus for media processing accelerators
WO2013046712A1 (ja) * 2011-09-29 2013-04-04 パナソニック株式会社 密閉型二次電池
JP5742651B2 (ja) 2011-10-15 2015-07-01 コニカミノルタ株式会社 画像処理装置、連携方法および連携プログラム
US20140247673A1 (en) 2011-10-28 2014-09-04 Naveen Muralimanohar Row shifting shiftable memory
EP2740270A4 (en) * 2011-10-31 2015-04-29 Mediatek Inc APPARATUS AND METHOD FOR BUILDING REFERENCED CONTEXT TABLES TO PERFORM AN ENTROPTIC DECODING OF A MULTI-TILE ENCODED IMAGE AND CORRESPONDING ENTROPY DECODER
JP5746100B2 (ja) 2011-12-27 2015-07-08 京セラドキュメントソリューションズ株式会社 画像形成装置
US8823736B2 (en) 2012-01-20 2014-09-02 Intel Corporation Graphics tiling architecture with bounding volume hierarchies
US10244246B2 (en) 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
US9235769B2 (en) 2012-03-15 2016-01-12 Herta Security, S.L. Parallel object detection method for heterogeneous multithreaded microarchitectures
TWI520598B (zh) 2012-05-23 2016-02-01 晨星半導體股份有限公司 影像處理裝置與影像處理方法
US9232139B2 (en) 2012-07-24 2016-01-05 Apple Inc. Image stabilization using striped output transformation unit
US9378181B2 (en) 2012-11-09 2016-06-28 Intel Corporation Scalable computing array
JP6020091B2 (ja) 2012-11-27 2016-11-02 富士通株式会社 演算処理装置の制御プログラム、演算処理装置の制御方法および演算処理装置
US9490971B2 (en) * 2012-12-28 2016-11-08 Intel Corporation Instruction for fast ZUC algorithm processing
US8954992B2 (en) 2013-03-15 2015-02-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Distributed and scaled-out network switch and packet processing
US9477999B2 (en) * 2013-09-20 2016-10-25 The Board Of Trustees Of The Leland Stanford Junior University Low power programmable image processor
JP6329412B2 (ja) * 2014-03-26 2018-05-23 株式会社メガチップス Simdプロセッサ
US9569811B2 (en) * 2014-06-26 2017-02-14 Qualcomm Incorporated Rendering graphics to overlapping bins
GB2533284B (en) 2014-12-11 2017-04-12 Imagination Tech Ltd Performing object detection
US9678716B2 (en) * 2014-12-22 2017-06-13 Arm Limited Apparatus and method for performing absolute difference operation
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US10402946B2 (en) * 2015-03-17 2019-09-03 Lexmark International, Inc. System and method for performing orthogonal rotation and mirroring operation in a device
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
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
KR102370617B1 (ko) * 2015-04-23 2022-03-04 삼성전자주식회사 적응적 샘플링을 수행하여 영상을 처리하는 방법 및 장치.
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary 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
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
US9632979B2 (en) * 2015-06-01 2017-04-25 Intel Corporation Apparatus and method for efficient prefix sum operation
EP3326115A1 (en) * 2015-07-23 2018-05-30 Mireplica Technology, LLC Performance enhancement for two-dimensional array processor
US9760794B2 (en) * 2015-09-25 2017-09-12 Intel Corporation Method and system of low-complexity histrogram of gradients generation for image processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200741633A (en) * 2005-12-07 2007-11-01 Qualcomm Mems Technologies Inc Method and system for writing data to MEMS display elements
US20080262984A1 (en) * 2007-04-19 2008-10-23 Microsoft Corporation Field-Programmable Gate Array Based Accelerator System
US20140344545A1 (en) * 2013-05-17 2014-11-20 Analog Devices, Inc. Parallel atomic increment

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SIMD Array on FPGA for B/W Image Processing-11th International Workshop on Cellular Neural Networks and their Applications,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4588678,07/16/2008 *
SIMD Array on FPGA for B/W Image Processing-11th International Workshop on Cellular Neural Networks and their Applications,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4588678,07/16/2008。

Also Published As

Publication number Publication date
US20180005061A1 (en) 2018-01-04
GB2554492B (en) 2020-05-06
US20180005059A1 (en) 2018-01-04
KR20190028453A (ko) 2019-03-18
KR102253027B1 (ko) 2021-05-17
CN107563951A (zh) 2018-01-09
DE202017103695U1 (de) 2017-11-21
DE102017113735A1 (de) 2018-01-04
TW201812641A (zh) 2018-04-01
JP6895466B2 (ja) 2021-06-30
DE102017113735B4 (de) 2022-09-01
US10915773B2 (en) 2021-02-09
JP2019526849A (ja) 2019-09-19
TW201928760A (zh) 2019-07-16
GB201709787D0 (en) 2017-08-02
GB2554492A (en) 2018-04-04
WO2018005029A1 (en) 2018-01-04
TWI736880B (zh) 2021-08-21
CN107563951B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
TWI661360B (zh) 處理器、電腦程式產品及處理器所執行之方法
JP7202987B2 (ja) 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ
TWI614689B (zh) 用於映射程式碼至一高效能、高功率效率、可程式化之影像處理硬體平台的編譯器技術
JP6764904B2 (ja) 画像プロセッサのための二次元シフトアレイ
CN107133908B (zh) 用于图像处理器的编译器管理存储器
TW201802727A (zh) 在可程式化二維影像處理器上之卷積神經網路
KR20200021003A (ko) 이미지 프로세서를 위한 시트 생성기
CN110192220B (zh) 提高图像处理器运行时效率的程序代码转换
JP6820428B2 (ja) マルチコア画像プロセッサ上のアプリケーションソフトウェアの構成
TW201901483A (zh) 執行雙輸入值絕對值及加總運算的電路