TWI781351B - 對神經網路第一層的第一神經元的值實行計算的方法及系統 - Google Patents
對神經網路第一層的第一神經元的值實行計算的方法及系統 Download PDFInfo
- Publication number
- TWI781351B TWI781351B TW108137250A TW108137250A TWI781351B TW I781351 B TWI781351 B TW I781351B TW 108137250 A TW108137250 A TW 108137250A TW 108137250 A TW108137250 A TW 108137250A TW I781351 B TWI781351 B TW I781351B
- Authority
- TW
- Taiwan
- Prior art keywords
- pattern
- cell array
- rows
- memory
- storage cell
- Prior art date
Links
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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/10—Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/14—Implementation of control logic, e.g. test mode decoders
- G11C29/16—Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/48—Arrangements in static stores specially adapted for testing by means external to the store, e.g. using direct memory access [DMA] or using auxiliary access paths
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Semiconductor Memories (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Feedback Control In General (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
本申請公開一種可改善基於硬體的神經網路的缺陷容忍度
的方法及裝置。在一個實施例中,一種對神經網路中第一層的第一神經元上的值實行計算的方法包括:接收儲存胞元陣列的第一圖案;根據第三圖案確定儲存胞元陣列的第二圖案;根據第一圖案及第二圖案確定儲存胞元陣列的至少一對行;對儲存胞元陣列的所述至少一對行中的每一對中的兩個行的輸入資料進行切換;以及對儲存胞元陣列的所述至少一對行中的每一對中的所述兩個行的輸出資料進行切換,以確定第一層的第一神經元上的值。
Description
本申請是有關於一種對神經網路中第一層的第一神經元上的值實行計算的方法。
受動物大腦啟發的人工神經網路(artificial neural network,ANN)是機器學習中使用的主要工具之一。神經網路由輸入層及輸出層組成。在常見的ANN實施方案中,人工神經元之間的連接處的信號是實數,且每一人工神經元的輸出是通過所述每一人工神經元的輸入之和的一些非線性函數來計算。人工神經元之間的連接被稱為「邊緣」。人工神經元及邊緣通常具有隨著學習的進行而調整的權重。權重增大或減小表示兩個神經元之間的連接處的信號的強度增大或減小。人工神經元可具有閾值,使得只有當聚合信號(aggregate signal)越過此閾值時,才會發送信號。通常,人工神經元被聚合到層中。不同的層可對所述不同層的輸入實行不同種類的變換。信號從第一層(輸入層)行進到最後一
層(輸出層),這可能是在多次穿越所述層之後。
因此神經元的網路通過具有不同傳輸效率的邊緣進行連接。流經邊緣的資訊會與反映邊緣的效率及準確度的常數相乘。在基於硬體的ANN中,神經元的權重可被程式設計在儲存胞元陣列的胞元上。儲存胞元陣列中的有缺陷胞元會影響信號在相應的層中的神經元之間行進的準確度。因此,需要開發一種方法來改善人工神經網路對儲存胞元陣列中的有缺陷胞元的容忍度。
在一個實施例中,一種對神經網路中第一層的第一神經元上的值實行計算的方法包括:接收儲存胞元陣列的第一圖案,其中所述儲存胞元陣列包括多個儲存胞元,所述多個儲存胞元被配置成多個行及多個列;使用第三圖案確定所述儲存胞元陣列的第二圖案;根據所述第一圖案及所述第二圖案確定所述儲存胞元陣列的至少一對行;對所述儲存胞元陣列的所述至少一對行中的每一對中的兩個行的輸入資料進行切換;使用儲存在所述多個儲存胞元中的所述輸入資料實行逐位元計算;以及對所述儲存胞元陣列的所述至少一對行中的每一對中的所述兩個行的輸出資料進行切換,以確定所述第一層的所述第一神經元上的所述值。
100:微影系統
100:全連接網路/網路
102、104、W1,1、W1,2、W1,3、W1,M、W2,1、W2,2、W2,3、W2,M、W3,1、W3,2、W3,3、W3,M、W4,1、WN,1、WN,2、WN,3、WN,M、WM,1、X1,1、X2,1、X3,1、XN,1:權重
106、106-1、106-2、106-3、106-4、106-M、108、108-1、108-2、108-3、108-N、110、110-1、110-2、110-P:神經元
112:輸入層
114:隱藏層
116:輸出層
118、120、200、[W]N×M、[W]64×64、[W]’N×M、[X]P×N、[X]10×64、[X]64×10:權重圖案
202、202-1、202-2、202-3、202-a、202-b、202-j、202-M、302、302-1、302-2、302-3、302-j、302-M:行
204-1、204-2、204-3、204-N、304、304-1、304-2、304-3、304-N、#、#1、#2、#3、#4、#5、#6、#7、#8、#9、#10:列
206:權重圖案靈敏度(WPS)/第一WPS
300、[D]N×M、[D1]64×64、[D1]N×M、[D2]10×64:缺陷圖案/檢測圖案
306、306-1、306-2:缺陷圖案指示符(DPI)
400、410、420:曲線圖
402、422:準確度下降值
404:注入缺陷
412:不正確計數
414:錯誤數目
426:曲線
500、510:示意圖
512:故障位元數目(FBC)
514:統計嚴重性(SS)
600、660、800:系統
602:記憶體宏
604:儲存胞元陣列
606:寫入驅動器(WD)
608:多工器(MUX)
610:讀出放大器(SA)
612:控制電路
614、616:選擇器
618:記憶體
620:控制器
622:輸入
624:權重圖案靈敏度(WPS)
630:輸出
650:神經網路巨集/網路巨集/系統介面
700、730、900:方法
702、704、706、708、710、712、714、716、718、720、732、734、736、738、902、904、906、908、910、912、914、916、918、920:操作
740:表
802:緩衝器
804:處理器
806:EN信號
a1、a2、a3、a4、aM、b1、b2、b3、bN、c1、c2、c3、cP:值
temp 1:第一臨時參數
temp 2:第二臨時參數
[A]、[A]M×1、[A]’1×M、[A]’M×1:輸入資料
[B]N×M、[B]’N×M:輸出資料
結合附圖閱讀以下詳細說明,會最好地理解本公開的各
個方面。應注意,各種特徵未必按比例繪製。事實上,為使例示清晰起見,可任意增大或減小各種特徵的尺寸及幾何形狀。
圖1示出根據本公開一些實施例的人工神經網路(ANN)的全連接網路(fully connected network)的示例圖。
圖2示出根據本公開一些實施例的網路中的輸入層與隱藏層之間的示例性權重圖案。
圖3A示出根據本公開一些實施例的儲存胞元陣列的示例性缺陷圖案[D]N×M。
圖3B示出根據本公開一些實施例的儲存胞元陣列的示例性缺陷圖案[D]N×M。
圖4A示出根據本公開一些實施例的曲線圖,所述曲線圖示出第一儲存胞元陣列及第二儲存胞元陣列中的注入缺陷的數目與準確度下降值之間的關係。
圖4B示出根據本公開一些實施例的曲線圖,所述曲線圖示出不正確計數與錯誤數目之間的關係。
圖4C示出根據本公開一些實施例的曲線圖,所述曲線圖示出與第二權重圖案[X]10×64對應的第二儲存胞元陣列的每一行處的準確度下降值。
圖5A示出根據本公開一些實施例的用於對儲存胞元陣列上的權重圖案及輸入資料進行重新排列的示意圖。
圖5B示出根據本公開一些實施例的用於對儲存胞元陣列上的權重圖案及輸入資料進行重新排列的示意圖。
圖6A示出根據本公開一些實施例的系統的方塊圖,所述系統用於確定網路的隱藏層上的神經元上的值。
圖6B示出根據本公開一些實施例的系統的方塊圖,所述系統用於確定網路的隱藏層上的神經元上的值。
圖7A示出根據本公開一些實施例的方法的流程圖,所述方法使用神經網路巨集對網路的隱藏層上的神經元中的每一者上的值實行計算。
圖7B示出根據本公開一些實施例的方法730的流程圖,方法730用於通過選擇器614中的狀態機來對I/O進行交換。
圖7C示出根據本公開一些實施例的表,所述表具有圖7B中所呈現的交換過程中的示例性資料。
圖8示出根據本公開一些實施例的系統的方塊圖,所述系統用於確定網路的隱藏層上的神經元上的值。
圖9示出根據本公開一些實施例的方法的流程圖,所述方法對網路的隱藏層上的神經元中的每一者上的值實行計算。
以下公開闡述了用於實施主題的不同特徵的各種示例性實施例。以下闡述元件及排列的具體實例以簡化本公開。當然,這些僅為實例且並非旨在進行限制。例如,應理解,當稱一元件「連接到」或「耦合到」另一元件時,所述元件可直接連接到或耦合到所述另一元件,或者也可存在一個或多個中間元件。
存在用於實施神經網路的兩種根本上不同的選擇方案:傳統電腦中的軟體類比或能夠顯著減少執行時間的專用硬體解決方案。軟體類比可有助於開發及調試新演算法以及使用小型網路對所述新演算法進行基準測試。然而,如果要使用大型網路,軟體類比是不夠的。問題在於學習過程所需的時間,所述時間可根據網路的大小而以指數方式增加。然而,不進行學習的神經網路相當無趣。但構建專用硬體的主要目的是為高效的自我調整系統提供能夠隨著時間的進行來更新所述系統的參數的平臺。因此,新的硬體解決方案是必要的。使用儲存胞元陣列的基於硬體的解決方案可提供改善的功率效率。儲存胞元陣列中的儲存胞元之間的本征差異(例如,儲存胞元陣列中的有缺陷儲存胞元的類型及位址)通常由製作過程引起,此導致不同儲存胞元陣列之間的本征差異。不同儲存胞元陣列的單獨訓練過程可使成本開銷顯著增加。本公開呈現可改善基於硬體的神經網路的缺陷容忍度的方法及裝置的各種實施例。
圖1示出根據本公開一些實施例的人工神經網路(ANN)的全連接網路100的示例圖。網路100包括輸入層112、隱藏層114及輸出層116。應注意,網路100僅為實例,而並非旨在對本公開進行限制。因此,應理解,可在圖1中的輸入層112與輸出層116之間提供附加的隱藏層114,且每一層(即112、114及116)可包括不同數目的神經元,此處於本申請的範圍內。還應注意,神經元上的值可利用不同的演算法來確定,此也處於本申請的範
圍內。
在所示出的實施例中,輸入層112包括多個神經元106。所述多個神經元106中的每一者包括相應的值,即神經元106-1上的a1、神經元106-2上的a2、神經元106-3上的a3、...、及神經元106-M上的aM,其中M是正整數。在一些實施例中,輸入層112上的神經元106上的值為[A]M×1=[a1;a2;a3;...;aM]。此外,隱藏層114包括多個神經元108。所述多個神經元108中的每一者包括相應的值,即神經元108-1上的b1、神經元108-2上的b2、神經元108-3上的b3、...、及神經元108-N上的bN,其中N是正整數。在一些實施例中,隱藏層114上的神經元108上的值為[B]N×1=[b1;b2;b3;...;bN]。相似地,根據一些實施例,輸出層116包括多個神經元110。所述多個神經元110中的每一者包括相應的值,即c1、c2、c3、...、及cP,其中P是正整數。在一些實施例中,輸出層116上的神經元110上的值為[C]P×1=[c1;c2;c3;...;cP]。
在一些實施例中,輸入層112中的所述多個神經元106中的每一者通過多個對應的權重102耦合到隱藏層114中的所述多個神經元108中的每一者。舉例來說,權重W1,1、W2,1、...、及WM,1用於耦合輸入層112的神經元106-1、106-2、106-3、...、106-M與隱藏層114的神經元108-1。在一些實施例中,輸入層112的神經元106與隱藏層114的神經元108之間的對應的權重102中的每一者具有值「0」或值「1」。在一些實施例中,對應的權重(Wi,j)102中的每一者的值表示對應的神經元106的值(ai)對對應的神
經元108的值(即bj)的貢獻度,其中iM,jN,i及j是正整數。
相似地,隱藏層114中的所述多個神經元108中的每一者通過多個對應的權重104耦合到輸出層116中的所述多個神經元110中的每一者。舉例來說,權重X1,1、X2,1、...、及XN,1用於在隱藏層114的神經元108-1、108-2、108-3、...、及108-N與輸出層116的神經元110-1之間進行耦合。在一些實施例中,隱藏層114的神經元108與輸出層116的神經元110之間的對應的權重104中的每一者具有值「0」或值「1」。在一些實施例中,對應的權重(Xj,k)104中的每一者的值也表示對應的神經元108的值(bj)對對應的神經元110的值(ck)的貢獻度,其中jN,kP,j及k是正整數。
在一些實施例中,權重102及104是根據預先定義的演算法及方法通過訓練過程獲得的經訓練權重。在一些實施例中,訓練演算法是反向傳播演算法(back-propagation algorithm),在反向傳播演算法中網路的權重被重複調整,以使實際輸出向量與所看到的輸出向量之間的差最小化。在一些實施例中,權重訓練可使用硬體儲存胞元陣列在晶片上執行或使用軟體在晶片外執行。在一些實施例中,在假設為無缺陷儲存胞元陣列的情況下確定網路的權重。
在一些實施例中,輸入層112與隱藏層114之間的權重102的所有值被集合在一起,以形成具有N個列及M個行的第一權重圖案[W]N×M 118。在一些實施例中,隱藏層114與輸出層116
之間的所有權重104被集合在一起,以形成具有P個列及N個行的第二權重圖案[X]P×N 120。在一些實施例中,在實施期間,第一權重圖案[W]N×M 118可通過第一儲存胞元陣列實現且第二權重圖案[X]P×N 120通過第二儲存胞元陣列實現。在一些實施例中,第一儲存胞元陣列包括具有N×M大小的儲存胞元陣列且第二儲存胞元陣列包括具有P×N大小的儲存胞元陣列。
圖2示出根據本公開一些實施例的網路100中的輸入層112與隱藏層114之間的示例性權重圖案200。在所示出的實施例中,可根據對應的權重圖案200(例如,第一權重圖案[W]N×M 118)來獲得權重圖案靈敏度(weight pattern sensitivity,WPS)206。在所示出的實施例中,WPS 206包括1個列及M個行。在一些實施例中,第一權重圖案[W]N×M 118包括N個列(即204-1、204-2、...及204-N)以及M個行(即202-1、202-2、...及202-M)。在一些實施例中,對應的第一權重圖案[W]N×M 118的第一WPS 206可根據行202中的「0」的數目或「1」的數目來確定。舉例來說,當第一權重圖案[W]N×M 118的行202-j中的「1」的數目等於或大於預先定義的閾值時,WPS 206中的Sj被確定為1,其中jM且j是正整數。相似地,當第一權重圖案[W]N×M 118的行202-j中的「1」的數目小於預先定義的閾值時,WPS 206中的Sj的值被確定為「0」。在一些實施例中,對於對應的權重圖案[W]N×M 118,存在一個WPS 206。
在一些實施例中,通過將權重圖案的行中的「1」的數目
與多級閾值進行比較來確定WPS 206中的值。舉例來說,當權重圖案的行中的「1」的數目等於或大於0且小於5時,此行的WPS值為0;當權重圖案的行中的「1」的數目等於或大於5且小於10時,行的WPS值為1;當權重圖案的行中的「1」的數目等於或大於10且小於15時,行的WPS值為2;且當權重圖案的行中的「1」的數目等於或大於15且小於行的大小(例如,N)時,行的WPS值為3。
圖3A示出根據本公開一些實施例的儲存胞元陣列的示例性缺陷圖案[D]N×M 300。在所示出的實施例中,通過測量具有N×M大小的儲存胞元陣列以儲存第一權重圖案[W]N×M 118並確定隱藏層114的神經元108中的每一者上的值來獲得缺陷圖案[D]N×M 300。在一些實施例中,儲存胞元陣列可包括以下中的一者:多個寄存器、多個電熔絲(e-fuse)、靜態隨機存取記憶體(static random access memory,SRAM)及儲存胞元陣列的一部分。
在一些實施例中,缺陷圖案[D]N×M 300通過以下方式獲得:在陣列中的儲存胞元中的每一者中寫入「0」或「1」,然後測量在陣列中的儲存胞元中的每一者上保存的邏輯狀態。當寫入有「1」的儲存胞元被測量為「0」時,則此儲存胞元被確定為有缺陷,且更具體來說是有「設置到重置(set-to-reset)」缺陷;且當寫入有「0」的儲存胞元被測量為「1」時,則此儲存胞元也被確定為有缺陷,且更具體來說是有「重置到設置(reset-to-set)」缺陷。在一些其他實施例中,當寫入有「1」或「0」的儲存胞元也被測
量為「1」或「0」時,此儲存胞元被確定為穩定的且因此無缺陷。在一些實施例中,當儲存胞元穩定時,Dij=1;且當儲存胞元有缺陷時,Dij=0,其中i及j是正整數,iM且jN。
在一些實施例中,缺陷圖案指示符(defect pattern indicator,DPI)306可根據對應的缺陷圖案[D]N×M 300的M個行302中的每一者中的有缺陷儲存胞元的數目獲得。在一些實施例中,對於包括N個列304及M個行302的缺陷圖案[D]N×M 300,DPI 306包括1個列及M個行。在一些實施例中,當缺陷圖案[D]N×M 300的行302-j中的有缺陷儲存胞元的數目等於或大於預先定義的閾值時,DPI 306中的對應的dj被確定為「0」;且當缺陷圖案[D]N×M 300的行302-j中的有缺陷儲存胞元的數目小於預先定義的閾值時,DPI 306中的對應的dj被確定為「1」。
圖3B示出根據本公開一些實施例的儲存胞元陣列的示例性缺陷圖案[D]N×M 300。在所示出的實施例中,通過測量具有N×M大小的儲存胞元陣列以儲存第一權重圖案[W]N×M 118並確定隱藏層114的神經元108中的每一者上的值來獲得缺陷圖案[D]N×M 300。在一些實施例中,儲存胞元陣列可包括以下中的一者:多個寄存器、多個電熔絲、靜態隨機存取記憶體(SRAM)及儲存胞元陣列的一部分。
在一些實施例中,缺陷圖案[D]N×M 300通過以下方式獲得:在陣列中的儲存胞元中的每一者中寫入「0」或「1」,然後測量在陣列中的儲存胞元中的每一者上保存的邏輯狀態。當寫入有
「1」的儲存胞元被測量為「0」時,則此儲存胞元被確定為有缺陷,且更具體來說是有「設置到重置」缺陷;且當寫入有「0」的儲存胞元被測量為「1」時,則此儲存胞元也被確定為有缺陷,且更具體來說是有「重置到設置」缺陷。在一些其他實施例中,當寫入有「1」或「0」的儲存胞元也被測量為「1」或「0」時,此儲存胞元被確定為穩定的且因此無缺陷。
在一些實施例中,缺陷圖案指示符(DPI)306可根據行302中的有缺陷儲存胞元的數目獲得。在一些實施例中,DPI 306包括1個列及m個行,其中m=log2M,M是對應的缺陷圖案[D]N×M 300中的行的數目。在一些實施例中,當缺陷圖案[D]N×M 300的行302-j中的有缺陷儲存胞元的數目等於或大於預先定義的閾值時,DPI 306被確定為行302-j的位址。舉例來說,當第二行302-2及最末行302-M被確定為所包括的有缺陷儲存胞元比預先定義的閾值大的行時,對於行302-2來說,DPI-1 306-1是[00...1]且對於行302-M來說,DPI-2 306-2是[11...1]。
圖4A到圖4C示出根據本公開一些實施例的使用網路100的類比結果。在一些實施例中,網路100包括輸入層112、隱藏層114及輸出層116,其中輸入層112包括N=64個神經元,隱藏層114包括M=64個神經元且輸出層116包括P=10個神經元。此外,網路100包括2個權重圖案,即第一權重圖案[W]64×64及第二權重圖案[X]64×10。在一些實施例中,第一權重圖案儲存在第一儲存胞元陣列中且第二權重圖案儲存在第二儲存胞元陣列中。在
一些實施例中,第一儲存胞元陣列包括具有64×64大小的儲存胞元的陣列且第二儲存胞元陣列包括具有10×64大小的儲存胞元的陣列。
圖4A示出根據本公開一些實施例的曲線圖400,曲線圖400示出第一儲存胞元陣列及第二儲存胞元陣列中的注入缺陷404的數目與準確度下降值402之間的關係。在一些實施例中,準確度下降值由以下方程式確定:準確度下降值=缺陷注入之前的準確度-缺陷注入之後的準確度
其中單位為%的準確度下降值402是在有缺陷胞元(在下文中稱為「缺陷」)被引入到相應的儲存胞元陣列中之前與在有缺陷胞元被引入到相應的儲存胞元陣列中之後的準確度差。在一些實施例中,手動引入每一儲存胞元陣列的注入缺陷404的數目,以創建第一儲存胞元陣列的第一缺陷圖案[D1]64×64及第二儲存胞元陣列的第二缺陷圖案[D2]10×64。在一些實施例中,在通過訓練過程確定(例如,在假設為無缺陷儲存胞元陣列的情況下使用軟體在晶片外確定)對應的權重圖案(例如,[W]N×M及[X]P×N)之後,將缺陷注入到對應的儲存胞元陣列。
在所示出的實施例中,當1個缺陷被注入到第一儲存胞元陣列時,準確度下降值402等於0.024%;當2個缺陷被注入到第一儲存胞元陣列時,準確度下降值等於0.047%;當3個缺陷被注入到第一儲存胞元陣列時,準確度下降值等於0.070%;當4個
缺陷被注入到第一儲存胞元陣列時,準確度下降值等於0.094%;且當5個缺陷被注入到第一儲存胞元陣列時,準確度下降值等於0.113%。
在所示出的實施例中,當1個缺陷被注入到第二儲存胞元陣列時,準確度下降值等於0.012%;當2個缺陷被注入到第二儲存胞元陣列時,準確度下降值等於0.024%;當3個缺陷被注入到第二儲存胞元陣列時,準確度下降值等於0.036%;當4個缺陷被注入到第二儲存胞元陣列時,準確度下降值等於0.047%;且當5個缺陷被注入到第二儲存胞元陣列時,準確度下降值等於0.058%。
在所示出的實施例中,當1個缺陷被注入到第一儲存胞元陣列及第二儲存胞元陣列中的每一者時,準確度下降值等於0.042%;當2個缺陷被注入到第一儲存胞元陣列及第二儲存胞元陣列中的每一者時,準確度下降值等於0.074%;當3個缺陷被注入到第一儲存胞元陣列及第二儲存胞元陣列中的每一者時,準確度下降值等於0.104%;當4個缺陷被注入到第一儲存胞元陣列及第二儲存胞元陣列中的每一者時,準確度下降值等於0.139%;且當5個缺陷被注入到第一儲存胞元陣列及第二儲存胞元陣列中的每一者時,準確度下降值等於0.167%。
在所示出的實施例中,第一儲存胞元陣列中的注入缺陷引起的準確度下降值比第二儲存胞元陣列中的相同數目的注入缺陷引起的準確度下降值更顯著。如圖4A中所示,與向第二儲存胞
元陣列注入缺陷所引發的準確度下降量相比,向第一儲存胞元陣列注入缺陷可引發更顯著的準確度下降量。在圖4A中所示的模擬結果中會觀察到,第二儲存胞元陣列具有從第一儲存胞元陣列的輸出接收的較少數目的神經元啟動(例如,第一儲存胞元陣列的輸出處的「1」的數目),因此第二儲存胞元陣列中的能夠導致相同準確度降低量的缺陷的數目較少。應注意,這種趨勢也適用於其他數目的注入缺陷。
圖4B示出根據本公開一些實施例的曲線圖410,曲線圖410示出不正確計數412與錯誤數目414之間的關係。在一些實施例中,錯誤數目414是被不正確分類的測試圖像(例如,具有數位8的輸入圖像在通過整個人工神經網路之後被識別並分類為數位6)的數目。在一些實施例中,為引入1到0缺陷(1-to-0 defect),儲存在儲存胞元陣列的胞元中的1的權重被修改為0。相似地,在一些其他實施例中,為引入0到1缺陷(0-to-1 defect),儲存在儲存胞元陣列的胞元中的0的權重被修改為1。
圖4C示出根據本公開一些實施例的曲線圖420,曲線圖420示出與第二權重圖案[X]10×64 120對應的第二儲存胞元陣列的每一行處的準確度下降值422。具體來說,在此類比中,曲線426是第二權重圖案[X]10×64 120的每一行中的「1」的數目相對於列#的曲線圖。在所示出的實施例中,第二權重圖案[X]10×64 120的列#0到列#10中的「1」的數目分別為16、17、13、13、12、15、16、17、13及15。在所示出的實施例中,在1個缺陷、2個缺陷及3
個缺陷處,列1中的準確度下降值分別為1.13、2.27及3.79;在1個缺陷、2個缺陷及3個缺陷處,列2中的準確度下降值分別為1、2.62及5.31;在1個缺陷、2個缺陷及3個缺陷處,列3中的準確度下降值分別為2.97、7.90及16.94;在1個缺陷、2個缺陷及3個缺陷處,列4中的準確度下降值分別為4.02、8.06及12.56;在1個缺陷、2個缺陷及3個缺陷處,列5中的準確度下降值分別為3.68、10.52及23.14;在1個缺陷、2個缺陷及3個缺陷處,列6中的準確度下降值分別為2.83、7.31及14.52;在1個缺陷、2個缺陷及3個缺陷處,列7中的準確度下降值分別為2.45、5.06及9.54;在1個缺陷、2個缺陷及3個缺陷處,列8中的準確度下降值分別為1.76、3.98及6.78;在1個缺陷、2個缺陷及3個缺陷處,列9中的準確度下降值分別為3.35、7.42及12.77;且在1個缺陷、2個缺陷及3個缺陷處,列10中的準確度下降值分別為3.16、7.94及14.52。
在所示出的實施例中,當權重圖案的行中的「1」的數目大時,準確度下降值442小;且當權重圖案的行中的「1」的數目小時,準確度下降值442大。如在此類比結果中所示,權重圖案的行中的「1」的數目與準確度下降值442相關聯。當權重圖案的行中的「1」的數目較大時,準確度下降值較小,且因此,權重圖案中的「1」的數目較大的行因此對儲存胞元陣列的儲存胞元的行中的缺陷具有容忍度或不太敏感。相似地,當權重圖案的行中的「1」的數目較少時,準確度下降值較大,且因此,權重圖案中的
「1」的數目較少的行對儲存胞元陣列的儲存胞元的行中的缺陷敏感或容忍度較低。
圖5A示出根據本公開一些實施例的用於對儲存胞元陣列上的權重圖案及輸入資料進行重新排列的示意圖500。在一些實施例中,所述重新排列是根據權重圖案靈敏度(WPS)206及儲存胞元陣列的對應的缺陷圖案300來確定。在所示出的實施例中,WPS 206包括1個列及M個行,且每一行包括二進位數字,所述二進位數字表示對應的權重圖案的行中的1的數目與預先定義的閾值之間的關係。舉例來說,如果對應的權重圖案的行中的1的數目等於或大於預先定義的閾值,則WPS 206中的對應的要素等於1;且如果對應的權重圖案的行中的1的數目小於預先定義的閾值,則WPS 206中的對應的要素等於0。在所示出的實施例中,WPS 206的最末行是1且WPS 206的第一行是0。在所示出的實施例中,缺陷圖案300示出了儲存胞元陣列中的有缺陷胞元(即缺陷)的數目。在所示出的實施例中,儲存胞元陣列中的第一行無缺陷且儲存胞元陣列的最末行包含最大數目的缺陷(例如,2個缺陷)。根據WPS 206及檢測圖案300,儲存胞元陣列的行1接收最初為儲存胞元陣列的行M指定的對應的權重及輸入資料;且儲存胞元陣列的行M接收最初為儲存胞元陣列的行1指定的對應的權重及輸入資料,以採用缺陷數目最少的行來儲存對缺陷最敏感的權重及對應的輸入資料。
圖5B示出根據本公開一些實施例的用於對儲存胞元陣
列上的權重圖案及輸入資料進行重新排列的示意圖510。在一些實施例中,所述重新排列是根據權重圖案靈敏度(WPS)206及對應的缺陷圖案300來確定。在所示出的實施例中,WPS 206包括1個列及M個行,且每一行包括非二進位數字。在一些實施例中,通過將權重圖案的行中的正權重的數目與多級閾值進行比較來確定WPS 206中的值。舉例來說,當權重圖案的行中的正權重的數目等於或大於0且小於5時,此行的WPS值為0;當權重圖案的行中的正權重的數目等於或大於5且小於10時,此行的WPS值為1;當權重圖案的行中的正權重的數目等於或大於10且小於15時,此行的WPS值為2;且當權重圖案的行中的正權重的數目等於或大於15且小於行的大小(例如,圖2中的N)時,此行的WPS值為3。
在所示出的實施例中,缺陷圖案300示出了儲存胞元陣列中的有缺陷胞元(即缺陷)的映射。在所示出的實施例中,可根據給定的缺陷圖案300來確定每一行的故障位元數目(failure bit count,FBC)512,故障位元數目512是每一行的缺陷的數目。在所示出的實施例中,儲存胞元陣列的第一行包括0個缺陷,儲存胞元陣列的第二行包括2個缺陷,儲存胞元陣列的第三行包括1個缺陷,...,儲存胞元陣列的第M-2行包括0個缺陷,儲存胞元陣列的第M-1行包括2個缺陷,且儲存胞元陣列的第M行包括1個缺陷。在所示出的實施例中,統計嚴重性(statistics severity,SS)514被確定為FBC 512與WPS 206的乘積。
根據SS 514,儲存胞元陣列的行1接收最初為儲存胞元陣列的行M-1指定的對應的權重及輸入資料;且儲存胞元陣列的行M-1接收最初為儲存胞元陣列的行1指定的對應的權重及輸入資料。相似地,儲存胞元陣列的行2接收最初為儲存胞元陣列的行M-2指定的對應的權重及輸入資料;且儲存胞元陣列的行M-2接收最初為儲存胞元陣列的行2指定的對應的權重及輸入資料。
在一些實施例中,當沒有足夠好的行用來交換時,需要從一個方向開始(例如,從左到右、從低地址到高位址、從低IO數目到高IO數目等)。
應注意,圖5A到圖5B僅為實例,而並非旨在進行限制。需要進行重新排列的儲存胞元陣列的缺陷的不同數目、權重圖案的不同值、行的不同位置及數目均處於本申請的範圍內。
圖6A示出根據本公開一些實施例的系統600的方塊圖,系統600用於確定網路100的隱藏層114上的神經元108上的值。應注意,系統600僅為實例,而並非旨在對本公開進行限制。因此,應理解,可提供位於系統600中或耦合到系統600的附加的功能塊,且一些其他功能塊在本文中可僅進行簡要闡述。
在圖6A所示出的實施例中,系統600包括神經網路巨集650,其中神經網路巨集650包括記憶體巨集602。在一些實施例中,記憶體巨集602包括儲存胞元陣列604,儲存胞元陣列604包括多個儲存胞元。在一些實施例中,所述多個儲存胞元以行-列的配置方式排列,其中每一列具有位線(bit line,BL)及反位線
(bitline bar,BLB),每一列具有字線(word line,WL)。更具體來說,每一行的BL及BLB分別耦合到設置在此行中的多個儲存胞元,且此行中的每一儲存胞元排列在不同的列上且耦合到相應的(不同的)WL。也就是說,儲存胞元陣列604的每一儲存胞元耦合到儲存胞元陣列604的行的BL、儲存胞元陣列604的行的BLB及儲存胞元陣列604的列的WL。在一些實施例中,BL與BLB在垂直方向上平行地排列,且WL在水平方向上平行地排列(即與BL及BLB垂直)。在一些實施例中,儲存胞元陣列604中的每一列儲存胞元的WL連接在一起。
在一些實施例中,儲存胞元陣列604的儲存胞元中的每一者包括至少一個電晶體。在一些其他實施例中,儲存胞元陣列604的所述多個儲存胞元中的每一者可包括以下中的一者:電阻式記憶體(memristor)、電阻式隨機存取記憶體(resistive random access memory,ReRAM、RRAM)、相變隨機存取記憶體(phase change random access memory,PCRAM、PCM)、磁阻隨機存取記憶體(magnetoresistive random access memory,MRAM)、導電橋隨機存取記憶體(conductive bridge random access memory,CBRAM)、浮動閘極快閃記憶體(floating gate flash memory,FLASH)及靜態隨機存取記憶體(SRAM)。
在一些實施例中,記憶體宏602還包括寫入驅動器(write driver,WD)606、多工器(multiplexer,MUX)608、讀出放大器(sense amplifier,SA)610及控制電路612。在一些實施例中,
WD 606被配置成提供對儲存胞元陣列604進行程式設計所需的必要電壓和/或電流。在一些實施例中,MUX 608被配置成選擇將輸入信號轉發到輸出的路徑。在一些實施例中,SA 610被配置成將在讀取操作期間產生的電壓或電流與預先定義的閾值進行比較。
在一些實施例中,控制電路612是代表性器件且可包括處理器、記憶體、輸入/輸出介面、通信介面及系統匯流排。處理器可包括能夠操作以對記憶體巨集602的控制電路612的操作及性能進行控制的任何處理電路系統。在各個方面中,處理器可被實施成通用處理器、晶片多處理器(chip multiprocessor,CMP)、專用處理器、嵌入式處理器、數位訊號處理器(digital signal processor,DSP)、網路處理器、輸入/輸出(input/output,I/O)處理器、媒體存取控制(media access control,MAC)處理器、無線電基帶處理器、協同處理器(co-processor)、微處理器(例如複雜指令集電腦(complex instruction set computer,CISC)微處理器、精簡指令集計算(reduced instruction set computing,RISC)微處理器和/或超長指令字(very long instruction word,VLIW)微處理器)或其他處理器件。處理器也可由控制器、微控制器、應用專用積體電路(application specific integrated circuit,ASIC)、現場可程式設計閘陣列(field programmable gate array,FPGA)、可程式設計邏輯器件(programmable logic device,PLD)等來實施。
在各個方面中,處理器可被佈置成運行作業系統
(operating system,OS)及各種應用。OS的實例包括例如一般以蘋果OS(Apple OS)、微軟視窗OS(Microsoft Windows OS)、安卓OS(Android OS)及任何其他專有或開源OS的商標名命名的作業系統。
在一些實施例中,提供至少一種上面包含電腦可執行指令的非暫時性電腦可讀儲存媒體(non-transitory computer-readable storage medium),其中電腦可執行指令在由至少一個處理器執行時使所述至少一個處理器實行本文中所述的方法的實施例。這種電腦可讀儲存媒體可包含在記憶體中。
在一些實施例中,記憶體可包括能夠儲存資料的任何機器可讀或電腦可讀媒體(包括揮發性/非揮發性記憶體及可移動/不卸除式存放裝置器二者)。記憶體可包括至少一個非揮發性儲存單元。僅舉幾個例子來說,非揮發性儲存單元能夠儲存一個或多個軟體程式。軟體程式可包含例如應用、使用者資料、器件資料和/或配置資料或其組合。軟體程式可包含可由記憶體巨集602的控制電路612的各個元件執行的指令。
舉例來說,記憶體可包括唯讀記憶體(read-only memory,ROM)、隨機存取記憶體(random-access memory,RAM)、動態隨機存取記憶體(dynamic RAM,DRAM)、雙倍數據速率動態隨機存取記憶體(Double-Data-Rate DRAM,DDR-DRAM)、同步動態隨機存取記憶體(synchronous DRAM,SDRAM)、靜態隨機存取記憶體(SRAM)、可程式設計唯讀記憶體(programmable
ROM,PROM)、可抹除可程式設計唯讀記憶體(erasable programmable ROM,EPROM)、電子可抹除可程式設計唯讀記憶體(electrically erasable programmable ROM,EEPROM)、快閃記憶體(例如,或非(NOR)快閃記憶體或者與非(NAND)快閃記憶體)、內容可定址記憶體(content addressable memory,CAM)、聚合物記憶體(例如,鐵電聚合物記憶體)、相變記憶體(例如,雙向記憶體)、鐵電記憶體、矽-氧化物-氮化物-氧化物-矽(silicon-oxide-nitride-oxide-silicon,SONOS)記憶體、盤式記憶體(disk memory)(例如,軟碟、硬碟驅動器、光碟、磁片)或卡(例如,磁卡、光卡)或適合儲存資訊的任何其他類型的媒體。
在一個實施例中,記憶體可包含檔形式的指令集,以用於執行本文所述的產生一個或多個時序庫(timing library)的方法。指令集可以機器可讀指令的任何可接受形式(包括原始程式碼或各種適當的程式設計語言)儲存。可用於儲存指令集的程式設計語言的一些實例包括但不限於Java、C、C++、C#、Python、Objective-C、Visual Basic或NET程式設計。在一些實施例中,包括編譯器或解譯器,以將指令集轉換成供處理器執行的機器可執行代碼。
在一些實施例中,I/O介面可包括任何合適的機構或元件,以至少使使用者能夠將輸入(即測試/請求和/或測試/正常模式等)提供到記憶體巨集602的控制電路612且使記憶體巨集602的控制電路612能夠將輸出控制提供到記憶體巨集602的其他元
件(例如,儲存胞元陣列604、WD 606、MUX 608及SA 610)。
在一些實施例中,神經網路巨集650還包括2個選擇器614/616。在一些實施例中,選擇器614及選擇器616分別被配置成根據圖5A及圖5B中所論述的重新排列來交換輸入,以形成儲存胞元陣列604的映射輸入。
在一些實施例中,神經網路巨集650還包括記憶體618。在一些實施例中,記憶體可包括能夠儲存資料的任何機器可讀或電腦可讀媒體(包括揮發性/非揮發性記憶體及可移動/不卸除式存放裝置器二者)。記憶體可包括至少一個非揮發性儲存單元。舉例來說,記憶體可包括唯讀記憶體(ROM)、隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、雙倍數據速率動態隨機存取記憶體(DDR-DRAM)、同步動態隨機存取記憶體(SDRAM)、靜態隨機存取記憶體(SRAM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、快閃記憶體(例如,NOR快閃記憶體或者NAND快閃記憶體)、內容可定址記憶體(CAM)、聚合物記憶體(例如,鐵電聚合物記憶體)、相變記憶體(例如,雙向記憶體)、鐵電記憶體、矽-氧化物-氮化物-氧化物-矽(SONOS)記憶體、盤式記憶體(例如,軟碟、硬碟驅動器、光碟、磁片)或卡(例如,磁卡、光卡)或適合儲存資訊的任何其他類型的媒體。
在一個實施例中,記憶體618包含圖3A到圖3B中所論述的呈文件形式或機器可讀指令的任何可接受形式的缺陷圖案
[D1]N×M。在一些實施例中,記憶體618包括儲存胞元陣列604中的對應的有缺陷儲存胞元的位址。在一些實施例中,預先儲存在記憶體618中的缺陷圖案是通過在製造過程期間對儲存胞元陣列604進行測量來確定。
在一些實施例中,神經網路巨集650還包括控制器620。在一些實施例中,控制器620被配置成從記憶體618接收缺陷圖案且接收權重圖案靈敏度(WPS)624。在一些實施例中,控制器620還被配置成基於缺陷圖案300及WPS 206來確定交換決策,以指示選擇器614/616實行I/O交換。在一些實施例中,選擇器614/616及控制器620可被配置在系統介面650外部。在一些實施例中,系統介面650的外部還包括以下中的至少一者:處理單元、感測單元及功率調節單元,所有這些均未示出。
圖6B示出根據本公開一些實施例的系統660的方塊圖,系統660用於確定網路100的隱藏層114上的神經元108上的值。應注意,系統660僅為實例,而並非旨在對本公開進行限制。因此,應理解,可提供位於系統660中或耦合到系統660的附加的功能塊,且一些其他功能塊在本文中可僅進行簡要闡述。
在圖6B所示出的實施例中,系統660包括神經網路巨集650,其中神經網路巨集650包括記憶體巨集602及記憶體618。在一些實施例中,記憶體巨集602包括儲存胞元陣列604,儲存胞元陣列604包括多個儲存胞元。在一些實施例中,所述多個儲存胞元以行-列的配置方式排列,其中每一行具有儲存位元線(BL)
及反儲存位元線(BLB),每一列具有字線(WL)。更具體來說,每一行的BL及BLB分別耦合到設置在此行中的多個儲存胞元,且此行中的每一儲存胞元排列在不同的列上且耦合到相應的(不同的)WL。也就是說,儲存胞元陣列604的每一儲存胞元耦合到儲存胞元陣列604的行的BL、儲存胞元陣列604的行的BLB及儲存胞元陣列604的列的WL。在一些實施例中,BL與BLB在垂直方向上平行地排列,且WL在水平方向上平行地排列(即與BL及BLB垂直)。在一些實施例中,儲存胞元陣列604中的每一列儲存胞元的WL連接在一起。
在一些實施例中,儲存胞元陣列604的儲存胞元中的每一者包括至少一個電晶體。在一些其他實施例中,儲存胞元陣列604的所述多個儲存胞元中的每一者可包括以下中的一者:電阻式記憶體、電阻式隨機存取記憶體(ReRAM、RRAM)、相變隨機存取記憶體(PCRAM、PCM)、磁阻隨機存取記憶體(MRAM)、導電橋隨機存取記憶體(CBRAM)、浮動閘極快閃記憶體(FLASH)及靜態隨機存取記憶體(SRAM)。
在一些實施例中,記憶體宏602還包括寫入驅動器(WD)606、多工器(MUX)608、讀出放大器(SA)610及控制電路612。在一些實施例中,WD 606被配置成提供對儲存胞元陣列604進行程式設計所需的必要電壓和/或電流。在一些實施例中,MUX 608被配置成選擇將輸入信號轉發到輸出的路徑。在一些實施例中,SA 610被配置成將在讀取操作期間產生的電壓或電流與預先定義
的閾值進行比較。
在一些實施例中,控制電路612是代表性器件且可包括處理器、記憶體、輸入/輸出介面、通信介面及系統匯流排。處理器可包括能夠操作以對記憶體巨集602的控制電路612的操作及性能進行控制的任何處理電路系統。在各個方面中,處理器可被實施成通用處理器、晶片多處理器(CMP)、專用處理器、嵌入式處理器、數位訊號處理器(DSP)、網路處理器、輸入/輸出(I/O)處理器、媒體存取控制(MAC)處理器、無線電基帶處理器、協同處理器、微處理器(例如複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器和/或超長指令字(VLIW)微處理器)或其他處理器件。處理器也可由控制器、微控制器、應用專用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、可程式設計邏輯器件(PLD)等來實施。
在各個方面中,處理器可被佈置成運行作業系統(OS)及各種應用。OS的實例包括例如一般以蘋果OS、微軟視窗OS、安卓OS及任何其他專有或開源OS的商標名命名的作業系統。
在一些實施例中,提供至少一種上面包含電腦可執行指令的非暫時性電腦可讀儲存媒體,其中電腦可執行指令在由至少一個處理器執行時使所述至少一個處理器實行本文中所述的方法的實施例。這種電腦可讀儲存媒體可包含在記憶體中。
在一些實施例中,記憶體可包括能夠儲存資料的任何機器可讀或電腦可讀媒體(包括揮發性/非揮發性記憶體及可移動/
不卸除式存放裝置器二者)。記憶體可包括至少一個非揮發性儲存單元。非揮發性儲存單元能夠儲存一個或多個軟體程式。僅舉幾個例子來說,軟體程式可包含例如應用、使用者資料、器件資料和/或配置資料或其組合。軟體程式可包含可由記憶體巨集602的控制電路612的各個元件執行的指令。
舉例來說,記憶體可包括唯讀記憶體(ROM)、隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、雙倍數據速率動態隨機存取記憶體(DDR-DRAM)、同步動態隨機存取記憶體(SDRAM)、靜態隨機存取記憶體(SRAM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、快閃記憶體(例如,NOR快閃記憶體或者NAND快閃記憶體)、內容可定址記憶體(CAM)、聚合物記憶體(例如,鐵電聚合物記憶體)、相變記憶體(例如,雙向記憶體)、鐵電記憶體、矽-氧化物-氮化物-氧化物-矽(SONOS)記憶體、盤式記憶體(例如,軟碟、硬碟驅動器、光碟、磁片)或卡(例如,磁卡、光卡)或適合儲存資訊的任何其他類型的媒體。
在一個實施例中,記憶體可包含檔形式的指令集,以用於執行本文中所述的產生一個或多個時序庫的方法。指令集可以機器可讀指令的任何可接受形式(包括原始程式碼或各種適當的程式設計語言)儲存。可用於儲存指令集的程式設計語言的一些實例包括但不限於Java、C、C++、C#、Python、Objective-C、Visual
Basic或NET程式設計。在一些實施例中,包括編譯器或解譯器,以將指令集轉換成供處理器執行的機器可執行代碼。
在一些實施例中,記憶體618可包括能夠儲存資料的任何機器可讀或電腦可讀媒體(包括揮發性/非揮發性記憶體及可移動/不卸除式存放裝置器二者)。記憶體618可包括至少一個非揮發性儲存單元。舉例來說,記憶體618可包括唯讀記憶體(ROM)、隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、雙倍數據速率動態隨機存取記憶體(DDR-DRAM)、同步動態隨機存取記憶體(SDRAM)、靜態隨機存取記憶體(SRAM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、快閃記憶體(例如,NOR快閃記憶體或者NAND快閃記憶體)、內容可定址記憶體(CAM)、聚合物記憶體(例如,鐵電聚合物記憶體)、相變記憶體(例如,雙向記憶體)、鐵電記憶體、矽-氧化物-氮化物-氧化物-矽(SONOS)記憶體、盤式記憶體(例如,軟碟、硬碟驅動器、光碟、磁片)或卡(例如,磁卡、光卡)或適合儲存資訊的任何其他類型的媒體。
在一個實施例中,記憶體618包含圖3A到圖3B中所論述的呈文件形式或機器可讀指令的任何可接受形式的缺陷圖案[D1]N×M。在一些實施例中,記憶體618包括儲存胞元陣列604中的對應的有缺陷儲存胞元的位址。在一些實施例中,預先儲存在記憶體618中的缺陷圖案是通過在製造過程期間對測量儲存胞
元陣列604進行程式設計來確定。
在一些實施例中,網路巨集650耦合到第一選擇器614、第二選擇器616及控制器620。在一些實施例中,系統660還包括2個選擇器614/616。在一些實施例中,選擇器614及選擇器616分別被配置成根據圖5A及圖5B中所論述的重新排列來交換輸入,以形成儲存胞元陣列604的映射輸入。
在一些實施例中,控制器620被配置成從記憶體618接收缺陷圖案且接收權重圖案靈敏度(WPS)624。在一些實施例中,控制器620還被配置成基於缺陷圖案300及WPS 206來確定交換決策,以指示選擇器614/616實行I/O交換。在一些實施例中,系統660還包括以下中的至少一者:處理單元、感測單元及功率調節單元,所有這些均未示出且位於神經網路巨集650的外部。
圖7A示出根據本公開一些實施例的方法700的流程圖,方法700使用系統600或660對網路100的隱藏層114上的神經元108中的每一者上的值實行計算。在一些實施例中,方法700的操作由圖1、圖3、圖5及圖6A到圖6B中所示的相應的組件來實行。為便於論述,將結合圖1、圖3、圖5及圖6A到圖6B來闡述方法700的以下實施例。所示出的方法700的實施例僅是根據權重圖案的權重圖案靈敏度(WPS)實行權重重新排列的實例。因此,應理解,在保持處於本公開範圍內的同時,可對各種操作中的任何操作進行省略、重新排序和/或添加。
方法700從操作702開始,在操作702中,根據一些實
施例將儲存胞元陣列604的缺陷圖案[D1]N×M 300載入到控制器620。在一些實施例中,缺陷圖案[D1]N×M 300包含儲存胞元陣列604中的有缺陷儲存胞元的位址。在一些實施例中,可將缺陷圖案指示符(DPI)306載入到控制器620中。在一些實施例中,DPI 306包括1個列及m個行,其中m=log2M,M是對應的缺陷圖案[D1]N×M 300中的行的數目。在一些實施例中,當缺陷圖案[D]N×M 300的行302-j中的有缺陷儲存胞元的數目等於或大於預先定義的閾值時,DPI 306被確定為行302-j的位址。在一些其他實施例中,對於包括N個列及M個行的對應的缺陷圖案[D1]N×M 300,DPI 306還可包括N個列及1個行。在一些實施例中,當缺陷圖案[D1]N×M 300的行302-j中的有缺陷儲存胞元的數目等於或大於預先定義的閾值時,DPI 306中的dj的值被確定為「0」;且當缺陷圖案[D1]N×M 300的行302-j中的有缺陷儲存胞元的數目小於預先定義的閾值時,DPI 306中的對應的dj被確定為「1」。在一些實施例中,缺陷圖案[D1]N×M 300或DPI 306可儲存在記憶體618中。
在一些實施例中,在進行操作702之前,可通過測量儲存胞元陣列604來確定缺陷圖案[D1]N×M。在一些實施例中,操作702還包括將預先配置的邏輯狀態(例如,「1」)寫入到儲存胞元陣列604中的多個儲存胞元中的每一者並對所儲存邏輯狀態進行測量。當儲存胞元中的所儲存邏輯狀態與預先配置的邏輯狀態一致(例如,兩者均為「1」)時,儲存胞元是穩定的且無缺陷。當儲存胞元中的所儲存邏輯狀態不同於預先配置的邏輯狀態(例
如,所儲存邏輯狀態為「0」)時,儲存胞元被確定為有缺陷,且因此,儲存胞元是儲存胞元陣列604中的缺陷。具體來說,儲存胞元有「1」到「0」缺陷。相似地,當將「0」寫入到儲存胞元中且所儲存邏輯狀態為「1」時,則儲存胞元也被確定為有「0」到「1」缺陷。在一些實施例中,操作702可由神經網路系統實行或在製作過程期間由記憶體製造商實行。
方法700繼續進行操作704,在操作704中,根據一些實施例將權重圖案靈敏度(WPS)206載入到控制器620。在所示出的實施例中,WPS 206包括1個列及M個行。在一些實施例中,可根據列202中的「0」的數目或「1」的數目來確定對應的權重圖案[W]N×M 118的WPS 206。舉例來說,當行202-j中的「1」的數目等於或大於預先定義的閾值時,WPS 206中的Sj被確定為1,其中jN且j是正整數。相似地,當行202-j中的「1」的數目小於預先定義的閾值時,WPS 206中的Sj被確定為「0」。在一些實施例中,對於對應的權重圖案[W]N×M 118,存在一個WPS 206。在一些實施例中,WPS 206可由用戶從外部獲得和/或進行調整。
在一些實施例中,通過將權重圖案的行中的正權重的數目與多級閾值進行比較來確定WPS 206中的值。舉例來說,當權重圖案的行中的正權重的數目等於或大於0且小於5時,此行的WPS值為0;當權重圖案的行中的正權重的數目等於或大於5且小於10時,此行的WPS值為1;當權重圖案的行中的正權重的數目等於或大於10且小於15時,此行的WPS值為2;且當權重圖
案的行中的正權重的數目等於或大於15且小於行的大小(例如,圖2中的N)時,此行的WPS值為3。
方法700繼續進行操作706,在操作706中,根據一些實施例由控制器620對WPS 206與對應的權重圖案118[W]N×M的缺陷圖案[D1]N×M 300進行比較。在一些其他實施例中,由控制器620對WPS 206與DPI 306進行比較。在一些其他實施例中,確定WPS 206與缺陷圖案[D1]N×M 300的每一行中的缺陷的數目的乘積。
方法700繼續進行操作708,在操作708中,根據一些實施例由控制器620確定交換決策。在一些實施例中,儲存胞元陣列604中在對應的權重圖案中具有最高數目的缺陷及最高數目的1的行被確定為接收最初儲存在儲存胞元陣列604中在對應的權重圖案中具有最低數目的缺陷及最低數目的1的行上的權重及輸入資料。在一些其他實施例中,根據WPS 206與缺陷圖案[D1]N×M 300的每一行中的缺陷數目的乘積來確定統計嚴重性(SS)514。在一些實施例中,儲存胞元陣列的儲存胞元陣列604中具有最高數目的SS 514的列被確定為接收最初儲存在儲存胞元陣列604中具有最低數目的SS 514的列上的權重及輸入資料。
方法700繼續進行操作710,在操作710中,根據一些實施例將權重圖案[W]N×M 118作為輸入622載入到神經網路巨集650中。在一些實施例中,權重圖案[W]N×M 118是通過使用軟體的訓練過程來確定,而不考慮儲存胞元陣列604及在相應的製作過程中引起的儲存胞元陣列604的潛在缺陷。在一些實施例中,權重
圖案[W]N×M 118作為輸入622而通過位於神經網路巨集650之外的選擇器614被載入到神經網路巨集650中。
方法700繼續進行操作712,在操作712中,根據一些實施例對權重圖案[W]N×M 118進行重新排列,以通過交換I/O來確定重新排列的權重圖案[W]’N×M。在一些實施例中,重新排列的權重圖案[W]’N×M是根據在操作708中確定的交換決策來確定。舉例來說,輸入處的權重圖案[W]N×M 118的和儲存胞元陣列604中的在對應的權重圖案[W]N×M 118中具有最高數目的缺陷及最高數目的1的行對應的行202-a與輸入處的權重圖案[W]N×M 118的和儲存胞元陣列604的在對應的權重圖案[W]N×M118中具有最低數目的缺陷及最低數目的1的行對應的行202-b進行切換,其中a及b是正整數且二者均小於M。在一些實施例中,這種重新排列過程可在以下的圖7B中進行闡述。
圖7B示出根據本公開一些實施例的方法730的流程圖,方法730用於通過選擇器614中的狀態機來對I/O進行交換。方法730從操作732開始,在操作732中,根據一些實施例在選擇器614的輸入I/O處提供資料。在一些實施例中,在選擇器614的輸入I/O處提供對應的權重圖案[W]N×M 118。在一些實施例中,選擇器614位於神經網路巨集650的內部。在一些實施例中,可根據使用者的需要來選擇及實施選擇器614。在一些實施例中,資料可為以下中的一者:權重圖案[W]N×M 118及輸入資料[A],所述資料將在以下進行進一步詳細論述。
方法730繼續進行操作734,在操作734中,根據一些實施例儲存至少兩個交換I/O中的資料。在一些實施例中,交換I/O是與權重圖案[W]N×M 118中的兩個行(例如,行202-a及202-b)對應的輸入I/O。在一些實施例中,將行202-a及202-b中的資料儲存在兩個相應的臨時參數中。
方法730繼續進行操作736,在操作736中,根據一些實施例製備兩個遮罩陣列並確定輸出I/O。在一些實施例中,所述兩個遮罩陣列(包括「或_遮罩(OR_mask)」及「與_遮罩(AND_mask)」)由選擇器614基於輸入622處的交換I/O的資料內容(例如權重圖案[W]N×M 118的行202-a與行202-b)來產生。在一些實施例中,選擇器614的輸出I/O通過以下操作來確定:
輸出I/O=輸入I/O|OR_遮罩& AND_遮罩,其中「|」是逐位OR運算子且「&」是逐位AND運算子。
方法730繼續進行操作738,在操作738中,根據一些實施例確定輸出I/O上的資料。在一些實施例中,根據權重圖案[W]N×M及所述兩個遮罩陣列來確定經重新排列的權重圖案[W]’N×M。舉例來說,將儲存在第一臨時參數中的行202-a中的資料載入到與行202-b對應的輸出I/O且將儲存在第二臨時參數中的行202-b中的資料載入到與行202-a對應的輸出I/O中。
在一些實施例中,方法730繼續進行根據一些實施例的操作734。
圖7C示出根據本公開一些實施例的表740,表740具有
圖7B中所呈現的交換過程中的示例性資料。在所示出的實施例中,輸入I/O包括8個位(01011010),且根據圖7A中闡述的過程確定第三位與第五位將進行交換。在一些實施例中,第三I/O包括保存在第一臨時參數(例如,temp 1)上的資料011,且第五I/O包括儲存在第二臨時參數(即temp 2)上的資料101。在一些實施例中,第一遮罩(即,或遮罩)包括8個位且第三位是1,而第一遮罩的所有其他位是0;第二遮罩(即,與遮罩)也包括8個位且第五位是0,而第二遮罩的所有其他位是1。在操作之後,輸出I/O包括8個位,即01110010。此外,輸出I/O中的第三I/O輸出資料101且輸出I/O中的第五I/O輸出資料011。
方法700繼續進行操作714,在操作714中,根據一些實施例將經重新排列的權重圖案[W]’N×M載入到儲存胞元陣列604。在一些實施例中,通過將「0」或「1」儲存在儲存胞元陣列604的對應的儲存胞元中來寫入經重新排列的權重圖案[W]’N×M。在一些實施例中,儲存胞元陣列604中在對應的權重圖案中具有最高數目的缺陷及最高數目的1的行接收最初儲存在儲存胞元陣列604中在對應的權重圖案中具有最低數目的缺陷及最低數目的1的行中的權重。相似地,儲存胞元陣列604中在對應的權重圖案中具有最低數目的缺陷及最低數目的1的行接收最初儲存在儲存胞元陣列604中在對應的權重圖案中具有最高數目的缺陷及最高數目的1的行中的權重。所有其他行均接收其對應的權重而無需進行進一步修改。
方法700繼續進行操作716,在操作716中,根據一些實施例將輸入層112的神經元106上的值載入到神經網路巨集650。在一些實施例中,輸入層112的神經元106上的值是輸入資料[A]M×1。在一些實施例中,輸入資料[A]M×1可自前一過程的輸出載入。
方法700繼續進行操作712,在操作712中,根據一些實施例將輸入資料[A]M×1進行重新排列以確定經重新排列的輸入資料[A]’M×1。在一些實施例中,經重新排列的輸入資料[A]’M×1是根據在操作708中確定的交換決策來確定。在一些實施例中,在載入到儲存胞元陣列604之前,經重新排列的輸入資料[A]’M×1從行轉置到列的輸入資料([A]’1×M)。在一些實施例中,根據以上圖7B中所論述的方法730獲得經重新排列的輸入資料[A]’M×1。
方法700繼續進行操作714,在操作714中,根據一些實施例將經重新排列及轉置的輸入資料[A]’1×M載入到儲存胞元陣列604中。
方法700繼續進行操作718,在操作718中,根據一些實施例確定映射輸出資料[B]’N×M。在一些實施例中,映射輸出資料[B]’N×M是根據預先確定的演算法來確定。在一些實施例中,經重新排列的輸入資料[A]’1×M及經重新排列的權重圖案[W]’N×M通過位內乘法在對應的儲存胞元中進行處理。
方法700繼續進行操作720,在操作720中,根據一些實施例確定輸出資料[B]N×M。在一些實施例中,輸出資料[B]N×M是根
據交換決策而通過映射輸出資料[B]’N×M的反向排列來確定。繼續參照圖7B中所論述的實例,接著將儲存胞元陣列的行202-a上的輸出資料在對應的行202-b的輸出I/O上輸出。相似地,接著將儲存胞元陣列的行202-b上的輸出資料在對應的行202-b的輸出I/O上輸出。在一些實施例中,交換決策由選擇器616從控制器620接收。在一些實施例中,操作720由選擇器616在輸出處實行。
圖8示出根據本公開一些實施例的系統800的方塊圖,系統800用於確定網路100的隱藏層114上的神經元108上的值。應注意,系統800僅為實例,而並非旨在對本公開進行限制。因此,應理解,可提供位於系統800中或耦合到系統800的附加的功能塊,且一些其他功能塊在本文中可僅進行簡要闡述。
在圖8所示出的實施例中,系統800包括神經網路巨集650,其中神經網路巨集650包括記憶體巨集602。在一些實施例中,記憶體巨集602包括儲存胞元陣列604,儲存胞元陣列604包括多個儲存胞元。在一些實施例中,所述多個儲存胞元以行-列的配置方式排列,其中每一行具有位線(BL)及反位線(BLB),每一列具有字線(WL)。更具體來說,每一行的BL及BLB分別耦合到設置在此行中的多個儲存胞元,且此行中的每一儲存胞元排列在不同的列上且耦合到相應的(不同的)WL。也就是說,儲存胞元陣列604的每一儲存胞元耦合到儲存胞元陣列604的行的BL、儲存胞元陣列604的行的BLB及儲存胞元陣列604的列的WL。在一些實施例中,BL與BLB在垂直方向上平行地排列,且
WL在水平方向上平行地排列(即與BL及BLB垂直)。在一些實施例中,儲存胞元陣列604中的每一列儲存胞元的WL連接在一起。
在一些實施例中,儲存胞元陣列604的儲存胞元中的每一者包括至少一個電晶體。在一些其他實施例中,儲存胞元陣列604的所述多個儲存胞元中的每一者可包括以下中的一者:電阻式記憶體、電阻式隨機存取記憶體(ReRAM、RRAM)、相變隨機存取記憶體(PCRAM、PCM)、磁阻隨機存取記憶體(MRAM)、導電橋隨機存取記憶體(CBRAM)、浮動閘極快閃記憶體(FLASH)及靜態隨機存取記憶體(SRAM)。
在一些實施例中,記憶體宏602還包括寫入驅動器(WD)606、多工器(MUX)608、讀出放大器(SA)610及控制電路612。在一些實施例中,WD 606被配置成提供對儲存胞元陣列604進行程式設計所需的必要電壓和/或電流。在一些實施例中,MUX 608被配置成選擇將輸入信號轉發到輸出的路徑。在一些實施例中,SA 610被配置成將在讀取操作期間產生的電壓或電流與預先定義的閾值進行比較。
在一些實施例中,控制電路612是代表性器件且可包括處理器、記憶體、輸入/輸出介面、通信介面及系統匯流排。處理器可包括能夠操作以對記憶體巨集602的控制電路612的操作及性能進行控制的任何處理電路系統。在各個方面中,處理器可被實施成通用處理器、晶片多處理器(CMP)、專用處理器、嵌入式
處理器、數位訊號處理器(DSP)、網路處理器、輸入/輸出(I/O)處理器、媒體存取控制(MAC)處理器、無線電基帶處理器、協同處理器、微處理器(例如複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器和/或超長指令字(VLIW)微處理器)或其他處理器件。處理器也可由控制器、微控制器、應用專用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)、可程式設計邏輯器件(PLD)等來實施。
在各個方面中,處理器可被佈置成運行作業系統(OS)及各種應用。OS的實例包括例如一般以蘋果OS、微軟視窗OS、安卓OS及任何其他專有或開源OS的商標名命名的作業系統。
在一些實施例中,提供至少一種上面包含電腦可執行指令的非暫時性電腦可讀儲存媒體,其中電腦可執行指令在由至少一個處理器執行時使所述至少一個處理器實行本文中所述的方法的實施例。這種電腦可讀儲存媒體可包含在記憶體中。
在一些實施例中,記憶體可包括能夠儲存資料的任何機器可讀或電腦可讀媒體(包括揮發性/非揮發性記憶體及可移動/不卸除式存放裝置器二者)。記憶體可包括至少一個非揮發性儲存單元。非揮發性儲存單元能夠儲存一個或多個軟體程式。僅舉幾個例子來說,軟體程式可包含例如應用、使用者資料、器件資料和/或配置資料或其組合。軟體程式可包含可由記憶體巨集602的控制電路612的各個元件執行的指令。
舉例來說,記憶體可包括唯讀記憶體(ROM)、隨機存取
記憶體(RAM)、動態隨機存取記憶體(DRAM)、雙倍數據速率動態隨機存取記憶體(DDR-DRAM)、同步動態隨機存取記憶體(SDRAM)、靜態隨機存取記憶體(SRAM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、快閃記憶體(例如,NOR快閃記憶體或者NAND快閃記憶體)、內容可定址記憶體(CAM)、聚合物記憶體(例如,鐵電聚合物記憶體)、相變記憶體(例如,雙向記憶體)、鐵電記憶體、矽-氧化物-氮化物-氧化物-矽(SONOS)記憶體、盤式記憶體(例如,軟碟、硬碟驅動器、光碟、磁片)或卡(例如,磁卡、光卡)或適合儲存資訊的任何其他類型的媒體。
在一個實施例中,記憶體可包含檔形式的指令集,以用於執行本文中所述的產生一個或多個時序庫的方法。指令集可以機器可讀指令的任何可接受形式(包括原始程式碼或各種適當的程式設計語言)儲存。可用於儲存指令集的程式設計語言的一些實例包括但不限於Java、C、C++、C#、Python、Objective-C、Visual Basic或NET程式設計。在一些實施例中,包括編譯器或解譯器,以將指令集轉換成供處理器執行的機器可執行代碼。
在一些實施例中,I/O介面可包括任何合適的機構或元件,以至少使使用者能夠將輸入(即測試/請求和/或測試/正常模式等)提供到記憶體巨集602的控制電路612且使記憶體巨集602的控制電路612能夠將輸出控制提供到記憶體巨集602的其他元
件(例如,儲存胞元陣列604、WD 606、MUX 608及SA 610)。
在一些實施例中,神經網路巨集650還包括2個選擇器614/616。在一些實施例中,選擇器614被配置成根據圖5A及圖5B中所論述的交換決策來交換輸入,以形成儲存胞元陣列604的映射輸入,且選擇器616被配置成根據圖5A及圖5B中所論述的交換決策來交換儲存胞元陣列604的輸出。
在一些實施例中,神經網路巨集650還包括記憶體618。在一些實施例中,記憶體可包括能夠儲存資料的任何機器可讀或電腦可讀媒體(包括揮發性/非揮發性記憶體及可移動/不卸除式存放裝置器二者)。記憶體可包括至少一個非揮發性儲存單元。舉例來說,記憶體可包括唯讀記憶體(ROM)、隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、雙倍數據速率動態隨機存取記憶體(DDR-DRAM)、同步動態隨機存取記憶體(SDRAM)、靜態隨機存取記憶體(SRAM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、快閃記憶體(例如,NOR快閃記憶體或者NAND快閃記憶體)、內容可定址記憶體(CAM)、聚合物記憶體(例如,鐵電聚合物記憶體)、相變記憶體(例如,雙向記憶體)、鐵電記憶體、矽-氧化物-氮化物-氧化物-矽(SONOS)記憶體、盤式記憶體(例如,軟碟、硬碟驅動器、光碟、磁片)或卡(例如,磁卡、光卡)或適合儲存資訊的任何其他類型的媒體。
在一個實施例中,記憶體618包含圖3A到圖3B中所論
述的呈文件形式或機器可讀指令的任何可接受形式的缺陷圖案[D1]N×M。在一些實施例中,記憶體618包括儲存胞元陣列604中的對應的有缺陷儲存胞元的位址。在一些實施例中,預先儲存在記憶體618中的缺陷圖案是通過在製造過程期間對儲存胞元陣列604進行測量來確定。
在一些實施例中,神經網路巨集650還包括控制器620。在一些實施例中,控制器620被配置成從記憶體618接收缺陷圖案且接收權重圖案靈敏度(WPS)624。在一些實施例中,控制器620還被配置成基於缺陷圖案300及WPS 624來確定交換決策,以指示選擇器614/616實行I/O交換。
在一些實施例中,神經網路巨集650還包括緩衝器802及處理器804。在一些實施例中,緩衝器802儲存由處理器804用來確定WPS 624的多個權重。在一些實施例中,處理器804由EN信號806使能,以根據儲存在緩衝器802中的所述多個權重來確定WPS 624。在一些實施例中,系統介面650的外部還包括以下中的至少一者:處理單元、感測單元及功率調節單元,所有這些均未示出。
圖9示出根據本公開一些實施例的方法900的流程圖,方法900對網路100的隱藏層114上的神經元108中的每一者上的值實行計算。在一些實施例中,方法900的操作由圖1到圖4、圖5、圖7B及圖8中所示的相應的組件來實行。為便於論述,將結合圖1到圖4、圖5、圖7B及圖8來闡述方法900的以下實施
例。所示出的方法900的實施例僅是對網路100的隱藏層114上的神經元108中的每一者上的值實行計算的實例。因此,應理解,在保持處於本公開範圍內的同時,可對各種操作中的任何操作進行省略、重新排序和/或添加。還應注意,網路100可包括多個隱藏層且所述多個隱藏層中的每一者可包括不同數目的神經元,被確定將進行交換的I/O可多於2個,且可使用不同的演算法來確定神經元中的每一者上的值,所有這些均處於本申請的範圍內。
方法900從操作902開始,在操作902中,根據一些實施例將儲存胞元陣列604的缺陷圖案[D1]N×M 300載入到神經網路巨集650的記憶體618中。在一些實施例中,缺陷圖案[D1]N×M 300包含儲存胞元陣列604中的有缺陷儲存胞元的位址。在一些實施例中,可將缺陷圖案指示符(DPI)306載入到控制器620中。在一些實施例中,DPI 306包括1個列及m個行,其中m=log2M,M是對應的缺陷圖案[D1]N×M 300中的行的數目。在一些實施例中,當缺陷圖案[D]N×M 300的行302-j中的有缺陷儲存胞元的數目等於或大於預先定義的閾值時,DPI 306被確定為行302-j的位址。在一些其他實施例中,對於包括N個列及M個行的對應的缺陷圖案[D1]N×M 300,DPI 306還可包括N個列及1個行。在一些實施例中,當缺陷圖案[D1]N×M 300的行302-j中的有缺陷儲存胞元的數目等於或大於預先定義的閾值時,DPI 306中的dj的值被確定為「0」;且當缺陷圖案[D1]N×M 300的行302-j中的有缺陷儲存胞元的數目小於預先定義的閾值時,DPI 306中的對應的dj被確定為
「1」。在一些實施例中,缺陷圖案[D1]N×M 300或DPI 306可儲存在記憶體618中。
在一些實施例中,可通過測量儲存胞元陣列604來確定缺陷圖案[D1]N×M 300。在一些實施例中,操作902還包括將預先配置的邏輯狀態(例如,「1」)寫入到儲存胞元陣列604中的多個儲存胞元中的每一者並對所儲存邏輯狀態進行測量。當儲存胞元中的所儲存邏輯狀態與預先配置的邏輯狀態一致(例如,兩者均為「1」)時,儲存胞元是穩定的且無缺陷。當儲存胞元中的所儲存邏輯狀態不同於預先配置的邏輯狀態(例如,所儲存邏輯狀態為「0」)時,儲存胞元被確定為有缺陷且儲存胞元是儲存胞元陣列604中的缺陷。在一些實施例中,操作902可由神經網路系統實行或在製作過程期間由記憶體製造商實行。
方法900繼續進行操作904,在操作904中,根據一些實施例將權重圖案[W]N×M 118作為輸入622載入到神經網路巨集650中。在一些實施例中,權重圖案[W]N×M 118是通過使用軟體的訓練過程來確定,而不考慮儲存胞元陣列604及在相應的製作過程中引入的儲存胞元陣列604的潛在缺陷。在一些實施例中,權重圖案[W]N×M118作為輸入622被載入到神經網路巨集650中,到達神經網路巨集650的緩衝器802。
方法900繼續進行操作906,在操作906中,根據一些實施例確定權重圖案靈敏度(WPS)206。在一些實施例中,WPS 206由神經網路巨集650的處理器804根據儲存在緩衝器802中的權
重圖案[W]N×M 118的權重來確定。在所示出的實施例中,WPS 206包括1個列及M個行。在一些實施例中,可根據行202中的「0」的數目或「1」的數目來確定對應的權重圖案[W]N×M 118的WPS 206。舉例來說,當行202-j中的「1」的數目等於或大於預先定義的閾值時,WPS 206中的Sj被確定為1,其中jN且j是正整數。相似地,當行202-j中的「1」的數目小於預先定義的閾值時,WPS 206中的Sj被確定為「0」。在一些實施例中,對於對應的權重圖案118[W]N×M,存在一個WPS 206。在一些實施例中,WPS 206可根據不同的閾值而有所不同,閾值可由用戶預先定義或指定。
在一些實施例中,通過將權重圖案的行中的正權重的數目與多級閾值進行比較來確定WPS 206中的值。舉例來說,當權重圖案的行中的正權重的數目等於或大於0且小於5時,此行的WPS值為0;當權重圖案的行中的正權重的數目等於或大於5且小於10時,此行的WPS值為1;當權重圖案的行中的正權重的數目等於或大於10且小於15時,此行的WPS值為2;且當權重圖案的行中的正權重的數目等於或大於15且小於行的大小(例如,圖2中的N)時,此行的WPS值為3。
方法900繼續進行操作908,在操作908中,根據一些實施例由控制器620對WPS 206與對應的權重圖案[W]N×M 118的缺陷圖案[D1]N×M 300進行比較。在一些其他實施例中,由控制器620對WPS 206與DPI 306進行比較。在一些其他實施例中,確定WPS 206與缺陷圖案[D1]N×M 300的每一行中的缺陷的數目的乘積。在
一些實施例中,控制器620從處理器804接收WPS 624且從記憶體618接收缺陷圖案300,以確定交換決策。
方法900繼續進行操作910,在操作910中,根據一些實施例由控制器620確定交換決策。在一些實施例中,儲存胞元陣列604中在對應的權重圖案中具有最高數目的缺陷及最高數目的1的行被確定為接收最初儲存在儲存胞元陣列604中在對應的權重圖案中具有最低數目的缺陷及最低數目的1的行上的權重及輸入資料。在一些其他實施例中,根據WPS 206與缺陷圖案[D1]N×M 300的每一行中的缺陷數目的乘積來確定統計嚴重性(SS)514。在一些實施例中,儲存胞元陣列的儲存胞元陣列604中具有最高數目的SS 514的行被確定為接收最初儲存在儲存胞元陣列604中具有最低數目的SS 514的行上的權重及輸入資料。
方法900繼續進行操作912,在操作912中,根據一些實施例將權重圖案[W]N×M 118載入到選擇器614。在一些實施例中,權重圖案[W]N×M 118從緩衝器802載入到選擇器614。
方法900繼續進行操作914,在操作914中,根據一些實施例對權重圖案[W]N×M 118進行重新排列以確定映射權重圖案[W]’N×M。在一些實施例中,映射權重圖案[W]’N×M是根據在操作910中確定的交換決策來確定。舉例來說,輸入處的權重圖案[W]N×M 118的和儲存胞元陣列604中的在對應的權重圖案[W]N×M 118中具有最高數目的缺陷及最高數目的1的行對應的行202-a與輸入處的權重圖案[W]N×M 118的和儲存胞元陣列604的在對應的
權重圖案[W]N×M 118中具有最低數目的缺陷及最低數目的1的行對應的行202-b進行切換,其中a及b是正整數且二者均小於M。
方法900繼續進行操作916,在操作916中,根據一些實施例將映射權重圖案[W]’N×M載入到儲存胞元陣列604。在一些實施例中,通過將「0」或「1」儲存在儲存胞元陣列604的對應的儲存胞元中來寫入映射權重圖案[W]’N×M。在一些實施例中,儲存胞元陣列604中在對應的權重圖案中具有最高數目的缺陷及最高數目的1的行接收最初儲存在儲存胞元陣列604中在對應的權重圖案中具有最低數目的缺陷及最低數目的1的行中的權重。相似地,儲存胞元陣列604中在對應的權重圖案中具有最低數目的缺陷及最低數目的1的行接收最初儲存在儲存胞元陣列604中在對應的權重圖案中具有最高數目的缺陷及最高數目的1的行中的權重。所有其他行均接收它們對應的權重而無需進行進一步修改。
方法900繼續進行操作912,在操作912中,根據一些實施例將輸入層112的神經元106上的值載入到神經網路巨集650。在一些實施例中,輸入層112的神經元106上的值是輸入資料[A]M×1。在一些實施例中,可自前一網路的輸出載入輸入資料[A]M×1。
方法900繼續進行操作914,在操作914中,根據一些實施例對輸入資料[A]M×1進行重新排列以確定映射輸入資料[A]’M×1。在一些實施例中,映射輸入資料[A]’M×1是根據在操作910中確定的交換決策來確定。在一些實施例中,映射輸入資料[A]’M×1
接著在載入到儲存胞元陣列604之前從行轉置到列([A]’1×M)。在一些實施例中,根據圖7B中所示的方法730獲得映射輸入資料[A]’M×1。
方法900繼續進行操作916,在操作916中,根據一些實施例將經映射及轉置的輸入資料[A]’1×M載入到儲存胞元陣列604中。
方法900繼續進行操作918,在操作918中,根據一些實施例確定映射輸出資料[B]’N×M。在一些實施例中,映射輸出資料[B]’N×M是根據預先確定的演算法來確定。在一些實施例中,經映射及轉置的輸入資料[A]’1×M及映射權重圖案[W]’N×M通過位內乘法(in-bit multiplication)在對應的儲存胞元中進行處理。
方法900繼續進行操作920,在操作920中,根據一些實施例確定輸出資料[B]N×M。在一些實施例中,輸出資料[B]N×M是根據交換決策而通過映射輸出資料[B]’N×M的反向排列來確定。繼續參照圖7B中所論述的實例,接著在對應的行202-b的輸出I/O上輸出儲存胞元陣列的行202-a上的輸出資料,且接著在對應的行202-b的輸出I/O上輸出儲存胞元陣列的行202-b上的輸出資料。在一些實施例中,交換決策由選擇器616從控制器620接收。在一些實施例中,操作920由選擇器616在圖8所示神經網路巨集650的輸出處實行。
在一個實施例中,一種對神經網路中第一層的第一神經元上的值實行計算的方法包括:接收儲存胞元陣列的第一圖案,
其中所述儲存胞元陣列包括多個儲存胞元,所述多個儲存胞元被配置成多個行及多個列;使用第三圖案確定所述儲存胞元陣列的第二圖案;根據所述第一圖案及所述第二圖案確定所述儲存胞元陣列的至少一對行;對所述儲存胞元陣列的所述至少一對行中的每一對中的兩個行的輸入資料進行切換;使用儲存在所述多個儲存胞元中的所述輸入資料實行逐位元計算;以及對所述儲存胞元陣列的所述至少一對行中的每一對中的所述兩個行的輸出資料進行切換,以確定所述第一層的所述第一神經元上的所述值。在一個實施例中,所述第一圖案是缺陷圖案,其中所述缺陷圖案映射所述儲存胞元陣列中的至少一個有缺陷儲存胞元。在一個實施例中,方法還包括在接收所述第一圖案之前,將預先配置的邏輯狀態寫入到所述多個儲存胞元中的每一者;測量所述多個儲存胞元中的每一者中的所儲存邏輯狀態;以及將所述預先配置的邏輯狀態與所述多個儲存胞元中的每一者中的所述所儲存邏輯狀態進行比較,以確定至少一個有缺陷儲存胞元。在一個實施例中,所述第二圖案包括多個權重圖案靈敏度值,其中所述多個權重圖案靈敏度值中的每一者是通過將至少一個預先確定的閾值與所述第三圖案中的對應的行中的以下數目中的一者進行比較來確定:邏輯「1」值的第一數目、及邏輯「0」值的第二數目。在一個實施例中,所述第三圖案是包括多個權重的權重圖案,其中所述多個權重中的每一者具有值「0」或值「1」。在一個實施例中,所述第三圖案是通過晶片外訓練過程來確定。在一個實施例中,所述確定至少
一對行還包括根據所述第一圖案確定所述儲存胞元陣列的所述多個行中的每一行中的有缺陷儲存胞元的數目;確定所述多個行中的每一者的統計嚴重性值,其中對應的行的所述統計嚴重性值被確定為有缺陷儲存胞元的所述數目與所述第二圖案中所述對應的行的值的乘積;以及根據所述統計嚴重性值確定所述至少一對行。在一個實施例中,所述輸入資料包括以下中的一者:所述第三圖案、及第二層的第二神經元的輸出資料,其中所述第二層的所述第二神經元耦合到所述第一層的所述第一神經元。
在另一實施例中,一種對神經網路中第一層的第一神經元上的值實行計算的系統包括:儲存胞元陣列,包括多個儲存胞元,所述多個儲存胞元被配置成多個行及多個列;儲存單元,被配置成儲存第一圖案;處理器單元,被配置成使用第三圖案確定第二圖案;控制器單元,被配置成根據從所述儲存單元接收的所述第一圖案及從所述處理器單元接收的所述第二圖案來確定所述儲存胞元陣列的至少一對行;第一選擇器,被配置成對所述儲存胞元陣列的所述至少一對行中的每一對中的兩個行的輸入資料進行切換;以及第二選擇器,被配置成對所述儲存胞元陣列的所述至少一對行中的每一對中的所述兩個行的輸出資料進行切換,以確定各別的所述神經元上的所述值。在一個實施例中,所述第一圖案是缺陷圖案,其中所述缺陷圖案映射所述儲存胞元陣列中的至少一個有缺陷儲存胞元。在一個實施例中,所述第一圖案是通過以下方式來確定:將預先配置的邏輯狀態寫入到所述多個儲存
胞元中的每一者;測量所述多個儲存胞元中的每一者中的所儲存邏輯狀態;以及將所述預先配置的邏輯狀態與所述多個儲存胞元中的每一者中的所述所儲存邏輯狀態進行比較。在一個實施例中,所述第二圖案包括多個權重圖案靈敏度值,其中所述多個權重圖案靈敏度值中的每一者是通過將至少一個預先確定的閾值與所述第三圖案中的對應的行中的以下數目中的一者進行比較來確定:邏輯「1」值的第一數目、及邏輯「0」值的第二數目。在一個實施例中,所述第三圖案是包括多個權重的權重圖案,其中所述多個權重中的每一者具有值「0」或值「1」。在一個實施例中,所述輸入資料包括以下中的一者:所述第三圖案、及第二層的第二神經元的輸出資料,其中所述第二層的所述第二神經元耦合到所述第一層的所述第一神經元。在一個實施例中,所述第一選擇器及所述第二選擇器是由所述控制器控制。在一個實施例中,所述第三圖案是通過晶片外訓練過程來確定。在一個實施例中,所述至少一對行是根據所述多個行的統計嚴重性值來確定,其中對應的行的所述統計嚴重性值中的每一者被確定為所述對應的行的有缺陷儲存胞元的數目與所述第二圖案中的所述對應的行的值的乘積。
在又一實施例中,一種對神經網路中第一層的第一神經元上的值實行計算的系統包括:儲存胞元陣列,包括多個儲存胞元,所述多個儲存胞元被配置成多個行及多個列;儲存單元,被配置成儲存第一圖案;處理器單元,被配置成使用第三圖案確定
第二圖案;控制器單元,被配置成根據從所述儲存單元接收的所述第一圖案及從所述處理器單元接收的所述第二圖案來確定所述儲存胞元陣列的至少一對行;第一選擇器,被配置成對所述儲存胞元陣列的所述至少一對行中的每一對中的兩個行的輸入資料進行切換;以及第二選擇器,被配置成對所述儲存胞元陣列的所述至少一對行中的每一對中的所述兩個行的輸出資料進行切換,以確定各別的所述神經元上的所述值,其中所述第一圖案是缺陷圖案,其中所述缺陷圖案映射所述儲存胞元陣列中的至少一個有缺陷儲存胞元,其中所述第二圖案包括多個權重圖案靈敏度值,其中所述多個權重圖案靈敏度值中的每一者是通過將至少一個預先確定的閾值與所述第三圖案中的對應的行中的以下數目中的一者進行比較來確定:邏輯「1」值的[第一]數目、及邏輯「0」值的第二數目,且其中所述第三圖案是包括多個權重的權重圖案,其中所述多個權重中的每一者具有值「0」或值「1」。在一個實施例中,所述輸入資料包括以下中的一者:所述第三圖案、及第二層的第二神經元的輸出資料,其中所述第二層的所述第二神經元耦合到所述第一層的所述第一神經元。在一個實施例中,所述第三圖案是通過晶片外訓練過程來確定。
以上概述了若干實施例的特徵,以使所屬領域中的技術人員可更好地理解本公開的各個方面。所屬領域中的技術人員應理解,他們可容易地使用本公開作為設計或修改其他工藝及結構的基礎來施行與本文中所介紹的實施例相同的目的和/或實現與本
文中所介紹的實施例相同的優點。所屬領域中的技術人員還應認識到,這些等效構造並不背離本公開的精神及範圍,而且他們可在不背離本公開的精神及範圍的條件下對其作出各種改變、代替及變更。
900:方法
902、904、906、908、910、912、914、916、918、920:操作
Claims (4)
- 一種對神經網路中第一層的第一神經元上的值實行計算的方法,包括:接收儲存胞元陣列的第一圖案,其中所述儲存胞元陣列包括多個儲存胞元,所述多個儲存胞元被配置成多個行及多個列;使用第三圖案確定所述儲存胞元陣列的第二圖案;根據所述第一圖案及所述第二圖案確定所述儲存胞元陣列的至少一對行;對所述儲存胞元陣列的所述至少一對行中的每一對中的兩個行的輸入資料進行切換;使用儲存在所述多個儲存胞元中的所述輸入資料實行逐位元計算;以及對所述儲存胞元陣列的所述至少一對行中的每一對中的所述兩個行的輸出資料進行切換,以確定所述第一層的所述第一神經元上的所述值,其中所述第一圖案是缺陷圖案,其中所述缺陷圖案映射所述儲存胞元陣列中的至少一個有缺陷儲存胞元,所述第二圖案包括多個權重圖案靈敏度值,其中所述多個權重圖案靈敏度值中的每一者是通過將至少一個預先確定的閾值與所述第三圖案中的對應的行中的以下數目中的一者進行比較來確定:邏輯“1”值的第一數目、及邏輯“0”值的第二數目,且所述第三圖案是包括多個權重的權重圖案,其中所述多個權重中的每一者具有值“0”或值 “1”,其中所述確定至少一對行包括根據所述第一圖案確定所述儲存胞元陣列的所述多個行中的每一行中的有缺陷儲存胞元的數目,確定所述多個行中的每一者的統計嚴重性值,其中對應的行的所述統計嚴重性值被確定為有缺陷儲存胞元的所述數目與所述第二圖案中所述對應的行的值的乘積,以及根據所述統計嚴重性值確定所述至少一對行。
- 如請求項1所述的方法,還包括:在接收所述第一圖案之前,將預先配置的邏輯狀態寫入到所述多個儲存胞元中的每一者;測量所述多個儲存胞元中的每一者中的所儲存邏輯狀態;以及將所述預先配置的邏輯狀態與所述多個儲存胞元中的每一者中的所述所儲存邏輯狀態進行比較,以確定至少一個有缺陷儲存胞元。
- 如請求項1所述的方法,其中所述輸入資料包括以下中的一者:所述第三圖案、及第二層的第二神經元的輸出資料,其中所述第二層的所述第二神經元耦合到所述第一層的所述第一神經元。
- 一種對神經網路中的第一層的第一神經元上的值實行計算的系統,包括: 儲存胞元陣列,包括多個儲存胞元,所述多個儲存胞元被配置成多個行及多個列;儲存單元,被配置成儲存第一圖案;處理器單元,被配置成使用第三圖案確定第二圖案;控制器單元,被配置成根據從所述儲存單元接收的所述第一圖案及從所述處理器單元接收的所述第二圖案來確定所述儲存胞元陣列的至少一對行;第一選擇器,被配置成對所述儲存胞元陣列的所述至少一對行中的每一對中的兩個行的輸入資料進行切換;以及第二選擇器,被配置成對所述儲存胞元陣列的所述至少一對行中的每一對中的所述兩個行的輸出資料進行切換,以確定各別的所述神經元上的所述值,其中所述第一圖案是缺陷圖案,其中所述缺陷圖案映射所述儲存胞元陣列中的至少一個有缺陷儲存胞元,其中所述第二圖案包括多個權重圖案靈敏度值,其中所述多個權重圖案靈敏度值中的每一者是通過將至少一個預先確定的閾值與所述第三圖案中的對應的行中的以下數目中的一者進行比較來確定:邏輯“1”值的第一數目、及邏輯“0”值的第二數目,且其中所述第三圖案是包括多個權重的權重圖案,其中所述多個權重中的每一者具有值“0”或值“1”,其中所述確定至少一對行包括根據所述第一圖案確定所述儲存胞元陣列的所述多個行中的每一行中的有缺陷儲存胞元的數目,確 定所述多個行中的每一者的統計嚴重性值,其中對應的行的所述統計嚴重性值被確定為有缺陷儲存胞元的所述數目與所述第二圖案中所述對應的行的值的乘積,以及根據所述統計嚴重性值確定所述至少一對行。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862747277P | 2018-10-18 | 2018-10-18 | |
US62/747,277 | 2018-10-18 | ||
US16/542,049 | 2019-08-15 | ||
US16/542,049 US11461623B2 (en) | 2018-10-18 | 2019-08-15 | Method and apparatus for defect-tolerant memory-based artificial neural network |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202029066A TW202029066A (zh) | 2020-08-01 |
TWI781351B true TWI781351B (zh) | 2022-10-21 |
Family
ID=70279674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108137250A TWI781351B (zh) | 2018-10-18 | 2019-10-16 | 對神經網路第一層的第一神經元的值實行計算的方法及系統 |
Country Status (3)
Country | Link |
---|---|
US (3) | US11461623B2 (zh) |
CN (1) | CN111079918A (zh) |
TW (1) | TWI781351B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461623B2 (en) * | 2018-10-18 | 2022-10-04 | Taiwan Semiconductor Manufacturing Co., Ltd. | Method and apparatus for defect-tolerant memory-based artificial neural network |
US11581039B2 (en) | 2021-01-18 | 2023-02-14 | Taiwan Semiconductor Manufacturing Company Limited | Methods of controlling PCRAM devices in single-level-cell (SLC) and multi-level-cell (MLC) modes and a controller for performing the same methods |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201741942A (zh) * | 2016-04-14 | 2017-12-01 | 半導體能源研究所股份有限公司 | 半導體裝置 |
US20180211620A1 (en) * | 2017-01-26 | 2018-07-26 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and electronic device including the semiconductor device |
CN108510058A (zh) * | 2018-02-28 | 2018-09-07 | 中国科学院计算技术研究所 | 神经网络中的权重存储方法以及基于该方法的处理器 |
WO2018165753A1 (en) * | 2017-03-14 | 2018-09-20 | University Of Manitoba | Structure defect detection using machine learning algorithms |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9105330B1 (en) * | 2012-04-17 | 2015-08-11 | Micron Technology, Inc. | Memory devices configured to apply different weights to different strings of memory cells coupled to a data line and methods |
KR20150114795A (ko) * | 2014-04-02 | 2015-10-13 | 삼성전자주식회사 | 반도체 메모리 장치의 테스트 방법, 테스트 장치, 및 반도체 메모리 장치의 테스트 프로그램을 저장하는 컴퓨터로 읽을 수 있는 기록 매체 |
JP2016053808A (ja) * | 2014-09-03 | 2016-04-14 | ソニー株式会社 | 記憶制御装置、記憶装置、および、記憶制御方法 |
WO2016143168A1 (en) * | 2015-03-10 | 2016-09-15 | Kabushiki Kaisha Toshiba | Memory device and memory system |
US20170098478A1 (en) * | 2015-10-02 | 2017-04-06 | Macronix International Co., Ltd. | Method and apparatus for improving yield for non-volatile memory |
US20170193361A1 (en) * | 2015-12-31 | 2017-07-06 | Microsoft Technology Licensing, Llc | Neural network training performance optimization framework |
US9715656B1 (en) * | 2016-09-12 | 2017-07-25 | International Business Machines Corporation | Killing asymmetric resistive processing units for neural network training |
CN109147860B (zh) * | 2017-06-27 | 2020-11-17 | 华邦电子股份有限公司 | 存储器存储装置及其测试方法 |
US10749529B2 (en) * | 2017-09-29 | 2020-08-18 | Crossbar, Inc. | Memory device including integrated deterministic pattern recognition circuitry |
KR102507774B1 (ko) * | 2018-03-08 | 2023-03-09 | 에스케이하이닉스 주식회사 | 메모리 칩 및 그것을 포함하는 테스트 시스템 |
US10566063B2 (en) * | 2018-05-16 | 2020-02-18 | Micron Technology, Inc. | Memory system with dynamic calibration using a trim management mechanism |
US11461623B2 (en) * | 2018-10-18 | 2022-10-04 | Taiwan Semiconductor Manufacturing Co., Ltd. | Method and apparatus for defect-tolerant memory-based artificial neural network |
-
2019
- 2019-08-15 US US16/542,049 patent/US11461623B2/en active Active
- 2019-10-16 TW TW108137250A patent/TWI781351B/zh active
- 2019-10-17 CN CN201910987185.2A patent/CN111079918A/zh active Pending
-
2022
- 2022-08-08 US US17/883,594 patent/US11797831B2/en active Active
-
2023
- 2023-08-08 US US18/231,769 patent/US20230385623A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201741942A (zh) * | 2016-04-14 | 2017-12-01 | 半導體能源研究所股份有限公司 | 半導體裝置 |
US20180211620A1 (en) * | 2017-01-26 | 2018-07-26 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and electronic device including the semiconductor device |
WO2018165753A1 (en) * | 2017-03-14 | 2018-09-20 | University Of Manitoba | Structure defect detection using machine learning algorithms |
CN108510058A (zh) * | 2018-02-28 | 2018-09-07 | 中国科学院计算技术研究所 | 神经网络中的权重存储方法以及基于该方法的处理器 |
Also Published As
Publication number | Publication date |
---|---|
US20220383085A1 (en) | 2022-12-01 |
US20200125932A1 (en) | 2020-04-23 |
CN111079918A (zh) | 2020-04-28 |
US11797831B2 (en) | 2023-10-24 |
US20230385623A1 (en) | 2023-11-30 |
TW202029066A (zh) | 2020-08-01 |
US11461623B2 (en) | 2022-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10802728B2 (en) | Storage device and operating method of storage device | |
US11170290B2 (en) | Realization of neural networks with ternary inputs and binary weights in NAND memory arrays | |
US20200381026A1 (en) | In-memory computing device for 8t-sram memory cells | |
US20230099349A1 (en) | Memory sub-system with dynamic calibration using component-based function(s) | |
US11721399B2 (en) | Memory system with dynamic calibration using a trim management mechanism | |
US11328204B2 (en) | Realization of binary neural networks in NAND memory arrays | |
US11625586B2 (en) | Realization of neural networks with ternary inputs and ternary weights in NAND memory arrays | |
Hur et al. | Memristive memory processing unit (MPU) controller for in-memory processing | |
US10825526B1 (en) | Non-volatile memory with reduced data cache buffer | |
US20230385623A1 (en) | Method and apparatus for defect-tolerant memory-based artificial neural network | |
US20140229663A1 (en) | Selectively programming data in multi-level cell memory | |
US20210397930A1 (en) | Accelerating binary neural networks within latch structure of non-volatile memory devices | |
US10740165B2 (en) | Extending the error correction capability of a device using a neural network | |
US11776615B2 (en) | Sequential SLC read optimization | |
US11720268B2 (en) | Managing a mode to access a memory component or a logic component for machine learning computation in a memory sub-system | |
US11526285B2 (en) | Memory device for neural networks | |
US20240152292A1 (en) | Redundant computing across planes | |
KR20220052355A (ko) | 인공지능 모드를 가진 메모리 시스템의 데이터 복사 | |
US11605426B2 (en) | Retention drift correction in non-volatile memory arrays | |
KR20100013962A (ko) | 불휘발성 메모리 장치의 프로그램 방법 | |
US20210110251A1 (en) | Memory sub-system with internal logic to perform a machine learning operation | |
US20240045754A1 (en) | Classification-based error recovery with reinforcement learning | |
JP7445362B2 (ja) | データを安全に消去するための高電圧パルスに基づくプログラム処理の実行 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |