KR20170092445A - 다차원 텐서들에서의 데이터 액세스 - Google Patents
다차원 텐서들에서의 데이터 액세스 Download PDFInfo
- Publication number
- KR20170092445A KR20170092445A KR1020160182981A KR20160182981A KR20170092445A KR 20170092445 A KR20170092445 A KR 20170092445A KR 1020160182981 A KR1020160182981 A KR 1020160182981A KR 20160182981 A KR20160182981 A KR 20160182981A KR 20170092445 A KR20170092445 A KR 20170092445A
- Authority
- KR
- South Korea
- Prior art keywords
- tensor
- elements
- index
- value stored
- value
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational 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
Description
[0016] 도 2a 내지 도 2h는 예시적인 텐서 순회(tensor traversal) 유닛을 도시한다.
[0017] 도 3은 예시적인 텐서 순회 유닛을 도시한다.
[0018] 도 4는 다차원 텐서 변수의 어드레스를 결정하기 위한 프로세스의 일례를 도시하는 흐름도이다.
[0019] 다양한 도면들에서 동일한 참조번호들 및 지정들은 동일한 엘리먼트들을 표시한다.
Claims (20)
- N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치로서,
다수의 텐서 인덱스 엘리먼트들;
다수의 차원 승수 엘리먼트들 ―상기 차원 승수 엘리먼트들 각각은 대응하는 텐서 인덱스 엘리먼트를 가짐―; 및
하나 이상의 프로세서들을 포함하며,
상기 하나 이상의 프로세는:
N-차원 텐서의 특정 엘리먼트에 액세스하기 위한 명령을 획득하고 ―상기 N-차원 텐서는 상기 N 차원들 각각에 걸쳐 배열된 다수의 엘리먼트들을 가지며, N은 1보다 크거나 같은 정수임―;
상기 다수의 텐서 인덱스 엘리먼트들 중 하나 이상의 텐서 인덱스 엘리먼트들 및 상기 다수의 차원 승수 엘리먼트들 중 하나 이상의 차원 승수 엘리먼트들을 이용하여, 상기 특정 엘리먼트의 어드레스를 결정하고; 그리고
상기 N-차원 텐서의 상기 특정 엘리먼트에 액세스하기 위해 결정된 어드레스를 나타내는 데이터를 출력하도록 구성되는,
N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 1 항에 있어서,
상기 특정 엘리먼트의 상기 어드레스는 상기 N-차원 텐서의 다른 엘리먼트로부터의 어드레스 오프셋이며,
상기 특정 엘리먼트의 상기 어드레스를 결정하는 것은,
상기 하나 이상의 텐서 인덱스 엘리먼트들 중 각각의 텐서 인덱스 엘리먼트에 대해, 상기 각각의 텐서 인덱스 엘리먼트에 저장된 값에 하나 이상의 다수의 텐서 인덱스 엘리먼트들 중 대응하는 텐서 인덱스 엘리먼트에 저장된 값을 곱하여 각각의 곱해진 값을 생성하고; 그리고
곱해진 값들의 합을 결정함으로써 상기 어드레스 오프셋을 결정하는 것을 포함하는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 1 항에 있어서,
상기 다수의 텐서 인덱스 엘리먼트들은 M개의 그룹의 텐서 인덱스 엘리먼트들로 배열되고, M은 1보다 큰 양의 정수이고,
텐서 인덱스 엘리먼트들의 각 그룹은 별개의 상이한 다차원 텐서에 할당되는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 1 항에 있어서,
다수의 텐서 바운드 엘리먼트들을 더 포함하며,
상기 다수의 텐서 바운드 엘리먼트들 각각은 상기 다수의 텐서 인덱스 엘리먼트들 중 대응하는 텐서 인덱스 엘리먼트를 갖는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 4 항에 있어서,
상기 명령은, 제 1 루프 및 상기 제 1 루프의 외곽 루프인 제 2 루프를 포함하는 중첩 루프를 프로세싱하기 위한 명령을 나타내며,
상기 제 1 루프는 제 1 인덱스 변수를 사용하여 반복되고, 상기 제 2 루프는 제 2 인덱스 변수를 사용하여 반복되는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 5 항에 있어서,
상기 하나 이상의 프로세서들은:
상기 다수의 텐서 인덱스 엘리먼트들, 상기 다수의 차원 승수 엘리먼트들 및 상기 다수의 텐서 바운드 엘리먼트들에 저장된 값들을 초기화 값으로 설정하도록 추가로 구성되는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 5 항에 있어서,
상기 하나 이상의 프로세서들은:
상기 다수의 텐서 바운드 엘리먼트들 중 제 1 텐서 바운드 엘리먼트에 저장된 값을 상기 제 1 루프를 반복하기 위해 상기 제 1 인덱스 변수의 상한 값으로 설정하고;
상기 다수의 텐서 바운드 엘리먼트들의 제 2 텐서 바운드 엘리먼트에 저장된 값을 상기 제 2 루프를 반복하기 위해 상기 제 2 인덱스 변수의 상한 값으로 설정하고;
상기 다수의 차원 승수 엘리먼트들 중 제 1 차원 승수 엘리먼트에 저장된 값을 미리 결정된 값으로 설정하고; 그리고
상기 다수의 차원 승수 엘리먼트들 중 제 2 차원 승수 엘리먼트에 저장된 값을 상기 제 1 인덱스 변수의 상한 값으로 설정하도록 추가로 구성되는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 7 항에 있어서,
상기 N-차원 텐서의 상기 엘리먼트의 상기 어드레스를 결정하는 것은;
상기 다수의 텐서 인덱스 엘리먼트들 중 제 1 텐서 인덱스 엘리먼트에 저장된 값을 상기 제 1 인덱스 변수의 현재 값으로 설정하고;
상기 다수의 텐서 인덱스 엘리먼트들 중 제 2 텐서 인덱스 엘리먼트에 저장된 값을 상기 제 2 인덱스 변수의 현재 값으로 설정하고;
제 1 곱해진 값을 얻기 위해 상기 제 1 차원 승수 엘리먼트에 저장된 상기 값에 상기 제 1 텐서 인덱스 엘리먼트에 저장된 값을 곱하고;
제 2 곱해진 값을 얻기 위해 상기 제 2 차원 승수 엘리먼트에 저장된 상기 값에 상기 제 2 텐서 인덱스 엘리먼트에 저장된 상기 값을 곱하고; 그리고
적어도 상기 제 1 곱해진 값 및 제 2 곱해진 값을 합산함으로써 상기 어드레스를 결정하는 것을 포함하는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 8 항에 있어서,
상기 하나 이상의 프로세서들은:
상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값을 업데이트하기 위한 명령을 수신하고;
상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값을 업데이트하기 위한 상기 명령을 수신한 후, 상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값과 제 1 텐서 바운드 엘리먼트에 저장된 상기 값 사이의 차이가 임계 값을 만족한다고 결정하고; 그리고
상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값과 상기 제 1 텐서 바운드 엘리먼트에 저장된 상기 값 사이의 차이가 임계 값을 만족한다는 결정에 응답하여, 상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값을 업데이트하도록 추가로 구성되는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 9 항에 있어서,
상기 제 1 인덱스 변수는 상기 제 1 루프가 완료 될 때마다 제 1 증분 값만큼 증가되고,
상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값을 업데이트하는 것은, 상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값을 상기 제 1 증분 값만큼 증가시키는 것을 포함하는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 8 항에 있어서,
상기 하나 이상의 프로세서들은:
상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값을 업데이트하기 위한 명령을 수신하고;
상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값을 업데이트하기 위한 상기 명령을 수신한 후, 상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값과 상기 제 1 텐서 바운드 엘리먼트에 저장된 값 사이의 차이가 임계 값을 만족하지 않는다고 결정하고; 그리고
상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값과 상기 제 1 텐서 바운드 엘리먼트에 저장된 상기 값 사이의 차이가 임계 값을 만족하지 않는다는 결정에 응답하여, 상기 제 1 텐서 인덱스 엘리먼트에 저장된 상기 값을 리셋하고; 그리고 상기 제 2 텐서 인덱스 엘리먼트에 저장된 상기 값을 업데이트하도록 추가로 구성되는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 11 항에 있어서,
상기 제 2 인덱스 변수는 상기 제 2 루프가 완료 될 때마다 제 2 증분 값만큼 증가되고,
상기 제 2 텐서 인덱스 엘리먼트에 저장된 상기 값을 업데이트하는 것은, 상기 제 2 텐서 인덱스 엘리먼트에 저장된 상기 값을 상기 제 2 증분 값만큼 증가시키는 것을 포함하는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 1 항에 있어서,
상기 하나 이상의 프로세서들은 하나 이상의 연산 로직 유닛들을 포함하는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 1 항에 있어서,
상기 텐서 인덱스 엘리먼트들 및 상기 차원 승수 엘리먼트들 각각은 레지스터인, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 제 1 항에 있어서,
다수의 분기 타겟 엘리먼트들을 더 포함하고,
상기 다수의 분기 타겟 엘리먼트들 각각은 상기 다수의 텐서 인덱스 엘리먼트들 중 대응하는 텐서 인덱스 엘리먼트를 가지며, 상기 다수의 분기 타겟 엘리먼트들 각각은 상기 각각의 분기 타겟 엘리먼트에 대응하는 루프의 반복 완료 시에 실행될 명령에 대한 어드레스를 저장하도록 구성되는, N-차원 텐서에 액세스하기 위한 명령을 프로세싱하기 위한 장치. - 시스템으로서,
N-차원 텐서에 대한 선형 대수 연산들을 수행하도록 구성된 하나 이상의 프로세서들 ―상기 N-차원 텐서는 상기 N 차원들 각각에 걸쳐 배열된 다수의 엘리먼트들을 가지며, N은 1보다 크거나 같은 정수임―;
다수의 텐서 인덱스 엘리먼트들;
다수의 차원 승수 엘리먼트들 ―상기 차원 승수 엘리먼트들 각각은 대응하는 텐서 인덱스 엘리먼트를 가짐―;
회로를 포함하며, 상기 회로는,
상기 N-차원 텐서의 특정 엘리먼트에 액세스하기 위한 명령을 획득하고;
상기 다수의 텐서 인덱스 엘리먼트들 중 하나 이상의 텐서 인덱스 엘리먼트들 및 상기 다수의 차원 승수 엘리먼트들 중 하나 이상의 차원 승수 엘리먼트들을 이용하여, 상기 특정 엘리먼트의 어드레스를 결정하고; 그리고
상기 N-차원 텐서의 상기 특정 엘리먼트에 액세스하기 위해 결정된 어드레스를 나타내는 데이터를 상기 하나 이상의 프로세스들에 출력하도록 구성되는,
시스템. - 제 16 항에 있어서,
상기 특정 엘리먼트의 상기 어드레스는 상기 N-차원 텐서의 다른 엘리먼트로부터의 어드레스 오프셋이며,
상기 특정 엘리먼트의 상기 어드레스를 결정하는 것은,
상기 하나 이상의 텐서 인덱스 엘리먼트들의 각각의 텐서 인덱스 엘리먼트에 대해, 각각의 곱해진 값을 생성하기 위해 상기 각각의 텐서 인덱스 엘리먼트에 저장된 값에 하나 이상의 다수의 텐서 인덱스 엘리먼트들 중 상기 대응하는 텐서 인덱스 엘리먼트에 저장된 값을 곱하고; 그리고
곱해진 값들의 합을 결정함으로써 상기 어드레스 오프셋을 결정하는 것을 포함하는, 시스템. - 컴퓨터-구현 방법으로서,
N-차원 텐서의 특정 엘리먼트에 액세스하기 위한 명령을 획득하는 단계 ―상기 N-차원 텐서는 상기 N 차원들 각각에 걸쳐 배열된 다수의 엘리먼트들을 가지며, N은 1보다 크거나 같은 정수임―;
다수의 텐서 인덱스 엘리먼트들 중 하나 이상의 텐서 인덱스 엘리먼트들 및 다수의 차원 승수 엘리먼트들 중 하나 이상의 차원 승수 엘리먼트들을 이용하여, 상기 특정 엘리먼트의 어드레스를 결정하는 단계; 및
상기 N-차원 텐서의 상기 특정 엘리먼트에 액세스하기 위해 결정된 어드레스를 나타내는 데이터를 출력하는 단계를 포함하는, 컴퓨터-구현 방법. - 제 18 항에 있어서,
상기 특정 엘리먼트의 상기 어드레스는 상기 N-차원 텐서의 다른 엘리먼트로부터의 어드레스 오프셋이며,
상기 특정 엘리먼트의 상기 어드레스를 결정하는 단계는,
상기 하나 이상의 텐서 인덱스 엘리먼트들의 각각의 텐서 인덱스 엘리먼트에 대해, 각각의 곱해진 값을 생성하기 위해 상기 각각의 텐서 인덱스 엘리먼트에 저장된 값에 하나 이상의 다수의 텐서 인덱스 엘리먼트들 중 대응하는 텐서 인덱스 엘리먼트에 저장된 값을 곱하는 단계; 그리고
곱해진 값들의 합을 결정함으로써 상기 어드레스 오프셋을 결정하는 단계를 포함하는, 컴퓨터-구현 방법. - 제 18 항에 있어서,
상기 명령은, 제 1 루프 및 상기 제 1 루프의 외곽 루프인 제 2 루프를 포함하는 중첩 루프를 프로세싱하기 위한 명령을 나타내며,
상기 제 1 루프는 제 1 인덱스 변수를 사용하여 반복되고, 상기 제 2 루프는 제 2 인덱스 변수를 사용하여 반복되는, 컴퓨터-구현 방법.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020180143824A KR102472424B1 (ko) | 2016-02-03 | 2018-11-20 | 다차원 텐서들에서의 데이터 액세스 |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/014,265 | 2016-02-03 | ||
| US15/014,265 US9875104B2 (en) | 2016-02-03 | 2016-02-03 | Accessing data in multi-dimensional tensors |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020180143824A Division KR102472424B1 (ko) | 2016-02-03 | 2018-11-20 | 다차원 텐서들에서의 데이터 액세스 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20170092445A true KR20170092445A (ko) | 2017-08-11 |
| KR101924500B1 KR101924500B1 (ko) | 2018-12-03 |
Family
ID=57860636
Family Applications (4)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020160182981A Active KR101924500B1 (ko) | 2016-02-03 | 2016-12-29 | 다차원 텐서들에서의 데이터 액세스 |
| KR1020180143824A Active KR102472424B1 (ko) | 2016-02-03 | 2018-11-20 | 다차원 텐서들에서의 데이터 액세스 |
| KR1020220159111A Active KR102596365B1 (ko) | 2016-02-03 | 2022-11-24 | 다차원 텐서들에서의 데이터 액세스 |
| KR1020230144479A Active KR102788305B1 (ko) | 2016-02-03 | 2023-10-26 | 다차원 텐서들에서의 데이터 액세스 |
Family Applications After (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020180143824A Active KR102472424B1 (ko) | 2016-02-03 | 2018-11-20 | 다차원 텐서들에서의 데이터 액세스 |
| KR1020220159111A Active KR102596365B1 (ko) | 2016-02-03 | 2022-11-24 | 다차원 텐서들에서의 데이터 액세스 |
| KR1020230144479A Active KR102788305B1 (ko) | 2016-02-03 | 2023-10-26 | 다차원 텐서들에서의 데이터 액세스 |
Country Status (7)
| Country | Link |
|---|---|
| US (4) | US9875104B2 (ko) |
| EP (1) | EP3226121B1 (ko) |
| JP (3) | JP6896415B2 (ko) |
| KR (4) | KR101924500B1 (ko) |
| CN (2) | CN107038018B (ko) |
| SG (2) | SG10202104454YA (ko) |
| TW (4) | TWI681291B (ko) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20190060600A (ko) * | 2017-11-24 | 2019-06-03 | 서울대학교산학협력단 | 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 |
Families Citing this family (52)
| 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 |
| US9959498B1 (en) * | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
| 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 |
| US10896367B2 (en) * | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
| WO2018174928A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and apparatuses for zeroing a matrix |
| 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 |
| WO2019113007A1 (en) * | 2017-12-05 | 2019-06-13 | Wave Computing, Inc. | Pipelined tensor manipulation within a reconfigurable fabric |
| US10373291B1 (en) * | 2018-01-31 | 2019-08-06 | Google Llc | Image transformation for machine learning |
| 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 | 地平线(上海)人工智能技术有限公司 | 调整张量数据的方法和装置 |
| CN111191783B (zh) * | 2018-11-15 | 2024-04-05 | 嘉楠明芯(北京)科技有限公司 | 一种自适应量化方法及装置、设备、介质 |
| 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 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
| US11055095B2 (en) * | 2019-05-24 | 2021-07-06 | Texas Instruments Incorporated | Nested loop control |
| CN112257857B (zh) * | 2019-07-22 | 2024-06-04 | 中科寒武纪科技股份有限公司 | 张量处理方法及相关产品 |
| CN110209503B (zh) * | 2019-08-01 | 2019-10-25 | 上海燧原智能科技有限公司 | 多维张量的规约计算方法、装置、设备及介质 |
| WO2021071930A1 (en) | 2019-10-07 | 2021-04-15 | Google Llc | Redistributing tensor elements between machine learning computing units |
| US12423007B1 (en) * | 2020-03-31 | 2025-09-23 | Nvidia Corporation | Techniques for tensor memory allocation |
| 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 |
| CN116261736B (zh) * | 2020-06-12 | 2024-08-16 | 墨芯国际有限公司 | 用于双稀疏卷积处理和并行化的方法和系统 |
| CN111767508B (zh) * | 2020-07-09 | 2024-02-23 | 地平线(上海)人工智能技术有限公司 | 计算机实现张量数据计算的方法、装置、介质和设备 |
| US12353988B2 (en) | 2020-07-09 | 2025-07-08 | Celestial Ai Inc. | Neuromorphic photonics with coherent linear neurons |
| 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 |
| EP4336859A3 (en) | 2021-06-18 | 2024-06-05 | Celestial AI Inc. | Electro-photonic network for machine learning |
| US12271595B2 (en) | 2022-03-18 | 2025-04-08 | Celestial Ai Inc. | Photonic memory fabric for system memory interconnection |
| US12564047B2 (en) | 2022-10-28 | 2026-02-24 | Celestial Ai Inc. | Thermal control of an optical component |
| CN113836049B (zh) * | 2021-09-17 | 2023-08-08 | 海飞科(南京)信息技术有限公司 | 存储器访问方法和电子装置 |
| US12099635B1 (en) * | 2021-12-21 | 2024-09-24 | Meta Platforms Technologies, Llc | Opaque bound variables |
| KR102733032B1 (ko) * | 2021-12-27 | 2024-11-20 | 서울대학교산학협력단 | 다차원 텐서의 주소 생성 장치 및 방법 |
| CN114489798B (zh) * | 2022-01-25 | 2024-04-05 | 海飞科(南京)信息技术有限公司 | 用于确定张量元素的越界状态的方法和电子装置 |
| US12436346B2 (en) | 2022-03-18 | 2025-10-07 | Celestial Ai Inc. | Optically bridged multicomponent package with extended temperature range |
| KR20240155370A (ko) | 2022-03-18 | 2024-10-28 | 셀레스티얼 에이아이 인코포레이티드 | 광 멀티 다이 상호 연결 브리지(omib) |
| US11868329B2 (en) | 2022-05-20 | 2024-01-09 | International Business Machines Corporation | Multidimensional cube multivariate regression |
| US12283584B2 (en) | 2022-07-26 | 2025-04-22 | Celestial Ai Inc. | Electrical bridge package with integrated off-bridge photonic channel interface |
| US20240038657A1 (en) | 2022-07-26 | 2024-02-01 | Celestial Ai Inc. | Via formed using a partial plug that extends into a substrate |
| US12191257B2 (en) | 2022-07-26 | 2025-01-07 | Celestial Ai Inc. | Electrical bridge package with integrated off-bridge photonic channel interface |
| US20240069914A1 (en) * | 2022-08-23 | 2024-02-29 | Intel Corporation | Hardware enhancements for matrix load/store instructions |
| CN115757201A (zh) * | 2022-12-05 | 2023-03-07 | 北京算能科技有限公司 | 基于dma架构的sg指令实现方法、装置、设备及存储介质 |
| US12217056B2 (en) * | 2023-01-27 | 2025-02-04 | Celestial Ai Inc. | Load/store unit for a tensor engine and methods for loading or storing a tensor |
| US20260023565A1 (en) * | 2024-07-16 | 2026-01-22 | Tenstorrent USA, Inc. | Adaptive memory address computation based on tensor dimensions |
Family Cites Families (34)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS58114245A (ja) * | 1981-12-28 | 1983-07-07 | Fujitsu Ltd | インデツクス・インクリメントのベクトル化方式 |
| JP3102027B2 (ja) | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | ループ制御のネスティング管理機構 |
| US5357618A (en) * | 1991-04-15 | 1994-10-18 | International Business Machines Corporation | Cache prefetch and bypass using stride registers |
| 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 |
| KR20030016234A (ko) * | 2000-03-08 | 2003-02-26 | 선 마이크로시스템즈, 인코포레이티드 | 어레이 바운드 체크 수용능력을 가진 아퀴텍쳐 처리 |
| 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 |
| US7249242B2 (en) | 2002-10-28 | 2007-07-24 | Nvidia Corporation | Input pipeline registers for a node in an adaptive computing engine |
| JP2003244190A (ja) * | 2002-02-19 | 2003-08-29 | Matsushita Electric Ind Co Ltd | データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ |
| 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加/解密过程的方法及其模乘、模幂运算电路 |
| CN100520714C (zh) | 2005-01-25 | 2009-07-29 | Nxp股份有限公司 | 多线程处理器 |
| 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 |
| EP2009544B1 (en) * | 2007-06-26 | 2010-04-07 | Telefonaktiebolaget LM Ericsson (publ) | Data-processing unit for nested-loop instructions |
| 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 |
| US20130185538A1 (en) * | 2011-07-14 | 2013-07-18 | Texas Instruments Incorporated | Processor with inter-processing path communication |
| CN104081341B (zh) * | 2011-12-23 | 2017-10-27 | 英特尔公司 | 用于多维数组中的元素偏移量计算的指令 |
| US20140181171A1 (en) | 2012-12-24 | 2014-06-26 | Pavel Dourbal | Method and system for fast tensor-vector multiplication |
| US20140188961A1 (en) * | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
| CN103440513B (zh) * | 2013-09-17 | 2017-01-18 | 西安电子科技大学 | 基于稀疏非负张量分解的大脑特定视觉认知状态判定方法 |
| US9035946B1 (en) | 2014-02-13 | 2015-05-19 | Raycast Systems, Inc. | Computer hardware architecture and data structures for triangle 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 |
| WO2017201627A1 (en) | 2016-05-26 | 2017-11-30 | The Governing Council Of The University Of Toronto | 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 SG10202104454YA patent/SG10202104454YA/en unknown
- 2016-12-28 SG SG10201610917TA patent/SG10201610917TA/en unknown
- 2016-12-29 KR KR1020160182981A patent/KR101924500B1/ko active Active
- 2016-12-30 EP EP16207511.3A patent/EP3226121B1/en active Active
- 2016-12-30 TW TW107126366A patent/TWI681291B/zh active
- 2016-12-30 TW TW109123874A patent/TWI772842B/zh active
- 2016-12-30 TW TW105144084A patent/TWI635390B/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 Active
-
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 Active
-
2023
- 2023-02-08 JP JP2023017754A patent/JP7507271B2/ja active Active
- 2023-10-26 KR KR1020230144479A patent/KR102788305B1/ko active Active
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20190060600A (ko) * | 2017-11-24 | 2019-06-03 | 서울대학교산학협력단 | 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 |
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102596365B1 (ko) | 다차원 텐서들에서의 데이터 액세스 | |
| US10534607B2 (en) | Accessing data in multi-dimensional tensors using adders | |
| US9946539B1 (en) | Accessing data in multi-dimensional tensors using adders | |
| GB2567038B (en) | Accessing prologue and epilogue data | |
| HK40014403B (en) | Accessing data in multi-dimensional tensors | |
| HK40014403A (en) | Accessing data in multi-dimensional tensors | |
| HK1242809B (zh) | 访问多维张量中的数据 | |
| HK1242809A1 (en) | Accessing data in multi-dimensional tensors | |
| BR102016030825B1 (pt) | Equipamento e método implementado em computador para processar uma instrução para acessar um tensor n-dimensional |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A201 | Request for examination | ||
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| T11-X000 | Administrative time limit extension requested |
St.27 status event code: U-3-3-T10-T11-oth-X000 |
|
| E13-X000 | Pre-grant limitation requested |
St.27 status event code: A-2-3-E10-E13-lim-X000 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| A107 | Divisional application of patent | ||
| PA0107 | Divisional application |
St.27 status event code: A-0-1-A10-A18-div-PA0107 St.27 status event code: A-0-1-A10-A16-div-PA0107 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| FPAY | Annual fee payment |
Payment date: 20211110 Year of fee payment: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| FPAY | Annual fee payment |
Payment date: 20221109 Year of fee payment: 5 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 5 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 6 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 7 |
|
| R17 | Change to representative recorded |
Free format text: ST27 STATUS EVENT CODE: A-5-5-R10-R17-OTH-X000 (AS PROVIDED BY THE NATIONAL OFFICE) |
|
| R17-X000 | Change to representative recorded |
St.27 status event code: A-5-5-R10-R17-oth-X000 |