KR20170096105A - 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치 - Google Patents

인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20170096105A
KR20170096105A KR1020177013506A KR20177013506A KR20170096105A KR 20170096105 A KR20170096105 A KR 20170096105A KR 1020177013506 A KR1020177013506 A KR 1020177013506A KR 20177013506 A KR20177013506 A KR 20177013506A KR 20170096105 A KR20170096105 A KR 20170096105A
Authority
KR
South Korea
Prior art keywords
processing units
data
input
input neurons
partial results
Prior art date
Application number
KR1020177013506A
Other languages
English (en)
Other versions
KR102539475B1 (ko
Inventor
프레데리코 씨. 프라타스
아요세 제이. 팔콘
마르크 루폰
페르난도 라토레
페드로 로페즈
엔리크 헤레로 아벨라나스
게오르지오스 투르나비티스
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Priority to KR1020227037483A priority Critical patent/KR102655386B1/ko
Publication of KR20170096105A publication Critical patent/KR20170096105A/ko
Application granted granted Critical
Publication of KR102539475B1 publication Critical patent/KR102539475B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • 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)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

인공 신경망에서의 분산 및 협력 계산을 위한 장치 및 방법이 설명된다. 예를 들어, 장치의 일 실시예는 입출력(I/O) 인터페이스; 입력 뉴런에 대한 데이터 및 입력 뉴런 각각과 관련된 시냅스 가중치를 수신하기 위해 I/O 인터페이스에 통신 결합된 복수의 처리 유닛 - 복수의 처리 유닛 각각은 입력 뉴런에 대한 데이터 및 시냅스 가중치의 적어도 일부를 처리하여 부분 결과(partial result)를 생성함 -; 및 복수의 처리 유닛을 통신 결합하는 인터커넥트 - 처리 유닛 각각은 인터커넥트를 통해 하나 이상의 다른 처리 유닛과 부분 결과를 공유하며, 다른 처리 유닛은 부분 결과를 사용하여 추가적인 부분 결과 또는 최종 결과를 생성함 -를 포함한다. 처리 유닛은 입력 뉴런 및 가중치를 포함하는 데이터를 공유 입력 버스를 통해 공유할 수 있다.

Description

인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치{METHOD AND APPARATUS FOR DISTRIBUTED AND COOPERATIVE COMPUTATION IN ARTIFICIAL NEURAL NETWORKS}
본 발명은 일반적으로 컴퓨터 프로세서 분야에 관한 것이다. 특히, 본 발명은 신경망 가속화 방법 및 장치에 관한 것이다.
ANN은 일반적으로 입력으로부터의 값을 계산할 수 있는 인터커넥트 "뉴런(neurons)" 시스템으로서 제공된다. ANN은 패턴을 학습하고 인식하는데 사용되는 가장 적절하고 광범위한 기술 중 하나를 나타낸다. 결과적으로, ANN은 사용자 경험을 향상시키는 직관적인 인간/디바이스 상호 작용을 위한 효과적인 해결책이며, "인지 컴퓨팅(cognitive computing)"으로서 알려진 새로운 계산 패러다임으로서 부상하였다. 다른 용도 중에서도, ANN은 이미징 처리, 음성 및 객체 인식 또는 자연어 처리에 사용될 수 있다. CNN(Convolution Neural Network) 또는 DBN(Deep Belief Network)은 ANN 알고리즘을 사용하는 계산 패러다임의 몇 가지 예일 뿐이다.
아래의 도면들과 관련된 아래의 상세한 설명으로부터 본 발명의 더 나은 이해가 얻어질 수 있으며, 도면들에서:
도 1a는 본 발명의 실시예들에 따른, 예시적인 순차적(in-order) 페치, 디코드, 축출 파이프라인 및 예시적인 레지스터 리네이밍, 비순차적(out-of-order) 발행/실행 파이프라인 양자 모두를 도시하는 블록도이다;
도 1b는 본 발명의 실시예들에 따른, 프로세서에 포함될, 순차적 페치, 디코드, 축출 코어의 예시적인 실시예 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어 양자 모두를 도시하는 블록도이다;
도 2는 본 발명의 실시예들에 따른, 통합 메모리 제어기 및 그래픽을 갖는 단일 코어 프로세서 및 다중 코어 프로세서의 블록도이다;
도 3은 본 발명의 일 실시예에 따른 시스템의 블록도를 나타낸다;
도 4는 본 발명의 일 실시예에 따른 제2 시스템의 블록도를 나타낸다;
도 5는 본 발명의 일 실시예에 따른 제3 시스템의 블록도를 나타낸다;
도 6은 본 발명의 일 실시예에 따른 시스템 온 칩(SoC)의 블록도를 나타낸다;
도 7은 본 발명의 실시예들에 따른, 소스 명령어 세트 내의 이진 명령어들을 타겟 명령어 세트 내의 이진 명령어들로 변환하기 위한 소프트웨어 명령어 변환기의 사용을 대조하는 블록도이다;
도 8은 복수의 계층을 갖는 완전히 접속된 인공 신경망(ANN)의 구성을 도시한다;
도 9는 예시적인 뉴로모픽 가속기 아키텍처를 도시한다;
도 10은 모놀리식 구성 및 계층당 뉴런의 수에 기초한 분산된 구성을 이용하는 본 발명의 실시예 양측 모두에 대한 대역폭 요건을 도시한다;
도 11은 계층당 뉴런의 수에 기초한 모놀리식과 분산 뉴로모픽 아키텍처 간의 비교를 도시한다;
도 12a는 뉴로모픽 가속기가 프로세서에 통신 가능하게 결합된 일 실시예를 도시한다;
도 12b는 뉴로모픽 가속기가 프로세서 내에 통합된 일 실시예를 도시한다;
도 13은 처리 유닛(PU)의 세트를 포함하는 뉴로모픽 가속기의 일 실시예를 도시한다;
도 14a 및 도 14b는 완전히 접속된 1 대 1 연산이 본 발명의 일 실시예에 따라 어떻게 맵핑될 수 있는지를 도시한다;
도 15a 및 도 15b는 완전히 접속된 1 대 N 연산이 본 발명의 또 다른 실시예에 따라 어떻게 맵핑될 수 있는지를 도시한다;
도 16은 다양한 필터 크기와 다수의 메모리 크기의 컨볼루션을 수행하는데 필요한 에너지를 나타낸다;
도 17a 및 도 17b는 실행 클러스터에 대한 상이한 스토리지 배열을 도시한다;
도 18a는 메모리 뱅크 및 인터커넥트가 다른 유형의 데이터 간에 공유되는 메모리 조직의 일 실시예를 도시한다;
도 18b는 일 실시예에 따라 필터가 적용될 수 있는 예시적인 이미지를 도시한다;
도 19는 본 발명의 일 실시예에 따른 복수의 뱅크를 포함하는 스크래치패드 메모리를 도시한다;
도 20a 및 도 20b는 스크래치패드 메모리에 대한 상이한 예시적인 이용을 도시한다;
도 21은 다수의 필터의 함수로서 외부 메모리 액세스의 백분율 감소를 도시한다;
도 22는 본 발명의 일 실시예에 따른 컨볼루션 신경망 가속기를 도시한다;
도 23은 컨볼버에서 사용되는 입력 데이터의 예시적인 세트를 도시한다;
도 24는 도 23으로부터의 요소들이 물리적 메모리 뱅크에 어떻게 맵핑되는지를 도시한다;
도 25는 이미지 처리를 위한 일반적인 가속기의 하이 레벨 블록도를 나타낸다;
도 26은 4x4 픽셀의 커널이 1개의 픽셀의 스트라이드로 좌측 상단에서 우측 하단까지 적용되는 예시적인 이미지를 도시한다;
도 27은 컨볼루션 구성의 함수로서의 판독 포트의 수를 도시한다;
도 28은 4개의 클러스터를 갖는 가속기의 일 실시예를 도시한다;
도 29는 본 발명의 일 실시예에 따른 데이터 컨테이너를 도시한다;
도 30은 본 발명의 일 실시예에서 구현된 정렬 모드를 나타내는 표를 도시한다;
도 31은 본 발명의 일 실시예에서 채용된 로직을 나타내는 표를 도시한다;
도 32는 컨테이너, 정렬 로직 및 선택 로직이 본 발명의 일 실시예에 따라 출력 패킷을 생성하도록 어떻게 상호 접속되는지를 도시한다;
도 33은 가중 입력에 기초하여 뉴런의 출력을 계산하는 예시적인 활성화 함수(AF)를 도시한다;
도 34a 및 도 34b는 룩업 테이블(LUT)을 사용하여 고정된 값으로 근사화된 함수에서의 각 포인트의 계산을 도시한다;
도 35a 및 도 35b는 각각의 포인트의 계산이 LUT를 사용하여 주어진 슬로프를 갖는 선형 세그먼트에 의해 근사될 수 있음을 도시한다;
도 36은 AF들의 특성들에 대해 최적화된 구분적 보간 근사 유닛을 포함하는 본 발명의 일 실시예를 도시한다;
도 37a 및 도 37b는 다형 디코더의 실시예들이 각 입력을 가로 좌표 공간 내의 범위에 어떻게 매핑되는지를 나타내는 데이터 세트를 도시한다;
도 38은 2-5의 최대 오차 및 5개의 선형 세그먼트를 갖는 시그모이드 함수의 예를 도시한다;
도 39는 LUT 및 다형 디코더를 포함하는 아키텍처의 일 실시예를 도시한다;
도 40은 다형 디코더의 일 실시예를 도시한다.
아래의 설명에서는 설명의 목적으로, 후술하는 본 발명의 실시예들의 충분한 이해를 제공하기 위해 다수의 특정 상세들이 설명된다. 그러나, 본 발명의 실시예들은 이러한 특정 상세들 중 일부 없이도 실시될 수 있다는 것이 본 분야의 기술자에게 명백할 것이다. 다른 예들에서는 본 발명의 실시예들의 기본 원리들을 불명확하게 하는 것을 방지하기 위해 공지 구조들 및 디바이스들은 블록도 형태로 도시된다.
예시적인 프로세서 아키텍처들 및 데이터 타입들
도 1a는 본 발명의 실시예들에 따른, 예시적인 순차적(in-order) 페치, 디코드, 축출 파이프라인 및 예시적인 레지스터 리네이밍, 비순차적(out-of-order) 발행/실행 파이프라인 양자 모두를 도시하는 블록도이다. 도 1b는 본 발명의 실시예들에 따른, 프로세서에 포함될 순차적 페치, 디코드, 축출 코어의 예시적인 실시예 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어의 양자 모두를 도시하는 블록도이다. 도 1a 및 도 1b에서 실선 박스들은 파이프라인 및 코어의 순차적 부분을 도시하는 한편, 점선 박스들의 선택적 추가는 레지스터 리네이밍, 비순차적 발행/실행 파이프라인 및 코어를 도시한다.
도 1a에서, 프로세서 파이프라인(100)은 페치 스테이지(102), 길이 디코드 스테이지(104), 디코드 스테이지(106), 할당 스테이지(108), 리네이밍 스테이지(110), 스케줄링(디스패치 또는 발행으로도 알려져 있음) 스테이지(112), 레지스터 판독/메모리 판독 스테이지(114), 실행 스테이지(116), 후기입(write back)/메모리 기입 스테이지(118), 예외 핸들링 스테이지(122) 및 커미트 스테이지(124)를 포함한다.
도 1b는 실행 엔진 유닛(150)에 결합된 프론트 엔드 유닛(130) - 이들 양자는 메모리 유닛(170)에 결합됨 - 을 포함하는 프로세서 코어(190)를 도시한다. 코어(190)는 축소 명령어 세트 컴퓨팅(RISC) 코어, 복합 명령어 세트 컴퓨팅(CISC) 코어, 매우 긴 명령어 워드(VLIW) 코어 또는 하이브리드 또는 대안 코어 타입일 수 있다. 또 다른 옵션으로서, 코어(190)는, 예를 들어, 네트워크 또는 통신 코어, 압축 엔진, 코프로세서 코어, 범용 컴퓨팅 그래픽 처리 유닛(GPGPU: general purpose computing graphics processing unit) 코어, 그래픽 코어 등과 같은 특수 목적 코어일 수 있다.
프론트 엔드 유닛(130)은 디코드 유닛(140)에 결합되는 명령어 페치 유닛(138)에 결합되는 명령어 변환 색인 버퍼(TLB)(136)에 결합되는 명령어 캐시 유닛(134)에 결합되는 분기 예측 유닛(132)을 포함한다. 디코드 유닛(140)(또는 디코더)은 명령어들을 디코딩하고, 출력으로서 하나 이상의 마이크로 연산, 마이크로 코드 엔트리 포인트, 마이크로 명령어, 다른 명령어 또는 다른 제어 신호를 생성하며, 이들은 본래의 명령어들로부터 디코딩되거나, 다른 방식으로 그들을 반영하거나, 그들로부터 도출된다. 디코드 유닛(140)은 다양한 상이한 메커니즘들을 이용하여 구현될 수 있다. 적합한 메커니즘들의 예들은 룩업 테이블들, 하드웨어 구현들, PLA들(programmable logic arrays), 마이크로코드 ROM들(read only memories) 등을 포함하지만, 그에 한정되지 않는다. 일 실시예에서, 코어(190)는 (예를 들어, 디코드 유닛(140) 내에 또는 프론트 엔드 유닛(130) 내에) 소정의 매크로 명령어들에 대한 마이크로코드를 저장하는 마이크로코드 ROM 또는 다른 매체를 포함한다. 디코드 유닛(140)은 실행 엔진 유닛(150) 내의 리네임/할당기 유닛(152)에 결합된다.
실행 엔진 유닛(150)은 하나 이상의 스케줄러 유닛(들)(156)의 세트 및 리타이어먼트 유닛(154)에 결합된 리네임/할당기 유닛(152)을 포함한다. 스케줄러 유닛(들)(156)은, 예약 스테이션들, 중앙 명령어 윈도우 등을 비롯한 임의의 수의 상이한 스케줄러들을 나타낸다. 스케줄러 유닛(들)(156)은 물리적 레지스터 파일(들) 유닛(들)(158)에 결합된다. 물리적 레지스터 파일(들) 유닛들(158) 각각은 하나 이상의 물리적 레지스터 파일을 나타내고, 이들 중 상이한 물리적 레지스터 파일들은 스칼라 정수, 스칼라 부동 소수점, 패킹된 정수, 패킹된 부동 소수점, 벡터 정수, 벡터 부동 소수점, 상태(예를 들어, 실행될 다음 명령어의 어드레스인 명령어 포인터) 등과 같은 하나 이상의 상이한 데이터 타입을 저장한다. 일 실시예에서, 물리적 레지스터 파일(들) 유닛(158)은 벡터 레지스터 유닛, 기입 마스크 레지스터 유닛 및 스칼라 레지스터 유닛을 포함한다. 이들 레지스터 유닛들은 아키텍처 벡터 레지스터들, 벡터 마스크 레지스터들 및 범용 레지스터들을 제공할 수 있다. 물리적 레지스터 파일(들) 유닛(들)(158)은, (예를 들어, 재정렬 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 이용하여; 미래 파일(들), 이력 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 이용하여; 레지스터 맵들 및 레지스터들의 풀을 이용하여) 레지스터 리네이밍 및 비순차적 실행이 구현될 수 있는 다양한 방식들을 예시하기 위해서 리타이어먼트 유닛(154)에 의해 중첩된다. 리타이어먼트 유닛(154) 및 물리적 레지스터 파일(들) 유닛(들)(158)은 실행 클러스터(들)(160)에 결합된다. 실행 클러스터(들)(160)는 하나 이상의 실행 유닛들(162)의 세트 및 하나 이상의 메모리 액세스 유닛들(164)의 세트를 포함한다. 실행 유닛들(162)은 다양한 타입의 데이터(예를 들어, 스칼라 부동 소수점, 패킹된 정수, 패킹된 부동 소수점, 벡터 정수, 벡터 부동 소수점)에 대해 다양한 연산들(예를 들어, 시프트, 가산, 감산, 승산)을 수행할 수 있다. 일부 실시예들은 특정 기능들이나 기능들의 세트들에 전용인 복수의 실행 유닛들을 포함할 수 있지만, 다른 실시예들은 단 하나의 실행 유닛, 또는 모두가 모든 기능들을 수행하는 복수의 실행 유닛을 포함할 수 있다. 스케줄러 유닛(들)(156), 물리적 레지스터 파일(들) 유닛(들)(158) 및 실행 클러스터(들)(160)는 복수개일 수 있는 것으로 도시되는데, 그 이유는 특정 실시예들이 특정 유형들의 데이터/동작들에 대해 개별 파이프라인들(예를 들어, 자신들의 스케줄러 유닛, 물리적 레지스터 파일(들) 유닛 및/또는 실행 클러스터를 각각 갖는 스칼라 정수 파이프라인, 스칼라 부동 소수점/패킹된 정수/패킹된 부동 소수점/벡터 정수/벡터 부동 소수점 파이프라인 및/또는 메모리 액세스 파이프라인 - 및 개별 메모리 액세스 파이프라인의 경우, 이러한 파이프라인의 실행 클러스터만이 메모리 액세스 유닛(들)(164)을 갖는 특정 실시예들이 구현됨)을 발생하기 때문이다. 개별 파이프라인들이 사용되는 경우, 이들 파이프라인 중 하나 이상은 비순차적 발행/실행일 수 있고 나머지는 순차적일 수 있다는 점도 이해해야 한다.
메모리 액세스 유닛들(164)의 세트는 메모리 유닛(170)에 결합되고, 이 메모리 유닛은 레벨 2(L2) 캐시 유닛(176)에 결합되는 데이터 캐시 유닛(174)에 결합된 데이터 TLB 유닛(172)을 포함한다. 하나의 예시적인 실시예에서, 메모리 액세스 유닛들(164)은 로드 유닛(load unit), 어드레스 저장 유닛(store address unit) 및 데이터 저장 유닛(store data unit)을 포함할 수 있으며, 이들 각각은 메모리 유닛(170)에서의 데이터 TLB 유닛(172)에 결합된다. 명령어 캐시 유닛(134)은 메모리 유닛(170)에서의 레벨 2(L2) 캐시 유닛(176)에 또한 결합된다. L2 캐시 유닛(176)은 하나 이상의 다른 레벨의 캐시에 그리고 궁극적으로는 메인 메모리에 결합된다.
예시로서, 예시적 레지스터 리네이밍, 비순차적 발행/실행 코어 아키텍처는 다음과 같이 파이프라인(100)을 구현할 수 있다: 1) 명령어 페치(138)는 페치 및 길이 디코딩 스테이지들(102 및 104)을 수행하고; 2) 디코드 유닛(140)은 디코드 스테이지(106)를 수행하고; 3) 리네임/할당기 유닛(152)은 할당 스테이지(108) 및 리네이밍 스테이지(110)를 수행하고; 4) 스케줄러 유닛(들)(156)은 스케줄 스테이지(112)를 수행하고; 5) 물리적 레지스터 파일(들) 유닛(들)(158) 및 메모리 유닛(170)은 레지스터 판독/메모리 판독 스테이지(114)를 수행하고; 실행 클러스터(160)는 실행 스테이지(116)를 수행하고; 6) 메모리 유닛(170) 및 물리적 레지스터 파일(들) 유닛(들)(158)은 후기입/메모리 기입 스테이지(118)를 수행하고; 7) 다양한 유닛들이 예외 핸들링 스테이지(122)에 수반될 수 있고; 8) 리타이어먼트 유닛(154) 및 물리적 레지스터 파일(들) 유닛(들)(158)은 커미트 스테이지(124)를 수행한다.
코어(190)는 본원에서 설명된 명령어(들)를 비롯하여, 하나 이상의 명령어 세트들(예를 들어, (더 새로운 버전들이 추가된 소정의 확장들을 갖는) x86 명령어 세트; 캘리포니아주 서니베일에 있는 MIPS Technologies의 MIPS 명령어 세트; 캘리포니아주 서니베일에 있는 ARM Holdings의 (NEON과 같은 선택적인 부가 확장을 갖는) ARM 명령어 세트)을 지원할 수 있다. 일 실시예에서, 코어(190)는 패킹된 데이터 명령어 세트 확장(예를 들어, 이하 설명되는, AVX1, AVX2, 및/또는 일부 형태의 일반 벡터 친화형 명령여 포맷(U=0 및/또는 U=1))을 지원하는 로직을 포함하며, 따라서 많은 멀티미디어 애플리케이션들에 의해 사용되는 연산들이 패킹된 데이터를 사용하여 수행되는 것을 허용한다.
코어가 (연산들 또는 스레드들의 2개 이상의 병렬 세트를 실행하는) 멀티스레딩을 지원할 수 있고, 시간 슬라이싱된 멀티스레딩, 동시 멀티스레딩을 포함하는 다양한 방식으로(이 경우 단일 물리 코어는 물리 코어가 동시에 멀티스레딩인 각각의 스레드에게 논리 코어를 제공한다), 또는 이들의 조합(예를 들어, Intel® Hyperthreading technology에서와 같은 시간 슬라이싱된 페칭 및 디코딩 및 그 후의 동시 멀티스레딩)으로 지원할 수 있음을 이해해야 한다.
레지스터 리네이밍이 비순차적 실행의 맥락에서 설명되었지만, 레지스터 리네이밍은 순차적 아키텍처에서 사용될 수도 있다는 점을 이해해야 한다. 도시된 프로세서의 실시예는 또한 개별 명령어 및 데이터 캐시 유닛들(134/174) 및 공유 L2 캐시 유닛(176)을 포함하지만, 대안적인 실시예들은, 예를 들어, 레벨 1(L1) 내부 캐시 또는 다수 레벨들의 내부 캐시 등, 명령어들 및 데이터 양자 모두에 대해 단일 내부 캐시를 가질 수 있다. 일부 실시예들에서, 시스템은 코어 및/또는 프로세서 외부에 있는 외부 캐시, 및 내부 캐시의 조합을 포함할 수 있다. 대안적으로, 캐시 전부가 코어 및/또는 프로세서의 외부에 있을 수 있다.
도 2는 본 발명의 실시예들에 따른, 2 이상의 코어를 가질 수 있고, 통합 메모리 제어기를 가질 수 있고, 통합 그래픽을 가질 수 있는 프로세서(200)의 블록도이다. 도 2의 실선 박스들은, 단일 코어(202A), 시스템 에이전트(210), 하나 이상의 버스 제어기 유닛들(216)의 세트를 갖는 프로세서(200)를 예시하는 한편, 파선 박스들의 선택적인 추가는, 다수의 코어들(202A 내지 202N), 시스템 에이전트 유닛(210)에서의 하나 이상의 통합된 메모리 제어기 유닛(들)(214)의 세트 및 특수 목적 로직(208)을 갖는 대안적인 프로세서(200)를 예시한다.
따라서, 프로세서(200)의 상이한 구현들은, 1) (하나 이상의 코어를 포함할 수 있는) 통합된 그래픽 및/또는 과학(스루풋) 로직인 특수 목적 로직(208), 및 하나 이상의 범용 코어들(예를 들어, 범용 순차적 코어들, 범용 비순차적 코어들, 이 둘의 조합)인 코어들(202A 내지 202N)을 갖는 CPU; 2) 주로 그래픽 및/또는 과학(스루풋)을 위해 의도된 다수의 특수 목적 코어들인 코어들(202A 내지 202N)을 갖는 코프로세서; 및 3) 다수의 범용 순차적 코어들인 코어들(202A 내지 202N)을 갖는 코프로세서를 포함할 수 있다. 따라서, 프로세서(200)는 범용 프로세서, 코프로세서 또는 특수 목적 프로세서, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU(general purpose graphics processing unit), 고스루풋 MIC(many integrated core) 코프로세서(30개 이상의 코어를 포함함), 내장형 프로세서 등일 수 있다. 프로세서는 하나 이상의 칩 상에 구현될 수 있다. 프로세서(200)는, 예를 들어 BiCMOS, CMOS 또는 NMOS와 같은 다수의 프로세스 기술 중 임의의 것을 이용하여 하나 이상의 기판 상에 구현될 수 있고/있거나 그 일부일 수 있다.
메모리 계층구조는, 코어들 내의 하나 이상의 레벨의 캐시, 하나 이상의 공유 캐시 유닛들(206)의 세트, 및 통합된 메모리 제어기 유닛들(214)의 세트에 결합된 외부 메모리(도시되지 않음)를 포함한다. 공유 캐시 유닛들(206)의 세트는, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 레벨 캐시와 같은 하나 이상의 중간 레벨 캐시, 최종 레벨 캐시(LLC: last level cache) 및/또는 이들의 조합을 포함할 수 있다. 일 실시예에서 링 기반 인터커넥트 유닛(212)은 통합된 그래픽 로직(208), 공유 캐시 유닛들(206)의 세트 및 시스템 에이전트 유닛(210)/통합된 메모리 제어기 유닛(들)(214)을 상호 접속하지만, 대안적인 실시예들은 이러한 유닛들을 상호 접속하기 위해 임의의 수의 잘 알려진 기술을 이용할 수 있다. 일 실시예에서, 하나 이상의 캐시 유닛들(206)과 코어들(202A 내지 202N) 사이에 일관성(coherency)이 유지된다.
일부 실시예들에서, 코어들(202A 내지 202N) 중 하나 이상은 멀티스레딩이 가능하다. 시스템 에이전트(210)는 코어들(202A 내지 202N)을 코디네이팅하고 동작시키는 그런 컴포넌트들을 포함한다. 시스템 에이전트 유닛(210)은 예를 들어 전력 제어 유닛(PCU) 및 디스플레이 유닛을 포함할 수 있다. PCU는 코어들(202A 내지 202N) 및 통합 그래픽 로직(208)의 전력 상태를 조정하는 데 필요한 로직 및 컴포넌트들이거나 이들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부 접속된 디스플레이를 구동하기 위한 것이다.
코어들(202A 내지 202N)은 아키텍처 명령어 세트와 관련하여 동종이거나 이종일 수 있는데; 즉 코어들(202A 내지 202N) 중 2 이상이 동일한 명령어 세트를 실행할 수 있는 반면, 다른 코어들은 단지 그러한 명령어 세트의 서브세트 또는 상이한 명령어 세트를 실행할 수 있다. 일 실시예에서, 코어들(202A 내지 202N)은 이종이며, 후술하는 "작은" 코어들뿐만 아니라 "큰" 코어들도 포함한다.
도 3 내지 도 6은 예시적인 컴퓨터 아키텍처들의 블록도들이다. 랩탑, 데스크탑, 핸드핼드형 PC, PDA(personal digital assistants), 엔지니어링 워크스테이션, 서버, 네트워크 디바이스, 네트워크 허브, 스위치, 내장형 프로세서, DSP(digital signal processors), 그래픽 디바이스, 비디오 게임 디바이스, 셋탑 박스, 마이크로 제어기, 셀 폰, 휴대용 미디어 플레이어, 핸드핼드형 디바이스, 및 다양한 다른 전자 디바이스들에 대해 본 분야에서 공지된 다른 시스템 설계들 및 구성들도 적합하다. 일반적으로, 본원에서 개시된 것과 같은 프로세서 및/또는 다른 실행 로직을 포함할 수 있는 매우 다양한 시스템들 또는 전자 디바이스들이 일반적으로 적합하다.
이제, 도 3을 참조하면, 본 발명의 일 실시예에 따른 시스템(300)의 블록도가 도시된다. 시스템(300)은 제어기 허브(320)에 결합되는 하나 이상의 프로세서(310, 315)를 포함할 수 있다. 일 실시예에서, 제어기 허브(320)는 (개별 칩들 상에 존재할 수 있는) 그래픽 메모리 제어기 허브(GMCH)(390) 및 입/출력 허브(IOH)(350)를 포함하며; GMCH(390)는 메모리(340) 및 코프로세서(345)에 결합되는 메모리 및 그래픽 제어기들을 포함하고; IOH(350)는 입/출력(I/O) 디바이스들(360)을 GMCH(390)에 결합한다. 대안으로서, 메모리 및 그래픽 제어기들 중 하나 또는 양자는 (본원에서 설명되는 바와 같이) 프로세서 내에 통합되고, 메모리(340) 및 코프로세서(345)는 프로세서(310)에 직접 결합되며, 제어기 허브(320)는 IOH(350)를 갖는 단일 칩이다.
추가 프로세서들(315)의 선택적인 특성이 도 3에 점선들로 도시된다. 각각의 프로세서(310, 315)는 본원에서 설명되는 처리 코어들 중 하나 이상을 포함할 수 있으며, 소정 버전의 프로세서(200)일 수 있다.
메모리(340)는 예를 들어, DRAM(dynamic random access memory), PCM(phase change memory) 또는 이 둘의 조합일 수 있다. 적어도 하나의 실시예에 있어서, 제어기 허브(320)는 FSB(frontside bus)와 같은 다분기 버스(multi-drop bus), QPI(QuickPath Interconnect)와 같은 점대점 인터페이스, 또는 유사한 접속(395)을 통해, 프로세서(들)(310, 315)와 통신한다.
일 실시예에서, 코프로세서(345)는 예를 들어, 고스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장형 프로세서 등과 같은 특수 목적 프로세서이다. 일 실시예에서, 제어기 허브(320)는 통합 그래픽 가속기를 포함할 수 있다.
아키텍처, 마이크로아키텍처, 열, 전력 소비 특성 등을 포함하는 장점 기준들의 스펙트럼과 관련하여 물리 자원들(310, 315) 사이에는 다양한 차이가 존재할 수 있다.
일 실시예에서, 프로세서(310)는 일반 타입의 데이터 처리 연산들을 제어하는 명령어들을 실행한다. 코프로세서 명령어들은 명령어들 내에 내장될 수 있다. 프로세서(310)는 이러한 코프로세서 명령어들을 부착된 코프로세서(345)에 의해 실행되어야 하는 타입인 것으로 인식한다.
따라서, 프로세서(310)는 코프로세서 버스 또는 다른 인터커넥트 상에서 이러한 코프로세서 명령어들(또는 코프로세서 명령어들을 나타내는 제어 신호들)을 코프로세서(345)에 대해 발행한다. 코프로세서(들)(345)는 코프로세서 명령어들을 수신하고, 수신된 코프로세서 명령어들을 실행한다.
이제, 도 4를 참조하면, 본 발명의 일 실시예에 따른 제1의 더 구체적인 예시적인 시스템(400)의 블록도가 도시된다. 도 4에 도시된 바와 같이, 멀티프로세서 시스템(400)은 점대점 인터커넥트 시스템이며, 점대점 인터커넥트(450)를 통해 결합되는 제1 프로세서(470) 및 제2 프로세서(480)를 포함한다. 프로세서들(470, 480) 각각은 소정 버전의 프로세서(200)일 수 있다. 본 발명의 일 실시예에서, 프로세서들(470, 480)은 각각 프로세서들(310, 315)이고, 코프로세서(438)는 코프로세서(345)이다. 또 다른 실시예에서, 프로세서들(470, 480)은 각각 프로세서(310) 및 코프로세서(345)이다.
프로세서들(470, 480)은 각각 통합 메모리 제어기(IMC) 유닛들(472, 482)을 포함하는 것으로 도시된다. 프로세서(470)는 그의 버스 제어기 유닛들의 일부로서 점대점(P-P) 인터페이스들(476, 478)도 포함하며, 유사하게 제2 프로세서(480)는 P-P 인터페이스들(486, 488)을 포함한다. 프로세서들(470, 480)은 P-P 인터페이스 회로들(478, 488)을 이용하여 점대점(P-P) 인터페이스(450)를 통해 정보를 교환할 수 있다. 도 4에 도시된 바와 같이, IMC들(472, 482)은 프로세서들을 각각의 메모리, 즉 각각의 프로세서에 국지적으로 부착된 메인 메모리의 부분들일 수 있는 메모리(432) 및 메모리(434)에 결합한다.
프로세서들(470, 480)은 각각 점대점(P-P) 인터페이스 회로들(476, 494, 486, 498)을 이용하여 P-P 인터페이스(452, 454)를 통해 칩셋(490)과 정보를 교환할 수 있다. 선택적으로, 칩셋(490)은 고성능 인터페이스(439)를 통해 코프로세서(438)와 정보를 교환할 수 있다. 일 실시예에서, 코프로세서(438)는, 예를 들어, 고스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장형 프로세서 등과 같은 특수 목적 프로세서이다.
공유 캐시(도시되지 않음)는 어느 한 프로세서 내에 포함되거나, 프로세서들 둘 다의 외부에 있으면서 P-P 인터커넥트를 통해 프로세서들과 접속되어 있을 수 있고, 그에 의해, 프로세서가 저전력 모드에 있는 경우, 프로세서들 중 어느 하나 또는 둘 다의 로컬 캐시 정보는 공유 캐시에 저장될 수 있다.
칩셋(490)은 인터페이스(496)를 통해 제1 버스(416)에 결합될 수 있다. 일 실시예에서, 제1 버스(416)는 PCI(Peripheral Component Interconnect) 버스이거나, 또는 PCI Express 버스 또는 다른 제3세대 I/O 인터커넥트 버스와 같은 버스일 수 있지만, 본 발명의 범위는 이에 제한되지는 않는다.
도 4에 도시된 바와 같이, 제1 버스(416)를 제2 버스(420)에 결합하는 버스 브리지(418)와 함께, 다양한 I/O 디바이스들(414)이 제1 버스(416)에 결합될 수 있다. 일 실시예에서, 코프로세서, 고스루풋 MIC 프로세서, GPGPU, (예를 들어, 그래픽 가속기 또는 디지털 신호 처리(DSP) 유닛과 같은) 가속기, 필드 프로그램가능 게이트 어레이 또는 임의의 다른 프로세서와 같은 하나 이상의 부가적인 프로세서(들)(415)가 제1 버스(416)에 결합된다.
일 실시예에서, 제2 버스(420)는 로우 핀 카운트(LPC) 버스일 수 있다. 일 실시예에서, 예를 들어, 키보드 및/또는 마우스(422), 통신 디바이스들(427), 및 명령어들/코드 및 데이터(430)를 포함할 수 있는 디스크 드라이브나 다른 대용량 저장 디바이스와 같은 저장 유닛(428)을 포함하는 다양한 디바이스들이 제2 버스(420)에 결합될 수 있다. 또한, 오디오 I/O(424)가 제2 버스(420)에 결합될 수 있다. 다른 아키텍처들이 가능하다는 점에 유의해야 한다. 예를 들어, 도 4의 점대점 아키텍처 대신에, 시스템은 멀티-드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
이제, 도 5를 참조하면, 본 발명의 일 실시예에 따른 제2의 더 구체적인 예시적인 시스템(500)의 블록도가 도시된다. 도 4 및 도 5 내의 동일한 요소들은 동일한 참조 번호들을 가지며, 도 4의 소정 양태들은 도 5의 다른 양태들을 불명확하게 하지 않기 위해 도 5로부터 생략되었다.
도 5는 프로세서들(470, 480)이 각각 통합 메모리 및 I/O 제어 로직("CL")(472, 482)을 포함할 수 있다는 것을 나타낸다. 따라서, CL(472, 482)은 통합 메모리 제어기 유닛들을 포함하고, I/O 제어 로직을 포함한다. 도 5는 메모리들(432, 434)이 CL(472, 482)에 결합될 뿐만 아니라, I/O 디바이스들(514)이 또한 제어 로직(472, 482)에 결합된다는 것을 예시한다. 레거시 I/O 디바이스들(515)이 칩셋(490)에 결합된다.
이하 도 6을 참조하면, 본 발명의 실시예에 따른 SoC(600)의 블록도가 도시되어 있다. 도 2에서의 유사한 요소들은 유사한 참조 번호들을 지닌다. 또한, 파선 박스들은 더 진보된 SoC들에 대한 선택적인 특징들이다. 도 6에서, 인터커넥트 유닛(들)(602)은, 하나 이상의 코어들(202A 내지 202N)의 세트 및 공유 캐시 유닛(들)(206)을 포함하는 애플리케이션 프로세서(610); 시스템 에이전트 유닛(210); 버스 제어기 유닛(들)(216); 통합된 메모리 제어기 유닛(들)(214); 통합된 그래픽 로직, 이미지 프로세서, 오디오 프로세서 및 비디오 프로세서를 포함할 수 있는 하나 이상의 코프로세서들(620)의 세트; SRAM(static random access memory) 유닛(630); DMA(direct memory access) 유닛(632); 및 하나 이상의 외부 디스플레이에 결합하기 위한 디스플레이 유닛(640)에 결합된다. 일 실시예에서, 코프로세서(들)(620)는, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 고스루풋 MIC 프로세서, 내장형 프로세서 등과 같은 특수 목적 프로세서를 포함한다.
본원에 개시된 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 이러한 구현 접근법들의 조합으로 구현될 수 있다. 본 발명의 실시예들은, 적어도 하나의 프로세서, 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스를 포함하는 프로그램가능 시스템들 상에서 실행되는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
도 4에 도시된 코드(430)와 같은 프로그램 코드는 입력 명령어들에 적용되어, 본원에서 설명된 기능들을 수행하고 출력 정보를 생성할 수 있다. 출력 정보는 공지된 방식으로 하나 이상의 출력 디바이스에 적용될 수 있다. 이 애플리케이션을 위해, 처리 시스템은, 예를 들어, 디지털 신호 프로세서(DSP), 마이크로컨트롤러, 주문형 집적 회로(ASIC) 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 처리 시스템과 통신하기 위한 하이 레벨의 절차적 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 원한다면, 프로그램 코드는 어셈블리 또는 머신 언어로도 구현될 수 있다. 사실, 본원에서 설명되는 메커니즘들의 범위는 임의의 특정한 프로그래밍 언어로 한정되지 않는다. 어느 경우에서든, 언어는 컴파일된 또는 해석된 언어일 수 있다.
적어도 하나의 실시예의 하나 이상의 양태는, 머신에 의해 판독될 때에 이 머신으로 하여금 본원에서 설명된 기술들을 수행하는 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 나타내는 머신 판독가능 매체 상에 저장된 대표적인 명령어들에 의해 구현될 수 있다. "IP 코어들"로서 알려진 이러한 표현들은 유형의(tangible) 머신 판독가능 매체 상에 저장되고, 다양한 고객들 또는 제조 설비들에 공급되어, 로직 또는 프로세서를 실제로 제조하는 제조 머신들로 로딩될 수 있다.
이러한 머신 판독가능 저장 매체는, 하드 디스크들, 플로피 디스크들, 광학 디스크들, CD-ROM들(compact disk read-only memories), CD-RW들(compact disk rewritable's) 및 광자기 디스크들을 포함하는 임의의 다른 타입의 디스크, ROM들(read-only memories), RAM들(random access memories), 예컨대 DRAM들(dynamic random access memories), SRAM들(static random access memories), EPROM들(erasable programmable read-only memories), 플래시 메모리들, EEPROM들(electrically erasable programmable read-only memories), 상변화 메모리(PCM)와 같은 반도체 디바이스들, 자기 또는 광학 카드들, 또는 전자 명령어들을 저장하기에 적합한 임의의 다른 타입의 매체와 같은 저장 매체를 비롯하여, 머신 또는 디바이스에 의해 제조되거나 형성되는 제조물들의 비일시적인 유형의 배열들을 포함할 수 있지만, 이에 제한되지는 않는다.
따라서, 본 발명의 실시예들은, 명령어들을 포함하거나, 또는 본원에서 설명된 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 피처들을 정의하는 HDL(Hardware Description Language)과 같은 설계 데이터를 포함하는 비일시적인 유형의 머신 판독가능 매체를 또한 포함한다. 그러한 실시예들은 프로그램 제품들로도 지칭될 수 있다.
일부 경우들에서, 명령어 변환기는 소스 명령어 세트로부터의 명령어를 타겟 명령어 세트로 변환하기 위해 이용될 수 있다. 예를 들어, 명령어 변환기는 명령어를 코어에 의해 처리될 하나 이상의 다른 명령어로 (예를 들어, 정적 이진 번역, 동적 컴파일을 포함하는 동적 이진 번역을 이용하여) 번역, 모핑, 에뮬레이트, 또는 다르게 변환할 수 있다. 명령어 변환기는 소프트웨어, 하드웨어, 펌웨어, 또는 그들의 조합으로 구현될 수 있다. 명령어 변환기는 프로세서 상에, 프로세서 밖에, 또는 일부는 프로세서 상에, 그리고 일부는 프로세서 밖에 있을 수 있다.
도 7은 본 발명의 실시예들에 따른 소스 명령어 세트에서의 이진 명령어들을 타겟 명령어 세트에서의 이진 명령어들로 변환하기 위한 소프트웨어 명령어 변환기의 이용을 대조하는 블록도이다. 도시된 실시예에서, 명령어 변환기는 소프트웨어 명령어 변환기이지만, 대안적으로 명령어 변환기는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 다양한 조합으로 구현될 수 있다. 도 7은 하이 레벨 언어(702)로 된 프로그램이 x86 컴파일러(704)를 이용하여 컴파일링되어, 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(716)에 의해 본래 실행될 수 있는 x86 이진 코드(706)를 생성할 수 있는 것을 도시한다. 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(716)는, 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 결과를 달성하기 위해서, (1) 인텔 x86 명령어 세트 코어의 명령어 세트의 상당부 또는 (2) 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서상에서 실행되도록 되어 있는 오브젝트 코드 버전의 애플리케이션들 또는 다른 소프트웨어를 호환 가능하게 실행하거나 또는 다른 방식으로 처리함으로써, 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 기능을 수행할 수 있는 임의의 프로세서를 나타낸다. x86 컴파일러(704)는, 부가적인 링크 처리(linkage processing)를 갖거나 갖지 않고서 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(716) 상에서 실행될 수 있는 x86 이진 코드(706)(예를 들어, 오브젝트 코드)를 생성하도록 동작가능한 컴파일러를 나타낸다. 유사하게, 도 7는 하이 레벨 언어(702)로 된 프로그램이 대안적인 명령어 세트 컴파일러(708)를 이용하여 컴파일링되어, 적어도 하나의 x86 명령어 세트 코어를 갖지 않는 프로세서(714)(예를 들어, 캘리포니아주 서니베일에 있는 MIPS Technologies의 MIPS 명령어 세트를 실행하고/하거나 캘리포니아주 서니베일에 있는 ARM Holdings의 ARM 명령어 세트를 실행하는 코어들을 갖는 프로세서)에 의해 본래 실행될 수 있는 대안적인 명령어 세트 이진 코드(710)를 생성할 수 있는 것을 도시한다. 명령어 변환기(712)는 x86 이진 코드(706)를 x86 명령어 세트 코어(714)를 갖지 않는 프로세서에 의해 고유하게 실행될 수 있는 코드로 변환하는 데 사용된다. 이러한 변환된 코드는 대안적인 명령어 세트 이진 코드(710)와 동일할 가능성이 없는데, 그 이유는 이를 행할 수 있는 명령어 변환기를 제조하기가 어렵기 때문이며; 그러나 변환된 코드는 일반적인 연산을 달성하고, 대안 명령어 세트로부터의 명령어들로 구성될 것이다. 따라서, 명령어 변환기(712)는 에뮬레이션, 시뮬레이션 또는 임의의 다른 프로세스를 통해 x86 명령어 세트 프로세서 또는 코어를 갖지 않는 프로세서 또는 다른 전자 디바이스가 x86 이진 코드(706)를 실행하는 것을 가능하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 나타낸다.
인공 신경망에서 분산되고 협동적인 계산을 위한 방법 및 장치
인공 신경망(ANN)은 다수의 "뉴런"을 포함하는 완전히 연결된 계층의 세트로서 설계될 수 있다. 각각의 뉴런은 "시냅스(synapses)"를 통해 인접한 계층에 속하는 모든 뉴런과 연결된다. 시냅스에 걸친 2개의 뉴런 사이의 연결 강도 또는 진폭은 수치로 표현될 수 있는 "시냅스 가중치"(또는 단순히 "가중치")라고 호칭된다. 따라서, 뉴런의 출력은 그들의 시냅스 가중치에 의해 숙고된 이전 계층으로부터의 모든 입력 뉴런의 추가에 의해, 도트-생성물로 알려진 연산을 행할 수 있다. 도 8은 복수의 계층(계층 1, 계층 i-1, 계층 l, 계층 N)을 갖는 완전 접속된 ANN의 방식을 예시하며, 복수의 가중치 w0j-w(m-1)j가 어떻게 도토 생성물 연산을 이용하여 결합될 수 있는지를 나타낸다.
이러한 ANN과 같은 두뇌 영감 알고리즘은 제한된 전력 예산 및 처리 능력 때문에 전통적인 저전력 디바이스에서 금지될 수 있는 매우 높은 계산 요건을 요구할 수 있다. 이 문제를 극복하기 위해, 산업계와 학계 양측 모두는 최근에 종래의 접근법보다 훨씬 더 양호한 에너지 효율성을 제공하는 특수한 뉴로모픽 아키텍처를 도입하는데 큰 관심을 보이고 있다.
불행하게도, 제안된 뉴로모픽 아키텍처는 저전력 SoC(system-on-chip) 아키텍처에서 사용할 수 없는 거대한 메모리 대역폭을 필요로 한다. 예를 들어, 간단한 CNN 시스템에서 완전히 연결된 레이어에 필요한 대역폭은 120GB/s이지만, SoC에서 사용 가능한 대역폭은 훨씬 적음을 알 수 있었다. 타일링 기술과 내부 메모리를 사용하는 경우에도, 대역폭 요건은 여전히 제한적이다.
도 9는 단일 처리 유닛("PU") (901)이 각각의 로직 뉴런에 대한 도트-생성물 연산을 계산하고 모든 입력 뉴런을 트래버스하여 결과가 최종이 될 때까지 부분 결과들을 누적하는 것을 담당하는 뉴로모픽 가속기 아키텍처(900)를 나타낸다. 입력 및 가중치는 유닛으로부터의 각 요소를 내부 메모리 또는 외부 세계와 연결하는 포인트 투 포인트 버스를 사용하여 입/출력(IO) 인터페이스(902)로부터 PU(901)로 가져온다.
도 9에 도시된 바와 같은 현재 설계의 주된 문제점은 입력 및 가중치가 PU(901) 내부에서 재사용되지 않는다는 것이다. 각각의 로직 뉴런은 그 자체의 가중치를 가지므로, 새로운 데이터는 매 사이클마다 페치되어야 하고, PU(901)와 IO 인터페이스(902) 사이에 상당한 트래픽을 추가해야 한다. 또한, 하드웨어에 단일 논리 뉴런만 매핑되므로, 주어진 완전히 연결된 계층에 포함된 각 뉴런에 대해 입력을 다시 액세스해야 하고, 이는 입력을 재사용할 수 있는 기회를 상실하게 만든다. 또한, 모든 계산에서 입력 및 가중치 모두가 전달되어야 하므로, IO 인터페이스(902)로부터 PU까지의 버스는 너무 넓어서 설계를 비효율적으로 만든다. 입력 데이터를 보다 잘 재사용하고 각 계산에 대해 전송되는 데이터의 양을 줄이면 아키텍처의 에너지 효율성이 크게 향상될 것이다.
후술되는 본 발명의 실시예들은 완전히 접속된 신경망을 매우 효율적으로 계산하기 위한 최적화된 아키텍처를 포함한다.
아키텍처의 일 실시예는 대역폭 요건을 최소화하고 외부 판독 및 기입의 횟수를 줄이기 위해 협동하여 작동하는 분산 처리 유닛(PU)의 세트로 구성된다. 특정 메커니즘의 세트는 (i) PU 내부에서 가능한 한 많은 데이터를 재사용하고, (ii) PU를 브로드캐스팅하지 않도록 데이터를 공유하며, (iii) 유휴 PU 사이클을 피하기 위해 미리 데이터를 요청하도록 구현된다. 스칼라 및 모듈식 접근법을 통해 고성능 디바이스에서 저전력 디바이스에 이르기까지 많은 시장 부문에서 시스템을 매우 효율적으로 사용할 수 있다.
ANN은 종래의 아키텍처(예를 들어, 하이 엔드 프로세서) 또는 특수한 뉴로모픽 가속기에서 실행될 수 있다. 후자는 전자와 비교하여 훨씬 더 향상된 에너지 효율을 제공하며, 이와 같이, SoC나 웨어러블 같은 전력 제약 부문에 더 적합하다는 것이 입증되었다. 그럼에도 불구하고, 현재의 뉴로모픽 아키텍처는 앞에서 언급한 도메인에서는 사용할 수 없는 거대한 대역폭 요건을 가진 모놀리식 구조를 제공한다. 이러한 장벽은 ANN의 인지 능력이 특히 유용한 시장 부문(예를 들어, 모바일 디바이스)에서 가속기의 구현을 저해한다.
이하에서 설명되는 본 발명의 실시예들은 저전력 디바이스에 뉴로모픽 가속기를 통합하고, 완전히 접속된 동작에서 데이터 재사용을 최대화함으로써 데이터 트래픽을 감소시키며, IO 인터페이스로 PU를 연결하는 버스의 폭을 감소시킨다. 이 설계는 시스템이 영역(더 적은 접속이 필요하기 때문에) 및 전력(외부 메모리에 더 적은 시간 액세스되기 때문에) 절약할 수 있다. 또한, 외부 대역폭이 현저하게 감소한다. 이들 특성은 본 발명의 실시예들이 현재의 SoC 기술에서의 물리적 제약을 충족할 수 있게 한다.
도 10은 분산형 구성을 이용하는 본 발명의 모놀리식 구성 및 실시예들 모두에 대한 대역폭 요건을 도시한다. Y 축은 대역폭(GB/s)을 나타내고 X 축은 주어진 ANN 계층의 출력 뉴런의 수를 나타낸다(입력 뉴런의 수는 고정된 수임). 모놀리식 구성은 1GHz(최대 속도 모드) 또는 0.25GHz(대역폭 절약 모드)에서 작동할 수 있는 단일 PU를 도입하고 64개의 8비트 곱셈 누적(MAC) 유닛을 포함한다. 분산형 구성의 일 실시예는 0.25GHz에서 동작하고, 2개의 구성(1 대 1 및 1 대 N)을 지원하며, 각각 4개의 8 비트 곱셈기를 갖는 16개의 PU(총 64개의 8 비트 MAC 유닛, 모놀리식 구성과 동일한 리소스)를 포함한다.
도 10은 모놀리식 구성이 큰 ANN에서 최대 128GB/s(1GHz), 주파수의 1/4에서 동작할 때 32GB/s를 필요로 한다는 것을 나타낸다. 이것은 ANN 계층의 출력 뉴런의 수에 관계없이 고정된 수이다. 저전력 세그먼트는 칩 연결이 상이한 컴포넌트들 간에 공유되는 이러한 대역폭을 지원할 수 없다. 1 대 1 및 1 대 N 구성 모두를 지원함으로써, 분산형 아키텍처는 동일한 주파수에서 작동하는 모놀리식 아키텍처보다 2.3 배이며, 또한 최대 속도로 작동하는 모놀리식 아키텍처가 요구하는 대역폭의 약 9.8 배인, 14GB/s(출력 뉴런의 수에 관계없이 최대 대역폭 요건) 미만을 필요로 한다. 일 실시예에서, 이것은 상이한 PU들 간에 계산을 분배하는 것이 더 나은 데이터 재사용을 허용하고 외부 메모리에 대한 액세스를 감소시키기 때문에 달성된다. 1 대 1 구성은 출력 뉴런이 적은 ANN에 더 적합하고 1 대 N 구성은 출력 뉴런이 많은 대형 ANN을 계산할 때 더 잘 작동한다. 여기에 제시된 분산형 아키텍처는 2가지 실행 모드 모두를 지원한다.
또한, 모놀리식 아키텍처는 분산형 아키텍처보다 외부 요소(예를 들어, 내부 또는 외부 메모리)와의 더 많은 연결을 필요로 한다. 도 10에 나타낸 구성예에 따르면, 모놀리식 구성에서는 사이클당 64B 데이터 및 64B 가중치를 단일 PU에 전달하기 위해 128 바이트 폭 버스가 필요하지만, 본원에서 제시된 분산형 해결책에서는 4B 데이터 및 16B 가중치를 전달하기 위해 PU 간에 공유되는 20 바이트 폭 버스만을 필요로 한다. 그 결과 회로 면적이 75% 절감되고 인터커넥트 전력 소비가 비슷한 수준으로 감소한다.
도 11은 Y 축이 에너지 소비(mJ)를 나타내고 X 축이 출력 뉴런의 수를 나타내는 모놀리식 아키텍처와 분포형 뉴로모픽 아키텍처 간의 비교를 도시한다. 이 도면을 보면, 분산형 아키텍처를 구현할 때 획득되는 에너지 소비에 대한 이점이 2배 초과의 에너지 소비 개선으로 이어진다는 것을 확인할 수 있다. 이는 메인 메모리에 액세스하는 것이 다수의 작은 PU가 협동하여 작동할 때 완화될 수 있는 전력 소모가 많은 동작이기 때문이다.
도 12a 및 도 12b는 본 발명의 실시예들이 구현될 수 있는 상이한 시스템 아키텍처를 도시한다. 두 예시적인 아키텍처는 복수의 코어(1201 내지 1203, N)를 포함하는 프로세서(1200)와 코어(1201 내지 1203, N)를 상호 접속하기 위한 통신 버스 구조 또는 패브릭을 포함하는 "언코어(uncore)" 컴포넌트(1210)를 포함한다. 언코어 컴포넌트(1210)는 또한 각각의 코어(1201 내지 1203, N)를 시스템 메모리(1220)(예를 들어, 동적 랜덤 액세스 메모리(DRAM) 또는 다른 유형의 메모리 디바이스)에 통신 가능하게 연결하는 메모리 제어기(1211)를 포함한다.
도 12a에 도시된 실시예에서, 본원에서 설명된 본 발명의 실시예들을 구현하기 위한 뉴로모픽 가속기(1230)는 버스 또는 통신 패브릭을 통해 프로세서에 결합된 외부 가속기로서 구성된다. 도 12b에 도시된 대안적인 실시예에서, 뉴로모픽 가속기(1231)는 프로세서(1200) 내에 통합된다. 어느 경우에나, 뉴로모픽 가속기(1230)에는 통합된 메모리 제어기(1211)를 통해 시스템 메모리(1220) 로의 액세스가 제공된다. 이 2개의 특정 아키텍처는 설명을 위해 도 12a 및 도 12b에 도시되어 있지만, 본 발명의 기본 원리는 임의의 특정 프로세서 아키텍처에 한정되지 않는다는 것을 이해해야 한다.
도 13에 도시된 바와 같이, 뉴로모픽 가속기(1230)의 일 실시예는 공유 데이터 및 부분 입력 버스(도면에서 1로 표시됨)를 통해 IO 인터페이스(1310)에 연결된 PU 세트(1300-1303) 및 공유 결과 출력 버스(2로 표시)를 포함한다. 제1 버스(1)는 PU(1300-1303)로 데이터, 커널 및 가중치를 가져오는데 사용되는 반면, 제2 버스(2)는 부분 또는 최종 결과를 전달하는데 사용된다. PU(1300-1303)는 하나의 PU에서 다른 PU로 부분 계산을 전송하는데 사용되는 단방향 점대점(P2P) 링크(3으로 표시)를 사용하여 상호 접속된다. 글로벌 제어 유닛(1305)은 IO 인터페이스(1310)로부터 PU(1300-1303)로 데이터를 구동하는 것뿐만 아니라 임의의 시점에서 적절한 완전히 접속된 구성을 실행하도록 각각의 PU를 구성하는 것을 담당한다.
일 실시예에서, 전력/성능을 최적화하기 위해, PU(1300-1303)는 IO 인터페이스(1310)보다 낮은 주파수에서 동작할 수 있다. 본 발명의 기본 원리는 버스 및/또는 각각의 PU에 포함된 특정 자원을 공유하는 임의의 수의 PU(1300-1303)로 제한되지 않는다. 일 실시예에서, 각각의 PU(1300-1303)는 16개의 8 비트 곱셈기를 포함하고, 아키텍처는 협동하여 동작하는 4개의 분산된 PU(1300-1303)를 포함한다. 다양한 버스 폭이 이용될 수 있지만, 하나의 특정 실시예에서, 공유 데이터 입력 버스(도면에서 1로 표시됨)의 폭은 20B이다.
도 9에 도시된 모놀리식 뉴로모픽 아키텍처에 비해 도 13에 도시된 협동 접근법에 다수의 이점이 있다. 첫째, 본 발명의 실시예는 부분 결과를 교환하기 위해 내부 래치 및 PU 간의 특정 통신 채널을 필요로 하는, 다수의 PU(1300-1303) 사이에서 계산을 분배하는 반면에, 모놀리식 아키텍처는 단일 PU에서 모든 처리 요소(MAC 유닛 및 특정 회로)를 구체화한다. 둘째, 모놀리식 아키텍처는 사이클 당 가능한 한 많은 데이터를 송수신하기 위해 PU와 IO 인터페이스 사이에서 더 넓은 버스를 필요로 하는 반면, 본 발명의 실시예는 PU 사이에서 버스를 공유한다. 셋째, 본 발명의 실시예는 데이터 입력을 재사용하고 장래의 계산에서 요구되는 다른 데이터를 저장하기 위해 사용되는 일부 내부 래치를 도입한다. 마지막으로, 일 실시예에서, PU(1300-1303)는 (비록 다른 계층이 최대 속도로 동작 할 수 있음에도 불구하고) 대역폭 제약을 충족시키기 위해 완전히 접속된 계층을 실행할 때 더 낮은 주파수에서 동작한다. 4개의 PU(1300-1303)가 동일한 버스에서 매달려 있다고 가정하면, 각 PU는 버스 주파수의 1/4에서 작동할 수 있다(1개의 PU 사이클 = 4개의 버스 사이클). 일 실시예에서, PU(1300-1303)는 초당 더 적은 데이터가 전송되지만, 항상 동작 상태를 유지한다.
전술한 바와 같이, 본 발명의 일 실시예는 (1) 완전히 접속된 1 대 1 및 (2) 완전히 접속된 1 대 N 동작의 2가지 실행 모드를 지원한다. 상술한 바와 같이, 타겟 ANN 구성에 따라, 한 모드 또는 다른 모드에서 실행하는 것이 더 적합할 수 있다. 실행 모드 간의 주요 차이점은 입력 및 가중치가 처리되는 방식에 있다. 첫번째 모드는 주어진 PU(1300-1303)에 동시에 도달하기 위해 입력 및 가중치를 요구하는 반면, 두번째 모드는 뉴런의 입력을 먼저 로드한 다음 매 사이클마다 가중치를 페치하는 것만으로 출력 뉴런을 트래버스한다. 도 14a 및 도 14b는 완전히 접속된 1 대 1 동작들이 본 발명의 일 실시예에 따라 어떻게 매핑될 수 있는지를 도시하고, 도 15a 및 도 15b는 완전히 접속된 1 대 N 동작들이 본 발명의 또 다른 실시예에 따라 어떻게 매핑될 수 있는지를 도시한다.
먼저, 도 14a 및 도 14b를 참조하면, 완전히 접속된 1 대 1 동작은 하나의 논리적 뉴런을 단일 PU(1300-1303)에서 계산된 하나의 물리적 뉴런에 매핑한다. 도트 생성물 연산을 수행하기 위해, 입력 뉴런과 시냅스(가중치)(1400-1403) 모두가 전송된다. 각각의 뉴런은 자체 가중치가 필요하기 때문에, 입력 뉴런과 가중치 양측 모두를 매 연산마다 페치해야 한다. 버스로부터 매달린 각 엔티티는 서로 다른 시간에 함께 패킹된 가중치(하나의 실시예에서 16B를 사용하여 인코딩됨)를 수신한다. 그럼에도 불구하고, 입력 뉴런은 PU(1300-1303) 사이에서 공유되고, 따라서 이들은 IO 인터페이스(1310)로부터 여러번 판독되는 것을 피하기 위해 브로드캐스팅될 수 있으며, PU 사이클당 단지 4B만을 요구한다. 따라서, 도 14b에 도시된 바와 같이, 도시된 실시예에 대한 전체 대역폭 요건은 한 번에 20B이다. 따라서, 도 14b에서, 4개의 PU 사이클(1 내지 4) 후에, 모든 PU(1300 내지 1303)는 계산에 요구되는 입력 및 가중치(도시된 실시예에서는 총 128B) 모두를 갖기 때문에, 도트 생성물 동작을 수행하여 뉴런에 입력이 많은 경우 이전 계산과 결과를 누적한다. 일 실시예에서, 로직 뉴런의 최종 입력이 처리되는 경우에만, PU(1300-1303)는 결과를 IO 인터페이스(1310)로 되돌려 보낸다.
도 15a 및 도 15b에 도시된 완전히 접속된 1 대 N 동작으로 돌아가면, 다수의 입력 뉴런으로 동작할 때, PU(1300-1303)는 다수의 물리적 뉴런에서 하나의 로직 뉴런을 매핑하도록 구성될 수 있기 때문에 더 효율적일 수 있다. 이 접근법에서, 각각의 PU(1300-1303)는 로직 뉴런의 서브세트만 계산하고, 부분 결과를 이전 결과와 함께 자체 계산을 누적하는 인접 PU에 전달한다. 따라서, 뉴런의 최종 결과는 마지막 PU에서만 사용할 수 있다.
PU(1300-1303)는 각각의 사이클마다 상이한 로직 뉴런을 계산할 수 있다는 점에 주목한다. 즉, 새로운 가중치가 필요하지만 데이터 재사용을 높이기 위해 로컬 래치에 보관되는 입력 뉴런으로부터의 값을 다시 페치하지 않는다. 도 15b는 1 대 N 구성을 사용하여 작동할 때 입력 및 가중치가 어떻게 분배되는지를 나타낸다. 1 대 1의 경우와 마찬가지로, PU(1300-1303)도 최대 주파수의 1/4에서 작동할 수 있다. 그럼에도 불구하고, 입력은 PU 사이클마다 브로드캐스팅되지 않으며, 이들은 입력 뉴런을 변경할 때에만 전송된다(예를 들어, 새로운 계층을 계산해야 하는 경우). 유휴 사이클을 피하기 위해, IO 인터페이스(1310)는 미리 다음에 계산될 로직 뉴런에 대한 입력을 전송할 수 있으며, 이들 값은 실제로 사용될 때까지 PU에서 내부적으로 래치된다. 도 15b에 도시된 바와 같이, 이들 입력은 별도의 PU 사이클에서 전송되고, 가중치와 함께, 단일 PU에 의해서만 소모된다. 따라서, 도시된 실시예에서, 20B 폭 버스는 전체 계산을 유지하기에 충분하다.
설명을 위해 몇몇 특정 아키텍처 예가 위에서 제공되었지만, 본 발명의 기본 원리는 모바일 디바이스(예를 들어, 스마트 폰), 카메라 또는 마이크로폰이 장착된 태블릿 또는 웨어러블 디바이스를 포함하는 다양한 상이한 아키텍처로 구현될 수 있다. 실제로, 이들 실시예는 머신 학습 알고리즘의 대역폭 요건을 줄이고 인공 신경망(예를 들어, CNN(Convolutional Neural Network) 또는 DBN(Deep Belief Network)과 같은 새로운 컴퓨터 패러다임에서의 에너지 효율을 향상시키기 위한 임의의 형태의 디바이스로 구현될 수 있다.
컨볼루션 연산을 수행하기 위한 저장 디바이스 및 방법
이미지 처리는 시스템 온 칩(SoC) 아키텍처의 설계에서 중요성이 커지고 있다. 모바일 디바이스의 이미지 신호 프로세서(ISP)는 점점 더 큰 이미지를 처리하며 전력 예산을 유지 또는 감소시킬 것으로 예상된다. 새로운 휴먼 컴퓨터 인터페이스에서의 응용으로 관심을 끄는 생물학적 영감 알고리즘인 컨볼루션 신경망(CNN)도 2D 컨볼루션을 광범위하게 사용한다. 현재, 최상의 객체 인식 알고리즘은 컨볼루션 신경망을 사용하고 이전의 최고 성능 알고리즘보다 인식률이 크게 향상되었다.
컨볼루션 연산은 높은 데이터 재사용에 의존하기 때문에, 전용 스토리지를 갖는 것에 큰 이점이다. 도 16은 다양한 필터 크기와 다수의 메모리 크기의 컨볼루션을 수행하는데 필요한 에너지를 나타낸다. 특히, 필요한 데이터가 처리 유닛에 적합하지 않은 큰 필터 크기의 경우, 요구되는 에너지가 크게 감소될 수 있다는 것을 알 수 있다. 따라서, 충분한 면적 예산이 있는 경우, 전체 에너지 효율을 높이기 위해 가속기의 특수 스토리지를 사용하는 것이 바람직하다.
이러한 종류의 응용을 위한 몇몇 가속기가 업계 및 학계에서 제안되었으며, 도 17a에 도시된 바와 같이 상이한 유형의 데이터 및 처리 유닛을 위한 전용 스토리지 영역(1701 내지 1706)에 가장 의존한다. 그러나, 아래에서 논의되는 바와 같이, 고정된 양의 스토리지의 경우, 문제 유형 및 크기에 따라 최적의 메모리 매핑이 변경된다. 따라서, 정적 메모리 파티션을 사용하면, 준최적화된 메모리 사용량으로 이어질 수 있다.
이러한 문제에 대한 직접적인 해결책은 도 17b에 도시된 바와 같이 상이한 유형의 데이터에 전용인 다수의 판독/기입 포트를 갖는 통합된 스토리지 영역(1710)을 갖는 것이다. 그러나, 메모리 뱅크에 의해 소비되는 면적 및 에너지는 포트 수에 따라 크게 증가한다.
어레이 영역을 두 배로 늘릴 수 있으며 추가 포트를 하나만 추가하면 동적 에너지와 누설 에너지 모두가 약 35% 증가할 수 있다. 또한, 2가지 유형의 데이터 모두에 최소한의 서비스 품질이 필요한 경우, 전용 인터커넥트 또는 가상 채널을 각 유형의 데이터에 할당해야 한다.
따라서, 기존의 가속기의 메모리들은 2개의 상반되는 타겟에 의해 제한된다. 전용 메모리들(1701-1706)은 단순하고 에너지 효율적이지만 스토리지의 효율적이고 적응 가능한 사용을 제공하지 않는다. 또한, 공유 메모리(1710)는 문제 요건에 적응할 수 있지만 더 복잡하고 덜 효율적인 메모리 어레이 및 인터커넥트를 필요로 한다.
이하에서 설명되는 본 발명의 실시예들은 하드웨어 컨볼버 및 신경망 가속기를 위한 스크래치패드 메모리 설계를 포함한다. 이들 실시예는 단순한 단일 포트 메모리 어레이 및 공유 인터커넥트를 사용할 수 있으며, 또한 문제/응용에 기초한 메모리 할당을 적응시킬 수 있다.
도 18a는 메모리 뱅크(1801-1806) 및 인터커넥트(1811-1816)가 (복수의 처리 유닛(PU)를 포함하는)실행 클러스터(1800) 내에서 실행되는 상이한 유형의 데이터(예를 들어, 입력 이미지 및 부분 결과) 사이에서 공유되는 메모리 조직의 일 실시예를 도시한다. 액세스 패턴은 특정 문제에 대해 잘 알려져 있기 때문에, 메모리 어레이에 태그가 필요하지 않으므로 상당한 양의 면적과 에너지를 절약한다. 각 유형의 데이터에 사용되는 스토리지의 비율은 문제 요건에 따라 변경될 수 있으므로, 사용량이 최적화된다.
컨볼루션 연산의 규칙적인 액세스 패턴의 이점을 취함으로써, 2가지 유형의 데이터 사이의 독립성이 달성될 수 있다. 도 18b는 필터가 적용될 이미지(1820)를 나타낸다. 컨볼루션의 주어진 사이클에서, 로직 유닛은 동시에 처리될 필터 크기 및 필터의 인스턴스의 수에 기초하는 컨볼루션 윈도우(1821)의 데이터를 가져야 한다. 이 컨볼루션 윈도우(1821)는 스트라이드(1823)에 기초하여 그리고 컨볼루션 행(1822) 내에서 이미지(1820)의 에지에 도달할 때까지 각각의 컨볼루션 연산에서 우측으로 이동한다. 이미지의 에지에 도달하면, 컨볼루션 윈도우(1821)는 아래로 이동하고 다음 컨볼루션 행을 처리한다. 이러한 처리는 이미지의 끝에 도달할 때까지 반복된다. 컨볼버의 정상 상태 동작에서, 대부분의 컨볼루션 윈도우(1821)가 재사용되고 새로운 부분만이 메모리로부터 로딩될 필요가 있다. 매 사이클마다 로딩해야 하는 데이터는 문제에 따라 달라지며 컨볼루션 윈도우(1821) 높이와 스트라이드(1823)에 의해 결정된다.
2가지 유형의 데이터에 대해 원하는 서비스 품질을 달성하기 위해, 본 발명의 일 실시예는 2가지 데이터 유형(전형적으로 입력 데이터 및 부분 결과) 간의 완전한 독립성을 보장하는 매핑을 사용한다. 도 19는 본 발명의 일 실시예에 따른 복수의 뱅크(1 내지 6)를 포함하는 스크래치패드 메모리(1900)의 동작 원리를 도시한다. 이 매핑의 한가지 아이디어는 매 사이클마다 다른 뱅크(1 내지 6)에 액세스하는 방식으로 데이터를 할당하는 것이다. 4개의 사이클은 T = 1 내지 T = 4로 나타난다. 도시된 예에서, 뱅크(2)는 T = 0에서 액세스되고; 뱅크(2 및 3)는 T = 1에서 액세스되고; 뱅크(2 내지 4)는 T = 2에서 액세스되고; 뱅크(3 내지 5)는 T = 3에서 액세스된다. 하나의 기술은 이미지/매트릭스의 각 라인을 매핑하여 인접한 연산마다 상이한 뱅크에서 시작되게 한다. 이러한 방식으로, N개의 요소의 열이 정상 상태에서 판독되어야 하는 경우, 이들이 서로 다른 뱅크에 있기 때문에 모두가 한 사이클에서 판독될 수 있다. 이 매핑은 또한 모든 사이클에서 우리가 N개의 뱅크에 액세스하고 이러한 뱅크가 모든 액세스에 대해 변경될 것이라는 것을 보장한다.
뱅크는 규칙적이고 균일한 방식으로 액세스되기 때문에, 저장될 필요가 있는 임의의 부분 결과는 고정되고 알려진 최대 시간 전에 진행될 것이다. 일 실시예에서, 부분 결과는 목적지 뱅크에 액세스할 수 있을 때까지 작은 입력 버퍼에 버퍼링된다. 부분 결과가 일부 사이클동안 멈출 수 있다는 사실은 임계 경로에 있지 않기 때문에 문제가 되지 않는다.
따라서, 본 발명의 일 실시예는 컨볼루션 가속기의 2가지 유형의 데이터, 입력 데이터, 및 부분 결과에 사용되는 통합된 스크래치패드 메모리(1900)를 포함한다. 이 스크래치패드 메모리에서, 모든 뱅크는 2개의 영역(입력 데이터 및 부분 결과)으로 분할되며 각 데이터 유형에 전용인 양은 문제/응용에 따라 변경될 수 있다. 사용 가능한 저장 용량을 공유하면, 모든 문제 크기에 대해 최적의 사용이 가능하므로, 대역폭 요건이 낮아지고 연산 당 에너지가 낮아진다.
본 발명의 실시예는 또한 단 하나의 판독/기입 포트 및 공유된 인터커넥트를 갖는 메모리 뱅크를 사용할 때 조차도 2가지 유형의 데이터에 대한 최소 서비스 품질을 보장하는 매핑 기술을 포함한다. 단 하나의 포트로 메모리 뱅크의 사용을 허용함으로써 스크래치패드 메모리(1900)의 필요한 면적 및 에너지를 감소시킨다.
이러한 통합된 설계의 한 가지 이점은 스크래치패드 메모리(1900)의 이용 가능한 용량의 최적 활용을 달성한다는 것이며, 가장 중요한 것은 일반적으로 더 많은 영역을 필요로 하고 더 많은 전력을 소비하는 멀티 포트화된 메모리 뱅크 또는 추가 어레이 버스를 요구하지 않는다는 것이다. 또한, 스크래치패드 메모리 사용률을 높이면, 외부 메모리 대역폭이 크게 감소하기 때문에, 전력 및 에너지 소비량이 감소한다.
도 20a에서, 상부 음영 영역은 컨볼루션 필터들의 수와 관련하여 사용되지 않은 채 남아있는 전형적인 스크래치패드 메모리의 부분을 나타낸다. 입력 데이터 및 부분 결과에 대해 동일한 크기(즉, 50:50)의 전용 스크래치패드 메모리를 갖는 기존의 설계가 총 가용 메모리 영역을 효과적으로 활용하지 못하게 된다는 것은 명백하다. 사실, 도 20a에 도시된 바와 같이, 얼굴 검출 CNN의 컨볼루션 계층(1 및 2)에 사용 된 구성 파라미터에 대해, 정적 파티셔닝은 각각 이용 가능한 스크래치패드 용량의 65% 및 58%만을 이용한다. 평균적으로, 50:50 분할 스크래치패드 구성은 스크래치패드 메모리의 30%를 사용하지 않는다.
대조적으로, 도 20b에 도시된 결과인 통합된 스크래치패드(1900)는 최적의 방식으로 동적으로 분할될 수 있기 때문에, 주어진 컨볼루션 문제 구성에 대한 스크래치패드 메모리의 전체 용량을 실질적으로 활용할 수 있다.
정적 스크래치패드 조직은 입력 데이터와 부분 결과 간의 비율이 필터의 수 및 크기와, 입력의 수 및 치수에 따라 크게 변하기 때문에 사용 가능한 용량을 충분히 할용하지 못한다는 점에 주목한다. 이것은 상이한 수의 필터(x 축)에 대해 하부 영역(입력 데이터) 및 중간 영역(부분들)을 비교함으로써 도 20a에서 용이하게 관찰될 수 있다.
경험으로 보건데, 스크래치패드 사용률이 높으면 외부 메모리에 대한 액세스가 적어지기 때문에 효율적인 활용이 중요하다. 그 이유는 일반적으로 사용 가능한 내부 메모리가 로컬 메모리 내에 전체 문제를 저장하기에 적합하지 않기 때문이다(예를 들어, 풀 HD 이미지의 1개의 채널은 ~2MB 임). 따라서, 스크래치패드 메모리에 입력 데이터 및 부분 결과 모두를 맞추기 위해서는 입력을 적절하게 크기가 조정된 파티션으로 분리해야 한다. 그러나, 파티셔닝은 외부 메모리로부터 2번 이상 페치될 입력 데이터의 일부가 된다. 따라서, 파티션이 많을수록 외부 메모리 대역폭 오버헤드가 커진다. 도 21은 제안된 통합된 스크래치패드 설계를 사용하여 달성된 외부 메모리의 액세스 감소를 도시한다. 주어진 전체 스크래치패드 메모리 크기의 이점은 채널 및 필터의 수에 따라 달라질 수 있다. 예를 들어, 도 20a 및 도 20b와 도 21에서 사용된 얼굴 검출 CNN의 예에 대해, 외부 메모리 액세스의 감소는 각각 컨볼루션 계층(1 및 2)의 구성에 대해 3.1% 내지 11.3%의 범위에 있다. 우리가 고화질 표준으로 옮겨 갈 때 파티셔닝의 영향이 더욱 커지게 된다는 점에 주목해야 한다는 점이 중요하다. 예를 들어, 4K UHD 입력 이미지의 경우, 외부 메모리 액세스의 감소는 계층(1 및 2) 각각에 대해 5.6%와 17.7%로 증가시킨다.
통합된 설계의 유연성은 외부 메모리 액세스의 에너지를 감소시키는데 핵심이라는 것이 분명하다. 사실, 외부 메모리 액세스는 CNN 계산의 전체 에너지 비용을 지배하는데, 광범위한 CNN 구성의 세트에 대해 전체 에너지의 95%보다 많은 에너지를 차지한다. 이러한 결과는 여분의 외부 메모리 액세스를 줄이는 기술의 중요성을 더욱 강조한다.
가장 중요하게는, 본 발명의 실시예들은 전형적으로 더 많은 영역을 필요로 하고 더 많은 전력을 소비하는 멀티 포트화된 메모리 뱅크 또는 추가 스크래치패드 어레이 버스를 요구하지 않으면서 외부 메모리 대역폭의 이러한 감소를 제공한다. 대신에, 아래에 설명된 메커니즘을 통해 범용 프로세서 코어의 중간 레벨 캐시(MLC)에 사용되는 고밀도 메모리 블록과 유사한 단 하나의 판독/기입 포트만 있는 메모리 뱅크를 사용할 수 있다. 또한, 다수의 메모리 블록에 대한 판독 및 기입 요청 양측 모두는 동일한 공유 어레이 버스를 사용하여 제공될 수 있으므로, 전용 버스의 영역이 늘어나는 것을 방지할 수 있다. 계속해서, 더 간단한 메모리 어레이를 사용하려면, 공유 버스에서 판독/기입 충돌을 처리하고 입력 데이터와 부분 결과 양측 모두에 대해 필요한 서비스 품질을 보장하는 특수 데이터 매핑이 필요하다. 그러나, 아래에 나타낸 바와 같이, 양측 모두의 문제는 상당한 전력 및 면적에 대한 비용없이 직접적으로 해결할 수 있다.
본 발명의 기본 원리는 다수의 방식으로 구현될 수 있지만, 웨어러블 및 모바일 디바이스용 초 저전력 컨볼루션 신경망 가속기인 Neura™ 가속기를 위해 개발된 하나의 특정 실시예가 도 22에 도시되어 있다. 이 경우, 1개의 판독/기입 포트가 있는 4x32 메모리 뱅크(2201)가 32개의 버스(SAB0-SAB31)을 통해 연결된 상태로 사용된다. 버스당 4개의 뱅크(A0-D0, A1-D1 등)를 사용하면, 최대 가속기 주파수의 1/4에서 판독 및 기입이 가능하다. 도 22에 도시된 4개의 추가 구조는 입력 멀티플렉서(MUXI)(2202), 출력 멀티플렉서(MUXO)(2203), 부분 라이트백 버퍼(PWBB)(2204) 및 제어 유닛(2205)이다.
일 실시예에서, MUXI(2202)는 가속기 외부로부터 오는 데이터를 정렬하고, 데이터가 처음 액세스될 때 스크래치패드 메모리 뱅크(2201)를 채우기 위해 사용되는 멀티플렉서들의 세트이다. MUXO(2203)는 내부 버스로부터 오는 데이터를 정렬하고 PU 인터페이스(2206)를 통해 실행 클러스터(1800)의 처리 유닛(PU)으로 전송되는 또 다른 멀티플렉서 세트이다.
일 실시예에서, PWBB(2204)는 목적지 뱅크가 사용중(busy)인 동안 실행 클러스터(1800)의 PU에 의해 제공되는 부분 결과의 유지를 담당하는 버퍼의 세트이다. 최악의 경우, 패턴이 알려지기 때문에, 최악의 시나리오에서 생성될 수 있는 최대 부분의 수를 저장하기 위해 이러한 버퍼의 크기를 지정할 수 있다. 또한, PWBB(2204)는 부분 기입을 처리하고, 그들이 데이터를 판독하는데 사용되지 않을 때 또 다른 버스에 기입하도록 제어 유닛 (2205)에 요청한다.
마지막으로, 제어 유닛(2205)은 메모리(2201)의 제어를 담당한다. 특히, 제어 유닛(2205)의 일 실시예는 매 사이클마다 어느 버스(SAB0-SAB31)가 활성인지를 멀티플렉서(2202-2203)에게 지시하고 메모리 뱅크 (2201)에게 판독 또는 기입 동작을 언제 시작하고 어느 라인에 대해 행할지를 지시한다. 제어 유닛(2205)이 처리하는 메인 동작은 데이터 판독, 데이터 기입, 부분 판독, 및 데이터 바이패스(예를 들어, 데이터가 가속기 외부로부터 오는 경우에 사용됨)이다. 또한, PWBB(2204)에 유휴 버스 및 뱅크에 부분을 기입할 수 있는 권한을 부여한다.
일 실시예에서, 각 뱅크(2201)에 대해 수행된 데이터 매핑은 입력 데이터(예를 들어, 입력 이미지)에 대해서는 제1 N 라인을 사용하고, 부분 데이터에 대해서는 나머지를 사용한다. 부분 결과는 일반적으로 도착 순서에 따라 균등한 방식으로 저장될 수 있다. 입력 데이터는 매 사이클마다 액세스되는 뱅크가 변경되도록 저장된다. 이 실시예에서의 버스 당 4개의 뱅크(Ax, Bx, Cx 및 Dx)가 있기 때문에, 이미지는 Ax 뱅크가 짝수 행 및 열 요소를 저장하고, Bx 뱅크가 불균일한 행 및 짝수 열 요소를 저장하고, Cx 뱅크가 짝수 행 및 불균일한 열 요소를 저장하며, Dx 뱅크가 불균일한 행 및 컬럼 요소를 저장하도록 분할될 수 있다.
도 23은 컨볼버에서 사용되는 입력 데이터(이미지) 예를 도시하고, 도 24는 이러한 요소들이 어떻게 물리적 메모리 뱅크에 매핑될 수 있는지를 도시한다. 행 2의 매핑(즉, (2,0), (2, 2), (2, 4))은 도면에서 볼 수 있다. 짝수 행이므로, 도시된 바와 같이 뱅크 A 및 B에 저장된다. 제2 A 뱅크에서 행이 시작되고(즉, (2,0)이 A1에 표시됨), 다음 행이 또 다른 뱅크에서 오른쪽으로 시작한다는 것을 알 수 있다.
액세스되는 행들의 수는 (예를 들어, 동시에 계시되는 필터 크기, 필터들의 수 등에 기초하여) 해결되어야 할 문제에 따라 변한다. 따라서, 문제에 따라, 상이한 수의 뱅크에 동시에 액세스해야 한다. 예를 들어, 컨볼루션 행이 6개의 이미지 행으로 구성된 경우, 시스템은 (AO, A1, A2-B0, B1, B2-C0, C1, C2-D0, D1, D2-A1, A2, A3 ...)에 액세스할 것이다. 본원에서 설명된 메모리 조직은 각 뱅크로부터 하나의 요소만 필요로 하는 서로 다른 컨볼루션 행 크기를 지원한다. 이와 같이, 이 특정 실시예는 2개의 메모리 사이클에서 컨볼루션에 의해 요구되는 모든 새로운 데이터에 대한 액세스를 지원한다. 필요한 사이클의 수는 더 많은 전용 버스를 추가하여 문제 요건 및 전력/영역 제한에 따라 선택될 수 있다.
전술한 실시예의 하나의 유리한 양태는 데이터가 개별 태그가 식별될 것을 요구하지 않는다는 것이다. 액세스 패턴이 매우 규칙적이기 때문에, 제어 유닛(2205)은 태그 어레이를 필요로하지 않고 상이한 뱅크의 인덱스를 추적할 수 있다. 태그를 사용하지 않으면 면적, 전력 및 지연 측면에서 상당한 이점을 가지며 기존의 스토리지 구조보다 에너지 효율성이 크게 향상된다.
저전력 가속기를 위한 미세한 그레인 스토리지 인터페이스 및 방법
이미지 처리 알고리즘은 더 나은 사용자 경험을 가능하게 하는 신규한 인간 컴퓨터 인터페이스에서의 다수의 애플리케이션으로 인해 관심을 끌고 있다. 이미지 처리에서 가장 중요한 연산 중 하나는 컨볼루션이다. 다른 애플리케이션 중에서, 컨볼루션은 CNN(Convolutional Neural Network)의 이미지 인식뿐만 아니라 ISP(Image Signal Processor)의 이미지에 필터를 적용하는데 널리 사용된다.
컨볼루션 연산은 제3 출력 어레이를 생성하기 위해, 일반적으로 크기가 다르지만 동일한 차원을 갖는 2개의 수의 어레이와 함께 곱한다. 이미지 처리에서, 입력 어레이 중 하나는 입력 이미지이다. 두 번째 어레이는 일반적으로 입력 이미지보다 훨씬 작은 커널로서 알려져 있다. 컨볼루션 연산은 일반적으로 왼쪽 상단부터 시작하여 이미지 위에 커널을 슬라이딩시킴으로써 수행된다. 각각의 커널 애플리케이션은 커널의 값에 기본 서브이미지 값을 곱하고, 모든 결과를 함께 추가하여 계산된 출력 픽셀을 생성한다. 수학적으로, 컨볼루션은 다음과 같이 기술될 수 있다:
Figure pct00001
여기서, I는 입력 이미지이고, K는 커널이고, 0(x,y)는 출력 이미지의 좌표 x, y에 있는 픽셀을 나타낸다. 상수 m과 n은 각각 커널의 폭 및 높이이다.
이미지 처리 알고리즘은 제한된 전력 예산 및 처리 능력으로 인해 종래의 저전력 세그먼트에 대해 금지될 수 있는 매우 높은 계산 요건을 갖는다. 이 문제를 극복하기 위해, 많은 단체들이 최근에 "가속기"로서 알려진 특수 아키텍처를 개발하는데 노력해 왔으며, 이는 기존 접근법보다 훨씬 더 높은 에너지 효율을 제공한다. 이러한 아키텍처는 일반적으로 많은 수의 곱셈 및 덧셈을 병렬로 매우 효율적으로 수행할 수 있는 여러 처리 유닛(PU)을 가지고 있다. 도 25는 이미지 처리를 위한 일반적인 가속기의 하이 레벨 블록도를 나타낸다. PU(0-15)는 실행 클러스터(2500)를 형성한다. PU로부터의 출력은 예상된 결과를 생성하기 위해 동기화된 방식으로 수집되고 처리된다. 데이터는 I/O 인터페이스(2503)를 통해 메모리(2501) 또는 (예를 들어, 점대점 버스를 사용하여) I/O 인터페이스(2503)를 통해 외부 인터페이스(2502)로부터 외부 세계로부터 실행 클러스터(2500)로 통신된다. PU는 일반적으로 인터커넥트 네트워크를 통해 메모리(2501) 및 외부 인터페이스(2502)와 통신하는 클러스터로 그룹화된다.
그러나, 이러한 아키텍처는 컨볼루션을 수행할 때 모든 처리 유닛에 공급하기 위해 거대한 메모리 대역폭을 필요로 하며, 이것은 시스템의 전체 에너지 효율을 감소시키고, 복잡한 메모리 인터커넥트 -저전력 시스템 온 칩(SOC) 설계에 금지되는 요건의 구현을 필요로 한다.
현재의 설계는 대역폭 요건을 감소시키기 위해 종래의 데이터 캐시 조직을 제안한다. 이러한 설계에서, 캐시 구조는 I/O 인터페이스(2503)와 실행 클러스터(2500) 사이에 배치된다. 그러나, 이러한 해결책은 컨볼루션 연산의 특성을 완전히 활용하지 못하므로 최적의 결과를 얻을 수 없다. 이러한 접근법에서, 각 처리 유닛 또는 처리 유닛의 서브세트는 데이터를 개별적으로 요청하므로, 많은 수의 캐시 판독 포트가 필요하다. 실제로, 도 25에 제시된 것과 유사한 가속기에서 16x16 스트라이드 1 컨볼루션을 수행할 때 충분한 데이터를 제공하려면 최대 18개의 판독 포트가 필요하다. 메모리 뱅크에 의해 소비되는 면적과 에너지가 포트 수에 따라 크게 증가하면(어레이 면적은 두 배가 될 수 있고 동적 및 누설 에너지는 하나의 추가 포트를 추가함으로써 약 36% 증가할 수 있음), 가속기를 구현하기 위한 포트의 수는 엄청나다. 더욱이, 컨볼루션을 더 빠르게 수행하기 위해 처리 유닛의 수가 증가될 때 이 문제는 악화된다. 운좋게도, 컨볼루션의 액세스 패턴은 매우 예측 가능하며 이들은 메모리 액세스 수와 필요한 판독 포트 수를 줄이기 위해 활용할 수 있는 높은 공간 및 시간 데이터 지역을 나타낸다.
본 발명의 실시예들은 제약이 있는 대역폭, 면적 및 전력 요건을 갖는 이미지 프로세서 및 신경망 가속기에서 컨볼루션이 매우 효율적으로 수행되도록 하는 미세한 그레인 메모리 인터페이스를 포함한다. 제시된 실시예는 상부 캐시 레벨에 대한 판독 횟수를 최소화하면서, 실행 클러스터에 이미지 데이터를 제공하기 위해 협동하여 동작하는 새로운 스토리지 조직 및 데이터 셔플러 메커니즘을 이용한다. 이 방식은 컨볼루션 연산의 규칙적인 액세스 패턴의 이점을 취하고, 일련의 픽셀 열, 픽셀 행 또는 이들 둘의 조합으로서 이미지의 처리를 가능하게 하여, 처리 유닛에 효율적으로 데이터를 제공하는 것을 매우 편리하게 한다. 더욱이, 본 발명의 실시예들은 작은 필터(2x2 픽셀)의 애플리케이션에서 큰 필터(64x64 픽셀)에 이르는 다양한 종류의 컨볼루션 문제를 다루는 모듈식 및 확장성이 있다.
제안된 실시예들은 저전력 및 대역폭에 제약이 있는 디바이스에서 컨볼루션 연산을 타겟으로 하는 이미지 처리 및 신경망 가속기의 통합을 가능하게 한다. 이들 실시예의 목적은 메모리 트래픽을 합리적인 한도 내에서 유지하면서 모든 처리 유닛에 공급할 충분한 이미지 데이터를 제공함으로써 컨볼루션 연산을 매우 효율적으로 처리하는 것이다. 이것은 일 실시예에서 컨볼루션 연산을 수행하기 위한 가장 편리한 방식으로 이미지를 처리함으로써 달성된다.
컨볼루션은 매우 높은 공간 및 시간 데이터 지역을 갖는다. 연속적인 커널의 애플케이션은 상당한 양의 입력 이미지 데이터를 공유한다. 도 26은 4x4 픽셀(2601)의 커널이 1개의 픽셀의 스트라이드로 좌측 상단에서 우측 하단까지 적용되는 이미지(2600)를 도시한다. 컨볼루션 연산이 시작될 때, 커널은 4x4 픽셀(2601)의 제곱 이미지 영역에 적용된다. 일단 제1 출력 픽셀이 계산되면, 커널은 이미지에서 점선 영역(2602)으로 표시된 바와 같이 우측으로 시프트된다. 이 새로운 연산은 다른 픽셀이 이미 이전 커널 연산에 제공되었기 때문에 4개의 행의 열을 나타내는 4개의 추가 픽셀을 요청하면 수행할 수 있다. 또한, 커널이 이미지의 대안적인 점선 영역(2603)으로 표시된 바와 같이 아래로 시프트될 때, 다른 픽셀들이 이전에 제공되었기 때문에, 4개의 픽셀의 단일 행만이 요구된다.
종래의 접근법은 이미지 데이터를 연속적인 픽셀 행 또는 열로서 저장하고, 데이터가 행으로서 저장될 때 열을 생성하거나, 또는 데이터가 열로서 저장될 때 행을 생성하기 위해 다중 메모리 액세스를 필요로 한다. 이러한 추가 액세스는 메모리 판독 포트의 수를 크게 늘리기 때문에, 가속기 및 대역폭의 총 전력 소비를 크게 증가시킨다. 이것은 동일한 커널의 다수의 인스턴스가 가속기에서 동시에 수행될 때 악화된다. 본 발명의 실시예들은 데이터 지역을 이용하기 위해 이미지를 내부적으로 조직화하고 각 커널 애플리케이션에 대해 요구되는 픽셀을 정확하게 제공하기 위해 미세한 그레인 액세스를 제공하여, 요구되는 포트의 수를 현저하게 감소시킨다.
도 27은 도 25에 제시된 것과 유사한 가속기에서 상이한 유형의 컨볼루션을 수행하는데 필요한 판독 포트의 수를 도시한다. 컨볼루션 구성(커널 크기 및 스트라이드)은 x 축에 표시되고 포트 수는 y 축에 표시된다. 종래의 캐시 구조를 구현하는 가속기는 본 발명의 실시예(캐시 + 데이터 셔플러 대 종래의 캐시)를 사용하는 경우와 사용하지 않는 경우와 비교된다. 관찰할 수 있는 바와 같이, 통상적인 설계에서 필요한 판독 포트의 수는 4x4 픽셀 스트라이드 2의 컨볼루션의 경우의 4에서 16x16 픽셀 스트라이드 1의 컨볼루션의 경우의 18까지 다양하다. 반대로, 본 발명의 실시예들을 사용하면, 컨볼루션 구성에 의존하지 않고 판독 포트의 수는 항상 1이다. 캐시 판독 포트의 수에 대한 이 획기적인 감소는 컨볼루션에서 관찰되는 규칙적인 패턴의 이점을 취하고 아래에 상세히 설명되는 바와 같이 데이터 지역을 최대한 활용하여 달성된다.
언급된 바와 같이, 본 발명의 실시예들은 메모리 판독 포트의 수를 상당히 감소시킴으로써 제약이 있는 대역폭, 면적 및 전력 요건을 갖는 이미지 프로세서 및 신경망 가속기에서 매우 효율적으로 컨볼루션을 수행할 수 있게 한다. 이러한 특성은 다음에 의해 달성된다:
1. 컨볼루션에 대한 패턴에 기초한 데이터 조직 및 인덱싱. 데이터는 공간적 및 시간적 지역을 이용하는 방식으로 구성된다. 이미지는 픽셀 행, 픽셀 열, 또는 이들 둘 모두의 조합을 트래버스하여 처리될 수 있다. 외부 메모리 및/또는 상위 캐시 레벨에 대한 액세스 횟수는 기존 접근법보다 적어서, 가속기의 전력 소비와 대역폭을 크게 감소시킨다.
2. 태그가 없는 스토리지 조직으로 가속기 영역을 적당한 범위 내로 유지한다.
3. 상위 캐시 레벨과 처리 유닛 간의 연결을 단순화하는 분산 데이터 조직.
앞서 언급된 특성들은 본원에서 설명된 본 발명의 실시예들이 현재의 SoC 기술의 물리적 제약을 충족시킬 수 있게 한다.
도 28에는 4개의 클러스터를 갖는 가속기의 일 실시예의 고레벨 블록도가 도시되어 있다. 본 발명의 이 실시예는 (1) 입력 및 분배 로직(2850), (2) 컨테이너(2800-2803), (3) 정렬 로직(2810-2813) 및 (4) 선택 로직(2820-2823)의 4개의 컴포넌트를 포함한다. 컨테이너, 정렬 로직 및 선택 로직 컴포넌트는 그룹으로 분할될 수 있으며, 각각은 처리 유닛(2830)의 상이한 클러스터에 접속된다. 대조적으로, 일 실시예에서, 입력 및 분배 로직(2850)은 모든 클러스터들에 의해 공유된다. 4개의 컴포넌트는 도시된 바와 같이 순차적으로 연결된다. 입력 및 분배 로직(2850)은 컨테이너(2800-2803), 정렬 로직 (2810-2813)을 갖는 컨테이너, 및 선택 로직(2820-2823)을 갖는 정렬 로직에 직접 연결된다. 일 실시예에서, 모든 컴포넌트는 동기화된 방식으로 작동하고, 모든 처리 유닛 클러스터(2830)에 대한 이미지 데이터를 동시에 제공하도록 협동한다.
입력 및 분배 로직
일 실시예에서, 컨볼루션은 전체 원본 이미지에 커널을 적용함으로써 수행된다. 처리 유닛(2830)은 이미지를 트래버스하고, 컨볼루션 연산을 픽셀에 적용하고(곱셈 및 가산), 결과를 그룹화하여 최종 출력 이미지를 생성하도록 협동한다. 이 프로세스에서, 처리 유닛(2830)의 각각의 클러스터는 입력 이미지로부터의 픽셀들의 서브세트로 동작한다. 입력 로직(2850)은 상부 캐시 레벨로부터 이미지 데이터를 얻고, 처리 유닛의 각 클러스터의 계산 요건에 따라 컨테이너(2800-2803)에 선택적으로 브로드캐스팅한다. 실제로, 픽셀은 나중에 사용하기 위해 각 클러스터의 컨테이너에 내부적으로 저장된다. 이 모듈식 및 확장성 접근법은 설계가 작은 커널(2x2 픽셀)에서 매우 큰 커널(64x64 픽셀)에 이르는 다양한 컨볼루션 구성을 커버할 수 있게 한다.
컨테이너, 정렬 로직 및 선택 로직
일 실시예에서, 가속기는 컨볼루션을 수행할 때 입력 이미지 데이터(픽셀) 및 커널 가중치의 2가지 유형의 정보를 처리한다. 2가지 유형의 정보는 컨테이너(2800-2803)에 저장되며, 이 컨테이너는 다수의 연속적인 픽셀을 병렬로 판독하고 기입할 수 있는 태그가 없는 스토리지 유닛으로서 구현될 수 있다. 컨테이너의 일 실시예는 도 29에 도시되어 있으며, 고정된 폭의 버퍼(2901) 및 요소들의 기입 및 판독을 처리하기 위한 단순한 로직의 세트를 포함한다. 특히, 버퍼(2901)로의 입력은 7b 비트마스크 시프터(2902)에 인가된 기입 인에이블 신호(wr_en)에 의해 제어된다. 일 실시예에서, 판독 인에이블 신호(rd_en) 및 기입 인에이블 신호(wr_en)에 의해 제어되는 카운터(2904)의 출력은 도시된 바와 같이 기록 인에이블 신호와 함께 OR되어 시프터(2902)를 제어한다. 일 실시예에서, 시프터(2902)는 시프트 신호(Init/Shift)에 응답하여 버퍼 엔트리(2901) 각각을 선택하기 위해 어드레스를 통해 시프트한다. 비트마스크 시프터(2902)의 출력은 입력 데이터가 기록되는 버퍼 엔트리를 선택한다. 픽셀은 항상 (FIFO 버퍼와 같이) 순서대로 기입되지만, 무작위로 판독될 수 있다. 특히, 일 실시예에서, 멀티플렉서(2903)는 판독 어드레스 신호(rd_idx)에 응답하여 출력할 버퍼 엔트리(D_out) 중 하나를 선택한다.
본 발명의 일 실시예에서 2가지 상이한 유형의 컨테이너, 즉 이미지 데이터를 위한 행 컨테이너 및 커널 가중치를 위한 가중치 컨테이너가 채택된다. 하나의 특정 실시예에서, 총 2048 바이트를 나타내는, 48개의 행 컨테이너 및 4개의 가중치 컨테이너가 있다.
이미지 픽셀은 실행 클러스터에 송신되기 전에 행 컨테이너에 저장된다. 사실, 각 개별 행 컨테이너는 단일 이미지 행의 여러 픽셀을 저장한다. 여러 행 컨테이너의 통합은 원래 입력 이미지의 일부를 커버한다. 컨테이너를 사용하면 상위 캐시 레벨에 다중 액세스할 필요없이 동시에 상이한 행의 여러 픽셀에 액세스할 수 있다. 일 실시예에서, 전체 행 컨테이너 세트는 N개의 상이한 행으로부터 최대 4개의 연속 픽셀을 제공할 수 있으며, 여기서 N은 행 컨테이너의 수이다. 데이터는 컨볼루션을 수행하기 위한 자연스러운 방식으로 저장되며, 연산이 적용될 행을 식별하여 픽셀에 액세스할 수 있다. 따라서, 일 실시예의 컨테이너는 태그를 필요로 하지 않는다.
일 실시예에서, 행 컨테이너로부터의 출력은 행 엔트리의 개별 픽셀에 대한 액세스를 제공하는 정렬 로직(2810-2813)에 접속된다. 정렬 로직(2810-2813)은 이미지 열을 생성하는데 필요한 데이터 전치와 같은 간단한 데이터 변환을 적용하는 것을 가능하게 한다. 도 30의 테이블은 본 발명의 일 실시예에서 구현된 특정 정렬 모드를 도시한다. 첫번째 열은 정렬 유형을 나타내지만, 다른 열은 일반 행 컨테이너(Ox)의 콘텐츠가 지정된 정렬된 출력(AOx)을 나타낸다. 이 로직은 본 발명의 상이한 실시예에서 다른 정렬을 지원하도록 용이하게 확장될 수 있다.
일 실시예에서, 가중치는 처리 유닛에 의해 기대되는 것과 동일한 포맷으로 메모리에 저장된다. 따라서, 가중치 컨테이너 출력은 정렬을 필요로 하지 않고 선택 로직(2820-2823)의 출력에 직접 연결된다.
일 실시예에서, 선택 로직(2820-2823)은 처리 유닛들에 의해 소비될 준비가 된 포맷으로 출력 데이터를 생성하는 것을 담당한다. 일반적으로, 선택 로직(2820-2823)은 어떤 데이터가 어떤 컨테이너로부터 취해져야 하는지, 그리고 처리 유닛에 공급할 출력 패킷을 생성하기 위해 어디에 배치되어야 하는지를 알고 있다. 그렇게 하기 위해, 선택 로직(2820-2823)의 일 실시예는 하나 이상의 컨테이너들(2800-2803)로부터 정렬된 출력들을 판독하고 이 정보를 실행 클러스터(2830)에 대한 출력 패킷에 위치시킨다. 본 발명의 일 실시예에서 채용된 로직은 도 31의 테이블에 도시되어있다. 첫번째 열은 행, 열 또는 정사각형으로 간주되는 이미지 액세스 모드를 나타낸다. 다음 4개의 열은 출력 패킷을 나타낸다. Cx는 컨테이너 번호 X를 나타내고 AOx는 위치 X의 컨테이너 정렬 출력을 나타낸다는 점에 유의해야 한다. 도시된 바와 같이, 출력은 4B 행 모드에서 단일 컨테이너의 4개의 정렬된 출력을 판독함으로써 생성된다. 4B 열 모드에서, 4개의 다른 컨테이너의 첫번째 정렬된 위치를 선택하여 출력이 생성된다. 마지막으로, 4B 정사각형 모드에서, 2개의 상이한 컨테이너(예를 들어, 2x2 픽셀 정사각형 영역)의 첫번째 2개의 정렬된 위치를 선택함으로써 출력이 생성된다. 이러한 모드를 사용하면 픽셀 행, 픽셀 열 또는 둘의 조합으로 이미지 데이터를 트래버스할 수 있다. 이것은 컨볼루션 패턴을 실행 클러스터(2830)에 제공하여 매우 편리하게 컨볼루션에서 관찰되는 데이터 지역을 매우 유용하게 한다.
도 32는 컨테이너(2800-2803), 정렬 로직(2810-2813) 및 선택 로직(2820-2923)의 일 실시예가 어떻게 실행 클러스터(2830)에 대한 출력 패킷(3210)을 생성하도록 상호 접속되는지를 도시한다. 한 세트의 멀티플렉서들(3201-3204) 각각은 정렬 로직(2810-2813)으로부터의 출력들 중 하나로부터 출력 패킷(3210)의 일부를 선택한다. 서로 다른 클러스터에 걸쳐 있는 컴포넌트는 협업 방식으로 작동하며 출력 패킷(3210)을 동시에 생성하다는 점에 유의해야 한다. 처리 유닛은 선택 로직(2820-2823)으로부터 데이터를 수신한 후 록스텝(lockstep)으로 실행한다.
컨테이너(2800-2803), 정렬 로직(2810) 및 선택 로직(2820-2823)은 함께 컨볼루션을 수행하기 위한 가장 편리한 방식으로 모든 처리 유닛에 데이터를 제공하는 것을 가능하게 한다. 처리 유닛(2830)의 각 클러스터가 상이한 데이터 요건을 가질 수 있지만, 이 로직은 상위 캐시 레벨에 대한 다중 액세스를 하지 않고 데이터를 제공한다. 데이터는 컨테이너(2800-2803)에 일시적으로 저장되고, 정렬 로직(2810-2813) 및 선택 로직(2820-2823)은 각 클러스터(2830)의 요건을 충족시키기 위해 유연한 방식으로 제공한다. 예를 들어, 도시된 실시예들은 비연속적인 행으로부터 동시에 다수의 이미지 열을 제공할 수 있으며, 전체적으로 단지 하나의 메모리 액세스만을 필요로 하는 반면, 종래의 캐싱 방식에서는 이 동작이 각각의 액세스된 행마다 하나의 개별적인 액세스를 필요로 한다.
재구성 가능한 기능 유닛 및 인위적인 신경망을 위한 방법
상술한 바와 같이, ANN은 "시냅스"를 통해 연결된 뉴런을 갖는 상호 접속된 "뉴런" 계층의 세트로서 구성된다. 시냅스 가중치(또는 그냥 가중치)는 2개의 뉴런 사이의 연결의 강도 또는 진폭을 나타내며 수치로 나타낼 수 있다. 따라서, 뉴런의 출력은 시냅스 가중치에 의해 숙고된 이전 계층으로부터의 모든 입력 뉴런의 추가에 의해 계산된다. 이 계산 결과는 도 33에 도시된 바와 같이, 가중 입력에 기초하여 뉴런의 출력을 계산하는 수학 함수인 활성화 함수(AF)를 통해 전달된다.
신경망이 비선형 거동을 근사 또는 예측하기 위해서는, 비선형 활성화 함수가 사용되어야 한다. 시그모이드(Sigmoid), 바운드 정류 선형 및 쌍곡선 탄젠트(hyperbolic tangent)가 가장 일반적인 것들이지만 몇가지 비선형 함수가 구현될 수 있다. CNN(convolutional neural network)의 한가지 문제점은 어떤 AF를 선택할 것인지이다. 연구에 따르면 서로 다른 AF가 다른 정확도를 제공할 수 있으며 더 길거나 더 짧은 교육 시간이 필요할 수도 있다는 것을 보여준다. 이상적으로, 유연한 하드웨어 설계는 각기 특정 문제를 겨냥한 다양한 AF를 구현할 수 있어야 헌다.
현재 범용 CPU에 제공된 해결책은 유연성을 제공하지만, 두뇌 영감 알고리즘은 제한된 전력 예산 및 처리 능력으로 인해 전통적인 저전력 세그먼트에서 금지될 수 있는 매우 높은 연산 요건을 가질 수 있다. 이 문제를 극복하기 위해, 산업계와 학계 양측 모두는 종래의 접근법보다 훨씬 더 뛰어난 에너지 효율을 제공하는 특수한 뉴로모픽 아키텍처에 큰 관심을 보이고 있다.
그럼에도 불구하고, 현재의 뉴로모픽 아키텍처는 비최적인 AF 구현을 제공한다. 예를 들어, 기존의 많은 구현은 한가지 유형의 AF만 지원하는데, 일반적으로 방대한 벤치 마크 세트에서 최상의 결과를 제공하는 것을 지원한다. 예를 들어, 선택된 AF는 얼굴 검출 문제에 대해 우수할 수 있지만 음성 인식에 대해서는 차선책일 수 있다. 다수의 AF 구현 또는 다수의 AF 구현을 제공하도록 재구성할 수 있는 아키텍처가 있으면, 이 문제를 해결할 수 있다.
반면에, 재구성 가능한 AF로 뉴로모픽 코어를 구현하려고 하는 몇가지 제안이 있지만, 그들이 사용하는 방법론은 효율적이지 않다. 첫번째, 이들 기존의 구현은 균일한 세그먼테이션을 사용하는데, 이는 세그먼트의 크기가 최악의 경우(예를 들어, 가장 작은 크기)에 의해 제한되기 때문에 최적이 아니다. 또한, 함수에서 각 포인트의 계산은 고정값에 의해 근사되며, 간단한 룩업 테이블(LUT)(3400)로 도 34a에 도시된 바와 같이 구현될 수 있다. 도 34b는 포인트들을 갖는 예시적인 시그모이드 근사를 도시한다. 대안적으로, 도 35a에 도시된 바와 같이, 각 포인트의 계산은 LUT(3500)를 사용하여 주어진 슬로프를 갖는 선형 세그먼트에 의해 근사될 수 있다. 도 35b는 선형 함수를 갖는 예시적인 시그모이드 근사를 도시한다.
본 발명의 일 실시예는 신경망에서 AF를 계산하기 위한 최적화되고 유연한 마이크로 아키텍처를 포함한다. 도 36에 도시된 바와 같이, 아키텍처의 일 실시예는 AF의 특성에 대해 최적화된 구분적 근사 유닛(3603)에 기초한다. 또한, 비균일 함수 세그멘테이션을 지원하는 다형 디코더(3601) 및 상이한 선형 세그먼트들의 파라미터들을 갖는 LUT(3602)를 포함한다. 하기 논의되는 바와 같이, 또한 계산을 수행하기 위한 추가 로직을 포함할 수도 있다. 제안된 해결책은, CNN에서 사용되는 AF의 특성을 고려하여, 최소한의 정확도 요건에 대한 근사 세그먼트의 수를 최소화하면서 에너지를 감소시킨다. 이 설계는 정확도 요건에 따라 쉽게 확장할 수 있으며 고성능 세그먼트에서부터 저전력 세그먼트에 이르기까지 다양한 시장 부문에서 시스템을 매우 효율적으로 사용할 수 있다.
ANN은 종래의 아키텍처(예를 들어, 하이 엔드 프로세서) 또는 특수한 뉴로모픽 가속기에서 실행될 수 있다. 몇몇 연구에 따르면, 후자는 전자보다 훨씬 더 우수한 에너지 효율을 제공하는 것으로 나타난다. 따라서, 이들은 SoC나 웨어러블 디바이스와 같이 전력이 제한적인 세그먼트에 더 적합하다. 그럼에도 불구하고, 현재의 뉴로모픽 가속기의 AF 구현은 최적이 아니며, 융통성면에서(예를 들어, 이들은 하나의 AF만을 지원함) 또는 재구성 가능한 경우, 큰 LUT 블록을 필요로 하는, 일정한 양자화(도 34a 참조)로 간단한 포인트 근사를 사용하거나; 또는 더 작은 LUT 블록을 필요로 하지만 더 큰 산술 유닛(곱셈기 및 가산기)를 필요로 하는 균일한 양자화(도 35a 참조)로 구분적 근사를 사용하기 때문에 수용 가능한 정확도 수준에서는 효율적이지 않다는 커다란 제약이 있다.
본원에서 설명된 본 발명의 실시예들은 이러한 한계를 극복하고 작은 LUT 및 적당한 크기의 산술 유닛으로 높은 정확도 및 효율성을 제공할 수 있다. 이러한 문제를 설명하기 위해, 표 1은 현재 해결책(A 및 B) 및 고정 소수점 [s2.7] 표현 및 2-7의 고정된 최대 오차에 대해 본 발명의 실시예에서 요구되는 LUT 엔트리의 수를 나타낸다. 이것은 얼굴 검출 CNN 구현에서 최소 허용 오차로 결정되었다. 표의 3개의 첫 번째 행은 3가지 유형의 AF 각각을 지원하는데 필요한 LUT 항목의 수를 나타낸다. 마지막 행은 3가지 AF 모두를 지원하는 재구성 가능한 해결책에 필요한 항목의 수를 나타낸다. 2-7의 고정 오차에 대해, C는 B에 비해 항목의 50%만을 필요로 하고 A의 3.1%를 필요로 한다.
AF A-균일(포인트) B-균일(구분적) C-본 발명의 실시예들
쌍곡선 탄젠트 512 32 16
시그모이드 256 16 16
바운드 ReLU 512 4 4
전부 512 32 16
표 2는 모든 구현 유형(즉, 면적 및 전력 소비가 제한되는 경우)에 대해 동일한 수의 LUT 항목(16)를 고려할 때 오차가 어떻게 변하는지를 나타낸다.
AF A-균일(포인트) B-균일(구분적) C-제안된 해결책
쌍곡선 탄젠트 2-3 2-6 2-7
시그모이드 2-4 2-7 2-7
바운드 ReLU 2-2 2-7 2-7
더욱이, 산술 계산을 위해, 본 발명의 실시예는 전형적으로 구분적 근사 해결책에 사용되는 곱셈기 대신에 시프터만을 필요로 하기 때문에, 전력 및 면적 요건을 또한 감소시킨다.
본 발명의 실시예들은 일반적으로 ANN에서 사용되는 활성화 함수, 즉 쌍곡선 탄젠트, 시그모이드 및 바운드 ReLU를 효율적으로 근사하기 위해 최적화된 마이크로 아키텍처를 포함한다. 그럼에도 불구하고, 마이크로 아키텍처는 ANN에서 사용되는 AF에서 일반적으로 발견되는 공통 특성, 즉 원점 근처의 입력 변화에 제한적이고 보다 민감한 기능을 공유하는 한, 다른 기능을 지원할 만큼 충분히 유연하다. 제안된 설계는 선형 함수를 사용한 구분적 근사의 원리에 기초한다. 또한, 일 실시예에서, 각각의 선형 세그먼트는 식(1)에 도시된 유형이다.
Figure pct00002
(1)
여기서
Figure pct00003
.
활성화 함수 유닛 개요
활성화 함수(AF) 유닛의 일 실시예는 (a) 다형 디코더(3601), (b) LUT(3602), 및 (c) 구분적 보간 근사 유닛(3603)의 도 36에 나타낸 3가지 주요 컴포넌트를 포함한다.
일 실시예에서, 다형 디코더(3601)는 각 입력 X를 가로 좌표 공간의 범위로 매핑하고, 고려되는 활성화 함수가 원점 근처에서는 더 많은 정밀도(즉, 보다 작은 양자화 간격)를 필요로 하고, 더 큰 |X|에 대해서는 더 적은 정밀도를 필요로 한다는 사실을 레버리지한다(도 37a 참조). 이 특성은 뉴런의 반응에 존재하는 비선형성을 모델링하는데 사용된 활성화 함수에 공통적이다. 따라서, 입력 양자화 간격의 고정된 초기 세트를 도 37a에 도시된 것과 같이 고려하면, 다형 디코더(3601)는 도 37b에 도시된 것(두꺼운 선으로 표시됨)과 같은 더 작은 불균일한 간격의 서브세트를 선택하도록 구성될 수 있다.
이 방법론은 근사화된 활성화 함수의 특성에 따라 입력 X와 LUT(2602)에 저장된 구분적 선형 세그먼트에 대한 인덱스 간의 효율적이고 유연한 변환을 지원한다. 따라서, 주어진 기능에 대해 선택된 간격은 특성과 관련된다.
일 실시예에서, LUT 유닛(3602)은 선형 보간 세그먼트의 파라미터가 저장되는 컴포넌트이다. 도시된 바와 같이, 다형 디코더(3601)의 결과를 입력으로서 사용한다. 주어진 선형 세그먼트에 대한 LUT(3602)에 저장된 파라미터는 전술한 식(1)에 따른 최종 결과를 계산하기 위해 구분적 보간 근사 유닛(3603)에 의해 사용된다.
방법론 개요
다음 방법론은 본 발명의 일 실시예에 따라 구현된다. 첫번째, 고려된 활성화 함수는 (1) 최대 오차
Figure pct00004
와 (2) 모든 기울기가 규칙 β={-2t, 0, 2t}을 준수한다는 것을 보장하는 임의의 구분적 근사 알고리즘을 사용하여 선형 세그먼트로 분할된다.
예시적인 목적으로, 2-5의 최대 오차 및 5개의 선형 세그먼트를 갖는 시그모이드 함수의 예가 도 38에 도시되어 있다. 상이한 선형 세그먼트에 대해 오프라인으로 획득된 파라미터는 LUT 유닛(3602)에 저장되고 다형 디코더(3601)는 각각의 X 범위에 따라 구성된다. 최대 오차
Figure pct00005
가 제어될 수 있고, 필요한 선형 세그먼트의 수가 오류 자체에 따라 좌우되기 때문에(표 1 및 표 2 참조), 이 방법을 근사 계산 해결책에 사용할 수 있으며, 여기서 대상 오류에 따라, LUT(3602) 내의 엔트리의 수는 (예를 들어, 클럭 게이팅을 사용하여) 여분의 전력을 절약하기 위해 재조정된다.
또한, AF 유닛은 도 12a 및 도 12b에 도시된 것과 같은 뉴로모픽 가속기(1230)의 처리 유닛에 통합될 수 있다. 또한, 유닛의 구성 가능한 능력을 레버리지하기 위해, 다음과 같은 메커니즘이 소프트웨어에 노출될 수 있다:
(1) 목표 함수에 따라 근사 파라미터를 LUT(3602)에 로딩하는 메커니즘. 이 메커니즘은 "Load M(Rx)→AF"와 같은 명령어를 통해 노출될 수 있다.
(2) (예를 들어, 섀도우 레지스터 또는 레지스터 상태의 복제를 지원하는 다른 유형의 실시예를 사용함으로써) 다수의 AF가 지원되는 경우, 예를 들어, "SwitchAF AFID#"와 같은 상이한 AF 사이를 전환하기 위한 추가 명령어가 구현된다.
하나의 예시적인 실시예
하나의 예시적인 실시예가 도 39에 도시되며, 또한 다형 디코더(3902) 및 LUT(3903)를 포함한다. 모듈로 X 블록(|X|)(3901)은 쌍곡선 및 시그모이드 함수가 LUT 엔트리의 수를 반으로 줄이기 위해 대칭을 갖는다는 사실을 레버리지한다. 상술한 바와 같이, LUT(3902)는 AF 선형 세그멘테이션에 필요한 상이한 파라미터를 유지한다. 이 경우, 6개의 파라미터(t, α', α", z', z", e)가 있다.
구분적 근사 산술 유닛의 일 실시예는 특정 기능을 수행하는 다음의 컴포넌트를 포함한다:
(i) 블록(3910)의 부호(x) - X의 부호는 오프셋 파라미터(
Figure pct00006
), β=0(z)일 때의 제로 파라미터(상기 식(1)을 참조)를 선택하고, Y의 최종 부호를 조정하는데 사용된다. 수학적으로, 우리는 다음을 갖는다:
Figure pct00007
(ii) 시프터 블록(3911) - 시프터 블록은 β=2t를 계산하는데 사용된다. 시프팅시 약간의 정밀도 손실이 발생할 수 있다. 본 발명의 일 실시예는 이 손실을 2가지 방식으로 감소시킨다: (1) 오른쪽으로 시프팅할 때, LSB는 가드 비트로서 저장되고 가산시 캐리-인으로서 사용된다; (2) '
Figure pct00008
'와 't'에 따라 프로그래머는 두가지 방식으로 식(1)을 계산하도록 산술 유닛을 구성할 수 있다:
Figure pct00009
가산전에 두번째 케이스를 사용하여 오른쪽 시프트를 피할수 있는 첫번째 케이스가 발생한다.
(ⅲ) 가산기 블록(3912) - 최종적으로 가산기 블록은 가산을 수행하기 위해 사용된다.
다형 디코더(3902)의 가능한 실시예가 도 40에 도시된다. 이것은 도 37a에 도시된 바와 같이 함수 X 범위의 상이한 세그먼트에 가변 정밀도 간격을 제공하는 작은 LUT(4001, 4002, 4003)의 그룹으로 구성된다. 그러면 LUT 엔트리를 X 간격을 소정 부분적 세그먼트에 매핑하도록 구성할 수 있다.
고정된 정밀도 [s2.7]의 입력 X와 [s0.7]의 출력 Y을 가지며 2-7의 최대 오차를 갖는 시그모이드, 바운드 정류 선형 및 쌍곡선 탄젠트 함수에 대한 지원을 갖는 AF 유닛의 실시예는, 16개의 엔트리를 가진 LUT와 2개의 LUT를 가진 다형 디코더가 필요할 것이며, 하나는 25x4 비트이고 다른 하나는 24x4 비트이다.
상기 설명에서, 본 발명은 그 특정 예시적인 실시예를 참조하여 설명되었다. 그러나, 첨부된 청구범위에 제시되어 있는 본 발명의 광범위한 취지 및 범위를 벗어나지 않는 한도 내에서 다양한 수정 및 변경이 이루어질 수 있음은 명백할 것이다. 따라서, 명세서 및 도면은 제한적 의미보다는 설명적인 것으로 간주되어야 한다.
본 발명의 실시예들은 전술한 다양한 단계들을 포함할 수 있다. 이들 단계들은, 범용 또는 특수 목적 프로세서가 이들 단계들을 수행하게 하는데 이용될 수 있는 머신 실행가능 명령어들로 구현될 수 있다. 대안으로서, 이러한 단계들은 단계들을 수행하기 위한 하드와이어드 로직을 포함하는 특정 하드웨어 컴포넌트들에 의해 또는 프로그래밍된 컴퓨터 컴포넌트들과 맞춤형 하드웨어 컴포넌트들의 임의의 조합에 의해 수행될 수 있다.
본원에서 설명된 바와 같이, 명령어들은, 비일시적인 컴퓨터 판독가능 매체로 구현된 메모리에 저장되는 소프트웨어 명령어들, 또는 미리 결정된 기능성을 갖거나 특정 연산들을 수행하도록 구성된 주문형 집적 회로들(ASIC들)과 같은 하드웨어의 특정 구성들을 지칭할 수 있다. 따라서, 도면들에 도시된 기술들은 하나 이상의 전자 디바이스(예로서, 말단 스테이션, 네트워크 요소 등) 상에 저장되고 실행되는 코드 및 데이터를 이용하여 구현될 수 있다. 이러한 전자 디바이스들은, 비일시적인 컴퓨터 머신 판독가능 저장 매체(예를 들어, 자기 디스크; 광학 디스크; 랜덤 액세스 메모리; 판독 전용 메모리; 플래시 메모리 디바이스; 상변화 메모리) 및 일시적인 컴퓨터 머신 판독가능 통신 매체(예를 들어, 전기, 광학, 음향 또는 다른 형태의 전파 신호 - 예컨대, 반송파, 적외선 신호, 디지털 신호 등)와 같은 컴퓨터 머신 판독가능 매체를 이용하여 코드 및 데이터를 (내부적으로 그리고/또는 네트워크를 통해 다른 전자 디바이스들과) 통신하고 저장한다.
또한, 이러한 전자 디바이스들은, 하나 이상의 저장 디바이스(비일시적인 머신 판독가능 저장 매체), 사용자 입/출력 디바이스(예를 들어, 키보드, 터치스크린 및/또는 디스플레이) 및 네트워크 접속과 같은 하나 이상의 다른 컴포넌트에 연결된 하나 이상의 프로세서의 세트를 통상적으로 포함한다. 프로세서들의 세트와 다른 컴포넌트들의 결합은 일반적으로 하나 이상의 버스들 및 브릿지들(버스 제어기들로도 불림)을 통한다. 저장 디바이스 및 네트워크 트래픽을 운반하는 신호들은 각각 하나 이상의 머신 판독 가능 저장 매체 및 머신 판독 가능 통신 매체를 나타낸다. 따라서, 주어진 전자 디바이스의 저장 디바이스는 통상적으로 그 전자 디바이스의 하나 이상의 프로세서의 세트 상에서 실행할 코드 및/또는 데이터를 저장한다. 물론, 본 발명의 일 실시예의 하나 이상의 요소는 소프트웨어, 펌웨어 및/또는 하드웨어의 상이한 조합들을 이용하여 구현될 수 있다. 이러한 상세한 설명 전반에서는, 설명의 목적으로, 본 발명의 충분한 이해를 제공하기 위해 다수의 특정 상세들이 설명되었다. 그러나, 본 발명은 이러한 특정 상세들 중 일부 없이도 실시될 수 있다는 것이 이 분야의 기술자에게 명백할 것이다. 특정 경우에, 본 발명의 대상을 모호하게 하는 것을 회피하기 위해서 잘 알려진 구조들 및 기능들은 상세하게 설명되지 않았다. 따라서, 본 발명의 범위 및 사상은 이하의 청구항들에 관하여 판단되어야 한다.

Claims (25)

  1. 인공 신경망(ANN) 처리를 수행하기 위한 장치로서,
    입출력(I/O) 인터페이스;
    입력 뉴런들에 대한 데이터 및 상기 입력 뉴런들 각각과 관련된 시냅스 가중치들을 수신하기 위해 상기 I/O 인터페이스에 통신 결합된 복수의 처리 유닛 - 상기 복수의 처리 유닛 각각은 상기 입력 뉴런들에 대한 상기 데이터 및 시냅스 가중치들의 적어도 일부를 처리하여 부분 결과(partial result)들을 생성함 -; 및
    상기 복수의 처리 유닛을 통신 결합하는 인터커넥트 - 상기 처리 유닛 각각은 상기 인터커넥트를 통해 하나 이상의 다른 처리 유닛과 상기 부분 결과들을 공유하며, 상기 다른 처리 유닛들은 상기 부분 결과들을 사용하여 추가적인 부분 결과들 또는 최종 결과들을 생성함 -
    를 포함하는 장치.
  2. 제1항에 있어서,
    상기 입력 뉴런들에 대한 상기 데이터 및 시냅스 가중치들을 상기 처리 유닛들 각각에 전달하는 공유 입력 버스; 및
    상기 부분 또는 최종 결과들을 외부 컴포넌트에 전달하는 공유 출력 버스
    를 더 포함하는 장치.
  3. 제2항에 있어서,
    상기 처리 유닛들은 입력 뉴런들 및 가중치들을 포함하는 데이터를 상기 공유 입력 버스를 통해 공유하는 장치.
  4. 제1항에 있어서,
    상기 인터커넥트는 상기 처리 유닛들 사이의 단방향 포인트 대 포인트 링크를 포함하는 장치.
  5. 제1항에 있어서,
    상기 입력 뉴런들에 대한 상기 데이터 및 상기 입력 뉴런들 각각과 관련된 시냅스 가중치들을 상기 I/O 인터페이스로부터 상기 처리 유닛들 각각으로 드라이브하고, 상기 데이터의 그의 각각의 부분을 실행하여 상기 부분 결과들을 생성하도록 각각의 처리 유닛을 더 구성하는 글로벌 제어 유닛을 더 포함하는 장치.
  6. 제1항에 있어서,
    상기 I/O 인터페이스는 제1 주파수에서 동작하고, 상기 처리 유닛들은 상기 제1 주파수보다 낮은 제2 주파수에서 동작하는 장치.
  7. 제1항에 있어서,
    각각의 처리 유닛은 내적 연산(dot product operation)들을 수행하여 상기 부분 결과들 및/또는 최종 결과들을 생성하는 복수의 곱셈기 및 덧셈기를 포함하는 장치.
  8. 제1항에 있어서,
    복수의 사이클에 대해, 입력 뉴런들에 대한 데이터가 각각의 사이클에 상기 처리 유닛들 각각에 제공되고, 시냅스 가중치들이 각각의 사이클에 상이한 처리 유닛에 제공되는 장치.
  9. 제1항에 있어서,
    복수의 사이클에 대해, 입력 뉴런들에 대한 데이터 및 시냅스 가중치들이 각각의 사이클에 상이한 처리 유닛에 제공되는 장치.
  10. 방법으로서,
    입출력(I/O) 인터페이스로부터 복수의 처리 유닛에 제공되는 입력 뉴런들에 대한 데이터 및 상기 입력 뉴런들 각각과 관련된 시냅스 가중치들을 수신하는 단계;
    상기 처리 유닛들에 의해 상기 입력 뉴런들에 대한 상기 데이터 및 시냅스 가중치들의 적어도 일부를 처리하여 부분 결과들을 생성하는 단계; 및
    상기 복수의 처리 유닛을 통신 결합하는 인터커넥트를 통해 각각의 처리 유닛의 상기 부분 결과들을 하나 이상의 다른 처리 유닛과 공유하는 단계 - 상기 다른 처리 유닛들은 상기 부분 결과들을 사용하여 추가적인 부분 결과들 또는 최종 결과들을 생성함 -
    를 포함하는 방법.
  11. 제10항에 있어서,
    공유 입력 버스를 통해 상기 입력 뉴런들에 대한 상기 데이터 및 시냅스 가중치들을 상기 처리 유닛들 각각에 전달하는 단계; 및
    공유 출력 버스를 통해 상기 부분 또는 최종 결과들을 외부 컴포넌트에 전달하는 단계
    를 더 포함하는 방법.
  12. 제11항에 있어서,
    입력 뉴런들 및 가중치들을 포함하는 데이터를 상기 공유 입력 버스를 통해 공유하는 단계를 더 포함하는 방법.
  13. 제10항에 있어서,
    상기 인터커넥트는 상기 처리 유닛들 사이의 단방향 포인트 대 포인트 링크를 포함하는 방법.
  14. 제10항에 있어서,
    상기 입력 뉴런들에 대한 상기 데이터 및 상기 입력 뉴런들 각각과 관련된 시냅스 가중치들을 상기 I/O 인터페이스로부터 상기 처리 유닛들 각각으로 드라이브하고, 상기 데이터의 그의 각각의 부분을 실행하여 상기 부분 결과들을 생성하도록 각각의 처리 유닛을 구성하는 단계를 더 포함하는 방법.
  15. 제10항에 있어서,
    상기 I/O 인터페이스는 제1 주파수에서 동작하고, 상기 처리 유닛들은 상기 제1 주파수보다 낮은 제2 주파수에서 동작하는 방법.
  16. 제10항에 있어서,
    각각의 처리 유닛은 내적 연산들을 수행하여 상기 부분 결과들 및/또는 최종 결과들을 생성하는 복수의 곱셈기 및 덧셈기를 포함하는 방법.
  17. 제10항에 있어서,
    복수의 사이클에 대해, 입력 뉴런들에 대한 데이터가 각각의 사이클에 상기 처리 유닛들 각각에 제공되고, 시냅스 가중치들이 각각의 사이클에 상이한 처리 유닛에 제공되는 방법.
  18. 제10항에 있어서,
    복수의 사이클에 대해, 입력 뉴런들에 대한 데이터 및 시냅스 가중치들이 각각의 사이클에 상이한 처리 유닛에 제공되는 방법.
  19. 시스템으로서,
    명령어들 및 데이터를 저장하는 메모리;
    상기 명령어들을 실행하고 상기 데이터를 처리하는 복수의 코어;
    소정의 명령어들에 응답하여 그래픽 연산들을 수행하는 그래픽 프로세서;
    네트워크를 통해 데이터를 수신하고 송신하는 네트워크 인터페이스;
    마우스 또는 커서 제어 디바이스로부터 사용자 입력을 수신하는 인터페이스; 및
    뉴로모픽 가속기(neumomorphic accelerator)
    를 포함하고,
    상기 뉴로모픽 가속기는
    입출력(I/O) 인터페이스;
    입력 뉴런들에 대한 데이터 및 상기 입력 뉴런들 각각과 관련된 시냅스 가중치들을 수신하기 위해 상기 I/O 인터페이스에 통신 결합된 복수의 처리 유닛 - 상기 복수의 처리 유닛 각각은 상기 입력 뉴런들에 대한 상기 데이터 및 시냅스 가중치들의 적어도 일부를 처리하여 부분 결과들을 생성함 -; 및
    상기 복수의 처리 유닛을 통신 결합하는 인터커넥트 - 상기 처리 유닛 각각은 상기 인터커넥트를 통해 하나 이상의 다른 처리 유닛과 상기 부분 결과들을 공유하며, 상기 다른 처리 유닛들은 상기 부분 결과들을 사용하여 추가적인 부분 결과들 또는 최종 결과들을 생성함 -
    를 포함하는 시스템.
  20. 제19항에 있어서,
    상기 뉴로모픽 가속기는
    상기 입력 뉴런들에 대한 상기 데이터 및 시냅스 가중치들을 상기 처리 유닛들 각각에 전달하는 공유 입력 버스; 및
    상기 부분 또는 최종 결과들을 외부 컴포넌트에 전달하는 공유 출력 버스
    를 더 포함하는 시스템.
  21. 제20항에 있어서,
    상기 처리 유닛들은 입력 뉴런들 및 가중치들을 포함하는 데이터를 상기 공유 입력 버스를 통해 공유하는 시스템.
  22. 제19항에 있어서,
    상기 인터커넥트는 상기 처리 유닛 사이의 단방향 포인트 대 포인트 링크를 포함하는 시스템.
  23. 제19항에 있어서,
    상기 입력 뉴런들에 대한 상기 데이터 및 상기 입력 뉴런들 각각과 관련된 시냅스 가중치들을 상기 I/O 인터페이스로부터 상기 처리 유닛들 각각으로 드라이브하고, 상기 데이터의 그의 각각의 부분을 실행하여 상기 부분 결과들을 생성하도록 각각의 처리 유닛을 더 구성하는 글로벌 제어 유닛을 더 포함하는 시스템.
  24. 제19항에 있어서,
    상기 I/O 인터페이스는 제1 주파수에서 동작하고, 상기 처리 유닛들은 상기 제1 주파수보다 낮은 제2 주파수에서 동작하는 시스템.
  25. 제19항에 있어서,
    각각의 처리 유닛은 내적 연산들을 수행하여 상기 부분 결과들 및/또는 최종 결과들을 생성하는 복수의 곱셈기 및 덧셈기를 포함하는 시스템.
KR1020177013506A 2014-12-19 2015-11-19 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치 KR102539475B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227037483A KR102655386B1 (ko) 2014-12-19 2015-11-19 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14382553.7A EP3035249B1 (en) 2014-12-19 2014-12-19 Method and apparatus for distributed and cooperative computation in artificial neural networks
EP14382553.7 2014-12-19
PCT/US2015/061453 WO2016099779A1 (en) 2014-12-19 2015-11-19 Method and apparatus for distributed and cooperative computation in artificial neural networks

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227037483A Division KR102655386B1 (ko) 2014-12-19 2015-11-19 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170096105A true KR20170096105A (ko) 2017-08-23
KR102539475B1 KR102539475B1 (ko) 2023-06-05

Family

ID=52273001

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020227037483A KR102655386B1 (ko) 2014-12-19 2015-11-19 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치
KR1020177013506A KR102539475B1 (ko) 2014-12-19 2015-11-19 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치
KR1020247011137A KR20240049679A (ko) 2014-12-19 2015-11-19 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227037483A KR102655386B1 (ko) 2014-12-19 2015-11-19 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020247011137A KR20240049679A (ko) 2014-12-19 2015-11-19 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치

Country Status (6)

Country Link
US (3) US10997273B2 (ko)
EP (1) EP3035249B1 (ko)
KR (3) KR102655386B1 (ko)
CN (2) CN113378113A (ko)
TW (1) TWI622940B (ko)
WO (1) WO2016099779A1 (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190044657A (ko) * 2016-09-07 2019-04-30 로베르트 보쉬 게엠베하 다층 퍼셉트론 모델을 계산하기 위한 모델 계산 유닛 및 제어 장치
KR20190114208A (ko) * 2018-03-29 2019-10-10 국민대학교산학협력단 저전력 및 고속 연산을 위한 dram용 비트와이즈 컨볼루션 회로
WO2020075957A1 (ko) * 2018-10-08 2020-04-16 주식회사 디퍼아이 분산처리용 인공신경망 연산 가속화 장치, 이를 이용한 인공신경망 가속화 시스템, 및 그 인공신경망의 가속화 방법
KR20200048750A (ko) * 2018-10-30 2020-05-08 성균관대학교산학협력단 머신러닝 가속기 및 그의 행렬 연산 방법
WO2020111356A1 (ko) * 2018-11-26 2020-06-04 전자부품연구원 스파이킹 뉴럴 네트워크 장치 및 이를 포함하는 지능형 장치
KR20200082892A (ko) * 2018-12-31 2020-07-08 건국대학교 산학협력단 인공 신경망 가속 방법 및 장치
KR20200093404A (ko) * 2019-01-28 2020-08-05 포항공과대학교 산학협력단 신경망 가속기 및 그것의 동작 방법
KR20210109400A (ko) * 2020-02-27 2021-09-06 주식회사 센서위드유 복합가스 환경의 가스 농도감지와 예측을 위한 딥러닝 기반의 유해가스센서 모니터링 시스템과 그 플랫폼
WO2021246835A1 (ko) * 2020-06-05 2021-12-09 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치
US11580386B2 (en) 2019-03-18 2023-02-14 Electronics And Telecommunications Research Institute Convolutional layer acceleration unit, embedded system having the same, and method for operating the embedded system

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016203619A1 (en) * 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
CN106203617B (zh) * 2016-06-27 2018-08-21 哈尔滨工业大学深圳研究生院 一种基于卷积神经网络的加速处理单元及阵列结构
DE102016216950A1 (de) * 2016-09-07 2018-03-08 Robert Bosch Gmbh Modellberechnungseinheit und Steuergerät zur Berechnung eines mehrschichtigen Perzeptronenmodells mit Vorwärts- und Rückkopplung
US20180075347A1 (en) * 2016-09-15 2018-03-15 Microsoft Technology Licensing, Llc Efficient training of neural networks
KR20180075913A (ko) * 2016-12-27 2018-07-05 삼성전자주식회사 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치
US10586148B2 (en) * 2016-12-31 2020-03-10 Via Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
US11580373B2 (en) * 2017-01-20 2023-02-14 International Business Machines Corporation System, method and article of manufacture for synchronization-free transmittal of neuron values in a hardware artificial neural networks
US10909447B2 (en) * 2017-03-09 2021-02-02 Google Llc Transposing neural network matrices in hardware
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US9875167B1 (en) * 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
CN109409515B (zh) 2017-04-06 2022-08-09 上海寒武纪信息科技有限公司 运算装置和方法
US11010338B2 (en) 2017-04-06 2021-05-18 Shanghai Cambricon Information Technology Co., Ltd Data screening device and method
CN108694441B (zh) * 2017-04-07 2022-08-09 上海寒武纪信息科技有限公司 一种网络处理器和网络运算方法
US10243882B1 (en) * 2017-04-13 2019-03-26 Xilinx, Inc. Network on chip switch interconnect
EP3388981B1 (en) 2017-04-13 2021-09-01 Nxp B.V. Convolutional processing system
US10795836B2 (en) 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
CN108734288B (zh) * 2017-04-21 2021-01-29 上海寒武纪信息科技有限公司 一种运算方法及装置
US10417731B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US20180307987A1 (en) * 2017-04-24 2018-10-25 Intel Corporation Hardware ip optimized convolutional neural network
WO2018199721A1 (ko) * 2017-04-28 2018-11-01 서울대학교 산학협력단 뉴럴네트워크에서 데이터 처리를 가속화하는 방법 및 장치
US10489878B2 (en) 2017-05-15 2019-11-26 Google Llc Configurable and programmable image processor unit
US9928460B1 (en) * 2017-06-16 2018-03-27 Google Llc Neural network accelerator tile architecture with three-dimensional stacking
US9916531B1 (en) * 2017-06-22 2018-03-13 Intel Corporation Accumulator constrained quantization of convolutional neural networks
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
GB2568776B (en) 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
EP3580691B1 (en) * 2017-08-31 2020-07-01 FotoNation Limited A peripheral processing device
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
CN107704921A (zh) * 2017-10-19 2018-02-16 北京智芯原动科技有限公司 基于Neon指令的卷积神经网络的算法优化方法及装置
KR102586173B1 (ko) 2017-10-31 2023-10-10 삼성전자주식회사 프로세서 및 그 제어 방법
GB2568087B (en) * 2017-11-03 2022-07-20 Imagination Tech Ltd Activation functions for deep neural networks
TW201926147A (zh) * 2017-12-01 2019-07-01 阿比特電子科技有限公司 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統
US11360930B2 (en) 2017-12-19 2022-06-14 Samsung Electronics Co., Ltd. Neural processing accelerator
US11354562B2 (en) * 2018-01-03 2022-06-07 Silicon Storage Technology, Inc. Programmable neuron for analog non-volatile memory in deep learning artificial neural network
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11741346B2 (en) 2018-02-08 2023-08-29 Western Digital Technologies, Inc. Systolic neural network engine with crossover connection optimization
WO2019165316A1 (en) * 2018-02-23 2019-08-29 The Regents Of The University Of California Architecture to compute sparse neural network
WO2019165946A1 (zh) * 2018-02-27 2019-09-06 上海寒武纪信息科技有限公司 集成电路芯片装置、板卡及相关产品
CN110197263B (zh) * 2018-02-27 2020-10-09 上海寒武纪信息科技有限公司 集成电路芯片装置及相关产品
DE102018110828A1 (de) 2018-03-16 2019-09-19 Rockwell Collins Deutschland Gmbh System zur Objekterkennung mittels verteilter Neuronaler Netze
CN108470009B (zh) * 2018-03-19 2020-05-29 上海兆芯集成电路有限公司 处理电路及其神经网络运算方法
FI3557425T3 (fi) * 2018-04-19 2024-07-10 Aimotive Kft Kiihdytin ja järjestelmä operaatioiden kiihdyttämiseksi
EP3557485B1 (en) * 2018-04-19 2021-05-26 Aimotive Kft. Method for accelerating operations and accelerator apparatus
US11163707B2 (en) 2018-04-23 2021-11-02 International Business Machines Corporation Virtualization in hierarchical cortical emulation frameworks
US11687759B2 (en) * 2018-05-01 2023-06-27 Semiconductor Components Industries, Llc Neural network accelerator
CN108830379B (zh) * 2018-05-23 2021-12-17 电子科技大学 一种基于参数量化共享的神经形态处理器
CN112334915A (zh) * 2018-06-25 2021-02-05 奥林巴斯株式会社 运算处理装置
CN108981717A (zh) * 2018-08-23 2018-12-11 王红军 一种基于双曲度规的路径规划方法
US10601471B1 (en) * 2018-08-29 2020-03-24 Micron Technology, Inc. Neuron calculator for artificial neural networks
KR20200029661A (ko) * 2018-09-07 2020-03-19 삼성전자주식회사 뉴럴 프로세싱 시스템
US11315020B2 (en) 2018-09-24 2022-04-26 International Business Machines Corporation Optimized partitioning of multi-layer networks in core-based neurosynaptic architectures
US11238347B2 (en) 2018-09-28 2022-02-01 International Business Machines Corporation Data distribution in an array of neural network cores
CN109359732B (zh) * 2018-09-30 2020-06-09 阿里巴巴集团控股有限公司 一种芯片及基于其的数据处理方法
TWI714003B (zh) * 2018-10-11 2020-12-21 力晶積成電子製造股份有限公司 可執行人工智慧運算的記憶體晶片及其操作方法
US11501141B2 (en) 2018-10-12 2022-11-15 Western Digital Technologies, Inc. Shifting architecture for data reuse in a neural network
EP3648013A1 (en) 2018-11-02 2020-05-06 Tata Consultancy Services Limited Method and system for partitioning of deep convolution network for executing on computationally constraint devices
CN111199275B (zh) * 2018-11-20 2023-04-28 上海登临科技有限公司 用于神经网络的片上系统
CN111260046B (zh) * 2018-11-30 2022-12-02 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
US20200184321A1 (en) * 2018-12-11 2020-06-11 Fotonation Limited Multi-processor neural network processing apparatus
CN109799975B (zh) * 2018-12-20 2022-05-24 武汉西山艺创文化有限公司 一种基于神经网络的动作游戏制作方法和系统
JP7174243B2 (ja) * 2018-12-21 2022-11-17 富士通株式会社 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
CN111381882B (zh) * 2018-12-28 2022-12-02 上海寒武纪信息科技有限公司 数据处理装置及相关产品
CN109816105B (zh) * 2019-01-16 2021-02-23 北京时代民芯科技有限公司 一种可配置的神经网络激活函数实现装置
US10878321B2 (en) * 2019-02-28 2020-12-29 DeepCube LTD. Partial activation of multiple pathways in neural networks
US11599768B2 (en) 2019-07-18 2023-03-07 International Business Machines Corporation Cooperative neural network for recommending next user action
US11455540B2 (en) 2019-11-15 2022-09-27 International Business Machines Corporation Autonomic horizontal exploration in neural networks transfer learning
CN110991619A (zh) * 2019-12-09 2020-04-10 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
CN113452541B (zh) * 2020-03-27 2023-02-03 上海商汤智能科技有限公司 网络带宽调整方法和相关产品
KR102418794B1 (ko) * 2020-06-02 2022-07-08 오픈엣지테크놀로지 주식회사 하드웨어 가속기를 위한 파라미터를 메모리로부터 액세스하는 방법 및 이를 이용한 장치
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
CN112783261B (zh) * 2021-01-13 2023-03-28 之江实验室 一种异步通讯互连架构及具有该架构的类脑芯片
CN113780541A (zh) * 2021-09-01 2021-12-10 Oppo广东移动通信有限公司 神经网络加速器、数据处理装置及神经网络加速方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
KR20040040075A (ko) * 2002-11-06 2004-05-12 학교법인 인하학원 재구성능력 및 확장능력을 가진 신경회로망 하드웨어

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69032259T2 (de) * 1989-09-20 1998-08-13 Fujitsu Ltd Paralleldatenverarbeitungsanlage
US5065339A (en) 1990-05-22 1991-11-12 International Business Machines Corporation Orthogonal row-column neural processor
EP0482375A3 (en) * 1990-10-22 1993-12-01 Motorola Inc Digital processing element in an artificial neural network
US5467428A (en) * 1991-06-06 1995-11-14 Ulug; Mehmet E. Artificial neural network method and architecture adaptive signal filtering
JPH0567060A (ja) * 1991-08-02 1993-03-19 Iizeru Robotsuto Vision:Kk ニユーロデバイス
FR2686175B1 (fr) * 1992-01-14 1996-12-20 Andre Thepaut Systeme de traitement de donnees multiprocesseur.
EP0575716A1 (en) * 1993-04-08 1993-12-29 Andrzej Cichocki A neural network and signal processing units
CN1251136C (zh) * 2003-10-21 2006-04-12 上海交通大学 神经网络建模方法
US7533071B2 (en) 2005-06-28 2009-05-12 Neurosciences Research Foundation, Inc. Neural modeling and brain-based devices using special purpose processor
JP4513865B2 (ja) 2008-01-25 2010-07-28 セイコーエプソン株式会社 並列演算装置および並列演算方法
JP5154666B2 (ja) * 2008-03-14 2013-02-27 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ニューロモーフィック回路
US8676734B2 (en) * 2010-07-07 2014-03-18 Qualcomm, Incorporated Methods and systems for replaceable synaptic weight storage in neuro-processors
US8515885B2 (en) * 2010-10-29 2013-08-20 International Business Machines Corporation Neuromorphic and synaptronic spiking neural network with synaptic weights learned using simulation
US10078620B2 (en) 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
US9111224B2 (en) 2011-10-19 2015-08-18 Qualcomm Incorporated Method and apparatus for neural learning of natural multi-spike trains in spiking neural networks
TWI504273B (zh) * 2012-03-02 2015-10-11 Ind Tech Res Inst 多媒體內容推薦系統以及方法
WO2014025772A2 (en) 2012-08-06 2014-02-13 University Of Miami Systems and methods for responsive neurorehabilitation
US9477925B2 (en) * 2012-11-20 2016-10-25 Microsoft Technology Licensing, Llc Deep neural networks training for speech and pattern recognition
US9685207B2 (en) * 2012-12-04 2017-06-20 Nvidia Corporation Sequential access memory with master-slave latch pairs and method of operating
US9542643B2 (en) * 2013-05-21 2017-01-10 Qualcomm Incorporated Efficient hardware implementation of spiking networks
CN103455843B (zh) * 2013-08-16 2016-03-02 华中科技大学 一种反馈型人工神经网络训练方法及计算系统
US9390368B2 (en) * 2013-10-21 2016-07-12 International Business Machines Corporation Coupling parallel event-driven computation with serial computation
US9978014B2 (en) 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
US9858220B2 (en) 2014-03-17 2018-01-02 Purdue Research Foundation Computing architecture with concurrent programmable data co-processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
KR20040040075A (ko) * 2002-11-06 2004-05-12 학교법인 인하학원 재구성능력 및 확장능력을 가진 신경회로망 하드웨어

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Clement Farabet 등. "Hardware accelerated convolutional neural networks for synthetic vision systems"* *
Raul Rojas. "Hardware for Neural Networks"* *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190044657A (ko) * 2016-09-07 2019-04-30 로베르트 보쉬 게엠베하 다층 퍼셉트론 모델을 계산하기 위한 모델 계산 유닛 및 제어 장치
KR20190114208A (ko) * 2018-03-29 2019-10-10 국민대학교산학협력단 저전력 및 고속 연산을 위한 dram용 비트와이즈 컨볼루션 회로
WO2020075957A1 (ko) * 2018-10-08 2020-04-16 주식회사 디퍼아이 분산처리용 인공신경망 연산 가속화 장치, 이를 이용한 인공신경망 가속화 시스템, 및 그 인공신경망의 가속화 방법
KR20200048750A (ko) * 2018-10-30 2020-05-08 성균관대학교산학협력단 머신러닝 가속기 및 그의 행렬 연산 방법
WO2020111356A1 (ko) * 2018-11-26 2020-06-04 전자부품연구원 스파이킹 뉴럴 네트워크 장치 및 이를 포함하는 지능형 장치
KR20200082892A (ko) * 2018-12-31 2020-07-08 건국대학교 산학협력단 인공 신경망 가속 방법 및 장치
KR20200093404A (ko) * 2019-01-28 2020-08-05 포항공과대학교 산학협력단 신경망 가속기 및 그것의 동작 방법
US11580386B2 (en) 2019-03-18 2023-02-14 Electronics And Telecommunications Research Institute Convolutional layer acceleration unit, embedded system having the same, and method for operating the embedded system
KR20210109400A (ko) * 2020-02-27 2021-09-06 주식회사 센서위드유 복합가스 환경의 가스 농도감지와 예측을 위한 딥러닝 기반의 유해가스센서 모니터링 시스템과 그 플랫폼
WO2021246835A1 (ko) * 2020-06-05 2021-12-09 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
CN107003989B (zh) 2021-07-20
TW201640422A (zh) 2016-11-16
US20170277658A1 (en) 2017-09-28
EP3035249B1 (en) 2019-11-27
KR20240049679A (ko) 2024-04-16
US10997273B2 (en) 2021-05-04
KR20220147732A (ko) 2022-11-03
US20210326405A1 (en) 2021-10-21
TWI622940B (zh) 2018-05-01
US12032653B2 (en) 2024-07-09
WO2016099779A1 (en) 2016-06-23
KR102539475B1 (ko) 2023-06-05
EP3035249A1 (en) 2016-06-22
CN113378113A (zh) 2021-09-10
KR102655386B1 (ko) 2024-04-08
US20230020571A1 (en) 2023-01-19
CN107003989A (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
US12032653B2 (en) Method and apparatus for distributed and cooperative computation in artificial neural networks
CN107003988B (zh) 用于执行卷积运算的存储设备和方法
US11775313B2 (en) Hardware accelerator for convolutional neural networks and method of operation thereof
US20240118892A1 (en) Apparatuses, methods, and systems for neural networks
US20220121917A1 (en) Hardware accelerator template and design framework for implementing recurrent neural networks
US11379229B2 (en) Apparatus and method for adaptable and efficient lane-wise tensor processing
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
US20180225211A1 (en) Processors having virtually clustered cores and cache slices
US11093250B2 (en) Apparatus and method for gang invariant operation optimizations using dynamic evaluation
EP3035203A1 (en) Fine-grain storage interface and method for low power accelerators
KR20180062913A (ko) 라스트 레벨 캐시 성분 또는 신경망 유닛 메모리로서 동작 가능한 메모리 어레이를 가지는 프로세서
US10831505B2 (en) Architecture and method for data parallel single program multiple data (SPMD) execution
CN104603745A (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
US10915328B2 (en) Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency
CN104603746A (zh) 由读和写掩码控制的向量移动指令
CN108805276A (zh) 处理器、用于操作处理器的方法和计算机可用介质
CN104813279A (zh) 用于减少具有步幅式访问模式的向量寄存器中的元素的指令
EP3035205A1 (en) Reconfigurable functional unit and method for artificial neural networks
Wang et al. Advancing DSP into HPC, AI, and beyond: challenges, mechanisms, and future directions

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant