TWI728247B - 特殊用途神經網路訓練晶片 - Google Patents
特殊用途神經網路訓練晶片 Download PDFInfo
- Publication number
- TWI728247B TWI728247B TW107116869A TW107116869A TWI728247B TW I728247 B TWI728247 B TW I728247B TW 107116869 A TW107116869 A TW 107116869A TW 107116869 A TW107116869 A TW 107116869A TW I728247 B TWI728247 B TW I728247B
- Authority
- TW
- Taiwan
- Prior art keywords
- special
- vector
- purpose hardware
- hardware chip
- memory
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 50
- 238000012549 training Methods 0.000 title claims abstract description 23
- 239000013598 vector Substances 0.000 claims abstract description 134
- 239000011159 matrix material Substances 0.000 claims abstract description 71
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000015654 memory Effects 0.000 claims description 81
- 230000009467 reduction Effects 0.000 claims description 20
- 230000017105 transposition Effects 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000000034 method Methods 0.000 abstract description 12
- 230000004913 activation Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30141—Implementation provisions of register files, e.g. ports
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- 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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Apparatus For Radiation Diagnosis (AREA)
- Rehabilitation Tools (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
Abstract
本發明闡述包含用於訓練神經網路之一特殊用途硬體晶片之方法、系統及設備。該特殊用途硬體晶片可包含一純量處理器,該純量處理器經組態以控制該特殊用途硬體晶片之運算操作。該晶片亦可包含一向量處理器,該向量處理器經組態以具有向量處理單元之一2維陣列,該等向量處理單元全部以一單指令多資料方式執行同一指令且透過該向量處理器之載入及儲存指令彼此通信。該晶片可另外包含一矩陣乘法單元,該矩陣乘法單元耦合至該向量處理器、經組態以使至少一個二維矩陣與一第二一維向量或二維矩陣相乘以便獲得一乘法結果。
Description
本說明書係關於執行硬體中之神經網路運算。神經網路係各自採用一或多個模型層以針對一所接收輸入產生一輸出(例如,一分類)之機器學習模型。除一輸出層之外,某些神經網路亦包含一或多個隱藏層。各隱藏層之輸出用作至網路中之下一層(例如,網路之下一隱藏層或輸出層)之輸入。根據一各別參數集之當前值,網路之各層依據一所接收輸入產生一輸出。
本說明書闡述與為針對機器學習工作負荷(具體而言,一訓練階段)最佳化之可程式化線性代數加速度計之特殊用途硬體晶片有關之技術。
一般而言,本說明書中所闡述之標的物之一個新穎態樣可體現於一特殊硬體晶片中。
此態樣之其他實施例包含對應電腦系統、設備及記錄於一或多個電腦儲存裝置上之電腦程式,各者經組態以執行方法之動作。使一或多個電腦之一系統經組態以執行特定操作或動作意味該系統已將軟體、韌體、硬體或在操作中致使該系統執行該等操作或動作之其各項之一組合安裝於其上。使一或多個電腦程式經組態以執行特定操作或動作意味一或多個程式包含在由資料處理設備執行時致使該設備執行操作或動作之指令。
前文及其他實施例可各自視情況單獨地或組合地包含以下特徵中之一或多者。特定而言,一項實施例組合地包含所有以下特徵。
用於訓練神經網路之一特殊用途硬體晶片可包含:一純量處理器,其經組態以控制該特殊用途硬體晶片之運算操作;一向量處理器,其經組態以具有向量處理單元之一2維陣列,該等向量處理單元全部以一單指令多資料方式執行同一指令且透過該向量處理器之載入及儲存指令彼此通信;及一矩陣乘法單元,其耦合至該向量處理器、經組態以使至少一個二維矩陣與一第二一維向量或二維矩陣相乘以便獲得一乘法結果。
一向量記憶體可經組態以將快速私有記憶體提供至該向量處理器。一純量記憶體可經組態以將快速私有記憶體提供至該純量處理器。一轉置單元可經組態以執行一矩陣之一轉置操作。一歸約與排列單元可經組態以對數字執行一歸約且在該向量陣列之不同通道當中排列該等數字。一高頻寬記憶體可經組態以儲存該特殊用途硬體晶片之資料。該特殊用途硬體晶片可包含一稀疏運算核心。
該特殊用途硬體晶片可包含一介面及一晶片間互連件,該晶片間互連件將該介面或該特殊用途硬體晶片上之資源連接至其他特殊用途硬體晶片或資源。
該特殊用途硬體晶片可包含高頻寬記憶體。該晶片間互連件可將該介面及該高頻寬記憶體連接至其他特殊用途硬體晶片。該介面可係至一主機電腦之一主機介面。該介面可係至主機電腦之一網路之一標準網路介面。
本說明書中所闡述之標的物可在特定實施例中經實施以便實現以下優點中之一或多者。一特殊用途硬體晶片含有原本支援除習用0及1維張量運算之外的較高維度張量(亦即,2維且更高)同時亦針對用於機器學習之32位元或更低精確度運算而最佳化的處理器。
在附圖及以下說明中陳述本說明書之標的物之一或多個實施例之細節。標的物之其他特徵、態樣及優點將依據說明、圖式及申請專利範圍而變得顯而易見。
相關申請案之交叉參考 本申請案主張2017年5月17日提出申請之第62/507,771號美國申請案之申請日期之權益。先前申請案之揭示內容被視為本申請案之揭示內容之一部分且以引用方式併入本申請案之揭示內容中。
可訓練具有多個層之一神經網路且然後使用該神經網路來運算推斷。一般而言,神經網路之層中之某些或所有層具有在神經網路之訓練期間調整之參數。舉例而言,作為產生一層輸出之一部分,該等層中之某些或所有層可使層之參數(亦稱為權數)之一矩陣與至層之一輸入相乘。在神經網路之訓練期間調整矩陣中之參數之值。
特定而言,在訓練期間,訓練系統執行一神經網路訓練過程以調整神經網路之參數之值,例如,自參數之初始值判定參數之經訓練值。訓練系統連同一最佳化方法使用反向錯誤傳播(稱為反向傳播)以關於神經網路之參數中之各者運算一目標函數之梯度且使用該等梯度來調整參數之值。
經訓練神經網路然後可使用正向傳播(亦即,透過神經網路之層處理輸入)運算推斷以針對該輸入產生一神經網路輸出。
舉例而言,給定一輸入,該神經網路可針對該輸入運算一推斷。該神經網路藉由透過該神經網路之該等層中之各者處理該輸入而運算此推斷。在某些實施方案中,神經網路之層配置成一序列。
因此,為了依據一所接收輸入運算一推斷,該神經網路接收該輸入且透過序列中之神經網路層中之各者處理該輸入以產生該推斷,其中提供來自一個神經網路層之輸出作為至下一神經網路層之輸入。至一神經網路層之資料輸入(例如,至神經網路之輸入或序列中位於該層下面之層至一神經網路層之輸出)可稱為至層之啟動輸入。
在某些實施方案中,神經網路之層配置成一有向圖。亦即,任何特定層可接收多個輸入、多個輸出或兩者。神經網路之層亦可經配置使得一層之一輸出可作為一輸入發送回至一先前層。
一實例性系統係針對矩陣乘法及多維陣列之其他計算最佳化之一高效能多晶片張量運算系統。此等操作對於訓練神經網路及視情況對於使用神經網路來運算推斷係重要的。
在一實例性系統內,多個特殊用途晶片經配置以分佈操作以使系統高效地執行訓練及推斷計算。在一個實施方案中,在一板上且在一較大系統中存在四個晶片,諸多板在一機架中彼此相鄰或以其他方式彼此進行資料通信。
圖1圖解說明連接特殊用途硬體晶片101a至101d之一實例性集合體之高速連接之一實例性拓撲,特殊用途硬體晶片101a至101d在一板上以一圓形拓撲連接。各晶片含有兩個處理器(102a至102h)。此拓撲係一個一維(1D)環面;在一1D環面中,各晶片直接連接至兩個相鄰者。如所展示,在某些實施方案中,該等晶片含有已程式化有用以執行操作之軟體或韌體指令之微處理器核心。在圖1中,所有晶片在一單個模組100上。圖中所展示之在處理器之間的線路表示高速資料通信鏈路。有利地在一個積體電路板上製造該等處理器,但亦可在多個板上製造該等處理器。跨越晶片邊界,該等鏈路係晶片間網路鏈路;同一晶片上之處理器經由晶片內介面鏈路通信。該等鏈路可係僅一個處理器可在其上一次傳輸資料之半雙工鏈路或可在其上在兩個方向上同時傳輸資料之全雙工鏈路。在於2017年2月21日提出申請且以引用方式併入之標題為PARALLEL PROCESSING OF REDUCTION AND BROADCAST OPERATIONS ON LARGE DATASETS OF NON-SCALAR DATA之第62/461,758號美國專利申請案中更詳細地闡述使用此實例性拓撲及其他拓撲進行並行處理。
圖2展示用於訓練一神經網路之一實例性特殊用途硬體晶片之一高階圖式。如所圖解說明,一單個特殊用途硬體晶片包含兩個獨立處理器(202a、202b)。各處理器(202a、202b)含有兩個相異核心:(1)一運算核心,亦即一極長指令字(VLIW)機器,(203a、203b);及(2)一稀疏運算核心,亦即一嵌入層加速度計,(205a、205b)。
針對密集線性代數問題最佳化各核心(203a、203b)。一單個極長指令字並行控制數個運算核心。將關於圖3及圖4更詳細地闡述運算核心。
一實例性稀疏運算核心(205a、205b)將非常稀疏、高維資料映射至密集低維資料中,使得層之其餘部分處理密集封裝之輸入資料。舉例而言,該稀疏運算核心可在訓練神經網路中執行任何嵌入層之運算。
為執行此稀疏至密集映射,稀疏運算核心使用一預建查詢表、一嵌入表。舉例而言,當存在一系列查詢字作為使用者輸入時,將各查詢字轉換成一雜湊識別項或一單熱經編碼向量。使用該識別項作為一表索引,嵌入表傳回對應密集向量,該對應密集向量可係至下一層之一輸入啟動向量。稀疏運算核心亦可跨越搜尋查詢字執行歸約運算以形成一個密集啟動向量。稀疏運算核心執行高效稀疏分佈式查詢,此乃因嵌入表可係巨大的且不適合特殊用途硬體晶片中之一者之有限容量高頻寬記憶體。關於稀疏運算核心功能性之更多細節可存在於2016年2月5日提出申請且以引用方式併入之標題為「MATRIX PROCESSING APPARATUS」之第15/016,486號美國專利申請案中。
圖3展示運算核心(300)之一高階實例。該運算核心可係並行控制數個運算單元之一機器,亦即一VLIW機器。各運算核心(300)含有:一純量記憶體(304)、一向量記憶體(308)、一純量處理器(303)、一向量處理器(306)及經擴展向量單元(亦即,一矩陣乘法單元(MXU) (313)、一轉置單元 (XU) (314)及一歸約與排列單元(RPU) (316))。
一實例性純量處理器執行VLIW指令提取/執行迴圈且控制運算核心。在提取且解碼一指令束之後,純量處理器自身僅使用純量處理器(303)及純量記憶體(304)之多個多位元暫存器(亦即,32個32位元暫存器)執行存在於束之純量槽中之指令。純量指令集包含(例如)如在位址計算中使用之正常算術運算、載入/儲存指令及分支指令。剩餘指令槽編碼用於向量處理器(306)或其他經擴展向量單元(313、314、316)之指令。將該等經解碼向量指令轉發至向量處理器(306)。
連同向量指令一起,純量處理器(303)可將高達三個純量暫存器之值轉發至其他處理器及單元以執行操作。純量處理器亦可自向量處理器直接擷取運算結果。然而,在某些實施方案中,實例性晶片具有自向量處理器至純量處理器之一低頻寬通信路徑。
一向量指令分派器位於純量處理器與向量處理器之間。此分派器自非純量VLIW槽接收經解碼指令且將彼等指令廣播至向量處理器(306)。向量處理器(306)由向量處理單元之一2維陣列(亦即,128×8陣列)組成,該等向量處理單元以一單指令多資料(SIMD)方式執行同一指令。關於圖4詳細地闡述向量處理單元。
一實例性純量處理器(303)對由一大得多但較慢之高頻寬記憶體(HBM) (310)支持之一小的快速私有純量記憶體(304)進行存取。類似地,一實例性向量處理器(306)對亦由HBM (310)支持之一小的快速私有向量記憶體(306)進行存取。在純量處理器(303)與純量記憶體(304)之間或在向量處理器(306)與向量記憶體(308)之間發生字組細微度存取。向量處理器與向量記憶體之間的載入及儲存之細微度係128個32位元字組之一向量。在純量記憶體(304)與HBM (310)之間且在向量記憶體(306)與HBM (310)之間發生直接記憶體存取。在某些實施方案中,可僅透過純量或向量記憶體進行自HBM (310)至處理器(303、306)之記憶體傳送。另外,可不存在純量記憶體與向量記憶體之間的直接記憶體傳送。
指令可規定經擴展向量單元操作。連同各經執行向量單元指令一起,存在各自可將一個暫存器值作為輸入運算元發送至經擴展向量單元之二維(亦即,128×8個)向量單元。各經擴展向量單元獲取輸入運算元,執行對應操作,且將結果傳回至向量處理器(306)。下文將關於圖4闡述該等經擴展向量單元。
圖4展示針對神經網路執行訓練之一晶片之一更詳細圖式。如上文所圖解說明及闡述,晶片含有兩個運算核心(480a、480b)及兩個稀疏運算核心(452a、452b)。
晶片具有一共用區,該共用區包含至一主機電腦(450)或多個主機電腦之一介面。該介面可係至一主機電腦之一主機介面或至主機電腦之一網路之一標準網路介面。該共用區亦可具有沿著底部之高頻寬記憶體堆疊(456a至456d),及將介面及記憶體連接在一起之一晶片間互連件(448)以及來自其他晶片之資料。該互連件亦可將介面連接至硬體晶片上之運算資源。多個(亦即,兩個)高頻寬記憶體堆疊(456a至456b、456c至456d)與各運算核心(480a、480b)相關聯。
晶片將資料儲存於高頻寬記憶體(456c至456d)中,讀取進入及離開向量記憶體(446)之資料,且處理該資料。運算核心(480b)自身包含一向量記憶體(446),向量記憶體(446)係劃分成兩個維度之晶片上S-RAM。向量記憶體具有位址空間,其中位址保存浮點數字,亦即,各自係32位元之128個數字。運算核心(480b)亦包含運算值之一運算單元及控制運算單元之一純量單元。該運算單元可包括一向量處理器,且一純量單元可包括一純量處理器。該運算核心(其可形成一特殊用途晶片之一部分)可進一步包括一矩陣乘法單元或另一經擴展操作單元,諸如執行一矩陣(亦即,128×128矩陣)之一轉置操作之一轉置單元(422)及一歸約與排列單元。
向量處理器(306)由向量處理單元之一2維陣列(亦即,128×8)組成,該等向量處理單元全部以一單指令多資料(SIMD)方式執行同一指令。向量處理器具有通道及子通道,亦即128個通道及8個子通道。在通道內,向量單元透過載入及儲存指令彼此通信。各向量單元可一次存取一個4位元組值。不屬同一通道之向量單元無法直接通信。此等向量單元必須使用下文所闡述之歸約/排列單元。
運算單元包含在一向量處理單元(440)中之向量暫存器(亦即,32個暫存器),該向量處理單元(440)可用於浮點運算及整數運算兩者。運算單元包含用以執行運算之兩個算術邏輯單元(ALU) (406c至406d)。一個ALU (406c)執行浮點加法且另一ALU (406d)執行浮點乘法。兩個ALU (406c至406d)可執行各種其他操作,諸如移位、遮罩及比較。舉例而言,一運算核心(480b)可想要使一向量暫存器V1
與一第二向量暫存器V2
相加,且將結果放在一第三向量暫存器V3
中。為了運算加法,運算核心(480b)在一個時脈循環中執行多個運算。使用此等暫存器作為運算元,向量單元中之各者可每時脈循環同時執行兩個ALU指令以及一個載入指令及一個儲存指令。可在純量處理器中運算一載入指令或一儲存指令之一基底位址且將該基底位址轉發至向量處理器。各子通道中之向量單元中之各者可使用各種方法(諸如跨越)及一特殊經索引位址暫存器運算其自身之位移位址。
運算單元亦含有執行諸如平方根及倒數之運算之一經擴展一元管線(EUP) (416)。運算核心(480b)採取三個時脈循環來執行此等運算,此乃因其在運算上係更加複雜的。由於EUP處理採取一個以上時脈循環,因此存在用以儲存結果之一先進先出資料儲存器。當完成一運算時,將結果儲存於FIFO中。運算核心可在一稍後時間使用一分開之指令來從FIFO提取資料且將資料置入向量暫存器。一隨機數產生器(420)允許運算核心(480b)產生每循環多個隨機數,亦即,每循環128個隨機數。
如上文所闡述,可實施為一特殊用途硬體晶片之一部分之各處理器具有三個經擴展操作單元:一矩陣乘法單元(448),其執行矩陣乘法運算;一轉置單元(422),其執行一矩陣(亦即,128×128矩陣)之一轉置操作;及一歸約與排列單元(在圖4中經圖解說明為分開之單元424、426)。
矩陣乘法單元執行兩個矩陣之間的矩陣乘法。矩陣乘法單元(438)接受資料,此乃因運算核心需要載入一數字集(其係將要相乘之矩陣)。如所圖解說明,資料來自向量暫存器(440)。各向量暫存器含有128×8個數字,亦即32位元數字。然而,在將資料發送至矩陣乘法單元(448)時可發生浮點轉換以將數字改變成一較小位元大小,亦即自32位元改變成16位元。一串列化器(440)確保當自向量暫存器讀出數字時二維陣列(亦即,一128×8矩陣)經讀取為在接下來八個時脈循環中之各者內發送至矩陣乘法單元(448)之128個數字之若干集合。在矩陣乘法已完成其運算之後,將結果解串列化(442a、442b),此意味在若干個時脈循環內保存結果矩陣。舉例而言,針對一128×8陣列,在8個時脈循環中之各者內保存128個數字且然後將該128個數字推送至一FIFO,使得可在一個時脈循環中抓取128×8個數字之一個二維陣列且將該二維陣列儲存於向量暫存器(440)中。
在一循環(亦即,128個循環)週期內,將權數作為藉以使矩陣相乘之數字移位至矩陣乘法單元(448)中。一旦已載入矩陣及權數,運算核心(480)便可將數字(亦即,128×8個數字)集合發送至矩陣乘法單元(448)。可使集合之各線與矩陣相乘以每時脈循環產生若干個結果,亦即128個結果。當運算核心執行矩陣乘法時,運算核心亦使背景中之新數字集移位為係運算核心將藉以進行乘法運算之下一矩陣,使得下一矩陣在已完成先前矩陣之運算程序時係可用的。在標題為LOW MATRIX MULTIPLY UNIT COMPOSED OF MULTI-BIT CELLS之16113-8251001及標題為MATRIX MULTIPLY UNIT WITH NUMERICS OPTIMIZED FOR NEURAL NETWORK APPLICATIONS之16113-8252001中更詳細地闡述矩陣乘法單元(448),16113-8251001及16113-8252001兩者以引用方式併入。
轉置單元轉置一矩陣。轉置單元(422)接受數字且轉置該等數字使得跨越一通道之數字與在其他維度上之數字一起經轉置。在某些實施方案中,向量處理器包含128×8個向量單元。因此,為轉置一128×128矩陣,針對全矩陣轉置需要十六個個別轉置指令。一旦完成轉置,經轉置矩陣便將係可用的。然而,需要一明確指令來將經轉置矩陣移動至向量暫存器檔案中。
歸約/排列單元(或單元424、426)藉由支援諸如排列、通道旋轉、旋轉排列、通道歸約、經排列通道歸約及分割式經排列通道歸約之各種操作而解決交叉通道通信之問題。如所圖解說明,此等運算係分開的,然而,一運算核心可使用一個運算或另一運算或鏈接至另一運算之一個運算。歸約單元(424)將各數字線中之所有數字加總且將該等數字饋送至排列單元(426)中。排列單元使資料在不同通道之間移動。轉置單元、歸約單元、排列單元及矩陣乘法單元各自採取一個以上時脈循環來完成。因此,各單元具有與其相關聯之一FIFO,使得可將運算之結果推送至FIFO且可在一稍後時間執行一分開之指令以從FIFO提取資料且將資料置入一向量暫存器。藉由使用FIFO,運算核心不需要在冗長操作之持續時間內保留多個向量暫存器。如所圖解說明,單元中之各者自向量暫存器(440)獲取資料。
運算核心使用一純量單元來控制運算單元。純量單元具有兩個主要功能:(1)執行迴圈計數及定址及(2)產生直接記憶體位址(DMA)請求,使得DMA控制器使背景中之資料在高頻寬記憶體(456c至456d)與向量記憶體(446)之間移動且然後移動至晶片間連接件(448)從而移動至一實例性系統中之其他晶片。純量單元含有一指令記憶體(404)、一指令解碼與發佈(402)、含有純量暫存器(亦即,32位元)之純量處理單元(408)、一純量記憶體(410)及用於每時脈循環執行兩個操作之兩個ALU (406a、406b)。純量單元可將運算元及立即值饋送至向量運算中。可將各指令作為含有對向量暫存器(440)執行之指令之一指令束自指令解碼與發佈(402)發送。各指令束係一極長指令字(VLIW),其中各指令係若干個位元寬,劃分成若干個指令欄位。
晶片400可用於執行一神經網路之訓練之至少一部分。特定而言,當訓練一神經網路時,系統使用主機介面(450)自一主機電腦接收經標記訓練資料。主機介面亦可接收包含用於一神經網路運算之參數之指令。該等參數可包含以下各項中之至少一或多者:應處理多少個層、該等層中之各層之權數輸入之對應集合、啟動輸入之一初始集合(亦即,係至神經網路之輸入之訓練資料,依據該輸入將運算推斷或將進行訓練)、各層之對應輸入及輸出大小、用於神經網路運算之一步長值及待處理之一層類型(例如,一廻旋層或一完全經連接層)。
可將權數輸入集合及啟動輸入集合發送至運算核心之矩陣乘法單元。在將權數輸入及啟動輸入發送至矩陣乘法單元之前,可存在由系統中之其他組件對輸入執行之其他運算。在某些實施方案中,存在將啟動自稀疏運算核心發送至運算核心之兩種方式。首先,稀疏運算核心可透過高頻寬記憶體發送一通信。對於大量資料,稀疏運算核心可使用一直接記憶體位址(DMA)指令將啟動儲存於高頻寬記憶體中,該直接記憶體位址(DMA)指令更新一運算核心中之一目標同步旗標。該運算核心可使用一同步指令等待此同步旗標。一旦設定該同步旗標,該運算核心便使用一DMA指令來將啟動自高頻寬記憶體複製至一對應向量記憶體。
第二,稀疏運算核心可將通信直接發送至運算核心向量記憶體。若資料量不大(亦即,其裝配在運算核心向量記憶體中),則稀疏運算核心可使用一DMA指令將啟動直接儲存於運算核心之向量記憶體中同時將一同步旗標通知給一運算核心。該運算核心可在執行取決於啟動之一運算之前等待此同步旗標。
矩陣乘法單元可處理權數輸入及啟動輸入且將一輸出向量或矩陣提供至向量處理單元。向量處理單元可儲存一經處理輸出向量或矩陣。舉例而言,向量處理單元可將一非線性函數應用於矩陣乘法單元之輸出以產生經啟動值。在某些實施方案中,向量處理單元產生正規化值、合併值或兩者。經處理輸出向量可用作至矩陣乘法單元之啟動輸入以供在神經網路中之一後續層中使用。
一旦運算一經處理輸出向量或一訓練資料批次,便可將輸出與經標記訓練資料之預期輸出進行比較以判定一誤差。系統然後可執行反向傳播以透過神經網路傳播誤差以便訓練網路。使用晶片上向量處理單元之算術邏輯單元運算損失函數之梯度。
一實例性系統需要啟動梯度以透過一神經網路執行反向傳播。為將啟動梯度自一運算核心發送至一稀疏運算核心,一實例性系統可使用一運算核心DMA指令來將啟動梯度儲存於高頻寬記憶體中同時將一同步旗標通知給目標稀疏運算核心。稀疏運算核心可在執行取決於啟動梯度之一運算之前等待此同步旗標。
矩陣乘法單元執行用於一反向傳播之兩個矩陣乘法運算。一個矩陣乘法將自網路中之先前層沿著反向路徑穿過網路之反向經傳播誤差應用於權數以調整權數且判定神經網路之新權數。一第二矩陣乘法將誤差應用於原始啟動作為對神經網路中之先前層之回饋。原始啟動在正向遍歷期間產生且可在反向遍歷期間經儲存以供使用。為了運算,可使用向量處理單元中之一般用途指令(包含浮點加法、減法及乘法)。一般用途指令亦可包含比較、移位、遮罩及邏輯運算。雖然可使矩陣乘法非常良好地加速,但向量處理單元之算術邏輯單元以每循環每核心128×8×2個操作之一速率執行一般運算。
本說明書中所闡述之標的物及功能操作之實施例可實施於包含本說明書中所揭示之結構及其結構等效物之數位電子電路、有形地體現之電腦軟體或韌體、電腦硬體或者其中之一或多者之組合中。本說明書中所闡述之標的物之實施例可實施為一或多個電腦程式,亦即,編碼於一有形非暫時性儲存載體上以供資料處理設備執行或控制資料處理設備之操作之電腦程式指令之一或多個模組。電腦儲存媒體可係一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其中之一或多者之一組合。另一選擇係或另外,程式指令可編碼於一人工產生之所傳播信號(例如,一機器產生之電、光學或電磁信號)上,該人工產生之所傳播信號經產生以編碼用於傳輸至適合接收器設備以供一資料處理設備執行之資訊。
術語「資料處理設備」係指資料處理硬體且囊括用於處理資料之所有種類之設備、裝置及機器,藉由實例方式包含一可程式化處理器、一電腦或者多個處理器或電腦。該設備亦可係或進一步包含特殊用途邏輯電路,例如,一FPGA (場可程式化閘陣列)或一ASIC (特殊應用積體電路)。除硬體之外,該設備亦可視情況包含為電腦程式創建一執行環境之程式碼,例如,構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其中之一或多者之一組合的程式碼。
一電腦程式(其亦可稱為或闡述為一程式、軟體、一軟體應用程式、一應用程式、一模組、一軟體模組、一描述性語言或程式碼)可以任一形式之程式設計語言(包含經編譯語言或經解譯語言或者宣告語言或程序語言)來撰寫,且其可以任一形式(包含作為一獨立程式或作為一模組、組件、次常式或適合在一運算環境中使用之其他單元)來部署。一程式可以但無需對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文檔中之一或多個描述性語言)之一檔案之一部分中、儲存於專用於所討論之程式之一單個檔案中或儲存於多個協調檔案(例如,儲存一或多個模組、子程式或程式碼部分之檔案)中。一電腦程式可經部署以在一個電腦上或者在位於一個位點處或跨越多個位點分佈且由一資料通信網路互連之多個電腦上執行。
在本說明書中所闡述之程序及邏輯流程可由一或多個可程式化電腦執行,該一或多個可程式化電腦執行一或多個電腦程式以藉由對輸入資料進行操作且產生輸出而執行功能。該等程序及邏輯流程亦可由特殊用途邏輯電路(例如,一FPGA或一ASIC)或由特殊用途邏輯電路與一或多個經程式化電腦之一組合執行。
適合用於執行一電腦程式之電腦可基於一般用途或特殊用途微處理器或兩者或者任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。中央處理單元及記憶體可由特殊用途邏輯電路補充或併入於特殊用途邏輯電路中。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)或以操作方式耦合以自該一或多個大容量儲存裝置接收資料或向其傳送資料或既接收又傳送資料。然而,一電腦不需要具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如僅舉幾例,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲控制台、一全球定位系統(GPS)接收器或一便攜式儲存裝置(例如,一通用串列匯流排(USB)快閃磁碟機)。
適合於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,藉由實例方式包含:半導體記憶體裝置,例如EPROM、EEPROM及快閃記憶體裝置;磁碟,例如內部硬碟或可拆卸磁碟;磁光碟;及CD-ROM及DVD-ROM磁碟。
為提供與一使用者之互動,本說明書中所闡述之標的物之實施例可實施於具有用於向使用者顯示資訊之一顯示器裝置(例如,一CRT (陰極射線管)或LCD (液晶顯示器)監視器)及用戶可藉以將輸入提供至電腦之一鍵盤及一指向裝置(例如,一滑鼠或一軌跡球)之一電腦上。亦可使用其他種類之裝置來提供與一使用者之互動;舉例而言,提供給使用者之回饋可係任何形式之感觀回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且來自使用者之輸入可以任何形式來接收,包含聲音、語音或觸覺輸入。另外,一電腦可藉由將文件發送至由一使用者使用之一裝置且自該裝置接收文件而與該使用者互動;舉例而言,藉由回應於自一web瀏覽器接收之請求而在一使用者之用戶端裝置上將網頁發送至該web瀏覽器。而且,一電腦可藉由將文字訊息或其他形式之訊息發送至一個人裝置(例如,一智慧型電話)、運行一訊息傳送應用程式及作為回報自一使用者接收回應性訊息而與該使用者互動。
本說明書中所闡述之標的物之實施例可實施於一運算系統中,該運算系統包含一後端組件(例如,作為一資料伺服器),或包含一中間軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,具有一使用者可透過其與本說明書中所闡述之標的物之一實施方案互動之一圖形使用者介面、一Web瀏覽器或一應用程式的一用戶端電腦)或者一或多個此類後端、中間軟體或前端組件之任何組合。該系統之該等組件可藉由任何數位資料通信形式或媒體(例如,一通信網路)來互連。通信網路之實例包含一區域網路(LAN)及一廣域網路(WAN),例如,網際網路。
該運算系統可包含用戶端及伺服器。一用戶端與伺服器一般彼此遠離且通常透過一通信網路互動。用戶端與伺服器之關係藉助於在各別電腦上運行且彼此之間具有一用戶端-伺服器關係之電腦程式而產生。在某些實施例中,一伺服器將資料(例如,一HTML頁)傳輸至一使用者裝置,例如,以用於將資料顯示給與裝置(其用作一客戶端)互動之一使用者及自該使用者接收使用者輸入之目的。可在伺服器處自裝置接收在使用者裝置處產生之資料(例如,使用者互動之一結果)。
實施例1係用於訓練神經網路之一 特殊用途硬體晶片,該特殊用途硬體晶片包括:一純量處理器,其經組態以控制該特殊用途硬體晶片之運算操作;一向量處理器,其經組態以具有向量處理單元之一2維陣列,該等向量處理單元全部以一單指令多資料方式執行同一指令且透過該向量處理器之載入及儲存指令彼此通信;及一矩陣乘法單元,其耦合至該向量處理器、經組態以使至少一個二維矩陣與一第二一維向量或二維矩陣相乘以便獲得一乘法結果。
實施例2係實施例1之特殊用途硬體晶片,其進一步包括:一向量記憶體,其經組態以將快速私有記憶體提供至該向量處理器。
實施例3係實施例1或2之特殊用途硬體晶片,其進一步包括:一純量記憶體,其經組態以將快速私有記憶體提供至該純量處理器。
實施例4係實施例1至3中之任一者之特殊用途硬體晶片,其進一步包括:一轉置單元,其經組態以執行一矩陣之一轉置操作。
實施例5係實施例1至4中之任一者之特殊用途硬體晶片,其進一步包括:一歸約與排列單元,其經組態以對數字執行一歸約及在向量陣列之不同通道當中排列該等數字。
實施例6係實施例1至5中任一者之特殊用途硬體晶片,其進一步包括:一高頻寬記憶體,其經組態以儲存該特殊用途硬體晶片之資料。
實施例7係實施例1至6中任一者之特殊用途硬體晶片,其進一步包括一稀疏運算核心。
實施例8係實施例1至7中任一者之特殊用途硬體晶片,其進一步包括:一介面;及一晶片間互連件,其將該介面或該特殊用途硬體晶片上之資源連接至其他特殊用途硬體晶片或資源。
實施例9係實施例1至8中任一者之特殊用途硬體晶片,其進一步包括:複數個高頻寬記憶體;其中該晶片間互連件將該介面及該高頻寬記憶體連接至其他特殊用途硬體晶片。
實施例10係實施例1至9中之任一者之特殊用途硬體晶片,其中該介面係至一主機電腦之一主機介面。
實施例11係實施例1至10中之任一者之特殊用途硬體晶片,其中該介面係至主機電腦之一網路之一標準網路介面。
雖然本說明書含有諸多特定實施細節,但此等細節不應解釋為對任何發明之範疇或可主張之內容之範疇之限制,而是應解釋為可係特定發明之特定實施例所特有之特徵之說明。在分開之實施例之內容脈絡中於本說明書中闡述之特定特徵亦可以組合方式實施於一單個實施例中。相反地,在一單個實施例之內容脈絡中闡述之各種特徵亦可單獨地或以任何適合子組合方式實施於多個實施例中。此外,儘管上文可將特徵闡述為以特定組合起作用且甚至最初主張如此,但來自一所主張組合之一或多個特徵在某些情形中可自該組合去除,且該所主張組合可針對於一子組合或一子組合之變化形式。
類似地,雖然在圖式中以一特定次序繪示操作,但不應將此理解為需要以所展示之特定次序或以順序次序執行此等操作,或執行所有所圖解說明操作以實現合意結果。在特定情況中,多任務及並行處理可係有利的。此外,不應將在上文所闡述之實施例中之各種系統模組及組件之分離理解為在所有實施例中需要此分離,且應理解,一般可將所闡述之程式組件及系統一起整合於一單個軟體產品中或封裝至多個軟體產品中。
已闡述標的物之特定實施例。其他實施例在所附申請專利範圍之範疇內。舉例而言,在申請專利範圍中所引用之行動可以一不同次序來執行且仍實現合意結果。作為另一實例,附圖中所繪示之程序未必需要所展示之特定次序或順序次序來實現合意結果。在某些情形中,多任務及並行處理可係有利的。
100‧‧‧模組101a‧‧‧特殊用途硬體晶片101b‧‧‧特殊用途硬體晶片101c‧‧‧特殊用途硬體晶片101d‧‧‧特殊用途硬體晶片102a‧‧‧處理器102b‧‧‧處理器102c‧‧‧處理器102d‧‧‧處理器102e‧‧‧處理器102f‧‧‧處理器102g‧‧‧處理器102h‧‧‧處理器202a‧‧‧處理器202b‧‧‧處理器203a‧‧‧運算核心/核心203b‧‧‧運算核心/核心205a‧‧‧稀疏運算核心205b‧‧‧稀疏運算核心300‧‧‧運算核心303‧‧‧純量處理器/處理器304‧‧‧純量記憶體/快速私有純量記憶體306‧‧‧向量處理器/處理器308‧‧‧向量記憶體310‧‧‧高頻寬記憶體313‧‧‧矩陣乘法單元/經擴展向量單元314‧‧‧轉置單元/經擴展向量單元316‧‧‧歸約與排列單元/經擴展向量單元400‧‧‧晶片402‧‧‧指令解碼與發佈404‧‧‧指令記憶體406a‧‧‧算術邏輯單元406b‧‧‧算術邏輯單元406c‧‧‧算術邏輯單元406d‧‧‧算術邏輯單元408‧‧‧純量處理單元410‧‧‧純量記憶體416‧‧‧經擴展一元管線420‧‧‧隨機數產生器422‧‧‧轉置單元424‧‧‧單元/歸約單元426‧‧‧單元/排列單元440‧‧‧向量處理單元/向量暫存器/串列化器442a‧‧‧解串列化442b‧‧‧解串列化446‧‧‧向量記憶體448‧‧‧晶片間互連件/矩陣乘法單元/晶片間連接件450‧‧‧主機電腦/主機介面452a‧‧‧稀疏運算核心452b‧‧‧稀疏運算核心456a‧‧‧高頻寬記憶體堆疊456b‧‧‧高頻寬記憶體堆疊456c‧‧‧高頻寬記憶體堆疊456d‧‧‧高頻寬記憶體堆疊480a‧‧‧運算核心480b‧‧‧運算核心
圖1圖解說明連接特殊用途硬體晶片之一實例性集合體之高速度連接之一實例性拓撲,該等特殊用途硬體晶片在一板上以一圓形拓撲連接。 圖2展示用於訓練一神經網路之一實例性特殊用途硬體晶片之一高階圖式。 圖3展示運算核心之一高階實例。 圖4展示針對神經網路執行訓練之一晶片之一更詳細圖式。 在各種圖式中,相似元件符號及名稱指示相似元件。
300‧‧‧運算核心
303‧‧‧純量處理器/處理器
304‧‧‧純量記憶體/快速私有純量記憶體
306‧‧‧向量處理器/處理器
308‧‧‧向量記憶體
310‧‧‧高頻寬記憶體
313‧‧‧矩陣乘法單元/經擴展向量單元
314‧‧‧轉置單元/經擴展向量單元
316‧‧‧歸約與排列單元/經擴展向量單元
Claims (12)
- 一種用於訓練神經網路之特殊用途硬體晶片,該特殊用途硬體晶片包括: 一純量處理器,其經組態以控制該特殊用途硬體晶片之運算操作; 一向量處理器,其經組態以具有向量處理單元之一2維陣列,該等向量處理單元全部以一單指令多資料方式執行同一指令及透過該向量處理器之載入及儲存指令彼此通信;及 一矩陣乘法單元,其耦合至該向量處理器、經組態以使至少一個二維矩陣與一第二一維向量或二維矩陣相乘以便獲得一乘法結果。
- 如請求項1之特殊用途硬體晶片,其進一步包括: 一向量記憶體,其經組態以將快速私有記憶體提供至該向量處理器。
- 如請求項1之特殊用途硬體晶片,其進一步包括: 一純量記憶體,其經組態以將快速私有記憶體提供至該純量處理器。
- 如請求項1之特殊用途硬體晶片,其進一步包括: 一轉置單元,其經組態以執行一矩陣之一轉置操作。
- 如請求項1之特殊用途硬體晶片,其進一步包括: 一歸約與排列單元,其經組態以對數字執行一歸約且在向量陣列之不同通道當中排列該等數字。
- 如請求項1之特殊用途硬體晶片,其進一步包括: 一高頻寬記憶體,其經組態以儲存該特殊用途硬體晶片之資料。
- 如請求項1之特殊用途硬體晶片,其進一步包括一稀疏運算核心。
- 如請求項1之特殊用途硬體晶片,其進一步包括: 一介面;及 一晶片間互連件,其將該介面或該特殊用途硬體晶片上之資源連接至其他特殊用途硬體晶片或資源。
- 如請求項8之特殊用途硬體晶片,其進一步包括: 複數個高頻寬記憶體;其中該晶片間互連件將該介面及該高頻寬記憶體連接至其他特殊用途硬體晶片。
- 如請求項8之特殊用途硬體晶片,其中該介面係至一主機電腦之一主機介面。
- 如請求項8之特殊用途硬體晶片,其中該介面係至主機電腦之一網路之一標準網路介面。
- 如請求項8之特殊用途硬體晶片,其包括: 一純量記憶體(304)、一向量記憶體(308)、該純量處理器(303)、該向量處理器(306)及該矩陣乘法單元,其中該純量處理器執行VLIW指令提取/執行迴圈且控制該特殊用途硬體晶片,其中在提取及解碼一指令束之後,該純量處理器自身僅使用該純量處理器及該純量記憶體之多個多位元暫存器執行存在於該束之純量槽中之該等指令,其中純量指令集包含在位址計算中使用之算術運算、載入/儲存指令及分支指令,且其中剩餘指令槽編碼用於該向量處理器(306)及該矩陣乘法單元之指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762507771P | 2017-05-17 | 2017-05-17 | |
US62/507,771 | 2017-05-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201908965A TW201908965A (zh) | 2019-03-01 |
TWI728247B true TWI728247B (zh) | 2021-05-21 |
Family
ID=62784215
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110117076A TWI769810B (zh) | 2017-05-17 | 2018-05-17 | 特殊用途神經網路訓練晶片 |
TW107116869A TWI728247B (zh) | 2017-05-17 | 2018-05-17 | 特殊用途神經網路訓練晶片 |
TW111120440A TWI812254B (zh) | 2017-05-17 | 2018-05-17 | 用於訓練神經網路之方法、系統及非暫時性電腦可讀儲存媒體 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110117076A TWI769810B (zh) | 2017-05-17 | 2018-05-17 | 特殊用途神經網路訓練晶片 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111120440A TWI812254B (zh) | 2017-05-17 | 2018-05-17 | 用於訓練神經網路之方法、系統及非暫時性電腦可讀儲存媒體 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11275992B2 (zh) |
EP (3) | EP3568756B1 (zh) |
JP (3) | JP6938661B2 (zh) |
KR (4) | KR20240056801A (zh) |
CN (2) | CN116644790A (zh) |
DK (2) | DK3568756T3 (zh) |
FI (1) | FI4083789T3 (zh) |
TW (3) | TWI769810B (zh) |
WO (1) | WO2018213598A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853070B1 (en) * | 2017-10-23 | 2020-12-01 | Habana Labs Ltd. | Processor suspension buffer and instruction queue |
US11645358B2 (en) * | 2019-01-29 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Generation of executable files corresponding to neural network models |
US10997116B2 (en) * | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
KR102496734B1 (ko) * | 2019-10-22 | 2023-02-06 | 에스앤즈 주식회사 | 분산환경 패킷 전송 기반의 스트리밍 데이터 딥러닝 처리 가속화 시스템 및 이를 이용한 멀티 로케이션 멀티 스트리밍 이상상태 탐지 시스템 |
CN111047036B (zh) * | 2019-12-09 | 2023-11-14 | Oppo广东移动通信有限公司 | 神经网络处理器、芯片和电子设备 |
US11054998B1 (en) * | 2019-12-12 | 2021-07-06 | Facebook, Inc. | High bandwidth memory system with distributed request broadcasting masters |
US11755683B2 (en) | 2019-12-23 | 2023-09-12 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors (FAST) in machine learning |
US11462003B2 (en) | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US11797830B2 (en) | 2020-03-25 | 2023-10-24 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US12073310B2 (en) * | 2020-04-01 | 2024-08-27 | Microsoft Technology Licensing, Llc | Deep neural network accelerator with independent datapaths for simultaneous processing of different classes of operations |
CN113867788A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 一种计算装置、芯片、板卡、电子设备和计算方法 |
CN112148453A (zh) * | 2020-09-29 | 2020-12-29 | 深圳致星科技有限公司 | 用于隐私计算的计算芯片及网络计算系统 |
CN112416433B (zh) * | 2020-11-24 | 2023-01-17 | 中科寒武纪科技股份有限公司 | 一种数据处理装置、数据处理方法及相关产品 |
EP4012623A1 (en) * | 2020-12-10 | 2022-06-15 | Toyota Jidosha Kabushiki Kaisha | Efficient and stable training of a neural network in compressed form |
WO2022133623A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Accelerated scale-out performance of deep learning training workload with embedding tables |
CN112860318A (zh) * | 2021-01-29 | 2021-05-28 | 成都商汤科技有限公司 | 一种数据传输方法、芯片、设备和存储介质 |
EP4315089A1 (en) | 2021-03-29 | 2024-02-07 | Google LLC | On-chip interconnect for memory channel controllers |
US11782871B2 (en) | 2021-04-27 | 2023-10-10 | Microchip Technology Inc. | Method and apparatus for desynchronizing execution in a vector processor |
TWI808000B (zh) * | 2022-09-20 | 2023-07-01 | 創鑫智慧股份有限公司 | 矩陣裝置及其操作方法 |
CN115713103B (zh) * | 2022-11-24 | 2023-08-18 | 辉羲智能科技(上海)有限公司 | 片上-片间互连的神经网络芯片联合性能预测方法及系统 |
TWI830669B (zh) * | 2023-02-22 | 2024-01-21 | 旺宏電子股份有限公司 | 編碼方法及編碼電路 |
CN118227948B (zh) * | 2024-05-24 | 2024-08-06 | 北京壁仞科技开发有限公司 | 人工智能芯片、操作方法和机器可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544336A (en) * | 1991-03-19 | 1996-08-06 | Fujitsu Limited | Parallel data processing system which efficiently performs matrix and neurocomputer operations, in a negligible data transmission time |
EP0581828B1 (en) * | 1991-04-22 | 1997-01-22 | SUTHERLAND, John | Improvements in neural networks |
EP1569128B1 (en) * | 2003-12-09 | 2015-06-17 | Microsoft Technology Licensing, LLC | System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit |
JP5841071B2 (ja) * | 2010-01-29 | 2016-01-06 | 東京エレクトロン株式会社 | 半導体製造ツールを自己学習及び自己改善するための方法及びシステム |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5841071B2 (ja) | 1981-10-13 | 1983-09-09 | 東北電子産業株式会社 | 生体誘導加熱装置 |
US5872988A (en) * | 1992-06-17 | 1999-02-16 | U.S. Philips Corporation | Parallel data processing device having a concatenated data path between elementary processors |
US5423051A (en) * | 1992-09-24 | 1995-06-06 | International Business Machines Corporation | Execution unit with an integrated vector operation capability |
WO2002084451A2 (en) * | 2001-02-06 | 2002-10-24 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US7305540B1 (en) | 2001-12-31 | 2007-12-04 | Apple Inc. | Method and apparatus for data processing |
US20140164733A1 (en) | 2011-12-30 | 2014-06-12 | Ashish Jha | Transpose instruction |
US9785565B2 (en) * | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US9589443B2 (en) | 2014-09-02 | 2017-03-07 | At&T Intellectual Property I, L.P. | Method and apparatus for providing an emergency notification for an allergic reaction |
KR102277439B1 (ko) * | 2014-10-21 | 2021-07-14 | 삼성전자주식회사 | 재구성 가능 프로세서 및 그 동작 방법 |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10192162B2 (en) | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US20160378465A1 (en) * | 2015-06-23 | 2016-12-29 | Intel Corporation | Efficient sparse array handling in a processor |
GB2543554B (en) | 2015-10-22 | 2019-01-23 | Advanced Risc Mach Ltd | Handling exceptional conditions for vector arithmetic instruction |
US9904874B2 (en) * | 2015-11-05 | 2018-02-27 | Microsoft Technology Licensing, Llc | Hardware-efficient deep convolutional neural networks |
US9898441B2 (en) | 2016-02-05 | 2018-02-20 | Google Llc | Matrix processing apparatus |
CN107615389B (zh) * | 2016-02-25 | 2021-04-13 | 慧与发展有限责任合伙企业 | 忆阻乘法器件、用于复数乘法累加运算的方法及忆阻阵列 |
PL3812900T3 (pl) * | 2016-12-31 | 2024-04-08 | Intel Corporation | Systemy, sposoby i aparaty do obliczania heterogenicznego |
-
2018
- 2018-05-17 US US15/983,056 patent/US11275992B2/en active Active
- 2018-05-17 KR KR1020247013765A patent/KR20240056801A/ko active Application Filing
- 2018-05-17 EP EP18735433.7A patent/EP3568756B1/en active Active
- 2018-05-17 TW TW110117076A patent/TWI769810B/zh active
- 2018-05-17 KR KR1020217031994A patent/KR102481428B1/ko active IP Right Grant
- 2018-05-17 DK DK18735433.7T patent/DK3568756T3/da active
- 2018-05-17 KR KR1020227045015A patent/KR102661910B1/ko active IP Right Grant
- 2018-05-17 FI FIEP22171943.8T patent/FI4083789T3/fi active
- 2018-05-17 EP EP24163748.7A patent/EP4361832A3/en active Pending
- 2018-05-17 TW TW107116869A patent/TWI728247B/zh active
- 2018-05-17 EP EP22171943.8A patent/EP4083789B1/en active Active
- 2018-05-17 TW TW111120440A patent/TWI812254B/zh active
- 2018-05-17 CN CN202310655432.5A patent/CN116644790A/zh active Pending
- 2018-05-17 CN CN201880018006.8A patent/CN110622134B/zh active Active
- 2018-05-17 DK DK22171943.8T patent/DK4083789T3/da active
- 2018-05-17 JP JP2019549507A patent/JP6938661B2/ja active Active
- 2018-05-17 KR KR1020197026557A patent/KR102312264B1/ko active IP Right Grant
- 2018-05-17 WO PCT/US2018/033215 patent/WO2018213598A1/en unknown
-
2021
- 2021-09-01 JP JP2021142529A patent/JP7314217B2/ja active Active
-
2022
- 2022-03-14 US US17/694,598 patent/US20220261622A1/en active Pending
-
2023
- 2023-07-12 JP JP2023114361A patent/JP7561925B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544336A (en) * | 1991-03-19 | 1996-08-06 | Fujitsu Limited | Parallel data processing system which efficiently performs matrix and neurocomputer operations, in a negligible data transmission time |
EP0581828B1 (en) * | 1991-04-22 | 1997-01-22 | SUTHERLAND, John | Improvements in neural networks |
EP1569128B1 (en) * | 2003-12-09 | 2015-06-17 | Microsoft Technology Licensing, LLC | System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit |
JP5841071B2 (ja) * | 2010-01-29 | 2016-01-06 | 東京エレクトロン株式会社 | 半導体製造ツールを自己学習及び自己改善するための方法及びシステム |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI728247B (zh) | 特殊用途神經網路訓練晶片 | |
US11989258B2 (en) | Performing matrix multiplication in hardware | |
JP6929958B2 (ja) | 低レイテンシ行列乗算ユニット | |
TWI857742B (zh) | 用於訓練神經網路之方法、系統及非暫時性電腦可讀儲存媒體 |