KR20200011362A - 신경망 가속 장치 및 그것의 동작 방법 - Google Patents

신경망 가속 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20200011362A
KR20200011362A KR1020190085326A KR20190085326A KR20200011362A KR 20200011362 A KR20200011362 A KR 20200011362A KR 1020190085326 A KR1020190085326 A KR 1020190085326A KR 20190085326 A KR20190085326 A KR 20190085326A KR 20200011362 A KR20200011362 A KR 20200011362A
Authority
KR
South Korea
Prior art keywords
input signal
multiplication
result value
neural network
precision
Prior art date
Application number
KR1020190085326A
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 US16/519,643 priority Critical patent/US20200034699A1/en
Priority to CN201910671245.XA priority patent/CN110780844A/zh
Publication of KR20200011362A publication Critical patent/KR20200011362A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • 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

Abstract

본 발명의 실시 예에 따른 신경망 가속 장치 및 그것의 동작 방법은 입력신호의 정밀도에 따라 연산 모드를 결정하고 결정된 연산 모드에 따라 입력신호의 정밀도를 변환하거나 유지하여 연산기로 전달하는 입력 처리기; 및 입력신호를 기초로 곱셈, 입력신호의 복수의 분할그룹을 재배치하는 바운더리 마이그레이션(Boundary Migration) 및 바운더리 마이그레이션된 입력신호의 덧셈 중 적어도 하나 이상의 규칙을 연산 모드에 따라 선택하여 연산을 수행하는 연산기를 포함한다.

Description

신경망 가속 장치 및 그것의 동작 방법{accelerating Appratus of neural network and operating method thereof}
본 발명은 신경망 가속 장치 및 그것의 동작 방법에 관한 것이다.
AI(Artificial Intelligence) 가속기는 소프트웨어로 처리하던 MLP(Multi-Layer Perceptron), CNN(Convolutional Neural Network) 등의 어플리케이션을 하드웨어로 구현함으로써 호스트의 연산 및 리소스 부담을 덜어주면서 관련 연산의 성능은 극대화할 수 있는 어플리케이션일 수 있다.
상술한 AI 가속기는 주로 MAC(Multiplication and Accumulation) 유닛을 활용한 콘볼루션(convolution) 연산을 수행하게 되는데, 최근 MAC 유닛의 혼합 정밀도(Mixed-precision) 연산 및 관련 연산의 긍정적인 효과에 대한 내용이 대두되면서 믹스된 정밀도 모드를 지원하는 어플리케이션이 증가하고 있다.
예를 들어, 상대적으로 높은 정밀(high-precision) 연산을 지원하는 곱셈기(multiplier)(예를 들어, INT 16 multiplier)로 낮은 정밀(low-precision) 연산(예를 들어 INT 8)을 지원하는 경우, 일부 비트(bit)만 연산에 사용되기 때문에 리소스(resource) 낭비가 발생할 수 있다. 반대로 INT 8 곱셈기 만으로 INT 16을 연산하기에는 추가 레이턴시(latency)가 발생하기 때문에 동일 클럭 사이클(clock cycle)로 INT 16 연산을 지원하는 것이 다소 어려울 수 있다. 또한, INT 8 및 INT 16 모드를 지원하는 연산기(MAC(Multiplier-Accumulator))를 구현하는 경우, 곱셈(multiplication) 연산의 결과값을 누적하는 어큐뮬레이터(accumulator)의 사이즈(size)도 고려해야 하는데, INT 8에서 INT 16으로 피승수(multiplicand)의 워드 길이(word length)가 증가하는 경우, 곱셈기(multiplier)와 덧셈기(adder)의 비트 너비(bit-width) 증가치가 다르기 때문에 관련 로직을 효율적으로 사용하지 못할 수 있다.
본 발명의 실시 예는 연산 능력이 향상된 신경망 가속 장치 및 그것의 동작 방법을 제공한다.
본 발명의 실시 예에 따른 신경망 가속 장치는, 입력신호의 정밀도에 따라 연산 모드를 결정하고 결정된 상기 연산 모드에 따라 상기 입력신호의 정밀도를 변환하거나 유지하여 연산기로 전달하는 입력 처리기; 및 상기 입력신호를 기초로 곱셈, 상기 입력신호의 복수의 분할그룹을 재배치하는 바운더리 마이그레이션(Boundary Migration) 및 상기 바운더리 마이그레이션된 상기 입력신호의 덧셈 중 적어도 하나 이상의 규칙을 상기 연산 모드에 따라 선택하여 연산을 수행하는 연산기를 포함할 수 있다.
본 발명의 실시 예에 따른 신경망 가속 장치의 동작 방법은, 신경망 가속 장치가 입력신호의 정밀도에 따라 연산 모드를 결정하는 단계; 상기 결정된 연산 모드에 따라 상기 입력신호의 정밀도를 변환하거나 유지하는 단계; 및 상기 입력신호를 기초로 곱셈, 상기 입력신호의 분할그룹을 재배치하는 바운더리 마이그레이션(Boundary Migration) 및 상기 바운더리 마이그레이션된 상기 입력신호의 덧셈 중 적어도 하나 이상의 규칙을 상기 연산 모드에 따라 선택하여 연산을 수행하는 단계;를 포함할 수 있다.
본 실시 예들에 따르면, 격자 연산(Lattice operation) 및 리소스 공유(resource sharing) 방식을 활용하여 다양한 정밀도(precision)에 대한 연산 처리를 수행할 수 있기 때문에, 보다 효율적으로 연산을 수행할 수 있고, 이로 인해 연산 처리율(throughput)을 향상시킬 수 있다는 효과를 기대할 수 있다.
도 1은 본 발명의 실시 예에 따른 신경망 가속 장치의 구성을 나타낸 도면이다.
도 2는 본 발명의 일 실시 예에 따른 연산기의 구성을 상세하게 나타내는 도면이다.
도 3 및 도 4는 본 발명의 일 실시 예에 따른 격자 곱셈 방법을 설명하기 위한 예시도이다.
도 5 내지 도 9는 INT 4 격자를 사용한 INT 8의 격자 곱셈 방법을 설명하기 위한 예시도이다.
도 10은 본 발명의 다른 실시 예에 따른 연산기의 구성을 나타낸 도면이다.
도 11은 본 발명의 일 실시 예에 따른 신경망 가속 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 12는 도 11의 정밀도를 변환하는 방법을 상세하게 설명하기 위한 흐름도이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 신경망 가속 장치의 구성을 나타낸 도면이다.
도 1을 참조하면, 신경망 가속 장치(200)는 호스트(110)를 지원하기 위한 구성으로서, 호스트(110)로부터 고속 인터페이스(120)를 통해 전달되는 신호에 따라 내부 메모리(160)로부터 전달되는 입력신호를 수신하여 연산을 수행하는 연산 처리기(210)와 연산 처리기(210)로부터 전달되는 연산 결과값을 수신하여 출력하는 출력 피처 생성기(Output Feature Generator)(230)를 포함할 수 있다. 이때, 입력신호는 피처(Feature)와 가중치(Weight)를 포함할 수 있으며, 이에 한정되지 않는다.
이때, 호스트(110)로부터 전달되는 신호는 외부 메모리(130), 메모리 인터페이스(140), 버스 인터페이스(150) 및 내부 메모리(160)를 거쳐 신경망 가속 장치(200)로 전달되거나, 또는 고속 인터페이스(120), 버스 인터페이스(150) 및 내부 메모리(160)를 거쳐 신경망 가속 장치(200)로 전달될 수 있다. 이때, 호스트(110)로부터 전달되는 신호가 외부 메모리(130)에 저장될 때도 고속 인터페이스(120) 및 버스 인터페이스(150)를 거쳐 전달됨은 자명하다 할 것이다.
상술한 외부 메모리(130)는 DRAM(Dynamic Random Access Memory)으로 구현될 수 있고, 내부 메모리(160)는 SRAM(Random Access Memory)으로 구현될 수 있으나, 이에 한정되지 않는다. 또한 고속 인터페이스(120)는 PCIe로 구현될 수 있으나, 이에 한정되지 않는다.
본 발명에서 개시하는 연산 처리기(210)는 다양한 비트의 연산을 지원하는 구성으로서, 정밀도(precision) 별로 연산 모드를 결정하고 결정된 연산 모드에 따라 연산 처리기(210) 내 리소스를 공유하여 연산 규칙을 변경 적용할 수 있다.
예를 들어, 연산 처리기(210)는 어큐뮬레이터 및 플립플롭과 같은 리소스를 공유하여 연산 모드에 따라 다양한 연산 규칙을 적용할 수 있다. 이에 대한 상세한 설명은 후술하기로 한다.
출력 피처 생성기(Output Feature Generator)(230)는 입력신호를 수신하여 연산을 수행한 후 결과값을 연산 처리기(210)로부터 수신하여 결과값에 대한 액티베이션 기능(Activation Function)을 적용하여 비선형 값으로 변경하고 풀링(pooling) 처리하여 내부 메모리(160)로 전달하거나, 또는 호스트(110)로 전달할 수 있다. 이때, 출력 피처 생성기(230)가 연산 수행된 결과값을 내부 메모리(160) 또는 호스트(110)에 전달하는 것에 한정되지 않고, 필요에 따라 타 구성으로 전달하는 것 역시 가능하다 할 것이다.
도 2는 본 발명의 일 실시 예에 따른 연산기의 구성을 상세하게 나타내는 도면이다.
이하에서는, 본 발명의 실시 예에 따른 격자 곱셈 방법을 설명하기 위한 예시도인 도 3 및 도 4와 INT 4 격자를 사용한 INT 8의 격자 곱셈 방법을 설명하기 위한 예시도인 도 5 내지 도 9를 참조하여 설명하기로 한다.
도 2를 참조하면, 연산 처리기(300)는 입력 처리기(310)와 연산기(330)를 포함할 수 있다.
입력 처리기(310)는 입력신호의 정밀도에 따라 연산 모드를 결정하고 결정된 상기 연산 모드에 따라 상기 입력신호의 정밀도(precision)를 변환하거나 유지하여 연산기(330)로 전달할 수 있다. 이때, 입력 처리기(310)는 연산모드별 입력신호의 정밀도를 사전에 설정하기 때문에, 결정된 연산모드에 매칭되는 입력신호의 정밀도가 아닌 경우, 현재 입력된 입력신호의 정밀도를 변환해야 하는 것이다.
예를 들어, 입력신호의 정밀도는 INT 16, INT 8 등일 수 있다.
입력 처리기(310)는 INT 8 정밀도의 입력신호를 INT 4 정밀도로 변환하거나, INT 16 정밀도의 입력신호를 INT 8 정밀도로 변환한 후, 연산기(330)로 전달할 수 있다. 이때, 입력 처리기(310)는 사전에 입력신호의 정밀도 별 연산 모드를 설정하고, 설정된 연산 모드에 따라 연산기(300)로 전달할 입력신호의 정밀도를 변환할 지 여부를 결정할 수 있다.
만약, 정밀도의 변환이 불필요한 경우, 입력 처리기(310)는 입력신호의 형태를 그대로 유지하여 연산기(330)로 전달할 수 있다.
입력 처리기(310)는 입력신호의 정밀도를 변환하는 경우, 상기 입력신호의 연산 모드에 따라 상기 입력신호를 현재 비트 보다 하위 비트로 분할하고, 분할된 상기 하위 비트의 입력신호를 연산기(330)로 전달할 수 있다.
입력 처리기(310)는 입력신호를 현재 비트 보다 하위 비트로 분할할 때, 상기 현재 비트의 1/2 비트로 분할할 수 있다. 예를 들어, 입력 처리기(310)는 INT 16의 신호를 INT8의 신호로 분할할 수 있다.
연산기(330)는 입력신호를 기초로 곱셈, 상기 입력신호의 복수의 분할그룹을 재배치하는 바운더리 마이그레이션(Boundary Migration) 및 상기 바운더리 마이그레이션된 상기 입력신호의 덧셈 중 적어도 하나 이상의 규칙을 상기 연산 모드에 따라 선택하여 연산을 수행할 수 있다.
연산기(330)는 입력신호를 격자 곱셈(Lattice Multiplication) 뿐만 아니라 상대적으로 사이즈가 더 작고 속도가 빠른 부스 곱셈(Booth Multiplication), 다다 곱셈(Dadda Multiplication) 및 월리스 곱셈(Wallace Multiplication) 중 어느 하나의 규칙으로 대체하여 곱셈 연산을 수행할 수 있으며, 이에 한정되지 않는다.
이하에서는, 연산기(330)가 입력신호에 대해 격자 곱셈을 수행하는 경우를 예로 들어 설명하기로 한다.
도 3 및 도 4를 참조하여 INT 8의 격자 곱셈(Lattice multiplication)을 설명할 수 있다.
도 3과 같이, 연산기(330)는 계산하고자 하는 8비트의 데이터를 각각 격자의 제1 단(T)(예를 들어, Top)과 제2 단(R)(예를 들어, Right)에 배치시킨 후, 비트 단위 AND 연산(Bit-wise AND 연산)을 통해 모든 경우의 수를 도출할 수 있다. 예를 들어, 비트 단위 AND 연산을 통해 획득된 모든 경우의 수는 도 3의 1열 00000000 ~ 8열 00000000일 수 있다.
도 4를 참조하면, 연산기(330)는 각 값(모든 경우의 수)을 도출한 후, 격자를 기준으로 우측 하단으로부터 제1 방향으로 올림 수 업데이트(carry update)를 반영한 비트 단위 더하기 연산을 수행할 수 있다. 예를 들어, 입력 처리기(310)는 도 4의 (A) 와 같이 올림수 비트(Carry bit)가 발생하는 경우, 다음 연산 시 올림수 비트가 반영될 수 있도록 좌상단 방향의 다음 라인(B)에 올림수 비트를 넘겨줄 수 있다. 즉, (A)의 결과값은 0이고, 올림수 비트를 넘겨받은 (B)의 결과값은 1이 될 수 있는 것이다.
연산기(330)는 격자 내 모든 값에 대한 비트 단위 더하기 연산을 완료하면, 격자를 기준으로 좌상단 방향에서 우하단 방향으로 격자의 제3 단(L)과 제4 단(B)의 각 비트를 순서대로 나열하여 최종 연산의 결과값을 획득할 수 있다.
즉, 연산기(330)는 0011_0100와 0011_0100의 격자곱셈을 통해 0000_1010_1001_0000의 결과값을 획득할 수 있다.
연산기(330)는 각 연산 모드에 따라 연산 규칙을 구분하여 적용하기 위한 제1 연산기(331) 및 제2 연산기(333)를 포함할 수 있다.
제1 연산기(331)는 복수의 제1 곱셈기(341 ~ 347), 바운더리 마이그레이터(Boundary Migrator)(351), 제1 플립플롭(361), 제1 어큐뮬레이터(363) 및 제2 플립플롭(365)을 포함할 수 있다.
제1 연산기(331)는 정밀도가 변환된 입력신호에 대한 연산을 수행하기 위한 구성으로서, 복수의 입력신호(T1_MSB, T2_MSB, L1_MSB, L2_LSB, R1_LSB, R2_MSB, B1_LSB, B2_LSB) 사이에는 서로 관련성이 존재한다. 예를 들어, 입력신호가 INT 16인 경우를 INT 8 형태로 변환한 경우, 제1 연산기(331)로 전달되는 복수의 INT 8은 변환 전 INT 16을 분할하여 전달된 것이기 때문에 서로 연관성이 존재할 수 있는 것이다.
보다 구체적으로 설명하면, 복수의 제1 곱셈기(341 ~ 347)는 변환된 정밀도의 입력신호를 수신하면, 상기 입력신호를 격자 곱셈(Lattice Multiplication) 규칙에 따라 연산할 수 있다. 이때, 제1 곱셈기(341 ~ 347) 각각은 8정밀도의 입력신호에 대한 곱셈 연산을 수행하는 INT 8 곱셈기일 수 있으나 이에 한정되지 않고, 운용자의 필요에 따라 다른 정밀도의 입력신호를 처리하는 것 역시 가능하다 할 것이다.
한편, 제1 연산기(331)는 입력 처리기(310)로부터 8정밀도가 4정밀도로 변환된 입력신호를 수신할 수 있다. 도 5 내지 도 8에서 도시하는 바와 같이, 제1 연산기(330)는 4비트의 입력신호를 기초로 4비트의 격자구조로 분할된 복수의 분할그룹을 형성할 수 있다.
이때, 변환된 정밀도의 입력신호는 최초 비트 격자구조(예를 들어, 도 3 및 도 4)의 1/2 비트 격자구조로 분할된 복수의 분할그룹(예를 들어, 도 5 내지 도 8)으로 형성될 수 있다.
제1 곱셈기(341 ~ 347)는 복수의 분할그룹 각각에 입력신호에 대한 비트 단위 AND 연산(Bit-wise AND 연산)을 통해 모든 경우의 수를 도출하고, 복수의 분할그룹 각각의 격자구조를 우측 하단으로부터 제1 방향으로 올림수 업데이트(carry update)를 반영한 비트 단위 더하기 연산을 수행하여 개별 격자 값을 도출할 수 있다.
도 5 내지 도 8을 참고하면, 제1 곱셈기(341 ~ 347) 각각은 입력 처리기(310)로부터 복수의 분할그룹 각각의 입력신호를 수신할 수 있다. 이때, 입력 처리기(310)는 복수의 분할그룹 내 입력신호의 위치에 따라 해당 제1 곱셈기(341 ~ 347)로 입력신호를 전달할 수 있다.
예를 들어, 제1 곱셈기(341)는 도 5의 T1_MSB 입력신호(0011)와 T2_MSB 입력신호(0011)를 수신하고, 제1 곱셈기(343)는 도 6의 L1_MSB 입력신호(0011)와 L2_LSB 입력신호(0100)를 수신하고, 제1 곱셈기(345)는 도 7의 R1_LSB 입력신호(0100)와 R2_MSB 입력신호(0011)를 수신하고, 제1 곱셈기(347)는 도 8의 B1_LSB 입력신호(0100)와 B2_LSB 입력신호(0100)를 수신할 수 있다. 상기 참조번호 341의 제1 곱셈기는 도 5의 Top에 대한 입력신호를 처리하는 곱셈기일 수 있고, 상기 참조번호 343의 제1 곱셈기는 도 6의 Left에 대한 입력신호를 처리하는 곱셈기일 수 있고, 상기 참조번호 345의 제1 곱셈기는 도 7의 Right에 대한 입력신호를 처리하는 곱셈기일 수 있고, 상기 참조번호 347의 제1 곱셈기는 도 8의 Bottom에 대한 입력신호를 처리하는 곱셈기일 수 있으며, 이에 한정되지 않는다.
이때, 도 5 내지 도 8의 복수의 분할그룹은 도 4의 8 X 8 격자구조를 4 X 4 격자구조로 분할하고, 4 X 4 격자구조가 8 X 8 격자구조에서 매칭되는 해당 위치에 따라 Top, Left, Right, Bottom으로 구분한 것이다.
또한, 제1 곱셈기(341 ~ 347)는 복수의 분할 그룹 각각의 입력신호에 비트 단위 AND 연산(Bit-wise AND 연산) 및 비트 단위 더하기 연산을 통해 Top의 분할그룹에서는 0000_1001, Left의 분할그룹에서는 0000_1100, Right의 분할그룹에서는 0000_1100, Bottom의 분할그룹에서는 0001_0000과 같은 개별 격자 값을 도출할 수 있다.
만약, 제1 연산기(331)가 INT 8 곱셈기로 INT 16의 연산을 지원하는 경우, 제1 곱셈기(341 ~ 347)는 각각 INT 8 곱셈기로서 제1 연산기(331) 내 총 4 개가 구비되어 있어 1배의 처리율(throughput)을 지원할 수 있다.
바운더리 마이그레이터(351)는 격자 곱셈 규칙에 따라 연산된 결과값에 바운더리 마이그레이션을 수행한 후 덧셈 연산을 수행하여 결과값을 획득할 수 있다. 이때, 바운더리 마이그레이션은 최초 비트의 입력신호를 기초로 수행한 최종 곱셈 연산 결과와 변환된 비트의 입력신호를 기초로 수행한 최종 곱셈 연산 결과가 서로 동일하도록 하기 위해 도 9와 같이 격자 곱셈 규칙의 결과값을 재배치하는 것을 의미할 수 있다.
바운더리 마이그레이터(351)는 제1 곱셈기(341 ~ 347)로부터 전달되는 결과값을 도 9와 같이 마이그레이션하는 것이다. 이는, 상대적으로 낮은 비트의 곱셈기(예를 들어, INT 8의 곱셈기)를 이용하여 상대적으로 높은 비트의 곱셈(예를 들어, INT 16)을 수행할 때, 결과값이 정상으로 도출될 수 있도록 하는 동작일 수 있다.
도 9를 참조하면, 바운더리 마이그레이터(351)는 개별 격자 값을 해당 분할그룹의 위치에 기 매칭된 바운더리 마이그레이션 위치에 재배치하는 바운더리 마이그레이션을 수행하며, 상기 바운더리 마이그레이션 값을 제2 방향으로 더하여 결과값(0000_1010_1001_0000)을 도출할 수 있다. 이때의 결과 값은 동일한 입력신호를 기초로 연산된 도 4의 결과값과 일치함을 확인할 수 있다.
도 2를 참조하면, 제1 플립플롭(361)은 바운더리 마이그레이터(351)로부터 전달되는 결과값을 리타이밍(Retiming)할 수 있다.
바운더리 마이그레이터(351)로부터 전달되는 결과값은 와이어 딜레이(wire delay) 등의 이유로 지연되어 홀드 타임(Hold Time)과 셋업 타임(Setup Time)이 변경될 수 있다. 상술한 홀드 타임은 데이터가 유지되는 시간이고, 셋업 타임은 데이터가 스위칭 되는 시간을 의미하는 것으로 정의하기로 한다. 상대적으로 짧아진 셋업 타임 동안 스위칭 양이 많아지면 데이터의 셋업이 정상적으로 이루어지지 않을 수 있다. 개시된 발명에서 제1 플립플롭(361)은 바운더리 마이그레이터(351)로부터 전달된 결과값에 대해 리타이밍을 통해 클럭 동기화를 수행하기 때문에, 데이터의 셋업이 정상적으로 이루어질 수 있는 것이다.
제1 어큐뮬레이터(Accumulator)(363)는 제1 플립플롭(361)으로부터 전달되는 상기 결과값을 누적할 수 있다. 예를 들어, 제1 어큐뮬레이터(Accumulator)(363)는 제1 플립플롭(361)으로부터 전달되는 INT 16 형태의 곱셈 연산값을 계속 더해서 누적할 수 있다.
제2 플립플롭(365)은 제1 어큐뮬레이터(Accumulator)(363)로부터 전달되는 상기 결과값을 저장 및 리타이밍(Retiming)하여 출력할 수 있다. 이때, 제2 플립플롭(365)의 리타이밍은 제1 플립플롭(361)의 리타이밍 동작과 동일하여 상세 설명은 생략하기로 한다.
상술한 제2 플립플롭(365)을 통해 출력되는 결과값은 비트 변환되기 전 최초 정밀도의 결과값일 수 있다. 예를 들어, 최초 입력값이 16정밀도인 경우, 제2 플립플롭(365)은 16정밀도의 결과값을 출력할 수 있다.
제2 플립플롭(365)은 결과값을 제1 어큐뮬레이터(Accumulator)(363) 또는 출력 피처 생성기(230)로 출력할 수 있다.
도 2를 참조하면, 제2 연산기(333)는 복수의 제2 곱셈기(371 ~ 377), 제2 어큐뮬레이터(381 ~ 387) 및 제3 플립플롭(391 ~ 397)을 포함할 수 있다. 이때, 참조번호 371의 제2 곱셈기, 참조번호 381의 제2 어큐뮬레이터 및 참조번호 391의 제3 플립플롭은 하나의 세트일 수 있다. 즉, 제2 연산기(333)는 곱셈기, 어큐뮬레이터 및 플립플롭으로 구성되는 4세트를 포함할 수 있다.
제2 연산기(333)는 입력 처리기(310)로부터 최초 입력된 정밀도의 입력신호를 수신하여 연산 처리하는 구성으로서, 복수의 입력신호들은 서로 간에 독립적일 수 있으며, 이에 한정되지 않는다.
제2 곱셈기(371 ~ 377)는 입력 처리기(310)로부터 입력신호를 수신하면, 상기 입력신호를 격자 곱셈 규칙에 따라 연산하여 결과값을 획득할 수 있다.
이때, 제2 곱셈기(371 ~ 377) 각각은 8정밀도의 입력신호에 대한 곱셈 연산을 수행하는 INT 8 곱셈기일 수 있으나 이에 한정되지 않고, 운용자의 필요에 따라 다른 정밀도의 입력신호를 처리하는 것 역시 가능하다 할 것이다.
만약, 제2 연산기(333)가 INT 8 곱셈기로 INT 8의 연산을 지원하는 경우, 제2 곱셈기(371 ~ 377)는 각각 INT 8 곱셈기로 제2 연산기(333) 내 총 4 개가 구비되어 있기 때문에, 동일 클럭 레이턴시(clock latency) 또는 감소된 클럭 레이턴시(reduced clock latency)로 인해 4배의 처리율(throughput)을 지원할 수 있다.
제2 어큐뮬레이터(Accumulator)(381 ~ 387)는 제2 곱셈기(371 ~ 377)로부터 전달된 결과값에 대한 덧셈 연산을 수행할 수 있다.
도 2를 참조하면, 제2 어큐뮬레이터(Accumulator)(381 ~ 387)는 바운더리 마이그레이터(350) 또는 제1 어큐뮬레이터(363)의 리소스를 공유하여 이루어질 수 있다. 도 2에서는 제2 어큐뮬레이터(Accumulator)(381 ~ 387) 각각은 바운더리 마이그레이터(351) 및 제1 어큐뮬레이터(363)와 서로 독립된 소프트웨어 블록으로 도시되어 있지만, 실제로 하나의 하드웨어로 구현될 수 있다. 연산모드의 스위칭에 따라 제2 어큐뮬레이터(Accumulator)(381 ~ 387) 각각은 바운더리 마이그레이터(351) 또는 제1 어큐뮬레이터(363)의 리소스 일부를 공유하여 덧셈 연산을 수행할 수 있다는 것이다. 즉, 제2 어큐뮬레이터(Accumulator)(381 ~ 387) 각각은 바운더리 마이그레이터(351)의 덧셈 연산 기능과 제1 어큐뮬레이터(363)의 덧셈 연산 기능을 수행하는 리소스를 공유하는 것이다. 상술한 연산모드의 스위칭은 도 2의 입력 처리기(310)에서 수행할 수 있다.
제3 플립플롭(391 ~ 397)은 제2 어큐뮬레이터(Accumulator)(381 ~ 387)로부터 전달되는 결과값을 저장 및 리타이밍(Retiming)하여 출력할 수 있다.
이때, 제3 플립플롭(391 ~ 397) 각각은 제1 플립플롭(361)과 제2 플립플롭(365)의 리소스를 공유할 수 있다. 즉, 제3 플립플롭(391 ~ 397) 각각은 제1 플립플롭(361)과 제2 플립플롭(365)의 기능 중 일부 또는 전부를 구현할 수 있는 것이다.
예를 들어, 제1 연산기(331)가 INT16 모드, 제2 연산기(333)가 INT8 모드를 구현하는 경우, 제1 연산기(331)에 적용된 바운더리 마이그레이터 로직, 제1 어큐뮬레이터(363)의 덧셈기 트리(adder tree) 및 제1 및 제2 플립플롭(361, 365) 을 각각 분할하여 제2 연산기(333)의 제2 곱셈기(371, 373, 375, 377)별 어큐뮬레이터(예를 들어, 381 ~ 387)와 플립플롭(예를 들어, 391 ~ 397)으로 구현할 수 있다. 즉, 제2 연산기(333)가 제2 곱셈기(371, 373, 375, 377)와 관련되어 구현되어야 할 연산 기능을 필요에 따라 제1 연산기(331)의 리소스로부터 취득한다는 것이다. 이는, 리플 캐리 덧셈기(ripple carry adder)와 플립플롭 체인(flip flop chain)의 분리가 가능한 특성을 이용한 것이다. 상술한 방법을 통해 INT 8의 곱셈기 4개(예를 들어, 제2 곱셈기(371 ~ 377))를 위한 제2 어큐뮬레이터(381 ~ 387)와 제3 플립플롭(391 ~ 397)을 구현할 수 있는 것이다.
이에, INT 8 연산모드에서 4배의 데이터 스루풋(data throughput)을 지원하는 연산기를 구현할 수 있는 것이다.
또한, 본 실시예에서는 각 연산기 및 글루 로직(glue logic)의 리소스를 공유하기 때문에 관련 로직의 리소스 낭비를 최소화할 수 있고, INT 8 연산모드에서는 곱셈기에서의 전파지연(propagation delay)값이 작기 때문에 출력값에 대한 덧셈 연산을 즉각 수행할 수 있으므로 동일 작동 주파수(operating frequency)에서 연산을 위한 클럭 사이클을 1 클럭 사이클만큼 줄일 수 있다.
상술한 도 2의 연산기(330)는 PE 어레이(PE array)에 적용될 수 있으며, 이에 한정되지 않는다.
도 10은 본 발명의 다른 실시 예에 따른 연산기의 구성을 나타낸 도면이다.
이하에서 개시하는 연산기(400)는 시스토릭 어레이(systolic array)에 적용될 수 있으며, 이에 한정되지 않는다.
연산기(400)는 제3 곱셈기(410), 덧셈기(420), 제4 플립플롭(430), 제5 플립플롭(440), 제6 플립플롭(450), 멀티플렉서(460) 및 제7 플립플롭(467)을 포함할 수 있다. 도시하지 않았지만, 연산기(400)는 도 2의 입력 처리기(310)와 연결되어, 입력 처리기(310)로부터 전달되는 입력신호를 수신할 수 있다.
도 2의 입력 처리기(310)로부터 전달되는 입력신호는 제1 입력신호와 제2 입력신호를 포함할 수 있다. 이때, 제1 입력신호는 피처(Feature)일 수 있고, 제2 입력신호는 웨이트(Weight)일 수 있다.
제3 곱셈기(410)는 제1 입력신호와 제2 입력신호에 격자 곱셈 연산을 수행하여 제1 결과값을 출력할 수 있다.
덧셈기(420)는 제3 곱셈기(410)로부터 전달되는 상기 제1 결과값을 기초로 바운더리 마이그레이션을 수행한 후 덧셈 연산을 수행하여 제2 결과값을 획득할 수 있다.
구체적으로, 덧셈기(420)는 제3 곱셈기(410)로부터 전달되는 제1 결과값의 해당 분할그룹의 위치에 기 매칭된 바운더리 마이그레이션 위치에 재배치하여 바운더리 마이그레이션을 수행할 수 있다. 예를 들어, 제1 결과값이 도 9의 Top, Left, Right 및 Bottom 중 어떤 바운더리 마이그레이션 위치에 해당하는지 여부를 파악하여 해당 위치에 재배치하는 것이다. 이를 위해, 제1 입력신호와 제2 입력신호의 분할그룹의 위치에 바운더리 마이그레이션 위치가 기 매칭됨은 당연하다 할 것이다.
또한, 덧셈기(420)는 카운팅 기능을 포함하여, 제1 입력신호와 제2 입력신호에 대한 연산 로직이 기 설정된 수만큼 반복 진행될 수 있도록 제어할 수 있다.
예를 들어, INT 4정밀도의 입력신호에 대한 연산을 수행해야 하는 경우, 연산 로직의 카운트 맥스는 3으로 설정되고, INT 8정밀도의 입력신호에 대한 연산을 수행해야 하는 경우, 연산 로직의 카운트 맥스는 7로 설정될 수 있다. 이로 인해, 제3 곱셈기(410) 및 덧셈기(420)가 각각 단일 구성으로 이루어져도 다양한 정밀도의 입력신호에 대한 연산을 수행할 수 있는 것이다.
제4 플립플롭(430)은 제2 결과값을 저장 및 리타이밍(Retiming)하여 출력할 수 있다.
제5 플립플롭(440)은 제1 입력신호를 인접한 제1 타 연산기(미도시)로 전달할 수 있다.
제6 플립플롭(450)은 제2 입력신호를 인접한 제2 타 연산기(미도시)로 전달할 수 있다.
멀티플렉서(460)는 제4 플립플롭(430)으로부터 출력된 제2 결과값 및 제1 타 연산기로부터 전달되는 결과값 중 어느 하나를 출력할 수 있다.
제7 플립플롭(470)은 멀티플렉서(460)로부터 수신한 결과값을 출력할 수 있다.
도 11은 본 발명의 일 실시 예에 따른 신경망 가속 장치의 동작 방법을 설명하기 위한 흐름도이다.
이하에서는, 도 11의 정밀도를 변환하는 방법을 상세하게 설명하기 위한 흐름도인 도 12를 참조하여 설명하기로 한다.
도 11을 참조하면, 신경망 가속 장치(도 2의 200)는 입력신호의 정밀도(precision)에 따라 연산 모드를 결정할 수 있다(S101).
예를 들어, 입력신호의 정밀도는 INT 16, INT 8 등일 수 있다.다음, 신경망 가속 장치(도 2의 200)는 결정된 연산 모드에 따라 입력신호의 정밀도를 변환하거나 유지할 수 있다.
구체적으로, 신경망 가속 장치(200)는 연산모드에 따라 입력신호의 정밀도를 변환해야 할지 여부를 확인할 수 있다(S103).
이때, 신경망 가속 장치(200)는 연산모드별 입력신호의 정밀도를 사전에 설정하기 때문에, 현재 입력된 입력신호의 정밀도가 단계 S101에서 결정된 연산모드의 입력신호 정밀도와 일치하지 않는 경우, 현재 입력된 입력신호의 정밀도를 변환해야 하는 것으로 판단할 수 있다.
확인 결과, 입력신호의 정밀도를 변환해야 하는 경우, 신경망 가속 장치(200)는 입력신호에 대해 연산모드에 매칭되는 정밀도로 변환할 수 있다(S105).
도 12를 참조하여 보다 구체적으로 설명하면, 신경망 가속 장치(200)는 입력신호의 정밀도를 변환하는 경우, 상기 입력신호의 연산 모드에 따라 상기 입력신호를 현재 비트 보다 하위 비트로 분할할 수 있다(S201). 신경망 가속 장치(200)는 입력신호를 현재 비트 보다 하위 비트로 분할할 때, 현재 비트의 1/2 비트로 분할할 수 있다. 신경망 가속 장치(200)는 분할된 하위 비트의 입력신호를 출력할 수 있다(S203).
예를 들어, 신경망 가속 장치(200)는 INT 8 정밀도의 입력신호를 INT 4 정밀도로 변환하거나, INT 16 정밀도의 입력신호를 INT 8 형태의 정밀도로 변환할 수 있다.
다음, 신경망 가속 장치(200)는 입력신호를 기초로 곱셈, 상기 입력신호의 복수의 분할그룹을 재배치하는 바운더리 마이그레이션(Boundary Migration) 및 상기 바운더리 마이그레이션된 상기 입력신호의 덧셈 중 적어도 하나 이상의 규칙을 상기 연산 모드에 따라 선택하여 연산을 수행할 수 있다.
신경망 가속 장치(200)는 변환된 정밀도의 입력신호를 수신하면, 상기 입력신호를 격자 곱셈(Lattice Multiplication) 규칙에 따라 연산할 수 있다(S107).
보다 구체적으로, 신경망 가속 장치(200)는 복수의 분할그룹 각각에 입력신호에 대한 비트 단위 AND 연산(Bit-wise AND 연산)을 통해 모든 경우의 수를 도출할 수 있다.
또한, 신경망 가속 장치(200)는 복수의 분할그룹 각각의 격자구조를 우측 하단부터 제1 방향으로 올림수 업데이트(carry update)를 반영한 비트 단위 더하기 연산을 수행하여 개별 격자 값을 도출할 수 있다.
도 5 내지 도 8을 참조하면, 신경망 가속 장치(200)는 복수의 분할 그룹 각각의 입력신호에 비트 단위 AND 연산(Bit-wise AND 연산) 및 비트 단위 더하기 연산을 통해 Top의 분할그룹에서는 0000_1001, Left의 분할그룹에서는 0000_1100, Right의 분할그룹에서는 0000_1100, Bottom의 분할그룹에서는 0001_0000과 같은 개별 격자 값을 도출할 수 있다.
한편, 신경망 가속 장치(200)는 상기 입력신호를 격자 곱셈(Lattice Multiplication) 이외에도 부스 곱셈(Booth Multiplication), 다다 곱셈(Dadda Multiplication) 및 월리스 곱셈(Wallace Multiplication) 중 어느 하나의 규칙을 이용하여 곱셈 연산을 수행할 수 있다.
다음, 신경망 가속 장치(200)는 바운더리 마이그레이션을 수행한 후 덧셈 연산을 수행하여 결과값을 획득할 수 있다.
구체적으로, 신경망 가속 장치(200)는 단계 S107에서 도출한 개별 격자 값을 해당 분할그룹의 위치에 기 매칭된 바운더리 마이그레이션 위치에 재배치하여 바운더리 마이그레이션을 수행할 수 있다(S109).
신경망 가속 장치(200)는 상기 바운더리 마이그레이션 값을 제2 방향으로 더하여 상기 결과값을 도출할 수 있다(S111).
다음, 신경망 가속 장치(200)는 단계 S111에서 도출된 결과값을 리타이밍(Retiming)할 수 있다(S113).
다음, 신경망 가속 장치(200)는 단계 S113에서 리타이밍 된 상기 결과값을 누적할 수 있다(S115).
다음, 신경망 가속 장치(200)는 상기 결과값을 저장 및 리타이밍(Retiming)하여 출력할 수 있다(S117).
이때, 단계 S117에서 출력되는 결과값은 비트 변환되기 전 최초 정밀도의 결과값일 수 있다. 예를 들어, 최초 입력값이 INT 16정밀도인 경우, 신경망 가속 장치(200)는 INT 16정밀도의 결과값을 출력할 수 있다.
한편, 단계 S103의 확인 결과 입력신호의 정밀도를 유지하는 경우, 신경망 가속 장치(200)는 입력신호를 수신하면, 상기 입력신호를 격자 곱셈 규칙에 따라 연산하여 결과값을 획득할 수 있다(S119). 이후에는, 단계 S117을 수행할 수 있다.
상술한 바와 같이, 본 발명의 실시예들은 낮은 정밀도(low-precision)를 가지는 데이터를 위한 연산 구조를 통해 더 높은 정밀도(high-precision)를 가지는 데이터를 연산할 수 있으며, 관련 연산을 위한 리소스를 최대한 활용할 수 있다. 또한, 덧셈기를 연산 모드별로 중복해서 사용할 수 있기 때문에 인공 신경망 연산 시 하드웨어 사용률을 극대화할 수 있다는 효과를 기대할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
200 : 신경망 가속 장치 210, 300 : 연산 처리기
230 : 출력 피처 생성기 310 : 입력 처리기
330, 400 : 연산기 331 : 제1 연산기
333 : 제2 연산기 341, 343, 345, 347 : 제1 곱셈기
351 : 바운더리 마이그레이터 361 : 제1 플립플롭
363 : 제1 어큐뮬레이터 365 : 제2 플립플롭
371, 373, 375, 377 : 제2 곱셈기
381, 383, 385, 387 : 제2 어큐뮬레이터
391, 393, 395, 397 : 제3 플립플롭 410 : 곱셈기
420 : 덧셈기

Claims (21)

  1. 입력신호의 정밀도에 따라 연산 모드를 결정하고 결정된 상기 연산 모드에 따라 상기 입력신호의 정밀도를 변환하거나 유지하여 연산기로 전달하는 입력 처리기; 및
    상기 입력신호를 기초로 곱셈, 상기 입력신호의 복수의 분할그룹을 재배치하는 바운더리 마이그레이션(Boundary Migration) 및 상기 바운더리 마이그레이션된 상기 입력신호의 덧셈 중 적어도 하나 이상의 규칙을 상기 연산 모드에 따라 선택하여 연산을 수행하는 연산기를 포함하는 신경망 가속 장치.
  2. 1항에 있어서,
    상기 입력 처리기는,
    상기 입력신호의 정밀도를 변환하는 경우, 상기 입력신호의 연산 모드에 따라 상기 입력신호를 현재 비트 보다 하위 비트로 분할하고, 분할된 상기 하위 비트의 상기 입력신호를 상기 연산기로 전달하는 신경망 가속 장치.
  3. 제2항에 있어서,
    상기 입력 처리기는,
    상기 입력신호를 현재 비트 보다 하위 비트로 분할할 때, 상기 현재 비트의 1/2 비트로 분할하는 신경망 가속 장치.
  4. 제2항에 있어서,
    상기 연산기는,
    상기 변환된 정밀도의 상기 입력신호를 수신하면, 상기 입력신호를 격자 곱셈(Lattice Multiplication) 규칙에 따라 연산하는 복수의 제1 곱셈기; 및
    상기 격자 곱셈 규칙에 따라 연산된 결과값에 상기 바운더리 마이그레이션을 수행한 후 덧셈 연산을 수행하여 결과값을 획득하는 바운더리 마이그레이터를 포함하는 제1 연산기를 포함하는 신경망 가속 장치.
  5. 제4항에 있어서,
    상기 제1 곱셈기는,
    상기 복수의 분할그룹 각각에 입력신호에 대한 비트 단위 AND 연산(Bit-wise AND 연산)을 통해 모든 경우의 수를 도출하고, 상기 복수의 분할그룹 각각의 격자구조를 우측 하단으로부터 제1 방향으로 올림수 업데이트(carry update)를 반영한 비트 단위 더하기 연산을 수행하여 개별 격자 값을 도출하는 신경망 가속 장치.
  6. 제5항에 있어서,
    상기 바운더리 마이그레이터는,
    상기 개별 격자 값을 해당 분할그룹의 위치에 기 매칭된 바운더리 마이그레이션 위치에 재배치하여 상기 바운더리 마이그레이션을 수행하고, 상기 바운더리 마이그레이션 값을 제2 방향으로 더하여 상기 결과값을 도출하는 신경망 가속 장치.
  7. 제6항에 있어서,
    상기 제1 연산기는,
    상기 바운더리 마이그레이터로부터 전달되는 상기 결과값을 리타이밍(Retiming)하는 제1 플립플롭;
    상기 결과값을 누적하는 제1 어큐뮬레이터(Accumulator); 및
    상기 제1 어큐뮬레이터로부터 전달되는 상기 결과값을 저장 및 리타이밍(Retiming)하여 출력하는 제2 플립플롭;
    를 더 포함하는 신경망 가속 장치.
  8. 제1항에 있어서,
    상기 연산기는,
    상기 입력신호를 수신하면, 상기 입력신호를 격자 곱셈 규칙에 따라 연산하여 결과값을 획득하는 복수의 제2 곱셈기를 포함하는 제2 연산기를 포함하는 신경망 가속 장치.
  9. 제8항에 있어서,
    상기 제2 연산기는,
    상기 결과값에 대한 덧셈 연산을 수행하는 제2 어큐뮬레이터(Accumulator); 및
    상기 제2 어큐뮬레이터로부터 전달되는 상기 결과값을 저장 및 리타이밍(Retiming)하여 출력하는 제3 플립플롭;
    을 더 포함하는 신경망 가속 장치.
  10. 제1항에 있어서,
    상기 입력신호는 제1 입력신호와 제2 입력신호를 포함하며,
    상기 연산기는,
    상기 제1 입력신호와 제2 입력신호에 격자 곱셈 연산을 수행하여 제1 결과값을 출력하는 제3 곱셈기;
    상기 제3 곱셈기로부터 전달되는 상기 제1 결과값을 기초로 상기 바운더리 마이그레이션을 수행한 후 덧셈 연산을 수행하여 제2 결과값을 획득하는 덧셈기; 및
    상기 제2 결과값을 저장 및 리타이밍(Retiming)하여 출력하는 제4 플립플롭을 포함하는 신경망 가속 장치.
  11. 제10항에 있어서,
    상기 덧셈기는,
    카운팅 기능을 포함하여, 상기 제1 입력신호와 제2 입력신호에 대한 연산 로직이 기 설정된 수만큼 반복 진행될 수 있도록 제어하는 신경망 가속 장치.
  12. 제10항에 있어서,
    상기 연산기는,
    상기 제1 입력신호를 인접한 제1 타 연산기로 전달하는 제5 플립플롭;
    상기 제2 입력신호를 인접한 제2 타 연산기로 전달하는 제6 플립플롭;
    상기 제4 플립플롭으로부터 출력된 제2 결과값 및 상기 제1 타 연산기로부터 전달되는 결과값 중 어느 하나를 출력하는 멀티플렉서; 및
    상기 멀티플렉서로부터 수신한 결과값을 출력하는 제7 플립플롭을 더 포함하는 신경망 가속 장치.
  13. 제1항에 있어서,
    상기 연산기는,
    상기 입력신호를 격자 곱셈(Lattice Multiplication), 부스 곱셈(Booth Multiplication), 다다 곱셈(Dadda Multiplication) 및 월리스 곱셈(Wallace Multiplication) 중 어느 하나의 규칙에 적용하여 곱셈 연산을 수행하는 신경망 가속 장치.
  14. 신경망 가속 장치가 입력신호의 정밀도(precision)에 따라 연산 모드를 결정하는 단계;
    상기 결정된 연산 모드에 따라 상기 입력신호의 정밀도를 변환하거나 유지하는 단계; 및
    상기 입력신호를 기초로 곱셈, 상기 입력신호의 분할그룹을 재배치하는 바운더리 마이그레이션(Boundary Migration) 및 상기 바운더리 마이그레이션된 상기 입력신호의 덧셈 중 적어도 하나 이상의 규칙을 상기 연산 모드에 따라 선택하여 연산을 수행하는 단계;
    를 포함하는 신경망 가속 장치의 동작 방법.
  15. 제14항에 있어서,
    상기 정밀도를 변환하거나 유지하는 단계는,
    상기 입력신호의 정밀도를 변환하는 경우, 상기 입력신호의 연산 모드에 따라 상기 입력신호를 현재 비트 보다 하위 비트로 분할하는 단계; 및
    분할된 상기 하위 비트의 상기 입력신호를 출력하는 단계;
    를 포함하는 신경망 가속 장치의 동작 방법.
  16. 제15항에 있어서,
    상기 분할하는 단계에서,
    상기 입력신호를 현재 비트 보다 하위 비트로 분할할 때, 상기 현재 비트의 1/2 비트로 분할하는 신경망 가속 장치의 동작 방법.
  17. 제15항에 있어서,
    상기 연산 모드에 따라 선택하여 연산을 수행하는 단계는,
    상기 변환된 정밀도의 상기 입력신호를 수신하면, 상기 입력신호를 격자 곱셈(Lattice Multiplication) 규칙에 따라 연산하는 단계; 및
    상기 바운더리 마이그레이션을 수행한 후 덧셈 연산을 수행하여 결과값을 획득하는 단계를 포함하는 신경망 가속 장치의 동작 방법.
  18. 제17항에 있어서,
    상기 격자 곱셈 규칙에 따라 연산하는 단계는,
    상기 복수의 분할그룹 각각에 입력신호에 대한 비트 단위 AND 연산(Bit-wise AND 연산)을 통해 모든 경우의 수를 도출하는 단계; 및
    상기 복수의 분할그룹 각각의 격자구조를 우측 하단부터 제1 방향으로 올림수 업데이트(carry update)를 반영한 비트 단위 더하기 연산을 수행하여 개별 격자 값을 도출하는 단계를 포함하는 신경망 가속 장치의 동작 방법.
  19. 제17항에 있어서,
    상기 덧셈 연산을 수행하여 결과값을 획득하는 단계는,
    상기 개별 격자 값을 해당 분할그룹의 위치에 기 매칭된 바운더리 마이그레이션 위치에 재배치하여 상기 바운더리 마이그레이션을 수행하는 단계; 및
    상기 바운더리 마이그레이션 값을 제2 방향으로 더하여 상기 결과값을 도출하는 단계를 포함하는 신경망 가속 장치의 동작 방법.
  20. 제14항에 있어서,
    상기 연산을 수행하는 단계에서,
    상기 입력신호를 수신하면, 상기 입력신호를 격자 곱셈 규칙에 따라 연산하여 결과값을 획득하는 신경망 가속 장치의 동작 방법.
  21. 제14항에 있어서,
    상기 연산을 수행하는 단계에서,
    상기 입력신호를 격자 곱셈(Lattice Multiplication), 부스 곱셈(Booth Multiplication), 다다 곱셈(Dadda Multiplication) 및 월리스 곱셈(Wallace Multiplication) 중 어느 하나의 규칙을 이용하여 곱셈 연산을 수행하는 신경망 가속 장치의 동작 방법.
KR1020190085326A 2018-07-24 2019-07-15 신경망 가속 장치 및 그것의 동작 방법 KR20200011362A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/519,643 US20200034699A1 (en) 2018-07-24 2019-07-23 Accelerating appratus of neural network and operating method thereof
CN201910671245.XA CN110780844A (zh) 2018-07-24 2019-07-24 神经网络加速装置及其操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180086212 2018-07-24
KR20180086212 2018-07-24

Publications (1)

Publication Number Publication Date
KR20200011362A true KR20200011362A (ko) 2020-02-03

Family

ID=69627234

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190085326A KR20200011362A (ko) 2018-07-24 2019-07-15 신경망 가속 장치 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR20200011362A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021194732A1 (en) * 2020-03-26 2021-09-30 Advanced Micro Devices, Inc. Power reduction for machine learning accelerator
US11853759B2 (en) 2020-11-02 2023-12-26 Electronics And Telecommunications Research Institute Neural network accelerator with type conversion units and operating method thereof
US11960855B2 (en) 2020-07-31 2024-04-16 Samsung Electronics Co., Ltd. Method and apparatus for performing deep learning operations

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021194732A1 (en) * 2020-03-26 2021-09-30 Advanced Micro Devices, Inc. Power reduction for machine learning accelerator
US11960855B2 (en) 2020-07-31 2024-04-16 Samsung Electronics Co., Ltd. Method and apparatus for performing deep learning operations
US11853759B2 (en) 2020-11-02 2023-12-26 Electronics And Telecommunications Research Institute Neural network accelerator with type conversion units and operating method thereof

