KR20210045224A - 데이터를 처리하는 방법 및 장치 - Google Patents

데이터를 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR20210045224A
KR20210045224A KR1020190128714A KR20190128714A KR20210045224A KR 20210045224 A KR20210045224 A KR 20210045224A KR 1020190128714 A KR1020190128714 A KR 1020190128714A KR 20190128714 A KR20190128714 A KR 20190128714A KR 20210045224 A KR20210045224 A KR 20210045224A
Authority
KR
South Korea
Prior art keywords
compressed data
data
valid
rule
matrix
Prior art date
Application number
KR1020190128714A
Other languages
English (en)
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 KR1020190128714A priority Critical patent/KR20210045224A/ko
Priority to US16/857,740 priority patent/US11436477B2/en
Priority to CN202010410622.7A priority patent/CN112668689A/zh
Publication of KR20210045224A publication Critical patent/KR20210045224A/ko
Priority to US17/876,136 priority patent/US11886985B2/en

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/08Learning methods
    • 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
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

일 측면에 따른 데이터를 처리하는 방법은, 제1 매트릭스 데이터에 포함된 유효 엘리먼트들 간의 상대적인 거리를 나타내는 정보에 기초하여 제1 매트릭스 데이터의 압축 데이터를 생성하는 단계, 상기 압축 데이터를 기초로 제2 매트릭스 데이터를 호출(fetching)하는 단계 및 상기 압축 데이터와 상기 제2 매트릭스 데이터를 이용하여 출력 데이터를 연산하는 단계를 포함한다.

Description

