TW202201220A - 深度視覺處理器 - Google Patents
深度視覺處理器 Download PDFInfo
- Publication number
- TW202201220A TW202201220A TW110134170A TW110134170A TW202201220A TW 202201220 A TW202201220 A TW 202201220A TW 110134170 A TW110134170 A TW 110134170A TW 110134170 A TW110134170 A TW 110134170A TW 202201220 A TW202201220 A TW 202201220A
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- register
- template
- image pixel
- operations
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims description 89
- 230000009467 reduction Effects 0.000 claims description 41
- 238000013507 mapping Methods 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 10
- 230000002829 reductive effect Effects 0.000 claims description 8
- 230000009471 action Effects 0.000 claims description 3
- 238000012935 Averaging Methods 0.000 claims description 2
- 238000013135 deep learning Methods 0.000 abstract description 70
- 238000013527 convolutional neural network Methods 0.000 description 77
- 238000000034 method Methods 0.000 description 76
- 230000015654 memory Effects 0.000 description 45
- 238000004422 calculation algorithm Methods 0.000 description 27
- 238000012545 processing Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 20
- 230000033001 locomotion Effects 0.000 description 17
- 238000010606 normalization Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 238000001514 detection method Methods 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 10
- 238000013461 design Methods 0.000 description 9
- 241000414697 Tegra Species 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 238000012549 training Methods 0.000 description 8
- 239000000047 product Substances 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 5
- 230000001815 facial effect Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 238000000926 separation method Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 244000141353 Prunus domestica Species 0.000 description 3
- 238000003708 edge detection Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 244000169641 Spondias dulcis Species 0.000 description 2
- 235000005138 Spondias dulcis Nutrition 0.000 description 2
- 208000027418 Wounds and injury Diseases 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000001994 activation Methods 0.000 description 2
- 230000036626 alertness Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 208000014674 injury Diseases 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000035515 penetration Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241000282994 Cervidae Species 0.000 description 1
- 241000282326 Felis catus Species 0.000 description 1
- 241000009328 Perro Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000012152 algorithmic method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000036992 cognitive tasks Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000012010 growth Effects 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 238000003703 image analysis method Methods 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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
- G06F9/30112—Register structure comprising data of variable length
-
- 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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Graphics (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Steroid Compounds (AREA)
Abstract
本文中揭示一種用於深度學習之處理器。在一項實施例中,該處理器包括: 一載入與儲存單元,其經組態以載入且儲存影像像素資料及樣板資料;一暫存器單元,其實施一分庫式暫存器檔案,經組態以:自該載入與儲存單元載入且儲存該影像像素資料之一子集,且同時提供對經儲存於該分庫式暫存器檔案之一暫存器檔案項目中之影像像素值的存取,其中該影像像素資料之該子集包括經儲存於該暫存器檔案項目中之該等影像像素值;及複數個算術邏輯單元,其經組態以同時對經儲存於該暫存器檔案項目中之該等影像像素值及與自該互連單元儲存於該暫存器檔案項目中之該影像像素值對應之樣板資料執行一或多個操作。
Description
本發明係關於可程式化處理器,且特定而言係關於可執行一或多個類神經網路技術(例如,深度學習技術)及電腦視覺技術(例如,傳統電腦視覺技術)之較低能量可程式化處理器。
依賴於深度學習之電腦視覺技術(諸如基於迴旋類神經網路(CNN)之電腦視覺技術)可以一可靠且穩健方式完成複雜任務。舉例而言,汽車行業在自動駕駛車輛中且在安全特徵(諸如汽車中之障礙偵測及撞擊避免系統)中部署進階電腦視覺晶片集。在製造及倉儲部門中,實施類神經網路及深度學習技術以開發執行類人類任務之適應性機器人。在安全及監督應用中,具有類神經網路及深度學習能力之嵌入式裝置依據大量資料進行即時影像分析。在行動及娛樂裝置中,深度學習達成「智慧」影像及視訊擷取及搜尋,以及基於虛擬實境之內容之遞送。
在嵌入式裝置中廣泛採用類神經網路及深度學習之一障礙係類神經網路及深度學習演算法之極其高運算成本。某些電腦視覺產品使用可程式化一般用途圖形處理單元(GPU)。此等晶片可係電力消耗型的,然而電池操作之嵌入式裝置可經設計以用於低電力高效操作。甚至並非電池操作之裝置(例如,可插塞至一壁式插座中之裝置)及乙太網路供電(POE)裝置(諸如一家用安全攝影機系統)可(舉例而言)由於熱管理要求(諸如一裝置可具有之熱耗散量)而經設計以用於低電力高效操作。某些電腦視覺產品使用依賴於固定功能加速器之專門晶片,該等固定功能加速器即使未必係電力消耗型的亦缺乏彈性及可程式性。
下文之隨附圖式及實施方式中闡明本說明書中所闡述之標的物之一或多項實施方案之細節。依據說明、圖式及申請專利範圍將明瞭其他特徵、態樣及優點。此發明內容及以下實施方式皆不意欲定義或限定本發明之標的物之範疇。
在本文中揭示一種用於深度學習之處理器。在一項實施例中,該處理器包括: 一載入與儲存單元,其經組態以載入且儲存影像像素資料及樣板資料;一暫存器單元,其實施一分庫式暫存器檔案,經組態以: 自該載入與儲存單元載入且儲存該影像像素資料之一子集;且同時提供對儲存於該分庫式暫存器檔案之一暫存器檔案項目中之影像像素值之存取,其中該影像像素資料之該子集包括儲存於該暫存器檔案項目中之該等影像像素值;一互連單元,其與該暫存器單元及複數個算術邏輯單元通信,該互連單元經組態以: 提供儲存於該暫存器檔案項目中之該等影像像素值;且提供與儲存於該暫存器檔案項目中之該等影像像素值對應之樣板資料;及該複數個算術邏輯單元,其經組態以同時對來自該互連單元的儲存於該暫存器檔案項目中之該等影像像素值及與儲存於該暫存器檔案項目中之該等影像像素值對應之樣板資料執行一或多個操作。
相關申請案交叉參考
本申請案主張2017年7月5日提出申請且標題為「DEEP VISION PROCESSOR」之第62/528,796號美國臨時申請案之權益,該美國臨時申請案係以全文引用的方式併入本文中。
版權通知
此專利文檔之揭示內容的一部分含有受版權保護的材料。如專利商標局專利文件或記錄中所顯現,版權所有者不反對任何人對本專利文檔或專利揭示內容進行拓製,但無論如何將以其他方式保留所有版權。概述
本發明針對視覺處理器及嵌入式深度學習(DL)電腦視覺軟體兩者提供一新方法。本文中所揭示之方法可由系統、方法、裝置、處理器及處理器架構實施。本文中所揭示之實施一深度視覺處理器架構之一深度視覺(DV)處理器可具有與用於一類似工作負荷之一GPU相比較高一或多個量級之功率效率(例如,高達兩個量級)、低一或多個量級之成本(例如,至少一級)及/或比一GPU好之效能/瓦特(例如,好66x之效能)。因此,該處理器可達成快速、節能且較低成本之本地與基於雲之影像及資料處理。
在某些實施例中,DV處理器可係一高效能、超低功率、可擴縮特殊應用積體電路(ASIC)處理器。除傳統視覺演算法之外,其新穎、完全可程式化架構亦經設計以用於機器學習(例如,深度學習)。對處理器進行補足之深度學習最佳化軟體可使得複雜迴旋類神經網路(CNN)及其他演算法能夠高效地映射至嵌入式處理器以達成最佳效能。其減少層且修剪CNN以在嵌入式平臺中達成最佳功率及效能。該軟體包含最適合用於嵌入式處理器之較輕較薄CNN之一程式庫。應用
近年來,深度學習已藉由使一基於人工智慧之方法進行經典電腦視覺任務(諸如影像分類、目標偵測及識別、活動辨識等)而徹底改革電腦視覺領域。此方法已對該領域具有一變革性影響,使得機器在此等視覺認知任務中之某些視覺認知任務中已經開始超越人類。基於深度學習之視覺已用於資料中心中,且需要使一裝置陣列(包含自動駕駛汽車、無人機、機器人、用於家庭監控以及安全/監督應用之智慧型攝影機、擴增實境、混合實境及虛擬實境耳機、行動電話、物聯網(IoT)攝影機等)具有視覺智慧。
取決於電腦視覺之自動化任務已跨越數個行業自實驗概念演變為日常應用。隨著對經增強駕駛員安全、遠端監測及即時監督功能之需要繼續增長,自動駕駛車輛、無人機及人臉識別系統可能對社會具有一變革性影響。在過去十年,雖然裝置嵌入式攝影機及其他偵測器之能力及效能已顯著改良,但關於晶片設計及一給定操作所需要之運算之能量效率兩者,所獲取影像之運算處理已相當落後。本發明針對處理器設計提供一深度視覺(DV)架構,此可在跨越數個行業之嵌入式裝置中釋放電腦視覺之潛力。DV架構之應用包含低成本超低功率攝影機中之辨識任務至自動駕駛汽車中之複雜場景分析及自主導航。
然而,此技術在嵌入式裝置中之大規模採用之一個障礙係深度學習演算法之高運算成本。當前,GPU係用於實施深度學習解決方案之主要平臺,但GPU對於電池操作之嵌入式裝置而言消耗非常多電力。同時,GPU對於此等目標領域中之諸多領域而言亦係太過昂貴的。在某些實施例中,本文中所揭示之實施該DV處理器架構之一DV處理器具有與用於此工作負荷之一GPU相比較高若干量級之功率效率及低至少一量級之成本。在某些實施例中,本文中所揭示之一DV處理器可執行傳統影像分析方法,諸如特徵提取、邊緣偵測、過濾或光學流。
電腦視覺技術之應用包含汽車、運動及娛樂、消費性電子器件、機器人與機器視覺、醫療、安全與監督、零售及農業。已預計電腦視覺技術(例如,硬體及軟體)之全世界收益在2022年之前增長500% (自小於$ 100億至接近於$ 500億),其中汽車應用佔最大收益份額,隨後係消費性電子器件、機器人及安全應用。已預計此等市場區隔見證嵌入式硬體(例如,偵測系統及影像處理晶片)之大量銷售,該等銷售佔在一給定年內之總收益之約70%至80%。
表1列出在垂直市場內之非限制性實例性具體應用,其中對嵌入式電腦視覺之低功率高效能解決方案之需求經設定以在未來幾年顯著增長。
表1.具有電腦視覺能力之嵌入式裝置之應用。
ADAS | IP 安全 | 無人機 | 機器人 |
撞擊控制、駕駛員警惕、高速公路司機 | 人識別、行為辨識 | 遠端監測、撞擊避免、物件識別 | 自動導航、掌握偵測 |
進階駕駛員輔助系統
。進階駕駛員輔助系統(ADAS)市場之一個駕駛員係安全的。已預計僅在美國之年度道路交通損傷在2030年之前高達360萬,其中超出90%歸因於認為失誤及缺陷。用以控制此等事故之立法可驅動汽車安全特徵(諸如ADAS)之廣泛採用,該等汽車安全特徵補充及/或補足駕駛員警惕以實質上幫助減少或消除人為失誤、損傷及死亡。
在某些實施例中,汽車行業中開發ADAS子系統之公司可利用DV處理器。諸如Bosch、Delphi及Continental之公司可連同適當軟體程式庫及參考設計一起利用本文中所揭示之深度學習/電腦視覺晶片以整合至ADAS子系統中。汽車製造商可將ADAS子系統整合至汽車中。
在ADAS解決方案空間中之兩個公司係Mobileye及Nvidia – ADAS之開發及裝運解決方案兩者。Mobileye之當前供給係固定功能,例如,其非常良好地執行一具體功能,諸如識別一「停止」符號或一行人。Nvidia之GPU供給可程式化有任何目前最佳技術深度學習演算法。然而,NVIDIA之解決方案係高度電力消耗性的且花費超過數百美元,或超過每晶片$1,000 (例如,nVidia Drive PX2)。在下一個十年,每一輛新汽車可具有每天產生超過4TB之資料且需要50至100兆浮點操作/秒(TFLOPS)之運算處理功率的多個8K及4K HD攝影機、雷達及光達。每一輛汽車可需要多個GPU來跟上不斷增加之資料及運算循環之需要以處理該等不斷增加之資料及運算循環。Mobileye之提供(儘管具成本效益)趨向於係嚴格的且不可程式化的,且因此對於將在未來由汽車產生之資料量係不可擴縮的。就成本、電力、效能、可擴縮性及可程式性而言,DV處理器可克服此等障礙中之一或多者。
汽車市場總量已經每年固定在1.1億個單位。雖然ADAS在此區隔中之滲透率當前處於6%,但已預測其在2020年之前上升至50%。若小客車市場總量存在低增長/不存在增長,則此使ADAS之可定址市場份額在2020年達到5,500萬個單位。本文中所揭示之DV處理器架構可使此等解決方案之成本及障礙實質上降低以在2020年之前達成50%之一預測滲透率。
網際網路協定(IP) 安全攝影機
。在網際網路協定(IP)安全攝影機區隔中,每年裝運6,600萬個網路攝影機且存在對人及物件之分析、尤其係即時偵測及辨識之一增長需求。IP攝影機之某些終端市場(諸如醫院)出於病人隱私原因而不允許將所記錄視訊上載至一伺服器/雲上。在此等情形中,具有使用(舉例而言)本文中所揭示之系統、方法、裝置、處理器及處理器架構實施的在邊緣處提供偵測及辨識之一解決方案可確保合規性同時滿足機構之安全需要。已在2017年預測即時邊緣分析之可定址市場份額在2020年之前上升至年度單位之30%。
在IP安全攝影機區隔中之公司(例如,攝影機及安全系統製造商,諸如Axis、Bosch、Avigilon及Pelco)可利用本文中所揭示之DV處理器。攝影機制造商可利用本文中所揭示之電腦視覺晶片及軟體程式庫。另一選擇係或另外,攝影機SoC (系統單晶片)解決方案提供商(諸如Ambarella、Geo Vision、Novatek)可將本文中所揭示之方法用在SoC中,攝影機制造商可將SoC整合至相機中。
在IP安全攝影機市場內,當前分析方法包含基於軟體之解決方案且通常(例如)在將視訊饋送上載至雲/資料中心之後離線執行。此方法可不滿足對攝影機處之即時分析(諸如人及物件辨識)之需要。為了邊緣處之辨識及偵測,可需要嵌入於攝影機中之一低功率高效能矽。由於可透過IP電纜路由至攝影機之有限功率,因此低功率在此區隔中可係重要的。本文中所揭示之DV處理器可良好地適合於解決此市場。在此空間中開發SoC之公司係Ambarella、HiSilicon、Fujitsu、Geovision或Grain Media,其利用本文中所揭示之DV處理器。深度學習
深度學習(DL)係指使用非常深之迴旋類神經網路(CNN)來完成運算任務之一機器學習技術。一迴旋類神經網路(CNN)可係指多層感知器(MLP)之一特殊變體,該等多層感知器含有可跨越空間或時間施加以將一輸入量變換為一輸出量之重複神經元層。一般在CNN中遇到之該等重複層包括迴旋、正規化、集區化及分類。LeNet-5 (已徹底改革深度學習領域之第一CNN架構中之一者)經設計以執行字符辨識且由兩個迴旋層、兩個集區化層及三個分類器或完全經連接層組成。儘管LeNet-5不以一正規化層為特徵,但最近網路已證明採用正規化層來改良訓練準確度之功效。
迴旋層
。一迴旋層構成一CNN之一組成部分。一CNN層可由以一或多個大小之過濾器庫之形式配置之一可學習神經元集合組成,在空間(影像)上或在時間(語音)上使該等可學習神經元迴旋以識別輸入特徵圖譜之可學習特性。此等過濾器庫可將由在若干維度上延伸之若干個通道組成之一輸入量映射至由涵蓋維度之深度組成之一輸出量。該等過濾器庫之輸出可係在維度上經配置以產生最後輸出量之啟動功能。
迴旋層之一功能可係在不同空間或時間位置處學習相同特徵。可藉由用輸入量使以過濾器庫之形式配置之神經元迴旋而達成此學習。由於跨越輸入之空間維度採用相同過濾器,因此神經元可能夠共用權數,從而產生具有比傳統MLP實質上小之記憶體佔用面積之網路。
迴旋層趨向於係一CNN網路之運算密集組件。在CNN中採用之迴旋內核之大小實質上變化,其中在開始層中採用較大內核大小,從而在稍後階段中讓位於較小內核大小。含有大過濾器大小之初始層在擷取啟動處可係較佳的,此起因於高或低頻率特徵圖譜。然而,採用較小過濾器之稍後層可擷取中間頻率資訊。較小過濾器大小可產生更有特色且更少「死亡」特徵。3×3個迴旋在最近網路(諸如Google之AlphaGo網路或Microsoft之深殘餘網路)中已成為選擇之過濾器。
集區化層
。一般在一迴旋階段之後採用一集區化層且跨越空間維度在每一深度層級處執行減少取樣之任務。集區化功能(如迴旋層)以一滑動窗方式對資料樣板進行操作,其中2×2及3×3窗大小係更常見的。減少取樣運算子可本質上係非線性的,其中最大值係最常用功能。然而,可使用諸如L2範數及求平均之其他功能。集區化在稍後階段中減少參數數目及運算量且藉由不再強調所學習特徵相對於其他特徵之精確位置而阻止過度擬合。
正規化層
。正規化層藉由阻止權數分佈自一個層太迅速地改變至另一層而加速訓練。權數正規化可阻止非線性飽和,從而在不需要仔細參數初始化之情況下產生實質上經加速訓練。在最近網路中正規化之一種方法係批次正規化。批次正規化在藉由需要減少高達14倍之步驟而加速訓練方面可係高效的。可使用下文之方程式[1]在每一深度切片處對訓練資料執行批次正規化。其他正規化包含區域回應正規化及區域反差正規化。
分類或完全經連接層
。完全經連接(FC)層就像常規類神經網路層且通常在迴旋、集區化及其他層之一序列之後採用。此等層藉由將先前層之所有啟動連接至輸出神經元而運算最後輸出。由於全部對全部連接,此等層可產生許多參數及相當大量之記憶體流量。
近年來深度學習已取得數個進展,從而引起尤其在電腦視覺領域中採用深度學習之一爆發。此廣泛採用因在物件分類及辨識方面比人類準確度好而變得可能。可藉由回顧在過去幾年影像網大規模視覺辨識挑戰(ILSVRC)之結果而瞭解到深度學習在電腦視覺領域中之優勢。ILSVRC係在斯坦福大學組織之一年度競賽,其大規模地評估用於物件偵測及影像分類之演算法。在2010年及2011年,即使採用最好的傳統電腦視覺技術,亦分別導致28%及26%之高誤差率。相比之下,深度學習方法在僅4年內使誤差率降至3.7%之一非常低之值。
由處置視覺資訊之嵌入式裝置採用更準確深度學習演算法之一主要障礙係其運算複雜度。深度學習演算法之增加準確度一般已藉由採用愈來愈深且愈來愈大之網路而達成。在ILSVRC挑戰項目中採用之CNN層之數目已自2012年之8個層(AlexNet)迅速地上升至2015年之152個層(Resnet-152)。Googlenet – Google開發之一受歡迎CNN (其係2014年ILSVRC之贏家)- 需要大約30億個運算操作來進行一個推斷。為以一3.57%誤差率對一單個物件進行分類,2015年ILSVRC贏家ResNet-152需要3,000億個操作。預期在完全自動汽車中之電腦視覺系統之運算工作負荷在500,000至1,000,000億個運算操作/秒(TOPS)之範圍內。
可針對深度學習演算法(諸如AlexNet、BN-AlexNet、BN-NIN、Enet、GooLeNet、ResNet-18、ResNet-50、ResNet-34、ResNet-101、ResNet-152、Inception-v3、Inception-v4、VGG-16及VGG-19)利用一DV處理器以達成高於50%之準確度,諸如60%、70%、80%、90%、99%或更高。DV處理器執行之操作數目可係5M、35M、65M、95M、125M、155M、200M Giga-Ops (GOPS)或更多。層數目可係8、19、22、152、200、300或更多個層。DV處理器可用於現有及新深度學習演算法及架構。
GPU已用於達到TOPS之規模之工作負荷。GPU提供高運算輸出量且同時其係完全可程式化的,因此能夠適應於改變之深度學習網路演算法。其提供高運算輸出量,可係完全可程式化的,因此能夠適應於深度學習網路演算法之不斷改變複雜度。然而,效能與可程式性之此組合就功率及美元成本兩者而言皆係有代價的。當今可用之一個嵌入式GPU係Nvidia之Tegra X1,其提供1 TOPS之效能但消耗10W至20W之功率且花費數百美元,其遠遠超出了大多數較小嵌入式裝置之成本及功率預算。Nvidia之Drive PX-2 (自動汽車之高端GPU解決方案)花費數千美元且消耗數百瓦特之功率以實現20 TOPS/s之效能。給定此等汽車之50至100 TOPS效能要求,一基於Drive PX-2之系統將花費數千美元且消耗若干千瓦之能量,此對於根本不極其昂貴高端汽車係不可行的。
克服嵌入式系統上之深度學習網路之運算挑戰之一種方法係開發固定功能硬體。然而,深度學習領域正在以一速度演變,使得在硬體中具有任何演算法可存在使晶片在一年內過時之風險。隨著製作特殊應用積體電路(ASIC)之成本每年上升,此一方法可係不可行的。
在某些實施例中,本文中所揭示之可程式化處理器架構(其與GPU不同)可專門用於基於深度學習之電腦視覺任務。具有該架構之一DV處理器與GPU相比較可使深度學習運算之功率成本下降(舉例而言) 50x且使美元成本下降(舉例而言)多於10x。本文中所揭示之DV處理器架構良好地適用於迅速演變之深度學習領域,包含不同深度學習參數、輸入通道及輸出深度。該DV架構可使資料儘可能(或實際或合意地)接近於處理器以攤銷記憶體功率耗散。實施DV處理器架構之一DV處理器可係完全可程式化的且提供與固定功能硬體相當之能量效率。
一DV處理器可係具有高效率之一低功率可程式化影像處理器以用於影像處理應用。與當前行業標準相比較,一DV處理器可處置具有若干量級功率成本優點之深度學習任務。在某些實施例中,一DV處理器可係在汽車安全、安全攝影機及自導無人機系統之市場區隔中使用之一嵌入式電腦視覺處理器。與其他處理器相比較,一DV處理器可係具有高效能功率包絡之一低成本處理解決方案。GPUS 、具有固定功能 CNN 之 DSP 及 DV 處理器之實例性比較
圖1係比較深度視覺(DV)處理器、具有固定功能CNN之數位信號處理器(DSP)及圖形處理單元(GPU)之效能之一實例性繪圖。一DV處理器可具有高效率,其中一完全可程式化架構可自低於1W攝影機擴縮至大汽車系統。具有一固定功能CNN之一DSP可比GPU更高效。然而,一DSP可不良好地適應於改變之演算法方法。而且,具有一固定功能CNN之一DSP可具有受限定關鍵記憶體及運算最佳化。一GPU可係一非常撓性一般用途資料並行引擎,其可無縫地自小系統擴縮至大系統。然而,一GPU可具有非常高功率、大小及成本。
GPU對於深度學習可係低效的。舉例而言,一GPU之每一核心可自儲存器提取資料以處理一單個像素。舉例而言,一GPU之不同核心可自L1儲存器提取相同或不同像素之資料。昂貴資料重新提取之程序可係電力消耗性的,從而導致來自大數目個核心之顯著硬體及能量額外負擔。
GPU可需要大昂貴資料儲存裝置。舉例而言,一NVidia Tegra X1處理器可包含共用一64 KB暫存器檔案之32個核心之一群組。GPU需要維持用於在每一核心上經排程之多個執行緒之資料。每一核心可必須在其切換至不同執行緒時自大暫存器檔案來回地連續地讀取/寫入資料。在具有64 KB暫存器檔案之情況下,每一核心(例如,每一核心可具有2個算術邏輯單元)需要2 KB之暫存器儲存裝置。
數位信號處理器(DSP)可係單維或一維(1D)的且需要資料隨機排列(shuffle)以與二維(2D)像素資料一起工作。圖2係展示一單維數位信號處理器如何在單維及二維像素資料上操作之一實例性示意性圖解說明。DSP處理器固有地係1D且一次對一個像素列進行操作。因此,執行重疊2D樣板需要不必要資料隨機排列。舉例而言,一二維像素資料可具有4×4之一尺寸。即使一64元素向量暫存器可儲存二維像素資料之16個元素,亦可需要資料隨機排列將4×4像素資料變換成一維資料。
若增加SIMD之向量大小以獲得更多並行性,則SIMD之利用率可下降。此可針對較小影像而發生。此亦可針對多個極長指令字(VLIW)插槽而發生,此情況可藉由使用多個小向量操作而緩解。然而,暫存器檔案(RF)面積及能量成本可由於埠數目之增加以及對核對多個指令槽之資料旁路及互鎖之需要而實質上增加。在某些實施例中,一DV處理器可具有比一DSP低之暫存器檔案面積及能量成本。與DSP相比較,該DV處理器可具有相同數目或不同數目個埠(例如,更多埠或更少埠)。在某些實施方案中,該DV處理器可或可不實施核對多個指令槽之資料旁路及/或互鎖。
將一深度學習加速器添加至一DSP可不改良DSP效率。圖3展示具有與靜態隨機存取記憶體(SRAM)通信之一數位信號處理器或單指令多資料(SIMD)核心及一迴旋類神經網路(CNN)加速器之一實例性處理器架構。CNN運算之結構可係改變的。舉例而言,AlexNet需要11×11 2D迴旋,而Inception-v2網路可需要1×3及3×1 1D迴旋。可需要對DSP或SIMD核心執行諸多CNN運算,此可需要透過一SRAM在DSP或SIMD核心與CNN加速器之間進行許多來回通信。此來回通信可招致一大能量成本。一CNN加速器可不使其他演算法(諸如特徵提取、分割或長短期記憶體(LSTM))加速。
執行額外負擔及資料移動可支配一處理器之功率及成本。指令執行額外負擔可包含與載入儲存單元、快取記憶體管理、管線管理、資料旁路邏輯、暫存器檔案、運算操作、指令提取、指令解碼、定序及分支或例外情況處置相關聯之彼等指令執行額外負擔。相對於運算操作,L1記憶體提取、L2記憶體提取及DRAM提取可消耗50x、400x及2000x之能量。對於一處理器,運算操作可使用處理器電力消耗總量之1%,而執行額外負擔及資料移動可分別消耗處理器電力消耗總量之20%及79%。實例性迴旋引擎架構及深度視覺處理器架構
一迴旋引擎(CE)可係一可程式化處理器。已在第9,477,999號美國專利中揭示一CE引擎之特定實施例,該美國專利之內容據此以全文引用方式併入本文中。簡而言之,一CE可實施專用於在運算攝影、傳統電腦視覺及視訊處理中流行之資料流之指令集架構(ISA)。
在一CE或一DV處理器之某些實施例中,因不需要完全可程式性且替代地以在深度學習中使用之關鍵資料流型樣為目標,處理器可係高效的且經程式化且跨越寬廣範圍之應用經重複使用。一CE或一DV處理器可囊括在下文之方程式[2]中所展示之映射-歸約抽象化。
表2.傳統CV之功率(瓦特)與效能(毫秒)之比較。縮寫如下: 積分運動估計(IME)絕對差和(SAD)、分率運動估計(FME)、SIFT (尺度不變特徵變換)及高斯差(Dog)。
映射 | 歸約 | 樣板大小 | 資料流 | |
IME SAD | 絕對差 | 加法 | 4×4 | 2D迴旋 |
FME ½ 像素增加取樣 | 乘法 | 加法 | 6 | 1D水平及垂直迴旋 |
FME ¼ 像素增加取樣 | 求平均 | 無 | - | 2D矩陣操作 |
SIFT 高斯模糊 | 乘法 | 加法 | 9、13、15 | 1D水平及垂直迴旋 |
SIFT DoG | 減法 | 無 | - | 2D矩陣操作 |
SIFT 極值 | 比較 | 邏輯「及」 | 9×3 | 2D迴旋 |
去馬賽克內插 | 乘法 | 複合 | 3 | 1D水平及垂直迴旋 |
一CE或一DV處理器架構可定義一抽象運算模型,稱為映射-歸約。此映射-歸約運算抽象化係使用一基於類迴旋樣板之資料流之整個演算法域之一廣義表示。方程式[2]展示此廣義運算模型,且表2展示各種典型成像操作可如何藉由選擇適當映射及歸約功能以及樣板大小而表達為映射-歸約運算。
2D移位暫存器可係用於影像資料之主要儲存緩衝器。與一次存取一個列之一傳統暫存器檔案不同,此暫存器允許讀取其列、行或甚至2D子區塊之能力。其亦提供水平及垂直資料移位能力以支援類迴旋滑動窗資料流。2D係數暫存器類似於2D移位暫存器,但不具有移位。2D係數暫存器用於儲存迴旋係數或在處理一影像或視訊圖框之不同部分時不改變之其他「常數」資料。輸出暫存器檔案係具有僅列存取之一更傳統向量/SIMD暫存器檔案。此可由位於映射-歸約核心旁邊之SIMD引擎使用且亦充當用於映射-歸約核心之中間輸出暫存器。
一CE或一DV處理器可包含若干個介面單元(IF)、ALU、歸約單元及SIMD。諸如水平IF、垂直IF及2D IF之介面單元可用於自暫存器讀取適當大小之適當列、行或2D資料樣板且基於大小及運算類型而將其路由至ALU。ALU層可併入有可並行操作以在一單個指令中實施大數目個運算操作之64、128、256或更多個ALU。暫存器、介面單元及ALU實施映射-歸約抽象化之「映射」部分。歸約單元支援「歸約」抽象化,從而提供對各種歸約類型(包含算術、邏輯及廣義圖表歸約)之支援。除映射-歸約核心之外,一CE或DV處理器亦可包含一寬廣SIMD引擎以支援並不良好地映射至映射-歸約抽象化之彼等資料並行操作。在某些實施例中,一DV處理器之一智慧互連可實施一映射單元之若干個介面單元。
圖4展示一CE或DV處理器之某些實施例之一實例性架構。CE或DV處理器40可包含一載入與儲存單元42、一移位暫存器單元44、一映射單元46、一歸約單元48及一輸出暫存器50。載入與儲存單元42載入且儲存去往及來自各種暫存器檔案之影像像素資料及樣板資料。為改良效率,載入與儲存單元42支援多個記憶體存取寬度且可處置未經對準存取。在一項實施例中,載入與儲存單元42之最大記憶體存取寬度係256個位元。此外,在另一實施例中,載入與儲存單元42提供交插存取,其中來自一記憶體載入之資料經分裂且儲存於兩個暫存器中。此在諸如去馬賽克(其需要將輸入資料分裂成多個色彩通道)之應用中可係有幫助的。藉由設計載入與儲存單元42以支援多個記憶體存取寬度及未經對準存取,極大地改良CE或DV處理器40中之資料流之彈性。亦即,可經由一單個讀取操作存取載入與儲存單元42中之任何資料,此節省時間及功率兩者。
移位暫存器單元44包含若干個1維及2維移位暫存器。具體而言,移位暫存器單元44包含一第一1維移位暫存器52、一2維移位暫存器54及一2維樣板暫存器56。一般而言,第一1維移位暫存器52、2維移位暫存器54及2維樣板暫存器56將影像像素資料之一子集自載入與儲存單元42提供至映射單元46,從而允許視需要移入新影像像素資料。第一1維移位暫存器52可由CE或DV處理器40用於一水平迴旋程序,其中當一1維樣板在一影像列上移動時將新影像像素水平地移位至1維移位暫存器52中。2維移位暫存器54及2維樣板暫存器56可用於垂直及2維迴旋程序。具體而言,2維移位暫存器54可用於儲存影像像素資料,而2維樣板暫存器56可用於儲存樣板資料。2維移位暫存器54支援垂直列移位: 當一2維樣板垂直向下移動至影像中時將影像像素資料之一個新列移位至2維移位暫存器54中。2維移位暫存器54進一步提供對儲存於其中之所有影像像素之同時存取,藉此使得移位暫存器單元44能夠將任何數目個所要影像像素同時饋送至映射單元46。一標準向量暫存器檔案由於其受限制設計而不能夠提供前文提及之功能性。
2維樣板暫存器56儲存不隨著樣板移動跨越影像而改變之資料。具體而言,2維樣板暫存器56可儲存樣板資料、當前影像像素或在經窗化最小/最大樣板之中心處之像素。將來自映射單元46及歸約單元48之過濾操作之結果往回寫入至2維移位暫存器54或輸出暫存器50。輸出暫存器50經設計以表現為一2維移位暫存器以及一向量暫存器檔案兩者。當將來自歸約單元48之資料寫入至輸出暫存器50時調用輸出暫存器50之移位暫存器行為。輸出暫存器50之移位暫存器功能性簡化暫存器寫入邏輯且減少能量,此在樣板操作僅僅針對幾個位置產生資料且新產生之資料需要與現有資料歸併(此通常將引起一讀取修改及寫入操作)時係尤其有用的。具體而言,藉由在自歸約單元48之每一寫入操作之後旋即使輸出暫存器50之寫入位置移位至下一空元素,可節省CE或DV處理器40中之時間及能量。當輸出暫存器檔案與某一種類之一向量單元介接時調用輸出暫存器50之向量暫存器檔案行為。
在移位暫存器單元44中使用2維移位暫存器54及2維樣板暫存器56使CE或DV處理器40適合於影像像素資料之儲存及存取。具體而言,由於影像像素資料包含影像像素值之列及行兩者,因此儲存及存取如在一2維暫存器中之影像像素資料會產生在儲存或存取資料時迴旋影像處理器之效率及效能之顯著優點。如上文所論述,資料額外負擔(諸如預測、提取、儲存及存取記憶體中之資料)佔一般用途處理器中之處理時間之一大部分。因此,CE或DV處理器40係更高效的且效能比此等一般用途處理器好。
映射單元46包含若干個介面單元(IF) 58A至58F及若干個算術邏輯單元(ALU) 60。IF 58將由移位暫存器單元44中之移位暫存器中之一者提供之影像像素資料配置成將由ALU 60作用之一特定型樣。配置該資料可包含提供影像像素資料之多個經移位1維或2維區塊,提供對影像像素資料之多個經移位垂直行之存取,或提供影像像素資料之多個任意配置。產生影像像素資料之多個經移位版本所需要之所有功能性囊括在IF 58中。此藉由在一個區塊內高效地產生由ALU 60需要之影像像素資料而允許導線之一短接同時使CE或DV處理器40之資料路徑之剩餘部分為簡單的且相對地擺脫控制邏輯。由於給IF 58分派任務以促進基於樣板之操作,因此用於IF 58之多工邏輯保持簡單且阻止IF 58成為一瓶頸。
IF 58可包含經組態而以一特定方式配置影像像素資料之若干個任務特定IF 58。具體而言,IF 58可包含一資料隨機排列IF 58A、一水平IF 58B、一行IF 58C、一第一2維IF 58D、一1維IF 58E及一第二2維IF 58F。資料隨機排列IF 58A可耦合至2維移位暫存器54且經組態以將影像像素資料之一或多個任意配置自2維移位暫存器54提供至歸約單元48。水平IF 58B可耦合至1維移位暫存器52且經組態以將一列影像像素資料之多個經移位版本自1維移位暫存器52提供至ALU 60之一第一輸入62A。行IF 58C可耦合至2維移位暫存器54且經組態以將一行影像像素資料之多個經移位版本自2維移位暫存器54提供至ALU 60之第一輸入62A。第一2維IF 58D可耦合至2維移位暫存器54且經組態以將影像像素資料之一2維區塊之多個經移位版本自2維移位暫存器54提供至ALU 60之第一輸入62A。1維IF 58E可耦合至2維樣板暫存器56且經組態以將樣板資料之一1維區塊(列或行)之多個經移位版本自2維樣板暫存器56提供至ALU 60之一第二輸入62B。第二2維IF 58F可耦合至2維樣板暫存器56且經組態以將樣板資料之一2維區塊之多個經移位版本自2維樣板暫存器56提供至ALU 60之第二輸入62B。多個資料大小由IF 58中之每一者支援且可選擇一適當IF。
由於所有資料重新配置由IF 58處置,因此ALU 60僅僅係固定點雙輸入算術ALU。ALU 60可經組態以對一給定影像像素及樣板值執行算術操作,諸如乘法、絕對差、加法、減法、比較及類似者。映射單元46可係可程式化的,使得可(舉例而言)由一使用者選擇由IF 58提供至ALU 60中之每一者之影像像素資料之特定配置及由ALU 60中之每一者執行之操作。在映射單元46中提供此彈性允許迴旋影像處理器40實施大數目個迴旋操作,使得迴旋影像處理器可執行各種影像處理技術。映射單元46之通用性在與移位暫存器單元44之效率組合時產生由於移位暫存器單元44及映射單元46兩者中之資料寫入及存取型樣而係高度高效之一迴旋影像處理器40,該等資料寫入及存取型樣適合於影像像素資料且由於映射單元46之可程式性而係高度通用的。
將ALU 60中之每一者之輸出饋送至歸約單元48。一般而言,歸約單元48經組態以組合來自映射單元46之所得值中之至少兩個值。由歸約單元48組合之來自映射單元46之所得值之數目取決於在迴旋程序中使用之樣板之大小。舉例而言,一4×4 2維樣板需要一16:1歸約,而一2×2 2維樣板需要一8:1歸約。歸約單元48可實施為一樹且可自樹之多個級分接出輸出。在一項實施例中,複合歸約可由歸約單元48執行以便增加CE或DV處理器40之功能性,如下文進一步詳細地論述。
作為CE或DV處理器40之操作之一實例,現在闡述使用4×4 2維樣板資料之一迴旋程序。將來自載入與儲存單元42之樣板資料載入至2維樣板暫存器56之前四個列中。此外,將四列影像像素資料移位至2維移位暫存器54之前四個列中。在目前實例中,映射單元46中存在64個ALU 60。因此,可並行地對高達四個4×4 2維區塊進行操作。第一2維IF 58D因此自2維移位暫存器54產生影像像素資料之4×4 2維區塊之四個經移位版本且將其饋送至ALU 60之第一輸入62A。第二2維IF 58F將4×4 2維樣板複製四次且將每一樣板值發送至ALU 60之第二輸入62B。64個ALU 60中之每一者然後對一不同影像像素及對應樣板值執行一逐元素算術操作(例如,乘法)。然後將64個所得值遞送至歸約單元48,其中該等值(舉例而言)藉由對每一4×4區塊之所得值求和而針對一16:1歸約與來自4×4區塊(該等值起源於其中)之其他所得值組合。歸約單元48之四個輸出然後經正規化且寫入至輸出暫存器50。
由於暫存器含有用於十六個過濾器位置之資料,因此繼續上文所闡述之相同操作,然而,第一2維IF 58D採用水平偏移來略過已經處理之位置且獲得新資料同時上文所闡述之操作之剩餘部分繼續執行。一旦已對十六個位置進行過濾,便使現有列向下移位且使影像像素資料之一新列自載入與儲存單元42進入2維移位暫存器54。資料處理然後在垂直方向上繼續。一旦已對所有列進行操作,便再次自第一影像列起始程序,從而處理下一垂直條帶且繼續執行直至已對整個輸入資料進行過濾為止。
對於對稱樣板,IF 58 在係數乘法之前組合對稱資料(此乃因樣板值係相同的)。因此,ALU 60可實施為加法器而非乘法器。由於加法器花費比乘法器少2×至3×之能量,因此可進一步降低CE或DV處理器之能量消耗。
表3.例示性迴旋引擎指令及功能
指令 | 功能 |
SET_CE_OPS | 設定用於MAP之算術函數及操作 |
REDUCE | 設定迴旋大小 |
SET_CE_OPSIZE | 將n個位元載入至2維係數暫存器之規定列 |
LD_COEFF_REG_n | 將n個位元載入至1維移位暫存器;選用左移位 |
LD_1D_REG_n | 將n個位元載入至2維移位暫存器之頂部列;向下選項移位列 |
LD_2D_REG_n | 將2D輸出暫存器之頂部列儲存至記憶體1維迴旋步驟-來自1維移位暫存器之輸入 |
STD_OUT_REG_n | 1維迴旋步驟-對2維移位暫存器之行存取 |
CONVOLVE_1D_HOR | 具有對2維移位暫存器之2維存取之2維迴旋步驟 |
CONVOLVE_1D_VER | 設定用於MAP之算術函數及操作 |
CONVOLVE_2D | 設定迴旋大小 |
在一項實施例中,一額外SIMD單元64可提供於CE或DV處理器40中以使得一演算法能夠對位於輸出暫存器50中之輸出資料執行向量操作。SIMD單元64可與輸出暫存器50介接以執行常規向量操作。SIMD單元64可係僅支援基本向量加法及減法類型操作且不支援較高成本操作(諸如存在於一典型SIMD引擎中之乘法)之一輕量單元。一應用程式可執行既不符合迴旋區塊亦不符合向量單元之運算,或可以其他方式受益於一固定功能實施方案。若設計者想要建構用於此運算之一經定製化單元,則迴旋影像處理器允許固定功能區塊對其輸出暫存器50進行存取。在一項例示性實施例中,在額外SIMD單元64中實施額外定製功能區塊,諸如用於運算IME、FME及FME中之哈達馬變換中之運動向量成本之彼等區塊。
在一項實施例中,CE或DV處理器40實施為一處理器擴展部,從而將一小迴旋引擎指令集添加至處理器指令集架構(ISA)。可視軟體中需要而透過編譯器內在發佈額外迴旋引擎指令。表3列出根據各種實施例之可與CE或DV處理器40一起使用之若干個例示性指令及其功能。
表4.在一個DV核心上運行之傳統CV演算法之功率(瓦特)及效能(毫秒)與Intel Iris 5100 GPU之比較。一DV核心可在功率之1/80下達成類似效能。
CE (1 個核心 ) | Intel Iris 5100 GPU | |||
效能 | 功率 | 效能 | 功率 (W) | |
坎尼邊緣偵測 (HD) | 0.73毫秒 | 0.133 W | 0.67毫秒 | 11.0 W |
高斯模糊, 7 × 7 (HD) | 2.71毫秒 | 0.137 W | 2.80毫秒 | 12.5 W |
拉普拉斯過濾器, 7 × 7 (HD) | 5.51毫秒 | 0.135 W | 5.51毫秒 | 11.6 W |
影像分類 (HD) | 0.89毫秒 | 134 mW | 0.79毫秒 | 12.0 W |
一DV處理器可實施一新指令集架構、暫存器檔案組織及資料路徑互連以使處理器更適合用於深度學習。在某些實施例中,一DV處理器可實施一CE之某些實施例之特徵。舉例而言,一DV處理器可執行傳統CV演算法。一DV處理器可具有對深度學習之額外支援,而且具有用於由深度學習達成之額外最佳化之一處理器微型架構。可進一步降低架構之面積及功率要求。一DV處理器之ISA可基於一新穎暫存器檔案組織以及一智慧互連結構,此允許該DV處理器高效地擷取資料重複使用型樣,消除資料傳送額外負擔,且達成每記憶體存取大數目個操作。在某些實施例中,一DV處理器針對大多數影像處理應用相比於資料並行單指令多資料引擎使能量及面積效率改良8X至15X,且與GPU相比較改良超過30X。顯著地,所得架構可在針對一單個內核經最佳化之定製加速器之能量及面積效率之2X至3X之一因數內,儘管提供一完全可程式化解決方案。表4展示一DV之實例性效能。
DV 之改良。
基於深度學習之網路支援除迴旋以外之重要操作,諸如集區化、經修整線性單元層(RELU)及矩陣向量乘法。可在分類器層中廣泛地使用此等操作。DV處理器架構之指令集係足夠多樣的以在資料路徑中高效地支援處置某些或所有深度學習構造。此支援使得DV處理器架構能夠支援編譯器最佳化,從而使得更容易寫入用於深度網路之程式碼。在某些實施例中,一DV處理器具有比一CE之某些較早實施例好之效能及高之效率。
暫存器檔案架構
。一迴旋引擎或一DV處理器之某些實施例採用一個二維移位暫存器檔案來促進基於樣板之資料流。暫存器檔案具有在水平以及垂直方向上獨立地移位從而允許CE或DV處理器以相等容易度在一維內核及二維內核兩者中利用資料重複使用之能力。雖然移位暫存器可良好地適用於執行各種大小之迴旋,但其不能授予對其個別項目(如一常規暫存器檔案)之訪問權可呈現關於支援其他深度學習層(諸如在一CE之某些較早實施例中之RELU、完全經連接層、1×1迴旋)之挑戰。一DV處理器之某些實施例解決此等挑戰。。一CE或一DV之某些實施例可藉由以下方式解決此挑戰:針對SIMD操作使用一單獨暫存器檔案,從而產生兩個單獨暫存器檔案之間的額外資料傳送。功率及效能可降低。在某些實施例中,一DV處理器採用可高效地支援迴旋以及RELU、完全經連接層及正規化層之一個暫存器檔案。
此外,一CE之某些實施例之移位暫存器可經設計以使整個暫存器檔案移位而不管所執行之移位之大小如何,此可使用暫存器檔案能量(例如,對於在深度學習網路中流行之小內核,諸如3×3內核)。在一DV處理器之某些實施例中,可不需要使整個暫存器檔案移位(例如,取決於所執行之移位之大小)。另外或另一選擇係,一DV處理器之某些實施例之移位暫存器檔案可儲存同時與多個深度學習通道對應之資料。此藉由多個深度內核改良輸入通道資料之重複使用,從而減少處理器與L1記憶體之間的流量及記憶體用電量。在某些實施例中,DV處理器可利用一暫存器檔案來對群組中之存取及移位暫存器檔案項目進行存取,其中每一群組之大小對應於內核大小。
一DV處理器之移位暫存器檔案架構可不需要在每次存取時使所有項目移位,從而允許使用傳統暫存器檔案編譯器在一ASIC上實施移位暫存器檔案,產生較小面積及能量用量。在某些實施例中,一DV處理器之移位暫存器檔案可具有一基於正反器之實施方案。
在某些實施方案中,為高效地支援深度學習,DV處理器實施允許在具有同時儲存多個群組之能力之情況下對暫存器檔案項目群組進行移位操作之一暫存器檔案。此將藉由在處理器內側之深度內核改良通道資料之重複使用,從而削減處理器與L1快取記憶體之間的記憶體流量。除移位操作之外,DV處理器亦可支援存取個別暫存器檔案項目以支援除迴旋之外之層(諸如RELU、完全連接層及正規化層)之其他方法。一DV處理器在使用一傳統暫存器檔案編譯器實施時可具有此等屬性,因此最小化面積及能量用量。
智慧互連
。在某些實施方案中,智慧互連係一CE及一DV處理器之一重要組件。智慧互連可直接影響CE或DV處理器之可程式性。由於互連支援多個內核大小,因此其含有多個大多工器及眾多導線。一DV處理器之某些實施例可解決由導線及多工器形成之擁塞,因此需要較少管線級來滿足定時約束。在較少多工器之情況下,面積可有利地更小。
在某些實施例中,DV處理器利用一受歡迎深度學習內核大小(例如,3×3內核大小)作為基本建構區塊以減少互連中之擁塞。藉由支援作為基本建構區塊之一個內核大小(或一或多個內核大小)且在基本建構區塊之頂部上建構較大內核大小,可使一DV處理器之互連之實施不那麼複雜。此將緩解對導線及多工器之壓力,但可為其他可程式性選項騰出空間。
SIMD
。一CE或一DV處理器之某些實施例支援SIMD操作,包含簡單加法及減法。在一CE或一DV處理器之某些實施例中,採用與移位暫存器檔案分開之一暫存器檔案,此乃因SIMD操作對個別暫存器檔案項目進行操作。
在某些實施例中,本文中所揭示之DV處理器擴展一CE之某些實施例之SIMD指令以熟練地支援深度學習構造。除諸如乘法、加法及減法之常規SIMD指令以外,DV處理器亦可針對矩陣-向量及矩陣-矩陣乘法明確地經最佳化以高效地支援1×1迴旋及完全經連接層。就此而言,DV處理器可利用用於支援樣板指令中之映射與歸約邏輯之組件且將該等組件最佳化以與SIMD操作一起使用以支援矩陣-向量及矩陣-矩陣操作。
關於傳統SIMD暫存器檔案之一個挑戰係暫存器檔案項目之寬度必須匹配SIMD寬度。一寬SIMD陣列將需要一寬暫存器檔案項目。由於微型架構限制,因此無法使暫存器檔案之大小為任意地大。而且,使大暫存器檔案項目保持完整對於除幾個操作以外之所有操作變得不可行。在某些實施方案中,DV處理器之SIMD寬度可係大的,但不增加暫存器檔案項目之寬度。就此而言,暫存器檔案群組可經組態使得多個暫存器檔案項目可結合在一起以用作整體。此亦將允許DV處理器在資料係小的時僅使用一個暫存器檔案項目且在資料係大的時共同使用暫存器檔案群組。
在某些實施例中,一DV處理器可實施本文中所闡述之架構修改以擴展一CE之某些實施例之範疇以高效地解決傳統電腦視覺以及深度學習兩者之效能及能量需要。深度視覺處理器架構之實例
在某些實施例中,一深度視覺(DV)處理器架構擴展指令集架構、暫存器檔案組織及資料路徑互連以使其更適合用於深度學習。圖5展示一DV核心之三個實例性運算流程。像素處理運算可經抽象化為三個運算流程中之一者: 一DV處理器中之一滑動窗、一矩陣-向量運算及一SIMD運算。該DV處理器架構可將對所有三個運算流程之高效支援組合在一單個核心中。參考以下各圖圖解說明使用一DV處理器架構進行之某些運算流程。
DV處理器可係可程式化的、可擴縮的或低功率的。DV處理器可具有以接近於一固定功能處理器之功率/成本達成之可程式化效能。DV處理器可用於整個範圍之視覺演算法,諸如深度學習/CNN、傳統電腦視覺(諸如光學流)、分割、特徵提取、向量-向量及矩陣向量操作、復發率及LSTM。DV處理器架構可係可擴縮的且可程式化的。舉例而言,可多次複製一個同質核心以縮放至高效能層級。作為另一實例,一DV運行時驅動程式可使軟體自動縮放以利用較大或較少數目個核心,從而自開發人員抽象出此等細節。自動化映射(例如,在軟體中)可支援寬廣範圍之CNN框架。一DV處理器可具有用於各種深度學習網路之一經最佳化微型架構。一DV處理器可使得運算上具挑戰性之任務由嵌入式裝置執行。一DV處理器可具有一較小總佔用面積及經改良效能功率包絡。
在某些實施方案中,DV處理器可係高效的。其可最小化甚至對L1記憶體之記憶體存取。舉例而言,資料可駐存於處理器核心內側之一小低能量緩衝器中(只要其可以)。一大平行度在一單個核心內可係可能的。舉例而言,可攤銷指令執行機器之成本。每核心數百個算術邏輯單元(ALU)操作可係可能的。
圖6係深度學習工作負荷中之效率機會之一實例性圖解說明。該圖展示(舉例而言)在一單個處理器核心內之三個重疊像素窗,其可形成資料重複使用之機會。圖7係一深度視覺(DV)處理器架構(其利用資料重複使用之機會)之一實例性圖解說明。可使所需要之所有像素之像素資料自L1記憶體到達一智慧暫存器。該架構可致使需要較少提取。在具有廣泛資料重複使用之情況下,透過一智慧互連,100個算術邏輯單元可具有較佳利用率。在某些實施例中,可需要較少核心。
DV處理器可包含一專屬暫存器檔案,及暫存器與ALU互連架構。該暫存器檔案可提供對在影像及媒體處理中涉及之各種存取型樣(諸如2D樣板、1D樣板、行存取、2D向量及傳統1D向量)的直接支援。該暫存器檔案可藉由將某些或大部分資料保持在一小資料儲存裝置中來消除對昂貴資料隨機排列的某些或所有需要,因此最小化去往更昂貴記憶體(例如,L1記憶體)的需要。該DV處理器可藉助一2讀取-1寫入暫存器檔案在一簡單單一發佈處理器核心中達成高量之平行度(256個16位元ALU操作)。
圖8展示一迴旋類神經網路(CNN)之實例性運算。一CNN可包含一迴旋層,後續接著一經修整線性單元(ReLU)層及一批次正規化層。在一項實施方案中,一DV處理器之一DV核心可藉由將來自多個運算操作(例如,用於迴旋之操作)之資料保持在暫存器檔案中來消除對記憶體之中間寫入。相比之下,具有一CNN加速器之一SIMD處理器可需要在每一迴旋之後高精度中間值至記憶體之一回寫。可不在DSP中使批次正規化加速度,然而藉由DV核心使批次正規化加速度。
可擴縮設計
。可藉由重複相同同質DV核心來達成可擴縮性。舉例而言,每一核心可能夠執行某些或所有視覺或深度學習工作負荷。深度學習演算法可係固有地大規模平行的。舉例而言,可在運行時容易地跨越任一數目個可用核心分佈CNN運算。多個深度學習應用可在每一核心上同時運行。舉例而言,可達成多個應用程式在任一同質核心子集上之運行時排程。圖9展示一DV處理器架構至諸多核心之一實例性縮放。該DV處理器可具有可自一個核心擴縮至諸多核心之類GPU運行時。DV處理器可使用直接記憶體存取(DMA)實施對記憶體階層之明確管理。表5至表6展示DV處理器架構效率度量。
表5.比較一GPU與一深度視覺處理器之DV處理器架構效率度量。
表6.比較一DSP / SIMD與一深度視覺處理器之DV處理器架構效率度量。
實例性深度視覺處理器實施方案
GPU | DV | |
每 ALU 之儲存 | 1KB | 18個位元組 |
歸約方案 | 高精度加法器 | 低成本歸約網路 |
5 插槽 VLIW DSP / SIMD | DV | |
暫存器檔案讀數 | 32個位元/ ALU | 12個位元/ ALU |
暫存器檔案複雜度 | 10個讀取埠,5個寫入埠 | 2個讀取埠,1個寫入埠 |
歸約方案 | 高精度加法器 | 低成本歸約網路 |
一DV處理器之某些實施例對一迴旋引擎進行改良。使用Cadence/Tensilica處理器產生器工具建構一DV處理器。該處理器產生器工具允許使用Tensilica之TIE語言規定一處理器之資料路徑分量及所要指令集。CE之某些實施例之指令集架構經修改且經增強以使用Tensilica指令擴展(TIE)使對應資料路徑分量相加。Cadence TIE編譯器使用此描述來針對所形成之處理器組態產生週期準確模擬模型、C編譯器及暫存器傳送語言(RTL)。由TIE編譯器產生之模擬模型用於針對在DV處理器上運行之演算法判定下文所展示之準確效能數。
對於準確能量及面積數,Cadence Genus及Innovus工具用於合成且放置且路由設計且映射至TSMC 28nm HPC標準單元程式庫。此映射給出設計之面積以及可達成時脈頻率。用TSMC功率模型模擬佈局後網路連線表以判定在用於真實工作負荷之設計中花費之功率。實例性暫存器檔案組織
1. 為避免使整個移位暫存器檔案移位,DV處理器架構可將暫存器檔案劃分成若干暫存器項目群組且增添對使此等群組移位以較佳地支援較小內核大小(諸如3×3)之硬體支援。
2. 在某些實施方案中,以上暫存器檔案可映射至標準暫存器檔案編譯器。可替代正反器而使用標準暫存器檔案組件。當替代標準暫存器檔案組件而使用正反器時,經分組移位暫存器檔案之功率及效能可比非基於群組之移位暫存器檔案高。
3. 為歸併在一CE之某些實施例中使用之移位暫存器檔案及單獨SIMD暫存器檔案,DV處理器架構可採用一標準向量/SIMD暫存器檔案。可增強暫存器檔案以除個別項目之外亦支援對暫存器項目群組之存取。可添加一單獨指令以使暫存器群組移位以模擬移位暫存器檔案行為。由於可在軟體中執行移位,因此可影響功率及效能。
4. 在具有對暫存器群組之支援之情況下可存在向量暫存器檔案之功率及效能折衷。在某一實施方案中,DV處理器可實施暫存器檔案之一或多個記憶體分庫(memory banking)策略,此乃因暫存器檔案群組所添加之複雜度可阻止編譯器推斷標準暫存器檔案組件。
5. DV處理器可在具有不同暫存器檔案組織之情況下就效能、功率以及可程式性容易度而言針對迴旋演算法經最佳化。實例性分庫式暫存器檔案架構
圖10A至圖10B展示一DV核心之樣板流之一暫存器檔案架構之一示意性圖解說明。一DV處理器之一暫存器單元可實施DV暫存器檔案架構。為了高效樣板運算,可需要對多個影像列之同時存取以及讀取水平、垂直及二維像素子區塊之能力。一DV處理器可包含用作高效樣板運算之一儲存區塊之一個二維暫存器(2D_Reg)。可將像素移位能力添加至2D_Reg以支援滑動窗流。然而,傳統ASIC暫存器檔案區塊不支援此等2D暫存器。
舉例而言,一DV處理器可使用一分庫式暫存器檔案架構或基於群組之移位暫存器架構(圖11)實施2D_Reg抽象化。舉例而言, 四個傳統向量暫存器庫可實施32個1列1D向量暫存器、16個2列2D向量暫存器(例如,兩個暫存器之16個群組)或8個4列2D向量暫存器(例如,四個暫存器之8個群組)。在某些實施方案中,庫數目可係2、3、4、5、6、7、8、9、10、20、30或更多。每庫之群組數目可係2、4、8、16、32、64、128、256或更多。圖12係展示一實例性智慧暫存器檔案架構之一示意性圖解說明。暫存器檔案在1個暫存器(VR)、2個暫存器(V2R)及4個暫存器(V4R)之群組中可係可存取的。舉例而言,V4R充當一「2D暫存器」以儲存支援2D樣板及1D垂直樣板操作之多個影像列。V4R可支援垂直列移位以促進滑動窗流。暫存器群組亦可促進多個SIMD寬度(64、128、256或更多個元素)。
圖13展示一傳統向量暫存器檔案與具有兩個或四個暫存器之群組之向量暫存器檔案的一實例性比較。為避免使整個移位暫存器檔案移位且用標準暫存器檔案組件替換正反器且使用一軟體編譯器執行基於暫存器檔案之最佳化,在某些實施方案中,DV處理器架構用一32項目傳統向量暫存器檔案替換移位暫存器檔案。由於傳統向量暫存器檔案通常允許一次僅存取一個暫存器檔案項目,因此其無法支援對於高效地執行樣板運算必要之向上/向下移位操作。已改變傳統向量暫存器檔案之語義以解決此挑戰。已添加對一個、兩個及四個暫存器之群組之存取,其中每一群組同時對在彼群組內之所有暫存器進行讀取/寫入。加上作為用於2D及1D垂直樣板操作之基本建構區塊之3×3 (2D)、4×4 (2D)、1×3 (1D垂直)及1×4 (1D垂直)之支援,在某些實施例中,向上/向下移位操作可僅限定於四個暫存器項目之群組。為促進同時存取多個暫存器檔案項目,可在四個暫存器項目之庫中實施暫存器檔案,其中每一庫之寬度係一個暫存器檔案項目之大小。可替代正反器而使用標準暫存器檔案組件來實施此等暫存器庫,從而導致較低暫存器檔案功率,在軟體中添加使暫存器群組移位之一單獨指令可模擬移位暫存器檔案行為同時最小化對功率及效能之影響。實例性智慧互連組織
1. DV處理器架構可藉由支援3×3內核(或更高階,諸如4×4)作為基本建構區塊而簡化互連以減少路由擁塞、功率及面積。在一項實施方案中,DV處理器架構可包含用於支援比3×3大之內核之累加器暫存器。累加器可不利地影響資料路徑之定時。
2. 就效能及功率而言,DV處理器可藉由本文中所揭示之不同智慧互連組織經最佳化以用於迴旋演算法。
藉由使用3×3 (2D)、4×4 (2D)、1×3 (1D垂直)、1×4 (1D垂直)、3×1 (1D水平)及4×1 (1D水平)作為基本建構區塊以用於所有樣板操作,DV處理器之互連樣板可係大小不可知的。亦可簡化互連設計。DV處理器之累加器暫存器可允許來自基本建構區塊之結果之累加以形成較大樣板大小。此等暫存器可放置在歸約級(或上文所闡述之映射-歸約抽象化)後面。此等簡化集合已不僅降低路由擁塞,而且改良了功率及暫存器檔案面積。實例性 SIMD
1. DV處理器架構可支援1×1迴旋、RELU及其他操作。DV處理器可包含用於乘法、算術移位、比較及經預測執行操作之諸多SIMD指令。
2. DV處理器架構可藉由(舉例而言)實施對SIMD中之歸約操作之支援而支援矩陣-向量及矩陣-矩陣操作。由於在將資料自一乘法操作傳送至一歸約指令時可發生精度損失,因此暫存器檔案可支援寫入大位元寬度資料操作。DV處理器架構可實施累加器以累加多個歸約操作之結果。
3. DV處理器架構可支援不同群組大小,該等不同群組大小提供複雜度與效率之間的一良好折衷。群組大小可透過標準暫存器檔案編譯器影響暫存器檔案之映射。
在某些實施方案中,DV處理器架構擴展一CE之某些較早實施例之SIMD支援以熟練地支援多樣深度學習及傳統電腦視覺構造。存取暫存器群組之能力允許DV處理器在不增加暫存器檔案存取寬度之情況下支援各種SIMD寬度。關於傳統SIMD暫存器檔案之挑戰一直係:暫存器檔案項目之寬度可需要匹配SIMD寬度。因此,一寬SIMD陣列將需要一寬暫存器檔案項目。然而,微型架構限制,無法使暫存器檔案之大小為任意地大。而且,使大暫存器檔案項目充分地經利用對於除幾個操作以外之所有操作變得不可行。因此,為在不增加暫存器檔案項目之寬度之情況下使SIMD寬度保持為大的,DV處理器可採用暫存器檔案群組,其中多個暫存器檔案項目結合在一起以用作整體。此允許DV處理器在資料係小的時僅使用一個暫存器檔案項目且在資料係大的時共同使用兩個或四個暫存器之群組。所有SIMD操作可具有1個暫存器、兩個暫存器之一群組(亦稱為一2暫存器群組)及四個暫存器之一群組(亦稱為一4暫存器群組)。
除常規SIMD指令(諸如乘法、算術操作、邏輯操作、歸約等)之外,DV處理器架構亦可針對矩陣-向量及矩陣-矩陣乘法明確地經最佳化以高效地支援1×1迴旋及完全經連接層。DV處理器架構利用用於支援樣板操作中之映射及歸約邏輯之組件且將該等組件最佳化以與SIMD操作一起使用。在某一實施例中,此可以一向量-向量矩陣指令之形式達成,該向量-向量矩陣指令使用逐元素乘法作為映射操作,後續接著基於進位選擇加法器之低成本、低能量歸約作為歸約步驟。結果係一經融合向量-向量乘法指令,其中一效能及能量效率比使用MAC (乘法及累加單元)來執行相同操作高得多。實例性指令 實例性 2D 樣板指令
圖14A至圖14F展示在影像資料儲存於一V4R暫存器群組(例如,四個暫存器之一群組)中之情況下使用一Stencil2D指令來產生多個3×3迴旋輸出之一示意性圖解說明。在所圖解說明實例中,V4R暫存器群組之每一列可包含64×8位元元素。可自包含V4R暫存器群組(例如,關於一讀取V4R操作)之一向量暫存器檔案檢索V4R中之影像資料,且一產生網路可產生自V4R暫存器群組讀取之資料以用於由ALU處理。一複製網路可複製自一係數暫存器檔案讀取或檢索之權數。一DV核心(例如,一DV核心之ALU)可使用288×8位元ALU使所產生之資料與對應經複製權數相乘。ALU之輸出元素可具有16位元精度。在具有一歸約樹之情況下,可對ALU之對應輸出元素求和以產生一通道(諸如通道0)之32×16位元元素。歸約樹之32×16位元輸出元素可往回儲存至向量暫存器檔案(例如,在向量暫存器檔案之一個列中)。在某些實施例中,16位元輸出元素可在往回儲存至向量暫存器檔案之前歸約為8位元元素(例如,向量暫存器檔案之一列之二分之一)。在某些實施例中,ALU之輸入元素及輸出元素可具有8位元精度。
除實施一3×3 Stencil2D指令之外,一DV處理器亦可實施Stencil2D之其他變體(例如,4×4 Stencil2D)。可藉由組合多個Stencil2D操作而運算較大樣板(諸如5×5、7×7及8×8)。在某些實施例中,可在不組合多個Stencil2D操作之情況下支援較大樣板。所支援樣板變體可包含2D樣板、1D水平樣板或1D垂直樣板。2D樣板包含可由一樣板產生網路直接支援之3×3及4×4樣板產生。可藉由累加來自多個較小樣板之結果而運算較大樣板大小(諸如5×5、7×7、8×8等)。可由一樣板產生網路直接支援1D水平樣板(諸如1×3及1×4樣板產生)。可藉由累加較小樣板而運算較大樣板(1×5、1×7、1×8等)。可由一樣板產生網路直接支援1D垂直樣板,諸如3×1及4×1樣板產生。可藉由累加較小樣板而運算較大樣板(5×1、7×1、8×1等)。具有一累加器暫存器檔案之實例性 2D 樣板指令
在某些實施例中,一DV核心可包含累加器暫存器之一或多個累加器暫存器檔案。一累加器暫存器檔案可用於儲存本發明之樣板指令(例如,2D Stencil、1D Stencil等)之部分結果。指令(諸如Stencil2D、Stencil 1DV或DotProduct)之結果可儲存於一累加器暫存器檔案而非向量暫存器檔案中。
圖15展示在輸出儲存於一累加器暫存器檔案中之情況下一Stencil2D指令之一實例性執行流程之一示意性圖解說明。替代將迴旋之部分結果保存於記憶體(例如,圖14F中所展示之一向量暫存器檔案)中,可將部分結果保持在累加器暫存器檔案之一或多個累加器暫存器中。可使用(舉例而言) 32×24位元加法器使額外新結果與已經儲存於累加器暫存器中之先前部分結果相加。有利地,部分結果不需要寫入至記憶體檔案或自記憶體檔案往回讀取,此節省電力及處理循環。使新結果與先前結果相加之明確向量ADD指令可係不必要的,此節省處理循環。此外,累加器暫存器可具有比一向量暫存器檔案高之精度。舉例而言,一累加器暫存器檔案可具有24位元精度,且向量暫存器檔案可具有8位元精度。實例性 1D 樣板指令
圖16係展示一實例性1×1迴旋運算圖表之一示意性圖解說明。可藉由以下方式運算CNN中之每一1×1迴旋層之輸出:使大小為「w」×「h」之輸入通道與一經預訓練純量權數相乘,且然後將經加權通道之輸出加總起來以產生大小為「w」×「h」之一輸出。舉例而言,可使大小為64×64之輸入通道與一經預訓練純量權數相乘,且可將經加權通道之輸出加總起來以產生大小為64×64之一輸出。一DV核心可支援Stencil1D指令(例如,Stencil1DV、Stencil2DH)。
圖17A至圖17F展示使用一Stencil1DV指令進行1×1迴旋之一實例性執行流程之一示意性圖解說明。可將四個輸入通道之列「x」(例如,列0)載入至一V4R暫存器中(圖17A至圖17B)。每一列可包含64個8位元元素。可將四個純量權數(其中每一權數與每一輸入通道及每一輸出對應)載入至一單個係數暫存器中(圖17A至圖17B)。產生區塊產生V4R暫存器之1×4個值之64個行同時將係數複製64次(圖17C)。圖17C展示將一V4R之行平放。256個8位元ALU之ALU陣列(舉例而言)執行使資料與係數相乘(圖17D),而歸約層執行4:1歸約(圖17E)。舉例而言,可對四個對應元素求和。因此,將256個輸出縮減至64。所產生之輸出數目可係64 (其中每一輸出為16位元寬)且寫入至一V2R暫存器(圖17F)。圖17F展示64個輸出具有16位元精度。實例性 DOTV2R 指令
圖18展示使用一實例性DOTV2R指令以使用儲存於一V2R暫存器群組中之資料產生兩個128元素向量之一向量-向量乘法之一示意性圖解說明。在圖18中所展示之一DOTV2R指令之實例性執行流程中,將歸約樹之64個16位元輸出轉換為8位元輸出。圖19A至圖19B展示在不具有16位元至8位元正規化之情況下一DOTV2R指令之實例性執行流程之示意性圖解說明。歸約樹之輸出在不同實施方案中可係不同的,諸如64×8位元輸出(圖18)、2×16位元輸出(圖19A)及4×16位元輸出(圖19B)。DV處理器可支援點積之其他變體,諸如DOTVR (1個暫存器之一群組)、DOTV4R (4個暫存器之一群組)。實例性演算法 實例性 CNN 圖表演算法
圖20A至圖20C展示將一典型CNN運算操作映射至一DV核心之一示意性圖解說明。舉例而言,一CNN運算操作可包含一CNN之一層之輸入之通道0之一3×3迴旋、輸入之通道1之一3×3迴旋,且使兩個3×3迴旋之輸出相加以產生一輸出。圖20A展示通道0輸入之迴旋,此包含使用Stencil2D指令運算1個輸出列。圖20B展示通道1輸入之迴旋,此包含使用Stencil2D指令運算1個輸出列。圖20A展示兩個迴旋之求和,此包含使用ADDV4R指令使四個輸出通道列相加。圖21展示用於將一CNN運算操作映射至一DV核心之虛擬程式碼。實例性光學流演算法
圖22展示使用一DV處理器進行之空間導數運算之一實例性運算圖表。表7展示空間導數運算至一DV核心之一實例性映射。圖23A至圖23B展示使用一DV處理器進行之一光學流運算之一示意性圖解說明。圖23A展示使用一Stencil1DH操作進行之導數X之一實例性運算。圖23B展示使用一Stencil2D操作得出之一實例性3×3窗化總和。為執行光學流之運動向量精細化,針對每一像素自經計算運動向量提取一5×5窗且使用ADDRVR來使多個像素之運動向量與影像基底位址相加且產生32個連續像素之5×5窗之位址。然後,DV處理器可將位址發送至分散/集中佇列,且自所有位址蒐集資料且精細化運動向量。
表7.空間導數運算至一DV核心之實例性映射。
實例性運動估計
運算步驟 | 所使用之指令 |
導數X | Stencil1DH – 1D水平樣板指令 |
導數Y | Stencil1DV – 1D垂直樣板指令 |
平方 | MULTV4R –對4個暫存器之一群組之SIMD指令 |
乘法 | MULTV4R –對4個暫存器之一群組之SIMD指令 |
經窗化總和 | Stencil2D – 2D樣板指令 |
圖24展示使用一DV處理器進行之運動估計之一示意性圖解說明。實例性深度視覺處理器效能判定
使用目前最佳技術運算上密集型深度學習網路對照GPU解決方案測定DV處理器之基準。為證實DV架構,對照Tegra X1比較新深度學習處理器之推斷功率及效能–當前可在視場上購得之大部分功率嵌入式GPU– 以用於以下CNN:
1. 四層CIFAR10 CNN (cs.toronto.edu/~kriz/cifar.html)。CIFAR-10分類係機器學習中之一常見基準問題。該問題係跨越10個類別(飛機、汽車、鳥、貓、鹿、狗、青蛙、馬、船及卡車)將32×32像素RGB影像分類。資料集提供用於訓練CNN模型之50,000個影像及用以證實分類準確度之10,000個測試影像。用於CIFAR-10之特定模型係在一GPU上之訓練時間之幾個小時內達成85%準確度之一個多層架構。CIFAR10具有大約1M個參數且需要大約40M個操作以運算對一單個影像之推斷。
2. GoogleNet。GoogleNet係用於分類及偵測之一22層深度迴旋類神經網路架構。GoogleNet設定用於2014年影像網大規模視覺辨識挑戰(ILSVRC 2014) (其係分佈在1,000個類別內之1,200萬個影像之一訓練集)中之分類及偵測之新的目前最佳技術。此網路引入允許作者使用比AlexNet少12x之參數之一新開端CNN架構,其係最受歡迎深度學習網路同時達成一顯著高準確度。GoogleNet使用7M個參數且需要大約3G個操作來運算對一單個影像之推斷。
3. FaceNet。Facenet係用於辨識人臉之最準確網路中之一者。由Google開發,其關於面部辨識資料集「人面資料庫」(其由來自網際網路之13,000個面部影像組成)聲明99.63%準確度。「使用一新穎線上三重訓練方法產生之經大致對準匹配/非匹配面部補片之三聯體」。FaceNet使用7M個參數且需要大約0.5G個操作來運算對一單個影像之推斷。
對照Tegra X1測定一DV核心上之此等各項之基準涉及以下步驟:
a.使用DV指令集架構實施軟體中之經最佳化CNN功能之程式庫。此程式庫將允許吾等藉由使用此等基本基元容易地實施DV核心上之任何深度學習網路。
b.使用GoogleNet、CIFar10及FaceNet之Caffe (caffe.berkeleyvision.org/,由Berkeley AI Research開發之一深度學習框架)實施方案作為一參考,實施此三個網路之Matlab版本,且形成適合用於嵌入式部署之一固定點版本。
c.在固定點Matlab實施方案作為一參考之情況下,使用經最佳化CNN程式庫作為基本建構區塊來在DV處理器上實施此等網路。
d.使用Cadence CAD工具來將處理器及其相關聯記憶體映射至TSMC 28nm HPC標準單元程式庫且形成用於準確功率及面積量測之一平面圖。
e.形成用於經映射處理器之功率及效能量測指令碼。
f.量測基準CNN之功率及效能且對照在一NVidia Jetson Tegra X1板中運行之GPU實施方案測定基準。實例性深度視覺處理器效能
表8至表10展示一DV處理器之實例性效能度量(28nm TSMC HPM,以800MHz運行)。Intel Iris 5100係一750GFlops Mobile GPU,因此其具有一Tegra X1 GPU之效能之大約0.75倍。圖25展示圖解說明一深度視覺處理器之所預計效能之實例性繪圖。在判定所預計效能中使用之代表性CNN模型包含用於物件分類(例如,GoogleNet、ResNet、Inception Net)、面部辨識(例如,FaceNet)及影像分割(例如,SegNet、FCN)之模型。
表8.一DV處理器之實例性GoogleNet效能
表9.一DV處理器之實例性SegNet效能
表10.傳統電腦視覺技術之實例性DV效能。
實例性深度視覺 CNN 映射工具工作流程
GoogleNet 效能 | 功率 | |
DeepVision DV1 10 | 128個推斷/秒 | 1.07W |
Nvidia Tegra X1 | 33個推斷/秒 | 11W |
Movidius Myriad 2 | 15個推斷/秒 | 1.2W |
SegNet 效能 (256x256) | 功率 | |
DeepVision DV100 | 9個圖框/秒 | 1.1W |
Nvidia Tegra X1 | 大約3個圖框/秒 | 10W至20W |
DV | Intel Iris 5100GPU | |||
執行時間 | 功率 | 執行時間 | 功率 | |
坎尼邊緣偵測(HD) | 0.09ms | 1.06W | 0.67ms | 11W |
高斯模糊,7×7 (HD) | 0.34ms | 1.1W | 2.8ms | 12.5W |
拉普拉斯金字塔,7×7 (HD) | 0.69ms | 1.08W | 5.5ms | 11.6W |
基於Hu-Moment之影像分類(HD) | 0.11ms | 1.07W | 0.8ms | 12W |
圖26展示一實例性深度視覺CNN映射工具工作流程。對一DV處理器進行補足之深度學習最佳化軟體可使得複合CNN及其他演算法高效地映射至嵌入式處理器以達成最佳效能。其可減少層且修剪CNN以達成嵌入式平臺中之最佳功率及效能。軟體可包含最適合用於嵌入式處理器之較輕、較薄CNN之一程式庫。實例性深度視覺處理器
圖27展示一實例性DV處理器晶片。該DV處理器晶片可包含8個核心@ 800 MHz (例如,使用28nm TSMC製造)、1 MB L2記憶體、64 KB L1資料記憶體、16 KB L1指令記憶體及PCI Express Gen2×4。該晶片可在具有1W電力消耗之情況下具有4 TOPS效能。該處理器可具有20 mm2
之一晶粒面積,其封裝在15×15mm2
FBGA中。該DV處理器晶片可支援8位元、16位元、32位元整數操作。該DV處理器晶片可透過其DDR控制器利用DDR3或LPDDR3記憶體。
圖28展示一實例性DV處理器架構。舉例而言,針對每一像素自所計算運動向量提取一5×5窗,使用ADDRVR來使多個像素之運動向量與影像基底位址相加且產生32個連續像素之5×5窗之位址。隨後,將位址發送至分散/集中佇列且自所有位址蒐集資料且精細化運動向量。圖29展示另一實例性DV處理器架構。在類神經網路中,兩個類型之層多層感知器(完全經連接層)、RNN/LSTM通常需要具有可運行高達數百兆位元組之大小之大數目個參數。此等參數一般用於關於傳入資料執行矩陣-矩陣乘法以產生特定數目個輸出。由於此等參數之大小可係大的,因此減小此等參數之大小可係有利的。實質上修剪參數而不影響類神經網路之準確度可係可能的。然而,修剪參數形成稀疏性且密集矩陣-矩陣乘法改變為稀疏矩陣-矩陣乘法。在某些實施方案中,為促進稀疏向量乘法,DV處理器架構在L1記憶體系統處包含分散-集中支援。
可使用在L1記憶體之每一庫前面之佇列實施分散-集中功能性。此等佇列含有由參數之基底位址加上稀疏參數之索引構成之輸入資料之位址。自與稀疏參數對應之佇列提取之輸入資料在傳遞至處理器之前經累加至一向量暫存器中。在處理器內側,使此輸入資料與參數資料相乘以執行一密集向量-向量乘法。
圖30係表示一DV處理器晶片之一方塊圖。該處理器可包含像素運算區塊及位元運算區塊。像素運算區塊之非限制性實例包含樣板產生網路(例如,自V4R或VR產生3×3、4×4、3×1、4×1、1×3、1×4重疊樣板)、SIMD路由網路(例如,以傳統SIMD方式或對多個向量列操作之經增強「2D SIMD」路由資料)、係數暫存器(例如,儲存非樣板資料,諸如過濾器權數、運動估計參考巨集區塊等)、係數複製網路(例如,形成係數之多個複本以並行地進行多個樣板操作)、ALU (例如,支援乘法、加法及其他算術操作之多精度8位元/16位元/32位元ALU)及多層級歸約網路(例如,支援多個層級之基於求和之歸約(4:1、16:1、… 128:1、9:1、3:1))。位元運算區塊之非限制性實例包含位元向量暫存器(例如,每一向量暫存器含有48×2位元元素)、位元樣板產生網路(例如,自位元向量暫存器產生重疊樣板)、位元SIMD路由(例如,以傳統SIMD方式路由位元向量資料)、邏輯單元(例如,支援邏輯操作,諸如比較、大於等)及多層級邏輯歸約網路(例如,基於「及」/「或」操作之邏輯歸約)。在某些實施例中,DV處理器晶片可係透過一匯流排基礎結構(例如,ARM AXI匯流排基礎結構)與(舉例而言)一DDR控制器及一高速PCI控制器通信之一8核心電腦視覺處理器晶片。在某些實施方案中,一DV處理器可具有用以降低對大CNN模型之記憶體大小及頻寬要求之硬體壓縮支援。實例性工作原型。
在某些實施例中,DV處理器之一工作原型可經實施以驗證一即時嵌入式系統中之一即時應用程式之效能。可在TSMC 28nm HPC程序(其併入有具有800 MHz之一目標頻率之8個DV核心)中製作一ASIC晶片。另一選擇係或另外,可使用DV處理器架構之一基於FPGA之處理器原型以證實效能度量。
一Xilinx ZC706 FPGA原型板可用於實施一即時嵌入式系統且用即時視訊資料測試處理器。此系統(圖31)可用於自一視訊攝影機即時擷取視訊,使用在DV核心上運行之一CNN來處理該視訊以偵測串流中之物件,且然後使用在主機ARM處理器上運行之一嵌入式Linux應用程式來在一所附接顯示器上顯示結果。
此原型可併入有一單個DV核心且在一FPGA中達成之預期頻率在25 MHz至50 MHz之範圍內。因此,此原型之預期效能可比ASIC產品低150至300倍。不太複雜CIFAR10 CNN可用於實施一即時應用情景:
直播視訊串流中之物件之即時分類可表示在安全攝影機以及自導航汽車、無人機及機器人中頻繁地使用之物件分類任務。可達成以85%或更高之一準確度在來自10個不同類別之物件之間以24個圖框/秒即時進行物件分類。舉例而言,可達成關於每圖框偵測之多個物件在數百個類別之間進行分類之95%準確度。使用FaceNet進行之即時面部辨識表示安全及家用攝影機之使用情形,此允許將已知人員或家庭成員與陌生人或罪犯區分開。
一深度視覺處理器可映射至FPGA且實施L1 / L2 SRAM。該深度視覺處理器可與ARM主機之XIlinx硬體IP、DDR控制器及HDMI輸入/HDMI輸出與測試整合在一起。DMA可經組態以用於使視訊資料在HDMI輸入/HDMI輸出與DDR之間而且在ARM與DV共處理器之間移動。嵌入式PetaLinux基礎結構可連同用於HDMI IP及視訊DMA之驅動程式一起部署在ARM上。API及程式庫可用於ARM主機處理器與DV處理器核心之間的通信。系統可與一圖形linux應用程式一起使用,該圖形linux應用程式自攝影機擷取視訊圖框、將每一圖框傳遞至DV處理器以使用cifar10 CNN執行物件偵測且在附接至板之圖形顯示器上顯示結果。額外態樣
在一第一態樣中,揭示一種處理器。該處理器包括: 一載入與儲存單元,其經組態以載入且儲存影像像素資料及樣板資料;一暫存器單元,其實施一分庫式暫存器檔案,經組態以: 自該載入與儲存單元載入且儲存該影像像素資料之一子集;且同時提供對儲存於該分庫式暫存器檔案之一暫存器檔案項目中之影像像素值之存取,其中該影像像素資料之該子集包括儲存於該暫存器檔案項目中之該等影像像素值;一互連單元,其與該暫存器單元及複數個算術邏輯單元通信,該互連單元經組態以: 提供儲存於該暫存器檔案項目中之該等影像像素值;且提供與儲存於該暫存器檔案項目中之該等影像像素值對應之樣板資料;及該複數個算術邏輯單元(ALU),其經組態以同時對來自該互連單元之儲存於該暫存器檔案項目中之該等影像像素值及與儲存於該暫存器檔案項目中之該影像像素值對應之該樣板資料執行一或多個操作。
在一第二態樣中,如態樣1之處理器,其中該分庫式暫存器檔案包括複數個向量暫存器庫。
在一第三態樣中,如態樣2之處理器,其中該複數個向量暫存器庫之一庫之一寬度與該分庫式暫存器檔案之一個暫存器檔案項目之一大小完全相同。
在一第四態樣中,如態樣2至3中任一項之處理器,其中該複數個向量暫存器庫包括四個向量暫存器庫。
在一第五態樣中,如態樣4之處理器,其中該四個暫存器庫經組態以實施32個1列1D向量暫存器、16個2列2D向量暫存器、8個4列2D向量暫存器或其一組合。
在一第六態樣中,如態樣1至5中任一項之處理器,其中該處理器經組態以使用該分庫式暫存器檔案實施複數個較小樣板指令。
在一第七態樣中,如態樣6之處理器,其中該複數個較小樣板指令包括一3×3 Stencil2D指令、一4×4 Stencil2D指令、一1×3 Stencil1D指令、一1×4 Stencil1D指令、一3×1 Stencil1D指令、一4×1 Stencil1D指令或其一組合。
在一第八態樣中,如態樣7之處理器,其中該複數個較小樣板指令包括使用該1×3 Stencil1D指令、該1×4 Stencil1D指令、該3×1 Stencil1D指令、該4×1 Stencil1D指令或其一組合實施之1×1樣板指令。
在一第九態樣中,如態樣6至7中任一項之處理器,其中該處理器經組態以使用該複數個較小樣板指令實施複數個較大樣板指令。
在一第十態樣中,如態樣9之處理器,其中該複數個較大樣板指令包括一5×5 Stencil2D指令、一7×7 Stencil2D指令、一8×8 Stencil2D指令、一1×5 Stencil1D指令、一1×7 Stencil1D指令、一1×8 Stencil1D指令、一5×1 Stencil1D指令、一7×1 Stencil1D指令、一8×1 Stencil1D指令或其一組合。
在一第十一態樣中,如態樣9至10中任一項之處理器,其中該複數個較大樣板指令包括一n
×1 Stencil1D指令或一1×n
Stencil1D指令,其中n
係一正整數。
在一第十二態樣中,如態樣9至11中任一項之處理器,其中該複數個較大樣板指令包括一n
×m
Stencil2D指令,其中n
及m
係正整數。
在一第十三態樣中,如態樣1至12中任一項之處理器,其中該互連單元經組態以提供儲存於該暫存器檔案項目中之該等影像像素值中之3×3個影像像素值。
在一第十四態樣中,如態樣13之處理器,其中該互連單元包括經組態以提供自該3×3個影像像素值累加之x
×y
個影像像素值之一累加器單元,其中x
及y
係正整數。
在一第十五態樣中,如態樣1至14中任一項之處理器,其中該處理器經組態以使用該分庫式暫存器檔案實施一或多個DOTV2R指令。
在一第十六態樣中,如態樣1至15中任一項之處理器,其中該暫存器單元經組態以: 載入且儲存該等ALU之結果。
在一第十七態樣中,如態樣1至15中任一項之處理器,其進一步包括一累加器暫存器檔案之複數個累加器暫存器,該複數個累加器暫存器經組態以: 載入且儲存該等ALU之結果。
在一第十八態樣中,揭示一種實施一分庫式暫存器檔案之一處理器核心之暫存器單元。該暫存器單元經組態以: 載入且儲存影像像素資料之一子集;且同時提供對儲存於該分庫式暫存器檔案之一暫存器檔案項目中之影像像素值之存取,其中該影像像素資料之該子集包括儲存於該暫存器檔案項目中之該等影像像素值。
在一第十九態樣中,如態樣18之暫存器單元,其中該分庫式暫存器檔案包括複數個向量暫存器庫。
在一第二十態樣中,如態樣19之暫存器單元,其中該複數個向量暫存器庫之一庫之一寬度與該分庫式暫存器檔案之一個暫存器檔案項目之一大小完全相同。
在一第二十一態樣中,如態樣19至20中任一項之暫存器單元,其中該複數個向量暫存器庫包括四個向量暫存器庫。
在一第二十二態樣中,如態樣21之暫存器單元,其中該四個暫存器庫經組態以實施32個1列1D向量暫存器、16個2列2D向量暫存器、8個4列2D向量暫存器或其一組合。
在一第二十三態樣中,揭示一種處理器核心。該處理器核心包括如態樣18至22中任一項之暫存器單元,且其中該處理器核心經組態以使用該分庫式暫存器檔案實施複數個較小樣板指令。
在一第二十四態樣中,如態樣23之處理器核心,其中該複數個較小樣板指令包括一3×3 Stencil2D指令、一4×4 Stencil2D指令、一1×3 Stencil1D指令、一1×4 Stencil1D指令、一3×1 Stencil1D指令、一4×1 Stencil1D指令或其一組合。
在一第二十五態樣中,如態樣24之處理器核心,其中該複數個較小樣板指令包括使用該1×3 Stencil1D指令、該1×4 Stencil1D指令、該3×1 Stencil1D指令、該4×1 Stencil1D指令或其一組合實施之1×1樣板指令。
在一第二十六態樣中,如態樣23至25中任一項之處理器核心,其中該處理器核心經組態以使用該複數個較小樣板指令實施複數個較大樣板指令。
在一第二十七態樣中,如態樣26之處理器核心,其中該複數個較大樣板指令包括一5×5 Stencil2D指令、一7×7 Stencil2D指令、一8×8 Stencil2D指令、一1×5 Stencil1D指令、一1×7 Stencil1D指令、一1×8 Stencil1D指令、一5×1 Stencil1D指令、一7×1 Stencil1D指令、一8×1 Stencil1D指令或其一組合。
在一第二十八態樣中,如態樣26至27中任一項之處理器核心,其中該複數個較大樣板指令包括一n
×1 Stencil1D指令或一1×n
Stencil1D指令,其中n
係一正整數。
在一第二十九態樣中,如態樣26至28中任一項之處理器核心,其中該複數個較大樣板指令包括一n
×m
Stencil2D指令,其中n
及m
係正整數。
在一第三十態樣中,如態樣23至29中任一項之處理器核心,其中該處理器核心經組態以使用該分庫式暫存器檔案實施DOTV2R指令。
在一第三十一態樣中,如態樣23至30中任一項之處理器核心,其進一步包括ALU,其中該暫存器單元經組態以: 載入且儲存該等ALU之結果。
在一第三十二態樣中,如態樣23至30中任一項之處理器核心,其進一步包括一累加器暫存器檔案之複數個累加器暫存器,該複數個累加器暫存器經組態以: 載入且儲存該等ALU之結果。
在一第三十三態樣中,揭示一種操作一深度視覺處理器(或一深度視覺處理器核心)之方法。該方法包括: 載入且儲存影像像素資料及樣板資料;將該影像像素資料之一子集載入且儲存於一分庫式暫存器檔案中,且同時提供對經儲存於該分庫式暫存器檔案之一暫存器檔案項目中之影像像素值的存取,其中該影像像素資料之該子集包括經儲存於該暫存器檔案項目中之該等影像像素值;及對經儲存於該暫存器檔案項目中之該等影像像素值及該樣板資料之對應樣板資料執行一或多個操作。
在一第三十四態樣中,如態樣33之方法,其中該分庫式暫存器檔案包括複數個向量暫存器庫。
在一第三十五態樣中,如態樣34之方法,其中該複數個向量暫存器庫之一庫之一寬度與該分庫式暫存器檔案之一個暫存器檔案項目之一大小係完全相同。
在一第三十六態樣中,如態樣34至35中任一項之方法,其中該複數個向量暫存器庫包括四個向量暫存器庫。
在一第三十七態樣中,如態樣36之方法,其中該四個暫存器庫經組態以實施32個1列1D向量暫存器、16個2列2D向量暫存器、8個4列2D向量暫存器或其一組合。
在一第三十八態樣中,如態樣33至37中任一項之方法,其中執行該一或多個操作包括使用該分庫式暫存器檔案對該等影像像素值執行較小樣板指令。
在一第三十九態樣中,如態樣38之方法,其中該複數個較小樣板指令包括一3×3 Stencil2D樣板指令、一4×4 Stencil2D指令、一1×3 Stencil1D指令、一1×4 Stencil1D指令、一3×1 Stencil1D指令、一4×1 Stencil1D指令、1×1樣板指令或其一組合。
在一第四十態樣中,如態樣38至39中任一項之方法,其中執行該一或多個操作包括使用該等較小樣板操作對該等影像像素值執行較大樣板指令。
在一第四十一態樣中,如態樣40之方法,其中該複數個較大樣板指令包括一5×5 Stencil2D指令、一7×7 Stencil2D指令、一8×8 Stencil2D指令、一1×5 Stencil1D指令、一1×7 Stencil1D指令、一1×8 Stencil1D指令、一5×1 Stencil1D指令、一7×1 Stencil1D指令、一8×1 Stencil1D指令或其一組合。
在一第四十二態樣中,如態樣33至41中任一項之方法,其進一步包括將該一或多個操作之一或多個結果儲存於該分庫式暫存器檔案或一累加器暫存器檔案中。
在一第四十三態樣中,揭示一種用於運算兩個迴旋之一總和之方法。該方法包括: 載入通道0之m
個n
位元元素之一個列;執行軟體移位以將通道0之一個列載入至通道0之V4R中;載入通道1之m個n位元元素之一個列;執行軟體移位以將通道1之一個列載入至通道1之V4R中;在通道0之V4R中運算資料之一第0個迴旋以產生通道0之一輸出;在通道1之V4R中運算資料之一第1個迴旋以產生通道1之一輸出;且對通道0及通道1之該等輸出求和。
在一第四十四態樣中,如態樣43之方法,其中m
係8、32、64、128、256、512或1024。
在一第四十五態樣中,如態樣43之方法,其中m
係64。
在一四十六態樣中,如態樣43至45中任一項之方法,其中n
係8、32、64、128、256、512或1024。
在一第四十七態樣中,如態樣43至45中任一項之方法,其中n
係8。
在一四十八態樣中,如態樣43至47中任一項之方法,其中在通道0之V4R中運算資料之一第0個迴旋以產生通道0之一輸出包括: 對通道0之該一個列執行第1個Stencil2D以產生第1個32×16位元輸出;對通道0之該一個列執行第2個Stencil2D以產生第2個32×16位元輸出;載入通道0之64個8位元元素之一個列;且執行軟體移位以將通道0之一個列載入至通道0之v4R中。
在一四十九態樣中,如態樣43至48中任一項之方法,其中在通道1之V4R中運算資料之一第1個迴旋以產生通道1之一輸出包括: 對通道1之該一個列執行第1個Stencil2D以產生第1個32×16位元輸出;對通道1之該一個列執行第2個Stencil2D以產生第2個32×16位元輸出;載入通道1之64個8位元元素之一個列;及執行軟體移位以將通道1之一個列載入至通道1之v4R中。
在一第五十態樣中,揭示一種映射一迴旋類神經網路之方法。該方法包括: 接收表示一迴旋類神經網路(CNN)之資料;執行該CNN之一類神經網路格式轉換;執行該CNN之一固定點轉換及一精度分析;及基於系統資訊而執行該CNN之圖表分析及記憶體映射。
在一第五十一態樣中,如態樣50之方法,其中執行該CNN之該類神經網路格式轉換包括執行該CNN之該類神經網路格式轉換以產生一中間格式以使處理管線工具不可知。
在一第五十二態樣中,如態樣50至51中任一項之方法,其中執行該CNN之該固定點轉換及該精度分析包括執行一8、16、32、64或128位元精度分析以確保來自該固定點轉換之非常小準確度損失。
在一第五十三態樣中,如態樣50至52中任一項之方法,其中基於該系統資訊而執行該CNN之該圖表分析及該記憶體映射包括: 以模組層級執行自動記憶體區塊化以在每一階層層級處最大化記憶體重複使用;且執行任務圖表融合以最大化效能且避免不必要記憶體傳送。
在一第五十四態樣中,揭示一種處理器。該處理器經組態以實施如態樣33至53中任一項之方法。
在一第五十五態樣中,如態樣54之處理器。該處理器包括: 一載入與儲存單元;一暫存器單元,其實施一分庫式暫存器檔案;一互連單元,其與該暫存器單元通信;及複數個算術邏輯單元(ALU),其與該互連單元通信。總結
本文中所闡述及/或附圖中所繪示之程序、方法及演算法中之每一者可體現於程式碼模組中,且完全地或部分地由程式碼模組自動化,該等程式碼模組由經組態以執行具體且特定電腦指令之一或多個實體運算系統、硬體電腦處理器、特殊應用電路及/或電子硬體執行。舉例而言,運算系統可包含編碼有具體電腦指令之一般用途電腦(例如,伺服器)或特殊用途電腦、特殊用途電路等等。一程式碼模組可經編譯且連結至一可執行程式中、安裝於一動態連結程式庫中或可以一經解譯程式化語言來撰寫。在某些實施方案中,可藉由一給定功能特有之電路來執行特定操作及方法。
此外,本發明之功能性之特定實施方案在數學上、在運算上或在技術上係充分複雜的,使得特殊應用硬體或者一或多個實體運算裝置(利用適當專門可執行指令)可由於所涉及之計算量及複雜性而有必要(舉例而言)執行功能性或實質上即時提供結果。舉例而言,一視訊可包含諸多圖框,其中每一圖框具有數百萬個像素,且具體而言經程式化電腦硬體有必要處理視訊資料以在一商業上合理時間量內提供一所要影像處理任務或應用程式。
程式碼模組或任何類型之資料可儲存於任何類型之非暫時性電腦可讀媒體(諸如包含硬碟機之實體電腦儲存器、固態記憶體、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、光碟、揮發性或非揮發性儲存器、各項之組合及/或類似者)上。方法及模組(或資料)亦可作為所產生資料信號(例如,作為一載波或其他類比或數位所傳播信號之一部分)在各種電腦可讀傳輸媒體(包含基於無線之媒體及基於有線/電纜之媒體)上經傳輸,且可採取各種形式(例如,作為一單個或經多工類比信號之一部分,或作為多個離散數位封包或圖框)。所揭示程序或程序步驟之結果可永久地或以其他方式儲存於任何類型之非暫時性有形電腦儲存器中或可經由一電腦可讀傳輸媒體來傳遞。
本文中所闡述及/或附圖中所繪示之流程圖中之任何程序、方塊、狀態、步驟或功能性應理解為可能表示程式碼模組、片段或包含用於在程序中實施特定功能(例如,邏輯或算術)或步驟之一或多個可執行指令之程式碼之部分。各種程序、方塊、狀態、步驟或功能性可經組合、重新配置、添加至本文中所提供之說明性實例、自本文中所提供之說明性實例刪除、經修改或以其他方式自本文中所提供之說明性實例改變。在某些實施例中,額外或不同運算系統或程式碼模組可執行本文中所闡述之功能性中之某些或所有功能性。本文中所闡述之方法及程序亦不限於任何特定序列,且與其有關之方塊、步驟或狀態可以適當之其他序列(舉例而言,以串行方式、以並行方式或以某一其他方式)來執行。任務或事件可添加至所揭示實例性實施例或自所揭示實例性實施例移除。此外,在本文中所闡述之實施方案中各種系統組件之分離係出於說明性目的且不應理解為在所有實施方案中需要此分離。應理解,所闡述程式組件、方法及系統一般可一起整合於一單個電腦產品中或封裝至多個電腦產品中。諸多實施方案變化係可能的。
可在一網路(或分佈式)運算系統中實施該等程序、方法及系統。網路環境包含企業整體電腦網路、企業內部網路、區域網路(LAN)、廣域網路(WAN)、個人區域網路(PAN)、雲運算網路、眾包運算網路、網際網路及全球資訊網。該網路可係一有線或一無線網路或任何其他類型之通信網路。
本發明之系統及方法各自具有數個新穎態樣,該等新穎態樣中之任何單個態樣皆不單獨地負責或需要用於本文中所揭示之合意屬性。上文所闡述之各種特徵及程序可彼此獨立地使用或可以各種方式組合。所有可能組合及子組合意欲歸屬於本發明之範疇內。熟習此項技術者可易於明瞭對本發明中所闡述之實施方案之各種修改,且可將本文中所界定之一般原理應用於其他實施方案而不背離本發明之精神或範疇。因此,申請專利範圍並不意欲限於本文中所展示之實施方案,而被授予與本發明、本文中所揭示之原理及新穎特徵相一致之最寬廣範疇。
亦可將在本說明書中在單獨實施方案之內容脈絡下闡述之某些特徵以組合形式實施於一單項實施方案中。相反,亦可將在一單個實施方案之內容脈絡下闡述之各種特徵單獨地或以任一適合子組合之形式實施於多項實施方案中。此外,儘管上文可將特徵闡述為以某些組合形式起作用且甚至最初係如此主張的,但在某些情形中,可自一所主張組合去除來自該組合之一或多個特徵,且所主張組合可針對於一子組合或一子組合之變化形式。任何單個特徵或特徵群組對於每一及每個實施例並非必要的或不可缺少的。
除非另外具體陳述或另外在內容脈絡內如所使用而理解,本文中所使用之條件語言(諸如,尤其 「可(can)」、「可(could)」、「可(might)」、「可(may)」、「例如(e.g)」及類似者)一般意欲傳達某些實施例包含而其他實施例不包含某些特徵、元件及/或步驟。因此,此條件語言一般不意欲暗示一或多個實施例以任一方式需要特徵、元件及/或步驟或一或多個實施例必然包含在有或沒有作者輸入或提示之情形下決定在任一特定實施例中是否包含或將執行此等特徵、元件及/或步驟之邏輯。術語「包括(comprising)」、「包含(including)」、「具有(having)」及類似者係同義的且以一開放方式包含性地經使用,且不排除額外元件、特徵、動作、操作等等。而且,術語「或(or)」以其包含性意義(而非以其排他性意義)來使用,使得當用於(舉例而言)連接一元件清單時,術語「或(or)」意味列表中之元件中之一者、某些或全部。另外,除非另有規定,否則如在本說明書及隨附申請專利範圍中所使用之冠詞「一(a)」、「一(an)」及「該(the)」將解釋為意味「一或多者」或「至少一者」。
如本文中所使用,提及一物項清單中之「至少一者」之一片語係指彼等物項之任何組合,包含單個部件。作為一實例,「A、B或C中之至少一者」意欲涵蓋: A、B、C、A及B、A及C、B及C以及A、B及C。除非另有具體陳述,否則諸如片語「X、Y及Z中之至少一者」之連接語言與如一般所使用之內容脈絡一起以其他方式來理解以傳達一物項、術語等可係X、Y或Z中之至少一者。因此,此連接語言一般不意欲暗示特定實施例需要X之至少一者、Y之至少一者及Z之至少一者各自存在。
類似地,雖然可在該等圖式中以一特定次序繪示操作,但應認識到,不需要以所展示之特定次序或以順序次序執行此等操作或執行所有所圖解說明之操作以達成合意結果。此外,該等圖式可以一流程圖之形式示意性地繪示一或多個實例性程序。然而,未繪示之其他操作可併入於示意性地經圖解說明之實例性方法及程序中。舉例而言,可在所圖解說明操作中之任一者之前、之後、與其同時或在其之間執行一或多個額外操作。另外,可在其他實施方案中重新配置或記錄該等操作。在某些情形下,多任務及並行處理可係有利的。此外,上文所闡述之實施方案中之各種系統組件之分離不應被理解為在所有實施方案中需要此分離,且應理解,所闡述之程式組件及系統一般可一起整合於一單個軟體產品中或封裝至多個軟體產品中。另外,其他實施方案亦在以下申請專利範圍之範疇內。在某些情形中,申請專利範圍中所陳述之動作可以一不同次序執行且仍達成合意結果。
40:迴旋引擎或深度視覺處理器/迴旋影像處理器
42:載入與儲存單元
44:移位暫存器單元
46:映射單元
48:歸約單元
50:輸出暫存器
52:第一1維移位暫存器/1維移位暫存器
54:2維移位暫存器
56:2維樣板暫存器
58A:介面單元/資料隨機排列介面
58B:介面單元/水平介面
58C:介面單元/行介面
58D:介面單元/第一2維介面
58E:介面單元/1維介面
58F:介面單元/第二2維介面
60:算術邏輯單元
62A:第一輸入
62B:第二輸入
64:單指令多資料單元
在所有圖式中,可重複使用元件符號來指示參考元件之間的對應性。提供該等圖式以圖解說明本文中所闡述之實例性實施例且不意欲限制本發明之範疇。
圖1係比較深度視覺(DV)處理器、具有固定功能迴旋類神經網路(CNN)之數位信號處理器(DSP)及圖形處理單元(GPU)之效能之一實例性繪圖。
圖2係展示一單維數位信號處理器如何在單維及二維(2D)像素資料上操作之一實例性示意性圖解說明。
圖3展示具有與靜態隨機存取記憶體(SRAM)通信之一數位信號處理器/單指令多資料(SIMD)核心及一迴旋類神經網路加速器之一實例性處理器架構。
圖4展示一迴旋引擎(CE)或DV處理器之某些實施例之一實例性架構。
圖5展示一DV核心之三個實例性運算流程。
圖6係深度學習工作負荷中之效率機會之一實例性圖解說明。
圖7係利用資料重複使用機會之一深度視覺(DV)處理器架構之一實例性圖解說明。
圖8展示用於一迴旋類神經網路之實例性運算。
圖9展示一DV處理器架構至諸多核心之一實例性縮放。
圖10A至圖10B展示一DV核心之樣板流之一暫存器檔案架構之一示意性圖解說明。
圖11係使用一分庫式暫存器檔案架構實施之2D暫存器(2D_Reg)抽象化之一示意性圖解說明。
圖12係展示一實例性智慧暫存器檔案架構之一示意性圖解說明。
圖13展示一傳統向量暫存器檔案與具有兩個或四個暫存器之群組之向量暫存器檔案的一實例性比較。
圖14A至圖14F展示在影像資料儲存於一V4R暫存器群組中之情況下使用一實例性Stencil2D指令來產生多個3×3迴旋輸出之一示意性圖解說明。
圖15展示在輸出儲存於一累加器暫存器檔案中之情況下一Stencil2D指令之一實例性執行流程之一示意性圖解說明。
圖16係展示一實例性1×1迴旋運算圖表之一示意性圖解說明。
圖17A至圖17F展示使用一Stencil1DV指令進行1×1迴旋之一實例性執行流程之一示意性圖解說明。
圖18展示使用一實例性DOTV2R指令以使用儲存於一V2R暫存器群組中之資料產生兩個128元素向量之一向量-向量乘法之一示意性圖解說明。
圖19A至圖19B展示在不具有16位元至8位元正規化之情況下一DOTV2R指令之實例性執行流程之示意性圖解說明。
圖20A至圖20C展示將一典型CNN運算操作映射至一DV核心之一示意性圖解說明。
圖21展示用於將一CNN運算操作映射至一DV核心之虛擬程式碼。
圖22展示使用一DV處理器進行之空間導數運算之一實例性運算圖表。
圖23A至圖23B展示使用一DV處理器進行之一光學流運算之一示意性圖解說明。
圖24展示使用一DV處理器進行之運動估計之一示意性圖解說明。
圖25展示圖解說明一DV處理器之所預計效能之實例性繪圖。
圖26展示一深度視覺CNN映射工具之一實例性工作流程。
圖27係展示一實例性DV處理器晶片之一方塊圖。
圖28展示用於光學流之運動向量精細化之一實例性DV處理器架構。
圖29展示具有分散-集中支援之另一實例性DV處理器架構。
圖30係表示一DV處理器核心之一方塊圖。
圖31係一FPGA系統之一實例性示意圖。
Claims (20)
- 一種處理器,其包括: 一分庫式(banked)暫存器檔案: 包括一暫存器庫集合; 經組態以將影像像素資料儲存於該暫存器庫集合內;及 表示一二維暫存器抽象化; 一互連單元,其與該分庫式暫存器檔案通信,該互連單元經組態以: 自該分庫式暫存器檔案同時存取該影像像素資料之多個子集,該影像像素資料之每一子集定義一較小樣板型樣在一較小樣板型樣集合中,該較小樣板型樣集合係組合以定義一較大樣板型樣在該二維暫存器抽象化內;及 同時存取定義該較大二維樣板型樣之對應樣板資料;及 一算術邏輯單元集合,其與該互連件通信、經組態以同時對該影像像素資料之每一子集及該對應樣板資料執行一操作集合,該操作集合表示由該較大二維樣板型樣而特徵化之一較大樣板操作。
- 如請求項1之處理器,其中該算術邏輯單元集合經組態以基於該影像像素資料之該多個子集及該對應樣板資料來同時執行由一較小樣板大小集合而特徵化之一樣板操作集合,該樣板操作集合表示對由一較大樣板大小而特徵化之該影像像素資料之一較大樣板操作。
- 如請求項1之處理器,其中該算術邏輯單元集合經組態以基於該影像像素資料之該多個子集及該對應樣板資料來同時執行由一較小內核大小集合而特徵化之一迴旋操作集合,該迴旋操作集合表示對由一較大內核大小而特徵化之該影像像素資料之一較大迴旋操作。
- 如請求項2之處理器,其中該算術邏輯單元集合經組態以基於該影像像素資料之該多個子集及該對應樣板資料來同時執行由該較小內核大小集合而特徵化之該迴旋操作集合: 該迴旋操作集合表示對由該較大內核大小而特徵化之該影像像素資料之該較大迴旋操作;及 該較小內核大小集合選自包含以下之一內核大小群組: 一3×3內核大小; 一4×4內核大小; 一1×3內核大小; 一3×1內核大小; 一1×4內核大小;及 一4×1內核大小。
- 如請求項2之處理器,其中該算術邏輯單元集合經組態以基於該影像像素資料之該多個子集及該對應樣板資料來同時執行由該較小內核大小集合而特徵化之該迴旋操作集合: 該迴旋操作集合表示對由該較大內核大小而特徵化之該影像像素資料之該較大迴旋操作;及 該較大內核大小選自包含以下之一內核大小群組: 一5×5內核大小; 一7×7內核大小; 一8×8內核大小; 一1×5內核大小; 一1×7內核大小; 一1×8內核大小; 一5×1內核大小; 一7×1內核大小;及 一8×1內核大小。
- 如請求項1之處理器,其中在該暫存器庫集合中之每一暫存器庫係表示該二維暫存器抽象化中之一個一維列。
- 如請求項1之處理器,其中在該暫存器庫集合中之每一暫存器庫包括一向量暫存器集合。
- 如請求項7之處理器,其中該暫存器庫集合包括四個暫存器庫。
- 如請求項1之處理器: 其進一步包括一載入與儲存單元,其經組態以載入與儲存該影像像素資料及該樣板資料;及 其中,該分庫式暫存器檔案經組態以存取該載入與儲存單元以儲存該影像像素資料。
- 如請求項1之處理器: 其中該操作集合包括一個一維樣板操作集合;及 其中該較大樣板操作包括一個二維樣板操作。
- 一種處理器,其包括: 一移位暫存器單元: 經組態以儲存影像像素資料;及 表示一二維暫存器抽象化; 一映射單元,其與該移位暫存器單元通信: 經組態以自該移位暫存器單元同時存取該影像像素資料之多個子集,該影像像素資料之每一子集定義一較小樣板型樣在一較小樣板型樣集合中,該較小樣板型樣集合係組合以定義一較大二維樣板型樣在該二維暫存器抽象化內;及 經組態以同時存取該影像像素資料之該多個子集中之該影像像素資料之每一子集之對應樣板資料;及 包括一算術邏輯單元集合,其經組態以同時對該影像像素資料之每一子集及該對應樣板資料執行一操作集合,該操作集合表示由該較大二維樣板型樣而特徵化之一較大樣板操作。
- 如請求項11之處理器: 其中該映射單元包括該算術邏輯單元集合,其進一步經組態以產生起因於該操作集合之一輸出集合;及 進一步包括一歸約(reduction)單元,其經組態以組合該輸出集合以產生該較大樣板操作之一減少(reduced)輸出。
- 如請求項12之處理器,其經組態以藉由以下執行一迴旋操作: 經由該映射單元執行一乘法操作集合以產生該輸出集合;及 執行一求和操作以經由該歸約單元組合該輸出集合。
- 如請求項12之處理器,其經組態以執行一迴旋操作,此係藉由經由該算術邏輯單元集合執行一減法操作集合以產生該輸出集合。
- 如請求項12之處理器,其經組態以藉由以下執行一迴旋操作: 經由該算術邏輯單元集合執行一絕對差操作集合以產生該輸出集合;及 執行一求和操作以經由該歸約單元組合該輸出集合。
- 如請求項12之處理器,其經組態以執行一迴旋操作,此係藉由經由該算術邏輯單元集合執行一求平均操作集合以產生該輸出集合。
- 如請求項12之處理器,其進一步包括一累加器暫存器集合,該累加器暫存器集合經組態以累加經由該歸約單元所產生之多個減少輸出以執行該較大樣板操作。
- 如請求項12之處理器,其進一步包括一輸出暫存器,該輸出暫存器實施為一移位暫存器且經組態以自該映射單元存取該輸出集合。
- 如請求項11之處理器,其進一步包括一單一輸入多重資料(single-input-multiple-data)單元,該單一輸入多重資料單元經組態以執行一般用途運算。
- 一處理器核心之一暫存器單元: 其包括一暫存器庫集合; 經組態以將影像像素資料儲存於該暫存器檔案集合內;及 表示一二維暫存器抽象化;及 經組態以提供存取至該暫存器庫集合中之該影像像素資料之多個子集,該影像像素資料之每一子集定義一較小樣板型樣在一較小樣板型樣集合中,該較小樣板型樣集合係組合以定義一較大二維樣板型樣在該二維暫存器抽象化內。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762528796P | 2017-07-05 | 2017-07-05 | |
US62/528,796 | 2017-07-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202201220A true TW202201220A (zh) | 2022-01-01 |
TWI775605B TWI775605B (zh) | 2022-08-21 |
Family
ID=64903180
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107123337A TWI746865B (zh) | 2017-07-05 | 2018-07-05 | 深度視覺處理器 |
TW110134170A TWI775605B (zh) | 2017-07-05 | 2018-07-05 | 深度視覺處理器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107123337A TWI746865B (zh) | 2017-07-05 | 2018-07-05 | 深度視覺處理器 |
Country Status (4)
Country | Link |
---|---|
US (5) | US10474464B2 (zh) |
CN (1) | CN111095294A (zh) |
TW (2) | TWI746865B (zh) |
WO (1) | WO2019010183A1 (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101765235B1 (ko) * | 2016-11-28 | 2017-08-04 | 한국건설기술연구원 | 사물인터넷 기반 센서와 무인비행체를 이용한 시설물 유지관리 시스템 및 그 방법 |
US20180330234A1 (en) * | 2017-05-11 | 2018-11-15 | Hussein Al-barazanchi | Partial weights sharing convolutional neural networks |
CN108228696B (zh) * | 2017-08-31 | 2021-03-23 | 深圳市商汤科技有限公司 | 人脸图像检索方法和系统、拍摄装置、计算机存储介质 |
US10783796B2 (en) * | 2017-09-01 | 2020-09-22 | Qualcomm Incorporated | Collision management for a robotic vehicle |
GB2568085B (en) * | 2017-11-03 | 2020-01-01 | Imagination Tech Ltd | Hardware unit for performing matrix multiplication with clock gating |
US11937973B2 (en) * | 2018-05-31 | 2024-03-26 | Mayo Foundation For Medical Education And Research | Systems and media for automatically diagnosing thyroid nodules |
US10572770B2 (en) * | 2018-06-15 | 2020-02-25 | Intel Corporation | Tangent convolution for 3D data |
CN108985446A (zh) * | 2018-07-24 | 2018-12-11 | 百度在线网络技术(北京)有限公司 | 用于告警的方法及装置 |
US11983616B2 (en) * | 2018-10-01 | 2024-05-14 | Expedera, Inc. | Methods and apparatus for constructing digital circuits for performing matrix operations |
US10726516B2 (en) * | 2018-10-11 | 2020-07-28 | Futurewei Technologies, Inc. | Arithmetic logic unit (ALU)-centric operations in graphics processing units (GPUs) |
WO2020103766A1 (en) * | 2018-11-23 | 2020-05-28 | Huawei Technologies Co., Ltd. | Filter independent l1 mapping of convolution data into general purpose register |
WO2020125806A1 (en) * | 2018-12-17 | 2020-06-25 | Shanghai United Imaging Intelligence Co., Ltd. | Systems and methods for image segmentation |
US10902303B2 (en) * | 2019-01-22 | 2021-01-26 | Honda Motor Co., Ltd. | Methods and systems for visual recognition using triplet loss |
CN110069284B (zh) * | 2019-03-14 | 2023-05-05 | 梁磊 | 一种基于opu指令集的编译方法及编译器 |
CN110096947A (zh) * | 2019-03-15 | 2019-08-06 | 昆明理工大学 | 一种基于深度学习的行人再识别算法 |
CN110334577B (zh) * | 2019-05-05 | 2022-09-16 | 四川盛通智联网络科技有限公司 | 一种基于海思安防芯片的人脸识别方法 |
TWI710762B (zh) * | 2019-07-31 | 2020-11-21 | 由田新技股份有限公司 | 基於影像的分類系統 |
US11132198B2 (en) * | 2019-08-29 | 2021-09-28 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
US11366948B2 (en) * | 2019-10-18 | 2022-06-21 | Synopsys, Inc. | Machine-learning enhanced compiler |
US12061910B2 (en) * | 2019-12-05 | 2024-08-13 | International Business Machines Corporation | Dispatching multiply and accumulate operations based on accumulator register index number |
US11119772B2 (en) * | 2019-12-06 | 2021-09-14 | International Business Machines Corporation | Check pointing of accumulator register results in a microprocessor |
CN110927172B (zh) * | 2019-12-10 | 2020-08-25 | 南京航空航天大学 | 一种飞机整体油箱密封胶漏涂在线检测装置及方法 |
KR20210082970A (ko) | 2019-12-26 | 2021-07-06 | 삼성전자주식회사 | 컨볼루션 연산을 수행하는 방법 및 장치 |
US11687778B2 (en) | 2020-01-06 | 2023-06-27 | The Research Foundation For The State University Of New York | Fakecatcher: detection of synthetic portrait videos using biological signals |
US11416711B2 (en) | 2020-03-09 | 2022-08-16 | Nanotronics Imaging, Inc. | Defect detection system |
CN112602094A (zh) * | 2020-03-11 | 2021-04-02 | 深圳市大疆创新科技有限公司 | 数据处理装置、数据处理方法以及加速器 |
CN111627064B (zh) * | 2020-04-25 | 2021-07-09 | 哈尔滨理工大学 | 一种行人交互友好型的单目避障方法 |
CN111931595B (zh) * | 2020-07-17 | 2022-05-24 | 信阳师范学院 | 一种基于广义表示的人脸图像分类方法 |
KR102532006B1 (ko) * | 2020-07-24 | 2023-05-12 | 한국전자기술연구원 | Self-Spatial Adaptive Normalization 기법을 적용한 영상 영역 분할 방법 및 시스템 |
CN112200198B (zh) * | 2020-07-31 | 2023-11-24 | 星宸科技股份有限公司 | 目标数据特征提取方法、装置及存储介质 |
TWI828942B (zh) | 2020-09-23 | 2024-01-11 | 中強光電股份有限公司 | 訓練或應用神經網路模型的電子裝置和方法 |
US20220101118A1 (en) * | 2020-09-30 | 2022-03-31 | Moffett Technologies Co., Limited | Bank-balanced-sparse activation feature maps for neural network models |
TWI768709B (zh) * | 2021-01-19 | 2022-06-21 | 福邦科技國際股份有限公司 | 雙影像融合方法與裝置 |
US11961392B2 (en) * | 2021-03-04 | 2024-04-16 | The University Of North Carolina At Charlotte | Worker-in-the-loop real time safety system for short-duration highway workzones |
US20220300816A1 (en) * | 2021-03-19 | 2022-09-22 | Rebellions Inc. | Neural processing device and method for pruning thereof |
US11561794B2 (en) * | 2021-05-26 | 2023-01-24 | International Business Machines Corporation | Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry |
US11954467B2 (en) * | 2021-08-05 | 2024-04-09 | Aarish Technologies | Convolutional neural network compiler for programmable functional array (PFA) processors |
US20230409936A1 (en) * | 2022-05-17 | 2023-12-21 | Kinara, Inc. | Proxy systems and methods for multiprocessing architectures |
CN118095351B (zh) * | 2024-04-12 | 2024-07-02 | 清华大学 | 层归一化计算的协同处理装置及方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680641A (en) * | 1995-08-16 | 1997-10-21 | Sharp Microelectronics Technology, Inc. | Multiple register bank system for concurrent I/O operation in a CPU datapath |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US6901422B1 (en) * | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US7478374B2 (en) * | 2004-03-22 | 2009-01-13 | Intel Corporation | Debug system having assembler correcting register allocation errors |
US8766996B2 (en) | 2006-06-21 | 2014-07-01 | Qualcomm Incorporated | Unified virtual addressed register file |
CN101163240A (zh) * | 2006-10-13 | 2008-04-16 | 国际商业机器公司 | 一种滤波装置及其方法 |
US20080291208A1 (en) * | 2007-05-24 | 2008-11-27 | Gary Keall | Method and system for processing data via a 3d pipeline coupled to a generic video processing unit |
US8325184B2 (en) * | 2007-09-14 | 2012-12-04 | Qualcomm Incorporated | Fragment shader bypass in a graphics processing unit, and apparatus and method thereof |
JP2009223758A (ja) * | 2008-03-18 | 2009-10-01 | Ricoh Co Ltd | 画像処理装置 |
WO2010134347A1 (ja) * | 2009-05-21 | 2010-11-25 | パナソニック株式会社 | グラフィクス描画装置、グラフィクス描画方法、グラフィクス描画プログラム、グラフィクス描画プログラムを記録した記録媒体、グラフィクス描画用集積回路 |
US10001993B2 (en) * | 2013-08-08 | 2018-06-19 | Linear Algebra Technologies Limited | Variable-length instruction buffer management |
US9477999B2 (en) * | 2013-09-20 | 2016-10-25 | The Board Of Trustees Of The Leland Stanford Junior University | Low power programmable image processor |
US9978013B2 (en) * | 2014-07-16 | 2018-05-22 | Deep Learning Analytics, LLC | Systems and methods for recognizing objects in radar imagery |
US9749548B2 (en) * | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
US9910826B2 (en) * | 2015-03-27 | 2018-03-06 | International Business Machines Corporation | SIMD implementation of stencil codes |
US9817682B2 (en) * | 2015-05-18 | 2017-11-14 | Goodrich Corporation | System architecture for machine vision on moving platforms |
US20170371654A1 (en) * | 2016-06-23 | 2017-12-28 | Advanced Micro Devices, Inc. | System and method for using virtual vector register files |
US10191744B2 (en) * | 2016-07-01 | 2019-01-29 | Intel Corporation | Apparatuses, methods, and systems for element sorting of vectors |
US10546211B2 (en) | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
-
2018
- 2018-07-03 US US16/026,480 patent/US10474464B2/en active Active
- 2018-07-03 CN CN201880057582.3A patent/CN111095294A/zh active Pending
- 2018-07-03 WO PCT/US2018/040721 patent/WO2019010183A1/en active Application Filing
- 2018-07-05 TW TW107123337A patent/TWI746865B/zh active
- 2018-07-05 TW TW110134170A patent/TWI775605B/zh active
-
2019
- 2019-10-31 US US16/670,800 patent/US11080056B2/en active Active
-
2021
- 2021-06-23 US US17/356,372 patent/US11436014B2/en active Active
-
2022
- 2022-07-19 US US17/868,438 patent/US11734006B2/en active Active
-
2023
- 2023-06-30 US US18/217,353 patent/US20230418610A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220357946A1 (en) | 2022-11-10 |
TWI746865B (zh) | 2021-11-21 |
US11080056B2 (en) | 2021-08-03 |
US20230418610A1 (en) | 2023-12-28 |
US11436014B2 (en) | 2022-09-06 |
US20210326133A1 (en) | 2021-10-21 |
CN111095294A (zh) | 2020-05-01 |
TW201917566A (zh) | 2019-05-01 |
US11734006B2 (en) | 2023-08-22 |
TWI775605B (zh) | 2022-08-21 |
WO2019010183A1 (en) | 2019-01-10 |
US20190012170A1 (en) | 2019-01-10 |
US20200409699A1 (en) | 2020-12-31 |
US10474464B2 (en) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI775605B (zh) | 深度視覺處理器 | |
CN112101083B (zh) | 使用神经网络进行弱监督的对象检测方法及系统 | |
Shawahna et al. | FPGA-based accelerators of deep learning networks for learning and classification: A review | |
CN110197276B (zh) | 用于深度学习加速的数据体雕刻器 | |
Talib et al. | A systematic literature review on hardware implementation of artificial intelligence algorithms | |
US11586907B2 (en) | Arithmetic unit for deep learning acceleration | |
CN114365185A (zh) | 使用一个或更多个神经网络生成图像 | |
CN112215332B (zh) | 神经网络结构的搜索方法、图像处理方法和装置 | |
DE112020005020T5 (de) | Stellungsbestimmung unter verwendung eines oder mehrerer neuronaler netze | |
KR102652476B1 (ko) | 인공신경망을 위한 방법 및 신경 프로세싱 유닛 | |
US11144291B1 (en) | Loop-oriented neural network compilation | |
JP2022532009A (ja) | 分子結合部位検出方法、装置、電子機器及びコンピュータプログラム | |
Meribout et al. | State of art IoT and Edge embedded systems for real-time machine vision applications | |
KR20240042393A (ko) | 자율 주행 시스템에서의 객체 인식 방법 | |
Isik et al. | An energy-efficient reconfigurable autoencoder implementation on fpga | |
Ravikumar et al. | Acceleration of Image Processing and Computer Vision Algorithms | |
Li et al. | Edge Real-Time Object Detection and DPU-Based Hardware Implementation for Optical Remote Sensing Images | |
Park et al. | An FPGA-based accelerator for cortical object classification | |
Chalimbaud et al. | Design of an imaging system based on FPGA technology and CMOS imager | |
KR102714536B1 (ko) | 신경 프로세싱 유닛 및 이의 동작 방법 | |
Choubey et al. | Modern ML methods for object detection | |
KR20240025827A (ko) | Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법 | |
Nguyen | A Fully-Pipelined Inference Accelerator for Deep Convolutional Neural Networks | |
Prithvi | Hardware Acceleration of YOLOv3-tiny Object Detection | |
Minaidis | Embedded development of aI-based computer vision: Acceleration on intel myriad X VPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |