[go: up one dir, main page]

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

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

Info

Publication number
KR102800376B1
KR102800376B1 KR1020190168908A KR20190168908A KR102800376B1 KR 102800376 B1 KR102800376 B1 KR 102800376B1 KR 1020190168908 A KR1020190168908 A KR 1020190168908A KR 20190168908 A KR20190168908 A KR 20190168908A KR 102800376 B1 KR102800376 B1 KR 102800376B1
Authority
KR
South Korea
Prior art keywords
data
input
host
buffer
precision
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020190168908A
Other languages
English (en)
Other versions
KR20210077352A (ko
Inventor
김주영
박용상
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020190168908A priority Critical patent/KR102800376B1/ko
Priority to US16/908,046 priority patent/US11513857B2/en
Priority to CN202010664964.1A priority patent/CN112990450B/zh
Publication of KR20210077352A publication Critical patent/KR20210077352A/ko
Application granted granted Critical
Publication of KR102800376B1 publication Critical patent/KR102800376B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

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

Description

데이터 처리 시스템 및 이를 위한 가속 장치{Data Processing System and accelerating DEVICE therefor}
본 발명은 데이터 처리 시스템 및 이를 위한 가속 장치에 관한 것이다.
일반적인 뉴럴 네트워크(Neural Network) 가속기들은 호스트와의 사이에 데이터 버퍼(Data Buffer)를 두어 사용하는데, 이는 단순한 버퍼로 호스트에서 가속기까지 데이터를 주고받는 레이턴시(Latency)를 줄이기 위한 목적으로 사용된다.
한편, 뉴럴 네트워크들의 종류가 다양해짐에 따라 적용하는 데이터의 타입 및 사이즈가 각각 달라 실제 연산을 수행하는 시간이 증가하는 현상이 야기될 수 있다. 이에, 호스트로부터 전달되는 다양한 타입의 입력 데이터에 대한 전 처리 작업이 요구되고 있는 실정이다.
선행기술문헌: 공개특허공보 제10-2019-0043849호
본 발명의 실시 예는 데이터 전처리를 통해 연산 성능을 향상시키는 데이터 처리 시스템 및 이를 위한 가속 장치를 제공하기 위한 것이다.
본 발명의 실시 예에 따른 데이터 처리 시스템은, 입력되는 데이터를 데이터 구분 기준에 따른 데이터 식별정보와 함께 가속 장치로 전달하는 호스트; 및 상기 호스트로부터 전송되는 입력 데이터를 수신하면 상기 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 분배하되, 상기 피처 데이터에 대한 전처리를 수행하고, 연산 처리된 결과 데이터를 상기 호스트로 출력하거나 또는 연산 처리가 재 수행될 수 있도록 피드백 하는 가속 장치를 포함할 수 있다.
본 발명의 실시 예에 따른 가속 장치는, 호스트로부터 전송되는 입력 데이터를 수신하면 데이터 구분 기준에 따라 생성된 데이터 식별정보를 기초로 상기 입력 데이터를 피처 데이터, 파라미터 및 바이어스 중 어느 하나로 구분하여 연산기 내 해당 버퍼로 분배하되, 상기 피처 데이터의 정밀도(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 데이터 처리 시스템 및 이를 위한 가속 장치 Active KR102800376B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190168908A KR102800376B1 (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 CN112990450B (zh) 2019-12-17 2020-07-10 数据处理系统及其加速器

Applications Claiming Priority (1)

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

Publications (2)

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

Family

ID=76317565

Family Applications (1)

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

Country Status (3)

Country Link
US (1) US11513857B2 (ko)
KR (1) KR102800376B1 (ko)
CN (1) CN112990450B (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102835519B1 (ko) * 2016-09-28 2025-07-17 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
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 삼성전자주식회사 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법
CN110163353B (zh) * 2018-02-13 2021-05-11 上海寒武纪信息科技有限公司 一种计算装置及方法
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 에스케이하이닉스 주식회사 신경망 알고리즘을 이용한 주소 생성기를 갖는 메모리 장치 및 이를 포함하는 메모리 시스템
KR102728641B1 (ko) * 2019-04-01 2024-11-12 주식회사 사피온코리아 버퍼 메모리, 이를 이용하는 연산 장치 및 시스템
KR102727600B1 (ko) * 2019-07-08 2024-11-07 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 이를 위한 가속 장치

Also Published As

Publication number Publication date
KR20210077352A (ko) 2021-06-25
CN112990450B (zh) 2024-07-23
CN112990450A (zh) 2021-06-18
US20210182109A1 (en) 2021-06-17
US11513857B2 (en) 2022-11-29

Similar Documents

Publication Publication Date Title
CN112599082B (zh) 自适应寻址及编址方法、装置、设备及存储介质
US9652177B2 (en) Memory controller including host command queue and method of operating the same
US8010710B2 (en) Apparatus and method for identifying device type of serially interconnected devices
CN105302710A (zh) 一种确定需要回归测试的测试用例的方法和装置
CN106980581A (zh) 存储器件及操作其的方法
US20170293550A1 (en) Apparatus and method for testing interoperability of robot software
CN112308220A (zh) 神经网络加速系统及其操作方法
KR102800376B1 (ko) 데이터 처리 시스템 및 이를 위한 가속 장치
KR20210105276A (ko) 스마트 홈 모니터링 방법 및 장치
EP1687705B8 (en) Decreased response time for pprc write operation
CN101923494A (zh) 一种存储器控制器验证系统、方法及记分板
US9128890B2 (en) Semiconductor memory system and method for controlling order of access operation on a plurality of memory devices of multi-plane array
US20140143491A1 (en) Semiconductor apparatus and operating method thereof
US7702822B2 (en) Process for operating a system module and semi-conductor component
CN119128335A (zh) 任务处理方法、装置、计算机设备及存储介质
KR102197943B1 (ko) 메모리 컨트롤러와 이를 포함하는 시스템
CN110874221A (zh) 基于命令行的ssd固件打包方法、装置及计算机设备
US20180341491A1 (en) Apparatus and method for memory sharing between computers
KR20200059494A (ko) 메모리 시스템
US20070189296A1 (en) Data transmission circuit and method for controlling the data transmission circuit
JP7233408B2 (ja) 電圧測定装置、電圧検出回路、及びデバイスアドレス生成方法
CN107315709B (zh) 具有被应用用户定义协议的硬件协议栈和用于对硬件协议栈应用用户定义协议的方法
US20240201952A1 (en) Artificial intelligence operation system and method thereof
US7900079B2 (en) Data capture window synchronizing method for generating data bit sequences and adjusting capture window on parallel data paths
US20080140882A1 (en) Interface controller, method for controlling read access, and information processing apparatus provided with the interface controller

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20191217

PG1501 Laying open of application
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20221027

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20191217

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20240621

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20250212

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20250421

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20250422

End annual number: 3

Start annual number: 1

PG1601 Publication of registration