【手続補正書】
【提出日】令和3年9月6日(2021.9.6)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
図１１は、いくつかの実施形態による、図８のスカラー乗算加算ベクトル命令８６０および図６Ａの抽出ベクトル命令６２０を用いて、複数のデータベクトルの２次元３要素畳み込みの一部を示すフロー図である。本方法では、カーネルベクトルｖＫｅｒｎｅｌとｖＫｅｒｎｅｌ２がすでに重み付け係数で初期化されていると仮定する。この例では、ベクトルは８レーンのデータを含むと仮定されているが、９つの重み係数が必要であるため、２つのカーネルベクトルが使用されるが、当業者であれば、ベクトルおよび畳み込みカーネル構成に応じて、より多くまたはより少なくカーネルベクトルが使用され得ることを認識するであろう。本方法は、中央ソースベクトルｖＣｅｎｔｅｒをロードするステップ１１００から開始する。このベクトルがロードされると、畳み込み計算にすぐに利用可能となる。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータビットの複数のデータレーンを含むベクトルに対する畳み込みを実行するように構成されているプロセッサであって、前記ベクトルに対する前記畳み込みを実行するために、前記プロセッサが、複数のベクトル命令を実行するように構成されており、前記複数のベクトル命令の各々が、複数のデータビットの複数のデータレーンに対する演算を実行するように構成されており、前記複数のベクトル命令が、
前記プロセッサのそれぞれ異なるベクトルレジスタに、
３つ以上のソースベクトルであって、
前記ベクトルの第１のデータレーンで開始する前記ベクトルの連続する複数のデータレーンを含む中央ベクトルと、
前記ベクトルの前記第１のデータレーンの前に１つのデータレーンを開始する前記ベクトルの連続する複数のデータレーンの左ベクトルと、
前記ベクトルの前記第１のデータレーンの後に１つのデータレーンを開始する前記ベクトルの連続する複数のデータレーンの右ベクトルと、を含む、３つ以上のソースベクトルと、
中央重み付け値、左重み付け値および右重み付け値を含む複数の重み付け値を含むカーネルベクトルと、をロードすることと、
前記ロードすることに続いて、１つ以上の出力ベクトルを生成することであって、前記１つ以上の出力ベクトルが、それぞれ、前記それぞれ異なるベクトルレジスタにロードされた前記３つ以上のソースベクトルの重み付け和を含み、前記１つ以上の出力ベクトルのうちの特定の出力ベクトルを生成するために、前記プロセッサの前記それぞれ異なるベクトルレジスタが、
前記特定の出力ベクトルのために前記カーネルベクトルの前記中央重み付け値によって各々スケーリングされた前記中央ベクトルのそれぞれのレーンを含むスケーリング中央ベクトルと、
前記特定の出力ベクトルのために前記カーネルベクトルの前記左重み付け値によって各々スケーリングされた前記左ベクトルのそれぞれのレーンを含むスケーリング左ベクトルと、
前記特定の出力ベクトルのために前記カーネルベクトルの前記右重み付け値によって各々スケーリングされた前記右ベクトルのそれぞれのレーンを含むスケーリング右ベクトルと、
を加算する前記複数のベクトル命令の個々のもののオペランドとしてアクセスされるように構成される、生成することと、を含む、システム。
【請求項２】
前記左ベクトル及び前記右ベクトルをロードするために、前記複数のベクトル命令が、
前記ベクトルの直前の前ベクトルをロードし、
前記ベクトルの直後に次ベクトルをロードし、
ベクトル抽出命令を実行して、前記前ベクトルと前記ベクトルを用いて前記左ベクトルを生成し、
別のベクトル抽出命令を実行して、前記ベクトルと前記次ベクトルを用いて前記右ベクトルを生成するように構成されている、請求項１に記載のシステム。
【請求項３】
前記ベクトル抽出命令が、
第１のベクトルレジスタを第２のベクトルレジスタに連結して、中間結果を生成し、
前記中間結果を複数のレーン左にシフトし、
前記中間結果の上部を含む出力ベクトルを生成するように構成されている、請求項２に記載のシステム。
【請求項４】

前記特定の出力ベクトルを生成するために、前記複数のベクトル命令は、前記３つ以上のソースベクトルの各々のものに対するベクトルスケーリング命令を含み、前記ベクトルスケーリング命令が、
前記カーネルベクトルを含むレジスタの指定のレーンから、前記畳み込みのための重み付け値をロードし、
前記ベクトルスケーリング命令のオペランドとして指定されたベクトルレジスタの複数のデータレーンの各々に、前記それぞれの重み付け値を乗算して、スケーリングベクトルを生成し、
前記１つ以上の出力ベクトルのうちの前記特定の１つに前記スケーリングベクトルを加算する、ように構成されている、請求項１に記載のシステム。
【請求項５】
前記ベクトルに対する前記畳み込みは、ストライド値を実装し、含まれる各データレーンに対する前記畳み込みにおける省略されるデータレーンの値は、前記ストライド値に基づき、前記３つ以上のソースベクトルをロードするために、前記複数のベクトル命令が、
前記ベクトルの直前の前ベクトルをロードし、
前記ベクトルの直後の次ベクトルをロードし、
ベクトル抽出命令を実行して、前記前ベクトル、前記ベクトルおよび前記次ベクトルを用いて第１の中間ベクトルおよび第２の中間ベクトルを生成し、
ベクトルシャッフル命令を実行して、前記第１の中間ベクトルおよび前記第２の中間ベクトルを用いて前記左ベクトルをロードし、
ベクトルシャッフル命令を実行して、前記ベクトルおよび前記次ベクトルを用いて前記中央ベクトルと前記右ベクトルをロードする、ように構成されている、請求項１に記載のシステム。
【請求項６】
前記畳み込みが多次元畳み込みであり、前記１つ以上の出力ベクトルが複数の出力ベクトルを含む、請求項１に記載のシステム。
【請求項７】
前記プロセッサが、畳み込みニューラルネットワークの一部として前記畳み込みを実行するように構成されている、請求項１に記載のシステム。
【請求項８】
複数のベクトル命令を実装するプロセッサを含むコンピュータによって、複数のデータビットの複数のデータレーンを含むベクトルの畳み込みを実行することを含み、前記複数のベクトル命令が、
前記プロセッサのそれぞれ異なるベクトルレジスタに、
３つ以上のソースベクトルであって、
前記ベクトルの第１のデータレーンで開始する前記ベクトルの連続する複数のデータレーンを含む中央ベクトルと、
前記ベクトルの前記第１のデータレーンの前に１つデータレーンを開始する前記ベクトルの連続する複数のデータレーンの左ベクトルと、
前記ベクトルの前記第１のデータレーンの後に１つデータレーンを開始する前記ベクトルの連続する複数のデータレーンの右ベクトルと、を含む、３つ以上のソースベクトルと、
中央重み付け値、左重み付け値および右重み付け値を含む複数の重み付け値を含むカーネルベクトルと、をロードすることと、
前記ロードすることに続いて、１つ以上の出力ベクトルを生成することであって、前記１つ以上の出力ベクトルが、それぞれ、前記それぞれ異なるベクトルレジスタにロードされた前記３つ以上のソースベクトルの重み付け和を含み、前記１つ以上の出力ベクトルのうちの特定の出力ベクトルを生成することが、前記それぞれ異なるベクトルレジスタが、      前記特定の出力ベクトルのために前記カーネルベクトルの前記中央重み付け値によって各々スケーリングされた前記中央ベクトルのそれぞれのレーンを含むスケーリング中央ベクトルと、
前記特定の出力ベクトルのために前記カーネルベクトルの前記左重み付け値によって各々スケーリングされた前記左ベクトルのそれぞれのレーンを含むスケーリング左ベクトルと、
前記特定の出力ベクトルのために前記カーネルベクトルの前記右重み付け値によって各々スケーリングされた前記右ベクトルのそれぞれのレーンを含むスケーリング右ベクトルと、
を加算する前記複数のベクトル命令の個々のもののオペランドとしてアクセスされるように構成することを含む、生成することと、を含み、
前記ベクトル命令は、各々が複数のデータビットを含む複数のデータレーンを含む１つ以上のデータレジスタについて動作する、方法。
【請求項９】
前記左ベクトルおよび右ベクトルの前記ロードが、
前記ベクトルの直前の前ベクトルをロードすることと、
前記ベクトルの直後の次ベクトルをロードすることと、
ベクトル抽出命令を実行して、前記前ベクトルと前記ベクトルを用いて前記左ベクトルを生成することと、
前記ベクトル抽出命令を実行して、前記ベクトルと前記次ベクトルを用いて前記右ベクトルを生成することと、を含む、請求項８に記載の方法。
【請求項１０】
前記ベクトル抽出命令を実行することが、
第１のベクトルレジスタを第２のベクトルレジスタに連結して、中間結果を生成することと、
前記中間結果を複数のレーン左にシフトすることと、
前記中間結果の上部を含む出力ベクトルを生成することと、含む、請求項９に記載の方法。
【請求項１１】
前記特定の出力ベクトルを生成することが、前記３つ以上のソースベクトルの各々のものに対してベクトルスケーリング命令を実行することを含み、前記ベクトルスケーリング命令を実行することが、
前記カーネルベクトルを含むレジスタの指定のレーンから重み付け値をロードすることと、
前記重み付け値によってスケーリングされた前記ベクトルスケーリング命令のオペランドとして指定されたベクトルレジスタのそれぞれのデータレーンを含むスケーリングベクトルを生成することと、
前記１つ以上の出力ベクトルのうちの前記特定の１つに前記スケーリングベクトルを加算することと、を含む、請求項８に記載の方法。
【請求項１２】
前記畳み込みが多次元畳み込みであり、前記１つ以上の出力ベクトルが複数の出力ベクトルを含む、請求項８に記載の方法。
【請求項１３】
前記畳み込みが、畳み込みニューラルネットワークの一部として行われる、請求項８に記載の方法。
【請求項１４】
複数のベクトル命令を記憶する非一時的コンピュータ読み取り可能記憶媒体であって、前記複数のベクトル命令が、プロセッサ上で実行されると、前記プロセッサにベクトルの畳み込みを実行させ、前記複数のベクトル命令が、
前記プロセッサのそれぞれ異なるベクトルレジスタに、
３つ以上のソースベクトルであって、
前記ベクトルの第１のデータレーンで開始する前記ベクトルの連続する複数のデータレーンを含む中央ベクトルと、
前記ベクトルの前記第１のデータレーンの前に１つのデータレーンを開始する前記ベクトルの連続する複数のデータレーンを含む左ベクトルと、
前記ベクトルの前記第１のデータレーンの後に１つのデータレーンを開始する前記ベクトルの連続する複数のデータレーンを含む右ベクトルと、を含む、３つ以上のソースベクトルと、
中央重み付け値、左重み付け値および右重み付け値を含む複数の重み付け値を含むカーネルベクトルと、をロードすることと、
前記ロードすることに続いて、１つ以上の出力ベクトルを生成することであって、前記１つ以上の出力ベクトルが、それぞれ、前記それぞれ異なるベクトルレジスタにロードされた前記３つ以上のソースベクトルの重み付け和を含み、前記１つ以上の出力ベクトルのうちの特定の出力ベクトルを生成することが、前記プロセッサの前記それぞれ異なるベクトルレジスタが、
前記特定の出力ベクトルのために前記カーネルベクトルの前記中央重み付け値によって各々スケーリングされた前記中央ベクトルのそれぞれのレーンを含むスケーリング中央ベクトルと、
前記特定の出力ベクトルのために前記カーネルベクトルの前記左重み付け値によって各々スケーリングされた前記左ベクトルのそれぞれのレーンを含むスケーリング左ベクトルと、
前記特定の出力ベクトルのために前記カーネルベクトルの前記右重み付け値によって各々スケーリングされた前記右ベクトルのそれぞれのレーンを含むスケーリング右ベクトルと、
を加算する前記複数のベクトル命令の個々のもののオペランドとしてアクセスされるように構成することを含む、生成することと、を含む、非一時的コンピュータ読み取り可能記憶媒体。
【請求項１５】
前記左ベクトルおよび右ベクトルの前記ロードが、
前記ベクトルの直前の前ベクトルをロードすることと、
前記ベクトルの直後の次ベクトルをロードすることと、
ベクトル抽出命令を実行して、前記前ベクトルと前記ベクトルを用いて前記左ベクトルを生成することと、
前記ベクトル抽出命令を実行して、前記ベクトルと前記次ベクトルを用いて前記右ベクトルを生成することと、を含む、請求項１４に記載の非一時的コンピュータ読み取り可能記憶媒体。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2020533691.tif 000001