데이터를 처리하는 방법 및 장치 {A method and an apparatus for processing data}
데이터를 처리하는 방법 및 장치에 관한다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하고 있다.
뉴럴 네트워크 장치는 유효한 정보를 추출하기 위하여 입력 데이터와 웨이트 매트릭스(matrix)를 산술 연산하므로, 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다 할 것이다.
데이터를 처리하는 방법 및 장치를 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
일 측면에 따른 데이터를 처리하는 방법은, 제1 매트릭스 데이터에 포함된 유효 엘리먼트들 간의 상대적인 거리를 나타내는 정보에 기초하여 상기 제1 매트릭스 데이터의 압축 데이터를 생성하는 단계; 상기 압축 데이터를 기초로 제2 매트릭스 데이터를 호출(fetching)하는 단계; 및 상기 압축 데이터와 상기 제2 매트릭스 데이터를 이용하여 출력 벡터를 연산하는 단계;를 포함한다.
다른 측면에 따른 비휘발성 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 포함한다.
또 다른 측면에 따른 데이터를 처리하는 장치는, 메모리 및 프로세서를 포함하고, 프로세서는 제1 매트릭스 데이터에 포함된 유효 엘리먼트들 간의 상대적인 거리를 나타내는 정보에 기초하여 상기 제1 매트릭스 데이터의 압축 데이터를 생성하고, 상기 압축 데이터를 기초로 제2 매트릭스 데이터를 호출(fetching)하고, 상기 압축 데이터와 상기 제2 매트릭스 데이터를 이용하여 출력 벡터를 연산한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 구성을 나타내는 도면이다.
도 2는 데이터 처리 장치의 일 예를 도시한 구성도이다.
도 3은 데이터를 처리하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 4는 프로세서가 데이터를 압축하는 방법의 일 예를 설명하기 위한 도면이다.
도 5는 프로세서가 압축 데이터를 저장 하는 방법의 일 예를 설명하기 위한 도면이다.
도 6은 프로세서가 압축 데이터를 분할하여 저장하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 7은 프로세서가 분할된 압축 데이터를 저장하는 방법의 일 예를 설명하기 위한 도면이다.
도 8는 프로세서가 압축 데이터를 이용하여 출력 데이터를 연산하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 9는 프로세서가 압축 데이터를 이용하여 출력 데이터를 연산하는 방법의 일 예를 설명하기 위한 도면이다.
실시 예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…유닛”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 실시 예에 대하여 상세히 설명한다. 그러나 실시 예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
이하에서는 도면을 참조하여 실시예들을 상세히 설명한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 구성을 나타내는 도면이다.
도 1을 참고하면, 입력 레이어(input layer), 히든 레이어들(hidden layers) 및 출력 레이어(output layer)를 포함하는 뉴럴 네트워크(10)의 예시가 도시되어 있다. 뉴럴 네트워크(10)는 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
뉴럴 네트워크(10)는 2개 이상의 히든 레이어들을 포함하는 딥 뉴럴 네트워크(Deep Neural Network: DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)일 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 뉴럴 네트워크(10)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. DNN은 CNN, RNN, FNN, Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나, 이에 제한되지 않는다.
한편, 도 1에서 뉴럴 네트워크(10)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(10)는 더 적거나 많은 레이어들을 포함할 수 있다. 또한, 뉴럴 네트워크(10)는 도 1에 도시된 것과는 다른 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각은 “뉴런(neuron)”, “프로세싱 엘리먼트(Processing element: PE)”, “유닛(unit)”, “노드(node)” 또는 이와 유사한 용어들로 알려진, 복수의 인공 뉴런(artificial neuron)들을 포함할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, Layer 1은 2개의 뉴런들, Layer 2는 3개의 뉴런들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(10)에 포함된 레이어들 각각은 다양한 개수의 뉴런들을 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각에 포함된 뉴런들은 서로 연결되어 데이터를 교환할 수 있다. 예를 들어, 하나의 뉴런은 이전 레이어의 다른 뉴런들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 다음 레이어의 또 다른 뉴런들로 출력할 수 있다.
뉴런들 각각의 출력 값은 액티베이션(activation)이라고 불릴 수 있다. 액티베이션은 한 뉴런의 출력 값이면서, 다음 레이어에 포함된 뉴런들의 입력 값일 수 있다. 한편, 뉴런들 각각은 이전 레이어에 포함된 뉴런들로부터 수신된 액티베이션들 및 웨이트(weight)들에 기초하여 자신의 액티베이션 값을 결정할 수 있다. 웨이트는 각 뉴런에서의 액티베이션을 계산하기 위해 이용되는 파라미터로서, 뉴런들 간의 연결관계에 할당되는 값일 수 있다. 웨이트는 뉴런들을 연결하는 시냅스에 저장될 수 있다.
뉴런들 각각은 입력을 받아 액티베이션을 출력하는 연산 유닛(computational unit)일 수 있고, 입력-출력을 매핑할 수 있다. 예를 들어, σ는 활성화 함수(activation function)이고,
Figure pat00001
는 (i-1) 번째 레이어에 포함된 k 번째 뉴런으로부터 i 번째 레이어에 포함된 j번째 뉴런으로의 웨이트이며,
Figure pat00002
는 i 번째 레이어에 포함된 j 번째 뉴런의 바이어스(bias)이고,
Figure pat00003
는 i 번째 레이어의 j 번째 뉴런의 액티베이션이라고 할 때, 액티베이션
Figure pat00004
는 다음과 같은 수학식 1을 따를 수 있다.
Figure pat00005
수학식 1과 같이, 뉴럴 네트워크 연산은 이전 레이어의 뉴런의 출력 값과 시냅스의 웨이트를 곱하는 곱셈 연산과 각 곱셈의 결과값들을 수신 뉴런에서 더하는 덧셈 연산을 포함할 수 있다.
이와 같이, 뉴럴 네트워크(10)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 따라서, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시킬 수 있는 기술이 요구되나, 종래에는 연산기의 위치나 종류에 대해서만 고려할 뿐, 웨이트 매트릭스(weight matrix)의 성김(sparsity) 특성을 고려한 연산 방법은 고려하지 않았다. 이하에서는 웨이트 매트릭스의 성김(sparsity) 특성을 고려한 웨이트 매트릭스의 압축 데이터 생성 방법 및 웨이트 매트릭스와 입력 데이터의 연산 방법에 대해 살펴본다.
도 2는 데이터 처리 장치의 일 예를 도시한 구성도이다.
도 2를 참조하면, 데이터 처리 장치(200)는 메모리(210) 및 프로세서(220)를 포함한다. 도 2의 데이터 처리 장치(200)는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 데이터 처리 장치(200)에 더 포함될 수 있음은 통상의 기술자에게 자명하다.
데이터 처리 장치(200)는 도 1의 뉴럴 네트워크가 구현된 장치일 수 있다. 예를 들어, 데이터 처리 장치(200)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다. 구체적인 예로서, 데이터 처리 장치(200)는 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등에 포함될 수 있으나, 이에 제한되지 않는다. 또한, 데이터 처리 장치(200)는 상술한 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수도 있다.
메모리(210)는 데이터 처리 장치(200) 내에서 처리되는 각종 데이터들을 저장한다. 예를 들어, 메모리(210)는 데이터 처리 장치(200)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(210)는 데이터 처리 장치(200)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다.
예를 들어, 메모리(210)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
프로세서(220)는 데이터 처리 장치(200)에서 뉴럴 네트워크를 구동하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(220)는 메모리(210)에 저장된 프로그램들을 실행함으로써, 데이터 처리 장치(200)를 전반적으로 제어한다. 일 실시예에서 프로세서(220)는 메모리(210) 내부에 배치되어 프로세싱 인 메모리(Processing In Memory: PIM) 형태로 구현될 수 있다.
프로세서(220)는 메모리(210)로부터 데이터(예를 들어, 이미지 데이터, 피처맵 데이터, 커널 데이터 등)를 리드/라이트(read/write)하고, 리드/라이트된 데이터를 이용하여 PIM 연산을 수행한다. 이 때, PIM 연산은 덧셈(addition), 곱셈(multiplication), 누산(accumulation) 등과 같은 산술 연산 및 AND, OR, XOR 등과 같은 논리 연산 중 적어도 하나를 포함하는 연산 동작을 의미할 수 있다. 일 예에서, 데이터 처리 장치(200)가 RNN(Recurrent Neural Network)을 구현하기 위해 사용되는 경우, PIM 연산은 매트릭스 벡터 곱(Matrix Vector Multiplication: MV-Mul) 연산일 수 있다.
프로세서(220)는 PIM 연산을 수행하기 위하여, 연산기(computation circuit)를 포함할 수 있다. 연산기는 메모리(210) 내부에서 연산 작업을 수행하는 하드웨어를 의미할 수 있다. 연산기 각각은 다수의 논리 게이트의 어레이(array)로 구현될 수 있고, 논리 게이트들의 어레이와 데이터를 일시적으로 저장하는 버퍼의 조합으로 구현될 수도 있다.
실시예에 따라 데이터 처리 장치(200)는 복수의 메모리(210)를 포함할 수 있고, 프로세서(220)는 각각의 메모리(210)의 내부에 구비될 수 있다. 이때, 메모리(210)는 데이터를 뱅크(bank)에 저장하고, 각각의 메모리(210)에 대응되는 프로세서(220)는 뱅크로부터 데이터를 독출(reak)하여 연산을 수행할 수 있다. 또한, 프로세서(220)는 연산의 결과를 대응되는 뱅크에 다시 기록(write)할 수 있다.
한편, 프로세서(220)가 데이터들간의 곱(multiplication) 연산(예를 들어, 매트릭스와 매트릭스의 곱 연산, 매트릭스와 벡터의 곱 연산, 벡터와 벡터의 곱 연산 등)을 수행하는 경우, 연산의 대상인 데이터에 유효하지 않은 정보가 포함되면, 해당 연산은 불필요한 연산이 된다. 예를 들어, 유효하지 않은 정보는 '0'으로 표현될 수 있고, 연산의 대상인 데이터가 0인 경우, 해당 데이터 간의 곱 연산은 0으로 출력되므로, 이러한 연산은 프로세서(220)의 연산량을 증가시킬 뿐이다.
종래에는 이러한 문제점을 해결하기 위하여, DRAM 다이(Die)들을 분할(partition)하고, 분할 된 구역의 연산을 처리하기 위한 SIMD(Single Instruction Multiple Data) MAC 유닛을 사용하거나, MAC 유닛의 누산기(accumulation operation)를 DRAM 뱅크에 가깝게 배치시킴으로써, 메모리의 접속 빈도를 감소 시켰다. 그러나, 이러한 MAC 유닛의 종류 변경 및 위치 변경은 설계 변경을 전제로 하므로, 많은 시간과 비용이 소요된다는 문제가 있다. 이에 반해, 본 개시에 따른 데이터 처리 장치(200)는 처리되어야할 데이터의 성김(sparsity) 특성을 고려하여 데이터를 압축하고, 압축 데이터를 기초로 출력 데이터를 생성하므로, 상술한 설계 변경 없이도, 데이터의 연산량을 현저하게 감소시킬 수 있다는 이점이 있다.
이하, 도 3 내지 도 9를 참조하여, 데이터 처리 장치(200)가 데이터의 성김 특성을 고려하여 데이터를 압축하고, 압축 데이터를 기초로 출력 데이터를 생성하는 예를 설명한다.
도 3은 데이터를 처리하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 3을 참조하면, 데이터를 처리하는 방법은 도 2에 도시된 데이터 처리 장치(200)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 할지라도, 도 2에서 도시된 데이터 처리 장치(200)에 관하여 이상에서 기술된 내용은 도 3의 데이터를 처리하는 방법에도 적용됨을 알 수 있다.
S310 단계에서, 프로세서(220)는 제1 매트릭스 데이터에 포함된 유효 엘리먼트들 간의 상대적인 거리를 나타내는 정보에 기초하여 제1 매트릭스 데이터의 압축 데이터를 생성할 수 있다.
제1 매트릭스 데이터는 데이터들간의 곱 연산에 사용되는 엘리먼트 값들이 매트릭스 형태로 표현된 데이터를 의미할 수 있다. 제1 매트릭스 데이터는, 적어도 하나의 행을 포함할 수 있다. 이때, 매트릭스는 벡터 매트릭스(vector matrix)를 포함하는 개념일 수 있다. 일 실시예에서, 매트릭스 데이터는 커널의 엘리먼트 값인 웨이트(weight)가 매트릭스 형태로 표현된 웨이트 매트릭스(weight matrix)일 수 있다. 이하에서는 설명의 편의를 위해, 제1 매트릭스 데이터가 웨이트 매트릭스인 것으로 설명하나 이에 제한되지 않는다.
웨이트는 각 뉴런에서 액티베이션을 연산하기 위해 이용되는 파라미터로서 매트릭스 형태로 메모리(210)에 저장될 수 있다. 웨이트 매트릭스에 포함되는 엘리먼트들은 각각 웨이트 값 정보 및 주소 정보를 포함할 수 있다.
웨이트 값은 뉴런들 간의 연결관계를 기초로 할당되는 값을 의미한다. 웨이트 값이 클수록 대응하는 두 개의 노드들 간의 연결성이 강화됨을 의미하고, 웨이트 값이 작을수록 두 개의 노드들 간의 연결성이 약화됨을 의미할 수 있다. 예를 들어, 웨이트 값은 0 부터 10 사이의 값을 가질 수 있으나, 이에 제한되지 않는다.
주소 정보는 행(row) 주소 정보 및 열(column) 주소 정보를 포함할 수 있다. 주소 정보는 입력 벡터의 호출(fetching)을 위해 사용될 수 있으며, 웨이트 매트릭스에서 웨이트 값의 위치를 나타내는 정보일 수 있다.
일 실시예에서, 유효 엘리먼트는 유의미한 매트릭스 벡터 곱(Matrix Vector Multiplication: MV-Mul) 연산이 수행될 수 있는 데이터를 의미할 수 있다. 웨이트 매트릭스에 포함된 어느 하나의 웨이트 값이 '0'인 경우, 대응되는 출력 벡터의 엘리먼트는 0이 된다. 따라서, 유효 엘리먼트는 '0'이 아닌 웨이트 값을 가지는 엘리먼트를 의미할 수 있다. 바꾸어 말하면, 매트릭스 벡터 곱 연산에 무의미한, 무효 엘리먼트는 웨이트 값이 '0'인 엘리먼트를 의미할 수 있다.
프로세서(220)는 유효 엘리먼트들의 정보만이 압축 데이터에 포함되도록 압축 데이터를 생성할 수 있다. 뉴럴 네트워크에서 웨이트 매트릭스가 높은 성김(sparsity) 특성을 갖는다는 점에서, 본 개시에 따른 데이터 처리 장치(200)는 매트릭스 벡터 곱 연산의 연산량을 현저하게 감소시킬 수 있다는 이점이 있다.
여기에서 성김은 데이터에 공백이 있는지 여부 또는 공백이 포함된 데이터의 상태를 의미한다. 상술한 바에 따르면, 웨이트 매트릭스 내의 유효 엘리먼트는 '0'이 아닌 숫자인 데이터로 표현될 수 있다. 따라서 '0'인 데이터는 무의미한 정보를 의미하며, 이는 해당 데이터가 공백인 것(즉, 데이터가 없는 것)으로도 해석될 수 있다.
프로세서(220)는 유효 엘리먼트들 간의 상대적인 거리를 나타내는 정보에 기초하여 웨이트 매트릭스의 압축 데이터를 생성할 수 있다. 상대적인 거리는 유효 엘리먼트들 간의 열 거리(column distance)를 나타낼 수 있다. 예를 들어, 제1 유효 엘리먼트의 열 주소가 2이고, 제2 유효 엘리먼트의 열 주소가 6인 경우, 제1 유효 엘리먼트와 제2 유효 엘리먼트의 상대적인 거리는 4일 수 있다. 프로세서(220)는 제2 유효 엘리먼트의 압축 시, 제2 유효 엘리먼트의 주소 정보에 열 주소인 6이 아닌 4를 입력할 수 있다. 주소 정보는 인덱스 비트(index bit)로 표현되는데, 프로세서(220)가 압축 데이터에 열 주소 정보가 아닌 열 거리 정보를 입력함에 따라, 압축 데이터의 전체 크기가 현저하게 작아질 수 있다.
프로세서(220)는 유효 엘리먼트의 웨이트 값 및 현재 유효 엘리먼트로부터 이전 유효 엘리먼트까지의 열 거리 정보가 압축 데이터에 포함되도록 압축 데이터를 생성할 수 있다. 또한, 프로세서(220)는 유효 엘리먼트의 행 주소 및 행의 종료를 알리는 식별 비트(bit)를 압축 데이터에 포함되도록 압축 데이터를 생성할 수 있다. 프로세서(220)가 압축 데이터를 생성하는 예는 도 4를 참조하여 후술한다.
도 3에는 도시되지 않았으나, S310 단계 이후에, 웨이트 매트릭스의 유효 엘리먼트들이 행 단위로 독출(read)될 수 있도록 압축 데이터를 저장하는 단계를 더 포함할 수 있다.
프로세서(220)는 압축 데이터를 행 단위로 분할하고, 분할된 압축 데이터를 복수의 뱅크들의 제1 영역에 각각 저장할 수 있다. 본 개시의 데이터 처리 장치(200)는 PIM 형태로 구현될 수 있으므로, 압축 데이터를 복수의 뱅크들에 분리하여 저장하고, 각각의 프로세서(220)가 매트릭스 벡터 곱 연산을 분리하여 연산하는 경우, 보다 신속한 매트릭스 벡터 곱 연산이 가능하다는 이점이 있다.
한편, 웨이트 매트릭스에 포함된 유효 엘리먼트들의 분포는 불규칙하다는 점에서 어느 하나의 뱅크에 유효 엘리먼트들이 집중될 수 있다. 프로세서(220)는 압축된 데이터의 일부를 복사하여 복수의 뱅크들 중 어느 하나의 뱅크의 제2 영역에 저장함으로써, 부하 균형(load balancing)의 효과를 도출할 수 있다. 다시 말해, 할당된 유효 엘리먼트들의 벡터 곱 연산을 먼저 완료한 뱅크가, 벡터 곱 연산을 완료하지 못한 다른 뱅크의 매트릭스 벡터 곱 연산을 대신 수행함으로써, 부하가 균형적으로 분배될 수 있다. 프로세서(220)가 압축 데이터를 저장하는 예는 도 5 내지 도 7을 참조하여 후술한다.
S320 단계에서, 프로세서(220)는 압축 데이터를 기초로 제2 매트릭스 데이터를 호출할 수 있다.
제2 매트릭스 데이터는 데이터들간의 곱 연산에 사용되는 엘리먼트 값들이 행렬 형태로 표현된 데이터를 의미할 수 있다. 이때, 매트릭스는 벡터 매트릭스를 포함하는 개념일 수 있다. 일 실시예에서, 제2 매트릭스 데이터는 피처맵 데이터를 의미할 수 있다. 이하에서는 설명의 편의를 위해 제2 데이터가 피처맵 데이터인 것을 기초로 설명하나 이에 제한되지 않는다.
피처맵 데이터는 입력 피처맵 데이터 또는 출력 피처맵 데이터일 수 있다. 다시 말해, 이전 레이어에서의 출력 피처맵 데이터가 다음 레이어에서의 입력 피처맵 데이터가 될 수 있다. 따라서, S320 단계의 제2 매트릭스 데이터는 입력 피처맵 데이터일 수도 있고, 또는 출력 피처맵 데이터일 수도 있다. 제2 매트릭스 데이터는, 열 벡터 또는 행 벡터 형태로 표현될 수 있다.
프로세서(220)는 압축 데이터로부터 유효 엘리먼트들의 행 주소 및 열 주소를 획득할 수 있다. S310 단계에서, 프로세서(220)가 유효 엘리먼트들 간의 상대적인 거리를 나타내는 정보에 기초하여 제1 매트릭스 데이터의 압축 데이터를 생성하였으므로, 프로세서(220)는 현재 유효 엘리먼트의 열 거리 정보와 이전 유효 엘리먼트의 열 거리 정보를 합산함으로써, 열 주소를 획득할 수 있다. 또한, 프로세서(220)는 식별 비트를 기초로 현재 유효 엘리먼트의 행 주소를 획득할 수 있다. 프로세서(220)는 획득된 행 주소 및 열 주소에 대응하는 제2 매트릭스 데이터를 호출(fetching)할 수 있다.
S330 단계에서, 프로세서(220)는 압축 데이터와 제2 매트릭스 데이터를 이용하여 출력 데이터를 연산할 수 있다.
S330 단계에서, 프로세서(220)는 압축 데이터와 제2 매트릭스 데이터를 이용하여 출력 데이터를 연산할 수 있다.
프로세서(220)는 호출된 제2 매트릭스 데이터와 유효 엘리먼트를 맥(Multiply and Accumulation: MAC) 연산하여 출력 데이터를 연산할 수 있다. 출력 데이터는 매트릭스 형태로 표현될 수 있다. 따라서, 이하에서 출력 데이터와 출력 매트릭스 데이터는 혼용하여 사용될 수 있다. 출력 데이터는 벡터 형태로 표현될 수 있다. 각각의 출력 벡터들은 가산 트리(Adder Tree)를 통해 합산되어 출력 데이터로써 메모리(210)에 저장될 수 있다. 프로세서(220)가 MAC 연산을 수행하는 예는 도 8 내지 도 9를 참조하여 후술한다.
도 4는 프로세서가 데이터를 압축하는 방법의 일 예를 설명하기 위한 도면이다.
도 4에는 제1 매트릭스 데이터(410) 및 압축 데이터(420)가 도시되어 있다. 도 4의 제1 매트릭스 데이터(410)는 8행 8열의 매트릭스인 것으로 도시되어 있으나, 이에 제한되지 않는다. 예를 들어, 제1 매트릭스 데이터(410)는 1행 n열의 행 벡터(column vector)로 표현될 수도 있다.
도 4를 참조하면, 제1 매트릭스 데이터(410)는 복수의 유효 엘리먼트들(E1~E12)을 포함할 수 있다. 각각의 유효 엘리먼트들(E1~E12)은 '0'이 아닌 엘리먼트 값을 가질 수 있다.
프로세서(220)는 제1 매트릭스 데이터(410)의 동일한 행에 포함된 각각의 엘리먼트들 중에서 제1 유효 엘리먼트의 정보가 제1 규칙(rule)에 따라 압축 데이터(420)에 포함되도록 압축 데이터를 생성할 수 있다.
제1 유효 엘리먼트는 각각의 행의 첫 번째 유효 엘리먼트를 의미할 수 있다. 일 실시예에서, 첫 번째 유효 엘리먼트는 동일한 행에 포함된 유효 엘리먼트들 중, 가장 작은 열 주소를 가지는 유효 엘리먼트를 의미할 수 있다. 예를 들어, 도 4에서 제1 유효 엘리먼트들은 E1, E3, E5, E6, E7, E9, E11일 수 있다. 다른 실시예에서, 첫 번째 유효 엘리먼트는 동일한 행에 포함된 유효 엘리먼트들 중, 가장 큰 열 주소를 가지는 유효 엘리먼트를 의미할 수 있다. 예를 들어, 도 4에서 제1 유효 엘리먼트들은 E2, E4, E5, E6, E10, E12일 수 있다.
제1 규칙은 제1 유효 엘리먼트의 엘리먼트 값 정보 및 열 주소 정보를 압축 데이터에 할당하는 규칙일 수 있다. 예를 들어, 도 4에서 프로세서(220)는 E1의 엘리먼트 값인 w1과 열 주소 정보인 2를 압축 데이터에 할당할 수 있다. 프로세서(220)는 열 주소 정보를 인덱스 비트(index bit) 형태로 표현할 수 있는데, 인덱스 비트(index bit)가 4bit로 설정된 경우, 프로세서(220)는 E1의 열 주소를 0X2로 표현할 수 있다.
프로세서(220)는 제1 유효 엘리먼트를 제외한 적어도 하나의 제2 유효 엘리먼트의 정보가 제2 규칙(rule)에 따라 압축 데이터에 포함되도록 압축 데이터를 생성할 수 있다.
제2 유효 엘리먼트는 각각의 행에서 첫 번째 유효 엘리먼트를 제외한 나머지 유효 엘레먼트들을 의미할 수 있다. 예를 들어, 도 4에서 제2 유효 엘리먼트들은, E2, E4, E8, E10, E12일 수 있다.
제2 규칙은 제2 유효 엘리먼트의 엘리먼트 값 정보 및 제2 유효 엘리먼트로부터 제2 유효 엘리먼트 이전의 유효 엘리먼트까지의 열 거리(column distance) 정보를 압축 데이터에 할당하는 규칙일 수 있다. 예를 들어, 도 4에서 프로세서(220)는 E2의 엘리먼트 값인 w2와, E2로부터 E1까지의 열 거리(D) 정보인 4를 압축 데이터에 할당할 수 있다. 인덱스 비트(index bit)가 4bit로 설정된 경우, 프로세서(220)는 E2의 열 주소를 0X4로 표현할 수 있다. 데이터 처리 장치(200)가 제2 유효 엘리먼트의 열 주소 정보인 6이 아닌, 제2 유효 엘리먼트의 열 거리 정보인 4를 인덱스 비트로 표현함에 따라, 압축 데이터의 크기가 현저하게 작아질 수 있다.
프로세서(220)는 제1 유효 엘리먼트의 행 주소가 제3 규칙(rule)에 따라 압축 데이터에 포함되도록 압축 데이터를 생성할 수 있다.
제3 규칙은 제1 유효 엘리먼트의 행 주소 정보 및 제1 유효 엘리먼트가 포함된 행의 종료를 알리는 식별 비트를 압축 데이터에 할당하는 규칙일 수 있다. 예를 들어, 도 4에서, 프로세서(220)는 E2의 행 주소인 0과 식별비트인 0XF를 압축 데이터에 할당할 수 있다. 이때, 식별 비트는 인덱스 비트(index bit)의 최대 값으로 설정될 수 있다. 다시 말해, 프로세서(220)는 압축 데이터의 디코딩(decoding)시, 제1 유효 엘리먼트가 포함된 행이 종료됨을 식별할 수 있도록 인덱스 비트(index bit)에 최대 값을 할당할 수 있다.
프로세서(220)는 유효 엘리먼트들의 정보 만이 압축 데이터(420)에 포함되도록 압축 데이터(420)를 생성할 수 있다. 이에 따라, 제1 매트릭스 데이터(410)는 압축 데이터(420)로 압축될 수 있다.
한편, 압축 데이터(420)가 행 단위로 독출(read)되지 않는 경우, 압축 데이터(420)의 디코딩 시, 유효 엘리먼트의 열 주소 정보와 행 주소를 매칭(matching) 시킬 수 없는 경우가 발생될 수 있다. 따라서, 프로세서(220)는 제1 매트릭스 데이터(410)의 유효 엘리먼트들이 행 단위로 독출(read)될 수 있도록 압축 데이터를 저장할 수 있다. 압축 데이터의 저장 방법에 대해서는 도 5를 참조하여 후술한다.
도 5는 프로세서가 압축 데이터를 저장 하는 방법의 일 예를 설명하기 위한 도면이다.
도 5의 제1 매트릭스 데이터(510) 및 압축 데이터(520)는 도 4의 제1 매트릭스 데이터(410) 및 압축 데이터(420)에 각각 대응될 수 있다.
도 5를 참조하면, 프로세서(220)는 제1 매트릭스 데이터(510)의 유효 엘리먼트들이 행 단위로 독출(read)될 수 있도록 압축 데이터(520)를 저장할 수 있다.
압축 데이터(520)는 기 설정된 청크(chunk) 단위로 메모리(210)에 저장될 수 있다. 행에 포함된 유효 엘리먼트의 수에 따라서, 복수의 행에 포함된 유효 엘리먼트들의 정보가 하나의 청크로 저장되거나, 하나의 행에 포함된 유효 엘리먼트들의 정보가 복수의 청크들로 분리되어 저장될 수 있다.
일 실시예에서, 어느 하나의 행의 유효 엘리먼트들의 정보(ROW0)가 제1 데이터 청크(521) 및 제2 데이터 청크(522)로 분리되어 저장되는 경우, 프로세서(220)는 제1 데이터 청크(521)로 저장되는 유효 엘리먼트들의 정보 중 가장 큰 열 주소를 가지는 유효 엘리먼트의 인덱스 비트에 추가 행 비트(additional row bit)를 할당할 수 있다. 다른 실시예에서, 어느 하나의 행의 유효 엘리먼트들의 정보(ROW0)가 제1 데이터 청크(521) 및 제2 데이터 청크(522)로 분리되어 저장되는 경우, 프로세서(220)는 제2 데이터 청크(522)로 저장되는 유효 엘리먼트들의 정보 중 가장 작은 열 주소를 가지는 유효 엘리먼트의 인덱스 비트에 추가 행 비트(additional row bit)를 할당할 수 있다. 이는, 압축 데이터의 디코딩시, 제1 데이터 청크(521) 및 제2 데이터 청크(522)로 저장된 유효 엘리먼트들의 정보가 동일한 행에 포함된 유효 엘리먼트들의 정보임을 식별하기 위함이다.
제1 데이터 청크(521)는 동일한 행에 포함된 유효 엘리먼트들 중 가장 작은 열 주소를 가지는 유효 엘리먼트의 정보가 포함된 데이터 청크를 의미할 수 있다. 또한, 제2 데이터 청크(522)는 제1 데이터 청크(521)에 저장된 유효 엘리먼트들의 정보를 제외한 나머지 유효 엘리먼트들이 저장된 데이터 청크를 의미할 수 있다.
한편, 프로세서(220)는 압축 데이터의 디코딩 시, 제1 데이터 청크(521)를 독출한 후에 연속하여 제2 데이터 청크(522)를 독출할 수 있다. 이에 따라, 프로세서(220)는 유효 엘리먼트들의 행 주소와 열 주소를 획득할 수 있게 된다.
한편, 데이터 처리 장치(200)를 PIM 형태로 구현하는 경우, 상술한 행 단위의 압축 데이터 저장 방법은 할당된 유효 엘리먼트의 벡터 곱 연산을 먼저 완료한 뱅크가, 벡터 곱 연산을 완료하지 못한 다른 뱅크의 매트릭스 벡터 곱 연산을 대신 수행하도록 함으로써, 부하 균형(load balancing) 효과를 도출할 수 있다는 이점이 있다. 이하, 도 6 내지 도 7에서는 부하 균형(load balancing)을 위한 압축 데이터의 저장 방법에 대해 살펴본다.
도 6은 프로세서가 압축 데이터를 분할하여 저장하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 6을 참고하면, S610 단계에서, 프로세서(220)는 압축 데이터를 행 단위로 분할할 수 있다. 압축 데이터를 행 단위로 분할한다는 의미는, 하나의 행에 포함되는 모든 유효 엘리먼트들의 정보가 분할된 압축 데이터에 포함된다는 것을 의미할 수 있다.
S620 단계에서, 프로세서(220)는 분할된 압축 데이터를 복수의 뱅크들의 제1 영역에 각각 저장할 수 있다.
S630 단계에서, 프로세서(220)는 분할된 압축 데이터의 일부를 복사하여 복수의 뱅크들 중 어느 하나의 뱅크의 제2 영역에 저장할 수 있다.
프로세서(220)는, 제1 영역에 저장된 압축 데이터와 제2 매트릭스 데이터와의 곱 연산을 완료한 경우, 제2 영역에 저장된 압축 데이터와 제1 매트릭스 데이터와의 곱 연산을 개시할 수 있다. 할당된 유효 엘리먼트들의 곱 연산을 먼저 완료한 어느 하나의 프로세서(220)가, 곱 연산을 완료하지 못한 다른 프로세서(220)의 곱 연산을 대신 수행함에 따라, 각각의 프로세서(220)의 부하가 균형적으로 조절될 수 있다. 프로세서(220)들의 부하 균형을 위한 압축 데이터의 저장 방법은 도 7을 참조하여 후술한다.
도 7은 프로세서가 분할된 압축 데이터를 저장하는 방법의 일 예를 설명하기 위한 도면이다.
도 7의 뱅크는 4개인 것으로 도시되어 있으나, 실시예에 따라 뱅크의 수는 증가 또는 감소될 수 있다.
도 7을 참고하면, 프로세서(220)는 압축 데이터를 행 단위로 분할할 수 있다. 분할된 압축 데이터에는 적어도 하나의 행에 포함되는 모든 유효 엘리먼트들의 정보가 포함될 수 있다.
프로세서(220)는 분할된 압축 데이터를 복수의 뱅크들에 분리하여 저장할 수 있다. 예를 들어, 프로세서(220)는 분할된 제1 압축 데이터(811)를 제1 뱅크(810)에 저장하고, 분할된 제2 압축 데이터(821)를 제2 뱅크(820)에 저장하고, 분할된 제3 압축 데이터(831)를 제3 뱅크(830)에 저장하고, 분할된 제4 압축 데이터(841)를 제4 뱅크(840)에 저장할 수 있다. 이때, 제1 압축 데이터 내지 제4 압축 데이터(811, 821, 831. 841)는 각각의 뱅크들(810, 820, 830, 840)의 제1 영역(910)에 저장될 수 있다.
프로세서(220)는 분할된 압축 데이터의 일부를 복사하여 복수의 뱅크들 중 어느 하나의 뱅크의 제2 영역에 저장할 수 있다. 예를 들어, 프로세서(220)는 분할된 제2 압축 데이터(821)의 일부(821a)를 복사하여 제1 뱅크(810)의 제2 영역(920)에 저장할 수 있다. 또한, 프로세서(220)는 분할된 제3 압축 데이터(831)의 일부(831a)와, 분할된 제4 압축 데이터(841)의 일부(841a)도 복사하여 제1 뱅크(810)의 제2 영역(920)에 저장할 수도 있다.
제2 영역에 저장되는 압축 데이터도 유효 엘리먼트들의 정보가 행 단위로 독출되도록 저장될 수 있다. 도 5에서 설명한 바와 같이, 프로세서(220)는 압축 데이터가 분리되어 저장되는 경우, 어느 하나의 유효 엘리먼트의 인덱스 비트에 추가 행 비트(860)를 할당함으로써, 분리된 압축 데이터가 연결되어 있음을 알릴 수 있다.
프로세서(220)는 메모리(210)에 저장된 압축 데이터와 입력 벡터를 이용하여 출력 벡터를 연산할 수 있다. 프로세서(220)의 출력 벡터 연산 방법은 도 8 내지 도 9을 참조하여 후술한다.
도 8는 프로세서가 압축 데이터를 이용하여 출력 데이터를 연산하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 8을 참고하면, S910단계에서, 프로세서(220)는 압축 데이터로부터 유효 엘리먼트들의 행 주소 및 열 주소를 획득할 수 있다.
제1 유효 엘리먼트는 도 4를 참조하여 제1 규칙에 따라 압축되므로, 프로세서(220)는 압축 데이터에 저장된 열 주소 정보를 제1 유효 엘리먼트의 열 주소로써 획득할 수 있다.
또한, 제2 유효 엘리먼트들은 도 4를 참조하여 제2 규칙에 따라 압축되므로, 프로세서(220)는 압축 데이터에 저장된 열 거리 정보와 이전의 유효 엘리먼트의 열 거리 정보화 합산한 값을, 제2 유효 엘리먼트들의 열 주소로써 획득할 수 있다. 예를 들어, 연산 대상인 어느 하나의 유효 엘리먼트의 열 거리 정보가 4이고, 이전 유효 엘리먼트의 열 거리 정보가 2인 경우, 프로세서(220)는 2와 4를 합산한 6을 해당 유효 엘리먼트의 열 주소라고 연산할 수 있다.
또한, 행 주소는 도 4를 참조하여 제3 규칙에 따라 압축되므로, 프로세서(220)는 식별 비트를 기초로 유효 엘리먼트들의 행 주소를 획득할 수 있다.
S920 단계에서, 프로세서(220)는 획득된 행 주소 및 열 주소에 대응하는 제2 매트릭스 데이터를 호출할 수 있다. 예를 들어, 제2 매트릭스 데이터가 열 벡터이고, 획득된 행 주소 및 열 주소가 (1,6)인 경우, 프로세서(220)는 (6,1)에 대응되는 제2 매트릭스 데이터의 엘리먼트 값을 호출할 수 있다.
S930 단계에서, 프로세서(220)는 압축 데이터와 제2 매트릭스 데이터를 이용하여 맥(Multiply and accumulation) 연산을 수행할 수 있다. S920 단계에서, 유효 엘리먼트들에 대응되는 제2 매트릭스 데이터의 엘리먼트 값만이 호출되므로, 프로세서(220)의 연산량이 현저하게 감소될 수 있다.
도 9는 프로세서가 압축 데이터를 이용하여 출력 데이터를 연산하는 방법의 일 예를 설명하기 위한 도면이다.
도 9를 참조하면, GIO SA(Global Input/Output Sense Amplifier)(1010)는 메모리(210)로부터 독출된 데이터(610)를 임시적으로 저장하는 버퍼 역할을 할 수 있다. 일 실시예에 따르면, GIO SA(1010)은 적어도 하나의 행에 대응되는 256 비트의 데이터를 저장하도록 구성될 수 있고, GIO SA(1010)는 256 비트의 독출 데이터(256-bit RD data)(610)를 메모리(210)로부터 전달 받을 수 있다. 독출된 데이터(610)는 MAC 연산기(1040)로 전달되어 피연산자로 이용될 수 있다.
한편, 연산을 위한 다른 피연산자인 제2 매트릭스 데이터는 데이터 입출력 경로(Data I/O)를 통해 입력될 수 있다. 제2 매트릭스 데이터는 입력 벡터 SRAM(Static Random Access Memory)(1030)에 저장된 후, 각 MAC 연산기(1040)으로 전달될 수 있다.
인덱스 비트들은 인덱스 디코더(1020)를 통과하여, 입력 벡터 SRAM(1030)으로 전달될 수 있다. 인덱스 디코더(1020)는 제2 유효 엘리먼트의 경우 인덱스 비트에 저장된 열 거리 정보를 이전 유효 엘리먼트의 열 거리 정보와 합산함으로써, 해당 유효 엘리먼트의 열 주소를 연산하고, 연산된 열 주소를 출력할 수 있다.
입력 벡터 SRAM(1030)은 인덱스 디코더(1020)로부터 수신한 행 주소 및 열 주소를 기초로 제2 매트릭스 데이터를 호출하고, 호출된 제2 매트릭스 데이터는 MAC 연산기(1040)로 입력될 수 있다.
각 MAC 연산기(1040)는 압축 데이터 및 입력 벡터 SRAM(1030)으로부터 전달된 제2 매트릭스 데이터에 대한 연산을 수행하고, 연산의 결과를 출력할 수 있다. 각 MAC 연산기(1040)으로부터 출력된 연산의 결과들은 가산 트리(Adder Tree)(1050)를 통해 합산될 수 있고, 최종 연산 결과에 대응되는 출력 벡터는 출력 벡터 SRAM(1060)에 저장될 수 있다. 출력 벡터 SRAM에 저장된 출력 벡터는 데이터 입출력 경로(Data I/O)를 통해 외부로 출력될 수 있으며, 입력 벡터 SRAM(1030)을 통해 다시 연산에 이용될 수도 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하며, 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점을 포함하는 것으로 해석되어야 할 것이다.
200: 데이터 처리 장치
210: 메모리
220: 프로세서

Claims (20)

  1. 데이터를 처리하는 방법에 있어서,
    제1 매트릭스 데이터에 포함된 유효 엘리먼트들 간의 상대적인 거리를 나타내는 정보에 기초하여 상기 제1 매트릭스 데이터의 압축 데이터를 생성하는 단계;
    상기 압축 데이터를 기초로 제2 매트릭스 데이터를 호출(fetching)하는 단계; 및
    상기 압축 데이터와 상기 제2 매트릭스 데이터를 이용하여 출력 매트릭스 데이터를 연산하는 단계;를 포함하는 방법.
  2. 제1항에 있어서,
    상기 생성하는 단계는
    상기 제1 매트릭스 데이터의 동일한 행에 포함된 각각의 엘리먼트들 중에서 제1 유효 엘리먼트의 정보가 제1 규칙(rule)에 따라 상기 압축 데이터에 포함되도록 상기 압축 데이터를 생성하고,
    상기 제1 유효 엘리먼트를 제외한 적어도 하나의 제2 유효 엘리먼트의 정보가 제2 규칙(rule)에 따라 상기 압축 데이터에 포함되도록 상기 압축 데이터를 생성하는 방법.
  3. 제2항에 있어서,
    상기 제1 규칙(rule)은
    상기 제1 유효 엘리먼트의 엘리먼트 값 정보 및 열 주소 정보를 상기 압축 데이터에 할당하는 규칙을 포함하고,
    상기 제2 규칙(rule)은
    상기 제2 유효 엘리먼트의 엘리먼트 값 정보 및 상기 제2 유효 엘리먼트부터 상기 제2 유효 엘리먼트 이전의 유효 엘리먼트까지의 열 거리(column distance) 정보를 상기 압축 데이터에 할당하는 규칙을 포함하는 방법.
  4. 제3항에 있어서,
    상기 생성하는 단계는
    상기 제1 유효 엘리먼트의 행 주소가 제3 규칙(rule)에 따라 상기 압축 데이터에 포함되도록 상기 압축 데이터를 생성하는 방법.
  5. 제4항에 있어서,
    상기 제3 규칙은
    상기 제1 유효 엘리먼트의 행 주소 정보 및 상기 제1 유효 엘리먼트가 포함된 행의 종료를 알리는 식별 비트를 상기 압축 데이터에 할당하는 규칙을 포함하는 방법.
  6. 제1항에 있어서,
    상기 생성하는 단계 이후에,
    상기 제1 매트릭스 데이터의 상기 유효 엘리먼트들이 행 단위로 독출(read)될 수 있도록 상기 압축 데이터를 저장하는 단계;를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 저장하는 단계는
    상기 압축 데이터를 행 단위로 분할하는 단계; 및
    상기 분할된 압축 데이터를 복수의 뱅크들의 제1 영역에 각각 저장하는 단계;를 포함하는 방법.
  8. 제7항에 있어서,
    상기 저장하는 단계는
    상기 분할된 압축 데이터의 일부를 복사하여 복수의 뱅크들 중 어느 하나의 뱅크의 제2 영역에 저장하는 단계;를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 호출(fetching)하는 단계는
    상기 압축 데이터로부터 유효 엘리먼트들의 행 주소 및 열 주소를 획득하는 단계; 및
    상기 획득된 행 주소 및 열 주소에 대응하는 상기 제2 매트릭스 데이터의 엘리먼트 값 정보를 호출(fectching)하는 단계;를 포함하는 방법.
  10. 제9항에 있어서,
    상기 획득하는 단계는
    제1 유효 엘리먼트의 경우, 상기 압축 데이터에 저장된 열 주소 정보를 상기 열 주소로써 획득하고,
    제2 유효 엘리먼트의 경우, 상기 압축 데이터에 저장된 열 거리 정보를 상기 제2 유효 엘리먼트 이전의 유효 엘리먼트의 열 거리 정보와 합산함으로써 상기 열 주소를 획득하는 방법.
  11. 제1항에 있어서,
    상기 생성하는 단계는
    상기 압축 데이터와 상기 제2 매트릭스 데이터를 이용하여 맥(MAC; multiply and accumulation) 연산을 수행하는 방법.
  12. 제 1 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비휘발성(non-transitory)의 기록매체.
  13. 데이터를 처리하는 장치에 있어서,
    메모리; 및
    프로세서;를 포함하고,
    상기 프로세서는
    제1 매트릭스 데이터에 포함된 유효 엘리먼트들 간의 상대적인 거리를 나타내는 정보에 기초하여 상기 제1 매트릭스 데이터의 압축 데이터를 생성하고,
    상기 압축 데이터를 기초로 입력 벡터를 호출(fetching)하고,
    상기 압축 데이터와 제2 매트릭스 데이터를 이용하여 출력 매트릭스 데이터를 연산하는 장치.
  14. 제13항에 있어서,
    상기 프로세서는
    상기 제1 매트릭스 데이터의 동일한 행에 포함된 각각의 엘리먼트들 중에서 제1 유효 엘리먼트의 정보가 제1 규칙(rule)에 따라 상기 압축 데이터에 포함되도록 상기 압축 데이터를 생성하고,
    상기 제1 유효 엘리먼트를 제외한 적어도 하나의 제2 유효 엘리먼트의 정보가 제2 규칙(rule)에 따라 상기 압축 데이터에 포함되도록 상기 압축 데이터를 생성하고,
    상기 제1 유효 엘리먼트의 행 주소가 제3 규칙(rule)에 따라 상기 압축 데이터에 포함되도록 상기 압축 데이터를 생성하는 장치.
  15. 제14항에 있어서,
    상기 제1 규칙(rule)은
    상기 제1 유효 엘리먼트의 엘리먼트 값 정보 및 열 주소 정보를 상기 압축 데이터에 할당하는 규칙을 포함하고,
    상기 제2 규칙(rule)은
    상기 제2 유효 엘리먼트의 엘리먼트 값 정보 및 상기 제2 유효 엘리먼트부터 상기 제2 유효 엘리먼트 이전의 유효 엘리먼트까지의 열 거리(column distance) 정보를 상기 압축 데이터에 할당하는 규칙을 포함하고,
    상기 제3 규칙은
    상기 제1 유효 엘리먼트의 행 주소 정보 및 상기 제1 유효 엘리먼트가 포함된 행의 종료를 알리는 식별 비트를 상기 압축 데이터에 할당하는 규칙을 포함하는 장치.
  16. 제13항에 있어서,
    상기 메모리는
    상기 제1 매트릭스 데이터의 상기 유효 엘리먼트들이 행 단위로 독출(read)될 수 있도록 상기 압축 데이터를 저장하는 장치.
  17. 제16항에 있어서,
    상기 메모리는
    상기 압축 데이터를 행 단위로 분할하고,
    상기 분할된 압축 데이터를 복수의 뱅크들의 제1 영역에 각각 저장하는 장치.
  18. 제17항에 있어서,
    상기 메모리는
    상기 분할된 압축 데이터의 일부를 복사하여 복수의 뱅크들 중 어느 하나의 뱅크의 제2 영역에 저장하는 장치.
  19. 제13항에 있어서,
    상기 프로세서는
    상기 압축 데이터로부터 유효 엘리먼트들의 행 주소 및 열 주소를 획득하고,
    상기 획득된 행 주소 및 열 주소에 대응하는 상기 제2 매트릭스 데이터의 엘리먼트 값 정보를 호출(fectching)하는 장치.
  20. 제13항에 있어서,
    상기 프로세서는
    상기 압축 데이터와 상기 입력 벡터를 이용하여 맥(multiply and accumulation) 연산을 수행하는 장치.
KR1020190128714A 2019-10-16 2019-10-16 데이터를 처리하는 방법 및 장치 KR20210045224A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190128714A KR20210045224A (ko) 2019-10-16 2019-10-16 데이터를 처리하는 방법 및 장치
US16/857,740 US11436477B2 (en) 2019-10-16 2020-04-24 Method and apparatus with data processing
CN202010410622.7A CN112668689A (zh) 2019-10-16 2020-05-15 进行多媒体数据处理的方法和设备
US17/876,136 US11886985B2 (en) 2019-10-16 2022-07-28 Method and apparatus with data processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190128714A KR20210045224A (ko) 2019-10-16 2019-10-16 데이터를 처리하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210045224A true KR20210045224A (ko) 2021-04-26

Family

ID=75403131

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190128714A KR20210045224A (ko) 2019-10-16 2019-10-16 데이터를 처리하는 방법 및 장치

Country Status (3)

Country Link
US (2) US11436477B2 (ko)
KR (1) KR20210045224A (ko)
CN (1) CN112668689A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11669443B2 (en) * 2020-01-17 2023-06-06 Alibaba Group Holding Limited Data layout optimization on processing in memory architecture for executing neural network model
US20240046113A1 (en) * 2021-05-27 2024-02-08 Lynxi Technologies Co., Ltd. Data storage method, data acquisition method, data acquisition apparatus for a weight matrix, and device
CN114527930B (zh) * 2021-05-27 2024-01-30 北京灵汐科技有限公司 权重矩阵数据存储方法、数据获取方法和装置、电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307790B1 (en) * 2000-08-30 2001-10-23 Micron Technology, Inc. Read compression in a memory
US7457177B2 (en) * 2005-12-21 2008-11-25 Infineon Technologies Ag Random access memory including circuit to compress comparison results
US8078637B1 (en) * 2006-07-28 2011-12-13 Amencan Megatrends, Inc. Memory efficient peim-to-peim interface database
WO2011156247A2 (en) * 2010-06-11 2011-12-15 Massachusetts Institute Of Technology Processor for large graph algorithm computations and matrix operations
US9177245B2 (en) * 2013-02-08 2015-11-03 Qualcomm Technologies Inc. Spiking network apparatus and method with bimodal spike-timing dependent plasticity
US9286216B2 (en) 2014-01-16 2016-03-15 Carnegie Mellon University 3DIC memory chips including computational logic-in-memory for performing accelerated data processing
US9830302B1 (en) 2014-04-16 2017-11-28 Knowles Electronics, Llc Sparse matrix vector multiplication
US9972063B2 (en) * 2015-07-30 2018-05-15 International Business Machines Corporation Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units
US9843341B1 (en) 2016-08-02 2017-12-12 Multicom Technologies Inc. Methods and devices for sparse data compression through dimension coding
US10817587B2 (en) * 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US11501139B2 (en) 2017-05-03 2022-11-15 Intel Corporation Scaling half-precision floating point tensors for training deep neural networks
US10572568B2 (en) * 2018-03-28 2020-02-25 Intel Corporation Accelerator for sparse-dense matrix multiplication

Also Published As

Publication number Publication date
CN112668689A (zh) 2021-04-16
US11886985B2 (en) 2024-01-30
US11436477B2 (en) 2022-09-06
US20220374693A1 (en) 2022-11-24
US20210117761A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
CN108229655B (zh) 卷积神经网络(cnn)处理方法和设备
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
US11704553B2 (en) Neural network system for single processing common operation group of neural network models, application processor including the same, and operation method of neural network system
US11586886B2 (en) Neural network apparatus and method with bitwise operation
US11875255B2 (en) Method and apparatus for processing data
KR20210045224A (ko) 데이터를 처리하는 방법 및 장치
US20200151573A1 (en) Dynamic precision scaling at epoch granularity in neural networks
US11868874B2 (en) Two-dimensional array-based neuromorphic processor and implementing method
CN111382859A (zh) 用于处理神经网络中的卷积运算的方法和装置
EP3839832A1 (en) Method and apparatus with neural network convolution operation
US11763153B2 (en) Method and apparatus with neural network operation
US20220108180A1 (en) Method and apparatus for compressing artificial neural network
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
KR20190041388A (ko) 전자 장치 및 그 제어 방법
CN112668691A (zh) 具有数据处理的方法和装置
CN111507456A (zh) 具有卷积神经网络处理的方法和装置
US20210192296A1 (en) Data de-identification method and apparatus
CN114595811A (zh) 用于执行深度学习操作的方法和设备
CN112733536A (zh) 词嵌入方法和设备以及词搜索方法
US20230385025A1 (en) Method and apparatus with repeated multiplication
US11681915B2 (en) Neural network method and apparatus
US20240144527A1 (en) Method and apparatus with object tracking
US20220051084A1 (en) Method and apparatus with convolution operation processing based on redundancy reduction
KR20240044918A (ko) Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법
CN115861862A (zh) 识别图像的方法和设备