KR102384587B1 - 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기 - Google Patents

하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기 Download PDF

Info

Publication number
KR102384587B1
KR102384587B1 KR1020200107051A KR20200107051A KR102384587B1 KR 102384587 B1 KR102384587 B1 KR 102384587B1 KR 1020200107051 A KR1020200107051 A KR 1020200107051A KR 20200107051 A KR20200107051 A KR 20200107051A KR 102384587 B1 KR102384587 B1 KR 102384587B1
Authority
KR
South Korea
Prior art keywords
uncompressed
data group
compressed
dimension direction
array
Prior art date
Application number
KR1020200107051A
Other languages
English (en)
Other versions
KR20220026251A (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 오픈엣지테크놀로지 주식회사
Priority to KR1020200107051A priority Critical patent/KR102384587B1/ko
Priority to PCT/KR2020/015477 priority patent/WO2022045448A1/ko
Publication of KR20220026251A publication Critical patent/KR20220026251A/ko
Application granted granted Critical
Publication of KR102384587B1 publication Critical patent/KR102384587B1/ko

Links

Images

Classifications

    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

데이터 연산부 출력한 출력어레이를 압축하여 압축된 출력어레이를 생성하는 압축부 및 상기 압축된 출력어레이로부터 입력어레이를 복원하고, 상기 복원한 입력어레이를 데이터 연산부에게 제공하는 디코딩부를 포함하는 하드웨어 가속기를 공개한다. 상기 입력어레이의 구성요소들은 미리 결정된 디멘젼 방향에 우선순위를 두어 상기 데이터 연산부에게 순차적으로 입력되도록 되어 있다. 그리고 상기 압축부는, 상기 압축된 출력어레이를 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향에 우선순위를 두어 순차적으로 생성하도록 되어 있다.

Description

하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기{Method for compressing output data of a hardware accelerator, method for decompressing input date to a hardware accelerator from memory, and a hardware accelerator for the same}
본 발명은 컴퓨팅 기술에 관한 것으로서, 하드웨어 가속기의 출력 데이터를 효과적으로 압축하고 입력데이터를 효과적으로 디코딩하는 기술에 관한 것이다.
본 발명의 대상인 하드웨어 가속기의 일종인 신경망 가속기의 구조에 대한 예시를 시작으로 본 발명에 대한 설명을 시작한다.
<신경망>
신경망은 인공지능을 구현하는 기술의 하나로서 이용되는 잘 알려진 기술이다.
도 1은 본 발명의 이해를 돕기 위해 제시한 신경망의 일부 구성을 개념적으로 나타낸 것이다.
일 실시예에 따른 신경망(600)은 복수 개의 레이어들을 포함할 수 있다. 개념적으로, 상기 복수 개의 레이어들 중 제1레이어(610)는 소위 피쳐맵 또는 액티베이션이라고 지칭되는 출력데이터(611)를 출력할 수 있다. 그리고 상기 제1레이어(610)에서 출력한 출력데이터(611)는 제1레이어(610)보다 하류에 있는 제2레이어(620)의 입력데이터로서 제공될 수 있다.
각각의 상기 레이어는, 입력되는 입력데이터를 소정의 규칙에 따라 출력데이터로 변환하는 데이터 변환 기능모듈 또는 데이터 연산부로서 간주될 수도 있다. 예컨대 제1레이어(610)는 제1레이어(610)에 입력되는 입력데이터(609)를 출력데이터(611)로 변환하는 데이터 변환 기능모듈로서 간주될 수도 있다. 이러한 데이터 변환 기능모듈을 구현하기 위하여, 제1레이어(610)의 구조가 정의되어야 한다. 상기 제1레이어(610)의 구조에 맞추어 제1레이어(610)에 입력되는 입력데이터(609)가 저장되는 입력변수들이 정의되어야 하고, 그리고 제1레이어(610)로부터 출력되는 출력데이터(611)를 나타내는 출력변수들이 정의되어야 한다. 상기 제1레이어(610)는 그 기능을 수행하기 위하여 한 세트의 가중치들(612)을 이용할 수 있다. 상기 한 세트의 가중치들(612)은 상기 입력변수들로부터 상기 출력변수들을 산출하기 위해 상기 입력변수들에게 곱해지는 값들일 수 있다. 상기 한 세트의 가중치(612)들은 신경망(600)이 갖는 다양한 파라미터들 중 하나일 수 있다. 상기 한 세트의 가중치(612)는 결정되어 있는 레이어에 대한 상수일 수 있는데, 실제 구현예에서는 상기 한 세트의 가중치(612)는 상기 레이어 외부의 메모리에 저장되어 있다가, 상기 레이어가 동작할 때에 상기 메모리로부터 상기 레이어에게 입력될 수 있다. 즉, 구현예에 따라서는 상기 한 세트의 가중치(612) 역시 상기 레이어에 입력되는 데이터로 취급될 수도 있다.
신경망(600) 중 예컨대 제1레이어(610)에 입력되는 입력데이터(609)로부터 제1레이어(610)로부터 출력되는 출력데이터(611)를 산출하기 위한 연산과정은 소프트웨어로서 구현될 수도 있지만 하드웨어 또는 하드웨어 및 펌웨어로서 구현될 수도 있다.
<신경망 연산의 하드웨어 구현>
도 2는 신경망의 기능을 하드웨어로 구현한 신경망 가속부를 포함하는 신경망 연산장치 및 이를 포함하는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.
컴퓨팅 장치(1)는, DRAM(Dynamic Random Access Memory)(10), 신경망 연산장치(neural network operating device)(100), DRAM(10)와 신경망 연산장치(100)를 연결하는 버스(700), 및 버스(700)에 연결된 타 하드웨어들(99)을 포함할 수 있다.
그 밖에 컴퓨팅 장치(1)는 도시되지 않은 전원부, 통신부, 메인 프로세서, 사용자 인터페이스, 저장부, 및 주변 장치부들을 더 포함할 수 있다. 버스(700)는 신경망 연산장치(100)와 타 하드웨어들(99)이 공유할 수도 있다.
신경망 연산장치(100)는 DMA부(Direct Memory Access part)(20), 제어부(40), 내부 메모리(30), 압축부(620), 디코딩부(630), 및 신경망 가속부(60)를 포함할 수 있다.
본 명세서에서 디코딩은 압축해제라고 지칭될 수도 있다. 따라서 디코딩은 영문으로는 decoding 또는 decompress라고 표현될 수 있다.
또한 본 명세서에서 압축은 인코딩이라고 표현될 수도 있다. 따라서 압축은 compress 또는 encoding으로 번역될 수 있다.
신경망 가속부(60)가 동작하기 위해서는 입력어레이(310)가 신경망 가속부(60)의 입력데이터로서 제공되어야 한다.
일 실시예에서, 특정 연산 시구간에서 신경망 가속부(60)는 신경망의 모든 레이어의 기능을 수행하는 것이 아니라, 특정 한 개의 레이어만의 기능을 수행하도록 되어 있을 수 있다.
입력어레이(310)는 다차원의 어레이형태의 데이터의 집합일 수 있다. 입력어레이(310)는 예컨대 도 1에 설명한 입력데이터(609) 및 한 세트의 가중치(612)를 포함할 수 있다. 본 명세서에서 입력어레이는 입력데이터라고 지칭될 수도 있다.
신경망 가속부(60)에게 제공되는 입력어레이(310)는 내부 메모리(30)로부터 출력되는 것일 수 있다.
일 실시예에서 상기 내부 메모리(30)는 상기 신경망 가속부(60)가 구현된 웨이퍼와 동일한 웨이퍼 상에 제공된 것일 수 있다. 예컨대 도 2에 나타낸 신경망 연산장치(100)로 표현된 블록 내부의 기능모듈들은 모두 동일한 웨이퍼 상에서 구현된 것일 수도 있다.
내부 메모리(30)는 입력어레이(310) 중 적어도 일부 또는 전부를 컴퓨팅 장치의 버스(700)를 통해 DRAM(10)으로부터 제공받을 수 있다. 이때, DRAM(10)에 저장되어 있는 데이터를 내부 메모리(30)로 이동시키기 위하여, 제어부(40)와 DMA부(20)가 내부 메모리(30) 및 DRAM(10)을 제어할 수도 있다.
신경망 가속부(60)가 동작하면 입력어레이(310)를 기초로 출력어레이(330)가 생성될 수 있다.
출력어레이(330)는 다차원의 어레이형태의 데이터의 집합일 수 있다. 본 명세서에서 출력어레이는 출력데이터라고 지칭될 수도 있다.
생성된 출력어레이(330)는 우선 내부 메모리(30)에 저장될 수 있다.
내부 메모리(30)에 저장된 출력어레이(330)는 제어부(40) 및 DMA부(20)의 제어에 의해 DRAM(10)에 기록될 수 있다.
제어부(40)는 DMA부(20), 내부 메모리(30), 및 신경망 가속부(60)의 동작을 총괄하여 제어할 수 있다.
일 구현예에서, 신경망 가속부(60)는 제1시구간 동안에는 예컨대 도 1에 나타낸 제1레이어(610)의 기능을 수행하고, 제2시구간 동안에는 예컨대 도 1에 나타낸 제2레이어(620)의 기능을 수행할 수 있다.
일 실시예에서, 도 2에 나타낸 신경망 가속부(60) 및 이와 연관된 기능모듈들은 신경망 연산장치(100) 내에서 복수 개 제공되어 각각 제어부(40)에 의해 요청된 연산을 병렬적으로 수행할 수도 있다.
일 구현예에서, 신경망 가속부(60)는 출력어레이(330)의 모든 데이터를 한 번에 출력하지 않고 시간에 따라 주어진 순서에 따라 순차적으로 출력할 수 있다.
압축부(620)는 출력된 출력어레이(330)의 데이터 량을 감소시키도록 출력어레이(330)를 압축하여 내부 메모리(30)에 제공할 수 있다. 결국, 출력어레이(330)는 압축된 상태로 DRAM(10)에 저장될 수 있다.
신경망 가속부(60)에 입력되는 입력어레이(310)는 DRAM(10)으로부터 읽어 들인 것일 수 있다. DRAM(10)으로부터 읽어 들인 데이터는 압축된 것일 수 있으며, 상기 압축된 데이터는 신경망 가속부(60)에 제공되기 전에 디코딩부(630)에 의해 디코딩되어 입력어레이(310)로 전환될 수 있다.
<하드웨어를 이용한 신경망 연산의 특징>
도 2에 나타낸 신경망 가속부(60)가 제1시구간 동안 그 입력어레이(310)로부터 출력어레이(330)를 생성하기 위해 연산 작업을 수행하는 동안, 내부 메모리(30)는 DRAM(10)으로부터 새로운 데이터를 획득하는 것이 바람직하다.
즉, 예컨대, 신경망 가속부(60)가 제1시구간 동안 도 1의 입력어레이(609) 및 제1세트의 가중치(612)를 입력받아 제1레이어(610)의 기능을 수행할 수 있다.
그리고 신경망 가속부(60)가 제2시구간 동안 도 1의 입력어레이(611) 및 제2세트의 가중치(622)를 입력받아 제2레이어(620)의 기능을 수행할 수 있다.
이때, 신경망 가속부(60)가 제1레이어(610)의 기능을 수행하는 동안, 내부 메모리(30)는 입력어레이(611) 및 제2세트의 가중치(622)를 DRAM(10)으로부터 획득하는 것이 바람직하다.
도 3은 도 2의 출력어레이(330)의 구조를 도시화한 것이다.
출력어레이(330)는 다차원의 구조를 갖는 데이터의 집합일 수 있다. 도 3에서는 편의를 위하여 2차원 구조를 갖는 데이터인 것으로 예시하였으나, 이후 설명되는 본 발명의 개념은 출력어레이(330)가 3차원 이상의 구조를 갖는 경우에도 그대로 적용될 수 있다.
일 구현예에서, 출력어레이(330)를 여러 개의 비압축데이터그룹(NCG)으로 분할하여 정의하고, 이 중 제1비압축데이터그룹만을 먼저 내부 메모리(30)에 기록하고, 그 다음, 내부 메모리(30)에 기록된 상기 제1비압축데이터그룹은 DRAM(10)으로 이동된 후 내부 메모리(30)에서 삭제될 수 있다. 그 다음, 출력어레이(330) 중 제2비압축데이터그룹만을 먼저 내부 메모리(30)에 기록하고, 그 다음, 내부 메모리(30)에 기록된 상기 제2비압축데이터그룹은 DRAM(10)으로 이동된 후 내부 메모리(30)에서 삭제될 수 있다. 이러한 방식은 예컨대, 내부 메모리(30)의 크기가 한 세트의 출력어레이(330)를 모두 저장하기에 충분히 크지 않은 경우에 채택될 수 있다.
또는 출력어레이(330) 중 임의의 비압축데이터그룹(NCG)을 내부 메모리(30)에 기록할 때에, 상기 임의의 비압축데이터그룹(NCG)을 그대로 기록하는 대신, 상기 임의의 비압축데이터그룹(NCG)을 먼저 데이터 압축하여 얻은 압축데이터그룹(CG)을 내부 메모리(30)에 기록할 수 있다. 그 다음 내부 메모리(30)에 기록된 압축데이터그룹(CG)은 DRAM(10)으로 이동될 수 있다.
상기 각 비압축데이터그룹을 압축하여 상기 각각의 압축데이터그룹을 생성하기 위하여 도 2에 도시하지 않은 별도의 데이터 버퍼가 제공될 수도 있다.
도 4a는 일부 실시예에서 발생할 수 있는 제약조건으로서 본 발명에서 고려하는 일부 제약조건을 설명하기 위한 다이어그램이다.
도 4a의 (a)를 살펴보면, 제1시구간(T1)에서 신경망 가속부(60)는 레이어 k (610)의 기능을 수행하도록 되어 있을 수 있다. 이때, 신경망 가속부(60)는 출력어레이(330)를 출력할 수 있는데, 출력데이터(330)의 각 요소들을 한 번에 출력하지 않고, 도 4a에 나타낸 인덱스 1, 2, 3, 4, ...., 15, 16의 순서로(도 4a의 (a)의 지그재그 화살표 참고) 출력할 수 있다. 상기 제1시구간(T1)에 출력된 출력어레이(330)는 DRAM(10)에 저장될 수 있다.
그리고 도 4a의 (b)를 살펴보면, 제2시구간(T2)에서 신경망 가속부(60)는 레이어 k+1 (620)의 기능을 수행하도록 되어 있을 수 있다. 이를 위하여 신경망 가속부(60)는 DRAM(10)에 기록되어 있던 상기 출력어레이(330)를 입력데이터로서 요구할 수 있다. 이때, 신경망 가속부(60)가 출력어레이(330)의 구성요소들을 인덱스 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16의 순서(도 4a의 (b)의 지그재그 화살표 참고)로 입력받아야 하는 제약이 존재할 수 있다.
도 4b는 도 4a와는 다른 조건에서의 데이터 입출력 특성을 설명하는 도면이다.
도 4b의 (a)를 살펴보면, 신경망 가속부(60)가 출력어레이(330)를 출력할 때에 도 4b에 나타낸 인덱스 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16의 순서로(도 4b의 (a)의 지그재그 화살표 참고) 출력할 수 있다.
그리고 도 4b의 (b)를 살펴보면, 제2시구간(T2)에서 신경망 가속부(60)가 출력어레이(330)의 구성요소들을 인덱스 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16의 순서(도 4b의 (b)의 지그재그 화살표 참고)로 입력받을 수 있다.
도 5a 내지 도 5d는 일 실시예에 따라 신경망 가속부(60)의 출력어레이(330)를 여러 그룹으로 분할하고, 분할된 각 그룹의 데이터를 압축하여 저장하는 방법을 나타낸 것이다.
도 5a를 참조하여 설명하면, 제1시구간(T1)에서 신경망 가속부(60)는 레이어 k (610)의 기능을 수행하도록 되어 있을 수 있다. 이때, 신경망 가속부(60)는 출력어레이(330) 중 제1비압축데이터그룹(NCG1)에 속한 인덱스 1, 5, 9, 13, 14, 2, 6, 10, 및 14에 해당하는 구성요소들은 순차적으로 출력하여 제1비압축데이터그룹(NCG1)의 출력을 완료할 수 있다. 그 다음, 압축부(620)는 완성된 제1비압축데이터그룹(NCG1)을 압축하여 제1압축데이터그룹(CG1)을 생성할 수 있다. 제1압축데이터그룹(CG1)은 내부 메모리(30)에 잠시 저장되었다가 DRAM(10)으로 이동할 수 있다.
압축부(620)는 출력 데이터 버퍼를 포함할 수 있다. 또는 상기 출력 데이터 버터는 압축부(620)에 외부에 별도의 기능모듈로서 제공될 수도 있다.
그 다음, 도 5b를 참조하여 설명하면, 제1시구간(T1)에서, 신경망 가속부(60)는 출력어레이(330) 중 제2비압축데이터그룹(NCG2)에 속한 인덱스 3, 7, 11, 15, 4, 8, 12, 및 16에 해당하는 구성요소들은 순차적으로 출력하여 제2비압축데이터그룹(NCG2)의 출력을 완료할 수 있다. 그 다음, 압축부(620)는 완성된 제2비압축데이터그룹(NCG2)을 압축하여 제2압축데이터그룹(CG2)을 생성할 수 있다. 제2압축데이터그룹(CG2)은 내부 메모리(30)에 잠시 저장되었다가 DRAM(10)으로 이동할 수 있다.
이제, 도 5c를 참조하여 설명하면, 제2시구간(T2)에서 신경망 가속부(60)는 레이어 k+1 (620)의 기능을 수행하도록 되어 있을 수 있다. 이때, 상술한 바와 같이, 레이어 k+1 (620)의 기능을 수행하는 신경망 가속부(60)가 인덱스 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16의 순서로 입력받아야 한다는 제약이 있을 수 있다.
이때, DRAM(10)으로부터 제1압축데이터그룹(CG1)을 읽어 들여 내부 메모리(30)에 저장한 다음, 내부 메모리(30)에 저장된 제1압축데이터그룹(CG1)을 디코딩하여 제1비압축데이터그룹(NCG1)을 생성할 수 있다.
이때, 도 5d에 나타낸 것과 같이, 만일 제1비압축데이터그룹(NCG1)의 각 구성요소가 생성되는 순서가 동작클럭(6301)에 따라 인덱스 14, 10, 6, 2, 13, 9, 5, 1의 순서로 생성된다면, 인덱스 1의 데이터가 신경망 가속부(60)에 입력되기 위해서는 제1압축데이터그룹(CG1)의 디코딩을 시작한 시점으로부터 총 8개의 클럭들을 기다려야 한다. 이렇게 되면 신경망 가속부(60)에 데이터를 입력하는 과정에서 레이턴시가 발생하게 된다는 문제가 있다.
상술한 내용은 본 발명의 발명자가 본 발명을 창작하기 위한 배경지식으로서 알고 있던 것으로서, 상술한 내용 모두가 본 특허출원의 출원 시점에서 불특정 다수에게 알려진 것으로 간주 되어서는 안 된다. 또한 상술한 내용의 적어도 일부는 본 발명의 실시예들을 구성할 수 있다.
본 발명에서는 상술한 문제점을 해결하기 위하여 하드웨어 가속기의 데이터 연산부가 출력하는 출력어레이의 요소들을 압축하는 방법, 데이터 연산부에 입력되어야 하는 압축된 데이터들을 디코딩하는 방법을 제공하고자 한다.
상술한 문제를 해결하기 위해서는 압축된 데이터를 디코딩할 때에, 데이터 연산부에 입력되어야 하는 인덱스의 순서대로 디코딩이 이루어져야 한다. 그런데 디코딩은 인코딩(압축) 기술에 대응하여 구현되므로 데이터 연산부가 출력하는 출력어레이를 압축하는 기술 또한 본 발명의 대상이다.
본 발명의 일 관점에 따라, 데이터 연산부로부터 출력되는 출력어레이에 포함된 비압축구성요소들을 압축부가 압축할 수 있다. 이때, 상기 출력어레이는 한 개 또는 복수 개의 그룹들, 즉 한 개 또는 복수 개의 비압축데이터그룹들로 분할되어 각 비압축데이터그룹별로 데이터 처리가 이루어질 수 있다. 그리고 상기 압축부는 상기 각각의 비압축데이터그룹들을 압축하여 이에 대응하는 각각의 압축데이터그룹을 생성할 수 있다.
이하, 설명의 편의를 위하여 본 명세서에서 상기 압축데이터그룹을 구성하는 복수 개의 구성요소들을 각각 압축구성요소라고 지칭할 수 있다. 그리고 상기 비압축데이터그룹을 구성하는 복수 개의 구성요소들 각각을 비압축구성요소라고 지칭할 수 있다. 마찬가지로, 상기 데이터 연산부가 출력하는 출력어레이를 구성하는 각각의 구성요소들을 비압축구성요소라고 지칭할 수 있다. 상기 압축구성요소와 상기 비압축구성요소는 예컨대, 각각 실수 값 또는 복소수 값을 가질 수도 있다.
상기 각각의 비압축데이터그룹 및 압축데이터그룹은 적어도 제1디멘젼 및 제2디멘젼을 포함하는 다차원어레이의 형태를 가질 수 있다.
본 발명의 일 관점에 따라 제공되는 압축방법에서, 상기 압축부는, 상기 제1디멘젼 및 상기 제2디멘젼 중 어느 하나의 디멘젼에 우선순위를 두어, 상기 어느 하나의 디멘젼 방향을 따라 순차적으로 압축구성요소들을 생성할 수 있다.
이때, 상기 어느 하나의 디멘젼을 결정하는 방법은, 완성된 상기 압축데이터그룹을 디코딩하여 복원되는 상기 비압축데이터그룹의 비압축구성요소들을 입력받는 데이터 연산부가, 상기 비압축구성요소들을 순차적으로 입력받는 순서에 따라 결정될 수 있다.
이때, 상기 데이터 연산부가 상기 비압축구성요소들을 순차적으로 입력받을 때에 상기 제1디멘젼 및 상기 제2디멘젼 중 상기 제1디멘젼에 우선순위를 두는 경우 상기 어느 하나의 디멘젼은 상기 제1디멘젼인 것으로 결정될 수 있다.
따라서, 본 발명의 일 관점에 따라 제공되는 하드웨어 가속기의 제어부는, 완성된 상기 압축데이터그룹을 디코딩하여 복원되는 상기 비압축데이터그룹의 비압축구성요소들을 입력받는 데이터 연산부가, 상기 비압축구성요소들을 순차적으로 입력받는 순서를 미리 획득하도록 되어 있다. 그리고 상기 제어부는 상기 획득한 입력받는 순서에 따라 상기 압축부가 상기 어느 하나의 디멘젼 방향을 따라 순차적으로 압축구성요소들을 생성하도록 상기 압축부를 제어하도록 되어 있을 수 있다.
이때, 상기 압축부는 상기 N개의 클럭들 중 k번째 클럭에 생성되어야 하는 k번째 압축구성요소를 생성하기 위하여, 상기 k번째 클럭 이전에 이미 상기 데이터 연산부가 출력한 비압축구성요소들만을 이용하도록 되어 있을 수 있다.
상기 비압축데이터그룹으로부터 상기 압축데이터그룹의 각각의 압축구성요소들을 생성하는 구체적인 압축 알고리즘은 다양하게 제시될 수 있다.
한편, 본 발명의 일 관점에 따라 제공되는 하드웨어 가속기에 포함된 디코딩부는, 완성된 상기 압축데이터그룹을 디코딩하여 상기 비압축데이터그룹을 복원할 수 있다.
상기 디코딩부의 디코딩 방법은 상기 비압축데이터그룹으로부터 상기 압축데이터그룹을 생성한 압축부의 압축 동작에 대응하는 것이기 때문에, 상기 압축부의 압축 방법은 상기 디코딩 방법에 대응된다.
본 발명의 일 관점에 따라, 상기 디코딩부는, 상기 압축데이터그룹으로부터 디코딩하여 복원하는 비압축데이터그룹의 각 비압축구성요소들 중 상기 데이터 연산부에 순차적으로 제공되어야 하는 비압축구성요소의 인덱스 순서에 따라 상기 비압축데이터그룹의 구성요소들을 순차적으로 출력하도록 되어 있다.
본 발명의 일 관점에 따라 제공되는 디코딩 방법에서, 상기 디코딩부는, 상기 제1디멘젼 및 상기 제2디멘젼 중 어느 하나의 디멘젼에 우선순위를 두어, 상기 어느 하나의 디멘젼 방향을 따라 순차적으로 비압축구성요소들을 생성할 수 있다.
이때, 상기 어느 하나의 디멘젼은, 복원된 상기 비압축데이터그룹의 비압축구성요소들을 입력받는 데이터 연산부가, 상기 비압축구성요소들을 순차적으로 입력받는 순서에 따라 결정될 수 있다.
이때, 상기 데이터 연산부가 상기 제1디멘젼에 우선순위를 두어 상기 비압축구성요소들을 입력받는 경우 상기 어느 하나의 디멘젼은 상기 제1디멘젼인 것으로 결정될 수 있다.
상기 디코딩부는, 상기 비압축데이터그룹의 특정 비압축구성요소를 복원할 때에, 상기 압축데이터그룹의 특정 압축구성요소와 함께 상기 특정 비압축구성요소를 복원하기 이전에 이미 복원되어 있는 다른 비압축구성요소들만을 이용하도록 되어 있을 수 있다. 이때, 상기 이미 복원된 비압축구성요소들 중 일부 또는 전부를 이용하도록 되어 있을 수 있다.
또한, 상기 디코딩부는, 상기 비압축데이터그룹에 속한 비압축구성요소들 중 최초로 복원하여 출력하는 제1비압축구성요소로서, 상기 비압축데이터그룹 중 상기 데이터 연산부에 최초로 입력되어야 하는 비압축구성요소를 선택하여 복원할 수 있다.
상기 압축데이터그룹으로부터 상기 비압축데이터그룹의 각각의 비압축구성요소들을 복원하는 구체적인 알고리즘은 다양하게 제시될 수 있다.
상기 디코딩부가 상기 비압축데이터그룹의 각각의 비압축구성요소룰 순차적으로 복원할 때마다, 상기 복원된 비압축구성요소는 상기 데이터 연산부에 실시간으로 입력될 수 있다.
즉, 예컨대, 상기 디코딩부가 상기 비압축데이터그룹의 N개의 비압축구성요소들을 N개의 연속적 클럭들에 걸쳐 순차적으로 출력한다면, 상기 출력된 N개의 비압축구성요소들은 상기 N개의 연속적 클럭들에 걸쳐 순차적으로 상기 데이터 연산부에 입력될 수 있다.
이를 위하여, 상기 디코딩부는 k번째 클럭에 복원되는 k번째 비압축구성요소를 복원하기 위하여, 상기 k번째 클럭 이전에 이미 복원되어 있는 비압축구성요소들만을 이용하도록 되어 있을 수 있다.
본 발명의 일 관점에 따라 제공되는 하드웨어 가속기는, 데이터 연산부; 상기 데이터 연산부가 제1연산 시구간에서 출력한 출력어레이를 압축하여 압축된 출력어레이를 생성하는 압축부; 및 상기 압축된 출력어레이로부터 입력어레이를 복원하고, 상기 복원한 입력어레이를 제2연산 시구간에서 상기 데이터 연산부에게 제공하는 디코딩부;를 포함한다. 이때, 상기 제2연산 시구간에서 상기 입력어레이(310)의 구성요소들은 미리 결정된 디멘젼 방향에 우선순위를 두어 상기 데이터 연산부에게 순차적으로 입력되도록 되어 있고, 그리고 상기 압축부는, 상기 출력어레이를 압축하여 상기 압축된 출력어레이를 생성할 때에, 상기 압축된 출력어레이를 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향에 우선순위를 두어 순차적으로 생성하도록 되어 있다.
이때, 상기 출력어레이는 복수 개의 비압축데이터그룹들로 구분되며, 상기 압축부는, 각각의 상기 비압축데이터그룹을 압축하여 상기 비압축데이터그룹에 대응하는 압축데이터그룹을 생성하도록 되어 있으며, 상기 압축된 출력어레이는 복수 개의 상기 생성된 압축데이터그룹들로 구성되며, 상기 압축부는, 각각의 상기 비압축데이터그룹을 압축하여 상기 압축데이터그룹을 생성할 때에, 상기 압축데이터그룹을 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향에 우선순위를 두어 순차적으로 생성하도록 되어 있다.
이때, 상기 압축데이터그룹(CG) 내에서 p 번째로 생성되는 구성요소는, 상기 압축데이터그룹(CG)에 대응되는 상기 비압축데이터그룹(NCG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 카운트되는 첫 번째 인덱스 내지 p 번째 인덱스를 갖는 구성요소; 및 상기 p 번째로 생성되는 구성요소를 생성하는 시점까지 이미 사용되었던 상기 비압축데이터그룹(NCG)의 구성요소들;만을 기초로 생성될 수 있다.
이때, 상기 디코딩부(630)는, 상기 압축된 출력어레이(340)를 디코딩하여 상기 입력어레이(310)를 복원할 때에, 상기 입력어레이(310)를 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 순차적으로 복원하도록 되어 있을 수 있다.
이때, 상기 압축된 출력어레이(340)는 복수 개의 압축데이터그룹(CG)들로 구분되며, 상기 디코딩부(630)는, 각각의 상기 압축데이터그룹(CG)을 디코딩하여 상기 압축데이터그룹(CG)에 대응하는 비압축데이터그룹(NCG)을 복원하도록 되어 있으며, 상기 복원된 입력어레이(310)는 복수 개의 상기 복원된 비압축데이터그룹(NCG)들로 구성되며, 상기 디코딩부(630)는, 각각의 상기 압축데이터그룹(CG)을 디코딩하여 상기 비압축데이터그룹(NCG)을 복원할 때에, 상기 비압축데이터그룹(NCG)을 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 순차적으로 복원하도록 되어 있을 수 있다.
이때, 상기 비압축데이터그룹(NCG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 p 번째로 복원되는 구성요소는, 상기 압축데이터그룹(CG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 카운트되는 첫 번째 인덱스 내지 p 번째 인덱스를 갖는 구성요소; 및 상기 p 번째로 복원되는 구성요소를 복원하는 시점까지 이미 복원되어 있던 상기 비압축데이터그룹(NCG)의 구성요소들;만을 기초로 복원될 수 있다.
이때, 상기 출력어레이(330)는 복수 개의 비압축데이터그룹(NCG)들로 구분되며, 상기 압축부(620)는, 각각의 상기 비압축데이터그룹(NCG)을 압축하여 상기 비압축데이터그룹(NCG)에 대응하는 압축데이터그룹(CG)을 생성하도록 되어 있으며, 상기 압축된 출력어레이(340)는 복수 개의 상기 생성된 압축데이터그룹(CG)들로 구성되며, 상기 압축된 출력어레이(340)를 메모리에 저장하기 위해 상기 생성된 복수 개의 상기 압축데이터그룹(CG)들을 상기 메모리에 제공하도록 되어 있으며, 상기 압축된 출력어레이(340)로부터 입력어레이(310)를 복원하기 위해 상기 메모리로부터 복수 개의 상기 압축데이터그룹(CG)들을 순차적으로 읽어 들이도록 되어 있을 수 있다.
이때, 상기 출력어레이(330)는 상기 미리 결정된 디멘젼 방향(91)을 따라 복수 개의 비압축데이터그룹(NCG)들을 포함하고, 상기 압축된 출력어레이(340)는 상기 미리 결정된 디멘젼 방향(91)을 따라 복수 개의 압축데이터그룹(CG)들을 포함하고, 상기 압축된 출력어레이(340)로부터 입력어레이(310)를 복원하기 위해 상기 메모리로부터 복수 개의 상기 압축데이터그룹(CG)들을 읽어 들일 때에, 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 복수 개의 상기 압축데이터그룹(CG)들을 읽어 들이도록 되어 있을 수 있다.
이때, 상기 미리 결정된 디멘젼 방향(91)과는 다른 디멘젼 방향(92)의 제1지점에(101)서 상기 미리 결정된 디멘젼 방향(91)을 따라 정렬되는 모든 복수 개의 비압축데이터그룹(NCG)들로 구성된 제1열의 비압축데이터그룹(NCG)들에 속한 모든 구성요소들을 디코딩한 이후에, 상기 다른 디멘젼 방향(92)의 제2지점(102)에서 상기 미리 결정된 디멘젼 방향(91)을 따라 정렬되는 비압축데이터그룹(NCG)들에 속한 구성요소들의 디코딩을 시작하도록 되어 있을 수 있다.
이때, 상기 제1열의 비압축데이터그룹(NCG)들에 속한 모든 구성요소들을 디코딩할 때에, 상기 입력어레이(310)의 구성요소들 중 상기 다른 디멘젼 방향(92)의 제3지점(113)에서 상기 미리 결정된 디멘젼 방향을 따라 배치되는 모든 구성요소들을 디코딩한 이후에, 상기 입력어레이(310)의 구성요소들 중 상기 다른 디멘젼 방향(92)의 제4지점(114)에 속한 구성요소들의 디코딩을 시작하도록 되어 있을 수 있다.
또는, 상기 입력어레이(310)의 구성요소들 중 상기 미리 결정된 디멘젼 방향(91)과는 다른 디멘젼 방향(92)의 제3지점(113)에서 상기 미리 결정된 디멘젼 방향을 따라 배치되는 모든 구성요소들을 디코딩한 이후에, 상기 입력어레이(310)의 구성요소들 중 상기 다른 디멘젼 방향(92)의 제4지점(114)에 속한 구성요소의 디코딩을 시작하도록 되어 있을 수 있다.
이때, 상기 제3지점(113)과 상기 제4지점(114)은 서로 다른 비압축데이터그룹 또는 압축데이터그룹에 속한 것일 수 있다.
이때, 상기 제1열의 비압축데이터그룹(NCG)들에 속한 모든 구성요소들을 디코딩할 때에, 상기 제1열의 비압축데이터그룹(NCG)들 중 제1비압축데이터그룹(NCG101)에 속한 일부의 구성요소인 제1세트의 구성요소들을 디코딩한 이후에, 상기 제1열의 비압축데이터그룹(NCG)들 중 제2비압축데이터그룹(NCG106)에 속한 일부의 구성요소인 제2세트의 구성요소들을 디코딩하고, 상기 제2세트의 구성요소들을 디코딩한 이후에 상기 제1비압축데이터그룹(NCG101)에 속한 다른 일부의 구성요소인 제3세트의 구성요소들을 디코딩하도록 되어 있을 수 있다.
본 발명의 일 관점에 따라, 상술한 하드웨어 가속기; 및 DRAM;을 포함하는 컴퓨팅 장치가 제공될 수 있다.
본 발명에 따르면 하드웨어 가속기의 데이터 연산부가 출력하는 출력어레이의 요소들을 압축하는 방법, 데이터 연산부에 입력되어야 하는 압축된 데이터들을 디코딩하는 방법이 제공될 수 있다.
구체적으로는, 데이터 연산부에 제공되어야 하는 비압축구성요소들을 복원하는 디코딩부가 비압축구성요소를 복원하면, 상기 복원된 비압축구성요소가 실시간으로 상기 데이터 연산부에 입력될 수 있다.
도 1은 본 발명의 이해를 돕기 위해 제시한 신경망의 일부 구성을 개념적으로 나타낸 것이다.
도 2는 신경망의 기능을 하드웨어로 구현한 신경망 가속부를 포함하는 신경망 연산장치 및 이를 포함하는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.
도 3은 도 2의 출력어레이(330)의 구조를 도시화한 것이다.
도 4a는 일부 실시예에서 발생할 수 있는 제약조건으로서 본 발명에서 고려하는 일부 제약조건을 설명하기 위한 다이어그램이고, 도 4b는 도 4a와는 다른 조건에서의 데이터 입출력 특성을 설명하는 도면이다.
도 5a 내지 도 5d는 일 실시예에 따라 신경망 가속부(60)의 출력어레이(330)를 여러 그룹으로 분할하고, 분할된 각 그룹의 데이터를 압축하여 저장하는 방법을 나타낸 것이다.
도 6a는 본 발명의 일 실시예에 따라 제공되는 하드웨어 가속기 및 이를 포함하는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이고, 도 6b는 본 발명의 일 실시예에 따라 데이터 연산부가 시간에 따라 동작하는 방식을 예시한 다이어그램이다.
도 7a 내지 도 7e는 본 발명의 일 실시예에 따라 제공되는 데이터 압축 방법을 설명하기 위해 제공된 것이다.
도 8a 내지 도 8b는 본 발명의 일 실시예에 따라 제공되는 데이터 디코딩 방법을 설명하기 위해 제공된 것이고, 도 8c는 제1비압축데이터그룹(NCG101)의 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 복원하는 예를 나타낸 것이다.
도 9a 내지 도 9d는 본 발명의 다른 실시예에 따라 제공되는 데이터 압축 방법을 설명하기 위해 제공된 것이다.
도 10a 내지 도 10d는 본 발명의 다른 실시예에 따라 제공되는 데이터 디코딩 방법을 설명하기 위해 제공된 것이다.
도 11는 본 발명의 일 실시예에 따라 제1연산 시구간에서 데이터 연산부가 출력하는 출력어레이(비압축)(330)을 나타낸 것이다.
도 12는 본 발명의 일 실시예에 따라 제공되는 신경망 가속부의 입력어레이 또는 출력어레이의 형태를 나타낸 개념도이다.
이하, 본 발명의 실시예를 첨부한 도면을 참고하여 설명한다. 그러나 본 발명은 본 명세서에서 설명하는 실시예에 한정되지 않으며 여러 가지 다른 형태로 구현될 수 있다. 본 명세서에서 사용되는 용어는 실시예의 이해를 돕기 위한 것이며, 본 발명의 범위를 한정하고자 의도된 것이 아니다. 또한, 이하에서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
도 6a는 본 발명의 일 실시예에 따라 제공되는 하드웨어 가속기 및 이를 포함하는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.
컴퓨팅 장치(1)는, 메모리(11), 하드웨어 가속기(110), 메모리(11)와 하드웨어 가속기(110)를 연결하는 버스(700), 및 버스(700)에 연결된 타 하드웨어들(99)을 포함할 수 있다.
그 밖에 컴퓨팅 장치(1)는 도시되지 않은 전원부, 통신부, 메인 프로세서, 사용자 인터페이스, 저장부, 및 주변 장치부들을 더 포함할 수 있다. 버스(700)는 하드웨어 가속기(110)와 타 하드웨어들(99)이 공유할 수도 있다.
하드웨어 가속기(110)는 DMA부(Direct Memory Access part)(20), 제어부(40), 내부 메모리(30), 압축부(620), 디코딩부(630), 데이터 연산부(610), 출력버퍼(640), 및 입력버퍼(650)를 포함할 수 있다.
도 6a에서는 디코딩부(630), 압축부(620), 출력버퍼(640), 입력버퍼(650), 및 내부 메모리(30)와는 서로 다른 개별적인 구성요소인 것으로 되어 있지만, 변형된 실시예에서, 디코딩부(630), 압축부(620), 출력버퍼(640), 입력버퍼(650), 및 내부 메모리(30)는 한 개의 단일 기능부로서 제공될 수도 있다.
메모리(11), 하드웨어 가속기(110), 및 데이터 연산부(610)는 예컨대, 각각 도 2에 제시한 DRAM(10), 신경망 연산장치(100), 및 신경망 가속부(60)일 수 있다. 그러나 이에 한정되는 것은 아니다.
데이터 연산부(610)가 동작하기 위해서는 입력어레이(310)가 데이터 연산부(610)에게 제공되어야 한다. 입력어레이(310)는 다차원의 어레이형태의 데이터의 집합일 수 있다.
데이터 연산부(610)에게 제공되는 입력어레이(310)는 내부 메모리(30)로부터 출력되는 것일 수 있다.
내부 메모리(30)는 입력어레이(310) 중 적어도 일부 또는 전부를 버스(700)를 통해 메모리(11)부터 제공받을 수 있다. 이때, 메모리(11)에 저장되어 있는 데이터를 내부 메모리(30)로 이동시키기 위하여, 제어부(40) 및 DMA부(20)가 내부 메모리(30) 및 메모리(11)을 제어할 수도 있다.
데이터 연산부(610)가 동작하면 입력어레이(310)를 기초로 출력어레이(330)가 생성될 수 있다. 출력어레이(330)는 다차원의 어레이형태의 데이터의 집합일 수 있다.
생성된 출력어레이(330)는 우선 내부 메모리(30)에 저장될 수 있다.
내부 메모리(30)에 저장된 출력어레이(330)는 제어부(40) 및 DMA부(20)의 제어에 의해 메모리(11)에 기록될 수 있다.
제어부(40)는 DMA부(20), 내부 메모리(30), 및 데이터 연산부(610)의 동작을 총괄하여 제어할 수 있다.
일 구현예에서, 데이터 연산부(610)는 제1시구간 동안에는 제1기능을 수행하고, 제2시구간 동안에는 제2기능을 수행할 수 있다. 상기 제2기능은 상기 제1기능과는 다를 수 있다.
예컨대, 데이터 연산부(610)는 제1시구간 동안에는 예컨대 도 1에 나타낸 제1레이어(610)의 기능을 수행하고, 제2시구간 동안에는 예컨대 도 1에 나타낸 제2레이어(620)의 기능을 수행할 수 있다.
일 실시예에서, 도 6a에 나타낸 데이터 연산부(610)는 복수 개 제공되어 각각 제어부(40)에 의해 요청된 연산을 병렬적으로 수행할 수도 있다.
일 구현예에서, 데이터 연산부(610)은 출력어레이(330)의 모든 데이터를 한 번에 출력하지 않고 시간에 따라 순차적으로 출력할 수 있다.
압축부(620)는 출력된 출력어레이(330)의 데이터량을 감소시키도록 출력어레이(330)를 압축하여 내부 메모리(30)에 제공할 수 있다. 결국, 출력어레이(330)는 압축된 상태의 어레이(340)로 메모리(11)에 저장될 수 있다.
출력버퍼(640)는 출력어레이(330)의 크기보다 작은 저장공간을 갖고 있을 수 있다. 출력어레이(330)를 구성하는 데이터는 시간의 흐름에 따라 순차적으로 출력될 수 있다. 우선, 출력어레이(330) 중 먼저 출력된 일부인 제1서브데이터만이 출력버퍼(640)에 저장될 수 있고, 출력버퍼(640)에 저장된 상기 제1서브데이터는 압축부(620에 의해 압축되어 메모리(11)에게 전달될 수 있다. 그 이후 출력어레이(330) 중 나중에 출력된 다른 일부인 제2서브데이터가 동일한 과정을 거쳐 메모리(11)에게 전달될 수 있다.
데이터 연산부(610)에 입력되는 입력어레이(310)는 메모리(11)부터 읽어 들인 것일 수 있다. 메모리(11)부터 읽어 들인 데이터는 압축된 것일 수 있으며, 데이터 연산부(610)에 제공되기 전에 디코딩부(630)에 의해 디코딩되어 입력어레이(310)로 전환될 수 있다.
입력버퍼(650)는 입력어레이(비압축)(310)의 크기보다 작은 저장공간을 갖고 있을 수 있다. 입력어레이(압축)(320)를 구성하는 데이터는 시간의 흐름에 따라 순차적으로 제공될 수 있다. 우선, 입력어레이(압축)(320) 중 먼저 제공된 일부인 제1서브데이터만이 입력버퍼(650)에 저장될 수 있고, 입력버퍼(650)에 저장된 상기 제1서브데이터는 디코딩부(630)에 의해 디코딩되어 데이터 연산부(610)에게 입력될 수 있다. 그 이후 입력어레이(압축)(320) 중 나중에 제공된 다른 일부인 제2서브데이터가 동일한 과정을 거쳐 데이터 연산부(610)에게 입력될 수 있다.
도 6b는 본 발명의 일 실시예에 따라 데이터 연산부가 시간에 따라 동작하는 방식을 예시한 다이어그램이다.
데이터 연산부(610)는, 제1연산 시구간(T1) 동안 데이터 연산부(610)에 입력되는 제1입력어레이(311)를 기초로 제1출력어레이(331)를 출력하도록 되어 있을 수 있다.
데이터 연산부(610)는, 제2연산 시구간(T2) 동안 데이터 연산부(610)에 입력되는 제2입력어레이(312)를 기초로 제2출력어레이(332)를 출력하도록 되어 있을 수 있다.
이때, 상기 제2입력어레이(312)는 상기 제1출력어레이(331)와 동일한 것일 수 있다. 다만, 제1출력어레이(331)는 압축되어 메모리에 저장되었다가, 상기 메모리로부터 다시 디코딩되어 상기 제2입력어레이(312)로서 제공될 수 있다.
<실시예 1>
도 7a 내지 도 7e는 본 발명의 일 실시예에 따라 제공되는 데이터 압축 방법을 설명하기 위해 제공된 것이다.
도 7a는 본 발명의 일 실시예에 따라 제1연산 시구간에서 데이터 연산부로부터 출력되는 출력어레이의 구조를 나타낸 것이다.
도 7a에 나타낸 출력어레이(비압축)(330)는 제1연산 시구간(T1)에서 데이터 연산부(610)로부터 출력된 것으로서 총 100개의 비압축구성요소들을 포함하고 있다. 각각의 상기 비압축구성요소들은 실수값 또는 허수값을 가질 수 있으며, 압축되지 않은 값이다.
도 7a에서는 출력어레이(비압축)(330)가 제1디멘젼 방향(91)을 따라 N1(=1)개의 비압축데이터그룹들(NCG)로 구분될 수 있고, 제2디멘젼 방향(92)을 따라 N2(=5)개의 비압축데이터그룹들(NCG)로 구분될 수 있다. 각각의 상기 비압축데이트그룹들은 복수 개의 비압축구성요소들로 이루어질 수 있다.
도 7b 및 도 7c는 출력어레이(비압축)(330)를 구성하는 비압축구성요소들이 데이터 연산부(610)로부터 순차적으로 출력되는 순서를 나타낸 것이다. 데이터 연산부(610)는 제1디멘젼 방향(91)보다 제2디멘젼 방향(92)에 우선순위를 두어 상기 비압축구성요소들을 출력한다. 즉, 도 7b에서 제k행에 속한 비압축구성요소들이 좌측에서 우측으로 순차적으로 출력된 다음, 제k+1행에 속한 비압축구성요소들이 좌측에서 우측으로 순차적으로 출력될 수 있다.
도 7c를 살펴보면, 비압축구성요소들의 인덱스 1, 2, 3, ... 의 순서로 순차적으로 출력되다가, 인덱스 92까지 출력되면 비로소 제1비압축데이터그룹(NCG101)이 완전히 준비될 수 있다.
제1비압축데이터그룹(NCG101)의 적어도 일부 또는 전부가 준비되면, 압축부(620)는, 제1비압축데이터그룹(NCG101)을 압축하여 제1압축데이터그룹(CG101)을 생성할 수 있다.
본 발명의 바람직한 일 실시예에서는, 제1비압축데이터그룹(NCG101)를 구성하는 모든 비압축구성요소들이 준비되지 않더라도, 준비된 일부의 비압축구성요소들만으로 압축을 수행할 수 있다.
그리고 제1압축데이터그룹(CG101)을 구성하는 복수 개의 압축구성요소들은 한 순간에 생성되는 것이 아니라, 순차적으로 생성될 수 있다.
제1비압축데이터그룹(NCG101)에 속한 비압축구성요소들이 인덱스 92까지 모두 출력되면 제1비압축데이터그룹(NCG101)로부터 제1압축데이터그룹(CG101)을 생성하는 과정을 완료할 수 있다.
도 7d를 참조하여 설명하면, 제어부(40)는, 압축부(620)로 하여금, 출력어레이(압축)(340)에 포함된 압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 순차적으로 생성하도록 할지, 아니면 제2디멘젼 방향(91)에 우선순위를 두어 순차적으로 생성하도록 할지 여부를 결정할 수 있다.
한편, 데이터 연산부(610)는, 제1연산 시구간(T1) 이후의 시구간인 제2연산 시구간(T2)에서, 완성된 제1압축데이터그룹(CG101)을 디코딩하여 복원된 제1비압축데이터그룹(NCG101)에 속한 비압축구성요소들을 입력받을 수 있다.
만일, 데이터 연산부(610)가, 제2연산 시구간(T2)에서, 상기 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 입력받도록 되어 있다면, 제어부(40)는, 압축부(620)로 하여금, 상기 압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 순차적으로 생성하도록 제어할 수 있다. 이와 달리, 데이터 연산부(610)가, 제2연산 시구간(T2)에서, 상기 비압축구성요소들을 제2디멘젼 방향(92)에 우선순위를 두어 입력받도록 되어 있다면, 제어부(40)는, 압축부(620)로 하여금, 상기 압축구성요소들을 제2디멘젼 방향(92)에 우선순위를 두어 순차적으로 생성하도록 제어할 수 있다. 제어부(40)는 상술한 두 가지 경우를 구분할 수 있어야 한다.
따라서, 제어부(40)는, 데이터 연산부(610)가 제2연산 시구간(T2)에서 상기 비압축구성요소들을 제1디멘젼 방향(91)과 제2디멘젼 방향(92) 중 어느 것에 우선순위를 두어 순차적으로 입력받을지에 대한 정보를 미리 획득해야 할 수 있다. 이러한 정보는 제어부(40)에 설정되어 있을 수도 있고, 또는 시간에 따라 동적으로 제어부(40)가 획득하도록 되어 있을 수도 있다.
도 7d에서는 데이터 연산부(610)가, 제2연산 시구간(T2)에서, 상기 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 입력받도록 되어 있는 시나리오를 가정하였다. 생성된 각각의 압축데이터그룹들은 각각 내부 메모리(30)를 거쳐 메모리(11)에게 저장될 수 있다.
도 7e는 본 발명의 일 실시예에 따라, 한 개의 비압축데이터그룹을 압축하여 압축데이터그룹을 생성하는 방법을 나타낸 것이다.
도 7e는 제1압축데이터그룹(CG101)의 압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 생성하는 예를 나타낸 것이다.
도 7e의 (a)에 나타낸 것과 같이, 제1압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 첫 번째로 생성되는 제1압축구성요소(ex: 인덱스=1)는 제1비압축데이터그룹(NCG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 첫 번째 인덱스를 갖는 제1비압축구성요소(ex: 인덱스=1)를 기초로 생성될 수 있다.
도 7e의 (b)에 나타낸 것과 같이, 제1압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 두 번째로 생성되는 압축구성요소(ex: 인덱스=11)는 제1비압축데이터그룹(NCG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 두 번째 인덱스를 갖는 제2비압축구성요소(ex: 인덱스=11) 및 상기 두 번째로 생성되는 압축구성요소(ex: 인덱스=11)를 생성하는 시점까지 이미 사용되었던 제1비압축데이터그룹(NCG101)의 비압축구성요소들(ex: 인덱스 1)만을 기초로 생성될 수 있다.
도 7e의 (c)에 나타낸 것과 같이, 제1압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 k 번째로 생성되는 압축구성요소(ex: 인덱스=51)는 ① 제1비압축데이터그룹(NCG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 k 번째 인덱스를 갖는 제k비압축구성요소(ex: 인덱스=51), ② 상기 k 번째로 생성되는 압축구성요소(ex: 인덱스=51)를 생성하는 시점까지 이미 사용되었던 제1비압축데이터그룹(NCG101)의 비압축구성요소들(ex: 인덱스 1, 11, 21, 31, 및 41), 및 ③ 상기 k 번째로 생성되는 압축구성요소(ex: 인덱스=51)를 생성하는 시점까지 이미 생성되어 있는 제1압축데이터그룹(CG101)의 압축구성요소들(ex: 인덱스 1, 11, 21, 31, 및 41)만을 기초로 생성될 수 있다.
즉, 상기 제1비압축데이터그룹(NCG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 k 번째 인덱스를 갖는 제k비압축구성요소는 반드시 이용하되, 제1비압축데이터그룹(NCG101)의 비압축구성요소들(ex: 인덱스 1, 11, 21, 31, 및 41) 및 제1압축데이터그룹(CG101)의 압축구성요소들(ex: 인덱스 1, 11, 21, 31, 및 41) 중 적어도 일부 또는 전체를 이용하여 상기 k 번째로 생성되는 압축구성요소를 생성할 수 있다.
도 7e의 (d)에 나타낸 것과 같이, 제1압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 p 번째로 생성되는 압축구성요소(ex: 인덱스=62)는 제1비압축데이터그룹(NCG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p비압축구성요소(ex: 인덱스=62) 및 상기 p 번째로 생성되는 압축구성요소(ex: 인덱스=62)를 생성하는 시점까지 이미 사용되었던 제1비압축데이터그룹(NCG101)의 비압축구성요소들(ex: 인덱스 1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 2, 12, 22, 32, 42, 및 52)만을 기초로 생성될 수 있다.
도 8a 내지 도 8b는 본 발명의 일 실시예에 따라 제공되는 데이터 디코딩 방법을 설명하기 위해 제공된 것이다.
도 8a에 나타낸 입력어레이(압축)(320)는 제2연산 시구간(T2)에서 데이터 연산부(610)에게 입력되어야 하는 것으로서, 총 5개의 압축데이터그룹들(CG)을 포함하고 있다. 각각의 압축데이터그룹들(CG)들은 내부 메모리(30)를 통해 메모리(11)로부터 디코딩부(630)에게 순차적으로 제공될 수 있다. 도 8a에 도시한 입력어레이(압축)(320)는 도 7d의 메모리(11)에 저장된 출력어레이(압축)(340)과 동일한 것일 수 있다.
도 8a에서는 입력어레이(압축)(320)가 제1디멘젼 방향(91)을 따라 N1(=1)개의 압축데이터그룹들(CG)로 구분될 수 있고, 제2디멘젼 방향(92)을 따라 N2(=5)개의 압축데이터그룹들(CG)로 구분될 수 있다.
도 8b에 나타낸 것과 같이, 디코딩부(630)는 입력어레이(압축)(320)로부터 입력어레이(비압축)(310)를 복원할 수 있다. 도 8b에 나타낸 것과 같이, 복원된 입력어레이(비압축)(310)에 속한 비압축구성요소들은 제2디멘젼 방향(92)보다 제1디멘젼 방향(91)에 우선순위를 두어 데이터 연산부(610)에 입력될 수 있다.
도 8a를 살펴보면, 제1압축데이터그룹(CG101)을 메모리(11)로부터 읽어온 후, 제1압축데이터그룹(CG101)(320)으로부터 제1비압축데이터그룹(NCG101)(310)을 복원하면 데이터 연산부(610)에 제1비압축데이터그룹(NCG101)(310)에 속한 비압축구성요소들을 제1디멘젼 방향에 우선순위를 두어 순차적으로 입력할 수 있다.
이때, 제1비압축데이터그룹(NCG101)(310)을 구성하는 비압축구성요소들은 한 순간에 복원되는 것이 아니라, 순차적으로 복원될 수 있다.
도 8b를 참조하여 설명하면, 제어부(40)는, 디코딩부(630)로 하여금, 상기 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 순차적으로 복원하도록 할 수 있다.
도 8c는 제1비압축데이터그룹(NCG101)의 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 복원하는 예를 나타낸 것이다.
도 8c의 (a)에 나타낸 것과 같이, 제1비압축데이터그룹(NCG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 첫 번째로 복원되는 제1비압축구성요소(ex: 인덱스=1)는 제1압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 첫 번째 인덱스를 갖는 제1압축구성요소(ex: 인덱스=1)를 기초로 복원될 수 있다.
도 8c의 (b)에 나타낸 것과 같이, 제1비압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 두 번째로 복원되는 비압축구성요소(ex: 인덱스=11)는 제1압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 두 번째 인덱스를 갖는 제2압축구성요소(ex: 인덱스=11) 및 상기 두 번째로 복원되는 비압축구성요소(ex: 인덱스=11)를 복원하는 시점까지 이미 복원되어 있던 제1비압축데이터그룹(NCG101)의 비압축구성요소들(ex: 인덱스 1)만을 기초로 복원될 수 있다.
도 8c의 (c)에 나타낸 것과 같이, 제1비압축데이터그룹(NCG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 k 번째로 복원되는 비압축구성요소(ex: 인덱스=51)는 제1압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 k 번째 인덱스를 갖는 제k압축구성요소(ex: 인덱스=51) 및 상기 k 번째로 복원되는 비압축구성요소(ex: 인덱스=51)를 복원하는 시점까지 이미 복원되어 있던 제1비압축데이터그룹(NCG101)의 비압축구성요소들(ex: 인덱스 1, 11, 21, 31, 및 41)만을 기초로 복원될 수 있다.
도 8c의 (d)에 나타낸 것과 같이, 제1비압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 p 번째로 복원되는 비압축구성요소(ex: 인덱스=62)는 제1압축데이터그룹(CG101)에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p압축구성요소(ex: 인덱스=62) 및 상기 p 번째로 복원되는 비압축구성요소(ex: 인덱스=62)를 복원하는 시점까지 이미 복원되어 있던 제1비압축데이터그룹(NCG101)의 비압축구성요소들(ex: 인덱스 1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 2, 12, 22, 32, 42, 및 52)만을 기초로 복원될 수 있다.
도 7e를 통해 설명한 것과 같이, 특정 압축데이터그룹에서 제1디멘젼 방향(91)에 우선순위를 두어 p 번째로 생성되는 압축구성요소는, 특정 비압축데이터그룹에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p비압축구성요소 및 상기 p 번째로 생성되는 압축구성요소를 생성하는 시점까지 이미 사용되었던 상기 특정 비압축데이터그룹 비압축구성요소들 만을 기초로 생성될 수 있다.
도 8c를 통해 설명한 것과 같이, 특정 비압축데이터그룹에서 제1디멘젼 방향(91)에 우선순위를 두어 p 번째로 복원되는 비압축구성요소는, 특정 압축데이터그룹에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p압축구성요소 및 상기 p 번째로 복원되는 비압축구성요소를 복원하는 시점까지 이미 복원되었던 상기 특정 비압축데이터그룹의 비압축구성요소들 만을 기초로 복원될 수 있다.
이렇게 함으로써, 상기 특정 비압축데이터그룹에 속한 모든 비압축구성요소들을 모두 복원한 상태가 아니더라도, 상기 특정 압축데이터그룹으로부터 상기 비압축구성요소들을 복원하면서, 실시간으로 상기 복원된 비압축구성요소들을 데이터 연산부에 제공할 수 있다는 효과가 있다.
상술한 실시예 1은 본 발명의 기본 사상을 설명한 것이다. 후술하는 실시예 2는 본 발명의 바람직한 일 실시예에 관한 것이다.
<실시예 2>
도 9a 내지 도 9d는 본 발명의 다른 실시예에 따라 제공되는 데이터 압축 방법을 설명하기 위해 제공된 것이다.
도 9a에 나타낸 출력어레이(비압축)(330)는 도 7a에 나타낸 출력어레이(비압축)(330)와 동일하다. 제1연산 시구간(T1)에 데이터 연산부로부터 출력된 출력어레이(비압축)(330)는 제2연산 시구간(T2)에 데이터 연산부로 입력되어야 하는 입력어레이(310)와 동일할 수 있다.
다만, 도 9a에서는 출력어레이(비압축)(330)가 제1디멘젼 방향(91)을 따라 N1(=2)개의 비압축데이터그룹들(NCG)로 구분될 수 있고, 제2디멘젼 방향(92)을 따라 N2(=5)개의 비압축데이터그룹들(NCG), 즉 복수 개의 비압축데이터그룹들(NCG)로 구분될 수 있다는 점만이 다르다. 이와 같은 차이점을 제외하고는, 도 9a에 나타낸 내용은 도 7a에 관한 내용과 동일하다.
도 9b를 살펴보면, 비압축구성요소들이 데이터 연산부로부터 인덱스 1, 2, 3, ... 의 순서로 순차적으로 출력되다가, 인덱스 42까지 출력되면 비로소 제1비압축데이터그룹(NCG101)이 완전히 준비될 수 있다. 이러한 점을 제외하고는, 도 9b에 나타낸 내용은 도 7c에 관한 내용과 동일하다.
도 9c에 제시한 내용은, 비압축데이턱그룹 및 압축데이터그룹의 크기가 도 7d에 나타낸 것과 차이가 있다는 점을 제외하고는 도 7d에 관한 내용과 동일하다.
도 9d에 제시한 내용은, 비압축데이터그룹 및 압축데이터그룹의 크기에서 차이가 있다는 점을 제외하고는 도 7e에 관한 내용과 동일하다.
이와 같이, 도 9a 내지 도 9d 및 이에 관한 내용은 상술한 도 7a 내지 도 7e에 관한 내용으로부터 자명하게 이해될 수 있다.
도 10a 내지 도 10d는 본 발명의 다른 실시예에 따라 제공되는 데이터 디코딩 방법을 설명하기 위해 제공된 것이다.
도 10a에 나타낸 입력어레이(압축)(320)는 제2연산 시구간(T2)에서 데이터 연산부(610)에게 입력되어야 하는 것으로서, 총 10개의 압축데이터그룹들(CG)을 포함하고 있다. 압축데이터그룹들(CG)들은 내부 메모리(30)를 통해 메모리(11)로부터 디코딩부(630)에게 순차적으로 제공될 수 있다. 도 10a에 도시한 입력어레이(압축)(320)는 도 9c에서 메모리(11)에 저장된 출력어레이(압축)(340)과 동일한 것일 수 있다.
도 10b에 나타낸 것과 같이, 디코딩부(630)는 입력어레이(압축)(320)로부터 입력어레이(비압축)(310)를 복원할 수 있다. 도 10b에 나타낸 것과 같이, 복원된 입력어레이(비압축)(310)에 속한 비압축구성요소들은 제2디멘젼 방향(92)보다 제1디멘젼 방향(91)에 우선순위를 두어 데이터 연산부(610)에 입력될 수 있다. 따라서 다시 도 10a를 참조하여 설명하면, 압축데이터그룹들(CG)들은 CG101, CG106, CG102, CG107, CG103, CG108, CG104, CG109, CG105, CG110의 순서로 메모리(11)로부터 획득될 수 있다. 즉, 압축데이터그룹들(CG)들도 제2디멘젼 방향(92)보다 제1디멘젼 방향(91)에 우선순위를 두어 메모리(11)로부터 획득될 수 있다.
도 10a를 살펴보면, 제1압축데이터그룹(CG101) 및 제6압축데이터그룹(CG106)을 메모리(11)로부터 읽어온 후, 제1비압축데이터그룹(NCG101) 및 제6비압축데이터그룹(NCG106)을 복원하면, 제1비압축데이터그룹(NCG101) 및 제6비압축데이터그룹(NCG106)에 속한 비압축구성요소들을 제1디멘젼 방향에 우선순위를 두어 데이터 연산부(610)에 순차적으로 입력할 수 있다.
이때, 제1비압축데이터그룹(NCG101) 또는 제6비압축데이터그룹(NCG106)을 구성하는 비압축구성요소들은 한 순간에 복원되는 것이 아니라, 순차적으로 복원될 수 있다.
도 10b를 참조하여 설명하면, 제어부(40)는, 디코딩부(630)로 하여금, 비압축데이터그룹에 속한 상기 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 순차적으로 복원하도록 할 수 있다.
도 10c 및 도 10d는 제1비압축데이터그룹(NCG101)의 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 복원하고, 제6비압축데이터그룹(NCG106)의 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 복원하는 예를 나타낸 것이다.
도 10c 및 도 10d에서 비압축구성요소들을 복원하는 원리는, 도 8c에서 설명한 원리와 동일하다.
이때, 도 8c에 설명한 방법과 도 10c 및 도 10d에서 설명하는 방법은 다음과 같은 차이가 있다.
즉, 도 8c에서 설명한 방법에 따르면, 한 개의 비압축데이터그룹(NCG)를 모두 복원한 후에 다른 비압축데이터그룹(NCG)를 복원하더라도 상관없다.
그러나 도 10c 및 도 10d에서는 제1비압축데이터그룹(NCG101)의 일부만을 복원한 상태에서, 제1비압축데이터그룹(NCG101)의 다른 부분을 복원하는 것을 멈추고, 그 대신 제6비압축데이터그룹(NCG106)의 일부의 복원을 시작한다. 또한, 제6비압축데이터그룹(NCG106)의 일부만을 복원한 상태에서 제6비압축데이터그룹(NCG106)의 다른 부분을 복원하는 것을 멈추고, 그 대신 제1압축데이터그룹(NCG101)의 다른 부분의 복원을 시작한다. 그리고 제1압축데이터그룹(NCG101)을 모두 복원한 후에, 다시 제6비압축데이터그룹(NCG106)의 다른 부분을 모두 복원한다.
즉, 본 발명의 다른 실시예는 다음과 같은 특징을 갖는다.
첫째, 제2연산 시구간에서 데이터 연산부에 입력되어야 하는 입력어레이(압축)는 적어도 제1디멘젼과 제2디멘젼을 갖는다.
둘째, 상기 입력어레이(압축)는 상기 제1디멘젼 방향을 따라 복수 개의 압축데이터그룹들(CG)을 포함한다. 또한, 입력어레이(압축)는 상기 제2디멘젼 방향을 따라 복수 개의 압축데이터그룹들(CG)을 포함할 수 있다.
셋째, 상기 입력어레이(압축)로부터 복원된 입력어레이(비압축)에 속한 비압축구성요소들이 상기 제1디멘젼 방향에 우선순위를 두어 상기 데이터 연산부에 순차적으로 입력되며, 상기 압축데이터그룹들(CG)들도 상기 제1디멘젼 방향에 우선순위를 두어 메모리(11)로부터 순차적으로 획득될 수 있다.
넷째, 상기 각각의 압축데이터그룹들로부터 복원된 각각의 비압축데이터그룹들은 상기 제1디멘젼 방향을 따라 복수 개의 비압축구성요소들을 갖고, 그리고 상기 제2디멘젼 방향을 따라 복수 개의 비압축구성요소들을 가질 수 있다.
다섯째, 상기 제2디멘젼 방향의 한 지점에서 제1디멘젼 방향을 따라 정렬되는 복수 개의 비압축데이터그룹들에 속한 비압축구성요소들을 디코딩한다. 이때, 상기 제2디멘젼 방향의 특정 지점에서 제1디멘젼 방향을 따라 복수 개의 비압축데이터그룹들에 걸쳐 정렬되는 일 열의 비압축구성요소들은 상기 제1디멘젼 방향을 따라 순차적으로 디코딩된다.
여섯째, 상기 제1디멘젼 방향과는 다른 제2디멘젼 방향의 제2지점에서 상기 제1디멘젼 방향을 따라 정렬되는 임의의 비압축데이터그룹(NCG)에 속한 임의의 구성요소를 디코딩하기 이전에, 상기 제2디멘젼 방향의 제1지점에서 상기 제1디멘젼 방향을 따라 정렬되는 모든 복수 개의 비압축데이터그룹(NCG)들에 속한 모든 비압축구성요소들을 디코딩하도록 되어 있을 수 있다.
일곱째, 상기 제2디멘젼 방향의 한 지점에서 상기 제1디멘젼 방향을 따라 정렬된 상기 복수 개의 비압축데이터그룹들 중 특정 비압축데이터그룹에서 제1디멘젼 방향(91)에 우선순위를 두어 p 번째로 복원되는 비압축구성요소는 상기 특정 압축데이터그룹에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p압축구성요소 및 상기 p 번째로 복원되는 비압축구성요소를 복원하는 시점까지 이미 복원되었던 상기 특정 비압축데이터그룹의 비압축구성요소들만을 기초로 복원될 수 있다.
여덟째, 상기 특정 압축데이터그룹에서 제1디멘젼 방향(91)에 우선순위를 두어 p 번째로 생성되는 압축구성요소는, 상기 특정 비압축데이터그룹에서 제1디멘젼 방향(91)에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p비압축구성요소 및 상기 p 번째로 생성되는 압축구성요소를 생성하는 시점까지 이미 사용되었던 상기 특정 비압축데이터그룹 비압축구성요소들만을 기초로 생성된 것일 수 있다.
상술한 실시예 2는 제1연산 시구간에서 데이터 연산부가 제1디멘젼 방향에 우선순위를 두어 출력어레이를 출력하고, 제2연산 시구간에서 데이터 연산부가 제2디멘젼 방향에 우선순위를 두어 입력어레이를 입력받는 예를 나타낸 것이다. 즉, 데이터 출력 시의 출력 우선순위와 데이터 입력 시의 입력 우선순위가 서로 다른 예를 나타낸 것이다.
후술하는 실시예 3에서는 데이터 출력 시의 출력 우선순위와 데이터 입력 시의 입력 우선순위가 서로 동일한 예를 설명한다.
<실시예 3>
도 11는 본 발명의 일 실시예에 따라 제1연산 시구간에서 데이터 연산부가 출력하는 출력어레이(비압축)(330)을 나타낸 것이다.
도 11에 나타낸 출력어레이(비압축)(330)는 도 9a에 나타낸 출력어레이(비압축)(330)와 동일한 것이다. 다만, 도 11에서는 제1연산 시구간에서 데이터 연산부가 제1디멘젼 방향에 우선순위를 두어 출력어레이(비압축)(330)의 비압축구성요소들을 순차적으로 출력한 것이라는 점에서 다르다.
도 11을 살펴보면, 비압축구성요소들이 데이터 연산부로부터 인덱스 1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 2, 12, 22, 32, 42,... 의 순서로 순차적으로 출력되다가, 인덱스 42까지 출력되면 비로서 제1비압축데이터그룹(NCG101)이 완전히 준비될 수 있다.
이와 같이 도 11의 출력어레이(비압축)(330)의 비압축구성요소들이 출력되는 순서가 다르다는 점을 제외하고는, 도 11의 출력어레이(비압축)(330)에 대하여 도 9c에 설명한 과정들이 그대로 적용될 수 있다는 점은 쉽게 이해될 수 있다.
한편, 도 9c 및 도 7d에 제시된 바와 같이 제어부(40)는, 데이터 연산부(610)가 제2연산 시구간(T2)에서 상기 비압축구성요소들을 제1디멘젼 방향(91)과 제2디멘젼 방향(92) 중 어느 방향에 우선순위를 두어 순차적으로 입력받을지에 대한 정보를 미리 획득할 수 있다. 도 11에 나타낸 실시예에서는 데이터 연산부(610)가 제2연산 시구간(T2)에서 상기 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 순차적으로 입력받는 것으로 가정한 것이다.
본 발명의 바람직한 일 실시예에서, 압축부(620)는 데이터 연산부(610)가 제2연산 시구간(T2)에서 데이터를 입력받는 우선순위와 동일한 우선순위로 압축을 진행할 수 있다. 즉, 도 11의 예에서, 데이터 연산부(610)가 제2연산 시구간(T2)에서 상기 비압축구성요소들을 제1디멘젼 방향(91)에 우선순위를 두어 순차적으로 입력받기 때문에, 압축부(620)도 상기 제1디멘젼 방향(91)에 우선순위를 두어 데이터를 압축한다. 즉, 도 7e, 도 10c, 및 도 10d에 나타낸 것과 같이, 주어진 압축데이터그룹(CG)에서 제1디멘젼 방향에 우선순위를 두어 p 번째로 생성되는 압축구성요소는 주어진 비압축데이터그룹(NCG)에서 제1디멘젼 방향에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p비압축구성요소 및 상기 p 번째로 생성되는 압축구성요소를 생성하는 시점까지 이미 사용되었던 상기 주어진 비압축데이터그룹(NCG)의 비압축구성요소들만을 기초로 생성될 수 있다.
상술한 실시예 2 및 실시예 3을 함께 살펴보면, 압축부(620)가 데이터를 압축하는 구체적인 방법은, 압축부(620)에 제공되는 상기 출력어레이(비압축)(330)의 비압축구성요소들이 출력되는 순서와는 무관하다.
본 발명의 바람직한 일 실시예에서, 압축부(620)는, 데이터 연산부(610)가 제1연산 시구간(T1)에서 출력한 상기 출력어레이(비압축)(330)를 압축하여 출력어레이(압축)(340)를 생성할 수 있다. 이때, 상기 압축은 상기 출력어레이(비압축)(330)를 구성하는 데이터그룹 별로 수행될 수 있다. 즉, 압축부(620)는, 상기 출력어레이(비압축)(330)의 특정 비압축데이터그룹(NCG)을 압축하여 압축데이터그룹(CG)을 생성할 수 있다.
그리고, 디코딩부(630)는, 출력어레이(압축)(340)을 디코딩하여 입력어레이(비압축)(310)를 복원할 수 있다. 이때, 상기 디코딩은 상기 출려어레이(압축)(340)를 구성하는 데이터그룹 별로 수행될 수 있다. 즉, 디코딩부(630)는, 상기 출력어레이(압축)(340)의 특정 압축데이터그룹(CG)을 디코딩하여 이에 대응하는 비압축데이터그룹(CG)을 복원할 수 있다.
상기 복원된 입력어레이(비압축)(310)를 구성하는 비압축구성요소들은 미리 결정된 우선순위에 따라 데이터 연산부에 순차적으로 입력될 수 있다.
본 발명의 바람직한 일 실시예에서, 압축부(620)가 데이터를 압축하는 구체적인 방법은, 상기 우선순위에 따라 결정된다는 점을 이해할 수 있다.
즉, 상기 데이터 연산부가 상기 복원된 입력어레이(비압축)(310)를 구성하는 비압축구성요소들을 제k디멘젼 방향에 우선순위를 두어 순차적으로 입력을 받는 것으로 설정되어 있다고 가정할 수 있다.
이때, 압축부(620) 역시, 주어진 출력어레이(비압축)(330)를 압축하여 출력어레이(압축)(340)를 생성할 때에, 상기 출력어레이(압축)(340)를 구성하는 압축구성요소들을 상기 제k디멘젼 방향에 우선순위를 두어 순차적으로 생성할 수 있다.
즉, 압축부(620)는, 출력어레이(비압축)(330)를 구성하는 특정 비압축데이터그룹(NCG)을 압축하여 출력어레이(압축)(340)를 구성하는 압축데이터그룹(CG)을 생성할 때에, 상기 압축데이터그룹(CG)을 구성하는 압축구성요소들을 상기 제k디멘젼 방향에 우선순위를 두어 순차적으로 생성할 수 있다.
구체적으로, 상기 압축데이터그룹(CG)을 내에서 p 번째로 생성되는 압축구성요소는 대응되는 상기 비압축데이터그룹(NCG)에서 상기 제k디멘젼 방향에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p비압축구성요소 및 상기 p 번째로 생성되는 압축구성요소를 생성하는 시점까지 이미 사용되었던 상기 비압축데이터그룹(NCG)의 비압축구성요소들만을 기초로 생성되도록 되어 있다.
이때, 디코딩부(630) 역시, 주어진 출력어레이(압축)(340)를 디코딩하여 입력어레이(비압축)(310)를 생성할 때에, 상기 입력어레이(비압축)(310)를 구성하는 비압축구성요소들을 상기 제k디멘젼 방향에 우선순위를 두어 순차적으로 생성할 수 있다.
즉, 디코딩부(630)는, 출력어레이(압축)(340)를 구성하는 특정 압축데이터그룹(CG)을 디코딩하여 입력어레이(비압축)(310)를 구성하는 비압축데이터그룹(NCG)을 생성할 때에, 상기 비압축데이터그룹(NCG)을 구성하는 비압축구성요소들을 상기 제k디멘젼 방향에 우선순위를 두어 순차적으로 생성할 수 있다.
구체적으로, 상기 비압축데이터그룹(NCG)에서 상기 제k디멘젼 방향에 우선순위를 두어 p 번째로 복원되는 비압축구성요소는 상기 압축데이터그룹(CG)에서 상기 제k디멘젼 방향에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 제p압축구성요소 및 상기 p 번째로 복원되는 비압축구성요소를 복원하는 시점까지 이미 복원되어 있던 상기 비압축데이터그룹(NCG)의 비압축구성요소들만을 기초로 복원될 수 있다.
상술한 실시예들에서 제1연산 시구간에서 출력어레이를 출력하는 데이터 연산부는 제2연산 시구간에서 입력어레이를 입력받는 데이터 연산부와 동일한 것으로 가정하였다.
그러나 다른 실시예에서는 제1연산 시구간에서 출력어레이를 출력하는 제1데이터 연산부는 제2연산 시구간에서 입력어레이를 입력받는 제2데이터 연산부는 서로 다른 것일 수 있다. 즉, 상기 제1데이터 연산부와 상기 제2데이터 연산부는 도 6a에 나타낸 하드웨어 가속기(110)가 구현된 웨이퍼 상에서 서로 다른 위치에 구현된 하드웨어 기능모듈일 수 있다.
<실시예 4>
이하 도 6a, 도 6b, 도 9a, 도 9b 도 9c, 도 9d, 도 10c, 도 10d,
본 발명의 일 실시예에 따라 제공되는 하드웨어 가속기(110)는, 데이터 연산부(610), 상기 데이터 연산부(610)가 제1연산 시구간(T1)에서 출력한 출력어레이(330)를 압축하여 압축된 출력어레이(340)를 생성하는 압축부(620), 및 상기 압축된 출력어레이(340)로부터 입력어레이(310)를 복원하고, 상기 복원한 입력어레이(310)를 제2연산 시구간(T2)에서 상기 데이터 연산부(610)에게 제공하는 디코딩부(640)를 포함할 수 있다.
상기 제2연산 시구간(T2)에서 상기 입력어레이(310)의 구성요소(=비압축구성요소)들은 미리 결정된 디멘젼 방향(ex: 제1디멘젼 방향)(91)에 우선순위를 두어 상기 데이터 연산부(610)에게 순차적으로 입력되도록 되어 있을 수 있다.
그리고 상기 압축부(620)는, 상기 출력어레이(330)를 압축하여 상기 압축된 출력어레이(340)를 생성할 때에, 상기 압축된 출력어레이(340)를 구성하는 구성요소(=압축구성요소)들을 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 순차적으로 생성하도록 되어 있을 수 있다.
이때, 상기 출력어레이(330)는 복수 개의 비압축데이터그룹(NCG)들로 구분될 수 있다.
그리고 상기 압축부(620)는, 각각의 상기 비압축데이터그룹(NCG)을 각각 압축하여 상기 비압축데이터그룹(NCG)에 대응하는 압축데이터그룹(CG)을 생성하도록 되어 있을 수 있다.
이때, 상기 압축된 출력어레이(340)는 복수 개의 상기 생성된 압축데이터그룹들로 구성될 수 있다.
그리고 상기 압축부(620)는, 각각의 상기 비압축데이터그룹(NCG)을 압축하여 상기 압축데이터그룹(CG)을 생성할 때에, 상기 압축데이터그룹(CG)을 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 순차적으로 생성하도록 되어 있을 수 있다.
이때, 상기 압축데이터그룹(CG)을 내에서 p 번째로 생성되는 구성요소는, 상기 압축데이터그룹(CG)에 대응되는 상기 비압축데이터그룹(NCG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 구성요소 및 상기 p 번째로 생성되는 구성요소를 생성하는 시점까지 이미 사용되었던 상기 비압축데이터그룹(NCG)의 구성요소들만을 기초로 생성될 수 있다.
이때, 상기 디코딩부(630)는, 상기 압축된 출력어레이(340)를 디코딩하여 상기 입력어레이(310)를 복원할 때에, 상기 입력어레이(310)를 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 순차적으로 복원하도록 되어 있을 수 있다.
이때, 상기 압축된 출력어레이(340)는 복수 개의 압축데이터그룹(CG)들로 구분될 수 있다.
그리고 상기 디코딩부(630)는, 각각의 상기 압축데이터그룹(CG)을 디코딩하여 상기 압축데이터그룹(CG)에 대응하는 비압축데이터그룹(NCG)을 복원하도록 되어 있을 수 있다.
이때, 상기 복원된 입력어레이(310)는 복수 개의 상기 복원된 비압축데이터그룹(NCG)들로 구성될 수 있다.
그리고 상기 디코딩부(630)는, 각각의 상기 압축데이터그룹(CG)을 디코딩하여 상기 비압축데이터그룹(NCG)을 복원할 때에, 상기 비압축데이터그룹(NCG)을 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 순차적으로 복원하도록 되어 있을 수 있다.
이때, 상기 비압축데이터그룹(NCG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 p 번째로 복원되는 구성요소는 상기 압축데이터그룹(CG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 카운트되는 p 번째 인덱스를 갖는 구성요소 및 상기 p 번째로 복원되는 구성요소를 복원하는 시점까지 이미 복원되어 있던 상기 비압축데이터그룹(NCG)의 구성요소들만을 기초로 복원될 수 있다.
이때, 상기 출력어레이(330)는 복수 개의 비압축데이터그룹(NCG)들로 구분될 수 있다.
그리고 상기 압축부(620)는, 각각의 상기 비압축데이터그룹(NCG)을 압축하여 상기 비압축데이터그룹(NCG)에 대응하는 압축데이터그룹(CG)을 생성하도록 되어 있을 수 있다.
이때, 상기 압축된 출력어레이(340)는 복수 개의 상기 생성된 압축데이터그룹(CG)들로 구성될 수 있다.
그리고 상기 압축된 출력어레이(340)를 메모리(11, 13)에 저장하기 위해 상기 생성된 복수 개의 상기 압축데이터그룹(CG)들을 상기 메모리에 제공하도록 되어 있을 수 있다.
이때, 상기 압축된 출력어레이(340)로부터 입력어레이(310)를 복원하기 위해 상기 메모리로부터 복수 개의 상기 압축데이터그룹(CG)들을 순차적으로 읽어 들이도록 되어 있을 수 있다.
이때, 상기 출력어레이(330)는 상기 미리 결정된 디멘젼 방향(91)을 따라 복수 개의 비압축데이터그룹(NCG)들을 포함할 수 있다.
그리고 상기 압축된 출력어레이(340)는 상기 미리 결정된 디멘젼 방향(91)을 따라 복수 개의 압축데이터그룹(NCG)들을 포함할 수 있다.
이때, 상기 압축된 출력어레이(340)로부터 입력어레이(310)를 복원하기 위해 상기 메모리로부터 복수 개의 상기 압축데이터그룹(CG)들을 읽어 들일 때에, 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 복수 개의 상기 압축데이터그룹(CG)들을 읽어 들일 수 있다.
이하, 특히 도 9a를 참조하여 설명한다.
이때, 상기 미리 결정된 디멘젼 방향(91)과는 다른 디멘젼 방향(92)의 제2지점(ex: 102)에서 상기 미리 결정된 디멘젼 방향(91)을 따라 정렬되는 임의의 비압축데이터그룹(NCG102, NCG107)에 속한 임의의 구성요소를 디코딩하기 이전에, 상기 다른 디멘젼 방향(92)의 제1지점에(ex: 101)서 상기 미리 결정된 디멘젼 방향(91)을 따라 정렬되는 모든 복수 개의 비압축데이터그룹(NCG101, NCG106)들로 구성된 제1열의 비압축데이터그룹(NCG101, NCG106)들에 속한 모든 구성요소들을 디코딩하도록 되어 있을 수 있다.
이때. 상기 제1열의 비압축데이터그룹(NCG101, NCG106)들에 속한 모든 구성요소들을 디코딩할 때에, 상기 입력어레이(310)의 구성요소들 중 상기 다른 디멘젼 방향(92)의 제4지점(ex: 114)에서 상기 미리 결정된 디멘젼 방향(91)을 따라 배치되는 임의의 구성요소(ex: 인덱스 2, 12, 22, 32, 42, 52, 62, 72, 82, 또는 92)를 디코딩하기 이전에, 상기 입력어레이(310)의 구성요소들 중 상기 다른 디멘젼 방향(92)의 제3지점(ex: 113)에서 상기 미리 결정된 디멘젼 방향을 따라 배치되는 모든 구성요소들(ex: 인덱스 1, 11, 21, 31, 41, 51, 61, 71, 81, 및 91)을 디코딩하도록 되어 있을 수 있다.
이때, 상기 제1열의 비압축데이터그룹(NCG101, NCG106)들에 속한 모든 구성요소들을 디코딩할 때에, 상기 제1열의 비압축데이터그룹(NCG101, NCG106)들 중 제1비압축데이터그룹(NCG101)에 속한 일부의 구성요소인 제1세트의 구성요소들(ex: 인덱스 1, 11, 21, 31, 41)을 디코딩한 이후에, 상기 제1열의 비압축데이터그룹(NCG101, NCG106)들 중 제2비압축데이터그룹(NCG106)에 속한 일부의 구성요소인 제2세트의 구성요소들(ex: 인덱스 51, 61, 71, 81, 91)을 디코딩하고, 상기 제2세트의 구성요소들을 디코딩한 이후에 상기 제1비압축데이터그룹(NCG101)에 속한 다른 일부의 구성요소인 제3세트의 구성요소들(ex: 인덱스 2, 12, 22, 32, 42)을 디코딩하도록 되어 있을 수 있다.
본 발명의 일 실시예에 따라 상술한 하드웨어 가속기(110) 및 메모리(ex: DRAM, 11, 13), 버스(700), 및 타 하드웨어들(99)를 포함하는, 컴퓨팅 장치(1)가 제공될 수 있다.
도 12는 본 발명의 일 실시예에 따라 제공되는 신경망 가속부의 입력어레이 또는 출력어레이의 형태를 나타낸 개념도이다.
도 1 내지 도 11에서는 출력어레이 및 입력어레이가 2차원 어레이형태를 갖는 것으로 제시하였으나, 출력어레이 또는 입력어레이는 도 12와 같이 3차원 어레이형태를 가질 수 있다. 또한, 도시되지 않은 4차원 이상의 디멘젼을 갖는 어레이형태를 가질 수도 있다. 그러나 본 발명은 상기 출력어레이 또는 입력어레이가 3차원 이상의 다차원인 경우에도 적용될 수 있음을 이해할 수 있다.
상술한 본 발명의 실시예들을 이용하여, 본 발명의 기술 분야에 속하는 자들은 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에 다양한 변경 및 수정을 용이하게 실시할 수 있을 것이다. 특허청구범위의 각 청구항의 내용은 본 명세서를 통해 이해할 수 있는 범위 내에서 인용관계가 없는 다른 청구항에 결합될 수 있다.

Claims (15)

  1. 삭제
  2. 데이터 연산부;
    출력어레이를 압축하여 압축된 출력어레이를 생성하는 압축부; 및
    상기 압축된 출력어레이로부터 입력어레이를 복원하는 디코딩부;
    를 포함하며,
    상기 압축부는, 상기 압축된 출력어레이를 구성하는 구성요소들을 미리 결정된 디멘젼 방향에 우선순위를 두어 순차적으로 생성하도록 되어 있고,
    상기 입력어레이(310)의 구성요소들은 상기 미리 결정된 디멘젼 방향에 우선순위를 두어 상기 데이터 연산부에게 순차적으로 입력되도록 되어 있고,
    상기 입력어레이(310)의 구성요소들 중 상기 미리 결정된 디멘젼 방향(91)과는 다른 디멘젼 방향(92)의 제3지점(113)에서 상기 미리 결정된 디멘젼 방향을 따라 배치되는 모든 구성요소들을 디코딩한 이후에, 상기 입력어레이(310)의 구성요소들 중 상기 다른 디멘젼 방향(92)의 제4지점(114)에 속한 구성요소의 디코딩을 시작하도록 되어 있는 것을 특징으로 하는,
    하드웨어 가속기.
  3. 제2항에 있어서,
    상기 출력어레이는 복수 개의 비압축데이터그룹들로 구분되며,
    상기 압축부는, 각각의 상기 비압축데이터그룹을 압축하여 상기 비압축데이터그룹에 대응하는 압축데이터그룹을 생성하도록 되어 있으며,
    상기 압축된 출력어레이는 복수 개의 상기 생성된 압축데이터그룹들로 구성되며,
    상기 압축부는, 각각의 상기 비압축데이터그룹을 압축하여 상기 압축데이터그룹을 생성할 때에, 상기 압축데이터그룹을 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향에 우선순위를 두어 순차적으로 생성하도록 되어 있는,
    하드웨어 가속기.
  4. 제3항에 있어서,
    상기 압축데이터그룹(CG) 내에서 p 번째로 생성되는 구성요소는,
    상기 압축데이터그룹(CG)에 대응되는 상기 비압축데이터그룹(NCG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 카운트되는 첫 번째 인덱스 내지 p 번째 인덱스를 갖는 구성요소; 및
    상기 p 번째로 생성되는 구성요소를 생성하는 시점까지 이미 사용되었던 상기 비압축데이터그룹(NCG)의 구성요소들;
    만을 기초로 생성되는 것을 특징으로 하는,
    하드웨어 가속기.
  5. 제2항에 있어서,
    상기 디코딩부(630)는, 상기 압축된 출력어레이(340)를 디코딩하여 상기 입력어레이(310)를 복원할 때에, 상기 입력어레이(310)를 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 순차적으로 복원하도록 되어 있는 것을 특징으로 하는,
    하드웨어 가속기.
  6. 제5항에 있어서,
    상기 압축된 출력어레이(340)는 복수 개의 압축데이터그룹(CG)들로 구분되며,
    상기 디코딩부(630)는, 각각의 상기 압축데이터그룹(CG)을 디코딩하여 상기 압축데이터그룹(CG)에 대응하는 비압축데이터그룹(NCG)을 복원하도록 되어 있으며,
    상기 복원된 입력어레이(310)는 복수 개의 상기 복원된 비압축데이터그룹(NCG)들로 구성되며,
    상기 디코딩부(630)는, 각각의 상기 압축데이터그룹(CG)을 디코딩하여 상기 비압축데이터그룹(NCG)을 복원할 때에, 상기 비압축데이터그룹(NCG)을 구성하는 구성요소들을 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 순차적으로 복원하도록 되어 있는,
    하드웨어 가속기.
  7. 제6항에 있어서,
    상기 비압축데이터그룹(NCG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 p 번째로 복원되는 구성요소는,
    상기 압축데이터그룹(CG)에서 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 카운트되는 첫 번째 인덱스 내지 p 번째 인덱스를 갖는 구성요소; 및
    상기 p 번째로 복원되는 구성요소를 복원하는 시점까지 이미 복원되어 있던 상기 비압축데이터그룹(NCG)의 구성요소들;
    만을 기초로 복원되는 것을 특징으로 하는,
    하드웨어 가속기.
  8. 제2항에 있어서,
    상기 출력어레이(330)는 복수 개의 비압축데이터그룹(NCG)들로 구분되며,
    상기 압축부(620)는, 각각의 상기 비압축데이터그룹(NCG)을 압축하여 상기 비압축데이터그룹(NCG)에 대응하는 압축데이터그룹(CG)을 생성하도록 되어 있으며,
    상기 압축된 출력어레이(340)는 복수 개의 상기 생성된 압축데이터그룹(CG)들로 구성되며,
    상기 압축된 출력어레이(340)를 메모리에 저장하기 위해 상기 생성된 복수 개의 상기 압축데이터그룹(CG)들을 상기 메모리에 제공하도록 되어 있으며,
    상기 압축된 출력어레이(340)로부터 입력어레이(310)를 복원하기 위해 상기 메모리로부터 복수 개의 상기 압축데이터그룹(CG)들을 순차적으로 읽어 들이도록 되어 있는 것을 특징으로 하는,
    하드웨어 가속기.
  9. 제8항에 있어서,
    상기 출력어레이(330) 내에서 상기 미리 결정된 디멘젼 방향(91)을 따라 2개 이상의 상기 비압축데이터그룹(NCG)들이 배열되어 있고,
    상기 압축된 출력어레이(340) 내에서 상기 미리 결정된 디멘젼 방향(91)을 따라 2개 이상의 상기 압축데이터그룹(CG)들이 배열되어 있고,
    상기 압축된 출력어레이(340)로부터 입력어레이(310)를 복원하기 위해 상기 메모리로부터 복수 개의 상기 압축데이터그룹(CG)들을 읽어 들일 때에, 상기 미리 결정된 디멘젼 방향(91)에 우선순위를 두어 복수 개의 상기 압축데이터그룹(CG)들을 읽어 들이는 것을 특징으로 하는,
    하드웨어 가속기.
  10. 제9항에 있어서,
    상기 미리 결정된 디멘젼 방향(91)과는 다른 디멘젼 방향(92)의 제1지점에(101)서 상기 미리 결정된 디멘젼 방향(91)을 따라 정렬되는 모든 복수 개의 비압축데이터그룹(NCG)들로 구성된 제1열의 비압축데이터그룹(NCG)들에 속한 모든 구성요소들을 디코딩한 이후에, 상기 다른 디멘젼 방향(92)의 제2지점(102)에서 상기 미리 결정된 디멘젼 방향(91)을 따라 정렬되는 비압축데이터그룹(NCG)들에 속한 구성요소들의 디코딩을 시작하도록 되어 있는,
    하드웨어 가속기.
  11. 제10항에 있어서,
    상기 제1열의 비압축데이터그룹(NCG)들 중 제1비압축데이터그룹에 속한 구성요소들을 디코딩할 때에,
    상기 제1비압축데이터그룹의 구성요소들 중 상기 다른 디멘젼 방향(92)의 제3지점(113)에서 상기 미리 결정된 디멘젼 방향을 따라 배치되는 모든 구성요소들을 디코딩한 이후에, 상기 제1비압축데이터그룹의 구성요소들 중 상기 다른 디멘젼 방향(92)의 제4지점(114)에 속한 구성요소들의 디코딩을 시작하도록 되어 있는 것을 특징으로 하는,
    하드웨어 가속기.
  12. 삭제
  13. 제2항에 있어서, 상기 제3지점(113)과 상기 제4지점(114)은 서로 다른 비압축데이터그룹에 속한 것인, 하드웨어 가속기.
  14. 제10항에 있어서,
    상기 제1열의 비압축데이터그룹(NCG)들에 속한 모든 구성요소들을 디코딩할 때에,
    상기 제1열의 비압축데이터그룹(NCG)들 중 제1비압축데이터그룹(NCG101)에 속한 일부의 구성요소인 제1세트의 구성요소들을 디코딩한 이후에, 상기 제1열의 비압축데이터그룹(NCG)들 중 제2비압축데이터그룹(NCG106)에 속한 일부의 구성요소인 제2세트의 구성요소들을 디코딩하고, 상기 제2세트의 구성요소들을 디코딩한 이후에 상기 제1비압축데이터그룹(NCG101)에 속한 다른 일부의 구성요소인 제3세트의 구성요소들을 디코딩하도록 되어 있는 것을 특징으로 하는,
    하드웨어 가속기.
  15. 제2항 내지 제11항, 제13항, 및 제14항 중 어느 한 항의 하드웨어 가속기; 및
    DRAM;
    을 포함하는,
    컴퓨팅 장치.
KR1020200107051A 2020-08-25 2020-08-25 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기 KR102384587B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200107051A KR102384587B1 (ko) 2020-08-25 2020-08-25 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기
PCT/KR2020/015477 WO2022045448A1 (ko) 2020-08-25 2020-11-06 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200107051A KR102384587B1 (ko) 2020-08-25 2020-08-25 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기

Publications (2)

Publication Number Publication Date
KR20220026251A KR20220026251A (ko) 2022-03-04
KR102384587B1 true KR102384587B1 (ko) 2022-04-08

Family

ID=80353376

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200107051A KR102384587B1 (ko) 2020-08-25 2020-08-25 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기

Country Status (2)

Country Link
KR (1) KR102384587B1 (ko)
WO (1) WO2022045448A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020521195A (ja) * 2017-05-19 2020-07-16 グーグル エルエルシー ニューラルネットワーク処理のスケジューリング

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170068458A1 (en) * 2015-09-03 2017-03-09 Qualcomm Incorporated Hardware-accelerated storage compression
US10330773B2 (en) * 2016-06-16 2019-06-25 Texas Instruments Incorporated Radar hardware accelerator
CN107832839B (zh) * 2017-10-31 2020-02-14 南京地平线机器人技术有限公司 执行卷积神经网络中的运算的方法和装置
KR102667134B1 (ko) * 2018-12-07 2024-05-20 서울대학교산학협력단 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020521195A (ja) * 2017-05-19 2020-07-16 グーグル エルエルシー ニューラルネットワーク処理のスケジューリング

Also Published As

Publication number Publication date
WO2022045448A1 (ko) 2022-03-03
KR20220026251A (ko) 2022-03-04

Similar Documents

Publication Publication Date Title
CN110520909B (zh) 使用激活数据的压缩和解压缩来减少存储器带宽利用率的神经网络处理器
US11595062B2 (en) Decompression apparatus for decompressing a compressed artificial intelligence model and control method thereof
CN114764407B (zh) 加速器和词典解码的近存储加速的方法
CN1598876A (zh) 输出多位元影像数据的控制装置、系统与方法
WO2023227077A1 (en) Method for training a neural network with flexible feature compression capability, and neural network system with flexible feature compression capability
US9137336B1 (en) Data compression techniques
CN117435855B (zh) 用于进行卷积运算的方法、电子设备和存储介质
CN110569970B (zh) 一种应用于卷积神经网络中硬件加速器的数据传输方法
CN116521611A (zh) 一种深度学习处理器的泛化架构设计方法
KR102384587B1 (ko) 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기
CN115913245A (zh) 数据编码方法、数据解码方法以及数据处理装置
CN107609646B (zh) 一种残差网络实现方法、系统、设备及计算机存储介质
CN115828044B (zh) 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置
KR102299084B1 (ko) 하드웨어 가속기의 출력 데이터를 메모리에 저장하는 방법, 하드웨어 가속기의 입력 데이터를 메모리로부터 읽는 방법, 및 이를 위한 하드웨어 가속기
CN114118394A (zh) 神经网络模型的加速方法和装置
CN111832692A (zh) 数据处理方法、装置、终端及存储介质
JP7481167B2 (ja) 圧縮データの解凍システム及びメモリシステム並びにデータ解凍方法
EP0831404A2 (en) Two-dimensional inverse discrete cosine transform circuit
JP2851804B2 (ja) 2次元直交変換装置
Fajardo et al. Reducing the I/O Bottleneck by a Compression Strategy.
KR102420763B1 (ko) 뉴럴 네트워크 시스템 및 뉴럴 네트워크의 필터 데이터의 처리 방법
KR102572429B1 (ko) 압축된 다차원 행렬 곱셈 방법, 연산 장치 및 프로그램을 저장하는 저장매체
Qureshi et al. A comparative study of parallelization strategies for fractal image compression on a cluster of workstations
GB2620473A (en) Method for permuting dimensions of a multi-dimensional tensor
JPH09160898A (ja) 粒子座標及び時系列粒子座標圧縮方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant