(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-28
(54)【発明の名称】計算装置、集積回路チップ、ボードカード、電子機器と計算方法
(51)【国際特許分類】
G06F 9/38 20180101AFI20230721BHJP
G06F 17/10 20060101ALI20230721BHJP
G06F 9/30 20180101ALI20230721BHJP
【FI】
G06F9/38 370C
G06F17/10 Z
G06F9/30 350F
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022581721
(86)(22)【出願日】2021-05-25
(85)【翻訳文提出日】2022-12-28
(86)【国際出願番号】 CN2021095699
(87)【国際公開番号】W WO2022001496
(87)【国際公開日】2022-01-06
(31)【優先権主張番号】202010618112.9
(32)【優先日】2020-06-30
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】522393114
【氏名又は名称】寒武紀(西安)集成電路有限公司
(74)【代理人】
【識別番号】100146374
【氏名又は名称】有馬 百子
(72)【発明者】
【氏名】陶 勁樺
(72)【発明者】
【氏名】劉 少礼
【テーマコード(参考)】
5B013
5B033
5B056
【Fターム(参考)】
5B013AA18
5B013DD03
5B033AA12
5B033BE05
5B056AA04
5B056BB26
5B056BB71
5B056BB72
5B056FF01
5B056FF02
5B056FF05
(57)【要約】
本開示は、計算装置、集積回路チップ、ボードカード、電子機器、前述の計算装置を使用して演算操作を実行する方法を開示した。ここで、この計算装置は、組み合わせ処理装置に含まれてもよく、この組み合わせ処理装置は、汎用相互接続インターフェースと他の処理装置とをさらに含んでもよい。前記計算装置は、他の処理装置とインタラクションを行い、ユーザにより指定される計算操作を共同で完了する。組み合わせ処理装置は、記憶装置をさらに含んでもよく、この記憶装置は、機器及び他の処理装置にそれぞれ接続されて、この機器及び他の処理装置のデータを記憶するために用いられる。本開示の方案は、例えば人工知能分野を含む様々なデータ処理分野における演算の運行効率を高めることができ、それによって演算の全体的なオーバーヘッド及びコストを低減させる。
【選択図】
図6
【特許請求の範囲】
【請求項1】
メイン処理回路と少なくとも一つのスレーブ処理回路とを含む計算装置であって、
前記メイン処理回路は、メイン命令に応答してメイン演算操作を実行するように配置され、
前記スレーブ処理回路は、スレーブ命令に応答してスレーブ演算操作を実行するように配置され、
ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる、計算装置。
【請求項2】
前記メイン処理回路は、
前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び
前記スレーブ命令を前記スレーブ処理回路に送信するように配置される、請求項1に記載の計算装置。
【請求項3】
前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び
前記メイン命令を前記メイン処理回路に送信するとともに前記スレーブ命令を前記スレーブ処理回路に送信するように配置される制御回路をさらに含む、請求項1に記載の計算装置。
【請求項4】
前記メイン命令は、前記前処理操作及び/又は前記後処理操作を識別するための識別ビットを含む、請求項1に記載の計算装置。
【請求項5】
前記計算命令は、前記メイン命令における前記前処理操作と前記後処理操作を区別するためのプリセットビットを含む、請求項1に記載の計算装置。
【請求項6】
前記メイン処理回路は、前記メイン演算操作を実行するためのデータ処理ユニットを含み、そして前記データ処理ユニットは、データ変換操作を実行するためのデータ変換回路、及び/又は、データスティッチング操作を実行するためのデータスティッチング回路を含む、請求項1に記載の計算装置。
【請求項7】
前記データ変換回路は、複数の異なるデータタイプ間での計算データの変換を実現するための一つ又は複数の変換器を含む、請求項6に記載の計算装置。
【請求項8】
前記データスティッチング回路は、所定のビット長で計算データを分割するとともに、分割して得られた複数のデータブロックを所定の順番でスティッチングするように配置される、請求項6に記載の計算装置。
【請求項9】
前記メイン処理回路は、1組又は複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1本の演算パイプラインを形成するとともに一つ又は複数の演算器を含み、ここで、各組の前記パイプライン演算回路が複数の演算器を含む場合、前記複数の演算器は、接続され、且つ前記メイン命令に基づいて選択的に関与して前記メイン演算操作を実行するように配置される、請求項1に記載の計算装置。
【請求項10】
前記メイン処理回路は、少なくとも2本の演算パイプラインを含み、そして各演算パイプラインは、
乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、除算器、プーラー、比較器、絶対値取得回路、論理演算器、位置インデックス回路又はフィルタのうちの一つ又は複数の演算器又は回路を含む、請求項9に記載の計算装置。
【請求項11】
前記スレーブ処理回路は、前記スレーブ演算操作を実行するための複数の演算回路を含み、そして前記複数の演算回路は、接続され、且つ多段パイプラインの演算操作を実行するように配置され、ここで、前記演算回路は、少なくともベクトル演算を実行するために、乗算回路、比較回路、累積加算回路、回転数回路のうちの一つ又は複数を含む、請求項1に記載の計算装置。
【請求項12】
前記スレーブ命令は、前記前処理操作後の計算データに対して畳み込み演算を実行する畳み込み命令を含み、前記スレーブ処理回路は、
前記畳み込み命令に基づいて前記前処理操作後の計算データに対して畳み込み演算を実行するように配置される、請求項11に記載の計算装置。
【請求項13】
請求項1~12のいずれか1項に記載の計算装置を含む、集積回路チップ。
【請求項14】
請求項13に記載の集積回路チップを含む、ボードカード。
【請求項15】
請求項13に記載の集積回路チップを含む、電子機器。
【請求項16】
メイン処理回路と少なくとも一つのスレーブ処理回路とを含む計算装置を使用して計算操作を実行する方法であって、
メイン命令に応答してメイン演算操作を実行するように前記メイン処理回路を配置することと、
スレーブ命令に応答してスレーブ演算操作を実行するように前記スレーブ処理回路を配置することとを含み、
ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる、方法。
【請求項17】
前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び
前記スレーブ命令を前記スレーブ処理回路に送信するように前記メイン処理回路を配置する、請求項16に記載の方法。
【請求項18】
計算装置は、制御回路を含み、前記方法は、
前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び
前記メイン命令を前記メイン処理回路に送信するとともに前記スレーブ命令を前記スレーブ処理回路に送信するように制御回路を配置することをさらに含む、請求項16に記載の方法。
【請求項19】
前記メイン命令は、前記前処理操作及び/又は前記後処理操作を識別するための識別ビットを含む、請求項16に記載の方法。
【請求項20】
前記計算命令は、前記メイン命令における前記前処理操作と前記後処理操作を区別するためのプリセットビットを含む、請求項16に記載の方法。
【請求項21】
前記メイン処理回路は、データ処理ユニットを含み、そして前記データ処理ユニットは、データ変換回路及び/又はデータスティッチング回路を含み、前記方法は、前記メイン演算操作を実行するようにデータ処理ユニットを配置するとともにデータ変換操作を実行するように前記データ変換回路を配置することと、データスティッチング操作を実行するように前記データスティッチング回路を配置することとを含む、請求項16に記載の方法。
【請求項22】
前記データ変換回路は、一つ又は複数の変換器を含み、前記方法は、複数の異なるデータタイプ間での計算データの変換を実現するように一つ又は複数の変換器を配置することを含む、請求項21に記載の方法。
【請求項23】
所定のビット長で計算データを分割するとともに、分割して得られた複数のデータブロックを所定の順番でスティッチングするように前記データスティッチング回路を配置する、請求項21に記載の方法。
【請求項24】
前記メイン処理回路は、1組又は複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1本の演算パイプラインを形成するとともに一つ又は複数の演算器を含み、ここで、各組の前記パイプライン演算回路が複数の演算器を含む場合、前記方法は、前記複数の演算器を接続するとともに、前記メイン命令に基づいて選択的に関与して前記メイン演算操作を実行するように配置することを含む、請求項16に記載の方法。
【請求項25】
前記メイン処理回路は、少なくとも2本の演算パイプラインを含み、そして各演算パイプラインは、
乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、除算器、プーラー、比較器、絶対値取得回路、論理演算器、位置インデックス回路又はフィルタのうちの一つ又は複数の演算器又は回路を含む、請求項24に記載の方法。
【請求項26】
前記スレーブ処理回路は、複数の演算回路を含み、前記方法は、前記スレーブ演算操作を実行するように前記複数の演算回路を配置することを含み、且つ前記方法は、前記複数の演算回路を接続し、且つ多段パイプラインの演算操作を実行するように配置することをさらに含み、ここで、前記演算回路は、少なくともベクトル演算を実行するために、乗算回路、比較回路、累積加算回路、回転数回路のうちの一つ又は複数を含む、請求項16に記載の方法。
【請求項27】
前記スレーブ命令は、前記前処理操作後の計算データに対して畳み込み演算を実行する畳み込み命令を含み、前記方法は、
前記畳み込み命令に基づいて前記前処理操作後の計算データに対して畳み込み演算を実行するように前記スレーブ処理回路を配置することを含む、請求項26に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2020年6月30日に出願された、出願番号が2020106181129で、名称が「計算装置、集積回路チップ、ボードカード、電子機器と計算方法」である中国特許出願の優先権を主張しており、同出願の内容のすべては、ここに参照として取り込まれる。
【0002】
本開示は、一般的に、計算分野に関する。より具体的に、本開示は、計算装置、集積回路チップ、ボードカード、電子機器と計算方法に関する。
【背景技術】
【0003】
計算システムでは、命令セットは、計算の実行と計算システムへの制御に用いられる一連の命令のセットであり、且つ計算システムにおける計算チップ(例えばプロセッサ)の性能を向上させる方面でキーポイントとなる役割を果たしている。現在の様々な計算チップ(特に人工知能分野のチップ)は、関連付けられている命令セットを利用して、様々な汎用又は特定の制御操作とデータ処理操作を完了することができる。しかしながら、現在の命令セットには、多くの欠陥が存在している。例えば、従来の命令セットは、ハードウェアアーキテクチャの制限により、柔軟性の点で比較的に劣っている。さらに、多くの命令は単一の操作しか完了できず、複数の操作を実行するには、通常、複数の命令が必要とされ、これは潜在的にオンチップI/Oデータのスループットの増加を引き起こす。また、現在の命令は、実行速度、実行効率、及びチップに対する電力消費の点で、改善される余地がある。
【発明の概要】
【0004】
少なくとも上記従来技術における問題を解決するために、本開示は、ハードウェアアーキテクチャプラットフォームと関連命令の方案を提供する。本開示に開示された方案を利用することにより、命令の柔軟性を向上させ、命令の実行効率を高めるとともに計算コストとオーバーヘッドを低減させることができる。
【0005】
第一の態様によれば、本開示は、メイン処理回路と少なくとも一つのスレーブ処理回路とを含む計算装置を開示し、ここで、前記メイン処理回路は、メイン命令に応答してメイン演算操作を実行するように配置され、前記スレーブ処理回路は、スレーブ命令に応答してスレーブ演算操作を実行するように配置され、ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる。
【0006】
第二の態様によれば、本開示は、以上の態様で言及され、且つ以下の複数の実施例に記述される計算装置を含む集積回路チップを開示した。
【0007】
第三の態様によれば、本開示は、以上の態様で言及され、且つ以下の複数の実施例に記述される集積回路チップを含むボードカードを開示した。
【0008】
第四の態様によれば、本開示は、以上の態様で言及され、且つ以下の複数の実施例に記述される電子機器を含む電子機器を開示した。
【0009】
第五の態様によれば、本開示は、前述のメイン処理回路と少なくとも一つのスレーブ処理回路とを含む計算装置を使用して計算操作を実行する方法を開示し、ここで、前記方法は、メイン命令に応答してメイン演算操作を実行するように前記メイン処理回路を配置し、スレーブ命令に応答してスレーブ演算操作を実行するように前記スレーブ処理回路を配置することを含み、ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる。
【0010】
本開示に開示された計算装置、集積回路チップ、ボードカード、電子機器と方法を利用することにより、メイン演算操作とスレーブ演算操作に関連するメイン命令とスレーブ命令を効率的に実行することができ、それによって演算操作の実行を速める。さらに、メイン演算操作とスレーブ演算操作との結合により、本開示の計算装置は、より多くのタイプの演算と操作をサポートできるようになる。また、本開示の計算装置のパイプライン演算配置によれば、計算のニーズを満たすために計算命令を柔軟に配置することができる。
【図面の簡単な説明】
【0011】
図面を参照しながら以下の詳細な記述を読むことで、本開示の例示的な実施形態の上記及び他の目的、特徴と利点は理解しやすくなる。図面において、制限的ではなく、例示的な形態で本開示のいくつかの実施形態を示しており、そして同じ又は対応する記号は、同じ又は対応する部分を表す。
【
図1】本開示の実施例による計算装置の概略図である。
【
図2】本開示の実施例による計算装置のブロック図である。
【
図3】本開示の実施例による計算装置のメイン処理回路のブロック図である。
【
図4a】本開示の実施例によるデータ変換回路が実行する行列変換の概略図である。
【
図4b】本開示の実施例によるデータ変換回路が実行する行列変換の概略図である。
【
図4c】本開示の実施例によるデータ変換回路が実行する行列変換の概略図である。
【
図5】本開示の実施例による計算装置のスレーブ処理回路のブロック図である。
【
図6】本開示の実施例による組み合わせ処理装置の構造図である。
【
図7】本開示の実施例によるボードカードの構造概略図である。
【発明を実施するための形態】
【0012】
本開示の方案は、メイン処理回路と少なくとも一つのスレーブ処理回路のハードウェアアーキテクチャを利用して関連付けられるデータ操作を実行することによって、相対的に柔軟で、簡略化された計算命令を利用して相対的に複雑な演算を完了することができる。具体的には、本開示の方案は、計算命令の解析により取得されるメイン命令とスレーブ命令を利用し、そしてメイン処理回路にメイン命令を実行させてメイン演算操作を実現するとともに、スレーブ処理回路にスレーブ命令を実行させてスレーブ演算操作を実現することによって、例えばベクトル演算を含む様々な複雑な演算を実現する。ここで、メイン演算操作は、スレーブ演算操作に対する前処理操作及び/又は後処理操作を含んでもよい。一つの実施例では、この前処理操作は、例えばデータ変換操作及び/又はデータスティッチング操作であってもよい。別の実施例では、この後処理操作は、例えばスレーブ処理回路の出力結果に対する算術操作であってもよい。また、メイン処理回路における演算回路又は演算器の違いによって、本開示の計算命令は、異なる応用シナリオを満たすために、柔軟でパーソナライズされた配置をサポートする。
【0013】
以下、図面を結び付けながら本開示の技術案について詳細に説明する。
【0014】
図1は、本開示の実施例による計算装置100の概略図である。
図1に示すように、計算装置100は、メイン処理回路102とスレーブ処理回路、例えば図示されるスレーブ処理回路104、106、108とを含んでもよい。ここで三つのスレーブ処理回路を示しているが、当業者であれば理解できるように、本開示の計算装置100は、任意の適切な数のスレーブ処理回路を含んでもよく、且つ複数のスレーブ処理回路の間、複数のスレーブ処理回路とメイン処理回路との間は、異なる方式で接続されてもよく、本開示はいかなる制限もしない。一つ又は複数の実施例では、本開示の複数のスレーブ処理回路は、計算装置の処理効率を高めるために、様々なスレーブ命令(例えば計算命令の解析により取得される)を並列に実行することができる。
【0015】
本開示の文脈では、計算命令は、ソフトウェアとハードウェアのインタラクションインターフェースの命令システムにおける命令であってもよく、それはバイナリ又は他の形式の、プロセッサ(又は処理回路と呼ぶ)などのハードウェアが受信して処理する機械語であってもよい。計算命令は、プロセッサの操作を指示するためのオペコードとオペランドを含んでもよい。異なる応用シナリオによって、計算命令は、一つ又は複数のオペコードを含んでもよく、前述の計算命令が一つのオペコードを含む場合、このオペコードは、プロセッサの複数の操作を指示するために用いられてもよい。
【0016】
一つの実施例では、計算装置により受信された計算命令を解析することによってメイン命令とスレーブ命令を得ることができる。操作において、メイン処理回路は、メイン命令に応答してメイン演算操作を実行するように配置されてもよく、前記スレーブ処理回路は、スレーブ命令に応答してスレーブ演算操作を実行するように配置されてもよい。本開示の方案に基づき、前述のメイン命令又はスレーブ命令は、プロセッサ内部で運行されるマイクロ命令又は制御信号であってもよく、そして一つ又は複数の操作を含んでもよい(又は指示してもよい)。
【0017】
一つの実施例では、前述のメイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含んでもよい。具体的には、メイン処理回路によって実行されるメイン命令について、それは例えば、演算に関与するデータに対してデータ変換及び/又はデータスティッチングを行う前処理操作を含んでもよい。いくつかの応用シナリオでは、メイン命令は、データの選択的な読み取りのみをする前処理操作を含んでもよく、例えば、専用又はプライベートバッファに記憶されたデータを読み出してスレーブ処理回路に送信し、又はスレーブ処理回路の演算のために該当する乱数を生成する。別のいくつかの応用シナリオでは、メイン処理回路に含まれる演算器のタイプと数に従って、前記メイン命令は、演算器の機能に関連する一つ又は複数の後処理操作を含んでもよい。例えば、メイン命令は、スレーブ処理回路がスレーブ命令を実行した後に得られた中間演算結果又は最終演算結果に対して、加算、乗算、テーブルルックアップ、比較、平均化、フィルタリングなどの様々なタイプの操作を行うことを含んでもよい。
【0018】
前処理操作及び/又は後処理操作の識別の便宜上、いくつかの応用シナリオでは、前記メイン命令は、前記前処理操作及び/又は後処理操作を識別するための識別ビットを含んでもよい。これにより、メイン命令を取得した時、メイン処理回路は、前記識別ビットに基づいて演算データに対して前処理操作を実行するか後処理操作を実行するかを決定することができる。追加的又は代替的に、前記計算命令のプリセット位置(又は命令フィールドと呼ぶ)によって、前記メイン命令における前記前処理操作と後処理操作を区別することができる。例えば、計算命令には、(メイン命令+スレーブ命令)を含むプリセット位置が設定されている場合、この計算命令におけるメイン命令がスレーブ操作に対する前処理操作に関すると決定できる。また例えば、計算命令には、(スレーブ命令+メイン命令)を含むプリセット位置が設定されている場合、この計算命令におけるメイン命令がスレーブ操作に対する後処理操作に関すると決定できる。理解しやすくするために、計算命令には3段の所定ビット幅(即ち前述のプリセット位置)の長さがあると仮定すると、第一段の所定ビット幅に位置する命令を、前処理操作のためのメイン命令として指定し、中間位置である第二段の所定ビット幅に位置する命令を、スレーブ操作のためのスレーブ命令として指定し、最後位置である第三段の所定ビット幅に位置する命令を、後処理操作のためのメイン命令として指定することができる。
【0019】
スレーブ処理回路により実行されるスレーブ命令について、それは、スレーブ処理回路における一つ又は複数の演算回路の機能に関連する一つ又は複数の操作を含んでもよい。前記スレーブ命令は、メイン処理回路により前処理操作が実行された後のデータに対して演算の操作を実行することを含んでもよい。いくつかの応用シナリオでは、前記スレーブ命令は、算術演算、論理演算、データタイプ変換などの様々な操作を含んでもよい。例えば、スレーブ命令は、前記前処理操作後のデータに対してベクトルに関連する様々な積和操作を実行することを含んでもよく、例えば畳み込み操作を含む。別のいくつかの応用シナリオでは、前述の計算命令に前処理操作に関するメイン命令が含まれていない場合、スレーブ処理回路は、スレーブ命令に基づいて入力データに対して直接スレーブ演算操作を行ってもよい。
【0020】
一つ又は複数の実施例では、メイン処理回路102は、計算命令を取得するとともにそれを解析することによって、前述のメイン命令とスレーブ命令を得て、そしてスレーブ命令をスレーブ処理回路に送信するように配置されてもよい。具体的には、メイン処理回路は、計算命令を解析するための一つ又は複数の復号化回路(又はデコーダと呼ぶ)を含んでもよい。内部の復号化回路によって、メイン処理回路は、受信した計算命令を一つ又は複数のメイン命令及び/又はスレーブ命令に解析することができ、そして該当するスレーブ命令をスレーブ処理回路に送信して、スレーブ処理回路にスレーブ演算操作を実行させる。ここで、応用シナリオの違いによって、複数種の方式でスレーブ命令をスレーブ処理回路に送信することができる。例えば、計算装置に記憶回路が含まれる時、メイン処理回路は、スレーブ命令を記憶回路に送信し、そして記憶回路を介してスレーブ処理回路に送信することができる。また例えば、複数のスレーブ処理回路が並列操作を実行している時、メイン処理回路は、複数のスレーブ処理回路に同じスレーブ命令をブロードキャストすることができる。追加的又は選択的に、いくつかのハードウェアアーキテクチャシナリオでは、計算装置は、計算装置が受信した計算命令を解析するための専用の単独の回路、ユニット又はモジュールをさらに含んでもよく、例えば以下の
図2と結び付けて説明されるアーキテクチャである。
【0021】
一つ又は複数の実施例では、本開示のスレーブ処理回路は、スレーブ演算操作を実行するための複数の演算回路を含んでもよく、ここで、前記複数の演算回路は、接続され、且つ多段パイプラインの演算操作を実行するように配置されてもよい。演算シナリオの違いによって、演算回路は、少なくともベクトル演算を実行するための乗算回路、比較回路、累積加算回路、回転数回路のうちの一つ又は複数を含んでもよい。一つの実施例では、本開示の計算装置が人工知能分野の計算に応用される時、スレーブ処理回路は、スレーブ命令に基づいてニューラルネットワークにおける多次元の畳み込み演算を実行することができる。
【0022】
以上は、
図1を結び付けながら本開示の計算装置について説明したが、本開示の計算装置及びメイン命令とスレーブ命令を利用することで、一つの計算命令を利用して複数の操作を完了することができ、複数の操作を完了するために複数の命令を要することによる各命令に必要とされるデータ転送が減少し、計算装置IOのボトルネック問題が解決され、計算効率が効果的に向上し、計算オーバーヘッドが効果的に減少する。また、本開示の方案は、さらにメイン処理回路に配置される演算器のタイプ、スレーブ処理回路に配置される演算回路の機能に基づいて、メイン処理回路とスレーブ処理回路との連携によって、計算命令に含まれる操作のタイプと数を柔軟に設定することができ、それによって計算装置は、複数のタイプの計算操作を実行可能になり、それにより計算装置の応用シナリオを拡張して豊富にし、異なる計算需要を満たす。また、多段パイプライン演算をサポートするようにメイン処理回路とスレーブ処理回路を配置することができ、それによりメイン処理回路とスレーブ処理回路における演算器の実行効率を向上させ、計算時間をさらに短縮する。以上の記述に基づき、当業者であれば理解できるように、
図1に示すハードウェアアーキテクチャは、例示的なものにすぎず、制限的なものではない。本開示の示唆及び教示で、当業者は、このアーキテクチャに基づいて新たな回路又はデバイスを追加して、より多くの機能又は操作を実現することもできる。例えば、
図1に示すアーキテクチャにおいて、様々な命令とデータを記憶するために記憶回路を追加してもよい。さらに、メイン処理回路とスレーブ処理回路を異なる物理的又は論理的位置に配置してもよく、そして両者の間を様々なデータインターフェース又は相互接続ユニットで接続して、両者のインタラクションによって以上のメイン演算操作とスレーブ演算操作を完了してもよい。
【0023】
図2は、本開示の実施例による計算装置200のブロック図である。理解できるように、
図2に示す計算装置200は、
図1に示す計算装置100の一具体的な実現形態である。そのため、
図1を結び付けて説明した計算装置100のメイン処理回路とスレーブ処理回路の詳細は、同様に
図2に示す計算装置200に適する。
【0024】
図2に示すように、本開示による計算装置200は、メイン処理回路202と複数のスレーブ処理回路204、206、208とを含む。以上で
図1を結び付けてメイン処理回路とスレーブ処理回路の操作について詳細に説明したため、ここでこれ以上説明しない。
図1に示す計算装置100と同じメイン処理回路及びスレーブ処理回路を含むことに加えて、
図2の計算装置200は、制御回路210と記憶回路212とをさらに含む。一つの実施例では、制御回路は、前記計算命令を取得するとともにこの計算命令を解析し、それにより前記メイン命令とスレーブ命令を得て、そして前記メイン命令を前記メイン処理回路202に送信するとともに前記スレーブ命令を前記複数のスレーブ処理回路204、206、208のうちの一つ又は複数に送信するように配置されてもよい。一つのシナリオでは、制御回路は、解析して得られたスレーブ命令をメイン処理回路によってスレーブ処理回路に送信することができ、即ち
図2に示すとおりである。代替的に、制御回路とスレーブ処理回路との間が接続されている時、制御回路は、解析後のスレーブ命令を直接スレーブ処理回路に送信してもよい。これに類似し、記憶回路とスレーブ処理回路との間が接続されている時、制御回路は、記憶回路を介してスレーブ命令をスレーブ処理回路に送信してもよい。
【0025】
一つ又は複数の実施例では、記憶回路212は、計算に関連する様々なデータ又は命令を記憶してもよい。例えば、記憶回路は、ニューラルネットワーク演算に関連するニューロン又は重みデータを記憶してもよく、又はメイン処理回路により後処理操作を実行した後に得られた最終演算結果を記憶してもよい。また例えば、記憶回路は、メイン処理回路により前処理操作を実行した後に得られた中間結果、又はスレーブ処理回路により演算操作を実行した後に得られた中間結果を記憶してもよい。いくつかの応用シナリオでは、記憶回路は、計算装置200のオンチップメモリとしてオフチップメモリとのデータの読み書き操作に用いられてもよく、例えばダイレクトメモリアクセス(「DMA」)によるインターフェースである。いくつかのシナリオでは、計算命令が制御回路によって解析される時、記憶回路は、制御回路により解析した後に得られた演算命令、例えばメイン命令及び/又はスレーブ命令を記憶してもよい。また、
図2において一つのブロック図で記憶回路を示しているが、応用シナリオの違いによって、記憶回路は、メインメモリとメインバッファとを含むメモリとして実現されてもよく、ここで、メインメモリは、関連する演算データ、例えばニューロン、重みと様々な定数項を記憶するために用いられてもよく、メインバッファモジュールは、中間データ、例えば前記前処理操作後のデータと後処理操作前のデータを一時的に記憶するために用いられてもよいが、これらの中間データは、設定に応じて操作員に対して不可視になっていてもよい。
【0026】
メインメモリとメイン処理回路とのインタラクション応用では、メイン処理回路におけるパイプライン演算回路は、さらに主記憶回路に記憶されたマスクコードによって対応する操作を実行してもよい。例えば、パイプライン演算を実行する過程において、この演算回路は、主記憶回路から一つのマスクコードを読み取ってもよく、そしてこのマスクコードを利用して、この演算回路で演算操作を実行するデータが有効であるか否かを表してもよい。主記憶回路は、内部の記憶応用を行うことができるだけでなく、本開示の計算装置外の記憶装置とのデータインタラクションを行う機能をさらに有し、例えばダイレクトメモリアクセス(「DMA」)によって外部の記憶装置とデータのやり取りを行うことができる。
【0027】
図3は、本開示の実施例による計算装置のメイン処理回路300のブロック図である。理解できるように、
図3に示すメイン処理回路300は、
図1と
図2を結び付けて説明されるメイン処理回路である。そのため、
図1と
図2におけるメイン処理回路に対する説明は、同様に以下の
図3の説明にも適する。
【0028】
図3に示すように、前記メイン処理回路300は、データ処理ユニット302と、第一組のパイプライン演算回路304と、最終組のパイプライン演算回路306と、二組の間に位置する1組又は複数組のパイプライン演算回路(黒い丸で代替する)とを含んでもよい。一つの実施例では、データ処理ユニット302は、データ変換回路3021とデータスティッチング回路3022とを含む。前述したように、メイン演算操作がスレーブ演算操作に対する前処理操作、例えばデータ変換操作又はデータスティッチング操作を含む場合、データ変換回路3021又はデータスティッチング回路3022は、該当するメイン命令に基づいて該当する変換操作又はスティッチング操作を実行する。以下は、例によって変換操作とスティッチング操作を説明する。
【0029】
データ変換操作については、データ変換回路に入力されるデータのビット幅が比較的大きい(例えばデータビット幅が1024ビットのビット幅である)場合、データ変換回路は、演算要求に基づいて入力データをビット幅の比較的小さいデータ(例えば出力データのビット幅が512ビットのビット幅である)に変換することができる。異なる応用シナリオに応じて、データ変換回路は、複数種のデータタイプ間の変換をサポートすることができ、例えばFP16(浮動小数点数16ビット)、FP32(浮動小数点数32ビット)、FIX8(固定小数点数8ビット)、FIX4(固定小数点数4ビット)、FIX16(固定小数点数16ビット)などの、異なるビット幅を有するデータタイプ間の変換を行うことができる。データ変換回路に入力されるデータが行列である場合、データ変換操作は、行列要素の配列位置に対して変換を行うことであってもよい。この変換は、例えば行列転置及びミラーリング(後で
図4a~
図4cを結び付けて説明する)と、行列の所定角度(例えば90度、180度又は270度)の回転と、行列の次元の変換とを含んでもよい。
【0030】
データスティッチング操作については、データスティッチング回路は、例えば命令に設定されるビット長に基づいて、データにおける抽出されたデータブロックに対してパリティスティッチングなどの操作を行うことができる。例えば、データビット長が32ビットのビット幅である場合、データスティッチング回路は、4ビットのビット幅の長さに従ってデータを1~8の計8個のデータブロックに分け、そしてデータブロック1、3、5、7の計4個のデータブロックをスティッチングするとともに、データ2、4、6、8の計4個のデータブロックをスティッチングして演算に用いることができる。
【0031】
別のいくつかの応用シナリオでは、演算を実行した後に得られたデータM(例えばベクトルであってもよい)に対して、上記データスティッチング操作を実行してもよい。データスティッチング回路は、データMの偶数行の下位256ビットをまず8ビットのビット幅を1つの単位データとして分割して、32個の偶数行の単位データ(それぞれM_2i0~M_2i31と表される)を得ると仮定する。これに類似し、データMの奇数行の下位256ビットも8ビットのビット幅を1つの単位データとして分割して、32個の奇数行の単位データ(それぞれM_(2i+1)0~M_(2i+1)31と表される)を得る。さらに、データビットの低い順、まず偶数行次に奇数行の順番に基づいて、分割後の32個の奇数行の単位データと32個の偶数行の単位データを順次交互に配置する。具体的には、偶数行の単位データ0(M_2i0)を下位に配置し、さらに奇数行の単位データ0(M_(2i+1)0)を順次配置する。続いて、偶数行の単位データ1(M_2i1)……を配置する。これに基づき類推すると、奇数行の単位データ31(M_(2i+1)31)の配置を完了した時、64個の単位データがスティッチングされて、512ビットのビット幅の新規データを構成する。
【0032】
異なる応用シナリオに応じて、データ処理ユニットにおけるデータ変換回路とデータスティッチング回路は、連携して使用することができ、それによってデータの前処理をより柔軟に行う。例えば、メイン命令に含まれる異なる操作によって、データ処理ユニットは、データスティッチング操作を実行せずにデータ変換のみを実行してもよく、データ変換を実行せずにデータスティッチング操作のみを実行してもよく、又はデータ変換もデータスティッチング操作も実行してもよい。いくつかのシナリオでは、前記メイン命令にスレーブ演算操作に対する前処理操作が含まれていない場合、データ処理ユニットは、前記データ変換回路とデータスティッチング回路を使用不可にするように配置されてもよい。
【0033】
前述したように、本開示によるメイン処理回路は、1組又は複数組の多段パイプライン演算回路を含んでもよく、例えば
図3に示す2組の多段パイプライン演算回路304と306を含んでもよく、ここで各組の多段パイプライン演算回路は、第一段~第N段を含む多段パイプライン操作を実行し、ここで、各段は、一つ又は複数の演算器を含んでもよく、それによって前記メイン命令に基づいて多段パイプライン演算を実行する。一つの実施例では、本開示のメイン処理回路は、単一命令複数データ(Single Instruction Multiple Data、SIMD)モジュールとして実現されてもよく、そして各組の多段パイプライン演算回路は、1本の演算パイプラインを形成してもよい。この演算パイプラインは、演算の需要に応じて、異なる数の、異なる又は同じ機能モジュール(即ち本開示の演算器)、例えば加算モジュール(又は加算器)、乗算モジュール(又は乗算器)、テーブルルックアップモジュール(又はテーブルルックアップ器)などの様々なタイプの機能モジュールを段階的に設置することができる。
【0034】
いくつかの応用シナリオでは、パイプラインの順番要件を満たす時、1本のパイプライン上の異なる機能モジュールを組み合わせて使用することができ、1段のパイプラインは、1つのマイクロ命令における1つのオペコード(「op」)で代表される操作を完了する。これにより、本開示のSIMDは、異なるレベルのパイプライン操作をサポートすることができる。即ち、演算パイプライン上の演算器の設定に基づき、本開示のSIMDは、異なる数のopの組み合わせを柔軟にサポートすることができる。
【0035】
第一組の多段パイプライン演算回路304及び第二組の多段パイプライン演算回路306と類似する1本のパイプライン(その名称を「stage1」で表す)が存在すると仮定し、それは上から下の順に従って6つの機能モジュールが設置されて6段のパイプラインを形成し、具体的には、stage1-1-加算器1(第一段の加算器)、stage1-2-加算器2(第二段の加算器)、stage1-3-乗算器1(第一段の乗算器)、stage1-4-乗算器2(第二段の乗算器)、stage1-5-加算器1(第一段の加算器)、stage1-6-加算器2(第二段の加算器)となっていてもよい。これで分かるように、第一段の加算器(それをパイプラインの第一段とする)と第二段の加算器(それをパイプラインの第二段とする)は、連携して使用されることによって、加算操作の2段の演算を完了する。同様に、第一段の乗算器と第二段の乗算器も、類似する2段の演算を実行する。無論、ここの2段の加算器又は乗算器は、例示的なものにすぎず、制限的なものではなく、いくつかの応用シナリオでは、多段パイプラインにおいて1段だけの加算器又は乗算器を設置してもよい。
【0036】
いくつかの実施例では、2本又はそれ以上の上述のパイプラインを設置してもよく、ここで各パイプラインには、いくつかの同じ又は異なる演算器が含まれてもよく、それによって同じ又は異なる機能を実現する。さらに、異なるパイプラインは、異なる演算器を含んでもよく、それによって各パイプラインは、機能が異なる演算操作を実現する。前述の異なる機能を実現する演算器又は回路は、乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、除算器、プーラー、比較器、絶対値取得回路、論理演算器、位置インデックス回路又はフィルタを含んでもよいが、それらに限らない。ここで、プーラーを例にして、それは、例示的に加算器、除算器、比較器などの演算器から構成されてもよく、それによってニューラルネットワークにおけるプーリング操作を実行する。
【0037】
いくつかの応用シナリオでは、メイン処理回路における多段パイプライン演算は、一項演算(即ち入力データが1項のみある場合)をサポートすることができる。ニューラルネットワークにおけるscale層+relu層での演算操作を例にして、実行すべき計算命令がresult=relu(a*ina+b)で表されると仮定し、ここでinaは、入力データ(例えばベクトル又は行列であってもよい)であり、aとbは、いずれも演算定数である。この計算命令に対して、本開示の、乗算器と、加算器と、非線形演算器とを含む1組の3段パイプライン演算回路を応用して演算を実行することができる。具体的には、第一段のパイプライン乗算器を利用して入力データinaとaの積を算出することができ、それによって第一段のパイプライン演算結果を得る。次に、第二段のパイプラインの加算器を利用し、この第一段のパイプライン演算結果(a*ina)とbに対して、加算演算を実行して第二段のパイプライン演算結果を得ることができる。最後に、第三段のパイプラインのrelu活性化関数を利用し、この第二段のパイプライン演算結果(a*ina+b)に対して活性化操作を行うことができ、それによって最終的な演算結果resultを得る。
【0038】
いくつかの応用シナリオでは、メイン処理回路における多段パイプライン演算回路は、二項演算(例えば畳み込み計算命令result=conv(ina,inb))又は三項演算(例えば畳み込み計算命令result=conv(ina,inb,bias))をサポートすることができ、ここで入力データina、inbとbiasは、ベクトル(例えば整数型、固定小数点型、浮動小数点型のデータであってもよい)であってもよく、行列であってもよい。ここで、畳み込み計算命令result=conv(ina,inb)を例にとると、3段パイプライン演算回路の構造に含まれる複数の乗算器、少なくとも一つの加算ツリーと少なくとも一つの非線形演算器を利用して、この計算命令で表される畳み込み演算を実行することができ、ここで、二つの入力データinaとinbは、例えばニューロンデータであってもよい。具体的には、まず3段パイプライン演算回路における第一段のパイプライン乗算器を利用して計算することによって、第一段のパイプライン演算結果product=ina*inb(演算命令における一つのマイクロ命令とみなされ、それは乗算操作に対応する)を得ることができる。次に第二段のパイプライン演算回路における加算ツリーを利用して、第一段のパイプライン演算結果「product」に対して加算操作を実行することができ、それによって第二段のパイプライン演算結果sumを得る。最後に、第三段のパイプライン演算回路の非線形演算器を利用し、「sum」に対して活性化操作を実行することによって、最終的な畳み込み演算結果を得る。
【0039】
いくつかの応用シナリオでは、演算操作において使用されない1段又は複数段のパイプライン演算回路に対してバイパス操作を実行してもよく、即ち演算操作がすべての多段パイプライン操作を経る必要がなく、演算操作の需要に応じて、多段パイプライン演算回路の1段又は複数段を選択的に使用することができる。ユークリッド距離を計算する演算操作を例にして、その計算命令がdis=sum((ina-inb)^2)で表されると仮定すると、加算器、乗算器、加算ツリーと累積加算器から構成される複数段のパイプライン演算回路のみを使用して演算して最終的な演算結果を得ることができ、使用されていないパイプライン演算回路に対して、パイプライン演算操作前又は操作中においてバイパスすることができる。
【0040】
前述のパイプライン操作において、各組のパイプライン演算回路は、前記パイプライン操作を独立して実行することができる。しかしながら、複数組における各組のパイプライン演算回路は、協同して前記パイプライン操作を実行してもよい。例えば、第一組のパイプライン演算回路における第一段と第二段がシリアルパイプライン演算を実行した後の出力は、別の組のパイプライン演算回路の第三段パイプラインの入力とされてもよい。また例えば、第一組のパイプライン演算回路における第一段と第二段は、並列パイプライン演算を実行し、且つそれぞれのパイプライン演算結果をそれぞれ出力し、別の組のパイプライン演算回路の第一段及び/又は第二段のパイプライン操作の入力とする。
【0041】
図4aと
図4bと
図4cは、本開示の実施例によるデータ変換回路が実行する行列変換の概略図である。メイン処理回路におけるデータ変換回路3021が実行する変換操作をより良く理解するために、以下、元の行列が行う転置操作及び水平ミラーリング操作を例にしてさらに説明する。
【0042】
図4aに示すように、元の行列は、(M+1)行×(N+1)列の行列である。応用シナリオの需要に応じて、データ変換回路は、
図4aに示す元の行列に対して転置操作の変換を行うことができ、それによって
図4bに示す行列を得る。具体的には、データ変換回路は、元の行列における要素の行番号と列番号に対して交換操作を行って転置行列を形成することができる。具体的には、
図4aに示す元の行列において座標が第1行第0列である要素「10」は、その
図4bに示す転置行列における座標が第0行第1列となる。これに基づき類推すると、
図4aに示す元の行列において座標が第M+1行第0列である要素「M0」は、その
図4bに示す転置行列における座標が第0行第M+1列となる。
【0043】
図4cに示すように、データ変換回路は、
図4aに示す元の行列に対して水平ミラーリング操作を行って水平ミラーリング行列を形成することができる。具体的には、前記データ変換回路は、水平ミラーリング操作によって、元の行列における先頭行の要素から最終行の要素への配列順番を、最終行の要素から先頭行の要素への配列順番に変換し、元の行列における要素の列番号をそのまま維持することができる。具体的には、
図4aに示す元の行列において座標がそれぞれ第0行第0列である要素「00」及び第1行第0列である要素「10」は、
図4cに示す水平ミラーリング行列における座標がそれぞれ第M+1行第0列及び第M行第0列となる。これに基づき類推すると、
図4aに示す元の行列において座標が第M+1行第0列である要素「M0」は、
図4cに示す水平ミラーリング行列における座標が第0行第0列となる。
【0044】
図5は、本開示の実施例による計算装置のスレーブ処理回路500のブロック図である。理解できるように、図示される構造は、例示的なものにすぎず、制限的なものではなく、当業者であれば、本開示の教示に基づいてより多くの演算器を追加してより多段のパイプライン演算回路を形成することを想到しうる。
【0045】
図5に示すように、スレーブ処理回路500は、乗算器502、比較器504、セレクタ506、累積加算器508及び変換器510から構成される4段のパイプライン演算回路を含む。一つの応用シナリオでは、このスレーブ処理回路は、全体的にベクトル(例えば行列を含む)演算を実行することができる。
【0046】
ベクトル演算を実行する時、スレーブ処理回路500は、受信したマイクロ命令(図示される制御信号)に基づいて、重みデータとニューロンデータを含むベクトルデータを乗算器に入力するように制御する。乗算操作の実行完了後、乗算器は、結果をセレクタ506に入力する。ここで、セレクタ506は、比較器からの結果ではなく乗算器からの結果を累積加算器508に伝達することを選択し、ベクトル演算における累積加算操作を実行する。次に、累積加算器は、累積加算後の結果を変換器510に伝達して以上に記載のデータ変換操作を実行する。最後に、変換器によって、累積加算の和(即ち図示される「ACC_SUM」)を最終結果として出力する。
【0047】
上記のニューロンデータと重みデータとの間の行列積和(「MAC」)演算の実行に加えて、
図5に示す4段のパイプライン演算回路は、さらにニューラルネットワーク演算におけるヒストグラム演算、depthwise層積和演算、積分及びwinograd積和演算などの演算の実行に用いられてもよい。ヒストグラム演算を実行する時、第一段の演算において、スレーブ処理回路は、マイクロ命令に基づいて入力データを比較器に入力する。それに応じて、ここでセレクタ506は、乗算器の結果ではなく比較器の結果を累積加算器に伝達して後続の操作を実行することを選択する。
【0048】
以上の説明により、当業者であれば理解できるように、ハードウェアの配置として、本開示のスレーブ処理回路は、スレーブ演算操作を実行するための複数の演算回路を含んでもよく、そして前記複数の演算回路は、接続され、且つ多段パイプラインの演算操作を実行するように配置される。一つ又は複数の実施例では、前述の演算回路は、少なくともベクトル演算、例えばニューラルネットワークにおける多次元畳み込み演算を実行するために、乗算回路、比較回路、累積加算回路、回転数回路のうちの一つ又は複数を含んでもよいが、それらに限らない。
【0049】
一つの演算シナリオでは、本開示のスレーブ処理回路は、スレーブ命令(例えば一つ又は複数のマイクロ命令又は制御信号として実現される)に基づいて、メイン処理回路により前処理操作が実行されたデータに対して演算を行うことができ、それによって所望の演算結果を得る。別の演算シナリオでは、スレーブ処理回路は、その演算後に得られた中間結果をメイン処理回路におけるデータ処理ユニットに送信(例えば相互接続インターフェースを介して送信)することができ、それによってデータ処理ユニットにおけるデータ変換回路が中間結果に対してデータタイプ変換を実行し、又はデータ処理ユニットにおけるデータスティッチング回路が中間結果に対してデータ分割とスティッチング操作を実行することによって、最終的な演算結果を得る。以下は、いくつかの例示的な命令を結び付けて本開示のメイン処理回路とスレーブ処理回路の操作を説明する。
【0050】
前処理操作を含む計算命令「COSHLC」を例にして、それが実行する操作(メイン処理回路が実行する前処理操作とスレーブ処理回路が実行するスレーブ演算操作とを含む)は、
COSHLC=FPTOFIX+SHUFFLE+LT3DCONVと表されてもよく、
ここで、FPTOFIXは、メイン処理回路におけるデータ変換回路が実行するデータタイプ変換操作、即ち入力データを浮動小数点型から固定小数点型に変換することを表し、SHUFFLEは、データスティッチング回路が実行するデータスティッチング操作を表し、LT3DCONVは、スレーブ処理回路(「LT」で示される)が実行する3DCONV操作、即ち3次元データの畳み込み操作を表す。理解できるように、3次元データの畳み込み操作のみを実行する場合、メイン操作の一部分としてのFPTOFIXとSHUFFLEは、いずれも選択的な操作として設定されてもよい。
【0051】
後処理操作を含む計算命令LCSUを例にして、それが実行する操作(スレーブ処理回路が実行するスレーブ演算操作とメイン処理回路が実行する後処理操作とを含む)は、
LCSU=LT3DCONV+SUBと表されてもよく、
ここで、スレーブ処理回路がLT3DCONV操作を実行して3D畳み込み結果を得た後、メイン処理回路における減算器によって3D畳み込み結果に対して減算操作SUBを実行することができる。これにより、各命令の実行周期において、1つの2項オペランド(即ち畳み込み結果と減数)を入力し、1つの1項オペランド(即ちLCSU命令実行後に得られた最終結果)を出力することができる。
【0052】
さらに、前処理操作と、スレーブ演算操作と、後処理操作とを含む計算命令SHLCADを例にして、それが実行する操作(メイン処理回路が実行する前処理操作と、スレーブ処理回路が実行するスレーブ演算操作と、メイン処理回路が実行する後処理操作とを含む)は、
SHLCAD=SHUFFLE+LT3DCONV+ADDと表されてもよく、
ここで、前記前処理操作において、データスティッチング回路は、SHUFFLEで表されるデータスティッチング操作を実行する。次に、スレーブ処理回路によって、スティッチング後のデータに対してLT3DCONV操作を実行して3D畳み込み結果を得る。最後に、メイン処理回路における加算器によって、3D畳み込み結果に対して加算操作ADDを実行して最終的な計算結果を得る。
【0053】
以上の例により、当業者であれば理解できるように、計算命令を解析した後に、本開示が得た演算命令は、具体的な演算操作によって、前処理命令とスレーブ処理命令、スレーブ処理命令と後処理命令、及び前処理命令、スレーブ処理命令と後処理命令の組み合わせのうちの一つを含む。これに基づき、いくつかの実施例では、前記前処理命令は、データ変換命令及び/又はデータスティッチング命令を含んでもよい。別のいくつかの実施例では、前記後処理命令は、乱数処理命令、加算命令、減算命令、テーブルルックアップ命令、パラメータ配置命令、乗算命令、プーリング命令、活性化命令、比較命令、絶対値命令、論理演算命令、位置インデックス命令又はフィルタリング命令のうちの一つ又は複数を含む。別のいくつかの実施例では、前記スレーブ処理命令は、様々なタイプの演算命令を含んでもよく、後処理命令と類似する命令、及び複雑なデータ処理に対する命令、例えばベクトル演算命令を含むが、これらに限らない。
【0054】
以上の
図1~
図5の説明により、当業者であれば理解できるように、本開示は、実際に前述の計算装置を使用して計算操作を実行する方法も開示した。異なる実現シナリオでは、この計算装置は、例えばメイン処理回路と少なくとも一つのスレーブ処理回路とを含んでもよい。これに基づき、この方法は、メイン命令に応答してメイン演算操作を実行するように前記メイン処理回路を配置し、スレーブ命令に応答してスレーブ演算操作を実行するように前記スレーブ処理回路を配置することを含んでもよく、ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる。
【0055】
一つの実施例では、上記方法は、前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び前記スレーブ命令を前記スレーブ処理回路に送信するように前記メイン処理回路を配置してもよい。別の実施例では、上記計算装置が以上に記載の制御回路を含む場合、前記方法は、前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び前記メイン命令を前記メイン処理回路に送信するとともに前記スレーブ命令を前記スレーブ処理回路に送信するように制御回路を配置することをさらに含む。ここで簡潔のために、本開示の方法で実行できるステップについては、これ以上説明しない。当業者であれば理解できるように、本開示の方法は、以上の
図1~
図5を結び付けて説明された様々な操作ステップを実行することを含んでもよい。
【0056】
図6は、本開示の実施例による組み合わせ処理装置600の構造図である。
図6に示すように、この組み合わせ処理装置600は、計算処理装置602と、インターフェース装置604と、他の処理装置606と、記憶装置608とを含む。異なる応用シナリオに応じて、計算処理装置には、一つ又は複数の計算装置610が含まれてもよく、この計算装置は、本明細書の
図1~
図5で説明された操作を実行するように配置されてもよい。
【0057】
異なる実施例では、本開示の計算処理装置は、ユーザにより指定される操作を実行するように配置されてもよい。例示的な応用では、この計算処理装置は、シングルコア人工知能プロセッサ又はマルチコア人工知能プロセッサとして実現されてもよい。これに類似し、計算処理装置を含む一つ又は複数の計算装置は、人工知能プロセッサコア又は人工知能プロセッサコアの一部のハードウェア構造として実現されてもよい。複数の計算装置が人工知能プロセッサコア又は人工知能プロセッサコアの一部のハードウェア構造として実現される時、本開示の計算処理装置は、シングルコア構造又はホモジニアスマルチコア構造を有するとみなされてもよい。
【0058】
例示的な操作では、本開示の計算処理装置は、インターフェース装置によって他の処理装置とインタラクションを行うことができ、それによってユーザにより指定される操作を共同で完了する。実現形態の違いによって、本開示の他の処理装置は、中央プロセッサ(Central Processing Unit、CPU)、グラフィックスプロセッサ(Graphics Processing Unit、GPU)、人工知能プロセッサなどの汎用及び/又は専用プロセッサのうちの一つ又は複数のタイプのプロセッサを含んでもよい。これらのプロセッサは、デジタルシグナルプロセッサ(Digital Signal Processor、DSP)、専用集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)又は他のプログラマブル論理デバイス、ディスクリートゲート又はトランジスタ論理デバイス、ディスクリートハードウェアアセンブリなどを含んでもよいが、これらに限らない。そして、その数は、実際の必要に応じて決定されてもよい。前述したように、本開示の計算処理装置のみについては、それは、シングルコア構造又はホモジニアスマルチコア構造を有するとみなされてもよい。しかしながら、計算処理装置と他の処理装置とを共同で考慮する時、両者は、ヘテロジニアスマルチコア構造を形成するとみなされてもよい。
【0059】
一つ又は複数の実施例では、この他の処理装置は、本開示の計算処理装置(それは人工知能、例えばニューラルネットワーク演算の関連演算装置として具現化されてもよい)と外部データ及び制御とのインターフェースとして、基本的な制御を実行することができ、データ転送、計算装置のオン及び/又はオフなどを含むが、それらに限らない。別の実施例では、他の処理装置は、この計算処理装置と連携して共同で演算タスクを完了することもできる。
【0060】
一つ又は複数の実施例では、このインターフェース装置は、計算処理装置と他の処理装置との間でデータと制御命令を伝送するために用いられてもよい。例えば、この計算処理装置は、前記インターフェース装置を介して他の処理装置から入力データを取得し、この計算処理装置のオンチップ記憶装置(又はメモリと呼ぶ)に書き込むことができる。さらに、この計算処理装置は、前記インターフェース装置を介して他の処理装置から制御命令を取得し、計算処理装置のオンチップ制御バッファに書き込むことができる。代替的又は選択的に、インターフェース装置は、計算処理装置の記憶装置におけるデータを読み取って他の処理装置に伝送してもよい。
【0061】
追加的又は選択的に、本開示の組み合わせ処理装置は、記憶装置をさらに含んでもよい。図に示すように、この記憶装置は、前記計算処理装置及び前記他の処理装置にそれぞれ接続される。一つ又は複数の実施例では、記憶装置は、前記計算処理装置及び/又は前記他の処理装置のデータを保存するために用いられてもよい。例えば、このデータは、計算処理装置又は他の処理装置の内部又はオンチップ記憶装置にすべて保存できないデータであってもよい。
【0062】
いくつかの実施例では、本開示は、チップ(例えば
図7に示すチップ702)をさらに開示した。一実現形態では、このチップは、システムレベルチップ(System on Chip、SoC)であり、そして一つ又は複数の
図6に示す組み合わせ処理装置が集積されている。このチップは、外部向けインターフェース装置(例えば
図7に示す外部向けインターフェース装置706)によって他の関連部材と接続されてもよい。この関連部材は、例えばウェブカメラ、ディスプレイ、マウス、キーボード、ネットワークカード又はwifiインターフェースであってもよい。いくつかの応用シナリオでは、このチップ上に、他の処理ユニット(例えばビデオコーデック)及び/又はインターフェースモジュール(例えばDRAMインターフェース)などが集積されてもよい。いくつかの実施例では、本開示は、上記チップを含むチップパッケージ構造をさらに開示した。いくつかの実施例では、本開示は、上記チップパッケージ構造を含むボードカードをさらに開示した。以下は、
図7を結び付けながらこのボードカードについて詳細に説明する。
【0063】
図7は、本開示の実施例によるボードカード700の構造概略図である。
図7に示すように、このボードカードは、データを記憶するための記憶デバイス704を含み、それは、一つ又は複数の記憶ユニット710を含む。この記憶デバイスは、例えばバスなどの方式によって制御デバイス708及び以上に記載のチップ702と接続されてデータ伝送することができる。さらに、このボードカードは、チップ(又はチップパッケージ構造におけるチップ)と外部機器712(例えばサーバ又はコンピュータなど)との間のデータ中継又はスイッチング機能に使用されるように配置される外部向けインターフェース装置706をさらに含む。例えば、処理すべきデータは、外部機器によって外部向けインターフェース装置を介してチップに伝達することができる。また例えば、前記チップの計算結果は、前記外部向けインターフェース装置を介して外部機器に送り返すことができる。異なる応用シナリオに応じて、前記外部向けインターフェース装置は、異なるインターフェース形式を有してもよく、例えばそれは、標準的PCIEインターフェースなどを採用してもよい。
【0064】
一つ又は複数の実施例では、本開示のボードカードにおける制御デバイスは、前記チップの状態を調整制御するように配置されてもよい。このため、一つの応用シナリオでは、この制御デバイスは、前記チップの作動状態に対して調整制御を行うためのマイクロコントローラーユニット(Micro Controller Unit、MCU)を含んでもよい。
【0065】
上記
図6と
図7の説明により、当業者であれば理解できるように、本開示は、電子機器又は装置も開示し、それは、一つ又は複数の上記ボードカード、一つ又は複数の上記チップ及び/又は一つ又は複数の上記組み合わせ処理装置を含んでもよい。
【0066】
異なる応用シナリオに応じて、本開示の電子機器又は装置は、サーバ、クラウドサーバ、サーバクラスタ、データ処理装置、ロボット、コンピュータ、プリンタ、スキャナ、タブレットパソコン、スマート端末、PC機器、モノのインターネット端末、移動端末、携帯電話、ドライブレコーダ、ナビゲーション装置、センサ、ウェブカメラ、カメラ、ビデオカメラ、プロジェクタ、ウォッチ、イヤホン、モバイルストレージ、ウェアラブルデバイス、視覚端末、自動運転端末、交通手段、家電製品、及び/又は医療機器を含んでもよい。前記交通手段は、飛行機、汽船及び/又は車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガステーブル、レンジフードを含み、前記医療機器は、核磁気共鳴装置、Bスキャン装置及び/又は心電計を含む。本開示の電子機器又は装置は、さらにインターネット、モノのインターネット、データセンタ、エネルギー、交通、公衆管理、製造、教育、電力網、電気通信、金融、小売、工場、医療などの分野に応用されてもよい。さらに、本開示の電子機器又は装置は、クラウド、エッジ、端末などの、人工知能、ビッグデータ、及び/又はクラウドコンピューティングに関連する応用シナリオに用いられてもよい。一つ又は複数の実施例では、本開示の方案による計算能力の高い電子機器又は装置は、クラウド機器(例えばクラウドサーバ)に応用することができるが、消費電力の低い電子機器又は装置は、端末機器及び/又はエッジ機器(例えばスマートフォン又はウェブカメラ)に応用することができる。一つ又は複数の実施例では、クラウド機器のハードウェア情報と端末機器及び/又はエッジ機器のハードウェア情報は、互いに互換性があり、それによって端末機器及び/又はエッジ機器のハードウェア情報に基づいて、クラウド機器のハードウェアリソースから適切なハードウェアリソースをマッチングして端末機器及び/又はエッジ機器のハードウェアリソースをシミュレートすることができ、それによって端末とクラウドとの一体化又はクラウドとエッジと端末との一体化の統一した管理、スケジューリングと協同作動を完成させる。
【0067】
説明すべきこととして、簡潔のために、本開示では、いくつかの方法及びその実施例を一連の動作及びその組み合わせとして記述しているが、当業者であれば理解できるように、本開示の方案は、説明した動作の順番に限定されるものではない。そのため、本開示の示唆又は教示に基づき、当業者であれば理解できるように、そのうちのいくつかのステップは、他の順番で実行されてもよく、又は同時に実行されてもよい。さらに、当業者であれば理解できるように、本開示に記述された実施例は、選択的な実施例としてみなすことができ、即ちそれに係る動作又はモジュールは、本開示の一つ又は複数の方案の実現にとっては、必ずしも必要ではない。また、方案の違いによって、本開示における、いくつかの実施例に対する説明に、それぞれ異なる重点がある。これに鑑み、当業者であれば理解できるように、本開示のある実施例に詳細に説明されていない部分は、他の実施例の関連記述を参照すればよい。
【0068】
具体的に実現する面において、本開示の示唆及び教示に基づき、当業者であれば理解できるように、本開示に開示されたいくつかの実施例は、本明細書に開示されていない他の方式によって実現されてもよい。例えば、以上に記載の電子機器又は装置の実施例における各ユニットについては、本明細書では、論理機能を考慮した上でそれを区分しているが、実際に実現する際に、他の区分方式があってもよい。また例えば、複数のユニット又はアセンブリを結合し、又は他のシステムに集積し、又はユニット又はアセンブリにおけるいくつかの特徴又は機能を選択的に使用不可にしてもよい。異なるユニット又はアセンブリ同士の接続関係については、以上で図面を結び付けながら討論した接続は、ユニット又はアセンブリ同士の直接又は間接的な結合であってもよい。いくつかのシナリオでは、前述の直接又は間接的な結合は、インターフェースを利用する通信接続に関し、ここで通信インターフェースは、電気的、光学的、音響学的、磁気的又は他の形式の信号伝送をサポートすることができる。
【0069】
本開示において、分離された部品として説明されるユニットは、物理的に分離されてもよく、又は物理的に分離されなくてもよく、ユニットとして示される部品は、物理的なユニットであってもよく、又は物理的なユニットでなくてもよい。前述の部品又はユニットは、同一の場所に位置してもよく、又は複数のネットワークユニットに分布してもよい。また、実際の必要に応じて、そのうちの一部又は全部のユニットを選択して、本開示の実施例に記載の方案の目的を実現することができる。また、いくつかのシナリオでは、本開示の実施例における複数のユニットは、一つのユニットに集積されてもよく、又は各ユニットは、物理的に単独に存在してもよい。
【0070】
いくつかの実現シナリオでは、上記集積されたユニットは、ソフトウェアプログラムモジュールの形式を採用して実現されてもよい。ソフトウェアプログラムモジュールの形式で実現され、且つ独立した製品として販売又は使用される場合、前記集積されたユニットは、コンピュータ可読メモリに記憶されてもよい。これに基づき、本開示の方案がソフトウェア製品(例えばコンピュータ可読記憶媒体)の形式で表される場合、このソフトウェア製品は、メモリに記憶されてもよく、それは、コンピュータ機器(例えばパソコン、サーバ又はネットワーク機器など)に本開示の実施例に記載の方法の一部又は全部のステップを実行させるための若干の命令を含む。前述のメモリは、Uディスク、フラッシュディスク、リードオンリーメモリ(Read Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、モバイルハードディスク、磁気ディスク又は光ディスクなどの、プログラムコードを記憶できる様々な媒体を含んでもよいが、それらに限らない。
【0071】
別のいくつかの実現シナリオでは、上記集積されたユニットは、ハードウェアの形式で実現されてもよく、即ち具体的なハードウェア回路であり、それは、デジタル回路及び/又はアナログ回路などを含んでもよい。回路のハードウェア構造の物理的な実現は、物理的デバイスを含んでもよいが、それに限らず、物理的デバイスは、トランジスタ又はメモリスタなどのデバイスを含んでもよいが、それらに限らない。これに鑑み、本明細書に記載の様々な装置(例えば計算装置又は他の処理装置)は、適切なハードウェアプロセッサ、例えばCPU、GPU、FPGA、DSPとASICなどによって実現されてもよい。さらに、前述の前記記憶ユニット又は記憶装置は、任意の適切な記憶媒体(磁気記憶媒体又は光磁気記憶媒体などを含む)であってもよく、それは例えば、抵抗変化型メモリ(Resistive Random Access Memory、RRAM)、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、補強ダイナミックランダムアクセスメモリ(Enhanced Dynamic Random Access Memory、EDRAM)、高帯域幅メモリ(High Bandwidth Memory、HBM)、ハイブリッドメモリキューブ(Hybrid Memory Cube、HMC)、ROMとRAMなどであってもよい。
【0072】
以下の条項により、前述の内容をより良く理解することができる。
【0073】
条項1、メイン処理回路と少なくとも一つのスレーブ処理回路とを含む計算装置であって、前記メイン処理回路は、メイン命令に応答してメイン演算操作を実行するように配置され、前記スレーブ処理回路は、スレーブ命令に応答してスレーブ演算操作を実行するように配置され、ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる。
【0074】
条項2、条項1に記載の計算装置であって、前記メイン処理回路は、前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び前記スレーブ命令を前記スレーブ処理回路に送信するように配置される。
【0075】
条項3、条項1に記載の計算装置であって、前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び前記メイン命令を前記メイン処理回路に送信するとともに前記スレーブ命令を前記スレーブ処理回路に送信するように配置される制御回路をさらに含む。
【0076】
条項4、条項1に記載の計算装置であって、前記メイン命令は、前記前処理操作及び/又は前記後処理操作を識別するための識別ビットを含む。
【0077】
条項5、条項1に記載の計算装置であって、前記計算命令は、前記メイン命令における前記前処理操作と前記後処理操作を区別するためのプリセットビットを含む。
【0078】
条項6、条項1に記載の計算装置であって、前記メイン処理回路は、前記メイン演算操作を実行するためのデータ処理ユニットを含み、そして前記データ処理ユニットは、データ変換操作を実行するためのデータ変換回路、及び/又は、データスティッチング操作を実行するためのデータスティッチング回路を含む。
【0079】
条項7、条項6に記載の計算装置であって、前記データ変換回路は、複数の異なるデータタイプ間での計算データの変換を実現するための一つ又は複数の変換器を含む。
【0080】
条項8、条項6に記載の計算装置であって、前記データスティッチング回路は、所定のビット長で計算データを分割するとともに、分割して得られた複数のデータブロックを所定の順番でスティッチングするように配置される。
【0081】
条項9、条項1に記載の計算装置であって、前記メイン処理回路は、1組又は複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1本の演算パイプラインを形成するとともに一つ又は複数の演算器を含み、ここで、各組の前記パイプライン演算回路が複数の演算器を含む場合、前記複数の演算器は、接続され、且つ前記メイン命令に基づいて選択的に関与して前記メイン演算操作を実行するように配置される。
【0082】
条項10、条項9に記載の計算装置であって、前記メイン処理回路は、少なくとも2本の演算パイプラインを含み、そして各演算パイプラインは、乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、除算器、プーラー、比較器、絶対値取得回路、論理演算器、位置インデックス回路又はフィルタのうちの一つ又は複数の演算器又は回路を含む。
【0083】
条項11、条項1に記載の計算装置であって、前記スレーブ処理回路は、前記スレーブ演算操作を実行するための複数の演算回路を含み、そして前記複数の演算回路は、接続され、且つ多段パイプラインの演算操作を実行するように配置され、ここで、前記演算回路は、少なくともベクトル演算を実行するために、乗算回路、比較回路、累積加算回路、回転数回路のうちの一つ又は複数を含む。
【0084】
条項12、条項11に記載の計算装置であって、前記スレーブ命令は、前記前処理操作後の計算データに対して畳み込み演算を実行する畳み込み命令を含み、前記スレーブ処理回路は、前記畳み込み命令に基づいて前記前処理操作後の計算データに対して畳み込み演算を実行するように配置される。
【0085】
条項13、集積回路チップであって、条項1~12のいずれか1項に記載の計算装置を含む。
【0086】
条項14、ボードカードであって、条項13に記載の集積回路チップを含む。
【0087】
条項15、電子機器であって、条項13に記載の集積回路チップを含む。
【0088】
条項16、メイン処理回路と少なくとも一つのスレーブ処理回路とを含む計算装置を使用して計算操作を実行する方法であって、メイン命令に応答してメイン演算操作を実行するように前記メイン処理回路を配置し、スレーブ命令に応答してスレーブ演算操作を実行するように前記スレーブ処理回路を配置することを含み、ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる。
【0089】
条項17、条項16に記載の方法であって、前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び前記スレーブ命令を前記スレーブ処理回路に送信するように前記メイン処理回路を配置する。
【0090】
条項18、条項16に記載の方法であって、計算装置は、制御回路を含み、前記方法は、前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び前記メイン命令を前記メイン処理回路に送信するとともに前記スレーブ命令を前記スレーブ処理回路に送信するように制御回路を配置することをさらに含む。
【0091】
条項19、条項16に記載の方法であって、前記メイン命令は、前記前処理操作及び/又は前記後処理操作を識別するための識別ビットを含む。
【0092】
条項20、条項16に記載の方法であって、前記計算命令は、前記メイン命令における前記前処理操作と前記後処理操作を区別するためのプリセットビットを含む。
【0093】
条項21、条項16に記載の方法であって、前記メイン処理回路は、データ処理ユニットを含み、そして前記データ処理ユニットは、データ変換回路及び/又はデータスティッチング回路を含み、前記方法は、前記メイン演算操作を実行するようにデータ処理ユニットを配置するとともにデータ変換操作を実行するように前記データ変換回路を配置することと、データスティッチング操作を実行するように前記データスティッチング回路を配置することとを含む。
【0094】
条項22、条項21に記載の方法であって、前記データ変換回路は、一つ又は複数の変換器を含み、前記方法は、複数の異なるデータタイプ間での計算データの変換を実現するように一つ又は複数の変換器を配置することを含む。
【0095】
条項23、条項21に記載の方法であって、所定のビット長で計算データを分割するとともに、分割して得られた複数のデータブロックを所定の順番でスティッチングするように前記データスティッチング回路を配置する。
【0096】
条項24、条項16に記載の方法であって、前記メイン処理回路は、1組又は複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1本の演算パイプラインを形成するとともに一つ又は複数の演算器を含み、ここで、各組の前記パイプライン演算回路が複数の演算器を含む場合、前記方法は、前記複数の演算器を接続するとともに、前記メイン命令に基づいて選択的に関与して前記メイン演算操作を実行するように配置することを含む。
【0097】
条項25、条項24に記載の方法であって、前記メイン処理回路は、少なくとも2本の演算パイプラインを含み、そして各演算パイプラインは、
乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、除算器、プーラー、比較器、絶対値取得回路、論理演算器、位置インデックス回路又はフィルタのうちの一つ又は複数の演算器又は回路を含む。
【0098】
条項26、条項16に記載の方法であって、前記スレーブ処理回路は、複数の演算回路を含み、前記方法は、前記スレーブ演算操作を実行するように前記複数の演算回路を配置することを含み、且つ前記方法は、前記複数の演算回路を接続し、且つ多段パイプラインの演算操作を実行するように配置することをさらに含み、ここで、前記演算回路は、少なくともベクトル演算を実行するために、乗算回路、比較回路、累積加算回路、回転数回路のうちの一つ又は複数を含む。
【0099】
条項27、条項26に記載の方法であって、前記スレーブ命令は、前記前処理操作後の計算データに対して畳み込み演算を実行する畳み込み命令を含み、前記方法は、
前記畳み込み命令に基づいて前記前処理操作後の計算データに対して畳み込み演算を実行するように前記スレーブ処理回路を配置することを含む。
【0100】
本明細書において本開示の複数の実施例を示して説明したが、当業者にとって明らかなように、これらの実施例は、ただ例示的な方式で提供されるものにすぎない。当業者であれば、本開示の思想と精神から逸脱することなく、様々な修正、変更及び代替的な形態を想到しうる。理解すべきこととして、本開示を実践する過程において、本明細書に記述された実施例の様々な代替案を採用してもよい。添付された特許請求の範囲は、本開示の保護範囲を限定することを意図し、そのため、これらの請求項の範囲内の同等又は代替案をカバーする。
【手続補正書】
【提出日】2022-12-28
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メイン処理回路と少なくとも一つのスレーブ処理回路とを含む計算装置であって、
前記メイン処理回路は、メイン命令に応答してメイン演算操作を実行するように配置され、
前記スレーブ処理回路は、スレーブ命令に応答してスレーブ演算操作を実行するように配置され、
ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる、計算装置。
【請求項2】
前記メイン処理回路は、
前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び
前記スレーブ命令を前記スレーブ処理回路に送信するように配置される、請求項1に記載の計算装置。
【請求項3】
前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び
前記メイン命令を前記メイン処理回路に送信するとともに前記スレーブ命令を前記スレーブ処理回路に送信するように配置される制御回路をさらに含む、請求項1に記載の計算装置。
【請求項4】
前記メイン命令は、前記前処理操作及び/又は前記後処理操作を識別するための識別ビットを含
み、そして、前記計算命令は、前記メイン命令における前記前処理操作と前記後処理操作を区別するためのプリセットビットを含む、請求項1に記載の計算装置。
【請求項5】
前記メイン処理回路は、前記メイン演算操作を実行するためのデータ処理ユニットを含み、そして前記データ処理ユニットは、データ変換操作を実行するためのデータ変換回路、及び/又は、データスティッチング操作を実行するためのデータスティッチング回路を含
み、
前記データ変換回路は、複数の異なるデータタイプ間での計算データの変換を実現するための一つ又は複数の変換器を含み、及び
前記データスティッチング回路は、所定のビット長で計算データを分割するとともに、分割して得られた複数のデータブロックを所定の順番でスティッチングするように配置される、請求項1に記載の計算装置。
【請求項6】
前記メイン処理回路は、1組又は複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1本の演算パイプラインを形成するとともに一つ又は複数の演算器を含み、ここで、各組の前記パイプライン演算回路が複数の演算器を含む場合、前記複数の演算器は、接続され、且つ前記メイン命令に基づいて選択的に関与して前記メイン演算操作を実行するように配置され
、
前記メイン処理回路は、少なくとも2本の演算パイプラインを含み、そして各演算パイプラインは、
乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、除算器、プーラー、比較器、絶対値取得回路、論理演算器、位置インデックス回路又はフィルタのうちの一つ又は複数の演算器又は回路を含む、請求項1に記載の計算装置。
【請求項7】
前記スレーブ処理回路は、前記スレーブ演算操作を実行するための複数の演算回路を含み、そして前記複数の演算回路は、接続され、且つ多段パイプラインの演算操作を実行するように配置され、ここで、前記演算回路は、少なくともベクトル演算を実行するために、乗算回路、比較回路、累積加算回路、回転数回路のうちの一つ又は複数を含
み、
前記スレーブ命令は、前記前処理操作後の計算データに対して畳み込み演算を実行する畳み込み命令を含み、前記スレーブ処理回路は、
前記畳み込み命令に基づいて前記前処理操作後の計算データに対して畳み込み演算を実行するように配置される、請求項1に記載の計算装置。
【請求項8】
請求項1~7のいずれか1項に記載の計算装置を含む、集積回路チップ。
【請求項9】
メイン処理回路と少なくとも一つのスレーブ処理回路とを含む計算装置を使用して計算操作を実行する方法であって、
メイン命令に応答してメイン演算操作を実行するように前記メイン処理回路を配置することと、
スレーブ命令に応答してスレーブ演算操作を実行するように前記スレーブ処理回路を配置することとを含み、
ここで、前記メイン演算操作は、前記スレーブ演算操作に対する前処理操作及び/又は後処理操作を含み、前記メイン命令と前記スレーブ命令は、前記計算装置により受信された計算命令に基づいて解析して得られる、方法。
【請求項10】
前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び
前記スレーブ命令を前記スレーブ処理回路に送信するように前記メイン処理回路を配置する、請求項9に記載の方法。
【請求項11】
計算装置は、制御回路を含み、前記方法は、
前記計算命令を取得し、且つ前記計算命令に対して解析を行うことで、前記メイン命令と前記スレーブ命令を得て、及び
前記メイン命令を前記メイン処理回路に送信するとともに前記スレーブ命令を前記スレーブ処理回路に送信するように制御回路を配置することをさらに含む、請求項9に記載の方法。
【請求項12】
前記メイン命令は、前記前処理操作及び/又は前記後処理操作を識別するための識別ビットを含
み、及び
前記計算命令は、前記メイン命令における前記前処理操作と前記後処理操作を区別するためのプリセットビットを含む、請求項9に記載の方法。
【請求項13】
前記メイン処理回路は、データ処理ユニットを含み、そして前記データ処理ユニットは、データ変換回路及び/又はデータスティッチング回路を含み、前記方法は、前記メイン演算操作を実行するようにデータ処理ユニットを配置するとともにデータ変換操作を実行するように前記データ変換回路を配置することと、データスティッチング操作を実行するように前記データスティッチング回路を配置することとを含
み、
前記データ変換回路は、一つ又は複数の変換器を含み、前記方法は、複数の異なるデータタイプ間での計算データの変換を実現するように一つ又は複数の変換器を配置することを含み、
所定のビット長で計算データを分割するとともに、分割して得られた複数のデータブロックを所定の順番でスティッチングするように前記データスティッチング回路を配置する、請求項9に記載の方法。
【請求項14】
前記メイン処理回路は、1組又は複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1本の演算パイプラインを形成するとともに一つ又は複数の演算器を含み、ここで、各組の前記パイプライン演算回路が複数の演算器を含む場合、前記方法は、前記複数の演算器を接続するとともに、前記メイン命令に基づいて選択的に関与して前記メイン演算操作を実行するように配置することを含み、及び
前記メイン処理回路は、少なくとも2本の演算パイプラインを含み、そして各演算パイプラインは、
乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、除算器、プーラー、比較器、絶対値取得回路、論理演算器、位置インデックス回路又はフィルタのうちの一つ又は複数の演算器又は回路を含む、請求項9に記載の方法。
【請求項15】
前記スレーブ処理回路は、複数の演算回路を含み、前記方法は、前記スレーブ演算操作を実行するように前記複数の演算回路を配置することを含み、且つ前記方法は、前記複数の演算回路を接続し、且つ多段パイプラインの演算操作を実行するように配置することをさらに含み、ここで、前記演算回路は、少なくともベクトル演算を実行するために、乗算回路、比較回路、累積加算回路、回転数回路のうちの一つ又は複数を含
み、
前記スレーブ命令は、前記前処理操作後の計算データに対して畳み込み演算を実行する畳み込み命令を含み、前記方法は、
前記畳み込み命令に基づいて前記前処理操作後の計算データに対して畳み込み演算を実行するように前記スレーブ処理回路を配置することを含む、請求項9に記載の方法。
【国際調査報告】