KR20220030106A - 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치 - Google Patents

저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치 Download PDF

Info

Publication number
KR20220030106A
KR20220030106A KR1020200111896A KR20200111896A KR20220030106A KR 20220030106 A KR20220030106 A KR 20220030106A KR 1020200111896 A KR1020200111896 A KR 1020200111896A KR 20200111896 A KR20200111896 A KR 20200111896A KR 20220030106 A KR20220030106 A KR 20220030106A
Authority
KR
South Korea
Prior art keywords
format
storage device
input data
data
accelerator
Prior art date
Application number
KR1020200111896A
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 KR1020200111896A priority Critical patent/KR20220030106A/ko
Priority to CN202110243779.XA priority patent/CN114201107A/zh
Priority to US17/202,591 priority patent/US11934668B2/en
Priority to EP21188263.4A priority patent/EP3964945A1/en
Publication of KR20220030106A publication Critical patent/KR20220030106A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers

Abstract

저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치가 개시된다. 개시된 저장 장치의 동작 방법은 수신된 제1 포맷의 입력 데이터를 저장하는 단계, 상기 저장 장치에 포함된 연산기를 통해, 상기 입력 데이터에 수행하고자 하는 연산의 제2 포맷으로 상기 입력 데이터를 변환하는 단계 및 상기 제2 포맷의 입력 데이터를 재저장하는 단계를 포함한다.

Description

