TW201907298A - 按行緩衝器單元記憶體分配之判定 - Google Patents

按行緩衝器單元記憶體分配之判定 Download PDF

Info

Publication number
TW201907298A
TW201907298A TW107103560A TW107103560A TW201907298A TW 201907298 A TW201907298 A TW 201907298A TW 107103560 A TW107103560 A TW 107103560A TW 107103560 A TW107103560 A TW 107103560A TW 201907298 A TW201907298 A TW 201907298A
Authority
TW
Taiwan
Prior art keywords
line buffer
kernel
image data
memory
execution
Prior art date
Application number
TW107103560A
Other languages
English (en)
Other versions
TWI684132B (zh
Inventor
朴賢哲
阿爾伯特 邁克斯納
朱秋玲
威廉 R 馬克
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 TW201907298A publication Critical patent/TW201907298A/zh
Application granted granted Critical
Publication of TWI684132B publication Critical patent/TWI684132B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/08HW-SW co-design, e.g. HW-SW partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Abstract

本發明描述一種方法。該方法包含模擬一影像處理應用軟體程式之執行。該模擬包含利用模擬之行緩衝器記憶體攔截內核至內核通信(kernel-to-kernel communications),該等模擬之行緩衝器記憶體儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行。該模擬進一步包含在一模擬運行時間內追蹤儲存於各自行緩衝器記憶體中之各自影像資料量。該方法亦包含自該等經追蹤之各自影像資料量判定用於對應硬體行緩衝器記憶體之各自硬體記憶體分配。該方法亦包含產生用於一影像處理器之組態資訊以執行該影像處理應用軟體程式。該組態資訊描述用於該影像處理器之該等硬體行緩衝器記憶體之該等硬體記憶體分配。

Description

按行緩衝器單元記憶體分配之判定
本發明領域大體上係關於運算科學且更明確言之係關於按行緩衝器單元記憶體分配之判定。
影像處理通常涉及處理組織成一陣列之像素值。此處,一經空間組織之二維陣列擷取影像之二維性質(額外維度可包含時間(例如,二維影像之一序列)及資料類型(例如,色彩))。在一典型案例中,陣列化之像素值係藉由已產生一靜態影像或用以擷取運動影像之一圖框序列之一相機而提供。傳統影像處理器通常落在兩種極端情況之任一側上。 第一種極端情況將影像處理任務作為在通用處理器或通用類處理器(例如,具有向量指令增強之一通用處理器)上執行之軟體程式執行。儘管該第一種極端情況通常提供一高度多樣化應用軟體開發平台,然其使用與相關聯額外耗用(例如,指令提取及解碼、晶片上及晶片外資料的處置、推測執行)組合之較精細粒度資料結構最終導致在程式碼之執行期間每資料單元消耗更大量能量。 第二種相對極端情況對大得多的資料單元應用固定功能硬連線電路。使用直接應用於客製電路之(如與較精細粒度相反)更大資料單元很大程度上減少每資料單元之電力消耗。然而,使用客製固定功能電路通常導致處理器能夠執行的一組有限任務。因而,在該第二種極端情況中缺乏廣泛多樣化的程式設計環境(其與第一種極端情況相關聯)。 提供高度多樣化的應用軟體開發機會結合每資料單元之經改良電力效率兩者之一技術平台仍為一期望但缺失之解決方案。
本發明描述一種方法。該方法包含模擬一影像處理應用軟體程式之執行。該模擬包含利用模擬之行緩衝器記憶體攔截內核至內核通信,該等模擬之行緩衝器記憶體儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行。該模擬進一步包含在一模擬運行時間內追蹤儲存於各自行緩衝器記憶體中之各自影像資料量。該方法亦包含自該等經追蹤之各自影像資料量判定用於對應硬體行緩衝器記憶體之各自硬體記憶體分配。該方法亦包含產生組態資訊以供一影像處理器執行該影像處理應用軟體程式。該組態資訊描述用於該影像處理器之該等硬體行緩衝器記憶體之該等硬體記憶體分配。
1.0 獨特影像處理器架構 如此項技術中已知,用於執行程式碼之基本電路結構包含一執行階段及暫存器空間。該執行階段含有用於執行指令之執行單元。用於待執行之一指令之輸入運算元係自該暫存器空間提供至該執行階段。由執行階段執行一指令而產生之結果係被回寫至暫存器空間。 在一傳統處理器上執行一軟體執行緒需要透過執行階段循序執行一系列指令。最常見的是,在自一單個輸入運算元集產生一單個結果之意義上,操作係「純量的」。然而,在「向量」處理器之情況中,藉由執行階段執行一指令將自輸入運算元之一向量產生一結果向量。 圖1展示包含耦合至一個二維移位暫存器陣列102之一執行道陣列101之一獨特影像處理器架構100的一高階視圖。此處,該執行道陣列中之各執行道可被視為含有執行藉由該處理器100支援之指令集所需之執行單元的一離散執行階段。在各項實施例中,各執行道接收一相同指令以在一相同機器循環中執行,使得該處理器作為一個二維單指令多資料(SIMD)處理器操作。 各執行道在二維移位暫存器陣列102內之一對應位置中具有其自身專屬暫存器空間。例如,邊角執行道103在邊角移位暫存器位置104中具有其自身專屬暫存器空間,邊角執行道105在邊角移位暫存器位置106中具有其自身專屬暫存器空間等。 此外,移位暫存器陣列102能夠使其內容移位,使得各執行道能夠自其自身暫存器空間直接對在一先前機器循環期間駐存於另一執行道之暫存器空間中之一值操作。例如,一+1水平移位引起各執行道之暫存器空間自其最左相鄰者之暫存器空間接收一值。由於使值在沿著一水平軸之左右兩個方向上移位及使值在沿著一垂直軸之上下兩個方向上移位之一能力,處理器能夠有效處理影像資料之模板。 此處,如此項技術中已知,一模板係用作一基本資料單元之影像表面區域之一切片。例如,用於一輸出影像中之一特定像素位置之一新值可被計算為該特定像素位置在其內居中之一輸入影像之一區域中之像素值的一平均值。例如,若該模板具有3像素×3像素之一尺寸,則該特定像素位置可對應於3×3像素陣列之中間像素且該平均值可在該3×3像素陣列內之全部九個像素內予以計算。 根據圖1之處理器100之各種操作實施例,執行道陣列101之各執行道負責計算一輸出影像中之一特定位置之一像素值。因此,繼續上文剛剛提及之3×3模板求平均值實例,在移位暫存器內之初始載入輸入像素資料及八個移位操作之一經協調移位序列之後,執行道陣列中之各執行道將計算其對應像素位置之平均值所需之全部九個像素值接收至其局部暫存器空間中。即,處理器能夠同時處理居中於(例如)相鄰輸出影像像素位置處之多個重疊模板。因為圖1之處理器架構尤其擅長處理影像模板,所以其亦可被稱為一模板處理器。 圖2展示用於具有多個模板處理器202_1至202_N之一影像處理器之一架構200的一實施例。如圖2中所觀察,該架構200包含透過一網路204 (例如,一晶片上網路(NOC),包含一晶片上交換式網路、一晶片上環形網路或其他種類之網路)互連至複數個模板處理器單元202_1至202_N及對應截片產生器單元203_1至203_N之複數個行緩衝器單元201_1至201_M。在一項實施例中,任何行緩衝器單元201_1至201_M可透過該網路204連接至任何截片產生器單元203_1至203_N及對應模板處理器202_1至202_N。 程式碼經編譯及載入至一對應模板處理器202上以執行早期藉由一軟體開發者定義之影像處理器操作(例如,取決於設計及實施方案,亦可將程式碼載入至該模板處理器之相關聯截片產生器203上)。在至少一些例項中,可藉由將針對一第一管線階段之一第一內核程式載入至一第一模板處理器202_1中,將針對一第二管線階段之一第二內核程式載入至一第二模板處理器202_2中等,而實現一影像處理管線,其中該第一內核執行該管線之該第一階段之功能,該第二內核執行該管線之該第二階段之功能等,且設置額外控制流方法以將輸出影像資料自該管線之一個階段傳遞至該管線之下一階段。 在其他組態中,影像處理器可被實現為具有操作相同內核程式碼之兩個或兩個以上模板處理器202_1、202_2之一平行機。例如,可藉由跨各執行相同功能之多個模板處理器散佈圖框而處理影像資料之一高度緻密及高資料速率串流。 在又其他組態中,基本上內核之任何有向非循環圖(DAG)可藉由以下步驟載入至影像處理器上:在DAG設計中,用各自模板處理器其自身各自程式碼內核組態各自模板處理器;及將適當控制流攔截程式(hook)組態至硬體中以將來自一內核之輸出影像引導至下一內核之輸入。 作為一般流程,藉由一巨集I/O單元205接收影像資料之圖框且將該等圖框逐圖框地傳遞至行緩衝器單元201之一或多者。一特定行緩衝器單元將其影像資料圖框剖析成一較小影像資料區域(被稱為一「行群組」),且接著透過網路204將該行群組傳遞至一特定截片產生器。一完整或「全」單行群組可(例如)用一圖框之多個連續完整列或行之資料組成(為簡潔起見本說明書將主要指連續列)。截片產生器將影像資料之行群組進一步剖析成一較小影像資料區域(被稱為一「截片(sheet)」),且將該截片提呈給其對應模板處理器。 在具有一單個輸入之一影像處理管線或一DAG流程之情況中,一般而言,輸入圖框係引導至相同行緩衝器單元201_1,該相同行緩衝器單元201_1將影像資料剖析成行群組且將該等行群組引導至截片產生器203_1,該截片產生器203_1之對應模板處理器202_1執行該管線/DAG中之第一內核之程式碼。在完成該模板處理器202_1對其處理之行群組之操作之後,截片產生器203_1將輸出行群組發送至一「下游」行緩衝器單元201_2 (在一些使用情況中可將輸出行群組發送回至早期已發送輸入行群組之相同行緩衝器單元201_1)。 表示執行於其自身各自其他截片產生器及模板處理器(例如,截片產生器203_2及模板處理器202_2)上之管線/DAG中之下一階段/操作之一或多個「消耗者」內核接著自下游行緩衝器單元201_2接收藉由第一模板處理器202_1產生之影像資料。以此方式,操作於一第一模板處理器上之一「生產者」內核使其輸出資料轉發至操作於一第二模板處理器上之一「消耗者」內核,其中該消耗者內核依據整體管線或DAG之設計在該生產者內核後執行下一組任務。 如上文參考圖1所提及,各模板處理器202_1至202_N經設計以同時對影像資料之多個重疊模板處理。該多個重疊模板及模板處理器之內部硬體處理能力有效判定一截片之大小。又,如上文所論述,在模板處理器202_1至202_N之任一者內,執行道之若干陣列聯合操作以同時處理藉由該多個重疊模板覆蓋之影像資料表面區域。 此外,在各項實施例中,藉由一模板處理器202之對應(例如,局部)截片產生器203將影像資料之若干截片載入至該模板處理器之二維移位暫存器陣列中。據信截片及二維移位暫存器陣列結構的使用藉由將大量資料移動至大量暫存器空間中作為(例如)一單個載入操作(緊接在此之後藉由一執行道陣列對該資料直接執行處理任務)而有效提供電力消耗改良。此外,一執行道陣列及對應暫存器陣列的使用提供可易於程式化/組態之不同模板大小。關於行緩衝器單元、截片產生器及模板處理器之操作之更多細節係在下文章節3.0中進一步提供。2.0 按行緩衝器單元記憶體分配之判定 如可自上文論述理解,硬體平台能夠支援大量不同應用軟體程式結構。即,可支援實際無限數目個不同且複雜的內核至內核連接。 理解針對任何特定軟體應用程式應對各行緩衝器單元201_1至201_M分配多少記憶體空間具有挑戰性。此處,在一項實施例中,行緩衝器單元之不同者存取已(例如)自一實體上共用記憶體分配給其自身各自記憶體。因此,一行緩衝器單元可更一般地被特性化為一行緩衝器記憶體。在程式執行期間,一行緩衝器單元將其(例如)自一生產內核接收之資料暫存儲存至其各自記憶體中。在一消耗內核準備接收該資料之後,該行緩衝器單元自其各自記憶體讀取該資料且將該資料轉發至該消耗內核。 在行緩衝器單元之一或多者或所有者實體耦合至一相同共用記憶體資源之後,執行於影像處理器上之一應用軟體程式之組態因此包含定義應對共用該記憶體資源之各行緩衝器單元個別分配該共用記憶體資源之多少記憶體容量。清晰表述用於各行緩衝器單元之一可行記憶體分配可能非常難以判定,尤其對於具有複雜資料流及相關聯資料相依性之複雜應用軟體程式。 圖3展示一例示性略複雜應用軟體程式(或其部分)及其在影像處理器上之行緩衝器單元組態之一實例。在各項實施方案中,允許一生產內核產生用於不同消耗內核之分離、不同輸出影像串流。此外,亦允許一生產內核產生由兩個或兩個以上不同內核消耗之一單個輸出串流。最後,在各項實施例中,一行緩衝器單元可自唯一生產內核接收一輸入串流但能夠將該串流饋送至一或多個消耗內核。 圖3之應用軟體組態展現此等組態可能性之各者。此處,內核K1產生針對內核K2及K3之兩者之一第一資料串流且產生針對內核K4之一第二、不同資料串流。內核K1將該第一資料串流發送至行緩衝器單元304_1,該行緩衝器單元304_1將該資料轉發至內核K2及K3之兩者。內核K1亦將該第二資料串流發送至行緩衝器單元304_2,該行緩衝器單元304_2將該資料轉發至內核K4。此外,內核K2將一資料串流發送至內核K4且內核K3將一資料串流發送至內核K4。內核K2將其資料串流發送至行緩衝器單元304_3,該行緩衝器單元304_3將該資料轉發至內核K4。內核K3將其資料串流發送至行緩衝器單元304_4,該行緩衝器單元304_4將該資料轉發至內核K4。 此處,難以明確計算唯一分配給行緩衝器單元304_1至304_4之各者之記憶體量。將各此記憶體分配看作一佇列,若行緩衝器單元將隨時間流逝自一生產內核接收大量資料,則所需記憶體量趨於增加。相比而言,若行緩衝器單元將隨時間流逝自該生產內核接收少量資料,則所需記憶體量趨於減少。同樣地,若行緩衝器單元將隨時間流逝將少量資料發送至更多消耗內核,則所需記憶體量趨於增加,或若行緩衝器單元將隨時間流逝將大量資料發送至更少消耗內核,則所需記憶體量趨於減少。 行緩衝器單元將隨時間流逝自生產者內核接收之資料量可依據以下各項之任一者而變化:1)生產內核對其自身輸入資料具有之相依性;2)生產內核產生輸出資料之速率,不考慮上文1)之相依性/速率;及3)生產內核發送至行緩衝器單元之資料單元之大小。同樣地,行緩衝器單元將隨時間流逝發送之資料量可依據以下各項之任一者而變化:1)生產內核饋送之消耗內核之數目;2) 1)之該等消耗內核之各者準備接收新資料之各自速率(其可依據該等消耗內核具有之其他資料相依性而變化);及3)該(等)消耗內核自行緩衝器單元接收之資料單元之大小。 因為至少對於略複雜應用軟體程式結構,各種相互相依性及連接速率之複雜性質使得明確計算待分配給各行緩衝器單元之正確記憶體空間量變得非常困難,所以在各項實施例中,採取一啟發式方法,該啟發式方法在一模擬環境中模擬運行時間之前應用軟體程式之執行且監測由該模擬程式之內部資料流所引起之各行緩衝器單元處之成佇列資料量。 圖4描繪用於設置模擬環境之針對圖3之應用軟體程式之一預備程序。在一項實施例中,藉由使各內核剝除其載入指令及其儲存指令而建立針對各內核之一模擬模型。一內核之載入指令對應於該內核消耗來自一行緩衝器單元之輸入資料且一內核之儲存指令對應於該內核產生輸出資料以寫入至一行緩衝器單元中。如上文所論述,一內核可經組態以自(例如)多個不同內核/行緩衝器單元接收多個不同輸入串流。因而,實際內核及其模擬模型內核可包含多個載入指令(每個針對各不同輸入串流)。又如上文所論述,一內核(且因此一模擬模型內核)可經組態以對不同內核饋送不同產生串流。因而,一實際內核及其模擬模型內核可包含多個儲存指令。 參考圖4,模擬模型內核K1展示一載入指令(LD_1)及兩個儲存指令(ST_1及ST_2),此與展示內核K1接收一輸入串流(至影像處理器之輸入資料)及提供兩個輸出串流(一個至行緩衝器單元304_1且另一個至行緩衝器單元304_2)之圖3中之內核K1之描繪一致。圖4亦展示針對模擬模型內核K2之一載入指令及一儲存指令,此與展示內核K2自行緩衝器單元304_1接收一輸入串流且產生至行緩衝器單元304_3之一輸出串流之圖3中之內核K2之描繪一致。圖4亦展示針對模擬模型內核K3之一載入指令及一儲存指令,此與展示內核K3自行緩衝器單元304_1接收一輸入串流且產生至行緩衝器單元304_4之一輸出串流之圖3中之內核K3之描繪一致。最後,圖4展示模擬模型內核K4具有三個載入指令及一儲存指令,此與展示內核K3自行緩衝器單元304_2接收一第一輸入串流,自行緩衝器單元304_3接收一第二輸入串流及自行緩衝器單元304_4接收一第三輸入串流之圖3中之內核K4之描繪一致。內核K4亦在圖3中展示為產生一輸出串流。 如藉由圖4之迴路401_1至401_4所指示,模擬模型內核(如實際內核)重複成迴路。即,在執行開始時一內核執行其(若干)載入指令以接收其輸入資料,在執行結束時一內核執行其儲存指令以自其自其載入指令接收之該輸入資料產生其輸出資料。接著程序重複。在各項實施例中,各模擬模型內核亦可含有指示該內核對輸入資料執行操作以產生其輸出資料時消耗之時間量(其傳播延遲)之一值。即,該模擬模型內核並不允許其儲存指令執行直至已執行其載入指令之後的一些數目個循環為止。此外,在各項實施例中,為減少執行模擬所消耗之時間,內核模型被剝除其實際影像處理常式。即,模擬未執行任何實際影像處理,僅模擬「虛擬」資料之資料傳送。 在已建構模擬模型內核之後,依據整體應用軟體程式之設計/架構使其透過行緩衝器單元之各自模擬模型彼此連接。基本上,繼續使用圖3之應用軟體程式作為一實例,在一模擬環境中建構應用軟體程式300之一模擬模型,其中該模擬模型含有依據圖3中所描繪之架構,透過行緩衝器單元304_1至304_4之各自模擬模型互連之圖4之內核K1至K4之模擬模型。 為研究各行緩衝器單元處之記憶體需求,將一模擬輸入影像資料串流(例如,圖3之輸入影像資料301之一模擬)提呈給應用程式之模擬模型。該應用軟體程式之該模擬模型接著執行,其中模擬模型內核透過其(若干)載入指令之執行重複消耗模擬量之輸入資料,藉由其(若干)儲存指令自該經接收之輸入資料產生模擬量之輸出資料且重複。 此處,各模擬載入指令可併入有或以其他方式基於存在於原始源內核中之一些輸入影像資料格式化(諸如一輸入行群組中之行數目、最大輸入行群組速率、輸入區塊之尺寸/大小、最大輸入區塊速率等)以判定經消耗之輸入資料之模擬量及速率。同樣地,各儲存指令可指定或以其他方式基於存在於原始源內核中之一些輸出影像格式化(諸如一輸出行群組中之行數目、最大輸出行群組速率、輸出區塊之尺寸/大小、最大輸出區塊速率等)以判定經產生之輸出資料之量及速率。在一項實施例中,內核模型之載入/儲存指令及行緩衝器單元模型對其處置反映應用軟體及基礎硬體平台之實際交握,因為(例如)經產生之影像資料之一特定下一部分係藉由一生產模型內核之儲存指令識別且所請求之影像資料之一特定下一部分係藉由消耗模型內核之載入指令識別。 各行緩衝器單元模型自其各自生產模型內核接收其各自模擬輸入串流且將其儲存至具有(例如)無限容量之一模擬記憶體資源中。又,每資料交換(transaction)傳送之資料量係與生產模型內核之原始源內核之量一致。在藉由行緩衝器單元模型接收之影像串流之(若干)消耗內核執行其各自載入指令時,其依據與其原始源內核之每資料交換量請求來自該行緩衝器單元模型之輸入影像串流之下一量。作為回應,行緩衝器單元模型提供來自其記憶體資源之下一、所請求之資料單元。 在應用軟體程式之模型在模擬環境中執行時,各行緩衝器單元模型之各自記憶體狀態將隨著回應於其(若干)消耗內核之載入指令請求自其讀取之活動及回應於其消耗內核之儲存指令請求寫入至其活動而起伏。為最後判定各行緩衝器單元之記憶體容量需求,如圖5a及圖5b中所展示,各行緩衝器單元模擬模型包含一寫入指標及讀取指標。該寫入指標指定目前為止來自一生產內核模型之多少輸入影像資料已寫入至行緩衝器單元模型之記憶體中。該讀取指標指定目前為止已自該行緩衝器單元模型之記憶體讀取多少經寫入輸入影像資料以服務來自該行緩衝器單元模型之(若干)消耗內核模型之載入指令請求。 圖5a之描繪指示一特定消耗內核每載入指令請求請求X量之影像資料(X可對應於(例如)特定數目個影像行、對應於一區塊大小等)。即,在消耗內核模型已被發送引導至讀取指標之資料量的情況下,行緩衝器單元將無法服務來自消耗內核模型之下一載入指令請求直至寫入至記憶體中之資料量達到對應於讀取指標+X之一量為止(即,直至寫入指標指向等於讀取指標+X之一值)。如圖5a中明確描繪,寫入指標尚未達到此位準。因而,若消耗內核已請求下一量(高達讀取指標+X),則該消耗內核當前停止以等待來自生產內核之更多輸出資料寫入至記憶體中。若消耗內核尚未請求下一量,則其在技術上尚未停止,且因此仍有時間供生產內核至少提供等於((讀取指標+X)—寫入指標)之一量使得其可在消耗內核請求其之前被寫入至記憶體中。此特定事件係在圖5b中描繪。 一行緩衝器單元所需之記憶體容量之最大量係在應用軟體程式之足夠長的模擬運行時間執行期間讀取指標與寫入指標之間的最大所觀察差異。因此,針對各行緩衝器單元之記憶體容量之判定需要模擬程式之執行達足夠數目個循環,同時連續追蹤寫入指標與讀取指標之間的差異且記錄各新的最大所觀察差異。在完成足夠數目個執行循環之後,針對各行緩衝器單元模型之其餘經記錄之最大所觀察差異(其對應於在整個模擬期間觀察之最大差異)對應於各行緩衝器單元所需之記憶體容量。 在各項實施例中,為避免其中一生產者依比其(若干)消耗者可消耗輸出資料快很多之一速率產生輸出資料,藉此引起行緩衝器單元連續寫入至其記憶體且無限制地使用其無限容量之一不現實條件,各內核模型亦包含在其儲存指令之各者下強制執行之一寫入政策。 即,該寫入政策用作對用生產內核模型之輸出資料寫入至之行緩衝器單元記憶體之量的檢查。明確言之,在一項實施例中,未執行一生產內核之儲存指令直至停止(亦被稱為「準備」)所有對應消耗內核為止。即,僅在針對消耗內核之各者之讀取指標+X大於針對一生產內核之影像串流之寫入指標時允許執行該生產內核之載入指令。 在此狀態中,停止消耗內核之各者(其無法執行針對生產內核之影像串流之其下一單元之其各自載入指令,此係因為尚未藉由生產內核產生資料且將其寫入至行緩衝器單元記憶體中)。因而,模擬環境之特徵在於生產者無法執行針對引導至一特定行緩衝器單元之一特定輸出串流之一儲存指令,直至消耗來自該行緩衝器單元之輸出串流之內核之各者在其各自載入指令下停止,該載入指令將自該行緩衝器單元載入該串流之下一資料單元。又,儘管此可能係實際系統之非典型運行時間行為,但其大致對行緩衝器單元處所需之記憶體量設定一上界(如使用實施中之寫入政策藉由最大所觀察寫入指標對讀取指標差異判定)。 若(例如)對各行緩衝器單元實際分配之記憶體量相同於(或略微大於)自最大所觀察寫入指標對讀取指標差異所判定之量,則實際系統可能永遠不會經歷任何消耗者停止,此係因為生產者通常隨意執行儲存指令直至行緩衝器單元記憶體變滿為止(此時,實際系統中之行緩衝器單元將不會允許生產者發送任何更多資料)。然而,因為在模擬期間不允許各生產者執行其儲存指令直至停止所有其消耗者為止,所以如透過模擬判定之記憶體分配針對一實際系統轉化為一生產者大約不遲於其消耗者將停止之時產生新資料供消耗。因而,一般而言,消耗者不應在一真實系統中停止。以此方式,模擬結果基本上判定各行緩衝器單元處所需之最小記憶體容量。 理想上,在足夠數目個模擬運行時間循環之後,可判定待分配至各行緩衝器單元之記憶體量。然而,在各種模擬運行時間體驗中,模擬系統可達到其中資料無法在該系統中之任何地方流動之總體僵局(deadlock)。即,因為尚未產生資料,所以該系統中之所有內核無法執行下一載入指令,且所有生產者無法寫入下一資料量(例如,因為其自身載入指令已停止且生產內核無新輸入以自其產生輸出資料)。 若系統達到如上所描述之總體僵局,則分析系統狀態且找到一僵局循環。一僵局循環係應用程式之資料流內之一閉合迴路,其包含一特定經停止載入等待一特定儲存執行,但該特定儲存無法執行,此係因為其在等待執行該經停止載入(應注意,該經停止載入及該經停止儲存並不一定與彼此直接通信之內核相關聯)。 例如,在圖3之軟體程式之模擬模型中,自行緩衝器單元304_4讀取資料之K4內核之模型之載入指令可等待由內核K3產生資料。此特定載入之停止基本上停止全部內核K4,此因此防止自行緩衝器304_2讀取之K4之載入指令執行。若行緩衝器304_2之狀態使得寫入指標領先於讀取指標+X (例如,因為K1在行緩衝器304_2中寫入大量資料單元),則寫入至行緩衝器304_2中之K1之儲存指令將停止,此停止全部K1,包含寫入至行緩衝器304_1中之儲存指令。 因為未寫入至行緩衝器304_1,所以停止K3,此完成僵局循環之識別分析。即,僵局循環運行為:1)自K1通過行緩衝器單元304_1至內核K3;2)自內核K3通過行緩衝器單元304_4至內核K4;及3)自內核K4通過行緩衝器304_2返回至內核K1。在存在此特定僵局循環之情況下,K2亦將停止,從而導致整個系統之總體僵局(且此亦產生系統內之更多僵局循環)。在一項實施例中,一旦已識別一僵局循環,即允許沿著該循環之一經停止儲存指令向前推進一個資料單元,希望該推進將「啟動」系統返回操作。例如,若將寫入至行緩衝器單元304_1中之內核K1之儲存指令向前推進一個資料單元,則引起內核K3之經停止載入指令之執行可能係足夠的,此繼而可引起系統再次開始操作。 在一項實施例中,僅允許沿著僵局循環之一經停止儲存指令向前推進一個單元。若該推進並未引起系統再次開始操作,則選取沿著僵局循環之另一儲存指令用於推進。每次選擇一個儲存指令用於推進之程序繼續進行直至在允許沿著僵局循環之所有儲存指令向前推進一個資料單元之後系統開始操作或保持於總體僵局中為止。若達到後者條件(系統保持於總體僵局中),則選取沿著僵局循環之寫入器之一者且允許其自由寫入以希望系統將再次開始操作。若系統並未開始操作,則選取沿著僵局循環之另一儲存指令且允許其自由寫入等。最後,系統應開始操作。 在各項實施例中,生產/消耗內核模型可根據不同傳輸模式將影像資料發送至其各自行緩衝器單元模型或自其各自行緩衝器單元模型讀取影像資料。根據一第一模式(被稱為「全行群組」),在一內核模型與一行緩衝器單元模型之間傳輸若干相同寬度影像資料行。 圖6a及圖6b描繪全行群組模式操作之一實施例。如圖6a中所觀察,影像區域600對應於影像資料之一全圖框或影像資料之一全圖框之一區段(讀者將理解所描繪之矩陣展示整個影像之不同像素位置)。如圖6a中所描繪,在一內核模型與行緩衝器單元模型之間發送之影像資料之第一傳送(例如,一第一封包)含有一第一群組之相同寬度影像行601,該等影像行601跨經傳送之圖框完全延伸至經傳送之一圖框之區段600。接著,如圖6b中所描繪,一第二傳送含有跨圖框或其區段600完全延伸之一第二群組之相同寬度影像行602。 此處,圖6a之群組601之傳送將使行緩衝器單元模型之寫入指標及/或讀取指標向前推進一個單元。同樣地,圖6b之群組602之傳送將使行緩衝器單元模型之寫入指標及/或讀取指標向前推進另一單元。因而,上文參考圖5a及圖5b描述之寫入指標及讀取指標行為係與全行群組模式一致。 另一傳送模式(被稱為「實際上高」)可用於傳送影像資料區塊(影像資料之二維表面區域)。此處,如上文參考圖1所論述且如下文更詳細說明,在各項實施例中,整個影像處理器之一或多個處理核心各包含一個二維執行道陣列及一個二維移位暫存器陣列。因而,一處理核心之暫存器空間係載入有影像資料之全部區塊(而非僅純量或單個向量值)。 依據藉由處理核心處理之資料單元之二維性質,實際上高模式能夠傳送影像資料區塊,如圖6c及圖6d中所描繪。參考圖6c,最初一較小高度全寬行群組611係(例如)自一第一生產內核模型傳送至一行緩衝器單元模型。自此開始,至少對於影像區域600,影像資料係依較小寬度行群組612_1、612_2等自生產內核模型傳送至行緩衝器單元模型。 此處,較小寬度行群組612_1係在(例如)一第二生產內核模型中傳送至行緩衝器單元模型資料交換。接著,如圖6d中所觀察,下一較小寬度行群組612_2係在(例如)一第三生產內核模型中傳送至行緩衝器單元模型資料交換中。因而,行緩衝器單元模型寫入指標最初遞增達一大值(以表示全行群組611之傳送)但接著遞增達較小值(例如,一第一較小值,以表示較小寬度行群組612_1之傳送,且接著增加下一較小值以表示較小寬度行群組612_2之傳送)。 如上文所描述,圖6c及圖6d展示將藉由一生產內核模型發送之內容寫入至行緩衝器單元模型記憶體中。消耗內核模型可經組態以亦接收如上所描述之影像資料(在此情況中讀取指標行為係與上文剛描述之寫入指標行為相同),或在行緩衝器記憶體中形成影像資料區塊時接收該等影像資料區塊。 即,相對於後者,消耗內核模型最初並未被發送第一全行群組611。而是在將第一較小行寬行群組612_1寫入至行緩衝器記憶體中之後,消耗內核模型最初被發送對應於一第一5×5像素值陣列(其底部邊緣係藉由較小寬度行群組612_1之底部邊緣勾勒)之一資料量。接著,在將第二較小行寬行群組612_2寫入至行緩衝器記憶體中之後,消耗模型被發送一第二5×5像素值陣列(其底部邊緣係藉由較小行寬行群組612_2勾勒)。在如上所述之至消耗內核模型之區塊傳送之情況中,如圖6e中所描繪,待傳送之下一量包含更近期已寫入至行緩衝器記憶體中之一較小資料片段及一定時間之前寫入至行緩衝器記憶體中之一較大資料片段。 圖7展示上文所描述之用於判定按行緩衝器單元記憶體分配之一方法。該方法包含模擬一影像處理應用軟體程式之執行701。該模擬包含攔截702與儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行之行緩衝器記憶體之模型的內核至內核通信。該模擬進一步包含在一模擬運行時間內追蹤703儲存於各自模擬行緩衝器記憶體中之各自影像資料量。該方法亦包含自該等經追蹤之各自影像資料量判定704用於對應硬體行緩衝器記憶體之各自硬體記憶體分配。 可至少部分藉由鑑於彼此按比例調整模擬行緩衝器記憶體而實施自模擬行緩衝器記憶體儲存狀態之經追蹤觀察判定硬體記憶體分配。例如,若一第一模擬行緩衝器記憶體展現兩倍於一第二模擬行緩衝器記憶體之一最大寫入對讀取指標差異,則用於該第一硬體行緩衝器單元之對應實際硬體記憶體分配將為用於該第二硬體行緩衝器單元之對應實際硬體記憶體分配之約兩倍。將相應按比例調整其餘分配。 在已針對應用軟體程式判定記憶體分配之後,該應用軟體程式可用組態資訊進行組態以運行於目標影像處理器上,其中該組態資訊通知該影像處理器之硬體根據由模擬作出之判定將多少行緩衝器單元記憶體空間分配給各自硬體行緩衝器單元。該組態資訊亦可包含(例如)指派內核執行於影像處理器之特定模板處理器上且產生特定硬體行緩衝器單元及自特定硬體行緩衝器單元消耗。針對應用程式產生之組態資訊之主體(corpus)可接著(例如)載入至影像處理器之組態暫存器空間及/或組態記憶體資源中以「設置」影像處理器硬體以執行該應用程式。 在各項實施例中,前述行緩衝器單元可更一般被特性化為在生產內核與消耗內核之間儲存及轉發影像資料之緩衝器。即,在各項實施例中,一緩衝器並不一定需要使行群組成佇列。此外,影像處理器之硬體平台可包含具有相關聯記憶體資源之複數個行緩衝器單元且一或多個行緩衝器可經組態以自一單個行緩衝器單元操作。即,硬體中之一單個行緩衝器單元可經組態以在不同生產/消耗內核對之間儲存及轉發不同影像資料流。 在各項實施例中,可在模擬期間模擬實際內核而非模擬其模型。又進一步,在模擬期間在內核與行緩衝器單元之間傳輸之影像資料可為影像資料之表示(例如,若干行,其中各行應被理解為對應於一特定資料大小)。為簡潔起見,術語影像資料應被理解為應用於實際影像資料或影像資料之一表示。3.0 影像處理器實施方案實施例 圖8a至圖8e至圖12提供關於上文詳細描述之影像處理器及相關聯模板處理器之各項實施例之操作及設計的額外細節。回顧圖2之一行緩衝器單元饋送行群組至一模板處理器之相關聯截片產生器之論述,圖8a至圖8e以一行緩衝器單元201之剖析活動、一截片產生器單元203之較精細粒度剖析活動兩者以及耦合至該截片產生器單元203之模板處理器702之模板處理活動之一高階實施例進行繪示。 圖8a描繪影像資料801之一輸入圖框之一實施例。圖8a亦描繪一模板處理器經設計以對其操作之三個重疊模板802 (各具有3像素×3像素之一尺寸)之一輪廓。各模板分別針為其產生輸出影像資料之輸出像素係以純黑色突顯。為簡潔起見,該三個重疊模板802係描繪為僅在垂直方向上重疊。應該認識到,實際上一模板處理器可經設計以在垂直及水平兩個方向上具有重疊模板。 由於模板處理器內之垂直重疊模板802,如圖8a中所觀察,圖框內存在一單個模板處理器可對其操作之大量影像資料。如下文將更詳細論述,在一項實施例中,模板處理器以跨影像資料從左至右之一方式處理其重疊模板內之資料(且接著對於下一組行以頂部至底部順序重複)。因此,在模板處理器持續進行其操作時,純黑色輸出像素區塊之數目將水平地向右增長。如上文所論述,一行緩衝器單元201係負責剖析足以使模板處理器在擴展數目個即將來臨的循環內對其操作之來自一傳入圖框之輸入影像資料之一行群組。一行群組之一例示性描繪係繪示為一陰影區域803。在一項實施例中,行緩衝器單元201可理解用於發送一行群組至一截片產生器或自一截片產生器接收一行群組之不同動態。例如,根據一模式(被稱為「全群組」),在一行緩衝器單元與一截片產生器之間傳遞完整全寬影像資料行。根據一第二模式(被稱為「實際上高」),最初以全寬列之一子集傳遞一行群組。接著以較小(小於全寬)片段循序傳遞其餘列。 在輸入影像資料之行群組803已藉由行緩衝器單元定義且傳遞至截片產生器單元之情況下,該截片產生器單元將該行群組進一步剖析成更精確匹配模板處理器之硬體限制之更精細截片。更明確言之,如下文將更進一步詳細描述,在一項實施例中,各模板處理器由一個二維移位暫存器陣列組成。該二維移位暫存器陣列基本上使影像資料在一執行道陣列「下方」移位,其中該移位之型樣引起各執行道對其自身各自模板內之資料操作(即,各執行道對其自身資訊模板處理以產生用於該模板之一輸出)。在一項實施例中,截片係輸入影像資料之「填充」或以其他方式載入至二維移位暫存器陣列中之表面區域。 如下文將更詳細描述,在各項實施例中,實際上存在可在任何循環內移位之多層二維暫存器資料。為方便起見,本發明描述的大部分將僅使用術語「二維移位暫存器」及類似者來指代具有可移位之一或多個此等層之二維暫存器資料之結構。 因此,如圖8b中所觀察,截片產生器剖析來自行群組803之一初始截片804且將其提供至模板處理器(此處,該資料截片對應於一般藉由元件符號804識別之陰影區域)。如圖8c及圖8d中所觀察,模板處理器藉由在截片上方以一從左至右方式有效移動重疊模板802而對輸入影像資料之截片操作。截至圖8d,耗盡可針對其自截片內之資料計算一輸出值之像素之數目(其他像素位置可能無自截片內之資訊判定之一輸出值)。為簡潔起見,已忽略影像之邊界區域。 如圖8e中所觀察,截片產生器接著對模板處理器提供下一截片805用以繼續操作。應注意,模板在其開始對該下一截片操作時之初始位置係自第一截片上之耗盡點(如先前圖8d中所描繪)向右之下一進程。關於新截片805,模板將簡單地在模板處理器以與第一截片之處理相同之方式對該新截片操作時持續向右移動。 應注意,歸因於模板之圍繞一輸出像素位置之邊界區域,在第一截片804之資料與第二截片805之資料之間存在一些重疊。可簡單藉由截片產生器兩次重新傳輸該重疊資料而處置該重疊。在交替實施方案中,為饋送下一截片至模板處理器,截片產生器可繼續進行以僅將新資料發送至該模板處理器且該模板處理器重新使用來自先前截片之重疊資料。 圖9展示一模板處理器架構900之一實施例。如在圖9中觀察,模板處理器包含一資料運算單元901、一純量處理器902及相關聯記憶體903以及一I/O單元904。資料運算單元901包含一執行道陣列905、二維移位陣列結構906及與陣列之特定列或行相關聯之分開隨機存取記憶體907_1至907_R。 I/O單元904負責將自截片產生器接收之「輸入」資料截片載入至資料運算單元901中且將來自模板處理器之「輸出」資料截片儲存至截片產生器中。在一實施例中,將截片資料載入至資料運算單元901中需要將一所接收截片剖析成影像資料之列/行且將影像資料之列/行載入至二維移位暫存器結構906或執行道陣列之列/行之各自隨機存取記憶體907中(在下文更詳細描述)。若首先將截片載入至記憶體907中,則執行道陣列905內之個別執行道可接著在適當時將截片資料自隨機存取記憶體907載入至二維移位暫存器結構906中(例如,作為緊接在對截片之資料之操作之前的一載入指令)。在(無論直接自一截片產生器或自記憶體907)將一資料截片載入至暫存器結構906中完成之後,執行道陣列905之執行道對資料進行操作且最終將已完成資料作為一截片直接「寫回」至截片產生器或至隨機存取記憶體907中。若為後者,則I/O單元904自隨機存取記憶體907提取資料以形成一輸出截片,該輸出截片接著經轉發至截片產生器。 純量處理器902包含一程式控制器909,該程式控制器909自純量記憶體903讀取模板處理器之程式碼之指令且將指令發出至執行道陣列905中之執行道。在一實施例中,一單一相同指令經廣播至陣列905內之所有執行道以實現來自資料運算單元901之一類似SIMD行為。在一實施例中,自純量記憶體903讀取且發出至執行道陣列905之執行道之指令之指令格式包含一極長指令字組(VLIW)型格式,該格式包含每指令一個以上運算碼。在又一實施例中,VLIW格式包含引導藉由各執行道之ALU執行之一數學函數之一ALU運算碼(如下文描述,在一實施例中,其可指定一個以上傳統ALU操作)及一記憶體運算碼(其引導一特定執行道或執行道組之一記憶體操作)。 術語「執行道」係指能夠執行一指令之一組一或多個執行單元(例如,可執行一指令之邏輯電路)。然而,在各種實施例中,一執行道可包含除僅執行單元以外的更多類似處理器功能性。例如,除一或多個執行單元以外,一執行道亦可包含解碼一所接收指令之邏輯電路或(在更多類似MIMD設計之情況中)提取及解碼一指令之邏輯電路。關於類似MIMD方法,儘管已在本文中較大程度上描述一集中式程式控制方法,但可在各種替代實施例中實施一更分散式方法(例如包含陣列905之各執行道內之程式碼及一程式控制器)。 一執行道陣列905、程式控制器909及二維移位暫存器結構906之組合提供用於廣泛範圍之可程式功能之一廣泛可調適/可組態硬體平台。例如,考慮到個別執行道能夠執行廣泛範圍之功能且能夠在接近於任何輸出陣列位置處容易地存取輸入影像資料,應用軟體開發者能夠程式化具有廣泛範圍之不同功能能力以及尺寸(例如模板大小)之內核。 除充當用於藉由執行道陣列905操作之影像資料之一資料儲存器以外,隨機存取記憶體907亦可保持一或多個查找表。在各種實施例中,亦可在純量記憶體903內例示一或多個純量查找表。 一純量查找涉及將來自相同索引之相同查找表之相同資料值傳送至執行道陣列905內之執行道之各者。在各種實施例中,上文描述之VLIW指令格式經擴展以亦包含一純量運算碼,該純量運算碼將藉由純量處理器執行之一查找操作引導至一純量查找表中。指定與運算碼結合使用之索引可為一立即運算元或自某其他資料儲存位置提取。無論如何,在一實施例中,自純量記憶體內之一純量查找表之一查找本質上涉及在相同時脈循環期間將相同資料值傳播至執行道陣列905內之所有執行道。在下文進一步提供關於查找表之使用及操作之額外細節。 圖9b概述上文論述之(若干) VLIW指令字組實施例。如在圖9b中觀察,VLIW指令字組格式包含三個分開指令之欄位:1)一純量指令951,其藉由純量處理器執行;2)一ALU指令952,其藉由執行道陣列內之各自ALU以SIMD方式傳播及執行;及3)一記憶體指令953,其以一部分SIMD方式傳播及執行(例如,若沿著執行道陣列中之一相同列之執行道共用一相同隨機存取記憶體,則來自不同列之各者之一個執行道實際上執行指令(記憶體指令953之格式可包含識別來自各列之哪一執行道執行指令之一運算元))。 亦包含一或多個立即運算元之一欄位954。可在指令格式中識別哪一指令951、952、953使用哪一立即運算元資訊。指令951、952、953之各者亦包含其自身各自輸入運算元及所得資訊(例如,用於ALU操作之局部暫存器及用於記憶體存取指令之一局部暫存器及一記憶體位址)。在一實施例中,在執行道陣列內之執行道執行其他指令952、953之任一者之前藉由純量處理器執行純量指令951。即,VLIW字組之執行包含執行純量指令951之一第一循環,其後接著可執行其他指令952、953之一第二循環(應注意,在各種實施例中,可平行執行指令952及953)。 在一實施例中,藉由純量處理器執行之純量指令包含發出至截片產生器以自資料運算單元之記憶體或2D移位暫存器載入截片/將截片儲存至資料運算單元之記憶體或2D移位暫存器中之命令。此處,截片產生器之操作可取決於行緩衝器單元之操作或防止截片產生器完成藉由純量處理器發出之任何命令將花費之循環數目之運行時間之前的理解之其他變量。因而,在一實施例中,任何VLIW字組(其純量指令951對應於或另外導致一命令發出至截片產生器)亦包含其他兩個指令欄位952、953中之無操作(NOOP)指令。程式碼接著進入指令欄位952、953之NOOP指令之一迴圈直至截片產生器完成其至資料運算單元之載入/自資料運算單元之儲存。此處,在將一命令發出至截片產生器之後,純量處理器可設定截片產生器在完成命令之後重設之一互鎖暫存器之一位元。在NOOP迴圈期間,純量處理器監測互鎖暫存器之位元。當純量處理器偵測到截片產生器已完成其命令時,正常執行再次開始。 圖10展示一資料運算組件1001之一實施例。如在圖10中觀察,資料運算組件1001包含邏輯地定位於二維移位暫存器陣列結構1006「上方」之一執行道陣列1005。如上文論述,在各種實施例中,由一截片產生器提供之影像資料之一截片經載入至二維移位暫存器1006中。執行道接著對來自暫存器結構1006之截片資料進行操作。 執行道陣列1005及移位暫存器結構1006相對於彼此固定在適當位置中。然而,移位暫存器陣列1006內之資料以一戰略性且協調方式移位以導致執行道陣列中之各執行道處理資料內之一不同模板。因而,各執行道判定所產生之輸出截片中用於一不同像素之輸出影像值。自圖10之架構,應明白,重疊模板不僅垂直配置而且水平配置,因為執行道陣列1005包含垂直相鄰執行道以及水平相鄰執行道。 資料運算單元1001之一些顯著架構特徵包含具有寬於執行道陣列1005之尺寸之移位暫存器結構1006。即,執行道陣列1005外部存在暫存器之一「光暈(halo)」1009。儘管光暈1009經展示為存在於執行道陣列之兩側上,但取決於實施方案,光暈可存在於執行道陣列1005之較少(一個)或較多(三個或四個)側上。在資料在執行道1005「下方」移位時,光暈1009用於為溢出執行道陣列1005之邊界外部之資料提供「外溢」空間。作為一簡單情況,以執行道陣列1005之右邊緣為中心之一5×5模板在模板之最左像素被處理時,將需要進一步向右之四個光暈暫存器位置。為易於繪製,當在一標稱實施例中,任一側(右側、底側)上之暫存器將具有水平連接及垂直連接兩者時,圖10將光暈之右側之暫存器展示為僅具有水平移位連接且將光暈之底側之暫存器展示為僅具有垂直移位連接。在各種實施例中,光暈區域並不包含用以執行影像處理指令之對應執行道邏輯(例如,不存在ALU)。然而,個別記憶體存取單元(M)存在於光暈區域位置之各者中,使得個別光暈暫存器位置可個別地自記憶體載入資料及將資料儲存至記憶體。 藉由耦合至陣列中之各列及/或各行或其部分之隨機存取記憶體1007_1至1007_R提供額外外溢空間(例如,一隨機存取記憶體可經指派至跨越4個執行道列及2個執行道行之執行道陣列之一「區域」。為簡單起見,本申請案之其餘部分將主要參考基於列及/或行之分配方案。)此處,若一執行道之內核操作要求其處理二維移位暫存器陣列1006外部之像素值(一些影像處理常式可能要求此),則影像資料平面能夠例如自光暈區域1009進一步外溢至隨機存取記憶體1007中。例如,考量一6×6模板,其中硬體包含在執行道陣列之右邊緣上之一執行道之右側之僅四個儲存元件之一光暈區域。在此情況中,資料將需要進一步移位至光暈1009之右邊緣之右側以完全處理模板。移位至光暈區域1009外部之資料將接著外溢至隨機存取記憶體1007。下文進一步提供圖9之隨機存取記憶體1007及模板處理器之其他應用。 圖11a至圖11k展現影像資料如上文提及般在執行道陣列「下方」之二維移位暫存器陣列內移位之方式之一工作實例。如在圖11a中觀察,在一第一陣列1107中描繪二維移位陣列之資料內容且藉由一圖框1105描繪執行道陣列。而且,簡單化地描繪執行道陣列內之兩個相鄰執行道1110。在此簡單化描繪1110中,各執行道包含可自移位暫存器接受資料、自一ALU輸出(例如,表現為跨循環之一累加器)接受資料或將輸出資料寫入至一輸出目的地中之一暫存器R1。 各執行道亦可在一局部暫存器R2中獲得二維移位陣列中其「下方」之內容。因此,R1係執行道之一實體暫存器,而R2係二維移位暫存器陣列之一實體暫存器。執行道包含可對由R1及/或R2提供之運算元進行操作之一ALU。如將在下文進一步更詳細描述,在一實施例中,實際上使用每陣列位置之多個儲存器/暫存器元件(之一「深度」)實施移位暫存器,但移位活動限於儲存元件之一個平面(例如,儲存元件之僅一個平面可在每循環移位)。圖11a至圖11k描繪如用於儲存來自各自執行道之結果X之此等較深暫存器位置之一者。為易於繪示,較深所得暫存器經繪製成並排於其對應暫存器R2而非在其對應暫存器R2下方。 圖11a至圖11k集中於兩個模板之計算,兩個模板之中心位置與在執行道陣列內描繪之該對執行道位置1111對準。為易於繪示,該對執行道1110經繪製成水平相鄰者,實際上,當根據以下實例時,其係垂直相鄰者。 如首先在圖11a中觀察,執行道以其中心模板位置為中心。圖11b展示藉由兩個執行道執行之目的碼。如在圖11b中觀察,兩個執行道之程式碼導致移位暫存器陣列內之資料向下移位一個位置且向右移位一個位置。此將兩個執行道對準至其各自模板之左上角。程式碼接著導致定位於(R2中)其各自位置中之資料經載入至R1中。 如在圖11c中觀察,程式碼接著導致該對執行道使移位暫存器陣列內之資料向左移位一個單位,此導致在各執行道之各自位置之右側之值移位至各執行道之位置中。R1中之值(先前值)接著與已移位至執行道之位置中(R2中)之新值相加。結果經寫入至R1中。如在圖11d中觀察,重複相同於上文針對圖11c描述之程序,此導致結果R1現在包含上執行道中之值A+B+C及下執行道中之F+G+H。此時,兩個執行道已處理其各自模板之上列。應注意,外溢至執行道陣列之左側上之一光暈區域中(若一個光暈區域存在於左手側上)或至隨機存取記憶體中(若一光暈區域不存在於執行道陣列之左手側上)。 如在圖11e中觀察,程式碼接著導致移位暫存器陣列內之資料向上移位一個單位,此導致兩個執行道與其各自模板之中間列之右邊緣對準。兩個執行道之暫存器R1當前包含模板之頂列及中間列之最右值之總和。圖11f及圖11g展現跨兩個執行道之模板之中間列向左移動之連續進展。累積加法繼續,使得在圖11g之處理結束時,兩個執行道包含其各自模板之頂列及中間列之值之總和。 圖11h展示使各執行道與其對應模板之最下列對準之另一移位。圖11i及圖11j展示完成對兩個執行道之模板之進程之處理之連續移位。圖11k展示使各執行道與其在資料陣列中之正確位置對準且將結果寫入至其額外移位。 在圖11a至圖11k之實例中,應注意,用於移位操作之目的碼可包含識別在(X,Y)座標中表達之移位之方向及量值之一指令格式。例如,用於向上移位一個位置之目的碼可在目的碼中表達為SHIFT 0,+1。作為另一實例,向右移位一個位置可在目的碼中表達為SHIFT +1,0。在各種實施例中,亦可在目的碼中指定具有較大量值之移位(例如SHIFT 0,+2)。此處,若2D移位暫存器硬體僅支援每循環一個位置之移位,則指令可藉由機器解釋為需要多個循環執行,或2D移位暫存器硬體可經設計以支援每循環一個以上位置之移位。下文進一步更詳細描述後者之實施例。 圖12展示用於一執行道及對應移位暫存器結構之單元胞之另一更詳細描繪(在各種實施例中,光暈區域中之暫存器不包含一對應執行道但包含一記憶體單元)。在一實施例中,藉由在執行道陣列之各節點處例示圖12中觀察之電路而實施與執行道陣列中之各位置相關聯之執行道及暫存器空間。如在圖12中觀察,單元胞包含耦合至由四個暫存器R2至R5構成之一暫存器檔案1202之一執行道1201。在任何循環期間,執行道1201可自暫存器R1至R5之任一者讀取或寫入至暫存器R1至R5之任一者。對於需要兩個輸入運算元之指令,執行道可自R1至R5之任一者擷取兩個運算元。 在一實施例中,藉由在一單一循環期間允許暫存器R2至R4之(僅)一者之任一者之內容透過輸出多工器1203移「出」至其相鄰者之暫存器檔案之一者且使暫存器R2至R4之(僅)一者之任一者之內容替換為透過輸入多工器1204自其相鄰者之一對應者移「入」之內容,使得相鄰者之間的移位在一相同方向上(例如所有執行道向左移位、所有執行道向右移位等)而實施二維移位暫存器結構。儘管一相同暫存器使其內容移出且替換為在一相同循環內移入之內容可為常見的,但多工器配置1203、1204允許一相同循環期間之一相同暫存器檔案內之不同移位源及移位目標暫存器。 如在圖12中描繪,應注意,在一移位序列期間,一執行道將使內容自其暫存器檔案1202移出至其左、右、頂部及底部相鄰者之各者。結合相同移位序列,執行道亦將使內容自其左、右、頂部及底部相鄰者之一特定者移入至其暫存器檔案中。再者,移出目標及移入源應與所有執行道之一相同移位方向一致(例如若移出係至右相鄰者,則移入應係自左相鄰者)。 儘管在一項實施例中,每循環每執行道僅允許移位一個暫存器之內容,但其他實施例可允許移入/移出一個以上暫存器之內容。例如,若在圖12中觀察之多工器電路1203、1204之一第二例項經併入至圖12之設計中,則可在一相同循環期間移出/移入兩個暫存器之內容。當然,在其中每循環僅允許移位一個暫存器之內容之實施例中,可藉由消耗更多時脈循環用於數學運算之間的移位而在數學運算之間發生自多個暫存器之移位(例如,藉由消耗數學運算之間的兩個移位操作而在數學運算之間移位兩個暫存器之內容)。 若在一移位序列期間移出一執行道之暫存器檔案之少於所有內容,則應注意,各執行道之未移出暫存器之內容保持在適當位置中(未移位)。因而,未替換為移入內容之任何未移位內容跨移位循環留存在執行道本端。在各執行道中觀察到之記憶體單元(「M」)用於自與執行道陣列內之執行道之列及/或行相關聯之隨機存取記憶體空間載入資料/將資料儲存至該隨機存取記憶體空間。此處,M單元充當一標準M單元,其中其通常用於載入/儲存無法自執行道之自身暫存器空間載入/無法儲存至執行道之自身暫存器空間之資料。在各種實施例中,M單元之主要操作係將資料自一局部暫存器寫入至記憶體中及自記憶體讀取資料且將其寫入至一局部暫存器中。 關於藉由硬體執行道1201之ALU單元支援之ISA運算碼,在各種實施例中,藉由硬體ALU支援之數學運算碼包含(例如ADD、SUB、MOV、MUL、MAD、ABS、DIV、SHL、SHR、MIN/MAX、SEL、AND、OR、XOR、NOT)。恰如上文描述,可藉由執行道1201執行記憶體存取指令以自其相關聯隨機存取記憶體提取資料/將資料儲存至其相關聯隨機存取記憶體。另外,硬體執行道1201支援移位操作指令(右、左、上、下)以使資料在二維移位暫存器結構內移位。如上文描述,較大程度上藉由模板處理器之純量處理器執行程式控制指令。4.0 實施方案實施例 應指出,上文描述之各種影像處理器架構特徵不必限於傳統意義上之影像處理且因此可經應用至可(或可不)導致重新特性化影像處理器之其他應用。例如,若上文描述之各種影像處理器架構特徵之任一者待用於建立及/或產生及/或呈現動畫(相對於處理實際相機影像),則影像處理器可經特性化為一圖形處理單元。另外,上文描述之影像處理器架構特徵可經應用至其他技術應用,諸如視訊處理、視覺處理、影像辨識及/或機器學習。以此方式應用,影像處理器可(例如作為一協同處理器)與一更通用處理器(例如,其係運算系統之一CPU或其部分)整合或可為一運算系統內之一獨立處理器。 上文論述之硬體設計實施例可體現於一半導體晶片內及/或體現為以一半導體製程為最終目標之一電路設計之一描述。在後一情況中,此等電路描述可採用一(例如,VHDL或Verilog)暫存器轉移層級(RTL)電路描述、一閘極層級電路描述、一電晶體層級電路描述或遮罩描述或其各種組合之形式。電路描述通常體現於一電腦可讀儲存媒體(諸如一CD-ROM或其他類型之儲存技術)上。 自前述章節應認識到,如上文描述之一影像處理器可體現於一電腦系統上之硬體中(例如,作為處理來自手持裝置之相機之資料之一手持裝置之系統單晶片(SOC)之部分)。在其中影像處理器體現為一硬體電路之情況中,應注意,可自一相機直接接收藉由影像處理器處理之影像資料。此處,影像處理器可為一離散相機之部分或具有一整合相機之一運算系統之部分。在後一情況中,可自相機或自運算系統之系統記憶體直接接收影像資料(例如,相機將其影像資料發送至系統記憶體而非影像處理器)。亦應注意,在前述章節中描述之許多特徵可應用至一圖形處理器單元(其呈現動畫)。 圖13提供一運算系統之一例示性描繪。下文描述之運算系統之許多組件可應用至具有一整合相機及相關聯影像處理器之一運算系統(例如,一手持式裝置,諸如一智慧型電話或平板電腦)。一般技術者將能夠容易地區分兩者。另外,圖13之運算系統亦包含一高效能運算系統(諸如一工作站或超級電腦)之許多特徵。 如在圖13中觀察,基本運算系統可包含一中央處理單元1301 (其可包含例如安置於一多核心處理器或應用處理器上之複數個通用處理核心1315_1至1315_N及一主記憶體控制器1317)、系統記憶體1302、一顯示器1303 (例如觸控螢幕、平板)、一局部有線點對點鏈路(例如,USB)介面1304、各種網路I/O功能1305 (諸如乙太網路介面及/或蜂巢式數據機子系統)、一無線區域網路(例如,WiFi)介面1306、一無線點對點鏈路(例如,藍芽)介面1307及一全球定位系統介面1308、各種感測器1309_1至1309_N、一或多個相機1310、一電池1311、一功率管理控制單元1312、一揚聲器及麥克風1313及一音訊編碼器/解碼器1314。 一應用處理器或多核心處理器1350可包含其CPU 1201內之一或多個通用處理核心1315、一或多個圖形處理單元1316、一記憶體管理功能1317 (例如,一記憶體控制器)、一I/O控制功能1318及一影像處理單元1319。通用處理核心1315通常執行運算系統之作業系統及應用軟體。圖形處理單元1316通常執行圖形密集功能以例如產生呈現於顯示器1303上之圖形資訊。記憶體控制功能1317與系統記憶體1302介接以將資料寫入至系統記憶體1302/自系統記憶體1302讀取資料。功率管理控制單元1312通常控制系統1300之功率消耗。 可根據在上文之前述章節中詳細描述之影像處理單元實施例之任一者實施影像處理單元1319。替代地或組合地,IPU 1319可經耦合至GPU 1316及CPU 1301之任一者或兩者以作為其之一協同處理器。另外,在各種實施例中,可使用上文詳細描述之影像處理器特徵之任一者實施GPU 1316。影像處理單元1319可用如上文詳細描述之應用軟體組態。此外,一運算系統(諸如圖13之運算系統)可執行如上所述模擬一影像處理應用軟體程式之程式碼,使得可判定用於各自行緩衝器單元之各自記憶體分配。 觸控螢幕顯示器1303、通信介面1304至1307、GPS介面1308、感測器1309、相機1310及揚聲器/麥克風編解碼器1313、1314之各者皆可被視為關於整個運算系統(亦適當地包含一整合周邊裝置(例如,一或多個相機1310))之I/O (輸入及/或輸出)之各種形式。取決於實施方案,此等I/O組件之各者可整合於應用處理器/多核心處理器1350上或可定位於晶粒之外或應用處理器/多核心處理器1350之封裝外部。 在一實施例中,一或多個相機1310包含能夠量測相機與其視場中之一物件之間的深度之一深度相機。在一應用處理器或其他處理器之一通用CPU核心(或具有用以執行程式碼之一指令執行管線之其他功能區塊)上執行之應用軟體、作業系統軟體、裝置驅動器軟體及/或韌體可執行上文描述之功能之任一者。 本發明之實施例可包含如上文陳述之各種程序。程序可體現為機器可執行指令。指令可用於導致一通用或專用處理器執行某些程序。替代地,可藉由含有用於執行程序之硬接線及/或可程式化邏輯之特定硬體組件或藉由程式化電腦組件及客製硬體組件之任何組合執行此等程序。 本發明之元件亦可提供為用於儲存機器可執行指令之一機器可讀媒體。機器可讀媒體可包含(但不限於)軟碟、光碟、CD-ROM及磁光碟、FLASH記憶體、ROM、RAM、EPROM、EEPROM、磁卡或光學卡、傳播媒體或適於儲存電子指令之其他類型的媒體/機器可讀媒體。例如,本發明可作為一電腦程式下載,該電腦程式可藉由體現於一載波或其他傳播媒體中之資料信號經由一通信鏈路(例如,一數據機或網路連接)自一遠端電腦(例如,一伺服器)傳遞至一請求電腦(例如,一用戶端)。 在前述說明書中,已參考本發明之特定例示性實施例描述本發明。然而,將顯而易見,在不脫離如隨附發明申請專利範圍中陳述之本發明之更廣泛精神及範疇之情況下,可對其作出各種修改及改變。因此,本說明書及圖式應被視為一繪示性意義而非一限制性意義。 在下文描述一些實例。 實例1:一種機器可讀儲存媒體,其含有在藉由一運算系統處理時引起該運算系統執行一方法之程式碼,該方法包括: a)模擬一影像處理應用軟體程式之執行,該模擬包括利用模擬之行緩衝器記憶體攔截內核至內核通信,該等模擬之行緩衝器記憶體儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行,該模擬進一步包括在一模擬運行時間內追蹤儲存於各自行緩衝器記憶體中之各自影像資料量;及, b)自該等經追蹤之各自影像資料量判定用於對應硬體行緩衝器記憶體之各自硬體記憶體分配; c)產生組態資訊以供一影像處理器執行該影像處理應用軟體程式,該組態資訊描述用於該影像處理器之該等硬體行緩衝器記憶體之該等硬體記憶體分配。 實例2:如實例1之機器可讀儲存媒體,其中該追蹤進一步包括追蹤一模擬行緩衝器記憶體寫入指標與一模擬行緩衝器記憶體讀取指標之間的一差異。 實例3:如實例1或2之機器可讀儲存媒體,其中該判定係基於該模擬行緩衝器記憶體寫入指標與該模擬行緩衝器記憶體讀取指標之間的一最大所觀察差異。 實例4:如前述實例中至少一項之機器可讀儲存媒體,其中該模擬進一步包括施行一寫入政策,該寫入政策防止影像資料之下一單元寫入至一模擬行緩衝器記憶體中直至消耗該影像資料之內核之一或多個模型等待接收該影像資料之該下一單元為止。 實例5:如前述實例中至少一項之機器可讀儲存媒體,其中該寫入政策係在產生影像資料之該下一單元之一生產內核之一模型處強制執行。 實例6:如前述實例中至少一項之機器可讀儲存媒體,其中該方法進一步包括若該應用軟體程式之該模擬執行出現僵局,則允許違反該寫入政策。 實例7:如前述實例中至少一項之機器可讀儲存媒體,其中該等內核用以在一硬體影像處理器之不同處理核心上操作,該硬體影像處理器包括用以儲存及轉發在該等處理核心之間傳遞之行群組之硬體行緩衝器單元。 實例8:如前述實例中至少一項之機器可讀儲存媒體,其中該等不同處理核心包括一個二維執行道及一個二維移位暫存器陣列。 實例9:如前述實例中至少一項之機器可讀儲存媒體,其中該等生產內核之該等模型及該等消耗內核之該等模型包括發送影像資料至一模擬行緩衝器記憶體之指令且包括自一模擬行緩衝器記憶體讀取影像資料之指令但不包含實質上處理影像資料之指令。 實例10:如前述實例中至少一項之機器可讀儲存媒體,其中一影像處理器架構包括耦合至一個二維移位暫存器陣列之一執行道陣列。 實例11:如前述實例中至少一項之機器可讀儲存媒體,其中該影像處理器之該架構包括一行緩衝器、一截片產生器及/或一模板處理器之至少一者。 實例12:如實例11之機器可讀儲存媒體,其中該模板處理器經組態以處理重疊模板。 實例13:如前述實例中至少一項之機器可讀儲存媒體,其中一資料運算單元包括具有比該執行道陣列寬之尺寸之一移位暫存器結構,特定言之在該執行道陣列外存在暫存器。 實例14:一種運算系統,其包括: 一中央處理單元; 一系統記憶體; 一系統記憶體控制器,其介於該系統記憶體與該中央處理單元之間; 一機器可讀儲存媒體,該機器可讀儲存媒體含有在藉由該運算系統處理時引起該運算系統執行一方法之程式碼,該方法包括: a)模擬一影像處理應用軟體程式之執行,該模擬包括利用模擬之行緩衝器記憶體攔截內核至內核通信,該等模擬之行緩衝器記憶體儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行,該模擬進一步包括在一模擬運行時間內追蹤儲存於各自行緩衝器記憶體中之各自影像資料量;及, b)自該等經追蹤之各自影像資料量判定用於對應硬體行緩衝器記憶體之各自硬體記憶體分配; c)產生用於一影像處理器之組態資訊以執行該影像處理應用軟體程式,該組態資訊描述用於該影像處理器之該等硬體行緩衝器記憶體之該等硬體記憶體分配。 實例15:如實例14之運算系統,其中該追蹤進一步包括追蹤一模擬行緩衝器記憶體寫入指標與一模擬行緩衝器記憶體讀取指標之間的一差異。 實例16:如實例14或15之運算系統,其中該判定係基於該模擬行緩衝器記憶體寫入指標與該模擬行緩衝器記憶體讀取指標之間的一最大所觀察差異。 實例17:如實例14至16中至少一項之運算系統,其中該模擬進一步包括施行一寫入政策,該寫入政策防止影像資料之下一單元寫入至一模擬行緩衝器記憶體中直至消耗該影像資料之內核之一或多個模型等待接收該影像資料之該下一單元為止。 實例18:如實例14至17中至少一項之運算系統,其中該寫入政策係在產生影像資料之該下一單元之一生產內核之一模型處強制執行。 實例19:如實例14至18中至少一項之運算系統,其中該方法進一步包括若該應用軟體程式之該模擬執行出現僵局,則允許違反該寫入政策。 實例20:如實例14至19中至少一項之運算系統,其中一影像處理器架構包括耦合至一個二維移位暫存器陣列之一執行道陣列。 實例21:如實例14至20中至少一項之運算系統,其中該影像處理器之該架構包括一行緩衝器、一截片產生器及/或一模板處理器之至少一者。 實例22:如實例21之運算系統,其中該模板處理器經組態以處理重疊模板。 實例23:如實例14至22中至少一項之運算系統,其中一資料運算單元包括具有比該執行道陣列寬之尺寸之一移位暫存器結構,特定言之在該執行道陣列外存在暫存器。 實例24:一種方法,其包括: a)模擬一影像處理應用軟體程式之執行,該模擬包括利用模擬之行緩衝器記憶體攔截內核至內核通信,該等模擬之行緩衝器記憶體儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行,該模擬進一步包括在一模擬運行時間內追蹤儲存於各自行緩衝器記憶體中之各自影像資料量;及, b)自該等經追蹤之各自影像資料量判定用於對應硬體行緩衝器記憶體之各自硬體記憶體分配; c)產生用於一影像處理器之組態資訊以執行該影像處理應用軟體程式,該組態資訊描述用於該影像處理器之該等硬體行緩衝器記憶體之該等硬體記憶體分配。 實例25:如實例24之方法,其中該追蹤進一步包括追蹤一模擬行緩衝器記憶體寫入指標與一模擬行緩衝器記憶體讀取指標之間的一差異。 實例26:如實例24或25之方法,其中該判定係基於該模擬行緩衝器記憶體寫入指標與該模擬行緩衝器記憶體讀取指標之間的一最大所觀察差異。 實例27:如實例24至26中至少一項之方法,其中該模擬進一步包括施行一寫入政策,該寫入政策防止影像資料之下一單元寫入至一模擬行緩衝器記憶體中直至消耗該影像資料之內核之一或多個模型等待接收該影像資料之該下一單元為止。 實例28:如實例24至27中至少一項之方法,其中該寫入政策係在產生影像資料之該下一單元之一生產內核之一模型處強制執行。 實例29:如實例24至28中至少一項之方法,其中一影像處理器架構包括耦合至一個二維移位暫存器陣列之一執行道陣列。 實例30:如實例24至29中至少一項之方法,其中該影像處理器之該架構包括一行緩衝器、一截片產生器及/或一模板處理器之至少一者。 實例31:如實例24至30中至少一項之方法,其中該模板處理器經組態以處理重疊模板。 實例32:如實例24至31中至少一項之方法,其中一資料運算單元包括具有比該執行道陣列寬之尺寸之一移位暫存器結構,特定言之在該執行道陣列外存在暫存器。
100‧‧‧影像處理器架構/處理器
101‧‧‧執行道陣列
102‧‧‧二維移位暫存器陣列/移位暫存器陣列
103‧‧‧邊角執行道
104‧‧‧邊角移位暫存器位置
105‧‧‧邊角執行道
106‧‧‧邊角移位暫存器位置
200‧‧‧架構
201_1‧‧‧行緩衝器單元
201_2‧‧‧行緩衝器單元/下游行緩衝器單元
201_M‧‧‧行緩衝器單元
202_1‧‧‧模板處理器/模板處理器單元/第一模板處理器
202_2‧‧‧模板處理器/模板處理器單元/第二模板處理器
202_N‧‧‧模板處理器/模板處理器單元
203_1‧‧‧截片產生器單元/截片產生器
203_2‧‧‧截片產生器單元/截片產生器
203_N‧‧‧截片產生器單元
204‧‧‧網路
205‧‧‧巨集輸入/輸出(I/O)單元
300‧‧‧應用軟體程式
301‧‧‧輸入影像資料
304_1‧‧‧行緩衝器單元/行緩衝器
304_2‧‧‧行緩衝器單元/行緩衝器
304_3‧‧‧行緩衝器單元
304_4‧‧‧行緩衝器單元
401_1‧‧‧迴路
401_2‧‧‧迴路
401_3‧‧‧迴路
401_4‧‧‧迴路
600‧‧‧影像區域
601‧‧‧第一群組之相同寬度影像行/群組
602‧‧‧第二群組之相同寬度影像行/群組
611‧‧‧較小高度全寬行群組/全行群組
612_1‧‧‧較小寬度行群組/第一較小行寬行群組
612_2‧‧‧較小寬度行群組/第二較小行寬行群組
701‧‧‧模擬
702‧‧‧攔截/模板處理器
703‧‧‧追蹤
704‧‧‧判定
801‧‧‧影像資料
802‧‧‧重疊模板
803‧‧‧陰影區域/行群組
804‧‧‧初始截片/第一截片
805‧‧‧截片/下一截片/新截片/第二截片
900‧‧‧模板處理器架構
901‧‧‧資料運算單元
902‧‧‧純量處理器
903‧‧‧記憶體/純量記憶體
904‧‧‧輸入/輸出(I/O)單元
905‧‧‧執行道陣列/陣列
906‧‧‧二維移位陣列結構/二維移位暫存器結構/暫存器結構
907_1至907_R‧‧‧隨機存取記憶體
909‧‧‧程式控制器
951‧‧‧純量指令/指令
952‧‧‧ALU指令/指令/指令欄位
953‧‧‧記憶體指令/指令/指令欄位
954‧‧‧欄位
1001‧‧‧資料運算組件
1005‧‧‧執行道陣列/執行道
1006‧‧‧二維移位暫存器陣列結構/二維移位暫存器/暫存器結構/移位暫存器結構/移位暫存器陣列
1007_1至1007R‧‧‧隨機存取記憶體
1009‧‧‧光暈/光暈區域
1105‧‧‧圖框
1107‧‧‧第一陣列
1110‧‧‧執行道
1111‧‧‧執行道位置對
1201‧‧‧執行道/硬體執行道
1202‧‧‧暫存器檔案
1203‧‧‧輸出多工器/多工器配置/多工器電路
1204‧‧‧輸入多工器/多工器配置/多工器電路
1300‧‧‧系統
1301‧‧‧中央處理器單元(CPU)
1302‧‧‧系統記憶體
1303‧‧‧顯示器/觸控螢幕顯示器
1304‧‧‧局域有線點對點鏈路介面/通信介面
1305‧‧‧網路輸入/輸出(I/O)功能/通信介面
1306‧‧‧無線區域網路介面/通信介面
1307‧‧‧無線點對點鏈路介面/通信介面
1308‧‧‧全球定位系統(GPS)介面
1309_1至1309_N‧‧‧感測器
1310‧‧‧相機
1311‧‧‧電池
1312‧‧‧功率管理控制單元
1313‧‧‧揚聲器及麥克風/揚聲器及麥克風編解碼器
1314‧‧‧音訊編碼器/音訊解碼器/揚聲器及麥克風編解碼器
1315_1至1315_N‧‧‧通用處理核心
1316‧‧‧圖形處理單元(GPU)
1317‧‧‧主記憶體控制器/記憶體管理功能/記憶體控制功能
1318‧‧‧輸入/輸出(I/O)控制功能
1319‧‧‧影像處理單元(IPU)
1350‧‧‧應用處理器或多核心處理器
K1‧‧‧內核/模擬模型內核
K2‧‧‧內核/模擬模型內核
K3‧‧‧內核/模擬模型內核
K4‧‧‧內核/模擬模型內核
LD_1‧‧‧載入指令
R1‧‧‧暫存器
R2‧‧‧局部暫存器/暫存器
R3‧‧‧暫存器
R4‧‧‧暫存器
R5‧‧‧暫存器
ST_1‧‧‧儲存指令
ST_2‧‧‧儲存指令
以下描述及隨附圖式係用於繪示本發明之實施例。在圖式中: 圖1展示一模板處理器架構之一高階視圖; 圖2展示一影像處理器架構之一更詳細視圖; 圖3展示可藉由一影像處理器執行之一應用軟體程式; 圖4展示複數個內核模型; 圖5a及圖5b展示一行緩衝器單元模型之寫入指標及讀取指標行為; 圖6a、圖6b、圖6c、圖6d及圖6e展示用於區塊影像傳送之全行群組傳送模式、實際上高傳送模式及讀取指標行為; 圖7展示用於判定按行緩衝器單元記憶體分配之一方法; 圖8a、圖8b、圖8c、圖8d及圖8e描繪將影像資料剖析成一行群組、將一行群組剖析成一截片及運用重疊模板對一截片上執行之操作; 圖9a展示一模板處理器之一實施例; 圖9b展示該模板處理器之一指令字組之一實施例; 圖10展示一模板處理器內之一資料運算單元之一實施例; 圖11a、圖11b、圖11c、圖11d、圖11e、圖11f、圖11g、圖11h、圖11i、圖11j及圖11k描繪使用一個二維移位陣列及一執行道陣列來判定具有重疊模板之一對相鄰輸出像素值之一實例; 圖12展示用於一整合式執行道陣列及二維移位陣列之一單位晶格之一實施例; 圖13展示一影像處理器之另一實施例。

Claims (32)

  1. 一種機器可讀儲存媒體,其含有在由一運算系統處理時引起該運算系統執行一方法之程式碼,該方法包括: a)模擬一影像處理應用軟體程式之執行,該模擬包括利用模擬之行緩衝器記憶體攔截內核至內核通信,該等模擬之行緩衝器記憶體儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行,該模擬進一步包括在一模擬運行時間內追蹤儲存於該等各自行緩衝器記憶體中之各自影像資料量;及, b)自該等經追蹤之各自影像資料量判定用於對應硬體行緩衝器記憶體之各自硬體記憶體分配; c)產生用於一影像處理器之組態資訊以執行該影像處理應用軟體程式,該組態資訊描述用於該影像處理器之該等硬體行緩衝器記憶體之該等硬體記憶體分配。
  2. 如請求項1之機器可讀儲存媒體,其中該追蹤進一步包括追蹤一模擬行緩衝器記憶體寫入指標與一模擬行緩衝器記憶體讀取指標之間的一差異。
  3. 如請求項1或2之機器可讀儲存媒體,其中該判定係基於該模擬行緩衝器記憶體寫入指標與該模擬行緩衝器記憶體讀取指標之間的一最大所觀察差異。
  4. 如請求項1或2之機器可讀儲存媒體,其中該模擬進一步包括施行一寫入政策,該寫入政策防止影像資料之下一單元寫入至一模擬行緩衝器記憶體中直至消耗該影像資料之內核之一或多個模型等待接收該影像資料之該下一單元為止。
  5. 如請求項1或2之機器可讀儲存媒體,其中該寫入政策係在產生影像資料之該下一單元之一生產內核之一模型處強制執行。
  6. 如請求項1或2之機器可讀儲存媒體,其中該方法進一步包括若該應用軟體程式之該模擬執行出現僵局,則允許違反該寫入政策。
  7. 如請求項1或2之機器可讀儲存媒體,其中該等內核用以在一硬體影像處理器之不同處理核心上操作,該硬體影像處理器包括用以儲存及轉發在該等處理核心之間傳遞之行群組之硬體行緩衝器單元。
  8. 如請求項1或2之機器可讀儲存媒體,其中該等不同處理核心包括一個二維執行道及一個二維移位暫存器陣列。
  9. 如請求項1或2之機器可讀儲存媒體,其中該等生產內核之該等模型及該等消耗內核之該等模型包括發送影像資料至一模擬行緩衝器記憶體之指令且包括自一模擬行緩衝器記憶體讀取影像資料之指令但不包含實質上處理影像資料之指令。
  10. 如請求項1或2之機器可讀儲存媒體,其中一影像處理器架構包括耦合至一個二維移位暫存器陣列之一執行道(lane)陣列。
  11. 如請求項1或2之機器可讀儲存媒體,其中該影像處理器之該架構包括一行緩衝器、一截片產生器及/或一模板處理器之至少一者。
  12. 如請求項11之機器可讀儲存媒體,其中該模板處理器經組態以處理重疊模板。
  13. 如請求項1或2之機器可讀儲存媒體,其中一資料運算單元包括具有比該執行道陣列寬之尺寸之一移位暫存器結構,特定言之在該執行道陣列外存在暫存器。
  14. 一種運算系統,其包括: 一中央處理單元; 一系統記憶體; 一系統記憶體控制器,其介於該系統記憶體與該中央處理單元之間; 一機器可讀儲存媒體,該機器可讀儲存媒體含有在由該運算系統處理時引起該運算系統執行一方法之程式碼,該方法包括: a)模擬一影像處理應用軟體程式之執行,該模擬包括利用模擬之行緩衝器記憶體攔截內核至內核通信,該等模擬之行緩衝器記憶體儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行,該模擬進一步包括在一模擬運行時間內追蹤儲存於該等各自行緩衝器記憶體中之各自影像資料量;及, b)自該等經追蹤之各自影像資料量判定用於對應硬體行緩衝器記憶體之各自硬體記憶體分配; c)產生用於一影像處理器之組態資訊以執行該影像處理應用軟體程式,該組態資訊描述用於該影像處理器之該等硬體行緩衝器記憶體之該等硬體記憶體分配。
  15. 如請求項14之運算系統,其中該追蹤進一步包括追蹤一模擬行緩衝器記憶體寫入指標與一模擬行緩衝器記憶體讀取指標之間的一差異。
  16. 如請求項14或15之運算系統,其中該判定係基於該模擬行緩衝器記憶體寫入指標與該模擬行緩衝器記憶體讀取指標之間的一最大所觀察差異。
  17. 如請求項14或15之運算系統,其中該模擬進一步包括施行一寫入政策,該寫入政策防止影像資料之下一單元寫入至一模擬行緩衝器記憶體中直至消耗該影像資料之內核之一或多個模型等待接收該影像資料之該下一單元為止。
  18. 如請求項14或15之運算系統,其中該寫入政策係在產生影像資料之該下一單元之一生產內核之一模型處強制執行。
  19. 如請求項14或15之運算系統,其中該方法進一步包括若該應用軟體程式之該模擬執行出現僵局,則允許違反該寫入政策。
  20. 如請求項14或15之運算系統,其中一影像處理器架構包括耦合至一個二維移位暫存器陣列之一執行道陣列。
  21. 如請求項14或15之運算系統,其中該影像處理器之該架構包括一行緩衝器、一截片產生器及/或一模板處理器之至少一者。
  22. 如請求項21之運算系統,其中該模板處理器經組態以處理重疊模板。
  23. 如請求項14或15之運算系統,其中一資料運算單元包括具有比該執行道陣列寬之尺寸之一移位暫存器結構,特定言之在該執行道陣列外存在暫存器。
  24. 一種方法,其包括: a)模擬一影像處理應用軟體程式之執行,該模擬包括攔截與模擬之行緩衝器記憶體之內核至內核通信,該等模擬之行緩衝器記憶體儲存及轉發自生產內核之模型傳送至消耗內核之模型之若干影像資料行,該模擬進一步包括在一模擬運行時間內追蹤儲存於該等各自行緩衝器記憶體中之各自影像資料量;及, b)自該等經追蹤之各自影像資料量判定用於對應硬體行緩衝器記憶體之各自硬體記憶體分配; c)產生用於一影像處理器之組態資訊以執行該影像處理應用軟體程式,該組態資訊描述用於該影像處理器之該等硬體行緩衝器記憶體之該等硬體記憶體分配。
  25. 如請求項24之方法,其中該追蹤進一步包括追蹤一模擬行緩衝器記憶體寫入指標與一模擬行緩衝器記憶體讀取指標之間的一差異。
  26. 如請求項24或25之方法,其中該判定係基於該模擬行緩衝器記憶體寫入指標與該模擬行緩衝器記憶體讀取指標之間的一最大所觀察差異。
  27. 如請求項24或25之方法,其中該模擬進一步包括施行一寫入政策,該寫入政策防止影像資料之下一單元寫入至一模擬行緩衝器記憶體中直至消耗該影像資料之內核之一或多個模型等待接收該影像資料之該下一單元為止。
  28. 如請求項24或25之方法,其中該寫入政策係在產生影像資料之該下一單元之一生產內核之一模型處強制執行。
  29. 如請求項24或25之方法,其中一影像處理器架構包括耦合至一個二維移位暫存器陣列之一執行道陣列。
  30. 如請求項24或25之方法,其中該影像處理器之該架構包括一行緩衝器、一截片產生器及/或一模板處理器之至少一者。
  31. 如請求項24或25之方法,其中該模板處理器經組態以處理重疊模板。
  32. 如請求項24或25之方法,其中一資料運算單元包括具有比該執行道陣列寬之尺寸之一移位暫存器結構,特定言之在該執行道陣列外存在暫存器。
