KR20220027500A - 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법 - Google Patents

가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법 Download PDF

Info

Publication number
KR20220027500A
KR20220027500A KR1020200108437A KR20200108437A KR20220027500A KR 20220027500 A KR20220027500 A KR 20220027500A KR 1020200108437 A KR1020200108437 A KR 1020200108437A KR 20200108437 A KR20200108437 A KR 20200108437A KR 20220027500 A KR20220027500 A KR 20220027500A
Authority
KR
South Korea
Prior art keywords
input data
operation result
array
data
result value
Prior art date
Application number
KR1020200108437A
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 KR1020200108437A priority Critical patent/KR20220027500A/ko
Priority to US17/161,658 priority patent/US20220067494A1/en
Priority to TW110119254A priority patent/TW202209190A/zh
Priority to CN202110586044.7A priority patent/CN114118351A/zh
Publication of KR20220027500A publication Critical patent/KR20220027500A/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/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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
    • 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

Abstract

본 발명의 실시 예에 따른 가속 장치는 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size) 중 적어도 하나 이상을 기초로 연산 방식을 결정하고, 결정된 연산 방식에 따라 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 경로를 제어하여 연산을 처리하는 가속기를 포함하고, 연산 방식은 제1 및 제2 입력 데이터를 배치 사이즈에 따라 PE 어레이로 입력하는 제1 연산 방식과 제1 입력 데이터를 시퀀스 사이즈에 따라 PE 어레이로 입력하는 제2 연산 방식을 포함할 수 있다.

Description

가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법{accelerating DEVICE, Data storing device, Data Processing System and operating method of accelerating DEVICE}
본 발명은 반도체 장치에 관한 것으로, 보다 구체적으로는 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법에 관한 것이다.
AI(Artificial Intelligence) 가속기는 소프트웨어로 처리하던 MLP(Multi-Layer Perceptron), LSTM(Long Short Term Memory), CNN(Convolutional Neural Network) 등의 어플리케이션을 하드웨어로 구현함으로써 호스트의 연산 및 리소스 부담을 덜어주면서 관련 연산의 성능은 극대화할 수 있는 어플리케이션일 수 있다.
상술한 LSTM의 응용은 가속기에서 시퀀스(Sequence) 정보기반의 입력 데이터의 연산과 현재 셀의 출력값의 연산의 조합으로 계산될 수 있다.
한편, 상술한 연산 과정에서 발생하는 연산 속도의 향상이 가속기의 성능과 직결됨에 따라, 가속기 내 연산 속도를 향상시키는 것이 주요 이슈로 대두되고 있는 실정이다.
본 발명의 실시 예는 입력 데이터의 연산 능력이 향상된 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법을 제공한다.
본 발명의 일 실시 예에 따른 가속 장치는, 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size) 중 적어도 하나 이상을 기초로 연산 방식을 결정하고, 결정된 연산 방식에 따라 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 경로를 제어하여 연산을 처리하는 가속기를 포함하고, 상기 연산 방식은 상기 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 상기 PE 어레이로 입력하는 제1 연산 방식과 상기 제1 입력 데이터를 상기 시퀀스 사이즈에 따라 상기 PE 어레이로 입력하는 제2 연산 방식을 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size) 중 적어도 하나 이상을 기초로 연산 방식을 결정하고, 결정된 연산 방식에 따라 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 경로를 제어하여 연산을 처리하는 가속기를 포함하고, 상기 연산 방식은 상기 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 상기 PE 어레이로 입력하는 제1 연산 방식과 상기 제1 입력 데이터를 상기 시퀀스 사이즈에 따라 상기 PE 어레이로 입력하는 제2 연산 방식을 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 배치 사이즈(batch size)를 배치 기준값과 비교한 결과값, 시퀀스 사이즈(sequence size)를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 결정하는 호스트 장치; 및 상기 연산 방식에 따라 상기 PE 어레이로의 제1 및 제2 입력 데이터의 입력 경로를 제어하는 데이터 저장 장치를 포함하고, 상기 연산 방식은 상기 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 상기 PE 어레이로 입력하는 제1 연산 방식과 상기 제1 입력 데이터를 상기 시퀀스 사이즈에 따라 상기 PE 어레이로 입력하는 제2 연산 방식을 포함할 수 있다.
본 발명의 실시 예에 따른 가속 장치의 동작 방법은, 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size)를 수신하는 단계; 상기 배치 사이즈를 배치 기준값과 비교한 결과값, 상기 시퀀스 사이즈를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 제1 연산 방식 및 제2 연산 방식 중 어느 하나로 결정하는 단계; 상기 연산 방식이 상기 제1 연산 방식으로 결정된 경우, 상기 배치 사이즈에 대응되는 수의 상기 제1 입력 데이터 또는 제2 입력 데이터를 상기 PE 어레이의 제1 방향으로 입력하는 단계; 상기 연산 방식이 상기 제2 연산 방식으로 결정된 경우, 상기 시퀀스 사이즈에 대응되는 수의 상기 제1 입력 데이터를 상기 PE 어레이의 상기 제1 방향으로 입력하는 단계; 및 상기 제1 입력 데이터 및 상기 제2 입력 데이터와 각각에 대한 가중치를 이용한 연산 처리 수행 후, 현재 셀의 상태값과 현재 셀의 출력값을 획득하는 단계를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 가속 장치는, 복수의 PE를 포함하여, 제1 입력 데이터와 상기 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 제2 입력 데이터와 상기 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 출력하는 PE 어레이; 상기 PE 어레이에 제1 방향으로 제1 및 제2 입력 데이터를 전달하는 IO 버퍼 블록; 상기 PE 어레이에 제2 방향으로 상기 제3 및 제4 입력 데이터를 전달하는 가중치 버퍼 블록; 및 배치 사이즈(batch size)를 배치 기준값과 비교한 결과값, 시퀀스 사이즈(sequence size)를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 제1 연산 방식 및 제2 연산 방식 중 어느 하나로 결정하는 것을 비롯하여 전체적인 동작을 제어하기 위한 PE 컨트롤러를 포함하고, 상기 제1 연산 방식은 상기 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 상기 PE 어레이로 입력하는 연산 방식이고, 상기 제2 연산 방식은 상기 제1 입력 데이터를 상기 시퀀스 사이즈에 따라 상기 PE 어레이로 입력하는 연산 방식일 수 있다.
본 실시 예들에 따르면, 입력될 데이터의 배치 사이즈 및 시퀀스 사이즈를 기초로 연산 방식을 결정하며, 결정된 연산 방식에 따라 데이터의 입력을 조절하고 연산 처리를 수행하기 때문에, 입력 데이터에 대한 연산 효율성을 향상시킬 수 있다는 효과를 기대할 수 있다.
본 실시 예들에 따르면, 데이터의 입력을 시퀀스 기준으로 병렬 처리할 수 있어 데이터의 연산 속도가 향상될 수 있다는 효과를 기대할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템과 외부 서버의 연결 관계를 나타내는 도면이다.
도 2는 본 발명의 실시 예에 따른 데이터 처리 시스템의 구성을 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 연산 방식을 대략적으로 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 가속 장치의 구성의 일 실시예를 나타낸 도면이다.
도 5는 본 발명의 실시 예에 따른 제1 연산 방식을 예로 들어 설명하기 위한 도면이다.
도 6 및 도 7은 본 발명의 실시 예에 따른 제2 연산 방식을 예로 들어 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 게이트 버퍼 블록의 구성을 나타내는 도면이다.
도 9 및 도 10은 본 발명의 실시 예에 따른 게이트 버퍼 블록의 동작의 일 예를 설명하기 위한 도면이다.
도 11은 본 발명의 실시 예에 따른 게이트 버퍼 블록의 동작의 다른 예를 설명하기 위한 도면이다.
도 12는 본 발명의 실시 예에 따른 데이터 처리 시스템의 구성을 나타내는 도면이다.
도 13은 본 발명의 실시 예에 따른 가속 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 14는 도 13의 일부를 상세하게 설명하기 위한 흐름도이다.
도 15는 본 발명의 실시 예에 따른 가속 장치의 구성의 다른 실시예를 나타내는 도면이다.
도 16은 도 15의 상태 버퍼 블록의 구성을 상세하게 나타내는 도면이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템과 외부 서버의 연결 관계를 나타내는 도면이고, 도 2는 본 발명의 실시 예에 따른 데이터 처리 시스템의 구성을 나타낸 도면이다.
도 1을 참조하면, 데이터 처리 시스템(20)은 통신망을 통해 외부에 위치하는 서버(10)와 연결되어 데이터를 수신할 있다. 이때, 데이터는 후술하는 배치 사이즈(Batch Size) 및 시퀀스 사이즈(Sequence Size)일 수 있다. 딥러닝 어플리케이션(Deep Learning Application)은 배치 단위로 데이터를 처리할 수 있다.
상기 배치 사이즈는 데이터 처리 시스템(20)이 한 번에 처리할 수 있는 데이터의 수를 의미할 수 있다. 예를 들어, 제1 입력 데이터가 사진 이미지인 경우, 입력 이미지 데이터의 사진 개수를 배치(batch)라고 할 수 있다. 10 배치는 10개의 이미지가 제1 입력 데이터로 사용됨을 나타내는 것이다. 10개의 제1 입력 데이터는 동일한 수의 제1 입력 데이터의 가중치와 MAC(multiplication and accumulation) 연산을 수행하게 된다.
제1 입력 데이터의 배치가 PE 어레이가 수용할 수 있는 배치 사이즈 범위내에서 클수록 MAC 활용도(utilization)가 높아질 수 있다. 만약, 제1 입력 데이터의 배치가 PE 어레이가 수용할 수 있는 배치 사이즈 대비 작으면 MAC 활용도는 낮을 수 있는 것이다. 이에, 본 실시예에서는 제1 입력 데이터의 배치가 PE 어레이가 수용할 수 있는 배치 사이즈 대비 작거나, 또는 동일하지 않은 경우 PE 어레이로 입력되는 제1 데이터의 연산을 병렬로 처리하는 등 연산 처리 속도를 향상시키는 방법을 제안하는 것이다.
또한, 시퀀스(Sequence)는 동일 배치(batch)의 시간축의 데이터를 의미할 수 있다. 배치 사이즈는 데이터 저장 장치(20)(또는 후술하는 가속기(400))로 한번에 전달되어 처리되는 연산 단위의 묶음이고, 시퀀스 사이즈는 상기 연산 단위의 묶음의 개별 연산 단위가 연속적으로 입력된 데이터의 순차적인 개수를 의미할 수 있다.
예를 들어, LSTM을 주로 사용하는 NLP의 경우, 문장의 개수는 batch size이고, 문장의 길이는 sequence size(length)일 수 있다. "Can I help you"는 배치 사이즈가 1이고, 시퀀스 개수가 4일 수 있다. 또한, "It is beautiful"은 배치 사이즈가 1이고, 시퀀스 개수가 3일 수 있다.
데이터 처리 시스템(20)은 호스트 장치(100)와 데이터 저장 장치(200)를 포함할 수 있다.
도 2를 참고하면, 호스트 장치(100)는 어플리케이션(application)(110), 소프트웨어 펌웨어(software firmware)(120) 및 어플리케이션 프로그래밍 인터페이스(application programming interface)(130)를 포함할 수 있다.
호스트 장치(100)의 소프트웨어 펌웨어(120)는 배치 사이즈 및 시퀀스 사이즈 중 적어도 하나 이상을 기초로 가속기(400)에서의 연산 방식을 결정할 수 있다. 이때, 연산 방식은 호스트 장치(100) 뿐만 아니라 데이터 저장 장치(200)측에서 결정하는 것 역시 가능하다 할 것이다.
도시하지 않았지만, 호스트 장치(100)는 네트워크 정보(Network Information) 및 PNM 아키텍처 정보(PNM Architecture Information)와 같은 하드웨어 아키텍처 정보를 포함하는 네트워크 모델 정보를 기초로 컴파일링 동작을 수행할 수 있다. 이때, 호스트 장치(100)는 PNM(Processing Near Memory)을 위한 컴파일링 동작을 수행하는 것이다.
한편, 상술한 PNM은 데이터 시그널이 로직 다이(Logic die)(300)와 연결되기 때문에 HBM(High Bandwidth Memory)의 데이터 핀(Data Pin) 구조 보다 상대적으로 높은 스피드를 나타낼 수 있다. 이는, 오프칩(offchip) 연결에 대한 스피드 제약이 제거되었기 때문이다.
상기 네트워크는 CNN(Convolutional Neural Network), MLP(Multi-Layer Perceptron) 및 LSTM(Long Short Term Memory) 등을 포함할 수 있다. 상술한 바와 같이, 네트워크는 신경망(Neural Network)일 수 있으며, 이에 한정되지 않는다.
도 2를 참고하면, 데이터 저장 장치(200)는 메모리 컨트롤러(310), 가속기(400) 및 복수의 메모리 다이(210)를 포함할 수 있다. 이때, 메모리 컨트롤러(310) 및 가속기(400)는 로직 다이(Logic die)(300)에 포함될 수 있다. 이때, 데이터 저장 장치(200)는 PNM(Processing Near Memory)일 수 있다.
데이터 저장 장치(200)는 Serdes Interface 프로토콜을 통해 호스트 장치(100)와 통신할 수 있다. 이에 한정되지 않고, 데이터 저장 장치(200)는 PCI-E(PCI express), USB(universal serial bus), UFS(universal flash storage), MMC(multimedia card), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection) 프로토콜을 비롯하여 호스트 장치(100)와 통신 가능한 프로토콜이라면 모두 가능하다 할 것이다.
도 3은 본 발명의 실시 예에 따른 연산 방식을 대략적으로 설명하기 위한 도면이다.
도 2에서 도시하는 데이터 저장 장치(200)는 호스트 장치(100)로부터 전달되는 연산 방식 또는 호스트 장치(100)로부터 전송되는 배치 사이즈 및 시퀀스 사이즈 중 적어도 하나 이상을 기초로 연산 방식을 직접 결정할 수 있다.
본 실시예에서, 데이터 저장 장치(200)는 현재 셀의 입력값인 xt에 대한 연산, 이전 셀의 출력값인 ht-1에 대한 연산 및 바이어스(bias) 연산을 각각 별도로 수행한 후, xt에 대한 연산 결과값과 ht-1에 대한 연산 결과값 및 바이어스 연산에 대한 결과값을 덧셈 처리하고, 이후 활성화 함수 처리 등의 나머지 연산을 수행할 수 있다.
이때, xt에 대한 연산은 xt(후술하는 제1 입력 데이터)와 xt의 가중치(후술하는 제3 입력 데이터)의 연산을 의미할 수 있다. ht-1에 대한 연산은 ht-1(후술하는 제2 입력 데이터)와 ht-1의 가중치(후술하는 제4 입력 데이터)의 연산을 의미할 수 있다.
도 3을 참조하면, ft, it, ot, gt를 도출하기 위해서 xt가 요구될 때 필요한 데이터는 ht가 아닌 이전 셀의 출력값인 ht-1일 수 있다. 이에, xt와 ht 연산을 동시에 수행하는 것이 불가능한 것이다.
본 실시예에서는 xt에 대한 연산과 ht-1에 대한 연산 및 바이어스 연산을 각각 별도로 수행한 후, 활성화 함수 처리를 비롯한 나머지 연산을 수행하는 것이다.
도 3을 참조하면, 데이터 저장 장치(200)는 복수의 단일 셀들이 서로 연결된 구조의 LSTM에서 현재 셀의 입력값인 xt와 xt의 가중치값인 Wxh_f, Wxh_i, Wxh_o 및 Wxh_g 간의 연산을 통해 제1 연산 결과값을 도출할 수 있다(1).
또한, 데이터 저장 장치(200)는 이전 셀의 출력값(ht-1)과 ht-1의 가중치 값인 Whh_f, Whh_i, Whh_o 및 Whh_g 간의 연산을 통해 제2 연산 결과값을 도출할 수 있다(3).
또한, 데이터 저장 장치(200)는 바이어스 연산을 통해 제3 연산 결과값(bh_f, bh_i, bh_o, bh_g)을 도출할 수 있다(2).
또한, 데이터 저장 장치(200)는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값을 덧셈 처리할 수 있다(4).
이후, 데이터 저장 장치(200)는 덧셈 처리된 결과값을 기초로 활성화 함수 처리 등의 나머지 연산을 수행하여, 망각 게이트(ft)값, 입력 게이트(it)값, 출력 게이트(ot)값 및 tanh(Hyperbolic Tangent) 함수를 통한 새로운 셀의 상태(gt)값을 획득하고, 최종적으로 현재 셀의 상태값(ct)과 현재 셀의 출력값(ht)을 획득할 수 있다. 도 3에서, σ는 활성화 함수이고, ct-1은 이전 셀의 상태값을 의미할 수 있다.
도 4는 본 발명의 실시 예에 따른 가속 장치의 구성의 일 실시예를 나타낸 도면이다.
이하에서는, 본 발명의 실시 예에 따른 제1 연산 방식을 예로 들어 설명하기 위한 도 5와 본 발명의 실시 예에 따른 제2 연산 방식을 예로 들어 설명하기 위한 도 6 및 도 7을 참조하여 설명하기로 한다.
도 4를 참고하면, 가속 장치(40)는 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size) 중 적어도 하나 이상을 기초로 연산 방식을 결정하고, 결정된 연산 방식에 따라 PE 어레이(Processing Element Array)(410)로의 제1 및 제2 입력 데이터의 입력 경로를 제어하여 연산을 처리하는 가속기(400)를 포함할 수 있다.
이때, 연산 방식은 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 PE 어레이(410)로 입력하는 제1 연산 방식과 제1 입력 데이터를 시퀀스 사이즈에 따라 PE 어레이(410)로 입력하는 제2 연산 방식을 포함할 수 있다.
예를 들어, 제1 연산 방식은 PE 어레이(410)가 수용할 수 있는 범위 내에서 배치가 다수 개인 경우 동일 시퀀스의 다수 개의 입력 데이터(예를 들어, xt)를 PE 어레이(410)의 입력으로 사용하는 구조의 연산 방식일 수 있다.
제2 연산 방식은 xt-1, xt, xt+1 등의 서로 다른 시퀀스의 x 입력 데이터를 PE 어레이(410)의 입력으로 사용하는 구조의 연산 방식일 수 있다. 이때, x 입력 데이터의 시퀀스의 개수만큼 병렬성을 증가시켜 연산할 수 있는 것이다. 또한, 입력되는 x의 가중치를 N열(도 1의 N)까지 사용할 수 있기 때문에 MAC의 활용도 역시 증가하는 것이다.
가속기(400)는 PE 어레이(processing element array)(410), IO 버퍼 블록(IO buffer block)(420), 가중치 버퍼 블록(weight buffer block)(430), 게이트 버퍼 블록(gate buffer block)(440), 활성화 함수 처리부(activation function unit)(450), 추가 함수 처리부(special function unit)(460), 상태 버퍼 블록(state buffer block)(470), PE 컨트롤러(480) 및 데이터 전송부(data transfer unit)(490)를 포함할 수 있다.
보다 구체적으로, PE 어레이(410)는 복수의 PE를 포함할 수 있다.
PE 어레이(410)는 제1 입력 데이터와 상기 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 제2 입력 데이터와 상기 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 출력할 수 있다.
상기 제3 연산 결과값은 바이어스 연산 결과값을 의미할 수 있다.
PE 어레이(410)는 시스토릭 어레이(systolic array)로 구성되어 입력 데이터와 가중치를 수신하여 곱해주고, 기존에 저장하고 있던 데이터를 합산하는 연산을 수행할 수 있다.
PE 어레이(410)의 배열 구조는 구성하는 시스템의 면적에 따라 변경 가능할 수 있다.
IO 버퍼 블록(420)은 PE 어레이(410)에 제1 방향(도 4의 ① 방향)으로 제1 및 제2 입력 데이터를 전달할 수 있다. 이때, 제1 입력 데이터는 현재 셀의 입력값으로 도 3의 xt일 수 있고, 제2 입력 데이터는 이전 셀의 출력값으로 도 3의 ht-1일 수 있다.
IO 버퍼 블록(420)은 PE 어레이(410)로부터 전달되는 제1 입력 데이터와 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 제2 입력 데이터와 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 수신할 수 있다. 상기 제3 연산 결과값은 바이어스 연산 결과값을 의미할 수 있다.
만약, PE 어레이(410)로부터 게이트 버퍼 블록(440)으로 직접 데이터가 전달되는 경우, 상술한 IO 버퍼 블록(420)의 게이트 버퍼 블록(440)으로의 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값의 전송은 생략될 수 있다.
가중치 버퍼 블록(430)은 PE 어레이(410)에 제2 방향(도 4의 ② 방향)으로 제3 및 제4 입력 데이터를 전달하는 구성일 수 있다. 이때, 제3 입력 데이터는 제1 입력 데이터의 가중치이고, 제4 입력 데이터는 제2 입력 데이터의 가중치일 수 있다.
PE 컨트롤러(480)는 배치 사이즈를 배치 기준값과 비교한 결과값, 시퀀스 사이즈를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(410)로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 제1 연산 방식 및 제2 연산 방식 중 어느 하나로 결정하는 것을 비롯하여 가속기(400)의 전체적인 동작을 제어하기 위한 구성일 수 있다.
이때, 제1 연산 방식은 제1 및 제2 입력 데이터를 배치 사이즈에 따라 PE 어레이(410)로 입력하는 연산 방식을 의미하고, 제2 연산 방식은 제1 입력 데이터를 시퀀스 사이즈에 따라 PE 어레이(410)로 입력하는 연산 방식을 의미할 수 있다.
한편, 제1 연산 방식 및 제2 연산 방식의 결정은 가속기(400)가 아닌 호스트 장치(100) 측에서 수행하는 것 역시 가능하다 할 것이다. 이에 대한 상세 설명은 후술하기로 한다.
PE 컨트롤러(480)는 연산 방식이 제1 연산 방식으로 결정된 경우, 배치 사이즈에 대응되는 수의 제1 입력 데이터 또는 제2 입력 데이터가 제1 방향으로 상기 PE 어레이(410)에 입력되도록 제어할 수 있다.
예를 들어, 도 5를 참고하면, 입력 데이터의 배치 사이즈가 1이고, 시퀀스 사이즈가 5일 경우, PE 컨트롤러(480)는 제1 입력 데이터를 IO 버퍼 블록(420)을 통해 PE 어레이(410)로 입력시킬 수 있다. 이때, PE 컨트롤러(480)는 1/N 유틸(1/N Util)(A)을 5번 반복시켜, xt0t-1, xt0t, xt0t+1, xt0t+2, xt0t+3을 입력시킬 수 있다. 상기 xt0t-1에서, 0은 배치를 의미하고, t-1은 시퀀스를 의미할 수 있다.
또한, PE 컨트롤러(480)는 제2 입력 데이터(예를 들어, h0t-1)를 IO 버퍼 블록(420)을 통해 PE 어레이(410)로 입력시킬 때, 1/N 유틸(1/N Util)(A)을 5번 반복시킬 수 있다.
도 5의 경우, 제1 입력 데이터와 제2 입력 데이터가 1번 동작하는 시간이 2t일 경우, 10t의 시간동안 1/N 유틸(A)로 가속기(400)가 동작하는 것이다. 이때, 2t는 xt 연산의 1t와 ht-1 연산의 1t를 적용한 것이다.
PE 컨트롤러(480)는 연산 방식이 제2 연산 방식으로 결정된 경우, 시퀀스 사이즈에 대응되는 수의 제1 입력 데이터가 제1 방향으로 PE 어레이(410)에 입력되도록 제어할 수 있다.
예를 들어, 도 6은 입력 데이터의 배치 사이즈가 1이고, 시퀀스 사이즈가 10인 경우를 설명하기 위한 것이다. 도 6을 참고하면, PE 컨트롤러(480)는 제1 입력 데이터(예를 들어, xt0t-1, xt0t, xt0t+1, xt0t+2, xt0t+3, xt0t+4, xt0t+5, xt0t+6, xt0t+7, xt0t+8)를 IO 버퍼 블록(420)을 통해 PE 어레이(410)의 제1 방향으로 한 번에 입력시킬 수 있다.
즉, PE 컨트롤러(480)는 10의 시퀀스 사이즈에 대응하는 제1 입력 데이터 모두를 PE 어레이(410)에 한 번에 입력시킨 것이다. 이때, xt0t-1, xt0t, xt0t+1, xt0t+2, xt0t+3, xt0t+4, xt0t+5, xt0t+6, xt0t+7 및 xt0t+8에서, t-1, t, t+1, t+2, t+3, t+4, t+5, t+6, t+7 및 t+8은 시퀀스를 의미하는 것으로, 서로 다른 시퀀스의 제1 입력 데이터를 입력 데이터로 PE 어레이(410)에 입력시켜 연산 동작을 수행하는 것이다. 도 6에서, N은 10일 수 있다. N이 10이기 때문에, 100% 유틸(B)을 사용하게 된 것이다.
도 7을 참조하면, PE 컨트롤러(480)는 제2 입력 데이터(예를 들어, ht-10t-1, ht-10t, ??)를 IO 버퍼 블록(420)을 통해 PE 어레이(410)로 입력시킬 때, 1/N 유틸(1/N Util)(C)을 10번 반복시킬 수 있다.
도 6 및 도 7을 참조하면, xt 연산을 위해 10/N 유틸이 한번 사용되고(1t), ht-1 연산을 위해 1/N 유틸이 10번 사용(10t)되어 총 11t의 시간에 제1 입력 데이터와 제1 입력 데이터에 대한 PE 어레이(410)에서의 연산 동작을 완료할 수 있는 것이다.
도 8은 본 발명의 실시 예에 따른 게이트 버퍼 블록의 구성을 나타내는 도면이다.
게이트 버퍼 블록(440)은 PE 어레이(410)로부터 전달되는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값 간의 덧셈 처리를 수행하고, 관련 데이터를 저장할 수 있다. 이때, PE 어레이(410)로부터 전달되는 데이터는 IO 버퍼 블록(420)을 통해 전달되는 것 역시 가능하다 할 것이다. 즉, 게이트 버퍼 블록(440)은 PE 어레이(410)로부터 전달되는 데이터를 PE 어레이(410)로부터 직접 전달받거나, IO 버퍼 블록(420)을 통해 전달받을 수 있다.
도 8을 참고하면, 게이트 버퍼 블록(440)은 다중화기(mux)(443), 게이트 컨트롤러(gate controller)(444), 덧셈기(445), 게이트 버퍼(gate buffer)(446) 및 게이트 버퍼 컨트롤러(gate buffer controller)(447)를 포함할 수 있다.
다중화기(443)는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값을 비롯한 데이터의 입력을 처리하기 위한 구성일 수 있다. 이때, 제3 연산 결과값은 제1 연산 결과값과 함께 입력되거나, 또는 별도로 입력될 수 있다.
다중화기(443)는 PE 어레이(410)로부터 전달되는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값 중 적어도 하나 이상을 덧셈기(445)에 선택적으로 입력시키기 위한 제1 다중화기(441)와 게이트 버퍼(446)로부터 피드백되는 데이터와 0을 덧셈기(445)에 선택적으로 입력시키기 위한 제2 다중화기(442)를 포함할 수 있다.
게이트 컨트롤러(444)는 데이터의 입력을 제어하기 위한 구성일 수 있다.
덧셈기(445)는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값 간의 덧셈을 처리할 수 있다.
게이트 버퍼(446)는 PE 어레이(410)로부터 전달되는 제1 연산 결과값, 제2 연산 결과값, 제3 연산 결과값 및 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값 간의 덧셈 처리 결과 중 적어도 하나 이상을 저장하기 위한 구성일 수 있다.
도 8에서 도시하는 바와 같이, 게이트 버퍼(446)는 복수의 저장 구역(예를 들어, Gate_i, Gate_f, Gate_o 및 Gate_g를 포함하여, 게이트 버퍼 컨트롤러(447)의 제어에 따라 연산 결과값을 각 저장 구역에 구분하여 저장할 수 있다. 이때, 게이트 버퍼(446)에 저장된 복수의 저장 구역은 Gate_i, Gate_f, Gate_o 및 Gate_g에 한정되지 않고, 운용자에 따라 확대 또는 축소할 수 있음은 당연하다 할 것이다.
게이트 버퍼 컨트롤러(447)는 게이트 버퍼 블록(440)의 전체 동작을 제어하기 위한 구성일 수 있다.
도 9는 본 발명의 실시 예에 따른 게이트 버퍼 블록의 동작의 일 예를 설명하기 위한 도면이다.
도 9는 입력 데이터의 배치 사이즈가 6인 경우의 게이트 버퍼 블록(440)의 동작을 나타낸 것이다. 이하에서는, PE 어레이(410)에 제1 연산 방식이 적용된 경우를 예로 들어 설명하기로 한다.
도 9를 참조하면, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제1 연산 결과값을 각 i_GB_nn의 순서(i_GB_1, i_GB_2, ... , i_GB_6)대로 수신하고, 제2 연산 결과값 역시 각 i_GB_nn의 순서(i_GB_1, i_GB_2, ... , i_GB_6)대로 수신할 수 있다.
먼저, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제1 연산 결과값인 B0S0_xt, B1S0_xt, B2S0_xt, B3S0_xt, B4S0_xt 및 B5S0_xt을 t0 시기에 수신할 수 있다. 이때, B는 배치의 식별정보이고, S는 시퀀스의 식별정보를 의미할 수 있다. 예를 들어, B0S0_xt는 배치 0의 시퀀스 0인 제1 연산 결과값을 의미하는 것이다.
다음으로, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제2 연산 결과값인 B0S0_ht-1, B1S0_ht-1, B2S0_ht-1, B3S0_ht-1, B4S0_ht-1 및 B5S0_ht-1을 t1 시기에 수신할 수 있다. 이후, 게이트 버퍼 컨트롤러(447)는 상술한 방식으로 제1 연산 결과값 또는 제2 연산 결과값을 수신할 수 있다.
도 10은 본 발명의 실시 예에 따른 게이트 버퍼 블록의 동작의 일 예를 설명하기 위한 도면이다.
도 10은 입력 데이터의 배치 사이즈가 1인 경우의 게이트 버퍼 블록(440)의 동작을 나타낸 것이다. 이하에서는, PE 어레이(410)에 제1 연산 방식이 적용된 경우를 예로 들어 설명하기로 한다.
도 10을 참조하면, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제1 연산 결과값을 i_GB_1만 사용하여 수신하고, 제2 연산 결과값 역시 i_GB_1만 사용하여 수신할 수 있다.
먼저, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제1 연산 결과값인 B0S0_xt만을 t0 시기에 수신할 수 있다. 이때, B는 배치의 식별정보이고, S는 시퀀스의 식별정보를 의미할 수 있다. 예를 들어, B0S0_xt는 배치 0의 시퀀스 0인 제1 연산 결과값을 의미하는 것이다.
다음으로, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제2 연산 결과값인 B0S0_ht-1를 t1 시기에 수신할 수 있다. 이후, 게이트 버퍼 컨트롤러(447)는 i_GB_1만을 통해 상술한 방식으로 제1 연산 결과값 또는 제2 연산 결과값을 수신할 수 있다. 이때, 게이트 버퍼 컨트롤러(447)는 입력 데이터의 시퀀스 사이즈에 따라 i_GB_1을 사용한 연산 결과값의 입력 처리를 반복 수행할 수 있다.
도 11은 본 발명의 실시 예에 따른 게이트 버퍼 블록의 동작의 다른 예를 설명하기 위한 도면이다.
도 11은 입력 데이터의 배치 사이즈가 1, 시퀀스 사이즈가 6인 경우의 게이트 버퍼 블록(440)의 동작을 나타낸 것이다. 이하에서는, PE 어레이(410)에 제2 연산 방식이 적용된 경우를 예로 들어 설명하기로 한다.
도 11을 참조하면, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제1 연산 결과값을 각 i_GB_nn의 순서(i_GB_1, i_GB_2, ?? , i_GB_6)대로 수신할 수 있다.
예를 들어, 도 11을 참고하면, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제1 연산 결과값인 B0S0_xt, B0S1_xt, B0S2_xt, B0S3_xt, B0S4_xt 및 B0S5_xt을 t0 시기에 수신할 수 있다. 이때, B는 배치의 식별정보이고, S는 시퀀스의 식별정보를 의미할 수 있다. 예를 들어, B0S0_xt는 배치 0의 시퀀스 0인 제1 연산 결과값을 의미하는 것이다.
게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제2 연산 결과값을 순차적으로 수신하되, 배치 0의 시퀀스 0은 i_GB_1(도 11의 ③), 배치 0의 시퀀스 1은 i_GB_2, 배치 0의 시퀀스 2는 i_GB_3, 배치 0의 시퀀스 3은 i_GB_4, 배치 0의 시퀀스 4는 i_GB_5, 배치 0의 시퀀스 5는 i_GB_6 경로를 통해 수신할 수 있다.
예를 들어, 도 11을 참고하면, 게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 제2 연산 결과값인 B0S0_ht-1를 t1 시기에 수신하고, B0S1_ht-1를 t2 시기에 수신하며, B0S2_ht-1를 t3 시기에 수신하고, B0S3_h를 t4 시기에 수신하며, B0S4_ht-1를 t5 시기에 수신하고, B0S5_ht-1를 t6 시기에 수신할 수 있다.
게이트 버퍼 컨트롤러(447)는 다중화기(443)를 통해 입력되는 제1 및 제2 연산 결과값을 해당 시퀀스에 따라 게이트 버퍼(446)에 구분하여 저장할 수 있다.
예를 들어, 게이트 버퍼 컨트롤러(447)는 Gate_Buffer 1, Gate_Buffer 2, Gate_Buffer 3, Gate_Buffer 4, Gate_Buffer 5 및 Gate_Buffer 6에 제1 및 제2 연산 결과값을 구분하여 저장할 수 있다. 이때, 제2 연산 결과 값 역시 구분하여 저장할 수 있음은 당연하다 할 것이다.
이에 더해, 게이트 버퍼 컨트롤러(447)는 Gate_Buffer 1, Gate_Buffer 2, Gate_Buffer 3, Gate_Buffer 4, Gate_Buffer 5 및 Gate_Buffer 6 각각에 제1 내지 제3 연산 결과값을 구분하여 저장하되, 각각의 내부에 위치하는 Gate_i, Gate_f, Gate_o, Gate_g에도 보다 세부적으로 구분하여 저장할 수 있다.
도 8을 참고하면, 상술한 다중화기(443), 게이트 컨트롤러(444), 덧셈기(445) 및 게이트 버퍼(446)의 세트는 적어도 하나 이상 형성되되, PE 어레이(410)의 제2 방향(도 4의 ②방향)의 PE의 수(예를 들어, N)에 대응되게 형성될 수 있다.
활성화 함수 처리부(450)는 게이트 버퍼 블록(440)으로부터 전달되는 연산 처리된 데이터에 활성화 함수(Activation Function) 처리를 수행하기 위한 구성일 수 있다.
추가 함수 처리부(460)는 활성화 함수 처리된 데이터에 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀 상태(cell state)값과 현재 셀의 출력값을 획득하기 위한 구성일 수 있다.
상태 버퍼 블록(470)은 활성화 함수 처리부(460)로부터 전달되는 현재 셀의 상태값과 현재 셀의 출력값을 저장 및 제공하기 위한 구성일 수 있다.
데이터 전송부(490)는 IO 버퍼 블록(420) 및 상태 버퍼 블록(470)과 각각 연결되어, 호스트 장치(도 2의 100)로부터 전달되는 데이터를 IO 버퍼 블록(420)으로 전달하거나, 또는 상태 버퍼 블록(470)으로부터 전달되는 데이터를 호스트 장치(100)로 전달할 수 있다. 즉, PE 컨트롤러(480)가 호스트 장치(100)와 제어 신호를 송수신한다면, 데이터 전송부(490)는 호스트 장치(100)와 데이터 송수신을 수행하는 것이다.
도 12는 본 발명의 실시 예에 따른 데이터 처리 시스템의 구성을 나타내는 도면이다.
도 12를 참고하면, 데이터 처리 시스템(20)은 호스트 장치(100) 및 데이터 저장 장치(200)를 포함할 수 있다.
호스트 장치(100)는 배치 사이즈(batch size)를 배치 기준값과 비교한 결과값, 시퀀스 사이즈(sequence size)를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(Processing Element Array)(410)로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 결정할 수 있다.
도 12를 참고하면, 데이터 저장 장치(200)는 호스트 인터페이스 블록(Host IF Block)(401), 메모리 컨트롤러(310), 가속기(400) 및 복수의 메모리 다이(210)를 포함할 수 있다. 이때, 메모리 컨트롤러(310) 및 가속기(400)는 로직 다이(Logic die)(도 2의 300)에 포함될 수 있다.
호스트 인터페이스 블록(Host IF Block)(401)은 가속기(400)와 호스트 장치(100) 간의 통신을 수행하기 위한 구성일 수 있다.
이때, 호스트 인터페이스 블록(401)은 호스트 장치(100)의 프로토콜에 대응하여 호스트 장치와 데이터 저장 장치(200) 사이를 인터페이싱할 수 있다. 예를 들어, 호스트 인터페이스 블록(401)은 Serdes Interface 프로토콜을 통해 호스트 장치(100)와 통신할 수 있다. 이에 한정되지 않고, 호스트 인터페이스 블록(401)은 PCI-E(PCI express), USB(universal serial bus), UFS(universal flash storage), MMC(multimedia card), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection) 프로토콜을 비롯하여 호스트 장치와 통신이 가능한 프로토콜이라면 모두 가능하다 할 것이다.
메모리 컨트롤러(310)는 외부 메모리(예를 들어, 복수의 메모리 다이(210) 등)로부터 데이터를 수신하여 가속기(400)로 전달할 수 있다.
후술하는 데이터 저장 장치(200)는 연산 방식을 호스트 장치(100)로부터 수신하는 경우와 호스트 장치(100)로부터 배치 사이즈 및 시퀀스 사이즈를 수신하여 직접 연산 방식을 결정하는 경우를 포함할 수 있다.
일 예로, 데이터 저장 장치(200)는 호스트 장치(100)로부터 전달되는 연산 방식에 따라 PE 어레이(Processing Element Array)(410)로의 제1 및 제2 입력 데이터의 입력 경로를 제어할 수 있는 가속기(400)를 포함할 수 있다. 상기 연산 방식은 제1 및 제2 입력 데이터를 배치 사이즈에 따라 PE 어레이(410)로 입력하는 제1 연산 방식과 제1 입력 데이터를 시퀀스 사이즈에 따라 PE 어레이(410)로 입력하는 제2 연산 방식을 포함할 수 있다.
다른 예로, 데이터 저장 장치(200)는 호스트 장치(100)로부터 전달되는 배치 사이즈 및 시퀀스 사이즈 중 적어도 하나 이상을 기초로 연산 방식을 결정하고, 결정된 연산 방식에 따라 PE 어레이(Processing Element Array)(410)로의 제1 및 제2 입력 데이터의 입력 경로를 제어하여 연산을 처리하는 가속기(400)를 포함할 수 있다. 상기 연산 방식은 제1 및 제2 입력 데이터를 배치 사이즈에 따라 PE 어레이(410)로 입력하는 제1 연산 방식과 제1 입력 데이터를 시퀀스 사이즈에 따라 PE 어레이(410)로 입력하는 제2 연산 방식을 포함할 수 있다.
이하에서 개시하는 가속기(400)는 상술한 2가지 경우의 데이터 저장 장치(200)에 모두 적용 가능하다 할 것이다.
구체적으로, 가속기(400)는 PE 어레이(410), IO 버퍼 블록(420), 가중치 버퍼 블록(430), 게이트 버퍼 블록(440), 활성화 함수 처리부(450), 추가 함수 처리부(460), 상태 버퍼 블록(470), PE 컨트롤러(480) 및 데이터 전송부(490)를 포함할 수 있다.
PE 어레이(410)는 복수의 PE를 포함할 수 있다.
IO 버퍼 블록(420)은 PE 어레이(410)에 제1 방향으로 제1 및 제2 입력 데이터를 전달할 수 있다.
또한, IO 버퍼 블록(420)은 PE 어레이(410)로부터 전달되는 제1 입력 데이터와 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 제2 입력 데이터와 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 수신하여, 게이트 버퍼 블록(440)으로 전달할 수 있다.
만약, PE 어레이(410)로부터 게이트 버퍼 블록(440)으로 직접 데이터가 전달되는 경우, 상술한 IO 버퍼 블록(420)의 게이트 버퍼 블록(440)으로의 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값의 전송은 생략될 수 있다.
가중치 버퍼 블록(430)은 PE 어레이(410)에 제2 방향으로 제3 및 제4 입력 데이터를 전달할 수 있다.
일 예로, PE 컨트롤러(480)는 호스트 장치(100)로부터 전달된 연산 방식에 따라 가속기(400)의 전체적인 동작을 제어하기 위한 구성일 수 있다.
다른 예로, 데이터 저장 장치(200)측에서 연산 방식을 결정하는 경우, PE 컨트롤러(480)는 배치 사이즈를 배치 기준값과 비교한 결과값, 시퀀스 사이즈를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(410)로의 제1 및 제2 입력 데이터의 입력 방식을 포함한 연산 방식을 제1 연산 방식 및 제2 연산 방식 중 어느 하나로 결정하는 것을 비롯하여 가속기(400)의 전체적인 동작을 제어하기 위한 구성일 수 있다.
PE 컨트롤러(480)는 연산 방식이 제1 연산 방식으로 결정된 경우, 배치 사이즈에 대응되는 수의 제1 입력 데이터 또는 제2 입력 데이터가 제1 방향으로 PE 어레이(410)에 입력되도록 제어할 수 있다.
PE 컨트롤러(480)는 연산 방식이 제2 연산 방식으로 결정된 경우, 시퀀스 사이즈에 대응되는 수의 제1 입력 데이터가 제1 방향으로 PE 어레이(410)에 입력되도록 제어할 수 있다.
게이트 버퍼 블록(440)은 PE 어레이(410) 로부터 전달되는 제1 연산 결과값, 제2 연산 결과값 및 바이어스(bias) 연산 결과값인 제3 연산 결과값 간의 덧셈 처리를 수행하고, 관련 데이터를 저장할 수 있다.
한편, 후술하는 바와 같이, 게이트 버퍼 블록(440)의 기능은 상태 버퍼 블록(470)에서 구현하는 것 역시 가능할 수 있다. 이에 한정되지 않고, 게이트 버퍼 블록(440)의 기능은 IO 버퍼 블록(420)에서 구현하는 것 역시도 가능하다 할 것이다.
활성화 함수 처리부(450)는 게이트 버퍼 블록(440)으로부터 전달되는 연산 처리된 데이터에 활성화 함수(Activation Function) 처리를 수행하기 위한 구성일 수 있다.
추가 함수 처리부(460)는 활성화 함수 처리된 데이터에 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀의 상태값과 현재 셀의 출력값을 획득하기 위한 구성일 수 있다.
상태 버퍼 블록(470)은 활성화 함수 처리부(450)로부터 전달되는 현재 셀의 상태값과 현재 셀의 출력값을 저장 및 제공하기 위한 구성일 수 있다.
데이터 전송부(490)는 IO 버퍼 블록(420) 및 상태 버퍼 블록(470)과 각각 연결되어, 호스트 장치(100)로부터 전달되는 데이터를 IO 버퍼 블록(420)으로 전달하거나, 또는 상태 버퍼 블록(420)으로부터 전달되는 데이터를 호스트 장치(100)로 전달할 수 있다.
도 13은 본 발명의 실시 예에 따른 가속 장치의 동작 방법을 설명하기 위한 흐름도이다.
가속 장치(40)는 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size)를 수신할 수 있다(S101). 이때, 배치 사이즈 및 시퀀스 사이즈는 호스트 장치(100)로부터 전달될 수 있다.
다음, 가속 장치(40)는 배치 사이즈를 배치 기준값과 비교한 결과값, 시퀀스 사이즈를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(410)로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 제1 연산 방식 및 제2 연산 방식 중 어느 하나로 결정할 수 있다.
이때, 제1 연산 방식은 제1 및 제2 입력 데이터를 배치 사이즈에 따라 PE 어레이(410)로 입력하는 연산 방식을 의미하고, 제2 연산 방식은 제1 입력 데이터를 시퀀스 사이즈에 따라 PE 어레이(410)로 입력하는 연산 방식을 의미할 수 있다.
구체적으로, 가속 장치(40)는 배치 사이즈가 배치 기준값 미만인지 여부를 확인할 수 있다(S103). 이때, 배치 기준값은 PE 어레이(410) 구조에서 허용 가능한 배치 사이즈 이하로 운용자에 의해서 임의로 설정될 수 있다.
단계 S103의 확인 결과 배치 사이즈가 배치 기준값 미만인 경우, 가속 장치(40)는 시퀀스 사이즈가 시퀀스 기준값 보다 큰지 여부를 확인할 수 있다(S105). 이때, 시퀀스 기준값은 PE 어레이(410) 구조에서 허용 가능한 시퀀스 사이즈 이하로 운용자에 의해서 임의로 설정될 수 있다.
단계 S105의 확인 결과, 시퀀스 사이즈가 시퀀스 기준값 보다 큰 경우, 가속 장치(40)는 연산 방식을 제2 연산 방식으로 결정하여, 시퀀스 사이즈에 대응되는 수의 제1 입력 데이터를 PE 어레이(410)의 제1 방향으로 입력할 수 있다(S107). 이때, 가속 장치(40)는 제2 입력 데이터 역시 제1 방향으로 PE 어레이(410)에 입력시키되, 시퀀스 사이즈에 대응되는 수가 아닌 배치 사이즈에 대응되는 수로 제2 입력 데이터를 입력시킬 수 있다.
다음, 가속 장치(40)는 제1 입력 데이터 및 제2 입력 데이터와 각각에 대한 가중치를 이용한 연산 처리 수행 후, 현재 셀의 상태값과 현재 셀의 출력값을 획득할 수 있다(S109).
한편, 단계 S103의 확인 결과, 배치 사이즈가 배치 기준값 이상인 경우, 가속 장치(40)는 연산 방식을 제1 연산 방식으로 결정하여, 배치 사이즈에 대응되는 수의 제1 입력 데이터 또는 제2 입력 데이터를 PE 어레이(410)의 제1 방향으로 입력할 수 있다(S111).
이후, 가속 장치(40)는 단계 S109를 수행할 수 있다.
도 14는 도 13의 일부를 상세하게 설명하기 위한 흐름도로서, 단계 S109를 보다 상세하게 설명하기로 한다.
가속 장치(40)는 제1 입력 데이터와 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산을 수행하여 제1 연산 결과값을 획득할 수 있다(S201).
가속 장치(40)는 제2 입력 데이터와 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산을 수행하여 제2 연산 결과값을 획득할 수 있다(S203).
가속 장치(40)는 제1 연산 결과값, 제2 연산 결과값 및 바이어스(bias) 연산 결과값인 제3 연산 결과값 간의 덧셈 처리를 수행할 수 있다(S205).
본 실시예에서는 제1 입력 데이터, 제2 입력 데이터 및 바이어스 값에 대한 연산을 각각 별도로 수행하여, 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값을 도출한 후, 이들 간의 덧셈 등 추가 연산을 수행하기 때문에, PE 어레이(410)에서의 병렬 연산이 가능하여 가속 장치(40)에서의 연산 속도를 향상시킬 수 있다는 효과를 기대할 수 있다.
다음, 가속 장치(40)는 덧셈 처리된 연산 결과값에 활성화 함수(Activation Function) 처리를 수행할 수 있다(S207).
다음, 가속 장치(40)는 활성화 함수 처리된 데이터에 상기 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀의 상태값(도 3의 ct)과 현재 셀의 출력값(도 3의 ht)을 획득할 수 있다(S209).
도 15는 본 발명의 실시 예에 따른 가속 장치의 구성의 다른 실시예를 나타내는 도면이고, 도 16은 도 15의 상태 버퍼 블록의 구성을 상세하게 나타내는 도면이다.
이하에서는, 상태 버퍼 블록(470)에서 제1 연산 결과값 내지 제3 연산 결과값에 대한 덧셈 처리 및 데이터 저장을 수행하는 경우를 예로 들어 설명하기로 한다.
도 15를 참고하면, 가속 장치(40)는 배치 사이즈 및 시퀀스 사이즈 중 적어도 하나 이상을 기초로 연산 방식을 결정하고, 결정된 연산 방식에 따라 PE 어레이(Processing Element Array)(410)로의 제1 및 제2 입력 데이터의 입력 경로를 제어하여 연산을 처리하는 가속기(400)를 포함할 수 있다.
이때, 연산 방식은 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 PE 어레이(410)로 입력하는 제1 연산 방식과 제1 입력 데이터를 시퀀스 사이즈에 따라 PE 어레이(410)로 입력하는 제2 연산 방식을 포함할 수 있다.
가속기(400)는 PE 어레이(410), IO 버퍼 블록(420), 가중치 버퍼 블록(430), 활성화 함수 처리부(450), 추가 함수 처리부(460), 상태 버퍼 블록(470), PE 컨트롤러(480) 및 데이터 전송부(490)를 포함할 수 있다.
PE 어레이(410)는 복수의 PE를 포함할 수 있다.
IO 버퍼 블록(420)은 PE 어레이(410)에 제1 방향으로 제1 및 제2 입력 데이터를 전달할 수 있다.
또한, IO 버퍼 블록(420)은 PE 어레이(410)로부터 전달되는 제1 입력 데이터와 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 제2 입력 데이터와 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 수신하여 게이트 버퍼 블록(440)으로 전달할 수 있다.
만약, PE 어레이(410)로부터 게이트 버퍼 블록(440)으로 직접 데이터가 전달되는 경우, 상술한 IO 버퍼 블록(420)의 게이트 버퍼 블록(440)으로의 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값의 전송은 생략될 수 있다.
가중치 버퍼 블록(430)은 PE 어레이(410)에 제2 방향으로 제3 및 제4 입력 데이터를 전달할 수 있다.
PE 컨트롤러(480)는 배치 사이즈를 배치 기준값과 비교한 결과값, 시퀀스 사이즈를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(410)로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 제1 연산 방식 및 제2 연산 방식 중 어느 하나로 결정하는 것을 비롯하여 전체적인 동작을 제어하기 위한 구성일 수 있다.
이때, 제1 연산 방식은 제1 및 제2 입력 데이터를 배치 사이즈에 따라 PE 어레이(410)로 입력하는 연산 방식이고, 제2 연산 방식은 제1 입력 데이터를 시퀀스 사이즈에 따라 PE 어레이(410)로 입력하는 연산 방식일 수 있다.
PE 컨트롤러(480)는 연산 방식이 제1 연산 방식으로 결정된 경우, 배치 사이즈에 대응되는 수의 제1 입력 데이터 또는 제2 입력 데이터가 제1 방향(도 15의 ①)으로 PE 어레이(410)에 입력되도록 제어할 수 있다.
PE 컨트롤러(480)는 연산 방식이 제2 연산 방식으로 결정된 경우, 시퀀스 사이즈에 대응되는 수의 제1 입력 데이터가 제1 방향으로 PE 어레이(410)에 입력되도록 제어할 수 있다.
상태 버퍼 블록(470)은 PE 어레이(410)로부터 전달되는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값 간의 덧셈 처리를 수행하고 관련 데이터를 저장할 수 있다.
이때, 상태 버퍼 블록(470)은 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값을 IO 버퍼 블록(420) 또는 활성화 함수 처리부(460)를 통해 수신할 수 있다. 이러한 경우, IO 버퍼 블록(420) 또는 활성화 함수 처리부(460)는 PE 어레이(410)로부터 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값을 수신하여, 상태 버퍼 블록(470)으로 전달할 수 있다.
또한, 상태 버퍼 블록(470)은 활성화 함수 처리부(460)로부터 전달되는 데이터(예를 들어, 현재 셀의 상태값(도 3의 ct)과 현재 셀의 출력값(도 3의 ht))을 저장 및 제공할 수 있다. 도 16을 참고하면, 상태 버퍼 블록(470)은 다중화기(mux)(473), 게이트 컨트롤러(gate controller)(474), 덧셈기(475), 게이트 버퍼(gate buffer)(476) 및 게이트 버퍼 컨트롤러(gate buffer controller)(477)를 포함할 수 있다.
다중화기(473)는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값을 비롯한 데이터의 입력을 처리하기 위한 구성일 수 있다.
구체적으로, 다중화기(473)는 PE 어레이(410)로부터 전달되는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값 중 적어도 하나 이상을 덧셈기(475)에 선택적으로 입력시키기 위한 제1 다중화기(471) 및 게이트 버퍼(476)로부터 피드백되는 데이터와 0을 덧셈기(475)에 선택적으로 입력시키기 위한 제2 다중화기(472)를 포함할 수 있다.
게이트 컨트롤러(474)는 데이터의 입력을 제어하기 위한 구성일 수 있다. 즉, 게이트 컨트롤러(474)는 다중화기(473)에서의 제1 내지 제3 연산 결과값을 비롯한 데이터의 입력을 제어하는 것이다.
게이트 버퍼(476)는 PE 어레이(410)로부터 전달되는 제1 연산 결과값, 제2 연산 결과값, 제3 연산 결과값 및 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값 간의 덧셈 처리 결과 중 적어도 하나 이상을 저장하기 위한 구성일 수 있다.
또한, 게이트 버퍼(476)는 현재 셀의 상태값(도 3의 ct)과 현재 셀의 출력값(도 3의 ht)도 저장할 수 있다.
덧셈기(475)는 제1 연산 결과값, 제2 연산 결과값 및 제3 연산 결과값 간의 덧셈을 처리할 수 있다.
게이트 버퍼 컨트롤러(477)는 상태 버퍼 블록(470)의 전체 동작을 제어하기 위한 구성일 수 있다.
게이트 버퍼 컨트롤러(477)는 다중화기(473)를 통해 입력되는 제1 및 제2 연산 결과값을 해당 시퀀스에 따라 게이트 버퍼(476)에 구분하여 저장할 수 있다.
도시하지 않았지만, 제3 연산 결과값은 제1 연산 결과값 및 제2 연산 결과값과는 별도를 다중화기(473)를 통해 입력되는 것도 가능하지만, 제1 연산 결과값과 함께 다중화기(473)를 통해 입력되는 것 역시 가능하다 할 것이다. 이때, 제3 연산 결과값 역시 게이트 버퍼(476)에 구분되어 저장될 수 있다.
상술한 다중화기(473), 게이트 컨트롤러(474), 덧셈기(475) 및 게이트 버퍼(476)의 세트는 적어도 하나 이상 형성되되, PE 어레이(410)의 제2 방향(도 15의 ②)의 PE의 수에 대응되게 형성될 수 있다.
또한, 상태 버퍼 블록(470)은 활성화 함수 처리부(450)로부터 전달되는 현재 셀의 상태값과 현재 셀의 출력값을 저장 및 제공할 수 있다.
활성화 함수 처리부(450)는 상태 버퍼 블록(470)으로부터 전달되는 연산 처리된 데이터에 활성화 함수(Activation Function) 처리를 수행하기 위한 구성일 수 있다.
추가 함수 처리부(460)는 활성화 함수 처리된 데이터에 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀의 상태값과 현재 셀의 출력값을 획득하기 위한 구성일 수 있다.
데이터 전송부(490)는 IO 버퍼 블록(420) 및 상태 버퍼 블록(470)과 각각 연결되어, 호스트 장치(100)로부터 전달되는 데이터를 IO 버퍼 블록(420)으로 전달하거나, 또는 상태 버퍼 블록(470)으로부터 전달되는 데이터를 호스트 장치(100)로 전달할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
20: 데이터 처리 시스템 40: 가속 장치
100: 호스트 장치 200: 데이터 저장 장치
400: 가속기 410: PE 어레이
420: IO 버퍼 블록 430: 가중치 버퍼 블록
440: 게이트 버퍼 블록 450: 활성화 함수 처리부
460: 추가 함수 처리부 470: 상태 버퍼 블록
480: PE 컨트롤러 490: 데이터 전송부

Claims (32)

  1. 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size) 중 적어도 하나 이상을 기초로 연산 방식을 결정하고, 결정된 연산 방식에 따라 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 경로를 제어하여 연산을 처리하는 가속기를 포함하고,
    상기 연산 방식은 상기 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 상기 PE 어레이로 입력하는 제1 연산 방식과 상기 제1 입력 데이터를 상기 시퀀스 사이즈에 따라 상기 PE 어레이로 입력하는 제2 연산 방식을 포함하는 가속 장치.
  2. 제1항에 있어서,
    상기 가속기는,
    복수의 PE를 포함하여, 상기 제1 입력 데이터와 상기 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 상기 제2 입력 데이터와 상기 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 출력하는 PE 어레이;
    상기 PE 어레이에 제1 방향으로 상기 제1 및 제2 입력 데이터를 전달하는 IO 버퍼 블록;
    상기 PE 어레이에 제2 방향으로 상기 제3 및 제4 입력 데이터를 전달하는 가중치 버퍼 블록; 및
    상기 배치 사이즈를 배치 기준값과 비교한 결과값, 상기 시퀀스 사이즈를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 상기 PE 어레이로의 상기 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 상기 제1 연산 방식 및 상기 제2 연산 방식 중 어느 하나로 결정하는 것을 비롯하여 상기 가속기의 전체적인 동작을 제어하기 위한 PE 컨트롤러,
    를 포함하는 가속 장치.
  3. 제2항에 있어서,
    상기 PE 컨트롤러는,
    상기 연산 방식이 상기 제1 연산 방식으로 결정된 경우, 상기 배치 사이즈에 대응되는 수의 상기 제1 입력 데이터 또는 제2 입력 데이터가 상기 제1 방향으로 상기 PE 어레이에 입력되도록 제어하고,
    상기 연산 방식이 상기 제2 연산 방식으로 결정된 경우, 상기 시퀀스 사이즈에 대응되는 수의 상기 제1 입력 데이터가 상기 제1 방향으로 상기 PE 어레이에 입력되도록 제어하는 가속 장치.
  4. 제2항에 있어서,
    상기 가속기는,
    상기 PE 어레이로부터 전달되는 상기 제1 연산 결과값, 상기 제2 연산 결과값 및 상기 제3 연산 결과값 간의 덧셈 처리를 수행하고, 관련 데이터를 저장하는 게이트 버퍼 블록,
    을 더 포함하는 가속 장치.
  5. 제4항에 있어서,
    상기 게이트 버퍼 블록은,
    상기 제1 연산 결과값, 상기 제2 연산 결과값 및 제3 연산 결과값을 비롯한 데이터의 입력을 처리하기 위한 다중화기;
    상기 데이터의 입력을 제어하기 위한 게이트 컨트롤러;
    상기 PE 어레이로부터 전달되는 상기 제1 연산 결과값, 상기 제2 연산 결과값, 상기 제3 연산 결과값 및 상기 제1 연산 결과값, 상기 제2 연산 결과값 및 상기 제3 연산 결과값 간의 덧셈 처리 결과 중 적어도 하나 이상을 저장하기 위한 게이트 버퍼;
    상기 제1 연산 결과값, 상기 제2 연산 결과값 및 상기 제3 연산 결과값 간의 덧셈을 처리하는 덧셈기; 및
    상기 게이트 버퍼 블록의 전체 동작을 제어하기 위한 게이트 버퍼 컨트롤러,
    를 포함하는 가속 장치.
  6. 제5항에 있어서,
    상기 다중화기는,
    상기 PE 어레이로부터 전달되는 상기 제1 연산 결과값, 상기 제2 연산 결과값 및 제3 연산 결과값 중 적어도 하나 이상을 상기 덧셈기에 선택적으로 입력시키기 위한 제1 다중화기; 및
    상기 게이트 버퍼로부터 피드백되는 데이터와 0을 상기 덧셈기에 선택적으로 입력시키기 위한 제2 다중화기,
    를 포함하는 가속 장치.
  7. 제5항에 있어서,
    상기 다중화기, 상기 게이트 컨트롤러, 상기 덧셈기 및 상기 게이트 버퍼의 세트는 적어도 하나 이상 형성되되, 상기 PE 어레이의 제2 방향의 PE의 수에 대응되게 형성되는 가속 장치.
  8. 제5항에 있어서,
    상기 게이트 버퍼 컨트롤러는,
    상기 다중화기를 통해 입력되는 상기 제1 및 제2 연산 결과값을 해당 시퀀스에 따라 상기 게이트 버퍼에 구분하여 저장하는 가속 장치.
  9. 제4항에 있어서,
    상기 가속기는,
    상기 게이트 버퍼 블록으로부터 전달되는 연산 처리된 데이터에 활성화 함수(Activation Function) 처리를 수행하기 위한 활성화 함수 처리부; 및
    상기 활성화 함수 처리된 데이터에 상기 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀 상태(cell state)값과 현재 셀의 출력값을 획득하기 위한 추가 함수 처리부,
    를 더 포함하는 가속 장치.
  10. 제9항에 있어서,
    상기 가속기는,
    상기 활성화 함수 처리부로부터 전달되는 상기 현재 셀의 상태값과 상기 현재 셀의 출력값을 저장 및 제공하기 위한 상태 버퍼 블록; 및
    상기 IO 버퍼 블록 및 상기 상태 버퍼 블록과 각각 연결되어, 호스트 장치로부터 전달되는 데이터를 상기 IO 버퍼 블록으로 전달하거나, 또는 상기 상태 버퍼 블록으로부터 전달되는 데이터를 상기 호스트 장치로 전달하는 데이터 전송부,
    를 더 포함하는 가속 장치.
  11. 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size) 중 적어도 하나 이상을 기초로 연산 방식을 결정하고, 결정된 연산 방식에 따라 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 경로를 제어하여 연산을 처리하는 가속기를 포함하고,
    상기 연산 방식은 상기 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 상기 PE 어레이로 입력하는 제1 연산 방식과 상기 제1 입력 데이터를 상기 시퀀스 사이즈에 따라 상기 PE 어레이로 입력하는 제2 연산 방식을 포함하는 데이터 저장 장치.
  12. 제11항에 있어서,
    상기 가속기는,
    복수의 PE를 포함하여, 상기 제1 입력 데이터와 상기 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 상기 제2 입력 데이터와 상기 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 출력하는 PE 어레이;
    상기 PE 어레이에 제1 방향으로 상기 제1 및 제2 입력 데이터를 전달하는 IO 버퍼 블록;
    상기 PE 어레이에 제2 방향으로 상기 제3 및 제4 입력 데이터를 전달하는 가중치 버퍼 블록; 및
    상기 배치 사이즈를 배치 기준값과 비교한 결과값, 상기 시퀀스 사이즈를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 상기 PE 어레이로의 상기 제1 및 제2 입력 데이터의 입력 방식을 포함한 연산 방식을 상기 제1 연산 방식 및 상기 제2 연산 방식 중 어느 하나로 결정하는 것을 비롯하여 상기 가속기의 전체적인 동작을 제어하기 위한 PE 컨트롤러;
    를 포함하는 데이터 저장 장치.
  13. 제12항에 있어서,
    상기 PE 컨트롤러는,
    상기 연산 방식이 상기 제1 연산 방식으로 결정된 경우, 상기 배치 사이즈에 대응되는 수의 상기 제1 입력 데이터 또는 제2 입력 데이터가 상기 제1 방향으로 상기 PE 어레이에 입력되도록 제어하고,
    상기 연산 방식이 상기 제2 연산 방식으로 결정된 경우, 상기 시퀀스 사이즈에 대응되는 수의 상기 제1 입력 데이터가 상기 제1 방향으로 상기 PE 어레이에 입력되도록 제어하는 데이터 저장 장치.
  14. 제12항에 있어서,
    상기 가속기는,
    상기 PE 어레이로부터 전달되는 상기 제1 연산 결과값, 상기 제2 연산 결과값 및 바이어스(bias) 연산 결과값인 상기 제3 연산 결과값 간의 덧셈 처리를 수행하고, 관련 데이터를 저장하는 게이트 버퍼 블록,
    을 더 포함하는 데이터 저장 장치.
  15. 제14항에 있어서,
    상기 가속기는,
    상기 게이트 버퍼 블록으로부터 전달되는 연산 처리된 데이터에 활성화 함수(Activation Function) 처리를 수행하기 위한 활성화 함수 처리부; 및
    상기 활성화 함수 처리된 데이터에 상기 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀의 상태값과 현재 셀의 출력값을 획득하기 위한 추가 함수 처리부,
    를 더 포함하는 데이터 저장 장치.
  16. 제15항에 있어서,
    상기 활성화 함수 처리부로부터 전달되는 상기 현재 셀의 상태값과 상기 현재 셀의 출력값을 저장 및 제공하기 위한 상태 버퍼 블록; 및
    상기 IO 버퍼 블록 및 상기 상태 버퍼 블록과 각각 연결되어, 호스트 장치로부터 전달되는 데이터를 상기 IO 버퍼 블록으로 전달하거나, 또는 상기 상태 버퍼 블록으로부터 전달되는 데이터를 상기 호스트 장치로 전달하는 데이터 전송부,
    를 더 포함하는 데이터 저장 장치.
  17. 배치 사이즈(batch size)를 배치 기준값과 비교한 결과값, 시퀀스 사이즈(sequence size)를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 결정하는 호스트 장치; 및
    상기 연산 방식에 따라 상기 PE 어레이로의 제1 및 제2 입력 데이터의 입력 경로를 제어하는 데이터 저장 장치를 포함하고,
    상기 연산 방식은 상기 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 상기 PE 어레이로 입력하는 제1 연산 방식과 상기 제1 입력 데이터를 상기 시퀀스 사이즈에 따라 상기 PE 어레이로 입력하는 제2 연산 방식을 포함하는 데이터 처리 시스템.
  18. 제17항에 있어서,
    상기 데이터 저장 장치는,
    가속기를 포함하고,
    상기 가속기는,
    복수의 PE를 포함하여, 상기 제1 입력 데이터와 상기 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 상기 제2 입력 데이터와 상기 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 출력하는 PE 어레이;
    상기 PE 어레이에 제1 방향으로 상기 제1 및 제2 입력 데이터를 전달하는 IO 버퍼 블록;
    상기 PE 어레이에 제2 방향으로 상기 제3 및 제4 입력 데이터를 전달하는 가중치 버퍼 블록; 및
    상기 호스트 장치로부터 전달된 연산 방식에 따라 상기 가속기의 전체적인 동작을 제어하기 위한 PE 컨트롤러;
    를 포함하는 데이터 처리 시스템.
  19. 제18항에 있어서,
    상기 PE 컨트롤러는,
    상기 연산 방식이 상기 제1 연산 방식으로 결정된 경우, 상기 배치 사이즈에 대응되는 수의 상기 제1 입력 데이터 또는 제2 입력 데이터가 상기 제1 방향으로 상기 PE 어레이에 입력되도록 제어하고,
    상기 연산 방식이 상기 제2 연산 방식으로 결정된 경우, 상기 시퀀스 사이즈에 대응되는 수의 상기 제1 입력 데이터가 상기 제1 방향으로 상기 PE 어레이에 입력되도록 제어하는 데이터 처리 시스템.
  20. 제18항에 있어서,
    상기 가속기는,
    상기 PE 어레이로부터 전달되는 상기 제1 연산 결과값, 상기 제2 연산 결과값 및 바이어스(bias) 연산 결과값인 상기 제3 연산 결과값 간의 덧셈 처리를 수행하고, 관련 데이터를 저장하는 게이트 버퍼 블록,
    을 더 포함하는 데이터 처리 시스템.
  21. 제20항에 있어서,
    상기 가속기는,
    상기 게이트 버퍼 블록으로부터 전달되는 연산 처리된 데이터에 활성화 함수(Activation Function) 처리를 수행하기 위한 활성화 함수 처리부; 및
    상기 활성화 함수 처리된 데이터에 상기 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀의 상태값과 현재 셀의 출력값을 획득하기 위한 추가 함수 처리부,
    를 더 포함하는 데이터 처리 시스템.
  22. 제21항에 있어서,
    상기 활성화 함수 처리부로부터 전달되는 상기 현재 셀의 상태값과 상기 현재 셀의 출력값을 저장 및 제공하기 위한 상태 버퍼 블록; 및
    상기 IO 버퍼 블록 및 상기 상태 버퍼 블록과 각각 연결되어, 호스트 장치로부터 전달되는 데이터를 상기 IO 버퍼 블록으로 전달하거나, 또는 상기 상태 버퍼 블록으로부터 전달되는 데이터를 상기 호스트 장치로 전달하는 데이터 전송부,
    를 더 포함하는 데이터 처리 시스템.
  23. 배치 사이즈(batch size) 및 시퀀스 사이즈(sequence size)를 수신하는 단계;
    상기 배치 사이즈를 배치 기준값과 비교한 결과값, 상기 시퀀스 사이즈를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 제1 연산 방식 및 제2 연산 방식 중 어느 하나로 결정하는 단계;
    상기 연산 방식이 상기 제1 연산 방식으로 결정된 경우, 상기 배치 사이즈에 대응되는 수의 상기 제1 입력 데이터 또는 제2 입력 데이터를 상기 PE 어레이의 제1 방향으로 입력하는 단계;
    상기 연산 방식이 상기 제2 연산 방식으로 결정된 경우, 상기 시퀀스 사이즈에 대응되는 수의 상기 제1 입력 데이터를 상기 PE 어레이의 상기 제1 방향으로 입력하는 단계; 및
    상기 제1 입력 데이터 및 상기 제2 입력 데이터와 각각에 대한 가중치를 이용한 연산 처리 수행 후, 현재 셀의 상태값과 현재 셀의 출력값을 획득하는 단계,
    를 포함하는 가속 장치의 동작 방법.
  24. 제23항에 있어서,
    상기 현재 셀의 상태값과 현재 셀의 출력값을 획득하는 단계는,
    상기 제1 입력 데이터와 상기 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산을 수행하여 제1 연산 결과값을 획득하는 단계;
    상기 제2 입력 데이터와 상기 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산을 수행하여 제2 연산 결과값을 획득하는 단계;
    상기 제1 연산 결과값, 상기 제2 연산 결과값 및 바이어스(bias) 연산 결과값인 제3 연산 결과값 간의 덧셈 처리를 수행하는 단계;
    덧셈 처리된 연산 결과값에 활성화 함수(Activation Function) 처리를 수행하는 단계; 및
    상기 활성화 함수 처리된 데이터에 상기 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀의 상태값과 현재 셀의 출력값을 획득하는 단계,
    를 포함하는 가속 장치의 동작 방법.
  25. 복수의 PE를 포함하여, 제1 입력 데이터와 상기 제1 입력 데이터의 가중치인 제3 입력 데이터 간의 연산 결과인 제1 연산 결과값, 제2 입력 데이터와 상기 제2 입력 데이터의 가중치인 제4 입력 데이터 간의 연산 결과인 제2 연산 결과값 및 제3 연산 결과값을 출력하는 PE 어레이;
    상기 PE 어레이에 제1 방향으로 제1 및 제2 입력 데이터를 전달하는 IO 버퍼 블록;
    상기 PE 어레이에 제2 방향으로 상기 제3 및 제4 입력 데이터를 전달하는 가중치 버퍼 블록; 및
    배치 사이즈(batch size)를 배치 기준값과 비교한 결과값, 시퀀스 사이즈(sequence size)를 시퀀스 기준값과 비교한 결과값 및 이들의 조합 중 적어도 하나 이상을 기초로 PE 어레이(Processing Element Array)로의 제1 및 제2 입력 데이터의 입력 방식을 비롯한 연산 방식을 제1 연산 방식 및 제2 연산 방식 중 어느 하나로 결정하는 것을 비롯하여 전체적인 동작을 제어하기 위한 PE 컨트롤러를 포함하고,
    상기 제1 연산 방식은 상기 제1 및 제2 입력 데이터를 상기 배치 사이즈에 따라 상기 PE 어레이로 입력하는 연산 방식이고, 상기 제2 연산 방식은 상기 제1 입력 데이터를 상기 시퀀스 사이즈에 따라 상기 PE 어레이로 입력하는 연산 방식인 가속 장치.
  26. 제25항에 있어서,
    상기 PE 컨트롤러는,
    상기 연산 방식이 상기 제1 연산 방식으로 결정된 경우, 상기 배치 사이즈에 대응되는 수의 상기 제1 입력 데이터 또는 제2 입력 데이터가 상기 제1 방향으로 상기 PE 어레이에 입력되도록 제어하고,
    상기 연산 방식이 상기 제2 연산 방식으로 결정된 경우, 상기 시퀀스 사이즈에 대응되는 수의 상기 제1 입력 데이터가 상기 제1 방향으로 상기 PE 어레이에 입력되도록 제어하는 가속 장치.
  27. 제25항에 있어서,
    상기 PE 어레이로부터 전달되는 상기 제1 연산 결과값, 상기 제2 연산 결과값 및 상기 제3 연산 결과값 간의 덧셈 처리를 수행하고 관련 데이터를 저장하며, 활성화 함수 처리부로부터 전달되는 데이터를 저장하는 상태 버퍼 블록;
    상기 상태 버퍼 블록으로부터 전달되는 연산 처리된 데이터에 활성화 함수(Activation Function) 처리를 수행하기 위한 활성화 함수 처리부; 및
    상기 활성화 함수 처리된 데이터에 상기 활성화 함수 처리 이외에 추가적인 연산을 수행하여 현재 셀의 상태값과 현재 셀의 출력값을 획득하기 위한 추가 함수 처리부,
    를 더 포함하는 가속 장치.
  28. 제27항에 있어서,
    상기 상태 버퍼 블록은,
    상기 활성화 함수 처리부로부터 전달되는 상기 현재 셀의 상태값과 상기 현재 셀의 출력값을 저장 및 제공하고,
    상기 IO 버퍼 블록 및 상기 상태 버퍼 블록과 각각 연결되어, 호스트 장치로부터 전달되는 데이터를 상기 IO 버퍼 블록으로 전달하거나, 또는 상기 상태 버퍼 블록으로부터 전달되는 데이터를 상기 호스트 장치로 전달하는 데이터 전송부,
    를 더 포함하는 가속 장치.
  29. 제28항에 있어서,
    상기 상태 버퍼 블록은,
    상기 제1 연산 결과값, 상기 제2 연산 결과값 및 제3 연산 결과값을 비롯한 데이터의 입력을 처리하기 위한 다중화기;
    상기 데이터의 입력을 제어하기 위한 게이트 컨트롤러;
    상기 PE 어레이로부터 전달되는 상기 제1 연산 결과값, 상기 제2 연산 결과값, 상기 제3 연산 결과값 및 상기 제1 연산 결과값, 상기 제2 연산 결과값 및 상기 제3 연산 결과값 간의 덧셈 처리 결과 중 적어도 하나 이상을 저장하기 위한 게이트 버퍼;
    상기 제1 연산 결과값, 상기 제2 연산 결과값 및 상기 제3 연산 결과값 간의 덧셈을 처리하는 덧셈기; 및
    상기 상태 버퍼 블록의 전체 동작을 제어하기 위한 게이트 버퍼 컨트롤러,
    를 포함하는 가속 장치.
  30. 제29항에 있어서,
    상기 다중화기는,
    상기 PE 어레이로부터 전달되는 상기 제1 연산 결과값, 상기 제2 연산 결과값 및 제3 연산 결과값 중 적어도 하나 이상을 상기 덧셈기에 선택적으로 입력시키기 위한 제1 다중화기; 및
    상기 게이트 버퍼로부터 피드백되는 데이터와 0을 상기 덧셈기에 선택적으로 입력시키기 위한 제2 다중화기,
    를 포함하는 가속 장치.
  31. 제29항에 있어서,
    상기 다중화기, 상기 게이트 컨트롤러, 상기 덧셈기 및 상기 게이트 버퍼의 세트는 적어도 하나 이상 형성되되, 상기 PE 어레이의 제2 방향의 PE의 수에 대응되게 형성되는 가속 장치.
  32. 제29항에 있어서,
    상기 게이트 버퍼 컨트롤러는,
    상기 다중화기를 통해 입력되는 상기 제1 및 제2 연산 결과값을 해당 시퀀스에 따라 상기 게이트 버퍼에 구분하여 저장하는 가속 장치.
KR1020200108437A 2020-08-27 2020-08-27 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법 KR20220027500A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200108437A KR20220027500A (ko) 2020-08-27 2020-08-27 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법
US17/161,658 US20220067494A1 (en) 2020-08-27 2021-01-28 Accelerating device, data storing device, data processing system and operating method of accelerating device
TW110119254A TW202209190A (zh) 2020-08-27 2021-05-27 加速裝置、資料處理系統以及加速裝置的操作方法
CN202110586044.7A CN114118351A (zh) 2020-08-27 2021-05-27 加速装置、数据处理系统以及加速装置的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200108437A KR20220027500A (ko) 2020-08-27 2020-08-27 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법

Publications (1)

Publication Number Publication Date
KR20220027500A true KR20220027500A (ko) 2022-03-08

Family

ID=80357044

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200108437A KR20220027500A (ko) 2020-08-27 2020-08-27 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법

Country Status (4)

Country Link
US (1) US20220067494A1 (ko)
KR (1) KR20220027500A (ko)
CN (1) CN114118351A (ko)
TW (1) TW202209190A (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US10019668B1 (en) * 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
US10459876B2 (en) * 2018-01-31 2019-10-29 Amazon Technologies, Inc. Performing concurrent operations in a processing element
US11562213B2 (en) * 2018-04-17 2023-01-24 Intel Corporation Methods and arrangements to manage memory in cascaded neural networks

Also Published As

Publication number Publication date
US20220067494A1 (en) 2022-03-03
TW202209190A (zh) 2022-03-01
CN114118351A (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
US11307864B2 (en) Data processing apparatus and method
CN109522052B (zh) 一种计算装置及板卡
CN109543832B (zh) 一种计算装置及板卡
WO2019127838A1 (zh) 卷积神经网络实现方法及装置、终端、存储介质
US20230297846A1 (en) Neural network compression method, apparatus and device, and storage medium
CN112199036B (zh) 数据存储装置、数据处理系统及其加速装置
WO2020133317A1 (zh) 计算资源分配技术及神经网络系统
WO2020147142A1 (zh) 一种深度学习模型的训练方法、系统
WO2022267036A1 (zh) 神经网络模型训练方法和装置、数据处理方法和装置
WO2020133463A1 (zh) 神经网络系统及数据处理技术
US20200226458A1 (en) Optimizing artificial neural network computations based on automatic determination of a batch size
JP7256811B2 (ja) アドバンストインタコネクト技術を利用してaiトレーニングを加速するための方法及びシステム
WO2020224035A1 (zh) 基于离散优化的数字集成电路布局方法及终端设备
Liu et al. Density-based penalty parameter optimization on C-SVM
CN111079908A (zh) 片上网络数据处理方法、存储介质、计算机设备和装置
KR20220027500A (ko) 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법
WO2023124371A1 (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
WO2023072226A1 (zh) 一种多级查找表电路、函数求解方法及相关设备
US20210312325A1 (en) Mixed-precision neural processing unit (npu) using spatial fusion with load balancing
US11307866B2 (en) Data processing apparatus and method
US20220075597A1 (en) Multi-die dot-product engine to provision large scale machine learning inference applications
US11086634B2 (en) Data processing apparatus and method
CN111078625B (zh) 片上网络处理系统和片上网络数据处理方法
CN111198714B (zh) 重训练方法及相关产品
CN111382848A (zh) 一种计算装置及相关产品

Legal Events

Date Code Title Description
A201 Request for examination