JP7368512B2 - 計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法 - Google Patents

計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法 Download PDF

Info

Publication number
JP7368512B2
JP7368512B2 JP2021576558A JP2021576558A JP7368512B2 JP 7368512 B2 JP7368512 B2 JP 7368512B2 JP 2021576558 A JP2021576558 A JP 2021576558A JP 2021576558 A JP2021576558 A JP 2021576558A JP 7368512 B2 JP7368512 B2 JP 7368512B2
Authority
JP
Japan
Prior art keywords
arithmetic
stage
pipeline
calculation
circuit
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2021576558A
Other languages
English (en)
Other versions
JP2022542217A (ja
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 JP2022542217A publication Critical patent/JP2022542217A/ja
Application granted granted Critical
Publication of JP7368512B2 publication Critical patent/JP7368512B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

技術技術
<関連出願>
本出願は、2020年06月30日に出願され、出願番号が第202010619481Xで、名称が「計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法」である中国特許出願の優先権を主張しており、同出願の内容の全ては、ここに参照として取り込まれる。
本開示は、通常、計算分野に関する。より具体的に、本開示は、計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法に関する。
計算システムにおいて、命令セットは、計算の実行と計算システムへの制御に用いられる一連の命令のセットであり、かつ計算システムにおける計算チップ(例えば、プロセッサ)の性能を向上させる方面でキーポイントとなる役割を果たしている。現在の様々な計算チップ(特に、人工知能分野のチップ)は、関連付けられている命令セットを使用して、様々な汎用または特定の制御操作とデータ処理操作を完了することができる。
しかし、現在の命令セットには多くの欠陥が存在する。例えば、既存の命令セットは、ハードウェアアーキテクチャによって制限されており、柔軟性の方面で比較的に劣っている。さらに、多くの命令は単一の操作しか完了できず、通常、複数の操作を実行するには複数の命令が必要であり、それは、オンチップI/Oのデータのスループットの増大を潜在的に齎す。また、現在の命令は、実行速度、実行効率およびチップによって引き起こされる消費電力の点で、改善される余地がある。
上記の先行技術に存在する問題を少なくとも解決するために、本開示は、多段パイプライン演算をサポートする1組または複数組のパイプライン演算回路を備えるハードウェアアーキテクチャを提供する。本開示の解決策は、該ハードウェアアーキテクチャを使用して、計算命令を実行することによって、ハードウェアの処理性能の補強、電力消費の低減、計算操作の実行効率の向上、および計算オーバヘッドの回避などを含む複数の方面で技術的利点を得ることができる。
第1の態様において、本開示は計算装置を提供する。前記計算装置は、多段パイプライン演算を実行するように配置された1組または複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1つの多段演算パイプラインを構成し、前記多段演算パイプラインには、段階的に設けられた複数の演算回路が含まれており、複数の演算命令の受信に応答して、前記多段演算パイプラインにおける各段演算回路は、前記複数の演算命令のうちの対応する1つの演算命令を実行するように配置されており、前記複数の演算命令は、前記計算装置によって受信された計算命令を解析することにより得られる。
第2の態様において、本開示は、上記のように記載され、かつ以下の複数の実施例で説明される計算装置を含む、集積回路チップを提供する。
第3の態様において、本開示は、上記のように記載され、かつ以下の複数の実施例で説明される集積回路チップを含む、ボードカードを提供する。
第4の態様において、本開示は、上記のように記載され、かつ以下の複数の実施例で説明される集積回路チップを含む、電子デバイスを提供する。
第5の態様において、本開示は、前述の計算装置を使用して計算を実行する方法を提供する。前記計算装置は、1組または複数組のパイプライン演算回路を含み、前記方法は、前記1組または複数組のパイプライン演算回路における各組を、多段パイプライン演算を実行するように配置しており、各組の前記パイプライン演算回路は、1つの多段演算パイプラインを構成し、該多段演算パイプラインには、段階的に設けられた複数の演算回路が含まれていること、および複数の演算命令の受信に応答して、前記多段演算パイプラインにおける各段演算回路を、前記複数の演算命令のうちの対応する1つの演算命令を実行するように配置することを含んでおり、前記複数の演算命令は、前記計算装置によって受信された計算命令を解析することにより得られる。
本開示の計算装置、集積回路チップ、ボードカード、電子デバイスおよび方法を使用することによって、パイプライン演算、特に人工知能分野における様々な多段パイプライン演算を効率的に実行することができる。さらに、本開示の解決策は、独特のハードウェアアーキテクチャにより効率的な演算操作を実現することができ、それにより、ハードウェアの全体的な性能を向上させ、計算オーバーヘッドを削減させることができる。
本開示の例示的な実施形態の上記内容および他の目的、特徴と利点は、添付図面を参照して、以下の詳細な説明を読むことによって容易に理解される。添付図面において、本開示のいくつかの実施形態は、限定的ではなく例示的なもので示され、同じまたは対応する符号は、同じまたは対応する部分を示している。
本開示の一実施例に係る計算装置を示すブロック図である。 本開示の別の一実施例に係る計算装置を示すブロック図である。 本開示の実施例におけるデータ変換回路によって実施されたマトリックス変換を示す模式図である。 本開示の実施例におけるデータ変換回路によって実施されたマトリックス変換を示す模式図である。 本開示の実施例におけるデータ変換回路によって実施されたマトリックス変換を示す模式図である。 本開示の実施例に係る計算システムを示すブロック図である。 本開示の実施例に係る計算装置を使用して演算操作を実行する方法を示す簡単なフローチャートである。 本開示の実施例に係る複合処理装置を示す構造図である。 本開示の実施例に係るボードカードの構造を示す模式図である。
本開示の解決策では、多段パイプライン演算をサポートするハードウェアアーキテクチャが提供される。該ハードウェアアーキテクチャが計算装置において実現される場合、該計算装置は、少なくとも1組または複数組のパイプライン演算回路を含み、そのうち、各組の前記パイプライン演算回路は、本開示の1つの多段演算パイプラインを構成することができる。該多段演算パイプラインにおいて、複数の演算回路を段階的に設けることができる。一実施形態において、複数の演算命令を受信した場合、前述の多段演算パイプラインにおける各段演算回路は、前記複数の演算命令のうちの対応する1つの演算命令を実行するように配置できる。本開示のハードウェアアーキテクチャおよび演算命令により、並列パイプライン操作を効率的に実行し、計算の応用シーンを拡張し、かつ計算オーバーヘッドを低減することができる。
本開示の実施例における技術的解決策は、以下、本開示の実施例における添付図面を参照して、明確、完全に説明される。明らかに、説明される実施例は、本開示の全ての実施形態ではなく、一部の実施例である。本開示の実施例に基づいて、当業者が創造的な労力を払わない前提で得られたすべての他の実施例は、いずれも本開示の保護の範囲に属する。
図1は、本開示の一実施例に係る計算装置100を示すブロック図である。図1に示すように、該計算装置100は、図に示すような第1組のパイプライン演算回路102、第2組のパイプライン演算回路104および第3組のパイプライン演算回路106などの1組または複数組のパイプライン演算回路を含むことができる。そのうち、各組の前記パイプライン演算回路は、本開示の文脈における1つの多段演算パイプラインを構成することができる。第1の多段演算パイプラインを構成する第1組のパイプライン演算回路102を例として、それは、第1-1段パイプライン演算、第1-2段パイプライン演算、第1-3段パイプライン演算……第1-N段パイプライン演算を含む、合計N段のパイプライン演算を実行することができる。同様に、第2組および第3組のパイプライン演算回路は、N段パイプライン演算をサポートする構造を備える。このような例示的なアーキテクチャを通じて、当業者は、本開示の複数組のパイプライン演算回路が複数の多段演算パイプラインを構成できるとともに、前記複数の多段演算パイプラインが各々の複数の演算命令を並行に実行できることが理解されてもよい。
上記の各段パイプライン演算を実行するために、1つまたは複数の演算器を含む演算回路を各段に設けて、対応する演算命令を実行することによって、該段での演算操作を実現することができる。一実施例において、複数の演算命令の受信に応答して、本開示の1組または複数組のパイプライン演算回路は、例えば単一命令複数データ(「SIMD」)命令を実行するなどの複数のデータ演算を実行するように配置されることができる。一実施例において、前述の複数の演算命令は、計算装置100により受信された計算命令を解析することによって取得することができ、該計算命令の操作コードは、前記多段演算パイプラインによって実行される複数の操作を表すことができる。別の一実施例では、多段演算パイプラインにおいて段階的に設けられた複数の演算回路によりサポートされる機能に基づいて、前記操作コードおよびそれにより代表される前記複数の操作を予め決定することができる。
本開示の解決策において、各組のパイプライン演算回路は、それにより構成された1つの多段演算パイプラインにおける段階的演算操作を実行することに加えて、複数の演算命令に基づいて選択的に接続されるように配置されることによって、対応する複数の演算命令を完了する。一実現シーンにおいて、本開示の前記複数の多段演算パイプラインは、第1の多段演算パイプラインおよび第2の多段演算パイプラインを含むことができ、前記第1の多段演算パイプラインの1つまたは複数段の演算回路の出力端は、前記演算命令に基づいて、前記第2の多段演算パイプラインの1つまたは複数段の演算回路の入力端に接続するように配置される。例えば、図に示される第1の多段演算パイプラインにおける第1-2段パイプライン演算は、演算命令に基づいて、第2の多段演算パイプラインにおける第2-3段のパイプライン演算に、その演算結果を入力することができる。同様に、図に示される第2の多段演算パイプラインにおける第2-1段パイプライン演算は、演算命令に基づいて、第3の多段演算パイプラインにおける第3-3段パイプライン演算に、その演算結果を入力することができる。いくつかのシーンにおいて、演算命令の不同によって、異なる演算パイプラインにおける2段のパイプライン演算は、例えば、示されている第2の多段演算パイプラインにおける第2-2段パイプライン演算と第3の多段演算パイプラインにおける第3-2段パイプライン演算との間の、双方向の演算結果を伝送することができる。
上記から分かるように、同一の演算パイプラインと異なる演算パイプラインとの間でデータを伝送するために、本開示の複数組の演算パイプラインにおける各段演算回路は、該演算回路で入力されるデータを受信する入力端と、該段の演算回路の操作結果を出力する出力端とを備えることができる。1つの多段演算パイプラインの内部において、1つまたは複数段の演算回路の出力端は、演算命令に基づいて他の1つまたは他の複数段の演算回路の入力端に接続するように配置されることによって、前記演算命令を実行する。例えば、第1の演算パイプラインの内部で、演算命令に基づいて第1-1段パイプライン演算の結果を該演算パイプラインの内部の第1-3段パイプライン演算に入力するすることができる。
本開示の文脈において、前述の複数の演算命令は、計算装置(または処理回路、プロセッサ)の内部で動作するマイクロ命令または制御信号であってもよく、それは、計算装置によって実行される必要がある1つまたは複数の演算操作を含む(または指示する)ことができる。異なる演算シーンに応じて、演算操作は、加算操作、乗算操作、畳み込み演算操作、プーリング操作など様々な操作を含むことができるが、これらに限定されない。多段パイプライン演算を実現するために、各段パイプライン演算を実行する各段演算回路には、乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、プーラー、コンパレータ、絶対値取得回路、論理演算器、位置インデックス回路またはフィルターのうちの1つまたは複数の演算器または回路が含まれることができるが、これらに限定されない。ここではプーラーを例として、これは、ニューラルネットワークのプーリング操作を実行するために、例示的に加算器、除算器、コンパレータなどの演算装置によって構成できる。
多段のパイプライン演算を実現するために、本開示は、多段パイプライン演算の演算回路によりサポートされる演算に基づいて、対応する計算命令を提供することができる。演算シーンの不同によって、本開示の計算命令は、複数の操作コードを含むことができ、該操作コードは、演算回路によって実行される複数の操作を表すことができる。例えば、図1のN=4(即ち、4段パイプライン演算を実行する場合)の際、本開示の解決策による計算命令は、以下の式(1)で表す。
Result=((((scr0 op0 scr1)op1 src2)op2 src3)op3 src4) (1)
ただし、scr0~scr4はソースオペランドであり、op0~op3は操作コードである。異なるパイプライン演算回路のアーキテクチャおよびサポートされる操作に基づいて、本開示の計算命令の操作コードのタイプ、順番および数は変更できる。
いくつかの応用シーンにおいて、本開示の多段パイプライン演算は単項演算(即ち、入力データの項目が1つしかない場合)をサポートすることができる。ニューラルネットワークにおけるscale層+relu層での演算操作を例として、実行待ちの計算命令がresult=relu(a*ina+b)として表されると仮定する場合、inaは入力データ(例えば、ベクトルまたはマトリックスであってよい)であり、a、bはいずれも演算定数である。該計算命令について、本開示の乗算器、加算器、非線形演算器を含む1組の3段パイプライン演算回路を使用して、演算を実行することができる。具体的には、第1段パイプラインの乗算器を使用して、入力データinaとaの積を計算することによって、第1段パイプライン演算結果を取得することができる。次に、第2段パイプラインの加算器を使用して、該第1段パイプライン演算結果である(a*ina)とbに対して加算演算を実行し、第2段パイプライン演算結果を取得することができる。最後に、第3段パイプラインのrelu活性化関数を使用して、該第2段パイプライン演算結果(a*ina+b)の活性化操作を行うことによって、最終の演算結果reslutを取得することができる。
いくつかの応用シーンにおいて、本開示の多段パイプライン演算回路は、2項演算(例えば、畳み込み計算命令reslut=conv(ina、inb))または3項演算(例えば、畳み込み計算命令reslut=conv(ina、inb、bias))をサポートすることができ、そのうち、入力データina、inbおよびbiasは、ベクトル(例えば、整数型、固定小数点型または浮動小数点型のデータであってよい)であってよく、マトリックスであってもよい。ここで、畳み込み計算命令reslut=conv(ina、inb)を例として、3段パイプライン演算回路の構造に含まれる複数の乗算器、少なくとも1つの加算ツリーおよび少なくとも1つの非線形演算器を使用して、該計算命令により表される畳み込み演算を実行することができる。そのうち、2つの入力データinaおよびinbは、ニューロンデータなどであってよい。具体的には、まず、3段パイプライン演算回路における第1段パイプライン乗算器を用いて計算を行い、それにより、第1段パイプライン演算結果product=ina*inb(乗算操作に対応する演算命令における1つのマイクロ命令として見なされる)を取得することができる。続いて、第2段パイプライン演算回路における加算ツリーを用いて、第1段パイプライン演算結果「product」の加算操作を実行することによって、第2段パイプライン演算結果sumを得ることができる。最後に、第3段パイプライン演算回路の非線形演算器を用いて「sum」の活性化操作を実行し、それにより、最終の畳み込み演算結果を得る。
いくつかの応用シーンにおいて、前記のように、本開示の解決策は、演算操作で使用されていない1段または多段パイプライン演算回路に対してバイパス操作することができ、即ち、演算操作のニーズに応じて、演算操作が全ての多段パイプライン操作を経る必要はなく、多段パイプライン演算回路の1段または多段を選択的に使用することができる。ユークリッド距離を計算する演算操作を例として、その計算命令をdis=sum((ina-inb)^2)で表すと仮定する場合、加算器、乗算器、加算ツリーおよびアキュムレータで構成された若干段のパイプライン演算回路のみを使用して演算することによって、最終の演算結果を取得することができ、未使用のパイプライン演算回路については、パイプライン演算操作の前または操作過程においてバイパスすることができる。
図2は、本開示の別の一実施例に係る計算装置200を示すブロック図である。図により分かるように、計算装置200は、計算装置100と同じの2組のパイプライン演算回路102およびパイプライン演算回路104に加えて、さらに制御回路202およびデータ処理回路204を付加的に含む。一実施例において、制御回路202は、上記に記載された計算命令を取得して計算命令を解析するように配置されることによって、例えば、式(1)に表すような、前記操作コードで表される複数の操作に対応する、前記複数の演算命令を取得することができる。
一実施例において、データ処理ユニット204は、データ変換回路206とデータ接合回路208とを含むことができる。計算命令が、データ変換操作またはデータ接合操作などのパイプライン演算操作の前処理操作を含む場合、データ変換回路206またはデータ接合回路208は、対応する計算命令に基づいて対応する変換操作または接合操作を実行する。以下、変換操作と接合操作を例として説明する。
データ変換操作に関しては、データ変換回路に入力されるデータビット幅が比較的に高い場合(例えば、データビット幅が1024ビットのビット幅である場合)、データ変換回路は、演算要件に基づいて入力データを比較的に低いビットのビット幅のデータ(例えば、出力データのビット幅が512ビットのビット幅である)に変換する。異なる応用シーンに基づいて、データ変換回路は、様々なデータタイプ間での変換をサポートすることができ、例えば、FP16(浮動小数点数16ビット)、FP32(浮動小数点数32位)、FIX8(固定小数点数8ビット)、FIX4(固定小数点数4ビット)、FIX16(固定小数点数16ビット)など異なるビットのビット幅を有するデータタイプ間で変換することができる。データ変換回路への入力データがマトリックスである場合、データ変換操作は、マトリックス素子の配列位置に対する転換であってよい。該転換は、例えば、マトリックス転置およびミラーリング(図3a乃至図3cを参照して後で説明する)、マトリックスが所定の角度(例えば、90度、180度または270度)に従う回転およびマトリックス次元の変換を含むことができる。
データ接合操作について、データ接合回路は、命令などにおいて設定されたビット長に基づいて、データから抽出したデータブロックに対してパリティ接合などの操作を行うことができる。例えば、データビット長が32ビットのビット幅である場合、データ接合回路は、4ビットのビット幅の長さに従って、データを1~8の合計8つのデータブロックに分割し、その後、データブロック1、3、5および7の合計4つのデータブロックを接合し、かつデータ2、4、6および8の合計4つのデータブロックを接合して、演算に用いられる。
他のいくつかの応用シーンにおいて、演算実行後に取得したデータM(例えば、ベクトルであってよい)に対して、上記のデータ接合操作を実行することができる。データ接合回路が、先に8ビットのビット幅を1つのユニットデータとして、データMの偶数行の下位256ビットを分割することによって、32個の偶数行のユニットデータ(それぞれは、M_2i乃至M_2i31と表す)を得ることができると仮定する。同様に、8ビットのビット幅を1つのユニットデータとして、データMの奇数行の下位256ビットも分割することによって、32個の奇数行のユニットデータ(それぞれは、M_(2i+1)乃至M_(2i+1)31と表す)を得ることができる。さらに、低いものから高いものへのデータビットの順に基づいて、先に偶数行、次に奇数行の順番に分割後の32個の奇数行のユニットデータと32個の偶数行のユニットデータが交互に配置される。具体的に、偶数行のユニットデータ0(M_2i)を下位に設け、次に奇数行のユニットデータ0(M_(2i+1))を順番に設ける。次に、偶数行のユニットデータ1(M_2i)……を設ける。このように類推して、奇数行のユニットデータ31(M_(2i+1)31)の設けが完了するとき、64個のユニットデータが接合されて1つの512ビットのビット幅を持つ新しいデータを形成する。
異なる応用シーンに応じて、データ処理ユニットにおけるデータ変換回路とデータ接合回路とを組合わせて使用することによって、データの前処理または後処理をより柔軟に行うことができる。例えば、計算命令に含まれる異なる操作に基づいて、データ処理ユニットは、データ接合操作なしでデータ変換のみを実行するか、データ変換なしでデータ接合操作のみを実行するか、または、データ変換とデータ接合操作の両方を実行することができる。いくつかのシーンにおいて、前記計算命令にはパイプライン演算操作の前処理操作が含まれていない場合、データ処理ユニットは、前記データ変換回路およびデータ接合回路を無効にするように配置されることができる。他のいくつかのシーンにおいて、前記計算命令にはパイプライン演算操作の後処理操作が含まれている場合、データ処理ユニットは、前記データ変換回路およびデータ接合回路を有効にして中間結果データに対する後処理を実行するように配置され、それにより、最終の演算結果を得ることができる。
データの記憶操作を実現するために、計算装置200は、さらに記憶回路210を含む。一実現シーンにおいて、本開示の記憶回路は、主記憶モジュールおよび/または主キャッシュモジュールを含むことができ、そのうち、前記主記憶モジュールは、多段パイプライン演算を実行するデータと、演算を実行した後の演算結果を記憶するように配置されており、前記主キャッシュモジュールは、前記多段パイプライン演算で演算を実行した後の、中間演算結果をキャッシュするように配置される。さらに、記憶回路は、オフチップ記憶媒体とデータを伝送するインターフェースをさらに備えており、それにより、オンチップシステムとオフチップシステムとの間のデータ転送を実現することができる。
図3a、3bおよび3cは、本開示の実施例に係るデータ変換回路によって実行されるマトリックス変換を示す模式図である。データ変換回路206によって実行される変換操作をよりよく理解するために、以下、例として、元のマトリックスによって行われる転置操作と水平ミラーリング操作をさらに説明する。
図3aに示すように、元のマトリックスは、(M+1)行×(N+1)列のマトリックスである。応用シーンのニーズに応じて、データ変換回路は、図3aに示される元のマトリックスに対して転置操作の変換を行うことによって、図3bに示すようなマトリックスを得ることができる。具体的には、データ変換回路は、元のマトリックスの素子の行番号と列番号の交換操作を行うことによって、転置マトリックスを形成することができる。具体的には、図3aに示される元のマトリックスの座標が第1行第0列である素子「10」の、図3bで示される転置マトリックスにおける座標は、第0行第1列である。このように類推すると、図3aに示される元のマトリックスの座標が第M+1行第0列である素子「M0」の、図3bで示される転置マトリックスにおける座標は、第0行第M+1列である。
図3cに示すように、データ変換回路は、図3aに示される元のマトリックスに対して水平ミラーリング操作を行うことによって、水平ミラーマトリックスを形成することができる。具体的には、前記データ変換回路は、水平ミラーリング操作により、元のマトリックスの最初の行要素から最後の行要素への配列順番を、最後の行要素から最初の行要素への配列順番に変換し、元のマトリックスの要素の列番号は変更しない。具体的には、図3aに示される元のマトリックスの座標がそれぞれ第0行第0列である要素「00」と、第1行第0列である要素「10」の、図3cに示される水平ミラーマトリックスにおける座標は、それぞれ第M+1行第0列と第M行第0列である。このように類推すると、図3aに示される元のマトリックスにおける座標が第M+1行第0列である要素「M0」の、図3cに示される水平ミラーマトリックスにおける座標は、第0行第0列である。
上記の図3のハードウェアアーキテクチャに基づいて、本開示の計算装置は、前述の予備処理および後処理を含む計算命令を実行することができる。以下、本開示の解決策に基づく計算命令の2つの例示的な例を提供する。
例1:MUAD=(FPMULT)+(FPADD/FPSUB)+(RELU)+(CONVERTFP2FIX (2)
上記式(2)に表された1つの計算命令は、三項オペランドを入力して、単項オペランドを出力する計算命令であり、それは、本開示の3段パイプライン演算(即ち、乗算+加/減算+活性化演算)を含む1組のパイプライン演算回路により実現されるマイクロ命令を含む。具体的には、三項操作はA*B+Cであり、そのうち、FPMULTのマイクロ命令は、オペランドAとB間の浮動小数点数の乗算操作を完了することによって積値を取得することであり、即ち、第1段パイプライン演算である。次に、FPADDまたはFPSUBのマイクロ命令を実行して前述積値とCの浮動小数点数の加算または減算操作を完了することによって和または差の結果を取得することであり、即ち、第2段パイプライン演算である。その後、前段の結果に対して活性化操作RELUを実行することができることであり、即ち、第3段パイプライン演算である。該3段パイプライン演算の後、最後に、上記のタイプ変換回路を介してマイクロ命令CONVERTFP2FIXを実行し、それにより、活性化操作後の結果データのタイプを、浮動小数点数から固定小数点数に変換して、最終の結果として出力したり、または中間結果として固定小数点演算器に入力して、さらなる計算操作を行うことができる。
例2:SECMUADC=SEARCH+MULT+ADD (3)
上式(3)に表された1つの計算命令は、三項オペランドを入力し、単項オペランドを出力する計算命令であり、それは、本開示の3段パイプライン演算(即ち、テーブルルックアップ+乗算+加算)を含む1組のパイプライン演算回路により実現されるマイクロ命令を含む。具体的には、三項操作はST(A)*B+Cであり、そのうち、SEARCHのマイクロ命令は、第1段パイプライン演算におけるテーブルルックアップ回路によって完了されることによって、テーブルルックアップ結果Aを得ることができる。次に、第2段パイプライン演算によってオペランドAとB間の乗算操作を完了することによって、積値を取得する。その後、ADDのマイクロ命令を実行して前述積値とCの加算操作を完了することによって、和の結果を取得することであり、即ち、第3段パイプライン演算である。
上記のように、本開示の計算命令は、計算の要件に基づいて柔軟に設計および決定することができ、それにより、本開示の複数の演算パイプラインを含むハードウェアアーキテクチャは、計算命令およびそれに含まれる様々なマイクロ命令(またはマイクロ操作)によって設計および接続され、それにより、1つの計算命令で様々な計算操作を完了することができ、よって、命令の実行効率を向上させ、計算オーバーヘッドを低減することができる。
図4は、本開示の実施例に係る計算システム400を示すブロック図である。図により分かるように、該計算システムは、計算装置200に加えて、複数のスレーブ処理回路402、および計算装置200と複数のスレーブ処理回路402とを接続する相互接続ユニット404をさらに含む。
1つの演算シーンにおいて、本開示のスレーブ処理回路は、計算命令(例えば、1つまたは複数のマイクロ命令または制御信号として実現される)に基づいて、計算装置で前処理操作を実行するためのデータを演算することによって、期待の演算結果を取得する。他の1つの演算シーンにおいて、スレーブ処理回路は、その演算後に取得した中間結果(例えば、相互接続ユニットを経由して)を計算装置のデータ処理ユニットに送信することによって、データ処理ユニットのデータ変換回路によって、中間結果に対してデータタイプ変換を実行するか、またはデータ処理ユニットのデータ接合回路によって、中間結果に対してデータの分割および接合操作を実行し、それにより、最終の演算結果を取得する。
図5は、本開示の実施例に係る計算装置を使用して演算操作を実行する方法500を示す簡単なフローチャートである。前述の説明に基づいて、ここでの計算装置は、図1乃至図4を参照して説明した計算装置であってもよく、それは示されている内部接続関係を備え、かつ様々な付加操作をサポートすることが理解できる。
図5示されるように、ステップ502において、方法500は、前記1組または複数組のパイプライン演算回路における各組を、多段パイプライン演算を実行するように配置し、そのうち、各組の前記パイプライン演算回路は、1つの多段演算パイプラインを構成し、かつ該多段演算パイプラインには、段階的に設けられた複数の演算回路が含まれる。次に、ステップ504において、方法500は、複数の演算命令の受信に応答して、前記多段演算パイプラインにおける各段演算回路を、前記複数の演算命令のうちの対応する1つの演算命令を実行するように配置し、そのうち、前記複数の演算命令は、前記計算装置によって受信された計算命令を解析することにより得られる。
以上、簡略化するために、図5のみを参照して本開示の計算方法を説明する。当業者は、本開示の開示内容に基づいて、本方法がより多くのステップを含むことができ、これらのステップの実行は、図1乃至図4を参照して上記で説明された本開示の様々な操作を実現できることが想到できるため、ここでは繰り返さない。
図6は、本開示の実施例に係る複合処理装置600を示す構造図である。図6に示すように、該複合処理装置600は、計算処理装置602、インターフェース装置604、他の処理装置606および記憶装置608を含む。異なる応用シーンによって、計算処理装置には、1つまたは複数の計算装置610が含まれてもよく、該計算装置は、図1乃至5を参照して本明細書で説明された操作を実行するように配置されることができる。
異なる実施例において、本開示の計算処理装置は、ユーザによって指定された操作を実行するように配置されることができる。例示的な応用において、該計算処理装置は、シングルコア人工知能プロセッサまたはマルチコア人工知能プロセッサとして実現できる。同様に、計算処理装置の内部に含まれる1つまたは複数の計算装置は、人工智能プロセッサコアまたは人工智能プロセッサコアの一部のハードウェア構造として実現できる。複数の計算装置が人工智能プロセッサコアまたは人工智能プロセッサコアの一部のハードウェア構造として実現される場合、本開示の計算処理装置について、シングルコア構造またはホモジニアスマルチコア構造を有するものとみなされることができる。
例示的な操作において、本開示の計算処理装置は、インターフェース装置を介して、他の処理装置とインタラクションして、ユーザによって指定された操作を共同で完了することができる。実現方法の不同によって、本開示の他の処理装置は、中央処理装置(Central Processing Unit、CPU)、グラフィックスプロセッサ(Graphics Processing Unit、GPU)、人工知能処理装置などの汎用処理装置および/または専用処理装置のうちの1つまたは様々なタイプの処理装置を含むことができる。これらの処理装置は、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)または他のプログラムブル論理デバイス、ディスクリートゲートまたはトランジスタ論理デバイス、ディスクリートハードウェアコンポーネンなどを含むことができるが、これらに限定されず、また、その数は、実際のニーズに応じて決定することができる。上記のように、本開示の計算処理装置についてのみ、シングルコア構造またはホモジニアスマルチコア構造を備えるものとみなされることができる。しかし、計算処理装置と他の処理装置を共通に考慮すると、両者はヘテロジニアスマルチコア構造を形成するものとみなすことができる。
1つまたは複数の実施例において、該他の処理装置は、本開示の計算処理装置(これは、ニューラルネットワーク演算などの人工知能に関連する演算装置として具体化することができる)の外部データおよび制御とのインターフェースとして、データの転送、計算装置のオンおよび/またはオフなどを含むがこれらに限定されない基本的な制御を実行することができる。別の実施例において、他の処理装置は、該計算処理装置と協力して共同に演算タスクを完了することもできる。
1つまたは複数の実施例において、該インターフェース装置は、計算処理装置と他の処理装置との間で、データおよび制御命令を伝送することができる。例えば、該計算処理装置は、前記インターフェース装置を経由して、他の処理装置から入力データを取得し、該計算処理装置のオンチップの記憶装置(またはメモリと称す)に書き込むことができる。さらに、該計算処理装置は、前記インターフェース装置を経由して、他の処理装置から制御命令を取得し、計算処理装置のオンチップの制御キャッシュに書き込むことができる。代替的にまたは選択的に、インターフェース装置は、計算処理装置の記憶装置におけるデータを読み取り、他の処理装置に伝送することもできる。
付加的または選択的に、本開示の複合処理装置は、記憶装置をさらに含むことができる。図に示すように、該記憶装置は、それぞれ、前記計算処理装置および前記他の処理装置に接続される。1つまたは複数の実施例において、記憶装置は、前記計算処理装置および/または前記他の処理装置のデータを保存することができる。例えば、該データは、計算処理装置または他の処理装置の内部またはオンチップの記憶装置に全て保存できないデータであってよい。
いくつかの実施例において、本開示では、チップ(例えば、図7に示されているチップ702)がさらに開示される。一実施形態において、該チップは、システムオンチップ(System on Chip、SoC)であり、1つまたは複数の、図6に示すような複合処理装置が集積化されている。該チップは、外部インターフェース装置(図7に示されている外部インターフェース装置706)を介して、他の関連部品に接続されることができる。該関連部品は、例えば、ウェブカメラ、ディスプレー、マウス、キーボード、ネットワークカードまたはwifiインターフェースであってよい。いくつかの応用シーンにおいて、該チップには、他の処理ユニット(例えば、ビデオコーデック)および/またはインターフェースモジュール(例えば、DRAMインターフェース)などが集積化されていてもよい。いくつかの実施例において、本開示は、上記チップを含むチップパッケージ構造をさらに開示する。いくつかの実施例において、本開示は、上記のチップパッケージ構造を含むボードカードをさらに開示する。以下、図7を参照して、該ボードカードを詳細に説明する。
図7は、本開示の実施例に係るボードカード700の構造を示す模式図である。図7に示すように、該ボードカードは、データを記憶するための記憶素子704を含み、記憶素子704は、1つまたは複数の記憶ユニット710を含む。該記憶素子は、バスなどの方式にて、制御素子708および上記に記載のチップ702と接続およびデータの伝送を行うことができる。さらに、該ボードカードは、チップ(または、チップパッケージ構造におけるチップ)と外部装置712(例えば、サーバーまたはコンピューターなど)との間のデータ中継またはスイッチング機能をするように配置された外部インターフェース装置706をさらに含む。例えば、処理待ちのデータは、外部装置によって、外部インターフェース装置を介してチップに伝達されることができる。また、例えば、前記チップの計算結果は、前記外部インターフェース装置を経由して外部装置に送り返すことができる。異なる応用シーンによって、前記外部インターフェース装置は、例えば、標準PCIEインターフェースなどを使用した、異なるインターフェース形態を備えることができる。
1つまたは複数の実施例において、本開示のボードカードにおける制御素子は、前記チップの状態を調整制御するように配置されることができる。このために、一応用シーンにおいて、該制御素子は、前記チップの作業状態を調整制御するように、マイクロコントローラーユニット(Micro Controller Unit、MCU)を含むことができる。
図6および図7を参照した上記の説明に基づいて、当業者は、本開示が、1つまたは複数の上記ボードカード、1つまたは複数の上記チップおよび/または1つまたは複数の上記複合処理装置を含む、電子デバイスまたは装置も開示していることが理解できる。
異なる応用シーンによって、本開示の電子デバイスまたは装置は、サーバー、クラウドサーバー、サーバークラスター、データ処理装置、ロボット、コンピューター、プリンター、スキャナー、タブレット、スマート端末、PCデバイス、IoT端末、モバイル端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサー、ウェブカメラ、カメラ、ビデオカメラ、プロジェクター、時計、ヘッドセット、モバイルストレージ、ウェアラブルデバイス、ビジュアル端末、自動運転端末、交通手段、家電製品、および/または医療機器を含むことができいる。前記交通手段には、飛行機、船および/または車両が含まれる。前記家電製品には、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードが含まれる。前記医療機器には、核磁気共鳴計、超音波計および/または心電計が含まれる。本開示の電子デバイスまたは装置は、インターネット、IoT、データセンター、エネルギー、交通、公共管理、製造、教育、送電網、電気通信、金融、小売、建設現場、医療などの分野にも応用できる。さらに、本開示の電子デバイスまたは装置は、クラウド、エッジ、端末などの人工知能、ビッグデータおよび/またはクラウドコンピューティングに関連する応用シーンに使用されることができる。1つまたは複数の実施例において、本開示の解決策に基づく高い計算能力の電子デバイスまたは装置は、クラウドデバイス(例えば、クラウドサーバー)に応用することができ、低電力消費の電子デバイスまたは装置は、端末デバイスおよび/またはエッジデバイス(例えば、スマートフォンまたはウェブカメラ)に応用されることができる。1つまたは複数の実施例において、クラウドデバイスのハードウェア情報と端末デバイスおよび/またはエッジデバイスのハードウェア情報は互いに互換性があり、それにより、端末デバイスおよび/またはエッジデバイスのハードウェア情報に基づいて、クラウドデバイスのハードウェア資源から適切なハードウェア資源をマッチングして、端末デバイスおよび/またはエッジデバイスのハードウェア資源をシミュレートし、端末とクラウドとを一体化しまたはクラウドとエッジと端末とを一体化する統一管理、スケジューリングと協同作業を完了することができる。
なお、簡略化するために、本開示は、いくつかの方法およびその実施例を一連の動作およびその組み合わせとして表現するが、当業者は、本開示の解決策が説明されている動作の順番によって限定されないことが理解できることに留意されたい。したがって、本開示の開示または教示に基づいて、当業者は、その中のいくつかのステップが他の順番で実行されるか、または同時に実行され得ることが理解できる。さらに、当業者は、本開示に説明されている実施例は任意の実施例とみなすことができること、即ち、その中で及んでいる動作またはモジュールが、必ずしも本開示の1つまたはいくつかの解決策の実現に必要なものではないことが理解できる。また、異なる解決策に基づいて、本開示におけるいくつかの実施例の説明は、それ自体の焦点も有する。これを鑑みて、当業者は、本開示の特定の実施例において詳細に説明されていない部分が、他の実施例の関連する説明も参照できることが理解できる。
具体的な実施において、本開示の開示および教示に基づいて、当業者は、本開示に開示されているいくつかの実施例は、本明細書に開示されていない他の方法で実施されることが理解できる。例えば、上記に記載の電子デバイスまたは装置の実施例における各ユニットについては、本明細書では論理機能を考慮した上で区分しているが、実際に実現する場合、別の区分方式があり得る。また、例えば、複数のユニットまたはコンポーネントを別の1つのシステムに組合せまたは集積化したり、またはユニットまたはコンポーネントにおける一部の特征または機能を、選択的に無効にしたりすることができる。異なるユニットまたはコンポーネントの間の接続関係については、添付図面を参照して前述した接続は、ユニットまたはコンポーネントの間の直接的または間接的な結合であってよい。いくつかのシーンにおいて、前述の直接的または間接的な結合は、インタフェースを用いた通信接続に関して、その中の通信インタフェースは電気的、光学的、音響学的、磁気的または他の形態の信号伝送をサポートすることができる。
本開示において、分離部品として説明されたユニットは、物理的に分離されているものであってもよいし、物理的に分離されているものでなくてもよい。ユニットとして示される部品は、物理的ユニットであってもよいし、物理的ユニットでなくてもよい。上記部品またはユニットは、同じ位置に位置することができ、複数のネットワークユニットに分散されることもできる。また、実際のニーズに応じて、その一部または全てのユニットを選択して、本開示の実施例に記載の解決策の目的を実現することができる。また、いくつかのシーンにおいて、本開示の実施例における複数のユニットが1つのユニットに集積化するか、または各ユニットが物理的に個別に存在することができる。
いくつかの実現シーンにおいて、上記集積化されたユニットは、ソフトウェアプログラムモジュールの形態として実現されることができる。ソフトウェアプログラムモジュールの形態で実現され、かつ独立した製品として販売または使用される場合、前記集積化されたユニットは、コンピューターの読み取り可能なメモリに格納されることができる。これに基づいて、本開示の解決策がソフトウェア製品(例えば、コンピューターの読み可能な記憶媒体)の形態で具体化される場合、該ソフトウェア製品は、メモリに記憶されることができ、これは、コンピューター装置(例えば、パーソナルコンピューター、サーバーまたはネットワーク装置など)に本開示の実施例に記載されている方法の一部または全てのステップを実行させるためのいくつかの命令を含むことができる。前述のメモリは、Uディスク、フラッシュメモリ、読み取り専用メモリ(Read Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、モバイルハードディスク、磁気ディスクまたは光ディスクなどの、プログラムコードが記憶できる様々な媒体を含むが、これらに限定されない。
別のいくつかの実現シーンにおいて、上記集積化されたユニットは、ハードウェアの形態で実現されることができ、即ち、デジタル回路および/またはアナログ回路などを含むことができる具体的なハードウェア回路である。回路のハードウェア構造の物理的実現は、物理的素子を含んでよいが、これらに限定されず、物理的素子は、トランジスタまたはメモリスターなどの素子を含んでもよいが、これらに限定されない。これを鑑みて、本明細書に記載されている様々な装置(例えば、計算装置または他の処理装置)は、例えば、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などであってよい。
上記の内容は、以下の条項によってよりよく理解できる。
条項1、計算装置は、
多段パイプライン演算を実行するように配置された1組または複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1つの多段演算パイプラインを構成し、前記多段演算パイプラインには、段階的に設けられた複数の演算回路が含まれており、
複数の演算命令の受信に応答して、前記多段演算パイプラインにおける各段演算回路は、前記複数の演算命令のうちの対応する1つの演算命令を実行するように配置されており、
前記複数の演算命令は、前記計算装置によって受信された計算命令を解析することにより得られる。
条項2、条項1に記載の計算装置によれば、前記計算命令の操作コードは、前記多段演算パイプラインにより実行された複数の操作を表し、前記計算装置は、前記計算命令を取得、解析して、前記複数の操作に対応する前記複数の演算命令を取得するように配置される制御回路をさらに含む
条項3、条項2に記載の計算装置によれば、多段演算パイプラインにおいて段階的に設けられた複数の演算回路によりサポートされる機能に基づいて、前記操作コードおよび前記操作コードによって代表される前記複数の操作を予め決定する。
条項4、条項1に記載の計算装置によれば、前記多段演算パイプラインにおける各段演算回路は、前記複数の演算命令に基づいて選択的に接続されるように配置されることによって、前記複数の演算命令を実行する。
条項5、条項1に記載の計算装置によれば、前記複数組のパイプライン演算回路は、複数の多段演算パイプラインを構成するとともに、前記複数の多段演算パイプラインは、各々の複数の演算命令を並行に実行する。
条項6、条項1または5に記載の計算装置によれば、前記多段演算パイプラインにおける各段の演算回路は、該段の演算回路で入力されるデータを受信する入力端と、該段の演算回路の操作結果を出力する出力端とを備える。
条項7、条項6に記載の計算装置によれば、1つの多段演算パイプラインの内部において、1つまたは複数段の演算回路の出力端は、演算命令に基づいて他の1つまたは他の複数段の演算回路の入力端に接続する配置されることによって、前記演算命令を実行する。
条項8、条項6に記載の計算装置によれば、前記複数の多段演算パイプラインは、第1の多段演算パイプラインおよび第2の多段演算パイプラインを含んでおり、前記第1の多段演算パイプラインの1つまたは複数段の演算回路の出力端は、前記演算命令に基づいて、前記第2の多段演算パイプラインの1つまたは複数段の演算回路の入力端に接続するように配置される。
条項9、条項1に記載の計算装置によれば、各段の演算回路は、乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、プーラー、コンパレータ、絶対値取得回路、論理演算器、位置インデックス回路またはフィルターのうちの1つまたは複数の演算器または回路を含む。
条項10、条項1に記載の計算装置によれば、データタイプ変換操作を実行するタイプ変換回路および/またはデータ接合操作を実行するデータ接合回路を含む、データ処理回路をさらに含む。
条項11、条項10に記載の計算装置によれば、前記タイプ変換回路は、様々な異なるデータタイプ間で計算データを変換する1つまたは複数の変換器を含む。
条項12、条項10に記載の計算装置によれば、前記データ接合回路は、計算データを所定のビット長で分割し、分割後に取得された複数のデータブロックを所定の順番に従って接合するように配置される。
条項13、条項1乃至12のいずれか1項に記載の計算装置を含む集積回路チップである。
条項14、条項13に記載の集積回路チップを含むボードカードである。
条項15、条項13に記載の集積回路チップを含む電子デバイスである。
条項16、計算装置を使用して計算操作を実行する方法であって、
前記計算装置は、1組または複数組のパイプライン演算回路を含み、
前記方法は、
前記1組または複数組のパイプライン演算回路における各組を、多段パイプライン演算を実行するように配置しており、各組の前記パイプライン演算回路は、1つの多段演算パイプラインを構成し、該多段演算パイプラインには、段階的に設けられた複数の演算回路が含まれていること、および
複数の演算命令の受信に応答して、前記多段演算パイプラインにおける各段演算回路を、前記複数の演算命令のうちの対応する1つの演算命令を実行するように配置することを含んでおり、
前記複数の演算命令は、前記計算装置によって受信された計算命令を解析することにより得られる。
条項17、条項16に記載の方法によれば、前記計算命令の操作コードは、前記多段演算パイプラインによって実行された複数の操作を表し、前記計算装置は制御回路をさらに含み、前記方法は、該制御回路を、前記計算命令を取得、解析して、前記複数の操作に対応する前記複数の演算命令を取得するように配置することを含む。
条項18、条項17に記載の方法によれば、多段演算パイプラインにおいて段階的に設けられた複数の演算回路によりサポートされる機能に基づいて、前記操作コードおよび前記操作コードによって代表される前記複数の操作を予め決定する。
条項19、条項16に記載の方法によれば、前記多段演算パイプラインにおける各段の演算回路を、前記複数の演算命令に基づいて選択的に接続されるように配置することによって、前記複数の演算命令を実行する。
条項20、条項16に記載の方法によれば、前記複数組のパイプライン演算回路は、複数の多段演算パイプラインを構成するとともに、前記複数の多段演算パイプラインは、各々の複数の演算命令を並行に実行する。
条項21、条項16または20に記載の方法によれば、前記多段演算パイプラインにおける各段演算回路は、該段の演算回路で入力されるデータを受信する入力端と、該段の演算回路の操作結果を出力する出力端とを備える。
条項22、条項21に記載の方法によれば、1つの多段演算パイプラインの内部において、1つまたは複数段の演算回路の出力端を、演算命令に基づいて他の1つまたは他の複数段の演算回路の入力端に接続するように配置することによって、前記演算命令を実行する。
条項23、条項21に記載の方法によれば、前記複数の多段演算パイプラインは、第1の多段演算パイプラインおよび第2の多段演算パイプラインを含んでおり、前記方法は、前記第1の多段演算パイプラインの1つまたは複数段の演算回路の出力端を、前記演算命令に基づいて、前記第2の多段演算パイプラインの1つの段または複数の段の演算回路の入力端に接続するように配置する。
条項24、条項16に記載の方法によれば、各段の演算回路は、乱数処理回路、加減算回路、減算回路、テーブルルックアップ回路、パラメータ配置回路、乗算器、プーラー、コンパレータ、絶対値取得回路、論理演算器、位置インデックス回路またはフィルターのうちの1つまたは複数の演算器または回路を含む。
条項25、条項16に記載の方法によれば、データタイプ変換操作を実行するタイプ変換回路および/またはデータ接合操作を実行するデータ接合回路を含む、データ処理回路をさらに含む。
条項26、条項25に記載の方法によれば、前記タイプ変換回路は、様々な異なるデータタイプ間で計算データを変換する1つまたは複数の変換器を含む。
条項27、条項25に記載の方法によれば、前記データ接合回路は、計算データを所定のビット長で分割し、分割後に取得された複数のデータブロックを所定の順番に従って接合するように配置される。
本開示の複数の実施例を本明細書において示し、説明しているが、このような実施例は例示的な形態としてのみ提供されることが、当業者にとって明らかである。当業者は、本開示の思想および精神から逸脱することなく、多くの改正、変更および代替の方法を想到できる。本開示を実施する過程において、本明細書に説明された本開示の実施例に対する様々な代替案を採用することができることを理解すべきである。添付の特許請求の範囲は、本開示の保護範囲を限定することを意図しており、したがって、これらの特許請求の範囲内の同等物または代替案をカバーする。

Claims (13)

  1. 多段パイプライン演算を実行するように配置された1組または複数組のパイプライン演算回路を含み、各組の前記パイプライン演算回路は、1つの多段演算パイプラインを構成し、前記多段演算パイプラインには、段階的に設けられた複数の演算回路が含まれており、
    複数の演算命令の受信に応答して、前記多段演算パイプラインにおける各段演算回路は、前記複数の演算命令のうちの対応する1つの演算命令を実行するように配置されており、
    前記複数の演算命令は、計算装置によって受信された計算命令を解析することにより得られ
    前記多段演算パイプラインにおける各段演算回路は、前記複数の演算命令に基づいて選択的に接続されるように配置されることによって、前記複数の演算命令を実行し、
    前記選択的に接続されることには、1つの多段演算パイプラインの内部において、1つまたは複数段の演算回路の演算結果が、他の1つまたは他の複数段の演算回路に入力されること、及び、一つの多段演算パイプラインの1つまたは複数段の演算回路の演算結果が、他の多段演算パイプラインの1つまたは複数段の演算回路に入力されることが含まれる、ことを特徴とする計算装置。
  2. 前記計算命令のードは、前記多段演算パイプラインにより実行され複数の演算を表し、前記計算装置は、前記計算命令を取得、解析して、前記複数の演算に対応する前記複数の演算命令を取得するように配置される制御回路をさらに含む
    請求項1に記載の計算装置。
  3. 多段演算パイプラインにおいて段階的に設けられた複数の演算回路によりサポートされる機能に基づいて、前記ードおよび前記ードによって代表される前記複数の演算を予め決定する
    請求項2に記載の計算装置。
  4. 前記複数組のパイプライン演算回路は、複数の多段演算パイプラインを構成するとともに、前記複数の多段演算パイプラインは、各々の複数の演算命令を並行に実行する
    請求項1に記載の計算装置。
  5. 前記多段演算パイプラインにおける各段の演算回路は、該段の演算回路で入力されるデータを受信する入力端と、該段の演算回路の操作結果を出力する出力端とを備える
    請求項1またはに記載の計算装置。
  6. 各段の演算回路は、乗算器、加算器、および、非線形演算器のうちの1つまたは複数含む
    請求項1に記載の計算装置。
  7. 請求項1乃至のいずれか1項に記載の計算装置を含む
    集積回路チップ。
  8. 計算装置を使用して計算操作を実行する方法であって、
    前記計算装置は、1組または複数組のパイプライン演算回路を含み、
    前記方法は、
    前記1組または複数組のパイプライン演算回路における各組を、多段パイプライン演算を実行するように配置しており、各組の前記パイプライン演算回路は、1つの多段演算パイプラインを構成し、該多段演算パイプラインには、段階的に設けられた複数の演算回路が含まれていること、および
    複数の演算命令の受信に応答して、前記多段演算パイプラインにおける各段演算回路を、前記複数の演算命令のうちの対応する1つの演算命令を実行するように配置することを含んでおり、
    前記複数の演算命令は、前記計算装置によって受信された計算命令を解析することにより得られ、
    前記多段演算パイプラインにおける各段の演算回路を、前記複数の演算命令に基づいて選択的に接続されるように配置することによって、前記複数の演算命令を実行し、
    前記選択的に接続されることには、1つの多段演算パイプラインの内部において、1つまたは複数段の演算回路の演算結果が、他の1つまたは他の複数段の演算回路に入力されること、及び、一つの多段演算パイプラインの1つまたは複数段の演算回路の演算結果が、他の多段演算パイプラインの1つまたは複数段の演算回路に入力されることが含まれる、ことを特徴とする方法。
  9. 前記計算命令のードは、前記多段演算パイプラインによって実行され複数の演算を表し、前記計算装置は制御回路をさらに含み、前記方法は、該制御回路を、前記計算命令を取得、解析して、前記複数の演算に対応する前記複数の演算命令を取得するように配置することを含む
    請求項に記載の方法。
  10. 多段演算パイプラインにおいて段階的に設けられた複数の演算回路によりサポートされる機能に基づいて、前記ードおよび前記ードによって代表される前記複数の演算を予め決定する
    請求項に記載の方法。
  11. 前記複数組のパイプライン演算回路は、複数の多段演算パイプラインを構成するとともに、前記複数の多段演算パイプラインは、各々の複数の演算命令を並行に実行する
    請求項に記載の方法。
  12. 前記多段演算パイプラインにおける各段演算回路は、該段の演算回路で入力されるデータを受信する入力端と、該段の演算回路の演算結果を出力する出力端とを備える
    請求項または11に記載の方法。
  13. 各段の演算回路は、乗算器、加算器、および、非線形演算器のうちの1つまたは複数含む
    請求項に記載の方法。
JP2021576558A 2020-06-30 2021-05-19 計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法 Active JP7368512B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202010619481.X 2020-06-30
CN202010619481.XA CN113867793A (zh) 2020-06-30 2020-06-30 计算装置、集成电路芯片、板卡、电子设备和计算方法
PCT/CN2021/094722 WO2022001455A1 (zh) 2020-06-30 2021-05-19 计算装置、集成电路芯片、板卡、电子设备和计算方法

Publications (2)

Publication Number Publication Date
JP2022542217A JP2022542217A (ja) 2022-09-30
JP7368512B2 true JP7368512B2 (ja) 2023-10-24

Family

ID=78981787

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021576558A Active JP7368512B2 (ja) 2020-06-30 2021-05-19 計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法

Country Status (4)

Country Link
US (1) US20230297387A1 (ja)
JP (1) JP7368512B2 (ja)
CN (1) CN113867793A (ja)
WO (1) WO2022001455A1 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5173782B2 (ja) 2008-05-26 2013-04-03 清水建設株式会社 地下水流動保全工法
US20140201507A1 (en) 2013-01-11 2014-07-17 Advanced Micro Devices, Inc. Thread selection at a processor based on branch prediction confidence
US20140281402A1 (en) 2013-03-13 2014-09-18 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US20170102950A1 (en) 2003-05-23 2017-04-13 Ip Reservoir, Llc Intelligent Data Storage and Processing Using FPGA Devices
CN107729990A (zh) 2017-07-20 2018-02-23 上海寒武纪信息科技有限公司 支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
CN110858150A (zh) 2018-08-22 2020-03-03 上海寒武纪信息科技有限公司 一种具有局部实时可重构流水级的运算装置
CN110990063A (zh) 2019-11-28 2020-04-10 中国科学院计算技术研究所 一种用于基因相似性分析的加速装置、方法和计算机设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0769824B2 (ja) * 1988-11-11 1995-07-31 株式会社日立製作所 複数命令同時処理方式
US5787026A (en) * 1995-12-20 1998-07-28 Intel Corporation Method and apparatus for providing memory access in a processor pipeline
EP1199629A1 (en) * 2000-10-17 2002-04-24 STMicroelectronics S.r.l. Processor architecture with variable-stage pipeline
US8074056B1 (en) * 2005-02-02 2011-12-06 Marvell International Ltd. Variable length pipeline processor architecture
US7721071B2 (en) * 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US7984269B2 (en) * 2007-06-12 2011-07-19 Arm Limited Data processing apparatus and method for reducing issue circuitry responsibility by using a predetermined pipeline stage to schedule a next operation in a sequence of operations defined by a complex instruction
US7941644B2 (en) * 2008-10-16 2011-05-10 International Business Machines Corporation Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer
US20140129805A1 (en) * 2012-11-08 2014-05-08 Nvidia Corporation Execution pipeline power reduction
CN103020890B (zh) * 2012-12-17 2015-11-04 中国科学院半导体研究所 基于多层次并行处理的视觉处理装置
US11029997B2 (en) * 2013-07-15 2021-06-08 Texas Instruments Incorporated Entering protected pipeline mode without annulling pending instructions
US9690590B2 (en) * 2014-10-15 2017-06-27 Cavium, Inc. Flexible instruction execution in a processor pipeline
US11714875B2 (en) * 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170102950A1 (en) 2003-05-23 2017-04-13 Ip Reservoir, Llc Intelligent Data Storage and Processing Using FPGA Devices
JP5173782B2 (ja) 2008-05-26 2013-04-03 清水建設株式会社 地下水流動保全工法
US20140201507A1 (en) 2013-01-11 2014-07-17 Advanced Micro Devices, Inc. Thread selection at a processor based on branch prediction confidence
US20140281402A1 (en) 2013-03-13 2014-09-18 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
CN107729990A (zh) 2017-07-20 2018-02-23 上海寒武纪信息科技有限公司 支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
CN107992329A (zh) 2017-07-20 2018-05-04 上海寒武纪信息科技有限公司 一种计算方法及相关产品
CN110858150A (zh) 2018-08-22 2020-03-03 上海寒武纪信息科技有限公司 一种具有局部实时可重构流水级的运算装置
CN110990063A (zh) 2019-11-28 2020-04-10 中国科学院计算技术研究所 一种用于基因相似性分析的加速装置、方法和计算机设备

Also Published As

Publication number Publication date
JP2022542217A (ja) 2022-09-30
CN113867793A (zh) 2021-12-31
WO2022001455A1 (zh) 2022-01-06
US20230297387A1 (en) 2023-09-21

Similar Documents

Publication Publication Date Title
CN109032669B (zh) 神经网络处理装置及其执行向量最小值指令的方法
CN109522052B (zh) 一种计算装置及板卡
KR20190107091A (ko) 계산 장치 및 방법
CN109711540B (zh) 一种计算装置及板卡
CN110059809B (zh) 一种计算装置及相关产品
WO2022001497A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN109740730B (zh) 运算方法、装置及相关产品
CN109711538B (zh) 运算方法、装置及相关产品
JP7368512B2 (ja) 計算装置、集積回路チップ、ボードカード、電子デバイスおよび計算方法
CN111353124A (zh) 运算方法、装置、计算机设备和存储介质
WO2022001500A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN111368967A (zh) 一种神经网络计算装置和方法
WO2021082746A1 (zh) 运算装置及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN111368986B (zh) 一种神经网络计算装置和方法
WO2022001496A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2022001454A1 (zh) 集成计算装置、集成电路芯片、板卡和计算方法
CN111061507A (zh) 运算方法、装置、计算机设备和存储介质
CN111353125B (zh) 运算方法、装置、计算机设备和存储介质
WO2022134688A1 (zh) 数据处理电路、数据处理方法及相关产品
WO2022001498A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2022001457A1 (zh) 一种计算装置、芯片、板卡、电子设备和计算方法
WO2021082747A1 (zh) 运算装置及相关产品
CN111290788B (zh) 运算方法、装置、计算机设备和存储介质
CN111026440B (zh) 运算方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211223

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230707

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231010

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231012

R150 Certificate of patent or registration of utility model

Ref document number: 7368512

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150