TW107103560A 2017-05-12 2018-02-01 按行緩衝器單元記憶體分配之判定 TWI684132B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/594,512 US10430919B2 (en) 2017-05-12 2017-05-12 Determination of per line buffer unit memory allocation
US15/594,512 2017-05-12

Publications (2)

Publication Number Publication Date
TW201907298A true TW201907298A (zh) 2019-02-16
TWI684132B TWI684132B (zh) 2020-02-01

Family

ID=61599563

Family Applications (2)

Application Number Title Priority Date Filing Date
TW108147270A TWI750557B (zh) 2017-05-12 2018-02-01 按行緩衝器單元記憶體分配之判定
TW107103560A TWI684132B (zh) 2017-05-12 2018-02-01 按行緩衝器單元記憶體分配之判定

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW108147270A TWI750557B (zh) 2017-05-12 2018-02-01 按行緩衝器單元記憶體分配之判定

Country Status (7)

Country Link
US (2) US10430919B2 (zh)
EP (1) EP3622399B1 (zh)
JP (1) JP7208920B2 (zh)
KR (1) KR102279120B1 (zh)
CN (1) CN110574011B (zh)
TW (2) TWI750557B (zh)
WO (1) WO2018208334A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387988B2 (en) * 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10489878B2 (en) * 2017-05-15 2019-11-26 Google Llc Configurable and programmable image processor unit
US10534639B2 (en) * 2017-07-06 2020-01-14 Bitfusion.io, Inc. Virtualization of multiple coprocessors
CN110706147B (zh) * 2019-09-29 2023-08-11 阿波罗智联(北京)科技有限公司 图像处理的环境确定方法、装置、电子设备和存储介质
US11093400B2 (en) * 2019-10-15 2021-08-17 Sling Media Pvt. Ltd. Lock-free sharing of live-recorded circular buffer resources
CN114168524B (zh) * 2021-12-07 2023-10-20 平头哥(上海)半导体技术有限公司 行缓存单元、加速单元、片上系统和行缓存配置方法
CN114333930B (zh) * 2021-12-23 2024-03-08 合肥兆芯电子有限公司 多通道存储器存储装置、控制电路单元及其数据读取方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398079A (en) * 1993-01-27 1995-03-14 General Instrument Corporation Half-pixel interpolation for a motion compensated digital video system
US7499960B2 (en) 2001-10-01 2009-03-03 Oracle International Corporation Adaptive memory allocation
KR100865811B1 (ko) 2004-05-14 2008-10-28 엔비디아 코포레이션 저전력 프로그램가능 프로세서
US7331037B2 (en) 2004-08-12 2008-02-12 National Instruments Corporation Static memory allocation in a graphical programming system
US8024549B2 (en) * 2005-03-04 2011-09-20 Mtekvision Co., Ltd. Two-dimensional processor array of processing elements
US7818725B1 (en) 2005-04-28 2010-10-19 Massachusetts Institute Of Technology Mapping communication in a parallel processing environment
JP4923602B2 (ja) 2006-02-10 2012-04-25 富士ゼロックス株式会社 画像形成処理シミュレーション装置及び画像形成処理シミュレーション方法
US7890314B2 (en) 2007-12-05 2011-02-15 Seagate Technology Llc Method for modeling performance of embedded processors having combined cache and memory hierarchy
US20110191758A1 (en) 2010-01-29 2011-08-04 Michael Scharf Optimized Memory Allocator By Analyzing Runtime Statistics
US9335977B2 (en) 2011-07-28 2016-05-10 National Instruments Corporation Optimization of a data flow program based on access pattern information
US9256915B2 (en) * 2012-01-27 2016-02-09 Qualcomm Incorporated Graphics processing unit buffer management
US20150055861A1 (en) * 2013-08-23 2015-02-26 Amlogic Co., Ltd Methods and Systems for Image Demosaicing
US10055342B2 (en) 2014-03-19 2018-08-21 Qualcomm Incorporated Hardware-based atomic operations for supporting inter-task communication
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit 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
US11016742B2 (en) * 2015-06-24 2021-05-25 Altera Corporation Channel sizing for inter-kernel communication