Similar Documents

Publication Publication Date Title
KR20200011362A (ko) 신경망 가속 장치 및 그것의 동작 방법
US20230010315A1 (en) Application specific integrated circuit accelerators
US11551138B2 (en) Parallel processing of reduction and broadcast operations on large datasets of non-scalar data
CN111831254A (zh) 图像处理加速方法、图像处理模型存储方法及对应装置
CN104899182A (zh) 一种支持可变分块的矩阵乘加速方法
TWI634489B (zh) 多層人造神經網路
US11762602B2 (en) Enhanced input of machine-learning accelerator activations
US20200034699A1 (en) Accelerating appratus of neural network and operating method thereof
WO2021121274A1 (zh) 一种神经网络加速电路和方法
US11868243B2 (en) Topological scheduling
US11176449B1 (en) Neural network accelerator hardware-specific division of inference into groups of layers
CN109086879B (zh) 一种基于fpga的稠密连接神经网络的实现方法
CN110413561B (zh) 数据加速处理系统
CN109919826B (zh) 一种用于图计算加速器的图数据压缩方法及图计算加速器
CN115860080B (zh) 计算核、加速器、计算方法、装置、设备、介质及系统
CN111626410A (zh) 一种稀疏卷积神经网络加速器及计算方法
CN114970831A (zh) 一种数模混合存算一体化设备
Wu et al. Skeletongcn: a simple yet effective accelerator for gcn training
CN114707649A (zh) 一种通用卷积运算装置
US11297127B2 (en) Information processing system and control method of information processing system
CN111290787B (zh) 运算装置及运算方法
WO2020008643A1 (ja) データ処理装置、データ処理回路およびデータ処理方法
CN111753974A (zh) 一种神经网络加速器
US20230073893A1 (en) Long short term memory (lstm) layer hardware acceleration
CN117234462B (zh) 一种超高速伪随机数信号产生装置