(57)【要約】      （修正有）【課題】データ処理の効率を向上するデータ処理装置、人工知能チップ及び電子機器を提供する。【解決手段】データ処理装置１００は、処理対象データを格納する入力メモリと、外部処理命令を解析して読み取りアドレス、書き込みアドレス及び操作コマンドを取得し、読み取りアドレスに基づいて処理対象データを読み取り、操作コマンドに基づいて処理対象データを処理して、処理後の出力データ及び書き込みアドレスを得るとともに、書き込みリクエストを発するデータ転送部と、データ転送部からの書き込みリクエストを受信して、受信された出力データ及び書き込みアドレスから、１つのデータ転送部の出力データ及び対応する書き込みアドレスをストローブして出力するとともに、書き込みイネーブル信号を送信する多重調停部と、書き込みイネーブル信号を受信して、多重調停部から受信した出力データを対応する書き込みアドレスに書き込む出力メモリとを備える。【選択図】図１
2020027612.tif 000002
【特許請求の範囲】
【請求項１】
処理対象データを格納する少なくとも１つの入力メモリと、
外部処理命令を読み取り、前記処理命令を解析することでデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを取得し、前記データ読み取りアドレスに応じて前記入力メモリから処理対象データを読み取り、前記操作コマンドに従って前記処理対象データを処理して、多重処理後の出力データ及び対応するデータ書き込みアドレスを取得し、データ書き込みリクエストを発する少なくとも１つのデータ転送部と、
少なくとも１つのデータ転送部からのデータ書き込みリクエストの受信に応答して、前記データ転送部の出力データ及び対応するデータ書き込みアドレスを受信し、受信された出力データ及びデータ書き込みアドレスから、１つのデータ転送部の出力データ及び対応するデータ書き込みアドレスをストローブして出力するとともに、書き込みイネーブル信号を送信する少なくとも１つの多重調停部と、
前記多重調停部からの書き込みイネーブル信号の受信に応答して、前記多重調停部から出力データ及び対応するデータ書き込みアドレスを受信するとともに、受信された前記出力データを、対応するデータ書き込みアドレスに書き込む少なくとも１つの出力メモリと、を備えるデータ処理装置。
【請求項２】
前記データ転送部は、
読み取られた処理命令を解析するとともに解析操作を実行するフロントエンド復号化部であって、前記解析操作は、前記処理命令からデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを抽出して、前記入力メモリにデータ読み取りリクエストを発し、前記入力メモリによって前記データ読み取りリクエストの受信に応答して送信された処理対象データを、データキューにバッファリングし、抽出された前記操作コマンドをコマンドキューにバッファリングすることを含むフロントエンド復号化部と、
前記コマンドキューの操作コマンドに応じて前記データキューにおける処理対象データを処理して、出力データを得る少なくとも１つの処理部とを備える請求項１に記載の装置。
【請求項３】
前記フロントエンド復号化部によって実行される解析操作は、
前記操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定し、前記操作コマンドがデータ転送コマンドである場合に、前記フロントエンド復号化部は前記入力メモリから送信された処理対象データを各処理部にブロードキャストし、前記操作コマンドがデータ転置コマンドである場合に、前記フロントエンド復号化部は前記入力メモリから送信された処理対象データを、対応する少なくとも１つの処理部に送信することをさらに含み、
ここでは、各処理部には対応するデータ読み取りアドレスのオフセットが予め設定されている請求項２に記載の装置。
【請求項４】
前記フロントエンド復号化部は、前記処理命令を解析した後に、読み取られた前記処理命令がシングルステップ実行命令であるかそれともバッチ処理命令であるかを判定し、
前記処理命令がシングルステップ実行命令である場合に、前記解析操作を実行し、
前記処理命令がバッチ処理命令である場合に、前記解析操作を予め設定された回数繰り返し実行し、毎回の解析操作が実行された度に、データ読み取りアドレス及びデータ書き込みアドレスを、予め設定されたアドレスのオフセットストライドに基づいて調整する請求項３に記載の装置。
【請求項５】
前記処理部は、
前記データキューから処理対象データを読み取るデータレジスタと、
前記コマンドキューから操作コマンドを読み取るコマンドレジスタと、
前記コマンドレジスタのコマンドに従ってステータス制御を行うステートマシンと、
前記ステートマシンの制御に従って、前記データレジスタから処理対象データを選択して出力するマルチプレクサと、を備える請求項２に記載の装置。
【請求項６】
前記ステートマシンはさらに、前記処理命令から解析されたデータ書き込みアドレスを前記命令レジスタから受信し、受信されたデータ書き込みアドレスと、前記処理部によって予め設定された書き込みアドレスのオフセットとに基づいて、出力データのデータ書き込みアドレスを計算するとともに、データ書き込みリクエストと、前記出力データのデータ書き込みアドレスとを前記多重調停部に送信する請求項５に記載の装置。
【請求項７】
前記多重調停部は、アービタとセレクタとを備える調停ユニットを少なくとも１つ備え、前記アービタは、各データ転送部における処理部の出力データを調停し、調停結果に応じて、１つの処理部の出力データと、対応するデータ書き込みアドレスとを選択して出力するように前記セレクタを制御し、前記出力メモリに書き込みイネーブル信号を送信する請求項５に記載の装置。
【請求項８】
前記出力メモリは、前記多重調停部から出力された書き込みイネーブル信号と、出力データと、対応するデータ書き込みアドレスとを受信し、前記書き込みイネーブル信号の制御下で、前記出力データを対応するデータ書き込みアドレスに書き込む請求項７に記載の装置。
【請求項９】
前記入力メモリ及び前記出力メモリがオンチップメモリである請求項１〜８のいずれか一項に記載の装置。
【請求項１０】
請求項１〜９のいずれか一項に記載のデータ処理装置を備える人工知能チップ。
【請求項１１】
中央処理装置と、請求項１０に記載の人工知能チップとを備える電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、コンピュータ技術分野に関し、具体的には、データ処理装置、人工知能チップ及び電子機器に関する。
【背景技術】
【０００２】
人工知能技術がますます多くの分野で適用されることに伴って、人工知能技術によって処理される問題がますます複雑になり、それに係るテンソルデータの計算のボリュームもますます大きくなっている。現在の人工知能技術では、深層学習における多次元テンソルのデータ転送及びデータ転置操作は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，中央処理装置）、ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，画像処理装置）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ，デジタル信号処理）チップなどの汎用プロセッサ、又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，特定用途向け集積回路）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍｉｎｇ  Ｇａｔｅ  Ａｒｒａｙ，フィールドプログラマブルストローブアレイ）などの専用ハードウェアデバイスを用いて行われる。
【０００３】
汎用プロセッサによるデータ処理では、データアクセス経路が複雑であり、外部メモリへのアクセスや格納に関わり、アクセス帯域幅が制限されている。ＡＳＩＣ、ＦＰＧＡなどの専用ハードウェアデバイスに基づくデータ処理方法は、通常、特定次元のデータ転送及びデータ転置操作をカスタマイズで実現しただけであり、柔軟性の向上が期待されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施例は、データ処理装置、人工知能チップ及び電子機器を提供している。
【課題を解決するための手段】
【０００５】
第１態様において、本発明の実施例は、処理対象データを格納する少なくとも１つの入力メモリと、外部処理命令を読み取り、処理命令を解析することでデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを取得し、データ読み取りアドレスに応じて入力メモリから処理対象データを読み取り、操作コマンドに従って処理対象データを処理して、多重処理後の出力データ及び対応するデータ書き込みアドレスを取得し、データ書き込みリクエストを発する少なくとも１つのデータ転送部と、少なくとも１つのデータ転送部からのデータ書き込みリクエストの受信に応答して、データ転送部の出力データ及び対応するデータ書き込みアドレスを受信し、受信された出力データ及びデータ書き込みアドレスから、１つのデータ転送部の出力データ及び対応するデータ書き込みアドレスをストローブして出力するとともに、書き込みイネーブル信号を送信する少なくとも１つの多重調停部と、多重調停部からの書き込みイネーブル信号の受信に応答して、多重調停部から出力データ及び対応するデータ書き込みアドレスを受信するとともに、受信された出力データを、対応するデータ書き込みアドレスに書き込む少なくとも１つの出力メモリとを備えるデータ処理装置を提供している。
【０００６】
いくつかの実施例において、データ転送部は、読み取られた処理命令を解析するとともに解析操作を実行するフロントエンド復号化部であって、前記解析操作は、処理命令からデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを抽出して、入力メモリにデータ読み取りリクエストを発し、入力メモリによってデータ読み取りリクエストの受信に応答して送信された処理対象データを、データキューにバッファリングし、抽出された操作コマンドをコマンドキューにバッファリングすることを含むフロントエンド復号化部と、コマンドキューの操作コマンドに応じてデータキューにおける処理対象データを処理して、出力データを得る少なくとも１つの処理部とを備える。
【０００７】
いくつかの実施例において、フロントエンド復号化部によって実行される解析操作はさらに、操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定し、操作コマンドがデータ転送コマンドである場合に、フロントエンド復号化部は入力メモリから送信された処理対象データを各処理部にブロードキャストし、操作コマンドがデータ転置コマンドである場合に、フロントエンド復号化部は入力メモリから送信された処理対象データを、対応する少なくとも１つの処理部に送信することを備え、ここでは、各処理部には対応するデータ読み取りアドレスのオフセットが予め設定されている。
【０００８】
いくつかの実施例において、フロントエンド復号化部は、処理命令を解析した後に、読み取られた処理命令がシングルステップ実行命令であるかそれともバッチ処理命令であるかを判定し、処理命令がシングルステップ実行命令である場合に、解析操作を実行し、処理命令がバッチ処理命令である場合に、解析操作を予め設定された回数繰り返し実行し、毎回の解析操作が実行された度に、データ読み取りアドレス及びデータ書き込みアドレスを、予め設定されたアドレスのオフセットストライドに基づいて調整する。
【０００９】
いくつかの実施例において、処理部は、データキューから処理対象データを読み取るデータレジスタと、コマンドキューから操作コマンドを読み取るコマンドレジスタと、コマンドレジスタのコマンドに従ってステータス制御を行うステートマシンと、ステートマシンの制御に従って、データレジスタから処理対象データを選択して出力するマルチプレクサと、を備える。
【００１０】
いくつかの実施例において、ステートマシンはさらに、処理命令から解析されたデータ書き込みアドレスを命令レジスタから受信し、受信されたデータ書き込みアドレスと、処理部によって予め設定された書き込みアドレスのオフセットとに基づいて、出力データのデータ書き込みアドレスを計算するとともに、データ書き込みリクエストと、出力データのデータ書き込みアドレスとを多重調停部に送信する。
【００１１】
いくつかの実施例において、アービタと、セレクタとを備える調停ユニットを少なくとも１つ備え、アービタは、各データ転送部における処理部の出力データを調停し、調停結果に応じて、１つの処理部の出力データと、対応するデータ書き込みアドレスとを選択して出力するようにセレクタを制御し、出力メモリに書き込みイネーブル信号を送信する。
【００１２】
いくつかの実施例において、出力メモリは、多重調停部から出力された書き込みイネーブル信号と、出力データと、対応するデータ書き込みアドレスとを受信し、書き込みイネーブル信号の制御下で、出力データを対応するデータ書き込みアドレスに書き込む。
【００１３】
いくつの実施例において、入力メモリ及び出力メモリがオンチップメモリである。
【００１４】
第２態様において、本発明の実施例は、第１態様に係るデータ処理装置を備える人工知能チップを提供している。
【００１５】
第３態様において、本発明の実施例は、中央処理装置と、第２態様に係る人工知能チップとを備える電子機器を提供している。
【００１６】
本発明の上記の実施例に係るデータ処理装置、人工知能チップ及び電子機器は、処理対象データを格納する少なくとも１つの入力メモリと、外部処理命令を読み取り、処理命令を解析することでデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを取得し、データ読み取りアドレスに応じて入力メモリから処理対象データを読み取り、操作コマンドに従って処理対象データを処理して、多重処理後の出力データ及び対応するデータ書き込みアドレスを取得し、データ書き込みリクエストを発する少なくとも１つのデータ転送部と、少なくとも１つのデータ転送部からのデータ書き込みリクエストの受信に応答して、データ転送部の出力データ及び対応するデータ書き込みアドレスを受信し、受信された出力データ及びデータ書き込みアドレスから、１つのデータ転送部の出力データ及び対応するデータ書き込みアドレスをストローブして出力するとともに、書き込みイネーブル信号を送信する少なくとも１つの多重調停部と、多重調停部からの書き込みイネーブル信号の受信に応答して、多重調停部から出力データ及び対応するデータ書き込みアドレスを受信するとともに、受信された出力データを、対応するデータ書き込みアドレスに書き込む少なくとも１つの出力メモリとを備える。上述したデータ処理装置、人工知能チップ及び電子機器は、ソフトウェア命令による駆動を実現し、高度な柔軟性を備えており、ハードウェアを変更せずに、多様な種類及び容量のテンソルのデータ転送及び転置操作を柔軟にサポートでき、同時に、データスループットが対応する入力メモリ及び出力メモリの帯域幅に依存するため、帯域幅を有効に拡大し、アクセス遅延を低減することができる。
【図面の簡単な説明】
【００１７】
本発明の他の特徴、目的及び利点は、以下の図面を参照してなされる非限定的な実施例に係る詳細な説明を読むことにより、より明らかになるであろう。
【図１】本発明の実施例に係るデータ処理装置を示す構造概略図である。
【図２】本発明の実施例に係るデータ処理装置におけるデータ転送部を示す構造概略図である。
【図３】データ転送部におけるフロントエンド復号化部による操作実行を示すフローチャートである。
【図４】データ転送部における処理部を示す構造概略図である。
【図５】データ転送部における処理部により実行されるデータ処理操作を示すフローチャートである。
【図６】本発明の実施例に係るデータ処理装置における多重調停部を示す構造概略図である。
【図７】本発明の実施例を実施するための電子機器に適用されるコンピュータシステムを示す構造概略図である。
【発明を実施するための形態】
【００１８】
以下、添付図面及び実施例を参照しながら、本発明をより詳細に説明する。ここで説明する具体的な実施例は、関連する発明を説明するためのものに過ぎず、当該発明を限定するものではないことを理解されたい。また、説明の便宜上、図面には発明に関連する部分のみが示されていることに留意されたい。
【００１９】
なお、本発明の実施例及び実施例における特徴は、矛盾を生じない限り、相互に組み合わせることができる。以下、添付図面及び実施例を参照しながら、本発明を詳細に説明する。
【００２０】
図１には、本発明の実施例に係るデータ処理装置の構造１００が示されている。
【００２１】
図１に示すように、本発明の実施例に係るデータ処理装置は、少なくとも１つの入力メモリ１１と、少なくとも１つのデータ転送部１２と、少なくとも１つの多重調停部１３と、少なくとも１つの出力メモリ１４とを備える。入力メモリ１１がデータ転送部１２に接続され、データ転送部１２が多重調停部１３に接続され、多重調停部１３が出力メモリ１４に接続される。
【００２２】
入力メモリ１１は、処理対象データを格納し、ここで、処理対象データは、深層学習ネットワークに入力される画像を特徴付ける２次元濃淡値行列のような深層学習計算におけるテンソルデータであってもよい。処理対象データは、データ処理装置の外部のＣＰＵなどの処理装置又は他のカスタマイズ装置によって入力メモリに書き込まれたものであってもよい。入力メモリ１１は、例えば５１２ビットのビット幅を有するデュアルポートのＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  ｍｅｍｏｒｙ，スタティックランダムアクセスメモリ）であってもよい。入力メモリにおけるデータのビット幅が３２ビットであれば、各入力メモリの１行当たりに１６個のデータを格納できる。
【００２３】
任意選択的に、本発明の実施例に係るデータ処理装置１００は、少なくとも２つの入力メモリと、少なくとも２つのデータ転送部と、少なくとも２つの多重調停部と、少なくとも２つの出力メモリとを備えてもよい。ここで、入力メモリ、データ転送部、多重調停部、出力メモリは１対１に対応してもよい。いくつかの実施形態では、データ処理装置における入力メモリ、データ転送部、多重調停部及び出力メモリの数は、アクセス速度、帯域幅要求などのサービスの需要に応じて拡張又は構成され得る。データ処理装置が複数の入力メモリを備える場合に、複数の入力メモリをまとめてアドレス指定する、即ち、複数の入力メモリの間でアドレスを連続的に指定することができる。例えば、２次元配列Ｄ［］［］について、第１の入力メモリの１行目にはＤ［０］［０］，Ｄ［０］［１］，Ｄ［０］［２］，…，Ｄ［０］［１５］を格納することができ、第２の入力メモリの１行目にはＤ［０］［１６］，Ｄ［０］［１７］，Ｄ［０］［１８］，…，Ｄ［０］［３１］を格納することができる。
【００２４】
入力メモリ１１は、入力メモリに接続されるデータ転送部１２からの、指定されたアドレスのデータを読み取るリクエストであってもよいデータ読み取りリクエストを受信することができ、対応するアドレスのデータをデータ転送部１２に出力することができる。
【００２５】
データ転送部１２は、外部処理命令を読み取り、処理命令を解析することでデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを取得し、データ読み取りアドレスに応じて入力メモリから処理対象データを読み取り、操作コマンドに従って処理対象データを処理して、多重処理後の出力データ及び対応するデータ書き込みアドレスを取得し、データ書き込みリクエストを、データ転送部に接続される多重調停部に発することができる。
【００２６】
ここで、データ転送部１２は命令入力ポート、即ち命令受信ポートを有してもよく、命令入力ポートにより外部の、処理対象データの処理操作を示すための処理命令を読み取ることができる。データ転送部１２が処理命令から解析されたデータ読み取りアドレスは、入力メモリ１１における処理対象データのアドレスであってもよいし、又は任意選択的に、入力メモリ１１における処理対象データの先頭アドレスであってもよい。データ書き込みアドレスは、処理後のデータを出力メモリ１４に書き込むアドレスであってもよいし、又は任意選択的に、処理後の出力データを出力メモリ１４に書き込む先頭アドレスであってもよい。操作コマンドは、処理対象データに対して実行する操作、例えば、転置操作又は転送操作を指示するために使用され得る。ここで、転置操作は、テンソルデータのある次元のデータをテンソルデータの他の次元に転置することであってもよいし、転送操作は、テンソルデータへの転送操作であってもよい。任意選択的に、データ転送部１２は、処理命令を解析した後、出力データを出力メモリ１４に書き込む方式、例えばシリアル書き込みを指示するためのデータ書き込み方式を取得してもよい。  
【００２７】
データ転送部１２は、解析されたデータ読み取りアドレスに基づいて、入力メモリにデータ読み取りリクエスト、即ちデータ読み取りアドレスを含むデータ読み取りリクエストを発することができる。入力メモリ１１は、該データ読み取りリクエストを受信した後に、データ読み取りアドレスに格納されたデータを処理対象データとしてデータ転送部１２に転送でき、このようにして、データ転送部１２は、外部処理命令に従って処理対象データを取得することができる。
【００２８】
データ転送部１２は、処理対象データを上記の操作コマンドに従って処理して出力データを得るとともに、外部処理命令から解析されたデータ書き込みアドレスに基づいて各出力データに対応するデータ書き込みアドレスを算出することができる。例えば、外部処理命令から解析されたデータ書き込みアドレスを初期書き込みアドレスとして、出力データの出力タイミングに合わせて、初期書き込みアドレスを順次後方に遷移させて対応する出力データのデータ書き込みアドレスを得ることができる。出力データと対応するデータ書き込みアドレスとを多重調停部１３に送信することができる。本実施例では、データ処理装置１００における複数のデータ転送部１２が、出力データ及び対応するデータ書き込みアドレスを同一の多重調停部１３に送信でき、各データ転送部１２が、出力データ及び対応するデータ書き込みアドレスを少なくとも２つの多重調停部１３に送信してもよい。任意選択的に、各データ転送部１２は、出力データ及び対応するデータ書き込みアドレスを各多重調停部１３にそれぞれ送信する。データ転送部１２はさらに、多重調停部１３にデータ書き込みリクエストを発することもできる。
【００２９】
多重調停部１３は、少なくとも１つのデータ転送部１２のデータ書き込みリクエストを受信するとともに、受信されたデータ書き込みリクエストに応答して、少なくとも１つのデータ転送部１３の出力データ及び対応するデータ書き込みアドレスを受信することができる。多重調停部１３は、受信した出力データを調停し、受信した少なくとも１つのデータ転送部１３の出力データ及び対応するデータ書き込みアドレスから、１つのデータ転送部１３の出力データ及び対応するデータ書き込みアドレスをストローブして出力し、さらに、出力メモリ１４にメモリ機能をオンにするように、書き込みイネーブル信号を出力メモリ１４に送信することもできる。
【００３０】
任意選択的に、多重調停部１３は、データ転送部に１対１に対応する入力ポートを複数有し、各入力ポートがデータ転送部１２の出力データ及びデータ書き込みアドレスを受信することができる。多重調停部１３は、予め設定された調停ポリシーに従って、複数の入力ポートから１つの入力ポートをストローブし、ストローブされた入力ポートから受信されたデータ転送部の出力データ及びデータ書き込みアドレスを出力することができる。ストローブされた入力ポートから受信されていない出力データ及びデータ書き込みアドレスは、他の多重調停部を介して出力されてもよいし、又はリクエストを繰り返した後に多重調停部から出力されてもよい。
【００３１】
出力メモリ１４は、多重調停部１３からの書き込みイネーブル信号の受信に応答して、多重調停部１３から出力データ及び対応するデータ書き込みアドレスを受信するとともに、受信された出力データを、対応するデータ書き込みアドレスに書き込むことができる。出力メモリ１４は、例えば３２ビットのビット幅を有するデュアルポートのＳＲＡＭであってもよい。各出力メモリ１４は、データビット幅方向にリニアアドレスを指定することができ、２次元配列Ｄ［］［］を例として、第１の出力メモリにはＤ［０］［０］，Ｄ［１］［０］，Ｄ［２］［０］，…を格納することができ、第２の出力メモリにはＤ［０］［１］，Ｄ［１］［１］，Ｄ［２］［１］，…などを格納することができる。
【００３２】
出力メモリ１４が出力データを対応するデータ書き込みアドレスに書き込んだ後に、多重調停部１３は書き込み応答信号をデータ転送部に返信することができる。
【００３３】
本発明の上述した実施例に係るデータ処理装置は、少なくとも１つの入力メモリと、少なくとも１つのデータ転送部と、少なくとも１つの多重調停部と、少なくとも１つの出力メモリとを備える。入力メモリ、データ転送部、多重調停部及び出力メモリの数は、サービスの需要に応じて拡張又は構成され得る。例えば、深層学習に基づくニューラルネットワークのトレーニングプロセスにおいて、大容量データのテンソルデータの転送又は転置を行う必要がある場合に、テンソルデータのビット幅に応じて必要な入力メモリ、出力メモリの数を計算し、さらに、対応するデータのデータ転送部、多重調停部を配置することにより、ハードウェアデバイスを変更せずに、多様な種類及び容量のテンソルデータの転送及び転置操作を柔軟にサポートすることができる。
【００３４】
上記のデータ処理装置は、データアクセス経路が簡単であり、そのスループットが入力メモリ及び出力メモリの帯域幅に依存し、高帯域幅のメモリを用いて帯域幅を拡大して、アクセス遅延を低減させることができる。また、上記のデータ処理装置は、命令入力ポートを介して外部処理命令を受信し、処理命令を解析することでデータアドレス及び操作コマンドを取得し、ソフトウェア命令に基づく駆動が実現され、柔軟性が高い。
【００３５】
任意選択的に、データアクセスの高速化、遅延低減化をさらに図るために、上記の入力メモリ及び出力メモリがオンチップメモリを用いてもよい。
【００３６】
続いて、本発明の実施例に係るデータ処理装置におけるデータ転送部の構造概略図を示す図２を参照する。図２に示すように、データ転送部１２は、フロントエンド復号化部１２１と、少なくとも１つの処理部１２２とを備える。フロントエンド復号化部１２１は、処理命令への解析操作を実行することができる。解析操作は、処理命令からデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを抽出した後、入力メモリにデータ読み取りリクエストを発し、データ読み取りリクエストの受信に応答して入力メモリから送信された処理対象データを、データキューにバッファリングするとともに、抽出した操作コマンドをコマンドキューにバッファリングすることを備える。各処理部１２２はコマンドキューにおけるコマンドに従ってデータキューにおける処理対象データを処理して、出力データを得る。
【００３７】
任意選択的に、処理命令を解析した後に、出力メモリに並列に書き込む１行であってもよいし、又は出力メモリに書き込む１列であってもよい書き込みデータの書き込み方式をさらに抽出することができる。
【００３８】
本実施例では、データ転送部のコマンドキューにおける操作コマンド及びデータキューにおける、対応する処理対象データが、各処理部１２２に分配されて処理することができる。各処理部１２２は、対応するデータ読み取りアドレスのオフセット及びデータ書き込みアドレスのオフセットを予め設定しておくことができる。ここで、データ読み取りアドレスのオフセットは、読み取られた処理対象データの第１個／第１組のアドレスに対する該処理部が読み取った処理対象データのオフセットを特徴付け、データ書き込みアドレスのオフセットは、書き込まれた処理対象データの第１個／第１組のアドレスに対する該処理部が書き込んだ出力データのオフセットを特徴付けることができる。具体的には、各処理部１２２は、処理部に対応する処理対象データのデータ読み取りアドレスのオフセット又は出力データのデータ書き込みアドレスのオフセットを識別するための、独立したコードを有してもよい。例えば、各処理部１２２は、入力メモリの１列のデータのみを処理してもよく、ｘ１として符号化された処理部は、入力メモリの第１列のデータを対応して処理し、ｘ２として符号化された処理部は、入力メモリの第２列のデータを対応して処理してもよい…。これにより、処理対象データのデータ読み取りアドレスに基づいて、対応するコードを有する処理部１２２に処理対象データを分配して処理することができる。具体的な処理操作は、例えば、データ転置操作又はデータ転送操作であり得る。コマンドキューにおける操作コマンドは、データキューにおける処理対象データと１対１に対応している。処理部１２２は、そのコードに基づいてデータキューから処理対象データを読み取るとともに、コマンドキューから対応する操作コマンドを取得し、該操作コマンドを実行して出力データを得ることができる。
【００３９】
任意選択的に、上記の解析操作は、操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定することをさらに備える。
【００４０】
ここで、データ転送コマンドは、入力メモリのデータを出力メモリに転送するコマンドであってもよい。処理命令から解析されたデータ書き込みアドレスは、出力メモリに書き込む第１のデータのアドレスであってもよい。データ転送中に、処理対象データのアドレスのオフセットを、予め設定されたアドレスのオフセットストライドに基づいて算出し、例えば、第１のデータのアドレス「ｘｘｘｘｘ」に対して２単位オフセットすることにより、処理対象データに対応する出力データのデータ書き込みアドレスが、「ｘｘｘｘｘ」を２単位オフセットしたアドレスであると判定することができる。ここで、データ転送中にデータを変換せずに、処理対象データを出力メモリに転送する処理のみが行われる。入力メモリから送信される処理対象データは複数行のデータであってもよく、操作コマンドがデータ転送コマンドである場合に、フロントエンド復号化部は入力メモリから送信される処理対象データを各処理部１２２にブロードキャストすることができ、各処理部１２２が処理対象データのそれぞれに対応する１列のデータを受信して転送する。
【００４１】
データ転置コマンドは、処理対象データを転置操作するコマンドであってもよい。処理命令を解析して得られたデータ書き込みアドレスは、メモリに書き込まれた第１のデータ又は第１列のデータのアドレスであってもよい。データ転置中に、予め設定されたアドレスのオフセットストライドに基づいて、各列の処理対象データのオフセットを算出した後、上記のデータ書き込みアドレスに基づいて各列の処理対象データの格納アドレスを算出することができる。例えば、アドレスのオフセットストライドが２であり、解析して得られたデータ書き込みアドレスが「ｙｙｙｙｙ」である場合に、第１列の処理対象データの転置後の格納アドレスは、「ｙｙｙｙｙ」から２単位分オフセットしたアドレスとなる。ここで、転置操作は、処理対象データの各列を出力データの各行に転置する操作であってもよい。入力メモリから送信される処理対象データが複数列のデータであってもよく、操作コマンドがデータ転置コマンドである場合に、フロントエンド復号化部は入力メモリから送信される処理対象データを対応する少なくとも１つの処理部に送信することができる。入力メモリから送信される処理対象データが複数列のデータであってもよく、各処理部がそのコードに基づいて対応する列のデータを特定することができ、データ転置コマンドを受信した後に、複数列のデータのうちの各列を該列のデータに対応する処理部に送信して転置するとともに、対応する書き込みアドレスの計算を行うことができる。
【００４２】
本実施例のいくつかの任意選択実施形態において、解析操作を実行する前に、上記のフロントエンド復号化部は、読み取られた処理命令がシングルステップ命令であるかそれともバッチ処理命令であるかをさらに判定することができる。データ転送部におけるフロントエンド復号化部による操作実行のフローチャートを示す図３を参照されたい。
【００４３】
図３に示すように、フロントエンド復号化部による操作実行のフロー３００では、まずステップ３０１で、処理命令を解析し、次にステップ３０１で、処理命令がシングルステップ実行命令であるかそれともバッチ処理命令であるかを判定することができる。シングルステップ実行命令は、入力メモリにおける１組の処理対象データを処理する命令であってもよく、バッチ処理命令は、入力メモリにおける複数組の処理対象データを処理する命令であってもよい。
【００４４】
ステップ３０１の判定結果がシングルステップ実行命令である場合に、シングルステップ命令モードに入り、ステップ３０１〜ステップ３０６に示される解析操作を実行する。具体的には、ステップ３０１で、処理命令から操作コマンドと、データ読み取りアドレスと、データ書き込みアドレスとを抽出し、操作コマンドをコマンドキューに加え、データ読み取りリクエストを入力メモリに発する。入力メモリは、データ読み取りリクエストを受信した後に、処理対象データをデータ転送部に送信することができる。次に、ステップ３０４で、操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定することができ、データ転送コマンドである場合に、ステップ３０５を実行して、処理対象データを各処理部にブロードキャストし、データ転置コマンドである場合に、ステップ３０６を実行し、処理対象データを対応する処理部にユニキャストする。その後、ステップ３０１に戻り、受信された次の処理命令を解析することができる。
【００４５】
ステップ３０２の判定結果は、処理命令がバッチ処理命令である場合には、ステップ３０３、ステップ３０４及びステップ３０５又はステップ３０６に示される解析操作を、予め設定された回数繰り返し実行することができる。毎回の解析操作が実行された度に、データ読み取りアドレス及びデータ書き込みアドレスを予め設定されたアドレスのオフセットストライドに基づいて調整することができる。即ち、１組の処理対象データへの解析が終了した後に、予め設定されたデータ読み取りアドレスのオフセットストライド（例えば、１）に基づいて、次の組の処理対象データのデータ読み取りアドレスを算出した後に、次の組の処理対象データを読み取って解析するとともに、予め設定されたデータ書き込みアドレスのオフセットストライド（例えば、２）に基づいて、１組の処理対象データを書き込むことに対応する出力データのデータ書き込みアドレスを算出することができる。このように、解析操作を複数回繰り返し実行でき、毎回の解析操作が終了した後に、ステップ３０７でバッチ処理が終了したか否かを判定し、終了していない場合に、ステップ３０８でデータ読み取りアドレス及びデータ書き込みアドレスを調整した後に、解析操作の実行に戻ることができる。バッチ処理が終了した場合に、命令入力ポートで受信された次の処理命令への解析に戻る。
【００４６】
図３から分かるように、フロントエンド復号化部は外部処理命令を柔軟に解析でき、外部処理命令に基づいて処理対象データ、データ読み取りアドレス及びデータ書き込みアドレスを取得し、処理対象データを対応する処理部にブロードキャストして処理することにより、該フロントエンド復号化部を含むデータ転送部は、ソフトウェア命令に基づく柔軟な駆動を実現することができる。
【００４７】
続いて、本発明の実施例の任意選択実施態様において、データ転送部における処理部の構造概略図を示す図４を参照する。
【００４８】
図４に示すように、処理部１２２は、データレジスタ１２２１、コマンドレジスタ１２２２、ステートマシン１２２３及びマルチプレクサ１２２４を備えることができる。データレジスタ１２２１はデータキューから処理対象データを読み取り、コマンドレジスタ１２２２はコマンドキューから操作コマンドを読み取り、ステートマシン１２２３はコマンドレジスタのコマンドに基づいてステータス制御を行い、マルチプレクサ１２２４はステートマシン１２２３の制御に従って、データレジスタ１２２１から処理対象データを選択して出力する。
【００４９】
データレジスタ１２２１はデータキューにおける処理対象データをマルチプレクサ１２２４に順次転送し、マルチプレクサ１２２４はこれらの処理対象データをバッファリングすることができる。コマンドレジスタ１２２２は、コマンドキューにおけるコマンドをステートマシンに順次転送することができる。ステートマシン１２２３は、コマンドレジスタから送信された操作コマンドを解析するとともに、現在受信されたコマンドに従ってマルチプレクサ１２２４を制御することができる。具体的には、ステートマシンは、現在の操作コマンドに従って、マルチプレクサ１２２４にバッファリングされた処理対象データの１組又は複数組をストローブして出力することができる。例えば、ステートマシン１２２３により現在受信された操作コマンドがデータＡを転置するコマンドである場合に、マルチプレクサ１２２４が対応するデータＡをストローブして出力するように、マルチプレクサ１２２４に制御信号を出力することができる。ステートマシン１２２３はさらに、現在受信された操作コマンドに対応するデータのデータ書き込みアドレスを計算することができ、具体的には、処理命令から解析されたデータ書き込みアドレスをコマンドレジスタから受信し、受信されたデータ書き込みアドレス及び処理部によって予め設定されたデータ書き込みアドレスのオフセットに基づいて、出力データのデータ書き込みアドレスを計算することができ、即ち、処理部のコードに基づいてデータ書き込みアドレスのオフセットを決定し、ステートマシンにより受信されたデータ書き込みアドレスをデータ書き込みアドレスに基づいてオフセットした後、現在のコマンドに対応するデータ書き込みアドレスを得る。又は、フロントエンド復号化部は、処理部のコードに対応するデータ書き込みアドレスのオフセットに基づいて、現在のコマンドに対応する出力データのデータ書き込みアドレスを算出し、ステートマシン１２２３は、フロントエンド復号化部により算出された現在のコマンドに対応する出力データのデータ書き込みアドレスを、コマンドレジスタから受信することができる。ステートマシン１２２３はさらに、多重調停部にデータ書き込みリクエストを発するとともに、出力データのデータ書き込みアドレスを多重調停部に送信することができる。
【００５０】
データ転送部における処理部により実行されるデータ処理操作のフローチャートを示す図５を参照されたい。
【００５１】
図５に示すように、処理部により実行される処理操作のフロー５００は、ステップ５０１で、コマンドレジスタにおけるコマンドを解析することを備える。具体的には、ステートマシン１２２３はコマンドレジスタから操作コマンドを抽出した後に、ステップ５０２で、操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定することができる。ステップ５０２の判定結果がデータ転送コマンドである場合に、ステップ５０３を実行し、処理部のコードに基づいてオフセットに対応するデータを選択して出力し、出力メモリに書き込みリクエストを発し、ステップ５０２の判定結果がデータ転置コマンドである場合に、ステップ５０４を実行し、データ転置コマンドに従って、データを順次出力し、出力メモリに書き込みリクエストを発する。その後、データ転置コマンドに係るデータの書き込みが終了したか否かを判定するステップ５０５を実行する。ステップ５０５の判定結果がデータ転置コマンドに係るデータの書き込みが終了したことである場合に、ステップ５０１に戻り、コマンドレジスタにおける次のコマンドを解析することができる。ステップ５０５の判定結果がデータ転置コマンドに係るデータの書き込みが終了していないことである場合に、ステップ５０４に戻り、データ転置コマンドに従ってデータを順次出力するとともに、出力メモリに書き込みリクエストを発することができる。
【００５２】
処理部は、対応するデータ書き込みアドレスのオフセットを予め設定しておくことができ、具体的には、処理部は、独立したコードを有することができ、各処理部は、命令入力ポートから読み取られた外部処理命令に指示される入力データアドレスに対する、処理されたデータのアドレスのオフセットを、コードに基づいて判定することができる。上記のステップ５０３で、処理部は、コードに基づいてオフセットに対応するデータを選択して出力することができ、例えば、処理部のコードがＣ１であり、対応するオフセットが４である場合に、処理部は、入力データのアドレスに対するオフセットが４であるアドレスに格納されたデータを選択して出力することができ、この場合に処理部が出力したデータは、入力データのアドレスに対するオフセットが４であるアドレスに格納されたデータである。処理部はさらに、出力メモリに書き込みリクエストを発することができる。
【００５３】
データ転置コマンドに係る処理対象データは、入力メモリの１行のデータであり、各処理部が入力メモリの１列のデータをそのコードに基づいて対応処理し、上記のステップ５０４で、処理部は、処理対象データにおけるそのコードに対応する列のデータを順次出力し、ステップ５０５で、処理対象となる１行のデータへの転置が終了したか否かを判定し、終了していない場合に、ステップ５０４に戻って、データ転送部内の複数の処理部のうちの次の処理部が、続いて次の列のデータを出力する。この場合に、処理部の出力データは、入力メモリにおけるデータを転置して得られたデータである。処理部がデータを出力する際に、多重調停部に書き込みリクエストを発することができる。
【００５４】
本発明の実施例に係るいくつかの任意選択実施形態において、データ処理装置における多重調停部の構造概略図を示す図６を参照されたい。
【００５５】
図６に示すように、多重調停部１３は少なくとも１つの調停ユニット１３０を備える。ここで、調停ユニット１３０の数は、所望によりデータ転送装置における処理部の数と同じであってもよい。各調停ユニット１３０がアービタ１３１と、セレクタ１３２とを備える。アービタ１３１は各データ転送部における処理部の出力データを調停し、調停結果に基づいて、１つの処理部の出力データと、対応するデータ書き込みアドレスとを選択して出力するようにセレクタ１３２を制御するとともに、出力メモリに書き込みイネーブル信号を送信する。
【００５６】
本実施例では、データ処理装置がＮ個（Ｎは正の整数である）のデータ転送部を備えるものとし、各調停ユニット１３０がＮ個のデータ転送部のそれぞれの処理部に接続され、即ち、各調停ユニットは、Ｎ個の処理部の出力データ（図６に示される「書き込みデータ」）と、対応するデータ書き込みアドレス（図６に示される「書き込みアドレス」）とを受信する。各データ転送部における複数の処理部は、対応する複数の調停ユニットに出力データ及びデータ書き込みアドレスを転送する。具体的には、アービタは、接続されたＮ個の処理部からの書き込みリクエストに応じて調停し、調停結果に基づいて、入力されたＮ個の処理部の出力データのうちから１つの処理部の出力データ及び対応するデータ書き込みアドレスを選択して出力メモリに転送するようにセレクタを制御する。
【００５７】
ここで、出力データのデータ書き込みアドレスは、処理部がそのコードに対応するデータ書き込みアドレスのオフセットと、外部処理命令から解析された初期のデータ書き込みアドレスとに基づいて算出され得るものである。例として、データ書き込みアドレスのオフセットストライドを２、第１のデータ転送部における第１の処理部のコードをＤ１、処理命令から解析されたデータ書き込みアドレスをＡｄｄ１として予め設定した場合に、対応するデータ書き込みアドレスのオフセットを２とすると、該処理部の出力データのデータ書き込みアドレスが、Ａｄｄ１＋２となる。
【００５８】
本実施例では、セレクタは各データ転送部の処理部から１つのデータ転送部の処理部を選択し、選択した処理部の出力データとデータ書き込みアドレスを出力メモリに転送するとともに、出力メモリに書き込みイネーブル信号を送信する。出力メモリは、多重調停部から出力された書き込みイネーブル信号と、出力データと、対応するデータ書き込みアドレスとを受信し、書き込みイネーブル信号の制御下でイネーブルして、出力データを対応するデータ書き込みアドレスに書き込む。
【００５９】
任意選択的に、出力メモリはさらに、書き込み応答信号を多重調停部に返信し、多重調停部は書き込み応答信号をデータ転送部のステートマシンにフィードバックすることができる。ステートマシンは、書き込み応答信号に応じて、対応するコマンドレジスタにおけるコマンドのステータスを「終了した」にすることができ、さらに「終了した」ステータスのコマンドをコマンドレジスタから削除することができる。コマンドレジスタのステータスが「終了した」ではないコマンドについては、ステートマシンは、コマンドレジスタからコマンドを、予め設定されたコマンドバッファサイクルで繰り返し読み取るとともに、対応する処理対象データをストローブして処理するようにマルチプレクサを制御することができる。
【００６０】
多重調停部で調停出力することにより、データ転置や転送中に出力データがメモリに順番に書き込まれることを確保しつつ、データ書き込みの速度を確保して、データ処理装置の処理効率を向上させることができる。
【００６１】
本発明の実施例は、人工知能チップをさらに提供している。該人工知能チップは、上記の実施例に記載されたデータ処理装置を含むことができる。データ処理装置は、少なくとも１つの入力メモリと、少なくとも１つのデータ転送部と、少なくとも１つの多重調停部と、少なくとも１つの出力メモリとを備える。データ処理装置における各部の構造及び動作原理は、図１〜図５に示された各実施例及び任意選択実施様態の説明を参照することができ、ここではその説明を省略する。
【００６２】
本実施例における人工知能チップは、深層学習訓練及び予測に対して、高密度コンピューティング及びアクセスニーズを満たすことができる。ＣＰＵ、ＧＰＵなどの汎用プロセッサ及び専用ハードウェアデバイスによるデータ処理方法の、深層学習シーンにおけるアクセス速度や柔軟性の問題を解決し、データ処理効率を向上させることができる。
【００６３】
以下、本発明の実施例を実施するための電子機器に適用されるコンピュータシステム７００の構造概略図を示す図７を参照する。図７に示された電子機器はあくまでも一例に過ぎず、本発明の実施例の機能及び使用範囲にいかなるの限定を加えるものではない。
【００６４】
図７に示すように、コンピュータシステム７００は、読み出し専用メモリ（ＲＯＭ）７０２に格納されているプログラム又は記憶部７０５からランダムアクセスメモリ（ＲＡＭ）７０３にロードされたプログラムによって様々で、適当な動作及び処理を実行することができる中央処理装置（ＣＰＵ）７０１を備える。ＲＡＭ７０３には、システム７００の操作に必要な様々なプログラム及びデータがさらに格納されている。ＣＰＵ７０１は、データの処理解析を行うために人工知能チップ７０４に命令及びデータを送信することができる。例えば、深層学習タスクにおいて、ＣＰＵはＲＡＭ７０３にロードされた処理対象データと、通信部を介して受信された外部処理命令とを、人工知能チップ７０４に転送してデータ処理を実行することができる。ＣＰＵ７０１、ＲＯＭ７０２、ＲＡＭ７０３及び人工知能チップ７０４は、バス７０６を介して互いに接続されている。入力／出力（Ｉ／Ｏ）インターフェース７０７もバス７０６に接続されている。
【００６５】
特に、本発明に開示される実施例によれば、上記のフローチャートを参照しながら記載されたプロセスは、コンピュータソフトウェアプログラムとして実現されてもよい。例えば、本発明に開示される実施例は、コンピュータ可読媒体に担持されるコンピュータプログラムを備えるコンピュータプログラム製品を含んでもよい。該コンピュータプログラムは、フローチャートで示される方法を実行するためのプログラムコードを含んでいる。このような実施例では、該コンピュータプログラムは、任意選択的に通信部７０８を介してネットワークからダウンロードされてインストールされてもよいし、人工知能チップにロードされてもよい。該コンピュータプログラムが人工知能チップ７０４によって実行される場合に、本発明のデータ処理装置における入力メモリ、データ転送部、処理部及び出力メモリの上記の機能が実行される。
【００６６】
図面におけるフローチャート及びブロック図は、本発明の各実施例に係るシステム、方法及びコンピュータプログラム製品により実現可能なシステムアーキテクチャ、機能及び操作を示すことを理解されたい。ここで、フローチャート又はブロック図における各ブロックは、モジュール、プログラムセグメント若しくはコードの一部を表してもよく、該モジュール、プログラムセグメント、又はコードの一部は、規定されたロジック機能を達成するための１つ以上の実行可能な命令を含む。なお、いくつかの代替実施態様において、ブロック内に示された機能は、図面に示された順番とは異なるもので実行されてもよい。例えば、連続して示された２つのブロックは、実際には関連する機能に応じて、ほぼ並行に実行されてもよく、逆の順番で実行されてもよい。なお、ブロック図及び／又はフローチャートにおける各ブロック、並びに、ブロック図及び／又はフローチャートにおけるブロックの組み合わせは、規定された機能若しくは操作を実行する、ハードウェアに基づく専用システムで実現されてもよいか、又は専用ハードウェアとコンピュータ命令との組み合わせで実行されてもよい。
【００６７】
以上の記載は、あくまでも本発明の好ましい実施例、及び使用される技術的原理に関する説明に過ぎない。本発明に係る発明の範囲が、上記の技術的特徴の特定の組み合わせからなる技術案に限定されるものではなく、上記の本発明の趣旨を逸脱しない範囲で、上記の技術的特徴又はそれらの同等の特徴を任意に組み合わせてなる他の技術案も含むべきであることを、当業者に理解されたい。例えば、上記の特徴と、本発明に開示された類似の機能を持っている技術的特徴（これらに限定されていない）とを互いに置き換えてなる技術案が挙げられる。
【図１】
2020027612.tif 000003
【図２】
2020027612.tif 000004
【図３】
2020027612.tif 000005
【図４】
2020027612.tif 000006
【図５】
2020027612.tif 000007
【図６】
2020027612.tif 000008
【図７】
2020027612.tif 000009
【手続補正書】
【提出日】令和1年7月5日(2019.7.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
多重調停部１３は、少なくとも１つのデータ転送部１２のデータ書き込みリクエストを受信するとともに、受信されたデータ書き込みリクエストに応答して、少なくとも１つのデータ転送部１２の出力データ及び対応するデータ書き込みアドレスを受信することができる。多重調停部１３は、受信した出力データを調停し、受信した少なくとも１つのデータ転送部１２の出力データ及び対応するデータ書き込みアドレスから、１つのデータ転送部１２の出力データ及び対応するデータ書き込みアドレスをストローブして出力し、さらに、出力メモリ１４にメモリ機能をオンにするように、書き込みイネーブル信号を出力メモリ１４に送信することもできる。
【外国語明細書】
2020027612000001.pdf