Also Published As

Publication number Publication date
US20200098083A1 (en) 2020-03-26
TW202014888A (zh) 2020-04-16
CN110574011B (zh) 2023-06-27
US10430919B2 (en) 2019-10-01
KR102279120B1 (ko) 2021-07-20
JP2020519993A (ja) 2020-07-02
JP7208920B2 (ja) 2023-01-19
WO2018208334A1 (en) 2018-11-15
TWI750557B (zh) 2021-12-21
US10685423B2 (en) 2020-06-16
EP3622399B1 (en) 2023-10-04
KR20190135034A (ko) 2019-12-05
TWI684132B (zh) 2020-02-01
EP3622399A1 (en) 2020-03-18
US20180330467A1 (en) 2018-11-15
CN110574011A (zh) 2019-12-13

Similar Documents

Publication Publication Date Title
JP7202987B2 (ja) 高性能で、電力効率の良い、プログラマブルな画像処理のためのアーキテクチャ
TWI684132B (zh) 按行緩衝器單元記憶體分配之判定
JP6967570B2 (ja) 画像プロセッサのためのエネルギ効率的なプロセッサコアアーキテクチャ
CN107430760B (zh) 用于图像处理器的二维移位阵列
TWI698832B (zh) 用於影像處理器之編譯器管理記憶體
TWI670679B (zh) 影像處理器、非暫時性機器可讀儲存媒體、運算系統及由一影像處理器執行之方法
TWI736880B (zh) 處理器、電腦程式產品及處理器所執行之方法
TWI670968B (zh) 影像處理器輸入輸出單元
JP6775088B2 (ja) 画像プロセッサランタイム効率を向上するためのプログラムコード変形
CN110300944B (zh) 具有可配置数目的活动核心和支持内部网络的图像处理器
JP6820428B2 (ja) マルチコア画像プロセッサ上のアプリケーションソフトウェアの構成