TWI802070B - 積體電路及其配置方法 - Google Patents
積體電路及其配置方法 Download PDFInfo
- Publication number
- TWI802070B TWI802070B TW110140970A TW110140970A TWI802070B TW I802070 B TWI802070 B TW I802070B TW 110140970 A TW110140970 A TW 110140970A TW 110140970 A TW110140970 A TW 110140970A TW I802070 B TWI802070 B TW I802070B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- management unit
- engine
- predetermined
- memory management
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000015654 memory Effects 0.000 claims abstract description 144
- 238000004364 calculation method Methods 0.000 claims abstract description 66
- 238000013528 artificial neural network Methods 0.000 claims abstract description 3
- 238000013507 mapping Methods 0.000 claims description 22
- 238000003062 neural network model Methods 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 19
- 238000004519 manufacturing process Methods 0.000 description 15
- 230000003068 static effect Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 231100000957 no side effect Toxicity 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 210000000746 body region Anatomy 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
- Credit Cards Or The Like (AREA)
Abstract
本發明提供一種積體電路及其配置方法。該積體電路,應用於一神經網路計算,其包括一第一算子引擎、一第二算子引擎、一隨機存取記憶體及一直接記憶體存取引擎。第一算子引擎用來進行一第一計算操作。第二算子引擎用以進行一第二計算操作。直接記憶體存取引擎於該第一算子引擎進行該第一計算操作時,依據一第一記憶體管理單元表對該隨機存取記憶體進行存取操作,並於該第二算子引擎進行該第二計算操作時,依據一第二記憶體管理單元表對該隨機存取記憶體進行存取操作。
Description
本發明係有關於電路設計,尤指一種積體電路(integrated circuit, IC)及其配置(configuration)方法。
依據相關技術,一神經網絡模型可應用於各種不同的處理,以達到簡單的邏輯電路無法達到的目標。然而,可能發生某些問題。例如,該神經網絡模型的相關計算可以非常複雜,且這些計算所需要的記憶體的容量可以非常大。當嘗試將該神經網絡模型實施於一電子產品時,由於記憶體資源的需求極大,故相關成本會對應地增加。因此,需要一種新穎的方法及相關架構,以在沒有副作用或較不可能帶來副作用之狀況下實現精巧(compact)、快速且可靠的電子產品。
本發明之一目的在於提供一種積體電路及其配置方法,以解決上述問題。
本發明之一實施例提供一種積體電路,應用於一神經網路計算,其包括一第一算子引擎、一第二算子引擎、一隨機存取記憶體及一直接記憶體存取引擎。第一算子引擎用來進行一第一計算操作。第二算子引擎用以進行一第二計算操作。直接記憶體存取引擎於該第一算子引擎進行該第一計算操作時,依據一第一記憶體管理單元表對該隨機存取記憶體進行存取操作,並於該第二算子引擎進行該第二計算操作時,依據一第二記憶體管理單元表對該隨機存取記憶體進行存取操作。
本發明之一實施例提供一種積體電路的配置方法,其中該配置方法可包含:對一神經網絡模型的計算所需要之所有張量記憶體進行對應於多個預定單位頁面之劃分;分別對該多個預定單位頁面進行數據依賴分析以建立多個數據依賴關係,且根據該多個數據依賴關係對該多個預定單位頁面進行多個虛擬暫存器的分配;分別對該多個虛擬暫存器進行生命週期分析,其中該生命週期分析之分析結果指出該多個虛擬暫存器之各自的生命週期;依據所述分析結果,進行多個物理暫存器的分配;以及建立多個預定記憶體管理單元表以記錄虛擬位址和物理位址之間的映射關係,以容許該積體電路於一使用階段中,根據一預先載入的記憶體管理單元表中的至少一映射關係查找至少一物理位址以存取數據,其中該預先載入的記憶體管理單元表係選擇自該多個預定記憶體管理單元表。
本發明的好處之一是,透過仔細設計之記憶體管理機制,本發明的積體電路及其配置方法能用有限的記憶體資源來實現該神經網絡模型之非常複雜的計算。由於記憶體資源可被妥善地管理,故本發明的積體電路及其配置方法能避免過大的記憶體需求,且避免不必要的額外成本。相較於相關技術,本發明的積體電路及其配置方法能在沒有副作用或較不可能帶來副作用之狀況下實現精巧、快速且可靠的電子產品。
第1圖為依據本發明一實施例之一種積體電路100的示意圖。積體電路100可包含一非揮發性記憶體(Non-Volatile Memory,簡稱NVM)101、一直接記憶體存取(Direct Memory Access,簡稱DMA)引擎110、多個算子(operator)引擎120以及一隨機存取記憶體(Random Access Memory,簡稱RAM)諸如靜態隨機存取記憶體(Static Random Access Memory,簡稱SRAM)130,而算子引擎120可包含分別用來實現算子#1、算子#2等之算子#1引擎ENG(1)、算子#2引擎ENG(2)等,其中這些元件之間的箭頭可指出這些元件彼此耦接,但本發明不限於此。舉例來說,積體電路100可另包含一處理電路諸如一中央處理單元(Central Processing Unit,簡稱CPU)(未顯示),且上列元件可透過一匯流排彼此耦接。為了便於理解,一動態隨機存取記憶體(Dynamic Random Access Memory,簡稱DRAM)30可被繪示成耦接至積體電路100,尤其,DMA引擎110。在本實施例中,NVM 101可藉由電子可抹除可複寫唯讀記憶體(Electrically Erasable Programmable Read-Only Memory, EEPROM)、快閃記憶體(Flash memory)等方式來實施。
如第1圖所示,NVM 101可儲存多個預定記憶體管理單元(Memory Management Unit,簡稱MMU)表諸如MMU表TABLE(1)、TABLE(2)等,而SRAM 130可儲存一預先載入的MMU表諸如MMU表TABLE(0)。依據積體電路100的一配置方法,在積體電路100的一配置階段中,一生產工具諸如執行著一第一生產工具程式碼之一主機裝置(例如個人電腦)可配置積體電路100以將該多個預定MMU表諸如MMU表TABLE(1)、TABLE(2)等寫入NVM 101,以容許積體電路100(例如該CPU)於積體電路100的一使用階段中將該多個預定MMU表中之任一預定MMU表載入至SRAM 130中之一預定位置(例如一MMU表區域)以作為該預先載入的MMU表諸如MMU表TABLE(0),其中該任一預定MMU表可記錄虛擬位址和物理位址之間的映射關係,但本發明不限於此。舉例來說,執行著一第二生產工具程式碼之該CPU可扮演該生產工具的角色,尤其,可在該配置階段中配置積體電路100以將該多個預定MMU表諸如MMU表TABLE(1)、TABLE(2)等寫入NVM 101,以容許積體電路100(例如該CPU及/或DMA引擎110)於該使用階段中將該多個預定MMU表中之任一MMU表載入至SRAM 130中的該預定位置(例如該MMU表區域)以作為該預先載入的MMU表諸如MMU表TABLE(0)。對應於該配置方法之這些生產工具程式碼可為彼此的變化版本,且可依該主機裝置及積體電路100之各自的平台架構、作業系統等而變化。
於該使用階段中,算子引擎120諸如算子#1引擎ENG(1)、算子#2引擎ENG(2)等可進行一神經網絡模型的多個計算操作,SRAM 130可暫時地儲存資訊諸如該預先載入的MMU表、關於該神經網絡模型的數據、使用者數據等,且DMA引擎110可為算子引擎120依據該預先載入的MMU表諸如MMU表TABLE(0)對SRAM 130(例如,其內的一數據區域)進行DMA操作,其中該預先載入的MMU表諸如MMU表TABLE(0)係選擇自該多個預定MMU表諸如MMU表TABLE(1)、TABLE(2)等,且對應於該多個計算操作中之一部分計算操作。積體電路100(例如該CPU及/或DMA引擎110)可從該多個預定MMU表選擇對應於該多個計算操作中之至少一第一計算操作之一第一預定MMU表(例如MMU表TABLE(1))以作為該預先載入的MMU表,即在執行第一計算操作之前將第一預定MMU表載入至SRAM 130中的該預定位置,以容許該多個算子引擎中之至少一第一算子引擎完成該至少一第一計算操作。尤其,DMA引擎110可為該至少一第一算子引擎依據被載入作為該預先載入的MMU表的該第一預定MMU表對SRAM 130或 DRAM 30進行DMA操作。另外,積體電路100(例如該CPU及/或DMA引擎110)可從該多個預定MMU表選擇對應於該多個計算操作中之至少一第二計算操作之一第二預定MMU表(例如MMU表TABLE(2))以作為該預先載入的MMU表,即在執行第二計算操作之前將第二預定MMU表載入至SRAM 130中的該預定位置,以容許該多個算子引擎中之至少一第二算子引擎完成該至少一第二計算操作。尤其,DMA引擎110可為該至少一第二算子引擎依據被載入作為該預先載入的MMU表的該第二預定MMU表對SRAM 130或DRAM 30進行DMA操作。為了便於理解,算子引擎120中之任一算子引擎可進行對應於該神經網絡模型的多層節點中之一層節點中之至少一節點的至少一計算操作,但本發明不限於此。
基於第1圖所示架構,積體電路100可動態地選擇該多個預定MMU表的其中之一作為該預先載入的MMU表,以更新該預先載入的MMU表。該預先載入的MMU表可記錄著適合目前計算操作的映射關係,諸如關於該目前計算操作之某些虛擬位址和某些物理位址之間的映射關係,而且DMA引擎110可根據該預先載入的MMU表中的至少一映射關係查找(look up)至少一物理位址以存取數據。由於記憶體資源可被妥善地管理,故本發明的積體電路100及其配置方法能避免過大的記憶體需求,且避免不必要的額外成本。
依據某些實施例,該多個預定MMU表諸如MMU表TABLE(1)、TABLE(2)等以及該預先載入的MMU表諸如MMU表TABLE(0)可以藉由分頁記憶體管理單元(Paged Memory Management Unit,簡稱PMMU)等方式來實施,尤其,可實施成PMMU表,並且其內所記錄的映射關係可用頁面(page)為單位來管理。舉例來說,在該神經網絡模型中的層與層之間的流通的數據流可被描述為張量(Tensor),其可視為實際佔用記憶體(例如SRAM 130和DRAM 30)的數據。該配置方法可將積體電路100配置成適合該神經網絡模型的特性來運作,尤其,在該配置階段中建立該多個預定MMU表諸如多個預定PMMU表,以容許積體電路100在該使用階段中動態地選擇該多個預定MMU表(例如該多個預定PMMU表)的其中之一作為該預先載入的MMU表(例如預先載入的PMMU表),以更新該預先載入的MMU表。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
第2圖依據本發明一實施例繪示第1圖所示之積體電路100的配置方法之一記憶體區域重用控制方案。為了便於理解,積體電路100可邏輯地組合SRAM 130的至少一部分(例如一部分或全部)以及DRAM 30的至少一部分(例如一部分或全部)以作為一記憶體200,且可存取記憶體200的多個記憶體區域中的任一記憶體區域,諸如記憶體區域210,但本發明不限於此。
如第2圖上半部所示,當算子引擎210中之一第一算子引擎(例如:算子#1引擎ENG(1))針對一組數據(諸如一列數據)進行一第一計算操作時,DMA引擎110可根據對應該組數據的一第一虛擬位址查詢該預先載入的MMU表以得到記憶體200(例如該RAM諸如SRAM 130或一外部的RAM諸如DRAM 30)中的某一記憶體區域的一第一物理位址,諸如記憶體區域210的物理位址,且據以將該組數據從記憶體區域210讀取出來,以容許該第一算子引擎依據該組數據進行該第一計算操作以產生一第一計算結果,作為該第一算子引擎的輸出結果。如第2圖下半部所示,在這一組數據諸如這一列數據不再被使用的情況下,DMA引擎110可根據該預先載入的MMU表諸如MMU表TABLE(0)判定記憶體區域210,且將該第一計算結果寫記憶體區域210。舉例來說,積體電路100(例如該CPU及/或DMA引擎110)可判定是否後面不再重複使用這一列數據,尤其,若後面不再重複使用這一列數據,則可以將該輸出結果諸如該第一計算結果直接寫入這一列數據所在的記憶體區域210,但本發明不限於此。
在一實施例中,DMA引擎110可根據對應該第一計算結果之一第二虛擬位址查詢該預先載入的MMU表以得到一第二物理位址,並據以將第一計算結果儲存至第二物理位址的記憶體區域。在第一計算操作之後接著由算子#2引擎ENG(2)進行第二計算操作。例如,第二預定MMU表係被載入至SRAM 130中的該預定位置,DMA引擎110依據對應一第三虛擬位址查詢第二預定MMU表以得到第二物理位址,DMA引擎110並依據第二物理位址自對應記憶體區域讀取該第一計算結果以供算子#2引擎ENG(2)進行第二計算操作。此例中,雖然第二虛擬位址係不同於第三虛擬位址,但其分別透過第一預定MMU表及第二預定MMU表映射到相同的物理位址。第一預定MMU表中虛擬位址與物理位址的映射關係可讓算子#1引擎ENG(1)於進行第一計算操作時有效地利用SRAM 130及DRAM 30,而第二預定MMU表中虛擬位址與物理位址的映射關係可讓算子#2引擎ENG(2)於進行第二計算操作時有效地利用SRAM 130及DRAM 30。
依據某些實施例,於積體電路100執行該神經網絡模型的相關計算之過程中,中間數據諸如張量之運算和傳遞都需要記憶體作為載體,而記憶體需求的大小可隨著該神經網絡模型的輸入節點的數量以及該神經網絡模型的深度而變化。另外,為了優化在該使用階段中之記憶體資源的使用,該生產工具(例如:執行著該第一生產工具程式碼之該主機裝置、或執行著該第二生產工具程式碼之該CPU)可依據該配置方法於該配置階段中進行下列操作:
(1) 對該神經網絡模型的計算所需要之所有張量記憶體(例如所有張量所需要的記憶體空間)進行對應於多個預定單位頁面之劃分;
(2) 分別對該多個預定單位頁面進行數據依賴分析以建立多個數據依賴關係(例如某一算子所輸出的數據為另一算子所輸入的數據),且根據該多個數據依賴關係對該多個預定單位頁面進行多個虛擬暫存器的分配(allocation);
(3) 分別對該多個虛擬暫存器進行生命週期分析,其中該生命週期分析之分析結果指出該多個虛擬暫存器之各自的生命週期;
(4) 依據上述分析結果,進行多個物理暫存器的分配;以及
(5) 基於該多個物理暫存器的分配,建立該多個預定MMU表以記錄虛擬位址和物理位址之間的映射關係,以容許積體電路100的硬體(例如DMA引擎110)於該使用階段中根據該預先載入的MMU表中的該至少一映射關係查找該至少一物理位址以存取數據;
但本發明不限於此。為了便於理解,該多個虛擬暫存器可分別代表該神經網絡模型中的所有數據流的傳輸所需的暫存空間,亦可視為對應於該網狀結構中的所有線段之總暫存空間。於進行該生命週期分析的期間,該生產工具可依據該神經網絡模型的各層節點的順序(例如對應的算子之執行順序)判定需要記憶體資源之任一張量的生命週期,以供控制該任一張量在存活的期間佔有所需的記憶體空間。當該任一張量從存活狀態變爲非存活狀態時就及時釋放這個記憶體空間,以供一後續的張量(例如從非存活狀態變爲存活狀態之張量)繼續使用。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
第3圖依據本發明一實施例繪示該配置方法之一記憶體映射控制方案。為了優化在該使用階段中之記憶體資源的使用,該後續的張量所需要的記憶體空間之大小可以和先前釋放的記憶體空間之大小彼此匹配,不論該先前釋放的記憶體空間是否為離散的。該記憶體映射控制方案可將多個離散的記憶體區域整合成該後續的張量所需要的記憶體空間,以容許DMA引擎110依據連續的位址來存取,尤其,從一起始位址開始,存取一預定大小的記憶體空間。舉例來說,DMA引擎110可依據該預先載入的MMU表諸如MMU表TABLE(0),將連續的虛擬位址的至少一部分(例如V_Address(0)~V_Address(5))映射到不連續的或局部不連續的物理位址(例如{P_Address(0), P_Address(1), P_Address(3), P_Address(4), P_Address(8), P_Address(9)}),以將已經被釋放的記憶體區域(而非已經被使用的記憶體區域)整合成一或多個後續的張量所需要的記憶體空間。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
依據某些實施例,該多個預定單位頁面具有大於1位元之一共同的頁面大小,且該共同的頁面大小係以一預定位元數來定義。典型地,張量記憶體的大小通常很大。假設以位元為單位來配置實際的記憶體(例如SRAM 130和DRAM 30)作為張量記憶體,這可能造成該多個預定MMU表的每一預定MMU表中之映射關係的數量非常大而難以實施。因此,該預定位元數應大於1。舉例來說,積體電路100中之硬體(例如DMA引擎110)存取數據的基本單位可以是256位元。基於某些因素諸如該基本單位、該神經網絡模型中之數據流(例如張量的分布)的形狀、粒度(例如該預定位元數)的大小、軟體調度的效率等以及一部分因素之間的關係(例如:當粒度越小,暫存器越多且調度越慢;當粒度越大,SRAM 130的複用度越低),該預定位元數可以等於4k,而k = 2
10= 1024,且該多個預定單位頁面可代表多個4k位元頁面,其中該多個預定MMU表中之映射關係的原子單位的大小等於該預定位元數諸如4k,但本發明不限於此。於某些例子中,該預定位元數可以等於k或k的倍數,諸如1k、2k…等中之任一者。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
第4圖依據本發明一實施例繪示該配置方法之一數據依賴分析控制方案,其中張量記憶體400及其內的多個頁面可分別作為上述張量記憶體及該多個預定單位頁面的例子。該多個數據依賴關係可包含所有數據的暫存器依賴關係,而建立這些數據依賴關係可確保連續兩級算子中的第一級算子(例如算子#1)所輸出的數據和該連續兩級算子中的第二級算子(例如算子#2)所輸入的數據是在同一個暫存器中。在該神經網絡模型的該網狀結構中,該第一級算子的輸出數據就是該第二級算子的輸入數據。基於這個特性和該多個預定單位頁面的頁面劃分,該生產工具可用該共同的頁面大小爲單位來進行數據追蹤來産生以頁面爲單位的依賴關係,以透過一虛擬暫存器(例如一預定單位頁面諸如一4k位元頁面)暫時地將該輸出數據和該輸入數據彼此關聯,所以這樣的關係可稱為暫存器依賴關係。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第5圖依據本發明一實施例繪示該配置方法之一生命週期分析控制方案。用來實現該多個計算操作的程式碼可包含多個局部程式碼510、520和530,其可分別對應於列索引(line index){000, 001, 002}、{003, 004, 005}和{006, 007, 008},指令「write x」和「read x」分別代表寫入變數x和讀取變數x,而符號「...」代表省略的指令。以頁面PAGE(x)作爲該虛擬暫存器的例子,其生命週期可表示如下:
[001, 007);
其中在代表時間t的時間軸上,列索引001~00N諸如000、001等可用來標記時間點,而產生頁面PAGE(x)時間點和最後使用頁面PAGE(x)的時間點之間的區間[001, 007)可視為頁面PAGE(x)的生命週期。
依據某些實施例,該生命週期的表示方式可予以變化。例如,頁面PAGE(x)的生命週期可表示為區間[001, 007]。為了簡明起見,於這些實施例中類似的內容在此不重複贅述。
第6圖依據本發明一實施例繪示該配置方法之一物理暫存器分配控制方案,而第7圖繪示第6圖所示之物理暫存器分配控制方案的實施細節,其中SRAM 600可作為SRAM 130內的數據區域的例子。該生產工具可對實際的記憶體(例如SRAM 130和DRAM 30)也按照該預定位元數諸如4k來劃分,尤其,將其內的數據區域劃分為具有該共同的頁面大小之多個頁面(例如SRAM 600內的這些頁面)以供用來作為該多個物理暫存器,且根據該多個虛擬暫存器之各自的生命週期來分配該多個物理暫存器。該多個虛擬暫存器可包含分別對應於變數x、y和z之頁面PAGE(x)、PAGE(y)和PAGE(z),其各自的生命週期沒有重疊。此情況下,該生產工具可分配該多個物理暫存器中之同一個物理暫存器(於第7圖中標示「暫存器」以求簡明)作為頁面PAGE(x)、PAGE(y)和PAGE(z)分別於不同時間區間的實際記憶體空間。例如:一第一、第二、第三虛擬暫存器諸如頁面PAGE(x)、PAGE(y)和PAGE(z)分別在其各自的生命週期的期間佔用該物理暫存器以使該物理暫存器處於使用狀態,而當其各自的生命週期結束時,該物理暫存器被釋放以處於未使用狀態;其中該物理暫存器於被釋放時即處於未使用狀態以供下一個虛擬暫存器使用。該生產工具可將該多個物理暫存器的分配結果(例如虛擬位址和物理位址之間的映射關係)記錄在該多個預定MMU表,例如,依據一或多個記憶體管理因素諸如該神經網絡模型的計算順序、計算方式等,針對不同批次計算來優化該多個物理暫存器的分配以建立該多個預定MMU表。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第8圖依據本發明一實施例繪示該配置方法之一動態MMU控制方案。該生產工具可將所分配出來的該多個物理暫存器所關聯的該多個虛擬暫存器的虛擬位址以及這些物理暫存器的物理位址記錄在該多個預定MMU表。該動態MMU控制方案提供可動態地改變之格式以供建立該多個預定MMU表。圖例中的類型PA_TOTAL_LENGTH、TAG, PA_LENGTH、VIRTUAL_ADDR、PHYSICAL_ADDR和GARBAGE可分別代表一系列物理位址在此格式中之總長度、此格式的識別標籤、該系列物理位址中的一組物理位址(例如一或多個物理位址)在此格式中之長度、關聯於這組物理位址之一虛擬位址(例如起始位址)、這組物理位址以及垃圾資訊(例如無效資訊)。另外,欄位TL、Tag、LEN、VA以及PA0等可分別載有該總長度、該識別標籤、該組物理位址之長度、該虛擬位址以及這組物理位址。舉例來說,此格式右上角第1個欄位所示之TL=32表示該總長度等於32,第2個欄位Tag中的該識別標籤指出目前記錄的表內容符合此格式,第3個欄位所示之LEN=4表示從第4個欄位VA中的虛擬位址起的4個連續的虛擬位址分別被映射至第5~8個欄位PA0~PA3中的第一組物理位址。緊接著欄位PA0~PA3的第9個欄位所示之LEN=26表示從第10個欄位VA中的虛擬位址起的26個連續的虛擬位址分別被映射至第11~36個欄位PA0~PA25中的第二組物理位址。緊接著欄位PA0~PA25的第37個欄位所示之LEN=1表示從第38個欄位VA中的虛擬位址起的1個的虛擬位址被映射至第39個欄位PA0中的第三組物理位址。緊接著第39個欄位PA0的第40個欄位所示之LEN=1表示從第41個欄位VA中的虛擬位址起的1個的虛擬位址被映射至第42個欄位PA0中的第四組物理位址。以上這四組物理位址之各自的物理位址的數量4、26、1和1的總和等於32,這和第1個欄位所示之TL=32(該總長度等於32)吻合。後續6個欄位所示之TL=0表示總長度等於0,且因此代表垃圾資訊。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第9圖依據本發明一實施例繪示該配置方法之一動態記憶體存取控制方案。由於虛擬位址是連續的,故積體電路100中之硬體(例如DMA引擎110)可依據虛擬位址來存取數據(例如,從該起始位址開始,存取該預定大小的記憶體空間)來提升存取效能,尤其,在存取過程中查詢該預先載入的MMU表諸如MMU表TABLE(0)以將虛擬位址轉換為相關聯的物理位址作為存取操作的目標位置來存取數據。
當算子引擎210中之一第一算子引擎(例如:算子#1引擎ENG(1);標示為「算子#1」以求簡明)進行一第一計算操作以產生一第一計算結果時,DMA引擎110可根據該預先載入的MMU表諸如MMU表TABLE(0)判定位於該RAM諸如SRAM 130或該外部的RAM諸如DRAM 30中的一記憶體區域(例如張量記憶體400中的某一頁面),且將該第一計算結果儲存在該記憶體區域(標示為「DMA儲存」以便於理解)。另外,當算子引擎210中之一第二算子引擎(例如:算子#2引擎ENG(2);標示為「算子#2」以求簡明)進行一第二計算操作時,DMA引擎110可根據該預先載入的MMU表諸如MMU表TABLE(0)判定該記憶體區域(例如張量記憶體400中的同一頁面),且將該第一計算結果從該記憶體區域讀取出來以供載入至該第二算子引擎中的緩衝器(標示為「DMA載入」以便於理解),以容許該第二算子引擎依據該第一計算結果進行該第二計算操作。
針對將該第一計算結果儲存在該記憶體區域的情況(例如「DMA儲存」)以及將該第一計算結果從該記憶體區域讀取出來以供載入至該第二算子引擎中的緩衝器的情況(例如「DMA載入」)中之任一者,DMA引擎110可依據該動態記憶體存取控制方案之一工作流程900來操作,尤其,可使用變數位址(variable address)作為用以進行查找操作之一虛擬位址、且依據這個虛擬位址在該預先載入的MMU表(標示為「MMU表」以求簡明)中查找對應於這個虛擬位址之一物理位址,並且進行物理位址位置判斷以判定該物理位址屬於SRAM位址或DRAM位址。例如,當該物理位址屬於SRAM位址時,DMA引擎110可依據該物理位址於SRAM 130中存取(例如讀取或寫入)該第一計算結果。又例如,當該物理位址屬於DRAM位址時,DMA引擎110可依據該物理位址於DRAM 30中存取(例如讀取或寫入)該第一計算結果。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
第10圖依據本發明一實施例繪示該配置方法之一工作流程。步驟1010、1012、1014、1016、1018和1020的操作及其相關細節可如以上實施例所述,其中該多個預定單位頁面可描述為多個4k位元頁面以便於理解,但本發明不限於此。例如,在步驟1018中,該生產工具可被安排成以4k位元頁面為單位,建立該多個預定MMU表以記錄虛擬位址和物理位址之間的映射關係。另外,在步驟1020中,積體電路100的硬體(例如DMA引擎110)可於該使用階段中根據該預先載入的MMU表中的該至少一映射關係查找該至少一物理位址以存取數據。為了簡明起見,於本實施例中類似的內容在此不重複贅述。
本發明的積體電路100及其配置方法能用有限的記憶體資源來實現該神經網絡模型之非常複雜的計算,尤其,可將記憶體單位從張量轉換為4k位元頁面,且根據生命週期來追溯各個頁面之數據的使用時期以分配實際的物理位址,而不需要考慮位址連續性問題,例如透過MMU表中的映射關係將離散的物理位址和連續的虛擬位址彼此關聯,以大幅地提升記憶體空間的複用率且避免浪費記憶體空間,藉此最小化所分配的記憶體空間。相較於相關技術,本發明的積體電路100及其配置方法能在沒有副作用或較不可能帶來副作用之狀況下實現精巧、快速且可靠的電子產品。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:積體電路(IC)
101:非揮發性記憶體(NVM)
110:直接記憶體存取(DMA)引擎
120:算子引擎
ENG(1):算子#1引擎
ENG(2):算子#2引擎
130,600:靜態隨機存取記憶體(SRAM)
TABLE(0)~TABLE(2):記憶體管理單元(MMU)表
30:動態隨機存取記憶體(DRAM)
200:記憶體
210:記憶體區域
V_Address(0)~V_Address(7):虛擬位址
P_Address(0)~P_Address(10):物理位址
400:張量記憶體
510,520,530:局部程式碼
x,y,z:變數
t:時間
PAGE(x),PAGE(y),PAGE(z):頁面
PA_TOTAL_LENGTH,TAG,PA_LENGTH,VIRTUAL_ADDR,PHYSICAL_ADDR,GARBAGE:類型
TL,Tag,LEN,VA,PA0~PA25:欄位
900:工作流程
1010,1012,1014,1016,1018,1020:步驟
第1圖為依據本發明一實施例之一種積體電路的示意圖。
第2圖依據本發明一實施例繪示第1圖所示之積體電路的配置方法之一記憶體區域重用控制方案。
第3圖依據本發明一實施例繪示該配置方法之一記憶體映射控制方案。
第4圖依據本發明一實施例繪示該配置方法之一數據依賴分析控制方案。
第5圖依據本發明一實施例繪示該配置方法之一生命週期分析控制方案。
第6圖依據本發明一實施例繪示該配置方法之一物理暫存器分配(allocation)控制方案。
第7圖繪示第6圖所示之物理暫存器分配控制方案的實施細節。
第8圖依據本發明一實施例繪示該配置方法之一動態記憶體管理單元控制方案。
第9圖依據本發明一實施例繪示該配置方法之一動態記憶體存取控制方案。
第10圖依據本發明一實施例繪示該配置方法之一工作流程。
100:積體電路(IC)
101:非揮發性記憶體(NVM)
110:直接記憶體存取(DMA)引擎
120:算子引擎
ENG(1):算子#1引擎
ENG(2):算子#2引擎
130:靜態隨機存取記憶體(SRAM)
TABLE(0)~TABLE(2):記憶體管理單元(MMU)表
30:動態隨機存取記憶體(DRAM)
Claims (12)
- 一種積體電路,應用於一神經網路計算,包括: 一第一算子引擎,用來進行一第一計算操作; 一第二算子引擎,用以進行一第二計算操作; 一隨機存取記憶體;以及 一直接記憶體存取引擎,用以於該第一算子引擎進行該第一計算操作時,依據一第一記憶體管理單元表對該隨機存取記憶體進行存取操作,並於該第二算子引擎進行該第二計算操作時,依據一第二記憶體管理單元表對該隨機存取記憶體進行存取操作。
- 如申請專利範圍第1項所述之積體電路,其中該第一記憶體管理單元表係於進行該第一計算操作前被載入該直接記憶體存取引擎對應的一記憶體區域,而該第二記憶體管理單元表係於進行該第二計算操作前被載入該直接記憶體存取引擎對應的該記憶體區域。
- 如申請專利範圍第1項所述之積體電路,其中該直接記憶體存取引擎依據該第一記憶體管理單元表將該第一計算操作之一計算結果儲存至該隨機存取記憶體或一外部的隨機存取記憶體中的一記憶體區域;以及該直接記憶體存取引擎依據該第二記憶體管理單元表自該記憶體區域讀取該計算結果以供該第二算子引擎進行該第二計算操作。
- 如申請專利範圍第3項所述之積體電路,其中該計算結果對應一第一虛擬位址;該直接記憶體存取引擎依據該第一虛擬位址查詢該第一記憶體管理單元表,以得到該記憶體區域的一物理位址,並據以將該計算結果儲存至該記憶體區域;以及該直接記憶體存取引擎依據一第二虛擬位址查詢該第二記憶體管理單元表以得到該記憶體區域的該物理位址,並據以讀取該計算結果以供該第二算子引擎進行該第二計算操作,其中,該第一虛擬位址不同於該第二虛擬位址。
- 如申請專利範圍第1項所述之積體電路,其中於進行該第一計算操作時,該直接記憶體存取引擎依據該第一記憶體管理單元表於該隨機存取記憶體或一外部的隨機存取記憶體中的一記憶體區域中讀取一組數據以供該第一算子引擎進行該第一計算操作,該直接記憶體存取引擎並依據該第一記憶體管理單元表將該第一計算操作之一計算結果儲存至該記憶體區域。
- 一種積體電路的配置方法,包含: 對一神經網絡模型的計算所需要之所有張量記憶體進行對應於多個預定單位頁面之劃分; 分別對該多個預定單位頁面進行數據依賴分析以建立多個數據依賴關係,且根據該多個數據依賴關係對該多個預定單位頁面進行多個虛擬暫存器的分配; 分別對該多個虛擬暫存器進行生命週期分析,其中該生命週期分析之分析結果指出該多個虛擬暫存器之各自的生命週期; 依據所述分析結果,進行多個物理暫存器的分配;以及 建立多個預定記憶體管理單元表以記錄虛擬位址和物理位址之間的映射關係,以容許該積體電路於一使用階段中,根據一預先載入的記憶體管理單元表中的至少一映射關係查找至少一物理位址以存取數據,其中該預先載入的記憶體管理單元表係選擇自該多個預定記憶體管理單元表。
- 如申請專利範圍第6項所述之配置方法,其中該積體電路從該多個預定記憶體管理單元表選擇對應於多個計算操作中之一第一計算操作之一第一預定記憶體管理單元表以作為該預先載入的記憶體管理單元表,以容許多個算子引擎中之一第一算子引擎完成該第一計算操作。
- 如申請專利範圍第7項所述之配置方法,其中該積體電路從該多個預定記憶體管理單元表選擇對應於該多個計算操作中之一第二計算操作之一第二預定記憶體管理單元表以作為該預先載入的記憶體管理單元表,以容許該多個算子引擎中之一第二算子引擎完成該第二計算操作。
- 如申請專利範圍第6項所述之配置方法,其中該積體電路動態地選擇該多個預定記憶體管理單元表的其中之一作為該預先載入的記憶體管理單元表,以更新該預先載入的記憶體管理單元表。
- 如申請專利範圍第6項所述之配置方法,其中該積體電路將該多個預定記憶體管理單元表的其中之一載入至一隨機存取記憶體中之一預定位置以作為該預先載入的記憶體管理單元表。
- 如申請專利範圍第6項所述之配置方法,其中該多個預定單位頁面具有一共同的頁面大小,且該共同的頁面大小係以一預定位元數來定義。
- 如申請專利範圍第11項所述之配置方法,其中該預定位元數等於4k,其中k = 1024;以及該多個預定單位頁面代表多個4k位元頁面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110140970A TWI802070B (zh) | 2021-11-03 | 2021-11-03 | 積體電路及其配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110140970A TWI802070B (zh) | 2021-11-03 | 2021-11-03 | 積體電路及其配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI802070B true TWI802070B (zh) | 2023-05-11 |
TW202319965A TW202319965A (zh) | 2023-05-16 |
Family
ID=87379026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110140970A TWI802070B (zh) | 2021-11-03 | 2021-11-03 | 積體電路及其配置方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI802070B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201937416A (zh) * | 2017-05-19 | 2019-09-16 | 美商谷歌有限責任公司 | 排程神經網路處理 |
US10726583B2 (en) * | 2016-12-30 | 2020-07-28 | Intel Corporation | System and method of encoding and decoding feature maps and weights for a convolutional neural network |
WO2020247042A1 (en) * | 2019-06-07 | 2020-12-10 | Intel Corporation | Network interface for data transport in heterogeneous computing environments |
-
2021
- 2021-11-03 TW TW110140970A patent/TWI802070B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10726583B2 (en) * | 2016-12-30 | 2020-07-28 | Intel Corporation | System and method of encoding and decoding feature maps and weights for a convolutional neural network |
TW201937416A (zh) * | 2017-05-19 | 2019-09-16 | 美商谷歌有限責任公司 | 排程神經網路處理 |
WO2020247042A1 (en) * | 2019-06-07 | 2020-12-10 | Intel Corporation | Network interface for data transport in heterogeneous computing environments |
Also Published As
Publication number | Publication date |
---|---|
TW202319965A (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804350B (zh) | 一种内存访问方法及计算机系统 | |
TWI417722B (zh) | 階層式不可改變的內容可定址的記憶體處理器 | |
US7447870B2 (en) | Device for identifying data characteristics for flash memory | |
US7930515B2 (en) | Virtual memory management | |
CN107621959B (zh) | 电子装置及其软件训练方法、计算系统 | |
KR960016397B1 (ko) | 화일기억장치 및 그것을 사용한 정보처리장치 | |
JP5752989B2 (ja) | プロセッサ・メインメモリのための持続性メモリ | |
CN102483719B (zh) | 基于块的非透明高速缓存 | |
US9697111B2 (en) | Method of managing dynamic memory reallocation and device performing the method | |
TW202242657A (zh) | 管理記憶裝置之方法與相關的記憶裝置 | |
CN102662869B (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
US8688948B2 (en) | Flexible memory controller for autonomous mapping of memory | |
WO2006009322A2 (en) | Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory | |
US20050281105A1 (en) | Memory card, semiconductor device, and method of controlling semiconductor memory | |
US20130297877A1 (en) | Managing buffer memory | |
US20190146926A1 (en) | Storage device and operating method of storage device | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
US5317706A (en) | Memory expansion method and apparatus in a virtual memory system | |
RU2003136262A (ru) | Использование контекстного идентификатора в кэш-памяти | |
CN114385089A (zh) | 一种基于交叉编址的动态bank存储方法、装置及电子设备 | |
JP2020046761A (ja) | 管理装置、情報処理装置およびメモリ制御方法 | |
CN111475099A (zh) | 一种数据存储方法、装置及其设备 | |
TWI802070B (zh) | 積體電路及其配置方法 | |
US20070266199A1 (en) | Virtual Address Cache and Method for Sharing Data Stored in a Virtual Address Cache | |
US11023374B2 (en) | Apparatus and method and computer program product for controlling data access |