KR102510924B1 - 대규모 병렬 연관된 승산기-누산기 - Google Patents

대규모 병렬 연관된 승산기-누산기 Download PDF

Info

Publication number
KR102510924B1
KR102510924B1 KR1020190153572A KR20190153572A KR102510924B1 KR 102510924 B1 KR102510924 B1 KR 102510924B1 KR 1020190153572 A KR1020190153572 A KR 1020190153572A KR 20190153572 A KR20190153572 A KR 20190153572A KR 102510924 B1 KR102510924 B1 KR 102510924B1
Authority
KR
South Korea
Prior art keywords
bit line
accumulator
memory
multiplier
line processor
Prior art date
Application number
KR1020190153572A
Other languages
English (en)
Other versions
KR20200063077A (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 KR20200063077A publication Critical patent/KR20200063077A/ko
Application granted granted Critical
Publication of KR102510924B1 publication Critical patent/KR102510924B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/12Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
    • 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
    • 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/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/08Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders

Landscapes

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

Abstract

인-메모리 승산기-누산기는 메모리 어레이, 멀티-비트 승산기, 및 멀티-비트 계층 가산기를 포함한다. 메모리 어레이는 다수의 로우 및 칼럼을 가지며, 각 칼럼은 복수의 비트 라인 프로세서로 분할되고, 각 비트 라인 프로세서는 연관된 입력 값의 쌍으로 연산한다. 멀티-비트 승산기는 곱셈 결과를 생성하기 위해 각 비트 라인 프로세서의 연관된 입력 값의 쌍을 곱한다. 멀티-비트 계층 가산기는 비트 라인 프로세서의 각 칼럼의 곱셈 결과를 누산한다.

Description

대규모 병렬 연관된 승산기-누산기{MASSIVELY PARALLEL, ASSOCIATIVE MULTIPLIER-ACCUMULATOR}
본 발명은 일반적으로 승산기-누산기(Multiplier-accumulators)에 관한 것이다.
승산기-누산기(Multiplier-accumulators, MACs)는 상당히 많은 수의 곱셈을 합산하는 일반적인 연산을 처리하는 것으로 통상의 기술자에게 공지되어 있다. 이러한 연산은 신경망에서 일반적인 컨볼루션(convolution)에 대한 것 뿐만 아니라 이미지 처리에서 일반적인 내적(dot product)과 행렬 곱셈의 일부이다.
수학적으로, 연산은 이하와 같다:
Figure 112019121889665-pat00001
방정식 1
여기서, Ai 및 ki는 8, 16, 또는 32 비트 단어이다. 소프트웨어 코드에서, MAC 연산은 i를 통한 루프이다:
Figure 112019121889665-pat00002
방정식 2
여기서, ri는 Aiki의 변화하는 값을 누산한다.
전형적으로, MAC은 중앙 처리 유닛(central processing unit, CPU) 또는 디지털 신호 프로세서(digital signal processor, DSP)에 그 출력을 제공하는 별도의 유닛으로 형성될 수 있으며, 이러한 유닛은 여러 MAC으로부터 출력을 수신할 수 있다.
각각의 MAC은, 조합적인 로직으로 구현될 수 있으며 값 Ai 및 ki를 수신할 수 있는 승산기, 입력 중 하나에서 승산기의 출력(Aiki)을 수신하는 가산기, 가산기의 출력을 저장하는 누산기 레지스터를 포함할 수 있다. 누산기 레지스터의 출력은 가산기가 가산기의 현재 출력을 이전에 추가된 출력에 연속적으로 추가하도록 가산기의 두번째 입력으로 피드백 된다(즉, 방정식 2를 구현함). 각 클럭 사이클에서, 승산기의 출력이 레지스터에 가산된다.
따라서, 본 발명의 바람직한 실시예에 따르면, 비파괴적이고 비휘발성인 메모리 어레이 및 제어기를 포함하는 인-메모리 승산기-가산기가 제공된다. 비파괴적이고 비휘발성인 메모리 어레이는 다수의 로우 및 칼럼을 가지며, 각 칼럼은 복수의 비트 라인 프로세서로 분할된다. 각 비트 라인 프로세서는 연관된 입력 값의 쌍으로 연산한다. 제어기는 적어도 2개의 메모리 어레이의 로우를 한 번에 활성화하여 각 칼럼에서 이하의 연산을 병렬로 수행한다: 각각의 비트 라인 프로세서는 연관된 입력 값의 쌍을 곱하여 곱셈 결과를 생성하고, 비트 라인 프로세서의 각 칼럼의 곱셈 결과를 누산한다.
또한, 본 발명의 바람직한 실시예에 따르면, 각각의 비트 라인 프로세서는 연관된 입력 값의 쌍을 저장하는 데이터 섹션, 중간 결과 영역, 및 그 곱셈 결과를 저장하는 결과 섹션을 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 누산하는 단계는 칼럼 당 2개의 곱셈 결과를 한 번에 가산하기 위해 피라미드 방식으로 결과 섹션의 로우를 활성화시키는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 각각의 칼럼은 처리될 상이한 특징 세트로부터의 특징 값을 저장하고, 선택된 로우의 세트는 연관된 필터의 필터 값을 저장하여서, 각각의 비트 라인 프로세서는 하나의 특징 값 및 그의 연관된 필터 값을 입력 값의 쌍으로 보유한다.
또한, 본 발명의 바람직한 실시예에 따르면, 메모리 어레이는 특징 세트의 적어도 2개의 사본을 그 칼럼에 저장한다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 특징 세트의 각각의 사본에 대해, 상이한 필터 값이 그의 비트 라인 프로세서에 저장되어서, 특징 세트의 각각의 사본이 상이한 필터에 의해 필터링된다.
또한, 본 발명의 바람직한 실시예에 따르면, 메모리 어레이는 적어도 2개의 특징 세트를 그 칼럼에 저장한다.
또한, 본 발명의 바람직한 실시예에 따르면, 각각의 특징 세트는 처리된 이미지의 상이한 블록이고, 여기서 필터 값은 적어도 하나의 이미지 처리 필터의 값이다.
본 발명의 바람직한 실시예에 따르면, 비파괴적이고 비휘발성인 메모리 어레이, 멀티-비트 승산기, 및 멀티-비트 계층 가산기를 포함하는 인-메모리 승산기-누산기가 또한 제공된다. 메모리 어레이는 다수의 로우 및 칼럼을 가지며, 각각의 칼럼은 복수의 비트 라인 프로세서로 분할되고 각각의 비트 라인 프로세서는 그와 연관된 입력 값의 쌍으로 연산한다. 멀티-비트 승산기는 각각의 비트 라인 프로세서를 이용하여 각각의 비트 라인 프로세서에서 연관된 입력 값의 쌍을 곱하여 곱셈 결과를 생성한다. 멀티-비트 계층 가산기는 비트 라인 프로세서의 각각의 칼럼의 곱셈 결과를 누산한다.
본 발명의 바람직한 실시예에 따르면, 인-메모리 승산기-누산기에 대한 방법에 또한 제공된다. 본 방법은 다수의 로우 및 칼럼을 갖는 메모리 어레의 칼럼을 복수의 비트 라인 프로세서로 분할하는 단계 - 각각의 비트 라인 프로세서는 연관된 입력 값의 쌍으로 연산함-; 각각의 칼럼에서 병렬로 이하의 연산을 수행하기 위해 한 번에 메모리 어레이의 적어도 2개의 로우를 활성화시키는 단계 - 각각의 비트 라인 프로세서는 연관된 입력 값의 쌍을 곱하여 곱셈 결과를 생성함 -; 및 비트 라인 프로세서의 각 칼럼의 곱셈 결과를 누산하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 누산은 한 번에 각 칼럼 당 2개의 곱셈 결과를 가산하기 위해 피라미드 방식으로 각각의 비트 라인 프로세서의 결과 섹션의 로우를 활성화시키는 단계를 포함한다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 본 방법은 각각의 칼럼에서 처리될 상이한 특징 세트로부터의 특징 값을 저장하는 단계 및 선택된 로우의 세트에 연관된 필터의 필터 값을 저장하는 단계를 포함하여서, 각각의 비트 라인 프로세서는 하나의 특징 값 및 그의 연관된 필터 값을 입력 값의 쌍으로 보유한다.
또한, 본 발명의 바람직한 실시예에 따르면, 본 방법은 특징 세트의 적어도 2개의 사본을 메모리 어레이의 칼럼에 저장하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 특징 세트의 각각의 사본에 대해, 본 방법은 특징 세트의 각각의 사본이 상이한 연관된 필터에 의해 필터링되도록 상이한 연관된 필터 값을 그의 비트 라인 프로세서에 저장하는 단계를 포함한다.
더 나아가, 본 발명의 바람직한 실시예에 따르면, 본 방법은 적어도 2개의 특징 세트를 메모리 어레이의 칼럼에 저장하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 각각의 특징 세트는 처리될 이미지의 상이한 블록이고, 여기서 필터 값은 적어도 하나의 이미지 처리 필터의 값이다.
마지막으로, 본 발명의 바람직한 실시예에 따라, 인-메모리 승산기-누산기를 위한 방법이 제공된다. 본 방법은 다수의 로우 및 칼럼을 갖는 메모리 어레이의 칼럼을 복수의 비트 라인 프로세서로 분할하는 단계 - 각각의 비트 라인 프로세서는 연관된 입력 값의 쌍으로 연산함 -; 각각의 비트 라인 프로세서의 연관된 입력 값의 쌍을 곱하여 곱셈 결과를 생성하기 위해 각각의 비트 라인 프로세서를 이용하는 단계; 및 비트 라인 프로세서의 각 칼럼의 곱셈 결과를 누산하는 단계를 포함한다.
본 발명으로 간주되는 청구의 대상은 본 명세서의 결론 부분에서 특히 지적되고 명백하게 청구된다. 그러나, 본 발명의 목적, 특징 및 장점과 함께 구성 및 동작 방법에 대해서는 첨부된 도면과 함께 읽는 경우에 이하의 상세한 설명을 참조하면 가장 잘 이해될 수 있다.
도 1은 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 대규모 병렬, 연관된 승산-누산 유닛의 개략도이다.
도 2는 도 1의 승산-누산 유닛의 멀티-비트 승산기 형성 부분의 개략도이다.
도 3 및 도 4는 도 1의 승산-누산 유낫의 멀티-비트 계층 가산기 형성 부분의 연산의 개략도이고, 도 3은 합산 연산이 어떻게 인-메모리에서 수행되는지 도시하고 도 4는 도 3의 로우의 피라미드 합산 연산을 도시한다.
도 5, 도 6, 및 도 7은 도 1의 승산-누산 유닛을 이용하는 이미지 처리 연산의 개략도이며, 도 5는 이미지와 이미지를 처리하는 이미지 필터를 도시하며, 도 6은 이미지 필터 Q에 의해 표준 이미지 처리 연산을 도시하고, 도 7은 승산-누산 유닛에서의 구현을 도시한다.
예시를 단순화하고 명확하게 하기 위해, 도면에 도시된 요소는 반드시 축적대로 도시된 것은 아님이 이해될 것이다. 예를 들어, 일부 구성 요소의 치수는 명확성을 위해 다른 구성 요소에 비해 과장될 수 있다. 또한, 적절한 것으로 간주되는 경우, 대응하거나 유사한 요소를 나타내기 위해 도면들 사이에서 참조 번호가 반복될 수 있다.
이하의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 기술된다. 그러나, 본 발명은 이러한 특정 세부 사항 없이도 실시될 수 있다는 것을 통상의 기술자는 이해할 것이다. 다른 경우에, 공지된 방법, 절차, 및 구성 요소는 본 발명을 모호하게 하지 않기 위해 상세히 기술되지 않았다.
출원인은, MAC 유닛이 CPU(중앙 처리 유닛) 또는 DSP(디지털 신호 프로세서)의 특수화된 여분 유닛을 형성하기 때문에, CPU 또는 DSP 칩 상에 여분의 공간을 필요로 한다는 것을 깨달았다. 유닛이 항상 이용되는 것은 아니기 때문에, 이는 공간의 낭비이다. 또한, CPU 또는 DSP가 여러 개의 MAC 연산을 병렬로 수행해야 하는 경우, CPU 또는 DSP는 여러 개의 MAC 유닛을 포함해야 하므로, 더 많은 공간이 낭비된다.
출원인은 연관된 메모리 유닛(즉, 그 안에 저장된 데이터에 대한 연산을 수행하는 메모리 어레이)에서 MAC을 구현함으로써 공간이 절약될 수 있음을 깨달았다. 이러한 인-메모리 승산기-누산기 유닛은 CPU 또는 DSP 칩에 저장을 위한 메모리를 제공할 뿐만 아니라 대규모 병렬 MAC 연산을 제공함으로써, 연산 속도를 증가시킬 뿐만 아니라 칩 실제 면적을 감소시킬 수 있다. 연관된 메모리 유닛의 경우, 병렬 연산 횟수의 한계는 메모리의 크기이다. 예를 들어, 32K 칼럼을 갖는 메모리 어레이는 32K MAC 유닛을 구현할 수 있다.
본 발명의 바람직한 실시예에 따라 구성되고 동작되는 대규모 병렬 연관 MAC 유닛(100)을 도시한 도 1을 참조한다. 대규모 병렬 연관 MAC 유닛(100)은 비파괴적, 비휘발성 메모리 어레이, 멀티-비트 승산기(112) 및 멀티-비트 계층 가산기(113)와 같은 메모리 어레이(110)를 포함할 수 있으며, 여기서 승산기(112)와 가산기(114)는 모두 메모리 어레이(110)의 데이터로 연산할 수 있다. 메모리 어레이(110)는 메모리 어레이(110)로부터 판독하고 기록하기 위해 로우 디코더 및 칼럼 디코더를 통해 메모리 어레이(110)에 액세스할 수 있는 제어기(116)에 의해 제어될 수 있다.
본 발명의 바람직한 실시예에 따르면, MAC 유닛(100)의 각 칼럼은 하나의 곱셈-누산 연산을 수행할 수 있다. 따라서, 한번에 하나 이상의 로우에서 연산함으로써 다수의 MAC 연산이 수행될 수 있다.
MAC 유닛(100)의 각 칼럼은 메모리 어레이(110)의 칼럼을 따라 정렬된 복수의 비트 라인 프로세서(bit line processors, BLP)(118)를 포함할 수 있다. 각각의 비트 라인 프로세서는 이하에 더 상세히 기술되는 바와 같이 연관된 입력 값 Ai 및 ki의 쌍으로 연산할 수 있다. 예시적인 비트 라인 프로세서는 본 발명의 공통 양수인에게 할당되고 원용에 의해 본 명세서에 포함된 "인-메모리 계산 디바이스"라는 명칭의 US 9,418,719호에 기술되어 있다.
본 발명의 바람직한 실시예에 따르면, 제어기(116)는 메모리 어레이(110)의 로우 및 칼럼을 활성화하여 멀티-비트 승산기(112)를 구현하여서, 각각의 비트 라인 프로세서(118)가 곱셈 결과 Aiki를 생성하기 위해 연관된 입력 값의 쌍 Ai 및 ki으로 곱셈 연산을 수행할 수 있다. 예시적인 연관된 곱셈 연산은 "연산 메모리의 긴 가산 및 긴 곱셈을 위한 시스템 및 방법"이라는 명칭의 공개 번호 US 2019/0278566호인 US 15/915,113에 기술되어 있으며, 이는 본 발명의 공통 양수인에게 할당되고 원용에 의해 본 명세서에 포함된다.
본 발명의 바람직한 실시예에 따르면, 제어기(116)는 멀티-비트 라인 프로세서(118)로부터의 곱셈을 가산하기 위해 멀티-비트 계층 가산기(114)를 구현하기 위해 메모리 어레이(110)의 로우 및 칼럼을 활성화할 수 있다. 예시적인 4 사이클 풀 가산기는 공개 번호 US 2018/0157621호인 US 15/708,181호에 기술되어 있으며, 이는 본 발명의 공통 양수인에게 할당되고 원용에 의해 본 명세서에 포함된다.
멀티-비트 승산기(112) 및 그 연산을 도시한 도 2를 이제 참조한다. 도 2는 메모리 어레이(110)의 일부를 도시하며, 여기서 칼럼은 Col-0, Col-1, 등으로 표시되며, 로우는 로우에 저장된 데이터로 표시된다. MAC 연산 하나 당 N개의 칼럼이 있을 수 있다.
도 2는 2개의 비트 라인 프로세서를 도시하는데, 첫번째 하나는 A0 에 k0 를 곱하기 위한 것으로 118a로 표시되었고, 두번째는 An에 kn를 곱하기 위한 것으로 118b로 표시되었으며, 여기서 n은 MAC 유닛(100)에 의해 누산될 항목의 개수일 수 있다. 예를 들어, n은 15일 수 있다.
각각의 비트 라인 프로세서(118)는 곱해질 입력 데이터를 데이터 섹션(120)에 저장할 수 있으며, 도 2는 데이터 섹션(120a, 120b)을 도시한다. 예를 들어, 제1 M 로우는 Ai 비트를 저장할 수 있고 제2 M 로우는 ki 비트를 저장할 수 있으며, Ai 및 ki는 8 비트 워드(즉, M=8), 16 비트 워드(즉, M=16) 등일 수 있다.
제어기(116)는, 예컨대 US 2019/0278566에 기술된 연관 곱셈 연산에 따라, 각각의 비트 라인 프로세서(118)에서 로우 그룹을 활성화하여 Ai에 ki를 곱할 수 있다. 곱셈 연산은 중간 결과를 저장하고 결과를 M 비트로 반올림하기 위한 라운딩 연산(rounding operation)을 처리하기 위해 122로 표시된 몇 개의 로우를 필요로 할 수 있다. 이는 전형적으로 다중 사이클을 취할 수 있지만, 모든 비트 라인 프로세서(118)에서 동시에 발생한다. 따라서, 연산이 끝나면, 모든 칼럼의 모든 곱셈 결과 Aiki가 생성된다. 곱셈 결과 Aiki는 본원에 124로 표시된 다른 m 로우에 저장될 수 있다.
이제 멀티-비트 계층 가산기(114)의 연산을 도시하는 도 3 및 도 4를 참조한다. 도 3은 A0k0 및 A1k1에 대한 결과 섹션(120)을 도시한다.
제어기(116)는 멀티-비트 계층 가산기(114)를 구현하기 위해 각 비트 라인 프로세서(118)에서 로우 그룹을 활성화할 수 있다. 멀티-비트 계층 가산기(114)는 도 4에 도시되고 이하에서 기술되는 바와 같이 피라미드 연산에 따라 Aiki를 가산할 수 있다.
제1 단계에서, 멀티-비트 계층 가산기(114)는, 예컨대 US 2018/0157621호에 따라, 모든 짝수 i에 대해 이웃하는 짝수 및 홀수 Aiki (즉, A0k0+A1k1를 가산할 수 있음)를 가산할 수 있으며, 홀수의 비트 라인 프로세서(118)(즉, i=1, 3, 5, 7에 대한 비트 라인 프로세서)의 결과 섹션(120)에 결과를 저장할 수 있다.
제2 단계에서, 멀티-비트 계층 가산기(114)는 매 2번째 로우(즉, 모든 홀수 로우 i=1,3, 등)의 Aiki를 가산할 수 있고, 그 결과를 4번째 로우(즉, i=3, 7, 11 등)에 저장할 수 있다.
제3 단계에서, 멀티-비트 계층 가산기(114)는 매 4번째 로우(즉, i = 3, 7, 11 등)의 Aiki를 가산할 수 있고, 그 결과를 8번째 로우(즉, i=7, 15)에 저장할 수 있다.
마지막으로, 제4 단계에서, 멀티-비트 계층 가산기(114)는 매 8번째 로우(즉, i=7, 15)의 Aiki를 가산할 수 있고, 그 결과를 16번째 로우(즉, i=15)에 저장할 수 있다.
다시 말하자면, 각 단계에서, 가장 최근에 생성된 합은 모든 데이터가 함께 가산될 때까지 피라미드 방식으로 가장 최근에 생성된 이웃 합에 가산될 수 있다. 이는 한 번에 모든 칼럼에서 발생한다. 그 결과는 이후 각 칼럼에 대해 MAC 유닛(100)의 승산-누산 연산의 결과로서 제공될 수 있다.
각각의 승산-누산 연산에 대한 데이터는 단일 칼럼에 저장되고 연산된다는 것이 이해될 것이다. 그러나, 각 곱셈과 덧셈은 어레이의 전체 로우에서 수행된다. 따라서, 각각의 곱셈과 가산은 병렬로 수행된다. 이러한 결과로, 대량의 병렬, 승산-누산 연산이 된다.
MAC 유닛(100)은 컨볼루션, 이미지 처리 연산, 디지털 신호 처리 동작 등과 같은 중요한 MAC연산을 요구하는 모든 연산을 가속화할 수 있음이 이해될 것이다.
승산되고 누산되는 데이터는 종래 기술에서와 같이 로우가 아닌 칼럼에 저장되어야 한다는 것이 이해될 것이다.
이제 MAC 유닛(100)을 이용할 수 있는 이미지 처리 연산을 도시하는 도 5, 도 6, 및 도 7를 참조한다. 도 5는 픽셀(210)의 로우와 칼럼을 갖는 이미지(200) 및 이미지(200)를 처리하는 이미지 필터 Q를 도시한다. 도 6은 이미지 필터 Q에 의한 표준 이미지 처리 연산을 도시하고, 도 7은 MAC 유닛(100)에서의 구현을 도시한다.
이미지 필터 Q는 3 x 3 행렬일 수 있고, 이미지(200)의 픽셀의 각각의 3 x 3 블록 Bp과 관련될 수 있다. 컨볼루선 프로세스에서, 이미지 필터 Q는 도 6의 뱀모양 화살표(220)에 의해 지시된 바와 같이 이미지(200)를 따라 시프트된다. 컨볼루션 프로세스는 각 픽셀이 BpQ의 행렬 곱인 더 작은 결과 이미지를 생성한다. 그러나, 컨볼루션 프로세스는 행렬 곱셈 연산이 각 블록 Bp에 대해 발생해야 하므로 시간이 많이 걸린다.
컨볼루션 프로세서는 도 7에 도시된 바와 같이 MAC 유닛(100)을 사용하여 계산적으로 보다 효율적으로 구현될 수 있다. 이 예시에서, 각각의 칼럼은 하나의 블록 Bp를 퍼리하는데, 여기서 L 개의 블록 Bp가 존재, 따라서 L 개의 칼럼이 있을 수 있다. 본 발명의 바람직한 실시예에 따르면, 이미지 필터 Q의 9개의 픽셀 각각은 각각의 칼럼에 제공될 수 있어서, 각각의 Bp의 9개의 픽셀 각각은 이미지 필터 Q의 9개의 픽셀 중 연관된 하나의 픽셀과 곱해질 수 있다. 도 7은 상이한 블록 Bp를 갖는 각각의 칼럼 및 이미지 필터 Q의 각 요소 qi에 대한 개별 로우를 각 칼럼에서 반복하여 도시한다.
따라서, 각각의 비트 라인 프로세서(118)는 그의 블록 Bp로부터의 하나의 픽셀, 이미지 필터 Q로부터의 하나의 픽셀 및 그들의 결과 곱셈을 저장할 수 있고, 각 칼럼의 최종 비트 라인 프로세서(118)는 그 칼럼의 승수-누산 연산의 결과를 생성할 수 있다.
출원인은 충분한 칼럼을 가지면 MAC 유닛(100)이 다수의 필터 Qt를 갖는 이미지(200)을 컨볼루션 할 수 있다는 것을 인식하였다. 이를 위해, MAC 유닛(100)은 칼럼을 L개의 칼럼의 섹션(300)으로 분할할 수 있고, 각각의 섹션은 이미지(200)의 블록을 칼럼에 저장할 수 있다. 개별 필터 Qt를 적용하기 위해, MAC 유닛(100)은 섹션(300) 마다 상이한 필터 데이터를 저장할 수 있다. 따라서, 섹션(300b)이 필터 Q2로부터 요소 qi를 저장하는 동안 섹션(300a)은 필터 Q1으로부터의 요소 qi 를 저장할 수 있다.
충분한 칼럼을 가지면 MAC 유닛(100)은 단일의 대규모 병렬 연산으로 이미지를 처리하는데 필요한 모든 상이한 유형의 컨볼루션을 수행할 수 있다는 것이 이해될 것이다. 이미지가 충분히 작거나 칼럼이 충분히 있는 경우, MAC 유닛(100)은 한번에 여러 이미지에 대해 이미지 처리를 수행할 수 있다. 이는 이미지 처리 작업에 있어서 속도를 크게 향상시킬 수 있다.
MAC 유닛(100)은 유사성 탐색 동작에서 공통적인 내적 계산 뿐만 아니라 모든 종류의 대규모 병렬 행렬 곱셈 동작을 위해 사용될 수 있다는 것이 이해될 것이다.
예를 들어, 이미지 상에서 동작하는 대신에, MAC 유닛(100)은 임의의 큰 특징의 모음에서 동작할 수 있다. 이러한 실시예에서, 각각의 칼럼은 처리될 특징 세트로부터의 값을 저장하고, 각각의 필터 로우(도 7에서 qis가 도시된 로우)는 연관된 필터의 필터 값을 저장하여서, 각각의 비트 라인 프로세서가 하나의 픽셀 값 및 그와 연관된 필터 값을 입력 값의 쌍으로 유지한다.
달리 구체적으로 언급되지 않는 한, 전술한 논의로부터 명백한 바와 같이, 명세서 전반에 걸쳐 "처리", "컴퓨팅", "계산", "결정" 등과 같은 용어를 이용하는 논의는 물리적으로 표현된 데이터, 예컨대 컴퓨팅 시스템의 레지스터 및/또는 메모리 내의 전자, 수량과 같은 데이터를 컴퓨팅 시스템의 메모리, 레지스터, 또는 정보 저장 장치, 전송 또는 디스플레이 디바이스 내의 물리량으로 표현된 것과 유사한 다른 데이터로 조작 및/또는 변환하는 클라이언트/서버 시스템, 모바일 컴퓨팅 디바이스, 스마트 기기, 또는 유사한 전자 컴퓨팅 디바이스와 같은 임의의 유형의 범용 컴퓨터의 동작 및/또는 프로세스를 지칭하는 것으로 이해된다.
본 발명의 실시예는 본원에서의 동작을 수행하기 위한 장치를 포함할 수 있다. 이 장치는 원하는 목적을 위해 특별히 구성될 수 있거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 또는 재구성되는 범용 컴퓨터 또는 클라이언트/서버 구성을 포함할 수 있다. 소프트웨어에 의해 지시되는 경우 결과적인 장치는 범용 컴퓨터를 본원에서 논의된 바와 같이 진보성있는 요소로 바꿀 수 있다. 본 명령은 원하는 컴퓨터 플랫폼과 동작하는 본 발명의 디바이스를 정의할 수 있다. 이러한 컴퓨터 프로그램은 광학 디스크, 자기-광학 디스크, 판독-전용 메모리(read-only memories, ROMs), 휘발성 및 비휘발성 메모리, 랜덤 액세스 메모리(random access memories, RAMs), 전기적으로 프로그램 가능한 판독-전용 메모리(electrically programmable read-only memories, EPROMs), 전기적으로 소거 가능하고 프로그램 가능한 판독 전용 메모리(electrically erasable and programmable read only memories, EEPROMs), 자기 또는 광학 카드, 플래시 메모리, 전자 명령을 저장하기에 적합하고 컴퓨터 시스템 버스에 결합될 수 있는 디스크-온-키 또는 임의의 다른 유형의 매체와 같은 컴퓨터 판독 가능한 저장 장치 매체에 저장될 수 있지만, 이에 한정되지는 않는다.
본 명세서에 제시된 프로세스 및 디스플레이는 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템이 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있거나, 원하는 방법을 수행하기 위해 보다 특화된 장치를 구성하는 것이 편리하다는 것이 입증될 수 있다. 다양한 이들 시스템에 대한 바람직한 구조는 이하의 설명으로부터 나타날 것이다. 또한, 본 발명의 실시예는 임의의 특정 프로그램 언어를 참조하여 기술되지 않는다. 본 명세서에 기술된 바와 같이 본 발명의 교시를 구현하기 위해 다양한 프로그래밍 언어가 사용될 수 있음을 이해할 것이다.
본 발명의 특정 특징이 본 명세서에 예시되고 기술되었지만, 많은 수정, 대체, 변경, 및 균등물이 이제 통상의 기술자에게 발생할 것이다. 그러므로, 첨부된 청구범위는 본 발명의 진정한 사상에 속하는 그러한 모든 수정 및 변경을 포함하도록 의도된 것으로 이해되어야 한다.

Claims (29)

  1. 인-메모리 승산기-누산기(in-memory multiplier-accumulator)로서,
    다수의 로우 및 칼럼을 갖는 비파괴적이고 비휘발성인 메모리 어레이로서, 각각의 칼럼은 복수의 비트 라인 프로세서로 분할되고, 각각의 비트 라인 프로세서는 연관된 입력 값의 쌍으로 연산하는, 메모리 어레이; 및
    상기 메모리 어레이의 적어도 2개의 로우를 한 번에 활성화시키는 제어기로서, 각각의 칼럼에서,
    곱셈 결과를 생성하기 위해 각각의 비트 라인 프로세서가 상기 비트 라인 프로세서의 상기 연관된 입력 값의 쌍을 곱하는 연산, 및
    상기 비트 라인 프로세서의 각각의 칼럼의 곱셈 결과를 누산하는 연산을 병렬로 수행하기 위한, 제어기를 포함하는,
    인-메모리 승산기-누산기.
  2. 제1항에 있어서,
    각각의 비트 라인 프로세서는 상기 연관된 입력 값의 쌍을 저장하는 데이터 섹션, 중간 결과 영역, 및 비트 라인 프로세서의 상기 곱셈 결과를 저장하는 결과 섹션을 포함하는,
    인-메모리 승산기-누산기.
  3. 제2항에 있어서,
    상기 누산하는 연산은 칼럼 당 2개의 곱셈 결과를 한 번에 가산하기 위해 피라미드 방식으로 상기 결과 섹션의 로우를 활성화시키는 단계를 포함하는,
    인-메모리 승산기-누산기.
  4. 제1항에 있어서,
    상기 각각의 칼럼은 처리될 상이한 특징 세트로부터의 특징 값을 저장하고,
    각각의 비트 라인 프로세서가 하나의 특징 값과 상기 특징 값과 연관된 필터 값을 상기 입력 값의 쌍으로 보유하기 위해 선택된 로우의 세트는 연관된 필터의 필터 값을 저장하는,
    인-메모리 승산기-누산기.
  5. 제4항에 있어서,
    상기 메모리 어레이는 상기 특징 세트의 적어도 2개의 사본을 상기 메모리 어레이의 칼럼에 저장하는,
    인-메모리 승산기-누산기.
  6. 제5항에 있어서,
    상기 특징 세트의 각각의 사본이 상이한 필터에 의해 필터링되도록, 상기 특징 세트의 각각의 사본에 대해, 상이한 필터 값이 상기 비트 라인 프로세서에 저장되는,
    인-메모리 승산기-누산기.
  7. 제4항에 있어서,
    상기 메모리 어레이는 적어도 2개의 특징 세트를 상기 메모리 어레이의 칼럼에 저장하는,
    인-메모리 승산기-누산기.
  8. 제4항에 있어서,
    각각의 특징 세트는 처리될 이미지의 상이한 블록이고, 상기 필터 값은 적어도 하나의 이미지 처리 필터의 값인,
    인-메모리 승산기-누산기.
  9. 인-메모리 승산기-누산기에 대한 방법으로서,
    다수의 로우 및 칼럼을 갖는 메모리 어레이의 칼럼을 복수의 비트 라인 프로세서로 분할하는 단계 - 각각의 비트 라인 프로세서는 연관된 입력 값의 쌍으로 연산함-; 및
    각각의 칼럼에서,
    곱셈 결과를 생성하기 위해 각각의 비트 라인 프로세서가 상기 비트 라인 프로세서의 상기 연관된 입력 값의 쌍을 곱하는 연산, 및
    상기 비트 라인 프로세서의 상기 각각의 칼럼의 곱셈 결과를 누산하는 연산
    을 병렬로 수행하기 위해 상기 메모리 어레이의 적어도 2개의 로우를 한 번에 활성화시키는 단계를 포함하는,
    인-메모리 승산기-누산기에 대한 방법.
  10. 제9항에 있어서,
    상기 누산하는 연산은 칼럼 당 2개의 곱셈 결과를 한 번에 가산하기 위해 피라미드 방식으로 각각의 비트 라인 프로세서의 결과 섹션의 로우를 활성화시키는 단계를 포함하는,
    인-메모리 승산기-누산기에 대한 방법.
  11. 제9항에 있어서,
    처리될 상이한 특징 세트로부터의 특징 값을 각각의 칼럼에 저장하는 단계; 및
    각각의 비트 라인 프로세서가 하나의 특징 값과 상기 특징 값과 연관된 필터 값을 상기 입력 값의 쌍으로 보유하기 위해 연관된 필터의 필터 값을 선택된 로우의 세트에 저장하는 단계를 포함하는,
    인-메모리 승산기-누산기에 대한 방법.
  12. 제11항에 있어서,
    상기 특징 세트의 적어도 2개의 사본을 상기 메모리 어레이의 칼럼에 저장하는 단계를 포함하는,
    인-메모리 승산기-누산기에 대한 방법.
  13. 제12항에 있어서,
    상기 특징 세트의 각각의 사본에 대해, 상기 특징 세트의 각각의 사본이 상이한 연관된 필터에 의해 필터링되도록 상이한 연관된 필터 값이 상기 비트 라인 프로세서에 저장하는,
    인-메모리 승산기-누산기에 대한 방법.
  14. 제12항에 있어서,
    적어도 2개의 특징 세트를 상기 메모리 어레이의 칼럼에 저장하는 단계를 더 포함하는,
    인-메모리 승산기-누산기에 대한 방법.
  15. 제11항에 있어서,
    각각의 특징 세트는 처리될 이미지의 상이한 블록이고, 상기 필터 값은 적어도 하나의 이미지 처리 필터의 값인,
    인-메모리 승산기-누산기에 대한 방법.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
KR1020190153572A 2018-11-26 2019-11-26 대규모 병렬 연관된 승산기-누산기 KR102510924B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/199,258 2018-11-26
US16/199,258 US10891991B2 (en) 2018-11-26 2018-11-26 Massively parallel, associative multiplier accumulator

Publications (2)

Publication Number Publication Date
KR20200063077A KR20200063077A (ko) 2020-06-04
KR102510924B1 true KR102510924B1 (ko) 2023-03-15

Family

ID=70770001

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190153572A KR102510924B1 (ko) 2018-11-26 2019-11-26 대규모 병렬 연관된 승산기-누산기

Country Status (3)

Country Link
US (1) US10891991B2 (ko)
KR (1) KR102510924B1 (ko)
CN (1) CN111221500B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11748100B2 (en) * 2020-03-19 2023-09-05 Micron Technology, Inc. Processing in memory methods for convolutional operations

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434541B1 (en) * 1996-10-23 2002-08-13 Ford Global Technologies, Inc. Automotive engine misfire detection system including a bit-serial based recurrent neuroprocessor
US6968445B2 (en) * 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
US6683804B1 (en) * 2002-07-16 2004-01-27 Analog Devices, Inc. Read/write memory arrays and methods with predetermined and retrievable latent-state patterns
US7543013B2 (en) * 2006-08-18 2009-06-02 Qualcomm Incorporated Multi-stage floating-point accumulator
US20100122070A1 (en) * 2008-11-07 2010-05-13 Nokia Corporation Combined associative and distributed arithmetics for multiple inner products
US8238173B2 (en) * 2009-07-16 2012-08-07 Zikbit Ltd Using storage cells to perform computation
CN103543983B (zh) * 2012-07-11 2016-08-24 世意法(北京)半导体研发有限责任公司 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法
US9418719B2 (en) 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device
CN109074845B (zh) * 2016-03-23 2023-07-14 Gsi 科技公司 存储器内矩阵乘法及其在神经网络中的使用
US10534836B2 (en) 2016-12-06 2020-01-14 Gsi Technology Inc. Four steps associative full adder

Also Published As

Publication number Publication date
KR20200063077A (ko) 2020-06-04
US10891991B2 (en) 2021-01-12
US20200168257A1 (en) 2020-05-28
CN111221500A (zh) 2020-06-02
CN111221500B (zh) 2022-10-28

Similar Documents

Publication Publication Date Title
US10853448B1 (en) Hiding latency of multiplier-accumulator using partial results
CN111095241B (zh) 加速数学引擎
CN111465924B (zh) 用于将矩阵输入转换为矩阵处理器的向量化输入的系统和方法
US20230359695A1 (en) Memory-Size- and Bandwidth-Efficient Method for Feeding Systolic Array Matrix Multipliers
CN108153512B (zh) 四步关联全加器
TWI608429B (zh) 具有神經記憶體之神經網路單元以及集體將接收自神經記憶體之資料列進行移位之神經處理單元陣列
KR20190089204A (ko) 하드웨어에서의 평균 풀링의 수행
US11934798B2 (en) Counter-based multiplication using processing in memory
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
US11449739B2 (en) General padding support for convolution on systolic arrays
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
US20200104669A1 (en) Methods and Apparatus for Constructing Digital Circuits for Performing Matrix Operations
KR102510924B1 (ko) 대규모 병렬 연관된 승산기-누산기
US20240192962A1 (en) Pipeline architecture for bitwise multiplier-accumulator (mac)
US10635397B2 (en) System and method for long addition and long multiplication in associative memory
CN115485656A (zh) 用于卷积运算的存储器内处理方法
US20230289287A1 (en) Programmable Multi-Level Data Access Address Generator
US20230244600A1 (en) Process for Generation of Addresses in Multi-Level Data Access
Shahbahrami et al. Performance comparison of SIMD implementations of the discrete wavelet transform
WO2020059156A1 (en) Data processing system, method, and program
US11610095B2 (en) Systems and methods for energy-efficient data processing
US20190286685A1 (en) Arithmetic processing device
CN117742786A (zh) 通过存储器处理器执行的计算方法和存储器装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant