(57)【要約】      （修正有）【課題】人工知能チップの空間オーバーヘッドおよび電力消費オーバーヘッドを低減する方法を提供する。【解決手段】人工知能チップに適用される算出方法であって、実行対象命令が受信されると、実行対象命令を実行するプロセッサコアをターゲットプロセッサコアとして選択する。ターゲットプロセッサコアが、実行対象命令をデコードし、デコードされた演算識別子が予め設定された複雑演算識別子と確定されると、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成し、生成された複雑演算命令を複雑演算命令キューに追加する。演算アクセラレータが、複雑演算命令キューから複雑演算命令を選択し、選択された複雑演算命令中のオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を複雑演算結果キューに書き込む。【選択図】図２
2020042782.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのプロセッサコアと、前記少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを備える人工知能チップに適用される算出方法であって、
前記少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得るステップと、
前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードにより取得された演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップと、
前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップと、
前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップと、
前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得るステップと、
前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップと、
を含む、人工知能チップに適用される算出方法。
【請求項２】
前記少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアが実行対象命令をデコードする前に、
実行対象命令の受信に応答して、前記少なくとも一つのプロセッサコアから、前記実行対象命令を実行するプロセッサコアを選択してターゲットプロセッサコアとするステップをさらに含む請求項１に記載の方法。
【請求項３】
前記複雑演算命令キューは、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューを含み、前記複雑演算結果キューは、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算結果キューを含み、
前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップは、
前記ターゲットプロセッサコアが、生成された複雑演算命令を前記ターゲットプロセッサコアに対応する複雑演算命令キューに追加するステップを含み、
前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップは、
前記演算アクセラレータが、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択するステップを含み、
前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、
前記演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込むステップを含む、
請求項２に記載の方法。
【請求項４】
前記演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込んだ後、
前記ターゲットプロセッサコアが、前記ターゲットプロセッサコアに対応する複合演算結果キューから複雑演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび／または前記人工知能チップのメモリに書き込むステップをさらに含む請求項３に記載の方法。
【請求項５】
前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップは、
前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて、複雑演算命令を生成するステップを含み、
前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、
前記演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込むステップを含む、
請求項２に記載の方法。
【請求項６】
前記演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込んだ後、
前記ターゲットプロセッサコアが、前記複雑演算結果キューから、プロセッサコア識別子が前記ターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび／または前記人工知能チップのメモリに書き込むステップをさらに含む請求項５に記載の方法。
【請求項７】
前記演算アクセラレータは、特定用途向け集積回路チップおよびフィールドプログラマブルゲートアレイのうちの少なくとも１つを含む、
請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記複雑演算命令キューおよび前記複雑演算結果キューは先入れ先出しキューである、
請求項１〜６のいずれか１項に記載の方法。
【請求項９】
前記複雑演算命令キューおよび前記複雑演算結果キューはキャッシュに格納される、
請求項１〜６のいずれか１項に記載の方法。
【請求項１０】
前記演算アクセラレータは少なくとも一つの演算ユニットを含み、
前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップは、
前記演算アクセラレータにおける、選択された複雑演算命令中の複雑演算識別子に対応する演算ユニットが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップを含む、
請求項１〜６のいずれか１項に記載の方法。
【請求項１１】
前記予め設定された複雑演算識別子は、べき演算識別子、開平演算識別子、三角関数演算識別子のうちの少なくとも１つを含む、
請求項１〜６のいずれか１項に記載の方法。
【請求項１２】
少なくとも一つのプロセッサコアと、
前記少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータと、
少なくとも一つのプログラムが記憶された記憶装置であって、前記少なくとも一つのプログラムが前記人工知能チップによって実行されると、前記人工知能チップに請求項１〜１１のいずれか１項に記載の方法を実現させる、記憶装置と
を有する人工知能チップ。
【請求項１３】
コンピュータプログラムが記憶されたコンピュータ可読媒体であって、
前記コンピュータプログラムが人工知能チップにより実行されると、請求項１〜１１のいずれか１項に記載の方法を実現させるコンピュータ可読媒体。
【請求項１４】
プロセッサ、記憶装置および少なくとも一つの請求項１２に記載の人工知能チップを備える電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の実施形態は、コンピュータ技術分野に関するものであり、具体的に、人工知能チップに適用される算出方法および人工知能チップに関するものである。
【背景技術】
【０００２】
人工知能チップであるＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）チップは、ＡＩアクセラレータまたはコンピューティングカードとも呼ばれ、人工知能アプリケーション中の大量コンピューティングタスクを処理するための特化されたモジュールを指す（他の非コンピューティングタスクは依然としてＣＰＵが担当している）。ＡＩコンピューティングにおいて演算のニーズは巨大なものであり、特に複雑な演算ニーズは計算性能に大きな影響を与える。複雑な演算は、基本的な演算命令で実施することができるが、（浮動小数点平方根演算、浮動小数点べき演算、三角関数演算のような）複雑演算（complex computation）の実行効率を低下させる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本願の実施形態は、人工知能チップに適用される算出方法および人工知能チップを提案する。
【０００４】
第一の態様では、本願実施形態は、人工知能チップに適用される算出方法を提供する。当該方法は、前記少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得るステップと、前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードにより取得された演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップと、前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップと、前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップと、前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得るステップと、前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップと、を含む。
【０００５】
いくつかの実施形態において、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアが実行対象命令をデコードする前に、前記方法はさらに、実行対象命令の受信に応答して、前記少なくとも一つのプロセッサコアから、前記実行対象命令を実行するプロセッサコアを選択してターゲットプロセッサコアとするステップを含む。
【０００６】
いくつかの実施形態において、複雑演算命令キューは、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューを含み、前記複雑演算結果キューは、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算結果キューを含み、前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップは、前記ターゲットプロセッサコアが、生成された複雑演算命令を前記ターゲットプロセッサコアに対応する複雑演算命令キューに追加するステップを含み、前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップは、前記演算アクセラレータが、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択するステップを含み、前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、前記演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込むステップを含む。
【０００７】
いくつかの実施形態において、演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込んだ後、前記方法は、さらに前記ターゲットプロセッサコアが、前記ターゲットプロセッサコアに対応する複合演算結果キューから複雑演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび／または前記人工知能チップのメモリに書き込むステップを含む。
【０００８】
いくつかの実施形態において、ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップは、前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて、複雑演算命令を生成するステップを含み、前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、前記演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込むステップを含む。
【０００９】
いくつかの実施形態において、演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込んだ後、前記方法はさらに、前記ターゲットプロセッサコアが、前記複雑演算結果キューから、プロセッサコア識別子が前記ターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび／または前記人工知能チップのメモリに書き込むステップを含む。
【００１０】
いくつかの実施形態において、演算アクセラレータは、特定用途向け集積回路チップおよびフィールドプログラマブルゲートアレイのうちのの少なくとも１つを含む。
【００１１】
いくつかの実施形態において、複雑演算命令キューおよび複雑演算結果キューは先入れ先出しキューである。
【００１２】
いくつかの実施形態において、複雑演算命令キューおよび複雑演算結果キューはキャッシュに記憶される。
【００１３】
いくつかの実施形態において、演算アクセラレータは少なくとも一つの演算ユニットを含み、前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップは、前記演算アクセラレータにおける、選択された複雑演算命令中の複雑演算識別子に対応する演算ユニットが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップを含む。
【００１４】
いくつかの実施形態において、予め設定された複雑演算識別子は、べき演算識別子、開平演算識別子、三角関数演算識別子のうちの少なくとも１つを含む。
【００１５】
第二の態様では、本願実施形態は人工知能チップを提供する。人工知能チップは、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータと、少なくとも一つのプログラムが記憶された記憶装置とを備え、少なくとも一つのプログラムが人工知能チップによって実行されるとき、人工知能チップに第１の態様のいずれかの実施形態に記載された方法を実現させる。
【００１６】
第三の態様では、本願実施形態は、コンピュータプログラムが格納されたコンピュータ可読記憶媒体を提供する。該コンピュータプログラムが人工知能チップにより実行されるとき、第一の態様のいずれかの実施形態に記載された方法を実現させる。
【００１７】
第四の態様では、本願実施形態は、プロセッサ、記憶装置および第二の態様に記載された少なくとも一つの人工知能チップを備える電子機器を提供する。
【００１８】
本願実施形態による人工知能チップに適用される算出方法において、人工知能チップが、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを備える。当該方法は、ターゲットプロセッサコアが、実行対象命令が実行する演算が予め設定された複雑演算であると確定されたことに応答して、実行対象命令をデコードして、複雑演算識別子および少なくとも一つのオペランドを取得し、得られた複雑演算識別子および少なくとも一つのオペランドを用いて、複雑演算命令を生成し、生成された複雑演算命令を複雑演算命令キューに追加する。さらに、演算アクセラレータが、複雑演算命令キューから複雑演算命令を選択し、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を取得し、取得された演算結果を複雑演算結果として複雑演算結果キューに書き込む。
【００１９】
これにより、演算アクセラレータを活用して複雑な演算を行うことができ、その技術的効果は少なくとも以下を含む。
【００２０】
第１に、演算アクセラレータを導入して複雑な演算を実行することにより、ＡＩチップによる複雑な演算を処理する能力と効率を向上させることができる。
【００２１】
第２に、実際には、複雑な演算は単純な演算に比べて実行頻度が高くないので、プロセッサコアごとに一つのプロセッサコアを配置するのではなく、少なくとも一つのプロセッサコアが一つの演算アクセラレータを共用することにより、複雑な演算に伴うＡＩチップの空間オーバーヘッドや消費電力オーバーヘッドを削減することができる。
【００２２】
第３に、演算アクセラレータに複数の演算ユニットを有し、複数の演算ユニットが複雑な演算を並列に実行するため、データハザードがない場合に、複雑な演算の時間的なオーバーヘッドを後続命令でカバーすることができる。
【図面の簡単な説明】
【００２３】
以下、添付図面を参照ながら非限定的実施形態を詳細に説明することで、本願のその他特徴、目的および利点は一層明確になる。
【００２４】
【図１】本願の一実施形態が適用可能な例示的システムアーキテクチャ図である。
【図２】本願による人工知能チップに適用される算出方法の一実施形態のフローチャートである。
【図３Ａ】本願による人工知能チップに適用される算出方法の別の一実施形態のフローチャートである。
【図３Ｂ】図３Ａの実施形態による人工知能チップの算出方法に適用される人工知能チップの構造概略図である。
【図３Ｃ】図３Ａの実施形態による複雑演算命令の概略図である。
【図３Ｄ】図３Ａの実施形態による複雑演算命令の概略図である。
【図４Ａ】本願による人工知能チップに適用される算出方法の別の一実施形態のフローチャートである。
【図４Ｂ】図４Ａの実施形態による人工知能チップの算出方法に適用される人工知能チップの構造概略図である。
【図４Ｃ】図４Ａの実施形態による複雑演算命令の概略図である。
【図４Ｄ】図４Ａの実施形態による複雑演算命令の概略図である。
【図５】本願の実施形態を実施するのに適する電子機器のコンピュータシステムの構造概略図である。
【発明を実施するための形態】
【００２５】
以下、添付図面および実施形態を参照しながら本願をさらに詳細に説明する。本明細書に記載された特定の実施形態は、関連本発明を解釈するためのものであり、本発明を限定するためのものではないことを理解されたい。なお、説明の便宜上、図面には関連発明に関わる部分のみ示されていることである。
【００２６】
説明すべきことは、本願における実施形態および実施形態における特徴は、衝突しない限り、互いに組み合わせ可能であることである。以下、添付図面を参照し、実施形態に合わせて本発明を詳細に説明する。
【００２７】
図１は、本願を適用することができる人工知能チップに適用される算出方法の一実施形態の例示的システムアーキテクチャ１００を示す。
【００２８】
図１に示すように、システムアーキテクチャ１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）１０１、バス１０２、およびＡＩチップ１０３、１０４を含むことができる。バス１０２は、ＣＰＵ１０１とＡＩチップ１０３、１０４との間に通信リンクを提供するための媒体である。バス１０２は、例えば、ＡＭＢＡ（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＯＣＰ（Ｏｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ）バスなどのような様々なバスタイプを含むことができる。
【００２９】
ＡＩチップ１０３は、プロセッサコア１０３１、１０３２、１０３３、有線１０３４、および演算アクセラレータ１０３５を含むことができる。有線１０３４は、プロセッサコア１０３１、１０３２、１０３３と演算アクセラレータ１０３５との間に通信リンクを提供するための媒体である。有線１０３４は、例えば、ＰＣＩバス、ＰＣＩＥバス、ネットワークオンチップ（Ｎｅｔｗｏｒｋ  Ｏｎ  Ｃｈｉｐ）プロトコルをサポートする、ＡＭＢＡバス、ＯＣＰバス、および他のネットワークオンチップバスなどの様々な有線タイプを含むことができる。
【００３０】
ＡＩチップ１０４は、プロセッサコア１０４１、１０４２、１０４３、有線１０４４、および演算アクセラレータ１０４５を含むことができる。有線１０４４は、プロセッサコア１０４１、１０４２、１０４３と演算アクセラレータ１０４５との間に通信リンクを提供するための媒体である。有線１０４４は、例えば、ＰＣＩバス、ＰＣＩＥバス、ネットワークオンチップ（Ｎｅｔｗｏｒｋ  Ｏｎ  Ｃｈｉｐ）プロトコルをサポートする、ＡＭＢＡバス、ＯＣＰバス、および他のネットワークオンチップバスなどの様々な有線タイプを含むことができる。
【００３１】
説明すべきことは、本願の実施形態による人工知能チップに適用される算出方法は、一般にＡＩチップ１０３、１０４で実行される。
【００３２】
図１におけるＣＰＵ、バス、ＡＩチップの数は単なる一例にすぎないことを理解されたい。実施の必要に応じて、任意の数のＣＰＵ、バス、ＡＩチップを有することができる。同様に、ＡＩチップ１０３、１０４内のプロセッサコア、有線およびメモリの数も例示的なものに過ぎない。実施の必要に応じて、ＡＩチップ１０３、１０４は、任意の数のプロセッサコア、有線およびメモリを有してもよい。また、実施の必要に応じて、システムアーキテクチャ１００は、メモリ、（マウス、キーボード等）入力デバイス、（ディスプレイ、スピーカ等）出力デバイス、入出力インターフェースなどを更に含んでもよい。
【００３３】
引き続き図２を参照すると、本出願による人工知能チップに適用される算出方法の一実施形態のフロー２００が示される。該人工知能チップに適用される算出方法は、次のステップを含む。
【００３４】
ステップ２０１では、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを取得する。
【００３５】
本実施形態において、人工知能チップに適用される算出方法の実行主体（例えば、図１に示されるＡＩチップ）は、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを含むことができる。演算アクセラレータは、独立した演算能力を有し、演算アクセラレータのほうがプロセッサコアよりも複雑演算に適用し、ここで、複雑演算は、簡単な演算に比べて計算量の大きい演算を意味し、簡単な演算は、計算量が小さい演算を意味することができる。例えば、簡単な演算は、加算、乗算、または加算と乗算との単純な組み合わせであってもよい。一般に、プロセッサコアには加算器と乗算器とが含まれているため、プロセッサコアのほうがより簡単な演算を行うのに適する。しかし、複雑な演算とは、べき演算、開平演算、三角関数演算などの、加算と乗算の単純な組み合わせではできない演算をいう。
【００３６】
本実施形態のいくつかの好ましい実施形態において、演算アクセラレータは、特定用途向け集積回路（ＡＳＩＣ，Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）チップ、およびフィールドプログラマブルゲートアレイ（ＦＰＧＡ，Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のうち少なくとも１つを含んでもよい。
【００３７】
ここで、前記実行主体は、実行対象命令が受信された場合、少なくとも一つのプロセッサコアから、実行対象命令を実行するプロセッサコアをターゲットプロセッサコアとして選択することができる。例えば、各プロセッサコアの現在の動作状態に基づいて、少なくとも一つのプロセッサコアから、実行対象命令を実行するプロセッサコアをターゲットプロセッサコアとして選択することができる。また、例えば、ポーリング方式により、少なくとも一つのプロセッサコアから、実行対象命令を実行するプロセッサコアをターゲットプロセッサコアとして選択してもよい。
【００３８】
これにより、ターゲットプロセッサコアは、実行対象命令が受信された場合に、実行対象命令をデコードして、演算識別子と少なくとも一つのオペランドとを得ることができる。ここで、演算識別子は、プロセッサコアが実行可能な様々な演算を一意に識別するために使用され得る。演算識別子は、数字、アルファベット、記号の少なくとも１つを含むことができる。
【００３９】
ステップ２０２では、ターゲットプロセッサコアは、デコードされた演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成する。
【００４０】
本実施形態では、ターゲットプロセッサコアは、実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを取得した後、デコードされた演算識別子が予め設定された複雑演算識別子であるか否かを確定することができる。予め設定された複雑演算識別子であると確定された場合、ターゲットプロセッサコアは、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成することができる。
【００４１】
具体的には、ここで、各プロセッサコアは、予め設定された複雑演算識別子セットを予め記憶することができ、このようにして、ターゲットプロセッサコアは、デコードされた演算識別子が予め設定された複雑演算識別子セットに属するか否かを確定することができ、予め設定された複雑演算識別子セットに属すると確定された場合、デコードされた演算識別子が予め設定された複雑演算識別子であると確定し、予め設定された複雑演算識別子セットに属しないと確定された場合、デコードされた演算識別子が予め設定された複雑演算識別子ではないと確定することができる。
【００４２】
ここで、複雑演算識別子セットは、当業者が実際応用演算ニーズに基づいて、ＡＩコンピューティングのうち常用演算に係る計算量の大きい演算に対し、該演算の演算識別子を複雑演算識別子として形成した複雑演算識別子セットであってもよい。
【００４３】
いくつかの実施形態において、予め設定された複雑演算識別子は、べき演算識別子、開平演算識別子、および三角関数演算識別子の少なくとも１つを含むことができる。
【００４４】
ステップ２０３では、ターゲットプロセッサコアは、生成された複雑演算命令を複雑演算命令キューに追加する。
【００４５】
本実施形態において、ターゲットプロセッサコアは、ステップ２０２で生成された複雑演算命令を複雑演算命令キューに追加することができる。ここで、複雑な演算命令キューには実行対象複雑演算命令が格納されている。
【００４６】
本実施形態のいくつかの好ましい実施形態では、複雑演算命令キューは先入れ先出しキューであってもよい。
【００４７】
本実施形態のいくつかの好ましい実施形態では、複雑演算命令キューは、ターゲットプロセッサコアおよび演算アクセラレータにそれぞれ有線接続可能なキャッシュに格納されてもよい。これにより、ターゲットプロセッサコアは、生成された複雑演算命令を複雑演算命令キューに追加することができ、後続のステップ２０４において、演算アクセラレータは、複雑演算命令キューから複雑演算命令を選択することもできる。
【００４８】
ステップ２０４では、演算アクセラレータは、複雑演算命令キューから複雑演算命令を選択する。
【００４９】
本実施形態において、演算アクセラレータは様々な実施方法を用いて複雑演算命令キューから複雑演算命令を選択することができる。例えば、演算部は、先入れ先出し順に従って複雑演算命令キューから複雑演算命令を選択してもよい。
【００５０】
ステップ２０５では、演算アクセラレータは、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の指示する複雑演算を実行して、演算結果を得る。
【００５１】
本実施形態では、ステップ２０４で選択された複雑演算命令に基づいて、演算アクセラレータは、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得ることができる。
【００５２】
本実施形態のいくつかの好ましい実施形態において、演算アクセラレータは、少なくとも一つの演算ユニットを含んでもよい。これにより、ステップ２０５では、演算アクセラレータにおける、選択された複雑演算命令中の複雑演算識別子に対応する演算ユニットが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行する。
【００５３】
ステップ２０６では、演算アクセラレータは、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込む。
【００５４】
本実施形態では、演算アクセラレータは、ステップ２０５で複雑演算を実行して得られた演算結果を複雑演算結果として複雑演算結果キューに書き込む。
【００５５】
ここで、複雑演算結果キューには、演算アクセラレータにより複雑演算を実行して得られた複雑演算結果が格納される。
【００５６】
本実施形態のいくつかの好ましい実施形態では、複雑演算結果キューは先入れ先出しキューであってもよい。
【００５７】
本実施形態のいくつかの好ましい実施形態では、複雑演算結果キューは、ターゲットプロセッサコアおよび演算アクセラレータにそれぞれ有線接続可能なキャッシュに格納されてもよい。これにより、演算アクセラレータは、複雑演算結果を複雑演算結果キューに書き込むことができる。また、ターゲットプロセッサコアにおいて複雑演算結果キューから複雑演算結果を読み出すこともできる。
【００５８】
本願の上述した実施形態による方法は、ターゲットプロセッサコアが、実行対象命令の実行する演算が予め設定された複雑演算であることを確定されたことに応答して、実行対象命令をデコードして、複雑演算識別子および少なくとも一つのオペランドを取得し、複雑演算識別子および少なくとも一つのオペランドを用いて、複雑演算命令を生成し、生成された複雑演算命令を複雑演算命令キューに追加し、さらに、演算アクセラレータが、複雑演算命令キューから複雑演算命令を選択し、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を取得し、取得された演算結果を複雑演算結果として複雑演算結果キューに書き込むことを含む。これにより、演算アクセラレータを活用して複雑な演算を行うことができ、その技術的効果は少なくとも以下を含む。
【００５９】
第１に、演算アクセラレータを導入して複雑な演算を実行することにより、ＡＩチップにおいて複雑な演算を処理する能力と効率を向上させることができる。
【００６０】
第２に、実際には、複雑な演算は単純な演算に比べて実行頻度が高くないので、プロセッサコアごとに演算アクセラレータを配置するのではなく、少なくとも一つのプロセッサコアに一つの演算アクセラレータを共用することで、複雑な演算に伴うＡＩチップの空間オーバーヘッドや消費電力オーバーヘッドを削減することができる。
【００６１】
第３に、演算アクセラレータに複数の演算ユニットを有し、複数の演算ユニットが複雑な演算を並列に行うため、データハザードがない場合に、複雑な演算の時間的なオーバーヘッドは後続の命令でカバーすることができる。
【００６２】
図３Ａをさらに参照すると、人工知能チップに適用される算出方法のもう一つの実施形態のフロー３００が示される。該人工知能チップに適用される算出方法のフロー３００は、次のステップを含む。
【００６３】
ステップ３０１では、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得る。
【００６４】
本実施形態において、人工知能チップに適用される算出方法の実行主体（例えば、図１に示されるＡＩチップ）は、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを含むことができる。演算アクセラレータは、独立した演算能力を有し、演算アクセラレータのほうがプロセッサコアよりも複雑な演算に適し、ここで、複雑演算は、簡単な演算に比べて計算量の大きい演算を意味し、簡単な演算は、計算量が小さい演算を意味することができる。
【００６５】
ステップ３０２では、ターゲットプロセッサコアは、デコードされた演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成する。
【００６６】
本実施形態において、ステップ３０１およびステップ３０２の具体的な操作は、図２に示す実施形態におけるステップ２０１およびステップ２０２の操作と実質的に同じであり、ここでその説明を省略する。
【００６７】
ステップ３０３では、ターゲットプロセッサコアは、生成された複雑演算命令を、ターゲットプロセッサコアに対応する複雑演算命令キューに追加する。
【００６８】
本実施形態では、前記少なくとも一つのプロセッサコアの各々にいずれも複雑演算命令キューが対応している。各プロセッサコアは、対応する複雑演算命令キューを介して演算アクセラレータに接続することができる。これにより、ターゲットプロセッサコアは、ステップ４０２で生成された複雑演算命令を、ターゲットプロセッサコアに対応する複雑演算命令キューに追加することができる。
【００６９】
ステップ３０４では、演算アクセラレータは、少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択する。
【００７０】
本実施形態において、演算アクセラレータは、様々な実施方法を用いて少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択することができる。例えば、演算アクセラレータは、少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューをポーリングし、毎回各プロセッサコアに対応する複雑演算命令キューから先入れ先出し順に予め設定された本数（例えば１本）の命令を選択する。
【００７１】
ステップ３０５では、演算アクセラレータは、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得る。
【００７２】
本実施形態において、ステップ３０５の具体的な操作は、図２に示す実施形態におけるステップ２０５の操作と実質的に同じであり、ここでその説明を省略する。
【００７３】
ステップ３０６では、演算アクセラレータは、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込む。
【００７４】
本実施形態では、前記少なくとも一つのプロセッサコアの各々にいずれも複雑演算結果キューが対応している。各プロセッサコアは、対応する複雑演算結果キューを介して演算アクセラレータに接続することができる。これにより、演算アクセラレータは、ステップ３０５で得られた演算結果を複雑演算結果として、ステップ３０４で選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込む。
【００７５】
本実施形態のいくつかの好ましい実施形態では、前記人工知能チップに適用される算出方法は、以下のステップ３０７をさらに含むことができる。
【００７６】
ステップ３０７では、ターゲットプロセッサコアは、ターゲットプロセッサコアに対応する複合演算結果キューから複雑演算結果を選択して、ターゲットプロセッサコアの結果レジスタおよび／または人工知能チップのメモリに書き込む。
【００７７】
ここで、ターゲットプロセッサコアには、演算結果を格納するための結果レジスタを設けることができる。これにより、ステップ３０６の後、ターゲットプロセッサコアは、ターゲットプロセッサコアに対応する複雑演算結果キューから複雑演算結果を選択して、ターゲットプロセッサコアの結果レジスタおよび／または人工知能チップのメモリに書き込むことができる。
【００７８】
ここで、人工知能チップのメモリは、スタティックランダムアクセスメモリ（ＳＲＡＭ、Ｓｔａｔｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ，Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、およびＦｌａｓｈメモリ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）のうち少なくとも１つを含んでもよい。
【００７９】
引き続き図３Ｂを参照すると、図３Ｂは、本実施形態による人工知能チップの算出方法に適用される人工知能チップの構造概略図である。図３Ｂに示すように、人工知能チップは、プロセッサコア３０１’、３０２’、３０３’、複雑演算命令キュー３０４’、３０５’、３０６’、演算アクセラレータ３０７’、複雑演算結果キュー３０８’、３０９’、３１０’、およびメモリ３１１’を含むことができる。ここで、プロセッサコア３０１’、３０２’、３０３’は、それぞれ複雑演算命令キュー３０４’、３０５’、３０６’に有線接続され、複雑演算命令キュー３０４’、３０５’、３０６’は、それぞれ演算アクセラレータ３０７’に有線接続され、演算アクセラレータ３０７’は、複雑演算結果キュー３０８’、３０９’、３１０’に有線接続され、複雑演算結果キュー３０８’、３０９’、３１０’は、それぞれプロセッサコア３０１’、３０２’、３０３’に有線接続され、プロセッサコア３０１’、３０２’、３０３’は、それぞれメモリ３１１’に有線接続されている。プロセッサコア３０１’、３０２’、３０３’の内部には、それぞれ結果レジスタ（図３Ｂに図示せず）が設けられてもよい。
【００８０】
これにより、プロセッサコア３０１’がターゲットプロセッサコアであると仮定した場合、プロセッサコア３０１’は、実行対象命令が受信された場合、まず、実行対象命令をデコードして演算識別子および少なくとも一つのオペランドを取得し、次に、デコードされた演算識別子が三角関数演算識別子であり、かつ三角関数演算識別子が予め設定された複雑演算識別子であると確定すると、デコードされた演算識別子、すなわち、三角関数演算識別子と、少なくとも一つのオペランドとを用いて複雑演算命令を生成することができる。図３Ｃに示すように、図３Ｃは、一つの複雑演算命令を示す図である。次に、プロセッサコア３０１’は、生成された複雑演算命令を、プロセッサコアに対応する複雑演算命令キュー３０４’に追加する。その後、演算アクセラレータ３０７’は、複雑演算命令キュー３０４’、３０５’、３０６’から複雑演算命令を選択する。その後、演算アクセラレータ３０７’は、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得る。最後に、演算アクセラレータ３０７’は、得られた演算結果を複雑演算結果として複雑演算結果キュー３０８’に書き込む。図３Ｄに示すように、図３Ｄは、一つの複雑演算結果を示す図である。好ましくは、プロセッサコア３０１’はさらに、プロセッサコア３０１’に対応する複雑演算結果キュー３０４’から複雑演算結果を選択してプロセッサコア３０１’の結果レジスタおよび／または人工知能チップのメモリ３１１’に書き込むことができる。
【００８１】
図３Ａから分かるように、図２に対応する実施形態に比べて、本実施形態の人工知能チップに適用される算出方法のフロー３００において、各プロセッサコアのために対応する複雑演算命令キューおよび複雑演算結果キューが設けられ、これにより、本実施形態に記載されたアプローチは、人工知能チップに適用される算出を実施する具体的なアプローチを提供することになる。
【００８２】
図４Ａをさらに参照すると、人工知能チップに適用される算出方法のもう一つの実施形態のフロー４００が示される。該人工知能チップに適用される算出方法のフロー４００は、次のステップを含む。
【００８３】
ステップ４０１では、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得る。
【００８４】
本実施形態において、人工知能チップに適用される算出方法の実行主体（例えば、図１に示されるＡＩチップ）は、少なくとも一つのプロセッサコアと、少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを含むことができる。演算アクセラレータは、独立した演算能力を有し、演算アクセラレータのほうがプロセッサコアよりも複雑な演算に適し、ここで、複雑演算は、簡単な演算に比べて計算量の大きい演算を意味し、簡単な演算は、計算量が小さい演算を意味することができる。
【００８５】
本実施形態において、ステップ４０１の具体的な操作は、図２に示す実施形態におけるステップ２０１の操作と実質的に同じであり、ここでその説明を省略する。
【００８６】
ステップ４０２では、ターゲットプロセッサコアは、デコードされた演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて、複雑演算命令を生成する。
【００８７】
本実施形態では、ターゲットプロセッサコアは、実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを取得した後、デコードされた演算識別子が予め設定された複雑演算識別子であるか否かを確定することができる。予め設定された複雑演算識別子であると確定された場合、ターゲットプロセッサコアは、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて複雑演算命令を生成することができる。
【００８８】
ステップ４０３では、ターゲットプロセッサコアは、生成された複雑演算命令を複雑演算命令キューに追加する。
【００８９】
ステップ４０４では、演算アクセラレータは、複雑演算命令キューから複雑演算命令を選択する。
【００９０】
ステップ４０５では、演算アクセラレータは、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得る。
【００９１】
本実施形態において、ステップ４０３、ステップ４０４およびステップ４０５の具体的な操作は、図２に示す実施形態におけるステップ２０３、ステップ２０４およびステップ２０５の操作と実質的に同じであり、ここでその説明を省略する。
【００９２】
ステップ４０６では、演算アクセラレータは、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として複雑演算結果キューに書き込む。
【００９３】
本実施形態では、演算アクセラレータが、ステップ４０５で複雑演算を実行して得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として複雑演算結果キューに書き込む。
【００９４】
ここで、複雑演算結果キューには、演算アクセラレータが複雑演算を実行して得られた複雑演算結果が格納される。
【００９５】
本実施形態のいくつかの好ましい実施形態では、前記人工知能チップに適用される算出方法は、以下のステップ４０７をさらに含むことができる。
【００９６】
ステップ４０７では、ターゲットプロセッサコアは、複雑演算結果キューから、プロセッサコア識別子がターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、ターゲットプロセッサコアの結果レジスタおよび／または人工知能チップのメモリに書き込む。
【００９７】
ここで、ターゲットプロセッサコアには、演算結果を格納するための結果レジスタを設けることができる。このように、ステップ４０６の後、ターゲットプロセッサコアが、複雑演算結果キューから、プロセッサコア識別子がターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、ターゲットプロセッサコアの結果レジスタおよび／または人工知能チップのメモリに書き込むことができる。
【００９８】
ここで、人工知能チップのメモリは、スタティックランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、およびＦｌａｓｈメモリのうち少なくとも１つを含んでもよい。
【００９９】
引き続き図４Ｂを参照すると、図４Ｂは、本実施形態による人工知能チップの算出方法に適用される人工知能チップの構造概略図である。図４Ｂに示すように、人工知能チップは、プロセッサコア４０１’、４０２’、４０３’、複雑演算命令キュー４０４’、演算アクセラレータ４０５’、複雑演算結果キュー４０６’、およびメモリ４０７’を含むことができる。ここで、プロセッサコア４０１’、４０２’、４０３’は、それぞれ複雑演算命令キュー４０４’に有線接続され、複雑演算命令キュー４０４’は、演算アクセラレータ４０５’に有線接続され、演算アクセラレータ４０５’は、複雑演算結果キュー４０６’に有線接続され、複雑演算結果キュー４０６’は、プロセッサコア４０１’、４０２’、４０３’に有線接続され、プロセッサコア４０１’、４０２’、４０３’は、それぞれメモリ４０７’に有線接続されている。プロセッサコア４０１’、４０２’、４０３’の内部には、それぞれ結果レジスタ（図４Ｂに図示せず）が設けられてもよい。
【０１００】
これにより、プロセッサコア４０１’がターゲットプロセッサコアであると仮定した場合、プロセッサコア４０１’は、実行対象命令が受信された場合、まず、実行対象命令をデコードして演算識別子および少なくとも一つのオペランドを取得し、次に、デコードされた演算識別子が三角関数演算識別子であり、かつ三角関数演算識別子が予め設定された複雑演算識別子であると確定すると、デコードされた演算識別子、すなわち、三角関数演算識別子、少なくとも一つのオペランド、およびプロセッサコア４０１’のプロセッサコア識別子を用いて複雑演算命令を生成することができる。図４Ｃに示すように、図４Ｃは、一つの複雑演算命令を示す図である。次に、プロセッサコア４０１’は、生成された複雑演算命令を、複雑演算命令キュー４０４’に追加する。それから、演算アクセラレータ４０５’は、複雑演算命令キュー４０４’から複雑演算命令を選択する。その後、演算アクセラレータ４０５’は、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得る。最後に、演算アクセラレータ４０５’が、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として複雑演算結果キューに４０６’書き込む。図４Ｄに示すように、図４Ｄは、一つの複雑演算結果を示す図である。好ましくは、プロセッサコア４０１’はさらに、複雑演算結果キューから、プロセッサコア識別子がプロセッサコア４０１’のプロセッサコア識別子である複雑演算結果の演算結果を選択して、プロセッサコア４０１’の結果レジスタおよび／又は人工知能チップのメモリ４０７’に書き込むことができる。
【０１０１】
図４Ａから分かるように、図３に対応する実施形態に比べて、本実施形態における人工知能チップに適用される算出方法のフロー４００は、少なくとも一つのプロセッサコアが一つの複雑演算命令キューおよび複雑演算結果キューを共有し、それにより、本実施形態に記載されたアプローチは、図３Ａの対応する実施形態に比べて、ＡＩチップの空間オーバーヘッドおよび消費電力オーバーヘッドをさらに低減することができる。
【０１０２】
次に、図５を参照すると、図５は、本願の実施形態の電子機器を実現するのに適したコンピュータシステム５００の構造概略図である。図５に示された電子機器は一つの例示に過ぎず、本願の実施形態の機能および使用範囲に対して制限するものではない。
【０１０３】
図５に示すように、コンピュータシステム５００は、少なくとも一つの中央処理ユニット（ＣＰＵ、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１を含み、これは、読み出し専用メモリ（ＲＯＭ、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２に記憶されたプログラム、又は記憶部５０８からランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３にロードされたプログラムに従って、様々な適切な動作および処理を実行することができる。ＲＡＭ５０３には、システム５００の操作に必要な様々なプログラムおよびデータがさらに記憶されている。ＣＰＵ５０１は、少なくとも一つの人工知能チップ５１２を介してデータの処理分析を行ってもよい。ＣＰＵ５０１、ＲＯＭ５０２およびＲＡＭ５０３および人工知能チップ５１２は、バス５０４を介して互いに接続されている。入力／出力（Ｉ／Ｏ）インターフェース５０５もバス５０４に接続されている。
【０１０４】
Ｉ／Ｏインターフェース５０５には、キーボード、マウスなどを含む入力部５０６、陰極線管（ＣＲＴ、Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、液晶ディスプレイ（ＬＣＤ，Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）など、およびスピーカなどを含む出力部５０７、ハードディスクなどを含む記憶部５０８、およびＬＡＮ（ローカルエリアネットワーク、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）カード、モデムなどを含むネットワークインターフェースカードの通信部５０９が接続されている。通信部５０９は、例えば、インターネットのようなネットワークを介して通信処理を実行する。ドライバ５１０は、必要に応じてＩ／Ｏインターフェース５０５に接続される。リムーバブルメディア５１１は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライバ５１０に取り付けられ、したがって、ドライバ７０９から読み出されたコンピュータプログラムが必要に応じて記憶部５０８にインストールされる。
【０１０５】
特に、本発明の実施形態によれば、上記のフローチャートに参照して説明された過程はコンピュータソフトウェアプログラムに実現されてもよい。
【０１０６】
例えば、本発明の実施形態は、コンピュータ読取可能な媒体にロードされるコンピュータプログラムを含むコンピュータプログラム製品を備え、該コンピュータプログラムは、フローチャートに示される方法を実行するためのプログラムコードを含む。このような実施形態において、該コンピュータプログラムは、通信部５０９を介してネットワークからダウンロードしてインストールされ、および／又はリムーバブルメディア５１１からインストールされてもよい。該コンピュータプログラムは、中央処理ユニット（ＣＰＵ）５０１により実行される場合に、本願の方法に限定される前記機能を実行する。説明すべきなのは、本願に記載のコンピュータ読取可能な媒体は、コンピュータ読取可能な信号媒体又はコンピュータ読取可能な記憶媒体又は前記両者の任意の組み合わせであってもよい。コンピュータ読取可能な記憶媒体は、例えば、電気、磁気、光、電磁気、赤外線、或いは半導体のシステム、装置又はデバイス、或いはこれらの任意の組み合わせであってもよいが、それらに限定されない。コンピュータ読取可能な記憶媒体についてのより具体的な例は、一つ又は複数の導線を含む電気的な接続、携帯可能なコンピュータ磁気ディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能なプログラミング読取専用メモリ（ＥＰＲＯＭ又はフラッシュ）、光ファイバ、携帯可能なコンパクト磁気ディスク読取専用メモリ（ＣＤ−ＲＯＭ）、光学記憶素子、磁気記憶素子、或いは前記任意の適当の組み合わせを含むが、それらに限定されない。本願において、コンピュータ読取可能な記憶媒体は、プログラムを含むか記憶する任意の有形の媒体であっても良く、該プログラムは、コマンドによりシステム、装置又はデバイスの使用を実行し、或いはそれらに組み合わせて使用されてもよい。本願において、コンピュータ読取可能な信号媒体は、ベースバンドに伝送され或いはキャリアの一部として伝送され、コンピュータ読取可能なプログラムコードがロードされるデータ信号を含んでもよい。このような伝送されるデータ信号は、各種類の形式を採用しても良く、電磁気信号、光信号又は前記任意の適当の組み合わせを含むが、それらに限定されない。コンピュータ読取可能な信号媒体は、コンピュータ読取可能な記憶媒体以外の任意のコンピュータ読取可能な媒体であっても良く、該コンピュータ読取可能な媒体は、コマンドによりシステム、装置又はデバイスの使用を実行し又はそれらと組み合わせて使用されるプログラムを送信し、伝播し又は伝送することができる。コンピュータ読取可能な媒体に含まれるプログラムコードは、任意の適当の媒体で伝送されても良く、無線、電線、光ケーブル、ＲＦなど、或いは前記任意の適当の組み合わせを含むが、それらに限定されない。
【０１０７】
一つ又は複数種類のプログラミング言語又はそれらの組み合わせで、本願の操作を実行するためのコンピュータプログラムコードを編集することができ、前記プログラミング言語には、オブジェクト向けのプログラミング言語、例えばＪａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋が含まれ、通常のプロシージャ向けプログラミング言語、例えば「Ｃ」言語又は類似しているプログラミング言語も含まれる。プログラムコードは、完全にユーザコンピュータにて実行されてもよく、部分的にユーザコンピュータにおいて実行されてもよく、一つの独立のソフトウェアパッケージとして実行されてもよく、部分的にユーザコンピュータにおいて実行され且つ部分的に遠隔コンピュータにおいて実行されてもよく、又は完全に遠隔コンピュータ又はサーバにおいて実行されてもよい。遠隔コンピュータに係る場合に、遠隔コンピュータは、ローカルエリアネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介して、ユーザコンピュータ、又は、外部コンピュータに接続できる（例えば、インターネットサービス事業者を利用してインターネットを介して接続できる）。
【０１０８】
添付図面におけるフローチャートおよびブロック図は、本願の各実施形態によるシステム、方法およびコンピュータプログラム製品により実現可能なシステム構造、機能および操作を示した。この点において、フローチャート又はブロック図における各ブロックは、一つのモジュール、プログラムセグメント、又はコードの一部を表すことができ、該モジュール、プログラムセグメント、又はコードの一部には、一つ又は複数の所定のロジック機能を実現するための実行可能なコマンドが含まれる。注意すべきなのは、幾つかの置換としての実現において、ブロックに示される機能は図面に示される順序と異なって発生されてもよい。例えば、二つの接続的に表示されるブロックは実際に基本的に併行に実行されてもよく、場合によっては逆な順序で実行されてもよく、関連の機能に従って決定される。注意すべきなのは、ブロック図および／又はフローチャートにおける各ブロック、およびブロック図および／又はフローチャートにおけるブロックの組み合わせは、所定の機能又は操作を実行する専用のハードウェアによるシステムで実現されてもよく、或いは専用のハードウェアとコンピュータコードの組み合わせで実現されてもよい。
【０１０９】
別の態様として、本願は更にコンピュータ読取可能な媒体を提供し、前記コンピュータ読取可能な媒体には一つ以上のプログラムが組み込まれており、前記一つ以上のプログラムが人工知能チップによって実行されるとき、該人工知能チップは、少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアが、実行対象命令をデコードして、演算識別子およびなくとも一つのオペランドを取得し、デコードされた演算識別子が予め設定された複雑演算識別子であることが確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて、複雑演算命令を生成し、生成された複雑演算命令を複雑演算命令キューに追加し、演算アクセラレータが、複雑演算命令キューから複雑演算命令を選択し、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を取得し、取得された演算結果を複雑演算結果として複雑演算結果キューに書き込むようにする。
【０１１０】
以上の記載は、ただ本願の好適な実施形態および運用される技術原理に対する説明である。当業者であればわかるように、本願にかかる発明範囲は、前記技術的特徴の特定の組み合わせからなる技術的手段に限定されず、前記発明構想から逸脱されない場合に前記技術特徴又は均等の特徴による任意の組み合わせで形成される他の技術的手段も同時に含まれるべきである。例えば、前記特徴と本願に開示された（それらに限定されない）類似の機能を具備する技術的特徴が互いに置換されて得られる技術的手段は該当する。
【図１】
2020042782.tif 000003
【図２】
2020042782.tif 000004
【図３Ａ】
2020042782.tif 000005
【図３Ｂ】
2020042782.tif 000006
【図３Ｃ】
2020042782.tif 000007
【図３Ｄ】
2020042782.tif 000008
【図４Ａ】
2020042782.tif 000009
【図４Ｂ】
2020042782.tif 000010
【図４Ｃ】
2020042782.tif 000011
【図４Ｄ】
2020042782.tif 000012
【図５】
2020042782.tif 000013
【手続補正書】
【提出日】令和1年12月3日(2019.12.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも一つのプロセッサコアと、前記少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータとを備える人工知能チップに適用される算出方法であって、
前記少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアにより実行対象命令をデコードし、演算識別子および少なくとも一つのオペランドを得るステップと、
前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードにより取得された演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップと、
前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップと、
前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップと、
前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行して、演算結果を得るステップと、
前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップと、
を含む、人工知能チップに適用される算出方法。
【請求項２】
前記少なくとも一つのプロセッサコアにおけるターゲットプロセッサコアが実行対象命令をデコードする前に、
実行対象命令の受信に応答して、前記少なくとも一つのプロセッサコアから、前記実行対象命令を実行するプロセッサコアを選択してターゲットプロセッサコアとするステップをさらに含む請求項１に記載の方法。
【請求項３】
前記複雑演算命令キューは、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューを含み、前記複雑演算結果キューは、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算結果キューを含み、
前記ターゲットプロセッサコアが、生成された複雑演算命令を複雑演算命令キューに追加するステップは、
前記ターゲットプロセッサコアが、生成された複雑演算命令を前記ターゲットプロセッサコアに対応する複雑演算命令キューに追加するステップを含み、
前記演算アクセラレータが、前記複雑演算命令キューから複雑演算命令を選択するステップは、
前記演算アクセラレータが、前記少なくとも一つのプロセッサコアの各々のプロセッサコアに対応する複雑演算命令キューから複雑演算命令を選択するステップを含み、
前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、
前記演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込むステップを含む、
請求項２に記載の方法。
【請求項４】
前記演算アクセラレータが、得られた演算結果を複雑演算結果として、選択された複雑演算命令の由来する複雑演算命令キューに対応するプロセッサコアに対応する複雑演算結果キューに書き込んだ後、
前記ターゲットプロセッサコアが、前記ターゲットプロセッサコアに対応する複合演算結果キューから複雑演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび／または前記人工知能チップのメモリに書き込むステップをさらに含む請求項３に記載の方法。
【請求項５】
前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子と少なくとも一つのオペランドとを用いて複雑演算命令を生成するステップは、
前記ターゲットプロセッサコアが、デコードにより取得された演算識別子が予め設定された複雑演算識別子であると確定されたことに応答して、デコードされた演算識別子、少なくとも一つのオペランドおよびターゲットプロセッサコア識別子を用いて、複雑演算命令を生成するステップを含み、
前記演算アクセラレータが、得られた演算結果を複雑演算結果として複雑演算結果キューに書き込むステップは、
前記演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込むステップを含む、
請求項２に記載の方法。
【請求項６】
前記演算アクセラレータが、得られた演算結果および選択された複雑演算命令におけるプロセッサコア識別子を複雑演算結果として前記複雑演算結果キューに書き込んだ後、
前記ターゲットプロセッサコアが、前記複雑演算結果キューから、プロセッサコア識別子が前記ターゲットプロセッサコア識別子である複雑演算結果の演算結果を選択して、前記ターゲットプロセッサコアの結果レジスタおよび／または前記人工知能チップのメモリに書き込むステップをさらに含む請求項５に記載の方法。
【請求項７】
前記演算アクセラレータは、特定用途向け集積回路チップおよびフィールドプログラマブルゲートアレイのうちの少なくとも１つを含む、
請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記複雑演算命令キューおよび前記複雑演算結果キューは先入れ先出しキューである、
請求項１〜６のいずれか１項に記載の方法。
【請求項９】
前記複雑演算命令キューおよび前記複雑演算結果キューはキャッシュに格納される、
請求項１〜６のいずれか１項に記載の方法。
【請求項１０】
前記演算アクセラレータは少なくとも一つの演算ユニットを含み、
前記演算アクセラレータが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップは、
前記演算アクセラレータにおける、選択された複雑演算命令中の複雑演算識別子に対応する演算ユニットが、選択された複雑演算命令中の少なくとも一つのオペランドを入力パラメータとして、選択された複雑演算命令中の複雑演算識別子の表示する複雑演算を実行するステップを含む、
請求項１〜６のいずれか１項に記載の方法。
【請求項１１】
前記予め設定された複雑演算識別子は、べき演算識別子、開平演算識別子、三角関数演算識別子のうちの少なくとも１つを含む、
請求項１〜６のいずれか１項に記載の方法。
【請求項１２】
少なくとも一つのプロセッサコアと、
前記少なくとも一つのプロセッサコアの各プロセッサコアに接続された演算アクセラレータと、
少なくとも一つのプログラムが記憶された記憶装置であって、前記少なくとも一つのプログラムが前記人工知能チップによって実行されると、前記人工知能チップに請求項１〜１１のいずれか１項に記載の方法を実現させる、記憶装置と
を有する人工知能チップ。
【請求項１３】
コンピュータプログラムが記憶されたコンピュータ可読媒体であって、
前記コンピュータプログラムが人工知能チップにより実行されると、請求項１〜１１のいずれか１項に記載の方法を実現させるコンピュータ可読媒体。
【請求項１４】
プロセッサ、記憶装置および少なくとも一つの請求項１２に記載の人工知能チップを備える電子機器。
【請求項１５】
プロセッサにより実行されると、請求項１〜１１のいずれか１項に記載の方法を実現させるコンピュータプログラム。
【外国語明細書】
2020042782000001.pdf