TW202230220A - 神經網路系統及記憶體操作方法 - Google Patents
神經網路系統及記憶體操作方法 Download PDFInfo
- Publication number
- TW202230220A TW202230220A TW110103128A TW110103128A TW202230220A TW 202230220 A TW202230220 A TW 202230220A TW 110103128 A TW110103128 A TW 110103128A TW 110103128 A TW110103128 A TW 110103128A TW 202230220 A TW202230220 A TW 202230220A
- Authority
- TW
- Taiwan
- Prior art keywords
- initial bit
- bit code
- controller
- codes
- bit codes
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000013528 artificial neural network Methods 0.000 title claims description 46
- 238000006243 chemical reaction Methods 0.000 claims description 31
- 230000008859 change Effects 0.000 claims description 21
- 210000002569 neuron Anatomy 0.000 claims description 15
- 210000004027 cell Anatomy 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 26
- 230000009471 action Effects 0.000 description 25
- 238000012549 training Methods 0.000 description 10
- 238000005265 energy consumption Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000001537 neural effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Landscapes
- Memory System (AREA)
- Static Random-Access Memory (AREA)
Abstract
本揭示內容關於一種記憶體操作方法,包含下列步驟:透過控制器,取得複數個初始位元碼,其中該些初始位元碼對應於記憶體中的複數個記憶單元,且至少包含第一初始位元碼及第二初始位元碼;將第一初始位元碼及第二初始位元碼設定為運算位元組;當控制器接收到的寫入指令對應於第一初始位元碼時,根據寫入指令,改變第一初始位元碼的組態;以及當控制器接收到的寫入指令不對應於第一初始位元碼、但對應於第二初始位元碼時,控制控制器忽略寫入指令。
Description
本揭示內容關於一種神經網路系統及記憶體操作方法,用以根據寫入指令控制記憶體中的組態。
神經網路/類神經網路(Neural Network)是一種模仿生物神經系統的運算模型。神經網路通常會包含數個階層,每個階層中包含眾多的神經元(neuron)。每個神經元對應於不同的活化函數(Activation function),將接收到的資料進行轉換。每個神經元會跟下一層的至少一個神經元連接,使上一層神經元的輸出值經過權重計算(weight)後傳遞給下一層的神經元。
神經網路需透過大量的訓練過程,反覆地調整每個神經元的權重值。因此,神經網路需要快速的運算能力,且亦需儲存龐大的資料量。動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)具有高速的讀寫能力,但是成本較高,而不利於儲存大量的資料。因此,需要一種新的記憶體操作方法,兼顧記憶體的讀寫速度及成本。
本揭示內容之一態樣為一種記憶體操作方法,包含下列步驟:透過控制器,取得複數個初始位元碼,其中該些初始位元碼對應於記憶體中的複數個記憶單元,且至少包含第一初始位元碼及第二初始位元碼;將第一初始位元碼及第二初始位元碼設定為運算位元組;當控制器接收到的寫入指令對應於第一初始位元碼時,根據寫入指令,改變第一初始位元碼的組態;以及當控制器接收到的寫入指令不對應於第一初始位元碼、但對應於第二初始位元碼時,控制控制器忽略寫入指令。
本揭示內容之另一態樣為一種神經網路系統,包含記憶體及控制器。記憶體包含複數個記憶單元,用以紀錄複數個初始位元碼。該些初始位元碼至少包含一第一初始位元碼及一第二初始位元碼。控制器電性連接於記憶體,且用以將第一初始位元碼及第二初始位元碼設定為一運算位元組。中控制器用以根據一寫入指令調整該些初始位元碼的資料組態。當寫入指令對應於第一初始位元碼時,控制器根據寫入指令,改變第一初始位元碼的組態。當寫入指令不對應於第一初始位元碼、但對應於第二初始位元碼時,控制器忽略寫入指令。
本揭示內容透過簡化運算邏輯,使得控制器在控制位元碼的組態時,執行步驟能較為精簡。據此,將可改善神經網路系統之「成本」、「讀寫速度」及「耗能」問題。
以下將以圖式揭露本發明之複數個實施方式,為明確說明起見,許多實務上的細節將在以下敘述中一併說明。然而,應瞭解到,這些實務上的細節不應用以限制本發明。也就是說,在本發明部分實施方式中,這些實務上的細節是非必要的。此外,為簡化圖式起見,一些習知慣用的結構與元件在圖式中將以簡單示意的方式繪示之。
於本文中,當一元件被稱為「連接」或「耦接」時,可指「電性連接」或「電性耦接」。「連接」或「耦接」亦可用以表示二或多個元件間相互搭配操作或互動。此外,雖然本文中使用「第一」、「第二」、…等用語描述不同元件,該用語僅是用以區別以相同技術用語描述的元件或操作。除非上下文清楚指明,否則該用語並非特別指稱或暗示次序或順位,亦非用以限定本發明。
第1A圖為神經網路系統N100的一種示意圖。神經網路N100包含輸入層L1、至少一隱藏層L2及輸出層L3,每一層L1~L3都包含複數個神經單元NR。在建立神經網路之前,需先通過訓練程序(training phase),以確認每個神經單元NR在進行運算時的權重值。由於本領域人士能理解訓練程序之原理,故在此不另贅述。
在部份實施例中,本揭示內容係應用非揮發性記憶體(Non-Volatile Memory,NVM)來實現神經網路系統N100的記憶體,以儲存神經單元NR的權重值、以及儲存訓練資料。NVM的成本相對於DRAM低廉,故能在相同成本下,儲存更多資料。
在一實施例中,神經網路系統N100使用非揮發性隨機存取記憶體(NVRAM)來實現神經網路系統N100的記憶體,例如相變化記憶體(Phase Change RAM,PRAM)。第1B圖為PRAM的操作訊號示意圖。PRAM的操作訊號包含SET、RESET。其中SET代表將記憶體的組態設定為高準位(即,1)、RESET代表將記憶體的組態設定為低準位(即,0)。如圖所示,PRAM在設定組態為1時的速度較慢、但耗能相對較低;而在設定組態為0時,速度較快,但耗能相對較高。換言之,如果直接使用PRAM作為神經網路系統N100的記憶體,則「讀寫速度」、「耗能過高」等兩個問題都難以有效解決,因此,需要特殊的操作方式來進行改良。
在此要特別一提者,雖然第1B圖所示為PRAM的操作訊號示意圖,但本揭示內容並不以此為限。在其他實施例中,本揭示內容亦可使用其他類型的NVM(如:快閃記憶體)作為記憶體,來實現本揭示內容的系統架構或運算方法。
第1C圖所示為神經網路系統N100之記憶體(如:PRAM)的一種操作方式的示意圖。第1C圖左方所示的操作流程中,記憶體內的數據變化依序為「0101、1000、0010」。前述變化包含了兩次組態從0到1、三次組態從1至0。為便於後文說明,在此將組態「0至1」的變化簡稱為SET操作、組態從「1至0」的變化簡稱為RESET操作。如第1C圖的左側操作流程,其組態變化包含「2 SET +3RESET」。參照第1B及1C圖,由於 RESET操作(從1到0)需要較大的耗能,因此前述的操作會耗費許多能量,且無法解決 SET操作(從0到1)寫入時間較長的問題。
承上,第1C圖右方所示的操作流程包含「Pre-SET」操作,代表神經網路系統N100的控制器會利用空暇時間,預先將記憶體的所有組態統一設定為「1」。據此,在實際要根據寫入命令修改記憶體之組態時,其動作就只會有RESET操作(從1到0),從而能避免寫入速度過長的問題。不過,第1C圖的右側操作流程,其組態變化包含「4SET+6RESET」,實際耗能將更高。
除了「Pre-SET」操作外,神經網路系統N100尚可執行另一種「Pre-RESET」操作。意即,神經網路系統N100的控制器會利用空暇時間,預先將記憶體的所有組態統一設定為「0」。據此,在實際要根據寫入命令修改記憶體之組態時,其動作就只會有SET操作(從0到1)。如此,亦可改善寫入速度過長的問題。
第1D圖所示為神經網路系統N100之記憶體(如:PRAM)的另一種操作方式的示意圖,稱為一次性寫入操作(Write-Once Memory codes,簡稱WOM-code)。在執行WOM-code操作時,神經網路系統N100之控制器會將兩個位元的資料轉換為以三個轉換位元碼W1、W2表示(如:組態10表示為010),且透過WOM-code的運算邏輯執行寫入動作,使得每次寫入時,記憶體的組態只會發生SET操作或RESET操作其中一種的變化。第1E圖為WOM-code操作的運算邏輯示意圖。WOM-code的運算邏輯分為兩種運算動作組,當控制器第一次對記憶體中的一個記憶單元進行寫入時,係根據第一運算動作組P1;接著,當控制器第二次對記憶體中的該記憶單元進行寫入時,則會改為根據第二運算動作組P2。以此類推,反覆切換。
第2圖為根據本揭示內容之部份實施例之神經網路系統N100的示意圖。神經網路系統N100包含控制器N110、記憶體韌體N120、快取記憶體N130、資料記憶體N140及儲存裝置N150。控制器N110可為中央處理器(central processing unit,CPU)、系統單晶片(System on Chip,SoC)、應用處理器、音訊處理器、數位訊號處理器(digital signal processor)或特定功能的處理晶片或控制器。記憶體韌體N120設置於神經網路系統N100的任一記憶位置,用以儲存神經元網路模組(如第1A圖所示之結構)。在部份實施例中,記憶體韌體N120還包含讀取模組(Read Function)及寫入模組(Program Function),用以訓練並建立神經元網路模組。
快取記憶體N130(如:SRAM)電性連接控制器N110,用以暫時存放控制器N110運算的數據。資料記憶體N140包含多個記憶單元,用以紀錄/儲存神經元網路模組所使用的多個權重值。在部份實施例中,控制器N110接收訓練資料,以運行神經元網路模組,並根據運行出的模擬結果與訓練資料中的正確結果相比對,以調整資料記憶體N140儲存之多個權重值。
在部份實施例中,資料記憶體N140還包含位址翻譯器(address translator)及抹除平衡器(wear leveler),以協助進行讀寫動作。儲存裝置N150電性連接於控制器N110及資料記憶體N140,用以儲存使用頻率較低的資料,例如訓練資料、比對資料等。
如前述實施例所述,由於Pre-SET操作、Pre-RESET操作、WOM-code操作等對於「耗能過高」問題的改善程度有限,因此,在本揭示內容的部份實施例中,係透過簡化WOM-code操作的運算邏輯,再配合Pre-SET操作或Pre-RESET操作,以能改善神經網路系統N100的「成本」、「讀寫速度」及「耗能」等問題。
為便於說明本揭示內容的技術概念,在此先說明神經元網路模組中權重值的儲存格式。第3A圖為根據本揭示內容之部份實施例之神經網路系統N100寫入資料(如:權重值)的示意圖。權重值包含多個初始位元碼S0、E1~E8、M1~M23。換言之,初始位元碼S0、E1~E8、M1~M23紀錄權重值所代表的數值,且每個初始位元碼分別儲存至資料記憶體N130的多個記憶單元中。
在一實施例中,第3A圖所示的初始位元碼由左至右按照最高有效位(MSB)至最低有效位(LSB)排列。例如:初始位元碼S0紀錄「權重值的正負號」、初始位元碼E1~E8紀錄權重值的大比例成份(如:權重值為「10110001011001」,初始位元碼E1~E8為從左方數來的前八個數字)。初始位元碼M1~M23則為影響較小的數字(如:權重值在十進位表示下的個位數、十位數等)。
第3B圖為神經網路系統N100根據大量訓練資料進行運算的過程中,每一個初始位元碼被設定在組態「0」或組態「1」的次數統計圖。由圖式可看出,初始位元碼M1~M23在組態0或1的次數幾乎相等。因此,若忽略初始位元碼M1~M23的組態變動,對於神經網路系統N100的訓練結果影響不大。換言之,即便不調整該些初始位元碼M1~M23的組態,對於最終計算出的權重值大小並不會有明顯的差異。
如前所述,在本揭示內容的部份實施例中,當控制器N110取得對應於資料記憶體N140的多個初始位元碼S0、E1~E8、M1~M23後,控制器N110會將該些多個初始位元碼S0、E1~E8、M1~M23分類為第一初始位元碼及第二初始位元碼。第二初始位元碼即為前述影響程度較低、可忽略其組態變化的位元碼。在一實施例中,控制器N110將初始位元碼N13~M23設定為第二初始位元碼,但第二初始位元碼的定義可自行調整(如:初始位元碼N6~M23),不以此實施例為限。
如第3A圖所示,在部份實施例中,初始位元碼M2~M12被分類/設定為第一初始位元碼。初始位元碼M13~M23被分類/設定為第二初始位元碼。控制器N110會將第一初始位元碼及第二初始位元碼兩兩成組,設定為運算位元組。例如:第一初始位元碼M2及第二初始位元碼M13為一組運算位元組,第一初始位元碼M11及第二初始位元碼M22為另一組運算位元組。換言之,若一運算位元組為「10」,則「1」為第一初始位元碼的組態、「0」則為第二初始位元碼的組態。
控制器N110用以接收寫入指令,且根據寫入指令調整初始位元碼的資料組態。在其他實施例中,初始位元碼還包含關鍵位元碼。例如:初始位元碼S0、E1~E8等影響權重值較高的數據可被控制器N110分類/設定為關鍵位元碼。由於關鍵位元碼會大幅度改變權重值,因此控制器N110不會使用簡化的方式進行運算,而是根據寫入指令精確地調整其組態。
第4圖為根據本揭示內容之部份實施例之操作方法流程圖。在步驟S401中,控制器N110接收/取得讀寫指令。讀寫指令對應於資料記憶體N130中的至少一個記憶單元(例如:修改其中一個神經元的權重值)。
在步驟S402中,控制器N110判斷讀寫指令是否為寫入指令。若讀寫指令為「讀取指令」,則在步驟S403中,控制器N110取得對應於讀寫指令之記憶單元內的位元組態。由於本領域人士能理解各種記憶體的讀取方式,故在此不另贅述。
在步驟S404中,若讀寫指令為「寫入指令」,則寫入指令將會對應於至少一個權重值(即,多個初始位元碼)以及對應的寫入位置(即,記憶單元)。此時,控制器N110進一步判斷對應於讀寫指令之記憶單元內是否已存在資料(即,是否已被寫入組態0或1)。若對應於寫入指令之記憶單元內尚未被寫入資料,代表記憶單元內沒有儲存資料,在步驟S405中,控制器N110直接根據寫入指令,設定對應的組態。
在步驟S406中,若對應於寫入指令之記憶單元內已被寫入資料,則控制器N110會進一步判斷寫入指令中要寫入的內容是否對應於第一初始位元碼及第二初始位元碼組成的「運算位元組」。舉例而言,控制器N110會判斷寫入指令所要改變的位元組態是否初始位元碼M2之後(M2~M23)。
若讀寫指令的寫入內容不是對應於「運算位元組」,而是對應於「關鍵位元碼」(S0、E1~E8),則在步驟S407中,控制器N110直接根據寫入指令,設定對應的組態。若讀寫指令的寫入內容是屬於「運算位元組」,則在步驟S408中,控制器N110根據簡化的運算邏輯執行寫入指令。
具體而言,在控制器N110判斷寫入指令的寫入內容屬於第一初始位元碼及第二初始位元碼組成的「運算位元組」時,控制器N110會先辨識/設定出第一初始位元碼及第二初始位元碼。接著,控制器N110會再更精確地判斷寫入指令的寫入內容是否同時包含第一初始位元碼及第二初始位元碼亦或是是只包含第二初始位元碼。當寫入指令對應於第一初始位元碼時,控制器N110根據寫入指令,改變第一初始位元碼的組態。另一方面,若寫入指令不對應於該第一初始位元碼,而只對應於第二初始位元碼,則控制器N110將會忽略寫入指令,而不進行寫入動作。
據此,透過忽略第二初始位元碼的寫入動作,將能大幅度減少組態的變動次數,從而解決了記憶體「讀寫速度」及「耗能」的問題。由於第二初始位元碼於權重值的整體數值中僅占較低的比例,因此上述簡化的運算邏輯並不會對神經網路系統N100的精確度造成明顯影響。
在部份實施例中,控制器N110會對初始位元碼S0、E1~E8、M1~M23進行轉換。舉例而言,由兩個位元(bit)組成的運算位元組會被轉換成三個轉換位元碼,使第一初始位元碼及第二初始位元碼能由三個轉換位元碼所表示。同時,控制器N110會建立對應於轉換位元碼的運算邏輯。運算邏輯包含初始位元碼被寫入不同組態時,轉換位元碼的對應組態。
第5A圖為一種運算邏輯的示意圖。具體而言,如第5A圖所示,運算邏輯包含第一運算動作組510及第二運算動作組520,分別具有不同的轉換位元碼之對應規則。在第一運算動作組510中,「00」以「111」表示、「11」以「011」表示、「10」以「101」表示、「01」以「110」表示。在第二運算動作組520中,「00」以「000」表示、「11」以「100」表示、「10」以「010」表示、「01」以「001」表示。第一運算動作組510及第二運算動作組520以表格方式顯示如下:
| 初始位元碼 | 第一運算動作組對應的轉換位元碼 | 第二運算動作組對應的轉換位元碼 |
| 00 | 111 | 000 |
| 01 | 110 | 001 |
| 10 | 101 | 010 |
| 11 | 011 | 100 |
如第5A圖及上方表格所示,若控制器N110第一次進行寫入,則控制器N110根據第一運算動作組510調整為對應的轉換位元碼。當控制器N110第二次進行寫入,則控制器N110根據第二運算動作組520調整為對應的轉換位元碼。如此依序切換,即可使第一運算動作組510及第二運算動作組520間的操作只具有一種組態變化,且第一運算動作組510及第二運算動作組520各自的組態變化互為相反。
舉例而言,控制器N110先根據第一個寫入指令(寫入01),將兩個bit的初始位元碼以三個bit的轉換位元碼「110」顯示。接著,當控制器N110要執行第二個寫入指令(01改變為11)時,此時控制器N110根據第二運算動作組520找到對應的轉換位元碼「100」(對應於初始位元碼「11」),並將原先的轉換位元碼「110」轉換為「100」。若當控制器N110需執行第三個寫入指令(11轉換為10),則此時控制器N110根據第一運算動作組510找到對應的轉換位元碼「101」(對應於初始位元碼「10」),並將原先的轉換位元碼「100」轉換為「101」。在前述操作過程中,每次的組態變化都只有「SET操作(0至1)」或「RESET操作(1至0)」。
此外,在接收到新的寫入指令之間,控制器N110亦能利用Pre-SET操作或Pre-RESET操作來減少實際寫入時所需的時間。例如:在控制器N110根據第一個寫入指令寫入轉換位元碼「110」(或初始位元碼「01),但尚未接收到第二個寫入指令前,控制器N110可根據Pre-SET操作,以第一運算動作組510來將轉換位元碼設定為「111」(對應初始位元碼「00」)。
第5B~5G圖為根據本揭示內容之部份實施例所使用的簡化運算邏輯的示意圖。如前述實施例所述,為了簡化操作步驟,第二初始位元碼的組態變化可以忽略。第5B~5C圖省略了第一運算動作組510中「00至01」的組態變化。相似地,第5D~5E圖進一步省略第一運算動作組510中「10至11」及「11至10」的組態變化。
如第5F圖所示,在簡化第一運算動作組510後,第一運算動作組510及第二運算動作組520之間缺少「11至00」及「10至00」的直接變化路徑,而需先轉變為「01」在轉變為「00」。由於第二初始位元碼可以忽略,因此,第一運算動作組510及第二運算動作組520之間「11至00」及「10至00」的變化路徑可以被調整為「11直接至00」及「10直接至00」。第5G圖則為第5F圖整合後的結果。簡化後的運算邏輯同樣能使第一運算動作組510及第二運算動作組520間的操作只具有一種組態變化,且第一運算動作組510及第二運算動作組520互為相反。以下為簡化之運算邏輯的對應表格:
| 初始位元碼 | 第一運算動作組對應的轉換位元碼 | 第二運算動作組對應的轉換位元碼 |
| 00 | 111 | 000 |
| 01 | 忽略 | 001 |
| 10 | 101 | 忽略 |
| 11 | 011 | 忽略 |
在部份實施例中,當寫入指令的修改內容為關鍵位元碼S0、E1~E8時,控制器N110同樣會將關鍵位元碼S0、E1~E8中的至少二者設定為一組關鍵位元組,並根據寫入指令,改變關鍵位元組中關鍵位元碼的組態。
具體而言,控制器N110會轉換關鍵位元碼S0、E1~E8,使關鍵位元組中關鍵位元碼改以三個轉換位元碼所表示。接著,控制器N110會建立對應之運算邏輯。由於關鍵位元碼S0、E1~E8會對權重值造成明顯的改變,故控制關鍵位元碼S0、E1~E8的運算邏輯並不會經過簡化。例如:控制器N110根據第5A圖所示的完整運算邏輯改變關鍵位元碼S0、E1~E8所對應之轉換位元碼的組態。
第6圖所示為神經網路系統N100以不同操作流程進行寫入的比較圖。其中第一操作流程610為「Pre-SET操作」、第二操作流程620為「Pre-SET操作結合WOM-code操作」、第三操作流程630為「Pre-SET操作結合WOM-code操作,且使用簡化的運算邏輯」、第四操作流程640為「Pre-RESET操作結合WOM-code操作,且使用簡化的運算邏輯」。
第6圖共顯示初始狀態DW0、第一寫入狀態DW1、第二寫入狀態DW2及第三寫入狀態DW3的位元變化。第一操作流程610包含10個SET操作(從0至1)及10個RESET操作(從1至0)。第二操作流程620包含7個SET操作及11個RESET操作。第三操作流程630包含0個SET操作及12個RESET操作。第四操作流程640包含12個SET操作及0個RESET操作。
第7圖為根據本揭示內容之部份實施例之神經網路系統N100的操作方式圖。在部份實施例中,控制器N110會分別以第一模式710及第二模式720執行寫入指令。在第一模式710中,控制器N110定期(如:未接收到讀寫指令的空檔時間)將初始位元碼所對應之轉換位元碼從高組態「1」統一調整為低組態「0」(即,Pre-RESET操作方式)。控制器N110還會判斷初始位元碼所對應之轉換位元碼中「1」的數量是否大於預定值,例如:判斷「1」的比例是否大於50%。如第7圖所示,控制器N110在第一模式710中,根據寫入指令依序將權重值從運算位元組710a(以轉換位元碼表示)轉換至運算位元組710n。
當運算位元組710n中,初始位元碼所對應之轉換位元碼中「1」的數量大於預定值時,控制器N110會進入第二模式720,並改為定期將初始位元碼所對應之轉換位元碼從「0」調整為「1」。如第7圖所示,控制器N110在第二模式720中,根據寫入指令依序將權重值從運算位元組720a(以轉換位元碼表示)轉換至運算位元組720n。當運算位元組710n中,初始位元碼所對應之轉換位元碼中「0」的數量大於預定值時,控制器N110會重新恢復第一模式710,定期將初始位元碼所對應之轉換位元碼從「1」調整為「0」。
前述各實施例中的各項元件、方法步驟或技術特徵,係可相互結合,而不以本揭示內容中的文字描述順序或圖式呈現順序為限。
雖然本揭示內容已以實施方式揭露如上,然其並非用以限定本揭示內容,任何熟習此技藝者,在不脫離本揭示內容之精神和範圍內,當可作各種更動與潤飾,因此本揭示內容之保護範圍當視後附之申請專利範圍所界定者為準。
N100:神經網路系統
N110:控制器
N120:記憶體韌體
N130:快取記憶體
N140:資料記憶體
N150:儲存裝置
L1:輸入層
L2:隱藏層
L3:輸出層
W1:轉換位元
W2:轉換位元
P1:第一運算動作組
P2:第二運算動作組
S0:初始位元碼
E1-E8:初始位元碼
M1-M2:初始位元碼
S401-S408:步驟
510:第一運算動作組
520:第二運算動作組
610-640:操作流程
DW0:初始狀態
DW1:第一寫入狀態
DW2:第二寫入狀態
DW3:第三寫入狀態
710:第一模式
720:第二模式
710a:運算位元組
710n:運算位元組
720a:運算位元組
720n:運算位元組
第1A圖為神經網路系統的一種示意圖。
第1B圖為相變化記憶體的操作訊號示意圖。
第1C圖為神經網路系統之記憶體的一種操作方式的示意圖。
第1D圖為神經網路系統之記憶體的另一種操作方式的示意圖。
第1E圖為WOM-code操作的運算邏輯示意圖。
第2圖為根據本揭示內容之部份實施例之神經網路系統的示意圖。
第3A圖為根據本揭示內容之部份實施例之神經網路系統寫入資料的示意圖。
第3B圖為每一個初始位元碼被設定在組態「0」或組態「1」的次數統計圖。
第4圖為根據本揭示內容之部份實施例之操作方法流程圖。
第5A圖為一種運算邏輯的示意圖。
第5B~5G圖為根據本揭示內容之部份實施例所使用的簡化運算邏輯的示意圖。
第6圖所示為神經網路系統以不同操作流程進行寫入的比較圖。
第7圖為根據本揭示內容之部份實施例之神經網路系統的操作方式圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
S401-S408:步驟
Claims (10)
- 一種記憶體操作方法,包含: 透過一控制器,取得複數個初始位元碼,其中該些初始位元碼對應於一記憶體中的複數個記憶單元,且至少包含一第一初始位元碼及一第二初始位元碼; 將該第一初始位元碼及該第二初始位元碼設定為一運算位元組; 當控制器接收到的一寫入指令對應於該第一初始位元碼時,根據該寫入指令,改變該第一初始位元碼的組態;以及 當控制器接收到的該寫入指令不對應於該第一初始位元碼,但對應於該第二初始位元碼時,控制該控制器忽略該寫入指令。
- 如請求項1所述之記憶體操作方法,其中將該第一初始位元碼及該第二初始位元碼設定為該運算位元組的方法還包含: 轉換該第一初始位元碼及該第二初始位元碼,使該第一初始位元碼及該第二初始位元由三個轉換位元碼所表示;以及 建立一運算邏輯,其中該運算邏輯包含該第一初始位元碼被寫入不同組態時,該些轉換位元碼的對應組態。
- 如請求項2所述之記憶體操作方法,其中建立該運算邏輯的方法還包含: 對該運算邏輯中的一第一運算動作組及一第二運算動作組進行簡化,使得該第一運算動作組及該第二運算動作組間的操作只具有一種組態變化。
- 如請求項3所述之記憶體操作方法,還包含: 定期將該些初始位元碼所對應之該些轉換位元碼從一高組態調整為一低組態; 判斷該些初始位元碼所對應之該些轉換位元碼中該高組態的數量是否大於一預定值;以及 當該些初始位元碼所對應之該些轉換位元碼中該高組態的數量大於該預定值時,定期將該些初始位元碼所對應之該些轉換位元碼從該低組態調整為該高組態。
- 如請求項1所述之記憶體操作方法,其中該些初始位元碼還包含複數個關鍵位元碼,且該記憶體操作方法還包含: 將該些關鍵位元碼中的至少二者設定為一關鍵位元組;以及 當該寫入指令對應於該關鍵位元組時,根據該寫入指令,改變該關鍵位元組中的該些關鍵位元碼的組態。
- 如請求項5所述之記憶體操作方法,其中將該些關鍵位元碼中的至少二者設定為該關鍵位元組的方法包含: 轉換該些關鍵位元碼中的至少二者,使該些關鍵位元碼中的至少二者由三個轉換位元碼所表示;以及 建立一運算邏輯,其中該運算邏輯包含該些關鍵位元碼中的至少二者被寫入不同組態時,該些關鍵位元碼的對應組態。
- 一種神經網路系統,包含: 一記憶體,包含複數個記憶單元,用以記錄複數個初始位元碼,其中該些初始位元碼至少包含一第一初始位元碼及一第二初始位元碼; 一控制器,電性連接於該記憶體,且用以將該第一初始位元碼及該第二初始位元碼設定為一運算位元組,其中該控制器用以根據一寫入指令調整該些初始位元碼的資料組態; 當該寫入指令對應於該第一初始位元碼時,該控制器根據該寫入指令,改變該第一初始位元碼的組態;以及 當該寫入指令不對應於該第一初始位元碼、但對應於該第二初始位元碼時,該控制器忽略該寫入指令。
- 如請求項7所述之神經網路系統,其中該神經網路系統還包含一神經元網路模組,且該些初始位元碼用以紀錄該神經元網路模組中的一權重值。
- 如請求項7所述之神經網路系統,其中該控制器還用以轉換該第一初始位元碼及該第二初始位元碼,使該第一初始位元碼及該第二初始位元由三個轉換位元碼所表示,且該控制器在接收到該寫入指令時,用以根據一運算邏輯調整該些轉換位元碼的對應組態。
- 如請求項8所述之神經網路系統,其中該運算邏輯包含一第一運算動作組及一第二運算動作組,該第一運算動作組及該第二運算動作組間的操作只具有一種組態變化; 其中該控制器還用以定期將該些初始位元碼所對應之該些轉換位元碼從一高組態調整為一低組態;當該些初始位元碼所對應之該些轉換位元碼中該高組態的數量大於該預定值時,該控制器用以定期將該些初始位元碼所對應之該些轉換位元碼從該低組態調整為該高組態。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW110103128A TW202230220A (zh) | 2021-01-27 | 2021-01-27 | 神經網路系統及記憶體操作方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW110103128A TW202230220A (zh) | 2021-01-27 | 2021-01-27 | 神經網路系統及記憶體操作方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW202230220A true TW202230220A (zh) | 2022-08-01 |
Family
ID=83782559
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW110103128A TW202230220A (zh) | 2021-01-27 | 2021-01-27 | 神經網路系統及記憶體操作方法 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TW202230220A (zh) |
-
2021
- 2021-01-27 TW TW110103128A patent/TW202230220A/zh unknown
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN114341768B (zh) | 操作模式寄存器 | |
| CN111124999A (zh) | 一种支持存储内计算的双模计算机架构 | |
| CN117608519B (zh) | 基于10t-sram的带符号乘法与乘累加运算电路 | |
| JP2900523B2 (ja) | 不揮発性半導体メモリ装置の書込回路 | |
| US7136986B2 (en) | Apparatus and method for controlling flash memories | |
| US10585619B1 (en) | Memory block erasure | |
| CN116149567B (zh) | 基于忆阻器的存算一体化系统及在线深度学习方法 | |
| JPH01267893A (ja) | 半導体記憶装置及び半導体記憶システム | |
| CN114303194A (zh) | 在具有人工智能模式的存储器系统中复制数据 | |
| CN116126779A (zh) | 一种9t存算电路、乘累加运算电路、存内运算电路及芯片 | |
| CN111177027B (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
| CN111459552A (zh) | 一种并行化存内计算的方法及装置 | |
| JPH04316153A (ja) | ニューロプロセッサ | |
| CN116340256B (zh) | 一种基于dice结构sram的存内计算单元以及阵列 | |
| CN116382888B (zh) | 跨平面的冗余计算 | |
| CN117935877A (zh) | 一种存算一体芯片的刷新控制方法 | |
| TW202509931A (zh) | 資料儲存方法、主機系統及資料儲存系統 | |
| TWI721660B (zh) | 控制資料讀寫裝置與方法 | |
| CN117667789A (zh) | 用于离散dma数据访问的数据处理系统 | |
| EP4213150A1 (en) | Memory and data migration method | |
| TWI909965B (zh) | 資料快取方法與主機系統 | |
| WO2022183314A1 (zh) | 一种存储器 | |
| US20250252995A1 (en) | Memory device and operating method thereof | |
| US11269720B2 (en) | Memory storage apparatus and data access method | |
| CN1085359C (zh) | 一种应用程序的加密方法及装置 |