[go: up one dir, main page]

TWI774067B - 記憶體裝置及其記憶體內計算方法 - Google Patents

記憶體裝置及其記憶體內計算方法 Download PDF

Info

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
Application number
TW109132536A
Other languages
English (en)
Other versions
TW202117561A (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 TW202117561A publication Critical patent/TW202117561A/zh
Application granted granted Critical
Publication of TWI774067B publication Critical patent/TWI774067B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)
  • 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個周期的示意圖。
於第一周期時,輸入資料I1~I3、I6~I8與I11~I13分別輸入至字元線WL1~WL9。所進行的操作如下所示:
Figure 109132536-A0305-02-0004-1
於第二周期時,更新3個位元並進行移動,輸入資料I6~I8、I11~I13與I16~I18分別輸入至字元線WL1~WL9。所進行的操作如下所示。
Figure 109132536-A0305-02-0004-2
於第三周期時,更新3個位元並進行移動,輸入資料I11~I13、I16~I18與I21~I23分別輸入至字元線WL1~WL9。所進行的操作如下所示。
Figure 109132536-A0305-02-0005-3
於第四周期時,更新3個位元並進行移動,輸入資料I2~I4、I7~I9與I12~I14分別輸入至字元線WL1~WL9。所進行的操作如下所示。
Figure 109132536-A0305-02-0005-4
於第五周期時,更新3個位元並進行移動,輸入資料I7~I9、I12~I14與I17~I19分別輸入至字元線WL1~WL9。所進行的操作如下所示。
Figure 109132536-A0305-02-0005-5
Figure 109132536-A0305-02-0006-6
於第六周期時,更新3個位元並進行移動,輸入資料I12~I14、I17~I19與I22~I24分別輸入至字元線WL1~WL9。所進行的操作如下所示。
Figure 109132536-A0305-02-0006-7
於第七周期時,更新3個位元並進行移動,輸入資料I3~I5、I8~I10與I13~I15分別輸入至字元線WL1~WL9。所進行的操作如下所示。
Figure 109132536-A0305-02-0006-8
於第八周期時,更新3個位元並進行移動,輸入資料I8~I10、I13~I15與I18~I20分別輸入至字元線WL1~WL9。所進行的操作如下所示。
Figure 109132536-A0305-02-0007-9
於第九周期時,更新3個位元並進行移動,輸入資料I13~I15、I18~I20與I23~I25分別輸入至字元線WL1~WL9。所進行的操作如下所示。
Figure 109132536-A0305-02-0007-10
對於傳統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)可表示如下:
Figure 109132536-A0305-02-0028-11
如第9C圖與第9D圖所示,於第二周期中,選擇字元線WL10~WL18以使得輸入資料IN2-1~IN2-9可輸入至記憶體陣列中。故而,於第二周期中,閂鎖單元L1~L16所存的部份總和可表示如下(為方便了解,將不同周期的部份總和分開列出):
Figure 109132536-A0305-02-0029-12
Figure 109132536-A0305-02-0030-13
Figure 109132536-A0305-02-0031-14
如第9E圖與第9F圖所示,於第三周期中,選擇字元線WL19~WL27以使得輸入資料IN3-1~IN3-9可輸入至記憶體陣列中。故而,於第三周期中,閂鎖單元L1~L16所存的部份總和可表示如下(為方便了解,將不同周期的部份總和分開列出):
Figure 109132536-A0305-02-0032-16
Figure 109132536-A0305-02-0033-17
Figure 109132536-A0305-02-0034-18
Figure 109132536-A0305-02-0035-20
如第9G圖與第9H圖所示,於第四周期中,選擇字元線WL28~WL36以使得輸入資料IN4-1~IN4-9可輸入至記憶體陣列中。故而,於第四周期中,閂鎖單元L1~L16所存的部份總和可表示如下(為方便了解,將不同周期的部份總和分開列出):
Figure 109132536-A0305-02-0036-21
Figure 109132536-A0305-02-0037-22
Figure 109132536-A0305-02-0038-23
Figure 109132536-A0305-02-0039-24
Figure 109132536-A0305-02-0040-25
為方便了解,將此四個周期的部份總和加總如下(即 為閂鎖單元L1~L16在此四個周期後的輸出:
Figure 109132536-A0305-02-0041-26
Figure 109132536-A0305-02-0042-27
Figure 109132536-A0305-02-0043-29
第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. 如請求項1所述之記憶體內計算方法,其中,該核心包括一原始權重矩陣。
  3. 如請求項2所述之記憶體內計算方法,其中,於展開該核心時,依據該移動參數,將該核心依行方向移動與依列方向移動以得到該些子核心,其中,各該些子核心為一權重矩陣,且該些子核心為一0矩陣,或者,該些子核心包括該核心的至少一個權重。
  4. 如請求項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)。
  5. 如請求項1所述之記憶體內計算方法,其中,暫存該些部份總和於該記憶體陣列的至少一閂鎖單元內。
  6. 一種記憶體裝置,包括:一記憶體陣列;以及一控制器,耦接至該記憶體陣列,其中,該控制器架構成:依據一移動參數,將一核心展開成複數個子核心與複數個互補子核心;根據該些子核心與該些互補子核心,將複數個權重值寫入至該記憶體陣列的複數個目標記憶體晶胞;將一輸入資料輸入至該記憶體陣列的一被選字元線;在該記憶體陣列執行一移動運算;暫存複數個部份總和;以及當已完成所有運算周期時,將所暫存的該些部份總和加總,以得到一移動運算結果。
  7. 如請求項6所述之記憶體裝置,其中,該核心包括一原始權重矩陣。
  8. 如請求項7所述之記憶體裝置,其中,於展開該核心時,依據該移動參數,將該核心依行方向移動與依列方向移動以得到該些子核心,其中,各該些子核心為一權重矩陣,且該 些子核心為一0矩陣,或者,該些子核心包括該核心的至少一個權重。
  9. 如請求項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)。
  10. 如請求項6所述之記憶體裝置,其中,暫存該些部份總和於該記憶體陣列的至少一閂鎖單元內。
TW109132536A 2019-10-18 2020-09-21 記憶體裝置及其記憶體內計算方法 TWI774067B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115344528A (zh) * 2021-05-13 2022-11-15 联咏科技股份有限公司 存储器内计算宏装置及电子装置

Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (9)

* Cited by examiner, † Cited by third party
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