KR102292349B1 - 처리 장치 및 처리 방법 - Google Patents

처리 장치 및 처리 방법 Download PDF

Info

Publication number
KR102292349B1
KR102292349B1 KR1020197025307A KR20197025307A KR102292349B1 KR 102292349 B1 KR102292349 B1 KR 102292349B1 KR 1020197025307 A KR1020197025307 A KR 1020197025307A KR 20197025307 A KR20197025307 A KR 20197025307A KR 102292349 B1 KR102292349 B1 KR 102292349B1
Authority
KR
South Korea
Prior art keywords
data
multiplier
bits
result
bit
Prior art date
Application number
KR1020197025307A
Other languages
English (en)
Other versions
KR20190139837A (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
Priority claimed from CN201710256445.XA external-priority patent/CN108733412B/zh
Priority claimed from CN201710269049.0A external-priority patent/CN108734288B/zh
Priority claimed from CN201710264686.9A external-priority patent/CN108733408A/zh
Priority claimed from CN201710269106.5A external-priority patent/CN108734281A/zh
Application filed by 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 filed Critical 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드
Priority to KR1020197038135A priority Critical patent/KR102258414B1/ko
Publication of KR20190139837A publication Critical patent/KR20190139837A/ko
Application granted granted Critical
Publication of KR102292349B1 publication Critical patent/KR102292349B1/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
    • G06F7/523Multiplying only
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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
    • 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/46Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
    • 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/50Adding; Subtracting
    • 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
    • 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
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • 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
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/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/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
    • G06N3/065Analogue 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

Landscapes

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

Abstract

본 발명은 피연산 데이터, 중간 연산 결과, 최종 연산 결과 및 캐시 대상 데이터를 포함하는 데이터를 저장하는 메모리; 상기 피연산 데이터, 중간 연산 결과, 최종 연산 결과 및/또는 캐시 대상 데이터의 폭을 조정하는 데이터 폭 조정 회로; 피연산 데이터에 대해 연산을 수행하는 연산 회로; 및, 메모리, 데이터 폭 조정 회로 및 연산 회로를 제어하는 제어 회로를 포함하는 계산 비트 폭을 동적으로 구성 가능한 처리 장치를 제공한다. 본 발명은 높은 유연성과 구성 가능성, 빠른 연산 속도 및 저전력 소비 등 장점을 갖는다.

Description

처리 장치 및 처리 방법
본 발명은 컴퓨터 분야에 관한 것으로, 특히 인공 지능 분야의 처리 장치 및 처리 방법에 관한 것이다.
빅 데이터 시대에 진입하면서, 신경망 알고리즘은 최근 몇 년간 인공 지능 분야의 연구 이슈로 떠올랐으며, 패턴 인식, 이미지 분석, 지능형 로봇 등 분야에서 광범하게 적용되고 있다.
딥 러닝은 기계 학습에서 데이터에 대한 표상 학습을 기반으로 하는 방법이다. 관측값(예를 들어, 하나의 이미지)은 각 픽셀 강도 값의 벡터와 같은 다양한 방식으로 표시되거나 또는 일련의 에지, 특정 형상의 영역 등으로 보다 추상적으로 표시될 수 있다. 어떤 특정 표시를 사용하면 인스턴스에서 인물(예를 들어, 사람의 얼굴 인식 또는 얼굴 표정 인식)을 더 쉽게 배울 수 있다.
현재 심층 신경망, 콘볼루션 신경망, 딥 빌리프(Deep belief) 네트워크 및 순환 신경망과 같은 몇가지 심층 학습 네트워크 아키텍처가 존재하며, 컴퓨터 비전, 음성 인식, 자연어 처리, 오디오 인식 및 생물 정보학 등 분야에 적용되어 매우 좋은 효과를 얻었다. 또한, 딥 러닝은 이미 유사한 용어가 되었으며, 신경망의 브랜드로 재창조되었다.
딥 러닝(신경망)이 관심을 모음에 따라, 신경망 가속기도 등장하였는데, 신경망 가속기는 전문 메모리와 연산 모듈의 설계를 통해 딥러닝 수행 시에 범용 프로세서에 비해 수십 배 심지어 백 배의 가속비를 얻을 수 있으며, 또한 부피가 더욱 작고, 전력 소비가 더욱 낮다.
본 발명은 신경망의 피연산 데이터, 중간 연산 결과, 최종 연산 결과 및 캐시 대상 데이터를 포함하는 데이터를 저장하는 메모리;
상기 피연산 데이터, 중간 연산 결과, 최종 연산 결과 및/또는 캐시 대상 데이터의 폭을 조정하는 데이터 폭 조정 회로;
신경망의 피연산 데이터에 대해 연산을 수행하는 연산 회로; 및,
메모리, 데이터 폭 조정 회로 및 연산 회로를 제어하는 제어 회로를 포함하는 계산 비트 폭을 동적으로 구성 가능한 처리 장치를 제공한다.
본 발명은 또한 제어 회로가 제어 명령어를 생성하여 메모리, 데이터 폭 조정 회로 및 연산 회로에 전송하는 단계;
메모리가 수신된 제어 명령어에 따라 연산 회로에 신경망의 피연산 데이터를 입력하는 단계;
데이터 폭 조정 회로가 수신된 제어 명령어에 따라 신경망의 피연산 데이터의 폭을 조정하는 단계;
연산 회로가 수신된 제어 명령어에 따라 제1연산 모듈 중의 대응하는 유형의 곱셈기 및 덧셈기 회로를 선택하는 단계;
연산 회로가 입력된 피연산 데이터, 신경망 매개 변수 및 제어 명령어에 따라 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계를 포함하는 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 사용 방법을 제공한다.
본 발명은 또한 신경망의 피연산 데이터를 포함하는 데이터를 저장하는 메모리; 덧셈기 회로 및 곱셈기를 사용하여 서로 다른 계산 비트 폭을 가진 신경망의 피연산 데이터에 대해 연산을 수행하는 과정을 포함하며, 신경망의 피연산 데이터에 대해 연산을 수행하는 연산 회로; 및, 피연산 데이터에 따라 연산 회로의 곱셈기 및 덧셈기 회로의 유형을 결정하여 연산을 수행하는 과정을 포함하며, 메모리 및 연산 회로를 제어하는 제어 회로를 포함하는 처리 장치를 제공한다.
본 발명은 또한 상기 처리 장치를 사용하는 방법을 제공하는바, 제어 회로가 제어 명령어를 생성하여 메모리 및 연산 회로에 전송하는 단계; 메모리는 수신된 제어 명령어에 따라 연산 회로에 신경망의 피연산 데이터를 입력하는 단계; 연산 회로는 수신된 제어 명령어에 따라 제1연산 모듈 중의 대응하는 유형의 곱셈기 및 덧셈기 회로를 선택하는 단계; 연산 회로가 입력된 피연산 데이터 및 신경망 매개 변수 및 제어 명령어에 따라 서로 다른 계산 비트 폭을 가진 신경망의 피연산 데이터에 대해 연산을 수행하여 연산 결과를 메모리에 전송하는 단계를 포함한다.
본 발명은 또한 처리 대상 데이터, 네트워크 구조 및 가중치 데이터를 포함하거나 또는 처리 대상 데이터 및/또는 오프라인 모델 데이터를 포함하는 입력 데이터를 취득하는 입력 모듈; 입력된 네트워크 구조 및 가중치 데이터에 따라 오프라인 모델을 구축하는 모델 생성 모듈; 오프라인 모델을 기반으로 연산 명령어를 생성하여 캐시하며, 상기 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻는 신경망 연산 모듈; 상기 연산 결과를 출력하는 출력 모듈; 입력 데이터 유형을 검출하며, 입력 모듈, 모델 생성 모듈 및 신경망 연산 모듈을 제어하여 연산을 수행하는 제어 모듈을 포함하는 연산 장치를 제공한다.
본 발명은 또한 상기 연산 장치에 적용되는 연산 방법을 제공하는바, 입력 데이터를 취득하는 단계;
후속 계산에서 호출하여 사용하기 위해 오프라인 모델을 취득하거나 또는 입력 데이터에 따라 오프라인 모델을 결정하여 오프라인 모델에 따라 연산 명령어를 결정하는 단계;
상기 연산 명령어를 호출하여 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어 출력하는 단계를 포함한다.
본 발명은 또한 복합 스칼라 명령어를 지원하는 장치를 제공하는바, 상기 장치는 복합 스칼라 명령어 및 데이터 - 상기 데이터는 한가지 이상의 유형을 가지며, 서로 다른 유형의 데이터가 저장 모듈의 서로 다른 주소에 저장됨 - 저장하는 저장 모듈; 저장 모듈에서 복합 스칼라 명령어를 판독하여 제어신호로 디코딩하는 제어기 모듈; 제어 신호를 수신하고, 상기 저장 모듈에서 데이터를 판독하며, 판독된 데이터의 주소에 따라 데이터 유형을 판정하여 데이터에 대해 연산을 수행하는 연산 장치 모듈을 포함한다.
본 발명은 또한 복합 스칼라 명령어를 실행하기 위한 프로세서를 제공하는데, 상기 복합 스칼라 명령어는 연산 코드 필드, 피연산자 주소 필드 및 목적지 주소 필드를 포함하며; 상기 연산 코드 필드에 저장된 연산 코드는 서로 다른 유형의 연산을 구분하기 위해 사용되며, 상기 피연산자 주소 필드는 피연산자의 유형을 구분하기 위해 사용되며, 상기 목적지 주소 필드는 연산 결과를 저장하는 주소이다.
본 발명은 또한 서로 다른 유형의 데이터를 서로 다른 주소에 저장하는 단계; 복합 스칼라 명령어를 제어 신호로 디코딩하는 단계; 제어 신호에 따라 동작 데이터를 판독하며, 판독된 동작 데이터의 주소에 따라 동작 데이터의 유형을 판정하여 동작 데이터에 대해 연산을 수행하는 단계; 연산 결과를 대응하는 유형의 주소에 저장하는 단계를 포함하는 복합 스칼라 명령어를 실행하는 방법을 제공한다.
본 발명은 또한 카운팅 될 입력 데이터가 저장 유닛에 저장한 주소를 저장하는 레지스터 유닛; 레지스터 유닛에 연결되어 계수 명령어를 취득하며, 계수 명령어에 따라 레지스터 유닛에서 입력 데이터의 저장 주소를 판독하며, 저장 유닛에서 대응되는 카운팅 될 입력 데이터를 추출하여 입력 데이터 중의 주어진 조건을 충족하는 요소의 수를 통계하여 계수 결과를 얻는 계수 유닛; 및, 계수 유닛에 연결되어 카운팅 될 입력 데이터 및 상기 계수 결과를 저장하는 저장 유닛을 포함하는 계수 장치를 제공한다.
본 발명은 또한 상기 계수 장치의 계수 방법을 제공하는데, 계수 유닛이 계수 명령어를 취득하여 계수 명령어에 따라 레지스터 유닛에서 입력 데이터의 저장 주소를 판독하며, 저장 유닛에서 대응되는 카운팅 될 입력 데이터를 추출하여 입력 데이터 중의 주어진 조건을 충족하는 요소의 수에 대해 통계하여 계수 결과를 얻는 단계; 및, 통계된 계수 결과를 저장 유닛에 전송하는 단계를 포함한다.
본 발명의 기술 방안을 보다 명확하게 설명하기 위해, 이하에서 실시예의 설명에 사용된 도면에 대해 간략히 설명하며, 이하에 첨부된 도면은 본 발명의 일부 실시예로서 당업자는 창의적인 작업을 거치지 않고서도 첨부한 도면에 기초하여 다른 도면을 취득할 수 있다는 것을 명백히 해야 한다.
도 1은 본 발명의 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다.
도 2는 본 발명의 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다.
도 3은 본 발명의 또 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다.
도 4는 본 발명의 또 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다.
도 5는 본 발명의 실시예에 따른 장치에 사용되는 비트 직렬 덧셈기 배열 트리의 개략도이다.
도 6은 본 발명에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 비트 직렬 연산기의 블록도이다.
도 7은 본 발명의 실시예에 따른 제1기본 곱셈기 장치의 구조도이다.
도 8은 본 발명의 실시예에 따른 제2기본 곱셈기 장치의 구조도이다.
도 9는 본 발명의 실시예에 따른 희소 곱셈기 장치의 구조도이다.
도 10은 본 발명의 실시예에 따른 기본 곱셈기 또는 희소 곱셈기에서 벡터 곱셈 연산을 수행하는 장치의 구조도이다.
도 11은 본 발명의 실시예에 따른 퓨전 벡터 곱셈기에서 벡터 곱셈 연산을 수행하는 장치의 구조도이다.
도 12는 본 발명에 따른 퓨전 벡터 곱셈기 장치와 다른 곱셈기 장치의 구체적인 구현 과정을 나타낸 구조도이다.
도 13은 본 발명의 실시예에 따른 제2기본 곱셈기 및 비트 직렬 덧셈기 배열 트리의 조합을 나타낸 개략도이다.
도 14는 본 발명의 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 처리 방법의 흐름도이다.
도 15는 본 발명의 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다.
도 16은 본 발명의 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다.
도 17은 본 발명의 또 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다.
도 18은 본 발명의 또 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다.
도 19는 본 발명의 실시예에 따른 기본 곱셈기 장치의 구조도이다.
도 20은 본 발명의 실시예에 따른 희소 곱셈기 장치의 구조도이다.
도 21은 본 발명의 실시예에 따른 기본 곱셈기 또는 희소 곱셈기에서 벡터 곱셈 연산을 수행하는 장치의 구조도이다.
도 22는 본 발명의 실시예에 따른 퓨전 벡터 곱셈기에서 벡터 곱셈 연산을 수행하는 장치의 구조도이다.
도 23은 본 발명의 실시예에 따른 퓨전 벡터 곱셈기 장치 및 다른 곱셈기 장치의 구체적인 구현 과정을 나타낸 구조도이다.
도 24는 본 발명의 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 처리 방법의 흐름도이다.
도 25는 일반적인 프로그래밍 프레임 워크이다.
도 26은 본 발명의 실시예에 따른 연산 방법의 연산 흐름도이다.
도 27은 본 발명의 다른 실시예에 따른 연산 장치의 블록도이다.
도 28은 본 발명의 실시예에 따른 연산 장치의 구조도이다.
도 29a는 본 발명의 실시예에 따른 저장 모듈 RAM의 구성 형태의 예시도이다.
도 29b는 본 발명의 실시예에 따른 저장 모듈의 레지스터 파일의 구성 형태의 예시도이다.
도 30a는 본 발명의 실시예에 따른 복합 스칼라 명령어의 예시도이다.
도 30b는 본 발명의 실시예에 따른 레지스터 어드레싱을 사용한 복합 스칼라 명령어의 예시도이다.
도 30c는 본 발명에 따른 레지스터 간접 어드레싱을 사용한 복합 스칼라 명령어의 예시도이다.
도 30d는 본 발명에 따른 즉시 주소 지정을 사용한 복합 스칼라 명령어의 예시도이다.
도 30e는 본 발명의 실시예에 따른 RAM어드레싱을 사용한 복합 스칼라 명령어의 예시도이다.
도 31은 본 발명의 실시예에 따른 복합 스칼라 명령어를 지원하는 연산 방법의 흐름도이다.
도 32는 본 발명의 실시예에 따른 계수 장치의 블록도이다.
도 33은 본 발명의 실시예에 따른 계수 장치의 계수 유닛의 구조도이다.
도 34는 도 33의 계수 유닛의 덧셈기의 구조도이다.
도 35는 본 발명의 실시예에 따른 계수 장치의 계수 명령어의 명령어 세트 형식의 개략도이다.
도 36은 본 발명의 실시예에 따른 계수 장치의 계수 유닛의 실행 과정의 흐름도이다.
도 37은 본 발명의 실시예에 따른 계수 장치의 구조도이다.
도 38은 본 발명의 실시예에 따른 계수 장치의 실행 과정의 흐름도이다.
이하, 첨부한 도면을 결부하여 본 발명의 기술 방안에 대해 명확하고 완전하게 설명하고자 한다. 다만, 설명되는 실시예는 본 발명의 일부분 실시예이며 모든 실시예인 것은 아니다. 당업자가 본 발명의 실시예를 기반으로 창의적인 작업을 거치지 않고 취득한 다른 모든 실시예는 모두 본 발명의 보호범위에 속한다.
본 발명에서, 상기 "메모리"는 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 내부에 집적될 수 있고, 외부 메모리로서 계산 비트 폭을 동적으로 구성 가능한 처리 장치와 데이터 전송을 수행할 수 있는 별도의 장치일 수도 있다.
도 1은 본 발명의 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다. 도 1에 도시된 바와 같이, 본 장치는 제어 회로, 데이터 폭 조정 회로, 연산 회로 및 메모리를 포함한다.
제어 회로는 데이터 폭 조정 회로, 연산 회로 및 메모리에 제어 신호를 전송하여 3자의 동작을 제어하며, 3자간의 데이터 전송을 조정한다. 메모리는 입력 데이터(피연산 데이터 및 제어 명령어 포함), 중간 연산 결과, 최종 연산 결과, 뉴런, 시냅스, 캐시 대상 데이터 등을 포함하는 관련 데이터를 저장하며, 구체적인 저장 된 데이터 내용, 스토리지 구성 방식 및 액세스와 호출 방식에 대해 수요에 따라 다르게 계획할 수 있다. 도 1에 도시된 바와 같이, 상기 데이터 폭 조정 회로는 데이터의 폭을 조정할 수 있도록 구성되는데, 상기 과정은 메모리로부터 데이터를 판독한 후에 데이터 폭 조정 회로를 통해 데이터의 비트 폭을 조정하여 연산 회로에 전송하는 과정, 연산 회로는 계산 결과를 데이터 폭 조정 회로를 통해 비트 폭을 조정한 후에 메모리에 전송하는 과정, 메모리는 데이터를 데이터 폭 조정 회로를 통해 비트 폭을 조정한 후에 메모리에 전송하는 과정 등에서 발생된다. 그 구체적인 동작은 제어 회로의 제어 신호에 의해 제어된다. 구체적인 동작은 정밀도의 손실없이 데이터의 비트 폭을 증가 또는 감소하거나 또는 유지하는 방식; 정밀도의 손실을 설정 가능한 상황에서 데이터의 비트 폭을 증가 또는 감소하거나 또는 유지하는 방식; 지정된 변환 또는 연산 요구(예컨대, 비트 AND 연산 지정)에 따라 데이터의 비트 폭에 대해 증가 또는 감소하거나 또는 유지하는 방식; 등을 포함한다. 연산 회로는 연산을 위한 적어도 하나의 덧셈 연산기와 적어도 하나의 곱셈 연산기를 포함할 수 있다. 적어도 하나의 덧셈 연산기는 덧셈기, 덧셈 트리 및/또는 직렬 덧셈기 배열 트리를 포함하고; 적어도 하나의 곱셈 연산기는 기본 곱셈기, 희소 곱셈기 및/또는 퓨전 벡터 곱셈기를 포함한다. 연산 회로는 또한 비교기 및/또는 ALU등을 포함할 수 있으며, 곱셈 연산기 및 덧셈 연산기는 계산 비트 폭이 서로 다른 데이터에 대한 연산을 수행할 수 있고, 서로 다른 수요에 따라 비트 폭이 서로 다른 연산 데이터간의 연산을 수행할 수 있다. 곱셈기는 직렬식 사칙 연산기일 수 있으며, 곱셈 연산은 직렬 방식으로 구현된다. 설명이 필요한 것은, 연산 회로는 데이터 비트 폭 조정 회로를 거치지 않고 직접 메모리와 데이터 전송을 수행할 수도 있다.
도 2는 본 발명의 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다. 도 2에 도시된 바와 같이, 본 장치는 제어 회로에 의해 메모리의 각 모듈 또는 서브 모듈 및 연산 회로를 연결하고, 적어도 하나의 제어 신호 레지스터와 적어도 하나의 제어 프로세서를 포함하며, 제어 신호 레지스터는 제어 신호를 저장하며, 대안적으로, 상기 제어 신호 레지스터는 선입 선출 방식으로 동작되는 구조로 구현된다. 제어 프로세서는 실행될 제어 신호를 추출하여 제어 로직에 대해 분석한 후, 메모리, 데이터 폭 조정 회로 및 연산 회로에 대해 제어하고 조정한다. 메모리는 입력 저장 모듈, 출력 저장 모듈, 시냅스 저장 모듈을 포함하며, 출력 저장 모듈은 중간 연산 결과와 최종 연산 결과를 저장하도록 구성된다. 데이터 폭 조정 회로는 입력 데이터 처리 모듈과 출력 데이터 처리 모듈로 구분되며, 입력 데이터 처리 모듈은 입력 저장 모듈 및/또는 시냅스 저장 모듈 중의 데이터의 데이터 폭을 조정하고, 입력 저장 모듈의 후단에 설치될 수 있으며; 출력 데이터 처리 모듈은 연산 회로에 의해 연산 된 데이터의 데이터 폭을 조정한 후에 출력 데이터 처리 모듈에 저장하며; 연산 회로는 주로 컨벌루션 계층, 완전하게 연결된 계층의 컨벌루션 연산과 풀링(pooling)층의 평균값 또는 최대값을 취하는 연산을 가속화하기 위해 사용된다. 대안적으로, 연산 회로는 곱셈기 모듈, 덧셈 트리 모듈 및 비선형 연산 모듈(예를 들어, 시그 모이 드 함수 연산을 수행하는 모듈)을 포함할 수 있다. 상기 곱셈기 모듈, 덧셈 트리 모듈 및 비선형 연산 모듈은 파이프라인 방식으로 병렬로 수행될 수 있다. 본 장치는 컨벌루션 신경망의 연산 과정을 가속화시키고, 칩 내부와 외부에서의 데이터 교환을 줄여 저장 공간을 절감할 수 있다.
도 3은 본 발명의 또 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다. 도 3에 도시된 바와 같이, 본 장치는 제어 회로에 의해 메모리의 각 모듈과 연산 회로를 연결하고, 제어 신호 레지스터와 제어 프로세서를 포함하며, 제어 신호 레지스터는 제어 신호를 저장하며, 제어 프로세서는 실행 될 제어 신호를 추출하여 제어 로직에 대해 분석한 후, 메모리, 데이터 폭 조정 회로 및 연산 회로에 대해 제어하고 조정하는 구조로 구현된다. 대안적으로, 상기 제어 신호 레지스터는 선입 선출 방식으로 동작된다. 메모리는 입력 저장 모듈, 출력 저장 모듈 및 시냅스 저장 모듈을 포함한다. 본 장치에서 시냅스 저장 모듈은 복수의 시냅스 저장 서브 모듈을 포함하고 연산 회로는 복수의 연산 모듈을 포함하며, 시냅스 저장 서브 모듈과 연산 모듈은 각각 대응되게 연결되며, 하나의 시냅스 저장 서브 모듈과 하나의 연산 모듈이 대응되게 연결할 수도 있고, 복수의 시냅스 저장 서브 모듈과 하나의 연산 모듈이 대응되게 연결할 수도 있다. 데이터 폭 조정 회로는 입력 데이터 처리 모듈 및 출력 데이터 처리 모듈로 구분될 수 있으며, 입력 데이터 처리 모듈은 입력 저장 모듈 및/또는 시냅스 저장 모듈 중의 데이터의 데이터 폭을 조정하고, 입력 저장 모듈의 후단에 설치될 수 있으며; 출력 데이터 처리 모듈은 연산 회로에 의해 연산 된 데이터의 데이터 폭을 조정한 후에 출력 데이터 처리 모듈에 저장하며; 매번 연산 시에, 입력 저장 모듈은 입력 데이터 처리 모듈을 통해 모든 연산 모듈에 입력 데이터를 전송하며, 시냅스 저장 모듈은 대응되는 연산 모듈에 시냅스 데이터를 전송하고, 연산 모듈이 연산을 수행한 후에 출력 데이터 처리 모듈이 결과를 출력 저장 모듈에 출력한다. 이에 따라, 많은 매개 변수가 존재하는 대규모적인 연산에서 연산 효율이 현저하게 향상될 수 있다. 본 장치는 컨벌루션 신경망의 연산 과정을 효과적으로 가속화시킬 수 있으며, 특히 네트워크 규모가 크고 매개 변수가 비교적 많은 상황에 적합하다.
도 4는 본 발명의 또 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다. 도 4에 도시된 바와 같이, 본 장치의 구조는 제어 회로에 의해 메모리의 각 모듈 및 연산 회로 및 데이터 폭 조정 회로가 연결되며, 하나의 명령어 대기열 및 하나의 디코더를 포함하고, 새로운 명령어가 실행될 때마다 명령어 대기열로부터 새로운 명령어를 추출해 디코더에 전송하며, 디코더에 의해 디코딩한 다음에 제어 정보를 메모리의 각 모듈, 연산 회로 및 데이터 폭 조정 회로에 전송한다. 메모리는 입력 저장 모듈, 출력 저장 모듈, 시냅스 저장 모듈 및 캐시 모듈을 포함하며, 출력 저장 모듈은 중간 연산 결과 및 최종 연산 결과를 저장하기 위해 사용된다. 여기서, 입력 저장 모듈 및 시냅스 저장 모듈은 연산 회로에 데이터를 전송할 때마다 모두 먼저 데이터를 캐시 모듈에 전송한다. 그 다음에, 캐시 된 데이터를 데이터 폭 조정 회로에 읽어들인다. 만일 제어 명령어에 의해 데이터 처리가 필요한 경우, 데이터 폭 조정 회로에서 상응한 처리를 수행하는데, 예를 들어, 데이터에 대해 정밀도 손실 없이 비트 폭의 증가, 데이터의 최하위 비트를 강제로 삭제하여 데이터의 비트 폭을 감소시키는 등의 처리를 수행한다. 데이터 폭 조정 회로에서 조정한 다음에 다시 상응한 연산 모듈에 전송한다. 만일 제어 명령어에 의해 데이터 처리가 필요하지 않은 경우, 데이터는 직접 데이터 폭 조정 회로를 거쳐 상응한 연산 모듈에 전송된다. 마찬가지로, 연산 모듈에 의해 연산된 후, 연산 결과를 먼저 데이터 폭 조정 회로에 전송하여 제어 명령어에 따라 데이터에 대해 처리하거나 처리하지 않고 직접 캐시 모듈에 전송하고, 다시 캐시 모듈에서 출력 저장 모듈에 기록한다. 연산 회로는 제1연산 모듈 및 제2연산 모듈 등 복수의 연산 모듈을 포함한다. 연산 모듈간에는 관련 연산을 병렬로 수행할 수 있거나 또는 데이터를 상호적으로 전달함으로써 국부화된 데이터의 재사용 거리를 감소시키고, 연산 속도를 더욱 향상시킨다. 제1연산 모듈은 주로 신경망 알고리즘에서 행렬 간 곱셈, 덧셈, 곱셈 혼합 덧셈, 행렬 및 벡터, 행렬 및 상수, 벡터와 벡터, 상수와 상수를 포함하는 동일하거나 다른 계산 비트 폭의 선형 연산을 가속화하며, 또한 비교 연산, 최대/최소값 선택 등에도 사용될 수 있고, 바람직한 연산은 내적, 행렬 곱셈 및/또는 행렬 덧셈 연산을 포함한다. 제2연산 모듈은 비선형 연산, 나눗셈 연산, 개별 덧셈 연산 또는 별도의 곱셈 연산 등의 상기 제1연산 모듈에서 완성되지 못한 연산을 수행하기 위해 사용된다. 해당 방식의 이점은, 제어 명령어에 따라 연산 처리에서 비트 폭을 동적으로 조정할 수 있기 때문에, 연산 회로 및 메모리의 하드웨어 이용율을 더욱 향상시킬 수 있다.
도 5는 본 발명의 실시예에 따른 장치에 사용되는 비트 직렬 덧셈기 배열 트리 장치의 개략도이며, 계산 비트 폭을 동적으로 구성 가능한 요구를 충족할 수 있다. 도 5에 도시된 바와 같이, 피연산 데이터는 M개이고, 최대 비트 폭은 N이며, M와 N은 모두 양의 정수이다. 데이터의 비트 수가 N 비트 미만이면, 데이터의 정확도에 영향을 미치지 않는 상황에서 합리적인 방법으로 자리수를 N 비트로 보충한다. 사용할 수 있는 방법은 최상위/하위 비트에 0 보수, 최상위/하위 부호 비트 보수, 시프트, 연산 동작 등을 포함한다. 비트 직렬 덧셈기 배열 트리 중의 제1층에서부터 제x층의 덧셈기는 n(n≥1)비트의 자릿수의 덧셈 연산을 수행하고, 제x+1층의 덧셈기는 N비트 이상의 자릿수의 덧셈 연산을 수행한다. 먼저, 레지스터와 각 덧셈기 중의 자리 올림 출력 단자(Cin)의 초기값을 0으로 설정하고, 각 피연산 데이터의 최하위 n비트를 취해 각각 제1계층의 덧셈기 중의 a, b단자에 입력하며, 각 덧셈기 중에서 a, b단자에 의해 전송된 피연산 데이터의 최하위 n비트의 덧셈 연산을 수행하여 얻은 결과값(s)을 상위 계층의 덧셈기 a 또는 b단자에 전달하며, 얻은 캐리값(Cout)은 해당 계층의 덧셈기의 자리 올림 입력(Cin)에 전송하여 다음 비트에서 전송되는 피연산 데이터와 덧셈 연산을 수행한다. 이전 계층의 덧셈기의 동작과 유사하게, 제x계층에 도달할 때까지, 전송 된 데이터에 대해 덧셈 연산 수행 후 결과를 상위 계층에 전달하고 상기 계층의 덧셈기에 다시 자리 올림 전송하며, 제 x계층의 덧셈기는 연산 결과를 시프팅하여 레지스터에서 전송된 원래 결과와 덧셈 연산을 수행한 후에 다시 레지스터에 저장한다. 그 다음에 다음 비트에서 연산 데이터의 다음 하위의 n비트를 선택하여 비트 직렬 덧셈기 배열 트리에 전송하여 상응한 연산을 수행한다. 이 때, 각 덧셈기의 Cin은 이전 비트에서 덧셈기의 Cout단자에서 출력된 캐리 결과이다. 바람직하게는, 제 1 계층 덧셈기의 연산이 완료된 후, 연산 될 제2배치의 n 비트 데이터를 입력 할 수 있고, 병렬 연산을 통해 연산기의 이용률을 제고하고 연산 속도를 더욱 향상시킬 수 있다. 모든 연산이 완료된 후, 레지스터 중의 데이터가 바로 연산 결과이다. 일부 실시예에서, 입력되는 피연산 데이터(a,b단자) 및 자리 올림 입력(Cin단자)이 모두 0인 경우, 덧셈기는 해당 연산 과정에서 종료됨으로써 전력 소비를 절감하는 목적을 달성할 수 있다.
도 6은 본 발명에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 비트 직렬 연산기의 블록도이다. 도 6에 도시된 바와 같이, 본 실시예에서 사용되는 기본 곱셈기 등과 같은 비트 직렬 연산기는 연산 유닛, 처리 유닛 및 저장 유닛을 포함한다. 연산 유닛은 하나 이상의 데이터의 곱셈 및/또는 덧셈 연산을 수행하며, 입력되는 피연산 데이터는 저장 유닛의 데이터 및/또는 처리 유닛에 의해 처리 된 데이터로부터 전송되며, 출력된 연산 결과는 직접 저장 유닛에 전송되어 저장되거나 또는 처리 유닛에 전송되어 처리된다. 처리 유닛은 데이터의 이동 또는 주어진 규칙에 따라 데이터의 비트 폭을 확대/축소하거나 또는 주어진 규칙에 따라 데이터의 하나 이상의 비트를 수정하는 등 처리 동작을 수행하며, 처리 대상 데이터는 연산 유닛 및/또는 저장 유닛으로부터 전송되고, 처리된 데이터는 연산 유닛 및/또는 처리 유닛에 전송될 수 있다. 저장 유닛은 피연산 데이터, 중간 연산 결과, 최종 연산 결과 등을 포함하는 데이터를 저장하도록 구성된다. 저장 유닛은 버퍼 온 칩일 수 있다. 여기서, 각 유닛은 상이한 기능에 따라 모두 복수의 유닛으로 한층 더 세분될 수 있는데, 예를 들어, 연산 유닛은 곱셈 유닛, 덧셈 유닛 등으로 세분될 수 있다. 비트 직렬 연산기의 곱셈기의 구체적인 실시예는 도 7의 제1기본 곱셈기, 도 8의 제2기본 곱셈기 및 도 9의 희소 곱셈기를 포함 할 수 있다.
도 7은 본 발명의 비트 직렬 연산기의 구체적인 실시예에 따른 제1기본 곱셈기 장치의 구조도이며, 계산 비트 폭을 동적으로 구성 가능한 요구를 충족할 수 있다. 상기 제1기본 곱셈기는 본 발명의 장치에 적용될 수 있다. 도 7에 도시된 바와 같이, M비트의 피승수 및 n비트의 승수를 포함하며, M와 N은 모두 양의 정수이다. 여기서, 승수와 피승수의 위치는 제어 모듈의 제어에 의해 교환될 수 있다. 승수의 하위 n비트(n은 1≤n≤ N인 양의 정수이고, 대안적으로 1<n≤ N일 수 있으며, 이에 따라, 연산의 병렬성을 더욱 향상시키고 하드웨어 자원을 충분히 이용하며 연산 속도를 가속화할 수 있음)를 입력 선택 회로에 입력하여 승수의 하위 n비트를 각각 피승수와 AND연산을 수행하게 하는데, 다시 말하면, 승수값이 1이면 피승수 자체를 출력하고, 그렇지 않으면 0을 출력한다. 이와 동시에, 승수를 제1시프트 레지스터에 전송하여 시프팅하고, 하위 n비트를 시프트 아웃하며, 다음번에 다시 입력 선택 회로에 입력하여 새로운 하위 n비트가 된다. 입력 선택 회로에 의해 선택된 결과를 제2시프트 레지스터에 입력하여 대응되게 시프팅한 다음에 다시 덧셈 트리에 전송하여 덧셈 연산을 수행한다. 여기서, 덧셈 연산은 주로 입력 선택 및 시프팅을 거친 데이터와 이전의 덧셈 연산 결과에 대해 덧셈 연산을 수행하는 것을 가리킨다. 얻은 결과는 중간 연산 결과로서 결과 레지스터에 저장된다. 다음번에 피승수가 입력 선택되어 시프팅 시에 결과 레지스터에서 중간 연산 결과를 추출하여 덧셈 트리(장치)에 전송하여 덧셈 연산을 수행한다. 승수가 모두 0인 경우, 곱셈 연산은 종료된다.
기본 곱셈기의 연산 흐름을 보다 명확하게 설명하기 위해, 피승수는 10111011, 즉 M = 8이고, 승수는 1011, 즉 N = 4라고 가정하는 구체적인 실시 예를 제시한다.
N = 2 일 때, 즉 매번 2 비트 이동되는 경우, 해당 연산 과정은 다음과 같다. 먼저, 승수의 최하위 2비트인 11을 취해 피승수와 함께 입력 선택 회로에 전송하면 모두 피승수 자체가 선택되고, 제1시프트 레지스터에 전송하며, 최하위에 대응되는 선택된 피승수는 시프팅 될 필요가 없이 10111011이며, 다음 하위 비트와 대응되는 선택된 피승수는 왼쪽으로 1비트 시프팅하여 101110110를 덧셈 트리에 전송하며, 전에 덧셈 연산을 수행하지 않았기 때문에 결과 레지스터에 전송되는 것은 10111011과 101110110의 합인 1000110001이다. 그 다음에, 승수를 오른쪽으로 2비트 이동한 후에 최하위 2비트인 10을 취해 피승수와 함께 입력 선택 회로에 전송하여 0 및 10111011을 얻고, 그 다음에 제2시프트 레지스터를 통해 0은 왼쪽으로 2비트 시프팅해도 여전이 0이고, 10111011는 왼쪽으로 3비트 시프팅하여 10111011000가 되며, 결과 레지스터 중의 1000110001와 함께 덧셈 트리에 전송하여 연산을 수행하여 100000001001를 얻어 결과 레지스터에 전송한다. 이 때, 승수는 오른쪽으로 2비트 시프팅되어 모두 0이므로 연산을 종료하며, 결과 레지스터 중의 100000001001가 최종 연산 결과이다.
도 8은 본 발명의 실시예에 따른 제2기본 곱셈기 장치의 구조도이며, 계산 비트 폭을 동적으로 구성 가능한 요구를 충족할 수 있다. 도 8에 도시된 바와 같이, M비트의 피승수 및 n비트의 승수를 포함하며, M와 N은 모두 양의 정수이다. 여기서, 승수와 피승수의 위치는 제어 모듈의 제어에 의해 교환될 수 있다. 피승수의 제m비트(m는 양의 정수이며, 1≤m≤M)를 입력 선택 회로에 입력하고, 승수의 하위n비트(n은 양의 정수이며, 1≤n≤ N)를 입력 선택 회로에 입력하며, 피승수의 하위m비트를 각각 승수의 하위 n비트와 곱셈 연산을 수행한다. 승수를 제1시프트 레지스터에 전송하여 시프팅하고, 하위 n비트를 시프트 아웃하며, 다음번에 다시 입력 선택 회로에 입력하여 새로운 하위 n비트가 된다. 입력 선택 회로에 의해 선택된 결과를 제2시프트 레지스터에 입력하여 대응되게 시프팅한 후에 다시 덧셈 트리에 전송하여 덧셈 연산을 수행한다. 여기서, 덧셈 연산은 주로 입력 선택 및 시프팅을 거친 데이터와 이전의 덧셈 연산 결과에 대해 덧셈 연산을 수행하는 것을 가리킨다. 얻은 결과는 중간 연산 결과로서 결과 레지스터에 저장된다. 다음번에 피승수가 입력 선택되어 시프팅 시에 결과 레지스터에서 중간 연산 결과를 추출하여 덧셈 트리(장치)에 전송하여 덧셈 연산을 수행한다. 승수가 모두 0인 경우, 피승수를 제3시프트 레지스터에 전송하여 시프팅하여 m비트를 제거하며, 승수를 백업 레지스터에서 추출하여 상기 과정을 반복하여 연산을 수행한다. 피승수, 승수가 모두 0이면, 곱셈 연산이 종료된다.
도 9는 본 발명의 실시예에 따른 희소 곱셈기 장치의 구조도이며, 계산 비트 폭을 동적으로 구성 가능한 요구를 충족할 수 있다. 희소 곱셈기는 희소 연산에 사용되는데, 다시 말하면, 승수 또는 피승수의 이진수 표시에서 1이 희소인 경우, 승수 또는 피승수에서 희소 방식으로 1의 위치를 표시하여 연산의 유효성을 더욱 향상시키고 연산 속도를 제고한다. 도 9에 도시 된 바와 같이, M비트의 피승수 및 n비트의 승수를 포함하며, M와 N은 모두 양의 정수이다. 다시 말하면, 여기서 피승수와 승수의 비트수는 동일할 수도 있고, 동일하지 않을 수도 있다. 여기서, 승수는 희소 표시 방법을 사용하여 절대 또는 상대 위치의 방식으로 상기 승수에서 1의 위치를 표시한다. 여기서, 본 실시예에서 제공되는 희소 곱셈기의 연산 모듈은 모두 구성 가능하므로, 상이한 표시 방법을 사용하여 연산이 수행될 때, 연산 유닛 내부의 장치는 요구 사항에 따라 구성될 수 있다. 예를 들어, 결과 레지스터가 덧셈 연산을 수행할 때 시프팅할 필요가 없기 때문에 결과 레지스터와 연결된 시프트 레지스터를 작동되지 않도록 구성할 수 있으며, 승수의 시프팅 정보를 해당 시프트 레지스터에 전송하지 않을 수도 있다. 본 발명의 기술 분야의 통상의 지식을 가진 자라면 필요에 따라 관련 세부 사항을 상응하게 조정하여 피승수의 시프팅 및 결과에 대한 덧셈 연산 등 구체적인 관련 사항을 완성할 수 있다는 것을 이해할 수 있을 것이다.
희소 곱셈기의 연산 흐름을 보다 명확하게 설명하기 위해, 피승수는 10111011, 즉 M = 8이고, 승수는 00100010, 즉 N = 8라고 가정하는 구체적인 실시예를 제시한다. 절대 표시방식으로 승수를 표시할 때 절대 위치로 승수 중의 1의 위치를 표시하는데, 숫자의 가장 오른쪽 비트를 제0비트라고 가정하면, 제0비트의 좌측 비트는 제1비트이며, 이런 방식으로 유추할 수 있다. 이에 따라, 상기 승수는 (1,5)로 표시된다. 이와 동시에, 해당 실시예 중의 결과 레지스터와 연결된 시프트 레지스터가 작동되지 않고, 승수의 데이터를 해당 시프트 레지스터에 전송하지 않도록 요구할 수 있다. 먼저 승수의 첫번째 숫자, 즉 1를 취하며, 이는 해당 제1비트에 1이 있음을 표시한다. 피승수를 시프트 레지스터에 전송하여 1비트 이동된 101110110를 덧셈기에 전송한다. 전에 덧셈하였기 때문에 결과 레지스터에 전송된 결과는 101110110이다. 그 다음에, 승수의 다음 1의 위치, 즉 5를 취해 피승수와 함께 시프트 레지스터에 전송한다. 시프트 레지스터에서 피승수를 오른쪽으로 5비트 시프팅하여 얻은 1011101100000를 덧셈기에 전송한다. 이와 동시에, 결과 레지스터 중의 결과인 101110110를 취하며, 절대적인 표시 방법을 사용하므로 시프팅할 수 없기에, 직접 해당 결과를 덧셈기에 전송하여 덧셈 연산을 수행하여 1100011010110를 얻는다. 덧셈 연산 결과를 다시 결과 레지스터에 전송한다. 이 때, 승수 중의 1에 대한 연산이 모두 완료되었기에 연산이 종료된다. 만일 상대적인 방식으로 승수를 표시하면, 그 표시 방법을 최상위 비트(가장 왼쪽 비트)의 0이 아닌 첫번째 비트에서 가장 낮은 비트까지 0이 아니 두 숫자 사이의 이격된 비트수로 정의할 수 있다. 예를 들어, 00100010의 경우, 첫번째 0이 아닌 숫자와 다음의 0이 아닌 숫자 사이의 간격은 4비트이며, 두번째 0이 아닌 숫자와 최하위 숫자 사이의 간격은 1비트이기에 (4,1)로 표시된다. 여기서, 해당 실시예 중의 결과 레지스터와 연결 된 시프트 레지스터와 피승수와 연결된 시프트 레지스터가 모두 동작되도록 요구할 수 있다. 이에 따라, 먼저 승수의 첫번째 숫자 4를 취해 두 시프트 레지스터에 전송하면, 피승수가 오른쪽으로 4비트 이동되고 결과 레지스터 중의 데이터도 오른쪽으로 4비트 이동된 후 덧셈기에 전송되어 덧셈 연산을 수행한다. 이 때, 결과 레지스터의 데이터가 0이기 때문에 얻어진 덧셈 연산 결과인 101110110000를 결과 레지스터에 저장한다. 그 다음에, 승수의 두번째 숫자 1을 취해 직접 시프트 레지스터에 전송하여 101110110 및 1011101100000을 얻어 덧셈기에 전송하여 덧셈 연산을 수행하여 1100011010110를 얻는다. 해당 결과를 다시 결과 레지스터에 전송한다. 이 때, 승수 중의 1에 대한 연산이 모두 완료되었기에 연산이 종료된다. 이러한 방식으로, 데이터의 희소성을 효과적으로 이용하여 유효한 연산, 즉 0이 아닌 데이터 사이의 연산만 수행함으로써 유효하지 않은 연산을 줄이고 연산 속도를 향상시키며 성능 대 전력비를 제고할 수 있다.
도 11은 본 발명의 실시예에 따른 퓨전 벡터 곱셈기에서 벡터 곱셈 연산을 수행하는 장치의 구조도이다. 도 11에 도시된 바와 같이, 여기서 벡터
Figure 112019088654803-pct00001
{AN…A2A1A0} 및
Figure 112019088654803-pct00002
{BN…B2B1B0}의 내적값을 계산한다고 가정하며, 상응한 차원의 데이터를 곱셈기에 전송하여 연산을 대기한다. 여기서,
Figure 112019088654803-pct00003
Figure 112019088654803-pct00004
의 차원은 모두 동일하게 (N+1)로 요구되지만, 각 차원의 비트 폭은 동일하지 않을 수 있으며, 이와 동시에, 매번 마다 n비트를 취해 연산을 수행하며, n은 1보다 크고
Figure 112019088654803-pct00005
의 한 차원의 비트 폭보다 작은 양의 정수라고 가정한다. 먼저, B0의 하위 n비트를 취해 A0과 함께 모두 하나의 입력 선택 회로에 전송하며, B0의 하위n비트를 각각 A0와 AND연산을 수행하며, 얻은 선택 된 결과를 후속의 시프트 레지스터에 전송하여 시프팅한다. 시프팅 후, 결과를 덧셈 트리에 전송한다. 이 과정에서, 각 차원에 대해 모두 첫번째 차원과 동일한 동작을 수행한다. 그 다음에, 덧셈 트리를 통해 이러한 차원이 전송된 데이터에 대해 덧셈 연산을 수행하여 결과 레지스터 중의 값을 덧셈 트리에 전송하여 함께 덧셈 연산을 수행하며, 얻어진 덧셈 연산 결과를 다시 결과 레지스터에 전송한다. 연산과 동시에 각 차원의 Bi (i=0,1,……,N)값을 시프트 레지스터에 전송하여 오른쪽으로 n비트 시프팅 후, 상기 동작을 반복하는데, 다시 말하면, 시프팅된 Bi(i=0,1,……,N)값의 최하위 n비트를 취해 대응되는 Ai(i=0,1,……,N)값과 함께 입력 선택 회로에 전송하여 선택하며, 다시 시프트 레지스터에 전송하여 시프팅하고, 덧셈 트리에 전송하여 덧셈 연산을 수행한다. 각 차원의 Bi (i=0,1,……,N)값이 모두 0이 될 때까지 해당 과정을 반복하며, 이 때, 결과 레지스터 중의 데이터가 바로 구하려는 최종 연산 결과이다. 상기 곱셈기를 이용하면 피연산 데이터의 비트 폭을 유연하게 구성할 수 있고, 데이터 세트에 대해 곱셈 연산을 수행할 때마다 새로 피승수의 시프트 비트를 카운트할 필요가 없다. 이와 동시에, 데이터 비트 수가 비교적 적거나 벡터 비트 수가 많은 경우, 데이터의 낮은 비트 폭과 벡터의 높은 차원의 특성을 활용하여 파이프 라인 방식으로 병렬로 연산 과정을 수행할 수 있기 때문에 필요한 연산 시간을 절감하고, 연산 속도를 더욱 향상시키며, 성능 대 전력비를 제고할 수 있다.
퓨전 벡터 곱셈기의 연산 흐름 및 해당 곱셈기와 다른 곱셈기 연산 흐름의 차이점 및 장점을 보다 명확하게 나타내기 위해, 특정 실시예에 도 10, 도 11 및 도 12을 결부하여 설명하고자 한다. 먼저,
Figure 112019088654803-pct00006
Figure 112019088654803-pct00007
의 차원은 8, 즉N = 7,
Figure 112019088654803-pct00008
{A7…A2A1A0},
Figure 112019088654803-pct00009
{B7…B2B1B0},
Figure 112019088654803-pct00010
의 비트 폭은 8비트, 즉
Figure 112019088654803-pct00011
의 각 차원이 모두 8비트, 즉 Ai={ai7…ai1ai0}이며, 여기서 i = 0, 1, ......,7;
Figure 112019088654803-pct00012
의 비트 폭은 4비트, 즉
Figure 112019088654803-pct00013
의 각 차원은 모두 4비트, 즉 Bi={bi3bi2bi1bi0}이며, 여기서, i = 0, 1, ......,7이라 가정한다. 그러면, 벡터의 내적은
Figure 112019088654803-pct00014
이다.
일반적으로, 기본 곱셈기 또는 상기 기본 또는 희소 곱셈기(n은 2, 즉 승수가 2비트씩 이동한다고 가정)의 연산 흐름은 두가지 단계로 나뉜다. 도 10에 도시 된 바와 같이, 먼저 각 성분의 곱을 계산한 다음 합산한다. 구체적으로, 특정 차원 Ai 및 Bi에 대해 연산을 수행하고, 시프트 레지스터가 클리어된다. 첫번째 클록 사이클에서 Bi의 최하위인 bi0, bi1를 취하며, 입력 선택, 시프팅을 거치고 덧셈기에 전송하여 Ai*bi0bi1값을 얻고, 시프트 레지스터에 2를 더하며; 두번째 클록 사이클에서 Bi를 오른쪽으로 2비트 시프팅하여 최하위 비트를 취해 최하위 비트인 bi2,bi3를 얻으며, 입력 선택 및 시프팅을 거쳐 Ai*bi2bi3를 얻고, 결과를 이전의 합과 덧셈하여 최종 연산 결과인 Ai*bi0bi1bi2bi3, 즉, 상기 차원의 최종 연산 결과인 Ai*Bi를 얻는다. 다음 차원의 연산을 수행하는데, Ai+1 및 Bi+1를 입력하고, 시프트 레지스터를 클리어하며……모든 차원에 대해 연산하여 (A0*B0,A1*B1,……,A7*B7)을 얻으며, 단계 1의 연산이 완료된다. 그 다음에, 단계 2에서 곱을 덧셈 트리에 전송하여 덧셈 연산을 수행하여 최종 벡터 내적 결과, 즉
Figure 112019088654803-pct00015
를 얻는다. 도 11 및 도 12에 도시된 바와 같이, 단계 1에서는 하나의 곱셈기를 선택하여 차례로 각 차원에 대해 계산할 수 있으며; 또는, 복수의 곱셈기를 제공하여 병렬로 연산을 수행하여 하나의 곱셈기에서 하나의 차원의 연산을 수행할 수 있다. 복수의 곱셈기를 사용하는 경우, 각 차원의 승수Bi의 시프팅값을 다시 카운팅해야 한다. 해당 단계의 곱셈기는 상기 제1기본 곱셈기, 제2기본 곱셈기 또는 희소 곱셈기를 모두 사용할 수 있다.
상기 연산기는 임의의 조합으로 필요한 연산을 수행할 수 있다. 예를 들면, 도 13에 도시된 바와 같이, 제2기본 곱셈기 및 비트 직렬 덧셈기 배열 트리를 조합하여 벡터 곱셈 연산을 수행할 수 있다. 도 11에 도시된 바와 같이, 여기서 벡터
Figure 112019088654803-pct00016
{AN…A2A1A0} 및
Figure 112019088654803-pct00017
{BN…B2B1B0}의 내적값을 계산한다고 가정하며, 각 상응한 차원의 데이터를 곱셈기에 전송하여 연산을 대기한다. 여기서,
Figure 112019088654803-pct00018
Figure 112019088654803-pct00019
의 차원은 모두 동일하게 (N+1)로 요구되지만, 각 차원의 비트 폭은 동일하지 않을 수 있으며, 이와 동시에, A는 피승수이고 B는 승수이며, 매번 연산할 때마다 A는 지정된 m비트를 취하고, B는 지정 된 n비트를 취해 연산을 수행하며, m은
Figure 112019088654803-pct00020
의 한 차원의 비트 폭보다 작은 양의 정수이고, n은
Figure 112019088654803-pct00021
의 한 차원의 비트 폭보다 작은 양의 정수라고 가정한다. 먼저,A0의 하위 m비트 및 B0의 하위 n비트를 곱셈기에 전송하여 A0의 하위 m비트와 B0의 하위n비트에 대해 곱셈 연산을 수행하여 얻은 선택된 결과를 비트 직렬 덧셈기 배열 트리에 전송하여 덧셈 연산을 수행한다. 그 다음에 결과를 저장 유닛에 저장한다. 그 다음에, B를 n비트 시프팅하여 A의 하위 m비트와 곱셈 연산을 수행하며, 비트 직렬 덧셈기 배열 트리에 전송하여 덧셈 연산을 수행하고, 동시에 원래 저장 유닛의 데이터는 제3시프팅 유닛에 의해 시프팅 된 후에 함께 덧셈 연산을 수행하여 결과를 저장 유닛에 저장한다. B에 대해 모두 연산한 후, A를 m비트 시프팅하여 다시 차례로 B의 n비트와 연산을 수행한다. 모든 연산이 수행된 후, 저장 유닛 중의 데이터가 바로 구하려는 최종 연산 결과이다. 상기 곱셈기를 이용하면 피연산 데이터의 비트 폭을 유연하게 구성할 수 있고, 중간 데이터를 저장할 필요가 없기 때문에 스토리지 부담을 감소시키고, 연산 속도를 향상시킨다. 이와 동시에, 데이터 비트 수가 비교적 적거나 벡터 비트 수가 많은 경우, 데이터의 낮은 비트 폭과 벡터의 높은 차원의 특성을 활용하여 파이프 라인 방식으로 병렬로 연산 과정을 수행할 수 있기 때문에 필요한 연산 시간을 절감하고, 연산 속도를 더욱 향상시키며, 성능 대 전력비를 제고할 수 있다.
상술한 바와 같이, 해당 장치 및 방법을 사용하면 신경망의 연산 속도를 현저히 향상시키는 동시에 동적으로 구성 가능하기 때문에 데이터 비트 폭의 다양성과 연산 과정에서의 데이터 비트 폭의 동적 변동성의 요구 사항을 충족할 수 있고, 높은 유연성과 구성 가능성, 빠른 연산 속도 및 저전력 소비 등 장점을 갖는다.
본 발명의 실시예의 다른 양태에 따르면, 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 처리 방법을 제공하는데, 도 14에 도시 된 바와 같이, 다음과 같은 단계를 포함한다.
S1401, 제어 회로가 제어 명령어를 생성하여 메모리, 데이터 폭 조정 회로 및 연산 회로에 전송하는 단계;
S1402, 메모리가 수신된 제어 명령어에 따라 연산 회로에 신경망의 피연산 데이터를 입력하는 단계;
S1403, 데이터 폭 조정 회로가 실제 수요에 따라 상기 피연산 데이터, 중간 연산 결과, 최종 연산 결과 및/또는 캐시 대상 데이터의 폭을 조정하는 단계;
S1404, 연산 회로가 수신된 제어 명령어에 따라 대응하는 유형의 곱셈기 및 덧셈기 회로의 비트 직렬 연산기를 선택하는 단계;
S1405, 연산 회로가 입력된 피연산 데이터 및 신경망 매개 변수 및 제어 명령어에 따라 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계.
상기 실시예의 방법의 데이터 폭 조정 회로를 사용하면 신경망의 연산 속도를 현저히 향상시키는 동시에 동적으로 구성 가능하기 때문에 데이터 비트 폭의 다양성과 연산 과정에서의 데이터 비트 폭의 동적 변동성의 요구 사항을 충족할 수 있다.
또한, 단계S1403에서 제1연산 모듈은 덧셈기 회로 및 기본 곱셈기, 희소 곱셈기 및/또는 퓨전 벡터 곱셈기를 포함하며, 신경망의 피연산 데이터에 대해 연산을 수행한다. 구체적인 덧셈기 회로, 기본 곱셈기, 희소 곱셈기 및/또는 퓨전 벡터 곱셈기를 동적으로 선택하는 것을 통해 처리 방법의 높은 유연성과 구성 가능성, 빠른 연산 속도 및 저전력 소비 등 특징을 갖는다.
이하, 다른 기술 방안에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치 및 처리 방법의 실시예를 설명하고자 하며, 이하에 설명되는 기술 방안은 데이터 폭 조정 회로 및 데이터 폭 조정 회로와 관련된 기능 유닛을 포함하지 않는다.
도 15는 본 발명의 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다. 도 15에 도시된 바와 같이, 본 장치는 주로 제어 회로, 연산 회로 및 메모리 등 3개 부분으로 구분된다. 제어 회로는 연산 회로와 메모리에 제어 신호를 송신하여 양자의 실행을 제어하고, 양자간의 데이터 전송을 조정한다. 각 부분의 기능은 도 1에 도시된 실시예의 각 부분의 설명 내용을 참조할 수 있으며, 여기서는 더 이상 설명하지 않는다.
도 16은 본 발명의 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다. 도 16에 도시된 구조는 도2에 도시된 구조를 기초로 데이터 폭 조정 회로를 제거한 것인데, 다시 말하면, 메모리가 직접 연산 회로에 연결되며, 상응한 각 설치 방식은 상기 설명을 참조할 수 있다. 3개 모듈은 파이프라인 방식으로 병렬로 수행될 수 있다. 본 장치는 컨벌루션 신경망의 연산 과정을 가속화시키고, 칩 내부와 외부에서의 데이터 교환을 줄여 저장 공간을 절감할 수 있다.
도 17은 본 발명의 또 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다. 도 17에 도시된 구조는 도 3에 도시된 구조와 유사하며, 다른 점은 도 17은 데이터 폭 조정 회로의 관련 구조와 연결 관계를 포함하지 않는 것이며, 도 17의 각 연결 관계 및 구현되는 기능에 대해서는 도 3의 상응한 실시예를 참조할 수 있으며, 여기서는 더 이상 설명하지 않는다. 본 실시예의 처리 장치는 많은 매개 변수가 존재하는 대규모적인 연산에서 연산 효율을 현저하게 향상시킬 수 있다. 본 장치는 컨벌루션 신경망의 연산 과정을 효과적으로 가속화시킬 수 있으며, 특히 네트워크 규모가 크고 매개 변수가 비교적 많은 상황에 적합하다.
도 18은 본 발명의 또 다른 실시예에 따른 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 구조도이다. 도 18에 도시된 구조는 도 4에 도시된 구조와 유사하며, 다른 점은 도 18은 데이터 폭 조정 회로의 관련 구조와 연결 관계를 포함하지 않는 것이며, 도 18의 각 연결 관계 및 구현되는 기능에 대해서는 도 4의 상응한 실시예를 참조할 수 있으며, 여기서는 더 이상 설명하지 않는다.
도 19는 본 발명의 실시예에 따른 기본 곱셈기 장치의 구조도이며, 계산 비트 폭을 동적으로 구성 가능한 요구를 충족할 수 있다. 도 19에 도시된 바와 같이, M비트의 피승수 및 n비트의 승수를 포함하며, M와 N은 모두 양의 정수이다. 다시 말하면, 여기서 피승수와 승수의 비트수는 동일할 수도 있고, 동일하지 않을 수도 있다. 승수의 하위 n비트(n은 양의 정수이며, 1<n≤N)를 입력 선택 회로에 입력하여 승수의 하위 n값을 각각 피승수와 AND연산을 수행하며, 다시 말하면, 승수의 해당 비트값이 1이면 피승수 자체를 선택하고, 그렇지 않으면 0을 선택한다. 이와 동시에, 승수를 제1시프트 레지스터에 전송하여 시프팅하고, 하위 n비트를 시프트 아웃하며, 다음번에 다시 입력 선택 회로에 입력하여 새로운 하위 n비트가 된다. 입력 선택된 결과를 제2시프트 레지스터에 입력하여 대응되게 시프팅한 후에 다시 덧셈 트리에 전송하여 덧셈 연산을 수행한다. 여기서, 덧셈 연산은 주로 입력 선택 및 시프팅을 거친 데이터와 이전의 덧셈 연산 결과에 대해 덧셈 연산을 수행하는 것을 가리킨다. 얻은 결과는 중간 연산 결과로서 결과 레지스터에 저장된다. 다음번에 피승수가 입력 선택되어 시프팅 시에 결과 레지스터에서 중간 연산 결과를 추출하여 덧셈 트리(장치)에 전송하여 덧셈 연산을 수행한다. 승수가 모두 0이면, 곱셈 연산을 종료한다.
기본 곱셈기의 연산 흐름을 보다 명확하게 설명하기 위해, 피승수는 10111011, 즉 M = 8이고, 승수는 1011, 즉 N = 4라고 가정하는 구체적인 실시 예를 제시한다.
n = 2 일 때, 즉 매번 2 비트 이동되는 경우, 해당 연산 과정은 다음과 같다. 먼저, 승수의 최하위2비트인 11을 취해 피승수와 함께 입력 선택 회로에 전송하면 모두 피승수 자체가 선택되고, 제1시프트 레지스터에 전송하며, 최하위에 대응되는 선택된 피승수는 시프팅될 필요가 없이 10111011이며, 다음 하위 비트와 대응되는 선택된 피승수는 왼쪽으로 1비트 시프팅하여 101110110를 덧셈 트리에 전송하며, 전에 덧셈 연산을 수행하지 않았기 때문에 결과 레지스터에 전송되는 것은 10111011과 101110110의 합인 1000110001이다. 그 다음에, 승수를 오른쪽으로 2비트 이동한 후에 최하위 2비트인 10을 취해 피승수와 함께 입력 선택 회로에 전송하여 0 및 10111011을 얻고, 그 다음에 제2시프트 레지스터를 통해 0은 왼쪽으로 2비트 시프팅해도 여전이 0이고, 10111011는 왼쪽으로 3비트 시프팅하여 10111011000가 되며, 결과 레지스터 중의 1000110001와 함께 덧셈 트리에 전송하여 연산을 수행하여 100000001001를 얻어 결과 레지스터에 전송한다. 이 때, 승수는 오른쪽으로 2비트 시프팅되어 모두 0이므로 연산을 종료하며, 결과 레지스터 중의 100000001001가 최종 연산 결과이다.
도 20은 본 발명의 실시예에 따른 희소 곱셈기 장치의 구조도이며, 계산 비트 폭을 동적으로 구성 가능한 요구를 충족할 수 있다. 문자 그대로, 희소 곱셈기는 희소 연산에 사용되는데, 다시 말하면, 승수 또는 피승수의 이진수 표시에서 1이 희소인 경우, 승수 또는 피승수에서 희소 방식으로 1의 위치를 표시하여 연산의 유효성을 더욱 향상시키고 연산 속도를 제고한다. 도 20에 도시된 바와 같이, M비트의 피승수 및 n비트의 승수를 포함하며, M와 N은 모두 양의 정수이다. 다시 말하면, 여기서 피승수와 승수의 비트수는 동일할 수도 있고, 동일하지 않을 수도 있다. 여기서, 승수는 희소 표시 방법을 사용하여 절대 또는 상대 위치의 방식으로 상기 승수에서 1의 위치를 표시한다. 여기서, 연산 회로는 구성 가능하므로, 상이한 표시 방법을 사용하여 연산이 수행될 때, 연산 유닛 내부의 장치는 요구 사항에 따라 구성될 수 있다. 예를 들어, 결과 레지스터가 덧셈 연산을 수행할 때 시프팅할 필요가 없기 때문에 결과 레지스터와 연결된 시프트 레지스터를 동작되지 않도록 구성할 수 있으며, 승수의 시프팅 정보를 해당 시프트 레지스터에 전송하지 않을 수도 있다. 필요에 따라 관련 세부 사항을 상응하게 조정하여 피승수의 시프팅 및 결과에 대한 덧셈 연산 등 구체적인 관련 사항을 완성할 수 있다.
희소 곱셈기의 연산 흐름을 보다 명확하게 설명하기 위해, 피승수는 10111011, 즉 M = 8이고, 승수는 00100010, 즉 N = 8라고 가정하는 구체적인 실시예를 제시한다. 절대 표시방식으로 승수를 표시할 때 절대 위치로 승수 중의 1의 위치를 표시하는데, 숫자의 가장 오른쪽 비트를 제0비트라고 가정하면, 제0비트의 좌측 비트는 제1비트이며, 이런 방식으로 유추할 수 있다. 이에 따라, 상기 승수는 (1,5)로 표시된다. 이와 동시에, 해당 실시예 중의 결과 레지스터와 연결된 시프트 레지스터가 동작되지 않고, 승수의 데이터를 해당 시프트 레지스터에 전송하지 않도록 요구할 수 있다. 먼저 승수의 첫번째 숫자, 즉 1를 취하며, 이는 해당 제1비트에 1이 있음을 표시한다. 피승수를 시프트 레지스터에 전송하여 1비트 이동된 101110110를 덧셈기에 전송한다. 전에 덧셈하였기 때문에 결과 레지스터에 전송된 결과는 101110110이다. 그 다음에, 승수의 다음 1의 위치, 즉 5를 취해 피승수와 함께 시프트 레지스터에 전송한다. 시프트 레지스터에서 피승수를 오른쪽으로 5비트 시프팅하여 얻은 1011101100000를 덧셈기에 전송한다. 이와 동시에, 결과 레지스터 중의 결과인 101110110를 취하며, 절대적인 표시 방법을 사용하므로 시프팅할 수 없기에, 직접 해당 결과를 덧셈기에 전송하여 덧셈 연산을 수행하여 1100011010110를 얻는다. 덧셈 연산 결과를 다시 결과 레지스터에 전송한다. 이 때, 승수 중의 1에 대한 연산이 모두 완료되었기에 연산이 종료된다. 만일 상대적인 방식으로 승수를 표시하면, 그 표시 방법을 최상위 비트(가장 왼쪽 비트)의 0이 아닌 첫번째 비트에서 가장 낮은 비트까지 0이 아니 두 숫자 사이의 이격된 비트수로 정의할 수 있다. 예를 들어, 00100010의 경우, 첫번째 0이 아닌 숫자와 다음의 0이 아닌 숫자 사이의 간격은 4비트이며, 두번째 0이 아닌 숫자와 최하위 숫자 사이의 간격은 1비트이기에 (4,1)로 표시된다. 여기서, 해당 실시예 중의 결과 레지스터와 연결된 시프트 레지스터와 피승수와 연결된 시프트 레지스터가 모두 작동되도록 요구할 수 있다. 이에 따라, 먼저 승수의 첫번째 숫자 4를 취해 두 시프트 레지스터에 전송하면, 피승수가 오른쪽으로 4비트 이동되고 결과 레지스터 중의 데이터도 오른쪽으로 4비트 이동된 후 덧셈기에 전송되어 덧셈 연산을 수행한다. 이 때, 결과 레지스터의 데이터가 0이기 때문에 얻어진 덧셈 연산 결과인 101110110000를 결과 레지스터에 저장한다. 그 다음에, 승수의 두번째 숫자 1을 취해 직접 시프트 레지스터에 전송하여 101110110 및 1011101100000을 얻어 덧셈기에 전송하여 덧셈 연산을 수행하여 1100011010110를 얻는다. 해당 결과를 다시 결과 레지스터에 전송한다. 이 때, 승수 중의 1에 대한 연산이 모두 완료되었기에 연산이 종료된다. 이러한 방식으로, 데이터의 희소성을 효과적으로 이용하여 유효한 연산, 즉 0이 아닌 데이터 사이의 연산만 수행함으로써 유효하지 않은 연산을 줄이고 연산 속도를 향상시키며 성능 대 전력비를 제고할 수 있다.
도 22는 본 발명의 실시예에 따른 퓨전 벡터 곱셈기에서 벡터 곱셈 연산을 수행하는 장치의 구조도이다. 도 8에 도시된 바와 같이, 여기서 벡터
Figure 112019088654803-pct00022
{AN…A2A1A0} 및
Figure 112019088654803-pct00023
{BN…B2B1B0}의 내적값을 계산한다고 가정하며, 상응한 차원의 데이터를 곱셈기에 전송하여 연산을 대기한다. 여기서,
Figure 112019088654803-pct00024
Figure 112019088654803-pct00025
의 차원은 모두 동일하게 (N+1)로 요구되지만, 각 차원의 비트 폭은 동일하지 않을 수 있으며, 이와 동시에, 매번 마다 n비트를 취해 연산을 수행하며, n은 1보다 크고
Figure 112019088654803-pct00026
의 한 차원의 비트 폭보다 작은 양의 정수라고 가정한다. 먼저, B0의 하위 n비트를 취해 A0과 함께 모두 하나의 입력 선택 회로에 전송하며, B0의 하위n비트를 각각 A0와 AND연산을 수행하며, 얻은 선택 된 결과를 후속의 시프트 레지스터에 전송하여 시프팅한다. 시프팅 후, 결과를 덧셈 트리에 전송한다. 이 과정에서, 각 차원에 대해 모두 첫번째 차원과 동일한 동작을 수행한다. 그 다음에, 덧셈 트리를 통해 이러한 차원이 전송된 데이터에 대해 덧셈 연산을 수행하여 결과 레지스터 중의 값을 덧셈 트리에 전송하여 함께 덧셈 연산을 수행하며, 얻어진 덧셈 연산 결과를 다시 결과 레지스터에 전송한다. 연산과 동시에 각 차원의 Bi (i=0,1,……,N)값을 시프트 레지스터에 전송하여 오른쪽으로 n비트 시프팅 후, 상기 동작을 반복하는데, 다시 말하면, 시프팅 된 Bi(i=0,1,……,N)값의 최하위 n비트를 취해 대응되는 Ai(i=0,1,……,N)값과 함께 입력 선택 회로에 전송하여 선택하며, 다시 시프트 레지스터에 전송하여 시프팅하고, 덧셈 트리에 전송하여 덧셈 연산을 수행한다. 각 차원의 Bi (i=0,1,……,N)값이 모두 0이 될 때까지 해당 과정을 반복하며, 이 때, 결과 레지스터 중의 데이터가 바로 구하려는 최종 연산 결과이다. 상기 곱셈기를 이용하면 피연산 데이터의 비트 폭을 유연하게 구성할 수 있고, 데이터 세트에 대해 곱셈 연산을 수행할 때마다 새로 피승수의 시프트 비트를 카운트할 필요가 없다. 이와 동시에, 데이터 비트 수가 비교적 적거나 벡터 비트 수가 많은 경우, 데이터의 낮은 비트 폭과 벡터의 높은 차원의 특성을 활용하여 파이프 라인 방식으로 병렬로 연산 과정을 수행할 수 있기 때문에 필요한 연산 시간을 절감하고, 연산 속도를 더욱 향상시키며, 성능 대 전력비를 제고할 수 있다.
도 21, 도 22 및 도 23을 결부하여 설명한 바와 같이, 다양한 방식을 사용하여 벡터의 내적 연산을 수행할 수 있다. 먼저,
Figure 112019088654803-pct00027
Figure 112019088654803-pct00028
의 차원은 8, 즉N = 7,
Figure 112019088654803-pct00029
{A7…A2A1A0},
Figure 112019088654803-pct00030
{B7…B2B1B0},
Figure 112019088654803-pct00031
의 비트 폭은 8비트, 즉
Figure 112019088654803-pct00032
의 각 차원이 모두 8비트, 즉 Ai={ai7…ai1ai0}이며, 여기서 i = 0, 1, ......,7;
Figure 112019088654803-pct00033
의 비트 폭은 4비트, 즉
Figure 112019088654803-pct00034
의 각 차원은 모두 4비트, 즉 Bi={bi3bi2bi1bi0}이며, 여기서, i = 0, 1, ......,7이라 가정한다. 그러면, 벡터의 내적은
Figure 112019088654803-pct00035
이다.
기본 곱셈기 또는 상기 기본 또는 희소 곱셈기(n은 2, 즉 승수가 2비트씩 이동한다고 가정)의 연산 흐름은 두가지 단계로 나뉜다. 도 21에 도시된 바와 같이, 먼저 각 성분의 곱을 계산한 다음 합산한다. 구체적으로, 특정 차원 Ai 및 Bi에 대해 연산을 수행하고, 시프트 레지스터가 클리어된다. 첫번째 클록 사이클에서Bi의 최하위인 bi0, bi1를 취하며, 입력 선택, 시프팅을 거치고 덧셈기에 전송하여 Ai*bi0bi1값을 얻고, 시프트 레지스터에 2를 더하며; 두번째 클록 사이클에서 Bi를 오른쪽으로 2비트 시프팅하여 최하위 비트를 취해 최하위 비트인 bi2,bi3를 얻으며, 입력 선택 및 시프팅을 거쳐 Ai*bi2bi3를 얻고, 결과를 이전의 합과 덧셈하여 최종 연산 결과인Ai*bi0bi1bi2bi3, 즉, 상기 차원의 최종 연산 결과인 Ai*Bi를 얻는다. 다음 차원의 연산을 수행하는데, Ai+1 및 Bi+1를 입력하고, 시프트 레지스터를 클리어하며……모든 차원에 대해 연산하여 (A0*B0,A1*B1,……,A7*B7)을 얻으며, 단계 1의 연산이 완료된다. 그 다음에, 단계 2에서 곱을 덧셈 트리에 전송하여 덧셈 연산을 수행하여 최종 벡터 내적 결과, 즉
Figure 112019088654803-pct00036
를 얻는다. 도 7에 도시된 바와 같이, 단계 1에서는 하나의 곱셈기를 선택하여 차례로 각 차원에 대해 계산할 수 있으며; 또는, 복수의 곱셈기를 제공하여 병렬로 연산을 수행하여 하나의 곱셈기에서 하나의 차원의 연산을 수행할 수 있다. 복수의 곱셈기를 사용하는 경우, 각 차원의 승수Bi의 시프팅값을 다시 카운팅해야 한다. 해당 단계의 곱셈기는 상기 기본 곱셈기 또는 희소 곱셈기를 모두 사용할 수 있다.
퓨전 벡터 곱셈기를 사용하여 전체적으로 수평 방향의 누적 연산을 수행하며, 그 구조는 도 22에 도시된 바와 같이, 각 차원의 각 성분의 곱을 연산한 후에 덧셈 트리에 전송하여 누적하며, 모든 연산을 수행하여 최종 결과를 얻는다. 예를 들어, 그 연산 흐름은 도 23의 타원형 박스에 도시된 바와 같이, 첫번째 클록 사이클에서 각 차원에 대해 연산하여 Ai*bi0(i=0,1,……,7)의 곱을 얻어 덧셈 트리에 전송하여 누적하고, 계산 결과를 결과 레지스터에 전송하며, 시프트 레지스터에서 1를 더하며; 두번째 클록 사이클에서 각 차원에 대해 시프트 레지스터에 따라 계산하여 2*Ai*bi1(i=0,1,……,7)의 곱을 얻어 결과 레지스터의 데이터와 함께 덧셈 트리에 전송하여 누적하며, 시프트 레지스터에서 1를 더하며; 세번째 클록 사이클에서, 각 차원에 대해 시프트 레지스터에 따라 계산하여 4*Ai*bi2(i=0,1,……,7)의 곱을 얻어 결과 레지스터의 데이터와 함께 덧셈 트리에 전송하여 누적하며, 시프트 레지스터에서 1을 더하며; 마지막으로, 네번째 클록 사이클에서, 계산을 통해 8*Ai*bi3(i=0,1,……,7)의 곱을 얻어 결과 레지스터의 데이터와 함께 덧셈 트리에 전송하여 누적하며, 최종 결과를 얻는다. 따라서, 4회 연산 주기를 통해 필요한 결과를 얻으며, 연산 과정에 모두 세번 시프팅한다. 그러나, 일반 곱셈기의 경우에는 각 데이터에 대해 연산 시에 모두 시프팅해야 하는데, 다시 말하면, 4개 피연산자의 경우 총4*3=12회 시프팅해야 한다. 따라서, 본 발명인의 설계는 연산 순서를 변경하여 시프트값의 카운팅 동작을 대폭 줄여, 성능 대 전력비를 효과적으로 제고한다.
본 발명의 실시예의 다른 양태에 따르면, 계산 비트 폭을 동적으로 구성 가능한 처리 장치의 처리 방법을 제공하는데, 도 24에 도시된 바와 같이, 다음과 같은 단계를 포함한다.
S2400, 제어 회로가 제어 명령어를 생성하여 메모리 및 연산 회로에 전송하는 단계;
S2401, 메모리가 수신된 제어 명령어에 따라 연산 회로에 신경망의 피연산 데이터를 입력하는 단계;
S2402, 연산 회로가 수신된 제어 명령어에 따라 제1연산 모듈 중의 대응하는 유형의 곱셈기 및 덧셈기 회로를 선택하는 단계;
S2403, 연산 회로가 입력된 피연산 데이터 및 신경망 매개 변수 및 제어 명령어에 따라 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계.
또한, 단계S2403에서, 제1연산 모듈은 덧셈기 및 기본 곱셈기, 희소 곱셈기 및/또는 퓨전 벡터 곱셈기를 포함하며, 신경망의 피연산 데이터에 대해 연산을 수행한다.
상술한 바와 같이, 해당 장치 및 방법을 사용하면 신경망의 연산 속도를 현저히 향상시키는 동시에 동적으로 구성 가능하기 때문에 데이터 비트 폭의 다양성과 연산 과정에서의 데이터 비트 폭의 동적 변동성의 요구 사항을 충족할 수 있고, 높은 유연성과 구성 가능성, 빠른 연산 속도 및 저전력 소비 등 장점을 갖는다.
또한, 본 발명은 오프라인 모델의 구축을 포함하는 연산 방법 및 연산 장치를 더 제공하는데, 오프라인 모델을 생성한 후에 오프라인 모델에 따라 직접 연산을 수행할 수 있기에 딥 러닝 프레임을 포함한 전체 소프트웨어 아키텍처의 실행에 의한 부담을 피하는데, 이하에서는 특정 실시예를 결부하여 구체적으로 설명한다.
일반적인 애플리케이션 시나리오에서 신경망 가속기 프로그래밍 프레임 워크는 통상 최상위 계층에 위치하며, 프로그래밍 프레임 워크는 Caffe, Tensorflow, Torch 등 일 수 있고, 도 25에 도시된 바와 같이, 하위 계층에서 상위 계층으로 차례로 신경망 프로세서(신경망 연산을 위한 전문 하드웨어), 하드웨어 드라이버(소프트웨어로 신경망 프로세서 호출), 신경망 프로세서 프로그래밍 라이브러리(신경망 프로세서의 호출을 위한 인터페이스 제공), 신경망 프로세서 프로그래밍 프레임 워크 및 신경망 연산을 위한 고급 애플리케이션이다.
본 발명의 일 양태에 따른 신경망의 동작 방법은 다음과 같은 단계를 포함한다.즉,
단계1, 입력 데이터를 취득하는 단계;
단계2, 후속 계산에서 호출하여 사용하기 위해 오프라인 모델을 취득하거나 또는 입력 데이터에 따라 오프라인 모델을 결정하여 오프라인 모델에 따라 연산 명령어를 결정하는 단계;
단계3, 상기 연산 명령어를 호출하여 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어 출력하는 단계.
여기서, 상기 입력 데이터는 처리 대상 데이터, 네트워크 구조 및 가중치 데이터를 포함하며, 또는 상기 입력 데이터는 처리 대상 데이터의 오프라인 모델 데이터를 포함한다.
여기서, 단계2 중의 오프라인 모델은 기존에 존재하는 것이거나 또는 외부 데이터(예를 들어, 네트워크 구조 또는 가중치 데이터)에 따라 나중에 구축한 것일 수 있다. 오프라인 모델을 설정하여 연산 명령어를 얻는 방식을 통해 연산 효율을 제고할 수 있다.
단계3 중의 연산 명령어 호출은 입력 데이터가 오프라인 모델 또는 오프라인 모델을 결정하기 위한 데이터를 포함하지 않고 처리 대상 데이터만 포함하는 경우에 단지 연산 명령어에 따라 네트워크 연산을 수행하는 것을 가리킨다.
일부 실시예에서, 입력 데이터에 처리 대상 데이터, 네트워크 구조 및 가중치 데이터가 포함되는 경우, 다음과 같은 단계를 수행한다. 즉:
단계11, 입력 데이터를 취득하는 단계;
단계12, 네트워크 구조 및 가중치 데이터에 따라 오프라인 모델을 구축하는 단계;
단계13, 후속 연산에서 호출할 수 있도록, 오프라인 모델을 파싱하여 연산 명령어를 취득 및 캐시하는 단계;
단계14, 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어 출력하는 단계.
상기 실시예에서 먼저 네트워크 구조 및 가중치 데이터에 따라 오프라인 모델을 구축한 다음에 오프라인 모델의 극성을 파싱하여 연산 명령어를 얻기 때문에, 오프라인 모델을 저장하지 않고 메모리가 작으며 실시간 조작을 요구하는 애플리케이션 환경에서 성능을 최대화하고 연산 과정을 보다 간단하고 신속하게 수행할 수 있다.
일부 실시예에서, 입력 데이터에 처리 대상 데이터 및 오프라인 모델이 포함되는 경우, 다음과 같은 단계를 수행한다. 즉:
단계21, 입력 데이터를 취득하는 단계;
단계22, 후속 연산에서 호출할 수 있도록, 오프라인 모델을 파싱하여 연산 명령어를 취득 및 캐시하는 단계;
단계23, 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어 출력하는 단계.
상기 실시예에서 입력 데이터에 오프라인 모델이 포함되는 경우, 오프라인 모델을 구축한 후, 연산 시에 오프라인 모델을 파싱하여 연산 명령어를 얻음으로써 딥 러닝 프레임워크를 포함하는 전체 소프트웨어 아키텍처의 실행에 인한 부담을 피면할 수 있다.
일부 실시예에서, 입력 데이터에 처리 대상 데이터만 포함되는 경우, 다음과 같은 단계를 수행한다. 즉:
단계31, 입력 데이터를 취득하는 단계;
단계32, 캐시 된 연산 명령어를 호출하여 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어서 출력하는 단계.
상기 실시예에서 입력 데이터가 단지 처리 대상 데이터만 포함하고 신경망 구조와 가중치 데이터를 포함하지 않을 경우, 연산 명령어를 호출하여 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻는다.
일부 실시예에서, 신경망 프로세서를 통해 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻으며; 여기서, 신경망 프로세서는 주로 신경망 연산을 수행하는데, 명령어, 처리 대상 데이터 및/또는 네트워크 모델(예를 들어, 오프라인 모델)을 수신 후, 연산을 수행하며; 예를 들면, 다층 신경망의 경우, 입력 계층 데이터 및 뉴런, 가중치 및 오프셋 등 데이터에 따라 출력 계층 데이터를 계산한다.
다른 실시예에서 상기 신경망 프로세서는 수신된 연산 명령어에 대해 캐시하기 위한 명령어 캐시 유닛을 갖는다.
일부 실시예에서, 상기 신경망 프로세서는 상기 처리 대상 데이터를 캐시하기 위한 데이터 캐시 유닛을 더 포함한다. 처리 대상 데이터는 신경망 프로세서에 입력된 후 상기 데이터 캐시 유닛에 일시 저장되며, 후속 연산 과정에서 연산 명령어와 결부되어 연산을 수행한다.
상기 연산 방법을 기반으로, 본 발명의 실시예는 연산 장치는
처리 대상 데이터, 네트워크 구조 및 가중치 데이터를 포함하거나 또는 처리 대상 데이터 오프라인 모델 데이터를 포함하는 입력 데이터를 취득하기 위한 입력 모듈;
입력된 네트워크 구조 및 가중치 데이터에 따라 오프라인 모델을 구축하는 모델 생성 모듈;
입력 모듈 중의 오프라인 모델 데이터 또는 모델 생성 모듈 중의 구축 된 오프라인 모델을 기반으로 연산 명령어를 생성하여 캐시하며, 상기 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻는 신경망 연산 모듈;
상기 연산 결과를 출력하는 출력 모듈;
입력 데이터 유형을 검출하며, 다음의 동작을 수행하는 제어 모듈;을 포함한다.
입력 데이터에 처리 대상 데이터, 네트워크 구조 및 가중치 데이터가 포함되는 경우, 입력 모듈을 제어하여 네트워크 구조 및 가중치 데이터를 모델 생성 모듈에 입력하여 오프라인 모델을 구축하며, 신경망 연산 모듈을 제어하여 모델 생성 모듈을 통해 입력된 오프라인 모델을 기반으로 입력 모듈에 의해 입력된 처리 대상 데이터에 대해 연산을 수행하며;
입력 데이터에 처리 대상 데이터와 오프라인 모델이 포함되는 경우, 입력 모듈을 제어하여 처리 대상 데이터 및 오프라인 모델을 신경망 연산 모듈에 입력하며, 신경망 연산 모듈을 제어하여 오프라인 모델을 기반으로 연산 명령어를 생성 및 캐시하며, 연산 명령어를 기반으로 처리 대상 데이터에 대해 연산을 수행하며;
입력 데이터에 단지 처리 대상 데이터만 포함되는 경우, 입력 모듈을 제어하여 처리 대상 데이터를 신경망 연산 모듈에 입력하며, 신경망 연산 모듈을 제어하여 캐시 된 연산 명령어를 호출하여 처리 대상 데이터에 대해 연산을 수행한다.
상기 신경망 연산 모듈은 모델 파싱 유닛 및 신경망 프로세서를 포함하며,
상기 모델 파싱 유닛은 오프라인 모델을 기반으로 연산 명령어를 생성하고;
상기 신경망 프로세서는 후속의 연산에서 호출하기 위해 연산 명령어를 캐시하며; 또는, 입력 데이터에 단지 처리 대상 데이터만 포함되는 경우, 캐시 된 연산 명령어를 호출하여 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻는다.
일부 실시예에서, 상기 신경망 프로세서는 연산 명령어를 캐시하여 후속 연산에서 호출하기 위한 명령어 캐시 유닛을 갖는다.
일부 실시예에서, 상기 오프라인 모델은 특수 구조에 따라 정의된 텍스트 파일 일 수 있는데, Cambricon_model, AlexNet_model, GoogleNet_model, VGG_model, R-CNN_model, GAN_model, LSTM_model, RNN_model, ResNet_model등과 같은 다양한 신경망 모델일 수 있지만, 본 실시예에서 제시한 상기 모델로 한정되는 것은 아니다.
오프라인 모델은 원래 네트워크에서 각 컴퓨팅 노드의 네트워크 가중치 및 명령어 데이터와 같은 필요한 네트워크 구조 정보를 포함할 수 있으며, 상기 명령어는 각 컴퓨팅 노드의 계산 속성 및 각 컴퓨팅 노드 사이의 연결 관계와 같은 정보를 포함할 수 있다. 따라서, 프로세서가 원래의 네트워크를 다시 실행할 때, 동일한 네트워크를 다시 컴파일하지 않고 네트워크에 대응하는 오프라인 모델을 직접 실행할 수 있어, 네트워크를 실행하는 프로세서의 실행 시간이 단축되고 프로세서의 처리 효율이 향상된다.
대안적으로, 프로세서는 중앙 처리 장치(Central Processing Unit, CPU), 그래픽 처리 장치(Graphics Processing Unit, GPU) 또는 지능형 처리 장치(Intelligence Processing Unit, IPU)와 같은 범용 프로세서 일 수 있으며, IPU는 인공 신경망 연산을 수행하기 위한 프로세서이다.
일부 실시예에서, 처리 대상 데이터는 연속 단일 화상, 음성 또는 비디오 스트림 중 적어도 하나와 같은 신경망을 사용하여 처리 될 수 있는 입력이다.
일부 실시 예에서, 상기 네트워크 구조는 AlexNet, GoogleNet, ResNet, VGG, R-CNN, GAN, LSTM, RNN, ResNet 등과 같은 다양한 신경망 구조일 수 있지만, 본 명세서에서 제시된 구조에 한정되는 것은 아니다. 설명이 필요한 것은, 여기서 네트워크 구조는 오프라인 모델과 상호 대응되는데, 예를 들어, 네트워크 구조가 RNN인 경우, 오프라인 모델은 RNN_model이며, 상기 모델은 RNN 네트워크의 각 노드의 네트워크 가중치 및 명령어 데이터와 같은 필요한 RNN 네트워크 구조 정보를 포함하며, 여기서 명령어는 각 컴퓨팅 노드의 컴퓨팅 속성 및 각 컴퓨팅 노드 사이의 연결 관계 등 정보를 포함할 수 있다.
구체적으로, 본 발명의 실시예의 연산 장치는 입력 모듈의 상이한 입력 데이터에 따라 다음의 3 가지 실행 형태를 가질 수있다. 즉:
1. 입력 모듈에 의해 입력되는 데이터가 네트워크 구조, 가중치 데이터 및 처리 대상 데이터인 경우, 제어 모듈이 입력 모듈을 제어하여 네트워크 구조 및 가중치 데이터를 모델 생성 모듈에 전송하고, 처리 대상 데이터를 모델 파싱 모듈에 저장하며; 제어 모듈이 모델 생성 모듈을 제어하여 구체적인 네트워크 구조 및 상응한 가중치 데이터에 따라 오프라인 모델(오프라인 모델은 미리 설정된 구조에 따라 정의된 텍스트 파일일 수 있고, 신경망의 각 컴퓨팅 노드의 네트워크 가중치 및 명령어 데이터와 같은 필요한 네트워크 구조 정보를 포함할 수 있으며, 여기서 명령어는 각 컴퓨팅 노드의 계산 속성 및 각 계산 노드 간의 연결 관계 등 정보를 포함할 수 있는데, 예를 들어 상응한 네트워크 구조 유형 및 가중치 데이터에 따라 상기 오프라인 모델을 구축할 수 있음.)을 생성하고 상기 생성된 오프라인 모델을 모델 파싱 유닛에 전송하며; 제어 모듈이 모델 파싱 유닛을 제어하여 수신된 오프라인 모델을 파싱하여 신경망 프로세서에 의해 식별 가능한 연산 명령어(다시 말하면, 네트워크 컴파일 동작을 수행하지 않고, 상기 오프라인 모델의 텍스트 파일에 따라 상응한 네트워크 연산 명령어를 매핑함.)을 얻고, 연산 명령어와 처리 대상 데이터를 신경망 프로세서에 전송하며; 신경망 프로세서는 수신된 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어서 상기 연산 결과를 출력 모듈에 전송하여 출력한다.
2. 입력 모듈에 의해 입력된 데이터가 오프라인 모델 및 처리 대상 데이터인 경우, 제어 모듈이 입력 모듈을 제어하여 오프라인 모델 및 처리 대상 데이터를 직접 모델 파싱 유닛에 전송하며, 후속 동작 원리는 첫 번째 경우와 동일하다.
3. 입력 모듈에 의해 입력된 데이터가 단지 처리 대상 데이터만 포함하는 경우, 제어 모듈이 입력 모듈을 제어하여 해당 처리 대상 데이터를 모델 파싱 유닛을 통해 신경망 프로세서에 전송하며, 신경망 프로세서는 캐시 된 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻는다. 입력 모듈은 입력 데이터의 유형을 판정하기 위한 판정 모듈을 포함할 수 있다. 이러한 상황은 명령어 캐시에 특정 연산 명령어가 존재함을 보장하기 위해, 일반적으로 신경망 프로세서를 처음 사용시에 발생하지 않는다는 것을 이해할 수 있다.
따라서, 현재 네트워크 연산이 이전 네트워크 연산의 오프라인 모델과 다른 경우, 입력 모듈에 의해 입력된 데이터는 네트워크 구조, 가중치 데이터 및 처리 대상 데이터를 포함해야 하고, 모델 생성 모듈을 통해 새로운 오프라인 모델을 생성하여 후속 네트워크 연산을 수행해야 하며; 현재 네트워크 연산 전에 해당 오프라인 모델을 미리 취득한 경우, 입력 모듈에 의해 입력된 데이터는 오프라인 모델 및 처리 대상 데이터를 포함해야 하며; 현재 네트워크 연산이 이전 네트워크 연산의 오프라인 모델과 동일한 경우, 입력 모듈에 의해 입력된 데이터에 처리 대상 데이터만 포함되면 된다.
본 발명의 일부 실시예에서, 본 발명에서 설명된 연산 장치는 서브 모듈로서 전체 컴퓨터 시스템의 중앙 처리 유닛 모듈에 통합된다. 처리 대상 데이터 및 오프라인 모델은 중앙 처리 장치에 의해 제어되어 연산 장치로 전송된다. 모델 파싱 유닛은 전송된 신경망 오프라인 모델을 파싱하여 연산 명령어를 생성한다. 이어서, 연산 명령어 및 처리 대상 데이터가 신경망 프로세서로 전송되고, 연산 처리를 거쳐 연산 결과를 얻으며, 상기 연산 결과를 메인 저장 유닛으로 반송한다. 후속 계산 과정에서 네트워크 구조가 더 이상 변경되지 않기 때문에 처리 대상 데이터를 지속적으로 전송하면 신경망에서 계산을 수행하여 계산 결과를 얻을 수 있다.
이하, 구체적인 실시예를 통해 본 발명의 연산 장치 및 방법에 대해 상세히 설명한다.
도 26에 도시된 바와 같이, 본 실시예에 따른 연산 방법은 다음과 같은 단계를 포함한다. 즉:
입력 데이터에 처리 대상 데이터, 네트워크 구조 및 가중치 데이터가 포함되는 경우, 다음과 같은 단계를 수행한다.
단계11, 입력 데이터를 취득하는 단계;
단계12, 네트워크 구조 및 가중치 데이터에 따라 오프라인 모델을 구축하는 단계;
단계13, 후속 연산에서 호출할 수 있도록, 오프라인 모델을 파싱하여 연산 명령어를 취득 및 캐시하는 단계;
단계14, 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어 출력하는 단계.
입력 데이터에 처리 대상 데이터 및 오프라인 모델이 포함되는 경우, 다음과 같은 단계를 수행한다.
단계21, 입력 데이터를 취득하는 단계;
단계22, 후속 연산에서 호출할 수 있도록, 오프라인 모델을 파싱하여 연산 명령어를 취득 및 캐시하는 단계;
단계23, 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어 출력하는 단계.
입력 데이터에 단지 처리 대상 데이터만 포함되는 경우, 다음과 같은 단계를 수행한다.
단계31, 입력 데이터를 취득하는 단계;
단계32, 캐시 된 연산 명령어를 호출하여 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻어서 출력하는 단계.
신경망 프로세서를 통해 연산 명령어에 따라 처리 대상 데이터에 대해 연산을 수행하여 연산 결과를 얻으며; 상기 신경망 프로세서는 각각 수신된 연산 명령어 및 처리 대상 데이터에 대해 캐시하는 명령어 캐시 유닛 및 데이터 캐시 유닛을 갖는다.
본 실시예에서 제시한 입력 된 네트워크 구조는 AlexNet이고, 가중치 데이터는 bvlc_alexnet.caffemodel이고, 처리 대상 데이터는 연속적인 단일 화상이며, 오프라인 모델은 Cambricon_model이다. 기존 오프라인 모델의 경우, 상기 오프라인 모델 Cambricon _ model에 대해 파싱하여 일련의 연산 명령어를 생성한 다음에 생성된 연산 명령어를 신경망 프로세서(2707)의 명령어 캐시 유닛으로 전송하고, 입력 모듈(2701)에 의해 입력된 입력 화상을 신경망 프로세서(2707)의 데이터 캐시 유닛으로 전송할 수 있다.
상기한 바와 같이, 본 실시예에서 제안된 방법을 사용하면, 신경망 프로세서를 사용하여 연산을 수행하는 흐름을 최대한 단순화 할 수 있고, 전통적인 전체 프로그래밍 프레임 워크의 호출에 인한 메모리 및 IO 오버 헤드를 피면할 수 있다. 본 방법을 사용하면 신경망 가속기(neural network accelerator)가 메모리가 작고 실시간 성능을 요구하는 환경에서 연산 성능을 충분히 발휘할 수 있게 한다.
도 27에 도시된 바와 같이, 본 실시예는 입력 모듈(2701), 모델 생성 모듈(2702), 신경망 연산 모듈(2703), 출력 모듈(2704) 및 제어 모듈(2705)을 포함하는 연산 장치를 더 제공하며, 상기 신경망 연산 모듈(103)은 모델 파싱 유닛(2706) 및 신경망 프로세서(2707)를 포함한다.
상기 장치의 핵심은 오프라인 실행인데, 오프라인 모델을 생성한 후에 직접 오프라인 모델을 사용하여 관련 연산 명령어를 생성하고 가중치 데이터를 전송하여 처리 대상 데이터에 대해 연산 처리를 수행하는 것을 가리킨다. 더욱 구체적으로는 다음과 같다. 즉:
상기 입력 모듈(2701)은 네트워크 구조, 가중치 데이터 및 처리 대상 데이터의 조합 또는 오프라인 모델 및 처리 대상 데이터의 조합을 입력하기 위해 사용된다. 입력이 네트워크 구조, 가중치 데이터 및 처리 대상 데이터인 경우, 네트워크 구조 및 가중치 데이터를 모델 생성 모듈(2702)에 전송하여 오프라인 모델을 생성하여 후속 연산을 수행한다. 입력이 오프라인 모델 및 처리 대상 데이터인 경우, 오프라인 모델, 처리 대상 데이터를 직접 모델 파싱 유닛(2706)에 전송하여 후속 연산을 수행한다.
상기 출력 모듈(2704)은 특정 네트워크 구조 및 한 세트의 처리 대상 데이터에 따라 생성한 결정된 연산 데이터를 출력하기 위해 사용된다. 상기 출력 데이터는 신경망 프로세서(2707)로 연산하여 얻는다.
상기 모델 생성 모듈(2702)은 입력된 네트워크 구조 매개 변수, 가중치 데이터에 따라 하위 계층에서 사용되는 오프라인 모델을 생성하기 위해 사용된다.
상기 모델 파싱 유닛(2706)은 전송된 오프라인 모델을 파싱하여 직접 신경망 프로세서(2707)에 전송되는 연산 명령어를 생성하며, 이와 동시에 입력 모듈(2701)에 의해 전송된 처리 대상 데이터를 신경망 프로세서(2707)에 전송하기 위해 사용된다.
상기 신경망 프로세서(2707)는 전송된 연산 명령어 및 처리 대상 데이터에 따라 연산을 수행하여 결정된 연산 결과를 얻어 출력 모듈(2704)에 전송하기 위해 사용되며, 명령어 캐시 유닛 및 데이터 캐시 유닛을 갖는다.
상기 제어 모듈(2705)은 입력 데이터 유형을 검출하며, 다음의 동작을 수행한다. 즉:
입력 데이터에 처리 대상 데이터, 네트워크 구조 및 가중치 데이터가 포함되는 경우, 입력 모듈(2701)을 제어하여 네트워크 구조 및 가중치 데이터를 모델 생성 모듈(2702)에 입력하여 오프라인 모델을 구축하며, 신경망 연산 모듈(2703)을 제어하여 모델 생성 모듈(2702)에 의해 입력된 오프라인 모델을 기반으로 입력 모듈(2701)에 의해 입력된 처리 대상 데이터에 대해 신경망 연산을 수행하며;
입력 데이터에 처리 대상 데이터 및 오프라인 모델이 포함되는 경우, 입력 모듈(2701)을 제어하여 처리 대상 데이터 및 오프라인 모델을 신경망 연산 모듈(2703)에 입력하며, 신경망 연산 모듈(2703)을 제어하여 오프라인 모델을 기반으로 연산 명령어를 생성 및 캐시하며, 연산 명령어에 따라 처리 대상 데이터에 대해 신경망 연산을 수행하며;
입력 데이터에 단지 처리 대상 데이터만 포함되는 경우, 입력 모듈(2701)을 제어하여 처리 대상 데이터를 신경망 연산 모듈(2703)에 입력하며, 신경망 연산 모듈(2703)을 제어하여 캐시 된 연산 명령어를 호출하여 처리 대상 데이터에 대해 신경망 연산을 수행한다.
본 실시예에서 제시한 입력 된 네트워크 구조는 AlexNet이고, 가중치 데이터는 bvlc_alexnet.caffemodel이고, 처리 대상 데이터는 연속적인 단일 화상이다. 모델 생성 모듈(102)이 입력 된 네트워크 구조 및 가중치 데이터에 따라 새로운 오프라인 모델Cambricon_model을 생성하며, 새로 생성된 오프라인 모델Cambricon_model은 다음번의 입력으로서 단독으로 사용할 수도 있으며; 모델 파싱 유닛(2706)이 오프라인 모델Cambricon_model에 대해 파싱함으로써 일련의 연산 명령어를 생성할 수 있다. 모델 파싱 유닛(2706)은 생성된 연산 명령어를 신경망 프로세서(2707)의 명령어 캐시 유닛에 전송하고, 입력 모듈(2701)에 의해 입력된 이미지를 신경망 프로세서(2707)의 데이터 캐시 유닛에 전송할 수 있다.
또한, 본 발명은 복합 스칼라 명령어를 지원하는 연산 장치 및 연산 방법을 제공하는데, 연산 중에 복합 스칼라 명령어(부동 소수점 명령어와 고정 소수점 명령어를 통합한 명령어)를 제공함으로써 부동 소수점 명령어와 고정 소수점 명령어를 크게 통합하였으며, 디코딩 단계에서 명령어 유형을 구분하지 않고 구체적인 계산 시에 피연산자 주소 필드의 주소에 따라 피연산자가 부동 소수점 데이터인지 아니면 고정 소수점 데이터인지 결정하기 때문에 명령어의 디코딩 로직을 단순화하고 명령어 세트를 단순화한다. 이하, 구체적인 실시예를 참조하여 상세히 설명한다.
도 28은 본 발명의 실시예에 따른 복합 스칼라 명령어를 지원하는 연산 장치의 구조도이며, 도 28에 도시된 바와 같이, 상기 장치는 제어기 모듈(2810), 저장 모듈(2820), 연산 장치 모듈(2830) 및 입출력 모듈(2840)을 포함한다.
제어기 모듈(2810)은 저장 모듈로부터 명령어를 판독하고 이를 로컬 명령 대기열에 저장 한 다음, 명령어 대기열의 명령어를 제어 신호로 디코딩하여 저장 모듈, 연산 장치 모듈 및 입출력 모듈의 동작을 제어하도록 구성된다.
저장 모듈(2820)은 레지스터 파일, RAM 및 ROM 등 저장 장치를 포함하며, 명령어, 피연산자 등 서로 다른 데이터를 저장하기 위해 구성된다. 피연산자는 부동 소수점 데이터 및 고정 소수점 데이터를 포함하며, 메모리 모듈은 부동 소수점 데이터 및 고정 소수점 데이터를 상이한 RAM 주소 또는 상이한 레지스터 번호와 같은 상이한 주소에 대응되는 공간에 저장함으로써, 주소 및 레지스터 번호에 따라 판독된 데이터가 부동 소수점인지 아니면 고정 소수점인지 판정할 수 있다.
연산 장치 모듈(2830)은 부동 소수점 데이터와 고정 소수점 데이터에 대해 사칙 계산, 논리 연산, 시프팅 및 보수 연산 등 동작을 수행할 수 있으며, 상기 사칙 계산은 덧셈, 뺄셈, 곱셈 및 나눗셈 등 4가지 연산을 포함하며; 논리 연산은 AND, OR, NOT 및 XOR 등 4가지 연산을 포함한다. 연산 장치 모듈은 제어기 모듈의 제어 신호를 수신한 후에 피연산자가 위치하는 주소 또는 레지스터 번호를 판독하여 판독된 데이터가 부동 소수점 유형의 데이터인지 아니면 고정 소수점 유형의 데이터인지 판정할 수 있으며, 연산 장치 모듈은 저장 모듈로부터 동작 데이터를 판독하여 대응되는 연산을 수행하며, 연산의 중간 결과를 저장 모듈에 저장하고, 최종 연산 결과를 입출력 모듈에 저장한다.
입출력 모듈(2840)은 입출력 데이터의 저장 및 전송을 위해 사용되며, 초기화 시에 입출력 모듈은 초기 입력 데이터 및 컴파일된 복합 스칼라 명령어를 저장 모듈에 저장하고, 연산이 종료된 후, 연산 장치 모듈에 의해 전송된 최종 연산 결과를 수신하며, 또한, 입출력 모듈은 컴퓨터 컴파일러가 프로그램을 다양한 명령어로 컴파일할 수 있도록 메모리로부터 명령어 컴파일에 필요한 정보를 판독할 수도 있다.
이로부터 알 수 있다시피, 본 발명의 실시예에 따른 복합 스칼라 명령어를 지원하는 장치는 복합 스칼라 명령어를 실행하기 위한 효율적인 실행 환경을 제공한다.
도 29a 및 도 29b는 본 발명의 실시예에 따른 저장 모듈의 구성형태의 예시도이다. 저장 모듈은 부동 소수점 데이터 및 고정 소수점 데이터를 상이한 주소의 공간, 예를 들어 상이한 주소 또는 레지스터 번호의 공간에 저장함으로써 주소 및 레지스터 번호에 따라 판독된 데이터가 부동 소수점인지 아니면 고정 소수점인지 판정할 수 있다.
본 실시예에서, 본 발명은 RAM 및 16 개의 레지스터로 구성된 레지스터 파일에 의해 형성된 저장 모듈을 예를 들어 부동 소수점 데이터의 저장과 고정 소수점 데이터의 저장을 분리하는 방법을 나타내며, 상기 RAM의 초기 주소는 0000H이고 종료 주소는 3FFFH이다. 도 29a에 도시된 바와 같이, RAM에서 고정 소수점 데이터는 주소가 0000H부터 1FFFH까지인 RAM 유닛에만 저장되고, 부동 소수점 데이터는 2000H부터 3FFFH까지인 RAM 유닛에만 저장되며, 명령어는 임의의 RAM 유닛에 저장할 수 있고, 또한 명령어 세트 중의 변하지 않는 정보는 ROM에 저장할 수도 있다. 도 29b에 도시된 바와 같이, 레지스터 파일에서 고정 소수점 데이터는 0 내지 7번 레지스터에만 존재하며, 부동 소수점 데이터는 8 내지 15번 레지스터에만 존재한다. 레지스터에 저장된 값이 RAM 주소인 경우, 0 내지 7번 레지스터는 고정 소수점 데이터의 RAM 주소를 저장하고, 8 내지 15번 레지스터는 부동 소수점 데이터의 RAM 주소를 저장한다.
도 30a는 본 발명의 실시예에 따른 복합 스칼라 명령어의 예시도이다. 도 30a에 도시된 바와 같이, 각 명령어는 연산 코드 필드, 피연산자 주소 필드(또는 즉시 값) 및 대상 주소 필드를 가지며, 연산 코드 필드는 연산 코드를 포함하고, 피연산자 주소 필드는 소스 피연산자 주소1 및 소스 피연산자 주소2를 포함하고, 각각 소스 피연산자의 저장 주소를 표시하며, 대상 주소 필드는 피연산자 연산 결과의 저장 주소이며,
연산 코드 필드는 서로 다른 유형의 연산, 예를 들어 덧셈, 뺄셈, 곱셈 및 나눗셈 등 연산을 구분하기 위해 사용되지만, 피연산자 유형의 구분에는 사용되지 않는다.
피연산자 주소 필드는 RAM 주소, 레지스터 번호 및 즉시 값을 포함할 수 있다. 부동 소수점 데이터와 고정 소수점 데이터의 저장에 사용되는 RAM 주소와 레지스터 번호가 다르므로 주소 필드를 사용하여 부동 소수점 피연산자와 고정 소수점 피연산자를 구분할 수 있다. 피연산자 주소 필드에 저장된 것이 즉시 값인 경우, 부동 소수점 피연산자와 고정 소수점 피연산자를 구별할 수 있는 연산 장치 모듈에 의해 식별 가능한 데이터 유형 플래그 비트가 필요하다.
대상 주소 필드는 RAM 주소 또는 레지스터 번호일 수 있다. 상기 주소 필드는 피연산자 유형과 서로 대응되는데, 다시 말하면, 부동 소수점 피연산자의 연산 결과느 부동 소수점 데이터에 대응하는 저장 유닛에 저장되고; 고정 소수점 피연산자의 연산 결과는 고정 소수점 데이터에 대응하는 저장 유닛에 저장된다.
이로부터 알 수 있다시피, 본 발명에 따른 복합 스칼라 명령어는 부동 소수점 명령어와 고정 소수점 명령어를 통합한 명령어로서 부동 소수점 명령어와 고정 소수점 명령어를 크게 통합하였으며, 디코딩 단계에서 명령어 유형을 구분하지 않고 구체적인 계산 시에 피연산자 주소 필드의 주소에 따라 피연산자가 부동 소수점 데이터인지 아니면 고정 소수점 데이터인지 결정하기 때문에 명령어의 디코딩 로직을 단순화하고 명령어 세트를 단순화한다.
또한, 본 발명에 따른 복합 스칼라 명령어에 대해 만일 다수의 어드레싱 모드를 사용하는 경우, 어드레싱 모드를 결정하기 위한 플래그 비트를 추가해야 한다.
예를 들어, 도 29a 및 도 29b에 도시된 저장 모듈의 구성 형태를 사용하는 경우, 덧셈 명령어의 연산 코드는 0001이고, 다수의 어드레싱 모드를 사용하는 경우, 복합 스칼라 명령어의 구성 형태는 도 30b 내지 도 30e에 도시 된 바와 같다.
도 30b는 본 발명의 실시예에 따른 레지스터 어드레싱을 사용한 복합 스칼라 명령어 예시도이며, 도 30b에 도시된 바와 같이, 레지스터 어드레싱을 사용하는 경우, 어드레싱 모드 플래그 비트는 01이고, 소스 피연산자1 및 소스 피연산자2는 각각 소스 피연산자1 레지스터 번호와 소스 피연산자2 레지스터 번호와 대응되는 레지스터에 저장되며, 0 내지 7번 레지스터에 고정 소수점 데이터가 저장되고, 8 내지 15번 레지스터에 부동 소수점 데이터가 저장된다.
도 30c는 본 발명에 따른 레지스터 간접 어드레싱을 사용한 복합 스칼라 명령어의 예시도이며, 도 30c에 도시된 바와 같이, 레지스터 간접 어드레싱을 사용하는 경우, 어드레싱 모드 플래그 비트는 10이고, 소스 피연산자1 및 소스 피연산자2의 RAM중의 주소는 각각 소스 피연산자1 레지스터 번호와 소스 피연산자 2 레지스터 번호와 대응되는 레지스터에 저장되며, 고정 소수점 데이터의 RAM주소(0000H 내지 1FFFH)는 0 내지 7번 레지스터에 저장되고; 부동 소수점 데이터의 RAM주소(2000H 내지 3FFFH)는 8 내지 15번 레지스터에 저장된다. 대상 주소 필드는 대상 레지스터 번호 또는 대상 RAM주소를 저장한다. 고정 소수점 데이터는 주소가 0000H 내지 1FFFH범위에 속하는 RAM 유닛에 저장되고; 부동 소수점 데이터는 주소가 2000H 내지 3FFFH범위에 속하는 RAM 유닛에 저장된다.
도 30d는 본 발명에 따른 즉시 주소 지정 방식을 사용한 복합 스칼라 명령어의 예시도이며, 도 3D에 도시된 바와 같이, 만일 피연산자 주소 필드의 데이터가 두개의 즉시 값인 경우, 어드레싱 모드 플래그 비트는 00이고, 어드레싱 모드 플래그 비트와 피연산자 주소 필드 사이에는 데이터 유형 플래그 비트가 더 설치되는데, 다시 말하면, 즉시 값이 고정 소수점 유형인 경우, 상기 데이터 유형 플래그 비트는 0이고; 즉시 값이 부동 소수점 유형인 경우, 상기 데이터 유형 플래그 비트는 1이다.
도 30e는 본 발명의 실시예에 따른 RAM어드레싱을 사용한 복합 스칼라 명령어의 예시도이며, 도 30e에 도시된 바와 같이, 만일 피연산자 주소 필드가 RAM주소인 경우, 어드레싱 모드 플래그 비트는 11이다. 소스 피연산자1 및 소스 피연산자2는 각각 RAM주소와 대응되는 RAM 유닛에 저장된다. 여기서, 고정 소수점 데이터는 RAM주소0000H 내지 1FFFH와 대응되는 RAM 유닛에 저장되고; 부동 소수점 데이터는 RAM주소 2000H 내지 3FFFH와 대응되는 RAM 유닛에 저장된다.
상기 어드레싱 모드를 사용하는 관련 명령어에서, 대상 주소 필드에는 대상 레지스터 번호 또는 대상 RAM 주소가 저장된다. 고정 소수점 데이터는 0 내지 7번 레지스터 또는 주소 0000H 내지1FFFH 범위의 RAM 유닛에 저장되고; 부동 소수점 데이터는 8 내지 15번 레지스터 또는 주소 2000H 내지 3FFFH범위의 RAM 유닛에 저장된다.
도 31은 본 발명의 실시예에 따른 복합 스칼라 명령어를 지원하는 연산 방법의 흐름도이며, 도 31에 도시된 바와 같이, 본 발명의 실시예에 따른 복합 스칼라 명령어를 지원하는 연산 방법은 상기 복합 스칼라 명령어를 지원하는 장치를 이용하여 데이터 연산을 수행하며, 구체적으로 다음과 같은 단계를 포함한다. 즉,
S3101, 서로 다른 유형의 데이터를 서로 다른 주소에 저장하는 단계;
메모리 모듈이 부동 소수점 데이터 및 고정 소수점 데이터를 서로 다른 주소와 대응되는 공간에 저장, 예를 들어 서로 다른 RAM주소 또는 서로 다른 레지스터 번호에 저장한다.
S3102, 복합 스칼라 명령어를 제어 신호로 디코딩하는 단계.
제어기 모듈이 저장 모듈에 입출력(IO)명령어를 송신하여 저장 모듈에서 복합 스칼라 명령어를 판독하여 로컬 명령어 대기열에 저장한다. 제어기 모듈이 로컬 명령어 대기열로부터 복합 스칼라 명령어를 판독하여 제어 신호로 디코딩한다.
S3103, 제어 신호에 따라 동작 데이터를 판독하며, 판독된 동작 데이터의 주소에 따라 동작 데이터의 유형을 판정하여 동작 데이터에 대해 연산을 수행하는 단계.
연산 장치 모듈은 제어기 모듈의 제어 신호를 수신한 다음에 피연산자 주소 필드를 판독하여 판독된 데이터가 부동 소수점 유형의 데이터인지 아니면 고정 소수점 유형의 데이터인지 판정할 수 있다. 만일 피연산자가 즉시 값인 경우, 데이터 유형 플래그 비트에 따라 피연산자 유형을 판정하고 연산을 수행하며; 만일 피연산자가 RAM 또는 레지스터에서 유래되면, RAM주소 또는 레지스터 번호에 따라 피연산자 유형을 판단하여 저장 모듈에서 피연산자를 판독하여 대응하는 연산을 수행한다.
S3104, 연산 결과를 대응하는 유형의 주소에 저장하는 단계.
제어기 모듈이 연산 장치 모듈에 IO명령어를 송신하며, 연산 장치 모듈은 연산 결과를 저장 모듈 또는 입출력 모듈에 전송한다.
상기 실시예로부터 알 수 있다시피, 본 발명에 따른 복합 스칼라 명령어의 실행 방법은 정확하고 효율적으로 복합 스칼라 명령어를 실행할 수 있다. 여기서, 복합 스칼라 명령어를 지원하는 장치는 복합 스칼라 명령어를 실행하기 위한 효율적인 실행 환경을 제공하며; 복합 스칼라 명령어 실행 방법은 정확하고 효율적으로 복합 스칼라 명령어를 실행할 수 있다.
또한, 본 발명은 기술적 명령어를 지원하는 기술적 장치 및 카운팅 방법을 더 제공하는데, 입력 데이터(카운팅 될 데이터) 중의 주어진 조건을 만족하는 요소수를 통계하는 알고리즘을 명령어 형태로 작성함으로써 계산 효율을 향상하며, 이하에서는 구체적인 실시예를 참조하여 이에 대해 상세히 설명하고자 한다.
본 발명의 예시적인 실시예에서 계수 명령어를 지원하는 계수 장치를 제공한다. 도 32는 본 발명의 실시예에 따른 계수 장치의 프레임워크의 구조도이다. 도 32에 도시된 바와 같이, 본 발명에 따른 계수 명령어를 지원하는 계수 장치는 저장 유닛, 계수 유닛 및 레지스터 유닛을 포함한다. 저장 유닛은 계수 유닛에 연결되며, 카운팅 될 입력 데이터 및 통계 된 입력 데이터 중의 주어진 조건을 충족시키는 요소의 수(계수 결과)를 저장하도록 구성되며, 상기 저장 유닛은 메인 메모리 일 수 있고; 또는, 임시 메모리 일 수도 있으며, 또한 고속 임시 메모리일 수도 있는데, 카운팅 될 입력 데이터를 고속 임시 메모리에 일시적으로 저장함으로써 계수 명령어가 유연하고 효과적으로 다양한 비트 폭의 데이터를 지원하게 할 뿐만 아니라, 실행 성능을 향상시킨다.
일 실시예에서, 상기 저장 유닛은 고속 임시 저장 메모리로서 상이한 비트 폭의 입력 데이터 및/또는 상이한 저장 공간을 차지하는 입력 데이터를 지원할 수 있으며, 카운팅 될 입력 데이터를 고속 임시 저장 메모리에 일시적으로 저장함으로써 카운팅 과정에 서로 다른 비트 폭을 갖는 데이터를 유연하고 효과적으로 지원할 수 있게 한다. 계수 유닛은 레지스터 유닛에 연결되며 계수 명령어를 취득하여 계수 명령어에 따라 레지스터 유닛 중의 입력 데이터의 주소를 판독한 다음에 입력 데이터의 주소에 따라 저장 유닛에서 상응한 카운팅 될 입력 데이터를 취득하며, 입력 데이터 중의 주어진 조건을 충족시키는 요소의 수를 카운팅하여 최종 계수 결과를 얻고, 상기 계수 결과를 저장 유닛에 저장한다. 레지스터 유닛은 카운팅 될 입력 데이터의 저장 유닛에 저장된 주소를 저장한다. 일 실시예에서, 레지스터 유닛에 저장된 주소는 카운팅 될 입력 데이터의 고속 임시 저장 메모리 중의 주소이다.
일부 실시예에서, 카운팅 될 입력 데이터의 데이터 유형은 0/1 벡터일 수 있고, 뉴메릭 또는 행렬일 수도 있다. 입력 데이터 중의 주어진 조건을 충족시키는 요소의 수를 통계할 때, 통계되는 요소가 충족해야 하는 조건은 주어진 요소와 동일할 수 있는데, 예를 들어, 벡터A 중에 포함되는 요소 x의 개수를 통계할 수 있고, x는 숫자n일 수 있고, n = 0,1,2...이며, x는 벡터m일 수 있으며, 예를 들어 m = 00,01,11...이다. 통계되는 요소가 충족해야 하는 조건은 주어진 표현식, 예를 들어 벡터B 중의 수치 y보다 큰 요소의 수를 통계할 수 있는데, 여기서 y는 정수 n일 수 있고, n=0,1,2...이며, 부동 소수점 수f일 수도 있는데, f=0.5,0.6...이며; 예를 들어, 벡터C 중의 z로 나누어 떨어지는 요소의 수를 통계할 수 있고, 여기서 z는 정수 n일 수 있고, n=0,1,2...이다.
도 33은 본 발명의 실시예에 따른 계수 장치의 계수 유닛의 구조도이다. 도 33에 도시된 바와 같이, 계수 유닛은 입출력 모듈, 연산 모듈, 누산기 모듈을 포함할 수 있다.
입출력 모듈은 연산 모듈에 연결되며, 매번 마다 저장 유닛 중의 카운팅 될 입력 데이터의 설정한 길이(상기 길이는 실제 요구에 따라 구성할 수 있음)에 해당하는 데이터를 취해 연산 모듈에 입력하여 연산을 수행하며, 연산 모듈이 연산을 종료하면 입출력 모듈은 카운팅 될 입력 데이터의 모든 요소를 취할 때까지 계속하여 고정 길이에 해당하는 다음 데이터를 취하며; 입출력 모듈은 누산기 모듈에 의해 계산된 계수 결과를 저장 유닛에 출력한다.
연산 모듈은 누산기 모듈에 연결되며, 고정 길이의 데이터를 입력하여 연산 모듈의 덧셈기를 사용하여 상기 입력 데이터의 주어진 조건을 충족시키는 각 요소의 수량을 덧셈하며, 얻은 결과를 누산기 모듈에 출력한다. 연산 모듈은 판단 서브 모듈을 더 포함하며, 상기 판단 서브 모듈은 입력 데이터가 주어진 조건(주어진 조건은 하나의 주어진 요소와 동일할 수 있고, 또는 값이 설정된 구간에 포함될 수 있음)을 충족시키는지 판단하며, 충족시키면 1을 출력하고, 충족시키지 못하면 0을 출력하며, 그 다음에 덧셈기에 전송하여 누적한다.
일 실시예에서, 덧셈기의 구조는 n개의 계층을 포함하며, 여기서, 제1계층에는 l개 전가산기, 제2계층에는
Figure 112019088654803-pct00037
개 전가산기, ……제m계층에는
Figure 112019088654803-pct00038
개 전가산기가 있으며; 여기서, l, m, n은 1보다 큰 정수이고, m는 1보다 크고 n보다 작은 정수이고,
Figure 112019088654803-pct00039
는 데이터x에 대해 반올림 연산을 수행하는 것을 나타낸다. 이하, 구체적인 동작 과정에 대해 설명한다. 입력 된 데이터 유형은 0/1벡터라고 가정하고, 현재 카운팅 될 0/1벡터 중의 1의 개수를 통계하고자 하며, 고정 길이의 0/1벡터의 길이가 3l이고, 상기l은 1보다 큰 정수라고 가정한다. 덧셈기의 제1계층에 l개 전가산기가 있고; 덧셈기의 제2계층에
Figure 112019088654803-pct00040
개 전가산기가 있으며, 만일 각 전가산기에는 3개의 입력 및 2개의 출력이 있으면, 제1계층은 총4l/3개 출력을 얻게 되며; 상기 방법에 의하면, 각 계층의 전가산기에 모두 3개 입력 및 2개 출력이 있고, 동일한 계층의 덧셈기가 병렬로 수행될 수 있으며; 계산 과정에서, 만일 제i번째 비트의 데이터 수가 1이면, 마지막 결과의 제i번째 비트의 출력으로 될 수 있다. 다시 말하면, 상기 부분의 0/1벡터 중의 1의 개수가 될 수 있다.
도 34는 구체적인 전가산기의 개략도이고, 상기 덧셈기 구조는 7계층(즉, n은 7)을 포함하며, 제1계층에 전가산기가 6개 있고, 일단의 길이가 고정된 0/1벡터의 길이는 18(즉, l은 6)이며, 여기서 각 계층의 전가산기는 병렬될 수 있으며, 예를 들어, 제3계층에
Figure 112019088654803-pct00041
=3개(즉, m은 3, l는 6)의 전가산기가 있으며, 입력 데이터가 (0,1,0), (1,0,0), (1,1,0), (0,1,0), (1,0,0), (1,1,0)인 경우, 본 발명의 실시예에 따른 전가산기를 통해 계산한 결과는 (001000), 즉 8이다. 상기 덧셈기를 사용하면 덧셈 계산의 병렬성을 증가시키고 연산 모듈의 연산 속도를 효과적으로 향상시킬 수 있다.
누산기 모듈은 또 입출력 모듈에 연결되며, 새로운 입력이 없을 때까지 누산기를 사용하여 연산 모듈이 출력한 결과를 누적한다.
계수 유닛은 다중 파이프라인 단계의 구조이며, 여기서 입출력 모듈에서 벡터를 취하는 연산은 제1파이프라인 단계에 위치하고, 연산 모듈은 제2파이프라인 단계에 위치하며, 누산기 모듈이 제3파이프라인 단계에 위치한다. 이러한 유닛들이 서로 다른 파이프라인 단계에 위치하기에, 계수 명령어에 필요한 연산을 더욱 효과적으로 구현할 수 있다.
도 35는 본 발명의 실시예에 따른 계수 장치의 계수 명령어의 명령어 세트 형식의 개략도이다. 도 35에 도시된 바와 같이, 계수 명령어는 연산 코드 및 하나 이상의 연산 필드를 포함하며, 연산 코드는 상기 명령어를 계수 명령어로 지시하며, 계수 유닛은 상기 연산 코드를 식별함으로써 계수 연산을 수행할 수 있고, 연산 필드는 상기 계수 명령어 중의 카운팅 될 입력 데이터를 지시하기 위한 주소 정보를 포함할 수 있고, 판단 조건의 주소 정보를 포함할 수도 있다. 여기서, 주소 정보는 즉시 값 또는 레지스터 번호일 수 있으며, 예를 들어, 하나의 벡터를 취득하려는 경우, 레지스터 번호에 따라 대응하는 레지스터에서 벡터의 시작 주소 및 벡터 길이를 취득할 수 있고, 그 다음에 벡터의 시작 주소와 백터의 길이에 따라 저장 유닛에서 상응한 주소에 저장된 벡터를 취득할 수 있다. 본 발명의 실시예에서 사용된 명령어들이 간결한 형식을 가지므로, 명령어 세트가 사용하기 편리하고 지원되는 데이터 길이가 유연하다.
도 36은 본 발명의 실시예에 따른 계수 장치의 계수 유닛의 실행 과정의 흐름도이다. 도 36에 도시된 바와 같이, 계수 유닛은 연산 시에 계수 명령어 연산 필드 중의 주소 정보에 따라 레지스터 유닛에서 카운팅 될 입력 데이터의 주소를 취득한 다음에 상기 주소에 따라 저장 유닛에서 카운팅 될 입력 데이터를 취득한다. 카운팅 될 입력 데이터는 고속 임시 저장 메모리에 저장되며, 카운팅 유닛이 고속 임시 저장 메모리로부터 고정된 길이의 입력 데이터를 취득할 때마다 판단 서브 모듈이 요소가 주어진 조건을 충족하는지 여부를 판정한 후, 덧셈기를 사용하여 상기 부분의 입력 데이터 중의 주어진 조건을 충족하는 요소의 개수를 통계하고, 누산기 모듈을 통해 주어진 조건을 만족하는 데이터 요소의 개수를 누적하여 최종 계수 결과를 얻고, 해당 계수 결과를 저장 유닛에 저장한다.
도 37은 본 발명의 실시예에 따른 계수 장치의 상세한 구조도이다. 도 37에 도시된 바와 같이, 본 발명의 계수 명령어를 지원하는 장치는 명령어 메모리, 명령어 처리 유닛, 명령어 캐시 유닛 및 의존 관계 처리 유닛을 더 포함할 수 있다.
명령어 처리 유닛의 경우, 명령어 메모리로부터 계수 명령어를 취득하고, 계수 명령어를 처리하여 명령어 캐시 유닛 및 의존 관계 처리 유닛에 제공한다. 상기 명령어 처리 유닛은 페치 모듈 및 디코딩 모듈을 포함한다. 페치 모듈은 명령어 메모리에 연결되어 명령어 메모리로부터 계수 명령어를 취득하며; 디코딩 모듈은 페치 모듈에 연결되어 취득한 계수 명령어를 디코딩한다. 또한, 명령어 처리 유닛은 명령어 대기열 메모리를 더 포함할 수 있으며, 명령어 대기열 메모리는 디코딩 모듈에 연결되어 디코딩된 계수 명령어를 순차적으로 저장하고, 명령어를 명령어 캐시 유닛과 의존 관계 처리 유닛에 순차적으로 전송한다. 명령어 캐시 유닛 및 의존 관계 처리 유닛이 수용할 수 있는 명령어의 수량이 제한되는 것을 감안하여, 명령어 대기열 메모리의 명령어는 반드시 명령어 캐시 유닛 및 의존 관계 처리 유닛이 유휴 상태가 될 때까지 대기한 후에 계속하여 순차적으로 전송해야 한다.
명령어 캐시 유닛은 명령어 처리 유닛에 연결되어 실행될 계수 명령어를 순차적으로 저장할 수 있다. 계수 명령어는 실행 과정에 동시에 명령 캐시 유닛에 캐싱되며, 하나의 명령어가 실행된 후, 명령어 실행 결과(계수 결과)를 명령어 캐시 유닛에 전송하며, 만일 상기 명령어가 명령어 캐시 유닛 중의 제출되지 않은 명령어 중의 제일 최초의 명령어인 경우, 상기 명령어가 제출되며, 명령어 실행 결과(계수 결과)를 함께 고속 일시 저장 메모리에 기록한다. 일 실시예에서, 명령어 캐시 유닛은 재정렬 버퍼일 수 있다.
의존 관계 처리 유닛은 명령어 대기열 메모리 및 계수 유닛에 연결되어 계수 유닛으로부터 계수 명령어를 취득하기 전에 상기 계수 명령어에 요구되는 벡터(즉, 카운팅 될 벡터)가 최신 벡터인지 판정하며, 최신 벡터이면, 직접 계수 명령어를 상기 계수 유닛에 제공하며; 그렇지 않으면, 상기 계수 명령어를 의존 관계 처리 유닛의 한 저장 대기열에 저장하며, 요구되는 벡터가 업그레이드된 후, 저장 대기열 중의 상기 계수 명령어를 상기 계수 유닛에 제공한다. 구체적으로, 계수 명령어가 고속 일시 저장 메모리를 액세스할 때 저장공간은 이전 명령어 결과의 기록을 대기중이며, 명령어 실행 결과의 정확성을 보장하기 위해 현재 명령어가 이전 명령어의 데이터와 의존 관계가 존재하는 것으로 감지되면, 상기 명령어는 반드시 의존 관계가 해소될 때까지 저장 대기열에서 대기해야 한다. 의존 관계 처리 유닛은 명령어가 비순차적 명령어 처리 및 순차 제출을 실현하고 파이프 라인 블로킹을 효과적으로 줄이며 정확한 예외를 실현할 수 있도록 한다.
페치 모듈은 명령어 메모리로부터 다음에 실행될 명령어를 취해 해당 명령어를 디코딩 모듈에 전송하는 역할을 하며; 디코딩 모듈은 명령어를 디코딩하여 디코딩된 명령어를 명령어 대기열 메모리로 전송하며; 명령어 대기열 메모리는 디코딩된 명령을 캐시하며, 명령어 캐시 유닛 및 의존 관계 처리 유닛이 유휴 상태일 때, 명령어를 명령어 캐시 유닛 및 의존 관계 처리 유닛으로 전송하며; 계수 명령어가 명령어 대기열 메모리로부터 의존 관계 처리 유닛으로 전송되는 과정에 계수 명령어는 레지스터 유닛으로부터 입력 데이터의 메모리 유닛의 주소를 판독하며; 의존 관계 처리 유닛은 현재 명령어와 이전 명령어 사이에 존재할 수 있는 데이터 의존 관계를 처리하며, 계수 명령어는 저장 유닛을 액세스하고, 이전에 실행된 다른 명령어도 동일한 저장 공간을 액세스할 수 있다. 명령어 실행 결과의 정확성을 보장하기 위해 현재 명령어가 이전 명령어의 데이터와 의존 관계가 존재하는 것으로 감지되면, 상기 명령어는 반드시 의존 관계가 해소될 때까지 저장 대기열에서 대기해야 한다. 계수 유닛은 의존 관계 처리 유닛에서 계수 명령어를 취득하여 계수 명령어에 따라 레지스터 유닛에서 입력 데이터의 주소를 판독하며, 저장 유닛에서 상응한 카운팅 될 입력 데이터를 취득하며, 입력 데이터 중의 주어진 조건을 충족시키는 요소의 개수를 통계하여 계수 결과를 명령어 캐시 유닛에 전송하며, 마지막에 계수 결과 및 상기 계수 명령어를 저장 유닛에 다시 기록한다.
도 38은 본 발명의 실시예에 따른 계수 장치의 실행 과정의 흐름도이다. 도 38에 도시된 바와 같이, 계수 명령어를 실행하는 과정은 다음과 같은 단계를 포함한다. 즉:
S3801, 페치 모듈이 명령어 메모리로부터 계수 명령어를 취해 상기 계수 명령어를 디코딩 모듈에 전송하는 단계;
S3802, 디코딩 모듈이 계수 명령어를 디코딩하여 계수 명령어를 명령어 대기열 메모리에 전송하는 단계;
S3803, 계수 명령어는 명령어 대기열 메모리에서 명령어 캐시 유닛 및 의존 관계 처리 유닛이 유휴상태일 때까지 대기된 후에 명령어 캐시 유닛 및 의존 관계 처리 유닛에 전송되는 단계;
S3804, 계수 명령어는 명령어 대기열 메모리로부터 의존 관계 처리 유닛에 전송되는 과정에서 레지스터 유닛에서 입력 데이터의 저장 유닛 중의 저장 된 주소를 판독하며, 의존 관계 처리 유닛은 상기 명령어와 전의 실행이 종료되지 않은 명령어가 데이터 측면에서 의존 관계가 존재하는지 분석하며, 해당 계수 명령어는 반드시 이전의 실행이 종료되지 않은 명령어와 데이터 측면에서 의존 관계가 존재하지 않을 때까지 의존 관계 처리 유닛의 저장 대기열에서 대기해야 하는 단계;
S3805, 의존 관계가 존재하지 않으면, 상기 계수 명령어는 계수 유닛에 전송되며, 계수 유닛은 저장 주소에 따라 저장 유닛으로부터 입력 데이터를 추출하여 입력 데이터 중의 주어진 조건을 충족시키는 요소의 수를 통계하는 단계;
S3806, 카운팅이 완료된 후, 계수 결과는 명령어 캐시 유닛을 통해 다시 저장 유닛에 기록되며, 명령어 캐시 유닛은 상기 계수 명령어를 저장 유닛에 제출하는 단계.
이로써, 첨부 도면을 참조하여 본 실시예에 대해 상세히 설명하였다. 상기 설명에 기초하여, 당업자는 본 발명의 실시예에 따른 계수 명령어를 지원하는 계수 장치 및 계수 방법을 충분히 이해할 수 있을 것이다.
일부 실시예에서, 상기 신경망 프로세서, 처리 장치, 계수 장치 또는 연산 장치를 포함하는 칩을 제공한다.
일부 실시예에서, 상기 칩을 포함하는 칩 패키징 구조를 제공한다.
일부 실시예에서, 상기 칩 패키징 구조를 포함하는 보드를 제공한다.
일 실시예에서, 상기 보드를 포함하는 전자 장비를 더 제공한다.
전자 장비는 로봇, 컴퓨터, 프린터, 스캐너, 태블릿, 스마트 단말기, 휴대폰, 운전 레코더, 네비게이터, 센서, 캠, 클라우드 서버, 카메라, 픽업 카메라, 프로젝터, 시계, 헤드폰, 모바일 저장 장치, 웨어러블 장치, 교통 도구, 가전 제품 및/또는 의료 기기를 포함하지만 이에 한정되는 것은 아니다.
상기 교통 도구는 비행기, 선박 및/또는 차량을 포함할 수 있고; 상기 가전 제품은 텔레비전, 에어컨, 전자 레인지, 냉장고, 밥솥, 가습기, 세탁기, 전기 램프, 가스 스토브, 레인지 후드를 포함하고; 의료 기기는 자기공명 영상장치, B형 초음파 검사 장치 및/또는 심전계를 포함한다.
본 발명의 실시예에서 개시된 관련 장치 및 방법은 다른 방식으로도 구현될 수 있다는 것을 이해해야 한다. 예를 들어, 설명된 장치 실시예는 단지 예시적인 것이며, 예를 들어, 부품 또는 모듈의 분할은 단지 논리적 기능 분할이며, 실제 구현에서 다른 분할 방식이 있을 수 있으며, 예를 들어, 복수의 부품 또는 모듈은 결합되거나 하나의 시스템에 통합될 수 있으며, 일부 기능은 무시되거나 실행되지 않을 수 있다.
본 명세서에서, 용어 "및/또는"이 사용될 수 있다. 본 명세서에 사용된 용어 "및/또는"은 하나 또는 기타 또는 양자 모두를 의미한다(예를 들어, A 및/또는 B는 A 또는 B 또는 A 및 B를 의미함).
상기 설명에서, 설명의 목적으로, 본 발명의 각 실시예를 전면적으로 이해하도록 다양한 세부 사항에 대해 설명하였다. 다만, 당업자는 이러한 세부 사항 중의 일부가 없더라도 하나 이상의 다른 실시예를 구현할 수 있다는 것이 명백할 것이다. 설명된 구체적인 실시예는 본 발명을 설명하기 위한 것으로서 본 발명을 한정하는 것이 아니다. 본 발명의 범위는 상기 제공된 특정예에 의해 한정되는 것이 아니라 다음의 청구 범위에 의해 결정된다. 다른 경우에서, 주지의 회로, 구조, 설비 및 동작은 설명의 이해를 모호하게 하지 않기 위해 상세하게 나타내지 않고, 단지 블록도 형태로 나타낸다. 다른 방식으로 지정되거나 명백히 알 수 있는 경우를 제외하고 도면의 부호 또는 도면의 부호의 끝부분은 적절하다고 인정되는 위치에 반복적으로 표시되어 유사하거나 동일한 특징을 갖는 대응되거나 유사한 요소를 나타낼 수 있다.
상기에서 다양한 동작 및 방법에 대해 설명하였다. 일부 방법은 비교적 기본적인 방식으로 흐름도를 사용하여 설명되었지만, 이러한 동작은 이들 방법에 선택적으로 추가 및/또는 제거될 수 있다. 또한, 흐름도는 예시적인 실시예에 따른 특정 동작 순서를 도시하지만, 특정 순서는 예시적인 것으로 이해되어야 한다. 대안적인 실시예에서 선택적으로 이들 동작을 상이한 방식으로 수행하거나 특정 동작을 결합하거나 또는 특정 동작을 인터리브할 수 있다. 본 명세서에 설명된 구성 요소, 특징 및 특정 선택적 세부 사항은 본 발명에서 설명된 방법에 선택적으로 적용될 수 있으며, 다양한 실시 예에서 상기 방법은 이러한 장치에 의해 수행되거나 및/또는 이러한 장치 내부에서 수행될 수 있다.
본 발명에서 각 기능 부분/유닛/서브 유닛/모듈/서브 모듈/컴포넌트는 하드웨어 일 수 있으며, 예를 들어 상기 하드웨어는 디지털 회로, 아날로그 회로 등을 포함하는 회로일 수 있다. 하드웨어 구조의 물리적 구현은 물리적 장치를 포함하지만 이에 한정되는 것은 아니다. 상기 컴퓨팅 장치의 컴퓨팅 모듈은 CPU (central processing unit), GPU (Graphics Processing Unit), FPGA(programmable logic controller), DSP(digital signal processor), ASIC과 같은 적절한 하드웨어 프로세서 일 수 있다. 상기 저장 유닛은 임의의 적절한 자기 저장 매체 또는 자기 광학 저장 매체, 예컨대 RRAM, DRAM, SRAM, EDRAM, HBM, HMC 등일 수 있다.
당업자는 설명의 편의 및 간결성을 위해 상기 기능 모듈의 분할을 예를 들어 설명하였지만, 실제 응용에서 상기 기능은 필요에 따라 상이한 기능 모듈을 통해 구현할 수 있는데, 다시 말하면, 장치의 내부 구조를 상이한 기능 모듈로 분할하여 상기 기능의 전부 또는 일부를 구현할 수 있다는 것을 명백히 해야 한다.
상기 특정 실시예는 본 발명의 목적, 기술 방안 및 유익한 효과에 대해 한층 더 상세하게 설명하였지만, 이는 본 발명의 특정 실시예에 불과하며, 본 발명을 한정하는 것이 아니라는 것을 이해해야 한다. 본 발명의 사상 및 원리의 범위에서 실시한 그 어떤 수정, 동등한 대체 또는 개선은 모두 본 발명의 보호 범위에 속한다.

Claims (34)

  1. 계산 비트 폭을 동적으로 구성 가능한 처리 장치에 있어서,
    신경망의 피연산 데이터, 중간 연산 결과, 최종 연산 결과 및 캐시 대상 데이터를 포함하는 데이터를 저장하는 메모리;
    상기 피연산 데이터, 상기 중간 연산 결과, 상기 최종 연산 결과 및 상기 캐시 대상 데이터 중 어느 하나의 폭 또는 상기 피연산 데이터와 상기 중간 연산 결과와 상기 최종 연산 결과와 상기 캐시 대상 데이터의 폭을 조정하는 데이터 폭 조정 회로;
    신경망의 피연산 데이터에 대해 연산을 수행하는 연산 회로; 및
    메모리, 데이터 폭 조정 회로 및 연산 회로를 제어하는 제어 회로를 포함하는 것을 특징으로 하는 장치.
  2. 제1항에 있어서,
    상기 연산 회로가 신경망의 피연산 데이터에 대해 연산을 수행하는 것은 피연산 데이터에 따라 연산 회로의 곱셈기 및 덧셈기 회로의 유형을 결정하여 연산을 수행하는 것을 포함하는 것을 특징으로 하는 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 메모리는
    신경망의 피연산 데이터를 저장하는 입력 저장 모듈;
    중간 연산 결과 및 최종 연산 결과를 저장하는 출력 저장 모듈; 및
    데이터의 캐시와 저장을 위한 캐시 모듈을 포함하며,
    상기 입력 저장 모듈은
    뉴런 매개 변수를 저장하는 뉴런 저장 모듈; 및
    시냅스 매개 변수를 저장하는 시냅스 저장 모듈을 포함하며,
    상기 출력 저장 모듈은
    중간 연산 결과를 저장하는 중간 연산 결과 저장 서브 모듈; 및
    최종 연산 결과를 저장하는 최종 연산 결과 저장 서브 모듈을 포함하는 것을 특징으로 하는 장치.
  4. 제3항에 있어서,
    상기 연산 회로는 복수의 연산 모듈을 포함하고, 상기 시냅스 저장 모듈은 복수의 시냅스 저장 서브 모듈을 포함하며, 상기 연산 모듈은 각각 하나 이상의 시냅스 저장 서브 모듈과 대응하여 연결되는 것을 특징으로 하는 장치.
  5. 제1항, 제2항 및 제4항 중 어느 한 항에 있어서,
    상기 연산 회로는 서로 다른 비트 폭의 데이터에 대해 연산을 수행하는 제1연산 모듈을 포함하며,
    상기 제1연산 모듈은 덧셈기 회로 및 곱셈기를 포함하며, 신경망 중의 비트 폭이 서로 다른 데이터에 대해 연산을 수행하며,
    상기 제1연산 모듈은 시프터, 레지스터 및 복수의 덧셈기를 포함하는 비트 직렬 덧셈기 배열 트리를 더 포함하고, 각 덧셈기는 모두 a 단자와 b단자를 포함하며, 상기 비트 직렬 덧셈기 배열 트리는 x+1층 구조를 포함하고, x는 양의 정수이며, 상기 비트 직렬 덧셈기 배열 트리는 다음과 같은 방식, 즉:
    각 레지스터와 덧셈기의 자리 올림 출력 단자(Cin)의 초기값을 0으로 설정하고, 각 피연산 데이터의 최하위 n비트를 각각 제1계층의 덧셈기의 a, b단자에 입력하며, 제1계층의 각 덧셈기 중에서 a, b단자에 의해 전송된 피연산 데이터의 최하위 n비트의 덧셈 연산을 수행하여 얻은 결과값(s)을 상위 계층의 덧셈기 a 또는 b단자에 전달하며, 각 덧셈기에 의해 취득한 캐리값(Cout)은 해당 계층의 덧셈기의 자리 올림 입력(Cin)에 전송하여 다음 비트에서 전송되는 피연산 데이터와 덧셈 연산을 수행하며;
    이전 계층의 덧셈기의 동작은 직전 계층의 덧셈기를 참조할 수 있는데, 제x계층에 도달할 때까지, 전송된 데이터에 대해 덧셈 연산을 수행한 후에 결과를 상위 계층에 전달하고 상기 계층의 덧셈기에 다시 자리 올림 전송하며, 제 x계층의 덧셈기는 연산 결과를 시프터를 통해 시프팅하여 레지스터에서 전송된 원래 결과와 덧셈 연산을 수행한 후에 다시 레지스터에 저장하며, 그 다음에 다음 비트에서 연산 데이터의 다음 하위의 n비트를 선택하여 비트 직렬 덧셈기 배열 트리에 전송하여 상응한 연산을 수행하는 방식으로 실행되는 것을 특징으로 하는 장치.
  6. 제2항에 있어서,
    상기 곱셈기는
    승수를 복수의 하위 비트 폭의 데이터로 분할하여 각각 피승수와 곱한 후에 누적 연산을 수행하는 기본 곱셈기;
    승수나 피승수, 또는 승수와 피승수가 희소 방식으로 표시될 경우에 곱셈 연산을 수행하는 희소 곱셈기; 및
    벡터 간의 곱셈 연산을 수행하는 퓨전 벡터 곱셈기 중의 적어도 한 가지를 포함하는 비트 직렬 연산기를 포함하며,
    상기 기본 곱셈기는 제1기본 곱셈기이며,
    비트 폭이 N비트인 승수를 저장하는 곱셈 저장 유닛;
    매번 마다 1<n≤N인 승수의 하위 n비트를 시프트 아웃하며, 시프트 아웃 된 승수를 다시 곱셈 저장 유닛에 전송하는 제1시프트 레지스터;
    매번 마다 승수의 하위 n비트 및 피승수를 입력하고 상기 승수의 하위 n비트의 각 비트값을 각각 승수와 AND 연산을 수행하여 AND 연산 결과를 얻는 입력 선택 회로;
    AND 연산 결과를 입력하여 시프팅하는 제2시프트 레지스터;
    시프팅된 데이터를 입력하여 덧셈하는 덧셈기; 및
    덧셈기의 덧셈 결과를 저장하며, 상기 덧셈 결과를 다시 덧셈기에 입력하여 다음번의 덧셈 연산에 참여하게 하는 결과 레지스터를 포함하는 것, 또는
    상기 기본 곱셈기는 제2기본 곱셈기이며,
    비트 폭이 N비트인 승수를 저장하는 곱셈 저장 유닛;
    매번 마다 1<n≤N인 승수의 하위 n비트를 시프트 아웃하며, 시프트 아웃 된 승수를 다시 곱셈 저장 유닛에 전송하는 제1시프트 레지스터;
    시프팅된 승수를 임시 저장하는 백업 레지스터;
    매번 마다 승수의 하위 n비트 및 피승수를 입력하고 상기 승수의 하위 n비트의 각 비트값을 각각 승수와 AND 연산을 수행하여 AND 연산 결과를 얻는 입력 선택 회로;
    AND 연산 결과를 입력하여 시프팅하는 제2시프트 레지스터;
    피승수를 시프팅하며 승수의 하위 m비트를 제거하는 제3시프트 레지스터;
    시프팅된 데이터를 입력하여 덧셈하는 덧셈기; 및
    덧셈기의 덧셈 결과를 저장하며, 상기 덧셈 결과를 다시 덧셈기에 입력하여 다음번의 덧셈 연산에 참여하게 하는 결과 레지스터를 포함하며,
    상기 제1기본 곱셈기 또는 상기 제2기본 곱셈기는 곱셈 저장 유닛의 금번 승수 수치가 모두 0인지 여부를 판정하는 판정 회로를 더 포함하며,
    상기 희소 곱셈기는,
    비트 폭이 N비트이며 희소 방식으로 표시되는 승수를 저장하는 곱셈 저장 유닛;
    매번마다 하위 비트로부터 승수 수치가 1인 비트를 선택하는 입력 선택 회로;
    매번마다 1보다 작은 비트 수의 각 하위 비트를 시프트 아웃하여 다음의 승수로서 다시 곱셈 저장 유닛에 전송하는 제1시프트 레지스터;
    상기 비트 수가 1인 비트에 따라 시프트 연산을 수행하는 제2시프트 레지스터;
    시프팅된 데이터를 입력하여 덧셈하는 덧셈기;
    덧셈기의 덧셈 결과를 저장하는 결과 레지스터;
    수치가 1인 비트에 따라 결과 레지스터 중의 결과에 대해 시프팅 후 다시 덧셈기에 입력하여 다음번의 연산에 참여하게 하는 제3시프트 레지스터; 및
    곱셈 저장 유닛의 금번 승수 수치가 모두 0인지 여부를 판정하는 판정 회로를 포함하는 것을 특징으로 하는 장치.
  7. 제6항에 있어서,
    상기 비트 직렬 연산기는
    피연산 데이터를 입력하여 1비트 이상의 데이터의 곱셈 연산이나 덧셈 연산, 또는 곱셈 및 덧셈 연산을 수행하여 연산 결과를 출력하는 연산 유닛;
    연산 결과를 입력하여 저장하는 저장 유닛; 및
    연산 결과를 입력하여 데이터의 이동을 수행하며, 설정 규칙에 따라 데이터의 비트 폭을 확대/축소하고, 설정 규칙에 따라 데이터의 하나 이상의 비트에 대해 처리하는 처리 유닛을 포함하는 것을 특징으로 하는 장치.
  8. 제5항에 있어서,
    상기 제1연산 모듈은 제2기본 곱셈기 및 비트 직렬 덧셈기 배열 트리를 포함하며, 다음과 같은 방식, 즉:
    벡터
    Figure 112019133348488-pct00097
    {AN…A2A1A0} 및
    Figure 112019133348488-pct00098
    {BN…B2B1B0}의 내적값을 계산한다고 설정하며,
    Figure 112019133348488-pct00099
    Figure 112019133348488-pct00100
    의 차원은 모두 동일하게 (N+1)이며, A는 피승수이고 B는 승수이며, 매번 연산 시에 A는 지정된 m비트를 취하고 B는 지정된 n비트를 취해서 연산을 수행하며, 상기 m은
    Figure 112019133348488-pct00101
    의 한개 차원의 비트 폭보다 작은 양의 정수이고, n은
    Figure 112019133348488-pct00102
    의 한개 차원의 비트 폭보다 작은 양의 정수이며;
    A0의 하위 m비트 및 B0의 하위 n비트를 취하는 곱셈기에서, A0의 하위 m비트 및 B0의 하위 n비트에 대해 곱셈 연산을 하여 얻은 선택 결과를 비트 직렬 덧셈기 배열 트리에 전송하여 덧셈 연산을 하여 연산 결과를 메모리에 저장하며;
    B를 n비트 시프팅하여 A의 하위 m비트와 곱셈 연산을 하여 비트 직렬 덧셈기 배열 트리에 전송하여 덧셈 연산을 하며, 이와 동시에, 원래 저장 유닛에 저장된 데이터를 제3시프팅 유닛에 의해 시프팅한 후 함께 덧셈 연산을 하여 결과를 저장 유닛에 저장하며;
    B의 모든 연산이 완료된 후, A를 m비트 시프팅하여 다시 차례로 B의 n비트와 연산을 하며;
    모든 연산이 완료된 후, 저장 유닛 중의 데이터가 바로 구하려는 최종 연산 결과
    인 방식으로 연산을 수행하는 것을 특징으로 하는 장치.
  9. 제1항의 장치를 포함하는 것을 특징으로 하는 칩.
  10. 제9항의 칩을 포함하는 것을 특징으로 하는 전자 장비.
  11. 제1항의 장치를 사용하는 방법에 있어서,
    제어 회로가 제어 명령어를 생성하여 메모리, 데이터 폭 조정 회로 및 연산 회로에 전송하는 단계;
    메모리가 수신된 제어 명령어에 따라 연산 회로에 신경망의 피연산 데이터를 입력하는 단계;
    데이터 폭 조정 회로가 수신된 제어 명령어에 따라 신경망의 피연산 데이터의 폭을 조정하는 단계; 및
    연산 회로가 입력된 피연산 데이터, 신경망 매개 변수 및 제어 명령어에 따라 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하여 연산 결과를 메모리에 반환하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 신경망의 피연산 데이터의 폭을 조정하는 단계는
    정밀도의 손실없이 데이터의 비트 폭을 증가 또는 감소하거나 또는 유지하는 방식;
    정밀도의 손실을 설정 가능한 상황에서 데이터의 비트 폭을 증가 또는 감소하거나 또는 유지하는 방식; 및
    지정된 변환 또는 연산 요구에 따라 데이터의 비트 폭에 대해 증가 또는 감소하거나 또는 유지하는 방식 중의 적어도 한가지 방식을 포함하는 것을 특징으로 하는 방법.
  13. 제11항에 있어서,
    상기 메모리는
    신경망의 피연산 데이터를 저장하는 입력 저장 모듈;
    중간 연산 결과 및 최종 연산 결과를 저장하는 출력 저장 모듈; 및
    데이터의 캐시 및 저장을 위한 캐시 모듈을 포함하며,
    상기 입력 저장 모듈은
    뉴런 매개 변수를 저장하는 뉴런 저장 모듈; 및
    시냅스 매개 변수를 저장하는 저장 모듈을 포함하며,
    상기 출력 저장 모듈은
    중간 연산 결과를 저장하기 위한 중간 결과 중간 연산 결과 저장 서브 모듈; 및
    최종 연산 결과를 저장하기 위한 최종 결과 최종 연산 결과 저장 서브 모듈을 포함하는 것을 특징으로 하는 방법.
  14. 제11항에 있어서,
    각각 하나 이상의 시냅스 모듈과 대응되는 복수의 연산 모듈을 설치하는 단계를 더 포함하며,
    연산 시에, 입력 저장 모듈이 모든 연산 모듈에 입력될 데이터를 전송하면, 시냅스 저장 모듈은 대응되는 연산 모듈에 시냅스 데이터를 전송하며, 연산 모듈이 연산을 수행한 후에 연산 결과를 출력 저장 모듈에 기록하는 것을 특징으로 하는 방법.
  15. 제11항 내지 제14항 중 어느 한 항에 있어서,
    제1연산 모듈을 사용하여 비트 폭이 서로 다른 데이터에 대해 연산을 수행하는 단계를 더 포함하며,
    상기 단계는 덧셈기 및 곱셈기를 사용하여 신경망의 서로 다른 비트 폭의 데이터에 대한 연산을 가속화시키는 단계를 포함하며,
    상기 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계는 비트 직렬 덧셈기 배열 트리를 사용하여 비트 폭이 서로 다른 데이터에 대해 연산을 수행하는 단계를 포함하며,
    피연산 데이터는 M개, 최대 비트 폭은 N로 설정하며, 상기 M와 N은 모두 양의 정수이고, N비트보다 작은 데이터는 비트수를 N비트로 보충하며; 비트 직렬 덧셈기 배열 트리는 x+1층을 포함하며, x는 양의 정수이고, 제1층에서부터 제x층의 덧셈기는 n(n≥1)비트의 자릿수의 덧셈 연산을 수행하고, 제x+1층의 덧셈기는 N비트 이상의 자릿수의 덧셈 연산을 수행하며; 먼저, 레지스터와 각 덧셈기의 자리 올림 출력 단자(Cin)의 초기값을 0으로 설정하고, 각 피연산 데이터의 최하위 n비트를 취해 각각 제1계층의 덧셈기의 a, b단자에 입력하며, 각 덧셈기 중에서 a, b단자에 의해 전송된 피연산 데이터의 최하위 n비트의 덧셈 연산을 수행하여 얻은 결과값(s)을 상위 계층의 덧셈기 a 또는 b단자에 전달하며, 얻은 캐리값(Cout)은 해당 계층의 덧셈기의 자리 올림 입력(Cin)에 전송하여 다음 비트에서 전송되는 피연산 데이터와 덧셈 연산을 수행하며;
    이전 계층의 덧셈기의 동작과 유사하게, 제x계층에 도달할 때까지, 전송된 데이터에 대해 덧셈 연산 수행 후 결과를 상위 계층에 전달하고 상기 계층의 덧셈기에 다시 자리 올림 전송하며, 제 x계층의 덧셈기는 연산 결과를 시프팅하여 레지스터에서 전송된 원래 결과와 덧셈 연산을 수행한 후에 다시 레지스터에 저장하며, 그 다음에 다음 비트에서 연산 데이터의 다음 하위의 n비트를 선택하여 비트 직렬 덧셈기 배열 트리에 전송하여 상응한 연산을 수행하는 방식으로 연산을 수행하는 것을 특징으로 하는 방법.
  16. 제15항에 있어서,
    상기 비트 직렬 덧셈기 배열 트리를 사용하여 비트 폭이 서로 다른 데이터에 대해 연산을 수행하는 단계는 제1층의 덧셈기의 연산이 완료된 후에 다음에 연산 될 n비트의 데이터를 입력하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 제15항에 있어서,
    상기 비트 직렬 덧셈기 배열 트리를 사용하여 비트 폭이 서로 다른 데이터에 대해 연산을 수행하는 단계는 상기 덧셈기가 상기 덧셈기에 입력되는 피연산 데이터의 a,b단자 및 자리 올림 입력(Cin)단자가 모두 0인 경우에 금번 연산 과정에서 종료되는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 제11항에 있어서,
    상기 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계는 비트 직렬 연산기를 사용하여 연산을 수행하는 단계를 포함하며,
    연산 유닛을 사용하여 피연산 데이터를 입력하여 하나 이상의 비트의 데이터의 곱셈 연산이나 덧셈 연산, 또는 곱셈 및 덧셈 연산을 수행하여 연산 결과를 출력하며;
    저장 유닛을 통해 연산 결과를 입력하여 저장하며;
    처리 유닛을 통해 연산 결과를 입력하고, 데이터의 이동을 수행하고, 설정 규칙에 따라 데이터 비트 폭을 확대/축소하고, 설정 규칙에 따라 데이터의 하나 이상의 비트에 대해 연산하는 동작을 포함하는 것, 또는
    상기 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계는 제1기본 곱셈기를 사용하여 비트 폭이 서로 다른 데이터에 대해 연산을 수행하는 단계를 포함하며, 다음과 같은 동작, 즉:
    곱셈 저장 유닛을 사용하여 비트 폭이 N비트인 승수를 저장하며;
    제1시프트 레지스터를 사용하여 매번 마다 1<n≤N인 승수의 하위 n비트를 시프트 아웃하고, 시프트 아웃 연산이 수행된 승수를 다시 곱셈 저장 유닛에 전송하며;
    입력 선택 회로를 사용하여 매번마다 승수의 하위 n비트 및 피승수를 입력하며, 상기 승수의 하위 n비트의 각 비트값은 각각 승수와 AND 연산을 수행하여 AND 연산 결과를 얻으며;
    제2시프트 레지스터를 사용하여 AND 연산 결과를 입력하고 시프팅하며;
    덧셈기를 사용하여 시프팅된 데이터를 입력하여 덧셈하며;
    결과 레지스터를 사용하여 덧셈기의 덧셈 결과를 저장하며, 상기 덧셈 결과를 다시 덧셈기에 입력하여 다음번의 덧셈 연산에 참여하게 하는 동작을 포함하는 것, 또는
    상기 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계는 제2기본 곱셈기를 사용하여 비트 폭이 서로 다른 데이터에 대해 연산을 수행하는 단계를 포함하며, 다음과 같은 동작, 즉:
    곱셈 저장 유닛을 사용하여 비트 폭이 N비트인 승수를 저장하며;
    제1시프트 레지스터를 사용하여 매번 마다 1<n≤N인 승수의 하위 n비트를 시프트 아웃하고, 시프트 아웃 연산이 수행된 승수를 다시 곱셈 저장 유닛에 전송하며;
    백업 레지스터를 사용하여 시프팅된 승수를 일시 저장하며;
    입력 선택 회로를 사용하여 매번 마다 승수의 하위 n비트 및 피승수를 입력하며, 상기 승수의 하위 n비트의 각 비트값은 각각 승수와 AND 연산을 수행하여 AND 연산 결과를 얻으며;
    제2시프트 레지스터를 사용하여 AND 연산 결과를 입력하고 시프팅하며;
    제3시프트 레지스터를 사용하여 피승수를 시프팅하고, 승수의 하위 m비트를 제거하며;
    덧셈기를 사용하여 시프팅된 데이터를 입력하여 덧셈하며;
    결과 레지스터를 사용하여 덧셈기의 덧셈 결과를 저장하며, 상기 덧셈 결과를 다시 덧셈기에 입력하여 다음번의 덧셈 연산에 참여하게 하는 동작을 포함하며,
    상기 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계는 희소 곱셈기를 사용하여 비트 폭이 서로 다른 데이터에 대해 연산을 수행하는 단계를 포함하며, 다음과 같은 동작, 즉:
    곱셈 저장 유닛을 사용하여 비트 폭이 N비트이며 희소 방식으로 표시되는 승수를 저장하며;
    입력 선택 회로를 사용하여 매번마다 하위 비트로부터 승수 수치가 1인 비트를 선택하며;
    제1시프트 레지스터를 사용하여 매번마다 1보다 작은 비트 수의 각 하위 비트를 시프트 아웃하여 다음의 승수로서 다시 곱셈 저장 유닛에 전송하며;
    제2시프트 레지스터를 사용하여 상기 비트 수가 1인 비트에 따라 시프트 연산을 수행하며;
    덧셈기를 사용하여 시프팅된 데이터를 입력하여 덧셈하며;
    결과 레지스터를 사용하여 덧셈기의 덧셈 결과를 저장하며;
    제3시프트 레지스터를 사용하여 수치가 1인 비트에 따라 결과 레지스터 중의 결과에 대해 시프팅 후 다시 덧셈기에 입력하여 다음번의 연산에 참여하게 하는 동작을 포함하는 것을 특징으로 하는 방법.
  19. 제11항에 있어서,
    상기 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계는 제2기본 곱셈기 및 비트 직렬 덧셈기 배열 트리를 사용하여 다음의 방식에 따라 동작, 즉:
    벡터
    Figure 112019133348488-pct00103
    {AN…A2A1A0} 및
    Figure 112019133348488-pct00104
    {BN…B2B1B0}를 계산하기 위한 내적값을 설정하며,
    Figure 112019133348488-pct00105
    Figure 112019133348488-pct00106
    의 차원은 모두 동일하게 (N+1)이며, A는 피승수이고 B는 승수이며, 매번 연산 시에 A는 지정된 m비트를 취하고 B는 지정된 n비트를 취해서 연산을 수행하며, 상기 m은
    Figure 112019133348488-pct00107
    의 한개 차원의 비트 폭보다 작은 양의 정수이고, n은
    Figure 112019133348488-pct00108
    의 한개 차원의 비트 폭보다 작은 양의 정수이며;
    A0의 하위 m비트 및 B0의 하위 n비트를 취하는 곱셈기에서, A0의 하위 m비트 및 B0의 하위 n비트에 대해 곱셈 연산을 하여 얻은 선택 결과를 비트 직렬 덧셈기 배열 트리에 전송하여 덧셈 연산을 하여 연산 결과를 저장 유닛에 저장하며;
    B를 n비트 시프팅하여 A의 하위 m비트와 곱셈 연산을 하여 비트 직렬 덧셈기 배열 트리에 전송하여 덧셈 연산을 하며, 이와 동시에, 원래 저장 유닛에 저장된 데이터를 제3시프팅 유닛에 의해 시프팅한 후 함께 덧셈 연산을 하여 결과를 저장 유닛에 저장하며;
    B의 모든 연산이 완료된 후, A를 m비트 시프팅하여 다시 차례로 B의 n비트와 연산을 하며;
    모든 연산이 완료된 후, 저장 유닛의 데이터가 바로 구하려는 최종 연산 결과인 방식으로 동작되는 것을 특징으로 하는 방법.
  20. 제11항에 있어서,
    상기 계산 비트 폭이 서로 다른 신경망의 피연산 데이터에 대해 연산을 수행하는 단계는 상기 연산 회로를 통해 완전하게 연결된 계층이나 풀링 계층, 또는 완전하게 연결된 계층과 풀링 계층의 연산을 수행하는 단계를 포함하는 것을 특징으로 하는 방법.
  21. 제11항에 있어서,
    상기 연산 회로가 수신된 제어 명령어에 따라 제1연산 모듈 중의 대응하는 유형의 곱셈기 및 덧셈기 회로를 선택하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020197025307A 2017-04-19 2018-04-17 처리 장치 및 처리 방법 KR102292349B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020197038135A KR102258414B1 (ko) 2017-04-19 2018-04-17 처리 장치 및 처리 방법

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
CN201710256445.X 2017-04-19
CN201710256445.XA CN108733412B (zh) 2017-04-19 2017-04-19 一种运算装置和方法
CN201710269049.0A CN108734288B (zh) 2017-04-21 2017-04-21 一种运算方法及装置
CN201710264686.9A CN108733408A (zh) 2017-04-21 2017-04-21 计数装置及计数方法
CN201710269049.0 2017-04-21
CN201710269106.5A CN108734281A (zh) 2017-04-21 2017-04-21 处理装置、处理方法、芯片及电子装置
CN201710269106.5 2017-04-21
CN201710264686.9 2017-04-21
PCT/CN2018/083415 WO2018192500A1 (zh) 2017-04-19 2018-04-17 处理装置和处理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197038135A Division KR102258414B1 (ko) 2017-04-19 2018-04-17 처리 장치 및 처리 방법

Publications (2)

Publication Number Publication Date
KR20190139837A KR20190139837A (ko) 2019-12-18
KR102292349B1 true KR102292349B1 (ko) 2021-08-20

Family

ID=63856461

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197038135A KR102258414B1 (ko) 2017-04-19 2018-04-17 처리 장치 및 처리 방법
KR1020197025307A KR102292349B1 (ko) 2017-04-19 2018-04-17 처리 장치 및 처리 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197038135A KR102258414B1 (ko) 2017-04-19 2018-04-17 처리 장치 및 처리 방법

Country Status (6)

Country Link
US (5) US11531540B2 (ko)
EP (3) EP3786786B1 (ko)
JP (2) JP6865847B2 (ko)
KR (2) KR102258414B1 (ko)
CN (1) CN109121435A (ko)
WO (1) WO2018192500A1 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11350360B2 (en) 2017-06-27 2022-05-31 Amazon Technologies, Inc. Generating adaptive models for IoT networks
US10554382B2 (en) * 2017-06-27 2020-02-04 Amazon Technologies, Inc. Secure models for IoT devices
CN107992329B (zh) * 2017-07-20 2021-05-11 上海寒武纪信息科技有限公司 一种计算方法及相关产品
CN108228696B (zh) * 2017-08-31 2021-03-23 深圳市商汤科技有限公司 人脸图像检索方法和系统、拍摄装置、计算机存储介质
US11275713B2 (en) * 2018-06-09 2022-03-15 International Business Machines Corporation Bit-serial linear algebra processor
CN109492241B (zh) * 2018-08-10 2020-03-10 中科寒武纪科技股份有限公司 转换方法、装置、计算机设备和存储介质
US11056098B1 (en) * 2018-11-28 2021-07-06 Amazon Technologies, Inc. Silent phonemes for tracking end of speech
CN112085176B (zh) * 2019-06-12 2024-04-12 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
EP3998554A4 (en) * 2019-06-12 2023-11-15 Shanghai Cambricon Information Technology Co., Ltd METHOD FOR DETERMINING QUANTIZATION PARAMETERS IN A NEURONAL NETWORK AND ASSOCIATED PRODUCTS
CN110766155A (zh) * 2019-09-27 2020-02-07 东南大学 一种基于混合精度存储的深度神经网络加速器
CN110750232B (zh) * 2019-10-17 2023-06-20 电子科技大学 一种基于sram的并行乘加装置
CN110909869B (zh) * 2019-11-21 2022-08-23 浙江大学 一种基于脉冲神经网络的类脑计算芯片
CN110991633B (zh) * 2019-12-04 2022-11-08 电子科技大学 一种基于忆阻网络的残差神经网络模型及其应用方法
CN111105581B (zh) * 2019-12-20 2022-03-15 上海寒武纪信息科技有限公司 智能预警方法及相关产品
CN111047037B (zh) * 2019-12-27 2024-05-24 北京市商汤科技开发有限公司 数据处理方法、装置、设备及存储介质
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
US20210241080A1 (en) * 2020-02-05 2021-08-05 Macronix International Co., Ltd. Artificial intelligence accelerator and operation thereof
US11593628B2 (en) * 2020-03-05 2023-02-28 Apple Inc. Dynamic variable bit width neural processor
KR102414582B1 (ko) * 2020-04-29 2022-06-28 한국항공대학교산학협력단 신경망 모델의 추론 속도 향상 장치 및 방법
WO2021226720A1 (en) * 2020-05-14 2021-11-18 The Governing Council Of The University Of Toronto System and method for memory compression for deep learning networks
US11783163B2 (en) * 2020-06-15 2023-10-10 Arm Limited Hardware accelerator for IM2COL operation
CN111930671B (zh) * 2020-08-10 2024-05-14 中国科学院计算技术研究所 异构智能处理器、处理方法及电子设备
US11427290B2 (en) 2020-08-31 2022-08-30 Mike Scheck Anchor rescue system
CN112183732A (zh) * 2020-10-22 2021-01-05 中国人民解放军国防科技大学 卷积神经网络加速方法、装置和计算机设备
CN112099898B (zh) * 2020-11-06 2021-02-09 广州市玄武无线科技股份有限公司 一种基于Web前端的表格处理系统及方法
CN112765936B (zh) * 2020-12-31 2024-02-23 出门问问(武汉)信息科技有限公司 一种基于语言模型进行运算的训练方法及装置
CN113434113B (zh) * 2021-06-24 2022-03-11 上海安路信息科技股份有限公司 基于静态配置数字电路的浮点数乘累加控制方法及系统
CN113642724B (zh) * 2021-08-11 2023-08-01 西安微电子技术研究所 一种高带宽存储的cnn加速器
KR102395744B1 (ko) * 2021-09-16 2022-05-09 오픈엣지테크놀로지 주식회사 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치
KR102442577B1 (ko) * 2022-03-08 2022-09-13 주식회사 마키나락스 개발환경을 제공하는 방법
KR20230132343A (ko) * 2022-03-08 2023-09-15 주식회사 마키나락스 개발환경을 제공하는 방법
US20240080423A1 (en) * 2022-09-02 2024-03-07 Samsung Electronics Co., Ltd. Fusion techniques for combining most significant bits and least significant bits of image data in image processing or other applications

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2639461A1 (fr) * 1988-11-18 1990-05-25 Labo Electronique Physique Arrangement bidimensionnel de points memoire et structure de reseaux de neurones utilisant un tel arrangement
DE69031842T2 (de) * 1989-02-20 1998-04-16 Fujitsu Ltd Lernsystem und Lernverfahren für eine Datenverarbeitungsvorrichtung
JPH02287862A (ja) * 1989-04-28 1990-11-27 Toshiba Corp ニューラルネットワーク演算装置
US5086479A (en) * 1989-06-30 1992-02-04 Hitachi, Ltd. Information processing system using neural network learning function
DE69032391T2 (de) * 1989-11-13 1998-10-29 Harris Corp Mehrere Bit umkodierender Multiplizierer
JPH0820942B2 (ja) * 1991-09-26 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション 高速乗算器
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
JPH06139217A (ja) * 1992-10-29 1994-05-20 Hitachi Ltd 高精度演算処理装置および方法
US6601051B1 (en) * 1993-08-09 2003-07-29 Maryland Technology Corporation Neural systems with range reducers and/or extenders
US5630024A (en) * 1994-01-19 1997-05-13 Nippon Telegraph And Telephone Corporation Method and apparatus for processing using neural network with reduced calculation amount
JPH0973440A (ja) * 1995-09-06 1997-03-18 Fujitsu Ltd コラム構造の再帰型ニューラルネットワークによる時系列トレンド推定システムおよび方法
US6049793A (en) * 1996-11-15 2000-04-11 Tomita; Kenichi System for building an artificial neural network
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
JP2001117900A (ja) * 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ニューラルネットワーク演算装置
KR20030009682A (ko) * 2001-07-23 2003-02-05 엘지전자 주식회사 가산기 기반 분산 연산의 가산 공유 정보 추출을 위한신경망 알고리즘 구현 방법
US7529703B2 (en) * 2003-11-18 2009-05-05 Citigroup Global Markets, Inc. Method and system for artificial neural networks to predict price movements in the financial markets
US20050257026A1 (en) * 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
US7398347B1 (en) * 2004-07-14 2008-07-08 Altera Corporation Methods and apparatus for dynamic instruction controlled reconfigurable register file
KR100724991B1 (ko) * 2004-11-16 2007-06-04 삼성전자주식회사 직교주파수분할다중접속 방식의 무선통신시스템에서 디지털신호 처리 장치 및 방법
US7428521B2 (en) * 2005-06-29 2008-09-23 Microsoft Corporation Precomputation of context-sensitive policies for automated inquiry and action under uncertainty
US7881889B2 (en) * 2005-12-21 2011-02-01 Barclay Kenneth B Method and apparatus for determining energy savings by using a baseline energy use model that incorporates an artificial intelligence algorithm
US8543343B2 (en) * 2005-12-21 2013-09-24 Sterling Planet, Inc. Method and apparatus for determining energy savings by using a baseline energy use model that incorporates an artificial intelligence algorithm
US7451122B2 (en) * 2006-03-29 2008-11-11 Honeywell International Inc. Empirical design of experiments using neural network models
GB2447428A (en) * 2007-03-15 2008-09-17 Linear Algebra Technologies Lt Processor having a trivial operand register
CN100492415C (zh) 2007-04-20 2009-05-27 哈尔滨工程大学 柴油机运行数据记录方法
US8055886B2 (en) * 2007-07-12 2011-11-08 Texas Instruments Incorporated Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction
CN101359453A (zh) * 2007-07-31 2009-02-04 奇美电子股份有限公司 数据处理装置与其数据处理方法
US7694112B2 (en) * 2008-01-31 2010-04-06 International Business Machines Corporation Multiplexing output from second execution unit add/saturation processing portion of wider width intermediate result of first primitive execution unit for compound computation
CN101527010B (zh) 2008-03-06 2011-12-07 上海理工大学 人工神经网络算法的硬件实现方法及其系统
US8521801B2 (en) * 2008-04-28 2013-08-27 Altera Corporation Configurable hybrid adder circuitry
CN101309430A (zh) * 2008-06-26 2008-11-19 天津市亚安科技电子有限公司 基于fpga的视频图像预处理器
CN101685388B (zh) 2008-09-28 2013-08-07 北京大学深圳研究生院 执行比较运算的方法和装置
CN101599828A (zh) * 2009-06-17 2009-12-09 刘霁中 一种高效的rsa加解密方法及其协处理器
US8468191B2 (en) * 2009-09-02 2013-06-18 Advanced Micro Devices, Inc. Method and system for multi-precision computation
US8712940B2 (en) * 2011-05-31 2014-04-29 International Business Machines Corporation Structural plasticity in spiking neural networks with symmetric dual of an electronic neuron
KR101303591B1 (ko) * 2011-10-07 2013-09-11 전자부품연구원 통합형 서포트 벡터 머신 회로 장치
WO2013095592A1 (en) 2011-12-22 2013-06-27 Intel Corporation Apparatus and method for vector compute and accumulate
CN102750127B (zh) * 2012-06-12 2015-06-24 清华大学 一种协处理器
CN103699360B (zh) 2012-09-27 2016-09-21 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
CN103019656B (zh) * 2012-12-04 2016-04-27 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
US9563401B2 (en) 2012-12-07 2017-02-07 Wave Computing, Inc. Extensible iterative multiplier
US9110657B2 (en) 2013-01-21 2015-08-18 Tom Yap Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9558743B2 (en) * 2013-03-15 2017-01-31 Google Inc. Integration of semantic context information
US9037945B2 (en) * 2013-03-26 2015-05-19 Seagate Technology Llc Generating partially sparse generator matrix for a quasi-cyclic low-density parity-check encoder
CN203299808U (zh) * 2013-04-16 2013-11-20 西华大学 位串行加法器
JP6042274B2 (ja) * 2013-06-28 2016-12-14 株式会社デンソーアイティーラボラトリ ニューラルネットワーク最適化方法、ニューラルネットワーク最適化装置及びプログラム
KR20150016089A (ko) * 2013-08-02 2015-02-11 안병익 신경망 컴퓨팅 장치 및 시스템과 그 방법
US9495155B2 (en) 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US9513907B2 (en) 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US10068170B2 (en) * 2013-09-23 2018-09-04 Oracle International Corporation Minimizing global error in an artificial neural network
US10373047B2 (en) * 2014-02-28 2019-08-06 Educational Testing Service Deep convolutional neural networks for automated scoring of constructed responses
CN105207794B (zh) 2014-06-05 2019-11-05 南京中兴软件有限责任公司 统计计数设备及其实现方法、具有统计计数设备的系统
CN104699458A (zh) 2015-03-30 2015-06-10 哈尔滨工业大学 定点向量处理器及其向量数据访存控制方法
US10262259B2 (en) * 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
CN105005911B (zh) 2015-06-26 2017-09-19 深圳市腾讯计算机系统有限公司 深度神经网络的运算系统及运算方法
KR101778679B1 (ko) * 2015-10-02 2017-09-14 네이버 주식회사 딥러닝을 이용하여 텍스트 단어 및 기호 시퀀스를 값으로 하는 복수 개의 인자들로 표현된 데이터를 자동으로 분류하는 방법 및 시스템
US10474627B2 (en) * 2015-10-08 2019-11-12 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
CN106485321B (zh) 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 具有架构神经网络执行单元的处理器
CN105426160B (zh) 2015-11-10 2018-02-23 北京时代民芯科技有限公司 基于sprac v8指令集的指令分类多发射方法
CN105512724B (zh) * 2015-12-01 2017-05-10 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
CN105913118B (zh) * 2015-12-09 2019-06-04 上海大学 一种基于概率计算的人工神经网络硬件实现装置
KR102174346B1 (ko) * 2015-12-21 2020-11-04 구글 엘엘씨 메시징 애플리케이션들을 위한 자동적인 제안들 및 다른 콘텐츠
CN107506828B (zh) * 2016-01-20 2020-11-03 中科寒武纪科技股份有限公司 用于稀疏连接的人工神经网络计算装置和方法
JP6890615B2 (ja) * 2016-05-26 2021-06-18 タータン エーアイ リミテッド ディープニューラルネットワークについての加速器
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
US11295203B2 (en) * 2016-07-27 2022-04-05 International Business Machines Corporation Optimizing neuron placement in a neuromorphic system
CN106484366B (zh) * 2016-10-17 2018-12-14 东南大学 一种二元域位宽可变模乘运算器
CN106447034B (zh) 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
US10083162B2 (en) * 2016-11-28 2018-09-25 Microsoft Technology Licensing, Llc Constructing a narrative based on a collection of images
US10249292B2 (en) * 2016-12-14 2019-04-02 International Business Machines Corporation Using long short-term memory recurrent neural network for speaker diarization segmentation
US10546575B2 (en) * 2016-12-14 2020-01-28 International Business Machines Corporation Using recurrent neural network for partitioning of audio data into segments that each correspond to a speech feature cluster identifier
US10691996B2 (en) * 2016-12-15 2020-06-23 Beijing Deephi Intelligent Technology Co., Ltd. Hardware accelerator for compressed LSTM
US11354565B2 (en) * 2017-03-15 2022-06-07 Salesforce.Com, Inc. Probability-based guider
US20180314942A1 (en) * 2017-04-19 2018-11-01 AIBrain Corporation Scalable framework for autonomous artificial intelligence characters
US20180314963A1 (en) * 2017-04-19 2018-11-01 AIBrain Corporation Domain-independent and scalable automated planning system using deep neural networks
EP3452787B1 (en) * 2017-04-27 2020-12-23 Beijing Didi Infinity Technology And Development Co., Ltd. Systems and methods for route planning
US11170287B2 (en) * 2017-10-27 2021-11-09 Salesforce.Com, Inc. Generating dual sequence inferences using a neural network model
CN107992486A (zh) * 2017-10-30 2018-05-04 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
US10599391B2 (en) * 2017-11-06 2020-03-24 Google Llc Parsing electronic conversations for presentation in an alternative interface
US10365340B1 (en) * 2018-03-01 2019-07-30 Siemens Medical Solutions Usa, Inc. Monitoring dynamics of patient brain state during neurosurgical procedures
US10713441B2 (en) * 2018-03-23 2020-07-14 Servicenow, Inc. Hybrid learning system for natural language intent extraction from a dialog utterance
US11526728B2 (en) * 2018-04-09 2022-12-13 Microsoft Technology Licensing, Llc Deep learning model scheduling
CN109829451B (zh) * 2019-03-22 2021-08-24 京东方科技集团股份有限公司 生物体动作识别方法、装置、服务器及存储介质

Also Published As

Publication number Publication date
CN109121435A (zh) 2019-01-01
EP3786786A1 (en) 2021-03-03
US20200050918A1 (en) 2020-02-13
JP2020074099A (ja) 2020-05-14
EP3614259A4 (en) 2021-02-24
US20200097792A1 (en) 2020-03-26
JP6821002B2 (ja) 2021-01-27
US11734002B2 (en) 2023-08-22
KR20200000480A (ko) 2020-01-02
US20200117976A1 (en) 2020-04-16
EP3786786C0 (en) 2023-06-07
KR20190139837A (ko) 2019-12-18
EP3614259A1 (en) 2020-02-26
EP3786786B1 (en) 2023-06-07
EP3654172A1 (en) 2020-05-20
US20200097794A1 (en) 2020-03-26
US11698786B2 (en) 2023-07-11
US11531540B2 (en) 2022-12-20
US20200097795A1 (en) 2020-03-26
WO2018192500A1 (zh) 2018-10-25
US11531541B2 (en) 2022-12-20
KR102258414B1 (ko) 2021-05-28
JP2020518042A (ja) 2020-06-18
US11720353B2 (en) 2023-08-08
JP6865847B2 (ja) 2021-04-28

Similar Documents

Publication Publication Date Title
KR102292349B1 (ko) 처리 장치 및 처리 방법
Liang et al. FP-BNN: Binarized neural network on FPGA
CN109219821B (zh) 运算装置和方法
CN109117948B (zh) 画风转换方法及相关产品
US11442786B2 (en) Computation method and product thereof
CN106991477B (zh) 一种人工神经网络压缩编码装置和方法
CN108733348B (zh) 融合向量乘法器和使用其进行运算的方法
US20210216318A1 (en) Vector Processor Architectures
JP6826181B2 (ja) 計算装置と計算方法
CN113033765A (zh) 用于实现卷积神经网络的可配置处理器元件阵列
CN110163357B (zh) 一种计算装置及方法
KR20200143686A (ko) 연산을 가속하기 위한 가속기 및 시스템
CN110163350B (zh) 一种计算装置及方法
Gokhale et al. Snowflake: A model agnostic accelerator for deep convolutional neural networks
CN116468078A (zh) 面向人工智能芯片的智能引擎处理方法和装置
US20230012127A1 (en) Neural network acceleration
CN114968356A (zh) 一种数据处理的方法、装置、处理器和计算设备
CN117707786A (zh) 一种多任务自分配及调度的人工智能芯片架构方案
CN116400926A (zh) 面向人工智能芯片的标量引擎处理方法和装置

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant