KR20220027434A - 딥러닝 가속 장치 및 그 방법 - Google Patents

딥러닝 가속 장치 및 그 방법 Download PDF

Info

Publication number
KR20220027434A
KR20220027434A KR1020200108298A KR20200108298A KR20220027434A KR 20220027434 A KR20220027434 A KR 20220027434A KR 1020200108298 A KR1020200108298 A KR 1020200108298A KR 20200108298 A KR20200108298 A KR 20200108298A KR 20220027434 A KR20220027434 A KR 20220027434A
Authority
KR
South Korea
Prior art keywords
unit
kernel
data
activation data
bitstream
Prior art date
Application number
KR1020200108298A
Other languages
English (en)
Other versions
KR102654690B1 (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 KR1020200108298A priority Critical patent/KR102654690B1/ko
Priority to PCT/KR2020/011528 priority patent/WO2022045401A1/ko
Publication of KR20220027434A publication Critical patent/KR20220027434A/ko
Application granted granted Critical
Publication of KR102654690B1 publication Critical patent/KR102654690B1/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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]

Landscapes

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

Abstract

본 발명은 딥러닝 가속 장치에 관한 것으로, 본 발명에 따른 딥러닝 가속 장치는 딥러닝 네트워크 모델 데이터를 인코딩/디코딩 할 때 전체 데이터가 아닌 레이어 등 특정 단위로 필요한 만큼만 인코딩/디코딩을 수행함으로써 전체 데이터를 외부 메모리에 저장하거나 불러오면서 소모되는 전력을 절약할 수 있는 효과가 있다.

Description

