TW202307739A - 基於記憶體內計算的機器學習加速器架構 - Google Patents
基於記憶體內計算的機器學習加速器架構 Download PDFInfo
- Publication number
- TW202307739A TW202307739A TW111123851A TW111123851A TW202307739A TW 202307739 A TW202307739 A TW 202307739A TW 111123851 A TW111123851 A TW 111123851A TW 111123851 A TW111123851 A TW 111123851A TW 202307739 A TW202307739 A TW 202307739A
- Authority
- TW
- Taiwan
- Prior art keywords
- mspus
- machine learning
- cim
- data
- circuit
- Prior art date
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 151
- 230000015654 memory Effects 0.000 title claims description 51
- 238000012545 processing Methods 0.000 claims abstract description 244
- 238000000034 method Methods 0.000 claims abstract description 111
- 230000008569 process Effects 0.000 claims abstract description 35
- 239000010410 layer Substances 0.000 claims description 83
- 239000000872 buffer Substances 0.000 claims description 70
- 238000012805 post-processing Methods 0.000 claims description 44
- 238000013527 convolutional neural network Methods 0.000 claims description 29
- 238000003062 neural network model Methods 0.000 claims description 24
- 230000000306 recurrent effect Effects 0.000 claims description 24
- 230000004913 activation Effects 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000011176 pooling Methods 0.000 claims description 11
- 230000006403 short-term memory Effects 0.000 claims description 8
- 230000003068 static effect Effects 0.000 claims description 8
- 239000002356 single layer Substances 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 4
- 239000013598 vector Substances 0.000 description 51
- 239000003990 capacitor Substances 0.000 description 40
- 238000003491 array Methods 0.000 description 29
- 238000013528 artificial neural network Methods 0.000 description 27
- 238000001994 activation Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 20
- 238000009825 accumulation Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 238000013467 fragmentation Methods 0.000 description 9
- 238000006062 fragmentation reaction Methods 0.000 description 9
- 238000012549 training Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 238000010606 normalization Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 5
- 238000003058 natural language processing Methods 0.000 description 5
- 230000001537 neural effect Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 241000288105 Grus Species 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 239000003292 glue Substances 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000037452 priming Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000007637 random forest analysis Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012421 spiking Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06N3/065—Analogue means
-
- 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/50—Adding; Subtracting
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06J—HYBRID COMPUTING ARRANGEMENTS
- G06J1/00—Hybrid computing arrangements
- G06J1/005—Hybrid computing arrangements for correlation; for convolution; for Z or Fourier Transform
-
- 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/044—Recurrent networks, e.g. Hopfield 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/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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/12—Analogue/digital converters
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Fuzzy Systems (AREA)
- Automation & Control Theory (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
- Stored Programmes (AREA)
- Microelectronics & Electronic Packaging (AREA)
Abstract
本案內容的某些態樣提供了用於利用機器學習任務加速器來處理機器學習模型資料的技術,包括:將機器學習任務加速器的一或多個訊號處理單元(MSPU)配置為處理機器學習模型;向一或多個經配置的MSPU提供模型輸入資料;使用一或多個經配置的MSPU,利用機器學習模型來處理模型輸入資料;及從一或多個經配置的MSPU接收輸出資料。
Description
本專利申請案主張於2021年6月25日提出申請的美國申請案第17/359,297號的優先權,該美國申請請被轉讓給本案的受讓人並且整體地經由引用的方式併入本文中。
本案內容的各態樣係關於用於執行機器學習任務的改進的架構,並且具體地,本案內容的各態樣係關於用於支援高級機器學習架構的基於記憶體內計算的架構。
機器學習通常是產生經訓練的模型(例如,人工神經網路、樹或其他結構)的程序,經訓練的模型表示對先驗已知的訓練資料集的廣義擬合。將經訓練的模型應用於新資料產生推斷,推斷可以用於獲得對新資料的洞察。在一些情況下,將模型應用於新資料被描述為對新資料「執行推斷」。
隨著機器學習的使用已經激增以實現各種機器學習(或人工智慧)任務,已經出現對於機器學習模型資料的更高效處理的需求。在一些情況下,可以使用專用硬體(諸如機器學習(或人工智慧)加速器)來增強處理系統的用以處理機器學習模型資料的能力。然而,這種硬體需要空間和功率,其在處理設備上並不總是可用的。例如,「邊緣處理」設備(諸如行動設備、始終線上設備、物聯網路(IoT)設備等)必須對處理能力與功率和封裝約束進行平衡。因此,正在考慮處理系統的其他態樣來處理機器學習模型資料。
記憶體設備是處理系統的另一態樣的一個實例,其可以被利用以用於經由所謂的記憶體內計算(CIM)程序來執行對機器學習模型資料的處理。遺憾的是,傳統的CIM程序可能無法執行對高級模型架構(諸如循環神經網路(RNN)、注意力模型(例如,基於注意力的神經網路)、來自變換器(BERT)模型的雙向編碼器表示等)的所有態樣的處理。這些高級模型架構在許多技術領域皆有重要的應用,包括醫療保健、自然語言處理、語音辨識、自動駕駛汽車、推薦系統以及其他應用。
因此,需要用於在更廣泛的機器學習模型架構的記憶體內執行計算的系統和方法。
某些態樣提供了一種機器學習任務加速器,包括:一或多個混合訊號處理單元(MSPU),該一或多個MSPU之每一者相應MSPU包括:記憶體內計算(CIM)電路;本端啟動緩衝器,其連接到該CIM電路並且被配置為儲存啟動資料以供該CIM電路處理;一或多個類比數位轉換器(ADC),其連接到該CIM電路並且被配置為將來自該CIM電路的類比計算結果訊號轉換為數位計算結果資料;第一非線性運算電路,其連接到該一或多個ADC的一或多個輸出並且被配置為對該數位計算結果資料執行非線性處理;硬體定序器電路,其被配置為執行從主機系統接收的指令並且控制該MSPU的操作;及本端直接記憶體存取(DMA)控制器,其被配置為控制對共享啟動緩衝器的存取;數位乘法和累加(DMAC)電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行乘法和累加運算;數位逐元素乘法和累加電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行逐元素乘法和逐元素累加運算;及第二非線性運算電路,其連接到該一或多個MSPU。
進一步的態樣提供了一種利用機器學習任務加速器來處理機器學習模型資料的方法,包括:將該機器學習任務加速器的一或多個混合訊號處理單元(MSPU)配置為處理機器學習模型;向一或多個經配置的MSPU提供模型輸入資料;使用該一或多個經配置的MSPU,利用該機器學習模型來處理該模型輸入資料;及從該一或多個配置的MSPU接收輸出資料。
其他態樣提供了:被配置為執行上述方法以及本文描述的方法的處理系統;包括指令的非暫時性電腦可讀取媒體,該等指令在由處理系統的一或多個處理器執行時,使得該處理系統執行上述方法以及本文描述的方法;體現在電腦可讀取儲存媒體上的電腦程式產品,其包括用於執行上述方法以及本文進一步描述的方法的代碼;及處理系統,其包括用於執行上述方法以及本文進一步描述的方法的單元。
以下描述和相關附圖詳細闡述了一或多個實施例的某些說明性特徵。
本案內容的各態樣提供了用於支援高級機器學習架構的基於記憶體內計算的架構。具體而言,本文描述的實施例提供了基於記憶體內計算(CIM)處理能力的動態可配置且靈活的機器學習/人工智慧加速器。
本文描述的實施例經由在加速器中實現廣泛的處理能力來支援在獨立的基於CIM的加速器中的高級機器學習架構,包括例如對通用矩陣到矩陣乘法(GEMM)、廣義矩陣向量乘法(GEMV)、乘法、加法、減法、非線性運算和其他修改操作的支援。非線性運算可以包括例如sigmoid或邏輯函數、TanH或雙曲正切函數、整流線性單元(ReLU)、帶洩露ReLU、參數化ReLU、Softmax和swish,舉幾個實例。其他修改操作可以包括例如最大池化、平均池化、批正規化、縮放、移位、相加、相減、閘控和釋放(dropout),舉幾個實例。
本文描述的機器學習架構的處理能力可以用於實現各種機器學習架構以及其相關處理功能,包括迴旋神經網路、循環神經網路、遞迴神經網路、長短期記憶(LSTM)和基於閘控循環單元(GRU)的神經網路、變換器、編碼器、解碼器、變分自動編碼器、跳躍網路、基於注意力的神經網路、來自變換器(BERT)模型的雙向編碼器表示、解壓縮、稀疏感知處理、尖峰神經網路模型、二值化神經網路(BNN)模型以及其他網路。例如,BNN模型是深度神經網路,其針對啟動和權重使用二進位值,而不是全精度值,這允許使用按位元運算執行計算。本文描述的基於CIM的機器學習模型加速器可以極其高效地執行按位元運算。
這些處理能力可以用於支援廣泛的用例。例如,對於高級機器學習模型,可以處理音訊資料以支援音訊語音增強、音訊上下文/事件偵測、自動語音辨識(ASR)、自然語言處理(NLP)、語音編碼/解碼、變換等。作為另一實例,高級機器學習模型可以處理影像和視訊資料以支援對象辨識(例如,面部、地標等)、對象偵測和追蹤(例如,用於自主和半自主車輛)、文字辨識、高動態範圍視訊編碼等。進一步的實例包括使用者驗證、機器翻譯(MT)、文字到語音(TTS)、基於機器學習的回聲消除和雜訊抑制以及聲學事件偵測(AED)。值得注意的是,這些僅是幾個實例,並且存在許多其他實例。
習知的CIM架構通常不能支援用於高級機器學習架構的全系列的機器學習操作(諸如在深度神經網路中實現的機器學習操作)。因此,儘管CIM處理可以從主機處理系統的其他部件中卸載處理,但是仍然存在外部依賴關係(即在CIM部件外部),這些依賴關係需要跨資料匯流排將資料移動到另一處理器,並且從而引發功率和時延處理懲罰。例如,某些非線性運算(如Softmax)可能需要依賴於在CIM處理部件外部的DSP,這降低了在CIM部件中本端處理的許多益處。
經由在基於CIM的加速器內整合對於支援高級機器學習架構所必要的功能能力,可以在處理系統中將CIM的益處最大化。例如,與使用經由主機系統資料匯流排共享資料的多個加速部件的處理系統相比,可以有益地減少時延和功率使用。此外,可以降低用於加速任務的主機處理系統記憶體利用率,並且因此其可供其他任務使用。進一步地,可以在主機處理系統內實現更高程度的處理並行化。
實例的記憶體內計算(CIM)陣列
圖1圖示了根據本案內容的各態樣的被配置用於執行機器學習模型計算的記憶體內計算(CIM)電路100(其可以被稱為CIM陣列)的實例。在該實例中,CIM陣列100被配置為使用用於人工神經網路的混合類比/數位運算來模擬MAC運算。因此,如本文所使用的,術語乘法和加法可以指此類模擬運算。CIM陣列100可以用於實現本文描述的記憶體內計算方法的各態樣。
在所圖示的實施例中,CIM陣列100包括預充電字線(PCWL)125a、125b和125c(統稱為125)、讀字線(RWL)127a、127b和127c(統稱為127)、類比數位轉換器(ADC)110a、110b和110c(統稱為110)、數位處理單元113、位元線118a、118b和118c(統稱為118)、PMOS電晶體111a-111i(統稱為111)、NMOS電晶體113a-113i(統稱為113)和電容器123a-123i(統稱為123)。
與神經網路層相關聯的權重可以被儲存在CIM陣列100的靜態隨機存取記憶體(SRAM)位元單元中。在該實例中,二進位權重被示為在CIM陣列100的SRAM位元單元105a-105i中。在PCWL 125a-c上提供輸入啟動(例如,可以是輸入向量的輸入值)。
乘法發生在CIM陣列100的與位元線相關聯的每個位元單元105a-105i中,並且所有位元單元乘法結果的累加(總和)發生在用於一列的相同位元線上。每個位元單元105a-105i中的乘法具有與相應啟動和權重的AND運算等效的運算形式,其中結果被儲存為在相應電容器123上的電荷。例如,僅在啟動為1(此處,因為使用了PMOS,所以針對為1的啟動,PCWL為零)並且權重為1的情況下,才產生乘積1以及因此在電容器123上的電荷。然而,在其他實施例中,可以在XNOR運算模式下配設定元單元。值得注意的是,位元單元105a-105i僅是一個實例,並且可以在CIM陣列中使用其他類型的位元單元。
例如,在累加階段,RWL 127被切換為高位準,使得電容器123上的任何電荷(其是基於相應的位元單元(權重)和PCWL(啟動)值的)可以在相應的位元線118上累加。隨後,所累加的電荷的電壓值由ADC 110轉換為數位值(其中例如,輸出值可以是指示總電荷是否大於參考電壓的二進位值)。這些數位值(輸出)可以作為輸入提供給機器學習模型的另一態樣,諸如隨後的層。
當在預充電字線(PCWL)125a、125b和125c上的啟動為例如1、0、1時,則位元線118a-c的總和分別對應於0+0+1=1、1+0+0=1和1+0+1=2。ADC 110a、110b和110c的輸出被傳遞到數位處理單元113以進行進一步處理。例如,若CIM 100正在處理多位元權重值,則可以對ADC 110的數位輸出求和以產生最終輸出。
示例性3x3 CIM電路100可以用於例如針對三元素核心(或濾波器)執行高效的三通道迴旋,其中每個核心的權重對應於用於三列中的每一列的元素,使得對於給定的三元素接收場(或輸入資料區塊),並行地計算用於三個通道之每一者通道的輸出。
值得注意的是,儘管圖1描述了使用SRAM單元的CIM實例,但是亦可以使用其他記憶體類型。例如,動態隨機存取記憶體(DRAM)、磁阻式隨機存取記憶體(MRAM)和電阻式隨機存取記憶體(ReRAM或RRAM)同樣可以在其他實施例中使用。
實例CIM陣列位元單元
圖2A圖示了示例性位元單元200的額外細節。
圖2A的各態樣可以是示例性的或以其他方式與圖1的各態樣相關。具體地,位元線221類似於位元線118a,電容器223類似於圖1的電容器123a,讀字線227類似於圖1的讀字線127a,預充電字線225類似於圖1的預充電字線125a,PMOS電晶體211類似於圖1的PMOS電晶體111a,並且NMOS電晶體213類似於圖1的NMOS電晶體113。
位元單元200包括靜態隨機存取記憶體(SRAM)單元201(其可以代表圖1的SRAM位元單元105a)、以及電晶體211(例如,PMOS電晶體)、電晶體213(例如,NMOS電晶體)和耦合到地的電容器223。儘管PMOS晶體管用於電晶體211,但是可以使用其他電晶體(例如,NMOS電晶體)代替PMOS電晶體,其中對其各自的控制訊號進行相應的調整(例如,反轉)。這同樣適用於本文描述的其他電晶體。根據本案內容的各態樣,包括額外電晶體211和213以實現記憶體內計算陣列。在一個態樣中,SRAM單元201是習知的六電晶體(6T)SRAM單元。
對在位單元中的權重的程式設計可以針對多個啟動執行一次。例如,在運算中,SRAM單元201在節點217和219處經由寫字線(WWL)216僅接收一位元資訊。例如,在寫期間(當WWL 216為高位準時),若寫位元線(WBL)229為高位準(例如,「1」),則節點217被設置為高位準,並且節點219被設置為低位準(例如,「0」);或者,若WBL 229為低位準,則節點217被設置為低位準,並且節點219被設置為高位準。相反,在寫期間(當WWL 216高位準時),若寫位元條線(WBBL)231為高位準,則節點217被設置為低位準,並且節點219被設置為高位準;或者,若WBBL 229為低位準,則節點217被設置為高位準,並且節點219被設置為低位準。
跟隨在對權重的程式設計之後可以是啟動輸入和乘法步驟,以根據相應乘積對電容器充電。例如,電晶體211經由記憶體內計算陣列的預充電字線(PCWL)225由啟動訊號來啟動,以執行乘法步驟。隨後,電晶體213經由記憶體內計算陣列的另一字線(例如,讀字線(RWL)227)由訊號來啟動,以將來自位元單元200的乘法值與陣列的其他位元單元進行累加,諸如上文關於圖1所描述的。
若節點217為「0」(例如,當所儲存的權重值為「0」時),則,若低PCWL指示在電晶體211的閘極處的啟動「1」,則電容器223將不被充電。因此,不向位元線221提供電荷。然而,若對應於權重值的節點217是「1」,並且PCWL被設置為低位準(例如,當啟動輸入為高位準時)(其將PMOS電晶體211接通,PMOS電晶體211充當短路),則允許對電容器223進行充電。在電容器223被充電之後,電晶體211被關斷,因此電荷被儲存在電容器223中。為了將電荷從電容器223移動到位元線221,經由RWL 227接通NMOS電晶體213,從而使得NMOS電晶體213充當短路。
表1圖示根據AND運算設置的記憶體內計算陣列操作(其諸如可以由圖2A中的位元單元200來實現)的實例。
表1:位元單元AND運算
啟動 | PCWL | 單元節點(權重) | 電容器節點 |
1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
0 | 1 | 0 | 0 |
表1的第一列(啟動)包括傳入啟動訊號的可能值。
表1的第二列(PCWL)包括PCWL值,其啟動被設計為實現根據本案內容的各態樣的記憶體內計算功能的電晶體。由於該實例中的電晶體211是PMOS電晶體,因此PCWL值是啟動值的反值。例如,記憶體內計算陣列包括電晶體211,其經由預充電字線(PCWL)225由啟動訊號(PCWL訊號)來啟動。
表1的第三列(單元節點)包括被儲存在SRAM單元節點中的權重值(例如,對應於權重張量中的權重),可以在迴旋運算中使用。
表1的第四列(電容器節點)圖示所產生的乘積,其將作為電荷儲存在電容器上。例如,電荷可以被儲存在電容器223的節點或電容器123a-123i之一的節點處。當電晶體213被啟動時,來自電容器223的電荷移動到位元線221。例如,參考電晶體211,當單元節點217處的權重為「1」(例如,高電壓)並且輸入啟動為「1」(因此PCWL為「0」)時,對電容器223進行充電(例如,電容器的節點為「1」)。對於所有其他組合,電容器節點將具有值0。
圖2B圖示了另一示例性位元單元250的額外細節。
位元單元250與圖2A中的位元單元200的不同,主要在於包括耦合到額外電晶體254的額外預充電字線252。預充電字線252允許基於其狀態將位元單元250置於AND運算模式或XNOR運算模式下。例如,當預充電字線252處於高位準時,位元單元250在AND模式下操作,否則其在XNOR模式下動作。
表2圖示類似於表1的記憶體內計算陣列操作(諸如其可以由圖2B中的位元單元250實現)的實例,除了根據XNOR運算設置以外。
表2:位元單元XNOR運算
啟動 | PCWL1 | PCWL2 | 單元節點(權重) | 電容器節點 |
1 | 0 | 1 | 1 | 1 |
1 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 1 |
表2的第一列(啟動)包括傳入啟動訊號的可能值。
表2的第二列(PCWL1)包括PCWL1值,其啟動被設計為實現根據本案內容的各態樣的記憶體內計算功能的電晶體。此處同樣地,電晶體211是PMOS電晶體,並且PCWL1值是啟動值的反值。
表2的第三列(PCWL2)包括PCWL2值,其啟動被設計為實現根據本案內容的各態樣的記憶體內計算功能的另外的電晶體。
表2的第四列(單元節點)包括被儲存在SRAM單元節點中的可以在迴旋運算中使用的權重值,例如,對應於權重張量中的權重。
表2的第五列(電容器節點)圖示所產生的乘積,其將作為電荷儲存在電容器(諸如電容器223)上。
實例CIM陣列操作時序圖
圖3圖示了在CIM陣列操作期間的各種訊號的實例時序圖300。
在所圖示的實例中,時序圖300的第一行圖示變低的預充電字線PCWL(例如,圖1的125a或圖2A的225)。在該實例中,低PCWL指示為「1」的啟動。當PCWL是低位準時,PMOS電晶體接通,這允許對電容器進行充電(若權重為「1」)。第二行圖示讀字線RWL(例如,圖1的讀字線127a或圖2A的227)。第三行圖示讀位元線RBL(例如,圖1的118或圖2A的221),第四行圖示類比數位轉換器(ADC)讀出訊號,並且第五行圖示重定訊號。
例如,參考圖2A的電晶體211,當讀字線RWL為高位準時,來自電容器223的電荷逐漸傳遞到讀位元線RBL。
在數位權重累加模式下將總電荷/電流/電壓(例如,圖1的103或從圖2A的位元線221求和的電荷)傳遞到比較器或ADC(例如,圖1的ADC 110a),其中總電荷被轉換為數位輸出(例如,數位訊號/數位)。替代地,多列位元線輸出可以在模擬域中求和,並且隨後被發送到ADC。電荷的求和可以發生在時序圖300的累加區域中,並且來自ADC的讀出可以與時序圖300的ADC讀出區域相關聯。在獲得ADC讀出之後,重定訊號對所有電容器(例如,電容器123a-123i)放電,以準備處理下一啟動輸入集合。
用於支援高級機器學習架構的基於CIM的機器學習任務加速器架構
圖4圖示了根據本文描述的各態樣的基於CIM的機器學習任務加速器架構400的實例。
在所圖示的實例中,加速器402包括連接到主機處理系統資料匯流排401的加速器資料匯流排426,主機處理系統資料匯流排401將加速器402連接到其他主機處理系統部件(諸如在圖5的實例中描述的部件和其他部件)。
在所圖示的實例中,加速器402包括複數個訊號處理單元(SPU),其包括被配置為執行例如機器學習模型資料的類比和數位處理的混合訊號處理單元(MSPU)404A以及被配置為執行例如機器學習模型資料的數位處理的數位訊號處理單元(DSPU)404B。應注意,MSPU 404A包括CIM陣列416和CIM FSM 414,其是類比訊號處理部件,因此使MSPU成為「混合訊號」(數位和類比訊號)處理單元,而DSPU 404B不包括CIM陣列或CIM FSM,並且因此是數位域訊號處理單元。儘管在圖4的加速器402中圖示了單個MSPU 404A和單個DSPU 404B,但是這僅為了簡單起見。加速器402可以具有服從其他設計約束(諸如功率、空間等)的任何數量的MSPU和DSPU。例如,加速器可以具有一或多個MSPU、一或多個DSPU,或MSPU和DSPU的某種混合。
在所圖示的實例中,MSPU 404A包括連接到加速器資料匯流排426的MSPU資料匯流排424,加速器資料匯流排426經由主機處理系統資料匯流排401提供到加速器402的其他部件以及到主機處理系統的其他部件的資料連接。
MSPU 404A亦包括硬體定序器406,其被配置為基於被儲存在定序器記憶體408中的指令來控制MSPU 404A的計算部件的操作序列,從而使其成為靈活的定序器塊。例如,硬體定序器406可以控制啟動緩衝器410、CIM有限狀態機414、CIM陣列416、數位後處理(DPP)塊418和非線性運算塊420的動作。序列器指令可以是經由主機處理系統資料匯流排401從主機處理系統接收的,並且在DMA 422的控制下,經由加速器資料匯流排426和MSPU資料匯流排424被儲存在定序器記憶體408中。
在替代實施例中,定序器406可以由固定功能硬體有限狀態機代替,該固定功能硬體有限狀態機不需要被儲存在定序器記憶體408中的指令,並且因此在此類實施例中同樣可以省略定序器記憶體408。
進一步地,在另一替代實施例中,與該圖示的實例中的特定於SPU的定序器和DMA相比,加速器402可以包括與多個SPU共享的定序器和DMA。
MSPU 404A亦包括啟動緩衝器410,其被配置為儲存啟動資料以供CIM陣列416處理。啟動資料通常可以包括輸入資料(例如,預啟動資料)和用於處理輸入資料的權重資料。在一些實施例中,啟動緩衝器410可以支援滾動處理或指令,以便在後續迴旋之間對資料進行重新排序。在一些實施例中,啟動緩衝器410可以被稱為「L1」或「本端」啟動緩衝器。
在一些實施例中,可以在啟動緩衝器410與CIM陣列416之間包括膠連邏輯(未圖示),以便修改啟動資料以供CIM陣列416處理。例如,膠連邏輯可以經由在經由壓縮方案指示的位置處向CIM注入零值來對經壓縮的啟動及/或權重資料進行解壓縮(例如,如在經壓縮的權重格式化的情況下)。
MSPU 404A亦包括直接記憶體存取(DMA)控制器422,其被配置為控制經由MSPU資料匯流排424將啟動資料載入到MSPU啟動緩衝器410中。在一些情況下,將啟動資料從加速器啟動緩衝器428載入,加速器啟動緩衝器428可以被稱為「L2」或「共享」啟動緩衝器,並且其通常可以被配置為儲存來自每個SPU(例如,在該實例中為404A-B)的中間輸出。在該實施例中,與存取在主機處理系統的遠端存放器上的資料相比,啟動緩衝器428常駐在加速器資料匯流排426上,以減少任何SPU(例如,MSPU或DSPU,諸如分別為404A和404B)的存取能量成本。
MSPU 404A亦包括CIM有限狀態機(FSM)414,其被配置為控制從啟動緩衝器410向CIM陣列416寫入權重和啟動資料。CIM FSM 414可以包括多種模式,諸如權重寫模式(例如,將權重資料寫入CIM陣列416)、啟動寫模式和啟動讀模式。
MSPU 404A亦包括CIM陣列416,其在一些實施例中可以如關於圖1-圖3所描述地配置。在一些實施例中,CIM陣列416可以包括
個節點(或單元)的陣列,其被配置為利用被儲存在每個節點中的權重來處理輸入資料。在一些實施例中,CIM陣列416可以包括節點的多個陣列(或子陣列或分片)。
MSPU 404A亦包括數位後處理(DPP)塊418,其可以包括各種元件。例如,數位後處理塊418可以包括一或多個類比數位轉換器,諸如上文關於圖1描述的ADC 110a。數位後處理塊418亦可以包括可以在經由非線性運算(諸如在非線性運算塊420中)處理輸出之前修改來自類比數位轉換器的輸出的一或多個訊號修改器,諸如增益塊、偏置塊、移位塊、池化塊,舉幾個實例。進一步地,數位後處理塊418可以被配置為執行類比數位轉換器校準。數位後處理塊418亦可以被配置為執行輸出位元寬選擇,以及處理來自另一層的輸出的輸入以用於殘差連接架構。
MSPU 404A亦包括非線性運算塊420,其被配置為對來自數位後處理塊418的輸出執行非線性運算。例如,非線性運算塊420可以被配置為執行ReLU、ReLU6、Sigmoid、TanH、Softmax和其他非線性函數。在一些實施例中,非線性運算塊420可以至少包括立方近似器,並且增益可以被配置為執行可以近似到並且包括立方近似的任何非線性運算。通常,非線性運算塊420可以被配置用於經由被儲存在硬體暫存器(諸如暫存器442)中的係數的運算。
儘管未在圖4中圖示,但是在一些實施例中,非線性運算塊420亦可以從另一層接收循環或殘差輸入,其可以在由塊420執行非線性運算之前被添加到輸入。作為另一替代方式,可以將這種循環或殘差輸入添加到非線性運算塊420的輸出。可以基於正由MSPU(諸如MSPU 404A)處理的模型架構的類型來配置是將這種輸入添加到非線性運算塊420的輸入還是輸出。
在一些實施例中,非線性運算塊420包括複數個非線性運運算元塊(未圖示)。例如,非線性運運算元塊可以被配置為對在CIM陣列406中的全部列的子集(諸如8、16、32、64或其他數量的列)執行非線性運算。
在一些實施例中,非線性運算塊420是諸如在圖4中所圖示的數位後處理塊418的子塊。在此類實施例中,如上所論述的,關於循環或殘差輸入,相同的一般配置是可能的。通常,本文中描述的具有單獨非線性運算塊的實例亦可以使用作為數位後處理塊的子塊的非線性運算塊。
在一些情況下,非線性運算塊420的輸出可以被儲存在加速器啟動緩衝器428中(例如,經由MSPU資料匯流排424和加速器資料匯流排426)作為中間輸出,該中間輸出隨後可以由一或多個其他MSPU用於進一步處理。隨後,可以經由MSPU DMA(例如,422)取回中間啟動資料並且將其載入到MSPU啟動緩衝器(例如,410)中來發起進一步的處理。
DSPU 404B包括數位乘法和累加(DMAC)塊440,而不是CIM陣列(例如,MSPU 404A中的406)。DMAC塊440通常可以包括一或多個數位MAC單元或電路(例如,其陣列)。在此類實施例中,數位後處理塊418可以省略任何類比數位轉換器,因為DMAC處理將已經在數位域中。
儘管在圖4中沒有圖示,但是進一步的實施例可以包括在單個MSPU內具有CIM陣列(例如,416)和DMAC塊(例如,440)兩者的MSPU。
如前述,圖4圖示了其中加速器402包括兩個並行SPU(例如,MSPU 404A和DSPU 404B)的實施例,但是在其他實施例中,可以包括其他數量的SPU。在一些情況下,SPU的數量可以基於意欲由加速器402支援的機器學習架構的類型、用於加速器402的目標效能度量等來決定。
MSPU 404A和DSPU 404B各自連接到暫存器442,暫存器442實現在各種MSPU及/或DSPU(通常為訊號處理單元(SPU))之間的資料通訊和運算。在一些實施例中,暫存器442包括鎖定狀態暫存器,其確保具有資料依賴性的多個SPU在資料被其他SPU消耗之前不會改寫被儲存在緩衝器(例如,L2啟動緩衝器428)中的資料。在一些實施例中,每個SPU(例如,404A-B)具有對於其自身定序器(例如,406)本端的暫存器,其對於其他SPU的定序器是不可見的。因此,暫存器442提供了用於多個SPU與資料串流依賴性併發地執行的高效機制,並且提供了對基於匯流排的控制的資料高效替代方式。
在所圖示的實施例中,加速器402亦包括共享處理部件430,在該實例中,共享處理部件430包括逐元素MAC 432、非線性運算塊434、數位MAC(DMAC)436和分片控制部件438。在一些情況下,來自MSPU或DSPU的輸出被儲存在啟動緩衝器428中,並且隨後由共享處理部件430中的一或多個部件處理。在一些實施例中,共享處理部件430中的一或多個部件可以由單獨的控制單元(例如,微控制器或MCU)、CPU或DSP(諸如在圖5中所圖示的)、定序器或有限狀態機來控制,舉幾個選項。
逐元素MAC 432被配置為對傳入的多元素資料(諸如向量、矩陣、張量等)執行逐元素乘法和累加運算。與採用多元素輸入(例如,向量)並且輸出單個值(例如,標量)的標準MAC不同,逐元素運算保留原始資料格式。逐元素運算對於各種類型的高級機器學習架構是必要的,如下文更詳細地描述的。在一些實施例中,經由在陣列中以對角方式儲存被乘數,可以在CIM陣列416內另外或替代地實現逐元素乘法。
非線性運算塊434被配置為對來自MSPU 404A和DSPU 404B的輸出執行非線性運算,諸如上文關於非線性操作塊420描述的操作。在一些實施例中,非線性運算塊434可以被配置為基於正由加速器402處理的機器學習架構的類型來支援特定的非線性運算。
數位MAC(DMAC)塊436被配置為對來自MSPU的輸出執行數位乘法和累加運算。例如,在諸如404A的MSPU不包括DMAC塊的情況下,可以由DMAC塊436將MSPU的輸出處理作為在加速器402內的共享資源。在一些情況下,來自MSPU的輸出被儲存在啟動緩衝器428中,並且隨後由DMAC塊436處理。
分片控制部件438被配置為控制跨多個CIM陣列(諸如複數個MSPU中的CIM陣列)的資料的分片。例如,在要由MSPU處理的輸入資料大於在MSPU中的CIM陣列的情況下,分片控制部件438可以採取動作以對多個MSPU的跨多個CIM陣列的輸入(例如,權重矩陣和預啟動資料)進行分片。進一步地,分片控制部件438被配置為從MSPU接收部分結果,並且將其組合成最終結果或輸出。在一些情況下,分片控制部件438可以利用另一共享處理部件(諸如DMAC 436)來對結果進行累加。關於圖15描述了分片的實例。
通常,在圖4中圖示的各種塊可以被實現為積體電路。
包括基於CIM的加速器502的實例主機處理系統,
圖5圖示了包括基於CIM的加速器502(諸如關於圖4描述的加速器402)的主機處理系統500的實例態樣。
值得注意的是,儘管能夠獨立地支援用於高級機器學習架構的運算,但是基於CIM的加速器502亦可以與附接到系統匯流排504的其他處理器和加速器協調,諸如中央處理器(CPU)506、數位訊號處理器(DSP)508、神經處理單元(NPU)510、自我調整濾波模組(AF)512、快速傅立葉轉換模組(FFT)514、系統記憶體516(例如,DRAM或SRAM)和直接記憶體存取(DMA)控制器518。
例如,基於CIM的加速器502可以處理完整的神經網路模型或模型的一部分(例如,一層、若干層、乘法和累加(MAC)運算或層內的非線性運算)。在一些情況下,基於CIM的加速器502可以從在主機處理系統500中的其他處理器/加速器接收要處理的指令和資料。
例如,圖5圖示CPU 506向基於CIM的加速器502發送機器學習任務資料和處理指示(例如,模型資料和輸入資料),其隨後由基於CIM的加速器502進行處理,並且以機器學習任務結果的形式提供回系統匯流排504。結果可以由CPU 506或主機處理系統500的其他態樣(諸如其他處理器或加速器)消耗,或者被儲存在記憶體中(諸如主機系統記憶體516)。
基於CIM的加速器對基於CNN的機器學習架構的支援
圖6圖示了包括混合訊號處理單元(MSPU)604的加速器602的實例,MSPU 604被配置為執行對迴旋神經網路(CNN)模型資料的處理。MSPU 604可以是如關於圖4中的MSPU 404A所描述的MSPU的實例。
應注意,與圖4中的加速器402相比,為了清楚起見,省略了加速器602的各個態樣。例如,移除了MSPU資料匯流排,使得可以在MSPU 604的各個態樣之間圖示功能資料串流。這些不同的資料串流通常可以經由MSPU資料匯流排(諸如關於圖4描述的424)來實現。
如所圖示的,主機處理系統可以經由主機處理系統資料匯流排601向加速器602提供任務輸入資料,諸如機器學習模型任務資料,其可以包括模型資料(例如,權重、偏置和其他參數)和將由模型處理的輸入資料。任務輸入資料可以最初被儲存在啟動緩衝器628(例如,L2緩衝器)中。
隨後,DMA 622可以經由加速器資料匯流排626從啟動緩衝器628中取回層輸入資料,並且將資料儲存在加速器啟動緩衝器610(例如,L1緩衝器)中。
啟動緩衝器610隨後將層輸入資料提供給CIM陣列616以進行處理,層輸入資料可以包括權重和層輸入資料(例如,預啟動資料或中間啟動資料)。在迴旋神經網路的背景下,該層輸入資料通常可以包括用於迴旋層以及全連接層的層輸入資料。
CIM有限狀態機614可以控制CIM陣列616的模式,使得可以將權重資料寫入例如CIM陣列616的列。例如,在迴旋神經網路層的背景下,迴旋核心濾波器的每個通道可以被載入到CIM陣列616的具有維度濾波器寬度x濾波器高度x濾波器深度(其中濾波器的整體維度是濾波器寬度x濾波器高度x濾波器深度x通道數量)的單個列上。因此,例如,在8位元權重的情況下,每個通道載入8列(在多位元權重的情況下)。
隨後,CIM陣列616處理層輸入資料並且產生類比域輸出,該輸出被提供給數位後處理(DPP)塊618。如前述,DPP塊618可以包括一或多個類比數位轉換器(ADC),以處理類比域資料並且產生數位域資料。
如前述,DPP塊618可以包括進一步的子塊(未圖示),其執行額外功能,諸如ADC校準、偏置、移位、池化、輸出位元寬度選擇和其他中間操作。
DPP塊618向非線性運算塊620提供數位域輸出資料,非線性運算塊620對資料執行非線性運算(諸如上面描述的那些運算)以產生層輸出資料。
在一些情況下,輸出資料是中間層資料,其可以被直接提供回啟動緩衝器610以在MSPU 604內進行進一步處理。在其他情況下,輸出資料可以是最終層(或模型)輸出資料,其在該實例中經由加速器資料匯流排626、啟動緩衝器628和主機處理系統資料匯流排601提供回主機處理系統(例如,提供回主機系統記憶體,諸如各種類型的隨機存取記憶體(RAM))。
MSPU 604的各個態樣的各種流程和處理可以全部或部分地由硬體定序器606基於被儲存在定序器記憶體608中的指令來引導,這些指令可以經由來自主機處理系統的命令經由主機處理系統資料匯流排601來載入。
應注意,為了簡單起見,圖6中的實例圖示了單個MSPU(604),但是單個加速器602中的以及跨加速器的多個MSPU可以並行地處理機器學習模型資料以提高處理系統效能。如上文關於圖4所描述的,複數個MSPU可以經由加速器資料匯流排(例如,426)和暫存器(例如,442)進行協調,以提供機器學習模型處理運算的並行化。
基於CIM的加速器對基於深度可分CNN的機器學習架構的支援
圖7圖示了包括混合訊號處理單元(MSPU)704的加速器702的實例,MSPU 704被配置為使用深度可分迴旋方法來執行對迴旋神經網路(CNN)模型資料的處理。
應注意,與圖4中的加速器404A和404B相比,為了清楚起見省略了加速器702的各個態樣。例如,移除了MSPU資料匯流排,使得可以在MSPU 704的各個態樣之間圖示功能資料串流。這些各種資料串流通常可以經由MSPU資料匯流排(諸如關於圖4描述的424)來實現。
如所圖示的,主機程序可以經由主機處理系統資料匯流排701向加速器702提供任務輸入資料,諸如機器學習模型任務資料,其可以包括模型資料(例如,權重、偏置和其他參數)和將由模型處理的輸入資料。任務輸入資料可以最初被儲存在啟動緩衝器728(例如,L2緩衝器)中。
隨後,DMA 722可以經由加速器資料匯流排726從啟動緩衝器728中取回層輸入資料,並且將資料儲存在加速器啟動緩衝器710(例如,L1緩衝器)中。
隨後,啟動緩衝器710向CIM陣列716提供層輸入資料以進行處理,層輸入資料可以包括權重和層輸入資料(例如,預啟動資料或中間啟動資料)。在深度可分迴旋神經網路的背景下,該層輸入資料通常可以包括用於迴旋層以及全連接層的深度層輸入資料。
如前述,CIM有限狀態機714可以控制CIM陣列716的模式,使得可以將權重資料寫入例如CIM陣列716的列。
隨後,CIM陣列716處理深度層輸入資料並且產生類比域輸出,該輸出被提供給數位後處理(DPP)塊718。如前述,DPP塊718可以包括一或多個類比數位轉換器(ADC),以處理類比域資料並且產生數位域資料。
DPP塊718可以包括進一步的子塊(未圖示),其執行額外功能,諸如ADC校準、偏置、移位、池化和其他中間操作。
DPP塊718向非線性運算塊720提供數位域輸出資料,非線性運算塊720對資料執行非線性運算(諸如上述運算)以產生層輸出資料。
在該實例中,非線性運算塊720的輸出是逐深度輸出資料,其作為輸入資料經由加速器資料匯流排726提供給DMAC塊736。
在該實例中,DMAC塊736是用於加速器702的共享處理部件,如上文關於圖4中的共享處理部件430所描述的。然而,在其他實施例中,DMAC塊可以被包括在MSPU 704內,使得可以在MSPU 704內完成深度可分迴旋運算。應注意,儘管為了清楚起見未在該實例中示出,但是DMAC 736可以從啟動緩衝器710、啟動緩衝器728或直接經由DMA 722從系統記憶體接收權重資料。
DMAC 736的輸出是逐點輸出資料,其被提供給非線性運算塊734。與該實例中的DMAC 736一樣,非線性運算塊734是共享處理部件。然而,在將DMAC實現為MSPU 704的一部分的其他實施例中,則非線性運算塊720可以在處理流程中重用,以處理逐點輸出和逐深度輸出。
非線性運算塊734的輸出是深度可分層輸出資料,其被提供回啟動緩衝器728。若層輸出資料是中間層輸出資料,則可以經由啟動緩衝器728將其提供回MSPU。若層輸出資料是最終輸出,則可以經由啟動緩衝器728將其作為任務輸出資料提供給主機處理系統701(例如,主機系統RAM)。
儘管在該實例中沒有圖示,但是非線性運算塊734的輸出可以由數位後處理塊進一步處理。
MSPU 704的各態樣的各種流和處理可以全部或部分地由硬體定序器706基於被儲存在定序器記憶體708中的指令來引導,這些指令可以經由來自主機處理系統的命令經由主機處理系統資料匯流排701來載入。
應注意,為了簡單起見,圖7中的實例圖示了單個MSPU(704),但是單個加速器702中的以及跨加速器的多個MSPU可以並行地處理機器學習模型資料以提高處理系統效能。如上文關於圖4所描述的,複數個MSPU可以經由加速器資料匯流排(例如,426)和暫存器(例如,442)進行協調,以提供機器學習模型處理操作的並行化。
基於CIM的加速器對基於多層LSTM的機器學習架構的支援
圖8圖示了用於長短期記憶(LSTM)神經網路模型的實例處理流程800。
通常,LSTM是一種人工循環神經網路(RNN)架構,與標準前饋神經網路不同,其具有回饋連接。其結構不僅允許處理靜態輸入資料(例如,影像),亦允許處理順序輸入資料(諸如聲音和視訊)。公共LSTM單元由單元、輸入閘、輸出閘和遺忘閘組成。該單元記憶在任意時間間隔內的值,並且三個閘調節資訊進入和離開該單元的流。
在所圖示的實例中,
(802)表示輸入資料向量,
(804)表示遺忘閘啟動向量,
(806)表示輸入/更新閘啟動向量,
(808)表示輸出閘啟動向量,
(810)表示單元輸入啟動向量,
(812)表示單元狀態向量,
(814)表示輸出值,並且
t表示時間步長。
應注意,圖8表示LSTM流的一種實例實現,但是其他實現是可能的。
圖9圖示了被配置為支援LSTM處理的混合訊號處理單元904。與先前實例中一樣,為了清楚起見,在圖9中省略了在圖4中圖示的各個態樣。
進一步地,在該實施例中,用於
的子陣列連接到第一數位後處理塊918A,第一數位後處理塊918A可以被配置為使得這些子陣列之每一者子陣列連接到一或多個類比數位轉換器(ADC)。DPP塊918A連接到第一非線性運算塊920A。在一個實例中,非線性運算塊920A可以被配置為執行Sigmoid函數並且輸出遺忘閘啟動向量
、輸入/更新閘啟動向量
和輸出閘啟動向量
。
進一步地,在該實施例中,用於
的子陣列連接到第二數位後處理塊918B,其亦可以被配置有一或多個ADC。DPP塊918B連接到第二非線性運算塊920B。在一個實例中,非線性運算塊920B可以被配置為執行雙曲正切函數並且輸出單元輸入啟動向量
。
非線性運算塊920A和920B的輸出可以被提供給逐元素乘法和累加(MAC)塊932以用於逐元素向量到向量乘法和加法。逐元素MAC 932的輸出是單元狀態向量
。進一步地,延遲迴路可以將該細胞狀態向量作為
提供回逐元素MAC 932。
隨後,單元狀態向量
可以由另一非線性運算塊934A處理,在該實例中,非線性運算塊934A是共享處理資源(例如,在未圖示的其他MSPU之間)。在該實施例中,非線性運算塊934A可以被配置為對單元狀態向量
執行雙曲正切非線性運算,以產生隱藏狀態向量
。
隱藏狀態向量
可以被提供給啟動緩衝器928,以用作另一LSTM層的輸入。進一步地,
被提供給第二非線性運算塊934B以產生任務輸出(例如,分類)
,第二非線性運算塊934B在該實例中亦是共享處理資源。在一些實施例中,第二非線性運算塊934B被配置為執行softmax運算。輸出
亦被提供給啟動緩衝器928,在啟動緩衝器928處其可以作為任務輸出資料經由主機處理系統資料匯流排901發送回主機處理系統。
值得注意的是,為了簡單起見,圖9僅圖示了具有單個MSPU的一種實例配置,但是其他配置是可能的。例如,不是使所有權重矩陣共享CIM 陣列916,而是可以跨多個MSPU(未圖示)中的CIM陣列載入權重矩陣。在此類實施例中,多個MSPU的CIM陣列可以被配置為將各行互連,並且可以在MSPU CIM陣列之間配置緩衝邏輯。當使用非共享CIM陣列時,LSTM層的多個閘可以並行地處理,這提高了LSTM層的計算的效能。
此外,儘管為了簡單起見在圖9中圖示了單個層,但是可以在加速器902中配置多個LSTM層。在此類情況下,每個LSTM層可以具有其自己的輸入和輸出緩衝器(或緩衝器的分區)。在一些實例中,加速器902內的多個MSPU可以實現LSTM神經網路模型的多個層,並且可以在MSPU之間傳遞輸入和輸出資料以進行高效處理。
基於CIM的加速器對基於GRU的機器學習架構的支援
圖10圖示了用於神經網路模型的閘控循環單元(GRU)態樣的實例處理流程1000。
通常,GRU可以被配置為在循環神經網路中的閘控機制。GRU與LSTM類似,但是通常具有較少的參數。應注意,流程1000僅是一個實例,並且存在GRU的各種替代版本,諸如最小閘控單元。
在所圖示的實例中,
(1002)表示輸入資料向量,
(1004)表示輸出資料向量,
(1006)表示候選啟動向量,
(1008)表示更新閘向量,
(1010)表示重置閘向量,並且
表示參數矩陣和參數向量。
應注意,圖10表示GRU的一種實例實現,但是其他實現是可能的。
非線性處理塊1120A和1120B的輸出是更新閘向量
和單元狀態向量
,它們被提供給逐元素MAC 1132。在該實例中,逐元素MAC 1132被配置為進一步向非線性運算塊1134提供輸出向量
,非線性運算塊1134可以被配置為執行非線性運算(諸如softmax)以產生
。
值得注意的是,為了簡單起見,圖11僅圖示了具有單個MSPU的一種實例配置,但是其他配置是可能的。例如,不是使所有權重矩陣共享CIM陣列1116,而是可以跨在多個MSPU(未圖示)中的CIM陣列載入權重矩陣。在這些實施例中,多個MSPU的CIM陣列可以被配置為將各行互連,並且可以在MSPU CIM陣列之間配置緩衝邏輯。當使用非共享CIM陣列時,GRU層的多個閘可以並行地處理,這提高了GRU層的計算的效能。在一些實施例中,分片控制模組(諸如圖4的部件438)可以被配置為控制在單獨CIM陣列之間的行的互連。
進一步地,儘管為了簡單起見在圖11中圖示了單個層,但是可以在加速器1102中配置多個GRU層。在此類情況下,每個GRU層可以具有其自己的輸入和輸出緩衝器(或緩衝器的分區)。在一些實例中,加速器1102內的多個MPSU可以實現神經網路模型的包括GRU層的多個層,並且可以在MPSU之間傳遞輸入和輸出資料以進行高效處理。
基於CIM的加速器對基於多層RNN的機器學習架構的支援
圖12圖示了被配置為支援通用循環神經網路(RNN)處理的混合訊號處理單元1204。與在先前實例中一樣,為了清楚起見,在圖12中省略了圖在4中圖示的各個態樣。
在該實例中,啟動緩衝器1210提供輸入向量
和隱藏層向量
(針對前一層)作為CIM陣列1216的輸入,在該實例中,CIM陣列1216具有用於權重矩陣
和
的兩個不同的權重矩陣。由CIM陣列1216進行的處理的結果經由數位後處理塊1218A和1218B以及非線性運算塊1220A和1220B流到逐元素MAC 1232。來自逐元素MAC 1232的輸出被提供給非線性運算塊1234,在該實例中,非線性運算塊1234可以被配置為根據
來輸出新的隱藏層向量
。進一步地,
可以被提供給非線性運算塊1236,非線性運算塊1236可以被配置為根據
來產生輸出向量
。在一些實施例中,非線性運算塊1236可以是單獨的共享非線性運算塊,而在其他實施例中,非線性運算塊1234可以被重新配置以執行softmax運算。
基於CIM的加速器對具有注意力的變換器的支援
圖13圖示了加速器1302,其被配置為支援具有注意力機制的變換器(例如,編碼器/解碼器)處理。與在先前實例中一樣,為了清楚起見,在圖13中省略了在圖4中圖示的各個態樣。具體地,僅圖示了MSPU的特定態樣;然而,圖13中的配置意欲可以利用如在圖4中圖示的一或多個MSPU來實現。
在神經網路的背景下,注意力機制強調輸入資料的重要部分,並且去強調不重要的部分。注意力機制可以以若干方式來實現,包括點積注意力和多頭注意力。
變換器模型通常是一種深度學習模型,其可以特別配備用於流式資料,諸如在自然語言處理(NLP)領域。與諸如上述的RNN不同,變換器不需要按特定連續處理順序輸入資料,這有益地允許更多的並行化以及因此減少的訓練時間。
變換器模型通常可以包括經縮放的點積注意力單元。在一個實施例中,對於每個注意力單元,變換器模型學習三個權重矩陣;查詢權重
、鍵權重
和值權重
。一個權重矩陣集(例如,{
,
,
})被稱為注意力頭。對於每個符記
i,將輸入
(例如,向量)與三個權重矩陣中的每一者相乘,以產生查詢向量
、鍵向量
和值向量
。用於所有符記的注意力計算可以根據以下等式而被表達為一個大矩陣計算:
每個編碼器由兩個主要部件組成:自注意力機制和前饋神經網路。自注意力機制從先前編碼器接收輸入編碼集,並且對它們彼此的相關性進行加權,以產生輸出編碼集。隨後,前饋神經網路進一步單獨地處理每個輸出編碼。這些輸出編碼最終被傳遞給下一編碼器作為其輸入以及傳遞給解碼器。
具有注意力頭的變換器模型可以用於編碼和解碼。例如,編碼器可以被配置為接收輸入序列的位置資訊和嵌入作為其輸入,而不是編碼。變換器使用位置資訊來利用序列的順序。解碼器通常由自注意力機制、在編碼之上的注意力機制、和前饋神經網路組成。解碼器功能與編碼器類似,但是插入了替代地從由編碼器產生的編碼中提取相關資訊的額外的注意力機制。與編碼器一樣,解碼器將輸出序列的位置資訊和嵌入作為其輸入,而不是編碼。解碼器之後可以跟隨著最終的線性變換和softmax層,以產生輸出概率。
圖13圖示了被配置有注意力塊1301和前饋塊1307的加速器1302。
注意力塊1301包括兩個注意力「頭」1303和1305,在該實例中,它們被配置為並行地工作。在該實例中,CIM陣列1316A-C可以各自被配置有分別用於注意力頭的輸入權重矩陣,例如,
,
或
。類似地,CIM陣列1316D-F可以被配置有用於第二注意力頭的輸入權重矩陣。應注意,儘管該實例圖示了注意力塊1301內的兩個注意力頭(1303和1305),但是在其他實例中,可以配置其他數量的注意力頭,例如1個或兩個以上。
通常,用於每個注意力頭(例如,1303和1305)到其他處理塊(包括DMAC 1336A、多工器(MUX)塊1338、非線性運算塊1320A和縮放塊1340)的連接是相同的,但是在圖13中經由使用實線或虛線進行區分。在其他實施例中,每個注意力頭(例如,1303和1305)可以包括單個後續處理塊,諸如被配置用於每個注意力頭的DMAC塊,而不是在注意力頭之間共享。
MUX塊1338被配置為選擇每個頭(例如,1304和1305)的注意力輸出,使得可以對其中的每一者執行縮放和串接。
非線性運算塊1320A被配置為基於非線性運算塊1320A的輸入來執行注意力計算,諸如執行softmax函數。
串接塊1342被配置為在矩陣乘法之前(例如,在塊1316G中)對多頭注意力輸出(例如,來自注意力頭1303和1305的輸出)進行串接,以將輸出維度降低回輸入的維度。
正規化塊1344被配置為執行對注意力輸出的正規化以提高效能。例如,正規化塊1334可以計算塊輸入的均值和方差,並且將其正規化為設定均值(例如,0)和設定方差(例如,1),並且隨後將輸出縮放為設定均值和方差,類似於批正規化程序。
塊1307是被配置為利用DMAC 1336B和1336C實現前饋全連接網路層的實例塊。例如,DMAC 1336B可以被配置為執行
FFN等式中的
計算,並且DMAC 1336C可以被配置為利用
FFN等式中的
和
執行計算。隨後,DPP塊1318H可以處理來自DMAC塊1336B和1336C的輸出。
塊1309是被配置為利用CIM陣列1316A和1316B的前饋全連接網路層的實例塊。例如,CIM陣列1316H可以被配置為執行
計算,並且CIM陣列1316I可以被配置為利用
和
來執行FFN等式中的計算。隨後,DPP塊1318I可以處理來自CIM陣列1316H和1316I的輸出,並且將該輸出提供給非線性運算塊1320B。
應注意,在一些實施例中,可以在DPP塊1318G中添加殘差輸入,諸如下文關於圖14所描述的。
實例數位後處理塊
圖14圖示了數位後處理(DPP)塊1400的實例。
在所圖示的實施例中,DPP塊1400包括各種子塊1402-1416。應注意,塊1402-1416的順序並不意欲表示任何特定的處理順序。進一步地,儘管在所圖示的實施例中DPP塊1400包括各種子塊,但是在其他實施例中,DPP塊可以包括更少的子塊、其他子塊或額外的子塊。例如,如前述,在實現外部非線性運算塊的情況下,可以省略非線性運算1414。
DPP塊1400包括類比數位轉換器(ADC)1402,其通常可以包括被配置為將類比域訊號(例如,從CIM陣列輸出)轉換為數位域訊號的一或多個ADC。
DPP塊1400亦包括增益塊1404,其被配置為對ADC輸出進行縮放並且添加偏置,如在預縮放塊中一樣。
DPP塊1400亦包括池化塊1406,其被配置為執行池化運算。池化(諸如最大或平均池化)通常可以用於下取樣或以其他方式降低輸入資料的維度。
DPP塊1400亦包括移位塊1408,在該實例中,移位元塊1408被配置為對來自塊1406的池化輸出進行縮放並且向其添加增益。
DPP塊1400亦包括偏置塊1410,其被配置為向移位元塊1408的輸出添加偏置。因此,在該實例中,移位塊1408和偏置塊1410可以一起充當用於來自池化塊1406的經池化的輸出的後縮放塊。
DPP塊1400亦包括位元寬度選擇塊1412,其被配置為選擇輸出位元寬(例如從1到8位)以用於在記憶體(例如,SRAM)中進行輸出打包。
DPP塊1400亦包括非線性運算塊1414,其被配置為執行如本文描述的各種非線性運算。例如,非線性運算塊1414可以被配置為執行sigmoid或邏輯函數、TanH或雙曲正切函數、整流線性單元(ReLU)函數、帶洩漏ReLU、參數化ReLU、Softmax和swish,舉幾個實例。
如所圖示的,DPP塊1400可以被配置為接收殘差或循環輸入,諸如來自在殘差神經網路(例如,「ResNet」或「SkipNet」)中的殘差層的資料或來自在循環神經網路(RNN)中的循環層的資料。在各個實施例中,此類輸入資料可以在非線性運算(例如可以由非線性運算塊1414執行)之前及/或之後被輸入到正被處理的資料串流。
CIM對層分片的支援
在各種機器學習模型架構中(包括在本文描述的架構的各種配置中),相對較大的層可能並不總是能夠由單個CIM陣列處理。如前述,在一些情況下,在加速器中的實體地單獨的CIM陣列可以實體上連接在一起,以增加有效CIM陣列的大小。然而,根據在加速器中配置的CIM陣列數量、架構正被配置用於加速器以及層的大小,將CIM陣列實體地連接來增加有效大小可能並不總是優選的。為了解決這個問題,層可以虛擬地分佈在多個CIM陣列上,這些CIM陣列亦可以分佈在一或多個加速器上。在此類配置中,可以重新組合來自虛擬連接的CIM陣列的部分處理輸出,以形成最終輸出。進一步地,在一些配置中,單個較小的CIM陣列可以在不同的時槽中建立部分處理輸出,其中每個時槽充當較大虛擬CIM陣列的一部分。
將陣列利用考慮用於跨一或多個CIM陣列(包括被映射到不同處理時槽的一或多個CIM陣列)處理的高效映射。細細微性分片可以經由禁用未被使用的分片來幫助功率節省。然而,由於來自每個陣列的部分和都是理想較大尺寸陣列的經縮放且經量化的版本,因此可能引入模型誤差。在此類情況下,可以使用維度錯誤感知訓練來提高效能。
圖15圖示了利用複數個CIM陣列進行分片的實例。在所圖示的實例中,虛擬CIM陣列1502可以對應於用於機器學習模型的輸入層的所需大小。
虛擬CIM陣列1502可以利用如所圖示的實體上較小的CIM陣列1504A-D來實現。例如,可以使用四個4 x 4 CIM 1504A-D來處理7(行)x 5(列)輸入資料陣列。應注意,在圖15中,各種輸入資料元素的陰影用作視覺指示符,以示出單個CIM陣列1504A-D可以如何處理原始輸入資料。
來自每個單獨CIM陣列1504A-D的部分操作結果(例如,在該實例中的部分總和)可以分別由數位後處理塊1518A-D來處理,並且隨後在累加器1506中對部分輸出進行組合以產生較大虛擬CIM陣列1502的等效輸出之前,可以由非線性運算塊1520A-D分別執行非線性運算。儘管在該實例中圖示了單獨的數位後處理塊1518A-D和非線性運算塊1520A-D,但是在其他實施例中可以使用共享數位後處理塊和共享非線性運算塊。
在一些實施例中,分片可以由加速器的部件來控制,諸如圖4的分片控制438。
利用加速器來處理機器學習模型資料的實例方法
圖16圖示了利用機器學習任務加速器(諸如本文關於圖4-圖15描述的)來處理機器學習模型資料的實例方法。
在步驟1602處,方法1600以如下操作開始:將機器學習任務加速器的一或多個訊號處理單元(SPU)配置為處理機器學習模型。在一些實施例中,一或多個SPU可以包括一或多個混合訊號處理單元(MSPU)(例如,圖4中的404A)及/或一或多個數位訊號處理單元(DSPU)(例如,圖4中的404B)。
在方法1600的一些實施例中,一或多個SPU被配置用於不同類型的機器學習模型架構,諸如上文關於圖6-圖13論述的那些架構。在方法1600的一些實施例中,一或多個SPU的配置是根據由主機處理系統提供的指令的,這些指令至少部分地被儲存在SPU中的一或多個SPU的硬體定序器記憶體中。
方法1600隨後以如下操作繼續進行到步驟1604:向一或多個配置的SPU提供模型輸入資料。
在一些實施例中,向一或多個配置的SPU提供模型輸入資料包括將輸入資料應用於MSPU中的一或多個MSPU的CIM陣列的行(諸如關於圖1-圖3所論述的)。
在一些實施例中,可以經由膠連邏輯來修改輸入資料,例如,以對輸入資料進行解壓縮。在一些實施例中,輸入資料可以包括影像資料、視訊資料、聲音資料、語音資料、文字資料或其他類型的結構化或非結構化資料。
隨後,方法1600以如下操作繼續到步驟1606:使用一或多個配置的SPU,利用機器學習模型處理模型輸入資料。
方法1600隨後以如下操作繼續進行到步驟1608:從一或多個配置的SPU接收輸出資料。在一些實施例中,輸出資料可能與針對其來訓練機器學習模型的任務有關,諸如分類、回歸或其他類型的推斷。
在一些實施例中,方法1600亦包括將權重資料寫入一或多個SPU,例如寫入一或多個MSPU的一列或多列,如關於圖1-3所論述的。在一些實施例中,若權重是二進位的,迴旋神經網路濾波器的每個權重可以被儲存在單個列中,或者若權重是多位元的,則其可以被儲存在複數個相鄰列中。
在一些實施例中,方法1600亦包括向主機處理系統提供輸出資料。
在方法1600的一些實施例中,一或多個SPU中的每一者可以包括上文關於圖4描述的部件中的一或多個部件。
在方法1600的一些實施例中,機器學習模型包括迴旋神經網路模型。在方法1600的一些實施例中,利用機器學習模型來處理模型輸入資料包括:利用至少一或多個MSPU的CIM電路來執行深度可分迴旋運算的深度迴旋運算;及利用DMAC電路來執行深度可分迴旋運算的逐點迴旋運算,諸如關於圖7所論述的。
在方法1600的一些實施例中,機器學習模型包括循環神經網路模型,諸如上文關於圖12所描述的。
在方法1600的一些實施例中,機器學習模型包括至少一個長短期記憶(LSTM)層,諸如上文關於圖8-圖9所描述的。
在方法1600的一些實施例中,機器學習模型包括至少一個閘控循環單元(GRU)層,諸如上文關於圖10-圖11所描述的。
在方法1600的一些實施例中,機器學習模型包括變換器神經網路模型,變換器神經網路模型包括注意力部件和前饋部件,諸如上文關於圖13所描述的。
在一些實施例中,方法1600亦包括:將用於機器學習模型的單個層的權重資料載入到一或多個SPU中的兩個單獨的MSPU的至少兩個單獨的CIM電路中;從兩個單獨的MSPU接收部分輸出;及基於所接收的部分輸出來產生最終輸出,諸如上文關於圖14所描述的。
應注意,方法1600僅是一種實例方法,並且許多其他方法可能與本文論述的各種方法一致。進一步地,與關於圖16描述的實例相比,其他實施例可以具有更多或更少的步驟。
實例處理系統
圖17圖示了實例處理系統1700,其可以被配置為執行本文描述的方法(諸如關於圖6-圖15)。
處理系統1700包括中央處理器(CPU)1702,在一些實例中,中央處理器可以是多核CPU。在CPU 1702處執行的指令可以是例如從與CPU 1702相關聯的程式記憶體載入的,或者可以是從記憶體分區1724載入的。
處理系統1700亦包括針對特定功能定制的額外處理部件,諸如圖形處理單元(GPU)1704、數位訊號處理器(DSP)1706、神經處理單元(NPU)1708、多媒體處理單元1710和無線連接部件1712。
NPU(諸如1708)通常是被配置用於實現用於執行機器學習演算法的所有必要的控制和算術邏輯的專用電路,諸如用於處理人工神經網路(ANN)、深度神經網路(DNN)、隨機森林(RF)、核心方法等的演算法。NPU有時可以替代地被稱為神經訊號處理器(NSP)、張量處理單元(TPU)、神經網路處理器(NNP)、智慧處理單元(IPU)或視覺處理單元(VPU)。
NPU(諸如1708)可以被配置用於對常見機器學習任務的執行進行加速,諸如影像分類、機器翻譯、目標偵測和各種其他任務。在一些實例中,複數個NPU可以在單個晶片(諸如片上系統(SoC))上產生實體,而在其他實例中,它們可以是專用機器學習加速器設備的一部分。
NPU可以被最佳化用於訓練或推斷,或者在一些情況下被配置為平衡兩者之間的效能。對於能夠執行訓練和推斷兩者的NPU來說,這兩項任務通常仍然可以獨立地執行。
被設計為對訓練進行加速的NPU通常被配置為加速對新模型的最佳化,這是一種高度計算密集型操作,其涉及:輸入現有資料集(通常被標記或加標籤),在資料集上反覆運算,並且隨後調整模型參數(諸如權重和偏差)以便改進模型效能。通常,基於錯誤預測進行最佳化涉及:經由模型的層進行反向傳播以及決定梯度以減少預測誤差。
被設計為對推斷進行加速的NPU通常被配置為在完整模型上進行操作。因此,此類NPU可以被配置為:輸入新的資料片;及經由已經訓練的模型來對其快速地處理,以產生模型輸出(例如,推斷)。
在一些實施例中,NPU 1708可以被實現為CPU 1702、GPU 1704及/或DSP 1706中的一者或多者的一部分。
在一些實施例中,無線連接部件1712可以包括例如用於第三代(3G)連接、第四代(4G)連接(例如,4G LTE)、第五代連接(例如,5G或NR)、Wi-Fi連接、藍芽連接和其他無線資料傳輸標準的子部件。無線連接處理部件1712進一步連接到一或多個天線1714。
處理系統1700亦可以包括與任何方式的感測器相關聯的一或多個感測器處理單元1716、與任何方式的影像感測器相關聯的一或多個影像訊號處理器(ISP)1718、及/或導航處理器1720,導航處理器1620可以包括基於衛星的定位系統部件(例如,GPS或GLONASS)以及慣性定位系統部件。
處理系統1700亦可以包括一或多個輸入及/或輸出設備1722,諸如螢幕、觸摸敏感表面(包括觸摸敏感顯示器)、實體按鈕、揚聲器、麥克風等。
在一些實例中,處理系統1700的處理器中的一或多個處理器可以是基於ARM或RISC-V指令集的。
處理系統1700亦包括根據本文描述的各個實施例的各種電路。具體而言,處理系統包括直接記憶體存取(DMA)電路1728、CIM有限狀態機(FSM)電路1730、記憶體內計算(CIM)電路1732、數位後處理電路1734、非線性運算電路1736、數位乘法和累加(DMAC)電路1738、逐元素乘法和累加電路1740以及分片控制電路1742。所圖示的電路中的一或多個電路以及未圖示的其他電路可以被配置為執行本文描述的方法的各個態樣。
處理系統1700亦包括記憶體1724,其代表一或多個靜態及/或動態儲存裝置器,諸如動態隨機存取記憶體、基於快閃記憶體的靜態記憶體等。在該實例中,記憶體1724包括電腦可執行部件,其可以由處理系統1700的一或多個前述部件執行。
具體而言,在該實例中,記憶體1724包括配置部件1724A、訓練部件1724B、推斷部件1724C和輸出部件1724D。所圖示的部件中的一或多個部件以及未圖示的其他部件可以被配置為執行本文描述的方法的各個態樣。
通常,處理系統1700及/或其部件可以被配置為執行本文描述的方法。
值得注意的是,在其他實施例中,可以省略處理系統1700的各態樣,諸如在處理系統1700是伺服器電腦等的情況下。例如,在其他實施例中,可以省略多媒體部件1710、無線連接1712、感測器1716、ISP 1718及/或導航部件1720。進一步地,處理系統1700的各態樣可以是分散式的,諸如訓練模型並且使用該模型來產生推理,諸如使用者驗證預測。
進一步地,在其他實施例中,可以在一或多個處理系統上執行上述方法的各個態樣。
實例條款
在以下編號的條款描述了實現實例:
條款1:一種機器學習任務加速器,包括:一或多個混合訊號處理單元(MSPU),該一或多個MSPU之每一者相應MSPU包括:記憶體內計算(CIM)電路;本端啟動緩衝器,其連接到該CIM電路並且被配置為儲存啟動資料以供該CIM電路處理;一或多個類比數位轉換器(ADC),其連接到該CIM電路並且被配置為將來自該CIM電路的類比計算結果訊號轉換為數位計算結果資料;第一非線性運算電路,其連接到該一或多個ADC的一或多個輸出並且被配置為對該數位計算結果資料執行非線性處理;硬體定序器電路,其被配置為執行從主機系統接收的指令並且控制該MSPU的操作;及本端直接記憶體存取(DMA)控制器,其被配置為控制對共享啟動緩衝器的存取;數位乘法和累加(DMAC)電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行乘法和累加運算;數位逐元素乘法和累加電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行逐元素乘法和逐元素累加運算;及第二非線性運算電路,其連接到該一或多個MSPU。
條款2:根據條款1之機器學習任務加速器,亦包括:一或多個數位訊號處理單元(DSPU),該一或多個DSPU之每一者相應DSPU包括:DSPU DMAC電路,其被配置為執行數位乘法和累加運算;本端啟動緩衝器,其連接到該DMAC電路,並且被配置為儲存啟動資料以供該DMAC電路處理;DSPU非線性運算電路,其連接到該DMAC電路並且被配置為對從該DMAC電路輸出的該資料執行非線性處理;DSPU硬體定序器電路,其連接到並且被配置為執行從該主機系統接收的指令並且控制相應DSPU的操作;及DSPU本端直接記憶體存取(DMA)控制器,其被配置為控制對共享啟動緩衝區的存取。
條款3:根據條款1-2中任一項所述的機器學習任務加速器,亦包括:共享啟動緩衝器,其連接到該一或多個MSPU並且被配置為儲存由該一或多個MSPU產生的輸出啟動資料。
條款4:根據條款1-3中任一項所述的機器學習任務加速器,其中該第一非線性運算電路包括立方近似器和增益塊。
條款5:根據條款1-4中任一項所述的機器學習任務加速器,其中該一或多個MSPU中的至少一個相應MSPU亦包括:CIM有限狀態機(FSM),其被配置為控制將權重資料和啟動資料寫入相應MSPU的CIM電路。
條款6:根據條款1-5中任一項所述的機器學習任務加速器,亦包括:複數個暫存器,其連接到該一或多個MSPU並且被配置為實現直接在該MSPU之間的資料通訊。
條款7:根據條款1-6中任一項所述的機器學習任務加速器,其中該一或多個MSPU中的至少一個相應MSPU亦包括:數位後處理電路,其被配置為應用增益、偏置、移位或池化操作中的一項。
條款8:根據請求項7之機器學習任務加速器,其中該數位後處理電路包括該相應MSPU的該一或多個ADC中的至少一個ADC。
條款9:根據條款1-8中任一項所述的機器學習任務加速器,亦包括:分片控制電路,其被配置為:使得用於神經網路模型的單個層的權重資料被載入到該一或多個MSPU中的兩個單獨的MSPU的至少兩個單獨的CIM電路中;從該兩個單獨的MSPU接收部分輸出;及基於該部分輸出來產生最終輸出。
條款10:根據條款9之機器學習任務加速器,其中該分片鋪控制電路亦被配置為控制在該至少兩個單獨的CIM電路之間的行的互連。
條款11:根據條款1-10中任一項所述的機器學習任務加速器,其中該一或多個MSPU被配置為執行對迴旋神經網路模型的迴旋神經網路層的處理。
條款12:根據條款11之機器學習任務加速器,其中該一或多個MSPU被配置為執行對迴旋神經網路模型的全連接層的處理。
條款13:根據條款11之機器學習任務加速器,亦包括:共享非線性運算電路,其被配置為執行對迴旋神經網路層的逐點迴旋的處理,其中:該迴旋神經網路層包括深度可分迴旋神經網路層,以及該一或多個MSPU中的至少一個MSPU被配置為執行對該迴旋神經網路層的逐深度迴旋的處理。
條款14:根據條款1-13中任一項所述的機器學習任務加速器,其中該一或多個MSPU被配置為執行對神經網路模型的循環層的處理。
條款15:根據條款1-14中任一項所述的機器學習任務加速器,其中該一或多個MSPU被配置為執行對神經網路模型的長短期記憶(LSTM)層的處理。
條款16:根據條款1-15中任一項所述的機器學習任務加速器,其中該一或多個MSPU被配置為執行對神經網路模型的閘控循環單元(GRU)層的處理。
條款17:根據條款1-16中任一項所述的機器學習任務加速器,其中該一或多個MSPU被配置為執行對神經網路模型的變換器層的處理。
條款18:根據條款17之機器學習任務加速器,其中該變換器層包括注意力部件和前饋部件。
條款19:根據條款1-18中任一項所述的機器學習任務加速器,亦包括:硬體定序器記憶體,其連接到該硬體定序器電路並且被配置為儲存從該主機系統接收的該等指令。
條款20:根據條款1-19中任一項所述的機器學習任務加速器,其中包括CIM電路的該一或多個MSPU之每一者MSPU的該CIM電路包括複數個靜態隨機存取記憶體(SRAM)位元單元。
條款21:一種利用機器學習任務加速器來處理機器學習模型資料的方法,包括:將該機器學習任務加速器的一或多個混合訊號處理單元(MSPU)配置為處理機器學習模型;向一或多個經配置的MSPU提供模型輸入資料;使用該一或多個經配置的MSPU,利用該機器學習模型來處理該模型輸入資料;及從該一或多個經配置的MSPU接收輸出資料。
條款22:根據條款21之方法,其中:該一或多個MSPU之每一者MSPU包括:記憶體內計算(CIM)電路;本端啟動緩衝器,其連接到該CIM電路並且被配置為儲存啟動資料以供該CIM電路處理;一或多個類比數位轉換器(ADC),其連接到該CIM電路並且被配置為將來自該CIM電路的類比計算結果訊號轉換為數位計算結果資料;第一非線性運算電路,其連接到該一或多個ADC的一或多個輸出並且被配置為對該數位計算結果資料執行非線性處理;硬體定序器電路,其連接到並且被配置為執行從主機系統接收的指令並且控制該MSPU的操作;及本端直接記憶體存取(DMA)控制器,其被配置為控制對共享啟動緩衝器的存取;並且該機器學習任務加速器包括:數位乘法和累加(DMAC)電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行乘法和累加運算;數位逐元素乘法和累加電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行逐元素乘法和逐元素累加運算;及第二非線性運算電路,其連接到該一或多個MSPU。
條款23:根據條款22之方法,其中該機器學習任務加速器亦包括共享啟動緩衝器,其連接到該一或多個MSPU並且被配置為儲存由該一或多個MSPU產生的輸出啟動資料。
條款24:根據條款22-23中任一項所述的方法,其中該機器學習模型包括迴旋神經網路模型。
條款25:根據條款22-24中任一項所述的方法,其中利用該機器學習模型來處理該模型輸入資料包括:利用該一或多個MSPU的CIM電路來執行深度可分迴旋運算的逐深度迴旋運算;及利用該DMAC電路來執行該深度可分迴旋運算的逐點迴旋運算。
條款26:根據條款22-25中任一項所述的方法,其中該機器學習模型包括循環神經網路模型。
條款27:根據條款26之方法,其中該機器學習模型包含至少一個長短期記憶(LSTM)層。
條款28:根據條款26之方法,其中該機器學習模型包括至少一個閘控循環單元(GRU)層。
條款29:根據條款22-28中任一項所述的方法,其中該機器學習模型包括變換器神經網路模型,其包括注意力部件和前饋部件。
條款30:根據條款22-29中任一項所述的方法,亦包括:在該一或多個MSPU中的兩個單獨的MSPU的至少兩個單獨的CIM電路中載入用於該機器學習模型的單個層的權重資料;從該兩個單獨的MSPU接收部分輸出;及基於所接收的部分輸出來產生最終輸出。
條款31:一種處理系統,包括:包括電腦可執行指令的記憶體;一或多個處理器,其被配置為執行該電腦可執行指令,並且使得該處理系統執行根據條款21-30中任一項所述的方法。
條款32:一種處理系統,包括執行根據條款21-30中任一項所述的方法的單元。
條款33:一種非暫時性電腦可讀取媒體,包括電腦可執行指令,該電腦可執行指令在由處理系統的一或多個處理器執行時使得該處理系統執行根據條款21-30中任一項所述的方法。
條款34:一種體現在電腦可讀取儲存媒體上的電腦程式產品,包括用於執行根據條款21-30中任一項所述的方法的代碼。
額外考慮
提供先前描述,以使得本發明所屬領域中具有通常知識者能夠實施本文描述的各個實施例。本文論述的實例不對在請求項中闡述的範疇、適用性或實施例進行限制。對於本發明所屬領域中具有通常知識者來說,對這些實施例的各種修改將是顯而易見的,並且本文定義的通用原理可以應用於其他實施例。例如,可以在不脫離本案內容的範疇的情況下,在論述的元素的功能和佈置態樣進行改變。各個實例可以酌情省略、替換或添加各種程序或部件。例如,所描述的方法可以以與所描述的順序不同的順序來執行,並且可以添加、省略或組合各個步驟。此外,可以將關於一些實例描述的特徵組合到一些其他實例中。例如,使用本文所闡述的任何數量的態樣,可以實現一種裝置或可以實施一種方法。此外,本案內容的範疇意欲涵蓋使用除了本文所闡述的揭示內容的各個態樣以外或與其不同的其他結構、功能、或者結構和功能來實施的此類裝置或方法。應當理解,本文所揭示的揭示內容的任何態樣可以由請求項的一或多個元素來體現。
如本文所使用的,「示例性的」一詞意指「用作實例、例子或說明」。本文中被描述為「示例性的」任何態樣未必被解釋為比其他態樣優選或具有優勢。
如本文中使用的,提及項目列表「中的至少一個」的短語代表那些項目的任何組合,包括單一成員。作為一個實例,「a、b或c中的至少一個」意欲涵蓋a、b、c、a-b、a-c、b-c和a-b-c、以及與相同元素的倍數的任意組合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c和c-c-c或者a、b和c的任何其他排序)。
如本文所使用的,術語「決定」包括多種多樣的動作。例如,「決定」可以包括計算、運算、處理、推導、調查、檢視(例如,在表、資料庫或另一資料結構中檢視)、查明等等。此外,「決定」可以包括接收(例如,接收資訊)、存取(例如,存取記憶體中的資料)等等。此外,「決定」可以包括解析、選定、選擇、建立等等。
如本文所使用的,在本文描述的在部件之間共享電子訊號和資料的上下文中,術語「連接到」通常可以意指在彼此連接的相應部件之間的資料通訊。在一些情況下,部件可以彼此直接地連接,諸如經由一或多個導電跡線、線路或能夠在彼此直接地連接的相應部件之間攜帶訊號及/或資料的其他導電載體。在其他情況下,部件可以彼此間接地連接,諸如經由用於在彼此間接地連接的相應部件之間傳送訊號和資料的一或多個資料匯流排或類似的共享電路及/或積體電路部件。
本文所揭示的方法包括用於實現方法的一或多個步驟或動作。在不脫離請求項的範疇的情況下,這些方法步驟及/或動作可以彼此互換。換句話說,除非指定了步驟或動作的特定順序,否則,在不脫離請求項的範疇的情況下,可以對特定步驟及/或動作的順序及/或使用進行修改。此外,上述方法的各種操作可以由能夠執行相應功能的任何適當的單元來執行。這些單元可以包括各種硬體及/或軟體部件及/或模組,包括但不限於:電路、特殊應用積體電路(ASIC)或處理器。通常,在存在在圖中示出的操作的情況下,那些操作可以具有帶有類似編號的相應的配對單元加功能部件。
跟隨的請求項並不意欲限於本文示出的實施例,而是被賦予與請求項的語言相一致的全部範疇。在請求項內,除非明確地聲明如此,否則提及單數形式的元素並不意欲意指「一個且僅僅一個」,而是「一或多個」。除非另有明確聲明,否則術語「一些」代表一或多個。沒有請求項元素要根據專利法. §112(f)來解釋,除非該元素是明確地使用短語「用於……的單元」來記載的,或者在方法請求項的情況下,該元素是使用短語「用於……的步驟」來記載的。將貫穿本案內容描述的各個態樣的元素的全部結構和功能均等物以引用方式明確地併入本文中,以及意欲由申請專利範圍所涵蓋,這些結構和功能均等物對於本發明所屬領域中具有通常知識者而言是已知的或者稍後將是已知的。此外,本文中沒有任何揭示的內容是想要奉獻給公眾的,不管此類揭示內容是否明確記載在請求項中。
100:記憶體內計算(CIM)電路
105a:SRAM位元單元
105b:SRAM位元單元
105c:SRAM位元單元
105d:SRAM位元單元
105e:SRAM位元單元
105f:SRAM位元單元
105g:SRAM位元單元
105h:SRAM位元單元
105i:SRAM位元單元
110a:ADC
110b:ADC
110c:ADC
111a:PMOS電晶體
111b:PMOS電晶體
111c:PMOS電晶體
111d:PMOS電晶體
111e:PMOS電晶體
111f:PMOS電晶體
111g:PMOS電晶體
111h:PMOS電晶體
111i:PMOS電晶體
113:NMOS電晶體
113a:NMOS電晶體
113b:NMOS電晶體
113c:NMOS電晶體
113d:NMOS電晶體
113e:NMOS電晶體
113f:NMOS電晶體
113g:NMOS電晶體
113h:NMOS電晶體
113i:NMOS電晶體
118a:位元線
118b:位元線
118c:位元線
123a:電容器
123b:電容器
123c:電容器
123d:電容器
123e:電容器
123f:電容器
123g:電容器
123h:電容器
123i:電容器
125a:預充電字線(PCWL)
125b:預充電字線(PCWL)
125c:預充電字線(PCWL)
127a:讀字線
127b:讀字線
127c:讀字線
200:位元單元
201:靜態隨機存取記憶體(SRAM)單元
211:電晶體
213:電晶體
216:寫字線(WWL)
217:節點
219:節點
221:位元線
223:電容器
225:預充電字線(PCWL)
227:讀字線
229:寫位元線(WBL)
231:寫位元條線(WBBL)
250:位元單元
252:預充電字線
254:額外電晶體
300:時序圖
401:主機處理系統資料匯流排
402:加速器
404A:混合訊號處理單元(MSPU)
404B:數位訊號處理單元(DSPU)
406:硬體定序器
408:定序器記憶體
410:啟動緩衝器
414:CIM有限狀態機
416:CIM陣列
418:數位後處理(DPP)塊
420:非線性運算塊
422:DMA
426:加速器資料匯流排
428:加速器啟動緩衝器
430:共享處理部件
432:逐元素MAC
434:非線性運算塊
436:數位MAC(DMAC)
438:分片控制部件
440:DMAC塊
442:暫存器
500:主機處理系統
506:中央處理器(CPU)
508:數位訊號處理器(DSP)
510:神經處理單元(NPU)
512:自我調整濾波模組(AF)
514:快速傅立葉轉換模組(FFT)
516:系統記憶體
518:直接記憶體存取(DMA)控制器
601:主機處理系統資料匯流排
602:加速器
604:混合訊號處理單元(MSPU)
606:硬體定序器
608:定序器記憶體
610:加速器啟動緩衝器
614:CIM有限狀態機
616:CIM陣列
618:數位後處理(DPP)塊
620:非線性運算塊
622:DMA
626:加速器資料匯流排
628:啟動緩衝器
701:主機處理系統資料匯流排
702:加速器
704:MSPU
706:硬體定序器
708:定序器記憶體
710:啟動緩衝器
714:CIM有限狀態機
716:CIM陣列
718:DPP塊
720:非線性運算塊
722:DMA
726:加速器資料匯流排
728:啟動緩衝器
734:非線性運算塊
736:DMAC塊
800:處理流程
802:輸入資料向量
804:遺忘閘啟動向量
806:輸入/更新閘啟動向量
808:輸出閘啟動向量
810:單元輸入啟動向量
812:單元狀態向量
814:輸出值
901:主機處理系統資料匯流排
902:加速器
904:混合訊號處理單元
916:CIM陣列
918A:第一數位後處理塊
918B:第二數位後處理塊
920A:非線性運算塊
920B:第二非線性運算塊
928:啟動緩衝器
932:逐元素乘法和累加(MAC)塊
934A:非線性運算塊
934B:第二非線性運算塊
1000:處理流程
1002:輸入資料向量示
1004:輸出資料向量
1006:候選啟動向量
1008:更新閘向量
1010:重置閘向量
1102:加速器
1104:混合訊號處理單元
1116:CIM陣列
1118A:數位後處理塊
1118B:數位後處理塊
1120A:非線性處理塊
1120B:非線性處理塊
1132:逐元素MAC
1134:非線性運算塊
1204:混合訊號處理單元
1210:啟動緩衝器
1216:CIM陣列
1218A:數位後處理塊
1218B:數位後處理塊
1220A:非線性運算塊
1220B:非線性運算塊
1232:逐元素MAC
1234:非線性運算塊
1236:非線性運算塊
1301:注意力塊
1302:加速器
1303:注意力「頭」
1305:注意力「頭」
1307:前饋塊
1309:塊
1316A:CIM陣列
1316B:CIM陣列
1316C:CIM陣列
1316D:CIM陣列
1316E:CIM陣列
1316F:CIM陣列
1316G:CIM陣列
1316H:CIM陣列
1316I:CIM陣列
1318A:DPP塊
1318B:DPP塊
1318C:DPP塊
1318D:DPP塊
1318E:DPP塊
1318F:DPP塊
1318G:DPP塊
1318H:DPP塊
1318I:DPP塊
1320A:非線性運算塊
1320B:非線性運算塊
1336A:DMAC
1336B:DMAC
1336C:DMAC
1338:多工器(MUX)塊
1340:縮放塊
1342:串接塊
1344:正規化塊
1400:數位後處理(DPP)塊
1402:種子塊
1404:種子塊
1406:種子塊
1408:種子塊
1410:種子塊
1412:種子塊
1414:種子塊
1416:種子塊
1502:虛擬CIM陣列
1504A:單獨CIM陣列
1504B:單獨CIM陣列
1504C:單獨CIM陣列
1504D:單獨CIM陣列
1506:累加器
1518:數位後處理塊
1518A:數位後處理塊
1518B:數位後處理塊
1518C:數位後處理塊
1518D:數位後處理塊
1520:非線性運算塊
1520A:非線性運算塊
1520B:非線性運算塊
1520C:非線性運算塊
1520D:非線性運算塊
1600:方法
1602:步驟
1604:步驟
1606:步驟
1608:步驟
1700:處理系統
1702:中央處理器(CPU)
1704:圖形處理單元(GPU)
1706:數位訊號處理器(DSP)
1708:神經處理單元(NPU)
1710:多媒體處理單元
1712:無線連接部件
1714:天線
1716:感測器處理單元
1718:影像訊號處理器(ISP)
1720:導航處理器
1722:輸入及/或輸出設備
1724:記憶體分區
1724A:配置部件
1724B:訓練部件
1724C:推斷部件
1724D:輸出部件
1728:直接記憶體存取(DMA)電路
1730:CIM有限狀態機(FSM)電路
1732:記憶體內計算(CIM)電路
1734:數位後處理電路
1736:非線性運算電路
1738:數位乘法和累加(DMAC)電路
1740:逐元素乘法和累加電路
1742:分片控制電路
ADC:類比數位轉換器
PCWL:預充電字線
PCWL1:預充電字線
PCWL2:預充電字線
RBL:讀位元線
RWL:讀字線
WBBL:寫位元條線
WBL:寫位元線
WWL:寫字線
附圖圖示了一或多個實施例的某些態樣,並且因此不應被視為限制本案內容的範疇。
圖1圖示了根據本案內容的各態樣的被配置用於執行機器學習模型計算的記憶體內計算(CIM)陣列的實例。
圖2A和圖2B圖示了根據本案內容的各態樣的CIM陣列的實例位元單元。
圖3圖示了在CIM陣列操作期間的各種訊號的實例時序圖。
圖4圖示了根據本案內容的各態樣的基於CIM的機器學習任務加速器架構的實例。
圖5圖示了主機處理系統的實例態樣,該主機處理系統包括諸如關於圖4描述的基於CIM的加速器。
圖6圖示了加速器的實例,該加速器包括被配置為執行對迴旋神經網路模型資料的處理的混合訊號處理單元。
圖7圖示了包括混合訊號處理單元的加速器的實例,該混合訊號處理單元被配置為使用深度可分迴旋方法來執行對迴旋神經網路模型資料的處理。
圖8圖示了針對長短期記憶(LSTM)神經網路模型的實例處理流程。
圖9圖示了被配置為支援(諸如在圖8的流程中圖示的)LSTM處理的混合訊號處理單元。
圖10圖示了用於神經網路模型的閘控循環單元(GRU)態樣的實例處理流程。
圖11圖示了被配置為支援(諸如在圖10的流程中圖示的)GRU處理的混合訊號處理單元。
圖12圖示了被配置為支援通用循環神經網路(RNN)處理的混合訊號處理單元。
圖13圖示了被配置為支援具有注意力的變換器(例如,編碼器/解碼器)處理的加速器。
圖14圖示了數位後處理塊的實例。
圖15圖示了利用複數個CIM陣列進行分片(tiling)的實例。
圖16圖示了利用機器學習任務加速器來處理機器學習模型資料的實例方法。
圖17圖示了可以被配置為執行本文描述的方法的實例處理系統。
為了有助於理解,在可能的情況下,已經使用了相同的元件符號來指定對於附圖而言共同的相同元素。預期的是,在一個實施例中揭示的元素和特徵可以有益地併入其他實施例中,而不需要進一步記載。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
401:主機處理系統資料匯流排
402:加速器
404A:混合訊號處理單元(MSPU)
404B:數位訊號處理單元(DSPU)
406:硬體定序器
408:定序器記憶體
410:啟動緩衝器
414:CIM有限狀態機
416:CIM陣列
418:數位後處理(DPP)塊
420:非線性運算塊
422:DMA
426:加速器資料匯流排
428:加速器啟動緩衝器
430:共享處理部件
432:逐元素MAC
434:非線性運算塊
436:數位MAC(DMAC)
438:分片控制部件
440:DMAC塊
442:暫存器
Claims (30)
- 一種機器學習任務加速器,包括: 一或多個混合訊號處理單元(MSPU),該一或多個MSPU之每一者相應MSPU包括: 一記憶體內計算(CIM)電路; 一本端啟動緩衝器,其連接到該CIM電路並且被配置為儲存啟動資料以供該CIM電路處理; 一或多個類比數位轉換器(ADC),其連接到該CIM電路並且被配置為將來自該CIM電路的類比計算結果訊號轉換為數位計算結果資料; 一第一非線性運算電路,其連接到該一或多個ADC的一或多個輸出並且被配置為對該數位計算結果資料執行非線性處理; 一硬體定序器電路,其被配置為執行從一主機系統接收的指令並且控制該MSPU的操作;及 一本端直接記憶體存取(DMA)控制器,其被配置為控制對一共享啟動緩衝器的存取; 一數位乘法和累加(DMAC)電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行乘法和累加運算; 一數位逐元素乘法和累加電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行逐元素乘法和逐元素累加運算;及 一第二非線性運算電路,其連接到該一或多個MSPU。
- 根據請求項1之機器學習任務加速器,亦包括:一或多個數位訊號處理單元(DSPU),該一或多個DSPU之每一者相應DSPU包括: 一DSPU DMAC電路,其被配置為執行數位乘法和累加運算; 一DSPU本端啟動緩衝器,其連接到該DMAC電路,並且被配置為儲存啟動資料以供該DMAC電路處理; 一DSPU非線性運算電路,其連接到該DMAC電路並且被配置為對從該DMAC電路輸出的該資料執行非線性處理; 一DSPU硬體定序器電路,其連接到並且被配置為執行從該主機系統接收的指令並且控制相應DSPU的操作;及 一DSPU本端直接記憶體存取(DMA)控制器,其被配置為控制對一共享啟動緩衝區的存取。
- 根據請求項1之機器學習任務加速器,亦包括:一共享啟動緩衝器,其連接到該一或多個MSPU並且被配置為儲存由該一或多個MSPU產生的輸出啟動資料。
- 根據請求項1之機器學習任務加速器,其中該第一非線性運算電路包括一立方近似器和增益塊。
- 根據請求項1之機器學習任務加速器,其中該一或多個MSPU中的至少一個相應MSPU亦包括:一CIM有限狀態機(FSM),其被配置為控制將權重資料和啟動資料寫入相應MSPU的CIM電路。
- 根據請求項1之機器學習任務加速器,亦包括:複數個暫存器,其連接到該一或多個MSPU並且被配置為實現直接在該MSPU之間的資料通訊。
- 根據請求項1之機器學習任務加速器,其中該一或多個MSPU中的至少一個相應MSPU亦包括:一數位後處理電路,其被配置為應用一增益、一偏置、一移位或一池化操作中的一項。
- 根據請求項7之機器學習任務加速器,其中該數位後處理電路包括該相應MSPU的該一或多個ADC中的至少一個ADC。
- 根據請求項1之機器學習任務加速器,亦包括:一分片控制電路,其被配置為: 使得用於一神經網路模型的一單個層的權重資料被載入到該一或多個MSPU中的兩個單獨的MSPU的至少兩個單獨的CIM電路中; 從該兩個單獨的MSPU接收部分輸出;及 基於該部分輸出來產生最終輸出。
- 根據請求項9之機器學習任務加速器,其中該分片控制電路亦被配置為控制在該至少兩個單獨的CIM電路之間的行的一互連。
- 根據請求項1之機器學習任務加速器,其中該一或多個MSPU被配置為執行對一迴旋神經網路模型的一迴旋神經網路層的處理。
- 根據請求項11之機器學習任務加速器,其中該一或多個MSPU被配置為執行對該迴旋神經網路模型的一全連接層的處理。
- 根據請求項11之機器學習任務加速器,亦包括: 一共享非線性運算電路,其被配置為執行對該迴旋神經網路層的一逐點迴旋的處理, 其中: 該迴旋神經網路層包括一深度可分迴旋神經網路層,以及 該一或多個MSPU中的至少一個MSPU被配置為執行對該迴旋神經網路層的一逐深度迴旋的處理。
- 根據請求項1之機器學習任務加速器,其中該一或多個MSPU被配置為執行對一神經網路模型的一循環層的處理。
- 根據請求項1之機器學習任務加速器,其中該一或多個MSPU被配置為執行對一神經網路模型的一長短期記憶(LSTM)層的處理。
- 根據請求項1之機器學習任務加速器,其中該一或多個MSPU被配置為執行對一神經網路模型的一閘控循環單元(GRU)層的處理。
- 根據請求項1之機器學習任務加速器,其中該一或多個MSPU被配置為執行對一神經網路模型的一變換器層的處理。
- 根據請求項17之機器學習任務加速器,其中該變換器層包括一注意力部件和一前饋部件。
- 根據請求項1之機器學習任務加速器,亦包括:一硬體定序器記憶體,其連接到該硬體定序器電路並且被配置為儲存從該主機系統接收的該等指令。
- 根據請求項1之機器學習任務加速器,其中包括一CIM電路的該一或多個MSPU之每一者MSPU的該CIM電路包括複數個靜態隨機存取記憶體(SRAM)位元單元。
- 一種利用一機器學習任務加速器來處理機器學習模型資料的方法,包括以下步驟: 將該機器學習任務加速器的一或多個混合訊號處理單元(MSPU)配置為處理機器學習模型; 向一或多個經配置的MSPU提供模型輸入資料; 使用該一或多個經配置的MSPU,利用該機器學習模型來處理該模型輸入資料;及 從該一或多個經配置的MSPU接收輸出資料。
- 根據請求項21之方法,其中: 該一或多個MSPU之每一者MSPU包括: 一記憶體內計算(CIM)電路; 本端啟動緩衝器,其連接到該CIM電路並且被配置為儲存啟動資料以供該CIM電路處理; 一或多個類比數位轉換器(ADC),其連接到該CIM電路並且被配置為將來自該CIM電路的類比計算結果訊號轉換為數位計算結果資料; 一第一非線性運算電路,其連接到該一或多個ADC的一或多個輸出並且被配置為對該數位計算結果資料執行非線性處理; 一硬體定序器電路,其連接到並且被配置為執行從一主機系統接收的指令並且控制該MSPU的操作;及 一本端直接記憶體存取(DMA)控制器,其被配置為控制對一共享啟動緩衝器的存取;並且 該機器學習任務加速器包括: 一數位乘法和累加(DMAC)電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行乘法和累加運算; 一數位逐元素乘法和累加電路,其連接到該一或多個MSPU,並且被配置為對從該一或多個MSPU中的一或多個MSPU輸出的啟動資料執行逐元素乘法和逐元素累加運算;及 一第二非線性運算電路,其連接到該一或多個MSPU。
- 根據請求項22之方法,其中該機器學習任務加速器亦包括一共享啟動緩衝器,其連接到該一或多個MSPU並且被配置為儲存由該一或多個MSPU產生的輸出啟動資料。
- 根據請求項22之方法,其中該機器學習模型包括一迴旋神經網路模型。
- 根據請求項22之方法,其中利用該機器學習模型來處理該模型輸入資料包括以下步驟: 利用該一或多個MSPU的CIM電路來執行一深度可分迴旋運算的一逐深度迴旋運算;及 利用該DMAC電路來執行該深度可分迴旋運算的一逐點迴旋運算。
- 根據請求項22之方法,其中該機器學習模型包括一循環神經網路模型。
- 根據請求項22之方法,其中該機器學習模型包含至少一個長短期記憶(LSTM)層。
- 根據請求項22之方法,其中該機器學習模型包括至少一個閘控循環單元(GRU)層。
- 根據請求項22之方法,其中該機器學習模型包括一變換器神經網路模型,其包括一注意力部件和一前饋部件。
- 根據請求項22之方法,亦包括以下步驟: 在該一或多個MSPU中的兩個單獨的MSPU的至少兩個單獨的CIM電路中載入用於該機器學習模型的一單個層的權重資料; 從該兩個單獨的MSPU接收部分輸出;及 基於所接收的部分輸出來產生最終輸出。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/359,297 | 2021-06-25 | ||
US17/359,297 US20220414443A1 (en) | 2021-06-25 | 2021-06-25 | Compute in memory-based machine learning accelerator architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202307739A true TW202307739A (zh) | 2023-02-16 |
Family
ID=82656589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111123851A TW202307739A (zh) | 2021-06-25 | 2022-06-27 | 基於記憶體內計算的機器學習加速器架構 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220414443A1 (zh) |
EP (1) | EP4360002A1 (zh) |
KR (1) | KR20240026450A (zh) |
CN (1) | CN117651952A (zh) |
BR (1) | BR112023026172A2 (zh) |
TW (1) | TW202307739A (zh) |
WO (1) | WO2022272303A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114298297A (zh) * | 2021-11-04 | 2022-04-08 | 清华大学 | 存内计算装置、芯片及电子设备 |
US11935586B2 (en) * | 2022-02-11 | 2024-03-19 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory device and method for computing-in-memory (CIM) |
CN117616419A (zh) * | 2022-04-29 | 2024-02-27 | 微软技术许可有限责任公司 | 语音识别中的定制显示后处理 |
KR20240131762A (ko) * | 2023-02-24 | 2024-09-02 | 한국전자기술연구원 | BNN의 ResNet에서 외부 메모리 접근 최소화를 위한 데이터 플로우 구조 및 연산 방법 |
KR102609481B1 (ko) * | 2023-04-12 | 2023-12-04 | 주식회사 하이퍼엑셀 | 레이턴시 프로세싱 유닛 |
-
2021
- 2021-06-25 US US17/359,297 patent/US20220414443A1/en active Pending
-
2022
- 2022-06-24 BR BR112023026172A patent/BR112023026172A2/pt unknown
- 2022-06-24 WO PCT/US2022/073154 patent/WO2022272303A1/en active Application Filing
- 2022-06-24 CN CN202280043319.5A patent/CN117651952A/zh active Pending
- 2022-06-24 KR KR1020237043526A patent/KR20240026450A/ko unknown
- 2022-06-24 EP EP22744925.3A patent/EP4360002A1/en active Pending
- 2022-06-27 TW TW111123851A patent/TW202307739A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR20240026450A (ko) | 2024-02-28 |
EP4360002A1 (en) | 2024-05-01 |
WO2022272303A1 (en) | 2022-12-29 |
CN117651952A (zh) | 2024-03-05 |
US20220414443A1 (en) | 2022-12-29 |
BR112023026172A2 (pt) | 2024-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202307739A (zh) | 基於記憶體內計算的機器學習加速器架構 | |
Jiang et al. | CIMAT: A compute-in-memory architecture for on-chip training based on transpose SRAM arrays | |
Chang et al. | PXNOR-BNN: In/with spin-orbit torque MRAM preset-XNOR operation-based binary neural networks | |
US20230025068A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
Roy et al. | PIM-DRAM: Accelerating machine learning workloads using processing in commodity DRAM | |
EP4381376A1 (en) | Folding column adder architecture for digital compute in memory | |
CN117546178A (zh) | 支持逐深度卷积神经网络(cnn)的存储器内计算(cim)架构和数据流 | |
Liu et al. | Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity | |
Liu et al. | An energy-efficient mixed-bit CNN accelerator with column parallel readout for ReRAM-based in-memory computing | |
Wu et al. | PIM GPT a hybrid process in memory accelerator for autoregressive transformers | |
Zhu et al. | FAT: An in-memory accelerator with fast addition for ternary weight neural networks | |
Paulin et al. | Vau da muntanialas: Energy-efficient multi-die scalable acceleration of RNN inference | |
TW202324205A (zh) | 用於分階段逐深度迴旋的記憶體內計算架構 | |
US20230049323A1 (en) | Sparsity-aware compute-in-memory | |
US10997497B2 (en) | Calculation device for and calculation method of performing convolution | |
WO2023019103A1 (en) | Partial sum management and reconfigurable systolic flow architectures for in-memory computation | |
Han et al. | CMN: a co-designed neural architecture search for efficient computing-in-memory-based mixture-of-experts | |
US20230004350A1 (en) | Compute in memory architecture and dataflows for depth-wise separable convolution | |
US20230023859A1 (en) | Methods and Apparatus for Accessing External Memory in a Neural Network Processing System | |
US20230115373A1 (en) | Accumulator for digital computation-in-memory architectures | |
Jiang et al. | Compute-in-Memory Architecture | |
WO2023004374A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
Tagata et al. | Double MAC on a Cell: A 22-nm 8T-SRAM Based Analog In-Memory Accelerator for Binary/Ternary Neural Networks Featuring Split Wordline | |
JP2024532682A (ja) | メモリ内デジタル計算 |