JP7096213B2 - 人工知能チップに適用される算出方法および人工知能チップ - Google Patents

人工知能チップに適用される算出方法および人工知能チップ Download PDF

Info

Publication number
JP7096213B2
JP7096213B2 JP2019128286A JP2019128286A JP7096213B2 JP 7096213 B2 JP7096213 B2 JP 7096213B2 JP 2019128286 A JP2019128286 A JP 2019128286A JP 2019128286 A JP2019128286 A JP 2019128286A JP 7096213 B2 JP7096213 B2 JP 7096213B2
Authority
JP
Japan
Prior art keywords
complex operation
processor core
complex
identifier
instruction
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
JP2019128286A
Other languages
English (en)
Other versions
JP2020042782A (ja
Inventor
オウヤン,ジィェン
ドゥ,シュェリィァン
シュ,インナン
リー,フゥイミン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Kunlunxin Technology Beijing Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Kunlunxin Technology Beijing Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd, Kunlunxin Technology Beijing Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2020042782A publication Critical patent/JP2020042782A/ja
Application granted granted Critical
Publication of JP7096213B2 publication Critical patent/JP7096213B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3017Runtime instruction translation, e.g. macros
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本願の実施形態は、コンピュータ技術分野に関するものであり、具体的に、人工知能チップに適用される算出方法および人工知能チップに関するものである。
人工知能チップであるAI(Artificial Intelligence)チップは、AIアクセラレータまたはコンピューティングカードとも呼ばれ、人工知能アプリケーション中の大量コンピューティングタスクを処理するための特化されたモジュールを指す(他の非コンピューティングタスクは依然としてCPUが担当している)。AIコンピューティングにおいて演算のニーズは巨大なものであり、特に複雑な演算ニーズは計算性能に大きな影響を与える。複雑な演算は、基本的な演算命令で実施することができるが、(浮動小数点平方根演算、浮動小数点べき演算、三角関数演算のような)複雑演算(complex computation)の実行効率を低下させる可能性がある。
本願の実施形態は、人工知能チップに適用される算出方法および人工知能チップを提案する。
第一の態様では、本願実施形態は、人工知能チップに適用される算出方法を提供する。当該方法は、前記少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得るステップと、前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードにより取得された演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップと、前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップと、前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップと、前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得るステップと、前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップと、を含む。
いくつかの実施形態において、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアが実行対象命令をデコードする前に、前記方法はさらに、実行対象命令の受信に応答して、前記少なくとも一つのプロセッサコアから、前記実行対象命令を実行するプロセッサコアを選択してターゲットプロセッサコアとするステップを含む。
いくつかの実施形態において、複雑演算命令キューは、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューを含み、前記複雑演算結果キューは、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算結果キューを含み、前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップは、前記ターゲットプロセッサコアが、生成された複雑演算命令を前記ターゲットプロセッサコアに対応する複雑演算命令キューに追加するステップを含み、前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップは、前記演算アクセラレータが、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択するステップを含み、前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、前記演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込むステップを含む。
いくつかの実施形態において、演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込んだ後、前記方法は、さらに前記ターゲットプロセッサコアが、前記ターゲットプロセッサコアに対応する複合演算結果キューから複雑演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび/または前記人工知能チップのメモリに書き込むステップを含む。
いくつかの実施形態において、ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップは、前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて、複雑演算命令を生成するステップを含み、前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、前記演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込むステップを含む。
いくつかの実施形態において、演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込んだ後、前記方法はさらに、前記ターゲットプロセッサコアが、前記複雑演算結果キューから、プロセッサコア識別子が前記ターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび/または前記人工知能チップのメモリに書き込むステップを含む。
いくつかの実施形態において、演算アクセラレータは、特定用途向け集積回路チップおよびフィールドプログラマブルゲートアレイのうちのの少なくとも1つを含む。
いくつかの実施形態において、複雑演算命令キューおよび複雑演算結果キューは先入れ先出しキューである。
いくつかの実施形態において、複雑演算命令キューおよび複雑演算結果キューはキャッシュに記憶される。
いくつかの実施形態において、演算アクセラレータは少なくとも一つの演算ユニットを含み、前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップは、前記演算アクセラレータにおける、選択された複雑演算命令中の複雑演算識別子に対応する演算ユニットが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップを含む。
いくつかの実施形態において、予め設定された複雑演算識別子は、べき演算識別子、開平演算識別子、三角関数演算識別子のうちの少なくとも1つを含む。
第二の態様では、本願実施形態は人工知能チップを提供する。人工知能チップは、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータと、少なくとも一つのプログラムが記憶された記憶装置とを備え、少なくとも一つのプログラムが人工知能チップによって実行されるとき、人工知能チップに第1の態様のいずれかの実施形態に記載された方法を実現させる。
第三の態様では、本願実施形態は、コンピュータプログラムが格納されたコンピュータ可読記憶媒体を提供する。該コンピュータプログラムが人工知能チップにより実行されるとき、第一の態様のいずれかの実施形態に記載された方法を実現させる。
第四の態様では、本願実施形態は、プロセッサ、記憶装置および第二の態様に記載された少なくとも一つの人工知能チップを備える電子機器を提供する。
本願実施形態による人工知能チップに適用される算出方法において、人工知能チップが、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを備える。当該方法は、ターゲットプロセッサコアが、実行対象命令が実行する演算が予め設定された複雑演算であると確定されたことに応答して、実行対象命令をデコードして、複雑演算識別子および少なくとも一つのオペランドを取得し、得られた複雑演算識別子および少なくとも一つのオペランドを用いて、複雑演算命令を生成し、生成された複雑演算命令を複雑演算命令キューに追加する。さらに、演算アクセラレータが、複雑演算命令キューから複雑演算命令を選択し、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を取得し、取得された演算結果を複雑演算結果として複雑演算結果キューに書き込む。
これにより、演算アクセラレータを活用して複雑な演算を行うことができ、その技術的効果は少なくとも以下を含む。
第1に、演算アクセラレータを導入して複雑な演算を実行することにより、AIチップによる複雑な演算を処理する能力と効率を向上させることができる。
第2に、実際には、複雑な演算は単純な演算に比べて実行頻度が高くないので、プロセッサコアごとに一つのプロセッサコアを配置するのではなく、少なくとも一つのプロセッサコアが一つの演算アクセラレータを共用することにより、複雑な演算に伴うAIチップの空間オーバーヘッドや消費電力オーバーヘッドを削減することができる。
第3に、演算アクセラレータに複数の演算ユニットを有し、複数の演算ユニットが複雑な演算を並列に実行するため、データハザードがない場合に、複雑な演算の時間的なオーバーヘッドを後続命令でカバーすることができる。
以下、添付図面を参照ながら非限定的実施形態を詳細に説明することで、本願のその他特徴、目的および利点は一層明確になる。
本願の一実施形態が適用可能な例示的システムアーキテクチャ図である。 本願による人工知能チップに適用される算出方法の一実施形態のフローチャートである。 本願による人工知能チップに適用される算出方法の別の一実施形態のフローチャートである。 図3Aの実施形態による人工知能チップの算出方法に適用される人工知能チップの構造概略図である。 図3Aの実施形態による複雑演算命令の概略図である。 図3Aの実施形態による複雑演算命令の概略図である。 本願による人工知能チップに適用される算出方法の別の一実施形態のフローチャートである。 図4Aの実施形態による人工知能チップの算出方法に適用される人工知能チップの構造概略図である。 図4Aの実施形態による複雑演算命令の概略図である。 図4Aの実施形態による複雑演算命令の概略図である。 本願の実施形態を実施するのに適する電子機器のコンピュータシステムの構造概略図である。
以下、添付図面および実施形態を参照しながら本願をさらに詳細に説明する。本明細書に記載された特定の実施形態は、関連本発明を解釈するためのものであり、本発明を限定するためのものではないことを理解されたい。なお、説明の便宜上、図面には関連発明に関わる部分のみ示されていることである。
説明すべきことは、本願における実施形態および実施形態における特徴は、衝突しない限り、互いに組み合わせ可能であることである。以下、添付図面を参照し、実施形態に合わせて本発明を詳細に説明する。
図1は、本願を適用することができる人工知能チップに適用される算出方法の一実施形態の例示的システムアーキテクチャ100を示す。
図1に示すように、システムアーキテクチャ100は、CPU(Central Processing Unit、中央処理装置)101、バス102、およびAIチップ103、104を含むことができる。バス102は、CPU101とAIチップ103、104との間に通信リンクを提供するための媒体である。バス102は、例えば、AMBA(Advanced Microcontroller Bus Architecture)バス、OCP(Open Core Protocol)バスなどのような様々なバスタイプを含むことができる。
AIチップ103は、プロセッサコア1031、1032、1033、有線1034、および演算アクセラレータ1035を含むことができる。有線1034は、プロセッサコア1031、1032、1033と演算アクセラレータ1035との間に通信リンクを提供するための媒体である。有線1034は、例えば、PCIバス、PCIEバス、ネットワークオンチップ(Network On Chip)プロトコルをサポートする、AMBAバス、OCPバス、および他のネットワークオンチップバスなどの様々な有線タイプを含むことができる。
AIチップ104は、プロセッサコア1041、1042、1043、有線1044、および演算アクセラレータ1045を含むことができる。有線1044は、プロセッサコア1041、1042、1043と演算アクセラレータ1045との間に通信リンクを提供するための媒体である。有線1044は、例えば、PCIバス、PCIEバス、ネットワークオンチップ(Network On Chip)プロトコルをサポートする、AMBAバス、OCPバス、および他のネットワークオンチップバスなどの様々な有線タイプを含むことができる。
説明すべきことは、本願の実施形態による人工知能チップに適用される算出方法は、一般にAIチップ103、104で実行される。
図1におけるCPU、バス、AIチップの数は単なる一例にすぎないことを理解されたい。実施の必要に応じて、任意の数のCPU、バス、AIチップを有することができる。同様に、AIチップ103、104内のプロセッサコア、有線およびメモリの数も例示的なものに過ぎない。実施の必要に応じて、AIチップ103、104は、任意の数のプロセッサコア、有線およびメモリを有してもよい。また、実施の必要に応じて、システムアーキテクチャ100は、メモリ、(マウス、キーボード等)入力デバイス、(ディスプレイ、スピーカ等)出力デバイス、入出力インターフェースなどを更に含んでもよい。
引き続き図2を参照すると、本出願による人工知能チップに適用される算出方法の一実施形態のフロー200が示される。該人工知能チップに適用される算出方法は、次のステップを含む。
ステップ201では、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを取得する。
本実施形態において、人工知能チップに適用される算出方法の実行主体(例えば、図1に示されるAIチップ)は、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを含むことができる。演算アクセラレータは、独立した演算能力を有し、演算アクセラレータのほうがプロセッサコアよりも複雑演算に適用し、ここで、複雑演算は、簡単な演算に比べて計算量の大きい演算を意味し、簡単な演算は、計算量が小さい演算を意味することができる。例えば、簡単な演算は、加算、乗算、または加算と乗算との単純な組み合わせであってもよい。一般に、プロセッサコアには加算器と乗算器とが含まれているため、プロセッサコアのほうがより簡単な演算を行うのに適する。しかし、複雑な演算とは、べき演算、開平演算、三角関数演算などの、加算と乗算の単純な組み合わせではできない演算をいう。
本実施形態のいくつかの好ましい実施形態において、演算アクセラレータは、特定用途向け集積回路(ASIC,Application Specific Integrated Circuit)チップ、およびフィールドプログラマブルゲートアレイ(FPGA,Field Programmable Gate Array)のうち少なくとも1つを含んでもよい。
ここで、前記実行主体は、実行対象命令が受信された場合、少なくとも一つのプロセッサコアから、実行対象命令を実行するプロセッサコアをターゲットプロセッサコアとして選択することができる。例えば、各プロセッサコアの現在の動作状態に基づいて、少なくとも一つのプロセッサコアから、実行対象命令を実行するプロセッサコアをターゲットプロセッサコアとして選択することができる。また、例えば、ポーリング方式により、少なくとも一つのプロセッサコアから、実行対象命令を実行するプロセッサコアをターゲットプロセッサコアとして選択してもよい。
これにより、ターゲットプロセッサコアは、実行対象命令が受信された場合に、実行対象命令をデコードして、演算識別子と少なくとも一つのオペランドとを得ることができる。ここで、演算識別子は、プロセッサコアが実行可能な様々な演算を一意に識別するために使用され得る。演算識別子は、数字、アルファベット、記号の少なくとも1つを含むことができる。
ステップ202では、ターゲットプロセッサコアは、デコードされた演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成する。
本実施形態では、ターゲットプロセッサコアは、実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを取得した後、デコードされた演算識別子が予め設定された複雑演算識別子であるか否かを確定することができる。予め設定された複雑演算識別子であると確定された場合、ターゲットプロセッサコアは、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成することができる。
具体的には、ここで、各プロセッサコアは、予め設定された複雑演算識別子セットを予め記憶することができ、このようにして、ターゲットプロセッサコアは、デコードされた演算識別子が予め設定された複雑演算識別子セットに属するか否かを確定することができ、予め設定された複雑演算識別子セットに属すると確定された場合、デコードされた演算識別子が予め設定された複雑演算識別子であると確定し、予め設定された複雑演算識別子セットに属しないと確定された場合、デコードされた演算識別子が予め設定された複雑演算識別子ではないと確定することができる。
ここで、複雑演算識別子セットは、当業者が実際応用演算ニーズに基づいて、AIコンピューティングのうち常用演算に係る計算量の大きい演算に対し、該演算の演算識別子を複雑演算識別子として形成した複雑演算識別子セットであってもよい。
いくつかの実施形態において、予め設定された複雑演算識別子は、べき演算識別子、開平演算識別子、および三角関数演算識別子の少なくとも1つを含むことができる。
ステップ203では、ターゲットプロセッサコアは、生成された複雑演算命令を複雑演算命令キューに追加する。
本実施形態において、ターゲットプロセッサコアは、ステップ202で生成された複雑演算命令を複雑演算命令キューに追加することができる。ここで、複雑な演算命令キューには実行対象複雑演算命令が格納されている。
本実施形態のいくつかの好ましい実施形態では、複雑演算命令キューは先入れ先出しキューであってもよい。
本実施形態のいくつかの好ましい実施形態では、複雑演算命令キューは、ターゲットプロセッサコアおよび演算アクセラレータにそれぞれ有線接続可能なキャッシュに格納されてもよい。これにより、ターゲットプロセッサコアは、生成された複雑演算命令を複雑演算命令キューに追加することができ、後続のステップ204において、演算アクセラレータは、複雑演算命令キューから複雑演算命令を選択することもできる。
ステップ204では、演算アクセラレータは、複雑演算命令キューから複雑演算命令を選択する。
本実施形態において、演算アクセラレータは様々な実施方法を用いて複雑演算命令キューから複雑演算命令を選択することができる。例えば、演算部は、先入れ先出し順に従って複雑演算命令キューから複雑演算命令を選択してもよい。
ステップ205では、演算アクセラレータは、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の指示する複雑演算を実行して、演算結果を得る。
本実施形態では、ステップ204で選択された複雑演算命令に基づいて、演算アクセラレータは、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得ることができる。
本実施形態のいくつかの好ましい実施形態において、演算アクセラレータは、少なくとも一つの演算ユニットを含んでもよい。これにより、ステップ205では、演算アクセラレータにおける、選択された複雑演算命令中の複雑演算識別子に対応する演算ユニットが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行する。
ステップ206では、演算アクセラレータは、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込む。
本実施形態では、演算アクセラレータは、ステップ205で複雑演算を実行して得られた演算結果を複雑演算結果として複雑演算結果キューに書き込む。
ここで、複雑演算結果キューには、演算アクセラレータにより複雑演算を実行して得られた複雑演算結果が格納される。
本実施形態のいくつかの好ましい実施形態では、複雑演算結果キューは先入れ先出しキューであってもよい。
本実施形態のいくつかの好ましい実施形態では、複雑演算結果キューは、ターゲットプロセッサコアおよび演算アクセラレータにそれぞれ有線接続可能なキャッシュに格納されてもよい。これにより、演算アクセラレータは、複雑演算結果を複雑演算結果キューに書き込むことができる。また、ターゲットプロセッサコアにおいて複雑演算結果キューから複雑演算結果を読み出すこともできる。
本願の上述した実施形態による方法は、ターゲットプロセッサコアが、実行対象命令の実行する演算が予め設定された複雑演算であることを確定されたことに応答して、実行対象命令をデコードして、複雑演算識別子および少なくとも一つのオペランドを取得し、複雑演算識別子および少なくとも一つのオペランドを用いて、複雑演算命令を生成し、生成された複雑演算命令を複雑演算命令キューに追加し、さらに、演算アクセラレータが、複雑演算命令キューから複雑演算命令を選択し、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を取得し、取得された演算結果を複雑演算結果として複雑演算結果キューに書き込むことを含む。これにより、演算アクセラレータを活用して複雑な演算を行うことができ、その技術的効果は少なくとも以下を含む。
第1に、演算アクセラレータを導入して複雑な演算を実行することにより、AIチップにおいて複雑な演算を処理する能力と効率を向上させることができる。
第2に、実際には、複雑な演算は単純な演算に比べて実行頻度が高くないので、プロセッサコアごとに演算アクセラレータを配置するのではなく、少なくとも一つのプロセッサコアに一つの演算アクセラレータを共用することで、複雑な演算に伴うAIチップの空間オーバーヘッドや消費電力オーバーヘッドを削減することができる。
第3に、演算アクセラレータに複数の演算ユニットを有し、複数の演算ユニットが複雑な演算を並列に行うため、データハザードがない場合に、複雑な演算の時間的なオーバーヘッドは後続の命令でカバーすることができる。
図3Aをさらに参照すると、人工知能チップに適用される算出方法のもう一つの実施形態のフロー300が示される。該人工知能チップに適用される算出方法のフロー300は、次のステップを含む。
ステップ301では、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得る。
本実施形態において、人工知能チップに適用される算出方法の実行主体(例えば、図1に示されるAIチップ)は、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを含むことができる。演算アクセラレータは、独立した演算能力を有し、演算アクセラレータのほうがプロセッサコアよりも複雑な演算に適し、ここで、複雑演算は、簡単な演算に比べて計算量の大きい演算を意味し、簡単な演算は、計算量が小さい演算を意味することができる。
ステップ302では、ターゲットプロセッサコアは、デコードされた演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成する。
本実施形態において、ステップ301およびステップ302の具体的な操作は、図2に示す実施形態におけるステップ201およびステップ202の操作と実質的に同じであり、ここでその説明を省略する。
ステップ303では、ターゲットプロセッサコアは、生成された複雑演算命令を、ターゲットプロセッサコアに対応する複雑演算命令キューに追加する。
本実施形態では、前記少なくとも一つのプロセッサコアの各々にいずれも複雑演算命令キューが対応している。各プロセッサコアは、対応する複雑演算命令キューを介して演算アクセラレータに接続することができる。これにより、ターゲットプロセッサコアは、ステップ402で生成された複雑演算命令を、ターゲットプロセッサコアに対応する複雑演算命令キューに追加することができる。
ステップ304では、演算アクセラレータは、少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択する。
本実施形態において、演算アクセラレータは、様々な実施方法を用いて少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択することができる。例えば、演算アクセラレータは、少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューをポーリングし、毎回各プロセッサコアに対応する複雑演算命令キューから先入れ先出し順に予め設定された本数(例えば1本)の命令を選択する。
ステップ305では、演算アクセラレータは、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得る。
本実施形態において、ステップ305の具体的な操作は、図2に示す実施形態におけるステップ205の操作と実質的に同じであり、ここでその説明を省略する。
ステップ306では、演算アクセラレータは、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込む。
本実施形態では、前記少なくとも一つのプロセッサコアの各々にいずれも複雑演算結果キューが対応している。各プロセッサコアは、対応する複雑演算結果キューを介して演算アクセラレータに接続することができる。これにより、演算アクセラレータは、ステップ305で得られた演算結果を複雑演算結果として、ステップ304で選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込む。
本実施形態のいくつかの好ましい実施形態では、前記人工知能チップに適用される算出方法は、以下のステップ307をさらに含むことができる。
ステップ307では、ターゲットプロセッサコアは、ターゲットプロセッサコアに対応する複合演算結果キューから複雑演算結果を選択して、ターゲットプロセッサコアの結果レジスタおよび/または人工知能チップのメモリに書き込む。
ここで、ターゲットプロセッサコアには、演算結果を格納するための結果レジスタを設けることができる。これにより、ステップ306の後、ターゲットプロセッサコアは、ターゲットプロセッサコアに対応する複雑演算結果キューから複雑演算結果を選択して、ターゲットプロセッサコアの結果レジスタおよび/または人工知能チップのメモリに書き込むことができる。
ここで、人工知能チップのメモリは、スタティックランダムアクセスメモリ(SRAM、Static Random-Access Memory)、ダイナミックランダムアクセスメモリ(DRAM,Dynamic Random Access Memory)、およびFlashメモリ(Flash Memory)のうち少なくとも1つを含んでもよい。
引き続き図3Bを参照すると、図3Bは、本実施形態による人工知能チップの算出方法に適用される人工知能チップの構造概略図である。図3Bに示すように、人工知能チップは、プロセッサコア301’、302’、303’、複雑演算命令キュー304’、305’、306’、演算アクセラレータ307’、複雑演算結果キュー308’、309’、310’、およびメモリ311’を含むことができる。ここで、プロセッサコア301’、302’、303’は、それぞれ複雑演算命令キュー304’、305’、306’に有線接続され、複雑演算命令キュー304’、305’、306’は、それぞれ演算アクセラレータ307’に有線接続され、演算アクセラレータ307’は、複雑演算結果キュー308’、309’、310’に有線接続され、複雑演算結果キュー308’、309’、310’は、それぞれプロセッサコア301’、302’、303’に有線接続され、プロセッサコア301’、302’、303’は、それぞれメモリ311’に有線接続されている。プロセッサコア301’、302’、303’の内部には、それぞれ結果レジスタ(図3Bに図示せず)が設けられてもよい。
これにより、プロセッサコア301’がターゲットプロセッサコアであると仮定した場合、プロセッサコア301’は、実行対象命令が受信された場合、まず、実行対象命令をデコードして演算識別子および少なくとも一つのオペランドを取得し、次に、デコードされた演算識別子が三角関数演算識別子であり、かつ三角関数演算識別子が予め設定された複雑演算識別子であると確定すると、デコードされた演算識別子、すなわち、三角関数演算識別子と、少なくとも一つのオペランドとを用いて複雑演算命令を生成することができる。図3Cに示すように、図3Cは、一つの複雑演算命令を示す図である。次に、プロセッサコア301’は、生成された複雑演算命令を、プロセッサコアに対応する複雑演算命令キュー304’に追加する。その後、演算アクセラレータ307’は、複雑演算命令キュー304’、305’、306’から複雑演算命令を選択する。その後、演算アクセラレータ307’は、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得る。最後に、演算アクセラレータ307’は、得られた演算結果を複雑演算結果として複雑演算結果キュー308’に書き込む。図3Dに示すように、図3Dは、一つの複雑演算結果を示す図である。好ましくは、プロセッサコア301’はさらに、プロセッサコア301’に対応する複雑演算結果キュー304’から複雑演算結果を選択してプロセッサコア301’の結果レジスタおよび/または人工知能チップのメモリ311’に書き込むことができる。
図3Aから分かるように、図2に対応する実施形態に比べて、本実施形態の人工知能チップに適用される算出方法のフロー300において、各プロセッサコアのために対応する複雑演算命令キューおよび複雑演算結果キューが設けられ、これにより、本実施形態に記載されたアプローチは、人工知能チップに適用される算出を実施する具体的なアプローチを提供することになる。
図4Aをさらに参照すると、人工知能チップに適用される算出方法のもう一つの実施形態のフロー400が示される。該人工知能チップに適用される算出方法のフロー400は、次のステップを含む。
ステップ401では、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得る。
本実施形態において、人工知能チップに適用される算出方法の実行主体(例えば、図1に示されるAIチップ)は、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを含むことができる。演算アクセラレータは、独立した演算能力を有し、演算アクセラレータのほうがプロセッサコアよりも複雑な演算に適し、ここで、複雑演算は、簡単な演算に比べて計算量の大きい演算を意味し、簡単な演算は、計算量が小さい演算を意味することができる。
本実施形態において、ステップ401の具体的な操作は、図2に示す実施形態におけるステップ201の操作と実質的に同じであり、ここでその説明を省略する。
ステップ402では、ターゲットプロセッサコアは、デコードされた演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて、複雑演算命令を生成する。
本実施形態では、ターゲットプロセッサコアは、実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを取得した後、デコードされた演算識別子が予め設定された複雑演算識別子であるか否かを確定することができる。予め設定された複雑演算識別子であると確定された場合、ターゲットプロセッサコアは、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて複雑演算命令を生成することができる。
ステップ403では、ターゲットプロセッサコアは、生成された複雑演算命令を複雑演算命令キューに追加する。
ステップ404では、演算アクセラレータは、複雑演算命令キューから複雑演算命令を選択する。
ステップ405では、演算アクセラレータは、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得る。
本実施形態において、ステップ403、ステップ404およびステップ405の具体的な操作は、図2に示す実施形態におけるステップ203、ステップ204およびステップ205の操作と実質的に同じであり、ここでその説明を省略する。
ステップ406では、演算アクセラレータは、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として複雑演算結果キューに書き込む。
本実施形態では、演算アクセラレータが、ステップ405で複雑演算を実行して得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として複雑演算結果キューに書き込む。
ここで、複雑演算結果キューには、演算アクセラレータが複雑演算を実行して得られた複雑演算結果が格納される。
本実施形態のいくつかの好ましい実施形態では、前記人工知能チップに適用される算出方法は、以下のステップ407をさらに含むことができる。
ステップ407では、ターゲットプロセッサコアは、複雑演算結果キューから、プロセッサコア識別子がターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、ターゲットプロセッサコアの結果レジスタおよび/または人工知能チップのメモリに書き込む。
ここで、ターゲットプロセッサコアには、演算結果を格納するための結果レジスタを設けることができる。このように、ステップ406の後、ターゲットプロセッサコアが、複雑演算結果キューから、プロセッサコア識別子がターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、ターゲットプロセッサコアの結果レジスタおよび/または人工知能チップのメモリに書き込むことができる。
ここで、人工知能チップのメモリは、スタティックランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、およびFlashメモリのうち少なくとも1つを含んでもよい。
引き続き図4Bを参照すると、図4Bは、本実施形態による人工知能チップの算出方法に適用される人工知能チップの構造概略図である。図4Bに示すように、人工知能チップは、プロセッサコア401’、402’、403’、複雑演算命令キュー404’、演算アクセラレータ405’、複雑演算結果キュー406’、およびメモリ407’を含むことができる。ここで、プロセッサコア401’、402’、403’は、それぞれ複雑演算命令キュー404’に有線接続され、複雑演算命令キュー404’は、演算アクセラレータ405’に有線接続され、演算アクセラレータ405’は、複雑演算結果キュー406’に有線接続され、複雑演算結果キュー406’は、プロセッサコア401’、402’、403’に有線接続され、プロセッサコア401’、402’、403’は、それぞれメモリ407’に有線接続されている。プロセッサコア401’、402’、403’の内部には、それぞれ結果レジスタ(図4Bに図示せず)が設けられてもよい。
これにより、プロセッサコア401’がターゲットプロセッサコアであると仮定した場合、プロセッサコア401’は、実行対象命令が受信された場合、まず、実行対象命令をデコードして演算識別子および少なくとも一つのオペランドを取得し、次に、デコードされた演算識別子が三角関数演算識別子であり、かつ三角関数演算識別子が予め設定された複雑演算識別子であると確定すると、デコードされた演算識別子、すなわち、三角関数演算識別子、少なくとも一つのオペランド、およびプロセッサコア401’のプロセッサコア識別子を用いて複雑演算命令を生成することができる。図4Cに示すように、図4Cは、一つの複雑演算命令を示す図である。次に、プロセッサコア401’は、生成された複雑演算命令を、複雑演算命令キュー404’に追加する。それから、演算アクセラレータ405’は、複雑演算命令キュー404’から複雑演算命令を選択する。その後、演算アクセラレータ405’は、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得る。最後に、演算アクセラレータ405’が、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として複雑演算結果キューに406’書き込む。図4Dに示すように、図4Dは、一つの複雑演算結果を示す図である。好ましくは、プロセッサコア401’はさらに、複雑演算結果キューから、プロセッサコア識別子がプロセッサコア401’のプロセッサコア識別子である複雑演算結果の演算結果を選択して、プロセッサコア401’の結果レジスタおよび/又は人工知能チップのメモリ407’に書き込むことができる。
図4Aから分かるように、図3に対応する実施形態に比べて、本実施形態における人工知能チップに適用される算出方法のフロー400は、少なくとも一つのプロセッサコアが一つの複雑演算命令キューおよび複雑演算結果キューを共有し、それにより、本実施形態に記載されたアプローチは、図3Aの対応する実施形態に比べて、AIチップの空間オーバーヘッドおよび消費電力オーバーヘッドをさらに低減することができる。
次に、図5を参照すると、図5は、本願の実施形態の電子機器を実現するのに適したコンピュータシステム500の構造概略図である。図5に示された電子機器は一つの例示に過ぎず、本願の実施形態の機能および使用範囲に対して制限するものではない。
図5に示すように、コンピュータシステム500は、少なくとも一つの中央処理ユニット(CPU、Central Processing Unit)501を含み、これは、読み出し専用メモリ(ROM、Read Only Memory)502に記憶されたプログラム、又は記憶部508からランダムアクセスメモリ(RAM、Random Access Memory)503にロードされたプログラムに従って、様々な適切な動作および処理を実行することができる。RAM503には、システム500の操作に必要な様々なプログラムおよびデータがさらに記憶されている。CPU501は、少なくとも一つの人工知能チップ512を介してデータの処理分析を行ってもよい。CPU501、ROM502およびRAM503および人工知能チップ512は、バス504を介して互いに接続されている。入力/出力(I/O)インターフェース505もバス504に接続されている。
I/Oインターフェース505には、キーボード、マウスなどを含む入力部506、陰極線管(CRT、Cathode Ray Tube)、液晶ディスプレイ(LCD,Liquid Crystal Display)など、およびスピーカなどを含む出力部507、ハードディスクなどを含む記憶部508、およびLAN(ローカルエリアネットワーク、Local Area Network)カード、モデムなどを含むネットワークインターフェースカードの通信部509が接続されている。通信部509は、例えば、インターネットのようなネットワークを介して通信処理を実行する。ドライバ510は、必要に応じてI/Oインターフェース505に接続される。リムーバブルメディア511は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライバ510に取り付けられ、したがって、ドライバ709から読み出されたコンピュータプログラムが必要に応じて記憶部508にインストールされる。
特に、本発明の実施形態によれば、上記のフローチャートに参照して説明された過程はコンピュータソフトウェアプログラムに実現されてもよい。
例えば、本発明の実施形態は、コンピュータ読取可能な媒体にロードされるコンピュータプログラムを含むコンピュータプログラム製品を備え、該コンピュータプログラムは、フローチャートに示される方法を実行するためのプログラムコードを含む。このような実施形態において、該コンピュータプログラムは、通信部509を介してネットワークからダウンロードしてインストールされ、および/又はリムーバブルメディア511からインストールされてもよい。該コンピュータプログラムは、中央処理ユニット(CPU)501により実行される場合に、本願の方法に限定される前記機能を実行する。説明すべきなのは、本願に記載のコンピュータ読取可能な媒体は、コンピュータ読取可能な信号媒体又はコンピュータ読取可能な記憶媒体又は前記両者の任意の組み合わせであってもよい。コンピュータ読取可能な記憶媒体は、例えば、電気、磁気、光、電磁気、赤外線、或いは半導体のシステム、装置又はデバイス、或いはこれらの任意の組み合わせであってもよいが、それらに限定されない。コンピュータ読取可能な記憶媒体についてのより具体的な例は、一つ又は複数の導線を含む電気的な接続、携帯可能なコンピュータ磁気ディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能なプログラミング読取専用メモリ(EPROM又はフラッシュ)、光ファイバ、携帯可能なコンパクト磁気ディスク読取専用メモリ(CD-ROM)、光学記憶素子、磁気記憶素子、或いは前記任意の適当の組み合わせを含むが、それらに限定されない。本願において、コンピュータ読取可能な記憶媒体は、プログラムを含むか記憶する任意の有形の媒体であっても良く、該プログラムは、コマンドによりシステム、装置又はデバイスの使用を実行し、或いはそれらに組み合わせて使用されてもよい。本願において、コンピュータ読取可能な信号媒体は、ベースバンドに伝送され或いはキャリアの一部として伝送され、コンピュータ読取可能なプログラムコードがロードされるデータ信号を含んでもよい。このような伝送されるデータ信号は、各種類の形式を採用しても良く、電磁気信号、光信号又は前記任意の適当の組み合わせを含むが、それらに限定されない。コンピュータ読取可能な信号媒体は、コンピュータ読取可能な記憶媒体以外の任意のコンピュータ読取可能な媒体であっても良く、該コンピュータ読取可能な媒体は、コマンドによりシステム、装置又はデバイスの使用を実行し又はそれらと組み合わせて使用されるプログラムを送信し、伝播し又は伝送することができる。コンピュータ読取可能な媒体に含まれるプログラムコードは、任意の適当の媒体で伝送されても良く、無線、電線、光ケーブル、RFなど、或いは前記任意の適当の組み合わせを含むが、それらに限定されない。
一つ又は複数種類のプログラミング言語又はそれらの組み合わせで、本願の操作を実行するためのコンピュータプログラムコードを編集することができ、前記プログラミング言語には、オブジェクト向けのプログラミング言語、例えばJava、Smalltalk、C++が含まれ、通常のプロシージャ向けプログラミング言語、例えば「C」言語又は類似しているプログラミング言語も含まれる。プログラムコードは、完全にユーザコンピュータにて実行されてもよく、部分的にユーザコンピュータにおいて実行されてもよく、一つの独立のソフトウェアパッケージとして実行されてもよく、部分的にユーザコンピュータにおいて実行され且つ部分的に遠隔コンピュータにおいて実行されてもよく、又は完全に遠隔コンピュータ又はサーバにおいて実行されてもよい。遠隔コンピュータに係る場合に、遠隔コンピュータは、ローカルエリアネットワーク(LAN)又は広域ネットワーク(WAN)を含む任意の種類のネットワークを介して、ユーザコンピュータ、又は、外部コンピュータに接続できる(例えば、インターネットサービス事業者を利用してインターネットを介して接続できる)。
添付図面におけるフローチャートおよびブロック図は、本願の各実施形態によるシステム、方法およびコンピュータプログラム製品により実現可能なシステム構造、機能および操作を示した。この点において、フローチャート又はブロック図における各ブロックは、一つのモジュール、プログラムセグメント、又はコードの一部を表すことができ、該モジュール、プログラムセグメント、又はコードの一部には、一つ又は複数の所定のロジック機能を実現するための実行可能なコマンドが含まれる。注意すべきなのは、幾つかの置換としての実現において、ブロックに示される機能は図面に示される順序と異なって発生されてもよい。例えば、二つの接続的に表示されるブロックは実際に基本的に併行に実行されてもよく、場合によっては逆な順序で実行されてもよく、関連の機能に従って決定される。注意すべきなのは、ブロック図および/又はフローチャートにおける各ブロック、およびブロック図および/又はフローチャートにおけるブロックの組み合わせは、所定の機能又は操作を実行する専用のハードウェアによるシステムで実現されてもよく、或いは専用のハードウェアとコンピュータコードの組み合わせで実現されてもよい。
別の態様として、本願は更にコンピュータ読取可能な媒体を提供し、前記コンピュータ読取可能な媒体には一つ以上のプログラムが組み込まれており、前記一つ以上のプログラムが人工知能チップによって実行されるとき、該人工知能チップは、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアが、実行対象命令をデコードして、演算識別子およびなくとも一つのオペランドを取得し、デコードされた演算識別子が予め設定された複雑演算識別子であることが確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて、複雑演算命令を生成し、生成された複雑演算命令を複雑演算命令キューに追加し、演算アクセラレータが、複雑演算命令キューから複雑演算命令を選択し、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を取得し、取得された演算結果を複雑演算結果として複雑演算結果キューに書き込むようにする。
以上の記載は、ただ本願の好適な実施形態および運用される技術原理に対する説明である。当業者であればわかるように、本願にかかる発明範囲は、前記技術的特徴の特定の組み合わせからなる技術的手段に限定されず、前記発明構想から逸脱されない場合に前記技術特徴又は均等の特徴による任意の組み合わせで形成される他の技術的手段も同時に含まれるべきである。例えば、前記特徴と本願に開示された(それらに限定されない)類似の機能を具備する技術的特徴が互いに置換されて得られる技術的手段は該当する。

Claims (15)

  1. 複数のプロセッサコアと、前記複数のプロセッサコアの各プロセッサコアに接続され、前記複数のプロセッサコアに共用される演算アクセラレータとを備える人工知能チップに適用される算出方法であって、
    前記複数のプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得るステップと、
    前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードにより取得された演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップと、
    前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップと、
    前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップと、
    前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得るステップと、
    前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップと、
    を含む、人工知能チップに適用される算出方法。
  2. 前記複数のプロセッサコアにおけるターゲットプロセッサコアが実行対象命令をデコードする前に、
    実行対象命令の受信に応答して、前記複数のプロセッサコアから、前記実行対象命令を実行するプロセッサコアを選択してターゲットプロセッサコアとするステップをさらに含む請求項1に記載の方法。
  3. 前記複雑演算命令キューは、前記複数のプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューを含み、前記複雑演算結果キューは、前記複数のプロセッサコアの各々のプロセッサコアに対応する複雑演算結果キューを含み、
    前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップは、
    前記ターゲットプロセッサコアが、生成された複雑演算命令を前記ターゲットプロセッサコアに対応する複雑演算命令キューに追加するステップを含み、
    前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップは、
    前記演算アクセラレータが、前記複数のプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択するステップを含み、
    前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、
    前記演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込むステップを含む、
    請求項2に記載の方法。
  4. 前記演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込んだ後、
    前記ターゲットプロセッサコアが、前記ターゲットプロセッサコアに対応する複合演算結果キューから複雑演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび/または前記人工知能チップのメモリに書き込むステップをさらに含む請求項3に記載の方法。
  5. 前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップは、
    前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて、複雑演算命令を生成するステップを含み、
    前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、
    前記演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込むステップを含む、
    請求項2に記載の方法。
  6. 前記演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込んだ後、
    前記ターゲットプロセッサコアが、前記複雑演算結果キューから、プロセッサコア識別子が前記ターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび/または前記人工知能チップのメモリに書き込むステップをさらに含む請求項5に記載の方法。
  7. 前記演算アクセラレータは、特定用途向け集積回路チップおよびフィールドプログラマブルゲートアレイのうちの少なくとも1つを含む、
    請求項1~6のいずれか1項に記載の方法。
  8. 前記複雑演算命令キューおよび前記複雑演算結果キューは先入れ先出しキューである、
    請求項1~6のいずれか1項に記載の方法。
  9. 前記複雑演算命令キューおよび前記複雑演算結果キューはキャッシュに格納される、
    請求項1~6のいずれか1項に記載の方法。
  10. 前記演算アクセラレータは少なくとも一つの演算ユニットを含み、
    前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップは、
    前記演算アクセラレータにおける、選択された複雑演算命令中の複雑演算識別子に対応する演算ユニットが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップを含む、
    請求項1~6のいずれか1項に記載の方法。
  11. 前記予め設定された複雑演算識別子は、べき演算識別子、開平演算識別子、三角関数演算識別子のうちの少なくとも1つを含む、
    請求項1~6のいずれか1項に記載の方法。
  12. 複数のプロセッサコアと、
    前記複数のプロセッサコアの各プロセッサコアに接続され、前記複数のプロセッサコアに共用される演算アクセラレータと、
    少なくとも一つのプログラムが記憶された記憶装置であって、前記少なくとも一つのプログラムが前記人工知能チップによって実行されると、前記人工知能チップに請求項1~11のいずれか1項に記載の方法を実現させる、記憶装置と
    を有する人工知能チップ。
  13. コンピュータプログラムが記憶されたコンピュータ可読媒体であって、
    前記コンピュータプログラムが人工知能チップにより実行されると、請求項1~11のいずれか1項に記載の方法を実現させるコンピュータ可読媒体。
  14. プロセッサ、記憶装置および少なくとも一つの請求項12に記載の人工知能チップを備える電子機器。
  15. 前記人工知能チップにより実行されると、請求項1~11のいずれか1項に記載の方法を実現させるコンピュータプログラム。
JP2019128286A 2018-08-10 2019-07-10 人工知能チップに適用される算出方法および人工知能チップ Active JP7096213B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810906485.9 2018-08-10
CN201810906485.9A CN110825436B (zh) 2018-08-10 2018-08-10 应用于人工智能芯片的计算方法和人工智能芯片

Publications (2)

Publication Number Publication Date
JP2020042782A JP2020042782A (ja) 2020-03-19
JP7096213B2 true JP7096213B2 (ja) 2022-07-05

Family

ID=69405927

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019128286A Active JP7096213B2 (ja) 2018-08-10 2019-07-10 人工知能チップに適用される算出方法および人工知能チップ

Country Status (4)

Country Link
US (1) US20200050481A1 (ja)
JP (1) JP7096213B2 (ja)
KR (1) KR102371844B1 (ja)
CN (1) CN110825436B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10981578B2 (en) * 2018-08-02 2021-04-20 GM Global Technology Operations LLC System and method for hardware verification in an automotive vehicle
US10708363B2 (en) * 2018-08-10 2020-07-07 Futurewei Technologies, Inc. Artificial intelligence based hierarchical service awareness engine
CN111782580B (zh) 2020-06-30 2024-03-01 北京百度网讯科技有限公司 复杂计算装置、方法、人工智能芯片和电子设备
CN112486575A (zh) * 2020-12-07 2021-03-12 广西电网有限责任公司电力科学研究院 一种共享加速运算部件的电力人工智能芯片及应用方法
CN115454693B (zh) * 2022-08-30 2023-11-14 昆仑芯(北京)科技有限公司 写后读异常的检测方法、装置、控制器、处理器及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002508864A (ja) 1997-06-11 2002-03-19 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 特殊浮動小数点数の迅速な検出のための浮動小数点値のタグ付け
JP2006048661A (ja) 2004-07-06 2006-02-16 Matsushita Electric Ind Co Ltd プロセッサとコプロセッサとの間でのデータ転送を制御する演算処理装置
JP2011138308A (ja) 2009-12-28 2011-07-14 Sony Corp プロセッサ、コプロセッサ、情報処理システムおよびそれらにおける制御方法
US20120066474A1 (en) 2010-09-13 2012-03-15 International Business Machines Corporation Real Address Accessing in a Coprocessor Executing on Behalf of an Unprivileged Process
JP2015532990A (ja) 2012-09-27 2015-11-16 インテル・コーポレーション 複数のコアを有するプロセッサ、共有コア拡張ロジック及び複数の共有コア拡張使用命令

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04195251A (ja) * 1990-10-03 1992-07-15 Fujitsu Ltd ニューラルネットの学習計算方法
JP2815236B2 (ja) * 1993-12-15 1998-10-27 シリコン・グラフィックス・インコーポレーテッド スーパースカーラマイクロプロセッサのための命令ディスパッチ方法及びレジスタ競合についてのチェック方法
US6148395A (en) * 1996-05-17 2000-11-14 Texas Instruments Incorporated Shared floating-point unit in a single chip multiprocessor
CN1234066C (zh) * 2001-09-27 2005-12-28 中国科学院计算技术研究所 基于操作队列复用的指令流水线系统和方法
US7725519B2 (en) * 2005-10-05 2010-05-25 Qualcom Incorporated Floating-point processor with selectable subprecision
CN100530164C (zh) * 2007-12-29 2009-08-19 中国科学院计算技术研究所 一种risc处理器及其寄存器标志位处理方法
US8452946B2 (en) * 2009-12-17 2013-05-28 Intel Corporation Methods and apparatuses for efficient load processing using buffers
CN101739237B (zh) * 2009-12-21 2013-09-18 龙芯中科技术有限公司 微处理器功能性指令实现装置和方法
US9691034B2 (en) * 2013-05-14 2017-06-27 The Trustees Of Princeton University Machine-learning accelerator (MLA) integrated circuit for extracting features from signals and performing inference computations
GB2519103B (en) * 2013-10-09 2020-05-06 Advanced Risc Mach Ltd Decoding a complex program instruction corresponding to multiple micro-operations
WO2015096167A1 (en) * 2013-12-28 2015-07-02 Intel Corporation Rsa algorithm acceleration processors, methods, systems, and instructions
US9652237B2 (en) * 2014-12-23 2017-05-16 Intel Corporation Stateless capture of data linear addresses during precise event based sampling
US10089500B2 (en) * 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions
CN105302525B (zh) * 2015-10-16 2018-01-05 上海交通大学 用于多层次异构结构的可重构处理器的并行处理方法
US10282296B2 (en) * 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002508864A (ja) 1997-06-11 2002-03-19 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 特殊浮動小数点数の迅速な検出のための浮動小数点値のタグ付け
JP2006048661A (ja) 2004-07-06 2006-02-16 Matsushita Electric Ind Co Ltd プロセッサとコプロセッサとの間でのデータ転送を制御する演算処理装置
JP2011138308A (ja) 2009-12-28 2011-07-14 Sony Corp プロセッサ、コプロセッサ、情報処理システムおよびそれらにおける制御方法
US20120066474A1 (en) 2010-09-13 2012-03-15 International Business Machines Corporation Real Address Accessing in a Coprocessor Executing on Behalf of an Unprivileged Process
JP2015532990A (ja) 2012-09-27 2015-11-16 インテル・コーポレーション 複数のコアを有するプロセッサ、共有コア拡張ロジック及び複数の共有コア拡張使用命令

Also Published As

Publication number Publication date
CN110825436B (zh) 2022-04-29
KR102371844B1 (ko) 2022-03-08
KR20200018236A (ko) 2020-02-19
CN110825436A (zh) 2020-02-21
US20200050481A1 (en) 2020-02-13
JP2020042782A (ja) 2020-03-19

Similar Documents

Publication Publication Date Title
JP7096213B2 (ja) 人工知能チップに適用される算出方法および人工知能チップ
US10140251B2 (en) Processor and method for executing matrix multiplication operation on processor
US11200724B2 (en) Texture processor based ray tracing acceleration method and system
EP3832499B1 (en) Matrix computing device
WO2017185396A1 (zh) 一种用于执行矩阵加/减运算的装置和方法
CN107766079B (zh) 处理器以及用于在处理器上执行指令的方法
KR101558069B1 (ko) 범용 그래픽스 프로세싱 유닛에서의 컴퓨테이션 리소스 파이프라이닝
US20110161624A1 (en) Floating Point Collect and Operate
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN107315563B (zh) 一种用于执行向量比较运算的装置和方法
US8578387B1 (en) Dynamic load balancing of instructions for execution by heterogeneous processing engines
CN107315716B (zh) 一种用于执行向量外积运算的装置和方法
CN110825435B (zh) 用于处理数据的方法和装置
CN111651200A (zh) 一种用于执行向量超越函数运算的装置和方法
CN117435855B (zh) 用于进行卷积运算的方法、电子设备和存储介质
US20140176578A1 (en) Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline
US11119766B2 (en) Hardware accelerator with locally stored macros
JP5528054B2 (ja) 改善された直接メモリ・アクセス転送効率のための方法、プログラム、および装置
KR20210012886A (ko) 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체
EP3758288A1 (en) Digital signature verification engine for reconfigurable circuit devices
US20110047351A1 (en) Routing image data across on-chip networks
KR102467544B1 (ko) 연산 장치 및 그 조작 방법
WO2022253287A1 (zh) 用于生成随机数的方法及其相关产品
WO2023232006A1 (zh) 仿真装置、仿真系统及其仿真方法、存储介质
CN114707478B (zh) 映射表生成方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210726

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20211018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220510

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: 20220531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220623

R150 Certificate of patent or registration of utility model

Ref document number: 7096213

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150