KR20190003610A - 콘볼루션 신경망 정방향 연산 실행용 장치와 방법 - Google Patents

콘볼루션 신경망 정방향 연산 실행용 장치와 방법 Download PDF

Info

Publication number
KR20190003610A
KR20190003610A KR1020187033947A KR20187033947A KR20190003610A KR 20190003610 A KR20190003610 A KR 20190003610A KR 1020187033947 A KR1020187033947 A KR 1020187033947A KR 20187033947 A KR20187033947 A KR 20187033947A KR 20190003610 A KR20190003610 A KR 20190003610A
Authority
KR
South Korea
Prior art keywords
unit
data
module
storage unit
convolution
Prior art date
Application number
KR1020187033947A
Other languages
English (en)
Other versions
KR102402111B1 (ko
Inventor
티엔스 천
동 한
윈지 천
샤오리 리우
치 궈
Original Assignee
캠브리콘 테크놀로지스 코퍼레이션 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캠브리콘 테크놀로지스 코퍼레이션 리미티드 filed Critical 캠브리콘 테크놀로지스 코퍼레이션 리미티드
Publication of KR20190003610A publication Critical patent/KR20190003610A/ko
Application granted granted Critical
Publication of KR102402111B1 publication Critical patent/KR102402111B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/0499Feedforward networks
    • 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

Landscapes

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

Abstract

본 발명은 콘볼루션 신경망 실행용 장치에 관한 것으로, 더욱 상세하게는 그 중 장치 부분에 명령 저장 유닛(1), 컨트롤러 유닛(2), 데이터 엑세스 유닛(3), 인터커넥트 모듈(4), 1차 연산 모듈(5)과 복수개 2차 연산 모듈(6)을 포함하는 것을 특징으로 하는 콘볼루션 신경망 실행 장치에 관한 것이다. 해당 장치를 사용하면 단층 또는 다층 인공 신경망 콘볼루션층의 정방향 연산을 구현할 수 있다. 각 층은 우선 콘볼루션 수용야에 의거하여 입력한 뉴런 벡터의 데이터를 선택한 후, 콘볼루션 커널에 대한 콘볼루션 연산을 수행해 본 층의 중간 결과를 계산하고, 이어서 해당 중간 결과에 바이어스를 더하고 활성화 해 출력 데이터를 획득한다. 출력 데이터는 다음 층의 입력 데이터로 사용된다.

Description

콘볼루션 신경망 정방향 연산 실행용 장치와 방법
본 발명은 전체적으로 인공 신경망 분야에 관한 것으로, 더욱 상세하게는 콘볼루션 신경망 정방향 연산 실행용 장치와 방법에 관한 것이다.
콘볼루션 신경망은 최근 패턴 인식, 이미지 처리 등 분야에서 광범위하게 응용되고 있는 고효율 인식 알고리즘이다. 그는 구조가 간단하고 트레이닝 파라미터가 적으며 적합성이 강하고 수평이동, 회전, 확대 및 축소가 가능한 특징을 가지고 있다. CNN/DNN의 특성검사층이 트레이닝 데이터로 학습하므로 CNN/DNN을 사용할 때 디스플레이의 특징 추출을 피면해 암시적으로 트레이닝 데이터로부터 학습하며; 또한, 동일 특징 매핑면의 뉴런 가중치가 같으므로 네트워크가 병렬 학습이 가능한데, 이는 콘볼루션 네트워크가 뉴런이 상호 연결된 네트워크에 대비되는 커다른 우세를 가지고 있다는 것을 보여 준다.
종래기술에 따른 컴퓨터 분야 응용에서 콘볼루션 연산과 관련되는 응용은 아주 보편화 되어 있다. 본 발명은 콘볼루션 신경망에 전념하였는데 현재 이와 같은 연산을 실행할 수 있는 주도적 장치는 아래와 같다.
콘볼루션 신경망 연산을 실행하는 공지된 종래의 방법은 범용 프로세서를 사용해 콘볼루션 신경망 연산을 실행하는 것이다. 상기 방법의 단점 중 하나는 단일 범용 프로세서가 스칼라 계산에 많이 사용되고 콘볼루션 신경망 연산을 실행할 때 연산 성능이 비교적 낮아 복수개의 범용 프로세서를 병렬 실행할 경우 범용 프로세서 간 상호 통신도 성능 병목 현상을 만든다.
또 다른 종래의 방법은 그래픽 처리 유닛(GPU)으로 벡터 계산을 실행하는 것으로서, 범용 레지스터 파일과 범용 스트림 프로세서를 통하여 범용 SIMD 명령을 실행함으로써 콘볼루션 신경망 연산을 실행한다. 하지만 상기 방법은 GPU가 비교적 작은 온칩(on-chip) 캐시만 있기 때문에 대규모적인 콘볼루션 신경망 연산을 실행할 때 데이터를 반복적으로 칩 외부에서 운반해야 하므로 칩 외부의 대역폭이 주요 성능 병목으로 작용한다.
본 발명의 목적은 콘볼루션 신경망 지원 장치를 제공함으로써 칩 간 통신에 제한적이고 온칩 캐시가 부족하는 등 종래 기술의 문제를 해결하는 데에 있다.
본 발명은 콘볼루션 신경망 정방향 연산 실행용 장치에 관한 것으로서, 명령 저장 유닛, 컨트롤러 유닛, 데이터 엑세스 유닛, 인터커넥트 모듈, 1차 연산 모듈과 복수개 2차 연산 모듈이 포함된다. 여기에서,
명령 저장 유닛은 데이터 엑세스 유닛을 통해 명령을 판독하고 판독한 명령을 저장하는 데 사용되며;
컨트롤러 유닛은 명령 저장 유닛으로부터 명령을 판독하고 명령을 기타 모듈 행위를 제어하는 제어 신호로 디코딩하는 데 사용되고 상기 기타 모듈에는 데이터 엑세스 유닛, 1차 연산 모듈과 상기 복수개 2차 연산 모듈이 포함되며;
데이터 엑세스 유닛은 외부 주소 공간과 상기 장치 간의 데이터 또는 명령을 판독 및 기록하는 데 사용되며;
2차 연산 모듈은 콘볼루션 신경망 알고리즘 중의 입력 데이터와 콘볼루션 커널의 콘볼루션 연산을 구현하는 데 사용되며;
인터커넥트 모듈은 상기 1차 연산 모듈과 상기 2차 연산 모듈 간에 데이터를 전송하고 신경망 완전연결층 정방향 연산이 시작되기 전에 1차 연산 모듈이 인터커넥트 모듈을 통해 입력 데이터를 각 2차 연산 모듈로 전송하며 2차 연산 모듈의 계산 과정이 완료된 후 인터커넥트 모듈이 단계적으로 각 2차 연산 모듈의 출력 스칼라를 중간 벡터로 합산해 1차 연산 모듈로 반환하는 데 사용되며;
1차 연산 모듈은 모든 입력 데이터의 중간 벡터를 중간 결과로 조합하고 상기 중간 결과에 대해 후속 연산을 실행하는 데 사용된다.
본 발명은 다른 한편으로 상기 장치를 사용하여 단층 인공 신경망 콘볼루션층 정방향 연산을 실행하는 방법을 제공한다.
본 발명은 또 다른 한편으로 상기 장치를 사용하여 다층 인공 신경망 콘볼루션층 정방향 연산을 실행하는 방법을 제공한다.
본 발명에서 제공하는 콘볼루션 신경망 연산 장치 및 맞춤형 명령은 계산에 참여하는 입력 데이터와 콘볼루션 커널을 스크래치패드 메모리(Scratchpad Memory)에 임시 저장한다. 동등 명령만 송출한 상황에서 콘볼루션 신경망 연산 유닛은 더욱 유연하고 효과적으로 다른 폭의 데이터를 지원함으로써, 데이터 저장과 관련되는 문제를 해결해 대량의 콘볼루션 신경망 계산 태스크를 포함하는 실행 성능을 향상시켜 준다. 본 발명이 사용하는 명령은 간소화 된 포맷을 구비해 명령 집합이 사용하기 편리하고 지원하는 벡터 길이가 유연한 장점이 있다.
본 발명은 데이터 처리, 로봇, 컴퓨터, 프린터, 스캐너, 전화, 태블릿 PC, 스마트 단말기, 휴대폰, 주행기록기, 네비게이터, 센서, 웹캠, 클라우드 서버, 사진기, 촬영기, 프로젝터, 손목시계, 이어폰, 휴대용 저장장치, 웨어러블 설비 등 각종 전자제품; 비행기, 선박, 차량 등 각종 교통수단; 텔레비전, 에어컨, 전자레인지, 냉장고, 전기밥솥, 가습기, 세탁기, 전등, 가스레인지, 주방환풍기 등 각종 가정용 전기기구; 자기공명영상촬영기,B형 초음파, 심전도기 등 각종 의료설비를 포함하지만 이에 한정되지 않는 분야에 응용할 수 있다.
도 1은 콘볼루션 신경망 알고리즘의 흐름도이고;
도 2는 본 발명 실시예에 따른 콘볼루션 신경망 정방향 연산 지원 장치의 명령 예시도이고;
도 3은 본 발명 실시예에 따른 콘볼루션 신경망 정방향 연산 실행용 장치의 전체 구조에 대한 블록 다이어그램이고;
도 4는 본 발명 실시예에 따른 콘볼루션 신경망 정방향 연산 실행용 장치 중 H 트리 모듈(인터커넥트 모듈의 한 구현 방식)의 구조이고;
도 5는 본 발명 실시예에 따른 콘볼루션 신경망 정방향 연산 실행용 장치 중 1차 연산 모듈 구조의 블록 다이어그램이고;
도 6은 본 발명 실시예에 따른 콘볼루션 신경망 정방향 연산 실행용 장치 중 2차 연산 모듈 구조의 블록 다이어그램이고;
도 7은 본 발명 실시예에 따른 단층 콘볼루션 신경망 정방향 연산 과정의 블록 다이어그램이다.
본 발명은 콘볼루션 신경망 계산 장치 및 맞춤형 명령 집합에 관한 것으로서, 저장 유닛, 레지스터 유닛 및 콘볼루션 신경망 연산 유닛을 포함한다. 저장 유닛에는 입출력 데이터와 콘볼루션 커널이 저장되고, 레지스터 유닛에는 입출력 데이터와 콘볼루션 커널이 저장된 주소가 저장되고, 콘볼루션 신경망 연산 유닛은 콘볼루션 신경망 연산 명령에 의거하여 레지스터 유닛에서 데이터 주소를 획득한 후, 해당 데이터 주소에 의거하여 저장 유닛에서 상응하는 입력 데이터와 콘볼루션 커널을 획득하고, 이어서 획득한 입력 데이터와 콘볼루션 커널에 의거하여 콘볼루션 신경망 연산을 진행하여 콘볼루션 신경망 연산 결과를 획득한다. 본 발명에 있어서, 계산에 참여하는 입력 데이터와 콘볼루션 커널은 외부 저장 공간(예를 들어 스크래치패드 메모리)에 임시 저장되고, 콘볼루션 신경망 연산 과정 중 더욱 유연하고 효과적으로 다른 폭의 데이터를 지원함으로써, 대량의 콘볼루션 신경망 계산 태스크를 포함하는 실행 성능을 향상시켜 준다.
도 1은 콘볼루션 신경망 알고리즘의 예시도다. 도 1에서 도시하는 바와 같이, 콘볼루션 신경망은 출력 데이터, 활성 함수, 입력 데이터층과 콘볼루션 커널을 포함한다.
우선, 매번 계산 과정에서 먼저 콘볼루션 수용야에 의거하여 입력 데이터층 중 대응되는 입력 데이터 xi를 선택하고, 이어서 입력 데이터와 콘볼루션 커널에 대해 더하기 연산을 진행하는데, 그 출력 데이터의 계산 과정은 s=s(∑wxi+b)다. 즉, 콘볼루션 커널w에 입력 데이터 xi를 곱셈해 합산하고, 이어서 바이어스b를 더해 활성화 연산 s(h)을 진행해 최후의 출력 데이터를 획득한다. 여기에서, 콘볼루션 커널과 입력 데이터의 곱셈은 벡터 곱셈이다.
콘볼루션 수용야는 콘볼루션 커널에 의거하여 X축의 크기가 K, Y축의 크기가 Ky, X축의 사이즈가 W, Y축의 사이즈가 H인 입력 데이터에서 처음부터 콘볼루션 커널과 크기가 같은 입력 데이터를 선택하고, 어서 콘볼루션 수용야의 수평이동 위치벡터 S와 Sy에 의거하여 먼저 가로 수평이동한 다음 다시 세로 수평이동해 전부의 입력 데이터를 순회한다.
도 2는 본 발명 실시예에 따른 명령 집합의 포맷 예시도다. 도 2에서 도시하는 바와 같이, 콘볼루션 신경망 연산 명령은 최소한 하나의 연산 코드와 최소한 하나의 연산 도메인을 포함한다. 여기에서, 연산 코드는 상기 콘볼루션 신경망 연산 명령을 가리키는 데 사용되고, 콘볼루션 신경망 연산 유닛은 상기 연산 코드 식별을 통해 콘볼루션 신경망 연산을 진행할 수 있다. 연산 도메인은 상기 콘볼루션 신경망 연산 명령의 데이터 정보를 가리키는 데 사용되며, 여기에서 데이터 정보는 즉시 데이터 또는 레지스터 번호일 수 있고 입력 데이터의 시작 주소와 데이터 길이, 콘볼루션 커널의 시작 주소와 데이터 길이 및 활성 함수의 유형을 포함한다.
명령 집합은 다른 기능의 콘볼루션 신경망 COMPUTE 명령, CONFIG 명령, IO 명령, NOP 명령, JUMP 명령과 MOVE 명령을 포함한다. 일 실시예에서, COMPUTE 명령은,
해당 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소 지점에서 각각 지정 크기의 입력 데이터와 콘볼루션 커널을 획득하고, 콘볼루션 연산 유닛에서 콘볼루션 연산을 진행한 후, 이어서 출력 결과에 대해 sigmoid를 활성화 하는 콘볼루션 신경망 sigmoid 명령;
해당 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소 지점에서 각각 지정 크기의 입력 데이터와 콘볼루션 커널을 획득하고, 콘볼루션 연산 유닛에서 콘볼루션 연산을 진행한 후, 이어서 출력 결과에 대해 TanH를 활성화 하는 콘볼루션 신경망 TanH 명령;
해당 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소 지점에서 각각 지정 크기의 입력 데이터와 콘볼루션 커널을 획득하고, 콘볼루션 연산 유닛에서 콘볼루션 연산을 진행한 후, 이어서 출력 결과에 대해 ReLU를 활성화 하는 콘볼루션 신경망 ReLU 명령; 및
해당 명령에 의거하여, 장치는 스크래치패드 메모리의 지정 주소 지점에서 각각 지정 크기의 입력 데이터와 콘볼루션 커널을 획득하고 group을 분할하며 콘볼루션 연산 유닛에서 콘볼루션 연산을 진행한 후, 이어서 출력 결과를 활성화 하는 콘볼루션 신경망 group 명령을 포함한다.
COMPUTE명령은 기타 연산 명령을 포함해 비선형 활성화와 선형 활성화 연산을 진행할 수도 있다.
CONFIG명령은 각층 인공 신경망 계산 시작 전에 현재 층 계산에 필요한 각종 상수를 배치한다.
IO명령은 외부 저장 공간에서 계산에 필요한 입력 데이터를 판독하여 입력하고, 계산 완료 후 데이터를 외부 공간에 저장한다.
NOP명령은 현재 내부 모든 제어 신호 캐시 큐(queue) 내의 제어 신호를 정리하여 NOP 명령 전의 모든 명령이 전부 완료되도록 보장한다. NOP 명령 자체에는 어떠한 조작도 포함되지 않는다.
JUMP명령은 컨트롤러가 명령 캐시 유닛에서 판독하는 다음 명령 주소의 점프를 제어해 제어 흐름의 점프를 구현하는 데 사용된다.
MOVE명령은 장치 내부 주소 공간의 특정 주소 데이터를 장치 내부 주소 공간의 다른 주소로 옮기는 것을 책임지며, 상기 과정은 연산 유닛에 독립적이고 실행 과정 중 연산 유닛의 자원을 점용하지 않는다.
본 발명의 목적, 기술방안 및 장점에 대한 더욱 명확한 이해를 돕기 위하여 이하에서는 구체적인 실시예를 도면을 통해 더욱 상세하게 설명한다.
도 3은 본 발명 실시예에 따른 콘볼루션 신경망 정방향 연산 장치의 구조 예시도다. 도 3에서 도시하는 바와 같이, 상기 장치는 명령 저장 유닛(1), 컨트롤러 유닛(2), 데이터 엑세스 유닛(3), 인터커넥트 모듈(4), 1차 연산 모듈(5)과 복수개 2차 연산 모듈(6)을 포함한다. 명령 저장 유닛(1), 컨트롤러 유닛(2), 데이터 엑세스 유닛(3), 인터커넥트 모듈(4), 1차 연산 모듈(5)과 2차 연산 모듈(6)은 모두 하드웨어 회로(예를 들어 FPGA, CGRA, 전용 집적회로 ASIC, 아날로그 회로와 멤리스터 등을 포함하지만 이에 한정되지 않음)를 통해 구현한다.
명령 저장 유닛(1)은 데이터 엑세스 유닛(3)을 통해 명령을 판독해 입력하고 판독, 입력한 명령을 저장한다.
컨트롤러 유닛(2)은 명령 저장 유닛(1)으로부터 명령을 판독하고 명령을 기타 모듈의 행위를 제어하는 제어 신호로 디코딩해 기타 모듈, 예를 들어 데이터 엑세스 유닛(3), 1차 연산 모듈(5)과 2차 연산 모듈(6) 등에게 송출한다.
데이터 엑세스 유닛(3)은 외부 주소 공간을 엑세스함으로써 직접 장치 내부의 각 저장 유닛에서 데이터를 판독해 기록하고 데이터의 로딩과 저장을 완료한다.
인터커넥트 모듈(4)은 1차 연산 모듈과 2차 연산 모듈을 연결하는 데 사용해 다른 인터커넥트 위상(예를 들어 트리 구조, 링 구조, 메쉬 구조, 단계적 인터커넥트, 버스 구조 등)을 구현할 수 있다.
도 4는 인터커넥트 모듈(4)의 실시방식인 H 트리 모듈을 도시한다. 인터커넥트 모듈(4)이 구성하는 1차 연산 모듈(5)과 복수개 2차 연산 모듈(6) 간의 데이터 경로는 복수개 노드로 구성된 이진 트리 경로인데, 각 노드는 상위 데이터를 동등하게 하위의 2 개 노드로 송출하고, 하위 2 개 노드가 반환한 데이터를 합병해 상위 노드에게 반환한다. 예를 들어 콘볼루션 신경망 계산 시작 단계에서 1차 연산 모듈(5) 내의 뉴런 데이터는 인터커넥트 모듈(4)을 통해 각 2차 연산 모듈(6)에게 송출하며; 2차 연산 모듈(6)의 계산 과정이 완료된 후 2차 연산 모듈(6)의 계산 과정이 완료된 후 각 2차 연산 모듈이 출력한 뉴런의 수치는 인터커넥트 모듈에서 단계적으로 완벽한, 뉴런으로 구성된 벡터로 조합한다. 예를 들어 장치가 모두 N 개 2차 연산 모듈을 구비하는 경우, 입력 데이터 xi는 N 개 2차 연산 모듈에 송출되고, 각 2차 연산 모듈은 입력 데이터xi와 상기 2차 연산 모듈이 상응하는 콘볼루션 커널에 대해 콘볼루션 연산을 진행해 스칼라 데이터 하나를 획득하며, 각 2차 연산 모듈의 스칼라 데이터는 인터커넥트 모듈(4)에 의해 N 개 컴포넌트가 포함된 중간 벡터 하나로 합병한다. 콘볼루션 수용야가 순회에 의해 A*B개(X 방향이 A 개, Y 방향이 B 개, X와 Y는 삼차원 직교 좌표계의 좌표축)입력 데이터xi를 얻는 경우, A*B 개 xi에 대해 상기 콘볼루션 연산을 진행하고, 얻은 모든 벡터는 1차 연산 모듈에서 합병되어 A*B*N의 삼차원 중간 결과를 획득한다.
도 5는 본 발명 실시예에 따른 콘볼루션 신경망 정방향 계산 장치 중 1차 연산 모듈(5) 구조의 블록 다이어그램이다. 도 5에서 도시하는 바와 같이, 1차 연산 모듈(5)은 제1 연산 유닛(51), 제1 데이터 종속성 판정 유닛(52)과 제1 저장 유닛(53)을 포함한다.
여기에서, 제1 연산 유닛(51)은 벡터 더하기 유닛(511)과 활성화 연산 유닛(512)을 포함한다. 제1 연산 유닛(51)은 컨트롤러 유닛으로부터 송출된 제어 신호를 수신해 1차 연산 모듈(5)의 각 연산 기능을 완료한다. 벡터 더하기 유닛(511)은 콘볼루션 신경망 정방향 계산 중의 바이어스 더하기 연산을 구현하는 데 사용하며, 상기 유닛은 바이어스 데이터와 상기 중간 결과를 대위 덧셈해 바이어스 결과를 획득한다. 활성화 연산 유닛(512)은 바이어스 결과에 대해 활성 함수 조작을 진행한다. 상기 바이어스 데이터는 외부 주소 공간에서 판독해 입력된 것일 수 있고 로컬에 저장된 것일 수도 있다.
제1 데어터 종속성 판정 유닛(52)은 제1 연산 유닛(51)이 제1 저장 유닛(53)의 포트를 판독해 기록함으로써 제1 저장 유닛(53) 중 데이터의 판독 기록 일치성을 보장한다. 제1 데이터 종속성 판정 유닛(52) 또한 제1 저장 유닛(53)에서 판독한 데이터를 인터커넥트 모듈(4)을 통해 2차 연산 모듈로 송출하고 2차 연산 모듈(6)의 출력 데이터를 인터커넥트 모듈(4)을 통해 직접 제1 연산 유닛(51)으로 송출하는 것을 책임진다. 컨트롤러 유닛(2)이 출력한 명령은 계산 유닛(51)과 제1 데이터 종속성 판정 유닛(52)에 송출해 그의 행위를 제어한다.
저장 유닛(53)은 1차 연산 모듈(5)이 계산 과정에서 사용하는 입력데이터와 출력데이터를 캐싱(caching)하는 데 사용된다.
도 6은 본 발명 실시예에 따른 콘볼루션 신경망 정방향 계산 장치 중 2차 연산 모듈(6) 규조의 블록 다이어그램이다. 도 4에서 도시하는 바와 같이, 각 2차 연산 모듈(6)은 제2 연산 유닛(61), 데이터 종속성 판정 유닛(62), 제2 저장 유닛(63)과 제3 저장 유닛(64)을 포함한다.
제2 연산 유닛(61)은 컨트롤러 유닛(2)이 송출하는 제어 신호를 수신하고 콘볼루션 연산을 진행한다. 제2 연산 유닛은 벡터 곱하기 유닛(611)과 시그마 유닛(612)을 포함하고, 각각 콘볼루션 연산 중의 벡터 곱하기 연산과 시그마 연산을 책임진다.
제2 데이터 종속성 판정 유닛(62)은 계산 과정에서 제2 저장 유닛(63)에 대한 판독 기록 조작을 책임진다. 제2 데이터 종속성 판정 유닛(62)은 판독 기록 조작을 진행하기 전에 먼저 명령 간에 사용되는 데이터에 대한 판독과 기록의 일치성을 보장한다. 예를 들어 데이터 종속성 판정 유닛(62)으로 발송되는 모든 제어 신호는 데이터 종속성 판정 유닛(62) 내부의 명령 큐(queue)에 저장되고, 상기 큐(queue) 중 명령을 판독한 판독 데이터의 범위가 큐 위치 전방의 명령 및 데이터 기록 범위와 충돌이 발생하는 경우, 상기 명령은 반드시 종속성 기록 명령이 실행된 후 실행해야 한다.
제2 저장 유닛(63)은 상기 2차 연산 모듈(6)의 입력 데이터와 출력 스칼라 데이터를 캐싱한다.
제3 저장 유닛(64)은 상기 2차 연산 모듈(6)이 계산 과정에서 필요하는 콘볼루션 커널 데이터를 캐싱한다.
도 7은 본 발명 실시예에 따른 콘볼루션 신경망 연산 장치의 콘볼루션 신경망 실행 흐름도를 도시한 것이다. 도 7에서 도시하는 바와 같이, 콘볼루션 신경망 명령 실행 과정은 아래 단계를 포함한다.
단계 S1: 명령 저장 유닛(1)의 첫 주소에 하나의 IO 명령을 사전 저장한다.
단계 S2: 연산을 시작하며, 컨트롤러 유닛(2)이 명령 저장 유닛(1)의 첫 주소에서 상기 IO 명령을 판독하고, 디코딩한 제어 명령에 의거하여 데이터 엑세스 유닛(3)은 외부 주소 공간에서 상응되는 모든 콘볼루션 신경망 연산 명령을 판독하며, 이를 명령 저장 유닛(1) 내에 캐싱한다.
단계 S3: 컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음 IO명령을 판독하여 입력하고, 디코딩한 제어 명령에 의거하여 데이터 엑세스 유닛(3)은 외부 주소 공간에서 1차 연산 모듈(5)이 필요하는 모든 데이터(예를 들어 입력 데이터, 신속한 활성 함수 연산에 사용되는 보간 테이블, 연산 유닛 파라미터의 설정에 사용되는 상수 테이블, 바이어스 데이터 등 포함)를 1차 연산 모듈(5)의 제1 저장 유닛(53)까지 판독한다.
단계 S4: 컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음 IO명령을 판독하여 입력하고, 디코딩한 제어 신호에 의거하여 데이터 엑세스 유닛(3)은 외부 주소 공간에서 2차 연산 모듈(6)이 필요하는 콘볼루션 커널 데이터를 판독한다.
단계S5: 컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음 CONFIG 명령을 판독하여 입력하고, 디코딩한 제어 신호에 의거하여 장치는 상기 층 신경망 계산에 필요한 각종 상수를 배치한다. 예를 들어 제1 연산 유닛(51)과 제2 연산 유닛(61)은 제어 신호 내의 파라미터에 의거하여 유닛 내부 레지스터의 수치를 배치하고, 상기 파라미터는 활성 함수와 같이 필요한 데이터를 포함한다.
단계 S6: 컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음 COMPUTE명령을 판독하여 입력하고, 디코딩한 제어 신호에 의거하여 1차 연산 모듈(5)은 먼저 인터커넥트 모듈(4)을 통하여 콘볼루션 수용야 내의 입력 데이터를 각 2차 연산 모듈(6)로 발송해 2차 연산 모듈(6)의 제2 저장 유닛(63)에 저장한 후, 다시 명령에 의거하여 콘볼루션 수용야를 이동한다.
단계 S7: COMPUTE 명령이 디코딩한 제어 신호에 의거하여 2차 연산 모듈(6)의 연산 유닛(61)은 제3 저장 유닛(64)에서 콘볼루션 커널을 판독하고, 제2 저장 유닛(63)에서 입력 신호를 판독해 입력함으로써 입력 데이터와 콘볼루션 커널의 콘볼루션 연산을 완료하고 중간 결과를 인터커넥트 모듈(4)을 통해 반환한다.
단계 S8: 인터커넥트 모듈(4)에 있어서, 각 2차 연산 모듈(6)이 반환한 중간 결과를 단계적으로 완벽한 중간 벡터로 조합한다.
단계 S9: 1차 연산 모듈(5)은 인터커넥트 모듈(4)이 반환한 중간 벡터를 획득하고, 콘볼루션 수용야는 모든 입력 데이터를 순회하며, 1차 연산 모듈은 모든 반환 벡터를 중간 결과로 조합함으로써 COMPUTE명령이 디코딩한 제어 신호에 의거하여 제1 저장 유닛(53)에서 바이어스 데이터를 판독하고 벡터 더하기 유닛(511)을 통해 중간 결과와 덧셈해 바이어스 결과를 획득한 후, 활성 유닛(512)이 바이어스 결과를 활성화 해 최후 출력 데이터를 제1 저장 유닛(53) 내에 기록한다.
단계 S10: 컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음IO 명령을 판독하여 입력하고, 디코딩한 제어 신호에 의거하여 데이터 엑세스 유닛(3)은 제1 저장 유닛(53) 중의 출력 데이터를 외부 주소 공간 지정 주소에 까지 저장해 연산을 종료한다.
다층 인공 신경망 콘볼루션층은 그 구현 과정이 단층 신경망 콘볼루션층과 유사하며, 이전 층 콘볼루션 신경망 실행을 완료한 후 다음 층의 연산 명령은 1차 연산 유닛에 저장된 이전 층의 출력 데이터 주소를 본 층의 입력 데이터 주소로 삼고, 명령 중의 콘볼루션 커널과 바이어스 데이터 주소도 본 층에서 대응하는 주소로 변경될 수 있다.
콘볼루션 신경망 정방향 연산 실행용 장치와 명령 집합을 채택하여 CPU와 GPU의 연산 성능 부족과 전단 디코딩 비용이 큰 문제를 해결하였다. 또한 다층 콘볼루션 신경망 정방향 연산에 대한 지원을 효과적으로 향상시킨다.
다층 콘볼루션 신경망 정방향 연산 전용 온칩 캐시를 채택하여 입력 뉴런과 콘볼루션 커널 데이터의 재사용성을 충분히 발굴하며, 반복적으로 메모리가 이러한 데이터를 판독하는 것을 방지하고 메모리 엑세스 대역폭을 낮추며 메모리 대역폭이 다층 콘볼루션 신경망 정방향 연산 성능 병목이 되는 현상을 방지한다.
앞서 도면에서 기재한 진행과정 또는 방법에는 하드웨어(예를 들어 회로, 전용 논리 등), 펌웨어, 소프트웨어(예를 들어 구체화된 비일시적 컴퓨터 판독 가능 매체의 소프트웨어)를 포함할 수 있으며, 또는 양자 조합의 처리 논리(processing logic)로 실행할 수 있다. 비록 상기 내용이 특정 순서 조작에 따라 진행과정 또는 방법을 설명하기는 하나, 상기에서 설명한 특정 조작은 다른 순서로 실행할 수 있다. 그 외 병렬하여 비(非)순서적으로 일부 조작을 실행할 수 있다.
상기 발명의 설명에서는 특정한 예시적 실시예를 참조하여 본 발명의 각 실시예를 설명하였다. 각 실시예에 대하여 진행할 수 있는 각종 수식은 상기 첨부한 특허청구범위에 있어서 본 발명의 더욱 광범위한 정신과 범위에 위배되지 않는다. 이에 상응하여, 발명의 설명과 첨부 도면은 설명을 위한 것이므로 본 발명을 한정하지 않는다.

Claims (11)

  1. 명령 저장 유닛, 컨트롤러 유닛, 데이터 엑세스 유닛, 인터커넥트 모듈, 1차 연산 모듈과 복수개 2차 연산 모듈을 포함하되;
    명령 저장 유닛은 데이터 엑세스 유닛을 통해 명령을 판독하고 판독한 명령을 저장하는 데 사용되고;
    컨트롤러 유닛은 명령 저장 유닛으로부터 명령을 판독하고 명령을 기타 모듈 행위를 제어하는 제어 신호로 디코딩하는 데 사용되고 상기 기타 모듈에는 데이터 엑세스 유닛, 1차 연산 모듈과 상기 복수개 2차 연산 모듈이 포함되며;
    데이터 엑세스 유닛은 외부 주소 공간과 상기 장치 간의 데이터 또는 명령을 판독 및 기록하는 데 사용되고;
    2차 연산 모듈은 콘볼루션 신경망 알고리즘 중의 입력 데이터와 콘볼루션 커널의 콘볼루션 연산을 구현하는 데 사용되며;
    인터커넥트 모듈은 상기 1차 연산 모듈과 상기 2차 연산 모듈 간에 데이터를 전송하고 신경망 완전연결층 정방향 연산이 시작되기 전에 1차 연산 모듈이 인터커넥트 모듈을 통해 입력 데이터를 각 2차 연산 모듈로 전송하며 2차 연산 모듈의 계산 과정이 완료된 후 인터커넥트 모듈이 단계적으로 각 2차 연산 모듈의 출력 스칼라를 중간 벡터로 합산해 1차 연산 모듈로 반환하는 데 사용되고;
    1차 연산 모듈은 모든 입력 데이터의 중간 벡터를 중간 결과로 조합하고 상기 중간 결과에 대해 후속 연산을 실행하는 데 사용되는 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  2. 제1항에 있어서,
    1차 연산 모듈은 중간 결과와 바이어스 데이터를 더한 후 활성화 조작을 실행하는 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  3. 제1항에 있어서,
    복수개 2차 연산 모듈은 동등한 입력 데이터와 각자의 콘볼루션 커널을 이용해 각자의 출력 스칼라를 병렬 계산하는 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  4. 제1항에 있어서,
    1차 연산 모듈이 사용하는 활성 함수 active는 비선형 함수 sigmoid, tanh, relu, softmax 중 어느 하나 또는 선형 함수인 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  5. 제1항에 있어서,
    인터커넥트 모듈은 1차 연산 모듈과 상기 복수개 2차 연산 모듈 간의 연속 또는 양자화 데이터에 대한 데이터 경로를 구성하고 인터커넥트 모듈은 트리 구조, 링 구조, 메쉬 구조, 단계적 인터커넥트, 버스 구조 중 임의의 어느 하나 구조인 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  6. 제1항에 있어서,
    1차 연산 모듈은 제1 저장 유닛, 제1 연산 유닛, 제1데이터 종속성 판정 유닛과 제1 저장 유닛을 포함하되;
    제1저장 유닛은 1차 연산 모듈(5)이 계산 과정에서 사용하는 입력데이터와 출력데이터를 캐싱(caching)하는 데 사용되고;
    제1 연산 유닛은 1차 연산 모듈의 각종 연산 기능을 완료하는 데 사용되며;
    제1 데이터 종속성 판정 유닛은 제1 연산 유닛이 제1 저장 유닛의 포트를 판독해 기록하고 제1 저장 유닛 데이터의 판독 기록 일치성을 보장하는 동시에 제1 저장 유닛에서 입력된 뉴런 벡터를 판독함으로써 인터커넥트 모듈을 통해 2차 연산 모듈로 송출하며; 인터커넥트 모듈로부터 발송된 중간 벡터를 제1 연산 유닛으로 송출하는 데 사용하는 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  7. 제1항에 있어서,
    각 2차 연산 모듈은 제2 연산 유닛, 제2 데이터 종속성 판정 유닛, 제2 저장 유닛과 제3 저장 유닛을 포함하되;
    제2 연산 유닛은 컨트롤러 유닛이 송출하는 제어 신호를 수신해 산수 논리 연산을 진행하는 데 사용되고,
    제2 데이터 종속성 판정 유닛은 계산 과정에서 제2 저장 유닛과 제3 저장 유닛의 판독 및 기록 조작을 책임지고 제2 저장 유닛과 제3 저장 유닛의 판독 및 기록 일치성을 보장하는 데 사용되며;
    제2 저장 유닛은 입력 데이터와 상기 2차 연산 모듈이 계산해 얻은 출력 스칼라를 캐싱하는데 사용되고;
    제3 저장 유닛은 상기 2차 연산 모듈이 계산 과정에서 필요하는 콘볼루션 커널을 캐싱하는 데 사용되는 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  8. 제6항 또는 제7항에 있어서,
    제1 데이터 종속성 판정 유닛과 제2 데이터 종속성 판정 유닛은 아직 실행하지 않은 제어 신호와 실행 중인 제어 신호의 데이터 간에 종속 관계가 존재하는 여부를 판단해 종속 관계가 존재하면 상기 제어 신호의 즉시 발송을 허락하고 아니면 상기 제어 신호가 종속하는 모든 제어 신호가 전부 실행 완료된 후에야 상기 제어 신호의 발송을 허락함으로써 판독과 기록의 일치성을 보장하는 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  9. 제1항에 있어서,
    데이터 엑세스 유닛은 외부 주소 공간에서 입력 데이터, 바이어스 데이터 또는 콘볼루션 커널 중의 적어도 하나를 판독해 입력하는 것을 특징으로 하는 콘볼루션 신경망 정방향 연산 실행용 장치.
  10. 명령 저장 유닛(1)의 첫 주소에 하나의 IO 명령을 사전 저장하는 단계 S1;
    연산을 시작하며, 컨트롤러 유닛(2)이 명령 캐시 유닛(1)의 첫 주소에서 상기 IO 명령을 판독하고, 디코딩한 제어 명령에 의거하여 데이터 엑세스 유닛(3)은 외부 주소 공간에서 상응되는 모든 콘볼루션 신경망 연산 명령을 판독하며, 이를 명령 저장 유닛(1) 내에 캐싱하는 단계 S2;
    컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음 IO명령을 판독하여 입력하고, 디코딩한 제어 명령에 의거하여 데이터 엑세스 유닛(3)은 외부 주소 공간에서 1차 연산 모듈(5)이 필요하는 모든 데이터(예를 들어 입력 데이터, 신속한 활성 함수 연산에 사용되는 보간 테이블, 연산 유닛 파라미터의 설정에 사용되는 상수 테이블, 바이어스 데이터 등 포함)를 1차 연산 모듈(5)의 제1 저장 유닛(53)까지 판독하는 단계 S3;
    컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음 IO명령을 판독하여 입력하고, 디코딩한 제어 신호에 의거하여 데이터 엑세스 유닛(3)은 외부 주소 공간에서 2차 연산 모듈(6)이 필요하는 콘볼루션 커널 데이터를 판독하는 단계 S4;
    컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음 CONFIG 명령을 판독하여 입력하고, 디코딩한 제어 신호에 의거하여 장치는 상기 층 신경망 계산에 필요한 각종 상수를 배치하되, 예를 들어 제1 연산 유닛(51)과 제2 연산 유닛(61)은 제어 신호 내의 파라미터에 의거하여 유닛 내부 레지스터의 수치를 배치하고, 상기 파라미터는 활성 함수와 같이 필요한 데이터를 포함하는 단계S5;
    컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음 COMPUTE명령을 판독하여 입력하고, 디코딩한 제어 신호에 의거하여 1차 연산 모듈(5)은 먼저 인터커넥트 모듈(4)을 통하여 콘볼루션 수용야 내 입력 데이터를 각 2차 연산 모듈(6)로 발송해 2차 연산 모듈(6)의 제2 저장 유닛(63)에 저장한 후, 다시 명령에 의거하여 콘볼루션 수용야를 이동하는 단계 S6;
    COMPUTE 명령이 디코딩한 제어 신호에 의거하여 2차 연산 모듈(6)의 연산 유닛(61)은 제3 저장 유닛(64)에서 콘볼루션 커널을 판독하고, 제2 저장 유닛(63)에서 입력 신호를 판독해 입력함으로써 입력 데이터와 콘볼루션 커널의 콘볼루션 연산을 완료하고 중간 결과를 인터커넥트 모듈(4)을 통해 반환하는 단계 S7;
    인터커넥트 모듈(4)에 있어서, 각 2차 연산 모듈(6)이 반환한 중간 결과를 단계적으로 완벽한 중간 벡터로 조합하는 단계 S8;
    1차 연산 모듈(5)은 인터커넥트 모듈(4)이 반환한 중간 벡터를 획득하고, 콘볼루션 수용야는 모든 입력 데이터를 순회하며, 1차 연산 모듈은 모든 반환 벡터를 중간 결과로 조합함으로써 COMPUTE명령이 디코딩한 제어 신호에 의거하여 제1 저장 유닛(53)에서 바이어스 데이터를 판독하고 벡터 더하기 유닛(511)을 통해 중간 결과와 덧셈해 바이어스 결과를 획득한 후, 활성 유닛(512)이 바이어스 결과를 활성화 해 최후 출력 데이터를 제1 저장 유닛(53) 내에 기록하는 단계 S9;
    컨트롤러 유닛(2)은 이어서 명령 저장 유닛에서 다음IO 명령을 판독하여 입력하고, 디코딩한 제어 신호에 의거하여 데이터 엑세스 유닛(3)은 제1 저장 유닛(53) 중의 출력 데이터를 외부 주소 공간 지정 주소에 까지 저장해 연산을 종료하는 단계 S10을 포함하는 것을 특징으로 하는 단층 콘볼루션 신경망 정방향 연산 실행 방법.
  11. 각 층이 제10항에 따른 방법을 실행해 이전 층 콘볼루션 신경망 실행을 완료한 후 다음 층의 연산 명령은 1차 연산 유닛에 저장된 이전 층의 출력 데이터 주소를 본 층의 입력 데이터 주소로 삼고, 명령 중의 콘볼루션 커널과 바이어스 데이터 주소도 본 층에서 대응하는 주소로 변경하는 것을 특징으로 하는 다층 콘볼루션 신경망 정방향 연산 실행 방법.
KR1020187033947A 2016-04-29 2016-05-04 콘볼루션 신경망 정방향 연산 실행용 장치와 방법 KR102402111B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610282534.7A CN107329734B (zh) 2016-04-29 2016-04-29 一种用于执行卷积神经网络正向运算的装置和方法
CN201610282534.7 2016-04-29
PCT/CN2016/080967 WO2017185386A1 (zh) 2016-04-29 2016-05-04 一种用于执行卷积神经网络正向运算的装置和方法

Publications (2)

Publication Number Publication Date
KR20190003610A true KR20190003610A (ko) 2019-01-09
KR102402111B1 KR102402111B1 (ko) 2022-05-25

Family

ID=60161791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187033947A KR102402111B1 (ko) 2016-04-29 2016-05-04 콘볼루션 신경망 정방향 연산 실행용 장치와 방법

Country Status (5)

Country Link
US (2) US10592801B2 (ko)
EP (1) EP3451157B1 (ko)
KR (1) KR102402111B1 (ko)
CN (4) CN111860813B (ko)
WO (1) WO2017185386A1 (ko)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111860813B (zh) 2016-04-29 2024-01-16 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络正向运算的装置和方法
US10908962B1 (en) * 2017-06-12 2021-02-02 Apple Inc. System and method to share GPU resources
CN109784125A (zh) * 2017-11-10 2019-05-21 福州瑞芯微电子股份有限公司 深度学习网络处理装置、方法及图像处理单元
US11468332B2 (en) * 2017-11-13 2022-10-11 Raytheon Company Deep neural network processor with interleaved backpropagation
CN111105024B (zh) * 2017-12-14 2024-03-01 中科寒武纪科技股份有限公司 神经网络处理器板卡及相关产品
WO2019114842A1 (zh) 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN111242294B (zh) * 2017-12-14 2023-08-25 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109978157B (zh) * 2017-12-28 2020-06-02 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109978158B (zh) * 2017-12-28 2020-05-12 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109976887B (zh) * 2017-12-28 2020-03-24 中科寒武纪科技股份有限公司 调度方法及相关装置
CN109978155A (zh) * 2017-12-28 2019-07-05 北京中科寒武纪科技有限公司 集成电路芯片装置及相关产品
CN109074335A (zh) * 2017-12-29 2018-12-21 深圳市大疆创新科技有限公司 数据处理方法、设备、dma控制器及计算机可读存储介质
EP3624019A4 (en) 2017-12-30 2021-03-24 Cambricon Technologies Corporation Limited CHIP DEVICE WITH INTEGRATED CIRCUIT AND ASSOCIATED PRODUCT
CN109993289B (zh) 2017-12-30 2021-09-21 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109993290B (zh) * 2017-12-30 2021-08-06 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109993292B (zh) 2017-12-30 2020-08-04 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN110163349B (zh) * 2018-02-12 2021-03-23 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110147249B (zh) * 2018-02-12 2021-02-09 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN110197263B (zh) * 2018-02-27 2020-10-09 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
WO2019190185A1 (ko) * 2018-03-30 2019-10-03 삼성에스디에스 주식회사 인공지능을 이용한 시계열 데이터 학습 및 분석 방법
CN108470211B (zh) * 2018-04-09 2022-07-12 郑州云海信息技术有限公司 一种卷积计算的实现方法、设备和计算机存储介质
US11941501B2 (en) * 2018-05-30 2024-03-26 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
CN110874605B (zh) * 2018-08-31 2024-05-03 嘉楠明芯(北京)科技有限公司 图像识别处理方法和装置
CN110874632B (zh) * 2018-08-31 2024-05-03 嘉楠明芯(北京)科技有限公司 图像识别处理方法和装置
US11423284B2 (en) * 2018-09-07 2022-08-23 Black Sesame Technologies, Inc Subgraph tile fusion in a convolutional neural network
US10331983B1 (en) * 2018-09-11 2019-06-25 Gyrfalcon Technology Inc. Artificial intelligence inference computing device
CN109146065B (zh) * 2018-09-30 2021-06-08 中国人民解放军战略支援部队信息工程大学 二维数据的卷积运算方法及装置
CN111026440B (zh) * 2018-10-09 2022-03-29 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110096283A (zh) * 2018-10-12 2019-08-06 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110119807B (zh) * 2018-10-12 2021-11-09 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110096310B (zh) * 2018-11-14 2021-09-03 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111062483A (zh) * 2018-10-16 2020-04-24 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111124497B (zh) * 2018-10-11 2022-03-29 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111047027A (zh) * 2018-10-12 2020-04-21 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111079911B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、***及相关产品
CN111079915B (zh) * 2018-10-19 2021-01-26 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
US11354888B2 (en) * 2018-11-16 2022-06-07 GM Global Technology Operations LLC Method and apparatus for a neural network
CN111260045B (zh) * 2018-11-30 2022-12-02 上海寒武纪信息科技有限公司 译码器和原子指令解析方法
CN109558564B (zh) * 2018-11-30 2022-03-11 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
TWI696961B (zh) 2018-12-12 2020-06-21 財團法人工業技術研究院 深度神經網路硬體加速器與其操作方法
CN109726800B (zh) * 2018-12-29 2019-12-24 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN109736910A (zh) * 2019-01-14 2019-05-10 珠海格力电器股份有限公司 蒸汽处理方法和烹饪器具
US11526753B2 (en) * 2019-02-12 2022-12-13 Irida Labs S.A. System and a method to achieve time-aware approximated inference
CN109857460B (zh) * 2019-02-20 2021-09-21 南京华捷艾米软件科技有限公司 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及***
CN111626399B (zh) * 2019-02-27 2023-07-28 中国科学院半导体研究所 卷积神经网络计算装置、数据计算方法
CN113396425B (zh) * 2019-03-25 2023-08-22 杭州飞步科技有限公司 加速方法、装置和片上***
CN111831328A (zh) * 2019-04-18 2020-10-27 华为技术有限公司 数据处理的方法及装置
CN111966306A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
US20210089873A1 (en) * 2019-09-24 2021-03-25 Alibaba Group Holding Limited Apparatus and system for execution of neural network
CN111047036B (zh) * 2019-12-09 2023-11-14 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
CN110851787B (zh) * 2020-01-14 2020-05-08 中科寒武纪科技股份有限公司 合并指令处理方法、装置、电子设备和存储介质
US11568021B2 (en) 2020-02-21 2023-01-31 Alibaba Group Holding Limited Vector-vector multiplication techniques for processing systems
CN112348179B (zh) * 2020-11-26 2023-04-07 湃方科技(天津)有限责任公司 一种高效的卷积神经网络运算指令集架构构建方法及装置、服务器
CN112597079B (zh) * 2020-12-22 2023-10-17 上海安路信息科技股份有限公司 卷积神经网络加速器的数据回写***
CN112799599B (zh) * 2021-02-08 2022-07-15 清华大学 一种数据存储方法、计算核、芯片和电子设备
CN112596684B (zh) 2021-03-08 2021-06-22 成都启英泰伦科技有限公司 一种用于语音深度神经网络运算的数据存储方法
CN114492781A (zh) * 2022-04-02 2022-05-13 苏州浪潮智能科技有限公司 一种硬件加速器及数据处理方法、***、设备、介质
CN115393174B (zh) * 2022-10-27 2023-03-24 之江实验室 一种粗粒度的图像神经网络加速器指令集架构方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5204938A (en) * 1989-05-30 1993-04-20 Loral Aerospace Corp. Method of implementing a neural network on a digital computer
US9153230B2 (en) * 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583964A (en) * 1994-05-02 1996-12-10 Motorola, Inc. Computer utilizing neural network and method of using same
US6606614B1 (en) * 2000-08-24 2003-08-12 Silicon Recognition, Inc. Neural network integrated circuit with fewer pins
CN100545804C (zh) * 2003-08-18 2009-09-30 上海海尔集成电路有限公司 一种基于cisc结构的微控制器及其指令集的实现方法
CN1331092C (zh) * 2004-05-17 2007-08-08 中国科学院半导体研究所 模式识别专用神经网络计算机***
US7747070B2 (en) * 2005-08-31 2010-06-29 Microsoft Corporation Training convolutional neural networks on graphics processing units
JP5171118B2 (ja) * 2007-06-13 2013-03-27 キヤノン株式会社 演算処理装置及びその制御方法
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
CN102637157B (zh) * 2011-02-15 2014-12-03 郑磊 一种片上数字模板***dtsoc
KR101382703B1 (ko) * 2012-08-28 2014-04-08 인하대학교 산학협력단 증강현실 기술과 대용량 데이터의 통합을 위한 상호작용 방법 및 장치
US9811775B2 (en) * 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
CN103199806B (zh) * 2013-02-04 2015-12-02 中国科学院电子学研究所 对传感器信号处理的可编程的模拟单元
CN103150596B (zh) * 2013-02-22 2015-12-23 百度在线网络技术(北京)有限公司 一种反向传播神经网络dnn的训练***
CN104346622A (zh) * 2013-07-31 2015-02-11 富士通株式会社 卷积神经网络分类器及其分类方法和训练方法
CN104809426B (zh) * 2014-01-27 2019-04-05 日本电气株式会社 卷积神经网络的训练方法、目标识别方法及装置
CN104063719B (zh) * 2014-06-27 2018-01-26 深圳市赛为智能股份有限公司 基于深度卷积网络的行人检测方法及装置
FR3025344B1 (fr) * 2014-08-28 2017-11-24 Commissariat Energie Atomique Reseau de neurones convolutionnels
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
CN105184366B (zh) * 2015-09-15 2018-01-09 中国科学院计算技术研究所 一种时分复用的通用神经网络处理器
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105512723B (zh) * 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN111860813B (zh) 2016-04-29 2024-01-16 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络正向运算的装置和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5204938A (en) * 1989-05-30 1993-04-20 Loral Aerospace Corp. Method of implementing a neural network on a digital computer
US9153230B2 (en) * 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Kalin Ovtcharov et al., "Accelerating Deep Convolutional Neural Networks Using Specialized Hardware," Microsoft White Paper (2015.02.22)* *
Yunji Chen et al., "DaDianNao: A Machine-Learning Supercomputer," 2014 47th Annual IEEE/ACM International Symposium on Microarchitecture (2014.12.13.)* *

Also Published As

Publication number Publication date
CN111860813B (zh) 2024-01-16
EP3451157B1 (en) 2023-09-27
CN107704267A (zh) 2018-02-16
US20200110983A1 (en) 2020-04-09
CN107329734A (zh) 2017-11-07
CN107704267B (zh) 2020-05-08
US10592801B2 (en) 2020-03-17
WO2017185386A1 (zh) 2017-11-02
EP3451157A1 (en) 2019-03-06
CN109086877A (zh) 2018-12-25
KR102402111B1 (ko) 2022-05-25
CN111860813A (zh) 2020-10-30
US20190073583A1 (en) 2019-03-07
CN109086877B (zh) 2020-05-08
EP3451157A4 (en) 2020-01-15
CN107329734B (zh) 2020-08-07

Similar Documents

Publication Publication Date Title
KR20190003610A (ko) 콘볼루션 신경망 정방향 연산 실행용 장치와 방법
KR102486030B1 (ko) 완전연결층 신경망 정방향 연산 실행용 장치와 방법
KR102544275B1 (ko) 콘볼루션 신경망 트레이닝 실행용 장치와 방법
US11922132B2 (en) Information processing method and terminal device
KR102470264B1 (ko) 완전연결층 신경망 역방향 트레이닝 실행용 장치와 방법
CN107341542B (zh) 用于执行循环神经网络和lstm运算的装置和方法
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
KR102203746B1 (ko) 인공 신경망 정방향 연산 실행용 장치와 방법
KR20180102058A (ko) 인공 신경망 역방향 트레이닝 실행용 장치와 방법
WO2017185336A1 (zh) 用于执行pooling运算的装置和方法
WO2017185335A1 (zh) 一种用于执行batch normalization运算的装置和方法
CN111860814B (zh) 一种用于执行batch normalization运算的装置和方法
CN107329733B (zh) 用于执行pooling运算的装置和方法

Legal Events

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