TWI670679B - 影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法 - Google Patents

影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法 Download PDF

Info

Publication number
TWI670679B
TWI670679B TW107103788A TW107103788A TWI670679B TW I670679 B TWI670679 B TW I670679B TW 107103788 A TW107103788 A TW 107103788A TW 107103788 A TW107103788 A TW 107103788A TW I670679 B TWI670679 B TW I670679B
Authority
TW
Taiwan
Prior art keywords
array
mask
processing element
shift register
data
Prior art date
Application number
TW107103788A
Other languages
English (en)
Other versions
TW201901611A (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 TW201901611A publication Critical patent/TW201901611A/zh
Application granted granted Critical
Publication of TWI670679B publication Critical patent/TWI670679B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/007Digital input from or digital output to memories of the shift register type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/38Digital stores in which the information is moved stepwise, e.g. shift registers two-dimensional, e.g. horizontal and vertical shift registers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

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

Abstract

本發明描述一種影像處理器。該影像處理器包含二維移位暫存器陣列,該二維移位暫存器陣列耦合其陣列位置之特定者以支援一移位指令之執行。該移位指令用以包含遮罩資訊。該遮罩資訊用以指定將經移位資訊寫入該等陣列位置之哪一者。該二維移位暫存器陣列包含用以根據該遮罩資訊將該經移位資訊寫入至該等陣列位置之指定者中之遮罩邏輯電路。

Description

影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法
本發明之領域大體上係關於影像處理且更特定言之係關於二維遮罩移位指令。
影像處理通常涉及組織成一陣列之像素值之處理。此處,一空間組織二維陣列擷取影像之二維性質(額外維度可包含時間(例如二維影像之一序列)及資料類型(例如色彩))。在一典型案例中,藉由已產生一靜態影像或一圖框序列以擷取運動影像之一相機提供陣列像素值。傳統影像處理器通常落在兩個極端情況之任一側上。
第一種極端情況將影像處理任務作為在一通用處理器或類似通用處理器(例如具有向量指令增強之一通用處理器)上執行之軟體程式執行。儘管第一種極端情況通常提供一高度多樣化應用軟體開發平台,但其使用與相關聯額外消耗(例如,指令提取及解碼、晶片上及晶片外資料之處理、臆測執行)組合之較大細粒度資料結構最終導致在程式碼之執行期間每資料單位消耗較大量的能量。
第二種相對極端情況將固定功能硬接線電路應用至大得多的資料區塊。直接應用至客製設計電路之較大(相對於較小細粒度)資料區塊之使用大幅減少每資料單位之功率消耗。然而,客製設計固定功能電路之使用通 常導致處理器能夠執行之有限一組任務。因而,在第二種極端情況中缺乏(與第一種極端情況相關聯之)廣泛多樣化程式化環境。
提供高度多樣化應用軟體開發機會連同每資料單位之改良功率效率兩者之一技術平台仍為一期望但缺失之解決方案。
本發明描述一種影像處理器。該影像處理器包含二維移位暫存器陣列,其耦合其陣列位置之特定者以支援一移位指令之執行。該移位指令包含遮罩資訊。該遮罩資訊用以指定將經移位資訊寫入至該等陣列位置之哪一者。該二維移位暫存器陣列包含用以根據該遮罩資訊將該經移位資訊寫入至該等陣列位置之指定者中之遮罩邏輯電路。
100‧‧‧架構
101_1至101_M‧‧‧線緩衝器單元
102_1至102_N‧‧‧模板處理器單元
103_1至103_N‧‧‧表單產生器單元
104‧‧‧網路
105‧‧‧大型I/O單元
201‧‧‧影像資料
202‧‧‧重疊模板
203‧‧‧陰影區域
204‧‧‧初始表單/第一表單
205‧‧‧下一表單/新表單/第二表單
300‧‧‧模板處理器單元架構
301‧‧‧資料運算單元
302‧‧‧純量處理器
303‧‧‧記憶體
304‧‧‧I/O單元
305‧‧‧執行道陣列
306‧‧‧二維移位陣列結構
307‧‧‧隨機存取記憶體
309‧‧‧程式控制器
351‧‧‧純量指令
352‧‧‧ALU指令
353‧‧‧記憶體指令
354‧‧‧欄位
401‧‧‧資料運算組件
405‧‧‧執行道陣列
406‧‧‧二維移位暫存器陣列結構
407‧‧‧隨機存取記憶體
409‧‧‧光暈區域
505‧‧‧圖框
507‧‧‧第一陣列
510‧‧‧執行道
511‧‧‧執行道位置
601‧‧‧執行道
602‧‧‧暫存器檔案
603‧‧‧輸出多工器
604‧‧‧輸入多工器
605‧‧‧遮罩邏輯電路
614‧‧‧解多工器
615‧‧‧詳細實施例
616‧‧‧緩衝器組/緩衝器
617‧‧‧多工器組/多工器
701‧‧‧二維移位暫存器陣列
702‧‧‧執行道陣列
703‧‧‧光暈區域
706‧‧‧特徵
801‧‧‧第一圖塊/影像資料結構
802‧‧‧第二圖塊/影像資料/影像資料結構
803‧‧‧陰影內容
804‧‧‧第一移位指令
805‧‧‧第二遮罩移位指令
901‧‧‧執行道陣列區域/R1暫存器空間
902a‧‧‧暫存器空間/初始暫存器狀態/初始影像狀態
902b‧‧‧所得暫存器狀態/第一遮罩移位指令
902c‧‧‧結果/第二遮罩移位指令
902d‧‧‧結果/第三遮罩移位指令
903b‧‧‧暫態
903c‧‧‧經移位暫態
903d‧‧‧經移位暫態
904‧‧‧加粗框
1001‧‧‧執行道陣列區域/R1暫存器空間
1002a‧‧‧暫存器空間/初始暫存器狀態/初始影像狀態
1002b‧‧‧所得暫存器狀態
1002c‧‧‧結果/第二遮罩移位指令
1002d‧‧‧結果/第三遮罩移位指令
1002e‧‧‧結果
1003b‧‧‧暫態
1003c‧‧‧經移位暫態
1003d‧‧‧經移位暫態
1003e‧‧‧暫態
1101‧‧‧執行道陣列區域/R1暫存器空間
1102a‧‧‧暫存器空間/初始暫存器狀態
1102b‧‧‧所得暫存器狀態/第一遮罩移位指令
1102c‧‧‧結果/第三遮罩移位指令
1102d‧‧‧結果/第三遮罩移位指令
1102e‧‧‧結果
1103b‧‧‧暫態
1103c‧‧‧經移位暫態
1103d‧‧‧經移位暫態
1103e‧‧‧暫態
1301‧‧‧執行道陣列
1302a‧‧‧暫存器空間
1302b‧‧‧結果
1302c‧‧‧結果
1303c‧‧‧經移位暫態
1401‧‧‧執行道陣列區域
1402a‧‧‧暫存器空間
1402b‧‧‧結果
1402c‧‧‧結果
1403c‧‧‧經移位暫態
1501‧‧‧執行道陣列區域
1502a‧‧‧暫存器空間
1502b‧‧‧結果
1502c‧‧‧結果
1503c‧‧‧經移位暫態
1601‧‧‧步驟
1602‧‧‧步驟
1701‧‧‧程式庫
1800‧‧‧系統
1801‧‧‧中央處理單元
1802‧‧‧系統記憶體
1803‧‧‧顯示器
1804‧‧‧局部有線點對點鏈路介面
1805‧‧‧網路I/O功能
1806‧‧‧無線區域網路介面
1807‧‧‧無線點對點鏈路介面
1808‧‧‧全球定位系統介面
1809_1至1809_N‧‧‧感測器
1810‧‧‧相機
1811‧‧‧電池
1812‧‧‧功率管理控制單元
1813‧‧‧揚聲器及麥克風
1814‧‧‧音訊編碼器/解碼器
1815_1至1815_N‧‧‧通用處理核心
1816‧‧‧圖形處理單元/GPU
1817‧‧‧記憶體管理功能
1818‧‧‧I/O控制功能
1819‧‧‧影像處理器單元
1850‧‧‧應用處理器/多核心處理器
R1‧‧‧暫存器
R2‧‧‧局部暫存器
R3‧‧‧暫存器
R4‧‧‧暫存器
以下描述及隨附圖式用於繪示本發明之實施例。在圖式中:圖1展示一影像處理器硬體架構之一實施例;圖2a、圖2b、圖2c、圖2d及圖2e描繪將影像資料剖析成一線群組、將一線群組剖析成一表單及對運用重疊模板對一表單執行之操作;圖3a展示一模板處理器之一實施例;圖3b展示模板處理器之一指令字組之一實施例;圖4展示一模板處理器內之一資料運算單元之一實施例;圖5a、圖5b、圖5c、圖5d、圖5e、圖5f、圖5g、圖5h、圖5i、圖5j及圖5k描繪將二維移位陣列及一執行道陣列用於運用重疊模板判定一對相鄰輸出像素值之一實例;圖6a展示用於支援遮罩移位指令之一整合執行道陣列及二維移位陣列之一單元胞之一實施例; 圖6b展示圖6a之遮罩邏輯電路之一實施例;圖7展示二維移位暫存器陣列及光暈區域;圖8a、圖8b、圖8c及圖8d展示用於使用一遮罩移位指令模擬一擴展光暈區域之一程序;圖9a、圖9b、圖9c、圖9d及圖9e展示用於使用遮罩移位指令壓縮影像資料之一程序;圖10a、圖10b、圖10c、圖10d及圖10e展示用於使用遮罩移位指令擴充影像資料之一程序;圖11a、圖11b、圖11c、圖11d及圖11e展示用於使用遮罩移位指令廣播影像資料之一程序;圖12展示1階、2階及4階蝶形運算;圖13a、圖13b及圖13c展示用於使用一遮罩移位指令執行1階蝶形運算之一程序;圖14a、圖14b及圖14c展示用於使用一遮罩移位指令執行2階蝶形運算之一程序;圖15a、圖15b及圖15c展示用於使用一遮罩移位指令執行4階蝶形運算之一程序;圖16展示執行一遮罩移位指令之一方法;圖17展示一程式碼開發環境;圖18展示一運算系統。
i. 導論
下文之描述描述關於提供使用較大資料區塊(例如,如下文進一步描 述之線群組及表單)以提供改良功率效率之一廣泛多樣化應用軟體開發環境之一新影像處理技術平台之數個實施例。
1.0硬體架構實施例 a. 影像處理器硬體架構及操作
圖1展示用於以硬體實施之一影像處理器之一架構100之一實施例。可例如藉由一編譯器標定影像處理器,該編譯器將針對一模擬環境內之一虛擬處理器寫入之程式碼轉換成實際上藉由硬體處理器執行之程式碼。如在圖1中可觀察到,架構100包含複數個線緩衝器單元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設計中將各自模板處理器組態為具有其等自身的各自程式碼核心且將適當控制流掛鉤(hook)組態至硬體中以將來自一個核心之輸出影像引導至之下一核心之輸入而將核心之本質上任何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識別之5×5陰影區域)。如在圖2c及圖2d中可觀察到,模板處理器藉由以自左至右方式在表單上方有效移動重疊模板202而對輸入影像資料之表單操作。如圖2d,可針對其自表單內之資料計算一輸出值之像素數目(一色彩加深3×3陣列中之9)耗盡(其他像素位置皆不具有自表單內之資訊判定之一輸出值)。為簡單起見,已忽略影像之邊界區域。
如在圖2e中可觀察到,表單產生器接著為模板處理器提供下一表單205以繼續操作。應注意,模板在其等開始對下一表單上之操作時之初始位置係自第一表單上之耗盡點向右之下一進程(如先前在圖2d中描繪)。對於新表單205,模板將簡單地繼續向右移動,因為模板處理器以相同於第一表單之處理之方式對新表單進行操作。
應注意,由於圍繞一輸出像素位置之模板之邊界區域,故第一表單204之資料與第二表單205之資料之間存在某重疊。可簡單地藉由表單產生器重新傳輸重疊資料兩次來處理重疊。在替代實施方案中,為將下一表單饋送至模板處理器,表單產生器可繼續僅發送新資料至模板處理器且模板處理器再使用來自先前表單之重疊資料。
b.模板處理器設計及操作
圖3a展示一模板處理器單元架構300之一實施例。如在圖3a中可觀察到,模板處理器包含一資料運算單元301、一純量處理器302及相關聯記憶體303以及一I/O單元304。資料運算單元301包含一執行道陣列305、二維移位陣列結構306及與陣列之特定列或行相關聯之分開各自隨機存取記憶體307。
I/O單元304負責將自表單產生器接收之「輸入」資料表單載入至資料運算單元301中且將來自模板處理器之「輸出」資料表單儲存至表單產生器中。在一實施例中,將表單資料載入至資料運算單元301中需要將一所接收表單剖析成影像資料之列/行且將影像資料之列/行載入至二維移位暫存器結構306或執行道陣列之列/行之各自隨機存取記憶體307中(在下文更詳細描述)。若首先將表單載入至記憶體307中,則執行道陣列305內之個別執行道可接著在適當時將表單資料自隨機存取記憶體307載入至二維移位暫存器結構306中(例如,作為緊接在對表單之資料之操作之前的一載入指令)。在(無論直接自一表單產生器或自記憶體307)將一資料表單載入至暫存器結構306中完成之後,執行道陣列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內例示一或多個純量查找表。通常由影像處理任務使用查找表以例如獲得不同陣列位置之過濾或變換係數、實施複合函數(例 如γ曲線、正弦、餘弦)(其中查找表提供一輸入索引值之函數輸出)等。此處,預期SIMD影像處理序列通常將在一相同時脈循環期間執行對一相同查找表之查找。類似地,一或多個常數表可經儲存於純量記憶體303中。此處,例如預期不同執行道在相同時脈循環內可能需一相同常數或其他值(例如,應用至一整個影像之一特定多工器)。因此,對一常數查找表之存取將一相同純量值返回至執行道之各者。通常使用一索引值存取查找表。
一純量查找涉及將來自相同索引之相同查找表之相同資料值傳送至執行道陣列305內之執行道之各者。在各種實施例中,上文描述之VLIW指令格式經擴充以亦包含一純量運算碼,其將藉由純量處理器執行之一查找操作引導至一純量查找表中。指定與運算碼結合使用之索引可為一立即運算元或自某其他資料儲存位置提取。無論如何,在一實施例中,自純量記憶體內之一純量查找表之一查找本質上涉及在相同時脈循環期間將相同資料值傳播至執行道陣列305內之所有執行道。在下文進一步提供關於查找表之使用及操作之額外細節。
圖3b概述上文論述之(若干)VLIW指令字組實施例。如在圖3b中可觀察到,VLIW指令字組格式包含三個分開指令之欄位:1)一純量指令351,其藉由純量處理器執行;2)一ALU指令352,其藉由執行道陣列內之各自ALU以SIMD方式傳播及執行;及3)一記憶體指令353,其以一部分SIMD方式傳播及執行(例如,若沿著執行道陣列中之一相同列之執行道共用一相同隨機存取記憶體,則來自不同列之各者之一個執行道實際上執行指令(記憶體指令353之格式可包含識別來自各列之哪一執行道執行指令之一運算元))。
亦包含一或多個立即運算元之一欄位354。可在指令格式中識別哪一 指令351、352、353使用哪一立即運算元資訊。指令351、352、353之各者亦包含其自身各自輸入運算元及所得資訊(例如,用於ALU操作之局部暫存器及用於記憶體存取指令之一局部暫存器及一記憶體位址)。在一實施例中,在執行道陣列內之執行道執行其他兩個指令352、353之任一者之前藉由純量處理器執行純量指令351。即,VLIW字組之執行包含執行純量指令351之一第一循環,其後接著可執行其他指令352、353之一第二循環(應注意,在各種實施例中,可平行執行指令352及353)。
在一實施例中,藉由純量處理器302執行之純量指令包含發出至表單產生器103以自資料運算單元301之記憶體或2D移位暫存器306載入表單/將表單儲存至資料運算單元301之記憶體或2D移位暫存器306中之命令。此處,表單產生器之操作可取決於線緩衝器單元101之操作或防止表單產生器103完成藉由純量處理器302發出之任何命令將花費之循環數目之運行時間之前的理解之其他變量。因而,在一實施例中,任何VLIW字組(其之純量指令351對應於或另外導致一命令發出至表單產生器103)亦包含其他兩個指令欄位352、353中之無操作(NOOP)指令。程式碼接著進入指令欄位352、353之NOOP指令之一迴圈直至表單產生器完成其至資料運算單元之載入/自資料運算單元之儲存。此處,在將一命令發出至表單產生器之後,純量處理器可設定表單產生器在完成命令之後重設之一互鎖暫存器之一位元。在NOOP迴圈期間,純量處理器監測互鎖位元之位元。當純量處理器偵測到表單產生器已完成其命令時,正常執行再次開始。
圖4展示一資料運算單元401之一實施例。如在圖4中可觀察到,資料運算單元401包含邏輯地定位於二維移位暫存器陣列結構406「上方」之一執行道陣列405。如上文論述,在各種實施例中,由一表單產生器提供 之影像資料之一表單經載入至二維移位暫存器406中。執行道接著對來自暫存器結構406之表單資料進行操作。
執行道陣列405及移位暫存器結構406相對於彼此固定在適當位置中。然而,移位暫存器陣列406內之資料以一戰略性且協調方式移位以導致執行道陣列中之各執行道處理資料內之一不同模板。因而,各執行道判定所產生之輸出表單中之一不同像素之輸出影像值。自圖4之架構,應明白,重疊模板不僅垂直配置而且水平配置,因為執行道陣列405包含垂直相鄰執行道以及水平相鄰執行道。
資料運算單元401之一些顯著架構特徵包含具有寬於執行道陣列405之尺寸之移位暫存器結構406。即,執行道陣列405外部存在暫存器之一「光暈(halo)」409。儘管光暈409經展示為存在於執行道陣列之兩側上,但取決於實施方案,光暈可存在於執行道陣列405之較少(一個)或較多(三個或四個)側上。在資料在執行道405「下方」移位時,光暈用於為溢出執行道陣列405之邊界外部之資料提供「外溢」空間。作為一簡單情況,以執行道陣列405之右邊緣為中心之一5×5模板在模板之最左像素被處理時,將需要進一步向右之四個光暈暫存器位置。為易於繪製,當在一標稱實施例中,任一側(右側、底側)上之暫存器將具有水平連接及垂直連接兩者時,圖4將光暈之右側之暫存器展示為僅具有水平移位連接且將光暈之底側之暫存器展示為僅具有垂直移位連接。
藉由耦合至陣列中之各列及/或各行或其部分之隨機存取記憶體407提供額外外溢空間(例如,一隨機存取記憶體可經指派至跨越4個執行道列及2個執行道行之執行道陣列之一「區域」。為簡單起見,本申請案之其餘部分將主要參考基於列及/或行之分配方案。)此處,若一執行道之核心操 作要求其處理二維移位暫存器陣列406外部之像素值(一些影像處理常式可能要求此),則影像資料平面能夠例如自光暈區域409進一步外溢至隨機存取記憶體407中。例如,考量一6×6模板,其中硬體包含在執行道陣列之右邊緣上之一執行道之右側之僅四個儲存元件之一光暈區域。在此情況中,資料將需要進一步移位至光暈409之右邊緣之右側以完全處理模板。移位至光暈區域409外部之資料將接著外溢至隨機存取記憶體407。下文進一步提供圖3之隨機存取記憶體407及模板處理器之其他應用。
圖5a至圖5k示範影像資料如上文暗示般在執行道陣列「下方」之二維移位暫存器陣列內移位之方式之一工作實例。如在圖5a中可觀察到,在一第一陣列507中描繪二維移位陣列之資料內容且藉由一圖框505描繪執行道陣列。而且,簡單化地描繪執行道陣列內之兩個相鄰執行道510。在此簡單化描繪510中,各執行道包含可自移位暫存器接受資料、自一ALU輸出(例如,表現為跨循環之一累加器)接受資料或將輸出資料寫入至一輸出目的地中之一暫存器R1。
各執行道亦可在一局部暫存器R2中獲得二維移位陣列中其「下方」之內容。因此,R1係執行道之一實體暫存器,而R2係二維移位暫存器陣列之一實體暫存器。執行道包含可對由R1及/或R2提供之運算元進行操作之一ALU。如將在下文進一步更詳細描述,在一實施例中,實際上使用每陣列位置之多個儲存器/暫存器元件(之一「深度」)實施移位暫存器,但移位活動限於儲存元件之一個平面(例如,儲存元件之僅一個平面可在每循環移位)。圖5a至圖5k描繪如用於儲存來自各自執行道之結果X之此等較深暫存器位置之一者。為易於繪示,較深所得暫存器經繪製成並排於對應暫存器R2而非在其對應暫存器R2下方。
圖5a至圖5k集中於兩個模板之計算,兩個模板之中心位置與在執行道陣列505內描繪之該對執行道位置511對準。為易於繪示,該對執行道510經繪製成水平相鄰者,實際上,當根據以下實例時,其等係垂直相鄰者。
如最初在圖5a中可觀察到,執行道511以其等中心模板位置為中心。圖5b展示藉由兩個執行道511執行之目的碼。如在圖11b中可觀察到,兩個執行道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移位暫存器硬體可經設計以支援每循環一個以上位置之移位。下文進一步更詳細描述後者之實施例。
圖6a展示用於陣列執行道及移位暫存器結構之單元胞之另一更詳細描繪(光暈區域中之暫存器不包含一對應執行道)。在一實施例中,藉由在執行道陣列之各節點處例示圖6a中可觀察到之電路而實施與執行道陣列中之各位置相關聯之執行道及暫存器空間。如在圖6a中可觀察到,單元胞包含耦合至由四個暫存器R1至R4構成之一暫存器檔案602之一執行道601。在任何循環期間,執行道601可自暫存器R1至R4之任一者讀取或寫入至暫存器R1至R4之任一者。對於需要兩個輸入運算元之指令,執行道可自R1至R4之任一者擷取兩個運算元。
在一實施例中,藉由在一單一循環期間允許暫存器R1至R3之(僅)一 者之任一者之內容透過輸出多工器603移「出」至其相鄰者之暫存器檔案之一者且使暫存器R1至R3之(僅)一者之任一者之內容替換為透過輸入多工器604自其相鄰者之一對應者移「入」之內容,使得相鄰者之間的移位在一相同方向上(例如所有執行道向左移位、所有執行道向右移位等)而實施二維移位暫存器結構。儘管一相同暫存器使其內容移出且替換為在一相同循環內移入之內容可為常見的,但多工器配置603、604允許一相同循環期間之一相同暫存器檔案內之不同移位源及移位目標暫存器。
如在圖6a中描繪,應注意,在一移位序列期間,一執行道將使內容自其暫存器檔案602移出至其左、右、頂部及底部相鄰者之各者。結合相同移位序列,執行道亦將使內容自其左、右、頂部及底部相鄰者之一特定者移入至其暫存器檔案中。再者,移出目標及移入源應與所有執行道之一相同移位方向一致(例如若移出係至右相鄰者,則移入應係自左相鄰者)。為簡單起見,圖6a僅展示最近相鄰者移位之最近相鄰者輸入/輸出。對於一個以上陣列位置(例如2個、4個、8個等)之移位,額外輸入可自相對於單元胞之此等源陣列位置流動/額外輸出可流動至相對於單元胞之此等目的地陣列位置。
儘管在一項實施例中,每循環每執行道僅允許移位一個暫存器之內容,但其他實施例可允許移入/移出一個以上暫存器之內容。例如,若在圖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支援移位操作指令(右、左、上、下)以使資料在二維移位暫存器結構內移位。如上文描述,較大程度上藉由模板處理器之純量處理器執行程式控制指令。
2.0遮罩移位指令操作
參考圖6a,應注意遮罩邏輯電路605之存在。如下文詳細描述,遮罩邏輯電路605用於遮蔽(或未遮蔽)自二維移位暫存器陣列中之另一位置移 位至單元胞之暫存器空間602之資料。此處,自二維移位暫存器陣列之另一位置移位至單元胞之暫存器空間602之一資料項將取決於包含於藉由執行道陣列執行且導致資料項移位至單元胞600之移位指令之指令格式中之一遮罩運算元寫入或不寫入至暫存器空間602中。
因而,鑑於嵌入移位指令中之遮罩運算元,陣列內之一第一組位置之各自遮罩邏輯電路605將把經移位資料寫入至其局部暫存器空間,而陣列內之一第二組不同位置將不把經移位資料寫入至其局部暫存器空間。即,整合至移位指令中之遮罩運算元本質上告訴機器哪些陣列位置待寫入其經移位資料及哪些陣列位置將不寫入其經移位資料。在一相同移位指令之執行期間界定哪些陣列位置寫入經移位資訊及哪些陣列位置不寫入經移位資訊之能力提供對於有效實現基本影像處理相關資料操作非常有用之陣列內之「移位寫入型樣」之實施方案。
圖6b展示圖6a之遮罩邏輯電路605之一更詳細實施例615。此處,藉由解多工器614判定寫入至單元胞內之暫存器(R1、R2或R3)之哪一者。無論移位指令係一遮罩移位指令或並非一遮罩移位指令,自經解碼移位指令判定解多工器614之通道選擇輸入(其將移入內容引導至單元胞內之正確暫存器位置)(未遮罩及遮罩移位指令兩者指定判定解多工器614之通道選擇之一目的地暫存器)。
遮罩邏輯電路615包含一緩衝器組616(各暫存器目的地具有一個緩衝器)及設定緩衝器616之各者之各自寫入啟用(WE)之一多工器組617。多工器組617中之各多工器之通道選擇取決於移位指令是否為一常規(未遮罩)或遮罩移位指令。若移位指令係一未遮罩移位指令,則針對多工器617之各者選擇一第一通道,該第一通道將一邏輯真寫入啟用信號(1)提供至 緩衝器616之各者。在此情況中,啟用緩衝器616之各者且將移入內容寫入至藉由指令指定為目的地之暫存器層級之任一者中。
相反地,若移位指令係一遮罩移位指令,則多工器617選擇接收經解碼遮罩資訊之一替代通道。此處,如上文論述,遮罩資訊包含於告知各單元胞是否將其移入內容寫入至其暫存器空間中之一遮罩移位指令中。因此,若經解碼遮罩資訊指示特定單元胞寫入其移入內容,則經解碼遮罩資訊針對該單元胞係一邏輯真(1),此繼而啟用緩衝器616。緩衝器616之啟用允許移入內容寫入至其特定目的地暫存器。相反地,若經解碼遮罩資訊指示特定單元胞未寫入其移入內容(例如,經解碼遮罩資訊=邏輯非真=O),則停用緩衝器616,此防止移入內容寫入至暫存器之任一者中。
為簡單起見,儘管未展示解碼移位指令之解碼電路,但在各種實施例中,此電路與各執行道陣列位置相關聯或整合於將經解碼指令字組發出至執行道之集中式指令發出電路中。然而,在各種實施例中,各單元胞之執行道包含客製或半客製遮罩資訊解碼電路,該電路基於指令之遮罩資訊唯一地判定其特定單元胞位置之正確經解碼遮罩資訊。客製/半客製遮罩資訊解碼可為適當的,前提是如將自以下論述明白,在各種實施例中,遮罩資訊經提供為唯一地指定關於遮蔽哪些陣列道及未遮蔽哪些陣列道之一型樣之一程式碼且各陣列位置必須自程式碼判定其特定遮罩位元。
在其他實施例中,指令中之遮罩資訊可未經編碼(例如,在規定陣列中之一特定列或行之遮罩行為之一運算元中保留一位元)。在此情況中,將原始運算元位元直接提供至多工器617。
a. 擴展光暈模擬
圖7展示二維移位暫存器陣列701之另一描繪。自前述論述回想,在 各種實施例中,二維移位暫存器陣列701包含一光暈區域703,該光暈區域703保持對以駐留於執行道陣列702處/附近之執行道陣列702之位置為中心之二維資料模板進行執行所需之額外資料內容。例如,為對具有3像素×3像素(3×3像素)之尺寸之模板進行處理,沿著執行道陣列702之最右邊緣駐留之執行道陣列位置將需要來自在執行道陣列702之「右邊緣」之右側之陣列位置之像素資料。光暈區域703用於保持此資料。光暈區域703亦包含一底部區域以提供在執行道陣列702之底部邊緣處/附近之執行道陣列位置所需之資料。
圖7之特徵706指示,在各種實施例中,二維移位暫存器701經設計為「滾動」,使得移出二維移位暫存器陣列701之左手側之資料將依順序出現在光暈區域703之右手側上。同樣地,移出光暈區域703之右手側之資料將依順序重新出現在二維移位暫存器陣列701之左手側上。亦可相對於二維移位暫存器陣列701之頂部邊緣及底部邊緣垂直發生類似滾動。
一問題係支援導致駐留於定位於光暈區域703外部之執行道陣列702之右/底部邊緣處/附近之陣列位置之所需資料之大模板大小之能力。即,所需資料駐留於光暈區域之右手邊緣外及/或光暈區域703之底部邊緣外。
圖8a至圖8d描繪用於使用二維暫存器之多個暫存器層級及實施如上文論述之一特定寫入型樣之一遮罩移位指令模擬額外光暈區域空間之一機制。此處,如在圖8a中可觀察到,影像資料之一第一圖塊801消耗執行道陣列之R1層級之暫存器空間及光暈區域。此處,執行道陣列假定具有16×16像素之一尺寸且光暈區域假定圍繞執行道陣列之右周邊及底部周邊添加四個額外像素位置。因而,第一圖塊801具有20×20像素之一尺寸。更特定言之,如在圖8a中描繪,圖塊801之影像資料包含影像空間之行0至 15,其等消耗執行道陣列及執行道陣列下方之光暈區域之底部部分。圖塊801之影像資料亦包含影像空間之行16至19,其等消耗光暈之右手部分。
圖8a亦展示消耗二維移位暫存器陣列內之R2層級之影像空間中之影像資料802之一第二、相鄰圖塊之存在。此處,第二圖塊802包含影像空間之行16至35。第二圖塊802至影像空間中之第一圖塊801之右側之鄰接相對於執行道陣列而對準(鄰接中未考量第一圖塊801之光暈區域)。因而,第二圖塊802之第一行對應於影像空間中之行16,此係因為與執行道陣列之最右邊緣對準之第一圖塊801之行係影像空間中之行15。
在一實施例中,編譯用於在影像處理器上執行之程式碼之一編譯器認識到,所計算之模板大小將擴展超過硬體中之光暈區域且作為回應在二維移位暫存器陣列中產生圖8a之影像資料結構801、802以作為在對與執行道陣列對準之第一圖塊801(圖8a中之影像空間中之行0至15)中之影像資料執行較大模板之前的一前提。
在運行時間執行期間,程式碼在二維移位暫存器空間中產生圖塊801、802且開始運用較大核心大小處理與第一圖塊(影像空間中之行0至15)之執行道陣列對準之影像資料。最終,處理將消耗第一圖塊801中之所有資料且由於較大模板大小而將需要第二圖塊802中之資料。為簡單起見,假定模板大小具有6像素之一寬度且因此僅需圖塊802中之一個像素資料行(影像空間中之行20)以完成對於當前在執行道陣列(影像空間中之行0至15)中處理之像素之模板處理。即,對於4像素之一光暈寬度及6像素之一模板寬度,模板之最遠最右範圍將為沿著執行道陣列之最右邊緣延伸之像素位置之影像空間中之行20。
圖8b至圖8d展示一些低額外消耗資料移動,包含將所需資料帶到實 體硬體之光暈區域中之一遮罩移位指令。如在圖8b中可觀察到,一第一移位指令804使R1層級中之第一圖塊801之內容向左移位達等於自第二圖塊所需之資料量(在此實例中,1)之一量,且一第二遮罩移位指令805使R2層級中之圖塊802之內容向左移位達等於光暈寬度(4)加上自圖塊802所需之新資料量(1)之一量,在此實例中,此對應於5之一左移位。另外,遮罩移位指令805將R2中之圖塊802之經移位內容寫入至R1(而非R2)中且使用一特別遮罩型樣而非僅將經移位資料寫入至光暈區域。此處,特別遮罩型樣之遮罩運算元被賦予MASK_16之命名,其藉由機器解譯為未寫入至二維移位暫存器陣列之前16個行(此本質上避免寫入至執行道陣列),從而僅留下光暈區域之右部供寫入。
圖8b展示在兩個指令804、805之移位活動之後的第一圖塊801及第二圖塊802之內容但未展示第二遮罩移位指令805之完成寫入活動。圖8c展示在遮罩移位指令之寫入完成之後的R1中之所得資料結構。參考圖8b及圖8c,圖8b之R2中之圖塊802之陰影內容803(最後四行,與告知機器忽視前十六個行之遮罩運算元一致)經寫作圖8c之R1中之圖塊801之陰影內容803。將圖8a之光暈區域內容與圖8c之光暈區域內容相比,應注意,影像空間中之所需行20在如圖8c中描繪之遮罩移位指令805之寫入活動之後定位於實體光暈區域中。因此,透過圖8b及圖8c之資料移動,光暈區域之右側已經模擬為具有5像素之一寬度而非限於4像素之實體/硬體限制。對R2中之圖塊802中之內容執行最終向左移位達一以使圖塊802中之最左資料與沿著圖塊801中之執行道陣列之右邊緣之最右資料對準。
上文處理演算法可經擴展以模擬使光暈區域之有效大小至少加倍之光暈區域。即,對於本實例之例示性硬體平台,上文描述之演算法可用於 自圖塊802提取四個額外像素之一者、兩者、三者之任一者。此處,更一般言之,演算法包含使第一圖塊(其之資料經處理)移位達所需資料量且對第二圖塊使用一遮罩移位指令,該指令使第二圖塊移位達實體光暈寬度加上所需額外資料量且僅將第一圖塊上方之經移位內容寫入光暈區域內。應注意,亦可垂直應用一相同/類似演算法以獲得光暈區域之底部邊緣下方之額外資料(圖8a至圖8d之實例係演算法之一水平應用)。
b. 壓縮
圖9a至圖9e展示使用遮罩移位指令以減小影像資料之佔用面積大小之另一組資料移動。此處,如在此項技術中理解,透過移除一些像素但保持其他像素之「縮減取樣」使影像資料變小。在圖9a至圖9e之實例中,藉由僅保持奇數行且針對執行道陣列之左手邊緣正確對準其等而將影像大小對半切割。
圖9a展示執行演算法之前的初始狀態之一描繪。此處,假定待壓縮之影像資料包含於二維移位暫存器陣列之R1層級中。為簡單起見,僅描繪執行道陣列區域901。而且,為方便繪圖,藉由暫存器空間902a中之行數識別暫存器內容。此處,正如前述章節之光暈擴展模擬實例,二維移位暫存器之R1內容含有影像空間之行0至15,其等消耗執行道陣列之區域。為簡單起見,忽略光暈區域(在論述結束處提供關於此簡化之一註釋)。
圖9b展示使R1中之內容向左移位達1且根據一第一遮罩運算元(MASK_1)僅將經移位內容寫入至R1之每隔一行中之一第一遮罩指令之執行。暫存器狀態902a描繪R1暫存器層級之內容之初始狀態(其相同於圖9a之暫存器狀態902a)。暫態903b描繪在已向左移位達一個像素位置之後但在任何此資訊實際上被寫入至其目的地暫存器空間中之前的移位暫存器陣 列內之經移位內容。即,暫態903b對應於在執行期間但在完成遮罩移位指令之前存在的機器之一中間狀態。暫態903b亦透過加粗框(諸如圍繞行13之加粗框904)描繪經移位內容之哪些行待寫入至其等已移位至之位置之R1層級。自圖9b之描繪,機器解譯MASK_1遮罩運算元以僅寫入被一各自加粗框圍繞之行。此等相同行在圖9b之R1暫存器空間901之描繪中被描繪為散列條紋。
暫存器狀態902b展示遮罩移位指令完成之後的R1暫存器層級之所得暫存器狀態。即,暫存器狀態902b展示在已根據MASK_1運算元將暫態903b之經移位內容寫入至其目的地暫存器空間中之後的R1暫存器層級之狀態。此處,暫態903b之加粗框之內容在所得暫存器狀態902b中描繪為已覆寫初始暫存器狀態902a之此等相同行之內容。初始暫存器狀態902a之行之未寫入內容保持未改變。
圖9c展示使第一遮罩移位指令902b之結果之內容向左移位達兩個像素單位之一後續第二遮罩移位指令之執行。第二遮罩移位指令包含機器解譯為僅寫入經移位暫態903c之每隔一對行之一命令之一第二遮罩運算元MASK_2。圖9c中之暫態903c之加框內容及散列條紋描繪MASK_2運算元之解譯。根據此解譯,第二遮罩移位指令之執行在R1暫存器層級中產生結果902c。
圖9d展示使第二遮罩移位指令902c之結果之內容向左移位達四個像素單位之一後續第三遮罩移位指令之執行。第三遮罩移位指令包含機器解譯為僅寫入經移位暫態903d之每隔四行之一命令之一第三遮罩運算元MASK_4。圖9d中之暫態903d之加框內容及散列條紋描繪MASK_4運算元之解譯。根據此解譯,第三遮罩移位指令之執行在R1暫存器層級中產 生結果902d。
圖9e展示使第三遮罩移位指令902d之結果之內容向左移位達八個像素單位之一後續第四遮罩移位指令之執行。第四遮罩移位指令包含機器解譯為僅寫入經移位暫態903d之八組相鄰行之一命令之一第四遮罩運算元MASK_8。圖9e中之暫態903e之加框內容及散列條紋描繪MASK_8運算元之解譯。根據此解譯,第四遮罩移位指令之執行在R1暫存器層級中產生結果902e。結果902e對應於整個壓縮演算法之結果。此處,應注意,行之左半部分僅包含依順序之奇數行。因而,初始影像狀態902a之總大小已減小一半。此處,應注意,若光暈已包含於演算法之論述中,則行17及19將已依順序跟隨行15。
c. 擴充
圖10a至圖10e展示使用遮罩移位指令以增大影像資料之佔用面積大小之另一組資料移動。此處,如在此項技術中理解,透過添加更多像素至界定一影像之一組現有像素以增大影像大小之「升取樣」使影像資料變大。在圖10a至圖10e之實例中,藉由在影像陣列中重複各資料行兩次而使影像大小加倍。
圖10a展示執行演算法之前的初始狀態之一描繪。此處,假定待擴充之影像資料包含於二維移位暫存器陣列之R1層級中。為簡單起見,僅描繪執行道陣列區域1001。而且,為方便繪圖,藉由暫存器空間1002a中之行數識別暫存器內容。再者,二維移位暫存器之R1內容含有影像空間之行0至15,其等消耗執行道陣列之區域。再次忽略光暈區域。
圖10b展示使R1中之內容向右移位達四且根據一MASK_8運算元將八組經移位相鄰行寫入至R1中之一第一遮罩指令之執行。暫存器狀態1002a 描繪R1暫存器層級之內容之初始狀態(其相同於圖10a之暫存器狀態1002a)。暫態1003b描繪在已向右移位達四個像素位置之後但在任何此資訊實際上被寫入至其目的地暫存器空間中之前的移位暫存器陣列內之經移位內容。暫態1003b亦透過加粗框描繪經移位內容之哪些行待寫入至其等已移位至之位置之R1層級。此等相同行在圖10b之R1暫存器空間1001之描繪中被描繪為散列條紋。
暫存器狀態1002b展示遮罩移位指令完成之後的R1暫存器層級之所得暫存器狀態。即,暫存器狀態1002b展示在已根據MASK_8運算元將暫態1003b之經移位內容寫入至其目的地暫存器空間中之後的R1暫存器層級之狀態。此處,暫態1003b之加粗框之內容在所得暫存器狀態1002b中被描繪為已覆寫初始暫存器狀態1002a之此等相同行之內容。初始暫存器狀態1002a之行之未寫入內容保持未改變。
圖10c展示使第一遮罩移位指令902b之結果之內容向右移位達兩個像素單位之一後續第二遮罩移位指令之執行。第二遮罩移位指令包含機器解譯為僅寫入經移位暫態1003c之每隔四行之一命令之一第二遮罩運算元MASK_4。圖10c中之暫態1003c之加框內容及散列條紋描繪MASK_4運算元之解譯。根據此解譯,第二遮罩移位指令之執行在R1暫存器層級中產生結果1002c。
圖10d展示使第二遮罩移位指令1002c之結果之內容向右移位達一個像素單位之一後續第三遮罩移位指令之執行。第三遮罩移位指令包含機器解譯為僅寫入經移位暫態1003d之每隔一對行之一命令之一第三遮罩運算元MASK_2。圖10d中之暫態1003d之加框內容及散列條紋描繪MASK_2運算元之解譯。根據此解譯,第三遮罩移位指令之執行在R1暫存器層級 中產生結果1002d。
圖10e展示使第三遮罩移位指令1002d之結果之內容向右移位達一個像素單位之一後續第四遮罩移位指令之執行。第四遮罩移位指令包含機器解譯為寫入經移位暫態903d之每隔一行之一命令之一第四遮罩運算元MASK_1。圖10e中之暫態1003e之加框內容及散列條紋描繪MASK_1運算元之解譯。根據此解譯,第四遮罩移位指令之執行在R1暫存器層級中產生結果1002e。結果1002e對應於整個擴充演算法之結果。此處,應注意,各行相較於初始影像狀態1002a已加倍。因而,初始影像狀態902a之總大小已加倍。
d. 廣播
圖11a至圖11e展示使用遮罩移位指令以跨一整個影像重複一單一行之另一組資料移動。在圖11a至圖11e之實例中,跨影像陣列重複第一行。
圖11a展示執行演算法之前的初始狀態之一描繪。此處,假定待擴充之影像資料包含於二維移位暫存器陣列之R1層級中。為簡單起見,僅描繪執行道陣列區域1101。而且,為方便繪圖,藉由暫存器空間1102a中之行數識別暫存器內容。再者,二維移位暫存器之R1內容含有影像空間之行0至15,其等消耗執行道陣列之區域。再次忽略光暈區域。
圖11b展示使R1中之內容向右移位達一且根據一MASK_1運算元將每隔一行寫入至R1中之一第一遮罩指令之執行。暫存器狀態1102a描繪R1暫存器層級之內容之初始狀態(其相同於圖11a之暫存器狀態1102a)。暫態1103b描繪在已向右移位達一個像素位置之後但在任何此資訊實際上被寫入至其目的地暫存器空間中之前的移位暫存器陣列內之經移位內容。暫態 1103b亦透過加粗框描繪經移位內容之哪些行待寫入至其等已移位至之位置之R1層級。此等相同行在圖11b之R1暫存器空間1101之描繪中被描繪為散列條紋。
暫存器狀態1102b展示遮罩移位指令完成之後的R1暫存器層級之所得暫存器狀態。即,暫存器狀態1102b展示在已根據MASK_1運算元將暫態1103b之經移位內容寫入至其目的地暫存器空間中之後的R1暫存器層級之狀態。此處,暫態1103b之加粗框之內容在所得暫存器狀態1102b中被描繪為已覆寫初始暫存器狀態1102a之此等相同行之內容。初始暫存器狀態1102a之行之未寫入內容保持未改變。
圖11c展示使第一遮罩移位指令1102b之結果之內容向右移位達兩個像素單位之一後續第二遮罩移位指令之執行。第二遮罩移位指令包含機器解譯為僅寫入經移位暫態1103c之每隔一對行之一命令之一第二遮罩運算元MASK_2。圖11c中之暫態1103c之加框內容及散列條紋描繪MASK_2運算元之解譯。根據此解譯,第二遮罩移位指令之執行在R1暫存器層級中產生結果1102c。
圖11d展示使第三遮罩移位指令1102c之結果之內容向右移位達四個像素單位之一後續第三遮罩移位指令之執行。第三遮罩移位指令包含機器解譯為僅寫入經移位暫態1103d之每隔四行之一命令之一第三遮罩運算元MASK_4。圖11d中之暫態1103d之加框內容及散列條紋描繪MASK_4運算元之解譯。根據此解譯,第三遮罩移位指令之執行在R1暫存器層級中產生結果1102d。
圖11e展示使第三遮罩移位指令1102d之結果之內容向右移位達八個像素單位之一後續第四遮罩移位指令之執行。第四遮罩移位指令包含機器 解譯為寫入經移位暫態1103d之八個相鄰行之一命令之一第四遮罩運算元MASK_8。圖11e中之暫態1103e之加框內容及散列條紋描繪MASK_8運算元之解譯。根據此解譯,第四遮罩移位指令之執行在R1暫存器層級中產生結果1102e。結果1102e對應於整個廣播演算法之結果。此處,應注意,已跨影像重複第一行(行0)。
e. 蝶形運算
如在此項技術中已知,一快速傅立葉變換(FFT)係相對於一離散傅立葉變換之一較快、較小運算密集型方法。FFT依靠特別有效演算法以將時間或空間域資料快速轉變成頻域資料。此等演算法之一關鍵組成係一蝶形演算法。在圖12中繪示一例示性蝶形演算法。此處,藉由其中特定階段判定在一相同列或行之元素之間發生之一交換量之一階段界定一蝶形運算。如在此項技術中已知,一完整FFT包含對蝶形運算之間的多個不同階蝶形運算之交換內容執行數學運算。
圖12展示1階、2階及4階蝶形運算之各者。在1階蝶形之情況中,交換相鄰元素。在2階蝶形之情況中,交換相鄰對之元素。在4階蝶形之情況中,交換相鄰四組元素。在二維FFT之情況中,根據多個蝶形階段之各者交換一第一信號資料陣列中之元素,其中對經交換信號資源元素執行數學運算。
圖13a至圖13c描繪使用一遮罩移位指令之1階蝶形運算。圖13a展示執行演算法之前的初始狀態之一描繪。此處,假定待擴充之影像資料包含於二維移位暫存器陣列之R1層級中。為簡單起見,僅描繪執行道陣列區域1301。而且,為方便繪圖,藉由暫存器空間1302a中之行數識別暫存器內容。再者,二維移位暫存器之R1內容含有影像空間之行0至15,其等消 耗執行道陣列之區域。再次忽略光暈區域。
圖13b展示使R1中之內容向左移位達一個像素單位以產生結果1302b之一第一移位指令之執行。圖13c展示使第一移位指令之結果1302b之內容向右移位達兩個像素單位之一後續遮罩移位指令之執行。遮罩移位指令包含機器解譯為寫入經移位暫態1303c之每隔一行之一命令之一遮罩運算元MASK_1。圖13c中之暫態1303c之加框內容及散列條紋描繪MASK_1運算元之解譯。根據此解譯,遮罩移位指令之執行在R1暫存器層級中產生結果1302c,其對應於1階蝶形結果。
圖14a至圖14c描繪使用一遮罩移位指令之2階蝶形運算。圖14a展示執行演算法之前的初始狀態之一描繪。此處,假定待擴充之影像資料包含於二維移位暫存器陣列之R1層級中。為簡單起見,僅描繪執行道陣列區域1401。而且,為方便繪圖,藉由暫存器空間1402a中之行數識別暫存器內容。再者,二維移位暫存器之R1內容含有影像空間之行0至15,其等消耗執行道陣列之區域。再次忽略光暈區域。
圖14b展示使R1中之內容向左移位達兩個像素單位以產生結果1402b之一第一移位指令之執行。圖14c展示使第一移位指令之結果1402b之內容向右移位達四個像素單位之一後續遮罩移位指令之執行。遮罩移位指令包含機器解譯為寫入經移位暫態1403c之每隔一對行之一命令之一遮罩運算元MASK_2。圖14c中之暫態1403c之加框內容及散列條紋描繪MASK_2運算元之解譯。根據此解譯,遮罩移位指令之執行在R1暫存器層級中產生結果1402c,其對應於2階蝶形結果。
圖15a至圖15c描繪使用一遮罩移位指令之4階蝶形運算。圖15a展示執行演算法之前的初始狀態之一描繪。此處,假定待擴充之影像資料包含 於二維移位暫存器陣列之R1層級中。為簡單起見,僅描繪執行道陣列區域1501。而且,為方便繪圖,藉由暫存器空間1502a中之行數識別暫存器內容。再者,二維移位暫存器之R1內容含有影像空間之行0至15,其等消耗執行道陣列之區域。再次忽略光暈區域。
圖15b展示使R1中之內容向左移位達四個像素單位以產生結果1502b之一第一移位指令之執行。圖15c展示使第一移位指令之結果1502b之內容向右移位達八個像素單位之一後續遮罩移位指令之執行。遮罩移位指令包含機器解譯為寫入經移位暫態1503c之每隔四行之一命令之一遮罩運算元MASK_4。圖15c中之暫態1503c之加框內容及散列條紋描繪MASK_4運算元之解譯。根據此解譯,遮罩移位指令之執行在R1暫存器層級中產生結果1502c,其對應於4階蝶形結果。
e. 額外註釋
如在上文論述中指示,一遮罩運算元可用於告知機器應寫入哪些經移位行及不應寫入哪些經移位行。此處,參考回圖3b,遮罩運算元可例如消耗2D ALU指令352之一運算元欄位或消耗立即運算元欄位354。替代地,可藉由擴展指令之大小以包含一額外遮罩運算元欄位而進一步修改本文中描述之指令格式以包含遮罩運算元。
傳統遮罩運算元通常針對期望對其進行遮罩控制之各資料道保留一個位元。在上文之遮罩演算法中,按每行基礎實施遮罩粒度。對於其中被描述為具有例如針對執行道區域之16行及針對光暈區域之4行之例示性二維移位暫存器,遮罩運算元可經實施為20位元向量(二維移位暫存器中之各行具有一個位元)。在一些系統中,針對一遮罩運算元保留許多位元呈現出複雜性。
因而,取代將遮罩運算元實施為一真輸入資料運算元,替代地,將遮罩「運算元」實施為表現得更像一運算碼擴展或經編碼較小位元寬度輸入遮罩運算元之一程式碼。此處,自上文論述回想,使用五種不同形式之遮罩資訊實施不同遮罩寫入型樣:MASK_1、MASK_2、MASK_4、MASK_8及MASK_16。可使用少至3個位元表達五種不同形式之遮罩資訊。因此,在各種實施例中,使用告知機器該型樣為何之一減小位元大小程式碼而非使用各行之一專用位元而在指令格式中表達不同寫入型樣。
應注意,可存在一相同寫入型樣之不同階段。例如,圖9d及圖10c兩者皆描繪一MASK_4寫入型樣。然而,儘管兩個型樣寫入至每隔四行,但是被寫入至之此等特定四行係不同的。根據一個方法,遮罩碼欄位經擴充以不僅針對不同寫入型樣(在寫入至多少個相鄰行方面)而且針對一相同寫入型樣之不同階段保留一唯一位元型樣。替代地,所有寫入型樣僅具有一個階段且初始狀態(及最終狀態)資訊經移位以允許僅具有一個寫入型樣之正確整體演算法操作。例如,圖10a之初始狀態可向左移位,使得圖9d之寫入型樣可與圖10c之遮罩移位操作結合使用。
亦應注意,可使用規定寫入至多少個相鄰列之經界定寫入型樣及沿著一垂直軸而非一水平軸移位之移位垂直執行(而上文描述之所有實例係水平的)上文表達之任何/所有演算法。最終,二維移位暫存器陣列可經特別接線以支援由一遮罩碼指定之特定移位量(例如,1、2、4、8等之移位)。
圖16展示如藉由具有一執行道陣列及二維移位暫存器陣列之一影像處理器執行之上文描述之一方法。如在圖16中可觀察到,該方法包含接收含有遮罩資訊之一移位指令1601。該方法亦包含執行移位指令1602。移 位指令之執行包含使資訊在二維移位暫存器陣列內移位且將資訊之一子集寫入至由遮罩資訊識別之二維移位暫存器陣列之位置中。
3.0低階程式碼之構造
圖17展示一運行時間之前的開發環境,其中一程式設計者設計一高階影像處理功能且應用程式開發環境提供利用一遮罩移位指令之章節2.0之前述操作之任一者/全部,使得開發者無需從頭開始寫入該等操作。
此處,開發者可明確叫用在上文章節2.0中論述之操作之任一者及/或開發環境作為回應自一程式庫1701自動提供該等操作。替代地或組合地,可暗示或推斷開發者對於此等操作之需求(諸如一2D FFT之情況中之一蝶形)且開發環境自動插入來自程式庫1701之執行此等操作之程式碼(例如,作為一編譯程序之部分)。
因此,可在較高階程式碼或較低階目的碼中表達執行上文描述之操作或其之替代實施例之程式碼。在各種實施例中,一較高階虛擬指令集架構(ISA)碼可將待操作之資料值指定為具有x,y位址座標之記憶體讀數,而目的碼可替代地將此等資料存取理解為二維移位暫存器操作(諸如上文描述之移位操作之任一者或類似實施例)。
一編譯器可將開發環境中之x,y讀數轉換成二維移位暫存器之對應移位(其等係指定目的碼)(例如開發環境中之具有x,y座標(+2,+2)之一讀數可在目的碼中實現為兩個空間之一向左移位及兩個空間之一向下移位)。取決於環境,開發者可具有對此等層級之兩者(或例如,僅較高虛擬ISA層級)之可見性。在又其他實施例中,可在運行時間期間(例如,僅藉由即時編譯器)而非在運行時間之前調用此等預寫常式。
4.0結論陳述
自前述章節應認識到,如上文章節1.0中描述之一影像處理器可體現為一電腦系統上之硬體(例如,作為處理來自手持裝置之相機之資料之一手持裝置之系統單晶片(SOC)之部分)。
應指出,上文描述之各種影像處理器架構特徵不必限於傳統意義上之影像處理且因此可經應用至可(或可不)導致重新特性化影像處理器之其他應用。例如,若上文描述之各種影像處理器架構特徵之任一者待用於建立及/或產生及/或呈現動畫(相對於處理實際相機影像),則影像處理器可經特性化為一圖形處理單元。另外,上文描述之影像處理器架構特徵可經應用至其他技術應用,諸如視訊處理、視覺處理、影像辨識及/或機器學習。以此方式應用,影像處理器可(例如作為一協同處理器)與一更通用處理器(例如其係運算系統之一CPU或其之部分)整合或可為一運算系統內之一獨立處理器。
上文論述之硬體設計實施例可體現於一半導體晶片內及/或體現為以一半導體製程為最終目標之一電路設計之一描述。在後一情況中,此等電路描述可採用一(例如,VHDL或Verilog)暫存器轉移層級(RTL)電路描述、一閘極層級電路描述、一電晶體層級電路描述或遮罩描述或其等之各種組合之形式。電路描述通常體現於一電腦可讀儲存媒體(諸如一CD-ROM或其他類型之儲存技術)上。
自前述章節應認識到,如上文描述之一影像處理器可體現於一電腦系統上之硬體中(例如,作為處理來自手持裝置之相機之資料之一手持裝置之系統單晶片(SOC)之部分)。在其中影像處理器體現為一硬體電路之情況中,應注意,可自一相機直接接收藉由影像處理器處理之影像資料。此處,影像處理器可為一離散相機之部分或具有一整合相機之一運算系統 之部分。在後一情況中,可自相機或自運算系統之系統記憶體直接接收影像資料(例如相機將其影像資料發送至系統記憶體而非影像處理器)。亦應注意,在前述章節中描述之許多特徵可應用至一圖形處理器單元(其呈現動畫)。
圖18提供一運算系統之一例示性描繪。下文描述之運算系統之許多組件可應用至具有一整合相機及相關聯影像處理器之一運算系統(例如一手持式裝置,諸如一智慧型電話或平板電腦)。一般技術者將能夠容易地區分兩者。
如在圖18中可觀察到,基本運算系統可包含一中央處理單元1801(其可包含例如安置於一多核心處理器或應用處理器上之複數個通用處理核心1815_1至1815_N及一主記憶體控制器1817)、系統記憶體1802、一顯示器1803(例如觸控螢幕、平板)、一局部有線點對點鏈路(例如,USB)介面1804、各種網路I/O功能1805(諸如乙太網路介面及/或蜂巢式數據機子系統)、一無線區域網路(例如,WiFi)介面1806、一無線點對點鏈路(例如,藍芽)介面1807及一全球定位系統介面1808、各種感測器1809_1至1809_N、一或多個相機1810、一電池1811、一功率管理控制單元1824、一揚聲器及麥克風1813及一音訊編碼器/解碼器1814。
一應用處理器或多核心處理器1850可包含其CPU 1801內之一或多個通用處理核心1815、一或多個圖形處理單元1816、一記憶體管理功能1817(例如,一記憶體控制器)、一I/O控制功能1818及一影像處理單元1819。通用處理核心1815通常執行運算系統之作業系統及應用軟體。圖形處理單元1816通常執行圖形密集功能以例如產生呈現於顯示器1803上之圖形資訊。記憶體控制功能1817與系統記憶體1802介接以將資料寫入 至系統記憶體1802/自系統記憶體1802讀取資料。功率管理控制單元1824通常控制系統1800之功率消耗。
可根據在上文前述章節中詳細描述之影像處理單元實施例之任一者實施影像處理單元1819。替代地或組合地,IPU 1819可經耦合至GPU 1816及CPU 1801之任一者或兩者以作為其之一協同處理器。另外,在各種實施例中,可使用上文詳細描述之影像處理器特徵之任一者實施GPU 1816。
觸控螢幕顯示器1803、通信介面1804至1807、GPS介面1808、感測器1809、相機1810及揚聲器/麥克風編解碼器1813、1814之各者皆可被視為關於整個運算系統(亦適當地包含一整合周邊裝置(例如,一或多個相機1810))之I/O(輸入及/或輸出)之各種形式。取決於實施方案,此等I/O組件之各者可整合於應用處理器/多核心處理器1850上或可定位於晶粒之外或應用處理器/多核心處理器1850之封裝外部。
在一實施例中,一或多個相機1810包含能夠量測相機與其視場中之一物件之間的深度之一深度相機。在一應用處理器或其他處理器之一通用CPU核心(或具有用以執行程式碼之一指令執行管線之其他功能區塊)上執行之應用軟體、作業系統軟體、裝置驅動器軟體及/或韌體可執行上文描述之功能之任一者,包含一或多個遮罩移位指令之使用。
本發明之實施例可包含如上文陳述之各種程序。程序可體現為機器可執行指令。指令可用於導致一通用或專用處理器執行某些程序。替代地,可藉由含有用於執行程序之硬接線邏輯之特定硬體組件或藉由程式化電腦組件及客製硬體組件之任何組合執行此等程序。
本發明之元件亦可提供為用於儲存機器可執行指令之一機器可讀媒 體。機器可讀媒體可包含(但不限於)軟碟、光碟、CD-ROM及磁光碟、、FLASH記憶體、ROM、RAM、EPROM、EEPROM、磁卡或光學卡、傳播媒體或適於儲存電子指令之其他類型的媒體/機器可讀媒體。例如,該等元件可作為一電腦程式下載,該電腦程式可藉由體現於一載波或其他傳播媒體中之資料信號經由一通信鏈路(例如,一數據機或網路連接)自一遠端電腦(例如,一伺服器)傳遞至一請求電腦(例如,一用戶端)。
在前述說明書中,已描述特定實例實施例。然而,將顯而易見,在不脫離如隨附發明申請專利範圍中陳述之本發明之更廣泛精神及範疇之情況下,可對其作出各種修改及改變。因此,本說明書及圖式應被視為一繪示性意義而非一限制性意義。
在下文中描述一些例示性實施例:
實例1:一種影像處理器,其包括:二維移位暫存器陣列,其耦合陣列位置以支援一移位指令之執行,該移位指令用以包含遮罩資訊,該遮罩資訊用以指定將經移位資訊寫入該等陣列位置之哪一者,該二維移位暫存器陣列包括用以根據該遮罩資訊將該經移位資訊寫入至該等陣列位置之指定者中之遮罩邏輯電路。
實例2:如實例1之影像處理器,其中該遮罩邏輯電路經分佈至該二維移位暫存器陣列之陣列位置中。
實例3:如實例1或2之影像處理器,其中該遮罩資訊包括用以指定該二維移位暫存器陣列之一區域上方之一寫入型樣之一程式碼。
實例4:如前述實例之至少一者之影像處理器,其中該遮罩資訊用以指定將經移位資訊寫入至該二維移位暫存器陣列之哪些列。
實例5:如前述實例之至少一者之影像處理器,其中該遮罩資訊用以 指定將經移位資訊寫入至該二維移位暫存器陣列之哪些行。
實例6:如前述實例之至少一者之影像處理器,其中該遮罩資訊用以指定將經移位資訊寫入至該二維移位暫存器陣列之每隔一對行。
實例7:如前述實例之至少一者之影像處理器,其中該遮罩資訊用以指定將經移位資訊寫入至該二維移位暫存器陣列之每隔四行。
實例8:如前述實例之至少一者之影像處理器,其中該二維移位暫存器陣列包括一光暈區域且該處理器經組態以執行包括一光暈擴展模擬方法之一方法。
實例9:如前述實例之至少一者之影像處理器,其中處理器經組態以執行減小一影像大小之一壓縮方法。
實例10:如前述實例之至少一者之影像處理器,其中處理器經組態以執行放大一影像大小之一擴充方法。
實例11:如前述實例之至少一者之影像處理器,其進一步包括經組態以對輸入影像之至少一個二維區域操作之至少一個模板處理器。
實例12:一種機器可讀儲存媒體,其含有程式碼,該程式碼當藉由一影像處理器執行時導致該影像處理器執行一方法,該方法包括:接收含有遮罩資訊之一移位指令,該影像處理器包括二維移位暫存器陣列;及執行該移位指令,該移位指令之該執行包括使資訊在該二維移位暫存器陣列內移位且將該資訊之一子集寫入至由該遮罩資訊識別之該二維移位暫存器陣列之位置中。
實例13:如實例12之機器可讀媒體,其中該二維移位暫存器陣列包括一光暈區域且該方法包括一光暈擴展模擬方法。
實例14:如實例12或13之機器可讀媒體,其中該方法包括減小一影像大小之一壓縮方法。
實例15:如實例12至14之至少一者之機器可讀媒體,其中該方法包括放大一影像大小之一擴充方法。
實例16:如實例12至15之至少一者之機器可讀媒體,其中該方法包括跨該二維移位暫存器陣列之多個位置重複一相同值之一廣播方法。
實例17:如實例12至16之至少一者之機器可讀媒體,其中該方法執行一蝶形運算。
實例18:如實例12至17之至少一者之機器可讀媒體,該影像處理器進一步包括對輸入影像之至少一個二維區域操作之至少一個模板處理器。
實例19:一種運算系統,其包括:複數個通用處理核心;一主記憶體;一主記憶體控制器,其經耦合在該等通用處理核心與該主記憶體之間;一影像處理器,該影像處理器包括二維移位暫存器陣列,該二維移位暫存器陣列耦合其陣列位置之特定者以支援一移位指令之執行,該移位指令用以包含遮罩資訊,該遮罩資訊用以指定將經移位資訊寫入該等陣列位置之哪一者,該二維移位暫存器陣列包括用以根據該遮罩資訊將該經移位資訊寫入至該等陣列位置之指定者中之遮罩邏輯電路。
實例20:如實例19之運算系統,其中該遮罩邏輯電路經分佈至該二維移位暫存器陣列之陣列位置中。
實例21:如實例19或20之運算系統,其中該遮罩資訊包括指定該二 維移位暫存器陣列之一區域上方之一寫入型樣之一程式碼。
實例22:如實例19至21之至少一者之運算系統,其中該遮罩資訊用以指定將經移位資訊寫入至該二維移位暫存器陣列之哪些列。
實例23:如實例19至22之至少一者之運算系統,其中該遮罩資訊用以指定將經移位資訊寫入至該二維移位暫存器陣列之哪些行。
實例24:如實例19至23之至少一者之運算系統,其中該遮罩資訊用以指定將經移位資訊寫入至該二維移位暫存器陣列之每隔一對行。
實例25:如實例19至24之至少一者之運算系統,其中該遮罩資訊用以指定將經移位資訊寫入至該二維移位暫存器陣列之每隔四行。
實例26:如實例19至25之至少一者之運算系統,其中該二維移位暫存器陣列包括一光暈區域且該處理器經組態以執行包括一光暈擴展模擬方法之一方法。
實例27:如實例19至26之至少一者之運算系統,其中處理器經組態以執行減小一影像大小之一壓縮方法。
實例28:如實例19至27之至少一者之運算系統,其中處理器經組態以執行放大一影像大小之一擴充方法。
實例29:如實例19至28之至少一者之影像處理器,其進一步包括經組態以對輸入影像之至少一個二維區域操作之至少一個模板處理器。

Claims (21)

  1. 一種影像處理器,其包括:一處理元件陣列;一二維移位暫存器陣列,其具有經組態以支援一遮罩移位指令(masked shift instruction)之執行的電路,該遮罩移位指令具有遮罩資訊,其中該遮罩資訊指定將在該二維移位暫存器陣列中之經移位資料寫入該等陣列位置之哪一者,該二維移位暫存器陣列包括經組態用以根據該遮罩資訊將該經移位資料寫入至個別陣列位置之遮罩邏輯電路,其中該處理元件陣列之各處理元件經組態以接收一遮罩移位指令且藉由利用該遮罩資訊及該處理元件陣列內之該處理元件之一個別位置來解碼該遮罩移位指令,以判定該處理元件是否應啟用將藉由該處理元件陣列中之一不同個別處理元件而移位之資料寫入至專用於該處理元件之一移位暫存器。
  2. 如請求項1之影像處理器,其中該遮罩邏輯電路經分佈至該二維移位暫存器陣列之諸陣列位置中。
  3. 如請求項1之影像處理器,其中該遮罩資訊包括指定該二維移位暫存器陣列之一子集上之一寫入型樣之一程式碼。
  4. 如請求項1之影像處理器,其中該遮罩資訊指定將經移位資料寫入至該二維移位暫存器陣列之哪些列。
  5. 如請求項1之影像處理器,其中該遮罩資訊指定將經移位資料寫入至該二維移位暫存器陣列之哪些行。
  6. 如請求項1之影像處理器,其中該遮罩資訊指定將經移位資料寫入至該二維移位暫存器陣列之每隔一對行。
  7. 如請求項1之影像處理器,其中該遮罩資訊指定將經移位資料寫入至該二維移位暫存器陣列之每隔四行。
  8. 一或多種非暫時性機器可讀儲存媒體,其經編碼有程式碼,該程式碼當由包括一處理元件陣列及一二維移位暫存器陣列之一影像處理器執行時導致該影像處理器執行以下操作:藉由該影像處理器接收具有遮罩資訊之一遮罩移位指令,其中該遮罩資訊指定將在該二維移位暫存器陣列中之經移位資料寫入該等陣列位置之哪一者;藉由該處理元件陣列之各處理元件接收一遮罩移位指令;藉由該處理元件陣列之各處理元件利用該遮罩資訊及該處理元件陣列內之該處理元件之一個別位置來解碼該遮罩移位指令,以判定該處理元件是否應啟用將藉由該處理元件陣列中之一不同個別處理元件而移位之資料寫入至專用於該處理元件之一移位暫存器;藉由該處理元件陣列之各處理元件接收藉由該處理元件陣列中之一不同個別處理元件而移位之資料;及藉由一或多個處理元件之各處理元件基於解碼該遮罩移位指令來寫入藉由該不同個別處理元件而移位之該資料。
  9. 如請求項8之一或多種機器可讀儲存媒體,其中該二維移位暫存器陣列包括一光暈區域且其中該等操作進一步包括執行一光暈擴展模擬方法。
  10. 如請求項8之一或多種機器可讀儲存媒體,其中該等操作進一步包括執行減小一影像大小之一壓縮方法。
  11. 如請求項8之一或多種機器可讀儲存媒體,其中該等操作進一步包括執行放大一影像大小之一擴充方法。
  12. 如請求項8之一或多種機器可讀儲存媒體,其中該等操作進一步包括執行跨該二維移位暫存器陣列之多個位置重複一相同值之一廣播方法。
  13. 如請求項8之一或多種機器可讀儲存媒體,其中該等操作進一步包括執行一蝶形運算。
  14. 一種運算系統,其包括:複數個通用處理核心;一主記憶體;一主記憶體控制器,其經耦合在該等通用處理核心與該主記憶體之間;一影像處理器,該影像處理器包括:一處理元件陣列;及一二維移位暫存器陣列,其具有經組態以支援一遮罩移位指令之執行的電路,該遮罩移位指令具有遮罩資訊,該遮罩資訊指定將在該二維移位暫存器陣列中之經移位資料寫入該等陣列位置之哪一者,該二維移位暫存器陣列包括經組態用以根據該遮罩資訊將該經移位資料寫入至個別陣列位置中之遮罩邏輯電路,其中該處理元件陣列之各處理元件經組態以接收一遮罩移位指令且藉由利用該遮罩資訊及該處理元件陣列內之該處理元件之一個別位置來解碼該遮罩移位指令,以判定該處理元件是否應啟用將藉由該處理元件陣列中之一不同個別處理元件而移位之資料寫入至專用於該處理元件之一移位暫存器。
  15. 如請求項14之運算系統,其中該遮罩邏輯電路經分佈至該二維移位暫存器陣列之諸陣列位置中。
  16. 如請求項14之運算系統,其中該遮罩資訊包括指定該二維移位暫存器陣列之一子集上之一寫入型樣之一程式碼。
  17. 如請求項14之運算系統,其中該遮罩資訊指定將經移位資料寫入至該二維移位暫存器陣列之哪些列。
  18. 如請求項14之運算系統,其中該遮罩資訊指定將經移位資料寫入至該二維移位暫存器陣列之哪些行。
  19. 如請求項14之運算系統,其中該遮罩資訊指定將經移位資料寫入至該二維移位暫存器陣列之每隔一對行。
  20. 如請求項19之運算系統,其中該遮罩資訊指定將經移位資料寫入至該二維移位暫存器陣列之每隔四行。
  21. 一種由一影像處理器執行之方法,該影像處理器包括一處理元件陣列及一二維移位暫存器陣列,該方法包括:藉由該影像處理器接收具有遮罩資訊之一遮罩移位指令,其中該遮罩資訊指定將在該二維移位暫存器陣列中之經移位資料寫入該等陣列位置之哪一者;藉由該處理元件陣列之各處理元件接收一遮罩移位指令;藉由該處理元件陣列之各處理元件利用該遮罩資訊及該處理元件陣列內之該處理元件之一個別位置來解碼該遮罩移位指令,以判定該處理元件是否應啟用將藉由該處理元件陣列中之一不同個別處理元件而移位之資料寫入至專用於該處理元件之一移位暫存器;藉由該處理元件陣列之各處理元件接收藉由該處理元件陣列中之一不同個別處理元件而移位之資料;及藉由一或多個處理元件之各處理元件基於解碼該遮罩移位指令來寫入藉由該不同個別處理元件而移位之該資料。
TW107103788A 2017-05-15 2018-02-02 影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法 TWI670679B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/595,600 2017-05-15
US15/595,600 US10915319B2 (en) 2017-05-15 2017-05-15 Two dimensional masked shift instruction

Publications (2)

Publication Number Publication Date
TW201901611A TW201901611A (zh) 2019-01-01
TWI670679B true TWI670679B (zh) 2019-09-01

Family

ID=61132903

Family Applications (2)

Application Number Title Priority Date Filing Date
TW108126839A TWI735014B (zh) 2017-05-15 2018-02-02 影像處理器及由一影像處理器執行之方法
TW107103788A TWI670679B (zh) 2017-05-15 2018-02-02 影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW108126839A TWI735014B (zh) 2017-05-15 2018-02-02 影像處理器及由一影像處理器執行之方法

Country Status (3)

Country Link
US (2) US10915319B2 (zh)
TW (2) TWI735014B (zh)
WO (1) WO2018212796A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US11556162B2 (en) * 2018-03-16 2023-01-17 Advanced Micro Devices, Inc. Per-instruction energy debugging using instruction sampling hardware
US11455370B2 (en) 2018-11-19 2022-09-27 Groq, Inc. Flattened input stream generation for convolution with expanded kernel
EP4066170A4 (en) 2019-11-26 2024-01-17 Groq Inc LOADING OPERANDS AND DELIVERING RESULTS FROM A MULTI-DIMENSIONAL ARRAY USING ONLY ONE SIDE
CN113867791B (zh) * 2020-06-30 2023-09-26 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法
KR20220147339A (ko) 2021-04-27 2022-11-03 성균관대학교산학협력단 이미지의 암호화 방법
US11921559B2 (en) * 2021-05-03 2024-03-05 Groq, Inc. Power grid distribution for tensor streaming processors
CN113542755B (zh) * 2021-07-27 2022-06-21 展讯通信(上海)有限公司 二维楔形遮罩的产生方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3544973A (en) * 1968-03-13 1970-12-01 Westinghouse Electric Corp Variable structure computer
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
US6006316A (en) * 1996-12-20 1999-12-21 International Business Machines, Corporation Performing SIMD shift and arithmetic operation in non-SIMD architecture by operation on packed data of sub-operands and carry over-correction
TW454125B (en) * 1998-04-09 2001-09-11 Teranex Inc Pattern generation and shift plane operations for a mesh connected computer
US20050125638A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data shift operations
TWI315034B (en) * 2003-12-09 2009-09-21 Arm Limite A data processing apparatus and method for moving data between registers and memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546532A (en) * 1993-02-01 1996-08-13 3Dlabs Limited Data-array processing system
US5860085A (en) * 1994-08-01 1999-01-12 Cypress Semiconductor Corporation Instruction set for a content addressable memory array with read/write circuits and an interface register logic block
US20050012563A1 (en) * 2003-07-16 2005-01-20 Michael Kramer Method and system for the simulataneous recording and identification of audio-visual material
US7304996B1 (en) 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
US8631056B2 (en) 2008-01-09 2014-01-14 Qualcomm Incorporated Processor and method of determining a normalization count
CA2704353A1 (en) 2009-05-13 2010-11-13 Ron Kerr Spreading code acquisition for direct sequence spread spectrum signals
US9092227B2 (en) * 2011-05-02 2015-07-28 Anindya SAHA Vector slot processor execution unit for high speed streaming inputs
JP6400375B2 (ja) 2013-08-08 2018-10-03 キヤノンメディカルシステムズ株式会社 画像処理装置及び磁気共鳴イメージング装置
US9769356B2 (en) * 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
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
US10489199B2 (en) * 2017-05-12 2019-11-26 Google Llc Program code transformations to improve image processor runtime efficiency

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3544973A (en) * 1968-03-13 1970-12-01 Westinghouse Electric Corp Variable structure computer
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
US6006316A (en) * 1996-12-20 1999-12-21 International Business Machines, Corporation Performing SIMD shift and arithmetic operation in non-SIMD architecture by operation on packed data of sub-operands and carry over-correction
TW454125B (en) * 1998-04-09 2001-09-11 Teranex Inc Pattern generation and shift plane operations for a mesh connected computer
US20050125638A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data shift operations
TWI315034B (en) * 2003-12-09 2009-09-21 Arm Limite A data processing apparatus and method for moving data between registers and memory

Also Published As

Publication number Publication date
US11544060B2 (en) 2023-01-03
US10915319B2 (en) 2021-02-09
TW201946026A (zh) 2019-12-01
TWI735014B (zh) 2021-08-01
TW201901611A (zh) 2019-01-01
WO2018212796A1 (en) 2018-11-22
US20180329479A1 (en) 2018-11-15
US20210165656A1 (en) 2021-06-03

Similar Documents

Publication Publication Date Title
TWI670679B (zh) 影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法
JP6967570B2 (ja) 画像プロセッサのためのエネルギ効率的なプロセッサコアアーキテクチャ
KR102278658B1 (ko) 높은 성능, 전력 효율, 프로그램 가능 이미지 처리 프로세싱을 위한 아키텍처
US10216487B2 (en) Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
CN107430760B (zh) 用于图像处理器的二维移位阵列
KR102146515B1 (ko) 이미지 프로세서를 위한 시트 생성기
TWI698832B (zh) 用於影像處理器之編譯器管理記憶體
US10685423B2 (en) Determination of per line buffer unit memory allocation
TWI736880B (zh) 處理器、電腦程式產品及處理器所執行之方法
KR102278021B1 (ko) 이미지 프로세서 런타임 효율성을 개선하기 위한 프로그램 코드 변환
TW201902215A (zh) 影像處理器輸入輸出單元
TW201901612A (zh) 具有可組態數目之主動核心及支援內部網路之影像處理器