KR20200089302A - 매트릭스 프로세서를 위해 매트릭스 입력을 벡터화된 입력으로 변환하기 위한 시스템 및 방법 - Google Patents

매트릭스 프로세서를 위해 매트릭스 입력을 벡터화된 입력으로 변환하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200089302A
KR20200089302A KR1020207017612A KR20207017612A KR20200089302A KR 20200089302 A KR20200089302 A KR 20200089302A KR 1020207017612 A KR1020207017612 A KR 1020207017612A KR 20207017612 A KR20207017612 A KR 20207017612A KR 20200089302 A KR20200089302 A KR 20200089302A
Authority
KR
South Korea
Prior art keywords
matrix
data
convolution
processor
input vector
Prior art date
Application number
KR1020207017612A
Other languages
English (en)
Other versions
KR102451239B1 (ko
Inventor
피터 조세프 배넌
윌리엄 에이. 맥기
에밀 탈프스
Original Assignee
테슬라, 인크.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 테슬라, 인크. filed Critical 테슬라, 인크.
Publication of KR20200089302A publication Critical patent/KR20200089302A/ko
Application granted granted Critical
Publication of KR102451239B1 publication Critical patent/KR102451239B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/10Image enhancement or restoration by non-spatial domain filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Abstract

다수의 동작들이 큰 데이터 세트에 걸쳐 병렬로 수행될 수 있게 하는 하드웨어-특정 회로를 이용함으로써 이미지 및 유사한 산술 연산들의 콘볼루션을 가속시키는 시스템 및 방법이 제공된다. 다양한 실시예에서, 산술 연산은 데이터를 재사용하고, 산술 연산을 수행할 때 레지스터 및 메모리로부터 중간 결과를 저장 및 페치하는 중복되는 단계를 제거함으로써 더욱 향상된다.

Description

매트릭스 프로세서를 위해 매트릭스 입력을 벡터화된 입력으로 변환하기 위한 시스템 및 방법
본 출원은, 피터 조세프 배넌, 윌리엄 에이. 맥기, 에밀 탈프스가 발명자로 열거된, "매트릭스 프로세서를 위해 매트릭스 입력을 벡터화된 입력으로 변환하기 위한 시스템 및 방법(SYSTEMS AND METHODS FOR CONVERTING A MATRIX INPUT TO A VECTORIZED INPUT FOR A MATRIX PROCESSOR)"이라는 명칭으로 2017년 12월 12일에 출원된 공동 소유의 미국 특허 출원 제15/839,234호(도켓(Docket) 번호 20150-2166)에 대한 우선권을 주장한다. 전술한 특허 문헌 각각은 그 전체가 본 명세서에 참조로 포함된다.
본 개시는 고성능 매트릭스 프로세서(high-performance matrix processor)를 위해 MxN 데이터 매트릭스를 벡터화된 입력으로 변환하는 것에 관한 것으로, 보다 구체적으로는, 복잡한 수학적 연산들(operations)이 큰 2 차원 및 3 차원 매트릭스들에서 수행될 수 있도록 매트릭스 프로세서에 대해 정렬되는 1 차원(one-dimensional) 벡터로 MxN 매트릭스를 매핑(mapping)하기 위한 방법 및 시스템에 관한 것이다.
당업자는 시간 민감한(time-sensitive) 복잡한 수학적 연산을 구현하는데 사용되는 일반적인 프로세서 및 시스템에 대한 속도 및 성능의 계속 증가하는 요구를 알고 있을 것이다. 이러한 일반적인 시스템은 대량의 데이터를 처리하고 복잡한 수학적 연산을 수행하기 위해 사용되기 때문에, 계산 자원(computational resources) 및 계산 속도는 이들 계산을 수행하는 기존의 일반적인 하드웨어 설계의 능력으로 제한된다. 예를 들어, 매트릭스 연산들(matrix operations)을 실행하는 범용 컴퓨팅 디바이스들 및 프로세서들은 특정 환경들 하에서 적시에 이러한 동작들을 수행하지 못할 수 있다. 디지털 신호 처리 연산(digital signal processing operations)을 수행하는 종래의 많은 승산기(multipliers)는 일련의 소프트웨어 및 하드웨어 매트릭스 조작 단계에 의존하며, 시간 민감한 시스템 내에서 병목 현상의 원인이 될 수 있다. 종종 이러한 단계들은, 중간 결과를 생성하는 프로세서의 산술 기능(arithmetic functions)을 포함하는데, 연산을 완료하는 다양한 위치(locations)로부터 중간 결과(intermediate results)를 저장하고 페치(fetching)하는 추가된 단계에 기인한 계산 시간의 소모를 비용으로 지불한다. 일 예에서, 입력 매트릭스는 종종 처리 엘리먼트(processing element)로 입력되기 위해 상이한 포맷 또는 아키텍처로 변환될 필요가 있다. 이러한 변환 프로세스는, 입력들이 계산 프로세서 또는 다른 산술 로직(arithmetic logic)으로 후속적으로 처리되는 특정 구조로 포맷될 필요가 있기 때문에 시스템 내에서 상당한 지연을 야기할 수 있다.
도 1은 종래의 매트릭스 곱셈 시스템(matrix multiplication system)의 예를 도시한다. 시스템(100)은 계산 유닛(102), 레지스터(104), 캐시(106), 및 메모리(108)를 포함하는 스칼라 머신(scalar machine)이다. 동작시, 계산 유닛(102)은 레지스터(104) 및 캐시(106)를 사용하여 메모리(108)에 저장된 데이터를 처리한다. 처리된 데이터는, 예를 들어, 이미지를 처리하기 위해 콘볼루션 연산에 사용되는 이미지 데이터 및 가중치(weights)이다. 전형적으로, 계산 유닛(102)은, 예를 들어 곱셈을 덧셈으로 변환하고 그 결과를 일부 내부 레지스터로 출력함으로써, 결과적인 매트릭스를 획득하기 위해 입력 매트릭스에 대해 매트릭스 곱셈을 수행할 수 있는 CPU 또는 GPU와 같은 마이크로프로세서이다.
예를 들어, 이미지의 출력 픽셀을 나타내는 내적(dot products)은, 전형적으로 부분적인 결과를 획득하기 위해 2 개의 매트릭스로부터 개별 매트릭스 엘리먼트를 도트-곱(dot-multiplying)함으로써 생성되며, 이는 최종 내적(final dot product)을 획득하기 위해 부가된다. 개별적인 매트릭스 엘리먼트들의 곱(multiplication)(예를 들어 스칼라 곱(scalar multiplication))은, 전형적으로 도트 곱(dot multiplication)을 일련의 개별적인 서브-연산들(sub-operations)로 분할(breaking up)함으로써, 개별적인 데이터 엘리먼트에 대해 수행된다. 결과적으로, 부분 곱들(partial products)은 단일 산술 연산을 완료하기 위해 레지스터들(104), 캐시(106), 및 메모리(108) 중 하나 이상으로부터 저장 및 페치되어야 한다.
콘볼루션과 같이 계산적으로 부담이 큰 응용은, 종종, 콘볼루션 연산을 교번 매트릭스-곱셈 연산(alternate matrix-multiply operation)으로 변환하는데 사용되고 계산 유닛(102)에 임베드되는 소프트웨어 기능을 요구한다. 이는 원시 매트릭스-곱셈(raw matrix-multiplied)될 수 있는 2 개의 매트릭스로 이미지 데이터 및 가중치 데이터(weight data)를 재배열(rearranging)하고 재포맷(reformatting)함으로써 달성된다. 그러나, 스칼라 머신(100)에서 데이터를 효율적으로 공유 또는 재사용하기 위한 메커니즘은 존재하지 않으므로, 각각의 스칼라 연산을 실행하는데 필요한 데이터는 매번 레지스터로부터 재페치(re-fetched)되어야 한다. 이러한 연산의 복잡도(complexity)는 콘볼루션 연산의 대상인 이미지 데이터의 양이 증가함에 따라 상당히 더 커진다.
산술 연산을 완료하기 위해 레지스터들(104), 캐시(106), 및 메모리(108)로부터 중간 결과들(intermediate results)을 저장 및 페치하는 추가된 단계들과 연결된 스칼라 머신(100)에서 많은 데이터를 재사용할 수 없다는 것은, 승산기 시스템(multiplier system)(100)과 같은 기존의 시스템들의 단점 중 단지 일부이다.
따라서, 매트릭스 곱셈 연산들을 수행할 수 있는 고성능-계산-처리 시스템들 및 방법들에 대해 적절한 입력 구조로 매트릭스를 변환하는 효율적인 변환 방법들 및 디바이스들이 요구된다.
본 발명의 실시예들이 참조되며, 실시예들의 예가 첨부 도면들에 도시될 수 있다. 이러한 도면들은 제한적인 것은 아니며 예시적인 것으로 의도된다. 본 발명이 이러한 실시예들의 맥락에서 일반적으로 설명되었지만, 본 발명의 범위를 이들 특정 실시예들로 제한하도록 의도되지는 않는다는 것을 이해해야 한다.
도 1은 종래의 매트릭스 곱셈 시스템의 예를 도시한다.
도 2는 본 개시의 다양한 실시예들에 따른, 매트릭스 곱셈 회로에 콘볼루션들을 매핑하기 위한 예시적인 프로세스의 흐름도이다.
도 3은 본 개시의 다양한 실시예들에 따른, 콘볼루션들을 곱셈 회로에 매핑하기 위한 데이터 포맷터(data formatter)를 이용하는 예시적인 매트릭스 곱셈 시스템을 도시한다.
도 4는 본 개시의 다양한 실시예들에 따른, 콘볼루션들을 매트릭스 곱셈 회로에 매핑하기 위한 프로세스를 예시하는 예시적인 다이어그램이다.
다음의 설명에서, 설명의 목적으로, 본 발명의 이해를 제공하기 위해 특정 세부사항들이 제시된다. 그러나, 본 발명이 이러한 세부사항 없이도 실시될 수 있다는 것은 당업자에게 명백할 것이다. 또한, 당업자는, 후술되는 본 발명의 실시예들이 프로세스, 장치, 시스템, 디바이스, 또는 유형의 컴퓨터-판독가능 매체(tangible computer- readable medium) 상의 방법과 같이 다양한 방식들로 구현될 수 있다는 것을 알고 있을 것이다.
도면에 도시된 컴포넌트(Components) 또는 모듈은 본 발명의 예시적인 실시예를 예시하며, 본 발명을 모호하게 하는 것을 피하기 위한 것이다. 또한, 본 설명 전반에 걸친 컴포넌트들은 서브-유닛들(sub-units)을 포함할 수 있는 개별 기능 유닛들(separate functional units)로 설명될 수 있지만, 당업자는 다양한 컴포넌트들, 또는 그 일부들이 개별 컴포넌트들로 분할될 수 있거나 또는 (단일 시스템 또는 컴포넌트 내에 통합된 것을 포함하여) 함께 통합될 수 있다는 것을 알고 있을 것이다. 본 명세서에서 논의된 기능들(functions) 또는 동작들(operations)은 컴포넌트들로 구현될 수 있다는 것을 유의해야 한다. 컴포넌트들은 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다.
또한, 도면들 내의 컴포넌트들 또는 시스템들 사이의 연결들(connections)은 직접 연결들(direct connections)로 제한되도록 의도되지는 않는다. 오히려, 이들 컴포넌트들 사이에서의 데이터는 중간 컴포넌트에 의해 수정되거나, 재포맷(re-formatted)되거나, 또는 그렇지 않으면 변경될 수 있다. 또한, 추가적이거나 또는 더 적은 연결이 사용될 수 있다. 또한, "연결된(coupled)", "연결된(connected)" 또는 "통신가능하게 연결된(communicatively coupled)"이라는 용어는 직접 연결, 하나 이상의 중간 디바이스를 통한 간접(indirect) 연결, 및 무선 연결을 포함하는 것으로 이해되어야 한다.
본 명세서에서 "일 실시예(one embodiment)", "바람직한 실시예(preferred embodiment)", "실시예(embodiment)", 또는 "실시예들(embodiments)"에 대한 참조는, 실시예와 관련하여 설명된 특정 특징(feature), 구조, 특성, 또는 기능(function)이 본 발명의 적어도 하나의 실시예에 포함되고, 하나 이상의 실시예일 수 있다는 것을 의미한다. 또한, 본 명세서의 다양한 곳에서 상술된 문구들(phrases)의 출현들은 반드시 모두 동일한 실시예 또는 실시예들을 지칭하는 것은 아니다.
본 명세서의 다양한 곳에서 특정 용어들을 사용하는 것은 예시를 위한 것이며, 제한하는 것으로 해석되지 않아야 한다. 서비스, 기능(function) 또는 자원(resource)은 단일 서비스, 기능 또는 자원으로 제한되지 않으며, 이들 용어의 사용은 분산(distributed) 또는 집합(aggregated)될 수 있는 관련 서비스들, 기능들 또는 자원들의 그룹화(grouping)를 지칭할 수 있다. 또한, 메모리, 데이터베이스, 정보 베이스(information base), 데이터 저장(store), 테이블, 하드웨어 등의 사용은, 정보가 입력되거나 그렇지 않으면 기록될 수 있는 시스템 컴포넌트 또는 컴포넌트들을 지칭하기 위해 본 명세서에서 사용될 수 있다.
또한, 다음을 유의해야 한다: (1) 특정 단계들이 선택적으로 수행될 수 있다; (2) 단계들은 본 명세서에 제시된 특정 순서로 제한되지 않을 수 있다; (3) 특정 단계들은 상이한 순서들로 수행될 수 있다; (4) 특정 단계들은 동시에 수행될 수 있다.
또한, 당업자는 다음을 알 것이다: (1) 특정 단계들이 선택적으로 수행될 수 있다; (2) 단계들은 본 명세서에 제시된 특정 순서로 제한되지 않을 수 있다; (3) 특정 단계들은 상이한 순서들로 수행될 수 있다; (4) 특정 단계들은 동시에 수행될 수 있다.
본 명세서의 실시예는 주로 콘볼루션의 맥락에서 논의되지만, 당업자는 디콘볼루션(deconvolution)이 또한 매트릭스-매트릭스 타입 곱셈 연산(matrix-matrix type multiply operation)으로 구조화(structured)될 수 있고, 따라서, 본 발명의 원리는 디콘볼루션에 동일하게 적용될 수 있다는 것을 이해할 것이다. 또한, 다른 타입의 수학적 연산들이 본 개시의 다양한 실시예들에 따라 구현될 수 있다.
본 명세서는 적어도 하나의 입력 매트릭스를 콘볼루션 매트릭스 곱셈 회로에 대한 벡터화된 입력으로 변환하는 것을 설명할 것이지만, 당업자는 설명된 방법들 및 구조들이 광범위한 입력 데이터 타입들을 하나의 포맷으로부터 다른 포맷으로 변환하는데 사용될 수 있다는 것을 알고 있을 것이다. 이러한 상이한 입력 데이터 구조들 모두는 본 명세서의 범위 내에 있다. 도 2는 본 개시의 다양한 실시예들에 따른, 콘볼루션들을 매트릭스 곱셈 회로에 매핑하기 위한 예시적인 프로세스의 흐름도이다. 프로세스(200)는, 콘볼루션 파라미터를 포함하는 콘볼루션 명령들이 예를 들어 데이터 포맷 디바이스(data formatting device)에서 수신되는 경우, 단계(202)에서 시작한다. 콘볼루션 명령들 또는 파라미터들은, 예를 들어, 필터 차원(filter dimension), 스트라이드(stride), 입력의 어드레스(address), 또는 임의의 개수의 출력 채널들(outputs channels)일 수 있다.
단계(204)에서, 콘볼루션 파라미터들에 기초하여, 콘볼루션 연산의 입력들이 식별된다. 실시예들에서, 입력들은, 실시예로 3 차원 데이터 매트릭스(three-dimensional data matrix)를 나타낼 수 있는 상이한 어드레스로 하나 이상의 저장 위치에 저장된다. 실시예들에서, 매트릭스는 주어진 출력 채널에 대해 병렬로 계산되는 픽셀들의 수(a number of pixels)에 대응하는 1 차원(first dimension), 병렬로 동작하는 출력 채널들의 수(a number of outputs channels)에 대응하는 2 차원(second dimension), 및 각각의 픽셀에 대한 상이한 컬러들(colors)에 대응하는 3 차원(third dimension)을 갖는다.
단계(206)에서, 중첩(overlapping)/중복(redundant)되는 입력 데이터는, 예를 들어 상태 머신(state machine)에 의해 식별된다. 실시예에서, 상태 머신은 필터 크기 및 스트라이드와 같은 필터 파라미터를 사용하여 재사용 가능한 연산 대상(operands)을 결정한다.
단계(208)에서, 계산 시간 및 전력 소비(power consumption)를 감소시키기 위해, 중첩되는 입력 데이터의 로컬 복사본들(local copies)이 캐시 또는 버퍼로부터 검색되어, 예를 들어 SRAM으로부터 동일한 데이터를 다시 페치해야 하는 것을 피할 수 있다.
단계(210)에서, 각각의 콘볼루션 연산에 대해, 시퀀서(sequencer)는, 예를 들어, 매트릭스 프로세서가 고성능 산술 연산(high- performance arithmetic operations)(예를 들어, 큰 매트릭스 곱셈)을 수행할 수 있도록 하는 매트릭스 프로세서의 미리 결정된 입력 포맷에 기초하여, 매트릭스 프로세서에서의 위치에 따라 입력을 배열(arrange)하는데 사용될 수 있다. 실시예에서, 시퀀서는 콘볼루션 연산의 각 사이클마다 입력을 배열한다. 특정 실시예들에서, 시퀀서는 2 차원 매트릭스 사이의 데이터를, 매트릭스 프로세서에 데이터를 입력하는데 사용되는 벡터로 매핑한다. 예를 들어, 시퀀서는 2 차원 매트릭스 내의 그 위치에 기초하여 데이터/연산 대상을 벡터 내의 대응하는 위치로 효과적으로 이동시키는 엘리먼트-바이-엘리먼트(element-by-element)(예를 들어, 비트-바이-비트(bit- by-bit) 또는 바이트-바이-바이트(byte-by-byte)) 매핑을 수행할 수 있다. 일단 입력들이 배열되면, 실시예들에서 정렬기(aligner)는 배열되는 데이터를 정렬하고, 그것을 미리 정의된 시퀀스(sequence)에 따라 매트릭스 프로세서에 피드(feed)할 수 있다.
단계(212)에서, 입력 포맷에 기초하여, 매트릭스 프로세서의 하드웨어 엘리먼트들은 매트릭스 곱셈을 수행하도록 동적으로 구성될 수 있다. 실시예에서, 매트릭스 프로세서 입력은 데이터 입력 매트릭스에 따라 포맷되는 연산 대상을 포함하는 제1 벡터, 및 가중치 입력 매트릭스에 따라 포맷되는 연산 대상을 포함하는 제2 벡터를 수용한다(accommodates).
마지막으로, 단계(214)에서, 예를 들어, 콘볼루션 결과를 생성하기 위해 입력 이미지를 필터로 콘볼루션(convolve)하기 위해, 매트릭스 곱셈 결과가 사용될 수 있다. 실시예들에서, 콘볼루션 결과는, 예를 들어, 비선형 함수(non-linear function), 정규화 동작(normalization operation), 및/또는 풀링 연산(pooling operation)을 사용함으로써, 이미지 출력을 향상시키기 위해 더 처리될 수 있다.
본 명세서에 개시된 프로세스들 및 시스템들은 콘볼루션 방법들 및 시스템들의 맥락에서 설명되지만, 이는 본 개시의 교시들이 디콘볼루션 방법들 및 시스템들에 동일하게 적용될 수 있기 때문에 본 개시의 범위를 제한하는 것으로 의도되지는 않는다는 것을 유의해야 한다.
도 3은 본 개시의 다양한 실시예에 따른, 콘볼루션을 곱셈 회로에 매핑하기 위한 데이터 포맷터를 이용하는 예시적인 매트릭스 곱셈 시스템을 도시한다. 시스템(300)은 메모리 디바이스(302), 데이터 포맷터(306), 제어 로직(308), 캐시 (또는 버퍼)(312), 로직 회로(314), 및 매트릭스 프로세서(316), 및 시퀀서(310)를 포함한다. 도 3의 예를 들어, 데이터 포맷터(306) 및 시퀀서(310)와 같은 하나 이상의 컴포넌트가 각각의 개별 통합된 컴포넌트와 연관된 적어도 일부 기능을 수행하는 통합 컴포넌트(integrated component)로 구현될 수 있다는 것을 이해할 수 있다.
데이터 포맷터(306)는 인-라인 포맷터(in-line formatter)로 구현될 수 있고, 실시예들에서, 매트릭스 프로세서(316)에 의해 효율적으로 처리될 수 있는 벡터 포맷으로 데이터 입력 매트릭스를 변환하는데 사용된다.
도 3의 메모리 디바이스(302)는 본 기술 분야에 알려진 임의의 메모리 디바이스이고, 오디오 데이터, 센서 데이터, 및 초음파 데이터와 같은 임의의 타입의 데이터를 포함할 수 있다. 실시예들에서, 메모리(302)는 하나 이상의 위치들 및 상이한 어드레스들에 저장되는 이미지 데이터(304)를 포함한다. 실시예에서, 어드레스는 다차원 데이터 매트릭스(multi-dimensional data matrix)를 나타낼 수 있다.
실시예들에서, 제어 로직(308)은 매트릭스 곱셈 시스템(300) 내의 시퀀서(310) 및 다른 컴포넌트를 관리할 수 있다. 제어 로직(308)은 데이터 포맷터(306) 또는 시퀀서(310)로 임베디드(embedded)될 수 있고, 실시예들에서, 데이터 포맷터(306)가 매트릭스 승산기(matrix multiplier)(316) 내의 예상되는 위치들과 매칭하도록 데이터를 포맷할 수 있는, 필터 파라미터들(예를 들어, 스트라이드)에 따라 메모리(302) 위치들로부터 데이터를 선택할 수 있다. 실시예들에서, 캐시/버퍼(312)는 메모리(302)로부터 데이터를 재액세스(re-access) 및 재판독(re-read)해야 하는 것을 피하기 위해 콘볼루션에 의한 재사용을 위한 데이터의 로컬 복사본을 저장하는데 사용될 수 있는 로컬 버퍼이다.
로직 회로(314)는 임의의 수의 입력 연산 대상 및 데이터 레지스터를 나타내는 회로를 포함할 수 있다. 실시예들에서, 로직 회로(314)는 M 개의 가중치 연산 대상(weight operands) 및 N 개의 이미지 데이터 연산 대상을 매트릭스 프로세서(316)로 입력하는 회로를 포함할 수 있다. 가중치 데이터 및 이미지 데이터(304)는 다양한 유형의 메모리(302)(예를 들어, SRAM)에 저장될 수 있다.
매트릭스 프로세서(316)는 동시적인 곱셈, 누산(accumulation), 및 시프트 연산들(shift operations)을 수행할 수 있는 임의의 수의 회로들 및 서브-회로 회로들(sub-circuit circuits)(예를 들어, 산술 로직 유닛들, 레지스터들, 인코더들(encoders) 등)을 포함할 수 있다. 각각의 서브-회로 회로는 산술 연산을 수행할 수 있는 셀(cell)일 수 있다. 실시예들에서, 매트릭스 프로세서(316)는, 예를 들어, 데이터 매트릭스들 및 사전-포맷(pre-formatted)된 가중치 매트릭스들(weight matrices)을 수신 및 곱셈하여 콘볼루션 연산에 대한 곱셈 곱(multiplication product)을 생성하는 곱셈-및-가산(multiply-and-add) 회로를 포함한다.
콘볼루션 연산은, 상이한 정보의 세트를 포함할 수 있는 복수의 입력 채널들(a number of input channels)에 대하여 개별 필터들의 세트(즉, 사전-포맷되고 메모리(302)에 저장된 가중치들의 세트)를 이미지 데이터에 적용할(apply) 수 있다. 이는 입력 이미지에서 매우 다양한 특징들(features)을 검출할 수 있게 한다.
또한, 상이한 순서로 상이한 특징들의 시퀀스를 분석함으로써, 매크로 특징들(macro features)이 이미지에서 식별될 수 있다. 실시예들에서, 콘볼루션은 출력 이미지에서 출력 픽셀을 나타내는 누산된 내적(dot product)(즉, 정수)을 생성하기 위해 (예를 들어, 가산기에 의해) 합산되는 부분 내적들을 획득하도록 직사각형 가중치 매트릭스(rectangular weight matrix)와 직사각형 입력 매트릭스(rectangular input matrix)의 곱셈을 포함한다.
실시예들에서, 산술 연산들은 NxN 타일 출력(tile output)을 생성하기 위해 매트릭스 프로세서(316)의 복수의 행들(rows) 및 열들(columns)을 이용함으로써 병렬화(parallelized)된다. 예를 들어, 96의 주어진 행 크기(given row size) 및 96의 대응하는 열 크기(corresponding column size)는, 9216 픽셀의 출력을 용이하게 한다. 매트릭스 프로세서(316)는 각각의 축 상의 임의의 벡터 길이를 수용할 수 있고, 실시예들에서, 매트릭스 포맷으로 배열된 PxQ 타일들을 포함하는 MxN 매트릭스 프로세서로 치수화(dimensioned)된다.
실시예들에서, 시퀀서(310)는, 예를 들어 제어 로직(308)으로부터, 임의의 수의 콘볼루션 파라미터들을 포함하는 콘볼루션 명령들을 수신한다. 실시예에서, 콘볼루션 명령은 필터 파라미터(예를 들어, 필터 크기(filter size)), 출력 채널의 수(a number of outputs channels) 등을 포함할 수 있다. 실시예에서, 시퀀서(310)는 콘볼루션 연산의 입력의 어드레스 또는 입력을 식별하기 위해 콘볼루션 파라미터를 사용하고, 메모리(302) 내의 대응하는 어드레스 위치로부터 이들 입력을 수신 또는 페치한다.
실시예에서, 데이터 포맷터(306)는 이미지 정보를 포함하는 2 차원 또는 3 차원 데이터를 행 또는 열로 표현될 수 있는 단일 벡터 또는 스트링(string)으로 변환하여, 이미지 데이터를 선형화(linearizing) 또는 벡터화(vectorizing)할 수 있다. 실시예에서, 포맷터(306)는, 콘볼루션 파라미터에 따라, 매트릭스 프로세서(316)의 하드웨어 요건들에 따른 적절한 포맷으로 이미지 데이터(304)를 매핑함으로써 매트릭스 프로세서(316)로 처리하기 위해 이미지 데이터(304)를 준비하여, 매트릭스 프로세서(316)는 예를 들어, 출력 픽셀들을 생성하기 위해 콘볼루션 계산의 일부로 매트릭스 곱셈을 수행할 수 있다.
실시예들에서, 벡터화된 이미지 데이터의 크기는 매트릭스 프로세서(316)로의 입력들의 수와 직접적으로 관련되어, 연산 대상은 매트릭스 프로세서(316)로의 입력들과 정렬된다.
실시예들에서, 데이터 포맷터(306)는 예를 들어, 상태 머신을 통해, 중첩된(overlapping)(즉, 동일하거나 중복되는) 입력들을 식별하고, 주어진 콘볼루션 연산에 대해 2 회 이상 액세스되어야 하는 하나 이상의 위치에 존재할 수 있다. 상태 머신은 필터 크기 및 스트라이드와 같은 필터 파라미터를 사용하여 중첩된 데이터를 재사용 가능한(reusable) 데이터로 식별하도록 구성될 수 있으므로, 매트릭스 프로세서(316)는 메모리(302)로부터 데이터를 재액세스 및 전송할 필요 없이 연산 대상을 재사용할 수 있다. 대신에, 실시예에서, 재사용 가능한 데이터는 예를 들어 캐시(312)에 저장된 로컬 복사본으로부터 로드되어, 계산 노력, 시간 및 전력 소비를 감소시킬 수 있다.
실시예들에서, 예를 들어 각각의 콘볼루션 연산을 위해, 데이터 시퀀서(310)는, 예를 들어 도트 곱셈을 수행할 때 매트릭스 프로세서(316)의 주어진 입력 포맷을 매칭시키기 위해, 콘볼루션 연산의 각각의 사이클에서 매트릭스 프로세서(316)에 의해 예상되는 위치들(positions)에 따라 검색된 입력들을 배열할 수 있다. 시퀀서(310)는 데이터를 판독하기 위해 어드레스를 생성하고, 결과를 기록하고, 콘볼루션 연산을 수행할 때 시스템(300)의 상태를 계속 추적할 수 있다. 실시예들에서, 시퀀서(310)는, 이러한 정보의 일부 또는 전부를 사용하여, 메모리(302)내의 어느 어드레스들이 데이터를 획득하는지와, 예를 들어 후속 콘볼루션 단계에서 매트릭스 프로세서(316)에 의해 적절하게 사용될 수 있는 방식으로 그것을 어떻게 처리할지를 결정한다. 실시예에서, 시퀀서(310)는, 주어진 입력 포맷에 따라 매트릭스 프로세서(316)와 미리 정의된(predefined) 순서로 검색 및 동기화된 이미지 데이터를 정렬하는데 사용될 수 있는 데이터 포맷터(306)에 연결(coupled)된다.
실시예들에서, 다양한 입력 파라미터들 또는 구성들에 의해 결정된 입력 포맷에 기초하여, 매트릭스 프로세서(316)의 하드웨어 엘리먼트들은 임의의 유형의 산술 연산(예를 들어, 곱셈 누산 곱셈 가산(Multiply Accumulate Multiply Add))을 수행하도록 동적으로 구성될 수 있다. 실시예에서, 매트릭스 프로세서(316)로의 입력은 데이터 입력 매트릭스에 따라 포맷된 벡터를 포함한다. 실시예에서, 입력은, 예를 들어 매트릭스 곱셈이 신경 네트워크에 대한 이미지 데이터(304)를 콘볼루션하는데 사용될 수 있도록, 가중치 입력 매트릭스에 따라 포맷된 제2 벡터를 포함한다.
실시예들에서, 포맷(formatting)은 상이한 입력 크기(input sizes)를 갖는 매트릭스들의 처리를 수용하도록 동적으로 수행된다. 실시예들에서, 입력 채널들을 포함하는 재포맷된 매트릭스들은 캐시/버퍼(312)에 피드(fed)된다. 실시예들에서, 캐시/버퍼(312)는 메모리(302)로부터 데이터를 페치하고, 데이터를 판독하기 위해 메모리(302)를 재액세스할 필요 없이 콘볼루션에 의해 재사용될 수 있는 데이터의 로컬 복사본을 저장한다.
고속 매트릭스 곱셈에 적합한 대안적인 포맷(alternate format)으로 데이터를 재배열함으로써 콘볼루션 연산을 매트릭스-곱셈 연산(matrix- multiply operation)으로 변환하기 위해 CPU 또는 GPU에 의해 수행되는 포맷 함수들(formatting functions)의 일반적인 소프트웨어 구현들과 달리, 본 개시의 다양한 하드웨어 구현들은 바로(on the fly) 데이터를 재포맷(re-format)하고, (예를 들어, 매 사이클마다 96 개의 데이터(96 pieces of data)로) 실행가능하도록 한다. 사실상 본 개시는, 매트릭스의 상대적으로 많은 수의 엘리먼트가 병렬로 처리되게 하므로, 콘볼루션을 매트릭스 연산에 효율적으로 매핑한다. 실시예들에서, 2N개의 페치된 입력에 대하여, N2개의 계산 데이터(compute data)가 획득될 수 있다.
시스템(300)은 본 개시의 범위 내에 있는 추가적인 컴포넌트들을 포함할 수 있다는 것을 이해할 수 있다. 상기 추가적인 컴포넌트들은 예를 들어, 메모리(302)로부터 데이터를 탐색하고 SRAM 내의 데이터(예를 들어, 가중치들 및 결과들)를 저장하는 DMA의 일부일 수 있는 DRAM, 하드웨어-가속 풀링 유닛(hardware- accelerated pooling unit), 본 기술 분야에 알려진 다른 사후-처리 엘리먼트 등과 같은 사후 처리 엘리먼트(post-processing elements)를 포함할 수 있다.
도 4는 본 개시의 다양한 실시예들에 따른, 콘볼루션들을 매트릭스 곱셈 회로에 매핑하기 위한 프로세스를 예시하는 예시적인 다이어그램이다. 다이어그램(400)에서, 각각의 매트릭스(402A, 402B)는 서브-매트릭스(406, 408)를 포함하는 하이라이트(highlighted)된 섹션으로 도시된다. 예를 들어, 서브-매트릭스(406)는 특정 컬러와 연관된 입력 채널에 대한 것이다. 매트릭스(418)는 가중치 데이터 매트릭스(weight data matrices)와 같은 하나 이상의 입력 매트릭스를 나타낸다. 매트릭스 프로세서(316)는 바람직하게는 도 3을 참조하여 논의된 종류의 프로세서이다.
실시예들에서, 데이터 매트릭스(402A, 402B)는, 3 개의 상이한 컬러들에 대한 이미지 데이터와 같은 입력 데이터를 유지(hold)할 수 있는 임의의 수의 행들, 열들, 및 채널들을 포함하는 3 차원 데이터 매트릭스의 일부를 형성한다. 유사하게, 매트릭스(418)는 3 개의 상이한 컬러들에 대한 가중치 데이터를 유지하기 위해 임의의 수의 행들 및 열들을 포함할 수 있는 직사각형 입력 가중치 데이터 매트릭스다. 당업자는 입력 매트릭스들의 크기 및 입력 채널들의 수가 상이한 응용들(applications)에 대해 변할 수도 있다는 것을 알고 있을 것이다.
도 4는, 실시예들에서, 각각의 데이터 서브-매트릭스(406, 408)를 선형화하여 그 선형화된 버전(linearized version)을 생성하는 것에 의해 획득될 수 있는 어레이(410, 412)를 또한 도시한다. 반대로, 가중치 데이터 매트릭스(418)는 어레이(414)를 획득하도록 벡터화될 수 있다. 예로서, 실시예에서 제1 컬러와 연관된 제1 입력 채널에 대한 3x3 서브-매트릭스(406), 제2 컬러와 연관된 제2 입력 채널에 대한 3x3 서브-매트릭스(406), 제3 컬러와 연관된 제3 입력 채널에 대한 제3 3x3 서브-매트릭스(406)는 집합(assembled)되어 어레이(410)를 형성한다. 2의 스트라이드를 가정하면, 매트릭스 프로세서(316)의 모든 입력 열들이 입력 데이터로 채워질 수 있을 때까지, 어레이(412) 등을 형성하기 위해 데이터 매트릭스(402B) 내에서 다른 3x3 서브-매트릭스(408)의 위치가 식별된다. 유사하게, 입력 가중치 데이터는 어레이(414)와 유사한 추가적인 출력 채널을 형성하도록 재포맷(reformatted)될 수 있다.
실시예들에서, 3개의 개별 입력 채널들을 나타낼 수 있는 3개의 3x3 가중치 데이터 매트릭스들(418)은, 총 27개의 엘리먼트를 포함하는 벡터로 재포맷될 수 있다(예를 들어, 도 3과 관련하여 설명된 포맷터에 의하여). 매트릭스 프로세서(316)에 의하여 수행되는 콘볼루션 연산에서 사용하기 위하여, 상기 27개의 엘리먼트들로부터 27-엘리먼트 어레이(27-element array)(예를 들어, 어레이(414))가 생성될 수 있다.
상세하게는, 예를 들어 출력 이미지 내 출력 픽셀을 나타낼 수 있는, 누산된 내적(430)을 생성하도록 매트릭스 프로세서 아키텍처(316)에 의해 누산될 수 있는 부분 내적을 생성하기 위해, 예를 들어 가중치 매트릭스(weight matrix)(418)의 3x3x3 엘리먼트에 대응하는 열(414) 또는 어레이의 각 엘리먼트와, 예를 들어 서브-매트릭스(sub-matrix)(406)의 3x3x3 엘리먼트에 대응하는 열(410) 또는 어레이의 각 엘리먼트를 도트-곱(dot multiplying)함으로써, 데이터 매트릭스(402A, 402B)는 예를 들어 콘볼루션 연산의 일부로 가중치 데이터 매트릭스(418)와 곱해질 수 있다. 다음 내적은 열(412)에 대응하는 벡터와 행(414)을 도트-곱하여 획득될 수 있고, 이렇게 함으로써, 이러한 부분 내적의 값들은 입력 데이터 매트릭스(402A, 402B)에 대한 가중치 매트릭스(418)의 적용에 대응하고, 누산기 출력은 전체 콘볼루션을 나타낸다. 실시예들에서, 매트릭스 프로세서는 96 x 96 크기이며, 이는 9216개의 곱셈 누산 연산들이, 예를 들어 단일 클록 사이클에서 병렬로 수행될 수 있게 한다.
실시예들에서 출력 채널들의 계산에서, 매트릭스 프로세서는, 매트릭스(418)로부터의 상이한 가중치들의 세트(즉, 필터들)를 제외한 매트릭스(402A, 402B)로부터 동일한 입력 데이터의 세트를 사용하여 동일한 출력 픽셀들을 생성할 수 있으므로, 한번 입력 데이터를 판독함으로써 많은 출력 채널이 한꺼번에 생성될 수 있다. 하나 이상의 입력 채널들(예를 들어, 각각의 컬러(예를 들어, RGB)에 대하여 하나)이 사용될 수 있다. 예를 들어, 각각의 콘볼루션은 각각의 컬러에 대해 각각 하나인 3 개의 상이한 매트릭스들을 나타내는 가중치들(418)을 사용할 수 있다.
각각의 출력 채널(436)은, 입력 데이터에서 서로 다른 특징을 나타내는 서로 다른 필터 또는 가중치(418)를 사용하여 생성될 수 있다. 출력 채널들의 수는 특징들의 수에 의존할 수 있다. 실시예에서, 콘볼루션의 수는 출력 채널(436)의 수와 입력 채널의 수의 곱과 같고, 각각의 콘볼루션은 각각의 입력 채널에 대해 N개의 콘볼루션을 가질 수 있다.
도 4에 도시된 바와 같이, 입력 데이터 매트릭스(402A, 402B), 가중치 데이터 매트릭스(418), 및 어레이(410-414)는 서로 다른 수의 행 및 열을 가질 수 있다는 것을 이해할 것이다. 정확하게 표시된 바와 같이, 입력 및 출력 채널의 수는 임의로 선택될 수 있다. 실시예에서, 가중치 데이터 매트릭스(418)가 알려진 경우, 어레이(414)는 포맷터를 사용하지 않고서도 벡터화된 포맷으로 생성 및 저장될 수 있다. 실시예들에서, 도트-곱들은 원샷 매트릭스-매트릭스 곱셈 연산(one-shot matrix-matrix multiply operation)을 생성하기 위해 동시에 수행될 수 있다.
본 발명의 실시예는, 단계들이 수행되게 하는 하나 이상의 프로세서 또는 처리 유닛에 대한 명령(instructions)으로 하나 이상의 비일시적 컴퓨터-판독가능 매체(non- transitory computer-readable media) 상에 인코딩될 수 있다. 하나 이상의 비일시적 컴퓨터-판독가능 매체는 휘발성 및 비휘발성(non-volatile) 메모리를 포함할 것이라는 것을 유의해야 한다. 하드웨어 구현 또는 소프트웨어/하드웨어 구현을 포함하여 대안적인 구현들이 가능하다는 것을 유의해야 한다. 하드웨어-구현 기능은 ASIC(들), 프로그램가능 어레이, 디지털 신호 처리 회로 등을 사용하여 실현될 수 있다. 따라서, 임의의 청구항의 "수단(means)"이라는 용어는 소프트웨어 및 하드웨어 구현 모두를 다루(cover)도록 의도된다. 유사하게, 본 명세서에서 사용되는 용어 "컴퓨터-판독가능 매체 또는 매체(computer-readable medium or media)"는 컴퓨터-판독가능 매체 또는 매체에 구현된 명령의 프로그램을 갖는 하드웨어 및/또는 소프트웨어, 또는 이들의 조합을 포함한다. 이러한 구현 대안들을 염두에 두고, 도면들 및 첨부된 설명은 당업자가 프로그램 코드(즉, 소프트웨어)를 기록하고/기록하거나 요구되는 처리를 수행하기 위해 회로들(즉, 하드웨어)을 제조하도록 요구할 수 있는 기능적 정보를 제공한다는 것을 이해해야 한다.
본 발명의 실시예들은 다양한 컴퓨터-구현 동작들을 수행하기 위한 컴퓨터 코드를 갖는 비-일시적 유형의 컴퓨터-판독가능 매체를 갖는 컴퓨터 제품들과 더 관련될 수 있다는 것을 유의해야 한다. 매체 및 컴퓨터 코드는 본 발명의 목적을 위해 특별히 설계되고 구축(constructed)될 수 있거나, 또는 관련 기술분야의 당업자에게 알려져 있거나 이용 가능한 종류의 것일 수 있다. 유형의 컴퓨터-판독가능 매체의 예는, 하드 디스크, 플로피 디스크, 및 자기 테이프와 같은 자기 매체; CD-ROM 및 홀로그래픽 장치와 같은 광학 매체; 자기-광학 매체; 및 주문형 집적 회로(ASIC), 프로그램가능 로직 디바이스(PLD), 플래시 메모리 디바이스, 및 ROM 및 RAM 디바이스와 같이 프로그램 코드를 저장 또는 실행하도록 특별히 구성된 하드웨어 디바이스를 포함하지만, 이에 제한되지는 않는다. 컴퓨터 코드의 예는, 컴파일러에 의해 생성된 것과 같은 머신 코드와, 인터프리터(interpreter)를 사용하여 컴퓨터에 의해 실행되는 상위 레벨 코드(higher level code)를 포함하는 파일을 포함한다. 본 발명의 실시예들은 처리 장치에 의해 실행되는 프로그램 모듈들에 있을 수 있는 머신-실행가능 명령들(machine-executable instructions)로 전체적으로 또는 부분적으로 구현될 수 있다. 프로그램 모듈의 예는, 라이브러리, 프로그램, 루틴, 객체, 컴포넌트, 및 데이터 구조를 포함한다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬, 원격 또는 이들 모두인 설정(settings)에 물리적으로 위치될 수 있다.
당업자는 컴퓨팅 시스템 또는 프로그래밍 언어가 본 발명의 실시에 중요하지 않다는 것을 인식할 것이다. 당업자는 또한 상술된 복수의 엘리먼트들이 물리적으로 및/또는 기능적으로 서브-모듈들로 분리될 수 있거나 또는 함께 결합될 수 있다는 것을 인식할 것이다.
아래의 청구항의 구성 요소는 다수의 종속성, 구성 및 조합을 갖는 것을 포함하여 상이하게 구성(arranged)될 수 있다. 예를 들어, 실시예들에서, 다양한 청구항들의 주제는 다른 청구항들과 결합될 수 있다.
전술한 예 및 실시예는 예시적인 것이며 본 발명의 범위를 제한하지 않는다는 것을 당업자는 이해할 것이다. 명세서의 판독 및 도면의 검토를 통해 당업자에게 명백한 모든 치환, 향상, 등가물, 조합 및 개선이 본 발명에 맞는 사상 및 범위 내에 포함되도록 의도된다.

Claims (21)

  1. 매트릭스 데이터를 매트릭스 프로세서의 입력에 매핑하기 위한 방법에 있어서,
    상기 매트릭스 프로세서에 의해 처리되는 제1 매트릭스 데이터를 수신하는 단계;
    상기 매트릭스 프로세서와 연관된 입력 벡터의 길이를 식별하는 단계;
    제1 엘리먼트-바이-엘리먼트(element-by-element) 시퀀스 연산을 사용하여 상기 제1 매트릭스 데이터를 상기 입력 벡터에 매핑하는 단계;
    상기 매트릭스 프로세서에 의해 처리되는 제2 매트릭스 데이터와 중복되는 상기 제1 매트릭스 데이터 내의 적어도 하나의 엘리먼트를 식별하는 단계;
    상기 적어도 하나의 중복되는 엘리먼트를 캐시 내에 저장하는 단계; 및
    상기 캐시로부터 상기 적어도 하나의 중복되는 엘리먼트가 검색되도록 제2 엘리먼트-바이-엘리먼트 시퀀스 연산을 사용하여 상기 제2 매트릭스 데이터를 상기 입력 벡터에 매핑하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 매트릭스 데이터 및 상기 제2 매트릭스 데이터는,
    하나 이상의 콘볼루션(convolution) 연산과 관련되는
    방법.
  3. 제1항에 있어서,
    상기 제1 엘리먼트-바이-엘리먼트 시퀀스 연산은,
    상기 제2 엘리먼트-바이-엘리먼트 시퀀스 연산과 동등한
    방법.
  4. 제1항에 있어서,
    상기 캐시는,
    상기 캐시로부터 상기 적어도 하나의 중복되는 엘리먼트를 검색하는 것이 SRAM로부터 데이터를 검색하기 위한 시간보다 적은 계산 시간을 필요로 하는 로컬 저장 위치인
    방법.
  5. 제1항에 있어서,
    상기 입력 벡터의 길이를 식별하는 단계와 관련하여 상기 매트릭스 프로세서의 적어도 하나의 하드웨어 구성을 식별하는 단계
    를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 매트릭스 프로세서의 상기 적어도 하나의 하드웨어 구성은,
    콘볼루션 파라미터
    를 포함하는 방법.
  7. 제6항에 있어서,
    상기 콘볼루션 파라미터는,
    3 차원 데이터 매트릭스를 나타내는 하나 이상의 어드레스
    를 포함하는 방법.
  8. 제7항에 있어서,
    상기 콘볼루션 파라미터는,
    필터 크기, 가중치들의 수, 및 스트라이드(stride) 중 적어도 하나를 포함하는
    방법.
  9. 제1항에 있어서,
    상기 제1 매트릭스 데이터를 상기 입력 벡터에 매핑하는 단계는,
    상기 매트릭스 프로세서의 하드웨어 구성에 적어도 부분적으로 기초하여 상기 입력 벡터에 대해 상기 제1 매트릭스 데이터를 정렬하는 단계
    를 포함하는 방법.
  10. 제1항에 있어서,
    상기 입력 벡터의 엘리먼트는,
    상기 매트릭스 프로세서 내 각각의 위치 및 콘볼루션 연산의 각각의 사이클 중 적어도 하나에 대해 식별되는
    방법.
  11. 제1항에 있어서,
    상기 엘리먼트-바이-엘리먼트 시퀀스 연산은,
    각각의 콘볼루션 연산에 대해 한 번씩 수행되는
    방법.
  12. 제1항에 있어서,
    상기 중복되는 엘리먼트를 결정하기 위하여 스트라이드 및 필터 크기 중 적어도 하나를 사용하는 상태 머신(state machine)
    을 더 포함하는 방법.
  13. 제1항에 있어서,
    입력 이미지를 콘볼루션(convolve)하기 위한 매핑에 상기 방법을 사용하는 단계
    를 더 포함하는 방법.
  14. 제1항에 있어서,
    상기 매트릭스 프로세서의 제1 차원은,
    주어진 출력 채널에 대해 병렬로 계산되는 픽셀의 수에 대응하는
    방법.
  15. 제1항에 있어서,
    상기 매트릭스 프로세서의 제2 차원은,
    병렬로 동작하는 출력 채널의 수에 대응하는
    방법.
  16. 계산 속도를 향상시키기 위하여 콘볼루션 데이터를 매트릭스 곱셈 회로에 매핑하기 위한 시스템에 있어서,
    이미지 데이터를 유지하기 위한 메모리 디바이스;
    제어 로직; 및
    상기 제어 로직 및 상기 메모리 디바이스에 연결된 데이터 포맷터(data formatter)
    를 포함하고,
    상기 데이터 포맷터는,
    콘볼루션 명령을 수신하는 것에 응답하여, 콘볼루션 연산과 연관된 제1 매트릭스 데이터 및 제2 매트릭스 데이터를 식별하는 단계;
    상기 매트릭스 프로세서와 연관된 입력 벡터의 길이를 식별하는 단계;
    엘리먼트-바이-엘리먼트(element-by-element) 시퀀스 연산을 사용하여 상기 제1 매트릭스 데이터를 상기 입력 벡터에 매핑하는 단계;
    상기 매트릭스 프로세서에 의해 처리되는 제2 매트릭스 데이터와 중복되는 상기 제1 매트릭스 데이터 내의 적어도 하나의 엘리먼트를 식별하는 단계;
    상기 적어도 하나의 중복되는 엘리먼트를 캐시 내에 저장하는 단계; 및
    상기 캐시로부터 상기 적어도 하나의 중복되는 엘리먼트가 검색되도록 상기 엘리먼트-바이-엘리먼트 시퀀스 연산을 사용하여 상기 제2 매트릭스 데이터를 상기 입력 벡터에 매핑하는 단계
    를 수행하도록 구성된 방법.
  17. 제16항에 있어서,
    상기 입력 벡터를 생성하기 위한 로직 회로
    를 더 포함하는 시스템.
  18. 제16항에 있어서,
    상기 매트릭스 프로세서는,
    콘볼루션 결과를 출력하기 위한 내적(dot products)을 생성하기 위하여, 상기 제1 매트릭스 데이터 및 상기 제2 매트릭스 데이터를 사용하여 도트-곱(dot-multiplications)을 수행하는 복수의 서브-회로(sub-circuits)
    를 포함하는 시스템.
  19. 제18항에 있어서,
    상기 콘볼루션 결과는,
    이미지의 영역에 대한 필터의 적용에 대응하는 출력 매트릭스인
    시스템.
  20. 제16항에 있어서,
    상기 시퀀스 연산을 수행하는 시퀀서
    를 더 포함하는 시스템.
  21. 제16항에 있어서,
    상기 데이터 포맷터는,
    상기 중복되는 엘리먼트를 결정하기 위하여 스트라이드 및 필터 크기 중 적어도 하나를 사용하는 상태 머신(state machine)
    을 포함하는 시스템.
KR1020207017612A 2017-12-12 2018-12-11 매트릭스 프로세서를 위해 매트릭스 입력을 벡터화된 입력으로 변환하기 위한 시스템 및 방법 KR102451239B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/839,234 2017-12-12
US15/839,234 US10747844B2 (en) 2017-12-12 2017-12-12 Systems and methods for converting a matrix input to a vectorized input for a matrix processor
PCT/US2018/065036 WO2019118517A1 (en) 2017-12-12 2018-12-11 Systems and methods for converting a matrix input to a vectorized input for a matrix processor

Publications (2)

Publication Number Publication Date
KR20200089302A true KR20200089302A (ko) 2020-07-24
KR102451239B1 KR102451239B1 (ko) 2022-10-06

Family

ID=66696896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207017612A KR102451239B1 (ko) 2017-12-12 2018-12-11 매트릭스 프로세서를 위해 매트릭스 입력을 벡터화된 입력으로 변환하기 위한 시스템 및 방법

Country Status (6)

Country Link
US (1) US10747844B2 (ko)
EP (1) EP3724771A4 (ko)
JP (1) JP7101776B2 (ko)
KR (1) KR102451239B1 (ko)
CN (1) CN111465924B (ko)
WO (1) WO2019118517A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11256977B2 (en) * 2017-12-29 2022-02-22 Facebook, Inc. Lowering hardware for neural networks
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11468302B2 (en) * 2018-03-13 2022-10-11 Recogni Inc. Efficient convolutional engine
US11709911B2 (en) * 2018-10-03 2023-07-25 Maxim Integrated Products, Inc. Energy-efficient memory systems and methods
CN111338974A (zh) * 2018-12-19 2020-06-26 超威半导体公司 用于矩阵数学指令集的图块化算法
US20200320002A1 (en) * 2019-04-04 2020-10-08 EMC IP Holding Company LLC Intelligently managing data facility caches
CN112766453A (zh) * 2019-10-21 2021-05-07 华为技术有限公司 一种数据处理装置及数据处理方法
CN111242293B (zh) * 2020-01-13 2023-07-18 腾讯科技(深圳)有限公司 一种处理部件、数据处理的方法以及电子设备
CN111325816B (zh) * 2020-02-11 2022-11-04 重庆特斯联智慧科技股份有限公司 一种特征图处理方法、装置、存储介质及终端
US11347486B2 (en) 2020-03-27 2022-05-31 Advanced Micro Devices, Inc. Compiler-initiated tile replacement to enable hardware acceleration resources
US11687764B2 (en) * 2020-04-17 2023-06-27 Samsung Electronics Co., Ltd. System and method for increasing utilization of dot-product based neural network accelerator
US20220382361A1 (en) * 2021-05-25 2022-12-01 Maxim Integrated Products, Inc. Systems and Methods for Performing In-Flight Computations
CN114461978B (zh) * 2022-04-13 2022-07-08 苏州浪潮智能科技有限公司 数据处理方法、装置、电子设备及可读存储介质
TWI831643B (zh) * 2023-03-13 2024-02-01 鴻海精密工業股份有限公司 交通標誌識別方法及相關設備

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153707A1 (en) * 2009-12-23 2011-06-23 Boris Ginzburg Multiplying and adding matrices
US20160239706A1 (en) * 2015-02-13 2016-08-18 Qualcomm Incorporated Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US9170812B2 (en) * 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
CN100498727C (zh) * 2005-12-19 2009-06-10 国际商业机器公司 矩阵的解压缩方法和设备
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US8190905B1 (en) 2006-09-29 2012-05-29 Netapp, Inc. Authorizing administrative operations using a split knowledge protocol
CN102541814B (zh) * 2010-12-27 2015-10-14 北京国睿中数科技股份有限公司 用于数据通信处理器的矩阵计算装置和方法
CN102411558B (zh) * 2011-10-31 2015-05-13 中国人民解放军国防科学技术大学 面向向量处理器的大矩阵相乘的向量化实现方法
US9348601B2 (en) * 2012-12-26 2016-05-24 Intel Corporation Coalescing adjacent gather/scatter operations
WO2014125543A1 (ja) * 2013-02-15 2014-08-21 日本電気株式会社 情報処理装置
US10223333B2 (en) * 2014-08-29 2019-03-05 Nvidia Corporation Performing multi-convolution operations in a parallel processing system
US10255547B2 (en) * 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
US9996350B2 (en) * 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US9805303B2 (en) 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
CN106250103A (zh) * 2016-08-04 2016-12-21 东南大学 一种卷积神经网络循环卷积计算数据重用的系统
CN106407158B (zh) * 2016-09-12 2019-01-29 东南大学 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法
US10726330B2 (en) * 2016-10-11 2020-07-28 The Research Foundation For The State University Of New York System, method, and accelerator to process convolutional neural network layers
CN106445471B (zh) 2016-10-13 2018-06-01 北京百度网讯科技有限公司 处理器和用于在处理器上执行矩阵乘运算的方法
US10310768B1 (en) * 2017-01-11 2019-06-04 Ambarella, Inc. Convolution calculations in multiple dimensions
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
JP6958027B2 (ja) * 2017-07-03 2021-11-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10671349B2 (en) * 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11803377B2 (en) * 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
GB2568086B (en) * 2017-11-03 2020-05-27 Imagination Tech Ltd Hardware implementation of convolution layer of deep neutral network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153707A1 (en) * 2009-12-23 2011-06-23 Boris Ginzburg Multiplying and adding matrices
US20160239706A1 (en) * 2015-02-13 2016-08-18 Qualcomm Incorporated Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks

Also Published As

Publication number Publication date
WO2019118517A1 (en) 2019-06-20
CN111465924B (zh) 2023-11-17
EP3724771A4 (en) 2021-09-29
EP3724771A1 (en) 2020-10-21
JP7101776B2 (ja) 2022-07-15
JP2021507335A (ja) 2021-02-22
US20190179870A1 (en) 2019-06-13
CN111465924A (zh) 2020-07-28
US10747844B2 (en) 2020-08-18
KR102451239B1 (ko) 2022-10-06

Similar Documents

Publication Publication Date Title
KR102451239B1 (ko) 매트릭스 프로세서를 위해 매트릭스 입력을 벡터화된 입력으로 변환하기 위한 시스템 및 방법
JP7374236B2 (ja) 加速数学エンジン
US11803377B2 (en) Efficient direct convolution using SIMD instructions
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
CN113396387A (zh) 具有处理流水线的乘法器-累加器电路系统以及操作该电路系统的方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right