KR102306252B1 - 매트릭스 변환 장치, 방법 및 데이터 처리 시스템 - Google Patents
매트릭스 변환 장치, 방법 및 데이터 처리 시스템 Download PDFInfo
- Publication number
- KR102306252B1 KR102306252B1 KR1020200003639A KR20200003639A KR102306252B1 KR 102306252 B1 KR102306252 B1 KR 102306252B1 KR 1020200003639 A KR1020200003639 A KR 1020200003639A KR 20200003639 A KR20200003639 A KR 20200003639A KR 102306252 B1 KR102306252 B1 KR 102306252B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- matrix
- row
- transformation
- storage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/015—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/78—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2782—Interleaver implementations, which reduce the amount of required interleaving memory
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1137—Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/118—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
- H03M13/1185—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Probability & Statistics with Applications (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본문에서 매트릭스 변환 장치 및 방법, 데이터 처리 시스템을 설명하였다. 상기 매트릭스 변환 장치는, 매트릭스 데이터를 수신하고, 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성하는 제1 시프팅 유닛; 제1 데이터 중의 각 행의 데이터를 상기 행의 데이터 중의 각각의 데이터의 배열순서와 상이한 배열순서로 작성하여 제1 데이터를 제2 데이터로 저장하는 캐시 유닛; 및 캐시 유닛으로부터 제2 데이터를 판독하고, 제2 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터를 생성하는 제2 시프팅 유닛을 포함한다.
Description
본 발명의 실시예는 주로 매트릭스 데이터 처리 분야에 관한 것이고, 보다 구체적으로 매트릭스 변환 장치, 방법 및 상기 매트릭스 변환 장치를 포함하는 데이터 처리 시스템에 관한 것이다.
딥러닝 가속기에서, 입력 데이터의 가장 핵심적인 특징, 모델 파라미터, 중간 결과 등 데이터는 모두 예를 들어, 일차원 매트릭스, 이차원 매트릭스 및 다차원 매트릭스와 같은 매트릭스 포맷으로 표시된다. 중앙 처리 장치(CPU)가 일반적으로 각각의 클럭 주기에서 처리하는 단위는 하나의 숫자이고, 딥러닝 가속기의 처리 능력은 기존의 CPU의 몇 십배 내지 몇 백배이다. 따라서, 딥러닝 가속기가 각각의 클럭 주기에서 처리하는 하나의 숫자가 아니라 하나의 다차원 매트릭스이며, 예를 들어, 매트릭스를 입력하는 하나의 매트릭스 블록 또는 서브 매트릭스이다.
일반적으로, 딥러닝 처리 모델은 하나의 복잡한 산출 과정이고, 보다 좋은 성능을 획득하기 위하여, 매트릭스와 같은 데이터에 대해 일부 포맷 변화 및 정리를 진행해야 한다. 매트릭스 변환에서, 매트릭스 전치(matrix transposition)는 가장 빈번하게 사용되는 동작이며, 이러한 동작은 매트릭스 내부의 데이터를 변경하지 않으나, 매트릭스의 차원과 데이터의 순서를 조정할 수 있다.
본 발명은 딥러닝 가속기의 하드웨어 설계에서 고성능, 저원가를 구현하는 매트릭스 변환 해결수단을 제공하고자 한다.
제1 양태에서, 본 출원은 매트릭스 변환 장치를 제공하며, 상기 매트릭스 변환 장치는, 매트릭스 데이터를 수신하고, 상기 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성하는 제1 시프팅 유닛; 상기 제1 데이터 중의 각 행의 데이터를 상기 행의 데이터 중의 각각의 데이터의 배열순서와 상이한 배열순서로 작성하여 상기 제1 데이터를 제2 데이터로 저장하는 캐시 유닛; 및 상기 캐시 유닛으로부터 상기 제2 데이터를 판독하고, 상기 제2 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터를 생성하는 제2 시프팅 유닛을 포함한다.
제2 양태에서, 본 출원은 데이터 처리 시스템을 제공하며, 상기 시스템은, 제1항 내지 제12항 중 어느 한 항에 따른 매트릭스 변환 장치; 상기 매트릭스 변환 장치에 전기적으로 연결되고, 상기 매트릭스 데이터를 상기 매트릭스 변환 장치에 전송하는 입력 출력 인터페이스; 및 상기 매트릭스 변환 장치에 전기적으로 연결되고, 딥러닝 처리 모델에 기반하여 상기 변환 후의 매트릭스 데이터를 처리하는 딥러닝 처리 모듈을 포함한다.
제3 양태에서, 본 출원은 매트릭스 변환 방법을 포함하며, 상기 방법은, 매트릭스 데이터를 수신하고, 상기 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성하는 단계; 상기 제1 데이터 중의 각 행의 데이터를 상기 행의 데이터 중의 각각의 데이터의 배열순서와 상이한 배열순서로 캐시 유닛에 작성하여 상기 제1 데이터를 상기 캐시 유닛에 제2 데이터로 저장하는 단계; 및 상기 캐시 유닛으로부터 상기 제2 데이터를 판독하고, 상기 제2 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터를 생성하는 단계를 포함한다.
본 발명은 고성능이면서 저비용으로 매트릭스 변환을 하는 딥러닝 가속기를 제공한다.
첨부된 도면과 함께 이하 상세한 설명을 참조하여, 본 발명의 다양한 실시예의 상술한 설명 및 기타 특징, 이점 및 양태는 보다 명백해 질 것이다. 도면에서, 동일하거나 유사한 도면 표기는 동일하거나 유사한 요소를 나타낸다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 2a 내지 도 2c는 매트릭스 변환을 나타내는 개략도이다.
도 3은 본 발명의 실시예에 따른 매트릭스 변환 장치를 나타내는 블록도이다.
도 4는 본 발명의 실시예에 따른 캐시 유닛을 나타내는 개략도이다.
도 5는 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 6은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 7은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 8은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 9는 본 발명의 다른 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 10은 본 발명의 다른 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 11은 본 발명의 실시예에 따른 매트릭스 변환 방법을 나타내는 흐름도이다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 2a 내지 도 2c는 매트릭스 변환을 나타내는 개략도이다.
도 3은 본 발명의 실시예에 따른 매트릭스 변환 장치를 나타내는 블록도이다.
도 4는 본 발명의 실시예에 따른 캐시 유닛을 나타내는 개략도이다.
도 5는 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 6은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 7은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 8은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 9는 본 발명의 다른 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 10은 본 발명의 다른 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다.
도 11은 본 발명의 실시예에 따른 매트릭스 변환 방법을 나타내는 흐름도이다.
아래에 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세하게 설명한다. 비록 도면에는 본 발명의 일부 실시예가 도시되어 있으나 본 발명은 다양한 형태로 구현될 수 있음을 이해해야 하고, 여기서 설명된 실시예에 한정되는 것으로 해석되어서는 안되며, 반대로 이러한 실시예는 본 발명을 보다 명확하고 완전하게 이해하도록 하기 위해 제공된다. 본 발명의 도면 및 실시예는 단지 예시로서, 본 발명의 보호 범위를 한정하려는 것이 아님을 이해해야 한다.
본 발명의 실시예의 설명 과정에서, 용어 “포함하다” 및 이와 유사한 용어는 “포함하나 한정되지 않음”과 같은 개방적인 포함으로 이해되어야 한다. 용어 “기반”은 “적어도 부분적으로 기반”으로 이해되어야 한다. 용어 “일 실시예” 또는 “상기 실시예”는 “적어도 일 실시예”로 이해되어야 한다. 용어 “제1”, “제2” 등은 상이하거나 동일한 객체를 지칭할 수 있다. 아래 설명은 다른 명시적 및 암시적 정의를 더 포함할 수 있다.
상술한 바와 같이, 딥러닝 가속기의 입력은 일반적으로 매트릭스 데이터이고, 딥러닝 처리 모델의 산출 과정에서, 매트릭스 데이터를 변환시켜야 한다. 기존의 일 해결수단에서, 범용 프로세서(CPU 또는 ARM)에 의해 표시되는 소프트웨어 전처리 또는 협동 처리를 통해 매트릭스의 차원 확장, 전치 등 동작을 구현한다. 그러나, 이러한 해결수단의 매트릭스 변환 성능이 이상적이지 않고 사용자의 코드를 증가시키므로, 사용하기에 불편하다. 이 밖에, 기존의 기타 해결수단에서, 레지스터 어레이를 통해 매트릭스 전치를 구현하는데, 여기서, 하나의 N × N의 매트릭스를 레지스터 어레이에 종방향으로 이입시킨 다음, 레지스터 어레이로부터 횡방향으로 이출시킴으로써, 매트릭스의 전치를 구현한다. 하지만, 이러한 해결수단은 대량의 레지스터를 소모해야 하고, 매트릭스 차원 확장을 지원하지 못하며, 삼차원 이상의 매트릭스 전치를 지원하지 못하므로, 유연성이 좋지 않다,
딥러닝 가속기의 하드웨어 설계는 FPGA 회로 설계 또는 ASIC 칩 설계 등 형태를 포함한다. 어떻게 고성능, 저원가의 매트릭스 변환 회로를 구현하고 이차원 매트릭스 전치, 삼차원 매트릭스 전치, 매트릭스 차원 확장 및 전치 등 다양한 매트릭스 변환을 유연하게 지원할 것인가 하는 것은 어려운 과제이다.
본 발명의 실시예에 의해 제공되는 매트릭스 변환 장치는, 제1 시프팅 유닛을 통해 매트릭스 데이터를 수신하고 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성하며, 캐시 유닛을 통해 제1 데이터 중의 각 행의 데이터를 상기 행의 데이터 중의 각각의 데이터의 배열순서와 상이한 배열순서로 캐시 유닛에 작성하여 제1 데이터를 제2 데이터로 저장하고, 제2 시프팅 유닛을 통해 캐시 유닛으로부터 제2 데이터를 판독하며 제2 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터를 생성한다. 이러한 방식을 통해, 본 발명의 실시예에 따라 딥러닝 가속기에서 다차원 매트릭스의 변환 해결수단을 제공하며, 이는 이차원 매트릭스 전치, 삼차원 매트릭스 전치, 매트릭스 차원 확장 및 전치 등 다양한 매트릭스 변환을 지원하고, 스트리밍 처리를 진행하고 회로가 간단하여 전력소모가 낮은 등 특징을 구비한다.
아래 도면과 함께 다양한 실시예를 참조하여 본 발명을 상세하게 설명하도록 한다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1에 도시된 데이터 처리 시스템(100)은 딥러닝 가속기에서 구현될 수 있다. 도 1을 참조하면, 데이터 처리 시스템(100)은 매트릭스 변환 장치(102), 입력 출력 인터페이스(104) 및 딥러닝 처리 모듈(106)을 포함할 수 있다.
입력 출력 인터페이스(104)는 데이터 처리 시스템(100) 외부로부터 매트릭스 데이터를 수신하고, 데이터 처리 시스템(100)에 의해 처리된 결과를 데이터 처리 시스템(100) 외부로 발송한다. 일부 실시예에서, 입력 출력 인터페이스(104)는 외부 메모리로부터 매트릭스 데이터를 판독하고, 외부 메모리에 처리된 결과를 나타내는 데이터를 작성한다. 일부 실시예에서, 입력 출력 인터페이스(104)는 매트릭스 블록 데이터 또는 서브 매트릭스 데이터를 수신한다. 이 밖에, 입력 출력 인터페이스(104)는 또한, 수신된 매트릭스 데이터를 매트릭스 변환 장치(102)에 발송한다.
매트릭스 변환 장치(102)는 입력 출력 인터페이스(104)에 전기적으로 연결된다. 매트릭스 변환 장치(102)는 매트릭스 데이터를 수신하고, 매트릭스 데이터를 변환시켜 변환 후의 매트릭스 데이터를 생성한다. 일부 실시예에서, 매트릭스 변환 장치(102)는 매트릭스 데이터에 대해 포맷 변환을 진행한다. 일부 실시예에서, 매트릭스 변환 장치(102)는 예를 들어 이차원 매트릭스 전치, 삼차원 매트릭스 전치, 매트릭스 차원 확장 및 전치 등 다양한 매트릭스 변환을 수행한다. 일부 실시예에서, 매트릭스 변환 장치(102)는 또한, 변환 후의 매트릭스 데이터를 딥러닝 처리 모듈(106)에 전송하여 연산 처리를 진행한다. 아래, 매트릭스 변환 장치(102)의 상세한 구성을 설명하도록 한다.
딥러닝 처리 모듈(106)은 매트릭스 변환 장치(102)에 전기적으로 연결된다. 딥러닝 처리 모듈(106)은 딥러닝 처리 모델에 기반하여 변환 후의 매트릭스 데이터를 처리한다. 일부 실시예에서, 딥러닝 처리 모듈(106)은 다양한 매트릭스 연산, 벡터 연산, 비선형 연산 등 처리를 수행한다. 일부 실시예에서, 딥러닝 처리 모듈(106)은 본 기술분야에서 공지된 딥러닝 처리 모델에 기반한 지식재산권(IP) 코어로서 사용된다.
일부 실시예에서, 딥러닝 처리 모듈(106)은 또한, 처리된 결과를 다른 매트릭스 데이터로서 매트릭스 변환 장치(102)에 전송한다. 일부 실시예에서, 매트릭스 변환 장치(102)는 또한, 다른 매트릭스 데이터에 기반하여 변환 후의 다른 매트릭스 데이터를 생성하고, 변환 후의 다른 매트릭스 데이터를 입력 출력 인터페이스(104)에 전송함으로써 변환 후의 다른 매트릭스 데이터를 외부 장치에 출력한다.
일부 실시예에서, 딥러닝 처리 모듈(106)은 입력 출력 인터페이스(104)에 직접 전기적으로 연결되고, 처리된 결과를 입력 출력 인터페이스(104)에 직접 전송하여 처리된 결과를 외부 장치에 출력한다. 입력 출력 인터페이스(104)는 또한, 직접 입력 출력 인터페이스(104)로부터 매트릭스 데이터 매트릭스 데이터를 수신하여, 매트릭스 데이터를 처리한다.
일부 실시예에서, 데이터 처리 시스템(100)은 스트리밍 방식으로 동작을 실행하되, 매트릭스 변환 장치(102)가 현재 매트릭스 데이터를 변환시키는 과정에서, 입력 출력 인터페이스(104)는 다음 매트릭스 데이터를 수신할 수 있고, 이와 동시에, 딥러닝 처리 모듈(106)은 이 전의 변환 후의 매트릭스 데이터를 처리할 수 있다.
도 2a 내지 도 2c는 매트릭스 변환 장치에 의해 실행되는 매트릭스 변환을 나타내는 개략도이다. 일반적으로, 이차원 매트릭스는 [n, m]로 표시되고, 여기서, n은 첫 번째 차원 크기를 표시하며, m은 두 번째 차원 크기를 표시한다. 이 밖에, 삼차원 매트릭스는 [n, m, k]로 표시되며, 더 많은 차원의 매트릭스는 이와 유사한 방식으로 유추된다.
도 2a는 (a)매트릭스[4, 2] 및 (b)매트릭스[2, 4]를 나타내고, 여기서, 좌측의 매트릭스[4, 2]는 우측의 매트릭스[2, 4]로 전치된다. 매트릭스 데이터 중의 (0, 0) 데이터는 제1 행 제1 열의 데이터를 표시하고, (2, 1) 데이터는 제3 행 제2 열의 데이터를 표시하며, 기타 데이터들도 이와 유사한 방식으로 유추된다. 도 2a는 매트릭스[n, m]의 이차원 매트릭스 전치를 나타낸다.
도 2b는 (a)매트릭스[4, 3, 2] 및 (b)매트릭스[3, 4, 2]를 나타내고, 여기서, 좌측의 매트릭스[4, 3, 2]는 우측의 매트릭스[3, 4, 2]로 전치된다. 도 2b는 매트릭스[n, m, k]의 삼차원 매트릭스 전치를 나타낸다.
도 2c는 (a)[4, 4]매트릭스 및 (b)[2, 4, 2]매트릭스를 나타내고, 여기서, 좌측의 [4, 4]매트릭스는 우선 차원 확장을 통해 [4, 2, 2]로 변하고, 다음, 차원이 확장된 매트릭스는 우측의 [2, 4, 2]매트릭스로 다시 전치된다. 도 2c는 이차원 매트릭스가 삼차원 매트릭스로 확장되어 삼차원 매트릭스가 다시 전치된 변환을 나타낸다.
도 3은 본 발명의 실시예에 따른 매트릭스 변환 장치를 나타내는 블록도이다. 도 3을 참조하면, 매트릭스 변환 장치(102)는 제1 시프팅 유닛(202), 캐시 유닛(204) 및 제2 시프팅 유닛(206)을 포함한다.
제1 시프팅 유닛(202)은, 매트릭스 데이터를 수신하고, 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성한다. 일부 실시예에서, 제1 시프팅 유닛(202)은, 매트릭스 데이터 중의 각각의 행의 데이터에 대해 각각 제1 순환 시프팅을 진행한다. 일부 실시예에서, 제1 시프팅 유닛(202)은, 매트릭스 데이터 중의 제i 행 데이터를 오른쪽으로 (i-1)개 단위 순환 시프팅하여 제1 데이터를 생성한다.
캐시 유닛(204)은 제1 시프팅 유닛(202)에 전기적으로 연결되고, 제1 데이터를 캐시 유닛(204)에 작성하도록 제어하여 제1 데이터를 제2 데이터로 저장한다. 캐시 유닛(204)은 제1 데이터 중의 각 행의 데이터를 상기 행의 데이터 중의 각각의 데이터의 배열순서와 상이한 배열순서로 캐시 유닛(204)에 작성한다. 일부 실시예에서, 캐시 유닛(204)은 저장 컨트롤러 및 저장 유닛 그룹을 포함하고, 여기서, 저장 컨트롤러는 제1 데이터를 저장 유닛 그룹에 작성하도록 제어한다. 일부 실시예에서, 캐시 유닛(204)은 복수의 저장 유닛 그룹을 포함하고, 각각의 저장 유닛 그룹은 복수의 저장 주소를 포함하며, 캐시 유닛(204)은 또한, 제1 데이터 중의 각 행의 데이터를 상이한 저장 유닛 그룹의 상이한 저장 주소에 각각 작성하여 제1 데이터를 제2 데이터로 저장한다. 제1 데이터를 이의 원래의 행과 열의 배열순서에 따라 캐시 유닛(204)에 작성한 것이 아니므로, 캐시 유닛(204)에 저장된 제2 데이터는 제1 데이터의 배열순서 또는 포맷이 변경된 후의 데이터임을 이해해야 한다. 하지만, 제1 데이터와 비교할 경우, 제2 데이터 중의 각각의 데이터의 내용은 변경되지 않는다. 아래, 제1 데이터를 캐시 유닛에 작성하는 동작을 상세하게 설명하도록 한다.
제2 시프팅 유닛(206)은 캐시 유닛(204)에 전기적으로 연결되고, 캐시 유닛(204)으로부터 제2 데이터를 판독하며, 제2 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터를 생성한다. 일부 실시예에서, 제2 시프팅 유닛(206)은, 제2 데이터 중의, 상이한 저장 유닛 그룹의 동일한 저장 주소에 저장된 데이터를 각각 판독하여 제2 데이터 중의 상응한 행의 데이터로 간주한다. 일부 실시예에서, 제2 시프팅 유닛(206)은, 제2 데이터 중의 각각의 행의 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터 중의 상응한 행의 데이터를 생성한다. 일부 실시예에서, 제2 시프팅 유닛(206)은, 제2 데이터 중의 제i 행 데이터를 왼쪽으로 (i-1)개 단위 순환 시프팅하여 변환 후의 매트릭스 데이터를 생성한다. 이 밖에, 제2 시프팅 유닛(206)은 또한, 변환 후의 매트릭스 데이터를 도 1의 딥러닝 처리 모듈(106)에 전송한다.
도 4는 본 발명의 실시예에 따른 캐시 유닛을 나타내는 개략도이다. 도 4를 참조하면, 캐시 유닛(204)은 복수의 저장 유닛 그룹(302)을 포함한다.
도 4에 도시된 바와 같이, 일부 실시예에서, 복수의 저장 유닛 그룹(302)은 x축 방향을 따라 순서적으로 배열되고, x축은 제i 저장 유닛 그룹(302)을 표시한다. 이 밖에, 각각의 저장 유닛 그룹(302)은 복수의 저장 주소를 포함한다. 설명의 편의를 위하여, 일부 실시예에서, 각각의 저장 유닛 그룹(302)의 복수의 저장 주소는 x축과 직교하는 y축 방향을 따라 배열되는 것으로 표시되고, y축은 각각의 저장 유닛 그룹(302)의 제j 저장 주소를 표시한다. 일부 실시예에서, 저장 주소는 깊이로 지칭될 수도 있다. 일부 실시예에서, 저장 주소[i, j]는 제i 저장 유닛 그룹(302)의 제j 저장 주소를 표시한다. 여기서, i 및 j는 각각 자연수이다.
일부 실시예에서, 저장 유닛 그룹(302)은 스태틱 랜덤 액세스 메모리(SRAM) 그룹이다. 아래에서, SRAM 그룹의 예시로서 저장 유닛 그룹(302)을 설명한다. 저장 유닛 그룹(302)은 SRAM 그룹에 한정되지 않고 기타 유형의 저장 유닛의 집합을 사용할 수도 있음을 이해해야 한다.
도 5는 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다. 도 5에 도시된 좌측 데이터는 매트릭스 데이터 중의 제1 행 데이터(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7)이다. 일부 실시예에서, 제1 시프팅 유닛(202)은 매트릭스 데이터로부터 상기 제1 행 데이터를 판독하고, 상기 제1 행 데이터를 오른쪽으로 (1-1=0)개 단위 순환 시프팅하는데, 즉, 상기 제1 행 데이터를 실질적으로 오른쪽으로 순환 시프팅하지 않는다. 캐시 유닛(204)은 상기 제1 행 데이터의 작성을 제어하여, 제1 대각선 저장 주소로 상기 제1 행 데이터를 캐시 유닛(204)에 작성한다. 일부 실시예에서, 캐시 유닛(204)은 상기 제1 행 데이터를 복수의 저장 유닛 그룹의 저장 주소[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8]에 각각 작성하는바, 이는 도 5에 도시된 바와 같다. 이러한 방식을 통해, 매트릭스 데이터 중의 제1 행 데이터는 제1 대각선 저장 주소로 저장되며, 이의 원래의 포맷 또는 배열순서에 따라 캐시 유닛(204)에 저장되지 않는다.
도 6은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다. 도 6에 도시된 좌측 데이터는 매트릭스 데이터 중의 제2 행 데이터이다. 일부 실시예에서, 제1 시프팅 유닛(202)은 매트릭스 데이터로부터 상기 제2 행 데이터를 판독하고, 상기 제2 행 데이터를 오른쪽으로 (2-1=1)개 단위 순환 시프팅하여 1개 단위 순환 시프팅된 후의 제2 행 데이터(1, 7), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6)을 획득한다. 캐시 유닛(204)은 오른쪽으로 순환 시프팅된 후의 제2 행 데이터의 작성을 제어하여 제2 대각선 저장 주소로 오른쪽으로 순환 시프팅된 후의 제2 행 데이터를 캐시 유닛(204)에 작성한다. 일부 실시예에서, 캐시 유닛(204)은 오른쪽으로 순환 시프팅된 후의 제2 행 데이터를 복수의 저장 유닛 그룹의 저장 주소[1, 8], [2, 1], [3, 2], [4, 3], [5, 4], [6, 5], [7, 6], [8, 7]에 각각 작성하는바, 이는 도 6에 도시된 바와 같다. 이러한 방식을 통해, 매트릭스 데이터 중의 오른쪽으로 순환 시프팅된 후의 제2 행 데이터는 제2 대각선 저장 주소로 저장되며, 이의 원래의 포맷 또는 배열순서에 따라 캐시 유닛(204)에 저장되지 않는다.
도 7은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다. 도 7에 도시된 좌측 데이터는 매트릭스 데이터 중의 제3 행 데이터이다. 일부 실시예에서, 제1 시프팅 유닛(202)은 매트릭스 데이터로부터 상기 제3 행 데이터를 판독하고, 상기 제3행 데이터를 오른쪽으로 (3-1=2)개 단위 순환 시프팅하여 2개 단위 순환 시프팅된 후의 제3 행 데이터(2, 6), (2, 7), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5)를 획득한다. 캐시 유닛(204)은 오른쪽으로 순환 시프팅된 후의 제3 행 데이터의 작성을 제어하여 제3 대각선 저장 주소가 오른쪽으로 순환 시프팅된 후의 제3 행 데이터를 캐시 유닛(204)에 작성하도록 한다. 일부 실시예에서, 캐시 유닛(204)은 오른쪽으로 순환 시프팅된 후의 제3 행 데이터를 복수의 저장 유닛 그룹의 저장 주소[1, 7], [2, 8], [3, 1], [4, 2], [5, 3], [6, 4], [7, 5], [8, 6]에 각각 작성하는바, 이는 도 7에 도시된 바와 같다. 이러한 방식을 통해, 매트릭스 데이터 중의 오른쪽으로 순환 시프팅된 후의 제3 행 데이터는 제3 대각선 저장 주소로 저장되며, 이의 원래의 포맷 또는 배열순서에 따라 캐시 유닛(204)에 저장되지 않는다.
일부 실시예에서, 상기와 같은 유사한 방식으로, 제1 시프팅 유닛(202)은 매트릭스 데이터로부터 제i 행 데이터를 오른쪽으로 순환 시프팅한다. 캐시 유닛(204)은 오른쪽으로 순환 시프팅된 후의 제i 행 데이터의 작성을 제어하여 제i 대각선 저장 주소로 오른쪽으로 순환 시프팅된 후의 제i 행 데이터를 캐시 유닛(204)에 작성한다. 여기서, 매트릭스 데이터로 표시되는 매트릭스가 n행 및 m열을 포함한다고 가정하며, 여기서, n 및 m은 각각 자연수이다. 일부 실시예에서, 캐시 유닛(204)은 오른쪽으로 순환 시프팅된 후의 제i 행 데이터 중의 m개 열의 데이터 중의 제j 데이터를 제j 저장 유닛 그룹의 제(m+j-i+1) 저장 주소(여기서, j는 1보다 크거나 같고 i-1보다 작거나 같음) 및 제(j-i+1) 저장 주소(여기서, j는 i보다 크거나 같고 m보다 작거나 같음) 위치에 각각 작성하고, 여기서, i는 2보다 크거나 같고 n보다 작거나 같다.이 밖에, i가 1과 같을 경우, 상술한 바와 같이, 제1 행 데이터 중의 m개 열의 데이터 중의 제j 데이터는 제j 저장 유닛 그룹의 제j 저장 주소에 각각 작성된다. 이러한 방식을 통해, 캐시 유닛(204)은 오른쪽으로 순환 시프팅된 후의 각각의 행의 데이터 중의 각각의 데이터를 대응되는 대각선 저장 주소로 상이한 저장 유닛 그룹의 상이한 저장 주소에 각각 작성하도록 제어한다. 이로써, 제1 순환 시프팅된 후의 매트릭스 데이터는 이의 원래의 포맷 또는 배열순서와 상이한 포맷 또는 배열순서로 캐시 유닛에 저장됨으로써, 판독을 통해 변환 후의 매트릭스를 생성한다.
도 8은 본 발명의 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다. 도 8의 좌측 부분은 캐시 유닛(204)에 저장된 제2 데이터의 일부분을 나타낸다. 일부 실시예에서, 제2 시프팅 유닛(206)은 캐시 유닛(204)으로부터 상이한 저장 유닛 그룹의 제1 저장 주소에 저장된 데이터(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0)을 순차적으로 판독하여 제2 데이터 중의 제1 행 데이터로 간주한다. 다음, 제2 시프팅 유닛(206)은 제2 데이터 중의 제1 행 데이터를 왼쪽으로 (1-1=0)개 단위 순환 시프팅하는데, 즉, 제2 데이터 중의 제1 행 데이터 실질적으로 왼쪽으로 순환 시프팅하지 않는다. 제2 시프팅 유닛(206)은 제2 데이터 중의 제1 행 데이터를 변환 후의 매트릭스 데이터 중의 제1 행 데이터로서 출력한다.
일부 실시예에서, 제2 시프팅 유닛(206)은 캐시 유닛(204)으로부터 상이한 저장 유닛 그룹의 제2 저장 주소에 저장된 데이터(7, 1), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1)를 순차적으로 판독하여 제2 데이터 중의 제2 행 데이터로 한다. 제2 시프팅 유닛(206)은 제2 데이터 중의 제2 행 데이터를 왼쪽으로 (2-1=1)개 단위 순환 시프팅하여 왼쪽으로 순환 시프팅된 후의 제2 행 데이터(0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1)을 생성한다. 제2 시프팅 유닛(206)은 제2 데이터 중의 왼쪽으로 순환 시프팅된 후의 제2 행 데이터를 변환 후의 매트릭스 데이터 중의 제2 행 데이터로 출력한다.
일부 실시예에서, 제2 시프팅 유닛(206)은 캐시 유닛(204)으로부터 상이한 저장 유닛 그룹의 제3 저장 주소에 저장된 데이터(6, 2), (7, 2), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (5, 2)를 순차적으로 판독하여 제2 데이터 중의 제3 행 데이터로 한다. 제2 시프팅 유닛(206)은 제2 데이터 중의 제3 행 데이터를 왼쪽으로 (3-1=2)개 단위 순환 시프팅하여 왼쪽으로 순환 시프팅된 후의 제3 행 데이터(0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (5, 2), (6, 2), (7, 2)를 생성한다. 제2 시프팅 유닛(206)은 제2 데이터 중의 왼쪽으로 순환 시프팅된 후의 제3 행 데이터를 변환 후의 매트릭스 데이터 중의 제3 행 데이터로 출력한다.
일부 실시예에서, 상기와 같은 유사한 방식으로, 제2 시프팅 유닛(206)은 캐시 유닛(204)으로부터 제2 데이터 중의, 상이한 저장 유닛 그룹의 동일한 저장 주소에 저장된 데이터를 각각 순차적으로 판독하여 제2 데이터 중의 상응한 행의 데이터로 한다. 다음, 제2 시프팅 유닛(206)은 제2 데이터 중의 제i 행 데이터를 왼쪽으로 (i-1)개 단위 순환 시프팅하여 변환 후의 매트릭스 데이터 중의 상응한 행의 데이터를 생성한다. 이러한 방식을 통해, 매트릭스 변환 장치(102)는 전치 후의 매트릭스 데이터를 출력한다.
일부 실시예에서, 매트릭스[n, m]의 n이 m보다 작거나 같을 경우, 상술한 방식에 따라 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성하고, 제1 데이터가 작성되어 제2 데이터로 저장되도록 제어하며, 제2 데이터 중의 각각의 행의 데이터를 판독하고, 각각의 행의 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스를 생성한다. 예를 들어, n이 3과 같고 m이 8과 같을 경우, 매트릭스 데이터 중의 각각의 행의 데이터는 도 7에 도시된 바와 같이 오른쪽으로 순환 시프팅 및 작성된다. 일부 실시예에서, 제2 시프팅 유닛(206)은 상이한 저장 유닛 그룹의 제1 저장 주소에 저장된 데이터(0, 0), (1, 0), (2, 0), (dummy), (dummy), (dummy), (dummy), (dummy), 제2 저장 주소에 저장된 데이터(dummy), (0, 1), (1, 1), (2, 1), (dummy), (dummy), (dummy), (dummy), …… 및 제8 저장 주소에 저장된 데이터(1, 7), (2, 7), (dummy), (dummy), (dummy), (dummy), (dummy), (0, 7)을 각각 판독하여 제2 데이터 중의 상응한 행의 데이터로 하고, 여기서, dummy는 더미 데이터를 표시하는데, 이는 매트릭스 변환 장치(102)로부터 출력될 시 생략된다. 제2 시프팅 유닛(206)은 제2 데이터 중의 제i 행 데이터를 각각 왼쪽으로 (i-1)개 단위 순환 시프팅하여 제1 행 데이터(0, 0), (1, 0), (2, 0), 제2 행 데이터(0, 1), (1, 1), (2, 1) …… 및 제8 행 데이터(0, 7), (1, 7), (2, 7)을 포함하는 변환 후의 매트릭스 데이터를 출력한다. 이러한 방식을 통해, 매트릭스 변환 장치(102)는 매트릭스[3, 8]의 전치 매트릭스[8, 3]를 출력한다.
일부 실시예에서, n이 m보다 클 경우, 제1 시프팅 유닛(202)은 매트릭스[n, m]를 매트릭스[m, m] 및 매트릭스[n-m, m]로 분할하고, 상술한 방식에 따라 매트릭스[m, m]를 전환시키고, 변환 후의 제1 매트릭스를 출력한다. 매트릭스[n-m, m]에 대해, 제1 순환 시프팅된 후의 매트릭스 데이터를 복수의 저장 유닛 그룹의 제(m+1) 저장 주소로부터 시작하여 캐시 유닛(204)에 작성하고, 상술한 방식에 따라 매트릭스[n-m, m]를 변환시키며, 여기서, 제2 시프팅 유닛은 제(m+1) 저장 주소로부터 시작하여 데이터를 판독하고, 판독된 데이터에 대해 제2 순환 시프팅을 진행한 후 변환 후의 제2 매트릭스를 출력한다. 다음, 제1 매트릭스 및 제2 매트릭스를 조합하여 전치 후의 매트릭스를 생성할 수 있다.
일부 실시예에서, m이 캐시 유닛(204)의 전체 데이터 폭 k보다 클 경우, 제1 시프팅 유닛(202)은 매트릭스[n, m]를 매트릭스[n, k] 및 매트릭스[n, m-k]로 분할하고, 상술한 방식에 따라 매트릭스[n, k]를 전환시키고, 변환 후의 제1 매트릭스를 출력한다. 매트릭스[n, m-k]에 대해, 제1 순환 시프팅된 후의 매트릭스 데이터를 저장 유닛 그룹의 제(k+1) 저장 주소로부터 시작하여 캐시 유닛(204)에 작성하고, 상술한 방식에 따라 매트릭스[n, m-k]를 변환시키며, 여기서, 제2 시프팅 유닛은 제(k+1) 저장 주소로부터 시작하여 데이터를 판독하고, 판독된 데이터에 대해 제2 순환 시프팅을 진행한 후 변환 후의 제2 매트릭스를 출력한다. 다음, 제1 매트릭스 및 제2 매트릭스를 조합하여 전치 후의 매트릭스를 생성할 수 있다.
일부 실시예에서, 상술한 바와 같이 먼저 대각선 방식으로 작성한 다음 행 방향으로 데이터를 판독하는 방식과 달리, 먼저 제1 데이터 중의 각각의 행의 데이터를 상이한 저장 유닛 그룹의 동일한 주소에 저장한 다음, 대응되는 대각선 방식으로 캐시 유닛에 저장된 데이터를 판독하여 변환 후의 매트릭스를 생성한다.
일부 실시예에서, 캐시 유닛에서의 제1 데이터 중의 각각의 행의 데이터의 작성 주소 및/또는 판독을 변경하는 방식을 원하는 대로 설정함으로써, 차원 변환, 데이터 위치 변환, 데이터 교환 등을 포함하는 매트릭스 변환을 원하는 대로 실행할 수 있다.
도 9 및 도 10은 본 발명의 다른 실시예에 따른 매트릭스 변환의 과정을 나타내는 개략도이다. 도 9 및 도 10은 먼저 매트릭스[n, m]를 [n, p, q]로 확장한 다음, 매트릭스[n, p, q]를 변환시키는 과정의 예시를 나타낸다.
일부 실시예에서, 복수의 저장 유닛 그룹(302) 중의 s개의 저장 유닛 그룹마다 한 그룹의 저장 유닛 그룹으로 분류되고, 각 그룹의 저장 유닛 그룹은 복수의 저장 주소를 포함한다. 일부 실시예에서, 복수의 저장 주소 중의 t개의 저장 주소마다 한 그룹의 저장 주소로 분류된다. 일부 실시예에서, 캐시 유닛(204)은 또한, 제1 데이터 중의 t 개 행마다 그의 데이터 중 복수의 그룹의 데이터를 서로 다른 그룹의 저장 유닛 그룹의 서로 다른 그룹의 저장 주소에 각각 작성하여 제1 데이터를 제2 데이터로 저장하고, 여기서, 복수의 그룹의 데이터 중의 각 그룹의 데이터는 s × t개의 데이터를 포함하며, 여기서, s 및 t는 자연수이다.
일부 실시예에서, 제1 시프팅 유닛(202)은 또한, 매트릭스 데이터 중의 각 행의 데이터 중 s개의 데이터마다 한 그룹의 데이터로 분류하고, 매트릭스 데이터 중의 제i 행 데이터 중의 각 그룹의 데이터를 오른쪽으로 (i-1) × s 개 단위 순환 시프팅하여 제1 데이터를 생성한다.
일부 실시예에서, 제2 시프팅 유닛(206)은 또한, 제2 데이터 중의, 상이한 그룹의 저장 유닛 그룹의 동일한 그룹의 저장 주소에 저장된 각 그룹의 데이터를 각각 순차적으로 판독하여 제2 데이터 중의 상응한 행의 데이터로 한다. 일부 실시예에서, 제2 시프팅 유닛(206)은, 제2 데이터 중의 각각의 행의 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터 중의 상응한 행의 데이터를 생성한다. 일부 실시예에서, 제2 시프팅 유닛(206)은 또한, 제2 데이터 중의 제i 행 데이터 중의 각 그룹의 데이터를 왼쪽으로 (i-1) × s개 단위 순환 시프팅하는데, 즉, (i-1) 그룹이다.
도 9 및 도 10에 도시된 예시에서, 입력 매트릭스는 예를 들어 이차원 매트릭스[4, 8]이고, 매트릭스 변환 장치(102)는 먼저 이차원 매트릭스[4, 8]를 삼차원 매트릭스[4, 4, 2]로 확장한다. 일부 실시예에서, 각 행의 데이터 중의 2개의 데이터마다 한 그룹의 데이터로 나뉘고, 2개의 저장 유닛 그룹마다 한 그룹의 저장 유닛 그룹으로 나뉘며, 서로 다른 그룹의 저장 유닛 그룹의 동일한 저장 주소는 한 그룹의 저장 주소로 나뉜다.
도 9를 참조하면, 제1 시프팅 유닛(202)은 제1 행 데이터 중의 네 그룹의 데이터를 오른쪽으로 (1-1=0) × 2개 단위 순환 시프팅하는데, 즉, 실질적으로 오른쪽으로 순환 시프팅하지 않는다. 캐시 유닛(204)은 제1 행 데이터 중의 네 그룹의 데이터{(0, 0), (0, 1)}, {(0, 2), (0, 3)}, {(0, 4), (0, 5)}, {(0, 6), (0, 7)}을 제1 및 제2 저장 유닛 그룹의 제1 저장 주소, 제3 및 제4 저장 유닛 그룹의 제2 저장 주소, 제5 및 제6 저장 유닛 그룹의 제3 저장 주소, 제7 및 제8 저장 유닛 그룹의 제4 저장 주소에 각각 작성하는바, 이는 도 9에 도시된 바와 같다.
도 10을 참조하면, 제1 시프팅 유닛(202)은 제2 행 데이터 중의 네 그룹의 데이터{(1, 0), (1, 1)}, {(1, 2), (1, 3)}, {(1, 4), (1, 5)}, {(1, 6), (1, 7)}을 오른쪽으로 (2-1=1) × 2개 단위 순환 시프팅하는데, 즉, 2개 단위 또는 하나의 패킷 순환 시프팅하여 오른쪽으로 순환 리프팅된 제2 행 데이터{(1, 6), (1, 7)}, {(1, 0), (1, 1)}, {(1, 2), (1, 3)}, {(1, 4), (1, 5)}를 생성한다. 캐시 유닛(204)은 오른쪽으로 시프팅된 제2 행 데이터를 제1 및 제2 저장 유닛 그룹의 제4 저장 주소, 제3 및 제4 저장 유닛 그룹의 제1 저장 주소, 제5 및 제6 저장 유닛 그룹의 제2 저장 주소, 제7 및 제8 저장 유닛 그룹의 제4 저장 주소에 각각 저장하는데, 이는 도 10에 도시된 바와 같다.
이와 유사한 방식으로, 도 5 내지 도 8에 설명된 매트릭스 변환 방식에 따라 유사하게 매트릭스[4, 4, 2]에 대해 제1 순환 시프팅, 작성, 판독 및 제2 순환 시프팅을 진행함으로써, 매트릭스[4, 8]를 확장 및 변환시켜 변환 후의 매트릭스[4, 4, 2]를 생성한다.
본 발명의 실시예에 따르면, 딥러닝 가속기에서 딥러닝 처리 모듈에 대해 매트릭스 변환 장치를 구현하고, 상기 매트릭스 변환 장치는 칩 외부로부터 입력된 예를 들어 매트릭스 블록 또는 서브 매트릭스 등 매트릭스 데이터를 변환시킬 수 있고, 변환 후의 매트릭스 데이터를 딥러닝 처리 모듈에 전송하여 연산 처리를 진행하도록 한다. 본 발명의 실시예에 따른 장치는 다차원 매트릭스의 변환 해결수단을 제공할 수 있으며, 이는 이차원 매트릭스 전치, 삼차원 매트릭스 전치, 매트릭스 차원 확장 및 전치 등 다양한 매트릭스 변환을 지원하고, 스트리밍 처리를 진행하고 회로가 간단하여 전력소모가 낮은 등 특징을 구비한다.
도 11은 본 발명의 실시예에 따른 매트릭스 변환 방법을 나타내는 흐름도이다. 도 11을 참조하면, 매트릭스 변환 방법(400)은 단계(402) 내지 단계(406)를 포함한다.
단계(402)에서, 매트릭스 데이터를 수신하고, 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성한다. 일부 실시예에서, 매트릭스 데이터 중의 제i 행 데이터를 오른쪽으로 (i-1)개 단위 순환 시프팅하여 제1 데이터를 생성하고, i는 자연수이다.
단계(404)에서, 제1 데이터 중의 각 행의 데이터를 상기 행의 데이터 중의 각각의 데이터의 배열순서와 상이한 배열순서로 캐시 유닛에 작성하여 제1 데이터를 캐시 유닛에서 제2 데이터로 저장한다. 일부 실시예에서, 캐시 유닛은 복수의 저장 유닛 그룹을 포함하고, 각각의 저장 유닛 그룹은 복수의 저장 주소를 포함하며. 일부 실시예에서, 제1 데이터 중의 각 행의 데이터를 상이한 저장 유닛 그룹의 상이한 저장 주소에 각각 작성한다.
일부 실시예에서, 매트릭스 데이터로 표시되는 매트릭스는 n행 및 m열을 포함하고, 여기서, n 및 m은 각각 자연수이다. 일부 실시예에서, 제1 데이터 중에서 제1 행 데이터 중의 m개 열의 데이터 중 제j 데이터를 복수의 저장 유닛 그룹 중의 제j 저장 유닛 그룹의 제j 저장 주소에 각각 작성하고, 여기서, j는 1보다 크거나 같고 m보다 작거나 같은 자연수이다. 이 밖에, 제1 데이터 중의 제i 행 데이터 중의 m개 열의 데이터 중 제j 데이터를 복수의 저장 유닛 그룹 중의 제j 저장 유닛 그룹의 제(m+j-i+1) 저장 주소(여기서, j는 1보다 크거나 같고 i-1보다 작거나 같음) 및 제(j-i+1) 저장 주소(여기서, j는 i보다 크거나 같고 m보다 작거나 같음)에 각각 작성하고, 여기서, i는 2보다 크거나 같고 n보다 작거나 같은 자연수이다.
단계(406)에서, 캐시 유닛으로부터 제2 데이터를 판독하고, 제2 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터를 생성한다. 일부 실시예에서, 제2 데이터 중의, 상이한 저장 유닛 그룹의 동일한 저장 주소에 저장된 데이터를 각각 판독하여 제2 데이터 중의 상응한 행의 데이터로 하고. 일부 실시예에서, 제2 데이터 중의 각각의 행의 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터 중의 상응한 행의 데이터를 생성한다. 일부 실시예에서, 제2 데이터 중의 제i 행 데이터를 왼쪽으로 (i-1)개 단위 순환 시프팅하여 변환 후의 매트릭스 데이터를 생성한다.
본 발명의 실시예를 실시하기 위한 방법은 시스템 온 칩(SoC) 구조에 적용되도록 하나 또는 복수의 프로그래밍 언어의 임의의 조합을 사용하여 프로그래밍할 수 있다. 이 밖에, 특정 순서로 각 동작을 설명하였으나, 이는 이러한 동작들이 도시된 특정 순서 또는 순차적 순서로 수행되도록 요구되거나 모든 도시된 동작들이 예기한 결과에 달성하기 위해 수행되어야 함을 이해해야 한다. 일정한 환경에서, 다수의 미션 및 합병 처리는 유리할 수 있다.
상술한 설명에서 여러 개의 구체적인 구현 세부사항이 포함되어 있으나 이들이 본 발명의 범위를 한정하는 것으로 해석되어서는 안된다. 독립적인 실시예의 컨텍스트에서 설명된 특정된 특징은 단일 구성으로 조합되어 구현될 수 있다. 반대로, 단일 구성의 컨텍스트에서 설명된 다양한 특징들은 또한 다수의 구성들에서 독립적으로 또는 임의의 적절한 하위 조합으로 구현될 수도 있다.
구조 특징 및/또는 방법 논리적 동작에 특정된 언어로 본 발명의 과제를 설명하였지만, 첨부된 청구범위에서 한정된 주제는 상술한 특정된 특징 또는 동작에 반드시 한정되는 것은 아님을 이해해야 한다. 반대로, 상술한 특정된 특징 및 동작은 단지 청구범위의 예시적 형태를 구현하기 위한 것이다.
Claims (20)
- 매트릭스 변환 장치로서,
매트릭스 데이터를 수신하고, 상기 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성하는 제1 시프팅 유닛;
상기 제1 데이터 중의 각 행의 데이터를 상기 행의 데이터 중의 각각의 데이터의 배열순서와 상이한 배열순서로 작성하여 상기 제1 데이터를 제2 데이터로 저장하는 캐시 유닛; 및
상기 캐시 유닛으로부터 상기 제2 데이터를 판독하고, 상기 제2 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터를 생성하는 제2 시프팅 유닛을 포함하고,
상기 제1 시프팅 유닛은 또한,
상기 매트릭스 데이터로 표시되는 매트릭스를 p행을 포함하는 제1 매트릭스 및 q행을 포함하는 제2 매트릭스로 분할하거나, p열을 포함하는 제1 매트릭스 및 q열을 포함하는 제2 매트릭스로 분할하고, p 및 q는 각각 자연수이며;
상기 제1 매트릭스의 매트릭스 데이터에 대해 상기 제1 순환 시프팅을 진행하여 상기 제1 매트릭스의 상기 제1 데이터를 생성하고;
상기 제2 매트릭스의 매트릭스 데이터에 대해 상기 제1 순환 시프팅을 진행하여 상기 제2 매트릭스의 상기 제1 데이터를 생성하는 매트릭스 변환 장치. - 제1항에 있어서,
상기 캐시 유닛은 복수의 저장 유닛 그룹을 포함하고, 각각의 저장 유닛 그룹은 복수의 저장 주소를 포함하며,
상기 캐시 유닛은 또한,
상기 제1 데이터 중의 각 행의 데이터를 상이한 저장 유닛 그룹의 상이한 저장 주소에 각각 작성하여 상기 제1 데이터를 상기 제2 데이터로 저장하는 것을 특징으로 하는 매트릭스 변환 장치. - 제2항에 있어서,
상기 제2 시프팅 유닛은 또한,
상기 제2 데이터 중의, 상이한 저장 유닛 그룹의 동일한 저장 주소에 저장된 데이터를 각각 판독하여 상기 제2 데이터 중의 상응한 행의 데이터로 하고;
상기 제2 데이터 중의 각각의 행의 데이터에 대해 상기 제2 순환 시프팅을 진행하여 상기 변환 후의 매트릭스 데이터 중의 상응한 행의 데이터를 생성하는 것을 특징으로 하는 매트릭스 변환 장치. - 제3항에 있어서,
상기 제1 시프팅 유닛은 또한, 상기 매트릭스 데이터 중의 제i 행 데이터를 오른쪽으로 i-1개 단위 순환 시프팅시켜 상기 제1 데이터를 생성하고, i는 자연수이며;
상기 제2 시프팅 유닛은 또한, 상기 제2 데이터 중의 제i 행 데이터를 외쪽으로 i-1개 단위 순환 시프팅시켜 상기 변환 후의 매트릭스 데이터를 생성하는 것을 특징으로 하는 매트릭스 변환 장치. - 제4항에 있어서,
상기 매트릭스 데이터로 표시되는 매트릭스는 n행 및 m열을 포함하고, n 및 m은 각각 자연수이며,
상기 캐시 유닛은 또한,
상기 제1 데이터 중의 제1 행 데이터 중의 m개 열의 데이터 중의 제j 데이터를 상기 복수의 저장 유닛 그룹 중의 제j 저장 유닛 그룹의 제j 저장 주소에 각각 작성하고, j는 1보다 크거나 같고 m보다 작거나 같은 자연수이며;
상기 제1 데이터 중의 제i 행 데이터 중의 m개 열의 데이터 중의 제j 데이터를 상기 복수의 저장 유닛 그룹 중의 제j 저장 유닛 그룹의 제1 저장 주소 및 제2 저장 주소에 각각 작성하고, i는 2보다 크거나 같고 n보다 작거나 같은 자연수이며,
j가 1보다 크거나 같고 i-1보다 작거나 같을 경우, 상기 제1 저장 주소는 제m+j-i+1 저장 주소이고;
j가 i보다 크거나 같고 m보다 작거나 같을 경우, 상기 제2 저장 주소는 제j-i+1 저장 주소인 것을 특징으로 하는 매트릭스 변환 장치. - 삭제
- 제5항에 있어서,
상기 캐시 유닛은 또한,
상기 제1 매트릭스의 상기 제1 데이터를 제1 저장 주소로부터 시작하여 상기 캐시 유닛에 작성하여 상기 제1 매트릭스의 상기 제1 데이터를 상기 제1 매트릭스의 상기 제2 데이터로 저장하고;
상기 제2 매트릭스의 상기 제1 데이터를 제k+1 저장 주소로부터 시작하여 상기 캐시 유닛에 작성하여 상기 제2 매트릭스의 상기 제1 데이터를 상기 제2 매트릭스의 상기 제2 데이터로 저장하며, k는 p보다 크거나 같은 자연수인 것을 특징으로 하는 매트릭스 변환 장치. - 제7항에 있어서,
상기 제2 시프팅 유닛은 또한,
상기 캐시 유닛으로부터 상기 제1 매트릭스의 상기 제2 데이터를 판독하고, 상기 제1 매트릭스의 상기 제2 데이터에 대해 상기 제2 순환 시프팅을 진행하여 변환 후의 제1 매트릭스 데이터를 생성하며;
상기 캐시 유닛으로부터 상기 제2 매트릭스의 상기 제2 데이터를 판독하고, 상기 제2 매트릭스의 상기 제2 데이터에 대해 상기 제2 순환 시프팅을 진행하여 변환 후의 제2 매트릭스 데이터를 생성하며;
상기 변환 후의 제1 매트릭스 데이터와 상기 변환 후의 제2 매트릭스 데이터를 결합하여 상기 변환 후의 매트릭스 데이터를 생성하는 것을 특징으로 하는 매트릭스 변환 장치. - 제1항에 있어서,
상기 캐시 유닛은 복수의 저장 유닛 그룹을 포함하고, 상기 복수의 저장 유닛 그룹 중의 s개의 저장 유닛 그룹마다 한 그룹의 저장 유닛 그룹으로 나뉘며, 각 그룹의 저장 유닛 그룹은 복수의 저장 주소를 포함하고, 상기 복수의 저장 주소 중의 t개의 저장 주소마다 한 그룹의 저장 주소로 나뉘며,
상기 캐시 유닛은 또한,
상기 제1 데이터 중의 t개 행마다 그의 데이터 중의 복수의 그룹의 데이터를 상이한 그룹의 저장 유닛 그룹의 상이한 그룹의 저장 주소에 각각 작성하여 상기 제1 데이터를 상기 제2 데이터로 저장하고, 상기 복수의 그룹의 데이터 중의 각 그룹의 데이터는 s × t개의 데이터를 포함하며, s 및 t는 자연수인 것을 특징으로 하는 매트릭스 변환 장치. - 제9항에 있어서,
상기 제2 시프팅 유닛은 또한,
상기 제2 데이터 중의, 상이한 그룹의 저장 유닛 그룹의 동일한 그룹의 저장 주소에 저장된 각 그룹의 데이터를 각각 판독하여 상기 제2 데이터 중의 상응한 행의 데이터로 하고;
상기 제2 데이터 중의 각각의 행의 데이터에 대해 상기 제2 순환 시프팅을 진행하여 상기 변환 후의 매트릭스 데이터 중의 상응한 행의 데이터를 생성하는 것을 특징으로 하는 매트릭스 변환 장치. - 제10항에 있어서,
상기 제1 시프팅 유닛은 또한, 상기 매트릭스 데이터 중의 각 행의 데이터 중의 s개의 데이터마다 한 그룹의 데이터로 나누고, 상기 매트릭스 데이터 중의 제i 행 데이터 중의 각 그룹의 데이터를 오른쪽으로 i-1 × s개 단위 순환 시프팅하여 상기 제1 데이터를 생성하고, i 및 s는 자연수이며;
상기 제2 시프팅 유닛은 또한, 상기 제2 데이터 중의 제i 행 데이터 중의 각 그룹의 데이터를 왼쪽으로 i-1 × s개 단위 순환 시프팅하는 것을 특징으로 하는 매트릭스 변환 장치. - 제1항 내지 제5항 및 제7항 내지 제11항 중 어느 한 항에 있어서,
상기 변환 후의 매트릭스 데이터로 표시되는 매트릭스는 상기 매트릭스 데이터로 표시되는 매트릭스의 전치 매트릭스인 것을 특징으로 하는 매트릭스 변환 장치. - 데이터 처리 시스템으로서,
입력 출력 인터페이스로부터 상기 매트릭스 데이터를 수신하고, 변환 후의 매트릭스 데이터를 딥러닝 처리 모듈에 전송하는 제1항 내지 제5항 및 제7항 내지 제11항 중 어느 한 항에 따른 매트릭스 변환 장치;
상기 매트릭스 변환 장치에 전기적으로 연결되고, 상기 매트릭스 데이터를 상기 매트릭스 변환 장치에 전송하는 상기 입력 출력 인터페이스; 및
상기 매트릭스 변환 장치에 전기적으로 연결되고, 딥러닝 처리 모델에 기반하여 상기 변환 후의 매트릭스 데이터를 연산 처리하는 상기 딥러닝 처리 모듈을 포함하는 데이터 처리 시스템. - 제13항에 있어서,
상기 딥러닝 처리 모듈은 또한, 상기 처리된 결과를 다른 매트릭스 데이터로서 상기 매트릭스 변환 장치에 전송하고;
상기 매트릭스 변환 장치는 또한, 상기 다른 매트릭스 데이터에 기반하여 변환 후의 다른 매트릭스 데이터를 생성하고, 상기 변환 후의 다른 매트릭스 데이터를 상기 입력 출력 인터페이스에 전송하는 것을 특징으로 하는 데이터 처리 시스템. - 제13항에 있어서,
상기 딥러닝 처리 모듈은 상기 입력 출력 인터페이스에 전기적으로 연결되고, 상기 처리된 결과를 상기 입력 출력 인터페이스에 전송하는 것을 특징으로 하는 데이터 처리 시스템. - 시스템 온 칩(SoC) 구조에 의해 수행되는 매트릭스 변환 방법으로서,
매트릭스 데이터를 수신하고, 상기 매트릭스 데이터에 대해 제1 순환 시프팅을 진행하여 제1 데이터를 생성하는 단계;
상기 제1 데이터 중의 각 행의 데이터를 상기 행의 데이터 중의 각각의 데이터의 배열순서와 상이한 배열순서로 캐시 유닛에 작성하여 상기 제1 데이터를 상기 캐시 유닛에 제2 데이터로 저장하는 단계; 및
상기 캐시 유닛으로부터 상기 제2 데이터를 판독하고, 상기 제2 데이터에 대해 제2 순환 시프팅을 진행하여 변환 후의 매트릭스 데이터를 생성하는 단계를 포함하고,
상기 제1 데이터를 생성하는 단계에서는
상기 매트릭스 데이터로 표시되는 매트릭스를 p행을 포함하는 제1 매트릭스 및 q행을 포함하는 제2 매트릭스로 분할하거나, p열을 포함하는 제1 매트릭스 및 q열을 포함하는 제2 매트릭스로 분할하고, p 및 q는 각각 자연수이며;
상기 제1 매트릭스의 매트릭스 데이터에 대해 상기 제1 순환 시프팅을 진행하여 상기 제1 매트릭스의 상기 제1 데이터를 생성하고;
상기 제2 매트릭스의 매트릭스 데이터에 대해 상기 제1 순환 시프팅을 진행하여 상기 제2 매트릭스의 상기 제1 데이터를 생성하는 매트릭스 변환 방법. - 제16항에 있어서,
상기 캐시 유닛은 복수의 저장 유닛 그룹을 포함하고, 각각의 저장 유닛 그룹은 복수의 저장 주소를 포함하며,
상기 제1 데이터를 상기 제2 데이터로 저장하는 단계는,
상기 제1 데이터 중의 각 행의 데이터를 상이한 저장 유닛 그룹의 상이한 저장 주소에 각각 작성하는 단계를 포함하는 것을 특징으로 하는 매트릭스 변환 방법. - 제17항에 있어서,
상기 변환 후의 매트릭스 데이터를 생성하는 단계는,
상기 제2 데이터 중의, 상이한 저장 유닛 그룹의 동일한 저장 주소에 저장된 데이터를 각각 판독하여 상기 제2 데이터 중의 상응한 행의 데이터로 하는 단계; 및
상기 제2 데이터 중의 각각의 행의 데이터에 대해 상기 제2 순환 시프팅을 진행하여 상기 변환 후의 매트릭스 데이터 중의 상응한 행의 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 매트릭스 변환 방법. - 제18항에 있어서,
상기 매트릭스 데이터 중의 제i 행 데이터를 오른쪽으로 i-1개 단위 순환 시프팅시켜 상기 제1 데이터를 생성하고, i는 자연수이며;
상기 제2 데이터 중의 제i 행 데이터를 외쪽으로 i-1개 단위 순환 시프팅시켜 상기 변환 후의 매트릭스 데이터를 생성하는 것을 특징으로 하는 매트릭스 변환 방법. - 제19항에 있어서,
상기 매트릭스 데이터로 표시되는 매트릭스는 n행 및 m열을 포함하고, n 및 m은 각각 자연수이며,
상기 제1 데이터를 상기 제2 데이터로 저장하는 단계는,
상기 제1 데이터 중의 제1 행 데이터 중의 m개 열의 데이터 중의 제j 데이터를 상기 복수의 저장 유닛 그룹 중의 제j 저장 유닛 그룹의 제j 저장 주소에 각각 작성하는 단계 - j는 1보다 크거나 같으며 m보다 작거나 같은 자연수임 - ; 및
상기 제1 데이터 중의 제i 행 데이터 중의 m개 열의 데이터 중의 제j 데이터를 상기 복수의 저장 유닛 그룹 중의 제j 저장 유닛 그룹의 제1 저장 주소 및 제2 저장 주소에 각각 작성하는 단계 - i는 2보다 크거나 같고 n보다 작거나 같은 자연수임 - ;를 포함하고,
j가 1보다 크거나 같고 i-1보다 작거나 같을 경우, 상기 제1 저장 주소는 제m+j-i+1 저장 주소이고;
j가 i보다 크거나 같고 m보다 작거나 같을 경우, 상기 제2 저장 주소는 제j-i+1 저장 주소인 것을 특징으로 하는 매트릭스 변환 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910559362.7 | 2019-06-26 | ||
CN201910559362.7A CN112149049A (zh) | 2019-06-26 | 2019-06-26 | 用于变换矩阵的装置和方法、数据处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210001872A KR20210001872A (ko) | 2021-01-06 |
KR102306252B1 true KR102306252B1 (ko) | 2021-09-28 |
Family
ID=68848035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200003639A KR102306252B1 (ko) | 2019-06-26 | 2020-01-10 | 매트릭스 변환 장치, 방법 및 데이터 처리 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11520563B2 (ko) |
EP (1) | EP3757821A1 (ko) |
JP (1) | JP7000635B2 (ko) |
KR (1) | KR102306252B1 (ko) |
CN (1) | CN112149049A (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116910437B (zh) * | 2023-09-12 | 2023-12-12 | 腾讯科技(深圳)有限公司 | 矩阵转置装置、方法、ai处理器及计算机设备 |
CN118626762A (zh) * | 2024-08-15 | 2024-09-10 | 芯动微电子科技(武汉)有限公司 | 一种矩阵读取写出方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090031089A1 (en) * | 2007-07-23 | 2009-01-29 | Nokia Corporation | Transpose Memory And Method Thereof |
US20180336163A1 (en) * | 2017-05-17 | 2018-11-22 | Google Llc | Low latency matrix multiply unit |
CN109150196A (zh) | 2017-06-27 | 2019-01-04 | 华为技术有限公司 | 信息处理的方法、装置和通信设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5719875A (en) * | 1996-06-11 | 1998-02-17 | Lucent Technologies Inc. | Systematic convolution interleavers and deinterleavers |
US8200594B1 (en) | 2008-09-10 | 2012-06-12 | Nvidia Corporation | System, method, and computer program product for accelerating a game artificial intelligence process |
US20110264723A1 (en) * | 2010-04-21 | 2011-10-27 | Samsung Electronics Co., Ltd. | System and method for successive matrix transposes |
JP6078923B2 (ja) * | 2011-10-14 | 2017-02-15 | パナソニックIpマネジメント株式会社 | 転置演算装置とその集積回路、および転置処理方法 |
CN108431832B (zh) | 2015-12-10 | 2022-09-13 | 渊慧科技有限公司 | 利用外部存储器扩增神经网络 |
US9952831B1 (en) * | 2017-02-16 | 2018-04-24 | Google Llc | Transposing in a matrix-vector processor |
US10909447B2 (en) * | 2017-03-09 | 2021-02-02 | Google Llc | Transposing neural network matrices in hardware |
JP7114622B2 (ja) * | 2017-05-17 | 2022-08-08 | グーグル エルエルシー | ハードウェアにおける行列乗算の実行 |
US11328037B2 (en) * | 2017-07-07 | 2022-05-10 | Intel Corporation | Memory-size- and bandwidth-efficient method for feeding systolic array matrix multipliers |
-
2019
- 2019-06-26 CN CN201910559362.7A patent/CN112149049A/zh active Pending
- 2019-12-10 EP EP19214801.3A patent/EP3757821A1/en active Pending
- 2019-12-11 US US16/711,277 patent/US11520563B2/en active Active
-
2020
- 2020-01-10 JP JP2020002746A patent/JP7000635B2/ja active Active
- 2020-01-10 KR KR1020200003639A patent/KR102306252B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090031089A1 (en) * | 2007-07-23 | 2009-01-29 | Nokia Corporation | Transpose Memory And Method Thereof |
US20180336163A1 (en) * | 2017-05-17 | 2018-11-22 | Google Llc | Low latency matrix multiply unit |
CN109150196A (zh) | 2017-06-27 | 2019-01-04 | 华为技术有限公司 | 信息处理的方法、装置和通信设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20210001872A (ko) | 2021-01-06 |
EP3757821A1 (en) | 2020-12-30 |
US11520563B2 (en) | 2022-12-06 |
CN112149049A (zh) | 2020-12-29 |
US20200412382A1 (en) | 2020-12-31 |
JP2021005358A (ja) | 2021-01-14 |
JP7000635B2 (ja) | 2022-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201913460A (zh) | 芯片裝置及相關産品 | |
US20200159810A1 (en) | Partitioning sparse matrices based on sparse matrix representations for crossbar-based architectures | |
CN110796235B (zh) | 卷积神经网络Valid卷积的向量化实现方法 | |
KR102306252B1 (ko) | 매트릭스 변환 장치, 방법 및 데이터 처리 시스템 | |
CN102053948A (zh) | 在单指令多数据多核处理器架构上转置矩阵的方法和系统 | |
Li et al. | Faster tensor train decomposition for sparse data | |
CN109416755B (zh) | 人工智能并行处理方法、装置、可读存储介质、及终端 | |
US11074214B2 (en) | Data processing | |
US20220391471A1 (en) | Method, circuit, and soc for performing matrix multiplication operation | |
CN108897716A (zh) | 通过存储器读写操作来缩减计算量的数据处理装置及方法 | |
CN108491924B (zh) | 一种面向人工智能计算的神经网络数据串行流水处理装置 | |
JP2024028901A (ja) | ハードウェアにおけるスパース行列乗算 | |
US11210105B1 (en) | Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction | |
US11995569B2 (en) | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning | |
US11874898B2 (en) | Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal | |
CN106909320B (zh) | 一种多维数据扩充传输的方法、装置以及系统 | |
CN111221501B (zh) | 一种用于大数乘法的数论变换电路 | |
WO2021168644A1 (zh) | 数据处理装置、电子设备和数据处理方法 | |
CN116579274A (zh) | 一种张量运算加速芯片的自动设计方法 | |
CN111814675B (zh) | 基于fpga支持动态分辨率的卷积神经网络特征图组装系统 | |
CN114998090A (zh) | 一种光束法平差算法数字图像处理的加速方法及系统 | |
CN112905954A (zh) | 一种利用fpga bram的cnn模型卷积运算加速计算方法 | |
CN114168901B (zh) | 一种矩阵类乘法向量化计算方法 | |
CN112818179B (zh) | 基于Hybrid存储格式的图遍历访存优化方法、系统及电子设备 | |
RU2430419C1 (ru) | Устройство для декорреляции цифровых видеоизображений с использованием целочисленных ортогональных декоррелирующих матриц в системах компрессии видеоизображений |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |