KR20200100672A - 신경망 가속기의 시스템 및 아키텍쳐 - Google Patents

신경망 가속기의 시스템 및 아키텍쳐 Download PDF

Info

Publication number
KR20200100672A
KR20200100672A KR1020207019053A KR20207019053A KR20200100672A KR 20200100672 A KR20200100672 A KR 20200100672A KR 1020207019053 A KR1020207019053 A KR 1020207019053A KR 20207019053 A KR20207019053 A KR 20207019053A KR 20200100672 A KR20200100672 A KR 20200100672A
Authority
KR
South Korea
Prior art keywords
processor
value
memory
filter
instruction
Prior art date
Application number
KR1020207019053A
Other languages
English (en)
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 KR20200100672A publication Critical patent/KR20200100672A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • G06N3/0454
    • 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
    • G06N3/0481
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)

Abstract

시스템은 메모리, 프로세서 및 가속기 회로를 포함한다. 상기 가속기 회로는 상기 프로세서에 의해 상기 가속기 회로에 할당된 신경망 애플리케이션의 태스크를 동시에 수행하기 위해 내부 메모리, 입력 회로 블록, 필터 회로 블록, 후처리 회로 블록 및 출력 회로 블록을 포함한다.

Description

신경망 가속기의 시스템 및 아키텍쳐
관련 출원
본 출원은 전체 내용이 본 명세서에 병합된 2017년 12월 4일자로 출원된 미국 가출원 62/594,106의 우선권을 주장한다.
기술 분야
본 발명은 하드웨어 프로세서에 관한 것으로, 보다 상세하게는 신경망 가속기 회로(neural network accelerator circuit)의 하드웨어 프로세서 및 관련 시스템 및 아키텍쳐에 관한 것이다.
프로세서는 데이터 요소에 동작하는 명령을 포함하는 명령 세트 아키텍쳐(instruction set architecture: ISA)를 구현하는 하드웨어 처리 디바이스(예를 들어, 중앙 처리 유닛(CPU) 또는 그래픽 처리 유닛(GPU))이다. 벡터 프로세서(또는 어레이 프로세서)는 데이터 요소의 벡터에 동작하는 명령을 포함하는 ISA를 구현할 수 있다. 벡터는 정렬된 스칼라 데이터 요소를 포함하는 단방향 어레이이다. 다수의 데이터 요소를 포함하는 벡터에 동작함으로써 벡터 프로세서는 단일 데이터 요소에 동작하는 스칼라(scalar) 명령만을 지원하는 스칼라 프로세서보다 상당한 성능 개선을 달성할 수 있다.
본 발명은 본 발명의 다양한 실시형태의 첨부 도면으로부터 그리고 이하의 상세한 설명으로부터 보다 완전히 이해될 수 있을 것이다. 그러나, 도면은 본 발명을 특정 실시형태로 제한하려고 의도된 것이 아니라 본 발명을 설명하고 이해하기 위해 의도된 것이다.
도 1은 본 발명의 일 구현예에 따른 일반적인 프로세서 기술의 단순 신경망(Simple Neural Network)(GSNN) 가속기 회로를 포함하는 시스템을 도시하는 도면;
도 2는 본 발명의 일 구현예에 따른 3×3 필터를 도시하는 도면;
도 3은 본 발명의 일 구현예에 따른 필터 그룹을 도시하는 도면;
도 4는 일 구현예에 따른 8개의 회로 스트라이프(circuit stripe)의 조합을 도시하는 도면;
도 5는 본 발명의 일 구현예에 따른 2개의 메모리 어드레싱 방식을 도시하는 도면;
도 6은 본 발명의 일 구현예에 따른 가속기 회로를 도시하는 도면;
도 7은 본 발명의 일 구현예에 따른 프로세서와 가속기 회로 사이의 인터페이스로서 레지스터 세트를 사용하는 시스템을 도시하는 도면;
도 8은 본 발명의 일 구현예에 따른 프로세서에 의해 GSNN 가속기 회로를 동작시키는 방법의 흐름도를 도시하는 도면; 및
도 9는 본 발명의 일 구현예에 따른 GSNN 가속기 회로를 상세히 도시하는 도면.
프로세서, 특히 벡터 프로세서는 예를 들어 신경망 애플리케이션과 같은 복잡한 계산을 수행하기 위해 사용될 수 있다. 신경망은 인공 지능(AI) 애플리케이션에 널리 사용된다. 본 발명에서 신경망은 입력 데이터에 기초하여 결정을 수행하기 위해 전기 회로 상에 구현될 수 있는 인공 신경망이다. 신경망은 하나 이상의 노드 층을 포함할 수 있다. 층은 입력 층, 숨겨진 층 또는 출력 층 중 임의의 것일 수 있다.
입력 층은 입력 데이터에 노출된 노드를 포함할 수 있고, 출력 층은 출력에 노출된 노드를 포함할 수 있다. 입력 층과 출력 층은 신경망 외부로부터 관찰될 수 있기 때문에 가시적인 층이다. 입력 층과 출력 층 사이의 층은 숨겨진 층이라고 지칭된다. 숨겨진 층은 입력 층으로부터 출력 층으로 전파되는 계산을 수행하기 위해 하드웨어로 구현된 노드를 포함할 수 있다. 계산은 예를 들어 필터 함수 및 활성화 함수와 같은 미리 결정된 함수의 공통 세트를 사용하여 수행될 수 있다. 필터 함수는 곱셈 연산 및 합산(축소(reduction)라고도 지칭됨) 연산을 포함할 수 있다. 활성화 함수는 올 패스(all-pass) 함수, 사각형 함수(rect), 시그모이드(sigmoid) 함수(sig) 또는 쌍곡선 탄젠트 함수(tanh) 중 임의의 것일 수 있다.
필터 함수와 활성화 함수의 상이한 조합을 이용하여 상이한 종류의 신경망이 형성될 수 있다. 상이한 애플리케이션을 위해 새로운 신경망 아키텍쳐가 개발됨에 따라, 상이한 애플리케이션의 요구를 충족시키기 위해 이러한 상이한 종류의 신경망을 구현하는 데 사용될 수 있는 유연한 신경망 아키텍쳐가 필요하다.
본 발명의 구현예는 상이한 종류의 신경망의 하드웨어 구현을 제공하도록 용이하게 적응될 수 있는 유연한 신경망 아키텍쳐를 포함하는 기술 솔루션을 제공한다. 일 구현예에 따른 시스템은 프로세서 및 이 프로세서에 통신 가능하게 결합된 가속기 회로를 포함할 수 있다. 프로세서는 데이터 요소에 동작하는 명령을 포함하는 명령 세트 아키텍쳐(ISA)를 구현하는 하드웨어 처리 디바이스(예를 들어, 중앙 처리 유닛(CPU) 또는 그래픽 처리 유닛(GPU))일 수 있다. 일부 구현예에서, 프로세서는 데이터 요소의 벡터에 동작하는 명령을 포함하는 ISA를 구현하는 벡터 프로세서일 수 있다.
프로세서는 일반적으로 범용 처리 디바이스이다. 프로세서는 신경망 애플리케이션을 실행하도록 프로그래밍될 수 있지만, 프로세서의 설계는 신경망의 숨겨진 층에서 계산을 수행하는 데 가장 효율적인 아키텍쳐를 제공하는 것은 아니다. 신경망 계산의 속도 및 효율을 개선하기 위해, 본 발명의 구현예는 프로세서에 연산 지원을 제공하기 위해 프로세서에 통신 가능하게 결합된 가속기 회로를 포함한다. 가속기 회로는 프로세서와 협력하여 고속 및 고효율 신경망 구현을 달성한다.
일 구현예에서, 가속기 회로는 일반적인 프로세서 기술의 단순 신경망(GSNN) 가속기 회로이다. GSNN 가속기 회로는 신경망의 계산을 가속화하기 위한 하드웨어 회로를 포함할 수 있다. 상위 레벨에서, GSNN 가속기 회로는 병렬로 동시에 실행될 수 있는 다수의 프로그래밍 가능 회로 블록을 포함할 수 있는 이종 컴퓨팅 시스템이며, 여기서 각 회로 블록은 특정 종류의 태스크(task)(예를 들어, 입력, 필터, 후처리 및 출력 등)를 수행하도록 지정될 수 있다. 회로 블록은 내부 메모리를 공유할 수 있으며, 각 회로 블록은 내부 메모리로부터 데이터를 판독하고 내부 메모리에 데이터를 기입할 수 있다. 따라서, 회로 블록은 내부 메모리를 사용하여 파라미터 데이터를 전달할 수 있다.
가속기 회로의 각 회로 블록은 동작을 제어하기 위해 자체 완전 프로그래밍 가능 처리 프로세서를 포함할 수 있다. 다른 구현예에서, 2개 이상의 (그러나 전체보다 적은) 회로 블록은 2개 이상의 회로 블록의 동작을 제어하기 위해 공통의 완전 프로그래밍 가능 처리 프로세서를 공유할 수 있다. 다른 구현예에서, 하나의 회로 블록은 회로 블록의 동작을 제어하기 위해 협력하는 하나를 초과하는 완전 프로그래밍 가능 처리 프로세서를 포함할 수 있다.
일 구현예에서, 처리 프로세서는, 회로 블록에 대한 제어 신호를 생성하고 다른 회로 블록의 처리 프로세서와 조정하기 위한 회로 구현을 갖는 축소 명령 세트 컴퓨터(RISC) 프로세서일 수 있다. 각 RISC 프로세서는 공통 명령 아키텍쳐 세트(ISA)에 따라 지정된 공통 명령 세트를 실행할 수 있는 하드웨어 프로세서이다. 또한, 각 RISC 프로세서는 각각의 RISC 프로세서에 구체적으로 할당된 태스크를 수행하기 위해 각각의 ISA에 따라 지정된 명령을 실행할 수 있다. GSNN 가속기 회로는 범용 레지스터를 포함하는 범용 레지스터 파일을 더 포함할 수 있다. 프로세서는 범용 레지스터 파일을 사용하여 상이한 회로 블록 내의 처리 프로세서들 사이의 동작을 조정하는 명령을 구현할 수 있다. 예를 들어, 특수 명령은 신경망의 제1 노드 층(생산자)으로부터 제2 노드 층(소비자)으로 파이프라인 동작을 설정할 수 있다.
일 구현예에서, 회로 필터(필터 회로 블록으로 지칭됨)는 필터 함수를 구현할 수 있다. 필터 회로 블록은 필터 회로 블록의 필터 처리 프로세서를 변경하지 않고도 다른 종류의 신경망 계산에 확장성, 즉 적응성을 달성하기 위해 다수의 복제 회로(replicated circuit) 스트라이프로 구성될 수 있다. 각각의 회로 스트라이프는 필터 회로 및 이 필터 회로에 전용된 내부 메모리의 슬라이스를 포함할 수 있다. 또한, 필터 회로 블록은 메모리 로드 팬-아웃 메커니즘(memory load fan-out mechanism)(즉, 생산자로부터 하나의 출력이 공급할 수 있는 소비자 입력의 최대 수)과 함께 1D, 2D, 및 스킵(skip) 필터 함수를 갖는 2D에서 효율적인 실행 및 데이터 재사용을 지원하는 로컬 레지스터(local register)를 포함하는 로컬 레지스터 파일을 포함할 수 있다.
일 구현예에서, 다른 별개의 회로 블록(후처리 회로 블록으로 지칭됨)은 활성화 함수를 구현할 수 있다. 후처리 회로 블록은 필터 회로 블록과 동시에 병렬로 실행될 수 있다. 활성화 함수에 더하여, 후처리 회로 블록은 또한 데시메이션 함수 및/또는 상위-N 함수의 구현을 제공할 수 있다. 다른 구현예에서, 후처리 회로 블록은 2개의 별개의 회로 블록이 아니라 공통 RISC 프로세서를 공유하는 필터 회로 블록의 필수 부분이다.
이러한 방식으로, GSNN 가속기 회로는 프로세서에 의해 상이한 종류의 신경망의 효율적인 실행을 지원하는 유연한 아키텍쳐를 제공할 수 있다. GSNN 아키텍쳐의 유연성으로 인해 하드웨어를 수정하지 않고도 높은 효율로 다양한 종류의 신경망을 수용할 수 있다.
도 1은 본 발명의 일 구현예에 따른 GSNN 가속기 회로를 포함하는 시스템(100)을 도시한다. 도 1에 도시된 바와 같이, 시스템(100)은 프로세서(102), 가속기 회로(104) 및 메모리 디바이스(106)를 포함할 수 있다. 시스템(100)은 컴퓨팅 시스템 또는 시스템온칩(system-on-a-chip: SoC)일 수 있다. 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU) 또는 임의의 적합한 유형의 처리 디바이스와 같은 하드웨어 프로세서일 수 있다. 프로세서(100)는 명령 실행 파이프라인(도시되지 않음), 레지스터 파일(도시되지 않음), 및 명령 세트 아키텍쳐(ISA)에 따라 지정된 명령을 구현하는 회로(108)를 포함할 수 있다. 명령은 명령 실행 파이프라인에 의해 처리된 마이크로 연산(마이크로 연산들)으로 분해될 수 있다.
일 구현예에서, 프로세서(100)는 벡터 명령 실행 파이프라인(도시되지 않음), 벡터 레지스터 파일(도시되지 않음), 및 벡터 명령 세트 아키텍쳐(ISA)에 따라 지정된 벡터 명령을 구현하는 회로를 포함하는 벡터 프로세서일 수 있다. 벡터 명령은 특정 개수의 데이터 요소를 포함하는 벡터에 동작할 수 있다. 일 구현예에서, 벡터 명령은 가변 길이 벡터 명령일 수 있으며, 여기서 벡터에 적용되는 연산의 수는 (미리 설정된 것이 아닌) 명령에 의해 명시적으로 지정될 수 있다. 연산의 수는 가변 길이 벡터 명령의 즉시값(immediate value)으로 직접 지정되거나 또는 대안적으로 길이 값을 저장하는 레지스터를 사용하여 간접 지정될 수 있다. 따라서, 연산의 수는 가변 길이 벡터 명령의 실행 동안 동적으로 변경될 수 있으며, 이에 의해 벡터 명령에 의해 지정된 연산의 수를 벡터의 길이보다 더 작게 (더 크게) 할 수 있다. 벡터의 길이는 벡터가 유지할 수 있는 데이터 요소의 최대 수로 정의된다. 간결한 설명을 위해, 본 발명은 스칼라 및 벡터 프로세서를 본 명세서에서 프로세서라고 지칭할 것이다. 따라서, 프로세서는, 달리 명시적으로 제시되지 않는 한, 스칼라 프로세서 또는 벡터 프로세서로 이해될 수 있다.
메모리 디바이스(106)는 프로세서(102) 및 가속기 회로(104)에 통신 가능하게 결합된 저장 디바이스를 포함할 수 있다. 일 구현예에서, 메모리 디바이스(106)는 신경망 애플리케이션에 대한 입력 데이터(112)를 저장하고, 신경망 애플리케이션에 의해 생성된 출력 데이터(114)를 저장할 수 있다. 입력 데이터(112)는 예를 들어 이미지 데이터, 음성 데이터 등과 같은 애플리케이션 데이터로부터 추출된 특징값일 수 있고, 출력 데이터는 신경망에 의해 이루어진 결정일 수 있고, 여기서 결정은 이미지에서 객체를 다른 클래스로 분류하는 것, 이미지에서 객체를 식별하는 것, 또는 음성에서 어구를 인식하는 것을 포함할 수 있다.
가속기 회로(104)는 내부 특수 목적 회로를 사용하여 연산 집약적인 태스크를 수행하기 위해 프로세서(102) 및 메모리(106)에 통신 가능하게 결합될 수 있다. 가속기 회로(104)는 프로세서(102)를 대신하여 이 태스크를 수행할 수 있다. 예를 들어, 프로세서(102)는 신경망 애플리케이션을 다수(수백 또는 수천)의 계산 태스크로 분해하고 이 태스크의 수행을 가속기 회로(104)에 위임하도록 프로그래밍될 수 있다. 가속기 회로(104)에 의해 이 태스크를 완료한 후, 프로세서(102)는 계산된 결과를 대가로 수신할 수 있다. 가속기 회로(104)는 주문형 집적 회로(ASIC), 전계 프로그래밍 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등일 수 있다.
일 구현예에서, 도 1에 도시된 바와 같이, 가속기 회로(106)는 전역 레지스터 파일(global register)(118), 입력 프로세서(120)를 포함하는 입력 회로 블록, 필터 프로세서(122)를 포함하는 필터 회로 블록, 및 후처리 프로세서(124)를 포함하는 후처리 회로 블록, 및 출력 프로세서(126)를 포함하는 출력 회로 블록을 포함할 수 있는 GSNN 가속기 회로로서 구현될 수 있다. 또한, 가속기 회로(106)는 내부 메모리(134), 및 회로 스트라이프(128A 내지 128H)로 구성된 필터 회로를 포함할 수 있다. 하나의 특정 구현예에서, 내부 메모리(134)는 2MB 멀티뱅크 메모리 디바이스일 수 있다.
일 구현예에서, 입력 프로세서(120), 필터 프로세서(122), 후처리 프로세서(124) 및 출력 프로세서(126) 각각은 대응하는 회로 블록을 제어하는 제어 신호를 생성하기 위한 회로 구현을 갖는 축소 명령 세트 컴퓨터(RISC) 프로세서일 수 있다. 따라서, 입력 프로세서(120)는 입력 회로 블록의 동작을 제어할 수 있고; 필터 프로세서(122)는 필터 회로 블록의 동작을 제어할 수 있고; 후처리 프로세서(124)는 후처리 회로 블록의 동작을 제어할 수 있고; 출력 프로세서(126)는 출력 회로 블록의 동작을 제어할 수 있다.
일 구현예에서, 필터 회로 블록은 필터 프로세서(122), 내부 메모리(134)의 부분, 및 1D, 2D, 및 스킵 필터 함수를 갖는 2D를 구현하는 필터 회로를 포함할 수 있다. 내부 메모리(134)는 입력 프로세서(120), 필터 프로세서(122), 후처리 프로세서(124) 및 출력 프로세서(126)에 의해 공유되는 가속기 회로(106) 상의 메모리일 수 있다. 내부 메모리(134)의 부분 및 필터 회로 블록의 회로 블록은 회로 스트라이프(128A 내지 128H)에 따라 구성될 수 있다. 각각의 회로 스트라이프(128A 내지 128H)는 특정 수의 필터 회로, 및 회로 스트라이프 상의 필터 회로에 전용된 내부 메모리의 대응하는 슬라이스를 포함할 수 있다. 필터 프로세서(122)는 회로 스트라이프(128A 내지 128H)의 동작을 제어할 수 있다.
일 구현예에서, 가속기 회로(106)는 8개의 회로 스트라이프(128A 내지 128H)를 포함할 수 있으며, 여기서 각각의 회로 스트라이프는 동일한 회로 구성 요소를 포함할 수 있으며, 따라서 필터 회로 블록의 확장 가능한 구성을 달성할 수 있다. 회로 스트라이프의 수는 8보다 크거나 적을 수 있다. 그러나 숫자 8은 이용 가능한 입력/출력 대역폭과 균형을 제공할 수 있다. 또한, 필터 회로 블록은 메모리 로드 팬-아웃 메커니즘(즉, 생산자로부터 하나의 출력이 공급할 수 있는 소비자 입력의 최대 수)과 함께 1D, 2D, 및 스킵 필터 함수를 갖는 2D에서 효율적인 실행 및 데이터 재사용을 지원하는 레지스터 구조를 포함할 수 있다.
가속기 회로(106)는 또한 필터 회로 블록과 병렬로 실행될 수 있는, 입력 회로 블록(도 1에 도시되지 않음), 후처리 회로 블록(도 1에 도시되지 않음), 및 출력 회로 블록(도 1에 도시되지 않음)을 포함할 수 있다. 구체적으로, 후처리 회로 블록은 활성화 함수, 데시메이션 함수 또는 상위-N 함수(프로그래밍 가능 N, 여기서 N은 1보다 큰 정수값임) 중 적어도 하나를 구현하는 회로를 포함할 수 있다. 입력 회로 블록은 메모리(104)로부터 가속기 회로(106)의 내부 메모리(134)로 데이터의 복사를 제어하기 위한 입력 프로세서(120)를 포함할 수 있다. 반대로, 출력 회로 블록은 가속기 회로(106)의 내부 메모리(134)로부터 메모리(104)로 데이터의 복사를 제어하기 위한 출력 프로세서(126)를 포함할 수 있다. 대조적으로, 필터 회로 블록 및 후처리 회로 블록은 내부 메모리로부터 입력을 판독하고, 그 출력을 내부 메모리에 기록하여, 외부 메모리(104)로부터의 일사량(insolation)을 달성할 수 있다.
동작에서, 프로세서(102)는 신경망 애플리케이션(132)의 계산을 수행하도록 할당될 수 있다. 신경망 애플리케이션(132)은 예를 들어 Java, C++, Python 등과 같은 프로그래밍 언어로 작성된 소스 코드를 포함하는 프로그램일 수 있다. 신경망 애플리케이션(132)은 신경망에 대한 적절한 가중치 파라미터를 결정하는 훈련 프로그램이거나 또는 훈련된 신경망에 기초하여 결정을 수행하는 (예를 들어, 물체를 인식하고 검출하는) 결정 프로그램일 수 있다. 프로그램의 실행 속도를 높이기 위해, 프로그래머는 가속기 회로(106)에 의해 실행될 프로그램의 소스 코드의 특정 부분에 마크업(mark-up)을 선택적으로 제공할 수 있다.
프로세서(102)는 신경망 애플리케이션(132)의 소스 코드를 하나 이상의 명령 세트 아키텍쳐(ISA)에 따라 지정된 일련의 머신 실행 가능 명령으로 변환하기 위해 컴파일러(130)를 더 실행할 수 있다. 머신 실행 가능 명령을 분류하는 것은 프로그래머가 제공한 마크업에 기초하거나 또는 컴파일러(132)가 소스 코드를 분석한 것에 기초할 수 있다. 마크업은 회로 블록(예를 들어, 필터 회로 블록)에 할당된 태스크에 대한 시작 식별자, 및 태스크에 대한 종료 식별자를 포함할 수 있다. 일 구현예에서, 이 머신 실행 가능 명령은 프로세서(102)의 실행 파이프라인에 의해 실행될 프로세서 ISA(108)에 따라 지정된 제1 클래스의 명령을 포함할 수 있다. 또한, 이 머신 실행 가능 명령은 입력 프로세서(120)에 의해 실행될 입력 ISA(110)에 따라 지정된 제2 클래스의 명령; 필터 프로세서(122)에 의해 실행될 필터 ISA(112)에 따라 지정된 제3 클래스의 명령; 후처리 프로세서(124)에 의해 실행될 후처리 ISA(114)에 따라 지정된 제4 클래스의 명령; 및 출력 ISA(116)에 따라 지정된 제5 클래스의 명령을 포함할 수 있다.
프로세서(102)는 신경망 애플리케이션에 유용한 데이터를 메모리(104)에 로딩하기 위해 제1 클래스의 명령을 실행할 수 있다. 데이터는 애플리케이션에 대한 입력 데이터이거나 및/또는 신경망 애플리케이션(132)에 대한 계수 데이터일 수 있다. 프로세서(102)는 또한 데이터 메모리 내 데이터를 가속기 회로(106)에 로딩하기 위해 제1 클래스의 명령을 실행하고, 입력 프로세서(120), 필터 프로세서(122), 후처리 프로세서(124) 및 출력 프로세서(126)에 의해 실행될 명령 메모리 내 제2, 제3, 제4, 및 제5 클래스의 명령을 실행할 수 있다. 프로세서(102)는 또한 입력 프로세서(120), 필터 프로세서(122), 후처리 프로세서(124) 및 출력 프로세서(126)에 의해 수행된 태스크를 완료하는데 필요한 초기값으로 전역 레지스터 파일(118)(및 관련 섀도우 레지스터) 내 전역 레지스터를 초기화할 수 있다.
명령 메모리에서 제2 클래스의 명령을 수신한 것에 응답하여, 입력 프로세서(120)는 예를 들어, 메모리(104)로부터 가속기 회로(106)의 내부 메모리(134)로 데이터를 복사하는 것과 같은 입력 동작을 수행하기 위해 제2 클래스의 명령을 실행할 수 있다. 명령 메모리에서 제3 클래스의 명령을 수신한 것에 응답하여, 필터 프로세서(122)는 회로 스트라이프(128A 내지 128H) 내 필터 회로를 사용하여 필터 동작을 수행하기 위해 제3 클래스의 명령을 실행할 수 있다. 필터 프로세서(122)는 입력 프로세서(120)에 의해 설정된 내부 메모리로부터 입력 데이터 및 파라미터를 판독하고, 결과를 내부 메모리에 기입할 수 있다. 명령 메모리에서 제4 클래스의 명령을 수신한 것에 응답하여, 후처리 프로세서(124)는 활성화 함수, 데시메이션 함수, 또는 상위-N 함수와 같은 후처리 동작을 수행하기 위해 제4 클래스의 명령을 실행할 수 있다. 후처리 프로세서(124)는 필터 프로세서(122)에 의해 설정된 내부 메모리로부터 입력 데이터 및 파라미터를 판독하고 결과를 내부 메모리에 기입할 수 있다. 제5 클래스의 명령을 수신한 것에 응답하여, 출력 프로세서(125)는 내부 메모리로부터 메모리(104)로 결과 데이터를 복사할 수 있다.
필터 회로 블록, 후처리 회로 블록, 입력 회로 블록 및 출력 회로 블록에 대한 상세한 설명은 이하에서 제공된다.
신경망의 중심 동작은 필터 동작이다. 필터 회로 블록은 하드웨어 회로에서 곱셈 및 축소 연산 또는
Figure pct00001
을 구현하는 필터 회로를 포함할 수 있으며, 여기서 aj(j = 1, ..., N)는 가중치값이고 xj(j = 1,..., N)는 입력값이다. 축소 연산자는 선형 연산자이고; 특히, 크기가 N=k*M인 필터는 크기(M)의 k개의 필터를 사용한 다음 결과를 합산하여 구현될 수 있으며, 여기서 k 및 M은 정수값이다.
일 구현예에서, 도 1에 도시된 GSNN 가속기 회로(106)는 미리 결정된 수(예를 들어, 9=3×3)의 엔트리의 크기를 갖는 필터의 구현을 포함하는 필터 회로를 포함할 수 있다. 도 2는 본 발명의 일 구현예에 따른 3×3 필터(200)를 도시한다. 도 2에 도시된 바와 같이, 필터(200)는 필터링될 입력값 및 가중치값일 수 있는 데이터값을 유지하는 2개의 레지스터(202, 204)를 포함할 수 있다. 데이터값은 9개의 반-정밀도(half-precision)(16 비트) 부동 소수점 수로 표현될 수 있고 9개의 곱셈기(multiplier)에 연결되어 축소 트리(208)를 형성할 수 있다. 더 큰 필터를 구현하기 위해, 필터(200)는 다른 필터의 부분 합과 축소 연산자(곱셈)의 결과를 가산하기 위해 합산 회로(206)를 포함할 수 있다. 축소 트리에 의해 생성된 중간값은 결과의 정확도를 증가시키기 위해 반-정밀도 16 비트 이외의 표현을 사용할 수 있다. 최종 결과는 16 비트의 반-정밀도로 다시 변환된다.
성능을 개선하기 위해, 본 발명의 구현은 다수의 필터를 병렬로 병합하는 필터 그룹을 제공할 수 있다. 도 3은 본 발명의 일 구현예에 따른 필터 그룹(300)을 도시한다. 도 3에 도시된 바와 같이, 그룹은 병렬로 구현된 (예로서) 4개의 필터(302A 내지 302D)를 포함할 수 있다. 신경망 계산의 경우, 필터(302A 내지 302D) 모두는 2개의 입력 레지스터 중 하나를 공유할 수 있다. GSNN에서, 가중치값을 저장하는 필터(304)는 모든 필터(302A 내지 302D)에 의해 공유될 수 있는 반면, 입력 레지스터(306A 내지 306D)는 각각의 개별 필터(302A 내지 302D)에 대한 입력값을 저장할 수 있다.
필터 프로세서(122)는 내부 메모리로부터 입력값을 입력 레지스터(306A 내지 306D)로 복사하기 위해 입력 명령을 실행할 수 있다. 입력 명령은 예를 들어 명령당 3개, 6개 또는 9개의 반-정밀도값을 복사하는 것과 같은 다른 복사 모드에 있을 수 있다. 예를 들어, wt9(가중치 9 직접) 모드는 내부 메모리로부터 9개의 하프 워드(half-word)를 가중치 레지스터의 9개 요소로 복사하는 것을 나타낼 수 있다. wt3(가중치 3 시프트) 모드는 내부 메모리로부터 3개의 하프 워드를 복사하고 3개의 하프 워드를 가중치 레지스터로 시프트하는 것을 나타낼 수 있다. wt3 모드는 프로그램이 더 큰 2D 어레이 내부로부터 3×3 어레이를 판독하는 것에 의해 9개의 값을 조립할 때 사용된다. 이 경우 프로그램은 3개의 wt3 판독 시퀀스를 사용하여 9개의 값을 가져와 매번 행으로부터 3개의 값을 판독한다.
in9(입력 9 시프트) 모드는 4개의 필터 그룹의 가장 낮은 3개의 입력 레지스터의 내용이 위쪽으로 시프트되고, 9개의 하프 워드가 메모리로부터 제1 입력 레지스터로 판독되는 것을 나타낼 수 있다. 모두 4개의 입력 레지스터를 로딩하기 위해 4개의 in9 연산이 시퀀스로 사용될 수 있다.
구현예는 기입되어야 하는 입력 레지스터를 지정하기 위한 대안적인 접근법을 포함할 수 있다. 예를 들어, 명령은 레지스터 0 내지 3 중 하나에 기입되어야 하는 9개의 하프 워드를 지정했을 수 있다. 구현예는, 시프트 접근법이 인코딩이 더 간단하고 더 많은 병렬 필터를 허용하기 때문에 대신 시프트 접근법을 선택할 수 있다. 예를 들어, 8개의 병렬 필터가 사용되는 경우, 시프트 구현은 모두 8개의 입력 레지스터를 로딩하기 위해 8개의 in9 연산을 수행할 수 있는 반면, 다른 접근법은 (레지스터 0 내지 3 대신) 레지스터 0 내지 7을 지정하도록 인코딩을 수정할 것을 요구할 수 있다.
in6(입력 6 복제) 모드는 6개의 하프 워드가 내부 메모리로부터 입력 레지스터로 복사되는 것을 나타낼 수 있다. 각 입력 레지스터의 내용은 wt3과 유사하게 3만큼 시프트되고, 3개의 하프 워드가 내부로 시프트된다(shifted in).
in9×2(스트라이드(stride)가 2인 입력 9 복제) 모드는 9개의 하프 워드가 내부 메모리로부터 입력 레지스터로 복사되는 것을 나타낼 수 있다. 각 입력 레지스터의 내용은 wt3과 유사하게 3만큼 시프트되고, 3개의 하프 워드가 내부로 시프트된다. 이 모드는 스트라이드가 2인 크기 3×3의 필터를 사용하여 컨볼루션 신경망(Convolutional Neural Network: CNN)에서 발견되는 데이터 재사용 패턴을 지원한다.
일 구현예에서, 가속기 회로 상의 회로 스트라이프는 함께 결합될 수 있는 4개의 필터 회로를 포함할 수 있다. 도 4는 일 구현예에 따른 8개의 회로 스트라이프의 조합(400)을 도시한다. 도 4에 도시된 바와 같이, 각각의 회로 스트라이프(402A 내지 402H)는 4개의 필터의 개별 그룹을 포함할 수 있다. 각 필터 그룹은 4개의 결과를 생성한다. 이러한 결과는 총 32개의 하프 워드 기입을 위해 내부 메모리(134)에 다시 기입될 수 있다. 대안적으로, 4개의 결과 각각은 내부 회로(134)에 기입되는 총 4개의 하프 워드 결과에 대해 8개의 회로 스트라이프에 걸쳐 합산 회로(404)를 사용하여 함께 합산될 수 있다.
필터 회로 블록은 또한 제로 패딩(zero-padding)을 지원할 수 있다. 제로 패딩은 3/6/9개의 입력값 중 임의의 것을 (제로 마스크의 제어 하에) 제로화(zero out)하는 것에 의해 달성될 수 있다. 특정 회로 스트라이프에 대한 필터를 (필터 마스크의 제어 하에) 디스에이블할 수 있다. 필터가 디스에이블되면 필터는 어떤 값도 판독하거나 기입하지 않는다. 결합이 완료되면 디스에이블된 슬라이스에 대한 모든 필터 출력이 제로(0)로 처리된다.
일 구현예에서, 도 1에 도시된 GSNN 가속기 회로(106)는 신경망 엔진에 의해 요구되는 후처리 함수의 구현을 포함하는 후처리 회로 블록을 포함할 수 있다. 후처리 함수는 데시메이션/풀링, 활성화 및 정렬(sort)/상위-N 함수를 포함할 수 있다. 이들 함수는 모두 내부 메모리(134)로부터 4/6/8개의 하프 워드를 판독하고, 후처리 함수를 수행하고, 레지스터의 내부 상태를 업데이트하고, 또는 2/4개의 하프 워드를 내부 메모리(134)에 기입하는 것을 수반한다.
후처리 함수는 압축 함수(compact function)(즉, 데시메이션/최대 풀링)를 포함할 수 있다. 이 압축 함수의 동작은 N개의 요소의 입력 데이터를 하나의 요소로 압축하는 것이다. 1개 내지 4개의 하프 워드는 1개의 하프 워드로 압축될 수 있다. 성능을 향상시키기 위해 다수의 압축은 병렬로 수행될 수 있다. 4개의 가능성은 다음과 같다:
Figure pct00002
4->1: 8개의 하프 워드를 입력에서 판독하고 2개의 하프 워드를 출력한다
Figure pct00003
3->1: 6개의 하프 워드를 입력에서 판독하고 2개의 하프 워드를 출력한다
Figure pct00004
2->1: 8개의 하프 워드를 입력에서 판독하고 4개의 하프 워드를 출력한다
Figure pct00005
1->1: 4개의 하프 워드를 입력에서 판독하고 4개의 하프 워드를 출력한다
압축 동작 동안 그룹의 제1 값이 선택되거나 그룹의 모든 요소 중 최대값이 선택된다. 제1 값을 선택하는 것은 데시메이션을 위해 사용되고, 최대값을 선택하는 것은 최대 풀링을 위해 사용된다.
2/4개의 압축 결과는 선택적으로 병렬로 추가로 비교될 수 있고, 2/4개의 값은 후처리 회로 블록의 로컬 레지스터에 유지되고; 이 값의 최대값이 출력에 제공된다.
출력은 내부 레지스터에 다시 기입되거나 또는 추가 처리를 위해 활성화 스테이지(stage)로 송신될 수 있다.
이 다중 스테이지 접근 방식은 최대 풀링 함수를 구현하는 데 사용될 수 있다. 예를 들어 2×2 최대 풀링을 구현하기 위해,
Figure pct00006
행(N)으로부터 8개의 요소를 최대값과 함께 사용하여 2->1 압축을 수행하고, 내부 레지스터에 기입하여 결과를 저장한다;
Figure pct00007
행(N+1)으로부터 8개의 요소를 최대값과 함께 사용하여 2->1 압축을 수행하고, 저장된 결과와 비교한 다음 4개의 결과를 출력한다.
이들 두 동작은 2개의 연산을 사용하여 4개의 2×2 최대 풀 연산을 병렬로 수행한다.
후처리 함수는 활성화 함수를 포함할 수 있다. 데시메이션 스테이지로부터 2/4개의 출력이 추가로 처리된다. 4개의 가능한 옵션이 존재한다:
Figure pct00008
없음(none)(액션 없음 항등 함수): 입력값이 변경 없이 전달되고,
또는
yi = xi
Figure pct00009
rect: 음수값(negative value)을 0으로 변환하고 변경 없이 다른 값을 전달하는 계단 함수(step function)
Figure pct00010
Figure pct00011
sig: 다음과 같이 결과를 계산하는 시그모이드 함수이다:
Figure pct00012
Figure pct00013
tanh: 다음과 같이 계산되는 쌍곡선 탄젠트 함수이다:
yi = tanh xi
후처리 함수는 상위-N 함수를 포함할 수 있다. 상위-N 함수를 구현하는 논리 회로는 어레이에서 가장 큰 N값, 및 어레이에서 가장 큰 N값의 대응하는 위치를 찾도록 최적화되며, 여기서 N은 정수값이다. 상위 N값을 찾기 위해 계산하는 것은 어레이의 모든 요소에 대해 N회 반복을 포함할 수 있다. 이 논리 회로는 전체 어레이를 정렬하는 데 사용될 수 있다. 어레이가 총 L개의 요소를 갖는 경우 상위-L을 찾으면 어레이에서 값과 그 원래 위치의 정렬된 목록이 생성될 수 있다.
내부 메모리에 저장된 어레이에서 가장 큰 값을 찾기 위해, 논리 회로는 전체 어레이가 판독될 때까지 한 번에 어레이의 4개의 요소를 판독할 수 있다. 제1 판독을 위해 가장 큰 값과 그 위치가 기록된다. 후속 판독을 위해 4개의 요소의 최대값이 기록된 최대값과 비교된다. 나중에 판독된 것의 최대값이 더 크면 이 값과 위치가 저장된다. 마지막으로 판독된 후, 마지막으로 기입된 위치와 값을 저장하기 위해 가장 큰 값과 위치가 내부 메모리에 기입된다.
후속 탐색을 위해, 마지막으로 기입된 값보다 더 크거나 마지막으로 기입된 값과 동일하지만 마지막으로 기입된 위치보다 이전이거나 또는 동일한 위치를 갖는 어레이 내 모든 값은 무시된다. N개의 가장 큰 값이 발견되면 이 메커니즘은 탐색에서 이전에 발견된 상위 N개의 값을 무시하고 그 다음 큰 값을 탐색한다. 모든 요소가 처리된 후, 그 다음 가장 큰 값과 위치가 내부 메모리에 기입되고 저장된다.
일 구현예에서, 도 1에 도시된 GSNN 가속기 회로(106)는 외부 메모리(104)로부터 내부 메모리(134)로 데이터를 복사하는 것을 담당하는 입력 회로 블록을 포함할 수 있다. 외부 메모리(104)로부터 판독된 값은 반-정밀도 부동 소수점, 부호 있는 바이트 또는 부호 없는 바이트로 지정될 수 있다. 입력 회로 블록은 바이트 값을 대응하는 반-정밀도 부동 소수점 값으로 변환할 수 있고, 여기서 부호 있는 바이트는 -128과 127 사이의 숫자로 처리되고, 부호 없는 바이트는 0과 128 사이의 숫자로 처리된다. 입력 회로 블록은 메모리(104)로부터 판독하고, 내부 메모리의 특정 메모리 어드레스에 기입한다. 대안적으로, 입력 회로 블록은 회로 스트라이프(128A 내지 128H)에 할당된 내부 메모리(134)의 각 슬라이스에 동일한 오프셋으로 각각의 값을 기입하기 위해 모든 회로 스트라이프(128A 내지 128H)로 방송할 수 있다.
일 구현예에서, 도 1에 도시된 GSNN 가속기 회로(106)는 내부 메모리로부터 데이터를 외부 메모리(104)로 복사하는 것을 담당하는 출력 회로 블록을 포함할 수 있다. 내부 메모리(134)로부터 판독된 값은 그대로 기입되거나, 반-정밀도 부동 소수점 수로서 기입되거나, 또는 부호 있는 또는 부호 없는 바이트 수로 변환될 수 있다. 부호 있는 바이트 출력이 지정된 경우 부동 소수점 수는 소수 부분을 버림(즉, 0으로 반올림)으로써 정수로 변환된다. 값이 -128과 127 사이의 범위를 벗어나면 양수값은 127로 포화되고 음수 값은 -128로 포화된다. 마찬가지로 부호 없는 바이트 출력이 지정되면 부동 소수점 값은 절단되고, 값은 255 또는 0으로 포화된다.
가속기 회로(106)는, 입력 회로 블록, 필터 회로 블록, 후처리 회로 블록 및 출력 회로 블록에 의해 공유되고 입력 프로세서(120), 필터 프로세서(122), 후처리 엔진(124), 출력 프로세서(126)에 의해 액세스 가능한 내부 메모리(134)를 포함할 수 있다. 일 구현예에서, 다수의 병렬 액세스를 허용하고 임의의 정렬에서 액세스를 허용하기 위해, 내부 메모리(134)는 메모리를 다수의 어레이로 분할함으로써 구현된다. GSNN 가속기 회로의 본 구현예에서, 512×128 비트(=16 바이트)는 어레이를 형성하고, 총 2 메가바이트의 내부 메모리를 형성하는 8 킬로바이트를 포함하는 256개의 어레이가 존재한다.
어드레싱을 위해, 어레이는 짝수/홀수 쌍으로 구성될 수 있으며, 여기서 어드레스(0 내지 15) mod 32는 짝수 어레이로부터 판독될 수 있고, 어드레스(16 내지 31) mod 32는 홀수 어레이로부터 판독될 수 있다. 짝수/홀수 어레이의 각 쌍은 뱅크를 형성할 수 있다. 따라서, 내부 메모리는 16개의 뱅크를 포함할 수 있으며, 각 뱅크는 각각 512×126 비트를 포함하는 짝수 어레이 및 홀수 어레이를 포함한다. 일 구현예에서, 어레이는 메모리 슬라이스로 더 그룹화될 수 있으며, 여기서 대응하는 회로 스트라이프에 할당된 각각의 메모리 슬라이스는 256KB의 내부 메모리와 관련될 수 있다. 따라서, 어드레스 N mod 256*1024는 슬라이스(N)에 속한다. 이러한 방식으로, 어드레스는 슬라이스의 시작 어드레스에 대해 특정 오프셋에 있는 것으로 지정될 수 있다. 대안적으로, 어드레스는 짝수/홀수 어레이 쌍의 뱅크의 라인에 속하는 것으로 지정될 수 있다. 도 5는 본 발명의 일 구현예에 따른 2개의 메모리 어드레싱 방식(500)을 도시한다. 도 5에 도시된 바와 같이, 내부 메모리는 제1 방식(502)을 사용하여 슬라이스 식별자 및 오프셋을 사용하여 어드레싱될 수 있다. 이 방식을 사용하여 내부 메모리에 액세스할 때, 명령은 슬라이스 식별자를 사용하여 내부 메모리의 슬라이스를 어드레스하고, 슬라이스의 시작 위치에 대한 오프셋을 사용하여 특정 위치를 어드레스할 수 있다.
대안적으로, 내부 메모리는 제2 방식(504)을 사용하여 도시된 메모리 뱅크 및 라인을 사용하여 어드레싱될 수 있다. 일 구현예에서, 모든 어드레스는 하프 워드 경계와 정렬될 수 있다. 이것은 어드레스의 비트 0이 위치 0에서 정렬되어야 하는 것을 의미한다. 메모리 뱅크의 짝수/홀수 쌍의 배열은 임의의 2 바이트 경계에서 시작하여 최대 9개의 하프 워드를 판독할 수 있게 한다. 예를 들어, 내부 어드레스(0×10E)에서 시작하여 4 바이트의 데이터를 기입하기 위해, 필터 프로세서(122) 또는 후처리 프로세서(124)는 뱅크(0)의 짝수 어레이의 라인(8)의 종단부에 2 바이트를 기입하고, 뱅크(0)의 홀수 어레이의 라인(8)의 시작부에 2 바이트를 기입할 수 있다. 유사하게, 어드레스(0×13ff0)에서 시작하여 18 바이트의 데이터를 판독하기 위해, 필터 프로세서(122) 또는 후처리 프로세서(124)는 뱅크(4)의 홀수 어레이의 마지막 라인으로부터 16 바이트를 판독하고, 다음 뱅크(즉, 5)의 짝수 어레이의 제1 라인으로부터 2 바이트를 판독할 수 있다. 다른 뱅크에 속하는 짝수/홀수 어레이로부터 값을 가져오는 것이 가능하지만 뱅크가 다른 슬라이스에 속하는 것은 허용되지 않는다. 그래서, 뱅크(15)와 뱅크(16)는 상이한 슬라이스에 속하기 때문에 동일한 액세스에서 뱅크(15)의 종단부로부터 그리고 뱅크(16)의 시작부로부터 판독하는 것은 가능하지 않다.
메모리 판독 또는 기입은 전역 액세스(global access) 또는 슬라이스별 액세스(per slice access)일 수 있다. 전역 액세스에서, 어드레스는 내부 메모리(134) 내 메모리 위치의 범위를 지칭한다. 이러한 인접한 범위는 판독되거나 기입된다. 슬라이스별 액세스에서, 어드레스는 슬라이스별로 하나의 범위씩, 내부 메모리(134)의 인접한 범위들에 동시에 액세스하는 것을 지칭한다. 어드레스의 오프셋은 각 슬라이스의 메모리 범위를 식별하는 데 사용될 수 있고, 이 오프셋은 각 슬라이스에서 판독되고 기입된다.
다양한 블록으로부터의 액세스는 이하에서 약술된 다른 상황에서 전역 액세스 또는 슬라이스별 액세스일 수 있다:
Figure pct00014
필터 데이터 판독은 슬라이스별 동작이다;
Figure pct00015
필터 부분 합계 판독은 결합 모드에서 실행 중인 경우 전역 동작이고, 그렇지 않은 경우 슬라이스별 동작이다;
Figure pct00016
필터 결과 기입은 결합 모드에서 실행 중인 경우 전역 동작이고, 그렇지 않은 경우 슬라이스별 동작이다;
Figure pct00017
후 판독은 전역 동작이다;
Figure pct00018
후 기입은 전역 동작이다;
Figure pct00019
입력 기입은 방송인 경우 슬라이스별 동작이고, 그렇지 않으면 전역 동작이다; 그리고
Figure pct00020
출력 기입은 전역 동작이다.
입력 회로 블록, 필터 회로 블록, 후처리 회로 블록 및 출력 회로 블록 각각은 각각의 회로 블록의 동작을 제어하기 위한 프로세서를 포함할 수 있다. 각 프로세서는 단순 32 비트 하버드 아키텍쳐 RISC 프로세서일 수 있다. 4개의 프로세서는 각각 자체 레지스터, 명령 메모리 및 데이터 메모리를 포함할 수 있고 서로 동시에 실행될 수 있다. 공유 전역 레지스터 세트도 있다. 도 6은 본 발명의 일 구현예에 따른 가속기 회로(600)를 도시한다. 도 6에 도시된 바와 같이, 가속기 회로(600)는 입력 프로세서(602A), 필터 프로세서(602B), 후처리 프로세서(602C) 및 출력 프로세서(602D)를 포함할 수 있다. 입력 프로세서(602A), 필터 프로세서(602B), 후처리 프로세서(602C) 및 출력 프로세서(602D) 각각은 각각의 명령 메모리(604A 내지 604D), 데이터 메모리(606A 내지 606D) 및 로컬 레지스터(608A 내지 608D)를 각각 포함할 수 있다. 입력 프로세서(602A), 필터 프로세서(602B), 후처리 프로세서(602C) 및 출력 프로세서(602D)는 전역 레지스터(610)를 공유할 수 있다. 이들 프로세서는 각각의 회로 블록에 대한 제어 신호 및 메모리 판독/기입 어드레스를 생성할 수 있고, 공유 상태를 사용하여 프로세서의 액션을 조정할 수 있다.
일 구현예에서, 각각의 프로세서는 다음 상태, 즉
Figure pct00021
실행될 다음 명령의 어드레스를 저장하는 32 비트 프로그램 카운터(PC);
Figure pct00022
16개의 32 비트 로컬 레지스터($r0, ..., $r15);
Figure pct00023
16개의 공유 32 비트 전역 레지스터($g0, ..., $g15);
Figure pct00024
16KB의 워드(32 비트) 어드레스 지정된 데이터 메모리; 및
Figure pct00025
16KB의 워드(32 비트) 어드레스 지정된 명령 메모리를 가질 수 있다.
도 1에 도시된 바와 같이, 입력 프로세서(602A), 필터 프로세서(602B), 후처리 프로세서(602C) 및 출력 프로세서(602D)는 각각의 ISA(110, 112, 114, 116)에 따라 지정된 명령을 각각 실행할 수 있다. ISA에 따라, 레지스터 필드는 5 비트 식별자를 저장하여 32개의 레지스터를 식별할 수 있다. 값(0 내지 15)은 레지스터($r0 내지 $r15)를 나타내는 반면, 값(16 내지 31)은 전역 레지스터($g0 내지 $g15)를 나타낼 수 있다. (분기 및 메모리 동작을 위한) 모든 즉시 어드레스는 상대 프로그램 카운터(PC)가 아닌 절대 어드레스이다. 또한, 어드레스는 32 비트(워드)의 양이다. 명령 메모리(604A 내지 604D)의 명령과 데이터 메모리(606A 내지 606D)에 저장된 데이터는 모두 32 비트 워드이다. 프로세서에 특정된 로컬 명령 및 데이터 메모리는 각각의 회로 블록을 공급하기 위해 사용되는 내부 메모리와는 다르다는 것이 주목된다.
각각의 엔진은 제어하는 블록에 대한 제어를 생성하기 위한 특수 명령과 관련될 수 있다. 이 명령은 표 1에 지정된 형식일 수 있다.
Figure pct00026
입력 프로세서는 입력 ISA(110)에 따라 지정된 다음 명령을 실행할 수 있다:
복사
Figure pct00027
범용 레지스터(RT)는 RB에 값으로 설정된다.
즉시 복사
Figure pct00028
범용 레지스터(RT)는 IMM 필드에 0 확장 16 비트값으로 설정된다.
상부 복사
Figure pct00029
범용 레지스터(RT)는 16 위치만큼 좌측으로 시프트된 RB의 값으로 설정된다.
상부 즉시 복사
Figure pct00030
범용 레지스터(RT)는 16만큼 좌측으로 시프트된 IMM 필드에 16 비트값으로 설정된다.
가산
Figure pct00031
범용 레지스터(RT)는 RA와 RB의 값의 합으로 설정된다.
즉시 가산
Figure pct00032
범용 레지스터(RT)는 RA의 값과 IMM 필드의 0 확장된 16 비트값의 합으로 설정된다.
감산
Figure pct00033
범용 레지스터(RT)는 RA의 값과 RB의 값 사이의 차이로 설정된다.
즉시 감산
Figure pct00034
범용 레지스터(RT)는 RA의 값과 IMM 필드의 0 확장 16 비트값 사이의 차이로 설정된다.
우측 시프트
Figure pct00035
범용 레지스터(RT)는 0이 내부로 시프트된 RB mod 32의 값만큼 우측으로 시프트된 RA의 값으로 설정된다.
우측 즉시 시프트
Figure pct00036
범용 레지스터(RT)는 0이 내부로 시프트된 IMM 필드의 하위 5 비트만큼 우측으로 시프트된 RA의 값으로 설정된다.
우측 산술 시프트
Figure pct00037
범용 레지스터(RT)는 RA의 부호가 내부로 시프트된 RB mod 32의 값만큼 우측으로 시프트된 RA의 값으로 설정된다.
우측 즉시 시프트
Figure pct00038
범용 레지스터(RT)는 RA의 부호가 내부로 시프트된 IMM 필드의 하위 5 비트만큼 우측으로 시프트된 RA의 값으로 설정된다.
좌측 시프트
Figure pct00039
범용 레지스터(RT)는 0이 내부로 시프트된 RB mod 32의 값만큼 좌측으로 시프트된 RA의 값으로 설정된다.
좌측 즉시 시프트
Figure pct00040
범용 레지스터(RT)는 0이 내부로 시프트된 IMM 필드의 하위 5 비트만큼 좌측으로 시프트된 RA의 값으로 설정된다.
곱셈
Figure pct00041
범용 레지스터(RT)는 RA의 값과 RB의 하위 16 비트의 곱의 하위 32 비트로 설정된다.
즉시 곱셈
Figure pct00042
범용 레지스터(RT)는 RA의 값과 IMM 필드의 곱의 하위 32 비트로 설정된다.
논리합(Or)
Figure pct00043
범용 레지스터(RT)는 RA의 값과 RB의 값의 비트 단위 논리합(OR)으로 설정된다.
즉시 논리합
Figure pct00044
범용 레지스터(RT)는 RA의 값과 IMM 필드의 0 확장 16 비트값의 비트 단위 논리합으로 설정된다.
논리곱(And)
Figure pct00045
범용 레지스터(RT)는 RA의 값과 RB의 값의 비트 단위 논리곱으로 설정된다.
즉시 논리곱
Figure pct00046
범용 레지스터(RT)는 RA의 값과 IMM 필드의 0 확장 16 비트값의 비트 단위 논리곱으로 설정된다.
배타적 논리합
Figure pct00047
범용 레지스터(RT)는 RA의 값과 RB의 값의 비트 단위 배타적 논리합으로 설정된다.
즉시 배타적 논리합
Figure pct00048
범용 레지스터(RT)는 RA의 값과 IMM 필드의 0 확장 16 비트값의 비트 단위 배타적 논리합으로 설정된다.
보수와 논리곱
Figure pct00049
범용 레지스터(RT)는 RA의 값의 보수와 RB의 값의 비트 단위 논리곱으로 설정된다.
보수와 즉시 논리곱
Figure pct00050
범용 레지스터(RT)는 RA의 값의 보수와 IMM의 0 확장 16 비트값의 비트 단위 논리곱으로 설정된다.
로드
Figure pct00051
범용 레지스터(RT)는 OFF에서 인코딩된 부호 확장 11 비트값과 RB의 합인 어드레스에서 엔진 데이터 메모리의 워드로 설정된다.
절대값 로드
Figure pct00052
범용 레지스터(RT)는 IMM 필드의 0 확장 16 비트값인 어드레스에서 엔진 데이터 메모리의 워드로 설정된다.
업데이트 로드
Figure pct00053
범용 레지스터(RT)는 OFF에서 인코딩된 부호 확장 11 비트값과 RB의 합인 어드레스에서 엔진 데이터 메모리의 워드로 설정된다. 레지스터(RB)에 저장된 값은 OFF의 부호 확장값만큼 증분된다.
RB는 로컬 레지스터이다.
저장
Figure pct00054
OFF에서 인코딩된 부호 확장 11 비트값과 RB의 합인 어드레스에서 엔진 데이터 메모리의 워드는 레지스터(RA)에 저장된 값으로 설정된다.
절대값 저장
Figure pct00055
어드레스(IMM)에서 엔진 데이터 메모리의 워드는 레지스터(RA)에 저장된 값으로 설정된다.
업데이트 저장
Figure pct00056
OFF에서 인코딩된 부호 확장 11 비트값과 RB의 합인 어드레스에서 엔진 데이터 메모리의 워드는 레지스터(RA)에 저장된 값으로 설정된다. 레지스터(RB)에 저장된 값은 OFF의 부호 확장값만큼 증분된다.
RB는 로컬 레지스터이다.
점프
Figure pct00057
Figure pct00058
상기 의사 코드(pseudo code)에 도시된 바와 같이, 점프 명령은, 실행될 때, 조건 코드(CC)값에 기초하여 범용 레지스터(RA)의 값을 0과 비교할 수 있다. 결과가 참이면 RB의 값이 PC에 로딩되고, 0b000의 CC값이 항상 참이어서, 점프는 무조건 수행된다. 0b100의 CC값은 정의되어 있지 않다.
절대값 점프
Figure pct00059
Figure pct00060
상기 의사 코드에 도시된 바와 같이, 절대값 점프 명령은, 실행될 때, 조건 코드에 기초하여 범용 레지스터(RA)의 값을 0과 비교할 수 있다. 결과가 참이면 명령의 IMM 필드 값이 PC에 로딩된다. 0b000의 CC값은 항상 참이므로 점프는 무조건 수행된다. 0b100의 CC값은 정의되어 있지 않다.
대기
Figure pct00061
Figure pct00062
상기 의사 코드에 도시된 바와 같이, 대기 명령은, 실행될 때, 조건 코드에 기초하여 범용 레지스터(RA)의 값을 0과 비교할 수 있다. 결과가 거짓이면 명령이 반복된다. 0b000의 값은 항상 참이므로 명령은 비-연산 명령이다. 0b100의 CC값은 정의되어 있지 않다.
이 명령은 엔진 간 활동을 조정하는 데 사용될 수 있다. 일반적으로 RA는 전역 레지스터이다. 엔진은 다른 엔진이 이 레지스터에 기입할 때까지 전역 레지스터에서 대기한다.
호출
Figure pct00063
범용 레지스터(RT)는 다음 명령의 어드레스로 설정되고, PC는 레지스터(RB)의 값으로 설정된다.
즉시 호출
Figure pct00064
범용 레지스터(RT)는 다음 명령의 어드레스로 설정되고, PC는 IMM 필드의 0 확장 16 비트값으로 설정된다.
입력
Figure pct00065
입력은 입력 회로 블록을 제어하기 위한 특수 명령이다. 자세한 내용은 아래 입력i(inputi) 명령을 참조하면 된다. 입력 명령에서는, 입력i 명령에서 인코딩된 즉시값 대신 RB의 값이 사용된다.
즉시 입력
Figure pct00066
Figure pct00067
입력i는 입력 블록을 제어하기 위한 특수 명령이다. 이 명령은 암시적으로 $r8, $r9, $r10, $r12, $r13 및 $r15를 사용하고 $r8, $r9 및 $r10을 업데이트한다:
Figure pct00068
값은 $r15와 $r10을 연결하여 형성된 어드레스에서 외부 메모리로부터 판독된다. 연결은 외부 어드레스가 32 비트보다 더 클 수 있기 때문에 사용된다;
Figure pct00069
판독된 값은 TYP에 기초하여 반-정밀도 값으로 처리되거나 또는 바이트로 처리될 수 있다. 이 값이 바이트인 경우 이 값은 동등한 반-정밀도 값으로 변환된다;
Figure pct00070
변환 가능한 값은 $r9로 식별된 어드레스에서 내부 메모리에 기입된다. MOD 필드의 값에 기초하여 이것은 단일 전역 기입이거나 모든 슬라이스에 대한 방송일 수 있다. 이것이 방송인 경우 $r9의 값은 각 슬라이스에서 오프셋으로 처리되고, 변환된 값은 이 오프셋으로 각 슬라이스에 기입된다. 그렇지 않은 경우 $r9는 어드레스로 취급되고, 이 값은 이 어드레스에 기입된다;
Figure pct00071
판독되는 바이트 수는 크기(SZ) 필드에 의해 지정된다; 명령이 실행될 때마다 이것은 16*(SZ+1) 바이트를 판독한다;
Figure pct00072
명령은 $r9의 값을 $r12의 값으로 증분시키고, $r10의 값을 $r13의 값으로 증분시킨다; 그리고
Figure pct00073
LP 필드가 1인 경우 명령은 $r8이 0이 될 때까지 $r8을 감분하는 것을 암시적으로 루프로 반복(loop)한다.
필터 프로세서는 필터 ISA(112)에 따라 지정된 다음 명령을 실행할 수 있다:
필터
Figure pct00074
필터는 필터 회로 블록을 제어하기 위한 특수 명령이다. 자세한 내용은 필터i(filteri) 명령을 참조하면 된다. 필터 명령에서는, 필터i 명령에서 인코딩된 즉시값 대신 RB의 값이 사용된다.
즉시 필터
Figure pct00075
Figure pct00076
Figure pct00077
필터i는 필터 블록을 제어하기 위한 특수 명령이다. 이 명령은 암시적으로 $r8 내지 $r15를 사용하고, 잠재적으로 $r8 내지 $r11을 업데이트한다.
Figure pct00078
제어는 주로 슬라이스별로 수행된다. $r15는 8개의 슬라이스 중 대응하는 슬라이스에 대한 인에이블/디스에이블 플래그를 나타내는 8개의 비트를 포함할 수 있다. $r15의 비트를 1로 설정함으로써, 필터 프로세서(122)는 대응하는 슬라이스에서의 필터링을 디스에이블할 수 있고;
Figure pct00079
필터i 명령은 $r10에 지정된 어드레스에서 내부 메모리로부터 값을 판독할 수 있고; 데이터(DATA) 필드의 값에 따라 3, 6 또는 9의 값이 판독될 수 있다;
Figure pct00080
대응하는 MASK 비트가 높은 경우 이들 값을 0으로 설정될 수 있다;
Figure pct00081
값은 가중치(WEIGHT) 또는 입력(INPUT) 내부 레지스터에 기입된다;
Figure pct00082
필터 동작의 유일한 액션은 명령을 로딩하는 것이 가능하고; 이것은 다음과 같은 경우 발생한다;
o KIND는 0b00이다;
o KIND는 0b10이고 $r8의 값은 0 mod 2가 아니다; 또는
o KIND는 0×b11이고 $r8의 값은 0 mod 4가 아니다;
Figure pct00083
그렇지 않은 경우 가중치(WEIGHT) 및 입력(INPUT)의 4개의 도트 곱이 각 슬라이스에서 연산된다;
Figure pct00084
MOD가 1(즉, 슬라이스별)이고 SUM이 1(즉, 부분 합)인 경우 4개의 값이 오프셋을 제공하기 위해 $r11을 사용하여 각 슬라이스로부터 판독되고, 각 도트 곱에 가산된다;
Figure pct00085
MOD가 1(즉, 슬라이스별)인 경우, 마지막 4개의 합이 $r9의 오프셋으로 각 슬라이스의 메모리에 기입된다;
Figure pct00086
그렇지 않은 경우 MOD가 0(즉, 전역)인 경우 인에이블된 각 슬라이스로부터 모두 4개의 합이 함께 합해져 4개의 값을 제공한다;
Figure pct00087
MOD가 0(즉, 전역)이고 SUM이 1(즉, 부분 합)인 경우 4개의 값이 어드레스로서 $r11을 사용하여 메모리로부터 전역으로 판독되고, 4개의 합 각각에 가산된다;
Figure pct00088
MOD가 0(즉, 전역)이면 마지막 4개의 합이 $r9의 어드레스에서 메모리에 기입된다;
Figure pct00089
명령은 $r10의 값을 $r13의 값으로 증분시킨다;
Figure pct00090
필터가 결과를 연산하면 $r9의 값이 $r12의 값으로 증분된다;
Figure pct00091
필터가 결과를 연산하고 SUM=0b1이면 $r11의 값은 $r14의 값으로 증분된다; 그리고
Figure pct00092
LP 필드가 1이면, 명령은 $r8의 값이 0이 될 때까지 $r8의 값을 감분하는 것을 암시적으로 루프로 반복한다.
후처리 프로세서는 후처리 ISA(114)에 따라 지정된 다음 명령을 실행할 수 있다:
후처리(post)
Figure pct00093
후처리는 후처리 회로 블록을 제어하기 위한 특수 명령이다. 자세한 내용은 아래 후처리i 명령에 대한 설명을 참조하면 된다. 후처리 명령에서는, 후처리i 명령에서 인코딩된 즉시값 대신 RB의 값이 사용된다.
즉시 후처리
Figure pct00094
Figure pct00095
Figure pct00096
Figure pct00097
후처리i는 후처리 회로 블록을 제어하기 위한 특수 명령이다. 이 명령은 암시적으로 $r8, $r9, $r10, $r12 및 $r13을 사용하고, 잠재적으로 $r8 내지 $r10을 업데이트한다. 2개의 가능한 동작 모드가 있고; 제1 동작 모드는 압축이다 [KIND=0b00 또는 KIND=0b01].
Figure pct00098
후처리i 명령은, 실행될 때, $r10에 지정된 어드레스에서 내부 메모리로부터 값을 판독할 수 있고; COL 필드의 값에 따라 4, 6 또는 8의 값이 다음과 같이 판독될 수 있다;
o COL이 0b00인 경우 4
o COL이 0b01 또는 0b10인 경우 8
o COL이 0b10인 경우 6
Figure pct00099
이 값은 COL의 값에 기초하여 4개 또는 2개의 그룹으로 그룹화된다;
o COL이 0b00인 경우 1의 4개의 그룹
o COL이 0b01인 경우 2의 4개의 그룹
o COL이 0b10인 경우 3의 2개의 그룹
o COL이 0b11인 경우 4의 2개의 그룹
Figure pct00100
그룹들은 (KIND == 0b00인 경우) 그룹의 최대값을 취하고 또는 (KIND == 0b10인 경우) 그룹의 제1 요소를 취하는 것에 의해 압축된다. COL이 0b00인 경우 변경이 없다;
Figure pct00101
ROW가 0이 아닌 경우, 압축된 요소의 최대값과 내부 상태 REG에 저장된 값이 연산된다;
Figure pct00102
ROW가 0b01이고 $r8이 0 mod 2가 아닌 경우 또는 ROW가 0b11이고 $r8이 0 mod 4가 아닌 경우 최대값은 내부 레지스터(REG)에 저장된다;
Figure pct00103
그렇지 않은 경우 최대값이 활성화 회로로 전송된다;
Figure pct00104
ACT 필드의 값에 따라 다음 함수 중 하나가 최대값에 적용된다;
o 항등 함수(ACT == 0b00)
o 계단 함수(ACT == 0b01)
o 시그모이드 함수(ACT = 0b10)
o 쌍곡선 탄젠트 함수(Tanh)(ACT = 0b11)
Figure pct00105
2개 또는 4개의 함수 결과의 합은 $r9에 저장된 어드레스에서 메모리에 기입된다;
Figure pct00106
명령은 $r10의 값을 $r13의 값으로 증분시킨다;
Figure pct00107
후처리 명령이 결과를 연산하면 $r9의 값은 $r11의 값으로 증분된다;
Figure pct00108
LP 필드가 1이면 명령은 $r8의 값이 0이 될 때까지 $r8의 값을 감분하는 것을 암시적으로 루프로 반복한다.
제2 동작 모드는 상위-N 탐색[KIND=0b10]이다.
Figure pct00109
CTL이 0b11 또는 0b10이면 내부 상태가 초기화된다.
o CTL이 0b11이면 SAVE_MAX/SAVE_POS는 +Inf 및 0으로 설정되고,
o CTL이 0b10이면 CURR_MAX/CURR_POS(이전에 결정된 최대값/위치)가 SAVE_MAX/SAVE_POS에 복사되고, 또는
o CURR_COUNT가 0으로 리셋된다.
Figure pct00110
4개의 입력값이 $r10에 지정된 어드레스에서 내부 메모리로부터 판독된다;
Figure pct00111
각 입력값에 대해 후처리 명령은 주어진 SAVE_MAX/SAVE_POS가 허용 가능한지 여부를 결정한다. 다음의 경우 허용 가능하다:
o 값이 SAVE_MAX보다 더 작은 경우, 또는
o 값이 SAVE_MAX와 같지만 값의 위치가 SAVE_POS보다 더 큰 경우
Figure pct00112
허용 가능한 각 입력값에 대해 이 값이 현재 최대값보다 더 큰 경우 그 값과 위치가 CURR_MAX 및 CURR_POS에 저장된다;
Figure pct00113
CTL이 0b01이면 CURR_MAX 및 CURR_POS는 $r9의 어드레스에서 메모리에 기입된다;
Figure pct00114
명령은 $r10의 값을 $r13의 값으로 증분시킨다;
Figure pct00115
후처리 명령이 결과를 연산하면 $r9의 값은 $r11의 값으로 증분된다; 그리고
Figure pct00116
LP 필드가 1이면 명령은 $r8의 값이 0이 될 때까지 $r8의 값을 감분하는 것을 암시적으로 루프로 반복한다.
출력 프로세서는 출력 ISA(114)에 따라 지정된 다음 명령을 실행할 수 있다:
출력
Figure pct00117
출력은 출력 회로 블록을 제어하기 위한 특수 명령이다. 자세한 내용은 아래의 출력i(outputi) 명령에 대한 설명을 참조하면 된다. 출력 명령에서는, 출력i 명령에서 인코딩된 즉시값 대신 RB의 값이 사용된다.
즉시 출력
Figure pct00118
Figure pct00119
출력i는 입력 블록을 제어하기 위한 특수 명령이다. 이 명령은 암시적으로 $r8, $r9, $r10, $r12, $r13 및 $r15를 사용하고 $r8, $r9 및 $r10을 업데이트한다.
Figure pct00120
출력i 명령은, 실행될 때, $r10에 지정된 어드레스의 내부 메모리로부터 8개의 값을 판독할 수 있다;
Figure pct00121
판독된 8개의 값은 TYP에 지정된 유형에 기초하여 반-정밀도 값으로 처리되거나 또는 바이트로 처리될 수 있다. 이 값이 바이트인 경우 이 값은 동등한 반-정밀도 값으로 변환된다;
Figure pct00122
변환 가능한 값은 $r15 및 $r9에 저장된 값들을 연결하여 형성된 어드레스에서 외부 메모리(104)에 기입된다. 연결은 외부 어드레스가 32 비트보다 더 클 수 있기 때문에 요구된다;
Figure pct00123
명령은 $r9의 값을 $r12의 값으로 증분시키고, $r10의 값을 $r13의 값으로 증분시킨다; 그리고
Figure pct00124
LP 필드가 1이면 명령은 $r8의 값이 0이 될 때까지 $r8의 값을 감분하는 것을 암시적으로 루프로 반복한다.
프로세서(102)는 GSNN 가속기 회로(106)에 대한 태스크를 설정하기 위해 레지스터 세트를 사용할 수 있는 반면, GSNN 가속기 회로(106)는 동작 동안 가속기 회로의 상태를 프로세서(102)에 전달하기 위해 레지스터 세트를 사용할 수 있다. 도 7은 본 발명의 일 구현예에 따른 가속기 회로와 프로세서 사이의 인터페이스로서 레지스터 세트를 사용하는 시스템(700)을 도시한다. 도 7에 도시된 바와 같이 도 1에 도시된 시스템과 유사하게 시스템(700)은 입력 회로 블록, 필터 회로 블록, 후처리 회로 블록, 및 출력 회로 블록을 더 포함할 수 있는 가속기 회로(106) 및 프로세서(102)를 포함할 수 있다. 가속기 회로(106)는 프로세서(102)와 가속기 회로(106) 사이의 인터페이스로서 기능하는 레지스터 세트를 더 포함할 수 있다.
레지스터 인터페이스는 제어 레지스터($ctrl)(702), 다음 태스크 레지스터($next)(704), AXI QoS 레지스터($qos)(706), 에러 레지스터($err)(708), 섀도우 레지스터($s0 내지 $s15)(710)) 및 전역 레지스터($g0 내지 $15)(712)를 포함할 수 있다. 제어 레지스터($ctrl)(702)는 인터럽트 보류 플래그 및 인터럽트 인에이블 플래그 및 다양한 리셋 제어 플래그를 포함할 수 있다. 에러 레지스터($err)(708)는 상이한 종류의 에러를 기록할 수 있다. AXI QoS 레지스터($qos)(706)는 외부 메모리 버스 인터페이스에 대한 제어를 포함할 수 있다. 다음 태스크 레지스터($next)(704)는 다음 태스크가 시작될 때 덮어쓸 수 있는 전역 레지스터의 마스크를 포함할 수 있다. 섀도우 레지스터($s0 내지 $s15)(710)는 $next 레지스터(704)의 제어 하에 전역 레지스터($g0 내지 $15)(712)를 덮어쓰기 위해 사용될 수 있는 값을 포함할 수 있다.
프로세서(102)는 전역 레지스터($g0 내지 $15)(712), 및 각 프로세서와 관련된 데이터 및 명령 메모리를 판독하고 기입할 수 있다. 프로세서(입력, 필터, 후처리, 출력)는 전역 레지스터($g15)에 기입하는 것에 의해 인터럽트를 트리거하고 태스크의 완료를 신호할 수 있다. 비트(31)가 설정된 것을 나타내는 값이 $g15에 기입되면 이것은 태스크의 종료를 신호한다. 비트(30)가 설정된 것을 나타내는 값이 $g15에 기입되면 이것은 일반적으로 프로세서의 개입을 요구하는 특정 종류의 상황을 나타내는 인터럽트를 프로세서에 제기한다.
상이한 레지스터의 상태는 다음에 설명된다:
제어 레지스터( $ctrl )
Figure pct00125
제어 레지스터는 다음 필드를 갖는다:
Figure pct00126
RESETB [비트 0]: 소거되면 GSNN이 리셋된다. 시작 시 RESETB가 소거된다;
Figure pct00127
STALL [비트 2, 3]: 두 비트가 설정되면 4개의 프로세서(입력, 필터, 후처리 및 출력)가 정지(stalled)된다; 실행되는 명령은 없다.
o EN_STALL [비트 2]: 정지를 인에이블하도록 설정된다;
o STALL [비트 3]: 에러 조건이 검출되면 자동으로 설정된다;
Figure pct00128
EN_INTERRUPT [비트 4 내지 7]: EN_INTERRUPT가 설정되고, 대응하는 INTERRUPT 비트가 설정되면, 제어 프로세서(102)에 인터럽트가 제기된다.
o EN_COPY_INT [비트 4]: COPY_INT [비트 8] 인터럽트를 인에이블한다,
o EN_UNAVAIL_INT [비트 5]: UNAVAIL_INT [비트 9] 인터럽트를 인에이블한다,
o EN_G15_INT [비트 6]: G15_INT [비트 10] 인터럽트를 인에이블한다,
o EN_ERR_INT [비트 7]: ERR_INT [비트 11] 인터럽트를 인에이블한다;
Figure pct00129
INTERRUPT [비트 8 내지 11]: INTERRUPT 필드의 비트가 설정되면 이것은 대응하는 EN_INTERRUPT 비트가 설정되었다고 가정하여 프로세서(102)에 인터럽트를 제기한다.
o COPY_INT [비트 8]: $g15는 비트(31)의 설정으로 기입되고 $next 레지스터의 비트 15는 설정된다,
o UNAVAIL_INT [비트 9]: $g15는 비트(31)의 설정으로 기입되고 $next의 비트 15는 소거된다,
o G15_INT [비트 10]: $g15는 비트(30)의 설정으로 기입된다,
o ERR_INT [비트 11]: 에러 상태가 발생된다.
제어 레지스터는 제어 프로세서(102)가 위치(0x200c0/0x200c4/0x200c8)에 기입하는 것에 의해 수정될 수 있다. 이것은 제어 레지스터에 다른 수정을 야기한다,
Figure pct00130
0x200c0 [복사]: 기입되는 값이 제어 레지스터에 복사된다,
Figure pct00131
0x200c4 [set-on-1]: 기입되는 값이 제어 레지스터와 논리합으로 결합되고, 또는
Figure pct00132
0x200c8 [clear-on-1]: 기입되는 값의 보수가 제어 레지스터와 논리곱으로 결합된다.
제어 레지스터는 어드레스(0x200c0)를 사용하여 프로세서에 의해 판독될 수 있다.
에러 레지스터( $err )
Figure pct00133
에러 레지스터는 다음 종류의 에러를 기록한다:
Figure pct00134
IN [비트 0, 1]: 잘못된 입력 블록 외부 판독 어드레스:
o IN_ALIGN [비트 0]: 어드레스가 16B로 정렬되지 않았다,
o IN_PAGE [비트 1]: 판독된 바이트가 4KB 경계를 넘는다;
Figure pct00135
OUT [비트 2]: 잘못된 출력 블록 외부 기입 어드레스
o OUT_ALIGN [비트 2]: 어드레스가 8B/16B로 정렬되지 않았다(바이트 기입/하프 워드 기입);
Figure pct00136
BRESP [비트 4 내지 5]: 외부(AXI) 버스가 0이 아닌 BRESP를 기입으로 반환하고, 이 값은 BRESP 필드에 복사된다;
Figure pct00137
RRESP [비트 6 내지 7]: 외부(AXI) 버스가 0이 아닌 RRESP를 기입으로 반환하고, 이 값은 RRESP 필드에 복사된다;
Figure pct00138
충돌(COLLISION)[비트 8 내지 14]: 다른 판독/기입 포트로부터 동일한 뱅크에 동시에 액세스했다. 충돌 필드는 충돌하는 모든 포트에 대한 비트를 갖는다. 이들 포트는 다음과 같다:
o IN_RES_COLL [비트 8]: 입력 유닛 기입 포트;
o FILT_DATA_COLL [비트 9]: 필터 유닛 데이터 판독 포트;
o FILT_PSUM_COLL [비트 10]: 필터 유닛 부분 합 판독 포트;
o FILT_RES_COLL [비트 11]: 필터 유닛 기입 포트;
o POST_DATA_COLL [비트 12]: 후처리 유닛 데이터 판독 포스트;
o POST_RES_COLL [비트 13]: 후처리 유닛 결과 기입 포트;
o OUTPUT_DATA_COLL [비트 14]: 출력 유닛 판독 포트;
에러 레지스터는 어드레스(0x200f0)를 사용하여 프로세서(102)로부터 액세스될 수 있다.
QoS 레지스터( $qos )
Figure pct00139
ARQOS [비트 0 내지 3]/AWQOS [비트 4 내지 7] 필드는 AXI 외부 메모리 버스에 의해 사용된다.
qos 레지스터는 어드레스(0x200e0)를 사용하여 프로세서(102)로부터 액세스될 수 있다.
다음 레지스터( $next )
Figure pct00140
다음 레지스터는 섀도우 레지스터를 전역 레지스터로 복사하는 것을 제어할 수 있다. $next 레지스터의 비트(15)가 1로 설정되고 $g15가 1로 설정된 비트(31)로 기입된 경우, 다음 레지스터의 비트(i)가 1이면 섀도우 레지스터($si)가 전역 레지스터($gi)에 복사된다. 복사는 비트(15)가 설정된 경우에만 발생하므로 이것은 $g15가 항상 복사된다는 것을 의미한다. 복사 후, $next의 비트(15)는 소거된다.
프로세서는 어드레스(0x200d0)에서 다음 레지스터($next)에 액세스할 수 있다.
섀도우 레지스터( $s0 내지 $s15 )
Figure pct00141
16개의 32 비트 섀도우 레지스터($s0 내지 $s15)가 있다. 복사 이벤트가 발생하면 섀도우 레지스터는 $next 레지스터의 제어 하에 대응하는 전역 레지스터로 복사될 수 있다.
섀도우 레지스터(i)는 어드레스(0x20040+4*i)에서 프로세서에 의해 액세스될 수 있다.
전역 레지스터( $g0 내지 $g15 )
Figure pct00142
16개의 32 비트 전역 레지스터($g0 내지 $g15)가 있다. 복사 이벤트가 발생하면, 섀도우 레지스터는 $next 레지스터의 제어 하에 대응하는 전역 레지스터로 복사될 수 있다.
전역 레지스터는 정상 명령의 일부로서 프로세서에 의해 사용될 수 있다.
$g15에 기입하는 것은 구체적으로 다음과 같이 처리된다:
Figure pct00143
$g15의 비트(31)가 1로 기입되고 $next의 비트(15)가 1이면 복사 이벤트가 발생한다.
o 섀도우 레지스터는 $next 레지스터의 비트의 제어 하에 전역 레지스터에 복사된다;
o $next 레지스터의 비트(15)는 소거된다;
o $ctrl 레지스터의 COPY_INT 비트가 설정된다.
Figure pct00144
$g15의 비트(31)가 1로 기입되고 $next의 비트(15)가 0이면 복사를 이용할 수 없는 이벤트가 발생한다; $ctrl 레지스터의 UNAVAIL_INT 비트가 설정된다.
Figure pct00145
$g15의 비트(30)가 1로 기입되면 $ctrl 레지스터의 G15_INT 비트가 설정된다.
전역 레지스터(i)는 어드레스(0x200i0+4*i)에서 프로세서에 의해 액세스될 수 있다.
엔진 명령/데이터 메모리
프로세서(102)는 엔진의 명령 및 데이터 메모리의 워드에 액세스할 수 있다. 프로세서마다 16KB의 명령과 16KB의 데이터 메모리가 있다. 각 메모리에 액세스하는 데 사용되는 어드레스 범위는 다음과 같다:
Figure pct00146
0x00000...0x03fff: 입력 프로세서 명령 메모리
Figure pct00147
0x04000...0x07fff: 입력 프로세서 데이터 메모리
Figure pct00148
0x08000...0x0bfff: 필터 프로세서 명령 메모리
Figure pct00149
0x0c000...0x0ffff: 필터 프로세서 데이터 메모리
Figure pct00150
0x10000...0x13fff: 후처리 프로세서 명령 메모리
Figure pct00151
0x14000...0x17fff: 후처리 프로세서 데이터 메모리
Figure pct00152
0x18000...0x1nfff: 출력 프로세서 명령 메모리
Figure pct00153
0x1c000...0x1ffff: 출력 프로세서 데이터 메모리
프로세서(102)는 프로세서와 관련된 명령 및 데이터 메모리를 사용하여 가속기 회로(106)에 할당된 태스크를 로딩할 수 있다. GSNN 가속기 회로(106)를 사용하여 신경망 계산을 수행하기 위해, 프로세서(102)는 GSNN 가속기 회로 (106)를 초기화할 수 있고, 신경망 애플리케이션을 태스크로 분할하고, GSNN 가속기 회로(106) 상의 프로세서의 파이프라인에 의해 실행될 태스크를 체인화(chaining)함으로써 태스크를 수행하도록 GSNN 가속기 회로(106)를 설정하고, 태스크의 수행을 시작하기 위해 GSNN 가속기 회로(106)를 요청할 수 있다. 태스크는 3×3 컨볼루션 신경망(CNN) 필터, 3×3 CNN 필터의 변형, 3×3보다 더 큰 CNN 필터 등을 포함할 수 있다.
도 8은 본 발명의 일 구현예에 따른 프로세서에 의해 GSNN 가속기 회로를 동작시키는 방법(800)의 흐름도를 도시한다. 방법(800)은 하드웨어(예를 들어, 회로부, 전용 논리 회로), 컴퓨터 판독 가능 명령(예를 들어, 범용 컴퓨터 시스템 또는 전용 머신 상에서 실행됨), 또는 이 둘의 조합을 포함할 수 있는 처리 디바이스에 의해 수행될 수 있다. 방법(800) 및 그 개별 함수, 루틴, 서브루틴 또는 동작 각각은 방법을 실행하는 처리 디바이스의 하나 이상의 프로세서에 의해 수행될 수 있다. 특정 구현예에서, 방법(800)은 단일 처리 스레드에 의해 수행될 수 있다. 대안적으로, 방법(800)은 2개 이상의 처리 스레드에 의해 수행될 수 있으며, 각각의 스레드는 방법의 하나 이상의 개별 함수, 루틴, 서브루틴 또는 동작을 실행한다.
설명의 단순화를 위해, 본 발명의 방법은 일련의 동작으로서 도시되고 설명된다. 그러나, 본 발명에 따른 동작은 다양한 순서로 및/또는 동시에 발생할 수 있고, 본 명세서에 제시되고 설명되지 않은 다른 동작과 함께 발생할 수 있다. 또한, 개시된 주제에 따른 방법을 구현하기 위해 도시된 모든 동작이 필요한 것은 아니다. 또한, 이 기술 분야에 통상의 지식을 가진 자라면 방법은 대안적으로 상태도 또는 이벤트를 통해 일련의 상호 관련된 상태로서 표현될 수 있다는 것을 이해하고 인식할 수 있을 것이다. 추가적으로, 본 명세서에 개시된 방법은 이러한 방법을 컴퓨팅 디바이스로 운반 및 전달하는 것을 용이하게 하기 위해 제조 물품 상에 저장될 수 있는 것으로 이해된다. 본 명세서에 사용된 "제조 물품"이라는 용어는 임의의 컴퓨터 판독 가능 디바이스 또는 저장 매체로부터 액세스 가능한 컴퓨터 프로그램을 포함하도록 의도된다. 일 구현예에서, 방법(800)은 도 1에 도시된 프로세서(102)에 의해 수행될 수 있다.
802에서, 프로세서(102)는 신경망 애플리케이션을 수행하기 위해 프로세서에 통신 가능하게 결합된 GSNN 가속기 회로를 초기화할 수 있다. 도 1 내지 도 7에 설명된 바와 같이, GSNN 가속기 회로는 입력 회로 블록, 필터 회로 블록, 후처리 회로 블록 및 출력 회로 블록을 포함할 수 있다. 각 회로 블록은 32 비트 RISC 프로세서일 수 있는 각각의 프로세서를 포함할 수 있다. 각각의 프로세서는 이 프로세서에 특정된 명령 세트 아키텍쳐(ISA)에 따라 지정된 각각의 명령을 실행할 수 있다. 예를 들어, 입력 회로 블록은 입력 ISA에 따라 지정된 명령을 실행하기 위한 입력 프로세서를 포함할 수 있고; 필터 회로 블록은 필터 ISA에 따라 지정된 명령을 실행하기 위한 필터 프로세서를 포함할 수 있고; 후처리 회로 블록은 필터 ISA에 따라 지정된 명령을 실행하기 위한 후처리 프로세서를 포함할 수 있고; 출력 회로 블록은 필터 ISA에 따라 지정된 명령을 실행하기 위한 출력 프로세서를 포함할 수 있다. 각각의 프로세서는 명령 메모리 및 데이터 메모리와 관련될 수 있다. 가속기 회로는 일반 레지스터, 및 회로 블록에 의해 공유되는 내부 메모리를 더 포함할 수 있다. 가속기 회로는 프로세서(102)와 통신하기 위한 외부 인터페이스로서 기능할 수 있는 레지스터 세트를 포함할 수 있다.
가속기 회로는 시동 시에 리셋 상태에 있을 수 있다. 프로세서(102)는 가속기 회로의 동작을 시작하기 위해 제어 레지스터 및 전역 레지스터에 적절한 값을 기입할 수 있다. 예를 들어, 프로세서(102)는 표시기 값(예를 들어, "1"로 설정)을 제어 레지스터($ctrl)의 RESETB 비트에 기입함으로써 가속기 회로를 리셋으로부터 벗어나게 할 수 있다. 제어 레지스터에 플래그 값을 기입하면 가속기 회로에서 생성된 모든 인터럽트가 인에이블되고 에러가 발생하면 가속기 회로가 정지될 수 있다.
804에서, 프로세서(102)는 입력 회로 블록, 필터 회로 블록, 후처리 회로 블록 또는 출력 회로 블록 중 하나 이상에 의해 수행될 신경망 애플리케이션의 태스크를 결정할 수 있다. 태스크는 상이한 회로 블록에 의해 실행될 명령을 포함하는 코드 세그먼트를 포함할 수 있다. 예를 들어, 입력 코드 세그먼트는 입력 프로세서에 의해 실행될 입력 ISA에 따라 지정된 명령을 포함할 수 있고; 필터 코드 세그먼트는 필터 프로세서에 의해 실행될 필터 ISA에 따라 지정된 명령을 포함할 수 있고; 후처리 코드 세그먼트는 후처리 프로세서에 의해 실행될 후처리 ISA에 따라 지정된 명령을 포함할 수 있고; 출력 처리 코드 세그먼트는 출력 프로세서에 의해 실행될 출력 ISA에 따라 지정된 명령을 포함할 수 있다. 프로세서는 이 코드 세그먼트를 대응하는 명령 메모리에 저장하고, 이 코드 세그먼트의 실행과 관련된 데이터를 프로세서와 관련된 데이터 메모리에 저장할 수 있다.
806에서, 프로세서(102)는 각각의 태스크를 입력 회로 블록, 필터 회로 블록, 후처리 회로 블록 및 출력 회로 블록 중 대응하는 블록에 할당할 수 있다. 특정 회로 블록에 할당된 태스크는 회로 블록의 프로세서의 ISA에 따라 지정된 명령을 포함할 수 있다. 프로세서(102)는 이 명령을 프로세서의 명령 메모리에 저장할 수 있다. 일 구현예에서, 프로세서(102)는 가속기 회로 상의 프로세서의 파이프라인에 의해 실행될 태스크를 체인화함으로써 태스크를 수행하도록 가속기 회로를 설정할 수 있다. GSNN 가속기 회로는 다음 레지스터($next), 섀도우 레지스터 및 전역 레지스터($g15)를 사용하여 태스크의 체인화를 지원하도록 설계된다. 현재 태스크가 가속기 회로에서 실행되는 동안 실행할 태스크를 큐잉(queue)하기 위해, 프로세서는 새로운 태스크를 수행하는 것과 관련된 원하는 값을 대응하는 섀도우 레지스터에 기입하고, 이 섀도우 레지스터에 대한 마스크를 다음 레지스터에 기입할 수 있다. 일 구현예에서, 전역 레지스터에 대한 원하는 값은 $g15에 대한 새로운 값을 포함하고, 이 값은 비트(31)와 비트(30)를 소거할 것이 권장되고, 그렇지 않은 경우 이 값은 새로운 요청 또는 인터럽트를 거부(kick off)할 것이다.
GSNN 상에서 실행되는 태스크는, 태스크가 완료될 때, 태스크가 비트(31)의 설정으로 $g15에 기입함으로써 프로세서에 완료 신호를 보내도록 프로그래밍될 수 있다. 이것은 전역 레지스터에 섀도우 레지스터의 복사를 트리거하여 새로운 태스크를 시작할 수 있다. $ctrl 레지스터의 COPY_INT 비트가 설정된다; EN_CTL_INT 비트도 설정되면 다음 태스크를 스케줄링할 것을 프로세서에 알리는 인터럽트가 프로세서에 전송된다.
일 구현예에서, 태스크에 대한 파라미터의 데이터 크기가 전역 레지스터에 맞지 않는 경우(예를 들어, 데이터 크기가 전역 레지스터의 용량을 초과하는 경우), 태스크를 위한 프로세서와 관련된 데이터 메모리의 영역이 파라미터를 저장하기 위해 예비되고 사용될 수 있다. 프로세서는 일부 파라미터를 데이터 메모리에 기입한 다음 섀도우 레지스터의 이 파라미터 블록에 어드레스를 전달함으로써 커맨드를 체인화할 수 있다. 이 구현예에서, 섀도우 레지스터는 다음 태스크에 대한 파라미터를 저장하는 데이터 메모리의 어드레스를 저장하는 데 사용된다.
일 구현예에서, 프로세서는 조정된 태스크 수행을 위한 실행 파이프라인을 형성할 수 있다. 예를 들어, 입력 프로세서는 필터 프로세서를 위한 입력 레지스터를 채울 수 있고 필터 프로세서는 이후 입력 레지스터의 데이터를 처리할 수 있다. 따라서, 공통 파이프라인은 데이터를 필터 회로 블록에 공급하는 입력 회로 블록, 데이터를 후처리 회로 블록에 공급하는 필터 회로 블록, 및 데이터를 출력 회로 블록에 공급하는 후처리 회로 블록을 포함할 수 있다. 초기 스테이지는 생산자라고 지칭되는 반면, 후속 스테이지는 소비자라고 지칭된다. 프로세서(102)는 전역 레지스터를 사용하여 파이프라인의 각 스테이지를 조정할 수 있다. 예를 들어, 전역 레지스터($g1)는 두 스테이지 사이의 동작을 조정하는 데 사용될 수 있다. 태스크 시작 시 $g1의 값은 알려진 값, 예를 들어, 값(0)이다. 입력 레지스터의 소비자는 전역 레지스터가 0이 아닌 것을 대기할 수 있다. 생산자는 소비자의 입력 레지스터를 채운 다음, 값을 1로 설정하여 입력 레지스터를 판독할 준비가 되었음을 나타낸다. 생산자는 입력 레지스터에 저장된 데이터를 소비자가 판독하였다는 것을 소비자가 신호하기를 대기한다. 이 지시는 레지스터($g1)의 값을 0으로 소거하는 것에 의해 달성될 수 있다. 이런 식으로 파이프라인의 여러 스테이지가 원자 명령(atomic instruction)을 호출하지 않고도 협력할 수 있다. 이것은 다음 코드 시퀀스로 설명된다:
Figure pct00154
소비자가 이전 스테이지(소위 핑퐁 버퍼)를 처리하는 동안 생산자가 다음 스테이지를 채울 수 있는 2개의 입력 레지스터가 있는 경우, 조정 코드(co-ordination code)는 2개의 전역 레지스터를 사용할 수 있다. 이것은 버퍼당 하나일 수 있으며, 판독 포인터 및 기입 포인터의 보다 일반적인 접근 방식이 사용될 수 있다. 판독 포인터에 하나의 전역 레지스터를 사용하고 기입 포인터에 하나의 전역 레지스터를 사용하는 장점은 이 방식이 2보다 큰 깊이의 생산자 소비자 큐(queue)로 확장될 수 있다는 것이다.
808에서, 프로세서(102)는 가속기 회로에 태스크 수행을 시작하도록 지시할 수 있다. 프로세서(102)는 제어 레지스터의 비트 플래그를 1로 설정함으로써 수행을 시작할 수 있다.
810에서, 프로세서(102)는 태스크를 수행하는 가속기 회로로부터 결과를 수신할 수 있다. 결과를 수신한 것에 응답하여, 프로세서는 결과에 기초하여 신경망 애플리케이션을 수행할 수 있다.
신경망 애플리케이션에 대한 일반적인 태스크는 데이터 어레이에 동작하는 3×3 CNN 필터이다. CNN 필터링을 수행하기 위해 가속기 회로의 프로세서에 의해 실행되는 명령을 사용하는 일례가 하기에 제공된다. 3×3 필터가 66×66 크기의 입력 어레이에서 동작하고 64×64 크기의 출력을 생성하고 8개의 입력 채널을 동시에 처리한다고 가정한다.
먼저, 필터 가중치가 로딩된다:
Figure pct00155
이후 처음 2개의 행 중 4개의 열이 내부로 시프트된다.
Figure pct00156
64개의 반복이 수행되는 메인 루프가 수행된 후, 8개의 입력 채널에 걸쳐 합산된 4개의 열의 필터링된 출력의 64개의 행을 생성한다.
Figure pct00157
코드는 다른 15×4 열에 대한 결과를 생성할 수 있다. 다음 시작점을 가리키도록 판독 및 판독 및 기입 포인터는 수정될 필요가 있다.
Figure pct00158
따라서, 코드의 실행은 4개의 열의 16개의 그룹을 처리할 수 있다. 이것은 점프 명령을 사용하여 16 카운트 루프를 프로그래밍하는 것에 의해 달성될 수 있다. 이를 함께 모으면 다음과 같다:
Figure pct00159
코드는 3×3 필터의 변형을 처리하도록 구성될 수 있다. 8개를 초과하는 입력 채널이 필요한 경우 채널은 8의 그룹으로 분해될 수 있다. 제1 채널은 위와 같이 연산된다. 후속 그룹에서는 직접 대신 부분 합 모드가 사용되며, 이전 그룹의 부분 합이 필터에 추가된다. 총 채널 수가 8의 배수가 아닌 경우 $r15는 일부 개수의 입력 채널을 마스킹(mask off)하도록 설정될 수 있다.
바이어스가 필터 출력에 추가되면, 제1 필터는 직접 필터를 사용하지 않을 것이다. 대신 부분 합 모드가 사용되고, 바이어스가 초기 부분 합으로 사용된다.
5×5 이상의 필터는 다수의 3×3 필터로 분해될 수 있다. 먼저, 더 큰 필터는 제로 패딩에 의해 가장 가까운 3의 배수로 변환된다. 따라서 5×5 필터는 6×6 필터로 변환될 수 있다. 이후 각 3×3 필터는 입력 채널의 해당 부분에 대해 개별적으로 실행된다. 일 구현예에서, 0으로 필터를 명시적으로 채우는 대신에, wt3 및 마스크가 더 큰 필터의 상이한 부분에 적용될 수 있다.
본 발명의 구현은 완전히 연결된 신경망 애플리케이션 층에서 데이터 재사용을 제공할 수 있다. 완전히 연결된 층에서 재사용되는 데이터는 입력 데이터일 수 있다. 일 구현예에서, 프로세서(102)는 필터 회로 블록에서 모든 스트라이프에 걸쳐 입력의 로드를 분할할 수 있다. 입력 9개의 요소를 한 번에 가중치 레지스터에 로딩한다. 그런 다음 명령 필터 in9, x4, 전역을 사용하여 4개의 필터 세트를 필터 회로 블록의 입력 레지스터에 로딩한다. 각각의 4개의 로딩 후, 필터 회로 블록은 4개의 다른 출력 채널에 대한 결과와 함께 4개의 72 탭 컨볼루션을 수행할 수 있다.
도 9는 본 발명의 일 구현예에 따른 GSNN 가속기 회로(900)를 상세히 도시한다. 도 9에 도시된 바와 같이, GSNN 가속기 회로(900)는 입력 회로 블록(902), 필터 회로 블록(904), 후처리 회로 블록(906) 및 출력 회로 블록(908), 범용 레지스터(910)를 포함하는 범용 레지스터 파일, 내부 메모리(912) 및 외부 인터페이스(914)를 포함할 수 있다. 입력 회로 블록(902), 필터 회로 블록(904), 후처리 회로 블록(906) 및 출력 회로 블록(908)은 대응하는 입력 프로세서(916A), 필터 프로세서(916B), 후처리 프로세서(916C), 출력 프로세서(916D), 각각의 대응하는 명령 메모리(918A, 918B, 918C, 918D), 및 각각의 대응하는 데이터 메모리(920A, 920B, 920C, 920D)를 각각 포함할 수 있다. 대안적으로, 2개 또는 3개의 회로 블록은 공통 처리 프로세서를 공유할 수 있다.
입력 회로 블록(902), 필터 회로 블록(904), 후처리 회로 블록(906) 및 출력 회로 블록(908)은 각각의 대응하는 로컬 레지스터(922A, 922B, 922C, 922D) 및 각각의 대응하는 프로그램 카운터(PC)(924A, 924B, 924C, 924D)를 각각 더 포함할 수 있다. 명령 메모리(918A, 918B, 918C, 918D)는 신경망 애플리케이션을 수행하기 위해 GSNN(900)에 할당된 외부 처리 디바이스(예를 들어, 컴퓨터 시스템, CPU 또는 GPU)로부터 수신된 태스크의 명령을 포함하는 코드 세그먼트를 저장할 수 있다. 데이터 메모리(920A, 920B, 920C, 920D)는 GSNN 가속기 회로(900)에 의해 이 태스크를 수행하는 것과 관련된 데이터를 저장할 수 있다. 로컬 레지스터(922A, 922B, 922C, 922D)는 이러한 명령의 실행과 관련된 입력값 및 결과를 저장하는 데 사용될 수 있다. 프로그램 카운터(924A, 924B, 924C, 924D)는 대응하는 프로세서에 의해 실행될 다음 명령의 어드레스를 로딩하는 데 사용될 수 있다. 입력값은 내부 메모리(912)로부터 검색될 수 있고, 결과는 또한 내부 메모리(912)에 기입될 수 있다.
신경망 연산의 효율 및 확장성을 더 개선하기 위해, 필터 회로 블록(904)은 하나 이상의 회로 스트라이프(932A 내지 932H)를 더 포함할 수 있다. 회로 스트라이프(932A 내지 932H) 각각은 필터 회로들의 동일한 회로 요소, 및 대응하는 회로 스트라이프에 할당된 내부 메모리의 슬라이스를 포함할 수 있다. 이후 필터 회로 블록(904)에 대한 동작 원리를 변경할 필요 없이 회로 스트라이프가 필터 회로 블록(904)에 더해지고 빼내어질 수 있다. 일 구현예에서, 필터 회로 블록(904)은 8개의 회로 스트라이프(932A 내지 932H)를 포함할 수 있다. 8개의 회로 스트라이프(932A 내지 932H) 각각은 4개의 필터 회로 및 내부 메모리의 하나의 슬라이스를 포함할 수 있다. 회로 스트라이프(932A 내지 932H)는 대응하는 회로 스트라이프에 할당된 메모리 슬라이스(930A 내지 930H)에 어드레스를 저장할 수 있다. 필터 회로 각각은 N×N CNN 필터의 회로 구현을 포함할 수 있으며, 여기서 N은 3의 정수값(또는 임의의 적절한 정수값)일 수 있다
외부 처리 디바이스는 각각의 프로세서(916A 내지 916D)에 의해 실행될 명령을 포함하는 코드 세그먼트를 명령 메모리(918A 내지 918D)에 배치함으로써 입력 회로 블록(902), 필터 회로 블록(904), 후처리 회로 블록(906) 및 출력 회로 블록(908) 중 임의의 것에 태스크를 할당할 수 있다. 상이한 명령 메모리에 저장된 명령은 각각의 ISA(예를 들어, 입력 ISA, 필터 ISA, 후처리 ISA, 출력 ISA)에 따라 지정될 수 있다. 외부 처리 디바이스는 가속기 회로(900)에 할당된 상이한 태스크의 실행을 조정하기 위해 범용 레지스터(910) 및 외부 인터페이스(914)를 사용할 수 있다. 외부 인터페이스는 섀도우 레지스터(926), 제어 레지스터($ctrl), 에러 레지스터($err), 서비스 품질 레지스터($QoS) 및 다음 레지스터($next)를 포함할 수 있다.
일 구현예에서, 입력 회로 블록(902), 필터 회로 블록(904), 후처리 회로 블록(906) 및 출력 회로 블록(908)은 이전 스테이지의 결과가 다음 스테이지로 전달될 수 있다는 점에서 실행 파이프라인을 형성할 수 있다. 예를 들어, 입력 회로 블록(902)은 필터 회로 블록(904)에 대한 입력값으로서 필터 회로 블록(904)의 로컬 레지스터(922B)에 결과를 기입할 수 있고; 필터 회로 블록(904)은 후처리 회로 블록(906)에 대한 입력값으로서 후처리 회로 블록(906)의 레지스터(922C)에 결과를 기입할 수 있고; 후처리 회로 블록(906)은 출력 회로 블록(908)에 대한 입력값으로서 출력 회로 블록(908)의 레지스터(922D)에 결과를 기입할 수 있다. 또한, 외부 처리 디바이스는 다음 레지스터($next)를 사용하여 태스크의 실행 시퀀스를 형성하고 범용 레지스터(910)를 사용하여 특정 태스크의 시작을 제어할 수 있다.
하기 실시예는 다른 실시형태에 관한 것이다. 구현의 실시예 1은 가속기 회로이며, 상기 가속기 회로는 프로세서와 관련된 메모리로부터 수신된 데이터를 저장하기 위한 내부 메모리, 제1 명령 아키텍쳐(ISA)에 따라 지정된 제1 명령을 포함하는 제1 태스크를 수행하기 위한 입력 프로세서를 포함하는 입력 회로 블록, 제2 ISA에 따라 지정된 제2 명령을 포함하는 제2 태스크를 수행하기 위한 필터 프로세서를 포함하는 필터 회로 블록, 및 제3 ISA에 따라 지정된 제3 명령을 포함하는 제3 태스크를 수행하기 위한 후처리 프로세서를 포함하는 후처리 회로 블록을 포함하고, 상기 입력 프로세서, 상기 필터 프로세서, 상기 후필터 프로세서(post-filter processor) 또는 상기 출력 프로세서 중 적어도 2개는 대응하는 태스크를 동시에 수행한다.
실시예 2에서, 실시예 1의 주제는 상기 입력 회로 블록이 제1 명령 메모리, 제1 데이터 메모리 및 제1 프로그램 카운터(PC)를 더 포함하고, 상기 제1 명령 메모리는 상기 제1 명령을 저장하고, 상기 제1 PC는 상기 제1 프로세서에 의해 실행될 현재 제1 명령의 어드레스를 저장하고, 상기 입력 프로세서는 상기 제1 태스크를 수행하기 위해 상기 제1 데이터 메모리에 저장된 제1 데이터를 사용하여 상기 제1 명령을 실행하고, 상기 필터 회로 블록은 제2 명령 메모리, 제2 데이터 메모리 및 제2 PC를 더 포함하고, 상기 제2 명령 메모리는 상기 제2 명령을 저장하고, 상기 제2 PC는 상기 제2 프로세서에 의해 실행될 현재 제2 명령의 어드레스를 저장하고, 상기 필터 프로세서는 상기 제2 태스크를 수행하기 위해 상기 제2 데이터 메모리에 저장된 제2 데이터를 사용하여 상기 제2 명령을 실행하고, 상기 후처리 회로 블록은 제3 명령 메모리, 제3 데이터 메모리, 제3 PC를 더 포함하고, 상기 제3 명령 메모리는 상기 제3 명령을 저장하고, 상기 제3 PC는 상기 제3 프로세서에 의해 실행될 현재 제3 명령의 어드레스를 저장하고, 상기 후처리 프로세서는 상기 제3 태스크를 수행하기 위해 상기 제3 데이터 메모리에 저장된 제3 데이터를 사용하여 상기 제3 명령을 실행하고, 상기 출력 회로 블록은 제4 명령 메모리, 제4 데이터 메모리, 제4 PC를 더 포함하고, 상기 제4 명령 메모리는 제4 명령을 저장하고, 상기 제4 PC는 상기 제4 프로세서에 의해 실행될 현재 제4 명령의 어드레스를 저장하고, 상기 출력 프로세서는 상기 제4 태스크를 수행하기 위해 상기 제4 데이터 메모리에 저장된 제4 데이터를 사용하여 상기 제4 명령을 실행하고, 상기 입력 프로세서, 상기 필터 프로세서, 상기 후처리 프로세서, 또는 상기 출력 프로세서 각각은 각각의 고유한 명령 세트를 갖게 설계된 축소 명령 세트 컴퓨터(RISC) 프로세서인 것을 더 제공할 수 있다.
실시예 3에서, 실시예 2의 주제는 상기 입력 프로세서, 상기 필터 프로세서, 상기 후처리 프로세서 또는 상기 출력 프로세서의 각각이 각각의 고유한 명령 세트를 갖게 설계된 축소 명령 세트 컴퓨터(RISC) 프로세서이고, 상기 가속도 회로는 복사 이벤트에 응답하여 복수의 범용 레지스터에 복사될 내용을 저장하는 복수의 섀도우 레지스터 및 인터페이스 회로를 포함하고, 상기 인터페이스 회로는 상기 프로세서에 대한 복수의 인터럽트를 저장하는 제어 레지스터, 상이한 종류의 에러의 발생을 나타내는 복수의 에러 플래그를 저장하는 에러 레지스터, 상기 복수의 범용 레지스터에 복사될 상기 복수의 섀도우 레지스터의 내용을 선택하기 위한 마스크를 저장하는 다음 레지스터, 및 상기 프로세서와 관련된 상기 메모리에 대한 제어를 저장하는 서비스 품질 레지스터를 포함하는 것을 더 포함할 수 있다.
실시예 4에서, 실시예 2의 주제는 상기 필터 회로 블록이 복수의 회로 스트라이프를 더 포함하고, 상기 복수의 회로 스트라이프 각각은 복수의 필터 회로, 및 상기 복수의 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는 것을 더 제공할 수 있다.
실시예 5에서, 실시예 2의 주제는 8개의 동일한 회로 스트라이프를 더 포함하고, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는 4개의 3×3 컨볼루션 신경망(CNN) 필터 회로, 및 상기 4개의 3×3 CNN 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는 것을 더 제공할 수 있다.
실시예 6에서, 실시예 5의 주제는 상기 필터 회로 블록이 8개의 동일한 회로 스트라이프를 더 포함하고, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는 4개의 3×3 컨볼루션 신경망(CNN) 필터 회로, 및 상기 4개의 3×3 CNN 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는 것을 더 제공할 수 있다.
실시예 7에서, 실시예 5의 주제는 상기 4개의 3×3 CNN 필터 회로 중 하나가 가중치 파라미터를 저장하는 제1 복수의 레지스터, 입력값을 저장하는 제2 복수의 레지스터, 상기 가중치 파라미터들 각각과 상기 입력값들 각각 사이의 곱셈을 계산하기 위한 복수의 곱셈 회로를 포함하는 축소 트리, 및 상기 복수의 곱셈 회로로부터의 결과를 상기 3×3 CNN 필터 회로 중 다른 필터 회로의 캐리-오버(carry-over) 결과와 더하는 합산 회로를 포함하는 것을 더 제공할 수 있다.
실시예 8에서, 실시예 7의 주제는 상기 8개의 동일한 회로 스트라이프가 각각 상기 4개의 3×3 CNN 필터 회로에 의해 생성된 4개의 결과를 출력하고, 상기 필터 회로 블록은 4개의 가산 회로를 포함하고, 상기 4개의 가산 회로 각각은 상기 8개의 필터 회로의 4개의 결과 각각을 합산하는 것을 더 제공할 수 있다.
실시예 9에서, 실시예 1의 주제는 상기 입력 프로세서, 상기 필터 프로세서, 상기 후처리 프로세서 및 상기 출력 프로세서가 이종 컴퓨팅 시스템을 형성하고, 상기 제1 태스크는 공통 ISA에 따라 지정된 제5 명령을 더 포함하고, 상기 제2 태스크는 상기 공통 ISA에 따라 지정된 제6 명령을 더 포함하고, 상기 제3 태스크는 상기 공통 ISA에 따라 지정된 제7 명령을 더 포함하고, 상기 제4 태스크는 상기 공통 ISA에 따라 지정된 제7 명령을 더 포함하는 것을 더 제공할 수 있다.
실시예 10에서, 실시예 1의 주제는 상기 내부 메모리가 복수의 메모리 슬라이스를 포함하고, 메모리 슬라이스 및 상기 메모리 슬라이스의 시작 위치에 대한 오프셋을 식별하기 위해 슬라이스 식별자에 의해 어드레싱될 수 있는 것을 더 제공할 수 있다.
실시예 11에서, 실시예 1의 주제는 상기 내부 메모리가 복수의 순차적으로 번호가 매겨진 비트 어레이를 포함하고, 짝수 번호가 매겨진 어레이와 후속 홀수 번호가 매겨진 어레이의 각 쌍은 대응하는 메모리 뱅크를 형성하고, 상기 내부 메모리는 메모리 뱅크를 식별하기 위한 메모리 뱅크 식별자 및 상기 메모리 뱅크 내의 라인을 식별하기 위한 라인 식별자에 의해 어드레싱될 수 있는 것을 더 제공할 수 있다.
실시예 12에서, 실시예 1의 주제는 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록이 실행 파이프라인을 형성하고, 상기 입력 회로 블록의 입력 프로세서는 상기 프로세서와 관련된 상기 메모리로부터 판독하고, 상기 입력 회로 블록에 의해 생성된 제1 결과를 상기 내부 메모리에 기입하고, 상기 필터 프로세서는 상기 내부 메모리로부터 제1 결과를 판독하고, 상기 필터 회로 블록에 의해 생성된 제2 결과를 상기 내부 메모리에 기입하고, 상기 후처리 프로세서는 상기 내부 메모리로부터 제2 결과를 판독하고, 상기 후처리 회로 블록에 의해 생성된 제3 결과를 상기 내부 메모리에 기입하고, 상기 출력 프로세서는 상기 내부 메모리로부터 상기 제3 결과를 판독하고, 상기 출력 회로 블록에 의해 생성된 제4 결과를 상기 프로세서와 관련된 상기 메모리에 기입하는 것을 더 제공될 수 있다.
실시예 13에서, 실시예 1의 주제는 상기 후처리 회로 블록이 압축 함수, 활성화 함수 또는 상위-N 함수 중 적어도 하나를 수행하는 것을 더 제공할 수 있다.
실시예 14에서, 실시예 13의 주제는 상기 압축 함수가 4 대 1, 3 대 1, 2 대 1 또는 1 대 1 압축 비율 중 하나를 가지고, 상기 압축 함수의 결과는 N개의 요소를 포함하는 입력 데이터의 제1 요소 또는 N개의 요소를 포함하는 상기 입력 데이터의 최대값 중 하나이며, 여기서 N은 1보다 큰 정수인 것을 더 제공할 수 있다.
실시예 15에서, 실시예 13의 주제는 상기 활성화 함수가 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나인 것을 더 제공할 수 있다.
실시예 16에서, 실시예 13의 주제는 상기 상위-N 함수가 값의 어레이에서 N개의 가장 큰 값 및 대응하는 위치를 결정하는 것을 더 제공할 수 있다.
실시예 17에서, 실시예 2의 주제는 상기 입력 프로세서가 상기 프로세서와 관련된 상기 메모리로부터 데이터값을 판독하고, 상기 데이터값은 반-정밀도 부동 소수점, 부호 있는 바이트 또는 부호 없는 바이트 형식 중 하나이고, 상기 데이터값을 상기 반-정밀도 부동 소수점 형식으로 변환하고, 상기 데이터값을 상기 내부 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 18에서, 실시예 2의 주제는 상기 제1 명령이 유형값(type value), 모드값 및 크기값을 포함하는 입력 명령을 포함하고, 상기 입력 명령을 실행하기 위해 상기 입력 프로세서는 상기 입력 프로세서의 제1 로컬 레지스터 및 제2 로컬 레지스터를 연결하여 제1 메모리 어드레스를 형성하고, 상기 제1 메모리 어드레스에 기초하여 상기 프로세서와 관련된 메모리를 판독하여 상기 유형값에 의해 결정된 형식으로 데이터값을 검색하고, 상기 크기값은 상기 메모리로부터 검색된 상기 데이터값과 관련된 바이트 수를 결정하고, 상기 모드값에 의해 결정된 모드에서 상기 데이터값을 상기 내부 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 19에서, 실시예 18의 주제는 상기 모드값이 제1 모드를 나타낸다는 결정에 응답하여, 상기 입력 프로세서가 제3 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여, 상기 내부 메모리에 기입하고, 상기 모드값이 제2 모드를 나타낸다는 결정에 응답하여, 상기 입력 프로세서는 상기 제3 로컬 레지스터에 저장된 오프셋으로 상기 복수의 회로 스트라이프 각각의 슬라이스에 기입하는 것을 더 제공할 수 있다.
실시예 20에서, 실시예 18의 주제는 상기 유형값, 상기 모드값 및 상기 크기값이 즉시값 중 하나이거나 상기 입력 명령의 타깃 레지스터에 저장된 것을 더 제공할 수 있다.
실시예 21에서, 실시예 4의 주제는 상기 제2 명령이 합산값 및 모드값을 포함하는 필터 명령을 포함하고, 상기 필터 명령을 실행하기 위해 상기 필터 프로세서는 상기 필터 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값을 판독하고, 각 회로 스트라이프에 대해 복수의 필터 결과를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고, 상기 합산값에 기초하여, 각 회로 스트라이프로부터 대응하는 필터 결과의 합산값을 계산하고, 상기 모드값에 기초하여 상기 필터 회로 블록이 슬라이스 모드에 있는지 또는 전역 모드에 있는지 여부를 결정하고, 상기 필터 회로 블록이 상기 슬라이스 모드에 있다는 결정에 응답하여, 제2 로컬 레지스터에 저장된 오프셋으로 각 슬라이스에 상기 합산값을 기입하고, 상기 필터 회로 블록이 전역 모드에 있다는 결정에 응답하여, 상기 합산값을 상기 제2 로컬 레지스터에 저장된 메모리 어드레스에서 상기 내부 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 22에서, 실시예 21의 주제는 상기 모드값 및 상기 합산값이 즉시값 중 하나이거나 상기 필터 명령의 타깃 레지스터에 저장된 것을 더 제공할 수 있다.
실시예 23에서, 실시예 2의 주제는 상기 제3 명령이 상기 제어 레지스터의 식별자, 열값, 행값 및 종류값을 포함하는 후처리 명령을 포함하고, 상기 후처리 명령을 실행하기 위해 상기 후처리 프로세서는, 상기 종류값이 압축 모드를 나타낸다는 결정에 응답하여, 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값의 수를 판독하고; 상기 열값은 상기 수를 지정하고, 상기 열값에 기초하여 상기 데이터값을 복수의 그룹으로 그룹화하고, 상기 종류값에 기초하여 상기 복수의 그룹 각각을 상기 그룹의 최대값 또는 상기 그룹의 제1 요소 중 하나로 압축하고, 압축된 값들 중 최대값 및 상태 레지스터에 저장된 값을 결정하고, 상기 상태 레지스터에 상기 최대값을 저장하고, 상기 최대값에 활성화 함수를 적용하며, 상기 활성화 함수는 항등 함수, 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나이며, 제2 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여, 상기 활성화 함수의 결과를 상기 내부 메모리에 기입하고, 상기 종류값이 상위-N 모드를 나타낸다는 결정에 응답하여, 제3 로컬 레지스터에 저장된 제3 메모리 어드레스에 기초하여, 데이터값의 어레이를 판독하고, 상기 어레이에서 상위-N 값 및 대응하는 위치를 결정하고, N은 1보다 큰 정수이고, 상기 제어값이 메모리 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 제4 로컬 레지스터에 저장된 제4 메모리 어드레스에서 상기 내부 메모리에 기입하고, 상기 제어값이 레지스터 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 상기 후처리 프로세서와 관련된 상태 레지스터에 기입하는 것을 더 제공할 수 있다.
실시예 24에서, 실시예 23의 주제는 상기 제어 레지스터의 식별자, 상기 열값, 상기 행값 및 상기 종류값이 즉시값 중 하나이거나 상기 후처리 명령의 타깃 레지스터에 저장된 것을 더 제공할 수 있다.
실시예 25에서, 실시예 2의 주제는 상기 제4 명령이 유형값, 모드값 및 크기값을 포함하는 출력 명령을 포함하고, 상기 출력 명령을 실행하기 위해 상기 출력 프로세서는 상기 출력 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 복수의 데이터값을 판독하고, 상기 크기값은 상기 복수의 데이터값의 수를 지정하고, 상기 출력 프로세서의 제2 로컬 레지스터 및 제3 로컬 레지스터를 연결하여 제2 메모리 어드레스를 형성하고, 및 상기 제2 메모리 어드레스에 기초하여 상기 유형값에 의해 결정된 형식으로 상기 복수의 데이터값을 상기 프로세서와 관련된 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 26에서, 실시예 25의 주제는 상기 유형값, 상기 모드값 및 상기 크기값이 즉시값 중 하나이거나 상기 입력 명령의 타깃 레지스터에 저장된 것을 더 제공할 수 있다.
실시예 27에서, 실시예 1의 주제는 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록의 각각이 별개의 RISC 하드웨어 프로세서를 포함하는 것을 더 제공할 수 있다.
실시예 28에서, 실시예 1의 주제는 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록 중 적어도 2개 내지 4개 미만이 공통 RISC 하드웨어 프로세서를 공유하는 것을 더 제공할 수 있다.
실시예 29는 시스템이고, 상기 시스템은 메모리, 데이터를 입력하기 위한 제1 태스크, 상기 데이터를 필터링하는 제2 태스크, 상기 데이터를 후처리하기 위한 제3 태스크, 및 상기 데이터를 출력하기 위한 제4 태스크를 포함하는 신경망 애플리케이션을 실행하기 위한 프로세서, 및 상기 메모리 및 상기 프로세서에 통신 가능하게 결합된 가속기 회로를 포함하고, 상기 가속기 회로는 상기 메모리로부터 수신된 데이터를 저장하기 위한 내부 메모리, 제1 명령 아키텍쳐(ISA)에 따라 지정된 제1 명령을 포함하는 제1 태스크를 수행하기 위한 입력 프로세서를 포함하는 입력 회로 블록, 제2 ISA에 따라 지정된 제2 명령을 포함하는 제2 태스크를 수행하기 위한 필터 프로세서를 포함하는 필터 회로 블록, 제3 ISA에 따라 지정된 제3 명령을 포함하는 제3 태스크를 수행하기 위한 후처리 프로세서를 포함하는 후처리 회로 블록, 및 제4 ISA에 따라 지정된 제4 명령을 포함하는 제4 태스크를 수행하기 위한 출력 프로세서를 포함하는 출력 회로 블록을 포함하고, 상기 입력 프로세서, 상기 필터 프로세서, 상기 후필터 프로세서 또는 상기 출력 프로세서 중 적어도 2개는 대응하는 태스크를 동시에 수행한다.
실시예 30에서, 실시예 29의 주제는 상기 가속기 회로에서 상기 입력 회로 블록이, 제1 명령 메모리, 제1 데이터 메모리 및 제1 프로그램 카운터(PC)를 더 포함하고, 상기 제1 명령 메모리는 상기 제1 명령을 저장하고, 상기 제1 PC는 상기 제1 프로세서에 의해 실행될 현재 제1 명령의 어드레스를 저장하고, 상기 입력 프로세서는 상기 제1 태스크를 수행하기 위해 상기 제1 데이터 메모리에 저장된 제1 데이터를 사용하여 상기 제1 명령을 실행하고, 상기 필터 회로 블록은 제2 명령 메모리, 제2 데이터 메모리 및 제2 PC를 더 포함하고, 상기 제2 명령 메모리는 상기 제2 명령을 저장하고, 상기 제2 PC는 상기 제2 프로세서에 의해 실행될 현재 제2 명령의 어드레스를 저장하고, 상기 필터 프로세서는 상기 제2 태스크를 수행하기 위해 상기 제2 데이터 메모리에 저장된 제2 데이터를 사용하여 상기 제2 명령을 실행하고, 상기 후처리 회로 블록은 제3 명령 메모리, 제3 데이터 메모리, 제3 PC를 더 포함하고, 상기 제3 명령 메모리는 상기 제3 명령을 저장하고, 상기 제3 PC는 상기 제3 프로세서에 의해 실행될 현재 제3 명령의 어드레스를 저장하고, 상기 후처리 프로세서는 상기 제3 태스크를 수행하기 위해 상기 제3 데이터 메모리에 저장된 제3 데이터를 사용하여 상기 제3 명령을 실행하고, 상기 출력 회로 블록은 제4 명령 메모리, 제4 데이터 메모리, 제4 PC를 더 포함하고, 상기 제4 명령 메모리는 제4 명령을 저장하고, 상기 제4 PC는 상기 제4 프로세서에 의해 실행될 현재 제4 명령의 어드레스를 저장하고, 상기 출력 프로세서는 상기 제4 태스크를 수행하기 위해 상기 제4 데이터 메모리에 저장된 제4 데이터를 사용하여 상기 제4 명령을 실행하고, 상기 입력 프로세서, 상기 필터 프로세서, 상기 후처리 프로세서 또는 상기 출력 프로세서의 각각은 각각의 고유한 명령 세트를 갖게 설계된 축소 명령 세트 컴퓨터(RISC) 프로세서인 것을 더 제공할 수 있다.
실시예 31에서, 실시예 30의 주제는 상기 가속기 회로는 상기 제1 태스크, 상기 제2 태스크, 상기 제3 태스크 또는 상기 제4 태스크 중 적어도 하나의 태스크의 실행의 시작을 나타내는 제1 플래그 비트를 저장하는 복수의 범용 레지스터, 복사 이벤트에 응답하여 상기 복수의 범용 레지스터에 복사될 내용을 저장하는 복수의 섀도우 레지스터, 및 인터페이스 회로를 더 포함하고, 상기 인터페이스 회로는 상기 프로세서에 대한 복수의 인터럽트를 저장하는 제어 레지스터, 상이한 종류의 에러의 발생을 나타내는 복수의 에러 플래그를 저장하는 에러 레지스터, 상기 복수의 범용 레지스터에 복사될 상기 복수의 섀도우 레지스터의 내용을 선택하기 위한 마스크를 저장하는 다음 레지스터, 및 상기 프로세서와 관련된 메모리에 대한 제어를 저장하는 서비스 품질 레지스터를 포함하는 것을 더 제공할 수 있다.
실시예 32에서, 실시예 30의 주제는 상기 가속기 회로가 복수의 회로 스트라이프를 더 포함하고, 상기 복수의 회로 스트라이프 각각은 복수의 필터 회로, 및 상기 복수의 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는 것을 더 제공할 수 있다.
실시예 33에서, 실시예 30의 주제는 상기 필터 회로 블록이 8개의 동일한 회로 스트라이프를 더 포함하고, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는 4개의 3×3 컨볼루션 신경망(CNN) 필터 회로, 및 상기 4개의 3×3 CNN 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는 것을 더 제공할 수 있다.
실시예 34에서, 실시예 33의 주제는 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는 상기 4개의 3×3 CNN 필터 회로의 공통 가중치 파라미터를 저장하기 위해 제1 복수의 레지스터를 공유하는 상기 4개의 3×3 CNN 필터 회로를 포함하는 것을 더 제공할 수 있다.
실시예 35에서, 실시예 29의 주제는, 상기 제1 명령이 유형값, 모드값 및 크기값을 포함하는 입력 명령을 포함하고, 상기 입력 명령을 실행하기 위해 상기 입력 프로세서는 상기 입력 프로세서의 제1 로컬 레지스터 및 제2 로컬 레지스터를 연결하여 제1 메모리 어드레스를 형성하고, 상기 제1 메모리 어드레스에 기초하여, 상기 프로세서와 관련된 메모리를 판독하여 상기 유형값에 의해 결정된 형식으로 데이터값을 검색하고, 상기 크기값은 상기 메모리로부터 검색된 데이터값의 바이트의 수를 결정하고, 상기 모드값에 의해 결정된 모드에서 상기 내부 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 36에서, 실시예 29의 주제는 상기 제2 명령이 합산값 및 모드값을 포함하는 필터 명령을 포함하고, 상기 필터 명령을 실행하기 위해 상기 필터 프로세서는 상기 필터 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값을 판독하고, 각 회로 스트라이프에 대해 복수의 필터 결과를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고, 상기 합산값에 기초하여, 각 회로 스트라이프로부터 대응하는 필터 결과의 합산값을 계산하고, 상기 모드값에 기초하여, 상기 필터 회로 블록이 슬라이스 모드에 있는지 또는 전역 모드에 있는지 여부를 결정하고, 상기 필터 회로 블록이 상기 슬라이스 모드에 있다는 결정에 응답하여, 제2 로컬 레지스터에 저장된 오프셋으로 상기 합산값을 각 슬라이스에 기입하고, 상기 필터 회로 블록이 전역 모드에 있다는 결정에 응답하여, 상기 합산값을 상기 제2 로컬 레지스터에 저장된 메모리 어드레스에서 상기 내부 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 37에서, 실시예 29의 주제는 상기 제3 명령이 상기 제어 레지스터의 식별자, 열값, 행값 및 종류값을 포함하는 후처리 명령을 포함하고, 상기 후처리 명령을 실행하기 위해 상기 후처리 프로세서는, 상기 종류값이 압축 모드를 나타낸다는 결정에 응답하여, 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값의 수를 판독하고; 상기 열값은 상기 수를 지정하고, 상기 열값에 기초하여 상기 데이터값을 복수의 그룹으로 그룹화하고, 상기 종류값에 기초하여 상기 복수의 그룹 각각을 상기 그룹의 최대값 또는 상기 그룹의 제1 요소 중 하나로 압축하고, 압축된 값들 중 최대값 및 상태 레지스터에 저장된 값을 결정하고, 상기 상태 레지스터에 상기 최대값을 저장하고, 활성화 함수를 상기 최대값에 적용하고, 상기 활성화 함수는 항등 함수, 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나이며, 제2 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여 상기 활성화 함수의 결과를 상기 내부 메모리에 기입하고, 상기 종류값이 상위-N 모드를 나타낸다는 결정에 응답하여, 제3 로컬 레지스터에 저장된 제3 메모리 어드레스에 기초하여, 데이터값의 어레이를 판독하고, 상기 어레이에서 상위-N 값 및 대응하는 위치를 결정하고, N은 1보다 큰 정수이고, 상기 제어값이 메모리 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 제4 로컬 레지스터에 저장된 제4 메모리 어드레스에서 상기 내부 메모리에 기입하고, 상기 제어값이 레지스터 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 상기 후처리 프로세서와 관련된 상태 레지스터에 기입하는 것을 더 제공할 수 있다.
실시예 38에서, 실시예 29의 주제는 상기 제4 명령이 유형값, 모드값 및 크기값을 포함하는 출력 명령을 포함하고, 상기 출력 명령을 실행하기 위해 상기 출력 프로세서는 상기 출력 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 복수의 데이터값을 판독하고, 상기 크기값은 상기 복수의 데이터값의 수를 지정하고, 상기 출력 프로세서의 제2 로컬 레지스터 및 제3 로컬 레지스터를 연결하여 제2 메모리 어드레스를 형성하고, 및 상기 제2 메모리 어드레스에 기초하여 상기 유형값에 의해 결정된 형식으로 상기 복수의 데이터값을 상기 프로세서와 관련된 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 39는 시스템이고, 상기 시스템은 메모리, 입력 회로 블록, 필터 회로 블록, 후처리 회로 블록 및 출력 회로 블록을 포함하는 가속기 회로, 및 상기 메모리 및 상기 가속기 회로에 통신 가능하게 결합된 프로세서를 포함하고, 상기 프로세서는 상기 가속기 회로를 초기화하고, 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 또는 상기 출력 회로 블록 중 적어도 하나에 의해 수행될 신경망 애플리케이션의 태스크를 결정하고, 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 또는 상기 출력 회로 블록 중 적어도 하나에 의해 수행될 신경망 애플리케이션의 태스크를 결정하고, 상기 가속기 회로에 상기 태스크를 수행하도록 지시하고, 상기 태스크의 수행을 완료하는 상기 가속기 회로로부터 수신된 결과에 기초하여 상기 신경망 애플리케이션을 실행한다.
실시예 40에서, 실시예 39의 주제는 상기 가속기 회로가 상기 메모리로부터 수신된 데이터를 저장하기 위한 내부 메모리, 상기 태스크 중 적어도 하나의 태스크의 실행의 시작을 나타내는 제1 플래그 비트를 저장하기 위한 복수의 범용 레지스터, 복사 이벤트에 응답하여 상기 복수의 범용 레지스터에 복사될 내용을 저장하기 위한 복수의 섀도우 레지스터, 및 인터페이스 회로를 더 포함하고, 상기 인터페이스 회로는 상기 프로세서에 대한 복수의 인터럽트를 저장하기 위한 제어 레지스터, 상이한 종류의 에러의 발생을 나타내는 복수의 에러 플래그를 저장하기 위한 에러 레지스터, 상기 복수의 범용 레지스터에 복사될 상기 복수의 섀도우 레지스터의 내용을 선택하기 위한 마스크를 저장하는 다음 레지스터, 및 상기 프로세서와 관련된 메모리에 대한 제어를 저장하기 위한 서비스 품질 레지스터를 포함하는 것을 더 제공할 수 있다.
실시예 41에서, 실시예 40의 주제는 상기 입력 회로 블록이 입력 프로세서, 제1 명령 메모리, 제1 데이터 메모리 및 제1 프로그램 카운터(PC)를 더 포함하고, 상기 제1 명령 메모리는 상기 입력 프로세서의 제1 명령 세트 아키텍쳐 (ISA)에 따라 지정된 제1 태스크의 제1 명령을 저장하고, 상기 제1 PC는 상기 제1 프로세서에 의해 실행될 현재 제1 명령의 어드레스를 저장하고, 상기 입력 프로세서는 상기 제1 태스크를 수행하기 위해 상기 제1 데이터 메모리에 저장된 제1 데이터를 사용하여 상기 제1 명령을 실행하고, 상기 필터 회로 블록은 필터 프로세서, 제2 명령 메모리, 제2 데이터 메모리 및 제2 PC를 포함하고, 상기 제2 명령 메모리는 상기 필터 프로세서의 제2 ISA에 따라 지정된 제2 태스크의 제2 명령을 저장하고, 상기 제2 PC는 상기 제2 프로세서에 의해 실행될 현재 제2 명령의 어드레스를 저장하고, 상기 필터 프로세서는 상기 제2 태스크를 수행하기 위해 상기 제2 데이터 메모리에 저장된 제2 데이터를 사용하여 상기 제2 명령을 실행하고, 상기 후처리 회로 블록은 후처리 프로세서, 제3 명령 메모리, 제3 데이터 메모리, 제3 PC를 포함하고, 상기 제3 명령 메모리는 상기 후처리 프로세서의 제3 ISA에 따라 지정된 제3 태스크의 제3 명령을 저장하고, 상기 제3 PC는 상기 제3 프로세서에 의해 실행될 현재 제3 명령의 어드레스를 저장하고, 상기 후처리 프로세서는 상기 제3 태스크를 수행하기 위해 상기 제3 데이터 메모리에 저장된 제3 데이터를 사용하여 상기 제3 명령을 실행하고, 상기 출력 회로 블록은 출력 프로세서, 제4 명령 메모리, 제4 데이터 메모리, 제4 PC를 포함하고, 상기 제4 명령 메모리는 상기 출력 프로세서의 제4 ISA에 따라 지정된 제4 태스크의 제4 명령을 저장하고, 상기 제4 PC는 상기 제4 프로세서에 의해 실행될 현재 제4 명령의 어드레스를 저장하고, 상기 출력 프로세서는 상기 제4 태스크를 수행하기 위해 상기 제4 데이터 메모리에 저장된 제4 데이터를 사용하여 상기 제4 명령을 실행하는 것을 더 제공할 수 있다.
실시예 42에서, 실시예 41의 주제는 복수의 회로 스트라이프를 더 포함하고, 상기 복수의 회로 스트라이프 각각은 복수의 필터 회로, 및 상기 복수의 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는 것을 더 제공할 수 있다.
실시예 43에서, 실시예 41의 주제는 상기 필터 회로 블록이 8개의 동일한 회로 스트라이프를 더 포함하고, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는 4개의 3×3 컨볼루션 신경망(CNN) 필터 회로, 및 상기 4개의 3×3 CNN 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는 것을 더 제공할 수 있다.
실시예 44에서, 실시예 41의 주제는 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록 중 적어도 2개는 동시에 동작하는 것을 더 제공할 수 있다.
실시예 45에서, 실시예 41의 주제는 상기 제1 명령은 유형값, 모드값 및 크기값을 포함하는 입력 명령을 포함하고, 상기 입력 명령을 실행하기 위해 상기 입력 프로세서는 상기 입력 프로세서의 제1 로컬 레지스터 및 제2 로컬 레지스터를 연결하여 제1 메모리 어드레스를 형성하고, 상기 제1 메모리 어드레스에 기초하여, 상기 유형값에 의해 결정된 형식으로 데이터값을 검색하기 위해 상기 프로세서와 관련된 메모리를 판독하고, 상기 크기값은 상기 메모리로부터 검색된 상기 데이터값과 관련된 바이트 수를 결정하고, 상기 모드값에 의해 결정된 모드에서 상기 데이터값을 상기 로컬 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 46에서, 실시예 45의 주제는 상기 모드값이 제1 모드를 나타낸다는 결정에 응답하여, 상기 입력 프로세서가 제3 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여, 상기 로컬 메모리에 기입하고, 상기 모드값이 제2 모드를 나타낸다는 결정에 응답하여, 상기 입력 프로세서는 상기 제3 로컬 레지스터에 저장된 오프셋으로 상기 복수의 회로 스트라이프 각각의 슬라이스에 기입하는 것을 더 제공할 수 있다.
실시예 47에서, 실시예 41의 주제는 상기 제2 명령이 합산값 및 모드값을 포함하는 필터 명령을 포함하고, 상기 필터 명령을 실행하기 위해 상기 필터 프로세서는 상기 필터 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값을 판독하고, 각 회로 스트라이프에 대해 복수의 필터 결과를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고, 상기 합산값에 기초하여, 각 회로 스트라이프로부터 대응하는 필터 결과의 합산값을 계산하고, 상기 모드값에 기초하여 상기 필터 회로 블록이 슬라이스 모드에 있는지 또는 전역 모드에 있는지 여부를 결정하고, 상기 필터 회로 블록이 상기 슬라이스 모드에 있다는 결정에 응답하여, 제2 로컬 레지스터에 저장된 오프셋으로 각 슬라이스에 상기 합산값을 기입하고, 상기 필터 회로 블록이 전역 모드에 있다는 결정에 응답하여, 상기 합산값을 상기 제2 로컬 레지스터에 저장된 메모리 어드레스에서 상기 내부 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 48에서, 실시예 41의 주제는 상기 제3 명령이 상기 제어 레지스터의 식별자, 열값, 행값 및 종류값을 포함하는 후처리 명령을 포함하고, 상기 후처리 명령을 실행하기 위해 상기 후처리 프로세서는 상기 종류값이 압축 모드를 나타낸다는 결정에 응답하여, 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값의 수를 판독하고, 상기 열값은 상기 수를 지정하고, 상기 열값에 기초하여 상기 데이터값을 복수의 그룹으로 그룹화하고, 상기 종류값에 기초하여 상기 복수의 그룹 각각을 상기 그룹의 최대값 또는 상기 그룹의 제1 요소 중 하나로 압축하고, 압축된 값들 중 최대값 및 상태 레지스터에 저장된 값을 결정하고, 상기 상태 레지스터에 상기 최대값을 저장하고, 활성화 함수를 상기 최대값에 적용하고, 상기 활성화 함수는 항등 함수, 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나이며, 제2 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여 상기 활성화 함수의 결과를 상기 내부 메모리에 기입하고, 상기 종류값이 상위-N 모드를 나타낸다는 결정에 응답하여, 제3 로컬 레지스터에 저장된 제3 메모리 어드레스에 기초하여 데이터값의 어레이를 판독되고, 상기 어레이에서 상위-N 값 및 대응하는 위치를 결정하고, N은 1보다 큰 정수이고, 상기 제어값이 메모리 기입을 나타낸다는 결정에 응답하여, 상기 상위-N-값 및 대응하는 위치를 제4 로컬 레지스터에 저장된 제4 메모리 어드레스에서 상기 내부 메모리에 기입하고, 상기 제어값이 레지스터 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 상기 후처리 프로세서와 관련된 상태 레지스터에 기입하는 것을 더 제공할 수 있다.
실시예 49에서, 실시예 41의 주제는 상기 제4 명령이 유형값, 모드값 및 크기값을 포함하는 출력 명령을 포함하고, 상기 출력 명령을 실행하기 위해 상기 출력 프로세서는 상기 출력 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 복수의 데이터값을 판독하고, 상기 크기값은 상기 복수의 데이터값의 수를 지정하고, 상기 출력 프로세서의 제2 로컬 레지스터 및 제3 로컬 레지스터를 연결하여 제2 메모리 어드레스를 형성하고, 및 상기 제2 메모리 어드레스에 기초하여 상기 유형값에 의해 결정된 형식으로 상기 복수의 데이터값을 상기 프로세서와 관련된 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 50에서, 실시예 41의 주제는 상기 가속기 회로를 초기화하기 위해 상기 프로세서는 상기 제어 레지스터에 리셋 플래그를 설정하는 것을 더 제공할 수 있다.
실시예 51에서, 실시예 41의 주제는 상기 신경망 애플리케이션의 태스크를 결정하기 위해 상기 프로세서는 상기 신경망 애플리케이션을 상기 입력 프로세서, 상기 필터 프로세서, 상기 후처리 프로세서 또는 상기 출력 프로세서 중 하나에 의해 실행될 코드 세그먼트로 분할하는 것을 더 제공할 수 있다.
실시예 52에서, 실시예 39의 주제는 각각의 태스크를 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 또는 상기 출력 회로 블록 중 대응하는 블록에 할당하고, 상기 프로세서는 대응하는 제1 명령 메모리, 제2 명령 메모리, 제3 명령 메모리 또는 제4 명령 메모리에 상기 태스크의 명령을 배치하는 것을 더 제공할 수 있다.
실시예 53은 방법이고, 상기 방법은 프로세서에 의해 입력 회로 블록, 필터 회로 블록, 후처리 회로 블록 및 출력 회로 블록을 포함하는 가속기 회로를 개시하는 단계, 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 또는 상기 출력 회로 블록 중 적어도 하나의 블록에 의해 수행될 신경망 애플리케이션의 태스크를 결정하는 단계, 각각의 태스크를 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 또는 상기 출력 회로 블록 중 대응하는 블록에 할당하는 단계, 상기 가속기 회로에 상기 태스크를 수행할 것을 지시하는 단계, 및 상기 태스크의 수행을 완료하는 상기 가속기 회로로부터 수신된 결과에 기초하여 상기 신경망 애플리케이션을 실행하는 단계를 포함한다.
실시예 54는 가속기 회로이고, 상기 가속기 회로는 프로세서와 관련된 메모리로부터 수신된 데이터를 저장하기 위한 내부 메모리, 및 복수의 회로 스트라이프를 포함하는 필터 회로 블록을 포함하고, 각각의 회로 스트라이프는 필터 프로세서, 복수의 필터 회로, 및 상기 복수의 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하고, 상기 필터 프로세서는 필터 명령을 실행하고, 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값을 판독하고, 상기 복수의 회로 스트라이프 각각에 대해 복수의 필터 결과를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고, 상기 내부 메모리의 상기 복수의 필터 회로를 사용하여 생성된 결과를 제2 메모리 어드레스에 기입한다.
실시예 55에서, 실시예 54의 주제는 입력 프로세서, 제1 명령 메모리, 제1 데이터 메모리 및 제1 프로그램 카운터(PC)를 더 포함하는 입력 회로 블록을 더 포함할 수 있고, 상기 제1 명령 메모리는 상기 입력 프로세서의 제1 명령 세트 아키텍쳐(ISA)에 따라 지정된 제1 태스크의 제1 명령을 저장하고, 상기 제1 PC는 상기 제1 프로세서에 의해 실행될 현재 제1 명령의 어드레스를 저장하고, 상기 입력 프로세서는 상기 제1 태스크를 수행하기 위해 상기 제1 데이터 메모리에 저장된 제1 데이터를 사용하여 상기 제1 명령을 실행하고, 상기 필터 회로 블록은 제2 명령 메모리, 제2 데이터 메모리 및 제2 PC를 포함하고, 상기 제2 명령 메모리는 상기 필터 프로세서의 제2 ISA에 따라 지정된 제2 태스크의 제2 명령을 저장하고, 상기 제2 PC는 상기 제2 프로세서에 의해 실행될 현재 제2 명령의 어드레스를 저장하고, 상기 필터 프로세서는 상기 제2 태스크를 수행하기 위해 상기 제2 데이터 메모리에 저장된 제2 데이터를 사용하여 상기 제2 명령을 실행하고, 후처리 회로 블록은 후처리 프로세서, 제3 명령 메모리, 제3 데이터 메모리, 제3 PC를 포함하고, 상기 제3 명령 메모리는 상기 후처리 프로세서의 제3 ISA에 따라 지정된 제3 태스크의 제3 명령을 저장하고, 상기 제3 PC는 상기 제3 프로세서에 의해 실행될 현재 제3 명령의 어드레스를 저장하고, 상기 후처리 프로세서는 상기 제3 태스크를 수행하기 위해 상기 제3 데이터 메모리에 저장된 제3 데이터를 사용하여 상기 제3 명령을 실행하고, 출력 회로 블록은 출력 프로세서, 제4 명령 메모리, 제4 데이터 메모리, 제4 PC를 포함하고, 상기 제4 명령 메모리는 상기 출력 프로세서의 제4 ISA에 따라 지정된 제4 태스크의 제4 명령을 저장하고, 상기 제4 PC는 상기 제4 프로세서에 의해 실행될 현재 제4 명령의 어드레스를 저장하고, 상기 출력 프로세서는 상기 제4 태스크를 수행하기 위해 상기 제4 데이터 메모리에 저장된 제4 데이터를 사용하여 상기 제4 명령을 실행한다.
실시예 56에서, 실시예 55의 주제는 태스크들 중 적어도 하나의 태스크의 실행의 시작을 나타내는 제1 플래그 비트를 저장하기 위한 복수의 범용 레지스터, 복사 이벤트에 응답하여 상기 복수의 범용 레지스터에 복사될 내용을 저장하기 위한 복수의 섀도우 레지스터, 및 인터페이스 회로를 더 포함할 수 있고, 상기 인터페이스 회로는 상기 프로세서에 대한 복수의 인터럽트를 저장하기 위한 제어 레지스터, 상이한 종류의 에러의 발생을 나타내는 복수의 에러 플래그를 저장하기 위한 에러 레지스터, 상기 복수의 범용 레지스터에 복사될 상기 복수의 섀도우 레지스터의 내용을 선택하기 위한 마스크를 저장하는 다음 레지스터, 및 상기 프로세서와 관련된 메모리에 대한 제어를 저장하는 서비스 품질 레지스터를 포함한다.
실시예 57에서, 실시예 56의 주제는 상기 필터 회로 블록이 8개의 동일한 회로 스트라이프를 포함하고, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는 4개의 3×3 컨볼루션 신경망(CNN) 필터 회로, 및 상기 4개의 3×3 CNN 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는 것을 더 제공할 수 있다.
실시예 58에서, 실시예 57의 주제는 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프가 상기 4개의 3×3 CNN 필터 회로의 공통 가중치 파라미터를 저장하기 위해 제1 복수의 레지스터를 공유한 상기 4개의 3×3 CNN 필터 회로를 포함하는 것을 더 제공할 수 있다.
실시예 59에서, 실시예 57의 주제는 상기 4개의 3×3 CNN 필터 회로 중 하나의 필터 회로는 가중치 파라미터를 저장하기 위한 제1 복수의 레지스터, 입력값을 저장하는 제2 복수의 레지스터, 상기 가중치 파라미터들 각각과 상기 입력값들 각각 사이에 곱셈을 계산하기 위해 복수의 곱셈 회로를 포함하는 축소 트리, 및 상기 3×3 CNN 필터 회로 중 다른 필터 회로의 캐리-오버 결과와 상기 복수의 곱셈 회로의 결과를 가산하는 합산 회로를 포함하는 것을 더 제공할 수 있다.
실시예 60에서, 실시예 59의 주제는 상기 8개의 동일한 회로 스트라이프가 각각 상기 4개의 3×3 CNN 필터 회로에 의해 생성된 4개의 결과를 출력하고, 상기 필터 회로 블록은 4개의 가산 회로를 포함하고, 상기 4개의 가산 회로 각각은 상기 8개의 필터 회로의 4개의 결과 각각을 합산하는 것을 더 제공할 수 있다.
실시예 61에서, 실시예 59의 주제는 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록은 실행 파이프라인을 형성하고, 상기 입력 회로 블록의 입력 프로세서는 상기 프로세서와 관련된 메모리로부터 판독하고, 상기 입력 회로 블록에 의해 생성된 제1 결과를 상기 내부 메모리에 기입하고, 상기 필터 프로세서는 상기 내부 메모리로부터 제1 결과를 판독하고, 상기 필터 회로 블록에 의해 생성된 제2 결과를 상기 내부 메모리에 기입하고, 상기 후처리 프로세서는 상기 내부 메모리로부터 제2 결과를 판독하고, 상기 후처리 회로 블록에 의해 생성된 제3 결과를 상기 내부 메모리에 기입하고, 상기 출력 프로세서는 상기 내부 메모리로부터 상기 제3 결과를 판독하고, 상기 출력 회로 블록에 의해 생성된 제4 결과를 상기 프로세서와 관련된 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 62에서, 실시예 59의 주제는 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록 중 적어도 2개는 동시에 동작하는 것을 더 제공할 수 있다.
실시예 63에서, 실시예 59의 주제는 상기 후처리 회로 블록이 압축 함수, 활성화 함수 또는 상위-N 함수 중 적어도 하나를 수행하는 것을 더 제공할 수 있다.
실시예 64에서, 실시예 59의 주제는 상기 제1 명령이 유형값, 모드값 및 크기값을 포함하는 입력 명령을 포함하고, 상기 입력 명령을 실행하기 위해 상기 입력 프로세서는 상기 입력 프로세서의 제1 로컬 레지스터 및 제2 로컬 레지스터를 연결하여 제1 메모리 어드레스를 형성하고, 상기 제1 메모리 어드레스에 기초하여 상기 유형값에 의해 결정된 형식으로 데이터값을 검색하기 위해 상기 프로세서와 관련된 메모리를 판독하고, 상기 크기값은 상기 메모리로부터 검색된 상기 데이터값과 관련된 바이트 수를 결정하고, 상기 데이터값을 상기 모드값에 의해 결정된 모드에서 상기 로컬 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 65에서, 실시예 59의 주제는 상기 제2 명령이 합산값 및 모드값을 포함하는 필터 명령을 포함하고, 상기 필터 명령을 실행하기 위해 상기 필터 프로세서는 상기 필터 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값을 판독하고, 각각의 회로 스트라이프에 대해 복수의 필터 결과를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고, 상기 합산값에 기초하여, 각 회로 스트라이프로부터의 대응하는 필터 결과의 합산값을 계산하고, 상기 모드값에 따라, 상기 필터 회로 블록이 슬라이스 모드에 있는지 또는 전역 모드에 있는지 여부를 결정하고, 상기 필터 회로 블록이 상기 슬라이스 모드에 있다는 결정에 응답하여, 상기 합산값을 제2 로컬 레지스터에 저장된 오프셋으로 각 슬라이스에 기입하고, 및 상기 필터 회로 블록이 전역 모드에 있다는 결정에 응답하여, 상기 합산값을 상기 제2 로컬 레지스터에 저장된 메모리 어드레스에서 상기 내부 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 66에서, 실시예 59의 주제는 상기 제3 명령이 상기 제어 레지스터의 식별자, 열값, 행값 및 종류값을 포함하는 후처리 명령을 포함하고, 상기 후처리 명령을 실행하기 위해 상기 후처리 프로세서는, 상기 종류값이 압축 모드를 나타낸다는 결정에 응답하여, 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값의 수를 판독하고, 상기 열값은 상기 수를 지정하고, 상기 열값에 기초하여 상기 데이터값을 복수의 그룹으로 그룹화하고, 상기 종류값에 기초하여 상기 복수의 그룹 각각을 상기 그룹의 최대값 또는 상기 그룹의 제1 요소 중 하나로 압축하고, 압축된 값들 중 최대값 및 상태 레지스터에 저장된 값을 결정하고, 상기 상태 레지스터에 상기 최대값을 저장하고, 활성화 함수를 상기 최대값에 적용하며, 상기 활성화 함수는 항등 함수, 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나이며, 제2 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여 상기 활성화 함수의 결과를 상기 내부 메모리에 기입하고, 및 상기 종류값이 상위-N 값을 나타낸다는 결정에 응답하여 제3 로컬 레지스터에 저장된 제3 메모리 어드레스에 기초하여, 데이터값의 어레이를 판독하고, 상기 어레이에서 상위-N 값 및 대응하는 위치를 결정하고, N은 1보다 큰 정수이고, 상기 제어값이 메모리 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 제4 로컬 레지스터에 저장된 제4 메모리 어드레스에서 상기 내부 메모리에 기입하고, 상기 제어값이 레지스터 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 상기 후처리 프로세서와 관련된 상태 레지스터에 기입하는 것을 더 제공할 수 있다.
실시예 67에서, 실시예 59의 주제는 상기 제4 명령은 유형값, 모드값 및 크기값을 포함하는 출력 명령을 포함하고, 상기 출력 명령을 실행하기 위해 상기 출력 프로세서는 상기 출력 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 복수의 데이터값을 판독하고, 상기 크기값은 상기 복수의 데이터값의 수를 지정하고, 상기 출력 프로세서의 제2 로컬 레지스터 및 제3 로컬 레지스터를 연결하여 제2 메모리 어드레스를 형성하고, 및 상기 제2 메모리 어드레스에 기초하여 상기 유형값에 의해 결정된 형식으로 상기 복수의 데이터값을 상기 프로세서와 관련된 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 68은 시스템이고, 상기 시스템은 데이터를 저장하기 위한 메모리, 상기 메모리와 통신 가능하게 결합되고, 상기 데이터를 사용하여 필터 동작을 포함하는 신경망 애플리케이션을 실행하기 위한 프로세서, 및 가속기 회로를 포함하고, 상기 가속기 회로는 내부 메모리, 복수의 회로 스트라이프를 포함하는 필터 회로 블록을 포함하고, 각각의 회로 스트라이프는 필터 프로세서, 복수의 필터 회로, 및 상기 복수의 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하고, 상기 필터 프로세서는 필터 명령을 실행하고, 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값을 판독하고, 각각의 회로 스트라이프에 대해 복수의 필터 결과를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고, 상기 내부 메모리의 상기 복수의 필터 회로를 사용하여 생성된 결과를 제2 메모리 어드레스에 기입한다.
실시예 69는 방법이고, 상기 방법은, 프로세서로부터 필터 명령을 포함하는 태스크를 가속기 회로에 의해 수신하는 단계로서, 상기 가속기 회로는 복수의 회로 스트라이프를 포함하는 필터 회로 블록을 포함하고, 각각의 회로 스트라이프는 필터 엔진; 복수의 필터 회로, 및 상기 복수의 필터 회로에 할당된 내부 메모리의 슬라이스를 포함하는, 상기 태스크를 수신하는 단계, 제1 메모리 어드레스로부터 시작하여 상기 가속기 회로의 내부 메모리로부터 데이터값을 판독하고, 상기 복수의 회로 스트라이프 각각에 대해 복수의 필터 결과를 생성하기 위해 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하는 단계, 및 상기 복수의 필터 회로를 사용하여 생성된 결과를 제2 메모리 어드레스의 상기 내부 메모리에 기입하는 단계를 포함한다.
실시예 70은 시스템이고, 상기 시스템은 데이터를 저장하기 위한 메모리, 상기 메모리에 통신 가능하게 결합되고, 신경망 애플리케이션을 실행하기 위한 프로세서, 및 가속기 회로를 포함하고, 상기 가속기 회로는 상기 신경망 애플리케이션의 제1 태스크를 수행하기 위한 입력 프로세서를 포함하는 입력 회로 블록, 상기 신경망 애플리케이션의 제2 태스크를 수행하기 위한 필터 프로세서를 포함하는 필터 회로 블록, 및 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록에 통신 가능하게 결합된 복수의 범용 필터를 포함하고, 상기 입력 회로 블록 및 상기 필터 회로 블록은 실행 파이프라인의 스테이지를 형성하고, 생산자 스테이지는 데이터값을 소비자 스테이지에 공급하고, 소비자 스테이지의 동작은 상기 복수의 범용 레지스터 중 제1 범용 레지스터에 저장된 시작 플래그가 상기 생산자에 의해 설정될 때까지 보류된다.
실시예 71에서, 실시예 68의 주제는 상기 가속기 회로가 상기 신경망 애플리케이션의 제3 태스크를 수행하기 위한 후처리 프로세서를 포함하는 후처리 회로 블록, 및 상기 신경망의 제4 태스크를 수행하기 위한 출력 프로세서를 포함하는 출력 회로 블록을 더 포함하고, 상기 입력 회로 블록, 상기 필터 회로 블록은 실행 파이프라인의 스테이지를 형성하고, 상기 후처리 회로 블록 및 상기 출력 회로 블록은 상기 실행 파이프라인을 형성하는 것을 더 제공할 수 있다.
실시예 73에서, 실시예 71의 주제는 상기 생산자 스테이지가 상기 입력 회로 블록이고, 상기 소비자 스테이지는 상기 필터 회로 블록, 상기 후처리 회로 블록 또는 상기 출력 회로 블록 중 하나이며, 상기 생산자 스테이지는 상기 입력 회로 블록 또는 상기 필터 회로 블록 중 하나이고, 상기 소비자 스테이지는 상기 후처리 회로 블록 또는 상기 출력 회로 블록 중 하나이며, 상기 생산자 스테이지는 상기 입력 회로 블록, 상기 필터 회로 블록, 또는 상기 후처리 스테이지 중 하나이고, 상기 소비자 스테이지는 상기 출력 회로 블록인 것을 더 제공할 수 있다.
실시예 73에서, 실시예 70의 주제는 상기 입력 회로 블록이 제1 명령 메모리, 제1 데이터 메모리 및 제1 프로그램 카운터(PC)를 더 포함하고, 상기 제1 명령 메모리는 상기 입력 프로세서의 제1 명령 세트 아키텍쳐(ISA)에 따라 지정된 제1 태스크의 제1 명령을 저장하고, 상기 제1 PC는 상기 제1 프로세서에 의해 실행될 현재 제1 명령의 어드레스를 저장하고, 상기 입력 프로세서는 제1 태스크를 수행하기 위해 상기 제1 데이터 메모리에 저장된 제1 데이터를 사용하여 상기 제1 명령을 실행하고, 상기 필터 회로 블록은 제2 명령 메모리, 제2 데이터 메모리 및 제2 PC를 더 포함하고, 상기 제2 명령 메모리는 상기 필터 프로세서의 제2 ISA에 따라 지정된 제2 태스크의 제2 명령을 저장하고, 상기 제2 PC는 상기 제2 프로세서에 의해 실행될 현재 제2 명령의 어드레스를 저장하고, 상기 필터 프로세서는 상기 제2 태스크를 수행하기 위해 상기 제2 데이터 메모리에 저장된 제2 데이터를 사용하여 상기 제2 명령을 실행하고, 상기 후처리 회로 블록은 제3 명령 메모리, 제3 데이터 메모리, 제3 PC를 더 포함하고, 상기 제3 명령 메모리는 상기 후처리 프로세서의 제3 ISA에 따라 지정된 제3 태스크의 제3 명령을 저장하고, 상기 제3 PC는 상기 제3 프로세서에 의해 실행될 현재 제3 명령의 어드레스를 저장하고, 상기 후처리 프로세서는 상기 제3 태스크를 수행하기 위해 상기 제3 데이터 메모리에 저장된 제3 데이터를 사용하여 상기 제3 명령을 실행하고, 상기 출력 회로 블록은 제4 명령 메모리, 제4 데이터 메모리, 제4 PC를 더 포함하고, 상기 제4 명령 메모리는 상기 출력 프로세서의 제4 ISA에 따라 지정된 제4 태스크의 제4 명령을 저장하고, 상기 제4 PC는 상기 제4 프로세서에 의해 실행될 현재 제4 명령의 어드레스를 포함하고, 상기 출력 프로세서는 상기 제4 태스크를 수행하기 위해 상기 제4 데이터 메모리에 저장된 제4 데이터를 사용하여 제4 명령을 실행하는 것을 더 제공할 수 있다.
실시예 74에서, 실시예 73의 주제는 상기 가속기 회로가 복사 이벤트에 응답하여 상기 복수의 범용 레지스터에 복사될 내용을 저장하기 위한 복수의 섀도우 레지스터 및 인터페이스 회로를 더 포함하고, 상기 인터페이스 회로는 상기 프로세서에 대한 복수의 인터럽트를 저장하는 제어 레지스터, 상이한 종류의 에러의 발생을 나타내는 복수의 에러 플래그를 저장하는 에러 레지스터, 상기 복수의 범용 레지스터에 복사될 상기 복수의 섀도우 레지스터의 내용을 선택하기 위한 마스크를 저장하는 다음 레지스터, 및 상기 프로세서와 관련된 메모리에 대한 제어를 저장하기 위한 서비스 품질 레지스터를 포함하는 것을 더 제공할 수 있다.
실시예 75에서, 실시예 73의 주제는 상기 입력 회로 블록의 입력 프로세서가 상기 프로세서와 관련된 메모리로부터 판독되고, 상기 입력 회로 블록에 의해 생성된 제1 결과를 상기 내부 메모리에 기입하고, 상기 필터 프로세서는 상기 내부 메모리로부터 제1 결과를 판독하고, 상기 필터 회로 블록에 의해 생성된 제2 결과를 상기 내부 메모리에 기입하고, 상기 후처리 프로세서는 상기 내부 메모리로부터 제2 결과를 판독하고, 상기 후처리 회로 블록에 의해 생성된 제3 결과를 상기 내부 메모리에 기입하고, 상기 출력 프로세서는 상기 내부 메모리로부터 상기 제3 결과를 판독하고, 상기 출력 회로 블록에 의해 생성된 제4 결과를 상기 프로세서와 관련된 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 76에서, 실시예 73의 주제는 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록 중 적어도 2개가 동시에 동작하는 것을 더 제공할 수 있다.
실시예 77에서, 실시예 73의 주제는, 상기 제1 명령이 유형값, 모드값 및 크기값을 포함하는 입력 명령을 포함하고, 상기 입력 명령을 실행하기 위해 상기 입력 프로세서는 상기 입력 프로세서의 제1 로컬 레지스터 및 제2 로컬 레지스터를 연결하여 제1 메모리 어드레스를 형성하고, 상기 제1 메모리 어드레스에 기초하여 상기 프로세서와 관련된 메모리를 판독하여 상기 유형값에 의해 결정된 형식으로 데이터값을 검색하고, 상기 크기값은 상기 메모리로부터 검색된 상기 데이터값과 관련된 바이트의 수를 결정하고, 상기 데이터값을 상기 모드값에 의해 결정된 모드에서 상기 로컬 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 78에서, 실시예 77의 주제는 상기 모드값이 제1 모드를 나타낸다는 결정에 응답하여, 상기 입력 프로세서가 제3 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여, 상기 로컬 메모리에 기입하고, 상기 모드값이 제2 모드를 나타낸다는 결정에 응답하여, 상기 입력 프로세서는 상기 제3 로컬 레지스터에 저장된 오프셋으로 상기 복수의 회로 스트라이프 각각의 슬라이스에 기입하는 것을 더 제공할 수 있다.
실시예 79에서, 실시예 73의 주제는 상기 제2 명령이 합산값 및 모드값을 포함하는 필터 명령을 포함하고, 상기 필터 명령을 실행하기 위해 상기 필터 프로세서는 상기 필터 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값을 판독하고, 각각의 회로 스트라이프에 대해 복수의 필터 회로를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고, 상기 합산값에 기초하여, 각 회로 스트라이프로부터 대응하는 필터 결과의 합산값을 계산하고, 상기 모드값에 기초하여 상기 필터 회로 블록이 슬라이스 모드에 있는지 또는 전역 모드에 있는지 여부를 결정하고, 상기 필터 회로 블록이 상기 슬라이스 모드에 있다는 결정에 응답하여, 제2 로컬 레지스터에 저장된 오프셋으로 각 슬라이스에 상기 합산값을 기입하고, 상기 필터 회로 블록이 전역 모드에 있다는 결정에 응답하여, 상기 합산값을 상기 제2 로컬 레지스터에 저장된 메모리 어드레스에서 내부 메모리에 기입하는 것을 더 제공할 수 있다.
실시예 80에서, 실시예 73의 주제는 상기 제3 명령이 상기 제어 레지스터의 식별자, 열값, 행값 및 종류값을 포함하는 후처리 명령을 포함하고, 상기 후처리 명령을 실행하기 위해 상기 후처리 프로세서는 상기 종류값이 압축 모드를 나타낸다는 결정에 응답하여, 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값의 수를 판독하고, 상기 열값은 상기 수를 지정하고, 상기 열값에 기초하여 상기 데이터값을 복수의 그룹으로 그룹화하고, 상기 종류값에 기초하여 상기 복수의 그룹 각각을 상기 그룹의 최대값 또는 상기 그룹의 제1 요소 중 하나로 압축하고, 압축된 값들 중 최대값 및 상태 레지스터에 저장된 값을 결정하고, 상기 상태 레지스터에 상기 최대값을 저장하고, 활성화 함수를 상기 최대값에 적용하고, 상기 활성화 함수는 항등 함수, 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나이며, 상기 종류값이 상위-N 모드를 나타낸다는 결정에 응답하여, 제3 로컬 레지스터에 저장된 제3 메모리 어드레스에 기초하여 데이터값의 어레이를 판독하고, 상기 어레이에서 상위-N 값 및 대응하는 위치를 결정하고, N은 1보다 큰 정수이며, 상기 제어값이 메모리 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 제4 로컬 레지스터에 저장된 제4 메모리 어드레스에서 상기 내부 메모리에 기입하고, 상기 제어값이 레지스터 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 상기 후처리 프로세서와 관련된 상태 레지스터에 기입하는 것을 더 제공할 수 있다.
실시예 81에서, 실시예 73의 주제는, 상기 제4 명령이 유형값, 모드값 및 크기값을 포함하는 출력 명령을 포함하고, 상기 출력 명령을 실행하기 위해 상기 출력 프로세서는 상기 출력 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 복수의 데이터값을 판독하고, 상기 크기값은 상기 복수의 데이터값의 수를 지정하고, 상기 출력 프로세서의 제2 로컬 레지스터와 제3 로컬 레지스터를 연결하여 제2 메모리 어드레스를 형성하고, 상기 제2 메모리 어드레스에 기초하여 상기 유형값에 의해 결정된 형식으로 상기 복수의 데이터값을 상기 프로세서와 관련된 메모리에 기입하는 것을 더 제공할 수 있다.
본 발명은 제한된 수의 실시형태에 관하여 설명되었지만, 이 기술 분야에 통상의 지식을 가진 자라면 이로부터 많은 수정 및 변형이 있을 수 있다는 것을 인식할 수 있을 것이다. 첨부된 청구 범위는 본 발명의 진정한 사상 및 범위 내에 있는 모든 수정 및 변형을 포함하는 것으로 의도된다.
설계는 창작에서 시뮬레이션, 제조에 이르기까지 다양한 단계를 거칠 수 있다. 설계를 나타내는 데이터는 여러 방식으로 설계를 나타낼 수 있다. 먼저, 시뮬레이션에 유용한 바와 같이, 하드웨어는 하드웨어 기술 언어 또는 다른 기능적 기술 언어를 사용하여 표현될 수 있다. 추가적으로, 논리 회로 및/또는 트랜지스터 게이트를 갖는 회로 레벨 모델은 설계 프로세스의 일부 단계에서 생성될 수 있다. 또한 대부분의 설계는 일부 단계에서 하드웨어 모델에서 다양한 디바이스의 물리적 배치를 나타내는 데이터 수준에 도달한다. 종래의 반도체 제조 기술이 사용되는 경우, 하드웨어 모델을 나타내는 데이터는 집적 회로를 생산하는데 사용되는 마스크를 위한 상이한 마스크 층에 다양한 특징부들이 존재하거나 또는 부재하는 것을 지정하는 데이터일 수 있다. 임의의 설계 표현에서, 데이터는 임의의 형태의 머신 판독 가능 매체에 저장될 수 있다. 디스크와 같은 메모리 또는 자기 또는 광학 저장 디바이스는 이러한 정보를 전송하기 위해 변조되거나 달리 생성된 광 또는 전기파를 통해 전송되는 정보를 저장하는 머신 판독 가능 매체일 수 있다. 코드 또는 설계를 지시하거나 전달하는 전기 반송파가 전송될 때, 전기 신호의 복사, 버퍼링 또는 재전송이 수행되는 한, 새로운 복사가 이루어진다. 따라서, 통신 제공자 또는 네트워크 제공자는, 본 발명의 실시형태의 기술을 구현하는, 적어도 일시적으로 반송파로 인코딩된 정보와 같은 항목을 유형적인 머신 판독 가능 매체 상에 저장할 수 있다.
본 명세서에서 사용되는 모듈은 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합을 지칭한다. 예로서, 모듈은 마이크로제어기에 의해 실행되도록 적응된 코드를 저장하기 위해 비-일시적인 매체와 관련된 마이크로제어기와 같은 하드웨어를 포함한다. 따라서, 일 실시형태에서, 모듈이라는 언급은 비-일시적인 매체 상에 유지될 코드를 인식 및/또는 실행하도록 구체적으로 구성된 하드웨어를 지칭한다. 또한, 다른 실시형태에서, 모듈의 사용은 미리 결정된 동작을 수행하기 위해 마이크로제어기에 의해 실행되도록 구체적으로 적응된 코드를 포함하는 비-일시적인 매체를 지칭한다. 그리고 추론될 수 있는 바와 같이, 또 다른 실시형태에서, (이 예에서) 모듈이라는 용어는 마이크로제어기와 비-일시적인 매체의 조합을 지칭할 수 있다. 종종 별도로 도시된 모듈 경계는 일반적으로 변하고 겹칠 수 있다. 예를 들어, 제1 모듈과 제2 모듈은 일부 독립적인 하드웨어, 소프트웨어 또는 펌웨어를 잠재적으로 보유하면서 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합을 공유할 수 있다. 일 실시형태에서, 논리 회로라는 용어의 사용은 트랜지스터, 레지스터와 같은 하드웨어, 또는 프로그래밍 가능 논리 디바이스와 같은 다른 하드웨어를 포함한다.
일 실시형태에서, "~하도록 구성된"이라는 어구의 사용은 지정된 또는 결정된 태스크를 수행하기 위해 장치, 하드웨어, 논리 또는 요소를 배열, 결합, 제조, 판매 제안, 수입 및/또는 설계하는 것을 의미한다. 이 예에서, 동작하지 않는 장치 또는 그 요소는 지정된 태스크를 수행하도록 설계, 결합 및/또는 상호 연결된 경우 상기 지정된 태스크를 수행하도록 여전히 '구성'된다. 순전히 예시적인 예로서, 논리 게이트는 동작 동안 0 또는 1을 제공할 수 있다. 그러나 클록에 인에이블 신호를 제공하도록 '구성된' 논리 게이트는 1 또는 0을 제공할 수 있는 모든 잠재적인 논리 게이트를 포함하는 것은 아니다. 대신, 논리 게이트는 동작 동안 1 또는 0 출력이 클록을 인에이블하는 방식으로 결합된 것이다. 다시 한번, '~하도록 구성된'이라는 용어의 사용은 동작을 필요로 하지 않고, 대신에 장치, 하드웨어 및/또는 요소의 잠재적 상태에 초점을 맞추고, 잠재적 상태에서 장치, 하드웨어 및/또는 요소는 장치, 하드웨어 및/또는 요소가 동작할 때 특정 태스크를 수행하도록 설계된다는 것이 주목된다.
또한, 일 실시형태에서 "~하도록", "~할 능력이 있는"및/또는 "~하도록 동작 가능한"이라는 어구의 사용은 지정된 방식으로 장치, 논리 회로, 하드웨어 및/또는 요소의 사용을 가능하게 하는 방식으로 설계된 일부 장치, 논리 회로, 하드웨어 및/또는 요소를 지칭한다. 상기한 바와 같이, 일 실시형태에서, '~하도록', '~할 능력이 있는', 또는 '~하도록 동작 가능한'이라는 어구의 사용은 장치, 논리 회로, 하드웨어 및/또는 요소의 잠재적 상태를 지칭하는 것으로, 여기서 장치, 논리 회로, 하드웨어 및/또는 요소는 동작하지 않고 지정된 방식으로 장치를 사용할 수 있도록 하는 방식으로 설계된다는 것이 주목된다.
본 명세서에서 사용된 값은 숫자, 상태, 논리 상태 또는 이진 논리 상태의 임의의 알려진 표현을 포함한다. 종종 논리 레벨, 논리 값 또는 논리 값의 사용은 1과 0이라고도 지칭되고, 단순히 2진 논리 상태를 나타낸다. 예를 들어, 1은 높은 논리 레벨을 나타내고 0은 낮은 논리 레벨을 나타낸다. 일 실시형태에서, 트랜지스터 또는 플래시 셀과 같은 저장 셀은 단일 논리 값 또는 다중 논리 값을 유지할 수 있다. 그러나 컴퓨터 시스템의 다른 값 표현이 사용되었다. 예를 들어, 10진수 10은 또한 910의 이진값 및 16진수 A로 표현될 수 있다. 따라서, 값은 컴퓨터 시스템에 유지될 수 있는 정보의 임의의 표현을 포함한다.
또한, 상태는 값 또는 값의 일부로 표현될 수 있다. 예로서, 논리 값과 같은 제1 값은 디폴트 또는 초기 상태를 나타낼 수 있는 반면, 논리 0과 같은 제2 값은 디폴트가 아닌 상태를 나타낼 수 있다. 또한, 일 실시형태에서, 리셋 및 설정이라는 용어는 각각 디폴트 및 업데이트된 값 또는 상태를 지칭한다. 예를 들어, 디폴트 값은 잠재적으로 높은 논리 값(예를 들어, 리셋)을 포함할 수 있는 반면, 업데이트된 값은 낮은 논리 값(예를 들어, 설정)을 포함할 수 있다. 임의의 수의 상태를 나타내기 위해 임의의 값의 조합이 이용될 수 있다는 것이 주목된다.
전술한 방법, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시형태는 처리 요소에 의해 실행 가능한 머신 액세스 가능, 머신 판독 가능, 컴퓨터 액세스 가능 또는 컴퓨터 판독 가능 매체에 저장된 명령 또는 코드를 통해 구현될 수 있다. 비-일시적인 머신 액세스 가능/판독 가능 매체는 컴퓨터 또는 전자 시스템과 같은 머신에 의해 판독 가능한 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 예를 들어, 비-일시적인 머신 액세스 가능 매체는 정보를 수신할 수 있는 비-일시적인 매체와 구별되는 정적 RAM(SRAM) 또는 동적 RAM(DRAM)과 같은 랜덤 액세스 메모리(RAM); ROM; 자기 또는 광학 저장 매체; 플래시 메모리 디바이스; 전기 저장 디바이스; 광학 저장 디바이스; 음향 저장 디바이스; 일시적인(전파된) 신호(예를 들어, 반송파, 적외선 신호, 디지털 신호)로부터 수신된 정보를 유지하기 위한 다른 형태의 저장 디바이스 등을 포함한다.
본 발명의 실시형태를 수행하기 위해 논리 회로를 프로그래밍하는 데 사용되는 명령은 DRAM, 캐시, 플래시 메모리, 또는 다른 저장 매체와 같은 시스템의 메모리 내에 저장될 수 있다. 또한, 명령은 네트워크를 통해 또는 다른 컴퓨터 판독 가능 매체를 통해 분배될 수 있다. 따라서, 머신 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함할 수 있지만, 플로피 디스켓, 광 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM) 및 광 자기 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거 가능 프로그래밍 가능 판독 전용 메모리(EPROM), 전기적으로 소거 가능 프로그래밍 가능 판독 전용 메모리(EEPROM), 자기 또는 광학 카드, 플래시 메모리, 또는 전기, 광학, 음향 또는 다른 형태의 전파 신호(예를 들어, 반송파, 적외선 신호, 디지털 신호 등)를 통해 인터넷으로 정보를 전송하는 데 사용되는 유형적인 머신 판독 가능 저장 매체를 포함할 수 있으나 이들로 제한되는 것은 아니다. 따라서, 컴퓨터 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 전자 명령 또는 정보를 저장 또는 전송하기에 적합한 임의의 유형의 유형적인 머신 판독 가능 매체를 포함한다.
본 명세서에서 "일 실시형태" 또는 "실시형태"라는 언급은 실시형태와 관련하여 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시형태에 포함되는 것을 의미한다. 따라서, 본 명세서의 여러 곳에서 "일 실시형태에서" 또는 "실시형태에서"라는 어구의 등장은 모두 동일한 실시형태를 지칭하는 것은 아니다. 또한, 특정 특징, 구조 또는 특성은 하나 이상의 실시형태에서 임의의 적절한 방식으로 결합될 수 있다.
전술한 명세서에서, 특정 예시적인 실시형태를 참조하여 상세한 설명이 제공되었다. 그러나, 첨부된 청구 범위에 개시된 본 발명의 넓은 사상 및 범위를 벗어나지 않으면서 다양한 수정 및 변경이 이루어질 수 있음이 명백하다. 따라서, 명세서 및 도면은 본 발명을 제한하려고 의도된 것이 아니라 본 발명을 예시하려고 의도된 것으로 고려되어야 한다. 또한, 전술한 실시형태 및 다른 예시적인 언어의 사용은 반드시 동일한 실시형태 또는 동일한 실시예를 지칭할 필요는 없으며, 다른 별개의 실시형태뿐만 아니라 동일할 수 있는 실시형태를 지칭할 수 있다.

Claims (38)

  1. 가속기 회로로서,
    프로세서와 관련된 메모리로부터 수신된 데이터를 저장하는 내부 메모리;
    제1 명령 아키텍쳐(ISA)에 따라 지정된 제1 명령을 포함하는 제1 태스크를 수행하기 위한 입력 프로세서를 포함하는 입력 회로 블록;
    제2 ISA에 따라 지정된 제2 명령을 포함하는 제2 태스크를 수행하기 위한 필터 프로세서를 포함하는 필터 회로 블록;
    제3 ISA에 따라 지정된 제3 명령을 포함하는 제3 태스크를 수행하기 위한 후처리 프로세서를 포함하는 후처리 회로 블록; 및
    제4 ISA에 따라 지정된 제4 명령을 포함하는 제4 태스크를 수행하기 위한 출력 프로세서를 포함하는 출력 회로 블록을 포함하되;
    상기 입력 프로세서, 상기 필터 프로세서, 상기 후필터 프로세서 또는 상기 출력 프로세서 중 적어도 2개는 대응하는 태스크를 동시에 수행하는, 가속기 회로.
  2. 제1항에 있어서,
    상기 입력 회로 블록은 제1 명령 메모리, 제1 데이터 메모리 및 제1 프로그램 카운터(PC)를 더 포함하고, 상기 제1 명령 메모리는 상기 제1 명령을 저장하고, 상기 제1 PC는 상기 제1 프로세서에 의해 실행될 현재 제1 명령의 어드레스를 저장하고, 상기 입력 프로세서는 상기 제1 태스크를 수행하기 위해 상기 제1 데이터 메모리에 저장된 제1 데이터를 사용하여 상기 제1 명령을 실행하고;
    상기 필터 회로 블록은 제2 명령 메모리, 제2 데이터 메모리 및 제2 PC를 더 포함하고, 상기 제2 명령 메모리는 상기 제2 명령을 저장하고, 상기 제2 PC는 상기 제2 프로세서에 의해 실행될 현재 제2 명령의 어드레스를 저장하고, 상기 필터 프로세서는 상기 제2 태스크를 수행하기 위해 상기 제2 데이터 메모리에 저장된 제2 데이터를 사용하여 상기 제2 명령을 실행하고;
    상기 후처리 회로 블록은 제3 명령 메모리, 제3 데이터 메모리, 제3 PC를 더 포함하고, 상기 제3 명령 메모리는 상기 제3 명령을 저장하고, 상기 제3 PC는 상기 제3 프로세서에 의해 실행될 현재 제3 명령의 어드레스를 저장하고, 상기 후처리 프로세서는 상기 제3 태스크를 수행하기 위해 상기 제3 데이터 메모리에 저장된 제3 데이터를 사용하여 상기 제3 명령을 실행하고;
    상기 출력 회로 블록은 제4 명령 메모리, 제4 데이터 메모리, 제4 PC를 더 포함하고, 상기 제4 명령 메모리는 상기 제4 명령을 저장하고, 상기 제4 PC는 상기 제4 프로세서에 의해 실행될 현재 제4 명령의 어드레스를 저장하고, 상기 출력 프로세서는 상기 제4 태스크를 수행하기 위해 상기 제4 데이터 메모리에 저장된 제4 데이터를 사용하여 상기 제4 명령을 실행하고;
    상기 입력 프로세서, 상기 필터 프로세서, 상기 후처리 프로세서 또는 상기 출력 프로세서 각각은 각각의 고유한 명령 세트를 갖게 설계된 축소 명령 세트 컴퓨터(RISC) 프로세서인, 가속기 회로.
  3. 제2항에 있어서,
    상기 제1 태스크, 상기 제2 태스크, 상기 제3 태스크 또는 상기 제4 태스크 중 적어도 하나의 태스크의 실행의 시작을 나타내는 제1 플래그 비트를 저장하는 복수의 범용 레지스터;
    복사 이벤트에 응답하여 상기 복수의 범용 레지스터에 복사될 내용을 저장하는 복수의 섀도우 레지스터; 및
    인터페이스 회로를 더 포함하되, 상기 인터페이스 회로는,
    상기 프로세서에 대한 복수의 인터럽트를 저장하는 제어 레지스터;
    상이한 종류의 에러의 발생을 나타내는 복수의 에러 플래그를 저장하는 에러 레지스터;
    상기 복수의 범용 레지스터에 복사될 상기 복수의 섀도우 레지스터의 내용을 선택하기 위한 마스크를 저장하는 다음 레지스터, 및
    상기 프로세서와 관련된 상기 메모리에 대한 제어를 저장하는 서비스 품질 레지스터를 포함하는, 가속기 회로.
  4. 제2항에 있어서, 상기 필터 회로 블록은,
    복수의 회로 스트라이프를 더 포함하되, 상기 복수의 회로 스트라이프 각각은,
    복수의 필터 회로; 및
    상기 복수의 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는, 가속기 회로.
  5. 제2항에 있어서, 상기 필터 회로 블록은,
    8개의 동일한 회로 스트라이프를 더 포함하되, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는,
    4개의 3×3 컨볼루션 신경망(CNN) 필터 회로; 및
    상기 4개의 3×3 CNN 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는, 가속기 회로.
  6. 제5항에 있어서, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는 상기 4개의 3×3 CNN 필터 회로의 공통 가중치 파라미터를 저장하기 위한 제1 복수의 레지스터를 공유하는 상기 4개의 3×3 CNN 필터 회로를 포함하는, 가속기 회로.
  7. 제5항에 있어서, 상기 4개의 3×3 CNN 필터 회로 중 하나는,
    가중치 파라미터를 저장하는 제1 복수의 레지스터;
    입력값을 저장하는 제2 복수의 레지스터;
    상기 가중치 파라미터 각각과 상기 입력값 각각 사이에 곱셈을 계산하기 위해 복수의 곱셈 회로를 포함하는 축소 트리(reduce tree); 및
    상기 3×3 CNN 필터 회로 중 다른 필터 회로로부터의 캐리-오버(carry-over) 결과와 상기 복수의 곱셈 회로의 결과를 가산하는 합산 회로를 포함하는, 가속기 회로.
  8. 제7항에 있어서, 상기 8개의 동일한 회로 스트라이프는 상기 4개의 3×3 CNN 필터 회로에 의해 생성된 4개의 결과를 각각 출력하고, 상기 필터 회로 블록은 4개의 가산 회로를 포함하고, 상기 4개의 가산 회로 각각은 상기 8개의 필터 회로로부터의 4개의 결과 각각을 합산하는, 가산기 회로.
  9. 제1항에 있어서, 상기 입력 프로세서, 상기 필터 프로세서, 상기 후처리 프로세서 및 상기 출력 프로세서는 이종 컴퓨팅 시스템을 형성하고, 상기 제1 태스크는 공통 ISA에 따라 지정된 제5 명령을 더 포함하고, 상기 제2 태스크는 상기 공통 ISA에 따라 지정된 제6 명령을 더 포함하고, 상기 제3 태스크는 상기 공통 ISA에 따라 지정된 제7 명령을 더 포함하고, 상기 제4 태스크는 상기 공통 ISA에 따라 지정된 제7 명령을 더 포함하는, 가속기 회로.
  10. 제1항에 있어서, 상기 내부 메모리는 복수의 메모리 슬라이스를 포함하고, 메모리 슬라이스 및 상기 메모리 슬라이스의 시작 위치에 대한 오프셋을 식별하기 위해 슬라이스 식별자에 의해 어드레싱 가능한, 가속기 회로.
  11. 제1항에 있어서, 상기 내부 메모리는 복수의 순차적으로 번호가 매겨진 비트 어레이를 포함하고, 짝수 번호가 매겨진 어레이와 후속 홀수 번호가 매겨진 어레이의 각 쌍은 대응하는 메모리 뱅크를 형성하고, 상기 내부 메모리는 메모리 뱅크를 식별하기 위한 메모리 뱅크 식별자 및 상기 메모리 뱅크 내의 라인을 식별하기 위한 라인 식별자에 의해 어드레싱 가능한, 가속기 회로.
  12. 제1항에 있어서, 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록은 실행 파이프 라인을 형성하고,
    상기 입력 회로 블록의 상기 입력 프로세서는 상기 프로세서와 관련된 상기 메모리로부터 판독하고, 상기 입력 회로 블록에 의해 생성된 제1 결과를 상기 내부 메모리에 기입하고, 상기 필터 프로세서는 상기 내부 메모리로부터 상기 제1 결과를 판독하고, 상기 상기 필터 회로 블록에 의해 생성된 제2 결과를 상기 내부 메모리에 기입하고, 상기 후처리 프로세서는 상기 내부 메모리로부터 상기 제2 결과를 판독하고, 상기 후처리 회로 블록에 의해 생성된 제3 결과를 상기 내부 메모리에 기입하고, 상기 출력 프로세서는 상기 내부 메모리로부터 상기 제3 결과를 판독하고, 상기 출력 회로 블록에 의해 생성된 제4 결과를 상기 프로세서와 관련된 상기 메모리에 기입하는, 가속기 회로.
  13. 제1항에 있어서, 상기 후처리 회로 블록은 압축 함수, 활성화 함수 또는 상위-N 함수 중 적어도 하나를 수행하는, 가속기 회로.
  14. 제13항에 있어서, 상기 압축 함수는 4 대 1, 3 대 1, 2 대 1, 또는 1 대 1의 압축 비율 중 하나의 비율을 갖고, 상기 압축 함수의 결과는 N개의 요소를 포함하는 입력 데이터의 제1 요소 또는 N개의 요소를 포함하는 상기 입력 데이터의 최대값 중 하나이고, N은 1보다 큰 정수인, 가속기 회로.
  15. 제13항에 있어서, 상기 활성화 함수는 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나인, 가속기 회로.
  16. 제13항에 있어서, 상기 상위-N 함수는 값의 어레이에서 N개의 가장 큰 값 및 대응하는 위치를 결정하는, 가속기 회로.
  17. 제2항에 있어서, 상기 입력 프로세서는,
    상기 프로세서와 관련된 상기 메모리로부터 데이터값을 판독하고, 상기 데이터값은 반-정밀도 부동 소수점, 부호 있는 바이트 또는 부호 없는 바이트 형식 중 하나이고;
    상기 데이터값을 상기 반-정밀도 부동 소수점 형식으로 변환하고; 그리고
    상기 내부 메모리에 상기 데이터값을 기입하는, 가속기 회로.
  18. 제2항에 있어서, 상기 제1 명령은 유형값(type value), 모드값 및 크기값을 포함하는 입력 명령을 포함하고, 상기 입력 명령을 실행하기 위해 상기 입력 프로세서는,
    상기 입력 프로세서의 제1 로컬 레지스터 및 제2 로컬 레지스터를 연결하여 제1 메모리 어드레스를 형성하고;
    상기 유형값에 의해 결정된 형식으로 데이터값을 검색하기 위해 상기 제1 메모리 어드레스에 기초하여 상기 프로세서와 관련된 상기 메모리를 판독하고, 상기 크기값은 상기 메모리로부터 검색된 상기 데이터값과 관련된 바이트 수를 결정하고; 그리고
    상기 모드값에 의해 결정된 모드에서 상기 데이터값을 상기 내부 메모리에 기입하는, 가속기 회로.
  19. 제18항에 있어서,
    상기 모드값이 제1 모드를 나타낸다는 결정에 응답하여, 상기 입력 프로세서는 제3 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여 상기 내부 메모리에 기입하고;
    상기 모드값이 제2 모드를 나타낸다는 결정에 응답하여, 상기 입력 프로세서는 상기 제3 로컬 레지스터에 저장된 오프셋으로 상기 복수의 회로 스트라이프 각각의 상기 슬라이스에 기입하는, 가속기 회로.
  20. 제18항에 있어서, 상기 유형값, 상기 모드값 및 상기 크기값은 즉시값 중 하나이거나 또는 상기 입력 명령의 타깃 레지스터에 저장된, 가속기 회로.
  21. 제4항에 있어서, 상기 제2 명령은 합산값 및 모드값을 포함하는 필터 명령을 포함하고, 상기 필터 명령을 실행하기 위해 상기 필터 프로세서는,
    상기 필터 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 데이터값을 판독하고;
    각각의 회로 스트라이프에 대해 복수의 필터 결과를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고;
    합산값에 기초하여, 각 회로 스트라이프로부터 대응하는 필터 결과의 합산값을 계산하고;
    상기 모드값에 기초하여, 상기 필터 회로 블록이 슬라이스 모드에 있는지 또는 전역 모드에 있는지 여부를 결정하고;
    상기 필터 회로 블록이 상기 슬라이스 모드에 있다는 결정에 응답하여, 상기 합산값을 제2 로컬 레지스터에 저장된 오프셋으로 각 슬라이스에 기입하고; 그리고
    상기 필터 회로 블록이 전역 모드에 있다는 결정에 응답하여, 상기 합산값을 상기 제2 로컬 레지스터에 저장된 메모리 어드레스에서 상기 내부 메모리에 기입하는, 가속기 회로.
  22. 제21항에 있어서, 상기 모드값 및 상기 합산값은 즉시값 중 하나이거나 상기 필터 명령의 타깃 레지스터에 저장된, 가속기 회로.
  23. 제2항에 있어서, 상기 제3 명령은 상기 제어 레지스터의 식별자, 열값, 행값 및 종류값을 포함하는 후처리 명령을 포함하고, 상기 후처리 명령을 실행하기 위해 상기 후처리 프로세서는,
    상기 종류값이 압축 모드를 나타낸다는 결정에 응답하여,
    제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여, 상기 내부 메모리로부터 데이터값의 수를 판독하고, 상기 열값은 상기 수를 지정하고;
    상기 열값에 기초하여, 상기 데이터값을 복수의 그룹으로 그룹화하고;
    상기 종류값에 기초하여, 상기 복수의 그룹 각각을 상기 그룹의 최대값 또는 상기 그룹의 제1 요소 중 하나로 압축하고;
    압축된 값들 중 최대값 및 상태 레지스터에 저장된 값을 결정하고;
    상기 최대값을 상기 상태 레지스터에 저장하고;
    활성화 함수를 상기 최대값에 적용하고, 상기 활성화 함수는 항등 함수, 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나이고;
    제2 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여, 상기 활성화 함수의 결과를 상기 내부 메모리에 기입하고;
    상기 종류값이 상위-N 모드를 나타낸다는 결정에 응답하여,
    제3 로컬 레지스터에 저장된 제3 메모리 어드레스에 기초하여, 데이터값의 어레이를 판독하고;
    상기 어레이에서 상위-N 값 및 대응하는 위치를 결정하고, N은 1보다 큰 정수이고;
    상기 제어값이 메모리 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 제4 로컬 레지스터에 저장된 제4 메모리 어드레스에서 상기 내부 메모리에 기입하고; 그리고
    상기 제어값이 레지스터 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 상기 후처리 프로세서와 관련된 상태 레지스터에 기입하는, 가속기 회로.
  24. 제23항에 있어서, 상기 제어 레지스터의 식별자, 상기 열값, 상기 행값 및 상기 종류값은 즉시값 중 하나이거나 상기 후처리 명령의 타깃 레지스터에 저장된, 가속기 회로.
  25. 제2항에 있어서, 상기 제4 명령은 유형값, 모드값 및 크기값을 포함하는 출력 명령을 포함하고, 상기 출력 명령을 실행하기 위해 상기 출력 프로세서는,
    상기 출력 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여 상기 내부 메모리로부터 복수의 데이터값을 판독하고, 상기 크기값은 상기 복수의 데이터값의 수를 지정하고;
    상기 출력 프로세서의 제2 로컬 레지스터 및 제3 로컬 레지스터를 연결하여 제2 메모리 어드레스를 형성하고; 그리고
    상기 제2 메모리 어드레스에 기초하여 상기 유형값에 의해 결정된 형식으로 상기 복수의 데이터값을 상기 프로세서와 관련된 상기 메모리에 기입하는, 가속기 회로.
  26. 제25항에 있어서, 상기 유형값, 상기 모드값 및 상기 크기값은 즉시값 중 하나이거나 상기 입력 명령의 타깃 레지스터에 저장된, 가속기 회로.
  27. 제1항에 있어서, 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록 각각은 별개의 RISC 하드웨어 프로세서를 포함하는, 가속기 회로.
  28. 제1항에 있어서, 상기 입력 회로 블록, 상기 필터 회로 블록, 상기 후처리 회로 블록 및 상기 출력 회로 블록 중 적어도 2개 내지 4개 미만은 공통 RISC 하드웨어 프로세서를 공유하는, 가속기 회로.
  29. 시스템으로서,
    메모리;
    데이터를 입력하기 위한 제1 태스크, 상기 데이터를 필터링하기 위한 제2 태스크, 상기 데이터를 후처리하기 위한 제3 태스크, 및 상기 데이터를 출력하기 위한 제4 태스크를 포함하는 신경망 애플리케이션을 실행하는 프로세서; 및
    상기 메모리 및 상기 프로세서에 통신 가능하게 결합된 가속기 회로를 포함하되, 상기 가속기 회로는,
    상기 메모리로부터 수신된 데이터를 저장하는 내부 메모리;
    제1 명령 아키텍쳐(ISA)에 따라 지정된 제1 명령을 포함하는 상기 제1 태스크를 수행하기 위한 입력 프로세서를 포함하는 입력 회로 블록;
    제2 ISA에 따라 지정된 제2 명령을 포함하는 상기 제2 태스크를 수행하기 위한 필터 프로세서를 포함하는 필터 회로 블록;
    제3 ISA에 따라 지정된 제3 명령을 포함하는 상기 제3 태스크를 수행하기 위한 후처리 프로세서를 포함하는 후처리 회로 블록; 및
    제4 ISA에 따라 지정된 제4 명령을 포함하는 상기 제4 태스크를 수행하기 위한 출력 프로세서를 포함하는 출력 회로 블록을 포함하고,
    상기 입력 프로세서, 상기 필터 프로세서, 상기 후필터 프로세서 또는 상기 출력 프로세서 중 적어도 2개는 대응하는 태스크를 동시에 수행하는, 시스템.
  30. 제29항에 있어서, 상기 가속기 회로는,
    상기 입력 회로 블록은 제1 명령 메모리, 제1 데이터 메모리 및 제1 프로그램 카운터(PC)를 더 포함하고, 상기 제1 명령 메모리는 상기 제1 명령을 저장하고, 상기 제1 PC는 상기 제1 프로세서에 의해 실행될 현재 제1 명령의 어드레스를 저장하고, 상기 입력 프로세서는 상기 제1 태스크를 수행하기 위해 상기 제1 데이터 메모리에 저장된 제1 데이터를 사용하여 상기 제1 명령을 실행하고;
    상기 필터 회로 블록은 제2 명령 메모리, 제2 데이터 메모리 및 제2 PC를 더 포함하고, 상기 제2 명령 메모리는 상기 제2 명령을 저장하고, 상기 제2 PC는 상기 제2 프로세서에 의해 실행될 현재 제2 명령의 어드레스를 저장하고, 상기 필터 프로세서는 상기 제2 태스크를 수행하기 위해 상기 제2 데이터 메모리에 저장된 제2 데이터를 사용하여 상기 제2 명령을 실행하고;
    상기 후처리 회로 블록은 제3 명령 메모리, 제3 데이터 메모리, 제3 PC를 더 포함하고, 상기 제3 명령 메모리는 상기 제3 명령을 저장하고, 상기 제3 PC는 상기 제3 프로세서에 의해 실행될 현재 제3 명령의 어드레스를 저장하고, 상기 후처리 프로세서는 상기 제3 태스크를 수행하기 위해 상기 제3 데이터 메모리에 저장된 제3 데이터를 사용하여 상기 제3 명령을 실행하고; 그리고
    상기 출력 회로 블록은 제4 명령 메모리, 제4 데이터 메모리, 제4 PC를 더 포함하고, 상기 제4 명령 메모리는 상기 제4 명령을 저장하고, 상기 제4 PC는 상기 제4 프로세서에 의해 실행될 현재 제4 명령의 어드레스를 저장하고, 상기 출력 프로세서는 상기 제4 태스크를 수행하기 위해 상기 제4 데이터 메모리에 저장된 제4 데이터를 사용하여 상기 제4 명령을 실행하고;
    상기 입력 프로세서, 상기 필터 프로세서, 상기 후처리 프로세서 또는 상기 출력 프로세서 각각은 각각의 고유한 명령 세트를 갖게 설계된 축소 명령 세트 컴퓨터(RISC) 프로세서인, 시스템.
  31. 제30항에 있어서, 상기 가속기 회로는,
    상기 제1 태스크, 상기 제2 태스크, 상기 제3 태스크 또는 상기 제4 태스크 중 적어도 하나의 태스크의 실행의 시작을 나타내는 제1 플래그 비트를 저장하는 복수의 범용 레지스터;
    복사 이벤트에 응답하여 상기 복수의 범용 레지스터에 복사될 내용을 저장하는 복수의 섀도우 레지스터; 및
    인터페이스 회로를 더 포함하되, 상기 인터페이스 회로는,
    상기 프로세서에 대한 복수의 인터럽트를 저장하는 제어 레지스터;
    상이한 종류의 에러의 발생을 나타내는 복수의 에러 플래그를 저장하는 에러 레지스터;
    상기 복수의 범용 레지스터에 복사될 상기 복수의 섀도우 레지스터의 내용을 선택하기 위한 마스크를 저장하는 다음 레지스터, 및
    상기 프로세서와 관련된 상기 메모리에 대한 제어를 저장하는 서비스 품질 레지스터를 포함하는, 시스템.
  32. 제30항에 있어서, 상기 가속기 회로는,
    복수의 회로 스트라이프를 더 포함하되, 상기 복수의 회로 스트라이프 각각은,
    복수의 필터 회로; 및
    상기 복수의 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는, 시스템.
  33. 제30항에 있어서, 상기 필터 회로 블록은,
    8개의 동일한 회로 스트라이프를 더 포함하되, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는,
    4개의 3×3 컨볼루션 신경망(CNN) 필터 회로; 및
    상기 4개의 3×3 CNN 필터 회로에 할당된 상기 내부 메모리의 슬라이스를 포함하는, 시스템.
  34. 제33항에 있어서, 상기 8개의 동일한 회로 스트라이프의 회로 스트라이프는 상기 4개의 3×3 CNN 필터 회로의 공통 가중치 파라미터를 저장하기 위한 제1 복수의 레지스터를 공유하는 상기 4개의 3×3 CNN 필터 회로를 포함하는, 시스템.
  35. 제27항에 있어서, 상기 제1 명령은 유형값, 모드값 및 크기값을 포함하는 입력 명령을 포함하고, 상기 입력 명령을 실행하기 위해 상기 입력 프로세서는,
    상기 입력 프로세서의 제1 로컬 레지스터 및 제2 로컬 레지스터를 연결하여 제1 메모리 어드레스를 형성하고;
    상기 유형값에 의해 결정된 형식으로 데이터값을 검색하기 위해 상기 프로세서와 관련된 상기 메모리를 상기 제1 메모리 어드레스에 기초하여 판독하고, 상기 크기값은 상기 메모리로부터 검색된 상기 데이터값의 바이트 수를 결정하고; 그리고
    상기 모드값에 의해 결정된 모드에서 상기 내부 메모리에 기입하는, 시스템.
  36. 제29항에 있어서, 상기 제2 명령은 합산값 및 모드값을 포함하는 입력 명령을 포함하고, 상기 필터 명령을 실행하기 위해 상기 필터 프로세서는,
    상기 필터 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여, 데이터값을 판독하고;
    각 회로 스트라이프에 대해,
    복수의 필터 결과를 생성하기 위해 상기 회로 스트라이프의 상기 복수의 필터 회로와 관련된 가중치 레지스터 및 입력 레지스터에 상기 데이터값을 로딩하고;
    상기 합산값에 기초하여, 각 회로 스트라이프로부터 대응하는 필터 결과의 합산값을 계산하고;
    상기 모드값에 기초하여, 상기 필터 회로 블록이 슬라이스 모드에 있는지 또는 전역 모드에 있는지 여부를 결정하고; 그리고
    상기 필터 회로 블록이 상기 슬라이스 모드에 있다는 결정에 응답하여,
    상기 합산값을 제2 로컬 레지스터에 저장된 오프셋으로 각 슬라이스에 기입하고;
    상기 필터 회로 블록이 전역 모드에 있다는 결정에 응답하여,
    상기 합산값을 상기 제2 로컬 레지스터에 저장된 메모리 어드레스에서 상기 내부 메모리에 기입하는, 시스템.
  37. 제29항에 있어서, 상기 제3 명령은 상기 제어 레지스터의 식별자, 열값, 행값 및 종류값을 포함하는 후처리 명령을 포함하고, 상기 후처리 명령을 실행하기 위해 상기 후처리 프로세서는,
    상기 종류값이 압축 모드를 나타낸다는 결정에 응답하여,
    제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여, 상기 내부 메모리로부터 데이터값의 수를 판독하고, 상기 열값은 상기 수를 지정하고;
    상기 열값에 기초하여, 상기 데이터값을 복수의 그룹으로 그룹화하고;
    상기 종류값에 기초하여, 상기 복수의 그룹 각각을 상기 그룹의 최대값 또는 상기 그룹의 제1 요소 중 하나로 압축하고;
    상기 압축된 값들 중 최대값 및 상태 레지스터에 저장된 값을 결정하고;
    상기 최대값을 상기 상태 레지스터에 저장하고;
    활성화 함수를 상기 최대값에 적용하고, 상기 활성화 함수는 항등 함수, 계단 함수, 시그모이드 함수 또는 쌍곡선 탄젠트 함수 중 하나이고; 그리고
    제2 로컬 레지스터에 저장된 제2 메모리 어드레스에 기초하여, 상기 활성화 함수의 결과를 상기 내부 메모리에 기입하고; 그리고
    상기 종류값이 상위-N 모드를 나타낸다는 결정에 응답하여,
    제3 로컬 레지스터에 저장된 제3 메모리 어드레스에 기초하여, 데이터값의 어레이를 판독하고;
    상기 어레이에서 상위-N 값 및 대응하는 위치를 결정하고, N은 1보다 큰 정수이고;
    상기 제어값이 메모리 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 제4 로컬 레지스터에 저장된 제4 메모리 어드레스에서 상기 내부 메모리에 기입하고; 그리고
    상기 제어값이 레지스터 기입을 나타낸다는 결정에 응답하여, 상기 상위-N 값 및 대응하는 위치를 상기 후처리 프로세서와 관련된 상태 레지스터에 기입하는, 시스템.
  38. 제29항에 있어서, 상기 제4 명령은 유형값, 모드값 및 크기값을 포함하는 출력 명령을 포함하고, 상기 출력 명령을 실행하기 위해 상기 출력 프로세서는,
    상기 출력 프로세서의 제1 로컬 레지스터에 저장된 제1 메모리 어드레스에 기초하여, 상기 내부 메모리로부터 복수의 데이터값을 판독하고, 상기 크기값은 상기 복수의 데이터값의 수를 지정하고;
    상기 출력 프로세서의 제2 로컬 레지스터 및 제3 로컬 레지스터를 연결하여 제2 메모리 어드레스를 형성하고; 그리고
    상기 제2 메모리 어드레스에 기초하여, 상기 유형값에 의해 결정된 형식으로 상기 복수의 데이터값을 상기 프로세서와 관련된 상기 메모리에 기입하는, 시스템.
KR1020207019053A 2017-12-04 2018-12-03 신경망 가속기의 시스템 및 아키텍쳐 KR20200100672A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762594106P 2017-12-04 2017-12-04
US62/594,106 2017-12-04
PCT/US2018/063648 WO2019112959A1 (en) 2017-12-04 2018-12-03 System and architecture of neural network accelerator

Publications (1)

Publication Number Publication Date
KR20200100672A true KR20200100672A (ko) 2020-08-26

Family

ID=66751154

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207019053A KR20200100672A (ko) 2017-12-04 2018-12-03 신경망 가속기의 시스템 및 아키텍쳐

Country Status (5)

Country Link
US (4) US11144815B2 (ko)
EP (1) EP3721340A4 (ko)
KR (1) KR20200100672A (ko)
CN (1) CN111656367A (ko)
WO (1) WO2019112959A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230137605A (ko) 2022-03-22 2023-10-05 사회복지법인 삼성생명공익재단 동맥 및 정맥을 기준으로 안저 영상을 표준화하는 방법 및 영상처리장치

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678244B2 (en) 2017-03-23 2020-06-09 Tesla, Inc. Data synthesis for autonomous control systems
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11163707B2 (en) * 2018-04-23 2021-11-02 International Business Machines Corporation Virtualization in hierarchical cortical emulation frameworks
US11215999B2 (en) 2018-06-20 2022-01-04 Tesla, Inc. Data pipeline and deep learning system for autonomous driving
US11361457B2 (en) 2018-07-20 2022-06-14 Tesla, Inc. Annotation cross-labeling for autonomous control systems
US11636333B2 (en) 2018-07-26 2023-04-25 Tesla, Inc. Optimizing neural network structures for embedded systems
US11562231B2 (en) 2018-09-03 2023-01-24 Tesla, Inc. Neural networks for embedded devices
SG11202103493QA (en) 2018-10-11 2021-05-28 Tesla Inc Systems and methods for training machine models with augmented data
US11196678B2 (en) 2018-10-25 2021-12-07 Tesla, Inc. QOS manager for system on a chip communications
US11816585B2 (en) 2018-12-03 2023-11-14 Tesla, Inc. Machine learning models operating at different frequencies for autonomous vehicles
US11537811B2 (en) 2018-12-04 2022-12-27 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
US11610117B2 (en) 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
US10997461B2 (en) 2019-02-01 2021-05-04 Tesla, Inc. Generating ground truth for machine learning from time series elements
US11150664B2 (en) 2019-02-01 2021-10-19 Tesla, Inc. Predicting three-dimensional features for autonomous driving
US11567514B2 (en) 2019-02-11 2023-01-31 Tesla, Inc. Autonomous and user controlled vehicle summon to a target
US10956755B2 (en) 2019-02-19 2021-03-23 Tesla, Inc. Estimating object properties using visual image data
KR20220036950A (ko) * 2019-07-03 2022-03-23 후아시아 제너럴 프로세서 테크놀러지스 인크. 순수 함수 신경망 가속기 시스템 및 아키텍처
US11748626B2 (en) * 2019-08-12 2023-09-05 Micron Technology, Inc. Storage devices with neural network accelerators for automotive predictive maintenance
CN114144794A (zh) * 2019-09-16 2022-03-04 三星电子株式会社 电子装置及用于控制电子装置的方法
US11500811B2 (en) * 2020-06-12 2022-11-15 Alibaba Group Holding Limited Apparatuses and methods for map reduce
CN112099850A (zh) * 2020-09-10 2020-12-18 济南浪潮高新科技投资发展有限公司 一种多核Hourglass网络加速方法
CN112860320A (zh) * 2021-02-09 2021-05-28 山东英信计算机技术有限公司 基于risc-v指令集进行数据处理的方法、***、设备及介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717947A (en) 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US6954758B1 (en) * 2000-06-30 2005-10-11 Ncr Corporation Building predictive models within interactive business analysis processes
US20030154347A1 (en) * 2002-02-12 2003-08-14 Wei Ma Methods and apparatus for reducing processor power consumption
DE102007038545A1 (de) 2007-08-16 2009-02-19 Robert Bosch Gmbh Programmierbarer Filterprozessor
US8804394B2 (en) * 2012-01-11 2014-08-12 Rambus Inc. Stacked memory with redundancy
US9479173B1 (en) 2012-01-27 2016-10-25 Altera Corporation Transition accelerator circuitry
WO2014130005A1 (en) * 2013-02-19 2014-08-28 Empire Technology Development Llc Testing and repair of a hardware accelerator image in a programmable logic circuit
US10248675B2 (en) * 2013-10-16 2019-04-02 University Of Tennessee Research Foundation Method and apparatus for providing real-time monitoring of an artifical neural network
EP3149600A4 (en) 2014-05-29 2017-12-20 Altera Corporation An accelerator architecture on a programmable platform
CN107077642B (zh) 2014-08-22 2021-04-06 D-波***公司 可用于量子计算的用于求解问题的***和方法
US10325202B2 (en) * 2015-04-28 2019-06-18 Qualcomm Incorporated Incorporating top-down information in deep neural networks via the bias term
DE102015111015A1 (de) 2015-07-08 2017-01-12 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Verfahren und Vorrichtung zum Lokalisieren eines Batteriemodules unter mehreren untereinander elektrisch verbundenen Batteriemodulen einer Traktionsbatterie
US11244225B2 (en) 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
US10353861B2 (en) * 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Mechanism for communication between architectural program running on processor and non-architectural program running on execution unit of the processor regarding shared resource
US10360494B2 (en) * 2016-11-30 2019-07-23 Altumview Systems Inc. Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230137605A (ko) 2022-03-22 2023-10-05 사회복지법인 삼성생명공익재단 동맥 및 정맥을 기준으로 안저 영상을 표준화하는 방법 및 영상처리장치

Also Published As

Publication number Publication date
US20200394495A1 (en) 2020-12-17
EP3721340A1 (en) 2020-10-14
US20220108148A1 (en) 2022-04-07
US20210319283A1 (en) 2021-10-14
CN111656367A (zh) 2020-09-11
US11144815B2 (en) 2021-10-12
EP3721340A4 (en) 2021-09-08
WO2019112959A1 (en) 2019-06-13
US20210319284A1 (en) 2021-10-14

Similar Documents

Publication Publication Date Title
KR20200100672A (ko) 신경망 가속기의 시스템 및 아키텍쳐
US11907830B2 (en) Neural network architecture using control logic determining convolution operation sequence
CN110689126B (zh) 一种用于执行神经网络运算的装置
US20190065199A1 (en) Saving and restoring non-contiguous blocks of preserved registers
US11188330B2 (en) Vector multiply-add instruction
KR102471606B1 (ko) 내장형 라운딩 규칙을 갖는 부동 소수점 명령어 포맷
US20210216318A1 (en) Vector Processor Architectures
CN113050990A (zh) 用于矩阵操作加速器的指令的装置、方法和***
CN113139648B (zh) 执行神经网络模型的pim架构的数据布局优化
GB2568102A (en) Exploiting sparsity in a neural network
TWI754310B (zh) 純函數語言神經網路加速器系統及電路
FR3091937A1 (fr) Instruction de double chargement
WO2019055738A1 (en) MEMORY ACCESS NOT ALIGNED
CN112906877A (zh) 用于执行神经网络模型的存储器架构中的数据布局有意识处理
CN114968356A (zh) 一种数据处理的方法、装置、处理器和计算设备
CN118296084A (en) Data processing apparatus, instruction synchronization method, electronic apparatus, and storage medium

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application