KR20220031098A - 부호형 다중-워드 곱셈기 - Google Patents

부호형 다중-워드 곱셈기 Download PDF

Info

Publication number
KR20220031098A
KR20220031098A KR1020227004413A KR20227004413A KR20220031098A KR 20220031098 A KR20220031098 A KR 20220031098A KR 1020227004413 A KR1020227004413 A KR 1020227004413A KR 20227004413 A KR20227004413 A KR 20227004413A KR 20220031098 A KR20220031098 A KR 20220031098A
Authority
KR
South Korea
Prior art keywords
signed
input
multiword
hardware
circuit
Prior art date
Application number
KR1020227004413A
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 KR20220031098A publication Critical patent/KR20220031098A/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
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • 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/4824Methods 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 using signed-digit representation
    • 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/50Adding; Subtracting
    • 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
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3896Bit slicing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치가 부호형 다중워드 곱셈기로 구성된 하드웨어 회로를 위한 것이다. 회로는 각각의 비트 폭을 갖는 입력을 수신하는 프로세싱 회로를 포함한다. 프로세싱 회로는 하드웨어 회로의 고정 비트 폭을 초과하는 비트 폭을 갖는 제1 입력에 기초하여 적어도 하나의 입력을 부호형 다중워드 입력으로 나타낼 수 있다. 회로에는 부호형 입력을 곱하도록 각각 구성된 부호형 승수가 포함된다. 각각의 부호 곱셈기는 다음과 같이 구성된 곱셈 회로를 포함한다: 부호형 다중워드 입력을 수신하고; 부호형 제2 입력을 수신한다. 그리고 부호형 다중워드 입력과 부호형 제2 입력을 곱한 것에 응답하여 부호형 출력을 생성하도록 구성된다.

Description

부호형 다중-워드 곱셈기
본 명세서는 수학적 계산을 수행하기 위한 하드웨어 회로에 관한 것이다.
계산 회로는 정수 및 부동 소수점 숫자와 같은 숫자 입력을 곱하는데 사용되는 하드웨어 곱셈기가 있는 곱셈 회로를 포함할 수 있다. 곱셈 회로는 조달하여 기존 컴퓨팅 회로에 통합하는데 비용이 많이 들 수 있으며 일부 회로는 특정 애플리케이션에 맞게 크기가 효율적으로 지정되지 않는다. 예를 들어, 일부 곱셈 회로는 회로 다이(die)의 상당한 영역을 소비하지만 큰 크기에도 불구하고 계산 처리량에 이점을 제공하지 않는 부호형(signed) 곱셈기와 비부호형(unsigned) 곱셈기를 모두 포함할 수 있다. 특정 컴퓨팅 애플리케이션에 대해 너무 큰 곱셈기 회로는 전력 소비 및 활용에 있어 비효율성을 유발할 수 있다.
신경망을 구현하는데 하드웨어 회로가 사용될 수 있다. 특히, 다수의 계층을 갖는 신경망은 여러 하드웨어 곱셈기를 포함하는 계산 회로에서 구현될 수 있다. 하드웨어 회로의 계산 회로는 또한 주어진 계층에 대한 신경망 계산을 수행하는데 사용되는 계산 유닛를 나타낼 수 있다. 예를 들어, 입력이 주어지면, 회로는 하드웨어 회로의 계산 유닛에 있는 하나 이상의 곱셈기를 사용하여 내적(dot product) 연산을 수행함으로써 신경망을 사용하여 입력에 대한 추론을 계산할 수 있다.
본 문서는 입력을 곱하기 위한 특수 목적의 하드웨어 회로를 설명한다. 하드웨어 회로는 개별 비트 폭을 갖는 입력을 수신하는 프로세싱 회로를 포함한다. 프로세싱 회로는 하드웨어 회로의 고정 비트 폭을 초과하는 비트 폭을 갖는 제1 입력에 기초하여 적어도 하나의 입력을 부호형(singed, 부호있는) 다중워드 입력으로 나타낼 수 있다. 하드웨어 회로는 부호형 다중워드 곱셈기로 구성되며, 부호형 입력을 각각 곱하도록 구성된 부호형 곱셈기를 포함한다. 각 부호형 곱셈기는 부호형 다중워드 입력을 수신하고, 부호형 제2 입력을 수신하고, 그리고 부호형 다중워드 입력과 부호형 제2 입력을 곱하는 것에 응답하여 부호형 출력을 생성하도록 구성된다.
본 명세서에서 설명된 주제의 일 양태는 입력 세트를 곱하기 위한 하드웨어 회로로 구현될 수 있다. 하드웨어 회로는 각각이 개별 비트 폭을 갖는 제1 입력 및 제2 입력을 수신하는 프로세싱 회로와, 상기 프로세싱 회로는 하드웨어 회로의 고정 비트 폭을 초과하는 비트 폭을 갖는 제1 입력에 기초하여 적어도 제1 입력을 부호형 다중워드 입력으로 나타내도록 구성되고; 그리고 각각이 2개 이상의 부호형 입력을 곱하도록 구성된 하나 이상의 부호형 곱셈기를 포함하고, 각 부호형 곱셈기는 제1 입력을 나타내는 부호형 다중워드 입력을 수신하고; 제2 입력에 대응하는 부호형 제2 입력을 수신하고; 그리고 부호형 다중워드 입력과 부호형 제2 입력을 곱하는 것에 응답하여 부호형 출력을 생성하도록 구성된 곱셈 회로를 포함한다.
이러한 구현 및 다른 구현은 각각 다음 피처들 중 하나 이상을 선택적으로 포함할 수 있다. 예를 들어, 일부 구현에서, 부호형 다중워드 입력은 N 워드를 포함하는 시프트된 부호형 숫자이며, 각각의 N 워드는 B 비트를 포함하고; 그리고 N은 1보다 큰 정수이고 B는 1보다 큰 정수이다. 일부 구현에서, 시프트된 부호형 숫자의 숫자값은 a0 + a1*2B + a2*2(2B) +...+ a{N-1}*2{(N-1)B}에 기초하여 정의되고, a는 부호형 다중워드 입력의 개별 부호형 워드를 나타낸다. 일부 구현에서, 시프트된 부호형 숫자의 표현 가능한 숫자 범위는 [-2(N*B-1) - S,2(N*B- 1) -1 -S]에 기초하여 정의된다. 일부 구현에서, S는 2(B-1)*(1 + 2B +...+ 2{(N-2)B}에 기초하여 정의된다. 일부 구현에서, 프로세싱 회로는 제1 입력을 부호형 상위 워드 부분; 및 부호형 하위 워드 부분을 포함하는 부호형 다중워드 입력으로 나타내도록 구성된다.
일부 구현에서, 제1 입력을 부호형 다중워드 입력으로 나타내는 것은 하드웨어 회로의 고정 비트 폭에 기초하여 제1 입력의 데이터 포맷을 수정하기 위해 양자화 방식(scheme)을 사용하는 것을 포함한다. 일부 구현에서, 양자화 방식은 제1 입력을 부호형 다중워드 입력으로 나타내기 위해 개별 워드 부분을 생성함으로써 제1 입력의 데이터 포멧을 수정하도록 구성되고; 그리고 개별 워드 부분 각각을 포함하는 총 비트 폭은 하드웨어 회로의 고정 비트 폭과 동일하다. 일부 구현에서, 부호형 다중워드 입력은 다수의 개별 워드를 포함하고; 그리고 곱셈 회로는 부호형 다중워드 입력의 각 워드와 부호형 제2 입력의 각 워드를 곱함으로써 부호형 출력을 생성하도록 구성된다. 일부 구현에서, 부호형 제2 입력은 다수의 개별 부호형 워드를 포함하고; 그리고 곱셈 회로는 부호형 다중워드 입력의 각 워드를 부호형 제2 입력의 각 부호형 워드와 곱셈하는 것으로부터 계산되는 개별 곱(products)의 합으로서 부호형 출력을 생성하도록 구성된다.
본 명세서에서 설명된 주제의 일 양태는 하드웨어 회로를 사용하여 입력 세트를 곱하는 방법으로 구현될 수 있다. 방법은 하드웨어 회로의 프로세싱 회로에 의해, 개별 비트 폭을 갖는 제1 입력 및 제2 입력을 수신하는 단계와, 적어도 제1 입력은 하드웨어 회로에 포함된 곱셈 하드웨어의 고정 비트 폭을 초과하는 비트 폭을 가지며, 곱셈 하드웨어는 제1 및 제2 입력을 곱하는데 사용되고; 적어도 제1 입력으로부터, 각각이 복수의 비트를 갖는 복수의 부호형 워드를 포함하는 부호형 다중워드 입력을 생성하는 단계와, 상기 부호형 다중워드 입력의 비트-폭은 곱셈 하드웨어의 고정 비트-폭미만이고; 부호형 다중워드 입력과 부호형 제2 입력을 곱셈을 위해 곱셈 하드웨어에 제공하는 단계와, 상기 부호형 제2 입력은 제2 입력에 대응하고 곱셈 하드웨어의 고정 비트 폭 내에 있는 비트 폭을 가지며; 그리고 적어도 제1 및 제2 입력을 사용하여 곱셈 하드웨어로부터 부호형 출력을 생성하는 단계를 포함한다.
이들 및 다른 구현은 각각 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 예를 들어, 일부 구현에서, 부호형 다중워드 입력은 N 워드를 포함하는 시프트된 부호형 숫자이며, 각각의 N 워드는 B 비트를 포함하고, 그리고 N은 1보다 큰 정수이고 B는 1보다 큰 정수이다. 일부 구현에서, 시프트된 부호형 숫자의 숫자값은 a0 + a1*2B + a2*2(2B) +...+ a{N-1}*2{(N-1)B}에 기초하여 정의되고, a는 부호형 다중워드 입력의 개별 부호형 워드를 나타낸다. 일부 구현에서, 시프트된 부호형 숫자의 표현 가능한 숫자 범위는 [-2(N*B-1) - S,2(N*B- 1) -1 -S]에 기초하여 정의된다. 일부 구현에서, S는 2(B-1)*(1 + 2B +...+ 2{(N-2)B}에 기초하여 정의된다. 일부 구현에서, 부호형 다중워드 입력을 생성하는 단계는 제1 입력을 부호형 상위 워드 부분; 및 부호형 하위 워드 부분을 포함하는 부호형 다중워드 입력으로 나타내는 단계를 포함한다.
일부 구현에서, 제1 입력을 부호형 다중워드 입력으로 나타내는 단계는 하드웨어 회로의 고정 비트 폭에 기초하여 제1 입력의 데이터 포맷을 수정하기 위해 양자화 방식을 사용하는 단계를 포함한다. 일부 구현에서, 방법은 양자화 방식에 기초하여, 제1 입력을 부호형 다중워드 입력으로 나타내기 위해 개별 워드 부분을 생성함으로써 제1 입력의 데이터 포멧을 수정하는 단계를 더 포함하고, 개별 워드 부분 각각을 포함하는 총 비트 폭은 하드웨어 회로의 고정 비트 폭과 동일하다. 일부 구현에서, 부호형 제2 입력은 다수의 개별 워드를 포함하고, 상기 방법은 곱셈 하드웨어의 단일 부호형 곱셈기를 사용하여, 부호형 다중워드 입력의 각 워드와 부호형 제2 입력의 각 워드를 곱하는 개별 곱의 합으로서 부호형 출력을 생성하는 단계를 더 포함한다.
이들 및 다른 양태의 다른 구현은 컴퓨터 저장 디바이스(예를 들어, 비-일시적 기계 판독 가능 저장 매체)에 인코딩된, 방법의 동작들을 수행하도록 구성된 대응 시스템, 장치, 및 컴퓨터 프로그램을 포함한다. 하나 이상의 컴퓨터 또는 하드웨어 회로의 컴퓨팅 시스템은 소프트웨어, 펌웨어, 하드웨어 또는 동작시 시스템으로 하여금 동작들을 수행하게 하는 시스템에 설치된 이들의 조합으로 구성될 수 있다. 하나 이상의 컴퓨터 프로그램은 데이터 처리 장치에 의해 실행될 때 장치로 하여금 동작들을 수행하게 하는 명령을 가짐으로써 구성될 수 있다.
본 명세서에 기술된 주제는 다음 이점들 중 하나 이상을 실현하기 위해 특정 실시예에서 구현될 수 있다. 설명된 기술은 입력을 곱하는데 사용되는 기존 회로보다 적은 전력을 필요로 하면서 둘 이상의 입력을 곱하기 위한 특수 목적 하드웨어 회로를 구현하는데 사용할 수 있다. 본 문서에서 설명하는 하드웨어 회로의 컴포넌트는 부호형 입력을 곱하여 부호형 출력을 생성하도록 구성된 부호형 곱셈기를 갖는 부호형 다중워드 곱셈기 회로를 형성한다. 다중워드 곱셈기는 부호형 숫자를 나타내는 고유한 숫자 포멧에 기초하여 여러 입력(예를 들어, 부동 소수점 입력)을 효율적으로 곱하는 저전력 하드웨어 곱셈 회로일 수 있다.
곱셈 회로는 입력들의 곱셈을 수행하기 위해 부호형 하드웨어 곱셈기들만 포함하는 곱셈 하드웨어를 갖도록 구성될 수 있다. 회로는 2의 보수 포멧과 같은 기존 넘버링 포멧이 있는 입력들을 처리하는 것에 응답하여 시프트된 부호형 다중워드 숫자를 생성하는데 사용되는 프로세싱 회로를 포함한다. 부호형 다중워드 숫자는 부호형 출력을 생성하기 위해 부호형 하드웨어 곱셈기들을 사용하여 곱해진다. 곱셈 회로의 이러한 기능은 입력을 곱하는 기존 회로에 비해 회로에서의 전력 소비를 감소시킨다. 이는 부호형 및 비부호형 곱셈기를 모두 사용하지 않고 부호형 곱셈기만을 사용하여 곱셈이 완료되기 때문이다. 또한, 다중 모드(예를 들어, 부호형 모드 및 비부호형 모드)를 지원하기 위한 하드웨어 곱셈기를 포함하는 회로는 또한 회로에서 소비하는 칩 영역을 증가시켜 회로의 제조 비용을 증가시킨다. 따라서, 제안된 기술은 전력 소비뿐만 아니라 제조 비용도 절감할 수 있다.
회로의 곱셈 하드웨어가 부호형 하드웨어 곱셈기만 포함하도록 구성된 경우, 전체 하드웨어 회로는 부호형 계산 모드와 비부호형 계산 모드를 모두 지원하기 위해 추가 곱셈 하드웨어를 포함해야 하는 기존 회로보다 훨씬 적은 전력을 소비한다. 따라서, 이 저전력 하드웨어 곱셈기 회로는 둘 이상의 부호형 다중워드 입력을 곱한 결과를 생성하기 위해 부호형 전용(only) 모드를 활용하는 적어도 부호형 곱셈기 구성에 기초하여 감소된 전력 요구 사항으로 숫자 입력을 곱하는데 최적화될 수 있다.
본 명세서에 기술된 주제의 하나 이상의 구현의 세부사항은 첨부 도면 및 아래의 설명에 설명되어 있다. 주제의 다른 잠재적인 특징, 측면 및 이점은 설명, 도면 및 청구범위에서 명백해질 것이다.
도 1은 입력을 곱하기 위한 특수 목적 하드웨어 회로의 다이어그램을 도시한다.
도 2는 부호형 출력을 생성하기 위해 부호형 하드웨어 곱셈기에 제공되는 부호형 다중워드 입력을 생성하기 위한 흐름도를 도시한다.
도 3은 설명된 하드웨어 곱셈기 회로에서 입력을 곱하기 위한 예시적인 프로세스의 흐름도를 도시한다.
다양한 도면에서 유사한 참조 숫자 및 명칭은 유사한 요소를 나타낸다.
기존의 컴퓨터 아키텍처는 고정 비트 폭(B)으로 곱셈 하드웨어를 제공한다. 이러한 아키텍처가 비트 폭을 초과하는 비트 수가 있는 입력을 곱해야 하는 경우, 아키텍처는 입력 숫자(input numbers)를 다수의 조각("단어")으로 나누는데, 여기서 각 단어는 길이 또는 비트 폭(B)을 가진다. 계산 출력을 생성하기 위해, 이러한 아키텍처는 제1 입력의 모든 단어를 제2 입력의 모든 단어와 곱한다. 그러나, 부호 있는(부호형)(예를 들어, 양수, 음수 또는 0) 출력을 생성하려면, 아키텍처가 부호형 모드 및 (예를 들어, 입력이 양수 또는 0인) 부호 없는(비부호형) 모드 모두에서 구성될 수 있어야 한다. 부호형 모드와 비부호형 모드 모두에서 구성되어야 하는 기존 회로에는 전력 소비를 증가시키는 추가 하드웨어 컴포넌트(구성 요소)가 필요하다.
예시적인 구현에서, 하드웨어 회로는 멀티 계층 신경망을 구현하고 신경망의 각 계층을 통한 입력을 처리함으로써 계산(예를 들어, 신경망 계산)을 수행하는데 사용될 수 있다. 특히, 신경망의 개별 계층은 각각 개별의 파라미터 세트를 가질 수 있다. 각 계층은 입력을 수신하고 계층에 대한 파라미터 세트에 따라 입력을 처리하여 예시적인 계산 유닛의 곱셈 회로들을 사용하여 수행되는 계산에 기초하여 출력을 생성한다. 예를 들어, 신경망 계층은 입력 어레이와 파라미터 어레이의 행렬 곱셈을 수행할 때 또는 입력 어레이와 파라미터 커널 어레이 간의 컨볼루션 계산의 일부로서 다수의 곱(product)을 계산한다.
일반적으로, 신경망의 계층을 통한 입력 처리는 곱셈 및 덧셈과 같은 수학적 연산을 수행하기 위한 회로를 사용하여 수행된다. 예시적인 하드웨어 회로는 2개 이상의 입력을 곱하기 위한 하드웨어 곱셈기들을 포함할 수 있다. 곱셈기 회로는 하드웨어 가산기와 함께 그룹화되어, 하드웨어 회로의 예를 들어 행렬 또는 벡터 처리 장치에 대한 계산 유닛를 형성할 수 있다. 계산 유닛는 정수 및 부동 소수점 숫자와 같은 숫자 입력(numerical inputs)을 더하고 곱하는데 사용된다. 예를 들어, 덧셈과 곱셈은 하드웨어 회로가 신경망의 계층을 통해 입력을 처리하기 위한 행렬-벡터 곱셈과 같은 신경망 계산을 수행하는데 사용될 때 발생한다.
위의 맥락을 고려하면, 본 문서는 부호형 다중워드 입력으로 표현되는 2개 이상의 입력을 곱하기 위한 특수 목적 하드웨어 회로를 구현하기 위한 기술을 설명한다. 이 기술을 사용하여 부호형(signed) 입력 또는 비부호형(unsigned) 입력을 "시프트된 부호형 다중워드 숫자"로 나타낼 수 있다. 이러한 시프트된 부호형 다중워드 숫자는 고유한 숫자 포멧을 사용하여 수신(된) 입력을 부호형 숫자로 나타낸다. 수신 입력은 다중워드 숫자의 개별 워드일 수 있으며, 여기에는 단일 워드 입력 및 다중워드 입력도 포함할 수 있다. 입력을 부호형 숫자로 표시함으로써, 특수 목적 하드웨어 회로는 비부호형 모드를 지원할 필요가 없다. 따라서, 설명된 하드웨어 회로는 부호형 모드와 비부호형 모드 모두에 대한 연산보다는 부호형 모드 연산을 위한 곱셈 회로를 포함하는 보다 간소화된 아키텍처를 사용한다. 설명된 하드웨어 회로는 부호형 모드 작동만을 위해 구성되기 때문에, 회로는 더 적은 수의 컴포넌트를 필요로 하므로 기존 아키텍처와 비교할 때 전력 효율성이 향상된다.
도 1은 입력(102)을 곱하기 위한 예시적인 특수 목적 하드웨어 회로(100)의 다이어그램을 도시한다. 예시적인 구현에서, 입력(102A)("입력 A") 및 102B("입력 B")는 이진 데이터 구조를 사용하여 소프트웨어로 표현될 수 있는 개별 부동 소수점 또는 2의 보수 숫자이다. 이진 데이터 구조는 특정 수의 비트, 예를 들어 16비트, 24비트 또는 32비트 데이터 구조를 가질 수 있다. 예를 들어, 입력 A 또는 B 각각은 개별 부호형 부동 소수점 수일 수 있고 각 입력에 대한 부호 비트(들)는 입력의 부호(예를 들어, 양수 또는 음수)를 나타낼 수 있다.
각 숫자 입력의 데이터 구조는 특정 데이터 포멧과 연관될 수 있다. 데이터 포멧은 데이터 포멧을 사용하여 표현될 수 있는 숫자값의 유한 범위를 나타낼 수 있다. 일부 구현에서, 입력 A에 대한 16비트 데이터 구조는 입력 A의 2의 보수 데이터 포멧을 나타내는 이진 입력(예를 들어, 0010)을 포함할 수 있다. 숫자 범위와 관련하여, 일반 2의 보수는 다음과 같은 유한한 표현 가능한 범위의 숫자값[-32,768, 32,767]을 가질 수 있다. 또한, 각 숫자 입력은 데이터 구조에서 숫자가 부호형 숫자인지 또는 비부호형 숫자인지 여부를 나타내는 하나 이상의 비트를 가지고 있다.
이 문서에 설명된 바와같이, 부호형 숫자 입력(예를 들어, 정수)을 나타내는 데이터 구조는 양의 숫자값(예를 들어, 정수값)과 음의 숫자값을 모두 보유할 수 있는 반면, 비부호형 숫자 입력을 나타내는 데이터 구조는 더 넓은 범위의 양의 숫자값을 보유할 수 있고 음의 숫자값은 없다. 일반적으로, GPU 또는 신경망 프로세서와 같은 프로세서 회로는 종종 상이한 유형의 입력, 예를 들어 정수 또는 부동 소수점 입력을 포함하는 계산을 수행하기 위한 산술 논리 장치(ALU) 또는 계산 유닛를 포함한다.
부호형 입력을 포함하는 계산은 부호형 모드 연산에 해당하는 반면, 비부호형 입력을 포함하는 계산은 비부호형 모드 연산에 해당한다. 부호형 및 비부호형 숫자 입력을 포함하는 계산을 수행하기 위한 ALU 및 계산 유닛는 각각의 부호형 모드 및 비부호형 모드 작업을 지원하기 위해 별개의 하드웨어 컴포넌트 세트를 필요로 한다. 예를 들어, 전술한 바와같이, 일부 컴퓨터 아키텍처는 고정 비트 폭(B)으로 곱셈 하드웨어를 제공한다. 이러한 아키텍처가 비트 폭을 초과하는 비트 수를 갖는 입력을 곱해야 하는 경우, 아키텍처는 입력 숫자를 다수의 조각("단어")으로 분할하며, 여기서 각 단어는 길이 또는 비트 폭(B)을 가진다. 계산 출력을 생성하기 위해, 아키텍처는 제1 입력의 모든 단어와 제2 입력의 모든 단어를 곱한다.
그러나, 이전에 논의된 바와 같이, 부호형(예를 들어, 양수, 음수 또는 0) 출력을 생성하기 위해, 아키텍처는 부호형 모드와 비부호형 모드(예를 들어, 양수만 있는 입력의 경우) 모두에서 구성 가능해야 한다. 부호형 및 비부호형 연산 모두에 대해 구성되어야 하는 아키텍처에는 전력 소비를 증가시키는 추가 하드웨어 컴포넌트가 필요하다. 이러한 맥락에서, 고유한 데이터 포멧을 갖는 부호형 입력을 곱하도록 구성된 특수 목적 하드웨어 회로(100)를 구현하는 한편, 기존의 하드웨어 회로에 비해 더 적은 전력을 소비하는 기술이 설명된다. 특수 회로(100)는 부호형 모드 연산만을 지원하기 위한 곱셈 회로를 포함한다. 이 회로는 입력이 부호형 숫자로만 표시되는 경우 소정의 전력 절약을 달성한다. 예를 들어, 부호형 입력만을 곱하여 계산 출력을 생성함으로써, 회로(100)는 입력을 곱하기 위해 더 적은 수의 소프트웨어 명령을 갖는 더 적은 수의 하드웨어 컴포넌트 및 더 작은 명령 세트를 포함할 수 있다.
회로(100)는 부호형 다중워드 입력을 생성하도록 구성된 입력 프로세서(104)를 포함한다. 하드웨어 회로(100)의 일부는 입력(102)을 곱하기 위한 하드웨어 곱셈기들을 제공하는 곱셈 회로를 갖는 계산 유닛(103)을 포함할 수 있다. 입력 프로세서(104)는 회로(100)의 계산 유닛(103)내의 곱셈 회로의 고정 비트 폭에 기초하여 부호형 다중워드 입력을 생성하도록 구성될 수 있다. 보다 구체적으로, 입력 프로세서(104)는 입력(102)으로부터 시프트된 부호형 다중워드 숫자를 생성하도록 구성된다. 예를 들어, 입력 프로세서(104)는 시프트된 부호형 다중워드 숫자(106, 108)를 생성할 수 있다. 시프트된 부호형 다중워드 숫자(106)는 입력(A)으로부터 각각 생성된 개별 부호형 워드 입력(C 및 D)을 포함할 수 있는 반면, 시프트된 부호형 다중워드 숫자(108)는 입력(B)으로부터 각각 생성된 각각의 부호형 워드 입력(E 및 F)을 포함할 수 있다.
하드웨어 회로(100)는 부호형 하드웨어 곱셈기(110, 112)를 포함한다. 일부 구현에서, 회로(100)는 저전력 부호형 정수 또는 부동 소수점 곱셈 회로를 포함하도록 구성된다. 일부 예에서, 곱셈기(110, 112)는 하드웨어 회로(100)의 단일의 대규모 부호형 곱셈 회로를 형성하기 위해 선택적 연결(113)을 통해 연결될 수 있다. 일부 다른 예에서, 곱셈기(110, 112)는 더 큰 곱셈 회로(114)의 상이한 하드웨어 곱셈기를 나타낼 수 있고 회로(100)는 하나 이상의 곱셈 회로(114)를 포함할 수 있다. 2개의 곱셈기가 도 1의 예에 도시되어 있지만, 회로(100)(또는 회로(114))는 더 많거나 더 적은 곱셈기를 포함하도록 구성될 수 있다. 예를 들어, 회로(100)는 다수의 개별 곱셈기와 동일한(또는 유사한) 계산 효과를 달성하기 위해 여러 목적을 위해 시간 경과에 따라 사용되도록 구성된 단일 곱셈기를 포함할 수 있다. 이러한 방식으로, 회로(100)는 예를 들어 부호형 곱셈기 또는 부호형 모드 연산만을 지원하는데 필요한 다른 하드웨어 컴포넌트만을 포함함으로써 감소된 전력 요구사항을 갖는 특정 숫자 입력을 곱하기 위해 최적화될 수 있다. 일부 경우, 특수 목적 하드웨어 회로(100)는 곱셈 회로를 사용하여 신경망의 계층들을 통해 입력을 처리하기 위한 계산을 수행한다. 계산은 신경망 계층의 계층 출력을 생성하기 위해 추가로 처리되는 누적 값을 생성하기 위한 입력 및 파라미터의 곱셈을 포함할 수 있다.
예시적인 연산에서, (입력(A)으로부터 각각 생성되는) 각각의 부호형 워드 입력(C 및 D) 및 (입력(B)으로부터 각각 생성되는) 각각의 부호형 워드 입력(E 및 F)을 포함하는 입력 세트가 주어지면, 회로(100)는 입력 C와 E를 곱하고(C*E), 입력 C와 F를 곱하고(C*F), 입력 D와 E를 곱하며(D*E), 입력 D와 F를 곱하도록(D*F) 구성된다. 계산 유닛(103)은 곱셈 회로(114)의 곱셈기(110, 112) 중 하나 이상에 의해 생성된 곱(product) 사이에 적절한 덧셈 연산을 수행하도록 구성된 가산기 회로(120)("가산기(120)")를 포함한다. 계산 유닛(103)은 하나 이상의 곱 값을 필요한 비트 폭만큼 시프트시킨 후 가산 연산을 수행하도록 구성된다. 예를 들어, 계산 유닛(103)은 다음의 가산 연산 (C*E << (2*B)) + ((C*F + D*E) << B) + D*F을 수행하기 전에. 가산기(120)를 사용하여 시프팅 연산(예를 들어, <<2*B, << B 등)을 수행할 수 있다.
가산기(120)는 입력으로 부호형 곱(116 및 118)을 수신하고 그 부호형 곱(116 및 118)을 가산하여 계산 유닛(103)의 부호형 출력(122)을 생성한다. 일부 구현에서, 음의 부호형 곱(118)의 2의 보수 버전은 부호형 출력(122)을 생성하기 위해, 부호형 곱(118)의 2의 보수 버전과 부호형 곱(116)을 가산하는 것을 포함하는 덧셈 연산을 수행하는데 사용된다. 일부 경우, 입력을 가산하는 것은 부호형 출력(122)을 생성하기 전에 예비 합계에 대해 반올림 연산을 수행하기 위해 반올림 로직을 사용하는 것을 포함한다. 예를 들어, 반올림 로직이 부호형 출력(122)을 생성하기 전에 예비 합계를 가장 가까운 십진수 또는 정수 값으로 반올림하는데 사용될 수 있다. 일부 구현에서, 부호형 출력(122)은 신경망 계층을 통한 숫자 입력(102)을 처리하는 것에 응답하여 신경망 계층의 계층 출력을 생성하기 위한 누적 값을 나타낸다.
도 2는 부호형 출력(122)을 생성하기 위해 회로(100)의 부호형 하드웨어 곱셈기에 제공되는 부호형 다중워드 입력을 생성하기 위한 프로세스 다이어그램(200)을 도시한다. 아래에서 더 상세히 설명되는 바와 같이, 프로세스 다이어그램(200)은 각각이 입력 프로세서(104)의 개별 논리 기능을 나타내는 다수의 논리 블록을 포함한다. 일반적으로, 개별 논리 기능 중 하나 이상이 시프트된 부호형 다중워드 숫자를 생성하는데 사용될 수 있다.
프로세스 다이어그램(200)을 참조하면, 하드웨어 회로(100)는 부호형 모드 회로로서 구성되고 부호형 다중워드 숫자(106)를 생성하기 위한 입력 프로세싱 회로(104)를 포함한다. 입력 프로세서(104)는 입력이 하드웨어 회로에 포함된 하드웨어 곱셈기의 고정 비트 폭을 초과하는 비트 폭을 갖는다는 결정에 적어도 기초하여 입력(102)으로부터 시프트된 부호형 다중워드 숫자를 생성한다(204). 예를 들어, 입력 프로세서(104)는 입력(102)의 이진 데이터 구조를 분석하여 개별 입력이 계산 유닛(103)에 포함된 곱셈 회로(114)의 고정 비트 폭을 초과하는지 여부를 결정할 수 있다.
부호형 다중워드 숫자(106)를 생성하는 것은 입력(102)이 시프트된 부호형 다중워드 숫자(106)를 나타내는데 사용된 데이터 포멧의 기정의된 숫자 범위 내에 있다고 입력 프로세서(104)가 결정하는 것에 기초하여 숫자(106)를 생성하는 것을 포함한다(206). 예를 들어, 입력 프로세서(104)는 입력(102)의 숫자 값, 예를 들어, 2의 보수가 시프트된 부호형 다중워드 숫자(106)를 나타내는 데이터 포멧의 가용 숫자 범위 내에 들어맞는다는 결정에 응답하여 부호형 다중워드 숫자(106)를 생성한다. 주어진 입력(102)에 대해, 입력 프로세서(104)가 입력(102)의 숫자 값이 데이터 포맷의 가용 숫자 범위 내에 맞지 않는다고 결정하면, 입력 프로세서(104)는 프로세스(200)를 종료한다(208).
입력 프로세서(104)가 입력(102)이 데이터 포멧의 기정의된 숫자 범위 내에 있다고 결정하면, 입력 프로세서(104)는 하드웨어 회로(100)의 고정 비트 폭을 초과하는 비트 폭을 갖는 적어도 제1 입력에 기초하여 하나 이상의 입력이 각각의 부호형 다중워드 입력으로서 표현되게 한다. 예를 들어, 입력을 부호형 다중워드 입력으로 나타내기 위해, 입력 프로세서(104)는 각각 B 비트를 갖는 개별 부호형 N 워드를 생성한다(210). 그런 다음, 입력 프로세서(104)는 각각 B 비트를 갖는 각 부호형 N 워드를 사용하여 시프트된 부호형 숫자를 생성한다(212). 일부 구현에서, N은 1보다 큰 정수이고 B는 1보다 큰 정수이다. 부호형 다중워드 입력은 궁극적으로 부호형 출력을 생성하기 위해 곱셈 회로(114)의 부호형 하드웨어 곱셈기에 제공된다.
일부 경우, 입력 프로세서(104)는 입력(102)이 하드웨어 회로에 포함된 하드웨어 곱셈기(110)의 고정 비트 폭을 초과하지 않는 비트 폭을 갖는다고 결정한다(205). 이 시나리오에서, 입력 프로세서(104)는 곱셈 회로(114)의 부호형 곱셈기에 입력(214)을 제공한다. 예를 들어, 입력 프로세서(104)는 특정 하드웨어 곱셈기의 부호와 일치하는 입력의 부호에 기초하여 입력(214)을 특정 하드웨어 곱셈기에 제공할 수 있다. 이 구현에서, 입력(214)은 곱셈 회로(114)의 고정 비트-폭보다 큰 비트-폭을 가지지 않기 때문에, 입력(214)은 부호형 다중워드 입력을 생성하기 위한 적절한 입력이 아닐 것이다.
예시적인 곱셈 연산의 경우, 시프트된 부호형 다중워드 숫자를 입력(102)으로부터 생성할지 여부 및 부호형 다중워드 입력의 후속 생성 여부의 결정은 계산 사이클에서 비교적 일찍 발생할 수 있다. 예를 들어, 결정은 신경망 계층을 통한 처리를 위한 입력을 획득하기 위해 회로(100)와 통신하는 외부 호스트 컨트롤러를 사용하여 칩 외부에서 이루어질 수 있다. 일부 구현에서, 결정 및 후속 생성은 하드웨어 회로(100)를 포함하는 신경망 프로세서 상에 구현된 신경망 계층에 의해 생성된 활성화를 저장하는 활성화 메모리와 같은 예시적인 신경망 프로세서의 메모리로부터 입력이 획득될 때 발생한다.
다른 구현에서, 부호형 다중워드 입력을 생성할지 여부에 대한 결정 및 부호형 다중워드 입력의 후속 생성은 이전 파이프라인 스테이지, 예를 들어 이전 곱셈기, ALU, 또는 계산 유닛(103)의 바이패스 회로에서 발생할 수 있다. 일부 경우, 각각의 부호형 하드웨어 곱셈기(110, 112)의 인터페이스는 개별 입력 프로세서(104)를 포함하도록 수정되거나 증강될 수 있다. 그러한 경우, 각각의 곱셈기(110, 112)의 입력에서 수신된 입력(102)은 개별 하드웨어 곱셈기(110, 112)에서의 곱셈을 위한 적절한 수의 시프트된 다중워드 입력을 생성하도록 처리될 수 있다.
도 3은 설명된 하드웨어 곱셈기 회로(100)를 사용하여 입력을 곱하기 위한 예시적인 프로세스(300)의 흐름도를 도시한다. 위에 표시된 바와 같이, 입력은 비트의 데이터 구조, 예를 들어 16비트 또는 32비트로 표현되는 부동 소수점 숫자와 같은 숫자 입력일 수 있다. 프로세스(300)는 본 문서에 설명된 다른 회로, 컴포넌트 및 시스템과 조합하여 적어도 회로(100)를 사용하여 수행될 수 있다.
이제 프로세스(300)를 참조하면, 회로(100)는 개별 비트 폭을 갖는 제1 입력 및 제2 입력을 수신한다(302). 프로세싱 회로는 하드웨어 회로의 고정 비트 폭을 초과하는 비트 폭을 갖는 제1 입력에 기초하여 적어도 제1 입력을 부호형(부호 있는) 다중워드 입력으로 나타내도록 구성된다. 예를 들어, 하드웨어 회로의 고정 비트 폭은 16비트일 수 있는 반면, 제1 입력의 예시적인 데이터 구조에 대한 비트 폭은 32비트이다.
회로(100)는 적어도 제1 입력으로부터, 각각이 다중 비트를 갖는 다중 부호형 워드를 포함하는 부호형 다중워드 입력을 생성한다(304). 부호형 다중워드 입력/숫자는 N 워드를 포함하는 시프트된 부호형 숫자이며, 각 N 워드는 B 비트를 포함한다. 일반적으로, N은 1보다 큰 정수일 수 있고 B는 1보다 큰 정수이다. 예를 들어, 제1 입력의 데이터 구조를 분석하는 것에 응답하여, 입력 프로세서(104)는 제1 입력이 32비트로 구성되어 있다고 결정할 수 있다. 입력 프로세서(104)는 제1 입력의 비트 수와 하드웨어 회로의 고정 비트 폭에 대한 비트 수 사이의 차이를 결정하거나 계산할 수 있다.
입력 프로세서(104)는 계산된 차이에 기초하여 부호형 다중워드 숫자를 생성할 수 있다. 일부 구현에서, 부호형 다중워드 숫자의 각 워드는 제1 입력(102)의 32비트 데이터 구조를 형성하는 비트의 일부를 사용하여 생성된다. 예를 들어, 부호형 다중워드 숫자는 4개의 8비트 숫자 또는 2개의 16비트 숫자로 구성될 수 있다. 이들 숫자는 위에서 설명된 부호형 다중워드 숫자(106 및 108)에 대응할 수 있다. 일부 경우, 부호형 다중워드 숫자의 각 단어는 제1 입력의 비트 부분 및 부호형 다중워드 숫자를 형성하는 부호형 워드의 부호를 나타내는 대응하는 부호 비트를 포함하는 부호형 워드이다.
일부 구현에서, 시프트된 부호형 다중워드 숫자가 4개의 8비트 숫자로부터 형성될 때, 이 시프트된 부호형 숫자는 N = 4 워드를 포함하고, 여기서 각 N 워드는 B = 8 비트를 포함한다. 이 "시프트된 부호형 N-워드 B 비트 숫자"는 각각 비트 폭(B)인 N개의 일반 부호형 숫자로 표시된다. 예를 들어, a0, a1, ... , a{N-1}을 일반 부호형 숫자라고 하고, a를 각 숫자가 함께 나타내는 시프트된 부호형 숫자라고 해 보자. 시프트된 부호형 숫자의 숫자값(u)은 a = a0 + a1*2B + a2*2(2B) +...+ a{N-1}*2{(N-1)B}로 정의되고, 여기서 a는 부호형 다중워드 입력의 개별 부호형 워드를 나타낸다. 개별 워드(a0, a1, ... , a{N-1})는 각각 부호형 숫자이다. 일부 다른 구현에서, 원래 입력 숫자는 비트 폭이 B의 배수가 될 때까지 0 확장(예를 들어, '0' 비트가 최상위 끝에 추가됨) 또는 부호 확장(예를 들어, 원래 입력 숫자의 최상위 비트가 초과 비트에 복사됨)이다.
위에서 논의된 바와 같이, 데이터 포맷은 그 데이터 포맷을 사용하여 표현될 수 있는 유한한 범위의 숫자 값을 가질 수 있다. 일부 구현에서, 시프트된 부호형 다중워드 숫자는 일반적인 2의 보수 숫자의 숫자 범위를 나타내기 위한 예시적인 공지 표현식에 기초하여 정의되는 표현 가능한 숫자 범위를 갖지만 여기에는 추가 파라미터(S)가 포함된다. 시프트된 부호형 다중워드 숫자의 숫자 범위는 [-2(N*B-1) - S,2(N*B-1) - 1 - S]를 사용하여 획득된다. 파라미터(S)는 2의 보수 숫자에 대한 숫자 범위를 나타내기 위한 공지 표현식에 시프트 함수를 도입한다. 예를 들어, B = 8이고 N = 2인 경우, 일반적인 2의 보수는 [-32,768, 32,767]과 같은 표현 가능한 범위를 갖는다. 일반적인 2의 보수에 대한 이 범위는 [-2(N*B-1), 2(N*B-1) - 1]이라는 공지 표현식을 사용하여 획득된다. 본 문서에서 설명되는 고유한 데이터 포멧과 관련하여, 파라미터(S)는 공지 표현식을 일반적인 N-워드*B-비트 2의 보수 표현 가능 범위에 대해 거리(S)만큼 좌측으로(예를 들어, 음의 무한대로) 시프트하는데 사용된다. 일부 구현에서, S 및 대응 시프트는 2(B-1)*(1 + 2B +...+ 2{(N-2)B}에 기초하여 정의된다.
일부 구현에서, 하드웨어 회로(100) 및 입력 프로세서(104)는 하드웨어 회로의 고정 비트 폭에 기초하여 제1 입력의 데이터 포맷을 수정하기 위해 양자화 방식을 사용한다. 양자화 방식은 제1 입력을 부호형 다중워드 입력으로 나타내기 위해 개별 워드 부분을 생성함으로써 제1 입력의 데이터 포멧을 수정하도록 구성된다. 예를 들어, 신경망 계층에 대한 파라미터 또는 커널 가중치 값으로부터 부호형 다중워드 숫자를 생성하기 위한 데이터 포멧은 파라미터들이 계층에 대한 출력을 계산하는데 적절하게 사용될 수 있도록 특정 양자화 방식에 기초하여 수정될 수 있다. 생성된 부호형 다중워드 입력의 경우, 각각의 개별 워드 부분을 포함하는 총 비트 폭은 하드웨어 회로의 고정 비트 폭과 동일할 수 있다. 일부 구현에서, 입력 프로세서(104)는 파라미터 및 가중치가 획득되고 회로(100)에서 처리되는 방식을 재양자화하거나 변경하기 위해 특정 소프트웨어 방식을 조정하도록 구성된다.
회로(100)는 부호형 다중워드 입력 및 부호형 제2 입력을 곱셈을 위해 곱셈 하드웨어에 제공한다(306). 부호형 제2 입력은 수신된 제2 입력에 해당한다. 일부 구현에서, 제2 입력은 하드웨어 회로의 비트 폭 또는 다른 시프트된 부호형 다중워드 숫자를 초과하지 않는 부호형 입력에 해당할 수 있다. 일부 다른 구현에서, 제2 입력은 회로(100)가 제2 입력으로부터 부호형 다중워드 숫자를 생성하도록 하드웨어 회로의 비트 폭을 초과하는 부호형 입력에 해당한다.
회로(100)는 적어도 제1 및 제2 입력(308)을 사용하여 곱셈 하드웨어로부터 부호형 곱을 생성한다. 예를 들어, 회로(100)는 제1 입력의 시프트된 부호형 다중워드 숫자와 제2 입력의 시프트된 부호형 다중워드 숫자를 곱하는 것에 응답하여 부호형 곱(116 또는 118)을 생성한다. 이들 시프트된 부호형 다중워드 입력은 다수의 개별 워드를 포함하고, 곱셈 회로(114)는 부호형 다중워드 제1 입력의 각 워드를 부호형 다중워드 제2 입력의 각 워드와 곱함으로써 부호형 곱을 생성하도록 구성된다. 시프트된 부호형 다중워드 숫자의 장점은 비부호형 하드웨어 곱셈기 없이 곱해질 수 있다는 것이다. 예를 들어, a = a0 + a1*2B + a2*2(2B) +...+ a{N-1}*2{(N-1)B}, b = b0 + b1*2B + b2*2(2B) +...+ b{N-1}*2{(N-1)B}인 2개의 숫자(a와 b)의 부호형 곱(116)을 계산하기 위해, 하드웨어 회로(100)는 ai * bj의 곱을 계산하며, 이는 모두 회로(100)의 부호형 하드웨어 곱셈기를 사용하여 계산될 수 있다.
다수의 실시예가 설명되었다. 그럼에도 불구하고, 본 발명의 범위를 벗어나지 않고 다양한 수정이 이루어질 수 있음을 이해할 것이다. 예를 들어, 위에 표시된 다양한 형태의 흐름을 사용할 수 있으며 단계를 재정렬, 추가 또는 제거할 수 있다. 따라서, 다른 실시예는 다음의 청구범위의 범위 내에 있다. 본 명세서에는 많은 구체적인 구현 세부 정보가 포함되어 있지만 이들은 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 특정 실시예에 특정할 수 있는 특징에 대한 설명으로 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다.
역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 하위 조합으로 다중 실시예에서 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 초기에 그러한 것으로 청구될 수도 있지만, 청구된 조합의 하나 이상의 특징은 일부 경우에 조합에서 제거될 수 있으며 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에 특정 순서로 도시되어 있지만, 이것은 바람직한 결과를 달성하기 위해 그러한 동작들이 표시된 특정 순서 또는 순차적인 순서로 수행되거나 예시된 모든 동작이 수행되어야 함을 요구하는 것으로 이해되어서는 안 된다. 특정 상황에서는 멀티태스킹과 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 실시예에서 다양한 시스템 모듈 및 컴포넌트의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 여러 소프트웨어 제품에 패키징될 수 있다.
주제의 특정 실시예가 설명되었다. 다른 실시예는 다음 청구항의 범위 내에 있다. 예를 들어, 청구범위에 언급된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 일 예로서, 첨부 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하지는 않는다. 경우에 따라 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (20)

  1. 입력 세트를 곱하기 위한 하드웨어 회로로서,
    개별 비트 폭을 각각 갖는 제1 입력 및 제2 입력을 수신하는 프로세싱 회로와, 상기 프로세싱 회로는 하드웨어 회로의 고정 비트 폭을 초과하는 비트 폭을 갖는 제1 입력에 기초하여 적어도 제1 입력을 부호형(signed) 다중워드 입력으로 나타내도록 구성되고; 그리고
    각각이 2개 이상의 부호형 입력을 곱하도록 구성된 하나 이상의 부호형 곱셈기를 포함하고, 각 부호형 곱셈기는,
    제1 입력을 나타내는 부호형 다중워드 입력을 수신하고;
    제2 입력에 대응하는 부호형 제2 입력을 수신하고; 그리고
    부호형 다중워드 입력과 부호형 제2 입력을 곱하는 것에 응답하여 부호형 출력을 생성하도록 구성된 곱셈 회로를 포함하는 것을 특징으로 하는 하드웨어 회로.
  2. 제1항에 있어서,
    부호형 다중워드 입력은 N 워드를 포함하는 시프트된 부호형 숫자이며, 각각의 N 워드는 B 비트를 포함하고; 그리고 N은 1보다 큰 정수이고 B는 1보다 큰 정수인 것을 특징으로 하는 하드웨어 회로.
  3. 제2항에 있어서,
    시프트된 부호형 숫자의 숫자값은,
    a0 + a1*2B + a2*2(2B) +...+ a{N-1}*2{(N-1)B}에 기초하여 정의되고, 여기서 a는 부호형 다중워드 입력의 개별 부호형 워드를 나타내는 것을 특징으로 하는 하드웨어 회로.
  4. 제3항에 있어서,
    시프트된 부호형 숫자의 표현 가능한 숫자 범위는 [-2(N*B-1) - S,2(N*B- 1) -1 -S]에 기초하여 정의되는 것을 특징으로 하는 하드웨어 회로.
  5. 제3항에 있어서,
    S는 2(B-1)*(1 + 2B +...+ 2{(N-2)B}에 기초하여 정의되는 것을 특징으로 하는 하드웨어 회로.
  6. 제1항에 있어서,
    프로세싱 회로는,
    부호형 상위-워드(high-word) 부분; 및 부호형 하위-워드(low-word) 부분을 포함하는 부호형 다중워드 입력으로서 제1 입력을 나타내도록 구성되는 것을 특징으로 하는 하드웨어 회로.
  7. 제6항에 있어서,
    제1 입력을 부호형 다중워드 입력으로 나타내는 것은,
    하드웨어 회로의 고정 비트 폭에 기초하여 제1 입력의 데이터 포맷을 수정하기 위해 양자화 방식(scheme)을 사용하는 것을 포함하는 것을 특징으로 하는 하드웨어 회로.
  8. 제7항에 있어서,
    양자화 방식은 제1 입력을 부호형 다중워드 입력으로 나타내기 위해 개별 워드 부분을 생성함으로써 제1 입력의 데이터 포멧을 수정하도록 구성되고; 그리고
    개별 워드 부분 각각을 포함하는 총 비트 폭은 하드웨어 회로의 고정 비트 폭과 동일한 것을 특징으로 하는 하드웨어 회로.
  9. 제1항에 있어서,
    부호형 다중워드 입력은 다수의 개별 워드를 포함하고; 그리고
    곱셈 회로는 부호형 다중워드 입력의 각 워드와 부호형 제2 입력의 각 워드를 곱함으로써 부호형 출력을 생성하도록 구성되는 것을 특징으로 하는 하드웨어 회로.
  10. 제1항에 있어서,
    제2 입력은 부호형 제2 입력이 다수의 개별 부호형 워드를 포함하도록 부호형 다중워드 입력이고; 그리고
    곱셈 회로는 부호형 다중워드 입력의 각 워드를 부호형 제2 입력의 각 부호형 워드와 곱셈하는 것으로부터 계산되는 개별 곱(products)의 합으로서 부호형 출력을 생성하도록 구성되는 것을 특징으로 하는 하드웨어 회로.
  11. 하드웨어 회로를 사용하여 입력 세트를 곱하는 방법으로서, 상기 방법은,
    하드웨어 회로의 프로세싱 회로에 의해, 개별 비트 폭을 갖는 제1 입력 및 제2 입력을 수신하는 단계와, 적어도 상기 제1 입력은 하드웨어 회로에 포함된 곱셈 하드웨어의 고정 비트 폭을 초과하는 비트 폭을 가지며, 상기 곱셈 하드웨어는 제1 및 제2 입력을 곱하는데 사용되고;
    적어도 제1 입력으로부터, 각각이 복수의 비트를 갖는 복수의 부호형 워드를 포함하는 부호형 다중워드 입력을 생성하는 단계와, 상기 부호형 다중워드 입력의 비트-폭은 곱셈 하드웨어의 고정 비트-폭미만이고;
    곱셈을 위해 부호형 다중워드 입력과 부호형 제2 입력을 곱셈 하드웨어에 제공하는 단계와, 상기 부호형 제2 입력은 제2 입력에 대응하고 곱셈 하드웨어의 고정 비트 폭 내에 있는 비트 폭을 가지며; 그리고
    적어도 제1 및 제2 입력을 사용하여 곱셈 하드웨어로부터 부호형 출력을 생성하는 단계를 포함하는 것을 특징으로 하는 입력 세트를 곱하는 방법.
  12. 제11항에 있어서,
    부호형 다중워드 입력은 N 워드를 포함하는 시프트된 부호형 숫자이며, 각각의 N 워드는 B 비트를 포함하고; 그리고 N은 1보다 큰 정수이고 B는 1보다 큰 정수인 것을 특징으로 하는 입력 세트를 곱하는 방법.
  13. 제12항에 있어서,
    시프트된 부호형 숫자의 숫자값은,
    a0 + a1*2B + a2*2(2B) +...+ a{N-1}*2{(N-1)B}에 기초하여 정의되고, 여기서 a는 부호형 다중워드 입력의 개별 부호형 워드를 나타내는 것을 특징으로 하는 입력 세트를 곱하는 방법.
  14. 제13항에 있어서,
    시프트된 부호형 숫자의 표현 가능한 숫자 범위는 [-2(N*B-1) - S,2(N*B- 1) -1 -S]에 기초하여 정의되는 것을 특징으로 하는 입력 세트를 곱하는 방법.
  15. 제13항에 있어서,
    S는 2(B-1)*(1 + 2B +...+ 2{(N-2)B}에 기초하여 정의되는 것을 특징으로 하는 입력 세트를 곱하는 방법.
  16. 제11항에 있어서,
    부호형 다중워드 입력을 생성하는 단계는,
    부호형 상위 워드 부분 및 부호형 하위 워드 부분을 포함하는 부호형 다중워드 입력으로서 제1 입력을 나타내는 단계를 포함하는 것을 특징으로 하는 입력 세트를 곱하는 방법.
  17. 제16항에 있어서,
    제1 입력을 부호형 다중워드 입력으로 나타내는 단계는,
    하드웨어 회로의 고정 비트 폭에 기초하여 제1 입력의 데이터 포맷을 수정하기 위해 양자화 방식을 사용하는 단계를 포함하는 것을 특징으로 하는 입력 세트를 곱하는 방법.
  18. 제17항에 있어서,
    양자화 방식에 기초하여, 제1 입력을 부호형 다중워드 입력으로 나타내기 위해 개별 워드 부분을 생성함으로써 제1 입력의 데이터 포멧을 수정하는 단계를 더 포함하고, 개별 워드 부분 각각을 포함하는 총 비트 폭은 하드웨어 회로의 고정 비트 폭과 동일한 것을 특징으로 하는 입력 세트를 곱하는 방법.
  19. 제11항에 있어서,
    제2 입력은 부호형 제2 입력이 다수의 개별 워드를 포함하도록 하는 부호형 다중워드 입력이고, 그리고 상기 방법은,
    곱셈 하드웨어의 단일 부호형 곱셈기를 사용하여, 부호형 다중워드 입력의 각 워드와 부호형 제2 입력의 각 워드를 곱하는 개별 곱의 합으로서 부호형 출력을 생성하는 단계를 더 포함하는 것을 특징으로 하는 입력 세트를 곱하는 방법.
  20. 동작들의 수행을 야기하기 위해 하나 이상의 프로세싱 디바이스에 의해 실행가능한 명령들을 저장하기 위한 하드웨어 회로의 하나 이상의 비-일시적 기계 판독가능 저장 디바이스로서, 상기 동작들은,
    하드웨어 회로의 프로세싱 회로에 의해, 개별 비트 폭을 갖는 제1 입력 및 제2 입력을 수신하는 단계와, 적어도 제1 입력은 하드웨어 회로에 포함된 곱셈 하드웨어의 고정 비트 폭을 초과하는 비트 폭을 가지며, 곱셈 하드웨어는 제1 및 제2 입력을 곱하는데 사용되고;
    적어도 제1 입력으로부터, 각각이 복수의 비트를 갖는 복수의 부호형 워드를 포함하는 부호형 다중워드 입력을 생성하는 단계와, 상기 부호형 다중워드 입력의 비트-폭은 곱셈 하드웨어의 고정 비트-폭미만이고;
    부호형 다중워드 입력과 부호형 제2 입력을 곱셈을 위해 곱셈 하드웨어에 제공하는 단계와, 상기 부호형 제2 입력은 제2 입력에 대응하고 곱셈 하드웨어의 고정 비트 폭 내에 있는 비트 폭을 가지며; 그리고
    적어도 제1 및 제2 입력을 사용하여 곱셈 하드웨어로부터 부호형 출력을 생성하는 단계를 포함하는 것을 특징으로 하는 하나 이상의 비-일시적 기계 판독가능 저장 디바이스.
KR1020227004413A 2019-08-23 2020-08-20 부호형 다중-워드 곱셈기 KR20220031098A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962890932P 2019-08-23 2019-08-23
US62/890,932 2019-08-23
PCT/US2020/047147 WO2021041139A1 (en) 2019-08-23 2020-08-20 Signed multiword multiplier

Publications (1)

Publication Number Publication Date
KR20220031098A true KR20220031098A (ko) 2022-03-11

Family

ID=72356504

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227004413A KR20220031098A (ko) 2019-08-23 2020-08-20 부호형 다중-워드 곱셈기

Country Status (7)

Country Link
US (1) US20220283777A1 (ko)
EP (1) EP3987388A1 (ko)
JP (1) JP2022544854A (ko)
KR (1) KR20220031098A (ko)
CN (1) CN114341796A (ko)
TW (2) TWI776213B (ko)
WO (1) WO2021041139A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113391786B (zh) * 2021-08-17 2021-11-26 中科南京智能技术研究院 一种多位正负权重的计算装置
CN114816335B (zh) * 2022-06-28 2022-11-25 之江实验室 一种忆阻器阵列符号数乘法实现方法、装置及设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014684A (en) * 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
JP2000081966A (ja) * 1998-07-09 2000-03-21 Matsushita Electric Ind Co Ltd 演算装置
US6156711A (en) * 1998-08-31 2000-12-05 Brandeis University Thickened butyrolactone-based nail polish remover with applicator
US6421698B1 (en) * 1998-11-04 2002-07-16 Teleman Multimedia, Inc. Multipurpose processor for motion estimation, pixel processing, and general processing
US20130113543A1 (en) * 2011-11-09 2013-05-09 Leonid Dubrovin Multiplication dynamic range increase by on the fly data scaling
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
US10114642B2 (en) * 2015-12-20 2018-10-30 Intel Corporation Instruction and logic for detecting the floating point cancellation effect

Also Published As

Publication number Publication date
CN114341796A (zh) 2022-04-12
JP2022544854A (ja) 2022-10-21
EP3987388A1 (en) 2022-04-27
WO2021041139A1 (en) 2021-03-04
TW202319909A (zh) 2023-05-16
US20220283777A1 (en) 2022-09-08
TWI776213B (zh) 2022-09-01
TW202109281A (zh) 2021-03-01

Similar Documents

Publication Publication Date Title
JP7476175B2 (ja) 乗算累積回路
EP3835942B1 (en) Systems and methods for loading weights into a tensor processing block
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
US5280439A (en) Apparatus for determining booth recoder input control signals
US11816448B2 (en) Compressing like-magnitude partial products in multiply accumulation
JPS6217770B2 (ko)
TWI763079B (zh) 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置
US5305248A (en) Fast IEEE double precision reciprocals and square roots
US8316071B2 (en) Arithmetic processing unit that performs multiply and multiply-add operations with saturation and method therefor
US10534578B1 (en) Multi-input floating-point adder
KR20220031098A (ko) 부호형 다중-워드 곱셈기
WO2022133686A1 (zh) 有/无符号乘累加装置及方法
CN112540743A (zh) 面向可重构处理器的有无符号乘累加器及方法
EP4275113A1 (en) Numerical precision in digital multiplier circuitry
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
CN115857873B (zh) 乘法器、乘法计算方法、处理系统及存储介质
US11789701B2 (en) Controlling carry-save adders in multiplication
Tan et al. Efficient Multiple-Precision and Mixed-Precision Floating-Point Fused Multiply-Accumulate Unit for HPC and AI Applications
WO2023078364A1 (zh) 矩阵乘法的运算方法及装置
Li et al. An Area-Power-Efficient Multiplier-less Processing Element Design for CNN Accelerators
JPS6285333A (ja) 浮動小数点乗算器丸め処理方式
JP2023531917A (ja) 小さいフットプリントの算術論理装置を有する処理装置
JP2002304288A (ja) データ演算処理装置及びデータ演算処理プログラム
JPH0683587A (ja) 乗算処理装置
JPH06110659A (ja) マイクロコンピュータ