IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ リベリオンズ インコーポレイテッドの特許一覧

特表2024-545088ニューラルプロセッシング装置およびその同期化方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-05
(54)【発明の名称】ニューラルプロセッシング装置およびその同期化方法
(51)【国際特許分類】
   G06N 3/063 20230101AFI20241128BHJP
【FI】
G06N3/063
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024533970
(86)(22)【出願日】2021-12-30
(85)【翻訳文提出日】2024-06-06
(86)【国際出願番号】 KR2021020253
(87)【国際公開番号】W WO2023128009
(87)【国際公開日】2023-07-06
(81)【指定国・地域】
(71)【出願人】
【識別番号】522431896
【氏名又は名称】リベリオンズ インコーポレイテッド
【氏名又は名称原語表記】REBELLIONS INC.
(74)【代理人】
【識別番号】100121728
【弁理士】
【氏名又は名称】井関 勝守
(74)【代理人】
【識別番号】100165803
【弁理士】
【氏名又は名称】金子 修平
(74)【代理人】
【識別番号】100179648
【弁理士】
【氏名又は名称】田中 咲江
(74)【代理人】
【識別番号】100222885
【弁理士】
【氏名又は名称】早川 康
(74)【代理人】
【識別番号】100140338
【弁理士】
【氏名又は名称】竹内 直樹
(74)【代理人】
【識別番号】100227695
【弁理士】
【氏名又は名称】有川 智章
(74)【代理人】
【識別番号】100170896
【弁理士】
【氏名又は名称】寺薗 健一
(74)【代理人】
【識別番号】100219313
【弁理士】
【氏名又は名称】米口 麻子
(74)【代理人】
【識別番号】100161610
【弁理士】
【氏名又は名称】藤野 香子
(74)【代理人】
【識別番号】100206586
【弁理士】
【氏名又は名称】市田 哲
(72)【発明者】
【氏名】オ ジンウク
(72)【発明者】
【氏名】キム ジンソク
(72)【発明者】
【氏名】ボン ギョンリョル
(72)【発明者】
【氏名】シン ウォンギュ
(72)【発明者】
【氏名】ユ チャンホ
(57)【要約】
本発明は、ニューラルプロセッシング装置およびその同期化方法に関するものである。
該ニューラルプロセッシング装置は、第1および第2ニューラルプロセッサと、前記第1および第2ニューラルプロセッサが共有する共有メモリと、前記第1および第2ニューラルプロセッサにそれぞれ対応し、L3シンクターゲットを受信して保存する第1および第2セマフォメモリとして、前記L3シンクターゲットにより前記第1および第2ニューラルプロセッサの同期化が実行される第1および第2セマフォメモリと、前記第1および第2ニューラルプロセッサと前記共有メモリとを接続し、前記L3シンクターゲットによる同期化信号が伝送されるL3シンクチャネルを含むグローバルインターコネクションと、を含む。
【選択図】図20
【特許請求の範囲】
【請求項1】
第1および第2ニューラルプロセッサと、
前記第1および第2ニューラルプロセッサが共有する共有メモリと、
前記第1および第2ニューラルプロセッサのそれぞれに対応し、L3シンクターゲットを受信して保存する第1および第2セマフォメモリとして、前記L3シンクターゲットにより前記第1および第2ニューラルプロセッサの同期化が実行される第1および第2セマフォメモリと、
前記第1および第2ニューラルプロセッサと前記共有メモリとを接続し、前記L3シンクターゲットによる同期化信号が伝送されるL3シンクチャネルを含むグローバルインターコネクションと、を含む、
ニューラルプロセッシング装置。
【請求項2】
前記グローバルインターコネクションは、
前記L3シンクチャネルと、
前記共有メモリと前記第1および第2ニューラルプロセッサとの間でデータを伝送するデータチャネルと、
前記第1および第2ニューラルプロセッサに制御信号を伝送するコントロールチャンネルと、を含む、
請求項1に記載のニューラルプロセッシング装置。
【請求項3】
前記第1セマフォメモリは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2フィールドを含む、
請求項1に記載のニューラルプロセッシング装置。
【請求項4】
前記第1フィールドの値を、前記第1ニューラルプロセッサに順次伝達する第1FIFOバッファーをさらに含む、
請求項3に記載のニューラルプロセッシング装置。
【請求項5】
前記L3シンクターゲットは、第1および第2L3シンクターゲットを含み、前記第1ニューラルプロセッサは、前記第1L3シンクターゲットを生成し、
前記第2ニューラルプロセッサは、前記第2L3シンクターゲットを生成する、
請求項1に記載のニューラルプロセッシング装置。
【請求項6】
前記L3シンクターゲットは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2シンクターゲットフィールドを含み、
前記第1および第2シンクターゲットフィールドは、前記第1および第2ニューラルプロセッサが、前記L3シンクターゲットによる同期化信号を受信するかに関する情報を含む、
請求項1に記載のニューラルプロセッシング装置。
【請求項7】
前記第1および第2シンクターゲットフィールドは、前記第1および第2ニューラルプロセッサそれぞれの仮想ID順に整列される、
請求項6に記載のニューラルプロセッシング装置。
【請求項8】
前記第1ニューラルプロセッサは、前記L3シンクターゲットとVPIDテーブルとを用いて、前記L3シンクターゲットによる同期化信号を受信するニューラルプロセッサの物理IDを識別し、
前記VPIDテーブルは、前記仮想IDと前記物理IDとを変換するための情報を含む、
請求項7に記載のニューラルプロセッシング装置。
【請求項9】
前記L3シンクターゲットは、命令語集合構造(Instruction set architecture、ISA)に含まれる、
請求項1に記載のニューラルプロセッシング装置。
【請求項10】
前記ニューラルプロセッサは、
少なくとも1つのニューラルコアと、
前記少なくとも1つのニューラルコア間でデータを伝送するローカルインターコネクションと、を含む、
請求項1に記載のニューラルプロセッシング装置。
【請求項11】
前記ニューラルプロセッサは、
前記少なくとも1つのニューラルコア間の同期化を実行するためのL2シンクターゲットによる同期化信号が伝送されるL2シンクパスをさらに含む、
請求項10に記載のニューラルプロセッシング装置。
【請求項12】
前記少なくとも1つのニューラルコアそれぞれは、
入力アクティベーションおよびウェイトを受信してディープラーニング演算を実行し、出力アクティベーションを出力するプロセスユニットと、
前記入力アクティベーション、前記ウェイトおよび前記出力アクティベーションを一時的に保存するローカルメモリと、を含む、
請求項10に記載のニューラルプロセッシング装置。
【請求項13】
少なくとも1つのニューラルプロセッサと、
共有メモリと、
前記少なくとも1つのニューラルプロセッサと前記共有メモリとを接続し、前記ニューラルプロセッサのL3同期化に使用されるグローバルインターコネクションと、を含み、
前記ニューラルプロセッサは、
少なくとも1つのニューラルコアと、
前記少なくとも1つのニューラルコアを接続するローカルインターコネクションと、
前記少なくとも1つのニューラルコアのL2同期化に使用されるL2シンクパスと、を含み、
前記ニューラルコアは、
演算作業を実行するプロセスユニットと、
データを一時的に保存するローカルメモリと、
前記ローカルメモリと前記プロセスユニットとのL1同期化に使用されるL1シンクパスと、を含む、
ニューラルプロセッシング装置。
【請求項14】
前記グローバルインターコネクションは、
前記少なくとも1つのニューラルプロセッサと前記共有メモリとの間のデータを伝送するデータチャネルと、
前記少なくとも1つのニューラルプロセッサ間の制御信号を伝送するコントロールチャンネルと、
前記L3同期化に使用されるL3シンクチャネルと、を含む、
請求項13に記載のニューラルプロセッシング装置。
【請求項15】
前記ニューラルプロセッサは、
前記少なくとも1つのニューラルコア間のデータを伝送するローカルインターコネクションをさらに含む、
請求項13に記載のニューラルプロセッシング装置。
【請求項16】
前記ローカルメモリと、前記プロセスユニットを含む要素とのデータ交換に使用されるデータパスを含む、
請求項13に記載のニューラルプロセッシング装置。
【請求項17】
前記少なくとも1つのニューラルプロセッサは、第1および第2ニューラルプロセッサを含み、
前記第1および第2ニューラルプロセッサのそれぞれに対応し、前記L3シンクターゲットに対応する同期化信号を受信して保存する第1および第2セマフォメモリとして、前記第1および第2セマフォメモリの値によって前記第1および第2ニューラルプロセッサの同期化が実行される第1および第2セマフォメモリをさらに含む、
請求項13に記載のニューラルプロセッシング装置。
【請求項18】
前記第1セマフォメモリは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2フィールドを含み、
前記第1フィールドの値を前記第1ニューラルプロセッサに順次伝達する第1FIFOバッファーをさらに含む、
請求項17に記載のニューラルプロセッシング装置。
【請求項19】
前記第1ニューラルプロセッサは、命令語集合構造を伝送し、
前記命令語集合構造は、オペレーションコードと、前記L3同期化のためのL3シンクターゲットと、前記L2同期化のためのL2シンクターゲットと、前記L1同期化のためのL1シンクターゲットと、を含む、
請求項17に記載のニューラルプロセッシング装置。
【請求項20】
第1および第2ニューラルプロセッサを含むニューラルプロセッシング装置の同期化方法において、
前記第1ニューラルプロセッサが、L3同期化に対するL3シンクターゲットを生成し、前記L3シンクターゲットは、前記第1および第2ニューラルプロセッサの仮想ID順に整列され、
前記L3シンクターゲットとVPIDテーブルを用いて前記第2ニューラルプロセッサの物理IDを識別するが、前記VPIDテーブルは、ニューラルプロセッサの前記仮想IDと前記物理IDとの変換テーブルであり、
グローバルインターコネクションのL3シンクチャネルを介して、前記第2ニューラルプロセッサの第1セマフォメモリに前記L3シンクターゲットによる同期化信号を保存し、
前記第2ニューラルプロセッサが、前記第1セマフォメモリの値によりL3同期化を実行することを含む、
ニューラルプロセッシング装置の同期化方法。
【請求項21】
前記第1セマフォメモリは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2フィールドを含む、
請求項20に記載のニューラルプロセッシング装置の同期化方法。
【請求項22】
前記L3同期化を実行することは、
前記第1フィールドの値をFIFO方式で前記第2ニューラルプロセッサに提供し、
前記第2フィールドの値をFIFO方式で前記第2ニューラルプロセッサに提供することを含む、
請求項21に記載のニューラルプロセッシング装置の同期化方法。
【請求項23】
前記仮想IDは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2仮想IDを含む、
請求項20に記載のニューラルプロセッシング装置の同期化方法。
【請求項24】
前記第1ニューラルプロセッサは、
第1および第2ニューラルコアと、
前記第1および第2ニューラルコア間のデータを伝送するローカルインターコネクションと、
前記第1および第2ニューラルコア間のL2シンクターゲットによる同期化信号を伝送するL2シンクパスと、を含む、
請求項20に記載のニューラルプロセッシング装置の同期化方法。
【請求項25】
前記第1ニューラルコアは、
第1入力アクティベーションおよび第1ウェイトを受信してディープラーニング演算を実行し、第1出力アクティベーションを出力する第1プロセスユニットと、
前記第1入力アクティベーション、前記第1ウェイトおよび前記第1出力アクティベーションを一時的に保存する第1ローカルメモリと、
前記第1ローカルメモリと前記第1プロセスユニットとの間で、L1シンクターゲットによる同期化信号を伝送する第1L1シンクパスと、を含み、
前記第2ニューラルコアは、
第2入力アクティベーションおよび第2ウェイトを受信してディープラーニング演算を実行し、第2出力アクティベーションを出力する第2プロセスユニットと、
前記第2入力アクティベーション、前記第2ウェイトおよび前記第2出力アクティベーションを一時的に保存する第2ローカルメモリと、
前記第2ローカルメモリと前記第2プロセスユニットとの間で、前記L1シンクターゲットによる同期化信号を伝送する第2L1シンクパスと、を含む、
請求項24に記載のニューラルプロセッシング装置の同期化方法。
【請求項26】
前記第1ローカルメモリにデータを保存し、
前記第1ニューラルコアの内部で、前記第1L1シンクパスを介して、前記L1シンクターゲットによる同期化信号を伝送し、
前記第1ニューラルコアが、前記第2L2シンクパスを介して、前記L2シンクターゲットによる同期化信号を前記第2ニューラルコアに伝送し、
前記第2ニューラルコアが、前記ローカルインターコネクションを介してデータを受信することをさらに含む、
請求項25に記載のニューラルプロセッシング装置の同期化方法。
【請求項27】
第1および第2ニューラルコアと、前記第1および第2ニューラルコアを接続するローカルインターコネクションと、前記第1および第2ニューラルコアのL2同期化に使用されるL2シンクパスと、を含むニューラルプロセッシング装置であって、
前記第1ニューラルコアは、演算作業を実行する第1プロセスユニットと、前記第1プロセスユニットに入出力されるデータを一時的に保存する第1ローカルメモリと、前記第1ローカルメモリおよび前記第1プロセスユニットのL1同期化に使用される第1L1シンクパスと、を含み、
前記第2ニューラルコアは、演算作業を実行する第2プロセスユニットと、前記第2プロセスユニットに入出力されるデータを一時的に保存する第2ローカルメモリと、前記第2ローカルメモリおよび前記第2プロセスユニットのL1同期化に使用される第2L1シンクパスと、を含む、ニューラルプロセッシング装置の同期化方法において、
前記第1ローカルメモリにデータを保存し、
前記第1ニューラルコア内部で、前記第1L1シンクパスを介して前記L1シンクターゲットによる同期化信号を伝送し、
前記第1ニューラルコアが、前記第2L2シンクパスを介して前記L2シンクターゲットによる同期化信号を前記第2ニューラルコアに伝送し、
前記第2ニューラルコアが、前記ローカルインターコネクションを介してデータを受信することをさらに含む、
ニューラルプロセッシング装置の同期化方法。
【請求項28】
前記第1ニューラルコアは、前記第1ローカルメモリと前記第1ローカルインターコネクションとの間でデータを移動させる第1LSUをさらに含み、
前記第1LSUは、前記第1ローカルメモリの保存を実行する第1ローカルメモリストアユニットと、前記第1ニューラルコアから外部への保存を実行する第1ニューラルコアストアユニットと、を含み、
前記第1ニューラルコア内部において、前記第1L1シンクパスを介して前記L1シンクターゲットによる同期化信号を伝送することは、
前記第1ローカルメモリストアユニットが、前記L1シンクターゲットによる同期化信号を前記第1ニューラルコアストアユニットに伝送することを含む、
請求項27に記載のニューラルプロセッシング装置の同期化方法。
【請求項29】
前記第2ニューラルコアは、前記第2ローカルメモリと前記第2ローカルインターコネクションとの間でデータを移動させる第2LSUをさらに含み、
前記第2LSUは、前記第2ニューラルコアで外部からのロードを実行する第2ニューラルコアロードユニットを含み、
前記L2シンクターゲットによる同期化信号を伝送することは、
前記第1ニューラルコアストアユニットが、前記L2シンクターゲットによる同期化信号を前記第2ニューラルコアロードユニットに伝送することを含む、
請求項28に記載のニューラルプロセッシング装置の同期化方法。
【請求項30】
前記ニューラルプロセッシング装置は、前記第1および第2ニューラルコアと、前記ローカルインターコネクションと、前記L2シンクパスとを含む第1ニューラルプロセッサと、前記第1ニューラルプロセッサとは異なる第2ニューラルプロセッサと、前記第1および第2ニューラルプロセッサ間でデータを伝送するグローバルインターコネクションと、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2セマフォメモリと、を含み、
前記グローバルインターコネクションは、前記第1および第2ニューラルプロセッサ間で、データ、制御信号およびL3シンクターゲットによる同期化信号がそれぞれ伝送されるデータチャネルと、コントロールチャンネルと、L3シンクチャネルと、を含み、
前記第1ニューラルプロセッサが、前記L3シンクターゲットを生成し、
前記第2セマフォメモリに前記L3シンクターゲットによる同期化信号を保存し、
前記第2ニューラルプロセッサが、前記第2セマフォメモリの値により同期化を実行することを含む、
請求項27に記載のニューラルプロセッシング装置の同期化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルプロセッシング装置およびその同期化方法に関するものである。具体的に、本発明は、中央制御プロセッサの代わりに、各々のプロセッサが同期化を実行するニューラルプロセッシング装置およびその同期化方法に関するものである。
【背景技術】
【0002】
ここ数年、人工知能(Artificial Intelligence)技術は、第4次産業革命の中核技術として、世界的に最も有望な技術として注目されている。このような人工知能技術の最も大きな問題は、コンピューティング性能である。人間の学習能力と推論能力、知覚能力、自然言語の処理能力などを実現する人工知能技術は、多くのデータを迅速に処理することが最も重要である。
【0003】
初期人工知能のディープラーニング学習と推論には、従来のコンピュータの中央処理装置(CPU;Central processing unit)やグラフィック処理装置(GPU;Graphics Processing Unit)が使われていたが、高いワークロードを有するディープラーニング学習および推論の作業には限界があるため、構造的にディープラーニング作業に特化したニューラルプロセッシング装置(NPU; Neural Processing Unit)が脚光を浴びている。
【0004】
このようなニューラルプロセッシング装置は、内部に多数のプロセスユニットとコアを含んでおり、このようなモジュールの同期化は、作業の依存性(dependency)に応じて明確に処理されるべき部分である。従来の処理装置は、中央で制御プロセッサ(Control processorまたはCentralized Controller)がこのような同期化信号を制御し、手順による動作を管理していた。
【0005】
しかし、このような方式は、ニューラルプロセッシング装置において、さらに多くのプロセスユニットおよびコアを含むこととなるにつれ、同期化処理に多くのレイテンシ(latency)が発生し、制御プロセッサのオーバーヘッドが高くなり得る。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】韓国登録特許第10-2258566号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の課題は、迅速かつ効率的な同期化処理が可能なニューラルプロセッシング装置を提供することである。
【0008】
また、本発明の他の課題は、迅速かつ効率的な同期化処理が可能なニューラルプロセッシング装置の同期化方法を提供することである。
【0009】
本発明の目的は、前記で述べた目的に限定されず、言及されていない本発明の他の目的および利点は、以下の説明によって理解されることができ、本発明の実施例によって、より明確に理解されることである。また、本発明の目的および利点は、特許請求の範囲に示した手段およびその組み合わせにより実現できることが容易に分かることである。
【課題を解決するための手段】
【0010】
前記課題を解決するための本発明のいくつかの実施例によるニューラルプロセッシング装置は、第1および第2ニューラルプロセッサと、前記第1および第2ニューラルプロセッサが共有する共有メモリと、前記第1および第2ニューラルプロセッサのそれぞれに対応し、L3シンクターゲットを受信して保存する第1および第2セマフォ(Semaphore)メモリとして、前記L3シンクターゲットにより前記第1および第2ニューラルプロセッサの同期化が実行される第1および第2セマフォメモリと、前記第1および第2ニューラルプロセッサと前記共有メモリとを接続し、前記L3シンクターゲットによる同期化信号が伝送されるL3シンクチャネルを含むグローバルインターコネクションとを含む。
【0011】
また、前記グローバルインターコネクションは、前記L3シンクチャネルと、前記共有メモリ、前記第1および第2ニューラルプロセッサ間でデータを伝送するデータチャネルと、前記第1および第2ニューラルプロセッサに制御信号を伝送するコントロールチャンネルとを含み得る。
【0012】
また、前記第1セマフォメモリは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2フィールドを含み得る。
【0013】
また、前記第1フィールドの値を前記第1ニューラルプロセッサに順次伝達する第1FIFOバッファーをさらに含み得る。
【0014】
また、前記第2フィールドの値を前記第1ニューラルプロセッサに順次伝達する第2FIFOバッファーをさらに含み得る。
【0015】
また、前記L3シンクターゲットは、第1および第2L3シンクターゲットを含み、前記第1ニューラルプロセッサは、前記第1L3シンクターゲットを生成し、前記第2ニューラルプロセッサは、前記第2L3シンクターゲットを生成し得る。
【0016】
また、前記L3シンクターゲットは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2シンクターゲットフィールドを含み、前記第1および第2シンクターゲットフィールドは、前記第1および第2ニューラルプロセッサが前記L3シンクターゲットによる同期化信号を受信するかに関する情報を含み得る。
【0017】
また、前記第1および第2シンクターゲットフィールドは、前記第1および第2ニューラルプロセッサそれぞれの仮想ID順に整列され得る。
【0018】
また、前記第1ニューラルプロセッサは、前記L3シンクターゲットとVPIDテーブルとを用いて、前記L3シンクターゲットによる同期化信号を受信するニューラルプロセッサの物理IDを識別し、前記VPIDテーブルは、前記仮想IDと前記物理IDとを変換するための情報を含み得る。
【0019】
また、前記第1および第2ニューラルプロセッサが同じプログラムを実行する場合、前記第1および第2ニューラルプロセッサの前記物理IDと、前記第1および第2ニューラルプロセッサの前記仮想IDとは、互いに1:1で対応し得る。
【0020】
また、前記L3シンクターゲットは、命令語集合構造(Instruction set architecture、ISA)に含まれ得る。
【0021】
また、前記ニューラルプロセッサは、少なくとも1つのニューラルコアと、前記少なくとも1つのニューラルコア間でデータを伝送するローカルインターコネクションとを含み得る。
【0022】
また、前記ニューラルプロセッサは、前記少なくとも1つのニューラルコア間の同期化を実行するためのL2シンクターゲットによる同期化信号が伝送されるL2シンクパスをさらに含み得る。
【0023】
また、前記L2シンクターゲットは、前記命令語集合構造に含まれ得る。
【0024】
また、前記少なくとも1つのニューラルコアそれぞれは、入力アクティベーションおよびウェイトを受信してディープラーニング演算を実行し、出力アクティベーションを出力するプロセスユニットと、前記入力アクティベーション、前記ウェイト、および前記出力アクティベーションを一時的に保存するローカルメモリとを含み得る。
【0025】
また、前記少なくとも1つのニューラルコアそれぞれは、前記入力アクティベーションおよび前記出力アクティベーションを、前記プロセスユニットと前記ローカルメモリとの間で一時的に保存するアクティベーションバッファーをさらに含み得る。
【0026】
また、前記少なくとも1つのニューラルコアそれぞれは、前記アクティベーションバッファーと前記ローカルメモリとの間で、前記入力アクティベーションおよび前記出力アクティベーションを移動させるアクティベーションLSU(Load/Store Unit)をさらに含み得る。
【0027】
また、前記少なくとも1つのニューラルコアそれぞれは、前記ローカルメモリと前記プロセスユニットとの間で前記ウェイトを一時的に保存するウェイトバッファーをさらに含み得る。
【0028】
また、前記少なくとも1つのニューラルコアそれぞれは、前記ローカルメモリと前記ローカルインターコネクションとの間でデータを移動させるLSUをさらに含み得る。
【0029】
また、前記LSUは、前記ローカルメモリの保存を実行するローカルメモリストアユニットと、前記ローカルメモリのロードを実行するローカルメモリロードユニットとを含み得る。
【0030】
また、前記LSUは、前記ニューラルコアで外部への保存を実行するニューラルコアストアユニットと、前記ニューラルコアで外部からのロードを実行するニューラルコアロードユニットとを含み得る。
【0031】
また、前記ローカルメモリと他の要素(element)との間に、同期化のためのL1シンクターゲットによる同期化信号が伝送されるL1シンクパスをさらに含み得る。
【0032】
また、前記L1シンクターゲットは、前記命令語集合構造に含まれ得る。
【0033】
また、前記プロセスユニットは、2次元演算を実行する処理要素アレイと、1次元演算を実行するベクトルユニットとを含み得る。
【0034】
また、前記プロセスユニットは、第1入力を前記処理要素アレイの各行(raw)に供給する行レジスタと、第2入力を受信して前記処理要素アレイの各列(column)に供給する列レジスタとをさらに含み、前記第1および第2入力は、それぞれウェイトおよび入力アクティベーションのいずれか1つを含み得る。
【0035】
前記他の課題を解決するための本発明のいくつかの実施例によるニューラルプロセッシング装置は、少なくとも1つのニューラルプロセッサと、共有メモリと、前記少なくとも1つのニューラルプロセッサと前記共有メモリとを接続し、前記ニューラルプロセッサのL3同期化に使用されるグローバルインターコネクションとを含み、前記ニューラルプロセッサは、少なくとも1つのニューラルコアと、前記少なくとも1つのニューラルコアを接続するローカルインターコネクションと、前記少なくとも1つのニューラルコアのL2同期化に使用されるL2シンクパスとを含み、前記ニューラルコアは、演算作業を実行するプロセスユニットと、データを一時的に保存するローカルメモリと、前記ローカルメモリと前記プロセスユニットとのL1同期化に使用されるL1シンクパスとを含む。
【0036】
また、前記グローバルインターコネクションは、前記少なくとも1つのニューラルプロセッサおよび前記共有メモリ間のデータを伝送するデータチャネルと、前記少なくとも1つのニューラルプロセッサ間の制御信号を伝送するコントロールチャンネルと、前記L3同期化に使用されるL3シンクチャネルとを含み得る。
【0037】
また、前記ニューラルプロセッサは、前記少なくとも1つのニューラルコア間のデータを伝送するローカルインターコネクションをさらに含み得る。
【0038】
また、前記ローカルメモリと前記プロセスユニットとを含む要素とのデータ交換に使用されるデータパスとを含み得る。
【0039】
また、前記プロセスユニットは、2次元演算を実行する処理要素アレイと、1次元演算を実行するベクトルユニットとを含み得る。
【0040】
また、前記処理要素アレイは、行と列で整列された複数の処理要素を含み、前記複数の処理要素はそれぞれ乗算を実行し得る。
【0041】
また、前記少なくとも1つのニューラルプロセッサは、第1および第2ニューラルプロセッサを含み、前記第1および第2ニューラルプロセッサそれぞれに対応し、L3シンクターゲットに対応する同期化信号を受信して保存する第1および第2セマフォメモリとして、前記L3シンクターゲットにより前記第1および第2ニューラルプロセッサの同期化が実行される第1および第2セマフォメモリをさらに含み得る。
【0042】
また、前記第1セマフォメモリは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2フィールドを含み、前記第1フィールドの値を前記第1ニューラルプロセッサに順次伝達する第1FIFOバッファーをさらに含み得る。
【0043】
また、前記第1ニューラルプロセッサは命令語集合構造を伝送し、前記命令語集合構造は、オペレーションコードと、前記L3同期化のためのL3シンクターゲットと、前記L2同期化のためのL2シンクターゲットと、前記L1同期化のためのL1シンクターゲットとを含み得る。
【0044】
前記また他の課題を解決するための本発明のいくつかの実施例によるニューラルプロセッシング装置の同期化方法は、第1および第2ニューラルプロセッサを含むニューラルプロセッシング装置の同期化方法において、前記第1ニューラルプロセッサが、L3同期化に対するL3シンクターゲットを生成し、前記L3シンクターゲットは、前記第1および第2ニューラルプロセッサの仮想ID順に整列され、前記L3シンクターゲットとVPIDテーブルを用いて前記第2ニューラルプロセッサの物理IDを識別するが、前記VPIDテーブルは、前記ニューラルプロセッサの前記仮想IDと前記物理IDとの変換テーブルであり、グローバルインターコネクションのL3シンクチャネルを介して、前記第2ニューラルプロセッサの第1セマフォメモリに前記L3シンクターゲットによる同期化信号を保存し、前記第2ニューラルプロセッサが前記第1セマフォメモリの値により前記L3同期化を実行することを含む。
【0045】
また、前記第1セマフォメモリは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2フィールドを含み得る。
【0046】
また、前記L3同期化を実行することは、前記第1フィールドの値をFIFO方式で前記第2ニューラルプロセッサに提供し、前記第2フィールドの値をFIFO方式で前記第2ニューラルプロセッサに提供することを含み得る。
【0047】
また、前記仮想IDは、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2仮想IDを含み得る。
【0048】
また、前記第1ニューラルプロセッサは、第1および第2ニューラルコアと、前記第1および第2ニューラルコア間のデータを伝送するローカルインターコネクションと、前記第1および第2ニューラルコア間の同期化信号のためのL2シンクターゲットによる同期化信号を伝送するL2シンクパスとを含み得る。
【0049】
また、前記第1ニューラルコアは、第1入力アクティベーションおよび第1ウェイトを受信してディープラーニング演算を実行し、第1出力アクティベーションを出力する第1プロセスユニットと、前記第1入力アクティベーション、前記第1ウェイトおよび前記第1出力アクティベーションを一時的に保存する第1ローカルメモリと、前記第1ローカルメモリと前記第1プロセスユニットとの間の同期化のためのL1シンクターゲットによる同期化信号を伝送する第1L1シンクパスとを含み、前記第2ニューラルコアは、第2入力アクティベーションおよび第2ウェイトを受信してディープラーニング演算を実行し、第2出力アクティベーションを出力する第2プロセスユニットと、前記第2入力アクティベーション、前記第2ウェイトおよび前記第2出力アクティベーションを一時的に保存する第2ローカルメモリと、前記第2ローカルメモリと前記第2プロセスユニットとの間の同期化のための前記L1シンクターゲットによる同期化信号を伝送する第2L1シンクパスとを含み得る。
【0050】
また、前記第1ローカルメモリにデータを保存し、前記第1ニューラルコアの内部で、前記第1L1シンクパスを介して前記L1シンクターゲットによる同期化信号を伝送し、前記第1ニューラルコアが前記第2L2シンクパスを介して前記L2シンクターゲットによる同期化信号を前記第2ニューラルコアに伝送し、前記第2ニューラルコアが前記ローカルインターコネクションを介してデータを受信することをさらに含み得る。
【0051】
また、前記第1ニューラルコアは、前記第1ローカルメモリと前記第1ローカルインターコネクションとの間でデータを移動させる第1LSUをさらに含み、前記第2ニューラルコアは、前記第2ローカルメモリと前記第2ローカルインターコネクションとの間でデータを移動させる第2LSUをさらに含み得る。
【0052】
また、前記第1LSUは、前記第1ローカルメモリの保存を実行する第1ローカルメモリストアユニットと、前記第1ローカルメモリのロードを実行する第1ローカルメモリロードユニットと、前記第1ニューラルコアで外部への保存を実行する第1ニューラルコアストアユニットと、前記第1ニューラルコアで外部からのロードを実行する第1ニューラルコアロードユニットとを含み得る。
【0053】
また、前記第1ニューラルコア内部において、前記第1L1シンクパスを介して前記L1シンクターゲットによる同期化信号を伝送することは、前記第1ローカルメモリストアユニットが前記L1シンクターゲットを前記第1ニューラルコアストアユニットに伝送することを含み得る。
【0054】
また、前記第2LSUは、前記第2ローカルメモリの保存を実行する第2ローカルメモリストアユニットと、前記第2ローカルメモリのロードを実行する第2ローカルメモリロードユニットと、前記第2ニューラルコアから外部への保存を実行する第2ニューラルコアストアユニットと、前記第2ニューラルコアで外部からのロードを実行する第2ニューラルコアロードユニットとを含み得る。
【0055】
また、前記L2シンクターゲットによる同期化信号を伝送することは、前記第1ニューラルコアストアユニットが、前記L2シンクターゲットによる同期化信号を前記第2ニューラルコアロードユニットに伝送することを含み得る。
【0056】
また、前記第2ニューラルコアがデータを受信することは、前記第2ニューラルコアロードユニットが前記ローカルインターコネクションを介して前記第1ローカルメモリに前記データを要求し、前記第2ニューラルコアロードユニットが前記ローカルインターコネクションを介して前記第1ローカルメモリから前記データを受信することを含み得る。
【0057】
前記また他の課題を解決するための本発明のいくつかの実施例によるニューラルプロセッシング装置の同期化方法は、第1および第2ニューラルコアと、前記第1および第2ニューラルコアを接続するローカルインターコネクションと、前記第1および第2ニューラルコアのL2同期化に使用されるL2シンクパスとを含むニューラルプロセッシング装置であって、前記第1ニューラルコアは、演算作業を実行する第1プロセスユニットと、前記第1プロセスユニットに入出力されるデータを一時的に保存する第1ローカルメモリと、前記第1ローカルメモリおよび前記第1プロセスユニットのL1同期化に使用される第1L1シンクパスとを含み、前記第2ニューラルコアは、演算作業を実行する第2プロセスユニットと、前記第2プロセスユニットに入出力されるデータを一時的に保存する第2ローカルメモリと、前記第2ローカルメモリおよび前記第2プロセスユニットのL1同期化に使用される第2L1シンクパスとを含む、ニューラルプロセッシング装置の同期化方法において、前記第1ローカルメモリにデータを保存し、前記第1ニューラルコア内部で、前記第1L1シンクパスを介して前記L1シンクターゲットによる同期化信号を伝送し、前記第1ニューラルコアが、前記第2L2シンクパスを介して前記L2シンクターゲットによる同期化信号を前記第2ニューラルコアに伝送し、前記第2ニューラルコアが、前記ローカルインターコネクションを介してデータを受信することをさらに含む。
【0058】
また、前記第1ニューラルコアは、前記第1ローカルメモリと前記第1ローカルインターコネクションとの間でデータを移動させる第1LSUをさらに含み、前記第1LSUは、前記第1ローカルメモリの保存を実行する第1ローカルメモリストアユニットと、前記第1ニューラルコアで外部への保存を実行する第1ニューラルコアストアユニットとを含み、前記第1ニューラルコア内部で、前記第1L1シンクパスを介して前記L1シンクターゲットによる同期化信号を伝送することは、前記第1ローカルメモリストアユニットが前記L1シンクターゲットによる同期化信号を前記第1ニューラルコアストアユニットに伝送することを含み得る。
【0059】
また、前記第2ニューラルコアは、前記第2ローカルメモリと前記第2ローカルインターコネクションとの間でデータを移動させる第2LSUをさらに含み、前記第2LSUは、前記第2ニューラルコアで外部からのロードを実行する第2ニューラルコアロードユニットを含み、前記L2シンクターゲットによる同期化信号を伝送することは、前記第1ニューラルコアストアユニットが、前記L2シンクターゲットによる同期化信号を前記第2ニューラルコアロードユニットに伝送することを含み得る。
【0060】
また、前記ニューラルプロセッシング装置は、前記第1および第2ニューラルコアと、前記ローカルインターコネクションと、前記L2シンクパスを含む第1ニューラルプロセッサと、前記第1ニューラルプロセッサとは異なる第2ニューラルプロセッサと、前記第1および第2ニューラルプロセッサ間でデータを伝送するグローバルインターコネクションと、前記第1および第2ニューラルプロセッサにそれぞれ対応する第1および第2セマフォメモリとを含み、前記グローバルインターコネクションは、前記第1および第2ニューラルプロセッサ間でデータ、制御信号およびL3シンクターゲットによる同期化信号がそれぞれ伝送されるデータチャネルと、コントロールチャンネルと、L3シンクチャネルとを含み、前記第1ニューラルプロセッサが前記L3シンクターゲットを生成し、前記第2セマフォメモリに前記L3シンクターゲットを保存し、前記第2ニューラルプロセッサが前記L3シンクターゲットによる同期化信号により同期化を実行することを含み得る。
【発明の効果】
【0061】
本発明のニューラルプロセッシング装置およびその同期化方法は、中央化された制御プロセッサの代わりに、各々のプロセッサ、コアおよびメモリ素子が互いに同期化要求を伝達して同期化を実行するため、制御プロセッサに伝達される同期化要求によるレイテンシー(latency)を最小化し得る。
【0062】
また、制御プロセッサによって実行されていたスケジューリング作業も実行する必要がなくなるので、ニューラルプロセッシング装置のスケジューリングオーバーヘッドが大きく減少し得る。
【0063】
前述の内容とともに、本発明の具体的な効果は、以下で本発明を実施するための具体的な事項を説明しながら併せて記述する。
【図面の簡単な説明】
【0064】
図1図1は、本発明のいくつかの実施例によるニューラルプロセッシングシステムを説明するためのブロック図である。
図2図2は、図1におけるニューラルプロセッシング装置を詳細に説明するためのブロック図である。
図3図3は、図2におけるニューラルコアSoCを詳細に説明するためのブロック図である。
図4図4は、図3におけるグローバルインターコネクションを詳細に説明するための構造図である。
図5図5は、図3におけるニューラルプロセッサを詳細に説明するためのブロック図である。
図6図6は、図5におけるニューラルコアを詳細に説明するためのブロック図である。
図7図7は、図6におけるLSUを詳細に説明するためのブロック図である。
図8図8は、図6におけるプロセスユニットを詳細に説明するためのブロック図である。
図9図9は、図6におけるローカルメモリを詳細に説明するためのブロック図である。
図10図10は、図9におけるローカルメモリバンクを詳細に説明するためのブロック図である。
図11図11は、本発明のいくつかの実施例によるニューラルプロセッシングシステムのメモリ再構成を説明するためのブロック図である。
図12図12は、本発明のいくつかの実施例によるニューラルプロセッシングシステムのメモリ再構成の例を示すブロック図である。
図13図13は、図11のA部分を拡大したブロック図である。
図14図14は、図13における第1バンクを詳細に説明するための図である。
図15図15は、本発明のいくつかの実施例によるニューラルプロセッシング装置の仮想ID割り当てを説明するための概念図である。
図16図16は、本発明のいくつかの実施例によるニューラルプロセッシング装置の仮想ID割り当ておよびVPIDテーブルを説明するための図である。
図17図17は、シンクターゲットとVPIDテーブルとによる物理IDの識別過程を説明するための図である。
図18図18は、ディープラーニング作業の手順を説明するための有向非巡回グラフである。
図19図19は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL3同期化のためのシンクターゲットによる同期化信号送信動作を説明するための概念図である。
図20図20は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL3同期化のためのシンクターゲットによる同期化信号受信動作を説明するための概念図である。
図21図21は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL1およびL2同期化を説明するためのブロック図である。
図22図22は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL1およびL2同期化を説明するためのラダー(Ladder)図である。
図23図23は、本発明のいくつかの実施例によるニューラルプロセッシング装置の命令語集合構造を説明するための図である。
図24図24は、本発明のいくつかの実施例によるニューラルプロセッシング装置のソフトウェア階層構造を説明するためのブロック図である。
図25図25は、本発明のいくつかの実施例によるニューラルプロセッシング装置が実行するディープラーニング演算を説明するための概念図である。
図26図26は、本発明のいくつかの実施例によるニューラルプロセッシング装置のニューラルネットワークの学習および推論動作を説明するための概念図である。
図27図27は、本発明のいくつかの実施例によるニューラルプロセッシング装置の同期化方法を説明するためのフローチャートである。
図28図28は、図27におけるL3シンクターゲット保存段階およびFIFO方式で提供段階を詳細に説明するためのフローチャートである。
図29図29は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL1およびL2レベルの同期化方法を説明するためのフローチャートである。
図30図30は、図29におけるデータ要求段階を詳細に説明するためのフローチャートである。
【発明を実施するための形態】
【0065】
本明細書および特許請求の範囲に使用された用語や単語は、一般的または辞書的な意味に限定して解釈されてはならない。発明者が自身の発明を最善の方法で説明するために用語や単語の概念を定義し得るという原則にしたがって、本発明の技術的思想に合致する意味と概念として解釈されるべきである。また、本明細書に記載されている実施例と図面に示されている構成は、本発明が実現される1つの実施例に過ぎず、本発明の技術的思想を全て代弁するものではないので、本出願時点において、これらを代替し得る様々な均等物と変形および応用可能な例があり得ることを理解すべきである。
【0066】
本明細書および特許請求の範囲に使用される第1、第2、A、Bなどの用語は、様々な構成要素を説明するために使用され得るが、前記構成要素は、前記用語によって限定されてはならない。前記用語は、1つの構成要素を他の構成要素と区別する目的でのみ使用される。例えば、本発明の権利範囲を逸脱することなく、第1構成要素は第2構成要素と命名されることができ、同様に第2構成要素も第1構成要素と命名され得る。「および/または」という用語は、複数の関連する記載項目の組み合わせ、または複数の関連する記載項目中のいずれかの項目を含む。
【0067】
本明細書および特許請求の範囲に使用される用語は、単に、特定の実施例を説明するために使用されるものであって、本発明を限定しようとする意図ではない。単数の表現は、文脈上明らかに異に意味しない限り、複数の表現を含む。本出願において、「含む」または「有する」などの用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品、またはこれらの組み合わせの存在、または付加可能性を予め排除しないものと理解されるべきである。
【0068】
異に定義されない限り、技術的または科学的な用語を含め、ここに使用されるすべての用語は、本発明が属する技術分野において通常の知識を有する者によって一般的に理解されるものと同じ意味を有する。
【0069】
一般的に使用される辞書に定義のような用語は、関連技術の文脈上有する意味と一致する意味を有するものと解釈されるべきであり、本出願で明確に定義しない限り、理想的または過度に形式的な意味に解釈されない。
【0070】
また、本発明の各実施例に含まれる各構成、過程、工程、または方法などは、技術的に相互矛盾しない範囲内で共有され得る。
【0071】
以下、図1図26を参照して、本発明のいくつかの実施例によるニューラルプロセッシング装置を説明する。
【0072】
図1は、本発明のいくつかの実施例によるニューラルプロセッシングシステムを説明するためのブロック図である。
【0073】
図1を参照すると、本発明のいくつかの実施例によるニューラルプロセッシングシステムNPSは、第1ニューラルプロセッシング装置1と、第2ニューラルプロセッシング装置2と、外部インタフェイス3とを含み得る。
【0074】
第1ニューラルプロセッシング装置1は、人工ニューラルネットワークを用いて演算を実行する装置であり得る。第1ニューラルプロセッシング装置1は、例えば、ディープラーニング(deep learning)演算作業を実行することに特化した装置であり得る。ただし、本実施例は、これに制限されるものではない。
【0075】
第2ニューラルプロセッシング装置2は、第1ニューラルプロセッシング装置1と同一ないし類似の構成を有する装置であり得る。第1ニューラルプロセッシング装置1および第2ニューラルプロセッシング装置2は、互いに外部インタフェイス3を介して接続され、データおよび制御信号を共有し得る。
【0076】
図1では、2つのニューラルプロセッシング装置を示したが、本発明のいくつかの実施例によるニューラルプロセッシングシステムNPSは、これに制限されるものではない。すなわち、本発明のいくつかの実施例によるニューラルプロセッシングシステムNPSは、3つ以上のニューラルプロセッシング装置が外部インタフェイス3を介して互いに接続されても良い。また、逆に、本発明のいくつかの実施例によるニューラルプロセッシングシステムNPSは、1つのニューラルプロセッシング装置のみを含んでも良い。
【0077】
図2は、図1におけるニューラルプロセッシング装置を詳細に説明するためのブロック図である。
【0078】
図2を参照すると、第1ニューラルプロセッシング装置1は、ニューラルコアSoC10と、CPU20と、オフチップメモリ30と、第1不揮発性メモリインタフェイス40と、第1揮発性メモリインタフェイス50と、第2不揮発性メモリインタフェイス60と、第2揮発性メモリインタフェイス70とを含み得る。
【0079】
ニューラルコアSoC10は、システムオンチップ(System on Chip)装置であり得る。ニューラルコアSoC10は、人工知能演算装置として加速器(Accelerator)であり得る。ニューラルコアSoC10は、例えば、GPU(graphics processing unit)、FPGA(field programmable gate array)およびASIC(application-specific integrated circuit)のうちいずれか1つであり得る。ただし、本実施例は、これに制限されるものではない。
【0080】
ニューラルコアSoC10は、外部インタフェイス3を介して他の外部の演算装置とデータを交換し得る。また、ニューラルコアSoC10は、第1不揮発性メモリインタフェイス40および第1揮発性メモリインタフェイス50を介して、それぞれ不揮発性メモリ31および揮発性メモリ32と接続され得る。
【0081】
CPU20は、第1ニューラルプロセッシング装置1のシステムを制御し、プログラムの演算を実行する制御装置であり得る。CPU20は汎用演算装置として、ディープラーニングに多く使用される並列単純演算を実行するには、効率が低くあり得る。したがって、ニューラルコアSoC10が、ディープラーニング推論および学習作業に演算を実行して高い効率を有し得る。
【0082】
CPU20は、外部インタフェイス3を介して、他の外部の演算装置とデータを交換し得る。また、CPU20は、第2不揮発性メモリインタフェイス60および第2揮発性メモリインタフェイス70を介して、それぞれ不揮発性メモリ31および揮発性メモリ32と接続され得る。
【0083】
オフチップメモリ30は、ニューラルコアSoC10のチップ外部に配置されたメモリであり得る。オフチップメモリ30は、不揮発性メモリ31と揮発性メモリ32とを含み得る。
【0084】
不揮発性メモリ31は、電源が供給されなくても、保存されている情報を継続して維持するメモリであり得る。不揮発性メモリ31は、例えば、ROM(Read-Only Memory)、PROM(Programmable Read-Only Memory)、EAROM(Erasable Alterable ROM)、EPROM(Erasable Programmable Read-Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)(例えば、NANDフラッシュメモリ(NAND Flash memory)、NORフラッシュメモリ(NOR Flash memory))、UVEPROM(Ultra-Violet Erasable Programmable Read-Only Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase-change Random Access Memory)、SONOS(silicon-oxide-nitride-oxide-silicon)、RRAM(Resistive Random Access Memory)、NRAM(Nanotube Random Access Memory)、磁気コンピュータ記憶装置(例えば、ハードディスク、ディスケットドライブ、磁気テープ)、光ディスクドライブ、および3Dクロスポイントメモリ(3D XPoint memory)のうち少なくとも1つを含み得る。ただし、本実施例は、これに制限されるものではない。
【0085】
揮発性メモリ32は、不揮発性メモリ31とは異なり、保存されている情報を維持するために電力を持続的に必要とするメモリであり得る。揮発性メモリ32は、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)およびDDR SDRAM(Double Data Rate SDRAM)のうち少なくとも1つを含み得る。ただし、本実施例は、これに制限されるものではない。
【0086】
第1不揮発性メモリインタフェイス40および第2不揮発性メモリインタフェイス60はそれぞれ、例えば、PATA(Parallel Advanced Technology Attachment)、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)、およびPCIe(PCI Express)のうち少なくとも1つを含み得る。ただし、本実施例は、これに制限されるものではない。
【0087】
第1揮発性メモリインタフェイス50および第2揮発性メモリインタフェイス70はそれぞれ、例えば、SDR(Single Data Rate)、DDR(Double Data Rate)、QDR(Quad Data Rate)、およびXDR(eXtreme Data Rate, Octal Data Rate)のうちの少なくとも1つであり得る。ただし、本実施例は、これに制限されるものではない。
【0088】
図3は、図2のニューラルコアSoCを詳細に説明するためのブロック図である。
【0089】
図2および図3を参照すると、ニューラルコアSoC10は、少なくとも1つのニューラルプロセッサ1000と、共有メモリ2000と、DMA(Direct Memory Access)3000と、不揮発性メモリコントローラ4000と、揮発性メモリコントローラ5000と、グローバルインターコネクション6000とを含み得る。
【0090】
ニューラルプロセッサ1000は、演算作業を直接実行する演算装置であり得る。ニューラルプロセッサ1000が複数の場合、演算作業は、それぞれのニューラルプロセッサ1000に割り当てられ得る。各々のニューラルプロセッサ1000は、グローバルインターコネクション6000を介して互いに接続され得る。
【0091】
共有メモリ2000は、複数のニューラルプロセッサ1000によって共有されるメモリであり得る。共有メモリ2000は、それぞれのニューラルプロセッサ1000のデータを保存し得る。また、共有メモリ2000は、オフチップメモリ30からデータを受信して一時的に保存し、各々のニューラルプロセッサ1000に伝達し得る。逆に、共有メモリ2000は、ニューラルプロセッサ1000からデータを受信して一時的に保存し、図2におけるオフチップメモリ30への伝達もし得る。
【0092】
共有メモリ2000は、相対的に速度の速いメモリが必要であり得る。そのため、共有メモリ2000は例えば、SRAMを含み得る。ただし、本実施例は、これに制限されるものではない。つまり、共有メモリ2000は、DRAMを含むこともできる。
【0093】
共有メモリ2000は、SoCレベル、すなわち、L3(level 3)に該当するメモリであり得る。したがって、共有メモリ2000は、L3共有メモリとも定義し得る。
【0094】
DMA3000は、ニューラルプロセッサ1000がデータの入出力を制御する必要はなく、直接データの移動を制御し得る。これにより、DMA3000がメモリ間のデータ移動を制御して、ニューラルプロセッサ1000の割り込み(interrupt)の回数を最小化し得る。
【0095】
DMA3000は、共有メモリ2000とオフチップメモリ30との間のデータ移動を制御し得る。DMA3000の権限により、不揮発性メモリコントローラ4000および揮発性メモリコントローラ5000がデータ移動を実行し得る。
【0096】
不揮発性メモリコントローラ4000は、不揮発性メモリ31へのリード(read)またはライト(write)作業を制御し得る。不揮発性メモリコントローラ4000は、第1不揮発性メモリインタフェイス40を介して、不揮発性メモリ31を制御し得る。
【0097】
揮発性メモリコントローラ5000は、揮発性メモリ32へのリードまたはライト作業を制御し得る。また、揮発性メモリコントローラ5000は、揮発性メモリ32のリフレッシュ作業を実行し得る。揮発性メモリコントローラ5000は、第1揮発性メモリインタフェイス50を介して、揮発性メモリ32を制御し得る。
【0098】
グローバルインターコネクション6000は、少なくとも1つのニューラルプロセッサ1000、共有メモリ2000、DMA3000、不揮発性メモリコントローラ4000、および揮発性メモリコントローラ5000を互いに接続し得る。また、外部インタフェイス3も、グローバルインターコネクション6000に接続され得る。グローバルインターコネクション6000は、少なくとも1つのニューラルプロセッサ1000、共有メモリ2000、DMA3000、不揮発性メモリコントローラ4000、揮発性メモリコントローラ5000、および外部インタフェイス3間のデータが移動する経路であり得る。
【0099】
グローバルインターコネクション6000は、データだけでなく、制御信号の伝送および同期化のための信号を伝送し得る。つまり、本発明のいくつかの実施例によるニューラルプロセッシング装置は、別途の制御プロセッサが同期化の信号を管理するのではなく、各々のニューラルプロセッサ1000が直接同期化信号を伝送し、受信し得る。これにより、制御プロセッサによって発生する同期化信号のレイテンシーを遮断し得る。
【0100】
すなわち、ニューラルプロセッサ1000が複数の場合、あるニューラルプロセッサ1000の作業が終了してこそ、次のニューラルプロセッサ1000が新しい作業を開始できる個別作業の依存性が存在し得る。このような個別作業の終了と開始とは、同期化信号により確認し得るが、従来の技術は、このような同期化信号の受信と新しい作業の開始指示を、制御プロセッサが実行していた。
【0101】
しかし、ニューラルプロセッサ1000の数が増え、作業の依存性が複雑に設計されればされるほど、このような同期化作業は、要求および指示の数が幾何級数的に増加するようになった。したがって、各々の要求および指示によるレイテンシーが作業の効率を大きく低下させ得る。
【0102】
したがって、本発明のいくつかの実施例によるニューラルプロセッシング装置は、制御プロセッサの代わりに、各々のニューラルプロセッサ1000が直接同期化信号を、作業の依存性に応じて他のニューラルプロセッサ1000に伝送し得る。この場合、制御プロセッサによって管理される方式に比べて、並列的に複数のニューラルプロセッサ1000が同期化作業を実行し得るので、同期化によるレイテンシーを最小化し得る。
【0103】
また、制御プロセッサが、作業依存性によるニューラルプロセッサ1000の作業スケジューリングを実行する必要があるが、このようなスケジューリングのオーバーヘッドも、ニューラルプロセッサ1000の数が増えれば増えるほど大きく増加し得る。したがって、本発明のいくつかの実施例によるニューラルプロセッシング装置は、スケジューリング作業も個別のニューラルプロセッサ1000によって行われ、それによるスケジューリング負担もないので、装置の性能が向上され得る。
【0104】
図4は、図3におけるグローバルインターコネクションを詳細に説明するための構造図である。
図4を参照すると、グローバルインターコネクション6000は、データチャンネル6100と、コントロールチャンネル6200と、L3シンクチャンネル6300とを含み得る。
【0105】
データチャンネル6100は、データを伝送する専用チャンネルであり得る。データチャネル6100を介して、少なくとも1つのニューラルプロセッサ1000、共有メモリ2000、DMA3000、不揮発性メモリコントローラ4000、揮発性メモリコントローラ5000、および外部インタフェイス3が、互いにデータを交換し得る。
【0106】
コントロールチャンネル6200は、制御信号を伝送する専用チャネルであり得る。コントロールチャンネル6200を介して、少なくとも1つのニューラルプロセッサ1000、共有メモリ2000、DMA3000、不揮発性メモリコントローラ4000、揮発性メモリコントローラ5000、および外部インタフェイス3が、互いに制御信号を交換し得る。
【0107】
L3シンクチャネル6300は、同期化信号を伝送する専用チャネルであり得る。L3シンクチャネル6300を介して、少なくとも1つのニューラルプロセッサ1000、共有メモリ2000、DMA3000、不揮発性メモリコントローラ4000、揮発性メモリコントローラ5000、および外部インタフェイス3が、互いに同期化信号を交換し得る。
【0108】
L3シンクチャネル6300は、グローバルインターコネクション6000内に専用チャネルとして設定され、他のチャネルと重なることなく同期化信号を迅速に伝送し得る。これにより、本発明のいくつかの実施例によるニューラルプロセッシング装置は、新たな配線作業の必要がなく、従来使用のグローバルインターコネクション6000を利用して、同期化作業を円滑に行い得る。
【0109】
図5は、図3におけるニューラルプロセッサを詳細に説明するためのブロック図である。
図3図5を参照すると、ニューラルプロセッサ1000は、少なくとも1つのニューラルコア100と、L2共有メモリ400と、ローカルインターコネクション200と、L2シンクパス300とを含み得る。
【0110】
少なくとも1つのニューラルコア100は、ニューラルプロセッサ1000の作業を分担して実行し得る。ニューラルコア100は、例えば、8個であり得る。ただし、本実施例は、これに制限されるものではない。図4および図5では、複数のニューラルコア100が、ニューラルプロセッサ1000に含まれるものと示したが、本実施例は、これに制限されるものではない。すなわち、1個のニューラルコア100のみでもニューラルプロセッサ1000が構成され得る。
【0111】
L2共有メモリ400は、ニューラルプロセッサ1000内で、各々のニューラルコア100が共有するメモリであり得る。L2共有メモリ400は、それぞれのニューラルコア100のデータを保存し得る。また、L2共有メモリ400は、図3における共有メモリ2000からデータを受信して一時的に保存し、各々のニューラルコア100に伝達し得る。逆に、L2共有メモリ400は、ニューラルコア100からデータを受信して一時的に保存し、図3における共有メモリ2000への伝達もし得る。
【0112】
L2共有メモリ400は、ニューラルプロセッサレベル、すなわち、L2(level2)に該当するメモリであり得る。L3共有メモリ、すなわち、共有メモリ2000は、ニューラルプロセッサ1000によって共有され、L2共有メモリ400はニューラルコア100によって共有され得る。
【0113】
ローカルインターコネクション200は、少なくとも1つのニューラルコア100およびL2共有メモリ400を互いに接続し得る。ローカルインターコネクション200は、少なくとも1つのニューラルコア100およびL2共有メモリ400間のデータが移動する経路であり得る。ローカルインターコネクション200は、図3におけるグローバルインターコネクション6000と接続されデータを伝送し得る。
【0114】
L2シンクパス300は、少なくとも1つのニューラルコア100およびL2共有メモリ400を互いに接続し得る。L2シンクパス300は、少なくとも1つのニューラルコア100およびL2共有メモリ400の同期化信号が移動する経路であり得る。
【0115】
L2シンクパス300は、ローカルインターコネクション200と物理的に別途形成され得る。ローカルインターコネクション200の場合、グローバルインターコネクション6000とは異なり、内部に十分なチャンネルが形成されないことがあり得る。このような場合には、L2シンクパス300が別途形成され、同期化信号の伝送を迅速かつ遅滞なく実行し得る。L2シンクパス300は、グローバルインターコネクション6000のL3シンクチャンネル6300に比べ、一段階低いレベルで実行される同期化に使用され得る。
【0116】
図6は、図5におけるニューラルコアを詳細に説明するためのブロック図である。
図6を参照すると、ニューラルコア100は、LSU(Load/Store Unit)110と、ローカルメモリ120と、ウェイトバッファー130と、アクティベーションLSU140と、アクティベーションバッファー150と、プロセスユニット160とを含み得る。
【0117】
LSU110は、ローカルインターコネクション200およびL2シンクパス300を介して、外部からデータ、制御信号および同期化信号のうち少なくとも1つを受信し得る。LSU110は、ローカルメモリ120に受信したデータ、制御信号および同期化信号のうち少なくとも1つを伝送し得る。同様に、LSU110は、ローカルインターコネクション200およびL2シンクパス300を介して、データ、制御信号および同期化信号のうち少なくとも1つを外部に伝達し得る。
【0118】
図7は、図6のLSUを詳細に説明するためのブロック図である。
図7を参照すると、LSU110は、ローカルメモリロードユニット111aと、ローカルメモリストアユニット111bと、ニューラルコアロードユニット112aと、ニューラルコアストアユニット112bと、ロードバッファーLBと、ストアバッファーSBと、ロードエンジン113aと、ストアエンジン113bと、変換インデックスバッファー114とを含み得る。
【0119】
ローカルメモリロードユニット111aは、ローカルメモリ120に対するロード命令(instruction)をフェッチ(fetch)し、ロード命令を発行(issue)し得る。ローカルメモリロードユニット111aが、発行されたロード命令をロードバッファーLBに提供すると、ロードバッファーLBが入力された順に応じて順次ロードエンジン113aにメモリアクセス要求を伝送し得る。
【0120】
また、ローカルメモリストアユニット111bは、ローカルメモリ120に対するストア命令をフェッチし、ストア命令を発行し得る。ローカルメモリストアユニット111bが、発行されたストア命令をストアバッファーSBに提供すると、ストアバッファーSBが、入力された順に応じて順次ストアエンジン113bにメモリアクセス要求を伝送し得る。
【0121】
ニューラルコアロードユニット112aは、ニューラルコア100に対するロード命令をフェッチし、ロード命令を発行し得る。ニューラルコアロードユニット112aが、発行されたロード命令をロードバッファーLBに提供すると、ロードバッファーLBが、入力された順に応じて順次ロードエンジン113aにメモリアクセス要求を伝送し得る。
【0122】
また、ニューラルコアストアユニット112bは、ニューラルコア100に対するストア命令をフェッチし、ストア命令を発行し得る。ニューラルコアストアユニット112bが、発行されたストア命令をストアバッファーSBに提供すると、ストアバッファーSBが、入力された順に応じて順次ストアエンジン113bにメモリアクセス要求を伝送し得る。
【0123】
ロードエンジン113aは、メモリアクセス要求を受信し、ローカルインターコネクション200を介してデータを呼び出し得る。この際、ロードエンジン113aは、変換インデックスバッファー114で最近使用された仮想アドレスと物理アドレスとの変換テーブルを利用して迅速にデータを調べられる。ロードエンジン113aの仮想アドレスが変換インデックスバッファー114にない場合には、他のメモリからアドレス変換情報を調べられる。
【0124】
ストアエンジン113bは、メモリアクセス要求を受信し、ローカルインターコネクション200を介してデータを呼び出し得る。この際、ストアエンジン113bは、変換インデックスバッファー114で最近使用された仮想アドレスと物理アドレスとの変換テーブルを利用して迅速にデータを調べられる。ストアエンジン113bの仮想アドレスが変換インデックスバッファー114にない場合には、他のメモリからアドレス変換情報を調べられる。
【0125】
ロードエンジン113aおよびストアエンジン113bは、L2シンクパス300に同期化信号を伝送し得る。この際、同期化信号は、作業が終了したという意味を有し得る。
【0126】
再び、図6を参照すると、ローカルメモリ120は、ニューラルコア100内部に位置するメモリであって、ニューラルコア100が作業に必要なすべての入力データを外部から受信して、一時的に保存し得る。また、ローカルメモリ120は、ニューラルコア100によって演算された出力データを外部に伝送するために、一時的に保存し得る。ローカルメモリ120は、ニューラルコア100のキャッシュメモリの役割を果たし得る。
【0127】
ローカルメモリ120は、アクティベーションLSU140によって入力アクティベーションAct_Inをアクティベーションバッファー150に伝送し、出力アクティベーションAct_Outを受信し得る。ローカルメモリ120は、アクティベーションLSU140の外にも、プロセスユニット160と直接データを送受信し得る。つまり、ローカルメモリ120は、PEアレイ163およびベクトルユニット164のそれぞれとデータのやり取りをし得る。
【0128】
ローカルメモリ120は、ニューラルコアレベル、すなわち、L1(level1)に該当するメモリであり得る。したがって、ローカルメモリ120は、L1メモリとも定義し得る。ただし、L1メモリは、L2共有メモリ400およびL3共有メモリ、すなわち、共有メモリ2000とは異なり共有されず、ニューラルコアの専用(private)メモリであり得る。
【0129】
ローカルメモリ120は、データパス(Data Path)を介してアクティベーションやウェイトのようなデータを伝送し得る。ローカルメモリ120は、別の専用パスであるL1シンクパス(L1 Sync Path)を介して、同期化信号のやり取りをし得る。ローカルメモリ120は、例えば、LSU110、ウェイトバッファー130、アクティベーションLSU140、およびプロセスユニット160とL1シンクパスを介して同期化信号のやり取りをし得る。
【0130】
ウェイトバッファー130は、ウェイト(Weight)をローカルメモリ120から受信し得る。ウェイトバッファー130は、ウェイトをプロセスユニット160に伝達し得る。ウェイトバッファー130は、ウェイトを伝達する前に、一時的にウェイトを保存し得る。
【0131】
入力アクティベーションAct_Inおよび出力アクティベーションAct_Outは、ニューラルネットワークのレイヤーの入力値と出力値を意味し得る。この際、ニューラルネットワークのレイヤーが複数の場合、以前のレイヤーの出力値が次のレイヤーの入力値となるので、以前のレイヤーの出力アクティベーションAct_Outが、次のレイヤーの入力アクティベーションAct_Inとして活用され得る。
【0132】
ウェイトは、各レイヤーで入力される入力アクティベーションAct_Inと乗算されるパラメータを意味し得る。ウェイトは、ディープラーニング学習段階で調整されて確定され、推論段階では、固定された値により出力アクティベーションAct_Outを導出するために使用され得る。
【0133】
アクティベーションLSU140は、ローカルメモリ120から入力アクティベーションAct_Inをアクティベーションバッファー150に伝達し、アクティベーションバッファー150から出力アクティベーションAct_Outを前記オンチップバッファーに伝達し得る。つまり、アクティベーションLSU140は、アクティベーションのロード作業とストア作業をいずれも実行し得る。
【0134】
アクティベーションバッファー150は、プロセスユニット160に入力アクティベーションAct_Inを提供し、プロセスユニット160から出力アクティベーションAct_Outを受信し得る。アクティベーションバッファー150は、入力アクティベーションAct_Inと出力アクティベーションAct_Outとを一時的に保存し得る。
【0135】
アクティベーションバッファー150は、演算量の多いプロセスユニット160、特に、PEアレイ163に迅速にアクティベーションを提供し、迅速にアクティベーションを受信して、ニューラルコア100の演算速度を高め得る。
【0136】
プロセスユニット160は、演算を実行するモジュールであり得る。プロセスユニット160は、1次元演算だけでなく、2次元マトリックス演算、すなわち、畳み込み(convolution)演算を実行し得る。プロセスユニット160は、入力アクティベーションAct_Inを受信してウェイトと乗算した後、これを加算して出力アクティベーションAct_Outを生成し得る。
【0137】
図8は、図6のプロセスユニットを詳細に説明するためのブロック図である。
図6および図8を参照すると、プロセスユニット160は、PEアレイ163と、ベクトルユニット164と、列レジスタ161と、行レジスタ162とを含み得る。
【0138】
PEアレイ163は、入力アクティベーションAct_Inおよびウェイトを受信して乗算を実行し得る。この際、入力アクティベーションAct_Inとウェイトは、それぞれマトリックス形態で畳み込みにより演算され得る。これにより、PEアレイ163は、出力アクティベーションAct_Outを生成し得る。ただし、本実施例は、これに制限されるものではない。PEアレイ163は、出力アクティベーションAct_Out以外の他種の出力も容易に生成し得る。
【0139】
PEアレイ163は、少なくとも1つの処理要素(processing element)PEを含み得る。処理要素PEは、互いに整列され、それぞれ1つの入力アクティベーションAct_Inと1つのウェイトに対する乗算を実行し得る。
【0140】
PEアレイ163は、それぞれの乗算の値を合計した部分和を生成し得る。このような部分和は、出力アクティベーションAct_Outとして活用され得る。PEアレイ163は、2次元行列乗算を実行するので、2次元マトリクス演算ユニット(2D matrix compute unit)とも称され得る。
【0141】
ベクトルユニット164は、主に1次元演算を実行し得る。ベクトルユニット164は、PEアレイ163とともにディープラーニング演算を実行し得る。これにより、プロセスユニット160は、必要な演算に特化し得る。つまり、ニューラルコア100は、大量の2次元行列乗算と1次元演算とを実行する演算モジュールがそれぞれあり、効率的にディープラーニング作業を実行し得る。
【0142】
列レジスタ161は、第1入力I1を受信し得る。列レジスタ161は、第1入力I1を受信し、これを分割して処理要素PEの各列(column)に提供し得る。
【0143】
行レジスタ162は、第2入力I2を受信し得る。行レジスタ162は、第2入力I2を受信し、それを分割して処理要素PEの各行(row)に提供し得る。
【0144】
第1入力I1は、入力アクティベーションAct_Inまたはウェイトであり得る。第2入力I2は、入力アクティベーションAct_Inまたはウェイトのうち、第1入力I1ではない値であり得る。または、第1入力I1および第2入力I2は、入力アクティベーションAct_Inおよびウェイト以外の値にもなり得る。
【0145】
図9は、図6におけるローカルメモリを詳細に説明するためのブロック図である。
図9を参照すると、ローカルメモリ120は、スケジューラ121と、少なくとも1つのローカルメモリバンク122とを含み得る。
【0146】
データがローカルメモリ120に保存されるとき、スケジューラ121は、ロードエンジン113aからデータを受信し得る。この際、データは、ラウンドロビン(round robin)方式によりローカルメモリバンク122に割り当てられる。これにより、データは、少なくとも1つのローカルメモリバンク122のいずれか1つに保存され得る。
【0147】
逆に、データがローカルメモリ120からロードされるとき、スケジューラ121は、ローカルメモリバンク122からデータを受信して、ストアエンジン113bに伝達し得る。ストアエンジン113bは、ローカルインターコネクション200を介して外部にデータを保存させ得る。
【0148】
図10は、図9のローカルメモリバンクを詳細に説明するためのブロック図である。
図10を参照すると、ローカルメモリバンク122は、ローカルメモリバンクコントローラ122_1と、ローカルメモリバンクセルアレイ122_2とを含み得る。
【0149】
ローカルメモリバンクコントローラ122_1は、ローカルメモリバンク122に保存されるデータのアドレスにより、リードおよびライト動作を管理し得る。つまり、ローカルメモリバンクコントローラ122_1は、データの入出力を全体的に管理し得る。
【0150】
ローカルメモリバンクセルアレイ122_2は、データが直接保存されるセルが、行と列を合わせて整列された構造であり得る。ローカルメモリバンクセルアレイ122_2は、ローカルメモリバンクコントローラ122_1によって制御され得る。
【0151】
図11は、本発明のいくつかの実施例によるニューラルプロセッシングシステムのメモリ再構成を説明するためのブロック図である。
【0152】
図11を参照すると、ニューラルコアSoC10は、第1~第8ニューラルコア100a~100hと、オンチップメモリOCMとを含み得る。図11では、例示的に8つのニューラルコアを示したが、これは例示に過ぎず、ニューラルコアの数は制限なく変わり得る。
【0153】
オンチップメモリOCMは、第1~第8ローカルメモリ120a~120hと、共有メモリ2000とを含み得る。
【0154】
第1~第8ローカルメモリ120a~120hは、それぞれ第1~第8ニューラルコア100a~100hの専用メモリとして使用され得る。すなわち、第1~第8ニューラルコア100a~100hと第1~第8ローカルメモリ120a~120hとは、互いに1:1で対応し得る。
【0155】
共有メモリ2000は、第1~第8メモリユニット2100a~2100hを含み得る。第1~第8メモリユニット2100a~2100hは、第1~第8ニューラルコア100a~100hおよび第1~第8ローカルメモリ120a~120hにそれぞれ対応し得る。つまり、メモリユニットの数は、ニューラルコアおよびローカルメモリの数と同じ8個であり得る。
【0156】
共有メモリ2000は、2種類のオンチップメモリ形式のいずれかで動作し得る。つまり、共有メモリ2000は、ローカルメモリ形式またはグローバルメモリ形式のいずれかで動作し得る。つまり、共有メモリ2000は、1つのハードウェアで2つの論理的な(logical)メモリを実現し得る。
【0157】
共有メモリ2000がローカルメモリ形式で実現される場合、共有メモリ2000は、第1~第8ローカルメモリ120a~120hのように、第1~第8ニューラルコア100a~100hそれぞれの専用メモリ(private memory)として動作し得る。ローカルメモリは、グローバルメモリに比べて相対的に高速のクロックで動作することができ、共有メモリ2000もローカルメモリ形式で動作する際、相対的により速いクロックを使用し得る。
【0158】
共有メモリ2000が、グローバルメモリ形式で実現される場合、共有メモリ2000は、第1ニューラルコア100aおよび第2ニューラルコア100bが互いに一緒に使用する共用メモリ(common memory)として動作し得る。この際、共有メモリ2000は、第1~第8ニューラルコア100a~100hだけでなく、第1~第8ローカルメモリ120a~120hによっても共有され得る。
【0159】
グローバルメモリは、一般的にローカルメモリに比べて低いクロックを使用し得るが、これに制限されるものではない。共有メモリ2000がグローバルメモリ形式で動作するときは、第1~第8ニューラルコア100a~100hが共有メモリ2000を共有し得る。この際、共有メモリ2000は、図2における揮発性メモリ32とグローバルインターコネクション6000を介して接続され、揮発性メモリ32のバッファーとしても動作し得る。
【0160】
共有メモリ2000は、少なくとも一部がローカルメモリ形式で動作し、残りがグローバルメモリ形式で動作し得る。つまり、共有メモリ2000全体がローカルメモリ形式で動作することもでき、共有メモリ2000全体がグローバルメモリ形式で動作することもできる。または、共有メモリ2000の一部がローカルメモリ形式で動作し、残りの一部がグローバルメモリ形式で動作し得る。
【0161】
図12は、本発明のいくつかの実施例によるニューラル処理システムのメモリ再構成の例を示すブロック図である。
【0162】
図11および図12を参照すると、第1、第3、第5、および第7ニューラルコア100a、100c、100e、100gそれぞれの第1、第3、第5、および第7専用領域AE1、AE3、AE5、AE7は、それぞれ第1、第3、第5、および第7ローカルメモリ120a、120c、120e、120gのみを含み得る。また、第2、第4、第6、および第8ニューラルコア100b、100d、100f、100hそれぞれの第2、第4、第6、および第8専用領域AE2、AE4、AE6、AE8は、それぞれ第2、第4、第6、および第8ローカルメモリ120b、120d、120f、120hを含み得る。また、第2、第4、第6、および第8専用領域AE2、AE4、AE6、AE8は、第2、第4、第6、および第8メモリユニット2100b、2100d、2100f、2100hを含み得る。共有メモリ2000の第1、第3、第5、および第7メモリユニット2100a、2100c、2100e、2100gは、共用領域ACとして活用され得る。
【0163】
共用領域ACは、第1~第8ニューラルコア100a~100hによって共有されるメモリであり得る。第2専用領域AE2は、第2ローカルメモリ120bと第2メモリユニット2100bとを含み得る。第2専用領域AE2は、ハードウェア的に分離された第2ローカルメモリ120bと第2メモリユニット210bとが同じ方式で動作して、論理的に1つのローカルメモリとして動作する領域であり得る。第4、第6および第8専用領域AE4、AE6、AE8も、第2専用領域AE2と同じ方式で動作し得る。
【0164】
本実施例による共有メモリ2000は、各ニューラルコアに対応する領域を、最適化した比率の論理的なローカルメモリと論理的なグローバルメモリとに切り替えて使用し得る。共有メモリ2000は、このような比率の調整をランタイム(Run time)にて実行し得る。
【0165】
つまり、各ニューラルコアは、互いに同じ作業をする場合もあるが、互いに異なる作業をする場合もあり得る。この場合、各ニューラルコアが実行する作業に必要なローカルメモリの容量とグローバルメモリの容量とは、毎回異なることとなる。これにより、既存のオンチップメモリのように、ローカルメモリと共有メモリとの構成比率が固定的に設定される場合には、各ニューラルコアに割り当てられる演算作業による非効率が発生し得る。
【0166】
したがって、本実施例によるニューラルプロセッシング装置の共有メモリ2000は、ランタイム中に演算作業に応じて最適なローカルメモリおよびグローバルメモリの比率を設定することができ、演算の効率性および速度を向上させ得る。
【0167】
図13は、図11におけるA部分を拡大したブロック図である。
図11および図13を参照すると、共有メモリ2000は、第1ローカルメモリコントローラ122_1aと、第2ローカルメモリコントローラ122_1bと、第5ローカルメモリコントローラ122_1eと、第6ローカルメモリコントローラ122_1fと、第1~第8メモリユニット2100a~2100hと、グローバルコントローラ2200とを含み得る。示されていない他のローカルメモリコントローラも本実施例に含まれ得るが、便宜上説明を省略する。
【0168】
第1ローカルメモリコントローラ122_1aは、第1ローカルメモリ120aを制御し得る。また、第1ローカルメモリコントローラ122_1aは、第1メモリユニット2100aを制御し得る。具体的には、第1メモリユニット2100aが論理的なローカルメモリ形式で実現されるとき、第1ローカルメモリコントローラ122_1aによる制御が、第1メモリユニット2100aに実行され得る。
【0169】
第2ローカルメモリコントローラ122_1bは、第2ローカルメモリ120bを制御し得る。また、第2ローカルメモリコントローラ122_1bは、第2メモリユニット2100bを制御し得る。つまり、第2メモリユニット2100bが論理的なローカルメモリ形式で実現されるとき、第1ローカルメモリコントローラ122_1aによる制御が、第2メモリユニット2100bに実行され得る。
【0170】
第5ローカルメモリコントローラ122_1eは、第5ローカルメモリ120eを制御し得る。また、第5ローカルメモリコントローラ122_1eは、第5メモリユニット2100eを制御し得る。すなわち、第5メモリユニット2100eが論理的なローカルメモリ形式で実現されるとき、第5ローカルメモリコントローラ122_1eによる制御が、第5メモリユニット2100eに実行され得る。
【0171】
第6ローカルメモリコントローラ122_1fは、第6ローカルメモリ120fを制御し得る。また、第6ローカルメモリコントローラ122_1fは、第6メモリユニット2100fを制御し得る。すなわち、第6メモリユニット2100fが論理的なローカルメモリ形式で実現されるとき、第6ローカルメモリコントローラ122_1fによる制御が、第6メモリユニット2100fに実行され得る。
【0172】
グローバルコントローラ2200は、第1~第8メモリユニット2100a~2100hの全てを制御し得る。具体的に、グローバルコントローラ2200は、第1~第8メモリユニット2100a~2100hがそれぞれ論理的にグローバルメモリ形式で動作するとき(すなわち、論理的にローカルメモリ形式で動作しないとき)、第1メモリユニット2100a~第8メモリユニット2100hを制御し得る。
【0173】
すなわち、第1~第8メモリユニット2100a~2100hは、論理的にどのような形式のメモリで実現されるかによって、第1~第8ローカルメモリコントローラ122_1a~122_1hによってそれぞれ制御されるか、またはグローバルコントローラ2200によって制御され得る。
【0174】
第1、第2、第5、および第6ローカルメモリコントローラ122_1a、122_1b、122_1e、122_1fを含むローカルメモリコントローラが、それぞれ第1~第8メモリユニット2100a~2100hを制御する場合、第1~第8ローカルメモリコントローラ122_1a~122_1hは、第1~第8メモリユニット2100a~2100hを第1~第8ローカルメモリ120a~120hと同様に制御するので、第1~第8ニューラルコア100a~100hの専用メモリとして制御し得る。これにより、第1~第8メモリユニット2100a~2100hは、第1~第8ニューラルコア100a~100hのクロック周波数と対応するクロック周波数で動作し得る。
【0175】
第1ローカルメモリコントローラ122_1a、第2ローカルメモリコントローラ122_1b、第5ローカルメモリコントローラ122_1e、および第6ローカルメモリコントローラ122_1fを含むローカルメモリコントローラは、それぞれ図6におけるLSU110を含み得る。
【0176】
グローバルコントローラ2200が、第1~第8メモリユニット2100a~2100hのうち少なくとも1つを各々制御する場合、グローバルコントローラ2200は、第1~第8メモリユニット2100a~2100hをそれぞれ第1~第8ニューラルコア100a~100hのグローバルメモリで制御し得る。これにより、第1~第8メモリユニット2100a~2100hのうち少なくとも1つは、それぞれ第1~第8ニューラルコア100a~100hのクロック周波数とは無関係なクロック周波数で動作し得る。ただし、本実施例は、これに制限されるものではない。
【0177】
グローバルコントローラ2200は、第1~第8メモリユニット2100a~2100hを図3におけるグローバルインターコネクション6000と接続し得る。第1~第8メモリユニット2100a~2100hは、グローバルコントローラ2200によって、図1におけるオフチップメモリ30とデータを交換したり、第1~第8ローカルメモリ120a~120hとそれぞれデータを交換したりし得る。
【0178】
第1~第8メモリユニット2100a~2100hは、それぞれ少なくとも1つのメモリバンクを含み得る。第1メモリユニット2100aは、少なくとも1つの第1メモリバンク2110aを含み得る。第1メモリバンク2110aは、第1メモリユニット2100aを特定のサイズに分割した領域であり得る。各々の第1メモリバンク2110aは、いずれも同一サイズのメモリ素子であり得る。ただし、本実施例は、これに制限されるものではない。図13では、4つのメモリバンクが1つのメモリユニットに含まれるものとして示されている。
【0179】
同様に、第2、第5、および第6メモリユニット2100b、2100e、2100fは、それぞれ少なくとも1つの第2、第5、および第6メモリバンク2110b、2110e、2110fを含み得る。
【0180】
以下、第1メモリバンク2110aおよび第5メモリバンク2110eを基準に説明し、これは、第2および第6メモリバンク2110b,2110fを含む他のメモリバンクと同じであり得る。
【0181】
第1メモリバンク2110aは、それぞれ論理的にローカルメモリ形式で動作したり、論理的にグローバルメモリ形式で動作したりし得る。この際、第1メモリバンク2110aは、第1メモリユニット2100a内の他のメモリバンクと独立して動作しても良い。ただし、本実施例は、これに制限されるものではない。
【0182】
各メモリバンク別に独立して動作する場合、第1メモリユニット2100aは、第1ローカルメモリ120aと同じ方式で動作する第1領域と、第1ローカルメモリ120aと異なる方式で動作する第2領域とを含み得る。この際、第1領域と第2領域とが、必ずしも併存するわけではなく、いずれかの領域が第1メモリユニット2100aの全体を占めることもあり得る。
【0183】
同様に、第2メモリユニット2100bは、第2ローカルメモリ120bと同じ方式で動作する第3領域と、第2ローカルメモリ120bと異なる方式で動作する第4領域とを含み得る。この際、第3領域と第4領域とが必ずしも併存するわけではなく、いずれかの領域が第1メモリユニット2100aの全体を占めることもあり得る。
【0184】
この際、第1領域と第2領域との比率は、第3領域と第4領域との比率と異なり得る。ただし、本実施例は、これに制限されるものではない。したがって、第1領域と第2領域との比率は、第3領域と第4領域との比率と同じでもあり得る。つまり、各メモリユニットにおけるメモリ構成率は、制限なく変わり得る。
【0185】
一般的に、従来のシステムオンチップの場合では、高速のローカルメモリを除くオンチップメモリを、高密度低電力SRAMで構成することが多かった。これは、必要な容量に対するチップの面積と使用電力とにおいて、SRAMが高い効率を有するためである。しかし、従来のオンチップメモリは、予め定められたローカルメモリの容量よりもさらに多くのデータが迅速に必要な作業の場合には、処理速度が大幅に遅くならざるを得なく、グローバルメモリの必要性が大きくない場合にも、残っているグローバルメモリを活用する方法が全くなかったため、非効率が発生していた。
【0186】
これに対して、本発明のいくつかの実施例による共有メモリ2000は、必要に応じて、それぞれ2つのコントローラのいずれか1つによって選択的に制御され得る。この際、共有メモリ2000が全体的に2つのコントローラのうち決められているいずれか1つによってのみ制御されるのではなく、メモリユニット単位またはメモリバンク単位で独立して制御され得る。
【0187】
これにより、本実施例による共有メモリ2000は、演算作業による最適なメモリ構成比率をランタイム中に獲得して、より迅速かつ効率的な演算作業を実行し得る。人工知能に特化したプロセスユニットの場合、特定のアプリケーション単位でローカルメモリとグローバルメモリとの必要なサイズが異なり得る。ひいては、同じアプリケーションでも、ディープラーニングネットワークを使用する場合、各レイヤー別にローカルメモリとグローバルメモリとの必要なサイズが異なり得る。本実施例による共有メモリ2000は、各レイヤーによる演算段階の変化にも、メモリの構成比率がランタイム中に変化され得るので、迅速かつ効率的なディープラーニング作業が可能であり得る。
【0188】
図14は、図13における第1バンクを詳細に説明するための図である。図14は、第1メモリバンク2110aについて示したが、他のメモリバンクも第1メモリバンク2110aと同じ構造であり得る。
【0189】
図14を参照すると、第1メモリバンク2110aは、セルアレイCaと、バンクコントローラBcと、第1パスユニットP1と、第2パスユニットP2とを含み得る。
【0190】
セルアレイCaは、内部に複数のメモリ素子(Cell)を含み得る。セルアレイCaは、複数のメモリ素子が格子構造に整列して配置され得る。セルアレイCaは、例えば、SRAM(Static Random Access Memory)セルアレイであり得る。
【0191】
バンクコントローラBcは、セルアレイCaを制御し得る。バンクコントローラBcは、セルアレイCaがローカルメモリ形式で動作するか、またはグローバルメモリ形式で動作するかを決定し、それに応じてセルアレイCaを制御し得る。
【0192】
具体的に、バンクコントローラBcは、ランタイム中に、第1パスユニットP1方向にデータを送受信するか、または第2パスユニットP2方向にデータを送受信するかを決定し得る。バンクコントローラBcは、経路制御信号Spcに応じてデータの送受信方向を決定し得る。
【0193】
経路制御信号Spcは、予め設計された装置ドライバやコンパイラによって生成され得る。経路制御信号Spcは、演算作業の特性に応じて生成され得る。または、経路制御信号Spcは、ユーザからの入力を受信して生成され得る。つまり、ユーザは、最適なメモリ構成比率を選択するために、経路制御信号Spcに対する入力を直接加え得る。
【0194】
バンクコントローラBcは、経路制御信号Spcにより、セルアレイCaに保存されているデータの送受信経路を決定し得る。バンクコントローラBcが、データの送受信される経路を決定することによって、データの交換インタフェイスが変わり得る。すなわち、バンクコントローラBcが、第1パスユニットP1とデータを交換する場合、第1インタフェイスを利用し、第2パスユニットP2とデータを交換する場合、第2インタフェイスを利用し得る。この際、第1インタフェイスと第2インタフェイスとは、互いに異なり得る。
【0195】
また、データが保存されるアドレス体系も変わり得る。つまり、特定のインタフェイスを選択すると、それに対応するアドレス体系でリードおよびライト動作が実行され得る。
【0196】
バンクコントローラBcは、特定のクロック周波数で動作し得る。例えば、セルアレイCaがSRAMセルアレイの場合には、一般的なSRAMの動作クロック周波数でバンクコントローラBcが動作し得る。
【0197】
第1パスユニットP1は、バンクコントローラBcと接続され得る。第1パスユニットP1は、セルアレイCaのデータを第1ニューラルコア100aと直接交換し得る。なお、「直接」とは、グローバルインターコネクション6000を介さず、互いに交換されることを意味し得る。つまり、第1ニューラルコア100aは、第1ローカルメモリ120aと直接データを交換することができ、第1ニューラルコア100aは、共有メモリ2000が論理的にローカルメモリ形式で実現されたとき、第1パスユニットP1を介してデータを交換し得る。第1パスユニットP1は、図13における第1ローカルメモリコントローラ122_1aおよび第2ローカルメモリコントローラ122_1bを含むローカルメモリコントローラを含み得る。
【0198】
第1パスユニットP1は、マルチサイクルシンクパス(Multi-Cycle Sync-Path)を構成し得る。つまり、第1パスユニットP1の動作クロック周波数は、第1ニューラルコア100aの動作クロック周波数と同じであり得る。第1ローカルメモリ120aは、第1ニューラルコア100aの動作と同じ速度で迅速にデータを交換するために、第1ニューラルコア100aの動作クロック周波数と同じクロック周波数で迅速にデータを交換し得る。第1パスユニットP1も同様に、第1ニューラルコア100aの動作クロック周波数と同じクロック周波数で動作し得る。
【0199】
この際、第1パスユニットP1の動作クロック周波数は、バンクコントローラBcの動作クロック周波数の倍数であり得る。この場合、バンクコントローラBcと第1パスユニットP1との間で、クロックの同期化のためのCDC(Clock Domain Crossing)作業が別途必要なく、これにより、データ伝送の遅延(delay)が発生しないのであり得る。したがって、より迅速かつ効率的なデータ交換が可能であり得る。
【0200】
図14では、例示的に、第1パスユニットP1の動作クロック周波数は1.5GHzであり得る。これは、バンクコントローラBcの750MHzの2倍の周波数であり得る。ただし、本実施例は、これに制限されるものではなく、バンクコントローラBcのクロック周波数の整数倍で第1パスユニットP1が動作するのであれば、制限なく可能である。
【0201】
第2パスユニットP2は、バンクコントローラBcと接続され得る。第2パスユニットP2は、セルアレイCaのデータを第1ニューラルコア100aと直接交換せず、グローバルインターコネクション6000を介して交換し得る。つまり、第1ニューラルコア100aは、グローバルインターコネクション6000および第2パスユニットP2を介してセルアレイCaとデータを交換し得る。この際、セルアレイCaは、単に第1ニューラルコア100aだけでなく、他のニューラルコアともデータを交換し得る。
【0202】
つまり、第2パスユニットP2は、第1メモリバンク2110aが論理的にグローバルメモリ形式で実現されたとき、セルアレイCaと全てのニューラルコアとのデータ交換経路であり得る。第2パスユニットP2は、図13におけるグローバルコントローラ2200を含み得る。
【0203】
第2パスユニットP2は、アシンクパス(Async-Path)を構成し得る。第2パスユニットP2の動作クロック周波数は、グローバルインターコネクション6000の動作クロック周波数と同一であり得る。第2パスユニットP2も同様に、グローバルインターコネクション6000の動作クロック周波数と同じクロック周波数で動作し得る。
【0204】
この際、第2パスユニットP2の動作クロック周波数は、バンクコントローラBcの動作クロック周波数と互いに同期化されないのであり得る。この場合、バンクコントローラBcと第2パスユニットP2との間で、クロックの同期化のためのCDC(Clock Domain Crossing)作業が必要であり得る。バンクコントローラBcの動作クロック周波数と第2パスユニットP2の動作クロック周波数とを互いに同期化させない場合には、クロックドメインの設計自由度が高くなり得る。したがって、ハードウェア設計の難易度が下がり、より容易にハードウェア動作を導出し得る。
【0205】
バンクコントローラBcは、第1パスユニットP1を介してデータを交換する場合と、第2パスユニットP2を介してデータを交換する場合とで、互いに異なるアドレス体系を利用し得る。すなわち、バンクコントローラBcは、第1パスユニットP1を介しては第1アドレス体系を利用し、第2パスユニットP2を介しては第2アドレス体系を利用し得る。この際、第1アドレス体系と第2アドレス体系は互いに異なり得る。
【0206】
バンクコントローラBcは、必ずしもメモリバンクごとに存在する必要はない。つまり、バンクコントローラBcは、スケジューリングのための部分ではなく、信号を伝達する役割をするので、2つのポートを有する各々のメモリバンクに必須の部分ではない。したがって、1つのバンクコントローラBcが、複数のメモリバンクを制御し得る。複数のメモリバンクは、バンクコントローラBcによって制御されても、独立して動作し得る。ただし、本実施例は、これに制限されるものではない。
【0207】
勿論、バンクコントローラBcは、各メモリバンク別にも存在し得る。この場合、バンクコントローラBcが、各々のメモリバンクを個別に制御し得る。
【0208】
図13および図14を参照すると、第1メモリユニット210aが、第1パスユニットP1を介してデータを交換する場合は第1アドレス体系を使用し、第2パスユニットP2を介してデータを交換する場合は第2アドレス体系を使用し得る。同様に、第2メモリユニット210bが、第1パスユニットP1を介してデータを交換する場合は第3アドレス体系を使用し、第2パスユニットP2を介してデータを交換する場合は第2アドレス体系を使用し得る。この際、第1アドレス体系と第3アドレス体系とは、互いに同一であり得る。ただし、本実施例は、これに制限されるものではない。
【0209】
第1アドレス体系と第3アドレス体系とは、それぞれ第1ニューラルコア100aおよび第2ニューラルコア100bにそれぞれ専用で使用され得る。第2アドレス体系は、第1ニューラルコア100aおよび第2ニューラルコア100bに共用で適用され得る。
【0210】
図14では、例示的に、第2パスユニットP2の動作クロック周波数は1GHzで動作し得る。これは、バンクコントローラBcの動作クロック周波数750MHzの動作クロック周波数と同期化していない周波数であり得る。つまり、第2パスユニットP2の動作クロック周波数は、バンクコントローラBcの動作クロック周波数に全く従属されず、自由に設定され得る。
【0211】
一般的なグローバルメモリは、遅いSRAM(例えば、750MHz)と、それよりも速いグローバルインターコネクション(例えば、1GHz)を利用しており、CDC作業による遅延が発生せざるを得なかった。これに対し、本発明のいくつかの実施例による共有メモリ2000は、第2パスユニットP2以外にも第1パスユニットP1を利用する余地があり、CDC作業による遅延を回避し得る。
【0212】
また、一般的なグローバルメモリは、複数のニューラルコアが1つのグローバルインターコネクション6000を利用するため、データ伝送量が同時に発生したとき、全体的な処理速度の低下が発生しやすい。これに対して、本発明のいくつかの実施例による共有メモリ2000は、第2パスユニットP2以外にも第1パスユニットP1を利用する余地があり、グローバルコントローラ2200に集中するデータ処理量を適切に分散する効果も得られ得る。
【0213】
図15は、本発明のいくつかの実施例によるニューラルプロセッシング装置の仮想IDの割り当てを説明するための概念図である。
【0214】
図15を参照すると、ニューラルコアSoC10は、複数のニューラルプロセッサを含み得る。図15では、例えば、8つのニューラルプロセッサがある場合を示している。ニューラルコアSoC10は、第1~第8ニューラルプロセッサPP0~PP7を含み得る。
【0215】
この際、第1~第4ニューラルプロセッサPP0~PP3は、同じプログラムによって1つの作業を分割して実行し得る。第5ニューラルプロセッサ1000は、単独で1つの作業を実行することができ、第6~第8ニューラルプロセッサPP5~PP7は、また他の1つの作業を分割して実行し得る。
【0216】
すなわち、8つのニューラルプロセッサは、3つのセットに分けられ得る。この際、第1セットSet1は、第1~第4ニューラルプロセッサPP0~PP3を含み得る。第2セットSet2は、第5ニューラルプロセッサ1000を含み得る。第3セットSet3は、第6~第8ニューラルプロセッサPP5~PP7を含み得る。
【0217】
各々のセットでは、新たな仮想IDが割り当てられ得る。つまり、第1セットSet1の第1~第4ニューラルプロセッサPP0~PP3には、それぞれ第1~第4仮想ID(VP0~VP3)がそれぞれ割り当てられ得る。第2セットSet2の第5ニューラルプロセッサ1000には、第1仮想ID(VP0)が割り当てられ得る。第3セットSet3の第6~第8ニューラルプロセッサPP5~PP7には、第1~第3仮想ID(VP0~VP2)が割り当てられ得る。
【0218】
したがって、互いに異なるプログラムを実行する場合、同じ仮想IDが互いに異なるニューラルプロセッサに割り当てられ得るが、互いに同じプログラムをともに実行する場合は、物理ID(すなわち、各々のニューラルプロセッサの固有ID)と仮想IDとは1:1で対応し得る。
【0219】
図16は、本発明のいくつかの実施例によるニューラルプロセッシング装置の仮想IDの割り当ておよびVPIDテーブルを説明するための図である。
【0220】
図16を参照すると、第1セットSet1の第1~第4ニューラルプロセッサPP0~PP3が、第1~第4仮想ID(VP0~VP3)を割り当てられた場合を説明する。物理IDと仮想IDの手順は、互いに同一でなくて良い。すなわち、第1ニューラルプロセッサ1000には、第1仮想ID(VP0)ではなく、第3仮想ID(VP2)が割り当てられ得る。第2ニューラルプロセッサ1000には、第2仮想ID(VP1)が割り当てられ、第3ニューラルプロセッサ1000には、第1仮想ID(VP0)が割り当てられ得る。第4ニューラルプロセッサ1000には、第4仮想ID(VP3)が割り当てられ得る。
【0221】
これにより、VPIDテーブルTB_VTPは、仮想IDに該当する物理IDを記録し得る。例えば、VPIDテーブルTB_VTPが3、0、1、2の値が順次記録される場合、それぞれ逆順に第1~第4仮想ID(VP0~VP3)がどの物理IDに対応するかを確認し得る。
【0222】
具体的に、第1仮想ID(VP0)が割り当てられたニューラルプロセッサは、数字2によって第3ニューラルプロセッサ1000であり、第2仮想ID(VP2)が割り当てられたニューラルプロセッサは、数字1によって第2ニューラルプロセッサ1000である。第3仮想ID(VP2)が割り当てられたニューラルプロセッサは、数字0によって第1ニューラルプロセッサ1000であり、第4仮想ID(VP4)が割り当てられたニューラルプロセッサは、数字3によって第4ニューラルプロセッサ1000である。
【0223】
図17は、シンクターゲットとVPIDテーブルによる物理IDの識別過程を説明するための図である。
【0224】
図17を参照すると、L3シンクターゲットSm_Vは、同期化信号を送るニューラルプロセッサのそれぞれが生成した信号であり得る。つまり、L3シンクターゲットSm_Vは、例えば、4つのフィールドを含み得る。これは、同じセットに4つのニューラルプロセッサがあると言うことに起因し得る。L3シンクターゲットSm_Vの各々のフィールドは、第1~第4仮想ID(VP0~VP3)に対応し得る。すなわち、L3シンクターゲットSm_Vに1、0、1、1が記載されていると、第1~第4仮想ID(VP0~VP3)には、逆順で1、1、0、1がそれぞれ対応され得る。
【0225】
L3シンクターゲットSm_Vの「1」の意味は、L3シンクターゲットSm_Vによる同期化信号が伝達されるべきニューラルプロセッサ1000の仮想IDを表示するものであり得る。つまり、1、0、1、1のうち最後の1は、第1仮想ID(VP0)のニューラルプロセッサに、L3シンクターゲットSm_Vによる同期化信号が伝達されるべきと言う意味であり得る。つまり、第3仮想ID(VP2)のニューラルプロセッサを除く、残り3つのニューラルプロセッサにL3シンクターゲットSm_Vによる同期化信号が伝達されるべきことが1、0、1、1で表現され得る。
【0226】
L3シンクターゲットSm_Vによる同期化信号を送るべきニューラルプロセッサは、L3シンクターゲットSm_VによってL3シンクターゲットSm_Vによる同期化信号が伝達されるべきニューラルプロセッサの仮想IDが、第1、第2および第4仮想ID(VP0、VP1、VP3)で識別された後は、VPIDテーブルTB_VTPにより該当するニューラルプロセッサの物理IDを確認し得る。ニューラルプロセッサは、物理IDを確認してこそ、実際のアドレスを確認でき得る。
【0227】
VPIDテーブルTB_VTPが3、0、1、2の値を持っているので、第1、第2および第4仮想ID(VP0、VP1、VP3)の物理IDが、それぞれ2、1、3であることが分かる。すなわち、第2~第4ニューラルプロセッサPP1~PP3が、L3シンクターゲットSm_Vによる同期化信号を受信するニューラルプロセッサであり得る。
【0228】
図18は、ディープラーニング作業の手順を説明するための有向非巡回グラフ(Directed Acyclic Graph:DAG)である。
【0229】
図18を参照すると、本発明のいくつかの実施例によるニューラルプロセッシング装置の演算作業は、有向非巡回グラフによって表現され得る。この際、現在作業がTaskNと表現されると、以前の作業はTask(N-1)であり、次の作業はTask(N+1)であり得る。
【0230】
すなわち、現在の作業であるTaskNが実行されるためには、Task(N-1)が終了されるべきであり、同様に、次の作業であるTask(N+1)が実行されるためには、現在の作業であるTaskNが完了されるべきである。
【0231】
したがって、それぞれの作業が完了したという同期化信号が、作業を実行したニューラルプロセッサから送信されるべきであり、同期化信号は、次の作業を実行するべき依存性チェーン(dependency chain)によって決められ得る。これにより、L3シンクターゲットSm_Vは、次の作業を実行するべきニューラルプロセッサに対する情報がライト(write)された命令であり得る。L3シンクターゲットSm_Vに値がライトされると、それに応じて同期化信号が伝送され得る。
【0232】
図19は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL3同期化のためのシンクターゲットによる同期化信号送信動作を説明するための概念図である。
【0233】
図19を参照すると、第1ニューラルプロセッサ1000が、シンクターゲットSm_Vによる同期化信号を第2~第4ニューラルプロセッサPP1~PP3に伝送し得る。これにより、SoCレベル、すなわち、L3(level3)の同期化が実行され得る。
【0234】
本発明のいくつかの実施例によるニューラルプロセッシング装置は、第2~第4ニューラルプロセッサPP1~PP3にそれぞれ対応する第1~第3セマフォメモリsmp1~smp3を含み得る。第1~第3セマフォメモリsmp1~smp3は、第2~第4ニューラルプロセッサPP1~PP3のそれぞれに含まれ得る。第1~第3セマフォメモリsmp1~smp3は、互いに同一形態を有し得る。したがって、以下では第1セマフォメモリsmp1についてのみ詳細に説明する。
【0235】
第1セマフォメモリsmp1は、第2ニューラルプロセッサ1000に対応し得る。第1セマフォメモリsmp1は、第1セットSet1に含まれている4つのニューラルプロセッサにそれぞれ対応する4つのフィールドを含み得る。
【0236】
例えば、第1セマフォメモリsmp1は、第1~第4フィールドを含み、第1~第4フィールドは、それぞれ第1~第4ニューラルプロセッサPP0~PP3に対応し得る。すなわち、第1~第4フィールドは、第1~第4ニューラルプロセッサPP0~PP3の物理IDと同順で整列され得る。
【0237】
すなわち、第1セマフォメモリsmp1の第1フィールドは、第1ニューラルプロセッサ1000に対する部分で、第1ニューラルプロセッサ1000からL3シンクターゲットSm_Vによる同期化信号が受信されると1で表現され、でなければ0で表現され得る。もちろん、これとは逆に表現することも可能であり得る。
【0238】
同様に、第2セマフォメモリsmp2および第3セマフォメモリsmp3の第1フィールド値も、第1ニューラルプロセッサ1000によってL3シンクターゲットSm_Vによる同期化信号を受信して1で表示され得る。このように、第1セマフォメモリsmp1の1、0、1、1の表示は、第1、第3および第4ニューラルプロセッサPP0、PP2、PP3によって、L3シンクターゲットSm_Vによる同期化信号が受信されることを意味し得る。
【0239】
現在作業であるTaskNが終了すると、第1ニューラルプロセッサ1000は、次の作業であるTask(N+1)の開始のために、L3シンクターゲットSm_Vによる同期化信号を図4におけるL3シンクチャンネル6300を介して伝送し得る。このような同期化は、他のニューラルプロセッサ1000によってもそれぞれ実行され得る。
【0240】
本実施例のニューラルプロセッシング装置の同期化作業は、中央で制御する制御プロセッサが別途存在しないので、並列的に実行することができ、レイテンシーの発生を最小化し得る。また、このような同期化による作業の依存性を考慮してスケジューリングをしなければならないオーバーヘッドも要求されないので、装置全体の効率が最大化し得る。
【0241】
図20は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL3同期化のためのシンクターゲットによる同期化信号受信動作を説明するための概念図である。
【0242】
図20を参照すると、第1ニューラルプロセッサ1000は、第1、第3および第4ニューラルプロセッサPP0、PP2、PP3から同期化信号を受信し得る。これにより、第1ニューラルプロセッサ1000に対応する第1セマフォメモリsmp1の第1~第4フィールドは、それぞれ1、0、1、1で満たされ得る。
【0243】
本発明のいくつかの実施例によるニューラルプロセッシング装置は、第1~第4フィールドにそれぞれ対応する第1~第4FIFOバッファーB1~B4を含み得る。第1~第4FIFOバッファーは、FIFO(First In First Out)方式で第1セマフォメモリsmp1の第1~第4フィールドの値をそれぞれ第1ニューラルプロセッサ1000に提供し得る。
【0244】
一般的に、ニューラルプロセッシング装置の作業は、図18のように単純な直線で表現されるだけではない。つまり、1つの作業は、以前の複数の作業による依存性チェーンを有し得る。これにより、1つ以上の依存性チェーンを有する作業の場合、複数のセマフォメモリが必要であり得る。
【0245】
しかし、セマフォメモリの数が増えると、その分必要なメモリスペースも増えることであるため、小さなスペースに要求されるリソースが過剰となり得る。そのため、本発明のいくつかの実施例によるニューラルプロセッシング装置は、ニューラルプロセッサ当たり1個のセマフォメモリにFIFOバッファーを追加して、メモリスペースの効率的な活用を図り得る。
【0246】
すなわち、複数の依存性による同期化信号がFIFOバッファーに順次入ってくると、1つのセマフォメモリでも順次同期化信号を逃すことなく順番に処理し得る。したがって、本実施例は、メモリ効率も高めながら、複数の依存性チェーンの作業も無理なく実行し得る。
【0247】
図21は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL1およびL2同期化を説明するためのブロック図であり、図22は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL1およびL2同期化を説明するためのラダー図である。
【0248】
図21を参照すると、第1ニューラルコア100aは、第1ニューラルコアストアユニット112bと、第1ニューラルコアロードユニット112aと、第1ローカルメモリ120aと、第1ローカルメモリストアユニット111bと、第1ローカルメモリロードユニット111aとを含み得る。
【0249】
同様に、第2ニューラルコア100bは、第2ニューラルコアストアユニット112dと、第2ニューラルコアロードユニット112cと、第2ローカルメモリ120bと、第2ローカルメモリストアユニット111dと、第2ローカルメモリロードユニット111cとを含み得る。
【0250】
第2ニューラルコア100bの第2ニューラルコアストアユニット112dが、L1シンク要求信号を生成する(S10)。
【0251】
L1シンク要求(sync request)信号は、後に、L1シンク生成(sync generate)信号が来たら、そのとき同期化され、それまでは待機(stall)状態で維持させ得る。つまり、同期化のための準備状態にL1シンク要求信号が生成され得る。
【0252】
第4ニューラルコア100dの第4ニューラルコアロードユニット112fが、レシーブL2シンクを生成し得る(S11)。
【0253】
複数のニューラルコアがあるとき、それぞれの同期化準備のタイミングは異なり得る。当然、第4ニューラルコア100dのように、早くレシーブL2シンクが生成されることもあり得る。
【0254】
次いで、第2ローカルメモリストアユニット111dが、第2ローカルメモリ120bにデータを保存する(S12、丸1)。続いて、第2ローカルメモリストアユニット111dは、第2ニューラルコアストアユニット112dにL1シンク生成信号を伝送する(S13、丸2)。この際、L1シンク生成信号は、L1シンクパス(L1 Sync Path)を用いて伝送され得る。これにより、第2ニューラルコアストアユニット112dのL1シンク要求信号が同期化され得る。
【0255】
次いで、第2ニューラルコアストアユニット112dが、第1ニューラルコア100aの第1ニューラルコアロードユニット112a、第3ニューラルコア100cの第3ニューラルコアロードユニット112eおよび第4ニューラルコア100dの第4ニューラルコアロードユニット(112f)に、センドL2シンクをブロードキャストし得る(S14、S15、S16、丸3)。この際、センドL2シンクは、L2シンクパス300を介して伝送され得る。
【0256】
この際、既にレシーブL2シンクが生成された第4ニューラルコア100dは、直ちに同期化が行われ、ロード作業が実行される(S17)。
【0257】
これとは異なり、第1ニューラルコア100aおよび第3ニューラルコア100cは、レシーブL2シンクが生成されるとき(S18)、ロード作業が実行され得る(S19、丸4、丸5)。
【0258】
ロード作業は、第1ニューラルコアロードユニット112aが、ローカルインターコネクション200を介して第2ローカルメモリ120bにデータ要求を実行し(丸4)、要求に対するデータ返信を受信し得る(丸5)。
【0259】
同様に、第3ニューラルコア100cも、レシーブL2シンクが生成されるとき(S20)、ロード作業が実行され得る(S21)。
【0260】
本実施例のL2(レベル2)の同期化とL1(レベル1)の同期化とのいずれも制御プロセッサによって管理されるのではなく、各々の要素が並列的に実行することであるので、レイテンシーと効率の面で大きな利点をもたらし得る。
【0261】
図23は、本発明のいくつかの実施例によるニューラルプロセッシング装置の命令語集合構造を説明するための図である。
【0262】
図23を参照すると、本発明のいくつかの実施例によるニューラルプロセッシング装置の命令語集合構造(ISA、Instruction set architecture)は、オペレーションコード(opcode)と、ソースレジスタ(Src0)と、L1シンクターゲット(Target for L1 SYNC)と、L2シンクターゲット(Target for L2 SYNC)と、L3シンクターゲット(Target for L3 SYNC)と、ブランチエンド(BE)とを含み得る。つまり、命令語集合の構造にレベル1からレベル3までのシンクターゲットが全て含まれ得る。
【0263】
図24は、本発明のいくつかの実施例によるニューラルプロセッシング装置のソフトウェア階層構造を説明するためのブロック図である。
【0264】
図24を参照すると、本発明のいくつかの実施例によるニューラルプロセッシング装置のソフトウェア階層構造は、DL(Deep Learning)フレームワーク10000と、コンパイラスタック20000と、バックエンドモジュール30000とを含み得る。
【0265】
DLフレームワーク10000は、ユーザが使用するディープラーニングモデルネットワークに対するフレームワークのことを意味し得る。例えば、テンソルフロー(TensorFlow、登録商標)やパイトーチ(PyTorch、登録商標)のようなプログラムを利用して、学習が完了したニューラルネットワークが生成され得る。
【0266】
コンパイラスタック20000は、アダプテーションレイヤー21000と、演算ライブラリ(Compute Library)22000と、フロントエンドコンパイラ23000と、バックエンドコンパイラ24000と、ランタイムドライバ25000とを含み得る。
【0267】
アダプテーションレイヤー21000は、DLフレームワーク10000に接するレイヤーであり得る。アダプテーションレイヤー21000は、DLフレームワーク10000で生成されたユーザのニューラルネットワークモデルを量子化し、グラフ修正を実行し得る。また、アダプテーションレイヤー21000は、モデルのタイプを必要なタイプに変換させ得る。
【0268】
フロントエンドコンパイラ23000は、アダプテーションレイヤー21000から伝達された様々なニューラルネットワークモデルおよびグラフを一定の中間表現(intermediate representation、IR)に変換させ得る。変換されたIRは、後に、バックエンドコンパイラ24000で扱いやすい、予め設定された表現であり得る。
【0269】
このような、フロントエンドコンパイラ23000のIRは、グラフ次元で予めできる最適化が実行され得る。また、フロントエンドコンパイラ23000は、ハードウェアに最適化したレイアウトに変換させる作業によって、最終的にIRを生成し得る。
【0270】
バックエンドコンパイラ24000は、フロントエンドコンパイラ23000で変換されたIRを最適化し、バイナリファイルに変換して、ランタイムドライバが使用できるようにする。バックエンドコンパイラ24000は、ハードウェアの詳細に合ったスケールでジョブ(job)を分割して、最適化したコードを生成し得る。
【0271】
演算ライブラリ22000は、様々なオペレーションの中で、ハードウェアに適した形態で設計されたテンプレートオペレーションを保存し得る。演算ライブラリ22000は、ハードウェアが必要な複数のテンプレートオペレーションをベックエンドコンパイラ24000に提供して、最適化したコードが生成されるようにする。
【0272】
ランタイムドライバ25000は、駆動中にモニタリングを行い続け、本発明のいくつかの実施例によるニューラルネットワーク装置の駆動を実行し得る。具体的に、ニューラルネットワーク装置のインタフェイスの実行を担当し得る。
【0273】
バックエンドモジュール30000は、ASIC(Application Specific Integrated Circuit)31000と、FPGA(Field programmable gate array)32000と、C-モデル33000とを含み得る。ASIC31000は、予め定められた設計方式により決定されるハードウェアチップを意味し得る。FPGA32000は、プログラム可能なハードウェアチップであり得る。C-モデル33000は、ソフトウェア上にハードウェアを模倣して実現したモデルを意味し得る。
【0274】
バックエンドモジュール30000は、コンパイラスタック20000により生成されたバイナリコードを利用して様々な作業を実行し、結果を導出し得る。
【0275】
図25は、本発明のいくつかの実施例によるニューラルプロセッシング装置が実行するディープラーニング演算を説明するための概念図である。
【0276】
図25を参照すると、人工ニューラルネットワークモデル40000は、機械学習モデルの一例として、機械学習(Machine Learning)技術と認知科学において、生物学的ニューラルネットワークの構造に基づいて実現された、統計学的学習アルゴリズムまたはそのアルゴリズムを実行する構造である。
【0277】
人工ニューラルネットワークモデル40000は、生物学的ニューラルネットワークにおけるように、シナプスの結合でネットワークを形成した人工ニューロンであるノード(Node)が、シナプスの加重値を繰り返し調整して、特定の入力に対応した正しい出力と、推論された出力との間の誤差が減少するように学習することにより、問題解決能力を有する機械学習モデルを示し得る。例えば、人工ニューラルネットワークモデル40000は、機械学習、ディープラーニングなどの人工知能学習法に使用される任意の確率モデル、ニューラルネットワークモデルなどを含み得る。
【0278】
本発明のいくつかの実施例によるニューラルプロセッシング装置は、このような人工ニューラルネットワークモデル40000の形態を実現して演算を実行し得る。例えば、人工ニューラルネットワークモデル40000は、入力映像を受信し、入力映像に含まれている対象の少なくとも一部に関する情報を出力し得る。
【0279】
人工ニューラルネットワークモデル40000は、多層のノードとそれらの間の連結で構成される多層パーセプトロン(MLP:multilayer perceptron)で実現される。本実施例による人工ニューラルネットワークモデル40000は、MLPを含む様々な人工ニューラルネットワークモデル構造の1つを利用して実現され得る。図25に示すように、人工ニューラルネットワークモデル40000は、外部から入力信号またはデータ40100を受信する入力層41000と、入力データに対応する出力信号またはデータ40200を出力する出力層44000と、入力層41000と出力層44000との間に位置し、入力層41000から信号を受信し特性を抽出して出力層44000に伝達するn個(ここで、nは正の整数)の隠れ層42000~43000とで構成される。ここで、出力層44000は、隠れ層42000~43000から信号を受信して外部に出力する。
【0280】
人工ニューラルネットワークモデル40000の学習方法には、教師信号(正解)の入力によって問題の解決に最適化するよう学習する指導学習(Supervised Learning)方法と、教師信号を必要としない非指導学習(Unsupervised Learning)方法とがある。
【0281】
ニューラルプロセッシング装置は、人工ニューラルネットワークモデル40000を学習させるための学習データをシミュレーションにより直接生成し得る。このように、人工ニューラルネットワークモデル40000の入力層41000と出力層44000とに、複数の入力変数と対応する複数の出力変数がそれぞれマッチングされ、入力層41000、隠れ層(42000~43000)および出力層44000に含まれているノード間のシナプス値が調整されることにより、特定の入力に対応する正しい出力が抽出されるように学習され得る。このような学習過程により、人工ニューラルネットワークモデル40000の入力変数に隠されている特性を把握することができ、入力変数に基づいて計算された出力変数と目標出力との間の誤差が減らされるように、人工ニューラルネットワークモデル40000のノード間のシナプス値(またはウェイト)を調整し得る。
【0282】
図26は、本発明のいくつかの実施例によるニューラルプロセッシング装置のニューラルネットワークの学習および推論動作を説明するための概念図である。
【0283】
図26を参照すると、学習過程(Training Phase)では、多数の学習資料TDが人工ニューラルネットワークモデルNNにフォワードされ、再びバックワードされる過程を経ることができる。これにより、人工ニューラルネットワークモデルNNの各ノードのウェイトとバイアスとが調整され、それにより、ますますより正確な結果を導き出せるように学習が実行され得る。このように、学習過程により人工ニューラルネットワークモデルNNは、学習されたニューラルネットワークモデルNN_Tに変換され得る。
【0284】
推論過程(Inference Phase)では、新しいデータNDがさらに学習されたニューラルネットワークモデルNN_Tに入力され得る。学習されたニューラルネットワークモデルNN_Tは、新しいデータNDを入力として、すでに学習されたウェイトとバイアスとによって結果データRDを導出し得る。このような結果データRDは、学習過程でどのような学習資料TDで学習したかと、どれほど多い学習資料TDを利用したかとが重要であり得る。
【0285】
以下、図17図19図20図27、および図28を参照して、本発明のいくつかの実施例によるニューラルプロセッシング装置の同期化方法を説明する。前述の実施例と重複する部分は、簡略化または省略する。
【0286】
図27は、本発明のいくつかの実施例によるニューラルプロセッシング装置の同期化方法を説明するためのフローチャートであり、図28は、図27におけるL3シンクターゲット保存段階およびFIFO方式で提供段階を詳細に説明するためのフローチャートである。
【0287】
図27を参照すると、第1ニューラルプロセッサが、L3シンクターゲットを生成する(S100)。
【0288】
具体的に、図17を参照すると、L3シンクターゲットSm_Vは、同期化信号を送るニューラルプロセッサのそれぞれが生成した信号であり得る。つまり、L3シンクターゲットSm_Vは、例えば、4つのフィールドを含み得る。これは、同じセットに4つのニューラルプロセッサがあると言うことに起因し得る。L3シンクターゲットSm_Vの各々のフィールドは、第1~第4仮想ID(VP0~VP3)に対応し得る。すなわち、L3シンクターゲットSm_Vに1、0、1、1が記載された場合、第1~第4仮想ID(VP0~VP3)には、逆順で1、1、0、1がそれぞれ対応され得る。
【0289】
再び、図27を参照すると、L3シンクターゲットとVPIDテーブルとを用いて、受信対象である第2ニューラルプロセッサを識別する(S200)。
【0290】
具体的に、図17を参照すると、L3シンクターゲットSm_Vによる同期化信号を送るべきニューラルプロセッサは、L3シンクターゲットSm_Vによって、L3シンクターゲットSm_Vによる同期化信号が伝達されるべきニューラルプロセッサの仮想IDが、第1、第2および第4仮想ID(VP0、VP1、VP3)で識別された後は、VPIDテーブル(TB_VTP)により該当するニューラルプロセッサの物理IDを確認し得る。ニューラルプロセッサは、物理IDを確認してこそ、実際のアドレスを確認でき得る。
【0291】
VPIDテーブルTB_VTPが、3、0、1、2の値を持っているので、第1、第2および第4仮想ID(VP0、VP1、VP3)の物理IDが、それぞれ2、1、3であることが分かる。すなわち、第2~第4ニューラルプロセッサPP1~PP3が、L3シンクターゲットSm_Vによる同期化信号を受信するニューラルプロセッサであり得る。
【0292】
再び、図27を参照すると、L3シンクチャネルを介して、第2ニューラルプロセッサのセマフォメモリに、L3シンクターゲットによる同期化信号を保存させる(S300)。
【0293】
具体的に、図19を参照すると、第1セマフォメモリsmp1は、第1~第4フィールドを含み、第1~第4フィールドは、それぞれ第1~第4ニューラルプロセッサPP0~PP3に対応し得る。すなわち、第1~第4フィールドは、第1~第4ニューラルプロセッサPP0~PP3の物理IDと同順で整列され得る。
【0294】
すなわち、第1セマフォメモリsmp1の第1フィールドは、第1ニューラルプロセッサ1000に対する部分で、第1ニューラルプロセッサ1000からL3シンクターゲットSm_Vによる同期化信号が受信されると1で表現され、でなければ0で表現され得る。もちろん、これとは逆に表現することも可能であり得る。
【0295】
再び図27を参照すると、セマフォメモリの値をFIFO方式で、第2ニューラルプロセッサに提供する(S400)。
【0296】
具体的に、図20を参照すると、本発明のいくつかの実施例によるニューラルプロセッシング装置は、第1~第4フィールドにそれぞれ対応する第1~第4FIFOバッファーB1~B4を含み得る。第1~第4FIFOバッファーは、FIFO方式で第1セマフォメモリsmp1の第1~第4フィールドの値を、それぞれ第1ニューラルプロセッサ1000に提供し得る。
【0297】
図28を参照して、段階S300と段階S400を詳細に説明する。
第2ニューラルプロセッサのセマフォメモリの第1フィールドに、第1ニューラルプロセッサのL1シンクターゲットによる同期化信号を保存し(S310)、セマフォメモリの第1フィールド値をFIFO方式で第2ニューラルプロセッサに提供する(S410)。
【0298】
同様に、第2ニューラルプロセッサのセマフォメモリの第2フィールドに、第2ニューラルプロセッサのL1シンクターゲットによる同期化信号を保存し(S320)、セマフォメモリの第2フィールド値をFIFO方式で第2ニューラルプロセッサに提供する(S420)。
【0299】
第2ニューラルプロセッサのセマフォメモリの第3フィールドに第3ニューラルプロセッサのL1シンクターゲットによる同期化信号を保存し(S330)、セマフォメモリの第3フィールド値をFIFO方式で第2ニューラルプロセッサに提供する(S430)。
【0300】
第2ニューラルプロセッサのセマフォメモリの第4フィールドに、第4ニューラルプロセッサのL1シンクターゲットによる同期化信号を保存し(S340)、セマフォメモリの第4フィールド値をFIFO方式で第2ニューラルプロセッサに提供する(S440)。
【0301】
すなわち、各々のフィールドは、それぞれのニューラルプロセッサに対応し、並列的にFIFO形式で同期化が行われ得る。
【0302】
再び、図27を参照すると、第2ニューラルプロセッサが、L3シンクターゲットにより同期化を実行する(S500)。
【0303】
以下、図21図22図29、および図30を参照して、本発明のいくつかの実施例によるニューラルプロセッシング装置の同期化方法を説明する。前述の実施例と重複する部分は、簡略化または省略する。
【0304】
図29は、本発明のいくつかの実施例によるニューラルプロセッシング装置のL1およびL2レベルの同期化方法を説明するためのフローチャートであり、図30は、図29におけるデータ要求段階を詳細に説明するためのフローチャートである。
【0305】
図29を参照すると、第1ニューラルコアのローカルメモリにデータが保存される(S1100)。次いで、第1ニューラルコア内で、ローカルメモリストアユニットが、L1シンクターゲットによる同期化信号をニューラルコアストアユニットに伝送する(S1200)。
【0306】
具体的に、図21および図22を参照すると、第2ローカルメモリストアユニット(111d)が、第2ローカルメモリ120bにデータを保存する(S12、丸1)。次いで、第2ローカルメモリストアユニット111dは、第2ニューラルコアストアユニット112dにL1シンク生成信号を伝送する(S13、丸2)。この際、L1シンク生成信号は、L1シンクパス(L1 Sync Path)を介して伝送され得る。これにより、第2ニューラルコアストアユニット112dのL1シンク要求信号が同期化され得る。
【0307】
再び、図29を参照すると、第1ニューラルコアのニューラルコアストアユニットが、第2~第4ニューラルコアそれぞれのニューラルコアロードユニットに、L2シンクターゲットによる同期化信号を伝送する(S1300)。
【0308】
具体的に、図21および図22を参照すると、続けて、第2ニューラルコアストアユニット112dが、第1ニューラルコア100aの第1ニューラルコアロードユニット112a、第3ニューラルコア100cの第3ニューラルコアロードユニット112eおよび第4ニューラルコア100dの第4ニューラルコアロードユニット(112f)に、センドL2シンクをブロードキャストし得る(S14、S15、S16、丸3)。この際、センドL2シンクは、L2シンクパス300を介して伝送され得る。
【0309】
再び、図29を参照すると、第2~第4ニューラルコアロードユニットが、ローカルインターコネクションを介して第1ニューラルコアのローカルメモリにデータを要求する(S1400)。
【0310】
具体的に図30を参照すると、第2ニューラルコアが、L2シンクターゲットによる同期化信号を受信し(S1410)、レシーブL2シンク信号が既に生成されているかを判断する(S1420)。もし、そうでなければ、レシーブL2シンク信号生成を待機し(S1430)、もし、そうであれば、第2ニューラルコアが、第1ニューラルコアのローカルメモリにデータを要求する(S1440)。
【0311】
再び、図29を参照すると、第2~第4ニューラルコアロードユニットがデータを受信する(S1500)。
【0312】
以上の説明は、本実施例の技術思想を例示的に説明したものに過ぎず、本実施例が属する技術分野において通常の知識を有する者であれば、本実施例の本質的な特性から逸脱しない範囲で、様々な修正および変形が可能なことである。したがって、本実施例は、本実施例の技術思想を限定するためのものではなく、説明するためのものであり、このような実施例によって本実施例の技術思想の範囲が限定されるものではない。本実施例の保護範囲は、以下の特許請求の範囲によって解釈されるべきであり、それと同等の範囲内にあるすべての技術思想は、本実施例の権利範囲に含まれるものと解釈されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
【国際調査報告】