딥러닝 가속 장치 및 그 방법{DEEP LEARNING ACCELERATOR AND METHOD THEREOF}
본 발명은 하드웨어 딥러닝 가속 장치에 관한 것으로, 특히 저전력 딥러닝 가속 장치에 관한 것이다.
딥러닝 기술은 영상 인식, 음성 신호처리, 자연어 처리 등 다양한 응용분야에서 기존 전통적인 방법을 압도하는 고무적인 성능을 보여주고 있다. 딥러닝 기술은 가중치(Weights)와 편향치(Biases)로 구성된 네트워크 모델을 주어진 응용분야에 적합하게 학습시키고, 학습된 네트워크 모델을 해당 응용분야에 다시 적용하는 과정을 거쳐 성능을 개선해 나간다.
학습량이 늘어날수록 딥러닝 기술은 발전하지만 그럴수록 딥러닝 네트워크 모델의 크기는 점점 커져가는 추세이다. 따라서 모바일 응용분야와 같이 저전력으로 사용시간을 늘려야 하는 분야에 적용하기에는 딥러닝 네트워크 모델의 크기가 문제가 될 수 있다. 딥러닝 네트워크 모델의 크기가 커질수록 데이터 양이 증가하므로 처리 시간도 문제지만 연산량에 따라 소비전력도 증가하기 때문이다.
본 발명의 발명자들은 이러한 종래 기술의 딥러닝 가속기의 높은 소비전력 문제를 해결하기 위해 연구 노력해 왔다. 종래기술의 딥러닝 가속기가 가지는 높은 소비 전력 문제를 완화하면서도 딥러닝 네트워크 모델의 성능을 유지하도록 하여 모바일 환경에도 사용이 가능한 딥러닝 가속기를 제공하기 위해 많은 노력 끝에 본 발명을 완성하기에 이르렀다.
본 발명의 목적은 딥러닝 네트워크 모델의 성능 저하 없이 딥러닝 연산에 소요되는 전력을 줄일 수 있는 딥러닝 가속기를 제공하는 것이다.
한편, 본 발명의 명시되지 않은 또 다른 목적들은 하기의 상세한 설명 및 그 효과로부터 용이하게 추론 할 수 있는 범위 내에서 추가적으로 고려될 것이다.
본 발명에 따른 인코더는,
커널 또는 활성화 데이터를 압축하여 비트스트림으로 생성하는 인코딩부; 및 상기 압축된 데이터를 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 구분자를 상기 비트스트림에 삽입하여 출력하는 삽입부;를 포함하되, 상기 인코딩부는, 커널 또는 활성화 데이터를 양자화하는 양자화부; 상기 양자화된 커널 또는 활성화 데이터와 이전 커널 또는 활성화 데이터를 바탕으로 문맥 정보를 도출하는 문맥 모델링부; 상기 문맥 모델링부의 문맥 정보를 기반으로 상기 양자화부를 통해 양자화된 커널 또는 활성화 데이터를 압축하여 비트스트림으로 생성하는 엔트로피 코딩부; 및 상기 압축된 데이터를 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 구분자를 상기 비트스트림에 삽입하여 출력하는 삽입부;를 포함한다.
상기 엔트로피 코딩부는, 런-렝스 코딩(Run-Length Coding), 허프만 코딩(Huffman Coding) 또는 아리스메틱 코딩(Arithmetic Coding) 방법을 이용하는 것을 특징으로 한다.
상기 커널 또는 활성화 데이터를 미리 인코딩 된 커널 또는 활성화 데이터와의 상관성을 이용하여 예측하는 예측부; 상기 커널 또는 활성화 데이터를 시간 영역에서 주파수 영역으로 변환하는 변환부; 및 상기 커널 또는 활성화 데이터를 복수개의 작은 차원 데이터로 분해하는 분해부;를 더 포함하는 것을 특징으로 한다.
상기 삽입부는, 인코딩 방식에 따라 상기 예측부, 변환부 및 분해부를 선택적으로 활성화하는 활성화 여부를 표시하는 플래그를 상기 비트스트림에 더 삽입하는 것을 특징으로 한다.
상기 변환부는, 상기 커널 또는 활성화 데이터를 DCT(Discrete Cosine Transform), DST(Discrete Sine Transform) 또는 DFT(Discrete Fourier Transform) 변환하는 것을 특징으로 한다.
상기 분해부는 저차원 분해(Low Rank Decomposition) 또는 CP 분해(Canonical Polyadic Decomposition)를 이용하는 것을 특징으로 한다.
본 발명의 다른 실시예에 따른 디코더는,
메모리; 비트스트림에 삽입된 레이어, 타일 및 블록 단위의 커널 또는 활성화 데이터 중 어느 하나의 단위를 구분하는 구분자를 이용하여 상기 비트스트림을 단위로 구분하는 파서; 및 상기 비트스트림 중 상기 파서에 의해 구분된 단위를 디코딩하여 상기 메모리에 저장하는 디코딩부;를 포함한다.
상기 디코딩부는, 상기 구분된 단위의 커널 또는 활성화 데이터를 문맥 정보를 이용하여 엔트로피 디코딩하는 엔트로피 디코딩부; 상기 엔트로피 디코딩된 커널 또는 활성화 데이터와 이전 엔트로피 디코딩된 커널 또는 활성화 데이터를 바탕으로 문맥 정보를 도출하는 문맥 모델링부;를 및 상기 엔트로피 디코딩 된 커널 또는 활성화 데이터를 역양자화하는 역양자화부;를 포함하는 것을 특징으로 한다.
상기 디코딩부는, 상기 엔트로피 디코딩 된 커널 또는 활성화 데이터를 이미 엔트로피 디코딩 된 커널 또는 활성화 데이터와의 상관성을 이용하여 역예측하는 역예측부; 상기 엔트로피 디코딩 된 커널 또는 활성화 데이터를 주파수 영역에서 시간 영역으로 역변환하는 역변환부; 및 상기 커널 또는 활성화 데이터를 복수개의 낮은 차원 데이터에서 보다 높은 차원의 데이터로 복원하는 역분해부;를 더 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따른 딥러닝 가속 장치는,
메모리; 비트스트림에 삽입된 레이어, 타일 및 블록 단위의 커널 또는 활성화 데이터 중 어느 하나의 단위를 구분하는 구분자를 이용하여 상기 비트스트림을 단위로 구분하는 파서; 상기 비트스트림 중 상기 파서에 의해 구분된 단위를 디코딩하여 상기 메모리에 저장하는 디코더; 및 상기 디코딩된 데이터를 이용하여 딥러닝 연산을 수행하는 가속부;를 포함한다.
본 발명의 또 다른 실시예에 따른 인코딩 방법은,
커널 또는 활성화 데이터를 양자화 하는 단계; 상기 양자화된 커널 또는 활성화 데이터와 이전 커널 또는 활성화 데이터를 바탕으로 문맥 정보를 도출하는 단계; 상기 도출된 문맥 정보를 기반으로 상기 양자화된 커널 또는 활성화 데이터를 압축하여 비트스트림으로 생성하는 단계; 및 상기 압축된 커널 또는 활성화 데이터를 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 구분자를 상기 비트스트림에 삽입하여 출력하는 단계;를 포함한다.
본 발명의 또 다른 실시예에 따른 디코딩 방법은,
비트스트림에 삽입된 레이어, 타일 및 블록 단위의 커널 또는 활성화 데이터 중 어느 하나의 단위를 구분하는 구분자를 이용하여 상기 비트스트림을 단위로 구분하는 단계; 상기 구분된 단위의 커널 또는 활성화 데이터를 문맥 정보를 이용하여 엔트로피 디코딩하는 단계; 상기 엔트로피 디코딩된 커널 또는 활성화 데이터와 이전 엔트로피 디코딩된 커널 또는 활성화 데이터를 바탕으로 문맥 정보를 도출하는 단계; 및 상기 엔트로피 디코딩 된 커널 또는 활성화 데이터를 역양자화하는 단계;를 포함한다.
본 발명의 또 다른 실시예에 따른 프로세서는,
메모리; 레이어, 타일 및 블록 중 어느 하나의 단위로 구분된 커널 데이터 비트스트림을 상기 단위로 디코딩하고 상기 메모리에 저장하는 제1디코더; 활성화 데이터를 압축하고 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 구분자를 삽입한 활성화 데이터 비트스트림을 생성하는 인코더; 상기 구분자를 이용하여 상기 활성화 데이터 비트스트림을 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 파서; 상기 구분된 활성화 데이터 비트스트림을 상기 단위로 디코딩하여 상기 메모리에 저장하는 제2디코더; 및 상기 메모리에 저장된 커널 또는 활성화 디코딩 데이터를 이용하여 딥러닝 연산을 수행하는 가속부를 포함한다.
본 발명에 따르면 딥러닝 네트워크 모델 데이터 중 필요한 부분에 접근하여 이용함으로써 불필요한 외부 메모리 접근을 낮춰 전력소모를 줄일 수 있는 효과가 있다.
또한 딥러닝 네트워크 모델의 변형 없이 레이어/타일/블록 단위로 전체 데이터를 이용할 수 있으므로 딥러닝 네트워크 모델의 성능 저하 없이 딥러닝 가속기를 구현할 수 있는 장점이 있다.
한편, 여기에서 명시적으로 언급되지 않은 효과라 하더라도, 본 발명의 기술적 특징에 의해 기대되는 이하의 명세서에서 기재된 효과 및 그 잠정적인 효과는 본 발명의 명세서에 기재된 것과 같이 취급됨을 첨언한다.
도 1은 종래기술에 따른 딥러닝 가속 장치의 구조도이다.
도 2는 본 발명의 바람직한 어느 실시예에 따른 딥러닝 가속 장치를 이용한 전체 시스템의 구조도이다.
도 3은 본 발명의 바람직한 어느 실시예에 따른 비트스트림 파싱 방법의 예이다.
도 4는 본 발명의 바람직한 어느 실시예에 따른 인코더의 구조도이다.
도 5는 본 발명의 바람직한 어느 실시예에 따른 디코더의 구조도이다.
도 6은 본 발명의 바람직한 어느 실시예에 따른 인코딩 방법의 흐름도이다.
도 7은 본 발명의 바람직한 어느 실시예에 따른 디코딩 방법의 흐름도이다.
※ 첨부된 도면은 본 발명의 기술사상에 대한 이해를 위하여 참조로서 예시된 것임을 밝히며, 그것에 의해 본 발명의 권리범위가 제한되지는 아니한다
본 발명의 상기 목적과 수단 및 그에 따른 효과는 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며, 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 경우에 따라 복수형도 포함한다. 본 명세서에서, "포함하다", “구비하다”, “마련하다” 또는 “가지다” 등의 용어는 언급된 구성요소 외의 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
본 명세서에서, “또는”, “적어도 하나” 등의 용어는 함께 나열된 단어들 중 하나를 나타내거나, 또는 둘 이상의 조합을 나타낼 수 있다. 예를 들어, “A 또는 B”, “A 및 B 중 적어도 하나”는 A 또는 B 중 하나만을 포함할 수 있고, A와 B를 모두 포함할 수도 있다.
본 명세서에서, “예를 들어” 등에 따르는 설명은 인용된 특성, 변수, 또는 값과 같이 제시한 정보들이 정확하게 일치하지 않을 수 있고, 허용 오차, 측정 오차, 측정 정확도의 한계와 통상적으로 알려진 기타 요인을 비롯한 변형과 같은 효과로 본 발명의 다양한 실시 예에 따른 발명의 실시 형태를 한정하지 않아야 할 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소에 ‘연결되어’ 있다거나 ‘접속되어’ 있다고 기재된 경우, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성 요소에 ‘직접 연결되어’ 있다거나 ‘직접 접속되어’ 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소의 '상에' 있다거나 '접하여' 있다고 기재된 경우, 다른 구성요소에 상에 직접 맞닿아 있거나 또는 연결되어 있을 수 있지만, 중간에 또 다른 구성요소가 존재할 수 있다고 이해되어야 할 것이다. 반면, 어떤 구성요소가 다른 구성요소의 '바로 위에' 있다거나 '직접 접하여' 있다고 기재된 경우에는, 중간에 또 다른 구성요소가 존재하지 않은 것으로 이해될 수 있다. 구성요소 간의 관계를 설명하는 다른 표현들, 예를 들면, '~사이에'와 '직접 ~사이에' 등도 마찬가지로 해석될 수 있다.
본 명세서에서, '제1', '제2' 등의 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 해당 구성요소는 위 용어에 의해 한정되어서는 안 된다. 또한, 위 용어는 각 구성요소의 순서를 한정하기 위한 것으로 해석되어서는 안되며, 하나의 구성요소와 다른 구성요소를 구별하는 목적으로 사용될 수 있다. 예를 들어, '제1구성요소'는 '제2구성요소'로 명명될 수 있고, 유사하게 '제2구성요소'도 '제1구성요소'로 명명될 수 있다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명하도록 한다.
도 1은 종래 기술의 딥러닝 가속기를 포함하는 모바일 프로세서 칩(AP: Application Processor)의 개략적인 구성도이다.
모바일 프로세서 칩(10)은 중앙처리장치(CPU, 11), 외부 인터페이스(12), 메모리 컨트롤러(13), 딥러닝 가속기(14) 및 온-칩 메모리(15)를 포함한다.
외부 메모리(20)에는 학습된 커널 데이터(22)와 활성화 데이터(24)가 저장된다.
커널 데이터(22)는 딥러닝 네트워크 모델이라고도 불리며, 여러 개의 레이어(Layer)로 구성되어 있고, 각 레이어는 가중치와 편향치로 구성된다. 커널 데이터(22)의 한 레이어는 레이어 타입(Input / Output / Convolutional / Residual / Fully-Connected / Recurrent / Batch Normalization 등)에 따라 가중치와 편향치의 개수가 다르기 때문에 레이어의 구성에 따라 커널 데이터(22)의 크기가 달라진다.
딥러닝 네트워크 모델의 크기는 AlexNet 네트워크는 240MB, VGG-16 네트워크는 552MB에 달한다. 이렇게 용량이 큰 모델은 SRAM을 사용하는 내부 온-칩 메모리(15)에 저장해두고 계속 사용할 수가 없으므로 저장공간이 큰 DRAM 등을 사용하는 외부 메모리(20)에 저장해 두고 사용해야 하는데, 그러면 딥러닝 연산을 위해 빈번하게 커널 데이터(22)를 외부 메모리(20)에서 가져와야 하므로 전력소모가 크게 된다(45nm CMOS 공정에서 32-bit DRAM 메모리 접근은 640pJ의 에너지가 소모됨).
또한 딥러닝 추론 과정에서는 각 레이어마다 입력 데이터와 커널 데이터(22)와의 산술 연산(Convolutional/Fully-connected Operation)이 수행되고, 이 후 활성화 함수를 거쳐 나온 결과물이 활성화 데이터(24)이다. 활성화 데이터(24)는 다음 레이어의 입력으로 사용되고, 경우에 따라 몇 단계 이후의 레이어에도 사용된다. 활성화 데이터(24)는 입력 데이터의 크기에 따라 달라지는데 입력 해상도가 커지면 활성화 데이터(24)의 양도 증가한다. 따라서 활성화 데이터(24)를 추후 사용하기 위해 외부 메모리(20)에 저장하면 역시 전력 소모가 커지게 된다.
종래기술들은 외부 메모리(20)로의 접근 횟수와 데이터의 양을 줄이기 위해 커널/활성화 데이터(22, 24)를 압축하여 저장하는 방법을 사용했다. 하지만 압축 방법을 사용해도 압축이 된 데이터 전체를 외부 메모리(20)에서 가져와 필요한 데이터만을 사용하고 버리는 과정이 반복되다 보니 비효율적으로 전력을 사용하는 문제점이 여전히 존재한다.
도 2는 본 발명의 바람직한 어느 실시예에 따른 딥러닝 가속 장치가 적용된 전체 시스템의 구성도이다.
본 발명에 따른 딥러닝 가속 장치(100)는 온-칩 메모리(110), 딥러닝 가속기(120), CPU(130), 인터페이스(140) 및 메모리 컨트롤러(150)를 포함한다.
온-칩 메모리(110)는 딥러닝 가속기(120)에서 연산을 하기 위해 필요한 데이터들을 저장한다. 온-칩 메모리(110)에는 속도가 빠른 SRAM을 사용하는 대신 용량이 작기 때문에 많은 양의 데이터들은 용량이 큰 DRAM을 사용하는 외부 메모리(20)를 이용해서 저장한다.
딥러닝 가속기(120)는 커널 데이터 디코더(122) 및 활성화 데이터 디코더/인코더(124)를 포함한다.
CPU(130)는 비트스트림 파서(132)를 포함할 수 있다.
인터페이스(140)는 딥러닝 가속 장치(100) 외부와의 통신 등을 위해 사용된다.
메모리 컨트롤러(150)는 외부 메모리(20)와의 데이터 송수신을 제어한다.
커널 데이터 압축을 위한 커널 데이터 인코더(30)는 딥러닝 가속 장치(100)의 외부에 존재한다.
외부 메모리(20)에 있는 압축된 커널 데이터(22)를 전부 가져오면 온-칩 메모리(110)가 부족할 수 있고, 가져올 때마다 전력을 소모하므로 전력 사용에 효율적이지 못하다. 따라서 본 발명에서는 압축된 커널 데이터(22)를 일정한 단위로 구분해서 가져온다.
비트스트림 파서(132)는 외부에 저장된 압축 커널 데이터(22) 또는 압축 활성화 데이터(24)에서 필요한 부분만을 파싱하여 딥러닝 가속기(120)로 전달하여 압축된 데이터를 디코딩 하게 된다. 이를 위해 압축 커널 데이터(22) 또는 압축 활성화 데이터(24)는
도 3은 비트스트림 파서를 이용하여 압축된 데이터에서 필요한 데이터만 가져오는 한 예이다.
비트스트림 파서(132)는 압축된 커널 데이터 또는 활성화 데이터를 필요한 만큼만 구분해서 커널 데이터 디코더(122) 또는 활성화 데이터 디코더(124)로 전달한다. 이를 위해 비트스트림 파서(132)는 비트스트림에 삽입된 구분자(221, Start Code Prefix)에 의해 압축 커널 데이터 또는 활성화 데이터를 레이어, 타일, 블록 등 특정 단위로 구분할 수 있다. 따라서 이렇게 구분된 m번째 레이어 데이터를 구분자를 제거하고 구분자가 제거된 데이터를 딥러닝 가속기(120)로 전달한다.
비트스트림 파서(132)는 딥러닝 가속 장치(100)의 CPU(130)에 의해 소프트웨어로 구현되는 것도 가능하고 딥러닝 가속 장치(100) 내부에 하드웨어 형태로 구현될 수도 있다.
도 4는 활성화 데이터 인코더의 구조도이다.
활성화 데이터 인코더(126)는 동일한 구조로 커널 데이터를 인코딩 하는 것도 가능하다.
활성화 데이터 인코더(126)는 전처리부(1261), 양자화부(1262), 분해부(1263), 변환부(1264), 예측부(1265), 문맥 모델링부(1266), 엔트로피 코딩부(1267) 및 삽입부(1268)를 포함한다.
인코더(126)에는 커널 데이터 또는 활성화 데이터를 입력으로 받아 구분자가 삽입된 비트스트림이 생성된다. 이하에서는 활성화 데이터로 설명되지만 커널 데이터도 동일하게 인코딩이 가능하다.
활성화 데이터가 입력되면 전처리부(1261)를 거친다. 전처리부(1261)는 가지치기(Pruning) 기법 등을 이용하여 입력 데이터의 중요도에 따라 데이터 값을 선택적으로 0으로 치환한다.
전처리부(1261)를 거친 활성화 데이터는 양자화부(1262)에서 양자화된다. 양자화(Quantization)는 실수값인 활성화 데이터를 계산 속도를 높이고 연산량을 줄이기 위해 정수화 하는 과정이다. 예를 들면 일반적으로 32비트의 플로팅 포인트로 표현되는 실수값을 16/8/6/4-비트의 정수 값으로 변환하는 것이다.
분해부(1263)는 활성화 데이터를 여러 개의 작은 차원 데이터로 분해한다. 분해부(1263)는 저차원 분해(Low Rank Decomposition), CP 분해(Canonical Polyadic Decomposition) 등을 이용하여 입력 데이터를 분해할 수 있다.
변환부(1264)는 활성화 데이터를 주파수 영역 데이터로 변환(Transform)한다. 변환부(1264)는 DCT (Discrete Cosine Transform), DST (Discrete Sine Transform), DFT (Discrete Fourier Transform)와 같은 변환을 사용하여 데이터를 블록 단위의 주파수 영역 데이터로 변환하게 된다. 활성화 데이터의 특성 상 일정 주파수 영역에 데이터가 집중되는 현상이 발생하고, 따라서 주파수 영역에서 신호를 처리하는 것이 압축에 더 효과적이기 때문에 주파수 영역 변환을 수행하는 것이다.
예측부(1265)는 이전에 인코딩 된 활성화 데이터와의 상관관계를 이용하여 활성화 데이터를 예측한다. 예측부(1265)가 사용된 경우 활성화 데이터의 잔차(Residual)만 인코딩되어 전송할 수 있으므로 데이터의 양을 줄일 수 있다.
이와 같은 예측부(1265), 변환부(1264), 분해부(1263)는 양자화부(1262)의 전 또는 후에 위치하여 활성화 데이터를 처리할 수 있다. 또한 예측부(1265), 변환부(1264), 분해부(1263)는 필요에 따라 비활성화 되는 것도 가능하다. 활성화 데이터의 실시간 처리를 위해 일부 블록을 비활성화 하는 경우가 있을 수 있다. 따라서 어떤 블록이 활성화 되었는지 또는 비활성화 되었는지 알 수 있는 정보는 엔트로피 코딩부(1267)로 전달되어 비트스트림에 삽입된다.
문맥 모델링부(1266)는 위의 예측부(1265), 변환부(1264), 분해부(1263) 또는 양자화부(1262)를 거친 활성화 데이터를 이전에 인코딩 된 활성화 데이터와 비교하여 문맥(Context)을 파악하는 문맥 모델링(Context Modeling)을 수행한다. 문맥 모델링은 데이터의 경향을 분석하는 것으로, 활성화 데이터의 변화 경향을 파악함으로써 엔트로피 코딩부(1267)에서 사용할 확률 테이블의 아이디인 문맥 정보(Context_id)를 도출하여 전달한다.
엔트로피 코딩부(1267)은 이전 과정을 모두 거친 활성화 데이터를 압축한다. 엔트로피 코딩은 무손실 압축 코딩으로 Run-Length Coding, Huffman Coding, Arithmetic Coding 등의 압축 방법이 사용될 수 있다.
마지막으로 삽입부(1268)는 압축된 비트스트림에 구분자(Start Code Prefix)를 삽입한다. 구분자에 의해 비트스트림을 레이어, 타일, 블록 등의 특정 단위로 구분할 수 있다.
도 5는 커널 데이터 디코더(122)의 개략적인 구조도이다.
커널 데이터 디코더(122)는 압축된 커널 데이터를 디코딩 하는데, 활성화 데이터 인코더(126)에 의해 압축된 활성화 데이터를 디코딩하는 활성화 데이터 디코더(124) 역시 동일한 구조를 가진다.
커널 데이터 디코더(122)는 엔트로피 디코딩부(1221), 문맥 모델링부(1222), 역양자화부(1223), 합성부(1224), 역변환부(1225), 역예측부(1226) 및 후처리부(1227)를 포함한다.
엔트로피 디코딩부(1221)는 비트스트림 파서(132)에서 구분자를 제거한 데이터를 전달받아 엔트로피 디코딩을 수행한다. 압축된 비트스트림을 압축을 풀어 커널데이터로 변환하는 것이다.
엔트로피 디코딩부(1221)는 문맥 모델링부(1222)의 문맥 정보(Context_id)를 이용하여 엔트로피 디코딩을 수행한다.
역양자화부(1223)는 인코더에서 정수 데이터로 양자화된 데이터를 다시 실수 데이터로 변환한다.
역양자화부(1223)를 거친 커널 데이터는 후처리부(1227)의 후처리 과정을 거쳐 복원되어 딥러닝 가속부에 의해 사용된다.
엔트로피 디코딩된 커널 데이터는 합성부(1224), 역변환부(1225) 또는 역예측부(1226)를 거칠 수 있다. 어떤 블록이 활성화 되는지는 비트스트림에 포함되어 있으므로 이 정보에 의해 각 블록의 활성화 여부를 결정할 수 있다.
합성부(1224), 역변환부(1225), 역예측부(1226)은 인코더의 분해부(1263), 변환부(1264), 예측부(1265)의 반대 과정을 수행한다. 즉, 합성부(1224)는 여러 개의 작원 차원 데이터로 분해된 데이터를 복원하고, 역변환부(1225)는 주파수 영역으로 변환된 데이터를 다시 시간 영역으로 복원하고, 예측부(1265)는 잔차 데이터에 의해 원 데이터를 복원하는 것이다.
이렇게 본 발명의 인코더/디코더를 이용하여 전체 데이터가 아닌 딥러닝 연산에 필요한 데이터만을 선택적으로 인코딩/디코딩 함으로써 딥러닝 네트워크 모델 데이터 전체를 전송하는데 소모되던 전력과 시간을 줄일 수 있다.
도 6은 본 발명에 따른 데이터 인코딩 방법의 개략적인 흐름도이다.
입력된 커널/활성화 데이터는 우선 양자화된다(S10). 실수인 데이터를 정수 데이터로 변환한다.
양자화 된 데이터는 예측(S20), 변환(S30) 또는 분해(S40)단계를 거칠 수 있다. 이 세 단계는 연산량에 따라 선택적으로 수행될 수 있다. 또한 양자화 단계(S10)와 순서가 바뀔 수도 있다.
양자회된 데이터는 데이터 예측이 수행될 수 있다(S20). 이전에 인코딩 된 데이터와의 상관관계를 이용하여 다음 데이터를 예측하는 것이다.
주파수 영역 변환은 DCT (Discrete Cosine Transform), DST (Discrete Sine Transform), DFT (Discrete Fourier Transform)와 같은 변환을 사용하여 데이터를 블록 단위의 주파수 영역 데이터로 변환한다(S30).
데이터 분해는 저차원 분해(Low Rank Decomposition), CP 분해(Canonical Polyadic Decomposition) 등을 이용하여 데이터를 여러 개의 작은 차원 데이터로 분해한다(S40).
이렇게 처리된 커널 데이터를 이전에 인코딩 된 활성화 데이터와 비교하여 문맥(Context)을 파악하는 문맥 모델링(Context Modeling)을 수행한다(S50). 문맥 모델링에 의해 수행된 문맥 정보는 다음 단계로 전달된다.
양자화된 커널 데이터는 문맥 정보를 이용하여 엔트로피 코딩이 이루어진다(S60). Run-Length Coding, Huffman Coding, Arithmetic Coding 등의 압축 방법이 사용될 수 있다
마지막으로 압축된 비트스트림에 구분자(Start Code Prefix)를 삽입함으로써(S70) 데이터 인코딩이 마무리된다. 구분자는 압축 데이터를 레이어, 타일, 블록 단위로 구분하게 해준다.
도 7은 인코딩된 커널 데이터 또는 활성화 데이터를 디코딩하는 방법의 개략적인 흐름도이다.
압축된 커널 데이터 또는 활성화 데이터인 비트스트림이 입력되면 비트스트림 파싱이 이루어진다(S110). 비트스트림 파서는 구분자를 이용하여 필요한 데이터를 찾아내어 디코더에 공급한다.
압축된 데이터는 엔트로피 디코딩에 의해 압축이 복원된다(S120). Run-Length Coding, Huffman Coding, Arithmetic Coding 등의 압축 방법에 의해 압축된 데이터를 반대로 디코딩 하는 것이다.
엔트로피 디코딩 된 데이터와 이전에 이미 디코딩 된 데이터를 비교하여 문맥 모델링이 수행된다(S130). 문맥 모델링에 의해 문맥 정보가 도출되고, 이는 다시 엔트로피 디코딩 단계에서 이용된다.
데이터 합성(S140), 시간 영역 변환(S150), 데이터 역예측(S160) 단계는 선택적으로 이루어 질 수 있다. 각 블록의 활성화 여부인 코딩 파라미터는 압축된 데이터의 비트스트림에 포함되어 전달되므로, 이 정보에 의해 각 단계를 수행할 지 결정한다. 또한 데이터 합성(S140), 시간 영역 변환(S150), 데이터 역예측(S160) 단계는 역양자화 단계(S170) 이후에 위치할 수도 있다.
데이터 합성 단계는 여러 개의 작원 차원 데이터로 분해된 데이터를 복원한다(S140).
시간 영역 변환 단계는 주파수 영역의 데이터를 시간 영역의 데이터로 변환한다(S150). iDCT (Inverse Discrete Cosine Transform), iDST (Inverse Discrete Sine Transform), iDFT (Inverse Discrete Fourier Transform) 등의 역변환 방법이 사용될 수 있다.
데이터 역예측 단계는 인코딩 단계에서 예측한 데이터를 이용하여 데이터를 복원한다(S160).
마지막으로 역양자화(Inverse Quantization) 단계에서는 정수 데이터를 다시 실수 데이터로 변환함으로써 커널 데이터의 복원이 마무리된다(S170).
이러한 인코딩/디코딩 방법은 딥러닝 가속에서 필요한 단위의 데이터만을 인코딩/디코딩함으로써 부족한 온-칩 메모리에서도 성능저하 없이 딥러닝 네트워크 모델 데이터를 이용할 수 있으며, 전체 데이터 중 일부만을 외부 메모리에 저장하거나 불러옴으로써 데이터 전송에 소모되는 전력량을 효율적으로 감소시킬 수 있는 장점도 있다.
본 발명의 보호범위가 이상에서 명시적으로 설명한 실시예의 기재와 표현에 제한되는 것은 아니다. 또한, 본 발명이 속하는 기술분야에서 자명한 변경이나 치환으로 말미암아 본 발명이 보호범위가 제한될 수도 없음을 다시 한 번 첨언한다.

Claims (13)

  1. 커널 또는 활성화 데이터를 압축하여 비트스트림으로 생성하는 인코딩부; 및
    상기 압축된 데이터를 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 구분자를 상기 비트스트림에 삽입하여 출력하는 삽입부;를 포함하되,
    상기 인코딩부는,
    커널 또는 활성화 데이터를 양자화하는 양자화부;
    상기 양자화된 커널 또는 활성화 데이터와 이전 커널 또는 활성화 데이터를 바탕으로 문맥 정보를 도출하는 문맥 모델링부;
    상기 문맥 모델링부의 문맥 정보를 기반으로 상기 양자화부를 통해 양자화된 커널 또는 활성화 데이터를 압축하여 비트스트림으로 생성하는 엔트로피 코딩부; 및
    상기 압축된 데이터를 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 구분자를 상기 비트스트림에 삽입하여 출력하는 삽입부;를 포함하는 인코더.
  2. 제1항에 있어서 상기 엔트로피 코딩부는,
    런-렝스 코딩(Run-Length Coding), 허프만 코딩(Huffman Coding) 또는 아리스메틱 코딩(Arithmetic Coding) 방법을 이용하는 것을 특징으로 하는 인코더.
  3. 제1항에 있어서,
    상기 커널 또는 활성화 데이터를 미리 인코딩 된 커널 또는 활성화 데이터와의 상관성을 이용하여 예측하는 예측부;
    상기 커널 또는 활성화 데이터를 시간 영역에서 주파수 영역으로 변환하는 변환부; 및
    상기 커널 또는 활성화 데이터를 복수개의 작은 차원 데이터로 분해하는 분해부;를 더 포함하는 것을 특징으로 하는 인코더.
  4. 제3항에 있어서 상기 삽입부는,
    인코딩 방식에 따라 상기 예측부, 변환부 및 분해부를 선택적으로 활성화하는 활성화 여부를 표시하는 플래그를 상기 비트스트림에 더 삽입하는 것을 특징으로 하는 인코더.
  5. 제3항에 있어서 상기 변환부는,
    상기 커널 또는 활성화 데이터를 DCT(Discrete Cosine Transform), DST(Discrete Sine Transform) 또는 DFT(Discrete Fourier Transform) 변환하는 것을 특징으로 하는 인코더.
  6. 제3항에 있어서 상기 분해부는 저차원 분해(Low Rank Decomposition) 또는 CP 분해(Canonical Polyadic Decomposition)를 이용하는 것을 특징으로 하는 인코더.
  7. 메모리;
    비트스트림에 삽입된 레이어, 타일 및 블록 단위의 커널 또는 활성화 데이터 중 어느 하나의 단위를 구분하는 구분자를 이용하여 상기 비트스트림을 단위로 구분하는 파서; 및
    상기 비트스트림 중 상기 파서에 의해 구분된 단위를 디코딩하여 상기 메모리에 저장하는 디코딩부;를 포함하는 디코더.
  8. 제7항에 있어서 상기 디코딩부는,
    상기 구분된 단위의 커널 또는 활성화 데이터를 문맥 정보를 이용하여 엔트로피 디코딩하는 엔트로피 디코딩부;
    상기 엔트로피 디코딩된 커널 또는 활성화 데이터와 이전 엔트로피 디코딩된 커널 또는 활성화 데이터를 바탕으로 문맥 정보를 도출하는 문맥 모델링부;를 및
    상기 엔트로피 디코딩 된 커널 또는 활성화 데이터를 역양자화하는 역양자화부;를 포함하는 것을 특징으로 하는 디코더.
  9. 제8항에 있어서 상기 디코딩부는,
    상기 엔트로피 디코딩 된 커널 또는 활성화 데이터를 이미 엔트로피 디코딩 된 커널 또는 활성화 데이터와의 상관성을 이용하여 역예측하는 역예측부;
    상기 엔트로피 디코딩 된 커널 또는 활성화 데이터를 주파수 영역에서 시간 영역으로 역변환하는 역변환부; 및
    상기 커널 또는 활성화 데이터를 복수개의 낮은 차원 데이터에서 보다 높은 차원의 데이터로 복원하는 역분해부;를 더 포함하는 디코더.
  10. 메모리;
    비트스트림에 삽입된 레이어, 타일 및 블록 단위의 커널 또는 활성화 데이터 중 어느 하나의 단위를 구분하는 구분자를 이용하여 상기 비트스트림을 단위로 구분하는 파서;
    상기 비트스트림 중 상기 파서에 의해 구분된 단위를 디코딩하여 상기 메모리에 저장하는 디코더; 및
    상기 디코딩된 데이터를 이용하여 딥러닝 연산을 수행하는 가속부;를 포함하는 딥러닝 가속 장치.
  11. 커널 또는 활성화 데이터를 양자화 하는 단계;
    상기 양자화된 커널 또는 활성화 데이터와 이전 커널 또는 활성화 데이터를 바탕으로 문맥 정보를 도출하는 단계;
    상기 도출된 문맥 정보를 기반으로 상기 양자화된 커널 또는 활성화 데이터를 압축하여 비트스트림으로 생성하는 단계; 및
    상기 압축된 커널 또는 활성화 데이터를 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 구분자를 상기 비트스트림에 삽입하여 출력하는 단계;를 포함하는 인코딩 방법.
  12. 비트스트림에 삽입된 레이어, 타일 및 블록 단위의 커널 또는 활성화 데이터 중 어느 하나의 단위를 구분하는 구분자를 이용하여 상기 비트스트림을 단위로 구분하는 단계;
    상기 구분된 단위의 커널 또는 활성화 데이터를 문맥 정보를 이용하여 엔트로피 디코딩하는 단계;
    상기 엔트로피 디코딩된 커널 또는 활성화 데이터와 이전 엔트로피 디코딩된 커널 또는 활성화 데이터를 바탕으로 문맥 정보를 도출하는 단계; 및
    상기 엔트로피 디코딩 된 커널 또는 활성화 데이터를 역양자화하는 단계;를 포함하는 디코딩 방법.
  13. 메모리;
    레이어, 타일 및 블록 중 어느 하나의 단위로 구분된 커널 데이터 비트스트림을 상기 단위로 디코딩하고 상기 메모리에 저장하는 제1디코더;
    활성화 데이터를 압축하고 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 구분자를 삽입한 활성화 데이터 비트스트림을 생성하는 인코더;
    상기 구분자를 이용하여 상기 활성화 데이터 비트스트림을 레이어, 타일 및 블록 중 어느 하나의 단위로 구분하는 파서;
    상기 구분된 활성화 데이터 비트스트림을 상기 단위로 디코딩하여 상기 메모리에 저장하는 제2디코더; 및
    상기 메모리에 저장된 커널 또는 활성화 디코딩 데이터를 이용하여 딥러닝 연산을 수행하는 가속부를 포함하는 프로세서.
KR1020200108298A 2020-08-27 2020-08-27 딥러닝 가속 장치 및 그 방법 KR102654690B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200108298A KR102654690B1 (ko) 2020-08-27 2020-08-27 딥러닝 가속 장치 및 그 방법
PCT/KR2020/011528 WO2022045401A1 (ko) 2020-08-27 2020-08-28 딥러닝 비트스트림 인코더, 디코더 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200108298A KR102654690B1 (ko) 2020-08-27 2020-08-27 딥러닝 가속 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20220027434A true KR20220027434A (ko) 2022-03-08
KR102654690B1 KR102654690B1 (ko) 2024-04-04

Family

ID=80812448

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200108298A KR102654690B1 (ko) 2020-08-27 2020-08-27 딥러닝 가속 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102654690B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024135862A1 (ko) * 2022-12-19 2024-06-27 한국전자기술연구원 비정형 데이터 처리를 지원하는 데이터 처리 및 가공 장치
US12073312B2 (en) 2022-03-15 2024-08-27 Rebellions Inc. Neural processing device and method for controlling the same

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200050433A (ko) * 2018-11-01 2020-05-11 한국전자통신연구원 신경망을 사용하여 영상에 대한 처리를 수행하는 방법 및 장치
KR20200052201A (ko) * 2018-11-05 2020-05-14 삼성전자주식회사 뉴럴 네트워크 활성화 맵의 손실 압축
KR20200052200A (ko) * 2018-11-05 2020-05-14 삼성전자주식회사 뉴럴 네트워크 가중치들의 압축을 위한 방법 및 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200050433A (ko) * 2018-11-01 2020-05-11 한국전자통신연구원 신경망을 사용하여 영상에 대한 처리를 수행하는 방법 및 장치
KR20200052201A (ko) * 2018-11-05 2020-05-14 삼성전자주식회사 뉴럴 네트워크 활성화 맵의 손실 압축
KR20200052200A (ko) * 2018-11-05 2020-05-14 삼성전자주식회사 뉴럴 네트워크 가중치들의 압축을 위한 방법 및 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12073312B2 (en) 2022-03-15 2024-08-27 Rebellions Inc. Neural processing device and method for controlling the same
WO2024135862A1 (ko) * 2022-12-19 2024-06-27 한국전자기술연구원 비정형 데이터 처리를 지원하는 데이터 처리 및 가공 장치

Also Published As

Publication number Publication date
KR102654690B1 (ko) 2024-04-04

Similar Documents

Publication Publication Date Title
CA2610721C (en) Method and apparatus for adaptive tranforms for compressing data streams
US11588499B2 (en) Lossless compression of neural network weights
CN101562749B (zh) 具有集成的有损压缩和无损压缩的视频数据压缩方法和装置
US10516414B2 (en) Method and device for arithmetic encoding or arithmetic decoding
Sonal A study of various image compression techniques
KR102654690B1 (ko) 딥러닝 가속 장치 및 그 방법
Al-Khafaji Image compression based on quadtree and polynomial
US9948928B2 (en) Method and apparatus for encoding an image
Hadi Medical Image Compression using DCT and DWT Techniques
Lu et al. Image Compression Based on Mean Value Predictive Vector Quantization.
Al-Azawi et al. Compression of Audio Using Transform Coding.
CN111225205B (zh) 用于执行区块内预测的方法和装置
CN111225207B (zh) 用于对变换系数进行编码的方法和装置
CN111294055B (zh) 一种基于自适应字典的数据压缩的编解码方法
Tilki et al. Image data compression using multiple bases representation
Abed et al. Gray-Scale Image Compression Method Based on a Pixel-Based Adaptive Technique
Hasan et al. Discrete Cosine Transform Based Image Compression in Visual Sensor Networks
Ryan et al. Real-time lossless image compression in a hardware environment
KR970014385A (ko) 적응 양자화를 이용한 부호화기
FRÝZA et al. Image Compression Algorithms Optimized for MATLAB
Anitha An Overview of Image Compression.
Ramachandra Information Compression
KR970050841A (ko) 양자화 스텝 사이즈 결정 장치
KR19990027639A (ko) 피엘에이(pla)를 갖는 마이크로프로세서

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant