KR102354720B1 - 계산 장치 및 방법 - Google Patents

계산 장치 및 방법 Download PDF

Info

Publication number
KR102354720B1
KR102354720B1 KR1020197028161A KR20197028161A KR102354720B1 KR 102354720 B1 KR102354720 B1 KR 102354720B1 KR 1020197028161 A KR1020197028161 A KR 1020197028161A KR 20197028161 A KR20197028161 A KR 20197028161A KR 102354720 B1 KR102354720 B1 KR 102354720B1
Authority
KR
South Korea
Prior art keywords
data
input data
unit
instruction
point position
Prior art date
Application number
KR1020197028161A
Other languages
English (en)
Other versions
KR20200110152A (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 CN201810149287.2A external-priority patent/CN110163350B/zh
Priority claimed from CN201810207915.8A external-priority patent/CN110276447B/zh
Application filed by 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 filed Critical 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드
Publication of KR20200110152A publication Critical patent/KR20200110152A/ko
Application granted granted Critical
Publication of KR102354720B1 publication Critical patent/KR102354720B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Advance Control (AREA)
  • Error Detection And Correction (AREA)
  • Image Processing (AREA)
  • Feedback Control In General (AREA)
  • Numerical Control (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

본 출원은 계산 장치를 제공하며, 상기 계산 장치는 기계 학습 계산을 실행하는 데에 사용되고, 상기 계산 장치는, 입력 데이터 및 계산 명령을 획득하는 데에 사용되는 기억 유닛, 상기 기억 유닛으로부터 계산 명령을 인출하고, 상기 계산 명령을 디코딩하여 하나 또는 복수개의 연산 명령을 얻고, 하나 또는 복수개의 연산 명령 및 입력 데이터를 연산 유닛에 송신하는 데에 사용되는 컨트롤러 유닛, 하나 또는 복수개의 연산 명령에 따라 입력 데이터에 대한 연산을 실행하여 계산 명령의 결과를 얻는 연산 유닛을 포함한다. 본 발명의 실시예는 기계 학습 계산에 참여하는 데이터에 대하여 고정 소수점 데이터로 표시하고, 훈련 연산의 처리 속도와 처리 효율을 높일 수 있다.

Description

계산 장치 및 방법{COMPUTING DEVICE AND METHOD}
본 발명은 정보 처리 기술 분야에 관한 것으로, 특히 계산 장치 및 방법에 관한 것이다.
정보 기술이 지속적으로 발전하고, 사람들의 요구가 점점 많아짐에 따라, 정보 적시성에 대한 사람들의 요구가 점점 높아지고 있다. 현재, 단말기는 범용 프로세서에 의해 정보를 획득하고 정보를 처리한다.
실제로는, 범용 프로세서가 소프트웨어 프로그램을 실행하여 정보를 처리하는 방식은 범용 프로세서의 운행 속도에 의해 제한되며, 특히 범용 프로세서의 부하가 비교적 큰 상황에서 정보 처리 효율이 낮고, 지연이 비교적 크며, 정보 처리의 계산 모델, 예를 들어, 훈련 모델에 대하여, 훈련 연산의 계산량이 더 크고, 범용 프로세서가 훈련 연산을 완성하는 데에 오랜 시간이 걸리고, 효율이 낮은 것으로 나타났다.
본 발명의 실시예는 연산의 처리 속도를 향상시키고, 효율을 높일 수 있는 계산 장치 및 방법을 제공한다.
제 1 양태에서, 본 발명의 실시예는 계산 장치를 제공하며, 상기 계산 장치는 기계 학습 계산을 실행하는 데에 사용되고, 상기 계산 장치는 연산 유닛과 컨트롤러 유닛을 포함하며,
상기 연산 유닛은 하나의 마스터 처리 회로와 복수개의 슬레이브 처리 회로를 포함하고,
상기 컨트롤러 유닛은 제 1 입력 데이터 및 계산 명령을 획득하는 데에 사용되고; 또한 상기 계산 명령을 분석하여 데이터 변환 명령과 복수개의 연산 명령을 얻으며, 여기서, 상기 데이터 변환 명령은 연산 도메인과 연산 코드를 포함하고, 상기 연산 코드는 상기 데이터 유형 변환 명령의 기능을 나타내는 데에 사용되고, 상기 데이터 유형 변환 명령의 연산 도메인은 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식 식별자를 포함하며; 상기 데이터 변환 명령의 연산 코드와 연산 도메인 및 상기 제 1 입력 데이터를 상기 변환 유닛으로 송신하고; 상기 복수개의 연산 명령을 상기 연산 유닛으로 송신하며,
상기 변환 유닛은 상기 데이터 변환 명령의 연산 코드와 연산 도메인에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 또한 상기 제 2 입력 데이터를 상기 연산 유닛으로 송신하는 데에 사용되며, 상기 제 2 입력 데이터는 고정 소수점 데이터이고,
상기 연산 유닛은 상기 복수개의 연산 명령에 따라 상기 제 2 입력 데이터에 대한 연산을 실행하여, 상기 계산 명령의 계산 결과를 얻는 데에 사용된다.
가능한 실시예에 있어서, 상기 기계 학습 계산은 인공 신경망 연산을 포함하고, 상기 제 1 입력 데이터는 입력 뉴런 데이터와 가중치 데이터를 포함하고, 상기 계산 결과는 출력 뉴런 데이터이다.
가능한 실시예에 있어서, 상기 연산 유닛은 하나의 마스터 처리 회로와 복수개의 슬레이브 처리 회로를 포함하고,
상기 마스터 처리 회로는 상기 제 2 입력 데이터에 대한 전속 처리를 실행하고, 복수개의 슬레이브 처리 회로에 데이터 및 상기 복수개의 연산 명령을 송신하는 데에 사용되며,
상기 복수개의 슬레이브 처리 회로는 상기 마스터 처리 회로에서 송신된 제 2 입력 데이터 및 상기 복수개의 연산 명령에 따라 중간 연산을 실행하여 복수개의 중간 결과를 얻으며, 또한 복수개의 중간 결과를 상기 마스터 처리 회로에 송신하는 데에 사용되며,
상기 마스터 처리 회로는 상기 복수개의 중간 결과에 대하여 후속 처리를 실행하여 상기 계산 명령의 계산 결과를 얻는 데에 사용된다.
가능한 실시예에 있어서, 상기 계산 장치는 기억 유닛과 직접 메모리 액세스 DMA 유닛을 더 포함하고, 상기 기억 유닛은 레지스터와 버퍼 메모리 중의 임의의 조합을 포함하며,
상기 버퍼 메모리는 제 1 입력 데이터를 저장하는 데에 사용되고,
상기 레지스터는 상기 제 1 입력 데이터 중의 스칼라 데이터를 저장하는 데에 사용되며,
상기 버퍼 메모리는 캐시를 포함한다.
가능한 실시예에 있어서, 상기 컨트롤러 유닛은 명령 캐시 유닛, 명령 처리 유닛 및 저장 대열 유닛을 포함하고,
상기 명령 캐시 유닛은 상기 인공 신경망 연산과 관련된 계산 명령을 저장하는 데에 사용되고,
상기 명령 처리 유닛은 상기 계산 명령을 분석하여 상기 데이터 변환 명령과 상기 복수개의 연산 명령을 얻고, 또한 상기 데이터 변환 명령을 분석하여 상기 데이터 변환 명령의 연산 도메인과 연산 코드를 얻는 데에 사용되며,
상기 저장 대열 유닛은 명령 대열을 저장하는 데에 사용되며, 상기 명령 대열은 상기 대열의 선후 순서에 따라 실행될 복수개의 연산 명령 또는 계산 명령을 포함한다.
가능한 실시예에 있어서, 상기 컨트롤러 유닛은 의존 관계 처리 유닛을 더 포함하고,
상기 의존 관계 처리 유닛은 제 1 연산 명령과 상기 제 1 연산 명령 전의 제 0 연산 명령 사이에 관련 관계가 있는지 여부를 확정하는 데에 사용되며, 상기 제 1 연산 명령과 상기 제 0 연산 명령 사이에 관련 관계가 존재하면, 상기 제 1 연산 명령은 상기 명령 캐시 유닛에 캐싱되고, 상기 제 0 연산 명령의 실행이 완료된 후에 상기 명령 캐시 유닛으로부터 상기 제 1 연산 명령을 인출하여 상기 연산 유닛으로 전송하며,
상기 제 1 연산 명령과 상기 제 1 연산 명령 전의 제 0 연산 명령 사이에 관련 관계가 있는지 여부를 확정하는 것은,
상기 제 1 연산 명령에 의거하여 상기 제 1 연산 명령에서 필요한 데이터의 제 1 저장 주소 구간을 인출하고, 상기 제 0 연산 명령에 의거하여 상기 제 0 연산 명령에서 필요한 데이터의 제 0 저장 주소 구간을 인출하며, 상기 제 1 저장 주소 구간과 상기 제 0 저장 주소 구간이 중첩 영역을 갖는 경우, 상기 제 1 연산 명령과 상기 제 0 연산 명령 사이에 관련 관계가 있다고 확정할 수 있으며, 상기 제 1 저장 주소 구간과 상기 제 0 저장 주소 구간이 중첩 영역을 갖지 않는 경우, 상기 제 1 연산 명령과 상기 제 0 연산 명령 사이에 관련 관계가 없다고 확정할 수 있다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터가 고정 소수점 데이터인 경우, 상기 연산 유닛은 유도 유닛을 더 포함하고,
상기 유도 유닛은 상기 제 1 입력 데이터의 소수점 위치에 따라 하나 또는 복수개의 중간 결과의 소수점 위치를 도출하는 데에 사용되고, 여기서, 상기 하나 또는 복수개의 중간 결과는 상기 제 1 입력 데이터에 따라 연산하여 얻은 것이다.
가능한 실시예에 있어서, 상기 연산 유닛은 하나 또는 복수개의 중간 결과를 캐시하는 데에 사용되는 데이터 캐시 유닛을 더 포함한다.
가능한 실시예에 있어서, 상기 연산 유닛은 트리 모듈을 포함하고, 상기 트리 모듈은 하나의 루트 포트 및 복수개의 브랜치 포트를 포함하며, 상기 트리 모듈의 루트 포트는 상기 마스터 처리 회로에 연결되고, 상기 트리 모듈의 복수개의 브랜치 포트는 각각 복수개의 슬레이브 처리 회로 중의 하나의 슬레이브 처리 회로에 연결되며,
상기 트리 모듈은 상기 마스터 처리 회로와 상기 복수개의 슬레이브 처리 회로 사이의 데이터 블록, 가중치 및 연산 명령을 전달하는 데에 사용된다.
가능한 실시예에 있어서, 상기 연산 유닛은 분기 처리 회로를 더 포함하고,
상기 마스터 처리 회로는 구체적으로 상기 입력 뉴런이 브로드 캐스트 데이터이고, 가중치가 분배 데이터이다고 확정하며, 하나의 분배 데이터를 복수개의 데이터 블록으로 분배하고, 복수개의 데이터 블록 중의 적어도 하나의 데이터 블록, 브로드 캐스트 데이터 및 복수개의 연산 명령 중의 적어도 하나의 연산 명령을 상기 분기 처리 회로로 송신하는 데에 사용되며,
상기 분기 처리 회로는 상기 마스터 처리 회로와 상기 복수개의 슬레이브 처리 회로 사이의 데이터 블록, 브로드 캐스트 데이터 및 연산 명령을 전달하는 데에 사용되며,
상기 복수개의 슬레이브 처리 회로는 상기 연산 명령에 따라 수신된 데이터 블록 및 브로드 캐스트 데이터에 대하여 연산을 실행하여 중간 결과를 얻고, 또한 중간 결과를 상기 분기 처리 회로로 송신하는 데에 사용되며,
상기 마스터 처리 회로는 또한 상기 분기 처리 회로가 송신한 중간 결과에 대하여 후속 처리를 진행하여 상기 연산 명령의 결과를 얻고, 상기 계산 명령의 결과를 상기 컨트롤러 유닛으로 송신하는 데에 사용된다.
가능한 실시예에 있어서, 상기 연산 유닛은 하나의 마스터 처리 회로 및 복수개의 슬레이브 처리 회로를 포함하고,
상기 복수개의 슬레이브 처리 회로는 어레이로 분포되고; 각 슬레이브 처리 회로는 인접한 다른 슬레이브 처리 회로와 연결되며, 상기 마스터 처리 회로는 복수개의 슬레이브 처리 회로 중의 K개의 슬레이브 처리 회로에 연결되고, 상기 K개의 슬레이브 처리 회로는 제 1 행의 n개의 슬레이브 처리 회로, 제 m 행의 n개의 슬레이브 처리 회로 및 제 1 열의 m개의 슬레이브 처리 회로이며,
상기 K개의 슬레이브 처리 회로는 상기 마스터 처리 회로와 복수개의 슬레이브 처리 회로 사이에서 데이터 및 명령을 전달하는 데에 사용되며,
상기 마스터 처리 회로는 또한 상기 입력 뉴런을 브로드 캐스트 데이터로 확정하고, 가중치를 분배 데이터로 확정하며, 하나의 분배 데이터를 복수개의 데이터 블록으로 분배하고, 복수개의 데이터 블록 중의 적어도 하나의 데이터 블록 및 복수개의 연산 명령 중의 적어도 하나의 연산 명령을 상기 K개의 슬레이브 처리 회로로 송신하는 데에 사용되며,
상기 K개의 슬레이브 처리 회로는 상기 마스터 처리 회로와 상기 복수개의 슬레이브 처리 회로 사이의 데이터를 변환하는 데에 사용되며,
상기 복수개의 슬레이브 처리 회로는 상기 연산 명령에 따라 수신된 데이터 블록에 대하여 연산을 실행하여 중간 결과를 얻고, 또한 연산 결과를 상기 K개의 슬레이브 처리 회로로 송신하는 데에 사용되며,
상기 마스터 처리 회로는 상기 K개의 슬레이브 처리 회로가 송신한 중간 결과를 처리하여 상기 계산 명령의 결과를 얻고, 상기 계산 명령의 결과를 상기 컨트롤러 유닛으로 송신하는 데에 사용된다.
가능한 실시예에 있어서, 상기 마스터 처리 회로는 구체적으로 복수개의 처리 회로로부터 송신된 중간 결과를 조합하고 정렬하여 상기 계산 명령의 결과를 얻는 데에 사용되고,
또는 상기 마스터 처리 회로는 구체적으로 복수개의 처리 회로로부터 송신된 중간 결과를 조합하고 정렬하며 및 활성화 처리하여 상기 계산 명령의 결과를 얻는 데에 사용된다.
가능한 실시예에 있어서, 상기 마스터 처리 회로는 활성화 처리 회로와 덧셈 처리 회로 중의 하나 또는 임의의 조합을 포함하며,
상기 활성화 처리 회로는 마스터 처리 회로 내의 데이터에 대한 활성화 연산을 실행하는 데에 사용되고,
상기 덧셈 처리 회로는 덧셈 연산 또는 누적 연산을 실행하는 데에 사용된다.
가능한 실시예에 있어서, 상기 슬레이브 처리 회로는 수신된 데이터 블록에 대하여 곱셈 연산을 실행하여 승적 결과를 얻는 데에 사용되는 곱셈 처리 회로를 포함한다.
가능한 실시예에 있어서, 상기 슬레이브 처리 회로는 상기 승적 결과에 대하여 누적 연산을 실행하여 상기 중간 결과를 얻는 데에 사용되는 누적 처리 회로를 더 포함한다.
가능한 실시예에 있어서, 상기 트리 모듈은 n-트리 구조이고, 상기 n은 2보다 크거나 같은 정수이다.
가능한 실시예에 있어서, 상기 컨트롤러 유닛은 또한 상기 제 1 입력 데이터 및 계산 명령을 획득하기 전에 상기 제 1 입력 데이터의 소수점 위치 및 고정 소수점 데이터의 비트 폭을 확정하는 데에 사용되며, 상기 고정 소수점 데이터의 비트 폭은 상기 제 1 입력 데이터가 고정 소수점 데이터로 변환된 비트 폭이고,
상기 연산 유닛은 또한 상기 제 1 입력 데이터의 소수점 위치를 초기화하고 상기 제 1 입력 데이터의 소수점 위치를 조정하는 데에 사용된다.
가능한 실시예에 있어서, 상기 연산 유닛이 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
상기 제 1 입력 데이터의 절대치의 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
상기 제 1 입력 데이터의 절대치의 최소치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
상기 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
경험치 상수에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것을 포함한다.
가능한 실시예에 있어서, 상기 연산 유닛이 상기 제 1 입력 데이터의 절대치의 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
상기 연산 유닛이 제 1 사전 설정 공식과 상기 제 1 입력 데이터의 절대치의 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것을 포함하고,
여기서, 상기 제 1 사전 설정 공식은
Figure 112019098173787-pat00001
이고,
Figure 112019098173787-pat00002
는 상기 초기화 후의 제 1 입력 데이터의 소수점 위치이고, 상기
Figure 112019098173787-pat00003
는 상기 제 1 입력 데이터의 절대치의 최대치이고, 상기
Figure 112019098173787-pat00004
는 상기 고정 소수점 데이터의 비트 폭이다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 절대치의 최대치는 데이터 유형에 따라 획득한 절대치의 최대치를 포함하고,
또는 상기 제 1 입력 데이터의 절대치의 최대치는 층별로, 데이터 유형별로 획득한 절대치의 최대치를 포함하고,
또는 상기 제 1 입력 데이터의 절대치의 최대치는 층별로, 데이터 유형별로, 그룹별로 획득한 절대치의 최대치를 포함한다.
가능한 실시예에 있어서, 상기 연산 유닛이 상기 제 1 입력 데이터의 절대치의 최소치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
상기 연산 유닛이 제 2 사전 설정 공식과 상기 제 1 입력 데이터의 절대치의 최소치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것을 포함하고,
여기서, 상기 제 2 사전 설정 공식은
Figure 112019098173787-pat00005
이고,
Figure 112019098173787-pat00006
는 상기 초기화 후의 제 1 입력 데이터의 소수점 위치이고, 상기
Figure 112019098173787-pat00007
는 상기 제 1 입력 데이터의 절대치의 최소치이고, 상기
Figure 112019098173787-pat00008
는 상기 고정 소수점 데이터의 비트 폭이다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 절대치의 최소치는 데이터 유형에 따라 획득한 절대치의 최소치를 포함하고,
또는 상기 제 1 입력 데이터의 절대치의 최소치는 층별로, 데이터 유형별로 획득한 절대치의 최소치를 포함하고,
또는 상기 제 1 입력 데이터의 절대치의 최소치는 층별로, 데이터 유형별로, 그룹별로 획득한 절대치의 최소치를 포함한다.
가능한 실시예에 있어서, 상기 연산 유닛이 상기 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
다중 레이어 네트워크 모델의 임의의 한 레이어(예를 들면, 제 1 레이어)의 데이터 유형
Figure 112019098173787-pat00009
의 소수점 위치
Figure 112019098173787-pat00010
는 상기 연산 유닛이 제 1 레이어의 데이터 유형
Figure 112019098173787-pat00011
의 소수점 위치
Figure 112019098173787-pat00012
와 공식
Figure 112019098173787-pat00013
에 따라 확정된다.
여기서,
Figure 112019098173787-pat00014
는 입력 뉴런
Figure 112019098173787-pat00015
, 출력 뉴런
Figure 112019098173787-pat00016
, 가중치
Figure 112019098173787-pat00017
, 입력 뉴런 도함수
Figure 112019098173787-pat00018
, 출력 뉴런 도함수
Figure 112019098173787-pat00019
또는 가중치 도함수
Figure 112019098173787-pat00020
이고,
Figure 112019098173787-pat00021
는 입력 뉴런
Figure 112019098173787-pat00022
, 출력 뉴런
Figure 112019098173787-pat00023
, 가중치
Figure 112019098173787-pat00024
, 입력 뉴런 도함수
Figure 112019098173787-pat00025
, 출력 뉴런 도함수
Figure 112019098173787-pat00026
또는 가중치 도함수
Figure 112019098173787-pat00027
이며,
Figure 112019098173787-pat00028
Figure 112019098173787-pat00029
는 불일치하고,
Figure 112019098173787-pat00030
Figure 112019098173787-pat00031
는 정상수이다.
가능한 실시예에 있어서, 상기 연산 유닛이 상기 제 1 입력 데이터의 소수점 위치를 조정하는 것은,
상기 제 1 입력 데이터의 절대치 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 단일 단계로 위로 조정하고;
또는 상기 제 1 입력 데이터의 절대치 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 차츰차츰 위로 조정하고;
또는 상기 제 1 입력 데이터 분포에 따라 상기 제 1 입력 데이터의 소수점 위치를 단일 단계로 위로 조정하고;
또는 상기 제 1 입력 데이터 분포에 따라 상기 제 1 입력 데이터의 소수점 위치를 차츰차츰 위로 조정하고;
또는 상기 제 1 입력 데이터의 절대치 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 아래로 조정하는 것을 포함한다.
제 2 양태에서, 본 발명의 실시예는 기계 학습 계산을 실행하는 방법을 제공하며, 상기 방법은,
제 1 입력 데이터 및 계산 명령을 획득하는 단계;
상기 계산 명령을 분석하여 데이터 변환 명령과 복수개의 연산 명령을 얻는 단계,
상기 데이터 변환 명령에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하는 단계;
상기 복수개의 연산 명령에 따라 상기 제 2 입력 데이터에 대한 연산을 실행하여 계산 명령의 결과를 얻는 단계를 포함하고,
여기서, 상기 데이터 변환 명령은 연산 도메인과 연산 코드를 포함하고, 상기 연산 코드는 상기 데이터 유형 변환 명령의 기능을 나타내는 데에 사용되고, 상기 데이터 유형 변환 명령의 연산 도메인은 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식을 포함하고,
상기 제 2 입력 데이터는 고정 소수점 데이터이다.
가능한 실시예에 있어서, 상기 기계 학습 계산은 인공 신경망 연산을 포함하고, 상기 제 1 입력 데이터는 입력 뉴런 데이터와 가중치 데이터를 포함하며, 상기 계산 결과는 출력 뉴런 데이터이다.
가능한 실시예에 있어서, 상기 데이터 변환 명령에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하는 것은,
상기 데이터 변환 명령을 분석하여 상기 소수점 위치, 상기 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식을 얻는 단계;
상기 제 1 입력 데이터의 데이터 유형 플래그 비트에 따라 상기 제 1 입력 데이터의 데이터 유형을 확정하는 단계;
상기 소수점 위치와 상기 데이터 유형의 변환 방식에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하는 단계를 포함하고,
상기 제 2 입력 데이터의 데이터 유형과 상기 제 1 입력 데이터의 데이터 유형은 다르다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터와 상기 제 2 입력 데이터는 모두 고정 소수점 데이터일 경우, 상기 제 1 입력 데이터의 소수점 위치와 상기 제 2 입력 데이터의 소수점 위치는 일치하지 않다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터가 고정 소수점 데이터일 경우, 상기 방법은,
상기 제 1 입력 데이터의 소수점 위치에 따라 하나 또는 복수개의 중간 결과의 소수점 위치를 도출하는 단계를 더 포함하고,
여기서, 상기 하나 또는 복수개의 중간 결과는 상기 제 1 입력 데이터에 따라 연산하여 얻은 것이다.
상기 방법은, 상기 제 1 입력 데이터 및 계산 명령을 획득하기 전에 상기 제 1 입력 데이터의 소수점 위치와 고정 소수점 데이터의 비트 폭을 확정하는 단계;
상기 제 1 입력 데이터의 소수점 위치를 초기화하고 상기 제 1 입력 데이터의 소수점 위치를 조정하는 단계를 더 포함하고,
상기 고정 소수점 데이터의 비트 폭은 상기 제 1 입력 데이터가 고정 소수점 데이터로 변환된 비트 폭이다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
상기 제 1 입력 데이터의 절대치의 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
상기 제 1 입력 데이터의 절대치의 최소치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
상기 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
경험치 상수에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것을 포함한다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 절대치의 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
제 1 사전 설정 공식과 상기 제 1 입력 데이터의 절대치의 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것을 포함하고,
여기서, 상기 제 1 사전 설정 공식은
Figure 112019098173787-pat00032
이고,
Figure 112019098173787-pat00033
는 상기 초기화 후의 제 1 입력 데이터의 소수점 위치이고, 상기
Figure 112019098173787-pat00034
는 상기 제 1 입력 데이터의 절대치의 최대치이고, 상기
Figure 112019098173787-pat00035
는 상기 고정 소수점 데이터의 비트 폭이다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 절대치의 최대치는 데이터 유형에 따라 획득한 절대치의 최대치를 포함하고,
또는 상기 제 1 입력 데이터의 절대치의 최대치는 층별로, 데이터 유형별로 획득한 절대치의 최대치를 포함하고,
또는 상기 제 1 입력 데이터의 절대치의 최대치는 층별로, 데이터 유형별로, 그룹별로 획득한 절대치의 최대치를 포함한다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 절대치의 최소치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
제 2 사전 설정 공식과 상기 제 1 입력 데이터의 절대치의 최소치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것을 포함하고,
여기서, 상기 제 2 사전 설정 공식은
Figure 112019098173787-pat00036
이고,
Figure 112019098173787-pat00037
는 상기 초기화 후의 제 1 입력 데이터의 소수점 위치이고, 상기
Figure 112019098173787-pat00038
는 상기 제 1 입력 데이터의 절대치의 최소치이고, 상기
Figure 112019098173787-pat00039
는 상기 고정 소수점 데이터의 비트 폭이다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 절대치의 최소치는 데이터 유형에 따라 획득한 절대치의 최소치를 포함하고,
또는 상기 제 1 입력 데이터의 절대치의 최소치는 층별로, 데이터 유형별로 획득한 절대치의 최소치를 포함하고,
또는 상기 제 1 입력 데이터의 절대치의 최소치는 층별로, 데이터 유형별로, 그룹별로 획득한 절대치의 최소치를 포함한다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
다중 레이어 네트워크 모델의 임의의 한 레이어, 예를 들어, 제 1 레이어의 데이터 유형
Figure 112019098173787-pat00040
의 소수점 위치
Figure 112019098173787-pat00041
는 제 1 레이어의 데이터 유형
Figure 112019098173787-pat00042
의 소수점 위치
Figure 112019098173787-pat00043
와 공식
Figure 112019098173787-pat00044
에 따라 확정된다.
여기서,
Figure 112019098173787-pat00045
는 입력 뉴런
Figure 112019098173787-pat00046
, 출력 뉴런
Figure 112019098173787-pat00047
, 가중치
Figure 112019098173787-pat00048
, 입력 뉴런 도함수
Figure 112019098173787-pat00049
, 출력 뉴런 도함수
Figure 112019098173787-pat00050
또는 가중치 도함수
Figure 112019098173787-pat00051
이고,
Figure 112019098173787-pat00052
는 입력 뉴런
Figure 112019098173787-pat00053
, 출력 뉴런
Figure 112019098173787-pat00054
, 가중치
Figure 112019098173787-pat00055
, 입력 뉴런 도함수
Figure 112019098173787-pat00056
, 출력 뉴런 도함수
Figure 112019098173787-pat00057
또는 가중치 도함수
Figure 112019098173787-pat00058
이며,
Figure 112019098173787-pat00059
Figure 112019098173787-pat00060
는 불일치하고,
Figure 112019098173787-pat00061
Figure 112019098173787-pat00062
는 정상수이다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터의 소수점 위치를 조정하는 것은,
상기 제 1 입력 데이터의 절대치 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 단일 단계로 위로 조정하고;
또는 상기 제 1 입력 데이터의 절대치 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 차츰차츰 위로 조정하고;
또는 상기 제 1 입력 데이터 분포에 따라 상기 제 1 입력 데이터의 소수점 위치를 단일 단계로 위로 조정하고;
또는 상기 제 1 입력 데이터 분포에 따라 상기 제 1 입력 데이터의 소수점 위치를 차츰차츰 위로 조정하고;
또는 상기 제 1 입력 데이터의 절대치 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 아래로 조정하는 것을 포함한다.
제 3 양태에서, 본 발명의 실시예는 기계 학습 연산 장치를 제공하며, 상기 기계 학습 연산 장치는 하나 또는 복수개의 제 1 양태에 따른 계산 장치를 포함한다. 상기 기계 학습 연산 장치는 다른 처리 장치에서 계산할 데이터 및 제어 정보를 획득하고, 지정된 기계 학습 연산을 실행하며, I/O 인터페이스를 통해 실행 결과를 다른 처리 장치로 전달하는 데에 사용된다.
상기 기계 학습 연산 장치가 복수개의 상기 계산 장치를 포함하는 경우, 복수개의 계산 장치는 특정 구조를 통해 연결되어 데이터를 전송할 수 있고,
여기서, 복수개의 상기 계산 장치는 PCIE 버스를 통해 상호 연결되어 데이터를 전송할 수 있으며, 따라서 더 큰 규모의 기계 학습 연산을 지지하도록 하고; 복수개의 상기 계산 장치는 동일한 제어 시스템을 공유하거나, 또는 제각기 독립적인 제어 시스템을 가지며; 복수개의 상기 계산 장치는 메모리를 공유할 수 있거나, 또는 제각기 메모리를 가지며; 복수개의 상기 계산 장치의 상호 연결 방법은 임의의 상호 연결 토폴로지이다.
제 4 양태에서, 본 발명의 실시예는 결합 처리 장치를 제공하며, 상기 결합 처리 장치는 제 3 양태에 따른 기계 학습 연산 장치, 범용 상호 연결 인터페이스 및 다른 처리 장치를 포함한다. 상기 기계 학습 연산 장치는 상기 다른 처리 장치와 상호 작용하여 사용자가 지정한 계산 조작을 함께 완성한다. 상기 결합 처리 장치는 기억 장치를 더 포함할 수 있고, 상기 기억 장치는 상기 기계 학습 연산 장치와 상기 다른 처리 장치에 각각 연결되며, 상기 기계 학습 연산 장치와 상기 다른 처리 장치의 데이터를 기억하는 데에 사용된다.
제 5 양태에서, 본 발명의 실시예는 신경망 칩을 제공하며, 상기 신경망 칩은 제 1 양태에 따른 계산 장치, 상기 제 3 양태에 따른 기계 학습 연산 장치 또는 제 4 양태에 따른 결합 처리 장치를 포함한다.
제 6 양태에서, 본 발명의 실시예는 신경망 칩 패키지 구조를 제공하며, 상기 신경망 칩 패키지 구조는 제 5 양태에 따른 신경망 칩을 포함한다.
제 7 양태에서, 본 발명의 실시예는 보드 카드를 제공하고, 상기 보드 카드는 기억 장치, 인터페이스 장치, 제어 장치 및 제 5 양태에 따른 신경망 칩을 포함하고,
여기서, 상기 신경망 칩은 상기 기억 장치, 상기 제어 장치 및 상기 인터페이스 장치와 각각 연결되며,
상기 기억 장치는 데이터를 기억하는 데에 사용되고,
상기 인터페이스 장치는 상기 칩과 외부 장치 사이의 데이터 전송을 실현하는 데에 사용되며,
상기 제어 장치는 상기 칩의 상태를 모니터링하는 데에 사용된다.
또한, 상기 기억 장치는 여러 조의 기억 유닛을 포함하고, 각 조의 상기 기억 유닛은 버스를 통해 상기 칩에 연결되며, 상기 기억 유닛은 DDR SDRAM이고;
상기 칩은 각 상기 기억 유닛의 데이터 전송 및 데이터 저장을 제어하는 데에 사용되는 DDR 컨트롤러를 포함하고,
상기 인터페이스 장치는 표준 PCIE 인터페이스이다.
제 8 양태에서, 본 발명의 실시예는 전자 장치를 제공하고, 상기 전자 장치는 제 5 양태에 따른 신경망 칩, 제 6 양태에 따른 신경망 칩 패키지 구조 또는 제 7 양태에 따른 보드 카드를 포함한다.
일부 실시예에 있어서, 상기 전자 장치는 데이터 처리 장치, 로봇, 컴퓨터, 프린터, 스캐너, 태블릿, 스마트 단말기, 휴대폰, 운전 기록 장치, 내비게이터, 센서, 카메라, 서버, 클라우드 서버, 사진기, 비디오 카메라, 프로젝터, 손목시계, 헤드폰, 휴대용 저장장치, 착용형 장치, 교통 수단, 가전 제품 및/또는 의료 장비를 포함한다.
일부 실시예에 있어서, 상기 교통 수단은 비행기, 선박 및/또는 차량을 포함하고, 상기 가전 제품은 텔레비전, 에어컨, 전자 렌지, 냉장고, 전기 밥솥, 가습기, 세탁기, 전등, 가스 렌지, 레인지 후드를 포함하며, 상기 의료 장치는 핵 자기 공명 설비, B- 초음파 설비 및/또는 심전도 설비를 포함한다.
본 출원의 실시예의 방안에 있어서, 상기 계산 장치는, 기억 유닛으로부터 계산 명령을 인출하고, 상기 계산 명령을 디코딩하여 데이터 변환 명령 및/또는 하나 또는 복수개의 연산 명령을 얻고, 데이터 변환 명령, 복수개의 연산 명령 및 제 1 입력 데이터를 연산 유닛에 송신하는 데에 사용되는 컨트롤러 유닛; 데이터 변환 명령에 따라 제 1 입력 데이터를 고정 소수점 데이터로 표시하는 제 2 입력 데이터로 변환하는 데에 사용되는 변환 유닛; 복수개의 연산 명령에 따라 제 2 입력 데이터에 대한 연산을 실행하여 계산 명령의 결과를 얻는 데에 사용되는 연산 유닛을 포함한다. 본 발명의 실시예는 기계 학습 계산에 참여하는 데이터에 대하여 고정 소수점 데이터로 표시하고, 훈련 연산의 처리 속도와 처리 효율을 높일 수 있다.
이하, 본 발명의 실시예에 따른 기술 해결책을 보다 명확하게 설명하기 위해, 실시예를 설명하는데 필요한 첨부 도면을 간략히 소개한다. 다음 설명에서의 첨부 도면은 단지 본 발명의 일부 실시예를 도시할 뿐이고, 당업자는 또한 창조적인 노력 없이 이들 첨부 도면에 기초하여 다른 도면을 도출할 수도 있다는 점이 자명하다.
도 1은 본 발명의 실시예에 따른 고정 소수점 데이터의 데이터 구조를 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 다른 고정 소수점 데이터의 데이터 구조를 나타내는 도면이다.
도 2a는 본 발명의 실시예에 따른 다른 고정 소수점 데이터의 데이터 구조를 나타내는 도면이다.
도 2b는 본 발명의 실시예에 따른 다른 고정 소수점 데이터의 데이터 구조를 나타내는 도면이다.
도 3은 본 발명의 실시예에 따른 계산 장치의 구조를 나타내는 도면이다.
도 3a는 본 발명의 일 실시예에 따른 계산 장치의 구조를 나타내는 도면이다.
도 3b는 본 발명의 다른 실시예에 따른 계산 장치의 구조를 나타내는 도면이다.
도 3c는 본 발명의 다른 실시예에 따른 계산 장치의 구조를 나타내는 도면이다.
도 3d는 본 발명의 실시예에 따른 다른 마스터 처리 회로의 구조를 나타내는 도면이다.
도 3e는 본 발명의 다른 실시예에 따른 계산 장치의 구조를 나타내는 도면이다.
도 3f는 본 발명의 실시예에 따른 트리 모듈의 구조를 나타내는 도면이다.
도 3g는 본 발명의 다른 실시예에 따른 계산 장치의 구조를 나타내는 도면이다.
도 3h는 본 발명의 다른 실시예에 따른 계산 장치의 구조를 나타내는 도면이다.
도 4는 본 발명의 실시예에 따른 단일 레이어 인공 신경망의 순방향 연산의 흐름도이다.
도 5는 본 발명의 실시예에 따른 신경망 순방향 연산과 역방향 훈련 흐름도이다.
도 6은 본 발명의 실시예에 따른 결합 처리 장치의 구조를 나타내는 도면이다.
도 6a는 본 발명의 다른 실시예에 따른 계산 장치의 구조를 나타내는 도면이다
도 7은 본 발명의 실시예에 따른 다른 결합 처리 장치의 구조를 나타내는 도면이다.
도 8은 본 발명의 실시예에 따른 보드 카드의 구조를 나타내는 도면이다.
도 9는 본 발명의 실시예에 따른 계산 방법의 흐름도이다.
도 10은 본원의 실시예에 따른 데이터의 소수점 위치를 결정하고 조정하는 프로세스를 나타내는 도면이다.
도 11은 본 발명의 실시예에 따른 분산 시스템의 구조를 나타내는 도면이다.
도 12는 본 발명의 실시예에 따른 다른 분산 시스템의 구조를 나타내는 도면이다.
이하, 본 발명의 실시예에 따른 도면을 참조하여 본 발명의 실시예에 따른 기술 방안을 명확하고 완전하게 설명한다. 다음 설명되는 실시예는 단지 본 발명의 일부 실시예에 불과하며, 모든 실시예가 아니다는 점이 분명하다. 당업자가 창조적인 노력 없이 본 발명의 실시예에 기초하여 획득한 모든 다른 실시예는 모두 본 발명의 보호 범위에 속한다.
본 발명의 명세서, 청구범위 및 첨부된 도면에 있어서의 ‘첫번째’, ‘두번째’, ‘세번째’, ‘네번째’등 용어는 서로 다른 대상을 구분하는 데에 사용되며, 특정 순서를 설명하는 데에 사용되는 것은 아니다. 또한, ‘포함한다’와 ‘가진다’ 및 이러한 용어의 변형은 비배타적인 포함을 커버하도록 의도된다. 예를 들어, 일련의 단계 또는 단원을 포함하는 프로세스, 방법, 시스템, 제품 또는 장치는 이미 열거된 단계나 단원에 한정되지 않고, 열거되지 않은 단계나 단원을 선택적으로 포함하거나, 또는 이러한 프로세스, 방법, 시스템, 제품 또는 장치의 다른 단계 또는 단원을 선택적으로 포함한다.
본 명세서에서 언급되는‘실시예’는, 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성은 본 출원의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 명세서의 여러 곳에서 나타나는 이 언어는 모두 동일한 실시예를 지칭하는 것이 아니고, 상호 배타적인 독립적인 또는 대안적인 실시예도 아니다. 당업자는 본 명세서에 기재된 실시예가 다른 실시예와 결합될 수 있음을 명시적으로 또한 암시적으로 이해한다.
본 출원의 실시예는 데이터 유형을 제공하며, 데이터 유형은 조정 인자를 포함하고, 조정 인자는 데이터 유형의 값 범위 및 정밀도를 나타 내는 데에 사용된다.
조정 인자는 제 1 스케일링 인자 및 제 2 스케일링 인자를 포함하며, 제 1 스케일링 인자는 데이터 유형의 정밀도를 나타내는 데에 사용되고, 제 2 스케일링 인자는 데이터 유형의 값 범위를 조정하는 데에 사용된다. .
선택적으로, 제 1 스케일링 인자는 2-m, 8-m, 10-m, 2, 3, 6, 9, 10, 2m, 8m, 10m 또는 다른 값일 수 있다.
구체적으로, 제 1 스케일링 인자는 소수점 위치일 수 있다. 예를 들어, 이진법으로 표시되는 입력 데이터 INA1의 소수점 위치를 오른쪽으로 m자리 옮긴 다음에 얻은 입력 데이터는 INB1=INA1*2m이고, 즉 입력 데이터 INB1는 입력 데이터 INA1에 대해 2m배로 확대되며, 다시 예를 들면, 십진법으로 표시되는 입력 데이터 INA2의 소수점 위치를 왼쪽으로 n자리 옮긴 다음에 얻은 입력 데이터는 INB2=INA2/10n이고, 즉 입력 데이터 INA2는 입력 데이터 INB2에 대해 10n배 축소되며, m과 n은 정수이다.
선택적으로, 제 2 스케일링 인자는 2, 8, 10, 16 또는 다른 값일 수 있다.
예를 들어, 입력 데이터에 대응하는 데이터 유형의 값의 범위는 8-15~ 816이고, 연산과정에서 연산 결과가 입력 데이터에 대응하는 데이터 유형의 값 범위의 최대값보다 큰 경우, 데이터 유형의 값 범위에 데이터 유형의 제 2 스케일링 인자(즉, 8)을 곱하여 새로운 값 범위 8-14~817를 얻게 되며, 연산 결과가 입력 데이터에 대응하는 데이터 유형의 값 범위의 최소값보다 작은 경우, 데이터 유형의 값 범위를 데이터 유형의 제 2 스케일링 인자(8)로 나누어 새로운 값 범위 8-16~815를 얻게 된다.
아무런 격식의 데이터(예를 들면, 부동 소수점 수, 이산형 데이터)에 대하여 모두 스케일링 인자를 더할 수 있고, 따라서 상기 데이터의 크기와 정밀도를 조정한다.
본 출원의 명세서에서 언급되는 소수점 위치는 모두 상술한 제 1 스케일링 인자일 수 있으며, 여기에서 더 상세히 설명하지는 않는다.
아래, 고정 소수점 데이터의 구조에 대하여 설명한다. 도 1을 참조하면, 도 1은 본 발명의 실시예에 따른 고정 소수점 데이터의 데이터 구조를 나타내는 도면이다. 도 1은 부호달린 고정 소수점 데이터를 도시하고 있으며, 상기 고정 소수점 데이터는 X 비트를 차지하며, 상기 고정 소수점 데이터는 X 비트 고정 소수점 데이터라고도 한다. 여기서, 상기 X 비트 고정 소수점 데이터는 1 비트를 차지하는 부호 자리, M 비트를 차지하는 정수 장리 및 N 비트를 차지하는 소수 자리를 포함하고, X-1=M+N이다. 부호없는 고정 소수점 데이터에 대하여, M 비트의 정수 자리와 N 비트의 소수 자리만 포함하며, 즉 X=M+N이다.
32 비트 부동 소수점 데이터 표현 형식과 비교할 경우, 본 발명에서 사용되는 짧은 비트 고정 소수점 데이터 표현 형식은 차지하는 비트수가 더 적을뿐만 아니라, 네트워크 모델의 동일한 레이어 및 동일한 유형의 데이터, 예를 들면, 첫번째 컨벌루션 레이어(Convolutional layer)의 모든 컨벌루션 커널(convolution kernel), 입력 뉴런 또는 오프셋 데이터에 대하여 또한 고정 소수점 데이터의 소수점 위치를 기록하는 플래그 비트가 설정되며, 상기 플래그 비트는 바로 Point Location이다. 이와 같이, 입력 데이터의 분포에 따라 상기 플래그 비트의 크기를 조정할 수 있기 때문에, 고정 소수점 데이터의 조정 정밀도와 고정 소수점 데이터를 표현할 수 있는 범위를 달성할 수 있다.
예를 들면, 부동 소수점 수 68.6875를 소수점 위치가 5인 부호 달린 16 비트 고정 소수점 데이터로 변환한다. 여기서, 소수점 위치가 5인 부호 달린 16 비트 고정 소수점 데이터에 대하여, 정수 부분은 10 비트를 차지하고, 소수 부분은 5 비트를 차지하며, 부호 비트는 1 비트를 차지한다. 도 2에 도시된 바와 같이, 상기 변환 유닛은 상기 부동 소수점 수 68.6875를 부호 달린 16 비트 고정 소수점 데이터 0000010010010110으로 변환한다.
가능한 실시예에 있어서, 상기 고정 소수점 데이터는 또한 도 2a에 도시된 방식으로 표현될 수 있다. 도 2a에 도시된 바와 같이, 상기 고정 소수점 데이터가 차지하는 비트수는 bitnum이고, 소수점 위치는 s이며, 상기 고정 소수점 데이터의 정밀도는 2S이다. 첫번째 비트는 상기 고정 소수점 데이터가 정수인지 부수인지를 나타내는 부호 비트이다. 예를 들어, 부호 비트가 0이면, 상기 고정 소수점 데이터가 정수임을 나타내고, 부호 비트가 1이면, 상기 고정 소수점 데이터가 부수임을 나타낸다. 상기 고정 소수점 데이터의 표시 범위는
Figure 112019098173787-pat00063
이고, 여기서,
Figure 112019098173787-pat00064
,
Figure 112019098173787-pat00065
이다.
여기서, 상기 bitnum은 임의의 자연수일 수 있다. 상기 s는 임의의 s_min보다 작지 않는 정수일 수 있다.
선택적으로, 상기 bitnum은 8,16,24,32,64 또는 다른 값일 수 있다. 또한 상기 s_min은 -64이다.
선택적으로, 상기 bitnum은 8,16,24,32 또는 다른 값일 수 있다. s는 임의의 s_min보다 작지 않는 정수일 수 있고, s_min은 -64이다.
일 실시예에 있어서, 수치가 비교적 큰 데이터에 대하여 다양한 고정 소수점 표시 방법을 채용할 수 있으며, 구체적으로 도 2b를 참조하라. 도 2b에 도시된 바와 같이, 수치가 비교적 큰 데이터는 세가지 고정 소수점 데이터의 조합으로 표시되며, 즉, 상기 데이터는 고정 소수점 데이터 1, 고정 소수점 데이터 2 및 고정 소수점 데이터 3으로 구성된다. 여기서, 고정 소수점 데이터 1의 비트 폭은 bitnum1이고, 소수점 위치는 s1이고, 고정 소수점 데이터 2의 비트 폭은 bitnum2이고, 소수점 위치는 s2이며, 고정 소수점 데이터 3의 비트 폭은 bitnum3이고, 소수점 위치는 s3이고, bitnum2-2=s1-1, bitnum3-2=s2-1이다. 세가지 고정 소수점 데이터로 표시되는 범위는
Figure 112019098173787-pat00066
이고, 여기서,
Figure 112019098173787-pat00067
,
Figure 112019098173787-pat00068
이다.
우선, 본 출원에서 사용되는 계산 장치를 소개한다. 도 3을 참조하면, 계산 장치를 제공한다. 상기 계산 장치는 컨트롤러 유닛(11), 연산 유닛(12) 및 변환 유닛(13)을 포함하고, 여기서, 컨트롤러 유닛(11)은 연산 유닛(12)에 연결되고, 변환 유닛(13)은 컨트롤러 유닛(11) 및 연산 유닛(12)에 연결되며;
가능한 실시예에서, 컨트롤러 유닛(11)은 제 1 입력 데이터 및 계산 명령을 획득하는 데에 사용된다.
일 실시예에 있어서, 제 1 입력 데이터는 기계 학습 데이터이다. 또한, 기계 학습 데이터는 입력 뉴런 데이터, 가중치 데이터를 포함한다. 출력 뉴런 데이터는 최종 출력 결과 또는 중간 데이터이다.
선택가능한 기술 방안에 있어서, 제 1 입력 데이터 및 계산 명령을 획득하는 방식은 구체적으로 데이터 입출력 유닛에 의해 획득할 수 있고, 데이터 입출력 유닛은 구체적으로 하나 또는 복수개의 데이터 I/O 인터페이스 또는 I/O 핀일 수 있다.
상기 계산 명령은 순방향 연산 명령 또는 역방향 훈련 명령 또는 다른 신경망 연산 명령 등을 포함하지만 여기에 한정되는 것은 아니며, 예를 들어, 컨벌루션 연산 명령, 본 발명의 구체적인 실시예는 상기 계산 명령의 구체적인 표현 형태를 제한하지 않는다.
상기 컨트롤러 유닛(11)은 또한 상기 계산 명령을 분석하여 데이터 변환 명령 및/또는 하나 또는 복수개의 연산 명령을 얻는 데에 사용되며, 여기서, 상기 데이터 변환 명령은 연산 도메인과 연산 코드를 포함하고, 상기 연산 코드는 데이터 유형 변환 명령의 기능을 나타내는 데에 사용되고, 상기 데이터 유형 변환 명령의 연산 도메인은 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식 식별자를 포함한다.
상기 데이터 변환 명령의 연산 도메인이 저장 공간의 어드레스인 경우, 상기 컨트롤러 유닛(11)은 상기 어드레스에 대응하는 저장 공간에 따라 상기 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식 식별자를 획득한다.
상기 컨트롤러 유닛(11)은 상기 데이터 변환 명령의 연산 코드와 연산 도메인 및 상기 제 1 입력 데이터를 상기 변환 유닛(13)으로 송신하고, 상기 복수개의 연산 명령을 상기 연산 유닛(12)으로 송신하며,
상기 변환 유닛(13)은 상기 데이터 변환 명령의 연산 코드와 연산 도메인에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 또한 상기 제 2 입력 데이터를 상기 연산 유닛(12)으로 송신하는 데에 사용되며, 상기 제 2 입력 데이터는 고정 소수점 데이터이고,
상기 연산 유닛(12)는 상기 복수개의 연산 명령에 따라 상기 제 2 입력 데이터에 대한 연산을 실행하여, 상기 계산 명령의 계산 결과를 얻는 데에 사용된다.
가능한 일 실시예에 있어서, 본 출원이 제공하는 기술적 방안은 연산 유닛(12)을 하나의 마스터 복수개의 슬레이브 구조로 설치하고, 순방향 연산의 계산 명령인 경우, 순방향 연산의 계산 명령에 따라 데이터를 분할할 수 있으며, 이와 같이, 복수개의 슬레이브 처리 회로(102)에 의해 계산량이 비교적 많은 부분에 대하여 병렬 연산을 실행할 수 있으며, 따라서 연산 속도가 향상되고, 연산 시간이 절약되며, 전력 소모가 감소된다. 도 3a에 도시된 바와 같이, 상기 연산 유닛(12)은 하나의 마스터 처리 회로(101)와 복수개의 슬레이브 처리 회로(102)를 포함하고,
상기 마스터 처리 회로(101)는 상기 제 2 입력 데이터에 대한 전속 처리를 실행하고, 복수개의 슬레이브 처리 회로(102)에 데이터 및 상기 복수개의 연산 명령을 송신하는 데에 사용되며,
상기 복수개의 슬레이브 처리 회로(102)는 마스터 처리 회로(101)에서 송신된 제 2 입력 데이터 및 상기 복수개의 연산 명령에 따라 중간 연산을 실행하여 복수개의 중간 결과를 얻으며, 또한 복수개의 중간 결과를 상기 마스터 처리 회로(101)에 송신하는 데에 사용되며,
상기 마스터 처리 회로(101)는 상기 복수개의 중간 결과에 대하여 후속 처리를 실행하여 상기 계산 명령의 계산 결과를 얻는 데에 사용된다.
일 실시예에 있어서, 기계 학습 연산은 심화 학습 연산(즉 인공 신경망 연산)을 포함하고, 기계 학습 데이터(즉 제 1 입력 데이터)는 입력 뉴런 및 가중치(즉 신경망 모델 데이터)를 포함한다. 출력 뉴런은 상기 계산 명령의 계산 결과 또는 중간 결과이다. 아래에서 심화 학습을 예로 하지만, 심화 학습 연산에만 국한되지 않는다는 것을 이해하여야 한다.
선택적으로, 상기 계산 장치는 기억 유닛(10)과 직접 메모리 액세스(direct memory access,DMA) 유닛(50)을 더 포함할 수 있으며, 기억 유닛(10)은 레지스터와 버퍼 메모리 중의 하나 또는 임의의 조합을 포함할 수 있으며, 구체적으로 상기 버퍼 메모리는 상기 계산 명령을 저장하는 데에 사용되고, 상기 레지스터(201)는 상기 제 1 입력 데이터와 스칼라를 저장하는 데에 사용된다. 여기서, 상기 제 1 입력 데이터는 입력 뉴런, 가중치 및 출력 뉴런을 포함한다.
상기 버퍼 메모리(202)는 캐시이다.
DMA유닛(50)은 기억 유닛(10)으로부터 데이터를 판독하거나 또는 저장하는 데에 사용된다.
가능한 일 실시예에 있어서, 상기 레지스터(201)에 상기 연산 명령, 제 1 입력 데이터, 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식 식별자가 저장되고, 상기 컨트롤러 유닛(11)은 직접 상기 레지스터(201)로부터 상기 연산 명령, 제 1 입력 데이터, 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식 식별자를 획득하여, 제 1 입력 데이터, 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식 식별자를 상기 변환 유닛(13)에 송신하고, 상기 연산 명령을 상기 연산 유닛(12)에 송신하며,
상기 변환 유닛(13)은 상기 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식 식별자에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환한 다음에 상기 제 2 입력 데이터를 상기 연산 유닛(12)으로 전송하며,
상기 연산 유닛(12)은 상기 연산 명령에 따라 상기 제 2 입력 데이터에 대한 연산을 진행하여 연산 결과를 얻는다.
선택적으로, 상기 컨트롤러 유닛(11)은 명령 캐시 유닛(110), 명령 처리 유닛(111) 및 저장 대열 유닛(113)을 포함하고,
상기 명령 캐시 유닛(110)은 상기 인공 신경망 연산과 관련된 계산 명령을 저장하는 데에 사용되고,
상기 명령 처리 유닛(111)은 상기 계산 명령을 분석하여 상기 데이터 변환 명령과 상기 복수개의 연산 명령을 얻고, 또한 상기 데이터 변환 명령을 분석하여 상기 데이터 변환 명령의 연산 도메인과 연산 코드를 얻는 데에 사용되며,
상기 저장 대열 유닛(113)은 명령 대열을 저장하는 데에 사용되며, 상기 명령 대열은 상기 대열의 선후 순서에 따라 실행될 복수개의 연산 명령 또는 계산 명령을 포함한다.
예를 들어 설명하면, 가능한 일 실시예에 있어서, 마스터 처리 회로(101)도 하나의 제어 유닛을 포함할 수 있으며, 상기 제어 유닛은 마스터 명령 처리 유닛을 포함할 수 있고, 마스터 명령 처리 유닛은 구체적으로 명령을 마이크로 명령으로 디코딩하는 데에 사용된다. 가능한 다른 실시예에 있어서, 슬레이브 처리 회로(102)도 다른 하나의 제어 유닛을 포함할 수 있으며, 다른 하나의 제어 유닛은 슬레이브 명령 처리 유닛을 포함하고, 슬레이브 명령 처리 유닛은 구체적으로 마이크로 명령을 수신하고 처리하는 데에 사용된다. 상기 마이크로 명령은 명령의 하급 명령일 수 있으며, 상기 마이크로 명령은 명령을 분할 또는 디코딩함으로써 얻어질 수 있고, 또한 진일보로 각 구성 요소, 각 유닛 또는 각 처리 회로의 제어 신호로 디코딩될 수 있다.
선택가능한 기술 방안에 있어서, 상기 계산 명령의 구조는 아래의 표 1과 같을 수 있다.
Figure 112019098173787-pat00069
위의 표 중의 줄임표는 복수개의 레지스터 또는 즉시 데이터가 포함될 수 있음을 나타낸다.
선택 가능한 다른 기술 방안에 있어서, 상기 계산 명령은 하나 또는 복수개의 연산 도메인 및 하나의 연산 코드를 포함할 수 있다. 상기 계산 명령은 신경망 연산 명령을 포함할 수 있다. 신경망 연산 명령을 예로 들면, 표 2에 나타낸 바와 같이, 레지스터 번호 0, 레지스터 번호 1, 레지스터 번호 2, 레지스터 번호 3, 레지스터 번호 4는 연산 도메인일 수 있다. 여기서, 각 레지스터 번호 0, 레지스터 번호 1, 레지스터 번호 2, 레지스터 번호 3, 레지스터 번호 4는 하나 또는 복수개의 레지스터의 번호일 수 있다.
Figure 112019098173787-pat00070
상기 레지스터는 오프 칩(off-chip) 메모리일 수 있으며, 물론, 실제 응용에서 온 칩 메모리일 수도 있으며, 데이터를 저장하는 데에 사용된다. 상기 데이터는 구체적으로 n차원 데이터일 수 있고, n은 1보다 크거나 같은 정수이다. 예를 들어, n=1일 경우는 1차원 데이터이고, 즉 벡터이고, n=2일 경우는 2차원 데이터이고, 즉 행렬이며, n=3 또는 3이상일 경우는 다차원 텐서이다.
선택적으로, 상기 컨트롤러 유닛(11)은 의존 관계 처리 유닛(112)을 더 포함할 수 있고,
상기 의존 관계 처리 유닛(112)은 복수개의 연산 명령이 존재하는 경우, 제 1 연산 명령과 상기 제 1 연산 명령 전의 제 0 연산 명령 사이에 관련 관계가 있는지 여부를 확정하는 데에 사용되며, 예를 들어, 상기 제 1 연산 명령과 상기 제 0 연산 명령 사이에 관련 관계가 존재하면, 상기 제 1 연산 명령은 상기 명령 캐시 유닛(110)에 캐싱되고, 상기 제 0 연산 명령의 실행이 완료된 후에 상기 명령 캐시 유닛(110)으로부터 상기 제 1 연산 명령을 인출하여 상기 연산 유닛으로 전송하며,
상기 제 1 연산 명령과 상기 제 1 연산 명령 전의 제 0 연산 명령 사이에 관련 관계가 있는지 여부를 확정하는 것은, 상기 제 1 연산 명령에 의거하여 상기 제 1 연산 명령에서 필요한 데이터(예를 들어, 행렬)의 제 1 저장 주소 구간을 인출하고, 상기 제 0 연산 명령에 의거하여 상기 제 0 연산 명령에서 필요한 행령의 제 0 저장 주소 구간을 인출하며, 상기 제 1 저장 주소 구간과 상기 제 0 저장 주소 구간이 중첩 영역을 갖는 경우, 상기 제 1 연산 명령과 상기 제 0 연산 명령 사이에 관련 관계가 있다고 확정할 수 있으며, 상기 제 1 저장 주소 구간과 상기 제 0 저장 주소 구간이 중첩 영역을 갖지 않는 경우, 상기 제 1 연산 명령과 상기 제 0 연산 명령 사이에 관련 관계가 없다고 확정할 수 있다.
선택 가능한 다른 실시예에 있어서, 도 3b에 도시된 바와 같이, 상기 연산 유닛(12)은 하나의 마스터 처리 회로(101), 복수개의 슬레이브 처리 회로(102) 및 복수개의 분기 처리 회로(103)를 포함한다.
상기 마스터 처리 회로(101)는 구체적으로 상기 입력 뉴런이 브로드 캐스트 데이터(broadcast data)이고, 가중치가 분배 데이터이다고 확정하며, 하나의 분배 데이터를 복수개의 데이터 블록으로 분배하고, 복수개의 데이터 블록 중의 적어도 하나의 데이터 블록, 브로드 캐스트 데이터 및 복수개의 연산 명령 중의 적어도 하나의 연산 명령을 상기 분기 처리 회로(103)로 송신하는 데에 사용되며,
상기 분기 처리 회로(103)는 상기 마스터 처리 회로(101)와 상기 복수개의 슬레이브 처리 회로(102) 사이의 데이터 블록, 브로드 캐스트 데이터 및 연산 명령을 전달하는 데에 사용되며,
상기 복수개의 슬레이브 처리 회로(102)는 상기 연산 명령에 따라 수신된 데이터 블록 및 브로드 캐스트 데이터에 대하여 연산을 실행하여 중간 결과를 얻고, 또한 중간 결과를 상기 분기 처리 회로(103)로 송신하는 데에 사용되며,
상기 마스터 처리 회로(101)는 또한 상기 분기 처리 회로(103)가 송신한 중간 결과에 대하여 후속 처리를 진행하여 상기 연산 명령의 결과를 얻고, 상기 연산 명령의 결과를 상기 컨트롤러 유닛(11)으로 송신하는 데에 사용된다.
선택 가능한 다른 실시예에 있어서, 도 3c에 도시된 바와 같이, 상기 연산 유닛(12)은 하나의 마스터 처리 회로(101)와 복수개의 슬레이브 처리 회로(102)를 포함할 수 있다. 도 3c에 도시된 바와 같이, 복수개의 슬레이브 처리 회로(102)는 어레이로 분포되고; 각 슬레이브 처리 회로(102)는 인접한 다른 슬레이브 처리 회로(102)와 연결되며, 마스터 처리 회로(101)는 복수개의 슬레이브 처리 회로(102) 중의 K개의 슬레이브 처리 회로(102)에 연결되고, 상기 K개의 슬레이브 처리 회로(102)는 제 1 행의 n개의 슬레이브 처리 회로(102), 제 m 행의 n개의 슬레이브 처리 회로(102) 및 제 1 열의 m개의 슬레이브 처리 회로(102)이다. 도 3c에 도시된 K개의 슬레이브 처리 회로(102)는 단지 제 1 행의 n개의 슬레이브 처리 회로(102), 제 m 행의 n개의 슬레이브 처리 회로(102) 및 제 1 열의 m개의 슬레이브 처리 회로(102)를 포함하며, 즉 상기 K개의 슬레이브 처리 회로(102)는 복수개의 슬레이브 처리 회로(102) 중에서 직접 마스터 처리 회로(101)에 연결되는 슬레이브 처리 회로(102)임을 이해햐여야 한다.
K개의 슬레이브 처리 회로(102)는 상기 마스터 처리 회로(101)와 복수개의 슬레이브 처리 회로(102) 사이에서 데이터 및 명령을 전달하는 데에 사용되며,
상기 마스터 처리 회로(101)는 또한 상기 입력 뉴런을 브로드 캐스트 데이터로 확정하고, 가중치를 분배 데이터로 확정하며, 하나의 분배 데이터를 복수개의 데이터 블록으로 분배하고, 복수개의 데이터 블록 중의 적어도 하나의 데이터 블록 및 복수개의 연산 명령 중의 적어도 하나의 연산 명령을 상기 K개의 슬레이브 처리 회로(102)로 송신하는 데에 사용되며,
상기 K개의 슬레이브 처리 회로(102)는 상기 마스터 처리 회로(101)와 상기 복수개의 슬레이브 처리 회로(102) 사이의 데이터를 변환하는 데에 사용되며,
상기 복수개의 슬레이브 처리 회로(102)는 상기 연산 명령에 따라 수신된 데이터 블록에 대하여 연산을 실행하여 중간 결과를 얻고, 또한 연산 결과를 상기 K개의 슬레이브 처리 회로(102)로 송신하는 데에 사용되며,
상기 마스터 처리 회로(101)는 상기 K개의 슬레이브 처리 회로(102)가 송신한 중간 결과를 처리하여 상기 계산 명령의 결과를 얻고, 상기 계산 명령의 결과를 상기 컨트롤러 유닛(11)으로 송신하는 데에 사용된다.
선택적으로, 도 3d에 도시된 바와 같이, 도 3a~도 3c에 도시된 마스터 처리 회로(101)는 활성화 처리 회로(1011)와 덧셈 처리 회로(1012) 중의 하나 또는 임의의 조합을 더 포함할 수 있으며,
활성화 처리 회로(1011)는 마스터 처리 회로(101) 내의 데이터에 대한 활성화 연산을 실행하는 데에 사용되고,
덧셈 처리 회로(1012)는 덧셈 연산 또는 누적 연산을 실행하는 데에 사용된다.
상기 슬레이브 처리 회로(102)는 곱셈 처리 회로 및 전송 처리 회로(선택적임)를 포함하고, 곱셈 처리 회로는 수신된 데이터 블록에 대하여 곱셈 연산을 실행하여 승적 결과를 얻는 데에 사용되고, 전송 처리 회로는 수신된 데이터 블록 또는 승적 결과를 전송하는 데에 사용된다. 누적 처리 회로는 상기 승적 결과에 대하여 누적 연산을 실행하여 상기 중간 결과를 얻는 데에 사용된다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터는 데이터 유형이 연산에 참여하는 연산 명령이 지시하는 연산 유형과 일치하지 않는 데이터이고, 상기 제 2 입력 데이터는 데이터 유형이 연산에 참여하는 연산 명령이 지시하는 연산 유형과 일치한 데이터이며, 상기 변환 유닛(13)은 상기 데이터 변환 명령의 연산 코드 및 연산 도메인을 획득하고, 상기 연산 코드는 상기 데이터 변환 명령의 기능을 나타내는 데에 사용되며, 연산 도메인은 소수점 위치 및 데이터 유형의 변환 방식 식별자를 포함한다. 상기 변환 유닛(13)은 상기 소수점 위치 및 데이터 유형의 변환 방식 식별자에 따라 상기 제 1 입력 데이터를 상기 제 2 입력 데이터로 변환한다.
구체적으로, 상기 데이터 유형의 변환 방식 식별자와 상기 데이터 유형의 변환 방식은 일일이 대응된다. 표 3을 참조하면, 표 3은 실현 가능한 데이터 유형의 변환 방식 식별자와 데이터 유형의 변환 방식의 대응관계표이다.
Figure 112019098173787-pat00071
표 3에 표시된 바와 같이, 상기 데이터 유형의 변환 방식 식별자가 00인 경우, 상기 데이터 유형의 변환 방식은 고정 소수점 데이터를 고정 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 01인 경우, 상기 데이터 유형의 변환 방식은 부동 소수점 데이터를 부동 소수점 데이터로 변환하는 것이며, 상기 데이터 유형의 변환 방식 식별자가 10인 경우, 상기 데이터 유형의 변환 방식은 고정 소수점 데이터를 부동 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 11인 경우, 상기 데이터 유형의 변환 방식은 부동 소수점 데이터를 고정 소수점 데이터로 변환하는 것이다.
선택적으로, 상기 데이터 유형의 변환 방식 식별자와 데이터 유형의 변환 방식의 대응관계는 표 4에 표시된 바와 같을 수도 있다.
Figure 112019098173787-pat00072
표 4에 표시된 바와 같이, 상기 데이터 유형의 변환 방식 식별자가 0000인 경우, 상기 데이터 유형의 변환 방식은 64 비트 고정 소수점 데이터를 64 비트 부동 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 0001인 경우, 상기 데이터 유형의 변환 방식은 32 비트 고정 소수점 데이터를 64 비트 부동 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 0010인 경우, 상기 데이터 유형의 변환 방식은 16 비트 고정 소수점 데이터를 64 비트 부동 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 0011인 경우, 상기 데이터 유형의 변환 방식은 32 비트 고정 소수점 데이터를 32 비트 부동 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 0100인 경우, 상기 데이터 유형의 변환 방식은 16 비트 고정 소수점 데이터를 32 비트 부동 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 0101인 경우, 상기 데이터 유형의 변환 방식은 16 비트 고정 소수점 데이터를 16 비트 부동 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 0110인 경우, 상기 데이터 유형의 변환 방식은 64 비트 부동 소수점 데이터를 64 비트 고정 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 0111인 경우, 상기 데이터 유형의 변환 방식은 32 비트 부동 소수점 데이터를 64 비트 고정 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 1000인 경우, 상기 데이터 유형의 변환 방식은 16 비트 부동 소수점 데이터를 64 비트 고정 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 1001인 경우, 상기 데이터 유형의 변환 방식은 32 비트 부동 소수점 데이터를 32 비트 고정 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 1010인 경우, 상기 데이터 유형의 변환 방식은 16 비트 부동 소수점 데이터를 32 비트 고정 소수점 데이터로 변환하는 것이고, 상기 데이터 유형의 변환 방식 식별자가 1011인 경우, 상기 데이터 유형의 변환 방식은 16 비트 부동 소수점 데이터를 16 비트 고정 소수점 데이터로 변환하는 것이다.
가능한 실시예에 있어서, 상기 컨트롤러 유닛(11)은 상기 기억 유닛(10)으로부터 계산 명령을 획득하고, 상기 계산 명령을 분석하여 하나 또는 복수개의 연산 명령을 얻는다. 상기 연산 명령은 가변 형식 연산 명령 또는 고정 소수점 형식 연산 명령일 수 있다.
여기서, 상기 가변 형식 연산 명령은 연산 코드와 연산 도메인을 포함하고, 상기 연산 코드는 상기 가변 형식 연산 명령의 기능을 나타내는 데에 사용되며, 상기 연산 코드는 제 1 입력 데이터의 제 1 주소, 제 1 입력 데이터의 길이(선택적), 출력 데이터의 제 1 주소, 소수점 위치, 제 1 입력 데이터의 데이터 유형 플래그 비트(선택적) 및 조작 유형 식별자를 포함한다.
상기 연산 명령이 가변 형식 연산 명령일 경우, 상기 컨트롤러 유닛(11)은 상기 가변 형식 연산 명령을 분석하여 제 1 입력 데이터의 제 1 주소, 제 1 입력 데이터의 길이, 출력 데이터의 제 1 주소, 소수점 위치, 제 1 입력 데이터의 데이터 유형 플래그 비트 및 조작 유형 식별자를 획득한 다음, 제 1 입력 데이터의 제 1 주소와 제 1 입력 데이터의 길이에 따라 상기 기억 유닛(10)으로부터 제 1 입력 데이터를 획득하며, 그 다음에 제 1 입력 데이터, 소수점 위치, 제 1 입력 데이터의 데이터 유형 플래그 비트 및 조작 유형 식별자를 상기 변환 유닛(13)에 전송하고, 상기 출력 데이터의 제 1 주소를 상기 연산 유닛(12)에 전송하며,
상기 변환 유닛(13)은 상기 데이터 유형 플래그 비트, 상기 소수점 위치와 상기 조작 유형 식별자에 의해 지시되는 조작 유형에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 상기 제 2 입력 데이터를 상기 연산 유닛(12)에 전송한다.
상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 상기 제 2 입력 데이터에 대하여 연산을 진행하여 상기 계산 명령의 결과를 얻고, 상기 계산 명령의 결과를 상기 기억 유닛(10)에 있어서의 상기 출력 데이터의 제 1 주소와 대응되는 위치에 저장한다.
여기서, 상기 조작 유형 식별자는 상기 연산 유닛(12)이 연산할 때에 연산에 참여되는 데이터의 유형을 지시하는 데에 사용된다. 상기 유형은 고정 소수점 데이터, 부동 소수점 데이터, 정수 데이터 및 이산형 데이터 등이 포함한다.
가능한 실시예에 있어서, 상기 기억 유닛(10)에 제 1 입력 데이터의 제 1 주소, 제 1 입력 데이터의 길이, 출력 데이터의 제 1 주소, 소수점 위치, 제 1 입력 데이터의 데이터 유형 플래그 비트 및 조작 유형 식별자가 저장되어 있으며, 상기 컨트롤러 유닛(11)은 직접 상기 기억 유닛(10)으로부터 제 1 입력 데이터의 제 1 주소, 제 1 입력 데이터의 길이, 출력 데이터의 제 1 주소, 소수점 위치, 제 1 입력 데이터의 데이터 유형 플래그 비트 및 조작 유형 식별자를 획득한 다음에 상술한 과정에 따라 후속 조작을 진행한다.
예를 들어 설명하면, 상기 조작 유형 식별자는 0 또는 1이다. 상기 조작 유형 식별자가 1인 경우, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 부동 소수점 연산을 진행하며, 즉, 연산에 참여하는 데이터 유형은 부동 소수점 데이터이다. 조작 유형 식별자가 0인 경우, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 고정 소수점 연산을 진행하며, 즉, 연산에 참여하는 데이터 유형은 고정 소수점 데이터이다.
상기 연산 유닛(12)은 상기 데이터 유형 플래그 비트 및 조작 유형 식별자에 따라 입력 데이터의 유형과 연산 유형을 확정할 수 있다.
구체적으로, 표 5를 참조하면, 표 5는 데이터 유형 플래그 비트와 조작 유형 식별자의 매핑 관계표이다.
Figure 112019098173787-pat00073
도 5에 표시된 바와 같이, 상기 조작 유형 식별자가 0이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 고정 소수점 데이터이고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 고정 소수점 연산을 진행하며, 데이터 변환을 진행하지 않고; 상기 조작 유형 식별자가 0이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 부동 소수점 데이터이고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 부동 소수점 연산을 진행하며, 데이터 변환을 진행하지 않으며; 상기 조작 유형 식별자가 1이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 연산을 진행하고; 상기 조작 유형 식별자가 1이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 상기 제 2 입력 데이터에 대하여 연산을 진행한다.
그 중엣서, 상기 고정 소수점 데이터는 64 비트 고정 소수점 데이터, 32 비트 고정 소수점 데이터, 16 비트 고정 소수점 데이터를 포함한다. 상기 부동 소수점 데이터는 64 비트 부동 소수점 데이터, 32 비트 부동 소수점 데이터, 16 비트 부동 소수점 데이터를 포함한다. 상기 데이터 유형 플래그 비트와 조작 유형 식별자의 매핑 관계는 구체적으로 표 6을 참조할 수도 있다.
Figure 112019098173787-pat00074
Figure 112019098173787-pat00075
도 6에 표시된 바와 같이, 상기 조작 유형 식별자가 0000이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 64 비트 고정 소수점 데이터이고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 64 비트 고정 소수점 연산을 진행하며, 데이터 변환을 진행하지 않고; 상기 조작 유형 식별자가 0000이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 64 비트 부동 소수점 데이터이고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 64 비트 부동 소수점 연산을 진행하며, 데이터 변환을 진행하지 않고; 상기 조작 유형 식별자가 0001이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 32 비트 고정 소수점 데이터이고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 32 비트 고정 소수점 연산을 진행하며, 데이터 변환을 진행하지 않고; 상기 조작 유형 식별자가 0001이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 32 비트 부동 소수점 데이터이고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 32 비트 부동 소수점 연산을 진행하며, 데이터 변환을 진행하지 않고; 상기 조작 유형 식별자가 0010이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 16 비트 고정 소수점 데이터이고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 16 비트 고정 소수점 연산을 진행하며, 데이터 변환을 진행하지 않고; 상기 조작 유형 식별자가 0010이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 16 비트 부동 소수점 데이터이고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 16 비트 부동 소수점 연산을 진행하며, 데이터 변환을 진행하지 않는다.
상기 조작 유형 식별자가 0011이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 64 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 64 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 64 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 0011이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 64 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 64 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 64 비트 고정 소수점 연산을 진행한다.
상기 조작 유형 식별자가 0100이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 32 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 64 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 64 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 0100이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 32 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 64 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 64 비트 고정 소수점 연산을 진행한다.
상기 조작 유형 식별자가 0101이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 16 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 64 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 64 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 0101이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 16 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 64 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 64 비트 고정 소수점 연산을 진행한다.
상기 조작 유형 식별자가 0110이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 32 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 32 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 32 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 0110이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 32 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 32 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 32 비트 고정 소수점 연산을 진행한다.
상기 조작 유형 식별자가 0111이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 16 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 32 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 32 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 0111이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 16 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 32 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 32 비트 고정 소수점 연산을 진행한다.
상기 조작 유형 식별자가 1000이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 16 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 16 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 16 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 1000이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 16 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 16 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 16 비트 고정 소수점 연산을 진행한다.
상기 조작 유형 식별자가 1001이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 64 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 32 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 32 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 1001이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 64 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 32 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 32 비트 고정 소수점 연산을 진행한다.
상기 조작 유형 식별자가 1010이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 64 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 16 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 16 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 1010이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 64 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 16 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 16 비트 고정 소수점 연산을 진행한다.
상기 조작 유형 식별자가 1011이고, 상기 데이터 유형 플래그 비트가 0인 경우, 상기 제 1 입력 데이터는 32 비트 고정 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 16 비트 부동 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 16 비트 부동 소수점 연산을 진행하고; 상기 조작 유형 식별자가 1011이고, 상기 데이터 유형 플래그 비트가 1인 경우, 상기 제 1 입력 데이터는 32 비트 부동 소수점 데이터이고, 상기 변환 유닛(13)은 먼저 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 제 2 입력 데이터는 16 비트 고정 소수점 데이터 이며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 제 2 입력 데이터에 대하여 16 비트 고정 소수점 연산을 진행한다.
가능한 실시예에 있어서, 상기 연산 명령은 고정 소수점 형식 연산 명령이고, 상기 고정 소수점 형식 연산 명령은 연산 도메인과 연산 코드를 포함하며, 상기 연산 코드는 상기 고정 소수점 형식 연산 명령의 기능을 나타내는 데에 사용되고, 고정 소수점 형식 연산 명령의 연산 코드는 제 1 입력 데이터의 제 1 주소, 제 1 입력 데이터의 길이(선택적), 출력 데이터의 제 1 주소, 소수점 위치를 포함한다.
상기 컨트롤러 유닛(11)은 상기 고정 소수점 형식 연산 명령을 획득한 다음에, 상기 고정 소수점 형식 연산 명령을 분석하여 제 1 입력 데이터의 제 1 주소, 제 1 입력 데이터의 길이, 출력 데이터의 제 1 주소, 소수점 위치를 획득하며, 그 다음에 상기 컨트롤러 유닛(11)은 제 1 입력 데이터의 제 1 주소와 제 1 입력 데이터의 길이에 따라 상기 기억 유닛(10)으로부터 제 1 입력 데이터를 획득하며, 그 다음에 제 1 입력 데이터와 소수점 위치를 상기 변환 유닛(13)에 전송하고, 상기 출력 데이터의 제 1 주소를 상기 연산 유닛(12)에 전송한다. 상기 변환 유닛(13)은 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 상기 제 2 입력 데이터를 상기 연산 유닛(12)에 전송하며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 상기 제 2 입력 데이터에 대하여 연산을 진행하여 상기 계산 명령의 결과를 얻고, 상기 계산 명령의 결과를 상기 기억 유닛(10)에 있어서의 상기 출력 데이터의 제 1 주소와 대응되는 위치에 저장한다.
가능한 실시예에 있어서, 상기 계산 장치의 연산 유닛(12)은 상기 다중 레이어 신경망 모델의 제 i 층의 연산을 진행하기 전에 상기 계산 장치의 컨트롤러 유닛(11)은 배치 명령을 획득하고, 상기 배치 명령은 소수점 위치와 연산에 참여하는 데이터 유형을 포함한다. 상기 컨트롤러 유닛(11)은 배치 명령을 분석하여 소수점 위치와 연산에 참여하는 데이터 유형을 획득하거나, 또는 직접 상기 기억 유닛(10)으로부터 소수점 위치와 연산에 참여하는 데이터 유형을 획득한다. 그 다음에 상기 컨트롤러 유닛(11)은 입력 데이터를 획득한 다음에 입력 데이터의 데이터 유형과 연산에 참여하는 데이터 유형이 일치하는지 여부를 판단하며, 입력 데이터의 데이터 유형과 연산에 참여하는 데이터 유형이 불일치하다고 확정될 경우, 상기 컨트롤러 유닛(11)은 상기 입력 데이터, 소수점 위치 및 연산에 참여하는 데이터 유형을 상기 변환 유닛(13)에 전송한다. 상기 변환 유닛(13)은 소수점 위치와 연산에 참여하는 데이터 유형에 따라 상기 입력 데이터에 대하여 데이터 유형 변환을 진행하여, 입력 데이터의 데이터 유형과 연산에 참여하는 데이터 유형이 일치하도록 하며, 그 다음에 변환된 데이터를 상기 연산 유닛(12)에 전송하고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 변환된 입력 데이터에 대하여 연산을 진행한다. 입력 데이터의 데이터 유형과 연산에 참여하는 데이터 유형이 일치하다고 확정된 경우, 상기 컨트롤러 유닛(11)은 상기 입력 데이터를 상기 연산 유닛(12)에 전송하고, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 직접 입력 데이터에 대하여 연산을 진행하며, 데이터 유형을 변환할 필요가 없다.
또한, 상기 입력 데이터가 고정 소수점 데이터이고 연산에 참여하는 데이터 유형이 고정 소수점 데이터인 경우, 상기 컨트롤러 유닛(11)은 입력 데이터의 소수점 위치와 연산에 참여하는 데이터의 소수점 위치가 일치하는지 여부를 판단하고, 만약 불일치하다면, 상기 컨트롤러 유닛(11)은 상기 입력 데이터, 입력 데이터의 소수점 위치 및 연산에 참여하는 데이터의 소수점 위치를 상기 변환 유닛(13)에 전송한다. 상기 변환 유닛(13)은 입력 데이터를 소수점 위치가 연산에 참여하는 데이터의 소수점 위치와 일치한 고정 소수점 데이터로 변환하고, 그 다음에 변환된 데이터를 상기 연산 유닛(12)에 전송하며, 상기 연산 유닛(12)의 마스터 처리 회로(101)와 슬레이브 처리 회로(102)는 변환된 데이터에 대하여 연산을 진행한다.
다시 말하면, 상기 연산 명령은 상기 배치 명령으로 대체될 수 있다.
다른 실시예에 있어서, 상기 연산 명령은 행렬에 행렬을 곱하는 명령, 누적 명령, 활성화 명령 등 계산 명령이다.
선택 가능한 실시예에 있어서, 도 3e에 도시된 바와 같이, 상기 연산 유닛은 트리 모듈(40)을 포함한다, 상기 트리 모듈은 하나의 루트 포트(401) 및 복수개의 브랜치 포트(404)를 포함한다. 상기 트리 모듈의 루트 포트는 상기 마스터 처리 회로(101)에 연결되고, 상기 트리 모듈의 복수개의 브랜치 포트는 각각 복수개의 슬레이브 처리 회로(102) 중의 하나의 슬레이브 처리 회로(102)에 연결되며,
상기 트리 모듈은 송수신 기능을 갖고, 도 3e에 도시된 바와 같이, 상기 트리 모듈은 송신 기능을 갖고, 도 6a에 도시된 바와 같이, 상기 트리 모듈은 수신 기능을 갖는다.
상기 트리 모듈은 상기 마스터 처리 회로(101)와 상기 복수개의 슬레이브 처리 회로(102) 사이의 데이터 블록, 가중치 및 연산 명령을 전달하는 데에 사용된다.
선택적으로, 상기 트리 모듈은 계산 장치의 선택 가능한 결과이고, 상기 트리 모듈은 적어도 1층의 노드를 포함할 수 있으며, 상기 노드는 전달 기능이 있는 선 구조이며, 상기 노드 자체는 계산 기능을 갖지 않을 수도 있다. 예를 들어, 트리 모듈은 0층의 노드를 포함할 수 있고, 즉 상기 트리 모듈을 필요하지 않는다.
선택적으로, 상기 트리 모듈은 n-트리 구조일 수 있다. 예를 들면, 도 3f에 도시된 이진 트리 구조일 수 있고, 물론 삼진 트리 구조일 수도 있으며, n은 2보다 크거나 같은 정수일 수 있다. 본 출원의 구체적인 실시예는 상기 n의 특정 값을 한정하지 않고, 상기 층수는 2일 수도 있으며, 슬레이브 처리 회로(102)는 끝에서 두번째 층 노드를 제외한 다른 층의 노드에 연결될 수 있고, 예를 들면, 도 3f에 도시된 끝에서 첫번째 층 노드에 연결될 수 있다.
선택적으로, 상기 연산 유닛은 단독적인 캐시를 가질 수 있고, 도 3g에 도시된 바와 같이, 뉴런 캐시 유닛을 포함할 수 있으며, 상기 뉴런 캐시 유닛(63)은 상기 슬레이브 처리 회로(102)의 입력 뉴련 벡터 데이터와 출력 뉴련 벡터 데이터를 캐시한다.
도 3h에 도시된 바와 같이, 상기 연산 유닛은 가중치 버퍼 유닛(64)을 더 포함할 수 있다. 가중치 버퍼 유닛(64)은 상기 슬레이브 처리 회로(102)가 계산 과정에서 필요한 가중치 데이터를 캐시하는 데에 사용된다.
선택 가능한 실시예에 있어서, 신경망 연산 중의 완전 연결 연산을 예로 들면, 과정은 y=f(wx+b)일 수 있으며, 여기서, x는 입력 뉴련 행렬이고, w는 가중치 행렬이며, b는 오프셋 스칼라이고, f는 활성화 함수이며, 구체적으로 sigmoid 함수, tanh, relu 및 softmax함수 중의 임의의 하나일 수 있다. 여기서 이진 트리 구조이다고 가정할 때, 8개의 슬레이브 처리 회로(102)를 포함하고, 그 실현방법은,
컨트롤러 유닛(11)은 기억 유닛(10)으로부터 입력 뉴련 행렬 x, 가중치 행렬 w 및 완전 연결 연산 명령을 획득하고, 입력 뉴련 행렬 x, 가중치 행렬 w 및 완전 연결 연산 명령을 마스터 처리 회로(101)로 전송하며,
마스터 처리 회로(101)는 입력 뉴련 행렬 x를 8개의 부분 행렬로 분해한 다음, 8개의 부분 행렬을 트리 모듈에 의해 8개의 슬레이브 처리 회로(102)에 나누어 주며, 가중치 행렬 w를 8개의 슬레이브 처리 회로(102)에 퍼뜨리며,
슬레이브 처리 회로(102)는 8개의 부분 행렬과 가중치 행렬 w의 곱셈 연산과 누적 연산을 병렬 실행하여 8개의 중간 결과를 얻고, 8개의 중간 결과를 마스터 처리 회로(101)에 전송하며,
마스터 처리 회로(101)는 8개의 중간 결과에 대하여 순서를 배열하여 wx의 연산 결과를 얻고, 상기 연산 결과에 대한 오프셋 b의 연산을 실행한 다음에 활성화 조작을 실행하여 최종 결과 y를 얻으며, 최종 결과 y를 컨트롤러 유닛(11)에 송신하며, 컨트롤러 유닛(11)은 상기 최종 결과 y를 출력하거나 또는 기억 유닛(10)에 저장한다.
하나의 실시예에 있어서, 연산 유닛(12)은 제 1 부분의 하나 또는 복수개의 곱셈기, 제 2 부분의 하나 또는 복수개의 가산기(더 구체적으로는, 제 2 부분의 가산기는 또한 가산 트리를 구성할 수도 있다), 제 3 부분의 활성화 함수 유닛 및/또는 제 4 부분의 벡터 처리 유닛을 포함하지만, 이것에 한정되는 것은 아니다. 더 구체적으로, 벡터 처리 유닛은 벡터 연산 및/또는 풀링(Pooling) 연산을 처리할 수 있다. 제 1 부분은 입력 데이터 1(in1)과 입력 데이터 2(in2)를 곱하여 곱한 다음의 출력 데이터(out)를 얻고, 과정은 out=in1*in2이다. 제 2 부분은 가산기를 통해 입력 데이터 in1을 더하여 출력 데이터(out)를 얻는다. 더 구체적으로, 제 2 부분이 가산 트리일 경우, 가산 트리를 통해 입력 데이터 in1을 단계적으로 더하여 출력 데이터(out)를 얻으며, in1은 길이가 N인 벡터이고, N은 1보다 크며, 과정은 out=in1[1]+in1[2]+...+in1[N]이고, 및/또는 가산 트리를 통해 입력 데이터(in1)를 누적한 다음에 입력 데이터(in2)를 더하여 출력 데이터(out)를 얻으며, 과정은 out=in1[1]+in1[2]+...+in1[N]+in2이며, 또는 입력 데이터(in1)와 입력 데이터(in2)를 더하여 출력 데이터(out)를 얻으며, 과정은 out=in1+in2이다. 제 3 부분은 입력 데이터(in)를 활성화 함수(active)로 연산하여 활성화 출력 데이터(out)를 얻으며, 과정은 out=active(in)이다. 활성화 함수 active는 sigmoid, tanh, relu, softmax등일 수 있다. 활성화 조작을 진행하는것 외에 제 3 부분은 다른 비선형 함수를 실현할 수 있고, 입력 데이터(in)는 연산(f)에 의해 출력 데이터(out)를 얻으며, 과정은 out=f(in)이다. 벡터 처리 유닛은 입력 데이터(in)를 풀링 연산하여 풀링 조작 후의 출력 데이터(out)를 얻고, 과정은 out=pool(in)이다. pool은 풀링 조작이며, 풀링 조작은 평균치 풀링, 최대치 풀링, 중앙치 풀링을 포함하지만 이것에 한정되는것은 아니고, 입력 데이터 in은 출력 데이터 out와 연관된 하나의 풀링 코어의 데이터이다.
상기 연산 유닛이 연산을 실행하는 것은, 제 1 부분이 입력 데이터 1과 입력 데이터 2를 곱하여 곱한 다음의 데이터를 얻고, 및/또는 제 2 부분이 가산 연산(더 구체적으로, 가산 트리를 통해 입력 데이터 1을 단계적으로 더하는 가산 트리 연산)을 실행하거나, 또는 입력 데이터 1과 입력 데이터 2를 더하여 출력 데이터를 얻고, 및/또는 제 3 부분이 활성화 함수 연산을 실행함으로써, 입력 데이터를 활성화 함수(active)로 연산하여 활성화 출력 데이터를 얻으며, 및/또는 제 4 부분이 풀링 연산을 실행하는 것을 포함한다. 풀링 연산의 과정은 out=pool(in)이고, pool은 풀링 조작이며, 풀링 조작은 평균치 풀링, 최대치 풀링, 중앙치 풀링을 포함하지만 이것에 한정되는것은 아니고, 입력 데이터 in은 출력 데이터 out와 연관된 하나의 풀링 코어의 데이터이다. 상기 여러 부분의 연산은 하나 또는 여러 부분을 자유로 선택하여 서로 다른 순서의 조합을 이루어 여러가지 부동한 기능의 연산을 실현한다. 계산 유닛은 2급, 3급, 또는 4급 파이프라인 구조를 구성한다.
상기 제 1 입력 데이터는 긴 비트 수의 비 고정 소수점 데이터이고, 예를 들면, 32 비트 부동 소수점 데이터이고, 표준 64 비트 또는 16 비트 부동 소수점 데이터 등일 수도 있으며, 여기서는 32 비트를 구체적인 실시예로써 설명하며, 상기 제 2 입력 데이터는 짧은 비트 수의 고정 소수점 데이터이고, 또는 비트 수가 비교적 짧은 고정 소수점 데이터라고도 하며, 긴 비트 수의 비 고정 소수점 데이터인 제 1 입력 데이터에 비해, 더 적은 비트 수로 표시되는 고정 소수점 데이터를 가리킨다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터는 비 고정 소수점 데이터이고, 상기 제 2 입력 데이터는 고정 소수점 데이터이며, 상기 제 1 입력 데이터가 차지하는 비트 수는 상기 제 2 입력 데이터가 차지하는 비트 수보다 크거나 같다. 예를 들어, 상기 제 1 입력 데이터는 32 비트 부동 소수점 수이고, 상기 제 2 입력 데이터는 32 비트 고정 소수점 데이터이다. 다시 예를 들어, 상기 제 1 입력 입력 데이터는 32 비트 부동 소수점 수이고, 상기 제 2 입력 데이터는 16 비트 고정 소수점 데이터이다.
구체적으로, 서로 다른 네트워크 모델의 서로 다른 층에 대해, 상기 제 1 입력 데이터는 서로 다른 유형의 데이터를 포함한다. 서로 다른 유형의 데이터의 소수점 위치는 다르며, 즉 해당 고정 소수점 데이터의 정밀도가 다르다. 완전히 연결된 레이어(Fully Connected Layer)인 경우, 상기 제 1 입력 데이터는 입력 뉴런, 가중치 및 오프셋 데이터와 같은 데이터를 포함하고, 컨벌루션 레이어인 경우, 상기 제 1 입력 데이터는 컨벌루션 커널, 입력 뉴런 및 오프셋 데이터와 같은 데이터를 포함한다.
완전히 연결된 레이어인 경우, 상기 소수점 위치는 입력 뉴런의 소수점 위치, 가중치의 소수점 위치 및 오프셋 데이터의 소수점 위치를 포함한다. 상기 입력 뉴런의 소수점 위치, 가중치의 소수점 위치 및 오프셋 데이터의 소수점 위치는 모두 동일하거나 부분적으로 동일하거나 상이할 수 있다.
가능한 실시예에 있어서, 상기 컨트롤러 유닛(11)은 또한 상기 제 1 입력 데이터 및 계산 명령을 획득하기 전에 상기 제 1 입력 데이터의 소수점 위치 및 고정 소수점 데이터의 비트 폭을 확정하는 데에 사용되며, 상기 고정 소수점 데이터의 비트 폭은 상기 제 1 입력 데이터가 고정 소수점 데이터로 변환된 비트 폭이고,
연산 유닛(12)은 또한 제 1 입력 데이터의 소수점 위치를 초기화하고 제 1 입력 데이터의 소수점 위치를 조정하는 데에 사용된다.
여기서, 상기 제 1 입력 데이터의 고정 소수점 데이터의 비트 폭은 고정 소수점 데이터로 표시되는 제 1 입력 데이터가 차지하는 비트이고, 상기 소수점 위치는 고정 소수점 데이터로 표시되는 제 1 입력 데이터의 소수부가 차지하는 비트이다. 상기 소수점 위치는 고정 소수점 데이터의 정밀도를 표징하는 데에 사용된다. 구체적으로 도 2a에 관련된 설명을 참조하라.
구체적으로, 제 1 입력 데이터는 임의의 유형의 데이터일 수 있고, 상기 제 1 입력 데이터 a는 상기 소수점 위치와 고정 소수점 데이터의 비트 폭에 따라 제 2 입력 데이터
Figure 112019098173787-pat00076
로 변환된다. 구체적으로 다음과 같다.
Figure 112019098173787-pat00077
여기서, 상기 제 1 입력 데이터 a가 조건
Figure 112019098173787-pat00078
을 만족할 때, 상기 제 2 입력 데이터
Figure 112019098173787-pat00079
Figure 112019098173787-pat00080
이고, 상기 제 1 입력 데이터 a가
Figure 112019098173787-pat00081
보다 클 경우,
Figure 112019098173787-pat00082
보다 작을 경우, 상기 제 2 입력 데이터
Figure 112019098173787-pat00083
Figure 112019098173787-pat00084
이다.
가능한 실시예에 있어서, 컨벌루션 레이어와 완전히 연결된 레이어의 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 출력 뉴런 도함수 및 가중치 도함수는 모두 고정 소수점 데이터로 표시된다.
선택적으로, 상기 입력 뉴런이 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 입력 뉴런이 채용하는 고정 소수점 데이터의 비트 폭은 8이다.
선택적으로, 상기 가중치가 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 가중치가 채용하는 고정 소수점 데이터의 비트 폭은 8이다.
선택적으로, 상기 입력 뉴런 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 입력 뉴런 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 16이다.
선택적으로, 상기 출력 뉴런 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 출력 뉴런 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 24이다.
선택적으로, 상기 가중치 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 가중치 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 24이다.
일 실시예에 있어서, 상기 다중 레이어 네트워크 모델 연산에 참여하는 데이터 중에서 수치가 비교적 큰 데이터 a에 대하여, 다양한 고정 소수점 표시 방법이 사용될 수 있다. 구체적으로 도 2b에 관련된 설명을 참조하라.
구체적으로, 제 1 입력 데이터는 임의의 유형의 데이터일 수 있고, 상기 제 1 입력 데이터 a는 상기 소수점 위치와 고정 소수점 데이터의 비트 폭에 따라 제 2 입력 데이터
Figure 112019098173787-pat00085
로 변환된다. 구체적으로 다음과 같다.
Figure 112019098173787-pat00086
여기서, 상기 제 1 입력 데이터 a가 조건
Figure 112019098173787-pat00087
을 만족할 때, 상기 제 2 입력 데이터
Figure 112019098173787-pat00088
Figure 112019098173787-pat00089
이고, 또한
Figure 112019098173787-pat00090
,
Figure 112019098173787-pat00091
이며, 상기 제 1 입력 데이터 a가
Figure 112019098173787-pat00092
보다 클 경우, 상기 제 2 입력 데이터
Figure 112019098173787-pat00093
Figure 112019098173787-pat00094
이고, 상기 제 1 입력 데이터 a가
Figure 112019098173787-pat00095
보다 작을 경우, 상기
Figure 112019098173787-pat00096
Figure 112019098173787-pat00097
이다.
또한, 상기 연산 유닛(12)이 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것은,
상기 제 1 입력 데이터의 절대치의 최대치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
상기 제 1 입력 데이터의 절대치의 최소치에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
상기 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하거나, 또는
경험치 상수에 따라 상기 제 1 입력 데이터의 소수점 위치를 초기화하는 것을 포함한다.
구체적으로, 여기서, 상기 소수점 위치 s는 상이한 유형의 데이터, 상이한 신경망층의 데이터, 상이한 반복 순번에 있는 데이터에 따라 초기화하고 동적으로 조정해야 한다.
아래, 제 1 입력 데이터의 소수점 위치 s의 초기화 과정, 즉 제 1 입력 데이터가 최초로 변환될 때에 고정 소수점 데이터가 채용하는 소수점 위치 s를 확정하는 것을 구체적으로 설명한다.
여기서, 상기 연산 유닛(12)이 상기 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것은, 제 1 입력 데이터의 절대치의 최대치에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것; 제 1 입력 데이터의 절대치의 최소치에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것; 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것; 경험치 상수에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것을 포함한다.
구체적으로, 아래 상술한 초기화 과정에 대하여 구체적으로 설명한다.
a) 상기 연산 유닛(12)은 제 1 입력 데이터의 절대치의 최대치에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
구체적으로, 상기 연산 유닛(12)은 아래 공식에 따라 연산을 진행함으로써, 상기 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
Figure 112019098173787-pat00098
여기서, 상기
Figure 112019098173787-pat00099
는 상기 제 1 입력 데이터의 절대치의 최대치이고, 상기
Figure 112019098173787-pat00100
는 상기 제 1 입력 데이터가 고정 소수점 데이터로 변환된 비트 폭이며, 상기
Figure 112019098173787-pat00101
는 상기 제 1 입력 데이터의 소수점 위치이다.
여기서, 연산에 참여하는 데이터는 유형과 네트워크 계층에 따라 제
Figure 112019098173787-pat00102
층의 입력 뉴런
Figure 112019098173787-pat00103
, 출력 뉴런
Figure 112019098173787-pat00104
, 가중치
Figure 112019098173787-pat00105
, 입력 뉴런 도함수
Figure 112019098173787-pat00106
, 출력 뉴런 도함수
Figure 112019098173787-pat00107
와 가중치 도함수
Figure 112019098173787-pat00108
로 나눌 수 있다. 절대치 최대치를 찾을 때, 데이터 유형에 따라 찾을 수 있고; 층별로, 데이터 유형별로 찾을 수 있으며; 층별로, 데이터 유형별로, 그룹별로 찾을 수 있다. 제 1 입력 데이터의 절대치의 최대치를 확정하는 방법은 다음과 같다.
a.1) 상기 연산 유닛(12)은 데이터 유형에 따라 절대치 최대치를 찾는다
구체적으로, 제 1 입력 데이터의 벡터/행렬 중의 각 요소는 제 2 입력 데이
Figure 112019098173787-pat00109
이다. 여기서, 상기
Figure 112019098173787-pat00110
는 입력 뉴런
Figure 112019098173787-pat00111
또는 출력 뉴런
Figure 112019098173787-pat00112
또는 가중치
Figure 112019098173787-pat00113
또는 입력 뉴런 도함수
Figure 112019098173787-pat00114
또는 출력 뉴런 도함수
Figure 112019098173787-pat00115
또는 가중치 도함수
Figure 112019098173787-pat00116
일 수 있다. 다시 말하면, 상기 제 1 입력 데이터는 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수를 포함한다. 상기 제 1 입력 데이터의 소수점 위치는 입력 뉴런의 소수점 위치, 가중치의 소수점 위치, 출력 뉴런의 소수점 위치, 입력 뉴런 도함수의 소수점 위치, 가중치 도함수의 소수점 위치와 출력 뉴런 도함수의 소수점 위치를 포함한다. 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수는 모두 행렬 또는 벡터 형식으로 표시된다. 상기 연산 유닛(12)은 상기 다중 레이어 네트워크 모델의 각 레이어의 벡터/행렬 내의 모든 요소를 두루 누비여 각 유형 데이터의 절대치 최대치를 획득하며, 즉
Figure 112019098173787-pat00117
이고, 공식
Figure 112019098173787-pat00118
에 의해 각 유형 데이터a가 고정 소수점 데이터로 변환된 소수점 위치
Figure 112019098173787-pat00119
를 확정한다.
a.2) 상기 연산 유닛(12)은 층별로, 데이터 유형별로 절대치 최대치를 찾는다
구체적으로, 제 1 입력 데이터의 벡터/행렬 중의 각 요소는
Figure 112019098173787-pat00120
이다. 여기서, 상기
Figure 112019098173787-pat00121
는 입력 뉴런 터상기 제 2 입력 데이터
Figure 112019098173787-pat00122
Figure 112019098173787-pat00123
이고, 상기 제 1 입
Figure 112019098173787-pat00124
또는 출력 뉴런
Figure 112019098173787-pat00125
또는 가중치
Figure 112019098173787-pat00126
또는 입력 뉴런 도함수
Figure 112019098173787-pat00127
또는 출력 뉴런 도함수
Figure 112019098173787-pat00128
또는 가중치 도함수
Figure 112019098173787-pat00129
일 수 있다. 다시 말하면, 상기 다중 레이어 네트워크 모델의 각 레이어는 모두 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수를 포함한다. 상기 제 1 입력 데이터의 소수점 위치는 입력 뉴런의 소수점 위치, 가중치의 소수점 위치, 출력 뉴런의 소수점 위치, 입력 뉴런 도함수의 소수점 위치, 가중치 도함수의 소수점 위치와 출력 뉴런 도함수의 소수점 위치를 포함한다. 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수는 모두 행렬/벡터로 표시된다. 상기 연산 유닛(12)은 상기 다중 레이어 네트워크 모델의 각 레이어의 각 유형의 데이터의 벡터/행렬 중의 모든 요소를 두루 누비여 각 유형 데이터의 절대치 최대치를 획득하며, 즉
Figure 112019098173787-pat00130
이고, 공식
Figure 112019098173787-pat00131
에 의해 제 1 층의 각 유형의 데이터a의 소수점 위치
Figure 112019098173787-pat00132
를 확정한다.
a.3) 상기 연산 유닛(12)은 층별로, 데이터 유형별로, 그룹별로 절대치 최대치를 찾는다
구체적으로, 제 1 입력 데이터의 벡터/행렬 중의 각 요소는
Figure 112019098173787-pat00133
이다. 그 중
Figure 112019098173787-pat00134
는 입력 뉴런
Figure 112019098173787-pat00135
또는 출력 뉴런
Figure 112019098173787-pat00136
또는 가중치
Figure 112019098173787-pat00137
또는 입력 뉴런 도함수
Figure 112019098173787-pat00138
또는 출력 뉴런 도함수
Figure 112019098173787-pat00139
또는 가중치 도함수
Figure 112019098173787-pat00140
일 수 있다. 다시 말하면, 상기 다중 레이어 네트워크 모델의 각 레이어의 데이터 유형은 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수를 포함한다. 상기 연산 유닛(12)은 상기 다중 레이어 네트워크 모델의 각 레이어의 각 유형의 데이터를 g그룹으로 나누거나, 또는 다른 임의의 그룹별 규칙에 따라 그룹을 나눈다. 상기 연산 유닛(12)은 상기 다중 레이어 네트워크 모델의 각 레이어의 각 유형의 데이터에 대응되는 g그룹의 데이터의 각 그룹의 데이터의 각 원소를 두루 누비여, 상기 그룹의 데이터 중에서 절대치가 가장 큰 원소를 획득하며, 즉
Figure 112019098173787-pat00141
이고, 공식
Figure 112019098173787-pat00142
에 의해 각 레이어의 모든 데이터 유형에 대응되는 g그룹의 데이터의 각 그룹의 소수점 위치
Figure 112019098173787-pat00143
를 확정한다.
여기서, 상기 임의의 그룹별 규칙은 데이터 범위에 따라 그룹을 나누거나, 데이터 훈련 차례에 따라 그룹을 나누는 등 규칙을 포함하지만, 이것에 한정되는 것은 아니다.
b) 상기 연산 유닛(12)은 제 1 입력 데이터의 절대치 최소치에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
구체적으로, 상기 연산 유닛(12)은 계량화될 데이터의 절대치 최소치 에서,
Figure 112019098173787-pat00144
를 찾고, 아래 공식에 의해 고정 소수점 정밀도 s를 확정한다.
Figure 112019098173787-pat00145
여기서, 상기
Figure 112019098173787-pat00146
는 상기 제 1 입력 데이터의 절대치 최소치이다.
Figure 112019098173787-pat00147
을 획득하는 과정은 구체적으로 상술한 단계 a.1), a.2), a.3)을 참조할 수 있다.
c) 상기 연산 유닛(12)은 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 상기 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
구체적으로, 다중 레이어 네트워크 모델의 임의의 한 레이어(예를 들면, 제 1 레이어)의 데이터 유형
Figure 112019098173787-pat00148
의 소수점 위치
Figure 112019098173787-pat00149
는 상기 연산 유닛(12)이 제 1 레이
Figure 112019098173787-pat00150
와 공식
Figure 112019098173787-pat00151
에 의해 확정된다.
여기서,
Figure 112019098173787-pat00152
Figure 112019098173787-pat00153
는 입력 뉴런
Figure 112019098173787-pat00154
또는 출력 뉴런
Figure 112019098173787-pat00155
또는 가중치
Figure 112019098173787-pat00156
또는 입력 뉴런 도함수
Figure 112019098173787-pat00157
또는 출력 뉴런 도함수
Figure 112019098173787-pat00158
또는 가중치 도함수
Figure 112019098173787-pat00159
일 수 있다. 여기서,
Figure 112019098173787-pat00160
Figure 112019098173787-pat00161
는 정상수이다.
d) 상기 계산 유닛(12)은 경험치 상수에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
구체적으로, 상기 다중 레이어 네트워크 모델의 임의의 한 레이어(예를 들면, 제 1 레이어)의 데이터 유형
Figure 112019098173787-pat00162
의 소수점 위치
Figure 112019098173787-pat00163
는 어의 데이터 유형
Figure 112019098173787-pat00164
Figure 112019098173787-pat00165
로 인공 설정할 수 있다. 여기서, c는 정상수이고, 상기
Figure 112019098173787-pat00166
는 입력 뉴런
Figure 112019098173787-pat00167
또는 출력 뉴런
Figure 112019098173787-pat00168
또는 가중치
Figure 112019098173787-pat00169
또는 입력 뉴런 도함수
Figure 112019098173787-pat00170
또는 출력 뉴런 도함수
Figure 112019098173787-pat00171
또는 가중치 도함수
Figure 112019098173787-pat00172
일 수 있다.
또한, 상기 입력 뉴런의 소수점 위치 초기화 값과 출력 뉴런의 소수점 위치 초기화 값은 모두 [-8, 8]의 범위 내에서 선택할 수 있다. 가중치의 소수점 위치 초기화 값은 [-17, 8]의 범위 내에서 선택할 수 있다. 입력 뉴런 도함수의 소수점 위치 초기화 값과 출력 뉴런 도함수의 소수점 위치 초기화 값은 모두 [-40, -20]의 범위 내에서 선택할 수 있다. 가중치 도함수의 소수점 위치 초기화 값은 [-48, -12] 범위 내에서 선택할 수 있다.
아래, 상기 연산 유닛(12)이 데이터의 상기 소수점 위치 s를 동적으로 조정하는 방법을 구체적으로 설명한다.
상기 연산 유닛(12)이 소수점 위치 s를 동적으로 조정하는 방법은, s를 위로 조정하는 것(s가 커진다)과 s를 아래로 조정하는 것(s가 작아진다)을 포함한다. 구체적으로, 제 1 입력 데이터의 절대치 최대치에 따라 단일 단계로 위로 조정하는 것; 제 1 입력 데이터의 절대치 최대치에 따라 차츰차츰 위로 조정하는 것; 제 1 입력 데이터 분포에 따라 단일 단계로 위로 조정하는 것; 제 1 입력 데이터 분포에 따라 차츰차츰 위로 조정하는 것; 제 1 입력 데이터의 절대치 최대치에 따라 아래로 조정하는 것을 포함한다.
a) 상기 연산 유닛(12)은 제 1 입력 데이터 중의 데이터 절대치의 최대치에 따라 단일 단계로 위로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00173
이다고 가정하면, 상기 소수점 위치
Figure 112019098173787-pat00174
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00175
이다. 여기서,
Figure 112019098173787-pat00176
,
Figure 112019098173787-pat00177
이다. 상기 제 1 입력 데이터 중의 데이터 절대치의 최대치 소수점 위치 상기 력 데이터
Figure 112019098173787-pat00178
일 경우, 조정한 다음의 소수점 위치는
Figure 112019098173787-pat00179
이며, 그렇지 않으면 상기 소수점 위치를 조정하지 않고, 즉
Figure 112019098173787-pat00180
이다.
b) 상기 연산 유닛(12)은 제 1 입력 데이터 중의 데이터 절대치의 최대치에 따라 차츰차츰 위로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00181
이다고 가정하면, 상기 소수점 위치
Figure 112019098173787-pat00182
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00183
이다. 여기서,
Figure 112019098173787-pat00184
,
Figure 112019098173787-pat00185
이다. 상기 제 1 입력 데이터 중의 데이터 절대치의 최대치
Figure 112019098173787-pat00186
일 경우, 조정한 다음의 소수점 위치는
Figure 112019098173787-pat00187
이며, 그렇지 않으면 상기 소수점 위치를 조정하지 않고, 즉
Figure 112019098173787-pat00188
이다.
c) 상기 연산 유닛(12)은 제 1 입력 데이터 분포에 따라 단일 단계로 위로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00189
이다고 가정하면, 상기 소수점 위치
Figure 112019098173787-pat00190
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00191
,
Figure 112019098173787-pat00192
이다. 절대치의 평균치
Figure 112019098173787-pat00193
와 절대치의 표준차
Figure 112019098173787-pat00194
와 같은 제 1 입력 데이터의 절대치의 통계량을 계산한다. 데이터의 최대 범위
Figure 112019098173787-pat00195
를 설정한다.
Figure 112019098173787-pat00196
일 경우,
Figure 112019098173787-pat00197
이고, 그렇지 않으면 상기 소수점 위치를 조정하지 않고, 즉
Figure 112019098173787-pat00198
이다.
또한 상기 n은 2 또는 3일 수 있다.
d) 상기 연산 유닛(12)은 제 1 입력 데이터 분포에 따라 차츰차츰 위로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00199
이다고 가정하면, 상기 소수점 위치
Figure 112019098173787-pat00200
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00201
이다. 여기서,
Figure 112019098173787-pat00202
,
Figure 112019098173787-pat00203
이다. 절대치의 평균치
Figure 112019098173787-pat00204
와 절대치의 표준차
Figure 112019098173787-pat00205
와 같은 제 1 입력 데이터의 절대치의 통계량을 계산한다. 데이터의 최대 범위
Figure 112019098173787-pat00206
Figure 112019098173787-pat00207
를 설정하고, n은 3일 수 있다.
Figure 112019098173787-pat00208
일 경우,
Figure 112019098173787-pat00209
이고, 그렇지 않으면 상기 소수점 위치를 조정하지 않고, 즉
Figure 112019098173787-pat00210
이다.
e) 상기 연산 유닛(12)은 제 1 입력 데이터의 절대치 최대치에 따라 아래로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00211
이다고 가정하면, 상기 소수점 위치
Figure 112019098173787-pat00212
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00213
이다. 여기서,
Figure 112019098173787-pat00214
,
Figure 112019098173787-pat00215
이다. 상기 제 1 입력 데이터의 절대치 최대치
Figure 112019098173787-pat00216
이고, 또한
Figure 112019098173787-pat00217
일 경우,
Figure 112019098173787-pat00218
이고, 그 중에
Figure 112019098173787-pat00219
은 정수일 수 있고, -∞일 수도 있다.
또한, 상기 n은 3이고, 상기
Figure 112019098173787-pat00220
은 -64이다.
선택적으로, 상기 소수점 위치를 조정하는 빈도는, 제 1 입력 데이터의 소수점 위치를 절대로 조정하지 않거나; 또는 n개의 제 1 훈련 주기(즉, iteration)마다 한번 조정하고, n은 상수이며; 또는 n개의 제 2 훈련 주기(즉, epoch)마다 한번 조정하고, n은 상수이며; 또는 n개의 제 1 훈련 주기 또는 n개의 제 2 훈련 주기마다 제 1 입력 데이터의 소수점 위치를 한번 조정하고, n개의 제 1 훈련 주기 또는 제 2 훈련 주기마다 제 1 입력 데이터의 소수점 위치를 한번 조정하며, 그 다음에
Figure 112019098173787-pat00221
으로 조정하며, 여기서,
Figure 112019098173787-pat00222
는 1보다 크고; 또는 n개의 제 1 훈련 주기 또는 제 2 훈련 주기마다 제 1 입력 데이터의 소수점 위치를 한번 조정하며, 훈련 횟수가 증가됨에 따라 n을 점차 감소한다.
또한, 100개의 제 1 훈련 주기마다 입력 뉴런의 소수점 위치, 가중치의 소수점 위치 및 출력 뉴런의 소수점 위치를 한번 조정한다. 20개의 제 1 훈련 주기마다 입력 뉴런 도함수의 소수점 위치와 출력 뉴런 도함수의 소수점 위치를 한번 조정한다.
상기 제 1 훈련 주기는 일차수의 샘플을 훈련시키는데 필요한 시간이고, 제 2 훈련 주기는 모든 샘플을 한번 훈련시키는데 필요한 시간이다.
가능한 실시예에 있어서, 상기 컨트롤러 유닛(11) 또는 상기 연산 유닛(12)은 상술한 과정에 따라 상기 제 1 입력 데이터의 소수점 위치를 획득한 다음에, 제 1 입력 데이터의 소수점 위치를 기억 유닛(10)의 버퍼 메모리(202)에 저장한다.
상기 계산 명령이 즉시 주소 지정 명령인 경우, 상기 마스터 처리 유닛(101)은 직접 상기 계산 명령의 연산 도메인이 지시하는 소수점 위치에 따라 제 1 입력 데이터를 제 2 입력 데이터로 변환하고; 상기 계산 명령이 직접 주소 지정 또는 간접 주소 지정 명령인 경우, 상기 마스터 처리 유닛(101)은 상기 계산 명령의 연산 도메인이 지시하는 저장 공간에 따라 제 1 입력 데이터의 소수점 위치를 획득한 다음, 상기 소수점 위치에 따라 제 1 입력 데이터를 제 2 입력 데이터로 변환한다.
상기 계산 장치는 또한 반올림 유닛을 포함하고, 연산 과정에서, 제 2 입력 데이터에 대하여 가산, 승산 및/또는 다른 연산을 진행하여 얻은 연산 결과(연산 결과는 중간 연산 결과와 계산 명령의 결과를 포함한다)의 정확도는 현재 고정 소수점 데이터의 정확도 범위를 초과하므로, 상기 연산 버퍼 유닛은 상기 중간 연산 결과를 캐시한다. 연산이 끝난 다음에 상기 반올림 유닛은 고정 소수점 데이터의 정확도 범위를 초과하는 연산 결과에 대하여 반올림 조작을 진행하여 반올림 후의 연산 결과를 얻고, 그 다음에 상기 데이터 변환 유닛은 반올림 후의 연산 결과를 현재 고정 소수점 데이터 유형의 데이터로 변환한다.
구체적으로, 상기 반올림 유닛은 상기 중간 연산 결과에 대하여 반올림 조작을 진행한다. 상기 반올림 조작은 랜덤 반올림 조작, 사사오입 조작, 위로 반올림 조작, 아래로 반올림 조작 및 절단 반올림 조작 중의 임의의 하나이다.
상기 반올림 유닛이 랜덤 반올림 조작을 실행할 때, 상기 반올림 유닛은 구체적으로 아래 조작을 실행한다.
Figure 112019098173787-pat00223
여기서,
Figure 112019098173787-pat00224
는 반올림 전의 연산 결과
Figure 112019098173787-pat00225
에 대하여 랜덤 반올림 조작을 실행하여 얻은 데이터이고, 즉 상기 반올림 후의 연산 결과이며,
Figure 112019098173787-pat00226
는 현재 고정 소수점 데이터 표시 격식이 표시할 수 있는 가장 작은 정수이고, 즉
Figure 112019098173787-pat00227
이며,
Figure 112019098173787-pat00228
는 반올림 전의 연산 결과
Figure 112019098173787-pat00229
에 대하여 고정 소수점 데이터를 직접 차단하여 얻은 수(소수에 대한 floor 조작과 유사함)를 표시하고,
Figure 112019098173787-pat00230
는 확률를 표시하고, 상기 공식은 반올림 전의 연산 결과
Figure 112019098173787-pat00231
에 대하여 랜덤 반올림 조작을 진행하여 얻은 데이터
Figure 112019098173787-pat00232
Figure 112019098173787-pat00233
이고, 상기 중간 연산 결과
Figure 112019098173787-pat00234
에 대하여 랜덤 반올림 조작을 진행하여 얻은 데이터
Figure 112019098173787-pat00235
의 확률이
Figure 112019098173787-pat00236
임을 나타낸다.
상기 반올림 유닛이 사사오입 조작을 실행할 때, 상기 반올림 유닛은 구체적으로 아래 조작을 실행한다.
Figure 112019098173787-pat00237
여기서,
Figure 112019098173787-pat00238
는 상기 반올림 전의 연산 결과
Figure 112019098173787-pat00239
에 대하여 사사오입 조작을 실행하여 얻은 데이터이고, 즉 상기 반올림 후의 연산 결과이며,
Figure 112019098173787-pat00240
는 현재 고정 소수점 데이터 표시 격식이 표시할 수 있는 가장 작은 정수이고, 즉
Figure 112019098173787-pat00241
이며,
Figure 112019098173787-pat00242
Figure 112019098173787-pat00243
의 정수 배수이고, 그 값은
Figure 112019098173787-pat00244
보다 작거나 같은 최대수이다. 상기 공식은 상기 반올림 전의 연산 결과
Figure 112019098173787-pat00245
가 조건
Figure 112019098173787-pat00246
을 만족할 때, 상기 반올림 후의 연산 결과가 확률이 서, n은 정상수이고, 다. 여기서,
Figure 112019098173787-pat00247
이고, 상기 반올림 전의 연산 결과가 조건
Figure 112019098173787-pat00248
만족할 때, 상기 반올림 후의 연산 결과가
Figure 112019098173787-pat00249
임을 나타낸다.
상기 반올림 유닛이 위로 반올림 조작을 실행할 때, 상기 반올림 유닛은 구체적으로 아래 조작을 실행한다.
Figure 112019098173787-pat00250
여기서,
Figure 112019098173787-pat00251
는 상기 반올림 전의 연산 결과
Figure 112019098173787-pat00252
에 대하여 위로 반올림 조작을 실행하여 얻은 데이터이고, 즉 상기 반올림 후의 연산 결과이며,
Figure 112019098173787-pat00253
Figure 112019098173787-pat00254
의 정수 배수이고, 그 값은
Figure 112019098173787-pat00255
보다 크거나 같은 최소수이다.
Figure 112019098173787-pat00256
는 현재 고정 소수점 데이터 표시 격식이 표시할 수 있는 가장 작은 정수이고, 즉
Figure 112019098173787-pat00257
이다.
상기 반올림 유닛이 아래로 반올림 조작을 실행할 때, 상기 반올림 유닛은 구체적으로 아래 조작을 실행한다.
Figure 112019098173787-pat00258
여기서,
Figure 112019098173787-pat00259
는 상기 반올림 전의 연산 결과
Figure 112019098173787-pat00260
에 대하여 아래로 반올림 조
Figure 112019098173787-pat00261
의 정수 배수이고, 그 값은
Figure 112019098173787-pat00262
보다 작거나 같은 최대수이다.
Figure 112019098173787-pat00263
는 현재 고정 소수점 데이터 표시 격식이 표시할 수 있는 가장 작은 정수이고, 즉
Figure 112019098173787-pat00264
이다.
상기 반올림 유닛이 절단 반올림 조작을 실행할 때, 상기 반올림 유닛은 구체적으로 아래 조작을 실행한다.
Figure 112019098173787-pat00265
여기서, 작을 실행하여 얻은 데이터이고, 즉 상기 반올림 후의 연산 결과
Figure 112019098173787-pat00266
는 상기 반올림 전의 연산 결과
Figure 112019098173787-pat00267
에 대하여 절단 반올림 조작을 실행하여 얻은 데이터이고, 즉 상기 반올림 후의 연산 결과이며,
Figure 112019098173787-pat00268
는 상기 연산 결과
Figure 112019098173787-pat00269
에 대하여 고정 소수점 데이터를 직접 차단하여 얻은 수를 표시한다.
상기 반올림 유닛이 상기 반올림 후의 중간 연산 결과를 얻은 다음에, 상기 연산 유닛(12)은 상기 제 1 입력 데이터의 소수점 위치에 따라 상기 반올림 후의 중간 연산 결과를 현재 고정 소수점 데이터 유형의 데이터로 변환한다.
가능한 실시예에 있어서, 상기 연산 유닛(12)은 상기 하나 또는 복수개의 중간 결과 중의 데이터 유형이 부동 소수점 데이터인 중간 결과에 대하여 절단 처리를 진행하지 않는다.
상기 연산 유닛(12)의 슬레이브 처리 회로(102)는 상술한 방법으로 연산을 진행하여 얻은 중간 결과는, 상기 연산 과정에 곱셈, 나눗셈 등 중간 결과가 메모리의 저장 범위를 벗어나도록 하는 연산이 존재하기 때문에, 메모리의 저장 범위를 벗어난 중간 결과에 대하여 통상적으로 절단 처리를 진행하지만, 본 출원의 연산 과정에서 생성된 중간 결과는 메모리에 저장되지 않으므로, 메모리의 저장 범위를 벗어난 중간 결과에 대하여 절단 처리를 진행할 필요가 없고, 중간 결과의 정확도 손실이 크게 감소되고, 계산 결과의 정확도가 향상된다.
가능한 실시예에 있어서, 상기 연산 유닛(12)은 유도 유닛을 더 포함한다. 상기 연산 유닛(12)이 고정 소수점 연산에 참여하는 입력 데이터의 소수점 위치를 수신하면, 상기 유도 유닛은 상기 고정 소수점 연산에 참여하는 입력 데이터의 소수점 위치에 따라 유도하여 고정 소수점 연산을 진행하는 과정에서 하나 또는 복수개의 중간 결과의 소수점 위치를 획득한다. 상기 연산 서브 유닛이 연산을 진행하여 얻은 중간 결과가 그에 대응하는 소수점 위치가 지시하는 범위를 벗어날 경우, 상기 유도 유닛은 상기 중간 결과의 소수점 위치를 왼쪽으로 M 비트 이동하여, 상기 중간 결과의 정확도가 상기 중간 결과의 소수점 위치가 지시하는 범위 내에 있도록 하며, M은 0보다 큰 정수이다.
예를 들어 설명하면, 상기 제 1 입력 데이터는 입력 데이터 I1 및 입력 데이터 I2를 포함하고, 대응하는 소수점 위치는 각각 P1 및 P2이고, P1> P2이다. 상기 연산 명령이 지시하는 연산 유형이 덧셈 연산 또는 뺄셈 연산인 경우, 즉 상기 연산 서브 유닛이 I1+I2 또는 I1-I2의 연산을 진행하는 경우, 상기 유도 유닛은 상기 연산 명령이 지시하는 연산 과정의 중간 결과의 소수점 위치가 P1이다는 것을 도출한다. 상기 연산 명령이 지시하는 연산 유형이 곱셈 연산인 경우, 즉 상기 연산 서브 유닛이 I1*I2의 연산을 진행하는 경우, 상기 유도 유닛은 상기 연산 명령이 지시하는 연산 과정의 중간 결과의 소수점 위치가 P1*P2이다는 것을 도출한다.
가능한 실시예에 있어서, 상기 연산 유닛(12)은 하나 또는 복수개의 중간 결과를 캐시하는 데에 사용되는 데이터 캐시 유닛을 더 포함한다.
가능한 실시예에 있어서, 상기 계산 장치는 데이터 통계 유닛을 더 포함하고, 데이터 통계 유닛은 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터에 대하여 통계를 진행하여, 각 레이어의 각 유형의 입력 데이터의 소수점 위치를 얻는 데에 사용된다.
상기 데이터 통계 유닛은 외부 장치의 일부분일 수도 있으며, 상기 계산 장치는 데이터 변환을 진행하기 전에 외부 장치로부터 연산에 참여하는 소수점 위치를 획득한다.
구체적으로, 상기 데이터 통계 유닛은, 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터를 뽑아내는 데에 사용되는 획득 서브 유닛, 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터가 사전 설정된 구간에서의 분포 비율을 통계하고 획득하는 데에 사용되는 통계 서브 유닛, 상기 분포 비율에 따라 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 소수점 위치를 획득하는 데에 사용되는 분석 서브 유닛을 포함한다.
여기서, 상기 사전 설정된 구간은
Figure 112019098173787-pat00270
이고,
Figure 112019098173787-pat00271
이며, n은 사전 설정된 자연수이고, X는 고정 소수점 데이터가 차지하는 비트 수이다. 상기 사전 설정된 구간
Figure 112019098173787-pat00272
은 n+1개의 서브 구간을 포함한다. 상기 통계 서브 유닛은 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터가 상기 n+1개의 서브 구간에서의 분포 정보를 통계하고, 또한 상기 분포 정보에 따라 제 1 분포 비율을 획득한다. 상기 제 1 분포 비율은
Figure 112019098173787-pat00273
이고, 상기 n+1개의 수치는 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터가 상기 n+1개의 서브 구간에서의 분포 비율이다. 상기 분석 서브 유닛
Figure 112019098173787-pat00274
에서 제일 큰
Figure 112019098173787-pat00275
를 획득하여
Figure 112019098173787-pat00276
이도록 하며, 제일 큰
Figure 112019098173787-pat00277
는 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 소수점 위치이다. 다시 말하면, 상기 분석 서브 유닛이 획득한 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 소수점 위치는
Figure 112019098173787-pat00278
이고,
Figure 112019098173787-pat00279
보다 크거나 같은
Figure 112019098173787-pat00280
에서 가장 큰 첨자 값
Figure 112019098173787-pat00281
을 선택하여 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 소수점 위치로 한다.
상기
Figure 112019098173787-pat00282
는 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터에 있어서의 구간
Figure 112019098173787-pat00283
내에 있는 입력 데이터의 개수와 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 총 개수의 비율이다. m1개의 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터에 있어서, m2개의 입력 데이터가 구간
Figure 112019098173787-pat00284
내에 있을 경우,
Figure 112019098173787-pat00285
이다.
가능한 실시예에 있어서, 연산 효율을 높이기 위해, 상기 획득 서브 유닛은 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터에서 일부 데이터를 무작위로 또는 샘플링으로 뽑아낸 다음, 상술한 방법으로 일부 데이터의 소수점 위치를 획득하며, 그 다음에 일부 데이터의 소수점 위치에 따라 상기 유형의 입력 데이터에 대하여 데이터 변환을 진행함으로써(부동 소수점 데이터를 고정 소수점 데이터로 변환하는 것, 고정 소수점 데이터를 고정 소수점 데이터로 변환하는 것, 고정 소수점 데이터를 고정 소수점 데이터로 변환하는 것 등을 포함한다), 정확도를 유지하면서도 계산 속도와 효율을 높일 수 있다.
선택적으로, 상기 데이터 통계 유닛은 상기 동일한 유형의 데이터 또는 동일한 레이어의 데이터의 중앙값에 따라 상기 동일한 유형의 데이터 또는 동일한 레이어의 데이터의 비트 폭 및 소수점 위치를 확정할 수 있거나, 또는 상기 동일한 유형의 데이터 또는 동일한 레이어의 데이터의 평균치에 따라 상기 동일한 유형의 데이터 또는 동일한 레이어의 데이터의 비트 폭 및 소수점 위치를 확정할 수 있다.
선택적으로, 상기 연산 유닛이 상기 동일한 유형의 데이터 또는 동일한 레이어의 데이터에 대하여 연산을 진행하여 얻은 중간 결과가 상기 동일한 유형의 데이터 또는 동일한 레이어의 데이터의 비트 폭 및 소수점 위치에 대응하는 값 범위를 벗어날 경우, 상기 연산 유닛은 상기 중간 결과에 대하여 절단 처리를 진행하지 않고, 상기 중간 결과를 상기 연산 유닛의 데이터 캐시 장치에 캐시하여 후속 연산에 사용되도록 한다.
구체적으로, 상기 연산 도메인은 입력 데이터의 소수점 위치와 데이터 유형의 변환 방식 식별자를 포함한다. 상기 명령 처리 유닛은 상기 데이터 변환 명령을 분석하여 상기 입력 데이터의 소수점 위치와 데이터 유형의 변환 방식 식별자를 획득한다. 상기 명령 처리 유닛은 데이터 변환 유닛을 더 포함하고, 상기 데이터 변환 유닛은 상기 입력 데이터의 소수점 위치와 데이터 유형의 변환 방식 식별자에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환한다.
상기 네트워크 모델은 완전히 연결된 레이어, 컨벌루션 레이어, 풀링 레이어 및 입력 레이어와 같은 여러 레이어를 포함한다. 상기 적어도 하나의 입력 데이터에 있어서, 동일한 레이어에 속하는 입력 데이터는 동일한 소수점 위치를 가지며, 즉 동일한 레이어의 입력 데이터는 동일한 소수점 위치를 공유한다.
상기 입력 데이터는 상이한 유형의 데이터를 포함하고, 예를 들면, 입력 뉴런, 가중치 및 오프셋 데이터를 포함한다. 상기 입력 데이터에서 동일한 유형에 속하는 입력 데이터는 동일한 소수점 위치를 가지며, 즉 상기 동일한 유형의 입력 데이터는 동일한 소수점 위치를 공유한다.
연산 명령이 지시하는 연산 유형은 고정 소수점 연산이고, 연산 명령이 지시하는 연산에 참여하는 입력 데이터는 부동 소수점 데이터이므로, 고정 소수점 연산을 진행하기 전에, 상기 데이터 변환 유닛은 상기 입력 데이터를 부동 소수점 데이터로부터 고정 소수점 데이터로 변환한다. 연산 명령이 지시하는 연산 유형은 부동 소수점 연산이고, 연산 명령이 지시하는 연산에 참여하는 입력 데이터는 고정 소수점 데이터이므로, 부동 소수점 연산을 진행하기 전에, 상기 데이터 변환 유닛은 상기 연산 명력에 대응하는 입력 데이터를 고정 소수점 데이터로부터 부동 소수점 데이터로 변환한다
본 출원과 관련된 매크로 명령(예를 들면, 계산 명령과 데이터 변환 명령)에 대하여, 상기 컨트롤러 유닛(11)은 매크로 명령을 분석하여 매크로 명령의 연산 도메인과 연산 코드를 얻고, 상기 연산 도메인과 연산 코드에 따라 상기 매크로 명령에 대응하는 마이크로 명령을 생성하거나, 또는 상기 컨트롤러 유닛(11)은 상기 매크로 명령을 디코딩하여 상기 매크로 명령에 대응하는 마이크로 명령을 얻는다.
가능한 실시예에 있어서, 시스템 온 칩(System On Chip, SOC)은 마스터 프로세서와 보조 프로세서를 포함하고, 상기 마스터 프로세서는 상기 계산 장치를 포함한다. 상기 보조 프로세서는 상술한 방법에 따라 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 소수점 위치를 획득하고, 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 소수점 위치를 상기 계산 장치에 전송하거나 또는 상기 계산 장치가 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 소수점 위치를 사용할 필요가 있을 때, 상기 보조 프로세서에서 상기 다중 레이어 네트워크 모델의 각 레이어의 동일한 유형의 입력 데이터의 소수점 위치를 획득한다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터는 모두 비 고정 소수점 데이터이고, 상기 비 고정 소수점 데이터는 긴 비트 수 부동 소수점 데이터, 짧은 비트 수 부동 소수점 데이터, 정수 데이터 및 이산 데이터 등을 포함한다.
상기 제 1 입력 데이터의 데이터 유형은 서로 다르다. 예를 들어, 상기 입력 뉴런, 가중치 및 오프셋 데이터는 모두 부동 소수점 데이터이고; 상기 입력 뉴런, 가중치 및 오프셋 데이터에 있어서의 일부 데이터는 부동 소수점 데이터이고; 상기 입력 뉴런, 가중치 및 오프셋 데이터는 모두 정수 데이터이다. 상기 계산 장치는 비 고정 소수점 데이터로부터 고정 소수점 데이터로의 변환을 실현할 수 있고, 즉 긴 비트 수 부동 소수점 데이터, 짧은 비트 수 부동 소수점 데이터, 정수 데이터 및 이산 데이터 등 유형의 데이터로부터 고정 소수점 데이터로의 변환을 실현할 수 있다. 상기 고정 소수점 데이터는 부호 있는 고정 소수점 데이터 또는 부호 없는 고정 소수점 데이터일 수 있다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터와 제 2 입력 데이터는 모두 고정 소수점 데이터이고, 또한 제 1 입력 데이터와 제 2 입력 데이터는 모두 부호 있는 고정 소수점 데이터이거나, 또는 모두 부호 없는 고정 소수점 데이터이거나, 또는 그 중 하나는 부호가 없는 고정 소수점 데이터이고, 다른 하나는 부호 있는 고정 소수점 데이터일 수 있다. 그리고, 제 1 입력 데이터의 소수점 위치와 제 2 입력 데이터의 소수점 위치는 다르다.
가능한 실시예에 있어서, 제 1 입력 데이터는 고정 소수점 데이터이고, 제 2 입력 데이터는 비 고정 소수점 데이터이다. 다시 말하면, 상기 계산 장치는 고정 소수점 데이터로부터 비 고정 소수점 데이터로의 변환을 실현할 수 있다.
도 4는 본 발명의 실시예에 따른 단일 레이어 인공 신경망의 순방향 연산의 흐름도이다. 상기 흐름도는 본 발명이 실시예에 따른 계산 장치 및 명령 세트를 이용하여 실현하는 단일 레이어 신경망 순방향 연산 과정을 설명한다. 각 레이어에 대하여, 우선 입력 뉴런 벡터에 대하여 가중 합계를 진행하여 본 레이어의 중간 결과 벡터를 계산한다. 상기 중간 결과 벡터를 오프셋하고 활성화하어 출력 뉴런 벡터를 얻는다. 출력 뉴런 벡터를 다음 레이어의 입력 뉴런 벡터로 사용한다.
특정 응용 정황에서, 상기 계산 장치는 훈련 장치일 수 있다. 신경망 모델 훈련을 진행하기 전에, 상기 훈련 장치는 신경망 모델 훈련에 참여하는 훈련 데이터를 획득하고, 상기 훈련 데이터는 비 고정 소수점 데이터이며, 또한 상술한 방법으로 상기 훈련 데이터의 소수점 위치를 획득한다. 상기 훈련 장치는 상기 훈련 데이터의 소수점 위치에 따라 상기 훈련 데이터를 고정 소수점 데이터로 표시하는 훈련 데이터로 변환한다. 상기 훈련 장치는 고정 소수점 데이터로 표시하는 훈련 데이터에 따라 순방향 신경망 연산을 진행하여 신경망 연산 결과를 얻는다. 상기 훈련 장치는 훈련 데이터의 소수점 위치가 표시하는 데이터 정확도 범위를 벗어나는 신경망 연산 결과에 대하여 랜덤 반올림 조작을 진행하여 반올림 후의 신경망 연산 결과를 얻으며, 상기 신경망 연산 결과는 상기 훈련 데이터의 소수점 위치가 표시하는 데이터 정확도 범위 내에 있다. 상기 훈련 장치는 상술한 방법으로 다중 레이어 신경망의 각 레이어의 신경망 연산 결과, 즉 출력 뉴런을 획득한다. 상기 훈련 장치는 각 레이어의 출력 뉴런에 따라 출력 뉴런의 기울기를 얻고, 상기 출력 뉴런의 기울기에 따라 역방향 연산을 진행하여 가중치 기울기를 얻으며, 상기 가중치 기울기에 따라 신경망 모델의 가중치를 갱신한다.
상기 훈련 장치는 상기 과정을 반복적으로 수행하여 신경망 모델을 훈련시키는 목적을 달성한다.
순방향 연산과 역방향 훈련을 진행하기 전에, 상기 계산 장치는 순방향 연산에 참여하는 데이터에 대하여 데이터 변환을 진행하고 역방향 훈련에 참여하는 데이터에 대하여 데이터 변환을 진행하지 않거나, 또는 상기 계산 장치는 순방향 연산에 참여하는 데이터에 대하여 데이터 변환을 진행하지 않고 역방향 훈련에 참여하는 데이터에 대하여 데이터 변환을 진행하며, 또는 상기 계산 장치는 순방향 연산에 참여하는 데이터와 역방향 훈련에 참여하는 데이터에 대하여 모두 데이터 변환을 진행하고, 구체적인 데이터 변환 과정은 상술한 관련 실시예의 설명을 참조할 수 있으며, 여기서 상세히 설명하지 않는다.
여기서, 상기 순방향 연산은 상기 다중 레이어 신경망 연산을 포함하고, 상기 다중 레이어 신경망 연산은 컨벌루션 등 연산을 포함하며, 상기 컨벌루션 연산은 컨벌루션 연산 명령에 의해 실현된다.
상기 컨벌루션 연산 명령은 Cambricon 명령 세트 중의 명령이고, 상기 Cambricon 명령 세트의 특징은 명령이 연산 코드와 피연산자로 구성되는 것이며, 명령 세트는 네가지 유형의 명령, 즉 제어 명령(control instructions), 데이터 전송 명령(data transfer instructions), 연산 명령(computational instructions) 및 논리 명령(logical instructions)을 포함한다.
바람직하기로는, 명령 세트의 각 명령의 길이는 고정 길이이다. 예를 들어, 명령 세트의 각 명령의 길이는 64 비트일 수 있다.
또한, 제어 명령은 실행 과정을 제어하는 데에 사용된다. 제어 명령은 점프(jump) 명령과 조건 분기(conditional branch) 명령을 포함한다.
또한, 데이터 전송 명령은 서로 다른 저장 매체 간의 데이터 전송을 완성하는 데에 사용된다. 데이터 전송 명령은 로드(load) 명령, 저장 (store) 명령, 운송(move) 명령을 포함한다. load 명령은 데이터를 메인 메모리에서 캐시로 로드하는 데에 사용된다. store 명령은 데이터를 캐시에서 메인 메모리로 저장하는 데에 사용된다. move 명령은 캐시와 캐시 사이에서, 또는 캐시와 레지스터 사이에서, 또는 레지스터와 레지스터 사이에서 데이터를 운송하는 데에 사용된다. 데이터 전송 명령은 행렬, 벡터 및 스칼라를 포함한 세 가지 상이한 데이터 구성 방식을 지지한다.
또한, 연산 명령은 신경망 산술 연산을 완성하는 데에 사용된다. 연산 명령은 행렬 연산 명령, 벡터 연산 명령 및 스칼라 연산 명령을 포함한다.
또한, 행렬 연산 명령은 신경망에서의 행렬 연산을 완성하고, 행렬 곱하기 벡터(matrix multiply vector), 벡터 곱하기 행렬(vector multiply matrix), 행렬 곱하기 스칼라(matrix multiply scalar), 외적(outer product), 행렬 곱하기 행렬(matrix add matrix), 행렬 덜기 행렬(matrix subtract matrix))을 포함한다.
또한, 벡터 연산 명령은 신경망에서의 벡터 연산을 완성하고, 벡터 기본 연산(vector elementary arithmetics), 벡터 초월 함수(vector transcendental functions), 내적(dot product), 랜덤 벡터 생성(random vector generator) 및 벡터의 최대치/최소치(maximum/minimum of a vector)를 포함한다. 여기서, 벡터 기본 연산은 벡터의 더하기, 덜기, 곱하기, 나누기(add, subtract, multiply, divide)를 포함하고, 벡터 초월 함수는 그 어떤 다항식을 계수로 하는 다항식 방정을 만족하지 않는 함수를 말하며, 지수 함수, 대수 함수, 삼각 함수, 역 삼각 함수를 포함하지만, 이것에 한정되지 않는다.
또한, 스칼라 연산 명령은 신경망에서의 스칼라 연산을 완성하고, 스칼라 기본 연산(scalar elementary arithmetics)과 스칼라 초월 함수(scalar transcendental functions)를 포함한다. 스칼라 기본 연산은 스칼라의 더하기, 덜기, 곱하기, 나누기(add, subtract, multiply, divide)를 포함하고, 스칼라 초월 함수는 그 어떤 다항식을 계수로 하는 다항식 방정을 만족하지 않는 함수를 말하며, 지수 함수, 대수 함수, 삼각 함수, 역 삼각 함수를 포함하지만, 이것에 한정되는 것은 아니다.
또한, 논리 명령은 신경망의 논리 연산에 사용된다. 논리 연산은 벡터 논리 연산 명령 및 스칼라 논리 연산 명령을 포함한다.
또한, 벡터 논리 연산 명령은 벡터 비교(vector compare), 벡터 논리 연산(vector logical operations)과 병합보다 큰 벡터(vector greater than merge)를 포함한다. 벡터 비교는 크고, 작고, 같고, 크거나 같고, 작거나 같고, 같지 않음을 포함하지만, 이것에 한정되는 것은 아니다. 벡터 논리 연산은 와, 또는, 비-를 포함한다.
또한, 스칼라 논리 연산은 스칼라 비교(scalar compare)와 스칼라 논리 연산(scalar logical operations)을 포함한다. 여기서, 스칼라 비교는 크고, 작고, 같고, 크거나 같고, 작거나 같고, 같지 않음을 포함하지만, 이것에 한정되는 것은 아니다. 스칼라 논리 연산은 와, 또는, 비-를 포함한다.
다층 신경망인 경우, 그 실현과정은, 순방향 연산에서 그 전 레이어의 인공 신경망의 연산이 완료되면, 다음 레이어의 연산 명령은 연산 유닛에서 계산된 출력 뉴런을 다음 레이어의 입력 뉴런으로 하여 연산을 진행하며(또는 상기 출력 뉴런에 대하여 일부 조작을 진행하여 다음 레이어의 입력 뉴런으로 한다), 이와 동시에 가중치도 다음 레이어의 가중치로 대체하며; 역방향 연산에서, 그 전 레이어의 인공 신경망의 역방향 연산이 완료되면, 다음 레이어의 연산 명령은 연산 유닛에서 계산된 입력 뉴런 기울기를 다음 레이어의 출력 뉴런 기울기로 하여 연산을 진행하며(또는 상기 입력 뉴런 기울기에 대하여 일부 조작을 진행하여 다음 레이어의 출력 뉴런 기울기로 한다), 이와 동시에 가중치도 다음 레이어의 가중치로 대체한다. 도 5에 도시된 바와 같이, 도 5의 점선으로 표시된 화살표는 역방향 연산을 나타내고, 실선으로 표시된 화살표는 순방향 연산을 나타낸다.
다른 실시예에 있어서, 상기 연산 명령은 행렬 곱하기 행렬의 명령, 누적 명령, 활성화 명령 등 계산 명령이며, 순방향 연산 명령과 방향 훈령 명령을 포함한다.
이하, 신경망 연산 명령에 의해 도 3a에 도시된 계산 장치의 구체적인 계산 방법을 설명한다. 신경망 연산 명령에 대해, 실제로 실행해야 하는 공식은
Figure 112019098173787-pat00286
일 수 있고, 여기서, 가중치
Figure 112019098173787-pat00287
에 입력 데이터
Figure 112019098173787-pat00288
를 곱하고, 합계를 구한 다음에 오프셋
Figure 112019098173787-pat00289
를 더하여 활성화 연산
Figure 112019098173787-pat00290
을 진행하여 최종 출력 결과
Figure 112019098173787-pat00291
를 얻는다.
도 3a에 도시된 계산 장치가 신경망 순방향 연산 명령을 실행하는 방법은 구체적으로 다음과 같다.
변환 유닛(13)이 상기 제 1 입력 데이터에 대하여 데이터 유형 변환을 진행한 다음에, 컨트롤러 유닛(11)은 명령 버퍼 유닛(110)으로부터 신경망 순방향 동작 명령, 신경망 연산 명령에 대응하는 연산 도메인 및 적어도 하나의 연산 코드를 획득하며, 컨트롤러 유닛(11)은 연산 도메인을 데이터 액세스 유닛에 전송하고, 적어도 하나의 연산 코드를 연산 유닛(12)에 송신한다.
컨트롤러 유닛(11)은 기억 유닛(10)으로부터 상기 연산 도메인에 대응하는 가중치w와 오프셋b(b가 0일 경우, 오프셋b를 획득할 필요가 없다)를 획득하고, 가중치w와 오프셋b를 연산 유닛의 마스터 처리 회로(101)에 전송하며, 컨트롤러 유닛(11)은 기억 유닛(10)으로부터 입력 데이터Xi를 획득하고, 상기 입력 데이터Xi를 마스터 처리 회로(101)에 전송한다.
마스터 처리 회로(101)는 입력 데이터Xi를 n개의 데이터 블록으로 분할하고;
컨트롤러 유닛(11)의 명령 처리 유닛(111)은 상기 적어도 하나의 연산 코드에 따라 승산 명령, 오프셋 명령 및 누적 명령을 확정하고, 승산 명령, 오프셋 명령 및 누적 명령을 마스터 처리 회로(101)에 전송하며, 마스터 처리 회로(101)는 상기 승산 명령, 가중치w를 방송 방식으로 복수개의 슬레이브 처리 회로(102)로 송신하며, 상기 n개의 데이터 블록을 상기 복수개의 슬레이브 처리 회로(102)에 나누어 주며(예를 들면, n개의 슬레이브 처리 회로(102)를 포함하고, 각 슬레이브 처리 회로(102)에 하나의 데이터 블록을 송신한다); 복수개의 슬레이브 처리 회로(102)는 상기 승산 명령에 따라 상기 가중치w와 수신된 데이터 블록에 대하여 곱셈 연산을 진행하여 중간 결과를 얻고, 상기 중간 결과를 마스터 처리 회로(101)에 송신하는 데에 사용되며, 상기 마스터 처리 회로(101)는 상기 누적 명령에 따라 복수개의 슬레이브 처리 회로(102)로부터 송신된 중간 결과에 대하여 누적 연산을 진행하여 누적 결과를 얻고, 상기 오프셋 명령에 따라 상기 누적 결과에 오프셋b를 더하여 최종 결과를 얻으며, 상기 최종 결과를 컨트롤러 유닛(11)에 송신한다.
또한, 덧셈 연산과 곱셈 연산의 순서는 바뀔 수 있다.
상기 계산 장치가 신경망 역방향 훈련 명령을 실행하는 방법은 상기 계산 장치가 신경망 순방향 연산 명령을 실행하는 과정과 유사하며, 구체적으로 상기 역방향 훈령에 관련된 설명을 참조할 수 있으며, 여기서 상세히 설명하지 않는다.
본 출원에서 제공하는 기술적 방안은 하나의 명령, 즉 신경망 연산 명령에 의해 신경망의 곱셈 연산과 오프셋 연산을 실현하고, 신경망 계산의 중간 결과를 저장하거나 획득할 필요가 없으므로, 중간 데이터의 저장 및 획득 작업을 감소할 수 있으며, 따라서 대응하는 조작 단계를 감소하고, 신경망의 계산 효과를 개선하는 이점을 갖는다.
본 출원은 또한 기계 학습 연산 장치를 개시하고, 본 출원에서 개시된 하나 또는 복수개의 계산 장치를 포함하며, 다른 처리 장치에서 계산할 데이터 및 제어 정보를 획득하고, 지정된 기계 학습 연산을 실행하며, I/O 인터페이스를 통해 실행 결과를 주변 장치로 전달하는 데에 사용된다. 주변 장치는 카메라, 표시 장치, 마우스, 키보드, 네트워크 카드, wifi 인터페이스, 서버와 같다. 하나 이상의 계산 장치가 포함되는 경우, 계산 장치는 특정 구조를 통해 연결되어 데이터를 전송할 수 있고, 예를 들면, PCIE 버스를 통해 상호 연결되어 데이터를 전송할 수 있으며, 따라서 더 큰 규모의 기계 학습 연산을 지지하도록 한다. 이 시점에서 동일한 제어 시스템을 공유하거나, 각자로 독립적인 제어 시스템을 가질 수도 있으며; 메모리를 공유할 수 있고, 각 가속기는 각자로 메모리를 가질 수도 있다. 또한 상호 연결 방법은 임의의 상호 연결 토폴로지일 수 있다.
상기 기계 학습 연산 장치는 높은 호환성을 가지며, PCIE 인터페이스를 통해 다양한 유형의 서버에 연결될 수 있다.
본 출원은 또한 결합 처리 장치를 개시한다. 결합 처리 장치는 상기 기계 학습 연산 장치, 범용 상호 연결 인터페이스 및 다른 처리 장치를 포함한다. 기계 학습 연산 장치는 다른 처리 장치와 상호 작용하여 사용자가 지정한 조작을 함께 완성한다. 도 6은 결합 처리 장치의 구조를 나타내는 도면이다.
다른 처리 장치는 중앙 처리 장치 CPU, 그래픽 처리 장치 GPU, 기계 학습 처리 장치 등과 같은 범용/전용 처리 장치 중의 하나 또는 하나 이상의 처리 장치 유형을 포함한다. 다른 처리 장치가 포함하는 처리 장치의 수량은 한정되지 않는다. 다른 처리 장치는 기계 학습 연산 장치와 외부 사이에서 데이터와 제어 명령을 전송하기 위한 인터페이스로서, 데이터를 수송하고, 기계 학습 연산 장치에 대한 온/오프 등 기본 제어를 완성한다. 다른 처리 장치는 기계 학습 연산 장치와 공동으로 연산 임무를 완성할 수도 있다.
범용 상호 연결 인터페이스는 상기 기계 학습 연산 장치와 다른 처리 장치 사이에서 데이터와 제어 명령을 전송하는 데에 사용된다. 상기 기계 학습 연산 장치는 다른 처리 장치로부터 필요한 입력 데이터를 획득하여 기계 학습 연산 장치의 기억 장치에 기록하며; 다른 처리 장치로부터 제어 명령을 획득하여 기계 학습 연산 장치의 제어 캐시에 기록할 수 있으며; 기계 학습 연산 장치의 저장 모듈에서 데이터를 판독하여 다른 처리 장치에 전송할 수도 있다.
선택적으로, 도 7에 도시된 바와 같이, 상기 구조는 기억 장치를 더 포함할 수 있고, 기억 장치는 상기 기계 학습 연산 장치와 상기 다른 처리 장치에 각각 연결된다. 기억 장치는 상기 기계 학습 연산 장치와 상기 다른 처리 장치의 데이터를 기억하는 데에 사용되고, 특히 연산이 필요한 데이터가 기계 학습 연산 장치 또는 다른 처리 장치의 내부 저장소에 모두 저장할 수 없는 데이터에 적합하다.
상기 결합 처리 장치는 휴대폰, 로봇, 무인 항공기, 비디오 모니터링 장치 등 장치의 SOC 온-칩 시스템으로 사용될 수 있으며, 제어 부분의 노심 영역을 효과적으로 줄이고, 처리 속도를 높이며, 전체 전력 소비를 줄인다. 이런 상황에서, 상기 결합 처리 장치의 범용 상호 연결 인터페이스는 장치의 일부 부품과 연결된다. 일부 부품은 예를 들어, 카메라, 표시 장치, 마우스, 키보드, 네트워크 카드, wifi 인터페이스와 같다.
가능한 실시예에 있어서, 또한 분산 시스템을 개시하고, 상기 시스템은 n1개의 마스터 프로세서와 n2개의 보조 프로세서를 포함하며, n1은 0보다 크거나 같은 정수이고, n2는 1보다 크거나 같은 정수이다. 상기 시스템은 다양한 유형의 토폴로지 구조일 수 있고, 도 3b에 도시된 토폴로지 구조, 도 3c에 도시된 토폴로지 구조, 도 11에 도시된 토폴로지 구조와 도 12에 도시된 토폴로지 구조를 포함하지만, 이것에 한정되는 것은 아니다.
상기 마스터 프로세서는 입력 데이터 및 그의 소수점 위치와 계산 명령을 상기 복수개의 보조 프로세서에 송신하고; 또는 상기 마스터 프로세서는 상기 입력 데이터 및 그의 소수점 위치와 계산 명령을 상기 복수개의 보조 프로세서 중의 일부 보조 프로세서에 송신하며, 상기 일부 보조 프로세서는 상기 입력 데이터 및 그의 소수점 위치와 계산 명령을 다른 보조 프로세서에 송신한다. 상기 보조 프로세서는 상기 계산 장치를 포함하고, 상기 계산 장치는 상기 방법과 계산 명령에 따라 상기 입력 데이터에 대하여 연산을 진행하여 연산 결과를 얻는다. 여기서, 상기 입력 데이터는 입력 뉴런, 가중치와 오프셋 데이터 등을 포함하지만, 이것에 한정되는 것은 아니다.
상기 보조 프로세서는 연산 결과를 직접 상기 마스터 프로세서에 송신하거나, 또는 마스터 프로세서와 연결 관계가 없는 보조 프로세서는 연산 결과를 먼저 마스터 프로세서와 연결 관계가 있는 보조 프로세서에 송신한 다음에, 상기 보조 프로세서는 수신된 연산 결과를 상기 마스터 프로세서에 송신한다.
일부 실시예에 있어서, 상기 기계 학습 연산 장치 또는 결합 처리 장치를 포함하는 칩이 더 청구된다.
일부 실시예에 있어서, 상기 칩을 포함하는 칩 패키지 구조가 청구된다.
일부 실시예에 있어서, 상기 칩 패키지 구조를 포함하는 보드 카드가 청구된다.
일부 실시예에 있어서, 상기 보드 카드를 포함하는 전자 장치가 청구된다. 도 8을 참조하면, 도 8은 보드 카드를 제공하며, 상기 보드 카드는 상기 칩(389) 외에 다른 보조 부품을 더 포함할 수 있고, 상기 보조 부품은 기억 장치(390), 인터페이스 장치(391) 및 제어 장치(392)를 포함하지만, 이것에 한정되는 것은 아니다. 상기 기억 장치(390)는 버스를 통해 상기 칩 패키지 구조 내의 칩에 연결되고, 데이터를 기억하는 데에 사용된다. 상기 기억 장치는 여러 조의 기억 유닛(393)을 포함할 수 있다. 각 조의 상기 기억 유닛은 버스를 통해 상기 칩에 연결된다. 각 조의 상기 기억 유닛은 DDR SDRAM(영어: Double Data Rate SDRAM, 더블 속도 동기 동적 랜덤 메모리)일 수 있다는 것을 이해할 수 있다.
DDR는 클럭 주파수를 높이지 않아도 SDRAM의 속도를 배로 높일 수 있다. DDR은 클록 펄스의 상승 및 하강 에지에서 데이터를 판독할 수 있도록 한다. DDR의 속도는 표준 SDRAM의 두배이다. 일 실시예에 있어서, 상기 기억 장치는 4조의 상기 기억 유닛을 포함할 수 있다. 각 조의 상기 기억 유닛은 복수개의 DDR4입자(칩)을 포함할 수 있다. 일 실시예에 있어서, 상기 칩 내부에 4개의 72 비트 DDR4 컨트롤러를 포함할 수 있고, 상기 72 비트 DDR4컨트롤러의 64 비트는 데이터 전송에 사용되며, 8 비트는 ECC 검증에 사용된다. 각 조의 상기 기억 유닛이 DDR4-3200입자를 사용할 경우, 데이터 전송의 이론적 대역폭은 25600MB/s에 도달할 수 있음을 이해할 수 있다.
일 실시예에 있어서, 각 조의 상기 기억 유닛은 병렬로 설치된 복수개의 DDR SDRAM를 포함한다. DDR는 한 클럭 사이클 내에 데이터을 두번 전송할 수 있다. 상기 칩 내에 DDR을 제어하는 컨트롤러를 설치하고, 각 상기 기억 유닛의 데이터 전송 및 데이터 저장을 제어하는 데에 사용된다.
인터페이스 장치는 칩 패키지 구조 내의 칩에 전기적으로 접속된다. 상기 인터페이스 장치는 상기 칩과 외부 장치(예를 들면, 서버 또는 컴퓨터) 사이의 데이터 전송을 실현하는 데에 사용된다. 예를 들면, 일 실시예에 있어서, 상기 인터페이스 장치는 표준 PCIE 인터페이스 일 수 있다. 예를 들면, 처리될 데이터는 서버로부터 표준 PCIE 인터페이스를 통해 상기 칩으로 전송되어 데이터 전이를 실현한다. 바람직하기로는, PCIE 3.0 X 16 인터페이스를 통해 전송할 때, 이론적인 대역폭은 16000MB/s에 도달할 수 있다. 다른 실시예에 있어서, 상기 인터페이스 장치는 또한 다른 인터페이스일 수 있다. 본 출원은 상기 다른 인터페이스의 구체적인 표현형식을 제한하지 않으며, 인터페이스 유닛은 접속 기능을 실현할 수 있으면 된다. 또한 상기 칩의 계산 결과는 여전히 상기 인터페이스 장치에 의해 외부 장치(예를 들면, 서버)로 전송된다.
상기 제어 장치는 상기 칩에 전기적으로 연결된다. 상기 제어 장치는 상기 칩의 상태를 모니터링하는 데에 사용된다. 구체적으로, 상기 칩과 상기 제어 장치는 SPI 인터페이스를 통해 전기적으로 연결될 수 있다. 상기 제어 장치는 컨트롤러 유닛(Micro Controller Unit, MCU)을 포함할 수 있다. 상기 칩이 복수개의 처리 칩, 복수개의 처리 코어 또는 복수개의 처리 회로를 포함할 수 있다면, 복수개의 로드를 구동할 수 있다. 따라서 상기 칩은 많은 로드 및 적은 로드와 같은 서로 다른 작동 상태에 있을 수 있다. 상기 제어 장치에 의해 상기 칩 내의 복수개의 처리 칩, 복수개의 처리 코어 또는 복수개의 처리 회로의 동작 상태를 제어할 수 있다.
전자 장치는 데이터 처리 장치, 로봇, 컴퓨터, 프린터, 스캐너, 태블릿, 스마트 단말기, 휴대폰, 운전 기록 장치, 내비게이터, 센서, 카메라, 서버, 클라우드 서버, 사진기, 비디오 카메라, 프로젝터, 손목시계, 헤드폰, 휴대용 저장장치, 착용형 장치, 교통 수단, 가전 제품 및/또는 의료 장비를 포함한다.
상기 교통 수단은 비행기, 선박 및/또는 차량을 포함하고, 상기 가전 제품은 텔레비전, 에어컨, 전자 렌지, 냉장고, 전기 밥솥, 가습기, 세탁기, 전등, 가스 렌지, 레인지 후드를 포함하며, 상기 의료 장치는 핵 자기 공명 설비, B- 초음파 설비 및/또는 심전도 설비를 포함한다.
도 9를 참조하면, 도 9는 본 발명의 실시예에 따른 기계 학습 계산을 실행하는 방법의 흐름도이고, 상기 방법은 다음과 같은 단계를 포함한다.
S901, 계산 장치는 제 1 입력 데이터 및 계산 명령을 획득한다.
여기서, 상기 제 1 입력 데이터는 입력 뉴런과 가중치를 포함한다.
S902, 계산 장치는 상기 계산 명령을 분석하여 데이터 변환 명령과 복수개의 연산 명령을 얻는다.
여기서, 상기 데이터 변환 명령은 연산 도메인과 연산 코드를 포함하고, 상기 연산 코드는 상기 데이터 유형 변환 명령의 기능을 나타내는 데에 사용되고, 상기 데이터 유형 변환 명령의 연산 도메인은 소수점 위치, 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식을 포함한다.
S903, 계산 장치는 상기 데이터 변환 명령에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하고, 상기 제 2 입력 데이터는 고정 소수점 데이터이다.
여기서, 상기 데이터 변환 명령에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하는 것은,
상기 데이터 변환 명령을 분석하여 상기 소수점 위치, 상기 제 1 입력 데이터의 데이터 유형을 나타내는 플래그 비트 및 데이터 유형의 변환 방식을 얻는 단계;
상기 제 1 입력 데이터의 데이터 유형 플래그 비트에 따라 상기 제 1 입력 데이터의 데이터 유형을 확정하는 단계;
상기 소수점 위치와 상기 데이터 유형의 변환 방식에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하는 단계를 포함하고,
상기 제 2 입력 데이터의 데이터 유형과 상기 제 1 입력 데이터의 데이터 유형은 다르다.
여기서, 상기 제 1 입력 데이터와 상기 제 2 입력 데이터는 모두 고정 소수점 데이터일 경우, 상기 제 1 입력 데이터의 소수점 위치와 상기 제 2 입력 데이터의 소수점 위치는 일치하지 않다.
가능한 실시예에 있어서, 상기 제 1 입력 데이터가 고정 소수점 데이터일 경우, 상기 방법은, 상기 제 1 입력 데이터의 소수점 위치에 따라 하나 또는 복수개의 중간 결과의 소수점 위치를 도출하고, 여기서, 상기 하나 또는 복수개의 중간 결과는 상기 제 1 입력 데이터에 따라 연산하여 얻은 것이다.
S904, 계산 장치는 상기 복수개의 연산 명령에 따라 상기 제 2 입력 데이터에 대한 연산을 실행하여 계산 명령의 결과를 얻는다.
여기서, 상기 연산 명령은 순방향 연산 명령 및 역방향 훈련 명령을 포함하고, 즉 상기 계산 장치가 순방향 연산 명령 및/또는 역방향 훈련 명령을 실행하는(즉, 상기 계산 장치가 순방향 연산 및/또는 역방향 훈련을 실행한다) 과정에서, 상기 연산 장치는 상기 도 9에 도시된 실시예에 따라 계산에 참여하는 데이터를 고정 소수점 데이터로 변환하고, 고정 소수점 연산을 실행할 수 있다.
상기 단계 S901~S904의 구체적인 설명은 도 1~8에 도시된 실시예의 관련된 설명을 참조할 수 있으며, 여기서 구체적으로 설명하지 않는다.
특정 응용 정황에서, 상기 계산 장치는 연산에 참여하는 데이터를 고정 소수점 데이터로 변환하고, 또한 고정 소수점 데이터의 소수점 위치를 조정하며, 구체적인 과정은 도 10을 참조할 수 있다. 도 10에 도시된 바와 같이, 상기 방법은 다음과 같은 단계를 포함한다.
S1001, 계산 장치는 제 1 입력 데이터를 획득한다.
여기서, 상기 제 1 입력 데이터는 다중 레이어 네트워크 모델의 제 m 번째 레이어의 연산에 참여하는 데이터이고, 상기 제 1 입력 데이터는 임의의 유형의 데이터이다. 예를 들어, 상기 제 1 입력 데이터는 고정 소수점 데이터, 부동 소수점 데이터, 정수 데이터 또는 이산 데이터이고, m은 0보다 큰 정수이다.
여기서, 상기 다중 레이어 네트워크 모델의 제 m 번째 레이어는 선형 레이어이고, 선형 레이어는 컨벌루션 레이어와 완전히 연결된 레이어를 포함하지만, 이것에 한정되는 것은 아니다. 상기 제 1 입력 데이터는 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수 및 출력 뉴런 도함수를 포함한다.
S1002, 계산 장치는 제 1 입력 데이터의 소수점 위치와 고정 소수점 데이터의 비트 폭을 확정한다.
여기서, 상기 제 1 입력 데이터의 고정 소수점 데이터의 비트 폭은 고정 소수점 데이터로 표시되는 제 1 입력 데이터가 차지하는 비트이고, 상기 소수점 위치는 고정 소수점 데이터로 표시되는 제 1 입력 데이터의 소수부가 차지하는 비트이다. 상기 소수점 위치는 고정 소수점 데이터의 정밀도를 표징하는 데에 사용된다. 구체적으로 도 2a에 관련된 설명을 참조하라.
구체적으로, 제 1 입력 데이터는 임의의 유형의 데이터일 수 있고, 상기 제 1 입력 데이터 a는 상기 소수점 위치와 고정 소수점 데이터의 비트 폭에 따라 제 2 입력
Figure 112019098173787-pat00292
로 변환된다. 구체적으로 다음과 같다.
Figure 112019098173787-pat00293
여기서, 상기 제 1 입력 데이터 a가 조건
Figure 112019098173787-pat00294
을 만족할 때, 상기 제 2 입력 데이터
Figure 112019098173787-pat00295
Figure 112019098173787-pat00296
이고, 상기 제 1 입력 데이터 a가 데이터이며,
Figure 112019098173787-pat00297
Figure 112019098173787-pat00298
보다 클 경우, 상기 제 2 입력 데이터
Figure 112019098173787-pat00299
Figure 112019098173787-pat00300
이고, 상기 제 1 입력 데이터 a가
Figure 112019098173787-pat00301
보다 작을 경우, 상기 제 2 입력 데이터
Figure 112019098173787-pat00302
Figure 112019098173787-pat00303
이다.
가능한 실시예에 있어서, 컨벌루션 레이어와 완전히 연결된 레이어의 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 출력 뉴런 도함수 및 가중치 도함수는 모두 고정 소수점 데이터로 표시된다.
선택적으로, 상기 입력 뉴런이 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 입력 뉴런이 채용하는 고정 소수점 데이터의 비트 폭은 8이다.
선택적으로, 상기 가중치가 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 가중치가 채용하는 고정 소수점 데이터의 비트 폭은 8이다.
선택적으로, 상기 입력 뉴런 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 입력 뉴런 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 16이다.
선택적으로, 상기 출력 뉴런 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 출력 뉴런 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 24이다.
선택적으로, 상기 가중치 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 8, 16, 32, 64 또는 다른 값일 수 있다. 또한 상기 가중치 도함수가 채용하는 고정 소수점 데이터의 비트 폭은 24이다.
일 실시예에 있어서, 상기 다중 레이어 네트워크 모델 연산에 참여하는 데이터 중에서 수치가 비교적 큰 데이터 a에 대하여, 다양한 고정 소수점 표시 방법이 사용될 수 있다. 구체적으로 도 2b에 관련된 설명을 참조하라.
구체적으로, 제 1 입력 데이터는 임의의 유형의 데이터일 수 있고, 상기 제 1 입력 데이터 a는 상기 소수점 위치와 고정 소수점 데이터의 비트 폭에 따라 제 2 입력 데이터
Figure 112019098173787-pat00304
로 변환된다. 구체적으로 다음과 같다.
Figure 112019098173787-pat00305
여기서, 상기 제 1 입력 데이터 a가 조건
Figure 112019098173787-pat00306
을 만족할 때, 상기 제 2 입력 데이터
Figure 112019098173787-pat00307
Figure 112019098173787-pat00308
이고, 또한
Figure 112019098173787-pat00309
,
Figure 112019098173787-pat00310
이며, 상기 제 1 입력 데이터 a가
Figure 112019098173787-pat00311
보다 클 경우, 상기 제 2 입력 데이터
Figure 112019098173787-pat00312
Figure 112019098173787-pat00313
이고, 상기 제 1 입력 데이터 a가
Figure 112019098173787-pat00314
보다 작을 경우, 상기 제 2 입력 데이터
Figure 112019098173787-pat00315
Figure 112019098173787-pat00316
이다.
S1003, 상기 계산 장치는 제 1 입력 데이터의 소수점 위치를 초기화하고 제 1 입력 데이터의 소수점 위치를 조정한다.
여기서, 상기 소수점 위치 s는 상이한 유형의 데이터, 상이한 신경망층의 데이터, 상이한 반복 순번에 있는 데이터에 따라 초기화하고 동적으로 조정해야 한다.
아래, 제 1 입력 데이터의 소수점 위치 s의 초기화 과정, 즉 제 1 입력 데이터가 최초로 변환될 때에 고정 소수점 데이터가 채용하는 소수점 위치 s를 확정하는 것을 구체적으로 설명한다.
여기서, 상기 계산 장치가 상기 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것은, 제 1 입력 데이터의 절대치의 최대치에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것; 제 1 입력 데이터의 절대치의 최소치에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것; 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것; 경험치 상수에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화하는 것을 포함한다.
구체적으로, 아래 상술한 초기화 과정에 대하여 구체적으로 설명한다.
a) 상기 계산 장치는 제 1 입력 데이터의 절대치의 최대치에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
구체적으로, 상기 계산 장치는 아래 공식에 따라 상기 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
Figure 112019098173787-pat00317
여기서, 상기
Figure 112019098173787-pat00318
는 상기 제 1 입력 데이터의 절대치의 최대치이고, 상기
Figure 112019098173787-pat00319
는 상기 제 1 입력 데이터가 고정 소수점 데이터로 변환된 비트 폭이며, 상기
Figure 112019098173787-pat00320
는 상기 제 1 입력 데이터의 소수점 위치이다.
여기서, 연산에 참여하는 데이터는 유형과 네트워크 계층에 따라 제
Figure 112019098173787-pat00321
층의 입력 뉴런
Figure 112019098173787-pat00322
, 출력 뉴런
Figure 112019098173787-pat00323
, 가중치
Figure 112019098173787-pat00324
, 입력 뉴런 도함수
Figure 112019098173787-pat00325
, 출력 뉴런 도함수
Figure 112019098173787-pat00326
와 가중치 도함수
Figure 112019098173787-pat00327
로 나눌 수 있다. 절대치 최대치를 찾을 때, 데이터 유형에 따라 찾을 수 있고; 층별로, 유형별로 찾을 수 있으며; 층별로, 유형별로, 그룹별로 찾을 수 있다. 제 1 입력 데이터의 절대치의 최대치를 확정하는 방법은 다음과 같다.
a.1) 상기 계산 장치는 데이터 유형에 따라 절대치 최대치를 찾는다
구체적으로, 제 1 입력 데이터의 벡터/행렬 중의 각 요소는
Figure 112019098173787-pat00328
이다. 여기서, 상기
Figure 112019098173787-pat00329
는 입력 뉴런
Figure 112019098173787-pat00330
또는 출력 뉴런
Figure 112019098173787-pat00331
또는 가중치
Figure 112019098173787-pat00332
또는 입력 뉴런 도함수
Figure 112019098173787-pat00333
또는 출력 뉴런 도함수
Figure 112019098173787-pat00334
또는 가중치 도함수
Figure 112019098173787-pat00335
일 수 있다. 다시 말하면, 상기 제 1 입력 데이터는 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수를 포함한다. 상기 제 1 입력 데이터의 소수점 위치는 입력 뉴런의 소수점 위치, 가중치의 소수점 위치, 출력 뉴런의 소수점 위치, 입력 뉴런 도함수의 소수점 위치, 가중치 도함수의 소수점 위치와 출력 뉴런 도함수의 소수점 위치를 포함한다. 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수는 모두 행렬 또는 벡터 형식으로 표시된다. 상기 계산 장치는 상기 다중 레이어 네트워크 모델의 각 레이어의 벡터/행렬 내의 모든 요소를 두루 누비여 각 유형 데이터의 절대치 최대치를 획득
Figure 112019098173787-pat00336
이고, 공식
Figure 112019098173787-pat00337
에 의해 각 유형 데이터a가 고정 소수점 데이터로 변환된 소수점 위치
Figure 112019098173787-pat00338
를 확정한다.
a.2) 상기 계산 장치는 층별로, 유형별로 절대치 최대치를 찾는다
구체적으로, 제 1 입력 데이터의 벡터/행렬 중의 각 요소는
Figure 112019098173787-pat00339
이다. 여기서, 상기
Figure 112019098173787-pat00340
는 입력 뉴런
Figure 112019098173787-pat00341
또는 출력 뉴런
Figure 112019098173787-pat00342
또는 가중치
Figure 112019098173787-pat00343
또는 입력 뉴런 도함수
Figure 112019098173787-pat00344
또는 출력 뉴런 도함수
Figure 112019098173787-pat00345
또는 가중치 도함수
Figure 112019098173787-pat00346
일 수 있다. 다시 말하면, 상기 다중 레이어 네트워크 모델의 각 레이어는 모두 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수를 포함한다. 상기 제 1 입력 데이터의 소수점 위치는 입력 뉴런의 소수점 위치, 가중치의 소수점 위치, 출력 뉴런의 소수점 위치, 입력 뉴런 도함수의 소수점 위치, 가중치 도함수의 소수점 위치와 출력 뉴런 도함수의 소수점 위치를 포함한다. 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수는 모두 행렬/벡터로 표시된다. 상기 계산 장치는 상기 다중 레이어 네트워크 모델의 각 레이어의 각 유형의 데이터의 벡터/행렬 중의 모든 요소를 두루 누비여 각 유형 데이터의 절대치 최대치를 획득하며, 즉
Figure 112019098173787-pat00347
이고, 공식
Figure 112019098173787-pat00348
에 의해 제 1 층의 각 유형의 데이터a의 소수점 위치
Figure 112019098173787-pat00349
를 확정한다.
a.3) 상기 계산 장치는 층별로, 유형별로, 그룹별로 절대치 최대치를 찾는다
구체적으로, 제 1 입력 데이터의 벡터/행렬 중의 각 요소는
Figure 112019098173787-pat00350
이다. 그 중
Figure 112019098173787-pat00351
또는 출력 뉴런
Figure 112019098173787-pat00352
또는 가중치
Figure 112019098173787-pat00353
또는 입력 뉴런 도함수
Figure 112019098173787-pat00354
또는 출력 뉴런 도함수
Figure 112019098173787-pat00355
또는 가중치 도함수
Figure 112019098173787-pat00356
일 수 있다. 다시 말하면, 상기 다중 레이어 네트워크 모델의 각 레이어의 데이터 유형은 입력 뉴런, 가중치, 출력 뉴런, 입력 뉴런 도함수, 가중치 도함수와 출력 뉴런 도함수를 포함한다. 상기 계산 장치는 상기 다중 레이어 네트워크 모델의 각 레이어의 각 유형의 데이터를 g그룹으로 나누거나, 또는 다른 임의의 그룹별 규칙에 따라 그룹을 나눈다. 그 다음에 상기 다중 레이어 네트워크 모델의 각 레이어의 각 유형의 데이터에 대응되는 g그룹의 데이터의 각 그룹의 데이터의 각 원소를 두루 누비여, 상기 그룹의 데이터 중에서 절대치가 가장 큰 원소를 획득하며, 즉
Figure 112019098173787-pat00357
이고, 공식
Figure 112019098173787-pat00358
에 의해 각 레이어의 모든 데이터 유형에 대응되는 g그룹의 데이터의 각 그룹의 소수점 위치
Figure 112019098173787-pat00359
를 확정한다.
여기서, 상기 임의의 그룹별 규칙은 데이터 범위에 따라 그룹을 나누거나, 데이터 훈련 차례에 따라 그룹을 나누는 등 규칙을 포함하지만, 이것에 한정되는 것은 아니다.
b) 상기 계산 장치는 제 1 입력 데이터의 절대치 최소치에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
구체적으로, 상기 계산 장치는 계량화될 데이터의 절대치 최소치
Figure 112019098173787-pat00360
를 찾고, 아래 공식에 의해 고정 소수점 정밀도 s를 확정한다.
Figure 112019098173787-pat00361
여기서, 상기
Figure 112019098173787-pat00362
는 상기 제 1 입력 데이터의 절대치 최소치이다.
Figure 112019098173787-pat00363
을 획득하는 과정은 구체적으로 상술한 단계 a.1), a.2), a.3)을 참조할 수 있다.
c) 상기 계산 장치는 제 1 입력 데이터의 상이한 데이터 유형들 간의 관계에 따라 상기 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
구체적으로, 다중 레이어 네트워크 모델의 임의의 한 레이어(예를 들면, 제 1 레이어)의 데이터 유형
Figure 112019098173787-pat00364
의 소수점 위치
Figure 112019098173787-pat00365
는 상기 계산 장치가 제 1 레이어의
Figure 112019098173787-pat00366
와 공식
Figure 112019098173787-pat00367
에 의해 확정된다.
여기서,
Figure 112019098173787-pat00368
Figure 112019098173787-pat00369
는 입력 뉴런
Figure 112019098173787-pat00370
또는 출력 뉴런
Figure 112019098173787-pat00371
또는 가중치
Figure 112019098173787-pat00372
또는 입력 뉴런 도함수
Figure 112019098173787-pat00373
또는 출력 뉴런 도함수
Figure 112019098173787-pat00374
또는 가중치 도함수
Figure 112019098173787-pat00375
일 수 있다. 여기서,
Figure 112019098173787-pat00376
Figure 112019098173787-pat00377
는 정상수이다.
d) 상기 계산 장치는 경험치 상수에 따라 제 1 입력 데이터의 소수점 위치 s를 초기화한다.
구체적으로, 상기 다중 레이어 네트워크 모델의 임의의 한 레이어(예를 들면, 제 1 레이어)의 데이터 유형
Figure 112019098173787-pat00378
의 소수점 위치
Figure 112019098173787-pat00379
Figure 112019098173787-pat00380
로 인공 설정할 수 있다. 여기서, c는 정상수이고, 상기 데이터 유형
Figure 112019098173787-pat00381
의 소수점 위치 에서, 상
Figure 112019098173787-pat00382
는 입력 뉴런
Figure 112019098173787-pat00383
또는 출력 뉴런
Figure 112019098173787-pat00384
또는 가중치
Figure 112019098173787-pat00385
또는 입력 뉴런 도함수
Figure 112019098173787-pat00386
또는 출력 뉴런 도함수
Figure 112019098173787-pat00387
또는 가중치 도함수
Figure 112019098173787-pat00388
일 수 있다.
또한, 상기 입력 뉴런의 소수점 위치 초기화 값과 출력 뉴런의 소수점 위치 초기화 값은 모두 [-8, 8]의 범위 내에서 선택할 수 있다. 가중치의 소수점 위치 초기화 값은 [-17, 8]의 범위 내에서 선택할 수 있다. 입력 뉴런 도함수의 소수점 위치 초기화 값과 출력 뉴런 도함수의 소수점 위치 초기화 값은 모두 [-40, -20]의 범위 내에서 선택할 수 있다. 가중치 도함수의 소수점 위치 초기화 값은 [-48, -12] 범위 내에서 선택할 수 있다.
아래, 상기 계산 장치가 데이터의 상기 소수점 위치 s를 동적으로 조정하는 방법을 구체적으로 설명한다.
상기 계산 장치가 소수점 위치 s를 동적으로 조정하는 방법은, s를 위로 조정하는 것(s가 커진다)과 s를 아래로 조정하는 것(s가 작아진다)을 포함한다. 구체적으로, 제 1 입력 데이터의 절대치 최대치에 따라 단일 단계로 위로 조정하는 것; 제 1 입력 데이터의 절대치 최대치에 따라 차츰차츰 위로 조정하는 것; 제 1 입력 데이터 분포에 따라 단일 단계로 위로 조정하는 것; 제 1 입력 데이터 분포에 따라 차츰차츰 위로 조정하는 것; 제 1 입력 데이터의 절대치 최대치에 따라 아래로 조정하는 것을 포함한다.
a) 상기 계산 장치는 제 1 입력 데이터 중의 데이터 절대치의 최대치에 따라 단일 단계로 위로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00389
이다고 가정하면, 상기 소수점 위치
Figure 112019098173787-pat00390
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00391
이다. 여기서,
Figure 112019098173787-pat00392
,
Figure 112019098173787-pat00393
이다. 상기 제 1 입력 데이터 중의 데이터 절대치의 최대치
Figure 112019098173787-pat00394
일 경우, 조정한 다음의 소수점 위치는
Figure 112019098173787-pat00395
이며, 그렇지 않으면 상기 소수점 위치를 조정하지 않고, 즉
Figure 112019098173787-pat00396
이다.
b) 상기 계산 장치는 제 1 입력 데이터 중의 데이터 절대치의 최대치에 따라 차츰차츰 위로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00397
이다고 가정하면, 상기 소수점 위
Figure 112019098173787-pat00398
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00399
이다. 여기서,
Figure 112019098173787-pat00400
,
Figure 112019098173787-pat00401
이다. 상기 제 1 입력 데이터 중의 데이터 절대치의 최대치
Figure 112019098173787-pat00402
일 경우, 조정한 다음의 소수점 위치는
Figure 112019098173787-pat00403
이며, 그렇지 않으면 상기 소수점 위치를 조정하지 않고, 즉
Figure 112019098173787-pat00404
이다.
c) 상기 계산 장치는 제 1 입력 데이터 분포에 따라 단일 단계로 위로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00405
이다고 가정하면, 상기 소수점 위치
Figure 112019098173787-pat00406
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00407
이다. 여기서,
Figure 112019098173787-pat00408
,
Figure 112019098173787-pat00409
이다. 절대치의 평균치
Figure 112019098173787-pat00410
와 절대치의 표준차
Figure 112019098173787-pat00411
와 같은 제 1 입력 데이터의 절대치의 통계량을 계산한다. 데이터의 최대 범위
Figure 112019098173787-pat00412
를 설정한다.
Figure 112019098173787-pat00413
일 경우,
Figure 112019098173787-pat00414
이고, 그렇지 않으면 상기 소수점 위치를 조정하지 않고, 즉
Figure 112019098173787-pat00415
이다.
또한, 상기 n은 2 또는 3일 수 있다.
d) 상기 계산 장치는 제 1 입력 데이터 분포에 따라 차츰차츰 위로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00416
이다고 가정하면, 상기 소수점 위
Figure 112019098173787-pat00417
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00418
이다. 여기서,
Figure 112019098173787-pat00419
,
Figure 112019098173787-pat00420
이다. 절대치의 평균치
Figure 112019098173787-pat00421
와 절대치의 표준차
Figure 112019098173787-pat00422
와 같은 제 1 입력 데이터의 절대치의 통계량을 계산한다. 데이터의 최대 범위
Figure 112019098173787-pat00423
를 설정하고, n은 3일 수 있다.
Figure 112019098173787-pat00424
일 경우,
Figure 112019098173787-pat00425
이고, 그렇지 않으면 상기 소수점 위치를 조정하지 않고, 즉
Figure 112019098173787-pat00426
이다.
e) 상기 계산 장치는 제 1 입력 데이터의 절대치 최대치에 따라 아래로 조정한다.
조정하기 전의 상기 소수점 위치가
Figure 112019098173787-pat00427
이다고 가정하면, 상기 소수점 위치
Figure 112019098173787-pat00428
에 대응하는 고정 소수점 데이터가 표시할 수 있는 데이터 범위는
Figure 112019098173787-pat00429
,
Figure 112019098173787-pat00430
이다. 상기 제 1 입력 데이터의 절대치 최대치
Figure 112019098173787-pat00431
이고, 또한
Figure 112019098173787-pat00432
일 경우,
Figure 112019098173787-pat00433
이고, 여기서, n은 정상수이고,
Figure 112019098173787-pat00434
은 정수일 수 있고, -∞일 수도 있다.
또한, 상기 n은 3이고, 상기
Figure 112019098173787-pat00435
은 -64이다.
선택적으로, 상기 소수점 위치를 조정하는 빈도는, 제 1 입력 데이터의 소수점 위치를 절대로 조정하지 않거나; 또는 n개의 제 1 훈련 주기(즉, iteration)마다 한번 조정하고, n은 상수이며; 또는 n개의 제 2 훈련 주기(즉, epoch)마다 한번 조정하고, n은 상수이며; 또는 n개의 제 1 훈련 주기 또는 n개의 제 2 훈련 주기마다 제 1 입력 데이터의 소수점 위치를 한번 조정하고, n개의 제 1 훈련 주기 또는 제 2 훈련 주기마다 제 1 입력 데이터의 소수점 위치를 한번 조정하며, 그 다음에
Figure 112019098173787-pat00436
으로 조정하며, 여기서,
Figure 112019098173787-pat00437
는 1보다 크고; 또는 n개의 제 1 훈련 주기 또는 제 2 훈련 주기마다 제 1 입력 데이터의 소수점 위치를 한번 조정하며, 훈련 횟수가 증가됨에 따라 n을 점차 감소한다.
또한, 100개의 제 1 훈련 주기마다 입력 뉴런의 소수점 위치, 가중치의 소수점 위치 및 출력 뉴런의 소수점 위치를 한번 조정한다. 20개의 제 1 훈련 주기마다 입력 뉴런 도함수의 소수점 위치와 출력 뉴런 도함수의 소수점 위치를 한번 조정한다.
상기 제 1 훈련 주기는 일차수의 샘플을 훈련시키는데 필요한 시간이고, 제 2 훈련 주기는 모든 훈련 샘플을 한번 훈련시키는데 필요한 시간이다.
상기 데이터의 절대치의 평균치 또는 중간치에 따라 상기 데이터의 소수점 위치를 초기화하고 조정하는 것은, 구체적으로 데이터의 절대치의 최대치에 따라 상기 데이터의 소수점 위치를 초기화하고 조정하는 관련 설명을 참조할 수 있으며, 여기서 구체적으로 설명하지 않는다.
전술한 각 방법 실시예는, 간단히 설명하기 위하여, 모두 일련의 동작 조합으로 서술되지만, 당업자라면 본 출원은 서술된 동작 순서에 의해 제한되지 않음을 이해해여야 하며, 본 출원에 따르면, 일부 단계는 다른 순서나 또는 동시에 진행될 수 있기 때문이다. 또한, 당업자라면 본 명세서에 서술된 실시예는 모두 선택 가능한 실시예이고, 관련된 동작 및 모듈은 본 출원에서 반드시 요구되는 것이 아님을 이해하여야 한다.
상술한 실시예에 있어서, 각 실시예의 설명은 제각기 중점이 있으며, 그 어느 실시예에 있어서 구체적으로 설명되지 않은 부분은 다른 실시예의 관련 설명을 참조할 수 있다.
본 출원에서 제공되는 몇몇 실시예에 있어서, 개시된 장치는 다른 방식으로 구현할 수 있다는 것을 이해할 수 있다. 예를 들어, 상기 설명된 장치의 실시예는 단지 예시적인 것이며, 예를 들어, 유닛의 구분은 단지 논리적인 기능적 구분일 뿐이고, 실제 구현에서는 다른 구분 방식이 있을 수 있으며, 예를 들어, 복수개의 유닛 또는 구성 요소가 결합되거나, 또는 다른 시스템에 통합될 수 있고, 또는 일부 기능은 무시되거나 실행되지 않을 수 있다. 또한, 표시되거나 논의된 상호간의 결합 또는 직접 결합 또는 통신 연결은 일부 인터페이스, 장치 또는 유닛을 통한 간접적 결합 또는 통신 연결일 수 있으며, 전기적, 기계적 또는 다른 형태일 수 있다.
분리된 구성 요소로 설명된 유닛은 물리적으로 분리되거나 분리되지 않을 수도 있고, 유닛으로 표시되는 구성 요소는 물리적 유닛일 수 있고 아닐 수도 있으며, 한 위치에 배치되거나 여러 네트워크 유닛에 분포되어 있을 수도 있다. 본 실시예 방안의 목적을 달성하기 위해 실제 요구에 따라 그중의 일부 또는 모든 유닛을 선택할 수 있다.
또한, 본 발명의 각 실시예에서의 각 기능 유닛은 하나의 처리 유닛에 통합될 수 있고, 또는 각각의 유닛이 물리적으로 별도로 존재할 수도 있고, 또는 2개 이상의 유닛이 하나의 유닛에 통합될 수도 있다. 상기 통합 유닛은 하드웨어의 형태로 또는 소프트웨어 프로그램 모듈의 형태로 구현될 수 있다.
상기 통합 유닛이 소프트웨어 프로그램 모듈의 형태로 구현되어 별도의 제품으로 판매되거나 사용되는 경우, 컴퓨터로 읽을 수 있는 저장 매체에 저장될 수 있다. 이러한 이해를 기초로 하여 본 출원의 기술방안의 본질, 또는 기술 분야에 대하여 기여하는 부분 또는 기술적 방안의 전부 또는 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 해당 컴퓨터 소프트웨어는 하나의 저장 매체에 저장되며, 컴퓨터 장치(개인용 컴퓨터, 서버 또는 네트워크 장치일 수 있음)가 본 출원의 각 실시예에 따른 방법의 전부 또는 일부를 실행할 수 있도록 하는 다수의 명령을 포함한다. 전술한 저장 매체는 USB, 읽기 전용 기억 장치(ROM, Read-Only Memory), 랜덤 액세스 메모리(RAM, Random Access Memory), 외장 하드, 디스크 또는 광 디스크 등과 같은 프로그램 코드를 저장할 수 있는 다양한 매체를 포함한다.
당업자라면 상기 실시예의 각종 방법의 전부 또는 부분 단계는 프로그램에 의해 관련 하드웨어를 지시함으로써 완성될 수 있다는 것을 이해할 수 있다. 상기 프로그램은 컴퓨터로 읽을 수 있는 저장 매체에 저장될 수 있으며, 저장 매체는 플래시 메모리, ROM, RAM, 디스크 또는 광 디스크 등을 포함할 수 있다.
이상, 본 출원의 실시예에 대하여 상세히 소개하였으며, 본문에서는 구체적인 실시예를 사용하여 본 출원의 원리 및 실시 방식을 설명하였다. 상기 실시예의 설명은 단지 본 출원의 방법 및 그 핵심 사상을 이해하는 데에 도움을 줄뿐이며, 본 기술분야의 당업자라면 본 출원의 사상에 따라 구체적인 실시 방식 및 응용 범위를 개변할 수 있다. 앞서 말한 내용을 종합하면, 본 명세서의 내용은 본 출원을 한정하는 것으로 이해해서는 안된다.

Claims (17)

  1. 기억 유닛, 컨트롤러 유닛 및 변환 유닛을 포함하고,
    상기 컨트롤러 유닛은 하나 또는 복수개의 연산 명령을 획득하고, 상기 연산 명령은 고정 소수점 형식 연산 명령이며, 상기 고정 소수점 형식 연산 명령의 연산 도메인은 제 1 입력 데이터의 제 1 주소, 출력 데이터의 제 1 주소와 소수점 위치를 포함하고, 상기 연산 명령을 분석하여 상기 제 1 입력 데이터의 제 1 주소, 출력 데이터의 제 1 주소 및 소수점 위치를 획득하며, 상기 제 1 입력 데이터의 제 1 주소에 따라 상기 기억 유닛으로부터 상기 제 1 입력 데이터를 획득하고, 상기 제 1 입력 데이터와 소수점 위치를 상기 변환 유닛에 송신하는 데에 사용되며,
    상기 변환 유닛은 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하는 데에 사용되는 것을 특징으로 하는
    계산 장치.
  2. 제1항에 있어서,
    상기 컨트롤러 유닛은 하나 또는 복수개의 계산 명령을 얻으며, 구체적으로,
    상기 컨트롤러 유닛은 계산 명령을 획득하고, 상기 계산 명령을 분석하여 상기 하나 또는 복수개의 계산 명령을 획득하는 것을 특징으로 하는
    계산 장치.
  3. 제2항에 있어서,
    상기 고정 소수점 형식 연산 명령의 연산 도메인은 제 1 입력 데이터의 길이를 더 포함하며, 상기 컨트롤러 유닛은 상기 연산 명령을 분석하여 상기 제 1 입력 데이터의 길이를 획득하는 데에도 사용되고,
    상기 컨트롤러 유닛이 상기 제 1 입력 데이터의 제 1 주소에 따라 상기 기억 유닛으로부터 상기 제 1 입력 데이터를 획득하는 것은,
    상기 컨트롤러 유닛이 상기 제 1 입력 데이터와 제 1 입력 데이터의 길이에 따라 상기 기억 유닛으로부터 상기 제 1 입력 데이터를 획득하는 것을 포함하는 것을 특징으로 하는
    계산 장치.
  4. 제3항에 있어서,
    상기 계산 장치는 기계 학습 계산을 실행하는 데에 사용되고, 상기 계산 장치는 연산 유닛을 더 포함하며,
    상기 컨트롤러 유닛은 출력 데이터의 제 1 주소를 연산 유닛에 송신하는 데에도 사용되고,
    상기 변환 유닛은 제 2 입력 데이터와 상기 하나 또는 복수개의 연산 명령을 연산 유닛에 송신하는 데에도 사용되며,
    상기 연산 유닛은 상기 하나 또는 복수개의 연산 명령에 따라 상기 제 2 입력 데이터에 대한 연산을 실행하여, 상기 계산 명령의 계산 결과를 획득하고, 상기 계산 결과를 상기 기억 유닛의 상기 출력 데이터의 제 1 주소에 대응하는 위치에 저장하는 데에 사용되고,
    상기 기계 학습 계산은 인공 신경망 연산을 포함하고,
    상기 제 1 입력 데이터는 입력 뉴런 데이터와 가중치 데이터를 포함하고,
    상기 계산 결과는 출력 뉴런 데이터인 것을 특징으로 하는
    계산 장치.
  5. 제4항에 있어서,
    상기 연산 유닛은 하나의 마스터 처리 회로와 복수개의 슬레이브 처리 회로를 포함하고,
    상기 마스터 처리 회로는 상기 제 2 입력 데이터에 대해 전속 처리를 실행하고, 상기 복수개의 슬레이브 처리 회로와의 사이에서 데이터와 상기 복수개의 연산 명령을 송신하는 데에 사용되며,
    상기 복수개의 슬레이브 처리 회로는 상기 마스터 처리 회로에서 송신된 제 2 입력 데이터 및 상기 복수개의 연산 명령에 따라 중간 연산을 실행하여 복수개의 중간 결과를 얻으며, 또한 복수개의 중간 결과를 상기 마스터 처리 회로에 송신하는 데에 사용되며,
    상기 마스터 처리 회로는 상기 복수개의 중간 결과에 대하여 후속 처리를 실행하여 상기 계산 결과를 얻는 데에 사용되는 것을 특징으로 하는
    계산 장치.
  6. 제4항 또는 제5항에 있어서,
    상기 제 1 입력 데이터가 고정 소수점 데이터인 경우, 상기 연산 유닛은 유도 유닛을 더 포함하고,
    상기 유도 유닛은 상기 제 1 입력 데이터의 소수점 위치에 따라 하나 또는 복수개의 중간 결과의 소수점 위치를 도출하는 데에 사용되고, 상기 하나 또는 복수개의 중간 결과는 상기 제 1 입력 데이터에 따라 연산하여 얻는 것을 특징으로 하는
    계산 장치.
  7. 제6항에 있어서,
    상기 연산 유닛은 하나 또는 복수개의 중간 결과를 캐시하는 데에 사용되는 데이터 캐시 유닛을 더 포함하는 것을 특징으로 하는
    계산 장치.
  8. 결합 처리 장치로서,
    상기 결합 처리 장치는 기계 학습 연산 장치는 기계 학습 연산 장치, 범용 상호 연결 인터페이스, 기억 장치 및 다른 처리 장치를 포함하고,
    상기 기계 학습 연산 장치는 하나 또는 복수개의 제4항 또는 제5항에 기재된 계산 장치를 포함하고, 다른 처리 장치에서 계산할 데이터 및 제어 정보를 획득하고, 지정된 기계 학습 연산을 실행하며, I/O 인터페이스를 통해 실행 결과를 다른 처리 장치로 전달하는 데에 사용되며,
    상기 기계 학습 연산 장치가 복수개의 상기 계산 장치를 포함하는 경우, 복수개의 상기 계산 장치들은 특정 구조를 통해 연결되어 데이터를 전송할 수 있고,
    복수개의 상기 계산 장치는 고속 외부 장치 상호 연결 버스 PCIE 버스를 통해 상호 연결되어 데이터를 전송할 수 있으며, 따라서 더 큰 규모의 기계 학습 연산을 지지하도록 하고; 복수개의 상기 계산 장치는 동일한 제어 시스템을 공유하거나, 또는 제각기 제어 시스템을 가지며; 복수개의 상기 계산 장치는 메모리를 공유하거나, 또는 제각기 메모리를 가지며; 복수개의 상기 계산 장치의 상호 연결 방법은 임의의 상호 연결 토폴로지이고,
    상기 기계 학습 연산 장치는 상기 다른 처리 장치와 상호 작용하여 사용자가 지정한 계산 조작을 함께 완성하며,
    상기 기억 장치는 상기 기계 학습 연산 장치와 상기 다른 처리 장치에 각각 연결되며, 상기 기계 학습 연산 장치와 상기 다른 처리 장치의 데이터를 기억하는 데에 사용되는 것을 특징으로 하는
    결합 처리 장치.
  9. 제8항에 기재된 결합 처리 장치 포함하는 것을 특징으로 하는
    전자 장치.
  10. 보드 카드로서,
    상기 보드 카드는 기억 장치, 인터페이스 장치, 제어 장치 및 제9항에 기재된 전자 장치를 포함하고,
    상기 전자 장치를 상기 기억 장치, 상기 제어 장치 및 상기 인터페이스 장치와 각각 연결되며,
    상기 기억 장치는 데이터를 기억하는 데에 사용되고,
    상기 인터페이스 장치는 상기 전자 장치와 외부 장치 사이의 데이터 전송을 실현하는 데에 사용되며,
    상기 제어 장치는 상기 전자 장치의 상태를 모니터링하는 데에 사용되며,
    상기 기억 장치는 여러 조의 기억 유닛을 포함하고, 각 조의 상기 기억 유닛은 버스를 통해 상기 전자 장치에 연결되며, 상기 기억 유닛은 DDR SDRAM이고,
    상기 전자 장치는 각 상기 기억 유닛의 데이터 전송 및 데이터 저장을 제어하는 데에 사용되는 DDR 컨트롤러를 포함하고,
    상기 인터페이스 장치는 표준 PCIE 인터페이스인 것을 특징으로 하는
    보드 카드.
  11. 컨트롤러 유닛이 하나 또는 복수개의 연산 명령을 획득하고, 상기 연산 명령이 고정 소수점 형식 연산 명령이며, 상기 연산 명령의 연산 도메인이 제 1 입력 데이터의 제 1 주소, 출력 데이터의 제 1 주소와 소수점 위치를 포함하고, 상기 연산 명령을 분석하여 상기 제 1 입력 데이터의 제 1 주소, 출력 데이터의 제 1 주소 및 소수점 위치를 획득하며, 상기 제 1 입력 데이터의 제 1 주소에 따라 상기 제 1 입력 데이터를 획득하는 단계, 및
    변환 유닛이 상기 소수점 위치에 따라 상기 제 1 입력 데이터를 제 2 입력 데이터로 변환하는 단계를 포함하며,
    상기 제 2 입력 데이터가 고정 소수점 데이터인 것을 특징으로 하는
    계산 방법.
  12. 제11항에 있어서,
    상기 컨트롤러 유닛이 하나 또는 복수개의 연산 명령을 획득하는 것은,
    계산 명령을 획득하고, 상기 계산 명령을 분석하여 상기 하나 또는 복수개의 연산 명령을 획득하는 것을 포함하는 것을 특징으로 하는
    계산 방법.
  13. 제12항에 있어서,
    상기 연산 명령의 연산 도메인은 제 1 입력 데이터의 길이를 더 포함하고,
    상기 컨트롤러 유닛이 상기 제 1 입력 데이터의 제 1 주소에 따라 상기 제 1 입력 데이터를 획득하는 것은,
    상기 제 1 입력 데이터의 제 1 주소와 제 1 입력 데이터의 길이에 따라 상기 제 1 입력 데이터를 획득하는 것을 포함하는 것을 특징으로 하는
    계산 방법.
  14. 제13항에 있어서,
    상기 계산 방법은 기계 학습 계산을 실행하기 위한 방법으로서,
    연산 유닛이 상기 하나 또는 복수개의 연산 명령에 따라 상기 제 2 입력 데이터에 대한 계산을 실행하여 계산 명령의 계산 결과를 얻고, 상기 계산 결과를 상기 출력 데이터의 주소와 대응하는 저장 공간에 저장하는 단계를 더 포함하는 것을 특징으로 하는
    계산 방법.
  15. 제14항에 있어서,
    상기 기계 학습 계산은 인공 신경망 연산을 포함하고,
    상기 제 1 입력 데이터는 입력 뉴런 데이터와 가중치 데이터를 포함하고,
    상기 계산 결과는 출력 뉴런 데이터인 것을 특징으로 하는
    계산 방법.
  16. 제13항 또는 제15항에 있어서,
    상기 제 1 입력 데이터와 상기 제 2 입력 데이터는 모두 고정 소수점 데이터일 경우, 상기 제 1 입력 데이터의 소수점 위치와 상기 제 2 입력 데이터의 소수점 위치는 일치하지 않는 것을 특징으로 하는
    계산 방법.
  17. 제16항에 있어서,
    상기 제 1 입력 데이터가 고정 소수점 데이터일 경우, 상기 방법은,
    상기 연산 유닛이 상기 제 1 입력 데이터의 소수점 위치에 따라 하나 또는 복수개의 중간 결과의 소수점 위치를 도출하는 단계를 더 포함하고,
    상기 하나 또는 복수개의 중간 결과는 상기 제 1 입력 데이터에 따라 연산하여 얻은 것임을 특징으로 하는
    계산 방법.
KR1020197028161A 2018-02-13 2018-09-03 계산 장치 및 방법 KR102354720B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
CN201810149287.2A CN110163350B (zh) 2018-02-13 2018-02-13 一种计算装置及方法
CN201810149287.2 2018-02-13
CN201810207915.8A CN110276447B (zh) 2018-03-14 2018-03-14 一种计算装置及方法
CN201810207915.8 2018-03-14
PCT/CN2018/103850 WO2019157812A1 (zh) 2018-02-13 2018-09-03 一种计算装置及方法
KR1020197023810A KR102252137B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197023810A Division KR102252137B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200110152A KR20200110152A (ko) 2020-09-23
KR102354720B1 true KR102354720B1 (ko) 2022-01-21

Family

ID=67618498

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020197026717A KR102148110B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법
KR1020197023810A KR102252137B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법
KR1020197028161A KR102354720B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법
KR1020197028167A KR102354722B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법
KR1020197028148A KR102354718B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020197026717A KR102148110B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법
KR1020197023810A KR102252137B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020197028167A KR102354722B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법
KR1020197028148A KR102354718B1 (ko) 2018-02-13 2018-09-03 계산 장치 및 방법

Country Status (7)

Country Link
US (1) US11609760B2 (ko)
EP (12) EP3651077B1 (ko)
JP (5) JP6846534B2 (ko)
KR (5) KR102148110B1 (ko)
CN (1) CN110383300B (ko)
TW (2) TWI827432B (ko)
WO (1) WO2019157812A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663461B2 (en) * 2018-07-05 2023-05-30 International Business Machines Corporation Instruction distribution in an array of neural network cores
JP6528893B1 (ja) * 2018-11-07 2019-06-12 富士通株式会社 学習プログラム、学習方法、情報処理装置
CN111782577B (zh) * 2019-04-04 2023-03-24 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
JP7243498B2 (ja) * 2019-07-11 2023-03-22 富士通株式会社 演算処理装置、制御プログラム、及び制御方法
CN110597756B (zh) * 2019-08-26 2023-07-25 光子算数(北京)科技有限责任公司 一种计算电路以及数据运算方法
JP7354736B2 (ja) * 2019-09-30 2023-10-03 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム
CN111144556B (zh) * 2019-12-31 2023-07-07 中国人民解放军国防科技大学 面向深度神经网络训练和推理的范围批处理归一化算法的硬件电路
CN113269319A (zh) * 2020-02-14 2021-08-17 阿里巴巴集团控股有限公司 深度学习模型的调优方法、编译方法及计算装置
CN111538942B (zh) * 2020-04-21 2023-04-07 招商局金融科技有限公司 表达式处理方法、电子装置及存储介质
CN111651490A (zh) * 2020-06-04 2020-09-11 深圳前海微众银行股份有限公司 数据筛选方法、装置、设备及计算机存储介质
US11972348B2 (en) 2020-10-30 2024-04-30 Apple Inc. Texture unit circuit in neural network processor
JP7495533B2 (ja) 2020-12-31 2024-06-04 中科寒武紀科技股▲分▼有限公司 ニューラルネットワークモデルを実行するデータ処理装置、方法及び関連製品
CN114841016A (zh) * 2022-05-26 2022-08-02 北京交通大学 一种多模型联邦学习方法、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009093662A (ja) 2002-12-27 2009-04-30 Arm Ltd 固定小数点表示と浮動小数点表示との間で数を変換するデータ処理装置および方法
US20170061279A1 (en) 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
CN107451658A (zh) 2017-07-24 2017-12-08 杭州菲数科技有限公司 浮点运算定点化方法及系统
CN107608715A (zh) 2017-07-20 2018-01-19 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置及方法

