KR20190029515A - 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치 - Google Patents

비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치 Download PDF

Info

Publication number
KR20190029515A
KR20190029515A KR1020187034252A KR20187034252A KR20190029515A KR 20190029515 A KR20190029515 A KR 20190029515A KR 1020187034252 A KR1020187034252 A KR 1020187034252A KR 20187034252 A KR20187034252 A KR 20187034252A KR 20190029515 A KR20190029515 A KR 20190029515A
Authority
KR
South Korea
Prior art keywords
arithmetic
instruction
unit
bit width
data
Prior art date
Application number
KR1020187034252A
Other languages
English (en)
Other versions
KR102486029B1 (ko
Inventor
티엔스 천
치 궈
즈동 두
Original Assignee
캠브리콘 테크놀로지스 코퍼레이션 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캠브리콘 테크놀로지스 코퍼레이션 리미티드 filed Critical 캠브리콘 테크놀로지스 코퍼레이션 리미티드
Publication of KR20190029515A publication Critical patent/KR20190029515A/ko
Application granted granted Critical
Publication of KR102486029B1 publication Critical patent/KR102486029B1/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 발명은 연산 유닛, 연산 방법 및 연산 장치에 관한 것으로, 더욱 상세하게는,
명령 중의 비트폭 영역을 설정해 연산에 참여하는 연산 데이터 비트폭을 배치하고;
명령에 의거하여 연산할 때 먼저 명령 중의 조작 함수가 가리키는 연산 데이터 비트폭과 동등한 연산 장치의 존재 여부를 판단한 후, 존재하면 조작 함수를 대응되는 연산 장치에게 직접 전송하고, 존재하지 않으면 연산 장치 합병 방안을 생성함으로써 연산 장치 합병 방안에 의거하여 복수개 연산 장치를 하나의 새로운 연산 장치로 합병해 상기 새로운 연산 장치의 비트폭이 상기 조작 함수의 비트폭에 부합되도록 하고 상기 조작 함수를 상기 새로운 연산 장치로 전송하며;
다시 명령을 전송해 상기 조작 함수의 연산 장치를 획득함으로써 신경망 연산/ 행렬 연산/ 벡터 연산을 실행하는 것을 특징으로 하는 연산 유닛, 연산 방법 및 연산 장치에 관한 것이다.
본 발명에 띠른 연산 유닛, 연산 방법 및 연산 장치는 비트폭이 다른 연산 데이터의 연산을 지원해 고효율 신경망 연산, 행렬 연산 및 벡터 연산을 구현하고, 연산 장치의 수량을 절약하며 하드웨어 면적을 줄인다.

Description

비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치
본 발명은 컴퓨터 분야에 관한 것으로, 더욱 상세하게는 비트폭이 다른 연산 데이터의 연산을 지원하는 연산 유닛, 연산 방법 및 연산 장치에 관한 것이다.
인공 신경망(ANNs)은 줄여서 신경망(NNs)이라고 부른다. 이는 일종의 동물 신경망 행위 특성을 모방해 분산형 병렬 정보 처리를 진행하는 알고리즘 수학 모델이다. 이러한 망은 시스템의 복잡도에 의존하며 내부 대량 노드 간의 상호 연결성을 조절함으로써 정보 처리의 목적을 달성한다. 현재 신경망은 스마트 제어, 기계 학습 등 다양한 분야에서 모두 빠른 발전을 이루고 있다. 신경망은 알고리즘 수학 모델에 속해 대량 수학 연산과 관련되므로 신경망 연산을 어떻게 신속히, 정확히 실행하는 것은 현재 시급히 해결해야 하는 문제다. 여기에서, 신경망 연산에서 각 파라미터는 다른 층에서 표시, 연산할 때 필요한 비트폭이 달라 비트폭이 다른 연산 장치를 사용하면 실제적인 연산량을 줄이고 동력 소모량을 낮출 수 있으며; 비트폭이 작은 연산 장치를 비트폭이 큰 연산 장치로 합병해 비트폭이 작은 연산 장치를 반복적으로 사용함으로써 연산 장치의 수량을 줄이고 장치의 면적을 좁힐 수 있다.
본 발명의 목적은 연산 유닛, 연산 방법 및 연산 장치를 제공해 비트폭이 다른 연산 데이터의 연산을 지원함으로써 고효율 신경망 연산, 행렬 연산 및 벡터 연산을 구현하는 데 있다.
상기 목적을 구현하기 위하여, 본 발명이 제공하는 연산 유닛, 연산 방법 및 연산 장치는 먼저 연산 데이터 비트폭과 동등한 연산 장치의 존재 여부를 판단한 후, 존재하면 상기 연산 데이터를 대응되는 연산 장치에게 직접 전송하고, 존재하지 않으면 연산 장치 합병 방안을 생성해 상기 새로운 연산 장치의 비트폭이 상기 연산 데이터의 비트폭에 부합되도록 연산 장치 합병 방안에 의거하여 복수개 연산 장치를 하나의 새로운 연산 장치로 합병하고 상기 연산 데이터를 상기 새로운 연산 장치로 전송하며; 다시 명령을 전송해 상기 연산 데이터의 연산 장치를 획득함으로써 신경망 연산/ 행렬 연산/ 벡터 연산을 실행한다.
또한, 본 발명은 명령에 의거하여 비트폭이 다른 연산 데이터를 연산하며 명령은 아래의 2 가지 방식으로 구현한다. 첫째로는 직접 하나의 명령을 사용하는 방식으로 구현하는 것으로서, 상기 명령은 조작 함수와 비트폭 영역을 동시에 포함하고, 연산 유닛은 직접 상기 명령에 의거하여 조작 함수와 상응 비트폭의 연산 장치를 획득해 대응되는 연산을 실행하며; 둘째로는 2개 명령을 사용하는 방식으로 구현하는 것으로서, 연산 유닛은 먼저 비트폭 배치 명령에 의거하여 상응 비트폭의 연산 장치를 획득 또는 구성하고, 다시 연산 명령에 의거하여 조작 함수를 획득함으로써 대응되는 연산을 실행한다.
1.본 발명은 명령 중의 비트폭 영역을 통해 연산 데이터의 비트폭을 지정함으로써 연산 데이터의 비트폭이 수요에 의해 임의적으로 배치될 수 있게 하고, 특정 비트폭의 연산 데이터에 있어서, 상기 비트폭에 부합되는 연산 장치가 존재하면 직접 상기 연산 장치를 호출해 연산을 실행하고, 상기 연산 데이터의 비트폭이 너무 커 상기 비트폭에 부합되는 연산 장치가 존재하지 않으면 복수개의 비트폭이 비교적 작은 연산 장치를 합병해 새로운 연산 장치를 구성하고 새로운 연산 장치를 이용해 연산을 실행하므로, 비트폭이 다른 연산 데이터의 연산을 지원해 고효율 신경망 연산, 행렬 연산 및 벡터 연산을 구현할 수 있고, 연산 장치의 수량을 절약하고 하드웨어 면적을 줄일 수 있다.
2. 본 발명은 스크래치패드 메모리(Scratchpad Memory)를 사용하므로 길이와 비트폭이 다른 연산 데이터(예를 들어 뉴런, 벡터, 행렬)를 저장할 수 있다.
도 1은 본 발명에 따른 연산 장치의 구조도다.
도 2는 본 발명에 따른 연산 유닛의 구조도다.
도 3은 본 발명이 하나의 명령을 사용하는 방식으로 연산을 실행하는 명령의 포맷을 도시한 것이다.
도 4는 본 발명에 따른 신경망 연산 명령의 포맷을 도시한 것이다.
도 5는 본 발명에 따른 행렬-행렬 연산 명령의 포맷을 도시한 것이다.
도 6은 본 발명에 따른 벡터-벡터 연산 명령의 포맷을 도시한 것이다.
도 7은 본 발명에 따른 행렬-벡터 연산 명령의 포맷을 도시한 것이다.
도 8은 본 발명 실시예에 따른 연산 장치의 구조도다.
도 9는 본 발명 실시예에 따른 디코딩 모듈의 구조도다.
도 10은 본 발명 실시예에 따른 연산 장치가 하나의 명령을 사용하는 방식으로 연산을 실행하는 흐름도다.
도 11은 본 발명이 2개 명령을 사용하는 방식으로 실행하는 연산에 있어서 비트폭 배치 명령의 포맷을 도시한 것이다.
도 12는 본 발명이 2개 명령을 사용하는 방식으로 실행하는 연산에 있어서 연산 명령의 포맷을 도시한 것이다.
도 13은 본 발명에 따른 신경망 비트폭 배치 명령 포맷의 구조를 도시한 것이다.
도 14는 본 발명에 따른 신경망 연산 명령의 구조를 도시한 것이다.
도 15는 본 발명에 따른 행렬=행렬 비트폭 배치 명령의 포맷을 도시한 것이다.
도 16은 본 발명에 따른 행렬-행렬 연산 명령의 구조를 도시한 것이다.
도 17은 본 발명에 따른 벡터-벡터 비트폭 배치 명령의 구조를 도시한 것이다.
도 18은 본 발명에 따른 벡터-벡터 연산 명령의 포맷을 도시한 것이다.
도 19는 본 발명에 따른 행렬-벡터 비트폭 배치 명령의 포맷을 도시한 것이다.
도 20은 본 발명에 따른 행렬-벡터 연산 명령의 포맷을 도시한 것이다.
도 21은 본 발명 실시예에 따른 연산 장치가 2개 명령을 사용하는 방식으로 연산을 실행하는 흐름도다.
본 발명은 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치를 공개하였는데, 명령 중의 비트폭 영역을 설정해 연산에 참여하는 연산 데이터 비트폭을 배치하고; 명령에 의거하여 연산할 때 먼저 연산 데이터 비트폭과 동등한 연산 장치의 존재 여부를 판단한 후, 존재하면 상기 연산 데이터를 대응되는 연산 장치에게 직접 전송하고, 존재하지 않으면 연산 장치 합병 방안을 생성함으로써 연산 장치 합병 방안에 의거하여 복수개 연산 장치를 하나의 새로운 연산 장치로 합병해 상기 새로운 연산 장치의 비트폭이 상기 조작 함수의 비트폭에 부합되도록 하는 동시에, 상기 조작 함수를 상기 새로운 연산 장치로 전송하며; 다시 명령을 전송해 상기 연산 데이터의 연산 장치를 획득함으로써 신경망 연산/ 행렬 연산/ 벡터 연산을 실행한다. 본 발명은 비트폭이 다른 연산 데이터의 연산을 지원해 고효율 신경망 연산, 행렬 연산 및 벡터 연산을 구현하고, 연산 장치의 수량을 절약하며 하드웨어 면적을 줄인다.
본 발명의 목적, 기술방안 및 장점에 대한 더욱 명확한 이해를 돕기 위하여 이하에서는 구체적인 실시예를 도면을 통해 더욱 상세하게 설명한다.
도 1은 본 발명에 따른 연산 장치의 구조도다. 도 1에서 도시하는 바와 같이, 상기 연산 장치는,
뉴런/행렬/벡터를 저장하는 데 사용되고, 일 실시방식에 있어서, 상기 저장유닛은 스크래치패드 메모리(Scratchpad Memory)일 수 있어 길이가 다르고 비트폭이 다른 뉴런/행렬/벡터 데이터를 지원할 수 있으며, 필요한 연산 데이터를 스크래치패드 메모리(Scratchpad Memory)에 임시 저장해 본 연산 장치가 신경망 연산과 행렬/벡터 연산 과정에서 길이와 비트폭이 다른 데이터를 원활하고 효과적으로 지원할 수 있고, 스크래치패드 메모리(Scratchpad Memory)는 각종 다른 저장 소자(SRAM, eDRAM, DRAM, 멤리스터, 3D-DRAM 또는 비휘발성 저장 장치 등)을 통해 구현하는 저장 유닛과;
뉴런/행렬/벡터 주소를 저장하는 데 사용되고, 여기에서, 뉴런 주소는 뉴런이 저장 유닛에 저장한 주소, 행렬 주소는 행렬이 저장 유닛에 저장한 주소, 벡터 주소는 벡터가 저장 유닛에 저장한 주소며, 일 실시방식에서, 레지스터 유닛은 스칼라 레지스터 파일일 수 있어 연산 과정에서 필요한 스칼라 레지스터를 제공하고, 스칼라 레지스터는 뉴런/행렬/벡터 주소를 저장할 뿐만 아니라 스칼라 데이터도 저장하며, 행렬/벡터와 스칼라의 연산과 관련되는 경우 연산 유닛은 레지스터 유닛으로부터 행렬/벡터 주소를 획득해야 할 뿐만 아니라 레지스터 유닛으로부터 상응 스칼라도 획득해야 하는 레지스터 유닛과;
제어 장치 중 각 모듈의 행위를 제어하는 데 사용되고, 일 실시방식에서, 제어 유닛은 준비된 명령을 판독해 디코딩으로 복수개 마이크로 명령을 생성함으로써 장치 중의 기타 모듈에게 전송하며, 기타 모듈은 획득한 마이크로 명령에 의거하여 대응되는 조작을 실행하는 제어 유닛과;
명령을 획득하는 데 사용되고, 명령에 의거하여 레지스터 유닛에서 뉴런/행렬/벡터 주소를 획득하며, 이어서 상기 뉴런/행렬/벡터 주소가 저장 유닛에서 대응되는 뉴런/행렬/벡터를 획득함으로써 상기 연산 데이터(뉴런/행렬/벡터)에 대해 연산을 실행하는 연산 유닛을 포함한다.
연산유닛이 실행하는 연산은 콘볼루션 신경망 정방향 연산 조작, 콘볼루션 신경망 트레이닝 조작, 신경망 Pooling 연산 조작, full connection 신경망 정방향 연산 조작, full connection 신경망 트레이닝 조작, batch normalization 연산 조작, RBM 신경망 연산 조작, 행렬-벡터 곱하기 연산 조작, 행렬-행렬 더하기/감하기 연산 조작, 벡터 외적(텐서) 연산 조작, 벡터 내적 연산 조작, 벡터 사칙 연산 조작, 벡터 논리 연산 조작, 벡터 초월 함수 연산 조작, 벡터 비교 연산 조작, 벡터 최대치/최소치 획득 연산 조작, 벡터 순환 위치이동 연산 조작, 일정 분산 복종형 렌덤 벡터 생성 연산 조작을 포함하지만 이에 한정되지 않는다.
연산 유닛은 연산을 실행하는 과정에서 명령 중 조작 함수가 가리키는 연산 데이터의 비트폭에 의거하여 대응되는 하나 또는 복수개 연산 장치를 선택해 연산을 실행한다. 여기에서, 하나 또는 복수개 연산 장치는 다른 비트폭을 가지는데, 예를 들어, 일부 연산 장치는 16자리수의 데이터 연산을 지원하고 일부 연산 장치는 32자리수의 데이터 연산을 지원하며, 연산 장치는 사실 벡터 곱하기 유닛, 시그마 유닛과 스칼라 곱하기 유닛 등을 포함한다. 도 2에서 도시하는 바와 같이, 연산 유닛은 판정 서브 모듈, 연산 장치 합병 서브 모듈과 연산 서브 모듈을 포함한다.
판정 서브 모듈은 상기 조작 함수가 가리키는 연산 데이터 비트폭이 같은 연산 장치가 존재하는 여부를 판단하는 데 사용되는데, 존재하면, 상기 조작 함수를 대응되는 연산 장치에 전송하고, 존재하지 않으면, 연산 장치 합병 방안과 상기 조작 함수를 연산 장치 합병 서브 모듈에게 전송한다.
연산 장치 합병 서브 모듈은 연산 장치 합병 방안에 의거하여 복수개 연산 장치를 하나의 새로운 연산 장치로 합병해 상기 새로운 연산 장치의 비트폭이 상기 조작 함수의 비트폭에 부합되도록 하고, 상기 조작 함수를 상기 새로운 연산 장치로 전송한다. 보다 상세하게, 연산 장치 합병 방안은 비트폭이 비교적 큰 연산 장치를 우선적으로 선택해 조합한다. 필요한 비트폭이 같은 연산 장치가 존재할 경우에는 대응되는 연산 장치를 직접 사용하며; 존재하지 않을 경우에는 비트폭이 필요한 연산 장치의 비트폭보다 작고 가장 접근된 사용 가능 연산 장치를 선택해 조합한다. 예를 들어, 사용이 가능한 조합용 연산 장치의 비트폭이 각각 8자리, 16자리, 32자리인 경우, 필요한 연산 장치의 비트폭이 32자리인 경우, 32자리 연산 장치를 직접 사용하며; 필요한 연산 장치의 비트폭이 64자리 인 경우, 2개의 32 자리 연산 장치를 사용해 합병하며; 필요한 연산 장치의 비트폭이 48자리인 경우, 1개 32자리 연산 장치와 1개 16자리 연산 장치를 합병하며; 필요한 연산 장치의 비트폭이 40 자리인 경우에는 1개 32 자리 연산 장치와 1개 8 자리 연산 장치를 선택해 합병한다.
연산 서브 모듈은 명령에 의거하여 상기 조작 함수의 연산 장치를 획득해 연산을 실행하는 데 사용한다.
본 발명의 명령은 2 가지 방식으로 구현된다. 첫째로는 직접 하나의 명령을 사용하는 방식으로 구현하는 것으로서, 상기 명령은 조작 함수와 비트폭 영역을 동시에 포함하고, 연산 유닛은 직접 상기 명령에 의거하여 조작 함수와 상응 비트폭의 연산 장치를 획득해 대응되는 연산을 실행하며; 둘째로는 2개 명령을 사용하는 방식으로 구현하는 것으로서, 연산 유닛은 먼저 비트폭 배치 명령에 의거하여 상응 비트폭의 연산 장치를 획득 또는 구성하고, 다시 연산 명령에 의거하여 조작 함수를 획득함으로써 대응되는 연산을 실행한다.
보다 상세하게, 본 발명의 명령 집합은 Load/Store 구조를 사용하고 연산 유닛은 메모리 중의 데이터를 조작하지 않는다. 본 명령 집합은 초장길이 명령어 구조를 사용하고 명령을 다르게 설정해 복잡한 신경망 연산을 완료하며, 간단한 행렬/벡터 연산도 완료할 수도 있다. 또한, 본 명령 집합은 고정길이 명령을 동시에 사용해 본 발명의 신경망 연산 및 행혈/벡터 연산 장치가 이전 명령의 디코딩 단계에서 다음 명령을 가리키도록 한다.
도 3은 본 발명이 하나의 명령을 사용하는 방식으로 연산을 실행하는 명령의 포맷을 도시한 것이다. 도 3에서 도시하는 바와 같이, 명령은 최소한 1개 조작 코드, 최소한 3개 조작 함수와 최소한 2개 비트폭 영역을 포함하는데, 여기에서, 비트폭 영역은 연산 장치에서 연산할 때 조작 함수의 종류 및 수량과 같으며; 여기에서, 조작 코드는 상기 연산 명령의 기능을 가리키는 데 사용하고, 연산 유닛은 1개 또는 복수개 조작 코드를 식별해 다른 연산을 진행하는 데 사용하며, 조작 함수는 상기 연산 명령의 데이터 정보를 가리키는 데 사용하고, 비트폭 영역은 상응 조작 함수의 비트폭을 가리키는 데 사용하며; 여기에서, 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있는데, 예를 들어, 1개 행렬을 획득할 때 레지스터 번호에 의거하여 대응되는 레지스터에서 행렬 초기 주소와 행렬 길이를 획득하고, 다시 행렬 초기 주소와 행렬 길이에 의거하여 저장 유닛에서 상응 주소가 저장된 행렬을 획득한다.
도 4는 본 발명에 따른 신경망 연산 명령의 포맷을 도시한 것인데, 그는 도 3에 도시된 명령의 실례 명령이다. 도 4에서 도시하는 바와 같이, 신경망 연산 명령은 최소한 1개 조작 코드, 16 개 조작 함수와 4개 비트폭 영역을 포함하고, 여기에서, 조작 코드는 상기 신경망 연산 명령의 기능을 가리키는 데 사용되고, 연산 유닛은 1개 또는 복수개 조작 코드를 식별해 다른 신경망 연산을 진행하는 데 사용되며, 조작 함수는 상기 신경망 연산 명령의 데이터 정보를 가리키는 데 사용되는데, 여기에서, 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있고, 비트폭 영역은 조작 함수가 연산에서 대응되는 비트폭을 가리키는 데 사용될 뿐만 아니라 연산 과정에서 대응되는 연산 장치의 비트폭 및 비트폭이 작은 연산 장치를 비트폭이 큰 연산 장치로 합병하는 필요 여부를 가리키는 데 사용된다.
도 5는 본 발명에 따른 행렬-행렬 연산 명령의 포맷을 도시한 것으로서, 그는 도 3에 도시된 명령의 실례 명령이다. 도 5에서 도시하는 바와 같이, 행렬-행렬 연산 명령은 최소한 1개 조작 코드, 최소한 4개 조작 함수와 2개 비트폭 영역을 포함하는데, 여기에서, 조작 코드는 상기 행렬-행렬 연산 명령의 기능을 가리키는 데 사용되고, 연산 유닛은 1개 또는 복수개 조작 코드를 식별해 다른 행렬 연산을 실행하는 데 사용되며, 조작 함수는 상기 행렬-행렬 연산 명령의 데이터 정보를 가리키는 데 사용되는데, 여기에서, 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있고, 비트폭 영역은 조작 함수가 연산에서 대응되는 비트폭을 가리키는 데 사용될 뿐만 아니라 연산 과정에서 대응되는 연산 장치의 비트폭 및 비트폭이 작은 연산 장치를 비트폭이 큰 연산 장치로 합병하는 필요 여부를 가리키는 데 사용된다.
도 6은 본 발명에 따른 벡터-벡터 연산 명령의 포맷을 도시한 것으로서, 그는 도 3에 도시된 명령의 실례 명령이다. 도 6에서 도시하는 바와 같이, 벡터-벡터 연산 명령은 최소한 1개 조작 코드, 최소한 3개 조작 함수와 최소한 2개 비트폭 영역을 포함하는데, 여기에서, 조작 코드는 상기 벡터-벡터 연산 명령의 기능을 가리키는 데 사용되고, 연산 유닛은 1개 또는 복수개 조작 코드를 식별해 다른 벡터 연산을 실행하는 데 사용되며, 조작 함수는 상기 벡터-벡터 연산 명령의 데이터 정보를 가리키는 데 사용되는데, 여기에서, 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있고, 비트폭 영역은 조작 함수가 연산에서 대응되는 비트폭을 가리키는 데 사용될 뿐만 아니라 연산 과정에서 대응되는 연산 장치의 비트폭 및 비트폭이 작은 연산 장치를 비트폭이 큰 연산 장치로 합병하는 필요 여부를 가리키는 데 사용된다.
도 7은 본 발명에 따른 행렬-벡터 연산 명령의 포맷을 도시한 것으로서, 그는 도 3에 도시된 명령의 실례 명령이다. 도 7에서 도시하는 바와 같이, 행렬-벡터 연산 명령은 최소한 1개 조작 코드, 최소한 6 개 조작 함수와 최소한 3개 비트폭 영역을 포함하는데, 여기에서, 조작 코드는 상기 행렬-벡터 연산 명령의 기능을 가리키는 데 사용되고, 연산 유닛은 1개 또는 복수개 조작 코드를 식별해 다른 행렬 연산을 실행하는 데 사용되며, 조작 함수는 상기 행렬-벡터 연산 명령의 데이터 정보를 가리키는 데 사용되는데, 여기에서, 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있고, 비트폭 영역은 조작 함수가 연산에서 대응되는 비트폭을 가리키는 데 사용될 뿐만 아니라 연산 과정에서 대응되는 연산 장치의 비트폭 및 비트폭이 작은 연산 장치를 비트폭이 큰 연산 장치로 합병하는 필요 여부를 가리키는 데 사용된다.
도 8은 본 발명 일 바람직 실시예에 따른 연산 장치의 구조도다. 도 8에서 도시하는 바와 같이, 상기 장치는 호출 모듈, 디코딩 모듈, 명령 큐, 스칼라 레지스터 파일, 종속성 처리 유닛, 저장 큐, 재정렬 캐시, 연산 유닛, 스크래치패드 메모리, IO메모리 엑세스 모듈을 포함한다.
호출 모듈은 명령 시퀀스로부터 다음에 실행하려는 명령을 추출하고 상기 명령을 디코딩 모듈로 전송하는 것을 책임진다.
디코딩 모듈은 명령을 디코딩하고 디코딩한 명령을 명령 큐에 전송하는 것을 책임지는데, 도 9에서 도시하는 바와 같이, 상기 디코딩 모듈은 명령 수신 모듈, 마이크로 명령 생성 모듈, 마이크로 명령 큐, 마이크로 명령 전송 모듈을 포함하고, 여기에서, 명령 수신 모듈은 호출 모듈로부터 획득한 명령을 수신하는 것을 책임지고, 마이크로 명령 디코딩 모듈은 각 기능 유닛을 제어하는 마이크로 명령으로 명령 수신 모듈이 획득한 명령을 디코딩하는 것을 책임지며, 마이크로 명령 큐는 마이크로 명령 디코딩 모듈이 전송한 마이크로 명령을 저장하는 데 사용되고, 마이크로 명령 전송 모듈은 마이크로 명령을 각 기능 유닛으로 전송하는 것을 책임진다.
명령 큐는 순서가 캐시, 디코딩된 후의 명령을 종속성 처리 유닛으로 전송하는 것에 사용된다.
스칼라 레지스터 파일은 장치가 연산 과정에서 필요한 스칼라 레지스터를 제공하는데 사용된다.
종속성 처리 유닛은 명령과 이전 명령이 존재할 가능성이 있는 저장 종속성을 처리하는 데 사용되는데, 행렬 연산 명령은 스크래치패드 메모리(Scratchpad Memory)을 엑세스하고 전, 후 명령은 같은 저장 공간을 엑세스하며, 명령 실행 결과의 정확성을 보장하기 위하여 현재 명령이 이전 명령의 데이터와 종속 관계가 존재한다는 것이 측정되면 상기 명령은 저장 큐 내에서 종속 관계가 취소될 때 까지 대기해야 한다.
저장 큐는 하나의 질서 정연한 큐로서, 이전 명령과 데이터 면에서 종속 관계가 존재하는 명령은 상기 큐 내에 저장되고, 종속 관계가 취소된 후에야 명령이 제출된다.
재정렬 캐시에 있어서, 명령이 집행되는 과정에서 상기 모듈 내에 캐시되고, 하나의 명령이 집행 완료된 후 상기 명령이 재정렬 캐시 중의 제출되지 않은 명령가운데서 가장 이른 하나의 명령이면 상기 명령은 제출되는데, 제출만 되면 상기 명령이 진행한 조작이 장치 상태에 대한 변경은 철회할 수 없으며; 상기 재정렬 캐시 내의 명령은 대체 역할을 수행하는데, 그가 포함하는 첫번째 명령이 데이터 종속 관계가 존재하는 경우 상기 명령은 제출(방출)되지 않고, 후에 많은 명령이 계속 유입되지만 일부 명령(재정렬 캐시의 크기에 의해 제어됨)만 접수할 수 있으며 첫번째 명령이 제출되어야 전체 연산 과정이 원활히 진행된다.
연산 유닛은 장치의 모든 신경망 연산과 행렬/벡터 연산 조작을 책임지는데, 콘볼루션 신경망 정방향 연산 조작, 콘볼루션 신경망 트레이닝 조작, 신경망 Pooling 연산 조작, full connection 신경망 정방향 연산 조작, full connection 신경망 트레이닝 조작, batch normalization 연산 조작, RBM 신경망 연산 조작, 행렬-벡터 곱하기 연산 조작, 행렬-행렬 더하기/감하기 연산 조작, 벡터 외적(텐서) 연산 조작, 벡터 내적 연산 조작, 벡터 사칙 연산 조작, 벡터 논리 연산 조작, 벡터 초월 함수 연산 조작, 벡터 비교 연산 조작, 벡터 최대치/최소치 획득 연산 조작, 벡터 순환 위치이동 연산 조작, 일정 분산 복종형 렌덤 벡터 생성 연산 조작을 포함하지만 이에 한정되지 않는다. 연산 명령은 상기 연산 유닛으로 전송되어 실행되는데, 먼저, 연산 유닛은 명령 중 조작 함수와 대응되고 비트폭 영역 길이가 같은 연산 장치가 존재하는 여부를 판단하고, 존재하면 복수개의 비트폭이 작은 연산 장치를 합병하는 방식으로 필요한 비트폭의 연산 장치를 구성하고, 이어서 명령 중 피연수 코드에 의거하여 연산 데이터에 대해 선택된 연산 장치를 이용해 대응되는 연산을 진행함으로써 대응되는 결과를 획득한다.
스크래치패드 메모리는 데이터 전용 임시 저장 장치로서, 길이와 비트폭이 다른 데이터를 지원할 수 있다.
IO 메모리 엑세스 모듈은 스크래치패드 메모리를 직접 엑세스하는 데 사용되고 스크래치패드 메모리에서의 데이터 판독 또는 데이터 기록을 책임진다.
도 10은 본 발명 실시예에 따른 연산 장치가 하나의 명령을 사용하는 방식으로 연산을 실행하는 흐름도다. 도 10에서 도시하는 바와 같이, 과정은,
호출 모듈이 명령을 호출하고 상기 명령을 디코딩 모듈로 전송하는 S1;
디코딩 모듈이 명령을 디코딩하고 명령을 명령 큐로 전송하는 S2;
디코딩 모듈에서 명령을 명령 수신 모듈로 전송하는 S3;
명령 수신 모듈이 명령을 마이크로 명령 생성 모듈로 전송해 마이크로 명령을 생성하는 S4;
마이크로 명령 생성 모듈이 스칼라 레지스터 파일에서 명령의 신경망 연산 조작 코드와 신경망 연산 조작 함수를 획득하고, 각 기능 유닛을 제어하는 마이크로 명령으로 명령을 디코딩해 마이크로 명령 전송 큐로 전송하는 S5;
필요한 데이터를 획득한 후 상기 명령을 종속성 처리 유닛으로 전송하는데, 종속성 처리 유닛은 상기 명령과 이전에 아직 실행 종료하지 않은 명령이 데이터 면에서 종속성이 존재하는 여부를 분석하고, 상기 명령이 저장 큐에서 그가 이전에 아직 실행 완료하지 않은 명령과 데이터 면에서 종속성이 존재하지 않을 때까지 대기해야 하는 S6;
종속성이 존재하지 않은 다음, 상기 신경망 연산과 행렬/벡터 명령에 대응되는 마이크로 명령을 연산 유닛 등 기능 유닛에 전송하는 S7;
연산 유닛은 필요한 데이터의 주소와 크기에 의거하여 스크래치패드 메모리(Scratchpad Memory)에서 필요한 데이터를 추출한 다음, 이어서 명령 중 비트폭 영역이 같은 연산 장치가 존재하는 여부를 판단하며, 존재하면 매칭된 연산 장치를 선택해 명령에 대응되는 연산을 완료하고, 존재하지 않으면, 비트폭이 작은 연산 장치를 합병하는 방식으로 하나의 필요한 비트폭의 연산 장치를 구성해 명령에 대응되는 연산을 완료하는 S8;
연산이 완료된 후, 출력 데이터를 스크래치패드 메모리(Scratchpad Memory)의 지정 주소에 기록하고 재정렬 캐시 중의 상기 명령을 제출하는 S9를 포함한다.
도 11과 도 12는 본 발명이 2개 명령을 사용하는 방식으로 연산을 실행하는 명령의 포맷을 도시한 것이다. 여기에서, 도 11은 비트폭 배치 명령의 포맷을 도시한 것으로서, 비트폭 배치 명령은 최소한 하나의 조작 코드와 최소한 2개 비트폭 영역을 포함해 다음 연산 명령이 사용하는 연산 장치의 비트폭을 가리키는 데 사용된다. 도 12는 연산 명령의 포맷을 도시한 것으로서, 연산 명령은 최소한 하나의 조작 코드와 최소한 3개 조작 함수를 포함하는데, 여기에서, 조작 코드는 상기 연산 명령의 기능을 가리키는 데 사용되어 연산 유닛이 하나 또는 복수개 조작 코드를 식별해 다른 연산을 진행하고, 조작 함수는 상기 연산 명령의 데이터 정보를 가리키는 데 사용되는데, 여기에서, 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있다. 예를 들어, 하나의 행렬을 획득하려 할 경우, 레지스터 번호에 의거하여 대응되는 레지스터에서 행렬 초기 주소와 행렬 길이를 획득한 다음, 다시 행렬 초기 주소와 행렬 길이에 의거하여 저장 유닛에서 대응 주소에 저장된 행렬을 획득한다.
도 13 내지 도 14는 도 11 내지 도 12의 실례로서, 그는 각각 신경망 비트폭 배치 명령과 신경망 연산 명령의 포맷을 도시한 것이다. 도 13 내지 도 14에서 도시하는 바와 같이, 비트폭 배치 명령은 최소한 하나의 조작 크드와 최소한 4개 비트폭 영역을 포함해 다음 신경망 연산 명령이 사용하는 연산 장치의 비트폭을 가리키는 데 사용한다. 배치 명령은 최소한 하나의 조작 코드와 16개 조작 함수를 포함하는데, 여기에서, 조작 코드는 상기 신경망 연산 명령의 기능을 가리키는 데 사용되어 연산 유닛이 하나 또는 복수개 조작 코드를 식별해 다른 신경망 연산을 진행하고, 조작 함수는 상기 신경망 연산 명령의 데이터 정보를 가리키는 데 사용되는데, 여기에서 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있다.
도 15 내지 도 16은 도 11 내지 도 12의 실례로서, 그는 각각 행렬-행렬 비트폭 배치 명령과 행렬-행렬 연산 명령의 포맷을 도시한 것이다. 도 15 내지 16에서 도시하는 바와 같이, 비트폭 배치 명령은 최소한 하나의 조작 크드와 최소한 2개 비트폭 영역을 포함해 다음 행렬-행렬 연산 명령이 사용하는 연산 장치의 비트폭을 가리키는 데 사용한다. 행렬-행렬 연산 명령은 최소한 하나의 조작 코드와 최소한 4개 조작 함수를 포함하는데, 여기에서, 조작 코드는 상기 행렬-행렬 연산 명령의 기능을 가리키는 데 사용되어 연산 유닛이 하나 또는 복수개 조작 코드를 식별해 다른 신경망 연산을 진행하고, 조작 함수는 상기 행렬-행렬 연산 명령의 데이터 정보를 가리키는 데 사용되는데, 여기에서 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있다.
도 17 내지 도 18은 도 11 내지 도 12의 실례로서, 그는 각각 벡터-벡터 비트폭 배치 명령과 벡터-벡터 연산 명령의 포맷을 도시한 것이다. 도 17 내지 도 18에서 도시하는 바와 같이, 비트폭 배치 명령은 최소한 하나의 조작 크드와 최소한 2개 비트폭 영역을 포함해 다음 벡터-벡터 연산 명령이 사용하는 연산 장치의 비트폭을 가리키는 데 사용한다. 벡터-벡터 연산 명령은 최소한 하나의 조작 코드와 최소한 3개 조작 함수를 포함하는데, 여기에서, 조작 코드는 상기 벡터-벡터 연산 명령의 기능을 가리키는 데 사용되어 연산 유닛이 하나 또는 복수개 조작 코드를 식별해 다른 벡터 연산을 진행하고, 조작 함수는 상기 벡터-벡터 연산 명령의 데이터 정보를 가리키는 데 사용되는데, 여기에서 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있다.
도 19 내지 도 20은 도 11 내지 도 12의 실례로서, 그는 각각 행렬-벡터 비트폭 배치 명령과 행렬-벡터 연산 명령의 포맷을 도시한 것이다. 도 19 내지 도 20에서 도시하는 바와 같이, 비트폭 배치 명령은 최소한 하나의 조작 크드와 최소한 3개 비트폭 영역을 포함해 다음 벡터-벡터 연산 명령이 사용하는 연산 장치의 비트폭을 가리키는 데 사용한다. 벡터-벡터 연산 명령은 최소한 하나의 조작 코드와 6개 조작 함수를 포함하는데, 여기에서, 조작 코드는 상기 해렬-벡터 연산 명령의 기능을 가리키는 데 사용되어 연산 유닛이 하나 또는 복수개 조작 코드를 식별해 다른 행렬과 벡터 연산을 진행하고, 조작 함수는 상기 행렬-벡터 연산 명령의 데이터 정보를 가라키는 데 사용되는데, 여기에서 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있다.
도 21은 본 발명 실시예에 따른 연산 장치가 2개 명령을 사용하는 방식으로 연산을 실행하는 흐름도다. 도 21에서 도시하는 바와 같이, 과정은,
호출 모듈이 하나의 비트폭 배치 명령을 호출하고 명령을 디코딩 모듈로 전송하는 단계 S1;
디코딩 모듈이 상기 명령을 디코딩하고 상기 명령을 명령 큐로 전송하는 단계 S2;
디코딩 모듈에서 상기 명령을 명령 수신 모듈로 전송하는 단계 S3;
명령 수신 모듈이 상기 명령을 마이크로 명령 디코딩 모듈로 전송해 마이크로 명령을 디코딩하는 단계 S4;
마이크로 명령 디코딩 모듈이 연산 유닛을 제어해 지정 비트폭을 선택하는 연산 장치의 마이크로 명령으로 명령을 디코딩해 마이크로 명령 전송 큐로 전송하는 단계 S5;
호출 모듈이 하나의 신경망 연산 및 행렬/벡터 명령을 추출하고 상기 명령을 디코딩 모듈로 전송하는 단계 S6;
디코딩 모듈이 상기 명령을 디코딩해 상기 명령을 명령 큐에 전송하는 단계 S7;
디코딩 모듈에서 상기 명령이 명령 수신 모듈로 전송되는 단계 S8;
명령 수신 모듈이 상기 명령을 마이크로 명령 디코딩 모듈로 전송해 마이크로 명령을 디코딩하는 단계 S9;
마이크로 디코딩 모듈이 스칼라 레지스터 파일에서 상기 명령의 신경망 연산 조작 코드와 신경망 연산 조작 함수를 획득하는 동시에, 각 기능 유닛을 제어하는 마이크로 명령으로 상기 명령을 디코딩해 마이크로 명령 전송 큐로 전송하는 단계 S10;
필요한 데이터를 획득한 후 상기 명령이 종속성 처리 유닛으로 전송되고, 종속성 처리 유닛은 상기 명령과 이전에 실행 완료하지 않은 명령이 데이터 면에서 종속 관계가 존재하는 여부를 판단하고, 존재하면 상기 명령이 저장 큐 내에서 그가 이전에 실행 완료하지 않은 명령과 데이터 면에서 종속 관계가 다시 존재하지 않을 때까지 대기해야 하는 단계 S11;
상기 명령에 대응되는 마이크로 명령과 이전에 연산 장치 비트폭을 지정한 마이크로 명령을 연산 유닛으로 전송하는 단계 S12;
연산 유닛은 필요한 데이터의 주소와 크기에 의거하여 스크래치패드 메모리(Scratchpad Memory)에서 필요한 데이터를 추출하고; 이어서 비트폭을 지정한 명령 중에 비트폭 영역이 같은 연산 장치가 존재하는 여부를 판단하며, 존재하면 매칭된 연산 장치를 선택해 상기 명령에 대응되는 신경망 연산과/또는 행렬/벡터 연산을 완료하고, 존재하지 않으면, 비트폭이 작은 연산 장치를 합병하는 방식으로 하나의 필요한 비트폭의 연산 장치를 구성해 상기 명령에 대응되는 신경망 연산과/또는 행렬/벡터 연산을 완료하는 단계S13;
연산이 완료된 후, 출력 데이터를 스크래치패드 메모리(Scratchpad Memory)의 지정 주소에 기록하는 동시에, 재정렬 캐시 중의 상기 명령이 제출되는 단계S14를 포함한다.
총체적으로, 본 발명은 연산기 비트폭을 배치할 수 있는 신경망 연산용 및 행렬/벡터 연산용 장치와 방법을 공개하였는데, 대응되는 명령을 도와 현재 컴퓨터 분야의 신경망 알고리즘과 대량 행렬/벡터 연산 문제를 원활히 해결할 수 있어 종래 해결방안에 대비해 명령 배치 가능성, 사용 편리성, 연산 장치 비트폭 선택 가능성, 복수개 연산 장치 합병 가능성 뿐만 아니라, 전용 비트폭 배치 명령과 연산 명령에 비트폭 영역을 지정하는 2 가지 방식을 통해 연산 장치 비트폭을 배치할 수 있어 지원하는 신경망 규모, 행렬/벡터 비트폭과 규모가 원활하고 온칩 캐시가 충분하며 연산 장치를 합병할 수 있는 등 장점을 가지고 있다.
상기의 구체적인 실시예는 본 발명의 목적, 기술방안 및 유익한 효과를 더욱 상세하게 설명하기 위한 것이다. 상기 내용은 본 발명의 구체적인 실시예에 불과하므로 본 발명을 제한하지 않는다. 본 발명의 정신과 원칙 내에서 진행한 모든 수정, 동등한 치환, 개선 등은 모두 본 발명의 보호범위 내에 속한다.

Claims (14)

  1. 연산 데이터의 비트폭에 의거하여 대응되는 하나 또는 복수개 연산 장치를 선택해 연산을 실행하는 데 사용되고, 여기에서 상기 하나 또는 복수개 연산 장치가 다른 비트폭을 가지는 데 있어서,
    연산 유닛은 판정 서브 모듈, 연산 장치 합병 서브 모듈과 연산 서브 모듈을 포함하되;
    판정 서브 모듈은 상기 연산 데이터 비트폭과 같은 연산 장치가 존재하는 여부를 판단하는 데 사용되는데, 존재하면, 상기 연산 데이터를 대응되는 연산 장치에 전송하고, 존재하지 않으면, 연산 장치 합병 방안과 상기 연산 데이터를 연산 장치 합병 서브 모듈에게 전송하고;
    연산 장치 합병 서브 모듈은 연산 장치 합병 방안에 의거하여 복수개 연산 장치를 하나의 새로운 연산 장치로 합병해 상기 새로운 연산 장치의 비트폭이 연산 데이터의 비트폭에 부합되도록 하고, 상기 연산 데이터를 상기 새로운 연산 장치로 전송하며;
    연산 서브 모듈은 명령에 의거하여 상기 연산 데이터의 연산 장치를 획득해 연산을 실행하는 데 사용하는 것을 특징으로 하는 연산 유닛.
  2. 제1항에 있어서,
    상기 연산 유닛은 하나의 명령에 의거하여 연산을 실행하고, 여기에서, 상기 명령은 상기 명령의 연산 유형을 가리키는 데 사용하는 조작 코드와; 연산 데이터로 삼도록 사용되거나 또는 연산 데이터의 저장 주소를 가리키도록 사용되는 조작 함수와; 연산 데이터의 비트폭을 가리키는 데 사용하는 비트폭 영역을 포함하고,
    상기 연산 유닛은 상기 명령을 실행하고 명령 중의 비트폭 영역에 의거하여 연산 데이터의 비트폭을 연산하며 대응되는 연산 장치를 선택한 다음, 이어서 명령 중의 조작 함수를 대응되는 연산 장치로 전송하고, 연산 장치는 조작 함수에 의거하여 연산 데이터를 획득해 조작 코드가 가리키는 연산을 실행하는 것을 특징으로 하는 연산 유닛.
  3. 제1항에 있어서,
    상기 연산 유닛은 비트폭 배치 명령과 연산 명령에 의거하여 연산을 실행하고, 상기 비트폭 배치 명령은 조작 코드와 비트폭 영역을 포함하며, 상기 연산 명령은 조작 코드와 조작 함수를 포함하는데, 여기에서,
    상기 조작 코드는 상기 명령의 연산 유형을 가리키는 데 사용되고;
    상기 조작 함수는 연산 데이터로 삼도록 사용되거나 또는 연산 데이터의 저장 주소를 가리키도록 사용되며;
    상기 비트폭 영역은 명령 중 각 조작 함수의 비트폭을 가리키는 데 사용되고;
    상기 연산 유닛은 비트폭 배치 명령과 연산 명령을 차례대로 실행하고 비트폭 배치 명령 중의 비트폭 영역에 의거하여 연산 명령 중 조작 함수의 비트폭을 확정해 대응되는 연산 장치를 선택한 다음, 이어서 연산 명령 중의 조작 함수를 대응되는 연산 장치로 전송하고 연산 장치는 조작 함수에 의거하여 연산 데이터를 획득해 조작 코드가 가리키는 연산을 실행하는 것을 특징으로 하는 연산 유닛.
  4. 제1항에 있어서,
    상기 연산 장치 합병 방안은 연산 데이터 비트폭과 가장 접근된 하나 또는 복수개 연산 장치를 합병하는 것을 특징으로 하는 연산 유닛.
  5. 제1항에 있어서,
    상기 조작 함수는 연산 데이터 또는 연산 데이터 저장 위치고, 상기 연산 장치는 상기 조작 함수에 의거하여 대응되는 연산 데이터를 획득한 후 연산을 실행하는 것을 특징으로 하는 연산 유닛.
  6. 제1항에 있어서,
    상기 연산 데이터는 벡터, 행렬과 뉴런 중 하나인 것을 특징으로 하는 연산 유닛.
  7. 연산 데이터의 비트폭에 의거하여 대응되는 하나 또는 복수개 연산 장치를 선택해 연산을 실행하고, 여기에서, 상기 하나 또는 복수개 연산 장치는 다른 비트폭을 가지는 데 있어서,
    상기 연산 데이터 비트폭과 같은 연산 장치가 존재하는 여부를 판단하고, 존재하면 상기 연산 데이터를 대응되는 연산 장치로 전송한 다음, 이어서 단계 S3을 실행하고, 존재하지 않으면 연산 장치 합병 방안을 생성해 단계 S2를 실행하는 단계 S1;
    연산 장치 합병 방안에 의거하여 복수개 연산 장치를 하나의 새로운 연산 장치로 합병해 상기 새로운 연산 장치의 비트폭이 상기 연산 데이터의 비트폭에 부합되도록 하고 상기 연산 데이터를 상기 새로운 연산 장치로 전송하는 S2;
    명령에 의거하여 상기 연산 데이터의 연산 장치를 획득해 연산을 실행하는 S3을 포함하는 것을 특징으로 하는 연산 방법.
  8. 제7항에 있어서,
    상기 연산 유닛은 하나의 명령에 의거하여 연산을 실행하고,
    여기에서, 상기 명령은 상기 명령의 연산 유형을 가리키는 데 사용하는 조작 코드와; 연산 데이터로 삼도록 사용되거나 또는 연산 데이터의 저장 주소를 가리키도록 사용되는 조작 함수와; 연산 데이터의 비트폭을 가리키는 데 사용하는 비트폭 영역을 포함하고,
    상기 연산 유닛은 상기 명령을 실행하고, 명령 중의 비트폭 영역에 의거하여 연산 데이터의 비트폭을 확정해 대응되는 연산 장치를 선택한 다음, 이어서 명령 중의 조작 함수를 대응되는 연산 장치로 전송하고, 연산 장치는 조작 함수에 의거하여 연산 데이터를 획득해 조작 코드가 가리키는 연산을 실행하는 것을 특징으로 하는 연산 유닛.
  9. 제7항에 있어서,
    상기 연산 유닛은 비트폭 배치 명령과 연산 명령에 의거하여 연산을 실행하고, 상기 비트폭 배치 명령은 조작 코드와 비트폭 영역을 포함하며, 상기 연산 명령은 조작 코드와 조작 함수를 포함하되, 여기에서,
    상기 조작 코드는 상기 명령의 연산 유형을 가리키는 데 사용되고,
    상기 조작 함수는 연산 데이터로 삼도록 사용되거나 또는 연산 데이터의 저장 주소를 가리키도록 사용되며;
    상기 비트폭 영역은 명령 중 각 조작 함수의 비트폭을 가리키는 데 사용되고;
    상기 연산 유닛은 비트폭 배치 명령과 연산 명령을 차례대로 실행하고 비트폭 배치 명령 중의 비트폭 영역에 의거하여 연산 명령 중 조작 함수의 비트폭을 확정해 대응되는 연산 장치를 선택한 다음, 이어서 연산 명령 중의 조작 함수를 대응되는 연산 장치로 전송하고 연산 장치는 조작 함수에 의거하여 연산 데이터를 획득해 조작 코드가 가리키는 연산을 실행하는 것을 특징으로 하는 연산 유닛.
  10. 제7항에 있어서,
    상기 연산 장치 합병 방안은 연산 데이터 비트폭과 가장 접근된 하나 또는 복수개 연산 장치를 합병하는 것을 특징으로 하는 연산 유닛.
  11. 제7항에 있어서,
    상기 조작 함수는 연산 데이터 또는 연산 데이터 저장 위치고, 상기 연산 장치는 상기 조작 함수에 의거하여 대응되는 연산 데이터를 획득한 후 연산을 실행하는 것을 특징으로 하는 연산 방법.
  12. 제7항에 있어서,
    상기 연산 데이터는 벡터, 행렬과 뉴런 중 하나인 것을 특징으로 하는 연산 방법.
  13. 청구항 1 내지 청구항5 중의 어느 한 항의 연산 유닛을 포함하되,
    저장 유닛은 상기 연산 데이터를 저장하는 데 사용되고;
    레지스터 유닛은 상기 연산 데이터의 주소를 저장하는 데 사용되며;
    제어 유닛은 연산 유닛, 저장 유닛과 레지스터 유닛을 제어하는 데 사용되어 연산 유닛이 명령 중의 조작 함수에 의거하여 레지스터 유닛을 엑세스해 연산 데이터의 주소를 획득하고, 상기 연산 데이터의 주소에 의거하여 저장 유닛을 엑세스해 상기 연산 데이터를 획득함으로써 상기 연산 데이터에 대한 연산을 실행하는 것을 특징으로 하는 연산 장치.
  14. 제13항에 있어서,
    상기 저장 유닛은 스크래치패드 메모리(Scratchpad Memory)인 것을 특징으로 하는 연산 장치.
KR1020187034252A 2016-08-05 2017-07-17 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치 KR102486029B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610640111.8 2016-08-05
CN201610640111.8A CN107688854B (zh) 2016-08-05 2016-08-05 一种能支持不同位宽运算数据的运算单元、方法及装置
PCT/CN2017/093159 WO2018024093A1 (zh) 2016-08-05 2017-07-17 一种能支持不同位宽运算数据的运算单元、方法及装置

Publications (2)

Publication Number Publication Date
KR20190029515A true KR20190029515A (ko) 2019-03-20
KR102486029B1 KR102486029B1 (ko) 2023-01-06

Family

ID=61072493

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187034252A KR102486029B1 (ko) 2016-08-05 2017-07-17 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치

Country Status (6)

Country Link
US (1) US10489704B2 (ko)
EP (1) EP3496006B1 (ko)
KR (1) KR102486029B1 (ko)
CN (2) CN114004349A (ko)
TW (1) TWI789358B (ko)
WO (1) WO2018024093A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020262825A1 (ko) * 2019-06-27 2020-12-30 에스케이텔레콤 주식회사 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10657442B2 (en) * 2018-04-19 2020-05-19 International Business Machines Corporation Deep learning accelerator architecture with chunking GEMM
US11467973B1 (en) * 2018-09-28 2022-10-11 Amazon Technologies, Inc. Fine-grained access memory controller
CN111290788B (zh) * 2018-12-07 2022-05-31 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111079912B (zh) * 2018-10-19 2021-02-12 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111258634B (zh) * 2018-11-30 2022-11-22 上海寒武纪信息科技有限公司 数据选择装置、数据处理方法、芯片及电子设备
CN111260045B (zh) * 2018-11-30 2022-12-02 上海寒武纪信息科技有限公司 译码器和原子指令解析方法
CN110728365B (zh) * 2019-09-12 2022-04-01 东南大学 多位宽pe阵列计算位宽的选择方法及计算精度控制电路
US20210200549A1 (en) * 2019-12-27 2021-07-01 Intel Corporation Systems, apparatuses, and methods for 512-bit operations
CN111459546B (zh) * 2020-03-30 2023-04-18 芯来智融半导体科技(上海)有限公司 一种实现操作数位宽可变的装置及方法
CN113469349B (zh) * 2021-07-02 2022-11-08 上海酷芯微电子有限公司 多精度神经网络模型实现方法及系统
CN114528248A (zh) * 2022-04-24 2022-05-24 广州万协通信息技术有限公司 阵列重构方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020174319A1 (en) * 2001-05-15 2002-11-21 International Business Machines Corporation Method and apparatus for reducing logic activity in a microprocessor
US20080016319A1 (en) * 2006-06-28 2008-01-17 Stmicroelectronics S.R.L. Processor architecture, for instance for multimedia applications
US20110320765A1 (en) * 2010-06-28 2011-12-29 International Business Machines Corporation Variable width vector instruction processor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471633A (en) * 1993-09-30 1995-11-28 Intel Corporation Idiom recognizer within a register alias table
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
US8595279B2 (en) * 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
CN100456231C (zh) * 2007-03-19 2009-01-28 中国人民解放军国防科学技术大学 灵活分配运算群资源的流处理器扩展方法
CN102238348B (zh) * 2010-04-20 2014-02-05 上海华虹集成电路有限责任公司 一种可变数据个数的fft/ifft处理器的基4模块
CN102012876B (zh) * 2010-11-19 2015-09-16 中兴通讯股份有限公司 大位宽数据的写入、读取方法及控制器
CN103188487B (zh) * 2011-12-28 2016-11-23 联芯科技有限公司 视频图像中的卷积方法及视频图像处理系统
CN102591615A (zh) * 2012-01-16 2012-07-18 中国人民解放军国防科学技术大学 结构化混合位宽乘法运算方法及装置
CN103019647B (zh) * 2012-11-28 2015-06-24 中国人民解放军国防科学技术大学 具有浮点精度保持功能的浮点累加/累减运算方法
US9389863B2 (en) * 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
CN103914277B (zh) * 2014-04-14 2017-02-15 复旦大学 一种基于改进的Montgomery模乘算法的可扩展模乘器电路

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020174319A1 (en) * 2001-05-15 2002-11-21 International Business Machines Corporation Method and apparatus for reducing logic activity in a microprocessor
US20080016319A1 (en) * 2006-06-28 2008-01-17 Stmicroelectronics S.R.L. Processor architecture, for instance for multimedia applications
US20110320765A1 (en) * 2010-06-28 2011-12-29 International Business Machines Corporation Variable width vector instruction processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020262825A1 (ko) * 2019-06-27 2020-12-30 에스케이텔레콤 주식회사 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치

Also Published As

Publication number Publication date
WO2018024093A1 (zh) 2018-02-08
EP3496006A4 (en) 2020-01-22
CN107688854B (zh) 2021-10-19
US20190236442A1 (en) 2019-08-01
EP3496006A1 (en) 2019-06-12
CN114004349A (zh) 2022-02-01
US10489704B2 (en) 2019-11-26
CN107688854A (zh) 2018-02-13
TW201805835A (zh) 2018-02-16
KR102486029B1 (ko) 2023-01-06
EP3496006B1 (en) 2023-12-27
TWI789358B (zh) 2023-01-11

Similar Documents

Publication Publication Date Title
KR20190029515A (ko) 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치
KR102123633B1 (ko) 행렬 연산 장치 및 방법
CN107315574B (zh) 一种用于执行矩阵乘运算的装置和方法
KR102185287B1 (ko) 벡터 연산 장치
CN110582785B (zh) 配置用于执行层描述符列表的具有功率效率的深度神经网络模块
KR102175044B1 (ko) 인공 신경망 역방향 트레이닝 실행용 장치와 방법
WO2017185418A1 (zh) 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
WO2017185396A1 (zh) 一种用于执行矩阵加/减运算的装置和方法
CN107315718B (zh) 一种用于执行向量内积运算的装置和方法
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN107315716B (zh) 一种用于执行向量外积运算的装置和方法
CN107315568B (zh) 一种用于执行向量逻辑运算的装置
US11907158B2 (en) Vector processor with vector first and multiple lane configuration
EP3447690A1 (en) Maxout layer operation apparatus and method
CN112348182A (zh) 一种神经网络maxout层计算装置
CN110458285B (zh) 数据处理方法、装置、计算机设备和存储介质
KR102644951B1 (ko) 산술 논리 장치 레지스터 시퀀싱
JP4273929B2 (ja) 計算処理方法,そのプログラム,データ再分散機構,計算処理装置
CN114565075A (zh) 支援多种访问模式的设备、方法及可读存储介质
CN114625370A (zh) 在主机和设备之间进行数据布局的方法、设备和异构系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant