(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-23
(54)【発明の名称】人工知能コア、人工知能コアシステムおよび人工知能コアシステムのロード/ストア方法
(51)【国際特許分類】
G06F 9/34 20180101AFI20241016BHJP
G06F 17/16 20060101ALI20241016BHJP
【FI】
G06F9/34 380
G06F9/34 350Z
G06F17/16 B
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024525891
(86)(22)【出願日】2021-12-30
(85)【翻訳文提出日】2024-05-01
(86)【国際出願番号】 KR2021020260
(87)【国際公開番号】W WO2023080333
(87)【国際公開日】2023-05-11
(31)【優先権主張番号】10-2021-0149224
(32)【優先日】2021-11-02
(33)【優先権主張国・地域又は機関】KR
(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)【発明者】
【氏名】ボン ギョルリョル
【テーマコード(参考)】
5B033
5B056
【Fターム(参考)】
5B033AA04
5B033DB03
5B056AA04
5B056BB31
5B056FF05
(57)【要約】
本発明は、人工知能コア、人工知能コアシステムおよび人工知能コアシステムのロード/ストア方法に関するものである。
該人工知能コアは、入力アクティベーションと加重値とを受信して、2次元マトリックス演算により出力アクティベーションを生成するプロセスユニットと;外部インタフェイスを介して受信したプログラムおよび入力データをオンチップバッファに伝達し、出力データを前記オンチップバッファから外部インタフェイスに伝達するロード/ストア作業を実行し、ロード/ストア作業は、プロセスユニットが実行する現在実行作業に対するメインロード/ストア作業と、プロセスユニットが現在実行作業後に実行する待機実行作業に対する待機ロード/ストア作業とを含むロード/ストアユニットと;を有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
入力アクティベーションと加重値(weight)とを受信して、2次元マトリックス演算により出力アクティベーションを生成するプロセスユニットと、
外部インタフェイスを介して受信したプログラムおよび入力データをオンチップバッファに伝達し、出力データを前記オンチップバッファから前記外部インタフェイスに伝達するロード/ストア作業を実行し、前記ロード/ストア作業が、前記プロセスユニットが実行する現在実行作業に対するメインロード/ストア作業と、前記プロセスユニットが前記現在実行作業後に実行する待機実行作業に対する待機ロード/ストア作業とを含むロード/ストアユニットと、を有する、人工知能コア。
【請求項2】
前記入力アクティベーションを前記プロセスユニットに提供し、前記プロセスユニットから前記出力アクティベーションを受信し、前記入力アクティベーションおよび前記出力アクティベーションを一時的に保存するアクティベーションバッファと、
前記プロセスユニットが演算を行うためのプログラムおよび入力データを一時的に保存して前記プロセスユニットに伝達し、前記プロセスユニットから受信した出力データを一時的に保存し、前記入力データが前記入力アクティベーションおよび前記加重値を含むオンチップバッファと、
前記オンチップバッファから前記入力アクティベーションを前記アクティベーションバッファに伝達し、前記アクティベーションバッファから前記出力アクティベーションを前記オンチップバッファに伝達するアクティベーションロード/ストアユニットと、を含む、
請求項1に記載の人工知能コア。
【請求項3】
前記待機ロード/ストア作業は、前記外部インタフェイスの帯域幅のうち、前記メインロード/ストア作業によって使用されない帯域幅を使用して行われる、
請求項1に記載の人工知能コア。
【請求項4】
前記ロード/ストアユニットは、
前記メインロード/ストア作業を実行し、前記オンチップバッファに第1ロードデータおよび第1ストアデータを伝送するメインロード/ストアユニットと、
前記待機ロード/ストア作業を実行し、前記オンチップバッファに第2ロードデータおよび第2ストアデータを伝送するヒドゥンロード/ストアユニットとを含む、
請求項1に記載の人工知能コア。
【請求項5】
前記ヒドゥンロード/ストアユニットは、
タスクコントローラから受信した待機ロード命令をフェッチして、待機ロード命令発行を実行するヒドゥンロードユニットと、
前記タスクコントローラから受信した待機ストア命令をフェッチして、待機ストア命令発行を実行するヒドゥンストアユニットと、
前記ヒドゥンロードユニットから前記ロード命令に対応するメモリアクセス要求を順次受信するヒドゥンロードバッファと、
前記ヒドゥンストアユニットから前記ストア命令に対応するメモリアクセス要求を順次受信するヒドゥンストアバッファと、
前記ヒドゥンロードバッファからメモリアクセス要求を受信して、前記第2ロードデータを前記オンチップバッファに伝達するヒドゥンロードエンジンと、
前記ヒドゥンストアバッファからメモリアクセス要求を受信して、前記第2ストアデータを前記オンチップバッファに伝達するヒドゥンストアエンジンと、を含む、
請求項4に記載の人工知能コア。
【請求項6】
前記ロード/ストアユニットは、最近使用された仮想メモリアドレスと物理メモリアドレスとの変換テーブルを保存する変換インデックスバッファをさらに含む、
請求項5に記載の人工知能コア。
【請求項7】
前記メインロード/ストアユニットは、
ロード命令をフェッチして、ロード命令発行を実行するロードユニットと、
ストア命令をフェッチして、ストア命令発行を実行するストアユニットと、
前記ロードユニットから、メモリアクセス要求を順次受信するロードバッファと、
前記ストアユニットから、メモリアクセス要求を順次受信するストアバッファと、
前記ロードバッファからメモリアクセス要求を受信して、第1ロードデータを前記オンチップバッファに伝達するロードエンジンと、
前記ストアバッファからメモリアクセス要求を受信して、第1ストアデータを前記オンチップバッファに伝達するストアエンジンと、を含む、
請求項4に記載の人工知能コア。
【請求項8】
前記第1ロードデータは、前記第2ロードデータよりも優先順位が高く、
前記第1ストアデータは、前記第2ストアデータより優先順位が高い、
請求項4に記載の人工知能コア。
【請求項9】
前記優先順位は、前記第1ロードデータおよび第2ロードデータと、前記第1ストアデータおよび第2ストアデータにタグ付けされる、
請求項8に記載の人工知能コア。
【請求項10】
前記優先順位は、前記ロードエンジンまたは前記ストアエンジンによってタグ付けされる、
請求項9に記載の人工知能コア。
【請求項11】
前記ロード/ストアユニットは、前記第1ロードデータおよび第2ロードデータと、前記第1ストアデータおよび第2ストアデータとを受信して、ラウンドロビン方式で前記オンチップバッファに伝達するアービターをさらに含む、
請求項4に記載の人工知能コア。
【請求項12】
前記オンチップバッファは複数のバンクを含み、
単位クロックサイクル当りの、前記第1ロードデータ、前記第2ロードデータ、前記第1ストアデータ、および前記第2ストアデータの入力数を、前記オンチップバッファのバンクの数で除した値は、前記アービターの基準入出力比よりも小さく、
前記基準入出力比は、前記アービターによって前記第1ロードデータ、前記第2ロードデータ、前記第1ストアデータ、および前記第2ストアデータそれぞれの待機時間が発生しない範囲で最も大きい入力と出力との比の値である、
請求項11に記載の人工知能コア。
【請求項13】
前記ヒドゥンロード/ストアユニットと、前記メインロード/ストアユニットとは、互いに少なくとも一部のハードウェアを共有する、
請求項4に記載の人工知能コア。
【請求項14】
前記ヒドゥンロード/ストアユニットと、前記メインロード/ストアユニットとは、互いに異なるハードウェアで実現される、
請求項4に記載の人工知能コア。
【請求項15】
前記プロセスユニットは、
前記入力アクティベーションと前記加重値とを順次乗算する2次元マトリクス演算を実行し、前記出力アクティベーションを生成するPEアレイ(processing element array)と、
1次元演算を実行するベクトルユニットとを含む、
請求項1に記載の人工知能コア。
【請求項16】
前記外部インタフェイスは、データバス、外部チップインタフェイスまたはローカルバスのうちいずれか1つを含む、
請求項1に記載の人工知能コア。
【請求項17】
演算を行うためのプログラムおよび入力データを保存するメモリと、
前記メモリから前記入力データおよび制御信号を伝達するバスと、
前記プログラム、前記入力データおよび前記制御信号を受信して2次元マトリクス演算を実行し、出力データを生成する人工知能コアと、を含み、
前記人工知能コアは、
前記メモリから前記プログラムおよび前記入力データをロードし、前記出力データを前記メモリに保存するロード/ストアユニットと、
前記プログラムおよび前記入力データを用いて演算を実行するプロセスユニットと、
前記プロセスユニットと前記ロード/ストアユニットとの間で、前記プログラム、前記入力データおよび前記出力データを一時的に保存するオンチップバッファとを含み、
前記バスは、前記制御信号を伝達するコントロールバスと、前記入力データおよび前記出力データを伝達するデータバスとを含み、
前記ロード/ストアユニットは、前記プロセスユニットが現在実行する現在実行作業に対するメインロード/ストア作業と、前記プロセスユニットが前記現在実行作業後に実行する待機実行作業に対する待機ロード/ストア作業とを実行し、前記待機ロード/ストア作業は、前記データバスの帯域幅のうち、前記メインロード/ストア作業によって使用されない帯域幅を使用して実行される、
人工知能コアシステム。
【請求項18】
前記メモリは、前記人工知能コアと同一のチップ内に形成されたオンチップメモリと、
前記人工知能コアとは分離して形成されたオフチップメモリとを含む、
請求項17に記載の人工知能コアシステム。
【請求項19】
前記人工知能コアは、第1人工知能コアであり、
前記第1人工知能コアとは異なる第2人工知能コアをさらに含み、
前記バスは、前記第1人工知能コアおよび第2人工知能コア間で、前記入力データおよび前記出力データを伝達するローカルバスをさらに含み、
前記ロード/ストアユニットは、前記ローカルバスの帯域幅のうち、前記メインロード/ストア作業によって使用されない帯域幅を使用して前記待機ロード/ストア作業を実行する、
請求項17に記載の人工知能コアシステム。
【請求項20】
前記ロード/ストアユニットは、
前記メインロード/ストア作業を実行するメインロード/ストアユニットと、
前記待機ロード/ストア作業を実行するヒドゥンロード/ストアユニットとを含み、
前記待機ロード/ストア作業は、前記メインロード/ストア作業に比べて低い優先順位を有する、
請求項17に記載の人工知能コアシステム。
【請求項21】
前記優先順位は、タグ付けされた形態で識別される、
請求項20に記載の人工知能コアシステム。
【請求項22】
前記人工知能コアは、
前記プロセスユニットに入力アクティベーションを提供し、前記プロセスユニットから出力アクティベーションを受信するアクティベーションバッファと、
前記オンチップバッファから前記入力アクティベーションを呼び出して前記アクティベーションバッファに伝達し、前記アクティベーションバッファから前記出力アクティベーションを前記オンチップバッファに伝達するアクティベーションロード/ストアユニットとをさらに含む、
請求項17に記載の人工知能コアシステム。
【請求項23】
メインロード/ストアユニットが、第1作業に対する第1プログラムをロードし、
前記第1プログラムを用いて第1作業を実行し、
前記第1作業中に前記メインロード/ストアユニットが動作しないと、ヒドゥンロード/ストアユニットが、前記第1作業後に実行待機となっている第2作業に対する第2プログラムをロードし、
前記第1作業および前記第2プログラムのロード作業が終了すると、前記第2プログラムを用いて第2作業を実行することを含む、
人工知能コアシステムのロード/ストア方法。
【請求項24】
前記第2プログラムをロードすることは、
前記第2プログラムに対する待機ロード命令をフェッチし、
前記フェッチされた待機ロード命令を発行し、
前記発行された待機ロード命令に対応するメモリアクセス要求をヒドゥンロードバッファに伝送し、
前記メモリアクセス要求を前記ヒドゥンロードバッファが順次ロードエンジンに伝送し、
前記ロードエンジンは、前記メモリアクセス要求に応じて、データバスを介してオフチップメモリから第2ロードデータを受信し、
前記第2ロードデータをオンチップバッファに伝達することを含む、
請求項23に記載の人工知能コアシステムのロード/ストア方法。
【請求項25】
前記第1プログラムをロードすることは、
前記第1プログラムに対するロード命令をフェッチし、
前記フェッチされたロード命令を発行し、
前記発行されたロード命令に対応するメモリアクセス要求をロードバッファに伝送し、
前記メモリアクセス要求を前記ロードバッファが順次ロードエンジンに伝送し、
前記ロードエンジンは、前記メモリアクセス要求に応じて、データバスを介してオフチップメモリから第1ロードデータを受信し、
前記第1ロードデータをオンチップバッファに伝達することを含む、
請求項24に記載の人工知能コアシステムのロード/ストア方法。
【請求項26】
前記第1ロードデータは、前記第2ロードデータよりも優先順位が高い、
請求項25に記載の人工知能コアシステムのロード/ストア方法。
【請求項27】
メインロード/ストアユニットが、第1作業に対する第1データのロード作業を実行し、
前記第1データを用いて第1作業を実行し、
前記第1作業中に前記メインロード/ストアユニットが動作しないことを確認すると、ヒドゥンロード/ストアユニットが、前記第1作業後に実行待機となっている第2作業に対する第2データのロード作業を実行し、
前記第1作業および前記第2データのロード作業が終了すると、前記第2データを用いて第2作業を実行することを含む、
人工知能コアシステムのロード/ストア方法。
【請求項28】
前記第1作業は、ニューラルネットワークにおける第1レイヤーのマトリックス演算作業であり、
前記第2作業は、ニューラルネットワークにおける第2レイヤーのマトリックス演算作業であり、
前記第2データは、前記第2レイヤーのカーネルデータである、
請求項27に記載の人工知能コアシステムのロード/ストア方法。
【請求項29】
前記第1データは、入力アクティベーションを含み、
前記第1作業を行うことは、
前記入力アクティベーションをアクティベーションバッファに保存し、
プロセスユニットが、前記アクティベーションバッファから前記入力アクティベーションを受信して、出力アクティベーションを生成し、
前記アクティベーションバッファが、前記出力アクティベーションを保存することを含む、
請求項27に記載の人工知能コアシステムのロード/ストア方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、人工知能コア、人工知能コアシステムおよび人工知能コアシステムのロード/ストア方法に関するものである。具体的に、本発明は、人工知能コアを最大限に活用するための人工知能コア、人工知能コアシステムおよび人工知能コアシステムのロード/ストア方法に関するものである。
【背景技術】
【0002】
ここ数年、人工知能(Artificial Intelligence)技術は、第4次産業革命の中核技術として、世界的に最も有望な技術として注目されている。このような人工知能技術の最も大きな問題は、コンピューティング性能である。人間の学習能力と推論能力、知覚能力、自然言語の処理能力などを実現する人工知能技術は、多くのデータを迅速に処理することが最も重要である。
【0003】
初期人工知能のディープラーニング学習と推論には、従来のコンピュータの中央処理装置(CPU;Central processing unit)やグラフィック処理装置(GPU;Graphics Processing Unit)が使われていたが、高いワークロードを有するディープラーニング学習および推論の作業には限界があるため、構造的にディープラーニング作業に特化した人工知能コアが脚光を浴びている。
【0004】
人工知能コアは、内部に多数の乗算器を含んでおり、このような演算装置の演算作業のために、必要なデータとプログラムを呼び出してくるための帯域幅(bandwidth)が十分に確保されることは難しい。
【0005】
したがって、予め時系列的に次の作業に必要なプログラムおよびデータを呼び出してくる方法により、人工知能コアの性能を向上させることは非常に良い方法であり得る。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】韓国登録特許第10-2258566号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の課題は、効率良く最大化し得る人工知能コアを提供することである。
【0008】
また、本発明の他の課題は、外部インタフェイスとの帯域幅を効率良く最大化し得る人工知能コアシステムを提供することである。
【0009】
本発明のまた他の課題は、外部インタフェイスとの帯域幅を効率良く最大化し得る人工知能コアシステムのロード/ストア方法を提供することである。
【0010】
本発明の目的は、前記で述べた目的に限定されず、言及されていない本発明の他の目的および利点は、以下の説明によって理解されることができ、本発明の実施例によってより明確に理解されることである。また、本発明の目的および利点は、特許請求の範囲に示した手段およびその組み合わせにより実現できることが容易に分かることである。
【課題を解決するための手段】
【0011】
前記課題を解決するための本発明のいくつかの実施例による人工知能コアは、入力アクティベーションおよび加重値(weight)を受信して、2次元マトリックス演算により出力アクティベーションを生成するプロセスユニットと、外部インタフェイスを介して受信したプログラムおよび入力データをオンチップバッファに伝達し、出力データを前記オンチップバッファから前記外部インタフェイスに伝達するロード/ストア作業を実行し、前記ロード/ストア作業は、前記プロセスユニットが現在実行する現在実行作業に対するメインロード/ストア作業と、前記プロセスユニットが前記現在実行作業後に実行する待機実行作業に対する待機ロード/ストア作業とを含むロード/ストアユニットとを有する。
【0012】
また、前記入力アクティベーションを前記プロセスユニットに提供し、前記出力アクティベーションを前記プロセスユニットから受信し、前記入力アクティベーションおよび前記出力アクティベーションを一時的に保存するアクティベーションバッファと、前記プロセスユニットが演算を行うためのプログラムおよび入力データを一時的に保存して前記プロセスユニットに伝達し、前記プロセスユニットから受信した出力データを一時的に保存し、前記入力データは、前記入力アクティベーションおよび前記加重値を含むオンチップバッファと、前記オンチップバッファから前記入力アクティベーションを前記アクティベーションバッファに伝達し、前記アクティベーションバッファから前記出力アクティベーションを前記オンチップバッファに伝達するアクティベーションロード/ストアユニットとを含み得る。
【0013】
また、前記待機ロード/ストア作業は、前記外部インタフェイスの帯域幅のうち、前記メインロード/ストア作業によって使用されない帯域幅を使用して行われ得る。
【0014】
また、前記ロード/ストアユニットは、前記メインロード/ストア作業を実行し、前記オンチップバッファに第1ロードデータおよび第1ストアデータを伝送するメインロード/ストアユニットと、前記待機ロード/ストア作業を実行し、前記オンチップバッファに第2ロードデータおよび第2ストアデータを伝送するヒドゥンロード/ストアユニットとを含み得る。
【0015】
また、前記ヒドゥンロード/ストアユニットは、タスクコントローラから受信した待機ロード命令(instruction)をフェッチして、待機ロード命令発行(instruction issue)を実行するヒドゥンロードユニットと、前記タスクコントローラから受信した待機ストア命令をフェッチして、待機ストア命令発行を実行するヒドゥンストアユニットと、前記ヒドゥンロードユニットから前記ロード命令に対応するメモリアクセス要求を順次受信するヒドゥンロードバッファと、前記ヒドゥンストアユニットから前記ストア命令に対応するメモリアクセス要求を順次受信するヒドゥンストアバッファと、前記ヒドゥンロードバッファからメモリアクセス要求を受信して前記第2ロードデータを前記オンチップバッファに伝達するヒドゥンロードエンジンと、前記ヒドゥンストアバッファからメモリアクセス要求を受信して前記第2ストアデータを前記オンチップバッファに伝達するヒドゥンストアエンジンと、を含み得る。
【0016】
また、前記ロード/ストアユニットは、最近使用された仮想メモリアドレスと物理メモリアドレスとの変換テーブルを保存する変換インデックスバッファをさらに含み得る。
【0017】
また、前記メインロード/ストアユニットは、ロード命令をフェッチしてロード命令発行を実行するロードユニットと、ストア命令をフェッチしてストア命令発行を実行するストアユニットと、前記ロードユニットからメモリアクセス要求を順次受信するロードバッファと、前記ストアユニットからメモリアクセス要求を順次受信するストアバッファと、前記ロードバッファからメモリアクセス要求を受信して第1ロードデータを前記オンチップバッファに伝達するロードエンジンと、前記ストアバッファからメモリアクセス要求を受信して第1ストアデータを前記オンチップバッファに伝達するストアエンジンと、を含み得る。
【0018】
また、前記第1ロードデータは、前記第2ロードデータよりも優先順位が高く、前記第1ストアデータは、前記第2ストアデータよりも優先順位が高くあり得る。
【0019】
また、前記優先順位は、前記第1および第2ロードデータと、前記第1および第2ストアデータにタグ付けされ得る。
【0020】
また、前記優先順位は、前記ロードエンジンまたは前記ストアエンジンによってタグ付けされ得る。
【0021】
また、前記ロード/ストアユニットは、前記第1および第2ロードデータと、前記第1および第2ストアデータとを受信して、ラウンドロビン方式で前記オンチップバッファに伝達するアービター(arbiter)をさらに含み得る。
【0022】
また、前記オンチップバッファは、複数のバンクを含み、単位クロックサイクル当たりの、前記第1ロードデータ、前記第2ロードデータ、前記第1ストアデータ、および前記第2ストアデータの入力数を前記オンチップバッファのバンクの数で除した値は、前記アービターの基準入出力比よりも小さく、前記基準入出力比は、前記アービターによって前記第1ロードデータ、前記第2ロードデータ、前記第1ストアデータ、および前記第2ストアデータそれぞれの待機時間が発生しない範囲で最も大きい入力と出力との比の値であり得る。
【0023】
また、前記ヒドゥンロード/ストアユニットと、前記メインロード/ストアユニットとは、互いに少なくとも一部のハードウェアを共有し得る。
【0024】
また、前記ヒドゥンロード/ストアユニットと、前記メインロード/ストアユニットとは、互いに異なるハードウェアで実現され得る。
【0025】
また、前記プロセスユニットは、前記入力アクティベーションと前記加重値とを順次乗じる2次元マトリクス演算を実行し、前記出力アクティベーションを生成するPEアレイと、1次元演算を実行するベクトルユニットと、を含み得る。
【0026】
また、前記外部インタフェイスは、データバス、外部チップインタフェイス、またはローカルバスのいずれか1つを含み得る。
【0027】
前記他の課題を解決するための本発明のいくつかの実施例による人工知能コアシステムは、演算を行うためのプログラムおよび入力データを保存するメモリと、前記メモリから前記入力データおよび制御信号を伝達するバスと、前記プログラム、前記入力データおよび前記制御信号を受信して2次元マトリクス演算を実行し、出力データを生成する人工知能コアを含み、前記人工知能コアは、前記メモリから前記プログラムおよび前記入力データをロードし、前記出力データを前記メモリに保存するロード/ストアユニットと、前記プログラムおよび前記入力データを用いて演算を実行するプロセスユニットと、前記プロセスユニットと前記ロード/ストアユニットとの間で前記プログラム、前記入力データおよび前記出力データを一時的に保存するオンチップバッファとを含み、前記バスは、前記制御信号を伝達するコントロールバスと、前記入力データおよび前記出力データを伝達するデータバスとを含み、前記ロード/ストアユニットは、前記プロセスユニットが現在実行する現在実行作業に対するメインロード/ストア作業と、前記プロセスユニットが前記現在実行作業後に実行する待機実行作業に対する待機ロード/ストア作業とを実行し、前記待機ロード/ストア作業は、前記データバスの帯域幅のうち前記メインロード/ストア作業によって使用されない帯域幅を使用して実行される。
【0028】
また、前記メモリは、前記人工知能コアと同じチップ内に形成されたオンチップメモリと、前記人工知能コアとは分離形成されたオフチップメモリと、を含み得る。
【0029】
また、前記人工知能コアは第1人工知能コアであり、前記第1人工知能コアとは異なる第2人工知能コアをさらに含み、前記バスは、前記第1および第2人工知能コアの間で前記入力データおよび前記出力データを伝達するローカルバスをさらに含み、前記ロード/ストアユニットは、前記ローカルバスの帯域幅のうち、前記メインロード/ストア作業によって使用されない帯域幅を使用して、前記待機ロード/ストア作業を実行し得る。
【0030】
また、前記ロード/ストアユニットは、前記メインロード/ストア作業を実行するメインロード/ストアユニットと、前記待機ロード/ストア作業を実行するヒドゥンロード/ストアユニットとを含み、前記待機ロード/ストア作業は、前記メインロード/ストア作業に比べて低い優先順位を有し得る。
【0031】
また、前記優先順位は、タグ付けされた形態で識別され得る。
【0032】
また、前記人工知能コアは、前記プロセスユニットに入力アクティベーションを提供し、前記プロセスユニットから出力アクティベーションを受信するアクティベーションバッファと、前記オンチップバッファから前記入力アクティベーションを呼び出して前記アクティベーションバッファに伝達し、前記アクティベーションバッファから前記出力アクティベーションを前記オンチップバッファに伝達する、アクティベーションロード/ストアユニットをさらに含み得る。
【0033】
前記また他の課題を解決するための本発明のいくつかの実施例による人工知能コアシステムのロード/ストア方法は、メインロード/ストアユニットが第1作業に対する第1プログラムをロードし、前記第1プログラムを用いて第1作業を実行し、前記第1作業中に前記メインロード/ストアユニットが動作しないことを確認すると、ヒドゥンロード/ストアユニットが、前記第1作業後に実行待機となっている第2作業に対する第2プログラムをロードし、前記第1作業および前記第2プログラムのロード作業が終了すると、前記第2プログラムを用いて第2作業を実行することを含む。
【0034】
また、前記第2プログラムをロードすることは、前記第2プログラムに対する待機ロード命令をフェッチし、前記フェッチされた待機ロード命令を発行し、前記発行された待機ロード命令に対応するメモリアクセス要求をヒドゥンロードバッファに伝送し、前記メモリアクセス要求を前記ヒドゥンロードバッファが順次ロードエンジンに伝送し、前記ロードエンジンは、前記メモリアクセス要求に応じて、データバスを介してオフチップメモリから第2ロードデータを受信し、前記第2ロードデータをオンチップバッファに伝達することを含み得る。
【0035】
また、前記第1プログラムをロードすることは、前記第1プログラムに対するロード命令をフェッチし、前記フェッチされたロード命令を発行し、前記発行されたロード命令に対応するメモリアクセス要求をロードバッファに伝送し、前記メモリアクセス要求を前記ロードバッファが順次ロードエンジンに伝送し、前記ロードエンジンは、前記メモリアクセス要求に応じて、データバスを介してオフチップメモリから第1ロードデータを受信し、前記第1ロードデータをオンチップバッファに伝達することを含み得る。
【0036】
また、前記第1ロードデータは、前記第2ロードデータよりも優先順位が高くあり得る。
【0037】
前記また他の課題を解決するための本発明のいくつかの実施例による人工知能コアシステムのロード/ストア方法は、メインロード/ストアユニットが第1作業に対する第1データのロード作業を実行し、前記第1データを用いて第1作業を実行し、前記第1作業中に前記メインロード/ストアユニットが動作しないことを確認すると、ヒドゥンロード/ストアユニットが前記第1作業後に実行待機となっている第2作業に対する第2データのロード作業を実行し、前記第1作業および前記第2データのロード作業が終了すると、前記第2データを用いて第2作業を実行することを含む。
【0038】
また、前記第1作業は、ニューラルネットワークの第1レイヤーのマトリックス演算作業であり、前記第2作業は、ニューラルネットワークの第2レイヤーのマトリックス演算作業であり、前記第2データは、前記第2レイヤーのカーネル(Kernel)データであり得る。
【0039】
また、前記第1データは、入力アクティベーションを含み、前記第1作業を実行することは、前記入力アクティベーションをアクティベーションバッファに保存し、プロセスユニットが前記アクティベーションバッファから前記入力アクティベーションを受信して出力アクティベーションを生成し、前記アクティベーションバッファが前記出力アクティベーションを保存することを含み得る。
【発明の効果】
【0040】
本発明の人工知能コア、人工知能コアシステムおよび人工知能コアシステムのロード/ストア方法は、人工知能コアと外部との接続インタフェイスの帯域幅を最適に活用して、次の作業のデータやプログラムを予めロードすることができる。
【0041】
また、次の作業に対するプログラムおよびデータのロード/ストア作業が、現在実行作業に対するプログラムおよびデータのロード/ストア作業の停滞を引き起こさないようにして、現在作業の遅延も遮断することができる。
【0042】
さらには、メインロード/ストアユニットとヒドゥンロード/ストアユニットとがハードウェアを共有して、ハードウェア活用の効率を最大化することができる。
【0043】
前述の内容とともに、本発明の具体的な効果は、以下で本発明を実施するための具体的な事項を説明しながら併せて記述する。
【図面の簡単な説明】
【0044】
【
図1】
図1は、本発明のいくつかの実施例による人工知能コアシステムを説明するためのブロック図である。
【
図2】
図2は、
図1における人工知能コアの構造を詳細に説明するためのブロック図である。
【
図3】
図3は、
図2におけるプロセスユニットの構造を詳細に説明するためのブロック図である。
【
図4】
図4は、プロセスユニットによって実行されるディープラーニング作業のニューラルネットワークの構造を説明するための概念図である。
【
図5】
図5は、
図2におけるロード/ストアユニットの動作を説明するためのブロック図である。
【
図6】
図6は、
図5におけるロード/ストアユニットの構造を詳細に説明するためのブロック図である。
【
図7】
図7は、本発明のいくつかの実施例による人工知能コアシステムのプログラムロード動作を時系列的に説明するためのタイミング図である。
【
図8】
図8は、本発明のいくつかの実施例による人工知能コアシステムのデータプリフェッチ動作を時系列的に説明するためのタイミング図である。
【
図9】
図9は、本発明のいくつかの実施例による人工知能コアのメインロード/ストアユニットを詳細に説明するためのブロック図である。
【
図10】
図10は、本発明のいくつかの実施例による人工知能コアのヒドゥンロード/ストアユニットを詳細に説明するためのブロック図である。
【
図11】
図11は、本発明のいくつかの実施例による人工知能コアシステムを説明するためのブロック図である。
【
図12】
図12は、本発明のいくつかの実施例による人工知能コアシステムを説明するためのブロック図である。
【
図13】
図13は、
図12における第1人工知能コアの構造および動作を詳細に説明するためのブロック図である。
【
図14】
図14は、本発明のいくつかの実施例による人工知能コアシステムのロード/ストア方法を説明するためのフローチャートである。
【
図15】
図15は、
図14における第1プログラムをロードする段階を詳細に説明するためのフローチャートである。
【
図16】
図16は、
図14における第2プログラムをロードする段階を詳細に説明するためのフローチャートである。
【
図17】
図17は、本発明のいくつかの実施例による人工知能コアシステムのロード/ストア方法を説明するためのフローチャートである。
【
図18】
図18は、
図17における第1作業を行う段階を詳細に説明するためのフローチャートである。
【発明を実施するための形態】
【0045】
本明細書および特許請求の範囲に使用された用語や単語は、一般的または辞書的な意味に限定して解釈されてはならない。発明者が自身の発明を最善の方法で説明するために用語や単語の概念を定義し得るという原則に従って、本発明の技術的思想に合致する意味と概念として解釈されるべきである。また、本明細書に記載されている実施例と図面に示されている構成は、本発明が実現される一つの実施例に過ぎず、本発明の技術的思想を全て代弁するものではないので、本出願時点において、これらを代替し得る様々な均等物と変形および応用可能な例があり得ることを理解すべきである。
【0046】
本明細書および特許請求の範囲に使用される第1、第2、A、Bなどの用語は、様々な構成要素を説明するために使用され得るが、前記構成要素は、前記用語によって限定されてはならない。前記用語は、一つの構成要素を他の構成要素と区別する目的でのみ使用される。例えば、本発明の権利範囲を逸脱することなく、第1構成要素は第2構成要素と命名されることができ、同様に第2構成要素も第1構成要素と命名され得る。「および/または」という用語は、複数の関連する記載項目の組み合わせ、または複数の関連する記載項目中のいずれかの項目を含む。
【0047】
本明細書および特許請求の範囲に使用される用語は、単に、特定の実施例を説明するために使用されるものであって、本発明を限定しようとする意図ではない。単数の表現は、文脈上明らかに異に意味しない限り、複数の表現を含む。本出願において、「含む」または「有する」などの用語は、明細書上に記載された特徴、数字、段階、動作、構成要素、部品、またはこれらの組み合わせの存在、または付加可能性を予め排除しないものと理解されるべきである。
【0048】
異に定義されない限り、技術的または科学的な用語を含め、ここに使用されるすべての用語は、本発明が属する技術分野において通常の知識を有する者によって一般的に理解されるのものと同じ意味を有する。
【0049】
一般的に使用される辞書に定義のもののような用語は、関連技術の文脈上有する意味と一致する意味を有するものと解釈されるべきであり、本出願で明確に定義しない限り、理想的または過度に形式的な意味に解釈されない。
【0050】
また、本発明の各実施例に含まれる各構成、過程、工程、または方法などは、技術的に相互矛盾しない範囲内で共有され得る。
【0051】
以下、
図1~
図8を参照して、本発明のいくつかの実施例による人工知能コアシステムを説明する。
【0052】
図1は、本発明のいくつかの実施例による人工知能コアシステムを説明するためのブロック図である。
【0053】
図1を参照すると、本発明のいくつかの実施例による人工知能コアシステムは、人工知能コア100、メモリ200および外部インタフェイス300を含む。
【0054】
人工知能コア100は、ディープラーニング演算作業のために特化したプロセスモジュールであり得る。人工知能コア100は、別途の単一または複数のチップで実現されてもよく、システム上に結合されたSoC(System on Chip)の一部で実現されてもよい。人工知能コア100は、畳み込み(convolution)演算、すなわち、行列乗算(matrix multiplication)に特化して、従来のCPUやGPUよりもはるかに効率的にディープラーニング学習および推論作業を実行し得る。人工知能コア100は、ハードウェアとしてモジュールで実現され得る。
【0055】
メモリ200は、人工知能コア100に、外部インタフェイス300を介してプログラム、入力データおよび制御信号を伝送し得る。また、メモリ200は、人工知能コア100から出力データを受信して保存し得る。
【0056】
メモリ200は、オンチップメモリ(On-chip memory)210およびオフチップメモリ(Off-chip memory)220を含み得る。オンチップメモリ210は、例えば、人工知能コア100のようなチップに形成されたSRAM(Static Random Access Memory)であり得る。オンチップメモリ210は、複数のコアによって共有される共有メモリ(Shared memory)であり得る。ただし、本実施例がこれに限定されるものではない。
【0057】
オフチップメモリ220は、人工知能コア100とは別に形成された外部メモリ(external memory)であり得る。オフチップメモリ220は、例えば、DRAM(Dynamic Random-Access Memory)、NANDフラッシュメモリ(NAND flash memory)、NORフラッシュメモリ、および3Dクロスポイントメモリのうちの少なくとも一つを含み得る。ただし、本実施例がこれに限定されるものではない。
【0058】
メモリ200は、外部インタフェイス300を介して、人工知能コア100にプログラムおよび入力データを提供し、外部インタフェイス300を介して人工知能コア100から出力データを受信して保存し得る。
【0059】
外部インタフェイス300は、人工知能コア100とメモリ200との間のデータ交換を実行し得る。外部インタフェイス300は、データだけでなく、プログラムや制御信号を移動させ得る。
【0060】
外部インタフェイス300は、様々な形態で実現され得る。具体的には、人工知能コア100がSoC形態で実現される場合、外部インタフェイス300は、メインデータバスであり得る。または、人工知能コア100が単一チップ形態で実現される場合、外部インタフェイス300は、外部チップインタフェイスであり得る。
【0061】
図2は、
図1における人工知能コアの構造を詳細に説明するためのブロック図である。
【0062】
図2を参照すると、人工知能コア100は、プロセスユニット110、アクティベーションバッファ120、アクティベーションロード/ストアユニット130、オンチップバッファ140、およびロード/ストアユニット150を含み得る。
【0063】
プロセスユニット110は、演算を実行するモジュールであり得る。プロセスユニット110は、1次元演算だけでなく、2次元マトリックス演算、すなわち、畳み込み演算を実行し得る。プロセスユニット110は、入力アクティベーションAct_Inを受信して、加重値と乗算した後、これを加算して出力アクティベーションAct_Outを生成し得る。
【0064】
図3は、
図2におけるプロセスユニットの構造を詳細に説明するためのブロック図である。
【0065】
図2および
図3を参照すると、プロセスユニット110は、PEアレイ111およびベクトルユニット112を含み得る。
【0066】
PEアレイ111は、入力アクティベーションAct_Inを受信して、加重値とそれぞれ乗算を実行し得る。この際、入力アクティベーションAct_Inと加重値はマトリックスを構成し、畳み込みにより演算され得る。これにより、PEアレイ111は、出力アクティベーションAct_Outを生成し得る。
【0067】
PEアレイ111は、少なくとも1つの処理要素(processing element)111aを含み得る。処理要素111aは、互いに整列して、それぞれ1つの入力アクティベーションAct_Inと1つの加重値(weight)に対する乗算を実行し得る。
【0068】
PEアレイ111は、それぞれの乗算に対する値を合計した部分和を生成し得る。このような部分和は、出力アクティベーションAct_Outとして活用され得る。PEアレイ111は、2次元行列乗算を実行するので、2次元マトリクス演算ユニット(2D matrix compute unit)とも称され得る。
【0069】
ベクトルユニット112は、主に1次元演算を実行し得る。ベクトルユニット112は、PEアレイ111とともにディープラーニング演算を実行し得る。これにより、プロセスユニット110は、必要な演算に特化し得る。つまり、人工知能コア100は、大量の2次元行列乗算と1次元演算とを実行する演算モジュールがそれぞれあり、効率的にディープラーニング作業を実行し得る。
【0070】
図4は、プロセスユニットによって実行されるディープラーニング作業のニューラルネットワークの構造を説明するための概念図である。
【0071】
図4を参照すると、PEアレイ111によって実現されるニューラルネットワークは、入力データが入力される入力ノードを含む入力レイヤーInput1~kと、出力データを出力する出力ノードを含む出力レイヤーOutput1~iと、入力レイヤーと出力レイヤーとの間に配置されるM個のヒドゥンレイヤー(Hidden layer)を含み得る。
【0072】
ここで、各レイヤーのノードを連結するエッジ(Edge)には、加重値が設定され得る。このような加重値またはエッジの有無は、学習過程で追加、削除、またはアップデートされ得る。したがって、学習過程により、k個の入力ノードとi個の出力ノードとの間に配置されるノードおよびエッジの加重値はアップデートされ得る。
【0073】
ニューラルネットワークが学習を実行する前には、すべてのノードとエッジとは、初期値に設定され得る。しかし、累積して情報が入力される場合、ノードおよびエッジの加重値は変更され、この過程で学習因子として入力されるパラメータと、出力ノードに割り当てられる値との間のマッチングが行われ得る。
【0074】
また、ニューラルネットワークを構成する入力ノードと出力ノードとの間のノードおよびエッジの加重値は、ニューラルネットワークの学習過程によってアップデートされ得る。
【0075】
再び、
図2を参照すると、アクティベーションバッファ120は、プロセスユニット110に入力アクティベーションAct_Inを提供し、プロセスユニット110から出力アクティベーションAct_Outを受信し得る。アクティベーションバッファ120は、入力アクティベーションAct_Inと出力アクティベーションAct_Outとを一時的に保存し得る。
【0076】
入力アクティベーションAct_Inと出力アクティベーションAct_Outとは、ニューラルネットワークにおけるレイヤーの入力値と出力値とを意味し得る。この際、ニューラルネットワークのレイヤーが複数の場合、前のレイヤーの出力値が次のレイヤーの入力値となるので、前のレイヤーの出力アクティベーションAct_Outが、次のレイヤーの入力アクティベーションAct_Inとして活用され得る。
【0077】
アクティベーションバッファ120は、演算量の多いプロセスユニット110、特に、PEアレイ111に迅速にアクティベーションを提供し、迅速にアクティベーションを受信して、人工知能コア100の演算速度を高め得る。
【0078】
アクティベーションロード/ストアユニット130は、オンチップバッファ140から入力アクティベーションAct_Inをアクティベーションバッファ120に伝達し、アクティベーションバッファ120から出力アクティベーションAct_Outを前記オンチップバッファに伝達し得る。つまり、アクティベーションロード/ストアユニット130は、アクティベーションのロード作業とストア作業とのいずれも実行し得る。
【0079】
オンチップバッファ140は、人工知能コア100の内部に位置するメモリであり、人工知能コア100が作業に必要な全ての入力データを外部から受信して、一時的に保存し得る。また、オンチップバッファ140は、人工知能コア100によって演算された出力データを外部に伝送するために、一時的に保存し得る。
【0080】
オンチップバッファ140は、アクティベーションロード/ストアユニット130によって入力アクティベーションAct_Inをアクティベーションバッファ120に伝送し、出力アクティベーションAct_Outを受信し得る。オンチップバッファ140は、アクティベーションロード/ストアユニット130の外にも、プロセスユニットと直接データを送受信し得る。つまり、オンチップバッファ140は、PEアレイ111およびベクトルユニット112のそれぞれとデータのやり取りができる。
【0081】
ロード/ストアユニット150は、外部インタフェイス300を介して、外部から入力データ、プログラムおよび制御信号のうちの少なくとも一つを受信し得る。ロード/ストアユニット150は、オンチップバッファ140に受信した入力データ、プログラムおよび制御信号のうちの少なくとも一つを伝送し得る。
【0082】
同様に、ロード/ストアユニット150は、外部インタフェイス300を介して出力データを外部に伝達し得る。ロード/ストアユニット150は、プロセスユニット110が生成した出力データを伝送し得る。
【0083】
図5は、
図2におけるロード/ストアユニットの動作を説明するためのブロック図である。
【0084】
図5を参照すると、タスクコントローラ10は、人工知能コア100によって実現され得る。タスクコントローラ10は、人工知能コア100の作業を制御するモジュールであり得る。タスクコントローラ10は、人工知能コア100によって論理的に実現されたモジュールであり得る。ただし、本実施例がこれに限定されるものではない。
【0085】
外部インタフェイス300は、人工知能コア100がSoCである場合、コントロールバス310およびデータバス320を含み得る。この際、コントロールバス310は、制御信号を伝達するバスであり、データバス320は、入力データおよび出力データを伝達するバスであり得る。
【0086】
コントロールバス310は、タスクコントローラ10に、現在作業に対するロードまたはストアに対する制御信号を伝送し得る。例えば、タスクコントローラ10は、ロード/ストアユニット150に、ロード命令および待機ロード命令のうち少なくとも1つを伝送し得る。または、タスクコントローラ10は、ロード/ストアユニット150に、ストア命令および待機ストア命令のうち少なくとも1つを伝送し得る。ロード/ストアユニット150は、ロード命令、ストア命令、待機ロード命令、および待機ストア命令のうち少なくとも1つに従って、ロード/ストア作業を実行し得る。
【0087】
この際、ロード命令およびストア命令は、プロセスユニット110が現在実行している作業に対するプログラムやデータに対する命令のことを意味し、待機ロード命令および待機ストア命令は、プロセスユニット110が次に実行する作業に対するプログラムやデータに対する命令のことを意味し得る。
【0088】
ロード命令、待機ロード命令、ストア命令、および待機ストア命令は、それぞれ下記のような細部事項を含み得る。
【0089】
Dscrptr{src, dst, burst size, #burst}
ここで、srcは、ソース、すなわち、ロードまたはストアするデータのアドレス、dstは、デスティネーション、すなわち、データを伝送するアドレス、burst sizeはバーストサイズ、すなわち、分割サイズ、および#burstバーストナンバー、すなわち、分割の数を意味し得る。ただし、本実施例がこれに限定されるものではない。
【0090】
ロード/ストアユニット150は、メインロード/ストアユニット151およびヒドゥンロード/ストアユニット152を含み得る。メインロード/ストアユニット151は、ロード/ストア作業中にメインロード/ストア作業を実行し得る。
【0091】
例えば、メインロード/ストアユニット151は、ロード命令をフェッチ(fetch)し、ロード命令を発行(issue)し得る。ここで、発行とは、命令の実行が不可能な条件であるか否かを判断し、可能な場合は、それを続行するための作業のことを意味し得る。
【0092】
メインロード/ストアユニット151は、発行されたロード命令に従って、データバス320を介してオフチップメモリ220にメモリアクセスし第1ロードデータDprを受信して、オンチップバッファ140に伝送し得る。この際、第1ロードデータDprは、高い優先順位を有するデータであり得る。
【0093】
ヒドゥンロード/ストアユニット152は、ロード/ストア作業中に待機ロード/ストア作業を実行し得る。例えば、ヒドゥンロード/ストアユニット152は、待機ロード命令をフェッチし、待機ロード命令を発行し得る。
【0094】
ヒドゥンロード/ストアユニット152は、発行されたロード命令に従って、データバス320を介してオフチップメモリ220にメモリアクセスし第2ロードデータDnprを受信して、オンチップバッファ140に伝送し得る。この際、第2ロードデータDnprは、低い優先順位を有するデータであり得る。つまり、第1ロードデータDprは、第2ロードデータDnprに比べ、相対的に高い優先順位を有し得る。つまり、オンチップバッファ140は、第2ロードデータDnprよりも、第1ロードデータDprを先に保存し得る。
【0095】
この際、優先順位は、データにタグ付け(tagging)された形態で識別され得る。これにより、現在実行されている作業に対するメインロード/ストア作業は、待機ロード/ストア作業によって遅延されない。つまり、待機ロード/ストア作業は、メインロード/ストア作業の実行に全く妨げられることなくできる。また、待機ロード/ストア作業は、メインロード/ストア作業によって使用される外部インタフェイス300の帯域幅(bandwidth)を除いた残りの帯域幅を用いて実行され得る。つまり、時系列的にプログラムとデータとのロード作業が先に実行されてこそ、それに対する演算作業が行われ、演算作業の実行時間は、ロード作業よりもはるかに長くあり得る。
【0096】
これにより、本実施例による人工知能コアシステムは、演算作業中に活用されない帯域幅を待機作業に対して割り当てることにより、帯域幅の活用を最大化し得る。
【0097】
図6は、
図5のロード/ストアユニットの構造を詳細に説明するためのブロック図である。
【0098】
図6を参照すると、ロード/ストアユニット150は、ロードユニット151a、ストアユニット151b、ロードバッファ151a_b、ストアバッファ151b_b、ヒドゥンロードユニット152a、ヒドゥンロードバッファ152a_b、ヒドゥンストアユニット152b、ヒドゥンストアバッファ152b_b、ロードエンジン153、ストアエンジン154、変換インデックスバッファ155、およびアービター156を含み得る。
【0099】
ロードユニット151aは、タスクコントローラ10からロード命令をフェッチし、ロード命令を発行し得る。ロードユニット151aが、発行されたロード命令をロードバッファ151a_bに提供すると、ロードバッファ151a_bが入力された順に従って、順次ロードエンジン153にメモリアクセス要求を伝送し得る。
【0100】
また、ストアユニット151bは、タスクコントローラ10からストア命令をフェッチし、ストア命令を発行し得る。ストアユニット151bが、発行されたストア命令をストアバッファ151b_bに提供すると、ストアバッファ151b_bが、入力された順に従って順次ストアエンジン154にメモリアクセス要求を伝送し得る。
【0101】
ヒドゥンロードユニット152aは、タスクコントローラ10から待機ロード命令をフェッチし、待機ロード命令を発行し得る。ヒドゥンロードユニット152aが、発行された待機ロード命令をヒドゥンロードバッファ152a_bに提供すると、ヒドゥンロードバッファ152a_bが、入力された順に従って順次ロードエンジン153にメモリアクセス要求を伝送し得る。
【0102】
また、ヒドゥンストアユニット152bは、タスクコントローラ10から待機ストア命令をフェッチし、待機ストア命令を発行し得る。ヒドゥンストアユニット152bが、発行された待機ストア命令をヒドゥンストアバッファ152b_bに提供すると、ヒドゥンストアバッファ152b_bが、入力された順に従って順次ストアエンジン154にメモリアクセス要求を伝送し得る。
【0103】
ロードエンジン153は、メモリアクセス要求を受信して、データバス320を介して第1ロードデータDprおよび第2ロードデータDnprを呼び出し得る。この際、ロードエンジン153は、変換インデックスバッファ155で最近使用された仮想アドレスと物理アドレスとの変換テーブルを用いて迅速にデータを調べられる。ロードエンジン153の仮想アドレスが変換インデックスバッファ155にない場合には、メモリ200からアドレス変換情報を調べられる。
【0104】
第1ロードデータDprは、ロードバッファ151a/bから受信したメモリアクセス要求に対応するデータであり、第2ロードデータDnprは、ヒドゥンロードバッファ152a/bから受信したメモリアクセス要求に対応するデータであり得る。
【0105】
この際、ロードバッファ151a_bとヒドゥンロードバッファ152a_bは、メモリアクセス要求をロードエンジン153に同時には伝送しない。つまり、ヒドゥンロードユニット152aとヒドゥンロードバッファ152a_bとは、ロードユニット151aとロードバッファ151a_bとが、ロードエンジン153にメモリアクセス要求を伝達していないときを識別(identify)して、メモリアクセス要求をロードエンジン153に伝送し得る。つまり、ロードバッファ151a_bで命令発行作業がストール(stall)された場合にのみ、ヒドゥンロードバッファ152a_bが動作し得る。
【0106】
アービター156は、ロードエンジン153から第1ロードデータDprおよび第2ロードデータDnprを受信し得る。アービター156は、ラウンドロビン方式で入力された第1ロードデータDprおよび第2ロードデータDnprを、オンチップバッファ140のバンクBにそれぞれ伝達し得る。つまり、アービター156は、データを順次オンチップバッファ140のバンクBに分配するので、第2ロードデータDnprが追加される場合、一般的には、第1ロードデータDprの遅延が発生し得る。
【0107】
しかし、本発明のいくつかの実施例による人工知能コアは、第1ロードデータDprに高い優先順位を付与して、第2ロードデータDnprが追加されても、第1ロードデータDprの処理遅延を防止し得る。
【0108】
このような優先順位は、ロードエンジン153によってタグ付けされ得る。ただし、本実施例はこれに限定されるものではない。すなわち、ロードユニット151aおよびヒドゥンロードユニット152aで優先順位に関する情報が予め決定され伝達されることも容易に可能であり得る。
【0109】
ストアエンジン154は、メモリアクセス要求を受信して、データバス320を介して第1ストアデータローカルバス500および第2ストアデータローカルバス500を呼び出し得る。この際、ストアエンジン154は、変換インデックスバッファ155から、最近使用された仮想アドレスと物理アドレスとの変換テーブルを用いて、迅速にデータを調べられる。ストアエンジン154の仮想アドレスが、変換インデックスバッファ155にない場合には、メモリ200からアドレス変換情報を調べられる。
【0110】
第1ストアデータローカルバス500は、ストアバッファ151b_bから受信したメモリアクセス要求に対応するデータであり、第2ストアデータローカルバス500は、ヒドゥンストアバッファ152b_bから受信したメモリアクセス要求に対応するデータであり得る。
【0111】
この際、ストアバッファ151b_bとヒドゥンストアバッファ152b_bとは、メモリアクセス要求をストアエンジン154に同時には送信しない。つまり、ヒドゥンストアユニット152bとヒドゥンストアバッファ152b_bとは、ストアユニット151bとストアバッファ151b_bとがストアエンジン154にメモリアクセス要求を伝達していないときを識別して、メモリアクセス要求をストアエンジン154に伝送し得る。つまり、ストアバッファ151b_bで命令発行作業がストールされた場合にのみ、ヒドゥンストアバッファ152b_bが動作し得る。
【0112】
アービター156は、ストアエンジン154から、第1ストアデータローカルバス500および第2ストアデータローカルバス500を受信し得る。アービター156は、ラウンドロビン方式で入力された第1ストアデータローカルバス500および第2ストアデータローカルバス500を、オンチップバッファ140のバンクBからデータバス320にそれぞれ伝達し得る。つまり、アービター156は、データを順次オンチップバッファ140のバンクBから取り出してくるので、第2ストアデータローカルバス500が追加される場合、一般的には、第1ストアデータローカルバス500の処理遅延が発生し得る。
【0113】
しかし、本発明のいくつかの実施例による人工知能コアは、第1ストアデータローカルバス500に高い優先順位を付与して、第2ストアデータローカルバス500が追加されても、第1ストアデータローカルバス500の処理遅延を防止し得る。
【0114】
このような優先順位は、ストアエンジン154によってタグ付けされ得る。ただし、本実施例はこれに限定されるものではない。すなわち、ストアユニット151bおよびヒドゥンストアユニット152bで優先順位に関する情報が予め決定され伝達されることも容易に可能であり得る。
【0115】
この際、ロードユニット151a、ロードバッファ151a_b、ストアユニット151b、ストアバッファ151b_b、ロードエンジン153、ストアエンジン154、変換インデックスバッファ155、およびアービター156は、メインロード/ストアユニット151に含まれ得る。
【0116】
一方、ヒドゥンロードユニット152a、ヒドゥンロードバッファ152a_b、ヒドゥンストアユニット152b、ヒドゥンストアバッファ152b_b、ロードエンジン153、ストアエンジン154、変換インデックスバッファ155、およびアービター156は、ヒドゥンロード/ストアユニット152に含まれ得る。
【0117】
すなわち、メインロード/ストアユニット151とヒドゥンロード/ストアユニット152とは、ロードエンジン153、ストアエンジン154、変換インデックスバッファ155、およびアービター156を、互いに共有し得る。ロードエンジン153、ストアエンジン154および変換インデックスバッファ155のうち少なくとも1つは、ハードウェアで実現され得る。
【0118】
ロードエンジン153とストアエンジン154とは、現実的にメインロード/ストアユニット151とヒドゥンロード/ストアユニット152との使用時間が異なることは避けられないので、同じハードウェアを一部共有し得る。これにより、本実施例のリソース活用効率が最大化し得る。
【0119】
図7は、本発明のいくつかの実施例による人工知能コアシステムのプログラムロード動作を時系列的に説明するためのタイミング図である。
【0120】
図7を参照すると、まず、タスクコントローラ10によって第1プログラムロードPrLD1が実行され得る。第1プログラムは、第1作業実行EXEC1のために必要なプログラムであって、ディープラーニング作業のためのプログラムであり得る。第1プログラムロードPrLD1は、第1作業実行EXEC1に先行する必要があるので、第1作業実行EXEC1は、第1プログラムロードPrLD1に依存的であり得る。
【0121】
一般的な人工知能コアの場合、第1作業実行EXEC1が終わってから、第2プログラムロードPrLD2が実行され得る。これに対し、本実施例による人工知能コア100は、ディープラーニング作業の第1作業実行EXEC1と並列的に第2プログラムロードPrLD2が実行され得る。これにより、第1作業実行EXEC1が終了する時点で、第2作業実行EXEC2が直ちに開始され得る。これにより、本実施例による人工知能コア100は、ディープラーニング作業の速度を飛躍的に上昇させ得る。
【0122】
図8は、本発明のいくつかの実施例による人工知能コアシステムのデータプリフェッチ動作を時系列的に説明するためのタイミング図である。
【0123】
図8を参照すると、まず、タスクコントローラ10によって、第1プログラムロードPrLD1が実行され得る。次いで、第1フェッチFetch1が実行され得る。第1フェッチFetch1は、ディープラーニング学習および推論を行うためのデータを取ってくる段階であり得る。
【0124】
第1作業実行EXEC1は、プログラムとデータとのロードが必要であるため、依存的であり得る。同様に、第2作業実行EXEC2も、第2プリフェッチPreFetch2のようにデータのロードが必要であるため、依存的であり得る。第2プリフェッチPreFetch2は、例えば、CNN(Convolutional Neural Network)やLSTM(Long Short-Term Memory)の次のレイヤーのカーネルデータを取ってくることでもあり得る。
【0125】
本実施例による人工知能コアシステムは、第1作業実行EXEC1中に、第2作業実行EXEC2に対応するデータを予め取得する第2プリフェッチPreFetch2を実行して、第1作業実行EXEC1が終わると、直ちに第2作業実行EXEC2を開始させ得る。これにより、本実施例による人工知能コアの処理速度がさらに早くなり得る。
【0126】
以下、
図9および
図10を参照して、本発明のいくつかの実施例による人工知能コアおよび人工知能コアシステムを説明する。前述の内容と重複する場合は、簡略化または省略する。
【0127】
図9は、本発明のいくつかの実施例による人工知能コアのメインロード/ストアユニットを詳細に説明するためのブロック図であり、
図10は、本発明のいくつかの実施例による人工知能コアのヒドゥンロード/ストアユニットを詳細に説明するためのブロック図である。
【0128】
図9および
図10を参照すると、本発明のいくつかの実施例による人工知能コアシステムのロード/ストアユニットは、ハードウェアで分離され得る。すなわち、メインロード/ストアユニット151は、ロードユニット151a、ストアユニット151b、ロードバッファ151a_b、ストアバッファ151b_b、第1ロードエンジン153_1、第1ストアエンジン154_1、および第1変換インデックスバッファ155_1を含み得る。
【0129】
また、ヒドゥンロード/ストアユニット152は、ヒドゥンロードユニット152a、ヒドゥンストアユニット152b、ヒドゥンロードバッファ152a_b、ヒドゥンストアバッファ152b_b、第2ロードエンジン(153_2)、第2ストアエンジン154_2、および第2変換インデックスバッファ155_2を含み得る。
【0130】
本実施例は、メインロード/ストアユニット151とヒドゥンロード/ストアユニット152とが、互いに物理的に分離されているため、人工知能コア100の設計難易度が低くなり、ロードエンジン153とストアエンジン154とが互いに共有されないため、それぞれの耐久性が長く維持され得る。ただし、アービター156の場合には、互いに同一にセットして、より正確な数値を獲得し得る。
【0131】
以下、
図11を参照して、本発明のいくつかの実施例による人工知能コアおよび人工知能コアシステムを説明する。前述の内容と重複する場合は、簡略化または省略する。
【0132】
図11は、本発明のいくつかの実施例による人工知能コアシステムを説明するためのブロック図である。
【0133】
図11を参照すると、本発明のいくつかの実施例による人工知能コアシステムは、ロード/ストアユニット150が拡張アービター156_1を含み、ロードエンジン153とストアエンジン154とが、優先順位の異なるデータを使用しなくてもよい。代わりに、オンチップバッファ140が保有するバンクBの数をさらに増やして、拡張バンクBeがオンチップバッファ140に含まれ得る。
【0134】
つまり、入力数が増えた分、バンクBの数が増えれば、既存のデータが待機する必要もないので、これにより、人工知能コア100の演算速度の遅延を防止し得る。
【0135】
拡張アービター156_1は、基準入出力比を有し得る。この際、基準入出力比は、入力の待機時間が発生しない範囲で、最も大きい入力と出力の比のことを意味し得る。拡張アービター156_1に入力として入る第1ロードデータ、第2ロードデータ、第1ストアデータ、および第2ストアデータの入力数を、オンチップバッファ140のバンクBおよび拡張バンク(Be)の数で除した値は、基準入出力比よりも小さくあり得る。
【0136】
したがって、ロードデータに優先順位のタグ付けをすることなく、オンチップバッファ140にバンクBの数を増やすことだけで、メインロード/ストア作業の損害は発生しないのであり得る。
【0137】
以下、
図12および
図13を参照して、本発明のいくつかの実施例による人工知能コアおよび人工知能コアシステムを説明する。前述の内容と重複する場合は、簡略化または省略する。
【0138】
図12は、本発明のいくつかの実施例による人工知能コアシステムを説明するためのブロック図であり、
図13は、
図12における第1人工知能コアの構造および動作を詳細に説明するためのブロック図である。
【0139】
図12を参照すると、本発明のいくつかの実施例による人工知能コアシステムは、第1人工知能コア100、第2人工知能コア400およびローカルバス500を含み得る。
【0140】
第1人工知能コア100は、
図1の人工知能コア100と同一であり得る。第2人工知能コア400は、第1人工知能コア100と分離された別個のコアであり得る。第1人工知能コア100は、第2人工知能コア400と、ローカルバス500を用いて互いにデータをやり取りし得る。
【0141】
ローカルバス500は、コア間のデータを伝送するための通路であり得る。ローカルバス500は、コア間の通信により、マルチコアシステムの速度を向上させ得る。
【0142】
図13を参照すると、第1人工知能コア100のロード/ストアユニット150は、ローカルバス500を介して、第2人工知能コア400と通信し得る。特に、メインロード/ストアユニット151とヒドゥンロード/ストアユニット152とは、それぞれローカルバスを介してデータのロード/ストア作業を実行し得る。
【0143】
本実施例は、これにより、コア間のデータ交換においても、帯域幅の活用度を最大化し得る。
【0144】
以下、
図6、
図7および
図14~
図16を参照して、本発明のいくつかの実施例による人工知能コアシステムのロード/ストア方法を説明する。前述の内容と重複する場合は、簡略化または省略する。
【0145】
図14は、本発明のいくつかの実施例による人工知能コアシステムのロード/ストア方法を説明するためのフローチャートであり、
図15は、
図14における第1プログラムをロードする段階を詳細に説明するためのフローチャートである。
図16は、
図14における第2プログラムをロードする段階を詳細に説明するためのフローチャートである。
【0146】
図14を参照すると、メインロード/ストアユニットが、第1プログラムをロードする(S100)。
【0147】
より詳細に
図15を参照すると、第1プログラムに対するロード命令をフェッチし(S110)、フェッチされたロード命令を発行し得る(S120)。
【0148】
次いで、発行されたロード命令に対応するメモリアクセス要求をロードバッファに伝送し(S130)、メモリアクセス要求をロードバッファが順次ロードエンジンにて伝送する(S140)。
【0149】
続いて、データバスを介してオフチップメモリから第1ロードデータを受信し(S150)、第1ロードデータをオンチップバッファに伝達する(S160)。
【0150】
再び、
図14を参照すると、第1プログラムを用いて第1作業を行う(S200)。
【0151】
具体的に、
図7を参照すると、第1プログラムは、第1作業実行EXEC1のために必要なプログラムであって、ディープラーニング作業のためのプログラムであり得る。第1プログラムロードPrLD1は、第1作業実行EXEC1、つまり、第1作業に先行する必要があるので、第1作業実行EXEC1が第1プログラムロードPrLD1に依存的であり得る。
【0152】
再び、
図14を参照すると、メインロード/ストアユニットが動作しないことを確認し(S300)、ヒドゥンロード/ストアユニットが、第2作業に対する第2プログラムをロードする(S400)。
【0153】
より詳細に
図16を参照すると、第2プログラムに対する待機ロード命令をフェッチし(S410)、フェッチされた待機ロード命令を発行し得る(S420)。
【0154】
次いで、発行された待機ロード命令に対応するメモリアクセス要求をヒドゥンロードバッファに伝送し(S430)、メモリアクセス要求をヒドゥンロードバッファが順次ロードエンジンに伝送する(S440)。
【0155】
続いて、データバスを介して、オフチップメモリから第2ロードデータを受信し(S450)、第2ロードデータをオンチップバッファに伝達する(S460)。
【0156】
具体的に、
図7を参照すると、本実施例による人工知能コア100は、ディープラーニング作業の第1作業実行EXEC1と並列的に、第2プログラムロードPrLD2が実行され得る。これにより、第1作業実行EXEC1が終了する時点で、第2作業実行EXEC2が直ちに開始され得る。これにより、本実施例による人工知能コア100は、ディープラーニング作業の速度を飛躍的に上昇させ得る。
【0157】
また、
図6を参照すると、ヒドゥンロードユニット152aとヒドゥンロードバッファ152a_bとは、ロードユニット151aとロードバッファ151a_bとが、ロードエンジン153にメモリアクセス要求を伝達していないときを識別して、メモリアクセス要求をロードエンジン153に伝送し得る。
【0158】
段階S300および段階S400は、段階S200と並列的に実行され得る。
【0159】
再び、
図14を参照すると、第2プログラムを用いて第2作業を実行する(S500)。
【0160】
具体的に、
図7を参照すると、第2プログラムは、第2作業実行EXEC2のために必要なプログラムであって、ディープラーニング作業のためのプログラムであり得る。第2プログラムロードPrLD2は、第2作業実行EXEC2、つまり、第2作業に先行する必要があるので、第2作業実行EXEC2が第2プログラムロードPrLD2に依存的であり得る。
【0161】
本実施例による人工知能コアのロード/ストア方法は、第1作業の実行と第2作業に対する第2プログラムのロードが並列的に行われ、作業の効率が上がり、従来には活用できなかった外部インタフェイス300の帯域幅を最大限に活用し得る。
【0162】
以下、
図17および
図18を参照して、本発明のいくつかの実施例による人工知能コアシステムのロード/ストア方法を説明する。前述の内容と重複する場合は、簡略化または省略する。
【0163】
図17は、本発明のいくつかの実施例による人工知能コアシステムのロード/ストア方法を説明するためのフローチャートであり、
図18は、
図17における第1作業を実行する段階を詳細に説明するためのフローチャートである。
【0164】
図17を参照すると、メインロード/ストアユニットが、第1データをロードする(S1100)。
【0165】
具体的に、
図8を参照すると、第1フェッチFetch1が実行され得る。第1フェッチFetch1は、ディープラーニング学習および推論を行うためのデータを取ってくる段階であり得る。
【0166】
再び、
図17を参照すると、第1データを用いて第1作業を実行する(S1200)。
【0167】
より具体的に、
図18を参照すると、入力アクティベーションをアクティベーションバッファに保存する(S1210)。
【0168】
具体的に、
図2を参照すると、アクティベーションロード/ストアユニット130は、オンチップバッファ140から、入力アクティベーションAct_Inをアクティベーションバッファ120に伝達し得る。アクティベーションバッファ120は、入力アクティベーションAct_Inを一時的に保存し得る。
【0169】
再び、
図18を参照すると、プロセスユニットが、アクティベーションバッファから入力アクティベーションを受信して、出力アクティベーションを生成する(S1220)。次いで、アクティベーションバッファが、出力アクティベーションを保存する(S1230)。
【0170】
再び、
図17を参照すると、メインロード/ストアユニットが動作しないことを確認し(S1300)、ヒドゥンロード/ストアユニットが第2作業に対する第2データをロードする(S1400)。
【0171】
段階S1300および段階S1400は、段階S1200と並列的に実行され得る。
【0172】
再び、
図17を参照すると、第2データを用いて第2作業を実行する(S1500)。
【0173】
具体的に、
図8を参照すると、第2作業実行EXEC2も、第2プリフェッチPreFetch2のようにデータのロードが必要であるため、依存的であり得る。本実施例による人工知能コアシステムは、第1作業実行EXEC1中に第2作業実行EXEC2に対応するデータを予め取ってくる第2プリフェッチPreFetch2を実行して、第1作業実行EXEC1が終わると、直ちに第2作業実行EXEC2を開始させ得る。
【0174】
以上の説明は、本実施例の技術思想を例示的に説明したものに過ぎず、本実施例が属する技術分野において通常の知識を有する者であれば、本実施例の本質的な特性から逸脱しない範囲で、様々な修正および変形が可能なことである。したがって、本実施例は、本実施例の技術思想を限定するためのものではなく、説明するためのものであり、このような実施例によって本実施例の技術思想の範囲が限定されるものではない。本実施例の保護範囲は、以下の特許請求の範囲によって解釈されるべきであり、それと同等の範囲内にあるすべての技術思想は、本実施例の権利範囲に含まれるものと解釈されるべきである。
【国際調査報告】