KR20060083429A - 적화 연산 회로 및 방법 - Google Patents

적화 연산 회로 및 방법 Download PDF

Info

Publication number
KR20060083429A
KR20060083429A KR1020067009482A KR20067009482A KR20060083429A KR 20060083429 A KR20060083429 A KR 20060083429A KR 1020067009482 A KR1020067009482 A KR 1020067009482A KR 20067009482 A KR20067009482 A KR 20067009482A KR 20060083429 A KR20060083429 A KR 20060083429A
Authority
KR
South Korea
Prior art keywords
value
operand
circuit
block
input
Prior art date
Application number
KR1020067009482A
Other languages
English (en)
Other versions
KR100875937B1 (ko
Inventor
오사무 노무라
타카시 모리에
케이스케 코레카도
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20060083429A publication Critical patent/KR20060083429A/ko
Application granted granted Critical
Publication of KR100875937B1 publication Critical patent/KR100875937B1/ko

Links

Images

Classifications

    • 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/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • 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/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • 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

Abstract

적화 연산 회로는, 복수의 피연산 값 x1,x2,...xi를 내림차순 또는 오름차순으로 출력하는 소팅 블록(4)과, 소팅 블록(4)으로부터 출력되는 각 피연산 값 xi에, 대응하는 피연산 값 Wi를 곱해서 곱셈 결과의 누산 총합을 산출하는 연산부(1)를 구비한다.
연산회로, 피연산값, 소팅

Description

적화 연산 회로 및 방법{PRODUCT-SUM OPERATION CIRCUIT AND METHOD}
본 발명은, 곱셈과 누산을 병렬로 실행하는 적화 연산 회로 및 방법에 관한 것이다.
현재, 컴퓨터는 큰 진전을 보여 세상의 여러 가지 장면에서 사용되고 있다. 그렇지만, 이들 노이만(Neumann)형으로 불리는 컴퓨터는, 그 처리 방식 자체의 특성에 의해, 사람이 용이하게 수행할 수가 있는 처리(예를 들면, 리얼 타임(real-time)에서의 사람의 얼굴의 인식 등)를 매우 능숙하게 하지 못한다.
그러한 처리를 잘 처리하기 위해서, 뇌의 정보 처리 양식을 흉내내는 연산 처리 모델인, 뉴럴(neural) 네트워크를 연구하고 있다.
뉴럴 네트워크를 구성하는 뉴런(neuron)의 모델로서, 일반적으로 뉴런에 대응하는 유닛에, 복수의 유닛(뉴런)으로부터의 출력값에 시냅스 하중값으로 가중치를 준 곱셈값이 입력된다. 그 입력값의 총합을 한층 더 비선형적으로 변환하여 출력한다. 즉, 일반적인 뉴럴 네트워크에 있어서는, 각 유닛, 및 유닛 간에 있어서의 적화 연산과 비선형 변환에 의해, 소망의 처리가 실현된다.
이 뉴런 모델을 이용한 뉴럴 네트워크 아키텍처로서는, 지금까지, 적화 연산을 실행하는 유닛을 서로 결합한 연상 메모리나, 그 적화 연산을 실행하는 유닛을 계층적으로 결합한 패턴 인식 모델 등이 제안되어 있다.
여기서 뉴럴 네트워크를 실용화하여, 그것을 집적회로로서 형성하기 위해서는, 적화 연산을 보다 효율적으로 실행하는 것이 필요하다. 특히, 연산의 실행 속도나 소비 전력의 면에서 그 효율이 필요하다.
적화 연산을 실행하는 뉴런 모델, 및 뉴럴 네트워크 아키텍처와 관련하여, 각종 제안이 이루어져 있다. 예를 들면, 일본 특개평 05-210651호 공보에는 적화 연산을 실행해 계층적인 뉴로 컴퓨터를 구성하는 방법이 개시되어 있다.
(발명의 개시)
본 발명의 목적은, 적화 연산에 있어서의 피연산 값의 연산 순서나 연산 범위를 제어함으로써, 소비 전력을 줄이는 한편 속도를 증가시키는 적화 연산 회로 및 방법을 제공하는 것에 있다.
상기 목적을 달성하기 위해서, 본 발명의 일 국면에 의하면, 복수의 피연산 값을 내림차순 또는 오름차순으로 출력하는 소팅 회로와, 상기 소팅 회로로부터 출력되는 각 피연산 값에 대응하는 피연산 값을 곱하는 곱셈 회로와, 상기 곱셈 회로에 의한 곱셈 결과의 누산 총합을 산출하는 누산 총합 회로를 구비하는 적화 연산 회로가 제공된다.
또, 본 발명의 또 다른 국면에 의하면, 복수의 피연산 값을 내림차순 또는 오름차순으로 출력하는 단계와, 각각의 출력된 피연산 값에, 대응하는 피연산 값을 곱하는 단계와, 곱셈 결과의 누산 총합을 산출하는 단계를 포함하는 적화 연산 실행 방법이 제공된다.
본 발명의 다른 특징 및 이점은 첨부도면을 참조하여 설명된 이하의 발명내용으로부터 분명해질 것이고, 도면 전반에서 같은 참조문자들은 동일 및 비슷한 부분을 나타낸다.
명세서의 일부에 통합되면서 명세서의 일부를 구성하는 첨부도면은 본 발명의 실시예를 나타내며, 아래의 발명내용과 함께 본 발명의 원리를 설명하는 역할을 한다.
도 1은 제1 실시예의 적화 연산 회로의 일례를 나타내는 블록도이다.
도 2는 제1 실시예에 따른 디지털 연산 회로의 일례를 나타내는 블록도이다.
도 3은 제1 실시예에 따른 입력값 보유회로 및 소팅(sorting)회로의 기능으로 구성되는 제1 실시예에 있어서의 연상 메모리 회로의 메모리 셀 구조의 일례를 나타내는 도면이다.
도 4는 제1 실시예에 따른 메모리의 메모리 셀 구조의 일례를 나타내는 도면이다.
도 5는 제1 실시예에 따른 적화 연산 회로의 또 다른 예를 나타내는 블록도이다.
도 6은 제2 실시예에 따른 아날로그 연산 회로의 일례를 나타내는 블록도이다.
도 7은 제2 실시예에 따른 입력값 보유 블록의 일례를 나타내는 블록도이다.
도 8은 제2 실시예에 따른 소팅 블록의 일례를 나타내는 블록도이다.
도 9는 제2 실시예에 따른 하중 보유 블록의 일례를 나타내는 블록도이다.
도 10은 제3 실시예에 따른 적화 연산 회로의 일례를 나타내는 블록도이다.
도 11은 제3 실시예에 따른 아날로그 연산 회로의 일례를 나타내는 블록도이다.
도 12는 제3 실시예에 따른 램프 생성 회로의 일례를 나타내는 블록도이다.
도 13은 제4 실시예에 따른 아날로그 연산 회로의 일례를 나타내는 블록도이다.
도 14는 제4 실시예에 따른 적화 연산 회로의 일례를 나타내는 블록도이다.
도 15는 제4 실시예에 따른 램프 생성 회로의 일례를 나타내는 블록도이다.
도 16은 제5 실시예에 따른 적화 연산 회로의 일례를 나타내는 블록도이다.
도 17은 제6 실시예에 따른 적화 연산 회로의 일례를 나타내는 블록도이다.
도 18은 제6 실시예에 따른 램프 생성 회로의 일례를 나타내는 블록도이다.
도 19는 제7 실시예에 따른 적화 연산 회로의 일례를 나타내는 블록도이다.
도 20은 제7 실시예에 따른 램프 생성 회로의 일례를 나타내는 블록도이다.
도 21은 뉴럴 네트워크 모델을 나타내는 도면이다.
도 22a 및 도 22b는 제8 실시예에 따른 적화 연산 회로의 일례를 나타내는 블록도이다.
도 23은 시그모이드(sigmoid) 변환을 나타내는 도면이다.
도 24a 및 도 24b는 제8 실시예에 따른 적화 연산 회로의 또 다른 예를 나타내는 블록도이다.
도 25a 및 도 25b는 제9 실시예에 따른 적화 연산 회로의 일례를 나타내는 블록도이다.
도 26은 제10 실시예에 따른 적화 연산 회로에 있어서의 소팅 회로와 소정값 보유 메모리를 나타내는 블록도이다.
도 27은 제11 실시예에 따른 적화 연산 회로에 있어서의 소팅 회로, 일정값 보유 메모리, 및 소정값 보유 메모리를 나타내는 블록도이다.
도 28은 제12 실시예에 따른 적화 연산 회로에 있어서의 소팅회로 및 소정값(비율) 보유 메모리를 나타내는 블록도이다.
도 29는 제13 실시예에 따른 적화 연산 회로에 있어서의 소팅회로, 소정값(비율) 보유 메모리, 및 일정값 보유 메모리를 나타내는 블록도이다.
도 30a 및 도 30b는 제14 실시예에 따른 적화 연산 회로의 일례를 나타내는 블록도이다.
도 31은 제14 실시예에서의 연산 처리를 나타내는 플로차트이다.
이하, 첨부 도면을 참조하면서, 본 발명의 바람직한 실시예를 설명한다.
(제1 실시예)
도 1은, 본 실시예에 따른 적화 연산 회로를 나타내는 블록도이다.
도 1에 나타낸 바와 같이, 본 실시예에 따른 적화 연산 회로는, 복수개의 연산 블록(도 1에 나타낸 예에서는 연산 블록 1~6)과, 피연산 값 Xi를 보유하는 입력값 보유 블록(2)과, 피연산 값 Wi를 보유하는 하중값 보유 블록(3)과, 피연산 값 Xi를 내림차순으로 출력하는 소팅 블록(4)과, 피연산 값 Xi의 라벨(label)에 대응하는 연산 블록에 피연산 값 Xi 및 피연산 값 Wi를 입력하기 위한 스위치 블록(5)을 포함하는 연산부(100)를 구비한다. 피연산 값 Xi와 피연산 값 Wi의 i는, 각각 다른 X와 W를 나타내는 첨자이며, 1,2,3... 등의 자연수를 취한다(이것은 이하의 설명에도 적용한다.).
도 2는, 연산 블록(1)을 디지털 회로로서 구성한 디지털 연산 회로를 나타낸다. 연산 블록(2~6)은 또한 동일한 구성을 가질 수도 있다. 도 2에 나타낸 바와 같이, 본 실시예에 따른 디지털 연산 회로는, 3개의 레지스터(6a, 6b, 6c)와, 곱셈기(7)와, 가감산기(8)를 포함한다.
이하, 본 실시예에 다른 적화 연산 회로에 의한 연산 처리를 설명한다.
도 1에 나타낸 바와 같이, 복수의 피연산 값 Xi는 입력 보유 블록(2)에 보유되고, 소팅 블록(4)에 의해, 값이 내림차순으로 소팅되어 출력된다. 본 실시예에 있어서는, 값이 동일한 피연산 값 Xi가 있는 경우에는, 그들을 임의의 순서로 출력한다. 대신, 사전에 적당한 순서를 설정해 두어도 된다.
그 후에, 피연산 값 Xi이 갖는 라벨이 소팅 블록(4)으로부터 스위치 블록(5) 으로 입력된다. 그 라벨에 따라 스위치 블록(5)이 스위칭을 수행하여, 소팅 블록(4)으로부터 출력된 피연산 값 Xi를 그 라벨에 대응하는 연산 블록에 입력한다. 1개의 연산 블록이나 복수의 연산 블록이나 피연산 값 Xi의 라벨에 대응할 수 있다. 본 실시예에 기술되는 예에 있어서는, 복수의 연산 블록이 하나의 라벨에 대응한다.
본 실시예에 있어서는, 입력 보유 블록(2)과 소팅 블록(4)으로 실행되는 처리는, 연상 메모리 회로를 이용해 실현된다. 도 3은 연상 메모리 회로의 메모리 셀 구조의 일례를 나타낸다. 도 3에 나타낸 바와 같이, 연상 메모리 회로는, 피연산 값 Xi의 값과, 피연산 값 Xi의 라벨 및 검출 플래그를 보유하고 있다.
연상 메모리 회로는, 입력된 검색 값과 보유하고 있는 데이터를 비교해, 양자의 일치 값을 갖는 데이터를 출력하는 기능을 갖는다. 이 연상 메모리 회로의 일반적인 기능을 이용해, 검출 플래그 및 라벨을 갖지 않는 피연산 값 Xi을 내림차순으로, 1개씩 판독하고, 그 판독한 값에 대한 검출 플래그를 설정함으로써, 입력 보유 블록과 소팅 블록으로 실행되는 처리를 실현할 수 있다.
즉, 검색 값을 피연산 값 Xi의 최대값에 대응하는 값으로부터 내림차순으로 순차적으로 연상 메모리 회로에 입력하고, 값이 일치하는 데이터를 순차적으로 판독함으로써, 소팅 기능을 실현할 수 있다(반대로, 피연산 값 Xi의 오름차순으로 데이터를 판독해도 된다.).
본 실시예에서는, 상술한 바와 같이, 입력 보유 블록(2)과 소팅 블록(4)의 기능은 연상 메모리 회로에 의해 실현된다. 그러나, 구체적인 회로 구성은 본 발명 의 요지는 아니다. 같은 처리를 실행할 수 있으면, 그 외의 처리 구성을 이용할 수 있다.
하중값 보유 블록(3)으로부터 출력되는 복수의 피연산 값 Wi은, 소정의 연산 블록에 입력된다. 본 실시예에 있어서는, 피연산 값 Wi에 대해서도, 피연산 값 Xi와 같게, 각각의 피연산 값 Xi의 라벨에 따라 스위치 블록(5)은 스위칭을 실행해서, 피연산 값 Wi를 라벨에 의해 결정된 소정의 연산 블록에 입력한다.
본 실시예와는 달리, 피연산 값 Wi가 입력되어야 하는 연산 블록은, 피연산 값 Xi의 라벨에 의존하지 않고, 사전에 설정되어도 된다.
또, 각 연산 블록에 입력되는 피연산 값 Wi의 값은, 연산마다 변경되지 않은 채로 존재하거나 변경되는 경우가 있다.
본 실시예에 있어서는, 하중값 보유 블록(3)은 일반적인 SRAM 회로에 의해 구성될 수 있다. 그러나, 같은 처리를 실행할 수 있으면, 그 외의 처리 구성을 이용할 수가 있다.
이상의 처리를 실행함으로써, 소정의 연산 블록에 피연산 값 Xi와 피연산 값 Wi가 입력된다.
본 실시예에 있어서는, 소정의 연산 블록(연산 처리가 실행되는 연산 블록)은, 도 1에서의 연산 블록(3~5)이다.
피연산 값 Xi와 피연산 값 Wi의 양자가 입력되는 상기 소정의 연산 블록에서 실행되는 연산 처리에 대해서 설명한다. 피연산 값 Xi가 입력되지 않는 연산 블록에서는 연산 처리가 실행되지 않는다.
도 2에 나타낸 연산 블록에서, 피연산 값 Xi와 피연산 값 Wi는, 각각 일시적으로 레지스터(6a)와 레지스터(6b)에 보유된다. 그 후에, 곱셈기(7)에 의해 Xi×Wi가 연산된다.
Xi×Wi의 곱셈 결과는, 가감산기(8)에 입력되고, 레지스터(6c)에 보유되어 있는 결과와 가감산되어, 레지스터(6c)에 보유된다.
이상의 처리를 반복함으로써, 복수의 Xi×Wi의 곱셈 결과의 누산값이 레지스터(6c)에 보유된다. 소정수의 누산이 완료하면, 누산값이 출력된다.
상술한 바와 같이, 레지스터(6a)에 보유되는 피연산 값 Xi는, 소팅 블록(4)에서의 처리에 의해 내림차순으로 입력된다. 같은 값을 갖는 피연산 값 Xi는 연속해서 입력된다. 이 때문에, 피연산 값 Xi이 랜덤하게 입력되는 경우에 비하여, 레지스터의 데이터 천이 빈도가 적어져, 데이터 천이에 의한 전력 소비를 삭감할 수 있다.
본 실시예에 있어서는, 소팅 블록(4)으로부터 연산부(1)로 피연산 값 Xi 자체를 입력한다. 연상 메모리에 피연산 값 Xi를 내림차순으로 검색할 때에, Xi 값이 변화한 경우에만 연산 블록 내의 레지스터(6a)에 보유된 값을 변경해도 상관없다.
이 경우, 소팅 블록(4)으로부터 연산부(1)로, 피연산 값 Xi 자체가 아니라, 레지스터(6a)의 값을 적절하게 갱신하도록 지시하는 플래그 신호가 입력된다.
본 실시예에 있어서는, 소팅 블록(4)은 피연산 값 Xi를 내림차순으로 소팅한다. 피연산 값 Xi를 오름차순으로 소팅하는 경우에도, 상기와 같은 효과를 얻을 수 있다.
본 실시예에 있어서는, 연상 메모리로부터의 출력을 직접 연산부(1) 및 스위치 블록(5)에 입력한다. 연상 메모리로부터 내림차순으로 출력되는 피연산 값 Xi의 데이터를 일시적으로 SRAM 등의 메모리에 입력 및 보유한 후, SRAM으로부터 연산부(1) 및 스위치 블록(5)으로 입력해도 좋다. 이 경우에, 메모리에 각각의 피연산 값의 라벨 및 값을 보유해도 좋다. 그 값 대신에, 상술한 바와 같이. 내림차순으로 배열된 피연산 값 Xi의 값이 변화하는 위치를 나타내는 플래그를 보유해도 좋다. 도 4는 SRAM에 플래그를 보유하는 경우의 메모리 셀 구조의 일례를 나타낸다.
본 실시예에서, 입력값 보유 블록(2)으로, 피연산 값 Xi가 PWM(Pulse Width Modulation) 신호로서 입력되는 경우에 관해서, 도 5를 참조하여 설명한다.
여기서는, PWM 신호의 특성에 대해 간단하게 설명한다. PWM 신호에서, 펄스 파형의 폭은 정보를 갖는다. PWM 신호는 노이즈에 강한 디지털 특성(전압 방향으로 하이 레벨과 로우 레벨의 2진 정보를 보유하는 것을 나타내는 특성)과, 연속 정보를 1 펄스로 표현할 수가 있는 아날로그 특성(시간 방향으로 연속 정보를 보유하는 것을 나타내는 특성)의 양자를 갖는다.
도 5에 나타낸 적화 연산 회로는, 입력 보유 블록(2)의 입력부에 펄스 폭/디지털 변환 블록(9)이 설치되어 있는 것을 제외하고, 전술한 구성(도 1)과 동일하다. 특히, PWM 신호로서 입력되는 각 피연산 값 Xi는, 펄스 폭/디지털 변환 블록(9)에 의해 디지털 신호로 변환된 후에 입력값 보유 블록(2)에 보유된다.
입력된 PWM 신호를 디지털 값으로 변환해 출력하는 기능을 갖는 펄스 폭/디지털 변환 블록(9)의 예로서는, 입력된 PWM 신호의 펄스 폭을 카운터에 의해 카운 트해, 카운트 값을 디지털 값으로서 출력하는 것이 있다(예를 들면, Yasoji Suzuki와 Masahiro Yoshida저, "펄스/디지털 회로 입문", Nikkan Kogyo Shimbun, 2001년 7월 26일 발행, p. 225~232). 그 이외에도, 펄스 폭/디지털 변환 블록(9)의 기능을 실현하는 구성은 다수 있다. 그러나, 펄스 폭/디지털 변환 블록(9) 자체의 구성 및 처리 순서는 본 발명이 요지는 아니기 때문에, 그것의 상세한 설명을 생략한다.
(제2 실시예)
제2 실시예에서는, 적화 연산 회로를 아날로그 회로를 이용해 실현한다. 본 실시예에 따른 적화 연산 회로의 블록 구성은, 제1 실시예와 같이, 도 1에 도시되어 있다.
도 6은, 연산 블록(1)을 아날로그 회로로서 구성한 아날로그 연산 회로를 나타낸다. 연산 블록(2~6)도 동일한 구성을 가질 수 있다. 도 6에 나타낸 바와 같이, 본 실시예의 아날로그 연산 회로는, 아날로그 곱셈기(17)와, 커패시터(18)와, 출력 버퍼(19)를 포함한다.
도 7은, 아날로그 메모리를 포함하는 입력값 보유 블록(2)을 나타낸다. 본 실시예에서, 아날로그 메모리가 커패시터(20)와 출력 버퍼(21)를 포함하는 것으로 간주한다. 그러나, 같은 기능을 갖는 것이면 그 외의 회로를 이용해도 상관없다.
도 8은, WTA(Winner-Take-All) 회로(22)를 포함하는 소팅 블록(4)을 나타낸다.
이상 설명한 도면을 참조해, 본 실시예에 따른 적화 연산 방법의 처리 과정을 설명한다.
우선, 도 1에 나타낸 장치 전체의 처리에 관해서는, 제1 실시예와 같기 때문에 그것의 설명을 생략한다. 이하에서는 제1 실시예와 다른 입력 보유 블록(2), 하중 보유 블록(3), 소팅 블록(4) 및 연산부(1) 내의 연산 블록의 각각의 처리에 관해서 설명한다. 본 실시예에 있어서는, 제1 실시예에서 설명한 펄스 폭/디지털 변환 블록을 갖는 경우는 제외한다.
본 실시예의 입력 보유 블록(2)은, 도 7에 나타낸 바와 같이, 커패시터(20)와 출력 버퍼(21)를 포함한다. 피연산 값 Xi의 값을 커패시터(20)에 축적된 전압 값으로서 보유한다.
입력 보유 블록(2)에 보유된 피연산 값 Xi는, 소팅 블록(4)에 의해 내림차순으로 스위치 블록(5)으로 입력된다. 소팅 블록(4)은, 본 실시예에서, 도 8에 나타낸 바와 같이 WTA 회로(22)를 이용해 실현된다. WTA 회로란, Winner-Take-All 회로의 약칭이며, 최대값을 갖는 입력값을 출력하는 기능을 갖는다(혹은, 최소값을 출력해도 된다.). WTA 회로(22)에 피연산 값 Xi를 입력했을 경우, 최대의 값을 갖는 피연산 값 Xi가 출력된다. 다음에, 이전에 출력된 피연산 값 Xi를 제외하고 피연산 값 Xi군을 입력하면, 2번째로 큰 값을 갖는 피연산 값 Xi가 출력된다. 이상의 동작을 반복함으로써, 피연산 값이 내림차순으로 출력되고, 소팅 동작이 실행된다.
본 실시예에 있어서는, 값이 동일한 피연산 값 Xi가 있는 경우에는, 그들이 임의의 순서로 출력된다. 대신, 사전에 적당한 순서를 설정해 두어도 좋다.
이때, 각 피연산 값의 라벨도 동시에 보유된다. 그 보유 회로로서는 디지털 메모리를 이용해도 좋고, 같은 기능을 실현하는 아날로그 메모리를 사용해도 좋다.
또, 본 실시예에서는 소팅 블록(4)으로서 아날로그 회로를 사용한다. 그러나, 제1 실시예에서와 같이, 연상 메모리를 사용해도 된다. 이 경우, 연상 메모리로부터의 출력은, D/A 변환된 후에 연산부(1)에 입력된다. D/A 변환을 수행하는 D/A 변환 회로로서는, 디지털 값을 아날로그 값으로 변환하는 기능을 갖는 것이면, 어떠한 구성의 회로를 이용해도 상관없다.
상술한 소팅 블록(4)의 구체적인 회로 구성은, 본 발명의 요지는 아니다. 따라서, 같은 기능을 실현하는 것이면, 그 외의 회로 구성을 이용해도 상관없다.
다음에는, 하중 보유 블록(3)에 대해 설명한다. 하중 보유 블록(3)은, 도 9에 나타낸 것처럼, 입력 보유 블록(2)과 같이, 커패시터(37)와 출력 버퍼(38)를 포함한다. 하중 보유 블록(3)은 피연산 값 Wi의 값을 커패시터(37)에 축적된 전압 값으로서 보유한다.
하중 보유 블록(3)에 있어서는, 디지털 메모리(예를 들면 SRAM)에 보유된 피연산 값 Wi의 값을 D/A 변환하고 나서, 도 9에 나타낸 바와 같이 하중 보유 블록(3)에 아날로그 값으로서 보유한다.
이 경우에, D/A 변환 회로로서는, 본 실시예에서 연상 메모리를 사용하는 경우의 전술한 D/A 변환 회로와 같이, 디지털 값을 아날로그 값으로 변환하는 기능을 갖는 것이면, 어떠한 구성의 회로도 이용할 수가 있다.
다음에, 피연산 값 Xi와 피연산 값 Wi가 아날로그 전압 값으로서 입력되는 소정의 연산 블록에서 실행되는 연산 처리에 대해 설명한다. 본 실시예에 따른 각 연산 블록은, 도 6에 나타낸 바와 같이, 아날로그 곱셈기(17)와, 커패시터(18)와, 출력 버퍼(19)를 포함하는 아날로그 연산 회로로서 형성된다.
피연산 값 Xi와 피연산 값 Wi는 아날로그 전압으로서 아날로그 곱셈기(17)에 입력되고, Xi×Wi가 연산된다. 각 연산 블록에 입력되는 피연산 값 Xi의 값은, 연산마다 변경되지 않은 채로 존재하거나 변경되는 경우가 있다. Xi×Wi의 곱셈 결과는 전하량으로 표현되고 커패시터(18)에 추가되어 축적된다.
본 실시예에서는 아날로그 곱셈기(17)에 의한 곱셈 결과는, 전하량으로서 출력되는 것으로 간주한다. 그러나, 상술한 바와 같은 기능을 실현할 수가 있는 것이면, 곱셈결과, 예를 들면 전압 값을 출력하는 그 외의 어떤 방법이든 이용할 수가 있다.
이상의 처리를 반복함으로써, 복수의 Xi×Wi의 곱셈 결과의 누산값이 커패시터(18)에 보유된다. 소정의 누산이 완료하면, 출력 버퍼(19)를 통해서 누산 값이 출력된다.
디지털 값과 아날로그 값 간에는 차이는 있지만, 피연산 값 Xi에 대응하는 아날로그 전압 값이, 피연산 값 Xi의 라벨에 대응해 스위치 블록을 스위칭함으로써, 소정의 연산 블록에 입력되는 것은 제1 실시예와 같다.
또, 피연산 값 Xi가 입력되지 않는 연산 블록에서는 연산 처리가 수행되지 않은 것도 제1 실시예와 같다.
본 실시예에 있어서는, 피연산 값 Wi에 대응하는 아날로그 전압 값은, 피연산 값 Xi와 같이, 피연산 값 Xi의 라벨에 따라 스위치 블록에 의해 스위칭되고, 라벨에 의해 결정된 소정의 연산 블록에 입력된다. 본 실시예와는 다른 방법으로서, 피연산 값 Wi에 대응하는 아날로그 전압 값이 입력되어야 하는 소정의 연산 블록은, 디지털 값과 아날로그 값 간에 차이는 있지만, 제1 실시예와 같이, 피연산 값 Xi의 라벨에 의존하지 않고 사전에 설정되어도 된다.
상술한 바와 같이, 연산 블록에 아날로그 전압으로서 입력된 피연산 값 Xi는, 소팅 블록(4)에 의해 내림차순으로 입력된다. 같은 값을 갖는 피연산 값 Xi를 연속해서 입력한다. 이 때문에, 피연산 값 Xi가 랜덤하게 입력되는 경우보다 전압 변동이 작아져, 전압 변동에 의해 야기되는 타임 래그(lag) 및 전력 소비를 삭감할 수 있다.
본 실시예에 있어서는, 소팅 블록은 피연산 값 Xi를 내림차순으로 소팅한다. 피연산 값 Xi를 오름차순으로 소팅하는 경우에도, 상기와 같은 효과를 얻을 수 있다.
(제3 실시예)
도 10은 본 실시예에 따른 적화 연산 회로의 블록 구성을 나타낸다.
도 10에 나타낸 구성에서, 소팅 블록(4)의 후단에는, 메모리 회로(43)가 접속되어 있다. 또한, 메모리 회로(43)의 후단에는 램프 생성 회로(44)가 접속되어 있다. 램프 생성 회로(44)의 출력은 스위치 블록(5)에 입력된다. 본 실시예의 메모리 회로(43)는 SRAM를 포함한다. 입력값 보유 블록(2)과 소팅 블록(4)은, 제1 실시예와 같이, 연상 메모리 회로를 포함한다.
도 11은, 연산 블록(1)을 아날로그 회로로서 구성한 아날로그 연산 회로를 나타낸다. 연산 블록(2~6)도 동일한 구성을 가질 수 있다. 도 11에 나타낸 바와 같 이, 본 실시예의 아날로그 연산 회로는, 아날로그 곱셈기(45)와, 커패시터(46)와, 출력 버퍼(47)를 포함한다. 도 12는, 램프 생성 회로(44)의 구성을 나타낸다.
이상 설명한 도면을 참조하여, 본 실시예에 따른 적화 연산 방법의 처리 과정에 대해 설명한다.
상기 연상 메모리 회로는, 피연산 값 Xi의 값과 각각의 피연산 값 Xi이 갖는 라벨을 보유하고 있다. 연상 메모리 회로는 일반적인 기능으로서 내림차순으로 피연산 값 Xi를 검색해서, 그들의 라벨 i을 출력한다.
동시에, 피연산 값 Xi를 내림차순으로 검색할 때의 검색 값에 관해서, 그 검색 값을 1단위씩 줄일 때에만, 펄스 신호의 플래그를 출력한다(본 실시예에 있어서는, 플래그=1을 출력한다.).
본 실시예와는 다른 방법으로서, 피연산 값 Xi를 오름차순으로 검색할 때의 검색 값에 관해서는, 그 검색 값을 1단위씩 증가시킬 때에만, 펄스 신호의 플래그를 출력해도 된다.
도 10에 나타낸 바와 같이, 상기 라벨과 플래그는, 서로 대응해서 검색된 순서로(즉, 내림차순으로) 후단의 SRAM에 입력되어 보유된다. 그 다음, SRAM은, 상기 라벨과 플래그를 보유하는 순서로(즉, 내림차순으로) 출력한다. 라벨은 스위치 블록(5)에 입력된다. 플래그는 램프 생성 회로(44)에 입력된다.
다음에는, 램프 생성 회로(44)에 대해 설명한다. 램프 생성 회로(44)는, 도 12에 나타낸 바와 같이, 소정의 전압 값 Vb에 바이어스된 전압 제어 전류원(48)과, 커패시터(50)와, 스위치(49)와, 버퍼(51)를 포함한다.
상기 플래그가 램프 생성 회로(44)에 입력되어 스위치(49)를 온으로 하면, 전압 제어 전류원(48)으로부터 소정의 전류가 공급되어 커패시터(50)에 축적된다. 상기 플래그는 연상 메모리에서의 검색 값이 1단위씩 줄어들 때에만 1로 설정된다. 이 때문에, 검색 값이 1단위씩 줄어들 때, 스위치(49)가 온으로 된다.
따라서, 램프 생성 회로(44)에서의 노드의 전압 값은 도 12에 나타낸 파형과 같이 변화한다. 특히, 피연산 값 Xi에 내림차순으로 대응하여, 단조롭게 증가하는 전압 값이 생성된다(여기서 "단조롭게"란, 시간에 대해서 일정 값을 나타내는 경우를 의미한다. 이것은 이하의 설명에도 적용된다.).
피연산 값 Xi에 내림차순으로 대응하는 전압 값으로서 단조롭게 증가하는 전압 값이 설정된다. 그러나, 후술하는 아날로그 곱셈기에 의존해서, 단조롭게 감소하는 전압 값이 설정되어도 된다.
이 경우는, 램프 생성 회로(44)에서, 초기 상태에서 소정의 전하를 축적하는 커패시터(50)로부터, 전압 제어 전류원에 의해 전하를 제거함으로써 실현될 수가 있다.
그 다음, 램프 생성 회로(44)에 의해 생성된 단조롭게 증가하는 전압 값은, 스위치 블록(5)에 입력된다. 스위치 블록(5)은, 입력된 라벨에 대응해 스위칭을 수행하고, 라벨에 의해 결정된 소정의 연산 블록에, 단조롭게 증가하는 전압 값을 입력한다.
연산 블록(1)에 관해서 생각한다. 연산 블록(1)이 라벨에 의해 결정된 소정의 연산 블록과 일치하는 경우에만, 단조롭게 증가하는 전압 값이 입력된다. 메모 리 회로(43)로부터 출력된 라벨이 변화하고, 연산 블록(1)이 라벨에 의해 결정된 소정의 연산 블록과 일치하지 않는 경우에는, 스위칭이 수행되어, 단조롭게 증가하는 전압 값이 입력되지 않게 된다.
즉, 연산 블록(1)에서는, 라벨의 출력 타이밍에 따라 단조롭게 증가하는 전압 값을 샘플링한다. 이것은 라벨에 의한 스위칭 타이밍에서 피연산 값 Xi에 대응하는 적당한 전압 값이 입력되는 것을 의미한다.
피연산 값 Xi가 입력되지 않는 연산 블록(1)에서는 연산 처리가 수행되지 않는다는 것은 제2 실시예와 같다. 또, 하중 보유 블록(3)에서의 처리 단계는, 제2 실시예와 같기 때문에, 그것의 설명을 생략한다.
그 다음, 아날로그 연산 회로에서는, 도 11에 나타낸 바와 같이, 아날로그 곱셈기(45)에 입력된 피연산 값 Xi와 피연산 값 Wi을 곱한다. 커패시터(46)에는 연산 결과에 대응하는 전하가 축적된다. 아날로그 연산 회로에서의 처리는 제2 실시예와 같기 때문에, 그것의 설명을 생략한다.
본 실시예에 있어서는, 피연산 값 Xi가 입력값 보유 블록(2)에 PWM 신호로서 입력되어도 된다. 이 경우, PWM 신호의 입력 처리 단계는 제1 실시예와 같기 때문에, 그것의 설명을 생략한다.
(제4 실시예)
본 실시예에서는, 아날로그 연산 회로로서 제2 및 제3 실시예와는 다른 회로 구성을 이용하는 회로에 관해서 설명한다. 아날로그 연산 회로 이외의 구성은, 제2 및 제3 실시예와 같다.
도 13은 본 실시예에서 설명하는 아날로그 연산 회로를 나타낸다. 도 13에 나타낸 바와 같이, 본 실시예의 아날로그 연산 회로는, 전압 제어 전류원(52)과, 전압 제어 저항 소자(53)와, 커패시터(55)를 포함한다. 피연산 값 Xi로서 시간에 관해서 단조롭게 증가하는 전압 값이 제어 전압으로서 전압 제어 전류원(52)에 입력된다.
여기서 입력되는, 시간에 관해서 단조롭게 증가하는 전압 값은, 도 15에 나타낸 바와 같이, 피연산 값 Xi에 대응하는 전압 값을 WTA 회로(56)에 의해 내림차순으로 연속한 아날로그 전압 값으로서 출력함으로써 생성된다.
시간에 관해서 단조롭게 증가하는 전압 값을 제3 실시예와 같이, 메모리 회로와 램프 생성 회로를 이용해 생성해도 상관없다. 이 경우는, 입력값 보유 블록 및 소팅 블록은, 제3 실시예와 같이 디지털 회로를 포함한다.
이 경우에, 피연산 값 Xi가 입력값 보유 블록에 PWM 신호로서 입력되어도 상관없다. 이 경우에 PWM 신호의 입력 처리 단계는 제1 실시예와 같기 때문에, 그것의 설명을 생략한다.
그 다음, 도 14에 나타낸 바와 같이, WTA 회로(56)(소팅 블록(4))로부터 출력되며, 시간에 관해서 단조롭게 증가하는 전압 값은, 스위치 블록(5)을 통해서 연산부(100)에 입력된다. 아날로그 연산 회로에서는, 어떤 특정 타이밍에서 단조롭게 증가하는 전압 값을 참조한다. 따라서, 제2 또는 제3 실시예에서 설명한 것과 같이, 피연산 값 Xi에 대응하는 전압 값이, 내림차순으로, 라벨에 대응하는 아날로그 연산 회로의 전압 제어 전류원(52)의 제어 전압으로서 입력된다. 전압 제어 전류 원(52)은, MOS 트랜지스터의 포화 특성을 이용해 구성되어도 되고, 또는 차동형 구조를 가져도 된다.
아날로그 연산 회로의 전압 제어 저항 소자(53)에는, 피연산 값 Wi에 대응하는 아날로그 전압 값을 제어 전압으로서 입력한다. 전압 제어 저항 소자(53)는, 입력된 아날로그 전압 값에 따라 소정의 저항값 R를 나타낸다. 전압 제어 저항 소자(53)는, MOS 트랜지스터의 선형 특성을 이용해 구성되어도 되고, 또는 차동형 구조를 가져도 된다.
그 다음, 소정의 연산 타이밍에서 참조된 피연산 값 Xi에 대응하는 아날로그 전압 값에 의해 결정된 전압 제어 전류원(52)의 전류 I가, 피연산 값 Wi에 대응하는 아날로그 전압 값에 의해 결정된 전압 제어 저항 소자(53)(이때의 저항값을 R로 한다)에 흐른다. 그러면, Xi×Wi의 연산 결과가, 도 13에 나타낸 노드에서, I×R에 대응하는 전압 값으로서 관찰된다. 노드의 전압은, 한층 더 제어 전압으로서 전압 제어 전류원(54)에 입력된다. 따라서, 커패시터에는 I×R에 의해 결정된 전류 i가 흐른다.
전압 제어 전류원(54)은, MOS 트랜지스터의 포화 특성을 이용해 구성되어도 되고, 또는 차동형 구조를 가져도 된다. 스위치 블록(5)의 스위칭 간격을 일정 시간으로 설정하면, I×R×(스위칭 간격)에 대응하는 전하를 커패시터(55)에 축적할 수가 있다.
이상의 연산 동작을 반복하면, 누산 결과가 전하량으로서 커패시터(55)에 보유된다.
이와 같이, 도 14에 나타낸 적화 연산 회로에 의해 제2 및 제3 실시예와 같은 연산을 수행할 수가 있다. 본 실시예에서, 피연산 값 Xi에 대응하는 아날로그 전압은 시간에 관해서 단조롭게 증가하는 전압 값이다. 연산 목적에 따라, 시간에 관해서 단조롭게 감소하는 전압 값을 사용해도 된다.
피연산 값 Xi에 대응하는 아날로그 전압 값이, 피연산 값 Xi의 라벨에 대응해 스위치 블록(5)을 스위칭함으로써, 소정의 연산 블록에 입력되는 것은 제2 및 제3 실시예와 같다. 또, 피연산 값 Xi가 입력되지 않는 연산 블록(1)에서는 연산 처리가 실행되지 않은 것도 제2 및 제3 실시예와 같다.
본 실시예에 있어서는, 피연산 값 Wi에 대응하는 아날로그 전압 값은, 피연산 값 Xi와 같이, 피연산 값 Xi의 라벨에 따라 스위치 블록(5)에 의해 스위칭되어, 라벨에 의해 결정되는 소정의 연산 블록에 입력된다. 본 실시예와는 다른 방법으로서, 피연산 값 Wi에 대응하는 아날로그 전압 값이 입력되어야 하는 소정의 연산 블록이, 피연산 값 Xi의 라벨에 의존하지 않고 사전에 설정되는 것도 제2 및 제3 실시예와 같다.
(제5 실시예)
도 16은 본 실시예의 구성을 나타낸다. 본 실시예는, 제3 또는 제4 실시예에서 설명한, 시간에 관해서 단조롭게 증가하는 아날로그 전압 값을 계수 Ki배 함으로써, 피연산 값 Xi에 소정의 계수 Ki를 곱한 연산을 실행하는 것이 가능한 점이, 제3 또는 제4 실시예와 다르다.
본 실시예에 있어서는, 제3 또는 제4 실시예와 다른 점에 대해서만 설명한 다. 그 외에 관해서는 제3 또는 제4 실시예와 같으므로 그것의 설명을 생략한다.
도 16에 나타낸 바와 같이, 단조롭게 증가하는 아날로그 전압 값이 계수 Ki배 되는 것은, 소정의 연산 타이밍에서 참조된 전압 값(즉, 피연산 값 Xi)에, 소정의 계수 Ki를 곱한 것을 의미한다. 따라서, 연산부(1)에 입력되는, 단조롭게 증가하는 아날로그 전압 값을, 계수 Ki배 하는 경우, Ki×Xi×Wi의 3항의 곱셈을 연산하는 것이 가능하다.
도 16에 나타낸 바와 같이, 각각 다른 값을 갖는 계수 Ki이 곱해진 아날로그 전압 값을 병렬로 입력하는 경우, 각각의 연산 블록에서 서로 다른 3항의 곱셈을 병렬로 연산하는 것이 가능하다.
각각의 단조롭게 증가하는 아날로그 전압 값에 대응하는 계수 Ki를 변화시키기 위해서, 소팅 블록(4)(WTA 회로 또는 램프 생성 회로)의 후단에 계수 Ki에 대응하는 전압 증폭기(57)를 배치한다. 도 16에 나타낸 예에서는, WTA 회로의 후단에는 전압 증폭기(57)가 배치되어 있다. 램프 생성 회로의 후단에 전압 증폭기(57)를 배치한 경우에는, 도 10에서 램프 생성 회로(44)로부터 출력되는 단조롭게 증가하는 아날로그 전압 값에 대해서, 도 10에 도시한 바와 같이, 계수 Ki에 대응하는 전압 증폭기(57)가 배치되어 있다.
본 실시예에서는, 단조롭게 증가하는 아날로그 전압 값을 이용한다. 단조롭게 감소하는 아날로그 전압 값을 이용한 경우에도 상술한 것처럼 같은 연산이 실행되는 것이 가능하다. 피연산 값 Xi×계수 Ki에 대응하는 단조롭게 증가하는 아날로그 전압 값이, 피연산 값 Xi의 라벨에 대응해 스위치 블록(5)을 스위칭함으로써, 소정의 연산 블록에 입력되는 것은 제3 및 제4 실시예와 같다.
본 실시예에 있어서는, 피연산 값 Wi에 대응하는 아날로그 전압 값은, 피연산 값 Xi와 같이, 피연산 값 Xi의 라벨에 따라 스위치 블록(5)에 의해 스위칭되어, 라벨에 의해 결정되는 소정의 연산 블록에 입력된다. 본 실시예와는 다른 방법으로서, 피연산 값 Wi에 대응하는 아날로그 전압 값이 입력되어야 하는 소정의 연산 블록이, 피연산 값 Xi의 라벨에 의존하지 않고 사전에 설정될 수도 있는 것도, 제3 및 제4 실시예와 같다.
본 실시예에서, 피연산 값 Xi가 입력값 보유 블록(2)에 PWM 신호로서 입력되는 경우는, 제3 및 제4 실시예와 같다.
(제6 실시예)
제6 실시예를 도 17 및 도 18을 참조해 설명한다. 본 실시예는, 제3 또는 제4 실시예에서 설명한, 시간에 관해서 단조롭게 증가하는 아날로그 전압 값을 계수 Ki배 함으로써, 피연산 값 Xi에 소정의 계수 Ki를 곱하는 연산을 수행하는 것이 가능한 점이, 제3 또는 제4 실시예와 다르다.
본 실시예에서는, 제3 또는 제4 실시예와 다른 점에 대해서만 설명한다. 그 외에 관해서는 제3 또는 제4 실시예와 같으므로 그것의 설명을 생략한다.
도 17을 참조하면, 피연산 값 Xi를 내림차순으로 소팅하기 위해서, 제1 실시예와 같이, 소팅 블록(4)으로서 연상 메모리를 이용하고 있다. 연상 메모리의 후단에는, 피연산 값 Xi에 관한 동치 판정 블록(58)이 접속되어 있다. 동치 판정 블록(58)은, 내부에 레지스터 등의 메모리 기능을 내장하고 있고, 연상 메모리로부터 이전에 출력된 피연산 값 Xi의 값을 기억하고 있다.
연상 메모리로부터 출력된 다음의 피연산 값 Xi'이, 동치 판정 블록(58)에 입력되면, 동치 판정 블록(58)은 이때 입력된 피연산 값 Xi'와 이전에 입력된 피연산 값 Xi를 비교한다. 양자의 피연산 값이 다른 경우에는, (후술하는)램프 생성 회로(60)의 스위치를 온으로 하는 검출 신호를 출력한다. 양자의 피연산 값이 서로 동일한 경우에는, 검출 신호를 출력하지 않는다. 따라서, 램프 생성 회로(60)의 스위치는 오프인 채로 존재한다.
연산부(1)에서의 연산 처리는, 제3 또는 제4 실시예와 같은 방식으로 수행된다. 연산 블록(1)에 입력되는, 시간에 관해서 단조롭게 증가하는 전압 값은, 도 18에 나타낸 램프 생성 회로에 의해 생성된다.
램프 생성 회로(60)에서는, 계수 Ki에 대응하는 전압 값을 제어 전압으로서 전압 제어 전류원(61)에 공급한다. 따라서, 소정의 전류가 흘러 커패시터(50)에 전하가 축적된다. 램프 생성 회로(60)의 스위치(49)는 전술한 대로 동치 판정 블록(58)으로부터의 검출 신호에 의해 온으로 된다.
특히, 램프 생성 회로(60)는, 연상 메모리로부터의 출력 값이 이전의 출력 값과 동일한 경우, 스위치(49)를 오프시켜 커패시터(50)에 전하를 축적하는 동작을 정지한다. 연상 메모리로부터의 출력 값이 이전의 출력 값과 다른 경우만, 스위치(49)가 온으로 되어, 노드의 전압 값이 도 18에 나타낸 바와 같이 변화한다.
이때, 계수 Ki에 대응하는 전압 값을 적절하게 설정하면, 제5 실시예에서 설명한 것과 같이, 단조롭게 증가하는 전압 값을 계수 Ki배 할 수가 있다. 이 전압 값을 버퍼(51)를 통해서 아날로그 연산 회로에 입력하면, 제5의 실시예와 같이 Ki×Xi×Wi의 3항의 곱셈을 연산하는 것이 가능해진다. 그 외의 연산 처리 동작은 제3 또는 제4 실시예와 같기 때문에, 그것의 설명을 생략한다.
전압 제어 전류원(61)은, MOS 트랜지스터의 포화 특성을 이용해 구성되어도 되고, 또는 차동형 구조를 가져도 된다. 램프 생성 회로(60)는, 같은 기능을 실현할 수 있으면, 어떠한 다른 회로 구성을 사용해도 상관없다. 본 실시예에서는, 단조롭게 증가하는 아날로그 전압 값을 이용한다. 그러나, 단조롭게 감소하는 아날로그 전압 값을 이용한 경우에도 상술한 것과 같은 연산이 가능하다.
피연산 값 Xi×계수 Ki에 대응하는 단조롭게 증가하는 아날로그 전압 값이, 피연산 값 Xi의 라벨에 대응해 스위치 블록(5)을 스위칭함으로써, 소정의 연산 블록에 입력되는 것은 제3 및 제4 실시예와 같다.
본 실시예에 있어서는, 피연산 값 Wi에 대응하는 아날로그 전압 값은, 피연산 값 Xi와 같이, 피연산 값 Xi의 라벨에 따라 스위치 블록(5)에 의해 스위칭되어, 라벨에 의해 결정되는 소정의 연산 블록에 입력된다. 본 실시예와는 다른 방법으로서, 피연산 값 Wi에 대응하는 아날로그 전압 값이 입력되어야 하는 소정의 연산 블록이, 피연산 값 Xi의 라벨에 의존하지 않고 사전에 설정될 수도 있다는 것도, 제3 및 제4 실시예와 같다. 피연산 값 Xi가 입력값 보유 블록(2)에 PWM 신호로서 입력되는 경우도, 제3 또는 제4 실시예와 같다.
(제7 실시예)
이하, 제7 실시예를 도 19 및 도 20을 참조해 설명한다. 본 실시예는, 램프 생성 회로(62)에, 계수값 보유 블록(59)으로부터의 출력을 입력하는 것을 제외하고는 제3 실시예와 같은 구성을 갖는다. 본 실시예에서, 제3 실시예와 다른 점에 대해서만 설명한다. 그 이외는 제3 실시예와 같으므로, 그것의 설명을 생략한다.
도 19에 나타낸 바와 같이, 계수값 보유 블록(59)은 계수 Ki에 대응하는 전압 값을 램프 생성 회로(62)에 입력한다. 각각의 램프 생성 회로에 있어서는, 도 12와는 달리, 도 20에 나타낸 바와 같이, 계수 Ki에 대응하는 전압 값이 전압 제어 전류원(61)의 게이트에 공급됨으로써, 계수 Ki에 대응한 소정의 전류가 전압 제어 전류원(61)에 흐른다. 즉, 본 실시예는, 전압 제어 전류원(61)의 전류량을 계수값 보유 블록(59) 내에 보유한 계수 Ki에 의해 제어할 수가 있는 점이 제3 실시예와 다르다.
전압 제어 전류원(61)의 전류 값의 변화는, 커패시터(50)에 축적된 단위 시간마다의 전하량의 변화에 대응한다. 이것은 시간에 관해서 노드의 전압 값의 변화의 기울기가 변하는 것을 의미한다. 이것은 제5 또는 제6 실시예에서 설명한 것처럼, 단조롭게 증가하는 전압 값을 계수 Ki배 하는 것에 대응한다. 이 전압을 버퍼(51)를 통해서 아날로그 연산 회로에 입력하면, 제5 또는 제6 실시예와 같이, Ki×Xi×Wi의 3항의 곱셈을 연산하는 것이 가능해진다.
본 실시예에 있어서, 피연산 값 Xi가 입력값 보유 블록(2)에 PWM 신호로서 입력되는 경우에 관해서는, 제3 실시예와 같다.
(제8 실시예)
제8 실시예를 도 21~도 24를 참조해 설명한다.
도 21은 본 실시예에 따른 뉴럴 네트워크 모델을 나타낸다. 도 22a 및 도 22b는 본 실시예의 뉴럴 네트워크에 제1, 제2, 제3 및 제4 실시예에서 설명한 적화 연산 방법을 적용한 경우의 연산 처리 블록의 구성을 나타낸다(도 22a 및 도 22b는 제3 실시예에서 설명한 적화 연산 방법을 적용한 회로를 나타낸다).
도 22a 및 도 22b에 나타낸 바와 같이, 본 실시예에 따른 뉴럴 네트워크의 처리 블록은, 제1, 제2, 제3 및 제4 실시예에서 설명한 적화 연산 방법에 의한 처리 블록을 포함하고 있다.
도 21에 나타낸 바와 같이, 뉴럴 네트워크에 있어서의 뉴런 소자의 모델로서, 일반적으로, 뉴런 소자(63)는, 전단의 복수의 뉴런 소자로부터의 출력값에 시냅스 하중(64)으로 가중치를 가하고, 가중된 값의 총합을 산출해서, 뉴런 소자(63)의 내부 상태 값을 결정한다.
본 실시예에 따른 뉴런 소자 회로는, 뉴런 소자의 모델로서, 제1, 제2, 제3, 혹은 제4 실시예에서 설명한 연산 처리 블록을 이용하고 있다. 특히, 제1, 제2, 제3, 혹은 제4 실시예에서 설명한 피연산 값 Xi가 전단 뉴런 소자로부터의 출력값에 대응하고, 또 피연산 값 Wi가 시냅스 하중값(64)에 대응하여, 뉴런 소자(63)의 내부 상태 값을 결정한다.
그 다음, 도 22a 및 도 22b에 나타낸 바와 같이, 각 연산 블록에 의해 산출된 누산 값은 함수 처리를 실행하는 함수 처리 블록(65)에 입력된다. 함수 처리 블록(65)은, 목적에 따라 비선형 함수 처리 혹은 선형 함수 처리를 실행해도 좋다. 본 실시예에서는, 일례로서, 도 23에 나타낸 시그모이드(sigmoid) 변환을 실행하는 처리 블록을 사용하고 있다.
함수 처리 블록(65)의 실제의 회로 구성은, 디지털 회로의 경우는 룩업 테이블로 실현될 수 있고, 아날로그 회로의 경우는 콤퍼레이터(comparator)로 실현될 수 있다. 함수 처리에 관해서는, 연산부(1)에 의해 산출된 누산 결과에 대해서 처리를 실행하는 것이면, 함수 처리 블록(65)은 다른 부분에 접속되어도 상관없다. 함수 처리 블록(65)에 대해서는, 여러 가지 회로 구성이 제안되어 있다. 그러나, 그들은 본 발명의 요지가 아니기 때문에, 그것의 설명을 생략한다.
그 다음에, 함수 처리 블록(65)에 의해 시그모이드 변환의 결과로서의 값(즉, 다음 층에 있어서의 피연산 값 Xi에 대응)은, 다음 층에 대응하는 입력 보유 블록에 보유된다. 이 경우에, 상기 값(다음 층에 있어서의 피연산 값 Xi에 대응)의 라벨도, 동시에 보유된다.
이상 설명한 연산 처리를 반복함으로써, 도 21에 나타낸 뉴럴 네트워크에 있어서의 연산 처리를 실현하는 것이 가능하게 된다. 이 예에서는, 적화 연산 방법으로서 제1, 제2, 제3 및 제4 실시예에서 설명한 방법을 이용하고 있다. 따라서, 제1, 제2, 제3 및 제4 실시예에서 설명한 효과를 갖는 뉴럴 네트워크 회로를 구성하는 것이 가능해진다.
게다가, 각 뉴런 소자 간(각 층간)의 입출력에 대해서는, 제1, 제2, 제3 및 제4 실시예와 같이, 후단의 뉴런 소자 회로에 피연산 값 Xi를 PWM 신호로서 입력하는 것도 가능하다. 이때, 연산 블록이 아날로그 연산 회로인 경우는, 도 24a 및 도 24b에 나타낸 바와 같이, 커패시터에 축적된 전하량을 콤퍼레이터(66)에 의해 PWM 신호로서 판독하고, 후단의 펄스 폭/디지털 변환 블록(67)에 입력한다.
콤퍼레이터(66)에 의한 PWM 신호 생성 방법은 널리 알려져 있으므로, 그것의 자세한 설명을 생략한다. 참조 전압으로서 램프 전압 파형을 입력한 경우는, 전하량에 대응하는 PWM 신호를 판독할 수가 있다. 참조 전압으로서 비선형인 전압 파형을 입력한 경우는, 전하량에 비선형으로 대응하는 PWM 신호를 판독할 수가 있다. 즉, 콤퍼레이터(66)를 함수 처리 블록으로서 기능시킬 수가 있다. 또, 커패시터에 축적된 전하량을 콤퍼레이터(66)에 의해 전하량에 비례하는 PWM 신호로서 판독하고, 후단의 펄스 폭/디지털 변환 블록(67)에 의해 디지털 값으로 변환한 후에, 룩업 테이블을 이용해 함수 처리를 실행하는 것도 가능하다.
본 실시예에서의 뉴런 소자 수 및 층 수는, 본 발명에 따른 뉴럴 네트워크의 구성을 한정하는 것은 아니다. 필요에 따라서 이들 수를 임의의 수로 설정하는 것이 가능하다.
(제9 실시예)
제9 실시예를 도 25a 및 도 25b를 참조해 설명한다.
본 실시예에 따른 뉴럴 네트워크 모델은, 시냅스 하중 값이, 피연산 값 Wi와 계수 Ki의 곱 Wi×Ki로 표현되는 것을 제외하고, 제8 실시예에서 설명한 뉴럴 네트워크 모델과 같다. 도 25a 및 도 25b는 본 실시예에 따른 뉴럴 네트워크에, 제5, 제6 또는 제7 실시예에서 설명한 적화 연산 방법을 적용한 경우의 연산 처리 블록의 구성을 나타낸다(도 25a 및 도 25b는, 제7 실시예에서 설명한 적화 연산 방법을 적용한 회로를 나타낸다).
본 실시예에서의 뉴런 소자의 모델로서, 뉴런 소자는, 전단의 복수의 뉴런 소자로부터의 출력값에 Wi×Ki로 표현된 시냅스 하중으로 가중치를 가해 가중된 값의 총합을 산출해서, 뉴런 소자의 내부 상태 값을 결정한다. 본 실시예에 따른 뉴런 소자 회로는, 뉴런 소자의 모델로서, 제5, 제6 또는 제7 실시예에서 설명한 연산 처리 블록을 이용하고 있다. 특히, 제5, 제6 또는 제7 실시예에서 설명한 피연산 값 Xi가 전단의 뉴런 소자로부터의 출력값에 대응하고, 또, 피연산 값 Wi와 계수 Ki의 곱이 시냅스 하중값에 대응하여, 뉴런 소자의 내부 상태 값을 결정한다.
계속해서 실행되는 함수 처리, 및 이 함수 처리 후의 연산 값의 입력/보유에 관해서는 제8 실시예와 같기 때문에, 그것의 설명을 생략한다. 각 뉴런 소자 간(각 층간)의 입출력에 대해, 후단의 뉴런 소자 회로에 피연산 값 Xi를 PWM 신호로서 입력하는 것에 관해서도 제8 실시예와 같기 때문에, 그것의 설명을 생략한다.
이 실시예에서는, 적화 연산 방법으로서 제5, 제6 또는 제7 실시예에서 설명한 방법을 이용하고 있다. 따라서, 제5, 제6 또는 제7 실시예에서 설명한 효과를 갖는 뉴럴 네트워크 회로를 구성하는 것이 가능해진다. 본 실시예에서의 뉴런 소자 수 및 층 수는, 본 발명에 따른 뉴럴 네트워크의 구성을 한정하는 것은 아니다. 필요에 따라서 이들 수를 임의의 수로 설정하는 것이 가능하다.
(제10 실시예)
뉴럴 네트워크의 연산 처리는, 일반적으로 도 21에 나타낸 모델로 설명될 수가 있다. 실제의 연산에 있어서는, 전단 뉴런의 출력값으로부터 뉴런 소자에 입력되는 출력값 중, 소정값 이상을 갖는 출력값만 연산 처리를 실행해 내부 상태를 결 정해도, 최종적인 뉴럴 네트워크의 연산 능력이 거의 변함없는 경우가 많다. 그 경우, 상기 소정값보다 작은 값에 대한 연산 처리를 생략하는 경우, 회로서 형성된 뉴럴 네트워크는 소비 전력이나 연산 속도의 관점에서 유리하다.
본 실시예에서는, 제8 및 제9 실시예에서 뉴럴 네트워크에 적용한 제1~제7 실시예에 관해서, 피연산 값 Xi를 소팅 블록(4)에 의해 내림차순으로 소팅하고, 소정값보다 작은 피연산 값 Xi에 관한 연산을 생략하는 연산 처리 방법을 설명한다.
도 26은, 제1~제7 실시예에서 설명한 연산 처리 구성을 나타내는 도 1, 도 5, 도 10, 도 14, 도 16, 도 17, 도 19, 도 22a, 도 22b, 도 24a, 도 24b, 도 25a 및 도 25b에서, 본 실시예의 기능을 실현하기 위해서, 소팅 블록(4)에 소정값 보유 메모리(71)가 추가되어 있는 부분만을 도시한 것이다. 따라서, 도 26에 도시한 부분 이외는, 도 1, 도 5, 도 10, 도 14, 도 16, 도 17, 도 19, 도 22a, 도 22b, 도 24a, 도 24b, 도 25a 및 도 25b에 도시한 구성과 같다.
특히, 소팅 블록(4)에, 소정값 보유 메모리(71)로부터 소정값에 관한 데이터가 입력된다. 피연산 값 Xi에 관한 소팅 처리는 소정값에 도달한 시점에서 중지된다. 소정값보다 작은 피연산 값 Xi에 관한 적화 연산의 생략은, 소팅 블록(4)으로서 연상 메모리를 이용하는 경우에, 연상 메모리에서의 내용 검색 시에 검색 값을 차례로 작게 할 때, 이 검색 값이 소정값 보유 메모리(71)로부터 입력된 소정값에 도달한 시점에서 처리를 중지함으로써 실현된다. 또, 이러한 생략은, 소팅 블록(4)으로서 WTA 회로를 이용하는 경우, WTA 회로에 의한 소팅 시에, 참조 전압 값이 소정값 보유 메모리(71)로부터 입력된 소정값에 도달했을 시점에서 처리를 중지함으 로써 실현된다.
본 실시예에 있어서는, 소정값보다 작은 값을 갖는 피연산 값 Xi에 관한 적화 연산을 생략하는 회로로서 상기 2가지의 예를 들었다. 그러나, 상술한 것과 같은 효과를 갖는 것이면, 어떤 다른 회로 및 방법을 이용해도 좋다.
이상 설명한 것처럼, 소정값보다 작은 값을 갖는 피연산 값 Xi에 관한 적화 연산을 생략하는 경우, 실제의 처리 블록에 있어서 전력 소비가 감소할 수 있고, 동작 속도가 증가할 수 있다.
(제11 실시예)
제10 실시예와 같이, 전단의 뉴런으로부터 뉴런 소자로 입력되는, 소정값보다 작은 출력값에 대한 연산 처리를 생략하는 대신에, 그 출력값을 일정값으로서 간주하여 연산을 행하는 경우, 뉴런 네트워크의 연산 처리 능력이 증가하는 경우가 있다. 본 실시예에서는, 제10 실시예에서 피연산 값 Xi를 소팅 블록(4)에 의해 내림차순으로 소팅하고, 소정값보다 작은 피연산 값 Xi을 일정값으로서 간주하는 연산 처리 방법에 대해서 설명할 것이다.
도 27에 도시한 구성은, 도 26에 도시한 상술한 소팅 블록(4)에 대하여 일정값 보유 메모리(72)가 더 부가되어 있다는 점에서 제10 실시예에 다르다. 따라서, 도 27에 도시한 부분 이외의 구성은, 제10 실시예에서 설명한 것과 같다.
특히, 소팅 블록(4)에, 소정값 보유 메모리(71)로부터 소정값에 관한 데이터가 입력된다. 피연산 값 Xi에 관한 소팅 처리는 소정값에 도달한 시점에서 중지된다. 게다가, 소팅 블록(4)에, 일정값 보유 메모리(72)로부터 일정값에 관한 데이터 가 입력된다. 이 일정값은 피연산 값 Xi의 값으로서 출력된다.
소정값보다 작은 피연산 값 Xi를 일정값으로서 연산하는 회로는, 제10 실시예에서의 소팅 블록(4)으로서 연상 메모리를 이용하는 경우에, 연상 메모리에서의 내용 검색 시에 검색 값을 차례로 작게 할 때에, 소정값에 도달한 이후의 피연산 값 Xi으로서 일정값 보유 메모리(72)로부터 입력된 일정값을 출력함으로써 실현될 수 있다. 상술한 것과 같은 기능을 실현할 수 있다면 어떤 다른 회로 및 방법을 이용해도 좋다.
그러한 회로는 제10 실시예에서의 소팅 블록(4)으로서 WTA 회로를 이용하는 경우에, WTA 회로에 의한 소팅 시에 참조 전압 값이 소정값에 도달한 이후의 피연산 값 Xi에 대응하는 전압 값으로서 일정값 보유 메모리(72)로부터 입력된 일정값을 출력함으로써 실현될 수 있다. 상술한 것과 같은 기능을 실현할 수 있다면 어떤 다른 회로 및 방법을 이용해도 상관없다.
(제12 실시예)
뉴럴 네트워크의 연산 처리는, 일반적으로 도 21에 나타낸 모델로 설명될 수 있다. 실제의 연산에 있어서는, 전단 뉴런으로부터 뉴런 소자에 입력되는 출력값 중, 값이 큰 것부터 카운트할 때의 소정의 비율에 대응하는 출력값만 연산 처리를 실행해 내부 상태를 결정해도, 최종적인 뉴럴 네트워크의 연산 능력이 거의 변함없는 경우가 많다. 그 경우, 값이 큰 것부터 카운트할 때의 소정의 비율에 대응하는 값 이외의 값에 관한 연산 처리를 생략하면, 회로로서 형성한 뉴럴 네트워크는, 소비 전력이나 연산 속도의 관점에서 유리하다.
본 실시예에서는, 제8 및 제9 실시예에서 뉴럴 네트워크에 적용한 제1~제7 실시예에 대해, 피연산 값 Xi를 소팅 블록(4)에 의해 내림차순으로 소팅하고, 값이 큰 것부터 카운트할 때의 소정의 비율에 대응하는 피연산 값 이외의 피연산 값 Xi에 대한 연산을 생략하는 연산 처리 방법에 대해서 설명할 것이다.
도 28은, 제1~제7 실시예에서 설명한 연산 처리 구성을 나타내는 도 1, 도 5, 도 10, 도 14, 도 16, 도 17, 도 19, 도 22a, 도 22b, 도 24a, 도 24b, 도 25a 및 도 25b에서, 본 실시예의 기능을 실현하기 위해서, 소팅 블록(4)에 소정 수(비율) 보유 메모리(73)가 추가되어 있는 부분만을 나타낸다. 따라서, 그 구성은 도 28에 도시한 부분을 제외하고, 도 1, 도 5, 도 10, 도 14, 도 16, 도 17, 도 19, 도 22a, 도 22b, 도 24a, 도 24b, 도 25a 및 도 25b에 도시한 구성과 같다.
특히, 소팅 블록(4)에, 소정 수(비율) 보유 메모리(73)로부터 소팅 블록(4)으로 소정수(비율)에 관한 데이터가 입력된다. 피연산 값 Xi에 대한 소팅 처리는 소정수(비율)에 도달한 시점에서 중지된다.
값이 큰 것부터 카운트했을 때의 소정수(비율)에 대응하는 피연산 값 이외의 피연산 값 Xi에 관한 적화 연산의 생략은, 소팅 블록(4)으로서 연상 메모리를 이용하는 경우에, 연상 메모리에서의 내용 검색 시에 검색 값을 차례로 작게 할 때에, 출력된 피연산 값 Xi의 수가, 소정수(비율) 보유 메모리(73)로부터 입력된 소정수(비율)에 도달한 시점에서 처리를 중지함으로써 실현된다. 또, 그 생략은, 소팅 블록(4)으로서 WTA 회로를 이용하는 경우에, 참조 전압 값이 소정수(비율)에 도달한 경우의 피연산 값 Xi에 대응하는 전압 값에 도달한 시점에서 처리를 중지함으로써 실현된다.
본 실시예에 있어서는, 값이 큰 것부터 카운트했을 때의 소정수(비율)에 대응하는 피연산 값 이외의 피연산 값 Xi에 관한 적화 연산을 생략하는 회로로서 상기 2가지의 예를 들었다. 그러나, 상기와 같은 효과를 갖는 것이면, 어떤 다른 회로 및 방법을 이용해도 상관없다.
이상 설명한 것처럼, 값이 큰 것부터 카운트했을 때의 소정수(비율)에 대응하는 피연산 값 이외의 피연산 값 Xi에 관한 적화 연산을 생략하는 경우, 실제의 처리 블록에서는 소비 전력이 감소할 수 있고, 동작 속도가 증가할 수 있다.
(제13 실시예)
제12 실시예와 같이, 전단 뉴런으로부터 뉴런 소자에 입력되는 출력값 중, 값이 큰 것부터 카운트했을 때의 소정의 비율에 대응하는 출력값 이외의 출력값에 관한 연산 처리를 생략하는 대신에, 그 출력값을 일정값으로서 간주해서 연산을 실행하는 경우, 뉴럴 네트워크의 연산 처리 능력이 증가하는 경우가 있다.
본 실시예에서는 제12 실시예에서 피연산 값 Xi를 소팅 블록(4)에 의해 내림차순으로 소팅하고, 값이 큰 것부터 카운트했을 때의 소정의 비율에 대응하는 피연산 값 이외의 피연산 값 Xi을 일정값으로서 간주하는 연산 처리 방법에 대해서 설명할 것이다.
도 29에 도시한 구성은, 도 28에 도시된 상술한 소팅 블록(4)에 대하여, 일정값 보유 메모리(74)에 더 추가되어 있다는 점에서 제12 실시예와 다르다. 따라서, 도 29에 도시한 부분 이외의 구성은, 제12 실시예에서 설명한 것과 같다.
특히, 소정수(비율) 보유 메모리(73)로부터 소팅 블록(4)으로 소정수(비율)에 관한 데이터가 입력된다. 피연산 값 Xi에 관한 소팅 처리는 소정수(비율)에 도달한 시점에서 중지된다. 게다가, 일정값 보유 메모리(74)로부터 소팅 블록(4)으로, 일정값에 관한 데이터가 입력된다. 피연산 값 Xi의 값으로서 상기 일정값이 출력된다.
값이 큰 것부터 카운트했을 때의 소정의 비율에 대응하는 피연산 값 이외의 피연산 값 Xi를 일정값으로서 연산하는 방법은, 소팅 블록(4)으로서 연상 메모리를 이용하는 경우에, 연상 메모리에서의 내용 검색 시에 검색 값을 차례로 작게 할 때에, 출력된 피연산 값 Xi의 수가, 소정수(비율) 보유 메모리(73)로부터 입력된 소정수(비율)에 도달한 이후의 피연산 값 Xi을 일정값 보유 메모리(74)로부터 입력된 일정값으로서 출력함으로써 실현될 수 있다. 상술한 것과 같은 기능을 실현할 수 있다면 어떤 다른 회로 및 방법을 이용해도 상관없다.
이 회로는, 소팅 블록(4)으로서 WTA 회로를 이용하는 경우에, WTA 회로에 의한 소팅 시에, 참조 전압 값이 소정수(비율) 보유 메모리(73)로부터 입력된 소정수(비율)에 도달한 경우의 피연산 값 Xi에 대응하는 전압 값에 도달한 이후의 피연산 값 Xi에 대응하는 전압 값을 일정값 보유 메모리(74)로부터 입력된 일정값으로서 출력함으로써 실현될 수 있다. 상기와 같은 기능을 실현할 수 있다면 어떤 다른 회로 및 방법을 이용해도 상관없다.
(제14 실시예)
도 30a 및 도 30b는 제14 실시예에서의 화상 처리를 실행하는 적화 연산 방 법의 예를 나타낸다. 도 30a 및 도 30b에 나타낸 바와 같이, 이 적화 연산 방법은, 제8~제13 실시예에서 설명한 뉴럴 네트워크 회로를 포함하는 것을 특징으로 하고 있다. 또한, 도 30a 및 도 30b는, 계층 구조의 제1 단만을 나타내고, 그 이후의 층을 도시하지 않는다. 여기서 입력되는 신호는 화상 신호이다. 특히, 본 실시예에 따른 적화 연산 방법의 목적은, 뉴럴 네트워크 회로에 의해 입력된 화상 신호에 대해서 소정의 연산을 수행함으로써, 소망한 화상 처리(예를 들면, 패턴 검출 및 패턴 인식)를 수행하는 것이다.
실제로 실현되는 화상 처리의 내용은, 뉴럴 네트워크 회로의 피연산 값 Wi 및 계수값 Ki을 적절하게 조정함으로써, 소망한 처리 내용(예를 들면, 패턴 검출 및 패턴 인식)이 실현되도록 설정 가능하다. 그 자세한 조정 방법은, 본 발명의 요지가 아니므로, 그것의 설명을 생략한다.
본 실시예에 있어서는, 촬상 소자(예를 들면, CCD 또는 CMOS 이미지 센서 등)로부터 출력되는 화상 신호는, 제1~제7 실시예에서의 피연산 값 Xi에 대응한다. 따라서, 화상 신호에 대해서 실행되는 연산 처리는, 제1~제13 실시예에서의 피연산 값 Xi에 대해서 실행되는 연산 처리와 같다.
상기 화상 신호는, 아날로그 신호, 디지털 신호 또는 PWM 신호로서 입력된다. 각각의 종류의 신호에 대응하는 연산 처리는, 제1~제13 실시예에서 설명한 피연산 값 Xi의 신호의 종류에 대응하고 있다. 따라서, 그 연산 처리는 각 실시예와 같으므로, 그것의 설명을 생략한다. 도 30a 및 도 30b를 참조하면, 아날로그 신호인 화상 신호를 콤퍼레이터(69)에 의해 PWM 신호로 변환한 후, 펄스 폭/디지털 변 환 블록(70)에 의해 디지털 값으로 변환하고, 뉴럴 네트워크 회로에 입력한다.
촬상 소자로서 CCD 또는 CMOS 이미지 센서를 상정하고 있다. 그 외의 촬상 소자를 이용해도 문제는 없다. 본 실시예에서의 촬상 소자의 수, 뉴런 소자의 수 및 층 수는, 본 발명에 따른 화상 신호 처리 회로의 구성을 한정하는 것은 아니다. 필요에 따라서 이들 수를 임의의 수로 설정하는 것이 가능하다.
도 31은, 상술한 연산 처리 플로우를 나타낸다. 촬상 소자로부터 출력된 화상 신호를 입력하는 단계 S1를 실행한다. 다음에, 입력된 신호를 보유하는 입력값 보유 단계 S2를 실행한다. 그 다음, 보유된 입력값을 내림차순으로 출력하는 소팅 단계 S3을 실행한다. 플래그와 라벨을 메모리에 보유하는 메모리 보유 단계 S4를 실행한다.
램프 생성 단계 S6에서는, 계수값 입력 단계 S5에서 입력된 계수값과 메모리 보유 단계 S4에서 입력된 플래그에 근거해, 시간에 관해서 단조롭게 증가하는 전압 파형(램프 파형)을 생성해, 스위칭 단계 S7에 입력한다. 스위칭 단계 S7에 있어서, 메모리 보유 단계 S4에서 입력된 라벨에 따라, 램프 파형을 적당한 연산 블록에 입력한다.
스위칭 단계 S9에서는, 메모리 보유 단계 S4에서 입력된 라벨에 따라, 하중값 입력 단계 S8에서 입력된 하중값을 적당한 연산 블록에 입력한다. 램프 파형과 하중값이 입력되는 연산 블록에서는, 곱셈/누산 단계 S10를 실행하고, 누산 값을 함수 처리 단계 S11로 출력한다. 함수 처리 단계 S11에서는, 소정의 함수 처리를 실행하고, 출력 값을 후단층으로 입력하는 단계 S12를 실행한다. 후단층측에서는, 이상 설명한 연산 처리 단계를 필요한 회수(층 수) 반복한다.
이상 설명한 것처럼, 뉴럴 네트워크 회로에 의한 연산 처리를 화상 신호에 적용한 경우, 소망한 연산 처리(예를 들면, 패턴 검출 및 패턴 인식 등)를 실현할 수가 있다.
본 발명의 명확히 다른 많은 실시예를 본 발명의 정신 및 범주를 벗어나지 않고 구성함에 따라, 본 발명은 첨부된 청구항들에 한정된 것을 제외하고 특정 실시예에 한정되는 것이 아니라는 것을 이해해야 한다.
우선권 주장
본 출원은 본 명세서에 참고로 통합되어 있는 2003년 10월 16일자로 출원된 일본 특허출원번호 제2003-356625호로부터 우선권을 주장한다.

Claims (17)

  1. 복수의 피연산 값을 내림차순 또는 오름차순으로 출력하는 소팅 회로와,
    상기 소팅회로로부터 출력되는 각 피연산 값에 대응하는 피연산 값을 곱하는 곱셈 회로와,
    상기 곱셈 회로에 의한 곱셈 결과의 누산 총합을 산출하는 누산 총합 회로를 구비하는 것을 특징으로 하는 적화 연산 회로.
  2. 제 1 항에 있어서,
    상기 소팅 회로는, 상기 복수의 피연산 값 중, 소정값 이상의 피연산 값을 출력하는 것을 특징으로 하는 적화 연산 회로.
  3. 제 1 항에 있어서,
    상기 소팅 회로는, 상기 복수의 피연산 값 중, 소정값 미만의 피연산 값 대신에 일정값을 출력하는 것을 특징으로 하는 적화 연산 회로.
  4. 제 1 항에 있어서,
    상기 소팅 회로는, 상기 복수의 피연산 값 중, 내림차순 또는 오름차순으로 소정의 비율에 대응하는 피연산 값을 출력하는 것을 특징으로 하는 적화 연산 회로.
  5. 제 1 항에 있어서,
    상기 소팅 회로는, 상기 복수의 피연산 값 중, 내림차순 또는 오름차순으로 소정의 비율에 대응하는 피연산 값 이외의 피연산 값 대신에 일정값을 출력하는 것을 특징으로 하는 적화 연산 회로.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 곱셈 회로 및 상기 누산 총합 회로를 각각 포함하는 복수의 연산 블록을 더 구비하는 것을 특징으로 하는 적화 연산 회로.
  7. 제 6 항에 있어서,
    상기 복수의 연산 블록은 병렬로 연산을 실행하는 것을 특징으로 하는 적화 연산 회로.
  8. 제 6 항 또는 제 7 항에 있어서,
    상기 복수의 피연산 값의 각각은 라벨을 포함하고, 각 피연산 값을 라벨에 대응하는 연산 블록에서 곱하는 것을 특징으로 하는 적화 연산 회로.
  9. 제 8 항에 있어서,
    각 피연산 값을 상기 라벨에 대응하는 연산 블록에 입력하는 경로를 바꾸는 스위치 회로를 더 구비하는 것을 특징으로 하는 적화 연산 회로.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 곱셈 회로는, 각 피연산 값에 각각의 하중값을 곱하는 가중 연산을 실행하는 것을 특징으로 하는 적화 연산 회로.
  11. 제1 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 복수의 피연산 값은 디지털 신호이며,
    상기 소팅 회로는 연상 메모리를 이용해 상기 복수의 피연산 값을 내림차순 또는 오름차순으로 출력하는 것을 특징으로 하는 적화 연산 회로.
  12. 제 1 항 내지 제11 항 중 어느 한 항에 있어서,
    상기 소팅 회로로부터의 출력에 따라, 시간에 대해서 단조롭게 증가 또는 감소하는 전압 신호를 상기 곱셈 회로에 출력하는 신호 출력 회로를 더 구비하는 것을 특징으로 하는 적화 연산 회로.
  13. 제 12 항에 있어서,
    상기 신호 출력 회로는 상기 전압 신호에 소정 계수를 곱하는 수단을 구비하는 것을 특징으로 하는 적화 연산 회로.
  14. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 복수의 피연산 값은 아날로그 신호이며,
    상기 소팅 회로는 Winner-Take-All 회로를 이용해 상기 복수의 피연산 값을 내림차순 또는 오름차순으로 출력하는 것을 특징으로 하는 적화 연산 회로.
  15. 제 1 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 곱셈 회로는, 피연산 값에 대응하는 전압 값을, 전압 제어 전류원 및 전압 제어 저항 소자의 제어 전압으로서 수신하고, 곱셈 결과를 전압 값으로서 출력하는 것을 특징으로 하는 적화 연산 회로.
  16. 복수 단의 뉴런 소자를 갖는 뉴럴 네트워크로서,
    각 뉴런 소자가 제1항 내지 제14중 어느 한 항에 기재된 적화 연산 회로를 포함하고,
    상기 적화 연산 회로가, 전단의 뉴런 소자로부터의 출력 값을 상기 복수의 피연산 값으로서 수신하며,
    상기 곱셈 회로에 의해 각 피연산 값에, 대응하는 피연산 값으로서 시냅스 하중을 곱하고,
    누산 총합으로서 내부 상태 값을 산출하는 것을 특징으로 하는 뉴럴 네트워크.
  17. (a) 복수의 피연산 값을 내림차순 또는 오름차순으로 출력하는 단계와,
    (b) 각각의 출력된 피연산 값에, 대응하는 피연산 값을 곱하는 단계와,
    (c) 상기 단계 (b)에서의 곱셈 결과의 누산 총합을 산출하는 단계를 포함하는 것을 특징으로 하는 적화 연산 실행 방법.
KR1020067009482A 2003-10-16 2004-10-14 적화 연산 회로 및 방법 KR100875937B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2003-00356625 2003-10-16
JP2003356625A JP4620943B2 (ja) 2003-10-16 2003-10-16 積和演算回路及びその方法
PCT/JP2004/015554 WO2005038704A2 (en) 2003-10-16 2004-10-14 Product-sum operation circuit and method

Publications (2)

Publication Number Publication Date
KR20060083429A true KR20060083429A (ko) 2006-07-20
KR100875937B1 KR100875937B1 (ko) 2008-12-26

Family

ID=34463218

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067009482A KR100875937B1 (ko) 2003-10-16 2004-10-14 적화 연산 회로 및 방법

Country Status (7)

Country Link
US (1) US7747668B2 (ko)
EP (1) EP1676225B1 (ko)
JP (1) JP4620943B2 (ko)
KR (1) KR100875937B1 (ko)
CN (1) CN1998012B (ko)
AT (1) ATE513275T1 (ko)
WO (1) WO2005038704A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200067664A (ko) * 2018-12-04 2020-06-12 한국과학기술원 기계 학습 연산을 처리하는 아날로그 회로, 이를 포함하는 학습 장치 및 이를 이용한 기계 학습 연산 방법

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7610326B2 (en) * 2002-09-18 2009-10-27 Canon Kabushiki Kaisha Arithmetic circuit for calculating a cumulative value as a result of parallel arithmetic processing
JP4620943B2 (ja) 2003-10-16 2011-01-26 キヤノン株式会社 積和演算回路及びその方法
ATE542176T1 (de) * 2003-10-16 2012-02-15 Canon Kk Betriebsschaltung und betriebssteuerverfahren dafür
JP4579798B2 (ja) * 2005-09-02 2010-11-10 キヤノン株式会社 演算装置
JP5144177B2 (ja) * 2007-08-31 2013-02-13 キヤノン株式会社 情報処理装置
JP5160304B2 (ja) * 2008-05-22 2013-03-13 シャープ株式会社 抵抗変化型可変抵抗素子を備えた積演算装置、及び積和演算装置、これらの装置を各ニューロン素子に備えるニューラルネットワーク、並びに積演算方法
US20130046411A1 (en) * 2011-08-15 2013-02-21 Siemens Corporation Electric Vehicle Load Management
KR102459855B1 (ko) * 2016-06-14 2022-10-27 삼성전자주식회사 심층 신경망용 가속기
JP6556768B2 (ja) * 2017-01-25 2019-08-07 株式会社東芝 積和演算器、ネットワークユニットおよびネットワーク装置
US20190005035A1 (en) * 2017-05-31 2019-01-03 Semiconductor Energy Laboratory Co., Ltd. Information search system, intellectual property information search system, information search method, and intellectual property information search method
CN109583577B (zh) * 2017-09-29 2021-04-23 上海寒武纪信息科技有限公司 运算装置及方法
CN109753268B (zh) * 2017-11-08 2021-02-02 北京思朗科技有限责任公司 多粒度并行运算乘法器
US10777566B2 (en) 2017-11-10 2020-09-15 Macronix International Co., Ltd. 3D array arranged for memory and in-memory sum-of-products operations
US10719296B2 (en) 2018-01-17 2020-07-21 Macronix International Co., Ltd. Sum-of-products accelerator array
US10957392B2 (en) 2018-01-17 2021-03-23 Macronix International Co., Ltd. 2D and 3D sum-of-products array for neuromorphic computing system
US10635398B2 (en) 2018-03-15 2020-04-28 Macronix International Co., Ltd. Voltage sensing type of matrix multiplication method for neuromorphic computing system
JP2020009123A (ja) 2018-07-06 2020-01-16 ソニー株式会社 積和演算装置、積和演算回路及び積和演算方法
US11138497B2 (en) 2018-07-17 2021-10-05 Macronix International Co., Ltd In-memory computing devices for neural networks
US11636325B2 (en) 2018-10-24 2023-04-25 Macronix International Co., Ltd. In-memory data pooling for machine learning
US10672469B1 (en) 2018-11-30 2020-06-02 Macronix International Co., Ltd. In-memory convolution for machine learning
US11562229B2 (en) 2018-11-30 2023-01-24 Macronix International Co., Ltd. Convolution accelerator using in-memory computation
US11934480B2 (en) 2018-12-18 2024-03-19 Macronix International Co., Ltd. NAND block architecture for in-memory multiply-and-accumulate operations
US11119674B2 (en) 2019-02-19 2021-09-14 Macronix International Co., Ltd. Memory devices and methods for operating the same
US10783963B1 (en) 2019-03-08 2020-09-22 Macronix International Co., Ltd. In-memory computation device with inter-page and intra-page data circuits
US11132176B2 (en) 2019-03-20 2021-09-28 Macronix International Co., Ltd. Non-volatile computing method in flash memory
US10910393B2 (en) 2019-04-25 2021-02-02 Macronix International Co., Ltd. 3D NOR memory having vertical source and drain structures
US11573792B2 (en) 2019-09-03 2023-02-07 Samsung Electronics Co., Ltd. Method and computing device with a multiplier-accumulator circuit
TWI761147B (zh) * 2020-04-17 2022-04-11 神盾股份有限公司 乘積和計算電路及其乘積和計算方法
US11737274B2 (en) 2021-02-08 2023-08-22 Macronix International Co., Ltd. Curved channel 3D memory device
TWI783854B (zh) * 2021-03-17 2022-11-11 神盾股份有限公司 乘積和運算裝置
US11916011B2 (en) 2021-04-14 2024-02-27 Macronix International Co., Ltd. 3D virtual ground memory and manufacturing methods for same
US11710519B2 (en) 2021-07-06 2023-07-25 Macronix International Co., Ltd. High density memory with reference memory using grouped cells and corresponding operations

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07113942B2 (ja) * 1989-01-31 1995-12-06 富士通株式会社 ニューロチップによる結合器
EP0468229A3 (en) * 1990-07-27 1994-01-26 Hnc Inc A neural network with expert system functionality
US5058594A (en) * 1990-08-29 1991-10-22 Quantum Medical Systems, Incorporated Direct velocity estimator for ultrasound blood flow imaging
US5465371A (en) * 1991-01-29 1995-11-07 Ricoh Company Ltd. Sorter for sorting data based on a plurality of reference value data
JP2866754B2 (ja) * 1991-03-27 1999-03-08 三菱電機株式会社 演算処理装置
JP3172278B2 (ja) * 1991-09-18 2001-06-04 松下電器産業株式会社 ニューラルネットワーク回路
JP3034372B2 (ja) 1992-01-31 2000-04-17 三菱電機株式会社 ニューロコンピュータ
JPH06332670A (ja) * 1993-05-19 1994-12-02 Nec Corp 加算回路付きソート処理装置
EP0694855B1 (en) * 1994-07-28 2002-05-02 International Business Machines Corporation Search/sort circuit for neural networks
US5907842A (en) * 1995-12-20 1999-05-25 Intel Corporation Method of sorting numbers to obtain maxima/minima values with ordering
US5880981A (en) * 1996-08-12 1999-03-09 Hitachi America, Ltd. Method and apparatus for reducing the power consumption in a programmable digital signal processor
JP3476328B2 (ja) * 1997-02-27 2003-12-10 沖電気工業株式会社 ピーク評価装置およびピーク評価方法
JP2000172674A (ja) * 1998-12-04 2000-06-23 Fujitsu Ltd 逆dct演算装置および逆dct演算方法
US6906850B2 (en) * 2000-12-28 2005-06-14 Texas Instruments Incorporated Capacitively coupled micromirror
JP2003015863A (ja) * 2001-07-03 2003-01-17 Matsushita Electric Ind Co Ltd 演算処理装置、マイクロプロセッサ装置及び無線局装置
US7610326B2 (en) 2002-09-18 2009-10-27 Canon Kabushiki Kaisha Arithmetic circuit for calculating a cumulative value as a result of parallel arithmetic processing
JP4620943B2 (ja) 2003-10-16 2011-01-26 キヤノン株式会社 積和演算回路及びその方法
ATE542176T1 (de) 2003-10-16 2012-02-15 Canon Kk Betriebsschaltung und betriebssteuerverfahren dafür

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200067664A (ko) * 2018-12-04 2020-06-12 한국과학기술원 기계 학습 연산을 처리하는 아날로그 회로, 이를 포함하는 학습 장치 및 이를 이용한 기계 학습 연산 방법

Also Published As

Publication number Publication date
KR100875937B1 (ko) 2008-12-26
JP4620943B2 (ja) 2011-01-26
US20050138100A1 (en) 2005-06-23
CN1998012A (zh) 2007-07-11
ATE513275T1 (de) 2011-07-15
US7747668B2 (en) 2010-06-29
JP2005122465A (ja) 2005-05-12
WO2005038704A3 (en) 2006-08-31
EP1676225B1 (en) 2011-06-15
CN1998012B (zh) 2010-11-10
EP1676225A2 (en) 2006-07-05
WO2005038704A2 (en) 2005-04-28

Similar Documents

Publication Publication Date Title
KR100875937B1 (ko) 적화 연산 회로 및 방법
US7120617B2 (en) Operation circuit and operation control method thereof
Choi et al. A high-precision VLSI winner-take-all circuit for self-organizing neural networks
CN108364064A (zh) 操作神经网络的方法、对应网络、装置、以及计算机程序产品
JPWO2020013069A1 (ja) 積和演算装置、積和演算回路、積和演算システム、及び積和演算方法
JP4579798B2 (ja) 演算装置
US7610326B2 (en) Arithmetic circuit for calculating a cumulative value as a result of parallel arithmetic processing
Cannas et al. Learning of Chua's circuit attractors by locally recurrent neural networks
JP4620944B2 (ja) 積和演算回路及びその方法
JPH0628504A (ja) ニューラル・ネットワーク
JP4073009B2 (ja) 演算回路
Krid et al. Hardware implementation of a pulse mode neural network-based edge detection system
US5999643A (en) Switched-current type of hamming neural network system for pattern recognition
JP2004110421A (ja) 演算回路およびこれを用いたニューラルネットワーク
JP2004157757A (ja) アナログ演算回路
JPH04281584A (ja) 複数の入力信号の重みづけられた複数の加算を行う装置
Bakambekova et al. Generate while sensing-intelligent imaging with memristive pixel-CNN
Versace et al. Adaptive resonance theory design in mixed memristive-fuzzy hardware
Varshavsky et al. Beta-CMOS artificial neuron and implementability limits
Tsokov et al. Emotional Attention for Trained Convolutional Neural Networks
Nagata et al. PWM signal processing architecture for intelligent systems
Sitte et al. An analog-current mode local cluster neural net
Hikawa et al. Multilayer neural network with threshold neurons
El-Bakry et al. Hybrid implementation of neural nets using switched resistor technique
JPH06131482A (ja) アナログニューラルネットワーク回路

Legal Events

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

Payment date: 20121121

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131126

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee