TWI798972B - 智慧處理器裝置與降低記憶體頻寬的方法 - Google Patents
智慧處理器裝置與降低記憶體頻寬的方法 Download PDFInfo
- Publication number
- TWI798972B TWI798972B TW110144905A TW110144905A TWI798972B TW I798972 B TWI798972 B TW I798972B TW 110144905 A TW110144905 A TW 110144905A TW 110144905 A TW110144905 A TW 110144905A TW I798972 B TWI798972 B TW I798972B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- memory
- feature map
- map data
- output feature
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 24
- 238000012546 transfer Methods 0.000 claims abstract description 15
- 238000013527 convolutional neural network Methods 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 9
- 238000003062 neural network model Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
- Communication Control (AREA)
Abstract
智慧處理器裝置包含第一記憶體、第二記憶體、記憶體管理電路與卷積運算電路。記憶體管理電路自外部記憶體轉移輸入資料至第一記憶體。卷積運算電路自第一記憶體讀取輸入資料,並執行多級運算以產生多個特徵圖資料。在產生第一特徵圖資料中的第一區塊資料後,記憶體管理電路儲存第一區塊資料至第二記憶體。當所儲存的第一區塊資料的資料量滿足預設數值時,記憶體管理電路自第二記憶體轉移第一區塊資料至第一記憶體,且卷積運算電路自第一記憶體讀取第一區塊資料,並據以執行第二級運算以產生第二特徵圖資料的第二區塊資料。
Description
本案是關於智慧處理器裝置,尤其是關於利用額外的快取記憶體來執行卷積運算的智慧處理器裝置與降低記憶體頻寬的方法。
現有的神經網路模型通常包含依序執行的多層卷積運算。如圖1所示,在現有技術中,動態隨機存取記憶體中的輸入特徵圖資料會被拆分為多個區塊(tile)資料(以虛線繪製)。在第1層卷積運算中,處理器會依序獲取並處理這些區塊資料以產生新的區塊資料,並將新的區塊資料依序寫回至動態隨機存取記憶體。接著,在執行第2層卷積運算時,處理器將在第1層卷積運算所獲得的多個區塊資料自動態隨機存取記憶體依序讀出並進行處理,以產生新的區塊資料,並將新的區塊資料依序寫回至動態隨機存取記憶體,依此類推,直到執行完所有層的卷積運算。換言之,在現有技術中,每一層卷積運算所輸出的資料會被當作下一層的輸入資料,故需對動態隨機存取記憶體反覆進行讀取與寫入。如此一來,在現有技術中,動態隨機存取記憶體需具備有較大的記憶體頻寬,才足以執行多層卷積運算。
於一些實施態樣中,智慧處理器裝置包含一第一記憶體、一記憶體管理電路、一第二記憶體以及一卷積運算電路。記憶體管理電路自一動態隨機存取記憶體讀取一輸入資料,並儲存該輸入資料至該第一記憶體。卷積運算電路自該第一記憶體讀取該輸入資料,並對該輸入資料執行對應於一卷積運算的複數級運算以依序產生複數個輸出特徵圖資料。在該卷積運算電路執行該些級運算中的一第一級運算以產生該些輸出特徵圖資料中的一第一輸出特徵圖資料中的至少一第一區塊資料後,該記憶體管理電路儲存該至少一第一區塊資料至該第二記憶體。當該第二記憶體中儲存的該至少一第一區塊資料的資料量滿足一預設數值時,該記憶體管理電路自該第二記憶體轉移該至少一第一區塊資料至該第一記憶體,且該卷積運算電路更自該第一記憶體讀取該至少一第一區塊資料,並對該至少一第一區塊資料執行該些級運算中的一第二級運算以產生該些輸出特徵圖資料中的一第二輸出特徵圖資料的至少一第二區塊資料,並經由該記憶體管理電路儲存該至少一第二區塊資料至該第二記憶體。
於一些實施態樣中,降低記憶體頻寬的方法可應用於執行一卷積神經網路模型的一智慧型處理器裝置,其中該智慧型處理器裝置包含一第一記憶體、一記憶體管理電路、一第二記憶體以及一卷積運算電路,且該降低記憶體頻寬的方法包含下列操作:根據該第一記憶體的容量決定該卷積運算電路執行一卷積運算時儲存於該第一記憶體之一區塊資料的資料尺寸,其中該記憶體管理電路自一動態隨機存取記憶體轉移該區塊資料至該第一記憶體,且該卷積運算電路對該區塊資料依序執行對應於該卷積運算的複數級運算以依序產生
複數個輸出特徵圖資料;根據該第二記憶體的容量以及該些輸出特徵圖資料中的最後一個輸出特徵圖資料之一第一部分資料的資料量決定該些級運算的級數以及用來該些輸出特徵圖資料中的剩餘資料中每一者之至少一第二部分資料的所需資料量,其中在執行該些級運算的過程中,該記憶體管理電路將該第一部分資料與該至少一第二部分資料儲存於該第二記憶體;以及依據該區塊資料的資料尺寸、該些級運算的級數、該第一部分資料的資料量以及該至少一第二部分資料的資料量產生一預定編譯文件,其中該記憶體管理電路基於該預定編譯文件存取該動態隨機存取記憶體、該第一記憶體以及該第二記憶體。
有關本案的特徵、實作與功效,茲配合圖式作較佳實施例詳細說明如下。
200:人工智慧系統
210:處理器
220,232,233:記憶體
230:智慧處理器裝置
231:記憶體管理電路
234:卷積運算電路
310:輸入特徵圖資料
310[1],310[2],310[3],310[4]:區塊資料
315:卷積核
320,330-1,330-2,330-3,330-4,330-n:輸出特徵圖資料
320[1],320[2],320[3],320[4]:區塊資料
400:降低記憶體頻寬的方法
CMD:指令
DI:輸入資料
DO:輸出資料
S3-11,S3-12,S3-13,S3-14,S3-15,S3-16:步驟
S3-21,S3-22,S3-23,S3-24,S3-25,S3-26:步驟
S3-n1,S3-n2,S3-n3,S3-n4,S3-n5,S3-n6:步驟
S410,S420,S430:操作
S501,S502,S503,S504,S505:步驟
f_h,h1,h2,tile_h1,tile_h2:高度
f_w,w1,w2,tile_w1,tile_w2:寬度
〔圖1〕為先前技術執行卷積運算的概念示意圖;〔圖2〕為根據本案一些實施例繪製一種人工智慧系統的示意圖;〔圖3A〕為根據本案一些實施例繪製卷積運算的基本概念示意圖;〔圖3B〕為根據本案一些實施例繪製圖2中的智慧處理器裝置執行卷積運算的概念示意圖;〔圖3C〕為根據本案一些實施例繪製圖2中的智慧處理器裝置的資料傳遞流程的示意圖;〔圖4〕為根據本案一些實施例繪製一種記憶體頻寬降低方法的流程圖;
〔圖5A〕為根據本案一些實施例繪製圖4中的一操作的概念示意圖;以及〔圖5B〕為根據本案一些實施例繪製圖4中的一操作的詳細步驟流程圖。
本文所使用的所有詞彙具有其通常的意涵。上述之詞彙在普遍常用之字典中之定義,在本案的內容中包含任一於此討論的詞彙之使用例子僅為示例,不應限制到本案之範圍與意涵。同樣地,本案亦不僅以於此說明書所示出的各種實施例為限。
關於本文中所使用之『耦接』或『連接』,均可指二或多個元件相互直接作實體或電性接觸,或是相互間接作實體或電性接觸,亦可指二或多個元件相互操作或動作。如本文所用,用語『電路』可為由至少一個電晶體與/或至少一個主被動元件按一定方式連接以處理訊號的裝置。
於一些實施例中,智慧處理器裝置(例如為圖2的智慧處理器裝置230)可將卷積神經網路模型中的多層卷積運算拆分為多級運算,並將多級運算中所產生的計算結果暫存於快取記憶體(例如為圖2的記憶體233)中,並在完成所有級數的運算後將最終產生的資料寫回至動態隨機存取記憶體(例如為圖2的記憶體220)。如此,可降低動態隨機存取記憶體的頻寬需求。
圖2為根據本案一些實施例繪製一種人工智慧系統200的示意圖。人工智慧系統200包含處理器210、記憶體220以及智慧處理器(Intelligence Processor,或為Intelligence Processing Unit)裝置230。人工智慧系統200可用以
執行神經網路模型(例如為,但不限於,卷積神經網路模型)以處理各種類型的資料(例如為,但不限於,圖像資料)。
記憶體220可儲存待處理的輸入資料DI以及經智慧處理器裝置230處理後的輸出資料DO。於一些實施例中,記憶體220可為動態隨機存取記憶體。智慧處理器裝置230可基於處理器210的控制而自記憶體220讀取輸入資料DI,並對輸入資料DI執行卷積運算,以產生輸出資料DO。
詳細而言,智慧處理器裝置230包含記憶體管理電路231、記憶體232、記憶體233以及卷積運算電路234。記憶體管理電路231耦接於記憶體232、記憶體233以及記憶體220。於一些實施例中,記憶體管理電路231可由(但不限於)記憶體管理單元(memory management unit)以及直接記憶體存取(direct memory access)控制器等電路實施。記憶體管理電路231可基於處理器210與/或卷積運算電路234的控制自記憶體220讀取輸入資料DI至記憶體232。卷積運算電路234可讀取記憶體232以獲得輸入資料DI,並對該輸入資料DI執行卷積運算以產生輸出資料DO。在卷積運算電路234產生輸出資料DO後,記憶體管理電路231可傳送輸出資料DO至記憶體220以儲存輸出資料DO。
於一些實施例中,處理器210可基於一預定編譯文件(未示出)發送指令CMD,且智慧處理器裝置230可根據該指令CMD自記憶體220讀取輸入資料DI,並對輸入資料DI執行卷積運算以產生輸出資料DO。智慧處理器裝置230可根據指令CMD將卷積神經網路模型的多層卷積運算進一步拆分成多級運算。記憶體管理電路231可將在卷積運算電路234在每級運算所產生之輸出結果(例如為後述的輸出特徵圖資料)暫存於記憶體233,且卷積運算電路234可在
運算過程中經由記憶體管理電路231存取記憶體233以使用該些暫存資料來完成每一級的運算,並在完成運算後將最後一級的運算結果(相當於輸出資料DO)寫回至記憶體220。如此,可降低智慧處理器裝置230對記憶體220的存取次數,進而降低人工智慧系統200中所需要的記憶體頻寬。關於此處之操作將於後參照圖3A至圖3C說明。
於一些實施例中,記憶體232與記憶體233皆為靜態隨機存取記憶體,例如,記憶體232可為第二級(L2)快取記憶體,且記憶體233可為第三級(L3)快取記憶體。於一些實施例中,記憶體232為二維記憶體,且記憶體232的資料寬度相同於卷積運算電路234與/或記憶體管理電路231的資料寬度。例如,記憶體232可具有32個通道(slot),每個通道的資料寬度為256個位元且深度為512,但本案不以上述數值為限。記憶體232直接連接至卷積運算電路234,以便於卷積運算電路234直接存取。相對地,記憶體233為一維記憶體,其資料寬度不同於卷積運算電路234與/或記憶體管理電路231的資料寬度,且卷積運算電路234可經由記憶體管理電路231存取記憶體233,以暫存每級運算所產生之結果。
為說明智慧處理器裝置230的相關操作,以下將依序說明卷積運算的基本概念以及智慧處理器裝置230的多級運算與資料傳遞流程。
圖3A為根據本案一些實施例繪製卷積運算的基本概念示意圖。如圖3A所示,輸入特徵圖資料310之寬度與高度分別為w1與h1,且輸出特徵圖資料320之寬度與高度分別為w2與h2。於此例中,輸入特徵圖資料310包含四個區塊(tile)資料310[1]~310[4](以不同線條樣式繪製),且輸出特徵圖資料
320包含四個區塊資料320[1]~320[4](以不同網底繪製),其中該些區塊資料310[1]~310[4]中每一者的寬度與高度分別為tile_w1與tile_h1,且該些區塊資料320[1]~320[4]中每一者的寬度與高度分別為tile_w2與tile_h2。在執行卷積運算的過程中,記憶體管理電路231可轉移輸入特徵圖資料310中的一個區塊資料至記憶體232,且卷積運算電路234可自記憶體232讀取該區塊資料並利用卷積核(kernel)315對該區塊資料進行運算以產生輸出特徵圖資料320中的一對應區塊資料。例如,記憶體管理電路231可轉移區塊資料310[1]至記憶體232,且卷積運算電路234可自記憶體232讀取區塊資料310[1]並利用卷積核315對區塊資料310[1]進行運算以產生區塊資料320[1]。
在一些實施例中,卷積運算電路234可將多層的卷積運算再拆分為多級運算,且每一級運算的運作方式皆類似於圖3A所示的運算概念。在當級運算所產生的輸出特徵圖資料會作為下一級運算的輸入特徵圖資料,而下一級運算的輸出特徵圖資料又會作為下下一級運算的輸入特徵圖資料。然而,在實際運算中,對於同一個資料來說,前一級的輸出特徵圖資料中的區塊資料之資料尺寸通常不同於下一級的輸入特徵圖資料的區塊資料之資料尺寸。例如,如圖3A所示,輸入特徵圖資料310中的區塊資料(例如為區塊資料310[1])之資料尺寸(例如為寬度tile_w1與高度tile_h1)會大於輸出特徵圖資料320的區塊資料(例如為區塊資料320[1])之資料尺寸(例如為寬度tile_w2與高度tile_h2)。因此,前一級的輸出特徵圖資料中的區塊資料之資料量需足夠多,才可作為下一級運算中的輸入特徵圖資料的至少一區塊資料。藉由設置記憶體233,在完成每一級運算中的一次運算後,卷積運算電路234可經由記憶體管理電路231傳輸對
應於當級之輸出特徵圖資料中的一區塊資料至記憶體233。當記憶體233所儲存的區塊資料之資料量累積到足夠多時,卷積運算電路234可經由記憶體管理電路231存取記憶體233以獲取該些區塊資料,並將該些區塊資料作為下一級的輸入特徵圖資料的至少一區塊資料以執行下一級的卷積運算,以產生下一級的輸出特徵圖資料的至少一區塊資料。
圖3B為根據本案一些實施例繪製圖2中的智慧處理器裝置230執行卷積運算的概念示意圖。如圖1所示,在先前技術中,每一層卷積運算所產生的運算結果會先寫回至動態隨機存取記憶體,再從該動態隨機存取記憶體讀出進行下一行資料或是下一層卷積的計算。如此,動態隨機存取記憶體需具備足夠大的讀寫頻寬。相較於先前技術,在本案一些實施例中,卷積運算電路234可將多層卷積運算拆分成多級運算,每級運算僅完成一卷積層運算的部分,並將逐級產生的運算結果暫存於記憶體233(而非直接存回記憶體220),並在進行下一級運算時從記憶體233讀出前一級的運算結果來進行運算。依此類推,在完成所有級數的運算後,卷積運算電路234可產生輸出資料DO,並經由記憶體管理電路231將輸出資料儲存於記憶體220。如此,可降低記憶體220的使用頻寬。
在圖3B中,對應於各級運算的輸出特徵圖資料之區塊資料以虛線方塊繪製。卷積運算電路234對輸入資料DI中進行第1級運算,以產生對應於第1級的輸出特徵圖資料330-1。記憶體管理電路231可將輸出特徵圖資料330-1中的多個區塊資料依序暫存於記憶體233。當記憶體233所儲存的輸出特徵圖資料330-1之多個區塊資料的資料量滿足一預設數值(例如為,但不限於,累積到一行的區塊資料)時,卷積運算電路234經由記憶體管理電路231自記憶體233讀
出該些區塊資料,並將該些區塊資料(對應於輸出特徵圖資料330-1)作為第2級運算的輸入特徵圖資料的至少一區塊資料,並該些區塊資料執行第2級的運算以產生對應於第2級的輸出特徵圖資料330-2的區塊資料。其中,前述的預設數值為足以讓卷積運算電路234產生輸出特徵圖資料330-2的至少一區塊資料(例如為,但不限於,一行的區塊資料)之資料量。依此類推,卷積運算電路234可依序執行多級運算,並依序產生多個輸出特徵圖資料330-3、330-4、…、330-n,其中最後一級運算的輸出特徵圖資料330-n相當於輸入資料DI經過n層卷積層所對應的輸出資料DO。
圖3C為根據本案一些實施例繪製圖2中的智慧處理器裝置230的資料傳遞流程的示意圖。在此例中,圖3B所示的多層卷積運算可再拆分為n級運算。在第1級運算中,記憶體管理電路231可自記憶體220讀出輸入資料DI(其為第1級運算的輸入特徵圖資料)的至少一區塊資料(步驟S3-11),並儲存該至少一區塊資料至記憶體232中(步驟S3-12)。卷積運算電路234可自記憶體232獲取該至少一區塊資料,並對該至少一區塊資料執行卷積運算以產生輸出特徵圖資料330-1中的至少一區塊資料(步驟S3-13)。卷積運算電路234可將輸出特徵圖資料330-1中的至少一區塊資料儲存於記憶體232(步驟S3-14)。記憶體管理電路231可轉移記憶體232中所儲存的輸出特徵圖資料330-1中的至少一區塊資料到記憶體233(步驟S3-15與步驟S3-16)。重複執行步驟S3-11至步驟S3-16,直到記憶體233中所儲存的輸出特徵圖資料330-1中之至少一區塊資料的資料量滿足第一預設數值時,記憶體管理電路231可自記憶體233讀出該至少一區塊資料以進入第2級運算(步驟S3-21),並將輸出特徵圖資料330-1(其相當於
第2級運算的輸入特徵圖資料)中的該至少一區塊資料轉移至記憶體232中(步驟S3-22)。其中,第一預設數值為足以讓卷積運算電路234產生輸出特徵圖資料330-2中的至少一區塊資料(例如為,但不限於,一行區塊資料)之資料量。
類似地,在第2級運算中,卷積運算電路234可自記憶體232獲取該至少一區塊資料,並對該至少一區塊資料進行運算以產生輸出特徵圖資料330-2中的至少一區塊資料(步驟S3-23)。卷積運算電路234可將輸出特徵圖資料330-2中的至少一區塊資料儲存於記憶體232(步驟S3-24),且記憶體管理電路231可轉移記憶體232中所儲存的輸出特徵圖資料330-2中的至少一區塊資料到記憶體233(步驟S3-25與步驟S3-26)。重複步驟S3-21至步驟S3-26,直到記憶體233中所儲存的輸出特徵圖資料330-2中的至少一區塊資料之資料量滿足第二預設數值時,記憶體管理電路231可自記憶體233讀出該至少一區塊資料以進入第3級運算(未示出),其中第二預設數值為足以讓卷積運算電路234產生輸出特徵圖資料330-3中的至少一區塊資料之資料量。
依此類推,當記憶體233中所儲存的輸出特徵圖資料330-(n-1)中的至少一區塊資料之資料量滿足一特定預設數值時,記憶體管理電路231可自記憶體233讀出該至少一區塊資料以進入第n級運算(步驟S3-n1),並將輸出特徵圖資料330-(n-1)(其相當於第n級運算的輸入特徵圖資料)中的該至少一區塊資料儲存至記憶體232中(步驟S3-n2),其中該特定預設數值為足以讓卷積運算電路234產生輸出特徵圖資料330-n中的至少一區塊資料之資料量。在第n級運算中,卷積運算電路234可自記憶體232獲取該至少一區塊資料,並對該至少一區塊資料執行卷積運算,以產生輸出特徵圖資料330-n中的至少一區塊資料(步驟
S3-n3)。卷積運算電路234可將輸出特徵圖資料330-n中的至少一區塊資料儲存於記憶體232(步驟S3-n4),且記憶體管理電路231可轉移記憶體232中所儲存的輸出特徵圖資料330-n中的至少一區塊資料到記憶體220(步驟S3-n5與步驟S3-n6)。
換言之,在進行第1級運算時,輸入特徵圖資料的區塊資料是從記憶體220讀出。在中間的各級運算中所產生的輸入(或輸出)特徵圖資料中的區塊資料皆暫存於記憶體233。當進行到最後一級(即第n級)運算時,最後的輸出特徵圖資料330-n(相當於輸出資料DO)會儲存於記憶體220。藉由反覆執行上述步驟,卷積運算電路234可將記憶體233中所暫存的所有區塊資料完成運算。
圖4為根據本案一些實施例繪製一種降低記憶體頻寬的方法400的流程圖。記憶體頻寬降低方法400可應用於各種執行人工神經網路模型的系統或裝置(例如為,但不限於,圖2的人工智慧系統200),以降低系統中記憶體的使用頻寬。
於操作S410,根據第一記憶體(例如為圖2的記憶體232)的容量決定卷積運算電路(例如為圖2的卷積運算電路234)執行一卷積運算時儲存於第一記憶體之一區塊資料的資料尺寸,其中記憶體管理電路(例如為圖2的記憶體管理電路231)自一動態隨機存取記憶體(例如為圖2的記憶體220)轉移該區塊資料至該第一記憶體,且該卷積運算電路對該區塊資料依序執行對應於該卷積運算的多級運算以產生多個輸出特徵圖資料(例如為圖3B的多個輸出特徵圖資料330-1~330-n)。
於一些實施例中,操作S410可用來決定讀入記憶體232之區塊資料的資料尺寸。如圖3C所示,在每級運算中,輸入特徵圖資料(相當於前一級運算中所產生的輸出特徵圖資料)的區塊資料與輸出特徵圖資料的區塊資料會儲存至記憶體232。如圖3A所示,輸入特徵圖資料310中的區塊資料(例如為區塊資料310[1])之資料尺寸不同於輸出特徵圖資料320的區塊資料(例如為區塊資料320[1])之資料尺寸。於此條件下,若讀入記憶體232之區塊資料的資料尺寸越小,需重複存取多次記憶體220(與/或記憶體232)才可擷取到完整的輸入特徵圖資料310。如此一來,將使得記憶體220與/記憶體232的頻寬需求變大。因此,為了降低前述的讀取次數,可在符合記憶體232的容量的前提下將讀入記憶體232之區塊資料的資料尺寸設置的盡量大。
具體來說,以圖3A為例,若記憶體232的容量為X,則儲存於記憶體232的輸入特徵圖資料310中的區塊資料與輸出特徵圖資料320中的區塊資料之總資料量不可以超過記憶體232的容量X,其可表達為下式(1):tile_w1×tile_h1×c1+tile_w2×tile_h2×c2<X…(1)其中寬度tile_w1與高度tile_h1為輸入特徵圖資料310中的區塊資料之資料尺寸,寬度tile_w2與高度tile_h2為輸出特徵圖資料320中的區塊資料之資料尺寸,c1為輸入特徵圖資料310對應的通道數,且c2為輸出特徵圖資料320對應的通道數。
再者,在卷積運算的數學概念中,輸入特徵圖資料310中的區塊資料之寬度tile_w1與高度tile_h1以及輸出特徵圖資料320中的區塊資料之寬度tile_w2與高度tile_h2符合下式(2)與下式(3):(tile_w1-f_w)/stride_w+1=tile_w2…(2)
(tile_h1-f_h)/stride_h+1=tile_h2…(3)其中f_w與f_h分別為卷積核315的寬度與高度,stride_w為卷積核315在輸入特徵圖資料310上每次移動的寬度步幅,且stride_h為卷積核315在輸入特徵圖資料310上每次移動的高度步幅。
另外,由於在輸入特徵圖資料310中的多個區塊資料310[1]~310[4]之間彼此有重疊的資料,這些資料在卷積運算的過程中會被重複讀出。因此,對於輸入特徵圖資料310而言,所需要讀取的總資料量可由下式(4)推得:(w2/tile_w2)×(h2/tile_h2)×tile_h1×tile_w1×c1…(4)
在式(2)至式(4)中,寬度f_w、高度f_h、寬度步幅stride_w、高度步幅stride_h、寬度w2、高度h2、通道數c1以及通道數c2為卷積神經網路模型中的固定數值,且記憶體232的容量X可事先得知。因此,可利用式(1)至式(3)尋找可滿足式(1)並讓式(4)具有最小值之寬度tile_w1與高度tile_h1(對應於輸入特徵圖資料310的資料尺寸)以及寬度tile_w2與高度tile_h2(對應於輸出特徵圖資料320的資料尺寸)。應當理解,當滿足式(1)並可使式(4)具有最低的數值時,代表可在符合記憶體232的容量下盡可能地降低存取次數。如此一來,可降低記憶體220與/記憶體232的頻寬需求。
繼續參照圖4,於操作S420,根據第二記憶體(例如為圖2的記憶體233)的容量以及該些輸出特徵圖資料中的最後一個輸出特徵圖資料(例如為圖3B的輸出特徵圖資料330-n)的一第一部分資料(例如為,但不限於,一行的區塊資料)決定多級運算的級數以及用來產生該些輸出特徵圖資料中的剩餘
資料(例如為圖3B的多個輸出特徵圖資料330-1~330-(n-1))中每一者的至少一第二部分資料(例如為,但不限於,一行的區塊資料)的所需資料量,其中在執行該些級運算的過程中,該記憶體管理電路將該第一部分資料與該至少一第二部分資料儲存於該第二記憶體。
為說明操作S420,請參照圖5A與圖5B。圖5A為根據本案一些實施例繪製圖4中的操作S420的概念示意圖。於一些實施例中,操作S420可用來提高讀取記憶體233的命中率,以降低對記憶體220的存取次數。如先前所述,對於每級運算來說,輸入特徵圖資料的資料尺寸不同於輸出特徵圖資料的資料尺寸。為了使記憶體233可盡量儲存足夠多的區塊資料,可利用回推的方式決定多級運算之級數。
例如,如圖5A所示,可利用前述的式(2)與式(3)並根據最後一級(即第n級)的輸出特徵圖資料330-n中的一第一部分資料(例如為,但不限於,一行的區塊資料)推估第n級運算的輸入特徵圖資料(相當於第n-1級運算所產生的輸出特徵圖資料330-(n-1))的區塊資料的資料尺寸與所需資料量(相當於前述的特定預設數值)。接著,可再次利用前述的式(2)與式(3)來根據第n-1級的輸出特徵圖資料330-n中的至少一第二部分資料(例如為一行的區塊資料)推估第n-1級運算的輸入特徵圖資料(相當於第n-2級運算所產生的輸出特徵圖資料330-(n-2))的區塊資料的資料尺寸與所需資料量。依此類推,直到推出第1級運算的輸入特徵圖資料中的區塊資料的資料尺寸與所需資料量(相當於前述的第一預設數值)。接著,可加總第一部分資料的資料量以及用來產生剩餘級運算中的至少一第二部分資料之所需資料量為一總資料量,並確認總資料量是否超過記憶體233的容量。若總資料量未超出記憶體233,則將
級數(即數值n)加1,並再次推估。或者,若總資料量超出記憶體233,則將級數設為n-1。
圖5B為根據本案一些實施例繪製圖4中的操作S420的詳細步驟流程圖。在步驟S501中,獲得第二記憶體(例如為記憶體233)的容量。在步驟S502中,計算各級運算中的輸入特徵圖資料的區塊資料之資料尺寸以及輸出特徵圖資料的區塊資料之資料尺寸。例如,如先前所述,可利用前述的式(2)以及式(3)計算各級運算的所使用的輸入特徵圖資料與輸出特徵圖資料中的區塊資料之資料尺寸。在步驟S503中,假設多級運算的級數為第一數值(例如為數值n),且第一數值大於或等於2。在步驟S504中,根據最後一級運算的輸出特徵圖資料的中第一部分資料(例如為,但不限於,一行的區塊資料)回推產生該些輸出特徵圖資料中的剩餘資料中每一者的該至少一第二部分資料所需要的資料量。在步驟S505中,加總第一部分資料的資料量以及用來產生該些輸出特徵圖資料中的剩餘資料中每一者的至少一第二部分資料所需資料量為一總資料量,並確認該總資料量是否大於第二記憶體的容量,若總資料量大於第二記憶體的容量,確認級數為第一數值減1,且若總資料量小於第二記憶體的容量,更新級數為第二數值,並再次執行步驟S504與步驟S505,其中第二數值為第一數值加1。
藉由多個步驟S501~S505,可將卷積神經網路模型的一層卷積運算拆分為多次運算。因此,基於相同概念,藉由執行多次操作S420,可將卷積神經網路模型的多層卷積運算進一步地拆分為多級運算。
繼續參照圖4,於操作S430中,依據該區塊資料的資料尺寸、該些級運算的級數、該第一部分資料的資料量以及該至少一第二部分資料的資料
量產生預定編譯文件,其中該記憶體管理電路基於該預定編譯文件存取動態隨機存取記憶體、第一記憶體以及第二記憶體。
如先前所述,藉由操作S420,可將卷積神經網路模型的每一層卷積運算(其對應於不同指令)各自拆分為多次運算。如此,可記錄經由操作S410與操作S420所得到的各種資訊(例如為多級運算的級數、多級運算中所使用的輸入特徵圖資料與輸出特徵圖資料中的區塊資料之資料尺寸與所需資料量等等)與多個指令之間的對應關係為預定編譯文件。如此一來,圖2的處理器210可根據此預定編譯文件發出指令CMD,且記憶體管理電路231可基於指令CMD決定如何拆分該指令CMD所對應的卷積運算,並據以存取記憶體220、記憶體232與記憶體233。
於一些實施例中,降低記憶體頻寬的方法400可由一電腦輔助設計系統與/或一電路模擬軟體執行以產生該預定編譯文件,且該預定編譯文件可預先儲存於人工智慧系統200的一暫存器(未示出)。如此,處理器210可根據該預定編譯文件發出指令CMD。在另一些實施例中,降低記憶體頻寬的方法400亦可由處理器210執行。上述關於降低記憶體頻寬的方法400的應用方式僅為示例,且本案並不以此為限。
圖4與圖5B的多個操作與/或步驟僅為示例,並非限定需依照此示例中的順序執行。在不違背本案的各實施例的操作方式與範圍下,在圖4與圖5B的各個操作與/或步驟當可適當地增加、替換、省略或以不同順序執行(例如可以是同時執行或是部分同時執行)。
綜上所述,本案一些實施例中的智慧處理器裝置與降低記憶體頻寬的方法可以將卷積神經網路模型的多層卷積運算再拆分為多級運算,並將
執行該些級運算的過程中所產生出的運算結果暫存於一額外的快取記憶體。如此一來,可降低系統原有的記憶體的存取次數與資料存取量,以降低該記憶體的頻寬需求。
雖然本案之實施例如上所述,然而該些實施例並非用來限定本案,本技術領域具有通常知識者可依據本案之明示或隱含之內容對本案之技術特徵施以變化,凡此種種變化均可能屬於本案所尋求之專利保護範疇,換言之,本案之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
200:人工智慧系統
210:處理器
220,232,233:記憶體
230:智慧處理器裝置
231:記憶體管理電路
234:卷積運算電路
CMD:指令
DI:輸入資料
DO:輸出資料
Claims (10)
- 一種智慧處理器裝置,包含:一第一記憶體;一記憶體管理電路,自一動態隨機存取記憶體讀取一輸入資料,並儲存該輸入資料至該第一記憶體;一第二記憶體;以及一卷積運算電路,自該第一記憶體讀取該輸入資料,並對該輸入資料執行對應於一卷積運算的複數級運算以依序產生複數個輸出特徵圖資料,其中該些輸出特徵圖資料分別由該些級運算產生,且該些輸出特徵圖資料中每一者包含複數個區塊資料,其中在該卷積運算電路執行該些級運算中的一第一級運算以產生該些輸出特徵圖資料中的一第一輸出特徵圖資料的該些區塊資料中的至少一第一區塊資料後,該記憶體管理電路儲存該至少一第一區塊資料至該第二記憶體,且該至少一第一區塊資料的資料量少於該第一輸出特徵圖資料的資料量,當該第二記憶體中儲存的該至少一第一區塊資料的資料量滿足一預設數值時,該記憶體管理電路自該第二記憶體轉移該至少一第一區塊資料至該第一記憶體,且該卷積運算電路更自該第一記憶體讀取該至少一第一區塊資料,並對該至少一第一區塊資料執行該些級運算中的一第二級運算以產生該些輸出特徵圖資料中的一第二輸出特徵圖資料的該些區塊資料中的至少一第 二區塊資料,並經由該記憶體管理電路儲存該至少一第二區塊資料至該第二記憶體。
- 如請求項1之智慧處理器裝置,其中該第一記憶體為一第二級(L2)快取記憶體,且該第二記憶體為一第三級(L3)快取記憶體。
- 如請求項1之智慧處理器裝置,其中該第一記憶體的資料寬度相同於該卷積運算電路的資料寬度,且該第二記憶體的資料寬度不同於該卷積運算電路的資料寬度。
- 如請求項1之智慧處理器裝置,其中該第一記憶體直接連接至該卷積運算電路,且該第二記憶體經由該記憶體管理電路耦接至該卷積運算電路。
- 如請求項1之智慧處理器裝置,其中當該卷積運算電路產生該些輸出特徵圖資料中的最後一個輸出特徵圖資料後,該記憶體管理電路自該第二記憶體轉移該最後一個輸出特徵圖資料至該動態隨機存取記憶體。
- 如請求項1之智慧處理器裝置,其中該預設數值為足以讓該卷積運算電路產生該至少一第二區塊資料的一資料量。
- 一種降低記憶體頻寬的方法,應用於執行一卷積神經網路模型的一智慧型處理器裝置,其中該智慧型處理器裝置包含一第一記憶體、一記憶體管理電路、一第二記憶體以及一卷積運算電路,且該降低記憶體頻寬的方法包含:根據該第一記憶體的容量決定該卷積運算電路執行一卷積運算時儲存於該第一記憶體之一區塊資料的資料尺寸,其中該記憶體管理電路自一動態隨機存 取記憶體轉移該區塊資料至該第一記憶體,且該卷積運算電路對該區塊資料依序執行對應於該卷積運算的複數級運算以依序產生複數個輸出特徵圖資料,其中該些輸出特徵圖資料分別經由該些級運算產生;根據該第二記憶體的容量以及該些輸出特徵圖資料中的最後一個輸出特徵圖資料之一第一部分資料的資料量決定該些級運算的級數以及用來產生該些輸出特徵圖資料中的其他輸出特徵圖資料中每一者之至少一第二部分資料的所需資料量,其中在執行該些級運算的過程中,該記憶體管理電路將該些輸出特徵圖資料中的該最後一個輸出特徵圖資料之該第一部分資料與該些輸出特徵圖資料中的該其他輸出特徵圖資料中每一者之該至少一第二部分資料儲存於該第二記憶體;以及依據該區塊資料的資料尺寸、該些級運算的級數、該些輸出特徵圖資料中的該最後一個輸出特徵圖資料之該第一部分資料的資料量以及該些輸出特徵圖資料中的該其他輸出特徵圖資料中每一者之該至少一第二部分資料的資料量產生一預定編譯文件,其中該記憶體管理電路基於該預定編譯文件存取該動態隨機存取記憶體、該第一記憶體以及該第二記憶體。
- 如請求項7之降低記憶體頻寬的方法,其中該些輸出特徵圖資料中的該其他輸出特徵圖資料中每一者之該至少一第二部分資料的資料量為足以讓該卷積運算電路產生該些輸出特徵圖資料中的該最後一個輸出特徵圖資料之該第一部分資料的資料量。
- 如請求項7之降低記憶體頻寬的方法,其中根據該第一記憶體的容量決定該卷積運算電路執行該卷積運算時儲存於該第一記憶體之該區塊資料的資料尺寸包含:根據該第一記憶體的容量、該卷積神經網路模型的一輸入特徵圖資料的資料尺寸、一輸出特徵圖資料的資料尺寸、一卷積核資料的資料尺寸決定該區塊資料的資料尺寸。
- 如請求項7之降低記憶體頻寬的方法,其中根據該第二記憶體的容量以及該些輸出特徵圖資料中的該最後一個輸出特徵圖資料之該第一部分資料的資料量決定該些級運算的級數以及該些輸出特徵圖資料中的該其他輸出特徵圖資料中每一者之該至少一第二部分資料的資料量包含下列步驟:(a)計算該些級運算中每一者的所使用的複數個輸入特徵圖資料中的區塊資料之一資料尺寸以及該些輸出特徵圖資料中的區塊資料之資料尺寸;(b)假設該些級運算的級數為一第一數值,其中該第一數值為大於或等於2的正整數;(c)根據該些輸出特徵圖資料中的該最後一個輸出特徵圖資料的該第一部分資料回推用來產生該些輸出特徵圖資料中的該其他輸出特徵圖資料中每一者的該至少一第二部分資料所需資料量,其中該最後一個輸出特徵圖資料對應於該些級運算的最後一級運算;以及(d)加總該些輸出特徵圖資料中的該最後一個輸出特徵圖資料之該第一部分資料的資料量以及用來產生該些輸出特徵圖資料中的該其他輸出特徵圖資料中每一者的該至少一第二部分資料的所需資料量為一總資料量,並確認 該總資料量是否大於該第二記憶體的容量,若該總資料量大於該第二記憶體的容量,決定該些級運算的級數為該第一數值,且若該總資料量小於該第二記憶體的容量,更新該些級運算的級數為一第二數值,並再次執行該步驟(c)以及該步驟(d),其中該些輸出特徵圖資料中的該其他輸出特徵圖資料對應於該些級運算中之其他級運算,且該第二數值為該第一數值加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110144905A TWI798972B (zh) | 2021-12-01 | 2021-12-01 | 智慧處理器裝置與降低記憶體頻寬的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110144905A TWI798972B (zh) | 2021-12-01 | 2021-12-01 | 智慧處理器裝置與降低記憶體頻寬的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI798972B true TWI798972B (zh) | 2023-04-11 |
TW202324069A TW202324069A (zh) | 2023-06-16 |
Family
ID=86948699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110144905A TWI798972B (zh) | 2021-12-01 | 2021-12-01 | 智慧處理器裝置與降低記憶體頻寬的方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI798972B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI607389B (zh) * | 2017-02-10 | 2017-12-01 | 耐能股份有限公司 | 卷積神經網路的池化運算裝置及方法 |
CN108073548A (zh) * | 2016-11-14 | 2018-05-25 | 耐能股份有限公司 | 卷积运算装置及卷积运算方法 |
CN108416430A (zh) * | 2017-02-10 | 2018-08-17 | 耐能股份有限公司 | 卷积神经网络的池化运算装置及方法 |
US10963777B2 (en) * | 2015-10-07 | 2021-03-30 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
TW202123093A (zh) * | 2019-12-12 | 2021-06-16 | 南韓商三星電子股份有限公司 | 實行卷積運算的系統及方法 |
TW202122994A (zh) * | 2019-12-11 | 2021-06-16 | 美商英特爾股份有限公司 | 稀疏矩陣最佳化機制 |
-
2021
- 2021-12-01 TW TW110144905A patent/TWI798972B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963777B2 (en) * | 2015-10-07 | 2021-03-30 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
CN108073548A (zh) * | 2016-11-14 | 2018-05-25 | 耐能股份有限公司 | 卷积运算装置及卷积运算方法 |
TWI607389B (zh) * | 2017-02-10 | 2017-12-01 | 耐能股份有限公司 | 卷積神經網路的池化運算裝置及方法 |
CN108416430A (zh) * | 2017-02-10 | 2018-08-17 | 耐能股份有限公司 | 卷积神经网络的池化运算装置及方法 |
TW202122994A (zh) * | 2019-12-11 | 2021-06-16 | 美商英特爾股份有限公司 | 稀疏矩陣最佳化機制 |
TW202123093A (zh) * | 2019-12-12 | 2021-06-16 | 南韓商三星電子股份有限公司 | 實行卷積運算的系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202324069A (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
US11321423B2 (en) | Operation accelerator | |
CN108446764B (zh) | 一种新型神经形态芯片架构 | |
WO2019085709A1 (zh) | 一种应用于卷积神经网络的池化处理的方法及系统 | |
US20220147795A1 (en) | Neural network tiling method, prediction method, and related apparatus | |
CN115221102B (zh) | 用于优化片上系统的卷积运算操作的方法和相关产品 | |
CN109993275B (zh) | 一种信号处理方法及装置 | |
CN115186821A (zh) | 面向芯粒的神经网络推理开销估计方法及装置、电子设备 | |
CN108573305A (zh) | 一种数据处理方法、设备及装置 | |
US11579921B2 (en) | Method and system for performing parallel computations to generate multiple output feature maps | |
CN111860801A (zh) | 神经网络方法、神经网络系统和计算机可读介质 | |
CN111338695A (zh) | 基于流水线技术的数据处理方法及相关产品 | |
US7062725B2 (en) | Computer aided design system and computer-readable medium storing a program for designing clock gated logic circuits and gated clock circuit | |
CN115668222A (zh) | 一种神经网络的数据处理方法及装置 | |
TWI798972B (zh) | 智慧處理器裝置與降低記憶體頻寬的方法 | |
WO2020026475A1 (ja) | ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム | |
CN114118395B (zh) | 智能处理器装置与降低存储器带宽的方法 | |
US20240289602A1 (en) | Macro placement using an artificial intelligence approach | |
CN112905526B (zh) | 一种多种类型卷积的fpga实现方法 | |
CN113469333A (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
CN113821471A (zh) | 神经网络的处理方法和电子装置 | |
TWI790789B (zh) | 卷積運算方法 | |
TWI828185B (zh) | 三維卷積運算裝置與三維卷積運算方法 | |
CN118503205B (zh) | 用于处理张量数据的方法和装置 | |
CN113988256B (zh) | 卷积运算方法 |