一種人工神經(jīng)網(wǎng)絡(luò)計算核的制作方法
【專利摘要】本發(fā)明涉及一種人工神經(jīng)網(wǎng)絡(luò)計算核,包括:一路由器模塊、至少一神經(jīng)元計算模塊、至少一核控制器,所述神經(jīng)元計算模塊與所述核控制器一一對應(yīng)。所述路由器模塊接收并解析外部輸入數(shù)據(jù),并將解析后的地址信息和軸突值信息送入對應(yīng)的神經(jīng)元計算模塊;以及將所述神經(jīng)元計算模塊輸出的神經(jīng)元計算結(jié)果發(fā)送至目標(biāo)地址,并向該神經(jīng)元計算模塊對應(yīng)的核控制器發(fā)送本幀數(shù)據(jù)處理完成標(biāo)志。所述神經(jīng)元計算模塊用于進(jìn)行神經(jīng)元計算,并將神經(jīng)元計算結(jié)果發(fā)送至所述路由器模塊。所述核控制器在接收到所述本幀數(shù)據(jù)處理完成標(biāo)志后進(jìn)入下一神經(jīng)元周期。利用本發(fā)明提供的人工神經(jīng)網(wǎng)絡(luò)計算核可以實(shí)現(xiàn)多個人工神經(jīng)網(wǎng)絡(luò)計算核的組網(wǎng)。
【專利說明】
一種人工神經(jīng)網(wǎng)絡(luò)計算核
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于人工神經(jīng)網(wǎng)絡(luò)計算領(lǐng)域,特別涉及一種神經(jīng)元計算單元。
【背景技術(shù)】
[0002] 人工神經(jīng)網(wǎng)絡(luò)是借鑒生物大腦突觸-神經(jīng)元結(jié)構(gòu)演化而成的計算模型,能并行地 進(jìn)行大規(guī)模復(fù)雜運(yùn)算,并具有高度非線性、自適應(yīng)性的特點(diǎn)。與生物大腦神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)類 似,人工神經(jīng)網(wǎng)絡(luò)可定義為由神經(jīng)元計算單元、軸突單元、樹突單元、突觸單元等基本結(jié)構(gòu) 組成。神經(jīng)元計算單元是最基本的計算單元,能進(jìn)行簡單的數(shù)學(xué)運(yùn)算;軸突單元負(fù)責(zé)輸出神 經(jīng)元計算結(jié)果,一個神經(jīng)元有一個軸突;樹突單元是神經(jīng)元計算的輸入,一個神經(jīng)元可有多 個樹突;突觸單元表示上一神經(jīng)元軸突和下一神經(jīng)元樹突聯(lián)接的權(quán)重;神經(jīng)元與神經(jīng)元間 通過軸突、突觸、樹突形成分層聯(lián)接從而構(gòu)成神經(jīng)網(wǎng)絡(luò)。
[0003] 人工神經(jīng)網(wǎng)絡(luò)由多層神經(jīng)元計算單元聯(lián)接而成,通過大量分布式的簡單運(yùn)算單元 相互作用實(shí)現(xiàn)并行復(fù)雜非線性計算,具有強(qiáng)大的信息處理能力。在研究人工神經(jīng)網(wǎng)絡(luò)計算 模型時,常用的計算設(shè)備如通用計算機(jī)往往會出現(xiàn)計算效能低,耗時長,能耗高等缺點(diǎn)。近 年來,部分研究機(jī)構(gòu)針對人工神經(jīng)網(wǎng)絡(luò)的特點(diǎn)研發(fā)出通用的神經(jīng)網(wǎng)絡(luò)計算芯片,如IBM的 TrueNorth,初步達(dá)到了芯片中進(jìn)行人工神經(jīng)網(wǎng)絡(luò)運(yùn)算的目的。然而,目前多數(shù)神經(jīng)網(wǎng)絡(luò)計 算芯片采用的是將計算單元(神經(jīng)元)和聯(lián)接單元(突觸矩陣)分離的設(shè)計思路,由于采用了 固定規(guī)模全聯(lián)接的布局方式,從而限制了單核中神經(jīng)元的聯(lián)接數(shù),同時在非全聯(lián)接神經(jīng)網(wǎng) 絡(luò)的應(yīng)用中,也會造成未聯(lián)接突觸點(diǎn)位存儲資源的浪費(fèi)。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,確有必要提供一種可以實(shí)現(xiàn)靈活組網(wǎng)的神經(jīng)網(wǎng)絡(luò)計算芯片。
[0005] -種人工神經(jīng)網(wǎng)絡(luò)計算核,包括:一路由器模塊、至少一神經(jīng)元計算模塊、至少一 核控制器,所述神經(jīng)元計算模塊與所述核控制器一一對應(yīng);所述路由器模塊,用于接收并解 析外部輸入數(shù)據(jù),并將解析后的地址信息和軸突值信息送入對應(yīng)的神經(jīng)元計算模塊;所述 神經(jīng)元計算模塊,用于進(jìn)行神經(jīng)元計算,并將神經(jīng)元計算結(jié)果發(fā)送至所述路由器模塊;所述 路由器模塊,還用于將所述神經(jīng)元計算模塊輸出的神經(jīng)元計算結(jié)果發(fā)送至目標(biāo)地址,并向 該神經(jīng)元計算模塊對應(yīng)的核控制器發(fā)送本幀數(shù)據(jù)處理完成標(biāo)志;所述核控制器,用于在接 收到所述本幀數(shù)據(jù)處理完成標(biāo)志后進(jìn)入下一神經(jīng)元周期。
[0006] 與現(xiàn)有技術(shù)相比較,利用本發(fā)明提供的人工神經(jīng)網(wǎng)絡(luò)計算核可以實(shí)現(xiàn)多個人工神 經(jīng)網(wǎng)絡(luò)計算核的組網(wǎng),實(shí)現(xiàn)計算核的柔性拓展以及存儲資源的有效利用,增強(qiáng)了計算核的 適應(yīng)性,避免額外的資源開銷。
【附圖說明】
[0007] 圖1為本發(fā)明第一實(shí)施例提供的神經(jīng)元計算單元示意圖。
[0008] 圖2為本發(fā)明第二實(shí)施例提供的神經(jīng)元計算模塊示意圖。
[0009] 圖3為本發(fā)明第三實(shí)施例提供的人工神經(jīng)網(wǎng)絡(luò)計算核示意圖。
[0010] 圖4為本發(fā)明第四實(shí)施例提供的人工神經(jīng)網(wǎng)絡(luò)計算核示意圖。
[0011] 圖5為本發(fā)明第四實(shí)施例提供的人工神經(jīng)網(wǎng)絡(luò)計算核核間傳輸數(shù)據(jù)幀格式。
[0012] 圖6為本發(fā)明提供的人工神經(jīng)網(wǎng)絡(luò)計算核路由器數(shù)據(jù)收發(fā)流程圖。
[0013] 圖7為本發(fā)明提供的人工神經(jīng)網(wǎng)絡(luò)計算核神經(jīng)元計算模塊計算結(jié)果發(fā)送流程圖。
[0014] 圖8為本發(fā)明第五實(shí)施例提供的人工神經(jīng)網(wǎng)絡(luò)計算核示意圖。
[0015] 圖9為本發(fā)明提供的人工神經(jīng)網(wǎng)絡(luò)計算核組網(wǎng)示意圖。 「00161 Φ惡元仳箝馬謚昍
' 如下【具體實(shí)施方式】將結(jié)合上述附圖進(jìn)一步說明本發(fā)明。 '
【具體實(shí)施方式】
[0017] 下面將結(jié)合附圖及具體實(shí)施例,對本發(fā)明提供的人工神經(jīng)網(wǎng)絡(luò)計算核作進(jìn)一步的 詳細(xì)說明。
[0018] 請參見圖1,本發(fā)明第一實(shí)施例提供一種神經(jīng)元計算單元210,包括解碼模塊211、 地址權(quán)重模塊212、乘法器213、累加器214。
[0019]所述解碼模塊211用于接收神經(jīng)網(wǎng)絡(luò)信息并解析。所述神經(jīng)網(wǎng)絡(luò)信息包括地址信 息和軸突值信息,所述解碼模塊211將其中的地址信息送入所述地址權(quán)重模塊212,將軸突 值信息送入所述乘法器213。
[0020] 所述地址權(quán)重模塊212中存儲地址權(quán)重對列表,實(shí)現(xiàn)對輸入到該地址權(quán)重模塊212 的地址信息進(jìn)行匹配。若輸入地址與地址權(quán)重模塊212中已存儲的地址信息匹配,則地址權(quán) 重模塊212向乘法器213輸出相對應(yīng)的權(quán)重值,輸出的權(quán)重值為一定范圍內(nèi)變化的數(shù)值;若 輸入地址與已存儲的地址信息不匹配,則地址權(quán)重模塊212向乘法器213輸出零值。此外,所 述地址權(quán)重模塊212還可以根據(jù)匹配判斷結(jié)果設(shè)置地址有效標(biāo)志狀態(tài)。具體為,若輸入地址 與地址權(quán)重模塊212中已存儲的地址信息匹配,所述地址權(quán)重模塊212發(fā)出地址有效標(biāo)志, 若輸入地址與地址權(quán)重模塊212中已存儲的地址信息不匹配,所述地址權(quán)重模塊212不改變 地址有效標(biāo)志狀態(tài)。
[0021] 所述乘法器213接收所述地址權(quán)重模塊212輸出的權(quán)重值以及所述解碼模塊211輸 出的軸突值,將所述權(quán)重值與軸突值相乘,并將乘積送入累加器214。
[0022] 所述累加器214實(shí)現(xiàn)將乘法器213輸出的計算結(jié)果進(jìn)行累加并輸出。
[0023] 本發(fā)明第一實(shí)施例提供的神經(jīng)元計算單元210實(shí)現(xiàn)了尋址與計算一體化,通過采 用尋址與計算一體化設(shè)計,突破了固定規(guī)模全聯(lián)接的布局方式對神經(jīng)元計算單元數(shù)目的限 制,同時由于采取了地址匹配的聯(lián)接方式,避免了無用聯(lián)接造成的資源浪費(fèi),從而實(shí)現(xiàn)柔性 拓展以及存儲資源的有效利用,增強(qiáng)了神經(jīng)網(wǎng)絡(luò)計算效率。
[0024] 本發(fā)明第二實(shí)施例進(jìn)一步提供一種神經(jīng)元計算模塊,用于建立神經(jīng)元間聯(lián)接關(guān)系 及進(jìn)行神經(jīng)元計算。請參見圖2,所述神經(jīng)元計算模塊200包括:多個神經(jīng)元計算單元210、發(fā) 送緩存及接口 220、函數(shù)信息表230。
[0025] 所述多個神經(jīng)元計算單元210接收來自外部的地址信息和軸突值信息,并對所述 地址信息進(jìn)行判斷,若接收到的地址信息與自身存儲的地址信息匹配,則對該接收到的信 息進(jìn)行神經(jīng)網(wǎng)絡(luò)計算,并將計算結(jié)果及地址有效標(biāo)志發(fā)送至所述發(fā)送緩存及接口 220,若接 收到的地址信息與自身存儲的地址信息不匹配,則不對該接收到的信息進(jìn)行神經(jīng)網(wǎng)絡(luò)計 算。
[0026] 本實(shí)施例中所述多個神經(jīng)元計算單元中每一神經(jīng)元計算單元進(jìn)一步包括:解碼模 塊211、地址權(quán)重模塊212、乘法器213、累加器214。本實(shí)施例中的神經(jīng)元計算單元與本發(fā)明 第一實(shí)施例提供的神經(jīng)元計算單元210結(jié)構(gòu)與功能基本相同,本實(shí)施例中所述地址權(quán)重模 塊212還用于當(dāng)輸入地址與地址權(quán)重模塊212中已存儲的地址信息匹配,則地址權(quán)重模塊 212向乘法器213輸出相對應(yīng)的權(quán)重值,并向發(fā)送緩存及接口 220發(fā)出地址有效標(biāo)志;若輸入 地址與已存儲的地址信息不匹配,則地址權(quán)重模塊212向乘法器213輸出零值,且不改變地 址有效標(biāo)志狀態(tài)。
[0027] 所述發(fā)送緩存及接口 220用于在外部全局時鐘gclk觸發(fā)時將所述多個神經(jīng)元計算 單元210的計算結(jié)果及地址有效標(biāo)志進(jìn)行鎖存,并清零各神經(jīng)元計算單元210的地址有效標(biāo) 志,以及將指定的神經(jīng)元計算結(jié)果輸出至所述函數(shù)信息表230并獲取轉(zhuǎn)換結(jié)果。
[0028] 所述函數(shù)信息表230將所述神經(jīng)元計算結(jié)果轉(zhuǎn)換為對應(yīng)的函數(shù)值。
[0029] 本發(fā)明第二實(shí)施例提供的神經(jīng)元計算模塊中單個神經(jīng)元計算單元將尋址與計算 合二為一,可同時進(jìn)行神經(jīng)元尋址與計算,通過采用尋址與計算一體化設(shè)計,突破了固定規(guī) 模全聯(lián)接的布局方式對神經(jīng)元計算單元數(shù)目的限制,同時由于采取了地址匹配的聯(lián)接方 式,避免了無用聯(lián)接造成的資源浪費(fèi),從而實(shí)現(xiàn)柔性拓展以及存儲資源的有效利用,增強(qiáng)了 神經(jīng)網(wǎng)絡(luò)計算效率。
[0030] 本發(fā)明第三實(shí)施例提供一種人工神經(jīng)網(wǎng)絡(luò)計算核,包括:神經(jīng)元計算模塊、核控制 器。所述神經(jīng)元計算模塊用于進(jìn)行神經(jīng)元計算,并在所述核控制器的控制下進(jìn)入不同神經(jīng) 元計算結(jié)果的發(fā)送流程。所述神經(jīng)元計算模塊可以為現(xiàn)有的各種神經(jīng)元計算模塊,本實(shí)施 例中以本發(fā)明第二實(shí)施例提供的神經(jīng)元計算模塊200為例進(jìn)行說明。具體請參見圖3,人工 神經(jīng)網(wǎng)絡(luò)計算核10包括神經(jīng)元計算模塊200、核控制器300。
[0031 ] 所述核控制器300通過發(fā)出神經(jīng)元周期N_peri和比較脈沖N_data_comp控制人工 神經(jīng)網(wǎng)絡(luò)計算核10進(jìn)入不同神經(jīng)元計算結(jié)果的發(fā)送流程。當(dāng)進(jìn)入新的神經(jīng)元周期時,通過 輸出比較脈沖N_data_comp觸發(fā)神經(jīng)元計算結(jié)果的比較、輸出,并等待數(shù)據(jù)處理結(jié)果標(biāo)志R_ N_data_doneSN_data_null有效以進(jìn)入新的神經(jīng)元周期。所述核控制器300在全局時鐘 gclk觸發(fā)下進(jìn)入新一輪神經(jīng)元計算結(jié)果的發(fā)送周期。
[0032]所述神經(jīng)元計算模塊200用于建立神經(jīng)元間聯(lián)接關(guān)系及進(jìn)行神經(jīng)元計算,與本發(fā) 明第二實(shí)施例提供的神經(jīng)元計算模塊結(jié)構(gòu)與功能基本相同,本實(shí)施例中所述發(fā)送緩存及接 口 220在全局時鐘gclk觸發(fā)時將各神經(jīng)元計算單元210的計算結(jié)果及地址有效標(biāo)志進(jìn)行鎖 存,并清零各神經(jīng)元計算單元210的地址有效標(biāo)志,此后所述核控制器300發(fā)出比較脈沖N_ data_comp,神經(jīng)元計算模塊200接收到所述比較脈WN_data_comp后,讀取序號與當(dāng)前神經(jīng) 元周期N_peri相同的神經(jīng)元地址有效標(biāo)志,若為有效,則將該神經(jīng)元計算結(jié)果送入函數(shù)信 息表230并獲取轉(zhuǎn)換結(jié)果,若為無效,則向核控制器300發(fā)出數(shù)據(jù)無效標(biāo)志N_data_nul 1,驅(qū) 動核控制器300進(jìn)入下一神經(jīng)元周期。所述發(fā)送緩存及接口 220當(dāng)判斷地址有效標(biāo)志為有效 時,將函數(shù)信息表230的轉(zhuǎn)換結(jié)果通過SPI接口輸出,同時清零對應(yīng)神經(jīng)元計算單元210的累 加器214,當(dāng)判斷地址有效標(biāo)志為無效時,不對累加器214進(jìn)行處理,同時發(fā)出數(shù)據(jù)無效標(biāo)志 N_data_null,驅(qū)動核控制器300進(jìn)入下一神經(jīng)元周期。
[0033]本發(fā)明第三實(shí)施例提供的人工神經(jīng)網(wǎng)絡(luò)計算核10通過采用尋址與計算一體化設(shè) 計思路,可動態(tài)配置核中神經(jīng)元計算單元數(shù)目,也可改變單個神經(jīng)元計算單元的聯(lián)接數(shù)。
[0034]本發(fā)明第四實(shí)施例提供一種人工神經(jīng)網(wǎng)絡(luò)計算核,包括路由器模塊、神經(jīng)元計算 模塊、核控制器。所述神經(jīng)元計算模塊用于進(jìn)行神經(jīng)元計算,并將神經(jīng)元計算結(jié)果發(fā)送至所 述路由器模塊。所述神經(jīng)元計算模塊可以為現(xiàn)有的各種神經(jīng)元計算模塊,本實(shí)施例中以本 發(fā)明第二實(shí)施例提供的神經(jīng)元計算模塊200為例進(jìn)行說明。具體請參見圖4,人工神經(jīng)網(wǎng)絡(luò) 計算核20包括路由器模塊100、神經(jīng)元計算模塊200、核控制器300。
[0035]本實(shí)施例與第三實(shí)施例區(qū)別在于增加了路由器模塊100,現(xiàn)對該路由器模塊100進(jìn) 行詳細(xì)說明。
[0036]所述路由器模塊100用于接收并解析外部輸入數(shù)據(jù),并將解析后的地址信息和軸 突值信息送入對應(yīng)的神經(jīng)元計算模塊200;以及將所述神經(jīng)元計算模塊200輸出的神經(jīng)元計 算結(jié)果發(fā)送至目標(biāo)地址,并向核控制器300發(fā)送本幀數(shù)據(jù)處理完成標(biāo)志。
[0037]所述路由器模塊100進(jìn)一步包括:路由控制器110、核間交互緩存及接口、路由信息 表160、神經(jīng)元-路由器接口 170。其中所述核間交互緩存及接口進(jìn)一步包括上左下右四個發(fā) 送接收緩存及接口,即上發(fā)送接收緩存及接口 120、左發(fā)送接收緩存及接口 130、下發(fā)送接收 緩存及接口 140、右發(fā)送接收緩存及接口 150。實(shí)際應(yīng)用中發(fā)送接收緩存及其數(shù)據(jù)接口的數(shù) 目可以根據(jù)具體需求而做適當(dāng)?shù)淖兓K雎酚善髂K100與外部數(shù)據(jù)交互采用串行外設(shè) 接口(Serial Peripheral Interface,SPI)。上左下右四個發(fā)送接收緩存為核間交互緩存 區(qū)。所述神經(jīng)元-路由器接口 170用于接收神經(jīng)元計算模塊200輸出的神經(jīng)元計算結(jié)果,本實(shí) 施例中采用SPI接口,僅能存儲一幀計算結(jié)果。
[0038]所述路由器模塊100接收數(shù)據(jù)時,外部接口(包括相鄰路由器模塊的核間交互緩存 及接口以及本地神經(jīng)元接口)向該路由器模塊100發(fā)送緩存非空標(biāo)志,提示本地路由器模塊 100進(jìn)行數(shù)據(jù)接收。此時外部接口工作于從模式,本地接口工作于主模式。若本地路由器模 塊100中對應(yīng)方向接收緩存未滿,則按照先入先出規(guī)則發(fā)動一幀數(shù)據(jù)接收,并向路由控制器 110發(fā)出接收緩存非空標(biāo)志,提示路由控制器110對接收緩存中數(shù)據(jù)幀進(jìn)行處理;若本地路 由器模塊100中對應(yīng)方向接收緩存已滿,則不進(jìn)行數(shù)據(jù)接收,外部發(fā)送緩存等待數(shù)據(jù)發(fā)送。
[0039] 所述路由器模塊100發(fā)送數(shù)據(jù)時,路由控制器110先讀取發(fā)送緩存狀態(tài)。若發(fā)送緩 存未滿,則將待發(fā)送數(shù)據(jù)幀按照先入先出規(guī)則寫入發(fā)送緩存,同時向外部接口送出發(fā)送緩 存非空標(biāo)志,等待外部接收;若發(fā)送緩存已滿,則路由控制器110跳過此幀數(shù)據(jù)發(fā)送,讀取下 一幀數(shù)據(jù)并解析。
[0040] 所述路由控制器110是路由數(shù)據(jù)解析及傳輸控制的核心。其按照上發(fā)送接收緩存 及接口 120,左發(fā)送接收緩存及接口 130,下發(fā)送接收緩存及接口 140,右發(fā)送接收緩存及接 口 150,神經(jīng)元-路由器接口 170的順序依次讀取各接收緩存是否為空。若為非空,則讀取一 幀數(shù)據(jù)進(jìn)行解析;若為空,則跳至下一方向接收緩存。
[0041]請參見圖5,該圖為人工神經(jīng)網(wǎng)絡(luò)計算核核間傳輸數(shù)據(jù)幀格式,即核間交互緩存中 存儲的一幀數(shù)據(jù)格式,該數(shù)據(jù)幀包括:目標(biāo)核地址字段、核內(nèi)神經(jīng)元計算模塊地址字段、軸 突地址字段、神經(jīng)元輸出字段。具體在本實(shí)施例中,所述目標(biāo)核地址字段進(jìn)一步包括:左右 方向目標(biāo)核地址字段、上下方向目標(biāo)核地址字段。其中,左右方向目標(biāo)核地址字段、上下方 向目標(biāo)核地址字段分別為8比特有符號數(shù),最高位為0代表向左或向上,最高位為1代表向右 或向下;核內(nèi)神經(jīng)元計算模塊地址字段為4比特?zé)o符號數(shù),代表某個核內(nèi)神經(jīng)元計算模塊; 軸突地址字段為8比特?zé)o符號數(shù),用于神經(jīng)元計算模塊內(nèi)神經(jīng)元計算單元進(jìn)行地址匹配;神 經(jīng)元輸出字段分為8比特?zé)o符號數(shù)。所述神經(jīng)元-路由器接口 170存儲的數(shù)據(jù)幀格式僅包括 圖5數(shù)據(jù)幀中的神經(jīng)元輸出字段。單個人工神經(jīng)網(wǎng)絡(luò)計算核發(fā)出數(shù)據(jù)幀所能到達(dá)的網(wǎng)絡(luò)位 置、核中神經(jīng)元計算模塊數(shù)目及單個神經(jīng)元計算單元所能聯(lián)接的軸突地址數(shù)目上限由該核 間傳輸數(shù)據(jù)幀確定。需要說明的是,本實(shí)施例只是給出了一種具體的數(shù)據(jù)幀形式,實(shí)際應(yīng)用 中數(shù)據(jù)幀中各字段的順序及比特數(shù)可做適當(dāng)調(diào)整。
[0042]所述路由控制器110讀取核間交互緩存一幀數(shù)據(jù)后進(jìn)行數(shù)據(jù)解析。若為發(fā)送至本 地的數(shù)據(jù)幀,即數(shù)據(jù)幀的左右方向目標(biāo)核地址、上下方向目標(biāo)核地址均為〇,則去掉數(shù)據(jù)幀 中的目標(biāo)核地址字段,同時解析核內(nèi)神經(jīng)元計算模塊地址并將軸突地址和神經(jīng)元輸出兩字 段送入目標(biāo)神經(jīng)元計算模塊中,而后清除接收緩存中被解析數(shù)據(jù)幀;若不為發(fā)送至本地的 數(shù)據(jù)幀,則按照先左右,后上下的順序?qū)⒛繕?biāo)核地址減1,而后檢測目標(biāo)發(fā)送緩存是否為滿, 若為滿則不作處理同時跳至讀取下一方向接收緩存,若不為滿則將處理后的數(shù)據(jù)幀送入發(fā) 送緩存中等待發(fā)送,同時清除接收緩存中被解析數(shù)據(jù)幀。
[0043] 所述路由控制器110讀取神經(jīng)元-路由器接口 170接收緩存一幀數(shù)據(jù)后,以核控制 器300輸出的當(dāng)前神經(jīng)元周作路由信息表160的輸入,提取路由信息表160中存儲 的不同神經(jīng)元目標(biāo)地址,并將地址與讀取的神經(jīng)元輸出進(jìn)行組幀,同時檢測目標(biāo)發(fā)送緩存 是否為滿,若為滿則不作處理同時跳至讀取下一方向接收緩存,若不為滿則將處理后的數(shù) 據(jù)幀送入發(fā)送緩存中等待發(fā)送,同時清除神經(jīng)元-路由器接口 170接收緩存中被解析數(shù)據(jù)幀 并向核控制器300發(fā)送本幀數(shù)據(jù)處理完成標(biāo)志R_N_data_done,驅(qū)動核控制器300進(jìn)入下一 神經(jīng)元周期。所述神經(jīng)元-路由器接口 170在神經(jīng)元計算模塊200發(fā)出數(shù)據(jù)有效標(biāo)志N_data_ en后,若接收緩存未滿則啟動接收一幀數(shù)據(jù),若接收緩存已滿則保持接收等待。神經(jīng)元計算 模塊200在向神經(jīng)元-路由器接口 170成功發(fā)送一幀數(shù)據(jù)后清空數(shù)據(jù)有效標(biāo)志N_data_en。
[0044] 所述路由信息表160中存儲的是不同神經(jīng)元的目標(biāo)地址,輸入為當(dāng)前神經(jīng)元周期, 輸出為對應(yīng)的目標(biāo)地址。
[0045] 所述人工神經(jīng)網(wǎng)絡(luò)計算核20運(yùn)行流程包括路由器數(shù)據(jù)收發(fā)和神經(jīng)元計算模塊計 算結(jié)果發(fā)送兩個部分,請參見圖6,所述路由器數(shù)據(jù)收發(fā)包含以下步驟: S101,路由器模塊100等待接收神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包; S102,路由器模塊100接收到神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包并解析; 5103, 路由器模塊100判斷接收到的神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包是否發(fā)往本地,若是則執(zhí)行S105, 若否則執(zhí)行S104; 5104, 按先左右后上下的順序?qū)⒃撋窠?jīng)網(wǎng)絡(luò)數(shù)據(jù)包中目標(biāo)核地址減1后送入發(fā)送緩存, 返回S101; S105,將該神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包中的軸突地址和軸突值送入神經(jīng)元計算模塊200,該神經(jīng)網(wǎng) 絡(luò)數(shù)據(jù)包被傳遞至每個神經(jīng)元計算單元; 5106, 每個神經(jīng)元計算單元判斷所述軸突地址是否與自身存儲地址匹配,若是則執(zhí)行 S107,若否則返回S101; 5107, 神經(jīng)元計算單元輸出與所述軸突地址對應(yīng)的權(quán)重值,將該權(quán)重值與所述軸突值 相乘后送入累加器,返回S101。
[0046] 請參見圖7,所述神經(jīng)元計算模塊200計算結(jié)果發(fā)送包含以下步驟: S201,等待全局時鐘觸發(fā)生效; 5202, 判斷全局時鐘觸發(fā)是否生效,若是則執(zhí)行S203,若否則返回S201; 5203, 將各神經(jīng)元計算模塊累加器結(jié)果鎖存至對應(yīng)的發(fā)送緩存及接口; 5204, 判斷各發(fā)送緩存及接口是否接收到對應(yīng)的核控制器發(fā)出的比較脈沖,若是則執(zhí) 行S205,若否則返回S204; 5205, 讀取地址數(shù)值與當(dāng)前神經(jīng)元周期相同的神經(jīng)元計算模塊發(fā)送緩存中及接口中的 數(shù)據(jù); S206,判斷該數(shù)據(jù)是否有效,若是則執(zhí)行S207,若否則執(zhí)行S215; S207,將該數(shù)據(jù)輸入函數(shù)查找表并輸出結(jié)果; 5208, 判斷該輸出結(jié)果是否有效,若是則執(zhí)行S209,若否則執(zhí)行S215; 5209, 將該輸出結(jié)果送至緩存等待路由器接收,清零對應(yīng)神經(jīng)元累加器; 5210, 等待路由器空閑,若路由器空閑則執(zhí)行S211,若路由器不空閑則返回S210; S211,路由器模塊啟動一次神經(jīng)元計算模塊緩存數(shù)據(jù)接收; 5212, 判斷神經(jīng)元計算模塊發(fā)出信息是否處理完成,若是則執(zhí)行S213,若否則返回 S212; 5213, 路由器模塊向核控制器發(fā)信息處理完成脈沖; 5214, 核控制器判斷是否最后一個神經(jīng)元周期,若是則返回S201,若否則執(zhí)行S216; 5215, 向核控制器發(fā)信息數(shù)據(jù)無效脈沖; 5216, 核控制器驅(qū)動神經(jīng)元周期更替,發(fā)出比較脈沖,返回S204。
[0047]本發(fā)明第四實(shí)施例提供的人工神經(jīng)網(wǎng)絡(luò)計算核20采用單路由器單神經(jīng)元計算模 塊的工作方式,通過路由器模塊100實(shí)現(xiàn)多個人工神經(jīng)網(wǎng)絡(luò)計算核20的組網(wǎng)。
[0048]本發(fā)明第五實(shí)施例提供一種人工神經(jīng)網(wǎng)絡(luò)計算核,包括一路由器模塊、多個神經(jīng) 元計算模塊、多個核控制器,所述多個神經(jīng)元計算模塊與所述多個核控制器一一對應(yīng)。本實(shí) 施例與第三實(shí)施例區(qū)別在于,第三實(shí)施例為單路由單神經(jīng)元計算模塊的配置,而本實(shí)施例 為單路由多神經(jīng)元計算模塊的配置,即單一路由器模塊可與多個神經(jīng)元計算模塊建立聯(lián) 接。
[0049]本實(shí)施例具體以單路由四神經(jīng)元計算模塊為例進(jìn)行說明,實(shí)際應(yīng)用中經(jīng)元計算模 塊的數(shù)量可以根據(jù)具體需求而做適當(dāng)?shù)淖兓?。請參見圖8,一種人工神經(jīng)網(wǎng)絡(luò)計算核30,包 括路由器模塊400、第一神經(jīng)元計算模塊200a、第一核控制器300a、第二神經(jīng)元計算模塊 200b、第二核控制器300b、第三神經(jīng)元計算模塊200c、第三核控制器300c、第四神經(jīng)元計算 模塊200d、第四核控制器300d。
[0050]所述路由器模塊400與第三實(shí)施例中的路由器模塊100區(qū)別在于,路由器模塊400 包括了多個神經(jīng)元-路由器接口,即第一神經(jīng)元-路由器接口 471、第二神經(jīng)元-路由器接口 472、第三神經(jīng)元-路由器接口 473、第四神經(jīng)元-路由器接口 474。每組核控制器、神經(jīng)元計算 模塊、神經(jīng)元-路由器接口分別同路由控制器410按實(shí)施例三中單路由單神經(jīng)元計算模塊的 配置方式建立聯(lián)接。
[0051]本發(fā)明第四實(shí)施例提供的人工神經(jīng)網(wǎng)絡(luò)計算核30中一個路由器模塊對應(yīng)多個神 經(jīng)元計算模塊,若該多個神經(jīng)元計算模塊具有相同或相近的功能,可以實(shí)現(xiàn)聚類計算,可降 低路由器節(jié)點(diǎn)數(shù)、提高傳輸帶寬。實(shí)現(xiàn)計算核的柔性拓展以及存儲資源的有效利用,以增強(qiáng) 計算核的適應(yīng)性,避免額外的資源開銷。
[0052]請參見圖9,本發(fā)明進(jìn)一步提供一種人工神經(jīng)網(wǎng)絡(luò)計算系統(tǒng),包括多個人工神經(jīng)網(wǎng) 絡(luò)計算核40,該多個人工神經(jīng)網(wǎng)絡(luò)計算核40通過路由器模塊100實(shí)現(xiàn)多個方向的相互聯(lián)接。 實(shí)施例中僅給出了包含有9個人工神經(jīng)網(wǎng)絡(luò)計算核40的情形,且每一人工神經(jīng)網(wǎng)絡(luò)計算核 40包含有4個發(fā)送接收緩存及接口,實(shí)現(xiàn)上下左右4個方向的相互聯(lián)接??梢岳斫猓瑢?shí)際應(yīng)用 中人工神經(jīng)網(wǎng)絡(luò)計算核的數(shù)目及每一人工神經(jīng)網(wǎng)絡(luò)計算核中包含的發(fā)送接收緩存及接口 數(shù)目可以依據(jù)實(shí)際的應(yīng)用情形而改變。
[0053]本實(shí)施例提供了一種通過將多個人工神經(jīng)網(wǎng)絡(luò)計算核40組網(wǎng)形成的人工神經(jīng)網(wǎng) 絡(luò)計算系統(tǒng),實(shí)現(xiàn)了多人工神經(jīng)網(wǎng)絡(luò)計算核40的網(wǎng)絡(luò)連接。
[0054]另外,本領(lǐng)域技術(shù)人員還可以在本發(fā)明精神內(nèi)做其它變化,當(dāng)然,這些依據(jù)本發(fā)明 精神所做的變化,都應(yīng)包含在本發(fā)明所要求保護(hù)的范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于,包括:一路由器模塊、至少一神經(jīng)元計算模 塊、至少一核控制器,所述神經(jīng)元計算模塊與所述核控制器一一對應(yīng); 所述路由器模塊,用于接收并解析外部輸入數(shù)據(jù),并將解析后的地址信息和軸突值信 息送入對應(yīng)的神經(jīng)元計算模塊; 所述神經(jīng)元計算模塊,用于進(jìn)行神經(jīng)元計算,并將神經(jīng)元計算結(jié)果發(fā)送至所述路由器 模塊; 所述路由器模塊,還用于將所述神經(jīng)元計算模塊輸出的神經(jīng)元計算結(jié)果發(fā)送至目標(biāo)地 址,并向該神經(jīng)元計算模塊對應(yīng)的核控制器發(fā)送本幀數(shù)據(jù)處理完成標(biāo)志; 所述核控制器,用于在接收到所述本幀數(shù)據(jù)處理完成標(biāo)志后進(jìn)入下一神經(jīng)元周期。2. 如權(quán)利要求1所述的人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于,該人工神經(jīng)網(wǎng)絡(luò)計算核包括 一路由器模塊、N個神經(jīng)元計算模塊、N個核控制器,所述N個神經(jīng)元計算模塊與所述N個核控 制器一一對應(yīng),N為大于1的整數(shù)。3. 如權(quán)利要求1所述的人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于, 所述核控制器,還用于向自身對應(yīng)的神經(jīng)元計算模塊發(fā)出神經(jīng)元周期和比較脈沖; 所述神經(jīng)元計算模塊,還用于在接收到自身對應(yīng)的核控制器發(fā)出的比較脈沖后,讀取 地址數(shù)值與當(dāng)前神經(jīng)元周期相同的神經(jīng)元地址有效標(biāo)志,若為有效則將該神經(jīng)元計算結(jié)果 進(jìn)行轉(zhuǎn)換,若為無效則向自身對應(yīng)的核控制器發(fā)出數(shù)據(jù)無效標(biāo)志; 所述神經(jīng)元計算模塊,還用于判斷轉(zhuǎn)換后的神經(jīng)元計算結(jié)果是否有效,若為有效則將 該換后的神經(jīng)元計算結(jié)果發(fā)送至所述路由器模塊,若為無效則向自身對應(yīng)的核控制器發(fā)出 數(shù)據(jù)無效標(biāo)志; 所述核控制器,還用于在接收到自身對應(yīng)的神經(jīng)元計算模塊發(fā)送的數(shù)據(jù)無效標(biāo)志后進(jìn) 入下一神經(jīng)元周期。4. 如權(quán)利要求3所述的人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于,所述神經(jīng)元計算模塊包括多 個神經(jīng)元計算單元、發(fā)送緩存及接口、函數(shù)信息表; 所述多個神經(jīng)元計算單元,接收并解析所述路由器模塊發(fā)送的地址信息和軸突值信 息,若接收到的地址信息與神經(jīng)元計算單元自身存儲的地址信息匹配,則該神經(jīng)元計算單 元對該接收到的信息進(jìn)行神經(jīng)網(wǎng)絡(luò)計算,并將計算結(jié)果及地址有效標(biāo)志發(fā)送至所述發(fā)送緩 存及接口,若接收到的地址信息與神經(jīng)元計算單元自身存儲的地址信息不匹配,則不對該 接收到的信息進(jìn)行神經(jīng)網(wǎng)絡(luò)計算; 所述發(fā)送緩存及接口,用于在外部全局時鐘觸發(fā)時將所述多個神經(jīng)元計算單元的計算 結(jié)果及地址有效標(biāo)志進(jìn)行鎖存,并清零所述多個神經(jīng)元計算單元的地址有效標(biāo)志;以及在 接收到自身對應(yīng)的核控制器發(fā)出的比較脈沖后,讀取序號與當(dāng)前神經(jīng)元周期相同的神經(jīng)元 地址有效標(biāo)志,若為有效,所述發(fā)送緩存及接口將該神經(jīng)元計算結(jié)果送入所述函數(shù)信息表 并獲取轉(zhuǎn)換結(jié)果,若為無效,所述發(fā)送緩存及接口向自身對應(yīng)的核控制器發(fā)出數(shù)據(jù)無效標(biāo) 志; 所述函數(shù)信息表,將所述神經(jīng)元計算結(jié)果轉(zhuǎn)換為對應(yīng)的函數(shù)值; 所述發(fā)送緩存及接口,還用于判斷所述轉(zhuǎn)換結(jié)果是否有效,若為有效,所述發(fā)送緩存及 接口將該轉(zhuǎn)換結(jié)果輸出,若為無效,所述發(fā)送緩存及接口向自身對應(yīng)的核控制器發(fā)出數(shù)據(jù) 無效標(biāo)志。5. 如權(quán)利要求4所述的人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于,所述路由器模塊進(jìn)一步包 括:神經(jīng)元-路由器接口、路由控制器、路由信息表、核間交互緩存及接口; 所述神經(jīng)元-路由器接口,用于接收所述神經(jīng)元計算模塊輸出的神經(jīng)元計算結(jié)果; 所述路由控制器,用于讀取所述神經(jīng)元-路由器接口輸出的的神經(jīng)元計算結(jié)果,以及將 與該神經(jīng)元計算模塊對應(yīng)的核控制器輸出的當(dāng)前神經(jīng)元周期發(fā)送至所述路由信息表; 所述路由信息表,用于存儲不同神經(jīng)元的目標(biāo)地址,將所述路由控制器輸入的當(dāng)前神 經(jīng)元周期轉(zhuǎn)換為對應(yīng)的目標(biāo)地址; 所述路由控制器,還用于將所述路由信息表輸出的目標(biāo)地址與所述神經(jīng)元計算結(jié)果組 成第一數(shù)據(jù)幀,并將該第一數(shù)據(jù)幀送入所述核間交互緩存及接口; 所述核間交互緩存及接口,用于發(fā)送所述第一數(shù)據(jù)幀。6. 如權(quán)利要求5所述的人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于,所述第一數(shù)據(jù)幀包括: 目標(biāo)核地址字段,存儲目標(biāo)人工神經(jīng)網(wǎng)絡(luò)計算核地址; 核內(nèi)神經(jīng)元計算模塊地址字段,存儲目標(biāo)人工神經(jīng)網(wǎng)絡(luò)計算核內(nèi)目標(biāo)神經(jīng)元計算模塊 地址; 軸突地址字段,存儲目標(biāo)神經(jīng)元計算模塊內(nèi)目標(biāo)神經(jīng)元計算單元地址; 神經(jīng)元輸出字段,存儲神經(jīng)元計算結(jié)果。7. 如權(quán)利要求6所述的人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于, 所述核間交互緩存及接口,還用于接收外部神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包; 所述路由控制器,還用于解析所述外部神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包,若所述外部神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包 為發(fā)送至本地的數(shù)據(jù)包,則將該外部神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包中的軸突地址和軸突值送入目標(biāo)神經(jīng) 元計算模塊,若所述外部神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包不為發(fā)送至本地的數(shù)據(jù)包,則對該外部神經(jīng)網(wǎng)絡(luò) 數(shù)據(jù)包中的目標(biāo)核地址進(jìn)行更新,并將該更新后的外部神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包送入所述核間交互 緩存及接口。8. 如權(quán)利要求7任一權(quán)利要求所述的人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于,所述神經(jīng)元-路由器接口采用串行外設(shè)接口,該串行外設(shè)接口作為發(fā)送方時工作于從模式,作為接收方 時工作于主模式。9. 如權(quán)利要求8任一權(quán)利要求所述的人工神經(jīng)網(wǎng)絡(luò)計算核,其特征在于,所述核間交互 緩存及接口采用串行外設(shè)接口,該串行外設(shè)接口作為發(fā)送方時工作于從模式,作為接收方 時工作于主模式。10. -種如權(quán)利要求9所述的人工神經(jīng)網(wǎng)絡(luò)計算核的數(shù)據(jù)接收方法,其特征在于,包括 以下步驟: S101,所述路由器模塊等待接收神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包; 5102, 所述路由器模塊接收到神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包并解析; 5103, 所述路由器模判斷接收到的神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包是否發(fā)往本地,若是則執(zhí)行S105,若 否則執(zhí)行S104; 5104, 按先左右后上下的順序?qū)⒃撋窠?jīng)網(wǎng)絡(luò)數(shù)據(jù)包中目標(biāo)核地址減1后送入發(fā)送緩存, 返回S101; 5105, 將該神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)包中的軸突地址和軸突值送入神經(jīng)元計算模塊,該神經(jīng)網(wǎng)絡(luò) 數(shù)據(jù)包被傳遞至每個神經(jīng)元計算單元; 5106, 每個神經(jīng)元計算單元判斷所述軸突地址是否與自身存儲地址匹配,若是則執(zhí)行 S107,若否則返回S101; 5107, 神經(jīng)元計算單元輸出與所述軸突地址對應(yīng)的權(quán)重值,將該權(quán)重值與所述軸突值 相乘后送入累加器,返回S101。11. 一種如權(quán)利要求9所述的人工神經(jīng)網(wǎng)絡(luò)計算核的數(shù)據(jù)發(fā)送方法,其特征在于,包括 以下步驟: S201,等待全局時鐘觸發(fā)生效; 5202, 判斷全局時鐘觸發(fā)是否生效,若是則執(zhí)行S203,若否則返回S201; 5203, 將各神經(jīng)元計算模塊累加器結(jié)果鎖存至對應(yīng)的發(fā)送緩存及接口; 5204, 判斷各發(fā)送緩存及接口是否接收到對應(yīng)的核控制器發(fā)出的比較脈沖,若是則執(zhí) 行S205,若否則返回S204; 5205, 讀取地址數(shù)值與當(dāng)前神經(jīng)元周期相同的神經(jīng)元計算模塊發(fā)送緩存中及接口中的 數(shù)據(jù); S206,判斷該數(shù)據(jù)是否有效,若是則執(zhí)行S207,若否則執(zhí)行S215; S207,將該數(shù)據(jù)輸入函數(shù)查找表并輸出結(jié)果; 5208, 判斷該輸出結(jié)果是否有效,若是則執(zhí)行S209,若否則執(zhí)行S215; 5209, 將該輸出結(jié)果送至緩存等待路由器接收,清零對應(yīng)神經(jīng)元累加器; 5210, 等待路由器空閑,若路由器空閑則執(zhí)行S211,若路由器不空閑則返回S210; S211,路由器模塊啟動一次神經(jīng)元計算模塊緩存數(shù)據(jù)接收; 5212, 判斷神經(jīng)元計算模塊發(fā)出信息是否處理完成,若是則執(zhí)行S213,若否則返回 S212; 5213, 路由器模塊向核控制器發(fā)信息處理完成脈沖; 5214, 核控制器判斷是否最后一個神經(jīng)元周期,若是則返回S201,若否則執(zhí)行S216; 5215, 向核控制器發(fā)信息數(shù)據(jù)無效脈沖; S216,核控制器驅(qū)動神經(jīng)元周期更替,發(fā)出比較脈沖,返回S204。
【文檔編號】G06N3/063GK106056212SQ201610354206
【公開日】2016年10月26日
【申請日】2016年5月25日
【發(fā)明人】馬騁, 張震, 王世凱, 李晶, 熊劍平, 朱榮
【申請人】清華大學(xué)