[go: up one dir, main page]

KR102762717B1 - 범용 기계 학습 가속을 위한 혼합 정밀도 벡터 프로세서 시스템 - Google Patents

범용 기계 학습 가속을 위한 혼합 정밀도 벡터 프로세서 시스템 Download PDF

Info

Publication number
KR102762717B1
KR102762717B1 KR1020230046153A KR20230046153A KR102762717B1 KR 102762717 B1 KR102762717 B1 KR 102762717B1 KR 1020230046153 A KR1020230046153 A KR 1020230046153A KR 20230046153 A KR20230046153 A KR 20230046153A KR 102762717 B1 KR102762717 B1 KR 102762717B1
Authority
KR
South Korea
Prior art keywords
bit
operand
vector
mixed
partial
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
KR1020230046153A
Other languages
English (en)
Other versions
KR20240150181A (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 KR1020230046153A priority Critical patent/KR102762717B1/ko
Publication of KR20240150181A publication Critical patent/KR20240150181A/ko
Application granted granted Critical
Publication of KR102762717B1 publication Critical patent/KR102762717B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Complex Calculations (AREA)

Abstract

혼합 정밀도 벡터 프로세서 및 이를 포함하는 범용 기계 학습 가속 장치가 제공된다. 혼합 정밀도 벡터 프로세서는 적어도 2 이상의 정밀도의 벡터 연산을 수행하는 복수의 벡터 레인; 및 상기 복수의 벡터 레인을 제어하는 벡터 레인 컨트롤러를 포함하되, 상기 복수의 벡터 레인 각각은, 제1 연산 모드에서, 제1 피연산자에 포함된 제1 비트 길이의 제1 부분 비트 피연산자와 제2 부분 비트 피연산자에 대하여, 제2 피연산자에 포함된 상기 제1 비트 길이의 제3 부분 비트 피연산자와 제4 부분 비트 피연산자로 곱셈-누적 연산을 수행하여 각각 제2 비트 길이의 제1 부분 비트 결과값과 제2 부분 비트 결과값의 쌍을 산출하고, 제2 연산 모드에서, 제3 비트 길이의 제1 피연산자에 대하여 상기 제3 비트 길이의 제2 피연산자로 곱셈-누적 연산을 수행하여 제4 비트 길이의 결과값을 산출한다.

Description

범용 기계 학습 가속을 위한 혼합 정밀도 벡터 프로세서 시스템{MIXED PRECISION VECTOR PROCESSOR SYSTEM FOR GENERAL PURPOSE MACHINE LEARNING ACCELERATION}
본 발명은 혼합 정밀도 벡터 프로세서 및 이를 포함하는 범용 기계 학습 가속 장치에 관한 것으로, 더욱 구체적으로는 서로 다른 비트 길이 및 정밀도를 갖는 벡터 연산을 동시에 지원하는 연산기를 통해 다양한 기계 학습 연산을 지원할 수 있는 혼합 정밀도 벡터 프로세서 및 이를 포함하는 범용 기계 학습 가속 장치에 관한 것이다.
기계 학습 기술은 이미지 분류, 객체 인식, 자연어 처리 등과 같은 다양한 인공 지능 애플리케이션들이 대두됨에 따라 매우 중요하게 자리매김했다. 이미지 분류에는 컨볼루션(Convolution) 연산을 포함한 합성곱 신경망 모델을 사용하고, 자연어 처리를 위해 장단기 메모리(Long Short Term Memory)와 같은 순환 신경망 모델을 사용한다. 최근에는 자연어 처리와 컴퓨터 비전에서 어텐션(Attention) 연산을 포함하는 트랜스포머 모델을 사용하는 등 인공 지능 애플리케이션의 다양화에 따라 기계 학습 모델도 다양화되고 있다.
최신 기계 학습 모델들은 높은 정확도를 얻기 위해 다양하고 복잡한 연산들을 필요로 한다. 이를 해결하고자 많은 하드웨어 가속 장치들에 대한 연구가 진행되고 있으나, 종래의 기계 학습을 위한 하드웨어 가속 장치들은 특정한 기계 학습 모델에 최적화되어 있는 경우가 많고 지원하는 데이터 유형도 제한적이다. 이와 같이 프로그램 가능성(programmability)이 부족한 경우 기계 학습 모델이 변경되거나 알고리즘이 크게 변화한 경우에 하드웨어 실행 효율이 떨어지고, 다른 연산 모델로의 확장 가능성도 부족하게 된다.
본 발명이 해결하고자 하는 기술적 과제는, 다양한 기계 학습 연산을 위해 프로그램 가능하고, 다양한 데이터 정밀도 유형을 지원하는 혼합 정밀도 벡터 프로세서 및 이를 포함하는 범용 기계 학습 가속 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서는, 적어도 2 이상의 정밀도의 벡터 연산을 수행하는 복수의 벡터 레인; 및 상기 복수의 벡터 레인을 제어하는 벡터 레인 컨트롤러를 포함하되, 상기 복수의 벡터 레인 각각은, 제1 연산 모드에서, 제1 피연산자에 포함된 제1 비트 길이의 제1 부분 비트 피연산자와 제2 부분 비트 피연산자에 대하여, 제2 피연산자에 포함된 상기 제1 비트 길이의 제3 부분 비트 피연산자와 제4 부분 비트 피연산자로 곱셈-누적 연산을 수행하여 각각 제2 비트 길이의 제1 부분 비트 결과값과 제2 부분 비트 결과값의 쌍을 산출하고, 제2 연산 모드에서, 제3 비트 길이의 제1 피연산자에 대하여 상기 제3 비트 길이의 제2 피연산자로 곱셈-누적 연산을 수행하여 제4 비트 길이의 결과값을 산출한다.
본 발명의 몇몇 실시예에서, 상기 복수의 벡터 레인 각각은, 상기 제1 연산 모드에서, 부호 확장된 상기 제1 부분 비트 피연산자와 제3 부분 비트 피연산자를 곱셈 연산한 결과로부터 상기 제2 비트 길이의 제1 부분 비트 곱셈 결과값을 산출하고, 상기 제2 부분 비트 피연산자에 0으로 하위 비트를 추가하고, 상기 제4 부분 비트 피연산자에 대하여 곱셈 연산한 결과로부터 상기 제2 비트 길이의 제2 부분 비트 곱셈 결과값을 산출하고, 상기 제1 부분 비트 곱셈 결과값과 제2 부분 비트 곱셈 결과값에 대하여 제1 부분 비트 누적 연산값과 제2 부분 비트 누적 연산값을 덧셈 연산하여 상기 제1 부분 비트 결과값과 제2 부분 비트 결과값을 산출할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제1 부분 비트 곱셈 결과값은 상기 부호 확장된 제1 부분 비트 피연산자와 상기 제3 부분 비트 피연산자를 곱셈 연산한 제5 비트 길이의 결과값을 상기 제2 비트 길이로 절단한 값이고, 상기 제2 부분 비트 곱셈 결과값은 상기 0으로 하위 비트가 추가된 제2 부분 비트 피연산자와 상기 제4 부분 비트 피연산자를 곱셈 연산한 상기 제5 비트 길이의 결과값을 상기 제2 비트 길이로 절단한 값일 수 있다.
본 발명의 몇몇 실시예에서, 상기 복수의 벡터 레인 각각은, 상기 제2 연산 모드에서, 상기 제3 비트 길이의 제1 피연산자에 대하여 상기 제2 피연산자의 상위 비트로 곱셈 연산을 수행한 제5 비트 길이의 결과값을 시프트 연산한 상위 비트 결과값과, 상기 제3 비트 길이의 제1 피연산자에 대하여 상기 제2 피연산자의 하위 비트로 곱셈 연산을 수행한 결과값인 상기 제5 비트 길이의 하위 비트 결과값을 덧셈 연산하여 상기 제4 비트 길이의 결과값을 산출할 수 있다.
본 발명의 몇몇 실시예에서, 상기 복수의 벡터 레인 각각은, 서로 다른 크기의 범위를 갖는 제1 보간 영역 및 제2 보간 영역에 기초하여, 룩업 테이블에 저장된 비선형 함수의 선형 근사에 의해 미리 계산된 기울기 및 절편을 탐색하는 룩업 테이블 연산기를 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제1 보간 영역 및 제2 보간 영역의 범위의 크기는 상기 비선형 함수의 복잡도에 기초하여 설정될 수 있다.
본 발명의 몇몇 실시예에서, 상기 벡터 레인 컨트롤러는, 입력받은 CISC(Complex Instruction Set Computer) 타입 명령어를 디코딩하여 RISC(Reduced Instruction Set Computer) 타입 명령어 시퀀스를 생성하는 마이크로코드 생성기를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 벡터 레인 컨트롤러는, 연산에 필요한 벡터 레인의 대기 시간 및 인터페이스를 통한 데이터 액세스 횟수를 최적화하여 상기 RISC 타입 명령어 시퀀스를 생성할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 몇몇 실시예에 따른 혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치는, 제1 그룹의 복수의 혼합 정밀도 벡터 프로세서를 포함하는 제1 로직 영역; 상기 제1 로직 영역과 분리되고, 제2 그룹의 복수의 혼합 정밀도 벡터 프로세서를 포함하는 제2 로직 영역; 및 상기 제1 로직 영역 및 제2 로직 영역에 의해 액세스되는 메모리을 포함하고, 상기 복수의 혼합 정밀도 벡터 프로세서 각각은, 적어도 2 이상의 정밀도를 갖는 벡터 연산을 수행하는 복수의 벡터 레인; 및 상기 복수의 벡터 레인을 제어하는 벡터 레인 컨트롤러를 포함하되, 상기 복수의 벡터 레인 각각은, 제1 연산 모드에서, 제1 피연산자 에 포함된 제1 비트 길이의 제1 부분 비트 피연산자와 제2 부분 비트 피연산자에 대하여, 제2 피연산자에 포함된 상기 제1 비트 길이의 제3 부분 비트 피연산자와 제4 부분 비트 피연산자로 곱셈-누적 연산을 수행하여 각각 제2 비트 길이의 제1 부분 비트 결과값과 제2 부분 비트 결과값을 산출하고, 제2 연산 모드에서, 제3 비트 길이의 상기 제1 피연산자에 대하여 상기 제3 비트 길이의 제2 피연산자로 곱셈-누적 연산을 수행하여 제4 비트 길이의 결과값을 산출한다.
본 발명의 몇몇 실시예에서, 상기 제1 로직 영역과 상기 제2 로직 영역은 서로 다른 다이(die), 칩(chip), 패키지 중 어느 하나에 각각 배치될 수 있다.
본 발명의 몇몇 실시예에서, 상기 제1 그룹의 복수의 혼합 정밀도 벡터 프로세서 코어의 개수와 상기 제2 그룹의 복수의 혼합 정밀도 벡터 프로세서 코어의 개수는 서로 다를 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서 및 이를 포함하는 범용 기계 학습 가속 장치는, 적어도 2 이상의 비트 길이 및 정밀도를 갖는 고정 소수점 데이터에 대하여 연산 모드를 달리하여 곱셈-누적 연산을 수행할 수 있다.
또한, 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서 및 이를 포함하는 범용 기계 학습 가속 장치는 동일한 기울기와 절편을 갖는 보간 영역을 서로 다른 크기의 범위를 갖는 제1 보간 영역 및 제2 보간 영역으로 설정함으로써 비선형 함수를 보다 정확하게 근사하여 연산할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 몇몇 실시예에 따른 혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치의 블록도이다.
도 2는 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서를 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서에 포함된 벡터 레인을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서에 포함된 벡터 레인의 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서에 포함된 룩업 테이블 연산기의 동작을 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 룩업 테이블 연산기의 동작을 설명하기 위한 그래프이다.
도 7은 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치로 입력되는 CISC 타입의 명령어와 디코딩을 통해 생성된 RISC 타입의 명령어의 예시이다.
도 8은 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서가 호스트 컨트롤러로부터 제공된 CISC 타입의 명령어를 디코딩하여 RISC 타입의 명령어를 생성하는 동작을 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 구성 요소가 다른 구성 요소와 "연결된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 구성 요소와 직접 연결 또는 커플링된 경우 또는 중간에 다른 구성 요소를 개재한 경우를 모두 포함한다. 반면, 하나의 구성 요소가 다른 구성 요소와 "직접 연결된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 구성 요소를 개재하지 않은 것을 나타낸다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 구성 요소들을 서술하기 위해서 사용되나, 이들 구성 요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성 요소를 다른 구성 요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성 요소는 본 발명의 기술적 사상 내에서 제2 구성 요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
인공 지능(artificial intelligence, AI)은 인간의 지능으로 할 수 있는 사고, 학습, 자기계발 등을 컴퓨터가 할 수 있도록 하는 방법을 연구하는 컴퓨터 공학 및 정보기술의 한 분야로, 컴퓨터가 인간의 지능적인 행동을 모방할 수 있도록 하는 것을 의미한다. 또한, 인공지능은 그 자체로 존재하는 것이 아니라, 컴퓨터 과학의 다른 분야와 직간접으로 많은 관련을 맺고 있다. 특히 현대에는 정보기술의 여러 분야에서 인공지능적 요소를 도입하여, 그 분야의 문제 풀이에 활용하려는 시도가 매우 활발하게 이루어지고 있다.
기계 학습 또는 머신 러닝(machine learning)은 인공지능의 한 분야로, 컴퓨터에 명시적인 프로그램 없이 배울 수 있는 능력을 부여하는 연구 분야이다. 구체적으로 기계 학습은, 경험적 데이터를 기반으로 학습을 하고 예측을 수행하고 스스로의 성능을 향상시키는 시스템과 이를 위한 알고리즘을 연구하고 구축하는 기술이라 할 수 있다. 기계 학습의 알고리즘들은 엄격하게 정해진 정적인 프로그램 명령들을 수행하는 것이라기보다, 입력 데이터를 기반으로 예측이나 결정을 이끌어내기 위해 특정한 모델을 구축하는 방식을 취한다.
도 1은 본 발명의 몇몇 실시예에 따른 혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치의 블록도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치(1)는, 복수의 혼합 정밀도 벡터 프로세서를 포함하여 벡터 연산을 수행할 수 있는 제1 로직 영역(100)과 제2 로직 영역(500) 및 로직 영역(100, 500)에 의해 액세스되는 메모리(1000)를 포함할 수 있다.
범용 기계 학습 가속 장치(1)는 기계 학습을 수행하기 위한 벡터 연산을 가속화하여 수행하기 위한 하드웨어 구조를 포함함으로써 통상의 CPU(Central Processing Unit) 또는 GPU(Graphic Processing Unit)의 연산 능력보다 뛰어난 연산 속도를 보일 수 있는 장치일 수 있다. 범용 기계 학습 가속 장치(1)는 예를 들어 적어도 일부가 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 특수 목적의 논리 회로로 구성된 반도체 장치를 포함할 수 있으나 본 발명이 이에 제한되는 것은 아니다.
범용 기계 학습 가속 장치(1)는 DNN(Deep Neural Network), RNN(Recurrent Neural Network), BRDNN(Bidirectional Recurrent Deep Nueral Network), CNN(Convolutional Neural Network)와 같은 인공 신경망을 구현하기 위한 네트워크 모델을 처리하거나, 워드 임베딩(Word Embedding), 어텐션(Attention)과 같은 자연어 처리를 위한 인공지능 모델을 처리하기 위한 벡터 연산을 수행할 수 있다.
범용 기계 학습 가속 장치(1)는 예를 들어 물리적 또는 논리적으로 분리되고 복수의 인터커넥트(interconnect)에 의해서 상호간의 통신을 수행하는 서로 다른 복수의 다이(die), 칩(chip), 패키지 등을 포함할 수 있다. 한편, 도 1의 범용 기계 학습 가속 장치(1)는 복수의 로직 영역(100, 200)들을 포함할 수 있으며, 본 명세서에서는 범용 기계 학습 가속 장치(1)가 2개의 로직 영역(100, 200)이 각각 배치되는 2개의 다이, 칩 또는 패키지로 구성된 반도체 장치인 것을 기준으로 설명하나 본 발명이 이에 제한되는 것은 아니다.
제1 로직 영역(100)은 호스트 컴퓨터로부터 혼합 정밀도 벡터 프로세서 명령어, 기계 학습 모델 데이터 및 입력 데이터 등을 제공받는 인터페이스(110), 복수의 혼합 정밀도 벡터 프로세서(200) 및 로직 영역 내의 다른 구성 요소들을 제어하는 호스트 컨트롤러(120), 메모리(1000)에 대한 데이터 입출력을 제어하는 메모리 컨트롤러(130), 하나 이상의 혼합 정밀도 벡터 프로세서(200)와 메모리 컨트롤러(130) 사이를 연결함으로써 혼합 정밀도 벡터 프로세서(200)로부터 직접 메모리(1000)에 대한 데이터 액세스를 가능하게 하는 직접 메모리 접근 장치(Direct Memory Access, DMA)(140) 및 복수의 연산 모드를 통해 동작함으로써 서로 다른 비트 길이 및 정밀도의 벡터에 대하여 연산할 수 있는 복수의 혼합 정밀도 벡터 프로세서(200)를 포함할 수 있다.
호스트 컨트롤러(120)는 PCI 익스프레스와 같은 인터페이스(110)를 통하여 호스트 컴퓨터(10)와 연결되어, 기계 학습 연산 내용 및 명령어를 복수의 혼합 정밀도 벡터 프로세서(200)로 제공할 수 있다. 본 발명의 몇몇 실시예에서, 호스트 컨트롤러(120)는 복수의 혼합 정밀도 벡터 프로세서(200)에 포함된 서로 다른 벡터 프로세서들에 대하여 각각 다른 명령어 집합체 구조를 할당할 수 있다. 후술하는 것과 같이, 호스트 컨트롤러(120)가 각각의 혼합 정밀도 벡터 프로세서(200)에 제공하는 명령어 집합체는 CISC(Complex Instruction Set Computer) 타입의 명령어이고, 각각의 혼합 정밀도 벡터 프로세서(200)들은 제공된 CISC 타입 명령어를 디코딩하여 생성된 RISC 타입의 명령어 시퀀스를 실행할 수 있다.
본 발명의 몇몇 실시예에서, 제1 로직 영역(100)은 하나 이상의 특수 연산 혼합 정밀도 벡터 프로세서(210)를 포함할 수 있다. 특수 연산 혼합 정밀도 벡터 프로세서(210)는 뒤에서 설명하는 것과 같이 비선형 활성 함수(Nonlinear Activation Function)의 연산을 위한 룩업 테이블 연산기(310)를 포함할 수 있다. 룩업 테이블 연산기(310)와 관련하여 이후 도 5 내지 6을 이용하여 설명한다.
제2 로직 영역(500)은 호스트 컨트롤러(520), DMA 장치(540) 및 복수의 혼합 정밀도 벡터 프로세서(600)를 포함할 수 있다. 제2 로직 영역(500)은 제1 로직 영역(100)과 유사한 구조를 가지되, 제1 로직 영역(100)에 포함된 메모리 컨트롤러(130)가 제2 로직 영역(500)에 포함되지 않을 수 있다. 이 경우 제2 로직 영역(500)은 DMA 장치(540)가 제1 로직 영역(100)의 메모리 컨트롤러(130)를 경유하여 메모리(1000)에 액세스할 수 있다.
한편, 제2 로직 영역(500)은 메모리 컨트롤러를 포함하지 않음에 따라 제1 로직 영역(100)과 비대칭적인 개수의 복수의 혼합 정밀도 벡터 프로세서(200, 600) 구성을 가질 수 있다.
예를 들어 도 1에 도시된 것과 같이 제1 로직 영역(100)에는 하나의 특수 연산 혼합 정밀도 벡터 프로세서(210)를 포함한 총 7개의 혼합 정밀도 벡터 프로세서(200)가 배치되고, 제2 로직 영역(500)에는 하나의 특수 연산 혼합 정밀도 벡터 프로세서(610)를 포함한 총 9개의 혼합 정밀도 벡터 프로세서(600)가 배치될 수 있다. 다만 두 로직 영역의 벡터 프로세서 배치 개수는 예시적인 것으로, 예를 들어 3:5의 비율로 벡터 프로세서가 나누어 배치되거나, 또는 1:1로 동일한 개수의 벡터 프로세서가 두 로직 영역에 나누어 배치될 수도 있음은 물론이다.
본 발명의 몇몇 실시예에서 메모리(1000)는 복수의 로직 영역(100, 500)에 의해 빠르게 액세스될 수 있도록 낮은 레이턴시(latency)와 높은 대역폭을 제공하는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), GDDR(Graphic DDR) SDRAM 등을 포함할 수 있다. 메모리(1000)는 바람직하게는 하나의 실리콘 기판 또는 인터포저 상에 복수의 로직 영역(100, 500)과 동일 평면 상에 형성되어 넓은 버스 넓이와 고대역을 구현할 수 있는 HBM(High Bandwidth Memory)로 구현될 수 있으나 본 발명이 이에 제한되는 것은 아니다.
도 2는 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서를 설명하기 위한 도면이다. 도 2의 혼합 정밀도 벡터 프로세서(210)는 도 1의 복수의 혼합 정밀도 벡터 프로세서(200, 600) 중 어느 하나를 도시한 것이다.
도 2를 참조하면, 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서는 벡터 레인 컨트롤러(220), 디코더 및 컨트롤러(230), 복수의 벡터 레인(240), DMA 버퍼(260), 데이터 및 명령어 인터페이스(271, 271) 등을 포함할 수 있다.
벡터 레인 컨트롤러(220)는 호스트 컨트롤러(120)로부터 제공받은 CISC 타입 명령어를 디코딩하여 RISC 타입 명령어 시퀀스를 생성하는 마이크로 코드 생성기(221)와, 데이터 및 명령어 인터페이스(271, 272)와 데이터를 송수신하는 외부 인터페이스 컨트롤러(222)를 포함할 수 있다. 상기 외부 인터페이스 컨트롤러(222)는 명령어 인터페이스(271)를 통해 호스트 컨트롤러(120)로부터 CISC 타입 명령어를 제공받을 수 있으며, 제공된 하나의 명령어 시퀀스의 실행을 완료되었음을 명령어 인터페이스(271)를 통해 호스트 컨트롤러(120)로 전송할 수 있다.
마이크로코드 생성기(221)는 외부 메모리에 접근하는 DMA 장치와 관련된 명령어 또는 기계 학습에서 수행되는 다양한 연산에 대한 명령어를 포함하는 CISC 타입의 명령어를 디코딩하여 비교적 간단한 구조의 RISC 타입의 명령어 시퀀스를 생성할 수 있다. 즉, 마이크로코드 생성기(221)는 호스트 컨트롤러(120)로부터 제공받은 명령어를 벡터 레인(300)에서 직접적으로 처리되기 위해 간소화된 명령어 시퀀스로 변환할 수 있다. 마이크로코드 생성기(221)에 의해 수행되는 명령어 디코딩과 관련하여 도 7 및 8을 이용하여 설명한다.
도 7은 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치로 입력되는 CISC 타입의 명령어와 디코딩을 통해 생성된 RISC 타입의 명령어의 예시이고, 도 8은 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서가 호스트 컨트롤러로부터 제공된 CISC 타입의 명령어를 디코딩하여 RISC 타입의 명령어를 생성하는 동작을 설명하기 위한 도면이다.
호스트 컴퓨터(10)로부터 전달되는 상위 단계 명령어인 CISC 타입의 명령어는 기계 학습 추론 연산의 정보를 담고 있으며, 크게 메모리(1000)에 접근하는 DMA 장치 동작에 대한 명령어와(DMA_LOAD, DMA_STORE 등) 기계 학습에서 수행하는 다양한 연산에 대한 명령어(MM, CONV, POOL, ??)로 구분될 수 있다.
DMA 장치 동작에 대한 명령어는 메모리(1000)로부터 데이터를 직접 DMA 장치 버퍼(260)로 가져오거나 메모리(1000)에 데이터를 저장하는 동작을 결정하고, 메모리의 주소, 데이터의 시작 위치 및 데이터 크기 등에 대한 정보를 포함할 수 있다.
기계 학습의 연산에 대한 명령어는 연산 유형을 포함하여 입출력 데이터의 차원과 형태, 연산에 필요한 상수값이나 컨볼루션 연산 등에 필요한 스트라이드, 패딩 정보를 포함하고 있어 구체적인 기계 학습 연산 명령을 가능하게 할 수 있다.
벡터 레인 컨트롤러(220)는 이와 같은 CISC 타입의 명령어를 디코딩하여 다음에 설명할 RISC 타입의 명령어를 생성할 수 있다. 디코딩에 의해 생성된 RISC 타입의 명령어의 경우, 혼합 정밀도 벡터 프로세서(210)의 벡터 레인(300)에서 직접적으로 명령어를 처리하기 위해 간소화된 구조를 가지며, 연산의 종류와 피연산자에 대한 정보, 비트 유형, DMA 장치 버퍼로 라이트백 여부 등을 포함할 수 있다.
도 8을 참조하면, 주로 벡터 레인 컨트롤러(220)에 의해 CISC 타입 명령어가 디코딩되어 RISC 타입 명령어가 생성되는 데이터 플로우가 설명된다. 호스트 컨트롤러(110)가 기계 학습 추론 연산과 관련된 CISC 명령어를 호스트 컴퓨터(1)로부터 제공받으면 명령어에 포함된 코어 인덱스를 디코딩하여 복수의 혼합 정밀도 벡터 프로세서(200, 600) 중 적어도 어느 하나에 대하여 명령어를 분배하여 제공할 수 있다.
벡터 레인 컨트롤러(220)에 포함된 마이크로코드 생성기(221)는 CISC 타입의 명령어를 디코딩하여 외부 인터페이스 컨트롤러(222)를 통해 직접 메모리 접근 장치를 동작하거나 벡터 레인(300)에서 처리할 RISC 타입의 명령어 시퀀스를 생성해낸다.
마이크로코드 생성기(221)는 연산에 필요한 벡터 레인(300)의 대기 시간 및 인터페이스(222)을 통한 데이터 액세스 횟수를 최소화할 수 있도록 RISC 명령어 집합체를 최적화할 수 있다.
마이크로코드 생성기(221)에 의해 생성된 RISC 타입의 명령어는 이후 디코더 및 컨트롤러(230)로 제공되어 디코딩될 수 있으며, 연산의 종류, 피연산자, 다중 사이클 여부, 포워딩 여부에 관한 정보를 포함한 디코딩된 명령어가 제공되어 벡터 레인(300)의 연산을 제어할 수 있다.
다시 도 2를 참조하면, 마이크로코드 생성기(221)에 의해 생성된 RISC 타입 명령어는 디코더 및 컨트롤러(230)로 전달되어 디코딩될 수 있다. 디코딩된 RISC 타입 명령어는 명령어 종류, 피연산자, 목적지 등에 따라 복수의 벡터 레인(240) 중 적어도 어느 하나의 벡터 레인에 전달될 수 있다. 상술한 바와 같이, 본 발명의 혼합 정밀도 벡터 프로세서(210)는 서로 다른 정밀도를 갖는 벡터 연산을 수행할 수 있는 바, 디코딩된 RISC 타입 명령어에 표시된 데이터 정밀도는 제1 비트 길이 또는 제3 비트 길이 등으로 구분될 수 있으며, 디코딩된 RISC 타입 명령어를 전달받은 벡터 레인은 상술한 데이터 정밀도에 따라 연산을 수행하게 된다.
복수의 벡터 레인(240)은 병렬적으로 배치되어 벡터 레인 컨트롤러(220)로부터 생성된 RISC 타입 명령어에 따른 연산을 수행할 수 있다. 본 발명의 몇몇 실시예에서 혼합 정밀도 벡터 프로세서(210)는 DMA 장치 버퍼(260)에 대한 비트폭이 64바이트로 구성된 32개의 벡터 레인(240)을 포함할 수 있으나 본 발명이 이에 제한되는 것은 아니다.
벡터 레인(300)과 관련하여 도 3을 이용하여 더욱 자세하게 설명한다.
도 3은 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서에 포함된 벡터 레인을 설명하기 위한 도면이다.
도 3을 참조하면, 본 발명의 실시예에 따른 벡터 레인(300)은 포워딩 유닛(301), 룩업 테이블 연산기(310), 누적 연산값 스크래치 패드(302), 피연산자 스크래치 패드(303), 혼합 정밀도 고정 소수점 연산기(400), 부동 소수점 연산기(320), 지수 연산기(330) 및 역수 연산기(340) 등을 포함할 수 있다.
도 3의 벡터 레인(300)은 비선형 활성 함수의 연산을 위한 룩업 테이블 연산기(310)를 포함할 수 있으며, 이는 벡터 레인(300)이 특수 연산 혼합 정밀도 벡터 프로세서(210)에 포함되는 벡터 레인인 것을 의미한다. 특수 연산 혼합 정밀도 벡터 프로세서(210)가 아닌 혼합 정밀도 벡터 프로세서(250)의 경우, 룩업 테이블 연산기(310)가 포함되지 않은 벡터 레인이 포함될 수 있다.
벡터 레인(300)은 도 3에 도시된 것과 같이 각 단계 사이에 레지스터가 포함된 복수의 파이프라인 구조를 가질 수 있다. 벡터 레인(300)에 사용되는 명령어와 제어 신호 및 데이터는 DMA 장치 버퍼(260)로부터 읽히거나 임시적으로 기록될 수 있으며, 이후 메모리(1000)로 저장될 수 있다.
벡터 레인(300)에는 포워딩 유닛, 룩업 테이블 연산기(310), 누적 연산값 스크래치 패드(302) 및 피연산자 스크래치 패드(303)가 하나의 파이프라인 스테이지를 구성하고 있다. 스크래치 패드(302, 303) 또는 룩업 테이블 연산기(310) 등으로부터 출력된 데이터는 피연산자 멀티플렉서를 거쳐 선택적으로 다음 스테이지로 전달될 수 있다.
다음 스테이지에서, 혼합 정밀도 고정 소수점 연산기(400), 부동 소수점 연산기(320), 지수 연산기(330) 및 역수 연산기(340)가 동일한 파이프라인 스테이지를 구성할 수 있다. 다만 혼합 정밀도 고정 소수점 연산기(400)의 구성에 더하여 다른 연산기가 해당 스테이지에 추가될 수도 있다.
도 3의 벡터 레인(300)을 구성하는 연산기들은 2 이상의 정밀도를 갖는 벡터 연산을 지원할 수 있으며, 예를 들어 혼합 정밀도 고정 소수점 연산기(400)는 제1 비트 길이의 정수형 2개가 상하위 비트로 구성된 연산과 제2 비트 길이의 정수형 연산을 수행할 수 있다. 몇몇 실시예에서, 제2 비트 길이는 제1 비트 길이의 2배이고, 본 명세서에서 제1 비트 길이는 8비트이고, 제2 비트 길이는 16비트로 설명하나 본 발명이 비트 길이 및 정밀도에 제한되는 것은 아니다. 예를 들어, 제1 비트 길이와 제2 비트 길이 사이에는 2의 정수 배의 길이 관계가 성립할 수도 있으며, 제1 비트 길이가 8비트이고 제2 비트 길이가 32비트로 구성될 수도 있다.
혼합 정밀도 고정 소수점 연산기(400)의 제1 비트 길이의 정수형과 제2 비트 길이의 정수형을 이용한 혼합 정밀도 연산과 관련하여 도 4를 이용하여 더욱 자세하게 설명한다.
도 4는 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서에 포함된 벡터 레인의 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 제1 피연산자와 제2 피연산자에 대하여 누적 연산 또는 곱셈-누적 연산을 수행하는 곱셈기(410), 고정밀도 덧셈기(420) 및 덧셈기(430)의 구성이 도시된다.
곱셈기(410)에는 피연산자 스크래치 패드(303)로부터 제공된 제1 및 제2 피연산자가 제공될 수 있다. 곱셈기(410)는 복수의 곱셈 연산 유닛으로 구성되며, 병렬적으로 동작하는 복수의 곱셈 연산 유닛을 통해 정밀도를 달리하는 제1 연산 모드 또는 제2 연산 모드의 수행이 가능하다.
곱셈기(410)는 제1 연산 모드, 예를 들어 8비트 연산 모드에서 제1 비트 길이의 제1 상위 비트 피연산자와 제2 상위 비트 피연산자 및 제1 비트 길이의 제1 하위 비트 피연산자와 제2 하위 비트 피연산자에 대하여 곱셈-누적 연산을 수행할 수 있다. 도 4의 (b)에서는 제1 비트 길이는 8비트이고, 상위 및 하위 비트로 나누어지기 전의 피연산자들의 길이는 16비트이다.
이때, 제1 하위 비트 피연산자와 제1 상위 비트 피연산자는 제1 피연산자에 포함되고, 제2 하위 비트 피연산자와 제2 상위 비트 피연산자는 제2 피연산자에 포함된다. 즉, 하나의 피연산자는 상위 및 하위 비트 피연산자로 나누어져 곱셈 연산된다.
도시된 것과 같이, 곱셈기(410)는 8비트 연산 모드(도 4의 (b))에서 부호 확장된 제1 하위 비트 피연산자와 제2 하위 비트 피연산자의 곱셈 연산을 수행한 결과로부터 하위 비트 곱셈 결과값을 산출한다. 이와 함께 곱셈기(410)는 제1 상위 비트 피연산자에 하위 비트, 즉 0을 추가한 값에 제2 상위 비트 피연산자를 곱셈 연산한 결과로부터 상위 비트 곱셈 결과값을 산출한다. 곱셈기(410)에 포함된 복수의 곱셈 연산 유닛(여기서는 2개)에 의해 병렬적으로 곱셈이 수행되어 하위 비트 곱셈 결과값과 상위 비트 곱셈 결과값이 각각 산출된다.
이때 도 4의 (b)와 같이 각각의 곱셈 결과값은 24비트의 길이를 가지고, 이들을 각각 16비트씩 절단하여 제2 비트 길이의 상위 비트 곱셈 결과값과 하위 비트 곱셈 결과값을 구할 수 있다. 이때 도 4의 (b)에서 제2 비트 길이는 16비트이다. 즉, 상위 또는 하위 비트 피연산자의 제1 비트 길이와 상위 또는 하위 비트 곱셈 결과값의 제2 비트 길이 사이에는 2배 관계가 존재한다. 또한 피연산자가 상위 및 하위 2개의 부분 비트 피연산자로 나누어진 경우이므로, 상위 또는 하위 비트 곱셈 결과값의 제2 비트 길이와 분리 전 피연산자의 제3 비트 길이는 동일하다.
고정밀도 덧셈기(420)는 상위 비트 곱셈 결과값과 하위 비트 곱셈 결과값을 멀티플렉서(441)를 거쳐 제공된 상위 비트 누적 연산값과 하위 비트 누적 연산값과 각각 더하여 상위 비트 결과값과 하위 비트 결과값의 쌍을 산출할 수 있다. 이들은 각각 제2 비트 길이(도 4의 (b)에서는 16비트)의 정수형의 정밀도를 갖는다.
한편, 곱셈기(410)는 제2 연산 모드, 예를 들어 16비트 연산 모드(도 4의 (a))에서 16비트 정수형의 제1 피연산자에 대하여 16비트 정수형의 제2 피연산자의 곱셈을 수행한다. 이때 곱셈기(410)는 제1 피연산자를 제2 피연산자의 하위 비트 및 상위 비트로 곱셈 연산을 수행한 결과값을 더하여 제4 비트 길이, 즉 32비트 정수형인 결과값을 산출할 수 있다. 이때 곱셈기(410)를 구성하는 복수의 곱셈 연산 유닛(여기서는 2개)에 의해 병렬적으로 곱셈이 수행된다. 구체적으로 제1 피연산자를 제2 피연산자의 상위 비트와 곱셈한 결과값(24비트)을 좌측 시프트한 값과, 제1 피연산자를 제2 피연산자 하위 비트와 곱셈하고(24비트) 8비트 부호 확장한 결과값이 더해져 결과값이 산출될 수 있다.
즉, 본 발명의 고정 소수점 연산기(400)에 포함된 곱셈기(410)는 복수의 곱셈 연산 유닛을 포함하고, 정밀도를 달리하는 제1 연산 모드 및 제2 연산 모드에서 복수의 곱셈 연산 유닛이 동작하는 곱셈 연산을 수행함에 따라 효율적인 연산을 수행할 수 있다.
상술한 연산은 혼합 정밀도 고정 소수점 연산기(400)에 의해 수행되는 8비트 또는 16비트 정수형 벡터에 대한 곱셈-누적 연산에 해당하며, 고정 소수점 연산이 아닌 부동 소수점 16비트 곱셈-누적 연산 및 산술 연산을 수행하는 부동 소수점 연산기(320)에 의해서 수행될 수 있다.
한편, 도 4를 이용하여 설명한 실시예에서는 피연산자가 상위 및 하위의 2개의 부분 비트 피연산자를 중심으로 구성되었으나 본 발명이 이에 제한되는 것은 아니다. 이하에서 피연산자가 4 이상의 부분 비트 피연산자로 나누어 제1 및 제2 연산 모드가 수행되는 구성을 설명한다.
제1 연산 모드에서는 예를 들어 곱셈기(410)는 제3 비트 길이(32비트)의 피연산자를 각각 4개의 제1 비트 길이(8비트)의 부분 비트 피연산자로 나누어 4개의 곱셈 연산을 병렬 처리하는 구성을 포함할 수 있다. 입력된 제1 피연산자를 제1 내지 제4 부분 비트 피연산자로 나누고, 제2 피연산자를 제5 내지 제8 부분 비트 피연산자로 나눠 곱셈기(410)가 제1-5, 2-6, 3-7, 4-8 부분 비트 피연산자끼리 곱셈 연산을 병렬적으로 수행할 수 있다. 곱셈기(410)에 포함된 복수의 곱셈 연산 유닛(여기서는 4개)에 의해 병렬적으로 곱셈이 수행되어 부분 비트 곱셈 결과값이 산출된다.
구체적으로, 제1 피연산자의 제1 내지 제4 부분 비트 피연산자는 제2 피연산자의 부분 비트 피연산자들과 각각 곱해지기 위하여 부호 확장되거나 0으로 하위 비트가 추가됨으로써 32비트와 8비트 사이의 곱셈 연산이 수행되고 출력된 제5 비트 길이(40비트)의 결과값을 절단하여 부분 비트 곱셈 결과값을 생성할 수 있다.
그 결과 제2 비트 길이(16비트)를 갖는 4개의 부분 비트 곱셈 결과값이 산출되고, 이들을 부분 비트 누적 연산값들과 덧셈 연산하여 제1 내지 제4 부분 비트 결과값이 산출된다.
제2 연산모드에서는 두 개의 32비트 피연산자를 입력받아 앞서 도 4의 (a)와 유사하게 곱셈 연산을 수행한다. 즉 제1 피연산자와, 제2 피연산자의 제1 내지 제4 부분 비트 피연산자의 곱셈 결과(제5 비트 길이로, 여기서는 40비트) 제4 비트 길이(여기서는 64비트)의 결과값을 생성하고, 고정밀도 덧셈기(420)에서 누적 연산을 수행하여 제4 비트 길이(64비트)에 포함되는 결과값을 생성할 수 있다. 마찬가지로 곱셈기(410)에 포함된 복수의 곱셈 연산 유닛(여기서는 4개)에 의해 병렬적으로 곱셈이 수행될 수 있다.
즉, 이러한 실시예의 곱셈기(410) 및 고정밀도 덧셈기(420)를 포함하는 혼합 정밀도 벡터 프로세서(210)는 설계 방향에 따라 병렬화 정도를 달리하여 2 이상의 비트 길이 및 정밀도를 갖는 고정 소수점 데이터에 대하여 연산 모드에 따라 누적-곱셈 연산을 수행할 수 있으며, 곱셈기(410)에 포함된 복수의 곱셈 연산 유닛은 두 가지 연산 모드에서 동일한 병렬화 정도로 곱셈 연산을 수행할 수 있다.
도 5는 본 발명의 실시예에 따른 혼합 정밀도 벡터 프로세서에 포함된 룩업 테이블 연산기의 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 본 발명의 실시예에 따른 룩업 테이블 연산기(310)는 특수 연산 혼합 정밀도 벡터 프로세서(210) 내에서 하이퍼볼릭 탄젠트 함수, 시그모이드 함수와 같은 다양한 비선형 활성 함수 연산을 수행할 수 있다. 룩업 테이블 연산기(310)는 목표하는 함수의 선형 근사를 통해 얻은 기울기와 절편을 미리 계산하여 룩업 테이블(311)에 저장하고, 선형 보간법을 이용하여 피연산자에 대한 비선형 함수 연산 결과를 산출할 수 있다.
본 발명의 실시예에 따른 룩업 테이블 연산기(310)는 비선형 함수를 보다 정확하게 근사하기 위해 동일한 기울기와 절편을 갖는 보간 영역을 서로 다른 크기의 범위를 갖는 제1 보간 영역 및 제2 보간 영역으로 설정할 수 있다. 이와 관련하여 도 6을 이용하여 설명한다.
도 6은 본 발명의 실시예에 따른 룩업 테이블 연산기의 동작을 설명하기 위한 그래프이다.
도 6을 참조하면, 비선형함수인 GeLU(Gaussian Error Linear Unit) 활성화함수의 그래프가 도시된다. 본 발명의 룩업 테이블 연산기(310)는 도 6에 도시된 것과 같이 서로 다른 크기의 8개의 보간 영역을 설정하여 각 구역에 대한 기울기와 절편을 연산할 수 있다. 여기서 8개의 보간 영역이 각각 설정된 범위는 해당 비선형 함수의 복잡도에 기초하여 설정될 수 있으며, 비선형 함수의 복잡한 부분은 함수값의 변화에 대응하기 위해 작은 범위를 갖는 여러 개의 보간 영역으로 구성되고, 비교적 간단한 선형 부분 또는 상수 부분은 큰 범위를 갖는 하나의 보간 영역으로 구성될 수 있다.
룩업 테이블 연산기(310)에 의해 설정된 보간 영역은 특성 테이블(312)에 저장될 수 있으며, 피연산자가 룩업 테이블 연산기(310)에 입력되면 데이터 범위 탐지자(314)가 특성 테이블(312)에 저장된 값을 참조하여 비선형 함수의 보간 영역을 지정하고, 룩업 테이블 주소 선택자(315)는 룩업 테이블에서 지정된 보간 영역에 해당되는 기울기와 절편을 탐색할 수 있다. 탐색된 기울기와 절편은 데이터 정밀도에 따라 혼합 정밀도 곱셈 누적 연산기(400) 또는 부동 소수점 연산기(320) 등으로 입력되어 보간 연산이 수행될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1: 범용 기계 학습 가속 장치 100, 500: 로직 영역
110: 인터페이스 120: 호스트 컨트롤러
130: 메모리 컨트롤러 140: DMA 장치
200: 혼합 정밀도 벡터 프로세서 220: 벡터 레인 컨트롤러
210: 특수 연산 혼합 정밀도 벡터 프로세서
260: DMA 장치 버퍼 300: 벡터 레인

