JP2017138964A - N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 - Google Patents
N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 Download PDFInfo
- Publication number
- JP2017138964A JP2017138964A JP2016250976A JP2016250976A JP2017138964A JP 2017138964 A JP2017138964 A JP 2017138964A JP 2016250976 A JP2016250976 A JP 2016250976A JP 2016250976 A JP2016250976 A JP 2016250976A JP 2017138964 A JP2017138964 A JP 2017138964A
- Authority
- JP
- Japan
- Prior art keywords
- tensor
- elements
- index
- value
- value stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000004044 response Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3555—Indexed addressing using scaling, e.g. multiplication of index
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】当該装置は、複数のテンソルインデックス要素と、複数の次元乗数要素とを含み、次元乗数要素の各々は、対応するテンソルインデックス要素を有する。当該装置は、1つ以上のプロセッサを含み、当該1つ以上のプロセッサは、N次元テンソルの特定の要素にアクセスするための命令を取得するように構成され、N次元テンソルは、N個の次元の各々にわたって配置された複数の要素を有し、Nは、1以上の整数であり、当該1つ以上のプロセッサはさらに、複数のテンソルインデックス要素のうちの1つ以上のテンソルインデックス要素および複数の次元乗数要素のうちの1つ以上の次元乗数要素を用いて、特定の要素のアドレスを決定するように構成され、N次元テンソルの特定の要素にアクセスするための決定されたアドレスを示すデータを出力するように構成される。
【選択図】図1
Description
背景
本明細書は、一般に、メモリアドレス値を計算するためのレジスタの使用に関する。レジスタは、分岐条件の処理に使用され得る。
本明細書に記載されている主題の1つの革新的な側面によれば、レジスタは、入れ子ループ構造を反復し、対応するメモリアドレスを計算し、プログラマがループ境界条件を処理することを可能にすることに使用できる。一般に、レジスタは、ループ境界値、各ループにおける現在のループインデックス変数、メモリアドレス値を計算するための次元乗数、および分岐ループ境界を処理するためのプログラムカウンタ値を含むアーキテクチャステータスのいくつかのセットを維持するように配置され得る。当該配置は、1つ以上の多次元データ構造の処理にとって有効であり得る。これらのアーキテクチャステータスセットにより、プロセッサは、インデックス変数を新たな位置に移動させ、メモリアドレス値を検索し、新たな分岐先にジャンプするための命令を実行し得る。
詳細な説明
一般に、ソフトウェアアルゴリズムがN次元テンソルを処理する際には、入れ子ループが使用され得て、各ループは、N次元テンソルの各次元をトラバースする役割を果たしている。多次元テンソルは、マトリクスまたは多次元マトリクスであってもよい。N次元テンソルの各次元は、1つ以上の要素を含み得て、各要素は、それぞれのデータ値を記憶し得る。例えば、テンソルは、プログラムにおける変数であってもよく、当該変数は、3つの次元を有し得る。第1の次元は、300個の要素の長さを有し得て、第2の次元は、1000個の要素の長さを有し得て、第3の次元は、20個の要素の長さを有し得る。入れ子ループにおいてテンソルをトラバースするには、要素の対応するデータ値をロードまたは記憶するために当該要素のメモリアドレス値の計算を必要とする。例えば、forループは入れ子ループであり、3つのループインデックス変数によって追跡される3つのループは、三次元テンソルをトラバースするように入れ子にされることができる。場合によっては、プロセッサは、外側ループインデックス変数により内側ループのループ境界を設定するなどのループ境界条件を実行する必要があるかもしれない。例えば、入れ子ループの最も内側のループを出るか否かを判断する際に、プログラムは、入れ子ループの最も内側のループのループインデックス変数の現在の値と、入れ子ループの最も外側のループのループインデックス変数の現在の値とを比較し得る。
Claims (20)
- N次元テンソルにアクセスするための命令を処理するための装置であって、
複数のテンソルインデックス要素と、
複数の次元乗数要素とを備え、前記次元乗数要素の各々は、対応するテンソルインデックス要素を有し、前記装置はさらに、
1つ以上のプロセッサを備え、前記1つ以上のプロセッサは、
N次元テンソルの特定の要素にアクセスするための命令を取得するように構成され、前記N次元テンソルは、N個の次元の各々にわたって配置された複数の要素を有し、Nは、1以上の整数であり、前記1つ以上のプロセッサはさらに、
前記複数のテンソルインデックス要素のうちの1つ以上のテンソルインデックス要素および前記複数の次元乗数要素のうちの1つ以上の次元乗数要素を用いて、前記特定の要素のアドレスを決定するように構成され、
前記N次元テンソルの前記特定の要素にアクセスするための前記決定されたアドレスを示すデータを出力するように構成される、装置。 - 前記特定の要素の前記アドレスは、前記N次元テンソルの別の要素からのアドレスオフセットであり、
前記特定の要素の前記アドレスを決定することは、
前記1つ以上のテンソルインデックス要素の各テンソルインデックス要素ごとに、それぞれのテンソルインデックス要素に記憶された値と前記1つ以上の複数のテンソルインデックス要素の前記対応するテンソルインデックス要素に記憶された値とを乗算して、それぞれの乗算された値を生成することと、
前記乗算された値の合計を求めることによって前記アドレスオフセットを決定することとを備える、請求項1に記載の装置。 - 前記複数のテンソルインデックス要素は、テンソルインデックス要素のM個のグループに配置され、Mは、1よりも大きな正の整数であり、
テンソルインデックス要素の各グループは、別個の異なる多次元テンソルに割り当てられる、請求項1に記載の装置。 - 複数のテンソル境界要素をさらに備え、前記複数のテンソル境界要素の各々は、前記複数のテンソルインデックス要素における対応するテンソルインデックス要素を有する、請求項1に記載の装置。
- 前記命令は、第1のループと前記第1のループの外側ループである第2のループとを含む入れ子ループを処理するための命令を表わし、前記第1のループは、第1のインデックス変数を用いて反復され、前記第2のループは、第2のインデックス変数を用いて反復される、請求項4に記載の装置。
- 前記1つ以上のプロセッサはさらに、
前記複数のテンソルインデックス要素、前記複数の次元乗数要素および前記複数のテンソル境界要素に記憶された値を初期化値に設定するように構成される、請求項5に記載の装置。 - 前記1つ以上のプロセッサはさらに、
前記複数のテンソル境界要素の第1のテンソル境界要素に記憶された値を、前記第1のループを反復するための前記第1のインデックス変数の上限値に設定するように構成され、
前記複数のテンソル境界要素の第2のテンソル境界要素に記憶された値を、前記第2のループを反復するための前記第2のインデックス変数の上限値に設定するように構成され、
前記複数の次元乗数要素の第1の次元乗数要素に記憶された値を、予め定められた値に設定するように構成され、
前記複数の次元乗数要素の第2の次元乗数要素に記憶された値を、前記第1のインデックス変数の前記上限値に設定するように構成される、請求項5に記載の装置。 - 前記N次元テンソルの前記要素の前記アドレスを決定することは、
前記複数のテンソルインデックス要素の第1のテンソルインデックス要素に記憶された値を、前記第1のインデックス変数の現在の値に設定することと、
前記複数のテンソルインデックス要素の第2のテンソルインデックス要素に記憶された値を、前記第2のインデックス変数の現在の値に設定することと、
前記第1の次元乗数要素に記憶された前記値と前記第1のテンソルインデックス要素に記憶された前記値とを乗算して、第1の乗算された値を取得することと、
前記第2の次元乗数要素に記憶された前記値と前記第2のテンソルインデックス要素に記憶された前記値とを乗算して、第2の乗算された値を取得することと、
前記第1の乗算された値および前記第2の乗算された値を少なくとも合計することによって前記アドレスを決定することとを備える、請求項7に記載の装置。 - 前記1つ以上のプロセッサはさらに、
前記第1のテンソルインデックス要素に記憶された前記値を更新するための命令を受取るように構成され、
前記第1のテンソルインデックス要素に記憶された前記値を更新するための前記命令を受取った後、前記第1のテンソルインデックス要素に記憶された前記値と前記第1のテンソル境界要素に記憶された前記値との間の差が閾値を満たすことを判断するように構成され、
前記第1のテンソルインデックス要素に記憶された前記値と前記第1のテンソル境界要素に記憶された前記値との間の前記差が前記閾値を満たすと判断したことに応答して、前記第1のテンソルインデックス要素に記憶された前記値を更新するように構成される、請求項8に記載の装置。 - 前記第1のインデックス変数は、前記第1のループが完了するたびに第1のインクリメント値だけインクリメントされ、
前記第1のテンソルインデックス要素に記憶された前記値を更新することは、前記第1のテンソルインデックス要素に記憶された前記値を前記第1のインクリメント値だけインクリメントすることを備える、請求項9に記載の装置。 - 前記1つ以上のプロセッサはさらに、
前記第1のテンソルインデックス要素に記憶された前記値を更新するための命令を受取るように構成され、
前記第1のテンソルインデックス要素に記憶された前記値を更新するための前記命令を受取った後、前記第1のテンソルインデックス要素に記憶された前記値と前記第1のテンソル境界要素に記憶された前記値との間の差が閾値を満たさないことを判断するように構成され、
前記第1のテンソルインデックス要素に記憶された前記値と前記第1のテンソル境界要素に記憶された前記値との間の前記差が前記閾値を満たさないと判断したことに応答して、
前記第1のテンソルインデックス要素に記憶された前記値をリセットするように構成され、
前記第2のテンソルインデックス要素に記憶された前記値を更新するように構成される、請求項8に記載の装置。 - 前記第2のインデックス変数は、前記第2のループが完了するたびに第2のインクリメント値だけインクリメントされ、
前記第2のテンソルインデックス要素に記憶された前記値を更新することは、前記第2のテンソルインデックス要素に記憶された前記値を前記第2のインクリメント値だけインクリメントすることを備える、請求項11に記載の装置。 - 前記1つ以上のプロセッサは、1つ以上の演算論理ユニットを含む、請求項1に記載の装置。
- 前記テンソルインデックス要素および前記次元乗数要素の各々は、レジスタである、請求項1に記載の装置。
- 複数の分岐先要素をさらに備え、前記複数の分岐先要素の各々は、前記複数のテンソルインデックス要素における対応するテンソルインデックス要素を有し、前記複数の分岐先要素の各々は、それぞれの分岐先要素に対応するループの反復が完了すると実行される命令のためのアドレスを記憶するように構成される、請求項1に記載の装置。
- システムであって、
N次元テンソル上で線形代数演算を実行するように構成された1つ以上のプロセッサを備え、前記N次元テンソルは、N個の次元の各々にわたって配置された複数の要素を有し、Nは、1以上の整数であり、前記システムはさらに、
複数のテンソルインデックス要素と、
複数の次元乗数要素とを備え、前記次元乗数要素の各々は、対応するテンソルインデックス要素を有し、前記システムはさらに、
回路を備え、前記回路は、
前記N次元テンソルの特定の要素にアクセスするための命令を取得するように構成され、
前記複数のテンソルインデックス要素のうちの1つ以上のテンソルインデックス要素および前記複数の次元乗数要素のうちの1つ以上の次元乗数要素を用いて、前記特定の要素のアドレスを決定するように構成され、
前記N次元テンソルの前記特定の要素にアクセスするための前記決定されたアドレスを示すデータを前記1つ以上のプロセッサに出力するように構成される、システム。 - 前記特定の要素の前記アドレスは、前記N次元テンソルの別の要素からのアドレスオフセットであり、
前記特定の要素の前記アドレスを決定することは、
前記1つ以上のテンソルインデックス要素の各テンソルインデックス要素ごとに、それぞれのテンソルインデックス要素に記憶された値と前記1つ以上の複数のテンソルインデックス要素の前記対応するテンソルインデックス要素に記憶された値とを乗算して、それぞれの乗算された値を生成することと、
前記乗算された値の合計を求めることによって前記アドレスオフセットを決定することとを備える、請求項16に記載のシステム。 - コンピュータによって実行される方法であって、
N次元テンソルの特定の要素にアクセスするための命令を取得するステップを備え、前記N次元テンソルは、N個の次元の各々にわたって配置された複数の要素を有し、Nは、1以上の整数であり、前記方法はさらに、
複数のテンソルインデックス要素のうちの1つ以上のテンソルインデックス要素および複数の次元乗数要素のうちの1つ以上の次元乗数要素を用いて、前記特定の要素のアドレスを決定するステップと、
前記N次元テンソルの前記特定の要素にアクセスするための前記決定されたアドレスを示すデータを出力するステップとを備える、方法。 - 前記特定の要素の前記アドレスは、前記N次元テンソルの別の要素からのアドレスオフセットであり、
前記特定の要素の前記アドレスを決定するステップは、
前記1つ以上のテンソルインデックス要素の各テンソルインデックス要素ごとに、それぞれのテンソルインデックス要素に記憶された値と前記1つ以上の複数のテンソルインデックス要素の対応するテンソルインデックス要素に記憶された値とを乗算して、それぞれの乗算された値を生成するステップと、
前記乗算された値の合計を求めることによって前記アドレスオフセットを決定するステップとを備える、請求項18に記載の方法。 - 前記命令は、第1のループと前記第1のループの外側ループである第2のループとを含む入れ子ループを処理するための命令を表わし、前記第1のループは、第1のインデックス変数を用いて反復され、前記第2のループは、第2のインデックス変数を用いて反復される、請求項18に記載の方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021096509A JP7225314B2 (ja) | 2016-02-03 | 2021-06-09 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
JP2023017754A JP7507271B2 (ja) | 2016-02-03 | 2023-02-08 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/014,265 US9875104B2 (en) | 2016-02-03 | 2016-02-03 | Accessing data in multi-dimensional tensors |
US15/014,265 | 2016-02-03 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021096509A Division JP7225314B2 (ja) | 2016-02-03 | 2021-06-09 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2017138964A true JP2017138964A (ja) | 2017-08-10 |
JP2017138964A5 JP2017138964A5 (ja) | 2019-06-13 |
JP6896415B2 JP6896415B2 (ja) | 2021-06-30 |
Family
ID=57860636
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016250976A Active JP6896415B2 (ja) | 2016-02-03 | 2016-12-26 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
JP2021096509A Active JP7225314B2 (ja) | 2016-02-03 | 2021-06-09 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
JP2023017754A Active JP7507271B2 (ja) | 2016-02-03 | 2023-02-08 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021096509A Active JP7225314B2 (ja) | 2016-02-03 | 2021-06-09 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
JP2023017754A Active JP7507271B2 (ja) | 2016-02-03 | 2023-02-08 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9875104B2 (ja) |
EP (1) | EP3226121A3 (ja) |
JP (3) | JP6896415B2 (ja) |
KR (4) | KR101924500B1 (ja) |
CN (2) | CN107038018B (ja) |
SG (2) | SG10201610917TA (ja) |
TW (4) | TWI681291B (ja) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9256480B2 (en) * | 2012-07-25 | 2016-02-09 | Mobileye Vision Technologies Ltd. | Computer architecture with a hardware accumulator reset |
US9875104B2 (en) | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
US10360163B2 (en) | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US9959498B1 (en) | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10896367B2 (en) * | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
CN110337635B (zh) | 2017-03-20 | 2023-09-19 | 英特尔公司 | 用于点积操作的***、方法和装置 |
US10684955B2 (en) | 2017-04-21 | 2020-06-16 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access with memory maps based on memory operations |
US10248908B2 (en) * | 2017-06-19 | 2019-04-02 | Google Llc | Alternative loop limits for accessing data in multi-dimensional tensors |
WO2019009870A1 (en) | 2017-07-01 | 2019-01-10 | Intel Corporation | SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE |
US10175912B1 (en) | 2017-07-05 | 2019-01-08 | Google Llc | Hardware double buffering using a special purpose computational unit |
US10108538B1 (en) | 2017-07-31 | 2018-10-23 | Google Llc | Accessing prologue and epilogue data |
GB2567038B (en) * | 2017-07-31 | 2019-09-25 | Google Llc | Accessing prologue and epilogue data |
GB2568776B (en) | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US11620490B2 (en) * | 2017-10-17 | 2023-04-04 | Xilinx, Inc. | Multi-layer neural network processing by a neural network accelerator using host communicated merged weights and a package of per-layer instructions |
KR102027034B1 (ko) * | 2017-11-24 | 2019-09-30 | 서울대학교산학협력단 | 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 |
WO2019113007A1 (en) * | 2017-12-05 | 2019-06-13 | Wave Computing, Inc. | Pipelined tensor manipulation within a reconfigurable fabric |
US10956315B2 (en) * | 2018-07-24 | 2021-03-23 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access |
CN109255438B (zh) * | 2018-09-17 | 2020-07-17 | 地平线(上海)人工智能技术有限公司 | 调整张量数据的方法和装置 |
CN111291240B (zh) * | 2018-12-06 | 2023-12-08 | 华为技术有限公司 | 处理数据的方法和数据处理装置 |
CN111324294B (zh) * | 2018-12-17 | 2023-11-07 | 地平线(上海)人工智能技术有限公司 | 存取张量数据的方法和装置 |
CN109857744B (zh) * | 2019-02-13 | 2020-03-20 | 上海燧原智能科技有限公司 | 稀疏张量计算方法、装置、设备及存储介质 |
CN111723917B (zh) * | 2019-03-21 | 2022-11-01 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN112257857B (zh) * | 2019-07-22 | 2024-06-04 | 中科寒武纪科技股份有限公司 | 张量处理方法及相关产品 |
CN110209503B (zh) * | 2019-08-01 | 2019-10-25 | 上海燧原智能科技有限公司 | 多维张量的规约计算方法、装置、设备及介质 |
US11687336B2 (en) * | 2020-05-08 | 2023-06-27 | Black Sesame Technologies Inc. | Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks |
WO2021248433A1 (en) * | 2020-06-12 | 2021-12-16 | Moffett Technologies Co., Limited | Method and system for dual-sparse convolution processing and parallelization |
CN111767508B (zh) * | 2020-07-09 | 2024-02-23 | 地平线(上海)人工智能技术有限公司 | 计算机实现张量数据计算的方法、装置、介质和设备 |
CN111737007B (zh) * | 2020-07-24 | 2021-06-18 | 北京一流科技有限公司 | 数据对象的分频处理***及其方法 |
US11954580B2 (en) * | 2020-09-16 | 2024-04-09 | Meta Platforms, Inc. | Spatial tiling of compute arrays with shared control |
CN113836049B (zh) * | 2021-09-17 | 2023-08-08 | 海飞科(南京)信息技术有限公司 | 存储器访问方法和电子装置 |
CN114489798B (zh) * | 2022-01-25 | 2024-04-05 | 海飞科(南京)信息技术有限公司 | 用于确定张量元素的越界状态的方法和电子装置 |
US11868329B2 (en) | 2022-05-20 | 2024-01-09 | International Business Machines Corporation | Multidimensional cube multivariate regression |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58114245A (ja) * | 1981-12-28 | 1983-07-07 | Fujitsu Ltd | インデツクス・インクリメントのベクトル化方式 |
JP2003244190A (ja) * | 2002-02-19 | 2003-08-29 | Matsushita Electric Ind Co Ltd | データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ |
JP2003526155A (ja) * | 2000-03-08 | 2003-09-02 | サン・マイクロシステムズ・インコーポレイテッド | 配列境界をチェックする能力を有する処理アーキテクチャ |
US20140188961A1 (en) * | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3102027B2 (ja) | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | ループ制御のネスティング管理機構 |
US5958048A (en) * | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
GB2359641B (en) | 2000-02-25 | 2002-02-13 | Siroyan Ltd | Mapping circuitry and method |
WO2001090888A1 (en) * | 2000-05-23 | 2001-11-29 | Theis Jean Paul | A data processing system having an address generation unit with hardwired multidimensional memory indexing support |
US6647484B1 (en) * | 2000-09-19 | 2003-11-11 | 3 Dsp Corporation | Transpose address mode in general purpose DSP processor |
US6952821B2 (en) * | 2002-08-19 | 2005-10-04 | Hewlett-Packard Development Company, L.P. | Method and system for memory management optimization |
US7107199B2 (en) * | 2002-10-31 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and system for the design of pipelines of processors |
US7047480B2 (en) * | 2002-11-12 | 2006-05-16 | Microsoft Corporation | Matrix multiplication in a Galois field for forward error correction |
US7225439B2 (en) * | 2003-03-21 | 2007-05-29 | Sun Microsystems, Inc. | Combining write-barriers within an inner loop with fixed step |
CN1259617C (zh) * | 2003-09-09 | 2006-06-14 | 大唐微电子技术有限公司 | 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路 |
EP1844393A2 (en) | 2005-01-25 | 2007-10-17 | Nxp B.V. | Multi-threaded processor |
US8806183B1 (en) | 2006-02-01 | 2014-08-12 | Ixys Ch Gmbh | Blank bit and processor instructions employing the blank bit |
US8904155B2 (en) | 2006-03-17 | 2014-12-02 | Qualcomm Incorporated | Representing loop branches in a branch history register with multiple bits |
US8438365B2 (en) * | 2006-10-06 | 2013-05-07 | Calos Fund Limited Liability Company | Efficient data loading in a data-parallel processor |
DE602007005790D1 (de) * | 2007-06-26 | 2010-05-20 | Ericsson Telefon Ab L M | Datenverarbeitungseinheit für Anweisungen in geschachtelten Schleifen |
US20100122066A1 (en) | 2008-11-12 | 2010-05-13 | Freescale Semiconductor, Inc. | Instruction method for facilitating efficient coding and instruction fetch of loop construct |
US20100274972A1 (en) | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
CA2684226A1 (en) | 2009-10-30 | 2011-04-30 | Ibm Canada Limited - Ibm Canada Limitee | Eleminating redundant operations for common properties using shared real registers |
US10803009B2 (en) * | 2011-07-14 | 2020-10-13 | Texas Instruments Incorporated | Processor with table lookup processing unit |
WO2013095601A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
US20140181171A1 (en) | 2012-12-24 | 2014-06-26 | Pavel Dourbal | Method and system for fast tensor-vector multiplication |
CN103440513B (zh) * | 2013-09-17 | 2017-01-18 | 西安电子科技大学 | 基于稀疏非负张量分解的大脑特定视觉认知状态判定方法 |
US8947447B1 (en) | 2014-02-13 | 2015-02-03 | Raycast Systems, Inc. | Computer hardware architecture and data structures for ray binning to support incoherent ray traversal |
CN105260322B (zh) * | 2014-06-30 | 2020-09-01 | 中兴通讯股份有限公司 | 一种对循环缓冲区消除循环移位的方法和装置 |
US11170294B2 (en) | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
US9875104B2 (en) * | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
EP3465550B1 (en) | 2016-05-26 | 2023-09-27 | Samsung Electronics Co., Ltd. | Accelerator for deep neural networks |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
-
2016
- 2016-02-03 US US15/014,265 patent/US9875104B2/en active Active
- 2016-12-26 JP JP2016250976A patent/JP6896415B2/ja active Active
- 2016-12-28 SG SG10201610917TA patent/SG10201610917TA/en unknown
- 2016-12-28 SG SG10202104454YA patent/SG10202104454YA/en unknown
- 2016-12-29 KR KR1020160182981A patent/KR101924500B1/ko active IP Right Grant
- 2016-12-30 TW TW107126366A patent/TWI681291B/zh active
- 2016-12-30 EP EP16207511.3A patent/EP3226121A3/en active Pending
- 2016-12-30 TW TW105144084A patent/TWI635390B/zh active
- 2016-12-30 TW TW109123874A patent/TWI772842B/zh active
- 2016-12-30 TW TW108144554A patent/TWI700587B/zh active
-
2017
- 2017-01-13 CN CN201710025689.7A patent/CN107038018B/zh active Active
- 2017-01-13 CN CN201910630145.2A patent/CN110457069B/zh active Active
- 2017-03-13 US US15/456,812 patent/US9875100B2/en active Active
- 2017-12-15 US US15/844,192 patent/US10228947B2/en active Active
-
2018
- 2018-11-20 KR KR1020180143824A patent/KR102472424B1/ko active IP Right Grant
-
2019
- 2019-03-11 US US16/298,535 patent/US10838724B2/en active Active
-
2021
- 2021-06-09 JP JP2021096509A patent/JP7225314B2/ja active Active
-
2022
- 2022-11-24 KR KR1020220159111A patent/KR102596365B1/ko active IP Right Grant
-
2023
- 2023-02-08 JP JP2023017754A patent/JP7507271B2/ja active Active
- 2023-10-26 KR KR1020230144479A patent/KR20230153972A/ko not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58114245A (ja) * | 1981-12-28 | 1983-07-07 | Fujitsu Ltd | インデツクス・インクリメントのベクトル化方式 |
JP2003526155A (ja) * | 2000-03-08 | 2003-09-02 | サン・マイクロシステムズ・インコーポレイテッド | 配列境界をチェックする能力を有する処理アーキテクチャ |
JP2003244190A (ja) * | 2002-02-19 | 2003-08-29 | Matsushita Electric Ind Co Ltd | データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ |
US20140188961A1 (en) * | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7225314B2 (ja) | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 | |
JP6953577B2 (ja) | ニューラルネットワークプロセッサで使用される重みのプリフェッチ | |
US10534607B2 (en) | Accessing data in multi-dimensional tensors using adders | |
US10108538B1 (en) | Accessing prologue and epilogue data | |
TWI678617B (zh) | 用於在使用加法器之多維張量中存取資料之系統、電腦實施方法及設備 | |
JP2019537139A (ja) | ハードウェアにおけるカーネルストライドの実行 | |
BR102016030825B1 (pt) | Equipamento e método implementado em computador para processar uma instrução para acessar um tensor n-dimensional | |
BR122023003223B1 (pt) | Equipamento para processar uma instrução para processar um laço encaixado e método implementado em computador |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190425 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190425 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200608 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200901 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20201130 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210105 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210511 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210609 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6896415 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |