KR20230075349A - 반도체 장치 - Google Patents

반도체 장치 Download PDF

Info

Publication number
KR20230075349A
KR20230075349A KR1020220147684A KR20220147684A KR20230075349A KR 20230075349 A KR20230075349 A KR 20230075349A KR 1020220147684 A KR1020220147684 A KR 1020220147684A KR 20220147684 A KR20220147684 A KR 20220147684A KR 20230075349 A KR20230075349 A KR 20230075349A
Authority
KR
South Korea
Prior art keywords
buffer
output data
shift register
data
neural network
Prior art date
Application number
KR1020220147684A
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 KR20230075349A publication Critical patent/KR20230075349A/ko

Links

Images

Classifications

    • 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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

뉴럴 네트워크의 처리에 있어서 양자화 오차를 저감할 수 있는 반도체 장치를 제공한다.
일 실시 형태의 반도체 장치는, 뉴럴 네트워크의 처리를 실행하는 것이다. 제1 시프트 레지스터는, 제1 버퍼로부터 순차적으로 입력된 복수의 출력 데이터를 비트 시프트에 의해 양자화함으로써, 복수의 양자화 입력 데이터를 순차적으로 생성한다. 적화 연산기는, 복수의 파라미터와, 제1 시프트 레지스터로부터의 복수의 양자화 입력 데이터를 적화 연산함으로써 연산 데이터를 생성한다. 제2 시프트 레지스터는, 적화 연산기로부터의 연산 데이터를 비트 시프트에 의해 역양자화함으로써 출력 데이터를 생성하고, 당해 출력 데이터를 제1 버퍼에 저장한다.

Description

반도체 장치{SEMICONDUCTOR DEVICE}
본 발명은, 반도체 장치에 관한 것이며, 예를 들어 뉴럴 네트워크의 처리를 실행하는 반도체 장치에 관한 것이다.
특허문헌 1(일본 특허 공개 제2019-40403호 공보)에는, CNN(Convolutional Neural Network)에 있어서의 컨볼루션 연산의 연산량을 저감하기 위해, 통합 계수 테이블을 사용하여 연산을 행하는 컨볼루션 연산 처리 회로를 갖는 화상 인식 장치가 기술된다. 통합 계수 테이블은, N×N의 데이터를 유지하고, N×N의 데이터의 각각은, 계수 및 채널 번호로 구성된다. 컨볼루션 연산 처리 회로는, 입력 화상과 계수의 N×N의 곱 연산을 병렬로 실행하는 곱 연산 회로와, 당해 곱 연산 결과에 대하여 채널 번호마다의 누적 가산 연산을 행하고, 그 가산 연산 결과를 채널 번호마다의 출력 레지스터에 저장하는 채널 선택 회로를 갖는다.
일본 특허 공개 제2019-40403호 공보
CNN 등의 뉴럴 네트워크에서는, 학습에 의해, 예를 들어 32비트 등의 부동 소수점수의 파라미터, 구체적으로는, 가중치 파라미터 및 바이어스 파라미터가 얻어진다. 단, 추론 시에, 부동 소수점수의 파라미터를 사용하여 적화 연산을 행하면, 적화 연산기(MAC(Multiply ACcumulate operation) 회로라 칭함)의 회로 면적, 처리 부하, 소비 전력, 실행 시간은, 증가될 수 있다. 또한, 파라미터 및 연산 결과의 일시 버퍼로부터의 리드 또는 라이트에 수반하여, 필요로 되는 메모리 용량 및 메모리 대역폭은 증가되고, 소비 전력도 증가될 수 있다.
그래서, 근년에는, 입력 데이터나, 32비트 등의 부동 소수점수의 파라미터를, 8비트 이하의 정수로 양자화한 후에, 추론을 행하는 방식이 주목받고 있다. 이 경우, MAC 회로는 적은 비트수로의 정수 연산을 행하면 되기 때문에, MAC 회로의 회로 면적, 처리 부하, 소비 전력, 실행 시간을 저감시키는 것이 가능해진다. 단, 양자화를 사용하는 경우, 양자화의 입도에 따라 양자화 오차가 변화되고, 그것에 따라서, 추론의 정밀도도 변화될 수 있다. 이 때문에, 양자화 오차를 저감하기 위한 효율적인 구조가 요구된다. 또한, 보다 적은 하드웨어의 리소스와 시간으로 추론을 행하게 하기 위해서는, 메모리 대역폭을 저감시킬 것이 요구된다.
그 밖의 과제와 신규 특징은, 본 명세서의 기재 및 첨부 도면으로부터 명백하게 될 것이다.
그래서, 일 실시 형태의 반도체 장치는, 뉴럴 네트워크의 처리를 실행하고, 제1 버퍼와, 제1 시프트 레지스터와, 적화 연산기와, 제2 시프트 레지스터를 구비한다. 제1 버퍼는, 출력 데이터를 유지한다. 제1 시프트 레지스터는, 제1 버퍼로부터 순차적으로 입력된 복수의 출력 데이터를 비트 시프트에 의해 양자화함으로써, 복수의 양자화 입력 데이터를 순차적으로 생성한다. 적화 연산기는, 복수의 파라미터와, 제1 시프트 레지스터로부터의 복수의 양자화 입력 데이터를 적화 연산함으로써 연산 데이터를 생성한다. 제2 시프트 레지스터는, 적화 연산기로부터의 연산 데이터를 비트 시프트에 의해 역양자화함으로써 출력 데이터를 생성하고, 당해 출력 데이터를 제1 버퍼에 저장한다.
일 실시 형태의 반도체 장치를 사용함으로써, 뉴럴 네트워크에 있어서의 양자화 오차를 효율적으로 저감하기 위한 구조를 제공할 수 있다.
도 1은 실시 형태 1에 의한 반도체 장치에 있어서, 주요부의 구성예를 도시하는 개략도이다.
도 2는 도 1에 있어서의 뉴럴 네트워크 엔진 주위의 상세한 구성예를 도시하는 회로 블록도이다.
도 3은 도 2에 도시한 뉴럴 네트워크 엔진에 의해 처리되는 뉴럴 네트워크의 구성예를 도시하는 개략도이다.
도 4는 실시 형태 2에 의한 반도체 장치에 있어서, 뉴럴 네트워크 엔진 주위의 상세한 구성예를 도시하는 회로 블록도이다.
도 5는 도 4에 있어서의 버퍼 컨트롤러의 동작예를 설명하는 모식도이다.
도 6은 실시 형태 3에 의한 반도체 장치에 있어서, 주요부의 구성예를 도시하는 개략도이다.
도 7은 도 6에 있어서의 뉴럴 네트워크 엔진 주위의 상세한 구성예를 도시하는 회로 블록도이다.
도 8은 실시 형태 4에 의한 반도체 장치에 있어서, 뉴럴 네트워크 엔진 주위의 상세한 구성예를 도시하는 회로 블록도이다.
이하의 실시 형태에 있어서는 편의상 그 필요가 있을 때는, 복수의 섹션 또는 실시 형태로 분할하여 설명하지만, 특별히 명시한 경우를 제외하고, 그것들은 서로 무관계한 것은 아니고, 한쪽은 다른 쪽의 일부 또는 전부의 변형예, 상세, 보충 설명 등의 관계에 있다. 또한, 이하의 실시 형태에 있어서, 요소의 수 등(개수, 수치, 양, 범위 등을 포함함)에 언급하는 경우, 특별히 명시한 경우 및 원리적으로 명백하게 특정 수로 한정되는 경우 등을 제외하고, 그 특정 수에 한정되는 것은 아니고, 특정 수 이상이어도 이하여도 된다. 또한, 이하의 실시 형태에 있어서, 그 구성 요소(요소 스텝 등도 포함함)는, 특별히 명시한 경우 및 원리적으로 명백하게 필수라고 생각되는 경우 등을 제외하고, 반드시 필수의 것은 아닌 것은 물론이다. 마찬가지로, 이하의 실시 형태에 있어서, 구성 요소 등의 형상, 위치 관계 등에 언급할 때는, 특별히 명시한 경우 및 원리적으로 명백하게 그렇지 않다고 생각되는 경우 등을 제외하고, 실질적으로 그 형상 등에 근사 또는 유사한 것 등을 포함하는 것으로 한다. 이것은, 상기 수치 및 범위에 대해서도 마찬가지이다.
이하, 실시 형태를 도면에 기초하여 상세하게 설명한다. 또한, 실시 형태를 설명하기 위한 전체 도면에 있어서, 동일한 기능을 갖는 부재에는 동일한 부호를 붙이고, 그 반복 설명은 생략한다. 또한, 이하의 실시 형태에서는, 특별히 필요한 때 이외에는 동일 또는 마찬가지의 부분의 설명을 원칙적으로 반복하지 않는다.
(실시 형태 1)
<반도체 장치의 개략>
도 1은 실시 형태 1에 의한 반도체 장치에 있어서, 주요부의 구성예를 도시하는 개략도이다. 도 1에 도시한 반도체 장치(10)는, 예를 들어 하나의 반도체 칩으로 구성되는 SoC(System on Chip) 등이다. 당해 반도체 장치(10)는, 대표적으로는, 차량의 ECU(Electronic Control Unit) 등에 탑재되고, ADAS(Advanced Driver Assistance System)의 기능을 제공한다.
도 1에 도시한 반도체 장치(10)는, 뉴럴 네트워크 엔진(15)과, CPU(Central Processing Unit) 등의 프로세서(17)와, 단수 또는 복수의 메모리 MEM1, MEM2와, 시스템 버스(16)를 갖는다. 뉴럴 네트워크 엔진(15)은, CNN을 대표로 하는 뉴럴 네트워크의 처리를 실행한다. 메모리 MEM1은 DRAM(Dynamic Random Access Memory) 등이며, 메모리 MEM2는 캐시용의 SRAM(Static Random Access Memory) 등이다. 시스템 버스(16)는, 뉴럴 네트워크 엔진(15), 메모리 MEM1, MEM2 및 프로세서(17)를 서로 접속한다.
메모리 MEM1은, 예를 들어 화소값으로 이루어지는 복수의 데이터 DT와, 복수의 파라미터 PR을 유지한다. 파라미터 PR에는, 가중치 파라미터 WP와, 바이어스 파라미터 BP가 포함된다. 메모리 MEM2는, 뉴럴 네트워크 엔진(15)의 고속 캐시 메모리로서 사용된다. 예를 들어, 메모리 MEM1 내의 복수의 데이터 DT는, 미리 메모리 MEM2에 카피된 후, 뉴럴 네트워크 엔진(15)에서 사용된다.
뉴럴 네트워크 엔진(15)은, 복수의 DMA(Direct Memory Access) 컨트롤러 DMAC1, DMAC2와, MAC 유닛(20)과, 버퍼 BUFi를 구비한다. MAC 유닛(20)은, 복수의 MAC 회로(21), 즉 복수의 적화 연산기를 구비한다. DMA 컨트롤러 DMAC1은, 예를 들어 메모리 MEM1과, MAC 유닛(20) 내의 복수의 MAC 회로(21) 사이의 시스템 버스(16)를 통한 데이터 전송을 제어한다. DMA 컨트롤러 DMAC2는, 메모리 MEM2와, MAC 유닛(20) 내의 복수의 MAC 회로(21) 사이의 데이터 전송을 제어한다.
예를 들어, DMA 컨트롤러 DMAC1은, 메모리 MEM1로부터 복수의 가중치 파라미터 WP를 순차적으로 읽어낸다. 한편, DMA 컨트롤러 DMAC2는, 메모리 MEM2로부터, 미리 카피된 복수의 데이터 DT를 순차적으로 읽어낸다. MAC 유닛(20) 내의 복수의 MAC 회로(21)의 각각은, DMA 컨트롤러 DMAC1로부터의 복수의 가중치 파라미터 WP와, DMA 컨트롤러 DMAC2로부터의 복수의 데이터 DT를 적화 연산한다. 또한, 상세는 후술하지만, 복수의 MAC 회로(21)의 각각은, 적화 연산 결과를, 적절히, 버퍼 BUFi에 저장한다.
<뉴럴 네트워크 엔진의 상세>
도 2는 도 1에 있어서의 뉴럴 네트워크 엔진 주위의 상세한 구성예를 도시하는 회로 블록도이다. 도 2에 도시한 뉴럴 네트워크 엔진(15)은, 도 1에서 설명한 바와 같이, MAC 유닛(20)과, 버퍼 BUFi와, 2개의 DMA 컨트롤러 DMAC1, DMAC2를 구비한다. 도 2에 있어서의 MAC 유닛(20)에서는, 도 1에서 설명한 복수의 MAC 회로(21) 중 1개의 MAC 회로(21)를 대표로 하여, 당해 MAC 회로(21) 주위의 상세한 구성예가 도시된다. MAC 유닛(20)은, MAC 회로(21)에 더하여, 멀티플렉서 MUX1과, 전단 시프트 레지스터 SREG1과, 후단 시프트 레지스터 SREG2와, 디멀티플렉서 DMUX1을 구비한다.
버퍼 BUFi는, 예를 들어 32비트폭×N개(N은 2 이상의 정수)의 플립플롭으로 구성된다. 버퍼 BUFi의 입력측에는 디멀티플렉서 DMUX2가 마련되고, 버퍼 BUFi의 출력측에는 멀티플렉서 MUX2가 마련된다. 버퍼 BUFi는, 후단 시프트 레지스터 SREG2로부터 2개의 디멀티플렉서 DMUX1, DMUX2를 통해 출력되는 출력 데이터 DTo를 유지한다. 당해 출력 데이터 DTo의 비트폭은, 예를 들어 32비트이다.
디멀티플렉서 DMUX1은, 후단 시프트 레지스터 SREG2로부터의 출력 데이터 DTo를, DMA 컨트롤러 DMAC2를 통해 메모리 MEM2에 저장할지, 디멀티플렉서 DMUX2를 통해 버퍼 BUFi에 저장할지를 선택한다. 디멀티플렉서 DMUX1은, 버퍼 BUFi가 선택된 경우에는, 32비트폭의 출력 데이터 DTo를 출력하고, 메모리 MEM2가 선택된 경우에는, 예를 들어 32비트 중의 하위 8비트 등의 출력 데이터 DTo를 출력한다. 이때, 출력 데이터 DTo에 있어서의 나머지의 24비트는, 후술하는 전단 시프트 레지스터 SREG1 및 후단 시프트 레지스터 SREG2를 사용한 양자화/역양자화에 의해, 제로가 되도록 제어된다.
디멀티플렉서 DMUX2는, 디멀티플렉서 DMUX1로부터의 32비트폭의 출력 데이터 DTo를, 32비트폭×N개의 버퍼 BUFi 내의 어느 위치에 저장할지를 선택한다. 보다 상세하게는, 버퍼 BUFi는, 도 1에 도시한 바와 같이, 복수의 MAC 회로(21)에 대하여 공통으로 마련되고, 복수의 MAC 회로(21)로부터의 출력 데이터 DTo를, 디멀티플렉서 DMUX2에 의해 선택된 위치에 저장한다.
전단 시프트 레지스터 SREG1은, 버퍼 BUFi로부터 2개의 멀티플렉서 MUX2, MUX1을 통해 순차적으로 입력된 복수의 출력 데이터 DTo를 비트 시프트에 의해 양자화함으로써, 복수의 양자화 입력 데이터 DTi를 순차적으로 생성한다. 상세하게는, 먼저, 멀티플렉서 MUX2는, 32비트폭×N개의 버퍼 BUFi 내의 어느 1개의 위치에 유지되는 출력 데이터 DTo를 선택하고, 예를 들어 당해 출력 데이터 DTo의 하위 8비트 등을, 중간 데이터 DTm으로서 멀티플렉서 MUX1로 출력한다.
또한, 멀티플렉서 MUX2는, 이와 같은 처리를, 버퍼 BUFi 내의 위치를 변화시키면서 시계열적으로 순차적으로 행함으로써, 복수의 출력 데이터 DTo와 등가의 복수의 중간 데이터 DTm을 순차적으로 출력한다. 멀티플렉서 MUX1은, 메모리 MEM2로부터 DMA 컨트롤러 DMAC2를 통해 읽어내진 8비트폭의 데이터 DT인지, 버퍼 BUFi로부터 멀티플렉서 MUX2를 통해 읽어내진 8비트폭의 중간 데이터 DTm인지를 선택하고, 선택한 데이터를 전단 시프트 레지스터 SREG1에 출력한다.
전단 시프트 레지스터 SREG1은, 예를 들어 8비트폭의 레지스터이다. 전단 시프트 레지스터 SREG1은, 멀티플렉서 MUX1로부터의 데이터를, 2m(m은 제로 이상의 정수)인 양자화 계수 Qi를 사용하여 양자화함으로써, 8비트의 정수(INT8) 형식인 양자화 입력 데이터 DTi를 생성한다. 즉, 전단 시프트 레지스터 SREG1은, 입력된 데이터에 대하여 m비트의 좌측 시프트를 행함으로써, 입력된 데이터에 양자화 계수 Qi를 승산한다. 8비트에 의해, 10진수로 0 내지 255를 표현할 수 있는 것으로 하면, 양자화 계수 Qi, 즉 시프트양 "m"은, 예를 들어 양자화 입력 데이터 DTi가 255에 가까운 값이 되도록 정해진다.
MAC 회로(21)는, 메모리 MEM1로부터 DMA 컨트롤러 DMAC1을 통해 순차적으로 읽어내진 복수의 가중치 파라미터 WP와, 전단 시프트 레지스터 SREG1로부터의 복수의 양자화 입력 데이터 DTi를 적화 연산함으로써 연산 데이터 DTc를 생성한다. 학습에 의해 얻어지는 가중치 파라미터 WP는, 통상, 32비트의 부동 소수점수(FP32)로 표현되는 1보다도 작은 값이다. 이와 같은 FP32 형식의 가중치 파라미터 WP는, 미리, 2n(n은 제로 이상의 정수)인 양자화 계수 Qw를 사용하여 INT8 형식으로 양자화된 후에, 메모리 MEM1에 저장된다.
MAC 회로(21)는, INT8 형식인 2개의 입력 데이터를 승산하는 승산기와, 당해 승산기의 승산 결과를 누적 가산하는 누적 가산기를 구비한다. MAC 회로(21)에 의해 생성되는 연산 데이터 DTc는, 예를 들어 16비트 이상의 정수, 여기에서는, 32비트의 정수(INT32) 형식이다.
또한, MAC 회로(21)는, 보다 상세하게는, 누적 가산기에 의한 누적 가산 결과에 대하여 바이어스 파라미터 BP를 가산하는 가산기와, 그 가산 결과에 대하여 활성화 함수를 연산하는 연산기를 구비한다. 그리고, MAC 회로(21)는, 바이어스 파라미터 BP의 가산과 활성화 함수의 연산을 행한 결과를, 연산 데이터 DTc로서 출력한다. 이후에는, 기재의 간략화를 위해, 당해 바이어스 파라미터 BP의 가산과 활성화 함수의 연산을 무시하고 설명을 행한다.
후단 시프트 레지스터 SREG2는, 예를 들어 32비트폭의 레지스터이다. 후단 시프트 레지스터 SREG2는, MAC 회로(21)로부터의 연산 데이터 DTc를 비트 시프트에 의해 역양자화함으로써 출력 데이터 DTo를 생성한다. 그리고, 후단 시프트 레지스터 SREG2는, 당해 출력 데이터 DTo를 2개의 디멀티플렉서 DMUX1, DMUX2를 통해 버퍼 BUFi에 저장한다.
상세하게는, 후단 시프트 레지스터 SREG2는, 연산 데이터 DTc에 역양자화 계수 QR을 승산함으로써, INT32 형식인 출력 데이터 DTo를 생성한다. 역양자화 계수 QR은, 전술한 양자화 계수 Qi(=2m), Qw(=2n)를 사용하여, 예를 들어 1/(Qi×Qw), 즉, 2- (m+n)이다. 이 경우, 후단 시프트 레지스터 SREG2는, 연산 데이터 DTc에 대하여, k(=m+n) 비트의 우측 시프트를 행함으로써, 연산 데이터 DTc를 역양자화한다.
또한, 시프트양 "k"는, 반드시 "m+n"일 필요는 없다. 이 경우, 출력 데이터 DTo는, 본래의 값에 대하여 2i배(i는 정 또는 부의 정수)만큼 다른 값으로 될 수 있다. 단, 이 경우, 뉴럴 네트워크에 있어서의 최종적인 결과가 얻어지기 전의 어느 것의 단계에서, 당해 2i배의 어긋남은, 후단 시프트 레지스터 SREG2에서의 우측 시프트 또는 좌측 시프트에 의해 보정될 수 있다.
또한, 디멀티플렉서 DMUX1, DMUX2는, 1개의 입력을 복수의 출력에 각각 접속하는 복수의 스위치로 구성될 수 있다. 마찬가지로, 멀티플렉서 MUX1, MUX2는, 복수의 입력을 각각 1개의 출력에 접속하는 복수의 스위치로 구성될 수 있다. 디멀티플렉서 DMUX1, DMUX2를 구성하는 복수의 스위치의 온/오프는, 선택 신호 SDX1, SDX2에 의해 제어된다. 멀티플렉서 MUX1, MUX2를 구성하는 복수의 스위치의 온/오프는, 선택 신호 SMX1, SMX2에 의해 제어된다.
선택 신호 SDX1, SDX2, SMX1, SMX2는, 예를 들어 뉴럴 네트워크 엔진(15)을 제어하는 펌웨어 등에 의해 생성된다. 당해 펌웨어는, 유저에 의해 미리 설정 또는 프로그래밍되는 뉴럴 네트워크의 구조에 기초하여, 도시하지 않은 뉴럴 네트워크 엔진(15)의 제어 회로를 통해 선택 신호 SDX1, SDX2, SMX1, SMX2를 적절히 생성한다.
전단 시프트 레지스터 SREG1의 시프트양 "m"은, 시프트 신호 SF1에 의해 제어되고, 후단 시프트 레지스터 SREG2의 시프트양 "k"는, 시프트 신호 SF2에 의해 제어된다. 시프트 신호 SF1, SF2도, 펌웨어 및 제어 회로에 의해 생성된다. 이때, 유저는, 시프트양 "m", "k"를 임의로 정하는 것이 가능하다.
도 3은 도 2에 도시한 뉴럴 네트워크 엔진에 의해 처리되는 뉴럴 네트워크의 구성예를 도시하는 개략도이다. 도 3에 도시한 뉴럴 네트워크는, 종속 접속되는 3층의 컨벌루션층(25[1], 25[2], 25[3])과, 그 후단에 접속되는 풀링층(26)을 구비한다. 컨벌루션층(25[1])은, 예를 들어 메모리 MEM2에 유지되는 입력 맵 IM의 데이터 DT를 입력으로 하여 컨볼루션 연산을 행함으로써, 특징 맵 FM[1]의 데이터를 생성한다.
컨벌루션층(25[2])은, 컨벌루션층(25[1])에서 얻어지는 특징 맵 FM[1]의 데이터를 입력으로 하여 컨볼루션 연산을 행함으로써, 특징 맵 FM[2]의 데이터를 생성한다. 마찬가지로, 컨벌루션층(25[3])은, 컨벌루션층(25[2])에서 얻어지는 특징 맵 FM[2]의 데이터를 입력으로 하여 컨볼루션 연산을 행함으로써, 특징 맵 FM[3]의 데이터를 생성한다. 풀링층(26)은, 컨벌루션층(25[3])에서 얻어지는 특징 맵 FM[3]의 데이터를 입력으로 하여 풀링 처리를 행한다.
이와 같은 뉴럴 네트워크를 대상으로 하여, 도 2의 뉴럴 네트워크 엔진(15)은, 예를 들어 다음과 같은 처리를 행한다. 먼저, 사전 준비로서, 학습에 의해 얻어지는 FP32 형식의 가중치 파라미터 WP는, INT8 형식으로 양자화된 후에 메모리 MEM1에 저장된다. 구체적으로는, INT8 형식의 가중치 파라미터 WP는, FP32 형식의 가중치 파라미터 WP에 양자화 계수 Qw(=2n)를 승산한 후 정수로 반올림함으로써 작성된다.
컨벌루션층(25[1])에 있어서, MAC 회로(21)는, 메모리 MEM1로부터 순차적으로 읽어내진 INT8 형식의 복수의 가중치 파라미터 WP[1]를 입력한다. 또한, MAC 회로(21)는, 메모리 MEM2로부터 순차적으로 읽어내진 INT8 형식의 복수의 데이터 DT를, 멀티플렉서 MUX1 및 전단 시프트 레지스터 SREG1을 통해 입력한다. 이때, 전단 시프트 레지스터 SREG1은, 복수의 데이터 DT의 각각에 대하여 양자화 계수 Qi[1](=2m1)(m1은 0 이상의 정수)를 사용한 양자화, 즉 좌측 시프트를 행함으로써, 복수의 양자화 입력 데이터 DTi[1]를 생성한다. 또한, 메모리 MEM2로부터의 복수의 데이터 DT는, 입력 맵 IM을 구성하는 데이터이다.
MAC 회로(21)는, 메모리 MEM1로부터의 복수의 가중치 파라미터 WP[1]와, 전단 시프트 레지스터 SREG1로부터의 복수의 양자화 입력 데이터 DTi[1]를 순차적으로 적화 연산하는 것 등으로, INT32 형식의 연산 데이터 DTc[1]를 출력한다. 후단 시프트 레지스터 SREG2는, 연산 데이터 DTc[1]에 역양자화 계수 QR[1]을 승산함으로써, 출력 데이터 DTo[1]를 생성한다. 역양자화 계수 QR[1]은, 예를 들어 1/(Qw·Qi[1])이다. 이 경우, 후단 시프트 레지스터 SREG2는, 우측 시프트를 행한다.
이와 같이 하여 얻어지는 출력 데이터 DTo[1]는, 특징 맵 FM[1]을 구성하는 복수의 데이터 중 1개가 된다. 후단 시프트 레지스터 SREG2는, 당해 출력 데이터 DTo[1]를 디멀티플렉서 DMUX1, DMUX2를 통해 버퍼 BUFi의 소정의 위치에 저장한다. 그 후, MAC 회로(21)는, 다른 복수의 데이터 DT를 대상으로 마찬가지의 처리를 행함으로써, 특징 맵 FM[1]을 구성하는 복수의 데이터 중 다른 1개를 생성한다. 당해 다른 1개의 데이터도, 버퍼 BUFi의 소정의 위치에 저장된다. 또한, 복수의 MAC 회로(21)가 병행하여 마찬가지의 처리를 행함으로써, 버퍼 BUFi에는, 특징 맵 FM[1]을 구성하는 모든 데이터가 저장된다.
컨벌루션층(25[2])에 있어서, MAC 회로(21)는, 메모리 MEM1로부터 읽어내진 INT8 형식의 복수의 가중치 파라미터 WP[2]를 입력한다. 또한, MAC 회로(21)는, 버퍼 BUFi로부터 멀티플렉서 MUX2를 통해 순차적으로 읽어내진 복수의 중간 데이터 DTm을, 멀티플렉서 MUX1 및 전단 시프트 레지스터 SREG1을 통해 입력한다. 이때, 전단 시프트 레지스터 SREG1은, 복수의 중간 데이터 DTm의 각각에 대하여 양자화 계수 Qi[2](=2m2)(m2는 0 이상의 정수)를 사용한 양자화, 즉 좌측 시프트를 행함으로써, 복수의 양자화 입력 데이터 DTi[2]를 생성한다. 버퍼 BUFi로부터의 복수의 중간 데이터 DTm은, 특징 맵 FM[1]을 구성하는 데이터이다.
이와 같이, 도 2의 구성예에서는, 버퍼 BUFi를 마련함으로써, 특징 맵 FM[1]을 구성하는 데이터를, 메모리 MEM2가 아니라, 버퍼 BUFi에 저장할 수 있다. 이에 의해, 메모리 MEM2에 대한 액세스 빈도가 낮아져, 필요한 메모리 대역폭을 삭감하는 것이 가능해진다.
MAC 회로(21)는, 메모리 MEM1로부터의 복수의 가중치 파라미터 WP[2]와, 전단 시프트 레지스터 SREG1로부터의 복수의 양자화 입력 데이터 DTi[2]를 순차적으로 적화 연산하는 것 등으로, INT32 형식의 연산 데이터 DTc[2]를 출력한다. 후단 시프트 레지스터 SREG2는, 연산 데이터 DTc[2]에 역양자화 계수 QR[2]을 승산함으로써, 출력 데이터 DTo[2]를 생성한다. 역양자화 계수 QR[2]은, 예를 들어 1/(Qw·Qi[2])이다. 이 경우, 후단 시프트 레지스터 SREG2는, 우측 시프트를 행한다.
이와 같이 하여 얻어지는 출력 데이터 DTo[2]는, 특징 맵 FM[2]을 구성하는 복수의 데이터 중 1개가 된다. 후단 시프트 레지스터 SREG2는, 당해 출력 데이터 DTo[2]를 디멀티플렉서 DMUX1, DMUX2를 통해 버퍼 BUFi에 저장한다. 그리고, 컨벌루션층(25[1])의 경우와 마찬가지로 하여, 버퍼 BUFi에는, 특징 맵 FM[2]을 구성하는 모든 데이터가 저장된다.
컨벌루션층(25[3])에 있어서도, 컨벌루션층(25[2])의 경우와 마찬가지의 처리가 행해진다. 이때, 전단 시프트 레지스터 SREG1에서는 양자화 계수 Qi[3](=2m3)가 사용되고, 후단 시프트 레지스터 SREG2에서는, 역양자화 계수 QR[3], 예를 들어 1/(Qw·Qi[3])가 사용된다. 단, 컨벌루션층(25[3])에서는, 컨벌루션층(25[1], 25[2])의 경우와 달리, 특징 맵 FM[3]을 구성하는 출력 데이터 DTo[3]는, 디멀티플렉서 DMUX1 및 DMA 컨트롤러 DMAC2를 통해 메모리 MEM2에 저장된다. 그 후, 예를 들어 도 1에 도시한 프로세서(17)는, 메모리 MEM2에 저장되는 특징 맵 FM[3]에 대하여, 풀링 처리를 행한다.
이와 같은 동작에 있어서, 출력 데이터 DTo의 값은, 통상 컨벌루션층(25[1], 25[2], 25[3])을 거칠 때마다 작아져 간다. 이 경우, 출력 데이터 DTo의 값이 작아진 분만큼, 전단 시프트 레지스터 SREG1의 양자화 계수 Qi를 크게 하는 것이 가능해진다. 여기서, 양자화 오차를 저감하기 위해서는, 양자화 입력 데이터 DTi가 INT8 형식의 정수 범위에 들어가도록, 양자화 계수 Qi를 가능한 한 큰 값으로 정하는 것이 바람직하다. 이 때문에, 예를 들어 양자화 계수 Qi[2](=2m2) 및 양자화 계수 Qi[3](=2m3)에 있어서, m2<m3이 되도록 정하면, 양자화 오차를 저감할 수 있다.
단, 양자화 오차의 저감 방법은, 반드시 m2<m3이 되도록 정하는 방법에 한하지 않고, 다른 방법이어도 된다. 어느 방법을 사용한 경우라도, 전단 시프트 레지스터 SREG1의 시프트양 "m" 및 후단 시프트 레지스터 SREG2의 시프트양 "k"를, 유저에 의한 설정 또는 프로그래밍에 따라서 적절하게 정함으로써, 대응하는 것이 가능하다. 또한, 역양자화 계수 QR도, 1/(Qw·Qi)에 한하지 않고, 적절히 변경 가능하다. 이 경우, 전술한 바와 같이, 2i배의 어긋남이 발생할 수 있지만, 당해 2i배의 어긋남은, 최종적인 결과, 즉 특징 맵 FM[3]을 구성하는 출력 데이터 DTo[3]를 대상으로, 후단 시프트 레지스터 SREG2에 의해 보정되면 된다.
<실시 형태 1의 주요한 효과>
이상, 실시 형태 1에 의한 반도체 장치에서는, 전단 시프트 레지스터 SREG1 및 후단 시프트 레지스터 SREG2를 마련함으로써, 대표적으로는, 뉴럴 네트워크에 있어서의 양자화 오차를 효율적으로 저감하기 위한 구조를 제공할 수 있다. 그 결과, 뉴럴 네트워크를 사용한 추론의 정밀도를 충분히 유지하는 것이 가능해진다. 또한, 버퍼 BUFi를 마련함으로써, 메모리 대역폭을 저감시킬 수 있다. 그리고, 양자화에 의한 처리 부하의 저감이나, 필요한 메모리 대역폭의 삭감 등에 의해, 추론에 요하는 시간을 단축하는 것이 가능해진다.
또한, 비교예로서, 전단 시프트 레지스터 SREG1 및 후단 시프트 레지스터 SREG2와, 버퍼 BUFi가 마련되지 않는 경우를 상정한다. 이 경우, 예를 들어 컨벌루션층(25[1], 25[2])에서 얻어지는 특징 맵 FM[1], FM[2]의 데이터를 메모리 MEM2에 저장할 필요성이 발생한다. 또한, 프로세서(17)를 사용한 양자화/역양자화의 처리 등이 별도로 필요로 된다. 그 결과, 메모리 대역폭이 증가되고, 또한, 프로세서(17)의 처리가 필요로 되기 때문에, 추론에 요하는 시간도 증가할 수 있다.
(실시 형태 2)
<뉴럴 네트워크 엔진의 상세>
도 4는 실시 형태 2에 의한 반도체 장치에 있어서, 뉴럴 네트워크 엔진 주위의 상세한 구성예를 도시하는 회로 블록도이다. 도 5는 도 4에 있어서의 버퍼 컨트롤러의 동작예를 설명하는 모식도이다. 도 4에 도시한 뉴럴 네트워크 엔진(15a)은, 도 2에 도시한 구성예와 달리, 버퍼 BUFi의 입력측에 라이트용의 버퍼 컨트롤러(30a)를 구비하고, 버퍼 BUFi의 출력측에 리드용의 버퍼 컨트롤러(30b)를 구비한다.
각 버퍼 컨트롤러(30a, 30b)는, 후단 시프트 레지스터 SREG2로부터 디멀티플렉서 DMUX1을 통해 출력되는 출력 데이터 DTo의 비트폭을 가변 제어한다. 구체적으로는, 도 5에 도시된 바와 같이, 각 버퍼 컨트롤러(30a, 30b)는, 출력 데이터 DTo의 비트폭을, 모드 신호 MD에 기초하여, 예를 들어 32비트, 16비트, 8비트, 4비트와 같은 2j 비트 중 어느 하나로 제어한다.
각 버퍼 컨트롤러(30a, 30b)는, 출력 데이터 DTo의 비트폭이 32비트로 제어된 경우, 물리적으로 32비트폭으로 구성되는 버퍼 BUFi를, 32비트폭의 버퍼로 하여, 버퍼 BUFi로의 라이트/리드를 제어한다. 한편, 각 버퍼 컨트롤러(30a, 30b)는, 출력 데이터 DTo의 비트폭이 16비트로 제어된 경우, 32비트폭으로 구성되는 버퍼 BUFi를 16비트폭×2개의 버퍼로 간주하여, 라이트/리드를 제어한다. 마찬가지로, 각 버퍼 컨트롤러(30a, 30b)는, 출력 데이터 DTo의 비트폭이 8비트 또는 4비트로 제어된 경우, 버퍼 BUFi를 8비트폭×4개의 버퍼 또는 4비트폭×8개의 버퍼로 간주한다.
예를 들어, 출력 데이터 DTo의 비트폭이 8비트로 제어된 경우, 각 버퍼 컨트롤러(30a, 30b)는, 32비트폭으로 구성되는 버퍼 BUFi에 대하여, MAC 회로(21)로부터 후단 시프트 레지스터 SREG2 등을 통해 입력되는 4회분의 출력 데이터 DTo1 내지 DTo4를 저장할 수 있다. 이에 의해, 버퍼 BUFi를 효율적으로 사용할 수 있어, 버퍼 BUFi로의 라이트/리드에 수반되는 소비 전력을 저감시키는 것이 가능해진다.
특히, 도 3에 도시한 바와 같은 뉴럴 네트워크의 경우, 컨벌루션층(25[1] 내지 25[3])을 거칠 때마다, 출력 데이터 DTo의 값이 작아지도록 제어할 수 있다. 이 경우, 컨벌루션층(25[1] 내지 25[3])을 거칠 때마다, 출력 데이터 DTo의 비트폭을 작게 하는 것이 가능하다. 또한, 라이트용의 버퍼 컨트롤러(30a)는, 예를 들어 복수의 디멀티플렉서를 조합하는 것 등으로 구성될 수 있다. 마찬가지로, 리드용의 버퍼 컨트롤러(30b)는, 예를 들어 복수의 멀티플렉서를 조합하는 것 등으로 구성될 수 있다.
<실시 형태 2의 주요한 효과>
이상, 실시 형태 2에 의한 반도체 장치를 사용함으로써, 실시 형태 1에서 설명한 각종 효과와 마찬가지의 효과가 얻어진다. 이것에 더하여, 버퍼 컨트롤러(30a, 30b)를 마련함으로써, 버퍼 BUFi를 효율적으로 사용하는 것이 가능해진다.
(실시 형태 3)
<반도체 장치의 개략>
도 6은 실시 형태 3에 의한 반도체 장치에 있어서, 주요부의 구성예를 도시하는 개략도이다. 도 6에 도시한 반도체 장치(10b)는, 도 1과 마찬가지의 구성을 구비하는 것에 더하여, 뉴럴 네트워크 엔진(15b) 내에 버퍼 BUFc를 구비한다. 버퍼 BUFc는, 플립플롭 등으로 구성되는 버퍼 BUFi와 달리, 예를 들어 SRAM 등으로 구성된다. 예를 들어, 버퍼 BUFi의 용량은, 수10k 바이트 이하이고, 버퍼 BUFc의 용량은, 수M 바이트 이상이다.
<뉴럴 네트워크 엔진의 상세>
도 7은 도 6에 있어서의 뉴럴 네트워크 엔진 주위의 상세한 구성예를 도시하는 회로 블록도이다. 도 7에 도시한 뉴럴 네트워크 엔진(15b)은, 도 2의 구성예와 비교하여, 다음의 3점이 다르다. 1점째의 상위점으로서, 버퍼 BUFi에 더하여 버퍼 BUFc가 추가되어 있다. 버퍼 BUFc는, 후단 시프트 레지스터 SREG2의 비트폭과 동일한 비트폭으로 구성되고, 예를 들어 32비트폭으로 액세스된다.
2점째의 상위점으로서, 버퍼 BUFi는, 후단 시프트 레지스터 SREG2의 비트폭보다도 적은 비트폭으로 구성되고, 예를 들어 16비트폭으로 구성된다. 3점째의 상위점으로서, MAC 유닛(20b)은, 버퍼 BUFc의 추가에 수반하여, 도 2의 경우와는 다른 디멀티플렉서 DMUX1b 및 멀티플렉서 MUX1b를 구비한다. 디멀티플렉서 DMUX1b는, 후단 시프트 레지스터 SREG2로부터의 출력 데이터 DTo를, 메모리 MEM2, 버퍼 BUFi 또는 버퍼 BUFc 중 어느 것에 저장할지를, 선택 신호 SDX1b에 기초하여 선택한다. 버퍼 BUFi가 선택된 경우, 버퍼 BUFi에는, 예를 들어 32비트의 출력 데이터 DTo 중 하위 16비트 등이 저장된다.
멀티플렉서 MUX1b는, 메모리 MEM2에 유지되는 데이터 DT, 버퍼 BUFi에 유지되는 출력 데이터 DTo, 또는 버퍼 BUFc에 유지되는 출력 데이터 DTo 중 어느 것을, 선택 신호 SMX1b에 기초하여 선택하여 전단 시프트 레지스터 SREG1로 출력한다. 버퍼 BUFi에 유지되는 출력 데이터 DTo는, 도 2의 경우와 마찬가지로 중간 데이터 DTm1이 된다. 마찬가지로, 버퍼 BUFc에 유지되는 출력 데이터 DTo는, 중간 데이터 DTm2가 된다. 데이터 DT, 중간 데이터 DTm1, DTm2는, 모두, 8비트폭 등으로 구성된다.
이상과 같은 구성에 있어서, 동일 면적에서의 용량은, 버퍼 BUFi보다도 버퍼 BUFc쪽이 크다. 한편, 액세스 속도는, 버퍼 BUFi쪽이 버퍼 BUFc보다도 빠르다. 여기서, 출력 데이터 DTo의 비트폭이 큰 경우, 필요로 되는 버퍼의 용량도 커진다. 단, 버퍼를 모두 플립플롭으로 구성하면, 고속화가 도모되지만, 면적의 증대가 염려된다. 그래서, 여기서는, 2개의 버퍼 BUFi, BUFc를 마련하고, 2개의 버퍼 BUFi, BUFc를, 출력 데이터 DTo의 비트폭, 바꿔 말하면, 유효 비트폭에 따라서 전환한다.
출력 데이터 DTo의 비트폭이 16비트보다도 큰 경우, 출력 데이터 DTo의 저장처로서 버퍼 BUFc가 선택된다. 한편, 출력 데이터 DTo의 비트폭이 16비트 이하인 경우, 출력 데이터 DTo의 저장처로서 버퍼 BUFi가 선택된다. 실시 형태 2에서 설명한 바와 같이, 출력 데이터 DTo의 비트폭은, 컨벌루션층을 거칠 때마다 작아져도 된다. 이 경우, 컨벌루션층의 초단측에서는, 버퍼 BUFc를 사용하고, 컨벌루션층의 최종단측에서는, 버퍼 BUFi를 사용하는 것이 가능하다.
<실시 형태 3의 주요한 효과>
이상, 실시 형태 3에 의한 반도체 장치를 사용함으로써, 실시 형태 1에서 설명한 각종 효과와 마찬가지의 효과가 얻어진다. 이것에 더하여, 2개의 버퍼 BUFi, BUFc를 마련함으로써, 면적과 속도의 밸런스를 향상시키는 것이 가능해진다.
(실시 형태 4)
<뉴럴 네트워크 엔진의 상세>
도 8은 실시 형태 4에 의한 반도체 장치에 있어서, 뉴럴 네트워크 엔진 주위의 상세한 구성예를 도시하는 회로 블록도이다. 도 8에 도시한 뉴럴 네트워크 엔진(15c)은, 도 2의 구성예와 비교하여, 다음의 2점이 다르다. 1점째의 상위점으로서, 버퍼 BUFi에 더하여 버퍼 BUFi2가 추가되어 있다. 버퍼 BUFi2는, 예를 들어 8비트폭×M개의 플립플롭으로 구성된다. 버퍼 BUFi2는, MAC 회로(21)의 한쪽의 입력으로부터 분기됨으로써 얻어지는 파라미터, 예를 들어 가중치 파라미터 WP를 유지한다.
2점째의 상위점으로서, MAC 유닛(20c)은, 버퍼 BUFi2의 추가에 수반하여, 또한, 멀티플렉서 MUX3을 구비한다. 멀티플렉서 MUX3은, 메모리 MEM1에 유지되는 가중치 파라미터 WP, 또는 버퍼 BUFi2에 유지되는 가중치 파라미터 WPx 중 어느 것을, 선택 신호 SMX3에 기초하여 선택하여 MAC 회로(21)에 출력한다.
하나의 컨벌루션층에 대한 뉴럴 네트워크 엔진(15c)의 처리에서는, 복수의 가중치 파라미터 WP가 반복하여 사용된다. 예를 들어, 도 3에 도시한 특징 맵 FM[1] 내의 하나의 데이터를 얻을 때, 어떤 복수의 가중치 파라미터 WP가 사용되고, 그 후, 특징 맵 FM[1] 내의 다른 하나의 데이터를 얻을 때, 동일한 값을 갖는 복수의 가중치 파라미터 WP가 사용된다. 이 때문에, 복수의 가중치 파라미터 WP를 2회째 이후에 사용할 때 복수의 가중치 파라미터 WP를 버퍼 BUFi2로부터 읽어냄으로써, 메모리 MEM1에 대한 액세스 빈도를 낮출 수 있다.
<실시 형태 4의 주요한 효과>
이상, 실시 형태 4에 의한 반도체 장치를 사용함으로써, 실시 형태 1에서 설명한 각종 효과와 마찬가지의 효과가 얻어진다. 이것에 더하여, 버퍼 BUFi2를 마련함으로써, 메모리 MEM1에 대한 액세스 빈도를 낮춰, 필요한 메모리 대역폭을 삭감하는 것이 가능해진다.
이상, 본 발명자에 의해 이루어진 발명을 실시 형태에 기초하여 구체적으로 설명하였지만, 본 발명은 상기 실시 형태에 한정되는 것은 아니고, 그 요지를 일탈하지 않는 범위에서 다양하게 변경 가능한 것은 물론이다.
10, 10b: 반도체 장치
15, 15a, 15b, 15c: 뉴럴 네트워크 엔진
16: 시스템 버스
17: 프로세서
20, 20b, 20c: MAC 유닛
21: MAC 회로
25[1], 25[2], 25[3]: 컨벌루션층
26: 풀링층
30a, 30b: 버퍼 컨트롤러

Claims (12)

  1. 뉴럴 네트워크의 처리를 실행하는 반도체 장치이며,
    출력 데이터를 유지하는 제1 버퍼와,
    상기 제1 버퍼로부터 순차적으로 입력된 복수의 상기 출력 데이터를 비트 시프트에 의해 양자화함으로써, 복수의 양자화 입력 데이터를 순차적으로 생성하는 제1 시프트 레지스터와,
    복수의 파라미터와, 상기 제1 시프트 레지스터로부터의 상기 복수의 양자화 입력 데이터를 적화 연산함으로써 연산 데이터를 생성하는 적화 연산기와,
    상기 적화 연산기로부터의 상기 연산 데이터를 비트 시프트에 의해 역양자화함으로써 상기 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제1 버퍼에 저장하는 제2 시프트 레지스터를 구비하는, 반도체 장치.
  2. 제1항에 있어서,
    상기 복수의 파라미터를 유지하는 메모리를 더 구비하고,
    상기 복수의 파라미터는, 미리 양자화된 후에 상기 메모리에 저장되어 있고,
    상기 복수의 양자화 입력 데이터 및 상기 복수의 파라미터의 각각은, 8비트 이하의 정수인, 반도체 장치.
  3. 제1항에 있어서,
    상기 제1 버퍼는, 플립플롭으로 구성되는, 반도체 장치.
  4. 제3항에 있어서,
    상기 출력 데이터를 유지하고, SRAM으로 구성되는 제2 버퍼와,
    상기 출력 데이터를 상기 제1 버퍼 또는 상기 제2 버퍼 중 어느 것에 저장할지를 선택하는 디멀티플렉서와,
    상기 제1 버퍼에 유지되는 상기 출력 데이터 또는 상기 제2 버퍼에 유지되는 상기 출력 데이터 중 어느 것을 선택하여 상기 제1 시프트 레지스터로 출력하는 멀티플렉서를 더 구비하는, 반도체 장치.
  5. 제4항에 있어서,
    상기 제1 버퍼의 비트폭은, 상기 제2 시프트 레지스터의 비트폭보다도 적고,
    상기 제2 버퍼의 비트폭은, 상기 제2 시프트 레지스터의 비트폭과 동일한, 반도체 장치.
  6. 제1항에 있어서,
    상기 출력 데이터의 비트폭을 가변 제어하는 버퍼 컨트롤러를 더 구비하는, 반도체 장치.
  7. 하나의 반도체 칩으로 구성되는 반도체 장치이며,
    뉴럴 네트워크의 처리를 실행하는 뉴럴 네트워크 엔진과,
    복수의 데이터와, 복수의 파라미터를 유지하는 단수 또는 복수의 메모리와,
    프로세서와,
    상기 뉴럴 네트워크 엔진, 상기 메모리 및 상기 프로세서를 서로 접속하는 버스
    를 구비하고,
    상기 뉴럴 네트워크 엔진은,
    출력 데이터를 유지하는 제1 버퍼와,
    상기 제1 버퍼로부터 순차적으로 입력된 복수의 상기 출력 데이터를 비트 시프트에 의해 양자화함으로써, 복수의 양자화 입력 데이터를 순차적으로 생성하는 제1 시프트 레지스터와,
    상기 메모리로부터의 상기 복수의 파라미터와, 상기 제1 시프트 레지스터로부터의 상기 복수의 양자화 입력 데이터를 적화 연산함으로써 연산 데이터를 생성하는 적화 연산기와,
    상기 적화 연산기로부터의 상기 연산 데이터를 비트 시프트에 의해 역양자화함으로써 상기 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제1 버퍼에 저장하는 제2 시프트 레지스터를 구비하는, 반도체 장치.
  8. 제7항에 있어서,
    상기 복수의 파라미터는, 미리 양자화된 후에 상기 메모리에 저장되어 있고,
    상기 복수의 양자화 입력 데이터 및 상기 복수의 파라미터의 각각은, 8비트 이하의 정수인, 반도체 장치.
  9. 제7항에 있어서,
    상기 제1 버퍼는, 플립플롭으로 구성되는, 반도체 장치.
  10. 제9항에 있어서,
    상기 뉴럴 네트워크 엔진은,
    상기 출력 데이터를 유지하고, SRAM으로 구성되는 제2 버퍼와,
    상기 출력 데이터를 상기 제1 버퍼 또는 상기 제2 버퍼 중 어느 것에 저장할지를 선택하는 디멀티플렉서와,
    상기 제1 버퍼에 유지되는 상기 출력 데이터 또는 상기 제2 버퍼에 유지되는 상기 출력 데이터 중 어느 것을 선택하여 상기 제1 시프트 레지스터로 출력하는 멀티플렉서를 더 구비하는, 반도체 장치.
  11. 제10항에 있어서,
    상기 제1 버퍼의 비트폭은, 상기 제2 시프트 레지스터의 비트폭보다도 적고,
    상기 제2 버퍼의 비트폭은, 상기 제2 시프트 레지스터의 비트폭과 동일한, 반도체 장치.
  12. 제7항에 있어서,
    상기 뉴럴 네트워크 엔진은, 상기 출력 데이터의 비트폭을 가변 제어하는 버퍼 컨트롤러를 더 구비하는, 반도체 장치.
KR1020220147684A 2021-11-22 2022-11-08 반도체 장치 KR20230075349A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2021-189169 2021-11-22
JP2021189169A JP2023076026A (ja) 2021-11-22 2021-11-22 半導体装置

Publications (1)

Publication Number Publication Date
KR20230075349A true KR20230075349A (ko) 2023-05-31

Family

ID=86227376

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220147684A KR20230075349A (ko) 2021-11-22 2022-11-08 반도체 장치

Country Status (5)

Country Link
US (1) US20230162013A1 (ko)
JP (1) JP2023076026A (ko)
KR (1) KR20230075349A (ko)
CN (1) CN116151321A (ko)
DE (1) DE102022212269A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6886747B2 (ja) * 2018-10-10 2021-06-16 LeapMind株式会社 ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、およびニューラルネットワーク処理プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019040403A (ja) 2017-08-25 2019-03-14 ルネサスエレクトロニクス株式会社 半導体装置および画像認識システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019040403A (ja) 2017-08-25 2019-03-14 ルネサスエレクトロニクス株式会社 半導体装置および画像認識システム

Also Published As

Publication number Publication date
US20230162013A1 (en) 2023-05-25
DE102022212269A1 (de) 2023-05-25
CN116151321A (zh) 2023-05-23
JP2023076026A (ja) 2023-06-01

Similar Documents

Publication Publication Date Title
US9411726B2 (en) Low power computation architecture
US10169295B2 (en) Convolution operation device and method
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
KR20230075349A (ko) 반도체 장치
CN112101541B (zh) 对高位宽值数据进行拆分的装置、方法、芯片及板卡
CN112446460A (zh) 用于处理数据的方法、装置以及相关产品
CN115935888A (zh) 一种神经网络加速系统
US20230083597A1 (en) Configurable nonlinear activation function circuits
US20220222569A1 (en) Data processing
JP2022074442A (ja) 演算装置および演算方法
Zhang et al. Yolov3-tiny Object Detection SoC Based on FPGA Platform
CN114692865A (zh) 一种神经网络量化训练方法、装置及相关产品
CN115481721B (zh) 一种针对卷积神经网络的Psum计算电路
US20220398441A1 (en) Semiconductor device
US20240104034A1 (en) Semiconductor device
CN113128658B (en) Neural network processing method, accelerator and storage medium
US20230376415A1 (en) Semiconductor device
US20240054083A1 (en) Semiconductor device
CN110929854A (zh) 一种数据处理方法、装置及硬件加速器
WO2021214944A1 (ja) 構成変換装置、構成変換方法、および構成変換プログラム
US20220013153A1 (en) Dynamic processing memory
US20230177320A1 (en) Neural network accelerator with a configurable pipeline
WO2023139990A1 (ja) ニューラルネットワーク回路およびニューラルネットワーク演算方法
EP4396699A1 (en) Configurable nonlinear activation function circuits
WO2023244905A1 (en) Configurable nonlinear activation function circuits