TWI774067B - 記憶體裝置及其記憶體內計算方法 - Google Patents
記憶體裝置及其記憶體內計算方法 Download PDFInfo
- Publication number
- TWI774067B TWI774067B TW109132536A TW109132536A TWI774067B TW I774067 B TWI774067 B TW I774067B TW 109132536 A TW109132536 A TW 109132536A TW 109132536 A TW109132536 A TW 109132536A TW I774067 B TWI774067 B TW I774067B
- Authority
- TW
- Taiwan
- Prior art keywords
- sub
- weight
- cores
- memory
- written
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System (AREA)
- Information Transfer Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Static Random-Access Memory (AREA)
Abstract
記憶體內計算方法,執行於一記憶體裝置。該記憶體內計算方法包括:依據一移動參數,將一核心展開成複數個子核心與複數個互補子核心;根據該些子核心與該些互補子核心,將複數個權重值寫入至該記憶體裝置的一記憶體陣列的複數個目標記憶體晶胞;將一輸入資料輸入至該記憶體陣列的一被選字元線;在該記憶體陣列執行一移動運算;暫存複數個部份總和;以及當已完成所有運算周期時,將所暫存的該些部份總和加總,以得到一移動運算結果。
Description
本發明是有關於一種記憶體裝置及其記憶體內計算方法。
在執行深度學習(deep learning)訓練時,資料搬移是主要的能量成本(energy cost)。理想上,應用記憶體內計算(computing in memory)可減少25%的能量消耗,因為減少權重值的搬移量。
第1圖顯示以記憶體內計算來執行乘積和(MAC,multiplication and accumulation)的示意圖。記憶體晶胞C1~C3分別被寫入權重值W1~W3。輸入值I1~I3可以寫入至字元線或位元線(在第1圖中以寫入至字元線WL1~WL3為例做說明)。則記憶體晶胞C1~C3的晶胞電流分別為I1*W1、I2*W2與I3*W3。經由感應放大器(SA)110對晶胞電流感應後可以輸出I1*W1+I2*W2+I3*W3。
在記憶體內計算時,以卷積神經網路(Covolutional Neural Network,CNN)為例,如果遇到執行「移動(stride)」操作時,則通常需要耗費多個周期來完成。底下以3*3陣列(其為一權重陣列)的
移動操作(stride=1)為例做說明。第2圖顯示9筆權重W1~W9寫入至9個記憶體晶胞的示意圖。
第3圖顯示3*3陣列的移動操作(stride=1)。
第4圖顯示3*3陣列的移動操作(stride=1)所需的9個周期的示意圖。
於第二周期時,更新3個位元並進行移動,輸入資料I6~I8、I11~I13與I16~I18分別輸入至字元線WL1~WL9。所進行的操作如下所示。
於第三周期時,更新3個位元並進行移動,輸入資料I11~I13、I16~I18與I21~I23分別輸入至字元線WL1~WL9。所進行的操作如下所示。
於第四周期時,更新3個位元並進行移動,輸入資料I2~I4、I7~I9與I12~I14分別輸入至字元線WL1~WL9。所進行的操作如下所示。
於第五周期時,更新3個位元並進行移動,輸入資料I7~I9、I12~I14與I17~I19分別輸入至字元線WL1~WL9。所進行的操作如下所示。
於第六周期時,更新3個位元並進行移動,輸入資料I12~I14、I17~I19與I22~I24分別輸入至字元線WL1~WL9。所進行的操作如下所示。
於第七周期時,更新3個位元並進行移動,輸入資料I3~I5、I8~I10與I13~I15分別輸入至字元線WL1~WL9。所進行的操作如下所示。
於第八周期時,更新3個位元並進行移動,輸入資料I8~I10、I13~I15與I18~I20分別輸入至字元線WL1~WL9。所進行的操作如下所示。
於第九周期時,更新3個位元並進行移動,輸入資料I13~I15、I18~I20與I23~I25分別輸入至字元線WL1~WL9。所進行的操作如下所示。
對於傳統CIM操作,存在著輸入特徵圖(input feature map)的重覆饋入(duplicate feeding)。這是因為移動將產生大量輸入資料,而該些輸入資料的內容彼此重疊。傳統CIM在一條位元線上儲存一個核心(kernel),因此會造成輸入重覆饋入。
當輸入資料量變大且移動步階變小時,輸入重覆饋入變得更加嚴重。因此,如何減少輸入重覆饋入是非常重要的。如所知般,更多的輸入重覆饋入導致更多的資料搬移,更多的能量消耗與降低操作速度。
故而,如何能減少資料搬移,以進一步減少能量消耗且增快運算速度,乃是重要的。
根據本案一實例,提出一種記憶體內計算方法,執行於一記憶體裝置。該記憶體內計算方法包括:依據一移動參數,將一核心展開成複數個子核心與複數個互補子核心;根據該些子核心與該些互補子核心,將複數個權重值寫入至該記憶體裝置的一記憶體陣列的複數個目標記憶體晶胞;將一輸入資料輸入至該記憶體陣列的一被選字元線;在該記憶體陣列執行一移動運算;暫存複數個部份總和;以及當已完成所有運算周期時,將所暫存的該些部份總和加總,以得到一移動運算結果。
根據本案另一實例,提出一種記憶體裝置,包括:一記憶體陣列;以及一控制器,耦接至該記憶體陣列。該控制器架構成:依據一移動參數,將一核心展開成複數個子核心與複數個互補子核心;根據該些子核心與該些互補子核心,將複數個權重值寫入至該記憶體陣列的複數個目標記憶體晶胞;將一輸入資料輸入至該記憶體陣列的一被選字元線;在該記憶體陣列執行一移動運算;暫存複數個部
份總和;以及當已完成所有運算周期時,將所暫存的該些部份總和加總,以得到一移動運算結果。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
C1~C3:記憶體晶胞
W1~W9:權重值
I1~I25:輸入值
110:感應放大器(SA)
WL1~WL9:字元線
BL1:位元線
510~570:步驟
k:核心
SK1~SK16:子核心
CSK1~CSK16:互補子核心
800:記憶體陣列
BL1~BL16:位元線
WL1~WL36:字元線
L1~L16:閂鎖單元
1000:記憶體裝置
1010:控制器
1020:記憶體陣列
1100:記憶體陣列
第1圖顯示以記憶體內計算來執行乘積和的示意圖。
第2圖顯示9筆權重W1~W9寫入至9個記憶體晶胞的示意圖。
第3圖顯示3*3陣列的移動操作(stride=1)。
第4圖顯示3*3陣列的移動操作(stride=1)所需的9個周期的示意圖。
第5圖顯示根據本案一實施例的記憶體內計算的流程圖。
第6A圖與第6B圖顯示根據本案一實施例的將核心展開成複數個子核心與複數個互補子核心的示意圖。
第7A圖至第7D圖顯示根據本案一實施例的乘積和操作的一示範圖
第8A圖與第8B圖顯示根據本案一實施例的複數個權重值寫入至記憶體陣列的複數個記憶體晶胞內的示意圖。
第9A圖至第9H圖分別根據本案實施例中,為完成乘積加運算所需的4個周期的示意圖。
第10圖顯示根據本案一實施例的記憶體裝置的功能方塊圖。
第11A圖與第11B圖顯示根據本案一實施例的複數個權重值
寫入至記憶體陣列1100的複數個記憶體晶胞內的示意圖。
本說明書的技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者選擇性地將這些實施例中部分或全部的技術特徵加以組合。
第5圖顯示根據本案一實施例的記憶體內計算方法的流程圖。如第5圖所示,於步驟510中,以列(row)與行(column)的順序,依據移動參數,將核心(kernel)展開(unfold)成複數個子核心(sub-kernel)與複數個互補子核心(complement sub-kernel),在此,核心例如是指權重矩陣。
第6A圖與第6B圖顯示根據本案一實施例的將核心展開成複數個子核心與複數個互補子核心的示意圖。在此以移動參數等於1且核心為3*3權重矩陣為例做說明,當知本案並不受限於此。
如第6A圖所示,將核心K依行方向(亦即向右移動)移動0、1、2與3,可以得到子核心SK1、SK2、SK3與SK4;將子核心SK1、SK2、SK3與SK4依列方向(亦即向下移動)移動1,可以得到子核心SK5、SK6、SK7與SK8;將子核心SK5、SK6、SK7與SK8依列方向(亦即向下移動)移動1,可以得到子核心
SK9、SK10、SK11與SK12;以及,將子核心SK9、SK10、SK11與SK12依列方向(亦即向下移動)移動1,可以得到子核心SK13、SK14、SK15與SK16。其中,各子核心亦為3*3權重矩陣。該些子核心可為0矩陣(元素全為0),或者,該些子核心包括核心的至少一個權重。
如第6B圖所示,將各該些子核心SK1~SK16互補成複數個互補子核心CSK1~CSK16。以子核心SK1為例,由於子核心SK1包括9個權重值W1~W9,故而,經互補後,互補子核心CSK1包括0個權重值(亦即包括9個0)。以子核心SK2為例,由於子核心SK2包括6個權重值W1~W6與3個0,故而,經互補後,互補子核心CSK2包括3個權重值W7~W9與6個0。亦即,子核心的權重個數與互補子核心的權重個數的總和為核心的權重個數。
一般而言,核心包括一原始權重矩陣。當原始權重矩陣是k x l矩陣(k與l皆為自然數)且輸入資料為N x M矩陣(N與M皆為自然數),如果移動參數為1,則該些子核心的總數量為(N-k+1)x(M-l+1),且該些互補子核心的總數量為(N-k+1)x(M-l+1)。
於步驟520中,根據所展開的該些子核心與該些互補子核心,將權重值寫入至複數個目標記憶體晶胞。
以第6A圖的子核心SK1為例,由於子核心SK1包括9個權重值W1~W9,故而,如果以位元線BL1來看,權重
W1寫入至位元線BL1與字元線WL1交叉的記憶體晶胞;權重W2寫入至位元線BL1與字元線WL2交叉的記憶體晶胞;權重W3寫入至位元線BL1與字元線WL3交叉的記憶體晶胞;權重W4寫入至位元線BL1與字元線WL4交叉的記憶體晶胞;權重W5寫入至位元線BL1與字元線WL5交叉的記憶體晶胞;權重W6寫入至位元線BL1與字元線WL6交叉的記憶體晶胞;權重W7寫入至位元線BL1與字元線WL7交叉的記憶體晶胞;權重W8寫入至位元線BL1與字元線WL8交叉的記憶體晶胞;以及權重W9寫入至位元線BL1與字元線WL9交叉的記憶體晶胞。
以第6A圖的子核心SK2為例,由於子核心SK2包括6個權重值W1~W6與3個0,故而,如果以位元線BL2來看,權重W1寫入至位元線BL2與字元線WL4交叉的記憶體晶胞;權重W2寫入至位元線BL2與字元線WL5交叉的記憶體晶胞;權重W3寫入至位元線BL2與字元線WL6交叉的記憶體晶胞;權重W4寫入至位元線BL2與字元線WL7交叉的記憶體晶胞;權重W5寫入至位元線BL2與字元線WL8交叉的記憶體晶胞;權重W6寫入至位元線BL2與字元線WL9交叉的記憶體晶胞。其餘可依此類推。
於步驟530中,將輸入資料輸入至被選擇的字元線。
於步驟540中,在記憶體陣列執行乘積和運算。
於步驟550中,將個別部份總和(partial sum)存在
於各閂鎖單元內。
於步驟560中,判斷相關的互補子核心是否已被計算(或者是,判斷是否已完成所有運算周期)。如果步驟560為是,則流程接續至步驟570,將該些閂鎖單元內的該些部份總和加總,以得到乘積加結果。如果步驟560為否,則流程接續至步驟530。
第7A圖至第7D圖顯示根據本案一實施例的乘積和(MAC,multiplication and accumulation)操作的一示範圖,其中,移動(stride)參數為1。當知本案並不受限於此。如第7A圖至第7D圖所示,在進行移動操作時,如果權重核心(kernel)為3*3矩陣且移動(stride)參數為1,則將會有16種運算。以第7A圖中的運算(a)為例,輸入資料IN1-1~IN1-9分別乘上權重W1~W9。以第7A圖中的運算(b)為例,輸入資料IN1-4~IN1-9與IN2-1~IN2-3分別乘上權重W1~W9。其餘可依此類推。
在本案實施例中,為減少資料搬移,可以根據第7A圖至第7D圖中的16種運算來將權重值W1~W9分別寫入至目標記憶體晶胞內。
第8A圖與第8B圖顯示根據本案一實施例的複數個權重值寫入至記憶體陣列800的複數個記憶體晶胞內的示意圖。第8A圖與第8B圖皆是顯示記憶體陣列800的一部份。在此假設,於實際運算時,輸入資料IN1-1~IN1-9係輸入至字元線WL1~WL9;輸入資料IN2-1~IN2-9係輸入至字元線WL10~WL18;輸入資料IN3-1~IN3-9係輸入至字元線
WL19~WL27,以及,輸入資料IN4-1~IN4-9係輸入至字元線WL28~WL36。
第7A圖中的運算(a)為例,輸入資料IN1-1~IN1-9分別乘上權重W1~W9,故可以得到IN1-1*W1+IN1-2*W2+IN1-3*W3+IN1-4*W4+IN1-5*W5+IN1-6*W6+IN1-7*W7+IN1-8*W8+IN1-9*W9。故而,為將權重W1~W9寫入至位元線BL1,權重W1寫入至位元線BL1與字元線WL1交叉的記憶體晶胞;權重W2寫入至位元線BL1與字元線WL2交叉的記憶體晶胞;權重W3寫入至位元線BL1與字元線WL3交叉的記憶體晶胞;權重W4寫入至位元線BL1與字元線WL4交叉的記憶體晶胞;權重W5寫入至位元線BL1與字元線WL5交叉的記憶體晶胞;權重W6寫入至位元線BL1與字元線WL6交叉的記憶體晶胞;權重W7寫入至位元線BL1與字元線WL7交叉的記憶體晶胞;權重W8寫入至位元線BL1與字元線WL8交叉的記憶體晶胞;以及權重W9寫入至位元線BL1與字元線WL9交叉的記憶體晶胞。如此一來,當輸入資料IN1-1~IN1-9分別輸入至字元線WL1~WL9(當字元線WL1~WL9被選擇時),相關於位元線BL1的閂鎖單元L1可以儲存IN1-1*W1+IN1-2*W2+IN1-3*W3+IN1-4*W4+IN1-5*W5+IN1-6*W6+IN1-7*W7+IN1-8*W8+IN1-9*W9的值。
第7A圖中的運算(b)為例,輸入資料IN1-4~IN1-9與IN2-1~IN2-3分別乘上權重W1~W9,故可以得到
IN1-4*W1+IN1-5*W2+IN1-6*W3+IN1-7*W4+IN1-8*W5+IN1-9*W6+IN2-1*W7+IN2-2*W8+IN2-3*W9。故而,為將權重W1~W9寫入至位元線BL2,權重W1寫入至位元線BL2與字元線WL4交叉的記憶體晶胞;權重W2寫入至位元線BL2與字元線WL5交叉的記憶體晶胞;權重W3寫入至位元線BL2與字元線WL6交叉的記憶體晶胞;權重W4寫入至位元線BL2與字元線WL7交叉的記憶體晶胞;權重W5寫入至位元線BL2與字元線WL8交叉的記憶體晶胞;權重W6寫入至位元線BL2與字元線WL9交叉的記憶體晶胞;權重W7寫入至位元線BL2與字元線WL10交叉的記憶體晶胞;權重W8寫入至位元線BL2與字元線WL11交叉的記憶體晶胞;以及權重W9寫入至位元線BL2與字元線WL12交叉的記憶體晶胞。如此一來,當輸入資料IN1-4~IN1-9與IN2-1~IN2-3分別輸入至字元線WL4~WL12,相關於位元線BL2的閂鎖單元L2可以儲存IN1-4*W1+IN1-5*W2+IN1-6*W3+IN1-7*W4+IN1-8*W5+IN1-9*W6+IN2-1*W7+IN2-2*W8+IN2-3*W9的值。
第7A圖中的運算(c)為例,輸入資料IN1-7~IN1-9與IN2-1~IN2-6分別乘上權重W1~W9,故可以得到IN1-7*W1+IN1-8*W2+IN1-9*W3+IN2-1*W4+IN2-2*W5+IN2-3*W6+IN2-4*W7+IN2-5*W8+IN2-6*W9。故而,為將權重W1~W9寫入至位元線BL3,權重W1寫入至位元線BL3與字元線WL7交叉的記憶體晶胞;權重W2寫入至位元線BL3與字
元線WL8交叉的記憶體晶胞;權重W3寫入至位元線BL3與字元線WL9交叉的記憶體晶胞;權重W4寫入至位元線BL3與字元線WL10交叉的記憶體晶胞;權重W5寫入至位元線BL3與字元線WL11交叉的記憶體晶胞;權重W6寫入至位元線BL3與字元線WL12交叉的記憶體晶胞;權重W7寫入至位元線BL3與字元線WL13交叉的記憶體晶胞;權重W8寫入至位元線BL3與字元線WL14交叉的記憶體晶胞;以及權重W9寫入至位元線BL3與字元線WL15交叉的記憶體晶胞。如此一來,當輸入資料IN1-7~IN1-9與IN2-1~IN2-6分別輸入至字元線WL7~WL15,相關於位元線BL3的閂鎖單元L3可以儲存IN1-7*W1+IN1-8*W2+IN1-9*W3+IN2-1*W4+IN2-2*W5+IN2-3*W6+IN2-4*W7+IN2-5*W8+IN2-6*W9的值。
第7A圖中的運算(d)為例,輸入資料IN2-1~IN2-9分別乘上權重W1~W9,故可以得到IN2-1*W1+IN2-2*W2+IN2-3*W3+IN2-4*W4+IN2-5*W5+IN2-6*W6+IN2-7*W7+IN2-8*W8+IN2-9*W9。故而,為將權重W1~W9寫入至位元線BL4,權重W1寫入至位元線BL4與字元線WL10交叉的記憶體晶胞;權重W2寫入至位元線BL4與字元線WL11交叉的記憶體晶胞;權重W3寫入至位元線BL4與字元線WL12交叉的記憶體晶胞;權重W4寫入至位元線BL4與字元線WL13交叉的記憶體晶胞;權重W5寫入至位元線BL4與字元線WL14交叉的記憶體晶胞;權重W6寫入至位元線BL4與字
元線WL15交叉的記憶體晶胞;權重W7寫入至位元線BL4與字元線WL16交叉的記憶體晶胞;權重W8寫入至位元線BL4與字元線WL17交叉的記憶體晶胞;以及權重W9寫入至位元線BL4與字元線WL18交叉的記憶體晶胞。如此一來,當輸入資料IN2-1~IN2-9分別輸入至字元線WL10~WL18,相關於位元線BL4的閂鎖單元L4可以儲存IN2-1*W1+IN2-2*W2+IN2-3*W3+IN2-4*W4+IN2-5*W5+IN2-6*W6+IN2-7*W7+IN2-8*W8+IN2-9*W9的值。
第7B圖中的運算(e)為例,輸入資料IN1-2、IN1-3、IN3-1、IN1-5、IN1-6、IN3-4、IN1-8、IN1-9與IN3-7分別乘上權重W1~W9,故可以得到IN1-2*W1+IN1-3*W2+IN3-1*W3+IN1-5*W4+IN1-6*W5+IN3-4*W6+IN1-8*W7+IN1-9*W8+IN3-7*W9。故而,為將權重W1~W9寫入至位元線BL5,權重W1寫入至位元線BL5與字元線WL2交叉的記憶體晶胞;權重W2寫入至位元線BL5與字元線WL3交叉的記憶體晶胞;權重W3寫入至位元線BL5與字元線WL19交叉的記憶體晶胞;權重W4寫入至位元線BL5與字元線WL5交叉的記憶體晶胞;權重W5寫入至位元線BL5與字元線WL6交叉的記憶體晶胞;權重W6寫入至位元線BL5與字元線WL22交叉的記憶體晶胞;權重W7寫入至位元線BL5與字元線WL8交叉的記憶體晶胞;權重W8寫入至位元線BL5與字元線WL9交叉的記憶體晶胞;以及權重W9寫入至位元線BL5與
字元線WL25交叉的記憶體晶胞。如此一來,當輸入資料IN1-2、IN1-3、IN3-1、IN1-5、IN1-6、IN3-4、IN1-8、IN1-9與IN3-7分別輸入時,相關於位元線BL5的閂鎖單元L5可以儲存IN1-2*W1+IN1-3*W2+IN3-1*W3+IN1-5*W4+IN1-6*W5+IN3-4*W6+IN1-8*W7+IN1-9*W8+IN3-7*W9的值。
第7B圖中的運算(f)為例,輸入資料IN1-5、IN1-6、IN3-4、IN1-8、IN1-9、IN3-7、IN2-2、IN2-3與IN4-1分別乘上權重W1~W9,故可以得到IN1-5*W1+IN1-6*W2+IN3-4*W3+IN1-8*W4+IN1-9*W5+IN3-7*W6+IN2-2*W7+IN2-3*W8+IN4-1*W9。故而,為將權重W1~W9寫入至位元線BL6,權重W1寫入至位元線BL6與字元線WL5交叉的記憶體晶胞;權重W2寫入至位元線BL6與字元線WL6交叉的記憶體晶胞;權重W3寫入至位元線BL6與字元線WL22交叉的記憶體晶胞;權重W4寫入至位元線BL6與字元線WL8交叉的記憶體晶胞;權重W5寫入至位元線BL6與字元線WL9交叉的記憶體晶胞;權重W6寫入至位元線BL6與字元線WL25交叉的記憶體晶胞;權重W7寫入至位元線BL6與字元線WL11交叉的記憶體晶胞;權重W8寫入至位元線BL6與字元線WL12交叉的記憶體晶胞;以及權重W9寫入至位元線BL6與字元線WL28交叉的記憶體晶胞。如此一來,當輸入資料IN1-5、IN1-6、IN3-4、IN1-8、IN1-9、IN3-7、IN2-2、IN2-3與IN4-1分別輸入時,相關於位元線BL6的閂鎖單元L6可以儲存
IN1-5*W1+IN1-6*W2+IN3-4*W3+IN1-8*W4+IN1-9*W5+IN3-7*W6+IN2-2*W7+IN2-3*W8+IN4-1*W9的值。
第7B圖中的運算(g)為例,輸入資料IN1-8、IN1-9、IN3-7、IN2-2、IN2-3、IN4-1、IN2-5、IN2-6與IN4-4分別乘上權重W1~W9,故可以得到IN1-8*W1+IN1-9*W2+IN3-7*W3+IN2-2*W4+IN2-3*W5+IN4-1*W6+IN2-5*W7+IN2-6*W8+IN4-4*W9。故而,為將權重W1~W9寫入至位元線BL7,權重W1寫入至位元線BL7與字元線WL8交叉的記憶體晶胞;權重W2寫入至位元線BL7與字元線WL9交叉的記憶體晶胞;權重W3寫入至位元線BL7與字元線WL25交叉的記憶體晶胞;權重W4寫入至位元線BL7與字元線WL11交叉的記憶體晶胞;權重W5寫入至位元線BL7與字元線WL12交叉的記憶體晶胞;權重W6寫入至位元線BL7與字元線WL28交叉的記憶體晶胞;權重W7寫入至位元線BL7與字元線WL14交叉的記憶體晶胞;權重W8寫入至位元線BL7與字元線WL15交叉的記憶體晶胞;以及權重W9寫入至位元線BL7與字元線WL31交叉的記憶體晶胞。如此一來,當輸入資料IN1-8、IN1-9、IN3-7、IN2-2、IN2-3、IN4-1、IN2-5、IN2-6與IN4-4分別輸入時,相關於位元線BL7的閂鎖單元L7可以儲存IN1-8*W1+IN1-9*W2+IN3-7*W3+IN2-2*W4+IN2-3*W5+IN4-1*W6+IN2-5*W7+IN2-6*W8+IN4-4*W9的值。
第7B圖中的運算(h)為例,輸入資料IN2-2、IN2-3、
IN4-1、IN2-5、IN2-6、IN4-4、IN2-8、IN2-9與IN4-1分別乘上權重W1~W9,故可以得到IN2-2*W1+IN2-3*W2+IN4-1*W3+IN2-5*W4+IN2-6*W5+IN4-4*W6+IN2-8*W7+IN2-9*W8+IN4-7*W9。故而,為將權重W1~W9寫入至位元線BL8,權重W1寫入至位元線BL8與字元線WL11交叉的記憶體晶胞;權重W2寫入至位元線BL8與字元線WL12交叉的記憶體晶胞;權重W3寫入至位元線BL8與字元線WL28交叉的記憶體晶胞;權重W4寫入至位元線BL8與字元線WL14交叉的記憶體晶胞;權重W5寫入至位元線BL8與字元線WL15交叉的記憶體晶胞;權重W6寫入至位元線BL8與字元線WL31交叉的記憶體晶胞;權重W7寫入至位元線BL8與字元線WL17交叉的記憶體晶胞;權重W8寫入至位元線BL8與字元線WL18交叉的記憶體晶胞;以及權重W9寫入至位元線BL8與字元線WL34交叉的記憶體晶胞。如此一來,當輸入資料IN2-2、IN2-3、IN4-1、IN2-5、IN2-6、IN4-4、IN2-8、IN2-9與IN4-1分別輸入時,相關於位元線BL8的閂鎖單元L8可以儲存IN2-2*W1+IN2-3*W2+IN4-1*W3+IN2-5*W4+IN2-6*W5+IN4-4*W6+IN2-8*W7+IN2-9*W8+IN4-7*W9的值。
第7C圖中的運算(i)為例,輸入資料IN1-3、IN3-1、IN3-2、IN1-6、IN3-4、IN3-5、IN1-9、IN3-7與IN3-8分別乘上權重W1~W9,故可以得到IN1-3*W1+IN3-1*W2+IN3-2*W3+IN1-6*W4+IN3-4*W5+I
N3-5*W6+IN1-9*W7+IN3-7*W8+IN3-8*W9。故而,為將權重W1~W9寫入至位元線BL9,權重W1寫入至位元線BL9與字元線WL3交叉的記憶體晶胞;權重W2寫入至位元線BL9與字元線WL19交叉的記憶體晶胞;權重W3寫入至位元線BL9與字元線WL20交叉的記憶體晶胞;權重W4寫入至位元線BL9與字元線WL6交叉的記憶體晶胞;權重W5寫入至位元線BL9與字元線WL22交叉的記憶體晶胞;權重W6寫入至位元線BL9與字元線WL23交叉的記憶體晶胞;權重W7寫入至位元線BL9與字元線WL9交叉的記憶體晶胞;權重W8寫入至位元線BL9與字元線WL25交叉的記憶體晶胞;以及權重W9寫入至位元線BL9與字元線WL26交叉的記憶體晶胞。如此一來,當輸入資料IN1-3、IN3-1、IN3-2、IN1-6、IN3-4、IN3-5、IN1-9、IN3-7與IN3-8分別輸入時,相關於位元線BL9的閂鎖單元L9可以儲存IN1-3*W1+IN3-1*W2+IN3-2*W3+IN1-6*W4+IN3-4*W5+IN3-5*W6+IN1-9*W7+IN3-7*W8+IN3-8*W9的值。
第7C圖中的運算(j)為例,輸入資料IN1-6、IN3-4、IN3-5、IN1-9、IN3-7、IN3-8、IN2-3、IN4-1與IN4-2分別乘上權重W1~W9,故可以得到IN1-6*W1+IN3-4*W2+IN3-5*W3+IN1-9*W4+IN3-7*W5+IN3-8*W6+IN2-3*W7+IN4-1*W8+IN4-2*W9。故而,為將權重W1~W9寫入至位元線BL10,權重W1寫入至位元線BL10與字元線WL6交叉的記憶體晶胞;權重W2寫入至位元線BL10與字
元線WL22交叉的記憶體晶胞;權重W3寫入至位元線BL10與字元線WL23交叉的記憶體晶胞;權重W4寫入至位元線BL10與字元線WL9交叉的記憶體晶胞;權重W5寫入至位元線BL10與字元線WL25交叉的記憶體晶胞;權重W6寫入至位元線BL10與字元線WL26交叉的記憶體晶胞;權重W7寫入至位元線BL10與字元線WL12交叉的記憶體晶胞;權重W8寫入至位元線BL10與字元線WL28交叉的記憶體晶胞;以及權重W9寫入至位元線BL10與字元線WL29交叉的記憶體晶胞。如此一來,當輸入資料IN1-6、IN3-4、IN3-5、IN1-9、IN3-7、IN3-8、IN2-3、IN4-1與IN4-2分別輸入時,相關於位元線BL10的閂鎖單元L10可以儲存IN1-6*W1+IN3-4*W2+IN3-5*W3+IN1-9*W4+IN3-7*W5+IN3-8*W6+IN2-3*W7+IN4-1*W8+IN4-2*W9的值。
第7C圖中的運算(k)為例,輸入資料IN1-9、IN3-7、IN3-8、IN2-3、IN4-1、IN4-2、IN2-6、IN4-4與IN4-5分別乘上權重W1~W9,故可以得到IN1-9*W1+IN3-7*W2+IN3-8*W3+IN2-3*W4+IN4-1*W5+IN4-2*W6+IN2-3*W7+IN4-4*W8+IN4-5*W9。故而,為將權重W1~W9寫入至位元線BL11,權重W1寫入至位元線BL11與字元線WL9交叉的記憶體晶胞;權重W2寫入至位元線BL11與字元線WL25交叉的記憶體晶胞;權重W3寫入至位元線BL11與字元線WL26交叉的記憶體晶胞;權重W4寫入至位元線BL11
與字元線WL12交叉的記憶體晶胞;權重W5寫入至位元線BL11與字元線WL28交叉的記憶體晶胞;權重W6寫入至位元線BL11與字元線WL29交叉的記憶體晶胞;權重W7寫入至位元線BL11與字元線WL15交叉的記憶體晶胞;權重W8寫入至位元線BL11與字元線WL31交叉的記憶體晶胞;以及權重W9寫入至位元線BL11與字元線WL32交叉的記憶體晶胞。如此一來,當輸入資料IN1-9、IN3-7、IN3-8、IN2-3、IN4-1、IN4-2、IN2-6、IN4-4與IN4-5分別輸入時,相關於位元線BL11的閂鎖單元L11可以儲存IN1-9*W1+IN3-7*W2+IN3-8*W3+IN2-3*W4+IN4-1*W5+IN4-2*W6+IN2-3*W7+IN4-4*W8+IN4-5*W9的值。
第7C圖中的運算(l)為例,輸入資料IN2-3、IN4-1、IN4-2、IN2-6、IN4-4、IN4-5、IN2-9、IN4-7與IN4-8分別乘上權重W1~W9,故可以得到IN2-3*W1+IN4-1*W2+IN4-2*W3+IN2-6*W4+IN4-4*W5+IN4-5*W6+IN2-9*W7+IN4-7*W8+IN4-8*W9。故而,為將權重W1~W9寫入至位元線BL12,權重W1寫入至位元線BL12與字元線WL12交叉的記憶體晶胞;權重W2寫入至位元線BL12與字元線WL28交叉的記憶體晶胞;權重W3寫入至位元線BL12與字元線WL29交叉的記憶體晶胞;權重W4寫入至位元線BL12與字元線WL15交叉的記憶體晶胞;權重W5寫入至位元線BL12與字元線WL31交叉的記憶體晶胞;權重W6寫入至位元線BL12與
字元線WL32交叉的記憶體晶胞;權重W7寫入至位元線BL12與字元線WL18交叉的記憶體晶胞;權重W8寫入至位元線BL12與字元線WL34交叉的記憶體晶胞;以及權重W9寫入至位元線BL12與字元線WL35交叉的記憶體晶胞。如此一來,當輸入資料IN2-3、IN4-1、IN4-2、IN2-6、IN4-4、IN4-5、IN2-9、IN4-7與IN4-8分別輸入時,相關於位元線BL12的閂鎖單元L12可以儲存IN2-3*W1+IN4-1*W2+IN4-2*W3+IN2-6*W4+IN4-4*W5+IN4-5*W6+IN2-9*W7+IN4-7*W8+IN4-8*W9的值。
第7D圖中的運算(m)為例,輸入資料IN3-1~IN3-9分別乘上權重W1~W9,故可以得到IN3-1*W1+IN3-2*W2+IN3-3*W3+IN3-4*W4+IN3-5*W5+IN3-6*W6+IN3-7*W7+IN3-8*W8+IN3-9*W9。故而,為將權重W1~W9寫入至位元線BL13,權重W1寫入至位元線BL13與字元線WL19交叉的記憶體晶胞;權重W2寫入至位元線BL13與字元線WL20交叉的記憶體晶胞;權重W3寫入至位元線BL13與字元線WL21交叉的記憶體晶胞;權重W4寫入至位元線BL13與字元線WL22交叉的記憶體晶胞;權重W5寫入至位元線BL13與字元線WL23交叉的記憶體晶胞;權重W6寫入至位元線BL13與字元線WL24交叉的記憶體晶胞;權重W7寫入至位元線BL13與字元線WL25交叉的記憶體晶胞;權重W8寫入至位元線BL13與字元線WL26交叉的記憶體晶胞;以及權重W9寫入至位元線
BL13與字元線WL27交叉的記憶體晶胞。如此一來,當輸入資料IN3-1~IN3-9分別輸入時,相關於位元線BL13的閂鎖單元L13可以儲存IN3-1*W1+IN3-2*W2+IN3-3*W3+IN3-4*W4+IN3-5*W5+IN3-6*W6+IN3-7*W7+IN3-8*W8+IN3-9*W9的值。
第7D圖中的運算(n)為例,輸入資料IN3-4~IN3-9與IN4-1~IN4-3分別乘上權重W1~W9,故可以得到IN3-4*W1+IN3-5*W2+IN3-6*W3+IN3-7*W4+IN3-8*W5+IN3-9*W6+IN4-1*W7+IN4-2*W8+IN4-3*W9。故而,為將權重W1~W9寫入至位元線BL14,權重W1寫入至位元線BL14與字元線WL22交叉的記憶體晶胞;權重W2寫入至位元線BL14與字元線WL23交叉的記憶體晶胞;權重W3寫入至位元線BL14與字元線WL24交叉的記憶體晶胞;權重W4寫入至位元線BL14與字元線WL25交叉的記憶體晶胞;權重W5寫入至位元線BL14與字元線WL26交叉的記憶體晶胞;權重W6寫入至位元線BL14與字元線WL27交叉的記憶體晶胞;權重W7寫入至位元線BL14與字元線WL28交叉的記憶體晶胞;權重W8寫入至位元線BL14與字元線WL29交叉的記憶體晶胞;以及權重W9寫入至位元線BL14與字元線WL30交叉的記憶體晶胞。如此一來,當輸入資料IN3-4~IN3-9與IN4-1~IN4-3分別輸入時,相關於位元線BL14的閂鎖單元L14可以儲存IN3-4*W1+IN3-5*W2+IN3-6*W3+IN3-7*W4+IN3-8*W5+
IN3-9*W6+IN4-1*W7+IN4-2*W8+IN4-3*W9的值。
第7D圖中的運算(o)為例,輸入資料IN3-7~IN3-9與IN4-1~IN4-6分別乘上權重W1~W9,故可以得到IN3-7*W1+IN3-8*W2+IN3-9*W3+IN4-1*W4+IN4-2*W5+IN4-3*W6+IN4-4*W7+IN4-5*W8+IN4-6*W9。故而,為將權重W1~W9寫入至位元線BL15,權重W1寫入至位元線BL15與字元線WL28交叉的記憶體晶胞;權重W2寫入至位元線BL15與字元線WL26交叉的記憶體晶胞;權重W3寫入至位元線BL15與字元線WL27交叉的記憶體晶胞;權重W4寫入至位元線BL15與字元線WL28交叉的記憶體晶胞;權重W5寫入至位元線BL15與字元線WL29交叉的記憶體晶胞;權重W6寫入至位元線BL15與字元線WL30交叉的記憶體晶胞;權重W7寫入至位元線BL15與字元線WL31交叉的記憶體晶胞;權重W8寫入至位元線BL15與字元線WL32交叉的記憶體晶胞;以及權重W9寫入至位元線BL15與字元線WL33交叉的記憶體晶胞。如此一來,當輸入資料IN3-4~IN3-9與IN4-1~IN4-3分別輸入時,相關於位元線BL15的閂鎖單元L15可以儲存IN3-4*W1+IN3-5*W2+IN3-6*W3+IN3-7*W4+IN3-8*W5+IN3-9*W6+IN4-1*W7+IN4-2*W8+IN4-3*W9的值。
第7D圖中的運算(p)為例,輸入資料IN4-1~IN4-9分別乘上權重W1~W9,故可以得到IN4-1*W1+IN4-2*W2+IN4-3*W3+IN4-4*W4+IN4-5*W5+
IN4-6*W6+IN4-7*W7+IN4-8*W8+IN4-9*W9。故而,為將權重W1~W9寫入至位元線BL16,權重W1寫入至位元線BL16與字元線WL28交叉的記憶體晶胞;權重W2寫入至位元線BL16與字元線WL29交叉的記憶體晶胞;權重W3寫入至位元線BL16與字元線WL30交叉的記憶體晶胞;權重W4寫入至位元線BL16與字元線WL31交叉的記憶體晶胞;權重W5寫入至位元線BL16與字元線WL32交叉的記憶體晶胞;權重W6寫入至位元線BL16與字元線WL33交叉的記憶體晶胞;權重W7寫入至位元線BL16與字元線WL34交叉的記憶體晶胞;權重W8寫入至位元線BL16與字元線WL35交叉的記憶體晶胞;以及權重W9寫入至位元線BL16與字元線WL36交叉的記憶體晶胞。如此一來,當輸入資料IN4-1~IN4-9分別輸入時,相關於位元線BL16的閂鎖單元L16可以儲存IN4-1*W1+IN4-2*W2+IN4-3*W3+IN4-4*W4+IN4-5*W5+IN4-6*W6+IN4-7*W7+IN4-8*W8+IN4-9*W9的值。
第9A圖至第9H圖分別根據本案實施例中,為完成乘積加運算所需的4個周期的示意圖。
如第9A圖與第9B圖所示,於第一周期中,選擇字元線WL1~WL9以使得輸入資料IN1-1~IN1-9可輸入至記憶體陣列中。故而,於第一周期中,閂鎖單元L1~L16所存的部份總和(partial sum)可表示如下:
如第9C圖與第9D圖所示,於第二周期中,選擇字元線WL10~WL18以使得輸入資料IN2-1~IN2-9可輸入至記憶體陣列中。故而,於第二周期中,閂鎖單元L1~L16所存的部份總和可表示如下(為方便了解,將不同周期的部份總和分開列出):
如第9E圖與第9F圖所示,於第三周期中,選擇字元線WL19~WL27以使得輸入資料IN3-1~IN3-9可輸入至記憶體陣列中。故而,於第三周期中,閂鎖單元L1~L16所存的部份總和可表示如下(為方便了解,將不同周期的部份總和分開列出):
如第9G圖與第9H圖所示,於第四周期中,選擇字元線WL28~WL36以使得輸入資料IN4-1~IN4-9可輸入至記憶體陣列中。故而,於第四周期中,閂鎖單元L1~L16所存的部份總和可表示如下(為方便了解,將不同周期的部份總和分開列出):
第10圖顯示根據本案一實施例的記憶體裝置的功能方塊圖。根據本案一實施例的記憶體裝置1000包括:控制器1010與記憶體陣列1020。控制器1010耦接至記憶體陣列1020。控制器1010可控制記憶體陣列1020來執行上述實施例的乘積和運算。記憶體陣列1020的複數個記憶體晶胞存有上述實施例的權重。
第11A圖與第11B圖顯示根據本案另一實施例的複數個權重值寫入至記憶體陣列1100的複數個記憶體晶胞內的示意圖。相較於第8A圖與第8B圖,第11A圖與第11B圖的記憶體陣列1100的記憶體晶胞使用率較佳。
綜上所述,本案實施例之優點在於減少資料搬移量,
以達到更好的執行時間(execution time)。
綜上所述,本案實施例中,根據移動操作,將深度學習模型的核心(權重矩陣)展開成複數個子核心與複數個互補子核心,且根據所展開的該些子核心與該些互補子核心,將權重值寫入至相關位置。如此一來,輸入資料可以在記憶體陣列內有效重複使用,以減少運算時間與資料搬移。
本案實施例不只可應用至人工智慧(AI)領域,也可以應用至需要大量乘積和運算的任何計算領域,例如,記憶體資料搜尋(memory data search),影像處理,聲音偵測等。
本案實施例可實施於不同AI模型設計(model design),例如,完全連接層(fully connection layer),捲積層(convolution layer),多層感知(Multilayer perceptron),支援向量機器(support vector machine)等。
本案實施例可應用於任何揮發性記憶體(如SRAM,DRAM等)或任何的非揮發性記憶體(如電阻式記憶體(Resistive-RAM),相變型記憶體(Phase Change Memory),快閃記憶體,磁阻式記憶體(Magnetoresistive RAM),鐵電記憶體(Ferroelectric RAM)等)。
此外,在本案其他實施例中,字元線與位元線的角色可以互換,亦即,輸入資料可由位元線輸入,此亦在本案精神範圍內。
綜上所述,雖然本發明已以實施例揭露如上,然其
並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
510~570:步驟
Claims (10)
- 一種記憶體內計算方法,執行於一記憶體裝置,該記憶體內計算方法包括:依據一移動參數,將一核心展開成複數個子核心與複數個互補子核心;根據該些子核心與該些互補子核心,將複數個權重值寫入至該記憶體裝置的一記憶體陣列的複數個目標記憶體晶胞;將一輸入資料輸入至該記憶體陣列的一被選字元線;在該記憶體陣列執行一移動運算;暫存複數個部份總和;以及當已完成所有運算周期時,將所暫存的該些部份總和加總,以得到一移動運算結果。
- 如請求項1所述之記憶體內計算方法,其中,該核心包括一原始權重矩陣。
- 如請求項2所述之記憶體內計算方法,其中,於展開該核心時,依據該移動參數,將該核心依行方向移動與依列方向移動以得到該些子核心,其中,各該些子核心為一權重矩陣,且該些子核心為一0矩陣,或者,該些子核心包括該核心的至少一個權重。
- 如請求項2所述之記憶體內計算方法,其中,將該些子核心互補成該些互補子核心,當該原始權重矩陣是k x l矩陣(k與l皆為自然數)且該輸入資料為N x M矩陣(N與M皆為自然數),如果該移動參數為1,則該些子核心的總數量為 (N-k+1)x(M-l+1),且該些互補子核心的總數量為(N-k+1)x(M-l+1)。
- 如請求項1所述之記憶體內計算方法,其中,暫存該些部份總和於該記憶體陣列的至少一閂鎖單元內。
- 一種記憶體裝置,包括:一記憶體陣列;以及一控制器,耦接至該記憶體陣列,其中,該控制器架構成:依據一移動參數,將一核心展開成複數個子核心與複數個互補子核心;根據該些子核心與該些互補子核心,將複數個權重值寫入至該記憶體陣列的複數個目標記憶體晶胞;將一輸入資料輸入至該記憶體陣列的一被選字元線;在該記憶體陣列執行一移動運算;暫存複數個部份總和;以及當已完成所有運算周期時,將所暫存的該些部份總和加總,以得到一移動運算結果。
- 如請求項6所述之記憶體裝置,其中,該核心包括一原始權重矩陣。
- 如請求項7所述之記憶體裝置,其中,於展開該核心時,依據該移動參數,將該核心依行方向移動與依列方向移動以得到該些子核心,其中,各該些子核心為一權重矩陣,且該 些子核心為一0矩陣,或者,該些子核心包括該核心的至少一個權重。
- 如請求項7所述之記憶體裝置,其中,將該些子核心互補成該些互補子核心,當該原始權重矩陣是k x l矩陣(k與l皆為自然數)且該輸入資料為N x M矩陣(N與M皆為自然數),如果該移動參數為1,則該些子核心的總數量為(N-k+1)x(M-l+1),且該些互補子核心的總數量為(N-k+1)x(M-l+1)。
- 如請求項6所述之記憶體裝置,其中,暫存該些部份總和於該記憶體陣列的至少一閂鎖單元內。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962916797P | 2019-10-18 | 2019-10-18 | |
| US62/916,797 | 2019-10-18 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202117561A TW202117561A (zh) | 2021-05-01 |
| TWI774067B true TWI774067B (zh) | 2022-08-11 |
Family
ID=75491969
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW109132536A TWI774067B (zh) | 2019-10-18 | 2020-09-21 | 記憶體裝置及其記憶體內計算方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US11354123B2 (zh) |
| TW (1) | TWI774067B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115344528A (zh) * | 2021-05-13 | 2022-11-15 | 联咏科技股份有限公司 | 存储器内计算宏装置及电子装置 |
Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201346590A (zh) * | 2011-12-16 | 2013-11-16 | Intel Corp | 提供向量線性內插功能之指令與邏輯 |
| TWI550628B (zh) * | 2014-07-16 | 2016-09-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
| US20180096226A1 (en) * | 2016-10-04 | 2018-04-05 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
| TW201911057A (zh) * | 2017-08-11 | 2019-03-16 | 韓商愛思開海力士有限公司 | 記憶體系統及其操作方法 |
| TW201926023A (zh) * | 2017-11-30 | 2019-07-01 | 群聯電子股份有限公司 | 資料存取方法、記憶體控制電路單元以及記憶體儲存裝置 |
| TW201933190A (zh) * | 2018-01-17 | 2019-08-16 | 旺宏電子股份有限公司 | 積項和加速器陣列 |
| US20190294413A1 (en) * | 2018-03-23 | 2019-09-26 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
| TW201941159A (zh) * | 2017-04-24 | 2019-10-16 | 美商英特爾股份有限公司 | 計算最佳化機制 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9805303B2 (en) * | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
| US10733505B2 (en) * | 2016-11-10 | 2020-08-04 | Google Llc | Performing kernel striding in hardware |
| KR102442055B1 (ko) * | 2017-09-26 | 2022-09-13 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
| FI3557425T3 (fi) * | 2018-04-19 | 2024-07-10 | Aimotive Kft | Kiihdytin ja järjestelmä operaatioiden kiihdyttämiseksi |
-
2020
- 2020-09-21 TW TW109132536A patent/TWI774067B/zh active
- 2020-09-21 US US17/026,347 patent/US11354123B2/en active Active
Patent Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201346590A (zh) * | 2011-12-16 | 2013-11-16 | Intel Corp | 提供向量線性內插功能之指令與邏輯 |
| US9766886B2 (en) * | 2011-12-16 | 2017-09-19 | Intel Corporation | Instruction and logic to provide vector linear interpolation functionality |
| TWI550628B (zh) * | 2014-07-16 | 2016-09-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
| US20180096226A1 (en) * | 2016-10-04 | 2018-04-05 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
| TW201941159A (zh) * | 2017-04-24 | 2019-10-16 | 美商英特爾股份有限公司 | 計算最佳化機制 |
| TW201911057A (zh) * | 2017-08-11 | 2019-03-16 | 韓商愛思開海力士有限公司 | 記憶體系統及其操作方法 |
| TW201926023A (zh) * | 2017-11-30 | 2019-07-01 | 群聯電子股份有限公司 | 資料存取方法、記憶體控制電路單元以及記憶體儲存裝置 |
| TW201933190A (zh) * | 2018-01-17 | 2019-08-16 | 旺宏電子股份有限公司 | 積項和加速器陣列 |
| US20190294413A1 (en) * | 2018-03-23 | 2019-09-26 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202117561A (zh) | 2021-05-01 |
| US20210117187A1 (en) | 2021-04-22 |
| US11354123B2 (en) | 2022-06-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110546610B (zh) | 通过数据共享和分配增强人工智能/机器硬件的处理性能 | |
| CN110520834B (zh) | 替选循环限制 | |
| CN108108811B (zh) | 神经网络中的卷积计算方法和电子设备 | |
| CN109871236B (zh) | 具有低功率并行矩阵乘法流水线的流处理器 | |
| US11880768B2 (en) | Method and apparatus with bit-serial data processing of a neural network | |
| EP3265907B1 (en) | Data processing using resistive memory arrays | |
| TW202022711A (zh) | 使用記憶體內運算的卷積加速器 | |
| JP2019109896A (ja) | ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス | |
| TW202121202A (zh) | 資料暫存裝置、資料暫存方法以及計算方法 | |
| De La Asunción et al. | Simulation of one-layer shallow water systems on multicore and CUDA architectures | |
| CN110765710B (zh) | 基于非易失器件的通用逻辑综合方法及装置 | |
| CN112639726B (zh) | 用于执行并行计算的方法和系统 | |
| CN113010099A (zh) | 有效地利用存储器空间的神经网络处理设备及其操作方法 | |
| TWI774067B (zh) | 記憶體裝置及其記憶體內計算方法 | |
| TWI782403B (zh) | 具有平行載入儲存之共享高速暫存記憶體 | |
| CN112396085A (zh) | 识别图像的方法和设备 | |
| CN112684977B (zh) | 存储器装置及其存储器内计算方法 | |
| CN111627479B (zh) | 编码型闪存装置、系统和编码方法 | |
| CN109902821A (zh) | 一种数据处理方法、装置及相关组件 | |
| KR20240050389A (ko) | 그룹 컨볼루션 구현을 위한 신경망 아키텍처 | |
| KR20220096991A (ko) | 컨볼루션 sram 및 대각방향 축적 sram을 포함하는 신경망 가속기 | |
| CN111949405A (zh) | 资源调度方法、硬件加速器及电子设备 | |
| CN116663625A (zh) | 具有低位精度权重的用于机器学习的处理器指令集架构 | |
| WO2015133010A1 (ja) | 演算制御装置、それを備えたメモリシステム、情報処理装置、および、演算制御方法 | |
| US20220327180A1 (en) | Generic image resizer using matrix multiplier accelerator |