(57)【要約】  ニューラルネットワークモデルを処理するための装置および方法が提供される。装置は、 複数の同一の人工知能処理ダイを備え得る。複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも１つのダイ間入力ブロックと少なくとも１つのダイ間出力ブロックとを含み得る。複数の同一の人工知能処理ダイの各人工知能処理ダイは、人工知能処理ダイの少なくとも１つのダイ間出力ブロックから人工知能処理ダイの少なくとも１つのダイ間入力ブロックまでの１つまたは複数の通信路を介して、複数の同一の人工知能処理ダイの他の人工知能処理ダイに通信可能に連結されている。複数の同一の人工知能処理ダイの各人工知能処理ダイは、ニューラルネットワークの少なくとも１つの層に対応する。
2021504770.tif 000002
【特許請求の範囲】
【請求項１】
人工知能処理ユニットであって、複数の同一の人工知能処理ダイを備え、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも１つのダイ間入力ブロックと少なくとも１つのダイ間出力ブロックとを含み、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記人工知能処理ダイの前記少なくとも１つのダイ間出力ブロックから前記人工知能処理ダイの前記少なくとも１つのダイ間入力ブロックへの１つまたは複数の通信路を介して、前記複数の同一の人工知能処理ダイのうちの他の人工知能処理ダイに通信可能に連結され、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、ニューラルネットワークの少なくとも１つの層に対応する、人工知能処理ユニット。
【請求項２】
前記１つまたは複数の通信路は等しい長さである、請求項１に記載の人工知能処理ユニット。
【請求項３】
前記複数の同一の人工知能処理ダイのうち第１の人工知能処理ダイは、前記複数の同一の人工知能処理ダイのうち第２の人工知能処理ダイに隣接して位置しており、前記第２の人工知能処理ダイの向きは前記第１の人工知能処理ダイの向きから１８０度ずれている、請求項１に記載の人工知能処理ユニット。
【請求項４】
前記複数の同一の人工知能処理ダイのうち第１の人工知能処理ダイは、前記複数の同一の人工知能処理ダイのうち第２の人工知能処理ダイに隣接して位置しており、前記第２の人工知能処理ダイの向きは前記第１の人工知能処理ダイの向きと同じである、請求項１に記載の人工知能処理ユニット。
【請求項５】
前記複数の人工知能処理ダイは順番に配列され、少なくとも１つの人工知能処理ダイは、前記順番において記少なくとも１つの人工知能処理ダイよりも前の位置に配列された他の人工知能処理ダイに、データを入力として送信するように構成されている、請求項１に記載の人工知能処理ユニット。
【請求項６】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、データを受信し、受信された前記データを用いてＡＩ計算を行うように構成されている、請求項１に記載の人工知能処理ユニット。
【請求項７】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、シストリックアレイで構成され、前記シストリックアレイを用いて前記ＡＩ計算を行う、請求項６に記載の人工知能処理ユニット。
【請求項８】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記ダイ間入力ブロックと異なる少なくとも１つのホストインターフェース入力ブロックと、前記ダイ間出力ブロックと異なる少なくとも１つのホストンターフェース出力ブロックとを含む、請求項１に記載の人工知能処理ユニット。
【請求項９】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記ホストインターフェース入力ブロックを介してコプロセシングユニットからデータを受信し、前記ホストインターフェース出力ブロックを介してデータをコプロセシングユニットに送信するように構成されている、請求項８に記載の人工知能処理ユニット。
【請求項１０】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも１つの乗算累算ユニット（ＭＡＣユニット）を含む、請求項１に記載の人工知能処理ユニット。
【請求項１１】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくともメモリを含む、請求項１に記載の人工知能処理ユニット。
【請求項１２】
方法であって、
人工知能処理ユニットの第１の人工知能処理ダイにおいて、ニューラルネットワークに関連する第１の集合のデータを受信することを備え、前記第１の人工知能処理ダイは、前記ニューラルネットワークの層に関連付けられており、前記方法はさらに、
前記第１の人工知能処理ダイにおいて、前記ニューラルネットワークに関連する前記第１の集合のデータを用いて、前記第１の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連する第１の集合のＡＩ計算を行うことと、
前記人工知能処理ユニットの第２の人工知能処理ダイに、前記第１の人工知能処理ダイにおいて行われた前記第１の集合のＡＩ計算の結果データを送信することとを備え、前記第２の人工知能処理ダイは、前記第１の人工知能処理ダイからの前記ニューラルネットワークの異なる層と関連付けられている、方法。
【請求項１３】
前記第１の人工知能処理ダイは、前記ニューラルネットワークの前記入力層と関連付けられている、請求項１２に記載の方法。
【請求項１４】
前記第２の人工知能処理ダイにおいて、前記第１の人工知能処理ダイにおいて行われた計算の前記結果データを用いて、前記第２の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連するＡＩ計算を行うことと、
前記第２の人工知能処理ダイにおいて行われた前記ＡＩ計算の結果データを、フィードバックとして前記第１の人工知能処理ダイに送信することとをさらに備える、請求項１２に記載の方法。
【請求項１５】
前記第１の人工知能処理ダイと前記第２の人工知能処理ダイとは順番に配列されており、前記第１の人工知能処理ダイは、前記順番において前記第２の人工知能処理ダイよりも前の位置に配列されている、請求項１４に記載の方法。
【請求項１６】
前記第１の人工知能処理ダイにおいて、前記第２の人工知能処理ダイからフィードバックとして受信された結果データと前記ニューラルネットワークに関連する前記第１の集合のデータとを用いて、前記第１の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連する第２の集合のＡＩ計算を行うことと、
前記第２の集合のＡＩ計算の結果データを前記第２の人工知能処理ダイに送信することとをさらに備える、請求項１４に記載の方法。
【請求項１７】
前記第２の人工知能処理ダイは、前記ニューラルネットワークの前記出力層と関連付けられている、請求項１２に記載の方法。
【請求項１８】
前記第２の人工知能処理ダイにおいて、前記第１の人工知能処理ダイにおいて行われた前記計算の前記結果データを用いて、前記ニューラルネットワークの前記出力層に関連するＡＩ計算を行うことと、
前記第２の人工知能処理ダイにおいて行われた前記ＡＩ計算の結果データを、前記人工知能処理ユニットに通信可能に連結されたコプロセシングユニットに送信することとをさらに備える、請求項１６に記載の方法。
【請求項１９】
前記第１の人工知能処理ダイと前記第２の人工知能処理ダイとは、少なくとも１つの乗算累算ユニット（ＭＡＣユニット）を含む、請求項１２に記載の方法。
【請求項２０】
前記第１の人工知能処理ダイおよび前記第２の人工知能処理ダイは、メモリを含む、請求項１２に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
関連出願
本願は、２０１７年１１月２１に出願され、「APPARATUS AND MECHANISM FOR PROCESSING NEURAL NETWORK TASKS USING A SINGLE CHIP PACKAGE WITH MULTIPLE IDENTICAL DIES（複数の同一のダイを有する単一のチップパッケージを用いてニューラルネットワークタスクを処理するための装置および機構）」と題された米国特許出願第１５／８１９，７５３号に基づく優先権および利益を主張するものであり、すべての目的のためにその内容全体が明細書に引用により援用される。
【０００２】
背景
人工知能コンピューティングの分野におけるニューラルネットワークの使用は、過去数年にわたって急速に成長を遂げている。より最近では、特定用途向け集積回路（ＡＳＩＣ）などの特殊目的コンピュータの使用が、ニューラルネットワークを処理するために用いられている。しかしながら、ＡＳＩＣの使用は、複数の難題を提起している。これらの難題の一部は、（１）長い設計時間、（２）無視できない経常外エンジニアリング費用である。ニューラルネットワークの人気が高まり、どのニューラルネットワークが使用されるかに関するタスクの範囲が広がるにつれて、長い設計時間と無視できない経常外エンジニアリング費用は悪化する。
【発明の概要】
【０００３】
概要
少なくとも１つの態様は、人工知能プロセシングユニットに向けられている。人工知能処理ユニットは、複数の同一の人工知能処理ダイを備える。複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも１つのダイ間入力ブロックと少なくとも１つのダイ間出力ブロックとを含む。複数の同一の人工知能処理ダイの各人工知能処理ダイは、人工知能処理ダイの少なくとも１つのダイ間出力ブロックから人工知能処理ダイの少なくとも１つのダイ間入力ブロックへの１つまたは複数の通信路を介して、複数の同一の人工知能処理ダイのうちの他の人工知能処理ダイに通信可能に連結されている。複数の同一の人工知能処理ダイの各人工知能処理ダイは、ニューラルネットワークの少なくとも１つの層に対応する。
【０００４】
いくつかの実現例では、１つまたは複数の通信路は、等しい長さである。
いくつかの実現例では、複数の同一の人工知能処理ダイのうち第１の人工知能処理ダイは、複数の同一の人工知能処理ダイのうち第２の人工知能処理ダイに隣接して位置しており、第２の人工知能処理ダイの向きは、第１の人工知能処理ダイの向きから１８０度ずれている。
【０００５】
いくつかの実現例では、複数の同一の人工知能処理ダイのうち第１の人工知能処理ダイは、複数の同一の人工知能処理ダイのうち第２の人工知能処理ダイに隣接して位置しており、第２の人工知能処理ダイの向きは、第１の人工知能処理ダイの向きと同じである。
【０００６】
いくつかの実現例では、複数の人工知能処理ダイは順番に配列され、少なくとも１つの人工知能処理ダイは、順番において少なくとも１つの人工知能処理ダイよりも前の位置に配列された他の人工知能処理ダイに、データを入力として送信するように構成されている。
【０００７】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、データを受信し、受信されたデータを用いてＡＩ計算を行うように構成されている。
【０００８】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、シストリックアレイで構成され、シストリックアレイを用いてＡＩ計算を行う。
【０００９】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、ダイ間入力ブロックと異なる少なくとも１つのホストインターフェース入力ブロックと、ダイ間出力ブロックと異なる少なくとも１つのホストンターフェース出力ブロックとを含む。
【００１０】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも１つの乗算累算ユニット（ＭＡＣユニット）を含む。
【００１１】
いくつかの実現例では、複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも１つのメモリを含む。
【００１２】
少なくとも１つの態様は、ニューラルネットワークモデルの処理方法に向けられている。方法は、人工処理ユニットの第１の人工知能処理ダイにおいて、ネットワークに関連する第１の集合のデータを受信することを備える。第１の人工知能処理ダイは、ニューラルネットワークの層に関連付けられている。方法は、第１の人工知能処理ダイにおいて、ニューラルネットワークに関連する第１の集合のデータを用いて、第１の人工知能処理ダイと関連付けられたニューラルネットワークの層に関連する第１の集合のＡＩ計算を行うことを備える。方法は、人工知能処理ユニットの第２の人工知能処理ダイに、第１の人工知能処理ダイにおいて行われた第１の集合のＡＩ計算の結果データを送信することを備える。第２の人工知能処理ダイは、第１の人工知能処理ダイからのニューラルネットワークの異なる層と関連付けられている。
【００１３】
いくつかの実現例では、第１の人工知能処理ダイは、ニューラルネットワークの入力層と関連付けられている。
【００１４】
いくつかの実現例では、方法は、第２の人工知能処理ダイにおいて、第１の人工知能処理ダイにおいて行われた計算の結果データを用いて、第２の人工知能処理ダイと関連付けられたニューラルネットワークの層に関連するＡＩ計算を行うことを備える。方法は、第２の人工知能処理ダイにおいて行われたＡＩ計算の結果データを、フィードバックとして第１の人工知能処理ダイに送信することを備える。
【００１５】
いくつかの実現例では、第１の人工知能処理ダイと第２の人工知能処理ダイとは順番に配列されており、第１の人工知能処理ダイは、順番において第２の人工知能処理ダイよりも前の位置に配列されている。
【００１６】
いくつかの実現例では、方法は、第１の人工知能処理ダイにおいて、第２の人工知能処理ダイからフィードバックとして受信された結果データとニューラルネットワークに関連する第１の集合のデータとを用いて、第１の人工知能処理ダイと関連付けられたニューラルネットワークの層に関連する第２の集合のＡＩ計算を行うことを備える。方法は、第２の集合のＡＩ計算の結果データを第２の人工知能処理ダイに送信することを備える。
【００１７】
いくつかの実現例では、第２の人工知能処理ダイは、ニューラルネットワークの出力層と関連付けられている。
【００１８】
いくつかの実現例では、方法は、第２の人工知能処理ダイにおいて、第１の人工知能処理ダイにおいて行われた計算の結果データを用いて、ニューラルネットワークの出力層に関連するＡＩ計算を行うことを備える。方法は、第２の人工知能処理ダイにおいて行われたＡＩ計算の結果データを、人工知能処理ユニットに通信可能に連結されたコプロセシングユニットに送信することを備える。
【００１９】
いくつかの実現例では、第１の人工知能処理ダイと第２の人工知能処理ダイとは、少なくとも１つの乗算累算ユニット（ＭＡＣユニット）を含む。
【００２０】
いくつかの実現例では、第１の人工知能処理ダイおよび第２の人工知能処理ダイは、メモリを含む。
【００２１】
これらのおよび他の態様ならびに実現例について、以下で詳細に説明する。前述の情報および以下の詳細な説明は、さまざまな態様および実現例の例示的な例を含んでおり、請求される態様ならびに実現例の性質および特徴を理解するための概要または枠組を提供する。図面は、さまざまな態様ならびに実現例の例示およびさらなる理解を提供し、本明細書に援用されて本明細書の一部を構成する。
【００２２】
添付の図面は、一定の比率の縮尺で描かれるよう意図されてはいない。さまざまな図面における同様の参照番号および符号は、同様の要素を示す。理解しやすいように、全ての図面に全ての構成要素を記載しているとは限らない。
【図面の簡単な説明】
【００２３】
【図１Ａ】例示的な実現例に係る、ニューラルネットワーク関連タスクを処理するためのシステムを示す図である。
【図１Ｂ】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの関数論理を示す図である。
【図１Ｃ】例示的な実現例に係る、人工知能処理ダイのシストリックアレイの配置例を示す図である。
【図２Ａ】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの配置例を示す図である。
【図２Ｂ】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの配置例を示す図である。
【図２Ｃ】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの配置例を示す図である。
【図２Ｄ】例示的な実現例に係る、人工知能処理ユニットの人工知能処理ダイの配置例を示す図である。
【図３】例示的な実現例に係る、人工知能処理ダイを構成する方法の例を示すフローチャートである。
【図４】例示的な実現例に係る、ニューラルネットワークモデルに基づくニューラルネットワークタスクの処理方法の例を示すフローチャートである。
【図５】例示的な実現例に係る、本明細書で説明および例示されるシステムの構成要素および方法を実現するために用いることが可能なコンピュータシステムのための一般的なアーキテクチャを示すブロック図である。
【発明を実施するための形態】
【００２４】
詳細な説明
本開示は、一般に、ニューラルネットワークの作業負荷を処理するための装置、システム、および機構に関する。ニューラルネットワークの効率的な処理は、特注の特定用途向け集積回路（ＡＳＩＣ）を利用する。しかしながら、特注のＡＳＩＣの設計には、長い設計時間、高い経常外エンジニアリング費用などのいくつかの難題があり、難題はこれらに限定されるわけではないが、ＡＳＩＣが少量で生産されると、これらの難題は悪化する。
【００２５】
特注のＡＳＩＣを用いる難題は、ニューラルネットワークタスクを処理するように構成された標準ダイを設計し、複数のそのような同一のダイを単一のＡＳＩＣチップパッケージにおいて相互接続することによって、克服可能である。単一のチップパッケージで相互接続されるダイの数は、ホストコンピューティングデバイスによって処理されているニューラルネットワークの複雑さまたは層の数によって異なる。複数の同一のダイを有するパッケージでは、異なるダイはニューラルネットワークの異なる層と関連付けられているため、ニューラルネットワーク関連タスクの処理効率が増大する。ニューラルネットワークタスクを行う予想頻度に基づいて単一のパッケージにおけるダイの数を増減することによって、複数の製品にわたって標準ダイを用いることが可能になって、長い設計時間の費用と、無視できない経常外エンジニアリング費用とを、さらに効率的に償却できる。
【００２６】
図１Ａは、例示的な実現例に係る、ニューラルネットワークの計算タスクを行うためのシステム１００を示す図である。システム１００は、メインプロセシングユニット１０１と人工知能処理ユニット（ＡＩＰＵ）１０２とを備える。システム１００は、ホストコンピューティングデバイス（図示せず）内に収容されている。ホストコンピューティングデバイスの例としては、サーバおよびモノのインターネット（ＩｏＴ）デバイスが挙げられるが、これらに限定されるわけではない。ＡＩＰＵ１０２は、メインプロセシングユニット１０１のコプロセシングユニットである。メインプロセシングユニット１０１は、バスなどの通信システムの一部である通信路１０４ａ、１０４ｂなどの１つまたは複数の通信路を介して、ＡＩＰＵ１０２に通信可能に連結されている。メインプロセシングユニット１０１は、コントローラ１０５とメモリ１０７とを含む。メモリ１０７は、メインプロセシングユニット１０１のサブプロセシングユニットおよびメインプロセシングユニット１０１に連結されたコプロセシングユニットに関連するコンフィギュレーションデータを記憶する。たとえば、メモリ１０７は、ＡＩＰＵ１０２に関連するコンフィギュレーションデータを記憶してもよい。メインプロセシングユニットコントローラ１０５は、メモリ１０７に通信可能に連結されており、メモリ１０７からコンフィギュレーションデータを選択し、メインプロセシングユニット１０１に連結されたコプロセシングユニットまたはメインプロセシングユニット１０１のサブプロセシングユニットにコンフィギュレーションデータを送信するように構成されている。メインプロセシングユニットコントローラ１０５によるコンフィギュレーションデータの選択および送信について、図３を参照して以下でさらに詳細に説明する。
【００２７】
ＡＩＰＵ１０２は、ニューラルネットワークの計算タスクを処理するように構成されている。ＡＩＰＵ１０２は、本明細書ではＡＩＰＤ１０３と総称される複数の人工知能処理ダイ（ＡＩＰＤ）１０３ａ、１０３ｂ、１０３ｃ、１０３ｄ、１０３ｅ、１０３ｆを含む。ＡＩＰＤ１０３は、互いに同一である。本明細書で説明するように、各ＡＩＰＤ１０３が同じダイ設計を用いて製造され各ＡＩＰＤ１０３上のハードウェアユニットの実装が他のＡＩＰＤ１０３と同一である場合、ＡＩＰＤ１０３は他のＡＩＰＤ１０３と「同一」である。そのため、本開示では、２つのＡＩＰＤ１０３のダイの設計およびハードウェアユニットの実現が同一である場合、２つのＡＩＰＤ１０３は、依然として同一とみなされるニューラルネットワークの異なる層を処理するように構成可能である。ＡＩＰＵ１０２に含まれるＡＩＰＤ１０３の数は、ホストコンピューティングデバイスによって処理されるニューラルネットワークモデルの層の数に基づいて異なってもよい。たとえば、ホストコンピューティングデバイスがスマートサーモスタットなどのモノのインターネット（ＩｏＴ）デバイスである場合、スマートサーモスタットのＡＩＰＵ１０２によって処理されているニューラルネットワークモデルの層の数は、データセンターのサーバなどのデータセンターのホストコンピューティングデバイスのＡＩＰＵ１０２によって処理されるニューラルネットワークモデルの層の数よりも少なくなると思われる。
【００２８】
シンプルなニューラルネットワークモデルを処理するホストコンピューティングデバイスにおいて、単一のＡＩＰＤ１０３は、ホストコンピューティングデバイスのニューラルネットワーク関連タスクを効率的に処理可能である。より複雑なニューラルネットワークモデルまたは複数の層を有するニューラルネットワークモデルを処理するホストコンピューティングデバイスでは、複数の同一のＡＩＰＤ１０３は、ニューラルネットワーク関連タスクを効率的に処理するために便利な場合がある。したがって、いくつかの実現例では、ＡＩＰＵ１０２は単一のＡＩＰＤ１０３を含む一方で、他の実現例では、ＡＩＰＵ１０２は複数の同一のＡＩＰＤ１０３を含む。
【００２９】
図１Ａに示すもののように、ＡＩＰＵ１０２が複数の同一のＡＩＰＤ１０３を含む実現例では、各々の同一のＡＩＰＤ１０３は、他の同一のＡＩＰＤ１０３に連結されている。さらに、各ＡＩＰＤ１０３は、ＡＩＰＵ１０２によって処理されているニューラルネットワークの少なくとも１つの層と関連付けられている。ＡＩＰＤ１０３およびＡＩＰＵ１０２内の複数の同一のＡＩＰＤ１０３の配置について、図１Ｂ、図２Ａ、図２Ｂを参照して以下でさらに詳細に説明する。
【００３０】
次に図１Ｂを参照すると、ＡＩＰＤ１０３の実現例の関数論理が示されている。より分かりやすい例を提供する目的で、ＡＩＰＤ１０３ａの関数論理のみが図１Ｂに示されているが、ＡＩＰＤ１０３の各々は互いに同一であるため、当業者であれば、ＡＩＰＤ１０３ｂ、１０３ｃ、１０３ｄ、１０３ｅ、１０３ｆの関数論理はＡＩＰＤ１０３ａの関数論理と同一であると理解するであろう。ＡＩＰＤ１０３ａは、ホストインターフェースユニット１１３、バッファ１１５、コントローラ１１７、バッファ１１９、計算ユニット１２１、ダイ間入力ブロック１０９ａ、１０９ｂ、およびダイ間出力ブロック１１１ａ、１１１ｂを含む。
【００３１】
ホストインターフェースユニット１１３は、少なくとも１つの入出力（Ｉ／Ｏ）ブロック（図示せず）を含む。Ｉ／Ｏブロックは、複数のＩ／Ｏピン（図示せず）を含む。ホストインターフェースユニット１１３のＩ／ＯブロックのＩ／Ｏピンは、Ｉ／Ｏブロックが送信側ユニットからデータを受信し、送信先ユニットにデータを送信できるように、双方向に構成されている。送信側ユニットおよび送信先ユニットの例としては、メモリユニット、メインプロセシングユニット１０１のコプロセッサ、またはデータを送受信するように構成された他の集積回路構成要素が挙げられるが、これらに限定されるわけではない。ホストインターフェースユニット１１３は、ホストインターフェースユニット１１３のＩ／Ｏピンを介してメインプロセシングユニットコントローラ１０５からデータを受信し、データを、メインプロセシングユニットコントローラ１０５に、メインプロセシングユニット１０１に、それ自身に、またはホストインターフェースユニット１１３のＩ／Ｏピンを介して直接メモリ１０３に、送信するように構成されている。ホストインターフェースユニット１１３は、メインプロセシングユニットコントローラ１０５から受信されたデータをバッファ１１５に格納する。
【００３２】
バッファ１１５は、データを記憶するために、レジスタ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、または他の種類の集積回路メモリなどのメモリを含む。ＡＩＰＤコントローラ１１７は、データをバッファ１１５から取出し、データをバッファ１１５に格納するように構成されている。ＡＩＰＤコントローラ１１７は、メインプロセシングユニットコントローラ１０５から送信されたデータに部分的に基づいて動作するように構成されている。メインプロセシングユニットコントローラ１０５から送信されたデータがコンフィギュレーションデータである場合、コンフィギュレーションデータに基づいて、ＡＩＰＤコントローラ１１７は、ＡＩＰＤ１０３ａと他のＡＩＰＤ１０３との間の通信のために使用されるダイ間入力ブロックおよびダイ間出力ブロックを選択するように構成されている。ＡＩＰＤ１０３間の通信について、図２Ａ、図２Ｂ、および図２Ｃを参照して以下でさらに詳細に説明される。メインプロセシングユニットコントローラ１０５から送信されたデータがニューラルネットワークタスクを行う命令である場合、ＡＩＰＤコントローラ１１７は、ニューラルネットワークに関連するデータをバッファ１１９に記憶し、バッファユニット１１９に記憶された入力データおよび計算ユニット１２１を用いてニューラルネットワークタスクを行うように構成されている。バッファ１１９は、データの記憶のために、レジスタ、ＤＲＡＭ、ＳＲＡＭ、または他の種類の集積回路メモリなどのメモリを含む。計算ユニット１２１は、複数の乗算累算ユニット（ＭＡＣ、図示せず）、複数の算術論理演算ユニット（ＡＬＵ）（図示せず）、および複数のシフトレジスタ（図示せず）などを含む。バッファ１１９のレジスタの一部は、シストリックアレイを確立するように計算ユニット１２１の複数のＡＬＵに連結されている。シストリックアレイによって、入力値は一度読出され、かつ、後の動作において入力として使用される前に結果を記憶することなく、複数の異なる動作のために使用される。そのようなシストリックアレイの配置例を、図１Ｃに示す。
【００３３】
図１Ｃでは、レジスタ１３０はバッファ１１９に含まれており、レジスタ１３０からのデータは、ＡＬＵ１３２ａでの第１の動作のための入力である。ＡＬＵ１３２ａからの結果はＡＬＵ１３２ｂへの入力であり、ＡＬＵ１３２ｂからの結果は、ＡＬＵ１３２ｃへの入力であり、ＡＬＵ１３２ｃからの結果は、ＡＬＵ１３２ｄへの入力である、などである。そのような配置および構成は、ＡＩＰＤ１０３を、通常１つのＡＬＵからの結果データを、当該結果データを再び用いる前に記憶ユニットに記憶する汎用コンピュータと区別する。また、図１Ｃに示す配置は、畳み込み、行列の乗算、プーリング、要素ごとのベクトル演算などの人工知能タスク（本明細書では、「ＡＩ計算」と呼ぶ）の実行に関連する計算について、ＡＩＰＤ１０３を最適化する。さらに、図１Ｃに示す配置を実現することによって、ＡＩＰＤ１０３は、ＡＩ計算の実行において電力消費およびサイズをより最適化し、これによって、ＡＩＰＵ１０２のコストが減少する。
【００３４】
図１Ｂを再び参照すると、計算ユニット１２１は、入力されたデータと、ニューラルネットワークについて選択され重みメモリユニット（図示せず）から送信された重みとを用いて、ＡＩ計算を行う。いくつかの実現例では、計算ユニット１２１は、アクティベーションユニット１２３を含む。アクティベーションユニット１２３は、複数のＡＬＵおよび複数のシフトレジスタを含んでもよく、アクティベーション関数および非線形関数をＡＩ計算の結果に適用するように構成され得る。アクティベーションユニット１２３によって適用されるアクティベーション関数および非線形関数は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せにおいて実現可能である。計算ユニット１２１は、アクティベーション関数および／または非線形関数をバッファ１１９に適用した後で生じるデータを、データを記憶するバッファ１１９に送信する。ＡＩＰＤコントローラ１１７は、ダイ間通信のために構成されたダイ間出力ブロックを用いて、バッファ１１９に記憶された計算ユニット１２１からの出力データを、ＡＩＰＤ１０３ａに通信可能に連結されたＡＩＰＤ１０３に送信する。メインプロセシングユニットコントローラ１０５から受信されたコンフィギュレーションデータによって、２つのＡＩＰＤ１０３間のダイ間通信路が決定される。たとえば、ＡＩＰＤ１０３ａで受信されたコンフィギュレーションデータが、（図１Ｂに示すような）ダイ間出力ブロック１１１ａがダイ間通信のために使用されるべきであると示す場合、ＡＩＰＤコントローラ１１７は、ダイ間出力ブロック１１１ａを用いて他のＡＩＰＤ１０３にデータを送信する。同様に、コンフィギュレーションデータが、（図１Ｂに示すような）入力ブロック１０９ｂがダイ間通信のために使用されるべきであると示す場合、ＡＩＰＤコントローラ１１７は、他のＡＩＰＤ１０３からデータを受信するためのダイ間入力ブロックとして入力ブロック１０９ｂを選択し、入力ブロック１０９ｂで受信されたデータの読出しおよび処理を行う。
【００３５】
ＡＩＰＤ１０３の各ダイ間入力ブロックおよびダイ間出力ブロックは、複数のピンを含む。ＡＩＰＤ１０３のダイ間出力ブロックのピンは、他のＡＩＰＤ１０３のダイ間入力ブロックの対応するピンに対する電気的な相互接続によって接続可能である。たとえば、図２Ａに示すように、ＡＩＰＤ１０３ａの出力ブロック１１１ａのピンは、ＡＩＰＤ１０３ｂの入力ブロックに対する電気的な相互接続によって接続されている。異なるＡＩＰＤ１０３のダイ間出力ブロックおよびダイ間入力ブロックのピン間の電気的な相互接続は、等しい長さである。
【００３６】
１つのＡＩＰＤ１０３のダイ間出力ブロックと他のＡＩＰＤ１０３のダイ間入力ブロックとの間の接続は、電気的な相互接続によって接続されている一方で、ＡＩＰＤ１０３の特定のダイ間出力ブロックの選択およびダイ間出力ブロックの特定のピンに対する特定の信号またはデータの送信は、メインプロセシングコントローラ１０５からＡＩＰＤ１０３によって受信されるコンフィギュレーションデータに基づいてプログラムまたは変更可能である。ＡＩＰＤ１０３の異なる出力ブロックの選択によって、ＡＩＰＵ１０２は、ニューラルネットワークの異なる層間のフィードバックループを含む異なるニューラルネットワークの異なる必要条件を実現するように構成可能であるが、異なる必要条件は、これらに限定されるわけではない。そのため、同じＡＩＰＵ１０２を用いてニューラルネットワークの種々の集合を実行可能であり、その結果、設計時間費用が減少し、経常外エンジニアリング費用が効率的に償却される。ＡＩＰＤ１０３およびＡＩＰＵ１０２の構成について、図２Ａ、図２Ｂ、および図３を参照して以下でさらに詳細に説明する。
【００３７】
上述したように、複数のＡＩＰＤ１０３の各ＡＩＰＤ１０３が、ＡＩＰＵ１０２が処理するように構成されているニューラルネットワークの少なくとも１つの層と関連付けられている。メインプロセシングユニット１０１は、ＡＩＰＤ１０３とＡＩＰＵ１０２などのＡＩＰＵとを構成するコンフィギュレーションデータを含む。コンフィギュレーションデータは、ＡＩＰＵによって処理されるように選択されるニューラルネットワークモデルと関連付けられている。コンフィギュレーションデータは、ＡＩＰＤ１０３と、ＡＩＰＵによって処理されているニューラルネットワークの層との関連を特定する。ＡＩＰＵによって処理されているニューラルネットワークと関連付けられたコンフィギュレーションデータに基づいて、メインプロセシングユニットコントローラ１０５は、ＡＩＰＤ１０３をニューラルネットワークの層と関連付ける。いくつかの実現例では、メインプロセシングユニットコントローラ１０５は、ＡＩＰＤ１０３とニューラルネットワークの層との関連を、（図１Ａに示す）メモリ１０７などの記憶デバイスに記憶する。メインプロセシングユニットコントローラ１０５は、ＡＩＰＤ１０３と関連付けられたコンフィギュレーションデータを、対応するＡＩＰＤ１０３に送信する。ＡＩＰＤ１０３のニューラルネットワークの層との関連は、ＡＩＰＵ１０２によって処理されているニューラルネットワークモデルの必要条件に部分的に基づく。たとえば、ニューラルネットワークがニューラルネットワークの２つの層間のフィードバックループを含む場合、これら２つの層と関連付けられたＡＩＰＤ１０３は、部分的に、第１のＡＩＰＤ１０３のダイ間出力ブロックと第２のＡＩＰＤ１０３のダイ間入力ブロックとが電気的に相互接続されているかどうかに基づいて選択可能である。複数のＡＩＰＤ１０３のそのような配置の例について、図２Ａを参照して説明される。
【００３８】
図２Ａは、ＡＩＰＵ１０２などのＡＩＰＵ内の複数のＡＩＰＤ１０３の配置例を示す図である。図２Ａでは、ＡＩＰＵ１０２は、６個のＡＩＰＤ１０３（ＡＩＰＤ１０３ａ、１０３ｂ、１０３ｃ、１０３ｄ、１０３ｅ、１０３ｆ）を含み、ニューラルネットワークの最後の層と第１の層との間のフィードバックループを含む６つの層を有するニューラルネットワークを処理している。ＡＩＰＤ１０３ａは、ダイ間入力ブロック１０９ａ、１０９ｂ、ダイ間出力ブロック１１１ａ、１１１ｂ、およびホストインターフェースユニット１１３を含む。ＡＩＰＤ１０３ｂは、ダイ間入力ブロック２２１ａ、２２１ｂ、ダイ間出力ブロック２２３ａ、２２３ｂ、およびホストインターフェースユニット２１４を含む。ＡＩＰＤ１０３ｃは、ダイ間入力ブロック２２５ａ、２２５ｂ、ダイ間出力ブロック２２７ａ、２２７ｂ、およびホストインターフェースユニット２１５を含む。ＡＩＰＤ１０３ｄは、ダイ間入力ブロック２２９ａ、２２９ｂ、ダイ間出力ブロック２３１ａ、２３１ｂ、およびホストインターフェースユニット２１６を含む。ＡＩＰＤ１０３ｅは、ダイ間入力ブロック２３３ａ、２３３ｂ、ダイ間出力ブロック２３５ａ、２３５ｂ、およびホストインターフェースユニット２１７を含む。ＡＩＰＤ１０３ｆは、ダイ間入力ブロック２３７ａ、２３７ｂ、ダイ間出力ブロック２３９ａ、２３９ｂ、およびホストインターフェースユニット２１８を含む。
【００３９】
各ＡＩＰＤ１０３は、ニューラルネットワークの特定の層と関連付けられており、上述したように、ＡＩＰＤ１０３のニューラルネットワークの層との関連は、ニューラルネットワークの当該層に関連する特徴に部分的に基づく。図２Ａのニューラルネットワークは、ニューラルネットワークの最後の層と第１の層との間のフィードバックループを必要とするため、ニューラルネットワークの最後の層と第１の層とは、ＡＩＰＤ１０３と関連付けられるべきであり、ＡＩＰＤ１０３では、ニューラルネットワークの最後の層と関連付けられたＡＩＰＤ１０３のダイ間出力ブロックが、ニューラルネットワークの第１の層と関連付けられたＡＩＰＤ１０３のダイ間入力ブロックと電気的に相互接続されている。図２Ａに示すように、ＡＩＰＤ１０３ｄのダイ間出力ブロック２３１ａはＡＩＰＤ１０３ａのダイ間入力ブロック１０９ｂと電気的に相互接続されているため、そのような配置は、ＡＩＰＤ１０３ａを第１の層と関連付け、ＡＩＰＤ１０３ｄを第６の層と関連付けることによって行うことが可能である。したがって、ＡＩＰＤ１０３ｂ、１０３ｃ、１０３ｆ、１０３ｅは、ニューラルネットワークの第２、第３、第４、および第５の層とそれぞれ関連付けられている。図２ＡにおけるＡＩＰＤ１０３の配置の順番は、ＡＩＰＤ１０３ａが順番の第１の位置であり、ＡＩＰＤ１０３ｂが第２の位置にあり、ＡＩＰＤ１０３ｃが第３の位置にあり、ＡＩＰＤ１０３ｆが第４の位置にあり、ＡＩＰＤ１０３ｅが第５の位置にあり、ＡＩＰＤ１０３ｄが第６の位置にあり、かつ、ＡＩＰＤ１０３ａが第７の位置にある。ＡＩＰＤ１０３間のニューラルネットワーク関連データの通信の順番は、２０１ａ、２０１ｂ、２０１ｃ、２０１ｄ、２０１ｅ、２０１ｆで示すように、１０３ａから始まり、その後１０３ｂへ、その後１０３ｃ、１０３ｆ、１０３ｅ、１０３ｄへと、そして１０３ａに戻って、ニューラルネットワークの第６の層と第１の層との間のフィードバック層を組み込む。本明細書で説明するように、「ニューラルネットワーク関連データ」は、計算ユニット１２１の出力などの計算結果データ、パラメータ重みデータ、および他のニューラルネットワークパラメータ関連データを含むが、これらに限定されるわけではない。
【００４０】
ニューラルネットワークの出力層と関連付けられたＡＩＰＤ１０３のＡＩＰＤコントローラは、出力層からの結果データをメインプロセシングユニット１０１に送信するように構成されている。たとえば、出力層と関連付けられたＡＩＰＤが１０３ｄである場合、ＡＩＰＤコントローラ２１６は、ＡＩＰＤ１０３ｄからの結果データをメインプロセシングユニット１０１に送信するように構成されている。いくつかの実現例では、単一のＡＩＰＤ１０３が、メインプロセシングユニット１０１からのニューラルネットワークの最初の入力データを受信し、ニューラルネットワークの最後の層からの結果データをメインプロセシングユニット１０１に送信するように構成されている。たとえば、図２Ａでは、ＡＩＰＤ１０３ａがメインプロセシングユニット１０１からのニューラルネットワークの最初の入力データおよびＡＩＰＤ１０３ｄ、ニューラルネットワークの最後の層と関連付けられたＡＩＰＤから結果データを受信する場合、ＡＩＰＤ１０３ａのＡＩＰＤコントローラ１１３は、ダイ間入力ブロック１１１ｂで受信されたＡＩＰＤ１０３ｄからの結果データをメインプロセシングユニット１０１に送信するように構成可能である。
【００４１】
上述の同じＡＩＰＤ１０３を用いて、図２Ａを参照して説明されたニューラルネットワークと異なるニューラルネットワークを処理可能である。たとえば、ニューラルネットワークがニューラルネットワークの第６の層と第３の層との間のフィードバックループを有する場合、第６の層と第３の層とは、ＡＩＰＤ１０３と関連付けらるべきであり、ＡＩＰＤ１０３では、ニューラルネットワークの第６の層と関連付けられたＡＩＰＤ１０３のダイ間出力ブロックは、ニューラルネットワークの第３の層と関連付けられたＡＩＰＤ１０３のダイ間入力ブロックと電気的に相互接続されている。さらに、ニューラルネットワークの異なる層と関連付けられたＡＩＰＤ１０３の各々は、ニューラルネットワークの後の層と関連付けられた他のＡＩＰＤ１０３の少なくとも１つのダイ間入力ブロックと電気的に相互接続されている。たとえば、第１の層と関連付けられたＡＩＰＤ１０３は、ニューラルネットワークの第２の層と関連付けられたＡＩＰＤ１０３のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきであり、第２の層と関連付けられたＡＩＰＤ１０３は、ニューラルネットワークの第３の層と関連付けられたＡＩＰＤ１０３のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきであり、第３の層と関連付けられたＡＩＰＤ１０３は、ニューラルネットワークの第４の層と関連付けられたＡＩＰＤ１０３のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきであり、第４の層と関連付けられたＡＩＰＤ１０３は、ニューラルネットワークの第５の層と関連付けられたＡＩＰＤ１０３のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきであり、かつ、第５の層と関連付けられたＡＩＰＤ１０３は、ニューラルネットワークの第６の層と関連付けられたＡＩＰＤ１０３のダイ間入力ブロックと電気的に相互接続されたダイ間出力ブロックを有するべきである。そのようなニューラルネットワークの処理は、図２Ｂに示すＡＩＰＤ１０３の配置を用いて行うことができる。
【００４２】
図２Ｂは、ＡＩＰＵ内のＡＩＰＤ１０３の異なる配置例を示す図である。図２Ｂでは、ＡＩＰＵ２５０は、ＡＩＰＤ１０３ａ、１０３ｂ、１０３ｃ、１０３ｄ、１０３ｅ、１０３ｆを含む。ＡＩＰＵ２５０内で、ＡＩＰＤ１０３ａのダイ間出力ブロック１１１ａは、ＡＩＰＤ１０３ｂのダイ間入力ブロック２２１ａと電気的に相互接続されており、ＡＩＰＤ１０３ａのダイ間出力ブロック１１１ｂは、ＡＩＰＤ１０３ｄのダイ間入力ブロック２２９ａと電気的に相互接続されており、ＡＩＰＤ１０３ｂのダイ間出力ブロック２２３ｂは、ＡＩＰＤ１０３ａのダイ間入力ブロック１０９ｂに電気的に相互接続されており、ＡＩＰＤ１０３ｂのダイ間出力ブロック２２３ａは、ＡＩＰＤ１０３ｃのダイ間入力ブロック２２５ａに電気的に相互接続されており、ＡＩＰＤ１０３ｃのダイ間出力ブロック２２７ｂは、ＡＩＰＤ１０３ｆのダイ間入力ブロック２３７ａに電気的に相互接続されており、ＡＩＰＤ１０３ｆのダイ間出力ブロック２３９ａは、ＡＩＰＤ１０３ｃのダイ間入力ブロック２２５ｂに電気的に接続されており、ＡＩＰＤ１０３ｆのダイ間出力ブロック２３９ｂは、ＡＩＰＤ１０３ｅのダイ間入力ブロック２３３ｂに電気的に相互接続されており、ＡＩＰＤ１０３ｅのダイ間出力ブロック２３５ａは、ＡＩＰＤ１０３ｂのダイ間入力ブロック２２１ｂに電気的に相互接続されており、ＡＩＰＤ１０３ｅのダイ間出力ブロック２３５ｂは、ＡＩＰＤ１０３ｄのダイ間入力ブロック２２９ｂに電気的に相互接続されており、ＡＩＰＤ１０３ｄのダイ間出力ブロック２３１ａは、ＡＩＰＤ１０３ｅのダイ間入力ブロック２３３ａに電気的に相互接続されている。
【００４３】
図２Ｂでは、ＡＩＰＤ１０３ｆは、ニューラルネットワークの第６の層と関連付けられており、ＡＩＰＤ１０３ｅは、ニューラルネットワークの第３の層と関連付けられている。ＡＩＰＤ１０３ａ、１０３ｄ、１０３ｂ、１０３ｃは、ニューラルネットワークの第１の、第２の、第４の、および第５の層とそれぞれ関連付けられている。ＡＩＰＤコントローラ１１３は、ＡＩＰＤ１０３ａにおける計算の結果データを、ＡＩＰＤ１０３ｄ、ニューラルネットワークの第２の層と関連付けられたＡＩＰＤ１０３に、ＡＩＰＤ１０３ｄのダイ間入力ブロック２２９ａに電気的に相互接続されたＡＩＰＤ１０３ａのダイ間出力ブロック１１１ｂを用いて送信するように構成されている。ＡＩＰＤ１０３ｄのＡＩＰＤコントローラ２１６は、ＡＩＰＤ１０３ｄからの結果データを、ＡＩＰＤ１０３ｅ、ニューラルネットワークの第３の層と関連付けられたＡＩＰＤ１０３に、ＡＩＰＤ１０３ｅのダイ間入力ブロック２３３ａに電気的に相互接続されたダイ間出力ブロック２３１ａを用いて送信するように構成されている。ＡＩＰＤ１０３ｅのＡＩＰＤコントローラ２１７は、ＡＩＰＤ１０３ｅからの結果データを、ＡＩＰＤ１０３ｂ、ニューラルネットワークの第４の層に関連付けれられたＡＩＰＤ１０３に、ＡＩＰＤ１０３ｂのダイ間入力ブロック２２１ｂに電気的に相互接続されたＡＩＰＤ１０３ｅのダイ間出力ブロック２３５ａを用いて送信するように構成されている。ＡＩＰＤ１０３ｂのＡＩＰＤコントローラ２１４は、ＡＩＰＤ１０３ｂからの結果データを、ＡＩＰＤ１０３ｃ、ニューラルネットワークの第５の層と関連付けられたＡＩＰＤ１０３に、ＡＩＰＤ１０３ｃのダイ間入力ブロック２２５ａに電気的に相互接続されたダイ間出力ブロック２２３ａを用いて送信するように構成されている。ＡＩＰＤ１０３ｃのＡＩＰＤコントローラ２１５は、ＡＩＰＤ１０３ｃからの結果データを、ＡＩＰＤ１０３ｆ、ニューラルネットワークの第６の層と関連付けられたＡＩＰＤ１０３に、ＡＩＰＤ１０３ｆのダイ間入力ブロック２３７ａに電気的に相互接続されたＡＩＰＤ１０３ｃのダイ間出力ブロック２２７ｂを用いて送信するように構成されている。ＡＩＰＤコントローラ２１８は、ＡＩＰＤ１０３ｆからのフィードバックデータを、ＡＩＰＤ１０３ｅ、ニューラルネットワークの第３の層と関連付けられたＡＩＰＤ１０３に、ＡＩＰＤ１０３ｅのダイ間入力ブロック２３３ｂに電気的に相互接続されたＡＩＰＤ１０３ｆのダイ間出力ブロック２３９ｂを用いて送信するように構成されている。ＡＩＰＤ１０３ｆのＡＩＰＤコントローラ２１８はさらに、ＡＩＰＤ１０３ｆがニューラルネットワークの出力層と関連付けられている場合、ＡＩＰＤ１０３ｆからの結果データをメインプロセシングユニット１０１に送信するように構成されている。図２ＢのＡＩＰＤ１０３の配置の順番は、ＡＩＰＤ１０３ａが順番の第１の位置にあり、ＡＩＰＤ１０３ｄが第２の位置にあり、ＡＩＰＤ１０３ｅが第３の位置にあり、ＡＩＰＤ１０３ｂが第４の位置にあり、ＡＩＰＤ１０３ｃが第５の位置にあり、ＡＩＰＤ１０３ｆが第６の位置にあり、かつ、ＡＩＰＤ１０３ｅが第７の位置にある。ＡＩＰＤ１０３間の図２Ｂにおけるニューラルネットワーク関連データの通信の順番は、２０２ａ、２０２ｂ、２０２ｃ、２０２ｄ、２０２ｅ、２０２ｆで示されるように、１０３ａから始まり、その後、１０３ｄ、１０３ｅ、１０３ｂ、１０３ｃ、１０３ｆへと、そしてその後、フィードバックデータを１０３ｅへと送信する。
【００４４】
それゆえ、同じ同一のＡＩＰＤを、異なるニューラルネットワーク必要条件を有する異なるニューラルネットワークを処理するために利用可能である。したがって、単一の人工知能処理ダイ（ＡＩＰＤ）の設計を、異なる必要条件を有する異なるニューラルネットワークの処理および実行において利用可能であり、これによって、設計時間に関連する費用が減少し、経常外エンジニアリング費用が効率的に償却される。
【００４５】
さらに、ＡＩＰＵと関連付けられたコンフィギュレーションデータおよび／またはＡＩＰＵのＡＩＰＤと関連付けられたコンフィギュレーションデータを変更することにより、単一のＡＩＰＵを、異なるニューラルネットワークを処理するために用いることができる。たとえば、図２Ｂでは、４層を有するニューラルネットワークがＡＩＰＵ２５０によって処理される場合、ＡＩＰＵ２５０と関連付けられたコンフィギュレーションデータおよび／またはＡＩＰＵ２５０のＡＩＰＤ１０３と関連付けられたコンフィギュレーションデータは、ＡＩＰＤ１０３ａをニューラルネットワークの第１の層と関連付け、ＡＩＰＤ１０３ｂをニューラルネットワークの第２の層と関連付け、ＡＩＰＤ１０３ｃをニューラルネットワークの第３の層と関連付け、かつ、ＡＩＰＤ１０３ｆをニューラルネットワークの第４の層と関連付けるように変更可能である。これらのＡＩＰＤ１０３のダイ間出力ブロックとダイ間入力ブロックとの間の電気的な相互接続については上述した。ＡＩＰＵ２５０とＡＩＰＵ２５０のＡＩＰＤ１０３とが再構成されると、メインプロセシングユニットコントローラ１０５は、ニューラルネットワークに関連した入力データをニューラルネットワークの第１の層と関連付けられたＡＩＰＤ、ＡＩＰＤ１０３ａに送信する。ＡＩＰＤ１０３ａと関連付けられた、変更されたコンフィギュレーションデータとニューラルネットワークへの入力データとに基づいて、ＡＩＰＤ１０３ａは、ＡＩ計算を含む、新しいニューラルネットワークの第１の層に関連する計算を行い、ダイ間出力ブロック１１１ａを用いてＡＩＰＤ１０３ｂに結果データを送信する。本明細書で説明されるように、「ニューラルネットワークの層に関連する計算」は、ニューラルネットワークの当該層に関連するＡＩ計算を含む。ＡＩＰＤ１０３ｂは、ダイ間入力ブロック２２１ａでＡＩＰＤ１０３から受信された結果データと、ＡＩＰＤ１０３ｂと関連付けられた、変更されたコンフィギュレーションデータとに基づいて、ＡＩ計算を含む、ニューラルネットワークの第２の層に関連する計算を行う。ＡＩＰＤ１０３ｂは、ダイ間出力ブロック２２３ａを用いて、結果データをＡＩＰＤ１０３ｃに送信する。ＡＩＰＤ１０３ｃは、ダイ間入力ブロック２２５ａでＡＩＰＤ１０３ｂから受信された結果データと、ＡＩＰＤ１０３ｃと関連付けられた、変更されたコンフィギュレーションデータとに基づいて、ＡＩ計算を含む、ニューラルネットワークの第３の層に関連する計算を行い、ダイ間出力ブロック２２７ｂを用いて、結果データをＡＩＰＤ１０３ｆに送信する。ＡＩＰＤ１０３ｆは、ダイ間入力ブロック２３７ａでＡＩＰＤ１０３ｃから受信された結果データと、ＡＩＰＤ１０３ｆと関連付けられた、変更されたコンフィギュレーションデータとに基づいて、ＡＩ計算を含む、ニューラルネットワークの第４の層に関連する計算を行う。ＡＩＰＤ１０３ｆ、ニューラルネットワークの最後の層と関連付けられたＡＩＰＤ１０３は、ＡＩＰＤ１０３ｆからの結果データをメインプロセシングユニット１０１に送信するように構成されている。したがって、ＡＩＰＵと関連付けられたコンフィギュレーションデータおよび／またはＡＩＰＵのＡＩＰＤのコンフィギュレーションデータを変更することによって、単一のＡＩＰＵを、異なるニューラルネットワークを処理するように再プログラム可能である。それゆえ、特注のＡＳＩＣの使用に関連する、無視できない経常外エンジニアリング費用をより効率的に償却可能であり、この特定のニューラルネットワークのタスクを処理するための特注のＡＳＩＣの設計に伴う設計時間費用をさらに減らすことができる。
【００４６】
いくつかの実現例では、少なくとも１つのダイ間入力ブロックと少なくとも１つのダイ間出力ブロックとはＡＩＰＤ１０３の１つのエッジに配置され、少なくとも１つのダイ間出力ブロックと少なくとも１つのダイ間入力ブロックとは、ＡＩＰＤ１０３の他のエッジに設けられる。たとえば、図２Ａに示すように、１つのダイ間入力ブロックと１つのダイ間出力ブロックとがＡＩＰＤ１０３のトップエッジに設けられ、他のダイ間出力ブロックとダイ間入力ブロックとが、ＡＩＰＤ１０３のボトムエッジに設けられる。いくつかの実現例では、全てのダイ間入力ブロックはＡＩＰＤ１０３の１つのエッジに設けられ、全てのダイ間出力ブロックは、ＡＩＰＤ１０３ｂの他のエッジに設けられる。ダイ間入力ブロックおよびダイ間出力ブロックのそのような配置の例を、図２Ｃに示す。
【００４７】
図２Ｃでは、全てのダイ間入力ブロックはＡＩＰＤ１０３のトップエッジに設けられ、全てのダイ間出力ブロックは、ＡＩＰＤ１０３のボトムエッジに設けられる。いくつかの実現例では、ＡＩＰＤ１０３間の等しい長さの電気的な相互接続を実現するために、および、図２Ｃに示すＡＩＰＤ１０３を含むＡＩＰＵにより効率的なサイズを達成するために、ＡＩＰＤ１０３の一部の向きは、他のＡＩＰＤ１０３の向きに対して特定の距離または角度だけずらされている。たとえば、図２Ｃに示すように、ＡＩＰＤ１０３ｂおよび１０３ｅは、ＡＩＰＤ１０３ａ、１０３ｄ、１０３ｃ、および１０３ｆの向きに対して１８０度回転されている。ＡＩＰＤ１０３を１８０度回転することによって、ＡＩＰＤ１０３ｂ、１０３ｅのダイ間入力ブロックおよびダイ間出力ブロックは、ＡＩＰＤ１０３ａ、１０３ｄ、１０３ｃ、１０３ｆのダイ間出力ブロックおよびダイ間入力ブロックに隣接して設けられ、これによって、全てのＡＩＰＤ１０３間の電気的な相互接続の長さが等しい長さになり、ＡＩＰＤ１０３ｂまたは１０３ｅおよび任意の隣接するＡＩＰＤ１０３のダイ間入力ブロックおよびダイ間出力ブロック間の電気的な相互接続のためにさらなる領域を必要としない。
【００４８】
図２Ｃでは、図２Ｃに示されるＡＩＰＤ１０３の配置を有するＡＩＰＵは、上述のＡＩＰＵに類似したニューラルネットワークを処理可能である。たとえば、６層を有し層間のフィードバックループを有さないニューラルネットワークは、ＡＩＰＤ１０３ａをニューラルネットワークの第１の層と、ＡＩＰＤ１０３ｄを第２の層と、ＡＩＰＤ１０３ｅを第３の層と、ＡＩＰＤ１０３ｂを第４の層と、ＡＩＰＤ１０３ｃを第５の層と、および、ＡＩＰＤ１０３ｆを第６の層と関連付けることで、図２Ｃに示すＡＩＰＤ１０３の配置によって処理可能である。図２ＣのＡＩＰＤ１０３の配置の順番は、ＡＩＰＤ１０３ａが順番の第１の位置にあり、ＡＩＰＤ１０３ｄが第２の位置にあり、ＡＩＰＤ１０３ｅが第３の位置にあり、ＡＩＰＤ１０３ｂが第４の位置にあり、ＡＩＰＤ１０３ｃが第５の位置にあり、かつ、ＡＩＰＤ１０３ｆが第６の位置にある。ＡＩＰＤ１０３間の通信はＡＩＰＤ１０３ａから始まり、その後ＡＩＰＤ１０３ｄ、１０３ｅ、１０３ｂ、１０３ｃ、および１０３ｆへという順番である。
【００４９】
本明細書で説明されるＡＩＰＤの設計および実現の利点のうちの１つは、いかなる数のＡＩＰＤも単一のＡＩＰＵパッケージ内に含むことができるということである。単一のＡＩＰＵパッケージ内のＡＩＰＤの数は、ＡＩＰＵパッケージのサイズによって制限されるだけであり、ＡＩＰＤのダイのサイズによって制限されない。したがって、図２ＤのＡＩＰＤ１１〜ＡＩＰＤＮＮの配置によって示されるように、単一のＡＩＰＵパッケージにＮ×ＮのＡＩＰＤの配置を含むことが可能である。図２ＤのＡＩＰＤ１１〜ＡＩＰＤＮＮは、上述のＡＩＰＤ１０３と同様に設計および構成されている。
【００５０】
メインプロセシングユニットコントローラ１０５は、ＡＩＰＤ１０３のホストインターフェースユニットを介して、第１の層（入力層）と関連付けられたＡＩＰ１０３に、ニューラルネットワークの最初の入力データを送信するように構成されている。たとえば、図２、図２Ｂ、および図２Ｃに示すように、ニューラルネットワークの第１の層と関連付けられたＡＩＰＤ１０３はＡＩＰＤ１０３ａであり、メインプロセシングユニットコントローラ１０５は、ホストインターフェースユニット１１３を介して、最初の入力データをＡＩＰＤ１０３ａに送信する。いくつかの実現例では、通信の順番で最後のＡＩＰＤ１０３は、ＡＩＰＤのホストインターフェースユニットを用いて結果データをメインプロセシングユニット１０１に再び送信するように構成されている。いくつかの実現例では、ニューラルネットワークの最後の層と関連付けられたＡＩＰＤ１０３は、結果データをメインプロセシングユニット１０１に再び送信するように構成されている。たとえば、図２Ａでは、上述のように、通信の順番で最後のＡＩＰＤ１０３はＡＩＰＤ１０３ａであるため、いくつかの実現例では、ＡＩＰＤ１０３ａのＡＩＰＤコントローラ１１７は、ホストインターフェースユニット１１３を用いて結果データをメインプロセシングユニット１０１に送信するように構成されている。同様に、図２Ｂでは、ＡＩＰＤ１０３ｆはニューラルネットワークの最後の層と関連付けられたＡＩＰＤ１０３であり、いくつかの実現例では、ＡＩＰＤ１０３ｆのＡＩＰＤコントローラ２１８は、ＡＩＰＤ１０３ｆのホストインターフェースユニットを用いて結果データをメインプロセシングユニット１０１に送信するように構成されている。ニューラルネットワーク処理のためにＡＩＰＤ１０３を構成する方法の例について、図３を参照して説明する。
【００５１】
図３は、ニューラルネットワークモデルを処理するためにＡＩＰＵを構成する方法の例３００を示すフローチャートである。メインプロセッサにおいて、方法３００は、入力を受信してＡＩＰＵを構成すること（ステージ３０２）を備える。方法３００は、ＡＩＰＵコンフィギュレーションデータを選択すること（ステージ３０４）を備える。方法３００は、コンフィギュレーションデータをＡＩＰＵのＡＩＰＤ１０３に送信すること（ステージ３０６）を備える。各ＡＩＰＤ１０３において、方法３００は、コンフィギュレーションデータを受信すること（ステージ３０８）を備える。方法３００は、コンフィギュレーションデータに基づいて、ＡＩＰＤ１０３を構成すること（ステージ３１０）を備える。方法３００は、メインプロセシングユニット１０１に応答を送信すること（ステージ３１２）を備える。
【００５２】
方法３００は、メインプロセシングユニット１０１において、入力を受信してＡＩＰＵを構成すること（ステージ３０２）を備える。入力を受信してＡＩＰＵを構成することに応じて、方法３００は、ＡＩＰＵ内の各ＡＩＰＤ１０３についてＡＩＰＵコンフィギュレーションデータを選択すること（ステージ３０４）を備える。メインプロセッサ１０１のメインプロセシングユニットコントローラ１０５は、ＡＩＰＵに関連するコンフィギュレーションデータを選択する。ＡＩＰＵに関連するコンフィギュレーションデータの選択では、メインプロセシングユニットコントローラ１０５は、ＡＩＰＵのＡＩＰＤ１０３の各々と関連付けられたコンフィギュレーションデータを選択する。異なるコンフィギュレーションデータは、ニューラルネットワークプロセシングについてＡＩＰＤ１０３を構成するために異なる値を指定してもよい。ＡＩＰＤ１０３は、関連付けられたＡＩＰＤ１０３と他のＡＩＰＤ１０３との間のニューラルネットワーク関連データの送受信、ならびに、ダイ間出力ブロック１０３のピンに対する出力データ、および、パラメータ、パラメータ重みデータ、パラメータの数などのニューラルネットワーク関連データのマッピングのために構成される、関連付けられたＡＩＰＤ１０３のダイ間出力ブロックおよびダイ間入力ブロックを含むが、これらに制限されるわけではない。コンフィギュレーションデータによって指定される値は、対応するＡＩＰＤ１０３が関連付けられているニューラルネットワークの層に基づく。したがって、１つのＡＩＰＤ１０３と関連付けられたコンフィギュレーションデータの値は、異なるＡＩＰＤ１０３と関連付けられたコンフィギュレーションデータの値と異なっていてもよい。たとえば、ＡＩＰＵによって処理されているニューラルネットワークの第１の層が、ニューラルネットワークの第１の層の計算タスクに使用されるべき第１の集合の重み値を必要とし、ニューラルネットワークの第２の層が、第２の層の計算タスクの間に適用されるべき、第１の集合の重み値とは異なる第２の集合の重み値を必要とする場合、ニューラルネットワークの第１の層と関連付けられたＡＩＰＤ１０３と関連付けられたコンフィギュレーションデータは、第１の集合の重み値に対応する重み値を指定する一方で、ニューラルネットワークの第２の層と関連付けられたＡＩＰＤ１０３と関連付けられたコンフィギュレーションデータは、第２の集合の重み値に対応する重み値を指定する。
【００５３】
ニューラルネットワーク関連データをニューラルネットワークの次の層と関連付けられたＡＩＰＤ１０３に送信するためにコンフィギュレーションデータにおいて指定されたＡＩＰＤ１０３のダイ間出力ブロックは、ニューラルネットワークの次の層と関連付けられたＡＩＰＤ１０３に対するＡＩＰＤ１０３の位置に部分的に基づく。たとえば、ＡＩＰＤ１０３ａがニューラルネットワークの第１の層と関連付けられていて、ＡＩＰＤ１０３ｂがニューラルネットワークの次の層と関連付けられている場合、ＡＩＰＤ１０３ａのためのコンフィギュレーションデータで指定されたＡＩＰＤ１０３ａのダイ間出力ブロックは、ＡＩＰＤ１０３ｂのダイ間入力ブロックに電気的に相互接続されたダイ間出力ブロックであり、これは、図２Ａ、図２Ｂ、および図２Ｃで示すように、ダイ間出力ブロック１１１ａである。同様に、ＡＩＰＤ１０３ｄがＡＩＰＤ１０３ａと関連付けられた層の次の層と関連付けられている場合、ニューラルネットワーク関連データを送信するために選択されＡＩＰＤ１０３ａのコンフィギュレーションデータにおいて指定されたダイ間出力ブロックは、ＡＩＰＤ１０３ｄのダイ間入力ブロックに電気的に相互接続されたダイ間出力ブロックであり、これは、図２Ａ、図２Ｂ、および図２Ｃに示すように、ダイ間出力ブロック１１１ｂである。
【００５４】
各ＡＩＰＤ１０３は固有の識別子と関連付けられており、いくつかの実現例では、ＡＩＰＤ１０３のコンフィギュレーションデータは、当該ＡＩＰＤ１０３の固有の識別子と関連付けられており、メインプロセシングユニットコントローラ１０５は、ＡＩＰＤ１０３と関連付けられた固有の識別子に基づいてＡＩＰＤ１０３のコンフィギュレーションデータを選択するように構成されている。
【００５５】
方法３００は、選択されたコンフィギュレーションデータをＡＩＰＤ１０３に送信すること（ステージ３０６）を備える。上述したように、メインプロセシングユニットコントローラ１０５は、ＡＩＰＤ１０３ａのホストインターフェースユニット１１３などのＡＩＰＤ１０３のホストインターフェースユニットを介して、コンフィギュレーションデータをＡＩＰＤ１０３に送信する。いくつかの実現例では、メインプロセシングユニットコントローラ１０５は、任意のＡＩＰＤ１０３のためのコンフィギュレーションデータがアップデートされているかどうかを定期的に確認するように構成されており、ＡＩＰＤ１０３のコンフィギュレーションデータのアップデートに応じて、メインプロセシングユニットコントローラ１０５は、アップデートされたコンフィギュレーションデータを特定のＡＩＰＤ１０３に送信する。いくつかの実現例では、メインプロセシングユニットコントローラ１０５は、命令をＡＩＰＤ１０３に送信して、受信されたコンフィギュレーションデータに基づいてＡＩＰＤ１０３を構成する。いくつかの実現例では、コンフィギュレーションデータはホストコンピューティングデバイスメモリに格納されており、ＡＩＰＤ１０３は、ホストコンピューティングデバイスのメモリに格納されたデータを読出すように構成されている。いくつかの実現例では、メインプロセシングユニットコントローラ１０５は、ＡＩＰＤ１０３に命令を送信して、ホストコンピューティングデバイスメモリからコンフィギュレーションデータを読出し、コンフィギュレーションデータに基づいてＡＩＰＤ１０３を構成する。
【００５６】
方法３００は、各ＡＩＰＤ１０３において、コンフィギュレーションデータを受信すること（ステージ３０８）と、受信されたコンフィギュレーションデータに基づいてＡＩＰＤ１０３を構成すること（ステージ３１０）とを備える。上述したように、ＡＩＰＤ１０３ａのＡＩＰＤコントローラ１１７などのＡＩＰＤ１０３のＡＩＰＤコントローラは、ダイ間入力ブロックおよびダイ間出力ブロックを選択し、受信されたコンフィギュレーションデータに基づいて他のＡＩＰＤ１０３に対してデータを送受信するために、これらのブロックを構成するように構成されている。また、ＡＩＰＤ１０３のＡＩＰＤコントローラは、受信されたコンフィギュレーションデータに基づいて、ニューラルネットワーク関連データを他のＡＩＰＤ１０３に送信するために選択された、選択されたダイ間出力ブロックの特定のピンに、計算ユニット１２１からの出力などのＡＩＰＤ１０３の特定の出力データを送信するように構成されている。さらに、ＡＩＰＤ１０３のＡＩＰＤコントローラは、パラメータ重みデータなどのニューラルネットワーク関連データをバッファ１１９などの記憶装置に記憶し、ＡＩＰＤ１０３と関連付けられたニューラルネットワークの層と関連する計算の間にニューラルネットワーク関連データを用いるように構成されている。
【００５７】
方法３００は、各ＡＩＰＤ１０３において、応答信号をメインプロセッサ１０１に送信すること（ステージ３１２）を備える。ＡＩＰＤ１０３は、ＡＩＰＤ１０３ａのホストインターフェースユニット１１３などのホストインターフェースユニットを用いて、メインプロセッサ１０１に応答信号を送信する。メインプロセッサ１０１に送信された応答は、メインプロセッサに対して、ＡＩＰＤ１０３の構成が正常であると知らせる。いくつかの実現例では、ＡＩＰＤ１０３の構成中にエラーが生じると、ＡＩＰＤ１０３は、ホストインターフェースユニットを用いてメインプロセッサ１０１にエラーメッセージを送信する。必要なＡＩＰＤ１０３が正常に構成されると、ＡＩＰＵは、ニューラルネットワーク関連タスクを処理する準備が整う。メインプロセシングユニットコントローラ１０５は、ニューラルネットワークタスクを実行するためにニューラルネットワークタスクをＡＩＰＵに送信する。ＡＩＰＵによってニューラルネットワークタスクを処理する方法の例について、図４を参照して以下で説明する。
【００５８】
図４は、ＡＩＰＵによってニューラルネットワーク関連タスクを処理する方法の例４００を示すフローチャートである。メインプロセッサ１０１において、方法４００は、ニューラルネットワークタスクを識別すること（ステージ４０２）を備える。方法４００は、初期データまたはニューラルネットワークに関連する入力データをＡＩＰＵに送信すること（ステージ４０４）を備える。ＡＩＰＵにおいて、方法４００は、ニューラルネットワークの入力層と関連付けられた第１のＡＩＰＤ１０３において、ニューラルネットワークに関連する初期データを受信すること（ステージ４０６）を備える。方法４００は、第１のＡＩＰＤ１０３において、初期データと、第１のＡＩＰＤ１０３のコンフィギュレーションデータと共に受信された任意のニューラルネットワーク関連データとを用いて、第１のＡＩＰＤ１０３と関連付けられたニューラルネットワークの層に関連する計算を行うこと（ステージ４０８）を備える。方法４００は、計算の結果を第２のＡＩＰＤに送信すること（ステージ４１０）を備える。方法４００は、第２のＡＩＰＤ１０３において、第１のＡＩＰＤから受信された結果データを用いて、第２のＡＩＰＤ１０３と関連付けられたニューラルネットワークの層に関連する計算を行うこと（ステージ４１２）を備える。方法４００は、いくつかの実現例では、第２のＡＩＰＤ１０３における計算の結果をフィードバックとして第１のＡＩＰＤ１０３に送信すること（ステージ４１４）を備える。方法４００は、ＡＩＰＵからのニューラルネットワークの結果をメインプロセッサに送信すること（ステージ４１６）を備える。方法４００は、メインプロセッサにおいて、ニューラルネットワークの結果をユーザに送信すること（ステージ４１８）を備える。
【００５９】
方法４００は、メインプロセッサ１０１において、ニューラルネットワークタスクを識別すること（ステージ４０２）を備える。メインプロセシングユニットコントローラ１０５は、要求されたタスクがニューラルネットワーク関連タスクかどうかを識別するように構成されている。いくつかの実現例では、要求されたタスクについての要求メッセージまたはデータは、要求されたタスクがニューラルネットワーク関連タスクであると示すメッセージの特定の分野における高ビットまたは低ビットなどの特定のインディケータを運び、メインプロセシングユニットコントローラ１０５は、要求されたタスクがニューラルネットワークタスクかどうかを特定のインディケータに基づいて判断するように構成されている。
【００６０】
方法４００は、メインプロセッサ１０１において、ニューラルネットワークの入力データをＡＩＰＵに送信すること（ステージ４０４）を備える。メインプロセシングユニット１０１のメインプロセシングユニットコントローラ１０５は、ホストコンピューティングデバイスのメモリから入力データを取出し、それを、ＡＩＰＵによって処理されているニューラルネットワークの初期層または入力層と関連付けられたＡＩＰＤ１０３に送信する。メインプロセシングユニットコントローラ１０５は、ＡＩＰＤ１０３の各々と関連付けられたコンフィギュレーションデータに基づいて、ニューラルネットワークの入力層と関連付けられたＡＩＰＤ１０３を識別する。いくつかの実現例では、ニューラルネットワークの入力層と関連付けられたＡＩＰＤ１０３の識別子が、メモリまたはレジスタもしくはバッファなどの記憶ユニットに記憶されており、メインプロセシングユニットコントローラ１０５は、メモリまたは記憶ユニットに記憶された識別子に基づいて入力層と関連付けられたＡＩＰＤ１０３を決定する。ＡＩＰＤ１０３がホストコンピューティングデバイスのメモリに記憶されたデータを読出すように構成されている実現例では、メインプロセシングユニットコントローラ１０５は、命令をニューラルネットワークの入力層と関連付けられたＡＩＰＤ１０３に送信して、ニューラルネットワークへの入力データをホストコンピューティングデバイスのメモリから取出す。
【００６１】
方法４００は、図２Ａ、図２Ｂ、および図２Ｃを参照して説明されたＡＩＰＤ１０３ａなどのニューラルネットワークの入力層と関連付けられた第１のＡＩＰＤ１０３において、ニューラルネットワークに関連する入力データを受信すること（ステージ４０６）を備える。方法４００は、第１のＡＩＰＤ１０３において、第１のＡＩＰＤ１０３において受信された初期データと、第１のＡＩＰＤ１０３の構成中に受信された他のニューラルネットワーク関連データとを用いて、第１のＡＩＰＤ１０３と関連付けられたニューラルネットワークの層に関連する計算を行うこと（ステージ４０８）を備える。第１のＡＩＰＤ１０３のコントローラは、関連付けられたニューラルネットワーク層に基づいて行われる計算を決定する。たとえば、ニューラルネットワークの第１の層が入力データに重み行列を適用することによって行列の乗算を行う場合、ＡＩＰＤ１０３の構成中は、重み行列は、第１のＡＩＰＤ１０３に送信され、ＡＩＰＤ１０３のバッファに格納される。第１のＡＩＰＤ１０３のＡＩＰＤコントローラは、重み行列を第１のＡＩＰＤ１０３の計算ユニットに送信して、重み行列と入力データとを用いて行列乗算を行うように構成されている。いくつかの実現例では、行われる計算は、第１のＡＩＰＤ１０３によって受信されたコンフィギュレーションデータにおいて指定され、指定された計算に基づいて、第１のＡＩＰＤ１０３のコントローラは、ＡＩＰＤ１０３ａの計算ユニット１２１などのＡＩＰＤ１０３の適切な計算ユニットにデータを送信する。
【００６２】
方法４００は、第１のＡＩＰＤ１０３において、第１のＡＩＰＤ１０３における計算の結果を第２のＡＩＰＤ１０３に送信すること（ステージ４１０）を備える。第２のＡＩＰＤ１０３は、第１のＡＩＰＤと異なるニューラルネットワークの層と関連付けられている。方法４００は、第２のＡＩＰＤ１０３において、第１のＡＩＰＤ１０３から受信された結果データと他のニューラルネットワーク関連データとを用いて、第２のＡＩＰＤ１０３と関連付けられたニューラルネットワークの層に関連する計算を行うこと（ステージ４１２）を備える。いくつかの実現例では、計算を行うＡＩＰＤ１０３のコントローラは、ホストコンピューティングデバイスのメモリから、ＡＩ計算で用いるパラメータ重みデータなどの、計算のためのさらなるデータを取出すことができる。
【００６３】
ＡＩＰＵによって処理されているニューラルネットワークモデルがニューラルネットワークの２つ以上の層の間のフィードバックループを含み、第２のＡＩＰＤ１０３と第１のＡＩＰＤ１０３とが、それらの間にフィードバックループが含まれているニューラルネットワークの層と関連付けられている実現例では、方法４００は、第２のＡＩＰＤ１０３において、第２のＡＩＰＤ１０３における計算の結果データを、フィードバックとして第１のＡＩＰＤ１０３に送信すること（ステージ４１４）を備える。第２のＡＩＰＤ１０３と第１のＡＩＰＤ１０３と関連付けられた層の間にフィードバックループがない場合、方法４００は、ＡＩＰＵからのニューラルネットワークの結果をメインプロセシングユニット１０１に送信すること（ステージ４１６）を備える。ニューラルネットワークの出力層と関連付けられたＡＩＰＤ１０３のコントローラは、ＡＩＰＤ１０３ａのホストインターフェースユニット１１３などのホストインターフェースを用いて、ニューラルネットワークの結果をメインプロセッサ１０１に送信する。たとえば、図２Ａでは、ＡＩＰＤ１０３ａは、図２Ａにおけるニューラルネットワークの出力層と関連付けられたＡＩＰＤ１０３であり、それゆえ、ＡＩＰＤ１０３ａのＡＩＰＤコントローラ１１７は、ホストインターフェースユニット１１３を用いてメインプロセッサ１０１に結果データを送信する。同様に、図２Ｂでは、ＡＩＰＤ１０３ｆは、図２Ｂにおけるニューラルネットワークの出力層と関連付けられており、ＡＩＰＤ１０３ｆのＡＩＰＤコントローラは、ＡＩＰＤ１０３ｆのホストインターフェースユニットを用いて、結果データをメインプロセッサ１０１に送信する。
【００６４】
方法４００は、メインプロセシングユニット１０１において、ＡＩＰＵから受信されたニューラルネットワークの結果をニューラルネットワークタスクの要求側に送信すること（ステージ４１８）を備える。本明細書で用いられる「ニューラルネットワークタスクの要求側」は、ホストコンピューティングデバイス内の他のプロセス、またはホストコンピューティングデバイスのエンドユーザであり得る。明瞭さを保ち明確な例を示すために２つのＡＩＰＤ１０３のみが図４で示されているが、ニューラルネットワークタスクの実行において用いられるＡＩＰＤ１０３の数は、少なくとも部分的に、ホストコンピューティングデバイスによって行われると予想されるニューラルネットワークタスクのボリュームによって決まる。
【００６５】
図５は、例示的な実現例に係る、本明細書で説明および図示されるシステムの要素および方法を実現するために用いられ得るコンピュータシステム５００のための全体のアーキテクチャを示すブロック図である。コンピューティングシステム５００は、上述のホストコンピューティングデバイスを実現するために使用可能である。コンピューティングシステム５００は、図３および図４に示すＡＩＰＵ方法３００の構成の実現およびＡＩＰＵ方法４００を用いたニューラルネットワークタスクの処理において使用してもよい。
【００６６】
より広い概要では、コンピューティングシステム５１０は、命令に従って動作を行う少なくとも１つのプロセッサ５５０と、命令およびデータを記憶する１つまたは複数のメモリデバイス５７０または５７５とを含む。コンピューティングシステム５１０の図示された例は、ネットワーク（図示せず）に接続した１つまたは複数のネットワークインターフェースポート５２２を有する少なくとも１つのネットワークインターフェースコントローラ５２０とバス５１５を介して接続されている１つまたは複数のプロセッサ５５０と、ＡＩＰＵ５９０と、メモリ５７０と、他の要素５８０、たとえば入出力（Ｉ／Ｏ）インターフェース５３０とを含む。一般に、プロセッサ５５０は、メモリから受信された命令を実行する。図示されたプロセッサ５５０は、キャッシュメモリ５７５を組み込む、または、これに直接接続されている。
【００６７】
より詳細に、プロセッサ５５０は、命令、たとえば、メモリ５７０またはキャッシュ５７５から取出された命令を処理する任意の論理回路でもよい。多くの実施形態では、プロセッサ５５０は、マイクロプロセッサユニットまたは特殊用途のプロセッサである。コンピューティングデバイス５００は、本明細書で説明されるように動作可能な任意のプロセッサまたはプロセッサの集合でもよい。いくつかの実現例では、プロセッサ５５０は、ステージ３０２、３０４、３０６などの図３に示す方法３００の特定のステージ、および、ステージ４０２、４０４、４１８などの図４に示す方法４００の特定のステージを実行可能である。プロセッサ５５０は、単一のコアまたはマルチコアプロセッサでもよい。プロセッサ５５０は、複数のプロセッサでもよい。いくつかの実現例では、プロセッサ５５０は、マルチスレッド動作を実行するように構成可能である。いくつかの実現例では、プロセッサ５５０は、１つまたは複数のバーチャルマシンまたはコンテナの動作を管理するためのハイパーバイザまたはコンテナマネジャと併せて、これらのバーチャルマシンまたはコンテナをホストしてもよい。そのような実現例では、図３に示す方法３００および図４に示す方法４００は、プロセッサ５５０に設けられた仮想環境またはコンテナ環境内で実現可能である。
【００６８】
メモリ５７０は、コンピュータ可読データの記憶に好適なデバイスでもよい。メモリ５７０は、固定記憶装置を有するデバイスまたはリムーバブル記憶媒体を読出すためのデバイスでもよい。例としては、あらゆる形態の不揮発性メモリ、媒体およびメモリデバイス、半導体メモリデバイス（たとえば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＳＤＲＡＭ、およびフラッシュメモリデバイス）、磁気ディスク、光磁気ディスク、ならびに光ディスク（たとえば、ＣＤ  ＲＯＭ、ＤＶＤ‐ＲＯＭ、およびブルーレイ（登録商標）ディスク）が挙げられる。コンピューティングシステム５００は、いかなる数のメモリデバイス５７０を有してもよい。いくつかの実現例では、メモリ５７０は、図３に示す方法３００および図４に示す方法４００に対応する命令を含み得る。いくつかの実現例では、メモリ５７０は、コンピューティングシステム５１０によって提供されるバーチャルマシンまたはコンテナ実行環境でアクセス可能な仮想メモリまたはコンテナメモリをサポートする。
【００６９】
キャッシュメモリ５７５は一般に、速い読込み時間のために、プロセッサ５５０の極めて近くに配置された形スキン尾コンピュータメモリである。いくつかの実現例では、キャッシュメモリ５７５は、プロセッサ５５０の一部である、またはプロセッサ５５０と同じチップ上にある。いくつかの実現例では、たとえばＬ２、Ｌ３キャッシュ層など、複数のレベルのキャッシュ５７５がある。
【００７０】
ネットワークインターフェースコントローラ５２０は、ネットワークインターフェース５２２（ネットワークインターフェースポートとも呼ばれる）を介してデータ交換を管理する。ネットワークインターフェースコントローラ５２０は、ネットワーク通信のためのＯＳＩモデルの物理層およびデータリンク層を処理する。いくつかの実現例では、ネットワークインターフェースコントローラのタスクの一部は、プロセッサ５５０によって処理される。いくつかの実現例では、ネットワークインターフェースコントローラ５２０は、プロセッサ５５０の一部である。いくつかの実現例では、コンピューティングシステム５１０は、複数のネットワークインターフェースコントローラ５２０を有する。ネットワークインターフェース５２２は、物理ネットワークリンクのための接続点である。いくつかの実現例では、ネットワークインターフェースコントローラ５２０は、無線ネットワーク接続をサポートし、インターフェースポート５２２は、ワイヤレス受信機／送信機である。一般に、コンピューティングデバイス５１０は、ネットワークインターフェース５２２に対する物理リンクまたは無線リンクを介して、他のコンピューティングデバイスとデータを交換する。ネットワークインターフェース５２２は、直接他のデバイスにリンクしてもよい、または、コンピューティングデバイス５１０をインターネットなどのネットワークに接続する中間デバイス、たとえば、ハブ、ブリッジ、スイッチ、またはルータなどのネットワークデバイスを介して接続されてもよい。いくつかの実現例では、ネットワークインターフェースコントローラ５２０は、イーサネット（登録商標）などのネットワークプロトコルを実現する。
【００７１】
他の要素５８０は、Ｉ／Ｏインターフェース５３０、外部シリアルデバイスポート、およびさらなるコプロセッサを含み得る。たとえば、コンピューティングシステム５１０は、入力デバイス（たとえば、キーボード、マイクロフォン、マウス、もしくは他のポインティングデバイス）、出力デバイス（たとえば、ビデオディスプレイ、スピーカ、もしくはプリンタ）、または付加的なメモリデバイス（たとえば、ポータブルフラッシュドライブもしくは外部媒体駆動装置）を接続するためのインターフェース（たとえば、ユニバーサルシリアルバス（ＵＳＢ）インターフェース）を含み得る。いくつかの実現例では、他の構成要素５８０は、プロセッサ５５０の高精度なまたは複雑な計算を助ける数値演算コプロセッサなどの付加的なコプロセッサを含む。
【００７２】
本明細書に記載の発明の主題および動作の実現例は、本明細書に開示の構造およびそれらの構造的均等物を含む、デジタル電子回路、または有形の媒体上に含まれるコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの１つまたは複数の組み合わせで実施され得る。本明細書に記載の発明の主題の実現例は、有形の媒体上に含まれる１つまたは複数のコンピュータプログラムとして実現できる、つまり、データ処理装置によって実行するために、またはデータ処理装置の動作を制御するために、１つまたは複数のコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の１つまたは複数のモジュールとして実現できる。コンピュータ記憶媒体は、コンピュータ読み取り可能な記憶装置、コンピュータ読み取り可能な記憶基板、ランダムもしくはシリアルアクセスメモリアレイまたは素子、またはそれらのうちの１つまたは複数の組み合わせとする、またはそれらに含めることができる。また、コンピュータ記憶媒体は、１つもしくは複数の別々のコンポーネントまたは媒体（たとえば、複数のＣＤ、ディスク、またはその他の記憶装置）とする、またはそれに含めることもできる。コンピュータ記憶媒体は、有形の非一時的なコンピュータ記憶媒体であってもよい。
【００７３】
本明細書に記載の動作は、１つまたは複数のコンピュータ読み取り可能な記憶装置上に格納されたまたはその他の送信側から受信されたデータに対してデータ処理装置が行う動作として実現できる。動作は、データ処理装置のネイティブ環境内、またはデータ処理装置がホストする１つまたは複数の仮想マシンまたはコンテナ内で実行されてもよい。
【００７４】
（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる）コンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語、宣言的言語または手続き型言語を含む任意の形式のプログラミング言語で書くことができ、それは、スタンドアロンプログラムとして、もしくは、コンピュータ環境での使用に好適なモジュール、コンポーネント、サブルーチン、オブジェクト、または他のユニットとして、ということを含む任意の形式でデプロイされ得る。コンピュータプログラムは、ファイルシステムのファイルに対応していてもよいが、対応する必要はない。プログラムは、他のプログラムもしくはデータ（たとえば、マークアップ言語文書に格納された１つ以上のスクリプト）を保持するファイルの一部に、当該プログラム専用の単一のファイルに、または、複数の連携ファイル（たとえば、１つ以上のモジュール、サブプログラム、またはコードの部分を格納するファイル）に格納されてもよい。コンピュータプログラムは、１つのコンピュータ上で、または、１ヶ所に位置するかもしくは複数箇所にわたって分散され、通信ネットワークによって相互接続された１つもしくは複数の仮想マシンまたはコンテナで、実行されるためにデプロイされ得る。通信ネットワークの例としては、ローカルエリアネットワーク（「ＬＡＮ」）およびワイドエリアネットワーク（「ＷＡＮ」）、インターネットワーク（たとえば、インターネット）、ならびに、ピアツーピアネットワーク（たとえば、アドホックピアツーピアネットワーク）が挙げられる。
【００７５】
本明細書で説明されたプロセスおよび論理フローは、１つ以上のプログラマブルプロセッサが、入力データに対して動作して出力を生成することによってアクションを行なうように、１つ以上のコンピュータプログラムを実行することによって行なわれてもよい。プロセスおよび論理フローはまた、専用論理回路、たとえばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）によって行なわれてもよく、装置も専用論理回路として実現されてもよい。
【００７６】
本明細書は多くの具体的な実現例の詳細を含むが、これらは、発明または請求の範囲の限定として解釈されるべきではなく、特定の発明の特定の実現例に特有の特徴の説明であると解釈されるべきである。別々の実現例の枠内で本明細書に記載のいくつかの特徴は、１つの実現例で組み合わせて実現することもできる。その逆に、１つの実現例の枠内で記載されたさまざまな特徴は、別々の複数の実現例または任意の適した部分的な組み合わせで実現することもできる。また、特徴は、いくつかの組み合わせで動作するものとして上述され、そのように初めに特許請求され得たが、特許請求された組み合わせからの１つまたは複数の特徴は、場合によっては、組み合わせから削除でき、特許請求された組み合わせは、部分的な組み合わせまたは部分的な組み合わせの変形例を対象としてもよい。
【００７７】
同様に、動作は特定の順番で図面に示されているが、これは、望ましい結果を達成するためにこのような動作を示されている特定の順番でもしくはシーケンシャルな順番で実行しなければならないものとして理解されるべきではない、または、望ましい結果を達成するために示されている動作を全て実行しなければならないものとして理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利である場合もある。さらに、上記の実現例におけるさまざまなシステムコンポーネントの分離は、全ての実現例においてこのような分離が必要であるものとして理解されるべきではなく、記載されているプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に統合されてもよい、または複数のソフトウェア製品にパッケージングされてもよい、ということが理解されるべきである。
【００７８】
「または」という言及は、「または」を使用して記載されているいかなる用語も、記載されている用語のうちの１つ、２つ以上および全てのいずれかを示すように包括的であるものとして解釈され得る。「第１の」、「第２の」、「第３の」などの表示は、必ずしも順番付けを示すよう意図されているわけではなく、一般に同様または類似の項目または要素を区別するために使用しているに過ぎない。
【００７９】
本明細書に記載された実現例に対するさまざまな変更は、当業者にとって明らかであり、本開示の精神または範囲から逸脱することなく、本明細書に記載の一般的な原理を他の実現例に適用することができる。したがって、特許請求の範囲は、本明細書に記載の実現例に限定されることを意図しておらず、本明細書に開示された原理および新規な特徴と一致する最も広い範囲で解釈されるべきである。
【図１Ａ】
2021504770.tif 000003
【図１Ｂ】
2021504770.tif 000004
【図１Ｃ】
2021504770.tif 000005
【図２Ａ】
2021504770.tif 000006
【図２Ｂ】
2021504770.tif 000007
【図２Ｃ】
2021504770.tif 000008
【図２Ｄ】
2021504770.tif 000009
【図３】
2021504770.tif 000010
【図４】
2021504770.tif 000011
【図５】
2021504770.tif 000012
【手続補正書】
【提出日】令和2年7月13日(2020.7.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
人工知能処理ユニットであって、複数の同一の人工知能処理ダイを備え、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも１つのダイ間入力ブロックと少なくとも１つのダイ間出力ブロックとを含み、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記人工知能処理ダイの前記少なくとも１つのダイ間出力ブロックから前記人工知能処理ダイの前記少なくとも１つのダイ間入力ブロックへの１つまたは複数の通信路を介して、前記複数の同一の人工知能処理ダイのうちの他の人工知能処理ダイに通信可能に連結され、
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、ニューラルネットワークの少なくとも１つの層に対応する、人工知能処理ユニット。
【請求項２】
前記１つまたは複数の通信路は等しい長さである、請求項１に記載の人工知能処理ユニット。
【請求項３】
前記複数の同一の人工知能処理ダイのうち第１の人工知能処理ダイは、前記複数の同一の人工知能処理ダイのうち第２の人工知能処理ダイに隣接して位置しており、前記第２の人工知能処理ダイの向きは前記第１の人工知能処理ダイの向きから１８０度ずれている、請求項１または２に記載の人工知能処理ユニット。
【請求項４】
前記複数の同一の人工知能処理ダイのうち第１の人工知能処理ダイは、前記複数の同一の人工知能処理ダイのうち第２の人工知能処理ダイに隣接して位置しており、前記第２の人工知能処理ダイの向きは前記第１の人工知能処理ダイの向きと同じである、請求項１または２に記載の人工知能処理ユニット。
【請求項５】
前記複数の同一の人工知能処理ダイは順番に配列され、少なくとも１つの人工知能処理ダイは、前記順番において記少なくとも１つの人工知能処理ダイよりも前の位置に配列された他の人工知能処理ダイに、データを入力として送信するように構成されている、請求項１または２に記載の人工知能処理ユニット。
【請求項６】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、データを受信し、受信された前記データを用いてＡＩ計算を行うように構成されている、請求項１〜５のいずれかに記載の人工知能処理ユニット。
【請求項７】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、シストリックアレイで構成され、前記シストリックアレイを用いて前記ＡＩ計算を行う、請求項６に記載の人工知能処理ユニット。
【請求項８】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記ダイ間入力ブロックと異なる少なくとも１つのホストインターフェース入力ブロックと、前記ダイ間出力ブロックと異なる少なくとも１つのホストインターフェース出力ブロックとを含む、請求項１〜７のいずれかに記載の人工知能処理ユニット。
【請求項９】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、前記ホストインターフェース入力ブロックを介してコプロセシングユニットからデータを受信し、前記ホストインターフェース出力ブロックを介してデータをコプロセシングユニットに送信するように構成されている、請求項８に記載の人工知能処理ユニット。
【請求項１０】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくとも１つの乗算累算ユニット（ＭＡＣユニット）を含む、請求項１〜９のいずれかに記載の人工知能処理ユニット。
【請求項１１】
前記複数の同一の人工知能処理ダイの各人工知能処理ダイは、少なくともメモリを含む、請求項１〜１０のいずれかに記載の人工知能処理ユニット。
【請求項１２】
方法であって、
人工知能処理ユニットの第１の人工知能処理ダイにおいて、ニューラルネットワークに関連する第１の集合のデータを受信することを備え、前記第１の人工知能処理ダイは、前記ニューラルネットワークの層に関連付けられており、前記方法はさらに、
前記第１の人工知能処理ダイにおいて、前記ニューラルネットワークに関連する前記第１の集合のデータを用いて、前記第１の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連する第１の集合のＡＩ計算を行うことと、
前記人工知能処理ユニットの第２の人工知能処理ダイに、前記第１の人工知能処理ダイにおいて行われた前記第１の集合のＡＩ計算の結果データを送信することとを備え、前記第２の人工知能処理ダイは、前記第１の人工知能処理ダイからの前記ニューラルネットワークの異なる層と関連付けられている、方法。
【請求項１３】
前記第１の人工知能処理ダイは、前記ニューラルネットワークの入力層と関連付けられている、請求項１２に記載の方法。
【請求項１４】
前記第２の人工知能処理ダイにおいて、前記第１の人工知能処理ダイにおいて行われた計算の前記結果データを用いて、前記第２の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連するＡＩ計算を行うことと、
前記第２の人工知能処理ダイにおいて行われた前記ＡＩ計算の結果データを、フィードバックとして前記第１の人工知能処理ダイに送信することとをさらに備える、請求項１２または１３に記載の方法。
【請求項１５】
前記第１の人工知能処理ダイと前記第２の人工知能処理ダイとは順番に配列されており、前記第１の人工知能処理ダイは、前記順番において前記第２の人工知能処理ダイよりも前の位置に配列されている、請求項１４に記載の方法。
【請求項１６】
前記第１の人工知能処理ダイにおいて、前記第２の人工知能処理ダイからフィードバックとして受信された結果データと前記ニューラルネットワークに関連する前記第１の集合のデータとを用いて、前記第１の人工知能処理ダイと関連付けられた前記ニューラルネットワークの前記層に関連する第２の集合のＡＩ計算を行うことと、
前記第２の集合のＡＩ計算の結果データを前記第２の人工知能処理ダイに送信することとをさらに備える、請求項１４に記載の方法。
【請求項１７】
前記第２の人工知能処理ダイは、前記ニューラルネットワークの出力層と関連付けられている、請求項１２〜１６のいずれかに記載の方法。
【請求項１８】
前記第２の人工知能処理ダイにおいて、前記第１の人工知能処理ダイにおいて行われた前記計算の前記結果データを用いて、前記ニューラルネットワークの出力層に関連するＡＩ計算を行うことと、
前記第２の人工知能処理ダイにおいて行われた前記ＡＩ計算の結果データを、前記人工知能処理ユニットに通信可能に連結されたコプロセシングユニットに送信することとをさらに備える、請求項１６に記載の方法。
【請求項１９】
前記第１の人工知能処理ダイと前記第２の人工知能処理ダイとは、少なくとも１つの乗算累算ユニット（ＭＡＣユニット）を含む、請求項１２〜１８のいずれかに記載の方法。
【請求項２０】
前記第１の人工知能処理ダイおよび前記第２の人工知能処理ダイは、メモリを含む、請求項１２〜１９のいずれかに記載の方法。
【国際調査報告】
2021504770.tif 000013
2021504770.tif 000014
2021504770.tif 000015