(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-24
(45)【発行日】2023-04-03
(54)【発明の名称】データ処理装置、及び人工知能チップ
(51)【国際特許分類】
G06F 7/57 20060101AFI20230327BHJP
【FI】
G06F7/57 204
(21)【出願番号】P 2021558016
(86)(22)【出願日】2020-12-23
(86)【国際出願番号】 CN2020138552
(87)【国際公開番号】W WO2021147602
(87)【国際公開日】2021-07-29
【審査請求日】2021-09-29
(31)【優先権主張番号】202010072639.6
(32)【優先日】2020-01-21
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】520180323
【氏名又は名称】上▲海▼商▲湯▼智能科技有限公司
【氏名又は名称原語表記】SHANGHAI SENSETIME INTELLIGENT TECHNOLOGY CO., LTD.
【住所又は居所原語表記】Room 1605A, Building 3, 391 Guiping Road, Xuhui District, Shanghai 200233 China
(74)【代理人】
【識別番号】110000729
【氏名又は名称】弁理士法人ユニアス国際特許事務所
(72)【発明者】
【氏名】▲孫▼ ▲海▼涛
(72)【発明者】
【氏名】王 文▲強▼
(72)【発明者】
【氏名】胡 英俊
(72)【発明者】
【氏名】蒋 科
【審査官】松浦 かおり
(56)【参考文献】
【文献】特開2000-255668(JP,A)
【文献】特開平09-294069(JP,A)
【文献】特開2004-206326(JP,A)
【文献】米国特許出願公開第2015/0310311(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 5/01
G06F 7/38-7/537
G06F 7/57-7/575
G06F 7/74-7/78
(57)【特許請求の範囲】
【請求項1】
データ処理装置であって、
複数の入力端および複数の出力端を有する第1選択ユニットと、
複数の入力端および複数の出力端を有する第2選択ユニットと、
複数の演算ユニットと、
第1構成情報を記憶するための第1レジスタと、を含み、
前記第1選択ユニットの複数の入力端は、前記第1選択ユニットの複数の出力端に構成可能に接続され、前記第1選択ユニットの複数の出力端の中の少なくとも一部は、前記複数の演算ユニットの入力端に接続され、
前記複数の演算ユニットの出力端は、前記第2選択ユニットの複数の入力端に接続され、
前記第2選択ユニットの複数の入力端は、前記第2選択ユニットの複数の出力端に構成可能に接続され、前記第2選択ユニットの複数の出力端の中の少なくとも一部は、前記第1選択ユニットの複数の入力端に接続され、および/または、前記データ処理装置のデータ出力端に接続されることによって、前記複数の演算ユニットが異なる演算経路を構成するように
し、
前記第1構成情報は、前記第1選択ユニットの複数の入力端と前記第1選択ユニットの複数の出力端との間の接続関係、および/または、前記第2選択ユニットの複数の入力端と前記第2選択ユニットの複数の出力端との間の接続関係を構成するために使用される
ことを特徴とするデータ処理装置。
【請求項2】
第2構成情報を記憶するための第2レジスタをさらに含み、
前記第2構成情報は、前記複数の演算ユニットの中の少なくとも一部の演算タイプを構成するために使用される
ことを特徴とする請求項
1に記載のデータ処理装置。
【請求項3】
前記第1選択ユニットの複数の入力端は、少なくとも1つの第1入力端を含み、
前記第1入力端は、前記データ処理装置のデータ入力端に接続され、元のオペランドを入力するために使用される
ことを特徴とする請求項1
または2に記載のデータ処理装置。
【請求項4】
前記演算ユニットは、入力データ中の有効な識別情報を検出し、前記入力データ中の有効な識別情報が検出されたことに応答して、前記入力データを演算する
ことを特徴とする請求項1~
3のいずれか1項に記載のデータ処理装置。
【請求項5】
少なくとも1つの遅延ユニットをさらに含み、
前記遅延ユニットの入力端は、前記第1選択ユニットの出力端に接続され、前記遅延ユニットの出力端は、前記第2選択ユニットの入力端に接続され、
前記遅延ユニットは、前記第1選択ユニットの出力端から受信したデータに対して遅延処理を実行し、前記遅延処理後のデータを前記第2選択ユニットの入力端に伝送する
ことを特徴とする請求項1~
4のいずれか1項に記載のデータ処理装置。
【請求項6】
少なくとも1つの第3レジスタをさらに含み、
前記第3レジスタの入力端は、前記第2選択ユニットの出力端に接続され、前記第3レジスタの出力端は、前記第1選択ユニットの入力端に接続されるか、または、前記データ処理装置のデータ出力端に接続される
ことを特徴とする請求項1~
5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記第1選択ユニットの複数の入力端は、少なくとも1つの第2入力端を含み、前記第2入力端は、接続線を介して前記第2選択ユニットの出力端に接続されるか、または、接続線を介して演算パラメータを記憶するための第4レジスタに接続される
ことを特徴とする請求項1~
6のいずれか1項に記載のデータ処理装置。
【請求項8】
前記複数の演算ユニットは、少なくとも1つの算術演算ユニットおよび/または少なくとも1つの論理演算ユニットを含む
ことを特徴とする請求項1~
7のいずれか1項に記載のデータ処理装置。
【請求項9】
人工知能チップであって、
前記人工知能チップは、請求項1~
8のいずれか1項に記載のデータ処理装置を含む
ことを特徴とする人工知能チップ。
【請求項10】
前記データ処理装置を制御することによって、前記データ処理装置中の複数の演算ユニットが異なる演算経路を構成するようにするための制御ユニットをさらに含む
ことを特徴とする請求項
9に記載の人工知能チップ。
【請求項11】
前記制御ユニットは、さらに、前記データ処理装置の
前記第1構成情報を構成することによって、前記データ処理装置中の複数の演算ユニットが異なる演算経路を構成するようにする
ことを特徴とする請求項
10に記載の人工知能チップ。
【請求項12】
前記第1選択ユニットの複数の入力端は、少なくとも1つの第1入力端を含み、
前記制御ユニットは、さらに、元のオペランドを前記第1選択ユニットの少なくとも1つの第1入力端に書き込む
ことを特徴とする請求項
10または11に記載の人工知能チップ。
【発明の詳細な説明】
【技術分野】
【0001】
<関連出願の相互引用>
本発明は、出願日が2020年1月21日であり、出願番号が202010072639.6であり、発明名称が「データ処理装置、及び人工知能チップ」である中国特許出願の優先権を主張し、当該中国特許出願の全ての内容が参照として本願に組み入れられる。
本発明は、データ処理技術分野に関し、特に、データ処理装置、及び人工知能チップに関する。
【背景技術】
【0002】
様々な適用シナリオ(たとえば、ニューラルネットワーク適用シナリオ)には、加算、減算、乗算、除算などの基本的な単純な関数演算を含む様々な演算操作があり、また、大量の非常に複雑な演算があり、さまざまな適用シナリオに含まれている複雑な演算の形式もさまざまである。同時に、新たなタイプの複雑な演算の組み合わせ方法も次々と現われる。演算タイプの増加および演算量の増加に応じて、演算操作を実行するデータ処理装置の面積および消費電力も増加している。
【発明の概要】
【0003】
本発明は、データ処理装置、及び人工知能チップを提供する。
【0004】
本発明の実施例の第1の態様によると、データ処理装置を提供し、前記装置は、複数の入力端および複数の出力端を有する第1選択ユニットと、複数の入力端および複数の出力端を有する第2選択ユニットと、複数の演算ユニットと、を含み、前記第1選択ユニットの複数の入力端は、前記第1選択ユニットの複数の出力端に構成可能に接続され、前記第1選択ユニットの複数の出力端の中の少なくとも一部は、前記複数の演算ユニットの入力端に接続され、前記複数の演算ユニットの出力端は、前記第2選択ユニットの複数の入力端に接続され、前記第2選択ユニットの複数の入力端は、前記第2選択ユニットの複数の出力端に構成可能に接続され、前記第2選択ユニットの複数の出力端の中の少なくとも一部は、前記第1選択ユニットの複数の入力端に接続され、および/または、前記データ処理装置のデータ出力端に接続されることによって、前記複数の演算ユニットが異なる演算経路を構成するようにする。
【0005】
いくつかの実施例において、前記装置は、第1構成情報を記憶するための第1レジスタをさらに含み、前記第1構成情報は、前記第1選択ユニットの複数の入力端と前記第1選択ユニットの複数の出力端との間の接続関係、および/または、前記第2選択ユニットの複数の入力端と前記第2選択ユニットの複数の出力端との間の接続関係を構成するために使用される。
【0006】
いくつかの実施例において、前記装置は、第2構成情報を記憶するための第2レジスタをさらに含み、前記第2構成情報は、前記複数の演算ユニットの中の少なくとも一部の演算タイプを構成するために使用される。
【0007】
いくつかの実施例において、前記第1選択ユニットの複数の入力端は、少なくとも1つの第1入力端を含み、前記第1入力端は、前記データ処理装置のデータ入力端に接続され、元のオペランドを入力するために使用される。
【0008】
いくつかの実施例において、前記演算ユニットは、入力データ中の有効な識別情報を検出し、前記入力データ中の有効な識別情報が検出されたことに応答して、前記入力データを演算する。
【0009】
いくつかの実施例において、前記装置は、少なくとも1つの遅延ユニットをさらに含み、前記遅延ユニットの入力端は、前記第1選択ユニットの出力端に接続され、前記遅延ユニットの出力端は、前記第2選択ユニットの入力端に接続され、前記遅延ユニットは、前記第1選択ユニットの出力端から受信したデータに対して遅延処理を実行し、前記遅延処理後のデータを前記第2選択ユニットの入力端に伝送する。
【0010】
いくつかの実施例において、前記装置は、少なくとも1つの第3レジスタをさらに含み、前記第3レジスタの入力端は、前記第2選択ユニットの出力端に接続され、前記第3レジスタの出力端は、前記第1選択ユニットの入力端に接続されるか、または、前記データ処理装置のデータ出力端に接続される。
【0011】
いくつかの実施例において、前記第1選択ユニットの複数の入力端は、少なくとも1つの第2入力端を含み、前記第2入力端は、接続線を介して前記第2選択ユニットの出力端に接続されるか、または、接続線を介して演算パラメータを記憶するための第4レジスタに接続される。
【0012】
いくつかの実施例において、前記複数の演算ユニットは、少なくとも1つの算術演算ユニットおよび/または少なくとも1つの論理演算ユニットを含む。
【0013】
本発明の実施例の第2の態様によると、人工知能チップを提供し、前記人工知能チップは、任意の実施例に記載のデータ処理装置を含む。
【0014】
いくつかの実施例において、前記人工知能チップは、前記データ処理装置を制御することによって、前記データ処理装置中の複数の演算ユニットが異なる演算経路を構成するようにするための制御ユニットをさらに含む。
【0015】
いくつかの実施例において、前記制御ユニットは、さらに、前記データ処理装置の構成情報を構成することによって、前記データ処理装置中の複数の演算ユニットが異なる演算経路を構成するようにする。
【0016】
いくつかの実施例において、前記構成情報は、前記第1選択ユニットの複数の入力端と前記第1選択ユニットの複数の出力端との間の接続関係、および/または、前記第2選択ユニットの複数の入力端と前記第2選択ユニットの複数の出力端との間の接続関係を構成するための第1構成情報と、前記複数の演算ユニットの中の少なくとも一部の演算タイプを構成するための第2構成情報と、の中の少なくとも1つを含む。
【0017】
いくつかの実施例において、前記第1選択ユニットの複数の入力端は、少なくとも1つの第1入力端を含み、前記制御ユニットは、さらに、元のオペランドを前記第1選択ユニットの少なくとも1つの第1入力端に書き込む。
【0018】
本発明の実施例のデータ処理装置によると、第1選択ユニットおよび第2選択ユニットの内部の接続方法を変更することによって、異なるデータ処理経路を形成することができ、固定されない装置接続方法によって、演算ユニットの効率的な再利用を実現し、データ処理装置の面積を節約した。また、第1選択ユニットおよび第2選択ユニットの内部の接続方法を構成した後に、本発明の実施例の解決策は演算経路において複数の演算ユニットのパイプライン操作を自動的に形成することができ、効率的なデータ処理を実行し、データ処理消費電力を節約し、より高いエネルギー消費率を得た。
【0019】
上記の一般的な説明および以下の詳細な説明は、例示的および解釈的なものに過ぎず、本発明を限定するものではないことを理解すべきである。
【図面の簡単な説明】
【0020】
ここでの図面は、明細書に組み込まれて本明細書の一部を構成し、これら図面は本発明に一致する実施例を示し、明細書と一緒に本発明の技術的解決策を説明するために使用される。
【
図1】本発明の実施例のデータ処理装置の構成を示す模式図である。
【
図2】本発明のもういくつかの実施例のデータ処理装置の構成を示す模式図である。
【
図3A】本発明いくつかの実施例のデータ処理装置中の各ユニットの接続方法を示す模式図である。
【
図3B】
図3Aに示す接続方法に対応するデータ処理経路を示す模式図である。
【
図4A】本発明のもういくつかの実施例のデータ処理装置中の各ユニットの接続方法を示す模式図である。
【
図4B】
図4Aに示す接続方法に対応するデータ処理経路を示す模式図である。
【
図5】本発明の実施例の構成情報を示す模式図である。
【
図6】本発明具体実施例のデータ処理装置の構成を示す模式図である。
【発明を実施するための形態】
【0021】
ここで、例示的な実施例を詳細に説明し、その例を図面に示す。以下の説明が図面を言及している場合、特に明記しない限り、異なる図面での同じ符号は同じまたは類似の要素を表す。以下の例示的な実施例で説明する実施形態は、本発明に一致するすべての実施形態を表すわけではない。逆に、それらは、添付の特許請求の範囲に詳述されているように、本発明のいくつかの態様に一致する装置と方法の単なる例である。
【0022】
本発明で使用する用語は、特定の実施例を説明することのみを目的としており、本発明を限定することを意図するものではない。本発明および添付の特許請求の範囲で使用される「1種」、「前記」、および、「当該」の単数形も、文脈が他の意味を明確に示さない限り、複数形を含むことを意図する。本明細書で使用される「および/または」という用語は、1つまたは複数の関連するリストされた項目の任意またはすべての可能な組み合わせを指すことをさらに理解すべきである。また、本明細書中の「少なくとも1つ」という用語は、複数中の任意の1つまたは複数中の少なくとも2つの任意の組み合わせを表す。
【0023】
本発明では、第1、第2、第3などの用語を使用してさまざまな情報を説明することができるが、これら情報はこれら用語に限定されるべきではないことを理解すべきである。これら用語は、同じタイプの情報を互いに区別するためにのみ使用される。たとえば、本発明の範囲から逸脱することなく、第1情報はまた第2情報と呼ばれ得、同様に、第2情報もまた第1情報と呼ばれ得る。文脈に応じて、ここで使用される「もし」という単語は、「……と」または「……場合」または「確定されたことに応答して」と解釈することができる。
【0024】
以下、当業者が本発明の実施例の技術的解決策をより良く理解するようにし、また本発明の実施例の前記目的、特徴、及び利点をより明確で分かりやすくするために、図面を参照して本発明の実施例の技術的解決策をさらに詳細に説明する。
【0025】
多くの適用シナリオには、演算操作などの様々なデータ処理操作がよくある。ニューラルネットワークの適用シナリオの例をとると、ニューラルネットワーク中の活性化関数の演算は、加算演算、減算演算、乗算演算、除算演算などの基本的な簡単な関数演算を含む可能性があり、また大量の非常に複雑な演算を含む可能性があり、また、異なるニューラルネットワークに含まれている複雑な演算の形式もさまざまである。同時に、新たなタイプのニューラルネットワークも次々と現われる。したがって、データ処理操作を実行するためのデータ処理装置を設計するときに、演算ユニットのタイプが多いし、データ処理量が大きい問題に直面することが多い。また、データ処理装置は、小面積および低消費電力の設計要求を同時に考慮する必要がある。
【0026】
本発明の実施例は、データ処理装置を提供し、
図1に示すように、前記装置は、
【0027】
複数の入力端および複数の出力端を有する第1選択ユニット101と、複数の入力端および複数の出力端を有する第2選択ユニット102と、複数の演算ユニット103と、を含み得、
【0028】
前記第1選択ユニット101の複数の入力端は、前記第1選択ユニット101の複数の出力端に構成可能に接続され、前記第1選択ユニット101の複数の出力端の中の少なくとも一部は、前記複数の演算ユニット103の入力端に接続され、
【0029】
前記複数の演算ユニット103の出力端は、前記第2選択ユニット102の複数の入力端に接続され、
【0030】
前記第2選択ユニット102の複数の入力端は、前記第2選択ユニット102の複数の出力端に構成可能に接続され、前記第2選択ユニット102の複数の出力端の中の少なくとも一部は、前記第1選択ユニット101の複数の入力端に接続され、および/または、前記データ処理装置のデータ出力端に接続されることによって、前記複数の演算ユニット103が異なる演算経路を構成するようにする。
【0031】
本発明の実施例において、前記第1選択ユニット101および前記第2選択ユニット102は、いずれも複数の入力端および複数の出力端を含み得、前記第1選択ユニット101は、入力端の中の一部または全部を出力端の中の一部または全部に構成可能に接続し、同様に、前記第2選択ユニット102も、入力端の中の一部または全部を出力端の中の一部または全部に構成可能に接続することによって、第1選択ユニット101と前記第2選択ユニット102との間に接続された複数の演算ユニット103が異なるデータ処理経路を構成することができるようにする。実際の適用において、第1選択ユニット101の入力端の数は、第1選択ユニット101の出力端の数と同じでも異なっていてもよいし、第2選択ユニット102の入力端の数は、第2選択ユニット102の出力端の数と同じでも異なっていてもよいし、第1選択ユニット101の入力端の数は、第2選択ユニット102の出力端の数と同じでも異なっていてもよい。
【0032】
本発明の実施例において、選択ユニットの内部接続関係は、要件に応じて構成することができ、たとえば、選択ユニットの入力端と出力端との間の接続関係を要件に応じて構成することができる。または、選択ユニットの外部接続関係は、要件に応じて構成することができ、たとえば、選択ユニットの入力端または出力端と他のユニットとの間の接続関係を要件に応じて構成することができる。
【0033】
第1選択ユニット101の入力端と出力端の接続方法、および、第2選択ユニット102の入力端と出力端の接続方法は、第1構成情報に基づいて確定することができる。前記第1構成情報は、事前に構成することができる。第1構成情報が変化されるときに、第1選択ユニット101の入力端と出力端の接続方法、および、前記第2選択ユニット102の入力端と出力端の接続方法が、いずれも変化されるため、複数の演算ユニット103が異なるデータ処理経路を構成するようにする。前記接続方法は、第1選択ユニット101の各入力端に接続された第1選択ユニット101の出力端、および、前記第2選択ユニット102の各入力端に接続された第2選択ユニット102の出力端を含む。
【0034】
図2に示すように、いくつかの実施例において、前記装置は、第1構成情報を記憶するための第1レジスタ104をさらに含み、前記第1構成情報は、前記第1選択ユニット101の複数の入力端と前記第1選択ユニット101の複数の出力端との間の接続関係、および/または、前記第2選択ユニット102の複数の入力端と前記第2選択ユニット102の複数の出力端との間の接続関係を構成する。前記第1選択ユニット101は、前記第1レジスタ104に接続されることによって、前記第1レジスタ104から前記第1構成情報を取得することができる。同様に、前記第2選択ユニット102も、前記第1レジスタ104に接続されることによって、前記第1レジスタ104から前記第1構成情報を取得することができる。前記第1レジスタ104の数は、1つまたは複数であり得、その数は、前記第1構成情報の長さおよび前記第1レジスタ104の幅によって決定される。
【0035】
図3Aおよび
図3Bは、本発明いくつかの実施例の第1選択ユニット101および前記第2選択ユニット102の接続方法の模式図、および、当該接続方法での各々の演算ユニット103から構成されたデータ処理経路を示す模式図である。
図3Aにおいて、第1選択ユニット101の入力端1と出力端2が接続され、入力端2と出力端4が接続され、入力端3と出力端1が接続され、第2選択ユニット102の入力端1と出力端1が接続され、入力端2と出力端2が接続され、入力端4と出力端3が接続される。このように構成されたデータ処理経路は、順に演算ユニット2、演算ユニット4、および、演算ユニット1を含む。
【0036】
図4Aおよび
図4Bは、本発明のもういくつかの実施例の第1選択ユニット101および前記第2選択ユニット102の接続方法の模式図、および、当該接続方法での各々の演算ユニット103から構成されたデータ処理経路を示す模式図である。
図4Aにおいて、第1選択ユニット101の入力端1と出力端1が接続され、入力端2と出力端2が接続され、入力端3と出力端3が接続され、入力端4と出力端4が接続され、第2選択ユニット102の入力端1と出力端2が接続され、入力端2と出力端3が接続され、入力端3と出力端4が接続され、入力端4と出力端1が接続される。このように構成されたデータ処理経路は、順に演算ユニット1、演算ユニット2、演算ユニット3、および、演算ユニット4を含む。
【0037】
当業者は、以上の接続方法およびデータ処理経路の実施例は、例示的な説明に過ぎず、本発明はこれに限定されないことを理解できる。実際の適用において、第1選択ユニット101の入力端の数と出力端の数および接続方法は、いずれも要件に応じて設定することができる。また、第1選択ユニット101および前記第2選択ユニット102は、いずれも1つの単独の選択ユニットであってもよいし、複数の選択ユニットから構成された選択ユニットであってもよい。本発明は、当該選択ユニットの実施形態を限定しなく、前記例に説明した選択機能を実現できればよい。たとえば、当該選択ユニットは、基本的なゲート回路によって構築された組み合わせ論理に従って実現することができる。
【0038】
ここで、演算ユニット103は、様々なタイプの演算ユニットを含み得る。当該演算ユニットの実現に関しては、本発明は限定しない。たとえば、演算ユニットは、直接一般的なedaメーカーのIPコアを呼び出すことができる。演算ユニットのタイプは、算術演算ユニット、および論理演算ユニットの中の少なくとも1つ、または、ベクトル演算ユニット、スカラー演算ユニット、および行列演算ユニットの中の少なくとも1つなどを含み得るがこれらに限定されない。ここで、算術演算ユニットは、加算および減算演算ユニット、乗算演算ユニット、除算演算ユニット、指数演算ユニット、対数演算ユニット、平方根演算ユニット、三角関数演算ユニット、微分演算ユニット、積分演算ユニット、畳み込み演算ユニット、整数演算ユニットなどの中の少なくとも1つを含み得るがこれらに限定されない。前記論理演算ユニットは、AND演算ユニット、OR演算ユニット、否定演算ユニットなどを含み得る。様々なタイプの演算ユニットの数は、1つまたは複数であり得る。各演算ユニット103は、1つまたは複数の入力端を含んでもよいし、1つまたは複数の出力端を含んでもよい。1つの演算ユニット103が複数の入力端を含む場合、前記演算ユニット103の各入力端は前記第1選択ユニット101の1つの出力端に接続され、1つの演算ユニット103が複数の出力端を含む場合、前記演算ユニット103の各出力端は前記第2選択ユニット102の1つの入力端に接続される。
【0039】
演算ユニット103中の1つまたは複数の演算タイプは、実際の状況に応じて構成することができる。たとえば、選択比較器は、最大値の計算、最小値の計算、最大値の累積の計算などを行うように構成され得、加算および減算演算ユニットは、加算または減算の演算を実行するように構成され得、累積演算ユニットは、累積の計算または加算の実行などを行うように構成され得、指数演算ユニットの累乗指数は、オペランドまたはオペランドの反対数として構成され得る。いくつかの実施例において、前記装置は、第2構成情報を記憶するための第2レジスタ105をさらに含み、前記第2構成情報は、前記複数の演算ユニット103中の少なくとも一部の演算タイプを構成する。前記複数の演算ユニット103中の少なくとも一部は、前記第2レジスタ105に接続されることによって、前記第2レジスタ105から前記第2構成情報を取得することができる。前記第2レジスタ105の数は、1つまたは複数であり得、その数は、前記第2構成情報の長さおよび前記第2レジスタ105の幅に応じて決定され得る。
【0040】
いくつかの実施例において、第1レジスタ104および第2レジスタ105は、同じレジスタであり得、当該レジスタ中の一部のストレージスペースは、第1構成情報を記憶し、もう一部のストレージスペースは、第2構成情報を記憶する。たとえば、レジスタの第1~第N1ビットは、第1構成情報を記憶し、第N1+1~第N2ビットは、第2構成情報を記憶する。いくつかの実施例において、第1レジスタ104および第2レジスタ105は、異なるレジスタであってもよい。
【0041】
いくつかの実施例において、前記第1選択ユニット101の複数の入力端は、少なくとも1つの第1入力端を含み、前記第1入力端は、前記データ処理装置のデータ入力端に接続され、元のオペランドを入力するために使用される。前記第1入力端は、オペランド入力端とも呼ばれる。前記データ処理装置のデータ入力端は、メモリ、外部制御ユニット、または他のデータ処理装置から前記元のオペランドを取得することができる。実際の適用において、前記第1入力端は、前記データ処理装置のデータ入力端に接続され、前記第1入力端自身を前記データ処理装置のデータ入力端として使用する状況を含んでもよい。
【0042】
オペランドの演算を実行するときに、まず第1選択ユニット101の1つのオペランド入力端にオペランドを入力し、第1選択ユニット101によりオペランドを第1選択ユニット101の1つまたは複数の出力端に出力してから、前記1つまたは複数の出力端に接続された演算ユニット103に出力して演算を実行して中間演算結果を得る。中間演算結果は、演算ユニット103の出力端を介して第2選択ユニット102と演算ユニット103とが接続された入力端に出力してから、第2選択ユニット102の入力端により第2選択ユニット102の出力端に出力した後に、第2選択ユニット102の出力端により第1選択ユニット101の入力端に出力し、上記の過程を、最終演算結果が得られるまでに繰り返し、当該最終演算結果を、第2選択ユニット102を通じて前記データ処理装置のデータ出力端に出力する。第1選択ユニット101に入力したオペランドも、演算ユニット103によって演算された後に、最終演算結果として、第2選択ユニット102を介して直接前記データ処理装置のデータ出力端に出力することができる。
【0043】
いくつかの実施例において、前記演算ユニット103は、入力データ中の有効な識別情報を検出し、前記入力データ中の有効な識別情報が検出されたことに応答して、前記入力データを演算する。前記入力データは、元のオペランドであってもよいし、演算ユニット103によって演算された後の中間演算結果であってもよい。演算ユニット103は、元のオペランドを演算して中間演算結果を得た後に、前記有効な識別情報を前記中間演算結果とともに第2選択ユニット102に出力する。
【0044】
本実施例において、前記第1選択ユニット101に有効な識別情報を書き込むことによって、演算操作の実行を開始することができる。有効な識別情報を書き込んだ後にこそ、演算操作の実行を開始し、そうではない場合には、演算操作を実行しない。1回の演算過程で、第1選択ユニット101の特定の入力端に入力した1組のオペランドの数が複数である場合、当該組のオペランドの中の各オペランドに前記有効な識別情報を含ませることができる。
【0045】
たとえば、第1選択ユニット101のオペランド入力端に入力したデータが{1、x、2、x、3}である場合、1、2、および3のような3つのオペランドのみが演算を実行する必要がある有効なオペランドであり、2つのxは、いずれも、無効なオペランドである。この場合、オペランド1、2、および3中にそれぞれ前記有効な識別情報を含ませ、xには前記有効な識別情報を含ませないことによって、有効なオペランドと無効なオペランドを区別することができる。オペランド中に前記有効な識別情報が含まれている場合にのみ、演算ユニット103は、前記オペランドに対して処理を実行し、前記有効な識別情報が含まれていないオペランドに対しては処理を実行しないことによって、データ処理装置の消費電力を節約することができる。
【0046】
いくつかの実施例において、前記装置は、少なくとも1つの遅延ユニット106をさらに含み、前記遅延ユニット106の入力端は、前記第1選択ユニット101の出力端に接続され、前記遅延ユニット106の出力端は、前記第2選択ユニット102の入力端に接続され、前記遅延ユニット106は、前記第1選択ユニット101の出力端から受信したデータに対して遅延処理を実行し、前記遅延処理後のデータを前記第2選択ユニット102の入力端に伝送する。異なるタイプの演算ユニットによって演算を実行するのに必要な時間が異なるため、遅延ユニット106を利用して演算ユニット103各々の入力端のデータに対して時間整列を実行して、複数の入力を有する演算ユニット103の各入力データが同時に効果的に到着するように保証することができる。本発明の例において、遅延ユニットは、レジスタタッピングによって(たとえば、シフトレジスタによって)実現され得る。
【0047】
たとえば、1+exのような演算の場合、まず指数演算ユニットを利用してオペランドに対して指数演算を実行してから、指数演算の結果を加算演算ユニットの第1入力端に入力し、演算パラメータ1を加算演算ユニットの第2入力端に入力した後に、加算ユニットを利用して2つの入力端のデータに対して加算演算を実行する必要がある。加算演算ユニットの第1入力端のデータが第2入力端のデータよりも遅延されるため、演算パラメータ1をまず1つの遅延ユニットに入力して遅延処理を実行してから、加算演算ユニットの第2入力端に入力することによって、加算演算ユニットの第1入力端と第2入力端のデータが同時に到着するようにすることができる。
【0048】
いくつかの実施例において、前記装置は、少なくとも1つの第3レジスタ107をさらに含み、前記第3レジスタ107の入力端は、前記第2選択ユニット102の出力端に接続され、前記第3レジスタ107の出力端は、前記第1選択ユニット101の入力端に接続されるか、または、前記データ処理装置のデータ出力端に接続される。ここで、前記第3レジスタ107の出力端は、前記データ処理装置のデータ出力端に接続され、さらに、前記第3レジスタ107の出力端を前記データ処理装置のデータ出力端として使用する状況を含んでもよい。前記データ出力端は、メモリまたは他のデータ処理装置に接続され得る。第3レジスタ107を設定することによって、データ処理装置の内部のデータ伝送の遅延を減らすことができる。
【0049】
いくつかの実施例において、前記第1選択ユニット101の複数の入力端は、少なくとも1つの第2入力端を含み、前記第2入力端は、接続線を介して前記第2選択ユニット102の出力端に接続されるか、または、接続線を介して演算パラメータを記憶するための第4レジスタに接続される。当該接続線は、2つのユニットのポートの接続を代表し、チップ上では特定の金属トレースとして実装される。前記演算パラメータは、定数演算パラメータであり、たとえば、y=1+xのような演算関数の場合、ここでの「1」が前記演算パラメータである。前記第4レジスタの数は、1つまたは複数であり得、各々の第4レジスタは、0、±1、±2、±Maxなどの、値が異なる演算パラメータを記憶する。前記接続線は、第3構成情報に基づいて第1選択ユニット101の第2入力端を前記第2選択ユニット102の出力端または前記第4レジスタに選択的に接続することができる。
【0050】
第3レジスタおよび第4レジスタは、同じレジスタまたは異なるレジスタであり得、いくつかの実施例において、データ処理装置は、共有キャッシュユニットを含むことによって、前記複数の演算ユニットが共有するようにし、または、さらに、前記第2選択ユニットおよび/または第1選択ユニットが、元のオペランド、演算パラメータ、および演算結果の中の1つまたは複数などの、データをキャッシュするようにすることができ、本発明の実施例はこれに対して限定しない。
【0051】
実際の適用シナリオにおいて、以上の様々な構成情報(第1構成情報、第2構成情報、第3構成情報、および第4構成情報を含む)は、いずれも構成コードであり得るか、または、他のタイプの構成情報であり得る。以上の様々な構成情報は、同じ構成情報中の異なる部分または異なる構成情報であり得る。
【0052】
本発明いくつかの実施例の構成情報は、
図5に示すとおりである。たとえば、第1ビットから第c1ビットまでは、第1構成情報であり、第c1+1ビットから第c1+c2ビットまでは、第2構成情報であり、第c1+c2+1ビットから第c1+c2+c3ビットまでは、第3構成情報であり、第c1+c2+ c3+1ビットから第c1+c2+ c3+c4ビットまでは、第4構成情報である。当該第4構成情報は、遅延ユニット106の遅延サイクル数を構成することができる。異なる第4構成情報に基づいて、遅延ユニット106の遅延サイクル数を1つまたは複数のクロックサイクルに構成することができる。第1選択ユニット101および第2選択ユニット102の内部の接続方法、各々の演算ユニット103の演算タイプ、および/または、接続線の接続方法を構成することによって、様々な複雑な演算タイプに適応し、データ処理装置の再利用率を向上させることができる。
【0053】
前記c1、c2、およびc3の数値は、同じでも異なっていてもよく、構成情報中の各部分の順序も、実際の要件に応じて調整することができる。たとえば、前記構成情報中の第1ビットから第c2ビットまでが第2構成情報であり、第c2+1ビットから第c1+c2ビットまでが第1構成情報であってもよい。構成情報中の各部分の機能および長さは、事前に設定することができる。
【0054】
以上の様々な構成情報(第1、第2、第3、第4構成情報など)は、それぞれ、構成情報全体の各々の部分に対応してもよいし、単独の構成情報であってもよい。単独の構成情報である場合、同じレジスタに記憶されてもよいし、異なるレジスタに記憶されてもよい。
【0055】
1回の演算において、各構成情報はいずれもそのまま維持される。1回の演算が終了した後に、構成情報を変更することによって、演算経路または演算経路上の少なくとも1つの演算ユニットの演算タイプを変更することができる。ここで、前記1回の演算過程とは、第1選択ユニット101の1つまたは複数の入力端にそれぞれ1組のオペランドを入力してから、この組のオペランドに対応する1組の最終演算結果を出力する過程を指し、ここで、第1選択ユニット101の各入力端に入力された1組のオペランド中には、いずれも1つまたは複数のオペランドが含まれており、同じ入力端の1組のオペランドが順に当該入力端に入力される。
【0056】
第1選択ユニット101のk個の入力端にそれぞれ1組の元のオペランドを入力し、各入力端に入力された各組の元のオペランドがそれぞれd11,d12,・・・,d1m、d21,d22,・・・,d2m、・・・dk1,dk2,・・・,dkmであり、mは各組の元のオペランド中の元のオペランドの合計であると仮定すると、まずそれぞれk個の入力端にd11,d21,・・・,dk1を入力してから、それぞれk個の入力端にd12,d22,・・・,dk2を入力し、…、これに応じて最終演算結果r1,r2,・・・,rmを得る。d11,d21,・・・,dk1の入力から、rmの取得までの過程を1回の演算過程と呼ぶ。第1選択ユニット101の複数の入力端に元のオペランドを同時に入力する必要がある場合、各々の入力端に入力される元のオペランドはまず時間整列を介してから第1選択ユニット101の複数の入力端に入力される。
【0057】
本発明の実施例は、2つの構成可能な選択ユニットを利用して、1つまたは複数の元のオペランドをマッピングして演算ユニットの入力に接続してから、演算ユニットの演算結果を再びマッピングして次の演算ユニットの入力に接続し、最終の演算結果を得てから出力する。このような方法によって、データおよび演算が「流れる」ようにする。1回の演算過程において、構成情報をそのまま維持することによって、1回の演算過程で演算経路を固定し、自動的に構成情報に基づいて複数の演算ユニットパイプライン操作を形成して、高効演算を実行する。最終演算結果を取得する前に、各々の演算ユニットによって出力された演算結果は、メモリに記憶する必要がなく、直接次の演算ユニットに入力して続いて演算を実行することによって、メモリアクセス回数を減らし、消費電力を削減する。さらに、演算関数が比較的に複雑であると、まず演算関数中の一部に対して演算を実行し、得られた最終演算結果をメモリに書き込んでから、メモリから前記最終演算結果を読み取って演算関数のもう一部に対して演算を実行した後に、もう一部の最終演算結果をメモリに書き込み、このように複数回繰り返して、演算関数全体の最終演算結果を得る。1回の演算過程を完了した後に、再び構成情報を入力することによって、各々の演算ユニット間の接続方法を変更することによって、本発明の実施例の装置が様々なタイプの演算に適用されるようにし、リソースの効果的な再利用を実現し、面積および消費電力を節約し、より高いエネルギー消費率を得た。
【0058】
本発明の実施例において、事前に異なる演算関数に対して異なる構成情報を確定してから、確定された構成情報を記憶する。後続で、異なる演算関数を使用する必要がある場合、異なる構成情報を呼び出し、構成情報が変化すると、線路の接続関係も対応して変化される。
【0059】
本発明の実施例において、演算ユニットの数、接続線の数量、および、構成コードの幅は、実際の必要に応じて構成することによって、より多タイプの演算を実現し、拡張性がより強い。入力される元のオペランドは、ベクトルまたはスカラー、固定小数点数、または、浮動小数点数であり得、演算ユニットのタイプおよび遅延ユニットのビット幅を調整するだけでこのようなオペランドのタイプを支援することができる。
【0060】
演算ユニットの合計、遅延ユニットの合計、第1選択ユニットのオペランドを入力するための入力端の合計、および、第1選択ユニットの入力端の中の第2選択ユニットに接続された入力端の合計は、同じでも異なっていてもよく、以上の各々の数は、実際の要件に応じて設定することができる。
【0061】
以下、具体的な1実施例を挙げて、本発明の実施例の解決策を説明する。Sigmoid(y=1/(e
-x+1))は、ニューラルネットワークの中の一般的な活性化関数であり、その演算過程は、指数演算、加算演算、除算演算などの基本的な演算に関し、当該Sigmoid関数は、
図6に示す装置を利用して実装することができる。
図6に示すように、本実施例において、装置の機能は、合理的な構成を通じて、Sigmoid活性化関数演算に再構築され、具体的な構成方法は、以下の通りである。
【0062】
ステップ1において、Sigmoidが、オペランドが1つしかない単項関数であり、当該Sigmoidが第1選択ユニットのオペランド入力端1からのものであると仮定すると、構成によって、オペランド入力端1を指数ユニットの入力端に接続する。
【0063】
ステップ2において、構成によって、指数ユニットの出力端を加算ユニットの1つの入力端に接続する。
【0064】
ステップ3において、第3レジスタの演算パラメータ1を出力するための1つの出力端が、加算ユニットのもう1つの入力端に接続されるようにする同時に、除算ユニットの被除数入力端に接続されるように、接続線1を構成する。
【0065】
ステップ4において、構成によって、加算ユニットの出力端を除算ユニットの除数入力端に接続する。
【0066】
ステップ5において、指数ユニットの演算方法をexp(-x)に構成し、加算ユニットを、加算演算を実行するように構成する。
【0067】
ステップ6において、構成によって、除算ユニットの出力端を最終の結果出力端に接続する。
【0068】
構成によって形成された前記演算経路は、完全なSigmoid関数演算を実装した。本発明の実施例は、構成コードを変更することによって、限られた演算ユニットおよび接続線を利用して大量の簡単および複雑な演算タイプを実装することができる。
【0069】
本発明の実施例は、効率的で柔軟に構成できる拡張性が強いデータ処理装置を実現することができ、効率的に様々な複雑な演算を実現する同時に、面積および消費電力も改善した。本発明の実施例の装置を利用してニューラルネットワーク演算中の様々なタイプの活性化関数の演算を実現することができる。ニューラルネットワークの演算に現れる多くの活性化関数は、いくつかの複雑な関数であり、また、ニューラルネットワーク演算を支援するハードウェア装置は汎用性およびスケーラビリティに対して特定の要件があり、本発明の実施例を利用すると、1つの装置で複数の活性化関数を実現することができる。
【0070】
本発明の実施例は、人工知能チップをさらに提供し、前記人工知能チップは、以上の任意の実施例に記載のデータ処理装置を含む。当該人工知能チップ中のデータ処理装置の実施例の詳細は、前記データ処理装置の実施例を参照することができ、ここでは繰り返して説明しない。
【0071】
いくつかの実施例において、前記人工知能チップは、前記データ処理装置を制御することによって、前記データ処理装置中の複数の演算ユニットが異なる演算経路を構成するようにするための制御ユニットをさらに含む。
【0072】
いくつかの実施例において、前記制御ユニットは、さらに、前記データ処理装置の構成情報を構成することによって、前記データ処理装置中の複数の演算ユニットが異なる演算経路を構成するようにする。本発明の実施例において、各々のモジュール、ユニット、または構成要素を構成して該当するオペランドを提供することができる限り、当該制御ユニットの実装形態に対して限定しない。たとえば、当該制御ユニットは、条件を満たすいくつかのペリフェラル回路などによって実装され得る。
【0073】
いくつかの実施例において、前記構成情報は、前記第1選択ユニットの複数の入力端と前記第1選択ユニットの複数の出力端との間の接続関係、および/または、前記第2選択ユニットの複数の入力端と前記第2選択ユニットの複数の出力端との間の接続関係を構成するための第1構成情報と、前記複数の演算ユニットの中の少なくとも一部の演算タイプを構成するための第2構成情報と、の中の少なくとも1つを含む。
【0074】
いくつかの実施例において、前記第1選択ユニットの複数の入力端は、少なくとも1つの第1入力端を含み、前記制御ユニットは、さらに、元のオペランドを前記第1選択ユニットの少なくとも1つの第1入力端に書き込む。
【0075】
前記人工知能チップ中のデータ処理装置の実施例は、上記のデータ処理装置の実施例と同じであり、ここでは繰り返して説明しない。上記の人工知能チップ中の制御ユニットを利用して構成情報を構成する実施例の詳細は、上記のデータ処理装置の実施例中の構成情報を参照することができ、ここでは繰り返して説明しない。
【0076】
当業者は、明細書を検討し、また、ここに開示した発明を実施した後に、本発明の他の実施形態を容易に考えることができる。本発明は、本発明の任意の変形、用途、または適応的変更をカバーすることを意図しており、これら変形、用途、または適応的変更は、本発明の一般原則に従い、本発明の技術分野における常識または従来の技術的手段を含む。明細書および実施例は、例示的なものとしてのみ見なされるべきであり、本発明の真の範囲および精神は、以下の特許請求の範囲によって指摘される。
【0077】
本発明は、上記に説明され、図面に示された正確な構造に限定されず、その範囲から逸脱することなく、様々な修正および変更を行うことができることを理解されたい。本発明の範囲は、添付の特許請求の範囲によってのみ制限される。
【0078】
上記は、本発明のより好ましい実施例に過ぎず、本発明を限定しなく、本開示の精神および原則の範囲内で行われた修正、同等の置き換え、改善などは、本発明の保護の範囲に含まれるものとする。