TWI789558B - 自適應性矩陣乘法器的系統 - Google Patents

自適應性矩陣乘法器的系統 Download PDF

Info

Publication number
TWI789558B
TWI789558B TW108140394A TW108140394A TWI789558B TW I789558 B TWI789558 B TW I789558B TW 108140394 A TW108140394 A TW 108140394A TW 108140394 A TW108140394 A TW 108140394A TW I789558 B TWI789558 B TW I789558B
Authority
TW
Taiwan
Prior art keywords
circuit
multiplication unit
buffer circuit
product
inner buffer
Prior art date
Application number
TW108140394A
Other languages
English (en)
Other versions
TW202032389A (zh
Inventor
冬岩 姜
牛迪民
鄭宏忠
Original Assignee
南韓商三星電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW202032389A publication Critical patent/TW202032389A/zh
Application granted granted Critical
Publication of TWI789558B publication Critical patent/TWI789558B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Complex Calculations (AREA)
  • Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)

Abstract

本發明提供一種自適應性矩陣乘法器的系統。在一些實 施例中,所述自適應性矩陣乘法器的系統包括第一乘法單元、第二乘法單元、記憶體加載電路及外緩衝器電路。所述第一乘法單元包括第一內緩衝器電路及第二內緩衝器電路,且所述第二乘法單元包括第一內緩衝器電路及第二內緩衝器電路。所述記憶體加載電路被配置成在突發脈衝記憶體存取模式的單個突發脈衝中將來自記憶體的數據加載到以下中:第一乘法單元的第一內緩衝器電路;以及第二乘法單元的第一內緩衝器電路。

Description

自適應性矩陣乘法器的系統
根據本公開的實施例的一個或多個方面涉及處理電路,且更具體來說涉及一種用於矩陣乘法的電路。
[相關申請案的交叉參考]
本申請主張在2019年2月21日提出申請的標題為“用於機器學習/深度學習應用的自適應性矩陣乘法加速器(ADAPTIVE MATRIX MULTIPLICATION ACCELERATOR FOR ML/DL APPLICATIONS)”的美國臨時申請第62/808,729號的優先權及權益,所述美國臨時申請的全部內容併入本申請供參考。
機器學習應用,尤其是使用深度神經網絡的機器學習應用,可能會涉及顯著比例的矩陣乘法運算。在一些應用中,矩陣乘法可消耗整個深度神經網絡的大多數運行時間。因此,用於高效地對矩陣進行乘法的系統可有助於改善深度神經網絡的性能。
本公開的目的是提供一種可用於對機器學習及深度學 習進行加速的自適應性乘法器。
根據一些實施例,提供一種自適應性矩陣乘法器的系統,所述系統包括:第一乘法單元;第二乘法單元;記憶體加載電路;以及外緩衝器電路,所述第一乘法單元包括第一內緩衝器電路及第二內緩衝器電路,所述第二乘法單元包括第一內緩衝器電路及第二內緩衝器電路,所述記憶體加載電路被配置成在突發脈衝記憶體存取模式的單個突發脈衝中將來自記憶體的數據加載到以下中:所述第一乘法單元的所述第一內緩衝器電路;以及所述第二乘法單元的所述第一內緩衝器電路。
在一些實施例中:所述第一乘法單元包括加法器電路,且所述第一乘法單元被配置成:形成以下兩者的第一乘積:所述第一乘法單元的所述第一內緩衝器電路的第一元素,與所述第一乘法單元的所述第二內緩衝器電路的第一元素;將所述第一乘積傳送到所述加法器電路;形成以下兩者的第二乘積:所述第一乘法單元的所述第一內緩衝器電路的第二元素,與所述第一乘法單元的所述第二內緩衝器電路的第二元素;以及將所述第二乘積傳送到所述加法器電路。
在一些實施例中,所述第一乘法單元包括:第一乘法電路,被配置成形成所述第一乘積;以及第二乘法電路,被配置成形成所述第二乘積。
在一些實施例中,所述加法器電路被配置成:形成所述第一乘積與所述第二乘積的第一和,以及將所述第一和發送到所述外緩衝器電路。
在一些實施例中:所述第二乘法單元包括加法器電路,且所述第二乘法單元被配置成:形成以下兩者的第三乘積:所述第二乘法單元的所述第一內緩衝器電路的第一元素,與所述第二乘法單元的所述第二內緩衝器電路的第一元素;將所述第三乘積傳送到所述第二乘法單元的所述加法器電路;形成以下兩者的第四乘積:所述第二乘法單元的所述第一內緩衝器電路的第二元素,與所述第二乘法單元的所述第二內緩衝器電路的第二元素;以及將所述第四乘積傳送到所述第二乘法單元的所述加法器電路。
在一些實施例中:所述第二乘法單元的所述加法器電路被配置成:形成所述第三乘積與所述第四乘積的第二和,以及將所述第二和發送到所述外緩衝器電路,且所述外緩衝器電路被配置成將所述第一和與所述第二和相加。
在一些實施例中:所述第一乘法單元包括加法器電路;所述第一乘法單元的所述第一內緩衝器電路包括第一迷你緩衝器及第二迷你緩衝器;所述第一乘法單元的所述第二內緩衝器電路包括第一迷你緩衝器及第二迷你緩衝器;所述第一乘法單元被配置成:形成以下兩者的第一乘積:所述第一乘法單元的所述第一內緩衝器電路的所述第一迷你緩衝器的第一元素,與所述第一乘法單元的所述第二內緩衝器電路的所述第一迷你緩衝器的第一元 素;將所述第一乘積傳送到所述加法器電路;形成以下兩者的第二乘積:所述第一乘法單元的所述第一內緩衝器電路的所述第二迷你緩衝器的第一元素,與所述第一乘法單元的所述第二內緩衝器電路的所述第二迷你緩衝器的第一元素;以及將所述第二乘積傳送到所述加法器電路。
在一些實施例中:所述第一乘法單元還被配置成:形成以下兩者的第三乘積:所述第一乘法單元的所述第一內緩衝器電路的所述第一迷你緩衝器的第二元素,與所述第一乘法單元的所述第二內緩衝器電路的所述第一迷你緩衝器的所述第一元素;將所述第三乘積傳送到所述加法器電路;形成以下兩者的第四乘積:所述第一乘法單元的所述第一內緩衝器電路的所述第二迷你緩衝器的第二元素,與所述第一乘法單元的所述第二內緩衝器電路的所述第二迷你緩衝器的所述第一元素;以及將所述第四乘積傳送到所述加法器電路。
在一些實施例中:所述加法器電路被配置成形成所述第一乘積與所述第二乘積的第一和,且將所述第一和發送到所述外緩衝器電路;且所述外緩衝器電路被配置成將所述第一和儲存在所述外緩衝器電路的第一元素中。
在一些實施例中:所述加法器電路還被配置成形成所述第三乘積與所述第四乘積的第二和,且將所述第二和發送到所述外緩衝器電路;且所述外緩衝器電路被配置成將所述第二和儲存在所述外緩衝器電路的第二元素中。
在一些實施例中:所述第一乘法單元包括加法器電路;且所述第一乘法單元被配置成:形成以下兩者的第一乘積:所述第一乘法單元的所述第一內緩衝器電路的第一元素,與所述第一乘法單元的外緩衝器電路的第一元素;將所述第一乘積傳送到所述加法器電路;形成以下兩者的第二乘積:所述第一乘法單元的所述第一內緩衝器電路的第二元素,與所述第一乘法單元的所述外緩衝器電路的第二元素;以及將所述第二乘積傳送到所述加法器電路。
在一些實施例中,所述加法器電路被配置成:形成所述第一乘積與所述第二乘積的第一和;以及將所述第一和儲存在所述第一乘法單元的所述第二內緩衝器電路的第一元素中。
在一些實施例中,所述第一乘法單元包括:第一乘法電路,被配置成形成所述第一乘積;以及第二乘法電路,被配置成形成所述第二乘積。
在一些實施例中,所述系統包括第一實體及第二實體,所述第一實體包括所述第一乘法單元及所述第二乘法單元。
在一些實施例中,所述記憶體加載電路被配置成從所述第一實體接收讀取請求以及從所述第二實體接收讀取請求,且對所述讀取請求進行仲裁。
在一些實施例中,所述記憶體加載電路被配置成以將矩陣的一部分的元素轉置的方式將所述矩陣的所述一部分從記憶體加載到所述第一乘法單元的所述第二內緩衝器電路中。
根據一些實施例,提供一種自適應性矩陣乘法器的系統,所述系統包括:第一乘法單元;第二乘法單元;記憶體加載電路;記憶體儲存電路;以及外緩衝器電路,所述第一乘法單元包括:乘法電路;第一內緩衝器電路;第二內緩衝器電路;乘法電路輸入多工器,具有連接到所述乘法電路的輸入的共用端口;乘法電路輸出多工器,具有連接到所述乘法電路的輸出的共用端口;以及第二內緩衝器電路輸出多工器,具有連接到所述第二內緩衝器電路的輸出的共用端口。
在一些實施例中,在所述第一乘法單元的第一狀態中,所述乘法電路輸入多工器被配置成將數據從所述第二內緩衝器電路輸出多工器路由到所述乘法電路的第一輸入;所述乘法電路輸出多工器被配置成將數據從所述乘法電路的所述輸出路由到所述外緩衝器電路;且所述第二內緩衝器電路輸出多工器被配置成將數據從所述第二內緩衝器電路路由到所述乘法電路輸入多工器。
在一些實施例中,在所述第一乘法單元的第二狀態中,所述乘法電路輸入多工器被配置成將數據從所述外緩衝器電路路由到所述乘法電路的所述第一輸入;所述乘法電路輸出多工器被配置成將數據從所述乘法電路的所述輸出路由到所述第二內緩衝器電路;且所述第二內緩衝器電路輸出多工器被配置成將數據從所述第二內緩衝器電路路由到所述記憶體儲存電路。
根據一些實施例,提供一種自適應性矩陣乘法器的系統,所述系統包括:第一乘法單元;第二乘法單元;用於加載來自記 憶體的數據的構件;以及外緩衝器電路,所述第一乘法單元包括第一內緩衝器電路及第二內緩衝器電路,所述第二乘法單元包括第一內緩衝器電路及第二內緩衝器電路,所述用於加載來自記憶體的數據的構件被配置成在突發脈衝記憶體存取模式的單個突發脈衝中將來自記憶體的數據加載到以下中:所述第一乘法單元的所述第一內緩衝器電路;以及所述第二乘法單元的所述第一內緩衝器電路。
根據一些實施例,提供一種實行乘法的方法,所述方法包括:響應於處理電路的第一暫存器儲存第一值,計算第一矩陣與第二矩陣的矩陣乘積,所述第一矩陣是所述矩陣乘積中的第一因數,且所述第二矩陣是所述矩陣乘積中的第二因數;響應於所述第一暫存器儲存第二值,計算所述第一矩陣的轉置與所述第二矩陣的矩陣乘積,所述第一矩陣的所述轉置是所述矩陣乘積中的第一因數,且所述第二矩陣是所述矩陣乘積中的第二因數;響應於所述第一暫存器儲存第三值,計算所述第一矩陣與所述第二矩陣的轉置的矩陣乘積,所述第一矩陣是所述矩陣乘積中的第一因數,且所述第二矩陣的所述轉置是所述矩陣乘積中的第二因數;響應於所述第一暫存器儲存第四值,計算所述第一矩陣的所述轉置與所述第二矩陣的所述轉置的矩陣乘積,所述第一矩陣的所述轉置是所述矩陣乘積中的第一因數,且所述第二矩陣的所述轉置是所述矩陣乘積中的第二因數;以及響應於所述第一暫存器儲存第五值,計算所述第一矩陣與向量的矩陣乘積,所述第一矩陣是 所述矩陣乘積中的第一因數,且所述向量是所述矩陣乘積中的第二因數。
根據一些實施例,提供一種實行乘法的方法,所述方法包括:計算儲存在第一抽象緩衝器中的第一矩陣與儲存在第二抽象緩衝器中的第二矩陣的矩陣乘積;以及將所述矩陣乘積儲存在第三抽象緩衝器中,其中:響應於第二暫存器具有第四值:將所述第一抽象緩衝器映射到第一物理緩衝器,將所述第二抽象緩衝器映射到第二物理緩衝器,且將所述第三抽象緩衝器映射到第三物理緩衝器;且響應於所述第二暫存器具有第五值:將所述第一抽象緩衝器映射到所述第一物理緩衝器,將所述第二抽象緩衝器映射到所述第三物理緩衝器,且將所述第三抽象緩衝器映射到所述第二物理緩衝器。
在一些實施例中,所述方法還包括:基於將要相乘的矩陣的尺寸而將所述第四值或所述第五值儲存在所述第二暫存器中。
根據一些實施例,提供一種實行乘法的方法,所述方法包括:在突發脈衝模式中將第一矩陣的一部分從記憶體讀取到處理電路中的第一單元中的第一緩衝器中以及所述處理電路中的第二單元中的第一緩衝器中;將第二矩陣的一部分從記憶體讀取到處理電路中的所述第一單元的第二緩衝器中以及所述第二單元中的第二緩衝器中;以及計算儲存在所述第一單元中的所述第一緩衝器中的元素與儲存在所述第二單元中的所述第一緩衝器中的元 素的矩陣乘積。
在一些實施例中,所述第一單元位元於所述處理電路中的第一實體中,且所述第二單元位元於所述處理電路中的第二實體中。
根據本公開,提供一種自適應性矩陣乘法器(adaptive matrix multiplier)。因此,可用於對機器學習及深度學習進行加速。
105:實體
110、U0、U1、U3:乘法單元
112:陣列
115:第一內緩衝器電路
120:第二內緩衝器電路
125:臨時內緩衝器電路
130:外緩衝器電路
135:累加器
140:緩衝器
150:第一加載實體模塊/第二加載實體模塊/加載實體模塊
155:加載單元
162:記憶體
165:記憶體橋
170:記憶體儲存電路
175:控制電路
180:暫存器模塊
405:乘法電路/乘法器
410:加法器/加法器電路
905:多工器
910:共用端口
參照說明書、權利要求書及附圖,將瞭解及理解本公開的這些以及其他特徵及優點,在附圖中:圖1A是根據本公開實施例的用於矩陣乘法的電路的方塊圖。
圖1B是根據本公開實施例的用於矩陣乘法的電路的方塊圖。
圖2是根據本公開實施例的矩陣維度圖。
圖3A是根據本公開實施例的數據排列圖。
圖3B是根據本公開實施例的數據排列圖。
圖4A是根據本公開實施例的用於矩陣乘法的電路的一部分的方塊圖。
圖4B是根據本公開實施例的用於矩陣乘法的電路的一部分的方塊圖。
圖4C是根據本公開實施例的用於矩陣乘法的電路的一部分的方塊圖。
圖5A是根據本公開實施例的數據排列圖。
圖5B是根據本公開實施例的數據排列圖。
圖6A是根據本公開實施例的數據排列圖。
圖6B是根據本公開實施例的數據排列圖。
圖7是根據本公開實施例的數據排列圖。
圖8A是根據本公開實施例的數據排列圖。
圖8B是根據本公開實施例的數據排列圖。
圖9A是根據本公開實施例的用於矩陣乘法的電路的方塊圖。
圖9B是根據本公開實施例的用於矩陣乘法的電路的方塊圖。
圖9C是根據本公開實施例的用於矩陣乘法的電路的方塊圖。
以下結合附圖所述的詳細說明旨在作為對根據本公開所提供的自適應性矩陣乘法器的示例性實施例的說明,而非旨在表示其中可構造或利用本公開的僅有形式。所述說明結合所示出的實施例陳述本公開的特徵。然而,應理解,可通過也旨在涵蓋於本公開的範圍內的不同實施例來實現相同的或等效的功能及結構。如本文中別處所示,相同的元件編號旨在指示相同的元件或特徵。
圖1A示出根據一些實施例的自適應性矩陣乘法器的實例。圖1A所示自適應性矩陣乘法器包括一個實體105,實體105包括四個乘法單元110(被標記為U0到U3)。實體105在以下進一步詳細論述。乘法單元110中的每一者包括(例如,八個)乘 法器或“乘法電路”405(圖4A到圖4C所示)的陣列112。乘法單元110中的每一者還包括第一內緩衝器電路115、第二內緩衝器電路120及臨時內緩衝器電路125。乘法單元110中的每一者可對可被稱為“數據字元(data word)”的計算單元進行操作(例如,處理)。依據應用而定,數據字元可為8位元的整數(INT8)、16位元的整數(INT16)、32位元的整數(INT32)、16位元的浮點(FP16)或32位元的浮點(FP32)。
一些實施例可用於實行矩陣乘法或矩陣與向量的乘法。在一些實施例中,乘法過程可至少部分地由儲存在一個或多個暫存器中(例如,儲存在暫存器模塊180中,將在以下進一步詳細論述)的值來控制。應理解,矩陣乘法是不可交換的,因此舉例來說,一般來說,矩陣乘積A×B不等於矩陣乘積B×A。一些實施例能夠在所述一個或多個暫存器的控制下實行各種乘法,包括計算兩個矩陣的乘積、計算一個矩陣與另一矩陣的轉置的乘積、兩個矩陣的轉置的乘積或矩陣與向量的乘積,如以下進一步詳細闡述。
臨時內緩衝器電路125連接到外緩衝器電路130,外緩衝器電路130包括累加器135及緩衝器(例如,暫存器的陣列)140。自適應性矩陣乘法器可包括用於第一內緩衝器電路115的第一加載實體模塊(或“記憶體加載電路”)150、用於第二內緩衝器電路120的第二加載實體模塊150及用於外緩衝器電路130的加載單元(或“加載電路”)155。加載實體模塊150及加載單元155 可通過記憶體橋(memory bridge)165來與一個或多個記憶體162通信。在一些實施例中,加載實體模塊150在突發脈衝模式中從記憶體162實行讀取操作(即,響應於發送到記憶體的單個讀取命令,記憶體可返送回多個數據字元)。與其中記憶體162中的任何一者響應於讀取命令僅發送一個數據字元的模式的操作相比,突發脈衝模式的操作可得到顯著更高的數據吞吐量。記憶體儲存電路170(或記憶體儲存單元)也可通過記憶體橋165來與所述一個或多個記憶體162通信,且可將計算結果儲存在記憶體162中。
控制電路175可控制自適應性矩陣乘法器中其他電路的操作;控制電路175可通過暫存器模塊180從主機接收命令(並將狀態信息返送回主機)。
第一內緩衝器電路115及第二內緩衝器電路120中的每一者可包括迷你緩衝器(mini-buffer)的陣列(例如,對於乘法電路的陣列112中的每一乘法電路均具有一個迷你緩衝器)。迷你緩衝器的每一陣列在概念上可被認為形成元素矩陣,矩陣的每一行對應於迷你緩衝器中的一者,且每一列對應於一組元素(每一迷你緩衝器在所述一組元素中有一個元素),與列對應的所有元素均位於相應的迷你緩衝器中的相同位置。舉例來說,第一列可對應於每一迷你緩衝器的第一元素。
在操作中,乘法電路的陣列112可形成迷你緩衝器的列的點乘積(dot product)。本文中所述的兩個等長度的向量的“點乘積”(例如,一個矩陣的列與另一矩陣的行的點乘積)是指向量的 元素的逐元素乘積之和。乘法電路的陣列112可形成例如以下兩者的點乘積:(i)第一內緩衝器電路115的迷你緩衝器的陣列的第一列與(ii)第二內緩衝器電路120的迷你緩衝器的陣列的第一行,且接著形成以下兩者的點乘積:(i)第一內緩衝器電路115的迷你緩衝器的陣列的第二列與(ii)第二內緩衝器電路120的迷你緩衝器的陣列的第一列。以下對使用此種運算來實行矩陣乘法進行更詳細地論述。
圖1B示出具有兩個實體105(每一實體105具有兩個乘法單元110)的自適應性矩陣乘法器的實例。可基於自適應性矩陣乘法器的擬定應用以及基於硬體資源對自適應性矩陣乘法器中所包括的實體105的數目及每一實體105的乘法單元110的數目進行選擇。自適應性矩陣乘法器中所包括的實體105的數目及每一實體105的乘法單元110的數目可在設計時或者在系統啟動時選擇,或者可在操作期間實時地改變。在一些實施例中,來自記憶體162的數據在具有寬度(例如,128位元)的數據匯流排上被發送到乘法單元110。單元的迷你緩衝器的數目可基於數據匯流排的寬度對數據字元的寬度的比率來選擇(例如,等於數據匯流排的寬度對數據字元的寬度的比率)。每一實體的單元的數目可基於記憶體匯流排帶寬/速度與計算(乘法)所需的周期的比值來選擇(例如,等於記憶體匯流排帶寬/速度與計算(乘法)所需的周期的比值),並通過其他微架構因素進行微調。記憶體存取操作的粒度是可被稱為“分塊(tile)”的矩形、正方形或一維陣列。分塊可 被參數化為“R_TW×C_TW”,其中R_TW是具有介於1、2、4、...、2r範圍內的值的分塊列寬,其中r是正整數(即,分塊列寬可為1、2、...或者等於2的r次冪的其他數目),且C_TW是具有介於1、2、4、...、2c範圍內的值的分塊行寬(即,分塊行寬可為1、2、...或等於2的c次冪的其他數目)。每一分塊包含多個字元。可基於自適應性矩陣乘法器的擬定應用的要求來選擇大小。每一分塊在被從記憶體提取之後可基於自適應性矩陣乘法器的擬定應用的要求以及基於實施要求而儲存在片上儲存裝置(on-chip storage)中,例如儲存在第一內緩衝器電路115或第二內緩衝器電路120中或者儲存在先進先出(first-in-first-out,FIFO)或暫存器中。
以矩陣乘法為例,可計算兩個分塊(即,A與B)的乘積且可形成第三分塊C:[公式1]C(i,j)=Σp A(i,p)* B(p,j);其中i=0、...、M;j=0、...、N;p=0、...、K
記憶體分塊A及B可被加載到第一內緩衝器電路115及第二內緩衝器電路120中。如果需要,乘積C可在以分塊C的形式發送回記憶體162之前儲存在臨時內緩衝器電路125中。
圖2示出兩個矩陣被提取到兩個片上緩衝器(on-chip buffer)(例如,被提取到第一內緩衝器電路115及第二內緩衝器電路120)中且所述兩個矩陣的乘積被寫回到記憶體中的實例。作為實例,在一些實施例中,第一分塊(“分塊A”)的大小是R_TW ×C_TW=12×8個字元,第二分塊(“分塊B”)的大小是R_TW×C_TW=8×4個字元,且第三分塊(“分塊C”)的大小是R_TW×C_TW=12×4個字元。
第一內緩衝器電路115及第二內緩衝器電路120可具有圖2中所示的儲存容量,所述儲存容量被表示為“條目×寬度”,其中寬度是緩衝器電路中的迷你緩衝器的數目,且條目或深度是每一迷你緩衝器能夠儲存的條目的數目。在圖2所示的實例中,對於第一內緩衝器電路115,條目×寬度是12個條目×8個迷你緩衝器,對於第二內緩衝器電路120,條目×寬度是4個條目×8個迷你緩衝器,且對於外緩衝器電路130,條目×寬度是12個條目×4個迷你緩衝器。迷你緩衝器寬度為1個字元,此處以32位元的寬度作為實例。為並行處理公式1的乘法,第二內緩衝器電路120可以“轉置”形式從記憶體的分塊B區加載,且在開始進行乘法之前被填充。在一些神經網絡應用中,矩陣A可為大的且恆定的,或者很少改變,而矩陣B可明顯更小且可頻繁改變。相對於矩陣B的潛伏時間(latency)可為重要的性能量度,因此,在每一迷你緩衝器中具有大量條目的第二內緩衝器電路120可能用處不大,這是由於使用大量條目可導致高的潛伏時間。在此種系統中,第二內緩衝器電路120的每一迷你緩衝器中的條目的數目可明顯比第一內緩衝器電路115的每一迷你緩衝器中的條目的數目小(例如,小2到8倍(例如,小3倍))。
在一些實施例中,每一片上“緩衝器”可依據自適應性矩 陣乘法器的擬定應用的要求及微架構要求而為緩衝器、先進先出或暫存器。
參照圖3A及圖3B,作為實例,加載實體模塊150及加載單元155每次可將一個矩陣分塊從記憶體加載到片上緩衝器,如果需要,則實行矩陣轉置,如以下進一步詳細論述。在一些實施例中,加載單元與加載實體的基本功能相似。加載單元可填充一個緩衝器(作為實例,具有8個迷你緩衝器);而當來自記憶體的數據是突發脈衝事務(burst transaction)時,加載實體可同時填充多個緩衝器。記憶體儲存電路170將外緩衝器電路130的內容儲存到記憶體的分塊C區。在一些實施例中,不需要對被寫回到記憶體的結果進行轉置。另外,當分塊沒有填充其所被讀取到的片上緩衝器時,不需要進行分塊數據的填補(padding),這是由於加載實體模塊150及加載單元155可通過對未使用的迷你緩衝器的緩衝器使能(buffer enable,BE)進行去能(例如,將BE位元設定成零)來處置部分分塊。相似地,記憶體儲存電路170可通過在將迷你緩衝器數據儲存到記憶體中時設定“字元使能”來處置部分分塊。在圖3A及圖3B中,分塊A的大小是12×8個字元,分塊B的大小是8×4個字元,且分塊C的大小是12×4個字元(如圖2中所示)。在圖3A及圖3B所示的實例中,分塊的大小(尺寸M、N及K的含義如圖2中所示)是M_TW=12、N_TW=4且K_TW=8,而且數據大小是M=8、N=3且K=5。
舉例來說,首先可計算緩衝器A的第一列與緩衝器B 的第一列的第一點乘積(第一點乘積具有值90),並將第一點乘積儲存在緩衝器C的第一條目中。其次可計算緩衝器A的第一列與緩衝器B的第二列的第二點乘積(第二點乘積具有值100),並將第二點乘積儲存在緩衝器C的第二條目中。在其他實施例中,作為替代,其次可計算緩衝器A的第二列與緩衝器B的第一列的點乘積。
乘法C(0,0)=Σi A(0,i)×B(i,0)的實例在圖4A中示出。如上所述,每一乘法單元110可包括乘法器(或“乘法電路”405)的陣列(例如並行運行的FP32乘法器)以及加法器(或“加法器電路”)410。第一內緩衝器電路115可包括迷你緩衝器(例如,8個迷你緩衝器)(各自具有12個條目)的陣列,且第二內緩衝器電路120也可包括迷你緩衝器(例如,8個迷你緩衝器)(各自具有4個條目)的陣列。在圖4A所示的實例中,外緩衝器電路130具有四個迷你緩衝器,所述四個迷你緩衝器各自具有12個條目。圖4B及圖4C分別示出C(0,1)=Σi A(0,i)×B(i,1)及C(1,0)=Σi A(1,i)×B(i,0)的乘法。
加載實體模塊150中的每一者可作為突發脈衝事務從記憶體提取多個矩陣分塊,適當地實行矩陣轉置運算(如以下進一步詳細論述),並填充實體105的相關聯的片上緩衝器。
圖5A及圖5B示出矩陣(“矩陣A”)在分塊突發脈衝中從記憶體加載到具有四個乘法單元110的實體105的乘法單元110中的三個乘法單元110的三個第一內緩衝器電路115中。如圖 所示,矩陣數據以條帶化(stripping)的方式同時加載到所述三個第一內緩衝器電路115中。
圖6A及圖6B示出將矩陣(“矩陣B”)從記憶體(圖6A)加載到具有四個乘法單元110的實體105的乘法單元110中的三個乘法單元110的三個第二內緩衝器電路120中。各個矩陣B分塊是各自從記憶體中單獨提取的,這是由於在此實例中,矩陣B“正常地”儲存在記憶體中(即,未被轉置),其中LDB=N(其中LDB=N是指將矩陣B在N維度上加載到記憶體中,例如圖6A中所示)。在整個矩陣被加載之後,所述三個第二內緩衝器電路120可並行運行(例如,被並行饋送到相應的乘法電路405中)(所述三個第二內緩衝器電路120可被並行填充或者被逐個填充,但並行運行,這是由於所述三個第二內緩衝器電路120已具有所需的數據。沒有必要逐個運行)。圖6A及圖6B中標記的“時期(epoch)”是外環(outer loop)數目。應注意,圖1A到圖6B是其中一個選項的實例。在一些實施例中,圖1A到圖6B僅是闡釋矩陣乘法器如何工作的實例,且不應被理解為對本公開進行限制。舉例來說,元件的數目(例如,實體105的數目及乘法單元110的數目)僅為實例,且如所屬領域中的技術人員應理解,在不同的實施例中可不同。操作時期(外環)也在圖7中示出。
圖7示出可如何將第一矩陣(A)儲存在具有四個乘法單元110的實體105的乘法單元110中的三個乘法單元110的三個第一內緩衝器電路115中、以及可如何將第二矩陣(B)的部分 儲存在具有四個乘法單元110的實體105的乘法單元110中的三個乘法單元110的三個第二內緩衝器電路120中的實例。乘積可在三個時期內形成,第二矩陣(B)的新的部分在每一時期被加載到所述三個第二內緩衝器電路120中。在圖7所示的實例中,存在一個實體,所述一個實體具有四個乘法單元110,在每一個第一內緩衝器電路115中具有八個迷你緩衝器以及在每一個第二內緩衝器電路120中具有八個迷你緩衝器。分塊大小為:M_TW=12;N_TW=4;且K_TW=8;且數據大小為M=12;N=10;且K=20。在K維度中具有一個內環(inner loop),且在M維度中具有一個中間環(middle loop);這些內環並行運行,且使用三個時期(外環)來完成圖6A及圖6B以及圖7中所示的矩陣乘法計算C(i,j)=Σp A(i,p)* B(p,j)。
參照圖8A及圖8B,當矩陣在從記憶體提取的同時被轉置時,加載實體模塊150及加載單元155二者均可處置矩陣轉置。圖8A是經轉置矩陣的實例且示出矩陣在記憶體中的排列,且圖8B示出具有四個乘法單元110的實體105的乘法單元110中的三個乘法單元110的三個第二內緩衝器電路120中的矩陣的排列。矩陣分塊作為突發脈衝從記憶體提取,並被加載到第二內緩衝器電路120中。所述三個第二內緩衝器電路120同時被圖8A及圖8B中所示的數據突發脈衝填充。
圖9A及圖9B示出自適應性矩陣乘法器的兩種不同配置。在圖9A所示的配置(可被稱為“選項一”)中,N維度是內環, 且在圖9B所示的配置(可被稱為“選項二”)中,K維度是內環。前者(選項一)在要實行的計算的大小在N維度中是大的時可更高效,而後者(選項二)在要實行的計算的大小在K維度中是大的時可更高效。在一些實施例中,參照圖9C(其支持選項一及選項二二者),多工器905用於在所述兩種配置之間進行選擇。每一多工器可具有三個端口,包括共用端口910。圖9C所示三個多工器包括:乘法電路輸入多工器,具有連接到乘法電路的輸入的共用端口910;乘法電路輸出多工器,具有連接到乘法電路的輸出的共用端口910;以及第二內緩衝器電路輸出多工器,具有連接到第二內緩衝器電路的輸出的共用端口910。
在實施選項二的第一狀態中,乘法電路輸入多工器被配置成將數據從第二內緩衝器電路輸出多工器路由到乘法電路的第一輸入,乘法電路輸出多工器被配置成將數據從乘法電路的輸出路由到外緩衝器電路,且第二內緩衝器電路輸出多工器被配置成將數據從第二內緩衝器電路路由到乘法電路輸入多工器。
在實施選項一的第二狀態中,乘法電路輸入多工器被配置成將數據從外緩衝器電路路由到乘法電路的第一輸入,乘法電路輸出多工器被配置成將數據從乘法電路的輸出路由到第二內緩衝器電路,且第二內緩衝器電路輸出多工器被配置成將數據從第二內緩衝器電路路由到記憶體儲存電路。
對所述兩種配置中的一者的選擇可在設計時進行(例如,可硬連線在製作有自適應性矩陣乘法器的積體電路中),或者可在 運行時進行(使用多工器,如圖9C中所示)。多工器可由主機(通過暫存器模塊180)控制,或者可在運行時由自適應性矩陣乘法器內的專用控制電路自動控制。
在一些實施例中,自適應性矩陣乘法器或其一些部分是在處理電路中實施。用語“處理電路”在本文中用於意指用於處理數據或數位信號的硬體、固體及軟體的任意組合。處理電路硬體可包括例如專用積體電路(application specific integrated circuit,ASIC)、通用或專用中央處理器(central processing unit,CPU)、數位信號處理器(digital signal processor,DSP)、圖形處理器(graphics processing unit,GPU)及可編程邏輯裝置(例如現場可編程閘陣列(field programmable gate array,FPGA))。在本文所使用的處理電路中,每一功能由被配置(即,被硬連線)成實行所述功能的硬體實行,或者由被配置成執行儲存在非暫時性儲存媒體中的指令的更通用硬體(例如CPU)實行。處理電路可製作在單個印刷電路板(printed circuit board,PCB)上,或者分布在若干互連的PCB上。處理電路可包含其他處理電路;例如,處理電路可包括在PCB上互連的兩個處理電路:FPGA及CPU。
本文中所述的物項的“一部分”是指所述物項的全部或不到全部。因此,矩陣的一部分可為整個矩陣,或可為不包括矩陣所有元素的矩陣的一部分。矩陣的矩形或正方形部分本身就是矩陣。本文中所述的兩個矩陣A與B的“矩陣乘積”(可被寫成A×B)是元素為Σp A(i,p)* B(p,j)的矩陣;作為特殊情形,“矩 陣乘積”包括矩陣與向量的乘積、以及兩個向量的點乘積。本文中所述的“矩陣乘法”是指矩陣乘積的計算。
在一些實施例中,通用乘法器可被配置成通過暫存器設定支持以下矩陣乘法:(C:=A×B)(其中A及B是矩陣):矩陣-矩陣乘法;(C:=TA×B)、(C:=A×TB)及(C:=TA×TB)(其中A及B是矩陣且矩陣前面的“T”表示轉置運算):轉置矩陣乘法;以及(Y:=A×X):作為矩陣-矩陣乘法的特殊情形的矩陣-向量乘法。
通用乘法器還可被配置成由表示不同的A/B/C緩衝器的抽象緩衝器X、緩衝器Y及緩衝器O基於所選擇的乘法選項來自適應性地選擇不同的乘法選項。記憶體突發脈衝事務可通過多個單元、多個並行運行的實體來最大化。
應理解,雖然本文中可使用用語“第一”、“第二”、“第三”等來闡述各種元件、組件、區、層及/或區段,然而這些元件、組件、區、層及/或區段不應受這些用語限制。這些用語僅用於將一個元件、組件、區、層或區段與另一元件、組件、區、層或區段區分開。因此,在不背離一些實施例的精神及範圍的條件下,本文中所論述的第一元件、第一組件、第一區、第一層或第一區段可被稱為第二元件、第二組件、第二區、第二層或第二區段。
本文中所使用的用語僅用於闡述特定實施例,而非旨在限制一些實施例。本文中所使用的用語“實質上(substantially)”、“約(about)”及類似用語用作近似用語而非用作程度用語,且旨在考慮到所屬領域中的普通技術人員將認識到的所測量值或所計算值的固有偏差。本文中所使用的用語“主要組分(major component)”指代以比組合物、聚合物或產物中的任何其他單一組分的量大的量存在於所述組合物或產物中的組分。相比之下,用語“主組分(primary component)”指代構成組合物、聚合物或產物的按重量計至少50%或大於50%的組分。本文中所使用的用語“主要部分(major portion)”在應用於多個項時意指這些項的至少一半。
除非上下文另外清楚地指明,否則本文中所使用的單數形式“一(a及an)”旨在也包括複數形式。應進一步理解,在本說明書中所使用的用語“包括(comprises及/或comprising)”指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但並不排除一個或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。本文中所使用的用語“及/或(and/or)”包括相關聯列出項中的一者或多者的任意及所有組合。當位元於一系列元件之前時,例如“...中的至少一者(at least one of)”等表達是修飾整個所述一系列元件而並非修飾所述一系列中的個別元件。此外,在闡述實施例時所使用的“可(may)”指代“本公開的一個或多個實施例”。另外,用語“示例性(exemplary)” 旨在指代實例或例證。本文中所使用的用語“使用(use)”、“正使用(using)”、“被使用(used)”可被視為分別與用語“利用(utilize、utilizing及utilized)”、“正利用(utilizing)”、“被利用(utilized)”同義。
應理解,當將元件或層稱為“位於”另一元件或層“上”、“連接到”、“耦合到”或“相鄰於”另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接到、直接耦合到或直接相鄰於所述另一元件或層,或者可存在一個或多個中間元件或層。相比之下,當將元件或層稱為“直接位於”另一元件或層“上”、“直接連接到”、“直接耦合到”或“緊鄰於”另一元件或層時,則不存在中間元件或層。
本文所敘述的任何數值範圍均旨在包括位於所敘述的範圍內的同一數值精度的所有子範圍。舉例來說,“1.0至10.0”的範圍旨在包括位於所敘述的最小值1.0與所敘述的最大值10.0之間(且包括所敘述的最小值1.0及所敘述的最大值10.0)的所有子範圍,即最小值等於或大於1.0且最大值等於或小於10.0,例如2.4至7.6。本文所敘述的任何最大數值限制均旨在包括其中所包含的所有更低數值限制,且本說明書中所敘述的任何最小數值限制均旨在包括其中所包含的所有更高數值限制。
雖然本文中已具體闡述及示出了自適應性矩陣乘法器的示例性實施例,然而對於所屬領域中的技術人員來說,許多修改及變化形式將顯而易見。因此,應理解,根據本公開的原理所 構造的自適應性矩陣乘法器可以除本文中所具體闡述的方式之外的方式實施。本公開還界定在以下發明申請專利範圍及其等效內容中。
105:實體
110、U0、U1、U3:乘法單元
112:陣列
115:第一內緩衝器電路
120:第二內緩衝器電路
125:臨時內緩衝器電路
130:外緩衝器電路
135:累加器
140:緩衝器
150:第一加載實體模塊/第二加載實體模塊/加載實體模塊
155:加載單元
162:記憶體
165:記憶體橋
170:記憶體儲存電路
175:控制電路
180:暫存器模塊

Claims (20)

  1. 一種自適應性矩陣乘法器的系統,包括:第一乘法單元;第二乘法單元;記憶體加載電路;以及外緩衝器電路,所述第一乘法單元包括第一內緩衝器電路及第二內緩衝器電路,所述第二乘法單元包括第一內緩衝器電路及第二內緩衝器電路,所述記憶體加載電路連接到所述第一乘法單元的所述第一內緩衝器電路及所述第二乘法單元的所述第一內緩衝器電路,所述記憶體加載電路被配置成在突發脈衝記憶體存取模式的單個突發脈衝中將來自記憶體的數據加載到以下中:所述第一乘法單元的所述第一內緩衝器電路;以及所述第二乘法單元的所述第一內緩衝器電路。
  2. 如請求項1所述的系統,其中:所述第一乘法單元包括加法器電路,且所述第一乘法單元被配置成:形成以下兩者的第一乘積:所述第一乘法單元的所述第一內緩衝器電路的第一元素,與 所述第一乘法單元的所述第二內緩衝器電路的第一元素;將所述第一乘積傳送到所述加法器電路;形成以下兩者的第二乘積:所述第一乘法單元的所述第一內緩衝器電路的第二元素,與所述第一乘法單元的所述第二內緩衝器電路的第二元素;以及將所述第二乘積傳送到所述加法器電路。
  3. 如請求項2所述的系統,其中所述第一乘法單元包括:第一乘法電路,被配置成形成所述第一乘積;以及第二乘法電路,被配置成形成所述第二乘積。
  4. 如請求項2所述的系統,其中所述加法器電路被配置成:形成所述第一乘積與所述第二乘積的第一和,以及將所述第一和發送到所述外緩衝器電路。
  5. 如請求項4所述的系統,其中:所述第二乘法單元包括加法器電路,且所述第二乘法單元被配置成:形成以下兩者的第三乘積:所述第二乘法單元的所述第一內緩衝器電路的第一 元素,與所述第二乘法單元的所述第二內緩衝器電路的第一元素;將所述第三乘積傳送到所述第二乘法單元的所述加法器電路;形成以下兩者的第四乘積:所述第二乘法單元的所述第一內緩衝器電路的第二元素,與所述第二乘法單元的所述第二內緩衝器電路的第二元素;以及將所述第四乘積傳送到所述第二乘法單元的所述加法器電路。
  6. 如請求項5所述的系統,其中:所述第二乘法單元的所述加法器電路被配置成:形成所述第三乘積與所述第四乘積的第二和,以及將所述第二和發送到所述外緩衝器電路,且所述外緩衝器電路被配置成將所述第一和與所述第二和相加。
  7. 如請求項1所述的系統,其中:所述第一乘法單元包括加法器電路;所述第一乘法單元的所述第一內緩衝器電路包括第一迷你緩衝器及第二迷你緩衝器;所述第一乘法單元的所述第二內緩衝器電路包括第一迷你緩 衝器及第二迷你緩衝器;所述第一乘法單元被配置成:形成以下兩者的第一乘積:所述第一乘法單元的所述第一內緩衝器電路的所述第一迷你緩衝器的第一元素,與所述第一乘法單元的所述第二內緩衝器電路的所述第一迷你緩衝器的第一元素;將所述第一乘積傳送到所述加法器電路;形成以下兩者的第二乘積:所述第一乘法單元的所述第一內緩衝器電路的所述第二迷你緩衝器的第一元素,與所述第一乘法單元的所述第二內緩衝器電路的所述第二迷你緩衝器的第一元素;以及將所述第二乘積傳送到所述加法器電路。
  8. 如請求項7所述的系統,其中:所述第一乘法單元還被配置成:形成以下兩者的第三乘積:所述第一乘法單元的所述第一內緩衝器電路的所述第一迷你緩衝器的第二元素,與所述第一乘法單元的所述第二內緩衝器電路的所述第一迷你緩衝器的所述第一元素;將所述第三乘積傳送到所述加法器電路; 形成以下兩者的第四乘積:所述第一乘法單元的所述第一內緩衝器電路的所述第二迷你緩衝器的第二元素,與所述第一乘法單元的所述第二內緩衝器電路的所述第二迷你緩衝器的所述第一元素;以及將所述第四乘積傳送到所述加法器電路。
  9. 如請求項8所述的系統,其中:所述加法器電路被配置成形成所述第一乘積與所述第二乘積的第一和,且將所述第一和發送到所述外緩衝器電路;以及所述外緩衝器電路被配置成將所述第一和儲存在所述外緩衝器電路的第一元素中。
  10. 如請求項9所述的系統,其中:所述加法器電路還被配置成形成所述第三乘積與所述第四乘積的第二和,且將所述第二和發送到所述外緩衝器電路;以及所述外緩衝器電路被配置成將所述第二和儲存在所述外緩衝器電路的第二元素中。
  11. 如請求項1所述的系統,其中:所述第一乘法單元包括加法器電路;以及所述第一乘法單元被配置成:形成以下兩者的第一乘積:所述第一乘法單元的所述第一內緩衝器電路的第一元素,與 所述第一乘法單元的所述外緩衝器電路的第一元素;將所述第一乘積傳送到所述加法器電路;形成以下兩者的第二乘積:所述第一乘法單元的所述第一內緩衝器電路的第二元素,與所述第一乘法單元的所述外緩衝器電路的第二元素;以及將所述第二乘積傳送到所述加法器電路。
  12. 如請求項11所述的系統,其中所述加法器電路被配置成:形成所述第一乘積與所述第二乘積的第一和;以及將所述第一和儲存在所述第一乘法單元的所述第二內緩衝器電路的第一元素中。
  13. 如請求項11所述的系統,其中所述第一乘法單元包括:第一乘法電路,被配置成形成所述第一乘積;以及第二乘法電路,被配置成形成所述第二乘積。
  14. 如請求項1所述的系統,包括第一實體及第二實體,所述第一實體包括所述第一乘法單元及所述第二乘法單元。
  15. 如請求項14所述的系統,其中所述記憶體加載電路被配置成從所述第一實體接收讀取請求以及從所述第二實體接收讀取請求,且對所述讀取請求進行仲裁。
  16. 如請求項1所述的系統,其中所述記憶體加載電路被配置成以轉置矩陣的一部分的元素的方式將所述矩陣的所述一部分從所述記憶體加載到所述第一乘法單元的所述第二內緩衝器電路中。
  17. 一種自適應性矩陣乘法器的系統,包括:第一乘法單元;第二乘法單元;記憶體加載電路;記憶體儲存電路;以及外緩衝器電路,所述第一乘法單元包括:乘法電路;第一內緩衝器電路;第二內緩衝器電路;乘法電路輸入多工器,具有連接到所述乘法電路的輸入的共用端口;乘法電路輸出多工器,具有連接到所述乘法電路的輸出的共用端口;以及第二內緩衝器電路輸出多工器,具有連接到所述第二內緩衝器電路的輸出的共用端口,所述乘法電路輸出多工器連接在所述乘法電路與所述第二內緩衝器電路之間。
  18. 如請求項17所述的系統,其中在所述第一乘法單元的第一狀態中,所述乘法電路輸入多工器被配置成將數據從所述第二內緩衝器電路輸出多工器路由到所述乘法電路的第一輸入;所述乘法電路輸出多工器被配置成將數據從所述乘法電路的所述輸出路由到所述外緩衝器電路;以及所述第二內緩衝器電路輸出多工器被配置成將數據從所述第二內緩衝器電路路由到所述乘法電路輸入多工器。
  19. 如請求項18所述的系統,其中在所述第一乘法單元的第二狀態中,所述乘法電路輸入多工器被配置成將數據從所述外緩衝器電路路由到所述乘法電路的所述第一輸入;所述乘法電路輸出多工器被配置成將數據從所述乘法電路的所述輸出路由到所述第二內緩衝器電路;以及所述第二內緩衝器電路輸出多工器被配置成將數據從所述第二內緩衝器電路路由到所述記憶體儲存電路。
  20. 一種自適應性矩陣乘法器的系統,包括:第一乘法單元;第二乘法單元;用於加載來自記憶體的數據的構件;以及外緩衝器電路,所述第一乘法單元包括第一內緩衝器電路及第二內緩衝器電 路,所述第二乘法單元包括第一內緩衝器電路及第二內緩衝器電路,所述用於加載來自所述記憶體的所述數據的所述構件連接到所述第一乘法單元的所述第一內緩衝器電路及所述第二乘法單元的所述第一內緩衝器電路,所述用於加載來自所述記憶體的所述數據的所述構件被配置成在突發脈衝記憶體存取模式的單個突發脈衝中將來自所述記憶體的所述數據加載到以下中:所述第一乘法單元的所述第一內緩衝器電路;以及所述第二乘法單元的所述第一內緩衝器電路。
TW108140394A 2019-02-21 2019-11-07 自適應性矩陣乘法器的系統 TWI789558B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962808729P 2019-02-21 2019-02-21
US62/808,729 2019-02-21
US16/407,064 2019-05-08
US16/407,064 US11475102B2 (en) 2019-02-21 2019-05-08 Adaptive matrix multiplication accelerator for machine learning and deep learning applications

Publications (2)

Publication Number Publication Date
TW202032389A TW202032389A (zh) 2020-09-01
TWI789558B true TWI789558B (zh) 2023-01-11

Family

ID=72141899

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108140394A TWI789558B (zh) 2019-02-21 2019-11-07 自適應性矩陣乘法器的系統

Country Status (5)

Country Link
US (3) US11475102B2 (zh)
JP (1) JP7273746B2 (zh)
KR (1) KR102541465B1 (zh)
CN (1) CN111597501A (zh)
TW (1) TWI789558B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112434255B (zh) * 2020-12-03 2023-12-08 成都海光微电子技术有限公司 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
US11556337B2 (en) 2021-04-12 2023-01-17 Analog Devices International Unlimited Company Parallel matrix multiplication technique optimized for memory fetches
US20230068168A1 (en) * 2021-08-18 2023-03-02 Micron Technology, Inc. Neural network transpose layer removal

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200739341A (en) * 2006-01-16 2007-10-16 Thomson Licensing Method and apparatus for recording high-speed input data into a matrix of memory devices
US20140365548A1 (en) * 2013-06-11 2014-12-11 Analog Devices Technology Vector matrix product accelerator for microprocessor integration
US20180189063A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
TW201905914A (zh) * 2017-05-30 2019-02-01 美商司固科技公司 具有可原地重寫之記憶體的資料儲存裝置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805479B2 (en) 2006-03-28 2010-09-28 Michael Andrew Moshier Scalable, faster method and apparatus for montgomery multiplication
US7792895B1 (en) 2006-06-16 2010-09-07 Nvidia Corporation Efficient matrix multiplication on a parallel processing device
US8051124B2 (en) 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
US9489176B2 (en) 2011-09-15 2016-11-08 Exxonmobil Upstream Research Company Optimized matrix and vector operations in instruction limited algorithms that perform EOS calculations
US9201848B2 (en) 2012-07-27 2015-12-01 The United States Of America As Represented By The Secretary Of The Air Force Floating point matrix multiplication co-processor
US10061748B2 (en) 2015-12-11 2018-08-28 Sap Se Adaptive tile matrix representation and multiplication
US10073815B2 (en) 2016-05-31 2018-09-11 Palo Alto Research Cener Incorporated System and method for speeding up general matrix-matrix multiplication on the GPU
US10528321B2 (en) 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US20190392297A1 (en) * 2016-12-30 2019-12-26 Intel Corporation Deep learning hardware
US10146738B2 (en) * 2016-12-31 2018-12-04 Intel Corporation Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data
US10140252B2 (en) 2017-02-28 2018-11-27 Microsoft Technology Licensing, Llc Hardware node with matrix-vector multiply tiles for neural network processing
US10902087B2 (en) * 2018-10-31 2021-01-26 Advanced Micro Devices, Inc. Device and method for accelerating matrix multiply operations as a sum of outer products

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200739341A (en) * 2006-01-16 2007-10-16 Thomson Licensing Method and apparatus for recording high-speed input data into a matrix of memory devices
US20140365548A1 (en) * 2013-06-11 2014-12-11 Analog Devices Technology Vector matrix product accelerator for microprocessor integration
US20180189063A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
TW201905914A (zh) * 2017-05-30 2019-02-01 美商司固科技公司 具有可原地重寫之記憶體的資料儲存裝置

Also Published As

Publication number Publication date
US20200272479A1 (en) 2020-08-27
US20200356375A1 (en) 2020-11-12
JP7273746B2 (ja) 2023-05-15
CN111597501A (zh) 2020-08-28
KR102541465B1 (ko) 2023-06-08
JP2020135899A (ja) 2020-08-31
US11475102B2 (en) 2022-10-18
US20230041850A1 (en) 2023-02-09
TW202032389A (zh) 2020-09-01
KR20200102332A (ko) 2020-08-31

Similar Documents

Publication Publication Date Title
TWI789558B (zh) 自適應性矩陣乘法器的系統
WO2019128404A1 (zh) 矩阵乘法器
CN107301455B (zh) 用于卷积神经网络的混合立方体存储系统及加速计算方法
KR102292449B1 (ko) 메모리내 연산을 위한 장치 및 방법
US9110778B2 (en) Address generation in an active memory device
US9582466B2 (en) Vector register file
WO2019007095A1 (zh) 运算加速器
EP3896574A1 (en) System and method for computing
KR20200108774A (ko) 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법
EP4318275A1 (en) Matrix multiplier and method for controlling matrix multiplier
US9146696B2 (en) Multi-granularity parallel storage system and storage
CN111615685B (zh) 可编程乘加阵列硬件
WO2021036729A1 (zh) 一种矩阵运算方法、运算装置以及处理器
CN115698970A (zh) 具有近存储器地址生成的存储器访问命令
US9171593B2 (en) Multi-granularity parallel storage system
CN113254359A (zh) 用于执行存储器内计算的方法和存储器模块
CN115860080A (zh) 计算核、加速器、计算方法、装置、设备、介质及系统
US11550736B1 (en) Tensorized direct memory access descriptors
JP7180751B2 (ja) ニューラルネットワーク回路
Cain et al. Convolution processing unit featuring adaptive precision using dynamic reconfiguration
US11983128B1 (en) Multidimensional and multiblock tensorized direct memory access descriptors
EP4195027A1 (en) Computational circuit with hierarchical accumulator
US20240134930A1 (en) Method and apparatus for neural network weight block compression in a compute accelerator
US20210288650A1 (en) Semiconductor device and circuit layout method
George-Vladut Improvements in Data Transfer for a MapReduce Accelerator