KR20240002209A - 데이터 계산 회로 및 방법 - Google Patents

데이터 계산 회로 및 방법 Download PDF

Info

Publication number
KR20240002209A
KR20240002209A KR1020230082048A KR20230082048A KR20240002209A KR 20240002209 A KR20240002209 A KR 20240002209A KR 1020230082048 A KR1020230082048 A KR 1020230082048A KR 20230082048 A KR20230082048 A KR 20230082048A KR 20240002209 A KR20240002209 A KR 20240002209A
Authority
KR
South Korea
Prior art keywords
data elements
circuit
sum
mantissa
sign
Prior art date
Application number
KR1020230082048A
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 KR20240002209A publication Critical patent/KR20240002209A/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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • 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
    • 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/49Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix non-linear PCM

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

회로는, 복수의 입력 및 가중 데이터 요소의 각각의 데이터 요소의 부호 가수(signed mantissa)를 수신하고 입력 데이터 요소 부호 가수의 일부 또는 전부에 대해 그리고 가중 데이터 요소 부호 가수의 일부 또는 전부에 대해 곱셈 및 재포맷 연산을 수행함으로써 복수의 2의 보수 곱을 생성하는 곱셈기 회로, 복수의 입력 및 가중 데이터 요소의 각각의 데이터 요소의 지수를 수신하고 각각의 입력 데이터 요소 지수를 각각의 가중 데이터 요소 지수에 더함으로써 합을 생성하는 합산 회로, 각각의 곱을 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하는 시프팅 회로, 및 시프트된 곱으로부터 가수 합을 생성하는 가산기 트리를 포함한다.

Description

데이터 계산 회로 및 방법{DATA COMPUTATION CIRCUIT AND METHOD}
본 출원은, 2022년 6월 28일 출원된 미국 가특허 출원 번호 제63/356,146호의 우선권을 주장하며, 이는 그 전체가 참조에 의해 여기에 포함된다.
메모리 어레이는 종종 논리 또는 수학 연산과 같은 다양한 유형의 계산에 사용되는 데이터를 저장하고 액세스하는 데 사용된다. 이 연산을 수행하기 위해, 계산을 수행하는 데 사용되는 회로와 메모리 어레이 사이에 데이터 비트가 이동된다. CIM(compute-in-memory) 회로에서 메모리 어레이는 계산 회로(들)와 결합된다. 일부 경우에 계산은 다수의 연산 계층을 포함하며, 제1 연산의 결과가 제2 연산에서의 입력 데이터로서 사용된다.
본 개시의 양상은 다음의 상세한 설명으로부터 첨부 도면과 함께 볼 때 가장 잘 이해된다. 산업계에서의 표준 실시에 따라 다양한 특징부들이 실축척대로 도시되지 않은 것을 유의하여야 한다. 사실상, 다양한 특징부들의 치수는 설명을 명확하게 하기 위해 임의로 증가되거나 감소되었을 수 있다.
도 1a 및 도 1b는 일부 실시예에 따른 데이터 계산 회로의 개략도이다.
도 2는 일부 실시예에 따른 시프팅(shifting) 회로의 개략도이다.
도 3은 일부 실시예에 따른 시프팅 회로의 데이터 요소(data element)의 도면이다.
도 4는 일부 실시예에 따른 시프팅 회로의 개략도이다.
도 5는 일부 실시예에 따른 시프팅 회로의 데이터 요소의 도면이다.
도 6은 일부 실시예에 따른 시프팅 회로의 데이터 요소의 도면이다.
도 7은 일부 실시예에 따라 회로를 동작시키는 방법의 흐름도이다.
도 8은 일부 실시예에 따른 CIM 회로의 개략도이다.
도 9는 일부 실시예에 따라 메모리 회로를 동작시키는 방법의 흐름도이다.
다음의 개시는 제공되는 주제의 상이한 특징들을 구현하기 위한 많은 다양한 실시예 또는 예를 제공한다. 컴포넌트, 값, 동작, 재료, 구성 등의 구체적 예가 본 개시를 단순화하도록 아래에 기재된다. 이들은 물론 단지 예일 뿐이며 한정하고자 하는 것이 아니다. 다른 컴포넌트, 값, 동작, 재료, 구성 등도 고려해볼 수 있다. 예를 들어, 이어지는 다음 기재에 있어서 제2 특징부 상에 또는 위에 제1 특징부를 형성하는 것은, 제1 및 제2 특징부가 직접 접촉하여 형성되는 실시예를 포함할 수 있고, 제1 및 제2 특징부가 직접 접촉하지 않도록 제1 특징부와 제2 특징부 사이에 추가의 특징부가 형성될 수 있는 실시예도 또한 포함할 수 있다. 또한, 본 개시는 다양한 예에서 참조 번호 및/또는 문자를 반복할 수 있다. 이 반복은 단순하고 명확하게 하기 위한 목적인 것이며, 그 자체가 설명되는 다양한 실시예 및/또는 구성 간의 관계를 지시하는 것은 아니다.
또한, “밑에”, “아래에”, “하부”, “위에”, “상부” 등과 같은 공간적으로 상대적인 용어는 도면에 예시된 바와 같이 하나의 구성요소 또는 특징부의 또다른 구성요소(들) 또는 특징부(들)에 대한 관계를 기재하고자 설명을 쉽게 하기 위해 여기에서 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시된 배향에 더하여 사용중이거나 동작중인 디바이스의 상이한 배향들을 망라하도록 의도된다. 장치는 달리 배향될 수 있고(90도 회전되거나 또는 다른 배향으로), 여기에서 사용된 공간적으로 상대적인 기술자는 마찬가지로 그에 따라 해석될 수 있다.
다양한 실시예에서, 데이터 계산 회로, 예컨대 CIM(compute-in-memory) 회로는 입력 및 가중(weight) 데이터 요소의 지수(exponent) 비트로부터 부호(sign) 및 가수(mantissa) 비트를 분리함으로써 데이터 계산을 수행하도록 구성된다. 곱셈기 회로는 입력 및 가중 데이터 요소의 부호 및 가수 비트에 대해 곱셈 및 재포맷(reformatting) 연산을 수행하여 2의 보수 곱(complement product)을 생성하고, 합산 회로는 입력 데이터의 지수를 가중 데이터의 지수에 더하여 합을 생성한다. 시프팅 회로는 합과 최대 합 사이의 차이에 기초하여 곱을 시프트하고, 가산기 트리는 시프트된 곱을 함께 더하여 부분 합을 생성한다. 그에 의해 데이터 계산 회로는, 부동 소수점 데이터가 고정 소수점 데이터로 변환되는 일부 접근 방식에 존재하는 양자화 오류 없이, 다른 접근 방식보다 적은 시간, 영역 및 전력을 사용하여 부동 소수점 부분 합 계산을 수행하도록 구성된다. 일부 실시예에서, 시프터 회로는 영역을 더 줄이고 라우팅 요건을 단순화하기 위해 2 스테이지 구성을 채용한다.
일부 실시예에서, CIM 회로는, 예컨대 외부 메모리 어레이에, 출력되기 전에 다수의 부분 합 데이터 요소를 누적하도록 구성된 부분 합 버퍼를 포함하며, 그에 의해 개별 부분 합 데이터 요소가 출력되는 접근 방식에 비교하여 액세스 전력 및 시간 요건을 감소시킨다.
도 1a 및 도 1b의 각각은 일부 실시예에 따른 데이터 계산 회로(100)의 개략도이다. 도 1a에 도시된 실시예에서, 일부 실시예에서 회로(100) 또는 메모리 회로(100)라고도 하는 데이터 계산 회로(100)는, 메모리 어레이(110), 곱셈기 회로(120A), 합산 회로(130), 차동 회로(140), 시프팅 회로(150), 가산기 트리(160) 및 변환기(170 및 180)를 포함한다. 도 1b에 도시되고 아래에 설명되는 실시예에서, 회로(100)는 곱셈기 회로(120A) 대신에 곱셈기 회로(120B)를 포함하고, 도 1a와 관련하여 아래에 설명되는 실시예에 따라 달리 구성된다.
도 1a에 도시된 실시예에서, 메모리 어레이(110)는 곱셈기 회로(120A) 및 합산 회로(130) 각각에 커플링되고, 합산 회로(130)는 차동 회로(140)에 더 커플링되고, 차동 회로(140)는 곱셈기 회로(120A), 시프팅 회로(150) 및 변환기(180) 각각에 더 커플링되고, 시프팅 회로(150)는 가산기 트리(160)에 더 커플링되고, 가산기 트리(160)는 변환기(170)에 더 커플링되고, 변환기(170)는 변환기(180)에 더 커플링된다.
2개 이상의 회로 요소는 직접적인 전기 연결 또는 하나 이상의 추가 회로 요소를 포함하는 전기 연결에 기초하여 커플링되는 것으로서 간주되며, 그에 의해 제어될 수 있고, 예컨대 하나 이상의 트랜지스터 또는 다른 스위칭 디바이스에 의해 저항성 또는 개방성으로 제어될 수 있다.
도 1a에 도시된 실시예는 예시의 목적으로 제공된 비한정적인 예이다. 일부 실시예에서, 회로(100)는 도 1a에 도시된 것과 다른 구성을 가지며, 그에 의해 아래에서 설명되는 이점이 실현될 수 있다. 일부 실시예에서, 회로(100)는 메모리 어레이(110)를 포함하지 않고, 곱셈기 회로(120A) 및 합산 회로(130) 각각이 회로(100) 외부의 회로, 예컨대 메모리 어레이에 커플링된다. 일부 실시예에서, 회로(100)는 변환기(170 또는 180) 중 하나 또는 둘 다를 포함하지 않는다. 일부 실시예에서, 차동 회로(140)는 곱셈기 회로(120A)에 더 커플링되지 않는다.
일부 실시예에서, 회로(100)는, 도 1a에 도시되고 아래에서 설명되는 것에 추가적으로 회로 요소, 예컨대 제어 회로 또는 도시된 회로 요소의 추가 인스턴스를 포함한다. 일부 실시예에서, 회로(100)는 도 8과 관련하여 아래에서 설명되는 바와 같이 구성된 가산기(830) 및 버퍼(840)를 포함한다.
일부 실시예에서, 도 1a에 도시된 요소는, 메모리 어레이(110), 곱셈기 회로(120A), 합산 회로(130), 차동 회로(140), 시프팅 회로(150), 가산기 트리(160) 및/또는 변환기(170 및/또는 180)의 다수 인스턴스를 포함하는 메모리 회로의 일부이다.
일부 실시예에서, 회로(100)는 메모리 내 계산을 수행하도록 구성된 요소, 예컨대 어레이, 예컨대 메모리 어레이(110)가 하나 이상의 입력 데이터 요소 세트, 예컨대 복수의 데이터 요소 InDE에 대한 MAC(multiply and accumulate) 연산에 적용되는, 저장된 가중 데이터 요소, 예컨대 복수의 데이터 요소 WtDE를 포함하는, 컨볼루션 신경망(CNN; convolutional neural network)을 포함하는 CIM 회로에 포함된다.
메모리 어레이, 예컨대 메모리 어레이(110) 또는 도 8과 관련하여 아래에서 설명되는 메모리 어레이(810)는 복수의 저장 요소를 포함하는 저장 디바이스이며, 각각의 저장 요소는 하나 이상의 데이터 요소를 저장하도록 구성된 전기, 전기 기계, 전자기 또는 다른 디바이스를 포함하고, 각각의 데이터 요소는 논리 상태로 표현되는 하나 이상의 데이터 비트를 포함한다. 일부 실시예에서, 논리 상태는 저장 요소의 일부 또는 전부에 저장된 전하의 전압 레벨에 대응한다. 일부 실시예에서, 논리 상태는 저장 요소의 일부 또는 전부의 물리적 특성, 예컨대 저항 또는 자기 배향에 대응한다.
일부 실시예에서, 저장 요소는 하나 이상의 SRAM(static random-access memory) 셀을 포함한다. 다양한 실시예에서, SRAM 셀, 예컨대 5-트랜지스터(5T), 6-트랜지스터(6T), 8-트랜지스터(8T) 또는 9-트랜지스터(9T) SRAM 셀은 2 내지 12 범위 개수의 트랜지스터를 포함한다. 일부 실시예에서, SRAM 셀은 멀티트랙 SRAM 셀을 포함한다. 일부 실시예에서, SRAM 셀은 폭보다 적어도 2배 더 큰 길이를 포함한다.
일부 실시예에서, 저장 요소는 하나 이상의 동적 랜덤 액세스 메모리(DRAM; dynamic random-access memory) 셀, 저항성 랜덤 액세스 메모리(RRAM; resistive random-access memory) 셀, 자기 저항성 랜덤 액세스 메모리(MRAM; magnetoresistive random-access memory) 셀, 강유전성 랜덤 액세스 메모리(FeRAM; ferroelectric random-access memory) 셀, NOR 플래시 셀, NAND 플래시 셀, CBRAM(conductive-bridging random-access memory) 셀, 데이터 레지스터, 비휘발성 메모리(NVM; non-volatile memory) 셀, 3D NVM 셀 ,또는 비트 데이터를 저장할 수 있는 다른 메모리 셀 유형을 포함한다.
메모리 어레이(110)는 입력 데이터 요소 InDE로도 지칭되는 데이터 요소 InDE 및 가중 데이터 요소 WtDE로도 지칭되는 데이터 요소 WtDE를 저장하도록 구성된다. 회로(100)가 CIM 회로에 포함되는 일부 실시예에서, 입력 데이터 요소 InDE 및 가중 데이터 요소 WtDE는 하나 이상의 매트릭스 계산의 각자의 입력 및 가중 데이터에 대응한다.
일부 실시예에서, 복수의 입력 데이터 요소 InDE는 다수 개의 복수의 입력 데이터 요소 중 하나이고, 메모리 어레이(110)는 다수 개의 복수의 입력 데이터 요소 중 각 복수의 입력 데이터 요소를 저장하도록 구성된다. 일부 실시예에서, 복수의 가중 데이터 요소 WtDE는 다수 개의 복수의 가중 데이터 요소 중 하나이고, 메모리 어레이(110)는 다수 개의 복수의 가중 데이터 요소 중 각 복수의 가중 데이터 요소를 저장하도록 구성된다.
데이터 요소의 수와 메모리 어레이(110)에 저장된 데이터 요소당 비트 각각이 증가함에 따라, 기능적 능력과 함께, 예컨대 증가된 가중 데이터 분해능과 함께, 회로 복잡도 및 전력 소비가 증가한다.
도 1a에 도시된 실시예에서, 메모리 어레이(110)는 데이터 요소 InDE 및 WtDE 각각의 총 4개의 데이터 요소를 포함한다. 일부 실시예에서, 메모리 어레이(110)는 서로 동일하거나 상이한 총 개수의 데이터 요소를 갖는 데이터 요소 InDE 및 WtDE를 포함한다. 일부 실시예에서, 메모리 어레이(110)는 데이터 요소 InDE 및 WtDE 중 하나 또는 둘 다의 데이터 요소를 4개보다 적거나 더 많이 포함한다. 일부 실시예에서, 메모리 어레이(110)는 2 내지 1024 범위인, 데이터 요소 InDE 및 WtDE 중 하나 또는 둘 다의 데이터 요소의 수를 포함한다. 일부 실시예에서, 메모리 어레이(110)는 2 내지 128 범위인, 데이터 요소 InDE 및 WtDE 중 하나 또는 둘 다의 데이터 요소의 수를 포함한다.
도 1a에 도시된 실시예에서, 메모리 어레이(110)는 16과 동일한, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소의 비트 수를 저장하도록 구성된다. 일부 실시예에서, 메모리 어레이(110)는 4 내지 256 범위인, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소의 비트 수를 저장하도록 구성된다. 일부 실시예에서, 메모리 어레이(110)는 8 내지 64 범위인, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소의 비트 수를 저장하도록 구성된다. 일부 실시예에서, 메모리 어레이(110)는 16과 동일한, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소의 비트 수를 저장하도록 구성된다.
도 1a에 도시된 실시예에서, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소는, 부호 비트, 복수의 지수 비트, 및 일부 실시예에서 복수의 분수 비트라고도 하는 복수의 가수 비트를 포함하는 이진 부동 소수점 컴퓨터 숫자 포맷을 갖는다.
일부 실시예에서, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소는, 일부 실시예에서 bfloat 포맷 또는 브레인 부동 소수점 포맷이라고도 하는 BF16 포맷을 가지며, 여기서 첫 번째 비트는 부동 소수점 숫자의 부호를 나타내고, 후속 8 비트는 부동 소수점 숫자의 지수를 나타내고, 마지막 7 비트는 부동 소수점 숫자의 가수 또는 분수를 나타낸다. 가수는 0이 아닌 값으로 시작하도록 구성되기 때문에, 각각의 저장된 데이터 요소의 마지막 7 비트는 1과 동일한, 첫 번째 최상위 비트(MSB; most significant bit)를 갖는 8비트 가수를 나타낸다.
일부 실시예에서, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소는, 일부 실시예에서 반정밀도 포맷이라고도 하는 FP16 포맷을 가지며, 여기서 첫 번째 비트는 부동 소수점 숫자의 부호를 나타내고, 후속 5 비트는 부동 소수점 숫자의 지수를 나타내고, 마지막 10 비트는 부동 소수점 숫자의 가수 또는 분수를 나타낸다. 이 경우, 각각의 저장된 데이터 요소의 마지막 10 비트는, 1과 동일한 첫 번째 MSB를 갖는 11비트 가수를 나타낸다.
일부 실시예에서, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소는 BF16 또는 FP16 형식이 아닌 부동 소수점 포맷, 예컨대 또다른 16비트 포맷, 32비트, 64비트, 128비트 또는 256비트 포맷, 또는 40비트 또는 80비트 확장 정밀도 포맷을 갖는다.
일부 실시예에서, 부동 소수점 숫자를 나타내는 데이터 요소의 부호 및 가수는 집합적으로 부동 소수점 숫자의 부호 가수(signed mantissa)로 지칭된다. 일부 실시예에서, 가수의 MSB는 숨겨진 비트 또는 숨겨진 MSB로 지칭된다.
메모리 어레이(110)는 하나 이상의 I/O 연결(도시되지 않음)을 포함하며, 이를 통해 논리 상태가 쓰기 동작에서 프로그래밍되고 읽기 동작에서 액세스된다. 메모리 어레이(110)는 판독 동작 시, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소의 일부 또는 전부를 하나 이상의 데이터 버스(레이블링되지 않음)를 통해 곱셈기 회로(120A) 및 합산 회로(130) 각각에 출력하도록 구성된다. 일부 실시예에서, 메모리 어레이(110)는 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소 전체를 곱셈기 회로(120A) 및 합산 회로(130) 각각에 출력하도록 구성된다. 일부 실시예에서, 메모리 어레이(110)는 곱셈기 회로(120A)에 각각의 데이터 요소의 부호 가수만을 출력하고 합산 회로(130)에 각각의 데이터 요소의 지수만 출력하도록 구성된다.
곱셈기 회로(120A)는, 예컨대 메모리 어레이(110)로부터, 데이터 요소 InDE의 각각의 데이터 요소의 부호 비트 InS와 가수 InM(총칭하여 부호 가수 InS/InM) 및 데이터 요소 WtDE의 각각의 데이터 요소의 부호 비트 WtS와 가수 WtM(총칭하여 부호 가수 WtS/WtM)을 수신하도록 구성된, 전자 회로, 예컨대 집적 회로(IC)이다. 합산 회로(130)는, 예컨대 메모리 어레이(110)로부터, 데이터 요소 InDE의 각각의 데이터 요소의 지수 InE 및 데이터 요소 WtDE의 각각의 데이터 요소의 지수 WtE를 수신하도록 구성된, 전자 회로, 예컨대 IC이다.
곱셈기 회로(120A)는 부호 가수 InS/InM 및 WtS/WtM의 인스턴스를 수신하도록 구성된 하나 이상의 데이터 레지스터(레이블링되지 않음)를 포함한다. 도 1a에 도시된 실시예에서, 곱셈기 회로(120A)는 각각 총 4개의 데이터 요소를 갖는 데이터 요소 InDE 및 WtDE에 대응하는 부호 가수 InS/InM 및 WtS/WtM의 인스턴스를 수신하도록 구성된다. 일부 실시예에서, 곱셈기 회로(120A)는 총 개수가 4보다 적거나 큰 데이터 요소 InDE 및 WtDE 중 하나 또는 둘 다에 대응하는 부호 가수 InS/InM 및 WtS/WtM의 인스턴스를 수신하도록 구성된다.
일부 실시예에서, 곱셈기 회로(120A)는 숨겨진 MSB를 포함하는 부호 가수 InS/InM 및/또는 WtS/WtM의 인스턴스를 수신하도록 구성된 하나 이상의 데이터 레지스터를 포함한다. 일부 실시예에서, 곱셈기 회로(120A)는 숨겨진 MSB를 부호 가수 InS/InM 및/또는 WtS/WtM의 수신된 인스턴스에 추가하도록 구성된 하나 이상의 데이터 레지스터를 포함한다.
곱셈기 회로(120A)는, 동작 시, 부호 가수 InS/InM의 각각의 인스턴스를 2의 보수 가수 InTC(재포맷된 가수 InTC라고도 함)로 재포맷하고 부호 가수 WtS/WtM의 각각의 인스턴스를 2의 보수 가수 WtTC(재포맷된 가수 WtTC라고도 함)로 재포맷하도록 구성된 논리 회로(도시되지 않음)를 포함한다. 재포맷된 가수 InTC는 부호 가수 InS/InM과 동일한 비트 수를 갖고, 재포맷된 가수 WtTC는 부호 가수 WtS/WtM과 동일한 비트 수를 갖는다.
곱셈기 회로(120A)는, 동작 시, 재포맷된 가수 InTC의 인스턴스 중 일부 또는 전부를 재포맷된 가수 WtTC의 일부 또는 전부와 곱함으로써 수 N+1의 곱 P[0]-P[N]을 생성하도록 구성된 하나 이상의 논리 게이트 M1를 포함한다. 다양한 실시예에서, 하나 이상의 논리 게이트 M1는 하나 이상의 AND 또는 NOR 게이트 또는 곱셈 연산의 일부 또는 전부를 수행하기에 적합한 다른 회로를 포함한다. 하나 이상의 논리 게이트 M1는, 동작 시, 재포맷된 가수 InTC 및 WtTC의 비트 수의 두 배와 동일한 비트 수 마이너스 1을 포함하는 2의 보수 데이터 요소로서 각각의 곱 P[0]-P[N]을 생성하도록 구성된다.
곱셈기 회로(120A)는, 동작 시, 데이터 요소 InDE의 데이터 요소 수와 데이터 요소 WtDE의 데이터 요소 수를 곱한 것과 동일한, 수 N+1의 곱 P[0]-P[N]을 생성하도록 구성된다. 도 1a에 도시된 실시예에서, 곱셈기 회로(120A)는 16과 동일한, 수 N+1의 곱 P[0]-P[N]을 생성하도록 구성된다. 일부 실시예에서, 곱셈기 회로(120A)는 16보다 적거나 큰, 수 N+1의 곱 P[0]-P[N]을 생성하도록 구성된다. 일부 실시예에서, 곱셈기 회로(120A)는, 차동 회로(140) 및 시프팅 회로(150)에 관련하여 아래에서 설명되는 바와 같이, 제1 차이 임계값을 조건으로 하는 N+1과 동일한 수를 갖는 곱 P[0]-P[N]을 생성하도록 구성된다.
일부 실시예, 예컨대 데이터 요소 InDE 및 WtDE가 BF16 포맷을 갖는 실시예에서, 곱셈기 회로(120A)는, 부호 가수 InS/InM 및 WtS/WtM와 재포맷된 가수 InTC와 WtTC 각각이 총 9 비트를 갖는 것에 기초하여, 총 17 비트를 갖는 곱 P[0]-P[N] 각각을 생성하도록 구성된다. 일부 실시예, 예컨대 데이터 요소 InDE 및 WtDE가 FP16 포맷을 갖는 실시예에서, 곱셈기 회로(120A)는, 부호 가수 InS/InM 및 WtS/WtM와 재포맷된 가수 InTC와 WtTC 각각이 총 12 비트를 갖는 것에 기초하여, 총 23 비트를 갖는 곱 P[0]-P[N] 각각을 생성하도록 구성된다. 부호 가수 InS/InM 및 WtS/WtM와 재포맷된 가수 InTC 및 WtTC 각각이 다른 총 비트 수를 갖는 것에 기초하여 다른 총 비트 수를 갖는 곱 P[0]-P[N] 각각을 생성하도록 곱셈기 회로(120A)가 구성되는 실시예는 본 개시의 범위 내에 있다.
그에 의해 곱셈기 회로(120A)는, 동작 시, 입력 데이터 요소 InDE 및 가중 데이터 요소 WtDE의 부호 및 가수 비트에 대해 곱셈 및 재포맷 연산을 수행하여 2의 보수 곱 P[0]-P[N]을 생성하도록 구성된다.
곱셈기 회로(120A)는, 아래에 더 설명되는 바와 같이, 데이터 버스(레이블링되지 않음)를 통해 시프팅 회로(150)에 곱 P[0]-P[N]을 출력하도록 구성된다.
합산 회로(130)는, 곱셈기 회로(120)에 관련하여 위에서 설명된 데이터 요소 InDE 및 WtDE의 데이터 요소 수에 대응하는 지수 InE 및 WtE의 인스턴스를 수신하도록 구성된 하나 이상의 데이터 레지스터(레이블링되지 않음)를 포함한다.
합산 회로(130)는, 동작 시, 지수 InE의 각각의 인스턴스를 지수 WtE의 각각의 인스턴스에 더하도록 구성된, 하나 이상의 논리 게이트 A1를 포함한다. 다양한 실시예에서, 하나 이상의 논리 게이트 A1는 하나 이상의 전가산기 게이트, 반가산기 게이트, 리플-캐리 가산기 회로, 캐리-저장 가산기 회로, 캐리-선택 가산기 회로, 캐리-룩-어헤드 가산기 회로, 또는 가산 연산의 일부 또는 전부를 수행하는 데 적합한 다른 회로를 포함한다. 하나 이상의 논리 게이트 A1는, 지수 InE 및 WtE 각각의 비트 수 플러스 1과 동일한 총 비트 수를 갖는 데이터 요소로서 합 S[0]-S[N]을 생성하도록 구성된다.
합산 회로(130)는, 동작 시, 곱셈기 회로(120A 및 120B)에 관련하여 위에서 설명된 곱 P[0]-P[N]의 데이터 요소의 총 수 N+1 및 순서(ordering)에 대응하는, 데이터 요소의 총 수 N+1 및 순서를 갖는 합 S[0]-S[N]을 생성하도록 구성된다. 따라서, 데이터 요소 InDE 및 WtDE의 총 N 조합에 대하여, 각각의 n번째 조합은 합 S[0]-S[N] 중 n번째 합 S[n]과 곱 P[0]-P[N] 중 n번째 곱 P[n] 둘 다에 대응한다.
일부 실시예, 예컨대 데이터 요소 InDE 및 WtDE가 BF16 포맷을 갖는 실시예에서, 합산 회로(130)는, 지수 InE 및 WtE 각각이 총 8 비트를 갖는 것에 기초하여, 총 9 비트를 갖는 합 S[0]-S[N] 각각을 생성하도록 구성된다. 일부 실시예, 예컨대 데이터 요소 InDE 및 WtDE가 FP16 포맷을 갖는 실시예에서, 합산 회로(130)는, 지수 InE 및 WtE 각각이 총 5 비트를 갖는 것에 기초하여, 총 6 비트를 갖는 합 S[0]-S[N] 각각을 생성하도록 구성된다. 지수 InE 및 WtE 각각이 다른 총 비트 수를 갖는 것에 기초하여 다른 총 비트 수를 갖는 합 S[0]-S[N] 각각을 생성하도록 합산 회로(130)가 구성되는 것은 본 개시의 범위 내에 있다.
합산 회로(130)는, 데이터 버스(레이블링되지 않음)를 통해 차동 회로(140)로 합 S[0]-S[N]을 출력하도록 구성된다.
차동 회로(140)는, 각각이 합산 회로(130)로부터 합 S[0]-S[N]을 수신하도록 구성된, 하나 이상의 논리 게이트 L1 및 하나 이상의 논리 게이트 B1를 포함하는, 전자 회로, 예컨대 IC이다.
하나 이상의 논리 게이트 L1는, 동작 시, 합 S[0]-S[N]의 데이터 요소의 최대값과 동일한 값을 가지며 합 S[0]-S[N]의 데이터 요소의 비트 수와 동일한 비트 수를 갖는 데이터 요소로서 최대 합 MaxExp를 생성하도록 구성된다. 하나 이상의 논리 게이트 L1는, 아래에서 설명되는 바와 같이, 하나 이상의 논리 게이트 B1에 그리고 변환기 회로(180)에 최대 합 MaxExp를 출력하도록 구성된다.
하나 이상의 논리 게이트 B1는, 동작 시, 최대 합 MaxExp에서 합 S[0]-S[N]의 각각의 데이터 요소를 감산함으로써 차이 D[0]-D[N]을 생성하도록 구성된다. 그에 의해 차이 D[0]-D[N]은, 위에서 설명된 합 S[0]-S[N] 및 곱 P[0]-P[N]의 경우에 대응하는 데이터 요소의 총 수 N+1 및 순서를 갖는다.
도 1a에 도시된 실시예에서, 하나 이상의 논리 게이트 B1는 데이터 버스(레이블링되지 않음)를 통해 곱셈기 회로(120A) 및 시프팅 회로(150) 각각에 차이 D[0]-D[N]를 출력하도록 구성된다.
도 1a에 도시된 실시예에서, 곱셈기 회로(120A)는, 동작 시, 차이 D[0]-D[N]을 수신하고, 차이 D[0]-D[N]의 각각의 인스턴스 D[n]을 제1 차이 임계값(도 1a에 도시되지 않음)과 비교하고, 차이가 제1 차이 임계값보다 작은 경우에만 곱셈 연산을 수행함으로써 곱 P[0]-P[N]의 대응하는 인스턴스 P[n]을 생성하도록 구성된다.
차이 D[0]-D[N]의 주어진 인스턴스 D[n]에 대하여, 차이 D[n]가 제1 차이 임계값보다 작은 것은, 합 S[0]-S[N] 중 대응하는 인스턴스 S[n]가 최대 합 MaxExp 마이너스 제1 차이 임계값보다 큰 값을 갖는 것을 나타낸다. 시프팅 회로(150)와 관련하여 아래에 설명되는 바와 같이, 이러한 인스턴스 S[n]에 대응하는 곱 P[0]-P[N] 중 인스턴스 P[n]만이, 가산기 트리(160)에 의해 수행되는 후속 합산 연산에 영향을 미칠 수 있다. 따라서, 차이가 제1 차이 임계값보다 작은 경우에만 곱셈 연산을 수행함으로써, 곱셈 연산이 항상 수행되는 실시예에 비교하여 더 적은 전력이 소비된다.
일부 실시예에서, 하나 이상의 논리 게이트 B1는 곱셈기 회로(120A)에 차이 D[0]-D[N]를 출력하도록 구성되지 않고, 곱셈기 회로(120A)는 곱셈 연산을 항상 수행함으로써 곱 P[0]-P[N]의 각각의 인스턴스 P[n]을 생성하도록 구성된다. 이러한 실시예에서, 곱셈기 회로(120A)는 차이 D[n]이 제1 차이 임계값보다 작은 경우에만 곱셈 연산이 수행되는 실시예에 비교하여 덜 복잡하다.
시프팅 회로(150)는, 차이 D[0]-D[N] 중 대응하는 인스턴스 D[n]의 값에 기초하여 곱 P[0]-P[N]의 각각의 인스턴스 P[n]에 대한 시프팅 연산을 수행하도록 구성된, 하나 이상의 레지스터 및/또는 논리 게이트를 포함하는, 전자 회로, 예컨대 IC이다.
곱 P[0]-P[N]의 각각의 인스턴스 P[n]는 데이터 요소 InDE 및 WtDE의 대응하는 조합의 부호 및 가수에 기초하고, 차이 D[0]-D[N]의 각각의 인스턴스 D[n]는 동일 조합의 지수의 합에 기초한다. 시프팅 회로(150)는, 동작 시, 곱 P[0]-P[N]의 각각의 인스턴스 P[n]을 대응하는 차이 D[n]와 동일한 양만큼 오른쪽 시프트함으로써 시프트된 곱 SP[0]-SP[N]을 생성하도록 구성되며, 여기서 부호 및 가수 비트는 차이 D[0]-D[N]를 생성하는 데 사용되는 합산 지수에 따라 정렬된다. 이 정렬에 기초하여, 시프팅 회로(150)는 기준선으로서 최대 합 MaxExp를 사용하여 동일 지수를 갖는 시프트된 곱 SP[0]-SP[N]의 각각의 인스턴스 SP[n]을 생성하도록 구성된다.
오른쪽 시프트 연산을 보상하기 위해, 시프팅 회로(150)는 각각의 곱 P[n]의 부호 비트(0 또는 1)의 인스턴스를 대응하는 시프트된 곱 SP[n]의 가장 왼쪽 비트로서 추가하도록 구성된다. 부호 비트의 추가된 인스턴스 수는 대응하는 차이 D[n]에 의해 결정되는 오른쪽 시프트의 양과 동일하다.
일부 실시예에서, 시프팅 회로(150)는 곱 P[0]-P[N]의 비트 수보다 많은 비트 수를 갖는 시프트된 곱 SP[0]-SP[N]을 생성하도록 구성된다. 이러한 실시예에서, 시프팅 회로(150)는 필요에 따라, 후행(trailing) 제로 비트를 시프트된 곱 SP[0]-SP[N]의 가장 오른쪽 비트로서 추가하도록 구성된다. 시프트된 곱 SP[0]-SP[N]과 곱 P[0]-P[N]의 비트 수 간의 차이는 제2 차이 임계값을 정의하며, 그리하여 제2 차이 임계값 이하의 차이 D[n]는 하나 이상의 제로 비트가 추가된 경우에 대응하고 제2 차이 임계값보다 큰 차이 D[n]는 제로 비트가 추가되지 않은 경우에 대응하도록 한다.
시프트된 곱 SP[0]-SP[N]과 곱 P[0]-P[N]의 비트 수 간의 차이가 증가할수록, 시프트된 곱 SP[0]-SP[N]의 분해능이 증가하고 시프팅 회로(150)의 복잡도가 증가한다. 일부 실시예에서, 시프트된 곱 SP[0]-SP[N]과 곱 P[0]-P[N]의 비트 수 간의 차이는 2 내지 8 범위의 값을 갖는다. 일부 실시예에서, 시프트된 곱 SP[0]-SP[N]과 곱 P[0]-P[N]의 비트 수 간의 차이는 4이다.
시프트된 곱 SP[0]-SP[N]의 각각의 데이터 요소의 가수 비트의 수는, 곱셈기 회로(120) 및 차동 회로(140)에 관련하여 위에서 설명된 제1 차이 임계값에 대응한다. 제1 차이 임계값보다 작은 차이 D[n]는, 대응하는 곱 P[n]의 적어도 1 비트가 대응하는 시프트된 곱 SP[n]에 포함되는 경우에 대응하고, 제1 차이 임계값 이상의 차이 D[n]는, 대응하는 곱 P[n]의 어떤 비트도 대응하는 시프트된 곱 SP[n]에 포함될 수 없는 경우에 대응한다. 따라서, 시프팅 회로(150)는, 동작 시, 대응하는 차이 D[n]가 제1 차이 임계값보다 작은 것에 기초하여 대응하는 곱 P[n]으로부터 각각의 시프트된 곱 SP[n]을 생성하고, 대응하는 차이 D[n]가 제1 차이 임계값 이상인 것에 기초하여 각각의 시프트된 곱 SP[n]을 제로 값 데이터 요소(전부 제로 비트)로서 생성하도록 구성된다.
일부 실시예, 예컨대 데이터 요소 InDE 및 WtDE가 BF16 포맷을 갖는 실시예에서, 시프트 회로(150)는 도 3 및 도 5에 관련하여 아래에 설명되는 바와 같이, 곱 P[0]-P[N]의 각각이 총 17 비트를 갖는 것에 기초하여 총 21 비트를 갖는 시프트된 곱 SP[0]-SP[N] 각각을 생성하도록 구성된다. 일부 실시예, 예컨대 데이터 요소 InDE 및 WtDE가 FP16 포맷을 갖는 실시예에서, 시프트 회로(150)는 도 6 및 도 7에 관련하여 아래에 설명되는 바와 같이, 곱 P[0]-P[N]의 각각이 총 23 비트를 갖는 것에 기초하여 총 27 비트를 갖는 시프트된 곱 SP[0]-SP[N] 각각을 생성하도록 구성된다. 곱 P[0]-P[N] 각각이 다른 총 비트 수를 갖는 것에 기초하여 다른 총 비트 수를 갖는 시프트된 곱 SP[0]-SP[N] 각각을 생성하도록 시프트 회로(150)가 구성되는 것은 본 개시의 범위 내에 있다.
일부 실시예에서, 시프팅 회로(150)는 도 2와 관련하여 아래에 설명되는 시프팅 회로(200)를 포함한다. 일부 실시예에서, 시프팅 회로(150)는 도 4와 관련하여 아래에 설명되는 시프팅 회로(400)를 포함한다.
곱 P[0]-P[N]이 2의 보수 포맷을 갖는 것에 기초하여, 시프팅 회로(150)는 2의 보수 포맷을 갖는 시프트된 곱 SP[0]-SP[N]을 생성하도록 구성된다.
시프팅 회로(150)는 데이터 버스(레이블링되지 않음)를 통해 가산기 트리(160)로 시프트된 곱 SP[0]-SP[N]을 출력하도록 구성된다.
가산기 트리(160)는, 예컨대 하나 이상의 논리 게이트 A1에 관련하여 위에서 설명된 바와 같이, 하나 이상의 논리 게이트(도시되지 않음)의 다수의 층을 포함하는 전자 회로, 예컨대 IC이며, 여기서 처음 층은 시프트된 곱 SP[0]-SP[N]을 수신하도록 구성되고 마지막 층은 시프트된 곱 SP[0]-SP[N]의 합에 대응하는 데이터 요소로서 합 PSTC를 생성하도록 구성된다. 일부 실시예에서, 처음 층과 마지막 층 사이의 하나 이상의 연속 층의 각각은, 이전 층에 의해 생성된 제1 수의 합 데이터 요소를 수신하고, 제1 수의 합 데이터 요소에 기초하여 제2 수의 합 데이터 요소를 생성하도록 구성되며, 제2 수는 제1 수의 절반이다. 따라서, 층의 총 수는 처음 및 마지막 층과 각각의 연속 층(존재하는 경우)을 포함한다.
가산기 트리(160)는, 동작 시, 일부 실시예에서 부분 합 PSTC 또는 가수 합 PSTC라고도 하는 합 PSTC를 생성하도록 구성되며, 이는 시프트된 곱 SP[0]-SP[N]의 비트 수 및 데이터 요소 수에 대응하는 총 비트 수를 갖는다. 일부 실시예에서, 합 PSTC의 비트 수는, 시프트된 곱 SP[0]-SP[N]의 비트 수 플러스 시프트된 곱 SP[0]-SP[N]의 데이터 요소 수를 나타낼 수 있는 비트 수와 동일하다. 일부 실시예에서, 합 PSTC의 비트 수는, 시프트된 곱 SP[0]-SP[N]의 비트 수 플러스 시프트된 곱 SP[0]-SP[N]의 16 데이터 요소를 나타낼 수 있는 4 비트와 동일하다.
일부 실시예, 예컨대 데이터 요소 InDE 및 WtDE가 BF16 포맷을 갖는 실시예에서, 가산기 트리(160)는, 시프트된 곱 SP[0]-SP[N]의 각각이 총 21 비트를 갖는 것에 기초하여, 총 25 비트를 갖는 합 PSTC를 생성하도록 구성된다. 일부 실시예, 예컨대 데이터 요소 InDE 및 WtDE가 FP16 포맷을 갖는 실시예에서, 가산기 트리(160)는, 시프트된 곱 SP[0]-SP[N]의 각각이 총 27 비트를 갖는 것에 기초하여, 총 31 비트를 갖는 합 PSTC를 생성하도록 구성된다. 시프트된 곱 SP[0]-SP[N]의 각각이 다른 총 비트 수를 갖는 것에 기초하여 합 PSTC를 생성하도록 가산기 트리(160)가 구성되는 것은 본 개시의 범위 내에 있다.
시프트된 곱 SP[0]-SP[N]이 2의 보수 포맷을 갖는 것에 기초하여, 가산기 트리(160)는 2의 보수 포맷을 갖는 합 PSTC를 생성하도록 구성된다.
도 1a에 도시된 실시예에서, 가산기 트리(160)는 데이터 버스(레이블링되지 않음)를 통해 변환기(170)로 합 PSTC를 출력하도록 구성된다. 일부 실시예에서, 가산기 트리(160)는 회로(100) 외부의 회로(도시되지 않음)로 합 PSTC를 출력하도록 구성된다.
변환기(170)는, 동작 시, 가산기 트리(160)로부터 합 PSTC를 수신하고 합 PSTC를 2의 보수로부터 부호 플러스 가수 포맷을 갖는 합 PSSM으로 변환하도록 구성된 논리 회로를 포함하는, 전자 회로, 예컨대 IC이다. 변환기(170)는 합 PSTC의 비트 수와 동일한 비트 수를 갖는 합 PSSM을 생성하도록 구성된다.
도 1a에 도시된 실시예에서, 변환기(170)는 데이터 버스(레이블링되지 않음)를 통해 변환기(180)로 합 PSSM을 출력하도록 구성된다. 일부 실시예에서, 변환기(170)는 회로(100) 외부의 회로(도시되지 않음)로 합 PSSM을 출력하도록 구성된다. 일부 실시예에서, 변환기(170)는, 도 8과 관련하여 아래에 설명되는 가산기(830)로 합 PSSM을 출력하도록 구성된다.
변환기(180)는, 동작 시, 변환기(170)로부터 합 PSSM을 그리고 차동 회로(140)로부터 최대 합 MaxExp를 수신하고, 합 PSSM을 부호 플러스 가수 포맷으로부터 합 PSSM 및 MaxExp에 기초하며 부호 플러스 가수 포맷, 예컨대 위에서 설명된 부동 소수점 포맷과는 상이한 출력 포맷을 갖는 합 PS로 변환하도록 구성된 논리 회로를 포함하는, 전자 회로, 예컨대 IC이다. 일부 실시예에서, 변환기(180)는 회로(100) 외부의 회로(도시되지 않음)와 호환되도록 구성된 합 PS를 생성하도록 구성된다.
도 1a에 도시된 실시예에서, 변환기(180)는 회로(100) 외부의 회로(도시되지 않음), 예컨대 메모리 어레이 또는 CNN의 일부로서 회로(100)의 다른 인스턴스에 합 PS를 출력하도록 구성된다. 일부 실시예에서, 변환기(180)는, 도 8과 관련하여 아래에 설명되는 가산기(830)에 합 PS를 출력하도록 구성된다.
도 1b에 도시된 실시예에서, 회로(100)는, 곱셈기 회로(120A) 대신 곱셈기 회로(120B)를 포함하는 것을 제외하고는, 도 1a에 관련하여 위에서 설명된 바와 같이 구성된다.
곱셈기 회로(120B)는, 부호 비트 InS 및 WtS와 가수 InM 및 WtM을 수신하고, 예컨대 다양한 데이터 요소 포맷과 관련되며 차이 D[0]-D[N]에 기초하여 곱셈 연산을 조건부로 수행하는 것으로서, 곱셈기 회로(120A)에 관련하여 위에서 설명된 실시예 각각에 따라 곱 P[0]-P[N]을 생성하도록 구성된 전자 회로이다.
곱셈기 회로(120B)는, 곱셈기 회로(120A)에 관련하여 위에서 설명된 하나 이상의 논리 게이트 M1를 포함하고, 또한 XOR(exclusive OR) 게이트 X1도 포함한다.
XOR 게이트 X1은, 부호 비트 InS 및 WtS를 수신하도록 구성된 2개의 입력 단자를 포함하고, 동작 시, 표 1의 배타적 OR 논리에 기초하여 출력 단자에서 부호 비트 SB를 생성하도록 구성된다.
도 1b에 도시된 바와 같이, 곱셈기 회로(120B)는, 가수 InM 및 WtM를 수신하고, 가수 InM 및 WtM에 대해 곱셈 연산을 수행함으로써 가수 곱 MP을 생성하도록 구성된 하나 이상의 논리 게이트 M1를 포함한다.
곱셈기 회로(120B)는, 동작 시, 가수 곱 MP와 결합된 부호 비트 SB를, 곱 P[0]-P[N] 중 주어진 곱 P[n]으로서 2의 보수 포맷으로 변환하도록 구성된 하나 이상의 논리 회로를 포함한다.
그에 의해 곱셈기 회로(120B)는, 동작 시, 입력 데이터 요소 InDE 및 가중 데이터 요소 WtDE의 부호 및 가수 비트에 대해 곱셈 및 재포맷 연산을 수행하여 2의 보수 곱 P[0]-P[N]을 생성하도록 구성된다. 곱셈기 회로(120A)에 비교하여, 곱셈기 회로(120B)는 곱셈 및 재포맷 연산을 더 빠른 속도로, 더 적은 전력을 사용하여, 그리고/또는 더 작은 영역을 사용함으로써 수행할 수 있다.
위에서 설명된 실시예 각각에서, 회로(100)는 그에 의해 입력 데이터 요소 InDE 및 가중 데이터 요소 WtDE의 지수 비트로부터 부호 및 가수 비트를 분리함으로써 데이터 계산을 수행하도록 구성된다. 곱셈기 회로(120A 또는 120B)는 입력 및 가중 데이터의 부호 및 가수 비트에 대해 곱셈 및 재포맷 연산을 수행하여 2의 보수 곱 P[0]-P[N]을 생성하고, 합산 회로(130)는 입력 데이터의 지수를 가중 데이터의 지수에 더하여 합 S[0]-S[N]을 생성한다. 시프팅 회로(150)는 합 S[0]-S[N]과 최대 합 MaxExp 사이의 차이에 기초하여 곱을 시프트하고, 가산기 트리(160)는 시프트된 곱 SP[0]-SP[N]을 함께 더하여 부분 합 PSTC를 생성한다. 그에 의해 회로(100)는, 부동 소수점 데이터가 고정 소수점 데이터로 변환되는 일부 접근 방식에 존재하는 양자화 오류 없이, 다른 접근 방식보다 적은 시간, 영역 및 전력을 사용하여 부동 소수점 부분 합 계산을 수행하도록 구성된다.
도 2는 일부 실시예에 따른 시프팅 회로(200)의 개략도이다. 시프팅 회로(200)는 도 1a와 관련하여 위에서 설명된 시프팅 회로(150)의 일부 또는 전부로서 사용 가능하다. 도 2에 도시된 실시예에서, 시프팅 회로(200)는 BF16 포맷을 갖는 데이터 요소 InDE 및 WtDE와 총 21 비트를 갖는 시프트된 곱 SP[0]-SP[N]에 대응한다.
도 2에 도시된 실시예에서, 시프팅 회로(200)는 선택 회로 S0-S19를 포함하고, 이들 중 선택 회로 S0, S18 및 S19가 도 2에 도시되어 있다. 선택 회로 S0-S19의 각각은, 도 1a와 관련하여 위에서 설명된 차이 D[n]를 나타내는 신호 DIFF[4:0]를 수신하도록 구성된다.
선택 회로 S0-S19의 각각은, 부호 비트 S를 포함하는 총 17 비트를 각각 갖는 곱 P[0]-P[N]의 곱 P[n]의 16 가수 비트에 대응하는 신호 M[0]-M[15]의 일부 또는 전부를 수신하도록 구성된다. 선택 회로 S0-S19의 각각은 또한 제로 비트 0을 수신하도록 구성되고, 선택 회로 S1-S19의 각각은 곱 P[n]의 부호 비트 S도 수신하도록 구성된다.
선택 회로 S0은 모든 신호 M[0]-M[15]를 수신하도록 구성되고, 선택 회로 S19는 신호 M[15]만 수신하도록 구성된다. 선택 회로 S1-S18의 각각은 신호 M[0]-M[15]의 서브세트를 수신하도록 구성되며, 서브세트는 각각의 선택 회로 번호가 증가함에 따라 수가 하나씩 감소한다. 선택 회로 S18가 신호 M[14] 및 M[15]를 수신하도록 구성되는 것으로 예시된 바와 같이, 가장 높은 인덱스 번호를 갖는 신호는 각각의 서브세트에 포함된다.
신호 M[0]-M[15], 제로 비트 0 및 부호 비트 S에 기초하여, 선택 회로 S0-S19는, 동작 시, 곱 P[n]에 대응하는 시프트된 곱 SP[n]의 가수 비트에 대응하는 각자의 신호 O[0]-O[19]를 생성하도록 구성된다. 신호 DIFF[4:0]에 응답하여, 선택 회로 S0는 신호 M[0]-M[15] 중 하나 또는 제로 비트 0를 선택함으로써 신호 O[0]을 생성하도록 구성되고, 선택 회로 S19는 신호 M[15], 제로 비트 0 또는 부호 비트 S 중 하나를 선택함으로써 신호 O[19]를 생성하도록 구성되고, 선택 회로 S1-S18의 각각은 신호 M[1]-M[15]의 대응하는 서브세트, 제로 비트 0 또는 부호 비트 S 중 하나를 선택함으로써 신호 O[1]-O[18] 중 대응하는 신호를 생성하도록 구성된다.
도 2에 도시된 실시예에서, 20 가수 비트를 갖는 시프트된 곱 SP[n]은, 시프팅 회로(150)에 관련하여 위에서 설명된 바와 같이, 제1 차이 임계값이 20인 것에 대응한다. 따라서, 선택 회로 S0-S19 및 신호 DIFF[4:0]는, 차이 D[n]가 20 이상인 값을 갖는 것에 응답하여, 신호 O[0]-O[19] 각각을 제로 비트 0으로서 생성하도록 구성된다.
도 2에 도시된 선택 회로의 수 및 신호 구성은 예시의 목적으로 제공된 비한정적인 예이다. 일부 실시예에서, 시프팅 회로(200)는, 도 1a와 관련하여 위에서 설명된 바와 같이, BF16 포맷 이외의 포맷에 대응하는 신호로부터 시프트된 신호를 생성하도록 유사하게 구성된 더 적거나 더 많은 수의 선택 회로를 포함한다.
위에서 설명된 구성에 의해, 시프팅 회로(200)는, 시프팅 회로(200)를 포함하는 회로가 데이터 계산 회로(100)에 관련하여 위에서 설명된 이점을 실현할 수 있도록 시프팅 회로(150) 및 도 1a에 관련하여 위에서 설명된 동작을 실행할 수 있다.
도 3은 일부 실시예에 따른 시프팅 회로, 예컨대 시프팅 회로(200)의 데이터 요소(300)의 도면이다. 도 1a 및 도 2와 관련하여 위에서 설명된 바와 같이, 데이터 요소(300)는, 데이터 요소 InDE 및 WtDE가 BF16 포맷을 갖고 시프트된 곱 SP[0]-SP[N]이 21 비트를 갖는 실시예에 대응한다.
데이터 요소(300)는, 9 비트를 갖는 차이 D[n]에 대응하는 신호 DIFF[8:0], 신호 값 DIFF, 및 각각의 신호 값 DIFF에 대한 시프트된 곱 SP[n]에 대응하는 출력 신호 O[0]-O[20]를 포함한다. 출력 신호 O[0]-O[19]는 도 2에 도시된 선택 회로 S0-S19의 출력에 대응하고, 출력 신호 O[20]은 곱 P[n]의 부호 비트 S에 대응한다.
도 3에 도시된 실시예에서, 제2 차이 임계값은 4이고, 신호 O[0]-O[3] 중 하나 이상은, 4 이하인 신호 값 DIFF에 따라 제로 비트 0을 포함한다. 20인 제2 차이 임계값 이상인 신호 값 DIFF에 대하여, 신호 O[0]-O[20] 각각은 제로 비트 0을 포함한다. 20인 제2 차이 임계값보다 작은 신호 값 DIFF에 대하여, 신호 O[0]-O[20]는 선행(leading) 부호 비트 S와 함께 신호 값 DIFF만큼 오른쪽 시프트된 신호 M[0]-M[15]를 포함한다. 부호 비트 S의 수는 곱 P[n]의 부호 비트 S 플러스 신호 값 DIFF와 동일한 추가 부호 비트 S의 수에 대응한다.
도 4는 일부 실시예에 따른 시프팅 회로(400)의 개략도이다. 시프팅 회로(400)는 도 1a와 관련하여 위에서 설명된 시프팅 회로(150)의 일부 또는 전부로서 사용 가능하다. 도 4에 도시된 실시예에서, 시프팅 회로(400)는, BF16 포맷을 갖는 데이터 요소 InDE 및 WtDE와 총 21 비트를 갖는 시프트된 곱 SP[0]-SP[N]에 대응한다.
시프팅 회로(400)는 위에서 설명된 회로(200)와 기능적으로 동일하며 아래에 설명되는 바와 같이 상이한 구성을 갖는다. 도 4는, 도 2 및 도 3에 관련하여 위에서 각각 설명된, 신호 M[0]-M[15], O[0]-[19] 및 DIFF[4:0], 부호 비트 S 및 제로 비트 0을 도시한다.
시프팅 회로(400)는 제1 스테이지 및 제2 스테이지를 포함한다. 도 4에 도시된 실시예에서, 제1 스테이지는 신호 DIFF[1:0]를 수신하도록 각각 구성된 선택 회로 FS1-FS19(도 4에 도시된 FS1, FS2, FS18 및 FS19)를 포함하고, 제2 스테이지는 신호 DIFF[4:2]를 수신하도록 각각 구성된 회로 SS1-SS5를 포함한다.
선택 회로 FS1-FS19의 각각은 신호 M[0]-M[15]의 서브세트 및 부호 비트 S나 제로 비트 0을 수신하도록 구성된다. 선택 회로 FS1-FS19의 각각은, 도 4에 도시된 바와 같이, 1 내지 4 범위의 수를 갖는 서브세트, 및 일부 경우에는 부호 비트 S 또는 제로 비트 0의 하나 이상의 인스턴스를 수신하도록 구성된 총 4개의 입력을 포함한다. 동작 시, 신호 DIFF[1:0]에 응답하여, 선택 회로 FS1-FS19의 각각은 그에 의해, 신호 M[0]-M[15], 부호 비트 S 또는 제로 비트 0 중 미리 결정된 하나를, 일부 실시예에서 중간 신호 또는 데이터 요소 INT[1]-INT[19]로도 지칭되는 신호 INT[1]-INT[19] 중 대응하는 신호로서 출력하도록 구성된다. 신호 INT[1]-INT[19]에 추가적으로, 중간 신호 INT[0]-INT[19]는 제로 비트 0을 갖는 신호 INT[0]을 포함한다.
도 4에 도시된 바와 같이, 선택 회로 SS1-SS5 각각은 중간 신호 INT[0]-INT[19]의 서브세트 및 제로 비트 0를 수신하도록 구성되고, 선택 회로 SS2-SS5 각각은 부호 비트 S를 수신하도록 구성된다. 동작 시, 신호 DIFF[4:2]에 응답하여, 선택 회로 SS1-SS5의 각각은 신호 O[0]-O[19]의 각자의 4비트 부분을 출력하도록 구성된다: O[3:0], O[7:4], O[11:8], O[15:12], 또는 O[19:16].
신호 O[0]-O[19]의 4비트 부분은, 도 3과 관련하여 위에서 설명된 데이터 요소(300)의 도면인, 도 5에 예시된 데이터 패턴에 대응한다. 도 5에 도시된 데이터 요소(300)의 제1 하이라이트 부분에 의해 표시된 바와 같이, 신호 DIFF[1:0]은 신호 값 DIFF의 4개의 가능한 값의 범위에 그리고 도 4에 도시된 중간 신호 INT[0]-INT[19]의 4개의 가능한 조합에 대응한다.
추가 하이라이트 부분은, 중간 신호 INT[0]-INT[19]의 4개의 조합 및 신호 DIFF[4:2]의 조합에 응답하여 선택 회로 SS1-SS5에 의해 출력되는 신호 O[0]-O[19]의 5개의 4비트 부분에 대응한다. 하이라이트 부분은, 각각 중간 신호 INT[0]-INT[19]에 기초하며 신호 DIFF[4:2]에 따라 신호 O[0]-O[19] 내에서 오른쪽 시프트된 4개 행의 블록들이다. 따라서, 동일한 비트 구성을 갖는 블록들이 내림차순 대각선을 따라 정렬된다.
도 4에 도시되고 도 5에 예시된 바와 같이, 시프팅 회로(400)는, 2개의 LSB, DIFF[1:0]에 대응하는 4개 조합을 갖는 중간 신호 INT[0]-INT[19]를 생성하도록 구성된 제1 스테이지, 및 4개 조합에 기초하며 나머지 비트 DIFF[4:2]의 일부에 따라 오른쪽 시프트된 신호 O[0]-O[19]의 1개 내지 5개 블록을 생성하도록 구성된 제2 스테이지를 포함한다.
일부 실시예에서, 시프팅 회로(400)는 FP16 포맷을 갖는 데이터 요소 InDE 및 WtDE에 따라 구성된(도시되지 않음) 제1 및 제2 스테이지를 포함한다. 도 6은, 도 1a 및 도 2와 관련하여 위에서 설명된 바와 같이, 데이터 요소 InDE 및 WtDE가 FP16 포맷을 갖고 시프트된 곱 SP[0]-SP[N]이 27 비트를 갖는 일부 실시예에 따른 시프팅 회로, 예컨대 시프팅 회로(200 또는 400)의 데이터 요소(600)의 도면이다.
데이터 요소(600)는, 6 비트를 갖는 차이 D[n]에 대응하는 신호 DIFF[5:0], 신호 값 DIFF, 및 각각의 신호 값 DIFF에 대하여 시프트된 곱 SP[n]에 대응하는 출력 신호 O[0]-O[26]를 포함한다. 출력 신호 O[0]-O[25]는 시프팅 회로(200 또는 400)의 출력에 대응하고, 출력 신호 O[26]은 곱 P[n]의 부호 비트 S에 대응한다.
도 6에 도시된 실시예에서, 제2 차이 임계값은 4이고, 신호 O[0]-O[3] 중 하나 이상은, 4 이하인 신호 값 DIFF에 따라 제로 비트 0을 포함한다. 26인 제2 차이 임계값 이상인 신호 값 DIFF에 대하여, 신호 O[0]-O[26] 각각은 제로 비트 0을 포함한다. 26인 제2 차이 임계값보다 작은 신호 값 DIFF에 대하여, 신호 O[0]-O[25]는 선행 부호 비트 S와 함께 신호 값 DIFF만큼 오른쪽 시프트된 신호 M[0]-M[21]를 포함한다. 부호 비트 S의 수는 곱 P[n]의 부호 비트 S 플러스 신호 값 DIFF과 동일한 추가 부호 비트 S의 수에 대응한다.
도 5에서와 같이, 도 6에 도시된 데이터 요소(600)는, DIFF[1:0]의 4개의 조합에 대응하는 제1 하이라이트 부분, 및 중간 신호의 4개 조합(도시되지 않음) 및 신호 DIFF[4:2]의 조합에 응답하여 시프팅 회로(400)의 제2 스테이지에 의해 출력된 신호 O[2]-O[25]의 6개의 4비트 부분에 대응하는 추가 하이라이트 부분을 포함한다. 하이라이트 부분은 각각 중간 신호에 기초하며 신호 DIFF[4:2]에 따라 신호 O[2]-O[25] 내에서 오른쪽 시프트된 4개 행의 블록들이다. 데이터 요소(600)는 또한, 시프팅 회로(400)의 제2 스테이지에 의해 출력된 신호 O[0] 및 O[1]을 포함한다.
일부 실시예에서, 도 6에 도시된 데이터 요소(600)는 그에 의해, 도 2에 도시된 선택 회로 S0-S19에 추가적으로 하나 이상의 선택 회로를 포함하는 시프팅 회로(200)의 실시예에 대응한다.
일부 실시예에서, 도 6에 도시된 데이터 요소(600)는 그에 의해, 도 2에 도시된 바와 같이 선택 회로 FS1-FS19에 추가적으로 제1 스테이지에서의 하나 이상의 선택 회로를 그리고 선택 회로 SS1-SS5에 추가적으로 제2 스테이지에서의 하나 이상의 선택 회로를 포함하는 시프팅 회로(400)의 실시예에 대응한다.
일부 실시예에서, 시프팅 회로(400)는, 도 1a와 관련하여 위에서 설명된 바와 같이, BF16 또는 FP16 포맷 이외의 포맷에 대응하는 신호로부터 시프트된 신호를 생성하도록 유사하게 구성된 더 적거나 더 많은 수의 선택 회로를 포함한다.
위에서 설명된 구성에 의해, 시프팅 회로(400)는, 시프팅 회로(400)를 포함하는 회로가 데이터 계산 회로(100)에 관련하여 위에서 설명된 이점을 실현할 수 있도록 시프팅 회로(150) 및 도 1a에 관련하여 위에서 설명된 동작을 실행할 수 있다. 위에서 설명된 제1 및 제2 스테이지 구성을 포함함으로써, 시프팅 회로(400)는 또한, 제1 및 제2 스테이지 구성을 포함하지 않는 접근 방식, 예컨대 위에 설명된 시프팅 회로(200)보다 덜 복잡한 신호 라우팅 및 최대 50% 더 작은 영역을 가질 수 있다.
도 7은 일부 실시예에 따라 회로를 동작시키는 방법(700)의 흐름도이다. 방법(700)은 데이터 계산 회로, 예컨대 도 1a 및 도 1b와 관련하여 위에서 설명된 데이터 계산 회로(100)와 함께 사용 가능하다.
방법(700)의 동작들이 도 7에 도시되어 있는 순서는 단지 설명을 위한 것이며, 방법(700)의 동작들은 도 7에 도시된 바와 상이한 순서대로 실행될 수 있다. 일부 실시예에서, 도 7에 도시된 바에 추가적인 동작이, 도 7에 도시된 동작 전에, 사이에, 중간에 그리고/또는 후에 수행된다. 일부 실시예에서, 방법(700)의 동작들은, 예컨대 CNN 동작의 일부로서, CIM 동작을 수행하는 방법의 서브세트이다.
동작 710에서, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 부호 가수 및 지수가 수신된다. 부호 가수를 수신하는 것은 곱셈기 회로, 예컨대 곱셈기 회로(120A 또는 120B)에서 부호 비트 및 가수 비트를 수신하는 것을 포함하고, 지수를 수신하는 것은 합산 회로, 예컨대 합산 회로(130)에서 지수를 수신하는 것을 포함하며, 도 1a 및 도 1b에 관련하여 위에 각각 설명되어 있다.
일부 실시예에서, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 것은, 도 1a 및 도 1b에 관련하여 위에 설명된, 데이터 요소 InDE 및 WtDE의 각각의 데이터 요소의 부호 가수 InS/InM 및 WtS/WtM와 지수 InE 및 WtE를 수신하는 것을 포함한다.
일부 실시예에서, 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 것은, 도 1a 내지 도 6과 관련하여 위에 설명된 바와 같이 BF16 포맷 또는 FP16 포맷을 갖는 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하는 것을 포함한다.
일부 실시예에서, 회로는 메모리 어레이, 예컨대 도 1a와 관련하여 위에서 설명된 메모리 어레이(110)를 포함하고, 부호 가수 및 지수를 수신하는 것은 메모리 어레이에 저장된 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소로부터 각각의 데이터 요소를 수신하는 것을 포함한다.
동작 720에서, 각각의 부호 가수는 2의 보수로 재포맷된다. 각각의 부호 가수를 2의 보수로 재포맷하는 것은 곱셈기 회로를 사용하는 것을 포함한다.
일부 실시예에서, 각각의 부호 가수를 2의 보수로 재포맷하는 것은, 도 1a에 관련하여 위에서 설명된 바와 같이, 부호 가수 InS/InM을 재포맷된 가수 InTC로 재포맷하고 부호 가수 WtS/WtM을 재포맷된 가수 WtTC로 재포맷하는 것을 포함한다.
동작 720에서, 복수의 2의 보수 곱은, 복수의 입력 데이터 요소의 부호 가수의 일부 또는 전부에 대해 그리고 복수의 가중 데이터 요소의 부호 가수의 일부 또는 전부에 대해 곱셈 및 재포맷 연산을 수행함으로써 생성된다. 곱셈 및 재포맷 연산을 수행함으로써 복수의 2의 보수 곱을 생성하는 것은 곱셈기 회로, 예컨대 도 1a와 관련하여 위에서 설명된 곱셈기 회로(120A) 또는 도 1b와 관련하여 위에서 설명된 곱셈기 회로(120B)를 사용하는 것을 포함한다.
일부 실시예에서, 복수의 곱을 생성하는 것은, 각각의 부호 가수를 2의 보수로 재포맷하고 복수의 입력 데이터 요소의 재포맷된 가수의 일부 또는 전부를 복수의 가중 데이터 요소의 재포맷된 가수의 일부 또는 전부와 곱하는 것을 포함한다. 일부 실시예에서, 도 1a에 관련하여 위에서 설명된 바와 같이, 각각의 부호 가수를 2의 보수로 재포맷하고 복수의 입력 데이터 요소의 재포맷된 가수의 일부 또는 전부를 복수의 가중 데이터 요소의 재포맷된 가수의 일부 또는 전부와 곱하는 것은, 부호 가수 InS/InM을 재포맷된 가수 InTC로 재포맷하고 부호 가수 WtS/WtM을 재포맷된 가수 WtTC로 재포맷하며, 재포맷된 가수 InTC를 재포맷된 가수 WtTC와 곱함으로써 곱 P[0]-P[N]을 생성하는 것을 포함한다.
일부 실시예에서, 복수의 곱을 생성하는 것은, 복수의 입력 및 가중 데이터 요소의 일부 또는 전부의 부호 가수의 부호 비트에 대해 배타적 OR 연산을 수행함으로써 복수의 부호 비트를 생성하고, 복수의 입력 데이터 요소의 일부 또는 전부의 부호 가수의 가수 비트를 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수의 가수 비트와 곱함으로써 대응하는 복수의 가수 곱을 생성하고, 복수의 부호 비트 및 가수 곱을 2의 보수로 재포맷하는 것을 포함한다. 일부 실시예에서, 도 1b에 관련하여 위에서 설명된 바와 같이, 복수의 곱을 생성하는 것은, 부호 비트 InS 및 WtS에 대해 배타적 OR 연산을 수행함으로써 복수의 부호 비트 SB를 생성하고, 입력 데이터 요소 InDE의 일부 또는 전부의 가수 InM를 가중 데이터 요소 WtDE의 일부 또는 전부의 가수 WtM와 곱함으로써 대응하는 복수의 가수 곱 MP을 생성하고, 부호 비트 SB 및 가수 곱 MP를 2의 보수로 재포맷하는 것을 포함한다.
일부 실시예에서, 복수의 곱을 생성하는 것은, 복수의 합 중 대응하는 합과 최대 합 사이의 각각의 차이, 예컨대 도 1a와 관련하여 위에서 설명된 최대 합 MaxExp에 기초한 차이 D[n]에 대하여, 차이가 차이 임계값, 예컨대 도 1a 내지 도 6에 관련하여 위에서 설명된 제1 차이 임계값보다 작은 경우에만, 대응하는 입력 및 가중 데이터 요소에 대해 곱셈 및 재포맷 연산을 수행하는 것을 포함한다.
단계 730에서, 복수의 입력 데이터 요소의 각각의 지수를 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합이 생성된다. 복수의 입력 데이터 요소의 각각의 지수를 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하는 것은 합산 회로, 예컨대 도 1a와 관련하여 위에서 설명된 하나 이상의 논리 게이트 A1를 포함하는 합산 회로(130)를 사용하는 것을 포함한다.
복수의 입력 데이터 요소의 각각의 지수를 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하는 것은, 동작 720에서 생성된 복수의 곱의 데이터 요소의 총 수 및 순서에 대응하는 데이터 요소의 총 수 및 순서를 갖는 복수의 합을 생성하는 것을 포함한다.
일부 실시예에서, 복수의 입력 데이터 요소의 각각의 지수를 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하는 것은, 도 1a와 관련하여 위에 설명된 바와 같이, 지수 InE를 WtE에 더함으로써 합 S[0]-S[N]을 생성하는 것을 포함한다.
일부 실시예에서, 복수의 합을 생성하는 것은, 차동 회로를 사용하여 복수의 합의 최대 합을 결정하고 최대 합으로부터 복수의 합의 각각의 합을 감산함으로써 복수의 차이를 생성하는 것을 포함한다. 일부 실시예에서, 차이 회로를 사용하여 복수의 합의 최대 합을 결정하고 최대 합으로부터 복수의 합의 각각의 합을 감산함으로써 복수의 차이를 생성하는 것은, 도 1a와 관련하여 위에서 설명된 바와 같이, 차동 회로(140)를 사용하여 최대 합 MaxExp를 결정하고 MaxExp로부터 합 S[0]-S[N]을 감산함으로써 차이 D[0]-D[N]를 생성하는 것을 포함한다.
동작 740에서, 복수의 곱의 각각의 곱은 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트된다. 복수의 곱의 각각의 곱을 시프트하는 것은, 시프팅 회로를 사용하여 복수의 시프트된 곱을 생성하는 것, 예컨대 도 1a에 관련하여 위에 설명된 시프팅 회로(150) 또는 도 2 내지 도 6에 관련하여 위에 설명된 시프팅 회로(200 또는 400)를 사용하여 시프트된 곱 SP[0]-SP[N]을 생성하는 것을 포함한다.
일부 실시예에서, 복수의 곱의 각각의 곱을 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하는 것은, 곱 P[0]-P[N] 각각을 대응하는 차이 D[0]-D[N]와 동일한 양만큼 시프트하는 것을 포함한다.
일부 실시예에서, 복수의 곱의 각각의 곱을 시프트하는 것은, 대응하는 차이의 2개의 최하위 비트에 기초하여 곱으로부터 중간 데이터 요소를 생성하고, 대응하는 차이의 다른 비트에 기초하여 중간 데이터 요소로부터 대응하는 시프트된 곱을 생성하는 것을 포함한다. 일부 실시예에서, 중간 데이터 요소를 생성하는 것은, 도 4 내지 도 6에 관련하여 위에 설명된 바와 같이, 시프팅 회로(400)의 제1 스테이지를 사용하여 신호 INT[0]-INT[19]를 생성하는 것을 포함하고, 대응하는 시프트된 곱을 생성하는 것은 제2 스테이지를 사용하여 신호 O[0]-O[19]를 생성하는 것을 포함한다.
일부 실시예에서, 복수의 곱의 각각의 곱을 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하는 것은, 차이가 차이 임계값, 예컨대 도 1a 내지 도 6에 관련하여 위에 설명된 제1 차이 임계값 이상인 것에 기초하여 제로값 데이터 요소를 생성하는 것을 포함한다.
일부 실시예에서, 복수의 곱의 각각의 곱을 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하는 것은, 곱을 그 양만큼 오른쪽 시프트하고, 시프트된 곱에 선행 부호 비트의 수(수는 양과 동일함)를 추가하고, 양이 차이 임계값보다 작은 것에 대응하여 하나 이상의 후행 제로 비트를 추가하는 것, 예컨대 도 1a 내지 도 6에 관련하여 위에 설명된 바와 같이 제2 차이 임계값에 기초하여 부호 비트 S 및 제로 비트 0를 추가하는 것을 포함한다.
동작 750에서, 가수 합을 생성하기 위해 복수의 시프트된 곱이 합산된다. 가수 합을 생성하기 위해 복수의 시프트된 곱을 합산하는 것은 가산기 트리, 예컨대 도 1a에 관련하여 위에 설명된 가산기 트리(160)를 사용하는 것을 포함한다.
일부 실시예에서, 가수 합을 생성하기 위해 복수의 시프트된 곱을 합산하는 것은, 도 1a에 관련하여 위에 설명된 바와 같이 합 PSTC를 생성하기 위해 시프트된 곱 SP[0]-SP[N]을 합산하는 것을 포함한다.
동작 760에서, 일부 실시예에서, 가수 합은 부호 비트 플러스 복수의 가수 비트로 변환된다. 가수 합을 부호 비트 플러스 복수의 가수 비트로 변환하는 것은 변환기, 예컨대 도 1a에 관련하여 위에 설명된 변환기(170)를 사용하는 것을 포함한다.
일부 실시예에서, 가수 합을 부호 비트 플러스 복수의 가수 비트로 변환하는 것은, 도 1a에 관련하여 위에 설명된 바와 같이 합 PSTC를 합 PSSM으로 변환하는 것을 포함한다.
동작 770에서, 일부 실시예에서, 부호 비트 플러스 복수의 가수 비트는 출력 포맷으로 변환된다. 부호 비트 플러스 복수의 가수 비트를 출력 포맷으로 변환하는 것은 변환기, 예컨대 도 1a에 관련하여 위에 설명된 변환기(180)를 사용하는 것을 포함한다.
일부 실시예에서, 부호 비트 플러스 복수의 가수 비트를 출력 포맷으로 변환하는 것은, 도 1a에 관련하여 위에서 설명된 바와 같이 합 PSSM을 합 PS로 변환하는 것을 포함한다.
일부 실시예에서, 부호 비트 플러스 복수의 가수 비트를 출력 포맷으로 변환하는 것은, 출력 포맷을 갖는 합을 회로로부터 외부 회로, 예컨대 CNN 동작의 일부로서 메모리 어레이로 출력하는 것을 포함한다.
방법(700)의 동작들의 일부 또는 전부를 실행함으로써, 입력 및 가중 데이터 요소의 지수 비트로부터 부호 및 가수 비트를 분리하고, 입력 데이터 및 가중 데이터의 부호 및 가수 비트에 대해 곱셈 및 재포맷 연산을 수행하여 2의 보수 곱을 생성하고, 입력 데이터의 지수를 가중 데이터의 지수에 더하여 합을 생성하고, 합과 최대 합 사이의 차이에 기초하여 곱을 시프트하고, 시프트된 곱을 함께 더하여 부분 합을 생성함으로써, 데이터 계산이 수행되며, 그에 의해 데이터 계산 회로(100) 및 시프팅 회로(200 및 400)와 관련하여 위에서 설명된 이점의 일부 또는 전부를 달성한다.
도 8은 일부 실시예에 따른 CIM 회로(800)의 개략도이다. 도 8에 도시된 실시예에서, 일부 실시예에서 회로(800) 또는 메모리 회로(800)라고도 하는 CIM 회로(800)는, 메모리 어레이(810), MAC 유닛(820), 가산기(830) 및 버퍼(840)를 포함한다.
도 8에 도시된 실시예에서, 메모리 어레이(810)의 출력 포트는 MAC 유닛(820)의 입력 포트에 커플링되고, MAC 유닛(820)의 출력 포트는 가산기(830)의 입력 포트에 커플링되고, 가산기(830)의 출력 포트는 버퍼(840)의 입력 포트에 커플링되고, 버퍼(840)의 출력 포트는 가산기(830)의 입력 포트에 커플링된다. 버퍼(840)의 출력 포트는 또한, 외부 회로(도시되지 않음), 예컨대 메모리 어레이에 커플링된다.
도 8에 도시된 실시예는 예시의 목적으로 제공된 비한정적인 예이다. 일부 실시예에서, 회로(800)는 도 8에 도시된 것과 다른 구성을 가지며, 그리하여 아래에서 설명되는 이점이 실현될 수 있다. 일부 실시예에서, 회로(800)는 메모리 어레이(810)를 포함하지 않고, MAC 유닛(820)의 입력 포트가 회로(800) 외부의 회로, 예컨대 메모리 어레이에 커플링된다. 일부 실시예에서, MAC 유닛의 입력 포트는 도 1a와 관련하여 위에서 설명된 가산기 트리(160), 변환기(170) 또는 변환기(180) 중 하나에 커플링된다.
일부 실시예에서, 회로(800)는, 도 8에 도시되고 아래에서 설명되는 것에 추가적으로 회로 요소, 예컨대 제어 회로 또는 도시된 회로 요소의 추가 인스턴스를 포함한다. 일부 실시예에서, 도 8에 도시된 요소는 메모리 어레이(810), MAC 유닛(820), 가산기(830) 및 버퍼(840)의 다수의 인스턴스를 포함하는 메모리 회로의 일부이다.
일부 실시예에서, 회로(800)는 일련의 메모리 내 계산을 수행하도록 구성된 요소, 예컨대 다수의 어레이, 예컨대 메모리 어레이(810)가 입력 데이터 요소의 하나 이상의 세트에 대한 MAC 연산에 적용되는, 저장된 가중 데이터 요소를 포함하는, CNN을 포함하는 회로에 포함된다.
메모리 어레이(810)는, 입력 데이터 요소 IDE 및 가중 데이터 요소 WDE로도 지칭되는 데이터 요소 DE를 저장하도록 구성된다. 입력 데이터 요소 IDE 및 가중 데이터 요소 WDE는 하나 이상의 매트릭스 계산의 각자의 입력 및 가중 데이터에 대응한다.
MAC 유닛(820)은, 예컨대 메모리 어레이(810)로부터, 입력 데이터 요소 IDE 및 가중 데이터 요소 WDE를 수신하고 입력 데이터 요소 IDE 및 가중 데이터 요소 WDE에 기초하여 일련의 MAC 계산을 수행하도록 구성된, 하나 이상의 데이터 레지스터 및 논리 회로를 포함하는 전자 회로, 예컨대 IC이다.
MAC 유닛(820)은, 일부 실시예에서 가중치 버퍼라고도 하는 하나 이상의 데이터 레지스터에 수 W의 가중 데이터 요소 WDE를 저장하도록 구성된다. 각각의 입력 데이터 요소 IDE는 K개 비트를 가지며, MAC 유닛(820)은 각각의 입력 데이터 요소 IDE의 k번째 비트를 수신하여 하나 이상의 데이터 레지스터에 저장하도록 구성된다. 다양한 실시예에서, MAC 유닛(820)은, 동작 시, 각각의 k번째 비트를 순차적으로 선택하도록 구성된 선택 회로를 포함하거나, 동작 시 순차적으로 입력 데이터 요소 IDE의 k번째 비트를 수신하도록 구성된다. 다양한 실시예에서, MAC 유닛(820)은 LSB에서 MSB로의 순서 또는 MSB에서 LSB로의 순서로 k번째 비트를 선택하거나 수신하도록 구성된다.
MAC 유닛(820)은, 동작 시, 각각의 가중 데이터 요소 WDE를 순차적으로 선택하고, 각각의 선택된 가중 데이터 요소 WDE에 대하여, 선택된 가중 데이터 요소 WDE를 각각의 입력 데이터 요소 IDE의 K 비트 중 순차적으로 수신 및 저장된 k번째 비트 각각과 곱함으로써 부분 합 계산을 수행하여 일련의 K 곱을 생성하도록 구성된 하나 이상의 논리 회로를 포힘한다.
MAC 유닛(820)은, 동작 시, k번째 비트 시퀀싱의 LSB에서 MSB로 또는 MSB에서 LSB로의 순서에 따라 시프트된 대로 이전에 생성된 곱의 합에 곱 각각을 순차적으로 더하도록 구성된 하나 이상의 논리 회로를 포함한다. 하나 이상의 논리 회로는 K 곱의 합을 부분 합 PSUM으로서 출력하도록 구성된다.
MAC 유닛(820)은 W 가중 데이터 요소 WDE 각각에 대하여 부분 합 계산을 반복하도록 구성되고, 그에 의해 W 부분 합 PSUM의 시퀀스를 생성 및 출력하도록 구성된다.
입력 데이터 요소 IDE의 수가 증가함에 따라, MAC 유닛(820)의 계산 용량 및 회로 복잡도 둘 다 증가한다. 일부 실시예에서, 입력 데이터 요소 IDE는 8 내지 256 범위의 수를 갖는다. 일부 실시예에서, 입력 데이터 요소 IDE는 16 내지 128 범위의 수를 갖는다. 일부 실시예에서, 입력 데이터 요소 IDE는 72와 동일한 수를 갖는다.
가산기(830)는, 동작 시, 부분 합 PSUM의 시퀀스의 각각의 부분 합 PSUM을 수신하고, 각각의 부분 합 PSUM을 저장된 누적 합 SUM에 더함으로써 누적 합 ASUM의 대응하는 시퀀스를 생성 및 출력하도록 구성된 하나 이상의 논리 회로를 포함하는 전자 회로, 예컨대 IC이다.
일부 실시예에서 부분 합 버퍼(840)로도 지칭되는 버퍼(840)는, 동작 시, 각각의 누적 합 ASUM을 수신하고 각각의 누적 합을 저장된 누적 합 SUM으로서 저장하도록 구성된, 하나 이상의 데이터 레지스터 및/또는 래치를 포함하는 전자 회로, 예컨대 IC이다. 버퍼(840)는 저장된 누적 합 SUM을 가산기(830)의 입력 포트에 그리고 CIM 회로(800) 외부의 회로(도시되지 않음), 예컨대 메모리 어레이에 출력하도록 구성된다.
부분 합 누적 연산에서, 버퍼(840)는 0의 초기 값을 갖는 저장된 누적 합 SUM을 생성하도록 구성된다. 총 W 부분 합 계산이 W 가중 데이터 요소 WDE에 대응하여 수행된 후에, 버퍼(840)는 그에 의해 누적 합 ASUM의 시퀀스의 최종 누적 합 ASUM을 갖는 저장된 누적 합 SUM을 저장 및 출력하도록 구성되며, 최종 누적 합 ASUM은 부분 합 PSUM의 합과 동일하다.
일부 실시예에서, 누적 합 ASUM 및 저장된 누적 합 SUM 각각의 총 비트 수는 부분 합 PSUM의 비트 수보다 크다. 일부 실시예에서, 누적 합 ASUM 및 저장된 누적 합 SUM 각각의 총 비트 수는 부분 합 PSUM의 비트 수 플러스 W와 동일하다.
가중 데이터 요소 WDE의 수 W가 증가함에 따라, CIM 회로(800)의 계산 용량 및 회로 복잡도 둘 다 증가한다. 일부 실시예에서, 수 W는 4 내지 64 범위의 값을 갖는다. 일부 실시예에서, 수 W는 8 내지 32 범위의 값을 갖는다. 일부 실시예에서, 수 W는 16과 동일하다.
위에서 설명된 구성에 의해, CIM 회로(800)는, 예컨대 외부 메모리 어레이에 출력되기 전에 다수의 부분 합 데이터 요소를 누적하도록 구성된 부분 합 버퍼(840)를 포함하며, 그에 의해 개별 부분 합 데이터 요소가 외부 메모리 어레이에 출력되는 접근 방식에 비교하여 액세스 전력 및 시간 요건을 감소시킨다.
도 9는 일부 실시예에 따라 메모리 회로를 동작시키는 방법(900)의 흐름도이다. 방법(900)은 CIM 회로, 예컨대 도 8과 관련하여 위에서 설명된 CIM 회로(800)와 함께 사용 가능하다.
방법(900)의 동작들이 도 9에 도시되어 있는 순서는 단지 설명을 위한 것이며, 방법(900)의 동작들은 도 9에 도시된 바와 상이한 순서대로 실행될 수 있다. 일부 실시예에서, 도 9에 도시된 바에 추가적인 동작이 도 9에 도시된 동작 전에, 사이에, 중간에 그리고/또는 후에 수행된다. 일부 실시예에서, 방법(900)의 동작들은 CNN 동작을 수행하는 방법의 서브세트이다.
동작 910에서, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소가 CIM 회로의 MAC 유닛에서 수신된다. 일부 실시예에서, CIM 회로의 MAC 유닛에서 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소를 수신하는 것은, 도 8에 관련하여 위에서 설명된 CIM 회로(800)의 MAC 유닛(820)에서 입력 데이터 요소 IDE 및 가중 데이터 요소 WDE를 수신하는 것을 포함한다.
일부 실시예에서, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소를 수신하는 것은 CIM 회로의 메모리 어레이, 예컨대 도 8에 관련하여 위에서 설명된 메모리 어레이(810)로부터 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소를 수신하는 것을 포함한다.
동작 920에서, MAC 유닛은 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소에 기초하여 부분 합의 시퀀스를 생성하는 데 사용된다. 일부 실시예에서, MAC 유닛을 사용하여 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소에 기초하여 부분 합의 시퀀스를 생성하는 것은, 도 8에 관련하여 위에 설명된 바와 같이 MAC 유닛(820)을 사용하여 입력 데이터 요소 IDE 및 가중 데이터 요소 WDE에 기초하여 부분 합 PSUM을 생성하는 것을 포함한다.
동작 930에서, 부분 합의 시퀀스의 각각의 부분 합을 저장된 누적 합에 더함으로써 누적 합의 시퀀스를 생성하는 데 가산기가 사용된다. 일부 실시예에서, 가산기를 사용하여 부분 합의 시퀀스의 각각의 부분 합을 저장된 누적 합에 더함으로써 누적 합의 시퀀스를 생성하는 것은, 도 8에 관련하여 위에 설명된 바와 같이 가산기(830)를 사용하여 각각의 부분 합 PSUM을 저장된 누적 합 SUM에 더함으로써 누적 합의 시퀀스 ASUM을 생성하는 것을 포함한다.
동작 940에서, 누적 합의 시퀀스의 각각의 누적 합을 저장된 누적 합으로서 저장하고 각각의 저장된 누적 합을 가산기로 출력하고 최종 저장된 누적 합을 CIM 회로로부터 출력하는 데, 버퍼가 사용된다. 일부 실시예에서, 버퍼를 사용하여 누적 합의 시퀀스의 각각의 누적 합을 저장된 누적 합으로서 저장하고 각각의 저장된 누적 합을 가산기로 출력하고 최종 저장된 누적 합을 CIM 회로로부터 출력하는 것은, 도 8에 관련하여 위에 설명된 바와 같이 버퍼(840)를 사용하여 각각의 누적 합 ASUM을 저장된 누적 합 SUM으로서 저장하고 각각의 저장된 누적 합 SUM을 가산기(830)로 출력하고 최종 저장된 누적 합 SUM을 CIM 회로(800)로부터 출력하는 것을 포함한다.
방법(900)의 동작들 중 일부 또는 전부를 실행함으로써, 다수의 부분 합 데이터 요소는, 예컨대 외부 메모리 어레이로 출력되기 전에 누적되며, 그에 의해 CIM 회로(800)에 대하여 위에서 설명된 이점을 실현한다.
일부 실시예에서, 회로는, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 부호 가수를 수신하고 복수의 입력 데이터 요소의 부호 가수의 일부 또는 전부에 대해 그리고 복수의 가중 데이터 요소의 부호 가수의 일부 또는 전부에 대해 곱셈 및 재포맷 연산을 수행함으로써 복수의 곱을 생성하도록 구성된 곱셈기 회로, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 지수를 수신하고 복수의 입력 데이터 요소의 각각의 지수를 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하도록 구성된 합산 회로, 복수의 곱의 각각의 곱을 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하도록 구성된 시프팅 회로, 및 복수의 시프트된 곱으로부터 가수 합을 생성하도록 구성된 가산기 트리를 포함한다. 일부 실시예에서, 곱셈기 및 합산 회로는, BF16 포맷을 갖는 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하도록 구성되고, 곱셈기 회로는 복수의 곱을 17비트 데이터 요소로서 생성하도록 구성되고, 합산 회로는 복수의 합을 9비트 데이터 요소로서 생성하도록 구성되고, 시프팅 회로는 복수의 시프트된 곱을 21비트 데이터 요소로서 생성하도록 구성되고, 가산기 트리는 가수 합을 25비트 데이터 요소로서 생성하도록 구성된다. 일부 실시예에서, 곱셈기 및 합산 회로는, FP16 포맷을 갖는 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하도록 구성되고, 곱셈기 회로는 복수의 곱을 23비트 데이터 요소로서 생성하도록 구성되고, 합산 회로는 복수의 합을 6비트 데이터 요소로서 생성하도록 구성되고, 시프팅 회로는 복수의 시프트된 곱을 27비트 데이터 요소로서 생성하도록 구성되고, 가산기 트리는 가수 합을 31비트 데이터 요소로서 생성하도록 구성된다. 일부 실시예에서, 곱셈기 회로는, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수를 2의 보수로 재포맷하고 복수의 입력 데이터 요소의 재포맷된 가수의 일부 또는 전부를 복수의 가중 데이터 요소의 재포맷된 가수의 일부 또는 전부와 곱하는 것에 의해, 곱셈 및 재포맷 연산을 수행하도록 구성된다. 일부 실시예에서, 곱셈기 회로는, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수의 부호 비트에 대해 배타적 OR 연산을 수행함으로써 복수의 부호 비트를 생성하고 복수의 입력 데이터 요소의 일부 또는 전부의 부호 가수의 가수 비트를 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수의 가수 비트와 곱함으로써 대응하는 복수의 가수 곱을 생성하고 복수의 부호 비트 및 가수 곱을 2의 보수로 재포맷하는 것에 의해, 곱셈 및 재포맷 연산을 수행하도록 구성된다. 일부 실시예에서, 곱셈기 및 합산 회로는, 총 4개의 데이터 요소를 갖는 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각을 수신하도록 구성되고, 곱셈기 회로는 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소에 대해 총 16회 이하의 곱셈 연산을 수행하도록 구성되고, 합산 회로는 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소에 대해 총 16회 합산 연산을 수행하도록 구성된다. 일부 실시예에서, 시프팅 회로는, 복수의 곱의 각각의 곱에 대하여, 곱을 양만큼 오른쪽 시프트하고 선행 부호 비트의 수를 시프트된 곱에 추가하고 - 수는 양과 동일함 - 양이 차이 임계값보다 작은 것에 대응하여 하나 이상의 후행 제로 비트를 추가하도록 구성된다. 일부 실시예에서, 시프팅 회로는, 대응하는 차이의 2개의 최하위 비트에 기초하여 복수의 곱으로부터 복수의 중간 데이터 요소를 생성하도록 구성된 제1 스테이지 및 대응하는 차이의 다른 비트에 기초하여 복수의 중간 데이터 요소로부터 복수의 시프트된 곱을 생성하도록 구성된 제2 스테이지를 포함한다. 일부 실시예에서, 회로는 차동 회로를 더 포함하며, 차동 회로는 복수의 합 중 최대 합을 결정하고 최대 합으로부터 복수의 합 중 대응하는 합을 감산함으로써 각각의 차이를 계산하고 시프팅 회로에 각각의 차이를 출력하도록 구성된다. 일부 실시예에서, 시프팅 회로는, 각각의 차이에 대하여, 차이가 차이 임계값보다 작은 것에 기초하여 복수의 곱 중 대응하는 곱으로부터 복수의 시프트된 곱 중 대응하는 시프트된 곱을 생성하거나, 또는 차이가 차이 임계값 이상인 것에 기초하여 복수의 시프트된 곱 중 대응하는 시프트된 곱을 제로값 데이터 요소로서 생성하도록 구성된다. 일부 실시예에서, 곱셈기 회로는, 차동 회로로부터 각각의 차이를 수신하고, 각각의 차이에 대하여, 차이가 차이 임계값보다 작은 경우에만 대응하는 입력 및 가중 데이터 요소에 대해 곱셈 및 재포맷 연산을 수행하도록 구성된다. 일부 실시예에서, 회로는 가수 합을 부호 비트 + 복수의 가수 비트로 변환하도록 구성된다.
일부 실시예에서, 회로를 동작시키는 방법은, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 단계, 복수의 입력 데이터 요소의 부호 가수의 일부 또는 전부에 대해 그리고 복수의 가중 데이터 요소의 부호 가수의 일부 또는 전부에 대해 곱셈 및 재포맷 연산을 수행함으로써 복수의 2의 보수 곱을 생성하는 단계, 복수의 입력 데이터 요소의 각각의 지수를 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하는 단계, 복수의 곱의 각각의 곱을 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하는 단계, 및 가수 합을 생성하기 위해 복수의 시프트된 곱을 합산하는 단계를 포함한다. 일부 실시예에서, 회로는 메모리 어레이를 포함하고, 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 단계는, 메모리 어레이에 저장된 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하는 단계를 포함한다. 일부 실시예에서, 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 단계는, BF16 포맷 또는 FP16 포맷을 갖는 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하는 단계를 포함한다. 일부 실시예에서, 복수의 곱을 생성하는 단계는, 복수의 합 중 대응하는 합과 최대 합 사이의 각각의 차이에 대하여, 차이가 차이 임계값보다 작은 경우에만 대응하는 입력 및 가중 데이터 요소에 대해 곱셈 및 재포맷 연산을 수행하는 단계를 포함한다. 일부 실시예에서, 복수의 곱의 각각의 곱을 시프트하는 단계는, 대응하는 차이의 2개의 최하위 비트에 기초하여 곱으로부터 중간 데이터 요소를 생성하는 단계, 및 대응하는 차이의 다른 비트에 기초하여 중간 데이터 요소로부터 대응하는 시프트된 곱을 생성하는 단계를 포함한다. 일부 실시예에서, 방법은 가수 합을 부호 비트 + 복수의 가수 비트로 변환하는 단계를 포함한다.
일부 실시예에서, CIM(compute-in-memory) 회로는, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소를 저장하도록 구성된 메모리 어레이, 복수의 입력 데이터 요소 및 복수의 가중 데이터 요소에 기초하여 부분 합의 시퀀스를 생성하도록 구성된 MAC(multiply-accumulate) 유닛, 부분 합의 시퀀스의 각각의 부분 합을 저장된 누적 합에 더함으로써 누적 합의 시퀀스를 생성하도록 구성된 가산기, 및 누적 합의 시퀀스의 각각의 누적 합을 저장된 누적 합으로서 저장하고 각각의 저장된 누적 합을 가산기로 출력하고 최종 저장된 누적 합을 CIM 회로로부터 출력하도록 구성되는 버퍼를 포함한다. 일부 실시예에서, 버퍼는 최종 저장된 누적 합을 또다른 CIM 회로의 메모리 어레이로 출력하도록 구성된다.
전술한 바는 당해 기술 분야에서의 숙련자들이 본 개시의 양상을 보다 잘 이해할 수 있도록 여러 실시예들의 특징을 나타낸 것이다. 당해 기술 분야에서의 숙련자라면, 여기에서 소개된 실시예와 동일한 목적을 수행하고/하거나 동일한 이점을 달성하기 위해 다른 프로세스 및 구조를 설계 또는 수정하기 위한 기반으로서 본 개시를 용이하게 사용할 수 있다는 것을 알아야 한다. 당해 기술 분야에서의 숙련자는 또한, 이러한 등가의 구성이 본 개시의 진정한 의미 및 범위로부터 벗어나지 않으며, 본 개시의 진정한 의미 및 범위에서 벗어나지 않고서 다양한 변경, 치환 및 대안을 행할 수 있다는 것을 알아야 한다.
실시예
실시예 1. 회로에 있어서,
곱셈기 회로로서:
복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 부호 가수(signed mantissa)를 수신하고,
상기 복수의 입력 데이터 요소의 부호 가수의 일부 또는 전부에 대해 그리고 상기 복수의 가중 데이터 요소의 부호 가수의 일부 또는 전부에 대해 곱셈 및 재포맷(reformatting) 연산을 수행함으로써 복수의 2의 보수 곱(complement product)을 생성하도록 구성된, 상기 곱셈기 회로;
합산 회로로서:
상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각의 데이터 요소의 지수(exponent)를 수신하고,
상기 복수의 입력 데이터 요소의 각각의 지수를 상기 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하도록 구성된, 상기 합산 회로;
상기 복수의 곱의 각각의 곱을, 상기 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하도록 구성된 시프팅 회로; 및
상기 복수의 시프트된 곱으로부터 가수 합을 생성하도록 구성된 가산기 트리
를 포함하는, 회로.
실시예 2. 실시예 1에 있어서,
상기 곱셈기 회로 및 상기 합산 회로는, BF16 포맷을 갖는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하도록 구성되고,
상기 곱셈기 회로는 상기 복수의 곱을 17비트 데이터 요소로서 생성하도록 구성되고,
상기 합산 회로는 상기 복수의 합을 9비트 데이터 요소로서 생성하도록 구성되고,
상기 시프팅 회로는 상기 복수의 시프트된 곱을 21비트 데이터 요소로서 생성하도록 구성되고,
상기 가산기 트리는 상기 가수 합을 25비트 데이터 요소로서 생성하도록 구성되는 것인, 회로.
실시예 3. 실시예 1에 있어서,
상기 곱셈기 회로 및 상기 합산 회로는, FP16 포맷을 갖는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하도록 구성되고,
상기 곱셈기 회로는 상기 복수의 곱을 23비트 데이터 요소로서 생성하도록 구성되고,
상기 합산 회로는 상기 복수의 합을 6비트 데이터 요소로서 생성하도록 구성되고,
상기 시프팅 회로는 상기 복수의 시프트된 곱을 27비트 데이터 요소로서 생성하도록 구성되고,
상기 가산기 트리는 상기 가수 합을 31비트 데이터 요소로서 생성하도록 구성되는 것인, 회로.
실시예 4. 실시예 1에 있어서,
상기 곱셈기 회로는:
상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수를 2의 보수로 재포맷하고;
상기 복수의 입력 데이터 요소의 재포맷된 가수의 일부 또는 전부를 상기 복수의 가중 데이터 요소의 재포맷된 가수의 일부 또는 전부와 곱하는 것
에 의해, 상기 곱셈 및 재포맷 연산을 수행하도록 구성되는 것인, 회로.
실시예 5. 실시예 1에 있어서,
상기 곱셈기 회로는:
상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수의 부호 비트(sign bit)에 대해 배타적 OR 연산을 수행함으로써 복수의 부호 비트를 생성하고;
상기 복수의 입력 데이터 요소의 일부 또는 전부의 부호 가수의 가수 비트를 상기 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수의 가수 비트와 곱함으로써 대응하는 복수의 가수 곱을 생성하고;
상기 복수의 부호 비트 및 가수 곱을 2의 보수로 재포맷하는 것
에 의해, 상기 곱셈 및 재포맷 연산을 수행하도록 구성되는 것인, 회로.
실시예 6. 실시예 1에 있어서,
상기 곱셈기 회로 및 상기 합산 회로는, 총 4개의 데이터 요소를 갖는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각을 수신하도록 구성되고,
상기 곱셈기 회로는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소에 대해 총 16회 이하의 곱셈 연산을 수행하도록 구성되고,
상기 합산 회로는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소에 대해 총 16회 합산 연산을 수행하도록 구성되는 것인, 회로.
실시예 7. 실시예 1에 있어서,
상기 시프팅 회로는, 상기 복수의 곱의 각각의 곱에 대하여:
상기 곱을 상기 양만큼 오른쪽 시프트하고;
선행(leading) 부호 비트의 수를 상기 시프트된 곱에 추가하고 - 상기 수는 상기 양과 동일함 - ;
상기 양이 차이 임계값보다 작은 것에 대응하여 하나 이상의 후행(trailing) 제로 비트를 추가하도록
구성되는 것인, 회로.
실시예 8. 실시예 1에 있어서,
상기 시프팅 회로는:
대응하는 차이의 2개의 최하위 비트에 기초하여 상기 복수의 곱으로부터 복수의 중간 데이터 요소를 생성하도록 구성된 제1 스테이지; 및
대응하는 차이의 다른 비트에 기초하여 상기 복수의 중간 데이터 요소로부터 상기 복수의 시프트된 곱을 생성하도록 구성된 제2 스테이지
를 포함하는 것인, 회로.
실시예 9. 실시예 1에 있어서,
차동 회로를 더 포함하고, 상기 차동 회로는:
상기 복수의 합 중 상기 최대 합을 결정하고;
상기 최대 합으로부터 상기 복수의 합 중 대응하는 합을 감산함으로써 각각의 차이를 계산하고;
상기 시프팅 회로에 각각의 차이를 출력하도록
구성되는 것인, 회로.
실시예 10. 실시예 9에 있어서,
상기 시프팅 회로는, 각각의 차이에 대하여:
상기 차이가 차이 임계값보다 작은 것에 기초하여, 상기 복수의 곱 중 대응하는 곱으로부터 상기 복수의 시프트된 곱 중 대응하는 시프트된 곱을 생성하거나; 또는
상기 차이가 상기 차이 임계값 이상인 것에 기초하여, 상기 복수의 시프트된 곱 중 대응하는 시프트된 곱을 제로값 데이터 요소로서 생성하도록
구성되는 것인, 회로.
실시예 11. 실시예 9에 있어서,
상기 곱셈기 회로는:
상기 차동 회로로부터 각각의 차이를 수신하고;
각각의 차이에 대하여, 상기 차이가 차이 임계값보다 작은 경우에만 대응하는 입력 및 가중 데이터 요소에 대해 상기 곱셈 및 재포맷 연산을 수행하도록
구성되는 것인, 회로.
실시예 12. 실시예 1에 있어서,
상기 회로는 상기 가수 합을 부호 비트 + 복수의 가수 비트로 변환하도록 구성되는 것인, 회로.
실시예 13. 회로를 동작시키는 방법에 있어서,
복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 단계;
상기 복수의 입력 데이터 요소의 부호 가수의 일부 또는 전부에 대해 그리고 상기 복수의 가중 데이터 요소의 부호 가수의 일부 또는 전부에 대해 곱셈 및 재포맷 연산을 수행함으로써 복수의 2의 보수 곱을 생성하는 단계;
상기 복수의 입력 데이터 요소의 각각의 지수를 상기 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하는 단계;
상기 복수의 곱의 각각의 곱을, 상기 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하는 단계; 및
가수 합을 생성하기 위해 상기 복수의 시프트된 곱을 합산하는 단계
를 포함하는, 회로를 동작시키는 방법.
실시예 14. 실시예 13에 있어서,
상기 회로는 메모리 어레이를 포함하고,
상기 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 단계는, 상기 메모리 어레이에 저장된 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하는 단계를 포함하는 것인, 회로를 동작시키는 방법.
실시예 15. 실시예 13에 있어서,
상기 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 단계는, BF16 포맷 또는 FP16 포맷을 갖는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하는 단계를 포함하는 것인, 회로를 동작시키는 방법.
실시예 16. 실시예 13에 있어서,
상기 복수의 2의 보수 곱을 생성하는 단계는:
상기 복수의 합 중 대응하는 합과 최대 합 사이의 각각의 차이에 대하여, 상기 차이가 차이 임계값보다 작은 경우에만 대응하는 입력 및 가중 데이터 요소에 대해 상기 곱셈 및 재포맷 연산을 수행하는 단계를 포함하는 것인, 회로를 동작시키는 방법.
실시예 17. 실시예 13에 있어서,
상기 복수의 곱의 각각의 곱을 시프트하는 단계는:
대응하는 차이의 2개의 최하위 비트에 기초하여 상기 곱으로부터 중간 데이터 요소를 생성하는 단계; 및
대응하는 차이의 다른 비트에 기초하여 상기 중간 데이터 요소로부터 대응하는 시프트된 곱을 생성하는 단계
를 포함하는 것인, 회로를 동작시키는 방법.
실시예 18. 실시예 13에 있어서,
상기 가수 합을 부호 비트 + 복수의 가수 비트로 변환하는 단계를 더 포함하는, 회로를 동작시키는 방법.
실시예 19. CIM(compute-in-memory) 회로에 있어서,
복수의 입력 데이터 요소 및 복수의 가중 데이터 요소를 저장하도록 구성된 메모리 어레이;
상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소에 기초하여 부분 합의 시퀀스를 생성하도록 구성된 MAC(multiply-accumulate) 유닛;
상기 부분 합의 시퀀스의 각각의 부분 합을 저장된 누적 합에 더함으로써 누적 합의 시퀀스를 생성하도록 구성된 가산기; 및
버퍼
를 포함하고,
상기 버퍼는:
상기 누적 합의 시퀀스의 각각의 누적 합을 상기 저장된 누적 합으로서 저장하고;
각각의 저장된 누적 합을 상기 가산기로 출력하고;
최종 저장된 누적 합을 상기 CIM 회로로부터 출력하도록
구성되는 것인, CIM 회로.
실시예 20. 실시예 19에 있어서,
상기 버퍼는 상기 최종 저장된 누적 합을 또다른 CIM 회로의 메모리 어레이로 출력하도록 구성되는 것인, CIM 회로.

Claims (10)

  1. 회로에 있어서,
    곱셈기 회로로서:
    복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 부호 가수(signed mantissa)를 수신하고,
    상기 복수의 입력 데이터 요소의 부호 가수의 일부 또는 전부에 대해 그리고 상기 복수의 가중 데이터 요소의 부호 가수의 일부 또는 전부에 대해 곱셈 및 재포맷(reformatting) 연산을 수행함으로써 복수의 2의 보수 곱(complement product)을 생성하도록 구성된, 상기 곱셈기 회로;
    합산 회로로서:
    상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각의 데이터 요소의 지수(exponent)를 수신하고,
    상기 복수의 입력 데이터 요소의 각각의 지수를 상기 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하도록 구성된, 상기 합산 회로;
    상기 복수의 곱의 각각의 곱을, 상기 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하도록 구성된 시프팅 회로; 및
    상기 복수의 시프트된 곱으로부터 가수 합을 생성하도록 구성된 가산기 트리
    를 포함하는, 회로.
  2. 청구항 1에 있어서,
    상기 곱셈기 회로 및 상기 합산 회로는, BF16 포맷을 갖는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하도록 구성되고,
    상기 곱셈기 회로는 상기 복수의 곱을 17비트 데이터 요소로서 생성하도록 구성되고,
    상기 합산 회로는 상기 복수의 합을 9비트 데이터 요소로서 생성하도록 구성되고,
    상기 시프팅 회로는 상기 복수의 시프트된 곱을 21비트 데이터 요소로서 생성하도록 구성되고,
    상기 가산기 트리는 상기 가수 합을 25비트 데이터 요소로서 생성하도록 구성되는 것인, 회로.
  3. 청구항 1에 있어서,
    상기 곱셈기 회로 및 상기 합산 회로는, FP16 포맷을 갖는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각의 데이터 요소를 수신하도록 구성되고,
    상기 곱셈기 회로는 상기 복수의 곱을 23비트 데이터 요소로서 생성하도록 구성되고,
    상기 합산 회로는 상기 복수의 합을 6비트 데이터 요소로서 생성하도록 구성되고,
    상기 시프팅 회로는 상기 복수의 시프트된 곱을 27비트 데이터 요소로서 생성하도록 구성되고,
    상기 가산기 트리는 상기 가수 합을 31비트 데이터 요소로서 생성하도록 구성되는 것인, 회로.
  4. 청구항 1에 있어서,
    상기 곱셈기 회로는:
    상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수를 2의 보수로 재포맷하고;
    상기 복수의 입력 데이터 요소의 재포맷된 가수의 일부 또는 전부를 상기 복수의 가중 데이터 요소의 재포맷된 가수의 일부 또는 전부와 곱하는 것
    에 의해, 상기 곱셈 및 재포맷 연산을 수행하도록 구성되는 것인, 회로.
  5. 청구항 1에 있어서,
    상기 곱셈기 회로는:
    상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수의 부호 비트(sign bit)에 대해 배타적 OR 연산을 수행함으로써 복수의 부호 비트를 생성하고;
    상기 복수의 입력 데이터 요소의 일부 또는 전부의 부호 가수의 가수 비트를 상기 복수의 가중 데이터 요소의 일부 또는 전부의 부호 가수의 가수 비트와 곱함으로써 대응하는 복수의 가수 곱을 생성하고;
    상기 복수의 부호 비트 및 가수 곱을 2의 보수로 재포맷하는 것
    에 의해, 상기 곱셈 및 재포맷 연산을 수행하도록 구성되는 것인, 회로.
  6. 청구항 1에 있어서,
    상기 곱셈기 회로 및 상기 합산 회로는, 총 4개의 데이터 요소를 갖는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소의 각각을 수신하도록 구성되고,
    상기 곱셈기 회로는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소에 대해 총 16회 이하의 곱셈 연산을 수행하도록 구성되고,
    상기 합산 회로는 상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소에 대해 총 16회 합산 연산을 수행하도록 구성되는 것인, 회로.
  7. 청구항 1에 있어서,
    상기 시프팅 회로는, 상기 복수의 곱의 각각의 곱에 대하여:
    상기 곱을 상기 양만큼 오른쪽 시프트하고;
    선행(leading) 부호 비트의 수를 상기 시프트된 곱에 추가하고 - 상기 수는 상기 양과 동일함 - ;
    상기 양이 차이 임계값보다 작은 것에 대응하여 하나 이상의 후행(trailing) 제로 비트를 추가하도록
    구성되는 것인, 회로.
  8. 청구항 1에 있어서,
    상기 시프팅 회로는:
    대응하는 차이의 2개의 최하위 비트에 기초하여 상기 복수의 곱으로부터 복수의 중간 데이터 요소를 생성하도록 구성된 제1 스테이지; 및
    대응하는 차이의 다른 비트에 기초하여 상기 복수의 중간 데이터 요소로부터 상기 복수의 시프트된 곱을 생성하도록 구성된 제2 스테이지
    를 포함하는 것인, 회로.
  9. 회로를 동작시키는 방법에 있어서,
    복수의 입력 데이터 요소 및 복수의 가중 데이터 요소의 각각의 데이터 요소의 부호 가수 및 지수를 수신하는 단계;
    상기 복수의 입력 데이터 요소의 부호 가수의 일부 또는 전부에 대해 그리고 상기 복수의 가중 데이터 요소의 부호 가수의 일부 또는 전부에 대해 곱셈 및 재포맷 연산을 수행함으로써 복수의 2의 보수 곱을 생성하는 단계;
    상기 복수의 입력 데이터 요소의 각각의 지수를 상기 복수의 가중 데이터 요소의 각각의 지수에 더함으로써 복수의 합을 생성하는 단계;
    상기 복수의 곱의 각각의 곱을, 상기 복수의 합 중 대응하는 합과 최대 합 사이의 차이와 동일한 양만큼 시프트하는 단계; 및
    가수 합을 생성하기 위해 상기 복수의 시프트된 곱을 합산하는 단계
    를 포함하는, 회로를 동작시키는 방법.
  10. CIM(compute-in-memory) 회로에 있어서,
    복수의 입력 데이터 요소 및 복수의 가중 데이터 요소를 저장하도록 구성된 메모리 어레이;
    상기 복수의 입력 데이터 요소 및 상기 복수의 가중 데이터 요소에 기초하여 부분 합의 시퀀스를 생성하도록 구성된 MAC(multiply-accumulate) 유닛;
    상기 부분 합의 시퀀스의 각각의 부분 합을 저장된 누적 합에 더함으로써 누적 합의 시퀀스를 생성하도록 구성된 가산기; 및
    버퍼
    를 포함하고,
    상기 버퍼는:
    상기 누적 합의 시퀀스의 각각의 누적 합을 상기 저장된 누적 합으로서 저장하고;
    각각의 저장된 누적 합을 상기 가산기로 출력하고;
    최종 저장된 누적 합을 상기 CIM 회로로부터 출력하도록
    구성되는 것인, CIM 회로.
KR1020230082048A 2022-06-28 2023-06-26 데이터 계산 회로 및 방법 KR20240002209A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263356146P 2022-06-28 2022-06-28
US63/356,146 2022-06-28
US18/157,252 2023-01-20
US18/157,252 US20230418557A1 (en) 2022-06-28 2023-01-20 Data computation circuit and method

Publications (1)

Publication Number Publication Date
KR20240002209A true KR20240002209A (ko) 2024-01-04

Family

ID=89075675

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230082048A KR20240002209A (ko) 2022-06-28 2023-06-26 데이터 계산 회로 및 방법

Country Status (4)

Country Link
US (1) US20230418557A1 (ko)
KR (1) KR20240002209A (ko)
DE (1) DE102023110187A1 (ko)
TW (1) TW202416112A (ko)

Also Published As

Publication number Publication date
US20230418557A1 (en) 2023-12-28
DE102023110187A1 (de) 2023-12-28
TW202416112A (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
US5465226A (en) High speed digital parallel multiplier
CN112740171A (zh) 乘法和累加电路
Taylor Radix 16 SRT dividers with overlapped quotient selection stages: A 225 nanosecond double precision divider for the S-1 Mark IIB
US8429214B2 (en) Programmable logic systems and methods employing configurable floating point units
US8463835B1 (en) Circuit for and method of providing a floating-point adder
US5280439A (en) Apparatus for determining booth recoder input control signals
US11042360B1 (en) Multiplier circuitry for multiplying operands of multiple data types
JPS61502288A (ja) X×yビット・アレ−掛け算器/アキュムレ−タ回路
US7308471B2 (en) Method and device for performing operations involving multiplication of selectively partitioned binary inputs using booth encoding
US10678509B1 (en) Software-driven design optimization for mapping between floating-point and fixed-point multiply accumulators
US20220019407A1 (en) In-memory computation circuit and method
Alam et al. Exact stochastic computing multiplication in memristive memory
Alam et al. Exact in-memory multiplication based on deterministic stochastic computing
JPH03164932A (ja) 演算回路と演算回路のデータ処理法
Pieper et al. Efficient Dedicated Multiplication Blocks for 2's Complement Radix-2m Array Multipliers.
CN113918119A (zh) 存储器内多位数二进制乘法装置及其操作方法
Guckert Memristor-based arithmetic units
Cui et al. A parallel decimal multiplier using hybrid binary coded decimal (BCD) codes
US5923574A (en) Optimized, combined leading zeros counter and shifter
US20230075348A1 (en) Computing device and method using multiplier-accumulator
KR20240002209A (ko) 데이터 계산 회로 및 방법
Vatwani et al. Floating point multiplication mapping on reram based in-memory computing architecture
Mohan et al. Implementation of Quaternary Signed Adder System
Liang et al. An innovative Booth algorithm
US20230367554A1 (en) Apparatus, a method of operating modulo k calculation circuitry and a non-transitory computer-readable medium to store computer-readable code for fabrication of an apparatus