Claims (18)

  1. 적어도 2개 이상의 정밀도를 갖는 벡터 연산을 수행하는 복수의 벡터 레인; 및
    상기 복수의 벡터 레인을 제어하는 벡터 레인 컨트롤러를 포함하되,
    상기 복수의 벡터 레인 각각은,
    제1 연산 모드에서, 제3 비트 길이의 제1 피연산자에 포함된 제1 비트 길이의 제1 부분 비트 피연산자와 제2 부분 비트 피연산자, 상기 제3 비트 길이의 제2 피연산자에 포함된 상기 제1 비트 길이의 제3 부분 비트 피연산자와 제4 부분 비트 피연산자에 대해,
    부호 확장된 상기 제1 부분 비트 피연산자에 상기 제3 부분 비트 피연산자를 곱셈 연산한 결과로부터 제2 비트 길이의 제1 부분 비트 곱셈 결과값을 산출하고,
    상기 제2 부분 비트 피연산자에 0으로 하위 비트를 추가하여 상기 제4 부분 비트 피연산자를 곱셈 연산한 결과로부터 상기 제2 비트 길이의 제2 부분 비트 곱셈 결과값을 산출하고,
    상기 제1 부분 비트 곱셈 결과값에 제1 부분 비트 누적 연산값을 덧셈 연산하여 제1 부분 비트 결과값을 산출하고, 상기 제2 부분 비트 곱셈 결과값에 제2 부분 비트 누적 연산값을 덧셈 연산하여 제2 부분 비트 결과값을 산출하고,
    제2 연산 모드에서,
    상기 제1 피연산자에 상기 제3 부분 비트 피연산자를 곱셈 연산한 결과 및 상기 제1 피연산자에 제4 부분 비트 피연산자를 곱셈 연산한 결과에 기반하여 제4 비트 길이의 곱셈 결과값을 산출하는,
    혼합 정밀도 벡터 프로세서.
  2. 삭제
  3. 제 1항에 있어서,
    상기 제1 부분 비트 곱셈 결과값은 상기 부호 확장된 제1 부분 비트 피연산자와 상기 제3 부분 비트 피연산자를 곱셈 연산한 제5 비트 길이의 결과값을 상기 제2 비트 길이로 절단한 값이고,
    상기 제2 부분 비트 곱셈 결과값은 상기 0으로 하위 비트가 추가된 제2 부분 비트 피연산자와 상기 제4 부분 비트 피연산자를 곱셈 연산한 상기 제5 비트 길이의 결과값을 상기 제2 비트 길이로 절단한 값인,
    혼합 정밀도 벡터 프로세서.
  4. 제 1항에 있어서,
    상기 복수의 벡터 레인 각각은, 상기 제2 연산 모드에서,
    상기 제1 피연산자에 대하여 상기 제2 피연산자의 상위 비트로 곱셈 연산을 수행한 제5 비트 길이의 결과값을 시프트 연산한 상위 비트 결과값과,
    상기 제1 피연산자에 대하여 상기 제2 피연산자의 하위 비트로 곱셈 연산을 수행한 결과값인 상기 제5 비트 길이의 하위 비트 결과값을 덧셈 연산하여 제4 비트 길이의 결과값을 산출하는,
    혼합 정밀도 벡터 프로세서.
  5. 제 1항에 있어서,
    상기 복수의 벡터 레인 각각은,
    서로 다른 크기의 범위를 갖는 제1 보간 영역 및 제2 보간 영역에 기초하여, 룩업 테이블에 저장된 비선형 함수의 선형 근사에 의해 미리 계산된 기울기 및 절편을 탐색하는 룩업 테이블 연산기를 더 포함하는,
    혼합 정밀도 벡터 프로세서.
  6. 제 5항에 있어서,
    상기 제1 보간 영역 및 제2 보간 영역의 범위의 크기는 상기 비선형 함수의 복잡도에 기초하여 설정되는,
    혼합 정밀도 벡터 프로세서.
  7. 제 1항에 있어서,
    상기 벡터 레인 컨트롤러는,
    입력받은 CISC(Complex Instruction Set Computer) 타입 명령어를 디코딩하여 RISC(Reduced Instruction Set Computer) 타입 명령어 시퀀스를 생성하는 마이크로코드 생성기를 포함하는,
    혼합 정밀도 벡터 프로세서.
  8. 제 7항에 있어서,
    상기 벡터 레인 컨트롤러는, 연산에 필요한 벡터 레인의 대기 시간 및 인터페이스를 통한 데이터 액세스 횟수를 최적화하여 상기 RISC 타입 명령어 시퀀스를 생성하는,
    혼합 정밀도 벡터 프로세서.
  9. 제1 그룹의 복수의 혼합 정밀도 벡터 프로세서를 포함하는 제1 로직 영역;
    상기 제1 로직 영역과 분리되고, 제2 그룹의 복수의 혼합 정밀도 벡터 프로세서를 포함하는 제2 로직 영역; 및
    상기 제1 로직 영역 및 제2 로직 영역에 의해 액세스되는 메모리를 포함하고,
    상기 복수의 혼합 정밀도 벡터 프로세서 각각은,
    적어도 2 이상의 정밀도를 갖는 벡터 연산을 수행하는 복수의 벡터 레인; 및
    상기 복수의 벡터 레인을 제어하는 벡터 레인 컨트롤러를 포함하되,
    상기 복수의 벡터 레인 각각은,
    제1 연산 모드에서, 제3 비트 길이의 제1 피연산자에 포함된 제1 비트 길이의 제1 부분 비트 피연산자와 제2 부분 비트 피연산자, 상기 제3 비트 길이의 제2 피연산자에 포함된 상기 제1 비트 길이의 제3 부분 비트 피연산자와 제4 부분 비트 피연산자에 대해,
    부호 확장된 상기 제1 부분 비트 피연산자에 상기 제3 부분 비트 피연산자를 곱셈 연산한 결과로부터 제2 비트 길이의 제1 부분 비트 곱셈 결과값을 산출하고,
    상기 제2 부분 비트 피연산자에 0으로 하위 비트를 추가하여 상기 제4 부분 비트 피연산자를 곱셈 연산한 결과로부터 상기 제2 비트 길이의 제2 부분 비트 곱셈 결과값을 산출하고,
    상기 제1 부분 비트 곱셈 결과값에 제1 부분 비트 누적 연산값을 덧셈 연산하여 제1 부분 비트 결과값을 산출하고, 상기 제2 부분 비트 곱셈 결과값에 제2 부분 비트 누적 연산값을 덧셈 연산하여 제2 부분 비트 결과값을 산출하고,
    제2 연산 모드에서,
    상기 제1 피연산자에 상기 제3 부분 비트 피연산자를 곱셈 연산한 결과 및 상기 제1 피연산자에 제4 부분 비트 피연산자를 곱셈 연산한 결과에 기반하여 제4 비트 길이의 곱셈 결과값을 산출하는,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
  10. 삭제
  11. 제 9항에 있어서,
    상기 제1 부분 비트 곱셈 결과값은 상기 부호 확장된 제1 부분 비트 피연산자와 상기 제3 부분 비트 피연산자를 곱셈 연산한 제5 비트 길이의 결과값을 상기 제2 비트 길이로 절단한 값이고,
    상기 제2 부분 비트 곱셈 결과값은 상기 0으로 하위 비트가 추가된 제2 부분 비트 피연산자와 상기 제4 부분 비트 피연산자를 곱셈 연산한 상기 제5 비트 길이의 결과값을 상기 제2 비트 길이로 절단한 값인,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
  12. 제 9항에 있어서,
    상기 복수의 벡터 레인 각각은, 상기 제2 연산 모드에서,
    상기 제1 피연산자에 대하여 상기 제2 피연산자의 상위 비트로 곱셈 연산을 수행한 제5 비트 길이의 결과값을 시프트 연산한 상위 비트 결과값과,
    상기 제1 피연산자에 대하여 상기 제2 피연산자의 하위 비트로 곱셈 연산을 수행한 결과값인 상기 제5 비트 길이의 하위 비트 결과값을 덧셈 연산하여 상기 제4 비트 길이의 결과값을 산출하는,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
  13. 제 9항에 있어서,
    상기 제1 로직 영역과 제2 로직 영역 각각은,
    비선형 활성 함수 연산을 수행하는 특수 연산 벡터 프로세서를 더 포함하고,
    상기 특수 연산 벡터 프로세서는,
    서로 다른 크기의 범위를 갖는 제1 보간 영역 및 제2 보간 영역에 기초하여, 룩업 테이블에 저장된 비선형 함수의 선형 근사에 의해 미리 계산된 기울기 및 절편을 탐색하는 룩업 테이블 연산기를 포함하는,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
  14. 제 13항에 있어서,
    상기 제1 보간 영역 및 제2 보간 영역의 범위의 크기는 상기 비선형 함수의 복잡도에 기초하여 설정되는,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
  15. 제 9항에 있어서,
    상기 벡터 레인 컨트롤러는,
    입력받은 CISC(Complex Instruction Set Computer) 타입 명령어를 디코딩하여 RISC(Reduced Instruction Set Computer) 타입 명령어 시퀀스를 생성하는 마이크로코드 생성기를 포함하는,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
  16. 제 15항에 있어서,
    상기 벡터 레인 컨트롤러는, 연산에 필요한 벡터 레인의 대기 시간 및 인터페이스를 통한 데이터 액세스 횟수를 최적화하여 상기 RISC 타입 명령어 시퀀스를 생성하는,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
  17. 제 9항에 있어서,
    상기 제1 로직 영역과 상기 제2 로직 영역은 서로 다른 다이(die), 칩(chip), 패키지 중 어느 하나에 각각 배치되는,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
  18. 제 17항에 있어서,
    상기 제1 그룹의 복수의 혼합 정밀도 벡터 프로세서의 개수와 상기 제2 그룹의 복수의 혼합 정밀도 벡터 프로세서의 개수는 서로 다른,
    혼합 정밀도 벡터 프로세서를 포함하는 범용 기계 학습 가속 장치.
KR1020230046153A 2023-04-07 2023-04-07 범용 기계 학습 가속을 위한 혼합 정밀도 벡터 프로세서 시스템 Active KR102762717B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230046153A KR102762717B1 (ko) 2023-04-07 2023-04-07 범용 기계 학습 가속을 위한 혼합 정밀도 벡터 프로세서 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230046153A KR102762717B1 (ko) 2023-04-07 2023-04-07 범용 기계 학습 가속을 위한 혼합 정밀도 벡터 프로세서 시스템

Publications (2)

Publication Number Publication Date
KR20240150181A KR20240150181A (ko) 2024-10-15
KR102762717B1 true KR102762717B1 (ko) 2025-02-07

Family

ID=93115005

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230046153A Active KR102762717B1 (ko) 2023-04-07 2023-04-07 범용 기계 학습 가속을 위한 혼합 정밀도 벡터 프로세서 시스템

Country Status (1)

Country Link
KR (1) KR102762717B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100343530B1 (ko) * 1992-03-31 2002-11-27 트랜스메타 코포레이션 씨아이에스씨-알아이에스씨명령어번역정렬및디코딩
US20030065699A1 (en) * 2001-10-01 2003-04-03 Koninklijke Philips Electronics N.V. Split multiplier for efficient mixed-precision DSP
US20050027773A1 (en) 2003-07-31 2005-02-03 Machnicki Erik P. Method and system for performing parallel integer multiply accumulate operations on packed data
JP2022548046A (ja) 2019-09-10 2022-11-16 コーナミ,インコーポレ-テッド 再構成可能プロセッサ回路アーキテクチャ

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943114B2 (en) * 2011-08-17 2015-01-27 Avago Technologies General Ip (Singapore) Pte. Ltd. Method for implementing 32 bit complex multiplication by using 16-bit complex multipliers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100343530B1 (ko) * 1992-03-31 2002-11-27 트랜스메타 코포레이션 씨아이에스씨-알아이에스씨명령어번역정렬및디코딩
US20030065699A1 (en) * 2001-10-01 2003-04-03 Koninklijke Philips Electronics N.V. Split multiplier for efficient mixed-precision DSP
US20050027773A1 (en) 2003-07-31 2005-02-03 Machnicki Erik P. Method and system for performing parallel integer multiply accumulate operations on packed data
JP2022548046A (ja) 2019-09-10 2022-11-16 コーナミ,インコーポレ-テッド 再構成可能プロセッサ回路アーキテクチャ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
B. Moons 등. "ENVISION: A 0.26-to-10TOPS/W Subword-Parallel Dynamic-Voltage-Accuracy-Frequency-Scalable Convolutional Neural Network Processor in 28nm FDSOI". 2017 ISSCC*

Also Published As

Publication number Publication date
KR20240150181A (ko) 2024-10-15

Similar Documents

Publication Publication Date Title
Talpes et al. Compute solution for tesla's full self-driving computer
KR102539893B1 (ko) 다차원 어레이로부터 요소들의 다차원 블록을 프리페치하는 하드웨어 장치들 및 방법들
KR102252137B1 (ko) 계산 장치 및 방법
US20210216318A1 (en) Vector Processor Architectures
US5440749A (en) High performance, low cost microprocessor architecture
US7447720B2 (en) Method for finding global extrema of a set of bytes distributed across an array of parallel processing elements
US7454451B2 (en) Method for finding local extrema of a set of values for a parallel processing element
WO2018192500A1 (zh) 处理装置和处理方法
CN110678840A (zh) 张量寄存器文件
CN110678841A (zh) 张量处理器指令集架构
Park et al. AttAcc! Unleashing the power of PIM for batched transformer-based generative model inference
US12032925B1 (en) Latency processing unit
JP2021507352A (ja) メモリ装置及びそれを制御するための方法
CN113270126B (zh) 流访问存储器设备、系统和方法
CN114691217A (zh) 用于8位浮点矩阵点积指令的装置、方法和系统
KR20250026790A (ko) 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법
Yu et al. Optimizing FPGA-based convolutional encoder-decoder architecture for semantic segmentation
KR102762717B1 (ko) 범용 기계 학습 가속을 위한 혼합 정밀도 벡터 프로세서 시스템
EP3839736B1 (en) Unified programming interface for regrained tile execution
Kim et al. A 409.6 GOPS and 204.8 GFLOPS mixed-precision vector processor system for general-purpose machine learning acceleration
US20210209462A1 (en) Method and system for processing a neural network
KR20210113762A (ko) 연산량에 따른 가변 데이터 동작 주파수 기반 인공지능 연산기 시스템
Zheng et al. Hardware architecture exploration for deep neural networks
KR20220049325A (ko) 가속기 및 이를 포함한 전자 장치
KR20210113761A (ko) 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20230407

PA0201 Request for examination

Patent event code: PA02011R01I

Patent event date: 20230407

Comment text: Patent Application

PA0302 Request for accelerated examination

Patent event date: 20240405

Patent event code: PA03022R01D

Comment text: Request for Accelerated Examination

PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20240703

Patent event code: PE09021S01D

PG1501 Laying open of application
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: 20250122

PG1601 Publication of registration