TWI803663B - 一種運算裝置和運算方法 - Google Patents

一種運算裝置和運算方法 Download PDF

Info

Publication number
TWI803663B
TWI803663B TW108125033A TW108125033A TWI803663B TW I803663 B TWI803663 B TW I803663B TW 108125033 A TW108125033 A TW 108125033A TW 108125033 A TW108125033 A TW 108125033A TW I803663 B TWI803663 B TW I803663B
Authority
TW
Taiwan
Prior art keywords
computing
data
sub
commands
module
Prior art date
Application number
TW108125033A
Other languages
English (en)
Other versions
TW202022644A (zh
Inventor
劉少禮
Original Assignee
大陸商上海寒武紀信息科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 大陸商上海寒武紀信息科技有限公司 filed Critical 大陸商上海寒武紀信息科技有限公司
Publication of TW202022644A publication Critical patent/TW202022644A/zh
Application granted granted Critical
Publication of TWI803663B publication Critical patent/TWI803663B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Paper (AREA)

Abstract

本公開涉及一種運算裝置和運算方法,其中所述運算裝置包括:多個運算模組,該多個運算模組藉由並行執行相應的運算子命令完成網路模型的運算操作;其中,所述運算模組包括:至少一個運算單元,其配置為利用第一運算子資料執行第一運算子命令;儲存單元,其至少用於儲存所述第一運算子資料,該第一運算子資料包括用於執行所述第一運算子命令的資料。本公開實施例能夠降低用於資料存取的頻寬需求,且成本低。

Description

一種運算裝置和運算方法
本公開涉及資料處理技術領域,尤其涉及一種運算裝置、資料處理晶片、電子設備和運算方法。
現有技術中,涉及深度學習的網路模型中通常存在大量的運算,例如神經網路計算中有一些計算需要並行處理,例如正向運算、反向運算以及權值更新等過程都需要大量的並行運算。在傳統的並行計算系統中,處理單元需要從訪存開銷太大的儲存單元中讀寫資料,由於存在大量的並行運算,浙江會導致對頻寬的需求很高,且造成巨大的能耗開銷。
本公開實施例提出了一種能夠减低成本且降低頻寬需求的技術方案,其中提出了一種運算裝置、資料處理晶片、電子設備和運算方法。
根據本公開的第一方面,提供了一種運算裝置,其包括:多個運算模組,該多個運算模組藉由並行執行相應的運算子命令完成網路模型的運算操作;其中,所述運算模組包括:
至少一個運算單元,其配置爲利用第一運算子資料執行第一運算子命令;
儲存單元,其至少用於儲存所述第一運算子資料,該第一運算子資料包括用於執行所述第一運算子命令的資料;
在本公開實施例中,至少兩個運算模組之間存在資料連接,並且其中一個運算模組配置爲利用所述第一運算子資料和另一個運算模組的第二運算子資料執行所述第一運算子命令,其中所述第二運算子資料包括該另一個運算模組中的儲存單元內儲存的資料和/或該另一個運算模組中的運算單元所生成的資料。
在本公開實施例中,還包括控制模組,其配置爲根據接收的運算命令和運算資料,爲各所述運算模組分配對應的運算子命令以及運算子資料;
所述運算命令包括多個運算子命令,以及所述運算資料包括執行各所述運算子命令所需的運算子資料。
在本公開實施例中,所述控制模組包括:
第一分配單元,其配置爲根據運算命令中的運算邏輯關係,將所述運算命令劃分成多個運算子命令,並將該多個運算子命令對應分配至不同的運算模組進行運算;
第二分配單元,其配置爲確定執行各所述運算子命令所需的運算子資料,並將所述運算子資料分配至對應的運算模組進行儲存。
在本公開實施例中,所述控制模組還配置爲根據各運算子命令之間的運算邏輯關係,選擇性地連接各所述運算模組。
在本公開實施例中,所述運算單元包括網路處理器或者電腦設備。
在本公開實施例中,所述儲存單元包括暫存器、暫存器堆以及記憶體陣列中的至少一種。
根據本公開的第二方面,提供了一種資料處理晶片,其包括如上述實施例所述的運算裝置。
根據本公開的第三方面,提供了一種電子設備,其包括如上述實施例所述的資料處理晶片。
根據本公開的第四方面,提供了一種運算方法,所述方法應用在運算裝置中,所述運算裝置包括多個運算模組,該多個運算模組藉由並行執行相應的運算子命令完成網路模型的運算操作,並且所述方法包括:
藉由各運算模組的儲存單元儲存第一運算子資料,該第一運算子資料包括用於執行第一運算子命令的資料;
藉由各運算模組的運算單元利用第一運算子資料執行第一運算子命令。
在本公開實施例中,其中所述藉由各運算模組的運算單元利用第一運算子資料執行第一運算子命令還包括:
利用所述第一運算子資料和另一個運算模組的第二運算子資料執行第一運算子命令;
其中,所述第二運算子資料包括該另一個運算模組中的儲存單元內儲存的資料和/或該另一個運算模組中的運算單元所生成的資料。
在本公開實施例中,所述方法還包括:
根據接收的運算命令和運算資料,爲各所述運算模組分配對應的運算子命令以及運算子資料;
所述運算命令包括多個運算子命令,以及所述運算資料包括執行各所述運算子命令所需的運算子資料。
在本公開實施例中,所述根據接收的運算命令和運算資料,爲各所述運算模組分配對應的運算子命令以及運算子資料包括:
利用第一分配單元根據運算命令中的運算邏輯關係,將所述運算命令劃分成多個運算子命令,並將該多個運算子命令對應分配至不同的運算模組進行運算;
利用第二分配單元確定執行各所述運算子命令所需的運算子資料,並將所述運算子資料分配至對應的運算模組進行儲存。
在本公開實施例中,所述方法還包括:
根據各運算子命令之間的運算邏輯關係,選擇性地連接各所述運算模組。
在本公開實施例中藉由每個運算模組內的儲存單元儲存其運算所需的資料,而不需要將各個運算模組所需的資料都儲存至一個記憶體,該配置可以减少每個運算模組對於儲存單元的資料存取頻寬,提高資料傳輸速度。同時由於不需要大型儲存器件儲存和讀寫所有運算模組的資料,可以不需要設置大容量和高資料讀寫速度的儲存器件,從而降低儲存器件的成本;
另外本公開實施例還可以提高運算裝置的擴展性,藉由增加對應運算功能的運算模組即可以方便的擴展運算裝置的運算功能。
根據下面參考附圖對示例性實施例的詳細說明,本公開的其它特徵及方面將變得清楚。
以下將參考附圖詳細說明本公開的各種示例性實施例、特徵和方面。附圖中相同的附圖標記表示功能相同或相似的元件。儘管在附圖中示出了實施例的各種方面,但是除非特別指出,不必按比例繪製附圖。
在這裡專用的詞“示例性”意爲“用作例子、實施例或說明性”。這裡作爲“示例性”所說明的任何實施例不必解釋爲優於或好於其它實施例。
另外,爲了更好的說明本公開,在下文的具體實施方式中給出了衆多的具體細節。本領域技術人員應當理解,沒有某些具體細節,本公開同樣可以實施。在一些實例中,對於本領域技術人員熟知的方法、手段、元件和電路未作詳細描述,以便於凸顯本公開的主旨。
本公開實施例提供了一種運算裝置,該運算裝置可以用於計算深度學習網路模型的相關運算,並能夠降低運算裝置的成本,同時能夠降低存取資料的頻寬需求。
圖1示出根據本公開實施例的一種運算裝置的方塊圖,其中該運算裝置可以包括:多個運算模組100,該多個運算模組100可以藉由並行執行相應的運算子命令完成網路模型的運算操作,即本公開實施例中的運算模組100可以並行的執行不同的運算子命令,各運算模組100執行的運算子命令用於完成網路模型的運算。圖1示出包括4個運算模組的實施例,各運算模組之間可以相互連接,也可以部分運算模組之間可以相互連接,本公開對此不進行限定。
本公開實施例中的網路模型可以包括神經網路模型,或者也可以包括其他用於機器學習的網路模型,該網路模型可以用於機器學習或者上述神經網路學習,運算裝置可以用於執行該網路模型的運算操作。運算裝置可以接收到關於網路模型的運算命令,並可以基於該運算命令對應的生成多個運算子命令,該多個運算子命令可以分別分配給多個運算模組100,即每個運算模組100可以對應的執行一個或多個運算子命令,從而可以對應完成網路模型的相關運算。其中,運算命令中包括需要運算裝置執行的運算操作。
當網路模型包括人工神經網路模型時,所述運算命令可以包括:運算信息、輸入神經元資料、權值資料和輸出神經元資料。上述運算信息包括但不限於:正向運算指令或反向訓練指令,或其他神經網路運算指令等等,例如卷積運算指令,本申請具體實施方式並不限制上述計算指令的具體表現形式。
如上所述,本公開實施例中的運算裝置可以基於接收的運算命令生成多個運算子命令,並爲各運算模組100分配對應的運算子命令執行相應的運算操作。其中,每個運算模組100包括:至少一個運算單元101,以及和每個運算單元101連接的儲存單元102。每個運算模組中的運算單元101的數量和類型都可以相同或不同,其可以根據不同的運算需求自行設定。其中運算單元101可以包括:一個或多個乘法器、一個或者多個加法器、由加法器組成的加法樹、激活函數單元、向量處理單元等中至少一種或多種,在其他實施例中還可以包括其他運算器件。其中,乘法器可以將輸入資料1(in1)和輸入資料2(in2)相乘得到相乘之後的輸出(out),過程爲:out=in1*in2。加法器可以將輸入資料in1藉由加法器相加得到輸出資料(out)。加法樹可以將輸入資料in1藉由加法樹逐級相加得到輸出資料(out),其中in1是一個長度爲N的向量,N大於1,運算過程爲:out=in1[1]+in1[2]+...+in1[N],和/或將輸入資料(in1)藉由加法樹累加之後和輸入資料(in2)相加得到輸出資料(out),過程爲:out=in1[1]+in1[2]+...+in1[N]+in2,或者將輸入資料(in1)和輸入資料(in2)相加得到輸出資料(out),過稱爲:out=in1+in2。函數激活單元可以將輸入資料(in)藉由激活函數(active)運算得到激活輸出資料(out),過程爲:out=active(in),激活函數active可以包括sigmoid、tanh、relu或者softmax等,也可以爲其他的激活函數。除了做激活操作,函數激活單元也可以實現其他的非線性函數,可將將輸入資料(in)藉由運算(f)得到輸出資料(out),過程爲:out=f(in)。向量處理單元可以處理向量運算和/或池化運算。其中池化運算可以將輸入資料(in)藉由池化運算得到池化操作之後的輸出資料(out),過程爲out=pool (in),其中pool爲池化操作函數,池化操作包括但不限於:平均值池化、最大值池化、中值池化、輸入資料in是和輸出out相關的一個池化核中的資料。
或者,在本公開實施例中,運算單元101也可以包括網路處理器(NPU)或者電腦設備等具有運算功能的電子設備或器件,以用於執行對應的運算子命令,但不作爲本公開實施例的限定。本公開實施例中,運算模組內的運算單元和儲存單元可以爲設置在一個設備或者器件內的電子器件,以方便二者之間的資料傳輸。
本公開實施例中的每個運算模組100中可以包括至少一個運算單元101,用以執行不同的運算,以完成對應的運算子命令。也即,每個運算模組100可以根據接收的運算子命令對應的控制不同的運算單元101執行相應的運算操作,如運算子命令中包括加法指令時利用加法器執行加法操作等,在此,本公開實施例不進行詳細說明,只要能藉由運算子命令識別所要執行的運算程式並利用相應的運算單元101執行對應的運算程式即可以作爲本公開實施例。
另外,運算單元101在執行相應的運算子命令時可能需要調用運算資料,例如,本公開實施例中的運算單元101可以利用第一運算子資料執行第一運算子命令,其中第一運算子命令即爲分配至運算單元101使其執行相應運算的指令,第一運算子資料即爲執行該第一運算子命令所需的資料。
這裡,在藉由網路模型執行對應的運算命令時,可以接收與該運算命令相關的運算資料,本公開實施例中的運算模組可以對應的將該運算資料傳輸至各運算模組的儲存單元102內,或者也可以根據各運算模組100所需執行的運算子命令分配運算子資料給運算模組,該運算子資料爲運算資料中的至少一部分。也即本公開實施例中的儲存單元102至少用於儲存其組內的運算單元所需的第一運算子資料,該第一運算子資料包括用於執行所述第一運算子命令的資料。其中,各運算模組100執行的運算子命令可以相同或者不同,具體可以根據不同的運算需求進行分配。本公開實施例中的儲存單元102可以包括緩衝器、暫存器、暫存器堆以及記憶體陣列中的至少一種,以用於執行資料儲存。
基於本公開實施例的上述配置,可以藉由每個運算模組內的儲存單元儲存其運算所需的資料,而不需要將各個運算模組所需的資料都儲存至一個記憶體,該配置可以减少每個運算模組對於儲存單元的資料存取頻寬,提高資料傳輸速度。同時由於不需要大型儲存器件儲存和讀寫所有運算模組的資料,可以不需要設置大容量和高資料讀寫速度的儲存器件,從而降低儲存器件的成本。
本公開實施例中運算模組100內的各運算單元101可以構造爲H型結構、脈衝陣列機結構和樹型結構中的一種。其中每個運算模組100內的運算單元的結構可以相同也可以不同,本領域技術人員可以根據需求進行設置,本公開對此不進行限制。下面針對上述結構對運算模組內的各運算單元的結構進行說明。
其中,圖5示出根據本公開實施例的構造爲H型結構的運算模組的方塊圖。如圖5所示,在運算模組100內的各運算單元101構造爲H型結構時,各運算單元可以包括主運算單元1001、至少一個分支運算單元1002以及多個從運算單元1003。其中,主運算單元1001可以與各分支運算單元1002連接,分支運算單元1002分別與從運算單元1003中的至少一個連接。如圖5所示,包括四個分支運算單元1002,每個分支運算單元1002分別連接4個從運算單元1003,該分支運算單元1002可以用於傳輸主運算單元1001與從運算單元1003之間的資料、指令以及中間結果。每個分支運算單元1002執行運算子命令時都可以藉由模組內的儲存單元102內儲存的資料執行操作。
主運算單元1001配置爲將接收的運算算子劃分成多個運算指令以及將運算資料劃分成多個資料塊,並藉由分支運算單元1002將運算指令和資料塊傳輸至對應的從運算單元1003進行運算獲得中間結果,並配置爲基於所述中間結果得到最終運算結果,其中分支運算單元配置爲轉發所述主運算單元與從運算單元之間的資料塊和運算指令以及權值等信息。
從運算單元1003在完成相應的運算指令後可以生成對應的中間結果,而後可以藉由分支運算單元1002將該中間結果回傳給主運算單元1001。即各從運算單元可以並行執行8個子矩陣與權值矩陣w的乘法運算和累加運算,並可以得到8個中間結果,將8個中間結果發送給主運算單元1001。
主運算單元1001可以將8個中間結果排序得到相應的運算結果,將該運算結果執行偏置b的運算後執行激活操作得到最終結果y,將最終結果y發送至儲存模組100進行儲存或者傳輸至其他電子期間進行後續處理,即可以該最終結果y可以被輸出或儲存至儲存單元102內。
另外,圖6示出根據本公開實施例的構造爲脉衝陣列機結構的運算模組的方塊圖。其中,在運算模組100內的各運算單元101構造爲脉衝陣列機結構時,各運算單元可以包括主運算單元1001以及多個從運算單元1003。其中,多個從運算單元1003呈陣列分布,多個從運算單元構造爲m行n列個從運算單元,其中m和n爲大於1的正整數,每個從運算單元1003與相鄰的其他從運算單元1003連接,主運算單元1001連接所述多個從運算單元1003中的k個從運算單元1003,所述k個從運算單元1003爲:第1行的n個從運算單元1003、第m行的n個從運算單元1003以及第1列的m個從運算單元1003,需要說明的是,如圖6所示的K個從運算單元1003僅包括第1行的n個從運算單元1003、第m行的n個從運算單元1003以及第1列的m個從運算單元1003,即該k個從運算單元1003爲多個從運算單元1003中直接與主運算單元1001連接的從運算單元1003。該K個從運算單元1003可以用於在所述主運算單元1001以及多個從運算單元1003之間的資料以及指令的轉發。除了K個從運算單元以外的其餘從運算單元配置爲依據該運算指令對接收到的資料塊執行運算得到中間結果,並將運算結果傳輸給所述K個從運算單元。
其中,主運算單元1001可以將分配的運算算子傳輸給K個從運算單元1003進行運算,並可以藉由與其餘的從運算單元1003連接以藉由該其餘的從運算單元1003獲得中間結果,主運算單元1001可以用於將該多個其餘從運算單元1003發送的中間結果進行處理得到最終的運算結果,將該運算結果發送給所述儲存單元102進行儲存。
另外,圖7示出根據本公開實施例的構造爲樹型結構的運算模組的方塊圖。其中,在大運算模組100中的各運算單元構造爲樹型結構時,各運算單元可以包括主運算單元1001以及多個從運算單元1003,以及連接在所述主運算單元1001和從運算單元之間的樹形模組1004。。其中,所述樹型模組1004包括:一個根端口1和多個支端口2,所述樹型模組的根端口連接所述主運算單元1001,所述樹型模組的多個支端口分別連接多個從運算單元中的一個從運算單元;上述樹型模組具有收發功能,如7所示,該樹型模組即爲發送功能,在其他實施例中也可以具有接收功能,在此不進行限定。樹型模組1004可以用於轉發所述主運算單元與所述多個從運算單元之間的資料塊、權值以及運算指令。主運算單元1004可以將接收的運算算子劃分成多個運算指令以及將運算資料劃分成多個資料塊,並傳輸給樹形模組1004,樹形模組1004而後將對應的資料、運算指令以及權值傳輸給相應的從運算單元1003,並從從運算單元1003接收中間結果後傳輸給主運算單元1001。而後,主運算單元1001可以對中間結果進行處理得到最終的運算結果,將該運算結果發送給所述儲存單元102進行儲存。
在本公開實施例中,該樹型模組可以包括至少1層節點,該節點爲具有轉發功能的線結構,該節點本身可以不具有計算功能。如樹型模組具有零層節點,即無需該樹型模組。
該樹型模組1004可以爲n叉樹結構,例如,如圖8示出本公開實施例中的運算單元構造爲二叉樹結構的方塊圖,其中,在其他實施例中,各運算單元也可以構造爲三叉樹結構,或者其他n叉樹結構,該n可以爲大於等於2的整數。本申請具體實施方式並不限制上述n的具體取值,上述層數也可以爲2,或者其他層數。從運算單元可以連接除倒數第二層節點以外的其他層的節點,例如可以連接倒數第一層的節點。
另外,本公開實施例中的運算單元可以携帶單獨的暫存,例如可以包括:神經元暫存單元,該神經元暫存單元暫存該從運算單元的輸入神經元向量資料和輸出神經元值資料。
本公開實施例中,各運算模組可以相互連接,或者也可以選擇性的建立至少兩個運算模組的連接關係。例如,至少兩個運算模組之間存在資料連接,並且其中一個運算模組可以利用所述第一運算子資料和另一個運算模組的第二運算子資料執行所述第一運算子命令,其中第二運算子資料包括該另一個運算模組中的儲存單元內儲存的資料和/或該另一個運算模組中的運算單元所生成的資料。也就是說,本公開實施例中的各運算模組100之間可以存在資料連接關係,如有線連接或者無線連接,藉由該連接關係可以建立兩個運算模組之間的資料傳輸通道。其中運算模組100在執行第一運算子命令時,可能需要其他運算模組100所産生的資料,此時可以藉由該兩個運算模組之間的連接關係,來實現資料的傳輸。
圖2示出根據本公開實施例的運算裝置的方塊圖,其中除了包括多個運算模組100,還可以包括控制模組200。該控制模組200可以用於控制運算模組執行對應的運算子命令,並控制記憶體儲存對應的運算子資料,同時控制模組200還可以控制各運算模組之間的連接狀態。
其中,本公開實施例中的控制模組200可以接收關於網路模型的運算命令,其中可以藉由通訊模組接收和傳送運算命令或者其他信息,也可以藉由控制模組200直接接收運算命令或者其他信息。通訊模組可以包括有線通訊單元和/或無線通訊單元,有線通訊單元可以藉由有線線纜執行信息的傳輸,有線線纜可以包括光纖、雙絞線或者同軸電纜。無線通訊單元可以藉由無線通訊的方式執行信息的傳輸,該無線通訊單元可以包括wifi模組、NFC模組等。同樣,各運算模組100之間也可以藉由有線或者無線的方式執行資料連接,例如可以藉由光纖執行該連接。
控制模組200可以根據接收的運算命令和運算資料,爲各所述運算模組100分配對應的運算子命令以及運算子資料。該運算命令包括用於執行網路模型運算的多個運算子命令,以及運算資料包括執行各所述運算子命令所需的運算子資料。本公開實施例中的控制模組200能夠根據接收的運算命令中的運算邏輯關係確定各運算子命令和運算子資料。例如,控制模組200可以根據運算命令的邏輯關係建立有向圖,該有向圖的節點可以用於區分各運算子命令,即,每兩個節點之間的運算操作所對應的運算命令即可以作爲一個運算子命令,此時還可以根據該運算子命令的輸入資料來確定所需的運算子資料,從而可以分配運算模組執行該運算子命令,並將運算子資料分配給該運算模組中的儲存單元。
另外,控制模組200還可以確定各運算模組在執行對應的運算子命令時,是否需要來自於其他運算模組的資料,如需要,則接通該兩個運算模組之間的連接,如不需要,則不建立兩個運算模組之間的連接。例如,本公開實施例可以藉由一切換組件執行各運算模組之間的接通或關斷,其中可以將每個運算模組分別與該切換組件連接,藉由控制該切換組件對應線路的接通,即可以實現對應運算模組之間的連接。藉由該配置可以簡化運算裝置的內部結構。
圖3示出根據本公開實施例中的控制模組的方塊圖,其中,本公開實施例中的控制模組200可以包括:第一分配單元201和第二分配單元202。
其中,第一分配單元201可以根據接收的運算命令中的運算邏輯關係,將所述運算命令劃分成多個運算子命令,並將該多個運算子命令對應分配至不同的運算模組100進行運算。第二分配單元202可以用於確定執行各所述運算子命令所需的運算子資料,並將運算子資料分配至對應的運算模組進行儲存。
也即,本公開實施例可以藉由第一分配單元201執行運算命令的分配,藉由第二分配單元202執行運算資料的分配,從而可以使得每個運算模組在執行各自的運算子命令時,利用運算模組內的儲存單元內儲存的資料即可完成運算操作。
爲了清楚的體現本公開實施例中的結構配置,下面舉例說明本公開實施例中的運算裝置。本公開實施例中的運算裝置可以包括4個運算模組100,每個運算模組100包括1個儲存單元102以及4個運算單元101。例如,第一個運算模組100包括儲存單元A0和運算單元B0、B1、B11、B10;第二個運算模組100可以包括儲存單元A1和運算單元B2、B9、B12、B15;第三個運算模組100可以包括儲存單元A2和運算單元B4、B5、B6、B7;第四個運算模組100可以包括儲存單元A3和運算單元B3、B8、B13、B14。每個運算模組100中的運算單元可以相互連接,各運算模組100可以根據控制模組200的控制選擇性的連接。
並且,控制模組200還可以根據接收到的運算命令和運算資料爲各運算模組分配對應的運算子命令,同時分配對應的運算子資料給儲存單元。藉由上述的配置,保證了運算裝置的擴展性,同時還藉由各個運算模組的設置實現了運算裝置的Numa架構。
綜上所述,本公開實施例可以藉由每個運算模組內的儲存單元儲存其運算所需的資料,而不需要將各個運算模組所需的資料都儲存至一個記憶體,該配置可以减少每個運算模組對於儲存單元的資料存取頻寬,提高資料傳輸速度。同時由於不需要大型儲存器件儲存和讀寫所有運算模組的資料,可以不需要設置大容量和高資料讀寫速度的儲存器件,從而降低儲存器件的成本。另外本公開實施例還可以提高運算裝置的擴展性,藉由增加對應運算功能的運算模組即可以方便的擴展運算裝置的運算功能。
可以理解,本公開提及的上述各個實施例,在不違背原理邏輯的情况下,均可以彼此相互結合形成結合後的實施例,限於篇幅,本公開不再贅述。
此外,本公開還提供了包括上述實施例中的運算裝置的資料處理晶片、電子設備,以及應用在運算裝置中的運算方法,相應技術方案和描述和參見方法部分的相應記載,不再贅述。
本公開實施例還提供了一種資料處理晶片,其包括如上述實施例中任意一項所述的運算裝置。
在一些實施例裡,本公開提供了一種晶片封裝結構,其包括了上述資料處理晶片。
在一些實施例裡,本公開提供了一種板卡,其包括了上述晶片封裝結構。
本公開實施例還提供了一種電子設備,其包括如上述實施例中任意一項所述的運算裝置或者晶片,或者上述板卡。
電子設備包括資料處理裝置、機器人、電腦、打印機、掃描儀、平板電腦、智能終端、手機、行車記錄儀、導航儀、傳感器、攝像頭、伺服器、雲端伺服器、相機、攝像機、投影儀、手錶、耳機、移動儲存、可穿戴設備、交通工具、家用電器、和/或醫療設備。
所述交通工具包括飛機、輪船和/或車輛;所述家用電器包括電視、空調、微波爐、冰箱、電飯煲、加濕器、洗衣機、電燈、燃氣灶、油煙機;所述醫療設備包括核磁共振儀、B超儀和/或心電圖儀。
另外,本公開實施例還提供了一種運算方法,其應用在上述實施例所輸的運算裝置中,運算裝置包括多個運算模組,該多個運算模組藉由並行執行相應的運算子命令完成網路模型的運算操作。圖4示出根據本公開實施例的運算方法的流程圖,其中可以包括:
S100:藉由各運算模組的儲存單元儲存第一運算子資料,該第一運算子資料包括用於執行第一運算子命令的資料;
S200:藉由各運算模組的運算單元利用第一運算子資料執行第一運算子命令;其中,每個運算模組執行的運算子命令可以不同。
在本公開實施例中,其中所述藉由各運算模組的運算單元利用第一運算子資料執行第一運算子命令還包括:
利用所述第一運算子資料和另一個運算模組的第二運算子資料執行第一運算子命令;
其中,所述第二運算子資料包括該另一個運算模組中的儲存單元內儲存的資料和/或該另一個運算模組中的運算單元所生成的資料。
在本公開實施例中,所述方法還包括:
根據接收的運算命令和運算資料,爲各所述運算模組分配對應的運算子命令以及運算子資料;
所述運算命令包括多個運算子命令,以及所述運算資料包括執行各所述運算子命令所需的運算子資料。
在本公開實施例中,所述根據接收的運算命令和運算資料,爲各所述運算模組分配對應的運算子命令以及運算子資料包括:
利用第一分配單元根據運算命令中的運算邏輯關係,將所述運算命令劃分成多個運算子命令,並將該多個運算子命令對應分配至不同的運算模組進行運算;
利用第二分配單元確定執行各所述運算子命令所需的運算子資料,並將所述運算子資料分配至對應的運算模組進行儲存。
在本公開實施例中,所述方法還包括:
根據各運算子命令之間的運算邏輯關係,選擇性地連接各所述運算模組。
需要說明的是,對於前述的各方法實施例,爲了簡單描述,故將其都表述爲一系列的動作組合,但是本領域技術人員應該知悉,本申請並不受所描述的動作順序的限制,因爲依據本申請,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬可選實施例,所涉及的動作和模組並不一定是本申請所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置,可藉由其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅爲一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是藉由一些接口,裝置或單元的間接耦合或通訊連接,可以是電性或其它的形式。
所述作爲分離部件說明的單元可以是或者也可以不是物理上分開的,作爲單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬件的形式實現,也可以採用軟體程式模組的形式實現。
所述集成的單元如果以軟體程式模組的形式實現並作爲獨立的産品銷售或使用時,可以儲存在一個電腦可讀取記憶體中。基於這樣的理解,本申請的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體産品的形式體現出來,該電腦軟體産品儲存在一個記憶體中,包括若干指令用以使得一台電腦設備(可爲個人電腦、伺服器或者網路設備等)執行本申請各個實施例所述方法的全部或部分步驟。而前述的記憶體包括:USB碟、唯讀記憶體(ROM,Read-Only Memory)、隨機存取記憶體(RAM,Random Access Memory)、移動硬碟、磁碟或者光碟等各種可以儲存程式代碼的介質。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以藉由程式來指令相關的硬件來完成,該程式可以儲存於一電腦可讀記憶體中,記憶體可以包括:閃存碟、唯讀記憶體(英文:Read-Only Memory ,簡稱:ROM)、隨機存取器(英文:Random Access Memory,簡稱:RAM)、磁碟或光碟等。
以上對本申請實施例進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本申請的方法及其核心思想;同時,對於本領域的一般技術人員,依據本申請的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解爲對本申請的限制。
100:運算模組 101:運算單元 102:儲存單元 200:控制模組 201:第一分配單元 202:第二分配單元 1001:主運算單元 1002:分支運算單元 1003:從運算單元 S100~S200:步驟
包含在說明書中並且構成說明書的一部分的附圖與說明書一起示出了本公開的示例性實施例、特徵和方面,並且用於解釋本公開的原理。 圖1示出根據本公開實施例的一種運算裝置的方塊圖; 圖2示出根據本公開實施例的運算裝置的方塊圖; 圖3示出根據本公開實施例中的控制模組的方塊圖; 圖4示出根據本公開實施例的運算方法的流程圖; 圖5示出根據本公開實施例的構造爲H型結構的運算模組的方塊圖; 圖6示出根據本公開實施例的脉衝陣列機結構的運算模組的方塊圖; 圖7示出根據本公開實施例的構造爲樹型結構的運算模組的方塊圖; 圖8示出本公開實施例中的運算單元構造爲二叉樹結構的方塊圖。
100:運算模組
101:運算單元
102:儲存單元

Claims (10)

  1. 一種運算裝置,其特徵在於,包括:多個運算模組,該多個運算模組藉由並行執行相應的運算子命令完成網路模型的運算操作;其中,所述運算模組包括:至少一個運算單元,其配置為利用第一運算子資料執行第一運算子命令;儲存單元,其至少用於儲存所述第一運算子資料,該第一運算子資料包括用於執行所述第一運算子命令的資料;控制模組,其配置為根據接收的運算命令和運算資料,為各所述運算模組分配對應的運算子命令以及運算子資料;所述運算命令包括多個運算子命令,以及所述運算資料包括執行各所述運算子命令所需的運算子資料;所述控制模組還配置為根據各運算子命令之間的運算邏輯關係,選擇性地連接各所述運算模組。
  2. 如請求項1所述的運算裝置,至少兩個運算模組之間存在資料連接,並且其中一個運算模組配置為利用所述第一運算子資料和另一個運算模組的第二運算子資料執行所述第一運算子命令,其中所述第二運算子資料包括該另一個運算模組中的儲存單元內儲存的資料和/或該另一個運算模組中的運算單元所生成的資料。
  3. 如請求項1所述的運算裝置,所述控制模組包括:第一分配單元,其配置為根據運算命令中的運算邏輯 關係,將所述運算命令劃分成多個運算子命令,並將該多個運算子命令對應分配至不同的運算模組進行運算;第二分配單元,其配置為確定執行各所述運算子命令所需的運算子資料,並將所述運算子資料分配至對應的運算模組進行儲存。
  4. 如請求項1所述的運算裝置,所述運算單元包括網路處理器或者電腦設備。
  5. 如請求項1所述的運算裝置,所述儲存單元包括暫存器、暫存器堆以及記憶體陣列中的至少一種。
  6. 一種資料處理晶片,其特徵在於,包括如請求項1-5中任意一項所述的運算裝置。
  7. 一種電子設備,其包括如請求項6所述的資料處理晶片。
  8. 一種運算方法,其特徵在於,所述方法應用在運算裝置中,所述運算裝置包括多個運算模組,該多個運算模組藉由並行執行相應的運算子命令完成網路模型的運算操作,並且所述方法包括:藉由各運算模組的儲存單元儲存第一運算子資料,該第一運算子資料包括用於執行第一運算子命令的資料;藉由各運算模組的運算單元利用第一運算子資料執行第一運算子命令;所述方法還包括:根據接收的運算命令和運算資料,為各所述運算模組分配對應的運算子命令以及運算子資料;所述運算命令包括多個運算子命令,以及所述運算資 料包括執行各所述運算子命令所需的運算子資料;根據各運算子命令之間的運算邏輯關係,選擇性地連接各所述運算模組。
  9. 如請求項8所述的方法,其中所述藉由各運算模組的運算單元利用第一運算子資料執行第一運算子命令還包括:利用所述第一運算子資料和另一個運算模組的第二運算子資料執行第一運算子命令;其中,所述第二運算子資料包括該另一個運算模組中的儲存單元內儲存的資料和/或該另一個運算模組中的運算單元所生成的資料。
  10. 如請求項8所述的方法,所述根據接收的運算命令和運算資料,為各所述運算模組分配對應的運算子命令以及運算子資料包括:利用第一分配單元根據運算命令中的運算邏輯關係,將所述運算命令劃分成多個運算子命令,並將該多個運算子命令對應分配至不同的運算模組進行運算;利用第二分配單元確定執行各所述運算子命令所需的運算子資料,並將所述運算子資料分配至對應的運算模組進行儲存。
TW108125033A 2018-07-17 2019-07-16 一種運算裝置和運算方法 TWI803663B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810782174.6 2018-07-17
CN201810782174.6A CN110728364A (zh) 2018-07-17 2018-07-17 一种运算装置和运算方法

Publications (2)

Publication Number Publication Date
TW202022644A TW202022644A (zh) 2020-06-16
TWI803663B true TWI803663B (zh) 2023-06-01

Family

ID=69217030

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108125033A TWI803663B (zh) 2018-07-17 2019-07-16 一種運算裝置和運算方法

Country Status (3)

Country Link
US (1) US20210117810A1 (zh)
CN (1) CN110728364A (zh)
TW (1) TWI803663B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
EP3651075B1 (en) 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
US12073215B2 (en) 2018-02-13 2024-08-27 Shanghai Cambricon Information Technology Co., Ltd Computing device with a conversion unit to convert data values between various sizes of fixed-point and floating-point data
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
EP3825841A1 (en) 2018-06-27 2021-05-26 Shanghai Cambricon Information Technology Co., Ltd Method and device for parallel computation of a network model
WO2020042739A1 (zh) 2018-08-28 2020-03-05 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
WO2020062392A1 (zh) 2018-09-28 2020-04-02 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111383637A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111831543B (zh) 2019-04-18 2024-07-16 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11934940B2 (en) 2019-04-18 2024-03-19 Cambricon Technologies Corporation Limited AI processor simulation
CN112085183B (zh) 2019-06-12 2024-04-02 上海寒武纪信息科技有限公司 一种神经网络运算方法及装置以及相关产品
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
EP4020321A4 (en) 2019-08-23 2024-01-17 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD, APPARATUS, COMPUTER APPARATUS AND STORAGE MEDIUM
WO2021036905A1 (zh) 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
US11829279B2 (en) * 2021-09-23 2023-11-28 Intel Corporation Systems, apparatus, and methods to debug accelerator hardware
CN114880537B (zh) * 2022-05-13 2023-06-30 深圳宏鹏数字供应链管理有限公司 一种企业风险评估方法、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553395B2 (en) * 1997-12-17 2003-04-22 Elixent, Ltd. Reconfigurable processor devices
CN102262525A (zh) * 2011-08-29 2011-11-30 孙瑞琛 基于矢量运算的矢量浮点运算装置及方法
US20150170021A1 (en) * 2013-12-18 2015-06-18 Marc Lupon Reconfigurable processing unit
CN107341547A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络训练的装置和方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361367A (en) * 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors
US5790880A (en) * 1996-01-04 1998-08-04 Advanced Micro Devices Microprocessor configured to dynamically connect processing elements according to data dependencies
US6452149B1 (en) * 2000-03-07 2002-09-17 Kabushiki Kaisha Toshiba Image input system including solid image sensing section and signal processing section
JP4594666B2 (ja) * 2004-07-12 2010-12-08 富士通株式会社 再構成可能な演算装置
US8106912B2 (en) * 2006-03-30 2012-01-31 Nec Corporation Parallel image processing system control method and apparatus
JP4439491B2 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
WO2008142750A1 (ja) * 2007-05-17 2008-11-27 Fujitsu Limited 演算ユニット、プロセッサ及びプロセッサアーキテクチャ
KR101076869B1 (ko) * 2010-03-16 2011-10-25 광운대학교 산학협력단 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
US11755484B2 (en) * 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
CN107301453B (zh) * 2016-04-15 2021-04-20 中科寒武纪科技股份有限公司 支持离散数据表示的人工神经网络正向运算装置和方法
CN107315571B (zh) * 2016-04-27 2020-07-31 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络正向运算的装置和方法
CN111860813B (zh) * 2016-04-29 2024-01-16 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络正向运算的装置和方法
CN109376861B (zh) * 2016-04-29 2020-04-24 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络训练的装置和方法
US10191881B2 (en) * 2016-06-06 2019-01-29 Hewlett Packard Enterprise Development Lp Modifications to a stream processing topology during processing of a data stream
US10372507B2 (en) * 2016-12-31 2019-08-06 Intel Corporation Compute engine architecture to support data-parallel loops with reduction operations
US11409692B2 (en) * 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
CN108874445A (zh) * 2017-10-30 2018-11-23 上海寒武纪信息科技有限公司 神经网络处理器及使用处理器执行向量点积指令的方法
US11568269B2 (en) * 2017-12-28 2023-01-31 Cambricon Technologies Corporation Limited Scheduling method and related apparatus
KR20210148586A (ko) * 2020-06-01 2021-12-08 삼성전자주식회사 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템
KR20220059224A (ko) * 2020-11-02 2022-05-10 삼성전자주식회사 딥러닝 연산 수행 방법 및 장치
CN115878547A (zh) * 2021-09-26 2023-03-31 中科寒武纪科技股份有限公司 计算装置、利用计算装置实施卷积运算的方法及相关产品

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553395B2 (en) * 1997-12-17 2003-04-22 Elixent, Ltd. Reconfigurable processor devices
CN102262525A (zh) * 2011-08-29 2011-11-30 孙瑞琛 基于矢量运算的矢量浮点运算装置及方法
US20150170021A1 (en) * 2013-12-18 2015-06-18 Marc Lupon Reconfigurable processing unit
CN107341547A (zh) * 2016-04-29 2017-11-10 北京中科寒武纪科技有限公司 一种用于执行卷积神经网络训练的装置和方法

Also Published As

Publication number Publication date
CN110728364A (zh) 2020-01-24
TW202022644A (zh) 2020-06-16
US20210117810A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
TWI803663B (zh) 一種運算裝置和運算方法
EP3825841A1 (en) Method and device for parallel computation of a network model
CN107329734B (zh) 一种用于执行卷积神经网络正向运算的装置和方法
KR102162749B1 (ko) 뉴럴 네트워크 프로세서
US11294599B1 (en) Registers for restricted memory
CN110750351B (zh) 多核任务调度器、多核任务调度方法、装置及相关产品
CN109375951A (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
CN108510064A (zh) 包括多个核心处理模块的人工神经网络的处理系统及方法
CN111199275B (zh) 用于神经网络的片上系统
KR20200139829A (ko) 네트워크 온칩 데이터 처리 방법 및 장치
US20200117990A1 (en) High performance computing system for deep learning
CN112686379B (zh) 集成电路装置、电子设备、板卡和计算方法
CN109753319B (zh) 一种释放动态链接库的装置及相关产品
US11023825B2 (en) Platform as a service cloud server and machine learning data processing method thereof
KR20200138411A (ko) 네트워크 온칩 데이터 처리 방법 및 장치
CN109670581A (zh) 一种计算装置及板卡
CN110059797A (zh) 一种计算装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN111381882B (zh) 数据处理装置及相关产品
CN111291884B (zh) 神经网络剪枝方法、装置、电子设备及计算机可读介质
KR20200139256A (ko) 네트워크 온칩 데이터 처리 방법 및 장치
CN109543835A (zh) 运算方法、装置及相关产品
US20230376562A1 (en) Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method
WO2022001496A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN115037747B (zh) 数据通信方法及装置、分布式系统、设备和介质