KR20210106131A - 전자 장치 및 그의 제어 방법 - Google Patents

전자 장치 및 그의 제어 방법 Download PDF

Info

Publication number
KR20210106131A
KR20210106131A KR1020200020895A KR20200020895A KR20210106131A KR 20210106131 A KR20210106131 A KR 20210106131A KR 1020200020895 A KR1020200020895 A KR 1020200020895A KR 20200020895 A KR20200020895 A KR 20200020895A KR 20210106131 A KR20210106131 A KR 20210106131A
Authority
KR
South Korea
Prior art keywords
data
register file
offset information
processor
electronic device
Prior art date
Application number
KR1020200020895A
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 KR1020200020895A priority Critical patent/KR20210106131A/ko
Priority to US17/098,683 priority patent/US11294677B2/en
Priority to PCT/KR2020/016606 priority patent/WO2021167209A1/en
Publication of KR20210106131A publication Critical patent/KR20210106131A/ko

Links

Images

Classifications

    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

전자 장치 및 이의 제어 방법이 개시된다. 본 개시의 전자 장치는 입력 데이터를 저장하는 메모리 및 커널 데이터에 대응되는 인덱스 데이터를 저장하는 제1 레지스터 파일 및 제2 레지스터 파일을 포함하는 프로세서를 포함하고, 상기 프로세서는, 제1 명령이 입력되면, 상기 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋(offset) 정보를 획득하고, 상기 옵셋 정보가 기설정된 개수 이상인 경우, 상기 옵셋 정보를 기설정된 개수 단위로 패킹(packing)한 데이터를 상기 제2 레지스터 파일에 저장하고, 상기 패킹된 데이터를 바탕으로 상기 입력 데이터에 대한 연산을 수행하여 출력 데이터를 획득할 수 있다.

Description

전자 장치 및 그의 제어 방법{Electronic device and control method thereof}
본 개시는 전자 장치 및 이의 제어 방법에 관한 것으로서, 더욱 상세하게는 압축된 커널 데이터에 대응되는 인덱스 데이터에 포함된 유효 데이터의 옵셋 정보를 획득하는 연산을 수행하는 전자 장치 및 이의 제어 방법에 관한 것이다.
기계 학습(예로, 딥 러닝(Deep learning))을 기반으로 학습되는 인공 신경망(neural network)이 다양한 분야에서 개발 및 활용됨에 따라, 인공 신경망이 처리해야 할 데이터의 양도 점차 증가하고 있다. 따라서, 기존에는, 프로세서의 구조를 SIMD(Single Instruction Multiple Data) 프로세서 구조와 같은 병렬 구조로 구현하여 인공 신경망이 더욱 많은 데이터를 효과적으로 처리할 수 있도록 하였다.
다만, SIMD와 같은 병렬 구조의 프로세서는 데이터를 병렬화하기 위하여 별도의 작업을 수행하여야 한다. 따라서, 기존의 병렬 구조의 프로세서는 인공 신경망에 포함된 커널 데이터의 가중치 데이터 중 0을 제외한 유효 데이터만을 식별하여 커널 데이터를 압축할 때, 많은 양의 오버헤드(overhead)가 발생한다는 한계가 존재하였다.
본 개시는 상술한 문제점을 해결하기 위해 안출된 것으로, 본 개시의 목적은 가상 레지스터 파일 및 압축된 커널 데이터에 대응되는 인덱스 데이터의 옵셋 정보를 획득하는 연산을 이용하여 커널 데이터의 sparsity를 처리하는 전자 장치 및 이의 제어 방법을 제공함에 있다.
본 개시의 일 실시예에 따른, 전자 장치는 입력 데이터를 저장하는 메모리 및 압축된 커널(kernel) 데이터에 대응되는 인덱스 데이터를 저장하는 제1 레지스터 파일(register file) 및 제2 레지스터 파일을 포함하는 프로세서를 포함하고, 상기 프로세서는, 제1 명령이 입력되면, 상기 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋(offset) 정보를 획득하고, 상기 옵셋 정보가 기설정된 개수 이상인 경우, 상기 옵셋 정보를 기설정된 개수 단위로 패킹(packing)한 데이터를 상기 제2 레지스터 파일에 저장하고, 상기 패킹된 데이터를 바탕으로 상기 입력 데이터에 대한 연산을 수행하여 출력 데이터를 획득할 수 있다.
한편, 본 개시의 일 실시예에 따른, 압축된 커널 데이터에 대응되는 인덱스 데이터를 저장하는 제1 레지스터 파일 및 제2 레지스터 파일을 포함하는 프로세서를 포함하는 전자 장치의 제어 방법은, 제1 명령이 입력되면, 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득하는 단계, 상기 옵셋 정보가 기설정된 개수 이상인 경우, 상기 옵셋 정보를 기설정된 개수 단위로 패킹한 데이터를 제2 레지스터 파일에 저장하는 단계 및 상기 패킹된 데이터를 바탕으로 상기 입력 데이터에 대한 연산을 수행하여 출력 데이터를 획득하는 단계를 포함할 수 있다.
상술된 본 개시의 다양한 실시예를 통해, 전자 장치는 가상 레지스터 파일 및 압축된 커널 데이터에 대응되는 인덱스 데이터의 옵셋 정보를 획득하는 연산을 이용함으로써, 커널 데이터의 sparsity를 처리할 때 발생하는 오버 헤드를 줄일 수 있으며, 연산에 따른 전력 소비 역시 감소될 수 있다.
도 1a은 본 개시의 일 실시예에 따른, 전자 장치의 구성 및 동작을 설명하기 위한 블록도,
도 1b는 본 개시의 일 실시예에 따른, 커널 데이터 및 커널 데이터에 대응되는 인덱스 데이터를 설명하기 위한 도면,
도 2a는 본 개시의 일 실시예에 따른, 전자 장치에 저장된 각종 모듈을 설명하기 위한 도면,
도 2b는 본 개시의 일 실시예에 따른, 전자 장치의 동작을 설명하기 위한 도면,
도 3는 본 개시의 일 실시예에 따른, 전자 장치가 인덱스 데이터에 포함된 옵셋 정보를 획득하는 과정을 설명하기 위한 순서도,
도 4는 본 개시의 일 실시예에 따른, 전자 장치가 출력 데이터를 획득하기 위한 과정을 설명하기 위한 순서도,
도 5는 본 개시의 일 실시예에 따른, 전자 장치의 구성을 상세히 도시한 블록도,
도 6은 본 개시의 일 실시예에 따른, 전자 장치의 제어 방법을 설명하기 위한 도면이다.
본 개시는 DNN(Deep Neural Network)과 같은 각종 인공 신경망(neural network)의 레이어에 포함된 커널 데이터에 대응되는 인덱스 데이터 중 유효 데이터의 옵셋 정보를 획득하고, 획득된 옵셋 정보를 패킹한 데이터를 가상 레지스터 파일에 저장함으로써 압축된 커널 데이터에 대응되는 활성(activation) 데이터를 가져오는 방식에 관한 것이다. 즉, 본 개시의 전자 장치(100)는 가상 레지스터 파일 및 옵셋 정보를 획득하는 연산을 활용하여 커널 데이터의 sparsity 즉, 커널 데이터에 대응되는 활성 데이터 중 0이 아닌 커널 데이터에 대응되는 활성 데이터만을 처리하여 효율적인 연산이 가능하다.
이하에서는 첨부한 도면을 참조하여 본 개시의 일 실시예에 대하여, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.
도 1a은 본 개시의 일 실시예에 따른, 전자 장치(100)의 구성 및 동작을 구체적으로 설명하기 위한 도면이다. 도 1a에 도시된 바와 같이, 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함할 수 있다. 다만, 도 1a에 도시된 구성은 본 개시의 실시 예들을 구현하기 위한 예시도이며, 통상의 기술자에게 자명한 수준의 적절한 하드웨어 및 소프트웨어 구성들이 전자 장치(100)에 추가로 포함될 수 있다.
메모리(110)는 전자 장치(100)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 그리고, 메모리(110)는 프로세서(120)에 의해 액세스되며, 프로세서(120)에 의한 데이터의 독취/기록/수정/삭제/갱신 등이 수행될 수 있다.
특히, 메모리(110)는 프로세서(120)가 실행할 수 있는 적어도 하나의 프로그램에 대응되는 인스트럭션 집합(instruction set)을 저장할 수 있다. 인스트럭션은 프로그래밍 작성 언어에서 프로세서(120)가 직접 실행할 수 있는 하나의 동작 문장(action statement)를 의미하며, 프로그램의 실행 또는 동작에 대한 최소 단위이다. 그리고, 메모리(110)는 입력부 등을 통해 입력된 입력 데이터를 저장할 수 있다. 예를 들면, 입력 데이터는 마이크를 통해 입력된 음성의 특징 데이터 또는 카메라를 통해 획득된 영상의 특징 데이터를 포함할 수 있다. 그리고, 입력 데이터는 벡터 또는 행렬로 구현된 데이터일 수 있으나 이는 일 실시예에 불과하며, 그래프, 표(table) 등 다양한 형태의 데이터로 구현될 수 있다.
그리고, 메모리(110)는 DNN 등 인공 신경망의 각 레이어(layer)에 포함된 커널(kernel) 데이터 및 커널 데이터에 대응되는 인덱스 데이터를 포함할 수 있다. 커널 데이터는 입력 데이터의 특징 값을 추출 및 획득하기 위한 가중치 값을 포함하는 커널(또는, 필터(filter))에 대한 데이터(예를 들어, 커널에 포함된 가중치 값, 가중치의 옵셋 정보 등)에 대한 데이터를 포함할 수 있다. 한편, 커널 데이터는 행렬 또는 벡터의 형태의 데이터로 구현될 수 있으며, 커널 데이터가 행렬 데이터로 구현된 경우, 커널 데이터의 엘리먼트(element)(또는, 엔트리(entry)) 각각에는 가중치 값이 맵핑(mapping)될 수 있다.
그리고, 커널 데이터에 대응되는 인덱스 데이터는 커널 데이터에 포함된 가중치에 대한 정보를 포함하는 데이터이다. 구체적으로, 인덱스 데이터는 커널 데이터의 각 엘리먼트에 포함된 가중치 값이 0인지 여부 및 각 가중치 값의 옵셋 정보를 획득 또는 식별할 수 있는 데이터이다. 예를 들어, 커널 데이터(30)는 도 1b에 도시된 바와 같이 8X8 형태의 행렬 데이터로 구현될 수 있으며, 각 행렬의 엘리먼트에는 0 또는 0이 아닌 가중치 값이 맵핑될 수 있다. 그리고, 커널 데이터(30)에 대응되는 인덱스 데이터(40)는 8X8 형태의 행렬로 구현될 수 있으며, 인덱스 데이터(40)의 각 엘리먼트는 0 또는 1인 값으로 맵핑될 수 있다. 커널 데이터(30)의 특정 엘리먼트에 0인 가중치 값이 맵핑된 경우, 인덱스 데이터(40)의 특정 엘리먼트에 0인 값이 맵핑될 수 있다. 그리고, 커널 데이터(30)의 특정 엘리먼트에 0이 아닌 값이 가중치 값이 맵핑된 경우, 인덱스 데이터(40)의 특정 엘리먼트에는 0이 아닌 값이 맵핑될 수 있다. 예를 들어, 도 1b를 참조할 때, 인덱스 데이터(40)의 (1,1)의 위치에 0이 맵핑된 경우, 커널 데이터(30)의 (1,1)의 위치에 0인 가중치 값이 맵핑되어 있음을 의미하고, 인덱스 데이터(40)의 (1,3)의 위치에 1이 맵핑된 경우, 커널 데이터(30)의 (1,3)의 위치에 0이 아닌 가중치 값이 맵핑되어 있음을 의미할 수 있다. 그리고, 커널 데이터(30)와 입력 데이터간의 연산을 수행하여 획득된 값과 커널 데이터(30)에 0을 제외한 가중치 값만이 포함하는 압축 데이터(50) 및 인덱스 데이터(40)와 입력 데이터간의 연산을 수행하여 획득된 값은 동일할 수 있다.
한편, 메모리(110)는 비휘발성 메모리, 휘발성 메모리, 플래시메모리(flash-memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD) 등으로 구현될 수 있다. 그리고, 본 개시에서 메모리라는 용어는 메모리(110), 프로세서(120) 내 롬(미도시), 램(미도시) 또는 전자 장치(100)에 장착되는 메모리 카드(미도시)(예를 들어, micro SD 카드, 메모리 스틱)를 포함할 수 있다. 또한, 메모리(110)에는 디스플레이의 디스플레이 영역에 표시될 각종 화면을 구성하기 위한 프로그램 및 데이터 등이 저장될 수 있다.
그리고, 휘발성 메모리는 전력 공급이 중단되더라도 저장된 정보를 유지할 수 있는 메모리를 말한다. 예를 들어, 비휘발성 메모리는 플래시 메모리(Flash Memory), PROM(Programmable Read-Only Memory), MRAM(Magnetoresistive Random-Access Memory) 및 RRAM(Resistive RAM) 중 적어도 하나를 포함할 수 있다. 휘발성 메모리는 저장된 정보를 유지하기 위해서는 지속적인 전력 공급이 필요한 메모리를 말한다. 예를 들어, 휘발성 메모리는 DRAM(Dynamic Random-Access Memory) 및 SRAM(Static RAM) 중 적어도 하나를 포함할 수 있다.
프로세서(120)는 메모리(110)와 전기적으로 연결되어 전자 장치(100)의 전반적인 동작을 수행할 수 있다. 본 개시를 설명함에 있어, 프로세서(120)는 하나 또는 복수의 프로세서로 구성될 수 있으며, CPU(Central Processing unit)과 같은 범용 프로세서로 구현될 수 있다. 다만, 이는 일 실시예에 불과하며, 프로세서(120)는 GPU(graphics-processing Unit), VPU (Visual Processing Unit) 등과 같은 그래픽 전용 프로세서 또는 NPU(Neural Processing Unit)와 같은 인공지능 전용 프로세서로 구현될 수 있음은 물론이다.
그리고, 프로세서(120)는 커널 데이터에 대응되는 인덱스 데이터를 저장하는 제1 레지스터 파일(register file)(10) 및 제2 레지스터 파일(20)을 포함할 수 있다. 레지스터 파일은 프로세서(120)가 수행하는 각종 명령, 명령의 대상이 되는 데이터(예를 들어, 피연산자, 피연산자의 어드레스 등)를 일시적으로 유지하거나 저장하는 레지스터의 집합을 의미한다.
제1 레지스터 파일(10)은 프로세서(120)가 수행할 수 있는 명령의 대상이 되는 데이터를 저장하는 범용 레지스터(general register)의 집합이다. 그리고, 프로세서(120)는 메모리(110)에 저장된 커널 데이터에 대응되는 인덱스 데이터 중 일부 또는 전체를 로딩하여 제1 레지스터 파일(10)에 저장할 수 있다. 그리고, 제2 레지스터 파일(20)은 컴파일러(compiler)가 하나의 가상 주소(virtual address)를 이용하여 접근 및 컴파일할 수 있는 가상 레지스터 파일이다. 제2 레지스터 파일(20)은 기설정된 엔트리(entry)(예를 들어, 8개의 엔트리 등)를 포함할 수 있으며, 각 엔트리에는 인덱스 데이터에 포함된 유효 데이터의 옵셋 정보가 패킹된 데이터가 저장될 수 있다. 그리고, 도 1a에는 프로세서(120)에 제2 레지스터 파일(20) 하나가 포함되어 있는 것으로 도시되어 있으나 이는 일 실시예에 불과하며 복수 개의 제2 레지스터 파일(20)이 프로세서(120)에 포함될 수 있다. 한편, 컴파일러는 상위 수준의 프로그래밍 언어(예를 들어, C 언어)를 하위 수준의 프로그래밍 언어(예를 들어, 어셈블리어, 기계어)로 변환하는 도구 또는 프로그램이다.
그리고, 프로세서(120)에는 인덱스 데이터 parser 모듈(30) 및 Packer Ready Checker 모듈(40)을 통해 각종 동작을 수행하고 다양한 정보를 획득할 수 있다. 각 모듈은 소프트웨어 모듈 또는 하드웨어 모듈로 구현될 수 수 있으며, 프로세서(120)에 의해 제어될 수 있다. 제1 명령이 입력되면, 인덱스 데이터 parser 모듈(30)은 제1 레지스터 파일(10)에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득하고, 옵셋 정보를 패킹한 데이터를 제2 레지스터 파일(20)에 저장할 수 있다. 그리고, 제2 명령이 입력되면, Packer Ready Checker 모듈(40)은 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일(20)에 저장되어 있는지 여부를 바탕으로 입력 데이터와 연산을 수행할 수 있는지 여부에 대한 메시지를 제공할 수 있다.
구체적으로, 제1 명령이 입력되면, 프로세서(120)는 인덱스 데이터 parser 모듈(30)을 통해 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋(offset) 정보를 획득할 수 있다. 구체적으로, 프로세서(120)는 인덱스 데이터 parser 모듈(30)을 통해 인덱스 데이터 중 기설정된 값(예를 들어, 128bit)만큼의 데이터 중 유효 데이터가 포함되어 있는지 및 몇 기설정된 값만큼의 데이터 중 몇 개의 유효 데이터가 포함되어 있는지에 대한 정보를 획득할 수 있다. 그리고, 프로세서(120)는 인덱스 데이터 parser 모듈(30)을 통해 인덱스 데이터 중 일부에 포함된 유효 데이터를 식별하는 동시에 또는 임계 시간 내에 식별된 유효 데이터의 옵셋 정보를 획득할 수 있다. 예를 들어, 벡터 형태의 128bit 인덱스 데이터 중 6개의 유효 데이터가 있는 경우, 프로세서(120)는 유효 데이터가 6개 있음을 식별하는 동시에 또는 임계 시간 내에 식별된 6개의 유효 데이터 각각의 옵셋 정보를 획득할 수 있다.
한편, 제1 명령은 적어도 하나의 인스트럭션으로 구성될 수 있으며, 사용자로부터 직접 입력될 수 있다. 다만, 이는 일 실시예에 불과하며, 영상 또는 음성 데이터가 입력부를 통해 입력되면, 프로세서(120)는 적어도 하나의 인스트럭션으로 구성된 제1 명령이 입력된 것으로 식별하여 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다. 한편, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
그리고, 인덱스 데이터는 0 또는 1인 값을 가지는 데이터를 포함하며, 유효 데이터는 1인 값을 가지는 데이터이다. 그리고, 인덱스 데이터의 특정 엔트리(또는, 엘리먼트)에 1인 값을 가지는 데이터가 포함된 경우, 프로세서(120)는 커널 데이터의 특정 엔트리에는 0이 아닌 가중치 값을 가지고 있음을 식별할 수 있으며, 인덱스 데이터의 특정 엔트리에 0인 데이터가 포함된 경우, 프로세서(120)는 커널 데이터의 특정 엔트리에는 0인 가중치 값을 가지고 있음을 식별할 수 있다.
그리고, 유효 데이터의 옵셋 정보는 유효 데이터가 있는 엔트리의 주소로부터 인덱스 데이터의 첫번째 데이터가 있는 엔트리의 주소까지의 변위차 등에 대한 정보를 포함할 수 있다. 그리고, 프로세서(120)는 유효 데이터의 옵셋 정보에 포함된 유효 데이터의 옵셋 주소에 접근하여 유효 데이터의 옵셋 주소에 저장되어 있는 데이터를 로딩할 수 있다.
그리고, 프로세서(120)는 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득하는데 필요한 제1 시간이 컴파일러가 제1 명령을 컴파일하기 위해 할당된 제2 시간을 초과하는지 여부를 식별할 수 있다. 구체적으로, 제1 명령이 입력되면, 프로세서(120)는 메모리(110)에 프로그램의 형태로 저장된 컴파일러를 통해 제1 명령을 컴파일(즉, 프로세서(120)가 실행할 수 있는 수준의 언어로 구현된 적어도 하나의 인스트럭션으로 변환)하고, 변환된 적어도 하나의 인스트럭션을 인덱스 데이터 parser 모듈(30)을 통해 실행함으로써 인덱스 데이터에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다. 한편, 인덱스 데이터 중 일부에 포함된 유효 데이터의 개수는 런타임(runtime) 중에 식별될 수 있으므로, 프로세서(120)는 유효 데이터의 옵셋 정보를 획득하는데 필요한 제1 시간은 컴파일러가 제1 명령을 컴파일하기 전에는 식별할 수 없을 수 있다. 따라서, 유효 데이터의 개수가 기설정된 개수 이상인 경우, 제1 시간이 컴파일러가 제1 명령을 컴파일하는데 할당 또는 스케줄된 제2 시간을 초과할 수 있다. 제1 시간이 제2 시간을 초과한다고 식별되면, 프로세서(120)는 스톨(stall) 신호를 출력하여 제1 명령의 수행을 제외한 나머지 동작은 수행하지 않도록 제어할 수 있다. 프로세서(120)가 제1 명령의 수행을 제외한 나머지 동작을 중지시킴으로써, 컴파일러는 할당 또는 스케줄된 제2 시간 내에 제1 명령을 컴파일할 수 있다. 그리고, 프로세서(120)는 컴파일된 제1 명령을 실행하여 인덱스 데이터 중 일부의 유효 데이터의 옵셋 정보를 획득할 수 있다.
그리고, 옵셋 정보가 기설정된 개수 이상인 경우, 프로세서(120)는 옵셋 정보를 기설정된 개수 단위로 패킹(packing)한 데이터를 제2 레지스터 파일(20)에 저장할 수 있다. 패킹은 유효 데이터의 옵셋 정보를 제2 레지스터 파일 중 하나의 엔트리에 맵핑하는 동작을 포함할 수 있다. 한편, 인덱스 데이터의 일부 중 유효 데이터의 옵셋 정보가 기설정된 개수 이하인 경우, 프로세서(120)는 제1 레지스터 파일에 저장된 인덱스 파일 중 일부를 제외한 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다. 그리고, 프로세서(120)는 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 패킹한 데이터를 제2 레지스터 파일(20)에 저장할 수 있다.
그리고, 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일에 저장되면, 프로세서(120)는 제2 레지스터 파일에 저장된 데이터를 바탕으로 입력 데이터에 대한 연산을 수행할 수 있음을 나타내는 신호(예를 들어, 유효(valid) 신호)를 출력할 수 있다. 즉, 제2 레지스터 파일(20)의 기설정된 개수의 엔트리 모두에 옵셋 정보를 패킹한 데이터가 저장된 경우뿐만 아니라 프로세서(120)는 하나의 옵셋 정보를 패킹한 데이터가 제2 레지스터 파일(20)에 저장된 경우에도 입력 데이터와 연산을 수행할 수 있음을 나타내는 신호인 유효 신호를 출력할 수 있다. 예를 들면, 유효 신호를 출력하고 임계 시간 후, 프로세서(120)는 패킹된 데이터를 바탕으로 메모리(110)에 저장된 입력 데이터에 대한 연산을 수행함으로써 출력 데이터를 획득할 수 있다. 또 다른 예로, 유효 신호를 출력하고 사용자로부터 연산을 수행하라는 명령이 입력되면, 프로세서(120)는 패킹된 데이터를 바탕으로 입력 데이터에 대한 연산을 수행할 수 있다.
또 다른 예로, 제2 명령이 입력되면, 프로세서(120)는 Packer Ready Checker 모듈(40)를 통해 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일에 저장되어 있는지 여부를 바탕으로 입력 데이터와 연산을 수행할 수 있는지 여부에 대한 메시지를 제공할 수 있다. 구체적으로, 제2 명령이 입력되면, 프로세서(120)는 Packer Ready Checker 모듈(40)를 통해 제2 레지스터 파일에 적어도 하나의 옵셋 정보를 패킹한 데이터가 저장되어 있는지 여부를 식별할 수 있다.
제2 레지스터 파일에 적어도 하나의 옵셋 정보를 패킹한 데이터가 저장되어 있다고 식별되면, 프로세서(120)는 패킹한 데이터를 바탕으로 입력 데이터에 대한 연산을 수행할 수 있음을 나타내는 메시지를 제공할 수 있다. 또 다른 예로, 제2 레지스터 파일에 옵셋 정보를 패킹한 데이터가 저장되어 있지 않다고 식별되면, 프로세서(120)는 패킹한 데이터를 바탕으로 입력 데이터에 대한 연산을 수행할 수 없다는 메시지를 제공할 수 있다.
그리고, 프로세서(120)는 Packer Ready Checker(40) 모듈이 수행할 수 있는 제2 명령을 실행함으로써 제2 레지스터 파일에 저장된 데이터와 입력 데이터와 연산을 수행할 수 있는지에 대한 메시지를 제공할 수 있다. 한편, 제2 레지스터 파일은 컴파일러가 하나의 가상 주소를 이용하여 접근할 수 있는 가상 레지스터 파일이므로, 컴파일러가 하나의 가상 주소를 이용하여 레지스터 파일에 접근하면, 프로세서(120)는 하나의 가상 주소를 물리 주소로 변환하여 컴파일러가 제2 레지스터 파일에 저장된 패킹한 데이터에 접근할 수 있도록 제어할 수 있다.
한편, 프로세서(120)는 제2 레지스터 파일에 저장한 패킹한 데이터를 바탕으로 입력 데이터에 대한 연산을 수행할 수 있다. 구체적으로, 프로세서(120)는 제2 레지스터 파일의 각 엔트리에 패킹되어 저장된 옵셋 정보를 통해 각 유효 데이터의 옵셋 주소를 식별할 수 있다. 각 유효 데이터의 옵셋 주소는 커널 데이터에 저장된 데이터의 옵셋 주소일 수 있다. 따라서, 전자 장치(100)는 식별된 커널 데이터의 옵셋 주소에 저장된 데이터에 접근할 수 있다. 그리고, 프로세서(120)는 접근한 데이터를 로딩하고, 로딩된 데이터와 입력 데이터 간에 연산을 수행할 수 있다. 로딩된 데이터와 입력 데이터가 행렬 또는 벡터 등으로 구현된 경우, 프로세서(120)는 로딩된 데이터와 입력 데이터 간에 덧셈, 곱셈, 내적, 외적 등 다양한 연산을 수행할 수 있다. 이와 관련된 구체적인 실시예는 도 2a 및 도 2b를 참조하여 구체적으로 설명하도록 한다.
그리고, 인덱스 데이터 중 일부를 제외한 나머지 데이터의 개수가 기설정된 개수 이하인 경우, 프로세서(120)는 인덱스 데이터 중 일부를 제외한 나머지 데이터에 대해 패딩(padding)을 수행할 수 있다. 인덱스 데이터 중 일부를 제외한 나머지 데이터에 대해 패딩을 수행하는 것은 기설정된 개수 이하인 인덱스 데이터 중 일부를 제외한 나머지 데이터 값을 0으로 맵핑하는 동작을 포함할 수 있다. 따라서, 인덱스 데이터 중 일부를 제외한 나머지 데이터의 개수가 기설정된 개수 이하인 경우, 프로세서(120)는 인덱스 데이터 중 일부를 제외한 나머지 데이터의 값을 0으로 맵핑할 수 있다.
본 개시에 따른 인공지능과 관련된 기능은 메모리(110) 및 프로세서(120)를 통해 동작된다. 하나 또는 복수의 프로세서(120)는, 메모리(110)에 저장된 기 정의된 동작 규칙 또는 인공 지능 모델에 따라, 입력 데이터를 처리하도록 제어한다. 기 정의된 동작 규칙 또는 인공 지능 모델은 학습을 통해 만들어진 것을 특징으로 한다. 여기서, 학습을 통해 만들어진다는 것은, 다수의 학습 데이터들에 학습 알고리즘을 적용함으로써, 원하는 특성의 기정의된 동작 규칙 또는 인공지능 모델이 만들어짐을 의미한다. 이러한 학습은 본 개시에 따른 인공지능이 수행되는 기기 자체에서 이루어질 수도 있고, 별도의 서버/시스템을 통해 이루어 질 수도 있다.
인공지능 모델은, 복수의 신경망 레이어들로 구성될 수 있다. 각 레이어는 복수의 가중치(weight values)을 갖고 있으며, 이전(previous) 레이어의 연산 결과와 복수의 가중치의 연산을 통해 레이어의 연산을 수행한다. 신경망의 예로는, CNN (Convolutional Neural Network), DNN (Deep Neural Network), RNN (Recurrent Neural Network), RBM (Restricted Boltzmann Machine), DBN (Deep Belief Network), BRDNN(Bidirectional Recurrent Deep Neural Network) 및 심층 Q-네트워크 (Deep Q-Networks)이 있으며, 본 개시에서의 신경망은 명시한 경우를 제외하고 전술한 예에 한정되지 않는다.
학습 알고리즘은, 다수의 학습 데이터들을 이용하여 소정의 대상 기기(예컨대, 로봇)을 훈련시켜 소정의 대상 기기 스스로 결정을 내리거나 예측을 할 수 있도록 하는 방법이다. 학습 알고리즘의 예로는, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)이 있으며, 본 개시에서의 학습 알고리즘은 명시한 경우를 제외하고 전술한 예에 한정되지 않는다.
도 2a 및 도 2b는 전자 장치(100)에 저장된 각종 소프트웨어 모듈의 동작을 설명하기 위한 도면이다. 도 2a에 도시된 소프트웨어 모듈은 비휘발성 메모리에 저장되어 있을 수 있으며, 프로세서(120)에 의해 휘발성 메모리에 로딩될 수 있다. 도 2a는 휘발성 메모리가 프로세서(120)의 일 구성요소로 구현된 경우를 도시한 것이나, 또 다른 실시예에 따르면, 휘발성 메모리는 프로세서(120)와는 별개의 구성 요소로 구현될 수 있다. 그리고, 각종 소프트웨어 모듈의 동작은 프로세서(120)에 의해 제어될 수 있다.
제1 명령이 입력되면, 옵셋 정보 획득 모듈(210)은 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다. 즉, 옵셋 정보 획득 모듈(210)는 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 0 또는 1인 값을 가지는 데이터 중 1인 값을 가지는 데이터의 옵셋 정보를 획득할 수 있다. 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보는 인덱스 데이터 중 유효 데이터가 있는 엔트리의 주소로부터 인덱스 데이터의 첫번째 데이터가 있는 엔트리의 주소까지의 변위차 등에 대한 정보를 포함할 수 있다. 따라서, 프로세서(120)는 인덱스 데이터에 포함된 유효 데이터의 옵셋 정보를 통해 인덱스 데이터에 대응되는 커널 데이터에 포함된 유효 데이터의 옵셋 주소를 식별하고, 식별된 옵셋 주소에 접근할 수 있다.
그리고, 프로세서(120)는 옵셋 정보 획득 모듈(210)을 통해 획득된 유효 데이터의 옵셋 정보를 packer 모듈(220)에 입력할 수 있다. Packer 모듈(220)은 옵셋 정보 획득 모듈(210)이 획득한 유효 데이터의 옵셋 정보를 기설정된 개수 단위로 패킹하고, 패킹한 데이터를 제2 레지스터 파일(230)의 엔트리에 순차적으로 저장할 수 있다. 유효 데이터의 옵셋 정보가 기설정된 개수 미만 인 경우에도, packer 모듈(220)는 옵셋 정보를 패킹하여 제2 레지스터 파일(230)의 엔트리에 저장할 수 있다. 제2 레지스터 파일(230)은 컴파일러가 하나의 가상 주소를 이용하여 접근 및 컴파일할 수 있는 가상 레지스터 파일이다. 한편, 제2 레지스터 파일(230)와 관련된 실시예는 도 1을 참조하여 설명하였으므로 중복되는 설명은 생략하도록 한다.
한편, 제1 명령이 입력되면, 프로세서(120)는 컴파일러를 통해 상위 수준의 프로그래밍 언어인 제1 명령을 컴파일할 수 있다. 그리고, 제1 명령이 프로세서(120)가 즉시 실행할 수 하위 수준의 프로그래밍 언어로 이루어진 적어도 하나의 인스트럭션으로 변환되면, 프로세서(120)는 변환된 적어도 하나의 인스트럭션을 실행함으로써 옵셋 정보 획득 모듈(210)을 통해 인덱스 데이터에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다. 한편, 인덱스 데이터 중 일부에 포함된 유효 데이터의 개수는 런타임 중에 식별될 수 있으므로, 프로세서(120)는 유효 데이터의 옵셋 정보를 획득하는데 필요한 제1 시간은 컴파일러가 제1 명령을 컴파일하기 전에는 식별할 수 없을 수 있다. 따라서, 인덱스 데이터 중 일부에 포함된 유효 데이터의 개수가 기설정된 개수 이상인 경우, 제1 시간이 컴파일러가 제1 명령을 컴파일하는데 할당 또는 스케줄된 제2 시간을 초과할 수 있다. 따라서, 제1 시간이 제2 시간을 초과한다고 식별되면, 프로세서(120)는 stall 생성기 모듈(240)을 통해 스톨(stall) 신호를 출력하여 제1 명령의 수행을 제외한 나머지 동작은 수행하지 않도록 제어할 수 있다. 즉, 프로세서(120)는 다른 동작을 중지시킴으로써 컴파일러는 할당 또는 스케줄된 제2 시간 내에 제1 명령을 컴파일할 수 있다. 그리고, 프로세서(120)는 컴파일된 제1 명령을 실행하여 인덱스 데이터 중 일부의 유효 데이터의 옵셋 정보를 획득할 수 있다.
그리고, 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일(230)에 저장되면, 프로세서(120)는 status checker 모듈(250)을 통해 제2 레지스터(230)에 저장된 데이터를 바탕으로 입력 데이터에 대한 연산을 수행할 수 있음을 나타내는 valid 신호를 출력할 수 있다. 또 다른 실시예로, 제2 명령이 입력되면, 프로세서(120)는 컴파일러를 이용하여 제2 명령을 컴파일하여 제2 명령에 대응되는 적어도 하나의 인스트럭션으로 변환할 수 있다. 그리고, 프로세서(120)는, 변환된 제2 명령에 대응되는 적어도 하나의 인스트럭션을 실행함으로써, status checker 모듈(250)을 통해 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일(230)에 저장되어 있는지 여부를 바탕으로 입력 데이터에 대한 연산을 수행할 수 있는지 여부에 대한 메시지를 제공할 수 있다. 예를 들어, 프로세서(120)는 입력 데이터에 대한 연산을 수행할 수 있다는 메시지는 음성 형태로 출력하거나 디스플레이 상에 표시할 수 있다.
Gather logic 모듈(260)은 제2 레지스터 파일(230)에 저장된 옵셋 정보를 이용하여 커널 데이터에 저장된 데이터를 모을 수 있다. 예를 들어, 도 2b를 참조할 때, gather logic 모듈(260)은 제2 레지스터 파일(230)의 첫번째 엔트리(entry)에 패킹된 옵셋 정보를 통해 옵셋 주소가 10임을 식별할 수 있다. 인덱스 데이터에 포함된 유효 데이터의 옵셋 주소는 인덱스 데이터에 대응되는 커널 데이터의 0이 아닌 데이터의 옵셋 주소일 수 있다. 따라서, gather logic 모듈(260)은 커널 데이터(280) 중 옵셋 주소 값이 10으로 저장된 데이터인 3을 로딩할 수 있다. 그리고, 프로세서(120)는 gather logic 모듈(260)을 통해 로딩된 데이터에 특정 상수(예를 들어, 도 2b의 경우, 2)를 더한 값을 벡터 형태의 데이터의 첫번째 엔트리에 로딩할 수 있다. 그리고, 프로세서(120)는 8개의 엔트리에 모든 데이터가 로딩되면, 로딩된 벡터 형태의 데이터와 입력 데이터 간에 연산을 수행하여 출력 데이터를 획득할 수 있다. 따라서, 프로세서(120)는 Gather logic 모듈(260)을 통해 제2 레지스터 파일(230)에 저장된 옵셋 정보를 기설정된 개수 단위로 패킹한 데이터에 대응되는 데이터를 획득하고, 획득된 데이터와 입력 데이터간에 연산을 수행할 수 있다.
그리고, Gather logic 모듈(260)을 통해 획득된 데이터와 입력 데이터간의 연산이 수행이 완료되면, 프로세서(120)는 status checker 모듈(250)을 통해 현재 입력 데이터에 대한 연산을 수행할 수 없음을 나타내는 신호를 출력할 수 있다.
Address translator 모듈(270)은 컴파일러가 하나의 가상 주소를 이용하여 제2 레지스터 파일(230)에 접근하도록 컴파일하면, 하나의 가상 주소를 물리 주소로 변환하여 입력 데이터에 대한 연산에 필요한 데이터를 제공할 수 있게 하는 모듈이다. 즉, Address translator 모듈(270)은 런 타임에 생성된 옵셋 정보의 양에 따라 달라질 수 있는 주소 정보 등을 관리하는 모듈이다.
한편, 제2 레지스터 파일(230)에 저장된 옵셋 정보 중 옵셋 주소는 가상 주소일 수 있다. Address translator 모듈(270)는 가상 주소인 옵셋 주소를 물리 주소로 변환할 수 있다. 따라서, 프로세서(120)는 Address translator 모듈(270)를 통해 식별된 옵셋 주소를 물리 주소로 변환하고, 변환된 물리 주소에 저장된 데이터에 접근할 수 있다.
도 3은 본 개시의 일 실시예에 따른, 전자 장치(100)가 인덱스 데이터에 포함된 옵셋 정보를 획득하는 과정을 설명하기 위한 순서도이다. 우선, 전자 장치(100)는 제1 명령이 입력되는지 여부를 식별할 수 있다(S310). 제1 명령이 입력되었다고 식별되면, 전자 장치(100)는 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득하는데 필요한 제1 시간이 컴파일러가 제1 명령을 컴파일하기 위해 할당된 제2 시간을 초과하는지 여부를 식별할 수 있다(S320). 제1 시간이 제2 시간을 초과한다고 식별되면, 전자 장치(100)는 스톨 신호를 출력할 수 있다. 스톨 신호가 출력되면, 전자 장치(100)는, 제1 명령의 수행을 제외한 나머지 동작을 중지시킬 수 있다. 그 후, 전자 장치(100)는 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다(S340). 한편, 제1 시간이 제2 시간을 초과하지 않는다고 식별되면, 전자 장치(100)는 바로 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다(S340).
그리고, 전자 장치(100)는 획득된 옵셋 정보의 개수가 기설정된 개수 이하인지 여부를 식별할 수 있다(S350). 획득된 옵셋 정보의 개수가 기설정된 개수를 초과한 경우, 전자 장치(100)는 옵셋 정보를 기설정된 개수 단위로 패킹한 데이터를 제2 레지스터 파일에 저장할 수 있다(S360). 구체적으로, 전자 장치(100)는 패킹한 데이터를 제2 레지스터 파일의 각 엔트리에 순차적으로 저장할 수 있다. 그리고, 전자 장치(100)는 각 엔트리에 저장된 옵셋 정보에 포함된 가상 주소를 이용하여 가상 주소에 대응되는 물리 주소에 저장된 데이터를 로딩할 수 있다. 그리고, 전자 장치(100)는 로딩된 데이터와 입력 데이터 간의 연산을 수행할 수 있다.
한편, 획득된 옵셋 정보의 개수가 기설정된 개수 이하라고 식별되면, 전자 장치(100)는 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부를 제외한 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다(S370). 그리고, 전자 장치(100)는 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 패킹한 데이터를 제2 레지스터 파일에 저장할 수 있다(S380).
도 4는 본 개시의 일 실시예에 따른, 전자 장치(100)가 출력 데이터를 획득하기 위한 과정을 설명하기 위한 순서도이다.
우선, 전자 장치(100)는 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일에 저장되어 있는지 여부를 식별할 수 있다(S410). 제2 레지스터 파일에 옵셋 정보를 패킹한 적어도 하나의 데이터가 저장되어 있지 않은 경우, 전자 장치(100)는 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득하는 과정을 반복할 수 있다.
제2 레지스터 파일에 옵셋 정보를 패킹한 적어도 하나의 데이터가 저장되어 있다고 식별되면, 전자 장치(100)는 입력 데이터에 대한 연산을 수행할 수 있음을 나타내는 신호를 출력할 수 있다(S420). 즉, 전자 장치(100)는 제2 레지스터 파일에 저장된 데이터를 바탕으로 입력 데이터에 대한 연산을 수행할 수 있음을 나타내는 신호를 출력함으로써, 사용자는 전자 장치(100)가 현재 입력 데이터와 연산을 수행할 수 있는 상황임을 식별할 수 있다.
한편, 제2 명령이 입력되면, 전자 장치(100)는 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일에 저장되어 있는지 여부를 바탕으로 입력 데이터와 연산을 수행할 수 있는지 여부에 대한 메시지를 제공할 수 있다. 즉, 제2 레지스터 파일에 옵셋 정보가 패킹된 적어도 하나의 데이터가 저장되면, 전자 장치(100)는 입력 데이터에 대한 연산을 수행할 수 있음을 나타내는 신호를 출력할 수 있다. 그리고, 제2 명령이 입력되면, 전자 장치(100)는 입력 데이터와 연산을 수행할 수 있음을 나타내는 메시지를 제공할 수 있다.
그리고, 전자 장치(100)는 패킹한 데이터를 바탕으로 입력 데이터에 대한 연산을 수행하여 출력 데이터를 획득할 수 있다(S430). 구체적으로, 전자 장치(100)는 제2 레지스터 파일의 각 엔트리에 패킹되어 저장된 옵셋 정보를 이용하여 커널 데이터에 포함된 데이터를 로딩할 수 있다. 예를 들어, 제2 레지스터 파일이 8개의 엔트리로 이루어지고, 각 엔트리에 옵셋 정보가 패킹되어 저장된 경우, 전자 장치(100)는 각 엔트리에 저장된 옵셋 정보 중 옵셋 주소를 식별하고, 식별된 옵셋 주소에 저장된 데이터에 접근할 수 있다. 그리고, 전자 장치(100)는 접근한 데이터를 로딩하고, 로딩된 데이터와 입력 데이터 간에 연산을 수행하여 출력 데이터를 획득할 수 있다.
도 5는 본 개시의 일 실시예에 따른, 전자 장치(100)의 구성을 상세히 도시한 블록도이다. 도 5에 도시된 바와 같이, 전자 장치(100)는 메모리(110), 프로세서(120), 통신부(130), 디스플레이(140), 입력부(150) 및 스피커(160)를 포함할 수 있다. 다만, 메모리(110) 및 프로세서(120)는 도 1을 참조하여 설명하였으므로 중복되는 설명은 생략하도록 한다.
통신부(130)는 회로를 포함하며, 서버(미도시) 또는 외부 장치(미도시)와의 통신을 수행할 수 있다. 구체적으로, 프로세서(120)는 통신부(130)를 통해 연결된 서버(미도시) 또는 외부 장치(미도시)로부터 각종 데이터 또는 정보를 수신 및 전송할 수 있다. 특히, 통신부(130)는 외부 서버 또는 외부 장치로부터 입력 데이터를 수신할 수 있다. 따라서, 통신부(130)가 수신한 입력 데이터와 제2 레지스터 파일에 패킹하여 저장한 데이터간에 연산이 프로세서(120) 제어에 의해 수행될 수 있다.
그리고, 통신부(130)는 외부 장치와 통신을 수행하기 위해 다양한 통신 모듈을 포함할 수 있다. 일 예로, 통신부(130)는 무선 통신 모듈을 포함할 수 있으며, 예를 들면, LTE, LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 5G(5th generation) 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 사용하는 셀룰러 통신 모듈을 포함할 수 있다. 또 다른 예로, 무선 통신 모듈은, 예를 들면, WiFi(wireless fidelity), 블루투스, 블루투스 저전력(BLE), 지그비(Zigbee), 중 적어도 하나를 포함할 수 있다.
디스플레이(140)는 LCD(Liquid Crystal Display Panel), OLED(Organic Light Emitting Diodes) 등으로 구현될 수 있으며, 경우에 따라 플렉서블 디스플레이, 투명 디스플레이 등으로 구현되는 것도 가능하다. 그리고, 디스플레이(140)는 터치 패널과 함께 터치 스크린으로도 구현될 수 있다. 그러나 상술한 구현으로 한정되는 것은 아니며, 디스플레이(140)는 전자 장치(100)의 유형에 따라 다르게 구현될 수 있다.
그리고, 디스플레이(140)는 프로세서(120) 제어에 의해 다양한 정보를 표시할 수 있다. 특히, 디스플레이(140)는 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일에 저장되어 있는지 여부를 바탕으로 입력 데이터와 연산을 수행할 수 있는지 여부에 대한 메시지를 표시할 수 있다.
입력부(150)는 회로를 포함하며, 프로세서(120)는 입력부(150)를 통해 전자 장치(100)의 동작을 제어하기 위한 사용자 명령을 수신할 수 있다. 입력부(150)는 터치 센서, (디지털) 펜 센서, 압력 센서, 키, 또는 마이크를 포함할 수 있다. 터치 센서는, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다.
특히, 입력부(150)를 통해 제1 명령 또는 제2 명령이 입력될 수 있다. 제1 명령 또는 제2 명령은 사용자로부터 터치 센서, 또는 키 등을 통해 입력될 수 있다. 또한, 제1 명령 또는 제2 명령 각각을 활성화시킬 수 있는 트리거 음성은 마이크로 구현된 입력부(150)를 통해 입력될 수 있다.
스피커(160)는 오디오 처리부(미도시)에 의해 디코딩이나 증폭, 노이즈 필터링과 같은 다양한 처리 작업이 수행된 각종 오디오 데이터뿐만 아니라 각종 알림 음이나 음성 메시지를 출력하는 구성이다. 특히, 스피커(160)는 프로세서(120) 제어에 의해 옵셋 정보를 패킹한 적어도 하나의 데이터가 제2 레지스터 파일에 저장되어 있는지 여부를 바탕으로 입력 데이터와 연산을 수행할 수 있는지 여부에 대한 메시지를 음성 형태로 출력하거나, 입력 데이터와 연산을 수행할 수 있다는 알림음을 출력할 수 있다.
도 6은 본 개시의 일 실시예에 따른, 전자 장치(100)의 제어 방법을 설명하기 위한 순서도이다. 우선, 제1 명령이 입력되면, 전자 장치(100)는 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다(S610). 구체적으로, 사용자로부터 키보드, 터치 센서 또는 마이크 등으로 구현된 입력부를 통해 제1 명령이 입력되면, 전자 장치(100)는 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 대해 유효 데이터가 있는지 여부를 식별할 수 있다. 제1 레지스터 파일에는 커널 데이터에 대응되는 인덱스 데이터를 저장할 수 있다. 인덱스 데이터 중 일부에 유효 데이터가 있다고 식별되면, 전자 장치(100)는 식별된 유효 데이터의 옵셋 정보를 획득할 수 있다.
옵셋 정보가 기설정된 개수 이상인 경우, 전자 장치(100)는 옵셋 정보를 기설정된 개수 단위로 패킹한 데이터를 제2 레지스터 파일에 저장할 수 있다(S620). 제2 레지스터 파일에 8개의 엔트리가 있는 경우, 전자 장치(100)는 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 8개 단위로 패킹하여 제2 레지스터 파일 엔트리 각각에 저장할 수 있다. 한편, 인덱스 데이터 중 일부에 옵셋 정보가 기설정된 개수 이하인 경우, 전자 장치(100)는 일부에 포함된 기설정된 개수 이하의 유효 데이터의 옵셋 정보를 획득하고, 획득한 옵셋 정보를 패킹하여 제2 레지스터 파일에 저장할 수 있다. 그리고, 전자 장치(100)는 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부를 제외한 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 획득할 수 있다.
그리고, 전자 장치(100)는 패킹된 데이터를 바탕으로 입력 데이터에 대한 연산을 수행하여 출력 데이터를 획득할 수 있다(S630). 구체적으로, 전자 장치(100)는 제2 레지스터 파일의 엔트리 각각에 패킹되어 저장된 데이터의 옵셋 정보 중 옵셋 주소를 식별할 수 있다. 그리고, 전자 장치(100)는 식별된 옵셋 주소에 저장된 데이터에 접근하고, 접근된 데이터를 로딩하여 입력 데이터와 연산을 수행함으로써 출력 데이터를 획득할 수 있다.
한편, 본 개시에 첨부된 도면은 본 개시에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 실시예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 개시에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 개시에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 개시에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 부프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 개시의 다양한 실시 예들에 따른 전자 장치는, 예를 들면, 스마트폰, 태블릿 PC, 데스크탑 PC, 랩탑 PC, 넷북 컴퓨터, 서버, PDA, 의료기기, 또는 웨어러블 장치 중 적어도 하나를 포함할 수 있다. 어떤 실시 예들에서, 전자 장치는, 예를 들면, 텔레비전, 냉장고, 에어컨, 공기 청정기, 셋톱 박스, 미디어 박스(예: 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM) 중 적어도 하나를 포함할 수 있다.
본 개시의 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 전자 장치(100))를 포함할 수 있다. 상기 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적은 저장매체'는 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
일 실시 예에 따르면, 본 개시에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예로, 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.

Claims (18)

  1. 전자 장치에 있어서,
    입력 데이터를 저장하는 메모리; 및
    커널(kernel) 데이터에 대응되는 인덱스 데이터를 저장하는 제1 레지스터 파일(register file) 및 제2 레지스터 파일을 포함하는 프로세서;를 포함하고,
    상기 프로세서는,
    제1 명령이 입력되면, 상기 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋(offset) 정보를 획득하고,
    상기 옵셋 정보가 기설정된 개수 이상인 경우, 상기 옵셋 정보를 기설정된 개수 단위로 패킹(packing)한 데이터를 상기 제2 레지스터 파일에 저장하고,
    상기 패킹된 데이터를 바탕으로 상기 입력 데이터에 대한 연산을 수행하여 출력 데이터를 획득하는 전자 장치.
  2. 제1항에 있어서,
    상기 제2 레지스터 파일은, 컴파일러가 하나의 가상 주소(virtual address)를 이용하여 컴파일할 수 있는 가상 레지스터 파일(virtual register file)인 것을 특징으로 하는 전자 장치.
  3. 제2항에 있어서,
    상기 프로세서는,
    상기 컴파일러가 상기 하나의 가상 주소를 이용하여 상기 제2 레지스터 파일에 접근하도록 컴파일 하면, 상기 하나의 가상 주소를 물리 주소(physical address)로 변환하여 상기 입력 데이터에 대한 연산에 필요한 데이터를 제공하는 전자 장치.
  4. 제2항에 있어서,
    상기 프로세서는,
    상기 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득하는데 필요한 제1 시간이 상기 컴파일러가 상기 제1 명령을 컴파일하기 위해 할당된 제2 시간을 초과하는지 여부를 식별하고,
    상기 제1 시간이 상기 제2 시간을 초과한다고 식별되면, 스톨(stall) 신호를 출력하여 상기 제1 명령의 수행을 제외한 나머지 동작을 중지시키는 전자 장치.
  5. 제1항에 있어서,
    상기 인덱스 데이터는 0,1인 값을 가지는 데이터이며,
    상기 유효 데이터는 1인 값을 가지는 데이터인 것을 특징으로 하는 전자 장치.
  6. 제1항에 있어서,
    상기 프로세서는,
    상기 옵셋 정보가 상기 기설정된 개수 이하인 경우, 상기 제1 레지스터 파일에 저장된 인덱스 데이터 중 상기 일부를 제외한 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 획득하고,
    상기 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 패킹한 데이터를 상기 제2 레지스터 파일에 저장하는 전자 장치
  7. 제1항에 있어서,
    상기 프로세서는,
    상기 옵셋 정보를 패킹한 적어도 하나의 데이터가 상기 제2 레지스터 파일에 저장하면, 상기 제2 레지스터 파일에 저장된 데이터를 바탕으로 상기 입력 데이터에 대한 연산을 수행할 수 있음을 나타내는 신호를 출력하는 전자 장치.
  8. 제2항에 있어서,
    상기 프로세서는,
    제2 명령이 입력되면, 상기 옵셋 정보를 패킹한 적어도 하나의 데이터가 상기 제2 레지스터 파일에 저장되어 있는지 여부를 바탕으로 상기 입력 데이터에 대한 연산을 수행할 수 있는지 여부에 대한 메시지를 제공하는 전자 장치.
  9. 제1항에 있어서,
    상기 프로세서는,
    상기 인덱스 데이터 중 상기 일부를 제외한 나머지 데이터의 개수가 상기 기설정된 개수 이하인 경우, 상기 인덱스 데이터 중 상기 일부를 제외한 나머지 데이터에 대해 패딩(padding) 동작을 수행하는 전자 장치.
  10. 커널 데이터에 대응되는 인덱스 데이터를 저장하는 제1 레지스터 파일 및 제2 레지스터 파일을 포함하는 프로세서를 포함하는 전자 장치의 제어 방법에 있어서,
    제1 명령이 입력되면, 상기 제1 레지스터 파일에 저장된 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득하는 단계;
    상기 옵셋 정보가 기설정된 개수 이상인 경우, 상기 옵셋 정보를 기설정된 개수 단위로 패킹한 데이터를 상기 제2 레지스터 파일에 저장하는 단계; 및
    상기 패킹된 데이터를 바탕으로 상기 입력 데이터에 대한 연산을 수행하여 출력 데이터를 획득하는 단계;를 포함하는 제어 방법.
  11. 제10항에 있어서,
    상기 제2 레지스터 파일은 컴파일러가 하나의 가상 주소(virtual address)를 이용하여 컴파일할 수 있는 가상 레지스터 파일(virtual register file)인 것을 특징으로 하는 제어 방법.
  12. 제11항에 있어서,
    상기 획득하는 단계는,
    상기 컴파일러가 상기 하나의 가상 주소를 이용하여 상기 제2 레지스터 파일에 접근하도록 컴파일 하면, 상기 하나의 가상 주소를 물리 주소(physical address)로 변환하여 상기 입력 데이터에 대한 연산에 필요한 데이터를 제공하는 단계;를 포함하는 제어 방법.
  13. 제11항에 있어서,
    상기 옵셋 정보를 획득하는 단계는,
    상기 인덱스 데이터 중 일부에 포함된 유효 데이터의 옵셋 정보를 획득하는데 필요한 제1 시간이 상기 컴파일러가 상기 제1 명령을 컴파일하기 위해 할당된 제2 시간을 초과하는지 여부를 식별하는 단계; 및
    상기 제1 시간이 상기 제2 시간을 초과한다고 식별되면, 스톨(stall) 신호를 출력하여 상기 제1 명령의 수행을 제외한 나머지 동작을 중지시키는 단계;를 포함하는 제어 방법.
  14. 제10항에 있어서,
    상기 인덱스 데이터는 0,1인 값을 가지는 데이터이며,
    상기 유효 데이터는 1인 값을 가지는 데이터인 것을 특징으로 하는 제어 방법.
  15. 제10항에 있어서,
    상기 옵셋 정보를 획득하는 단계는,
    상기 옵셋 정보가 상기 기설정된 개수 이하인 경우, 상기 제1 레지스터 파일에 저장된 인덱스 데이터 중 상기 일부를 제외한 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 획득하는 단계; 및
    상기 나머지 일부에 포함된 유효 데이터의 옵셋 정보를 패킹한 데이터를 상기 제2 레지스터 파일에 저장하는 단계;를 포함하는 제어 방법.
  16. 제10항에 있어서,
    상기 저장하는 단계는,
    상기 옵셋 정보를 패킹한 적어도 하나의 데이터가 상기 제2 레지스터 파일에 저장하면, 상기 제2 레지스터 파일에 저장된 데이터를 바탕으로 상기 입력 데이터간의 연산 수행할 수 있음을 나타내는 신호를 출력하는 단계;를 포함하는 제어 방법.
  17. 제11항에 있어서,
    제2 명령이 입력되면, 상기 옵셋 정보를 패킹한 적어도 하나의 데이터가 상기 제2 레지스터 파일에 저장되어 있는지 여부를 바탕으로 상기 입력 데이터에 대한 연산을 수행할 수 있는지 여부에 대한 메시지를 제공하는 단계;를 더 포함하는 제어 방법.
  18. 제10항에 있어서,
    상기 인덱스 데이터 중 상기 일부를 제외한 나머지 데이터의 개수가 상기 기설정된 개수 이하인 경우, 상기 인덱스 데이터 중 상기 일부를 제외한 나머지 데이터에 대해 패딩(padding) 동작을 수행하는 단계;를 더 포함하는 제어 방법.
KR1020200020895A 2020-02-20 2020-02-20 전자 장치 및 그의 제어 방법 KR20210106131A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200020895A KR20210106131A (ko) 2020-02-20 2020-02-20 전자 장치 및 그의 제어 방법
US17/098,683 US11294677B2 (en) 2020-02-20 2020-11-16 Electronic device and control method thereof
PCT/KR2020/016606 WO2021167209A1 (en) 2020-02-20 2020-11-23 Electronic device and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200020895A KR20210106131A (ko) 2020-02-20 2020-02-20 전자 장치 및 그의 제어 방법

Publications (1)

Publication Number Publication Date
KR20210106131A true KR20210106131A (ko) 2021-08-30

Family

ID=77366023

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200020895A KR20210106131A (ko) 2020-02-20 2020-02-20 전자 장치 및 그의 제어 방법

Country Status (3)

Country Link
US (1) US11294677B2 (ko)
KR (1) KR20210106131A (ko)
WO (1) WO2021167209A1 (ko)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2352065B (en) * 1999-07-14 2004-03-03 Element 14 Ltd A memory access system
US7900027B2 (en) * 2008-01-31 2011-03-01 International Business Machines Corporation Scalable link stack control method with full support for speculative operations
US8676874B2 (en) 2010-12-06 2014-03-18 International Business Machines Corporation Data structure for tiling and packetizing a sparse matrix
KR101801920B1 (ko) * 2010-12-17 2017-12-28 삼성전자주식회사 동적 클러스터링이 가능한 레지스터 파일 및 동적 클러스터링이 가능한 레지스터 파일을 이용한 재구성 가능 컴퓨팅 장치
US9928034B2 (en) 2014-12-17 2018-03-27 Nvidia Corporation Work-efficient, load-balanced, merge-based parallelized consumption of sequences of sequences
US10049054B2 (en) * 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
CN105512723B (zh) 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN107679617B (zh) 2016-08-22 2021-04-09 赛灵思电子科技(北京)有限公司 多次迭代的深度神经网络压缩方法
US11003985B2 (en) 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
US10871964B2 (en) 2016-12-29 2020-12-22 Qualcomm Incorporated Architecture for sparse neural network acceleration
US10713558B2 (en) 2016-12-30 2020-07-14 Intel Corporation Neural network with reconfigurable sparse connectivity and online learning
KR102457463B1 (ko) 2017-01-16 2022-10-21 한국전자통신연구원 희소 파라미터를 사용하는 압축 신경망 시스템 및 그것의 설계 방법
WO2018182445A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements
US10346944B2 (en) 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US20180330235A1 (en) 2017-05-15 2018-11-15 National Taiwan University Apparatus and Method of Using Dual Indexing in Input Neurons and Corresponding Weights of Sparse Neural Network
GB2566733B (en) 2017-09-25 2020-02-26 Advanced Risc Mach Ltd Performimg convolution operations in graphics texture mapping units
KR102285064B1 (ko) 2017-10-30 2021-08-04 한국전자통신연구원 은닉 변수를 이용하는 영상 및 신경망 압축을 위한 방법 및 장치
US20190278600A1 (en) 2018-03-09 2019-09-12 Nvidia Corporation Tiled compressed sparse matrix format
JP7014963B2 (ja) 2018-03-15 2022-02-02 富士通株式会社 最適化装置及び最適化装置の制御方法
US10966292B2 (en) 2018-03-16 2021-03-30 The Boeing Company Method and apparatus for forming multi-layered metallic armor

Also Published As

Publication number Publication date
US20210263741A1 (en) 2021-08-26
WO2021167209A1 (en) 2021-08-26
US11294677B2 (en) 2022-04-05

Similar Documents

Publication Publication Date Title
EP3612991B1 (en) Power-efficient deep neural network module configured for executing a layer descriptor list
US10372456B2 (en) Tensor processor instruction set architecture
US10338925B2 (en) Tensor register files
US11521038B2 (en) Electronic apparatus and control method thereof
US11804851B2 (en) Methods, systems, articles of manufacture, and apparatus to decode zero-value-compression data vectors
JP2019525277A (ja) 共有機械学習データ構造
US11568254B2 (en) Electronic apparatus and control method thereof
US11663001B2 (en) Family of lossy sparse load SIMD instructions
US11551671B2 (en) Electronic device and method of controlling thereof
WO2015183851A1 (en) Combining compute tasks for a graphics processing unit
US11995196B2 (en) Electronic apparatus and method for controlling thereof
CN108549935B (zh) 一种实现神经网络模型的装置及方法
CN113795880A (zh) 电子设备及其控制方法
US20220075437A1 (en) Electronic apparatus and control method thereof
KR20210106131A (ko) 전자 장치 및 그의 제어 방법
KR20210001864A (ko) 전자 장치 및 그 제어 방법
US20220147806A1 (en) Electronic device and method for controlling electronic device
US20210182386A1 (en) Electronic apparatus that monitors a safety function and a controlling method thereof
US20210027168A1 (en) Electronic apparatus and controlling method thereof
KR20220096021A (ko) 전자 장치 및 이의 제어 방법
KR20210148877A (ko) 전자 장치 및 이의 제어 방법
KR20210074155A (ko) 전자 장치 및 그의 제어 방법
KR20220154902A (ko) 전자 장치 및 이의 제어 방법
US11688396B2 (en) Electronic device and method for controlling electronic device
US20230214445A1 (en) Electronic device and control method for electronic device

Legal Events

Date Code Title Description
A201 Request for examination