저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치{STORAGE DEVICE, METHOD FOR OPERATING THE SAME AND ELECTRONIC DEVICE INCLUDING THE SAME}
아래 실시예들은 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치에 관한 것이다.
인공 지능(Artificial Intelligence; AI) 기술이 발전함에 따라 인공 지능만을 위한 독자적인 하드웨어의 필요성이 증가하고 있다. 인공 지능은 예를 들어, 특정한 연산을 통해 추론과 학습을 수행할 수 있다. 이와 같이 인공 지능을 구현하고 실행하기 위한 전용 하드웨어로서 다양한 장치들이 개발되고 있다.
최근에는, 심층 신경망(Deep Neural Network, DNN)을 효율적으로 사용하기 위한 하드웨어 가속기에 대한 연구가 활발히 진행되고 있다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 특히, 메모리 대역폭과 지연시간(latency or delay time)은 많은 프로세스 시스템들에서 중요한 성능 병목(performance bottleneck)의 원인이 될 수 있다.
일실시예에 따른 저장 장치의 동작 방법은 수신된 제1 포맷의 입력 데이터를 저장하는 단계; 상기 저장 장치에 포함된 연산기를 통해, 상기 입력 데이터에 수행하고자 하는 연산의 제2 포맷으로 상기 입력 데이터를 변환하는 단계; 및 상기 제2 포맷의 입력 데이터를 재저장하는 단계를 포함한다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 변환하는 단계는 상기 제1 포맷의 상기 입력 데이터에 타입 컨버팅(type converting), 양자화(quantization), 역양자화(dequantization), 패딩(padding), 패킹(packing) 및 언패킹(unpacking) 중 적어도 하나를 적용시킴으로써, 상기 제1 포맷의 상기 입력 데이터를 상기 제2 포맷으로 변환할 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 제2 포맷은 상기 제1 포맷보다 메모리 대역폭이 낮을 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 입력 데이터에 수행하고자 하는 연산은 상기 제1 포맷에서 수행되는 고정밀도(high precision) 연산보다 정밀도가 낮은 상기 제2 포맷에서 수행되는 저정밀도(low precision) 연산일 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 입력 데이터에 수행하고자 하는 연산은 상기 저장 장치로부터 상기 제2 포맷의 입력 데이터를 수신한 가속기 또는 상기 연산기에 의해 상기 제2 포맷에서 수행될 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 입력 데이터에 수행하고자 하는 연산은 상기 입력 데이터를 추론하기 위한 뉴럴 네트워크에서 수행되는 연산들 중 적어도 하나일 수 있다.
일실시예에 따른 저장 장치의 동작 방법은 상기 입력 데이터에 상기 연산이 수행된 결과 데이터를 상기 제1 포맷으로 변환하는 단계; 및 상기 제1 포맷의 결과 데이터를 출력하는 단계를 더 포함할 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 연산기는 상기 저장 장치에서 데이터를 저장하는 뱅크에 인접하게 배치될 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 연산기는 미리 정해진 연산을 수행하는 ALU(arithmetic logic unit)를 포함할 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 입력 데이터는 이미지 센서에서 촬영된 상기 제1 포맷의 영상 데이터; 및 상기 저장 장치 및/또는 상기 저장 장치와 연결된 가속기를 제어하는 호스트 프로세서에서 처리되는 상기 제1 포맷의 데이터 중 적어도 하나를 포함할 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 저장 장치는 상기 연산이 수행되는 가속기의 외부에 위치한 DRAM(Dynamic Random Access Memory)일 수 있다.
일실시예에 따른 저장 장치의 동작 방법에서 상기 저장 장치는 상기 연산이 수행되는 뉴럴 네트워크를 통해 추론하고자 하는 데이터가 입력되는 사용자 단말 또는 상기 사용자 단말로부터 상기 추론하고자 하는 데이터를 수신한 서버에 포함될 수 있다.
일실시예에 따른 저장 장치는 수신된 제1 포맷의 입력 데이터를 저장하는 뱅크; 및 상기 뱅크에 인접하게 배치되어, 상기 입력 데이터에 수행하고자 하는 연산의 제2 포맷으로 상기 입력 데이터를 변환하는 연산기를 포함하고, 상기 제2 포맷의 입력 데이터는 상기 뱅크에 재저장된다.
일실시예에 따른 전자 장치는 수신된 제1 포맷의 입력 데이터를 저장하고, 내부 연산기를 통해 제1 포맷의 입력 데이터를 수행하고자 하는 연산의 제2 포맷으로 변환하고, 상기 제2 포맷의 입력 데이터를 재저장하는 저장 장치; 및 상기 저장 장치로부터 수신된 상기 제2 포맷의 입력 데이터에 상기 연산을 수행하는 가속기를 포함한다.
도 1은 일실시예에 따른 전자 장치를 나타낸 도면이다.
도 2는 일실시예에 따른 저장 장치의 블록도 및 플로우차트를 나타낸 도면이다.
도 3 내지 도 5는 일실시예에 따른 저장 장치의 동작을 설명하기 위한 예시들을 나타낸 도면이다.
도 6은 일실시예에 따른 저장 장치의 동작 방법을 나타낸 도면이다.
도 7은 일실시예에 따른 저장 장치를 나타낸 도면이다.
도 8 및 도 9는 일실시예에 따른 전자 장치의 예시들을 설명하기 위한 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 아래의 특정한 구조적 내지 기능적 설명들은 단지 실시예들을 설명하기 위한 목적으로 예시된 것으로, 실시예의 범위가 본문에 설명된 내용에 한정되는 것으로 해석되어서는 안된다. 관련 기술 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타내며, 공지된 기능 및 구조는 생략하도록 한다.
도 1은 일실시예에 따른 전자 장치를 나타낸 도면이다.
도 1을 참조하면, 일실시예에 따른 전자 장치(100)은 호스트 프로세서(110), 저장 장치(120), 메모리 컨트롤러(130) 및 가속기(140)를 포함할 수 있다. 호스트 프로세서(110), 저장 장치(120), 메모리 컨트롤러(130) 및 가속기(140)는 버스(bus)를 통하여 서로 통신할 수 있다.
호스트 프로세서(110)는 전자 장치(100)에 포함된 컴포넌트들의 동작을 제어하는 장치로, 예를 들어, 중앙 처리 장치(CPU; Central Processing Unit) 및/또는 GPU(Graphics Processing Unit)를 포함할 수 있다. 호스트 프로세서(110)는 뉴럴 네트워크를 가속기(140)에서 처리하기 위한 요청을 수신하고, 해당 요청에 응답하여 가속기(140)에서 실행 가능한 명령어를 생성한다. 요청은 뉴럴 네트워크에 기반한 데이터 추론을 위한 것으로, 예를 들어, 객체 인식, 패턴 인식, 컴퓨터 비전, 음성 인식, 기계 번역, 기계 통역 등을 위해 가속기(140)로 하여금 뉴럴 네트워크를 실행하게 하여 데이터 추론 결과를 얻기 위한 것일 수 있다. 호스트 프로세서(110)는 추론 대상 데이터와 뉴럴 네트워크의 파라미터들을 가속기(140)로 전달할 수 있다.
저장 장치(120)는 가속기(140)의 외부에 배치된 오프-칩 메모리(off-chip memory)로서, 예를 들어, 전자 장치(100)의 메인 메모리로 활용되는 DRAM(Dynamic Random Access Memory)일 수 있다. 저장 장치(120)는 메모리 컨트롤러(130)를 통해 액세스될 수 있다. 저장 장치(120)는 추론 대상 데이터 및/또는 가속기(140)에서 실행할 뉴럴 네트워크의 파라미터들을 저장할 수 있으며, 저장된 데이터는 이후 추론 수행을 위해 가속기(140)로 전달될 수 있다. 또한, 저장 장치(120)는 가속기(140)에서 뉴럴 네트워크를 실행하는 데 가속기(140) 내부의 온-칩 메모리(on-chip memory)가 충분하지 않은 경우에 활용될 수도 있다.
가속기(140)는 호스트 프로세서(110)의 명령어에 따른 뉴럴 네트워크를 실행하여 입력되는 데이터를 추론하는 AI 가속기(Artificial Intelligence accelerator)로서, 호스트 프로세서(110)와 구별되는 별도의 프로세서일 수 있다. 예를 들어, 가속기(140)은 NPU(Neural Processing Unit), GPU, TPU(Tensor Processing Unit) 등일 수 있다.
가속기(140)는 뉴럴 네트워크에 따른 연산들의 특성 상 범용의 호스트 프로세서(110)에서 처리되기 보다는 별도의 전용 프로세서(다시 말해, 가속기(140))에서 처리되는 것이 보다 효율적인 작업들을 처리할 수 있다. 이때 가속기(140)에 포함된 하나 이상의 프로세싱 엘리먼트들(PEs; Processing Elements) 및 온-칩 메모리가 활용될 수 있다. 온-칩 메모리는 가속기(140) 내부에 포함된 글로벌 버퍼(global buffer)로서, 가속기(140) 외부에 위치하는 저장 장치(120)와 구분될 수 있다. 예를 들어, 온-칩 메모리는 주소 공간(address space)을 통해 액세스 가능한 스크래치패드 메모리(scratchpad memory), SRAM(Static Random Access Memory) 등일 수 있다.
뉴럴 네트워크는 복수의 레이어들을 포함한다. 일실시예에서, 뉴럴 네트워크는 입력 레이어, 복수의 히든 레이어들 및 출력 레이어를 포함한다. 각각의 레이어들은 인공 뉴런이라고도 불리는 복수의 노드들을 포함한다. 각 노드는 하나 이상의 입력 및 출력을 가지는 계산 단위를 나타내고, 노드들은 상호 연결될 수 있다. 노드들 간의 연결에는 가중치가 설정될 수 있으며, 이러한 가중치는 조정 또는 변경될 수 있다. 가중치는 연관된 데이터 값을 증폭, 감소 또는 유지시킴으로써 해당 데이터 값이 최종 결과에 미치는 영향도를 결정할 수 있다. 출력 레이어에 포함된 각각의 노드에는 이전 레이어에 포함된 노드들의 가중된 입력들이 입력될 수 있다. 가중된 데이터가 임의의 레이어로부터 다음 레이어로 입력되는 과정을 전파(propagation)라고 지칭할 수 있다.
앞서 설명한 가중치를 비롯한 뉴럴 네트워크의 파라미터들은 미리 학습될 수 있다. 이러한 학습은 뉴럴 네트워크의 정확도 확보 차원에서 고정밀도(high precision)의 포맷(예컨대, 32비트 부동 소수점(32bit floating point) 등)에서 수행될 수 있다. 뉴럴 네트워크를 학습시키는 동작은 데이터 추론을 수행하는 가속기(140)와는 별도의 독립적인 장치에서 수행될 수 있으나, 이에 제한되지 않고 실시예에 따라 가속기(140)에서 수행될 수도 있다. 뉴럴 네트워크의 학습에는 이미 알려진 다양한 학습 기법이 제한 없이 적용될 수 있으므로 보다 상세한 설명은 생략한다.
학습된 뉴럴 네트워크의 파라미터들은 가속기(140)로 전달됨으로써, 뉴럴 네트워크에 기반한 데이터 추론이 가속기(140)에서 수행될 수 있다. 이처럼, 가속기(140)는 학습된 뉴럴 네트워크를 실행하여 데이터 추론 결과를 얻기 위한 전용 하드웨어로, 상대적으로 대량의 데이터를 분석하여 추론 결과를 빠르게 얻기 위해서는 허용 가능한 정확도 손실 내에서 오버헤드를 줄여 연산 효율성을 얻을 수 있는 저정밀도의 포맷(예컨대, 8비트 정수(8bit integer) 등)에서 동작할 수 있다. 이를 테면, 가속기(140)는 8비트 정수 포맷에서 뉴럴 네트워크에 따른 연산들(예컨대, MAC(multiply and accumulate) 연산 등)을 수행할 수 있다.
고정밀도 포맷에서 학습된 뉴럴 네트워크를 저밀도 포맷에서 동작하는 가속기(140)에서 실행시키기 위해서는, 고정밀도 포맷의 파라미터 데이터를 저정밀도 포맷의 파라미터 데이터로 변환할 필요가 있다. 만약 고정밀도 포맷의 데이터가 가속기(140)로 전달된 후 가속기(140)에서 이러한 포맷 변환이 수행된다면, 고정밀도 포맷의 데이터를 가속기(140)로 전송하기 위해서 높은 메모리 대역폭이 요구됨에 따라 메모리 대역폭 손실이 불가피하며, 이로 인한 소프트웨어 오버헤드가 발생할 수 있다. 또한, 가속기(140)에서 포맷 변환을 위한 추가적인 연산이 요구되므로, 연산량 증가 및 응답시간 증가가 야기될 수 있다. 따라서, 고정밀도 포맷의 데이터가 저장된 저장 장치(120)에서 저정밀도 포맷으로의 데이터 변환을 수행한 후, 저정밀도 포맷의 데이터를 가속기(140)로 전달하는 편이 더 효율적일 수 있다.
추론하고자 하는 입력 데이터는 호스트 프로세서(110)에서 처리된 데이터일 수 있다. 호스트 프로세서(110)는 다양한 처리를 수행하기 위한 범용 하드웨어로서, 연산 정확도를 위해 고정밀도 포맷에서 동작할 수 있다. 또한, 추론하고자 하는 입력 데이터는 이미지 센서(예컨대, 고해상도 카메라 등)에서 촬영된 고정밀도 포맷의 영상 데이터일 수 있다. 호스트 프로세서(110)에서 처리된 고정밀도 포맷의 입력 데이터 또는 이미지 센서에서 촬영된 고 정밀 포맷의 영상 데이터에 대한 추론을 가속기(140)에서 수행하기 위해서는 저정밀도 포맷으로의 변환이 요구된다. 마찬가지로, 이러한 데이터 포맷 변환도 호스트 프로세서(110)에서 처리된 데이터를 저장하고 있는 저장 장치(120)에서 수행된 후 저정밀도 포맷의 입력 데이터를 가속기(140)로 전달하는 편이 메모리 대역폭이나 가속기(140)의 연산량 측면에서 더 효율적일 수 있다.
이하, 실시예들을 보다 상세히 설명한다.
도 2는 일실시예에 따른 저장 장치의 블록도 및 플로우차트를 나타낸 도면이다.
도 2를 참조하면, 일실시예에 따른 저장 장치를 나타낸 블록도와 해당 저장 장치의 동작을 나타낸 플로우차트가 도시된다.
먼저 블록도를 살펴보면, 저장 장치는 뱅크들, 탑 뱅크 인터페이스(top bank interface), WRIO(writhe read input output) 인터페이스, 디코더, 컨트롤러, 레지스터, 프로그램 레지스터, ALU(arithmetic logic unit), 보텀 뱅크 인터페이스(bottom bank interface)를 포함할 수 있다. 다만, 저장 장치를 도 2에 도시된 블록도로 한정하는 것은 아니고, 이외에도 다양한 구성요소 조합, 각 구성요소의 다양한 개수에도 제한 없이 적용될 수 있다.
짝수 뱅크 및 홀수 뱅크는 데이터를 저장하는 영역으로서, 메모리 어드레스에 따라 서로 구별되는 영역일 수 있다. 탑 뱅크 인터페이스 및 WRIO 인터페이스는 짝수 뱅크에 저장된 데이터의 입출력을 제어할 수 있다. 디코더는 명령어를 해석하여 ALU를 통해 수행하고자 하는 포맷 변환이 어떠한 동작인지를 판단하고, 그 결과를 컨트롤러로 전달하여 ALU가 컨트롤러의 제어에 의해 해당 동작을 수행하게끔 할 수 있다. ALU에서 수행되는 포맷 변환을 위한 프로그램은 프로그램 레지스터에 저장되고, 포맷 변환 대상인 데이터는 레지스터에 저장될 수 있다. ALU는 컨트롤러의 제어 하에 프로그램 레지스터에 저장된 프로그램에 따라 레지스터에 저장된 데이터의 포맷을 변환할 수 있다. 이러한 ALU는 명령에 따른 연산을 수행하는 덧셈기, 곱셈기 등을 포함하는 연산기일 수 있다. 보텀 뱅크 인터페이스는 ALU에서 포맷 변환된 데이터를 홀수 뱅크에 저장시킬 수 있다.
이처럼, 데이터를 저장한 뱅크와 포맷 변환을 수행하는 ALU가 동일한 저장 장치 내에 인접하게 배치됨으로써, 메모리 액세스 비용과 내부 메모리 대역폭을 최소화시킬 수 있다.
다음으로 플로우차트를 살펴보면, 단계(210)에서, 포맷 변환의 대상이 되는 입력 데이터가 뱅크에 기록될 수 있다. 이때, 입력 데이터는 호스트 프로세서 또는 외부 장치(예컨대, 이미지 센서 등)에서 전달된 데이터일 수 있다. 단계(220)에서, 수행하고자 하는 포맷 변환이 식별되어 해당의 프로그램과 파라미터가 레지스터에 기록될 수 있다. 프로그램과 파라미터는 수행하고자 하는 동작 정보, 해당 동작의 대상이 되는 데이터가 저장된 주소 값, 해당 동작이 수행된 결과를 저장할 주소 값 등을 포함할 수 있다. 단계(230)에서, 프로그램에 포함된 패치 명령어에 따라 수행하고자 하는 동작이 식별될 수 있다. 만약 패치 명령어가 타입 컨버팅, 양자화/역양자화, 패딩 및 패킹/언패킹 중 어느 하나라면 단계(240)가 이어서 수행되고, 프로그램이 종료된 경우라면 단계(260)가 이어서 수행될 수 있다.
단계(240)에서 수행되는 타입 컨버팅, 양자화/역양자화, 패딩 및 패킹/언패킹 중 적어도 하나는 저장 장치 내 ALU에서 수행될 수 있다. 이러한 동작들은 뉴럴 네트워크에 따른 추론 동작 시 전처리 및/또는 후처리에 해당하므로, 저장 장치 내부의 ALU에서 해당 동작들을 수행함으로써 시스템 스루풋을 효과적으로 향상시킬 수 있다. 또한, 이러한 동작들은 비교적 간단한 ALU에서도 수행 가능하므로, 저장 장치 내부에 ALU를 포함시키더라도 저장 장치의 면적이나 사이즈의 증가가 상대적으로 적을 수 있다.
타입 컨버팅은 32비트 부동 소수점(FP32) 포맷과 16비트 부동 소수점(FP16) 포맷 간 변환을 나타내는 것으로, 타입 컨버팅이 수행되면 데이터를 한 포맷에서 다른 포맷으로 변환할 수 있다. 양자화는 32비트 부동 소수점 포맷을 8비트 정수 포맷으로 변환하는 것을 나타내고, 역양자화은 32비트 8비트(INT8) 정수 포맷을 부동 소수점 포맷으로 변환을 나타낼 수 있다. 데이터 패딩은 처리하고자 하는 데이터가 하드웨어의 연산 단위에 맞지 않는 경우에 해당 연산 단위에 맞는 사이즈를 가지도록 해당 데이터에 미리 정해진 비트 값(예컨대, "0" 또는 "1")이나 특정 비트 패턴(예컨대, 해당 데이터에 포함된 마지막 비트를 미러링한 비트 패턴 등)을 추가하는 것을 나타낼 수 있다. 데이터 패킹은 고정밀도 포맷(예컨대, FP32)에서 저정밀도 포맷(예컨대, FP16)으로 변환된 데이터를 하드웨어의 연산 단위(예컨대, FP32)에 맞춰 처리하기 위해 저정밀도 포맷의 여러 데이터를 병합하는 것을 나타낼 수 있다. 데이터 언패킹은 패킹의 반대되는 동작으로 패킹된 데이터를 둘 이상으로 분리하는 것을 나타낼 수 있다.
단계(250)에서, ALU에 의해 타입 컨버팅, 양자화, 역양자화, 패딩, 패킹 및 언패킹 중 어느 하나가 수행되면 그 결과가 뱅크에 기록될 수 있다. 그리고, 다시 단계(230)가 수행될 수 있다.
일실시예에 따른 포맷 변환은 먼저 타입 컨버팅 또는 양자화/역양자화가 수행된 뒤 패킹, 패딩이 이어서 수행될 수 있다. 다만, 이로 포맷 변환을 한정하는 것은 아니고, 다양한 조합으로 포맷 변환이 수행될 수 있다.
단계(260)에서, 프로그램이 종료된 후 후속 시스템에서 출력 데이터를 읽어갈 수 있다.
앞서 설명한 포맷 변환은 데이터 전처리 및/또는 후처리로 적용됨으로써, 소프트웨어 오버헤드와 메모리 대역폭을 최소화하고, 저정밀도 포맷의 가속기의 활용을 극대화 시킬 수 있다.
도 3 내지 도 5는 일실시예에 따른 저장 장치의 동작을 설명하기 위한 예시들을 나타낸 도면이다.
도 3을 참조하면, 일실시예에 따른 저장 장치(310)에서 입력 데이터의 전처리가 수행되는 예시가 도시된다. 예를 들어, 이미지 센서(320)에서 촬영된 고정밀도 포맷(예컨대, FP32)의 영상 데이터가 입력되면, 저장 장치(310)는 우선 고정밀도 포맷으로 입력 데이터를 저장할 수 있다. 저장 장치(310) 내 연산기(311)는 입력 데이터에 대한 추론을 위해 가속기(330)로 전달하기에 앞서 전처리를 수행할 수 있다. 일례로, 연산기(311)는 고정밀도 포맷의 입력 데이터를 저정밀도 포맷(예컨대, INT8)으로 변환하는 양자화를 수행할 수 있다. 그리고, 실시예에 따라서는 연산기(311)가 양자화된 데이터에 패킹 및/또는 패딩을 수행함으로써 입력 데이터가 가속기(330)의 연산 단위에 대응되도록 처리할 수 있다. 연산기(311)에서 전처리된 입력 데이터는 저장 장치(310)에 저장되고, 가속기(330)에서의 추론을 위해 가속기(330)로 전달될 수 있다. 저장 장치(310)에서 가속기(330)로 전달되는 데이터가 이미지 센서(320)에서 전달된 고정밀도 포맷이 아닌 저정밀도 포맷으로 전달됨으로써, 메모리 대역폭의 사용량을 효과적으로 최소화할 수 있다. 이를테면, 저장 장치(310)에서 가속기(330)로 전달되는 데이터가 FP32가 아닌 INT8 포맷으로 전달됨으로써, 메모리 대역폭은 1/4배로 감소될 수 있다. 저정밀도 포맷에서 동작하는 가속기(330)는 별도의 포맷 변환 없이 수신된 입력 데이터에 추론 연산을 적용할 수 있다. 그 결과 데이터도 저정밀도 포맷으로 가속기(330)에서 저장 장치(310)로 전달되어 저장됨으로써, 이 경우에도 메모리 대역폭의 사용량이 효과적으로 감소될 수 있다.
도 4를 참조하면, 일실시예에 따른 저장 장치(410)에서 데이터의 전후처리 및 연산이 수행되는 예시가 도시된다. 예를 들어, 저장 장치(410) 내 연산기(411)는 데이터의 포맷 변환뿐만 아니라 특정 연산을 수행할 수도 있다. 이때, 연산기(411)에서 수행되는 연산은 특정 정밀도 포맷(예컨대, FP16)에서 수행될 수 있다. 이 경우, 호스트 프로세서(420)에서 전달된 고정밀도 포맷(예컨대, FP32)의 입력 데이터는 저장 장치(410)에 저장된 후 연산기(411)의 연산 포맷으로 변환될 수 있다. 연산기(411)는 고정밀도 포맷의 입력 데이터를 특정 정밀도 포맷으로 변환하는 컨버팅을 수행할 수 있다. 그리고, 실시예에 따라서는 연산기(411)가 컨버팅된 데이터에 패킹을 추가적으로 수행함으로써 입력 데이터가 연산기(411)의 연산 단위에 대응되도록 처리할 수 있다. 이처럼 전처리된 데이터에 기반하여 연산기(411)에서 미리 정해진 연산이 수행될 수 있다. 그리고, 연산기(411)는 역양자화 및/또는 언패킹을 수행함으로써 특정 정밀도 포멧의 연산 결과 데이터를 고정밀도 포맷으로 변환하여 저장 장치(410)에 저장할 수 있다. 고정밀도 포맷의 결과 데이터는 다시 호스트 프로세서(420)로 전달되어 후속 동작이 수행될 수 있다.
도 5를 참조하면, 일실시예에 따른 저장 장치(510)에서 입력 데이터의 전처리가 수행되는 예시가 도시된다. 예를 들어, 호스트 프로세서(520)에서 처리된 고정밀도 포맷(예컨대, FP32)의 데이터가 입력되면, 저장 장치(510)는 우선 고정밀도 포맷으로 입력 데이터를 저장할 수 있다. 저장 장치(510) 내 연산기(511)는 입력 데이터의 추론을 위해 가속기(530)로 전달하기 전에 먼저 해당 입력 데이터에 전처리를 수행할 수 있다. 일례로, 연산기(511)는 고정밀도 포맷의 입력 데이터를 저정밀도 포맷(예컨대, INT8)으로 변환하는 양자화를 수행할 수 있다. 그리고, 실시예에 따라서는 연산기(511)가 양자화된 데이터에 패킹 및/또는 패딩을 수행함으로써 입력 데이터가 가속기(530)의 연산 단위에 대응되도록 처리할 수 있다. 연산기(511)에서 전처리된 입력 데이터는 저장 장치(510)에 저장되고, 추론을 위해 가속기(530)로 전달될 수 있다. 가속기(530)에서 저정밀도 포맷으로 수행된 연산의 결과 데이터는 다시 저장 장치(510)로 전달될 수 있다. 연산기(511)는 저정밀도 포맷의 결과 데이터가 호스트 프로세서(520)에서 처리되게 하기 위해 고정밀도 포맷으로 변환하는 역양자화를 수행할 수 있다. 또한, 경우에 따라서는 연산기(511)는 언패킹 및/또는 패딩을 추가적으로 수행함으로써, 결과 데이터가 호스트 프로세서(520)의 연산 단위에 대응되도록 처리할 수 있다. 연산기(511)에서 후처리된 결과 데이터는 호스트 프로세서(520)로 전달되어, 호스트 프로세서(520)에서 별도의 포맷 변환 없이 바로 결과 데이터에 대한 처리가 수행될 수 있다.
도 6은 일실시예에 따른 저장 장치의 동작 방법을 나타낸 도면이다.
도 6을 참조하면, 일실시예에 따른 저장 장치의 프로세서에서 수행되는 동작 방법이 도시된다.
단계(610)에서, 저장 장치는 수신된 제1 포맷의 입력 데이터를 저장한다. 예를 들어, 저장 장치는 연산이 수행되는 가속기의 외부에 위치한 DRAM일 수 있다.
단계(620)에서, 저장 장치는 저장 장치에 포함된 연산기를 통해, 입력 데이터에 수행하고자 하는 연산의 제2 포맷으로 입력 데이터를 변환한다. 예를 들어, 저장 장치는 제1 포맷의 입력 데이터에 타입 컨버팅, 양자화, 역양자화, 패딩, 패킹 및 언패킹 중 적어도 하나를 적용시킴으로써, 제1 포맷의 입력 데이터를 제2 포맷으로 변환할 수 있다. 이때, 제2 포맷은 제1 포맷보다 메모리 대역폭이 낮을 수 있다.
단계(630)에서, 저장 장치는 제2 포맷의 입력 데이터를 재저장한다.
도 6에 도시된 각 단계들에는 도 1 내지 도 5를 통하여 전술한 사항들이 그대로 적용되므로, 보다 상세한 설명은 생략한다.
도 7은 일실시예에 따른 저장 장치를 나타낸 도면이다.
도 7을 참조하면, 일실시예에 따른 저장 장치(700)는 수신된 제1 포맷의 입력 데이터를 저장하는 뱅크(710) 및 뱅크에 인접하게 배치되어, 입력 데이터에 수행하고자 하는 연산의 제2 포맷으로 입력 데이터를 변환하는 연산기(720)를 포함한다. 이때, 제2 포맷의 입력 데이터는 뱅크에 재저장된다.
일실시예에 따른 저장 장치(700)에서 연산기(720)는 인-메모리 칩(In-memory Chip) 형태로 구현되어 모바일 시스템 또는 서버에 탑재될 수 있다. 또는, 연산기(720)는 인-메모리 칩과 함께 제공되는 SDK(Software Development Kit) 형태로 탑재될 수 있다. 또한, 저장 장치(700)는 데이터 센터향 서버 시스템용 메모리 또는 모바일 장치, 스마트 가전기기(예컨대, 스마트 TV 등)용 메모리로 구현되어 FP16 및/또는 INT8 포맷으로 동작하는 가속기와 함께 전자 장치에 탑재될 수 있다.
도 7에 도시된 각 엘리먼트들에는 도 1 내지 도 5를 통하여 전술한 설명들이 마찬가지로 적용되므로, 보다 자세한 설명은 생략한다.
도 8 및 도 9는 일실시예에 따른 전자 장치의 예시들을 설명하기 위한 도면이다.
도 8을 참조하면, 일실시예에 따른 전자 장치는 사용자 단말(800)로 구현될 수 있다. 도 8에서는 설명의 편의를 위해 사용자 단말(800)이 스마트 폰으로 도시되었지만, 이외에도 태블릿, 랩탑, 퍼스널 컴퓨터 등 다양한 컴퓨팅 장치, 스마트 시계, 스마트 안경 등 다양한 웨어러블 기기, 스마트 스피커, 스마트 TV, 스마트 냉장고 등 다양한 가전장치, 스마트 자동차, 스마트 키오스크, IoT(Internet of Things) 기기, 로봇 등 제한 없이 적용될 수 있다. 사용자 단말(800)은 직접 뉴럴 네트워크를 이용하여 추론하고자 하는 데이터를 획득해서 저장 장치(810)에 저장할 수 있다. 저장 장치(810)는 고정밀도 포맷의 입력 데이터를 저정밀도 포맷의 입력 데이터로 변환하는 전처리 후 가속기(820)로 전달할 수 있다. 가속기(820)는 별도의 포맷 변환 없이 수신된 입력 데이터에 바로 추론 동작을 적용한 후 결과 데이터를 다시 저장 장치(810)로 전달할 수 있다. 저장 장치(810)는 저정밀도 포맷의 결과 데이터를 고정밀도 포맷으로 변환하는 후처리를 수행할 수 있다. 사용자 단말(800)은 저장 장치(810)에 저장된 고정밀도 포맷의 결과 데이터를 그대로 사용자로 제공하거나, 또는 결과 데이터에 기반한 후속 동작을 호스트 프로세서를 통해 수행할 수 있다.
도 9을 참조하면, 일실시예에 따른 전자 장치는 서버(900)로 구현될 수 있다. 서버(900)는 사용자에 의해 제어되는 사용자 단말과 구분되는 별도의 장치로서, 유선 및/또는 무선 네트워크를 통해 사용자 단말과 통신을 수행할 수 있다. 뉴럴 네트워크를 이용하여 추론하고자 하는 데이터는 사용자 단말에서 수집되어 네트워크를 통해 서버(900)로 전달되어 저장 장치(910)에 저장될 수 있다. 앞서 설명한 것처럼, 저장 장치(910)에서는 가속기(920)로 데이터를 전달하기 전이나, 추론 결과를 수신한 후 데이터에 전처리 또는 후처리를 수행할 수 있다. 그리고, 서버(900)는 추론 결과를 사용자 단말로 리턴하며, 사용자 단말은 서버(900)로부터 수신된 추론 결과를 단순히 사용자로 제공하거나, 또는 추론 결과에 기반한 후속 동작을 수행할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.

Claims (19)

  1. 저장 장치의 동작 방법에 있어서,
    수신된 제1 포맷의 입력 데이터를 저장하는 단계;
    상기 저장 장치에 포함된 연산기를 통해, 상기 입력 데이터에 수행하고자 하는 연산의 제2 포맷으로 상기 입력 데이터를 변환하는 단계; 및
    상기 제2 포맷의 입력 데이터를 재저장하는 단계
    를 포함하는
    저장 장치의 동작 방법.
  2. 제1항에 있어서,
    상기 변환하는 단계는
    상기 제1 포맷의 상기 입력 데이터에 타입 컨버팅(type converting), 양자화(quantization), 역양자화(dequantization), 패딩(padding), 패킹(packing) 및 언패킹(unpacking) 중 적어도 하나를 적용시킴으로써, 상기 제1 포맷의 상기 입력 데이터를 상기 제2 포맷으로 변환하는,
    저장 장치의 동작 방법.
  3. 제1항에 있어서,
    상기 제2 포맷은 상기 제1 포맷보다 메모리 대역폭이 낮은
    저장 장치의 동작 방법.
  4. 제1항에 있어서,
    상기 입력 데이터에 수행하고자 하는 연산은
    상기 제1 포맷에서 수행되는 고정밀도(high precision) 연산보다 정밀도가 낮은 상기 제2 포맷에서 수행되는 저정밀도(low precision) 연산인,
    저장 장치의 동작 방법.
  5. 제1항에 있어서,
    상기 입력 데이터에 수행하고자 하는 연산은
    상기 저장 장치로부터 상기 제2 포맷의 입력 데이터를 수신한 가속기 또는 상기 연산기에 의해 상기 제2 포맷에서 수행되는,
    저장 장치의 동작 방법.
  6. 제1항에 있어서,
    상기 입력 데이터에 수행하고자 하는 연산은
    상기 입력 데이터를 추론하기 위한 뉴럴 네트워크에서 수행되는 연산들 중 적어도 하나인,
    저장 장치의 동작 방법.
  7. 제1항에 있어서,
    상기 입력 데이터에 상기 연산이 수행된 결과 데이터를 상기 제1 포맷으로 변환하는 단계; 및
    상기 제1 포맷의 결과 데이터를 출력하는 단계
    를 더 포함하는
    저장 장치의 동작 방법.
  8. 제1항에 있어서,
    상기 연산기는 상기 저장 장치에서 데이터를 저장하는 뱅크에 인접하게 배치되는,
    저장 장치의 동작 방법.
  9. 제1항에 있어서,
    상기 연산기는 미리 정해진 연산을 수행하는 ALU(arithmetic logic unit)를 포함하는,
    저장 장치의 동작 방법.
  10. 제1항에 있어서,
    상기 입력 데이터는
    이미지 센서에서 촬영된 상기 제1 포맷의 영상 데이터; 및
    상기 저장 장치 및/또는 상기 저장 장치와 연결된 가속기를 제어하는 호스트 프로세서에서 처리되는 상기 제1 포맷의 데이터
    중 적어도 하나를 포함하는,
    저장 장치의 동작 방법.
  11. 제1항에 있어서,
    상기 저장 장치는 상기 연산이 수행되는 가속기의 외부에 위치한 DRAM(Dynamic Random Access Memory)인,
    저장 장치의 동작 방법.
  12. 제1항에 있어서,
    상기 저장 장치는
    상기 연산이 수행되는 뉴럴 네트워크를 통해 추론하고자 하는 데이터가 입력되는 사용자 단말 또는 상기 사용자 단말로부터 상기 추론하고자 하는 데이터를 수신한 서버에 포함되는,
    저장 장치의 동작 방법.
  13. 제1항 내지 제12항 중에서 어느 하나의 항의 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 저장 매체.
  14. 수신된 제1 포맷의 입력 데이터를 저장하는 뱅크; 및
    상기 뱅크에 인접하게 배치되어, 상기 입력 데이터에 수행하고자 하는 연산의 제2 포맷으로 상기 입력 데이터를 변환하는 연산기
    를 포함하고,
    상기 제2 포맷의 입력 데이터는 상기 뱅크에 재저장되는
    저장 장치.
  15. 제14항에 있어서,
    상기 연산기는
    상기 제1 포맷의 상기 입력 데이터에 타입 컨버팅, 양자화, 역양자화, 패딩, 패킹 및 언패킹 중 적어도 하나를 적용시킴으로써, 상기 제1 포맷의 상기 입력 데이터를 상기 제2 포맷으로 변환하는,
    저장 장치.
  16. 제14항에 있어서,
    상기 제2 포맷은 상기 제1 포맷보다 메모리 대역폭이 낮은
    저장 장치.
  17. 제14항에 있어서,
    상기 입력 데이터에 수행하고자 하는 연산은
    상기 제1 포맷에서 수행되는 고정밀도 연산보다 정밀도가 낮은 상기 제2 포맷에서 수행되는 저정밀도 연산인,
    저장 장치.
  18. 제14항에 있어서,
    상기 연산기는 상기 입력 데이터에 상기 연산이 수행된 결과 데이터를 상기 제1 포맷으로 변환하고,
    상기 뱅크는 상기 제1 포맷의 결과 데이터를 저장하는,
    저장 장치.
  19. 수신된 제1 포맷의 입력 데이터를 저장하고, 내부 연산기를 통해 제1 포맷의 입력 데이터를 수행하고자 하는 연산의 제2 포맷으로 변환하고, 상기 제2 포맷의 입력 데이터를 재저장하는 저장 장치; 및
    상기 저장 장치로부터 수신된 상기 제2 포맷의 입력 데이터에 상기 연산을 수행하는 가속기
    를 포함하는
    전자 장치.
KR1020200111896A 2020-09-02 2020-09-02 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치 KR20220030106A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200111896A KR20220030106A (ko) 2020-09-02 2020-09-02 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치
CN202110243779.XA CN114201107A (zh) 2020-09-02 2021-03-05 存储装置、操作存储装置的方法以及电子装置
US17/202,591 US11934668B2 (en) 2020-09-02 2021-03-16 Electronic device with storage device data conversion
EP21188263.4A EP3964945A1 (en) 2020-09-02 2021-07-28 Electronic device with storage device implementation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200111896A KR20220030106A (ko) 2020-09-02 2020-09-02 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치

Publications (1)

Publication Number Publication Date
KR20220030106A true KR20220030106A (ko) 2022-03-10

Family

ID=77126543

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200111896A KR20220030106A (ko) 2020-09-02 2020-09-02 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치

Country Status (4)

Country Link
US (1) US11934668B2 (ko)
EP (1) EP3964945A1 (ko)
KR (1) KR20220030106A (ko)
CN (1) CN114201107A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102486619B1 (ko) * 2022-05-26 2023-01-11 주식회사 노타 양자화 모델에서의 메모리 사용량과 대역폭 감축을 위한 데이터 저장 방법 및 시스템

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112259071A (zh) * 2020-09-22 2021-01-22 北京百度网讯科技有限公司 语音处理系统、语音处理方法、电子设备和可读存储介质
US11853759B2 (en) * 2020-11-02 2023-12-26 Electronics And Telecommunications Research Institute Neural network accelerator with type conversion units and operating method thereof

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
JP2840320B2 (ja) * 1989-09-20 1998-12-24 株式会社日立製作所 半導体記憶装置
US8190722B2 (en) * 2003-06-30 2012-05-29 Randy Oyadomari Synchronization of timestamps to compensate for communication latency between devices
US7831815B2 (en) * 2008-02-06 2010-11-09 Arm Limited Data processing apparatus and method for identifying sequences of instructions
KR101519601B1 (ko) * 2008-09-09 2015-05-13 삼성전자주식회사 반도체 모듈 및 이를 포함하는 전자 시스템
US8464026B2 (en) * 2010-02-17 2013-06-11 International Business Machines Corporation Method and apparatus for computing massive spatio-temporal correlations using a hybrid CPU-GPU approach
US20120059866A1 (en) 2010-09-03 2012-03-08 Advanced Micro Devices, Inc. Method and apparatus for performing floating-point division
KR102107147B1 (ko) * 2013-02-01 2020-05-26 삼성전자주식회사 패키지 온 패키지 장치
WO2016169032A1 (zh) * 2015-04-23 2016-10-27 华为技术有限公司 数据格式转换装置、缓冲芯片及方法
CN107526709A (zh) * 2016-06-15 2017-12-29 辉达公司 使用低精度格式的张量处理
US10437474B1 (en) * 2017-04-27 2019-10-08 EMC IP Holding Company LLC Overwriting compressed data extents
US11501139B2 (en) * 2017-05-03 2022-11-15 Intel Corporation Scaling half-precision floating point tensors for training deep neural networks
US10373500B1 (en) * 2017-09-22 2019-08-06 State Farm Mutual Automobile Insurance Company Technology for using image data to assess vehicular risks and communicate notifications
KR102395463B1 (ko) 2017-09-27 2022-05-09 삼성전자주식회사 적층형 메모리 장치, 이를 포함하는 시스템 및 그 동작 방법
KR102564456B1 (ko) 2017-10-19 2023-08-07 삼성전자주식회사 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법
US11216719B2 (en) 2017-12-12 2022-01-04 Intel Corporation Methods and arrangements to quantize a neural network with machine learning
US10305508B2 (en) 2018-05-11 2019-05-28 Intel Corporation System for compressing floating point data
US11093579B2 (en) 2018-09-05 2021-08-17 Intel Corporation FP16-S7E8 mixed precision for deep learning and other algorithms
US11068394B2 (en) * 2018-10-29 2021-07-20 Electronics And Telecommunications Research Institute Neural network system including data moving controller
US11372643B2 (en) * 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format
KR20200061164A (ko) 2018-11-23 2020-06-02 삼성전자주식회사 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서
US11562247B2 (en) 2019-01-24 2023-01-24 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas
US11137982B2 (en) * 2019-02-27 2021-10-05 Micron Technology, Inc. Acceleration circuitry
US10990389B2 (en) * 2019-04-29 2021-04-27 Micron Technology, Inc. Bit string operations using a computing tile
US20210125042A1 (en) * 2019-10-25 2021-04-29 Alibaba Group Holding Limited Heterogeneous deep learning accelerator

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102486619B1 (ko) * 2022-05-26 2023-01-11 주식회사 노타 양자화 모델에서의 메모리 사용량과 대역폭 감축을 위한 데이터 저장 방법 및 시스템

Also Published As

Publication number Publication date
US20220066660A1 (en) 2022-03-03
EP3964945A1 (en) 2022-03-09
CN114201107A (zh) 2022-03-18
US11934668B2 (en) 2024-03-19

Similar Documents

Publication Publication Date Title
KR102596644B1 (ko) 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서
US11551068B2 (en) Processing system and method for binary weight convolutional neural network
KR20220030106A (ko) 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치
WO2020073211A1 (zh) 运算加速器、处理方法及相关设备
Biookaghazadeh et al. Toward multi-fpga acceleration of the neural networks
Pinkham et al. Near-sensor distributed DNN processing for augmented and virtual reality
US20220103831A1 (en) Intelligent computing resources allocation for feature network based on feature propagation
KR20220001821A (ko) 텐서 처리 방법, 가속기 및 이를 포함한 가속기 시스템
WO2020062252A1 (zh) 运算加速器和压缩方法
KR20220028899A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
US20230196086A1 (en) Increased precision neural processing element
KR20210156554A (ko) 텐서 처리 방법, 가속기 및 이를 포함한 전자 장치
TW202312039A (zh) 機器學習模型加速推理方法及裝置
US20210174259A1 (en) Deep learning numeric data and sparse matrix compression
US11507349B2 (en) Neural processing element with single instruction multiple data (SIMD) compute lanes
US11663446B2 (en) Data reuse and efficient processing scheme in executing convolutional neural network
KR20220049325A (ko) 가속기 및 이를 포함한 전자 장치
KR20210103367A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
KR20210157636A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
KR20220033314A (ko) 호스트 프로세서 및 가속기의 동작 방법 및 이들을 포함한 전자 장치
US20240013047A1 (en) Dynamic conditional pooling for neural network processing
KR102663557B1 (ko) 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서
KR20210157624A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
US20220147398A1 (en) Method and apparatus for lightweight and parallelization of accelerator task scheduling
KR20220049294A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치