欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

神經(jīng)處理單元的制作方法

文檔序號:6361028閱讀:247來源:國知局
專利名稱:神經(jīng)處理單元的制作方法
技術領域
本申請涉及數(shù)據(jù)處理,具體地,涉及基于神經(jīng)的處理。
背景技術
可以基于限定神經(jīng)元、樹突和軸突的行為的各種神經(jīng)模型來實施基于神經(jīng)的數(shù)據(jù)處理。在一些實例中,可利用數(shù)量巨大的平行神經(jīng)元和這些神經(jīng)元之間的連接來實施基于神經(jīng)的數(shù)據(jù)處理?;谏窠?jīng)的處理的平行性質(zhì)使得其十分適于處理諸如數(shù)據(jù)處理、信號處理、預測、分類的任務及類似任務。

發(fā)明內(nèi)容
本文公開的主題提供了用于神經(jīng)處理的方法、裝置和制造物品。一方面,提供了一種方法。該方法可包括從第一存儲器讀取基于至少一個連接值存儲的上下文信息(context information);從第二存儲器讀取與所述至少一個連接值相匹配的激活值;通過第一處理器將上下文信息和激活值發(fā)送至多個微引擎中的至少一個微引擎,從而將所述至少一個微引擎配置為神經(jīng)元;及在所述至少一個微引擎上生成表示神經(jīng)元的輸出的值。方法的實施方式包括本文描述的一個或多個特征(包括下述特征中的一個或多個)。從第一存儲器讀取還可包括讀取包括上下文信息的數(shù)據(jù)結構,該上下文信息基于用于在多個微引擎上實施的神經(jīng)元的連接值而連續(xù)地存儲在存儲器中。數(shù)據(jù)結構可包括多個塊,多個塊中的每一個塊均包括限定在神經(jīng)元上的執(zhí)行的類型、表示包括至少一個連接值的上下文信息在第一存儲器中的存儲位置的第一地址以及表示激活值在第二存儲器中的存儲位置的第二地址。數(shù)據(jù)結構可包括多個順序塊,多個順序塊中的每一個均包括連接值以及神經(jīng)元類型,該神經(jīng)元類型限定實施在多個微引擎中的一個上的相應神經(jīng)元。順序塊可作為包被發(fā)送至多個微引擎中的至少一個,并且其中,多個微引擎中的每一個均包括至少一個處理器和至少一個存儲器。數(shù)據(jù)結構可包括多個順序塊,每個順序塊均包括神經(jīng)元類型和用于相應神經(jīng)元的多個連接值。第一處理器可與第一存儲器相連以使得能夠從第一存儲器讀取。可在至少一個微引擎上基于上下文信息和激活值生成值,而不訪問第一存儲器和第二存儲器以獲得額外的上下文信息。第一存儲器和第二存儲器可實施在集成電路的同一存儲器中。生成的值可至少發(fā)送至第二存儲器。還描述了包括有形嵌入的機器可讀介質(zhì)的物品,該機器可讀介質(zhì)是可操作的以使得一個或多個機器(例如計算機等)實施本文描述的操作。類似地,還描述了可包括處理器和連接至處理器的存儲器的系統(tǒng)。存儲器可包括一個或多個程序,該程序使得處理器執(zhí)行本文描述的一項或多項操作。本文描述的主題的一種或多種變形的詳情在附圖和下文的說明書中闡述。根據(jù)說明書、附圖以及權利要求,本文描述的主題的特征和優(yōu)點將變得顯而易見。


附圖中圖I示出了神經(jīng)元的框圖;圖2示出了神經(jīng)處理單元(NPU)的框圖;圖3A-B示出了用于順序存儲背景信息的數(shù)據(jù)結構的實例; 圖4示出了用于基于背景信息配置神經(jīng)元的方法;圖5示出了神經(jīng)處理單元的另一框圖;圖6示出了包括多個神經(jīng)處理單元的系統(tǒng)的框圖;圖7示出了用于配置神經(jīng)元的另一方法;圖8示出了配置用于基于上下文信息實施神經(jīng)元的微引擎的實例。圖9示出了包括多個神經(jīng)處理單元的系統(tǒng)的框圖。類似的標記可能指示相同或類似的元件。
具體實施例方式本文公開的主題涉及由包括上下文信息的至少一個包配置的神經(jīng)處理單元(NPU)。如本文所使用的,上下文信息指用于將處理器配置為神經(jīng)處理單元的信息。此外,即使不是全部的上下文信息,也是一部分上下文信息可以基于連接值順序地存儲在存儲器中以通過神經(jīng)處理單元輔助處理。在解釋神經(jīng)處理單元的詳情之前,下文提供了對由利用神經(jīng)處理單元實施的神經(jīng)元所執(zhí)行的處理的描述。圖I描述了包括神經(jīng)元Aj 150的系統(tǒng)100,神經(jīng)元150可由神經(jīng)處理單元實施。盡管圖I描述了單個神經(jīng)元150,但系統(tǒng)100也可包括多個神經(jīng)元。神經(jīng)元150可基于激活值Ai (t-Ι)(對應于Atl-A8) 160A-I、連接Wi jl65A_I (標記為C?!怪羉8j)以及輸入值110A-I (標記為Stl-S8)生成輸出Aj⑴170。輸入值110A-I可能接收自其他神經(jīng)元的輸出、存儲器和/或提供值(例如電壓值)的一個或多個傳感器。激活值Ai(t-l)可接收自存儲器并可對應于輸出(例如,系統(tǒng)100的先前周期或時期(例如,在t-Ι時)的先前激活值),然而,激活值也可以由主計算機提供。連接Wij 165A-I (也被稱為權值、連接權值和連接值)可接收自存儲器和/或由主計算機提供。通過示例性的方式說明,在給定時間t,每個激活值160A-I都被乘以一個相應的連接165A-I。例如,連接權值c。」165A乘以激活值Atl 160A,連接權值Clj 165B乘以激活值A1 160B,以此類推。隨后對結果(即,連接和激活值的乘法的結果)求和,最終的和值經(jīng)由基底函數(shù)K的運算以在時間t為節(jié)點Aj 150產(chǎn)生輸出Aj(t) 170。輸出170可在隨后的時間(例如,在t+Ι時)用作激活值。系統(tǒng)100可包括多個神經(jīng)元,例如神經(jīng)元150,并且每個神經(jīng)元可實施在本文描述的神經(jīng)處理單元上。此外,可根據(jù)神經(jīng)模型配置神經(jīng)元,神經(jīng)模型的實例如下
紇(,) =尺等式I
I = …其中K對應于基底函數(shù)(其實例包括sigmoid函數(shù)、小波函數(shù)以及任意其他基底函數(shù)), Aj⑴對應于由給定神經(jīng)元(例如,第j個神經(jīng)元)在給定時間t提供的輸出值,Ai (t-Ι)對應于在先前時間t-Ι時用于第j個神經(jīng)元的分配給連接i的在先輸出值(或激活值),Wij表示用于第j個神經(jīng)元的第i個連接值,j根據(jù)神經(jīng)元的數(shù)量而變化并識別給定神經(jīng)元,i從O到η-1變化,以及η對應于至神經(jīng)元的連接的數(shù)量。盡管本說明書將等式I作為神經(jīng)模型的實例,但其他模型也可以用于限定神經(jīng)元的類型。此外,在一些實施中,每個連接可以與多種神經(jīng)元類型中的一種相關聯(lián)。例如,連接Wij 165A-C可以實施對應于第一種類型神經(jīng)元的第一神經(jīng)模型,而連接Wij 16OT-E可以實施對應于第二種類型神經(jīng)元的第二神經(jīng)模型。在該實例中,上下文信息將包括連接值以及表示神經(jīng)元類型的信息。圖2描述了配置用于操作為神經(jīng)元(例如上文關于圖I描述的神經(jīng)元150)的神經(jīng)處理單元200的示例性實施方式。神經(jīng)處理單元200包括第一存儲器(例如順序存儲器205)、處理器210、第二存儲器(例如靜態(tài)隨機存取存儲器215 (標記為SRAM))以及一個或多個處理器(例如一個或多個配置為實施神經(jīng)元的微引擎220Α-Ε)。盡管圖2描述了單個神經(jīng)處理單元200,但在一些實施中,系統(tǒng)可包括多個神經(jīng)處理單元。例如,多個神經(jīng)處理單元可實施在集成電路和/或專用集成電路上以提供神經(jīng)處理系統(tǒng)。順序存儲器205可以實施為任意類型的存儲器,例如隨機存取存儲器、動態(tài)隨機存取存儲器、雙數(shù)據(jù)率同步動態(tài)存取存儲器、閃存、鐵電隨機存取存儲器、機械、磁盤驅動器、光驅動器以及類似物。順序存儲器205可包括上下文信息,上下文信息如果不包括所有的,也包括一些用于將微引擎(例如微引擎220Α)配置為神經(jīng)元的信息。例如,順序存儲器205可包括數(shù)據(jù)結構,該數(shù)據(jù)結構包括下列各項中的一項或多項神經(jīng)元的標識(例如,正在配置j個神經(jīng)元中的哪一個);每個連接i的連接值Wij,使用的基底函數(shù)K的表示和/或先前激活值Ai (t-Ι)。在一些實施中,從順序存儲器205以包格式獲得上下文信息。術語“包”指包括上下文信息和/或指向上下文信息的指針的容器。包提供連接值和其他信息(例如,配置神經(jīng)元類型的指令,基底函數(shù)K的表示,第j個神經(jīng)元的標識,等等),但從另一存儲器(例如,靜態(tài)隨機存取存儲器215)獲得先前激活值Ai (t-Ι)。讀取自順序存儲器205的包可包括配置為結合圖3A-3B描述的數(shù)據(jù)結構的上下文信息。在一些實施中,順序存儲器205還可從主計算機接收上下文信息。處理器210可實施為任意類型的處理器,例如,配置為處理超長指令字(VLIW)的中央處理器單元,然而也可以使用其他類型的處理器。處理器210可從順序存儲器205檢索上下文信息(格式化為一個或多個包)。一個或多個額外的神經(jīng)處理單元(也被稱為簇)可從處理器210接收上下文信息,并且/或者經(jīng)由連接230為處理器210提供上下文信息。處理器210還可存儲和/或檢索中間值,例如來自靜態(tài)隨機存取存儲器215的先前激活值Ai (t-Ι)。處理器210可將包括從存儲器205獲得的上下文信息以及任意中間值(例如,從靜態(tài)隨機存取存儲器215獲得的先前激活值Ai (t-Ι))的包路由至微引擎,從而將微引擎配置為神經(jīng)元。在一些實施中,存儲器205中的上下文信息被組織在順序塊中,如下文結合圖3A-3B描述的那樣。從存儲器205中的順序塊讀取存儲器205中的上下文信息以將微引擎配置為神經(jīng)元。此外,如果系統(tǒng)包括多個神經(jīng)元,則處理器210可將包括上下文信息的一組包路由至每個微引擎220A-E,從而將每個微引擎配置為根據(jù)模型(例如上文中等式I的神經(jīng)模型)運行的神經(jīng)元。此外,可以為每個連接、神經(jīng)元和/或時期持續(xù)地重復微引擎的配·置和執(zhí)行。每個微引擎220A-E可實施為處理器,例如,中央處理單元、精簡指令集處理器及類似物。在利用精簡指令集處理器的實施中,精簡指令集處理器的功能可能被限制,由此降低了芯片(例如集成電路)上使用的空間/尺寸。在任意情況下,微引擎220A-E都可以通過處理器210提供的上下文信息來配置,從而使得神經(jīng)元能夠實施在微引擎上。圖3A描述了存儲在順序存儲器(例如順序存儲器205)中的數(shù)據(jù)結構300的實例。在圖3A的實例中,順序存儲器被配置為順序地存儲可讀取和/或寫入的上下文信息的塊310A-B,直到數(shù)據(jù)結構300的末端,隨后,讀取和/或寫入將在存儲器的起始端(例如塊310A)重新開始。塊310A-B對應于神經(jīng)元處理系統(tǒng)的多個神經(jīng)元中的每一個。例如,對于給定的神經(jīng)元(例如第j個神經(jīng)元),塊310A可存儲上下文信息。具體地,塊310A可包括限定神經(jīng)元類型320的信息。類型320限定了神經(jīng)元的種類以及執(zhí)行神經(jīng)元的方式。例如,類型320可限定神經(jīng)模型、限定第j個神經(jīng)元使用的等式I或基底函數(shù)K。在該實例中,神經(jīng)元類型可具有相應的代碼組,該代碼組加載到微引擎中以使得微引擎能夠處理上下文信息并生成輸出。此外,在一些實施中,支持多種神經(jīng)元類型,從而系統(tǒng)利用用于上下文信息中表示的神經(jīng)元類型的相應代碼組配置微引擎。塊310A中的上下文信息也可包括用在順序存儲器中的地址330以存儲塊310A。地址330使得當塊310A的內(nèi)容改變時能夠寫回到順序存儲器中,例如通過改變用于學習和塑性的權值。塊310A中的上下文信息也可包括激活地址340,該激活地址340與塊310A的神經(jīng)元的給定連接相關聯(lián)。舉例來說,激活地址340可使得能夠從靜態(tài)隨機存取存儲器215加載塊310A中正使用的連接的激活值。塊310A還可包括使用的連接值350A-N。例如,對于具有10個連接的給定神經(jīng)元j,塊3IOA將包括對應于Wtlj至W9j的10個連接值。數(shù)據(jù)結構300可以為每個由中央處理系統(tǒng)實施的神經(jīng)元包括其他塊,例如塊310B或類似物。數(shù)據(jù)結構300的使用可允許為每個神經(jīng)元順序地讀取上下文信息(格式化為基于包的格式),并且隨后在微引擎上配置和執(zhí)行這些神經(jīng)元。在一些實施中,數(shù)據(jù)結構300可以在神經(jīng)元的微引擎執(zhí)行期間減小(如果沒有消除的話)由微引擎對存儲器205和215的低效、隨機、存儲器讀取。
圖3B描述了存儲在順序存儲器中的數(shù)據(jù)結構305的另一實例。在圖3B的示例中,每個塊390A-C可包括用于神經(jīng)元的單個連接值。具體地,塊390A包括第一連接350A和用于配置第一神經(jīng)元的其他上下文信息320-340,塊390B包括第一連接值333和用于配置第二神經(jīng)元的其他上下文信息,以此類推,直到一組神經(jīng)元的所有第一連接值已經(jīng)配置為執(zhí)行。一旦執(zhí)行,舉例來說,輸出激活值可存儲在靜態(tài)隨機存取存儲器215中,隨后,處理用于神經(jīng)元的下一組連接。塊390C包括第二連接350B和用于配置第一神經(jīng)元的其他上下文信息。一旦利用第二連接值配置,就處理用于神經(jīng)元的第二組連接,產(chǎn)生另一組輸出激活值??梢詾橹辽窠?jīng)元的每個連接重復該過程,直到所有的連接都被處理,此時,該過程從數(shù)據(jù)結構305的塊390A上的第一連接開始重復。在一些實施方式中,當處理器執(zhí)行神經(jīng)模型并檢索執(zhí)行該模型所需的數(shù)據(jù)時,數(shù)據(jù)結構300和305可降低存儲器存取的數(shù)量。例如,在典型的未根據(jù)本文描述的數(shù)據(jù)結構配置的微處理器中,舉例來說,由于從O至n、l至i以及I至j的索引,微處理器將需要對存儲器進行大量的數(shù)據(jù)隨機抽取,從而執(zhí)行等式I的神經(jīng)模型。相比之下,在一些實施中, 本文描述的微引擎可以通過連續(xù)地將存儲器中的如示例性數(shù)據(jù)結構300和305中所述的上下文信息排序而降低(如果沒有消除的話)隨機抽取次數(shù)。此外,在一些實施中,系統(tǒng)200的隨機抽取可以被限制為處理器205從靜態(tài)隨機存取存儲器215檢索激活值。在一些實施中,第一處理器(例如處理器210)處理所有的從存儲器205和215的與上文所述的索引相關聯(lián)的存儲器抽取,并且第二處理器(例如微引擎)在不存取存儲器205和215的情況下實施神經(jīng)元。此外,微引擎可配置為利用從其寄存器存儲器(下文結合圖5描述)存取的數(shù)據(jù)運行神經(jīng)元。此外,在一些實施中,包括第一和第二處理器的該系統(tǒng)可有助于高效地處理,舉例來說,尤其是在與神經(jīng)模型(例如等式I)關聯(lián)的稀疏矩陣的情況下。圖4描述了方法400,其可以由本文描述的神經(jīng)處理系統(tǒng)實施。圖4的描述也涉及圖2和圖3A-3B。在步驟492,處理器210可以從存儲器205順序地讀取。這種順序讀取可包括從存儲器205中的連續(xù)地址的塊中讀取包括上下文信息的多個包中的至少一個。例如,可以如圖3A-B中描述的那樣在塊中順序地讀取數(shù)據(jù)。上下文信息可包括用于根據(jù)神經(jīng)模型(例如等式I)將微引擎配置為神經(jīng)元的信息。例如,從順序存儲器205中接收的包可提供連接值和其他信息(例如,表明神經(jīng)元類型的指令、激活值,等等)以配置神經(jīng)元。在步驟493中,處理器210還可以從靜態(tài)隨機存取存儲器215讀取先前激活值Ai (t-Ι)。參考圖3A-B,處理器210可接收包括連接值350A、神經(jīng)元類型320、順序存儲器中的地址330以及靜態(tài)隨機存取存儲器215中的地址340的包。處理器210隨后可利用地址340定位靜態(tài)隨機存取存儲器215,并隨后利用查找表確定對應于連接值350A的激活值。在步驟494中,處理器210可將上下文信息和激活值轉發(fā)至微引擎中以配置微引擎。例如,處理器210可將包括上下文信息(例如,連接值350A、神經(jīng)元類型320以及類似物)和從靜態(tài)隨機存取存儲器215獲得的激活值的至少一個包轉發(fā)至微引擎220A中。當微引擎接收至少一個包時,微引擎220A可基于神經(jīng)元類型(例如,通過加載用于由神經(jīng)元類型320表示的神經(jīng)元類型的代碼組/指令)配置其自身并且隨后利用連接值350A、激活值和其他可提供給微引擎的上下文信息執(zhí)行神經(jīng)元。在步驟496中,配置的至少一個微引擎為給定的時間t生成輸出,例如Aj (t)。輸出Aj(t)也可提供給處理器210,而處理器210可將輸出Aj (t)路由至靜態(tài)隨機存取存儲器215或其他神經(jīng)處理單元230??梢詾橄到y(tǒng)的每個連接、神經(jīng)元和/或時期重復方法290。圖5描述了神經(jīng)處理單元500的另一示例性實施。神經(jīng)處理單元500在一些方面類似于系統(tǒng)200,但還包括存儲器接口 505、應用接口 510和調(diào)度器520。存儲器接口 505連接至順序存儲器205和處理器210,并且應用接口 510連接至處理210和調(diào)度器520,調(diào)度器520進一步連接至微引擎220A-E。存儲器接口 505控制對順序存儲器205的存取。例如,存儲器接口 505可以順序地索引至存儲器205中,從而檢測傳遞給處理器210的上下文信息的下一個包。處理器210還可以配置為路由器。當處理器210以包的形式從順序存儲器205和/或存儲器215接收上下文信息時,處理器210隨后可將基于包的上下文信息路由至微引擎以將微引擎配置為神經(jīng)元。在執(zhí)行神經(jīng)元之后,包處理器210還可接收由微引擎生成的輸出值Aj (t)。接收的輸出值Aj (t)隨后可經(jīng)由連接565A-D提供給其他神經(jīng)處理單元和/ 或存儲在存儲器中,例如靜態(tài)隨機存取存儲器215。在從主計算機初始加載數(shù)據(jù)以配置系統(tǒng)500期間,舉例來說,處理器210可將數(shù)據(jù)塊從主計算機移動至順序存儲器205中的順序位置和其他位置(例如靜態(tài)隨機存取存儲器215)、經(jīng)由連接565A-D移動至其他相鄰的神經(jīng)處理單元和/或一個或多個微引擎220A-E中。在微引擎上的神經(jīng)元的執(zhí)行期間,處理器210可將連接權值與激活值相匹配。例如,處理器210可從順序存儲器205接收包括用于第j個神經(jīng)元的第i個連接的連接權值Wij的包。對于第i個連接,處理器210隨后可將連接權值Wij與存儲在靜態(tài)隨機存取存儲器215中的先前激活值Ai (t-Ι)相匹配。在一些實施中,查找表用于將每個連接權值Wij與存儲在靜態(tài)隨機存取存儲器215中的相應激活值Ai (t-Ι)相匹配。應用接口 510提供了至每個微引擎220A-E的接口。在一些實施中,應用接口 510可從靜態(tài)隨機存取存儲器215抽取與包括在接收包中的連接值相匹配的激活值。匹配激活值的地址可包括在從處理器210接收的包中。例如,匹配激活地址的地址可以作為神經(jīng)元靜態(tài)隨機存取存儲器激活地址340存儲在包中。包括上下文信息(例如,神經(jīng)元類型、連接值、激活值及類似物)的包隨后被轉發(fā)至微引擎。調(diào)度器520為在應用接口 510和微引擎220A-E之間交換的包提供包處理和排序。在一些實施中,調(diào)度器520為包括上下文信息的包選擇目的微引擎。調(diào)度器520還可利用上下文信息加載包括微引擎寄存器的微引擎并將輸出數(shù)據(jù)從微引擎220A-E發(fā)送至其他神經(jīng)處理單元、靜態(tài)隨機存取存儲器215和/或順序存儲器205。神經(jīng)處理單元500可通過連接565A-D (標記為北、東、西和南)連接至其他神經(jīng)處理單元。例如,神經(jīng)處理單元500可具有至四個其他神經(jīng)處理單元(例如,神經(jīng)處理單元北單元500、神經(jīng)處理單元南單元500、神經(jīng)處理單元東單元500、神經(jīng)處理單元西單元500)的連接565A-D。此外,每個其他神經(jīng)處理單元可連接至四個其他的神經(jīng)處理單元,并且在一些實施中,每個神經(jīng)處理單元可實施在一個或多個專用集成電路上。圖6描述了包括四個神經(jīng)處理單元660A-D的系統(tǒng)600的示例。每個神經(jīng)處理單元可包括順序存儲器632 (標記為DDR2)、存儲控制器634、存儲器接口 636、應用接口 640、靜態(tài)隨機存取存儲器642、調(diào)度器644以及多個微引擎646 (標記為NME)。
在圖6所示的實施中,每個神經(jīng)處理單元660A-D連接至路由器610,可如上文關于處理器210描述的那樣實施路由器610。然而,在一些實施中,路由器610還可以配置為非阻塞、交叉開關(crossbar)包路由器,其在輸入和輸出之間提供多個平行路徑,例如存儲器接口和應用接口。下文提供了神經(jīng)處理單元660A內(nèi)的元件的描述,但其他神經(jīng)處理單元660B-D可以以類似于神經(jīng)處理單元660A的方式配置。此外,包括神經(jīng)處理單元660A-D的系統(tǒng)600可以實施在芯片上,例如專用集成電路(ASIC),并且,盡管在圖6中僅示出了四個神經(jīng)處理單元660A-D,但系統(tǒng)600也可包括其他數(shù)量的神經(jīng)處理單元。順序存儲器632可以如上文中關于順序存儲器205描述的那樣來實施。在圖6的實例中,順序存儲器632可實施為雙數(shù)據(jù)率同步動態(tài)存取存儲器,然而也可以使用其他類型的存儲器。順序存儲器632可以電連接至存儲器控制器634以允許讀取并寫入順序存儲器 632。·存儲器控制器634可控制對順序存儲器632的讀取和寫入。上下文信息可以存儲在順序存儲器632的順序地址中,并且上下文信息可以基于包的形式從存儲器632中讀取或寫入存儲器632中。當實施基于包的格式時,包可以經(jīng)由至存儲器接口 636的電連接而提供給路由器610或從路由器610接收。此外,在一些實施中,存儲器控制器634可提供接口,該接口根據(jù)從存儲器(例如存儲器632)獲得的數(shù)據(jù)生成包并將生成的包發(fā)送至路由器610。存儲器控制器634還可從路由器610接收包并將包的內(nèi)容寫入存儲器632中。不同類型的存儲器(從靜態(tài)隨機存取存儲器、動態(tài)隨機存取存儲器到更持久的光存儲機構)可用在存儲器632上,而不論所使用的存儲器類型,存儲器控制器634處理包并將包尋址到存儲器中。存儲器接口 636可以以類似于上述的存儲器接口 505的方式實施。在圖6的實例中,存儲器接口 636可緩沖發(fā)送給或接收自存儲控制器634的包。路由器610可電連接至660A-D上的每個應用接口和連接692A-C上。連接692A-C可提供至其他設備的連接,例如,其他神經(jīng)處理單元、存儲器、主計算機和類似物。在一些實施中,連接692C可實施為PCI接口以允許以最高至132兆比特/每秒的速度將數(shù)據(jù)發(fā)送給路由器610 (并從路由器610發(fā)送出去)。連接692C也可以為系統(tǒng)600處理加載、調(diào)試和處理數(shù)據(jù)。例如,連接692A-C可用于將系統(tǒng)600連接至主計算機。主計算機可提供包括激活值的上下文信息、接收微引擎生成的輸出值并為每個微引擎提供代碼以將微引擎配置為神經(jīng)元。應用接口 640可以以類似于應用接口 510的方式實施。然而,在圖6的實例中,應用接口 640可以電連接至靜態(tài)隨機存取存儲器642和調(diào)度器644。靜態(tài)隨機存取存儲器642可以以類似于靜態(tài)隨機存取存儲器215的方式實施,而調(diào)度器644可以以類似于調(diào)度器520的方式實施。調(diào)度器644電連接至多個微引擎646 (標記為NME),微引擎646可以以類似于微引擎220A-E的方式實施。圖7描述了方法700,其可以由本文描述的神經(jīng)處理單元實施。同樣,將結合圖3A-B和圖6描述方法700。在步驟793中,存儲器控制器634可從存儲器632的順序地址讀取數(shù)據(jù)。這種讀取操作可包括讀取包括上下文信息的多個包中的至少一個以根據(jù)神經(jīng)模型將微引擎配置為神經(jīng)元。存儲器控制器634可以為存儲器接口 636提供讀取包,在提供給路由器610之前,包可以在存儲接口 636排序。存儲器控制器634還可控制向存儲器632寫入數(shù)據(jù)(例如從路由器610接收的包)。在步驟794中,路由器610可從存儲器接口 636接收多個包中的至少一個并隨后將接收的包提供給660A-D上的應用接口中的一個。例如,路由器610可將包括用于第j個神經(jīng)元的第i個連接的連接權值Wij的至少一個包路由至應用接口 640。在步驟797中,應用接口可從存儲器抽取匹配激活值。例如,應用接口 640可將連接權值與先前激活值Ai (t-Ι)相匹配并隨后從存儲器(例如靜態(tài)隨機存取存儲器642)抽取匹配激活值。對于接收的每個包而言,應用接口 640可讀取包括在包中的連接權值Wij并隨后確定存儲在靜態(tài)隨機存取存儲器642中的匹配激活值。如所述,應用接口 640可基于表明抽取哪個激活值的查找表來確定匹配。在步驟798中,應用接口(例如應用接口 640)隨后可以向調(diào)度器(例如調(diào)度器644)提供上下文信息(例如,連接權值Wij、匹配激活值Ai (t-Ι)以及類似物)。隨后,調(diào)度器644將該上下文信息提供給微引擎646中的一個以將微引擎配置為神經(jīng)元。在步驟799中,配置的微引擎生成輸出,例如Aj (t)。輸出Aj (t)可以提供給調(diào)度器644和應用接口 640,其可將輸出Aj (t)提供給靜態(tài)隨機存取存儲器642或其他神經(jīng)處理單元600B-D??梢詾樯窠?jīng)元的每個連接和神經(jīng)處理系統(tǒng)的每個神經(jīng)元重復方法700。此夕卜,方法700可以重復多次。圖8示出了微引擎800的實例,其可用在微引擎220A-E和/或微引擎646上。微引擎800可包括寄存器存儲器820、中央處理單元830和程序存儲器850。微引擎800可電連接至調(diào)度器520以允許微引擎800從調(diào)度器520接收包括上下文信息、激活值和類似物的包并為調(diào)度器520提供輸出激活。在一些實施中,微引擎800接收包括上下文信息的包,例如,圖3B中描述的塊390A。微引擎800將塊390A存儲在寄存器820中。隨后,微引擎800可訪問程序存儲器850以獲取指令(例如程序代碼),從而根據(jù)由存儲在寄存器820中的塊390A的上下文信息所表明的神經(jīng)類型320來配置微引擎。然后,微引擎800利用包括在寄存器820處存儲的的塊中的上下文信息(例如,激活值和連接值)執(zhí)行指令。隨后,輸出被發(fā)送至調(diào)度器520,然后進一步被路由至其他設備,例如靜態(tài)隨機存取存儲器、另一神經(jīng)處理單元和/或主計算機。輸出可用作隨后時間的激活。寄存器820可從調(diào)度器520接收上下文信息,該上下文信息已經(jīng)如上文關于圖3A-3B描述的那樣結構化。寄存器820也可包括控制狀態(tài)寄存器(CSR)、累加寄存器、程序計數(shù)器(PC)和多個暫存寄存器。寄存器820可以實施為包括足夠的存儲空間以至少存儲數(shù)據(jù)結構300和305和/或圖3A-B中描述的數(shù)據(jù)結構300和305中的至少一個塊。還可以以乒乓配置實施寄存器820,該乒乓配置包括兩個相同的寄存器庫以允許調(diào)度器520寫入寄存器820的一個庫中,而中央處理單元830從寄存器820的其他庫中讀取和執(zhí)行。微引擎800可包括限定能夠實施在微引擎上的一組可能的神經(jīng)模型的指令組(例如代碼)。因此,指令組(其可存儲在程序存儲器850中)可用于配置和編碼微引擎,從而作為多種神經(jīng)元類型中的至少一種來運行。此外,指令組可以在微引擎之間通信以輔助配置。用于微引擎800的代碼也可以使用匯編程序來處理匯編語言程序并將該程序轉換成二進制代碼文件以加載至微引擎中。例如,可以通過命令行調(diào)用神經(jīng)匯編程序以采用匯編代碼程序并將該匯編代碼轉換成二進制文件以加載至微引擎中。圖9描述了系統(tǒng)900,在本文中將其稱為儲巢(hive)。神經(jīng)處理單元(每個都被標記為NPU)可以以二維網(wǎng)格布局的形式互連。在一些實施中,當與共享單條存儲器總線的多個處理器相比時,二維網(wǎng)格結構可增加處理能力。神經(jīng)處理單元之間的互連可以實施為提供高速、串行數(shù)據(jù)線的電互連。主機接口 990可與神經(jīng)處理單元和主計算機992接口。例如,主機接口 990可將包傳遞給儲巢,讀取在神經(jīng)處理單元之間交換的包,并攔截在神經(jīng)處理單元之間發(fā)送的包。神經(jīng)處理單元均可具有唯一的標識符以使得能夠定位和/或尋址每個神經(jīng)處理單元。本文描述的主題可以實施在根據(jù)期望配置的系統(tǒng)、裝置、方法和/或物品中。具體地,可以在數(shù)字電子電路、集成電路、專門設計的ASIC(專用集成電路)、計算機硬件、固件、 軟件和/或其組合中實現(xiàn)本文描述的主題的各種實施。這些各種實施可包括實施在一種或多種可執(zhí)行和/或可在可編程系統(tǒng)中解釋的計算機程序中,該可編程系統(tǒng)包括至少一個可編程處理器,該處理器可以是專用或通用的,其連接以從存儲系統(tǒng)、至少一個輸入設備和至少一個輸出設備接收數(shù)據(jù)和指令,并將數(shù)據(jù)和指令發(fā)送至上述設備。這些計算機程序(也被稱為程序、軟件、軟件應用、應用、元件或代碼)包括用于可編程處理器的機器指令,并且可以以高級程序和/或面向對象的編程語言和/或匯編/機器語言實施。如本文所使用的,術語“機器可讀介質(zhì)”指用于為可編程處理器提供機器指令和/或數(shù)據(jù)的任何計算機程序制品、裝置和/或設備(例如,磁盤、光盤、存儲器、可編程邏輯設備(PLD)),包括將機器指令接收為機器可讀信號的機器可讀介質(zhì)。類似的,本文還描述了系統(tǒng),其可包括處理器和連接至處理器的存儲器。存儲器可包括一個或多個程序,該程序使處理器執(zhí)行本文描述的一種或多種操作。此外,盡管結合神經(jīng)處理的情況描述了本發(fā)明的系統(tǒng),但本文描述的系統(tǒng)可用在其他環(huán)境中,舉例來說,包括有限元分析和濾波器組處理(filterbank processing)。此外,術語組可指任意數(shù)量,包括空組。盡管上文詳細描述了一些變形,但其他修改和增加是可能的。具體地,可以除本文列出的特征和/或變形之外提供其他特征和/或變形。例如,上述的實施可以涉及公開的特征的各種組合和子組合和/或上文公開的若干其他特征的組合和子組合。此外,附圖中和/或本文中描述的邏輯流程不需要按照所示的具體順序或相繼順序來實現(xiàn)期望的結果。其他實施方式也可以落入隨附權利要求的范圍內(nèi)。
權利要求
1.一種方法,包括 從第一存儲器讀取基于至少一個連接值存儲的上下文信息; 從第二存儲器讀取與所述至少一個連接值相匹配的激活值; 通過第一處理器將上下文信息和激活值發(fā)送至多個微引擎中的至少一個微引擎,從而將所述至少一個微引擎配置為神經(jīng)元;及 在所述至少一個微引擎上生成表示神經(jīng)元的輸出的值。
2.根據(jù)權利要求I所述的方法,其中,從第一存儲器讀取還包括 讀取包括上下文信息的數(shù)據(jù)結構,該上下文信息基于用于在多個微引擎上實施的神經(jīng)元的連接值而連續(xù)地存儲在存儲器中。
3.根據(jù)權利要求I所述的方法,其中,數(shù)據(jù)結構包括多個塊,所述多個塊中的每個塊均包括限定在神經(jīng)元上的執(zhí)行的類型、表示包括所述至少一個連接值的上下文信息在第一存儲器中的存儲位置的第一地址,以及表示激活值在第二存儲器中的存儲位置的第二地址。
4.根據(jù)權利要求I所述的方法,其中,數(shù)據(jù)結構包括多個順序塊,所述多個順序塊中的每個順序塊均包括連接值以及神經(jīng)元類型,該神經(jīng)元類型限定在所述多個微引擎中的一個上實施的相應神經(jīng)元。
5.根據(jù)權利要求4所述的方法,其中,每個順序塊作為包被發(fā)送至所述多個微引擎中的至少一個上,并且其中,所述多個微引擎中的每一個均包括至少一個處理器和至少一個存儲器。
6.根據(jù)權利要求I所述的方法,其中,數(shù)據(jù)結構包括多個順序塊,每個順序塊均包括神經(jīng)元類型和用于相應神經(jīng)元的多個連接值。
7.根據(jù)權利要求I所述的方法,其中,第一處理器與第一存儲器相連以使得能夠從第一存儲器進行讀取。
8.根據(jù)權利要求I所述的方法,其中,生成包括 在所述至少一個微引擎上基于上下文信息和激活值生成所述值,而不訪問第一存儲器和第二存儲器以獲得額外的上下文信息。
9.根據(jù)權利要求I所述的方法,其中,第一存儲器和第二存儲器實施在集成電路的同一存儲器中。
10.根據(jù)權利要求I所述的方法,還包括 將所述值至少發(fā)送至第二存儲器。
11.一種裝置,包括 第一存儲器,包括基于至少一個連接值存儲的上下文信息; 第二存儲器,包括與所述至少一個連接值相匹配的激活值; 第一處理器,配置為發(fā)送讀取自第一存儲器的上下文信息和讀取自第二存儲器的激活值;及 第二組處理器中的至少一個,配置為接收讀取自第一存儲器的上下文信息和讀取自第二存儲器的激活值,并生成表示一組神經(jīng)元中的至少一個的輸出的至少一個值。
12.根據(jù)權利要求11所述的裝置,其中,第一存儲器還包括數(shù)據(jù)結構,該數(shù)據(jù)結構包括上下文信息,該上下文信息基于用于在第二組處理器上實施的神經(jīng)元組中的至少一個的連接值而連續(xù)地存儲在存儲器中。
13.根據(jù)權利要求11所述的裝置,其中,數(shù)據(jù)結構包括多個塊,所述多個塊中的每個塊均包括神經(jīng)元類型、表示上下文信息在第一存儲器中的存儲位置的第一地址,以及表示激活值在第二存儲器中的存儲位置的第二地址。
14.一種計算機程序制品,包括機器可讀介質(zhì),該機器可讀介質(zhì)存儲指令,當指令由至少一個可編程處理器執(zhí)行時,使得所述至少一個可編程處理器執(zhí)行下述操作 從第一存儲器讀取基于至少一個連接值存儲的上下文信息; 從第二存儲器讀取與所述至少一個連接值相匹配的激活值; 通過第一處理器將上下文信息和激活值發(fā)送至多個微引擎中的至少一個中,從而將所述至少一個微引擎配置為神經(jīng)元;及 在所述至少一個微引擎上生成表示神經(jīng)元的輸出的值。
15.根據(jù)權利要求14所述的計算機程序制品,其中,從第一存儲器讀取還包括 讀取包括上下文信息的數(shù)據(jù)結構,該上下文信息基于用于在所述多個微引擎上實施的神經(jīng)元的連接值而連續(xù)地存儲在存儲器中。
16.根據(jù)權利要求14所述的計算機程序制品,其中,數(shù)據(jù)結構包括多個塊,所述多個塊中的每個塊均包括限定在神經(jīng)元上的執(zhí)行的類型、表示包括所述至少一個連接值的上下文信息在第一存儲器中的存儲位置的第一地址,以及表示激活值在第二存儲器中的存儲位置的第二地址。
17.一種裝置,包括 第一存儲器,包括存儲在塊中的上下文信息,其中,每個塊包括用于神經(jīng)元的至少一個連接值和表示神經(jīng)元類型的信息; 存儲器控制器,與第一存儲器接口并控制讀取第一存儲器和寫入第一存儲器中的至少一種; 第一處理器,配置為從存儲器控制器和第一存儲器接收上下文信息,其中,第一處理器還被配置為轉發(fā)上下文信息; 接口,其配置為 接收由第一處理器轉發(fā)的上下文信息, 將多個激活值中的至少一個與所述至少一個連接值相匹配, 抽取所述多個激活值中的匹配的至少一個,及轉發(fā)所述多個激活值中抽取的至少一個和所述至少一個連接值;以及第二組處理器中的至少一個,配置為接收所述多個激活值中轉發(fā)的至少一個和所述至少一個連接值,并生成表示被配置為神經(jīng)元組中的至少一個的第二組處理器中的至少一個的輸出的至少一個值。
18.一種計算機程序制品,包括機器可讀介質(zhì),該機器可讀介質(zhì)存儲指令,當指令由至少一個可編程處理器執(zhí)行時,使得所述至少一個可編程處理器執(zhí)行下述操作 從第一存儲器讀取存儲在塊中的上下文信息,其中,每個塊包括至少一個用于神經(jīng)元的連接值和表示神經(jīng)元類型的信息; 在與第一存儲器連接的存儲器控制器上控制讀取第一存儲器和寫入第一存儲器中的至少一種; 在第一處理器上接收來自存儲器控制器和第一存儲器的上下文信息,其中,第一處理器還被配置為將上下文信息轉發(fā)至接口; 在接收上接收由第一處理器轉發(fā)的上下文信息 在接口上將多個激活值中的至少一個與至少一個連接值相匹配; 在接口上抽取匹配的多個激活值中的至少一個; 在接口上轉發(fā)抽取的多個激活值中的至少一個和至少一個連接值; 在第二組處理器中的一個或多個上接收轉發(fā)的多個激活值中的至少一個和轉發(fā)的至少一個連接值 '及 在第二組處理器中的一個或多個上生成輸出。
19.一種方法,包括 從第一存儲器讀取存儲在塊中的上下文信息,其中,每個塊包括用于神經(jīng)元的至少一個連接值和表示神經(jīng)元類型的信息; 在與第一存儲器接口的存儲器控制器上控制讀取第一存儲器和寫入第一存儲器中的至少一種; 在第一處理器上接收來自存儲器控制器和第一存儲器的上下文信息,其中,第一處理器還被配置為將上下文信息轉發(fā)至接口; 在接口上接收由第一處理器轉發(fā)的上下文信息 在接口上將多個激活值中的至少一個與所述至少一個連接值相匹配; 在接口上抽取所述多個激活值中匹配的至少一個激活值; 在接口上轉發(fā)所述多個激活值中抽取的至少一個激活值和所述至少一個連接值;在第二組處理器中的一個或多個處理器上接收所述多個激活值中轉發(fā)的至少一個激活值和轉發(fā)的至少一個連接值;及 在第二組處理器中的所述一個或多個處理器上生成輸出。
20.一種裝置,包括 用于讀取基于至少一個連接值存儲的上下文信息的器件; 用于讀取與所述至少一個連接值相匹配的激活值的器件; 用于將上下文信息和激活值發(fā)送至多個微引擎中的至少一個微引擎從而將所述至少一個微引擎配置為神經(jīng)元的器件;及 用于生成表示神經(jīng)元的輸出的值的器件。
全文摘要
本文公開的主題提供了用于基于神經(jīng)的處理的方法、裝置和制造物品。一方面,提供了一種方法。該方法可包括從第一存儲器讀取基于至少一個連接值存儲的上下文信息;從第二存儲器讀取與至少一個連接值相匹配的激活值;通過第一處理器將上下文信息和激活值發(fā)送至多個微引擎中的至少一個微引擎,從而將該至少一個微引擎配置為神經(jīng)元;及在該至少一個微引擎上生成表示神經(jīng)元的輸出的值。還公開了相關裝置、系統(tǒng)、方法和物品。
文檔編號G06N3/06GK102947818SQ201180031201
公開日2013年2月27日 申請日期2011年1月21日 優(yōu)先權日2010年5月19日
發(fā)明者D·A·帕爾默, M·弗羅雷亞 申請人:加利福尼亞大學董事會
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
固始县| 沿河| 巴塘县| 文水县| 诏安县| 台中县| 百色市| 乳山市| 安泽县| 湘潭市| 江华| 滨海县| 信阳市| 青川县| 林芝县| 盐源县| 灵武市| 桐柏县| 乐平市| 赤城县| 柳江县| 香河县| 河津市| 工布江达县| 延边| 黔西| 内丘县| 霍林郭勒市| 鸡西市| 台湾省| 沂源县| 高淳县| 建昌县| 内丘县| 钦州市| 登封市| 喀喇沁旗| 涪陵区| 西充县| 汝城县| 樟树市|