KR20220022480A - 증가된 정밀도의 뉴럴 프로세싱 요소 - Google Patents

증가된 정밀도의 뉴럴 프로세싱 요소 Download PDF

Info

Publication number
KR20220022480A
KR20220022480A KR1020217038458A KR20217038458A KR20220022480A KR 20220022480 A KR20220022480 A KR 20220022480A KR 1020217038458 A KR1020217038458 A KR 1020217038458A KR 20217038458 A KR20217038458 A KR 20217038458A KR 20220022480 A KR20220022480 A KR 20220022480A
Authority
KR
South Korea
Prior art keywords
operand
bit
hardware
binary
dnn
Prior art date
Application number
KR1020217038458A
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 KR20220022480A publication Critical patent/KR20220022480A/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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49994Sign extension
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

뉴럴 프로세싱 요소는 부호 확장 신호와 피연산자의 최상위 비트(most significant bit; "MSB") 사이에 논리 AND 연산을 수행하도록 구성된 하드웨어 AND 게이트로 구성된다. 부호 확장 신호의 상태는 피연산자를 생성하는 심층 신경망(deep neural network; "DNN")의 계층 유형에 기초할 수 있다. 부호 확장 신호가 논리적 거짓(FALSE)이면, 부호 확장이 수행되지 않는다. 부호 확장 신호가 논리적 참(TRUE)인 경우, 접합기는 하드웨어 AND 게이트의 출력과 피연산자를 접합하여 피연산자를 N 비트 무부호 이진 값에서 N+1 비트 유부호 이진 값으로 확장한다. 뉴럴 프로세싱 요소는 또한, 또 다른 하드웨어 AND 게이트 및 유사하게 또 다른 피연산자를 프로세싱하기 위한 또 다른 접합기를 포함할 수 있다. 두 피연산자에 대한 접합기의 출력은 하드웨어 이진 승산기에 제공된다.

Description

증가된 정밀도의 뉴럴 프로세싱 요소
심층 신경망(deep neural network; "DNN")은, 예를 들어, 인간 뇌와 같은 생물학적 신경 시스템에서의 정보 프로세싱 및 통신 패턴을 따라 느슨하게(loosely) 모델링된다. DNN은, 물체 검출, 시맨틱 라벨링(semantic labeling), 및 피처 추출(feature extraction)과 같은, 그러나 이들로 제한되지는 않는, 복잡한 분류 문제를 해결하기 위해 활용될 수 있다. 결과적으로, DNN은, 예를 들어, 컴퓨터 비전, 음성 인식, 및 기계 번역과 같은 많은 지능(intelligence; "AT") 애플리케이션에 대한 기초를 형성한다. DNN은, 이들 도메인 중 많은 것에서 사람의 정확도와 매칭하거나 또는 초과할 수 있다.
DNN의 높은 레벨의 성능은, 큰 데이터 세트에 대한 통계적 학습을 사용한 후 입력 데이터로부터 높은 레벨의 피처를 추출하여 입력 공간의 효과적인 표현을 획득하는 능력으로부터 기인한다. 그러나, DNN의 우수한 성능은 높은 계산 복잡도를 대가로 한다. 예를 들어, 그래픽 프로세싱 유닛(graphics processing unit; "GPU")과 같은 고성능 범용 프로세서는 일반적으로, 많은 DNN 애플리케이션에 의해 요구되는 높은 레벨의 계산 성능을 제공하기 위해 활용된다.
GPU와 같은 범용 프로세서가 DNN을 구현하기 위한 높은 레벨의 계산 성능을 제공할 수 있지만, 이들 유형의 프로세서는, 저전력 소비가 중요한 컴퓨팅 디바이스에서 오랜 지속 기간에 걸쳐 DNN 동작을 수행함에 있어서 사용하기에 통상적으로 적합하지 않다. 예를 들면, GPU와 같은 범용 프로세서는, 배터리 수명을 연장하기 위해 감소된 전력 소비가 필요로 되는, 스마트폰 또는 대체/가상 현실(alternate/virtual reality; "AR/VR") 디바이스와 같은, 배터리 구동 휴대용 디바이스에서 장기간 실행하는 DNN 태스크를 수행함에 있어서 사용하기에 적절하지 않을 수 있다.
예를 들어, 사람 움직임의 검출과 같은 연속적인 DNN 태스크를 수행하는 동안 감소된 전력 소비는, 예를 들면, 이더넷을 통한 전력(power-over-Ethernet; POE) 보안 카메라와 같은 비-배터리 구동 디바이스에서 또한 중요할 수 있다. 이 특정 예에서, POE 스위치는 제한된 양의 전력만을 제공할 수 있으며, 보안 카메라와 같은 POE 디바이스의 전력 소비를 감소시키는 것은, 더 적은 전력을 제공하는 POE 스위치의 사용을 허용한다.
범용 프로세서와 비교하여, 동시에 전력 소비를 감소시키면서, 성능 기준에 맞는 DNN 프로세싱을 제공할 수 있는 주문형 집적 회로(application-specific integrated circuit; "ASIC")가 개발되었다. 그러나, 이 분야에서의 발전에도 불구하고, 특히 저전력 소비가 중요한 컴퓨팅 디바이스에서 사용하기 위한, DNN 프로세싱을 수행하는 ASIC의 성능을 향상시키고 전력 소비를 감소시킬 지속적인 필요성이 존재한다.
본원에서 이루어지는 개시는 이들 및 다른 기술적 도전 과제와 관련하여 제시된다.
증가된 정밀도 계산이 가능한 뉴럴 프로세싱 요소가 여기에 개시된다. 여기에 개시된 뉴럴 프로세싱 요소의 아키텍처는 특정 유형의 DNN 계층에 의해 생성된 피연산자를 프로세싱할 때 더 높은 정밀도를 가능하게 한다. 예를 들어 그리고 제한 없이, 개시된 기술을 구현하는 뉴럴 프로세싱 요소는 N 비트를 갖는 유부호(signed) 또는 무부호(unsigned) 피연산자를 입력으로 취할 수 있다. 특정 상황에서, 뉴럴 프로세싱 요소는 N+1 비트를 사용하여 피연산자에 대한 연산을 수행할 수 있으므로 뉴럴 프로세싱 요소가 N개의 비트만을 사용하여 내부 계산을 수행하는 아키텍처와 비교하여 증가된 정밀도를 제공한다. 본원에서 구체적으로 언급되지 않는 다른 기술적 이점은, 개시된 요지의 구현을 통해 또한 실현될 수 있다.
위에서 간략히 언급한 기술적 이점을 실현하기 위해, 뉴럴 프로세싱 요소를 포함하는 DNN 프로세서가 개시된다. 뉴럴 프로세싱 요소는 입력으로 N 비트를 갖는 유부호 또는 무부호 이진 피연산자를 취할 수 있다. 하나의 특정 구현에서, 피연산자는 유부호 또는 무부호 8비트 이진수이다. 피연산자는 다른 구현에서 다른 수의 비트를 사용할 수 있다.
뉴럴 프로세싱 요소는 특정 유형의 피연산자에 대해 향상된 정밀도 계산을 수행하기 위한 회로도 포함한다. 예를 들어, 뉴럴 프로세싱 요소는 예를 들어, DNN의 정류된 선형 단위(rectified linear unit; "ReLU") 계층에 의해 생성된 피연산자와 같이 양수로 제한된 피연산자에 대해 확장된 정밀도 계산을 수행할 수 있다. 일반적으로 ReLU 계층에 의해 출력되는 유부호 N 비트 값은 N-1 비트(-127 내지 +128의 값을 나타냄)만 사용하는데, 1비트가 부호용으로 예약되어 있기 때문이다. 그러나, 개시된 기술을 사용하여, 뉴럴 프로세싱 요소는 자신의 내부 계산에서 ReLU 계층에 의해 생성된 피연산자의 모든 N 비트(0 내지 255의 값을 나타냄)를 활용할 수 있다.
향상된 정밀도를 제공하기 위해, 뉴럴 프로세싱 요소는 하드웨어 AND 게이트로 구성된다. 하드웨어 AND 게이트는 이진 신호(여기서 "부호 확장 신호(sign extend signal)"로 지칭될 수 있음)와 피연산자의 최상위 비트("most significant bit; MSB") 사이의 논리 AND 연산을 수행하도록 구성된다. 피연산자가 8비트 이진수인 예에서, MSB는 피연산자의 비트 7이다.
부호 확장 신호의 상태는 DNN 프로세서에 의해 이전에 프로세싱된 DNN의 계층의 유형에 기초할 수 있다. 특히, 예를 들어, 피연산자가 DNN의 ReLU 계층에 의해 생성되는 경우와 같이 피연산자가 무부호인 경우, 부호 확장 신호는 논리적 거짓(FALSE)으로 설정될 수 있다. 이 경우 피연산자의 부호가 확장되지 않고 피연산자 앞에 0의 비트가 추가되어 9비트 유부호 숫자가 된다.
부호 확장 신호가 논리적 참(TRUE)이면(즉, 입력이 Tanh 계층의 출력과 같이 유부호인 경우), 피연산자에 대해 부호 확장이 수행된다. 부호 확장 연산을 수행하기 위해, 뉴럴 프로세싱 요소는 두 개의 이진 값을 접합(concatenate)하도록 구성된 접합 회로("접합기")도 포함한다. 특히, 접합기는 하드웨어 AND 게이트와 피연산자의 출력을 접합함으로써 피연산자를 N 비트 무부호 값에서 N+1 비트 유부호 값으로 확장한다. 예를 들어, 피연산자가 8비트 이진수인 구성에서 접합기의 출력은 9비트 유부호 이진수이다.
뉴럴 프로세싱 요소는 또한 또 다른 하드웨어 AND 게이트 및 위에서 설명된 방식으로 또 다른 피연산자를 프로세싱하기 위한 또 다른 접합기를 포함할 수 있다. 이 예에서, 두 피연산자에 대한 접합기의 출력은 하드웨어 이진 승산기에 제공된다. 피연산자가 8비트 이진수인 구성에서, 하드웨어 이진 승산기의 출력은 18비트 유부호 이진수이다. 뉴럴 프로세싱 요소는 하드웨어 이진 승산기의 출력을 계속 프로세싱할 수 있다.
상기에서 설명된 요지는, 컴퓨터 제어형 장치, 컴퓨터로 구현된 방법, 컴퓨팅 디바이스, 또는 예를 들어, 컴퓨터 판독 가능 매체와 같은 제조 물품으로서 구현될 수 있다는 것이 인식되어야 한다. 이러한 및 다른 각종의 피처들은 이하의 발명을 실시하기 위한 구체적인 내용 및 관련 도면을 참조함으로써 명백하게 될 것이다.
이 발명의 내용은 하기의 발명을 실시하기 위한 구체적인 내용에서 추가로 설명되는, 개시된 기술의 일부 양상의 간단한 설명을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 요지의 주요 피처 또는 필수 피처를 식별하도록 의도되는 것이 아니고, 이 발명의 내용이 청구된 요지의 범위를 제한하기 위해 사용되어야 한다는 것을 의도하는 것도 아니다. 또한, 청구된 요지는 본 개시의 임의 부분에서 설명하는 임의의 또는 모든 단점을 해결하는 구현으로 제한되지 않는다.
도 1은, 하나의 실시예에 따른, 본원에서 개시되는 기술의 양상을 구현하는 DNN 프로세서를 포함하는 프로세싱 시스템의 구성 및 동작의 양상을 도시하는 컴퓨팅 아키텍처 도면이다.
도 2는 하나의 실시예에 따른, 증가된 정밀도를 갖는 뉴럴 프로세싱 요소의 구성의 양상들을 도시하는 컴퓨팅 아키텍처 다이어그램이다.
도 3a는 개시된 기술을 사용하여 구성된 뉴럴 프로세싱 요소의 동작의 예시적인 예를 도시하는 데이터 다이어그램이다.
도 3b는 개시된 기술을 사용하여 구성된 뉴럴 프로세싱 요소의 동작의 또 다른 예시적인 예를 도시하는 데이터 다이어그램이다.
도 4는, 본원에서 개시되는 하나의 실시예에 따른, 도 2에 도시된 뉴럴 프로세싱 요소의 동작의 양상을 예시하는 루틴을 도시하는 흐름도이다.
도 5는, 하나의 실시예에 따른, 증가된 정밀도를 갖는 뉴럴 프로세싱 요소를 포함하는 DNN 모듈에 대한 애플리케이션 호스트로서 작용할 수 있는 컴퓨팅 디바이스에 대한 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍처를 도시하는 컴퓨터 아키텍처 도면이다.
도 6은, 본원에서 제시되는 다양한 실시예에 따른, 개시된 기술의 양상이 구현될 수 있는 분산 컴퓨팅 환경을 예시하는 네트워크 도면이다.
다음의 상세한 설명은 증가된 정밀도를 갖는 뉴럴 프로세싱 요소에 관한 것이다. 위에서 간략하게 논의된 바와 같이, 개시된 기술의 구현은 특정 유형의 DNN 계층에 의해 생성된 피연산자를 프로세싱할 때 뉴럴 프로세싱 요소가 더 높은 정밀도로 자신의 내부 계산을 수행할 수 있게 한다. 본원에서 구체적으로 언급되지 않는 다른 기술적 이점은, 개시된 요지의 구현을 통해 또한 실현될 수 있다.
본원에서 설명되는 요지는 하드웨어 DNN 프로세서와 함께 구현된 하드웨어 뉴럴 프로세싱 요소의 일반적인 맥락에서 제시되지만, 기술 분야의 숙련된 자는, 다른 구현이 다른 유형의 컴퓨팅 시스템 및 모듈과 조합하여 수행될 수 있다는 것을 인식할 것이다. 기술 분야의 숙련된 자는 또한, 본원에서 설명되는 요지가, 핸드헬드 디바이스, 다중 프로세서 시스템, 마이크로프로세서 기반의 또는 프로그래머블 가전 장치, 디바이스에 임베딩되는 컴퓨팅 또는 프로세싱 시스템(예컨대, 웨어러블 컴퓨팅 디바이스, 자동차, 홈 오토메이션 등), 미니 컴퓨터, 메인프레임 컴퓨터 등을 비롯한, 다른 컴퓨터 시스템 구성과 함께 실시될 수 있다는 것을 인식할 것이다.
다음의 상세한 설명에서, 본원의 일부를 형성하며, 특정 구성 또는 예가 묘사를 통해 도시되는 첨부의 도면에 대한 참조가 이루어진다. 이제 여러 도면들에 걸쳐 유사한 숫자가 유사한 요소를 나타내는 도면들을 참조하여, 증가된 정밀도를 갖는 뉴럴 프로세싱 요소의 양상이 설명될 것이다.
도 1은, 하나의 실시예에 따른, 본원에서 개시되는 기술을 구현하는 프로세싱 시스템의 구성 및 동작의 양상을 도시하는 컴퓨팅 아키텍처 도면이다. 본원에서 개시되는 프로세싱 시스템은, 일부 실시예에서, 예를 들어, 눈 추적, 손 추적, 물체 검출, 시맨틱 라벨링, 및 피처 추출과 같은, 그러나 이들로 제한되지는 않는 분류 문제(및 관련 문제)를 해결하도록 구성된다.
이 기능을 제공하기 위해, 리콜 전용 신경망(recall-only neural network)을 구현하고 다양한 네트워크 구조를 프로그램적으로 지원할 수 있는 DNN 프로세서(112)가 제공된다. DNN 프로세서(112)에 의해 구현되는 네트워크에 대한 트레이닝은, 서버 팜, 데이터 센터, 또는 또 다른 적절한 컴퓨팅 환경에서 오프라인으로 수행될 수 있다. DNN을 트레이닝시키는 결과는, "가중치" 또는 "커널"로 알려질 수 있는 파라미터의 세트이다. 이들 파라미터는 입력에 적용될 수 있는 변형 함수를 나타내는데, 그 결과는 분류 또는 의미론적으로 라벨링된 출력이다.
본원에서 개시되는 DNN 프로세서(112)는 슈퍼스칼라 프로세서로 간주될 수 있다. DNN 프로세서(112)는 하나 이상의 명령어를 뉴럴 프로세싱 요소(105F)로 칭해지는 다수의 실행 유닛으로 디스패치(dispatch)할 수 있다. 실행 유닛은 "동시 디스패치 동시 완료(simultaneous dispatch simultaneous complete)"일 수 있는데, 여기서 각각의 실행 유닛은 다른 실행 유닛 각각과 동기화된다. DNN 프로세서(112)는 단일의 명령어 스트림, 다수의 데이터 스트림(single instruction stream, multiple data stream; "SIMD") 아키텍처로서 분류될 수 있다.
뉴럴 프로세싱 요소(105F)는 뇌의 생물학적 뉴럴 프로세싱 요소를 느슨하게(loosely) 모델링하는 데 사용되는 신경망의 기본 단위이다. 특히. 뉴럴 프로세싱 요소(105F)는 활성화 함수가 적용된, 입력 벡터와 바이어스에 추가되는 가중치 벡터의 내적(inner product)을 계산할 수 있다.
DNN 프로세서(112) 내의 각각의 뉴럴 프로세싱 요소(105F)는, 가중된 합계, 최대 풀링, 우회, 및 잠재적으로 다른 유형의 동작을 수행할 수 있다. 뉴럴 프로세싱 요소(105F)는 클록 사이클마다 입력 및 가중치 데이터를 프로세싱한다. 각각의 뉴럴 프로세싱 요소(105F)는, DNN 프로세서(112) 내에서의 커널 데이터의 흐름을 최소화하기 위해 커널 내에서의 진행의 측면에서 모든 다른 뉴럴 프로세싱 요소(105F)에 동기화된다.
각각의 뉴럴 프로세싱 요소(105F)는 (도 1에서 도시되지 않은) 승산기, 가산기, 비교기, 및 다수의 누산기를 포함할 수 있다. 다수의 누산기를 구비하는 것에 의해, 뉴럴 프로세싱 요소(105F)는 한 번에 다수의 상이한 활성 커널에 대한 컨텍스트를 유지할 수 있다. 각각의 누산기는, SRAM(150)의 판독으로부터 로딩될 수 있다(아래에서 설명됨). 누산기는 그들 자신을 다른 뉴럴 프로세싱 요소(105F)로부터의 다른 누산기의 내용과 합산할 수 있다.
DNN 프로세서(112)는 예를 들어, 이미지 데이터와 같은 평면 데이터를 입력으로서 받아들인다. 그러나, DNN 프로세서(112)에 대한 입력은 이미지 데이터로 제한되지 않는다. 오히려, DNN 프로세서(112)는 균일한 평면 포맷으로 DNN 프로세서(112)에 제시되는 임의의 입력 데이터에 대해 동작할 수 있다. 하나의 특정한 실시예에서, DNN 프로세서(112)는 입력으로서 다중 평면 1 바이트 또는 2 바이트 데이터 프레임을 수용할 수 있다.
각각의 입력 프레임은 커널의 N×K×H×W 세트로 컨볼빙될 수 있는데, 여기서 N은 커널의 수이고, K는 커널당 채널의 수이고, H는 높이이며, W는 폭이다. 입력 데이터에 걸쳐 중첩되는 간격에 대해 컨볼루션이 수행되는데, 간격은 X 방향 및 Y 방향에서의 보폭(strides)에 의해 정의된다. 이들 기능은 뉴럴 프로세싱 요소(105F)에 의해 수행되고 소프트웨어 가시 제어 레지스터(software-visible control register)를 통해 DNN 프로세서(112)에 의해 관리된다. 완전 접속, 배치 정규화(batch normalization) 및 다른 유형의 동작을 포함하지만 이에 국한되지 않는 다른 유형의 동작도 수행될 수 있다.
DNN 프로세서(112)는 가중치; 입력 데이터/피처 맵(input data/feature maps); 활성화 데이터; 바이어스; 및 스칼라를 포함하는 다수의 데이터 유형들을 지원한다. 입력 데이터/피처 맵 및 활성화 데이터는, 대부분의 경우, 계층의 출력을 참조할 때 용어 활성화 데이터(term activation data)가 사용된다는 구별을 갖는 동일한 데이터에 대한 두 개의 이름이다. 계층의 입력을 언급할 때, 용어 입력 데이터/피쳐 맵이 사용된다.
DNN 프로세서(112) 내의 뉴럴 프로세싱 요소(105F)는 그들의 입력의 가중된 합을 계산하고 가중된 합을 "활성화 함수" 또는 "전달 함수"를 통해 전달한다. 전달 함수는 일반적으로 S자 형상(sigmoid shape)을 가지지만, 그러나, 구분적 선형 함수(piecewise linear function), 단계 함수(step function), 또는 또 다른 유형의 함수의 형태를 또한 취할 수도 있을 것이다. 활성화 함수는 뉴럴 프로세싱 요소(105F)가 입력 및 분류 경계가 비선형적인 소망되는 출력의 더 큰 세트로 트레이닝되는 것을 허용한다.
DNN 프로세서(112)는 신경망의 계층에 대응하는 계층 디스크립터(layer descriptor)의 목록에 대해 동작한다. 계층 디스크립터의 목록은 DNN 프로세서(112)에 의해 명령어로서 취급될 수 있다. 이들 디스크립터는, 메모리로부터 DNN 프로세서(112)로 프리페치(pre-fetch)되어 순서대로 실행될 수 있다. 디스크립터 목록은 DNN 프로세서(112)에 대한 명령어의 세트로서 작용한다. 일부 구성에서는 두 가지 유형의 명령어들, 즉, 계층 설명자, 및 시퀀스 제어기에서 실행되는 프로그램 명령어가 사용된다. DNN 프로세서(112) 상에서 실행되는 디스크립터 목록을 생성하기 위해 소프트웨어 툴(tools) 및/또는 컴파일러가 DNN 모듈(112) 외부의 디바이스 상에서 실행될 수 있다.
일반적으로, 두 가지 주요 클래스의 디스크립터가 있을 수 있다: 메모리 대 메모리 이동(memory-to-memory move; "M2M") 디스크립터; 및 동작 디스크립터. M2M 디스크립터는 동작 디스크립터에 의한 소비를 위해 데이터를 메인 메모리로부터 로컬 버퍼(즉, 하기에 설명되는 버퍼(125))로 또는 로컬 버퍼로부터 메인 메모리로 이동시키기 위해 사용될 수 있다. M2M 디스크립터는, 동작 디스크립터와는 다른 실행 파이프라인을 따른다. M2M 디스크립터에 대한 타겟 파이프라인은, 내부 DMA 엔진(105B) 또는 구성 레지스터(105G)일 수 있고, 반면, 동작 디스크립터에 대한 타겟 파이프라인은 뉴럴 프로세싱 요소(105F)일 수 있다.
동작 디스크립터는, 뉴럴 프로세싱 요소(105F)가 로컬의 정적 랜덤 액세스 메모리(static random-access memory; "SRAM")에 위치하는 데이터 구조에 대해 수행해야 하는 특정한 동작을 명시한다. 동작 디스크립터는 순서대로 프로세싱되며, 다수의 상이한 계층 동작들이 가능한데, 그 중 적어도 일부는 본원에서 설명된다.
도 1에서 예시되는 바와 같이, DNN 프로세서(112)는 고유한 L1 및 L2 버퍼 구조를 갖는 메모리 서브시스템을 구비한다. 도 1에서 도시되는 L1 및 L2 버퍼는 신경망 프로세싱을 위해 특별히 설계된다. 예로서, L2 버퍼(150)는 선택된 주파수에서 동작하는 고속 사설 인터페이스를 사용하여 선택된 저장 용량을 유지할 수 있다. L1 버퍼(125)는 커널과 활성화 데이터 사이에서 분할될 수 있는 선택된 저장 용량을 유지할 수 있다. L1 버퍼(125)는 본원에서 "버퍼(125)"로 지칭될 수 있을 것이고, L2 버퍼(150)는 본원에서 SRAM(150)으로 지칭될 수 있다.
일부 실시예에서, 계산 데이터(즉, 입력 데이터, 가중치, 및 활성화 데이터)는 SRAM(150)에 행 우선으로(row-major) 저장된다. 계산 데이터는 두 개의 버퍼로 편제될(organized) 수 있는데, 하나의 버퍼는 본원에서 "입력 버퍼"로 지칭될 수 있는 입력 데이터를 포함하고, 본원에서 "가중치 버퍼"로 지칭될 수 있는 다른 버퍼는 커널 가중치를 포함한다. 버퍼는 로드/저장 유닛(105C)에 의해 SRAM(150)으로부터 채워진다. 데이터는, 각각의 버퍼가 자신의 미리 결정된 용량에 도달할 때까지, 각각의 라인 버퍼에 축적된다. 그 다음, 버퍼 데이터는, 일부 실시예에서, 섀도우 버퍼에 복사되고 뉴럴 프로세싱 요소(105F)에게 제공된다.
DNN 프로세서(112)는 또한, 레지스터 인터페이스(105G), 프리페치 유닛(105A), 저장/복원 유닛(105E), 계층 제어기(105D), 및 레지스터 인터페이스(105G)를 포함하는, 그러나 이들로 제한되지는 않는 다수의 다른 컴포넌트를 포함할 수 있다. DNN 프로세서(112)는 일부 실시예에서, 추가적인 또는 대안적인 컴포넌트를 포함할 수 있다.
DNN 프로세서(112)는 일부 구성에서 다른 외부 컴퓨팅 컴포넌트와 연계하여 동작한다. 예를 들면, DNN 프로세서(112)는 일부 실시예에서 호스트 애플리케이션 프로세서 시스템 온 칩(host application processor system on chip)("호스트 SoC")(130)에 접속된다. DNN 프로세서(112)는, 예를 들면, PCIe 인터페이스를 통해 호스트 SoC(130)에 접속될 수 있다. 예를 들어, PCIe 종단점(135)과 같은 적절한 PCIe 컴포넌트가 활용되어 이들 접속을 가능하게 할 수 있다.
호스트 SoC(130)는 DNN 프로세서(112)에 대한 애플리케이션 프로세서로서 역할을 한다. 메인 운영체제, 애플리케이션, 및 보조 센서 프로세싱은 호스트 SoC(130)에 의해 수행된다. 호스트 SoC(130)는 또한, 예를 들어, 이미지 데이터와 같은 입력 데이터를 DNN 프로세서(112)에 제공하는 입력 데이터 소스(102), 예컨대 외부 카메라에 접속될 수 있다. 예를 들어, TENSILICA 노드(140)와 같은 추가적인 중앙 처리 유닛("CPU" 또는 "프로세서")는 또한 DNN 프로세서(112)의 동작을 조정하는데 이용될 수 있으며, 그 양상은 아래에서 설명될 것이다.
DDR DRAM(155)은 또한, 메인 시스템 메모리로서 사용될 수 있는 호스트 SoC(130)에 접속될 수 있다. 이 메모리는 메모리 제어기(145)를 통해 고 대역폭 패브릭(120)(예컨대, PCIe 버스)을 가로질러 호스트 SoC(130)로부터 액세스 가능하다. 고 대역폭 패브릭(120)은, 양방향 직접 메모리 액세스(direct memory access; "DMA") 소형 메시징 트랜잭션 및 더 큰 DMA 트랜잭션을 제공한다. 브리지(115) 및 저 대역폭 패브릭(110)은 서브모듈 구성 및 다른 기능을 위해 DNN 프로세서(112)를 호스트 SoC(130)에 접속할 수 있다.
DNN 프로세서(112)는, 메인 메모리(155)로 그리고 메인 메모리(155)로부터 데이터를 이동시키도록 구성되는 DMA 엔진(105B)을 포함할 수 있다. DMA 엔진(105B)은, 일부 실시예에서, 두 개의 채널을 갖는다. 한 채널은 동작 디스크립터를 페치하는 것에 전용되고 다른 채널은 M2M 동작에 전용된다. DMA 디스크립터는 M2M 디스크립터에 임베딩될 수 있다. 이러한 맥락에서 디스크립터는, 메모리의 콘텐츠를 이동시키기 위해 사용되는 DMA 디스크립터이며, 상기에서 설명되는 동작 디스크립터와 혼동되지 않아야 한다.
로컬의 SRAM 메모리(150)를 오프로드(offload)하기 위해, 그리고 입력 데이터 및 가중치 데이터를 위한 더 많은 공간을 제공하기 위해, 활성화 출력은 옵션으로 DDR 메모리(155)로 직접적으로 스트리밍될 수 있다. DDR 메모리(155)로 데이터를 스트리밍할 때, DNN 프로세서(112)는 고 대역폭 패브릭(120) 상에서 버스트 트랜잭션을 위한 충분한 데이터를 축적할 것이고, 뉴럴 프로세싱 요소(105F)에 대한 백프레셔(backpressure)를 최소화하기에 충분한 트랜잭션을 버퍼링할 것이다. DNN 프로세서(112)의 동작에 관한 추가적인 세부 사항은 하기에서 제공될 것이다.
DNN 프로세서(112)의 동작에 관한 추가적인 세부 사항은 하기에서 제공될 것이다. 특히, 증가된 정밀도를 갖는 뉴럴 프로세싱 요소인 뉴럴 프로세싱 요소(105F)의 구성 및 동작에 관한 세부사항은 도 2 및 3과 관련하여 아래에서 제공될 것이다.
도 2는 증가된 정밀도 계산을 위해 구성된 뉴럴 프로세싱 요소(105F)의 구성 및 동작의 양상들을 도시하는 컴퓨팅 아키텍처 다이어그램이다. 위에서 간략하게 논의된 바와 같이, 여기에 개시된 뉴럴 프로세싱 요소(105F)의 아키텍처는 특정 유형의 DNN 계층에 의해 생성된 피연산자를 프로세싱할 때 더 높은 정밀도 계산을 가능하게 한다.
위에서 간략하게 설명된 바와 같이, 뉴럴 프로세싱 요소(105F)는 입력으로서 피연산자(202A 및 202B)("피연산자(202)"로 지칭될 수 있음)를 취한다. 피연산자(202)는 N 비트 유부호 또는 무부호 이진수일 수 있으며, 여기서 N은 2의 거듭제곱이다. 하나의 특정 구현에서, 예를 들어, 피연산자(202)는 유부호 또는 무부호 8비트 이진수이다. 피연산자(202)는 다른 구현에서 다른 수의 비트를 사용하여 표현될 수 있다.
또한, 위에서 간략하게 설명된 바와 같이, 피연산자(202)가 DNN의 ReLU 계층에 의해 생성될 때와 같은 특정 상황에서, 뉴럴 프로세싱 요소(105F)는 피연산자(202)를 N 비트에서 N+1 비트로 확장할 수 있다. 일반적으로 ReLU 계층에 의해 출력되는 유부호 N 비트 값은 부호용으로 1비트가 예약되어 있으므로, N+1 비트(8비트가 사용될 때 -127 내지 128의 값을 나타냄)만 사용한다. 그러나, 개시된 기술을 사용하여, 뉴럴 프로세싱 요소(105F)는 자신의 내부 계산에서 ReLU 계층에 의해 생성된 피연산자(202)의 모든 N 비트(8비트가 사용되는 경우 0 내지 255의 값을 나타냄)를 활용할 수 있다.
피연산자가 아래에 설명된 방식으로 N 비트에서 N+1 비트로 확장되면, 뉴럴 프로세싱 요소(105F)는 확장된 피연산자의 N+1 비트에 대해 연산할 수 있으므로, 뉴럴 프로세싱 요소(105F)가 N 비트만을 사용하여 자신의 내부 계산을 수행하는 아키텍처와 비교하여 증가된 정밀도를 제공한다. 본원에서 구체적으로 언급되지 않는 다른 기술적 이점은, 개시된 요지의 구현을 통해 또한 실현될 수 있다.
여기에 개시된 기능을 제공하기 위해, DNN 프로세서(112)의 뉴럴 프로세싱 요소(105F)는 무엇보다도 하드웨어 AND 게이트(206A 및 206B)를 포함한다. 하드웨어 AND 게이트(206A)는 이진 신호(208A)(여기서 "부호 확장 신호(208A)"로 지칭될 수 있음)와 피연산자(202A)의 MSB 사이의 논리 AND 연산을 수행하도록 구성된다. 하드웨어 AND 게이트(206B)는 이진 신호(208B)(여기에서 "부호 확장 신호(208B)"로 지칭될 수 있음)와 피연산자(202B)의 MSB 사이의 논리 AND 연산을 수행하도록 구성된다. 부호 확장 신호(208)는 일부 구성에서 1비트 이진수이다.
도 2에 도시된 예에서, 피연산자(202A 및 202B)는 8비트 2진수이다. 따라서, 하드웨어 AND 게이트(206A)는 부호 확장 신호(208A)와 피연산자(202A)의 비트 7 사이의 논리 AND 연산을 수행하도록 구성된다. 유사하게, 하드웨어 AND 게이트(206B)는 부호 확장 신호(208B)와 피연산자(202B)의 비트 7 사이의 논리 AND 연산을 수행하도록 구성된다.
위에서 간략하게 논의된 바와 같이, 부호 확장 신호(208)의 상태는 DNN 프로세서(112)에 의해 이전에 프로세싱된 DNN의 계층 유형에 기초하여 설정될 수 있다. 특히, 부호 확장 신호(208A)는 예를 들어, 피연산자(202A)가 DNN의 ReLU 계층에 의해 생성될 때와 같이 피연산자(202A)가 무부호인 경우 논리적 거짓으로 설정될 수 있다. 유사하게, 부호 확장 신호(208B)는 예를 들어, 피연산자(202B)가 DNN의 ReLU 계층에 의해 생성될 때와 같이 피연산자(202A)가 유부호인 경우 논리적 거짓으로 설정될 수 있다. 뉴럴 프로세싱 요소(105F)는 또한 피연산자(202)가 양수 값만을 취할 수 있는 DNN 계층에 의해 생성될 때 부호 확장 신호(208)를 논리적 거짓으로 설정할 수 있다.
일반적으로, 부호 확장 신호(208)는 DNN의 바로 이전에 프로세싱된 계층에 적용된 활성화 함수(즉, 비선형성)의 유형에 기초하여 설정될 수 있다. DNN의 이전 계층에 적용된 비선형성을 식별하는 정보는 부호 확장 신호(208)를 설정하기 위해 현재 계층의 프로세싱 중에 제공된다. 일부 구성에서, 사용자는 부호 확장 신호(208)가 논리적 참 또는 논리적 거짓이 되는 특정 활성화 기능을 명시할 수 있다.
부호 확장 신호(208)가 참일 때, 뉴럴 프로세싱 요소(105F)는 부호 확장 연산을 수행한다. 이것은 DNN의 이전 계층이 유부호 출력을 생성하는 Tanh("쌍곡선 탄젠트") 계층인 경우에 발생할 수 있다.
부호 확장 연산을 수행하기 위해, 뉴럴 프로세싱 요소는 또한 접합 회로(204A 및 204B)(여기에서 "접합기(204A 또는 204B)"로 지칭될 수 있음)를 포함한다. 접합기(204A 및 204B)는 2개의 2진 값을 접합하도록 구성된 회로이다.
접합기(204A)는 하드웨어 AND 게이트(206A)의 1비트 출력과 피연산자(202A)를 접합함으로써 피연산자를 N 비트 값에서 N+1 비트 값으로 확장한다. 유사하게, 접합기(204B)는 하드웨어 AND 게이트(206B)의 1비트 출력과 피연산자(202B)를 접합함으로써, 피연산자를 N 비트 값에서 N+1 비트 값으로 확장한다. 피연산자(202)가 8비트 이진수인 구성에서, 예를 들어, 도 2에 도시된 바와 같이, 접합기(204)의 출력은 9비트 유부호 이진수이다.
접합기(204A 및 204B)의 유부호 출력(210A) 및 유부호 출력(210B)은 각각 하드웨어 이진 승산기(212)에 전달된다. 하드웨어 이진 승산기(212)는 2개의 이진수, 이 경우 출력(210A 및 210B)을 곱하도록 구성된 회로이다. 출력(210)이 9비트 유부호 이진수인 도 2에 도시된 예에서, 하드웨어 이진 승산기(212)의 출력(214)은 18비트 유부호 이진수이다. 승산기(212)의 출력(214)은 추가 프로세싱을 위해 뉴럴 프로세싱 요소(105F) 내의 다른 컴포넌트에 제공될 수 있다.
도 3a는 개시된 기술을 사용하여 구성된 뉴럴 프로세싱 요소(105F)의 동작의 예시적인 예를 도시하는 데이터 다이어그램이다. 이 예에서, 피연산자(202A)는 예를 들어, DNN의 ReLU 계층에 의해 출력되는 것과 같은 8비트 무부호 이진수이다. 이 예에서, 부호 확장 신호(208A)는, 피연산자가 무부호이기 때문에 논리적 거짓(즉, 도시된 예에서 0)으로 설정된다. 따라서, AND 게이트(206A)의 출력(210A)은 피연산자(202A)의 비트 7의 값에 관계없이 0이다.
위에서 설명된 바와 같이, AND 게이트(206A)의 출력(즉, 0)은 연산자(202A)와 접합(즉, 앞에 추가됨)된다. 예시된 예에서, 예를 들어, AND 게이트(206A)의 출력(210A)은 피연산자(202A)와 접합되어, 8비트 피연산자(202A)를 9비트 유부호 이진수로 변환한다. 이러한 방식으로, 피연산자(204A)의 비트 0 내지 비트 7은 이진수(예컨대, 0 내지 255의 값을 갖는 양수)를 나타내기 위해 사용될 수 있다. 9비트 유부호 출력(210A)은 승산기(212)에 제공된다.
도 3b는 개시된 기술을 사용하여 구성된 뉴럴 프로세싱 요소(105F)의 동작의 또 다른 예시적인 예를 도시하는 데이터 다이어그램이다. 도 3b에 도시된 피연산자(202A)는 도 3a에 제시되고 위에서 설명된 예에 도시된 것과 동일하다. 그러나, 이 예에서, 부호 확장 신호(208A)는 논리적 참(즉, 예시된 예에서 1)으로 설정된다. 따라서, AND 게이트(206A)의 출력(210A)은, 피연산자(202A)의 비트 7(즉, MSB)이 1이면 1이고 피연산자(202A)의 비트 7(즉, MSB)이 0이면 0이다.
전술한 바와 같이, AND 게이트(206A)의 출력은 피연산자(202A)와 접합된다(즉, 앞에 추가됨). 예시된 예에서, 예를 들어, 8번째 비트가 피연산자(202A)에 추가된다. 피연산자(202A)의 비트 7의 값이 1이면, 8번째 비트의 값은 1로 설정된다(도 3b에서 출력(210A')으로서 도시됨). 연산(202A)의 비트 7의 값이 0이면, 8번째 비트의 값은 0으로 설정된다(도 3b에서 210A"로 도시됨). 이러한 방식으로, 부호 비트의 값은 양수 또는 음수일 수 있는 유부호 피연산자(202)에 대해 유지될 수 있다. 9비트 유부호 출력(210A)은 위에서 설명된 방식으로 사용하기 위해 승산기(212)에 제공된다. 도 3a 및 도 3b는 8비트 피연산자에 대해 예시되었지만, 다른 비트 수를 갖는 피연산자에도 동일한 연산이 적용될 수 있음을 인식해야 한다.
도 4는 본 명세서에 개시된 일 실시예에 따라, 도 1 내지 3b를 참조하여 위에서 설명된 증가된 정밀도를 위해 구성된 뉴럴 프로세싱 요소(105F)의 동작의 양상을 예시하는 루틴(400)을 도시하는 흐름도이다. 도 4, 및 다른 도면들과 관련하여 본원에서 설명되는 논리적 동작은, 1) 컴퓨팅 디바이스 상에서 실행되는 일련의 컴퓨터로 구현된 행위(act) 또는 프로그램 모듈로서 그리고/또는 (2) 컴퓨팅 디바이스 내의 상호접속된 머신 논리 회로 또는 회로 모듈로서 구현될 수 있다는 것이 인식되어야 한다.
본원에서 개시되는 기술의 특정한 구현은, 컴퓨팅 디바이스의 성능 및 다른 요건에 의존하는 선택의 문제이다. 따라서, 본원에서 설명되는 논리적 동작은, 상태, 동작, 구조적 디바이스, 행위, 또는 모듈로서 다양하게 지칭된다. 이들 상태, 동작, 구조적 디바이스, 행위 및 모듈은 하드웨어, 소프트웨어, 펌웨어, 특수 목적 디지털 논리, 및 이들의 임의의 조합으로 구현될 수 있다. 도면들에 도시되고 본원에서 설명되는 것보다 더 많은 또는 더 적은 동작이 수행될 수 있다는 것이 인식되어야 한다. 이들 동작은 또한, 본원에서 설명되는 것과는 상이한 순서로 수행될 수 있다.
루틴(400)은 유부호 또는 무부호 이진 피연산자(202)가 수신되는 동작(402)에서 시작한다. 위에서 논의된 바와 같이, 피연산자(202)는 하나의 특정 구현에서 8비트이지만, 다른 구성에서는 또 다른 비트 수를 사용하여 표현될 수 있다.
동작(402)으로부터, 루틴(400)은 동작(404)으로 진행하며, 여기서 AND 게이트(206)는 피연산자(202)의 MSB와 부호 확장 신호(208)에 대해 논리 AND 연산을 수행한다. 위에서 논의된 바와 같이, 부호 확장 신호(208)는 일 실시예에서 단일 비트 신호이다. 부호 확장 신호(208)는 부호 확장 연산이 동작(402)에서 수신된 피연산자(202)에 대해 수행되어야 하는지 여부를 표시한다.
동작(404)으로부터, 루틴(400)은 동작(406)으로 진행하고, 여기서 새로운 MSB가 N 비트 피연산자(202)에 추가되어 N+1 비트 유부호 이진 값(210)을 생성한다. 그 다음 루틴(400)은 동작(408)으로 진행하고, 여기서 동작(404)에서 수행된 논리 AND 연산의 결과는 N+1 비트 유부호 값(210)의 새로운 MSB에 저장된다. 위에서 논의된 바와 같이, 이러한 동작은 일부 실시예에서 접합을 통해 수행된다.
동작(408)으로부터, 루틴(400)은 접합기(204)가 9비트 유부호 값을 승산기(212)에 전달하는 동작(410)으로 진행한다. 그 다음 루틴(400)은 동작(402)으로 다시 진행하고, 여기서 추가 피연산자(202)는 위에서 설명된 방식으로 프로세싱될 수 있다.
도 5는, 본원에서 제시되는 DNN 프로세서(112)에 대한 애플리케이션 호스트로서 작용할 수 있는 컴퓨팅 디바이스에 대한 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍처를 도시하는 컴퓨터 아키텍처 도면이다. 특히, 도 5에서 예시되는 아키텍처는, 서버 컴퓨터, 휴대폰, 전자책 단말기(e-reader), 스마트폰, 데스크톱 컴퓨터, AR/VR 디바이스, 태블릿 컴퓨터, 랩톱 컴퓨터, 또는 DNN 프로세서(112)와 함께 사용하기에 적절한 또 다른 유형의 컴퓨팅 디바이스를 구현하도록 활용될 수 있다.
도 5에서 예시되는 컴퓨터(500)는, 중앙 프로세싱 유닛(502)(central processing unit; "CPU"), 랜덤 액세스 메모리(506)(random-access memory; "RAM") 및 판독 전용 메모리(read-only memory; "ROM")(508)를 포함하는 시스템 메모리(504), 및 메모리(504)를 CPU(502)에 결합하는 시스템 버스(510)를 포함한다. 예컨대 기동 동안, 컴퓨터(500) 내의 요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(basic input/output system; "BIOS" 또는 "펌웨어")은 ROM(508)에 저장될 수 있다. 컴퓨터(500)는, 운영체제(522), 애플리케이션 프로그램, 및 다른 유형의 프로그램을 저장하기 위한 대용량 스토리지 디바이스(512)를 더 포함한다. 대용량 스토리지 디바이스(512)는, 또한 다른 유형의 프로그램 및 데이터를 저장하도록 구성될 수 있다.
대용량 기억 디바이스(512)는 버스(510)에 접속된 대용량 기억 제어기(도시 생략됨)를 통해 CPU(502)에 접속된다. 대용량 스토리지 디바이스(512) 및 그것의 관련된 컴퓨터 판독 가능 매체는, 컴퓨터(500)에 비휘발성 스토리지를 제공한다. 비록 본원에서 포함되는 컴퓨터 판독 가능 매체의 설명이, 예를 들어, 하드 디스크, CD-ROM 드라이브, DVD-ROM 드라이브, 또는 USB 스토리지 키(storage key)와 같은 대용량 스토리지 디바이스를 언급하지만, 컴퓨터 판독 가능 매체는, 컴퓨터(500)에 의해 액세스될 수 있는 임의의 이용 가능한 컴퓨터 저장 매체 또는 통신 매체일 수 있다는 것이 기술 분야의 숙련된 자에 의해 인식되어야 한다.
통신 매체는, 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 예를 들어, 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터를 포함하고 임의의 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는, 신호에 정보를 인코딩하는 방식으로 자신의 특성 중 하나 이상이 변경 또는 설정된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는, 예를 들어, 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, 무선 주파수, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기의 것 중 임의의 것의 조합이 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
제한이 아닌 예로서, 컴퓨터 저장 매체는, 예를 들어, 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성의 착탈식 및 비착탈식 매체를 포함할 수 있다. 예를 들면, 컴퓨터 저장 매체는, RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 솔리드 스테이트 메모리 기술, CD-ROM, 디지털 다기능 디스크(digital versatile disk; "DVD"), HD-DVD, BLU-RAY, 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 소망되는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(500)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 그러나 이들로 제한되지는 않는다. 청구항들의 목적을 위해, 어구 "컴퓨터 저장 매체" 및 그 변형어는, 파 또는 신호 그 자체 또는 통신 매체를 포함하지 않는다.
다양한 구성에 따르면, 컴퓨터(500)는, 예를 들어, 네트워크(520)와 같은 네트워크를 통한 원격 컴퓨터에 대한 논리적 접속을 사용하여 네트워크 환경에서 동작할 수 있다. 컴퓨터(500)는 버스(510)에 접속되는 네트워크 인터페이스 유닛(516)을 통해 네트워크(520)에 접속될 수 있다. 네트워크 인터페이스 유닛(516)은 또한, 다른 유형의 네트워크 및 원격 컴퓨터 시스템에 접속하기 위해 활용될 수 있다는 것이 인식되어야 한다. 컴퓨터(500)는 또한, 키보드, 마우스, 터치 입력, 전자 스타일러스(도 5에서 도시되지 않음), 또는 물리적 센서 예컨대 비디오 카메라를 비롯한, 다수의 다른 디바이스로부터 입력을 수신하고 프로세싱하기 위한 입출력 제어기(518)를 포함할 수 있다. 유사하게, 입출력 제어기(518)는 디스플레이 스크린 또는 다른 유형의 출력 디바이스(도 5에서 또한 도시되지 않음)에 출력을 제공할 수 있다.
본원에서 설명되는 소프트웨어 컴포넌트는, CPU(502)에 로딩되어 실행될 때, CPU(502) 및 전체 컴퓨터(500)를 범용 컴퓨팅 디바이스로부터, 본원에서 제시되는 기능성을 용이하게 하도록 맞춤화되는 특수 목적 컴퓨팅 디바이스로 변형시킬 수 있다는 것이 인식되어야 한다. CPU(502)는, 임의의 수의 상태를 개별적으로 또는 집합적으로 가정할 수 있는, 임의의 수의 트랜지스터 또는 다른 이산 회로 요소로부터 구성될 수 있다. 더 구체적으로, CPU(502)는 본원에서 개시되는 소프트웨어 모듈 내에 포함되는 실행 가능 명령어에 응답하여 유한 상태 머신으로서 동작할 수 있다. 이들 컴퓨터 실행 가능 명령어는, CPU(502)가 상태들 사이에서 어떻게 전이하는지를 명시하는 것에 의해 CPU(502)를 변형시킬 수 있고, 그에 의해, CPU(502)를 구성하는 트랜지스터들 또는 다른 별개의 하드웨어 요소들을 변형시킬 수 있다.
본원에서 제시되는 소프트웨어 모듈을 인코딩하는 것은, 또한, 본원에서 제시되는 컴퓨터 판독 가능 매체의 물리적 구조를 변형시킬 수 있다. 물리적 구조의 특정한 변형은, 이 설명의 상이한 구현예에서, 다양한 요인에 의존한다. 그러한 요인의 예는, 컴퓨터 판독 가능 매체를 구현하기 위해 사용되는 기술, 컴퓨터 판독 가능 매체가 주 스토리지로서 특성 묘사되는지 또는 보조 스토리지로서 특성 묘사되는지의 여부, 및 등등을 포함하지만, 그러나 이들로 제한되지는 않는다. 예를 들면, 컴퓨터 판독 가능 매체가 반도체 기반의 메모리로서 구현되는 경우, 본원에서 개시되는 소프트웨어는, 반도체 메모리의 물리적 상태를 변형시키는 것에 의해 컴퓨터 판독 가능 매체 상에 인코딩될 수 있다. 예를 들면, 소프트웨어는 트랜지스터, 커패시터, 또는 반도체 메모리를 구성하는 다른 별개의 회로 요소의 상태를 변형시킬 수 있다. 소프트웨어는 또한, 데이터를 그러한 컴포넌트 상에 저장하기 위해 그러한 컴포넌트의 물리적 상태를 변형시킬 수 있다.
또 다른 예로서, 본원에서 개시되는 컴퓨터 판독 가능 매체는 자기 또는 광학 기술을 사용하여 구현될 수 있다. 그러한 구현 예에서, 본원에서 제시되는 소프트웨어는, 자기 또는 광학 매체 내에서 소프트웨어가 인코딩될 때, 자기 또는 광학 매체의 물리적 상태를 변형시킬 수 있다. 이들 변형은, 주어진 자기 매체 내에서의 특정한 위치의 자기적 특성을 변경하는 것을 포함할 수 있다. 이들 변형은 또한, 주어진 광학 매체 내에서의 특정 위치의 물리적 피처 또는 특성을 변경하여, 그들 위치의 광학적 특성을 변경하는 것을 포함할 수 있다. 물리적 매체의 다른 변형들도 본 설명의 범위 및 정신으로부터 벗어나지 않고 가능하며, 전술한 예들은 단지 이 논의를 쉽게 하기 위해서 제공된 것이다.
상기의 것에 비추어, 본원에서 제시되는 소프트웨어 컴포넌트를 저장하고 실행하기 위해, 많은 유형의 물리적 변형이 컴퓨터(500)에서 발생한다는 것이 인식되어야 한다. 컴퓨터(500)에 대한 도 5에서 도시되는 아키텍처, 또는 유사한 아키텍처는, 핸드헬드 컴퓨터, 비디오 게임 디바이스, 임베딩형 컴퓨터 시스템(embedded computer system), 모바일 디바이스 예컨대 스마트폰, 태블릿, 및 AR/VR 디바이스, 및 기술 분야의 숙련된 자에게 알려져 있는 다른 유형의 컴퓨팅 디바이스를 비롯한, 다른 유형의 컴퓨팅 디바이스를 구현하도록 활용될 수 있다는 것이 또한 인식되어야 한다. 컴퓨터(500)는 도 5에서 도시되는 모든 컴포넌트를 포함하지 않을 수도 있거나, 도 5에 명시적으로 도시되지 않는 다른 컴포넌트를 포함할 수 있거나, 또는 도 5에서 도시되는 것과 완전히 상이한 아키텍처를 활용할 수 있다는 것이 또한 고려된다.
도 6은, 본원에서 제시되는 다양한 실시예에 따른, 개시된 기술의 양상이 구현될 수 있는 분산 네트워크 컴퓨팅 환경(600)을 예시하는 네트워크 도면이다. 도 6에서 도시되는 바와 같이, 하나 이상의 서버 컴퓨터(600A)는, 통신 네트워크(520)(이것은, 고정된 유선 또는 무선 LAN, WAN, 인트라넷, 엑스트라넷, 피어 투 피어 네트워크(peer-to-peer network), 가상의 사설 네트워크, 인터넷, 블루투스, 통신 네트워크, 독점적(proprietary) 저전압 통신 네트워크, 또는 다른 통신 네트워크 중 어느 하나일 수도 있거나, 또는 이들의 조합일 수도 있음)를 통해, 예를 들어, 태블릿 컴퓨터(600B), 게임 콘솔(600C), 스마트 워치(600D), 예를 들어, 스마트폰과 같은 전화기(600E), 개인용 컴퓨터(600F), 및 AR/VR 디바이스(600G)와 같은, 그러나 이들로 제한되지는 않는 다수의 클라이언트 컴퓨팅 디바이스와 상호접속될 수 있다.
통신 네트워크(520)가 인터넷인 네트워크 환경에서, 예를 들면, 서버 컴퓨터(600A)는, 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol; "HTTP"), 파일 전송 프로토콜(file transfer protocol; "FTP"), 또는 단순 객체 접근 프로토콜(simple object access protocol; "SOAP")과 같은 다수의 공지된 프로토콜 중 임의의 것을 통해, 클라이언트 컴퓨팅 디바이스(600B 내지 600G)로 또는 그들로부터 데이터를 프로세싱 및 전달하도록 동작 가능한 전용 서버 컴퓨터일 수 있다. 추가적으로, 네트워크화된 컴퓨팅 환경(600)은, 예를 들어, 보안 소켓 계층(secured socket layer; "SSL") 또는 프리티 굿 프라이버시(pretty good privacy; "PGP")와 같은 다양한 데이터 보안 프로토콜을 활용할 수 있다. 클라이언트 컴퓨팅 디바이스(600B 내지 600G)의 각각은, 하나 이상의 컴퓨팅 애플리케이션 또는 단말 세션 예컨대 웹 브라우저(도 6에서 도시되지 않음), 또는 다른 그래픽 사용자 인터페이스(도 6에서 도시되지 않음), 또는 모바일 데스크톱 환경(도 6에서 도시되지 않음)을 지원하여 서버 컴퓨터(600A)에 대한 액세스를 획득하도록 동작 가능한 운영체제를 구비할 수 있다.
서버 컴퓨터(600A)는 다른 컴퓨팅 환경(도 6에서 도시되지 않음)에 통신 가능하게 결합될 수 있고 참여하는 사용자의 상호 작용/자원 네트워크에 관한 데이터를 수신할 수 있다. 예시적인 동작에서, 사용자(도 6에서 도시되지 않음)는 클라이언트 컴퓨팅 디바이스(600B 내지 600G) 상에서 실행되는 컴퓨팅 애플리케이션과 상호 작용하여, 소망되는 데이터를 획득할 수도 있고 그리고/또는 다른 컴퓨팅 애플리케이션을 수행할 수 있다.
데이터 및/또는 컴퓨팅 애플리케이션은, 서버(600A), 또는 서버들(600A) 상에 저장될 수도 있고, 예시적인 통신 네트워크(620)를 통해 클라이언트 컴퓨팅 디바이스(600B 내지 600G)를 통해 협력하는 사용자와 통신할 수 있다. 참여하는 사용자(도 6에서 도시되지 않음)는 서버 컴퓨터(600A) 상에서 전체적으로 또는 부분적으로 수용되는 특정한 데이터 및 애플리케이션에 대해 액세스를 요청할 수 있다. 이들 데이터는 프로세싱 및 저장을 위해 클라이언트 컴퓨팅 디바이스(600B 내지 600G)와 서버 컴퓨터(600A) 사이에서 전달될 수 있다.
서버 컴퓨터(600A)는, 데이터 및 애플리케이션의 생성, 인증, 암호화 및 통신을 위한 컴퓨팅 애플리케이션, 프로세스 및 애플릿을 호스팅할 수 있고, 다른 서버 컴퓨팅 환경(도 6에서 도시되지 않음), 써드파티 서비스 공급자(도 6에서 도시되지 않음), 네트워크 결합 스토리지(network attached storage; "NAS") 및 스토리지 영역 네트워크(storage area networks; "SAN")와 협력하여 애플리케이션/데이터 트랜잭션을 실현할 수 있다.
도 5에서 도시되는 컴퓨팅 아키텍처 및 도 6에서 도시되는 분산 네트워크 컴퓨팅 환경은 논의의 용이성을 위해 단순화되었다는 것이 인식되어야 한다. 컴퓨팅 아키텍처 및 분산 컴퓨팅 네트워크는 훨씬 더 많은 컴퓨팅 컴포넌트, 디바이스, 소프트웨어 프로그램, 네트워킹 디바이스, 및 본원에서 구체적으로 설명되지 않는 다른 컴포넌트를 포함하고 이들을 활용할 수 있다는 것이 또한 인식되어야 한다.
본원에서 제시되는 개시는 또한, 다음의 조항들에서 기술되는 요지를 포괄한다:
조항 1. 복수의 뉴럴 프로세싱 요소(neural processing elements)를 포함하는 심층 신경망(deep neural network; DNN) 프로세서에 있어서, 복수의 뉴럴 프로세싱 요소 각각은, 제1 부호 확장 신호(sign extend signal)와 제1 피연산자(202A)의 최상위 비트(most significant bit; MSB) 사이에 논리 AND 연산을 수행하도록 구성된 제1 하드웨어 AND 게이트, 제1 하드웨어 AND 게이트의 출력과 제1 피연산자를 접합하고 제1 출력을 하드웨어 이진 승산기에 제공하도록 구성된 제1 접합기, 제2 부호 확장 신호와 제2 피연산자의 MSB 사이에 논리 AND 연산을 수행하도록 구성된 제2 하드웨어 AND 게이트, 및 제2 하드웨어 AND 게이트의 출력과 제2 피연산자를 접합하고 제2 출력을 하드웨어 이진 승산기에 제공하도록 구성된 제2 접합기를 포함하는 것인, 심층 신경망(DNN) 프로세서.
조항 2. 조항 1항에 있어서, 제1 피연산자 및 제2 피연산자는 유부호(signed) 또는 무부호(unsigned) 이진 8비트 수를 포함하는 것인, 심층 신경망(DNN) 프로세서.
조항 3. 조항 1 또는 2에 있어서, 제1 출력 및 제2 출력은 9비트 유부호 이진수를 포함하는 것인, 심층 신경망(DNN) 프로세서.
조항 4. 조항 1 내지 3 중 어느 하나의 조항에 있어서, 하드웨어 이진 승산기의 출력은 유부호 18비트 이진수를 포함하는 것인, 심층 신경망(DNN) 프로세서.
조항 5. 조항 1 내지 4 중 어느 하나의 조항에 있어서, 제1 피연산자의 MSB는 8비트 유부호 또는 무부호 이진수의 비트 7을 포함하는 것인, 심층 신경망(DNN) 프로세서.
조항 6. 조항 1 내지 5 중 어느 하나의 조항에 있어서, 제2 피연산자의 MSB는 8비트의 유부호 또는 무부호 이진수의 비트 7을 포함하는 것인, 심층 신경망(DNN) 프로세서.
조항 7. 조항 1 내지 6 중 어느 하나의 조항에 있어서, 제1 부호 확장 신호 또는 제2 부호 확장 신호의 상태는 DNN 프로세서에 의해 이전에 프로세싱된 DNN의 계층의 유형에 기초하는 것인, 심층 신경망(DNN) 프로세서.
조항 8. 조항 1 내지 7 중 어느 하나의 조항에 있어서, DNN 프로세서에 의해 이전에 프로세싱된 DNN의 계층은 ReLU 계층을 포함하는 것인, 심층 신경망(DNN) 프로세서.
조항 9. 컴퓨터로 구현된 방법에 있어서, 제1 부호 확장 신호와 제1 피연산자의 최상위 비트(most significant bit; MSB) 사이에 논리 AND 연산을 수행하는 단계; 제1 하드웨어 AND 게이트의 출력과 제1 피연산자를 접합하는 단계; 및 제1 하드웨어 AND 게이트의 출력과 제1 피연산자의 접합의 결과를 하드웨어 이진 승산기에 전달하는 단계를 포함하는, 컴퓨터로 구현된 방법.
조항 10. 조항 9에 있어서, 제2 부호 확장 신호와 제2 피연산자의 MSB 사이에 논리 AND 연산을 수행하는 단계; 제2 하드웨어 AND 게이트의 출력과 제2 피연산자를 접합하는 단계; 및 제2 하드웨어 AND 게이트의 출력과 제2 피연산자의 접합의 결과를 하드웨어 이진 승산기에 전달하는 단계를 더 포함하는, 컴퓨터로 구현된 방법.
조항 11. 조항 9항 또는 10 중 어느 하나의 조항에 있어서, 제1 피연산자 및 제2 피연산자는 유부호 또는 무부호 이진 8비트 수를 포함하는 것인, 컴퓨터로 구현된 방법.
조항 12. 조항 9 내지 11 중 어느 하나의 조항에 있어서, 제1 하드웨어 AND 게이트의 출력과 제1 피연산자의 접합의 결과 및 제2 하드웨어 AND 게이트의 출력과 제2 피연산자의 접합의 결과는 9비트 유부호 이진수를 포함하는 것인, 컴퓨터로 구현된 방법.
조항 13. 조항 9 내지 12 중 어느 하나의 조항에 있어서, 하드웨어 이진 승산기의 출력은 유부호 18비트 이진수를 포함하는 것인, 컴퓨터로 구현된 방법.
조항 14. 조항 9 내지 13 중 어느 하나의 조항에 있어서, 제1 부호 확장 신호 또는 제2 부호 확장 신호의 상태는 심층 신경망(DNN) 프로세서에 의해 이전에 프로세싱된 DNN의 계층의 유형에 기초하는 것인, 컴퓨터로 구현된 방법.
조항 15. 조항 9 내지 14 중 어느 하나의 조항에 있어서, DNN 프로세서에 의해 이전에 프로세싱된 DNN의 계층은 ReLU 계층을 포함하는 것인, 컴퓨터로 구현된 방법.
조항 16. 복수의 뉴럴 프로세싱 요소를 포함하는 심층 신경망(deep neural network; DNN) 프로세서에 있어서, 복수의 뉴럴 프로세싱 요소 각각은, 유부호 이진 8비트 피연산자 또는 무부호 8비트 피연산자를 포함하는 8비트 피연산자를 수신하고; 8비트 피연산자의 최상위 비트(most significant bit; MSB) 및 부호 확장 연산이 8비트 피연산자에 대해 수행되어야 하는지 여부를 표시하는 이진 신호에 대해 논리 AND 연산을 수행하고; 8비트 피연산자에 새로운 MSB를 추가하여 9비트 유부호 이진 값을 생성하고; 9비트 유부호 값의 새로운 MSB에 논리 AND 연산의 결과를 저장하며; 9비트 유부호 값을 승산기에 전달하도록 구성되는 것인, 심층 신경망(DNN) 프로세서.
조항 17. 조항 16항에 있어서, 복수의 뉴럴 프로세싱 요소는 또한, 유부호 이진 8비트 피연산자 또는 무부호 8비트 피연산자를 포함하는 제2의 8비트 피연산자를 수신하고; 제2의 8비트 피연산자의 최상위 비트(MSB)와, 부호 확장 연산이 제2의 8비트 피연산자에 대해 수행되어야 하는지 여부를 표시하는 제2 이진 신호에 대해 논리 AND 연산을 수행하고; 제2의 8비트 피연산자에 새로운 MSB를 추가하여 제2의 9비트 유부호 이진 값을 생성하고; 제2의 9비트 유부호 값의 새로운 MSB에 논리 AND 연산의 결과를 저장하며; 제2의 9비트 유부호 값을 승산기에 전달하도록 구성되는 것인, 심층 신경망(DNN) 프로세서.
조항 18. 조항 16 또는 17에 있어서, 하드웨어 이진 승산기의 출력은 유부호 18비트 이진수를 포함하는 것인, 심층 신경망(DNN) 프로세서.
조항 19. 조항 16 내지 18 중 어느 하나의 조항에 있어서, 이진 신호의 상태는 DNN 프로세서에 의해 이전에 프로세싱된 DNN의 계층의 유형에 기초하는 것인, 심층 신경망(DNN) 프로세서.
조항 20. 조항 16 내지 19 중 어느 하나의 조항에 있어서, 부호 확장 연산이 8비트 피연산자에 대해 수행되어야 하는지 여부를 표시하는 이진 신호는 DNN 프로세서에 의해 이전에 프로세싱된 DNN의 계층에 적용된 비선형성에 기초하여 설정되는 것인, 심층 신경망(DNN) 프로세서.
전술한 내용에 기초하여, 증가된 정밀도를 제공할 수 있는 뉴럴 프로세싱 요소가 여기에 개시되었음을 이해해야 한다. 비록 본원에서 제시되는 요지가, 컴퓨터 구조적 피처, 방법론적 및 변형적 행위, 특정한 컴퓨팅 머신류, 및 컴퓨터 판독 가능 매체에 고유한 언어로 설명되었지만, 첨부된 청구항들에서 기술되는 요지는 본원에서 설명되는 특정한 피처, 행위, 또는 매체로 반드시 제한되는 것은 아니다는 것이 이해되어야 한다. 오히려, 특정한 피처, 행위 및 매체는, 청구된 요지를 구현하는 예시적인 형태로서 개시된다.
전술한 요지는 단지 예로서 제공되고 제한하는 것으로 해석되지 않아야 한다. 예시되고 설명되는 예시적인 구성 및 애플리케이션을 따르지 않으면서, 그리고 다음의 청구항들에서 기술되는 본 개시의 범위를 벗어나지 않으면서, 본원에서 설명되는 요지에 대해 다양한 수정 및 변경이 이루어질 수 있다.

Claims (15)

  1. 복수의 뉴럴 프로세싱 요소(neural processing element)를 포함하는 심층 신경망(deep neural network; DNN) 프로세서에 있어서, 상기 복수의 뉴럴 프로세싱 요소 각각은,
    제1 부호 확장 신호(sign extend signal)와 제1 피연산자의 최상위 비트(most significant bit; MSB) 사이에 논리 AND 연산을 수행하도록 구성된 제1 하드웨어 AND 게이트;
    상기 제1 하드웨어 AND 게이트의 출력과 상기 제1 피연산자를 접합(concatenate)하고 제1 출력을 하드웨어 이진 승산기에 제공하도록 구성된 제1 접합기(concatenator);
    제2 부호 확장 신호와 제2 피연산자의 MSB 사이에 논리 AND 연산을 수행하도록 구성된 제2 하드웨어 AND 게이트; 및
    상기 제2 하드웨어 AND 게이트의 출력과 상기 제2 피연산자를 접합하고 제2 출력을 상기 하드웨어 이진 승산기에 제공하도록 구성된 제2 접합기
    를 포함하는, 심층 신경망(DNN) 프로세서.
  2. 제1항에 있어서,
    상기 제1 피연산자 및 상기 제2 피연산자는 유부호(signed) 또는 무부호(unsigned) 이진 8비트 수를 포함하는 것인, 심층 신경망(DNN) 프로세서.
  3. 제1항에 있어서,
    상기 제1 출력 및 상기 제2 출력은 9비트 유부호 이진수를 포함하는 것인, 심층 신경망(DNN) 프로세서.
  4. 제1항에 있어서,
    상기 하드웨어 이진 승산기의 출력은 유부호 18비트 이진수를 포함하는 것인, 심층 신경망(DNN) 프로세서.
  5. 제1항에 있어서,
    상기 제1 피연산자의 MSB는 8비트의 유부호 이진수 또는 무부호 이진수의 비트-7을 포함하는 것인, 심층 신경망(DNN) 프로세서.
  6. 컴퓨터로 구현된 방법에 있어서,
    제1 부호 확장 신호와 제1 피연산자의 최상위 비트(most significant bit; MSB) 사이에 논리 AND 연산을 수행하는 단계;
    상기 제1 하드웨어 AND 게이트의 출력과 상기 제1 피연산자를 접합하는 단계; 및
    상기 제1 하드웨어 AND 게이트의 출력과 상기 제1 피연산자의 상기 접합의 결과를 하드웨어 이진 승산기에 전달하는(communicate) 단계
    를 포함하는, 컴퓨터로 구현된 방법.
  7. 제6항에 있어서,
    제2 부호 확장 신호와 제2 피연산자의 MSB 사이에 논리 AND 연산을 수행하는 단계;
    상기 제2 하드웨어 AND 게이트의 출력과 상기 제2 피연산자를 접합하는 단계; 및
    상기 제2 하드웨어 AND 게이트와 상기 제2 피연산자의 상기 접합의 결과를 상기 하드웨어 이진 승산기에 전달하는 단계
    를 더 포함하는, 컴퓨터로 구현된 방법.
  8. 제6항에 있어서,
    상기 제1 피연산자 및 제2 피연산자는 유부호 또는 무부호 이진 8비트 수를 포함하는 것인, 컴퓨터로 구현된 방법.
  9. 제8항에 있어서,
    상기 제1 하드웨어 AND 게이트의 출력과 상기 제1 피연산자의 접합의 결과 및 상기 제2 하드웨어 AND 게이트와 상기 제2 피연산자의 접합의 결과는 9비트 유부호 이진수를 포함하는 것인, 컴퓨터로 구현된 방법.
  10. 제9항에 있어서,
    상기 하드웨어 이진 승산기의 출력은 유부호 18비트 이진수를 포함하는 것인, 컴퓨터로 구현된 방법.
  11. 복수의 뉴럴 프로세싱 요소를 포함하는 심층 신경망(deep neural network; DNN) 프로세서에 있어서, 상기 뉴럴 프로세싱 요소 각각은,
    유부호 이진 8비트 피연산자 또는 무부호 8비트 피연산자를 포함하는 8비트 피연산자를 수신하고;
    상기 8비트 피연산자의 최상위 비트(most significant bit; MSB)와, 부호 확장 연산이 상기 8비트 피연산자에 대해 수행되어야 하는지 여부를 표시하는 이진 신호에 대해 논리 AND 연산을 수행하고;
    상기 8비트 피연산자에 새로운 MSB를 추가하여 9비트 유부호 이진 값을 생성하고;
    상기 9비트 유부호 값의 상기 새로운 MSB에 상기 논리 AND 연산의 결과를 저장하며;
    상기 9비트 유부호 값을 승산기에 전달하도록
    구성되는 것인, 심층 신경망(DNN) 프로세서.
  12. 제11항에 있어서, 상기 복수의 뉴럴 프로세싱 요소는 또한,
    유부호 이진 8비트 피연산자 또는 무부호 8비트 피연산자를 포함하는 제2의 8비트 피연산자를 수신하고;
    상기 제2의 8비트 피연산자의 최상위 비트(MSB)와, 부호 확장 연산이 상기 제2의 8비트 피연산자에 대해 수행되어야 하는지 여부를 표시하는 제2 이진 신호에 대해 논리 AND 연산을 수행하고;
    상기 제2의 8비트 피연산자에 새로운 MSB를 추가하여 제2의 9비트 유부호 이진 값을 생성하고;
    상기 제2의 9비트 유부호 값의 상기 새로운 MSB에 상기 논리 AND 연산의 결과를 저장하며;
    상기 제2의 9비트 유부호 값을 상기 승산기에 전달하도록
    구성되는 것인, 심층 신경망(DNN) 프로세서.
  13. 제12항에 있어서,
    하드웨어 이진 승산기의 출력은 유부호 18비트 이진수를 포함하는 것인, 심층 신경망(DNN) 프로세서.
  14. 제13항에 있어서,
    상기 이진 신호의 상태는 상기 DNN 프로세서에 의해 이전에 프로세싱된 DNN의 계층의 유형에 기초하는 것인, 심층 신경망(DNN) 프로세서.
  15. 제14항에 있어서,
    상기 DNN 프로세서에 의해 이전에 프로세싱된 상기 DNN의 계층은 Tanh 계층을 포함하는 것인, 심층 신경망(DNN) 프로세서.
KR1020217038458A 2019-06-28 2020-05-11 증가된 정밀도의 뉴럴 프로세싱 요소 KR20220022480A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/457,828 2019-06-28
US16/457,828 US11604972B2 (en) 2019-06-28 2019-06-28 Increased precision neural processing element
PCT/US2020/032399 WO2020263439A1 (en) 2019-06-28 2020-05-11 Increased precision neural processing element

Publications (1)

Publication Number Publication Date
KR20220022480A true KR20220022480A (ko) 2022-02-25

Family

ID=70857295

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217038458A KR20220022480A (ko) 2019-06-28 2020-05-11 증가된 정밀도의 뉴럴 프로세싱 요소

Country Status (6)

Country Link
US (2) US11604972B2 (ko)
EP (1) EP3991023A1 (ko)
JP (1) JP7551665B2 (ko)
KR (1) KR20220022480A (ko)
CN (1) CN114008584A (ko)
WO (1) WO2020263439A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102412872B1 (ko) * 2021-06-17 2022-06-27 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572235A (en) 1992-11-02 1996-11-05 The 3Do Company Method and apparatus for processing image data
US5717947A (en) 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US5880985A (en) 1996-10-18 1999-03-09 Intel Corporation Efficient combined array for 2n bit n bit multiplications
US6014684A (en) 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
RU2131145C1 (ru) 1998-06-16 1999-05-27 Закрытое акционерное общество Научно-технический центр "Модуль" Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
US6081823A (en) 1998-06-19 2000-06-27 Ati International Srl Circuit and method for wrap-around sign extension for signed numbers
US6421698B1 (en) 1998-11-04 2002-07-16 Teleman Multimedia, Inc. Multipurpose processor for motion estimation, pixel processing, and general processing
JP3614065B2 (ja) 1999-07-27 2005-01-26 株式会社デンソー 符号付き整数乗算装置
US20040010536A1 (en) 2002-07-11 2004-01-15 International Business Machines Corporation Apparatus for multiplication of data in two's complement and unsigned magnitude formats
WO2016039651A1 (en) 2014-09-09 2016-03-17 Intel Corporation Improved fixed point integer implementations for neural networks
US10346350B2 (en) 2015-10-08 2019-07-09 Via Alliance Semiconductor Co., Ltd. Direct execution by an execution unit of a micro-operation loaded into an architectural register file by an architectural instruction of a processor
US11036509B2 (en) 2015-11-03 2021-06-15 Intel Corporation Enabling removal and reconstruction of flag operations in a processor
FR3045892B1 (fr) 2015-12-21 2018-06-22 Commissariat A L'energie Atomique Et Aux Energies Alternatives Circuit neuronal optimise, architecture et procede pour l'execution des reseaux de neurones.
JP6890615B2 (ja) * 2016-05-26 2021-06-18 タータン エーアイ リミテッド ディープニューラルネットワークについての加速器
US10417560B2 (en) 2016-12-01 2019-09-17 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs efficient 3-dimensional convolutions
GB2568085B (en) * 2017-11-03 2020-01-01 Imagination Tech Ltd Hardware unit for performing matrix multiplication with clock gating

Also Published As

Publication number Publication date
US20200410329A1 (en) 2020-12-31
EP3991023A1 (en) 2022-05-04
US11604972B2 (en) 2023-03-14
WO2020263439A1 (en) 2020-12-30
CN114008584A (zh) 2022-02-01
JP2022539554A (ja) 2022-09-12
JP7551665B2 (ja) 2024-09-17
US20230196086A1 (en) 2023-06-22

Similar Documents

Publication Publication Date Title
EP3612991B1 (en) Power-efficient deep neural network module configured for executing a layer descriptor list
US20230117973A1 (en) Data processing method and apparatus
EP3991097A1 (en) Managing workloads of a deep neural network processor
US20230196086A1 (en) Increased precision neural processing element
US11507349B2 (en) Neural processing element with single instruction multiple data (SIMD) compute lanes

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right