TW202129553A - 數據處理裝置、人工智能晶片 - Google Patents
數據處理裝置、人工智能晶片 Download PDFInfo
- Publication number
- TW202129553A TW202129553A TW109146826A TW109146826A TW202129553A TW 202129553 A TW202129553 A TW 202129553A TW 109146826 A TW109146826 A TW 109146826A TW 109146826 A TW109146826 A TW 109146826A TW 202129553 A TW202129553 A TW 202129553A
- Authority
- TW
- Taiwan
- Prior art keywords
- selection unit
- data processing
- input
- unit
- processing device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
Abstract
本公開實施例提供一種數據處理裝置、人工智能晶片,包括具有多個輸入端和多個輸出端的第一選擇單元,具有多個輸入端和多個輸出端的第二選擇單元,以及多個運算單元;所述第一選擇單元的多個輸入端可配置地連接所述第一選擇單元的多個輸出端,所述第一選擇單元的多個輸出端中的至少一部分連接所述多個運算單元的輸入端,所述多個運算單元的輸出端連接於所述第二選擇單元的多個輸入端,所述第二選擇單元的多個輸入端可配置地連接所述第二選擇單元的多個輸出端,所述第二選擇單元的多個輸出端中的至少一部分與所述第一選擇單元的多個輸入端連接,和/或與所述數據處理裝置的數據輸出端口連接,以使所述多個運算單元構成不同的運算通路。
Description
本公開涉及數據處理技術領域,尤其涉及數據處理裝置、人工智能晶片。
在各種應用場景(例如,神經網路應用場景)中,存在各種各樣的運算操作,有基本的簡單函數的運算,比如加、減、乘、除等,也存在大量的非常規的複雜運算,並且不同的應用場景所包括的複雜運算的形式也五花八門,同時新類型的複雜運算組合方式也層出不窮。隨著運算類型的增加以及運算量的增大,執行運算操作的數據處理裝置的面積和功耗也相應增大。
本公開提供一種數據處理裝置、人工智能晶片。
根據本公開實施例的第一方面,提供一種數據處理裝置,所述裝置包括:具有多個輸入端和多個輸出端的第一選擇單元,具有多個輸入端和多個輸出端的第二選擇單元,以及多個運算單元;所述第一選擇單元的多個輸入端可配置地連接所述第一選擇單元的多個輸出端,所述第一選擇單元的多個輸出端中的至少一部分連接所述多個運算單元的輸入端,所述多個運算單元的輸出端連接於所述第二選擇單元的多個輸入端,所述第二選擇單元的多個輸入端可配置地連接所述第二選擇單元的多個輸出端,所述第二選擇單元的多個輸出端中的至少一部分與所述第一選擇單元的多個輸入端連接,和/或與所述數據處理裝置的數據輸出端口連接,以使所述多個運算單元構成不同的運算通路。
在一些實施例中,所述裝置還包括:第一暫存器,用於儲存第一配置資訊,所述第一配置資訊用於配置:所述第一選擇單元的多個輸入端與所述第一選擇單元的多個輸出端之間的連接關係,和/或,所述第二選擇單元的多個輸入端與所述第二選擇單元的多個輸出端之間的連接關係。
在一些實施例中,所述裝置還包括:第二暫存器,用於儲存第二配置資訊,所述第二配置資訊用於配置所述多個運算單元中的至少一部分的運算類型。
在一些實施例中,所述第一選擇單元的多個輸入端包括至少一個第一輸入端,所述第一輸入端與所述數據處理裝置的數據輸入端口連接,用於輸入原始操作數。
在一些實施例中,所述運算單元用於檢測輸入數據中的有效標識資訊,並響應於檢測到所述輸入數據中的有效標識資訊,對所述輸入數據進行運算。
在一些實施例中,所述裝置還包括:至少一個延遲單元;所述延遲單元的輸入端連接於所述第一選擇單元的輸出端,所述延遲單元的輸出端連接於所述第二選擇單元的輸入端;所述延遲單元用於對從所述第一選擇單元的輸出端接收到的數據進行延遲處理,並將所述延遲處理後的數據傳輸至所述第二選擇單元的輸入端。
在一些實施例中,所述裝置還包括:至少一個第三暫存器,所述第三暫存器的輸入端連接所述第二選擇單元的輸出端,所述第三暫存器的輸出端連接所述第一選擇單元的輸入端,或連接於所述數據處理裝置的數據輸出端口。
在一些實施例中,所述第一選擇單元的多個輸入端包括至少一個第二輸入端,所述第二輸入端通過連接線與所述第二選擇單元的輸出端連接,或者通過連接線與用於儲存運算參數的第四暫存器連接。
在一些實施例中,所述多個運算單元包括至少一個算數運算單元和/或至少一個邏輯運算單元。
根據本公開實施例的第二方面,提供一種人工智能晶片,所述人工智能晶片包括任一實施例所述的數據處理裝置。
在一些實施例中,所述人工智能晶片還包括:控制單元,所述控制單元用於控制所述數據處理裝置,以使所述數據處理裝置中的多個運算單元構成不同的運算通路。
在一些實施例中,所述控制單元進一步用於:對所述數據處理裝置的配置資訊進行配置,以使所述數據處理裝置中的多個運算單元構成不同的運算通路。
在一些實施例中,所述配置資訊包括以下至少任一:第一配置資訊,用於配置所述第一選擇單元的多個輸入端與所述第一選擇單元的多個輸出端之間的連接關係,和/或所述第二選擇單元的多個輸入端與所述第二選擇單元的多個輸出端之間的連接關係,第二配置資訊,用於配置所述多個運算單元中的至少一部分的運算類型。
在一些實施例中,所述第一選擇單元的多個輸入端包括至少一個第一輸入端;所述控制單元進一步用於:將原始操作數寫入所述第一選擇單元的至少一個第一輸入端。
本公開實施例的數據處理裝置,透過改變第一選擇單元和第二選擇單元內部的連接方式,能夠形成不同的數據處理通路,透過非固化的裝置連接方式,實現了運算單元的高效複用,節省了數據處理裝置的面積。另外,在第一選擇單元和第二選擇單元內部的連接方式配置好之後,本公開實施例的方案能夠在運算通路中自動形成多個運算單元的流水操作,完成高效的數據處理,節省了數據處理功耗,獲得了較高的能耗比。
應當理解的是,以上的一般描述和後文的細節描述僅是示例性和解釋性的,而非限制本公開。
這裡將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式並不代表與本公開相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
在本公開使用的術語是僅僅出於描述特定實施例的目的,而非旨在限制本公開。在本公開和所附權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指並包含一個或多個相關聯的列出項目的任何或所有可能組合。另外,本文中術語“至少一種”表示多種中的任意一種或多種中的至少兩種的任意組合。
應當理解,儘管在本公開可能採用術語第一、第二、第三等來描述各種資訊,但這些資訊不應限於這些術語。這些術語僅用來將同一類型的資訊彼此區分開。例如,在不脫離本公開範圍的情況下,第一資訊也可以被稱為第二資訊,類似地,第二資訊也可以被稱為第一資訊。取決於語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應於確定”。
為了使本技術領域的人員更好的理解本公開實施例中的技術方案,並使本公開實施例的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖對本公開實施例中的技術方案作進一步詳細的說明。
在許多應用場景下,往往存在各種各樣的數據處理操作,例如,運算操作。以神經網路應用場景為例,神經網路中的激活函數的運算可能包括基本的簡單函數運算,比如加法運算、減法運算、乘法運算和除法運算等,也可能包括大量的非常規的複雜運算,並且不同的神經網路中所包括的複雜運算的形式也五花八門;同時,新類型的神經網路也層出不窮。因此,在設計用於執行數據處理操作的數據處理裝置時,往往面臨著運算單元類型多、數據處理量大的難題,另外,還要求數據處理裝置同時要兼顧面積小和低功耗的設計要求。
本公開實施例提供了一種數據處理裝置,如圖1所示,所述裝置可包括:具有多個輸入端和多個輸出端的第一選擇單元101,具有多個輸入端和多個輸出端的第二選擇單元102,以及多個運算單元103。
所述第一選擇單元101的多個輸入端可配置地連接所述第一選擇單元101的多個輸出端,所述第一選擇單元101的多個輸出端中的至少一部分連接所述多個運算單元103的輸入端。
所述多個運算單元103的輸出端連接於所述第二選擇單元102的多個輸入端。
所述第二選擇單元102的多個輸入端可配置地連接所述第二選擇單元102的多個輸出端,所述第二選擇單元102的多個輸出端中的至少一部分與所述第一選擇單元101的多個輸入端連接,和/或與所述數據處理裝置的數據輸出端口連接,以使所述多個運算單元103構成不同的運算通路。
在本公開實施例中,所述第一選擇單元101和所述第二選擇單元102均可以包括多個輸入端和多個輸出端,所述第一選擇單元101可配置地將輸入端中的部分或全部連接到輸出端中的部分或全部;同理,所述第二選擇單元102也可配置地將輸入端中的部分或全部連接到輸出端中的部分或全部,從而使連接在第一選擇單元101和所述第二選擇單元102之間的多個運算單元103可以構成不同的數據處理通路。在實際應用中,第一選擇單元101的輸入端的數量與第一選擇單元101的輸出端的數量可以相同,也可以不同;第二選擇單元102的輸入端的數量與第二選擇單元102的輸出端的數量可以相同,也可以不同;第一選擇單元101的輸入端的數量與第二選擇單元102的輸出端的數量可以相同,也可以不同。
在本公開實施例中,選擇單元的內部連接關係可以根據需求配置,例如,選擇單元的輸入端與輸出端之間的連接關係,或者,選擇單元的外部連接關係可以配置,例如,選擇單元的輸入端或輸出端與其他單元之間的連接關係,等等。
第一選擇單元101的輸入端與輸出端的連接方式,以及第二選擇單元102的輸入端與輸出端的連接方式,可以根據第一配置資訊來確定。所述第一配置資訊可以預先配置。當第一配置資訊變化的時候,第一選擇單元101的輸入端與輸出端的連接方式,以及所述第二選擇單元102的輸入端與輸出端的連接方式均可以發生變化,從而使多個運算單元103構成不同的數據處理通路。所述連接方式包括第一選擇單元101的每個輸入端所連接的第一選擇單元101的輸出端,以及所述第二選擇單元102的每個輸入端所連接的第二選擇單元102的輸出端。
如圖2所示,在一些實施例中,所述裝置還包括:第一暫存器104,用於儲存第一配置資訊,所述第一配置資訊用於配置:所述第一選擇單元101的多個輸入端與所述第一選擇單元101的多個輸出端之間的連接關係,和/或,所述第二選擇單元102的多個輸入端與所述第二選擇單元102的多個輸出端之間的連接關係。所述第一選擇單元101可以與所述第一暫存器104相連接,以從所述第一暫存器104獲取所述第一配置資訊。同理,所述第二選擇單元102也可以與所述第一暫存器104相連接,以從所述第一暫存器104獲取所述第一配置資訊。所述第一暫存器104的數量可以是一個或多個,其數量可以根據所述第一配置資訊的長度以及所述第一暫存器104的寬度來確定。
如圖3A和圖3B所示,是本公開一些實施例的第一選擇單元101和所述第二選擇單元102的連接方式的示意圖,以及該連接方式下各個運算單元103構成的數據處理通路的示意圖。在圖3A中,第一選擇單元101的輸入端1與輸出端2、輸入端2與輸出端4、輸入端3與輸出端1對應連接,第二選擇單元102的輸入端1與輸出端1、輸入端2與輸出端2、輸入端4與輸出端3對應連接。從而構成的數據處理通路上依次包括運算單元2、運算單元4和運算單元1。
如圖4A和圖4B所示,是本公開另一些實施例的第一選擇單元101和所述第二選擇單元102的連接方式的示意圖,以及該連接方式下各個運算單元103構成的數據處理通路的示意圖。在圖4A中,第一選擇單元101的輸入端1與輸出端1、輸入端2與輸出端2、輸入端3與輸出端3、輸入端4與輸出端4對應連接,第二選擇單元102的輸入端1與輸出端2、輸入端2與輸出端3、輸入端3與輸出端4、輸入端4與輸出端1對應連接。從而構成的數據處理通路上依次包括運算單元1、運算單元2、運算單元3和運算單元4。
本領域技術人員可以理解,以上連接方式以及數據處理通路的實施例僅為示例性說明,本公開不限於此。在實際應用中,第一選擇單元101的輸入端的數量和輸出端的數量以及連接方式均可以根據需要而設定。並且,第一選擇單元101和所述第二選擇單元102均可以是一個單獨的選擇單元,也可以是由多個選擇單元構成的選擇單元。在本公開中並不對該選擇單元的實現方式進行限制,只要能夠實現上述示例中描述的選擇功能即可。例如,該選擇單元可以通過由基本門電路搭建的組合邏輯來實現。
其中,運算單元103可以包括各種類型的運算單元。關於該運算單元的實現,在本公開中並不進行限制。例如,運算單元可直接調用來自常見的eda廠商的IP核。運算單元的類型可以包括但不限於算術運算單元和邏輯運算單元中的至少一者,或者包括向量運算單元、標量運算單元和矩陣運算單元中的至少一種,等等。其中,算術運算單元可包括但不限於以下至少一種:加減法運算單元、乘法運算單元、除法運算單元、指數運算單元、對數運算單元、開方運算單元、三角函數運算單元、導數運算單元、積分運算單元、卷積運算單元、取整運算單元等。所述邏輯運算單元可包括求與運算單元、求或運算單元、求非運算單元等等。每種類型的運算單元的數量可以是一個或多個。每個運算單元103可以包括一個或多個輸入端,也可以包括一個或多個輸出端。當一個運算單元103包括多個輸入端時,所述運算單元103的每個輸入端連接所述第一選擇單元101的一個輸出端;當一個運算單元103包括多個輸出端時,所述運算單元103的每個輸出端連接所述第二選擇單元102的一個輸入端。
運算單元103中的一者或多者的運算類型可根據實際情況進行配置。例如,選擇比較器可被配置為求最大值,求最小值,累計求最大值等;加減法運算單元可被配置為執行加法或者減法運算;累加運算單元可被配置為求累加或者執行加法運算;指數運算單元的冪指數可被配置為操作數或者操作數的相反數。在一些實施例中,所述裝置還包括:第二暫存器105,用於儲存第二配置資訊,所述第二配置資訊用於配置所述多個運算單元103中的至少一部分的運算類型。所述多個運算單元103中的至少一部分可以與所述第二暫存器105相連接,以從所述第二暫存器105中獲取所述第二配置資訊。所述第二暫存器105的數量可以是一個或多個,其數量可以根據所述第二配置資訊的長度以及所述第二暫存器105的寬度來確定。
在一些實施例中,第一暫存器104和第二暫存器105可以是相同的暫存器,該暫存器中的一部分儲存空間用於儲存第一配置資訊,另一部分儲存空間用於儲存第二配置資訊。例如,暫存器的第1至第N1位用於儲存第一配置資訊,第N1+1至第N2位用於儲存第二配置資訊。在一些實施例中,第一暫存器104和第二暫存器105也可以是不同的暫存器。
在一些實施例中,所述第一選擇單元101的多個輸入端包括至少一個第一輸入端,所述第一輸入端與所述數據處理裝置的數據輸入端口連接,用於輸入原始操作數。所述第一輸入端也稱為操作數輸入端。所述數據處理裝置的數據輸入端口可以從隨機存取記憶體、外部控制單元或者其他數據處理裝置獲取到所述原始操作數。在實際應用中,所述第一輸入端與所述數據處理裝置的數據輸入端口連接,也可以包括將所述第一輸入端本身作為所述數據處理裝置的數據輸入端口的情形。
在進行操作數的運算時,首先向第一選擇單元101的一個操作數輸入端輸入操作數,由第一選擇單元101將操作數輸出至第一選擇單元101的一個或多個輸出端,再輸出至與所述一個或多個輸出端相連接的運算單元103進行運算,得到中間運算結果。中間運算結果經運算單元103的輸出端輸出至第二選擇單元102與運算單元103相連接的輸入端,再由第二選擇單元102的輸入端輸出至第二選擇單元102的輸出端,然後由第二選擇單元102的輸出端輸出至第一選擇單元101的輸入端,再重複上述過程,如此循環往復,直到得到最終運算結果,該最終運算結果可通過第二選擇單元102輸出至所述數據處理裝置的數據輸出端口。輸入到第一選擇單元101的操作數也可以經過運算單元103進行運算之後作為最終運算結果,再經第二選擇單元102直接輸出至所述數據處理裝置的數據輸出端口。
在一些實施例中,所述運算單元103用於檢測輸入數據中的有效標識資訊,並響應於檢測到所述輸入數據中的有效標識資訊,對所述輸入數據進行運算。所述輸入數據可以是原始操作數,也可以是經運算單元103運算後的中間運算結果,運算單元103對原始操作數進行運算得到中間運算結果之後,可以將所述有效標識資訊與所述中間運算結果一起輸出到第二選擇單元102。
在本實施例中,通過向所述第一選擇單元101寫入有效標識資訊從而開始執行運算操作。只有在寫入有效標識資訊之後,才開始執行運算操作,否則,不執行運算操作。在一次運算過程中,當輸入到第一選擇單元101的某個輸入端的一組操作數的數量為多個時,可以在該組操作數中的每一個操作數中攜帶所述有效標識資訊。
例如,當輸入到第一選擇單元101的操作數輸入端的數據為{1, x, 2, x, 3}時,只有1、2和3這三個操作數為需要進行運算的有效操作數,兩個x均為無效操作數。此時,操作數1、2和3中可以分別攜帶所述有效標識資訊,而x中不攜帶所述有效標識資訊,從而可以區分出有效操作數和無效操作數。只有當操作數中攜帶所述有效標識資訊時,運算單元103才會對所述操作數進行處理,不攜帶所述有效標識資訊的操作數則不進行處理,從而可以節省數據處理裝置的功耗。
在一些實施例中,所述裝置還包括:至少一個延遲單元106;所述延遲單元106的輸入端連接於所述第一選擇單元101的輸出端,所述延遲單元106的輸出端連接於所述第二選擇單元102的輸入端;所述延遲單元106用於對從所述第一選擇單元101的輸出端接收到的數據進行延遲處理,並將所述延遲處理後的數據傳輸至所述第二選擇單元102的輸入端。由於不同類型的運算單元進行運算所需的時間不同,因此,通過延遲單元106對運算單元103各個輸入端的數據進行時間對齊,可以保證具有多元輸入的運算單元103的每個輸入數據同時有效到達。在本公開示例中,延遲單元可以通過暫存器打拍(例如,通過移位暫存器)來實現。
例如,對於這一運算,首先需要通過指數運算單元對操作數進行指數運算,再將指數運算的結果輸入到加法運算單元的第一輸入端,將運算參數1輸入到加法運算單元的第二輸入端,然後由加法單元對兩個輸入端的數據進行相加運算。由於加法運算單元的第一輸入端的數據相對於第二輸入端的數據會存在延遲,因此,可以將運算參數1先輸入到一個延遲單元進行延遲處理,再輸入到加法運算單元的第二輸入端,以使加法運算單元的第一輸入端和第二輸入端的數據同時到達。
在一些實施例中,所述裝置還包括:至少一個第三暫存器107,所述第三暫存器107的輸入端連接所述第二選擇單元102的輸出端,所述第三暫存器107的輸出端連接所述第一選擇單元101的輸入端,或連接於所述數據處理裝置的數據輸出端口。其中,所述第三暫存器107的輸出端連接於所述數據處理裝置的數據輸出端口,也可以包括將所述第三暫存器107的輸出端作為所述數據處理裝置的數據輸出端口的情形。所述數據輸出端口可以連接到隨機存取記憶體或者其他數據處理裝置。通過設置第三暫存器107,能夠減少數據處理裝置內部的數據傳輸時延。
在一些實施例中,所述第一選擇單元101的多個輸入端包括至少一個第二輸入端,所述第二輸入端通過連接線與所述第二選擇單元102的輸出端連接,或者通過連接線與用於儲存運算參數的第四暫存器連接。該連接線代表了兩個單元端口的連接,在晶片上對應實現為某種金屬走線。所述運算參數為常量運算參數,例如,對於y=1+x這一運算函數而言,其中的“1”即為所述運算參數。所述第四暫存器的數量可以是一個或多個,各個第四暫存器可以用於儲存取值不同的運算參數,例如,0,±1,±2,±Max等。所述連接線可以根據第三配置資訊將第一選擇單元101的第二輸入端選擇性地連接所述第二選擇單元102的輸出端或者所述第四暫存器。
第三暫存器和第四暫存器可以是相同或不同的暫存器,在一些實施例中,數據處理裝置可以包括共享快取記憶體單元,以供所述多個運算單元共享,或者進一步供所述第二選擇單元和/或第一選擇單元,以用於暫存數據,例如,暫存原始操作數、運算參數和運算結果中的一種或多種,本公開實施例對此不做限定。
在實際應用場景下,以上各種配置資訊(包括第一配置資訊、第二配置資訊、第三配置資訊和第四配置資訊)均可以是配置碼,或者是其他類型的配置資訊。以上各種配置資訊可以是同一配置資訊中的不同部分,或者是不同的配置資訊。
本公開一些實施例的配置資訊如圖5所示。例如,第1位至第c1位為第一配置資訊,第c1+1位至第c1+c2位為第二配置資訊,第c1+c2+1位至第c1+c2+c3位為第三配置資訊,第c1+c2+ c3+1位至第c1+c2+ c3+c4位為第四配置資訊。該第四配置資訊可以用於對延遲單元106的延遲週期數進行配置,根據不同的第四配置資訊,可將延遲單元106的延遲週期數配置為一個或多個時鐘週期。通過對第一選擇單元101和第二選擇單元102內部的連接方式、各個運算單元103的運算類型和/或連接線的連接方式進行配置,可以適應各種複雜的運算類型,提高數據處理裝置的複用率。
上述c1、c2和c3的數值可以相同也可以不同,配置資訊中各部分的順序也可以根據實際需要而調整,例如,所述配置資訊中的第1位至第c2位可以是第二配置資訊,第c2+1位至第c1+c2位可以是第一配置資訊。配置資訊中各部分的功能以及長度可以預先設置好。
以上各種配置資訊(第一、第二、第三、第四配置資訊等)可以分別對應於總的配置資訊的各個部分,也可以為單獨的配置資訊;當為單獨的配置資訊時,可以儲存在同一暫存器中,也可以儲存在不同暫存器中。
在一次運算中,各配置資訊均保持不變。一次運算結束之後,可以通過改變配置資訊,從而改變運算通路或者運算通路上至少一個運算單元的運算類型。其中,所述一次運算過程是指從向第一選擇單元101的一個或多個輸入端各輸入一組操作數,直到輸出這組操作數對應的一組最終運算結果的過程,其中,第一選擇單元101的每個輸入端輸入的一組操作數中均可包括一個或多個操作數,同一輸入端的一組操作數依次輸入到該輸入端。
假設向第一選擇單元101的k個輸入端各輸入一組原始操作數,每個輸入端輸入的各組原始操作數分別為,,……,,m為每組原始操作數中的原始操作數的總數,則首先分別向k個輸入端輸入,再分別向k個輸入端輸入,以此類推,對應得到最終運算結果。從輸入,直到得到的過程稱為一次運算過程。當需要同時向第一選擇單元101的多個輸入端輸入原始操作數時,各個輸入端輸入的原始操作數可以先經過時間對齊再輸入到第一選擇單元101的多個輸入端。
本公開實施例通過兩個可配置的選擇單元,將一個或多個原始操作數映射連接到運算單元的輸入上,再將運算單元的運算結果重新映射連接到下一個運算單元的輸入上,直到得到最終的運算結果並輸出。通過這種方式讓數據和運算“流動”起來。在一次運算過程中,將配置資訊保持不變,從而在一次運算過程中固化運算通路,自動根據配置資訊形成多個運算單元流水操作,完成高效運算。在獲取最終運算結果之前,各個運算單元輸出的運算結果可以無需儲存到隨機存取記憶體中,而是直接輸入到下一個運算單元繼續進行運算,這樣,減少了存取次數,從而降低了功耗。進一步地,如果運算函數比較複雜,可以先對運算函數中的一部分進行運算,將得到的最終運算結果寫入隨機存取記憶體,再從隨機存取記憶體中讀取所述最終運算結果用於對運算函數的另一部分進行運算,然後將另一部分的最終運算結果寫入隨機存取記憶體,如此反復多次,得到整個運算函數的最終運算結果。在完成一次運算過程之後,可以重新輸入配置資訊,從而更改各個運算單元之間的連接方式,使得本公開實施例的裝置可以適用於多種類型的算式,實現資源的高效複用,節省面積和功耗,獲得較高的能耗比。
在本公開實施例中,可以預先針對不同的運算函數確定出不同的配置資訊,然後儲存所確定出的配置資訊。後續,當需要使用不同的運算函數時,可以調用不同的配置資訊,當配置資訊發生改變時,線路的連接關係也會對應發生變化。
在本公開實施例中,運算單元的數量、連接線的數量以及配置碼的寬度可以根據實際需要進行不同的配置,以實現更多類型的運算,擴展性較強。輸入的原始操作數可以是向量也可以是標量,可以是定點數,也可以是浮點數,只要對運算單元的類型和延遲單元的位寬做調整即可支持。
運算單元的總數、延遲單元的總數、第一選擇單元用於輸入操作數的輸入端的總數,以及第一選擇單元的輸入端中與第二選擇單元相連接的輸入端的總數可以相同,也可以不同,以上各個數量可以根據實際需求設置。
下面以一個具體實施例為例對本公開實施例的方案進行說明。Sigmoid(y=1/(e-x+1))是神經網路中常見的一種激活函數,其運算過程涉及到基本的運算有指數運算、加法運算和除法運算,該Sigmoid函數可通過圖6所示的裝置來實現。如圖6所示,在本實施例中,通過合理配置,將裝置功能重構為Sigmoid激活函數運算,具體配置方式如下:
步驟1:Sigmoid為一元函數,只有一個操作數,假設來自於第一選擇單元的操作數輸入端1,將操作數輸入端1通過配置連接到指數單元的輸入端;
步驟2:將指數單元的輸出端通過配置連接到加法單元的一個輸入端上;
步驟3:連接線1配置為將第三暫存器的用於輸出運算參數1的一個輸出端,連接到加法單元的另一個輸入端上,同時連接到除法單元的被除數輸入端;
步驟4:將加法單元的輸出端通過配置連接到除法單元的除數輸入端;
步驟5:配置指數單元的運算方式為exp(-x),加法單元配置為執行加法運算;
步驟6:將除法單元的輸出端通過配置連接到最終的結果輸出端。
通過配置而形成的上述運算通路實現了完整的Sigmoid函數運算。本公開實施例可通過修改配置碼,通過有限的運算單元以及連接線涵蓋大量簡單及複雜運算類型。
本公開實施例可以實現高效靈活可配置、擴展性強的數據處理裝置,可以高效實現多種複雜運算,同時兼顧了面積和功耗。可以利用本公開實施例的裝置實現神經網路運算中的各種類型的激活函數的運算。神經網路的運算中出現的激活函數大多是一些複雜函數,並且支持神經網路運算的硬件裝置在通用性和可拓展方面有一定的需求,利用本公開實施例可以用一種裝置實現多個激活函數。
本公開實施例還提供一種人工智能晶片,所述人工智能晶片包括以上任一實施例所述的數據處理裝置。該人工智能晶片中的數據處理裝置的實施例詳見上述數據處理裝置的實施例,此處不再贅述。
在一些實施例中,所述人工智能晶片還包括:控制單元,所述控制單元用於控制所述數據處理裝置,以使所述數據處理裝置中的多個運算單元構成不同的運算通路。
在一些實施例中,所述控制單元進一步用於:對所述數據處理裝置的配置資訊進行配置,以使所述數據處理裝置中的多個運算單元構成不同的運算通路。在本公開的實施例中,並不對該控制單元的實現形式進行限制,只要能夠對各個模組或單元或組件進行配置並且提供相應操作數即可,比如該控制單元可以實現為符合條件的一些周邊電路等。
在一些實施例中,所述配置資訊包括以下至少任一:第一配置資訊,用於配置所述第一選擇單元的多個輸入端與所述第一選擇單元的多個輸出端之間的連接關係,和/或所述第二選擇單元的多個輸入端與所述第二選擇單元的多個輸出端之間的連接關係,第二配置資訊,用於配置所述多個運算單元中的至少一部分的運算類型。
在一些實施例中,所述第一選擇單元的多個輸入端包括至少一個第一輸入端;所述控制單元進一步用於:將原始操作數寫入所述第一選擇單元的至少一個第一輸入端。
上述人工智能晶片中的數據處理裝置的實施例與前述數據處理裝置的實施例相同,此處不再贅述。透過上述人工智能晶片中的控制單元進行配置的配置資訊的實施例詳見前述數據處理裝置的實施例中的配置資訊,此處不再贅述。
本領域技術人員在考慮說明書及實踐這裡公開的說明書後,將容易想到本公開的其它實施方案。本公開旨在涵蓋本公開的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本公開的一般性原理並包括本公開未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本公開的真正範圍和精神由下面的權利要求指出。
應當理解的是,本公開並不局限於上面已經描述並在附圖中示出的精確結構,並且可以在不脫離其範圍進行各種修改和改變。本公開的範圍僅由所附的權利要求來限制。
以上所述僅為本公開的較佳實施例而已,並不用以限制本公開,凡在本公開的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本公開保護的範圍之內。
101:第一選擇單元
102:第二選擇單元
103:運算單元
104:第一暫存器
105:第二暫存器
106:延遲單元
107:第三暫存器
圖1是本公開實施例的數據處理裝置的結構示意圖。
圖2是本公開另一些實施例的數據處理裝置的結構示意圖。
圖3A是本公開一些實施例的數據處理裝置中各單元的連接方式的示意圖。
圖3B是圖3A所示的連接方式對應的數據處理通路的示意圖。
圖4A是本公開另一些實施例的數據處理裝置中各單元的連接方式的示意圖。
圖4B是圖4A所示的連接方式對應的數據處理通路的示意圖。
圖5是本公開實施例的配置資訊的示意圖。
圖6是本公開具體實施例的數據處理裝置的結構示意圖。
101:第一選擇單元
102:第二選擇單元
103:運算單元
Claims (14)
- 一種數據處理裝置,包括: 具有多個輸入端和多個輸出端的第一選擇單元; 具有多個輸入端和多個輸出端的第二選擇單元;以及 多個運算單元; 所述第一選擇單元的多個輸入端可配置地連接所述第一選擇單元的多個輸出端,所述第一選擇單元的多個輸出端中的至少一部分連接所述多個運算單元的輸入端, 所述多個運算單元的輸出端連接於所述第二選擇單元的多個輸入端, 所述第二選擇單元的多個輸入端可配置地連接所述第二選擇單元的多個輸出端,所述第二選擇單元的多個輸出端中的至少一部分與所述第一選擇單元的多個輸入端連接,和/或與所述數據處理裝置的數據輸出端口連接,以使所述多個運算單元構成不同的運算通路。
- 如請求項1所述的數據處理裝置,還包括: 第一暫存器,用於儲存第一配置資訊,所述第一配置資訊用於配置:所述第一選擇單元的多個輸入端與所述第一選擇單元的多個輸出端之間的連接關係,和/或,所述第二選擇單元的多個輸入端與所述第二選擇單元的多個輸出端之間的連接關係。
- 如請求項1或2所述的數據處理裝置,還包括: 第二暫存器,用於儲存第二配置資訊,所述第二配置資訊用於配置所述多個運算單元中的至少一部分的運算類型。
- 如請求項1至3任意一項所述的數據處理裝置,其中,所述第一選擇單元的多個輸入端包括至少一個第一輸入端,所述第一輸入端與所述數據處理裝置的數據輸入端口連接,用於輸入原始操作數。
- 如請求項1至4中任一項所述的數據處理裝置,其中,所述運算單元用於檢測輸入數據中的有效標識資訊,並響應於檢測到所述輸入數據中的有效標識資訊,對所述輸入數據進行運算。
- 如請求項1至5中任一項所述的數據處理裝置,還包括: 至少一個延遲單元; 所述延遲單元的輸入端連接於所述第一選擇單元的輸出端,所述延遲單元的輸出端連接於所述第二選擇單元的輸入端; 所述延遲單元用於對從所述第一選擇單元的輸出端接收到的數據進行延遲處理,並將所述延遲處理後的數據傳輸至所述第二選擇單元的輸入端。
- 如請求項1至6任意一項所述的數據處理裝置,還包括: 至少一個第三暫存器,所述第三暫存器的輸入端連接所述第二選擇單元的輸出端,所述第三暫存器的輸出端連接所述第一選擇單元的輸入端,或連接於所述數據處理裝置的數據輸出端口。
- 如請求項1至7任意一項所述的數據處理裝置,其中,所述第一選擇單元的多個輸入端包括至少一個第二輸入端,所述第二輸入端通過連接線與所述第二選擇單元的輸出端連接,或者通過連接線與用於儲存運算參數的第四暫存器連接。
- 如請求項1至8任意一項所述的數據處理裝置,其中,所述多個運算單元包括至少一個算數運算單元和/或至少一個邏輯運算單元。
- 一種人工智能晶片,包括權利要求1至9任意一項所述的數據處理裝置。
- 如請求項10所述的人工智能晶片,還包括: 控制單元,所述控制單元用於控制所述數據處理裝置,以使所述數據處理裝置中的多個運算單元構成不同的運算通路。
- 如請求項11所述的人工智能晶片,其中,所述控制單元進一步用於:對所述數據處理裝置的配置資訊進行配置,以使所述數據處理裝置中的多個運算單元構成不同的運算通路。
- 如請求項12所述的人工智能晶片,其中,所述配置資訊包括以下至少任一: 第一配置資訊,用於配置所述第一選擇單元的多個輸入端與所述第一選擇單元的多個輸出端之間的連接關係,和/或所述第二選擇單元的多個輸入端與所述第二選擇單元的多個輸出端之間的連接關係, 第二配置資訊,用於配置所述多個運算單元中的至少一部分的運算類型。
- 如請求項11至13任意一項所述的人工智能晶片,其中,所述第一選擇單元的多個輸入端包括至少一個第一輸入端;所述控制單元進一步用於:將原始操作數寫入所述第一選擇單元的至少一個第一輸入端。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010072639.6A CN113222126B (zh) | 2020-01-21 | 2020-01-21 | 数据处理装置、人工智能芯片 |
CN202010072639.6 | 2020-01-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202129553A true TW202129553A (zh) | 2021-08-01 |
TWI740761B TWI740761B (zh) | 2021-09-21 |
Family
ID=76991985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109146826A TWI740761B (zh) | 2020-01-21 | 2020-12-30 | 數據處理裝置、人工智能晶片 |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP7250953B2 (zh) |
KR (1) | KR20210131417A (zh) |
CN (1) | CN113222126B (zh) |
TW (1) | TWI740761B (zh) |
WO (1) | WO2021147602A1 (zh) |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3170599B2 (ja) * | 1996-03-01 | 2001-05-28 | 経済産業省産業技術総合研究所長 | プログラマブルlsiおよびその演算方法 |
JP2000255668A (ja) * | 1999-03-10 | 2000-09-19 | Giyoumei Furuyama | 食品容器 |
JP2004206326A (ja) * | 2002-12-25 | 2004-07-22 | Seiko Epson Corp | 演算処理回路及びそれを用いた半導体装置 |
US8443169B2 (en) * | 2005-03-28 | 2013-05-14 | Gerald George Pechanek | Interconnection network connecting operation-configurable nodes according to one or more levels of adjacency in multiple dimensions of communication in a multi-processor and a neural processor |
US8442927B2 (en) * | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
US9449257B2 (en) * | 2012-12-04 | 2016-09-20 | Institute Of Semiconductors, Chinese Academy Of Sciences | Dynamically reconstructable multistage parallel single instruction multiple data array processing system |
CN103065330B (zh) * | 2013-01-15 | 2016-01-20 | 南京师范大学 | 基于流水线并行处理技术的粒子滤波目标跟踪方法及装置 |
KR102161742B1 (ko) * | 2013-10-11 | 2020-10-05 | 삼성전자주식회사 | 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법 |
WO2017132385A1 (en) * | 2016-01-26 | 2017-08-03 | Icat Llc | Processor with reconfigurable algorithmic pipelined core and algorithmic matching pipelined compiler |
CN106203617B (zh) * | 2016-06-27 | 2018-08-21 | 哈尔滨工业大学深圳研究生院 | 一种基于卷积神经网络的加速处理单元及阵列结构 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算系统和电子设备 |
US9940534B1 (en) * | 2016-10-10 | 2018-04-10 | Gyrfalcon Technology, Inc. | Digital integrated circuit for extracting features out of an input image based on cellular neural networks |
US11562115B2 (en) * | 2017-01-04 | 2023-01-24 | Stmicroelectronics S.R.L. | Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links |
US11461105B2 (en) * | 2017-04-07 | 2022-10-04 | Intel Corporation | Methods and apparatus for deep learning network execution pipeline on multi-processor platform |
US10789202B2 (en) * | 2017-05-12 | 2020-09-29 | Google Llc | Image processor with configurable number of active cores and supporting internal network |
CN107145467A (zh) * | 2017-05-13 | 2017-09-08 | 贾宏博 | 一种分布式实时计算硬件系统 |
US10755169B2 (en) * | 2017-10-17 | 2020-08-25 | Mediatek Inc. | Hybrid non-uniform convolution transform engine for deep learning applications |
GB2569270B (en) * | 2017-10-20 | 2020-02-19 | Graphcore Ltd | Parallel computing |
GB201717295D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Synchronization in a multi-tile processing array |
CN109034382A (zh) * | 2017-10-30 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 场景或物体的识别方法及相关产品 |
US10915317B2 (en) * | 2017-12-22 | 2021-02-09 | Alibaba Group Holding Limited | Multiple-pipeline architecture with special number detection |
CN110083333A (zh) * | 2019-03-22 | 2019-08-02 | 福州麦辽自动化设备有限公司 | 一种数据处理电路 |
CN110245756B (zh) * | 2019-06-14 | 2021-10-26 | 第四范式(北京)技术有限公司 | 用于处理数据组的可编程器件及处理数据组的方法 |
CN110390383B (zh) * | 2019-06-25 | 2021-04-06 | 东南大学 | 一种基于幂指数量化的深度神经网络硬件加速器 |
CN110427169B (zh) * | 2019-07-12 | 2021-07-02 | 东南大学 | 一种面向人工神经网络的三层结构可配置近似位宽加法器 |
-
2020
- 2020-01-21 CN CN202010072639.6A patent/CN113222126B/zh active Active
- 2020-12-23 KR KR1020217031326A patent/KR20210131417A/ko not_active Application Discontinuation
- 2020-12-23 WO PCT/CN2020/138552 patent/WO2021147602A1/zh active Application Filing
- 2020-12-23 JP JP2021558016A patent/JP7250953B2/ja active Active
- 2020-12-30 TW TW109146826A patent/TWI740761B/zh active
Also Published As
Publication number | Publication date |
---|---|
JP2022527318A (ja) | 2022-06-01 |
JP7250953B2 (ja) | 2023-04-03 |
CN113222126A (zh) | 2021-08-06 |
KR20210131417A (ko) | 2021-11-02 |
TWI740761B (zh) | 2021-09-21 |
WO2021147602A1 (zh) | 2021-07-29 |
CN113222126B (zh) | 2022-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531541B2 (en) | Processing apparatus and processing method | |
US20190138567A1 (en) | Hardware Implementation of Convolutional Layer of Deep Neural Network | |
US11507350B2 (en) | Processing apparatus and processing method | |
EP0100511B1 (en) | Processor for fast multiplication | |
US11537535B2 (en) | Non-volatile memory based processors and dataflow techniques | |
EP3343466A1 (en) | Method and apparatus for a binary neural network mapping scheme utilizing a gate array architecture | |
TWI755043B (zh) | 硬體中s型函數及包括其之可重組態資料處理器 | |
CN111630502A (zh) | 用于神经网络处理器的统一存储器组织 | |
JPH10187438A (ja) | 乗算器の入力に対する遷移を減少させる方法 | |
WO2004003781A2 (en) | Processing system with interspersed processors and communication elements | |
JP2008537268A (ja) | 可変精度相互接続を具えたデータ処理エレメントの配列 | |
CN111615685B (zh) | 可编程乘加阵列硬件 | |
US20120137108A1 (en) | Systems and methods integrating boolean processing and memory | |
TWI740761B (zh) | 數據處理裝置、人工智能晶片 | |
KR100453230B1 (ko) | 초타원곡선 암호화 프로세싱 장치 | |
JP2010117806A (ja) | 半導体装置、および、半導体装置によるデータ処理方法 | |
US8607029B2 (en) | Dynamic reconfigurable circuit with a plurality of processing elements, data network, configuration memory, and immediate value network | |
TWI537819B (zh) | 運算模組、裝置及系統 | |
Gaurav et al. | Design and Implementation of low power RISC V ISA based coprocessor design for Matrix multiplication | |
TW202018502A (zh) | 減少在處理器電路中之功率消耗 | |
Narkhede et al. | Design and implementation of an efficient instruction set for ternary processor | |
Wei et al. | Design of Modular Multiplier Based on Memristor | |
JP2022546785A (ja) | 迅速かつ広範な結果生成のための隣接simdユニットの再利用 | |
JP2023073196A (ja) | デジタルパルス基盤クロスバー演算を行う演算装置及びその動作方法 | |
CN115062565A (zh) | 一种低时延椭圆曲线点乘电路设计方法 |