Family Cites Families (194)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0375860A (ja) 1989-08-18 1991-03-29 Hitachi Ltd パーソナライズド端末
US5052043A (en) 1990-05-07 1991-09-24 Eastman Kodak Company Neural network with back propagation controlled through an output confidence measure
US5517596A (en) * 1991-05-17 1996-05-14 International Business Machines Corporation Learning machine synapse processor system apparatus
US6144977A (en) 1995-07-10 2000-11-07 Motorola, Inc. Circuit and method of converting a floating point number to a programmable fixed point number
GB9602701D0 (en) 1996-02-09 1996-04-10 Canon Kk Image manipulation
US7242414B1 (en) 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
JP2000293371A (ja) 1999-04-09 2000-10-20 Hitachi Ltd マイクロプログラム制御方法及び装置
US6557096B1 (en) * 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US6671796B1 (en) 2000-02-25 2003-12-30 Sun Microsystems, Inc. Converting an arbitrary fixed point value to a floating point value
US6931639B1 (en) 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
EP1315846B1 (en) 2000-09-07 2007-02-21 Nippon Steel Corporation Hexavalent chromium-free surface-treating agent for sn- or al-based coated steel sheet, and surface treated steel sheet
US20020138714A1 (en) 2001-03-22 2002-09-26 Sun Microsystems, Inc. Scoreboard for scheduling of instructions in a microprocessor that provides out of order execution
CN1270273C (zh) 2001-04-19 2006-08-16 艾利森电话股份有限公司 自适应存储器分配
US20030167460A1 (en) 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US7346881B2 (en) * 2002-05-13 2008-03-18 Tensilica, Inc. Method and apparatus for adding advanced instructions in an extensible processor architecture
DE10316381A1 (de) 2003-04-10 2004-10-28 Bayer Technology Services Gmbh Verfahren zum Training von neuronalen Netzen
JP4202244B2 (ja) 2003-12-22 2008-12-24 Necエレクトロニクス株式会社 Vliw型dsp,及びその動作方法
JP2006154992A (ja) * 2004-11-26 2006-06-15 Akita Prefecture ニューロプロセッサ
US20060161375A1 (en) 2004-12-30 2006-07-20 Allen Duberstein Optimizing processing speed based on measured temperatures
US7721128B2 (en) 2005-11-29 2010-05-18 International Business Machines Corporation Implementation of thermal throttling logic
CN1851668A (zh) 2006-06-01 2006-10-25 北京天碁科技有限公司 片上系统芯片、片上系统芯片的跟踪调试系统及方法
JP4861087B2 (ja) * 2006-07-31 2012-01-25 富士通株式会社 演算プログラム変換装置、演算プログラム変換プログラム、演算プログラム変換方法
DE102006059156B4 (de) 2006-12-14 2008-11-06 Advanced Micro Devices, Inc., Sunnyvale Verfahren zum Testen eines integrierten Schaltkreischips mit zumindest zwei Schaltungskernen sowie integrierter Schaltkreischip und Testsystem
US8443029B2 (en) * 2007-03-01 2013-05-14 International Business Machines Corporation Round for reround mode in a decimal floating point instruction
US20110060587A1 (en) 2007-03-07 2011-03-10 Phillips Michael S Command and control utilizing ancillary information in a mobile voice-to-speech application
US8560591B2 (en) 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
US8051118B2 (en) 2007-04-26 2011-11-01 International Business Machines Corporation Composition of decimal floating point data
US8051117B2 (en) 2007-04-26 2011-11-01 International Business Machines Corporation Shift significand of decimal floating point data
US8190664B2 (en) 2007-04-26 2012-05-29 International Business Machines Corporation Employing a mask field of an instruction to encode a sign of a result of the instruction
JP5184824B2 (ja) 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法
JP2009110353A (ja) * 2007-10-31 2009-05-21 Hitachi Ltd マイクロコントローラ及び制御システム
US7904287B2 (en) 2007-11-13 2011-03-08 International Business Machines Corporation Method and system for real-time prediction of power usage for a change to another performance state
JP4998794B2 (ja) 2007-11-29 2012-08-15 Nkワークス株式会社 画像補正方法と画像補正装置
JP4529098B2 (ja) * 2008-07-29 2010-08-25 ソニー株式会社 演算処理装置および方法、並びにプログラム
US20100073068A1 (en) 2008-09-22 2010-03-25 Hanwoo Cho Functional block level thermal control
CN101572829B (zh) 2009-06-10 2011-02-02 中国联合网络通信集团有限公司 Iptv视频质量监测方法、装置和系统
EP2336882A1 (en) 2009-12-18 2011-06-22 Telefonaktiebolaget L M Ericsson (PUBL) Technique for run-time provision of executable code using off-device services
WO2011132277A1 (ja) 2010-04-21 2011-10-27 トヨタ自動車株式会社 内燃機関の制御装置
JP2011253374A (ja) 2010-06-02 2011-12-15 Sony Corp 情報処理装置、および情報処理方法、並びにプログラム
US8452463B2 (en) 2010-06-04 2013-05-28 Apple Inc. Adjusting the thermal behavior of a computing system using indirect information about ambient temperature
US8694572B2 (en) 2010-07-06 2014-04-08 Silminds, Llc, Egypt Decimal floating-point fused multiply-add unit
CN102637157B (zh) * 2011-02-15 2014-12-03 郑磊 一种片上数字模板系统dtsoc
US8924455B1 (en) 2011-02-25 2014-12-30 Xilinx, Inc. Multiplication of matrices using systolic arrays
CN102761509B (zh) 2011-04-27 2016-01-06 联芯科技有限公司 Ofdm系统的接收系统及降低接收系统内存的方法
CN103534664B (zh) 2011-05-12 2016-08-31 苹果公司 存在感测
CN102789413B (zh) 2011-05-23 2016-02-17 同济大学 一种并行程序的调试系统及方法
US8594982B2 (en) 2011-06-09 2013-11-26 Pulsar Informatics, Inc. Systems and methods for distributed calculation of fatigue-risk prediction and optimization
CN102404673B (zh) 2011-11-24 2013-12-18 苏州上声电子有限公司 数字化扬声器系统通道均衡与声场控制方法和装置
CN103152673B (zh) 2011-12-07 2015-07-08 中国科学院声学研究所 基于四元码动态失配整形的数字扬声器驱动方法和装置
CN107220027A (zh) * 2011-12-23 2017-09-29 英特尔公司 用于执行掩码位压缩的系统、装置以及方法
US9335993B2 (en) * 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
CN102684701B (zh) 2012-04-27 2014-07-09 苏州上声电子有限公司 基于编码转换的数字扬声器驱动方法和装置
DE102012009502A1 (de) 2012-05-14 2013-11-14 Kisters Ag Verfahren zum Trainieren eines künstlichen neuronalen Netzes
US9417891B2 (en) 2012-06-11 2016-08-16 Vmware, Inc. Unified storage/VDI provisioning methodology
US9063731B2 (en) 2012-08-27 2015-06-23 Samsung Electronics Co., Ltd. Ultra low power apparatus and method to wake up a main processor
CN102903089B (zh) 2012-09-07 2014-12-17 山东大学 一种Linux环境下生成遥感图像快视图的方法
US9412366B2 (en) 2012-09-18 2016-08-09 Adobe Systems Incorporated Natural language image spatial and tonal localization
CN102981854A (zh) 2012-11-16 2013-03-20 天津市天祥世联网络科技有限公司 基于浮点数运算内联函数库的神经网络优化方法
WO2014081007A1 (ja) 2012-11-22 2014-05-30 学校法人慶應義塾 アクリル系共重合体、光学フィルム、偏光板および液晶表示装置
US9851977B2 (en) 2012-12-06 2017-12-26 Kalray Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization
US9720732B1 (en) 2013-02-11 2017-08-01 Amazon Technologies, Inc. Parameter selection for optimization of task execution based on execution history for prior tasks
JP2014170295A (ja) 2013-03-01 2014-09-18 Honda Motor Co Ltd 物体認識システム及び物体認識方法
US12047340B2 (en) 2013-04-29 2024-07-23 Dell Products L.P. System for managing an instructure with security
KR101752082B1 (ko) 2013-06-12 2017-07-11 미쓰비시덴키 가부시키가이샤 개발 환경 시스템, 개발 환경 장치, 개발 환경 제공 방법 및 프로그램을 기록한 컴퓨터 판독 가능한 매체
JP6184891B2 (ja) 2014-03-12 2017-08-23 東芝メモリ株式会社 情報処理装置、半導体チップ、情報処理方法およびプログラム
US9507405B2 (en) 2014-06-18 2016-11-29 Oracle International Corporation System and method for managing power in a chip multiprocessor using a proportional feedback mechanism
US9575537B2 (en) 2014-07-25 2017-02-21 Intel Corporation Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
GB2524126B (en) 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
FR3030077B1 (fr) 2014-12-10 2016-12-02 Arnault Ioualalen Procede d'ajustement de la precision d'un programme d'ordinateur manipulant au moins un nombre a virgule.
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
JP6410637B2 (ja) * 2015-02-25 2018-10-24 ルネサスエレクトロニクス株式会社 浮動小数点加算器、半導体装置及び浮動小数点加算器の制御方法
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US10373050B2 (en) * 2015-05-08 2019-08-06 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization
US10083395B2 (en) 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
CN104899641B (zh) 2015-05-25 2018-07-13 杭州朗和科技有限公司 深度神经网络学习方法、处理器和深度神经网络学习系统
CN115100016A (zh) 2015-06-10 2022-09-23 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
CN104978303B (zh) 2015-06-19 2019-06-04 上海兆芯集成电路有限公司 单芯片整合的传感器集线器和多传感器管理方法
CN106469291A (zh) 2015-08-19 2017-03-01 中兴通讯股份有限公司 图像处理方法及终端
US10031765B2 (en) 2015-09-24 2018-07-24 Intel Corporation Instruction and logic for programmable fabric hierarchy and cache
US10812831B2 (en) 2015-09-30 2020-10-20 Piksel, Inc. Video stream delivery via adaptive quality enhancement using error correction models
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
CN106570559A (zh) 2015-10-09 2017-04-19 阿里巴巴集团控股有限公司 一种基于神经网络的数据处理方法和装置
CN105426344A (zh) * 2015-11-09 2016-03-23 南京大学 基于Spark的分布式大规模矩阵乘法的矩阵计算方法
WO2017087568A1 (en) 2015-11-17 2017-05-26 Eman Bayani A digital image capturing device system and method
CN106814639A (zh) 2015-11-27 2017-06-09 富泰华工业(深圳)有限公司 语音控制系统及方法
CN105893419A (zh) 2015-11-30 2016-08-24 乐视致新电子科技(天津)有限公司 一种多媒体照片生成方法、装置、设备及手机
US10699186B2 (en) 2015-12-02 2020-06-30 Google Llc Determining orders of execution of a neural network
CN110135581B (zh) * 2016-01-20 2020-11-06 中科寒武纪科技股份有限公司 用于执行人工神经网络反向运算的装置和方法
CN106997236B (zh) 2016-01-25 2018-07-13 亮风台(上海)信息科技有限公司 基于多模态输入进行交互的方法和设备
US10664766B2 (en) 2016-01-27 2020-05-26 Bonsai AI, Inc. Graphical user interface to an artificial intelligence engine utilized to generate one or more trained artificial intelligence models
US10497089B2 (en) 2016-01-29 2019-12-03 Fotonation Limited Convolutional neural network
EP3416105A4 (en) 2016-02-12 2019-02-20 Sony Corporation INFORMATION PROCESSING METHOD AND INFORMATION PROCESSING DEVICE
JP2017156511A (ja) 2016-03-01 2017-09-07 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US10103714B2 (en) 2016-03-01 2018-10-16 Qualcomm Incorporated Adjust voltage for thermal mitigation
US10019779B2 (en) 2016-03-08 2018-07-10 Amazon Technologies, Inc. Browsing interface for item counterparts having different scales and lengths
CN107305538B (zh) * 2016-04-22 2020-07-31 中科寒武纪科技股份有限公司 一种子矩阵运算装置及方法
CN110188870B (zh) * 2016-04-27 2021-10-12 中科寒武纪科技股份有限公司 用于执行人工神经网络自学习运算的装置和方法
CN111860814B (zh) * 2016-04-29 2024-01-16 中科寒武纪科技股份有限公司 一种用于执行batch normalization运算的装置和方法
CN107330515A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法
CN107341541B (zh) * 2016-04-29 2021-01-29 中科寒武纪科技股份有限公司 一种用于执行全连接层神经网络训练的装置和方法
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
US10552119B2 (en) 2016-04-29 2020-02-04 Intel Corporation Dynamic management of numerical representation in a distributed matrix processor architecture
US11055063B2 (en) 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
US10187568B1 (en) 2016-05-02 2019-01-22 Bao Tran Video smart phone
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
CN105978611B (zh) 2016-05-12 2019-09-17 京信通信系统(中国)有限公司 一种频域信号压缩方法及装置
AU2016203619A1 (en) 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
EP3252949B1 (en) 2016-06-01 2020-03-18 Intel IP Corporation Methods and devices for predistortion of signals
US20170357910A1 (en) 2016-06-10 2017-12-14 Apple Inc. System for iteratively training an artificial intelligence using cloud-based metrics
CN107545889B (zh) 2016-06-23 2020-10-23 华为终端有限公司 适用于模式识别的模型的优化方法、装置及终端设备
CN106131139B (zh) * 2016-06-23 2019-07-19 暨南大学 一种云关系数据库的浮点数据的加密及查询方法
CN106156310A (zh) 2016-06-30 2016-11-23 努比亚技术有限公司 一种图片处理装置和方法
US10372588B2 (en) 2016-07-08 2019-08-06 International Business Machines Corporation Providing debug information on production containers using debug containers
DE102016214786A1 (de) 2016-08-09 2018-02-15 Fujitsu Limited Anwendungsprofiling-Jobmanagement-System, -Programm und -Verfahren
US20180046903A1 (en) 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)
CN107657316B (zh) 2016-08-12 2020-04-07 北京深鉴智能科技有限公司 通用处理器与神经网络处理器的协同系统设计
CN106354568A (zh) 2016-08-23 2017-01-25 京信通信技术(广州)有限公司 一种不同进程间的通信方法及通信装置
CN107797913A (zh) 2016-09-07 2018-03-13 大陆汽车电子(连云港)有限公司 一种实时系统的软件分析系统与方法
US11907760B2 (en) 2016-09-23 2024-02-20 Apple Inc. Systems and methods of memory allocation for neural networks
CN106650922B (zh) 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
US20180096243A1 (en) 2016-09-30 2018-04-05 General Electric Company Deep learning for data driven feature representation and anomaly detection
US10726330B2 (en) 2016-10-11 2020-07-28 The Research Foundation For The State University Of New York System, method, and accelerator to process convolutional neural network layers
CN106485316B (zh) 2016-10-31 2019-04-02 北京百度网讯科技有限公司 神经网络模型压缩方法以及装置
CN106502626A (zh) 2016-11-03 2017-03-15 北京百度网讯科技有限公司 数据处理方法和装置
US10216479B2 (en) 2016-12-06 2019-02-26 Arm Limited Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
US10997492B2 (en) 2017-01-20 2021-05-04 Nvidia Corporation Automated methods for conversions to a lower precision data format
JP6540725B2 (ja) * 2017-01-30 2019-07-10 富士通株式会社 演算処理装置、方法、およびプログラム
US10650303B2 (en) * 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems
CN106951587A (zh) 2017-02-15 2017-07-14 芯启源(南京)半导体科技有限公司 Fpga调试系统及方法
CN106951962B (zh) 2017-03-22 2020-09-01 南京地平线机器人技术有限公司 用于神经网络的复合运算单元、方法和电子设备
US10402932B2 (en) 2017-04-17 2019-09-03 Intel Corporation Power-based and target-based graphics quality adjustment
US10332302B2 (en) 2017-04-17 2019-06-25 Intel Corporation Scatter gather engine
CN107025629B (zh) 2017-04-27 2021-03-26 维沃移动通信有限公司 一种图像处理方法及移动终端
US11842280B2 (en) 2017-05-05 2023-12-12 Nvidia Corporation Loss-scaling for deep neural network training with reduced precision
US10019668B1 (en) 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
US11144828B2 (en) 2017-06-09 2021-10-12 Htc Corporation Training task optimization system, training task optimization method and non-transitory computer readable medium for operating the same
US10944902B2 (en) 2017-06-20 2021-03-09 Adobe Inc. Digital image generation using capture support data
WO2019005088A1 (en) 2017-06-30 2019-01-03 Intel Corporation HETEROGENEOUS MULTIPLIER
CN107451654B (zh) 2017-07-05 2021-05-18 深圳市自行科技有限公司 卷积神经网络的加速运算方法、服务器及存储介质
US10427306B1 (en) 2017-07-06 2019-10-01 X Development Llc Multimodal object identification
CN107688849B (zh) 2017-07-28 2021-04-13 赛灵思电子科技(北京)有限公司 一种动态策略定点化训练方法及装置
US11481218B2 (en) 2017-08-02 2022-10-25 Intel Corporation System and method enabling one-hot neural networks on a machine learning compute platform
WO2019031858A1 (en) 2017-08-08 2019-02-14 Samsung Electronics Co., Ltd. METHOD AND APPARATUS FOR DETERMINING MEMORY NEEDS IN A NETWORK
US20190050710A1 (en) 2017-08-14 2019-02-14 Midea Group Co., Ltd. Adaptive bit-width reduction for neural networks
CN107644254A (zh) 2017-09-09 2018-01-30 复旦大学 一种卷积神经网络权重参数量化训练方法及系统
US11450319B2 (en) 2017-09-29 2022-09-20 Cambricon (Xi'an) Semiconductor Co., Ltd. Image processing apparatus and method
US10224954B1 (en) 2017-09-29 2019-03-05 Intel Corporation Floating point to fixed point conversion
US10223114B1 (en) 2017-09-29 2019-03-05 Intel Corporation Fixed point to floating point conversion
KR102380494B1 (ko) 2017-09-29 2022-03-29 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 화상처리장치 및 방법
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
JP6540770B2 (ja) 2017-10-17 2019-07-10 富士通株式会社 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法
US10410121B2 (en) 2017-10-25 2019-09-10 SparkCognition, Inc. Adjusting automated neural network generation based on evaluation of candidate neural networks
US20210061028A1 (en) 2017-10-26 2021-03-04 Applied Mechatronic Products Apparatus and method for vehicular monitoring, analysis, and control
US10783634B2 (en) 2017-11-22 2020-09-22 General Electric Company Systems and methods to deliver point of care alerts for radiological findings
US10803379B2 (en) 2017-12-12 2020-10-13 Amazon Technologies, Inc. Multi-memory on-chip computational network
CN108053028B (zh) 2017-12-21 2021-09-14 深圳励飞科技有限公司 数据定点化处理方法、装置、电子设备及计算机存储介质
US11636327B2 (en) 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US11373088B2 (en) 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US20190251429A1 (en) 2018-02-12 2019-08-15 Kneron, Inc. Convolution operation device and method of scaling convolution input for convolution neural network
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11106598B2 (en) 2018-02-13 2021-08-31 Shanghai Cambricon Information Technology Co., Ltd. Computing device and method
CN110163361B (zh) * 2018-02-13 2021-06-25 上海寒武纪信息科技有限公司 一种计算装置及方法
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN116991226A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
JP7056225B2 (ja) 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
US10628275B2 (en) 2018-03-07 2020-04-21 Nxp B.V. Runtime software-based self-test with mutual inter-core checking
US11475306B2 (en) 2018-03-22 2022-10-18 Amazon Technologies, Inc. Processing for multiple input data sets
CN108510067B (zh) 2018-04-11 2021-11-09 西安电子科技大学 基于工程化实现的卷积神经网络量化方法
US11562213B2 (en) 2018-04-17 2023-01-24 Intel Corporation Methods and arrangements to manage memory in cascaded neural networks
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
CN108717570A (zh) 2018-05-23 2018-10-30 电子科技大学 一种脉冲神经网络参数量化方法
CN115268082A (zh) 2018-05-31 2022-11-01 中强光电股份有限公司 头戴式显示装置
US10360304B1 (en) 2018-06-04 2019-07-23 Imageous, Inc. Natural language processing interface-enabled building conditions control system
CN109062540B (zh) 2018-06-06 2022-11-25 北京理工大学 一种基于cordic算法的可重构浮点运算装置
CN109063820A (zh) 2018-06-07 2018-12-21 中国科学技术大学 利用时频联合长时循环神经网络的数据处理方法
KR102470893B1 (ko) 2018-06-27 2022-11-25 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
CN110728364A (zh) 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
CN109685202B (zh) 2018-12-17 2023-03-21 腾讯科技(深圳)有限公司 数据处理方法及装置、存储介质和电子装置
CN111383638A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN109902745A (zh) 2019-03-01 2019-06-18 成都康乔电子有限责任公司 一种基于cnn的低精度训练与8位整型量化推理方法
CN110059733A (zh) 2019-04-01 2019-07-26 苏州科达科技股份有限公司 卷积神经网络的优化及快速目标检测方法、装置
CN109993296B (zh) 2019-04-01 2020-12-29 安徽寒武纪信息科技有限公司 量化实现方法及相关产品
US20200334522A1 (en) 2019-04-18 2020-10-22 Cambricon Technologies Corporation Limited Data processing method and related products
CN111832738B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
WO2021036908A1 (zh) 2019-08-23 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
JP7146954B2 (ja) 2019-08-23 2022-10-04 安徽寒武紀信息科技有限公司 データ処理方法、装置、コンピュータデバイス、及び記憶媒体
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium
WO2021036905A1 (zh) 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN110780845B (zh) 2019-10-17 2021-11-30 浙江大学 一种用于量化卷积神经网络的可配置近似乘法器及其实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009093662A (ja) 2002-12-27 2009-04-30 Arm Ltd 固定小数点表示と浮動小数点表示との間で数を変換するデータ処理装置および方法
US20170061279A1 (en) 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
CN107608715A (zh) 2017-07-20 2018-01-19 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置及方法
CN107451658A (zh) 2017-07-24 2017-12-08 杭州菲数科技有限公司 浮点运算定点化方法及系统

Also Published As

Publication number Publication date
JP2020126595A (ja) 2020-08-20
EP3651077A1 (en) 2020-05-13
EP3640863A1 (en) 2020-04-22
EP3651072A1 (en) 2020-05-13
JP2020126597A (ja) 2020-08-20
EP3651079A1 (en) 2020-05-13
EP3651074B1 (en) 2021-10-27
TW202321999A (zh) 2023-06-01
JP6826181B2 (ja) 2021-02-03
KR20190107766A (ko) 2019-09-20
EP3651070A1 (en) 2020-05-13
EP3617959B1 (en) 2021-08-04
EP3651077B1 (en) 2021-10-27
KR102354722B1 (ko) 2022-01-21
EP3651073B1 (en) 2021-10-27
EP3651070B1 (en) 2021-07-28
JP2020126596A (ja) 2020-08-20
EP3651076B1 (en) 2021-10-27
EP3651078B1 (en) 2021-10-27
EP3651071A1 (en) 2020-05-13
TWI827432B (zh) 2023-12-21
EP3617959A4 (en) 2020-04-15
CN110383300B (zh) 2024-03-05
US11609760B2 (en) 2023-03-21
EP3651072B1 (en) 2021-10-27
US20210406649A1 (en) 2021-12-30
JP6846534B2 (ja) 2021-03-24
KR20190107091A (ko) 2019-09-18
KR20200110151A (ko) 2020-09-23
EP3651071B1 (en) 2021-10-27
KR20200110152A (ko) 2020-09-23
EP3651075B1 (en) 2021-10-27
JP2020522032A (ja) 2020-07-27
EP3651076A1 (en) 2020-05-13
TWI795519B (zh) 2023-03-11
EP3640863B1 (en) 2021-10-27
JP6865805B2 (ja) 2021-04-28
EP3651073A1 (en) 2020-05-13
KR20200110153A (ko) 2020-09-23
KR102354718B1 (ko) 2022-01-21
JP2020126594A (ja) 2020-08-20
KR102252137B1 (ko) 2021-05-13
KR102148110B1 (ko) 2020-08-25
EP3651075A1 (en) 2020-05-13
EP3651079B1 (en) 2021-10-27
CN110383300A (zh) 2019-10-25
WO2019157812A1 (zh) 2019-08-22
EP3651078A1 (en) 2020-05-13
TW201935265A (zh) 2019-09-01
JP6905573B2 (ja) 2021-07-21
JP6880160B2 (ja) 2021-06-02
EP3651074A1 (en) 2020-05-13
EP3617959A1 (en) 2020-03-04

Similar Documents

Publication Publication Date Title
KR102354720B1 (ko) 계산 장치 및 방법
US11704125B2 (en) Computing device and method
US20200117453A1 (en) Computing device and method
CN110163361B (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