KR20210077352A - 데이터 처리 시스템 및 이를 위한 가속 장치 - Google Patents

데이터 처리 시스템 및 이를 위한 가속 장치 Download PDF

Info

Publication number
KR20210077352A
KR20210077352A KR1020190168908A KR20190168908A KR20210077352A KR 20210077352 A KR20210077352 A KR 20210077352A KR 1020190168908 A KR1020190168908 A KR 1020190168908A KR 20190168908 A KR20190168908 A KR 20190168908A KR 20210077352 A KR20210077352 A KR 20210077352A
Authority
KR
South Korea
Prior art keywords
data
input
host
buffer
precision
Prior art date
Application number
KR1020190168908A
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 KR1020190168908A priority Critical patent/KR20210077352A/ko
Priority to US16/908,046 priority patent/US11513857B2/en
Priority to CN202010664964.1A priority patent/CN112990450A/zh
Publication of KR20210077352A publication Critical patent/KR20210077352A/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9026Single buffer per packet
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/21Pc I-O input output
    • G05B2219/21002Neural classifier for inputs, groups inputs into classes

Abstract

본 발명의 실시 예에 따른 데이터 처리 시스템은 입력되는 데이터를 데이터 구분 기준에 따른 데이터 식별정보와 함께 가속 장치로 전달하는 호스트; 및 호스트로부터 전송되는 입력 데이터를 수신하면 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 분배하되, 피처 데이터에 대한 전처리를 수행하고, 연산 처리된 결과 데이터를 호스트로 출력하거나 또는 연산 처리가 재 수행될 수 있도록 피드백 하는 가속 장치를 포함할 수 있다.

Description

데이터 처리 시스템 및 이를 위한 가속 장치{Data Processing System and accelerating DEVICE therefor}
본 발명은 데이터 처리 시스템 및 이를 위한 가속 장치에 관한 것이다.
일반적인 뉴럴 네트워크(Neural Network) 가속기들은 호스트와의 사이에 데이터 버퍼(Data Buffer)를 두어 사용하는데, 이는 단순한 버퍼로 호스트에서 가속기까지 데이터를 주고받는 레이턴시(Latency)를 줄이기 위한 목적으로 사용된다.
한편, 뉴럴 네트워크들의 종류가 다양해짐에 따라 적용하는 데이터의 타입 및 사이즈가 각각 달라 실제 연산을 수행하는 시간이 증가하는 현상이 야기될 수 있다. 이에, 호스트로부터 전달되는 다양한 타입의 입력 데이터에 대한 전 처리 작업이 요구되고 있는 실정이다.
본 발명의 실시 예는 데이터 전처리를 통해 연산 성능을 향상시키는 데이터 처리 시스템 및 이를 위한 가속 장치를 제공하기 위한 것이다.
본 발명의 실시 예에 따른 데이터 처리 시스템은, 입력되는 데이터를 데이터 구분 기준에 따른 데이터 식별정보와 함께 가속 장치로 전달하는 호스트; 및 상기 호스트로부터 전송되는 입력 데이터를 수신하면 상기 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 분배하되, 상기 피처 데이터에 대한 전처리를 수행하고, 연산 처리된 결과 데이터를 상기 호스트로 출력하거나 또는 연산 처리가 재 수행될 수 있도록 피드백 하는 가속 장치를 포함할 수 있다.
본 발명의 실시 예에 따른 가속 장치는, 호스트로부터 전송되는 입력 데이터를 수신하면 데이터 구분 기준에 따라 생성된 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 연산기 내 해당 버퍼로 분배하되, 상기 피처 데이터의 정밀도(precision)를 변환하여 상기 해당 버퍼로 전달하고, 상기 연산기로부터 회신되는 상기 결과 데이터의 시퀀스를 확인하여 상기 호스트로 전달하거나 또는 상기 연산기로 피드백하는 데이터 처리부; 및 상기 데이터 처리부로부터 전달되는 상기 입력 데이터 및 가중치를 이용하여 연산을 수행한 후, 상기 데이터 처리부로 전달하는 연산기를 포함할 수 있다.
본 실시 예들에 따르면, 입력되는 데이터를 분류 기준에 따라 구분하여 가속 장치 내 해당 수신처로 분배하고, 필요에 따라 호스트 또는 가속 장치에서 데이터 가공을 수행하기 때문에, 데이터 입력 레이턴시를 줄일 수 있는 효과를 기대할 수 있다.
또한, 본 실시 예들은 가속 장치에서 정밀도 변환 및 데이터 피드백을 수행하기 때문에, 데이터 정밀도 변환 등의 이유로 호스트로 전달되었다가 다시 가속 장치로 입력되어 하는 데이터 흐름을 생략하여 오버헤드(overhead)를 줄일 수 있다는 효과를 기대할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 구성을 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 데이터 처리 시스템에서 입력 데이터를 구분하기 위한 방법을 설명하기 위한 도면이다.
도 3 내지 도 5는 본 발명의 실시 예에 따른 데이터 처리 시스템에서 입력 데이터를 구분하기 위한 다른 예를 설명하기 위한 도면이다.
도 6 내지 도 8은 본 발명의 실시 예에 따른 데이터 처리 시스템에서 결과 데이터를 피드백하는 방법을 설명하기 위한 예시도이다.
도 9는 본 발명의 실시 예에 따른 데이터 처리 시스템에서 결과 데이터를 출력하는 방법을 설명하기 위한 예시도이다.
도 10은 본 발명의 실시 예에 따른 데이터 처리 시스템의 가속 장치의 구성을 상세하게 나타낸 도면이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 구성을 나타낸 도면이고, 도 2는 본 발명의 실시 예에 따른 데이터 처리 시스템에서 입력 데이터를 구분하기 위한 방법을 설명하기 위한 도면이다.
도 1을 참고하면, 데이터 처리 시스템(10)은 호스트(100), 가속 장치(200) 및 메모리 장치(300)를 포함할 수 있다.
호스트(100)는 입력되는 데이터를 데이터 구분 기준에 따른 데이터 식별정보와 함께 가속 장치(200)로 전달(도 1의 (1))하는 구성일 수 있다.
이때, 데이터 구분 기준은 파라미터(parameter), 바이어스(bias) 및 피처 데이터(feature data) 중 어느 하나로 구분하기 위한 기준을 의미하는 것이다. 상기 데이터 식별정보는 상술한 파라미터(parameter), 바이어스(bias) 및 피처 데이터(feature data)를 구분하기 위한 다양한 형태의 식별정보를 의미하는 것이다. 이때 데이터 식별정보는 정밀도 정보(Precision Info) 및 데이터 종류(Data type)를 포함할 수 있다. 예를 들어, 데이터 종류는 특정 데이터를 식별하기 위한 어드레스 또는 특정 데이터를 식별하기 위한 비트 또는 실제 데이터 종류명 등 다양한 형태로 나타낼 수 있다.
호스트(100)는 데이터 종류, 입력 데이터의 레이턴시 등의 각종 조건에 따라 정밀도를 결정하여 가속 장치(200)로 전달할 수 있다.
예를 들어, 상대적으로 빠른 처리가 요구되는 입력 데이터인 경우, 호스트(100)는 고정밀도 부동소수점(floating point 32; FP 32)가 아닌 8비트 정수(integer 8; INT8)로 정밀도를 설정하여 고정밀도 부동소수점에 비해 레이턴시가 단축되도록 할 수 있다. 또한, 호스트(100)는 상대적으로 데이터를 포함할 수 있는 범위가 넓게 요구되는 데이터에 대해서는 반정밀도 부동소수점(floating point 16; FP16)이 아닌 b floating point 16(BP16)으로 정밀도를 설정할 수 있다.
본 실시예에서 개시하는 뉴럴 네트워크가 LSTM(Long Short-Term Memory models)이라고 가정하는 경우, 호스트(100)에 입력되는 데이터는 음성일 수 있으며, 이에 한정되지 않는다. 또한, 본 발명에서 개시하는 뉴럴 네트워크가 LSTM에 한정되지 않고, 다양한 종류의 뉴럴 네트워크를 적용할 수 있음은 당연하다 할 것이다.
호스트(100)는 입력되는 데이터를 수신하면, 데이터 구분 기준에 따라 상기 데이터에 대응되는 데이터 종류 및 정밀도 정보를 포함하는 데이터 식별정보를 생성하여 가속 장치(200)로 데이터를 전송할 때 함께 전송할 수 있다.
호스트(100)는 입력된 데이터가 파라미터(parameter) 및 바이어스(bias) 중 어느 하나인 경우, 입력된 데이터의 정밀도를 파라미터 또는 바이어스에 대응되는 정밀도로 변환하여 가속 장치(200)로 전달할 수 있다. 이때, 파라미터와 바이어스는 각각 파라미터 초기값과 바이어스 초기값일 수 있으며, 이에 한정되지 않는다.
호스트(100)로 입력되는 데이터(파라미터 또는 바이어스)의 정밀도가 고정밀도 부동소수점(FP32)인 경우, 호스트(100)는 데이터를 반정밀도 부동소수점(FP16)으로 정밀도를 변환할 수 있는 것이다.
Ct 초기값, Ht 초기값 등의 파라미터와 바이어스는 실시간으로 입력되는 데이터가 아니기 때문에, 호스트(100)는 파라미터와 바이어스에 대해 미리 정밀도를 변환한 후, 실제 연산 처리 전에 가속 장치(200)에 저장하도록 전달할 수 있다.
본 실시예는 호스트(100) 및 가속 장치(200)에서 모두 데이터 분류가 가능할 수 있다. 이에, 호스트(100)는 연산 동작 전에 파라미터와 바이어스에 대한 정밀도 변환을 수행하고, 가속 장치(200)는 연산 동작이 시작된 후에 실시간으로 호스트(100)를 통해 입력되는 피처 데이터에 대해서만 정밀도 변환을 수행하기 때문에, 데이터 입력 레이턴시(latency)를 줄일 수 있다는 효과를 기대할 수 있는 것이다.
가속 장치(200)는 호스트(100)로부터 전송되는 입력 데이터를 수신하면 데이터 식별정보를 기초로 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 연산기(230) 내 복수의 버퍼로 분배할 수 있다.
도 2를 참고하면, 연산기(230)는 입력 버퍼(input buffer)(235), 파라미터 버퍼(parameter buffer)(233), 바이어스 버퍼(bias buffer)(231) 및 출력 버퍼(output buffer)(237)를 포함할 수 있다.
가속 장치(200)는 피처 데이터에 대한 전처리를 수행하고, 연산 처리된 결과 데이터를 호스트(100)로 출력하거나 또는 연산 처리가 재 수행될 수 있도록 피드백 할 수 있다. 결과 데이터를 피드백하는 상세 기술은 후술하기로 한다.
상술한 전처리는 피처 데이터를 비롯한 데이터에 대해 연산 처리 이전에 연산 처리에 적합한 형식으로 변환하는 동작을 의미할 수 있다. 예를 들어, 전처리는 정밀도(precision) 변환 등을 포함할 수 있다.
도 1을 참고하면, 가속 장치(200)는 데이터 처리부(210), 연산기(230) 및 컨트롤러(250)를 포함할 수 있다.
데이터 처리부(210)는 호스트(100)로부터 전송되는 입력 데이터를 수신하면 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 연산기(230) 내 해당 버퍼로 분배하되, 피처 데이터의 정밀도(precision)를 변환하여 해당 버퍼로 전달할 수 있다. 이때, 해당 버퍼는 입력 버퍼(235), 파라미터 버퍼(233), 바이어스 버퍼(231) 및 출력 버퍼 (237) 중 어느 하나일 수 있다.
데이터 처리부(210)는 연산기(230)로부터 연산 처리 후 회신되는 결과 데이터를 호스트(100) 또는 연산기(230)로 전달할 수 있다. 구체적으로, 데이터 처리부(210)는 연산기(230)로부터 연산 처리 후 회신되는 결과 데이터의 시퀀스를 완료 시퀀스와 비교하여 일치하는 경우 결과 데이터를 호스트(100)로 전달하고, 결과 데이터의 시퀀스가 완료 시퀀스와 일치하지 않는 경우, 결과 데이터를 연산기(230)로 피드백 할 수 있다.
상술한 시퀀스는 LSTM 셀의 차수를 의미하는 것으로서, 연산을 반복한 횟수를 의미할 수 있다. 완료 시퀀스는 연산을 완료하고 결과 데이터를 출력 데이터로 호스트(100)로 전달해야 하는 LSTM 셀의 차수를 의미하는 것으로서, 연산완료 시점의 연산 반복 횟수를 의미할 수 있다.
연산기(230)는 데이터 처리부(210)로부터 전달되는 입력 데이터 및 가중치를 이용하여 연산을 수행한 후, 데이터 처리부(210)로 전달할 수 있다. 상기 연산은 뉴럴 네트워크(Neural Network)에 적용되는 가속 장치의 연산기에서 수행할 수 있는 모든 연산을 의미할 수 있다. 본 실시예에서의 연산은 32bit 부동소수점 곱셈 처리 등일 수 있으며, 이에 한정되지 않는다.
이때, 데이터 처리부(210)로 전달되는 연산이 수행된 결과 데이터는 출력 버퍼(237)를 통해 출력부(215)로 전달될 수 있다.
컨트롤러(250)는 호스트(100)로부터 전송되는 동작 시작 커맨드를 비롯한 각종 커맨드, 완료 시퀀스 및 출력 데이터의 정밀도를 수신(도 1의 (2))하여 연산기(230) 및 데이터 처리부(210)의 동작을 제어할 수 있다.
예를 들어, 호스트(100)로부터 가속 장치(200)로 전달되는 입력 데이터와 이에 대응되는 비트형태의 정밀도 정보는 가속 장치(200) 내 데이터 처리부(210)에 구현된 서로 다른 핀(pin)을 통해 입력될 수 있다. 이때, 입력 데이터와 정밀도 정보는 서로 싱크(sync)가 맞춰진 상태이기 때문에, 데이터 처리부(210)는 입력 데이터와 이에 대응되는 정밀도 정보를 구분할 수 있다. 데이터 처리부(210)는 컨트롤러(250)로부터 동작 시작 커맨드를 수신하면 저장해 둔 입력 데이터와 정밀도 정보를 기초로 정밀도 변환 동작의 수행을 시작할 수 있다.
메모리 장치(300)는 호스트(100)로부터 전달되는 가중치를 수신하여 저장하고(도 1의 (3-1)), 저장된 가중치를 연산기(230)로 전달(도 1의 (3-2))할 수 있다. 이때, 메모리 장치(300)는 DRAM(dynamic random access memory)일 수 있으며, 이에 한정되지 않는다.
도 3 내지 도 5는 본 발명의 실시 예에 따른 데이터 처리 시스템에서 입력 데이터를 구분하기 위한 다른 예를 설명하기 위한 도면이고, 도 6 내지 도 8은 본 발명의 실시 예에 따른 데이터 처리 시스템에서 결과 데이터를 피드백하는 방법을 설명하기 위한 예시도이고, 도 9는 본 발명의 실시 예에 따른 데이터 처리 시스템에서 결과 데이터를 출력하는 방법을 설명하기 위한 예시도이다.
도 2를 참고하면, 데이터 처리부(210)는 데이터 타입 체커(data type checker)(211), 변환부(transfer unit)(213) 및 출력부(215)를 포함할 수 있다.
데이터 타입 체커(211)는 호스트(100)로부터 전송되는 입력 데이터(도 2의 (1))의 데이터 식별정보에 따라 입력데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하고 구분된 입력 데이터를 복수의 버퍼로 분배할 수 있다(도 2의 (2-1-1), (2-1-2), (2-2), (2-3)).
이때, 데이터 식별정보는 정밀도 정보(Precision Info) 및 데이터 종류(Data type)를 포함할 수 있다. 예를 들어, 데이터 종류는 특정 데이터를 식별하기 위한 어드레스 또는 특정 데이터를 식별하기 위한 비트 또는 실제 데이터 종류명 등 다양한 형태로 나타낼 수 있다.
입력 데이터가 파라미터 또는 바이어스인 경우, 호스트(100)에서 정밀도 변환이 이루어진 상태로 입력되었기 때문에, 데이터 타입 체커(211)는 해당 파라미터 버퍼(233) 또는 바이어스 버퍼(231)로 직접 전송할 수 있다.
만약, 입력 데이터가 피처 데이터인 경우, 데이터 타입 체커(211)는 피처 데이터를 직접 입력 버퍼(235)로 전송하지 않고 변환부(213)로 전송할 수 있다(도 2의 (2-1-1)). 피처 데이터는 변환부(213)에서 정밀도가 변환된 후 입력 버퍼(235)로 전송될 수 있다(도 2의 (2-1-2)).
일 예로, 데이터 타입 체커(211)는 입력 데이터를 어드레스 맵과 비교하여 비교 결과에 따라 피처 데이터는 입력 버퍼(231)로 파라미터는 파라미터 버퍼(233) (도 2의 (2-3))로 바이어스는 바이어스 버퍼(231)로 분배(도 2의 (2-2))되도록 할 수 있다.
도 3을 참고하면, 데이터 타입 체커(211)는 피처 데이터, 파라미터, 바이어스 및 출력 데이터에 각각 대응되는 어드레스를 포함하는 어드레스 맵을 저장할 수 있다. 이때, 호스트(100)는 피처 데이터, 파라미터 및 바이어스를 가속 장치(200)로 전송할 때, 어드레스 맵을 참고하여 피처 데이터, 파라미터 및 바이어스에 대응되는 어드레스를 함께 전송할 수 있다.
도 3에서 도시하는 바와 같이, 어드레스 맵은 0X0000_0000 ~ 0X000F_FFFF이 Bias Init에 대응되고, 0X0010_0000 ~ 0X001F_FFFF이 Hidden Init에 대응되고, 0X0020_0000 ~ 0X002F_FFFF이 Input Vector에 대응되고, 0X0030_0000 ~ 0X003F_FFFF이 Output Hidden에 대응되도록 매칭되어 나타낼 수 있다. 이때, Bias Init는 바이어스 초기값을 의미하고, Hidden Init는 Ct 초기값, Ht 초기값 등의 파라미터 초기값을 의미하며, Input Vector는 피처 데이터를 의미하고, Output Hidden은 연산된 결과 데이터가 출력되는 출력 데이터를 의미할 수 있다.
데이터 타입 체커(211)는 호스트(100)로부터 입력 데이터와 함께 전달되는 어드레스를 확인하여 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분할 수 있다. 또한, 데이터 타입 체커(211)는 출력부(215) 또는 연산기(230)로부터 전달되는 데이터와 함께 전달되는 어드레스를 통해 출력 데이터임을 확인할 수 있음도 가능하다 할 것이다. 이를 위해, 출력부(215) 및 연산기(230)도 어드레스 맵을 사전에 저장하거나, 또는 어드레스 맵을 저장하는 영역에 접근하여 확인할 수 있음은 당연하다 할 것이다.
한편, 데이터 타입 체커(211)는 데이터의 종류를 신속하게 파악하기 위해 피처 데이터, 파라미터, 바이어스 및 출력 데이터의 어드레스 중 서로를 구분할 수 있는 부분만을 확인할 수 있다. 예를 들어, 도 3을 참고하면, 데이터 타입 체커(211)는 어드레스 중 21번째 및 22번째 비트(00 ~ 0F, 10 ~ 1F, 20 ~ 2F, 30 ~ 3F)만을 확인하여 데이터 종류를 구분할 수 있는 것이다.
다른 예로, 데이터 타입 체커(211)는 호스트(100)로부터 전달되는 입력 데이터와 입력 데이터에 대응되는 비트형태의 정밀도 정보를 수신하면, 입력 데이터를 입력 버퍼(235)로 전달할 수 있다.
도 5를 참고하면, 호스트(100)로부터 전달되는 비트형태의 정밀도 정보는 정밀도별로 신호 비트가 대응되어 있을 수 있다. 예를 들어, 정밀도가 floating point 32인 경우 신호 비트는 00, 정밀도가 floating point 32인 경우 신호 비트는 01, 정밀도가 b floating point 16인 경우 신호 비트는 10, 정밀도가 integer 8인 경우 신호 비트는 11일 수 있는 것이다.
데이터 타입 체커(211)는 비트형태의 정밀도 정보(도 5의 00, 01, 10, 11)에 대응되는 정밀도를 사전에 저장하고 있어, 00, 01, 10, 11과 같은 정밀도 정보만을 수신해도 대응되는 정밀도를 파악할 수 있는 것이다.
데이터 타입 체커(211)는 호스트(100)로부터 입력 데이터와 함께 비트형태의 정밀도 정보가 전달되는 경우, 상기 입력 데이터를 피처 데이터로 판단하고 입력 버퍼(235)로 전달할 수 있다.
도 4를 참고하면, 호스트(100)로부터 전달되는 입력 데이터와 이에 대응되는 비트 형태의 정밀도 정보(도 5의 signal bit)는 각각 서로 다른 경로를 통해 가속 장치(210)로 전달될 수 있다. 구체적으로, 입력 데이터는 호스트(100)와 데이터 타입 체커(211) 간의 제1 경로(미도시)를 통해 전달되고, 정밀도 정보는 호스트(100)와 데이터 타입 체커(211) 간의 제2 경로(미도시)를 통해 전달될 수 있다. 즉, 데이터 타입 체커(211) 측에서 입력 데이터와 비트 형태의 정밀도 정보를 입력 받는 핀이 서로 다르게 구성될 수 있는 것이다. 한편, 데이터 타입 체커(211)가 입력 데이터와 정밀도 정보를 입력 받는 핀을 동일하게 구현하여 제1 경로를 통해 모두 수신하는 것 역시 가능하다 할 것이다. 또한, 호스트(100)는 비트 형태의 정밀도 정보를 변환부(213)로 직접 전달할 수 있다. 이때, 변환부(213)가 비트 형태의 정밀도 정보에 대응되는 정밀도를 사전에 저장하고 있음은 당연하다 할 것이다.
또 다른 예로, 데이터 타입 체커(211)는 호스트(100)로부터 전달되는 패킷 데이터 형태의 입력 데이터를 수신하면, 패킷 데이터에 포함된 데이터 식별정보를 기초로 입력 데이터를 구분하여 입력 버퍼(235), 파라미터 버퍼(233) 및 바이어스 버퍼(231) 중 어느 하나로 분배할 수 있다.
도 5를 참조하면, 패킷 데이터 형태의 입력 데이터는 뉴럴 네트워크 정보(NN Info), 데이터 정보(Data Info), 유저 정의 정보(User Define Info) 및 데이터 식별정보 중 적어도 하나 이상을 포함할 수 있다. 이때, 데이터 정보는 실제 데이터인 피처 데이터, 파라미터 및 바이어스 중 어느 하나일 수 있다. 유저 정의 정보는 유저의 필요에 따라 생성되는 정보를 의미하는 것으로서, 해당 내용이 고정된 것이 아니라 유저의 필요에 따라 변경될 수 있다.
상기 데이터 식별정보는 정밀도 정보(Precision Info) 및 데이터 종류(Data type)를 포함할 수 있다. 예를 들어, 데이터 종류는 특정 데이터를 식별하기 위한 어드레스 또는 특정 데이터를 식별하기 위한 비트 또는 실제 데이터 종류명 등 다양한 형태로 나타낼 수 있다.
데이터 타입 체커(211)는 데이터 종류를 기초로 입력 데이터가 피처 데이터인지, 파라미터인지, 바이어스인지 여부를 구분할 수 있다.
데이터 타입 체커(211)는 정밀도 정보를 기초로 입력 데이터의 정밀도가 변환되도록 변환부(213)로 정밀도 정보를 전달할 수 있으나, 이에 한정되지 않고, 호스트(100)가 직접 변환부(213)로 정밀도 정보를 전달하는 것 역시 가능하다 할 것이다.
변환부(213)는 데이터 식별정보에 포함된 정밀도 정보에 따라 피처 데이터의 정밀도를 변환할 수 있다.
변환부(213)는 데이터 타입 체커((211)로부터 전달되는 입력 데이터의 정밀도를 호스트(100)로부터 전달되는 정밀도 정보에 따라 변환할 수 있다.
예를 들어, 변환부(213)는 고정밀도 부동소수점(floating point 32; FP 32)의 입력 데이터를 반정밀도 부동소수점(floating point 16; FP16), b floating point 16(BP16) 및 8비트 정수(integer 8; INT8) 중 어느 하나의 정밀도로 변환을 수행하는 것이다. 본 실시예에 적용되는 정밀도는 고정밀도 부동소수점(floating point 32; FP 32), 반정밀도 부동소수점(floating point 16; FP16), b floating point 16(BP16) 및 8비트 정수(integer 8; INT8)에 한정되지 않고, 운용자에 따라 다른 정밀도를 추가로 적용하는 것 역시 가능하다 할 것이다.
또한, 변환부(213)는 연산된 결과 데이터를 호스트(100)로 출력하기 전에 호스트(100)가 요구하는 출력 정밀도에 따라 정밀도 변환을 수행할 수 있다.
구체적으로, 변환부(213)는 출력부(215)로부터 출력 예정인 결과 데이터를 수신하면 출력 정밀도를 기초로 정밀도를 변환하여 데이터 타입 체커(211)로 전달할 수 있다.
예를 들어, 변환부(213)는 반정밀도 부동소수점(floating point 16; FP16), b floating point 16(BP16) 및 8비트 정수(integer 8; INT8) 중 어느 하나의 정밀도인 결과 데이터를 고정밀도 부동소수점(floating point 32; FP 32)으로 변환한 후, 호스트(100)로 전달되도록 할 수 있다.
출력부(215)는 연산기(230)로부터 전달되는 결과 데이터의 시퀀스를 완료 시퀀스와 비교하여 일치하는 경우 결과 데이터가 호스트(100)로 출력되도록 하고(도 2의 (3-1-1), (3-1-2)), 시퀀스가 완료 시퀀스와 일치하지 않는 경우, 결과 데이터가 연산기(230)로 피드백 되도록 할 수 있다(도 2의 (3-1-3)). 출력부(215)는 컨트롤러(250)로부터 완료 시퀀스를 사전에 수신하여 인지할 수 있다. 상술한 시퀀스는 LSTM 셀의 차수를 의미하는 것으로서, 연산을 반복한 횟수를 의미할 수 있다. 완료 시퀀스는 연산을 완료하고 결과 데이터를 출력 데이터로 호스트(100)로 전달해야 하는 LSTM 셀의 차수를 의미하는 것으로서, 연산완료 시점의 연산 반복 횟수를 의미할 수 있다. 이때, 완료 시퀀스는 LSTM 셀의 차수가 아닌 결과 데이터를 출력해야 하는 LSTM 셀의 식별정보로도 변경 가능하다 할 것이다.
도 9를 참고하면, 출력부(215)는 결과 데이터의 시퀀스를 완료 시퀀스와 비교하여 일치하는 경우, 결과 데이터를 변환부(213)로 전달하여 출력 정밀도에 따라 변환한 후 호스트(100)로 출력되도록 할 수 있다(도 9의 (6-1), (6-2), (6-3) 참조).
도 6을 참고하면, 완료 시퀀스가 2 시퀀스인 경우, 출력부(215)는 출력 버퍼(230)로부터 전달되는 결과 데이터에 대응되는 LSTM 셀이 제2 LSTM 셀인지 여부를 확인하고, 확인 결과 제2 LSTM 셀인 경우 결과 데이터가 호스트(100)로 출력 되도록 할 수 있다. 이때, 출력부(215)는 결과 데이터를 변환부(213)로 전달하여 호스트(100)가 요청하는 출력 정밀도로 변환한 후, 호스트(100)로 출력되도록 할 수 있다. 결과 데이터를 출력 정밀도로 변환하는 것은 호스트(100)에서 수행하는 동작을 최소화하기 위한 것이다. 변환부(213)에서 결과 데이터에 대한 정밀도 변환을 사전에 수행하기 때문에, 호스트(100) 입장에서 정밀도 변환 절차를 생략할 수 있어, 정밀도 변환 동작에 대한 동작 부하를 줄일 수 있는 것이다.
출력부(215)는 결과 데이터의 시퀀스가 완료 시퀀스와 일치하지 않는 경우, 결과 데이터를 변환부(213)로 전달하여 연산기(230)로 피드백 되도록 하거나(도 7의 (4-1), (4-2), (4-3) 참조), 또는 결과 데이터를 데이터 타입 체커(211)로 전달하여 연산기(230)로 피드백(도 8 의 (5-1), (5-2), (5-3), (5-4) 참조) 되도록 할 수 있다.
도 6을 참고하면, 완료 시퀀스가 2 시퀀스인 경우, 출력부(215)는 출력 버퍼(230)로부터 전달되는 결과 데이터에 대응되는 LSTM 셀이 제2 LSTM 셀인지 여부를 확인하고, 확인 결과 제2 LSTM 셀이 아닌 경우 결과 데이터가 연산기(230)로 피드백 되도록 할 수 있다. 이때, 제1 LSTM 셀부터 연산을 수행했다고 가정하여, 제1 LSTM 셀이 1 시퀀스인 경우일 수 있다.
본 실시예에서는 연산된 결과 데이터가 연산기(230)로 다시 입력되어야 하는 경우, 호스트(100)를 거쳐 재 입력되는 것이 아니라 가속 장치(200) 내에서 다시 연산기(230)로 피드백되기 때문에, 데이터 플로우(dataflow)에서 데이터 입력과 관련된 오버헤드(overhead)를 줄일 수 있다는 효과를 기대할 수 있다.
도 10은 본 발명의 실시 예에 따른 데이터 처리 시스템의 가속 장치의 구성을 상세하게 나타낸 도면이다.
도 1 및 10을 참조하면, 가속 장치(200)는 데이터 처리부(210), 연산기(230) 및 컨트롤러(250)를 포함할 수 있다.
데이터 처리부(210)는 호스트(100)로부터 전송되는 입력 데이터를 수신하면(도 10의 (1)) 데이터 구분 기준에 따라 생성된 데이터 식별정보를 기초로 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 연산기(230) 내 해당 버퍼로 분배할 수 있다((2-1-1), (2-1-2), (2-2), (2-3)).
데이터 처리부(210)는 피처 데이터의 정밀도(precision)를 변환하여 해당 버퍼로 전달하고((2-1-1), (2-1-2)), 연산기(230)로부터 회신되는 결과 데이터의 시퀀스를 확인하여 호스트(100)로 전달하거나 또는 연산기(230)로 피드백할 수 있다. 이때, 데이터 처리부(210)는 입력 데이터가 파라미터 또는 바이어스인 경우에는 호스트(100)에서 이미 정밀도 변환이 수행되었기 때문에, 바이어스 버퍼(231) 또는 파라미터 버퍼(233)로 입력 데이터를 전송할 수 있는 것이다((2-2), (2-3)).
연산기(230)는 데이터 처리부(210)로부터 전달되는 입력 데이터 및 가중치를 이용하여 연산을 수행한 후, 데이터 처리부(210)로 전달할 수 있다. 이때, 가중치는 메모리 장치(300)에 저장될 수 있으며, 이에 한정되지 않고, 가중치를 연산기(230) 내 별도의 메모리(미도시)에 저장하는 것 역시 가능하다 할 것이다.
도 10을 참고하면, 데이터 처리부(210)는 데이터 타입 체커(data type checker)(211), 변환부(transfer unit)(213) 및 출력부(215)를 포함할 수 있다.
데이터 타입 체커(211)는 호스트(100)로부터 전송되는 입력 데이터의 데이터 식별정보에 따라 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하고 구분된 입력 데이터를 해당 버퍼로 분배할 수 있다. 이때, 해당 버퍼는 입력 버퍼(input buffer)(235), 파라미터 버퍼(parameter buffer)(233), 바이어스 버퍼(bias buffer)(231) 및 출력 버퍼(output buffer)(237) 중 어느 하나일 수 있다.
변환부(213)는 데이터 식별정보에 포함된 정밀도 정보에 따라 피처 데이터의 정밀도를 변환할 수 있다.
출력부(215)는 연산기(230)로부터 전달되는 결과 데이터의 시퀀스를 완료 시퀀스와 비교하여 일치하는 경우 결과 데이터가 호스트(100)로 출력되도록 하고, 시퀀스가 완료 시퀀스와 일치하지 않는 경우, 결과 데이터가 연산기(230)로 피드백 되도록 할 수 있다.
연산된 결과 데이터가 연산기(230)로 다시 입력되어야 하는 경우, 호스트(100)를 거쳐 재 입력되는 것이 아니라 가속 장치(200) 내에서 다시 연산기(230)로 피드백되기 때문에, 데이터 플로우(dataflow)에서 데이터 입력과 관련된 오버헤드(overhead)를 줄일 수 있다는 효과를 기대할 수 있다.
도 10을 참고하면, 연산기(230)는 입력 버퍼(input buffer)(235), 파라미터 버퍼(parameter buffer)(233), 바이어스 버퍼(bias buffer)(231) 및 출력 버퍼(output buffer)(237)를 포함할 수 있다.
일 예로, 데이터 타입 체커(211)는 피처 데이터, 파라미터, 바이어스 및 출력 데이터에 각각 대응되는 어드레스를 포함하는 어드레스 맵을 저장하고, 입력 데이터를 상기 어드레스 맵과 비교하여 비교 결과에 따라 상기 피처 데이터는 상기 입력 버퍼로 상기 파라미터는 상기 파라미터 버퍼로 상기 바이어스는 상기 바이어스 버퍼로 분배되도록 할 수 있다.
다른 예로, 데이터 타입 체커(211)는 호스트(100)로부터 전달되는 입력 데이터 및 입력 데이터에 대응되는 비트형태의 정밀도 정보를 수신하면, 입력 데이터는 입력 버퍼(235)로 전달할 수 있다.
다른 예로, 데이터 타입 체커(211)는 호스트(100)로부터 전달되는 패킷 데이터 형태의 입력 데이터를 수신하면, 패킷 데이터에 포함된 데이터 식별정보를 기초로 입력 데이터를 구분하여 입력 버퍼(235), 파라미터 버퍼(233) 및 바이어스 버퍼(231) 중 어느 하나로 분배할 수 있다.
상기 패킷 데이터 형태의 입력 데이터는 뉴럴 네트워크 정보, 데이터 정보, 유저 정의 정보 및 데이터 식별정보 중 적어도 하나 이상을 포함할 수 있다. 이때, 데이터 식별정보는 정밀도 정보 및 데이터 종류를 포함할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10 : 데이터 처리 시스템 100 : 호스트
200 : 가속 장치 210 : 데이터 처리부
211 : 데이터 타입 체커 213 : 변환부
215 : 출력부 220 : 컨트롤러
230 : 연산기 231 : 바이어스 버퍼
233 : 파라미터 버퍼 235 : 입력 버퍼
237 : 출력 버퍼 300 : 메모리 장치

Claims (21)

  1. 입력되는 데이터를 데이터 구분 기준에 따른 데이터 식별정보와 함께 가속 장치로 전달하는 호스트; 및
    상기 호스트로부터 전송되는 입력 데이터를 수신하면 상기 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 분배하되, 상기 피처 데이터에 대한 전처리를 수행하고, 연산 처리된 결과 데이터를 상기 호스트로 출력하거나 또는 연산 처리가 재 수행될 수 있도록 피드백 하는 가속 장치;
    를 포함하는 데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 가속 장치는,
    상기 호스트로부터 전송되는 입력 데이터를 수신하면 상기 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 연산기 내 복수의 버퍼로 분배하되, 상기 피처 데이터의 정밀도(precision)를 변환하여 상기 복수의 버퍼로 전달하고, 상기 연산기로부터 회신되는 상기 결과 데이터의 시퀀스를 확인하여 상기 호스트로 전달하거나 또는 상기 연산기로 피드백하는 데이터 처리부; 및
    상기 데이터 처리부로부터 전달되는 상기 입력 데이터 및 가중치를 이용하여 연산을 수행한 후, 상기 데이터 처리부로 전달하는 연산기;
    를 포함하는 데이터 처리 시스템.
  3. 제2항에 있어서,
    상기 가속 장치는,
    상기 호스트로부터 전송되는 동작 시작 커맨드를 비롯한 각종 커맨드, 완료 시퀀스 및 출력 데이터의 정밀도를 수신하여 상기 연산기 및 상기 데이터 처리부의 동작을 제어하는 컨트롤러;
    를 더 포함하는 데이터 처리 시스템.
  4. 제3항에 있어서,
    상기 데이터 처리부는,
    상기 호스트로부터 전송되는 상기 입력 데이터의 상기 데이터 식별정보에 따라 상기 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하고 구분된 상기 입력 데이터를 상기 복수의 버퍼로 분배하는 데이터 타입 체커;
    상기 데이터 식별정보에 포함된 정밀도 정보에 따라 상기 피처 데이터의 정밀도를 변환하는 변환부; 및
    상기 연산기로부터 전달되는 상기 결과 데이터의 시퀀스를 상기 완료 시퀀스와 비교하여 일치하는 경우 상기 결과 데이터가 상기 호스트로 출력되도록 하고, 상기 시퀀스가 상기 완료 시퀀스와 일치하지 않는 경우, 상기 결과 데이터가 상기 연산기로 피드백 되도록 하는 출력부;
    를 포함하는 데이터 처리 시스템.
  5. 제4항에 있어서,
    상기 출력부는,
    상기 결과 데이터의 시퀀스를 상기 완료 시퀀스와 비교하여 일치하는 경우, 상기 결과 데이터를 상기 변환부로 전달하여 출력 정밀도에 따라 변환한 후 상기 호스트로 출력되도록 하는 데이터 처리 시스템.
  6. 제4항에 있어서,
    상기 출력부는,
    상기 결과 데이터의 시퀀스가 상기 완료 시퀀스와 일치하지 않는 경우, 상기 결과 데이터를 상기 변환부로 전달하여 상기 연산기로 피드백 되도록 하거나, 또는 상기 결과 데이터를 상기 데이터 타입 체커로 전달하여 상기 연산기로 피드백 되도록 하는 데이터 처리 시스템.
  7. 제4항에 있어서,
    상기 연산기는 입력 버퍼, 파라미터 버퍼, 바이어스 버퍼 및 출력 버퍼를 포함하는 데이터 처리 시스템.
  8. 제7항에 있어서,
    상기 데이터 타입 체커는,
    피처 데이터, 파라미터, 바이어스 및 출력 데이터에 각각 대응되는 어드레스를 포함하는 어드레스 맵을 저장하고, 상기 입력 데이터를 상기 어드레스 맵과 비교하여 비교 결과에 따라 상기 피처 데이터는 상기 입력 버퍼로 상기 파라미터는 상기 파라미터 버퍼로 상기 바이어스는 상기 바이어스 버퍼로 분배되도록 하는 데이터 처리 시스템.
  9. 제7항에 있어서,
    상기 데이터 타입 체커는,
    상기 호스트로부터 전달되는 상기 입력 데이터와 상기 입력 데이터에 대응되는 비트형태의 정밀도 정보를 수신하면, 상기 입력 데이터를 상기 입력 버퍼로 전달하는 데이터 처리 시스템.
  10. 제9항에 있어서,
    상기 변환부는,
    상기 데이터 타입 체커로부터 전달되는 입력 데이터의 정밀도를 상기 호스트로부터 전달되는 상기 정밀도 정보에 따라 변환하는 데이터 처리 시스템.
  11. 제7항에 있어서,
    상기 데이터 타입 체커는,
    상기 호스트로부터 전달되는 패킷 데이터 형태의 상기 입력 데이터를 수신하면, 상기 패킷 데이터에 포함된 데이터 식별정보를 기초로 상기 입력 데이터를 구분하여 상기 입력 버퍼, 상기 파라미터 버퍼 및 상기 바이어스 버퍼 중 어느 하나로 분배하는 데이터 처리 시스템.
  12. 제11항에 있어서,
    상기 패킷 데이터 형태의 입력 데이터는,
    뉴럴 네트워크 정보, 데이터 정보, 유저 정의 정보 및 데이터 식별정보 중 적어도 하나 이상을 포함하고,
    상기 데이터 식별정보는 정밀도 정보 및 데이터 종류를 포함하는 데이터 처리 시스템.
  13. 제2항에 있어서,
    상기 호스트로부터 전달되는 상기 가중치를 수신하여 저장하고, 저장된 상기 가중치를 상기 연산기로 전달하는 메모리 장치;
    를 더 포함하는 데이터 처리 시스템.
  14. 제1항에 있어서,
    상기 호스트는,
    입력되는 데이터를 수신하면, 상기 데이터 구분 기준에 따라 상기 데이터에 대응되는 데이터 종류 및 정밀도 정보를 포함하는 상기 데이터 식별정보를 생성하여 상기 가속 장치로 상기 데이터를 전송할 때 함께 전송하고, 상기 데이터가 상기 파라미터 및 상기 바이어스 중 어느 하나인 경우, 상기 데이터의 정밀도를 상기 파라미터 또는 상기 바이어스에 대응되는 정밀도로 변환하여 상기 가속 장치로 전달하는 데이터 처리 시스템.
  15. 호스트로부터 전송되는 입력 데이터를 수신하면 데이터 구분 기준에 따라 생성된 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 연산기 내 해당 버퍼로 분배하되, 상기 피처 데이터의 정밀도(precision)를 변환하여 상기 해당 버퍼로 전달하고, 상기 연산기로부터 회신되는 상기 결과 데이터의 시퀀스를 확인하여 상기 호스트로 전달하거나 또는 상기 연산기로 피드백하는 데이터 처리부; 및
    상기 데이터 처리부로부터 전달되는 상기 입력 데이터 및 가중치를 이용하여 연산을 수행한 후, 상기 데이터 처리부로 전달하는 연산기;
    를 포함하는 가속 장치.
  16. 제15항에 있어서,
    상기 데이터 처리부는,
    상기 호스트로부터 전송되는 상기 입력 데이터의 상기 데이터 식별정보에 따라 상기 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하고 구분된 상기 입력 데이터를 상기 해당 버퍼로 분배하는 데이터 타입 체커;
    상기 데이터 식별정보에 포함된 정밀도 정보에 따라 상기 피처 데이터의 정밀도를 변환하는 변환부; 및
    상기 연산기로부터 전달되는 상기 결과 데이터의 시퀀스를 상기 완료 시퀀스와 비교하여 일치하는 경우 상기 결과 데이터가 상기 호스트로 출력되도록 하고, 상기 시퀀스가 상기 완료 시퀀스와 일치하지 않는 경우, 상기 결과 데이터가 상기 연산기로 피드백 되도록 하는 출력부;
    를 포함하는 가속 장치.
  17. 제16항에 있어서,
    상기 연산기는,
    입력 버퍼, 파라미터 버퍼, 바이어스 버퍼 및 출력 버퍼를 포함하는 가속 장치.
  18. 제17항에 있어서,
    상기 데이터 타입 체커는,
    피처 데이터, 파라미터, 바이어스 및 출력 데이터에 각각 대응되는 어드레스를 포함하는 어드레스 맵을 저장하고, 상기 입력 데이터를 상기 어드레스 맵과 비교하여 비교 결과에 따라 상기 피처 데이터는 상기 입력 버퍼로 상기 파라미터는 상기 파라미터 버퍼로 상기 바이어스는 상기 바이어스 버퍼로 분배되도록 하는 가속 장치.
  19. 제17항에 있어서,
    상기 데이터 타입 체커는,
    상기 호스트로부터 전달되는 상기 입력 데이터 및 상기 입력 데이터에 대응되는 비트형태의 정밀도 정보를 수신하면, 상기 입력 데이터는 상기 입력 버퍼로 전달하는 가속 장치.
  20. 제17항에 있어서,
    상기 데이터 타입 체커는,
    상기 호스트로부터 전달되는 패킷 데이터 형태의 상기 입력 데이터를 수신하면, 상기 패킷 데이터에 포함된 데이터 식별정보를 기초로 상기 입력 데이터를 구분하여 상기 입력 버퍼, 상기 파라미터 버퍼 및 상기 바이어스 버퍼 중 어느 하나로 분배하는 가속 장치.
  21. 제20항에 있어서,
    상기 패킷 데이터 형태의 입력 데이터는,
    뉴럴 네트워크 정보, 데이터 정보, 유저 정의 정보 및 데이터 식별정보 중 적어도 하나 이상을 포함하고,
    상기 데이터 식별정보는 정밀도 정보 및 데이터 종류를 포함하는 가속 장치.
KR1020190168908A 2019-12-17 2019-12-17 데이터 처리 시스템 및 이를 위한 가속 장치 KR20210077352A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190168908A KR20210077352A (ko) 2019-12-17 2019-12-17 데이터 처리 시스템 및 이를 위한 가속 장치
US16/908,046 US11513857B2 (en) 2019-12-17 2020-06-22 Data processing system and accelerator therefor
CN202010664964.1A CN112990450A (zh) 2019-12-17 2020-07-10 数据处理系统及其加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190168908A KR20210077352A (ko) 2019-12-17 2019-12-17 데이터 처리 시스템 및 이를 위한 가속 장치

Publications (1)

Publication Number Publication Date
KR20210077352A true KR20210077352A (ko) 2021-06-25

Family

ID=76317565

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190168908A KR20210077352A (ko) 2019-12-17 2019-12-17 데이터 처리 시스템 및 이를 위한 가속 장치

Country Status (3)

Country Link
US (1) US11513857B2 (ko)
KR (1) KR20210077352A (ko)
CN (1) CN112990450A (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180034853A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
GB2568776B (en) * 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
US11429848B2 (en) * 2017-10-17 2022-08-30 Xilinx, Inc. Host-directed multi-layer neural network processing via per-layer work requests
KR102564456B1 (ko) 2017-10-19 2023-08-07 삼성전자주식회사 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법
CN110163357B (zh) * 2018-02-13 2021-06-25 上海寒武纪信息科技有限公司 一种计算装置及方法
US11687759B2 (en) * 2018-05-01 2023-06-27 Semiconductor Components Industries, Llc Neural network accelerator
US11262982B2 (en) * 2018-07-23 2022-03-01 SK Hynix Inc. Computation circuit including a plurality of processing elements coupled to a common accumulator, a computation device and a system including the same
KR20200097062A (ko) * 2019-02-07 2020-08-18 에스케이하이닉스 주식회사 신경망 알고리즘을 이용한 주소 생성기를 갖는 메모리 장치 및 이를 포함하는 메모리 시스템
KR20200116268A (ko) * 2019-04-01 2020-10-12 에스케이하이닉스 주식회사 버퍼 메모리, 이를 이용하는 연산 장치 및 시스템
KR20210006120A (ko) * 2019-07-08 2021-01-18 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 이를 위한 가속 장치

Also Published As

Publication number Publication date
US20210182109A1 (en) 2021-06-17
CN112990450A (zh) 2021-06-18
US11513857B2 (en) 2022-11-29

Similar Documents

Publication Publication Date Title
US11113104B2 (en) Task parallel processing method, apparatus and system, storage medium and computer device
CN108595157B (zh) 区块链数据的处理方法、装置、设备和存储介质
EP3716156A1 (en) Neural network model training method and apparatus
WO2020029592A1 (zh) 转换方法、装置、计算机设备及存储介质
EP3846040A1 (en) Neural network data processing apparatus, method and electronic device
CN108334942B (zh) 神经网络的数据处理方法、装置、芯片和存储介质
US8799536B2 (en) Data processing apparatus, data processing method and computer-readable medium
CN101176159A (zh) 在dram存储器中处理写屏蔽的方法
CN103645944B (zh) 一种批量数据冲突检测方法、装置及系统
US11385878B2 (en) Model deployment method, model deployment device and terminal equipment
CN109919826B (zh) 一种用于图计算加速器的图数据压缩方法及图计算加速器
KR20210077352A (ko) 데이터 처리 시스템 및 이를 위한 가속 장치
EP1267269A2 (en) Apparatus and method for distribution of signals from a high level data link controller to multiple digital signal processor cores
CN109949202B (zh) 一种并行的图计算加速器结构
CN109446146B (zh) 一种应用层通信协议的状态转换序列生成方法
US10339091B2 (en) Packet data processing method, apparatus, and system
CN114240157A (zh) 机器人调度方法、系统、设备及存储介质
CN107885809A (zh) 一种文件传输方法、装置、智能平板和存储介质
US11042497B2 (en) Communication between field programmable gate arrays
US11797850B2 (en) Weight precision configuration method and apparatus, computer device and storage medium
CN114866534B (zh) 一种图像处理方法、装置、设备及介质
CN107315709B (zh) 具有被应用用户定义协议的硬件协议栈和用于对硬件协议栈应用用户定义协议的方法
CN114629860B (zh) 数据传输方法、装置、业务线卡和存储介质
CN109857018B (zh) 一种数字传感器软模型系统
US11956134B2 (en) Multi-link receiving method and multi-link receiver