TWI680435B - 用於影像處理之設備及方法 - Google Patents

用於影像處理之設備及方法 Download PDF

Info

Publication number
TWI680435B
TWI680435B TW107106346A TW107106346A TWI680435B TW I680435 B TWI680435 B TW I680435B TW 107106346 A TW107106346 A TW 107106346A TW 107106346 A TW107106346 A TW 107106346A TW I680435 B TWI680435 B TW I680435B
Authority
TW
Taiwan
Prior art keywords
alu
width
input
processing unit
perform
Prior art date
Application number
TW107106346A
Other languages
English (en)
Other versions
TW201816715A (zh
Inventor
瓦西里耶夫阿爾喬姆
Artem Vasilyev
鲁珀特 雷德格雷夫傑森
Jason Rupert Redgrave
邁克斯納阿爾伯特
Albert Meixner
沙強姆歐佛爾
Ofer Shacham
Original Assignee
美商谷歌有限責任公司
Google Llc
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 美商谷歌有限責任公司, Google Llc filed Critical 美商谷歌有限責任公司
Publication of TW201816715A publication Critical patent/TW201816715A/zh
Application granted granted Critical
Publication of TWI680435B publication Critical patent/TWI680435B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)
  • Processing Or Creating Images (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本發明描述一種包含一執行單元之設備,該執行單元具有一乘加計算單元、一第一ALU邏輯單元,及一第二ALU邏輯單元。該ALU單元執行第一、第二、第三及第四指令。該第一指令係一乘加指令。該第二指令執行平行ALU運算,其中該等第一及第二ALU邏輯單元同時運算以產生該第二指令之不同的各自輸出結果。該第三指令執行循序ALU運算,其中該等ALU邏輯單元之一者從該等ALU邏輯單元之另一者之一輸出運算,以判定該第三指令之一輸出結果。該第四指令執行一迭代除法運算,其中該第一ALU邏輯單元及該第二ALU邏輯單元在此期間運算以判定第一及第二除法結果數字值。

Description

用於影像處理之設備及方法
本發明之領域大體上係關於計算科學,且更具體言之係關於用於一影像處理器之一多功能執行道。
影像處理通常涉及組織成一陣列之像素值之處理。在此,一空間組織的二維陣列捕捉影像之二維性質(額外維度可包含時間(例如,二維影像之一序列)及資料類型(例如,顏色))。在一典型案例中,由產生一靜止影像或一幀序列以捕捉運動的影像之一攝影機提供陣列化的像素值。傳統影像處理器通常落於兩個極端的兩側。 一第一極端將影像處理任務執行為在一通用處理器或類似通用的處理器(例如,具有向量指令增強之一通用處理器)上所執行之軟體程式。儘管第一極端通常提供一高度通用的應用程式軟體開發平台,但其之與相關聯的額外負擔(例如,指令擷取及解碼、晶片上及晶片外資料之處置、推測執行)組合之較細粒度的資料結構之使用最終導致在程式碼之執行期間每單位資料消耗較大量的能量。 一第二相反極端將固定功能固線式電路應用至大得多的資料塊。直接應用至客戶設計的電路之較大(與較細粒度相對)資料塊之使用極大地減低每單位資料的功率消耗。然而,客戶設計的固定功能電路之使用通常導致處理器能夠執行一組有限的任務。因而,第二極端中缺乏廣泛通用的程式化環境(其與第一極端相關聯)。 提供與每單位資料之改良的功率效率組合之高度通用的應用程式軟體開發機會之一技術平台仍然係一期望的但缺少的解決方案。
描述一種包含一執行單元之設備,該執行單元具有一乘加計算單元、一第一ALU邏輯單元及一第二ALU邏輯單元。ALU單元執行第一、第二、第三及第四指令。第一指令係一乘加指令。第二指令執行平行ALU運算,其中第一及第二ALU邏輯單元同時運算以產生第二指令之不同的各自輸出結果。第三指令執行循序ALU運算,其中ALU邏輯單元之一者從ALU邏輯單元之另一者之一輸出運算以判定第三指令之一輸出結果。第四指令執行一迭代除法運算,其中第一ALU邏輯單元及第二ALU邏輯在一迭代期間交替地運算以判定一商數數字值。 描述一種設備,該設備包括一影像處理器之一執行單元。ALU單元包括用於執行一第一指令之構件,第一指令係一乘加指令。ALU單元包括用於執行一第二指令(包含執行平行ALU運算)之構件,其中第一及第二ALU邏輯單元同時運算以產生第二指令之不同的各自輸出結果。ALU單元包括用於執行一第三指令(包含執行循序ALU運算)之構件,其中ALU邏輯單元之一者從ALU邏輯單元之另一者之一輸出運算以判定第三指令之一輸出結果。ALU單元包括用於執行一第四指令(包含執行一迭代除法運算)之構件,其中第一ALU邏輯單元及第二ALU邏輯單元運算以判定第一及第二除法結果數字值。
圖1展示一模板處理器架構100之一實施例。一模板處理器(如從下文論述將變得更清楚)係經最佳化或以其他方式設計以處理影像資料之模板之一處理器。一或多個模板處理器可被整合至對由處理器處理之影像執行基於模板之任務之一影像處理器中。如圖1中所示,模板處理器包含一資料計算單元101、一純量處理器102,及相聯結的記憶體103及一I/O單元104。資料計算單元101包含一執行道陣列105、一二維移位陣列結構106,及與陣列之特定列或行聯結之單獨的隨機存取記憶體107。 I/O單元104負責將接收到之影像資料的輸入「表單」載入至資料計算單元101中,且將來自資料計算單元之資料的輸出表單儲存於模板處理器外部。在一實施例中,表單資料至資料計算單元101中之載入需要將一接收到的表單解析成多列/行影像資料,並將多列/行影像資料載入至二維移位暫存器結構106或執行道陣列之列/行之各自的隨機存取記憶體107中(在下文更詳細地描述)。 若表單最初係載入至記憶體107中,則執行道陣列105內之個別執行道可接著在適當的時候(例如,在一載入指令正好在對表單資料之運算之前時)將表單資料從隨機存取記憶體107載入至二維移位暫存器結構106中。一旦完成一表單之資料至暫存器結構106中的載入(無論直接從一表單產生器或從記憶體107),執行道陣列105之執行道即對資料運算,且最終將完成的資料「回寫」於模板處理器外部,或至隨機存取記憶體107中。若係後者,則I/O單元104自隨機存取記憶體107擷取資料以形成一輸出表單,該輸出表單接著寫入至模板處理器外部。 純量處理器102包含一程式控制器109,該程式控制器109自指令記憶體103讀取模板處理器的程式碼之指令,且將指令發出至執行道陣列105中之執行道。在一實施例中,一單一相同的指令經廣播至陣列105內之全部執行道,以從資料計算單元101實現一類似SIMD的行為。在一實施例中,自純量記憶體103讀取並發出至執行道陣列105之執行道之指令的指令格式包含一極長指令字組(VLIW)類型的格式,該格式每指令包含一個以上運算碼。在另一實施例中,VLIW格式包含指引由各執行道之ALU執行之一數學函數之一ALU運算碼及一記憶體運算碼(其針對一特定執行道或一組執行道指引一記憶體運算)兩者。 術語「執行道」係指能夠執行一指令之一組一或多個執行單元(例如可執行一指令之邏輯電路)。在各種實施例中,一執行道可包含更多類似處理器的功能,而非僅包含執行單元。例如,除一或多個執行單元之外,一執行道亦可包含解碼一接收到之指令的邏輯電路或(在更多類似MIMD之設計的情況中)擷取並解碼一指令的邏輯電路。關於類似MIMD的方法,儘管已於本文中大體描述一集中式程式控制方法,但一更分散的方法可被實施於各種替代實施例中(例如,包含程式碼及陣列105之各執行道內之一程式控制器)。 一執行道陣列105、程式控制器109及二維移位暫存器結構106的組合為範圍廣泛的可程式化功能提供一廣泛可調適/可組態的硬體平台。例如,鑑於個別執行道能夠執行多種功能且能夠輕易地存取靠近任何輸出陣列位置之輸入影像資料,應用程式軟體開發者能夠程式化具有範圍廣泛之不同功能能力以及尺寸(例如,模板大小)的核心。 在運算期間,因為執行道陣列105及二維移位暫存器106,所以一影像之多個模板可平行運算(如在此項技術中理解,一模板通常經實施為一影像內之一連續的NxM或NxMxC像素群組(其中N可等於M))。在此,例如,各執行道執行運算以對影像資料內之一特定模板價值的資料執行處理,同時二維移位陣列移位其之資料以將各模板的資料循序傳遞至暫存器空間,該暫存器空間經耦合至正在執行模板任務之執行道。注意,二維移位暫存器106亦可具有比執行道陣列105大之尺寸(例如,若執行道陣列具有尺寸XxX,則二維移位暫存器106可具有尺寸YxY,其中Y>X)。在此,為了完全處理模板,在模板之左邊緣由執行道處理時,移位暫存器106中之資料將「推出」至執行道陣列105之右邊緣外。移位暫存器106之額外尺寸能夠吸收被推離執行道陣列之邊緣的資料。 除充當由執行道陣列105操作之影像資料之一資料儲存器之外,隨機存取記憶體107亦可保持一或多個查詢表。在各種實施例中,一或多個純量查詢表亦可被實例化於純量記憶體103內。 一純量查詢涉及將來自相同索引之相同資料值從相同查詢表傳遞至執行道陣列105內之執行道之各者。在各種實施例中,上文描述之VLIW指令格式擴展為亦包含一純量運算碼,該純量運算碼將由純量處理器執行之一查詢操作指引至一純量查詢表中。經規定與運算碼搭配使用的索引可為一立即運算元或從一些其他資料儲存位置擷取。在一實施例中,無論如何,從純量記憶體內之一純量查詢表之一查詢本質上涉及在相同時脈循環期間將相同資料值廣播至執行道陣列105內的全部執行道。 圖2展示一執行道201內之一ALU執行單元205與對應的局部移位暫存器結構之單位胞之另一更詳細描繪。在一實施例中,執行道及與執行道陣列中之各位置相聯結之暫存器空間藉由在執行道陣列之各節點處實例化圖2中所示之電路而實施。如圖2中所示,單位胞包含一執行道201,該執行道201耦合至由四個暫存器R1至R4組成之一暫存器檔案202。在任何循環期間,ALU執行單元可從暫存器R1至R4之任何者讀取及寫入至暫存器R1至R4之任何者。 在一實施例中,二維移位暫存器結構藉由以下項而實施:在一單一循環期間允許暫存器R1至R4之任何(僅)一者之內容透過輸出多工器203移「出」至其相鄰者的暫存器檔案之一者,且若其之相鄰者透過輸入多工器204,則用從一對應者移「入」之內容替換暫存器R1至R4之任何(僅)一者之內容,使得相鄰者之間之移位在一相同方向上(例如,全部執行道向左移位、全部執行道向右移位等)。在各種實施例中,執行道本身執行其等自身的各自移位指令以實現移位暫存器之內容之一大規模SIMD二維移位。儘管一相同暫存器移出其之內容且用在一相同循環內移入之內容替換其之內容可係常規的,但多工器配置203、204允許一相同循環期間之一相同暫存器檔案內之不同移位源及移位目標暫存器。 如圖2中所描繪,注意,在一移位序列期間,一執行道將使內容從其之暫存器檔案202移出至其之左側、右側、頂部及底部相鄰者之各者。結合相同移位序列,執行道亦將內容從其之左側、右側、頂部及底部相鄰者之一特定者移位至其之暫存器檔案中。再次,全部執行道之移出目標及移入源應與一相同移位方向一致(例如,若係移出至右側相鄰者,則應從左側相鄰者移入)。 儘管在一實施例中,每執行道每循環允許僅一個暫存器之內容移位,但其他實施例可允許一個以上暫存器之內容移入/移出。例如,若圖2中所示之多工器電路203、204之一第二實例併入至圖2之設計中,則可在一相同循環期間移出/入兩個暫存器之內容。當然,在其中每循環允許僅一個暫存器之內容移位之實施例中,藉由使數學運算之間之移位消耗更多時脈循環而使從多個暫存器之移位可發生於數學運算之間(例如,藉由在數學運算之間消耗兩個移位運算而可在數學運算之間移位兩個暫存器之內容)。 若一執行道的暫存器檔案之少於全部的內容在一移位序列期間移出,則注意,各執行道之非移出暫存器的內容保持原位(未移位)。因而,未用移入內容替換之任何非移位內容跨移位循環留存於執行道之本地。一記憶體執行單元(為方便闡釋未在圖2中展示)亦可存在於各執行道201中以來往於與執行道陣列內之執行道列及/或行聯結之隨機存取記憶體空間載入/儲存資料。在此,記憶體單元充當一標準M單元,此係因為其常用來載入/儲存無法來往於執行道自身的暫存器空間載入/儲存之資料。在各種實施例中,M單元之主要操作係將資料從一局部暫存器寫入至記憶體中,及將資料從記憶體讀取並將其寫入至一局部暫存器中。 在各種實施例中,關於由硬體執行道201之ALU單元205支援之ISA運算碼,由ALU單元205支援之數學運算碼可包含以下ALU運算之任何者:加(ADD)、減(SUB)、移動(MOV)、乘(MUL)、乘加(MAD)、絕對值(ABS)、除(DIV)、左移位(SHL)、右移位(SHR)、返回最小或最大(MIN/MAX)、選擇(SEL)、邏輯及(AND)、邏輯或(OR)、邏輯互斥或(XOR)、計數前導零(CLZ或LZC)及一邏輯互補(NOT)。下文關於圖3至圖5更詳細地描述一ALU單元205或其之部分之一實施例。正如上文所述,記憶體存取指令可由執行道201執行以來往於其等相聯結的隨機存取記憶體擷取/儲存資料。此外,硬體執行道201支援移位運算指令(向右、向左、向上、向下)以移位二維移位暫存器結構內之資料。如上文所述,程式控制指令大體由模板處理器之純量處理器執行。 圖3展示正如上文所述之一執行道之一執行單元或其之部分之一消耗時間圖。具體言之,圖3繪出由可由執行單元執行之數個不同指令之各者消耗之時間量。如圖3中所示,執行單元可執行:1)一乘加指令(MAD) 301;2)平行的兩個全寬度(FW)或四個半寬度(HW) ALU運算302;3)一雙倍寬度(2XW) ALU運算303;4)形式((C op D) op B)之一混合運算304;及5)一迭代除法(DIV)運算306。 如圖3中所示,在執行單元可執行之各種指令中,MAD運算301本身消耗大部分時間。因而,一設計角度係,可用除執行MAD運算之邏輯之外之多個ALU邏輯單元來增強執行單元,以執行例如平行的多個ALU運算(諸如運算302)及/或串行的多個ALU運算(諸如運算304)。 圖4展示可支援圖3中所繪示之不同指令之一執行單元405之一設計之一實施例。如圖4中所示,執行單元405包含一第一ALU邏輯單元401及一第二ALU邏輯單元402以及一乘加邏輯單元403。來自暫存器檔案之輸入被標記為A、B、C、D,而回寫至暫存器檔案之輸出則被標記為X及Y。因而,執行單元405係一4輸入埠、2輸出埠的執行單元。 在一實施例中,乘加邏輯單元403執行一完整的乘加指令。即,乘加邏輯單元403執行函數(A*B)+(C,D),其中A係一全寬度輸入運算元、B係一全寬度運算元,且(C,D)係用以形成一雙倍寬度求和項之兩個全寬度運算元之一串連。例如,若全寬度對應於16位元,則A係16位元、B係16位元,且求和項係32位元。如在此項技術中理解,兩個全寬度值之乘加可產生一雙倍寬度結果。因而,跨X、Y輸出埠寫入MAD運算之結果,其中例如,X包含結果之頂部一半,且Y包含結果之底部一半。在另一實施例中,乘加單元403支援半寬度乘加。在此例如,A之下一半被用作一第一被乘數、B之下一半被用作一第二被乘數,及C或D (而不係一串連)被用作加數。 如上文關於圖3所提及,MAD運算之執行可消耗比一典型ALU邏輯單元更多的時間。因而,執行單元包含一對ALU邏輯單元401、402以不僅提供ALU運算之平行執行,且亦提供循序ALU運算。 在此,參考圖3及圖4,關於雙平行FW運算302,第一ALU邏輯單元401執行第一全寬度ALU運算(A op B),而第二ALU執行與該第一全寬度ALU運算平行的第二全寬度ALU運算(C op D)。再次,在一實施例中,全寬度運算對應於16位元。在此,第一ALU邏輯單元401將(A op B)之結果寫入至暫存器X中,而第二ALU邏輯單元402將(C op D)之結果寫入至暫存器Y中。 在一實施例中,用於執行雙平行全寬度ALU運算302之指令格式包含規定雙平行全寬度運算及目的地暫存器之一運算碼。在另一實施例中,運算碼除規定雙平行全寬度運算之外亦規定一或多個ALU運算。若運算碼僅規定一個運算,則ALU邏輯單元401、402兩者將執行相同運算。相比之下,若運算碼規定第一及第二不同的ALU運算,則第一ALU邏輯單元401執行運算之一者,且第二ALU邏輯單元402執行運算之第二者。 關於運算302之半寬度(HW)特徵,四個半寬度ALU運算平行地執行。在此,輸入A、B、C及D之各者被理解為各包含兩個單獨的輸入運算元。即,例如,A之一頂部一半對應於一第一輸入運算元、A之一下一半對應於一第二輸入運算元、B之一頂部一半對應於一第三輸入運算元、B之一下一半對應於一第四輸入運算元等。 因而,ALU邏輯單元401平行地處置兩個ALU運算,且ALU邏輯單元402平行地處置兩個ALU運算。因此,在執行期間,全部四個半寬度運算平行地執行。在運算302之結尾處,ALU邏輯單元401將兩個半寬度結果寫入至暫存器X中,且ALU邏輯單元402將兩個半寬度結果寫入至暫存器Y中。因而,暫存器X及Y中存在四個單獨的半寬度結果。 在一實施例中,指令格式不僅規定執行平行的半寬度運算,且亦規定執行何ALU運算。在各種實施例中,指令格式可規定全部四個運算係相同的,且僅規定一個運算及/或可規定全部四個運算係不同的,且規定四個不同的運算。替代地,在後一情況中,為了使全部四個運算實現相同的運算,指令格式可規定相同的運算四次。此等指令格式方法之各種組合亦係可能的。 在一實施例中,關於圖3之雙倍寬ALU運算303,執行單元405執行運算(A,C) op (B,D),其中(A,C)係形成一第一雙倍寬輸入運算元之輸入A及C之一串連,且(B,D)係形成一第二雙倍寬輸入運算元之輸入B及D之一串連。在此,一進位項可沿進位線404從第一ALU邏輯單元401傳遞至第二ALU邏輯單元402,以將運算從全寬度向前進位至雙倍寬度。 在一實施例中,即,C及D項表示兩個雙倍寬輸入運算元之依次排列的下一半。第二ALU邏輯單元402對該兩個下一半執行規定的運算(例如ADD),且所產生的結果對應於總雙倍寬結果的下一半。因而,將來自第二ALU邏輯單元402之結果寫入至暫存器Y中。對下一半之運算可產生進位至第一ALU邏輯單元401之一進位項,該第一ALU邏輯單元401繼續輸入運算元之兩個各自之上一半A及C的運算。來自第一ALU邏輯單元401的結果對應於寫入至輸出暫存器X中之總結果的上一半。因為第一ALU邏輯單元401對上一半之運算無法開始,直至其自第二ALU邏輯單元402接收進位項,所以ALU邏輯單元402、401之運算係循序的,而不是平行的。因而,如圖3中所示,雙倍寬度運算303可約係平行全/半寬度運算302的兩倍長。 然而,因為MAD運算301可消耗比兩個連續ALU邏輯單元運算更多的時間,故機器可圍繞可試圖將盡可能多的功能插入至由其最長傳播延遲運算所消耗之時間段中之一執行單元405來構建。因而在一實施例中,執行單元405之循環時間對應於MAD指令301之執行時間。在一實施例中,一雙倍寬運算之指令格式不僅規定執行的運算,且亦規定運算係一雙倍寬運算。 關於混合運算304,執行單元405執行運算(C op D) op B。在此,類似於上文剛論述之雙倍寬ALU運算303,雙ALU邏輯單元401、402循序地運算,此係因為第二運算對第一運算之結果進行運算。在此,第二ALU邏輯單元402對全寬度輸入C及D執行初始運算。第二ALU邏輯402之結果並不寫入至結果暫存器空間中,而係經由多工器406多工處理至第一ALU邏輯單元401之一輸入中。 第一ALU邏輯單元401接著執行第二運算且將結果寫入至暫存器X中。 在另一實施例中,亦可執行一半寬度混合運算。在此,除僅利用輸入運算元之一半外,運算如上文所述。即,例如,在計算(C op D) op B時,僅C之下一半及D之下一半用來判定第一運算之半寬度結果,接著,僅B之下一半連同第一運算之該半寬度結果用來執行第二運算。將結果寫為暫存器X中之一半寬度值。又進一步,兩個半寬度混合運算可平行地執行。在此,運算如剛才上文所述般,相同邏輯運算同時進行,但針對運算元之高一半。結果係寫入至暫存器X中之兩個半寬值。 在一實施例中,一混合運算之指令格式規定執行一混合運算且規定兩個運算。在一實施例中,若相同的運算執行兩次,則指令僅規定運算一次或規定其兩次。在另一實施例中,除規定混合運算及執行的(若干)運算之外,指令格式亦可進一步規定執行全寬度還是半寬度運算。 圖3之運算306繪示一迭代除法運算亦可由執行單元執行。特定言之,如下文更詳細地說明,在各種實施例中,ALU邏輯單元401、402兩者在迭代除法運算期間平行地協同參與。 圖5a及圖5b係關於用於執行圖3之迭代除法指令306之一實施例。圖5a展示添加至圖4之執行單元電路405使得能夠執行迭代除法指令之(除被理解為與圖4之ALU邏輯單元401、402相同之ALU邏輯單元501、502之外之)額外電路。圖5b展示迭代除法指令之執行期間之執行單元之微序列運算之一實施例。如從下文論述將更清楚,指令之一單一執行本質上執行兩次迭代,類似於長除法的原子法,其中試圖將一分子之(若干)前導數字(被除的值) 除以一除數(用來除分子之值)。 為簡單起見,將描述16位元除法(熟習此項技術者將能夠將本教示擴展至不同寬度實施例)。在本文中所述之執行兩個長除法原子法之實施例下,使用指令之八次循序執行以完全將一16位元分子除以一16位元除數。即,各原子長除法對應於分子之下一有效位元之處理。在指令之一單一執行期間處理兩個此有效位元。因此,為了處理分子之全部位元,需要指令之八次循序執行以完全執行完整的除法。一第一指令之輸出寫入至暫存器檔案且用作下一後續指令之輸入。 參考圖5a,在B輸入處提供分子輸入且在D輸入處呈現除數。再次,在本實施例中,B及D輸入運算元兩者皆係16位元。A及B輸入運算元(A運算元亦係16位元)之一串連A,B之一「封裝的」32位元資料結構「PACK」可被視為一完整除法程序之一初始資料結構。作為一初始條件,將A設定為十六個零之一字串(000…0)且B係分子值。 參考圖5a及圖5b,在一第一微序列期間,執行PACK資料結構之一左移位以創建一資料結構A[14:0], B[15] (被稱為PACK之最高有效字組(「PACK msw」))。接著藉由第二ALU邏輯單元502從PACK msw減去511除數D。此運算對應於其中使除數最初除分子之前導數字之長除法。注意在一實施例中,ALU邏輯單元501、502實際上係三個輸入ALU且非如圖4所建議之兩個輸入ALU (第三輸入保留用於迭代除法運算之除數D)。 接著取決於減法511之結果之符號512,遵循不同的資料處理程序。重要地,第一商數結果位元(即,除法結果之第一位元)經分級以寫入至Y輸出埠之第二最低有效位元509(「NEXT B[1]」)中。若減法結果為負,則商數結果位元B[1]經設定513為0。若減法結果為正,則商數結果位元B[1]經設定514為1。此位元之設定對應於長除法中之程序,其中商數結果之第一數字藉由確立除數值是否可除分子之第一數字而判定。 此外,兩個不同的資料結構經製作並呈現給一多工器506 (其可係與圖4之多工器406相同的多工器)之各自的輸入埠(「1」、「2」)。第一資料結構對應於Pack msw之一左移位(A[13:0], B[15], B[14])且在多工器506之輸入1處呈現。此資料結構之創建對應於長除法中之程序,其中若除數無法除最高有效相鄰者,則分子之下一數字附加至其之最高有效相鄰者。 第二製作的資料結構對應於剛由第二ALU邏輯單元502執行之減法511之結果之一左移位(附加有位元B[13]),且在多工器506之第二輸入(「2」)處呈現。此資料結構之創建對應於長除法中之情況,其中使一除數除分子之(若干)第一數字,此將下一除法設定成分子之(若干)第一數字與除數之一倍數之間之差之結果。 接著取決於由第二ALU邏輯單元502執行之減法之結果產生一正結果還是負結果,由多工器506選擇第一或第二資料結構。若減法產生一負結果(其對應於除數未能夠除分子之下一有效數字),則選擇513第一資料結構。若減法產生一正結果(其對應於除數能夠除分子之下一有效數字),則選擇514第二資料結構。 多工器506之輸出現將被理解為PACK資料結構之新的最高有效字組(new PACK msw)且對應於一長除法序列中之除數試圖除的下一值。因而,第一ALU邏輯單元501從new PACK msw值減去515除數D。Y輸出之最低有效位元510(B[0])經分級以取決於來自第一ALU 501之減法結果之符號而寫成1或0,且表示商數結果517、518中之下一數字。 取決於第一ALU邏輯單元之減法515之符號516,一第二多工器508在第一及第二資料結構之間選擇。在第二多工器508之輸入「1」處呈現之一第一資料結構對應於new PACK msw值。在第二多工器508之輸入「2」處呈現之一第二資料結構對應於由第一ALU邏輯單元501執行之減法之結果。選擇兩個資料結構之何者取決於由第一ALU 501執行之減法515之結果之符號。若減法結果為負,則多工器選擇new PACK msw值517。若減法結果為正,則多工器選擇new PACK msw – D值518。 第二多工器508之輸出對應於從X輸出寫入至暫存器檔案中之NEXT A值。在Y輸出(B[15:0])處呈現之值在B運算元之低於其之由兩次剛執行的迭代所消耗之兩個最高有效位元之前導邊緣(B[13:0])處組成。B之此等餘數位元與兩個新計算的商數數字結果之串連寫入至暫存器檔案中作為新的B運算元NEXT B。對於下一迭代,將來自先前指令之X輸出讀取至A運算元且將來自先前指令之Y輸出讀取至B運算元。程序接著重複直至原始的B運算元之全部數字已處理(其在16位元B運算元之情況中將再次消耗指令之八次循序執行)。在全部迭代結束時,最後的商數將從Y輸出寫入至暫存器檔案中且任何餘數將表示於從X輸出寫入至暫存器檔案中之NEXT A值中。 圖6展示由上文所述之ALU單元執行之一方法之一實施例。如圖6中所示,方法包含用一影像處理器之一ALU單元執行以下項。執行一第一指令,第一指令係一乘加指令601。執行一第二指令,包含執行平行ALU運算,其中第一及第二ALU邏輯單元同時運算以產生第二指令之不同的各自輸出結果602。執行一第三指令,包含執行循序ALU運算,其中ALU邏輯單元之一者從ALU邏輯單元之另一者之一輸出運算以判定第三指令之一輸出結果603。執行一第四指令,包含執行一迭代除法運算,其中第一ALU邏輯單元及第二ALU邏輯單元運算以判定第一及第二除法結果數字值604。 恰當地指出,上文所述之各種影像處理器架構特徵未必限於傳統意義上的影像處理,且因此可應用至可(或無法)引起影像處理器重新特性化之其他應用。例如,若上文所述之各種影像處理器架構特徵之任何者將用於創建及/或產生及/或表現動畫而非處理實際攝影機影像,則影像處理器可特性化為一圖形處理單元。此外,上文所示之影像處理器架構特徵可應用至其他技術應用,諸如視訊處理、視覺處理、影像辨識及/或機器學習。以此方式應用時,影像處理器可與一更通用的處理器(例如,其係計算系統之一CPU或CPU之部分)整合(例如,作為一共同處理器)或可係一計算系統內之一獨立處理器。 上文所論述之硬體設計實施例可在一半導體晶片內體現及/或作為最終目標朝向一半導體製程之一電路設計之一描述。在後一情況中,此電路描述可採取一(例如,VHDL或Verilog)暫存器轉移層級(RTL)電路描述、一閘層級電路描述、一電晶體層級電路描述或遮罩描述或其等之各種組合之形式。電路描述通常體現於一電腦可讀儲存媒體(諸如一CD-ROM或其他類型的儲存技術)上。 從先前部分恰當認識到,如上文所示之一影像處理器可體現於一電腦系統之硬體中(例如,作為處理來自手持型裝置的攝影機之資料之一手持型裝置的系統單晶片(SOC)之部分)。在其中影像處理器體現為一硬體電路之情況中,注意,可直接從一攝影機接收由影像處理器處理之影像資料。在此,影像處理器可係一分立攝影機之部分或係具有一整合式攝影機之一計算系統之部分。在後一情況中,可直接從攝影機或從計算系統的系統記憶體接收影像資料(例如,攝影機將其之影像資料發送至系統記憶體而非影像處理器)。亦注意,先前部分中所述之許多特徵可應用至一圖形處理器單元(其表現動畫)。 圖7提供一計算系統之一例示性描繪。下文所述之計算系統之許多組件可應用至具有一整合式攝影機及相關聯的影像處理器之一計算系統(例如,諸如一智慧型電話或平板電腦之一手持型裝置)。熟習此項技術者將能夠容易在兩者之間劃分。 如圖7中所示,基礎的計算系統可包含一中央處理單元701 (其可包含例如複數個通用處理核心715_1至715_N及安置於一多核心處理器或應用程式處理器上之一主記憶體控制器717)、系統記憶體702、一顯示器703 (例如,觸控螢幕、平板)、一區域有線點對點鏈路(例如USB)介面704、各種網路I/O功能705 (諸如一乙太網路介面及/或蜂巢式數據機子系統)、一無線區域網路(例如WiFi)介面706、一無線點對點鏈路(例如,藍芽)介面707及一全球定位系統介面708、各種感測器709_1至709_N、一或多個攝影機710、一電池711、一功率管理控制單元712、一揚聲器及麥克風713及一音訊編碼器/解碼器714。 一應用程式處理器或多核心處理器750可包含其之CPU 701內之一或多個通用處理核心715、一或多個圖形處理單元716、一記憶體管理功能717 (例如,一記憶體控制器)、一I/O控制功能718及一影像處理單元719。通用處理核心715通常執行計算系統之操作系統及應用程式軟體。圖形處理單元716通常執行圖形密集型功能以例如產生呈現於顯示器703上之圖形資訊。記憶體控制功能717與系統記憶體702介接以將資料寫入至系統記憶體702或從系統記憶體702讀取資料。功率管理控制單元712通常控制系統700之功率消耗。 影像處理單元719可根據上文在先前部分中詳細描述之影像處理單元實施例之任何者實施。替代地或組合地,IPU 719可耦合至GPU 716及CPU 701之任一者或兩者作為其之一共同處理器。此外在各種實施例中,GPU 716可實施有上文詳細描述之影像處理器特徵之任何者。 觸控螢幕顯示器703、通信介面704至707、GPS介面708、感測器709、攝影機710及揚聲器/麥克風編碼解碼器713、714之各者全部可被視為相對於整個計算系統之各種形式的I/O (輸入及/或輸出),其中在適當時該整個計算系統亦包含一整合式周邊裝置(例如,一或多個攝影機710)。取決於實施方案,此等I/O組件之各種組件可整合於應用程式處理器/多核心處理器750上或可位於晶粒外或應用程式處理器/多核心處理器750之封裝外側。 在一實施例中,一或多個攝影機710包含能夠量測攝影機與其視野中之一物體之間之深度之一深度攝影機。在一應用程式處理器或其他處理器之一通用CPU核心(或具有用以執行程式碼之一指令執行管線之其他功能區塊)上執行之應用程式軟體、操作系統軟體、裝置驅動器軟體及/或韌體可執行上文所述之功能之任何者。 本發明之實施例可包含如上文陳述之各種程序。程序可體現於機器可執行指令中。指令可用來引起一通用或專用處理器執行特定程序。替代地,此等程序可藉由含有用於執行程序之固線式邏輯之特定硬體組件或藉由程式化電腦組件及客製硬體組件之任何組合而加以執行。 本發明之元件亦可提供作為用於儲存該等機器可執行指令之一機器可讀媒體。該機器可讀媒體可包含(但不限於)軟式磁碟、光碟、CD-ROM及磁光碟、快閃記憶體、ROM、RAM、EPROM、EEPROM、磁卡或光學卡、傳播媒體或適用於儲存電子指令之其他類型的媒體/機器可讀媒體。例如,本發明可經下載作為一電腦程式,其可藉由體現於一載波或其他傳播媒體中之資料訊號經由一通信鏈路(例如,一數據機或網路連接)自一遠端電腦(例如,一伺服器)轉移至一請求電腦(例如,一用戶端)。 在前文說明書中,已參考本發明之特定例示性實施例描述本發明。然而,將顯而易見,在不脫離如隨附申請專利範圍中所陳述之本發明之更廣泛精神及範疇之情況下,可對其作出各種修改及改變。因此,本說明書及圖式應被視為一闡釋性含義而非一限制性含義。
100‧‧‧模板處理器架構
101‧‧‧資料計算單元
102‧‧‧純量處理器
103‧‧‧記憶體
104‧‧‧I/O單元
105‧‧‧執行道陣列
106‧‧‧二維移位暫存器結構
107_1、107_2、…107_R‧‧‧隨機存取記憶體
109‧‧‧程式控制器
201‧‧‧執行道
202‧‧‧暫存器檔案
203‧‧‧輸出多工器
204‧‧‧輸入多工器
205‧‧‧ALU執行單元
301‧‧‧乘加指令(MAD)/MAD運算
302‧‧‧兩個全寬度(FW) ALU運算/四個半寬度(HW) ALU運算
303‧‧‧雙倍寬度(2XW) ALU運算
304‧‧‧混合運算
306‧‧‧迭代除法(DIV)運算
401‧‧‧第一ALU邏輯單元
402‧‧‧第二ALU邏輯單元
403‧‧‧乘加邏輯單元
404‧‧‧進位線
405‧‧‧執行單元
406‧‧‧多工器
501‧‧‧第一ALU邏輯單元
502‧‧‧第二ALU邏輯單元
506‧‧‧多工器
508‧‧‧第二多工器
509‧‧‧Y輸出埠之第二最低有效位元
510‧‧‧Y輸出之最低有效位元
511‧‧‧減去/減法
512‧‧‧符號
513‧‧‧設定/選擇
514‧‧‧設定/選擇
515‧‧‧減去/減法
516‧‧‧符號
517‧‧‧商數結果
518‧‧‧商數結果
700‧‧‧系統
701‧‧‧中央處理單元(CPU)
702‧‧‧系統記憶體
703‧‧‧顯示器
704‧‧‧區域有線點對點鏈路(USB)介面/通信介面
705‧‧‧網路I/O功能/通信介面
706‧‧‧無線區域網路(WiFi)介面/通信介面
707‧‧‧無線點對點鏈路(藍芽)介面/通信介面
708‧‧‧全球定位系統(GPS)介面
709_1、709_2、…709_N‧‧‧感測器
710‧‧‧攝影機
711‧‧‧電池
712‧‧‧功率管理控制單元
713‧‧‧揚聲器及麥克風
714‧‧‧音訊編碼器/解碼器
715_1、715_2、…715_N‧‧‧通用處理核心
716‧‧‧圖形處理單元(GPU)
717‧‧‧主記憶體控制器/記憶體管理功能/記憶體控制功能
718‧‧‧I/O控制功能
719‧‧‧影像處理單元(IPU)
750‧‧‧應用程式處理器/多核心處理器
A‧‧‧全寬度輸入
B‧‧‧全寬度輸入
C‧‧‧全寬度輸入
C,D‧‧‧兩個全寬度運算元之一串連
D‧‧‧全寬度輸入
DIV‧‧‧除
new PACK msw‧‧‧PACK之新的最高有效字組
PACK msw‧‧‧PACK之最高有效字組
R1‧‧‧暫存器
R2‧‧‧暫存器
R3‧‧‧暫存器
R4‧‧‧暫存器
X‧‧‧輸出/暫存器
Y‧‧‧輸出/暫存器
下文描述及隨附圖式用來闡釋本發明之實施例。圖式中: 圖1展示一影像處理器之一模板處理器組件; 圖2展示一執行道及其至一二維移位暫存器之耦合之一實例; 圖3展示由圖2之執行道之一實施例執行之功能之相對延遲; 圖4展示用於一多功能執行道之一設計; 圖5a及圖5b展示用以執行一迭代除法運算之電路及一方法; 圖6展示由關於圖3至圖5a、圖5b描述之執行道執行之一方法; 圖7展示一計算系統之一實施例。

Claims (19)

  1. 一種包含處理單元陣列的影像處理器,其中該處理單元陣列之每一處理單元包括: 四個輸入埠及兩個輸出埠; 一第一算術邏輯單元(ALU)及一第二ALU,其經組態以在下列期間(during)執行至少部分平行之兩個全寬度(full width)ALU運算: 該第一ALU經組態以自輸入埠之一第一對(first pair)接收資料以執行一第一全寬度ALU運算及提供一第一全寬度輸出至該兩個輸出埠之一第一輸出埠;及 該第二ALU經組態以自輸入埠之一第二對接收資料以執行一第二全寬度ALU運算及提供一第二全寬度輸出至該兩個輸出埠之一第一輸出埠;及 一乘加(multiply-add)邏輯單元,其經組態自該四個輸入埠中之三者或多者接收資料,該資料包含自一第一輸入埠所接收之一第一乘法運算元(multiply operand)、自一第二輸入埠所接收之一第二乘法運算元及自一或多個其他輸入埠所接收之一求和項(summation term),以執行包括該第一乘法運算元乘以該第二乘法運算元之一乘法及該乘法之一結果與該求和項的一求和運算及跨該兩個輸出埠之兩者提供一雙倍寬度輸出之一乘加運算。
  2. 如請求項1之影像處理器,其中每一處理單元之一循環時間係基於該乘加運算之一執行時間。
  3. 如請求項1之影像處理器,其中每一處理單元之該第一ALU及該第二ALU係進一步經組態以在下列期間執行一雙倍寬度ALU運算: 該第一ALU經組態以自輸入埠之該第一對接收資料以執行對應於該雙倍寬度ALU運算之下一半(a lower half)之一第三全寬度ALU運算及提供該雙倍寬度ALU運算之該下一半至該兩個輸出埠之一者; 該第二ALU經組態以自輸入埠之該第二對接收資料以執行對應於該雙倍寬度ALU運算之上一半(an upper half)之一第四全寬度ALU運算及提供該雙倍寬度ALU運算之該上一半至該兩個輸出埠之另一者;及 該第一ALU經組態以提供由該第三全寬度ALU運算所產生之一進位項(carry term)至該第二ALU。
  4. 如請求項1之影像處理器,其中每一處理單元之該第一ALU及該第二ALU係進一步經組態以在下列期間執行至少部分平行之四個半寬度(half width)ALU運算: 該第一ALU及該第二ALU之每一者經組態以自輸入埠之一各自對接收輸入運算元以對該等輸入運算元中之每一者之下一半執行一第一半寬度運算、對該等輸入運算元中之每一者之上一半執行一第二半寬度運算及將該結果寫入至該兩個輸出埠中之一各自者。
  5. 如請求項1之影像處理器,其中每一處理單元之該第一ALU及該第二ALU係經組態以執行串行的(in serial)運算元的一對,其中該等ALU中之一者提供運算元之該對中之一者之一結果以作為輸入至該等ALU中之另一者及作為輸入至運算元之該對之另一者。
  6. 如請求項1之影像處理器,其中該第一ALU及該第二ALU係經進一步組態以執行一混合(fused)運算,其包括在下列期間對一第一運算元之該結果串列執行之一第二運算元: 該第一ALU經組態以自輸入埠之該第一對接收資料以執行該第一運算元及提供該第一運算元之一結果至該第二ALU;及 該第二ALU經組態以自輸入埠之該第二對之一輸入埠接收資料及自該第一ALU接收該第一運算元之該結果以執行該第二運算元及提供該第二運算元之一結果至該兩個輸出埠中之一者。
  7. 如請求項6之影像處理器,其中每一處理單元包括一多工器,其經組態以在一第一輸入埠與由該第一ALU所產生之一結果之間選擇一輸入及提供該經選擇之輸入以作為輸入至該第二ALU。
  8. 如請求項1之影像處理器,其中每一處理單元經組態以接收一指令,其規定表示一或兩個ALU運算之一運算碼(opcode),及其中當該運算碼表示一ALU運算時,該處理單元經組態以使該第一ALU及該第二ALU兩者執行相同的運算,及其中該處理單元經組態以使該第一ALU及該第二ALU兩者執行不同的其他(otherwise)運算。
  9. 如請求項1之影像處理器,其中每一處理單元經組態以使用該第一ALU及該第二ALU以執行一迭代除法程序(iterative divide process), 其中該第一ALU經組態以接收該四個輸入埠之一第一輸入埠上之該迭代除法程序之一分子(numerator)、接收該四個輸入埠之一第二輸入埠上之該迭代除法程序之一除數(divisor)、執行將該除數自一中間(intermediate)結果中減去之一第一減法運算; 其中該第二ALU經組態以接收該第一減法運算之一左移位(left-shifted)結果,且執行將該除數自該第一減法運算中減去之一第二減法運算。
  10. 一種藉由包括處理單元之一陣列的一影像處理器之一處理單元所實施之方法,該方法包括: 藉由該處理單元之一第一算術邏輯單元(ALU)及一第二ALU執行至少部分平行之一第一全寬度ALU運算及一第二全寬度ALU運算,其包含: 藉由該第一ALU以自該處理單元之輸入埠之一第一對接收資料; 藉由該第一ALU以使用自該處理單元之輸入埠之該第一對所接收之該資料以執行該第一全寬度ALU運算; 藉由該第一ALU以提供一第一全寬度ALU輸出至該處理單元之一第一輸出埠; 藉由該第二ALU以自該處理單元之輸入埠之一第二對接收資料; 藉由該第二ALU以使用自該處理單元之輸入埠之該第二對所接收之該資料以執行該第二全寬度ALU運算;及 藉由該第二ALU以提供一第二全寬度ALU輸出至該處理單元之一第二輸出埠;及 藉由該處理單元之一乘加邏輯單元以執行一乘加運算,其包含: 藉由該乘加邏輯單元以自該處理單元之三個或多個輸入埠接收資料,該資料包含自第一輸入埠所接收之一第一乘法運算元、自第二輸入埠所接收之一第二乘法運算元及自一或多個其他輸入埠所接收之一求和項; 藉由該乘加邏輯單元以執行一乘加運算,其包括該第一乘法運算元乘以該第二乘法運算元之一乘法及該乘法之一結果與該求和項的一求和運算;及 藉由該乘加邏輯單元以跨該處理單元之兩個輸出埠提供一雙倍寬度輸出。
  11. 如請求項10之方法,其中每一處理單元之一循環時間係基於該乘加運算之一執行時間。
  12. 如請求項10之方法,其進一步包括: 藉由該處理單元之該第一ALU及該第二ALU以執行一雙倍寬度ALU運算,其包含: 藉由該第一ALU以自輸入埠之該第一對接收資料; 藉由該第一ALU以執行對應於該雙倍寬度ALU運算之下一半之一第三全寬度ALU運算; 藉由該第一ALU以提供該雙倍寬度ALU運算之該下一半至該處理單元之該兩個輸出埠之一者; 藉由該該第一ALU以提供由該第三全寬度ALU運算所產生之一進位項至該第二ALU; 藉由該第二ALU以自輸入埠之該第二對接收資料及自該第一ALU接收該進位項; 藉由該第二ALU以執行對應於該雙倍寬度ALU運算之上一半之一第四全寬度ALU運算;及 藉由該第二ALU以提供該雙倍寬度ALU運算之該上一半至該處理單元之該兩個輸出埠之另一者。
  13. 如請求項10之方法,其進一步包括: 藉由該處理單元之該第一ALU及該第二ALU以執行至少部分平行之四個半寬度ALU運算,其包含: 藉由該第一ALU及該第二ALU以自該處理單元之輸入埠之一各自對接收輸入運算元; 藉由該第一ALU及該第二ALU以對該等輸入運算元中之每一者之下一半執行一第一半寬度運算; 藉由該第一ALU及該第二ALU以對該等輸入運算元中之每一者之上一半執行一第二半寬度運算;及 藉由該第一ALU及該第二ALU以將一結果寫入至該處理單元之該兩個輸出埠中之一各自者。
  14. 如請求項10之方法,其進一步包括: 藉由該處理單元之該第一ALU及該第二ALU以執行串行的運算元的一對,其包含藉由該等ALU中之一者以提供運算元之該對中之一者之一結果以作為輸入至該等ALU中之另一者及作為輸入至運算元之該對之另一者。
  15. 如請求項14之方法,其進一步包括: 藉由該第一ALU及該第二ALU以執行一混合運算,其包括對一第一運算元之一結果串列執行之一第二運算元,其包含: 藉由該第一ALU以自輸入埠之該第一對接收資料; 藉由該第一ALU以執行該第一運算元; 藉由該第一ALU以提供該第一運算元之一結果至該第二ALU; 藉由該第二ALU以自輸入埠之該第二對之一輸入埠接收資料; 藉由該第二ALU以自該第一ALU接收該第一運算元之該結果; 藉由該第二ALU以執行該第二運算元;及 藉由該第二ALU以提供該第二運算元之一結果至該兩個輸出埠中之一者。
  16. 如請求項15之方法,其中每一處理單元包括一多工器,且其進一步包含: 藉由該多工器以在一第一輸入埠與由該第一ALU所產生之一結果之間選擇一輸入;及 藉由該多工器以提供該經選擇之輸入以作為輸入至該第二ALU。
  17. 如請求項10之方法,其進一步包含: 藉由該處理單元以接收一指令,其規定表示一或兩個ALU運算之一運算碼;及 基於該運算碼表示一ALU運算之判定以使該第一ALU及該第二ALU兩者執行相同的運算。
  18. 如請求項10之方法,其進一步包含: 藉由該處理單元以接收一指令,其規定表示一或兩個ALU運算之一運算碼;及 基於該運算碼表示兩個ALU運算之判定以使該第一ALU及該第二ALU兩者執行不同的運算。
  19. 如請求項10之方法,其進一步包括: 使用該第一ALU及該第二ALU以執行一迭代除法程序,其包含: 藉由該第一ALU以接收一第一輸入埠上之該迭代除法程序之一分子; 藉由該第一ALU以接收一第二輸入埠上之該迭代除法程序之一除數; 藉由該第一ALU以執行將該除數自一中間結果中減去之一第一減法運算; 藉由該第二ALU以接收該第一減法運算之一左移位結果; 藉由該第二ALU以執行將該除數自該第一減法運算之該左移位結果中減去之一第二減法運算。
TW107106346A 2015-12-04 2016-11-17 用於影像處理之設備及方法 TWI680435B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/960,334 US9830150B2 (en) 2015-12-04 2015-12-04 Multi-functional execution lane for image processor
US14/960,334 2015-12-04

Publications (2)

Publication Number Publication Date
TW201816715A TW201816715A (zh) 2018-05-01
TWI680435B true TWI680435B (zh) 2019-12-21

Family

ID=57223790

Family Applications (3)

Application Number Title Priority Date Filing Date
TW107106346A TWI680435B (zh) 2015-12-04 2016-11-17 用於影像處理之設備及方法
TW108133222A TWI724545B (zh) 2015-12-04 2016-11-17 用於影像處理之設備及方法
TW105137593A TWI622014B (zh) 2015-12-04 2016-11-17 用於影像處理之設備及方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW108133222A TWI724545B (zh) 2015-12-04 2016-11-17 用於影像處理之設備及方法
TW105137593A TWI622014B (zh) 2015-12-04 2016-11-17 用於影像處理之設備及方法

Country Status (9)

Country Link
US (4) US9830150B2 (zh)
EP (2) EP3384376B1 (zh)
JP (1) JP6789287B2 (zh)
KR (1) KR102000894B1 (zh)
CN (1) CN108139886B (zh)
DE (1) DE112016005521T5 (zh)
GB (1) GB2561306A (zh)
TW (3) TWI680435B (zh)
WO (1) WO2017095547A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261786B2 (en) 2017-03-09 2019-04-16 Google Llc Vector processing unit
US10534736B1 (en) 2018-12-31 2020-01-14 Texas Instruments Incorporated Shared buffer for multi-output display systems
CN109902795B (zh) * 2019-02-01 2023-05-23 京微齐力(北京)科技有限公司 处理单元设置有输入复用器的人工智能模块和系统芯片
US10552939B1 (en) 2019-02-12 2020-02-04 Google Llc Image processor complex transfer functions

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5258944A (en) * 1992-09-01 1993-11-02 Cray Research, Inc. High performance mantissa divider
US5426600A (en) * 1993-09-27 1995-06-20 Hitachi America, Ltd. Double precision division circuit and method for digital signal processor
US5751618A (en) * 1994-02-22 1998-05-12 Texas Instruments Incorporated Arithmetic circuit
TW200521702A (en) * 2003-08-15 2005-07-01 Koninkl Philips Electronics Nv Parallel processing array
TW201106174A (en) * 2009-08-03 2011-02-16 Hon Hai Prec Ind Co Ltd Discrete cosine transformation circuit and apparatus utilizing the same
CN103793195A (zh) * 2012-10-31 2014-05-14 摩比莱耶科技有限公司 算术逻辑单元
CN104025034A (zh) * 2011-12-30 2014-09-03 英特尔公司 可配置精减指令集核

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US542600A (en) * 1895-07-09 Lattice hedge fence and method of plashing
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
US4486848A (en) * 1982-07-28 1984-12-04 Sperry Corporation Microprocessor parallel additive execution of a computer count ones instruction
EP0293701B1 (en) 1987-06-01 1994-08-10 Applied Intelligent Systems, Inc. Parallel neighborhood processing system and method
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
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 ソニー株式会社 画像データ処理装置および画像データ処理方法
US5612693A (en) 1994-12-14 1997-03-18 International Business Machines Corporation Sliding window data compression using a toroidal bit shift register
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US5777918A (en) * 1995-12-22 1998-07-07 International Business Machines Corporation Fast multiple operands adder/subtracter based on shifting
US6049859A (en) 1996-01-15 2000-04-11 Siemens Aktiengesellschaft Image-processing processor
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
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
US6606700B1 (en) * 2000-02-26 2003-08-12 Qualcomm, Incorporated DSP with dual-mac processor and dual-mac coprocessor
US7124160B2 (en) * 2000-03-08 2006-10-17 Sun Microsystems, Inc. Processing architecture having parallel arithmetic capability
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
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
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
AU2003221680A1 (en) 2002-04-09 2003-10-27 The Research Foundation Of State University Of New York Multiplier-based processor-in-memory architectures for image and graphics processing
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US20060212678A1 (en) * 2003-04-15 2006-09-21 Koninklijke Philips Electronics N.V. Reconfigurable processor array exploiting ilp and tlp
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
US7873815B2 (en) * 2004-03-04 2011-01-18 Qualcomm Incorporated Digital signal processors with configurable dual-MAC and dual-ALU
US20060044576A1 (en) 2004-07-30 2006-03-02 Kabushiki Kaisha Toshiba Apparatus for image processing
US7667764B2 (en) 2004-06-04 2010-02-23 Konica Minolta Holdings, Inc. Image sensing apparatus
JP4219887B2 (ja) 2004-12-28 2009-02-04 富士通マイクロエレクトロニクス株式会社 画像処理装置及び画像処理方法
US20100122105A1 (en) 2005-04-28 2010-05-13 The University Court Of The University Of Edinburgh Reconfigurable instruction cell array
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
FR2895103B1 (fr) 2005-12-19 2008-02-22 Dxo Labs Sa Procede et systeme de traitement de donnees numeriques
US7555514B2 (en) * 2006-02-13 2009-06-30 Atmel Corportation Packed add-subtract operation in a microprocessor
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US7882307B1 (en) * 2006-04-14 2011-02-01 Tilera Corporation Managing cache memory in a parallel processing environment
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 ブラザー工業株式会社 画像処理装置および画像処理プログラム
US8521800B1 (en) * 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
KR101036596B1 (ko) 2007-09-05 2011-05-24 가부시키가이샤 시마쓰세사쿠쇼 고체촬상소자 및 그 구동방법
JP5461533B2 (ja) 2008-05-30 2014-04-02 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ローカル及びグローバルのデータ共有
JP4999791B2 (ja) 2008-06-30 2012-08-15 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US8456480B2 (en) 2009-01-14 2013-06-04 Calos Fund Limited Liability Company Method for chaining image-processing functions on a SIMD processor
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
JP5385982B2 (ja) 2009-07-16 2014-01-08 株式会社日立製作所 障害の根本原因に対応した復旧方法を表す情報を出力する管理システム
US20110055495A1 (en) 2009-08-28 2011-03-03 Qualcomm Incorporated Memory Controller Page Management Devices, Systems, and Methods
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
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
JP5875530B2 (ja) 2011-01-31 2016-03-02 株式会社ソシオネクスト プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム
US20120254588A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
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
CN102637124B (zh) * 2012-03-22 2015-09-30 中国电子科技集团公司第五十八研究所 一种基4fft算法的并行处理装置及方法
TWI520598B (zh) 2012-05-23 2016-02-01 晨星半導體股份有限公司 影像處理裝置與影像處理方法
CN102750133B (zh) * 2012-06-20 2014-07-30 中国电子科技集团公司第五十八研究所 支持simd的32位三发射的数字信号处理器
US9232139B2 (en) 2012-07-24 2016-01-05 Apple Inc. Image stabilization using striped output transformation unit
US9588766B2 (en) 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
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
US9323535B2 (en) 2013-06-28 2016-04-26 Intel Corporation Instruction order enforcement pairs of instructions, processors, methods, and systems
GB2522290B (en) * 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
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
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator 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
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5258944A (en) * 1992-09-01 1993-11-02 Cray Research, Inc. High performance mantissa divider
US5426600A (en) * 1993-09-27 1995-06-20 Hitachi America, Ltd. Double precision division circuit and method for digital signal processor
US5751618A (en) * 1994-02-22 1998-05-12 Texas Instruments Incorporated Arithmetic circuit
TW200521702A (en) * 2003-08-15 2005-07-01 Koninkl Philips Electronics Nv Parallel processing array
TW201106174A (en) * 2009-08-03 2011-02-16 Hon Hai Prec Ind Co Ltd Discrete cosine transformation circuit and apparatus utilizing the same
CN104025034A (zh) * 2011-12-30 2014-09-03 英特尔公司 可配置精减指令集核
CN103793195A (zh) * 2012-10-31 2014-05-14 摩比莱耶科技有限公司 算术逻辑单元

Also Published As

Publication number Publication date
EP3384376B1 (en) 2019-12-04
TW202004655A (zh) 2020-01-16
JP2018532200A (ja) 2018-11-01
CN108139886A (zh) 2018-06-08
TWI622014B (zh) 2018-04-21
DE112016005521T5 (de) 2018-08-30
GB201805590D0 (en) 2018-05-23
TWI724545B (zh) 2021-04-11
JP6789287B2 (ja) 2020-11-25
US20220206796A1 (en) 2022-06-30
KR102000894B1 (ko) 2019-07-16
CN108139886B (zh) 2021-11-16
EP3633504A1 (en) 2020-04-08
US10185560B2 (en) 2019-01-22
TW201816715A (zh) 2018-05-01
US20190213006A1 (en) 2019-07-11
EP3633504B1 (en) 2021-10-06
WO2017095547A1 (en) 2017-06-08
KR20180052721A (ko) 2018-05-18
TW201721580A (zh) 2017-06-16
GB2561306A (en) 2018-10-10
US9830150B2 (en) 2017-11-28
EP3384376A1 (en) 2018-10-10
US20170161064A1 (en) 2017-06-08
US20170242695A1 (en) 2017-08-24

Similar Documents

Publication Publication Date Title
TWI690858B (zh) 用於在可程式化二維影像處理器上之卷積神經網路之方法、機器可讀媒體及裝置
CN110337635B (zh) 用于点积操作的系统、方法和装置
Yu et al. Vector processing as a soft-core CPU accelerator
US20220206796A1 (en) Multi-functional execution lane for image processor
JP5089776B2 (ja) 浮動小数点演算のための再構成アレイプロセッサ
US7555514B2 (en) Packed add-subtract operation in a microprocessor
Yu et al. Vector processing as a soft processor accelerator
TWI752343B (zh) 用於執行絕對差計算之加總的執行單元電路、影像處理器以及方法
TWI603262B (zh) 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令
JP6920277B2 (ja) 広いデータ要素のためのレジスタのペアを用いた偶数要素演算および奇数要素演算を有する混合幅simd演算
JP2008250471A (ja) 再構成可能なsimd型プロセッサ
EP1936492A1 (en) SIMD processor with reduction unit
WO2008077803A1 (en) Simd processor with reduction unit
US20240111489A1 (en) Bignum addition and/or subtraction with carry propagation
Anderson Design and implementation of an instruction set architecture and an instruction execution unit for the REZ9 coprocessor system
Yi et al. Design of a multi-format fixed point processing element for graphics processing