TW202112140A - 用於影像處理器之巨型輸入/輸出單元 - Google Patents
用於影像處理器之巨型輸入/輸出單元 Download PDFInfo
- Publication number
- TW202112140A TW202112140A TW109131928A TW109131928A TW202112140A TW 202112140 A TW202112140 A TW 202112140A TW 109131928 A TW109131928 A TW 109131928A TW 109131928 A TW109131928 A TW 109131928A TW 202112140 A TW202112140 A TW 202112140A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- image
- processor
- input
- reformatting
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
- G09G5/006—Details of the interface to the display terminal
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/02—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
- H04N1/32358—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/02—Handling of images in compressed format, e.g. JPEG, MPEG
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N2201/00—Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
- H04N2201/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
- H04N2201/3285—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter
- H04N2201/329—Storage of less than a complete document page or image frame
- H04N2201/3291—Storage of less than a complete document page or image frame of less than a complete line of data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Processing (AREA)
- Memory System (AREA)
Abstract
本發明闡述一種影像處理器。該影像處理器包含一I/O單元,該I/O單元用以自外部記憶體讀取輸入影像資料以用於由該影像處理器處理且將輸出影像資料自該影像處理器寫入至該外部記憶體中。該I/O單元包含多個邏輯通道單元。每一邏輯通道單元係用以在該外部記憶體與該影像處理器內之一各別產生或消耗組件之間形成一邏輯通道。每一邏輯通道單元經設計以利用重新格式化電路及定址電路。該定址電路係用以控制應用於該外部記憶體之定址方案及外部記憶體與該各別產生或消耗組件之間的影像資料之重新格式化。該重新格式化電路係用以執行該重新格式化。
Description
本發明領域一般而言係關於影像處理,且更具體而言,係關於一種用於一影像處理器之巨型I/O單元。
影像處理通常涉及處理組織成一陣列之像素值。此處,一空間組織之二維陣列擷取影像之二維性質(額外維度可包含時間(例如,二維影像之一序列)及資料類型(例如,色彩)。在一典型情景中,經陣列化像素值由一相機提供,該相機已產生一靜止影像或一圖框序列以擷取運動影像。傳統影像處理器通常落於兩個極端之任一側上。
一第一極端將影像處理任務作為在一個通用處理器或類通用處理器(例如,具有向量指令增強之一個通用處理器)上執行之軟體程式來執行。雖然第一極端通常提供一高度多功能應用軟體開發平臺,但該第一極端連同相關聯額外負擔(例如,指令提取及解碼、處置晶片上及晶片外資料、推測執行)一起使用較精細粒度資料結構最終導致在執行程式碼期間每資料單元消耗較大量之能量。
一第二相對極端將固定功能硬連線電路應用於大得多之資料區塊。對直接應用於經定製設計電路之較大(與較精細粒度相對照)資料區塊之使用大大減少每資料單元之功率消耗。然而,對經定製設計固定功能電路之使用一般而言導致處理器能夠執行之一組有限任務。如此,在第二極端中缺乏廣泛多功能程式化環境(其與第一極端相關聯)。
連同每資料單元之經改良功率效率一起提供高度多功能應用軟體開發機會之一技術平臺仍係一合意但缺失之解決方案。
闡述一種影像處理器。該影像處理器包含一I/O單元,該I/O單元用以自外部記憶體讀取輸入影像資料以用於由該影像處理器處理且將輸出影像資料自該影像處理器寫入至該外部記憶體中。該I/O單元包含多個邏輯通道單元。每一邏輯通道單元係用以在該外部記憶體與該影像處理器內之一各別產生或消耗組件之間形成一邏輯通道。每一邏輯通道單元經設計以利用重新格式化電路及定址電路。該定址電路係用以控制應用於該外部記憶體之定址方案及外部記憶體與該各別產生或消耗組件之間的影像資料之重新格式化。該重新格式化電路係用以執行該重新格式化。
本發明闡述一種設備。該設備包含用於達成至一影像處理器內之一消耗組件之一邏輯連接之構件。該設備亦包含用於自一影像資料圖框讀取一系列有限寬度影像區域之構件,該等影像區域中之每一者係根據一RGB格式而格式化。該設備亦包含用於將該系列有限寬度影像區域重新格式化成具有一相同色彩之影像資料區塊之構件。該設備亦包含用於將具有相同色彩之該等影像資料區塊轉送至該消耗組件之構件。
相關案例
本申請案主張2016年2月28日提出申請之美國臨時申請案第62/300,880號「Macro I/O Unit For Image Processor」之權益,該美國臨時申請案以其全文引用之方式併入。 i. 介紹
以下說明闡述關於一新影像處理技術平臺之眾多實施例,該新影像處理技術平臺提供使用較大資料區塊(例如,如下文進一步闡述之線群組及工作表)來提供經改良功率效率之一廣泛多功能應用軟體開發環境。 1.0 應用軟體開發環境 a. 核心之應用及結構
圖1展示一影像處理器技術平臺之一高層級視圖,該影像處理器技術平臺包含一虛擬影像處理環境101、實際影像處理硬體103及用於將針對虛擬處理環境101寫入之較高層級碼轉譯為實際硬體103實體上執行之目標碼之一編譯器102。如下文更詳細地闡述,虛擬處理環境101就可被開發之應用而言係廣泛多功能的且經裁適以易於對一應用之構成程序之可視化。在由開發者104完成程式碼開發努力後,編譯器102旋即將寫入於虛擬處理環境101內之碼轉譯成目標係針對實際硬體103之目標碼。
圖2a展示寫入於虛擬環境內之應用軟體可採用之結構及形式之一實例。如在圖2a中觀察到,可預期程式碼處理輸入影像資料201之一或多個圖框以實現對輸入影像資料201之某些總體變換。變換係利用程式碼202之一或多個核心之操作來實現,該一或多個核心以由開發者製訂之一經編排(orchestrated)序列對輸入影像資料進行操作。
舉例而言,如在圖2a中觀察到,總體變換係藉由首先利用一第一核心K1處理每一輸入影像而實現。然後由核心K2對由核心K1產生之輸出影像進行操作。然後由核心K3_1或K3_2對由核心K2產生之輸出影像中之每一者進行操作。然後由核心K4對由核心K3_1/K3_2產生之輸出影像進行操作。核心K3_1及K3_2可為經設計以藉由在K3級處施加並行處理而加速總體處理之相同核心,或可為不同核心(例如,核心K3_1對一第一特定類型之輸入影像進行操作且核心K3_2對一第二不同類型之輸入影像進行操作)。
如此,較大總體影像處理序列可採用一影像處理管線或一有向非循環圖(DAG)之形式且開發環境可經裝備以將被如此開發之程式碼之一表示實際上呈現給開發者。核心可由一開發者個別地開發及/或可由供應任何基礎技術(諸如實際信號處理器硬體及/或其一設計)之一實體提供及/或由一第三方(例如,針對開發環境而寫入之核心軟體之一供應商)提供。如此,預期一標稱開發環境將包含核心之一「庫」,開發者以各種方式自由「聯接(hook-up)」該「庫」以實現其較大開發努力之總體流程。預期係此一庫之部分之某些基本核心可包含用以提供以下基本影像處理任務中之任何一或多者之核心:迴旋、去雜訊、色彩空間轉換、邊緣及隅角偵測、銳利化、白平衡、伽馬(gamma)校正、色調映射、矩陣相乘、影像配準、金字塔(pyramid)建構、小波變換、逐區塊離散餘弦及傅立葉(Fourier)變換。
圖2b展示如可由一開發者設想之一核心203之結構之一例示性繪示。如在圖2b中觀察到,核心203可視為各自對一各別基礎處理器205 (其中每一處理器205指向一輸出陣列206中之一特定位置(諸如核心正產生之輸出影像中之一特定像素位置))進行操作之若干個並行程式碼執行緒(「執行緒」) 204。為簡單起見,僅在圖2b中展示三個處理器及對應執行緒。在各種實施例中,每個所繪示輸出陣列位置將具有其自身之專用處理器及對應執行緒。亦即,可針對輸出陣列中之每一像素分配一單獨處理器及執行緒。
如下文將更詳細地闡述,在各種實施例中,在實際基礎硬體中,一執行通路(lane)陣列及對應執行緒一致地操作(例如,以一類單指令多資料方式)以針對當前被處理之圖框之一「線群組」之一部分產生輸出影像資料。一線群組係一影像圖框之一連續可調大小之區段。在各種實施例中,開發者可意識到硬體對線群組進行操作,或開發環境可呈現其中針對(例如)輸出圖框中之每個像素(例如,由其自身之專用處理器及執行緒產生之一輸出圖框之每個像素)存在一單獨處理器及執行緒之一抽象。無論如何,在各種實施例中,開發者將核心理解為針對每一輸出像素包含一個別執行緒(無論輸出陣列是可視化的、是一整個輸出圖框還是其一區段)。
如下文將更詳細地闡述,在一實施例中,在虛擬環境中呈現給開發者之處理器205具有一指令集架構(ISA),該ISA不僅支援標準(例如,RISC)作業碼且亦包含准許開發者藉由正被執行之像素處理而易於可視化像素之經特殊格式化資料存取指令。結合傳統數學及程式控制作業碼之一整個ISA而易於定義/可視化任何輸入陣列位置之能力允許一極其多功能程式化環境,該極其多功能程式化環境基本上准許一應用程式開發者理想地定義將對任何大小之影像表面執行之任何所要功能。舉例而言,理想地,任何數學運算可容易地經程式化以應用於任何模板大小。
關於資料存取指令,在一實施例中,虛擬處理器之ISA (「虛擬ISA」)包含一特殊資料載入指令及一特殊資料儲存指令。資料載入指令能夠自影像資料之一輸入陣列內之任何位置讀取。資料儲存指令能夠寫入至影像資料之輸出陣列內之任何位置。該資料儲存指令允許易於使相同處理器之多個例項專用於不同輸出像素位置(每一處理器寫入至輸出陣列中之一不同像素)。如此,舉例而言,可使模板大小本身(例如,表達為像素之一寬度及像素之一高度)成為一易於可程式化之特徵。進一步簡化處理操作之可視化,其中特殊載入指令及特殊儲存指令中之每一者具有一特殊指令格式,藉此將目標陣列位置簡化地規定為X及Y座標。
無論如何,藉由針對輸出陣列中之多個位置中之每一者例示一單獨處理器,處理器可並行執行其各別執行緒使得(例如)同時產生針對輸出陣列中之所有位置之各別值。值得注意的是,諸多影像處理例程通常對相同輸出影像之不同像素執行相同操作。如此,在開發環境之一項實施例中,假定每一處理器係相同的且執行相同執行緒程式碼。因此,虛擬化環境可視為由(例如)各自鎖步地(in lock-step)執行相同碼之相同處理器之一個二維(2D)陣列組成之一種類型之2D SIMD處理器。
圖3展示針對一輸出陣列中之兩個不同像素位置處理相同碼之兩個虛擬處理器之處理環境之一較詳細實例。圖3展示對應於所產生之一輸出影像之一輸出陣列304。此處,一第一虛擬處理器正處理執行緒301之碼以在輸出陣列304之位置X1處產生一輸出值且一第二虛擬處理器正處理執行緒302之碼以在輸出陣列304之位置X2處產生一輸出值。再次,在各種實施例中,開發者將理解,針對輸出陣列304中之每一像素位置(為簡單起見,圖3僅展示像素位置中之兩者)存在一單獨處理器及執行緒。然而,在各種實施例中,開發者僅需要針對一個處理器及執行緒來開發碼(由於機器之類SIMD性質)。
如此項技術中已知,通常藉由處理一輸入陣列之包含並環繞對應輸出像素位置之像素而判定一輸出像素值。舉例而言,如自圖3可見,輸出陣列304之位置X1對應於輸入陣列303之位置E。將經處理以判定輸出值X1之輸入陣列303像素值之模板將因此對應於輸入值ABCDEFGHI。類似地,將經處理以判定輸出值X2之輸入陣列像素之模板將對應於輸入值DEFGHIJKL。
圖3展示針對可分別用於計算輸出值X1及X2之一對執行緒301、302之對應虛擬環境程式碼之一實例。在圖3之實例中,兩對碼皆係相同的且對九個輸入陣列值之一模板求平均以判定一對應輸出值。兩個執行緒之間的僅有差異係自輸入陣列被調用之變量及被寫入之輸出陣列之位置。具體而言,寫入至輸出位置X1之執行緒對模板ABCDEFGHI進行操作且寫入至輸出位置X2之執行緒對模板DEFGHIJKL進行操作。
如自來自該對執行緒301、302之各別程式碼可見,每一虛擬處理器至少包含內部暫存器R1及R2且至少支援以下指令:1)自輸入陣列至R1中之一載入指令;2)自輸入陣列至R2中之一載入指令;3)將R1及R2之內容相加且將結果置於R2中之一相加(ADD)指令;4)將R2內之值除以立即運算元9之一相除(DIV)指令;及5)將儲存R2之內容至執行緒專用之輸出陣列位置中之一儲存指令。再次,雖然在圖3中繪示僅兩個輸出陣列位置及僅兩個執行緒以及對應處理器,但可想到,輸出陣列中之每個位置可被指派有一虛擬處理器及執行此等功能之對應執行緒。在各種實施例中,符合處理環境之類SIMD性質,多個執行緒彼此隔離而執行。亦即,在虛擬處理器之間不存在執行緒至執行緒通信(防止一個SIMD通道交叉進入另一SIMD通道中)。 b. 虛擬處理器記憶體模型
在各種實施例中,虛擬處理器之一相關特徵係其記憶體模型。如此項技術中所理解,一處理器自記憶體讀取資料、對彼資料進行操作且將新資料寫入回至記憶體中。一記憶體模型係一處理器關於在記憶體中組織資料之方式所具有的視角或視圖。在一實施例中,虛擬處理器之記憶體模型包含輸入陣列區及輸出陣列區兩者。用於執行緒之輸入像素值儲存於輸入陣列區中且由執行緒產生之輸出像素值儲存於輸出陣列區中。
在一實施例中,使用一新穎記憶體定址方案來定義將自虛擬處理器之記憶體模型之一輸入陣列部分調用哪些特定輸入值。具體而言,使用以X、Y座標而非一傳統線性記憶體位址來定義所要輸入資料之一「位置相對」定址方案。如此,虛擬處理器之ISA之載入指令包含用一X分量及一Y分量來識別輸入陣列內之一特定記憶體位置之一指令格式。如此,使用一個二維座標系統來定址記憶體以獲得自輸入陣列讀取之輸入值。
使用一位置相對記憶體定址方法准許一虛擬處理器對其進行操作之一影像之區可更容易地被一開發者識別。如上文所提及,結合傳統數學及程式控制作業碼之一整個ISA而易於定義/可視化任何輸入陣列位置之能力允許一極其多功能程式化環境,該極其多功能程式化環境基本上准許一應用程式開發者理想地容易定義將對任何大小之影像表面執行之任何所要功能。下文進一步較詳細地闡述針對採取一位置相對定址方案之指令之各種指令格式實施例以及所支援ISA之其他特徵之實施例。
輸出陣列含有執行緒負責產生之輸出影像資料。輸出影像資料可為呈現於遵循總體影像處理序列之一顯示器上之最終影像資料(諸如實際影像資料),或可為總體影像處理序列之一後續核心用作其輸入影像資料資訊之中間影像資料。再次,通常虛擬處理器並不競爭相同輸出資料項,此乃因該等虛擬處理器在一同一循環期間寫入至輸出影像資料之不同像素位置。
在一實施例中,位置相對定址方案亦用於寫入至輸出陣列。如此,針對每一虛擬處理器之ISA包含一儲存指令,該儲存指令之指令格式將記憶體中之一目標寫入位置定義為一個二維X、Y座標而非一傳統隨機存取記憶體位址。 2.0 硬體架構實施例 a. 影像處理器硬體架構及操作
圖4展示以硬體實施之一影像處理器之一架構400之一實施例。舉例而言,影像處理器可為一編譯器之目標,該編譯器將針對一經模擬環境內之一虛擬處理器寫入之程式碼轉換成由硬體處理器實際上執行之程式碼。如在圖4中觀察到,架構400包含透過一網路404 (例如,包含一晶片上交換網路、一晶片上環形網路或其他種類之網路之一晶片上網路(NOC))互連至複數個模板處理器單元402_1至402_N及對應工作表產生器單元403_1至403_N之複數個線緩衝器單元401_1至401_M。在一實施例中,任何線緩衝器單元可透過網路404連接至任何工作表產生器及對應模板處理器。
在一實施例中,程式碼經編譯且經載入至一對應模板處理器402上以執行由一軟體開發者較早定義之影像處理操作(例如取決於設計及實施方案,程式碼亦可經載入至模板處理器之相關聯工作表產生器403上)。在至少某些例項中,可藉由將針對一第一管線級之一第一核心程式載入至一第一模板處理器402_1中、將針對一第二管線級之一第二核心程式載入至一第二模板處理器402_2中等而實現一影像處理管線,其中第一核心執行管線之第一級之功能、第二核心執行管線之第二級之功能等,且設置額外控制流程方法以將輸出影像資料自管線之一個級傳遞至管線之下一級。
在其他組態中,影像處理器可實現為具有操作相同核心程式碼之兩個或兩個以上模板處理器402_1、402_2之一平行機器。舉例而言,可藉由跨越多個模板處理器(該多個模板處理器中之每一者執行相同功能)擴散圖框而處理一高度密集且高資料速率影像資料串流。
在仍其他組態中,可藉由以各別模板處理器自身之各別程式碼核心來組態該等各別模板處理器且將適當控制流程勾點(hook)組態至硬體中而將核心之基本上任何DAG載入至硬體處理器上以將輸出影像自DAG設計中之一個核心引導至一下一核心之輸入。
作為一個一般流程,影像資料圖框由一巨型I/O單元405接收且在一逐圖框基礎上傳遞至線緩衝器單元401中之一或多者。一特定線緩衝器單元將其影像資料圖框剖析成稱為一「線群組」之一較小影像資料區,且然後透過網路404將線群組傳遞至一特定工作表產生器。舉例而言,一完整或「全」單一線群組可由一圖框之多個連續完整列或行(為簡單起見,本說明書將主要係指連續列)之資料組成。工作表產生器進一步將影像資料之線群組剖析成稱為一「工作表」之一較小影像資料區,且將工作表呈現給其對應模板處理器。
在一影像處理管線或一DAG流程具有一單個輸入之情形中,一般而言將輸入圖框引導至同一線緩衝器單元401_1,該線緩衝器單元將影像資料剖析成線群組且將線群組引導至工作表產生器403_1,該工作表產生器之對應模板處理器402_1執行管線/DAG中之第一核心之碼。在完成藉由模板處理器402_1對其所處理之線群組之操作後,工作表產生器403_1旋即將輸出線群組發送至一「下游」線緩衝器單元401_2 (在某些使用情形中,可將輸出線群組發送回至已較早發送輸入線群組之同一線緩衝器單元401_1)。
表示管線/DAG中的對其自身之各別其他工作表產生器及模板處理器(例如,工作表產生器403_2及模板處理器402_2)進行執行之下一級/操作之一或多個「消費者」核心然後自下游線緩衝器單元401_2接收由第一模板處理器402_1產生之影像資料。以此方式,對一第一模板處理器進行操作之一「生產者」核心使其輸出資料轉送至對一第二模板處理器進行操作之一「消費者」核心,其中消費者核心在生產者核心與總體管線或DAG之設計一致之後執行下一組任務。
一模板處理器402經設計以對影像資料之多個重疊模板同時進行操作。多個重疊模板及模板處理器之內部硬體處理能力有效地判定一工作表之大小。此處,在一模板處理器402內,執行通路陣列一致地操作以同時處理由多個重疊模板覆蓋之影像資料表面區域。
如下文將更詳細地闡述,在各種實施例中,將影像資料之工作表載入至模板處理器402內之一個二維暫存器陣列結構中。據信使用工作表及二維暫存器陣列結構藉由將大量資料移動至大量暫存器空間中作為(例如)一單個載入操作(其中由一執行通路陣列緊接其後對資料直接執行處理任務)而有效地提供功率消耗改良。另外,使用一執行通路陣列及對應暫存器陣列提供係易於可程式化/可組態之不同模板大小。
圖5a至圖5e以一高層級圖解說明一線緩衝器單元401之剖析活動、一工作表產生器單元403之較精細粒度剖析活動以及耦合至工作表產生器單元403之模板處理器402之模板處理活動之實施例。
圖5a繪示影像資料501之一輸入圖框之一實施例。圖5a亦繪示一模板處理器經設計以對其進行操作之三個重疊模板502 (各自具有3像素x3像素之一尺寸)之一輪廓。每一模板針對其分別產生輸出影像資料之輸出像素以實心黑色突出顯示。為簡單起見,將三個重疊模板502繪示為僅在垂直方向上重疊。適當地認識到,事實上一模板處理器可經設計以在垂直方向及水平方向兩者上具有重疊模板。
由於模板處理器內之垂直重疊模板502,如在圖5a中觀察到,因此在圖框內存在一單個模板處理器可對其進行操作之一寬帶之影像資料。如下文將更詳細地論述,在一實施例中,模板處理器在其重疊模板內跨越影像資料以一自左至右方式處理資料(且然後以自頂部至底部次序針對下一組線進行重複)。因此,隨著模板處理器以其操作繼續前進,實心黑色輸出像素區塊之數目將水平地向右增長。如上文所論述,一線緩衝器單元401負責剖析來自一傳入圖框之輸入影像資料之一線群組,該線群組足以使模板處理器對其進行操作達一經擴展數目個即將來臨之循環。將一線群組之一例示性繪示圖解說明為一陰影區503。在一實施例中,如下文進一步所闡述,線緩衝器單元401可領會針對將一線群組發送至一工作表產生器/自該工作表產生器接收該線群組之不同動態。舉例而言,根據一個模式(稱為「全群組」),在一線緩衝器單元與一工作表產生器之間傳遞完整全寬度線之影像資料。根據一第二模式(稱為「虛高」),最初以全寬度列之一子集傳遞一線群組。然後以較小(小於全寬度)片段順序地傳遞其餘列。
在輸入影像資料之線群組503已由線緩衝器單元定義且傳遞至工作表產生器單元之情況下,工作表產生器單元將線群組進一步剖析成較精確地適於模板處理器之硬體限制之較精細工作表。更具體而言,如下文將進一步較詳細地闡述,在一實施例中,每一模板處理器由一個二維移位暫存器陣列組成。二維移位暫存器陣列將影像資料基本上移位於一執行通路陣列「下方」,其中移位之圖案致使每一執行通路對其自身之各別模板內之資料進行操作(亦即,每一執行通路對其自身之資訊模板進行處理以針對彼模板產生一輸出)。在一實施例中,工作表係「填充」或以其他方式載入至二維移位暫存器陣列中之輸入影像資料之表面區域。
因此,如在圖5b中觀察到,工作表產生器自線群組503剖析一初始工作表504且將該初始工作表提供至模板處理器(此處,資料之工作表對應於一般而言由元件符號504識別之陰影區)。如在圖5c及圖5d中觀察到,模板處理器藉由在輸入影像資料之工作表上方以一自左至右方式有效地移動重疊模板502而對該工作表進行操作。如圖5d中,可針對其而依據工作表內之資料計算一輸出值之像素數目耗盡(無其他像素位置可具有依據工作表內之資訊判定之一輸出值)。為簡單起見,已忽略影像之邊界區。
如在圖5e中觀察到,工作表產生器然後提供一下一工作表505以供模板處理器繼續操作。注意,在模板開始對下一工作表進行操作時該等模板之初始位置係自第一工作表上之耗盡點(如圖5d中先前所繪示)至右側之下一進展。在具有新工作表505之情況下,模板將在模板處理器對新工作表進行操作時以與處理第一工作表相同之方式簡單地繼續移動至右側。
注意,由於模板之環繞一輸出像素位置之邊界區,因此存在第一工作表504之資料與第二工作表505之資料之間的某些重疊。可藉由工作表產生器重新傳輸重疊資料兩次而簡單地處置重疊。在替代實施方案中,為將一下一工作表饋送至模板處理器,工作表產生器可僅繼續將新資料發送至模板處理器且模板處理器再使用來自先前工作表之重疊資料。 b. 模板處理器設計及操作
圖6展示一模板處理器架構600之一實施例。如在圖6中觀察到,模板處理器包含一資料計算單元601、一純量處理器602及相關聯記憶體603以及一I/O單元604。資料計算單元601包含一執行通路陣列605、一個二維移位陣列結構606及與陣列之特定列或行相關聯之單獨隨機存取記憶體607。
I/O單元604負責將自工作表產生器接收之資料之「輸入」工作表載入至資料計算單元601中且將來自模板處理器之資料之「輸出」工作表儲存至工作表產生器中。在一實施例中,將工作表資料載入至資料計算單元601中使得將一所接收工作表剖析成影像資料之列/行且將影像資料之列/行載入至二維移位暫存器結構606中或執行通路陣列之列/行之各別隨機存取記憶體607中成為必要(下文更詳細地闡述)。若最初將工作表載入至記憶體607中,則執行通路陣列605內之個別執行通路可然後在適當之情況下(例如,根據恰好在對工作表之資料進行操作之前的一載入指令)將工作表資料自隨機存取記憶體607載入至二維移位暫存器結構606中。在完成將資料之一工作表載入至暫存器結構606中(無論是直接自一工作表產生器或是自記憶體607)後,執行通路陣列605之執行通路旋即對資料進行操作且將所完成資料作為一工作表最終直接「寫回」至工作表產生器或寫回至隨機存取記憶體607中。在寫回至隨機存取記憶體607中之情況下,I/O單元604自隨機存取記憶體607提取資料以形成然後被轉送至工作表產生器之一輸出工作表。
純量處理器602包含一程式控制器609,該程式控制器自純量記憶體603讀取模板處理器之程式碼之指令且將指令發佈至執行通路陣列605中之執行通路。在一實施例中,將一單個相同指令廣播至陣列605內之所有執行通路以自資料計算單元601實現一類SIMD行為。在一實施例中,自純量記憶體603讀取且發佈至執行通路陣列605之執行通路之指令之指令格式包含每指令包含一個以上作業碼之一極長指令字(VLIW)類型格式。在另一實施例中,VLIW格式包含引導由每一執行通路之ALU執行之一數學函數之一ALU作業碼(如下文所闡述,其在一實施例中可規定一個以上傳統ALU操作)及一記憶體作業碼(其針對一特定執行通路或一組執行通路引導一記憶體操作)兩者。
術語「執行通路」係指能夠執行一指令之一組一或多個執行單元(例如,可執行一指令之邏輯電路)。然而在各種實施例中,一執行通路可除了僅執行單元以外亦包含較類處理器功能性。舉例而言,除一或多個執行單元之外,一執行通路亦可包含解碼一所接收指令之邏輯電路,或在較類MIMD設計之情形中包含提取及解碼一指令之邏輯電路。關於類MIMD方法,雖然已在本文中大部分闡述一集中式程式控制方法,但可在各種替代實施例(例如,在陣列605之每一執行通路內包含程式碼及一程式控制器)中實施一較散佈式方法。
一執行通路陣列605、程式控制器609及二維移位暫存器結構606之組合提供一廣泛可調適/可組態硬體平臺以用於一寬廣範圍之可程式化功能。舉例而言,應用軟體開發者能夠程式化具有一寬廣範圍之不同功能能力以及尺寸(例如,模板大小)之核心,假定個別執行通路能夠執行各種各樣之功能且能夠容易地存取接近於任何輸出陣列位置之輸入影像資料。
除充當用於由執行通路陣列605進行操作之影像資料之一資料儲存器之外,隨機存取記憶體607亦可保持一或多個查找表。在各種實施例中,亦可在純量記憶體603內例示一或多個純量查找表。
一純量查找涉及將來自相同索引、來自相同查找表之相同資料值傳遞至執行通路陣列605內之執行通路中之每一者。在各種實施例中,上文所闡述之VLIW指令格式經擴展以亦包含將由純量處理器執行之一查找操作引導至一純量查找表中之一純量作業碼。經規定與作業碼一起使用之索引可為一立即運算元或自某些其他資料儲存位置提取。無論如何,在一實施例中,自純量記憶體內之一純量查找表之一查找基本上涉及在同一時脈循環期間將相同資料值廣播至執行通路陣列605內之所有執行通路。 3.0 線緩衝器單元實施例 a. 線緩衝器單元概述
自上文章節1.0中之論述回顧,在各種實施例中,針對硬體平臺寫入之程式碼係以一唯一虛擬碼寫入,該唯一虛擬碼包含已載入並儲存指令之一指令集,該等指令之指令格式將輸入及輸出陣列位置識別為(例如) X、Y座標。在各種實施方案中,X、Y座標資訊可實際上經程式化至硬體平臺中且由該硬體平臺之組件中之各種組件辨識/理解。舉例而言,此與將X、Y座標(例如,在編譯器內)轉譯成不同資訊脫離。舉例而言,在模板處理器內具有二維移位暫存器結構之情形中,將X、Y座標資訊轉譯成暫存器移位移動。相比而言,硬體平臺之其他部分可具體而言接收並領會最初在較高虛擬碼層級處表達之X、Y座標資訊。
如在圖7中觀察到,如章節1.0中所闡述,一程式碼開發者在虛擬碼層級710處將資料位置表達為具有特殊指令格式之X、Y座標。在編譯級期間,將虛擬碼轉譯成實際上由硬體處理之程式碼(目標碼)及載入至硬體之組態(例如,暫存器)空間中之對應組態資訊。如在圖7中觀察到,在一實施例中,將針對一特定核心之目標碼載入至模板處理器之純量處理器705之程式空間中。
作為組態程序之部分,執行於純量處理器705上之組態軟體將適當組態資訊711、712載入至工作表產生器單元703 (其耦合至模板處理器702)及線緩衝器單元701 (其將產生供模板處理器702進行操作之新工作表或接收由模板處理器702產生之所處理工作表)兩者中。此處,一般來說,仍可就一總體影像之X、Y座標來預期工作表。亦即,一旦定義一影像或圖框(例如,就每列之像素數目、列數目、每行之像素數目及行數目而言),便仍可用X、Y座標指代影像之任何部分或位置。
如此,在各種實施例中,工作表產生器單元703及線緩衝器單元701中之任一者或兩者在其各別組態空間706、707 (其建立一資訊平臺,自該資訊平臺以X、Y座標識別一影像或圖框之特定位置及/或區(例如,線群組、工作表))內以資訊711、712組態。在各種實施方案/使用中,X、Y座標可為與在虛擬碼層級處所表達相同之X、Y座標。
此資訊之實例包含:例如,線緩衝器單元中之作用線群組數目、每一線群組之影像大小(例如,作為一組四個X、Y座標(每一拐角一個)或一對X、Y座標(一下部較近拐角一個且一上部較遠拐角一個))、絕對影像寬度及影像高度、模板大小(表達為X、Y值,其定義模板處理器之一單個模板及/或重疊模板之區域之大小)、工作表及/或線群組大小(例如,以與一影像大小相同之單位來規定但具有較小尺寸)等。另外,線緩衝器單元701至少可以額外組態資訊(諸如對由線緩衝器單元701管理之線群組寫入之生產者核心之數目及讀取該等線群組之消費者核心之數目)來程式化。與影像資料相關聯之通道數目及/或尺寸亦通常作為組態資訊而包含。
圖8繪示使用X、Y座標來定義一影像內之線群組(僅作為一項實例)。此處,在一影像801內可觀察到N個線群組802_1、802_2、…、802_N。如自圖8可見,可藉由參考影像內之定義(例如)一線群組之拐角點中之一或多者之X、Y座標而容易地定義每一線群組。如此,在各種實施例中,一線群組之名稱或用於定義一特定線群組之其他資料結構可包含與線群組相關聯以便特定來說識別該線群組之X、Y座標位置。
短暫地返回參考圖7,注意圖7展示在運行時間期間,一工作表產生器703可藉由(例如)包含定義所要資料區之X、Y座標資訊而向線緩衝器單元701請求一「下一」線群組(或一線群組之部分)。圖8展示僅由完整影像資料列組成之標稱「全寬度」線群組。在下文進一步較詳細地闡述之稱為「虛高」之一替代組態中,線緩衝器單元701最初僅傳遞一線群組之一第一上部部分作為全寬度影像資料列。然後具體而言由工作表產生器以小於一全寬度列且被單獨請求之連續組塊來請求線群組之後續下部列。如此,由工作表產生器做出多個請求以便獲得全線群組。此處,每一此請求可藉由可歸於下一下部部分之X、Y座標而定義一下一下部部分。
圖9a至圖9c演示一線緩衝器單元實施例900之各種特徵。如在圖9a中觀察到,一線緩衝器單元包含其中儲存有線群組903_1至903_N之記憶體902 (例如,靜態或動態隨機存取記憶體(SRAM或DRAM))。圖9a展示針對記憶體902內之一特定影像/圖框產生並消耗線群組903_1至903_N之各種核心之間的活動。
如在圖9a中觀察到,一生產者核心K1在單獨時間執行個體P1、P2至PN內將新線群組發送至記憶體902。生產者核心K1在產生資料之新工作表之一模板處理器上執行。耦合至模板處理器之工作表產生器累積工作表以形成線群組且將該等線群組轉送至記憶體902。
亦如圖9a中所繪示,存在對由生產者核心K1產生之線群組903_1至903_N進行操作之兩個消費者核心K2、K3。此處,消費者核心K2及K3分別在時間C21及C31處接收第一線群組903_1。明顯地,時間C21及C31在時間P1之後發生。其他限制可不存在。舉例而言,時間C21及/或C31可在時間P2至PN中之任一者之前或之後發生。此處,針對核心K2及K3之各別工作表產生器在對於其各別核心係適當之一時間處請求一下一線群組。若核心K2、K3中之任一者在時間P1之前請求線群組903_1,則該請求閒置直至在線群組903_1實際上寫入至記憶體902中之後為止。在諸多實施方案中,一生產者核心對不同於一消費者核心之一模板處理器進行操作。
可想到,自核心K2及K3中之任一者或兩者對所有線群組903_1至903_N之請求可在時間P1之前到達。因此,線群組可由消費者核心在任何時間處進行請求。然而,在消費者核心請求線群組時,該等線群組係在生產者核心K1可產生線群組之速率之內被轉送至該等消費者核心。在各種實施例中,消費者核心依序請求線群組且同樣依序接收該等線群組(核心K2依序在時間C22至C2N處接收線群組903_2至903_N)。僅為簡單起見,針對一特定線群組繪示一個生產者核心。可想到,各種實施例可經設計以准許不同生產者寫入至一相同線群組(例如,其中直至在所有生產者已寫入至線群組之後才准許對消費者服務)。
在其中不存在生產者核心(由於消費者核心係處理器之DAG處理流程中之第一核心)之情形中,可將影像資料之圖框傳送至記憶體902中(例如,經由直接記憶體存取(DMA)或自一相機)且剖析成線群組。在其中不存在消費者核心(由於生產者核心係處理器之總體程式流程之最後核心)之情形中,可將所得線群組組合以形成輸出圖框。
圖9b展示一整個線緩衝器單元900之一較詳細實施例。為論述起見,將圖9a之活動疊加於圖9b之線緩衝器單元900上。如圖9b中可見,一線緩衝器單元900包含耦合至線緩衝器單元電路901之記憶體902。舉例而言,線緩衝器單元電路901可以專用邏輯電路來建構。在線緩衝器單元電路901內,針對記憶體902內之每一線群組903_1至903_N保留一線緩衝器介面單元904_1至904_N。在各種實施例中,存在固定數目個線緩衝器介面單元904_1至904_N,該固定數目個線緩衝器介面單元對一線緩衝器單元可在任何時刻管理之線群組數目設定一上限(若少於N個線群組為作用的,則在任何時間啟動且使用對應較小數目個線緩衝器單元介面)。
如圖9b中所繪示,在線緩衝器單元電路901內具有一總數目N個線緩衝器介面單元904之情況下,線緩衝器單元900處置最大數目個線群組。另外,在具有一最大所准許線群組大小(其中線群組大小係一可組態參數)之情況下,可判定記憶體902之一近似大小(當然,為允許硬體效率,可以不同時准許N個最大大小之線群組為代價而例示一較小記憶體佔用面積)。
每一線緩衝器介面單元904_1至904_N負責處置對其已被指派以處置的一特定線群組之生產者及消費者請求。舉例而言,線緩衝器介面單元904_1處置來自生產者K1在時間P1處之請求以儲存線群組903_1以及處置來自消費者核心K2及K3之對線群組903_1之請求。回應於前者,線緩衝器介面單元904_1將線群組903_1寫入至記憶體902中。回應於後者,線緩衝器介面單元904_1自記憶體902執行對線群組903_1之各別讀取且分別在時間C21及C31處將線群組903_1轉送至消費者K2及K3。
在一線群組之所有消費者已被轉送其線群組之複本之後,線緩衝器介面單元「自由」被指派至另一線群組。舉例而言,若線群組903_1表示一圖框序列之一第一影像圖框內之第一線群組,則在線群組903_1已在時間C21及C31處被轉送至消費者K2及K3之後,線緩衝器介面單元904_1可接下來經指派以處置圖框序列中之下一第二影像圖框內之第一線群組。以此方式,線緩衝器單元電路901可視為具有線緩衝器介面單元904之一「集區(pool)」,其中每一介面單元被指派有一新線群組以進行管理(在該新線群組之緊接在前之線群組被遞送至其最後消費者之後)。因此,存在介面單元之一循環(rotation),此乃因該等介面單元重複地進入緩衝器介面單元(其已為其最後消費者服務且正等待其下一線群組)之一「自由集區」且自該「自由集區」移除。
圖9c更詳細地圖解說明該循環之一實施例。如在圖9c中觀察到,自線緩衝器單元電路內之線緩衝器介面單元之一自由集區選擇一可用線緩衝器介面單元910。然後以適當組態資訊(例如,新線群組之X、Y位置資訊或一線性記憶體位址等效物)組態線緩衝器介面單元911。此處,在圖9b中注意,每一線緩衝器介面單元可包含其中保存此組態資訊之組態暫存器空間905。
線緩衝器介面單元然後繼續處置對新指派之線群組之生產者及消費者請求912。在最後生產者已寫入至線群組(在各種實施例中,每線群組僅存在一個生產者)之後且在已給最後消費者提供線群組之已被該線群組之生產者寫入之版本之後),使線緩衝器介面單元返回至自由集區且程序針對一下一線群組而重複910。為說明方便起見,未在圖9b中繪示監視圖9c之控制流程之線緩衝器單元電路901內之控制邏輯電路。 b. 可程式化暫存器空間實施例
關於被提供至一線緩衝器介面單元作為一下一線群組之指派之部分之經更新組態資訊911,在一標稱情形中,線緩衝器單元900自身處置(例如)對一組固定一或多個消費者進行饋送之僅一個固定生產者之一靜態配置。在此情形中,主要組態資訊(例如,線群組大小、消費者數目等)亦傾向於係靜態的且將不會自線群組至線群組改變。而是,被提供至一線緩衝器介面單元之新組態資訊主要識別新線群組(例如,線群組在記憶體內之位置等)。然而,較複雜潛在配置/設計係可能的。下文緊接更詳細地闡述此等較複雜潛在配置/設計中之某些較複雜潛在配置/設計。
圖9d繪示一線緩衝器介面單元之暫存器空間之內容(例如,圖9b之暫存器空間905_1之內容)之一實施例。下文緊接進行對暫存器欄位中之某些暫存器欄位之一說明。
LB_Enable欄位921基本上啟用一線緩衝器介面單元且被「設定」為自自由集區取得線緩衝器介面單元之程序之部分。Num_Channels欄位922定義線群組之影像資料內之通道數目。在一實施例中,Num_Channels欄位922可用於判定每線群組之資料總量。舉例而言,一視訊串流通常包含紅色(R)像素之一圖框序列、藍色(B)像素之一圖框序列及綠色(G)像素之一圖框序列。因此,針對任何線群組,實際上存在有資訊價值之三個線群組(R、G及B)。
Num_Consumers欄位923闡述將請求線群組之消費者數目。在一實施例中,在已遞送一線群組執行個體達等於Num_Consumers欄位923中之值之次數之後,將使線緩衝器介面單元進入至自由集區。
Row_Width欄位924定義一全線群組之寬度(例如,以像素數目)。注意,可將Row_Width 924值表達為由編譯器提供之一X座標值。FB_Rows欄位926定義一全線群組之高度(例如,以像素數目)。注意,可將FB_Rows欄位926表達為由編譯器提供之一Y座標值。
FB_Base_Address欄位930定義線群組在線緩衝器單元記憶體中之位置。在一第一操作模式(稱為「全」線群組模式)中,一全大小之線群組在記憶體中存取(線群組由於含有其各別資料之全量而自生產者被接收且被遞送至消費者)。在全線群組模式中,Num_Channels欄位922、Row_Width欄位924及FB_Rows欄位926可與FB_Address欄位930一起使用以判定將應用於記憶體以完全存取一全線群組的位址之範圍。另外,此等相同參數可用於將來自已請求線群組(以X、Y座標)之一工作表產生器之一請求「轉譯」成一線性記憶體位址。
VB_Enable欄位925、VB_Rows欄位927、VB_Cols欄位928、Num_Reuse_Rows欄位929及VB_Base_Address欄位931用於下文進一步詳細闡述之另一操作模式(稱為「虛高」線群組模式)中。
然而圖9d顯示針對一單個線緩衝器介面單元之組態暫存器空間905,相比而言,圖9e展示線緩衝器單元電路901之作為一整體之全域組態暫存器空間907之內容的一實施例。然而圖9d之每線緩衝器介面單元暫存器空間集中於一特定線群組,相比而言,圖9e之全域暫存器空間907集中於理解對來自一相同影像之不同線群組之剖析以及係與影像之處理相關聯之生產者/消費者組合特有之其他資訊。
如在圖9e中觀察到,全域暫存器空間之一實施例包含針對一特定影像之通道數目932及消費者數目933。為簡單起見,圖9e之暫存器空間僅預期具有一組生產者及消費者之一個影像(例如,僅一單個視訊串流及一DAG中之一單個點)。可想到,圖9e之暫存器空間之多個例項可經分配以准許線緩衝器單元電路有效地多工平行處理(multi-task)。
多工平行處理之一第一形式係在實施於影像處理器上之一DAG或軟體管線內。此處,相同線緩衝器單元可經組態以處置針對DAG內之兩個不同節點或針對管線之兩個不同級之線分組(亦即,一單個線緩衝器單元可支援一個以上模板處理器)。不同節點/級可易於具有不同消費者數目但在諸多情形中可能具有相同影像及模板大小特性。多工平行處理之第二形式係跨越實施於相同影像處理器硬體上之多個不同DAG及/或多個不同管線。舉例而言,具有四個模板處理器之一影像處理器可同時執行兩個完全不同兩級管線,該兩個完全不同兩級管線分別處理具有完全不同模板尺寸之完全不同影像大小。
返回至圖9e之特定實施例,注意一DAG中或管線級之間的任何特定節點可在一高層級處由影像中之通道數目、影像大小、可適用模板之尺寸及線群組之消費者數目表徵(圖9e再次假定每線群組一個生產者但可想到,一個以上生產者可寫入至一單個線群組,在此情形中圖9e之全域暫存器空間將亦包含生產者數目之一欄位)。Num_Channels欄位932及Num_Consumers欄位933與圖9c之對應欄位922、923基本上相同。
Image_Size欄位934及Stencil_Dimension欄位935基本上闡述將被處理之影像之尺寸及將對分別自影像切出之線群組進行操作之模板之尺寸。注意,欄位934、935兩者可就X、Y座標值來表達且可自編譯器提供。另外,在一實施例中,線緩衝器電路單元內之控制邏輯電路(圖9b中未展示)使用影像Image_Size欄位934及Stencil_Dimension欄位935來判定在一線緩衝器介面單元經指派以處置來自全域資訊所關於的生產者/消費者組之線群組時載入至該線緩衝器介面單元之暫存器空間中之Row_Width 924、FB_Rows 926及FB_Base_Address值930。在一替代或進一步實施例中,將影像大小表達為可具有其自身之單獨可定址暫存器空間之兩個單獨值:image_width及image_height。同樣,可將模板大小表達為可具有其自身之單獨可定址暫存器空間之兩個單獨值:stencil_width及stencil_height。
Row_Width 924可自Image_Size 934資訊直接獲得。舉例而言,若將Image_Size表達為在自影像原點之最遠像素(在原點位於左下方拐角處之情況下為右上方拐角)處之X、Y座標對,則可將Row_Width判定為X座標值。
可自Image_Size欄位934及Stencil_Dimension欄位935判定FB_Rows欄位926及FB_Base_Address欄位930。此處,具體而言,可自影像之高度(Image_Size 934之Y座標值)及模板高度(Stencil_Dimension 935之Y座標值)計算每一線群組之高度(FB_Rows 926)。一旦已知線群組之高度,便亦可判定將自影像剖析之線群組數目及針對記憶體中之每一此線群組之開始線性位址(FB_Base_Address 930)。
因此,在一實施例中,當一線緩衝器單元經指派以針對一特定生產者/消費者組合(其全域暫存器空間由圖9e之暫存器欄位表徵)處置一線群組時,上文所闡述判定被即時(on the fly)計算且FB_Width 924、FB_Rows 926、Base_Address 930中之每一者連同直接進行複製之Num_Channels 922及Num_Consumers 923一起被載入至線緩衝器介面單元之特定暫存器空間中。因此,邏輯電路及資料路徑可存在於全域暫存器空間與線緩衝器介面單元暫存器空間之每一例項之間以執行此等判定及資料傳送。
在一替代實施例中,編譯器執行此等計算中之每一者,藉此總共消除諸多(若非全部)全域暫存器空間。此處,舉例而言,編譯器可針對每一線群組判定Base_Address值且將該等值載入於線緩衝器電路單元內之一查找表中。在該等值之對應線群組經組態時自查找表調用該等值且將該等值載入至一線緩衝器介面單元之暫存器空間中。亦可實施此兩個極端(硬體即時對靜態編譯器判定)之間的不同組合。
雖然以上實施例強調將組態資訊保存於暫存器電路(「暫存器空間」)中,但在其他或經組合實施例中,可將組態資訊保存於記憶體(諸如緩衝器單元記憶體)或其他記憶體或者資訊保存電路中。 c. 全線群組模式對虛高模式
以上論述已大部分針對於其中線群組作為完整的整個線群組而被參考且傳遞於工作表產生器與線緩衝器單元之間的「全線群組」模式。在另一模式(稱為「虛高」)中,線群組作為一全寬度上部部分及在單獨離散分段中完成之一下部部分而被參考且傳遞於工作表產生器之間。
圖10a及圖10b展示一例示性虛高模式序列之一繪示。如在圖10a中觀察到,一線群組最初形成為全寬度列之一上部部分1003及僅具有一第一較短寬度分段之一第一下部部分1004_1。一線群組之初始形成可藉由一產生工作表產生器而提供至一線緩衝器單元或可藉由一線緩衝器單元而提供至一消耗工作表產生器。
在一生產者之情形中,在模板1002已對下部部分1004_1進行處理(在圖10b中觀察到近似模板定位)之後形成線群組。在生產者模板處理器已對下部部分1004_1進行處理之後,模板繼續水平地前進至右側。最終該等模板將對一下一下部部分1004_2進行處理。在完成下一下部部分1004_2後,下一下部部分1004_2旋即自工作表產生器發送至線緩衝器單元,該線緩衝器單元將該下一下部部分以正確位置(例如,「緊挨著」第一下部部分1004_1)儲存於記憶體中。程序繼續直至將線群組完全寫入至線緩衝器單元記憶體中為止。
在消費者之情形中,線群組最初被遞送至工作表產生器,如在圖10a中所觀察到。模板處理器對線群組之第一部分1004_1進行操作。在接近完成對第一部分1004_1之處理後,工作表產生器將旋即請求下一下部部分1004_2,該下一下部部分自記憶體提取且由線緩衝器單元遞送。程序繼續直至完全處理線群組為止。
注意,針對生產者及消費者兩者,下部部分具體而言由工作表產生器識別。亦即,在生產者情形及消費者情形兩者中,下部部分1004_2具體而言由工作表產生器識別且線緩衝器單元具體而言存取記憶體以儲存/提取下部部分1004_2。在一實施例中,工作表產生器透過基於由編譯器提供之資訊而預期之X、Y座標值(舉例而言,下部部分1004_2之任何拐角、下部部分1004_2之全部四個拐角、僅一X座標值等)識別下部部分1004_2。 4.0 巨型 I/O 單元實施例
自圖4之論述回顧,為將輸入影像資料饋送至影像處理器中,一巨型I/O單元405將影像資料圖框傳遞至一線緩衝器單元401。同樣,為將所處理影像資料自影像處理器提供至正利用影像處理器之任何系統資源(例如,一應用軟體程式、一顯示器、一相機等),將所處理輸出影像資料圖框自一線緩衝器單元401傳送至巨型I/O單元405。
圖11a更詳細地展示巨型I/O單元1105之一實施例。如在圖11a中觀察到,根據一項實施例,巨型I/O單元1105耦合至在影像處理器1101外部之記憶體1106。此處,舉例而言,外部記憶體1106可為一電腦系統之系統記憶體、在一相機本端之記憶體、圖形處理器、加速器及/或共處理器(影像處理器1101係其一組成部分或以其他方式與其相關聯)。外部記憶體1106理解為係自影像處理器1101邏輯自身外部之任何記憶體且因此不同於影像處理器之內部記憶體(諸如在線緩衝器單元401或工作表產生器403本端之記憶體)。
在標稱操作期間,將由影像處理器1101處理之輸入影像資料圖框首先被寫入至外部記憶體1106中。巨型I/O單元1105然後自外部記憶體1106讀取影像圖框且將該等影像圖框饋送至影像處理器1101中。在影像處理器1101已完成處理圖框中之一或多者之充分部分之後,巨型I/O單元將所處理部分寫入至外部記憶體1106中作為影像處理器之輸出。注意,在一圖框自身被完全處理之前,可將圖框之部分寫入至外部記憶體中。
圖11a展示巨型I/O單元1105之一實施例之一高層級繪示。如在圖11a中觀察到,巨型I/O單元1105經設計以包含若干個邏輯通道單元1110_1至1110_N,該若干個邏輯通道單元各自負責在外部記憶體1106與影像資料(其將自外部記憶體被讀取且由影像處理器處理)之一內部消費者之間或者與輸出影像資料(其需要自影像處理器被寫入至外部記憶體1106)之一內部生產者之間建立一邏輯通道。
在各種實施例中,此等消費者或生產者可為一線緩衝器單元或一模板處理器之工作表產生器。此處,返回參考圖4,在一實施例中,巨型I/O單元405直接耦合至網路404以准許不僅與線緩衝器單元401且亦與一特定模板處理器402之任何工作表產生器403之通信。在各種其他實施例中,在巨型I/O單元405透過網路404與線緩衝器單元401通信而非直接與線緩衝器單元401通信(如圖4中所建議)之意義上,網路404係較全域的。
圖11b展示用於一邏輯通道單元1110之邏輯電路設計之一實施例。如在圖11b中觀察到,邏輯通道單元1110包含一狀態機邏輯電路1111、脈絡暫存器空間1112、重新格式化邏輯1113、一輸入佇列1114、一輸出佇列1115及至其他邏輯通道單元1116之一通信通道。注意在替代實施例中,重新格式化邏輯1113可實施為由多個邏輯通道單元而非具有其自身之專用重新格式化邏輯之每一通道共用(如圖11b中所建議)之一單個集中式區塊。為簡單起見,論述之其餘部分將假定已實施每通道重新格式化邏輯區塊而非集中式重新格式化。
將由邏輯通道單元1110接收之影像資料接收至輸入佇列1114中。駐存於輸入佇列1114中之輸入資料之像素通常由重新格式化邏輯1113選擇性地選擇,該重新格式化邏輯在輸出佇列1115中根據不同於將輸入佇列1114中之輸入像素格式化所根據之格式的一格式而構建輸出資料之單元。亦即,將通常在輸出佇列1115中根據不同於將輸入佇列1114中之輸入像素格式化所根據之格式結構的一格式結構來組織輸出資料之像素。
舉例而言,在將輸入資料自外部記憶體饋送至影像處理器之情形中,可根據RGB、RGB、RGB像素資料格式來組織駐存於外部記憶體中之輸入影像資料。然而,模板處理器可對具有一相同色彩之像素資料之工作表進行操作。亦即,模板處理器可對R像素之工作表、G像素之工作表及B像素之工作表單獨地進行操作。如此,為將輸入影像資料自其在外部記憶體中之格式預備成由模板處理器利用之格式,重新格式化邏輯1113將(例如)自輸入佇列1114選擇R像素以在輸出佇列1115中構建R像素區塊。一旦已在輸出佇列1115中構建具有充分大小之一R像素區塊,便將該區塊轉送至一線緩衝器單元或一模板處理器之工作表產生器。
例如,在一R像素供應已被耗盡且在影像處理器內被較深地轉送之後,重新格式化邏輯1113可僅自輸入佇列1114選擇G像素以在輸出佇列1115中構建G像素區塊。再次,在一G像素供應已被耗盡且被轉送之後,重新格式化邏輯1113將自輸入佇列1114選擇B像素以在輸出佇列1115中構建B像素區塊以用於在影像處理器內較深地轉送。
相反,在其中邏輯通道單元1110用於支援將輸出影像自影像處理器寫入至外部記憶體之反向方向上,將相同像素類型之區塊載入至輸入佇列1114中。亦即,例如,在輸入佇列1114處自一線緩衝器單元或一模板處理器之工作表產生器接收R像素區塊、G像素區塊及B像素區塊。重新格式化邏輯1113然後選擇此等像素中之特定者以在輸出佇列1115中形成具有原始RGB、RGB格式結構之輸出區塊以用於寫入至外部記憶體中。
狀態機邏輯1111控制重新格式化邏輯1113之重新格式化行為、判定在存取外部記憶體時使用什麼位址及/或定址方案以及理解在形成至外部記憶體之一邏輯通道時該狀態機邏輯與哪一線緩衝器單元或工作表產生器通信。
在各種實施例中,用專用邏輯電路來實施狀態機邏輯1111及重新格式化邏輯1113。在其他實施例中,狀態機邏輯1111及/或重新格式化邏輯1113可實施為執行程式碼以實施狀態機/重新格式化功能之一微控制器。在仍其他實施例中,狀態機邏輯1111/重新格式化邏輯1113可實施為經程式化及專用邏輯電路之一組合。專用邏輯電路可實施為硬連線及/或可程式化邏輯電路(例如,可程式化邏輯裝置(PLD)、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA),作為後者之實例)。
狀態機所參考以便領會其各種責任之資訊主體被保存於脈絡暫存器空間1112內,當(例如)影像處理器經組態以執行一特定DAG或管線時,該脈絡暫存器空間最初載入有針對彼DAG或管線之適當脈絡資訊。在DAG或管線之執行期間對暫存器空間1112之後續更新可由狀態機邏輯1111、影像處理器內之其他智慧裝置(諸如一模板處理器內之純量處理器,及/或使用影像處理器之系統(例如,電腦、相機等))進行。
在一實施例中,脈絡暫存器空間1112含有以下資訊:1)影像資料圖框(其在將輸入資料饋送至影像處理器之情形中將自外部記憶體被讀取,或在自影像處理器寫入輸出資料之情形中被寫入至外部記憶體)之基底外部記憶體位址;2)影像圖框之大小(例如,就像素單元中之寬度及高度而言);3)外部記憶體中之資料之格式;4)將用於影像處理器內之資料之格式;及5)通道將其在邏輯上耦合至外部記憶體之特定工作表產生器、模板處理器或線緩衝器單元之身分識別。在各種實施例中,在任一方向上之所支援影像資料格式包含RGB、皆為一種色彩、經堆積RAW以及可能其他影像資料格式。
如在圖11中觀察到,邏輯通道單元1110亦包含一通信鏈路1116使得該邏輯通道單元可理解其他邏輯通道之狀態以實現多個邏輯通道當中之協調。僅作為一項實例,將輸入資料饋送至影像處理器之一邏輯通道可經組態以在影像資料至影像處理器中之一初始載入之後抑制將一下一輸入影像資料圖框自外部記憶體載入至影像處理器中,直至一下一輸出影像圖框已自影像處理器被寫入至外部記憶體中為止。在不具有此協調之情況下,影像處理器之內部記憶體資源可(例如)針對某些DAG或管線設計而溢位(overrun)。
圖12a、圖12b及圖13進一步詳述一邏輯通道之狀態機1111可實現之處理操作種類之幾個相關特徵。圖12a及圖12b係關於外部記憶體之特殊定址程序,該等特殊定址程序可由一邏輯通道單元執行使得一邏輯緩衝器單元可較高效地操作。
自圖10a及圖10b之論述回顧,一線緩衝器單元可根據一「虛高」模式操作,在該「虛高」模式中將並非延伸跨越全圖框寬度之二維影像區域1004_1、1004_2自一線緩衝器依序傳遞至一工作表產生器而非傳遞全寬度線緩衝器或跨越全圖框寬度進行光柵掃描,其中直至來自一先前列之所有資料已被完全轉送才轉送來自一下一列之資料。
圖12a及圖12b演示一記憶體定址方案,一邏輯通道單元1110之狀態機邏輯1111可實施該記憶體定址方案以便補充一邏輯緩衝器單元至一工作表產生器之資料轉送,該資料轉送係根據諸如「虛高」之一技術,其中在來自一先前列之所有資料已被完全轉送之前轉送來自若干下一列之資料。此處,參考圖12a,可(舉例而言)將影像區域1201視為包含圖10a之影像資料1004_1之影像資料。
此處,影像圖框1220內之影像資料1201自外部記憶體被讀取且在線緩衝器單元將影像資料1004_1轉送至一工作表產生器之前被傳遞至線緩衝器單元。為將影像資料1201轉送至線緩衝器單元,注意記憶體定址應抑制跨越影像圖框1220資料之一整個列讀取,而是跨越一列1210之一有限擴展區(expanse)讀取且然後「下拉」以讀取一下一下部列1211之一下一有限擴展區。
程序繼續直至自外部記憶體讀取所有區域1201為止(例如,此在讀取有限擴展區列1212之後完成),使得可將該區域傳遞至線緩衝器單元。在已將影像區域1201傳遞至線緩衝器單元之後,線緩衝器單元處於用於將影像資料1004_1轉送至一工作表產生器之一位置中。
繼續進行與如在圖12b中所觀察到相同之方法,根據與上文關於圖12a所論述相同之定址技術1210、1211…1212及影像區域1201而自外部記憶體讀取一下一影像區域1202。在已根據特殊記憶體定址方法自外部記憶體讀取影像區域1202之後,可將影像區域1202轉送至線緩衝器單元,此使線緩衝器單元處於用於將圖10b之影像資料1004_2轉送至相同工作表產生器之一位置中。
如此,駐存於外部記憶體與邏輯緩衝器單元之間的邏輯通道單元可以類似於線緩衝器單元將影像資料轉送至一工作表產生器之方式之一方式將資料轉送至線緩衝器單元。藉由以類似於線緩衝器單元將輸入資料饋送至一工作表產生器之方式之一方式將輸入資料饋送至邏輯緩衝器單元,提高了線緩衝器單元之總體吞吐量及效率。注意,邏輯通道單元亦可在自外部記憶體讀取輸入資料與將該輸入資料轉送至線緩衝器單元之間執行前述重新格式化(例如,RGB至全部R、全部G及全部B)。
圖12a及圖12b之特殊定址模式亦可應用於將輸出資料自影像處理器寫入至外部記憶體之方向上。此處,一工作表產生器可在「虛高」模式中將所處理輸出影像資料傳遞至一線緩衝器,此繼而促進一線緩衝器單元將具有有限擴展區之影像資料區域(類似於圖12之區域1201、1202)轉送至邏輯通道單元。作為回應,邏輯通道單元根據相同特殊定址方法1210、1211…1212將資料寫入至外部記憶體中。再次可在自一線緩衝器單元接收輸出影像資料與將該輸出影像資料寫入至外部記憶體中之間由邏輯通道執行重新格式化。
圖13係關於另一特殊定址方法,其中(例如)執行於一模板處理器上之一核心專門請求個別表面區域,該等個別表面區域在輸入圖框內之其位置中較隨機或較隨選而非在其序列中被排序或對準。舉例而言,如在圖13中觀察到,一模板處理器可依序請求影像區域1301、1302、1303及1304而非跨越輸入圖框之寬度以一經排序順序模式(無論是線群組、虛高還是其他)請求資料。此處,藉由採用圖12a、圖12b之有限擴展區定址方法1210、1211…1212但在隨選影像區域1301至1304之界限內讀取每一區域1301至1304。如此,使外部記憶體提取區之形狀係可組態的。
處理以一隨選而非經排序序列之影像區域可(例如)對於運動補償例程(其中一影像串流中之一特徵係移動的)、幾何失真例程(例如,以補償其中所收集影像資料圖框失真之透鏡或其他影像收集缺陷)及矩陣相乘或轉置操作係有用的。
在一實施例中,隨選定址消耗巨型I/O單元1105內之兩個邏輯通道單元1110。一第一邏輯通道單元接收模板處理器正請求之每一隨選影像區域之基底座標值。舉例而言,一所要影像區域可由模板處理器規定,該模板處理器識別該區域之高度及寬度連同該區域之左下方拐角之位址。
假定標稱操作包含具有相同寬度及高度之每一所要區域,可藉由將每一所要區域之左下方拐角之座標值轉送至第一邏輯通道單元(例如,首先將區域1301之左下方拐角之座標值發送至第一邏輯通道單元,接下來將區域1302之左下方拐角之座標值發送至第一邏輯通道單元等)而識別一隨選影像區域序列。第一邏輯通道單元然後將所接收座標值轉送至一第二邏輯通道單元(例如,經由圖11a之通信通道1110),該第二邏輯通道單元自外部記憶體讀取所要區域、重新格式化該等所要區域且然後將該等所要區域轉送至請求之模板處理器。注意,一隨選影像區域序列可在其間具有大量重疊。亦即,一第一影像區域可消耗一第二影像區域亦消耗之諸多相同影像區域。在一實施例中,一快取記憶體實施於外部記憶體與邏輯通道之間以在多個影像區域當中保存重疊影像資料,使得可避免針對相同資料對記憶體之多次存取。
圖14展示可由如上文所論述之一邏輯通道單元執行之一方法。如在圖14中觀察到,方法包含達成至一影像處理器內之一消耗組件之一邏輯連接1401。方法亦包含自其中根據一RGB格式而格式化影像區域中之每一者之一影像資料圖框讀取一系列有限寬度影像區域1402。方法亦包含將該系列有限寬度影像區域重新格式化成具有一相同色彩分量之影像資料區塊1403。方法亦包含將具有相同色彩分量之影像資料區塊轉送至消耗組件1404。 e. 實施方案實施例
適當地指出,上文所闡述之各種影像處理器架構特徵未必將影像處理限制於傳統意義上且因此可應用於可(或可不)致使影像處理器被重新表徵之其他應用。舉例而言,若上文所闡述之各種影像處理器架構特徵中之任一者將用於形成及/或產生及/或再現動畫而非處理實際相機影像,則可將影像處理器表徵為一圖形處理單元。另外,上文所闡述之影像處理器架構特徵可應用於其他技術應用,諸如視訊處理、視覺處理、影像辨識及/或機器學習。以此方式應用,影像處理器可與一較通用處理器(例如,其係計算系統之一CPU或該CPU之部分)整合在一起(例如,作為與該較通用處理器之一共處理器),或可為一計算系統內之一單獨處理器。
上文所論述之硬體設計實施例可體現於一半導體晶片內及/或作為對針對最終以一半導體製造程序為目標之一電路設計之一說明。在後者之情形中,此等電路說明可採取一(例如,VHDL或Verilog)暫存器轉移層級(RTL)電路說明、一閘層級電路說明、一電晶體層級電路說明或遮罩說明或者其各種組合之形式。電路說明通常體現於一電腦可讀儲存媒體(諸如一CD-ROM或其他類型之儲存技術)上。
自前述章節適當地認識到,如上文所闡述之一影像處理器可體現於一電腦系統上之硬體中(例如,作為一手持式裝置之系統單晶片(SOC)之部分,該SOC處理來自手持式裝置之相機之資料)。在其中影像處理器體現為一硬體電路之情形中,注意可直接自一相機接收由影像處理器處理之影像資料。此處,影像處理器可為一離散相機之部分,或具有一整合式相機之一計算系統之部分。在稍後之情形中,可直接自相機或自計算系統之系統記憶體接收影像資料(例如,相機將其影像資料發送至系統記憶體而非影像處理器)。亦注意,前述章節中所闡述之特徵中之諸多特徵可適用於一圖形處理器單元(其再現動畫)。
圖15提供一計算系統之一例示性繪示。下文所闡述之計算系統之組件中之諸多組件適用於具有一整合式相機及相關聯影像處理器之一計算系統(例如,一手持式裝置,諸如一智慧型電話或平板電腦)。熟習此項技術者將能夠易於在該兩者之間進行描繪。
如在圖15中觀察到,基本計算系統可包含一中央處理單元1501 (其可包含(例如)複數個通用處理核心1515_1至1515_N及安置於一多核心處理器或應用處理器上之一主記憶體控制器1517)、系統記憶體1502、一顯示器1503 (例如,觸控螢幕、扁平面板)、一本端有線點對點鏈路(例如,USB)介面1504、各種網路I/O功能1505 (諸如一乙太網路介面及/或蜂巢式數據機子系統)、一無線區域網路(例如,WiFi)介面1506、一無線點對點鏈路(例如,藍芽)介面1507及一全球定位系統介面1508、各種感測器1509_1至1509_N、一或多個相機1510、一電池1511、一功率管理控制單元1512、一揚聲器及麥克風1513以及一音訊編碼器/解碼器1514。
一應用處理器或多核心處理器1550可包含在其CPU 1501內之一或多個通用處理核心1515、一或多個圖形處理單元1516、一記憶體管理功能1517 (例如,一記憶體控制器)、一I/O控制功能1518及一影像處理單元1519。通用處理核心1515通常執行計算系統之作業系統及應用軟體。圖形處理單元1516通常執行圖形密集型功能以(例如)產生呈現於顯示器1503上之圖形資訊。記憶體控制功能1517與系統記憶體1502介接以將資料寫入至系統記憶體1502/自系統記憶體1502讀取資料。功率管理控制單元1512通常控制系統1500之功率消耗。
可根據上文在前述章節中詳盡地闡述之影像處理單元實施例中之任一者而實施影像處理單元1519。另一選擇係或以組合方式,IPU 1519可耦合至GPU 1516及CPU 1501中之任一者或兩者作為其一共處理器。另外,在各種實施例中,可以上文詳盡地闡述之影像處理器特徵中之任一者實施GPU 1516。
觸控螢幕顯示器1503、通信介面1504至1507、GPS介面1508、感測器1509、相機1510及揚聲器/麥克風1513、編解碼器1514中之每一者可全部視為相對於總體計算系統之各種形式之I/O (輸入及/或輸出),該總體計算系統在適當之情況下亦包含一整合式周邊裝置(例如,一或多個相機1510)。取決於實施方案,此等I/O組件中之各種I/O組件可整合於應用處理器/多核心處理器1550上或可位於晶粒外或者位於應用處理器/多核心處理器1550外部。
在一實施例中,一或多個相機1510包含能夠量測相機與其視域中之一物件之間的深度之一深度相機。執行於一應用處理器或其他處理器之一個通用CPU核心(或具有用以執行程式碼之一指令執行管線之其他功能區塊)上之應用軟體、作業系統軟體、裝置驅動器軟體及/或韌體可執行上文所闡述之功能中之任一者。
本發明之實施例可包含如上文所陳述之各種程序。該等程序可體現於機器可執行指令中。該等指令可用於致使一個通用或專用處理器執行特定程序。另一選擇係,此等程序可由含有用於執行程序之硬連線邏輯之特定硬體組件或由經程式化電腦組件及定製硬體組件之任何組合執行。
本發明之元件亦可提供為用於儲存機器可執行指令之一機器可讀媒體。機器可讀媒體可包含(但不限於)軟式磁片、光碟、CD-ROM及磁光碟、快閃記憶體、ROM、RAM、EPROM、EEPROM、磁性或光學卡、傳播媒體或者適合於儲存電子指令之其他類型之媒體/機器可讀媒體。舉例而言,本發明可下載為一電腦程式,該電腦程式可藉助於體現於一載波中之資料信號自一遠端電腦(例如,一伺服器)傳送至一請求電腦(例如,一用戶端)或經由一通信鏈路(例如,一數據機或網路連接)傳送至其他傳播媒體。
在前述說明書中,已參考本發明之特定例示性實施例闡述了本發明。然而,將顯而易見,可在不背離如隨附專利申請範圍中所陳述之本發明之較寬廣精神及範疇之情況下對本發明做出各種修改及改變。因此,應將說明書及圖式視為說明性意義而非限制性意義。
101:虛擬影像處理環境/虛擬處理環境
102:編譯器
103:實際影像處理硬體/實際硬體
104:開發者
201:輸入影像資料
202:程式碼
203:核心
206:輸出陣列
301:執行緒
302:執行緒
303:輸入陣列
304:輸出陣列
401_1:線緩衝器單元
401_2:線緩衝器單元/下游線緩衝器單元
401_M:線緩衝器單元
402_1:模板處理器單元/第一模板處理器/模板處理器
402_2:模板處理器單元/第二模板處理器/模板處理器
402_N:模板處理器單元
403_1:工作表產生器單元/工作表產生器
403_2:工作表產生器單元/工作表產生器
403_N:工作表產生器單元
404:網路
405:巨型輸入/輸出單元
501:影像資料
502:重疊模板/垂直重疊模板
503:陰影區/線群組
504:初始工作表/第一工作表
505:下一工作表/新工作表/第二工作表
600:模板處理器架構
601:資料計算單元
602:純量處理器
603:記憶體/純量記憶體
604:輸入/輸出單元
605:執行通路陣列/陣列
606:二維移位陣列結構/二維移位暫存器結構/暫存器結構
609:程式控制器
701:線緩衝器單元
702:模板處理器
703:工作表產生器單元/工作表產生器
705:純量處理器
706:組態空間
707:組態空間
710:虛擬碼層級
711:組態資訊/資訊
712:組態資訊/資訊
801:影像
802_1:線群組
802_2:線群組
802_N:線群組
900:線緩衝器單元實施例/整個線緩衝器單元/線緩衝器單元
901:線緩衝器單元電路
902:記憶體
903_1:線群組/第一線群組
903_2:線群組
903_N:線群組
904_1:線緩衝器介面單元
904_2:線緩衝器介面單元
904_N:線緩衝器介面單元
905_1:暫存器空間
907:全域組態暫存器空間/全域暫存器空間
921:LB_Enable欄位
922:Num_Channels欄位/欄位/Num_Channels
923:Num_Consumers欄位/欄位/Num_Consumers
924:Row_Width欄位/Row_Width/FB_Width
925:VB_Enable欄位
926:FB_Rows欄位/FB_Rows
927:VB_Rows欄位
928:VB_Cols欄位
929:Num_Reuse_Rows欄位
930:FB_Base_Address欄位/FB_Address欄位/FB_Base_Address值/FB_Base_Address
931:VB_Base_Address欄位
932:通道數目/Num_Channels欄位
933:消費者數目/Num_Consumers欄位
934:Image_Size欄位/欄位/Image_Size
935:Stencil_Dimension欄位/欄位/Stencil_Dimension
1002:模板
1003:上部部分
1004_1:第一下部部分/下部部分/第一部分/二維影像區域/影像資料
1004_2:下一下部部分/下部部分/二維影像區域/影像資料
1101:影像處理器
1105:巨型輸入/輸出單元
1106:記憶體/外部記憶體/通信通道
1110:邏輯通道單元
1110_1-1110_N:邏輯通道單元
1111:狀態機邏輯電路/狀態機邏輯/狀態機
1112:脈絡暫存器空間/暫存器空間
1113:重新格式化邏輯
1114:輸入佇列
1115:輸出佇列
1116:邏輯通道單元/通信鏈路
1201:影像區域/影像資料/區域
1202:下一影像區域/影像區域/區域
1210:列/定址技術/特殊定址方法/有限擴展區定址方法
1211:下一下部列/定址技術/特殊定址方法/有限擴展區定址方法
1212:有限擴展區列/定址技術/特殊定址方法/有限擴展區定址方法
1220:影像圖框
1301:影像區域/隨選影像區域/區域
1302:影像區域/隨選影像區域/區域
1303:影像區域/隨選影像區域/區域
1304:影像區域/隨選影像區域/區域
1500:系統
1501:中央處理單元
1502:系統記憶體
1503:顯示器/觸控螢幕顯示器
1504:本端有線點對點鏈路(例如,USB)介面/通信介面
1505:網路輸入/輸出功能/通信介面
1506:無線區域網路(例如,WiFi)介面/通信介面
1507:無線點對點鏈路(例如,藍芽)介面/通信介面
1508:全球定位系統介面
1509_1-1509_N:感測器
1510:相機
1511:電池
1512:功率管理控制單元
1513:揚聲器及麥克風/揚聲器/麥克風
1514:音訊編碼器/解碼器/編解碼器
1515_1-1515_N:通用處理核心
1516:圖形處理單元
1517:主記憶體控制器/記憶體管理功能/記憶體控制功能
1518:輸入/輸出控制功能
1519:影像處理單元
1550:應用處理器/多核心處理器
C21:時間
C22:時間
C2N:時間
C31:時間
K1:第一核心/核心/生產者核心/生產者
K2:核心/消費者核心/消費者
K3:消費者核心/消費者/核心
K3_1:核心
K3_2:核心
K4:核心
P1:時間執行個體/時間
P2:時間執行個體/時間
PN:時間執行個體/時間
X1:位置/輸出值/輸出位置
X2:位置/輸出值/輸出位置
使用以下說明及隨附圖式來圖解說明本發明之實施例。在圖式中:
圖1展示一技術平臺之各種組件;
圖2a展示構建有核心之應用軟體之一實施例;
圖2b展示一核心之結構之一實施例;
圖3展示一核心之操作之一實施例;
圖4展示一影像處理器硬體架構之一實施例;
圖5a、圖5b、圖5c、圖5d及圖5e繪示將影像資料剖析成一線群組、將一線群組剖析成一工作表及利用重疊模板對一工作表執行之操作;
圖6展示一模板處理器之一實施例;
圖7展示一影像處理器之組態及程式化之一實施例;
圖8展示由線群組構成之一影像圖框;
圖9a、圖9b及圖9c繪示一線緩衝器單元之設計及操作實施例;
圖9d及圖9e繪示一影像處理器之可程式化暫存器空間之實施例;
圖10a及圖10b繪示一虛高(virtually tall)操作模式;
圖11a及圖11b展示巨型I/O單元實施例;
圖12a及圖12b展示一巨型I/O單元之一實施例之一第一能力;
圖13展示一巨型I/O單元之一實施例之一第二能力;
圖14展示由一巨型I/O單元之一實施例執行之一方法;
圖15展示一計算系統之一實施例。
1101:影像處理器
1105:巨型輸入/輸出單元
1106:記憶體/外部記憶體/通信通道
1110_1-1110_N:邏輯通道單元
Claims (20)
- 一種裝置,其包括: 一或多個內部處理器;及 一巨型I/O通道單元(macro I/O channel unit),其耦合至一外部記憶體及該一或多個內部處理器之一內部處理器, 其中該巨型I/O通道單元包括: 一輸入佇列(queue), 一輸出佇列, 重新格式化邏輯(reformatting logic),其經組態以自該輸入佇列讀取一下一輸入影像資料圖框(next frame of input image data)之部分且將重新格式化輸出資料寫入至由該內部處理器消耗之該輸出佇列,及 一狀態機(state machine),其耦合至一脈絡暫存器(context register),該脈絡暫存器經組態以將一下一資料圖框之一基底記憶體位址(base memory address)儲存於該外部記憶體內, 其中該狀態機經組態以產生一特定定址順序(particular addressing ordering)以致使該巨型I/O通道單元以一特定定址程序(particular addressing procedure)之一順序自該外部記憶體讀取該下一影像資料圖框之部分,且將該下一影像資料圖框之該等部分儲存於該輸入佇列中。
- 如請求項1之裝置,其中該狀態機經組態以致使在對該輸入佇列中之該輸入影像資料進行重新格式化時,該重新格式化邏輯遵循一特定重新格式化順序。
- 如請求項2之裝置,其中該重新格式化順序指定(specify)在該輸入影像資料中之複數個色彩通道之間的一順序。
- 如請求項3之裝置,其中在將額外輸入影像資料讀取至該輸入佇列中之前,該重新格式化順序指定執行多個重新格式化迭代(multiple iterations of reformatting)。
- 如請求項1之裝置,其中該特定定址順序指定讀取小於該下一資料圖框之一第一列之一全寬度至該輸入佇列中,且接著讀取小於該下一資料圖框之一下一列之全寬度。
- 如請求項5之裝置,其中該特定定址順序指定以列順序(row-ordering)讀取資料之部分,且在資料之每個部分內以列順序讀取列。
- 如請求項1之裝置,其中該特定定址順序係一隨選順序(ad hoc ordering)。
- 如請求項7之裝置,其進一步包括一通信鏈路,其經組態以接收待被讀取至該輸入佇列中之該資料圖框之一下一部分之一隨選位址(ad hoc address)。
- 如請求項7之裝置,其進一步包括一快取,其經組態以儲存該資料圖框之一先前讀取部分,且針對該資料圖框之一當前部分提供與該資料圖框之該先前讀取部分重疊之任意資料。
- 如請求項1之裝置,其進一步包括一脈絡暫存器空間(context register space),該儲存表示該特定定址順序之資料。
- 如請求項10之裝置,其中該巨型I/O通道單元係經組態以在該脈絡暫存器空間以表示一不同定指順序之資料更新後實施一不同的定址程序。
- 如請求項10之裝置,其中該脈絡暫存器空間指定一消費者組件之一識別符以自該輸出佇列中讀取資料。
- 如請求項10之裝置,其中該脈絡暫存器空間儲存一工作表產生器之一識別符或一線緩衝器,其係位於該巨型I/O通道單元及該內部處理器之間。
- 一種由耦合至一外部記憶體及一內部處理器之一巨型I/O通道單元所執行之方法,該方法包括: 藉由在一脈絡暫存器中之該巨型I/O通道單元,將一下一資料圖框之一基底記憶體位址儲存於該外部記憶體內; 藉由該巨型I/O通道單元之一狀態機,產生一特定定址順序,致使該巨型I/O通道單元以一特定定址程序之一順序自該外部記憶體讀取該下一資料圖框之部分; 將該下一資料圖框之該等部分儲存於該巨型I/O通道單元之一輸入佇列中;及 藉由該巨型I/O通道單元之重新格式化邏輯自該輸入佇列讀取該下一輸入資料圖框之該等部分; 藉由該重新格式化邏輯,重新格式化該下一輸入資料圖框之經讀取之該等部分;及 藉由該重新格式化邏輯,將輸出資料寫入至由該內部處理器消耗之該巨型I/O通道單元之一輸出佇列。
- 如請求項14之方法,其進一步包括在重新格式化該輸入佇列中之該輸入資料時,藉由該重新格式化邏輯遵循一特定重新格式化順序。
- 如請求項15之方法,其中該重新格式化順序指定在該輸入資料中之複數個色彩通道之間的一順序。
- 如請求項16之方法,其中在將額外輸入資料讀取至該輸入佇列中之前,該重新格式化順序指定執行多個重新格式化迭代。
- 如請求項14之方法,其中該特定定址順序指定讀取小於該下一資料圖框之一第一列之一全寬度至該輸入佇列中且接著讀取小於該下一資料圖框之一下一列之全寬度。
- 如請求項18之方法,其中該特定定址順序指定以列順序讀取資料之部分,且在資料之每個部分內以列順序讀取列。
- 如請求項14之方法,其中該特定定址順序係一隨選順序。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662300880P | 2016-02-28 | 2016-02-28 | |
US62/300,880 | 2016-02-28 | ||
US15/389,168 US10380969B2 (en) | 2016-02-28 | 2016-12-22 | Macro I/O unit for image processor |
US15/389,168 | 2016-12-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202112140A true TW202112140A (zh) | 2021-03-16 |
TWI745084B TWI745084B (zh) | 2021-11-01 |
Family
ID=57861271
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109131928A TWI745084B (zh) | 2016-02-28 | 2016-12-30 | 用於影像處理器之巨型輸入/輸出單元 |
TW107146642A TWI702840B (zh) | 2016-02-28 | 2016-12-30 | 用於影像處理器之巨型輸入/輸出單元 |
TW105144285A TWI650013B (zh) | 2016-02-28 | 2016-12-30 | 用於影像處理器之巨型輸入/輸出單元 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107146642A TWI702840B (zh) | 2016-02-28 | 2016-12-30 | 用於影像處理器之巨型輸入/輸出單元 |
TW105144285A TWI650013B (zh) | 2016-02-28 | 2016-12-30 | 用於影像處理器之巨型輸入/輸出單元 |
Country Status (9)
Country | Link |
---|---|
US (3) | US10380969B2 (zh) |
EP (1) | EP3420526A1 (zh) |
JP (1) | JP6750022B2 (zh) |
KR (1) | KR102072145B1 (zh) |
CN (1) | CN107133016B (zh) |
DE (2) | DE102016125846A1 (zh) |
GB (2) | GB2551412B (zh) |
TW (3) | TWI745084B (zh) |
WO (1) | WO2017146817A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503689B2 (en) * | 2017-05-15 | 2019-12-10 | Google Llc | Image processor I/O unit |
US11386644B2 (en) * | 2017-10-17 | 2022-07-12 | Xilinx, Inc. | Image preprocessing for generalized image processing |
CN111971663A (zh) * | 2018-04-16 | 2020-11-20 | 埃米尔·巴登霍斯特 | 处理器和操作处理器的方法 |
CN110782387B (zh) * | 2018-07-30 | 2023-09-22 | 阿里巴巴(中国)有限公司 | 图像处理方法、装置、图像处理器及电子设备 |
Family Cites Families (88)
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 |
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 |
US5162788A (en) * | 1989-06-16 | 1992-11-10 | Apple Computer, Inc. | Chunky planar data packing apparatus and method for a video memory |
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 |
WO1994009595A1 (en) | 1991-09-20 | 1994-04-28 | Shaw Venson M | Method and apparatus including system architecture for multimedia communications |
JP3482660B2 (ja) | 1993-09-08 | 2003-12-22 | ソニー株式会社 | 画像データ処理装置および画像データ処理方法 |
US5671440A (en) | 1994-08-08 | 1997-09-23 | Eastman Kodak Company | Color image data reorientation and format conversion system |
US5612693A (en) | 1994-12-14 | 1997-03-18 | International Business Machines Corporation | Sliding window data compression using a toroidal bit shift register |
US5736988A (en) * | 1995-12-04 | 1998-04-07 | Silicon Graphics, Inc. | Apparatus and method for accelerated tiled data retrieval |
US5960211A (en) * | 1995-12-15 | 1999-09-28 | Hughes Aircraft | Data formatting method and apparatus for a data processing array |
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 |
JPH10271299A (ja) * | 1997-03-27 | 1998-10-09 | Ricoh Co Ltd | デジタル複合機 |
US5943040A (en) * | 1997-06-27 | 1999-08-24 | Sun Microsystems, Inc. | Graphical image reformatting |
US6466265B1 (en) * | 1998-06-22 | 2002-10-15 | Eastman Kodak Company | Parallel output architectures for CMOS active pixel sensors |
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 | 浜松ホトニクス株式会社 | 高速視覚センサ装置 |
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 |
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 |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
JP4284501B2 (ja) | 2003-03-28 | 2009-06-24 | セイコーエプソン株式会社 | 画像データ縮小装置、マイクロコンピュータ及び電子機器 |
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 |
JP2006013701A (ja) | 2004-06-23 | 2006-01-12 | Seiko Epson Corp | 表示コントローラ、電子機器及び画像データ供給方法 |
JP4219887B2 (ja) | 2004-12-28 | 2009-02-04 | 富士通マイクロエレクトロニクス株式会社 | 画像処理装置及び画像処理方法 |
JP4111192B2 (ja) | 2004-12-28 | 2008-07-02 | セイコーエプソン株式会社 | メモリコントローラ、表示コントローラ及びメモリ制御方法 |
JP6059413B2 (ja) | 2005-04-28 | 2017-01-11 | クアルコム,インコーポレイテッド | 再構成可能命令セル・アレイ |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
JP2007067917A (ja) | 2005-08-31 | 2007-03-15 | Matsushita Electric Ind Co Ltd | 画像データ処理装置 |
US7602974B2 (en) | 2005-10-21 | 2009-10-13 | Mobilic Technology (Cayman) Corp. | Universal fixed-pixel-size ISP scheme |
US8094552B1 (en) * | 2005-11-03 | 2012-01-10 | Seagate Technology Llc | Adaptive buffer for frame based storage communications protocols |
FR2895103B1 (fr) | 2005-12-19 | 2008-02-22 | Dxo Labs Sa | Procede et systeme de traitement de donnees numeriques |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US7595805B2 (en) | 2006-04-11 | 2009-09-29 | Qualcomm Incorporated | Techniques to facilitate use of small line buffers for processing of small or large images |
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 |
JP4389976B2 (ja) | 2007-06-29 | 2009-12-24 | ブラザー工業株式会社 | 画像処理装置および画像処理プログラム |
US20090015850A1 (en) | 2007-07-13 | 2009-01-15 | Kenneth Edward Smith | Rapid loading of interleaved RGB data into SSE registers |
WO2009031302A1 (ja) | 2007-09-05 | 2009-03-12 | Tohoku University | 固体撮像素子及びその駆動方法 |
EP2289001B1 (en) | 2008-05-30 | 2018-07-25 | Advanced Micro Devices, Inc. | Local and global data share |
US20090319007A1 (en) | 2008-06-20 | 2009-12-24 | Mcnulty Jr James F | Shocking device having a time-based monitoring and recording circuit |
JP4999791B2 (ja) | 2008-06-30 | 2012-08-15 | キヤノン株式会社 | 情報処理装置、その制御方法、及びプログラム |
JP5339824B2 (ja) | 2008-09-08 | 2013-11-13 | キヤノン株式会社 | 画像形成装置およびその制御方法 |
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 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
US20110055495A1 (en) | 2009-08-28 | 2011-03-03 | Qualcomm Incorporated | Memory Controller Page Management Devices, Systems, and Methods |
US8700877B2 (en) | 2009-09-25 | 2014-04-15 | Nvidia Corporation | Address mapping for a parallel thread processor |
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 |
US8751771B2 (en) | 2010-09-29 | 2014-06-10 | Nvidia Corporation | Efficient implementation of arrays of structures on SIMT and SIMD architectures |
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 | パナソニック株式会社 | プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム |
WO2012124251A1 (ja) | 2011-03-16 | 2012-09-20 | パナソニック株式会社 | データ処理装置、データ処理方法及びデータ共有システム |
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 |
JP5742651B2 (ja) | 2011-10-15 | 2015-07-01 | コニカミノルタ株式会社 | 画像処理装置、連携方法および連携プログラム |
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 |
US8954992B2 (en) | 2013-03-15 | 2015-02-10 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Distributed and scaled-out network switch and packet processing |
US9098924B2 (en) | 2013-07-15 | 2015-08-04 | Nvidia Corporation | Techniques for optimizing stencil buffers |
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
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 |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
US9769356B2 (en) | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
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 |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US10297003B2 (en) * | 2015-09-21 | 2019-05-21 | Qualcomm Incorporated | Efficient saving and restoring of context information for context switches |
-
2016
- 2016-12-22 US US15/389,168 patent/US10380969B2/en active Active
- 2016-12-29 DE DE102016125846.6A patent/DE102016125846A1/de active Pending
- 2016-12-29 EP EP16829209.2A patent/EP3420526A1/en not_active Withdrawn
- 2016-12-29 WO PCT/US2016/069215 patent/WO2017146817A1/en active Application Filing
- 2016-12-29 DE DE202016107470.3U patent/DE202016107470U1/de active Active
- 2016-12-29 KR KR1020187022065A patent/KR102072145B1/ko active IP Right Grant
- 2016-12-29 JP JP2018539874A patent/JP6750022B2/ja active Active
- 2016-12-30 TW TW109131928A patent/TWI745084B/zh active
- 2016-12-30 GB GB1622425.5A patent/GB2551412B/en active Active
- 2016-12-30 GB GB1910667.3A patent/GB2577959B/en active Active
- 2016-12-30 TW TW107146642A patent/TWI702840B/zh active
- 2016-12-30 TW TW105144285A patent/TWI650013B/zh active
- 2016-12-30 CN CN201611273166.6A patent/CN107133016B/zh active Active
-
2017
- 2017-05-18 US US15/599,086 patent/US10504480B2/en active Active
-
2019
- 2019-11-15 US US16/685,388 patent/US10733956B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200160809A1 (en) | 2020-05-21 |
US20170256230A1 (en) | 2017-09-07 |
GB2577959A (en) | 2020-04-15 |
CN107133016A (zh) | 2017-09-05 |
EP3420526A1 (en) | 2019-01-02 |
TWI745084B (zh) | 2021-11-01 |
US10380969B2 (en) | 2019-08-13 |
TW201735650A (zh) | 2017-10-01 |
DE202016107470U1 (de) | 2017-06-30 |
JP6750022B2 (ja) | 2020-09-02 |
KR20180100362A (ko) | 2018-09-10 |
TWI702840B (zh) | 2020-08-21 |
GB2577959B (en) | 2020-10-07 |
GB2551412B (en) | 2019-09-04 |
US10504480B2 (en) | 2019-12-10 |
GB201910667D0 (en) | 2019-09-11 |
GB201622425D0 (en) | 2017-02-15 |
WO2017146817A1 (en) | 2017-08-31 |
US20170249921A1 (en) | 2017-08-31 |
TWI650013B (zh) | 2019-02-01 |
CN107133016B (zh) | 2021-03-30 |
US10733956B2 (en) | 2020-08-04 |
GB2551412A (en) | 2017-12-20 |
TW201921955A (zh) | 2019-06-01 |
KR102072145B1 (ko) | 2020-01-31 |
JP2019509549A (ja) | 2019-04-04 |
DE102016125846A1 (de) | 2017-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6858239B2 (ja) | プログラムコードを、高性能で電力効率の良いプログラマブルな画像処理ハードウェアプラットフォームにマッピングするためのコンパイラ技法 | |
JP7202987B2 (ja) | 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ | |
US11190718B2 (en) | Line buffer unit for image processor | |
US10733956B2 (en) | Macro I/O unit for image processor |