KR20210014056A - 가속화된 심층 학습 - Google Patents
가속화된 심층 학습 Download PDFInfo
- Publication number
- KR20210014056A KR20210014056A KR1020197027495A KR20197027495A KR20210014056A KR 20210014056 A KR20210014056 A KR 20210014056A KR 1020197027495 A KR1020197027495 A KR 1020197027495A KR 20197027495 A KR20197027495 A KR 20197027495A KR 20210014056 A KR20210014056 A KR 20210014056A
- Authority
- KR
- South Korea
- Prior art keywords
- fabric
- neuron
- data
- training
- elements
- Prior art date
Links
- 238000013135 deep learning Methods 0.000 title abstract description 82
- 230000015654 memory Effects 0.000 claims abstract description 282
- 238000012545 processing Methods 0.000 claims abstract description 282
- 238000000034 method Methods 0.000 claims abstract description 256
- 238000012549 training Methods 0.000 claims abstract description 183
- 238000013528 artificial neural network Methods 0.000 claims abstract description 143
- 239000004744 fabric Substances 0.000 claims description 291
- 230000004913 activation Effects 0.000 claims description 201
- 238000001994 activation Methods 0.000 claims description 201
- 210000002569 neuron Anatomy 0.000 claims description 195
- 238000003860 storage Methods 0.000 claims description 99
- 230000004044 response Effects 0.000 claims description 57
- 230000008569 process Effects 0.000 claims description 45
- 238000013507 mapping Methods 0.000 claims description 41
- 230000000977 initiatory effect Effects 0.000 claims description 24
- 238000000638 solvent extraction Methods 0.000 claims description 18
- 238000009825 accumulation Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 abstract description 73
- 230000006872 improvement Effects 0.000 abstract description 12
- 230000002441 reversible effect Effects 0.000 abstract description 9
- 239000010410 layer Substances 0.000 description 230
- 239000013598 vector Substances 0.000 description 194
- 230000009471 action Effects 0.000 description 145
- 230000000903 blocking effect Effects 0.000 description 63
- 230000008878 coupling Effects 0.000 description 61
- 238000010168 coupling process Methods 0.000 description 61
- 238000005859 coupling reaction Methods 0.000 description 61
- 239000000872 buffer Substances 0.000 description 47
- 230000036961 partial effect Effects 0.000 description 33
- 230000006870 function Effects 0.000 description 25
- 239000003086 colorant Substances 0.000 description 21
- 238000001152 differential interference contrast microscopy Methods 0.000 description 14
- 230000010354 integration Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- ACAKNPKRLPMONU-UHFFFAOYSA-N n-[2-(2-methyl-1h-indol-3-yl)ethyl]thiophene-2-carboxamide Chemical compound CC=1NC2=CC=CC=C2C=1CCNC(=O)C1=CC=CS1 ACAKNPKRLPMONU-UHFFFAOYSA-N 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 9
- DWUHGPPFFABTIY-RLWZQHMASA-N platencin Chemical compound C([C@]1(C)C(C=C[C@@]23CC[C@H](C(C3)=C)C[C@H]21)=O)CC(=O)NC1=C(O)C=CC(C(O)=O)=C1O DWUHGPPFFABTIY-RLWZQHMASA-N 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 230000002829 reductive effect Effects 0.000 description 8
- JNTOCHDNEULJHD-UHFFFAOYSA-N Penciclovir Chemical compound N1C(N)=NC(=O)C2=C1N(CCC(CO)CO)C=N2 JNTOCHDNEULJHD-UHFFFAOYSA-N 0.000 description 7
- 238000007667 floating Methods 0.000 description 7
- 230000001133 acceleration Effects 0.000 description 6
- 230000001186 cumulative effect Effects 0.000 description 6
- 210000000225 synapse Anatomy 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 230000006403 short-term memory Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000007405 data analysis Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 235000019800 disodium phosphate Nutrition 0.000 description 4
- 230000001815 facial effect Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 239000002547 new drug Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 102100033045 G-protein coupled receptor 4 Human genes 0.000 description 3
- 101000871138 Homo sapiens G-protein coupled receptor 4 Proteins 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005111 flow chemistry technique Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000012015 optical character recognition Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 229920000747 poly(lactic acid) Polymers 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000017105 transposition Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 235000013599 spices Nutrition 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 241000282326 Felis catus Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 239000004178 amaranth Substances 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000003306 harvesting Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008555 neuronal activation Effects 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Image Analysis (AREA)
Abstract
고급 심층 학습에서의 기법들은 정확도, 성과 및 에너지 효율성, 이를테면 학습 정확도, 예측 정확도, 학습 속도, 학습 성과, 및 학습의 에너지 효율성 중 하나 이상에서의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대한 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 프로세싱 자원들 및 메모리 자원들을 갖는다. 각각의 라우터는 2D 메쉬에서 적어도 가장 가까운 이웃들과 웨이블릿들을 통한 통신을 가능하게 한다. 확률론적 구배 하강, 미니-배치 구배 하강 및 연속적인 전파 구배 하강은 프로세싱 엘리먼트들에 의해 모델링된 뉴럴 네트워크의 가중치들을 트레이닝하는 데 이용가능한 기법들이다. 역 체크포인트(reverse checkpoint)는 트레이닝 동안 메모리 사용을 감소시키는 데 사용가능하다.
Description
[0001]
본 출원의 타입에 의해 허용되는 범위까지, 본 출원은 모든 목적을 위해 하기의 출원들을 인용에 의해 통합하며, 하기의 출원들 모두는 본 발명이 만들어진 때에 본 출원과 함께 공동 소유된다:
2018년 2월 9일에 출원된 미국 가출원 일련번호 제62/628,784호 (Docket No. CS-17-05)(제1 발명자 이름: Sean LIE 및 발명의 명칭: FABRIC VECTORS FOR DEEP LEARNING ACCELERATION);
2018년 2월 9일에 출원된 미국 가출원 일련번호 제62/628,773호 (Docket No. CS-17-12)(제1 발명자 이름: Sean LIE, 및 발명의 명칭: DATA STRUCTURE DESCRIPTORS FOR DEEP LEARNING ACCELERATION);
2017년 11월 1일에 출원된 미국 가출원 일련번호 제62/580,207호 (Docket No. CS-17-01)(제1 발명자 이름: Sean LIE 및 발명의 명칭: NEURON SMEARING FOR ACCELERATED DEEP LEARNING);
2017년 8월 8일에 출원된 미국 가출원 일련번호 제62/542,645호 (Docket No. CS-17-02)(제1 발명자 이름: Sean LIE 및 발명의 명칭: DATAFLOW TRIGGERED TASKS FOR ACCELERATED DEEP LEARNING);
2017년 8월 8일에 출원된 미국 가출원 일련번호 제62/542,657호 (Docket No. CS-17-06)(제1 발명자 이름: Sean LIE 및 발명의 명칭: TASK SYNCHRONIZATION FOR ACCELERATED DEEP LEARNING);
2017년 6월 19일에 출원된 미국 가출원 일련번호 제62/522,065호 (Docket No. CS-17-03)(제1 발명자 이름: Sean LIE 및 발명의 명칭: WAVELET REPRESENTATION FOR ACCELERATED DEEP LEARNING);
2017년 6월 19일에 출원된 미국 가출원 일련번호 제62/522,081호 (Docket No. CS-17-04)(제1 발명자 이름: Sean LIE 및 발명의 명칭: CONTROL WAVELET FOR ACCELERATED DEEP LEARNING);
2017년 6월 15일에 출원된 미국 가출원 일련번호 제62/520,433호 (Docket No. CS-17-13B)(제1 발명자 이름: Michael Edwin JAMES 및 발명의 명칭: INCREASED CONCURRENCY AND EFFICIENCY OF DEEP NETWORK TRAINING VIA CONTINUOUS PROPAGATION);
2017년 6월 11일에 출원된 미국 가출원 일련번호 제62/517,949호 (Docket No. CS-17-14B)(제1 발명자 이름: Sean LIE 및 발명의 명칭: ACCELERATED DEEP LEARNING);
2017년 4월 17일에 출원된 미국 가출원 일련번호 제62/486,372호 (Docket No. CS-17-14)(제1 발명자 이름: Sean LIE 및 발명의 명칭: ACCELERATED DEEP LEARNING); 및
2017년 2월 23일에 출원된 미국 가출원 일련번호 제62/462,640호 (Docket No. CS-17-13)(제1 발명자 이름 Michael Edwin JAMES 및 발명의 명칭: INCREASED CONCURRENCY AND EFFICIENCY OF DEEP NETWORK TRAINING VIA CONTINUOUS PROPAGATION).
[0002]
분야: 정확도, 성과 및 에너지 효율성 중 하나 이상을 개선시키기 위해서는 가속화된 심층 학습의 발전들이 필요하다.
[0003]
관련 기술 : 공개적으로 또는 잘 알려진 것으로 명확하게 식별되지 않는 한, 문맥, 정의들 또는 비교 목적들을 포함하여 본원에서 기법들 및 개념들에 대한 언급은 그러한 기법들 및 개념들이 이전에 공개적으로 알려져 있거나 또는 그렇지 않으면 종래기술의 일부라는 것을 인정하는 것으로 해석되어서는 안된다. 이로써, 특허들, 특허 출원들 및 공개물들을 포함하여 본원에서 인용된 모든 참고문헌들(존재하는 경우)은 구체적으로 통합되든지 통합되지 않든지 간에 모든 목적들을 위해 그들 전체가 인용에 의해 통합된다.
개요(SYNOPSIS)
[0004]
본 발명은 다양한 방식들로, 예컨대 프로세스, 제조 물품, 장치, 시스템, 물질의 조성 및 컴퓨터 판독가능 매체, 이를테면 컴퓨터 판독가능 저장 매체(예컨대, 디스크와 같은 광학 및/또는 자기 대용량 저장 디바이스, 플래시 스토리지와 같은 비-휘발성 스토리지를 갖는 집적회로의 매체들), 또는 프로그램 명령들이 광학 또는 전자 통신 링크들을 통해 전송되는 컴퓨터 네트워크로서 구현될 수 있다. 상세한 설명은 앞서 식별된 분야에서 비용, 수익성, 성과, 효율성 및 사용의 유용성의 개선들을 가능하게 하는 본 발명의 하나 이상의 실시예들의 설명을 제공한다. 상세한 설명은 상세한 설명의 나머지 부분의 이해를 돕기 위한 도입부를 포함한다. 도입부는 본원에서 설명된 개념들에 따른 시스템들, 방법들, 제조 물품 및 컴퓨터 판독가능 매체들 중 하나 이상의 예시적인 실시예들을 포함한다. 결론에서 보다 상세하게 논의되는 바와 같이, 본 발명은 허여된 청구항들의 범위내에서 모든 가능한 수정들 및 변형들을 포괄한다.
[0005]
도 1은 심층 학습 가속기(deep learning accelerator)를 사용하는 뉴럴 네트워크 트레이닝 (neural network training) 및 추론(inference)을 위한 시스템의 실시예의 선택된 세부사항들을 예시한다.
[0006] 도 2는 심층 학습 가속기를 사용하는 뉴럴 네트워크 트레이닝 및 추론과 연관된 소프트웨어 엘리먼트들의 실시예의 선택된 세부사항들을 예시한다.
[0007] 도 3은 심층 학습 가속기를 사용하여, 뉴럴 네트워크를 트레이닝하는 것과 연관된 프로세싱을 하고 트레이닝된 뉴럴 네트워크를 사용하는 추론을 수행하는 실시예의 선택된 세부사항들을 예시한다.
[0008] 도 4는 심층 학습 가속기의 실시예의 선택된 세부사항들을 예시한다.
[0009] 도 5는 심층 학습 가속기의 프로세싱 엘리먼트의 실시예의 선택된 세부사항들을 예시한다.
[0010] 도 6은 프로세싱 엘리먼트의 라우터의 실시예의 선택된 세부사항들을 예시한다.
[0011] 도 7은 프로세싱 엘리먼트의 라우터와 연관된 프로세싱의 실시예의 선택된 세부사항들을 예시한다.
[0012] 도 8은 프로세싱 엘리먼트의 컴퓨트 엘리먼트(compute element)의 실시예의 선택된 세부사항들을 예시한다.
[0013] 도 9는 태스크 개시를 위한 웨이블릿(wavelet)을 프로세싱하는 실시예의 선택된 세부사항들을 예시한다.
[0014] 도 10은 프로세싱 엘리먼트의 컴퓨트 엘리먼트와 연관된 명령 프로세싱의 실시예의 선택된 세부사항들을 예시한다.
[0015] 도 11은 클로즈아웃(closeout)들을 통해 의존성 관리(dependency management)와 연관된 흐름의 실시예의 선택된 세부사항들을 예시한다.
[0016] 도 12는 활성화 누적(activation accumulation) 및 클로즈아웃과 이후 부분 합 컴퓨테이션(partial sum computation) 및 클로즈아웃과 연관된 흐름의 실시예의 선택된 세부사항들을 예시한다.
[0017] 도 13a는 희소 웨이블릿(sparse wavelet)의 실시예의 선택된 세부사항들을 예시한다.
[0018] 도 13b는 밀집 웨이블릿(dense wavelet)의 실시예의 선택된 세부사항들을 예시한다.
[0019] 도 14는 웨이블릿을 생성 및 송신하는 실시예의 선택된 세부사항들을 예시한다.
[0020] 도 15a는 웨이블릿을 수신하는 실시예의 선택된 세부사항들을 예시한다.
[0021] 도 15b는 웨이블릿을 소비하는 실시예의 선택된 세부사항들을 예시한다.
[0022] 도 16은 차단 명령(block instruction) 및 비차단 명령(unblock instruction) 실행의 실시예의 선택된 세부사항들을 예시한다.
[0023] 도 17은 뉴럴 네트워크의 실시예의 선택된 세부사항들을 예시한다.
[0024] 도 18a는 뉴런들로의 프로세싱 엘리먼트들의 할당의 제1 실시예의 선택된 세부사항들을 예시한다.
[0025] 도 18b는 뉴런들로의 프로세싱 엘리먼트들의 할당의 제2 실시예의 선택된 세부사항들을 예시한다.
[0026] 도 19는 복수의 프로세싱 엘리먼트들에 걸쳐 뉴런을 스미어링하는 실시예의 선택된 세부사항들을 예시한다.
[0027] 도 20은 분할 뉴런들의 부분들 간의 통신의 실시예의 선택된 세부사항들을 예시한다.
[0028] 도 21a는 패브릭 입력 데이터 구조 설명자(Fabric Input Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0029] 도 21b는 패브릭 출력 데이터 구조 설명자(Fabric Output Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0030] 도 21c는 1D 메모리 벡터 데이터 구조 설명자(Memory Vector Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0031] 도 21d는 4D 메모리 벡터 데이터 구조 설명자의 실시예의 선택된 세부사항들을 예시한다.
[0032] 도 21e는 원형 메모리 버퍼 데이터 구조 설명자(Circular Memory Buffer Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0033] 도 22a는 원형 메모리 버퍼 확장 데이터 구조 설명자(Circular Memory Buffer Extended Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0034] 도 22b는 4D 메모리 벡터 확장 데이터 구조 설명자의 실시예의 선택된 세부사항들을 예시한다.
[0035] 도 23은 데이터 구조 설명자들에 따라 피연산자(operand)들에 액세스하는 선택된 세부사항들을 예시한다.
[0036] 도 24는 데이터 구조 설명자를 디코딩하는 실시예의 선택된 세부사항들을 예시한다.
[0037] 도 25a는 다중 피연산자 명령의 실시예의 선택된 세부사항들을 예시한다.
[0038] 도 25b는 하나의 소스, 0개의 목적지(no destination) 피연산자 명령의 실시예의 선택된 세부사항들을 예시한다.
[0039] 도 25c는 즉각적 명령(immediate instruction)의 실시예의 선택된 세부사항들 예시한다.
[0040] 도 26a는 SGC(Stochastic Gradient Descent)에 대한 파이프라인 흐름의 실시예를 예시한다.
[0041] 도 26b는 MBGD(Mini-Batch Gradient Descent)를 위한 파이프라인 흐름의 실시예를 예시한다.
[0042] 도 26c는 CPGD(Continuous Propagation Gradient Descent)를 위한 파이프라인 흐름의 실시예를 예시한다.
[0043] 도 26d는 RCP(Reverse CheckPoint)를 가진 CPGD(Continuous Propagation Gradient Descent)을 위한 파이프라인 흐름의 실시예를 예시한다.
[0044] 도 27a 내지 도 27e는 SGD, MBGD, CPGD 및 RCP 프로세싱에 따른 포워드 패스(forward pass) 및 백워드 패스(backward pass) 실시예들의 다양한 양상들을 예시한다.
[0045] 도 28a는 벡터(v)를 곱한 행렬(m)의 일반 연산(generic operation)을 예시한다.
[0046] 도 28b는 포워드 패스, 델타 패스(delta pass) 및 체인 패스(chain pass)에 사용되는 메모리 구조들의 다양한 표현들을 예시한다.
[0047] 도 29는 포워드 패스 상태 머신에서 사용되는 태스크들의 실시예를 예시한다.
[048] 도면들에서 참조 부호들의 리스트
[0006] 도 2는 심층 학습 가속기를 사용하는 뉴럴 네트워크 트레이닝 및 추론과 연관된 소프트웨어 엘리먼트들의 실시예의 선택된 세부사항들을 예시한다.
[0007] 도 3은 심층 학습 가속기를 사용하여, 뉴럴 네트워크를 트레이닝하는 것과 연관된 프로세싱을 하고 트레이닝된 뉴럴 네트워크를 사용하는 추론을 수행하는 실시예의 선택된 세부사항들을 예시한다.
[0008] 도 4는 심층 학습 가속기의 실시예의 선택된 세부사항들을 예시한다.
[0009] 도 5는 심층 학습 가속기의 프로세싱 엘리먼트의 실시예의 선택된 세부사항들을 예시한다.
[0010] 도 6은 프로세싱 엘리먼트의 라우터의 실시예의 선택된 세부사항들을 예시한다.
[0011] 도 7은 프로세싱 엘리먼트의 라우터와 연관된 프로세싱의 실시예의 선택된 세부사항들을 예시한다.
[0012] 도 8은 프로세싱 엘리먼트의 컴퓨트 엘리먼트(compute element)의 실시예의 선택된 세부사항들을 예시한다.
[0013] 도 9는 태스크 개시를 위한 웨이블릿(wavelet)을 프로세싱하는 실시예의 선택된 세부사항들을 예시한다.
[0014] 도 10은 프로세싱 엘리먼트의 컴퓨트 엘리먼트와 연관된 명령 프로세싱의 실시예의 선택된 세부사항들을 예시한다.
[0015] 도 11은 클로즈아웃(closeout)들을 통해 의존성 관리(dependency management)와 연관된 흐름의 실시예의 선택된 세부사항들을 예시한다.
[0016] 도 12는 활성화 누적(activation accumulation) 및 클로즈아웃과 이후 부분 합 컴퓨테이션(partial sum computation) 및 클로즈아웃과 연관된 흐름의 실시예의 선택된 세부사항들을 예시한다.
[0017] 도 13a는 희소 웨이블릿(sparse wavelet)의 실시예의 선택된 세부사항들을 예시한다.
[0018] 도 13b는 밀집 웨이블릿(dense wavelet)의 실시예의 선택된 세부사항들을 예시한다.
[0019] 도 14는 웨이블릿을 생성 및 송신하는 실시예의 선택된 세부사항들을 예시한다.
[0020] 도 15a는 웨이블릿을 수신하는 실시예의 선택된 세부사항들을 예시한다.
[0021] 도 15b는 웨이블릿을 소비하는 실시예의 선택된 세부사항들을 예시한다.
[0022] 도 16은 차단 명령(block instruction) 및 비차단 명령(unblock instruction) 실행의 실시예의 선택된 세부사항들을 예시한다.
[0023] 도 17은 뉴럴 네트워크의 실시예의 선택된 세부사항들을 예시한다.
[0024] 도 18a는 뉴런들로의 프로세싱 엘리먼트들의 할당의 제1 실시예의 선택된 세부사항들을 예시한다.
[0025] 도 18b는 뉴런들로의 프로세싱 엘리먼트들의 할당의 제2 실시예의 선택된 세부사항들을 예시한다.
[0026] 도 19는 복수의 프로세싱 엘리먼트들에 걸쳐 뉴런을 스미어링하는 실시예의 선택된 세부사항들을 예시한다.
[0027] 도 20은 분할 뉴런들의 부분들 간의 통신의 실시예의 선택된 세부사항들을 예시한다.
[0028] 도 21a는 패브릭 입력 데이터 구조 설명자(Fabric Input Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0029] 도 21b는 패브릭 출력 데이터 구조 설명자(Fabric Output Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0030] 도 21c는 1D 메모리 벡터 데이터 구조 설명자(Memory Vector Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0031] 도 21d는 4D 메모리 벡터 데이터 구조 설명자의 실시예의 선택된 세부사항들을 예시한다.
[0032] 도 21e는 원형 메모리 버퍼 데이터 구조 설명자(Circular Memory Buffer Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0033] 도 22a는 원형 메모리 버퍼 확장 데이터 구조 설명자(Circular Memory Buffer Extended Data Structure Descriptor)의 실시예의 선택된 세부사항들을 예시한다.
[0034] 도 22b는 4D 메모리 벡터 확장 데이터 구조 설명자의 실시예의 선택된 세부사항들을 예시한다.
[0035] 도 23은 데이터 구조 설명자들에 따라 피연산자(operand)들에 액세스하는 선택된 세부사항들을 예시한다.
[0036] 도 24는 데이터 구조 설명자를 디코딩하는 실시예의 선택된 세부사항들을 예시한다.
[0037] 도 25a는 다중 피연산자 명령의 실시예의 선택된 세부사항들을 예시한다.
[0038] 도 25b는 하나의 소스, 0개의 목적지(no destination) 피연산자 명령의 실시예의 선택된 세부사항들을 예시한다.
[0039] 도 25c는 즉각적 명령(immediate instruction)의 실시예의 선택된 세부사항들 예시한다.
[0040] 도 26a는 SGC(Stochastic Gradient Descent)에 대한 파이프라인 흐름의 실시예를 예시한다.
[0041] 도 26b는 MBGD(Mini-Batch Gradient Descent)를 위한 파이프라인 흐름의 실시예를 예시한다.
[0042] 도 26c는 CPGD(Continuous Propagation Gradient Descent)를 위한 파이프라인 흐름의 실시예를 예시한다.
[0043] 도 26d는 RCP(Reverse CheckPoint)를 가진 CPGD(Continuous Propagation Gradient Descent)을 위한 파이프라인 흐름의 실시예를 예시한다.
[0044] 도 27a 내지 도 27e는 SGD, MBGD, CPGD 및 RCP 프로세싱에 따른 포워드 패스(forward pass) 및 백워드 패스(backward pass) 실시예들의 다양한 양상들을 예시한다.
[0045] 도 28a는 벡터(v)를 곱한 행렬(m)의 일반 연산(generic operation)을 예시한다.
[0046] 도 28b는 포워드 패스, 델타 패스(delta pass) 및 체인 패스(chain pass)에 사용되는 메모리 구조들의 다양한 표현들을 예시한다.
[0047] 도 29는 포워드 패스 상태 머신에서 사용되는 태스크들의 실시예를 예시한다.
[048] 도면들에서 참조 부호들의 리스트
[0049]
본 발명의 하나 이상의 실시예들의 상세한 설명은 본 발명의 선택된 세부사항들을 예시하는 첨부 도면들과 함께 이하에 제공된다. 본 발명은 실시예들과 관련하여 설명된다. 본원의 실시예들은 단지 예시적인 것으로 이해되며, 본 발명은 본원의 실시예들의 일부 또는 모두에 의해 또는 이들 일부 또는 모두로 명백하게 제한되지 않으며, 본 발명은 다수의 대안들, 수정들 및 등가물들을 포괄한다. 설명의 단조로움을 피하기 위해, 다양한 단어 라벨들(이를테면: 제1, 마지막, 특정, 다양한, 추가, 다른, 특정, 선택, 일부 및 현저한)이 실시예들의 별개의 세트들에 적용될 수 있으며; 본원에서 사용되는 바와 같이, 이러한 라벨들은 우수성, 또는 임의의 형태의 선호도 또는 선입견을 전달하는 것으로 명백하게 의도되는 것이 아니라 오로지 별개의 세트들 간을 편리하게 구별하기 위해 의도된다. 개시된 프로세스들의 일부 동작들의 순서는 본 발명의 범위내에서 변경가능하다. 다수의 실시예들이 프로세스, 시스템 및/또는 프로그램 명령 피처들의 변형들을 설명하는 역할을 할 때마다, 미리 결정된 또는 동적으로 결정된 기준에 따라, 복수의 다중 실시예들에 각각 대응하는 복수의 동작 모드들 중 하나의 동작 모드의 정적 및/또는 동적 선택을 수행하는 다른 실시예들이 고려된다. 본 발명의 철저한 이해를 제공하기 위해 다음의 설명에서 다수의 특정 세부사항들이 설명된다. 세부사항들은 예시의 목적으로 제공되며, 본 발명은 세부사항들의 일부 또는 전부 없이 청구항들에 따라 실시될 수 있다. 명확성을 위해, 본 발명과 관련된 기술 분야들에서 알려진 기술 자료는 본 발명이 불필요하게 모호해지지 않도록 상세하게 설명되지 않았다.
도입부
[0050]
본 도입부는 상세한 설명에 대한 보다 빠른 이해를 돕기 위해서만 포함되며; 본 발명은 임의의 도입부의 단락들이 반드시 전체 주제의 요약된 견해이고 철저하거나 제한적인 설명인 것으로 의도되지 않기 때문에 도입부에서 제시된 개념들(존재하는 경우, 명시적인 예들을 포함함)로 제한되지 않는다. 예컨대, 이하의 도입부는 단지 특정 실시예들로 공간 및 조직에 의해 제한되는 개요 정보를 제공한다. 청구항들이 궁극적으로 도출될 것들을 포함하며 명세서의 나머지 전반에 걸쳐 논의되는 많은 다른 실시예들이 존재한다.
[0051]
가속화된 심층 학습에 대한 연속적 전파와 개념상으로 관련된 양상에서, 고급 심층 학습(advanced deep learning)의 기법들은 정확도, 성과 및 에너지 효율성, 이를테면 학습 정확도, 예측 정확도, 학습 속도, 학습 성과 및 학습의 에너지 효율성 중 하나 이상의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대해 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 프로세싱 자원들 및 메모리 자원들을 갖는다. 각각의 라우터는 2D 메쉬(mesh)에서 적어도 가장 가까운 이웃들과 웨이블릿들을 통해 통신을 가능하게 한다. 확률론적 구배 하강(stochastic gradient descent), 미니-배치 구배 하강(mini-batch gradient descent), 및 연속적인 전파 구배 하강(continuous propagation gradient descent)은 프로세싱 엘리먼트들에 의해 모델링된 뉴럴 네트워크의 가중치들을 트레이닝하는 데 사용가능한 기법들이다. 트레이닝 동안 메모리 사용을 감소시키기 위해 역 체크포인트(reverse checkpoint)가 사용가능하다.
[0052]
가속화된 심층 학습에 대한 패브릭 벡터들과 개념상으로 관련된 양상에서, 고급 심층 학습의 기법들은 정확도, 성과 및 에너지 효율성 중 하나 이상의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대해 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 메모리를 갖는다. 각각의 라우터는 2D 메쉬에서 적어도 가장 가까운 이웃들과 웨이블릿들을 통해 통신을 가능하게 한다. 라우팅은 각각의 라우터에서 각각의 웨이블릿 및 라우팅 구성 정보의 개별 가상 채널 지정자(specifier)들에 의해 제어된다. 컴퓨트 엘리먼트에 의해 실행되는 명령들은 하나 이상의 피연산자 지정자들을 포함하며, 하나 이상의 피연산자 지정자들 중 일부는 데이터 구조 설명자를 저장하는 데이터 구조 레지스터를 지정한다. 데이터 구조 설명자는 피연산자를 패브릭 벡터 또는 메모리 벡터로서 설명하다. 데이터 구조 설명자는 패브릭 벡터의 길이, 패브릭 벡터가 마이크로쓰레딩에 적합한지 여부, 및 병렬로 수신, 송신 및/또는 프로세싱하기 위한 패브릭 벡터의 데이터 엘리먼트들의 수를 추가로 설명한다. 데이터 구조 설명자는 패브릭 벡터를 프로세싱하는 것, 제어 웨이블릿을 수신할 때 종결할지 여부 및 발신 웨이블릿을 제어 웨이블릿으로서 마크할지 여부에 관한 가상 채널 및 태스크 식별 정보을 추가로 지정한다.
[0053]
가속화된 심층 학습에 대한 데이터 구조 설명자들과 개념상으로 관련된 양상에서, 고급 심층 학습의 기법들은 정확도, 성과 및 에너지 효율성 중 하나 이상의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대해 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 메모리를 갖는다. 각각의 라우터는 2D 메쉬에서 적어도 가장 가까운 이웃들과 웨이블릿들을 통해 통신을 가능하게 한다. 라우팅은 각각의 라우터에서 각각의 웨이블릿 및 라우팅 구성 정보의 개별 가상 채널 지정자들에 의해 제어된다. 컴퓨트 엘리먼트에 의해 실행되는 명령들은 하나 이상의 피연산자 지정자들을 포함하며, 하나 이상의 피연산자 지정자들 중 일부는 데이터 구조 설명자를 저장하는 데이터 구조 레지스터를 지정한다. 데이터 구조 설명자는 피연산자를 패브릭 벡터 또는 메모리 벡터로서 설명하다. 데이터 구조 설명자는 메모리 벡터를 1-차원 벡터, 4-차원 벡터 또는 원형 버퍼 벡터 중 하나로서 추가로 설명한다. 임의적으로, 데이터 구조 설명자는 확장 데이터 구조 설명자를 저장하는 확장 데이터 구조 레지스터를 지정한다. 확장 데이터 구조 설명자는 4-차원 벡터 또는 원형 버퍼 벡터와 관련된 파라미터들을 지정한다.
[0054]
가속화된 심층 학습에 대한 뉴런 스미어링(neuron smearing)과 개념상으로 관련된 양상에서, 고급 심층 학습의 기법들은 정확도, 성과 및 에너지 효율성 중 하나 이상의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대해 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 메모리를 갖는다. 각각의 라우터는 2D 메쉬에서 적어도 가장 가까운 이웃들과 웨이블릿들을 통해 통신을 가능하게 한다. 라우팅은 각각의 라우터에서 각각의 웨이블릿 및 라우팅 구성 정보의 개별 가상 채널 지정자들에 의해 제어된다. 적어도 제1 단일 뉴런은 복수의 어레이의 프로세싱 엘리먼트들의 자원들을 사용하여 구현된다. 제2 뉴런 중 적어도 일부는 복수의 프로세싱 엘리먼트들의 중 하나 이상의 엘리먼트의 자원들을 사용하여 구현된다. 일부 사용 시나리오들에서, 전술한 뉴런 구현은 단일 뉴런이 프로세싱 엘리먼트들에 대한 인입 활성화의 집약성을 유지하면서 프로세싱 엘리먼트들에 걸쳐 다수의 프로세싱 엘리먼트들의 컴퓨테이셔널 자원들 및/또는 컴퓨테이셔널 로드 밸런싱(computational load balancing)을 사용하는 것을 가능하게 함으로써 더 큰 성과를 가능하게 한다.
[0055]
가속화된 심층 학습에 대한 태스크 동기화와 개념상으로 관련된 양상에서, 고급 심층 학습의 기법들은 정확도, 성과 및 에너지 효율성 중 하나 이상의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대해 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 메모리를 갖는다. 각각의 라우터는 2D 메쉬에서 적어도 가장 가까운 이웃들과 웨이블릿들을 통해 통신을 가능하게 한다. 라우팅은 각각의 라우터에서 각각의 웨이블릿 및 라우팅 구성 정보의 개별 가상 채널 지정자들에 의해 제어된다. 컴퓨트 엘리먼트들 중 특정 컴퓨트 엘리먼트는 가상 채널들 중 특정 채널을 지정하는 이전에 수신된 웨이블릿을 태스크 개시를 위해 조건부로 선택한다. 조건부 선택은 특정 가상 채널에 대해 유지된 적어도 차단/비차단 상태가 비차단 상태에 있을 때까지 선택을 위해 이전에 수신된 웨이블릿을 배제한다. 컴퓨트 엘리먼트들은 차단/비차단 상태를 수정하기 위해 차단/비차단 명령들을 실행한다.
[0056]
가속화된 심층 학습에 대한 데이터 흐름 트리거링된 태스크들과 개념상으로 관련된 양상에서, 고급 심층 학습의 기법들은 정확도, 성과 및 에너지 효율성 중 하나 이상의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대해 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 메모리를 갖는다. 각각의 라우터는 2D 메쉬에서 적어도 가장 가까운 이웃들과 웨이블릿들을 통해 통신을 가능하게 한다. 라우팅은 각각의 라우터에서 각각의 웨이블릿 및 라우팅 구성 정보의 개별 가상 채널 지정자들에 의해 제어된다. 컴퓨트 엘리먼트들 중 특정 엘리먼트는 특정 가상 채널 지정자와 특정 데이터 엘리먼트를 포함하는 특정 웨이블릿을 수신하다. 명령들은 특정 가상 채널 지정자에 적어도 부분적으로 기초하여 특정 컴퓨트 엘리먼트의 메모리로부터 판독된다. 특정 데이터 엘리먼트는 명령들 중 적어도 하나를 실행하기 위한 입력 피연산자로서 사용된다.
[0057]
가속화된 심층 학습에 대한 제어 웨이블릿과 개념상으로 관련된 양상에서, 고급 심층 학습의 기법들은 정확도, 성과 및 에너지 효율성 중 하나 이상의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대해 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 메모리를 갖는다. 각각의 라우터는 2D 메쉬에서 적어도 가장 가까운 이웃들과 웨이블릿들을 통해 통신을 가능하게 한다. 컴퓨트 엘리먼트들 중 특정 엘리먼트는 웨이블릿을 수신하다. 만일 웨이블릿의 제어 지정자가 제1 값이면, 웨이블릿의 인덱스 지정자에 따라 특정 컴퓨트 엘리먼트의 메모리로부터 명령들이 판독된다. 만일 제어 지정자가 제2 값이면, 웨이블릿의 가상 채널 지정자에 따라 특정 컴퓨트 엘리먼트의 메모리로부터 명령들이 판독된다. 이어서, 특정 컴퓨트 엘리먼트가 명령들의 실행을 개시한다.
[0058]
가속화된 심층 학습에 대한 웨이블릿 표현과 개념상으로 관련된 양상에서, 고급 심층 학습의 기법들은 정확도, 성과 및 에너지 효율성 중 하나 이상의 개선들을 제공한다. 프로세싱 엘리먼트들의 어레이는 데이터의 웨이블릿들에 대해 흐름-기반 컴퓨테이션들을 수행한다. 각각의 프로세싱 엘리먼트는 개별 컴퓨트 엘리먼트 및 개별 라우팅 엘리먼트를 갖는다. 각각의 컴퓨트 엘리먼트는 전용 스토리지를 갖는다. 각각의 라우터는 2D 메쉬에서 적어도 가장 가까운 이웃들과 통신을 가능하게 한다. 통신은 인덱스 지정자, 가상 채널 지정자, 인덱스 지정자, 데이터 엘리먼트 지정자 및 임의적 제어/데이터 지정자를 포함하는 표현에 따라 웨이블릿들을 통해 이루어진다. 가상 채널 지정자와 인덱스 지정자는 하나 이상의 명령들과 연관된다. 인덱스 지정자는 하나 이상의 명령들 중 적어도 제1 명령 피연산자와 연관된다. 데이터 엘리먼트는 하나 이상의 명령들 중 적어도 제2 명령 피연산자와 연관된다.
[0059]
가속화된 심층 학습의 제1 예는 심층 학습 가속기를 사용하여 뉴럴 네트워크를 트레이닝하는 것이다. 가속화된 심층 학습의 제2 예는 심층 학습 가속기를 사용하여 트레이닝된 뉴럴 네트워크를 동작시켜서 추론들을 수행하는 것이다. 가속화된 심층 학습의 제3 예는 심층 학습 가속기를 사용하여 뉴럴 네트워크를 트레이닝하고 이어서 트레이닝된 뉴럴 네트워크, 그것으로부터의 정보, 및 그것의 변형 중 임의의 하나 이상을 이용해 추론을 수행하는 것이다.
[0060]
뉴럴 네트워크들의 예들은 FCNN(Fully Connected Neural network)들, RNN(Recurrent Neural network)들, CNN(Convolutional Neural network)들, LSTM(Long Short-Term Memory) 네트워크들, 오토인코더들, 심층 신뢰 네트워크(deep belief network)들, 및 생산적 적대 네트워크(generative adversarial network)들을 포함한다.
[0061]
뉴럴 네트워크를 트레이닝하는 예는, 이를테면 심층 학습 가속기를 통한 하드웨어 가속에 의해서, 뉴럴 네트워크와 연관된 하나 이상의 가중치들을 결정하는 것이다. 추론을 수행하는 예는 트레이닝된 뉴럴 네트워크와 연관된 가중치들에 기반하여 입력 데이터를 프로세싱함으로써 결과들을 컴퓨팅하기 위해 그 트레이닝된 뉴럴 네트워크를 사용하는 것이다.
[0062]
뉴럴 네트워크는 뉴런들의 레이어(layer)들을 포함하는 데이터 흐름 그래프에 따라 데이터를 프로세싱한다. 자극(예컨대, 입력 데이터)이 뉴런들의 입력 레이어에 의해 수신되고, 데이터 흐름 그래프의 컴퓨팅된 결과들(예컨대, 출력 데이터)이 뉴런들의 출력 레이어에 의해 제공된다. 예시적인 뉴런들의 레이어들은 입력 레이어들, 출력 레이어들, 정류된 선형 유닛 레이어들, 전체 연결된(fully connected) 레이어들, 순환 레이어들, 장단기 메모리(Long Short-Term Memory) 레이어들, 콘볼루션 레이어들, 커널 레이어들, 드롭아웃(dropout) 레이어들, 및 풀링(pooling) 레이어들을 포함한다. 뉴럴 네트워크는 하드웨어 가속에 따라, 조건부로 그리고/또는 선택적으로 트레이닝된다. 트레이닝된 이후에, 뉴럴 네트워크는 하드웨어 가속에 따라, 추론을 위해 조건부로 그리고/또는 선택적으로 사용된다.
[0063]
심층 학습 가속기의 예는, 뉴럴 네트워크를 트레이닝하기 위해 그리고/또는 상대적으로 적은 특화된 하드웨어 엘리먼트들을 사용하는 것보다 상대적으로 더 효율적으로 뉴럴 네트워크를 통해 추론을 수행하기 위해, 하나 이상의 소프트웨어 엘리먼트들과 함께 동작하는 하나 이상의 비교적 특화된 하드웨어 엘리먼트들이다. 상대적으로 특화된 하드웨어 엘리먼트들의 일부 구현들은, 이를테면 커스텀 논리, 합성 논리, ASIC들, 및/또는 FPGA들을 통해 구현되는 하나 이상의 하드웨어 논리 회로 엘리먼트들, 이를테면 트랜지스터들, 저항기들, 인덕터들, 커패시터들, 와이어 상호연결부들, 조합 논리(예컨대, NAND, NOR) 게이트들, 래치들, 레지스터 파일들, 메모리 어레이들, 메모리 어레이들에 대한 태그들, 콘텐츠-어드레스가능 메모리들, 플래시, ROM, DRAM, SRAM, SerDes(Serializer/Deserializer), I/O 드라이버들 등을 포함한다. 상대적으로 더 적은 특화된 하드웨어 엘리먼트들 중 일부는 종래의 CPU들 및 종래의 GPU들을 포함한다.
[0064]
심층 학습 가속기의 예시적인 구현은 뉴럴 네트워크의 트레이닝을 위해 수행되는 컴퓨테이션들 및/또는 뉴럴 네트워크를 통한 추론에 따라 데이터 흐름을 프로세싱하는 것이 가능하다. 일부 심층 학습 가속기들은, 패브릭을 통해 커플링되고 패브릭을 통해 서로 통신하는 것이 가능한 프로세싱 엘리먼트들을 포함한다. 때로는, 프로세싱 엘리먼트들 및 패브릭이 프로세싱 엘리먼트들의 패브릭으로서 집합적으로 지칭된다.
[0065]
프로세싱 엘리먼트의 예시적인 구현은 웨이블릿들을 통신하고 프로세싱하는 것이 가능하다. 다양한 환경들에서, 웨이블릿들은 뉴럴 네트워크의 트레이닝 및/또는 뉴럴 네트워크를 사용한 추론을 위해 수행되는 컴퓨테이션들을 가능하게 하는 통신 및/또는 프로세싱에 따른 데이터 흐름 및/또는 명령 흐름에 대응한다.
[0066]
예시적인 프로세싱 엘리먼트는 패브릭을 통해 웨이블릿들을 통신하기 위한 라우터 및 웨이블릿들을 프로세싱하기 위한 컴퓨트 엘리먼트를 포함한다. 예시적인 라우터는 복수의 엘리먼트들: 패브릭, 컴퓨트 엘리먼트로의 오프 램프, 및 컴퓨트 엘리먼트로부터의 온 램프에 커플링된다. 라우터와 패브릭 간의 예시적인 커플링은 라우터와 예컨대 4개의 논리적으로 그리고/또는 물리적으로 인접한 프로세싱 엘리먼트들 간의 통신을 가능하게 한다. 라우터는 패브릭 및 온 램프로부터 웨이블릿들을 다양하게 수신한다. 라우터는 패브릭 및 오프 램프에 웨이블릿들을 다양하게 송신한다.
[0067]
컴퓨트 엘리먼트의 예시적인 구현은, 태스크들을 개시하고 웨이블릿들과 연관된 명령들을 실행하고 그리고 웨이블릿들 및/또는 명령들과 연관된 데이터에 액세스함으로써, 웨이블릿들을 프로세싱하는 것이 가능하다. 명령들은 명령 세트 아키텍처에 따르고, 그 명령 세트 아키텍처는 산술 명령들, 제어 흐름 명령들, 데이터 타입 변환 명령들, 구성 명령들, 패브릭 관리 명령들, 및 로드/저장 명령들을 포함한다. 명령들은 다양한 데이터 타입들, 예컨대 다양한 폭들의 정수 데이터 타입들 및 부동 소수점(floating-point) 데이터 타입들을 포함하는 피연산자들에 대해 동작한다. 피연산자들은 스칼라 피연산자들 및 벡터 피연산자들을 다양하게 포함한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 벡터는 뉴럴 네트워크의 가중치들, 뉴럴 네트워크의 입력들 또는 자극, 뉴럴 네트워크의 활성화들, 및/또는 뉴럴 네트워크의 부분 합들을 다양하게 표현한다. 일부 시나리오들에서, 벡터는 희소 벡터(예컨대, 뉴런 활성화들의 벡터)이고, 희소 데이터 엘리먼트들(예컨대, 단지 비-제로 엘리먼트들)을 포함한다. 일부 다른 시나리오들에서, 벡터는 밀집 벡터(예컨대, 픽셀 값들)이고, 조밀 데이터 엘리먼트들(예컨대, 제로 엘리먼트들을 포함한, 벡터의 모든 엘리먼트들)을 포함한다.
[0068]
예시적인 컴퓨트 엘리먼트는, 명령들에 의해 특정된 연산들(예컨대, 산술 연산들, 제어 흐름 연산들, 및 로드/저장 연산들)을 수행함으로써 웨이블릿과 연관된 명령들을 집합적으로 실행하는 하드웨어 엘리먼트들을 포함한다. 하드웨어 엘리먼트들의 예들은 피커 큐(picker queue)들, 피커, 태스크 정의 테이블, 명령 시퀀서, 명령 디코더, 데이터 시퀀서, 레지스터 파일, 메모리, 의사 난수 생성기, 및 ALU를 포함한다. 하드웨어 엘리먼트들의 일부 구현들은 본원 다른 곳에서 설명된 하드웨어 논리 회로 엘리먼트들에 따른다. 때로, 컴퓨트 엘리먼트는 컴퓨트 엔진으로서 지칭된다. 때로, 컴퓨트 스케줄러는 피커로서 지칭되고, 컴퓨트 스케줄러 큐들은 피커 큐들로서 지칭된다.
[0069]
예시적인 패브릭은 프로세싱 엘리먼트들 간의 그리고/또는 단일 프로세싱 엘리먼트 내의 논리적 및/또는 물리적인 커플링들의 수집이다. 패브릭은 논리적 및/또는 물리적 통신 토폴로지들, 이를테면 메쉬, 2D 메쉬, 3D 메쉬, 하이퍼큐브(hypercube), 토러스(torus), 링(ring), 트리(tree), 또는 이들의 임의의 조합을 구현하기 위해 사용가능하다. 프로세싱 엘리먼트들 간의 물리적 커플링의 예는 물리적으로-커플링된 프로세싱 엘리먼트들 간의 물리적 상호연결부들의 세트(임의적 그리고/또는 선택적 버퍼링을 포함함)이다. 물리적으로-커플링된 프로세싱 엘리먼트들의 제1 예는 물리적으로 바로 인접한 프로세싱 엘리먼트들인데, 이를테면 제1 프로세싱 엘리먼트가 제2 프로세싱 엘리먼트의 바로 옆(이를테면, '노스', '사우스', '이스트', 또는 '웨스트')에 위치된다. 물리적으로-커플링된 프로세싱 엘리먼트들의 제2 예는 상대적으로 물리적으로 가까운 프로세싱 엘리먼트들인데, 이를테면 제1 프로세싱 엘리먼트가 상대적으로 작은 수의 개재 프로세싱 엘리먼트들, 예컨대 제2 프로세싱 엘리먼트로부터 멀리 있는 하나 또는 2개의 '행들' 및/또는 '열들' 내에 위치된다. 물리적으로-커플링된 프로세싱 엘리먼트들의 제3 예는 상대적으로 물리적으로 멀리 떨어진 프로세싱 엘리먼트들인데, 이를테면 제1 프로세싱 엘리먼트가 제2 프로세싱 엘리먼트로부터 물리적으로 상대적으로 멀리 떨어져서, 이를테면 프로세싱 엘리먼트들과 연관된 클록 사이클 및/또는 클록 서브-사이클 내에 (임의적 및/또는 선택적 버퍼링을 통해 또는 이를 통하지 않고) 신호 전파에 의해 제한된 거리에 위치된다. (예컨대, 컴퓨트 엘리먼트 및 라우터를 갖는) 단일 프로세싱 엘리먼트 내의 물리적 커플링의 예는 컴퓨트 엘리먼트로부터 라우터로 정보를 출력하는 온 램프 커플링, 및 라우터로부터 컴퓨트 엘리먼트로 정보를 입력하는 오프 램프 커플링이다. 일부 상황들에서, 라우터는 온 램프로부터 오프 램프로 정보를 라우팅한다.
[0070]
프로세싱 엘리먼트들 간의 논리적 커플링의 예는 프로세싱 엘리먼트들 내에서 라우터들에 의해 구현되는 가상 채널이다. 제1 프로세싱 엘리먼트와 제2 프로세싱 엘리먼트 간의 루트가, 예컨대 가상 채널 및 라우팅 구성 정보에 따라 포워딩하는 루트를 따른 프로세싱 엘리먼트들 내의 라우터들에 의해서 구현된다. (예컨대, 라우터를 갖는) 단일 특정 프로세싱 엘리먼트 내의 논리적 커플링의 예는 라우터에 의해 구현되는 가상 채널이고, 이는 특정 프로세싱 엘리먼트가 정보를 가상 채널을 통해서 그 특정 프로세싱 엘리먼트에 전송하는 것을 가능하게 한다. 라우터는 가상 채널 및 라우팅 구성 정보에 따라 특정 프로세싱 엘리먼트에 대해 "내부적으로" 포워딩한다.
[0071]
예시적인 웨이블릿은 패브릭을 통해 프로세싱 엘리먼트들 간에 통신되는 정보의 번들이다. 예시적인 웨이블릿은 웨이블릿 페이로드 및 컬러를 포함한다. 웨이블릿 페이로드는 데이터를 포함하고, 명령들과 연관된다. 프로세싱 엘리먼트의 컴퓨트 엘리먼트에 의해 수신되는 웨이블릿에 대한 제1 응답은 이를테면 웨이블릿과 연관된 명령들의 프로세싱에 대응하는 태스크를 개시하는 컴퓨트 엘리먼트를 포함한다. 프로세싱 엘리먼트의 컴퓨트 엘리먼트에 의해 수신되는 웨이블릿에 대한 제2 응답은 웨이블릿의 데이터를 프로세싱하는 컴퓨트 엘리먼트를 포함한다. 웨이블릿들의 예시적인 타입들은 밀집 웨이블릿들 및 희소 웨이블릿들 뿐만 아니라 데이터 웨이블릿들 및 제어 웨이블릿들을 포함한다.
[0072]
웨이블릿들은, 예컨대, 프로세싱 엘리먼트들 간에 통신하기 위해 사용된다. 제1 시나리오에서, 제1 프로세싱 엘리먼트는 웨이블릿들을 제2 프로세싱 엘리먼트에 송신한다. 제2 시나리오에서, 외부 디바이스(예컨대, FPGA)는 웨이블릿들을 프로세싱 엘리먼트에 송신한다. 제3 시나리오에서, 프로세싱 엘리먼트는 웨이블릿들을 외부 디바이스(예컨대, FPGA)에 송신한다.
[0073]
예시적인 가상 채널은, 컬러에 의해 특정되고 예컨대 패브릭 및 하나 이상의 라우터들에 의해서 가능한 하나 이상의 통신 통로들이다. 특정 컬러를 포함하는 웨이블릿은 때로 특정 컬러와 연관된 특정 가상 채널과 연관되는 것으로 지칭된다. 컬러의 제1 예는 2개의 상이한 프로세싱 엘리먼트들 간의 가상 채널을 지정하는 패브릭 컬러이다. 일부 실시예들에서, 패브릭 컬러는 5-비트 정수이다. 컬러의 제2 예는 프로세싱 엘리먼트로부터 프로세싱 엘리먼트로의 가상 채널을 지정하는 로컬 컬러이다. 일부 실시예들에서, 컬러는 6-비트 정수이고, 패브릭 컬러 및 로컬 컬러 중 하나를 지정한다.
[0074]
예시적인 태스크는 웨이블릿에 대한 응답으로 실행된 명령들의 수집을 포함한다. 예시적인 명령은 연산에 따라 프로세싱될 데이터 엘리먼트들의 로케이션들을 지정하는 연산 및 임의적으로는 하나 이상의 피연산자들을 포함한다. 피연산자의 제1 예는 메모리 내의 데이터 엘리먼트들을 지정한다. 피연산자의 제2 예는 패브릭을 통해 통신되는(예컨대, 수신되거나 송신되는) 데이터 엘리먼트들을 지정한다. 데이터 시퀀서의 예는 데이터 엘리먼트들의 로케이션들을 결정한다. 명령 시퀀서의 예는 웨이블릿과 연관된 명령들의 메모리 내에서의 어드레스를 결정한다.
[0075]
예시적인 피커 큐는 컴퓨트 엘리먼트에서의 프로세싱을 위해 패브릭의 오프 램프를 통해 수신되는 웨이블릿들을 홀딩하는 것이 가능하다. 피커의 예는 프로세싱을 위해 피커 큐로부터 웨이블릿을 선택한다.
[0076]
IC(Integrated Circuit)의 예는 반도체 재료의 단일 부분 상에 구현되는 회로의 수집이다. ASIC(Application-Specific Integrated Circuit)의 예는 특정 사용을 위해 설계되는 IC이다. 웨이퍼-스케일 통합의 예는, 예컨대 웨이퍼 전체 또는 실질적으로 전체를 남겨 놓음으로써, 시스템의 엘리먼트로서 웨이퍼의 모든 또는 상당 부분을 사용하여 그 시스템을 구현하는 것이다.
[0077]
일부 실시예들 및/또는 사용 시나리오들에서, 웨이퍼-스케일 통합은 칩간 상호연결부를 통해서 보다는 실리콘 제작 프로세스를 사용하여 형성되는 웨이퍼 상호연결부를 통해서 시스템 내의 다수의 엘리먼트들을 연결하는 것을 가능하게 하고, 그로 인해 향상된 성능, 비용, 신뢰성, 및 에너지 효율성 중 임의의 하나 이상을 향상시킨다. 특정 예로서, 웨이퍼-스케일 통합 기술을 사용하여 구현되는 시스템은 단일 웨이퍼 상에 3 백만개의 PE들을 구현하는 것을 가능하게 하고, PE들 각각은 웨이퍼-스케일 통합 기술 이외의 기술을 사용하여 필적하는 시스템보다 큰, 가장 가까운 물리적 이웃들에 대한 대역폭을 갖는다. 더 큰 대역폭은 웨이퍼-스케일 통합 기술을 사용하여 구현되는 시스템이 그 웨이퍼-스케일 통합 기술 이외의 기술을 사용하여 구현되는 시스템보다 더 큰 뉴럴 네트워크들에 대한 추론들을 상대적으로 효율적으로 트레이닝하고 그리고/또는 수행하는 것을 가능하게 한다.
두문자어
[0078]
여기서 정의된 다양한 단축 약어들(예컨대, 두문자어들)의 적어도 일부는 본원에서 사용되는 특정 엘리먼트들을 지칭한다.
예시적인 실시예들
[0079]
상세한 설명에 대한 도입부를 완료하는데 있어서, 후속하는 것은 "EC(Example Combination)들"로서 명시적으로 열거되는 적어도 일부를 비롯해서 예시적인 실시예들의 수집이어서, 본원에서 설명된 개념들에 따른 다양한 실시예 타입들의 추가의 설명을 제공하고; 이들 예들은 상호 배타적이거나, 총망라적이거나, 제한적인 것으로 의도되지 않고; 본 발명은 이러한 예시적인 실시예들로 제한되지 않고 오히려 발행된 청구항들 및 그것들의 등가물들의 범위 내의 모든 가능한 수정들 및 변형들을 포괄한다.
[0080]
EC100) 시스템으로서,
프로세서 엘리먼트들의 패브릭(fabric)을 포함하고,
각각의 프로세서 엘리먼트는, 데이터 흐름-기반 및 명령-기반 프로세싱을 수행하는 것이 가능한 컴퓨트 엔진 및 패브릭 라우터를 포함하고,
각각의 프로세서 엘리먼트는 패브릭 패킷들을 프로세서 엘리먼트들의 다른 프로세스 엘리먼트들과 선택적으로 통신하고, 그리고
각각의 컴퓨트 엔진은, 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 태스크 지정자 및 가상 채널 지정자에 따라 프로세싱을 선택적으로 수행한다.
[0081]
EC100b) 시스템으로서,
프로세서 엘리먼트들의 패브릭을 포함하고,
각각의 프로세서 엘리먼트는 패브릭 라우터 및 컴퓨트 엔진을 포함하고,
각각의 프로세서 엘리먼트는 패브릭 패킷들을 프로세서 엘리먼트들의 다른 프로세스 엘리먼트들과 선택적으로 통신하고, 그리고
각각의 컴퓨트 엔진은, 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 데이터 흐름 필드 및 명령 필드에 따라 데이터 흐름 프로세싱 및 명령 프로세싱을 선택적으로 각각 수행한다.
[0082]
EC100c) EC100의 시스템에 있어서, 프로세싱은 데이터-흐름 그래프에 따른다.
[0083]
EC100d) EC100의 시스템에 있어서, 최소한의 명령-기반 프로세싱과 함께 데이터 흐름-기반 프로세싱을 주로 포함하는 워크로드(workload)가 실행된다.
[0084]
EC100e) EC100d의 시스템에 있어서, 시스템은 LSTM(Long Short Term Memory) 뉴럴 네트워크 모델을 구현한다.
[0085]
EC100f) EC100의 시스템에 있어서, 최소한의 데이터 흐름-기반 프로세싱과 함께 명령-기반 프로세싱을 주로 포함하는 워크로드가 실행된다.
[0086]
EC100g) EC100의 시스템에 있어서, 시스템은 웨이퍼-스케일 통합을 적어도 부분적으로 사용하여 구현된다.
[0087]
EC100h) EC100의 시스템에 있어서, 프로세서 엘리먼트들의 패브릭은 VLSI 제작을 적어도 부분적으로 사용하여 구현된다.
[0088]
EC101) EC100의 시스템에 있어서, 가상 채널 지정자는 패브릭 내의 독립적 개별 라우팅 경로들을 선택한다.
[0089]
EC101b) EC100의 시스템에 있어서, 가상 채널 지정자는 멀티캐스트를 수행하기 위해서 패브릭 내의 라우팅 경로들을 선택한다.
[0090]
EC101c) EC100의 시스템에 있어서, 가상 채널 지정자는 로드 분할을 수행하기 위해서 패브릭 내의 라우팅 경로들을 선택한다.
[0091]
EC102) EC100의 시스템에 있어서, 태스크 지정자는 수행할 하나 이상의 연산들을 선택한다.
[0092]
EC103) EC100의 시스템에 있어서, 패브릭은 프로세서 엘리먼트들의 2D 어레이를 포함한다.
[0093]
EC103b) EC100의 시스템에 있어서, 패브릭은 전체 연결된, 스타(star), 링, 어레이, 메쉬, 하이퍼큐브, 토러스, 및 트리로 구성되는 그룹으로부터 선택되는 프로세서 엘리먼트 상호연결 토폴로지를 포함한다.
[0094]
EC103c) EC100의 시스템에 있어서, 패브릭은 1D, 2D, 3D, 및 3D보다 큰 디멘션으로 구성되는 그룹으로부터 선택되는 프로세서 엘리먼트 상호연결 토폴로지 디멘션을 포함한다.
[0095]
EC104) EC100의 시스템에 있어서, 시스템은 머신 학습 워크로드를 실행하는 것이 가능하다.
[0096]
EC105) EC100의 시스템에 있어서, 시스템은 추론 애플리케이션을 수행하도록 트레이닝된다.
[0097]
EC105b) EC100의 시스템에 있어서, 시스템은 추론 애플리케이션을 수행한다.
[0098]
EC106) EC100의 시스템에 있어서, 시스템은 오브젝트 분류 및/또는 검출을 수행하도록 트레이닝된 딥 뉴럴 네트워크를 구현한다.
[0099]
EC107) EC100의 시스템에 있어서, 시스템은 텍스트 번역, 공학 문자 인식, 이미지 분류, 안면 인식, 자율-주행 차를 위한 장면 인식, 스피치 인식, 고에너지 물리학을 위한 데이터 분석, 및 신약 발굴로 구성된 그룹으로부터 선택되는 추론 애플리케이션을 수행하도록 트레이닝된 딥 뉴럴 네트워크를 구현한다.
[0100]
EC108) EC100의 시스템에 있어서, 패브릭은 복수의 주변 프로세서 엘리먼트들 및 복수의 내부 프로세서 엘리먼트들로서 조직화되고, 내부 프로세서 엘리먼트들 각각은 복수의 프로세서 엘리먼트들 중 적어도 4개의 다른 프로세서 엘리먼트들에 적어도 4개의 논리 방향들로 각각 커플링된다.
[0101]
EC109) EC100의 시스템에 있어서, 각각의 컴퓨트 엔진은 메모리, 데이터 경로, 및 하이브리드 데이터 흐름 및 명령 실행 제어기를 포함한다.
[0102]
EC110) EC109의 시스템에 있어서, 각각의 컴퓨트 엔진은 복수의 컴퓨트 엔진 파이프라인 스테이지들을 갖는 멀티 스테이지 컴퓨트 엔진 파이프라인에 따라 연산한다.
[0103]
EC111) EC109의 시스템에 있어서, 명령 실행 제어기는 마이크로코드, PLA들, 하나 이상의 카운터들, 및 게이트-레벨 상태 머신 중 하나 이상을 사용하여 구현되는 명령 시퀀서를 포함한다.
[0104]
EC112) EC109의 시스템에 있어서, 각각의 컴퓨트 엔진은 레지스터 파일, 명령 디코더, 명령 캐시, 및 데이터 캐시를 더 포함한다.
[0105]
EC112b) EC109의 시스템에 있어서, 각각의 컴퓨트 엔진은 레지스터 파일, 명령 디코더, 명령 버퍼, 및 데이터 버퍼를 더 포함한다.
[0106]
EC113) EC100의 시스템에 있어서,
각각의 컴퓨트 엔진은, 미리정의된 네이티브 명령 세트의 코드들로부터 선택되는 대응하는 기본 명령을 수신하는 것에 대한 응답으로, 미리정의된 세트의 기본 연산들을 수행하도록 구성되며,
시스템은 트레이닝 워크로드를 더 포함하며,
트레이닝 워크로드는,
프로세서 엘리먼트의 컴퓨트 엔진에 뉴런의 적어도 일부의 맵핑을 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제1 세트의 머신 코드들 ―맵핑은 적어도 하나의 부분-뉴런 가중치의 관리를 포함함―,
적어도 하나의 부분-뉴런 가중치에 적어도 부분적으로 기반하여 포워드 논리 방향으로 활성화들을 전파시키기 위해 포워드 패스를 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제2 세트의 머신 코드들 ―포워드 패스는 입력 샘플에 대한 응답으로 개시됨―,
델타들을 생성하기 위해 백워드 논리 방향으로 델타 패스를 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제3 세트의 머신 코드들 ―델타 패스는 포워드 패스의 완료에 대한 응답으로 개시됨―,
델타들에 기반하여 구배들을 계산하기 위해 체인 패스를 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제4 세트의 머신 코드들, 및
미리결정된 학습 규칙에 따라 그리고 델타들에 적어도 부분적으로 기반하여 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트를 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제5 세트의 머신 코드들을 포함하며,
각각의 컴퓨트 엔진은 적어도 하나의 부분-뉴런 가중치를 위한 스토리지를 포함한다.
[0107]
EC113a) EC113의 시스템에 있어서, 각각의 기본 명령은 패브릭 패킷들의 개별 패브릭 패킷의 태스크 지정자에 따라 수행된다.
[0108]
EC113b) EC113의 시스템에 있어서, 패브릭은 제1, 제2, 제3, 및 제4 물리적 방향들을 포함하는 프로세서 엘리먼트들의 2D 어레이를 포함하고, 제1 및 제2 물리적 방향들은 동일 선상이며 상반되고, 제3 및 제4 물리적 방향들은 동일 선상이며 상반되고, 제1 및 제3 물리적 방향들은 직교하며, 그리고 포워드 논리 방향은 제1 물리적 방향에 있고 백워드 논리 방향은 제2 물리적 방향에 있다.
[0109]
EC113c) EC113의 시스템에 있어서, 트레이닝 워크로드는 비선형 활성화 함수를 수행하기 위한 네이티브 명령 세트로부터 선택되는 제6 세트의 머신 코드들을 더 포함한다.
[0110]
EC113d) EC113c의 시스템에 있어서, 비선형 활성화 함수는 시그모이드(sigmoid), 쌍곡탄젠트(tanh), 및 ReLU로 구성되는 그룹으로부터 선택된다.
[0111]
EC114) EC113의 시스템에 있어서, 맵핑은 복수의 레이어들로의 뉴럴 네트워크의 파티셔닝(partitioning)을 구현하기 위해 패브릭을 초기화하는 것에 따르고, 뉴런은 뉴럴 네트워크의 복수의 뉴런들 중 제1 뉴런이고, 제1 뉴런은 복수의 레이어들 중 제1 레이어에 포함되고, 그리고 복수의 뉴런들 각각은 패브릭의 복수의 프로세서 엘리먼트들에 걸쳐 분산 방식으로 매핑된다.
[0112]
EC115) EC114의 시스템에 있어서, 맵핑은 동일한 시간량에서 각각의 레이어에 대한 패스들 모두를 완료하는 트레이닝 세트의 각각의 입력 샘플을 따른다.
[0113]
EC115b) EC114의 시스템에 있어서, 맵핑은 동일한 미리결정된 시간량 내에서 각각의 레이어에 대한 패스들 모두를 완료하는 트레이닝 세트의 각각의 입력 샘플을 따른다.
[0114]
EC115c) EC114의 시스템에 있어서, 맵핑은 실시간으로 결정된 동일한 시간 기간 내에서 각각의 레이어에 대한 패스들 모두를 완료하는 트레이닝 세트의 각각의 입력 샘플을 따른다.
[0115]
EC116) EC114의 시스템에 있어서, 복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 각각의 레이어에 대한 완료는 동일한 시간량을 포함하는 시간 스텝(time step)을 소요한다.
[0116]
EC116b) EC114의 시스템에 있어서, 복수의 레이어들 각각은 패스들 각각의 개별 논리적 패브릭 파이프라인의 논리적 패브릭 파이프라인 스테이지로서 동작하고, 각각의 레이어에 대한 완료는 동일한 시간량을 포함하는 시간 스텝을 소요한다.
[0117]
EC117) EC114의 시스템에 있어서, 트레이닝 세트의 각각의 입력 샘플이 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들은 복수의 레이어들에 걸쳐 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트된다.
[0118]
EC117b) EC118의 시스템에 있어서, 트레이닝 세트의 각각의 입력 샘플이 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들은 복수의 레이어들에 걸쳐 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트되고, 스트리밍 및 업데이트는 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝 동안 진행되고 있다.
[0119]
EC119) EC120의 시스템은 디지털 클록을 더 포함하고, 시간 스텝은 디지털 클록의 클록-사이클의 정수 배수(multiple)이다.
[0120]
EC118b) EC120의 시스템은 디지털 클록을 더 포함하고, 시간 스텝은 가변 시간량이다.
[0121]
EC118c) EC121 또는 EC118b의 시스템에 있어서, 시간 스텝은 실시간으로 결정된다.
[0122]
EC122) EC114의 시스템에 있어서,
각각의 컴퓨트 엔진은 복수의 컴퓨트 엔진 파이프라인 스테이지들을 갖는 멀티 스테이지 컴퓨트 엔진 파이프라인, 각각의 컴퓨트 엔진 파이프라인 스테이지를 완료하기 위한 시간을 포함하는 컴퓨트 엔진 머신 사이클, 복수의 컴퓨트 엔진 파이프라인 스테이지들을 완료하기 위한 시간을 포함하는 컴퓨트 엔진 파이프라인 사이클에 따라 연산하고,
컴퓨트 엔진 머신 사이클은 디지털 클록의 클록-사이클의 제1 배수를 포함하고,
복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 시간 스텝은 각각의 논리적 패브릭 파이프라인 스테이지를 완료하기 위한 시간을 포함하며, 그리고
시간 스텝은 컴퓨트 엔진 파이프라인 사이클의 제2 배수를 포함한다.
[0123]
E123) EC122의 시스템에 있어서, 제1 배수는 1이다.
[0124]
EC124) EC122의 시스템에 있어서, 제2 배수는 수 백 내지 수 천이다.
[0125]
EC125) EC120의 시스템에 있어서, 활성화들의 포워드 전파가 진행되고 있는 동안에 복수의 시간 단계들에 걸쳐 각각의 시간 스텝에 대해, 적어도 하나의 부분-뉴런 가중치가 제1 복수의 프로세서 엘리먼트들 내의 백워드 전파 데이터의 변화들에 대한 응답으로 제1 복수의 프로세서 엘리먼트들 내에서 선택적으로 업데이트된다.
[0126]
EC126) EC120의 시스템에 있어서, 적어도 하나의 부분-뉴런 가중치는 복수의 시간 단계들에 걸쳐 각각의 시간 스텝 내에 선택적으로 업데이트된다.
[0127]
EC123b) EC117, EC117b, EC122, 또는 EC123의 시스템에 있어서, 선택적인 업데이트는 연속적인 전파 구배 하강 프로세스에 따른다.
[0128]
EC127) EC114의 시스템에 있어서, 뉴럴 네트워크는 천 개 이상의 레이어들을 포함한다.
[0129]
EC128) EC114의 시스템에 있어서, 복수의 뉴런들은 수십억 개의 뉴런들을 포함한다.
[0130]
EC125b) EC114의 시스템에 있어서, 복수의 뉴런들은 수백만 개의 뉴런들을 포함한다.
[0131]
EC125c) EC114의 시스템에 있어서, 뉴럴 네트워크는 복수의 뉴런들 중 적어도 일부에 대해 뉴런 당 적어도 10 개의 가중치들을 포함한다.
[0132]
EC125d) EC114의 시스템에 있어서, 뉴럴 네트워크는 복수의 뉴런들 중 적어도 일부에 대해 뉴런 당 적어도 천 개의 가중치들을 포함한다.
[0133]
EC129) EC114의 시스템에 있어서, 뉴럴 네트워크는 레이어 당 수십억 개의 가중치들을 포함한다.
[0134]
EC126b) EC114의 시스템에 있어서, 뉴럴 네트워크는 레이어 당 수백만 개의 가중치들을 포함한다.
[0135]
EC130) EC114의 시스템에 있어서, 뉴럴 네트워크의 각각의 레이어 대해, 인입 활성화들에 가중치가 부여되어 레이어에 대한 출력 활성화를 생성하기 위해 누적되는 부분 합들을 생성하고, 누적 가중 부분 합들은 뉴럴 네트워크의 뉴런들 및 연관된 시냅스들을 표현한다.
[0136]
EC127b) EC127의 시스템에 있어서, 각각의 가중치는 시냅스에 대응하고, 각각의 부분 합은 자극에 대응하고, 누적 가중 부분 합들은 총 자극에 대응하고, 레이어에 대한 각각의 출력 활성화는 뉴런 출력에 대응한다.
[0137]
EC131) EC113의 시스템에 있어서, 트레이닝 세트를 집합적으로(collectively) 포함하는 복수의 입력 샘플들 각각에 대해 트레이닝 워크로드의 반복이 수행된다.
[0138]
EC132) EC131의 시스템에 있어서, 미리 결정된 학습 규칙은 전체 트레이닝 세트에 대한 모든 패스들의 완료 후에 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0139]
EC129b) EC129의 시스템에 있어서, 미리 결정된 학습 규칙은 확률론적 구배 하강 프로세스에 따른다.
[0140]
EC129c) EC129의 시스템에 있어서, 미리 결정된 학습 규칙은 미니-배치 구배 하강 프로세스에 따른다.
[0141]
EC129d) EC129의 시스템에 있어서, 미리 결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스에 따른다.
[0142]
EC133) EC131의 시스템에 있어서, 트레이닝 세트가 복수의 소위 미니-배치들로 파티셔닝되고, 그리고 미리결정된 학습 규칙은 미니-배치들 각각에 포함된 입력 샘플들에 대한 모든 패스들의 완료 후에 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0143]
EC134) EC131의 시스템에 있어서, 트레이닝 세트가 복수의 소위 미니-배치들로 파티셔닝되고, 그리고 미리결정된 학습 규칙은 각각의 미니-배치들 의 각각의 입력 샘플에 대한 모든 패스들의 완료 후에 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0144]
EC131b) EC131의 시스템에 있어서, 미리 결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스에 따른다.
[0145]
EC135) EC134의 시스템에 있어서, 포워드 패스는, 제1 복수의 프로세서 엘리먼트들 내에서 미니-배치 학습이 진행되고 있는 동안, 제1 복수의 프로세서 엘리먼트들 내에 가중치 업데이트들을 통합한다.
[0146]
EC136) EC113의 시스템에 있어서, 스토리지는 컴퓨트 엔진에 대해 로컬인 메모리에 포함된다.
[0147]
EC133b) EC113의 시스템에 있어서, 스토리지는 컴퓨트 엔진에 포함된다.
[0148]
EC133b) EC113의 시스템에 있어서, 스토리지는 각각의 컴퓨트 엔진에 어태치된 개별 메모리이다.
[0149]
EC137) EC113의 시스템에 있어서, 스토리지는 2D 행렬 데이터 구조를 저장하는 것이 가능하다.
[0150]
EC134b) EC113의 시스템에 있어서, 스토리지는 다차원 데이터 구조를 저장하는 것이 가능하다.
[0151]
EC134c) EC113의 시스템에 있어서, 스토리지는 2D, 3D, 4D, 5D 및 6D로 구성된 그룹으로부터 선택된 디멘션을 포함하는 텐서 데이터 구조를 저장하는 것이 가능하다.
[0152]
EC138) EC113의 시스템에 있어서, 각각의 컴퓨트 엔진은 구배 축적, 포워드 부분 합들, 델타 부분 합들 및 포워드 패스 활성화들을 위한 스토리지를 더 포함한다.
[0153]
EC139) EC114의 시스템에 있어서, 데이터는 포워드 패스 동안 뉴럴 네트워크의 논리적 단부로 전파되고 델타 및 체인 패스 동안 역 논리 방향으로 다시 순환한다.
[0154]
EC140) EC113의 시스템에 있어서, 포워드 패스는 델타 및 체인 패스들에 의한 사용을 위한 활성화들을 저장한다.
[0155]
EC141) EC113의 시스템에 있어서, 각각의 프로세서 엘리먼트는 포워드, 델타 및 체인 패스들에 걸쳐 시간 공유된다.
[0156]
EC142) EC131의 시스템에 있어서, 각각의 입력 샘플에 대해, 시스템은, 입력 샘플에 대응하는 포워드 패스, 델타 패스 및 체인 패스의 완료에 대한 응답으로, 미리결정된 학습 규칙에 따라 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하는 것이 가능하다.
[0157]
EC139b) EC139의 시스템에 있어서, 미리 결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스에 따른다.
[0158]
EC143) EC142의 시스템에 있어서, 시스템은 각각의 포워드 패스에 대해, 적어도 하나의 부분-뉴런 가중치의 가장 최근의 선택적 업데이트에 의해 제공되는 가중치 정보를 사용하는 것이 가능하다.
[0159]
EC144) EC143의 시스템에 있어서, 시스템은 트레이닝 워크로드의 이전 반복에 대응하는 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트가 발생했는지 여부와 관계없이 트레이닝 워크로드의 특정 반복의 포워드 패스를 개시하는 것이 가능하다.
[0160]
EC145) EC143의 시스템에 있어서, 시스템은 트레이닝 워크로드의 이전 반복의 델타 패스가 시작되었는지 여부에 관계없이 트레이닝 워크로드의 특정 반복의 포워드 패스를 개시하는 것이 가능하다.
[0161]
EC146) EC143의 시스템에 있어서, 적어도 하나의 컴퓨트 엔진은, 트레이닝 워크로드의 이전 반복을 위한 포워드 패스 중 적어도 일부를 수행한 후 그리고 트레이닝 워크로드의 이전 반복에 대응하는 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트 중 일부를 수행하기 전에, 트레이딩 워크로드의 후속 반복을 위한 포워드 패스 중 적어도 일부를 수행하는 것이 가능하다.
[0162]
EC147) EC143의 시스템에 있어서, 이 시스템은 제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 각각의 입력 샘플에 대해 델타 패스 및 체인 패스를 수행하는 것이 가능하다.
[0163]
EC148) EC147의 시스템에 있어서, 제 1 부분-뉴런 가중치는 가장 최근의 선택적 업데이트에 의해 산출된 부분-뉴런 가중치이다.
[0164]
EC145b) EC145의 시스템에 있어서, 재컴퓨팅된 활성화들은 컴퓨테이션들 사이에 저장될 필요가 없어서, 정해진 시스템 트레이닝 구성에 요구되는 총 메모리를 감소시킨다.
[0165]
EC145c) EC139, EC140, EC141 또는 EC142의 시스템에 있어서, 동시적 레이어 트레이닝은 더 빠른 수렴 레이트로 미리결정된 정확도 목표를 달성하는 것이 가능해서, 정해진 시스템 트레이닝 구성에 요구되는 총 트레이닝 시간을 감소시킨다.
[0166]
EC145d) EC139, EC140, EC141 또는 EC142의 시스템에 있어서, 동시적 레이어 트레이닝은 정해진 총 트레이닝 시간 및 시스템 트레이닝 구성에 대해 증가된 정확도를 가능하게 한다.
[0167]
EC149) EC143의 시스템에 있어서, 각각의 계산 엘리먼트는 제 1 부분-뉴런 가중치에 적어도 부분적으로 기초하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기초하여 입력 샘플에 대한 델타 패스의 부분들 및 체인 패스의 부분들을 수행하는 것이 가능하다.
[0168]
EC150) EC149의 시스템에 있어서, 제 1 부분-뉴런 가중치는 가장 최근의 선택적 업데이트에 의해 산출된 부분-뉴런 가중치이다.
[0169]
EC200) 방법으로서,
프로세서 엘리먼트들의 패브릭의 각각의 프로세서 엘리먼트에서, 프로세서 엘리먼트들의 다른 프로세서 엘리먼트들과 패브릭 패킷들을 선택적으로 통신하는 단계 ―각각의 프로세서 엘리먼트는, 데이터 흐름-기반 및 명령-기반 프로세싱을 수행하는 것이 가능한 컴퓨트 엔진 및 패브릭 라우터를 포함함―; 및
각각의 컴퓨트 엔진에서, 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 태스크 지정자 및 가상 채널 지정자에 따라 프로세싱을 선택적으로 수행하는 단계를 포함한다.
[0170]
EC200b) 방법으로서,
프로세서 엘리먼트들의 패브릭의 각각의 프로세서 엘리먼트에서, 프로세서 엘리먼트들의 다른 프로세서 엘리먼트들과 패브릭 패킷들을 선택적으로 통신하는 단계 ―각각의 프로세서 엘리먼트는 패브릭 라우터 및 컴퓨터 엔진를 포함함―; 및
각각의 컴퓨트 엔진에서, 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 데이터 흐름 필드 및 명령 필드에 따라 데이터 흐름 프로세싱 및 명령 프로세싱을 각각 선택적으로 수행하는 단계를 포함한다.
[0171]
EC200c) EC200의 방법에 있어서, 프로세싱은 데이터-흐름 그래프에 따른다.
[0172]
EC200d) EC200의 방법은, 최소한의 명령-기반 프로세싱과 함께 주로 데이터 흐름-기반 프로세싱을 포함하는 워크로드를 실행하는 단계를 더 포함한다.
[0173]
EC200e) EC200d의 방법에 있어서, 방법을 수행하는 것은 LSTM(Long Short Term Memory) 뉴럴 네트워크 모델을 구현한다.
[0174]
EC200f) EC200의 방법은, 최소한의 데이터 흐름-기반 프로세싱과 함께 주로 명령-기반 프로세싱을 포함하는 워크로드를 실행하는 단계를 더 포함한다.
[0175]
EC200g) EC200의 방법에 있어서, 프로세서 엘리먼트들의 패브릭이 웨이퍼-스케일 통합을 사용하여 적어도 부분적으로 구현된다.
[0176]
EC200h) EC200의 방법에 있어서, 프로세서 엘리먼트들의 패브릭은 VLSI 제조를 이용하여 적어도 부분적으로 구현된다.
[0177]
EC201) EC200의 방법에 있어서, 가상 채널 지정자는 패브릭에서 독립적 개별 라우팅 경로들을 선택한다.
[0178]
EC201b) EC200의 방법에 있어서, 가상 채널 지정자는 멀티캐스트를 수행하기 위해 패브릭에서 라우팅 경로를 선택한다.
[0179]
EC201c) EC200의 방법에 있어서, 가상 채널 지정자는 로드 분할을 수행하기 위해 패브릭에서 라우팅 경로들을 선택한다.
[0180]
EC202) EC200의 방법에 있어서, 태스크 지정자는 수행할 하나 이상의 동작들을 선택한다.
[0181]
EC203) EC200의 방법에 있어서, 패브릭은 프로세서 엘리먼트들의 2D 어레이를 포함한다.
[0182]
EC203b) EC200의 방법에 있어서, 패브릭은 전체 연결된 스타, 링, 어레이, 메쉬, 하이퍼큐브, 토러스 및 트리로 이루어진 그룹으로부터 선택된 프로세서 엘리먼트 상호연결 토폴로지를 포함한다.
[0183]
EC203c) EC200의 방법에 있어서, 패브릭은 1D, 2D, 3D, 및 3D보다 큰 디멘션으로 이루어진 그룹으로부터 선택된 프로세서 엘리먼트 상호연결 토폴로지를 디멘션을 포함한다.
[0184]
EC204) EC200의 방법에 있어서, 방법을 수행하는 것은 머신 학습 워크로드들을 실행하는 것을 가능하게 한다.
[0185]
EC205) EC200의 방법에 있어서, 방법을 수행하는 것은 추론 애플리케이션을 트레이닝하는 것을 가능하게 한다.
[0186]
EC205b) EC200의 방법에 있어서, 방법을 수행하는 것은 추론 애플리케이션을 수행한다.
[0187]
EC206) EC200의 방법에 있어서, 방법을 수행하는 것은 오브젝트 분류 및/또는 검출을 수행하도록 트레이닝된 딥 뉴럴 네트워크를 구현한다.
[0188]
EC207) EC200의 방법에 있어서, 방법을 수행하는 것은, 텍스트 번역, 광학 문자 인식, 이미지 분류, 안면 인식, 자율주행 차를 위한 장면 인식, 스피치 인식, 고 에너지 물리학을 위한 데이터 분석, 및 신약 발굴로 구성된 그룹으로부터 선택된 추론 애플리케이션을 수행하도록 트레이닝된 딥 뉴럴 네트워크를 구현한다.
[0189]
EC208) EC200의 방법에 있어서, 패브릭은 복수의 주변 프로세서 엘리먼트들 및 복수의 내부 프로세서 엘리먼트들로 조직화되고, 내부 프로세서 엘리먼트들 각각은 적어도 4 개의 논리 방향들 각각으로 복수의 프로세서 엘리먼트들 중 적어도 4 개의 다른 프로세서 엘리먼트들로 커플링된다.
[0190]
EC209) EC200의 방법에 있어서, 각각의 컴퓨트 엔진은 메모리, 데이터 경로, 및 하이브리드 데이터 흐름 및 명령 실행 제어기를 포함한다.
[0191]
EC210) EC209의 방법에 있어서, 각각의 컴퓨트 엔진은 복수의 컴퓨트 엔진 파이프라인 스테이지들을 갖는 멀티 스테이지 컴퓨트 엔진 파이프라인에 따라 동작한다.
[0192]
EC211) EC209의 방법에 있어서, 명령 실행 제어기는 마이크로 코드, PLA들, 하나 이상의 카운터들, 및 게이트-레벨 상태 머신 중 하나 이상을 사용하여 구현된 명령 시퀀서를 포함한다.
[0193]
EC212) EC209의 방법에 있어서, 각각의 컴퓨트 엔진은, 레지스터 파일, 명령 디코더, 명령 캐시, 및 데이터 캐시를 더 포함한다.
[0194]
EC212b) EC209의 방법에 있어서, 각각의 컴퓨트 엔진은, 레지스터 파일, 명령 디코더, 명령 버퍼, 및 데이터 버퍼를 더 포함한다.
[0195]
EC213) EC200의 방법에 있어서,
각각의 컴퓨트 엔진은, 미리정의된 네이티브 명령 세트의 코드들로부터 선택되는 대응하는 기본 명령을 수신하는 것에 대한 응답으로, 미리정의된 세트의 기본 연산들을 수행하도록 구성되며, 이 방법은 트레이닝 워크로드를 프로세싱하는 단계를 더 포함하며,
트레이닝 워크로드는, 프로세서 엘리먼트의 컴퓨트 엔진에 뉴런의 적어도 일부의 맵핑을 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제1 세트의 머신 코드들 ―맵핑은 적어도 하나의 부분-뉴런 가중치의 관리를 포함함―;
적어도 하나의 부분-뉴런 가중치에 적어도 부분적으로 기반하여 포워드 논리 방향으로 활성화들을 전파시키기 위해 포워드 패스를 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제2 세트의 머신 코드들 ―포워드 패스는 입력 샘플에 대한 응답으로 개시됨―;
델타들을 생성하기 위해 백워드 논리 방향으로 델타 패스를 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제3 세트의 머신 코드들 ―델타 패스는 포워드 패스의 완료에 대한 응답으로 개시됨―;
델타들에 기반하여 구배들을 계산하기 위해 체인 패스를 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제4 세트의 머신 코드들; 및
미리결정된 학습 규칙에 따라 그리고 델타들에 적어도 부분적으로 기반하여 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트를 수행하기 위한, 네이티브 명령 세트로부터 선택되는 제5 세트의 머신 코드들을 포함하고, 각각의 컴퓨트 엔진은 적어도 하나의 부분-뉴런 가중치를 위한 스토리지를 포함한다.
[0196]
EC213a) EC213의 방법에 있어서, 각각의 기본 명령은 패브릭 패킷들의 개별 패브릭 패킷의 태스크 지정자들에 따라 수행된다.
[0197]
EC213b) EC213의 방법에 있어서, 패브릭은 제1, 제2, 제3 및 제4 물리적 방향들을 포함하는 프로세서 엘리먼트들의 2D 어레이를 포함하고, 제 1 및 제 2 물리적 방향들은 동일 선상이며 상반되고, 제3 및 제4 물리적 방향은 동일 선상이며 상반되고, 제1 및 제3 물리적 방향은 직교하고, 포워드 논리 방향은 제 1 물리적 방향이고, 백워드 논리 방향은 제2 물리적 방향이다.
[0198]
EC213c) EC213의 방법에 있어서, 트레이닝 워크로드는 비선형 활성화 기능을 수행하기 위해 고유 명령 세트로부터 선택된 제6 세트의 머신 코드들을 더 포함한다.
[0199]
EC213d) EC213c의 방법에 있어서, 비선형 활성화 함수가 시그모이드, 쌍곡탄젠트, 및 ReLU로 이루어진 그룹으로부터 선택된다.
[0200]
EC214) EC213의 방법에 있어서, 맵핑은 복수의 레이어들로의 뉴럴 네트워크의 파티셔닝을 구현하기 위해 패브릭을 초기화하는 것에 따르고, 뉴런은 뉴럴 네트워크의 복수의 뉴런들 중 제1 뉴런이고, 제1 뉴런은 복수의 레이어들 중 제1 레이어에 포함되고, 그리고 복수의 뉴런들 각각은 패브릭의 복수의 프로세서 엘리먼트들에 걸쳐 분산 방식으로 맵핑된다.
[0201]
EC215) EC214의 방법에 있어서, 맵핑은 동일한 시간량으로 각각의 레이어에 대한 모든 패스들을 완료하는 트레이닝 세트의 각각의 입력 샘플에 따른다.
[0202]
EC215b) EC214의 방법에 있어서, 맵핑은 동일한 미리결정된 시간량 내에서 각각의 레이어에 대한 모든 패스들을 완료하는 트레이닝 세트의 각각의 입력 샘플에 따른다.
[0203]
EC215c) EC214의 방법에 있어서, 맵핑은 실시간으로 결정된 동일한 시간 기간 내에서 각각의 레이어에 대한 모든 패스들을 완료하는 트레이닝 세트의 각각의 입력 샘플에 따른다.
[0204]
EC216) EC214의 방법에 있어서, 복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 각각의 레이어에 대한 완료는 동일한 시간량을 포함하는 시간 스텝을 소요한다.
[0205]
EC216b) EC214의 방법에 있어서, 복수의 레이어들 각각은 패스들 각각의 개별 논리적 패브릭 파이프라인의 논리적 패브릭 파이프라인 스테이지로서 동작하며, 각각의 레이어에 대한 완료는 동일한 시간량을 포함하는 시간 스텝을 소요한다.
[0206]
EC217) EC214의 방법에 있어서, 트레이닝 세트의 각각의 입력 샘플이 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들은 복수의 레이어들에 걸쳐 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트된다.
[0207]
EC217b) EC216의 방법에 있어서, 트레이닝 세트의 각각의 입력 샘플이 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들은 복수의 레이어들에 걸쳐 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트되고, 스트리밍 및 업데이트는 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝 동안 진행된다.
[0208]
EC218) EC216의 방법에 있어서, 프로세서 엘리먼트들 중 적어도 하나는 디지털 클록을 포함하고, 시간 스텝은 디지털 클록의 클록 사이클의 정수배이다.
[0209]
EC218b) EC216의 방법에 있어서, 프로세서 엘리먼트들 중 적어도 하나는 디지털 클록을 포함하고, 시간 스텝은 가변 시간량이다.
[0210]
EC218c) EC218 또는 EC218b의 방법에서, 시간 스텝은 실시간으로 결정된다.
[0211]
EC219) EC214의 방법에 있어서,
복수의 컴퓨트 엔진 파이프라인 스테이지들을 갖는 멀티 스테이지 컴퓨트 엔진 파이프라인, 각각의 컴퓨트 엔진 파이프라인 스테이지를 완료하기 위한 시간을 포함하는 컴퓨트 엔진 머신 사이클, 복수의 컴퓨트 엔진 파이프라인 스테이지를 완료하기 위한 시간을 포함하는 컴퓨트 엔진 파이프라인 사이클에 따라 각각의 컴퓨트 엔진을 동작시키는 단계를 더 포함하며;
컴퓨트 엔진 머신 사이클은 디지털 클록의 클록 사이클의 제1 배수를 포함하고;
복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 시간 스텝은 각각의 논리적 패브릭 파이프라인 스테이지를 완료하기 위한 시간을 포함하고; 그리고
시간 스텝은 컴퓨트 엔진 파이프라인 사이클의 제2 배수를 포함한다.
[0212]
EC220) EC219의 방법에 있어서, 제1 배수는 1이다.
[0213]
EC221) EC219의 방법에 있어서, 제2 배수는 수백 내지 수천이다.
[0214]
EC222) EC216의 방법은, 활성화들의 포워드 전파가 진행되는 동안 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝 동안, 제1 복수의 프로세서 엘리먼트들 내에서의 백워드 전파 데이터의 변화들에 대한 응답으로, 제1 복수의 프로세서 엘리먼트들 내에서 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하는 단계를 더 포함한다.
[0215]
EC223) EC216의 방법은, 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝마다 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하는 단계를 더 포함한다.
[0216]
EC223b) EC217, EC217b, EC222 또는 EC223의 방법에 있어서, 선택적으로 업데이트하는 단계는 연속적인 전파 구배 하강 프로세스(continuous propagation gradient descent process)를 따른다.
[0217]
EC224) EC214의 방법에 있어서, 뉴럴 네트워크는 천 개 이상의 레이어들을 포함한다.
[0218]
EC225) EC214의 방법에 있어서, 복수의 뉴런들은 수십억 개의 뉴런들을 포함한다.
[0219]
EC225b) EC214의 방법에 있어서, 복수의 뉴런들은 수백만 개의 뉴런들을 포함한다.
[0220]
EC225c) EC214의 방법에 있어서, 뉴럴 네트워크는 복수의 뉴런들 중 적어도 일부에 대해 뉴런 당 적어도 10 개의 가중치들을 포함한다.
[0221]
EC225d) EC214의 방법에 있어서, 뉴럴 네트워크는 복수의 뉴런들 중 적어도 일부에 대해 뉴런 당 적어도 천 개의 가중치들을 포함한다.
[0222]
EC226) EC214의 방법에 있어서, 뉴럴 네트워크는 레이어 당 수십억 개의 가중치들을 포함한다.
[0223]
EC226b) EC214의 방법에 있어서, 뉴럴 네트워크는 레이어 당 수백만 개의 가중치들을 포함한다.
[0224]
EC227) EC214의 방법은, 뉴럴 네트워크의 각각의 레이어 대해, 레이어에 대한 출력 활성화들을 생성하기 위해 누적되는 부분 합들을 생성하기 위해 인입 활성화들에 가중치를 부여하는 단계를 더 포함하고, 누적 가중 부분 합들은 뉴럴 네트워크의 뉴런들 및 연관된 시냅스들을 표현한다.
[0225]
EC227b) EC227의 방법에 있어서, 각각의 가중치는 시냅스에 대응하고, 각각의 부분 합은 자극에 대응하고, 누적 가중 부분 합들은 총 자극에 대응하고, 레이어에 대한 각각의 출력 활성화는 뉴런 출력에 대응한다.
[0226]
EC228) EC213의 방법은, 트레이닝 세트를 집합적으로(collectively) 포함하는 복수의 입력 샘플들 각각에 대해 트레이닝 워크로드의 반복을 수행하는 단계를 더 포함한다.
[0227]
EC229) EC228의 방법에 있어서, 미리 결정된 학습 규칙은 전체 트레이닝 세트에 대한 모든 패스들의 완료 후에 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0228]
EC229b) EC229의 방법에 있어서, 미리결정된 학습 규칙은 확률론적 구배 하강 프로세스를 따른다.
[0229]
EC229c) EC229의 방법에 있어서, 미리결정된 학습 규칙은 미니-배치 구배 하강 프로세스를 따른다.
[0230]
EC229d) EC229의 방법에 있어서, 미리결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스를 따른다.
[0231]
EC230) EC228의 방법은 트레이닝 세트를 복수의 소위 미니-배치들로 파티셔닝하는 단계를 더 포함하며, 그리고 미리결정된 학습 규칙은 각각의 미니-배치들에 포함된 입력 샘플들에 대한 모든 패스들의 완료 후에 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0232]
EC231) EC228의 방법은 트레이닝 세트를 복수의 소위 미니-배치들로 파티셔닝하는 단계를 더 포함하며, 그리고 미리결정된 학습 규칙은 각각의 미니-배치들의 각각의 입력 샘플에 대한 모든 패스들의 완료 후에 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0233]
EC231b) EC231의 방법에 있어서, 미리결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스를 따른다.
[0234]
EC232) EC231의 방법에 있어서, 미니-배치 학습이 제1 복수의 프로세서 엘리먼트들 내에서 진행되고 있는 동안, 포워드 패스는 제1 복수의 프로세서 엘리먼트들 내에 가중치 업데이트들을 통합한다.
[0235]
EC233) EC213의 방법에 있어서, 스토리지는 컴퓨트 엔진에 대해 로컬인 메모리에 포함된다.
[0236]
EC233b) C213의 방법에 있어서, 스토리지는 컴퓨트 엔진에 포함된다.
[0237]
EC233b) C213의 방법에 있어서, 스토리지는 각각의 컴퓨트 엔진에 어태치된 개별 메모리이다.
[0238]
EC234) EC213의 방법에 있어서, 스토리지는 2D 행렬 데이터 구조를 저장하는 것이 가능하다.
[0239]
EC234b) C213의 방법에 있어서, 스토리지는 다차원 데이터 구조를 저장하는 것이 가능하다.
[0240]
EC234c) C213의 방법에 있어서, 스토리지는, 2D, 3D, 4D, 5D, 및 6D로 이루어진 그룹으로부터 선택된 디멘션을 포함하는 텐서 데이터 구조를 저장하는 것이 가능하다.
[0241]
EC235) EC213의 방법에 있어서, 각각의 컴퓨트 엔진은, 구배 축적, 포워드 부분 합들, 델타 부분 합들 및 포워드 패스 활성화들을 위한 스토리지를 더 포함한다.
[0242]
EC236) EC214의 방법에 있어서, 데이터는 포워드 패스 동안 뉴럴 네트워크의 논리적 단부로 전파되고, 델타 및 체인 패스들 동안 역 논리 방향으로 다시 순환된다.
[0243]
EC237) EC213의 방법에 있어서, 포워드 패스는 델타 및 체인 패스들에 의한 사용을 위한 활성화들을 저장한다.
[0244]
EC238) EC213의 방법은 포워드, 델타 및 체인 패스들을 통해 각각의 프로세서 엘리먼트를 시간 공유하는 단계를 더 포함한다.
[0245]
EC239) EC228의 방법은, 각각의 입력 샘플에 대해, 입력 샘플에 대응하는 포워드 패스, 델타 패스, 및 체인 패스의 완료에 대한 응답으로, 미리결정된 학습 규칙에 따라 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하는 단계를 더 포함한다.
[0246]
EC239b) EC239의 방법에 있어서, 미리결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스를 따른다.
[0247]
EC240) EC239의 방법은, 각각의 포워드 패스에 대해, 적어도 하나의 부분-뉴런 가중치의 가장 최근의 선택적 업데이트에 의해 제공되는 가중치 정보를 선택적으로 사용하는 단계를 더 포함한다.
[0248]
EC241) EC240의 방법은, 트레이닝 워크로드의 이전 반복에 대응하는 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트가 발생했는지 여부와 관계없이 트레이닝 워크로드의 특정 반복의 포워드 패스를 개시하는 단계를 더 포함한다.
[0249]
EC242) EC240의 방법은, 트레이닝 워크로드의 이전 반복의 델타 패스가 시작되었는지 여부와 관계없이 트레이닝 워크로드의 특정 반복의 포워드 패스를 선택적으로 개시하는 단계를 더 포함한다.
[0250]
EC243) EC240의 방법은, 트레이닝 워크로드의 이전 반복에 대한 포워드 패스 중 적어도 일부를 수행한 후에 그리고 트레이닝 워크로드의 이전 반복에 대응하는 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트 중 일부를 수행하기 전에, 컴퓨트 엔진들 중 적어도 하나에서, 트레이닝 워크로드의 후속 반복에 대한 포워드 패스 중 적어도 일부를 수행하는 단계를 더 포함한다.
[0251]
EC244) EC240의 방법은, 제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 각각의 입력 샘플에 대해 델타 패스 및 체인 패스를 선택적으로 수행하는 단계를 더 포함한다.
[0252]
EC245) EC244의 방법에 있어서, 제1 부분-뉴런 가중치는 가장 최근의 선택적 업데이트에 의해 산출된 부분-뉴런 가중치이다.
[0253]
EC245b) EC245의 방법에 있어서, 재컴퓨팅된 활성화들은 컴퓨테이션들 사이에 저장될 필요가 없으며, 그에 의해 정해진 시스템 트레이닝 구성에 대해 요구되는 총 메모리를 감소시킨다.
[0254]
EC245c) EC239, EC240, EC241, 또는 EC242의 방법에 있어서, 동시적 레이어 트레이닝은 더 빠른 수렴 레이트로 미리결정된 정확도 목표를 달성하는 것이 가능하며, 그에 의해 정해진 시스템 트레이닝 구성에 대해 요구되는 총 트레이닝 시간을 감소시킨다.
[0255]
EC245d) EC239, EC240, EC241, 또는 EC242의 방법에 있어서, 동시적 레이어 트레이닝은 정해진 총 트레이닝 시간 및 시스템 트레이닝 구성에 대해 증가된 정확도를 가능하게 한다.
[0256]
EC246) EC240의 방법은, 각각의 컴퓨트 엘리먼트에서, 제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 입력 샘플에 대한 체인 패스의 부분들 및 델타 패스의 부분들을 선택적으로 수행하는 단계를 더 포함한다.
[0257]
EC247) EC246의 방법에 있어서, 제1 부분-뉴런 가중치는 가장 최근의 선택적 업데이트에 의해 산출된 부분-뉴런 가중치이다.
[0258]
EC300) 시스템으로서,
프로세서 엘리먼트들의 패브릭의 각각의 프로세서 엘리먼트에서, 패브릭 패킷들을 프로세서 엘리먼트들 중 다른 프로세서 엘리먼트들과 통신하기 위한 수단 ― 각각의 프로세서 엘리먼트는, 데이터 흐름-기반 및 명령-기반 프로세싱을 수행하는 것이 가능한 컴퓨트 엔진 및 패브릭 라우터를 포함함 ―; 및
각각의 컴퓨트 엔진에서, 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 가상 채널 지정자 및 태스크 지정자에 따라 프로세싱을 선택적으로 수행하기 위한 수단을 포함한다.
[0259]
EC300b) 시스템으로서,
프로세서 엘리먼트들의 패브릭의 각각의 프로세서 엘리먼트에서, 패브릭 패킷들을 프로세서 엘리먼트들 중 다른 프로세서 엘리먼트들과 통신하기 위한 수단 ― 각각의 프로세서 엘리먼트는 패브릭 라우터 및 컴퓨트 엔진을 포함함 ―; 및
각각의 컴퓨트 엔진에서, 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 데이터 흐름 필드 및 명령 필드에 따라 각각 데이터 흐름 프로세싱 및 명령 프로세싱을 선택적으로 수행하기 위한 수단을 포함한다.
[0260]
EC300c) EC300의 시스템에 있어서, 프로세싱은 데이터 흐름 그래프를 따른다.
[0261]
EC300d) EC300의 시스템은, 최소한의 명령-기반 프로세싱과 함께 데이터 흐름-기반 프로세싱을 주로 포함하는 워크로드를 실행하기 위한 수단을 더 포함한다.
[0262]
EC300e) EC300d의 시스템에 있어서, 시스템은 LSTM(Long Short Term Memory) 뉴럴 네트워크 모델을 구현한다.
[0263]
EC300f) EC300의 시스템은, 최소한의 데이터 흐름-기반 프로세싱과 함께 명령-기반 프로세싱을 주로 포함하는 워크로드를 실행하기 위한 수단을 더 포함한다.
[0264]
EC300g) EC300의 시스템에 있어서, 시스템은 웨이퍼-스케일 통합을 사용하여 적어도 부분적으로 구현된다.
[0265]
EC300h) EC300의 시스템에 있어서, 프로세서 엘리먼트들의 패브릭은 VLSI 제조를 사용하여 적어도 부분적으로 구현된다.
[0266]
EC301) EC300의 시스템에 있어서, 가상 채널 지정자는 패브릭에서 독립적 개별 라우팅 경로들을 선택한다.
[0267]
EC301b) EC300의 시스템에 있어서, 가상 채널 지정자는 멀티캐스트를 수행하기 위한 패브릭 내의 라우팅 경로들을 선택한다.
[0268]
EC301c) EC300의 시스템에 있어서, 가상 채널 지정자는 로드 분할을 수행하기 위한 패브릭 내의 라우팅 경로들을 선택한다.
[0269]
EC302) EC300의 시스템에 있어서, 태스크 지정자는 수행하기 위한 하나 이상의 동작들을 선택한다.
[0270]
EC303) EC300의 시스템에 있어서, 패브릭은 프로세서 엘리먼트들의 2D 어레이를 포함한다.
[0271]
EC303b) EC300의 시스템에 있어서, 패브릭은, 전체 연결된, 스타, 링, 어레이, 메쉬, 하이퍼큐브, 토러스, 및 트리로 이루어진 그룹으로부터 선택된 프로세서 엘리먼트 상호연결 토폴로지를 포함한다.
[0272]
EC303c) EC300의 시스템에 있어서, 패브릭은, 1D, 2D, 3D, 및 3D 초과의 디멘션으로 이루어진 그룹으로부터 선택된 프로세서 엘리먼트 상호연결 토폴로지 디멘션을 포함한다.
[0273]
EC304) EC300의 시스템에 있어서, 시스템은 머신 학습 워크로드들을 실행하는 것이 가능하다.
[0274]
EC305) EC300의 시스템에 있어서, 시스템은 추론 애플리케이션을 수행하도록 트레이닝된다.
[0275]
EC305b) EC300의 시스템에 있어서, 시스템은 추론 애플리케이션을 수행한다.
[0276]
EC306) EC300의 시스템에 있어서, 시스템은 오브젝트 분류 및/또는 검출을 수행하도록 트레이닝된 딥 뉴럴 네트워크를 구현한다.
[0277]
EC307) EC300의 시스템에 있어서, 시스템은, 텍스트 번역, 광학 문자 인식, 이미지 분류, 안면 인식, 자율-주행 차에 대한 장면 인식, 스피치 인식, 고에너지 물리학에 대한 데이터 분석, 및 신약 발굴로 이루어진 그룹으로부터 선택된 추론 애플리케이션을 수행하도록 트레이닝된 딥 뉴럴 네트워크를 구현한다.
[0278]
EC308) EC300의 시스템에 있어서, 패브릭은 복수의 주변 프로세서 엘리먼트들 및 복수의 내부 프로세서 엘리먼트들로서 조직화되며, 그리고 내부 프로세서 엘리먼트들 각각은 복수의 프로세서 엘리먼트들 중 적어도 4개의 다른 프로세서 엘리먼트들에 각각 적어도 4개의 논리 방향들로 커플링된다.
[0279]
EC309) EC300의 시스템에 있어서, 각각의 컴퓨트 엔진은 메모리, 데이터 경로, 및 하이브리드 데이터 흐름 및 명령 실행 제어기를 포함한다.
[0280]
EC310) EC309의 시스템에 있어서, 각각의 컴퓨트 엔진은 복수의 컴퓨트 엔진 파이프라인 스테이지들을 갖는 멀티 스테이지 컴퓨트 엔진 파이프라인에 따라 동작한다.
[0281]
EC311) EC309의 시스템에 있어서, 명령 실행 제어기는, 마이크로코드, PLA들, 하나 이상의 카운터들, 및 게이트-레벨 상태 머신 중 하나 이상을 사용하여 구현되는 명령 시퀀서를 포함한다.
[0282]
EC312) EC309의 시스템에 있어서, 각각의 컴퓨트 엔진은 레지스터 파일, 명령 디코더, 명령 캐시, 및 데이터 캐시를 더 포함한다.
[0283]
EC312b) EC309의 시스템에 있어서, 각각의 컴퓨트 엔진은 레지스터 파일, 명령 디코더, 명령 버퍼, 및 데이터 버퍼를 더 포함한다.
[0284]
EC313) EC300의 시스템에 있어서,
각각의 컴퓨트 엔진은, 미리정의된 네이티브 명령 세트의 코드들로부터 선택된 대응하는 기본 명령을 수신하는 것에 대한 응답으로, 미리정의된 세트의 기본 연산들을 수행하도록 구성되고; 그리고
트레이닝 워크로드를 더 포함하고, 트레이닝 워크로드는,
프로세서 엘리먼트의 컴퓨트 엔진 상으로의 뉴런의 적어도 일부의 맵핑을 수행하기 위해 네이티브 명령 세트로부터 선택된 제1 세트의 머신 코드들 ― 맵핑은 적어도 하나의 부분-뉴런 가중치를 관리하는 것을 포함함 ―,
적어도 하나의 부분-뉴런 가중치에 적어도 부분적으로 기반하여 포워드 논리 방향으로 활성화들을 전파하기 위한 포워드 패스를 수행하기 위해 네이티브 명령 세트로부터 선택된 제2 세트의 머신 코드들 ― 포워드 패스는 입력 샘플에 대한 응답으로 개시됨 ―,
델타들을 생성하기 위하여 백워드 논리 방향으로 델타 패스를 수행하기 위해 네이티브 명령 세트로부터 선택된 제3 세트의 머신 코드들 ― 델타 패스는 포워드 패스의 완료에 대한 응답으로 개시됨 ―,
델타들에 기반하여 구배들을 계산하기 위하여 체인 패스를 수행하기 위해 네이티브 명령 세트로부터 선택된 제4 세트의 머신 코드들, 및
미리결정된 학습 규칙에 따라 그리고 델타들에 적어도 부분적으로 기반하여 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트를 수행하기 위해 네이티브 명령 세트로부터 선택된 제5 세트의 머신 코드들을 포함하며; 그리고
각각의 컴퓨트 엔진은 적어도 하나의 부분-뉴런 가중치를 위한 스토리지를 포함한다.
[0285]
EC313a) EC313의 시스템에 있어서, 각각의 기본 명령은 패브릭 패킷들의 개별 패브릭 패킷의 태스크 지정자에 따라 수행된다.
[0286]
EC313b) EC313의 시스템에 있어서, 패브릭 제1, 제2, 제3, 및 제4 물리적 방향들을 포함하는 프로세서 엘리먼트들의 2D 어레이를 포함하고, 제1 및 제2 물리적 방향들은 동일 선상이며 상반되고, 제3 및 제4 물리적 방향들은 동일 선상이며 상반되고, 제1 및 제3 물리적 방향들은 직교하며, 그리고 포워드 논리 방향은 제1 물리적 방향이고 그리고 백워드 논리 방향은 제2 물리적 방향이다.
[0287]
EC313c) EC313의 시스템에 있어서, 트레이닝 워크로드는 비선형 활성화 기능을 수행하기 위해 네이티브 명령 세트로부터 선택된 제6 세트의 머신 코드들을 더 포함한다.
[0288]
EC313d) EC313c의 시스템에 있어서, 비선형 활성화 기능은, 시그모이드, 쌍곡탄젠트, 및 ReLU로 이루어진 그룹으로부터 선택된다.
[0289]
EC314) EC313의 시스템에 있어서, 맵핑은, 복수의 레이어들로의 뉴럴 네트워크의 파티셔닝을 구현하기 위해 패브릭을 초기화하는 것에 따르고, 뉴런은 뉴럴 네트워크의 복수의 뉴런들 중 제1 뉴런이고, 제1 뉴런은 복수의 레이어들 중 제1 레이어에 포함되며, 그리고 복수의 뉴런들 각각은 패브릭의 복수의 프로세서 엘리먼트들에 걸쳐 분산 방식으로 맵핑된다.
[0290]
EC315) EC314의 시스템에 있어서, 맵핑은 동일한 시간량에 각각의 레이어에 대한 모든 패스들을 완료하는 트레이닝 세트의 각각의 입력 샘플을 따른다.
[0291]
EC315b) EC314의 시스템에 있어서, 맵핑은 동일한 미리결정된 시간량 내에서 각각의 레이어에 대한 모든 패스들을 완료하는 트레이닝 세트의 각각의 입력 샘플을 따른다.
[0292]
EC315c) EC314의 시스템에 있어서, 맵핑은 실시간으로 결정된 동일한 시간 기간 내에서 각각의 레이어에 대한 모든 패스들을 완료하는 트레이닝 세트의 각각의 입력 샘플을 따른다.
[0293]
EC316) EC314의 시스템에 있어서, 복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 각각의 레이어에 대한 완료는 동일한 시간량을 포함하는 시간 스텝을 취한다.
[0294]
EC316b) EC314의 시스템에 있어서, 복수의 레이어들 각각은, 패스들 각각의 개별 논리적 패브릭 파이프라인의 논리적 패브릭 파이프라인 스테이지로서 동작하고, 각각의 레이어에 대한 완료는 동일한 시간량을 포함하는 시간 스텝을 취한다.
[0295]
EC317) EC314의 시스템에 있어서, 트레이닝 세트의 각각의 입력 샘플이 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들은 복수의 레이어들에 걸쳐 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트된다.
[0296]
EC317b) EC316의 시스템에 있어서, 트레이닝 세트의 각각의 입력 샘플이 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들은 복수의 레이어들에 걸쳐 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트되며, 그리고 스트리밍 및 업데이트는 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝에 대해 진행된다.
[0297]
EC318) EC316의 시스템은 디지털 클록을 더 포함하고, 시간 스텝은 디지털 클록의 클록-사이클의 정수 배수이다.
[0298]
EC318b) EC316의 시스템은 디지털 클록을 더 포함하고, 시간 스텝은 가변 시간량이다.
[0299]
EC318c) EC318 또는 EC318b의 시스템에 있어서, 시간 스텝은 실시간으로 결정된다.
[0300]
EC319) EC314의 시스템은 복수의 컴퓨트 엔진 파이프라인 스테이지들을 갖는 멀티 스테이지 컴퓨트 엔진 파이프라인에 따라 각각의 컴퓨트 엔진을 동작시키기 위한 수단을 더 포함하고, 컴퓨트 엔진 머신 사이클은 각각의 컴퓨트 엔진 파이프라인 스테이지를 완료하기 위한 시간을 포함하고, 컴퓨트 엔진 파이프라인 사이클은 복수의 컴퓨트 엔진 파이프라인 스테이지들을 완료하기 위한 시간을 포함하고;
컴퓨트 엔진 머신 사이클은 디지털 클록의 클록-사이클의 제1 배수를 포함하고;
복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 시간 스텝은 각각의 논리적 패브릭 파이프라인 스테이지를 완료하기 위한 시간을 포함하며; 그리고
시간 스텝은 컴퓨트 엔진 파이프라인 사이클의 제2 배수를 포함한다.
[0301]
EC320) EC319의 시스템에 있어서, 제1 배수는 1 이다.
[0302]
EC321) EC319의 시스템에 있어서, 제2 배수는 수백 내지 수천이다.
[0303]
EC322) EC316의 시스템은, 활성화들의 포워드 전파가 진행되고 있는 동안 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝에 대해 제1 복수의 프로세서 엘리먼트들 내의 백워드 전파 데이터의 변화들에 대한 응답으로 제1 복수의 프로세서 엘리먼트들 내의 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하기 위한 수단을 더 포함한다.
[0304]
EC323) EC316의 시스템은 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝마다 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하기 위한 수단을 더 포함한다.
[0305]
EC323b) EC317, EC317b, EC322, 또는 EC323의 시스템에 있어서, 선택적으로 업데이트하는 것은 연속적인 전파 구배 하강 프로세스를 따른다.
[0306]
EC324) EC314의 시스템에 있어서, 뉴럴 네트워크는 천 개 이상의 레이어들을 포함한다.
[0307]
EC325) EC314의 시스템에 있어서, 복수의 뉴런들은 수십억 개의 뉴런들을 포함한다.
[0308]
EC325b) EC314의 시스템에 있어서, 복수의 뉴런들은 수백만 개의 뉴런들을 포함한다.
[0309]
EC325c) EC314의 시스템에 있어서, 뉴럴 네트워크는 복수의 뉴런들 중 적어도 일부에 대해 뉴런 당 적어도 10개의 가중치들을 포함한다.
[0310]
EC325d) EC314의 시스템에 있어서, 뉴럴 네트워크는 복수의 뉴런들 중 적어도 일부에 대해 뉴런 당 적어도 천 개의 가중치들을 포함한다.
[0311]
EC326) EC314의 시스템에 있어서, 뉴럴 네트워크는 레이어 당 수십억 개의 가중치들을 포함한다.
[0312]
EC326b) EC314의 시스템에 있어서, 뉴럴 네트워크는 레이어 당 수백만 개의 가중치들을 포함한다.
[0313]
EC327) EC314의 시스템은, 뉴럴 네트워크의 각각의 레이어에 대해, 레이어에 대한 출력 활성화들을 생성하기 위해 누적된 부분 합들을 생성하도록 인입 활성화들을 가중화하기 위한 수단을 더 포함하고, 누적 가중 부분 합들은 뉴럴 네트워크의 뉴런들 및 연관된 시냅스들을 표현한다.
[0314]
EC327b) EC327의 시스템에 있어서, 각각의 가중치는 시냅스에 대응하고, 각각의 부분 합은 자극에 대응하고, 누적 가중 부분 합들은 총 자극에 대응하며, 그리고 레이어에 대한 각각의 출력 활성화는 뉴런 출력에 대응한다.
[0315]
EC328) EC313의 시스템은 트레이닝 세트를 집합적으로 포함하는 복수의 입력 샘플들 각각에 대한 트레이닝 워크로드의 반복을 수행하기 위한 수단을 더 포함한다.
[0316]
EC329) EC328의 시스템에 있어서, 미리결정된 학습 규칙은, 전체 트레이닝 세트에 대한 모든 패스들의 완료 이후 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0317]
EC329b) EC329의 시스템에 있어서, 미리결정된 학습 규칙은 확률론적 구배 하강 프로세스를 따른다.
[0318]
EC329c) EC329의 시스템에 있어서, 미리결정된 학습 규칙은 미니-배치 구배 하강 프로세스를 따른다.
[0319]
EC329d) EC329의 시스템에 있어서, 미리결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스를 따른다.
[0320]
EC330) EC328의 시스템은 트레이닝 세트를 복수의 소위 미니-배치들로 파티셔닝하기 위한 수단을 더 포함하고, 그리고 미리결정된 학습 규칙은 각각의 미니-배치들에 포함된 입력 샘플들에 대한 모든 패스들의 완료 후에 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0321]
EC331) EC328의 시스템은 트레이닝 세트를 복수의 소위 미니-배치들로 파티셔닝하기 위한 수단을 더 포함하며, 그리고 미리결정된 학습 규칙은 각각의 미니-배치들의 각각의 입력 샘플에 대한 모든 패스들의 완료 후에 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정한다.
[0322]
EC331b) EC331의 시스템에 있어서, 미리결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스를 따른다.
[0323]
EC332) EC331의 시스템에 있어서, 미니-배치 학습이 제1 복수의 프로세서 엘리먼트들 내에서 진행되고 있는 동안, 포워드 패스는 제1 복수의 프로세서 엘리먼트들 내에 가중치 업데이트들을 통합한다.
[0324]
EC333) EC313의 시스템에 있어서, 스토리지는 컴퓨트 엔진에 대해 로컬인 메모리에 포함된다.
[0325]
EC333b) EC313의 시스템에 있어서, 스토리지는 컴퓨트 엔진에 포함된다.
[0326]
EC333b) EC313의 시스템에 있어서, 스토리지는 각각의 컴퓨트 엔진에 어태치된 개별 메모리이다.
[0327]
EC334) EC313의 시스템에 있어서, 스토리지는 2D 행렬 데이터 구조를 저장하는 것이 가능하다.
[0328]
EC334b) EC313의 시스템에 있어서, 스토리지는 다차원 데이터 구조를 저장하는 것이 가능하다.
[0329]
EC334c) EC313의 시스템에 있어서, 스토리지는 2D, 3D, 4D, 5D 및 6D로 구성된 그룹으로부터 선택된 디멘션을 포함하는 텐서 데이터 구조를 저장하는 것이 가능하다.
[0330]
EC335) EC313의 시스템에 있어서, 각각의 컴퓨트 엔진은 구배 누적, 포워드 부분 합들, 델타 부분 합들, 및 포워드 패스 활성화들을 위한 스토리지를 더 포함한다.
[0331]
EC336) EC314의 시스템에 있어서, 데이터는 포워드 패스 동안 뉴럴 네트워크의 논리적 단부로 전파되고 델타 및 체인 패스들 동안 역 논리 방향으로 다시 순환된다.
[0332]
EC337) EC313의 시스템에 있어서, 포워드 패스는 델타 및 체인 패스들에 의한 사용을 위해 활성화들을 저장한다.
[0333]
EC338) EC313의 시스템은, 포워드, 델타 및 체인 패스들에 걸쳐 각각의 프로세서 엘리먼트를 시간 공유하기 위한 수단을 더 포함한다.
[0334]
EC339) EC328의 시스템은, 각각의 입력 샘플에 대해, 입력 샘플에 대응하는 포워드 패스, 델타 패스 및 체인 패스의 완료에 대한 응답으로, 미리결정된 학습 규칙에 따라 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하기 위한 수단을 더 포함한다.
[0335]
EC339b) EC339의 시스템에 있어서, 미리결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스를 따른다.
[0336]
EC340) EC339의 시스템은, 각각의 포워드 패스에 대해, 적어도 하나의 부분-뉴런 가중치의 가장 최근의 선택적 업데이트에 의해 제공되는 가중치 정보를 선택적으로 사용하기 위한 수단을 더 포함한다.
[0337]
EC341) EC340의 시스템은, 트레이닝 워크로드의 이전 반복에 대응하는 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트가 발생했는지 여부와 관계없이 트레이닝 워크로드의 특정 반복의 포워드 패스를 개시하기 위한 수단을 더 포함한다.
[0338]
EC342) EC340의 시스템은, 트레이닝 워크로드의 이전 반복의 델타 패스가 시작되었는지 여부와 관계없이 트레이닝 워크로드의 특정 반복의 포워드 패스를 선택적으로 개시하기 위한 수단을 더 포함한다.
[0339]
EC343) EC340의 시스템은, 컴퓨트 엔진들 중 적어도 하나에서, 트레이닝 워크로드의 이전 반복에 대한 포워드 패스의 적어도 일부를 수행한 후에 그리고 트레이닝 워크로드의 이전 반복에 대응하는 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트의 일부를 수행하기 전에, 트레이닝 워크로드의 후속 반복에 대한 포워드 패스의 적어도 일부를 수행하기 위한 수단을 더 포함한다.
[0340]
EC344) EC340의 시스템은, 제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 각각의 입력 샘플에 대해 델타 패스 및 체인 패스를 선택적으로 수행하기 위한 수단을 더 포함한다.
[0341]
EC345) EC344의 시스템에 있어서, 제1 부분-뉴런 가중치는 가장 최근의 선택적 업데이트에 의해 생성되는 부분-뉴런 가중치이다.
[0342]
EC345b) EC345의 시스템에 있어서, 재컴퓨팅된 활성화들은 컴퓨테이션들 간에 저장될 필요가 없어, 정해진 시스템 트레이닝 구성에 대해 요구되는 총 메모리를 감소시킨다.
[0343]
EC345c) EC339, EC340, EC341 또는 EC342의 시스템에 있어서, 동시적 레이어 트레이닝은 미리결정된 정확도 목표를 더 빠른 수렴 레이트로 달성하는 것을 가능하게 함으로써, 정해진 시스템 트레이닝 구성에 요구되는 총 트레이닝 시간을 감소시킨다.
[0344]
EC345d) EC339, EC340, EC341 또는 EC342의 시스템에 있어서, 동시적 레이어 트레이닝은 정해진 총 트레이닝 시간 및 시스템 트레이닝 구성에 대해 증가된 정확도를 가능하게 한다.
[0345]
EC346) EC340의 시스템은, 각각의 컴퓨트 엘리먼트에서, 제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 입력 샘플에 대해 델타 패스의 일부들 및 체인 패스의 일부들을 선택적으로 수행하기 위한 수단을 더 포함한다.
[0346]
EC347) EC346의 시스템에 있어서, 제1 부분-뉴런 가중치는 가장 최근의 선택적 업데이트에 의해 생성되는 부분-뉴런 가중치이다.
[0347]
EC400) 방법으로서,
복수의 정렬된 연결된 레이어들을 포함하는 뉴럴 네트워크를 트레이닝하는 단계를 포함하며;
순서는 각각의 개별 레이어에 대해 레이어들 중 어떤 다른 레이터들이 개별 레이어에 선행하고 레이어들 중 어떤 다른 레이어들이 개별 레이어에 후속하는지를 식별하고;
각각의 레이어는 하나 이상의 뉴런들을 포함하고, 각각의 뉴런은 가중치들을 포함하고, 이전 레이어의 적어도 하나의 이전 뉴런, 및 후속 레이어의 적어도 하나의 후속 뉴런 중 적어도 하나에 연결되며; 그리고
각각의 뉴런은 하나 이상의 프로세싱 엘리먼트들에 의해 구현되고, 각각의 프로세싱 엘리먼트는,
패브릭에 대한 적어도 하나의 커플링 ― 프로세싱 엘리먼트는 복수의 가상 채널들을 통해 패브릭을 통해 통신하는 것이 가능함 ―,
뉴런의 적어도 컴퓨테이션들에 대응하는 명령들을 저장하는 것이 가능한 제1 메모리,
가중치들을 저장하는 것이 가능한 제2 메모리, 및
개별 제1 메모리로부터의 명령들을 실행하고 개별 제2 메모리로부터의 데이터에 액세스하는 것이 가능한 하드웨어 실행 자원들을 포함한다.
[0348]
EC401) EC400의 방법에 있어서, 트레이닝하는 단계는,
제1 활성화 및 제1 가중치들에 기반하여, 제2 활성화를 결정하는 단계;
제1 델타 및 제1 가중치들에 기반하여, 제2 가중치들을 결정하고 저장하는 단계;
제3 활성화 및 선택된 가중치들에 기반하여, 제4 활성화를 결정하는 단계 ― 선택된 가중치들은 제1 가중치들 및 제2 가중치들로부터 동적으로 선택됨 ―; 및
제2 델타 및 선택된 가중치들에 기반하여, 제3 가중치들을 결정하고 저장하는 단계를 포함한다.
[0349]
EC402) EC401의 방법에 있어서, 제2 활성화를 결정하는 단계는,
패브릭을 통해 적어도 하나의 이전 뉴런으로부터 제1 활성화를 수신하는 단계;
제1 메모리에 저장된 제1 명령들을 적어도 실행하고 제2 메모리의 제1 가중치들에 액세스함으로써 제1 활성화 및 제1 가중치들에 적어도 부분적으로 기반하여 제2 활성화를 컴퓨팅하는 단계; 및
패브릭을 통해 적어도 하나의 후속 뉴런으로 제2 활성화를 선택적으로 송신하는 단계를 포함한다.
[0350]
EC403) EC401의 방법에 있어서, 제2 가중치들을 결정하고 저장하는 단계는,
패브릭을 통해 적어도 하나의 후속 뉴런으로부터, 제2 활성화에 부분적으로 기반하는 제1 델타를 수신하는 단계;
제1 메모리에 저장된 제2 명령들을 적어도 실행함으로써 제1 델타 및 제2 활성화에 적어도 부분적으로 기반하여 제1 구배를 컴퓨팅하는 단계;
제1 메모리에 저장된 제3 명령들을 적어도 실행하고 제2 메모리의 제1 가중치들에 액세스함으로써 제1 구배, 학습 규칙 및 제1 가중치들에 적어도 부분적으로 기반하여 제2 가중치들을 컴퓨팅하는 단계; 및
제2 가중치들을 제2 메모리에 저장하는 단계를 포함한다.
[0351]
EC404) EC402의 방법에 있어서, 제4 활성화를 결정하는 단계는,
패브릭을 통해 적어도 하나의 이전 뉴런으로부터 제3 활성화를 수신하는 단계;
제1 명령들을 적어도 실행하고 제2 메모리의 선택된 가중치들에 액세스함으로써 제3 활성화 및 선택된 가중치들에 적어도 부분적으로 기반하여 제4 활성화를 컴퓨팅하는 단계; 및
패브릭을 통해 적어도 하나의 후속 뉴런으로 제4 활성화를 선택적으로 송신하는 단계를 포함한다.
[0352]
EC405) EC403의 방법에 있어서, 제3 가중치들을 결정하고 저장하는 단계는,
패브릭을 통해 적어도 하나의 후속 뉴런으로부터, 제4 활성화에 부분적으로 기반하는 제2 델타를 수신하는 단계;
제1 메모리에 저장된 제2 명령들을 적어도 실행함으로써 제3 델타 및 제4 활성화에 적어도 부분적으로 기반하여 제2 구배를 컴퓨팅하는 단계;
저장된 제3 명령들을 적어도 실행하고 제2 메모리 내의 선택된 가중치들에 액세스함으로써 제2 구배, 학습 규칙 및 선택된 가중치들에 적어도 부분적으로 기반하여 제3 가중치들을 컴퓨팅하는 단계; 및
제3 가중치들을 제2 메모리에 저장하는 단계를 포함한다.
[0353]
EC406) EC404의 방법에 있어서, 제2 가중치들을 결정하고 저장하는 단계는,
패브릭을 통해 적어도 하나의 후속 뉴런으로부터, 제2 활성화에 부분적으로 기반하는 제1 델타를 수신하는 단계;
제1 메모리에 저장된 제2 명령들을 적어도 실행함으로써 제1 델타 및 제2 활성화에 적어도 부분적으로 기반하여 제1 구배를 컴퓨팅하는 단계;
제1 메모리에 저장된 제3 명령들을 적어도 실행하고 제2 메모리의 제1 가중치들에 액세스함으로써 제1 구배, 학습 규칙 및 제1 가중치들에 적어도 부분적으로 기반하여 제2 가중치들을 컴퓨팅하는 단계; 및
제2 가중치들을 제2 메모리에 저장하는 단계를 포함한다.
[0354]
EC407) EC406의 방법에 있어서, 제3 가중치들을 결정하고 저장하는 단계는,
패브릭을 통해 적어도 하나의 후속 뉴런으로부터, 제4 활성화에 부분적으로 기반하는 제2 델타를 수신하는 단계;
제1 메모리에 저장된 제2 명령들을 적어도 실행함으로써 제3 델타 및 제4 활성화에 적어도 부분적으로 기반하여 제2 구배를 컴퓨팅하는 단계;
저장된 제3 명령들을 적어도 실행하고 제2 메모리 내의 선택된 가중치들에 액세스함으로써 제2 구배, 학습 규칙 및 선택된 가중치들에 적어도 부분적으로 기반하여 제3 가중치들을 컴퓨팅하는 단계; 및
제3 가중치들을 제2 메모리에 저장하는 단계를 포함한다.
[0355]
EC408) EC403의 방법에 있어서, 선택된 가중치들은 제1 가중치들 및 제2 가중치들 중 어느 것이 가장 최근에 저장되었는지에 따라 동적으로 선택된다.
[0356]
EC409) EC401의 방법에 있어서, 제4 활성화를 결정하는 단계는 제2 활성화를 결정한 후 그리고 제2 가중치들을 결정하고 저장하기 전에 수행되는 것이 가능할 수 있다.
[0357]
EC410) EC404의 방법에 있어서, 제2 활성화 및 제4 활성화를 선택적으로 송신하는 단계는 제2 활성화 및 제4 활성화의 개별 값들에 선택적으로 기반한다.
[0358]
EC411) EC404의 방법에 있어서, 제2 활성화 및 제4 활성화를 선택적으로 송신하는 단계는 제2 활성화 및 제4 활성화의 개별 절대 값들이 개별 제1 및 제2 임계 값들을 초과하는 것에 선택적으로 기반한다.
[0359]
EC412) EC400의 방법에 있어서, 적어도 하나의 뉴런이 복수의 프로세싱 엘리먼트들에 의해 구현된다.
[0360]
EC413) EC405의 방법에 있어서, 제4 활성화를 결정하는 단계는 제2 메모리에 제4 활성화를 저장하는 단계를 추가로 포함하고, 제2 구배를 컴퓨팅하는 단계는 제2 메모리 내의 제4 활성화에 액세스하는 단계를 추가로 포함한다.
[0361]
EC414) EC407의 방법에 있어서, 제2 구배를 컴퓨팅하는 단계는 선택된 가중치들에 적어도 부분적으로 기반하여 제4 활성화를 임의적으로 재컴퓨팅하는 단계를 추가로 포함한다.
[0362]
EC415) EC407의 방법에 있어서, 제1 구배를 컴퓨팅하는 단계는 제1 가중치들에 적어도 부분적으로 기반하여 제2 활성화를 임의적으로 재컴퓨팅하는 단계를 추가로 포함한다.
[0363]
EC416) EC400의 방법에 있어서, 각각의 프로세싱 엘리먼트는 데이터 흐름-기반 프로세싱을 수행하는 것이 가능하다.
[0364]
EC417) EC400의 방법에 있어서, 각각의 프로세싱 엘리먼트는 패브릭 라우터를 포함한다.
[0365]
EC418) EC400의 방법에 있어서, 각각의 프로세싱 엘리먼트는 프로세싱 엘리먼트들 중 다른 프로세싱 엘리먼트들과 패브릭 패킷들을 선택적으로 통신하는 것이 가능하다.
[0366]
EC419) EC418의 방법에 있어서, 각각의 프로세싱 엘리먼트는 프로세싱 엘리먼트가 수신하는 각각의 패브릭 패킷의 가상 채널 지정자 및 태스크 지정자에 따른 프로세싱을 수행하는 것이 가능하다.
선택된 실시예 세부사항들
[0367]
심층 학습 가속기 하드웨어 엘리먼트들 및 소프트웨어 엘리먼트들을 포함하는 뉴럴 네트워크 트레이닝 및 추론에 관한 실시예들이 본원에서 설명된다(예컨대, 도 1-4 및 섹션 "심층 학습 가속기 개요" 참조). 심층 학습 가속기는 하드웨어 프로세싱 엘리먼트들로 구성된다(예컨대, 도 5-8 및 섹션 "프로세싱 엘리먼트: 컴퓨트 엘리먼트 및 라우터" 참조). 심층 학습 가속기는 다양한 기법들, 이를테면 태스크 개시 및 클로즈아웃(예컨대, 도 9-12 및 섹션 "태스크들" 참조), 웨이블릿 프로세싱(예컨대, 도 13a-15b 및 섹션 "웨이블릿들" 참조), 태스크 차단 및 비차단(예컨대, 도 16 및 섹션 "차단 및 비차단" 참조), 뉴런 스미어링(예컨대, 도 17-20 및 섹션 "뉴런 스미어링" 참조), 패브릭 벡터들, 메모리 벡터들 및 연관된 데이터 구조 설명자들(예컨대, 도 21a-24 및 섹션 "벡터들 및 데이터 구조 설명자들" 참조) 및 명령 포맷들(예컨대, 도 25a-25c 및 섹션 "명령 포맷들" 참조)을 구현 및/또는 사용한다. 심층 학습 가속기는 다양한 시나리오들에서 사용가능하다(예컨대, 도 26a-27e 및 섹션 "심층 학습 가속기 예 사용들"뿐만 아니라 도 28a-29 및 섹션 "예시적인 워크로드 맵핑" 참조). 심층 학습 가속기는 다양한 실시예들에서 고려된다(예컨대, 섹션 "다른 실시예 세부사항들" 참조). 심층 학습 가속기는 다양하게 구현가능하다(예컨대, 섹션 "예시적인 구현 기법들" 참조).
심층 학습 가속기 개요
[0368]
도 1은 뉴럴 네트워크 시스템(100)으로서 심층 학습 가속기를 사용하여 뉴럴 네트워크 트레이닝 및 추론을 위한 시스템의 실시예의 선택된 세부사항들을 예시한다. 개념상으로 뉴럴 네트워크는 심층 학습 가속기를 사용하여 트레이닝된다. 이어서, 트레이닝의 하나 이상의 결과들(예컨대, 가중치들)이 추론들에 사용된다. 예컨대, 트레이닝은 뉴럴 네트워크의 뉴런들을 심층 학습 가속기의 PE들에 맵핑하는 것을 포함한다. 이어서 트레이닝 데이터가 PE들에 적용된다. PE들은 (예컨대, 포워드, 델타 및 체인 패스들을 통해) 트레이닝 데이터를 프로세싱하고, 트레이닝이 완료될 때까지 가중치들을 업데이트한다. 이어서 가중치들이 추론에 사용된다.
[0369]
도면을 참조하면, 심층 학습 가속기(120)는 커플링(123)에 의해 예시된 바와 같이 서로 통신하는 것이 가능한 FPGA들(121) 및 PE들(122)을 포함한다. (CPU들(151) 및 CRM(152)을 포함하는) 배치 서버(들)(150)가 LAN(111)을 통해 (CPU들(161), CRM(162) 및 NIC들(164)을 포함하는) 연결 서버(들)(160)에 커플링된다. 연결 서버(들)(160)는 NIC들(164) 및 100Gb(112)를 통해 FPGA들(121)과 통신하는 것이 가능하다. 자율주행 차량(130)은 CPU들(131), CRM(132), IE들(133) 및 카메라(135)를 포함한다. 휴대 전화(140)는 CPU들(141), CRM(142), IE들(143) 및 카메라(145)를 포함한다.
[0370]
인터넷(180)은 다양한 실시예들 및/또는 사용 시나리오들에 따라 배치 서버(들)(150), 연결 서버(들)(160), 자율주행 차량(130) 및/또는 휴대 전화(140)의 임의의 조합 사이의 (명시적으로 예시되지 않은) 커플링을 제공한다.
[0371]
파선-화살표 배치들(113)은 (예컨대, LAN(111), 연결 서버(들)(160)/NIC들(164), 100Gb(112), FPGA들(121) 및 커플링(123)을 통해) 배치 서버(들)(150)로부터 PE들(122)로 통신된 배치 정보를 개념상으로 표시한다. 일부 실시예들 및/또는 사용 시나리오들에서, 배치들(113)은 암시적이며, PE들(122)의 라우터 엘리먼트들 및 PE들(122)의 컴퓨트 엘리먼트들에 제공된 초기화 정보에 반영된다. 일부 실시예 및/또는 사용 시나리오에서, PE들(122)과의 동작을 위해 FPGA들(121)의 엘리먼트들을 구성하도록 배치들(113)의 초기화 정보 중 일부가 FPGA들(121)에 제공된다.
[0372]
파선-화살표 가중치들(114) 및 파선-화살표 가중치들(115)은 (예컨대, 커플링(123), FPGA들(121), 100Gb(112), 연결 서버(들)(160)/NIC들(164) 및 인터넷(180)을 통해) PE들(122)로부터 각각 자율주행 차량(130) 및 휴대 전화(140)로 통신된 가중치 정보를 개념상으로 표시한다. 일부 실시예들 및/또는 사용 시나리오들에서, 가중치 정보는 트레이닝, 트레이닝의 서브-샘플링, 트레이닝의 양자화, 및/또는 트레이닝의 다른 변환들의 결과로서 직접 산출된 가중치 정보의 모든 또는 임의의 부분들 중 임의의 하나 이상이다.
[0373]
심층 학습 가속기(120)는 이를테면, 100Gb(112)를 통해 수신된 배치 정보 및 트레이닝 정보에 대한 응답으로 가중치들을 컴퓨팅함으로써 뉴럴 네트워크들의 트레이닝을 수행하는 것이 가능하다. 심층 학습 가속기(120)는 트레이닝 완료시, 100Gb(112)를 통해 결과들로서 가중치들을 제공하는 것이 추가로 가능하다. 이어서 가중치들은 이를테면, 자율주행 차량(130)에서 그리고/또는 휴대 전화(140)에서 추론에 사용가능하다. PE들(122)은 트레이닝과 관련된 라우팅 및 컴퓨테이션들을 독립적으로 수행하는 것이 각각 가능한 상대적으로 많은 수의 PE들(예컨대, 10,000 이상)을 포함한다. 일부 실시예들 및/또는 사용 시나리오들에서, PE들(122)은 웨이퍼-스케일 통합, 이를테면 단일 웨이퍼의 개별 다이스 상에 구현된 개별 복수의 PE들을 통해 구현된다. FPGA들(121)은 PE들(122)을 100Gb(112)를 통해 제공된 정보에 인터페이싱하는 것이 가능하다. 인터페이싱은 커플링(123) 상에서 통신되는 바와 같이, 수정된 이더넷 프레임들로부터 웨이블릿들로/웨이블릿들로부터 수정된 이더넷 프레임들로의 변환을 포함한다.
[0374]
배치 서버(들)(150)는 하나 이상의 배치 프로그램들을 통해 (예컨대, 배치들(113)에 의해 표시된 바와 같이) 뉴런들의 배치들을 프로그램방식으로 결정하는 것이 가능하다. 배치 프로그램들은 CRM(152)에 저장되고 CPU들(151)에 의해 실행된다. 배치 정보는 LAN(111)을 통해 연결 서버(들)(160)로 통신된다. 배치의 예는 뉴럴 네트워크의 논리적 뉴런들을 물리적 메모리 및 실행 하드웨어 자원들(예컨대, PE들(122))에 맵핑하는 것이다.
[0375]
연결 서버(들)(160)는 FPGA들(121)과 통신하는 것이 그리고 FPGA들(121)/커플링(123)을 통해, NIC들(164) 그리고 드라이버 프로그램들을 통한 이들의 프로그래밍된 제어를 통해 PE들(122)과 간접적으로 통신하는 것이 가능하다. 다양한 실시예들 및/또는 사용 시나리오들에서, 통신은 (예컨대, 배치 서버(들)(150)로부터의) 배치 정보, (예컨대, 예시되지 않았지만 인터넷(180)을 통해 액세스가능한 소스들로부터의) 트레이닝 정보 및/또는 트레이닝의 결과들(예컨대, PE들(122)로부터의 가중치들)을 포함한다. 드라이버 프로그램들은 CRM(162)에 저장되고 CPU들(161)에 의해 실행된다.
[0376]
자율주행 차량(130)은 CRM(132)에 저장된 프로그램들을 실행하는 CPU들(131)에 의해 프로그램방식으로 제어 및/또는 보조되는 IE들(133)을 사용하여 추론들을 수행하기 위해 가중치들(114)을 사용하는 것이 가능하다. 추론들은 카메라(135)로부터 획득된 정보를 사용하여 임의적으로 그리고/또는 선택적으로 수행된다. 예컨대, 차는 자율주행 차량으로서 작동가능하다. 차는 추론 엔진에 비디오를 제공하는 것이 가능한 카메라들을 포함한다. 추론 엔진은 차의 내비게이팅과 관련된 오브젝트들, 이를테면 차선들, 장애물들 및 다른 오브젝트들을 인식하는 것이 가능하다. 차는 오브젝트 인식의 결과들을 사용하여 내비게이팅하는 것이 가능하다. 제공, 인식 및 내비게이팅의 임의의 조합은 적어도 부분적으로는, CRM에 저장된 프로그램들을 실행하는 하나 이상의 CPU들을 통해 제어 및/또는 수행된다.
[0377]
휴대 전화(140)는 CRM(142)에 저장된 프로그램들을 실행하는 CPU들(141)에 의해 프로그램방식으로 제어 및/또는 보조되는 IE들(143)을 사용하여 추론들을 수행하기 위해 가중치들(115)을 사용하는 것이 가능하다. 추론들은 카메라(145)로부터 획득된 정보를 사용하여 임의적으로 그리고/또는 선택적으로 수행된다. 예컨대, 휴대 전화는 소셜 네트워킹 웹 사이트에 태그된 사진들을 포스팅하도록 작동가능하다. 휴대 전화는 이미지 데이터를 추론 엔진에 제공하는 것이 가능한 카메라를 포함한다. 추론 엔진은 이미지에서 오브젝트들을 (예컨대, '고양이', '개' 등의 타입으로 또는 이름, 이를테면 'Bob', 'Mary' 등으로) 태그하는 것이 가능하다. 휴대 전화는 이미지 및 태그의 결과들을 소셜 네트워킹 웹 사이트에 포스팅하는 것이 가능하다. 제공, 태그 및 포스팅의 임의의 조합은 적어도 부분적으로는, CRM에 저장된 프로그램들을 실행하는 하나 이상의 CPU들을 통해 제어 및/또는 수행된다.
[0378]
다양한 실시예들 및/또는 사용 시나리오들에서, 심층 학습 가속기를 통해 결정된 가중치 정보의 모든 또는 임의의 부분들은 추론 사용 전에 가속기 외부에서 포스트-프로세싱된다. 예컨대, 가중치들(114) 및/또는 가중치들(115)로 표현된 정보의 모든 또는 임의의 부분들은 자율주행 차량(130) 및/또는 휴대 전화(140)에 의한 추론 사용 전에 배치 서버(들)(150)에 의해 전체적으로 또는 부분적으로 프로세싱된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 포스트-프로세싱의 예는 가중치들(114) 및/또는 가중치들(115)을 양자화(예컨대, 부동 소수점 수 포맷에서 고정 소수점 수 포맷으로 변환)하는 것을 포함한다. 다양한 실시예들 및/또는 사용 모델들에서, 카메라(135) 및 카메라(145)는 IE들(133) 및 IE(143)에 입력을 제공하는 센서들의 개별 예들이다. 센서들의 다른 예들은 로케이션 센서들, 배향 센서들, 자기 센서들, 광 센서들 및 압력 센서들이다.
[0379]
CPU들(151)은 개별 명령 세트 아키텍처들과 호환가능한 하나 이상의 CPU들을 포함한다. CPU들(151)은 명령 세트 아키텍처들에 따라 CRM(152)으로부터 명령들을 페치하여 실행하는 것이 가능하다. CPU들(161)은 개별 명령 세트 아키텍처들과 호환가능한 하나 이상의 CPU들을 포함한다. CPU들(161)은 명령 세트 아키텍처들에 따라 CRM(162)으로부터 명령들을 페치하여 실행하는 것이 가능하다. 일부 실시예들에서, CPU들(151)의 명령 세트 아키텍처들 중 적어도 하나는 CPU들(161)의 명령 세트 아키텍처들 중 적어도 하나와 호환가능하다.
[0380]
CPU들(131)은 개별 명령 세트 아키텍처들과 호환가능한 하나 이상의 CPU들을 포함한다. CPU들(131)은 명령 세트 아키텍처들에 따라 CRM(132)으로부터 명령들을 페치하여 실행하는 것이 가능하다. CPU들(141)은 개별 명령 세트 아키텍처들과 호환가능한 하나 이상의 CPU들을 포함한다. CPU들(141)은 명령 세트 아키텍처들에 따라 CRM(142)으로부터 명령들을 페치하여 실행하는 것이 가능하다. 일부 실시예들에서, CPU들(131)의 명령 세트 아키텍처들 중 적어도 하나는 CPU들(141)의 명령 세트 아키텍처들 중 적어도 하나와 호환가능하다. 일부 실시예들에서, CPU들(151), CPU들(161), CPU들(131) 및 CPU들(141) 중 임의의 하나 이상은 서로 호환가능한 명령 세트 아키텍처들을 갖는다.
[0381]
CRM(152), CRM(162), CRM(132) 및 CRM(142) 각각의 적어도 개별 부분은 비-휘발성이며, 플래시 메모리, 자기 메모리, 광학 메모리, 페이지-변화(phase-change) 메모리, 및 다른 비-휘발성 메모리 기술 엘리먼트들 중 임의의 하나 이상으로 구성된다.
[0382]
다양한 실시예들 및/또는 사용 시나리오들에서, IE들(133) 및/또는 IE들(143)은 심층 학습 가속기(120)에 의해 결정된(그리고 개념상으로 가중치들(114) 및/또는 가중치들(115)로 표시된) 가중치 정보를 사용하는 것이 가능한 하나 이상의 추론 엔진들을 포함한다. 다양한 실시예들 및/또는 사용 시나리오들에서, IE들(133)은 CPU들(131)에 의해 실행되고 CRM(132)에 저장된 프로그램들과 함께 그리고/또는 그 제어하에 동작한다. 다양한 실시예들 및/또는 사용 시나리오들에서, IE들(143)은 CPU들(141)에 의해 실행되고 CRM(142)에 저장된 프로그램들과 함께 그리고/또는 그 제어하에 동작한다. 다양한 실시예들 및/또는 사용 시나리오들에서, IE들(133) 및/또는 IE들(143)의 모든 또는 임의의 부분들은 HW 및/또는 SW 기법들의 다양한 조합들을 통해 구현된다. 일부 실시예들에서, IE들(133) 및/또는 IE들(143)에 의해 제공되는 기능성의 모든 또는 임의의 부분들은 이를테면, 심층 학습 가속기(120)에 의해 구현된 그리고/또는 이와 연관된 기법들을 사용하여 구현된다. 다양한 실시예들 및/또는 사용 시나리오들에서, IE들(133) 및/또는 IE들(143)의 모든 또는 임의의 부분들은 종래의 CPU들, 종래의 GPU들, 종래의 DSP들, 종래의 FPGA들 및 특화된 하드웨어의 다양한 조합들을 포함하는 기법들을 통해 다양하게 구현된다.
[0383]
다양한 실시예들에서, 100Gb(112)는 다양하게, 표준 이더넷 프레임들을 전송하기 위한 100Gb 이더넷 커플링, 수정된 이더넷 프레임들을 전송하기 위한 100Gb 이더넷 커플링, 수정된 이더넷 프레임들을 전송하기 위한 100GB 수정된 이더넷 커플링, 이더넷 기술 이외의 100Gb 직렬 커플링, 또는 일부 다른 상대적으로 고속 직렬 커플링이다.
[0384]
일부 실시예들 및/또는 사용 시나리오들에서, 커플링(123)은 정보를 웨이블릿들로서 통신한다.
[0385]
다양한 실시예들에서, LAN(111)은 기법들, 이를테면 이더넷, 파이버 채널 및/또는 다른 적절한 상호 연결 기술들을 사용하여 구현된다.
[0386]
일부 실시예들 및/또는 사용 시나리오들에서, 배치 서버(들)(150) 및 연결 서버(들)(160)는 결합 서버(들)(110)에 의해 개념상으로 예시된 바와 같이, 결합된 엘리먼트(예컨대, 공유 CPU, CRM 및/또는 NIC 자원들)로서 구현 및/또는 작동된다. 일부 실시예들 및/또는 사용 시나리오들에서, 배치 서버(들)(150) 및 연결 서버(들)(160)는 LAN(111)보다는(또는 이에 추가로) 인터넷(180)을 통해 커플링된다.
[0387]
도 2는 뉴럴 네트워크 소프트웨어(200)로서 심층 학습 가속기를 사용하여 뉴럴 네트워크 트레이닝 및 추론과 연관된 소프트웨어 엘리먼트들의 실시예의 선택된 세부사항들을 예시한다. 실시예에 따르면, 배치 서버(들) SW(210)는 뉴런 대 PE 맵핑 SW(212) 뿐만 아니라 예시되지 않은 다른 엘리먼트들을 포함한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 배치 서버(들) SW(210)의 모든 또는 임의의 부분들은 CRM(152)에 저장되고 도 1의 CPU들(151)에 의해 실행가능하다. 뉴런 대 PE 맵핑 SW(212) 중 하나 이상의 프로그램들은 도 1의 PE들(122) 중 특정 PE들 상에 뉴럴 네트워크의 뉴런들의 배치들을 결정하는 것을 가능하게 한다.
[0388]
실시예에 따르면, 연결 서버(들) SW(220)은 100Gb NIC 드라이버(224), 트레이닝 정보 제공자 SW(225), 및 가중치 수신기 SW(226) 뿐만 아니라 예시되지 않은 다른 엘리먼트들을 포함한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 연결 서버(들) SW(220)의 모든 또는 임의의 부분들은 CRM(162)에 저장되고 도 1의 CPU들(161)에 의해 실행가능하다. 100Gb NIC 드라이버(224)의 하나 이상의 프로그램들은 도 1의 연결 서버(들)(160) 및 심층 학습 가속기(120) 둘 모두 간의 통신을 (또한 도 1의 NIC들(164) 및 100Gb(112)를 통해) 가능하게 한다. 트레이닝 정보 제공자 SW(225)의 하나 이상의 프로그램들은 도 1의 심층 학습 가속기(120)로의 (NIC들(164) 및 100Gb(112)를 통한) 통신을 위해 100Gb NIC 드라이버(224)의 제어 하에 애플리케이션에 대한 트레이닝 정보의 결정을 가능하게 한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 트레이닝 정보는, 예컨대, 도 1의 연결 서버(들)(160) 및/또는 인터넷(180) 둘 모두가 액세스할 수 있는 비-휘발성 스토리지로부터 다양하게 결정된다. 가중치 수신기 SW(226)의 하나 이상의 프로그램들은 (NIC들(164) 및 100Gb(112)를 통해) 심층 학습 가속기(120)에 의해 결정된 바와 같이 100Gb NIC 드라이버(224)의 제어 하에 가중치 정보를 수신하는 것을 가능하게 한다.
[0389]
다양한 실시예들 및/또는 사용 시나리오들에서, FPGA들(250) 상의 Misc SW는 도 1의 FPGA들(121)에 포함된 하나 이상의 CPU들에 의해 실행되는 SW를 개념적으로 표현한다. FPGA들의 CPU들은, 예컨대, FPGA들(121)의 하나 이상의 엘리먼트들의 제조 동안 하드-코딩되고 그리고/또는 FPGA들(121)의 하나 이상의 엘리먼트들의 초기화 동안 소프트-코딩된다. 다양한 실시예들 및/또는 사용 시나리오들에서, FPGA들(250) 상의 Misc SW의 모든 또는 임의의 부분들 및/또는 이의 표현은 FPGA들(121)에 포함되고 그리고/또는 연결 서버(들)(160)가 액세스할 수 있는 비-휘발성 메모리에 저장된다. 다양한 실시예들 및/또는 사용 시나리오들에서, FPGA들(250) 상의 Misc SW는 이를테면 도 1의 PE들(122)의 초기화 및/또는 디버깅과 관련된 다양한 하우스키핑 기능들을 수행하는 것을 가능하게 한다.
[0390]
다양한 실시예들 및/또는 사용 시나리오들에서, PE들(260) 상의 태스크 SW는 PE들(122)의 다양한 PE들 상에서 태스크들로서 실행된 분산된 SW를 개념적으로 표현한다. 다양한 실시예들 및/또는 사용 시나리오들에서, PE들(260) 상의 태스크 SW의 모든 또는 임의의 부분들 및/또는 이의 표현은 PE들(122)에 포함되고 그리고/또는 연결 서버(들)(160)가 액세스할 수 있는 비-휘발성 메모리에 저장된다. 다양한 실시예들 및/또는 사용 시나리오들에서, PE들(260) 상의 태스크 SW는 이를테면 (예컨대, 포워드, 델타 및 체인 패스들을 통해) 뉴럴 네트워크의 가중치들을 결정하기 위해 트레이닝 데이터의 프로세싱을 수행하는 것을 가능하게 한다.
[0391]
실시예에 따르면, 자율주행 차량 SW(230)는 비디오 카메라 SW(232), 추론 엔진(들) SW(233) 및 내비게이팅 SW(234) 뿐만 아닐 예시되지 않은 다른 엘리먼트들을 포함한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 자율주행 차량 SW(230)의 모든 또는 임의의 부분들은 CRM(132)에 저장되고 도 1의 CPU들(131)에 의해 실행가능하다. 비디오 카메라 SW(232)의 하나 이상의 프로그램들은 추론 엔진(들) SW(233)에 비디오 정보를 제공하기 위해 도 1의 카메라(135)를 제어 및/또는 동작시키는 것을 가능하게 한다. 추론 엔진(들) SW(233)의 하나 이상의 프로그램들은 비디오 정보로부터 내비게이션 정보, 이를테면 회피할 오브젝트들 및/또는 따라야 할 차선들을 결정하기 위해 도 1의 IE들(133)을 제어 및/또는 동작시키는 것을 가능하게 한다. 내비게이팅 SW(234)의 하나 이상의 프로그램들은 내비게이션 정보에 대한 응답으로 자율주행 차량 SW(230)를 내비게이팅하는 것을 가능하게 한다.
[0392]
실시예에 따르면, 휴대 전화 SW(240)는 스틸 카메라 SW(242), 추론 엔진(들) SW(243), 포스팅 SW(244) 뿐만 아닐 예시되지 않은 다른 엘리먼트들을 포함한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 휴대 전화 SW(240)의 모든 또는 임의의 부분들은 CRM(142)에 저장되고 도 1의 CPU들(141)에 의해 실행가능하다. 스틸 카메라 SW(242)의 하나 이상의 프로그램들은 추론 엔진(들) SW(243)에 스틸 이미지 정보를 제공하기 위해 도 1의 카메라(145)를 제어 및/또는 동작시키는 것을 가능하게 한다. 추론 엔진(들) SW(243)의 하나 이상의 프로그램들은 스틸 이미지 정보로부터 태그 정보를 결정하기 위해 도 1의 IE들(143)을 제어 및/또는 동작시키는 것을 가능하게 한다. 포스팅 SW(244)의 하나 이상의 프로그램들은 스틸 이미지 정보 및/또는 태그 정보에 대한 응답으로 소셜 네트워킹 웹 사이트에 포스팅하는 것을 가능하게 한다.
[0393]
다양한 실시예들 및/또는 사용 시나리오들에서, SW 수집 배치 서버(들) SW(210), 연결 서버(들) SW(220), 자율주행 차량 SW(230) 및/또는 휴대 전화 SW(240) 중 임의의 하나 이상은 임의적으로 및/또는 선택적으로 하나 이상의 운영 시스템 엘리먼트들, 예컨대, 하나 이상의 실시간 운영 시스템들, 하나 이상의 비-실시간 운영 시스템들 및/또는 각각의 개별 SW 수집의 엘리먼트들을 조정하기 위한 하나 이상의 다른 제어 프로그램들을 포함한다.
[0394]
도 3은 트레이닝 뉴럴 네트워크와 연관된 프로세싱 및 뉴럴 네트워크 트레이닝/추론(300)과 같은 심층 학습 가속기를 사용하여 트레이닝된 뉴럴 네트워크를 사용한 추론을 수행하는 것의 실시예의 선택된 세부사항들을 예시한다. 예시된 바와 같이, 뉴럴 네트워크의 뉴런들은, 예컨대, 액션(310)에서 특정 PE 자원들과 할당 및/또는 연관되어 배치된다. 이어서 FPGA 자원들은 액션(320)에서 뉴럴 네트워크의 트레이닝을 위한 준비에서 초기화된다. 이어서 PE 자원들은 액션(330)에서 뉴럴 네트워크의 트레이닝을 위한 준비에서 초기화된다.
[0395]
FPGA 자원들 및 PE 자원들이 트레이닝을 위한 준비에서 초기화된 후, 트레이닝 데이터는 액션(340)에서 PE들에 적용된다. PE 자원들은 액션(350)에서 트레이닝 데이터를 프로세싱한다. 이어서, 예컨대 액션(360)에서 트레이닝 데이터의 애플리케이션이 완료되고 그리고/또는 하나 이상의 완료 기준들이 충족되기 때문에(이를테면 미리 결정된 한계 미만의 추론 에러), 트레이닝이 완료되는지 여부를 결정하기 위한 체크가 행해진다. 완료되지 않으면, 흐름은 추가의 트레이닝 데이터의 애플리케이션을 위해 액션(340)으로 되돌아 간다. 일부 시나리오들에서, 트레이닝은 완료되지 않고, 일부 실시예들에서, 그 대신 제어는 다른 액션(예시되지 않음)으로 패스되어 뉴럴 네트워크를 변화시키는 것(예컨대, 뉴런들의 레이어들을 추가하는 것, 뉴런들의 레이어들을 제거하는 것)을 가능하게 한다. 이어서, 변화된 뉴럴 네트워크는 액션들(310, 320, 330, 340, 350, 및 360)에 따라 트레이닝된다.
[0396]
트레이닝이 완료되면, 흐름은 370에서의 추론들에서 사용하기 위해 트레이닝의 결과들인 가중치들을 제공하는 것으로 계속된다. 일부 실시예들 및/또는 사용 시나리오들에서, 가중치들은 양자화되는데, 예컨대 정수 데이터 포맷으로 변환된다. 일부 실시예들 및/또는 사용 시나리오들에서, 정수 데이터 포맷은 감소된 정밀도 수 포맷(예컨대, 8-비트 또는 16-비트)이다. 이어서, 가중치들은 하나 이상의 추론 엔진들에 제공되고 액션(380)에서 추론하기 위해 사용된다.
[0397]
다양한 실시예들 및/또는 사용 시나리오들에서, 추론 엔진들은 하나 이상의 추론 애플리케이션들, 예컨대, 텍스트 번역, 광학 문자 인식, 이미지 분류, 안면 인식, 자율-주행 차에 대한 장면 인식, 스피치 인식, 고에너지 물리학에 대한 데이터 분석 및 신약 발굴에 대응한다.
[0398]
다양한 실시예들 및/또는 사용 시나리오들에서, PE 자원들은, 예컨대 도 1의 PE들(122)에 대응하고, FPGA 자원들은, 예컨대 도 1의 FPGA들(121)에 대응한다.
[0399]
다양한 실시예들 및/또는 사용 시나리오들에서, 뉴럴 네트워크 트레이닝/추론(300)의 액션들의 모든 또는 임의의 부분들 중 임의의 하나 이상은 도 1의 뉴럴 네트워크 시스템(100) 및/또는 도 2의 뉴럴 네트워크 소프트웨어(200) 중 임의의 하나 이상의 엘리먼트들의 모든 또는 임의의 부분들에 의해 수행되고 그리고/또는 그와 관련된다. 예컨대, 액션(310)의 모든 또는 임의의 부분들은 뉴런 대 PE 맵핑 SW(212)의 실행을 통해 배치 서버(들)(150)에 의해 수행된다. 다른 예로, 액션(320)의 모든 또는 임의의 부분들은 뉴런 대 PE 맵핑 SW(212)의 실행을 통해 배치 서버(들)(150)에 의해 수행된다. 다른 예로, 액션(330)의 모든 또는 임의의 부분들은 뉴런 대 PE 맵핑 SW(212)의 실행을 통해 배치 서버(들)(150)에 의해 수행된다. 다른 예로, 액션(330)의 모든 또는 임의의 부분들은 PE들(260) 상의 태스크 SW의 실행을 통해 PE들(122)에 의해 수행된다. 다른 예로, 액션(340)의 모든 또는 임의의 부분들은 트레이닝 정보 제공자 SW(225)의 실행을 통해 연결 서버(들)(160)에 의해 수행된다. 다른 예로, 액션(350)의 모든 또는 임의의 부분들은 PE들(260) 상의 태스크 SW의 실행을 통해 PE들(122)에 의해 수행된다. 다른 예로, 액션(350)의 모든 또는 임의의 부분들은 결합 서버(들)(110), 배치 서버(들)(150) 및/또는 연결 서버(들)(160)에 의해 수행된다. 다른 예로, 370의 모든 또는 임의의 부분들은 가중치 수신기 SW(226)의 실행을 통해 연결 서버(들)(160)에 의해 수행된다. 다른 예로, 액션(370)의 모든 또는 임의의 부분들은 FPGA들(250) 상의 Misc SW의 실행을 통해 FPGA들(121)에 의해 수행된다. 다른 예로, 380의 모든 또는 임의의 부분들은 이를테면 추론 엔진(들) SW(233)의 제어 하에 IE들(133)에 의해 수행된다. 다른 예로, 액션(380)의 모든 또는 임의의 부분들은 이를테면 추론 엔진(들) SW(243)의 제어 하에 IE들(143)에 의해 수행된다.
[0400]
다양한 실시예들 및/또는 사용 시나리오들에서, 뉴럴 네트워크 트레이닝/추론(300)의 액션들의 모든 또는 임의의 부분들 중 임의의 하나 이상은 도 1의 뉴럴 네트워크 시스템(100)의 다양한 엘리먼트들 사이에서 정보를 통신하는 것과 함께 수행된다. 예컨대, 뉴럴 네트워크 트레이닝/추론(300)의 다양한 액션들은 연결 서버(들)(160)와 FPGA들(121) 간에 정보를 통신하는 NIC들(164) 및 100Gb(112)를 통해 적어도 부분적으로 수행된다. 다른 예로, 뉴럴 네트워크 트레이닝/추론(300)의 다양한 액션들은 연결 서버(들)(160)와 PE들(122) 간에 정보를 통신하는 FPGA들(121) 및 커플링(123)과 함께 수행된다. 다른 예로, 뉴럴 네트워크 트레이닝/추론(300)의 다양한 액션들은 인터넷(180)에 의해 적어도 부분적으로 가능하게 되는 바와 같이 정보를 통신하는 배치 서버(들)(150), 연결 서버(들)(160), 자율주행 차량(130) 및 휴대 전화(140) 중 임의의 하나 이상과 함께 수행된다.
[0401]
도 4는 심층 학습 가속기(400)로서 심층 학습 가속기의 실시예의 선택된 세부사항들을 예시한다. PE(499) 엘리먼트들 각각은 PE(499) 엘리먼트들 중 다른 것에 대한 커플링들을 갖는다. PE 엘리먼트들 중 2개(PE(497) 및 PE(498))가 고유의 식별자들로 예시되고, 달리 PE(499)의 인스턴스들과 각각 동일하다. PE들 중 다른 것들에 대한 4개의 커플링들(노스 커플링(430), PE(498)와의 이스트 커플링(431) 및 사우스 커플링(432)) 및 I/O FPGA들 중 하나(웨스트 커플링(433)) 각각에 대한 식별자들을 갖는 PE(497)가 예시되지만, 달리 예시된 PE 엘리먼트들 중 다른 것들과 동일하다. 일부 실시예들 및/또는 사용 시나리오들에서, 커플링들은 논리적 및/또는 물리적이다. 다양한 실시예들 및/또는 사용 시나리오들에서, 커플링들은 웨이블릿들, 백프레셔 정보 또는 둘 모두를 통신하기 위해 사용가능하다. 다양한 실시예들 및/또는 사용 시나리오들에서, 물리적 커플링들의 모든 또는 임의의 부분들은 물리적으로 인접한 PE들에 대한 것이다. 일부 실시예들 및/또는 사용 시나리오들에서, PE들은 2D 그리드에서 물리적으로 구현된다. 일부 실시예들 및/또는 사용 시나리오들에서, PE들은 정렬된 직사각형들의 2D 그리드에서 물리적으로 구현되고, 물리적으로 인접한 PE들은 수평 경계를 공유하는 PE들(서로에 대한 노스/사우스 PE들) 및 수직 경계를 공유하는 PE들(서로에 대한 이스트/웨스트 PE들)에 대응한다.
[0402]
일부 실시예들 및/또는 사용 시나리오들에서, 동일한 ASIC의 동일한 인스턴스들의 어레이는 웨이퍼 상에 형성되고, 동일한 ASIC들 각각은 동일 PE(예컨대, PE(499))의 복수의 동일한 인스턴스들을 포함하여, 웨이퍼-스케일 통합 기법들에서 사용가능한 웨이퍼(예컨대, 웨이퍼(412))를 형성한다. 일부 실시예들 및/또는 사용 시나리오들에서, PE들의 주변 부분은 I/O FPGA들(420)에 커플링된다. 예시적인 ASIC들은, PE들의 컬럼-조직화된 섹션(예컨대, 웨이퍼를 형성하기 위해 1-차원 방식으로 복제됨)을 포함하는 ASIC(410), 및 PE들의 정사각형-조직화된 섹션 또는 직사각형-조직화된 섹션(예컨대, 웨이퍼를 형성하기 위해 2-차원 방식으로 복제됨)을 포함하는 ASIC(411)로서 예시된다. 웨이퍼 상의 ASIC들의 다른 조직들이 고려된다.
[0403]
일부 실시예들 및/또는 사용 시나리오들에서, 뉴럴 네트워크에서 레이어들과 연관된 뉴런들은 일반적으로, 좌측에 더 앞선 레이어들(예컨대, 입력 레이어) 및 우측에 후속 레이어들(예컨대, 출력 레이어)를 갖는 좌측에서 우측으로의 방식으로 PE(499) 엘리먼트들 상에 배치된다. 따라서, 트레이닝 동안의 데이터 흐름은 파선-화살표들 포워드(401), 델타(402) 및 체인(403)으로서 개념적으로 예시된다. 포워드(401) 동안, 자극은 입력 레이어에 적용되고 입력 레이어로부터의 활성화들은 후속 레이어들로 흘러 결국 출력 레이어에 도달하고 포워드 결과를 생성한다. 델타(402) 동안, 델타들(예컨대, 포워드 결과와 트레이닝 출력 데이터 간의 차이들)은 백워드 방향으로 전파된다. 체인(403) 동안, 구배들은 (예컨대, 뉴런들에서의 가중치들에 대한) 델타들에 기반하여 계산되는데, 이는 이들이 델타(402) 동안 생성되기 때문이다. 일부 실시예들 및/또는 사용 시나리오들에서, 델타(402)에 대한 프로세싱은 403에 대한 프로세싱과 실질적으로 중첩된다.
[0404]
일부 실시예들 및/또는 사용 시나리오들에서, 심층 학습 가속기(400)는 도 1의 심층 학습 가속기(120)의 구현이다. 일부 실시예들 및/또는 사용 시나리오들에서, 개개의 PE(499) 엘리먼트들은 도 1의 PE들(122)의 개개의 PE들에 대응한다. 일부 실시예들 및/또는 사용 시나리오들에서, 각각의 ASIC(410) 엘리먼트 또는 대안적으로 각각의 ASIC(411) 엘리먼트는 개개의 집적 회로들로서 구현된 PE들(122)의 PE들의 모든 또는 임의의 부분들에 대응한다. 일부 실시예들 및/또는 사용 시나리오들에서, 각각의 ASIC(410) 엘리먼트 또는 대안적으로 각각의 ASIC(411) 엘리먼트는 웨이퍼의 개별 다이스를 통해 구현된 PE들(122)의 (임의적으로 동일한) 부분들에 대응한다. 일부 실시예들 및/또는 사용 시나리오들에서, I/O FPGA들(420) 엘리먼트들은 집합적으로 도 1의 I/O FPGA들(121)에 대응한다.
[0405]
일부 실시예들 및/또는 사용 시나리오들에서, PE(499) 엘리먼트 상에 (예컨대, 뉴럴 네트워크에서의 레이어들과 연관된) 뉴런들의 배치는 전체적으로 또는 부분적으로 도 2의 배치 서버(들) SW(210)의 모든 또는 임의의 부분들에 의해 수행된다.
프로세싱 엘리먼트: 컴퓨트 엘리먼트 및 라우터
[0406]
도 5는 심층 학습 가속기의 PE(500)로서 PE의 실시예의 선택된 세부사항들을 예시한다. PE(500)는 라우터(510) 및 컴퓨터 엘리먼트(520)를 포함한다. 라우터(510)는 선택적으로 및/또는 조건부로 커플링들(511-516)을 통해 다른 PE들(예컨대, 논리적으로 인접한 및/또는 물리적으로 인접한 PE들)과 인스턴트 PE 간에 웨이블릿들을 통신한다. 라우터(510)는 선택적으로 및/또는 조건부로 오프 램프(521)를 통해 인스턴트 PE에 웨이블릿들을 통신하고 온 램프(522)를 통해 인스턴트 PE로부터 웨이블릿들을 통신한다. 컴퓨트 엘리먼트(520)는 웨이블릿들로부터 유도가능한 명령 어드레스 정보에 따라 웨이블릿들에 임베딩된 데이터에 대한 컴퓨테이션들을 수행한다. 명령 어드레스 정보는 컴퓨트 엘리먼트의 메모리에 저장된 명령들로서 구현되는 태스크들의 시작 어드레스들을 확인하기 위해 사용된다.
[0407]
다양한 실시예들에서, 511-516 중 임의의 하나 이상은 생략된다.
[0408]
일부 실시예들 및/또는 사용 시나리오들에서, PE(500)는 도 4의 PE(499)의 실시예이고 그리고/또는 PE(500)의 엘리먼트들은 PE(499)의 구현에 대응한다. 일부 실시예들 및/또는 사용 시나리오들에서, 노스(513), 이스트(515), 사우스(516) 및 웨스트(511)는 도 4의 노스 커플링(430), 이스트 커플링(431), 사우스 커플링(432) 및 웨스트 커플링(433)에 각각 대응한다.
[0409]
도 6은 라우터(600)로서 PE의 라우터인 실시예의 선택된 세부사항들을 예시한다. 개별 라우터 및 개별 CE를 각각 포함하는 복수의 PE들이 존재하는 것으로 고려한다. 라우터(600)는 개별 라우터들 중 하나의 인스턴스이다. 라우터(600)는 웨이블릿들의 컬러 정보 및 라우팅 구성 정보에 따라, 웨이블릿들을, 인스턴트 라우터가 포함되는 PE의 CE 뿐만 아니라 라우터들의 다른 것들에 라우팅한다. 라우팅된 웨이블릿들은 다양하게 인스턴트 라우터에 의해 수신되고 그리고/또는 인스턴트 라우터가 포함되는 PE의 CE에 의해 생성된다. 라우팅은 PE들 간의 통신을 가능하게 한다. 스톨 정보는 라우터(600)의 웨이블릿 스토리지 자원들의 오버플로우를 방지하기 위해 통신된다.
[0410]
라우터(600)는 인터페이스들의 4개의 그룹들, 즉, 데이터 입력(610), 데이터 출력(620), 스톨 출력(630) 및 소스들(640)을 포함한다. 데이터 입력(610), 데이터 출력(620), 스톨 출력(630) 및 소스들(640) 각각은 인터페이스 엘리먼트들(611-617, 621-627, 631-637 및 641-647)을 포함한다. 라우터(600)는 데이터 입력(610), 데이터 출력(620), 스톨 출력(630) 및 소스들(640)에 각각 커플링된 기입 Dec(651), 출력(652), Gen 스톨(656) 및 스톨(657)을 더 포함한다. 라우터(600)는 Gen 스톨(656)에 커플링된 Src(670)를 포함하는 소스들(653)을 더 포함한다. 라우터(600)는 데이터 큐들(650), 제어 정보(660) 및 라우터 Sched(654)를 더 포함한다. 제어 정보(660)는 Dest(661) 및 Sent(662)를 포함한다.
[0411]
데이터 큐들(650)은 인입 웨이블릿 정보를 수신하기 위해 기입 Dec(651)에 커플링되고, 발신 웨이블릿 정보를 제공하기 위해 출력(652)에 커플링된다. 데이터 큐들(650)은 데이터 큐 유효성 정보를 제공하기 위해 Gen 스톨(656)에 추가로 커플링된다. 라우터 Sched(654)는 스케줄링 큐잉된 웨이블릿들과 관련된 제어 정보를 수신하기 위해 제어 정보(660)에 커플링된다. 라우터 Sched(654)는 스케줄링 큐잉된 웨이블릿들과 관련된 스톨 정보를 수신하기 위해 스톨(657)에 추가로 커플링된다. 라우터 Sched(654)는 621-627 중 하나 이상 상에 큐잉된 웨이블릿들의 프리젠테이션을 지시하기 위해 출력(652)에 추가로 커플링된다. 라우터 Sched(654)는 스톨 정보의 생성을 부분적으로 지시하기 위해 Gen 스톨(656)에 추가로 커플링된다.
[0412]
다양한 실시예들에서, 인터페이스 엘리먼트들(611-617, 621-627, 631-637, 및 641-647) 각각은 패시브 상호연결부(예컨대, 버퍼링 없는 와이어(들)), 액티브 상호연결부(예컨대, 선택적 및/또는 임의적 버퍼링을 갖는 와이어(들))를 통해 다양하게 구현되고, 라우터(600)의 일 인스턴스와 라우터(600)의 다른 인스턴스 간의 추가의 기능성을 수용하기 위한 로직에 커플링한다.
[0413]
일부 실시예들 및/또는 사용 시나리오들에서, 라우터(600)는 도 5의 라우터(510)의 구현이다.
[0414]
일부 실시예들에서, 데이터 입력(610) 중의 데이터 입력들 및 데이터 출력(620) 중의 데이터 출력들은 웨스트(511), 웨스트 스킵(512), 노스(513), 이스트 스킵(514), 이스트(515), 사우스(516), 오프 램프(521) 및 온 램프(522)의 부분들에 대응한다. 예컨대, 온 램프(617)은 온 램프(522)에 대응하고 오프 램프(627)는 오프 램프(521)에 대응한다. 또 다른 예로서, Y+ 615는 데이터를 수신하는 것이 가능한 노스(513) 부분을 포함하고, Y+ 625는 데이터를 송신하는 것이 가능한 노스(513) 부분을 포함한다.
[0415]
도 7은 웨이블릿 인그레스(Wavelet Ingress)(710), 스톨 정보(720) 및 웨이블릿 이그레스(Wavelet Egress)(730)로서, 프로세싱 엘리먼트의 라우터와 연관된 프로세싱의 실시예의 선택된 세부사항들을 예시한다. 개념상으로, 라우터는 인그레스 포트들로부터 가능한 많은 웨이블릿들을 수용하고, 필요에 따라 그리고 큐 공간이 이용가능한 대로 큐잉하고, 단위 시간(예컨대, 클록 사이클)당 가능한 많은 웨이블릿들을 이그레스 포트들에 라우트한다. 웨이블릿 인그레스(710)는 각각의 개별 큐에 대해 인접한 PE들 및/또는 인스턴트 PE로부터 웨이블릿 인그레스에 (논리적으로 및/또는 물리적으로) 대응하는 액션들(711-713)을 포함한다. 스톨 정보(720)는 각각의 개별 큐에 대해 스톨 정보를 제공하는 것에 대응하는 액션들(721-723)을 포함한다. 웨이블릿 이그레스(730)는 각각의 개별 큐에 대해 인접한 PE들 및/또는 인스턴트 PE로부터 웨이블릿 이그레스에 (논리적으로 및/또는 물리적으로) 대응하는 액션들(731-734)을 포함한다. 일부 상황들에서, 웨이블릿의 컬러 정보 및 라우팅 구성 정보에 따라, 웨이블릿 전송(734)은 단일 큐 엔트리로부터의 웨이블릿을 단일 목적지에 전송한다(예컨대, 유니캐스트). 일부 상황들에서, 웨이블릿의 컬러 정보 및 라우팅 구성 정보에 따라, 웨이블릿 전송(734)은 단일 큐 엔트리로부터의 웨이블릿을 복수의 목적지들에 전송한다(예컨대, 멀티캐스트). 다양한 실시예들 및/또는 사용 시나리오들에서, 710, 720 및/또는 730의 액션들의 모든 또는 임의의 부분들 중 임의의 하나 이상은 도 6의 라우터(600)의 임의의 하나 이상의 엘리먼트들의 모든 또는 임의의 부분들에 의해 수행되는 그리고/또는 그와 관련된 액션들에 대응한다.
[0416]
도 8은 CE(800)로서 프로세싱 엘리먼트의 컴퓨트 엘리먼트의 실시예의 선택된 세부사항들을 예시한다.
[0417]
다양한 실시예들에서, CE(800)는 오프 램프(820) 및 온 램프(860)를 통해 라우터에 커플링된다. CE(800)는 오프 램프(820)를 통해 웨이블릿들을 수신하도록 커플링된 Qdistr(824)를 포함한다. Qdistr(824)는 스케줄링 정보(896)에 웨이블릿들을 송신하도록 커플링된다. 스케줄링 정보(896)는 Q들(897), 액티브 비트들(898) 및 차단 비트들(899)을 포함한다.
[0418]
다양한 실시예들에서, Q들(897)은 (예컨대, 다른 프로세싱 엘리먼트들에 의해 생성되고 개별 컬러와 연관된 웨이블릿들을 홀딩하기 위한) 각각의 패브릭 컬러 및 (예컨대, CE(800)에 의해 생성되고 개별 컬러와 연관된 웨이블릿들을 홀딩하기 위한) 각각의 로컬 컬러에 대한 큐, 예컨대, Q0(897.0), ..., 및 QN(897.N)을 포함한다. Q들(897)의 각각의 하나(예컨대, Q0(897.0))는 액티브 비트(898)의 개별 하나(예컨대, 액티브 비트 0(898.0)) 및 차단 비트들(899)(예컨대 차단 비트 0(899.0))과 연관된다. 액티브 비트들(898)의 각각의 하나 및 차단 비트들(899)의 각각의 하나는 Q들(897)의 개별 하나에 대한 정보를 포함하는데, 예컨대, 차단 비트 N(899.N)은 QN(897.N)이 차단되는지 여부를 표시한다.
[0419]
다양한 실시예들에서, 각각의 컬러에 대한 물리적 Q, 컬러들의 미리 결정된 서브세트에 대한 하나 이상의 물리적 Q들, 및 컬러들의 동적으로 결정된 서브세트에 대한 하나 이상의 물리적 Q들이 다양하게 존재한다. 다양한 실시예들에서, 동일한 크기의 하나 이상의 물리적 Q들(예컨대, 각각 동일한 수의 웨이블릿들을 홀딩하는 것이 가능함) 및 상이한 크기들의 하나 이상의 물리적 Q들(예컨대, 각각 상이한 수의 웨이블릿들을 홀딩하는 것이 가능함)이 다양하게 존재한다. 다양한 실시예에서, 가상 Q들에 다양하게 맵핑되는 하나 이상의 물리적 Q들이 존재하고, 가상 Q들 각각은 하나 이상의 컬러들과 연관된다. 예컨대, N개의 논리적 Q들 및 N개 미만의 물리적 Q들이 존재한다. 다른 예로, Q들(897) 중 일부는 8개의 웨이블릿들을 홀딩하는 것이 가능하고 Q들(897) 중 다른 것들은 3개의 웨이블릿들을 홀딩하는 것이 가능하다. 일부 실시예들에서, Q들(897) 중 특정한 것과 연관된 하나 이상의 컬러들에 대한 트래픽이 추정 및/또는 측정되고, Q들(897) 중 특정한 것은 트래픽에 기반하여 특정 수의 웨이블릿들을 홀딩하는 것이 가능하다.
[0420]
해시(822)는 Qdistr(824)에 커플링되고, 웨이블릿의 컬러에 적어도 부분적으로 기반하여 (예컨대, 컬러에 해시 함수를 적용함으로써) 웨이블릿을 저장할 물리적 큐를 선택한다. 일부 실시예들에서, 웨이블릿 페이로드와 연관된 컬러는 웨이블릿 페이로드와 함께 명시적으로 큐에 저장되어, 큐의 엔트리는 전체 웨이블릿(컬러를 갖는 페이로드)을 홀딩한다. 일부 실시예들에서, 웨이블릿 페이로드와 연관된 컬러는 웨이블릿 페이로드와 함께 명시적으로 큐에 저장되지 않아서, 큐의 엔트리는 연관된 컬러를 저장함이 없이 웨이블릿 페이로드를 저장한다. 웨이블릿 페이로드의 컬러는, 이를테면, 웨이블릿 페이로드가 저장된 특정 큐로부터 추론된다.
[0421]
일부 실시예들에서, 액티브 비트들(898) 및 차단 비트들(899) 중 하나 이상은, 각각의 컬러에 대해 하나의 엔트리씩 N개의 엔트리들을 갖는 개별 비트 벡터들로서 구현된다. 다양한 실시예들에서, 액티브 비트들(898) 및 차단 비트들(899) 중 하나 이상은, 각각의 컬러에 대해 하나의 엔트리를 포함하는 표에서 개별 비트 필드들로서 구현된다.
[0422]
피커(830)는 스케줄링 정보(896), RF(842), Dec(840), 베이스(890), PC(834), I-Seq(836) 및 D-Seq(844)에 커플링된다. 피커(830)는 Q들(897) 중 하나로부터의 프로세싱을 위해 웨이블릿을 선택하는 것이 가능하다. 일부 실시예들에서, 피커(830)는 Q들(897) 중 하나를 선택하고 선택된 큐에서 가장 오래된 웨이블릿을 선택함으로써 웨이블릿을 선택한다. 일부 시나리오들에서, 피커(830)는 종결 명령이 디코딩된 것을 Dec(840)가 시그널링할 때 프로세싱하기 위한 새로운 웨이블릿을 선택한다. 일부 다른 시나리오들(예컨대, 패브릭 입력에 액세스하는 명령)에서, 피커(830)는 D-Seq(844)로부터 수신된 큐 식별자에 대한 응답으로 Q들(897) 중 하나로부터의 프로세싱을 위해 새로운 웨이블릿을 선택한다.
[0423]
피커(830)는 Q들(897) 중 하나로부터 선택된 웨이블릿을 수신하고, 선택된 웨이블릿으로부터 데이터 및 인덱스 중 하나 이상을 RF(842)에 전송하는 것이 가능하다. 일부 실시예들에서, Q들(897)은 데이터 경로(852)에 커플링되고, 데이터 경로는 Q들 중 하나로부터 직접 데이터를 수신하는 것이 가능하다. 피커(830)는 베이스(890)로부터 베이스 어드레스를 판독하고 PC(834) 및 I-Seq(836)에 전송할 명령 어드레스를 계산하는 것이 가능하다. 베이스(890)는 베이스 어드레스를 저장하고 또한 D-Seq(844)에 커플링된다. PC(834)는 바로 다음 명령의 어드레스를 페치에 저장한다. 다양한 실시예들에서, 베이스(890) 및 PC(834)는 레지스터들로서 구현된다. 일부 실시예들에서, D-Seq(844)는 베이스(890)로부터 베이스 어드레스를 판독하고, 베이스(890)로부터 판독된 값에 적어도 부분적으로 기반하여 메모리(854) 및 D-스토어(848)로부터 하나 이상의 어드레스들의 데이터를 요청하는 것이 가능하다.
[0424]
I-Seq(836)는 PC(834)에 커플링되고, PC(834)를 판독 및 수정하는 것이 가능하다(예컨대, 순차적 명령을 위한 증분적으로 또는 분기 명령에 대해 비-순차적으로). I-Seq(836)는 또한 메모리(854)에 커플링되고, 명령 페치 어드레스를 (예컨대, PC(834)에 기반하여) 메모리(854)에 제공하는 것이 가능하다.
[0425]
메모리(854)는 Dec(840), 데이터 경로(852) 및 D-Seq(844)에 추가로 커플링된다. I-Seq(836)로부터의 명령 페치 어드레스에 대한 응답으로, 메모리(854)는 명령 페치 어드레스에 위치된 명령들을 Dec(840)(명령 디코더)에 제공하는 것이 가능하다. 다양한 실시예들에서, 메모리(854)는 각각의 명령 페치 어드레스에 대한 응답으로 최대 3개의 명령들을 제공하는 것이 가능하다. 일부 실시예들에서, 명령은 도 25a, 25b 및 25c 중 하나 이상에 따라 포맷된다.
[0426]
Dec(840)는 다양한 실시예들 및/또는 사용 시나리오들에 따라 명령들의 하나 이상의 특성들을 결정하는 것이 가능하다. 예컨대, Dec(840)는 명령들을 오피코드(예컨대, 도 25a의 오피코드(2512)) 및 제로 이상의 피연산자들(예컨대, 소스 및/또는 목적지 피연산자들)로 파싱하는 것이 가능하다. 다른 예로, Dec(840)는 명령 타입(예컨대, 분기 명령, 또는 곱셈-누적) 명령 등)에 따라 명령을 확인하는 것이 가능하다. 또 다른 예로, Dec(840)는 명령이 특정 명령이고 그에 따라서 하나 이상의 신호들을 활성화시킨다고 결정하는 것이 가능하다.
[0427]
Dec(840)는 종결(812)을 통해 피커(830)에 커플링되고, 디코딩된 명령들 중 하나가 태스크를 종료하는 종결 명령(예컨대, 선택된 웨이블릿에 대한 응답으로 개시된 태스크를 응답으로 실행한 명령들 중 마지막 명령)인 것을 시그널링하는 것이 가능하다.
[0428]
일부 시나리오들에서, Dec(840)는 분기 명령을 디코딩하는 것이 가능하다. 분기 명령들의 예들은 PC(834)를 조건부로 수정하는 조건부 분기 명령들 및 PC(834)를 비조건부로 수정하는 점프 명령들을 포함한다. 분기 명령은 I-Seq(836)에 의해 실행되고 PC(834)를 임의적으로 및/또는 조건부로 수정한다. 일부 시나리오들에서, 분기 명령은 PC(834)를 조건부로 수정함으로써 소프트웨어 제어 흐름(예컨대, 루프)을 구현한다.
[0429]
명령(예컨대, 곱셈-누적 명령)을 디코딩하는 것에 대한 응답으로, Dec(840)는 오피코드를 데이터 경로(852)에 송신하는 것이 가능하다. Dec(840)는 DSR들(846)에 커플링되고, 하나 이상의 피연산자 식별자들을 DSR들(846)에 송신하는 것이 가능하다. Dec(840)는 또한 D-Seq(844)에 커플링되고, 하나 이상의 피연산자 타입 식별자들을 D-Seq(844)에 송신하는 것이 가능하다.
[0430]
DSR들(846)은 DSD(Data Structure Descriptor)들을 홀딩하는 레지스터들을 포함하고 D-Seq(844)에 커플링되어 하나 이상의 DSD들을 그에 전송하는 것이 가능하다. 일부 실시예들에서 DSR들은 소스 DSR들, 목적지 DSR들, 연장된 DSR들 및 스트라이드 레지스터(stride register)들을 포함한다. Dec(840)로부터 피연산자 식별자를 수신하는 것에 대한 응답으로, DSR들(846)은 피연산자 식별자에 의해 특정된 DSD를 판독하고 DSD를 D-Seq(844)에 송신하는 것이 가능하다. 다양한 실시예들에서, DSR들(846)은 최대 2개의 소스 피연산자 식별자들 및 하나의 목적지 피연산자 식별자를 수신하고, 2개의 소스 DSR들 및 하나의 목적지 DSR을 판독하고, 2개의 소스 DSD들 및 하나의 목적지 DSD를 D-Seq(844)에 송신하는 것이 가능하다. 일부 실시예들에서, CE는 로드 DSR 명령들에 대한 응답으로 메모리로부터 DSD를 DSR들에 명시적으로 기입하는 것이 가능하고, CE는 DSR 명령들을 저장하는 것에 대한 응답으로 DSR들로부터 DSD를 메모리에 명시적으로 기입하는 것이 가능하다. 일부 실시예들에서, DSR들(846)은 메모리(854)에 커플링되고 그로부터 데이터를 수신하고 그에 데이터를 송신하는 것이 가능하다.
[0431]
일부 실시예들에서, DSR들(846)은 3개의 세트들의 DSR들: 소스0 피연산자들에 대한 12개의 DSR들(때때로 S0DSR들로 지칭됨), 소스1 피연산자들에 대한 12개의 DSR들(때때로 S1DSR들로 지칭됨), 및 목적지 피연산자들에 대한 12개의 DSR들(때때로 DDSR들로 지칭됨)을 포함한다. 추가로, DSR들(846)은 또한 6개의 연장된 DSR들(때때로 XDSR들로 지칭됨) 및 6개의 스트라이드 레지스터들을 포함한다. 일부 실시예들에서, DSR들은 48 비트를 포함하고, XDSR들은 51 비트를 포함하고, 스트라이드 레지스터들은 15 비트를 포함한다. 다양한 실시예들에서, 개별 명령들은 48 비트의 데이터를 메모리(예컨대, D-스토어(848) 또는 메모리(854))로부터 개별 DSR들로 로딩한다(예컨대, LDS0WDS, LDS1WDS, 및 LDDWDS 명령들은 소스0, 소스1 및 목적지 DSR들을 각각 로딩한다). 다양한 실시예들에서, 개별 명령들은 개별 DSR들로부터의 48 비트의 데이터를 메모리에 저장한다(예컨대, STS0WDS, STS1WDS, 및 STDWDS 명령들은 소스0, 소스1 및 목적지 DSR들을 메모리에 각각 저장한다). 일부 실시예들에서, 명령들(예컨대, LDXDS)은 데이터를 메모리로부터 XDSR들로 로딩하고, 다른 명령들(예컨대, STXDS)은 XDSR들로부터의 데이터를 메모리에 저장한다. 메모리와 XDSR들 사이에서 데이터를 이동시키는 명령들(예컨대, LDXDS 및 STXDS)은 64 비트의 메모리에 액세스하고, 더 낮은 51 비트만을 사용한다. 일부 실시예들에서, 명령들(예컨대, LDSR)은 메모리로부터의 데이터를 스트라이드 레지스터들로 로딩하고, 다른 명령들(예컨대, STSR)은 스트라이드 레지스터들로부터의 데이터를 메모리에 저장한다. 일부 실시예들에서, 메모리와 스트라이드 레지스터들 사이에서 데이터를 이동시키는 명령들은 16 비트의 메모리에 액세스하고, 더 낮은 15 비트만을 사용한다.
[0432]
D-Seq(844)는 또한 D-스토어(848), RF(842) 및 피커(830)에 커플링되고, DSR들(846)로부터 수신된 DSD들에 대한 응답으로 다양한 소스들에서 벡터 데이터에 액세스하는 것을 개시하는 것이 가능하다. 일부 시나리오들에서(예컨대, 1D 메모리 벡터, 4D 메모리 벡터, 및 원형 메모리 버퍼 중 하나를 설명하는 DSD를 수신한 것에 대한 응답으로), D-Seq(844)는 (예컨대, 메모리(854) 및/또는 D-스토어(848)에서) 액세스하기 위한 메모리 어드레스들의 시퀀스를 계산하는 것이 가능하다. 일부 다른 시나리오들에서(예컨대, 패브릭 입력을 설명하는 DSD를 수신한 것에 대한 응답으로), D-Seq(844)는 피커(830)를 통해 Q들(897) 중 하나로부터 패브릭 데이터를 판독하는 것을 개시하는 것이 가능하다. 또 다른 시나리오들에서(예컨대, 패브릭 출력을 설명하는 DSD를 수신하는 것에 대한 응답으로), D-Seq(844)는 데이터를 웨이블릿(들)으로 변환하고 웨이블릿(들)을 온 램프(860)를 통해 패브릭에 송신하는 것을 개시하는 것이 가능하다. 일부 실시예들에서, D-Seq(844)는 3개의 소스들에서 벡터 데이터를 동시에 액세스하는 것(예컨대, 메모리로부터 벡터 데이터를 판독하고, 패브릭 입력으로부터 벡터 데이터를 판독하고, 벡터 데이터를 패브릭 출력에 기입하는 것)이 가능하다.
[0433]
일부 실시예들에서, D-Seq(844)는 RF(842)의 하나 이상의 레지스터들의 데이터(예컨대, 하나 이상의 입력 피연산자들 및/또는 하나의 출력 피연산자를 갖는 명령)에 액세스하는 것이 가능하다. 일부 시나리오들에서, D-Seq(844)는 RF(842)의 레지스터들로부터 피연산자들을 요청하는 것이 가능하다. 또 다른 시나리오들에서, D-Seq(844)는, DSD에 따라 액세스하기 위한 메모리 어드레스들의 시퀀스를 계산하기 위한 입력으로서 RF(842)의 레지스터(예컨대, 인덱스)로부터 데이터를 요청하는 것이 가능하다.
[0434]
데이터 경로(852)는 RF(842) 및 D-스토어(848)에 커플링된다. 다양한 실시예들에서, 메모리(854), RF(842), Q들(897) 및 D-스토어(848) 중 임의의 하나 이상은 (예컨대, D-Seq(844)로부터의 요청에 대한 응답으로) 데이터를 데이터 경로(852)에 제공하고, 데이터 경로(852)로부터 데이터(예컨대, 연산들의 결과들)를 수신하는 것이 가능하다. 데이터 경로(852)는 또한 온 램프(860)를 통해 라우터에 커플링되고, 데이터를 온 램프(860)를 통해 라우터에 전송하는 것이 가능하다. 데이터 경로(852)는 (예컨대, 실시예에 따라, Dec(840)에 의해 제공 및/또는 디코딩된 오피코드에 의해 지정된) 연산들을 수행하는 것이 가능한 실행 자원들(예컨대, ALU들)을 포함한다. 일부 실시예들에서, RF(842)는 때때로 GPR0-GPR15로 지칭되는 16개의 범용 레지스터들을 포함한다. GPR들 각각은 폭이 16-비트이고, 정수 또는 부동 소수점 데이터를 저장하는 것이 가능하다.
[0435]
일부 실시예들에서, D-스토어(848)는 메모리(854)보다 더 작고 더 효율적인(예컨대, 데이터 판독의 비트 당 더 낮은 줄(joule)) 타입의 메모리이다. 일부 실시예들에서, D-스토어(848)는 메모리(854)보다 상대적으로 더 낮은 용량(예컨대, 더 적은 정보를 보유함) 및 상대적으로 더 낮은 액세스 레이턴시 및/또는 상대적으로 더 높은 스루풋의 타입의 메모리이다. 일부 시나리오들에서, 더 자주 사용되는 데이터는 D-스토어(848)에 저장되는 반면에, 덜 자주 사용되는 데이터는 메모리(854)에 저장된다. 일부 실시예들에서, D-스토어(848)는 제1 어드레스 범위를 포함하고, 메모리(854)는 제2, 비-오버랩핑 어드레스 범위를 포함한다.
[0436]
일부 실시예들 및/또는 사용 시나리오들에서, 도면의 엘리먼트들은 도 5의 컴퓨트 엘리먼트(520)의 구현에 대응하고, 오프 램프(820) 및 온 램프(860)는 도 5의 오프 램프(521) 및 온 램프(522)에 각각 대응한다.
[0437]
도 8에 예시된 파티셔닝 및 커플링은 단지 예시적이며, 다른 실시예들에서 상이한 파티셔닝 및/또는 커플링이 고려된다. 예컨대, 다른 실시예들에서, RF(842) 및 DSR들(846)은 하나의 모듈로 결합된다. 또 다른 실시예들에서, DSR들(846) 및 데이터 경로(852)가 커플링된다.
태스크들
[0438]
도 9는 흐름(900)으로서 태스크 개시를 위한 웨이블릿을 프로세싱하는 실시예의 선택된 세부사항들을 예시한다. 개념상으로, 프로세싱은 페칭을 시작하기 위한 어드레스를 결정하고 태스크의 명령들을 실행함으로써 태스크를 개시하는 것을 포함한다. 어드레스는 웨이블릿이 포함하는 정보에 적어도 부분적으로 기반하여 결정된다.
[0439]
일부 실시예들에서, 태스크 개시를 위해 웨이블릿을 프로세싱하는 것은, 예컨대, 프로세싱을 위한 하나 이상의 큐들 중에서 준비된 웨이블릿을 선택(태스크 개시를 위한 준비 웨이블릿을 선택(905))함으로써 개시(시작(901))된다. 일부 실시예들에서, 웨이블릿은 각각의 큐와 연관된 차단/비차단 상태, 각각의 큐와 연관된 활성/비활성 상태, 이전에 선택된 웨이블릿들의 컬러(들), 및 스케줄링 알고리즘 중 하나 이상에 기반하여 선택된다.
[0440]
준비 웨이블릿을 선택한 후에, 웨이블릿이 제어 웨이블릿인지 또는 데이터 웨이블릿인지를 결정하기 위해(제어/데이터? (908)), 웨이블릿이 검사된다. 웨이블릿이 제어 웨이블릿이면, 제어 웨이블릿과 연관된 태스크의 시작 어드레스는, 웨이블릿의 인덱스의 하위 6개의 비트를 베이스 레지스터에 부가(명령 어드레스를 형성하기 위해 하위 인덱스 비트들을 베이스 레지스터에 부가(930))함으로써 계산된다. 웨이블릿이 제어 웨이블릿이 아니면, 웨이블릿은 데이터 웨이블릿이다. 데이터 웨이블릿과 연관된 태스크의 시작 어드레스는, 베이스 레지스터를 4를 곱한 웨이블릿의 컬러에 부가(명령 어드레스를 형성하기 위해 (컬러*4)를 베이스 레지스터에 부가(920))함으로써 계산된다. 제어 웨이블릿에 대해 계산되거나 데이터 웨이블릿에 대해 계산된, 태스크의 시작 어드레스는 태스크에 대한 명령들의 시작 어드레스에 대응한다.
[0441]
일단 명령들의 시작 어드레스가 계산되었다면, 명령들은 시작 명령 어드레스로부터 페치된다(명령 어드레스에 메모리로부터의 명령들을 페치(950)). 페치된 명령들 중 하나 이상은 디코딩되어 실행된다(페치된 명령(들)을 실행(960)). 종결 명령이 실행될 때까지(종결(962)), (액션들(950 및 960)에 의해 예시된 바와 같이) 페칭 및 실행이 계속되고(종결하지 않음(961)), 이어서 개시된 태스크와 연관된 프로세싱이 완료된다(종료(990)). 일부 실시예들에서, 종결 명령은 웨이블릿의 프로세싱과 연관된 최종 명령이다. 개시된 태스크가 완료된 후에, 흐름은 태스크 개시, 즉, 시작(901)으로 개시를 위해 다른 웨이블릿을 프로세싱하도록 임의적으로 그리고/또는 선택적으로 진행된다.
[0442]
다양한 사용 시나리오들에 따라, 실행하는 것(페치된 명령(들)을 실행(960))은 순차적 및/또는 제어-흐름 명령들을 실행하는 것을 포함하고, 그에 따라서 페칭을 위해 사용된 명령 어드레스가 변한다(명령 어드레스에 메모리로부터의 명령들을 페치(950)).
[0443]
태스크 개시를 위해 선택된 준비 웨이블릿은 특정 컬러로 구성된다. 일부 실시예들 및/또는 사용 시나리오들에서, 일단 준비 웨이블릿이 태스크 개시를 위해 선택되었다면(태스크 개시를 위한 준비 웨이블릿을 선택(905)), 만약 있다면, 특정 컬러의 수신된 추가의 웨이블릿들은 명령들의 실행을 위한 피연산자들로서 소비된다(페치된 명령(들)을 실행(960)). 피연산자들로서 특정 컬러를 포함하는 웨이블릿들을 소비하는 것은, 종결 명령의 페칭 및 실행(종결(962))때까지 계속된다.
[0444]
일부 실시예들 및/또는 사용 시나리오들에서, 흐름(900)의 액션들 중 모든 또는 임의의 부분들은 PE의 CE, 예컨대, 도 8의 CE(800)의 엘리먼트들에 의해 수행되는 동작들 및/또는 그 엘리먼트들에 개념상으로 대응하고 그리고/또는 개념상으로 관련된다. 예로서, 차단 비트들(899)은 각각의 큐와 연관된 차단/비차단 상태에 대응한다. 액티브 비트들(898)은 각각의 큐와 연관된 활성/비활성 상태에 대응한다. 또 다른 예로서, 액션(905)의 부분들은 피커(830)에 의해 수행된다. 피커(830)는 스케줄링 정책, 이를테면, 라운드-로빈(round-robinp) 또는 픽-프롬-라스트(ick-from-last)에 따라, 준비가 된 Q들(897) 중 하나로부터 가장 오래된 웨이블릿을 선택한다(예컨대, 차단 비트들(899) 중 연관된 것이 설정되지 않고, 액티브 비트들(898) 중 연관된 것이 설정됨). 피커(830)에 의해 선택된 웨이블릿은 도 13a 및 도 13b 중 하나에 따라 포맷된 웨이블릿 페이로드 및 컬러를 포함한다.
[0445]
또 다른 예로서, 액션(908)은 CE(800)의 엘리먼트들에 의해 수행된다. 웨이블릿 페이로드의 제어 비트(예컨대, 도 13a의 제어 비트(1320))가 어서트되면(예컨대, 피커(830)에 의해 결정되면), 웨이블릿은 제어 웨이블릿이다. 후속하여, 액션(930)은, 제어 웨이블릿과 연관된 태스크의 명령들을 위한 명령 페치 어드레스를 형성하기 위해, CE(800), 이를테면, 피커(830)가 베이스(890)의 콘텐츠들을 도 13a의 하위 인덱스 비트들(1321.1)의 6 최하위 비트들에 부가함으로써 수행된다. 이어서 피커(830)는 명령 페치 어드레스를 PC(834)에 제공한다. 웨이블릿 페이로드의 제어 비트(예컨대, 도 13a의 제어 비트(1320))가 디어서트되면(예컨대, 피커(830)에 의해 결정되면), 웨이블릿은 데이터 웨이블릿이다. 후속하여, 액션(920)은, 데이터 웨이블릿과 연관된 태스크의 명령들을 위한 명령 페치 어드레스를 형성하기 위해, CE(800), 이를테면, 피커(830)가 베이스(890)의 콘텐츠들을 4를 곱한 웨이블릿의 컬러(예컨대, 도 13a 및 도 13b의 컬러(1324)에 대응함)에 부가함으로써 수행된다. 이어서 피커(830)는 명령 페치 어드레스를 PC(834)에 제공한다.
[0446]
또 다른 예로서, 액션(950)은 CE(800)의 엘리먼트들, 예컨대, PC(834), I-Seq(836) 및 메모리(854)에 의해 수행된다. 액션(960)은 CE(800)의 엘리먼트들, 예컨대, 다른 것들 중에서도 Dec(840), D-Seq(844), 메모리(854), RF(842) 및 데이터 경로(852)에 의해 수행된다. 실행은 종결 명령의 실행을 포함한다. 종결 명령의 예는 어서트된 종결 비트를 갖는 명령이다. 예의 맥락에서, Dec(840)가 종결 명령을 디코딩할 때, Dec(840)는 웨이블릿이 끝났다는 것을 종결(812)을 통해 피커(830)에 시그널링하고, 피커(830)는, 예컨대, 액션(905)에 대응하는 프로세싱을 위한 다른 웨이블릿을 선택한다.
[0447]
다양한 실시예들 및/또는 사용 시나리오들에서, 태스크 개시(900)를 위한 웨이블릿을 프로세싱하는 엘리먼트들 중 모든 또는 임의의 부분들은 개념상으로 도 2의 PE들(260) 상의 태스크 SW의 명령들의 실행들 중 모든 또는 임의의 부분들에 대응한다.
[0448]
다양한 실시예들 및/또는 사용 시나리오들에서, 흐름(900)을 포함하는 액션들의 모든 또는 임의의 부분들은 개념상으로 다양하게 도 15a의 흐름(1500) 및/또는 도 15b의 흐름(1550)의 모든 또는 임의의 부분들에 대응한다. 예컨대, 액션(905)은 액션(1552)의 전부 또는 임의의 부분들을 포함하고, 액션들(908, 920, 930, 950, 및 960)은 액션(1553)의 모든 또는 임의의 부분들을 포함한다.
[0449]
도 10은 명령 프로세싱(1000)으로서, 프로세싱 엘리먼트의 컴퓨트 엘리먼트와 연관된 명령 프로세싱의 실시예의 선택된 세부사항들을 예시한다.
[0450]
일부 실시예들 및/또는 사용 시나리오들에서, 명령 프로세싱(1000)의 액션들 중 모든 또는 임의의 부분들은 PE의 CE, 예컨대, 도 8의 CE(800)의 엘리먼트들에 의해 수행되는 동작들 및/또는 그 엘리먼트들에 대응하거나, 개념상으로 관련된다.
[0451]
도 11은 의존성 관리(1100)로서, 클로즈아웃들을 통해 의존성 관리와 연관된 흐름의 실시예의 선택된 세부사항들을 예시한다.
[0452]
일부 실시예들 및/또는 사용 시나리오들에서, 의존성 관리(1100)의 액션들 중 모든 또는 임의의 부분들은 도 1의 PE들(122)의 엘리먼트들에 의해 수행되는 동작들 및/또는 그 엘리먼트들에 대응하거나, 개념상으로 관련된다. 일부 실시예들 및/또는 사용 시나리오들에서, 의존성 관리(1100)의 엘리먼트들 중 모든 또는 임의의 부분들은 개념상으로 도 2의 PE들(260) 상의 태스크 SW의 명령들의 실행들 중 모든 또는 임의의 부분들에 대응한다.
[0453]
도 12는 활성화 누적/클로즈아웃 및 부분 합 컴퓨테이션/클로즈아웃(1200)으로서, 활성화 누적 및 클로즈아웃 이후 부분 합 컴퓨테이션 및 클로즈아웃과 연관된 흐름의 실시예의 선택된 세부사항들을 예시한다.
[0454]
일부 실시예들 및/또는 사용 시나리오들에서, 활성화 누적/클로즈아웃 및 부분 합 컴퓨테이션/클로즈아웃(1200)의 엘리먼트들 중 모든 또는 임의의 부분들은 도 1의 PE들(122)의 엘리먼트들에 의해 수행되는 동작들 및/또는 그 엘리먼트들에 대응하거나, 개념상으로 관련된다. 일부 실시예들 및/또는 사용 시나리오들에서, 활성화 누적/클로즈아웃 및 부분 합 컴퓨테이션/클로즈아웃(1200)의 액션들 중 모든 또는 임의의 부분들은 PE들(260)의 태스크 SW의 명령들의 실행들 중 모든 또는 임의의 부분들에 개념상으로 대응한다. 다양한 실시예들 및/또는 사용 시나리오들에서, (예컨대, 액션(1210)과 연관된) 클로즈아웃은 제어 웨이블릿의 예이다.
웨이블릿들
[0455]
도 13a는 희소 웨이블릿(1301)으로서, 희소 웨이블릿의 실시예의 선택된 세부사항들을 예시한다. 희소 웨이블릿(1301)은 희소 웨이블릿 페이로드(1302) 및 컬러(1324)를 포함한다. 희소 웨이블릿 페이로드(1302)는 인덱스(1321), 희소 데이터(1322) 및 제어 비트(1320)를 포함한다. 인덱스(1321)는 하위 인덱스 비트들(1321.1) 및 상위 인덱스 비트(1321.2)를 포함한다.
[0456]
일부 실시예들에서, 희소 데이터(1322)는 16-비트 부동 소수점수 또는 16-비트 정수를 위한 필드를 포함한다. 다양한 시나리오들에서, 희소 데이터(1322)는 뉴럴 네트워크의 가중치, 뉴럴 네트워크의 입력 또는 자극, 뉴럴 네트워크의 활성화, 또는 뉴럴 네트워크의 부분 합을 다양하게 표현한다.
[0457]
일부 실시예들에서, 인덱스(1321)는 16-비트 필드를 포함한다. 일부 시나리오들에서, 인덱스(1321)는 정수이고, 뉴럴 네트워크의 특정 뉴런을 명시적으로 표시하는 인덱스이다. 일부 실시예들에서, 하위 인덱스 비트들(1321.1)은 6-비트이고, 상위 인덱스 비트(1321.2)는 10-비트이다.
[0458]
일부 실시예들에서, 제어 비트(1320)는 1-비트 필드이다. 일부 시나리오들에서, 제어 비트(1320)는 희소 웨이블릿 페이로드(1302)가 제어 활동을 트리거하는지 또는 데이터 활동을 트리거하는지를 표시한다. 일부 시나리오들에서, 제어 활동은 뉴런의 최종 활성화의 컴퓨팅을 포함하고, 데이터 활동은 최종 활성화가 아닌 뉴런의 활성화들의 컴퓨팅을 포함한다. 일부 실시예들 및/또는 사용 시나리오들에서, 제어 활동은, 이를테면, 도 11의 이전 레이어(1110)로부터의 클로즈아웃 및/또는 바로 다음 레이어(1122)로의 클로즈아웃 중 임의의 하나 이상뿐만 아니라 도 12의 수신 활성화 클로즈아웃(1204) 및/또는 송신 클로즈아웃(1210) 중 임의의 하나 이상과 연관된 클로즈아웃 활동을 포함한다.
[0459]
일부 실시예들에서, 컬러(1324)는 5-비트 필드를 포함한다. 일부 실시예들에서, 컬러는 컬러에 따라 공유 물리적 채널을 통해, 이를테면, 라우팅을 통해 가상 채널에 대응한다. 일부 시나리오들에서, 컬러는 특정 목적으로, 이를테면, 구성 정보를 프로세싱 엘리먼트에 전송하거나 뉴럴 네트워크의 입력을 프로세싱 엘리먼트에 맵핑된 뉴런에 전송하는 데 사용된다.
[0460]
도 13b는 밀집 웨이블릿(1331)으로서, 밀집 웨이블릿의 실시예의 선택된 세부사항들을 예시한다. 밀집 웨이블릿(1331)은 밀집 웨이블릿 페이로드(1332) 및 컬러(1344)를 포함한다. 밀집 웨이블릿 페이로드(1332)는 밀집 데이터(1343.1), 밀집 데이터(1343.2) 및 제어 비트(1340)를 포함한다.
[0461]
일부 실시예들에서, 제어 비트(1340)는 1-비트 필드이고, 기능적으로 제어 비트(1320)와 동일하다.
[0462]
일부 실시예들에서, 컬러(1344)는 5-비트 필드를 포함하고, 기능적으로 컬러(1324)와 동일하다.
[0463]
일부 시나리오들에서, 밀집 데이터(1343.1) 및 밀집 데이터(1343.2)는 개별 16-비트 부동 소수점 수들 또는 개별 16-비트 정수들을 위한 필드들을 포함한다. 다양한 시나리오들에서, 밀집 데이터(1343.1) 및 밀집 데이터(1343.2)는 뉴럴 네트워크의 가중치들, 뉴럴 네트워크의 입력들 또는 자극, 뉴럴 네트워크의 활성화들, 또는 뉴럴 네트워크의 부분 합들을 다양하게 표현한다. 일부 시나리오들에서, 밀집 데이터(1343.1) 및 밀집 데이터(1343.2)는 집합적으로 32-비트 부동 소수점 수를 포함한다(예컨대, 밀집 데이터(1343.1)는 32-비트 부동 소수점 수의 제1 부분을 포함하고, 밀집 데이터(1343.2)는 32-비트 부동 소수점 수의 제2 부분을 포함함).
[0464]
다양한 실시예들 및/또는 사용 시나리오들에서, 희소 웨이블릿들 대 밀집 웨이블릿들의 사용은 다양하게 미리결정되고, 동적으로 결정되고 그리고/또는 둘 모두로 결정된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 희소 웨이블릿들 대 밀집 웨이블릿들의 사용은 소프트웨어에 의해 결정된다.
[0465]
도 14는 웨이블릿 생성 흐름(1400)으로서, 웨이블릿을 생성 및 송신하는 실시예의 선택된 세부사항들을 예시한다. 웨이블릿 생성 흐름(1400)의 액션들은 다양한 에이전트들에 의해 수행된다. 송신 PE는, 송신 PE의 CE(1420)에 의해 예시된 바와 같이, 액션들(1403-1407)을 수행하는 CE를 포함한다. 송신 PE는, 송신 PE의 라우터(1430)에 의해 예시된 바와 같이, 액션(1408)을 수행하는 라우터를 더 포함한다. 수신 PE는, 수신 PE의 라우터(1440)에 의해 예시된 바와 같이, 액션(1409)을 수행하는 라우터를 포함한다.
[0466]
웨이블릿을 생성 및 송신하는 것은 적어도 하나의 송신 PE 및 하나 이상의 수신 PE들뿐만 아니라 송신 PE들 및 수신 PE들을 커플링하는 패브릭을 구현하는 라우터들을 포함하는 임의의 PE들을 초기화함으로써(PE들을 초기화(1402)) 개시(시작(1401))된다. PE들 각각은 개별 라우터(예컨대, 도 5의 라우터(510)) 및 개별 CE(예컨대, 도 5의 컴퓨트 엘리먼트(520))를 포함한다. 일부 시나리오들에서, PE를 초기화하는 것은 PE의 CE가 컴퓨테이션들을 수행하는 것을 가능하게 하고, PE의 라우터가 패브릭을 통해 웨이블릿들을 송신, 수신 및/또는 포워딩하는 것을 가능하게 한다.
[0467]
다양한 실시예들에서, DSR은 피연산자, 이를테면, 데이터 엘리먼트들의 로케이션(예컨대, 메모리, 패브릭 입력 및/또는 패브릭 출력), 데이터 엘리먼트들의 수(예컨대, 길이), 데이터 엘리먼트들의 어드레스 또는 어드레스들(예컨대, 메모리의 시작 어드레스 및 스트라이드)에 관한 정보를 포함하는 DSD를 보유한다. 패브릭 출력 피연산자들(예컨대, 패브릭을 통해 전송된 웨이블릿들)에 대해, DSR은 패브릭 상의 웨이블릿(들)에 대한 컬러, 제어 비트, 및 임의적으로 인덱스의 값 또는 로케이션을 포함한다.
[0468]
일부 실시예들에서, 송신 PE의 CE는 소스를 구성한다(소스를 설정(1403)). 일부 시나리오들에서, 소스는 소스 피연산자를 설명하는 소스 DSD이다. 다양한 실시예들에서, 소스 DSD는 캐시 및 메모리 중 하나에 저장된 하나 이상의 데이터 엘리먼트들을 설명한다. 다른 실시예들에서, 소스 DSD는 패브릭을 통해 수신된 하나 이상의 데이터 엘리먼트들을 설명한다(예컨대, 데이터 엘리먼트들은 패브릭을 통해 도착한 웨이블릿들의 페이로드들이다). 일부 다른 시나리오들에서, 소스는 소스 레지스터(예컨대, RF(842) 중 하나)를 포함한다. 또 다른 시나리오들에서, 소스는 명령에 특정된 즉각을 포함한다.
[0469]
CE는 또한 패브릭 목적지 피연산자를 설명하는 목적지 DSR의 목적지 DSD를 구성한다(목적지(패브릭) DSR을 설정(1404)). 일부 실시예들에서, 목적지 DSD는 패브릭을 통해 송신된 하나 이상의 데이터 엘리먼트들을 설명한다. 다양한 실시예들에서, 소스 및 목적지 DSD들은 하나 이상의 명령들을 통해 구성된다.
[0470]
후속하여, CE는 목적지 DSR의 DSD에 의해 특정된 목적지 피연산자를 포함하는 명령(예컨대, FMACH, MOV, LT16)을 페치 및 디코딩한다(목적지 DSR로 명령을 페치/디코딩(1404.5)). 일부 실시예들에서, 명령의 피연산자 타입 필드들은, 피연산자가 DSD에 의해 특정되는지 여부를 지정한다.
[0471]
CE는 목적지 DSR로부터 목적지 DSD 및 소스 DSR들에서 임의의 소스 DSD들을 판독한다(DSR(들)을 판독(1404.6)). DSD들에 기반하여, CE는 데이터 구조의 타입, 데이터 엘리먼트(들)의 소스, 다수의 데이터 엘리먼트들이 (예컨대, SIMD 동작에 대해) 함께 판독되는지 여부, 및 각각의 피연산자에 대한 데이터 엘리먼트들의 총수를 결정한다. 일부 시나리오들에서, 소스0 피연산자, 소스1 피연산자, 및 목적지 피연산자 중 하나 이상에 대한 DSR들이 판독된다. 일부 실시예들 및/또는 사용 시나리오들에서, DSR들은 전체적으로 또는 부분적으로 병렬로 판독되고, 다른 실시예들 및/또는 사용 시나리오들에서, DSR들은 전체적으로 또는 부분적으로 순차적으로 판독된다.
[0472]
이어서, 송신 PE의 CE는 소스에 의해 설명된 데이터 엘리먼트들(예컨대, 소스 DSD 또는 레지스터)을 판독하고, 목적지 DSD에 기반하여 데이터 엘리먼트들을 포함하는 웨이블릿을 생성한다. CE는 소스에 의해 특정된 제1 데이터 엘리먼트(들)를 (예컨대, 메모리로부터) 판독한다(큐/메모리로부터 바로 다음 데이터 엘리먼트(들)를 판독(1405)). 데이터 엘리먼트(들)는 웨이블릿 페이로드를 형성하는 데 사용된다. 웨이블릿 페이로드의 제어 비트 및 웨이블릿의 컬러는 목적지 DSD에 의해 특정된다. 웨이블릿 페이로드 및 컬러는 송신 CE의 라우터에 제공된다(웨이블릿으로서 데이터 엘리먼트(들)를 라우터에 제공(1406)). 일부 실시예들 및/또는 사용 시나리오들에서, 단일 데이터 엘리먼트는 희소 웨이블릿의 페이로드를 생성하는 데 사용된다. 다른 실시예들 및/또는 사용 시나리오들에서, 2개의 데이터 엘리먼트들은 밀집 웨이블릿의 페이로드를 생성하는 데 사용된다.
[0473]
송신 PE의 CE는 추가의 데이터 엘리먼트(들)가 목적지 DSD에 의해 특정되는지를 결정한다(추가 데이터 엘리먼트들?(1407)). 추가의 데이터 엘리먼트(들)가 목적지 DSD에 의해 특정되면, CE는, 어떠한 추가의 데이터 엘리먼트(들)가 목적지 DSD에 의해 특정되지 않을 때까지, 액션들, 즉, 큐/메모리로부터 바로 다음 소스 데이터 엘리먼트(들)를 판독(1405), 웨이블릿으로서 데이터 엘리먼트(들)를 라우터에 제공(1406), 및 추가 데이터 엘리먼트들?(1407)를 통해 추가의 웨이블릿(들)을 생성한다. 어떠한 추가의 데이터 엘리먼트(들)가 목적지 DSD에 의해 특정되지 않는다면, 흐름은 완결된다(종료(1410)). 일부 실시예들에서, 액션(1406)을 통해 생성된 웨이블릿들은 목적지 DSR에 의해 특정된 동일한 컬러를 갖는다.
[0474]
송신 PE의 라우터는 웨이블릿(들)의 컬러에 따라 송신 PE의 CE에 의해 형성된 웨이블릿(들)을 웨이블릿들의 개별 컬러들에 따라 송신한다(패브릭에 웨이블릿(들)을 송신(1408)). 일부 실시예들 및/또는 사용 시나리오들에서, 송신하는 것은 수신 PE의 라우터에 직접적으로 이루어진다. 일부 실시예들 및/또는 사용 시나리오들에서, 송신하는 것을 수신 PE의 라우터에 간접적으로, 예컨대, 컬러들에 따라 웨이블릿(들)을 포워딩하도록 행동하는 하나 이상의 개재 PE들을 통해 이루어진다. 수신 PE의 라우터는 컬러에 따라 웨이블릿(들)을 수신한다(패브릭으로부터 웨이블릿(들)을 수신(1409)).
[0475]
다양한 실시예들에서, 액션(1408)은 액션들(1405, 1406 및 1407) 중 임의의 하니 이상에 대해 비동기식으로 수행된다. 예컨대, 복수의 웨이블릿들은, 산출된 웨이블릿들 중 임의의 것이 액션(1408)에 의해 예시된 바와 같이 송신되기 전에, 액션(1406)에 의해 산출된다.
[0476]
다양한 실시예들에서, 패브릭으로부터 웨이블릿(들)의 수신(1409)은 다양한 관점들에서 도 15의 라우터에서의 웨이블릿의 수신(1503)에 대응한다.
[0477]
다양한 실시예들 및/또는 사용 시나리오들에서, 웨이블릿 생성 흐름(1400)의 엘리먼트들 중 임의의 하나 이상의 모든 또는 임의의 부분들은 PE, 예컨대, 도 4의 PE(499)의 엘리먼트들에 의해 수행된 동작들 및/또는 그 엘리먼트들에 개념상으로 대응하고 그리고/또는 개념상으로 관련된다.
[0478]
다양한 실시예들 및/또는 사용 시나리오들에서, 웨이블릿 생성 흐름(1400)의 엘리먼트들 중 임의의 하나 이상(예컨대, 액션들(1403-1407) 중 임의의 하나 이상)의 모든 또는 임의의 부분들은 컴퓨트 엘리먼트의 엘리먼트들, 이를테면, PE의 CE, 예컨대, 도 5의 컴퓨트 엘리먼트(520) 및/또는 도 8의 CE(800)의 모든 또는 임의의 부분들에 의해 수행된 동작들 및/또는 이들 엘리먼트들에 개념상으로 대응하고 그리고/또는 개념상으로 관련된다. 예로서, (DSR 목적지(패브릭) DSR(1404) 설정과 연관된) 목적지 DSR은 DSR들(846) 중 하나이다. 일부 시나리오들에서, (소스 설정(1403)과 연관된) 소스 DSR은 DSR들(846) 중 하나이고, 다른 시나리오들에서 (소스 설정(1403)과 연관된) 소스 레지스터는 RF(842) 중 하나이다.
[0479]
다른 예로서, 송신 PE의 CE로서 CE(800)는 DSR 명령 카피 정보를 메모리(854)로부터 소스 DSR(예컨대, DSR들(846) 중 하나)로 로딩하는 것에 대한 응답으로 액션(1403)을 수행한다. 다양한 실시예들에서, 소스 DSR은 메모리(854), D-스토어(848) 및 RF(842) 중 하나로서 데이터 엘리먼트들의 로케이션을 지정한다. 일부 시나리오들에서, 소스 DSR은 메모리(854)의 제1 데이터 엘리먼트의 어드레스(예컨대, 어드레스 0x0008), 데이터 엘리먼트들의 수(예컨대, 9개의 데이터 엘리먼트들), 및 후속 데이터 엘리먼트들 간의 스트라이드(예컨대, 12 바이트)를 지정한다. 다른 예로서, CE(800)는 데이터를 RF(842)의 레지스터에 기입함으로써 액션(1403)을 수행한다.
[0480]
다른 예로서, 송신 PE의 CE로서 CE(800)는 DSR 명령 카피 정보를 메모리(854)로부터 목적지 DSR(예컨대, DSR들(846) 중 하나)로 로딩하는 것에 대한 응답으로 액션(1404)을 수행한다. 다양한 실시예들에서, 목적지 DSR은 하나 이상의 웨이블릿들로의 하나 이상의 데이터 엘리먼트들의 변환을 지정하고, 패브릭-커플링된 이그레스 포트(예컨대, 노스(513))를 통해 라우터(510)에 의해 송신된다. 목적지 DSR은 웨이블릿(들)에 대한 컬러, 웨이블릿(들)에 대한 제어 비트, 데이터 엘리먼트들의 수(예컨대, 길이), 및 웨이블릿(들)의 인덱스에 관한 정보를 지정한다. 일부 시나리오들에서, 목적지 DSR은 인덱스의 값을 지정하고, 다른 시나리오들에서, 목적지 DSR은 (예컨대, RF(842)의 레지스터 내의) 인덱스의 값의 로케이션을 지정한다.
[0481]
또 다른 예로서, 송신 PE의 CE로서의 CE(800)는 목적지 피연산자로서 목적지 DSR을 지정하는 명령을 페칭 및 디코딩하는 것에 대한 응답으로 액션들(1404.6, 1405, 1406 및 1407)을 수행한다(액션(1404.5)). 일부 실시예들 및/또는 사용 시나리오들에서, D-Seq(844)는 소스 DSR을 판독하고 예컨대 메모리(854) 또는 D-스토어(848)로부터 소스 DSR에 의해 특정된 하나 또는 두 개의 데이터 엘리먼트들에 액세스하고, 그리하여 액션(1405)을 수행한다. 다양한 실시예들에서, 메모리(854) 및/또는 D-스토어(848)는 하나 또는 두 개의 데이터 엘리먼트들을 데이터 경로(852)에 제공한다. 데이터 경로는 데이터를 웨이블릿으로 변환하고, 예컨대 (도 6의 라우터(600)의) 데이터 큐들(650)의 엘리먼트 내로의 스토리지를 위해 온 램프(860)를 통해 웨이블릿을 전송하고, 그리하여 액션(1406)을 수행한다. 일부 실시예들에서, 온 램프(860)는 하나 이상의 웨이블릿들을 버퍼링하기 위한 스토리지를 포함한다. 일부 실시예들에서, 송신 PE의 CE(800)는 목적지 DSR로부터 컬러를 판독한다. 컬러에 기반하여, CE(800)는 예컨대, 데이터 큐(650)의 엘리먼트 내로의 스토리지를 위해 온 램프(860)를 통해 웨이블릿 페이로드를 전송하고, 그리하여 액션(1406)을 완료한다. 일부 실시예들에서, 송신 PE의 CE(800)는 액션(1406)을 통해 전송된(예컨대, 카운터에 의해 추적된) 데이터 엘리먼트들의 수에 대해 목적지 DSR에 특정된 데이터 엘리먼트들의 수(예컨대, 길이)를 비교함으로써 액션(1407)을 수행한다.
[0482]
또 다른 예로서, 송신 PE의 CE로서 CE(800)은 액션(1406)을 수행한다. CE는 목적지 DSR에 따라 하나 또는 두 개의 데이터 엘리먼트(들)를 웨이블릿 페이로드로 변환한다. 일부 실시예들 및/또는 사용 시나리오들에서, CE는 단일 데이터 엘리먼트를 도 13a의 희소 웨이블릿(1301)에 따라 포맷된 웨이블릿 페이로드로 변환한다. 단일 데이터 엘리먼트는 희소 데이터(1322)의 인스턴스화(instantiation)로 변환되고, 목적지 DSR에 의해 특정된 인덱스 값은 인덱스(1321)의 인스턴스화로 변환되고, 목적지 DSR로부터의 제어 비트는 제어 비트(1320)의 인스턴스화로 변환되고, 그리하여 희소 웨이블릿 페이로드(1302)의 인스턴스화를 형성한다.
[0483]
또 다른 예로서, 송신 PE의 CE로서 CE(800)는 2개의 데이터 엘리먼트들을 도 13b의 밀집 웨이블릿(1331)에 따라 포맷된 웨이블릿 페이로드로 변환한다. 제1 데이터 엘리먼트는 조밀 데이터(1343.1)의 인스턴스화로 변환되고, 제2 데이터 엘리먼트는 조밀 데이터(1343.2)의 인스턴스화로 변환된다. 목적지 DSR로부터의 제어 비트는 제어 비트(1340)의 인스턴스화로 변환되고, 그리하여 밀집 웨이블릿 페이로드(1332)의 인스턴스화를 형성한다.
[0484]
다양한 실시예들 및/또는 사용 시나리오들에서, 웨이블릿 생성 흐름(1400)의 엘리먼트들 중 임의의 하나 이상의 엘리먼트들의 전부 또는 임의의 부분(예컨대, 액션들(1408 및 1409) 중 임의의 하나 이상)은 PE의 라우터, 예컨대, 도 5의 라우터(510) 및/또는 도 6의 라우터(600)의 임의의 부분들 또는 전부와 같은 라우터의 엘리먼트들에 그리고/또는 라우터의 엘리먼트들에 의해 수행된 동작들에 개념상으로 대응하고 그리고/또는 이들에 개념상으로 관련된다.
[0485]
예로서, 패브릭(1408)으로의 송신 웨이블릿(들)은 다음과 같이 송신 PE(1430)의 라우터(600) 라우터에 의해 수행된다. 라우터(600)는 예컨대, Dest(661)을 판독함으로써 데이터 큐들(650)에서 웨이블릿의 목적지(들)를 결정한다. 각각의 컬러에 대해, Dest(661)는 출력 목적지(들) 예컨대, Data Out(620) 중 하나 이상을 표시한다. 라우터(600)는 Out(652) 및 Data Out(620) 중 하나 이상을 통해 웨이블릿 페이로드 및 컬러(집합적으로 웨이블릿)를 패브릭으로 송신한다. 다양한 실시예들에서, 송신 PE의 라우터(600)는 액션들(1405, 1406 및 1407) 중 임의의 하나 이상과 비동기적으로 액션(1408)을 수행한다.
[0486]
또 다른 예로서, 패브릭(1409)으로부터의 수신 웨이블릿(들)은 다음과 같이 수신 PE(1440)의 라우터로서 라우터(600)에 의해 수행된다. 라우터(600)는 데이터 입력(610) 및 기입 Dec(651) 중 하나를 통해 데이터 큐들(650)에서 송신된 웨이블릿(들)을 수신한다. 수신된 웨이블릿(들)은 데이터 큐들(650)의 하나 이상의 위치들에 저장된다.
[0487]
일부 실시예들 및/또는 사용 시나리오들에서, 웨이블릿 생성 흐름(1400)의 엘리먼트들의 전부 또는 임의의 일부는 개념상으로 도 2의 PE들(260) 상의 태스크 SW의 명령들의 실행들의 전부 또는 임의의 일부에 대응한다.
[0488]
도 15a는 웨이블릿 수신 흐름(1500)으로서 웨이블릿을 수신하는 실시예의 선택된 세부사항들을 예시한다. 웨이블릿 수신 흐름들(1500)의 액션들은 다양한 에이전트들에 의해 수행된다. 수신 PE는 수신 PE(1520)의 라우터에 의해 예시된 바와 같이 액션들(1503-1506)을 수행하는 라우터를 포함한다. 수신 PE는 수신 PE(1530)의 CE에 의해 예시된 바와 같이 액션(1507)을 수행하는 CE를 더 포함한다.
[0489]
웨이블릿을 수신하는 것은, 적어도 하나의 송신 PE 및 하나 이상의 수신 PE들뿐만아니라 송신 PE들 및 수신 PE들을 커플링하는 패브릭을 구현하는 라우터들을 포함하는 임의의 PE들을 초기화(PE들 초기화(1502_)함으로써 시작된다(시작(1501)). PE들 각각은 각각의 라우터(예컨대, 도 5의 라우터(510 )) 및 각각의 CE(예컨대, 도 5의 컴퓨트 엘리먼트(520))를 포함한다. 일부 시나리오들에서, PE를 초기화하는 것은, PE의 CE가 컴퓨테이션들을 수행하는 것을 가능하게 하고 PE의 라우터가 패브릭을 통해 웨이블릿들을 송신, 수신 및/또는 포워드하는 것을 가능하게 한다.
[0490]
다음 설명은 단일 수신 PE가 존재한다고 가정한다. 복수의 수신 PE들이 존재하는 사용 시나리오에서, 수신 PE들의 각각의 PE의 개별 라우터들 및 CE들은 도 15a에 따라 프로세싱을 수행한다.
[0491]
수신 PE의 라우터는 송신 PE에 의해 송신된 바와 같이 패브릭의 '컬러 상에서'(예컨대, 웨이블릿은 컬러를 포함함) 웨이블릿을 수신한다(라우터에서 웨이블릿 수신(1503)). 라우터는 예컨대, 구성 레지스터를 판독함으로써 컬러에 기반하여 웨이블릿의 목적지(들)를 체크한다. 웨이블릿의 목적지(들)가 다른 PE들을 포함하는 경우(다른 PE(들)?(1504)), 라우터는 웨이블릿을 목적지 PE(들)에 송신한다. 라우터는 웨이블릿을 라우터의 출력(들)에 전송하고(출력(들)에 웨이블릿 송신(1505)), 웨이블릿은 출력으로부터 패브릭을 가로질러 목적지 PE(들)로 송신된다. 웨이블릿의 목적지(들)가 다른 PE들을 포함하지 않는 경우, 송신이 생략된다.
[0492]
웨이블릿의 목적지(들)가 로컬 CE를 포함하지 않는 경우(로컬 CE ?(1506)), 어떠한 추가의 액션도 취해지지 않는다(종료(1510)). 웨이블릿의 목적지(들) 중 하나가 로컬 CE인 경우, 라우터는 오프 램프를 통해 로컬 CE에 웨이블릿을 제공하고, 웨이블릿은 웨이블릿이 수신된 컬러와 연관된 피커 큐에 기입되고(피커 큐에 웨이블릿 기입(1507)), 그리하여 웨이블릿을 수신한다(종료(1510)).
[0493]
다양한 실시예들 및/또는 사용 시나리오들에서, 웨이블릿 수신 흐름(1500)의 엘리먼트들 중 임의의 하나 이상의 엘리먼트들의 전부 또는 임의의 부분(예컨대, 액션들(1503-1506) 중 임의의 하나 이상)은 PE의 라우터, 예컨대, 도 5의 라우터(510) 및/또는 도 6의 라우터(600)의 임의의 부분들 또는 전부와 같은 라우터의 엘리먼트들에 그리고/또는 라우터의 엘리먼트들에 의해 수행된 동작들에 개념상으로 대응하고 그리고/또는 이들에 개념상으로 관련된다.
[0494]
예로서, 라우터에서 웨이블릿 수신(1503)은 웨이블릿이 데이터 입력 중 하나 상에서 수신될 때, 수신 PE(1520)의 라우터로서 라우터(600)에 의해 수행된다(610). 후속하여, 다른 PE(들)로?(1504) 및 로컬 CE ?(1506)는 예컨대 Dest(661)를 판독함으로써 웨이블릿의 목적지(들)를 결정하기 위해, 웨이블릿의 컬러를 사용하여 라우터(600)에 의해 수행된다. 각각의 입력 컬러에 대해, Dest(661)는 출력 목적지(들) 예컨대, 데이터 출력(620) 중 하나 이상을 표시한다. (예컨대, SkipX+(621), SkipX-(622), X+(623), X-(624), Y+(625) 및 Y-(626) 중 하나를 통해) 출력이 다른 PE들을 포함한다고 Dest(661)가 표시하는 경우, 웨이블릿은 라우터 Sched(654)에 의해 다른 PE들로 전송된다. 출력이 PE의 CE(예컨대, Offramp(627))을 포함한다고 Dest(661)이 표시하는 경우, 웨이블릿은 라우터 Sched(654)에 의해 CE로 전송된다. (예컨대, 라우터 Sched(654)에 의해) 데이터 출력(620) 중 하나 이상으로 전송되도록 웨이블릿을 스케줄링함으로써 액션(1505)이 수행될 때까지, 웨이블릿은 데이터 큐들(650) 중 하나에 유지된다.
[0495]
다양한 실시예들 및/또는 사용 시나리오들에서, 웨이블릿 수신 흐름(1500)의 엘리먼트들 중 임의의 하나 이상의 엘리먼트들의 전부 또는 임의의 부분(예컨대, 액션들(1507))은 PE의 CE, 예컨대, 도 5의 컴퓨트 엘리먼트(520) 및/또는 도 8의 CE(800)의 임의의 부분들 또는 전부와 같은 컴퓨트 엘리먼트의 엘리먼트들에 그리고/또는 라우터의 엘리먼트들에 의해 수행된 동작들에 개념상으로 대응하고 그리고/또는 이들에 개념상으로 관련된다. 예로서, 피커 큐에 웨이블릿 기입(1507)은 오프 램프(820)를 통해 웨이블릿을 CE(800)로 전송하고 웨이블릿을 Qs(897) 중 하나에 기입함으로써 수행된다.
[0496]
일부 실시예들 및/또는 사용 시나리오들에서, 웨이블릿들은 로컬 CE를 위한 웨이블릿이라는 어떠한 특정 결정도 없이 라우터에 의해 수신되고 큐잉되고 라우터 출력 포트들로 라우팅된다. 대신, 로컬 CE에 대해 예정된 웨이블릿들은 오프 램프로 라우팅되고 이어서 다음 피커 큐에 기입된다. 로컬 CE에 대해 예정되지 않은 웨이블릿들은 오프 램프 라우터 출력들 이외의 다른 곳으로 라우팅된다.
[0497]
도 15b는 웨이블릿 소비 흐름(1550)으로서 웨이블릿을 소비하는 실시예의 선택된 세부사항들을 예시한다. 웨이블릿 소비 흐름들(1550)의 액션들은 PE의 CE에 의해 수행된다.
[0498]
웨이블릿을 소비하는 것은 피커가 프로세싱을 위해 큐로부터 웨이블릿을 선택(피커가 프로세싱을 위해 웨이블릿 선택(1552))함으로써 시작하고(시작(1551)), 이어서 CE가 웨이블릿을 프로세싱한다. CE는 웨이블릿과 연관된 명령들을 페치 및 실행하고(명령들 페치, 실행(1553)), 그리하여 웨이블릿을 소비한다(종료(1554)). 일부 실시예들 및/또는 사용 시나리오들에서, 웨이블릿과 연관된 명령들을 페치 및 실행하는 것은 종결 명령을 페치 및 실행하는 것과 함께 종료된다.
[0499]
일부 실시예들에서, 피커가 프로세싱을 위해 웨이블릿 선택(1552)은 도 8의 피커(830)에 의해 수행된다. 다양한 시나리오들에서, 피커(830)는 라운드-로빈 또는 픽-프롬-라스트와 같은 스케줄링 정책에 따라 준비된 Q들(897) 중 하나를 선택한다(예컨대, 차단 비트들(899) 및 액티브 비트들(898)이 특정 값들로 설정됨).
일부 실시예들에서, 웨이블릿 소비 흐름(1550)의 부분들은 도 9의 태스크 개시(900)를 위한 웨이블릿의 프로세싱의 부분들에 대응한다. 예로서, 액션(1552)은 액션(905)에 대응한다. 또 다른 예로서, 액션(1553)은 액션들(908, 920, 930, 950 및 960)에 대응한다.
[0500]
일부 다른 시나리오들에서, 웨이블릿은 CE 상에서 실행되는 명령(예컨대, FMACH)에 의해 피연산자로 액세스되고, 웨이블릿은 예컨대, 도 23에 예시된 바와 같이 명령의 실행 동안 CE에 의해 소비된다.
차단 및 비차단
[0501]
도 16은 흐름(1600)으로서 차단 명령 및 비차단 명령 실행의 실시예의 선택된 세부사항들을 예시한다. 개념상으로, 특정 컬러를 지정하는 차단 명령을 실행하는 것은 특정 컬러를 지정하는 비차단 명령의 실행 때까지 특정 컬러와 연관된 명령들의 실행을 방지한다.
[0502]
도면을 참조하면, 명령을 실행하는 것은 명령을 메모리로부터 페치하고 명령을 디코딩(명령 페치, 디코딩(1602)함으로써 시작된다(시작(1601)). 명령이 차단 명령으로 디코딩되는 경우(차단 명령?(1603)), 차단 동작이 수행된다(컬러(들) 차단(1604)). 차단 명령의 소스 피연산자는 차단된/차단되지 않은 컬러들과 연관된 명령 프로세싱과 관련하여 차단할 하나 이상의 컬러를 지정한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 차단 동작은 소스 피연산자에 의해 특정된 하나 이상의 컬러들에 대해 하나 이상의 차단 표시기들을 차단된 상태로 설정함으로써 수행되고, 실행이 완료된다(종료(1630)). 다양한 시나리오들에서, 소스 피연산자는 단일 컬러 차단, 모든 컬러 차단 및 임의의 복수의 컬러 차단을 다양하게 지정한다. 후속 동작에서, 차단된 상태로 설정된 개별 차단 표시기들을 갖는 컬러들로 구성된 웨이블릿들은 프로세싱을 위해 선택되지 않는다.
[0503]
명령이 비차단 명령으로 디코딩되는 경우(비차단 명령?(1610)), 비차단 동작이 수행된다(컬러(들) 비차단(1611)). 비차단 명령의 소스 피연산자는 차단된/차단되지 않은 컬러들과 연관된 명령 프로세싱과 관련하여 차단할 하나 이상의 컬러를 지정한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 비차단 동작은 소스 피연산자에 의해 특정된 하나 이상의 컬러들에 대해 차단 표시기를 비차단된 상태로 재설정함으로써 수행되고, 실행이 완료된다(종료(1630)). 다양한 시나리오들에서, 소스 피연산자는 단일 컬러 비차단, 모든 컬러 비차단 및 임의의 복수의 컬러 비차단을 다양하게 지정한다. 후속 동작에서, 비차단된 상태로 설정된 개별 차단 표시기들을 갖는 컬러들로 구성된 웨이블릿들은 프로세싱을 위해 선택가능하다.
[0504]
명령이 차단 명령이 아니고 비차단 명령이 아닌 명령으로 디코딩되는 경우, 명령이 달리 실행되고(명령 실행(1620)), 실행이 완료된다(종료(1630)).
[0505]
일부 실시예들에서, 차단 동작의 소스 피연산자가 즉각적(예컨대, 8비트 즉각적)인 경우, 즉각적의 값은 차단될 컬러를 지정한다. 소스 피연산자가 즉각적이 아닌 경우, 모든 컬러들이 차단된다.
[0506]
일부 실시예들에서, 비차단 동작의 소스 피연산자가 즉각적(예컨대, 8 비트 즉각적)이고, 즉각적의 값은 비차단될 컬러를 지정한다. 다양한 실시예들에서, 특정 피연산자들을 갖는 비차단 동작은 다수의 컬러들을 비차단한다.
[0507]
다양한 실시예들 및/또는 사용 시나리오들에서, 차단 및 비차단 명령 프로세싱 흐름(1600)의 엘리먼트들 중 임의의 하나 이상의 엘리먼트들의 전부 또는 임의의 부분은 PE의 CE, 예컨대, 도 5의 컴퓨트 엘리먼트(520) 및/또는 도 8의 CE(800)의 임의의 부분들 또는 전부와 같은 컴퓨트 엘리먼트의 엘리먼트들에 그리고/또는 라우터의 엘리먼트들에 의해 수행된 동작들에 개념상으로 대응하고 그리고/또는 이들에 개념상으로 관련된다.
[0508]
예로서, 차단 비트들(899)은 각각의 컬러에 대한 비트(예컨대, 테이블의 엔트리들로서 또는 비트-마스크로서)를 포함한다. 차단 동작(차단 컬러(들)(1604))은 소스 피연산자에 의해 특정된 하나 이상의 컬러들에 대해 차단 비트들(899)을 특정 차단된 값(예컨대, '1')으로 세팅함으로써 수행된다. 일부 실시예들에서, 피커(830)는 차단 비트들(899)이 비차단 값(예컨대, '0')과 매칭되는 컬러로부터 프로세싱을 위해 웨이블릿을 선택한다. 또 다른 예로서, 비차단 동작(비차단 컬러(들)(1611))은 소스 피연산자에 의해 특정된 하나 이상의 컬러들에 대해 차단 비트들(899)을 특정 비차단 값(예컨대, '0')으로 세팅함으로써 수행된다. 일부 실시예들에서, 피커(830)는 차단 비트들(899)이 비차단 값(예컨대, '0')과 매칭되는 컬러를 포함하는 웨이블릿을 선택한다.
[0509]
일부 실시예들에서, 차단 및 비차단 명령 프로세싱 흐름(1600)의 부분들은 도 9의 태스크 개시(900)를 위한 웨이블릿의 프로세싱의 부분들에 대응한다. 예로서, 액션들(1602 1603, 1604, 1610, 1611 및 1620)은 도 9의 액션들(950 및 960)의 부분들에 대응한다.
[0510]
다양한 실시예들 및/또는 사용 시나리오들에서, 차단 및 비차단 명령 프로세싱 흐름(1600)의 엘리먼트들의 전부 또는 임의의 일부는 개념상으로 도 2의 PE들(260) 상의 태스크 SW의 명령들의 실행들의 전부 또는 임의의 일부에 대응한다.
뉴런 스미어링
[0511]
도 17은 뉴럴 네트워크(1700)로서 뉴럴 네트워크의 실시예의 선택된 세부사항들을 예시한다. 네트워크(1700)는 3개의 부분들인 입력 레이어(1710), 내부 레이어들(1720) 및 출력 레이어(1740)를 포함한다. 각각의 레이어는 복수의 뉴런들을 포함한다. 입력 레이어(171)는 뉴런들(N11(1711), N12(1712) 및 N13(1713))을 포함한다. 내부 레이어들(1720)은 뉴런들(N21(1721), N22(1722), N23(1723) 및 N24(1724)의 제1 레이어 이후 뉴런들(N31(1731), N32(1732) 및 N33(1733)의 제2 레이어를 포함한다. 출력 레이어(1740)는 뉴런들(N41(1741) 및 N42(1742))을 포함한다.
[0512]
선택된 뉴런들(N21(1721), N22(1722), N23(1723) 및 N24(1724)뿐만 아니라 N31(1731) 및 N32(1732)) 및 선택된 뉴런들 간의 통신들(1791, 1792 및 1793)이 도면에서 강조된다. 선택된 뉴런들 및 통로들은 하기에 보다 상세히 논의된다.
[0513]
도 18a는 뉴런들로의 프로세싱 엘리먼트들의 할당의 제1 실시예의 선택된 세부사항들을 예시한다. 때로, 뉴런들로의 프로세싱 엘리먼트들의 할당은 프로세싱 엘리먼트들에 뉴런들을 배치하는 것 또는 대안적으로 뉴런들의 배치로서 지칭된다. 도 18a의 유사하게 넘버링된 엘리먼트들은 도 17의 유사하게 넘버링된 엘리먼트들에 대응한다. 도 17의 뉴런들의 서브세트(강조된 뉴런들(N21(1721), N22(1722), N23(1723) 및 N24(1724) 뿐만 아니라 N31(1731) 및 N32(1732))로의 프로세싱 엘리먼트들의 제1 할당이 개념상으로 예시된다. 도면에서의 수직 거리는 5개의 프로세싱 엘리먼트들(PE0(1820), PE1(1821), PE2(1822), PE3(1823), PE4(1824) 및 PE5(1825)) 각각의 컴퓨테이셔널 자원들의 상대적인 사용을 표시한다.
[0514]
뉴런들(N21(1721), N22(1722), N23(1723) 및 N24(1724)) 각각은 대략 동일한 양의 컴퓨테이셔널 자원들, 예컨대, M 동작들, K 스토리지 용량, 및 스토리지로의/로부터의 J 대역폭을 표현한다. 뉴런들(N31(1731) 및 N32(1732)) 각각은 대략 동일한 양의 컴퓨테이셔널 자원들, 예컨대 M/2 동작들, K/2 스토리지 및 J/2 대역폭을 표현한다. 따라서, N31(1731) 및 N32(1732) 각각은 N21(1721), N22(1722), N23(1723) 및 N24(1724) 각각의 컴퓨테이셔널 자원들의 대략 절반을 표현한다. 다양한 실시예들에서, 컴퓨테이셔널 자원들의 예들은 컴퓨트 연산들, 스토리지 용량, 스토리지로부터의 판독 대역폭, 스토리지로의 기입 대역폭, 다른 뉴런들로부터의 입력 연결들 및 다른 뉴런들로의 출력 연결들을 포함한다.
[0515]
예시된 실시예에서, 뉴런 프로세싱은 전술한 뉴런들 각각이 전체 PE에 할당되도록 할당된다. 보다 구체적으로, N21(1721)은 PE0(1840)에 할당되고, N22(1722)는 PE1(1841)에 할당되고, N23(1723)은 PE2(1842)에 할당되고, N24(1724)는 PE3(1843)에 할당되고, N31(1731)은 PE4(1844)에 할당되고, N32(1732)는 PE5(1845)에 할당된다. 따라서, 6개의 프로세싱 엘리먼트들 중 4 개(PE0(1820), PE1(1821), PE2(1822) 및 PE3(1823))가 완전히 가입되는 반면, 6개의 프로세싱 엘리먼트 중 2 개(PE4(1824) 및 PE5(1825))는 절반만이 가입된다.
[0516]
도 18b는 뉴런들로의 프로세싱 엘리먼트들의 할당의 제2 실시예의 선택된 세부사항들을 예시한다. 도 18b의 유사하게 넘버링된 엘리먼트들은 도 17 및 도 18a의 유사하게 넘버링된 엘리먼트들에 대응한다. 도 17의 뉴런들의 서브세트(강조된 뉴런들(N21(1721), N22(1722), N23(1723) 및 N24(1724) 뿐만 아니라 N31(1731) 및 N32(1732))로의 프로세싱 엘리먼트들의 제2 할당이 개념상으로 예시된다. 도 18a에서와 같이, 도면에서의 수직 거리는 5개의 프로세싱 엘리먼트들(PE0(1820), PE1(1821), PE2(1822), PE3(1823), PE4(1824) 및 PE5(1825)) 각각의 컴퓨테이셔널 자원들의 상대적인 사용을 표시한다. 또한, 도 18a에서와 같이, N31(1731) 및 N32(1732) 각각은 N21(1721), N22(1722), N23(1723) 및 N24(1724) 각각의 컴퓨테이셔널 자원들의 대략 절반을 표현한다.
[0517]
예시된 실시예에서, 뉴런 프로세싱은 개별 뉴런들에 대한 프로세싱이 프로세싱 엘리먼트들에 걸쳐 "스미어링"되도록 할당된다. 개념상으로, 뉴런들은 할당될 프로세싱 엘리먼트들에 적합한 부분들로 "분할"된다. 도면에 예시된 바와 같이, 뉴런들이 분할되고 프로세싱 엘리먼트들은 6개의 프로세싱 엘리먼트들 중 4 개(PE0(1820), PE1(1821), PE2(1822) 및 PE3(1823))가 동등하게(그리고 완전히) 가입되는 반면 6개의 프로세싱 엘리먼트들 중 2 개(PE4(1824) 및 PE5(1825))는 완전히 미가입되고 이에 따라 다른 용도들을 위해 이용 가능하도록 할당된다. 일부 실시예들 및/또는 사용 시나리오들에서, 미가입 프로세싱 엘리먼트들은 미사용 상태로 유지되며 (예컨대, 클록 게이팅 및 전력 게이팅 중 하나 이상을 통해) 활성 및/또는 정적 전력을 거의 또는 전혀 소비하지 않는다. 보다 구체적으로, N21(1721)은 2개의 절반들(1/2 N21(1721.1) 및 1/2 N21(1721.2))이 2개의 개별 프로세싱 엘리먼트들(PE0(1820) 및 PE2(1822))에 할당된다. 유사하게, N22(1722)은 2개의 절반들(1/2 N22(1722.1) 및 1/2 N22(1722.2))이 2개의 개별 프로세싱 엘리먼트들(PE0(1820) 및 PE2(1822))에 할당된다. N23(1723)은 2개의 절반들(1/2 N23(1723.1) 및 1/2 N23(1723.2))이 2개의 개별 프로세싱 엘리먼트들(PE1(1821) 및 PE3(1823))에 할당되고, N24(1724)은 2개의 절반들(1/2 N24(1724.1) 및 1/2 N24(1724.2))이 2개의 개별 프로세싱 엘리먼트들(PE1(1821) 및 PE3(1823))에 할당된다. N31(1731)은 4개의 1/4들(1/4 N31(1731.1), 1/4 N31(1731.2), 1/4 N31(1731.3) 및 1/4 N31(1731.4))이 4개의 개별 프로세싱 엘리먼트들(PE0(1820), PE1(1821), PE2(1822) 및 PE3(1823))에 할당된다. 유사하게, N32(1732)은 4개의 1/4들(1/4 N32(1732.1), 1/4 N32(1732.2), 1/4 N32(1732.3) 및 1/4 N32(1732.4))이 4개의 개별 프로세싱 엘리먼트들(PE0(1820), PE1(1821), PE2(1822) 및 PE3(1823))에 할당된다. 다양한 실시예들에서, 뉴런들은 분할되고, 뉴런들과 연관된 하나 이상의 컴퓨테이셔널 자원들에 기반하여 프로세싱 엘리먼트들이 할당된다. 일부 실시예들에서, 뉴런들은 분할되고 프로세싱 엘리먼트들에서 이용 가능한 하드웨어 자원들에 기반하여 프로세싱 엘리먼트들이 할당된다(예컨대, 일부 뉴런들은 PRNG들과 같은 특정 하드웨어 자원들을 요구함).
[0518]
도 19는 복수의 프로세싱 엘리먼트에 걸쳐 뉴런을 스미어링하는 실시예의 선택된 세부사항들을 예시한다. 분할은 분할된 뉴런의 분분들을 발생시키며, 이는 이어서 프로세싱 엘리먼트에 걸쳐 스미어링된다. 도 19의 유사하게 넘버링된 엘리먼트들은 도 17, 도 18a 및 도 18b의 유사하게 넘버링된 엘리먼트들에 대응한다. 도 18b에 의해 예시된 바와 같이, N21(1721)은 PE0(1820) 및 PE2(1822)에 의해 각각 구현된 1/2 N21(1721.1) 및 1/2 N21(1721.2)의 2개의 부분들로 분할된다.
[0519]
개념상으로, N21(1721)은 입력들 및 출력들뿐만 아니라 로컬 컴퓨트 및 로컬 스토리지를 포함하는 것으로 간주된다. N21(1721)의 개별 엘리먼트들은 각각 파티셔닝된다. N21의 로컬 컴퓨트는 1/2 로컬 컴퓨트(1930.1) 및 1/2 로컬 컴퓨터(1930.2)로 파티셔닝된다. N21의 로컬 스토리지는 1/2 로컬 스토리지(1940.1) 및 1/2 로컬 스토리지(1940.2)로 파티셔닝된다. N21의 입력들은 제1 절반(in0(1910), in1(1911) 및 in2(1912)) 뿐만 아니라 제2 절반(in3(1913), in4(1914), 및 in5(1915))으로 파티셔닝된다. N21의 출력들은 제1 절반(out0(1920), out1(1921) 및 out2(1922)) 뿐만 아니라 제2 절반(out3(1923), out4(1924), 및 out5(1925))으로 파티셔닝된다.
[0520]
1/2 로컬 컴퓨트(1930.1), 1/2 로컬 스토리지(1940.1), in1(1911)과 함께 in0(1910) 및 out0(1920)은 PE0(1820)에 의해 구현된다. 1/2 로컬 컴퓨트(1930.2), 1/2 로컬 스토리지(1940.2), in3(1913)과 함께 in2(1912) 및 out1(1921)은 PE0(1822)에 의해 구현된다.
[0521]
일부 실시예들 및/또는 사용 시나리오들에서, 하나 초과의 프로세싱 엘리먼트에 걸쳐 뉴런을 스미어링하는 것은 뉴런에 의해 달리 수행/사용되지 않는 추가 컴퓨테이션, 추가 스토리지 및/또는 추가 통신에 의해 적어도 부분적으로 구현된다. 추가 컴퓨테이션, 추가 스토리지 및/또는 추가 통신은, 예컨대 뉴런의 부분으로부터의 부분적인 결과들을 전체 뉴런의 결과들에 대응하는 결과들로 결합하는 것을 가능하게 한다. 추가 컴퓨트(1950.1) 및 추가 스토리지(1960.1)는 1/2 N21(1721.1)에 대한 추가 컴퓨트 및 추가 스토리지를 나타내며, PE0(1820)에 의해 구현된다. 추가 컴퓨트(1950.2) 및 추가 스토리지(1960.2)는 1/2 N21(1721.2)에 대한 추가 컴퓨트 및 추가 스토리지를 나타내며, PE0(1822)에 의해 구현된다.
[0522]
추가 통신(1970)은 1/2 N21(1721.1) 및 1/2 N21 (1721.2) 사이의 추가 통신을 나타내며, PE0(1820) 및 PE0(1822) 사이의 패브릭 연결에 의해 구현된다. 일부 실시예들 및/또는 사용 시나리오들에서, 추가 통신(1970)의 전부 또는 임의의 일부는 단일 프로세싱 엘리먼트가 N21(1721)에 의해 완전히 구현된 경우 단일 프로세싱 엘리먼트에 내부적으로 발생하는 통신들을 나타낸다.
[0523]
도 20은 분할된 뉴런들의 부분들 사이의 통신의 실시예의 선택된 세부사항들을 예시한다. 도 20의 유사하게 넘버링된 엘리먼트들은 도 17, 도 18a, 도 18b 및 도 19의 유사하게 넘버링된 엘리먼트들에 대응한다. 뉴런 부분들로의 PE0(1820), PE1(1821), PE2(1822) 및 PE3(1823)의 할당은 도 18b에 의해 예시된 바와 같다. 명확성을 위해, PE0(1820) 및 PE1(1821)에 특정한 할당들만이 예시된다.
[0524]
웨이퍼 부분(2000)은 PE0(1820), PE1(1821), PE2( 1822) 및 PE3(1823)을 포함한다. 웨이퍼 부분(2000)의 PE들 사이의 커플링들은 2040 커플링(PE0(1820) 및 PE1( 1821)), 2041 커플링(PE1(1821) 및 PE3(1823)), 2043 커플링(PE3(1823) 및 PE2(1822)), 및 2044 커플링(PE2(1822) 및 PE0(1820))(인접들 PE들 사이의 커플링)으로서 예시된다. 웨이퍼 부분(2000)에 인접한 PE들에 대한 커플링은 2050, 2051, 2052, 2053, 2054, 2055, 2056 및 2057(인접한 PE들 사이에 커플링의 부분)로서 예시된다. 일부 실시예들 및/또는 사용 시나리오들에서, 커플링들의 전부 또는 임의의 부분들이 웨이퍼 부분(2000)에 전체적으로 포함되기 보다는, 웨이퍼 부분(2000)에 인접한 웨이퍼 부분들에 포함되기 때문에, 인접한 PE들에 대한 커플링들은 '부분들'이다.
[0525]
제1 예로서, 통신 부분(1791.1)은 개념상으로 개별 프로세싱 엘리먼트들에서 분할된 뉴런들의 부분들과 함께, (도 17의) N11(1711)과 N21(1721) 사이의, 예컨대, 입력 레이어로부터 내부 레이어로의 통신(1791)의 부분을 표현한다. 보다 구체적으로, N21(1721)은 2개의 부분들(1/2 N21(1721.1) 및 1/2 N21(1721.2); 도 18b 참조)로 분할된다는 것을 상기한다. 따라서, 통신(1791)은 2개의 부분들로 분할된다. 통신 부분(1791.1)은 1/2 N21(1721.1)에 관한 부분을 구체적으로 예시한다. 통신 부분(1791.1)은 웨이퍼 부분(2000)에 인접한 PE와 PE0(1820)(1/2 N21(1721.1)에 할당됨) 사이의 2057(인접한 PE들 사이의 커플링의 부분)을 통해 전송된다. 일부 실시예들 및/또는 사용 시나리오들에서, 통신(1791)은 통신 부분(1791.1)(예시됨) 및 통신 부분(1791.2)(예시되지 않음)의 2개의 부분들로 분할된다. 일부 실시예들 및/또는 사용 시나리오들에서, 통신 부분(1791.1) 및 통신 부분(1791.2)의 전송은 동일한 가상 채널을 통해 이루어진다. 일부 실시예들 및/또는 사용 시나리오들에서, 통신 부분(1791.1) 및 통신 부분(1791.2)의 전송은 개별의 고유한 가상 채널들을 통해 이루어진다.
[0526]
제2 예로서, 통신 부분(1792.1)은 개념상으로 개별 프로세싱 엘리먼트들에서 분할된 뉴런들의 부분들과 함께, (도 17의) N21(1721)과 N31(1731) 사이의, 예컨대, 제1 내부 레이어로부터 제2 내부 레이어로의 통신(1792)의 부분을 표현한다. 보다 구체적으로, N21(1721)은 2개의 부분들(1/2 N21(1721.1) 및 1/2 N21(1721.2); 도 18b 참조)로 분할된다는 것을 상기한다. 또한, N31(1731)은 4개의 부분들(1/4 N31(1731.1), 1/4 N31(1731.2), 1/4 N31(1731.3) 및 1/4 N31(1731.4); 도 18b 참조)로 분할된다는 것을 상기한다. 따라서, 통신(1792)은 부분들로 분할된다. 통신 부분(1792.1)은 1/2 N21(1721.1) 및 1/4 N31(1731.2)에 관한 부분을 구체적으로 예시한다. 통신 부분(1792.1)은 PE0(1820)(1/2 N21(1721.1)에 할당됨)과 PE1(1821)(1/4 N31(1731.2)에 할당됨) 사이의 2040(인접한 PE 사이의 커플링)을 통해 전송된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 통신 부분(1792.1)(예시되지 않음) 및 예컨대, 통신(1792)의 다른 부분들(예시되지 않음)의 전송은 동일한 가상 채널을 통해, 부분 당 고유한 가상 채널들을 통해, 특정 뉴런과 연관된 부분 당 가상 채널들을 통해, 그리고/또는 특정 프로세싱 엘리먼트와 연관된 부분 당 가상 채널들을 통해 이루어진다.
[0527]
제3 예로서, 통신 부분(1793.1)은 개념상으로 동일한 프로세싱 엘리먼트에서 분할된 뉴런들의 부분들과 함께, (도 17의) N23(1723)과 N31(1731) 사이의, 예컨대, 제1 내부 레이어로부터 제2 내부 레이어로의 통신(1793)의 부분을 표현한다. 보다 구체적으로, N23(1723)은 2개의 부분들(1/2 N23(1723.1) 및 1/2 N23(1723.2); 도 18b 참조)로 분할된다는 것을 상기한다. 또한, N31(1731)은 4개의 부분들(1/4 N31(1731.1), 1/4 N31(1731.2), 1/4 N31(1731.3) 및 1/4 N31(1731.4); 도 18b 참조)로 분할된다는 것을 상기한다. 따라서, 통신(1793)은 부분들로 분할된다. 통신 부분(1793.1)은 1/2 N23(1723.1) 및 1/4 N31(1731.2)에 관한 부분을 구체적으로 예시한다. 통신 부분(1793.1)은 (1/2 N23(1723.1) 및 1/4 N31(1731.2)에 할당된) PE1(1821) 내부의 하나 이상의 메커니즘들을 통해 전송된다. 예컨대, PE1(1821)은 입력으로서 출력을 내부적으로 피드백하고 그리고/또는 출력으로부터 입력을 내부적으로 제공하기 위해 내부 자원들(이를테면, 라우터)을 사용한다. 일부 실시예들 및/또는 사용 시나리오들에서, 통신 부분(1793.1)의 전송은 출력이 입력으로서 사용되게 하고 그리고/또는 입력이 출력으로부터 제공되게 하는 가상 채널을 통해 이루어진다.
[0528]
제4 예로서, 통신(2060)은 (도 19의) 추가 통신(1970), 예컨대 프로세싱 엘리먼트들에 걸쳐 분할되는 뉴런 내의 통신들의 전부 또는 임의의 부분들을 개념상으로 표현한다. 보다 구체적으로, 통신(2060)은, N32(1732)가 분할되는 4개의 부분들 중 2개의 부분들(1/4 N32(1732.1) 및 1/4 N32(1732.2); 도 18b 참조) 사이의 통신들을 구체적으로 예시한다. 통신(2060)은 (1/4 N32(1732.1)에 할당된) PE0(1820)과 (1/4 N32(1732.2)에 할당된) PE1(1821) 사이에서 (인접한 PE들 사이의 커플링)2040을 통해 전송된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 통신(2060)은 통신(2060)에 전용된 가상 채널, N32(1732)의 다른 부분들 사이의 통신들 및 통신(2060)과 공유되는 가상 채널, 및 프로세싱 엘리먼트들에 걸쳐 분할되는 뉴런들의 전부 또는 임의의 부분들 및 통신(2060)과 공유되는 가상 채널을 통한다.
[0529]
일부 실시예들 및/또는 사용 시나리오들에서, 웨이퍼 부분(2000)의 전부 또는 임의의 부분은 도 1의 PE들(122)을 포함한다. 일부 실시예들 및/또는 사용 시나리오들에서, PE0(1820), PE1(1821), PE2(1822), 및 PE3(1823)중 임의의 것은 도 4의 PE(497)에 대응한다. 일부 실시예들 및/또는 사용 시나리오들에서, 인접한 PE들(2041, 2042, 2043, 및 2044) 사이의 커플링 및/또는 인접한 PE들(2050, 2051, 2052, 2053, 2054, 2055, 2056, 및 2057) 사이의 커플링의 부분 중 임의의 하나 이상은 도 4의 노스 커플링(430), 이스트 커플링(431), 사우스 커플링(432), 및 웨스트 커플링(433)에 대응한다.
[0530]
(예컨대, 도 17, 도 18a, 도 18b, 도 19, 및 도 20과 관련하여 설명되고 그들에 의해 예시된 바와 같은) 뉴런 스미어링에 관한 개념들은 다양한 토폴로지들 및 타입들의 뉴럴 네트워크들, 이를테면 FCNN들, RNN들, CNN들, LSTM 네트워크들, 오토인코더들, 심층 신뢰 네트워크들, 및 생산적 적대 네트워크들에 적용가능하다.
[0531]
다양한 실시예들 및/또는 사용 시나리오들에서, 뉴런들은 동일한 사이즈의 부분들, 예컨대 1/2개, 1/4개, 8개 등으로 분할된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 뉴런들은 상이한-사이즈의 부분들, 예컨대 절반인 제1 부분, 및 각각이 각 1/4인 제2 및 제3 부분들로 분할된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 뉴런들은 임의의-사이즈의 부분들로 분할된다.
[0532]
다양한 실시예들 및/또는 사용 시나리오들에서, 다수의 PE들이 단일 뉴런에 할당된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 단일 PE가 다수의 뉴런들의 개별 전체들에 할당된다.
[0533]
다양한 실시예들 및/또는 사용 시나리오들에서, PE들의 뉴런들로의 할당은 컴퓨테이셔널 및/또는 스토리지 요건들의 정적 및/또는 동적 측정들에 전체적으로 또는 부분적으로 응답한다. 다양한 실시예들 및/또는 사용 시나리오들에서, PE들의 뉴런들로의 할당은 프로세싱될 데이터의 차원수에 전체적으로 또는 부분적으로 응답한다.
[0534]
다양한 실시예들 및/또는 사용 시나리오들에서, 화살표들의 방향들에 의한 데이터흐름은 (도시된 화살촉에 의해 예시된 바와 같이) 단방향성, 양방향성, 및/또는 (도시된 화살촉에 대한) 역-방향이다. 특정 예로서, 다양한 실시예들 및/또는 사용 시나리오들에서, (도 17의) 통신(1792)은 (예컨대, 포워드 전파 동안) N21(1721)로부터 N31(1731)로의 데이터흐름 또는 (예컨대, 백 전파 동안) 역으로 N31(1731)로부터 N21(1721)로의 데이터흐름을 나타낸다. 따라서, 통신 부분(1792.1) 및 그러므로 (인접한 PE들 사이의 커플링의 부분) 2057 상에서의 통신은 (예컨대, 포워드 전파 동안) PE0(1820)으로부터 PE1(1821)까지 또는 (예컨대, 백 전파 동안) 역으로 PE1(1821)로부터 PE0(1820)까지 발생한다.
벡터들 및 데이터 구조 설명자들
[0535]
다양한 실시예들 및/또는 사용 시나리오들에서, 하나 이상의 벡터들의 프로세싱이 수행되며, 각각의 벡터는 데이터 엘리먼트들 중 개별의 하나 이상을 포함한다. 벡터는 다양하게, (예컨대, 도 8의 메모리(854) 또는 D-스토어(848)와 같은 PE의 CE의) 메모리로부터 판독되거나, 메모리에 기입되거나, 패브릭으로부터 수신되거나, 또는 패브릭에 송신된다. 메모리로부터 판독되거나 또는 메모리에 기입되는 벡터들은 때로 '메모리 벡터들'로 지칭된다. (예컨대, 웨이블릿들로서) 패브릭으로부터 수신되거나 또는 패브릭에 송신되는 벡터들은 때로 '패브릭 벡터들'로 지칭된다. DSR들로부터의 DSD들(뿐만 아니라 XDSR들로부터의 XDXD들)은 메모리 벡터들에 대한 어드레싱 패턴들 및 패브릭 벡터들에 대한 액세싱 패턴들을 결정하는 데 사용가능하다.
[0536]
"8"의 첫번째 디짓(digit)을 갖는 도 21a-e, 도 22a-b, 및 도 23-24의 설명에서의 각각의 엘리먼트 식별자는 도 8의 엘리먼트를 지칭하며, 간결함을 위해 도 8의 엘리먼트인 것으로 달리 구체적으로 식별되지 않는다.
[0537]
도 21a는 패브릭 입력 데이터 구조 설명자(2100)로서 패브릭 입력 데이터 구조 설명자(일명 패브릭 입력 DSD)의 실시예의 선택된 세부사항들을 예시한다. 일부 실시예들에서, 패브릭 입력 데이터 구조 설명자(2100)는 패브릭으로부터 PE에 의해 수신된 패브릭 벡터 뿐만 아니라 패브릭 벡터의 프로세싱에 관한 다양한 파라미터들을 설명한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 명령의 source0 피연산자 또는 source1 피연산자 중 어느 하나는 패브릭 입력 데이터 구조 설명자(2100)에 따른 DSD의 인스턴스를 포함하는 DSR을 지칭한다.
[0538]
패브릭 입력 데이터 구조 설명자(2100)는 길이(2101), UTID(Microthread Identifier)(2102), UE(Microthread Enable)(2103), SW(SIMD Width)(2104), AC(Activate Color)(2105), Term(Terminate Microthread on Control Wavelet)(2106), CX(Control Wavelet Transform Enable)(2107), US(Microthread Sparse Mode)(2108), 타입(2109), SS(Single Step)(2110), SA(Save Address / Conditional Single Step Mode)(2111), SC(Color Specified / Normal Mode)(2112), SQ(Queue Specified / Normal Mode)(2113), 및 CH(Color High)(2114)를 포함한다.
[0539]
일부 실시예들에서, 길이(2101)는 벡터의 길이, 예컨대 벡터 내의 데이터 엘리먼트들의 수를 지정하는 15-비트 정수를 포함한다.
[0540]
일부 실시예들에서, UE(Microthread Enable)(2103)는, 적어도 일부 조건들 하에서, 때로 패브릭 벡터 '마이크로쓰레딩 인에이블링(enabling microthreading)'으로 지칭되는, 패브릭 벡터의 프로세싱 동안 마이크로쓰레드가 인에이블링되는지 여부를 표시하는 1-비트 필드를 포함한다. 명령의 적어도 하나의 피연산자(소스 또는 목적지)가 패브릭 벡터 인에이블링 마이크로쓰레딩이면, 명령의 프로세싱 동안 입력 또는 출력 스톨 중 어느 하나 시에, (충분한 마이크로쓰레딩 리소스가 이용가능하다고 가정하여) 다른 태스크의 다른 명령으로 스위칭하기 위해 프로세싱이 인에이블링된다. 스톨이 클리어(clear)될 때, 프로세싱은 이전에 스톨링된 명령으로 (결국) 리턴한다. 예시적인 입력 스톨은, 입력 패브릭 피연산자들의 적어도 하나의 엘리먼트가 이용가능하지 않은 때이다. 예시적인 출력 스톨은, 출력 패브릭 벡터의 엘리먼트와 연관된 결과들을 버퍼링하기에 충분하지 않은 공간이 존재할 때이다. 일부 시나리오들에서, 마이크로쓰레딩을 인에이블링하지 않는 패브릭 벡터는 동기식으로 프로세싱되고, 입력 또는 출력 스톨 중 어느 하나 시에 프로세싱을 스톨링한다. 일부 시나리오들에서, 마이크로쓰레딩을 인에이블링하는 패브릭 벡터는 비동기식으로 프로세싱되고, 입력 또는 출력 스톨 중 어느 하나 시에 프로세싱 엘리먼트를 스톨링하는 것을 감소시키거나 또는 회피한다. 패브릭 벡터가 마이크로쓰레딩을 인에이블링하면, (스톨링 대신) 상이한 명령을 프로세싱하도록 조건부로 스위칭하고 후속하여 나중의 시점에(예컨대, 데이터가 이용가능할 때) 패브릭 벡터를 프로세싱하는 것을 재개하기 위해 프로세싱 엘리먼트가 인에이블링된다.
[0541]
일부 실시예들에서, UTID(Microthread Identifier)(2102)는 복수의 마이크로쓰레드들 중 하나의 마이크로쓰레드 및/또는 복수의 마이크로쓰레드들 중 하나의 마이크로쓰레드와 연관된 리소스들을 식별하는 3-비트 필드를 포함한다. 마이크로쓰레드들 및/또는 리소스들은, 예컨대 마이크로쓰레딩을 인에이블링하는 패브릭 벡터와 연관된다. 일부 실시예들에서, 하드웨어는 8개의 마이크로쓰레드들에 대한 리소스들을 제공한다. 일부 실시예들 및/또는 사용 시나리오들에서, UTID(2102)는 Q들(897) 중 하나를 식별하거나 또는 부분적으로 식별한다.
[0542]
일부 실시예들에서, SW(SIMD Width)(2104)는, 일부 구현들에서 병렬로 실행되는 연산들의 수(예컨대, 1, 2, 또는 4)를 지정하는 2-비트 필드를 포함한다. 예컨대, FMACH, FADDH, FMULH 또는 MOV16 명령은 개별 피연산자들에 대해 다수(최대 4개)의 연산들을 병렬로 수행한다. 일부 구현에서, SW 필드는 웨이블릿들을 데이터 대 인덱스 정보로 어떻게 파싱하는지를 결정하는 데 사용된다. 예컨대, SW 필드가 4일 때, 2개의 데이터 값들을 각각 갖는(그리고 어떠한 인덱스 값들도 갖지 않는) 2개의 웨이블릿들은 4개의 피연산자들을, 예컨대 병렬로 제공한다. 이 예로 계속하여, SW 필드가 2일 때, 2개의 데이터 값들을 갖는(그리고 어떠한 인덱스 값도 갖지 않는) 단일 웨이블릿은 2개의 피연산자들을, 예컨대 병렬로 제공한다. 이 예로 계속하여, SW 필드가 1일 때, 단일 데이터 값 및 단일 인덱스 값을 갖는 단일 웨이블릿은 단일 피연산자를 제공한다.
[0543]
일부 실시예들에서, AC(Activate Color)(2105)는 (예컨대, 활성화 동작을 통해) 활성화할 컬러를 지정하는 6-비트 필드를 포함한다. 일부 시나리오들에서, 마이크로쓰레딩을 인에이블링하는 패브릭 벡터에 대한 프로세싱이 완료될 때, AC 필드에 의해 특정된 컬러가 활성화되고, 활성화된 컬러에 기반하여 태스크가 개시된다. 프로세싱의 완료는, 예컨대 패브릭 벡터의 모든 엘리먼트들이 프로세싱되었을 때, 또는 Term(2106)이 제어 웨이블릿을 만날 시에 종결하도록 표시할 때 발생하며, 패브릭 벡터를 프로세싱하는 동안 제어 웨이블릿을 만난다. 일부 실시예들에서, AC(2105)는 로컬 컬러 및 패브릭 컬러 중 하나를 지정하도록 인에이블링된다.
[0544]
일부 실시예들에서, Term(Terminate Microthread on Control Wavelet)(2106)은 제어 웨이블릿을 수신할 시에 종결할지 여부를 지정하는 1-비트 필드를 포함한다. 패브릭 입력 데이터 구조 설명자(2100)에 의해 특정된 큐(예컨대, 본원 다른 곳에서 설명된 바와 같이, UTID(2102), SC(2112), 및/또는 SQ(2113)의 임의의 조합의 다양한 기능들에 의해 다양하게 특정된 바와 같은 Q들(897) 중 하나)의 헤드의 웨이블릿이 제어 웨이블릿(예컨대, 도 13a의 제어 비트(1320) 또는 도 13b의 제어 비트(1340)가 설정됨)이고 Term(2106)이 설정되면, 명령이 종결되고, AC(2105)에 의해 특정된 컬러가 활성화된다.
[0545]
일부 실시예들에서, CX(Control Wavelet Transform Enable)(2107)는 제어 웨이블릿들을 변환할지 여부를 지정하는 1-비트 필드를 포함한다. CS(2107)가 설정되면, 패브릭 벡터에서 제어 웨이블릿을 수신하는 것에 대한 응답으로, 인덱스 레지스터의 비트들 15:6이 모두 "1"들로 설정된다. 일부 실시예들 및/또는 사용 시나리오들에서, 인덱스 레지스터의 비트들 15:6가 모두 "1"들이면, 인덱스 레지스터를 참조하는 출력 패브릭 벡터와 연관된 임의의 출력 웨이블릿들의 제어 비트들이 설정된다.
[0546]
일부 실시예들에서, US(Microthread Sparse Mode)(2108)는 (예컨대, UE 필드를 통해) 마이크로쓰레딩을 인에이블링하는 패브릭 벡터가 희소 모드로 프로세싱되는지 여부를 지정하는 1-비트 필드를 포함한다. US(2108)이 설정되면, 패브릭 벡터는 패브릭 입력 데이터 구조 설명자(2100)에 의해 설명된 피연산자의 개별 웨이블릿 인덱스들 및 희소 데이터 엘리먼트들의 벡터를 포함한다. 인덱스들은 (도 21c의) WLI(2152)에 의존하여 메모리 피연산자들의 어드레스 계산을 위해 임의적으로 그리고/또는 선택적으로 사용된다.
[0547]
일부 실시예들에서, 타입(2109)은 데이터 구조 타입, 및/또는 패브릭 입력 데이터 구조 설명자(2100)의 다른 필드들을 어떻게 해석할 지를 지정하는 3-비트 필드를 포함한다. 타입(2109)은 패브릭 입력 데이터 구조 설명자(2100)의 모든 인스턴스들에 대해 "0"이다.
[0548]
일부 실시예들에서, SS(Single Step)(2110)는 피연산자로서 DSD를 사용하는 연산들을 위해 단일 스텝 모드가 적어도 일부 조건들 하에서 인에이블링되는지 여부를 지정하는 1-비트 필드를 포함한다. 일부 시나리오들에서, 단일 스텝 모드를 인에이블링하는 하나 이상의 피연산자들을 갖는 명령이 단일 스텝 모드로 동작한다.
[0549]
일부 실시예들에서, SA(Save Address / Conditional Single Step Mode)(2111)는 피연산자로서 DSD를 사용하는 연산들을 위해 저장 어드레스 모드 동작이 적어도 일부 조건들 하에서 인에이블링되는지 여부를 지정하는 1-비트 필드를 포함한다.
[0550]
일부 실시예들 및/또는 사용 시나리오들에서, 컬러가 활성화되고, 그에 대한 응답으로, 컬러에 적어도 부분적으로 기반하여 어드레스에서 태스크가 개시된다. 일단 개시되면, 태스크가 실행된다. 일부 시나리오들에서, 입력 패브릭 벡터는 현재 실행중인 태스크의 컬러와 연관된 큐로부터 제공된다. 일부 실시예들에서, SC(Color Specified, Normal Mode)(2112)는, 설정되면, 입력 패브릭 벡터가 특정 패브릭 컬러와 연관된 특정 큐(예컨대, Q들(897) 중 하나)로부터 제공된다는 것을 지정하는 1-비트 필드를 포함한다. 특정 패브릭 컬러는 (3-비트 필드를 포함하는) 하위 비트 UTID(2102) 및 (2-비트 필드를 포함하는) 상위 비트 CH(2114)의 연접으로서 (예컨대, 5-비트 컬러로서) 특정된다. 일부 실시예들에서, SQ(Color Specified, Normal Mode)(2113)는, 설정되면, 입력 패브릭 벡터가 특정 큐(예컨대, Q들(897) 중 하나)로부터 제공된다는 것을 지정하는 1-비트 필드를 포함한다. SQ(2113)가 설정되면, 입력 패브릭 벡터는 UTID(2102)에 의해 특정된 Q들(897) 중 하나로부터 제공된다.
[0551]
도 21b는 패브릭 출력 데이터 구조 설명자(2120)로서 패브릭 출력 데이터 구조 설명자(일명 패브릭 출력 DSD)의 실시예의 선택된 세부사항들을 예시한다. 일부 실시예들에서, 패브릭 출력 데이터 구조 설명자(2120)는 PE에 의해 생성되고 패브릭을 통해 송신된 패브릭 벡터 뿐만 아니라 패브릭 벡터의 프로세싱에 관한 다양한 파라미터들을 설명한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 명령의 목적지 피연산자는 패브릭 출력 데이터 구조 설명자(2120)에 따른 DSD의 인스턴스를 포함하는 DSR을 지칭한다.
[0552]
패브릭 출력 데이터 구조 설명자(2120)는 길이(2121), UTID(Microthread Identifier)(2122), UE(Microthread Enable)(2123), SW(SIMD Width)(2124), 컬러(2126), C(Output Control Bit)(2127), 인덱스 로우(2128.1), 타입(2129), SS(Single Step)(2130), SA(Save Address / Conditional Single Step Mode)(2131), WLI(Wavelet Index Select)(2132), 인덱스 하이(2128.2), 및 AC(Activate Color)(2125)를 포함한다.
[0553]
일부 실시예들에서, 패브릭 출력 데이터 구조 설명자(2120)의 엘리먼트들(길이(2121), UTID(2122), UE(2123), SW(2124), SS(2130), SA(2131), 및 AC(2125))은 패브릭 입력 데이터 구조 설명자(2100)의 엘리먼트들(길이(2101), UTID(2102), UE(2103), SW(2104), SS(2110), SA(2111), 및 AC(2105))에 대한 기능 및/또는 연산에서 각각 유사하다.
[0554]
일부 실시예들에서, 컬러(2126)는 패브릭 벡터와 연관된 웨이블릿들을 송신하는 데 사용되는 패브릭 컬러를 지정하는 5-비트 필드를 포함한다.
[0555]
일부 실시예들에서, C(Output Control Bit)(2127)는 웨이블릿이 제어 웨이블릿인지 여부를 지정하는 1-비트 필드를 포함한다. C(2127)가 설정되면, DSD에 기반하여 생성된 임의의 웨이블릿들은 제어 웨이블릿들이다(예컨대, 도 13a의 제어 비트(1320)가 설정됨).
[0556]
일부 실시예들에서, 인덱스 로우(2128.1)는 3-비트 필드를 포함하고, 인덱스 하이(2128.2)는 3-비트 필드를 포함한다. 인덱스 로우(2128.1)와 인덱스 하이(2128.2)의 연접은 인덱스(2128)로 집합적으로 지칭된다. 일부 시나리오들에서, 인덱스(2128)는 웨이블릿에 대한 인덱스(예컨대, 도 13a의 인덱스(1321))를 형성하는 데 사용된다.
[0557]
일부 실시예들에서, 타입(2129)은 데이터 구조 타입, 및/또는 패브릭 출력 데이터 구조 설명자(2120)의 다른 필드들을 어떻게 해석할 지를 지정하는 3-비트 필드를 포함한다. 타입(2129)은 패브릭 출력 데이터 구조 설명자(2120)의 모든 인스턴스들에 대해 "0"이다.
[0558]
일부 실시예들에서, WLI(Wavelet Index Select)(2132)는 패브릭 벡터의 인덱스를 부분적으로 지정하는 1-비트 필드를 포함한다. 일부 시나리오들에서, WLI(2132)가 "1"이면, 인덱스는 레지스터(예컨대, RF(842)의 GPR4)로부터의 값이다. 일부 시나리오들에서, WLI(2132)가 "0"이면, 인덱스는 인덱스(2128)의 16-비트에 대한 제로-확장이다.
[0559]
도 21c는 1D 메모리 벡터 데이터 구조 설명자(2140)로서 1D 메모리 벡터 데이터 구조 설명자(일명 1D 메모리 벡터 DSD)의 실시예의 선택된 세부사항들을 예시한다. 일부 실시예들에서, 1D 메모리 벡터 데이터 구조 설명자(2140)는 메모리에 저장된 1-차원 메모리 벡터 뿐만 아니라 메모리 벡터의 프로세싱에 관한 다양한 파라미터들을 설명한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 명령의 source0 피연산자, source1 피연산자, 및 목적지 피연산자 중 임의의 하나 이상은 1D 메모리 벡터 데이터 구조 설명자(2140)에 따른 DSD들의 개별 인스턴스들을 포함하는 개별 DSR들을 지칭한다.
[0560]
1D 메모리 벡터 데이터 구조 설명자(2140)는 길이(2141), 베이스 어드레스(2142), 타입(2149), SS(Single Step)(2150), SA(Save Address / Conditional Single Step Mode)(2151), WLI(Wavelet Index Select)(2152), 및 스트라이드(2153)를 포함한다.
[0561]
일부 실시예들에서, 1D 메모리 벡터 데이터 구조 설명자(2140)의 엘리먼트들 중 일부(길이(2141), SS(2150), 및 SA(2151))는 패브릭 입력 데이터 구조 설명자(2100)의 엘리먼트들 중 일부(길이(2101), SS(2110), 및 SA(2111))에 대한 기능 및/또는 연산에서 각각 유사하다. 일부 시나리오들에서, 메모리 벡터의 길이가 15비트보다 크면, 4D 메모리 벡터 데이터 구조 설명자(2140)가 사용된다.
[0562]
일부 실시예들에서, 베이스 어드레스(2142)는 메모리 벡터의 베이스 어드레스를 지정하는 15비트 정수를 포함한다.
[0563]
일부 실시예들에서, 타입(2149)은 데이터 구조 타입, 및/또는 1D 메모리 벡터 데이터 구조 설명자(2140)의 다른 필드들을 어떻게 해석할 지를 지정하는 3-비트 필드를 포함한다. 타입(2149)은 1D 메모리 벡터 데이터 구조 설명자(2140)의 모든 인스턴스들에 대해 "1"이다.
[0564]
일부 실시예들에서, WLI(Wavelet Index Select)(2152)는 벡터의 인덱스를 부분적으로 지정하는 1-비트 필드를 포함한다. WLI(2152)가 "0"이면, 인덱스가 0이다. 일부 시나리오들에서, WLI(2152)가 "1"이면, 인덱스는 레지스터(예컨대, RF(842)의 GPR4)로부터의 값 또는 희소 웨이블릿(예컨대, 도 13a의 인덱스(1321))의 인덱스이다.
[0565]
일부 실시예들에서, 스트라이드(2153)는 벡터의 스트라이드를 지정하는 9-비트 부호있는 정수를 포함한다. 일부 시나리오들에서, 베이스 어드레스(2142), WLI(2153)에 의해 특정된 인덱스, 및 스트라이드(2153)는 1D 메모리 벡터 내의 데이터 엘리먼트들의 어드레스들을 계산하는 것을 가능하게 한다. 1D 메모리 벡터 내의 제1 데이터 엘리먼트의 어드레스는 베이스 어드레스(2142) + WLI(2153)에 의해 특정된 인덱스이다. 1D 벡터 내의 바로 다음 데이터 엘리먼트의 어드레스는 제1 데이터 엘리먼트의 어드레스 + 스트라이드(2153)이다. 예컨대, 베이스 어드레스(2142)는 136이고, WLI(2153)는 1이고, GPR4는 값 6을 홀딩하고, 스트라이드(2153)은 -2이고, 길이(2141)는 10이며, 이어서 메모리 벡터는 어드레스들에 로케이팅된 데이터 {142, 140, 138, …, 124}를 포함한다. 일부 시나리오들에서, 메모리 벡터의 스트라이드가 9비트보다 크면, 4D 메모리 벡터 데이터 구조 설명자(2140)가 사용된다.
[0566]
도 21d는 4D 메모리 벡터 데이터 구조 설명자(2160)로서 4D 메모리 벡터 데이터 구조 설명자(일명 4D 메모리 벡터 DSD)의 실시예의 선택된 세부사항들을 예시한다. 일부 실시예들에서, 4D 메모리 벡터 데이터 구조 설명자(2160)는 도 22b의 4D 메모리 벡터 확장 데이터 구조 설명자(2240)와 함께, 메모리에 저장된 4-차원 메모리 벡터 뿐만 아니라 메모리 벡터의 프로세싱에 관한 다양한 파라미터들을 설명한다. 일부 실시예들에서, 4D 메모리 벡터 데이터 구조 설명자(2160)는 도 22b의 4D 메모리 벡터 확장 데이터 구조 설명자(2240)와 함께, 메모리에 저장된 2-차원 또는 3-차원 메모리 벡터뿐만 아니라 메모리 벡터의 프로세싱에 관한 다양한 파라미터들을 설명한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 명령의 source0 피연산자, source1 피연산자, 및 목적지 피연산자 중 임의의 하나 이상은 4D 메모리 벡터 데이터 구조 설명자(2160)에 따른 DSD들의 개별 인스턴스들을 포함하는 개별 DSR들을 지칭한다.
[0567]
4D 메모리 벡터 데이터 구조 설명자(2160)는 길이 하위 비트(2161.1), 베이스 어드레스(2162), 타입(2169), SS(Single Step)(2170), SA(Save Address/Conditional Single Step Mode)(2171), WLI(Wavelet Index Select)(2172), 및 길이 상위 비트(2161.2)을 포함한다.
[0568]
일부 실시예들에서, 4D 메모리 벡터 데이터 구조 설명자(2160)의 엘리먼트들 중 일부(베이스 어드레스(2162), SS(2170), SA(2171), 및 WLI(2172))는 1D 메모리 벡터 데이터 구조 설명자(2140)(베이스 어드레스(2142), SS(2150), SA(2151), 및 WLI(2152))에 대한 기능 및/또는 연산에서 각각 유사하다.
[0569]
일부 실시예들에서, 하위 비트(2161.1)는 15-비트 필드를 포함하고, 길이 상위 비트(2161.2)는 9-비트 필드를 포함한다. 하위 비트(2161.1)와 길이 상위 비트(2161.2)의 연접은 4D 메모리 벡터 확장 데이터 구조 설명자(2240)와 함께 해석되는 길이(2161)(24-비트 필드)로 집합적으로 지칭된다(그리고, 그 길이로서 예시됨).
[0570]
일부 실시예들에서, 타입(2169)은, 예컨대 연장된 DSD(XDSD)를 저장하는 연장된 DSR(XDSR)을 지정하는 3-비트 필드를 포함한다. XDSD는, 원형 메모리 버퍼(예컨대, 도 22a의 원형 메모리 버퍼 확장 데이터 구조 설명자(2210)) 및 4-차원 메모리 벡터(예컨대, 도 22b의 4D 메모리 벡터 확장 데이터 구조 설명자(2240)) 중 하나를 특정하고 설명한다.
[0571]
도 21e는 원형 메모리 버퍼 데이터 구조 설명자(2180)로서 원형 메모리 버퍼 데이터 구조 설명자(일명 원형 메모리 버퍼 DSD)의 실시예의 선택된 세부사항들을 예시한다. 일부 실시예들에서, 원형 메모리 버퍼 데이터 구조 설명자(2180)는 원형 메모리 버퍼 확장 데이터 구조 설명자(2210)와 함께, 메모리에 저장된 데이터 엘리먼트들의 원형 버퍼 및 메모리에 저장된 데이터 엘리먼트들의 FIFO 중 하나 뿐만 아니라 데이터 엘리먼트들의 프로세싱에 관한 다양한 파라미터들을 설명한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 명령의 source0 피연산자, source1 피연산자, 및 목적지 피연산자 중 임의의 하나 이상은 원형 메모리 버퍼 데이터 구조 설명자(2180)에 따른 DSD들의 개별 인스턴스들을 포함하는 개별 DSR들을 지칭한다.
[0572]
원형 메모리 버퍼 데이터 구조 설명자(2180)는 길이(2181), 베이스 어드레스(2182), FW(FIFO Wrap Bit)(2188), 타입(2189), SS(Single Step)(2190), SA(Save Address / Conditional Single Step Mode)(2191), WLI(Wavelet Index Select)(2192), 및 SW(SIMD Width)(2184)를 포함한다. 일부 실시예들에서, 원형 메모리 버퍼 액세스는 항상, 제로의 인덱스 및 1의 스트라이드를 갖는다.
[0573]
일부 실시예들에서, 원형 메모리 버퍼 데이터 구조 설명자(2180)의 엘리먼트들 중 일부(길이(2181), 베이스 어드레스(2182), SS(2190), 및 SA(2191))는 1D 메모리 벡터 데이터 구조 설명자(2140)의 엘리먼트들 중 일부(길이(2141), 베이스 어드레스(2142), SS(2150), 및 SA(2151))에 대한 기능 및/또는 연산에서 각각 유사하다. 일부 실시예들에서, 타입(2189)은 4D 메모리 벡터 데이터 구조 설명자(2160)의 타입(2169)과 기능 및/또는 연산에서 유사하다. 일부 실시예들에서, 원형 메모리 버퍼 데이터 구조 설명자(2180)의 SW(2184)는 패브릭 입력 데이터 구조 설명자(2100)의 SW(2104)와 기능 및/또는 연산에서 유사하다.
[0574]
일부 실시예들에서, FW(FIFO Wrap Bit)(2188)는 채워진(full) FIFO와 빈(empty) FIFO 간을 구별하는 것을 가능하게 하는 1-비트 필드를 포함한다. FW(FIFO Wrap Bit)(2188)는, 액세스가 FIFO의 어드레스 범위를 랩 어라운드할 때 토글링된다.
[0575]
일부 실시예들에서, WLI(2192)는 원형 버퍼의 인덱스에 어떠한 영향도 갖지 않는다.
[0576]
도 22a는 원형 메모리 버퍼 확장 데이터 구조 설명자(2210)로서 원형 메모리 버퍼 확장 데이터 구조 설명자의 실시예의 선택된 세부사항들을 예시한다. 원형 메모리 버퍼 확장 데이터 구조 설명자(2210)는 타입(2211), 시작 어드레스(2212), 종료 어드레스(2213), FIFO(2214), 컬러 푸시(활성화)(2215), 및 컬러 팝(활성화)(2216)을 포함한다.
[0577]
일부 실시예들에서, 타입(2211)은 데이터 구조의 타입을 지정하는 1-비트 필드를 포함한다. 타입(2211)은 원형 메모리 버퍼 확장 데이터 구조 설명자(2210)의 모든 인스턴스들에 대해 "1"이다.
[0578]
일부 실시예들에서, 시작 어드레스(2212)는 메모리 내의 원형 버퍼의 시작 어드레스를 지정하는 15-비트 필드를 포함한다. 일부 실시예들에서, 종료 어드레스(2213)는 메모리 내의 원형 버퍼의 종료 어드레스를 지정하는 15-비트 정수를 포함한다. 어드레스가 (예컨대, 바로 다음 액세스를 개시하도록 스트라이드에 의해) 증분되고 종료 어드레스(2213)와 동일할 때, 어드레스는 베이스 어드레스(2212)로 재설정되어, 그에 의해 원형 액세스 거동을 제공한다.
[0579]
일부 실시예들에서, FIFO(2214)는 원형 버퍼가 FIFO인지 여부를 지정하는 1-비트 필드를 포함한다. FIFO(2214)가 "0"이면, 원형 버퍼는 FIFO가 아니다. FIFO(2214)가 "1"이면, 원형 버퍼는 FIFO이다.
[0580]
일부 실시예들에서, 컬러 푸시(활성화)(2215) 및 컬러 팝(활성화)(2216)은 (예컨대, 활성화 동작을 통해) 활성화할 컬러들을 지정하는 6-비트 필드들을 포함한다. 일부 실시예들에서, 컬러 푸시(활성화)(2215) 및 컬러 팝(활성화)(2216)은 로컬 컬러 및 패브릭 컬러 중 하나들을 지정하도록 인에이블링된다.
[0581]
다양한 실시예들에서, 2개의 원형 메모리 버퍼 DSR들은 메모리의 동일한 구역에 저장된 데이터 엘리먼트들의 FIFO를 설명하도록 인에이블링된다. 목적지 DSR(예컨대, DDSR8)은 FIFO의 기입 포인터를 설명하고, source1 DSR(예컨대, S1DSR8)은 FIFO의 판독 포인터를 설명한다. 일부 실시예들에서, 목적지 및 source1 DSR들은 동일한 식별자를 갖는다. 다양한 실시예들에서, DSR들(846) 중 일부만이 FIFO들(예컨대, DDSR8-DDSR11 및 S1DSR8-S1DSR11)을 설명하도록 인에이블링된다.
[0582]
두 DSR들의 FW(FIFO Wrap Bit)(2188)는 FIFO가 가득 찬 상태인지 또는 빈 상태인지를 검출하는 것을 가능하게 한다. FIFO가 목적지로서 사용될 때, 연관된 S1DSR의 베이스 어드레스(2182) 및 FW(2188)가 판독되고 DDSR로부터의 값들과 비교된다. 두 DSR들의 베이스 어드레스(2182)가 동일하지만, FW(2188)가 상이하면, FIFO는 가득 찬 상태이다. FIFO가 소스로서 사용될 때, 연관된 DDSR의 베이스 어드레스(2182) 및 FW(2188)가 판독되고 S1DSR로부터의 값들과 비교된다. 두 DSR들의 베이스 어드레스(2182)가 동일하고 FW(2188)가 동일하면, FIFO는 빈 상태이다. 일부 시나리오들(예컨대, 마이크로쓰레딩)에서, 빈 FIFO에 액세스하는 판독 또는 채워진 FIFO에 액세스하는 기입에 대한 응답으로, FIFO가 각각 빈 상태가 아니거나 또는 채워진 상태가 아닐 때까지, 프로세싱은 다른 태스크에서의 명령으로 전환된다.
[0583]
도 22b는 4D 메모리 벡터 확장 데이터 구조 설명자(2240)와 같은 4D 메모리 벡터 확장 데이터 구조 설명자의 실시예의 선택된 세부사항들을 예시한다. 일부 실시예들에서, 4D 메모리 벡터 확장 데이터 구조 설명자(2240)는 메모리에 저장된 데이터 엘리먼트들의 4-차원 벡터를 부분적으로 설명한다. 4D 메모리 벡터 확장 데이터 구조 설명자(2240)는 타입(2241), 디멘션들(2242), DF(Dimension Format)(2243), 선택 스트라이드 1(2244.1), 선택 스트라이드 2(2244.2), 선택 스트라이드 3(2244.3), 선택 스트라이드 4(2244.4) 및 스트라이드(2245)를 포함한다. 일부 실시예들에서, 4D 메모리 벡터 확장 데이터 구조 설명자(2240)는 51 비트를 포함한다.
[0584]
일부 실시예들에서, 타입(2241)은 데이터 구조의 타입을 지정하는 1-비트 필드를 포함한다. 타입(2241)은 4D 메모리 벡터 확장 데이터 구조 설명자(2240)의 모든 인스턴스들에 대해 "0"이다.
[0585]
일부 실시예들에서, 디멘션들(2242)은 벡터의 바로 다음 디멘션의 길이를 초기화하는 데 사용되는 20-비트 필드를 포함한다.
[0586]
일부 실시예들에서, DF(Dimension Format)(2243)는, 도 21d의 길이(2161)와 함께 N-차원 벡터의 각각의 디멘션의 길이를 지정하는 5-비트 필드를 포함한다. 개념상으로, 길이(2161)는 6 개의 연속 4-비트 니블들로 분할되며, 각각의 디멘션은 니블들 중 하나 이상을 사용하여 표현된다. 비트들은 길이(2161)에서의 디멘션들 사이의 경계들을 표시하기 위해 DF(2243)에 설정된다. 예컨대, DF(2242)는 "01110"(이진)이며, 이는 제1 디멘션이 2 개의 니블들, 예컨대 비트 [7:0]를 사용하여 표현되고, 1 내지 128의 길이를 표현하는 것을 표시한다. 유사하게, 제2 디멘션은 하나의 니블, 예컨대 비트 [11:8]를 사용하여 표현되고, 1 내지 4의 길이를 표현한다. N-차원 벡터는 DF(2242)에 (N-1) 비트를 설정함으로써 표현되며, 마지막 디멘션만이 4 개 초과의 니블들을 사용한다. 일부 실시예들 및/또는 사용 시나리오들에서, 예컨대, 벡터가 (도 21c의) 길이(2141)에 대해 너무 길어서 설명하지 못하면, 이 포맷을 사용하여 1차원 벡터가 설명된다. 일부 실시예들 및/또는 사용 시나리오들에서, 이 포맷을 사용하여 2-차원 또는 3-차원 벡터가 설명된다.
[0587]
일부 실시예들에서, 선택 스트라이드 1(2244.1)은 벡터의 제1 디멘션에 대한 스트라이드를 지정하는 1-비트 필드를 포함한다. 선택 스트라이드 1(2244.1)이 "0"이면, 스트라이드는 1이다. 선택 스트라이드 1(2244.1)이 "1"이면, 스트라이드는 스트라이드(2245)에 의해 특정된다.
[0588]
일부 실시예들에서, 선택 스트라이드 2(2244.2)는 3-비트 필드를 포함하고, 벡터의 제2 디멘션에 대한 스트라이드를 인코딩한다. 선택 스트라이드 2(2244.2)가 "0"이면, 스트라이드는 1이다. 선택 스트라이드 2(2244.2)가 "1"이면, 스트라이드는 스트라이드(2245)에 의해 특정된다. 스트라이드 선택 2(2244.2)가 2-7이면, 스트라이드는 (예컨대, DSR들(846)의 6 개의 스트라이드 레지스터들 중) 대응하는 (DSR) 스트라이드 레지스터에 의해 특정된다.
[0589]
일부 실시예들에서, 선택 스트라이드 3(2244.3) 및 선택 스트라이드 4(2244.4)는 개별 3-비트 필드를 포함한다. 일부 실시예들에서, 선택 스트라이드 2(2244.2)가 제2 디멘션에 대해서와 같이, 선택 스트라이드 3(2244.3) 및 선택 스트라이드 4(2244.4)는 제3 및 제4 디멘션에 대해 기능 및/또는 동작에서 각각 유사하다.
[0590]
일부 실시예들에서, 스트라이드(2245)는 메모리에서 벡터의 스트라이드를 지정하는 15-비트 필드를 포함한다. 일부 시나리오들에서, 스트라이드(2245)는 (도 21c의) 스트라이드(2153)보다 1차원 벡터에 대해 더 긴 스트라이드를 사용하는 것을 가능하게 한다.
[0591]
도 23은 데이터 구조 설명자 흐름(2300)으로서 데이터 구조 설명자들에 따른 피연산자들에 액세스하는 실시예의 선택된 세부사항들을 예시한다. 일부 실시예들에서, 데이터 구조 설명자 흐름(2300)의 액션들은 CE(예컨대, CE(800))에 의해 수행된다.
[0592]
데이터 구조 설명자를 통해 소스 피연산자에 액세스하는 것은, PE의 CE의 하나 이상의 DSR들을 개별 DSD들로 초기화함으로써(DSR(들) 설정(2302)), 그리고 임의적으로, CE의 개별 XDSD들 및/또는 스트라이드 값들을 초기화함으로써((임의적) XDSR(들) 설정(2305)) 시작한다(시작(2301)). 일부 실시예들에서, 초기화된 DSR들(뿐만 아니라, 임의적으로, 초기화된 XDSR들 및 스트라이드 값들을 보유하는 스트라이드 레지스터들)은 메모리로부터 DSR들로 데이터를 이동시키는 명령들에 의해 초기화된다. 후속하여, CE는, 초기화된 DSR들에 의해 특정된 하나 이상의 피연산자들 그리고 임의적으로 하나 이상의 XDSR들 및/또는 스트라이드 레지스터들을 포함하는 명령(예컨대, FMACH, MOV 또는 LT16)을 페치 및 디코딩한다(DSR(들)로 명령 페치/디코딩(2303)). 일부 실시예들에서, 명령의 피연산자 타입 필드들은 피연산자가 DSR에 의해 특정되는지 여부를 지정한다.
[0593]
CE는, DSR들로부터 하나 이상의 DSD들을 판독하고(DSR(들) 판독(2304)), 데이터 구조의 타입, 데이터 엘리먼트(들)의 소스, (예컨대, SIMD 동작에 대해) 다수의 데이터 엘리먼트들이 함께 판독되는지 여부, 및 각각의 피연산자에 대한 데이터 엘리먼트들의 총 수 중 하나 이상을 결정한다. 도 24와 관련하여 설명된 바와 같이, 결정에 따라, 각각의 DSD 판독에 대해, XDSR 및 하나 이상의 스트라이드 레지스터들이 또한 임의적으로 판독된다((임의적) XDSR(들) 판독(2306)). 일부 시나리오들에서, DSR들은, source0 피연산자, source1 피연산자 및 목적지 피연산자 중 하나 이상에 대해 판독되며, 액션(2303)에서 획득된 명령의 개별 피연산자 필드들에 의해 식별된다. 일부 실시예들 및/또는 사용 시나리오들에서, DSR들, XDSR들 및 스트라이드 레지스터들 중 임의의 하나 이상은 전체적으로 또는 부분적으로 병렬로 판독되고, 다른 실시예들 및/또는 사용 시나리오들에서, DSR들, XDSR들 및 스트라이드 레지스터들 중 임의의 하나 이상은 전체적으로 또는 부분적으로 순차적으로 판독된다.
[0594]
액션(2304)에서 획득된 DSD들(및 액션(2306)에서 획득된 임의적 XDSR들 및 스트라이드 값들)에 기반하여, CE는 패브릭 및/또는 메모리로부터 하나 이상의 소스 데이터 엘리먼트(들)를 판독한다(큐/메모리로부터 (바로 다음) 소스 데이터 엘리먼트(들) 판독(2310)). 액션(2303)에서 획득된 명령에 의해 특정된 각각의 소스(예컨대, source0 및 source1 각각)에 대해, CE는 명령에 특정된 동작의 반복을 위해 그리고 DSD들에서의 SIMD 폭 정보에 따라 충분한 엘리먼트들을 판독한다. 패브릭으로부터의 데이터 엘리먼트(들)(예컨대, 소스 데이터 구조는 패브릭 벡터임)는 CE의 하나 이상의 큐들을 통해 액세스된다. 일부 실시예들 및/또는 사용 시나리오들에서, CE는 또한, 레지스터들로부터 데이터 엘리먼트(들)를 판독한다.
[0595]
소스 데이터 엘리먼트(들)를 판독한 후에, CE는 입력들로서 데이터 엘리먼트(들)를 사용하여 동작을 수행한다(데이터 엘리먼트(들)에 대해 바로 다음 동작(들) 수행(2311)). 동작은, 액션(2303)에서 획득된 명령(예컨대, FMACH 명령의 경우 곱셈-누적 연산, MOV 명령의 경우 이동 연산, 또는 LT16의 경우 정수 미만 비교)에 의해 특정된다.
[0596]
일부 시나리오들에서, 연산(예컨대, 곱셈-누적 연산 또는 이동 연산)은 하나 이상의 출력 데이터 엘리먼트(들)를 산출한다. CE는, 액션(2304)에서 획득된 DSD들(및 액션(2306)에서 획득된 임의적 XDSR들 및 스트라이드 값들)에 기반하여, 패브릭 또는 메모리에 출력 데이터 엘리먼트(들)를 기입한다(큐/메모리에 바로 다음 목적지 데이터 엘리먼트(들) 기입(2312)). 패브릭에 전송된 데이터 엘리먼트(들)(예컨대, 목적지 데이터 구조는 패브릭 벡터임)는 웨이블릿들로 형성되고, PE의 라우터를 통해 패브릭에 송신된다. 일부 다른 시나리오들에서는, 출력 데이터 엘리먼트들(예컨대, 일부 비교 동작들)이 없다.
[0597]
동작으로부터의 임의의 결과들을 기입한 후에, CE는 프로세싱할 추가의 데이터 엘리먼트(들)가 있는지를 결정한다(추가 데이터 엘리먼트(들)?(2313)). 일부 실시예들에서, DSD는 액세스할 데이터 엘리먼트들의 총 수(예컨대, 벡터의 길이)를 지정하고, CE는 액세스된(예컨대, 카운터를 통해 추적된) 데이터 엘리먼트(들)의 수를, 길이에 의해 특정된 데이터 엘리먼트(들)의 총 수와 비교한다. 프로세싱할 추가의 데이터 엘리먼트(들)가 있으면, 모든 데이터 엘리먼트(들)가 프로세싱될 때까지 CE는 액션들(2310-2313)을 반복하고, 흐름은 종결된다(종료(2316)).
[0598]
다양한 실시예들 및/또는 사용 시나리오들에서, 데이터 구조 설명자 흐름(2300)의 엘리먼트들 중 임의의 하나 이상의 엘리먼트들의 전부 또는 임의의 부분들(예컨대, 2302-2312의 임의의 하나 이상의 액션들)은 CE, 예컨대 CE(800)에 의해 수행되는 동작들 및/또는 이 CE의 엘리먼트들에 개념상으로 대응하고 그리고/또는 이들에 개념상으로 관련된다.
[0599]
예로서, 소스 DSD들을 보유하는 소스 DSR들(DSR(들) 설정(2302) 및 DSR(들) 판독(2304)과 연관됨)은 DSR들(846)(예컨대, S0DSR들, S1DSR들, DDSR들, XDSR들 및 스트라이드 레지스터들) 중 하나 이상이다. 일부 실시예들에서, CE(800)는 DSD들을 DSR들, 예컨대 LDS0WDS, LDS1WDS, LDXDS 및 LDSR에 기입하는 명령(들)에 대한 응답으로 DSR(들) 설정(2302)을 수행한다.
[0600]
또 다른 예로서, CE(800)는 DSR(들)로 명령 페치/디코딩(2303)을 수행한다. 다양한 실시예들에서, PC(834) 및 I-Seq(836)는 메모리(854)로부터 명령들을 페치하고, Dec(840)는 페치된 명령들을 디코딩한다. 일부 실시예들에서, 명령들은 도 25a의 다중 피연산자 명령(2510), 하나의 소스, 도 25b의 0개의 목적지 피연산자 명령(2520), 및 도 25c의 즉각적 명령(2530) 중 하나에 따라 포맷된다. 일부 실시예들에서, 디코딩은 명령 피연산자가 DSD에 의해 특정됨을 검출하는 것, 예컨대, 피연산자 1 타입(2514.1)의 값이 "1"임을 검출하는 것을 포함한다.
[0601]
또 다른 예로서, CE(800)는 DSR에 의해 특정된 하나 이상의 피연산자들을 갖는 명령에 대한 응답으로 DSR(들) 판독(2304)을 수행한다. 다양한 실시예들에서, D-Seq(844)는 액션(2303)에서 획득된 명령에 의해 특정된 DSR(들)을 DSR들(846)로부터 판독한다. 일부 실시예들에서, DSR들로부터 판독된 DSD들은, 도 21a의 패브릭 입력 데이터 구조 설명자(2100), 도 21b의 패브릭 출력 데이터 구조 설명자(2200), 도 21c의 1D 메모리 벡터 데이터 구조 설명자(2140), 도 21d의 4D 메모리 벡터 데이터 구조 설명자(2160), 그리고 도 21e의 원형 메모리 버퍼 데이터 구조 설명자(2180) 중 하나 이상에 따라 포맷된다. 일부 실시예들 및/또는 사용 시나리오들에서, D-Seq(844)는 예컨대 XDSR을 지정하는 타입(2169) 또는 타입(2189)을 갖는 DSD들에 대한 응답으로 (임의적) XDSR(들) 판독(2306)을 수행한다. 다양한 실시예들에서, XDSR들로부터 판독된 XDSD들은, 도 22a의 원형 메모리 확장 버퍼 데이터 구조 설명자(2180) 및 도 22b의 4D 메모리 벡터 확장 데이터 구조 설명자(2160) 중 하나에 따라 포맷된다.
[0602]
또 다른 예로서, CE(800)는, 액션(2304)에서 판독된 소스 DSD(들) 및 임의적으로 액션(2306)에서 판독된 XDSD(들)에 기반하여, 큐/메모리(2310)로부터 (바로 다음) 소스 데이터 엘리먼트(들) 판독을 수행한다. 일부 시나리오들에서, 소스 DSD는 피연산자가 메모리로부터 비롯된다는 것을 (예컨대, 타입(2149)을 통해) 지정하며, D-Seq(844)는 D-스토어(848) 또는 메모리(854)로부터 (예컨대, 베이스 어드레스(2142), WLI(2152) 및 스트라이드(2153) 중 하나 이상에 부분적으로 기반하여) DSD에 의해 특정된 어드레스(들)에서 데이터 엘리먼트(들)를 판독한다. 일부 시나리오들에서, 소스 DSD는 피연산자가 패브릭으로부터 비롯된다는 것을 (예컨대, 타입(2109)을 통해) 지정하며, CE(800)는 Q들(897) 중 하나로부터 데이터 엘리먼트(들)를 판독한다. 일부 실시예들 및/또는 사용 시나리오들에서, 데이터 엘리먼트들은 Q들(897) 중 하나로부터 데이터 경로(852)로 직접적으로 송신된다. 다른 실시예들 및/또는 사용 시나리오들에서, 데이터 엘리먼트들은 Q들(897) 중 하나로부터 RF(842)로, 그리고 RF로부터 데이터 경로(852)로 송신된다. 일부 실시예들에서, Q들(897) 중 하나는 DSD의 부분들(예컨대, UTID(2102), SC(2112) 및 SQ(2113) 중 하나 이상)에 의해 암묵적으로 특정된다. 일부 시나리오들에서, CE는 현재 태스크(예컨대, 액션(2303)에서 획득된 명령과 연관된 태스크)의 컬러와 연관된 큐로부터 판독한다. 일부 시나리오들(예컨대, SQ(2113)는 "1"임)에서, CE는 UTID(2102)에 의해 특정된 큐로부터 판독한다. 일부 시나리오들(예컨대, SQ(2112)는 "1"임)에서, CE는 CH(2114)와 연접된 UTID(2102)에 의해 특정된 컬러와 연관된 큐로부터 판독한다. 일부 시나리오들에서, CE는 SW(2104)에 기반하여, 특정된 큐로부터 1개, 2개 또는 4개의 데이터 엘리먼트들을 판독한다.
[0603]
이어서, 일부 실시예들 및/또는 사용 시나리오들에서, CE(800)가 Q들(897)의 특정된 큐에서 이용가능한 것보다 더 많은 데이터 엘리먼트(들)를 판독하려고 시도하거나, 또는 대안적으로 빈 FIFO(예컨대, 도 21e에 따른 DSD에 따라 구현됨)로부터 판독하려고 시도할 때, CE(800)는 스톨링한다. 일부 실시예들 및/또는 사용 시나리오들(예컨대, 마이크로쓰레딩)에서, 피커(830)는, 데이터 엘리먼트(들)를 대기하면서 Q들(897)과는 상이한 태스크를 선택하는 것이 가능하게 되어서, CE(800)가 스톨링하는 것을 회피하는 것을 가능하게 한다.
[0604]
또 다른 예로서, CE(800)는 데이터 엘리먼트(들)에 대해 (바로 다음) 동작 수행(2311)을 수행한다. 일부 실시예들에서, 데이터 경로(852)는, 액션(2303)에서 획득된 명령에 의해 특정된 동작에 대한 입력들로서, 액션(2310)에서 판독된 데이터 엘리먼트(들)를 사용한다. 일부 시나리오들(예컨대, 컴퓨테이셔널 연산)에서, 액션(2311)이 출력 데이터 엘리먼트(들)를 산출하는 한편, 다른 시나리오들(예컨대, 비교 동작)에서, 액션(2311)은 출력 데이터 엘리먼트를 산출하지 않는다. 일부 실시예들에서, 데이터 경로(852)는, 하나보다 많은 동작을 동시에 수행하는 것, 예컨대, SIMD 실행 자원들을 사용하여 2개 또는 4개의 곱셈-누적 연산들을 동시에 수행하는 것이 가능하게 된다.
[0605]
또 다른 예로서, CE(800)는, 액션(2304)에서 판독된 목적지 DSD 및 임의적으로 액션(2306)에서 판독된 XDSD(들)에 기반하여, 큐/메모리에 (바로 다음) 소스 데이터 엘리먼트(들) 기입(2312)을 수행한다. 일부 시나리오들에서, 목적지 DSD는 피연산자가 메모리로 향한다는 것을 (예컨대, 타입(2149)을 통해) 지정하며, D-Seq(844)는 (예컨대, 베이스 어드레스(2142), WLI(2152) 및 스트라이드(2153) 중 하나 이상에 부분적으로 기반하여) 목적지 DSD에 의해 특정된 어드레스(들)에서 D-스토어(848) 또는 메모리(854)에 데이터 엘리먼트(들)를 기입한다.
[0606]
다양한 실시예들 및/또는 사용 시나리오들에서, 액션(2312)의 부분들(예컨대, 패브릭에 목적지 데이터 엘리먼트들 기입)은 도 14의 라우터(1406)에 웨이블릿으로서 데이터 엘리먼트(들)를 제공하는 것에 개념상으로 대응하고 그리고/또는 이에 개념상으로 관련된다. 일부 시나리오들에서, 목적지 DSD는 피연산자가 패브릭에 전송된다는 것을 (예컨대, 타입(2129)을 통해) 지정하며, CE(800)는 데이터 엘리먼트(들)로부터 (예컨대, 패브릭 출력 데이터 구조 설명자(2120)에 부분적으로 기반하여) 웨이블릿(들)을 생성하고, 이들을 온 램프(860)를 통해 패브릭에 대한 (도 6의) 라우터(600)에 송신한다. 일부 시나리오들에서, CE는 목적지 DSD의 SW(2124)에 기반하여 웨이블릿들로서 1개, 2개 또는 4개의 데이터 엘리먼트들을 송신한다.
[0607]
이어서, 일부 실시예들 및/또는 사용 시나리오들에서, CE(800)가 라우터(600)에서 이용가능한 자원들보다 더 많은 웨이블릿들을 송신하려고 시도하거나(예컨대, 도 6의 데이터 큐들(650)에 불충분한 자원들이 있음), 또는 대안적으로 채워진 FIFO(예컨대, 도 21e에 따른 DSD에 따라 구현됨)에 기입하려고 시도할 때, CE(800)는 스톨링한다. 일부 실시예들 및/또는 사용 시나리오들(예컨대, 마이크로쓰레딩)에서, 피커(830)는, 추가 자원들을 대기하면서 Q들(897)과는 상이한 태스크를 선택하는 것이 가능하게 되어서, CE(800)가 스톨링하는 것을 회피하는 것을 가능하게 한다.
[0608]
또 다른 예로서, CE(800)는 액션(2313)을 수행한다. 일부 실시예들에서, D-Seq(844)는 (예컨대, 각각의 데이터 엘리먼트에 대한 카운터를 증분함으로써) 얼마나 많은 데이터 엘리먼트(들)가 프로세싱되었는지를 결정하고, 이를 벡터의 길이(예컨대, 길이(2101))와 비교한다.
[0609]
도 24는 데이터 구조 설명자 디코딩 흐름(2400)으로서 데이터 구조 설명자를 디코딩하는 실시예의 선택된 세부사항들을 예시한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 메모리 데이터 구조 설명자 흐름(2400)은 패브릭 또는 메모리 벡터를 설명하는 각각의 DSR에 대해 수행되는 (도 23의) 액션들(2304, 2306, 2310, 및 2312)의 전부 또는 임의의 부분들의 개념 표현이다. 요약하면, 도 23은 초기화된 DSR들에 의해 특정된 하나 이상의 피연산자들을 포함하는 명령을 페칭 및 디코딩하는 것, 대응하는 DSD들을 획득 및 디코딩하기 위해 DSR들을 판독하는 것, DSD들에 따라 (바로 다음) 소스 데이터 엘리먼트들을 판독하는 것, 소스 데이터 엘리먼트들에 대해 동작을 수행하는 것, DSD들에 따른 동작의 출력 데이터 엘리먼트들을 기입하는 것, 및 완료할 때까지 (바로 다음) 소스 데이터 엘리먼트들을 판독하는 것으로 다시 반복하는 것을 예시한다. 도 24는, 명령의 메모리 벡터들의 데이터 엘리먼트들(예컨대, source0, source1 및 목적지 중 임의의 하나 이상)에 액세스하는 데 사용되는 메모리 액세스 패턴들을 결정하기 위해, 패브릭 벡터들(패브릭 벡터(2410)) 및 메모리 벡터들(메모리 벡터(2420))에 대해, DSR들로부터 획득된 DSD들을 디코딩하는 것뿐만 아니라, 임의적으로, 대응하는 XDSD들 및 스트라이드 값들을 획득 및 디코딩하기 위해 하나 이상의 XDSR들 및 스트라이드 레지스터들을 판독하는 것에 관한 추가 세부사항들을 예시한다. 개념상으로, 도 24에서 예시된 액션들은 도 23의 액션(2304)을 통해 획득된 각각의 DSD에 대해 수행된다. 일부 실시예들에서, 메모리 데이터 구조 설명자 흐름(2400)의 액션들은 CE(예컨대, CE(800))에 의해 수행된다.
[0610]
(예컨대, 도 23의 액션(2304)을 통해 획득된) DSD를 디코딩하는 것은, DSD가 예컨대 도 21a 또는 도 21b에 따른 패브릭 벡터에 대응하는지 여부(타입 = 패브릭?(2411))를 CE가 결정함으로써 시작한다(시작(2401)). 그렇다면, DSD에 의해 설명된 피연산자의 액세스들은 DSD를 사용하여 패브릭 벡터로서 진행하는데(DSD를 통해 액세스(2412)), 예컨대, 피연산자가 소스이면(도 21a), (도 23의) 액션(2310)은 DSD에 따른 패브릭으로부터 판독하고, 피연산자가 목적지이면(도 21b), (도 23의) 액션(2312)은 DSD에 따라 패브릭에 기입한다.
[0611]
DSD가 패브릭 벡터에 대응하지 않으면, DSD는 메모리 벡터에 대응한다. 이어서, CE는 DSD가 예컨대 도 21c에 따른 1D 메모리 벡터에 대응하는지 여부(타입 = XDSR?(2421))를 결정한다. 그렇다면, DSD에 의해 설명된 피연산자의 액세스들은 DSD를 사용하여 1D 메모리 벡터로서 진행한다(DSD를 통해 1D 액세스(2427)). 예컨대, 피연산자가 소스이면, 액션(2310)은 DSD에 의해 설명된 1D 메모리 벡터에 따른 메모리로부터 소스를 판독하고, 피연산자가 목적지이면, 액션(2312)은 DSD에 의해 설명된 1D 메모리 벡터에 따른 메모리에 기입한다. 도 23에서의 데이터 엘리먼트들의 각각의 반복(액션들(2310-2313))은 DSD에 의해 설명된 1D 메모리 벡터에 따른 피연산자 메모리 어드레스들을 전진시킨다.
[0612]
DSD가 1D 메모리 벡터에 대응하지 않으면, DSD는 (예컨대, 도 21d에 따른) 4D 메모리 벡터 또는 (예컨대, 도 21e에 따른) 원형 버퍼에 대응한다. CE는 XDSD를 획득하기 위해 DSD에 의해 특정된 XDSR을 판독한다(DSD(2422)를 통해 특정된 XDSR 판독, 또한 개념상으로 도 23의 (임의적) XDSR(들) 판독(2306)에 대응함). XDSR은 (도 21d의) 타입(2169) 또는 (도 21e의) 타입(2189)에 의해 특정된다.
[0613]
이어서, CE는 XDSD가 (예컨대 도 22b에 따른) 4D 메모리 벡터를 지정하는지 여부를 결정한다. 그렇다면, XDSD에 의해 임의적으로 특정된 바와 같이, CE는 하나 이상의 스트라이드 레지스터들을 임의적으로 판독한다((임의적으로) 스트라이드 레지스터(들) 판독(2424), 또한 개념상으로 도 23의 (선택적) XDSR(들) 판독(2306)에 대응함). DSD, XDSD 및 어떤 임의적 스트라이드 값들(스트라이드 레지스터들로부터 획득됨)에 의해 설명된 피연산자의 액세스들은 DSD, XDSD 및 임의적 스트라이드 값들을 사용하여 4D 메모리 벡터로 진행한다(XDSD를 통해 4D 액세스(2428)). 예컨대, 피연산자가 소스이면, 액션(2310)은 4D 메모리 벡터에 따른 메모리로부터 소스를 판독하고, 피연산자가 목적지이면, 액션(2312)은 4D 메모리 벡터에 따른 메모리에 기입한다. 도 23에서의 데이터 엘리먼트들의 각각의 반복(액션들(2310-2313))은 DSD에 의해 설명된 4D 메모리 벡터에 따른 피연산자 메모리 어드레스들을 전진시킨다.
[0614]
XDSD가 4D 메모리 벡터에 대응하지 않으면, XDSD는 (예컨대, 도 22a에 따른) 원형 버퍼에 대응한다. DSD 및 XDSD에 의해 설명된 피연산자의 액세스들은 DSD 및 XDSD를 사용하여 원형 버퍼로서 진행한다(XDSD를 통해 원형 버퍼 액세스(2429)). 예컨대, 피연산자가 소스이면, 액션(2310)은 원형 버퍼에 따른 메모리로부터 소스를 판독하고, 피연산자가 목적지이면, 액션(2312)은 원형 버퍼에 따른 메모리에 기입한다. 도 23에서의 데이터 엘리먼트들의 각각의 반복(액션들(2310-2313))은 DSD에 의해 설명된 원형 버퍼에 따른 피연산자 메모리 어드레스들을 전진시킨다.
[0615]
다양한 실시예들에서, D-Seq(844)는 (도 23의) 액션(2304)에서 판독된 DSD에 기반하여 타입 = 패브릭?(2411) 및/또는 타입 = XDSD?(2421)을 수행한다. 일부 실시예들에서, DSD의 타입 필드(예컨대, 도 21a의 타입(2109), 도 21b의 타입(2129), 도 21c의 타입(2149), 도 21d의 타입(2169), 및 도 21e의 타입(2189))는 데이터 구조가 패브릭 벡터(예컨대, 타입 = "0"), 1D 벡터(예컨대, 타입 = "1"), 및 XDSD 타입(예컨대, 타입 = "2-7") 중 하나인지를 결정한다. 다양한 실시예들(예컨대, 타입 = "2-7")에서, 타입 필드의 값은 액션(2422)을 위해 판독할 DSR들(846)의 XDSR을 지정한다. 일부 실시예들에서, D-Seq(844)는 액션(2422)을 수행하고, DSR들(846)로부터 XDSD를 수신한다. 일부 다른 실시예들에서, DSR들(846)은 액션들(2421 및 2422)을 수행하고, DSD 및 XDSD를 D-Seq(844)에 송신한다.
[0616]
또 다른 예로서, D-Seq(844)는 액션(2422)의 XDSD에 기반하여 타입 = 4D 벡터?(2423)를 수행한다. 일부 실시예들에서, XDSD의 타입 필드(예컨대, 도 22a의 타입(2211) 또는 도 22b의 타입(2241))는 데이터 구조가 4D 벡터(예컨대, XDSD 타입 = "0") 및 원형 버퍼(XDSD 타입 = "1") 중 하나인지를 결정한다.
[0617]
또 다른 예로서, D-Seq(844)는, 예컨대 본원 다른 곳에서 설명된 DSD의 베이스 어드레스(2142), WLI(2152), 길이(2141) 및 스트라이드(2153)를 사용하여 (예컨대, 액션(2304)의) DSD에 기반하여 메모리 어드레스(들)를 컴퓨팅함으로써, 액션(2427)에 따른 메모리 액세스(들)를 생성한다. 유사하게, D-Seq(844)는, 예컨대 본원 다른 곳에서 설명된 DSD 및 XDSD의 베이스 어드레스(2162), 길이(2161), WLI(2172), 스트라이드(2245), 스트라이드 선택 1(2244.1) 및 DF(2243)를 사용하여 (예컨대, 액션(2404)의) DSD 및 액션(2422)의 XDSD에 기반하여 메모리 어드레스(들)를 컴퓨팅함으로써, 액션(2428)에 따른 메모리 액세스(들)를 생성한다. 유사하게, D-Seq(844)는, 예컨대 본원 다른 곳에서 설명된 DSD 및 XDSD의 베이스 어드레스(2182), 길이(2181), WLI(2192), 시작 어드레스(2212) 및 종료 어드레스(2213)를 사용하여 (예컨대, 액션(2404)의) DSD 및 액션(2422)의 XDSD에 기반하여 메모리 어드레스(들)를 컴퓨팅함으로써, 액션(2429)에 따른 메모리 액세스(들)를 생성한다.
[0618]
일부 실시예들에서, D-Seq(844)는 각각의 컴퓨팅된 어드레스를 D-스토어(848) 및 메모리(854) 중 하나에 전송한다. 컴퓨팅된 어드레스를 수신하는 것에 대한 응답으로, D-스토어 및/또는 메모리는 컴퓨팅된 어드레스에 있는 2 바이트의 데이터에 액세스한다.
명령 포맷들
[0619]
"8"의 제1 디짓(digit)을 갖는, 도 25a-c의 설명에서의 각각의 엘리먼트 식별자는 도 8의 엘리먼트를 지칭하며, 간결함을 위해, 도 8의 엘리먼트인 것으로서 달리 구체적으로 식별되지 않는다.
[0620]
도 25a는 다중 피연산자 명령(2510)으로서 다중 피연산자 명령의 실시예의 선택된 세부사항들을 예시한다. 다중 피연산자 명령(2510)은 2개/3개 소스, 하나의 목적지 피연산자 명령(예컨대, 곱셉-덧셈, 이를테면 FMACH), 2 소스, 0개의 목적지 피연산자 명령(예컨대, 비교, 이를테면 LT16), 및 하나의 소스, 하나의 목적지 피연산자 명령(예컨대, 이동 명령, 이를테면 MOV16) 중 하나이다.
[0621]
다중 피연산자 명령(2510)은 다양한 필드들: 명령 타입(2511), 오피코드(2512), 피연산자 0 인코딩(2513), 피연산자 1 인코딩(2514) 및 종결(2515)을 포함한다. 피연산자 0 인코딩(2513)은 피연산자 0 타입(2513.1) 및 피연산자 0(2513.2)을 포함한다. 피연산자 1 인코딩(2514)은 피연산자 1 타입(2514.1) 및 피연산자 1(2514.2)을 포함한다. 일부 실시예들에서, 다중 피연산자 명령(2510)은 20 비트를 포함한다.
[0622]
일부 실시예들에서, 명령 타입(2511)의 값은 다음의 표에 따라 상이한 타입들의 명령들(예컨대, 2개/3개 소스, 하나의 목적지 및 하나의 소스, 그리고 하나의 목적지 명령 타입들) 사이를 구별한다. 다양한 실시예들에서, 오피코드(2512)의 값은 특정 동작(예컨대, 곱셈, 덧셈 또는 뺄셈)을 지정한다. 오피코드(2512)의 길이는 다음의 표에서 설명된 상이한 타입들의 명령들 사이에 변한다.
[0623]
일부 실시예들에서, 피연산자 0 인코딩(2513)은 다음의 표에 따라 소스 및/또는 목적지 피연산자를 설명한다. 일부 실시예들에서, 피연산자 1 인코딩(2714)은 소스 피연산자를 설명한다.
[0624]
일부 실시예들에서, 피연산자 0(2513.2) 및 피연산자 1(2514.2)은 개별 4-비트 필드를 포함한다. 일부 실시예들에서, 피연산자 0 타입(2513.1) 및 피연산자 1 타입(2514.1)은 개별 2-비트 필드를 포함하고, 피연산자 0(2513.2) 및 피연산자 1(2514.2)을 해석하는 방법을 각각 결정한다. 2개/3개 소스 피연산자, 하나의 목적지 피연산자 명령의 경우, 피연산자 0 타입(2513.1)은 다음의 표에 따라 해석된다.
[0625]
예컨대, 피연산자 0 타입(2513.1)의 값이 "1"이고 피연산자 0(2513.2)의 값이 "4"이면, 피연산자 0 인코딩(2513)은, source0 피연산자가 S0DSR[4]에 의해 설명된 벡터이고 목적지 피연산자가 DDSR[4]에 의해 설명된 벡터임을 지정한다.
[0626]
2 소스 피연산자, 0개의 목적지 피연산자 명령의 경우, 피연산자 0 타입(2513.1)은 다음의 표에 따라 해석된다.
[0627]
예컨대, 피연산자 0 타입(2513.1)의 값이 "0"이고 피연산자 0(2513.2)의 값이 "4"이면, 피연산자 0 인코딩(2513)은, source0 피연산자가 S0DSR[4]에 의해 설명된 벡터임을 지정한다.
[0628]
하나의 소스 피연산자, 하나의 목적지 피연산자 명령의 경우, 피연산자 0 타입(2513.1)은 다음의 표에 따라 해석된다.
[0629]
예컨대, 피연산자 0 타입(2513.1)의 값이 "0"이고 피연산자 0(2513.2)의 값이 "4"이면, 피연산자 0 인코딩(2513)은, 목적지 피연산자가 DDSR[4]에 의해 설명된 벡터임을 지정한다.
[0630]
다중 피연산자 명령(2510)에 대해, 피연산자 1 타입(2514.1)은 다음의 표에 따라 해석된다.
[0631]
예컨대, 피연산자 0 타입(2513.1)의 값이 "0"이고, 피연산자 0(2513.2)의 값이 "4"인 경우, 피연산자 0 인코딩(2513)은 목적지 피연산자가 DDSR[4]에 의해 설명된 벡터임을 지정한다.
[0632]
다양한 실시예들에서, 즉각적 source1 피연산자는 여러 개의 미리 결정된 값들(예컨대, 0, 1 및 -1) 및 LFSR에 의해 생성된 의사 난수 중 하나를 지정한다. 예컨대, 피연산자 1 타입(2514.1)의 값이 "3"이고, 피연산자 1(2514.2)의 값이 "8"인 경우, 피연산자 1 인코딩(2514)은 LFSR에 의해 생성된 PRNG를 지정한다.
[0633]
일부 실시예들에서, 종결(2515)은 명령이 태스크에서 최종 명령임을 지정하는 1-비트 필드를 포함한다. 명령이 실행을 끝낼 때, 태스크는 종결되어, (예컨대, 종결(812) 및 피커(830)를 통해) 새로운 태스크의 선택 및 실행을 가능하게 한다.
[0634]
도 25b는 1개의 소스, 0개의 목적지 명령(2520)으로서 1개의 소스, 0개의 목적지 피연산자 명령의 실시예의 선택된 세부사항들을 예시한다. 1개의 소스, 0개의 목적지 명령(2520)은 명령 타입(2521), 오피코드(2522), 피연산자 1 인코딩(2523), 즉각적 하이(2524), 및 종결(2525)을 포함한다. 피연산자 1 인코딩(2523)은 소스 피연산자를 설명하고, 피연산자 1 타입(2523.1) 및 피연산자 1(2523.2)을 포함한다. 일부 실시예들에서, 1개의 소스, 0개의 목적지 명령(2520)은 20비트를 포함한다.
[0635]
일부 실시예들에서, 명령 타입(2521)은 명령이 1개의 소스, 0개의 목저지 피연산자 명령임을 지정하는 4개의 비트들 "1111"을 포함하며, 오피코드(2522)는 특정 동작(예컨대, 차단, 비차단, 활성화, 활성 PRNG 설정, 데이터 필터, 조건부 분기, 및 점프)을 지정하는 4-비트 필드를 포함한다.
[0636]
일부 실시예들에서, 즉각적 하이(2524)는 4-비트 필드를 포함한다. 일부 시나리오들에서, 피연산자 1(2523.2)과 연접된 즉각적 하이(2524)는 8-비트 즉각적을 형성한다.
[0637]
일부 실시예들에서, 피연산자 1 타입(2523.1)은 피연산자 1(2523.2)이 어떻게 해석될지 결정하는 2-비트 필드를 포함한다. 피연산자 1 타입(2523.1)이 "0"인 경우, 피연산자 1 인코딩(2523)은 벡터(예컨대, Qs 897로부터의 데이터 엘리먼트들의 패브릭 벡터, 또는 메모리(854) 및 D- 스토어(854) 중 하나 내의 데이터 엘리먼트들의 메모리 벡터)를 지정하고, 피연산자 1(2523.2)의 값은 DSR들(846)의 12개의 S1DSR들 중 어느 것이 벡터를 설명하는지를 식별한다. 피연산자 1 타입(2523.1)이 "1"인 경우, 피연산자 1 인코딩(2523)은 피연산자 1(2523.2)과 즉각적 하이(2524)의 연접에 의해 형성된 8-비트 어드레스에서 메모리(예컨대, 메모리(854) 및 D-스토어(848) 중 하나) 내의 값을 설명한다. 피연산자 1 타입(2523.1)이 "2"인 경우, 피연산자 1 인코딩(2523)은 피연산자 1(2523.2)의 값에 의해 식별된 레지스터(예컨대, RF(842) 중 하나) 내의 값을 설명한다. 피연산자 1 타입(2523.1)이 "3"인 경우, 피연산자 1 인코딩(2523)은 즉각적을 설명한다. 오피코드(2522)가 16-비트 정수 피연산자들 상에서 동작하는 동작(예컨대, 차단, 비차단, 또는 활성화)을 지정하는 경우, 즉각적은 8개의 비트들을 포함하고, 즉각적 하이(2524)와 피연산자 1(2523.2)의 연접이다.
[0638]
일부 실시예들에서, 종결(2525)은 명령이 태스크에서 최종 명령임을 지정하는 1-비트 필드를 포함한다. 명령이 실행을 끝낼 때, 태스크는 종결되어, (예컨대, 종결(812) 및 피커(830)를 통해) 새로운 태스크의 선택 및 실행을 가능하게 한다. 1개의 소스, 0개의 목적지 명령(2520)이 조건부 분기인 경우, 태스크는 조건부 분기가 행해지지 않는 경우에만 종결된다.
[0639]
도 25c는 즉각적 명령(2530)으로서 즉각적 명령의 실시예의 선택된 세부사항들을 예시한다. 즉각적 명령(2530)은 명령 타입(2531), 오피코드(2532), 피연산자 0(2533.2), 및 즉각적(2534)을 포함한다. 일부 실시예들에서, 즉각적 로우(2534.1)는 9-비트 필드를 포함하고, 즉각적 하이(2534.2)는 1-비트 필드를 포함한다. 즉각적 로우(2534.1)와 즉각적 하이(2534.2)의 연접은 집합적으로 즉각적(2534)으로 지칭된다(그리고 즉각적(2534)으로 예시됨). 일부 실시예들에서, 즉각적 명령(2520)은 20개의 비트들을 포함한다.
[0640]
일부 실시예들에서, 명령 타입(2531)은 명령이 즉각적 명령임을 지정하는 1-비트 필드 "0"을 포함하고, 오피코드(2532)는 특정 동작(예컨대, 로드 source0 DSR, 로드 source1 DSR, 로드 목적지 DSR, 스토어 source0 DSR, 스토어 source1 DSR, 및 스토어 목적지 DSR)을 지정하는 5-비트 필드를 포함한다. 일부 시나리오들에서, 즉각적 명령(2530)(예컨대, 로드 DSR 명령, 및 로드 XDSR 명령)의 실행은 메모리(854)와 D-스토어(848) 중 하나로부터 DSR들(846) 중 DSR로 데이터를 로딩한다. 다른 시나리오들에서, 즉각적 명령(2530)(예컨대, 스토어 DSR 명령, 및 스토어 XDSR 명령)의 실행은 DSR들(846) 중 DSR로부터 메모리(854)와 D-스토어(848) 중 하나에 데이터를 저장한다.
[0641]
일부 실시예들에서, 피연산자 0(2533.2)은 4-비트 필드를 포함하고, 오피코드(2532)는 피연산자 0(2533.2)이 어떻게 해석될지를 결정한다. 일부 시나리오들에서(예컨대, 피연산자 0(2533.2)이 레지스터 피연산자, 이를테면 점프 동작 없이 동작을 지정하는 경우), 즉각적 로우(2534.1), 피연산자 0(2533.2), 및 즉각적 하이(2534.2)는 14-비트 즉각적을 형성하기 위해 연접된다. 일부 다른 시나리오들에서, 즉각적(2534)은 16-비트 즉각적을 형성하기 위해 사인 연장된다. 또 다른 시나리오들에서, 즉각적(2534)은 15-비트 어드레스를 형성하기 위해 사인 연장된다. 또 다른 시나리오들에서, 즉각적(2534)은 하나의 비트만큼 좌측으로 시프트되고, 그리고 15-비트 어드레스(예컨대, 32-비트 데이터의 경우)를 형성하기 위해 사인 연장된다.
심층 학습 가속기의 예시적인 사용들
[0642]
본원 다른 곳에서 설명된 바와 같은, 다양한 실시예들 및/또는 사용 시나리오들에서, 심층 학습 가속기, 이를테면 PE들의 패브릭(예컨대, 웨이퍼-스케일 통합을 통해 구현되고 예컨대 도 4에 예시된 바와 같음)은 뉴럴 네트워크를 트레이닝하고 그리고/또는 트레이닝된 뉴럴 네트워크에 대하여 추론들을 수행하기 위해 사용가능하다. 일부 상황들에서, 트레이닝은 트레이닝 자극들에 대한 응답으로 뉴럴 네트워크의 가중치들을 결정하는 것을 포함한다. 다양한 기법들은, 트레이닝, 이를테면, SGD(Stochastic Gradient Descent), MBGD(Mini-Batch Gradient Descent), CPGD(Continuous Propagation Gradient Descent), 및 RCP(Reverse CheckPoint)에 대해 사용가능하다. 다음으로, CPGD는 다른 기법들과 대조되고, 이어서, SGD, MBGD, CPGD 및 RCP 각각이 더 상세히 설명된다.
[0643]
과거 딥 뉴럴 네트워크 트레이닝 접근법들(예컨대, SGD 및 MBGD)은 소위 앵커링된-델타 학습을 사용하였다. 즉, 델타 유도 가중치 업데이트들은, 트레이닝 세트 배치 또는 미니-배치에 대한 모든 활성화들의 프로세싱이 완료될 대까지, '앵커링'되거나 또는 고정된 상태로 유지되었다. 일부 상황들에서, 앵커링된-델타 학습의 레이어-순차적 성질은 고-레이턴시 순차적 파라미터 업데이트들(예컨대, 가중치 업데이트들을 포함함)을 초래하였고, 이는 결국 느린 컨버전스를 초래하였다. 일부 상황들에서, 앵커링된-델타 학습은 제한된 레이어-병렬화, 그리고 그에 따른 제한된 동시성을 갖는다.
[0644]
대조적으로, 일부 상황들에서, 본원에서 교시되는 바와 같은, 딥 뉴럴 네트워크 트레이닝에 대한 연속적 전파(일명 즉각적-델타) 학습 규칙의 사용은, 레이어-병렬화를 가능하게 함으로써, 더 빠른 컨버전스를 제공하고, 파라미터 업데이트들의 레이턴시를 감소시키고, 동시성을 증가시킨다. 즉각적 네트워크 파라미터들로부터 컴퓨팅된 델타들은 현재 파라미터 기울기에 대응하는 업데이트된 정보를 사용한다. 연속적 전파는, 각각의 레이어가, 명시적 동기화 없이, 다른 레이어들과 동시적으로 학습하는 것을 가능하게 함으로써, 레이어 병렬화를 가능하게 한다. 결과적으로, 네트워크의 깊이를 따르는 병렬화는 트레이닝에 더 많은 컴퓨팅 자원들이 적용되는 것을 가능하게 한다. 일부 사용 시나리오들에서, 연속적 전파에서 이용가능한 병렬화는, MBGD 기법들과 비교할 때, 최대 10x 벽시계 시간 개선을 실현한다. 연속적 전파 접근법은 또한, 활성화들의 다수의 벡터들에 대한 모델 파라미터 값들을 저장하기 위해 여분의 메모리를 사용하는 것을 방지하는 것을 가능하게 한다.
[0645]
일부 실시예들 및/또는 사용 시나리오들에서, 뉴럴 네트워크는 SGD를 수행하기 위한 자극들의 연속적 전파를 사용하여 트레이닝된다. CPGD를 통한 트레이닝의 일부 실시예들에서, RCP는 선택된 활성화들을 재컴퓨팅함으로써, 메모리에 유지된 활성화들의 수를 감소시키는 것(따라서, 메모리 풋프린트를 감소시키는 것)을 가능하게 한다. 일부 시나리오들에서, 활성화들을 재컴퓨팅하는 것은 또한, 가중치들에 대한 트레이닝 추정들의 정확도를 개선한다. RCP를 갖지 않는 트레이닝에서, 뉴런들의 모든 각각의 레이어는 하나 이상의 포워드 패스들 동안 활성화들을 수신하고, 그리고 포워드 패스들과 연관된 하나 이상의 백워드 패스들(예컨대, 포워드 패스들과 연관된 하나 이상의 델타, 체인, 및 가중치 업데이트 패스들) 동안 수행되는 컴퓨테이션들에 대해 재사용하기 위해 활성화들을 저장한다. 일부 시나리오들(예컨대, 상대적 딥 뉴럴 네트워크들)에서, 활성화들의 저장과 연관된 백워드 패스 사이의 시간은 상대적으로 길고, 그리고 모든 활성화들을 저장하는 것은 모든 활성화들보다 더 적은 활성화들을 저장하는 것보다 상대적으로 더 많은 메모리를 사용한다.
[0646]
예컨대, 뉴런들의 레이어들의 일부(예컨대, 각각의 모든 짝수 레이어)만이 개별 활성화들을 저장하고, 다른 레이어들(예컨대, 각각의 모든 홀수 레이어)은 개별 활성화들을 폐기한다. 저장된 활성화들을 갖는 레이어들(예컨대, 각각의 모든 짝수 레이어)은 가장 최근 가중치들을 사용하여, 재컴퓨팅하고, 재컴퓨팅된 활성화들을, 활성화들을 폐기한 레이어들(예컨대, 각각의 모든 홀수 레이어)에 송신한다. 일부 시나리오들에서, 재컴퓨팅된 활성화들은 폐기된 활성화들과 상이한데, 이는 가장 최근 가중치들이 포워드 패스 동안 이용가능했던 가중치들(예컨대, 포워드 패스와 연관된 백워드 패스 사이에 발생된 하나 이상의 가중치 업데이트들)과 상이하기 때문이다. 다양한 실시예들에서, 활성화들을 저장 및 폐기하는 레이어들의 수 및 타입은 감소된 메모리 사용과 증가된 컴퓨테이션의 원하는 밸런스에 대해 최적화하도록 선택된다. 하나의 예로서, 각각의 모든 4번째 레이어는 활성화들을 저장하고, 모든 다른 레이어들은 활성화들을 폐기한다. 다른 예로서, 콘볼루션 레이어들이 활성화들을 저장하도록 선택되고, 다른 레이어들은 활성화들을 폐기하도록 선택된다.
[0647]
다양한 실시예들 및/또는 사용 시나리오들에서, RCP를 갖거나 또는 갖지 않는, SGD, MBGD, 및 CPGD 중 임의의 하나 이상은, 프로세싱 엘리먼트들의 패브릭(예컨대, 도 4에 예시된 바와 같음), 하나 이상의 GPU들, 하나 이상의 CPU들, 하나 이상의 DSP들, 하나 이상의 FPGA들, 및 하나 이상의 ASIC들 중 하나 이상을 통해 구현된다.
[0648]
예컨대 역-전파를 갖는 SGD는 뉴럴 네트워크를 트레이닝하기 위해 (본원 다른 곳에서 설명된 바와 같이) 사용가능하다. 그러나, 구배 하강을 통한 학습은 본질적으로 순차적인데, 이는 각각의 가중치 업데이트가, 뉴럴 네트워크를 통하는 풀 포워드 패스의 완료 후에 행해진 구배 측정으로부터의 정보를 사용하기 때문이다. 추가로, 가중치 업데이트들은 (포워드 패스에 후속하고 대응하는) 뉴럴 네트워크를 통하는 대응하는 백워드 패스 동안 이루어지고, 그에 따라, 최종 가중치 업데이트는 전체 대응하는 백워드 패스의 완료 후에 발생된다.
[0649]
MBGD는 미니-배치에 대해 구배 평균하여 여러(‘미니-배치’의) 활성화들을 병렬로 프로세싱함으로써 SGD보다 더 많은 병렬화를 가능하게 한다. 그러나, 순차적 업데이트들의 속도는 SGD와 비교하여 변화되지 않고, 가중치 업데이트들은, SGD에서와 같이, 뉴럴 네트워크를 통하는 모든 대응하는 백워드 패스들의 완료 후에 완료된다. 병렬로 더 많은 활성화들을 프로세싱함으로써 미니-배치 사이즈가 증가됨에 따라, 구배 노이즈가 감소된다. 일부 시나리오들에서, 일정 포인트를 넘으면, 구배 노이즈의 감소는 불량한 일반화를 초래한다.
[0650]
CPGD는 뉴럴 네트워크의 모든 레이어들에서의 가중치들의 병렬 프로세싱 및 업데이팅을 가능하게 하는 한편, 활성화들은 스트림으로 레이어들을 통해 전파한다. 따라서, 일부 실시예들 및/또는 사용 시나리오들에서, CPGD는 SGD 및 MBGD의 순차적 프로세싱 제한들을 극복한다.
[0651]
RCP는 활성화들의 (재)컴퓨팅을 통해 감소된 메모리 사용을 가능하게 하고(그렇지 않으면, 활성화들은 저장될 것임), SGD, MBGD, 및 CPGD와 조합하여 사용가능하다.
[0652]
파이프라인 흐름도들은 다양한 SGD, MBGD, CPGD 및 CPGD를 RCP 기법들과 비교 및 대조하는 데 사용가능하다. 트레이닝 기법들에서의 동시성 및 정보 흐름들이 파이프라인 흐름도들로 가시적이게 된다. 도 26a-d는 좌측으로부터 우측으로의 뉴럴 네트워크 흐름의 레이어들에 대한 파이프라인 흐름들의 실시예들을 예시하며, 예컨대, 활성화들은 좌측으로부터 진입하고, 레이어 컴퓨테이션들의 포워드 패스 전파는 우측으로 흐른다. 우측으로부터 좌측으로의 가중치 업데이트들을 포함하는 레이어 컴퓨테이션들의 백워드 패스 전파를 시작하기 위해, 최우측 레이어에서 구배 컴퓨테이션이 수행된다. 시간은 상단으로부터 하단으로 진행된다.
[0653]
도 26a는 SGD에 대한 파이프라인 흐름의 실시예를 예시한다. 뉴럴 네트워크의 레이어들의 가중치 업데이트들은, 뉴럴 네트워크의 모든 레이어들을 통한, 대응하는 풀 포워드 패스 및 대응하는 풀 백워드 패스의 완료 후에 완료된다. 바로 다음 포워드 패스는 직전의 포워드 패스와 대응하는 가중치 업데이트들의 완료 후에만 시작된다. 예시된 바와 같이, 제1 포워드 패스(2611)가 (도면에서 좌측으로부터 우측으로 예시된 바와 같이 제1 레이어로부터 최종 레이어로) 수행된다. 이어서, 제1 백워드 패스(2621)가 (도면에서 우측으로부터 좌측으로 예시된 바와 같이 최종 레이어로부터 제1 레이어로) 수행된다. 제1 백워드 패스(2621) 동안, 가중치들은 최종 레이어로부터 제1 레이어까지 업데이트된다. 제1 백워드 패스(2621)가 완료될 때, (제1 레이어의) 최종 가중치 업데이트가 완료된다. 이어서, 제2 포워드 패스(2612)가 (제1 백워드 패스(2621) 동안 업데이트된 가중치들을 사용하여) 수행되고, 그 이후에, 제2 백워드 패스(2622)가 수행되고, 그 제2 백워드 패스(2622) 동안 가중치 업데이트들이 수행된다.
[0654]
도 26b는 MBGD에 대한 파이프라인 흐름의 실시예를 예시한다. 복수의 활성화들이 동일한 가중치들로 프로세싱된다. 조정된 콰이어트 시간(quiet time)들이 가중치 업데이트들을 동기화하기 위해 사용된다. 일부 실시예들 및/또는 사용 시나리오들에서, MBGD 프로세싱은 미니-배치 사이즈(N)(2631), 오버헤드(2632), 및 업데이트 간격(U)(2633)에 의해 특성화된다.
[0655]
네트워크를 통해 풀 포워드 패스 및 풀 백워드 패스를 사용하여 구배 추정을 컴퓨팅하고 그에 따라 순차적 의존성을 초래하는 구배-하강 기법들(예컨대, SGD 및 MBGD)과 달리, CPGD는 차등 구성을 사용하여 순차적 의존성을 구배 생성이 지속되는 연속 모델로 대체한다. 일부 실시예들 및/또는 사용 시나리오들에서, CPGD는, 명시적 동기화 없이, 뉴럴 네트워크의 각각의 레이어가 레이어들 중 다른 레이어들과 동시적으로 트레이닝되는 것(예컨대, ‘학습’하는 것)을 가능하게 함으로써, 레이어 병렬화를 가능하게 한다. 따라서, 뉴럴 네트워크의 깊이를 따르는 병렬화는 트레이닝에 더 많은 컴퓨팅 자원들을 적용하는 것을 가능하게 한다. 다양한 실시예들 및/또는 사용 시나리오들에서, CPGD는 다른 기법들과 비교하여 트레이닝의 에포크들에서 표현되는 개선된 수렴 레이트 및 유사한 정확도를 제공한다.
[0656]
도 26c는 CPGD에 대한 파이프라인 흐름의 실시예를 예시한다. CPGD 프로세싱은 플럭스로 모델을 유지한다. 은닉된 표현들 및 델타들은 모든 각각의 시간 스텝에서 모든 각각의 레이어에 진입하고, 가중치들은 모든 각각의 스텝에서 업데이트된다. CPGD 프로세싱은 조정된 동기 동작이다. 일부 실시예들 및/또는 사용 시나리오에서, CPGD 프로세싱은 포워드 패스(2651) 및 대응하는 백워드 패스(2661)에 의해 특성화되며, 이들은 각각 다수의 포워드 패스들 중 하나 및 다수의 대응하는 백워드 패스들 중 하나를 표현한다. 동작 시에, 복수의 포워드 패스들의 각각의 포워드 패스들은 서로 병렬로 동작하고, 복수의 백워드 패스들의 각각의 백워드 패스들은 서로 병렬로 동작하며, 복수의 포워드 패스들 및 복수의 백워드 패스들은 서로 병렬로 동작한다. (백워드 패스들 동안 행해지는) 가중치 업데이트들은, 가중치 업데이트들이 이용가능하게 되자마자, 포워드 패스들 및 백워드 패스들에 의해 사용된다.
[0657]
특정 예로서, 포워드 패스(2665)가 시작되고, 추후에, 포워드 패스(2666)가 시작된다. 포워드 패스(2665) 중 적어도 일부는 포워드 패스(2666) 중 적어도 일부와 병렬로 동작한다. 포워드 패스(2665)에 대한 대응하는 백워드 패스 중 적어도 일부는 포워드 패스(2666) 중 적어도 일부와 병렬로 동작한다. 추가로, 대응하는 백워드 패스는, 예시적인 가중치 업데이트 사용(2667)에 의해 도시된 바와 같이, 포워드 패스(2666)에 의해 사용되는 적어도 일부의 가중치 업데이트들을 완료한다.
[0658]
도 26d는 RCP를 갖는 CPGD에 대한 파이프라인 흐름의 실시예를 예시한다. RCP를 갖는 CPGD는 선택된 활성화들을 저장하는 것을 생략하고, 대신에, 선택된 활성화들을 재컴퓨팅한다. 일부 실시예들 및/또는 사용 시나리오들에서, 재컴퓨팅은 업데이트된 가중치들로 수행된다. 따라서, 역 체크 포인트는 감소된 메모리(시간 상 순방향으로 저장된 은닉된 표현들을 통과하는 수직 라인들에 의해 커버되는 감소된 영역으로서 예시됨)를 가능하게 하고, 계산된 은닉된 표현들과 대응하는 델타들 간의 시간 불일치를 감소시킨다.
[0659]
특정 예로서, RCP 프로세싱을 갖는 CPGD는 포워드 패스(2671) 및 대응하는 백워드 패스(2681)에 의해 특성화된다. 활성화 스토리지(2685)에 의해 예시된 바와 같이, 제1 활성화는 포워드 패스 동안 컴퓨팅되고, 대응하는 백워드 패스에서 사용하기 위해 레이어에 저장된다. 활성화 스토리지(2685)는 포워드 패스 및 백워드 패스의 부분들 동안 점유되고, 다른 사용들을 위해 이용가능하지 않다. 메모리 감소의 특정 예는 재컴퓨팅된 활성화 스토리지(2686)에 의해 예시된다. 제2 활성화는 포워드 패스 동안 컴퓨팅되지만, 폐기되고, 어떠한 스토리지도 요구하지 않는다. 재컴퓨팅된 활성화 스토리지(2686)에 의해 예시된 바와 같이, 백워드 패스 동안, 제2 활성화는 재컴퓨팅되고, 백워드 패스에서 사용하기 위해 레이어에 저장된다. 재컴퓨팅된 활성화 스토리지(2686)는 전체 포워드 패스 전반에 걸쳐 점유되지 않고, 다른 사용들(예컨대, 다른 포워드 패스들, 다른 백워드 패스들)을 위해 이용가능하며, 그에 의해, 요구되는 메모리를 감소시킨다.
[0660]
병렬화를 더 일반적으로 고려하면, 일부 실시예들 및/또는 사용 시나리오들에서, 컴퓨테이션(예컨대, 뉴럴 네트워크 트레이닝)을 병렬화하는 것은 동시에 동작하는 별개의 컴퓨테이션 유닛들에 걸쳐 컴퓨테이션을 분산시킨다. 모델-병렬 체제에서, 별개의 유닛들은 별개의 모델 파라미터들을 사용하여, 동일한 뉴럴 네트워크를 동시에 평가한다. 데이터-병렬 체제에서, 별개의 작업자들은 동일한 포멀 모델 파라미터들을 사용하여 별개의 네트워크 입력들을 동시에 평가한다. 일부 스케일링 기법들은 레이어들에 걸친 그리고 클러스터에서의 유닛들 사이에 세분화된 데이터 병렬화(fine-grained data parallelism)를 사용한다.
[0661]
일부 실시예들 및/또는 사용 시나리오들에서, MBGD는 미니-배치 사이즈(n)의 함수로써 구배 추정의 정확도를 개선한다. 그러나, 미니-배치 사이즈(n)에 대해 MBGD를 수행하기위한 컴퓨테이션은 n 스텝들 동안 SGD를 수행하기 위한 컴퓨테이션과 대략 동일하다. 일부 상황들에서, n 스텝들에 대한 SGD는 미니-배치 사이즈(n)에 대한 MBGD보다 대략 n의 제곱근만큼 더 효율적이다. 따라서, (예컨대, MBGD에서와 같은) 더 높은 병렬화 및 (예컨대, SGD에서와 같은) 더 높은 효율성은 때로 상호 배타적이다.
[0662]
일부 실시예들 및/또는 사용 시나리오들에서, 딥 뉴럴 네트워크는, 때로 방향성 비순환 그래프(directed acyclic graph)로서 표현되는 고-차원 파라미터화 함수이다. 백 전파 기법들은 때로 순환 그래프(cyclic graph)로 표현된다. 그래프의 사이클은 피드백 반복이다. 제1 풀 네트워크 평가에 의해 산출된 구배들은 바로 다음 반복에서 사용되는 가중치들을 변화시키는데, 이는 반복이 연속 차등 시스템의 이산 근사치이기 때문이다. 이산 근사치는 시변 통계와 함께 비편향 연속-노이즈 프로세스를 포함한다. 노이즈 프로세스는 연속 시스템이 이산-시간 학습 시스템들에서 관찰되는 현상들을 모델링하는 것을 가능하게 하기 위해 정규화를 제공한다. 이산의 경우에, 정규화는 샘플링 프로시저(예컨대, SGD), 학습 레이트에 의해, 그리고/또는 다른 명시적 메커니즘들에 의해 제공된다. 시간-의존 노이즈 프로세스는 파라미터 공간에서 로컬 고-주파수 윤곽들을 제거하는 학습-레이트 스케줄을 사용하는 것을 가능하게 한다. 올바른 구역에 접근됨에 따라, 정규화가 감소되어, 일부 상황들에서는 더 양호한 최종 솔루션이 될 수 있다.
[0663]
CPGD는, 임의의 피드-포워드 뉴럴 네트워크의 개념적 프레임워크에서, 모든 노드들을 시간의 함수들로서 표현하고, 기능적 구성을 적용하여 내부 상태 및 내부 상태가 겪는 자극들에 관한 표현들을 공식화한다. 독립적인 로컬 다이내믹스를 갖는 시스템들로서 개개의 레이어들을 이용하여 인수분해의 결과가 나온다. 2개의 디멘션들은 네트워크의 깊이 및 파라미터들의 시간 변화이다. 공간에서 분리된 컴퓨테이셔널 유닛들에 네트워크 레이어들을 맵핑함으로써 가속을 구현하는 일부 실시예들 및/또는 사용 시나리오들에서, 네트워크 레이어들 사이에 레이턴시 통신이 존재한다. 따라서, 레이어들 사이에 시간 지연 통신이 존재한다. CPGD의 일부 구현들은 시간 지연들을 고려하는 동기식 구현들이다.
[0664]
CPGD 프로세싱 동안, 활성화 벡터 및 연관된 은닉된 표현들은 활성화 벡터의 포워드 패스 동안 상이한 시간 스텝들에서 모델 파라미터들과 결합된다. 상이한 시간 스텝들에서의 모델 파라미터와 동일한 시간 스텝들에서의 모델 파라미터 간의 차이는 포워드로 이동하는 활성화 벡터에 의해 검출가능하지 않다. 개념상으로, 이는 마치, 집합 파라미터 상태를 형성하기 위해 연속적인 시간 스텝들로부터의 파라미터들의 고정된 세트가 사용된 것과 같으며, 그 집합 파라미터 상태는 학습을 위해 추후에 사용된다.
[0665]
백워드 패스(예컨대, 델타 전파) 동안, 업데이트 이후의 즉각적 파라미터들(예컨대, 가중치들)을 사용할지, 또는 대응하는 포워드 패스가 수행되었을 때 앵커링된 이력 파라미터들을 검색할지에 대한 선정이 존재한다. 즉각적 파라미터들로부터 컴퓨팅된 델타들은 현재 파라미터 기울기에 대응하는 업데이트된 정보를 사용한다. 일부 실시예들 및/또는 사용 시나리오들은 즉각적 파라미터들을 사용한다. 일부 실시예들 및/또는 사용 시나리오들은 이력 파라미터들을 사용한다.
[0666]
CPGD의 일부 구현들은 SGD와 유사한 순서로 메모리를 사용한다. 역 체크포인트(본원 다른 곳에서 설명됨)가, 이를테면 메모리 사용을 감소시키기 위해, CPGD와 함께 사용가능하다. 역 체크포인트의 일부 실시예들 및/또는 사용 시나리오들은 활성화들을 재컴퓨팅하기 위해 즉각적 파라미터들(예컨대, 가중치들)을 사용한다. 역 체크포인트의 일부 실시예들 및/또는 사용 시나리오들은 활상화들을 재컴퓨팅하기 위해 이력 파라미터들을 사용한다. 활성화들을 재컴퓨팅하기 위해 즉각적 파라미터들을 사용하는 일부 실시예들 및/또는 사용 시나리오들에서, 포워드 전파 활성화들 및 백워드 전파 델타들을 컴퓨팅하는 데 사용되는 파라미터들 간의 시간 불일치가 정렬 파면들에서 감소된다.
[0667]
연속적 전파 기법들이 미니-배치 스타일 프로세싱(예컨대, MBGD)과 함께 사용가능하다. 일부 실시예들 및/또는 사용 시나리오들에서, 개념상으로 비동기식 SGD와 유사하게, 직전의 배치가 완료되기 전에, 후속 배치가 시작된다. 파이프라인 내의 파라미터 불일치는 하나 이하의 배치 경계로 제한된다.
[0668]
일부 실시예들 및/또는 사용 시나리오들에서, 데이터가 뉴럴 네트워크를 통해 스트리밍할 수 있게 하고 글로벌 동기화 경계 없이 컴퓨테이션들을 수행할 수 있게 하는 것은, 다른 방식으로는 추출되지 않는 학습 정보를 추출하는 것을 가능하게 한다. 일부 실시예들 및/또는 사용 시나리오들에서, 더 큰 배치 사이즈들을 사용하면 더 낮은 학습 레이트가 두드러진다. 일부 실시예들 및/또는 사용 시나리오들에서, 은닉된 활동 및/또는 델타 아크들은 개개의 벡터들 또는 대안적으로는 배치 행렬들로서 개념상으로 해석된다. 배치 행렬들 해석은 본원에서 설명된 바와 같은 기법들을 GPU들, CPU들, DSP들, FPGA들, 및/또는 ASIC들 상에 직접적으로 구현하는 것을 가능하게 한다.
[0669]
도 27a-27e는 SGD, MBGD, CPGD, 및 RCP 프로세싱에 따른, 포워드 패스 및 백워드 패스 실시예들의 다양한 양상들을 예시한다. 도면들에서, 예컨대 딥 뉴럴 네트워크의 부분의 각각의 레이어들을 표현하는 뉴런들의 2개의 레이어들이 예시된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 딥 뉴럴 네트워크는 레이어당 수천 개 이상의 레이어들 및 수천 개 이상의 뉴런들을 포함한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 제1 레이어는 딥 뉴럴 네트워크 외부의 에이전트로부터 트레이닝을 위한 활성화들을 수신하는 입력 레이어이다. 다양한 실시예들 및/또는 사용 시나리오들에서, 제2 레이어는, 포워드 패스가 완료되고 백워드 패스가 시작되는 출력 레이어이다. 다양한 실시예들 및/또는 사용 시나리오들에서, 제1 레이어 및 제2 레이어는 내부 레이어들이다.
[0670]
도 27a 및 도 27b는 각각, RCP를 갖지 않는, SGD, MBGD, 및 CPGD에 따른, 포워드 패스 및 백워드 패스 실시예들을 예시한다. 2개의 레이어들은 이전 레이어(2701) 및 후속 레이어(2702)로서 예시된다. 이전 레이어(2701)는 컴퓨트(2710) 및 스토리지(2715)를 포함한다. 후속 레이어(2702)는 컴퓨트(2720) 및 스토리지(2725)를 포함한다. 컴퓨트(2710) 및 컴퓨트(2720)는 컴퓨트 자원들의 예들이며, 스토리지(2715) 및 스토리지(2725)는 스토리지 자원들의 예들이다.
[0671]
도 27c-27e는 RCP를 갖는, SGD, MBGD, 및 CPGD에 따른, 포워드 패스 및 백워드 패스 실시예들을 예시한다. 2개의 레이어들은 이전 레이어(2703) 및 후속 레이어(2704)로서 예시된다. 이전 레이어(2703)는 컴퓨트(2730) 및 스토리지(2735)를 포함한다. 후속 레이어(2704)는 컴퓨트(2740) 및 스토리지(2745)를 포함한다. 컴퓨트(2730) 및 컴퓨트(2740)는 컴퓨트 자원들의 예들이며, 스토리지(2735) 및 스토리지(2745)는 스토리지 자원들의 예들이다.
[0672]
컴퓨트 자원들이 상이한 입력들에 따라 상이한 결과들을 산출하고, 스토리지 자원들이 저장되는 상이한 값들에 따라 상이한 값들을 저장하고 후속하여 제공하지만, 도 27a-27e에서의 유사한 번호의 엘리먼트들은 동일한 구조 및 동작을 갖는다. 포워드 패스 및 백워드 패스 컴퓨테이션 및 스토리지를 위해 사용가능한 상이한 컴퓨트 자원들 및/또는 상이한 스토리지 자원들을 갖는 다른 실시예들이 고려된다. 예컨대, 백워드 패스는 포워드 패스에 의해 사용되지 않는 전치 가중치 스토리지를 사용한다. 상이한 포워드 패스 및 백워드 패스 구현들을 위해 사용가능한 상이한 컴퓨트 및/또는 스토리지 자원들을 갖는 다른 실시예들이 고려된다. 예컨대, RCP-기반 실시예는 RCP를 갖지 않는 포워드 패스 또는 백워드 패스 프로세싱에 사용되는 추가 컴퓨트 자원(예시되지 않음)을 사용한다.
[0673]
도 27a와 관련하여, 컴퓨트(2710)는 컴퓨테이션들, 이를테면 포워드 패스 컴퓨테이션들(F 2711)을 수행하도록 인에이블링된다. 스토리지(2715)는 활성화들을 이를테면 A 2716에 저장하도록 인에이블링된다. 스토리지(2715)는 추가로, 가중치들을 이를테면 W 2717에 저장하도록 인에이블링된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 컴퓨트(2720), F 2721, 스토리지(2725), A 2726, 및 W 2727은, 각각 구조 및/또는 동작 상에서, 컴퓨트(2710), F 2711, 스토리지(2715), A 2716, 및 W 2717과 실질적으로 유사하거나 또는 동일하다.
[0674]
SGD 또는 MBGD에 대한 포워드 패스 동작에서, 활성화(A1,t 2781)는 이전 레이어(2701)에 의해 수신되고, (백워드 패스 동안 추후에 사용하기 위해) A 2716에 저장된다. 이어서, A1,t 2781, 및 W 2717에 이전에 저장된 가중치(W1,t)가, 활성화(A2,t 2782)를 산출하기 위해 F 2711에 따라 프로세싱된다. 이어서, A2,t 2782가 후속 레이어(2702)에 전달된다. 이전 레이어와 유사하게, A2,t 2782가 후속 레이어(2702)에 의해 수신되고, (백워드 패스 동안 추후에 사용하기 위해) A 2726에 저장된다. 이어서, A2,t 2782, 및 W 2727에 이전에 저장된 가중치(W2,t)가, 활성화(A3,t 2783)를 산출하기 위해 F 2721에 따라 프로세싱된다. 이어서, 포워드 패스가 완료되고 백워드 패스가 시작될 때까지, A3,t 2783이 프로세싱을 위해 바로 다음 후속 레이어(존재하는 경우)에 제공되는 등이 이어진다. 후속 레이어(2702)가 출력 레이어인 경우, 포워드 패스가 완료되고, 포워드 패스에 대응하는 백워드 패스가 개시된다.
[0675]
도 27b에 관하여, 명확성을 위해, 포워드 패스 프로세싱(F 2711 및 F 2721)에 전용되는 컴퓨트(2710) 및 컴퓨트(2720)의 엘리먼트들이 생략된다. 도 27a에 대하여 예시 및 설명된 구조 및 동작에 대하여, 도 27b는, 컴퓨트(2710)가 추가 컴퓨테이션들, 이를테면 백워드 패스 컴퓨테이션들(B 2712)을 수행하도록 추가로 인에이블링되며, 컴퓨트(2720)가 추가 컴퓨테이션들, 이를테면 백워드 패스 컴퓨테이션들(B 2722)을 수행하도록 추가로 인에이블링되는 것을 예시한다. 스토리지(2715)는 컴퓨팅된 가중치를 이를테면 W 2718에 저장하도록 추가로 인에이블링되며, 스토리지(2725)는 컴퓨팅된 가중치를 이를테면 W 2728에 저장하도록 추가로 인에이블링된다. 다양한 실시예들 및/또는 사용 시나리오들에서, B 2722 및 W 2728은, 각각 구조 및/또는 동작 상에서, B 2712 및 W 2718과 실질적으로 유사하거나 또는 동일하다.
[0676]
SGD 또는 MBGD에 대한 백워드 패스 연산에서, 델타 Δ3,t(2793)는 백워드 패스 프로세싱 동안에 바로 다음 후속 레이어(존재한다면)로부터 수신된다. 후속 레이어(2702)가 출력 레이어라면, 후속 레이어(2702)는 델타 규칙에 따라, 예컨대 후속 레이어의 출력(예컨대, 추정된 출력)과 트레이닝 출력(예컨대, 원하는 출력) 사이의 차이의 함수로써, 델타 Δ3,t를 컴퓨팅한다. 이어서, Δ3,t(2793), 이전에 W(2727)에 저장된 가중치 W2,t, 및 이전에 A(2726)에 저장된 활성화 A2,t는 B(2722)에 따라(예컨대, 델타 규칙에 따라) 프로세싱되어서, 델타 Δ2,t(2792) 및 새로운 가중치 W2,t +1을 산출하며, 그 새로운 가중치 W2,t +1은 이어서, 바로 다음 포워드 패스에서 사용하기 위해 W(2728)에 저장된다. 이어서, Δ2,t(2792)는 이전 레이어(2701)에 전달된다. 이어서, 후속 레이어와 유사하게, 델타 Δ2,t(2792), 이전에 W(2717)에 저장된 가중치 W1,t, 및 이전에 A(2716)에 저장된 활성화 A1,t는 B(2712)에 따라 프로세싱되어서, 델타 Δ1,t(2791) 및 새로운 가중치 W1,t +1을 산출하며, 그 새로운 가중치 W1,t +1은 이어서, 바로 다음 포워드 패스에서 사용하기 위해 W(2718)에 저장된다. 이어서, 백워드 패스가 완료되고 바로 다음 포워드 패스가 개시될 때까지, Δ1,t(2791)는 프로세싱을 위해 바로 다음 이전 레이어(존재한다면)로 전달되는 식이다. 이전 레이어(2701)가 입력 레이어라면, 백워드 패스는 완료되고, 바로 다음 포워드 패스가 개시된다.
[0677]
SGD 및 MBGD에서(그리고 CPGD와 달리), 바로 다음 포워드 패스는, 이전 백워드 패스가 완료될 때까지 지연되는데, 예컨대 W(2717) 및 W(2727)가 동일한 포워드 패스 및 동일한 대응하는 백워드 패스에 대해 사용된 후에, W(2717) 및 W(2727)는 W(2718) 및 W(2728)로 각각 업데이트된다. 그러므로, 바로 다음 포워드 패스는, 동일한 백워드 패스로부터 비롯되는 가중치들을 사용하여 수행된다.
[0678]
도 27a는, SGD 및 MBGD 포워드 패스 프로세싱을 예시하는 것에 추가하여, CPGD 포워드 패스 프로세싱을 또한 예시한다. 그러나, CPGD에 대한 연산은, SGD 및 MBGD와 비교하여, 가중치 업데이트들 및 바로 다음 포워드 패스가, 이전 백워드 패스의 완료까지 지연되는 것이 아니라, 가능한 한 빨리 수행된다는 점에서 상이하다. 예컨대, W(2717) 및 W(2727)는 가능한 한 빨리, W(2718) 및 W(2728)로 각각 업데이트된다. 그러므로, 바로 다음 포워드 패스는 이전 반복들로부터의 가중치들에 선택적으로 액세스하여서, SGD 및 MBGD에 의해 동일한 조건들 하에서 산출된 것들과 상이한 활성화들을 선택적으로 산출한다.
[0679]
보다 구체적으로, 이전 레이어(2701)에서, A1,t(2781)는 SGD 및 MBGD와 동일하게 A(2716)에 수신 및 저장된다. 이어서, A1,t(2781), 및 이전에 W(2717)에 저장된 가중치 W1,t -k-j는 F(2711)에 따라 프로세싱되어 활성화 A2,t(2782)를 산출한다. 가중치 W1,t -k-j는 k-j 포워드 패스들만큼 인스턴트 포워드 패스에 선행하는 포워드 패스에 대응하는 백워드 패스에 의해 산출 및 저장되었다. 이어서, A2,t(2782)는 후속 레이어(2702)에 전달되고, 이전 레이어와 유사하게, A2,t(2782)는 SGD 및 MBGD와 동일하게 A(2726)에 수신 및 저장된다. 이어서, A2,t(2782), 및 이전에 W(2727)에 저장된 가중치 W2,t -k는 F(2721)에 따라 프로세싱되어 활성화 A3,t(2783)를 산출한다. 가중치 W2,t -k는 k 포워드 패스들만큼 인스턴트 포워드 패스에 선행하는 포워드 패스에 대응하는 백워드 패스에 의해 산출 및 저장되었다. 이전 레이어 및 후속 레이어는, 동일한 포워드 패스의 프로세싱을 위해, 상이한 백워드 패스들로부터의 가중치들을 사용한다는 것을 주목한다. 이어서, SGD 및 MBGD에서와 같이, 포워드 패스가 완료되고 백워드 패스가 개시될 때까지, A3,t(2783)는 프로세싱을 위해 바로 다음 후속 레이어(존재한다면)에 제공되는 식이다. 후속 레이어(2702)가 출력 레이어라면, 포워드 패스는 완료되고, 포워드 패스에 대응하는 백워드 패스가 개시된다. 일부 실시예들 및/또는 사용 시나리오들에서, j의 값은 0이고, (k-j)와 (k)는 동일하다. 다양한 실시예들 및/또는 사용 시나리오들에서, 이전 레이어 및 후속 레이어는: 상이한 포워드 패스들, 상이한 백워드 패스들, 및 포워드 패스 및 상이한 백워드 패스 중 하나를 동시에 프로세싱한다.
[0680]
도 27b는, SGD 및 MBGD 백워드 패스 프로세싱을 예시하는 것에 추가하여, CPGD 백워드 패스 프로세싱을 또한 예시한다. CPGD에서의 백워드 패스의 프로세싱은 SGD 및 MBGD의 것과 동일하다. 그러나, 선택된 결과들(예컨대, 선택된 가중치들)은 SGD 및 MBGD에서보다 더 일찍 사용된다. 예컨대, 백워드 패스 t-k-j에 의해 산출된 W1,t -k-j, 및 백워드 패스 t-k에 의해 산출된 W1,t -k는 SGD 및 MBGD, 예컨대 포워드 패스 t에서보다 더 일찍 사용된다.
[0681]
도 27c는, RCP와 조합하여, SGD, MBGD, 및 CPGD 중 임의의 것의 포워드 패스 프로세싱의 실시예를 예시한다. 다양한 실시예들 및/또는 사용 시나리오들에서, 컴퓨트(2730) 및 스토리지(2735)는 구조 및/또는 동작에 있어서 컴퓨트(2710) 및 스토리지(2715)와 각각 실질적으로 유사하거나 또는 동일하다. 다양한 실시예들 및/또는 사용 시나리오들에서, 컴퓨트(2740) 및 스토리지(2745)는, 스토리지(2745)에 대응하는 것이 없는 스토리지(2725)의 활성화들 A(2726)에 대한 저장의 생략을 제외하고는, 구조 및/또는 동작에 있어서 컴퓨트(2720) 및 스토리지(2725)와 각각 실질적으로 유사하거나 또는 동일하다.
[0682]
포워드 패스 연산에서, 이전 레이어(2703)와 관련하여, 활성화 A1,t(2781)는 컴퓨트(2730)의 포워드 패스 프로세싱에 따라 수신 및 프로세싱되고, 도 27a와 관련하여 설명된 바와 같이 스토리지(2735)에 저장된다. 그러나, 후속 레이어(2704)와 관련하여, 활성화 A2,t(2782)가 수신되고, 컴퓨트(2740)에서의 포워드 패스 프로세싱에 따라 프로세싱되지만, 저장되지 않는다(대신에, 백워드 패스 프로세싱 동안에 RCP에 따라 재컴퓨팅됨).
[0683]
도 27d 및 도 27e는, RCP와 조합하여, SGD, MBGD, 및 CPGD 중 임의의 것의 백워드 패스 프로세싱의 실시예의 제1 및 제2 부분들을 각각 예시한다. 명확성을 위해, 포워드 패스 프로세싱(F(2721)) 전용의 컴퓨트(2730) 및 컴퓨트(2740)의 엘리먼트들은 생략되었다. 도 27c와 관련하여 설명되고 예시된 구조 및 동작과 관련하여, 도 27d 및 도 27e는, 컴퓨트(2730)가 추가 컴퓨테이션들, 이를테면, 백워드 패스 컴퓨테이션들 B(2712)를 수행하는 것이 추가로 가능하고, 그리고 컴퓨트(2740)가 추가 컴퓨테이션들, 이를테면, 백워드 패스 컴퓨테이션들 B(2722)를 수행하는 것이 추가로 가능하다는 것을 예시한다. 스토리지(2735)는, 컴퓨팅된 가중치를, 이를테면, W(2718)에 저장하는 것이 추가로 가능하고, 스토리지(2745)는, 컴퓨팅된 가중치를, 이를테면, W(2728)에 저장하는 것뿐만 아니라 재컴퓨팅된 활성화를, 이를테면, A(2729)에 저장하는 것이 추가로 가능하다.
[0684]
백워드 패스 연산의 제1 부분에서, 대응하는 포워드 패스에 저장되지 않은 활성화들은 재컴퓨팅된다. SGD 및 MBGD 시나리오들에서, 재컴퓨팅된 활성화는, 활성화 A'2,t(2784)를 산출하기 위해 F(2711)에 따라 W(2717)에 저장된 가중치 및 포워드 패스로부터 A(2716)에 저장된 활성화를 프로세싱함으로써 이전 레이어(2703)에서 포뮬레이팅되며, 그 활성화 A'2,t(2784)는 이어서, 후속 레이어(2704)의 A(2729)에 저장된다. 포워드 패스 및 대응하는 백워드 패스가 완료될 때까지 SGD 및 MBGD가 가중치 업데이트들 및 바로 다음 포워드 패스의 개시를 지연시키기 때문에, A'2,t(2784)는 포워드 패스 동안 폐기된 값 A2,t(2782)와 동일하다.
[0685]
CPGD 시나리오에서, 재컴퓨팅된 활성화는 SGD 및 MBGD 시나리오들과 동일한 토폴로지에 따라 포뮬레이팅된다. 그러나, CPGD는 지연들 없이 업데이트들을 수행하며, 이전 백워드 패스들의 완료와 관계없이 바로 다음 포워드 패스의 개시를 가능하게 한다. 따라서, 실시예 및/또는 사용 시나리오들에 따라, 백워드 패스 시에, 예컨대 W(2717)에 저장된 가중치 값은 대응하는 포워드 패스 동안 저장된 가중치 값과 선택적으로 상이하다. 특정 예로서, 도 27c에 따르면, 포워드 패스 동안 W(2717)는 W1,t -k-j를 저장했다. 그러나, 백워드 패스 동안, 추가의 가중치 업데이트들이, 예컨대 m 반복들에 대응하여, 이루어졌고, 이제 W(2717)는 W1,t -k-j+m을 저장한다. 그러므로, A'2,t(2784)는 포워드 패스 A2,t(2782) 동안에 폐기된 값과 선택적으로 상이하다.
[0686]
백워드 패스 연산의 제2 부분에서, 컴퓨테이션은 재컴퓨팅된 활성화를 사용하여 진행한다. SGD 및 MBGD 시나리오들에서, 재컴퓨팅된 활성화는 폐기된 활성화와 동일하기 때문에(예컨대, 개념상으로, A(2729)에 저장된 값은 A(2726)에 저장된 값과 동일함), 백워드 프로세싱은 도 27b와 관련하여 설명된 결과들과 동일한 결과들을 산출한다. 예컨대, 델타들 Δ'3,t(2796), Δ'2,t(2795), 및 Δ'1,t(2794)는 Δ3,t(2793), Δ2,t(2792), 및 Δ1,t(2791)와 각각 동일하다. CPGD 시나리오에서, 재컴퓨팅된 활성화는 폐기된 활성화와 선택적으로 상이하기 때문에, 백워드 프로세싱은 도 27b와 관련하여 설명된 결과들과 선택적으로 상이한 결과들을 산출한다. 예컨대, 델타들 Δ'3,t(2796), Δ'2,t(2795), 및 Δ'1,t(2794)는 Δ3,t(2793), Δ2,t(2792), 및 Δ1,t(2791)와 각각 선택적으로 상이하다.
[0687]
일부 실시예들 및/또는 사용 시나리오들에서, W(2717)는 (예시된 바와 같은) W(2718)와 별개이고, 일부 실시예들 및/또는 사용 시나리오들에서, W(2718) 및 W(2717)는 스토리지(예시되지 않음)의 동일한 부분이어서, W(2718)에 새로운 값을 저장하면, W(2717)에 이전에 저장된 값을 덮어쓴다(overwrite). 유사하게, W(2727)는 W(2728)와 다양하게 별개이거나 또는 W(2728)와 동일하다. 다양한 실시예들 및/또는 사용 시나리오들에서, A(2729)는 A(2726)보다 짧은 시간 동안 더 적은 메모리 로케이션들을 사용하고 그리고/또는 동일한 수의 메모리 로케이션들을 사용하도록 다양하게 구현된다.
[0688]
다양한 실시예들 및/또는 사용 시나리오들에서, 활성화들 및/또는 가중치들은 임의의 하나 이상의 스칼라, 벡터, 행렬, 및 더 고차원의 데이터 구조들에 의해 구현 및/또는 표현된다. 예컨대, A(2716), A(2726), A(2729), W(2717), W(2727), W(2718), 및 W(2728) 중 임의의 하나 이상은, 하나 이상의 스칼라들, 하나 이상의 벡터들, 하나 이상의 행렬들, 및 하나 이상의 더 고차원의 어레이들 중 임의의 하나 이상을 저장하는 것이 가능하다.
[0689]
다양한 실시예들 및/또는 사용 시나리오들에서, 이전 레이어(2701) 및 후속 레이어(2702)의 하나 이상의 엘리먼트들은 개별 PE들, 예컨대 PE(499)의 일부 또는 도 4의 유사한 엘리먼트들에 의해 구현된다. 예컨대, PE(497)는 이전 레이어(2701)를 구현하고, PE(498)는 후속 레이어(2702)를 구현한다. 활성화 A2,t(2782) 및 델타 Δ2,t(2792)는 이스트 커플링(431)을 통해 통신된다. 일부 실시예들 및/또는 사용 시나리오들에서, 이전 레이어(2701) 및 후속 레이어(2702)의 하나 이상의 엘리먼트들은 CPU들, GPU들, DSP들, 및 FPGA들 중 하나 이상에 의해 구현된다.
[0690]
다양한 실시예들 및/또는 사용 시나리오들에서, F(2711), F(2721), B(2712), 및 B(2722)의 엘리먼트들의 전부 또는 임의의 부분들은 개념상으로, 도 2의 PE들(260)에 대한 태스크 SW의 명령들의 실행들의 전부 또는 임의의 부분들에 대응한다.
예시적인 워크로드 맵핑
[0691]
개념상으로, 심층 학습 가속기(400)(도 4)는 프로그램가능 컴퓨트 패브릭이다(예컨대, 도 5-8 및 "프로세싱 엘리먼트: 컴퓨트 엘리먼트 및 라우터" 섹션 참조). 예컨대, 각각의 PE(499) 엘리먼트의 컴퓨트 엘리먼트는 태스크들의 명령들의 시퀀스들(이를테면, 도 2의 PE들(260)에 대한 태스크 SW의 명령들의 실행들의 전부 또는 임의의 부분들에 개념상으로 대응함)을 실행하는 것이 가능하고, 각각의 PE(499)의 라우터 엘리먼트의 라우터 엘리먼트는 PE들 사이에 웨이블릿들을 라우팅하도록 구성가능하다. 프로그램가능 컴퓨트 패브릭은 다양한 방식들로 컴퓨트 패브릭 상으로의 워크로드들의 맵핑을 가능하게 한다. 컴퓨트 패브릭에 의해 구현되는 다양한 기법들 및 메커니즘들을 예시하기 위해, 컴퓨트 패브릭으로의 워크로드의 예시적인 하이-레벨 맵핑이 다음에서 설명된다.
[0692]
워크로드는 SGD를 통해 구현되는 심층 뉴럴 네트워크 트레이닝이다. 심층 뉴럴 네트워크는 뉴런들의 복수의 레이어들을 포함한다. 워크로드는 3개의 메가-페이즈(mega-phase)들: 포워드 패스, 델타 패스, 및 체인 패스를 갖는다. 포워드 패스는 활성화들을 포워드 방향으로 전파한다. 델타 패스는 델타들을 백워드 방향으로 전파한다. 체인 패스는, 델타 패스에서 델타들이 생성될 때의 델타들에 기반하여 구배들을 계산한다. 3개의 메가-페이즈들은 대략 동일한 양의 컴퓨트를 갖는다.
[0693]
도 4는 메가-페이즈들을 PE들에 맵핑하는 예를 예시한다. 각각의 레이어는 컴퓨트 패브릭으로부터 백-투-백으로(예컨대, 수평 디멘션으로) 할당된(일명 '배치된') PE들의 블록들에 의해 구현된다. 데이터 이동은 포워드 패스(포워드(401)) 동안에 패브릭의 단부로 전파되고, 이어서, 델타 패스(델타(402)) 및 체인 패스(체인(403)) 동안에 역 방향으로 서클 백(circle back)한다. 포워드 패스가 델타 패스 및 체인 패스에 의해 사용될 활성화들을 저장하기 때문에, 배치는 데이터 이동을 감소시키도록 지시받는다. 예에서, 모든 PE들은 3개의 메가-페이즈들 사이에서 3-웨이들(three ways)로 시분할되며, 각각의 메가-페이즈는 대략 동일한 양의 컴퓨트를 사용한다. 일부 상황들에서, 패스들을 수행하는 PE들의 전체 체인은 파이프라인으로서 동작하여서, 각각의 레이어는 파이프 스테이지(완료하는 데 거의 동일한 양의 시간이 걸림)이고, 미니-배치의 각각의 활성화는 파이프라인을 채운다.
[0694]
일부 실시예들 및/또는 사용 시나리오들에서, 레이어들 중 단일 레이어에 맵핑된 PE들의 세트 내에서, 단일 레이어의 가중치들은 PE들에 걸쳐 분산되어서, 단일 뉴런이 다수의 PE들에 맵핑된다. 일부 상황들에서, 단일 뉴런을 다수의 PE들에 걸쳐 분할하는 것은 로드 밸런싱 이점을 제공하며, 통신 파티셔닝 이점을 제공한다(예컨대, 도 17-20 및 "뉴런 스미어링" 섹션 참조).
[0695]
개념상으로, 프로세싱은 다음과 같이 진행한다(도 4의 포워드(401) 참조). 활성화들은 수평 축을 따라 레이어 내로 브로드캐스팅된다. 활성화들은 PE들에 의해 수신되며, (PE들에 맵핑된 뉴런들에 대응하는) PE들에 로컬로 저장된 연관된 가중치들의 룩업을 트리거한다. 비-제로 활성화들만이 브로드캐스팅되므로, 제로 활성화들에 대해 어떤 컴퓨트로 낭비되지 않는다(활성화 희소 하베스팅(activation sparsity harvesting)의 예). 각각의 PE는 모든 뉴런 가중치들을 이용하여 인입 활성화의 로컬 곱셈 및 누적을 수행하여, 로컬 부분 합들을 생성한다. 이어서, 각각의 뉴런의 가중치들이 다수의 PE들에 분산되기 때문에, 뉴런 가중치 분포에 따라, 부분 합들이 수직 방향으로 PE들에 걸쳐 누적된다. 부분 합들이 누적되어 최종 합을 생성한 후에, 활성화 기능이 수행되고, 모든 새로운 비-제로 활성화들은 바로 다음 레이어로 브로드캐스팅된다.
[0696]
델타 패스(도 4의 델타(402) 참조) 및 체인 패스(도 4의 체인(403) 참조)는 포워드 패스의 데이터 흐름과 유사한 데이터 흐름을 따른다. 일부 실시예들 및/또는 사용 시나리오들에서, 델타 패스 및 체인 패스는 하나의 레이어만큼 오프셋되어 배치되므로, 활성화들은 백워드 방향에서 사용되는 가중치들과 동일한 레이어들에 저장된다. 델타 패스 및 체인 패스에서 활성화들이 추가 통신 없이 직접적으로 사용되도록, 활성화들은 수신 레이어에 의해 저장된다. 활성화들을 저장하는 것에 추가로, 델타 패스를 구현하기 위해 가중치 전치가 수행된다. 일부 실시예들 및/또는 사용 시나리오들에서, 가중치 전치는, 가중치들을 업데이트할 때 추가의 메모리 용량 및 추가 통신을 사용하여 가중치들을 복제함으로써 구현된다. 일부 실시예들 및/또는 사용 시나리오들에서, 가중치 전치는 델타 브로드캐스트를 수직 디멘션으로 전치함으로써 구현된다.
[0697]
도 28a는 벡터(v)를 곱한 행렬(m)의 일반 연산을 예시한다. 도 28b는, 도 28a의 스타일로, 일부 실시예들(예컨대, 전체 연결된 뉴럴 네트워크)에서 3개의 메가-페이즈들에서 사용되는 메모리 구조들의 다양한 표현들을 예시한다. 다양한 실시예들에서, 가중치(w) 및 구배 축적(g) 데이터 구조들은 2차원 행렬들이다. 일부 실시예들에서, 포워드 부분 합(fpsum) 및 델타 부분 합(δpsum) 및 포워드 패스 활성화들(a)은 1차원 벡터들이다. 일부 실시예들 및/또는 사용 시나리오들에서 2차원 행렬들은 상대적으로 크기 때문에, 2차원 행렬들은 메모리(예컨대, 도 8의 메모리(854))에 저장된다. 일부 실시예들에서, 1차원 벡터들은, 더 높은-처리량의 스토리지(예컨대, 도 8의 D-스토어(848))에 저장되어, 3개의 패스들 각각에서 곱셈-누적 벡터 연산에 대한 사용 시나리오들, 전체 데이터 경로 성능을 가능하게 한다.
[0698]
도 29는 포워드 패스 상태 머신에서 사용되는 태스크들(예컨대, 도 9-12 및 "태스크들" 섹션 참조)의 실시예를 예시한다. 일부 실시예들 및/또는 사용 시나리오들에서, PE들 각각은 상태 머신의 인스턴스화를 구현한다. 일부 실시예들 및/또는 사용 시나리오들에서, 상태 머신의 다양한 부분들은 개개의 PE들에 의해 구현된다(예컨대, 도 17-20 및 "뉴런 스미어링" 섹션 참조). 상태 머신에는 4개의 태스크들: f_rxact:acc(2901), f_rxact:close(2902), f_psum:prop(2903), 및 f_txact:tx(2904)가 있다. 개념상으로, 활성화들은 PE로부터 (이전 레이어에 대응하는) 인스턴트 PE의 "좌측"에 도착한다. 활성화 브로드캐스트 와이어(활성화들(2911))에 대한 인입(비-클로즈아웃) 활성화들은 f_rxact:acc(2901)를 트리거한다. 인스턴트 PE는 태스크의 명령들을 실행하여, 활성화와 연관된 가중치들을 (예컨대, 인스턴트 PE에 대해 로컬인 메모리로부터) 룩업하고, 로컬 가중치 곱셈 및 부분 합들로의 누적을 수행한다. f_rxact:acc(2901) 및 f_psum:prop(2903)(흐름(2913)) 사이에 제어 흐름 종속성들이 존재한다. 예시적인 데이터 구조들, 태스크 레퍼런스들은 wrow, fpsum, 및 fact이다.
[0699]
활성화 브로드캐스트 와이어(클로즈아웃들(2912))에 대한 인입 활성화 클로즈아웃은 f_rxact:close(2902)를 트리거한다. 클로즈아웃은 현재 파면에 대한 모든 활성화들의 종료를 시그널링한다. 인스턴트 PE는 태스크의 명령들을 실행하여, 인스턴트 PE의 시작 리스트에서 부분 합들과의 부분 합 누적 링을 시작한다(Psum들 시작(2916)). 예시적인 데이터 구조들, 태스크 레퍼런스들은 fpsum_acc_mem, 및 fpsum_acc_fab이다.
[0700]
인입 부분 합(Prop Psum들(2930))은 f_psum:prop(2903)를 트리거한다. 인스턴트 PE는 태스크의 명령들을 실행하여, 인입 부분 합을 인스턴트 PE의 로컬 부분 합에 더하고, 이어서, 결과를 링 상의 바로 다음 홉으로 포워딩한다(Prop Psum들(2931)). 인스턴트 PE가 링의 단부에 있다면, 최종 합이 생성된다. 일부 실시예들 및/또는 사용 시나리오들에서, 추가의 프로세싱은 데드록(deadlock)을 방지하기 위해 수행된다. 예시적인 데이터 구조들, 태스크 레퍼런스들은 fpsum_acc_mem, fpsum_acc_fab, 및 f_txact_wake이다.
[0701]
송신을 위해 큐잉된 활성화들이 있을 때, f_txact:tx(2904)는 자체-트리거된다(웨이크(2914)). 인스턴트 PE는 태스크의 명령들을 실행하여, 활성화를 디-큐잉(de-queuing)하고, 브로드캐스트 와이어에 대한 활성화를 바로 다음 레이어로 송신한다(활성화들(2921)). 큐에 더 많은 아이템들이 남아 있을 때, 인스턴트 PE는 태스크를 재스케줄링한다(재스케줄(2915)). 큐가 비어 있을 때, 인스턴트 PE는 파면을 폐쇄하기 위해 클로즈아웃 웨이블릿을 전송한다(클로즈아웃들(2922)).
[0702]
활성화들(인입 및 발신) 및 부분 합들(인입 및 발신)뿐만 아니라 클로즈아웃 웨이블릿들은 웨이블릿들로서 통신된다(예컨대, 도 13a-15b 및 "웨이블릿들" 섹션 참조). 일부 실시예들 및/또는 사용 시나리오들에서, 웨이블릿들 중 하나 이상은 하나 이상의 DSD들 및/또는 XDSD들에 의해 설명된 바와 같은 패브릭 벡터들의 하나 이상의 엘리먼트들에 대응한다.
[0703]
다양한 상태 머신들에 대한 데이터 구조들은, 다음의 표에 의해 설명된 바와 같이, 개별 DSR들에 저장된 복수의 DSD들을 통해 참조된다(예컨대, 도 21a-24 및 "벡터들 및 데이터 구조 설명자들" 섹션 참조).
[0704]
전술한 예시적인 워크로드 맵핑은 SGD에 대한 것이다. 그러나, 기법들은, RCP를 이용하여 그리고 RCP를 이용하지 않고, MBGD 및 CPGD에 쉽게 적용가능하다.
다른 실시예 세부사항들
[0705]
도 1-29와 관련하여 설명된 실시예들 및 사용 시나리오들은 개념상으로, 예컨대 명령들에 따라 데이터를 프로세싱하는 프로그램가능한 CE를 포함하는 PE에 대한 것이다. 예컨대, 명령들 없이 동작가능한 하나 이상의 고정-회로 프로세싱 엘리먼트들에 따라 데이터를 프로세싱하는, 부분적으로 또는 전체적으로 하드와이어링된 CE들 중 하나 이상에 대한 다른 실시예들이 고려된다. 특정 예로서, 특정 CE는 LSTM 유닛의 전부 또는 일부를 구현하는 하드웨어 논리 유닛 회로를 포함한다. 특정 CE는, 다른 PE들과 함께 패브릭에서 동작가능한 특정 PE의 라우터로 구성된다. 다른 PE들 중 일부는 특정 PE와 유사하거나 동일하며, 다른 PE들 중 일부는 도 4의 PE(499)와 유사하거나 동일하다.
예시적인 구현 기법들
[0706]
일부 실시예들에서, 가속화된 심층 학습 중 임의의 것과 연관된 구조 및/또는 그에 대해 수행되는 동작들 모두 또는 임의의 부분들; 가속화된 심층 학습을 위한, RCP를 이용한 그리고 RCP를 이용하지 않은, SGD, MBGD, CPGD; 가속화된 심층 학습을 위한 데이터 구조 설명자들 및 패브릭 벡터들; 가속화된 심층 학습을 위한 뉴런 스미어링; 가속화된 심층 학습을 위한 태스크 동기화; 가속화된 심층 학습을 위한 데이터 흐름 트리거형 태스크들; 가속화된 심층 학습을 위한 제어 웨이블릿; 및/또는 가속화된 심층 학습을 위한 웨이블릿 표현뿐만 아니라, 위에서 언급된 동작들 전부 또는 부분들을 제공하는 프로세서, 마이크로프로세서, 단일 칩 시스템, 주문형 집적 회로, 하드웨어 가속기, 또는 다른 회로의 부분들의 다양한 조합들은, 컴퓨터 시스템에 의한 프로세싱과 호환가능한 사양에 의해 특정된다. 사양은 다양한 설명들, 이를테면, 하드웨어 설명 언어들, 회로 설명들, 넷리스트 설명들, 마스크 설명들, 또는 레이아웃 설명들에 따른다. 예시적인 설명들은: Verilog, VHDL, SPICE, SPICE 변형들, 이를테면, PSpice, IBIS, LEF, DEF, GDS-II, OASIS, 또는 다른 설명들을 포함한다. 다양한 실시예들에서, 프로세싱은, 하나 이상의 집적 회로들 상에 포함하기에 적합한 논리 및/또는 회로를 산출, 검증, 또는 지정하기 위한 해석, 컴파일레이션(compilation), 시뮬레이션, 및 합성의 임의의 조합을 포함한다. 다양한 실시예들에 따른 각각의 집적 회로는 다양한 기법들에 따른 설계 및/또는 제조와 호환가능하다. 기법들은 프로그램가능 기법(이를테면, 필드 또는 마스크 프로그램가능 게이트 어레이 집적 회로), 세미-커스텀 기법(이를테면, 전체적 또는 부분적 셀-기반 집적 회로), 및 풀-커스텀 기법(이를테면, 실질적으로 특화된 집적 회로), 이들의 임의의 조합, 또는 집적 회로들의 설계 및/또는 제조와 호환가능한 임의의 다른 기법을 포함한다.
[0707]
일부 실시예들에서, 명령들의 세트가 저장된 컴퓨터 판독가능 매체에 의해 설명되는 바와 같은 동작들 전부 또는 부분들의 다양한 조합들은, 하나 이상의 프로그램 명령들의 실행 및/또는 해석, 하나 이상의 소스 및/또는 스크립트 언어 스테이트먼트들의 해석 및/또는 컴파일링, 또는 프로그래밍 및/또는 스크립팅 언어 스테이트먼트들에서 표현되는 정보를 컴파일링, 트랜슬레이팅, 및/또는 해석함으로써 산출된 이진 명령들의 실행에 의해 수행된다. 스테이트먼트들은 임의의 표준 프로그래밍 또는 스크립팅 언어(이를테면, C, C++, Fortran, Pascal, Ada, Java, VBscript, 및 Shell)와 호환가능하다. 프로그램 명령들, 언어 스테이트먼트들, 또는 이진 명령들 중 하나 이상은 임의적으로, 하나 이상의 컴퓨터 판독가능 저장 매체 엘리먼트들 상에 저장된다. 다양한 실시예들에서, 프로그램 명령들의 일부, 전부, 또는 다양한 부분들은 하나 이상의 기능들, 루틴들, 서브-루틴들, 인-라인 루틴들, 프로시저들, 매크로들, 또는 이들의 부분들로서 실현된다.
결론
[0708]
특정 선택들은 본문 및 도면들을 준비할 때 편리함을 위해 단순히 설명으로 이루어지고, 반대의 표시가 없다면, 선택들은 그 자체로, 설명된 실시예들의 구조 또는 동작에 관한 추가의 정보를 전달하는 것으로 해석되지 않아야 한다. 선택들의 예들은: 실시예들의 피처들 및 엘리먼트들을 식별 및 참조하기 위해 사용된 엘리먼트 식별자들(예컨대, 콜아웃들 또는 수치 지정자들)의 특정 조직화 또는 할당, 및 도면 넘버링을 위해 사용된 지정들의 특정 조직화 또는 할당을 포함한다.
[0709]
단어들 "포함하다" 및 "구비하다"의 다양한 형태들은 구체적으로, 오픈 엔드(open-ended) 범위의 논리적 세트들을 설명하는 관념들로서 해석되도록 의도되고, 명시적으로 설명되지 않는 한(이를테면, 단어 "~ 내의"가 앞에 나오지 않는 한) 물리적 포함을 전달하도록 의도되지 않는다.
[0710]
비록 전술한 실시예들이 설명 및 이해의 명확성의 목적들을 위해 일부 상세히 설명되었지만, 본 발명은 제공된 세부사항들로 제한되지 않는다. 본 발명의 많은 실시예들이 존재한다. 개시된 실시예들은 예시적이며, 제한적이지 않다.
[0711]
구성, 어레인지먼트, 및 사용에서의 많은 변형들이 설명과 가능한 일치하고, 허여된 특허의 청구항들의 범위 내에 있다는 것이 이해될 것이다. 예컨대, 사용된 상호연결부 및 기능-단위 비트 폭들, 클록 속도들, 및 기술의 타입은 각각의 컴포넌트 블록에서 다양한 실시예들에 따라 가변한다. 상호연결하기 위해 정해진 이름들 및 논리는 단지 예시적이며, 설명된 개념들을 제한하는 것으로 해석되지 않아야 한다. 흐름도 및 흐름도 프로세스, 액션, 및 기능 엘리먼트들의 순서 및 배열은 다양한 실시예들에 따라 가변한다. 또한, 구체적으로 반대로 언급되지 않는 한, 특정된 값 범위들, 사용된 최대 및 최소 값들, 또는 다른 특정 사양들(이를테면, 파일 타입들; 및 버퍼들 및 레지스터들의 스테이지들 또는 엔트리들의 수)은 단순히 설명된 실시예들의 것들이고, 구현 기술의 개선들 및 변화들을 추적하기 위해 예상되고, 그리고 제한들로서 해석되지 않아야 한다.
[0712]
당해 기술 분야에 알려진 기능적으로 등가의 기법들은, 다양한 컴포넌트들, 서브-시스템들, 동작들, 기능들, 루틴들, 서브-루틴들, 인-라인 루틴들, 프로시저들, 매크로들, 또는 이들의 부분들을 구현하기 위해 설명된 것들 대신 이용가능하다. 또한, 실시예의 기능이, 더 신속한 프로세싱(이전의 하드웨어의 기능들을 소프트웨어로 마이그레이션하는 것을 가능하게 함) 및 더 높은 통합 밀도(이전의 소프트웨어의 기능들을 하드웨어로 마이그레이션하는 것을 가능하게 함)의 설계 제약들 및 기술적 트렌드들에 의존하기 때문에, 실시예들의 많은 기능적 양상들이 하드웨어(예컨대, 일반적으로 전용 회로) 또는 소프트웨어(예컨대, 프로그래밍된 제어기 또는 프로세서의 일부 방식을 통해)로 선택적으로 실현 가능하다는 것이 이해된다. 다양한 실시예들의 특정 변형들은, 파티셔닝에서의 차이들; 상이한 형태인자들 및 구성들; 상이한 운영 시스템들 및 다른 시스템 소프트웨어의 사용; 상이한 인터페이스 표준들, 네트워크 프로토콜들, 또는 통신 링크들의 사용; 및 특정 애플리케이션의 고유한 엔지니어링 및 비지니스 제약들에 따라 본원에 설명된 개념들을 구현할 때 예상될 다른 변형들을 포함한다(그러나, 이에 제한되지 않음).
[0713]
실시예들은, 설명된 실시예들의 많은 양상들의 최소 구현을 위해 필요한 것을 훨씬 넘어선 상세한 그리고 환경적인 콘텍스트로 설명되었다. 당업자들은, 일부 실시예들이, 나머지 엘리먼트들 사이에서 기본 조정을 변경함이 없이, 개시된 컴포넌트들 또는 피처들을 생략하는 것을 인지할 것이다. 따라서, 많은 개시된 세부사항들이, 설명된 실시예들의 다양한 양상들을 구현하는 데 요구되지 않는 것이 이해된다. 나머지 엘리먼트들이 종래 기술로부터 구별가능한 범위까지, 생략된 컴포넌트들 및 피처들은 본원에서 설명된 개념들을 제한하지 않는다.
[0714]
설계에서의 모든 그런 변형들은 설명된 실시예들에 의해 전달되는 교시들에 대해 비본질적 변화들이다. 또한, 본원에 설명된 실시예들이 다른 컴퓨팅 및 네트워킹 애플리케이션들에 넓은 적용가능성을 가지며, 설명된 실시예들의 특정 애플리케이션 또는 산업으로 제한되지 않음이 이해된다. 따라서, 본 발명은 허여된 특허의 청구항들의 범위 내에 포함된 모든 가능한 수정들 및 변형들을 포함하는 것으로 해석되어야 한다.
Claims (47)
- 프로세서 엘리먼트들의 패브릭(fabric)을 포함하고,
각각의 프로세서 엘리먼트는, 데이터 흐름-기반 및 명령-기반 프로세싱을 수행하는 것이 가능한 컴퓨트 엔진(compute engine) 및 패브릭 라우터(fabric router)를 포함하고,
각각의 프로세서 엘리먼트는 패브릭 패킷들을 상기 프로세서 엘리먼트들의 다른 프로세스 엘리먼트들과 선택적으로 통신하고, 그리고
각각의 컴퓨트 엔진은, 상기 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 태스크 지정자(task specifier) 및 가상 채널 지정자(virtual channel specifier)에 따라 상기 프로세싱을 선택적으로 수행하는, 시스템. - 제1 항에 있어서,
각각의 컴퓨트 엔진은, 미리정의된 네이티브 명령 세트(native instruction set)의 코드들로부터 선택되는 대응하는 기본 명령을 수신하는 것에 대한 응답으로, 미리정의된 세트의 기본 연산들을 수행하도록 구성되고,
상기 시스템은 트레이닝 워크로드(training workload)를 더 포함하고,
상기 트레이닝 워크로드는,
상기 프로세서 엘리먼트의 상기 컴퓨트 엔진에 뉴런의 적어도 일부의 맵핑을 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제1 세트의 머신 코드들 ―상기 맵핑은 적어도 하나의 부분-뉴런 가중치(partial-neuron weight)의 관리를 포함함―;
상기 적어도 하나의 부분-뉴런 가중치에 적어도 부분적으로 기반하여 포워드 논리 방향(forward logical direction)으로 활성화(activation)들을 전파시키기 위해 포워드 패스(forward pass)를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제2 세트의 머신 코드들 ―상기 포워드 패스는 입력 샘플에 대한 응답으로 개시됨―;
델타들을 생성하기 위해 백워드 논리 방향(backward logical direction)으로 델타 패스(delta pass)를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제3 세트의 머신 코드들 ―상기 델타 패스는 상기 포워드 패스의 완료에 대한 응답으로 개시됨―;
상기 델타들에 기반하여 구배(gradient)들을 계산하기 위해 체인 패스(chain pass)를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제4 세트의 머신 코드들; 및
미리결정된 학습 규칙에 따라 그리고 상기 델타들에 적어도 부분적으로 기반하여 상기 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제5 세트의 머신 코드들
을 포함하고, 각각의 컴퓨트 엔진은 상기 적어도 하나의 부분-뉴런 가중치를 위한 스토리지(storage)를 포함하는, 시스템. - 제2 항에 있어서,
상기 맵핑은 복수의 레이어들로의 뉴럴 네트워크의 파티셔닝(partitioning)을 구현하기 위해 상기 패브릭의 초기화하는 것에 따르고, 상기 뉴런은 상기 뉴럴 네트워크의 복수의 뉴런들 중 제1 뉴런이고, 상기 제1 뉴런은 상기 복수의 레이어들 중 제1 레이어에 포함되고, 그리고 상기 복수의 뉴런들 각각은 상기 패브릭의 복수의 프로세서 엘리먼트들에 걸쳐 분산 방식(distributed manner)으로 매핑되는, 시스템. - 제3 항에 있어서,
상기 복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 각각의 레이어에 대한 상기 완료는 동일한 시간량을 포함하는 시간 스텝(time step)을 소요하는, 시스템. - 제3 항에 있어서,
트레이닝 세트의 각각의 입력 샘플이 상기 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들이 상기 복수의 레이어들에 걸쳐 상기 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트되는, 시스템. - 제2 항에 있어서,
트레이닝 세트를 집합적으로(collectively) 포함하는 복수의 입력 샘플들 각각에 대해 상기 트레이닝 워크로드의 반복이 수행되는, 시스템. - 제6 항에 있어서,
상기 트레이닝 세트는 복수의 소위 미니-배치(mini-batch)들로 파티셔닝되고, 그리고 상기 미리결정된 학습 규칙은 각각의 상기 미니-배치들의 각각의 입력 샘플에 대한 모든 패스들의 완료 후에 상기 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정하는, 시스템. - 제7 항에 있어서,
상기 포워드 패스는, 제1 복수의 프로세서 엘리먼트들 내에서 미니-배치 학습이 진행되고 있는 동안, 상기 제1 복수의 프로세서 엘리먼트들 내에 가중치 업데이트들을 통합하는, 시스템. - 제6 항에 있어서,
각각의 입력 샘플에 대해, 상기 시스템은, 상기 입력 샘플에 대응하는 상기 포워드 패스, 상기 델타 패스 및 상기 체인 패스의 완료에 대한 응답으로, 상기 미리결정된 학습 규칙에 따라 상기 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하는 것이 가능한, 시스템. - 제9 항에 있어서,
상기 시스템은, 각각의 포워드 패스에 대해, 상기 적어도 하나의 부분-뉴런 가중치의 가장 최근의 선택적 업데이트에 의해 제공되는 가중치 정보를 사용하는 것이 가능한, 시스템. - 제10 항에 있어서,
상기 시스템은, 제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 각각의 입력 샘플에 대해 상기 델타 패스 및 상기 체인 패스를 수행하는 것이 가능한, 시스템. - 프로세서 엘리먼트들의 패브릭의 각각의 프로세서 엘리먼트에서, 상기 프로세서 엘리먼트들의 다른 프로세서 엘리먼트들과 패브릭 패킷들을 선택적으로 통신하는 단계 ―각각의 프로세서 엘리먼트는, 데이터 흐름-기반 및 명령-기반 프로세싱을 수행하는 것이 가능한 컴퓨트 엔진 및 패브릭 라우터를 포함함―; 및
각각의 컴퓨트 엔진에서, 상기 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 태스크 지정자 및 가상 채널 지정자에 따라 상기 프로세싱을 선택적으로 수행하는 단계
를 포함하는, 방법. - 제12 항에 있어서,
각각의 컴퓨트 엔진은, 미리정의된 네이티브 명령 세트의 코드들로부터 선택되는 대응하는 기본 명령을 수신하는 것에 대한 응답으로, 미리정의된 세트의 기본 연산들을 수행하도록 구성되며,
상기 방법은 트레이닝 워크로드를 프로세싱하는 단계를 더 포함하며,
상기 트레이닝 워크로드는,
상기 프로세서 엘리먼트의 상기 컴퓨트 엔진에 뉴런의 적어도 일부의 맵핑을 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제1 세트의 머신 코드들 ―상기 맵핑은 적어도 하나의 부분-뉴런 가중치의 관리를 포함함―;
상기 적어도 하나의 부분-뉴런 가중치에 적어도 부분적으로 기반하여 포워드 논리 방향으로 활성화들을 전파시키기 위해 포워드 패스를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제2 세트의 머신 코드들 ―상기 포워드 패스는 입력 샘플에 대한 응답으로 개시됨―;
델타들을 생성하기 위해 백워드 논리 방향으로 델타 패스를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제3 세트의 머신 코드들 ―상기 델타 패스는 상기 포워드 패스의 완료에 대한 응답으로 개시됨―;
상기 델타들에 기반하여 구배들을 계산하기 위해 체인 패스를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제4 세트의 머신 코드들; 및
미리결정된 학습 규칙에 따라 그리고 상기 델타들에 적어도 부분적으로 기반하여 상기 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제5 세트의 머신 코드들
을 포함하고, 각각의 컴퓨트 엔진은 상기 적어도 하나의 부분-뉴런 가중치를 위한 스토리지를 포함하는, 방법. - 제13 항에 있어서,
상기 맵핑은 복수의 레이어들로의 뉴럴 네트워크의 파티셔닝을 구현하기 위해 상기 패브릭의 초기화하는 것에 따르고, 상기 뉴런은 상기 뉴럴 네트워크의 복수의 뉴런들 중 제1 뉴런이고, 상기 제1 뉴런은 상기 복수의 레이어들 중 제1 레이어에 포함되고, 그리고 상기 복수의 뉴런들 각각은 상기 패브릭의 복수의 프로세서 엘리먼트들에 걸쳐 분산 방식으로 매핑되는, 방법. - 제14 항에 있어서,
상기 복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 각각의 레이어에 대한 상기 완료는 동일한 시간량을 포함하는 시간 스텝을 소요하는, 방법. - 제14 항에 있어서,
트레이닝 세트의 각각의 입력 샘플이 상기 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들이 상기 복수의 레이어들에 걸쳐 상기 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트되는, 방법. - 제13 항에 있어서,
트레이닝 세트를 집합적으로 포함하는 복수의 입력 샘플들 각각에 대해 상기 트레이닝 워크로드의 반복을 수행하는 단계를 더 포함하는, 방법. - 제17 항에 있어서,
상기 트레이닝 세트를 복수의 소위 미니-배치들로 파티셔닝하는 단계를 더 포함하고, 그리고 상기 미리결정된 학습 규칙은 각각의 상기 미니-배치들의 각각의 입력 샘플에 대한 모든 패스들의 완료 후에 상기 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정하는, 방법. - 제18 항에 있어서,
상기 포워드 패스는, 제1 복수의 프로세서 엘리먼트들 내에서 미니-배치 학습이 진행되는 동안, 상기 제1 복수의 프로세서 엘리먼트들 내에 가중치 업데이트들을 통합하는, 방법. - 제17 항에 있어서,
각각의 입력 샘플에 대해, 상기 입력 샘플에 대응하는 상기 포워드 패스, 상기 델타 패스 및 상기 체인 패스의 완료에 대한 응답으로, 상기 미리결정된 학습 규칙에 따라 상기 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하는 단계를 더 포함하는, 방법. - 제20 항에 있어서,
각각의 포워드 패스에 대해, 상기 적어도 하나의 부분-뉴런 가중치의 가장 최근의 선택적 업데이트에 의해 제공되는 가중치 정보를 선택적으로 사용하는 단계를 더 포함하는, 방법. - 제21 항에 있어서,
제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 각각의 입력 샘플에 대해 상기 델타 패스 및 상기 체인 패스를 선택적으로 수행하는 단계를 더 포함하는, 방법. - 프로세서 엘리먼트들의 패브릭의 각각의 프로세서 엘리먼트에서, 상기 프로세서 엘리먼트들의 다른 프로세서 엘리먼트들과 패브릭 패킷들을 선택적으로 통신하기 위한 수단 ―각각의 프로세서 엘리먼트는, 데이터 흐름-기반 및 명령-기반 프로세싱을 수행하는 것이 가능한 컴퓨트 엔진 및 패브릭 라우터를 포함함―; 및
각각의 컴퓨트 엔진에서, 상기 컴퓨트 엔진이 수신하는 각각의 패브릭 패킷의 태스크 지정자 및 가상 채널 지정자에 따라 상기 프로세싱을 선택적으로 수행하기 위한 수단
을 포함하는, 시스템. - 제23 항에 있어서,
각각의 컴퓨트 엔진은, 미리정의된 네이티브 명령 세트의 코드들로부터 선택되는 대응하는 기본 명령을 수신하는 것에 대한 응답으로, 미리정의된 세트의 기본 연산들을 수행하도록 구성되며,
상기 시스템은 트레이닝 워크로드를 더 포함하며,
상기 트레이닝 워크로드는,
상기 프로세서 엘리먼트의 상기 컴퓨트 엔진에 뉴런의 적어도 일부의 맵핑을 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제1 세트의 머신 코드들 ―상기 맵핑은 적어도 하나의 부분-뉴런 가중치의 관리를 포함함―;
상기 적어도 하나의 부분-뉴런 가중치에 적어도 부분적으로 기반하여 포워드 논리 방향으로 활성화들을 전파시키기 위해 포워드 패스를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제2 세트의 머신 코드들 ―상기 포워드 패스는 입력 샘플에 대한 응답으로 개시됨―;
델타들을 생성하기 위해 백워드 논리 방향으로 델타 패스를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제3 세트의 머신 코드들 ―상기 델타 패스는 상기 포워드 패스의 완료에 대한 응답으로 개시됨―;
상기 델타들에 기반하여 구배들을 계산하기 위해 체인 패스를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제4 세트의 머신 코드들; 및
미리결정된 학습 규칙에 따라 그리고 상기 델타들에 적어도 부분적으로 기반하여 상기 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트를 수행하기 위한, 상기 네이티브 명령 세트로부터 선택되는 제5 세트의 머신 코드들
을 포함하며, 각각의 컴퓨트 엔진은 상기 적어도 하나의 부분-뉴런 가중치를 위한 스토리지를 포함하는, 시스템. - 제24 항에 있어서,
상기 맵핑은 복수의 레이어들로의 뉴럴 네트워크의 파티셔닝을 구현하기 위해 상기 패브릭을 초기화하는 것에 따르고, 상기 뉴런은 상기 뉴럴 네트워크의 복수의 뉴런들 중 제1 뉴런이고, 상기 제1 뉴런은 상기 복수의 레이어들 중 제1 레이어에 포함되고, 그리고 상기 복수의 뉴런들 각각은 상기 패브릭의 복수의 프로세서 엘리먼트들에 걸쳐 분산 방식으로 매핑되는, 시스템. - 제25 항에 있어서,
상기 복수의 레이어들은 논리적 패브릭 파이프라인 스테이지들을 포함하는 논리적 패브릭 파이프라인으로서 동작하고, 각각의 논리적 패브릭 파이프라인 스테이지는 각각의 레이어에 대한 모든 패스들의 완료를 포함하고, 각각의 레이어에 대한 상기 완료는 동일한 시간량을 포함하는 시간 스텝을 소요하는, 시스템. - 제25 항에 있어서,
트레이닝 세트의 각각의 입력 샘플이 상기 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들이 상기 복수의 레이어들에 걸쳐 상기 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트되는, 시스템. - 제25 항에 있어서,
트레이닝 세트의 각각의 입력 샘플이 상기 복수의 레이어들에 걸쳐 적어도 제1 복수의 프로세서 엘리먼트들을 통해 스트리밍함에 따라, 뉴런 가중치들이 상기 복수의 레이어들에 걸쳐 상기 제1 복수의 프로세서 엘리먼트들에서 선택적으로 업데이트되고, 상기 스트리밍 및 업데이트는 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝 동안 진행되는, 시스템. - 제26 항에 있어서,
활성화들의 포워드 전파가 진행되는 동안 복수의 시간 스텝들에 걸쳐 각각의 시간 스텝 동안 제1 복수의 프로세서 엘리먼트들 내에서의 백워드 전파 데이터의 변화들에 대한 응답으로, 상기 제1 복수의 프로세서 엘리먼트들 내에서 상기 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하기 위한 수단을 더 포함하는, 시스템. - 제26 항에 있어서,
복수의 시간 스텝들에 걸쳐 각각의 시간 스텝마다 상기 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하기 위한 수단을 더 포함하는, 시스템. - 제27항 내지 제30항 중 어느 한 항에 있어서,
상기 선택적으로 업데이트하는 것은 연속적인 전파 구배 하강 프로세스(continuous propagation gradient descent process)를 따르는, 시스템. - 제24 항에 있어서,
트레이닝 세트를 집합적으로 포함하는 복수의 입력 샘플들 각각에 대해 상기 트레이닝 워크로드의 반복을 수행하기 위한 수단을 더 포함하는, 시스템. - 제32 항에 있어서,
상기 트레이닝 세트를 복수의 소위 미니-배치들로 파티셔닝하기 위한 수단을 더 포함하고, 그리고 상기 미리결정된 학습 규칙은 각각의 상기 미니-배치들의 각각의 입력 샘플에 대한 모든 패스들의 완료 후에 상기 적어도 하나의 부분-뉴런 가중치가 업데이트되는 것을 지정하는, 시스템. - 제33 항에 있어서,
상기 미리결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스를 따르는, 시스템. - 제33 항에 있어서,
상기 포워드 패스는, 제1 복수의 프로세서 엘리먼트들 내에서 미니-배치 학습이 진행되는 동안, 상기 제1 복수의 프로세서 엘리먼트들 내에 가중치 업데이트들을 통합하는, 시스템. - 제24 항에 있어서,
상기 스토리지는 상기 컴퓨트 엔진에 대해 로컬인 메모리에 포함되는, 시스템. - 제24 항에 있어서,
각각의 컴퓨트 엔진은 구배 누적, 포워드 부분 합들, 델타 부분 합들, 및 포워드 패스 활성화들을 위한 스토리지를 더 포함하는, 시스템. - 제32 항에 있어서,
각각의 입력 샘플에 대해, 상기 입력 샘플에 대응하는 상기 포워드 패스, 상기 델타 패스 및 상기 체인 패스의 완료에 대한 응답으로, 상기 미리결정된 학습 규칙에 따라 상기 적어도 하나의 부분-뉴런 가중치를 선택적으로 업데이트하기 위한 수단을 더 포함하는, 시스템. - 제38 항에 있어서,
상기 미리결정된 학습 규칙은 연속적인 전파 구배 하강 프로세스를 따르는, 시스템. - 제38 항에 있어서,
각각의 포워드 패스에 대해, 상기 적어도 하나의 부분-뉴런 가중치의 가장 최근의 선택적 업데이트에 의해 제공되는 가중치 정보를 선택적으로 사용하기 위한 수단을 더 포함하는, 시스템. - 제40 항에 있어서,
상기 트레이닝 워크로드의 이전 반복에 대응하는 상기 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트가 발생했는지 여부와 관계없이 상기 트레이닝 워크로드의 특정 반복의 포워드 패스를 개시하기 위한 수단을 더 포함하는, 시스템. - 제40 항에 있어서,
상기 트레이닝 워크로드의 이전 반복의 델타 패스가 시작되었는지 여부와 관계없이 상기 트레이닝 워크로드의 특정 반복의 포워드 패스를 선택적으로 개시하기 위한 수단을 더 포함하는, 시스템. - 제40 항에 있어서,
상기 컴퓨트 엔진들 중 적어도 하나에서, 상기 트레이닝 워크로드의 이전 반복에 대한 포워드 패스의 적어도 일부를 수행한 후에 그리고 상기 트레이닝 워크로드의 이전 반복에 대응하는 상기 적어도 하나의 부분-뉴런 가중치의 선택적 업데이트의 일부를 수행하기 전에, 상기 트레이닝 워크로드의 후속 반복에 대한 포워드 패스의 적어도 일부를 수행하기 위한 수단을 더 포함하는, 시스템. - 제40 항에 있어서,
제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 각각의 입력 샘플에 대해 상기 델타 패스 및 상기 체인 패스를 선택적으로 수행하기 위한 수단을 더 포함하는, 시스템. - 제44 항에 있어서,
상기 제1 부분-뉴런 가중치는 가장 최근의 선택적 업데이트에 의해 생성되는 부분-뉴런 가중치인, 시스템. - 제45 항에 있어서,
상기 재컴퓨팅된 활성화들은 컴퓨테이션들 간에 저장될 필요가 없어, 정해진 시스템 트레이닝 구성에 대해 요구되는 총 메모리를 감소시키는, 시스템. - 제40 항에 있어서,
각각의 컴퓨트 엘리먼트에서, 제1 부분-뉴런 가중치에 적어도 부분적으로 기반하여 재컴퓨팅된 활성화들에 적어도 부분적으로 기반하여 입력 샘플에 대해 델타 패스의 일부들 및 체인 패스의 일부들을 선택적으로 수행하기 위한 수단을 더 포함하는, 시스템.
Applications Claiming Priority (23)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762462640P | 2017-02-23 | 2017-02-23 | |
US62/462,640 | 2017-02-23 | ||
US201762486372P | 2017-04-17 | 2017-04-17 | |
US62/486,372 | 2017-04-17 | ||
US201762517949P | 2017-06-11 | 2017-06-11 | |
US62/517,949 | 2017-06-11 | ||
US201762520433P | 2017-06-15 | 2017-06-15 | |
US62/520,433 | 2017-06-15 | ||
US201762522065P | 2017-06-19 | 2017-06-19 | |
US201762522081P | 2017-06-19 | 2017-06-19 | |
US62/522,081 | 2017-06-19 | ||
US62/522,065 | 2017-06-19 | ||
US201762542657P | 2017-08-08 | 2017-08-08 | |
US201762542645P | 2017-08-08 | 2017-08-08 | |
US62/542,645 | 2017-08-08 | ||
US62/542,657 | 2017-08-08 | ||
US201762580207P | 2017-11-01 | 2017-11-01 | |
US62/580,207 | 2017-11-01 | ||
US201862628784P | 2018-02-09 | 2018-02-09 | |
US201862628773P | 2018-02-09 | 2018-02-09 | |
US62/628,784 | 2018-02-09 | ||
US62/628,773 | 2018-02-09 | ||
PCT/IB2018/051128 WO2018154494A1 (en) | 2017-02-23 | 2018-02-23 | Accelerated deep learning |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210014056A true KR20210014056A (ko) | 2021-02-08 |
KR102369209B1 KR102369209B1 (ko) | 2022-02-28 |
Family
ID=63253606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197027495A KR102369209B1 (ko) | 2017-02-23 | 2018-02-23 | 가속화된 심층 학습 |
Country Status (7)
Country | Link |
---|---|
US (3) | US11934945B2 (ko) |
EP (1) | EP3563307B1 (ko) |
JP (2) | JP6832050B2 (ko) |
KR (1) | KR102369209B1 (ko) |
CN (2) | CN113792847B (ko) |
CA (2) | CA3051990C (ko) |
WO (1) | WO2018154494A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220097161A (ko) * | 2020-12-31 | 2022-07-07 | 주식회사 딥엑스 | 인공신경망을 위한 방법 및 신경 프로세싱 유닛 |
KR20240125422A (ko) * | 2023-02-10 | 2024-08-19 | 주식회사 두다지 | 복수의 프로세싱 유닛들을 사용하여 뉴럴 네트워크 모델을 실행하기 위한 방법 및 장치 |
Families Citing this family (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018154494A1 (en) | 2017-02-23 | 2018-08-30 | Cerebras Systems Inc. | Accelerated deep learning |
US10101971B1 (en) | 2017-03-29 | 2018-10-16 | International Business Machines Corporation | Hardware device based software verification |
US10685294B2 (en) * | 2017-03-29 | 2020-06-16 | International Business Machines Corporation | Hardware device based software selection |
US10042614B1 (en) | 2017-03-29 | 2018-08-07 | International Business Machines Corporation | Hardware device based software generation |
US10387298B2 (en) | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
US11551028B2 (en) | 2017-04-04 | 2023-01-10 | Hailo Technologies Ltd. | Structured weight based sparsity in an artificial neural network |
US11544545B2 (en) | 2017-04-04 | 2023-01-03 | Hailo Technologies Ltd. | Structured activation based sparsity in an artificial neural network |
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 |
WO2018193353A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
EP3607503B1 (en) | 2017-04-17 | 2022-03-09 | Cerebras Systems Inc. | Task activating for accelerated deep learning |
US11488004B2 (en) | 2017-04-17 | 2022-11-01 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
US20190005377A1 (en) * | 2017-06-30 | 2019-01-03 | Advanced Micro Devices, Inc. | Artificial neural network reduction to reduce inference computation time |
EP3649618A1 (en) | 2017-07-03 | 2020-05-13 | Artomatix Ltd. | Systems and methods for providing non-parametric texture synthesis of arbitrary shape and/or material data in a unified framework |
GB2568230B (en) * | 2017-10-20 | 2020-06-03 | Graphcore Ltd | Processing in neural networks |
JP6794336B2 (ja) * | 2017-11-17 | 2020-12-02 | 株式会社東芝 | ニューラルネットワーク装置 |
US11961001B2 (en) | 2017-12-15 | 2024-04-16 | Nvidia Corporation | Parallel forward and backward propagation |
US11630997B2 (en) * | 2018-01-23 | 2023-04-18 | Samsung Electronics Co., Ltd. | Method and apparatus with bit-serial data processing of a neural network |
US10970080B2 (en) | 2018-02-08 | 2021-04-06 | Marvell Asia Pte, Ltd. | Systems and methods for programmable hardware architecture for machine learning |
CN108446096B (zh) * | 2018-03-21 | 2021-01-29 | 杭州中天微系统有限公司 | 数据计算系统 |
US20190303740A1 (en) * | 2018-03-30 | 2019-10-03 | International Business Machines Corporation | Block transfer of neuron output values through data memory for neurosynaptic processors |
US11468145B1 (en) | 2018-04-20 | 2022-10-11 | Perceive Corporation | Storage of input values within core of neural network inference circuit |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US10977338B1 (en) | 2018-04-20 | 2021-04-13 | Perceive Corporation | Reduced-area circuit for dot product computation |
US11210586B1 (en) | 2018-04-20 | 2021-12-28 | Perceive Corporation | Weight value decoder of neural network inference circuit |
US12093696B1 (en) * | 2018-04-20 | 2024-09-17 | Perceive Corporation | Bus for transporting output values of a neural network layer to cores specified by configuration data |
US11016801B1 (en) * | 2018-05-22 | 2021-05-25 | Marvell Asia Pte, Ltd. | Architecture to support color scheme-based synchronization for machine learning |
US10891136B1 (en) | 2018-05-22 | 2021-01-12 | Marvell Asia Pte, Ltd. | Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction |
US10929778B1 (en) * | 2018-05-22 | 2021-02-23 | Marvell Asia Pte, Ltd. | Address interleaving for machine learning |
US10929779B1 (en) * | 2018-05-22 | 2021-02-23 | Marvell Asia Pte, Ltd. | Architecture to support synchronization between core and inference engine for machine learning |
US10929760B1 (en) | 2018-05-22 | 2021-02-23 | Marvell Asia Pte, Ltd. | Architecture for table-based mathematical operations for inference acceleration in machine learning |
US10997510B1 (en) | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
WO2020044152A1 (en) | 2018-08-28 | 2020-03-05 | Cerebras Systems Inc. | Scaled compute fabric for accelerated deep learning |
WO2020044208A1 (en) | 2018-08-29 | 2020-03-05 | Cerebras Systems Inc. | Isa enhancements for accelerated deep learning |
US11328208B2 (en) | 2018-08-29 | 2022-05-10 | Cerebras Systems Inc. | Processor element redundancy for accelerated deep learning |
CN110874626B (zh) * | 2018-09-03 | 2023-07-18 | 华为技术有限公司 | 一种量化方法及装置 |
JP7003021B2 (ja) * | 2018-09-18 | 2022-01-20 | 株式会社東芝 | ニューラルネットワーク装置 |
CN109447257B (zh) * | 2018-09-18 | 2021-08-17 | 复旦大学 | 一种通道自组织的深度神经网络加速芯片的运算装置 |
US11157213B2 (en) * | 2018-10-12 | 2021-10-26 | Micron Technology, Inc. | Parallel memory access and computation in memory devices |
US12067481B2 (en) | 2018-10-14 | 2024-08-20 | International Business Machines Corporation | Array-integrated upstream/downstream router for circuit switched parallel connectivity |
EP4009183A1 (en) * | 2018-10-18 | 2022-06-08 | Shanghai Cambricon Information Technology Co., Ltd | Network-on-chip data processing method and device |
US11922314B1 (en) * | 2018-11-30 | 2024-03-05 | Ansys, Inc. | Systems and methods for building dynamic reduced order physical models |
US11610110B2 (en) | 2018-12-05 | 2023-03-21 | Bank Of America Corporation | De-conflicting data labeling in real time deep learning systems |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
PL3602379T3 (pl) | 2019-01-11 | 2021-08-02 | Advanced New Technologies Co., Ltd. | Rozproszona struktura ramowa szkoleniowa wielostronnego modelu bezpieczeństwa do ochrony prywatności |
CN109783412B (zh) * | 2019-01-18 | 2022-04-22 | 电子科技大学 | 一种深度强化学习加速训练的方法 |
US11347297B1 (en) | 2019-01-23 | 2022-05-31 | Perceive Corporation | Neural network inference circuit employing dynamic memory sleep |
US11748599B2 (en) * | 2019-02-21 | 2023-09-05 | Texas Instruments Incorporated | Super-tiling in neural network processing to enable analytics at lower memory speed |
WO2020172494A1 (en) | 2019-02-22 | 2020-08-27 | Neureality Ltd. | Directed and interconnected grid dataflow architecture |
CN111723900B (zh) * | 2019-03-18 | 2023-10-20 | 北京灵汐科技有限公司 | 一种基于众核处理器的神经网络的映射方法及计算设备 |
US10467142B1 (en) * | 2019-05-07 | 2019-11-05 | 12 Sigma Technologies | Enhancement of real-time response to request for detached data analytics |
US11941533B1 (en) | 2019-05-21 | 2024-03-26 | Perceive Corporation | Compiler for performing zero-channel removal |
US10997116B2 (en) * | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
CN112346782A (zh) * | 2019-08-07 | 2021-02-09 | 腾讯科技(深圳)有限公司 | 一种函数中数据处理方法、装置、设备及存储介质 |
WO2021074795A1 (en) * | 2019-10-16 | 2021-04-22 | Cerebras Systems Inc. | Dynamic routing for accelerated deep learning |
JP7346235B2 (ja) * | 2019-10-16 | 2023-09-19 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
WO2021074865A1 (en) * | 2019-10-16 | 2021-04-22 | Cerebras Systems Inc. | Basic wavelet filtering for accelerated deep learning |
US20230071424A1 (en) * | 2019-10-30 | 2023-03-09 | Cerebras Systems Inc. | Placement of compute and memory for accelerated deep learning |
US11687778B2 (en) | 2020-01-06 | 2023-06-27 | The Research Foundation For The State University Of New York | Fakecatcher: detection of synthetic portrait videos using biological signals |
US11620476B2 (en) * | 2020-05-14 | 2023-04-04 | Micron Technology, Inc. | Methods and apparatus for performing analytics on image data |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
KR102506794B1 (ko) * | 2020-07-17 | 2023-03-06 | 고려대학교 산학협력단 | 심층 신경망 학습 가속 장치 및 그 동작 방법 |
CN111860818B (zh) * | 2020-07-23 | 2022-11-08 | 哈尔滨工业大学(威海) | 基于智能芯片的som神经网络算法处理方法 |
US11635967B2 (en) | 2020-09-25 | 2023-04-25 | Advanced Micro Devices, Inc. | Vertical and horizontal broadcast of shared operands |
US11263077B1 (en) | 2020-09-29 | 2022-03-01 | Hailo Technologies Ltd. | Neural network intermediate results 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 |
US11811421B2 (en) | 2020-09-29 | 2023-11-07 | Hailo Technologies Ltd. | Weights 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 |
US11874900B2 (en) | 2020-09-29 | 2024-01-16 | Hailo Technologies Ltd. | Cluster interlayer safety mechanism in an artificial neural network processor |
US20220138524A1 (en) * | 2020-10-29 | 2022-05-05 | Microsoft Technology Licensing, Llc | Training neural networks based on dual pipeline architectures |
CN112329941B (zh) * | 2020-11-04 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 深度学习模型的更新方法及装置 |
JP2022075295A (ja) * | 2020-11-06 | 2022-05-18 | 富士通株式会社 | 機械学習プログラム、機械学習方法および情報処理装置 |
US11776273B1 (en) * | 2020-11-30 | 2023-10-03 | Amazon Technologies, Inc. | Ensemble of machine learning models for automatic scene change detection |
US11182221B1 (en) | 2020-12-18 | 2021-11-23 | SambaNova Systems, Inc. | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US11237880B1 (en) * | 2020-12-18 | 2022-02-01 | SambaNova Systems, Inc. | Dataflow all-reduce for reconfigurable processor systems |
US11392740B2 (en) | 2020-12-18 | 2022-07-19 | SambaNova Systems, Inc. | Dataflow function offload to reconfigurable processors |
US11782760B2 (en) | 2021-02-25 | 2023-10-10 | SambaNova Systems, Inc. | Time-multiplexed use of reconfigurable hardware |
US11200096B1 (en) | 2021-03-26 | 2021-12-14 | SambaNova Systems, Inc. | Resource allocation for reconfigurable processors |
CN113065647B (zh) * | 2021-03-30 | 2023-04-25 | 西安电子科技大学 | 加速神经网络的计算-存储通信系统及通信方法 |
US11748988B1 (en) | 2021-04-21 | 2023-09-05 | Amazon Technologies, Inc. | Shot contras five self-supervised learning of a plurality of machine learning models for video analysis applications |
US11769079B2 (en) | 2021-04-30 | 2023-09-26 | Samsung Electronics Co., Ltd. | Method and device for decoding data |
US11777812B2 (en) * | 2021-06-25 | 2023-10-03 | Qualcomm Technologies, Inc. | Zone-based federated learning |
EP4202767A1 (en) * | 2021-12-22 | 2023-06-28 | GrAl Matter Labs S.A.S. | Neuron core synchronization |
US12040967B2 (en) | 2022-01-25 | 2024-07-16 | Bank Of America Corporation | System and method for splitting data elements for data communication based on transformation types implemented on the data elements at different devices |
US20230251792A1 (en) * | 2022-02-04 | 2023-08-10 | Western Digital Technologies, Inc. | Memory Device Based Accelerated Deep-Learning System |
CN114637388A (zh) * | 2022-03-18 | 2022-06-17 | 中国科学院计算技术研究所 | 面向数据流处理器的功耗控制方法及装置 |
KR102625797B1 (ko) * | 2023-03-06 | 2024-01-16 | 주식회사 모레 | 파이프라인 병렬 처리 컴파일링 방법 및 장치 |
CN117273115B (zh) * | 2023-11-24 | 2024-03-29 | 上海燧原科技股份有限公司 | 一种反向计算图的静态生成方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160379115A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Deep neural network processing on hardware accelerators with stacked memory |
Family Cites Families (199)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0325384B1 (en) | 1988-01-15 | 1993-09-29 | Quantel Limited | Data processing and communication |
JPH03175548A (ja) | 1989-12-04 | 1991-07-30 | Fujitsu Ltd | マイクロプロセッサ及びアドレス制御方式 |
US5226092A (en) * | 1991-06-28 | 1993-07-06 | Digital Equipment Corporation | Method and apparatus for learning in a neural network |
JP3219826B2 (ja) | 1992-02-21 | 2001-10-15 | 日本電気株式会社 | 情報処理装置 |
JPH05265996A (ja) | 1992-03-24 | 1993-10-15 | Nippon Telegr & Teleph Corp <Ntt> | ニューロコンピュータ |
JPH0668056A (ja) * | 1992-08-20 | 1994-03-11 | Hitachi Ltd | 並列計算機システム |
JPH06110864A (ja) | 1992-09-30 | 1994-04-22 | Sony Corp | 学習処理装置 |
JPH06195322A (ja) * | 1992-10-29 | 1994-07-15 | Hitachi Ltd | 汎用型ニューロコンピュータとして用いられる情報処理装置 |
CA2129882A1 (en) | 1993-08-12 | 1995-02-13 | Soheil Shams | Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same |
JP3384601B2 (ja) | 1994-02-23 | 2003-03-10 | 三洋電機株式会社 | 並列処理計算機 |
US5710549A (en) | 1994-09-30 | 1998-01-20 | Tandem Computers Incorporated | Routing arbitration for shared resources |
US5835024A (en) | 1995-06-07 | 1998-11-10 | International Business Machines Corporation | Multi-stage interconnection network with selectable function switching apparatus |
US6055618A (en) | 1995-10-31 | 2000-04-25 | Cray Research, Inc. | Virtual maintenance network in multiprocessing system having a non-flow controlled virtual maintenance channel |
US5870396A (en) | 1996-12-31 | 1999-02-09 | Northern Telecom Limited | Output queueing in a broadband multi-media satellite and terrestrial communications network |
US6285679B1 (en) | 1997-08-22 | 2001-09-04 | Avici Systems, Inc. | Methods and apparatus for event-driven routing |
US6212627B1 (en) | 1998-10-12 | 2001-04-03 | Intel Corporation | System for converting packed integer data into packed floating point data in reduced time |
US6246615B1 (en) | 1998-12-23 | 2001-06-12 | Micron Technology, Inc. | Redundancy mapping in a multichip semiconductor package |
JP2000278316A (ja) | 1999-03-23 | 2000-10-06 | Toshiba Microelectronics Corp | データ切替装置 |
US6542986B1 (en) | 1999-11-09 | 2003-04-01 | Advanced Micro Devices, Inc. | Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor |
GB0019341D0 (en) | 2000-08-08 | 2000-09-27 | Easics Nv | System-on-chip solutions |
ATE479147T1 (de) | 2001-02-24 | 2010-09-15 | Ibm | Neuartiger massivparalleler supercomputer |
US20020141427A1 (en) | 2001-03-29 | 2002-10-03 | Mcalpine Gary L. | Method and apparatus for a traffic optimizing multi-stage switch fabric network |
JP4542722B2 (ja) | 2001-04-25 | 2010-09-15 | 富士通株式会社 | 命令処理方法 |
US7293002B2 (en) | 2001-06-19 | 2007-11-06 | Ohio University | Self-organizing data driven learning hardware with local interconnections |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
US7403525B2 (en) | 2002-05-15 | 2008-07-22 | Broadcom Corporation | Efficient routing of packet data in a scalable processing resource |
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
US7402897B2 (en) | 2002-08-08 | 2008-07-22 | Elm Technology Corporation | Vertical system integration |
CN1675619A (zh) | 2002-08-16 | 2005-09-28 | 皇家飞利浦电子股份有限公司 | 允述在超长指令字处理器中处理可变长指令的设备、方法和编译器 |
US20040115995A1 (en) | 2002-11-25 | 2004-06-17 | Sanders Samuel Sidney | Circuit array module |
US7299338B2 (en) | 2002-12-04 | 2007-11-20 | Agere Systems Inc. | Vector indexed memory unit and method |
ITRM20030354A1 (it) | 2003-07-17 | 2005-01-18 | Micron Technology Inc | Unita' di controllo per dispositivo di memoria. |
JP3984209B2 (ja) | 2003-07-31 | 2007-10-03 | 株式会社東芝 | 半導体記憶装置 |
US7701957B1 (en) | 2004-01-20 | 2010-04-20 | Integrated Device Technology, Inc. | Method and apparatus for switching, merging, and demerging data between data communication locations |
US7453810B2 (en) | 2004-07-27 | 2008-11-18 | Alcatel Lucent | Method and apparatus for closed loop, out-of-band backpressure mechanism |
US7277990B2 (en) | 2004-09-30 | 2007-10-02 | Sanjeev Jain | Method and apparatus providing efficient queue descriptor memory access |
US7493474B1 (en) | 2004-11-10 | 2009-02-17 | Altera Corporation | Methods and apparatus for transforming, loading, and executing super-set instructions |
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7671398B2 (en) | 2005-02-23 | 2010-03-02 | Tran Bao Q | Nano memory, light, energy, antenna and strand-based systems and methods |
US8443169B2 (en) | 2005-03-28 | 2013-05-14 | Gerald George Pechanek | Interconnection network connecting operation-configurable nodes according to one or more levels of adjacency in multiple dimensions of communication in a multi-processor and a neural processor |
US7565657B1 (en) | 2005-04-19 | 2009-07-21 | Sandia Corporation | Allocating application to group of consecutive processors in fault-tolerant deadlock-free routing path defined by routers obeying same rules for path selection |
US8275976B2 (en) | 2005-08-29 | 2012-09-25 | The Invention Science Fund I, Llc | Hierarchical instruction scheduler facilitating instruction replay |
US20070058557A1 (en) | 2005-09-15 | 2007-03-15 | Interdigital Technology Corporation | Method and apparatus for scheduling data transmissions based on a traffic data pattern model |
US9009660B1 (en) | 2005-11-29 | 2015-04-14 | Tilera Corporation | Programming in a multiprocessor environment |
JP2009524170A (ja) | 2006-01-24 | 2009-06-25 | マイクロラボ ピーティーワイ エルティーディー | 複雑な層状材料及びデバイスを低コストで製造する方法 |
US9542642B2 (en) | 2006-04-06 | 2017-01-10 | Samuel F. Wood | Packet data neural network system and method |
US8194690B1 (en) | 2006-05-24 | 2012-06-05 | Tilera Corporation | Packet processing in a parallel processing environment |
US8390325B2 (en) | 2006-06-21 | 2013-03-05 | Element Cxi, Llc | Reconfigurable integrated circuit architecture with on-chip configuration and reconfiguration |
US8010966B2 (en) | 2006-09-27 | 2011-08-30 | Cisco Technology, Inc. | Multi-threaded processing using path locks |
US7773616B2 (en) | 2006-11-08 | 2010-08-10 | Sicortex, Inc. | System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel |
US8103606B2 (en) * | 2006-12-08 | 2012-01-24 | Medhat Moussa | Architecture, system and method for artificial neural network implementation |
US7688725B2 (en) | 2007-02-07 | 2010-03-30 | King Fahd University Of Petroleum & Minerals | Content-aware congestion control system |
CN100591047C (zh) | 2007-02-10 | 2010-02-17 | 华为技术有限公司 | 一种多级交换网的反压方法、系统及交换节点 |
US8752032B2 (en) | 2007-02-23 | 2014-06-10 | Irdeto Canada Corporation | System and method of interlocking to protect software-mediated program and device behaviours |
WO2008131802A1 (en) | 2007-05-01 | 2008-11-06 | Telefonaktiebolaget Lm Ericsson (Publ) | All optical processing circuit for conflict resolution and switch configuration in a 2x2 optical node |
JP5012232B2 (ja) | 2007-06-08 | 2012-08-29 | 富士通株式会社 | 光スイッチ装置 |
CN101354694B (zh) | 2007-07-26 | 2010-10-13 | 上海红神信息技术有限公司 | 基于mpu架构的超高扩展超级计算系统 |
US8526422B2 (en) | 2007-11-27 | 2013-09-03 | International Business Machines Corporation | Network on chip with partitions |
US7873701B2 (en) | 2007-11-27 | 2011-01-18 | International Business Machines Corporation | Network on chip with partitions |
US8862706B2 (en) | 2007-12-14 | 2014-10-14 | Nant Holdings Ip, Llc | Hybrid transport—application network fabric apparatus |
US8161209B2 (en) | 2008-03-31 | 2012-04-17 | Advanced Micro Devices, Inc. | Peer-to-peer special purpose processor architecture and method |
US8245240B2 (en) | 2008-04-04 | 2012-08-14 | Intel Corporation | Extended dynamic optimization of connection establishment and message progress processing in a multi-fabric message passing interface implementation |
TW200951752A (en) | 2008-06-06 | 2009-12-16 | Inotera Memories Inc | A method for prognostic maintenance in semiconductor manufacturing |
US20110213950A1 (en) | 2008-06-11 | 2011-09-01 | John George Mathieson | System and Method for Power Optimization |
GB0811057D0 (en) | 2008-06-17 | 2008-07-23 | Univ Ulster | Artificial neural network architecture |
US8103858B2 (en) | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US8151088B1 (en) | 2008-07-08 | 2012-04-03 | Tilera Corporation | Configuring routing in mesh networks |
US8311057B1 (en) | 2008-08-05 | 2012-11-13 | Xilinx, Inc. | Managing formatting of packets of a communication protocol |
US8213308B2 (en) | 2008-09-11 | 2012-07-03 | Juniper Networks, Inc. | Methods and apparatus for defining a flow control signal related to a transmit queue |
US8423983B2 (en) | 2008-10-14 | 2013-04-16 | International Business Machines Corporation | Generating and executing programs for a floating point single instruction multiple data instruction set architecture |
EP2996035A1 (en) | 2008-10-15 | 2016-03-16 | Hyperion Core, Inc. | Data processing device |
US7814303B2 (en) * | 2008-10-23 | 2010-10-12 | International Business Machines Corporation | Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively |
EP2359542B1 (en) | 2008-12-19 | 2014-03-26 | Telefonaktiebolaget L M Ericsson (PUBL) | A method and apparatus for routing data |
US20110022821A1 (en) | 2009-03-09 | 2011-01-27 | Yunsi Fei | System and Methods to Improve Efficiency of VLIW Processors |
US8392661B1 (en) | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
US8396119B1 (en) | 2009-09-30 | 2013-03-12 | Ambarella, Inc. | Data sample compression and decompression using randomized quantization bins |
US8583896B2 (en) | 2009-11-13 | 2013-11-12 | Nec Laboratories America, Inc. | Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain |
US8559307B2 (en) | 2009-12-28 | 2013-10-15 | Empire Technology Development Llc | Routing packets in on-chip networks |
CN101778049A (zh) | 2010-03-04 | 2010-07-14 | 南京大学 | 包-电路交换片上路由器及其传输方法 |
US8379659B2 (en) | 2010-03-29 | 2013-02-19 | Intel Corporation | Performance and traffic aware heterogeneous interconnection network |
US9015448B2 (en) | 2010-06-17 | 2015-04-21 | Advanced Micro Devices, Inc. | Message broadcast with router bypassing |
US9065773B2 (en) | 2010-06-22 | 2015-06-23 | Juniper Networks, Inc. | Methods and apparatus for virtual channel flow control associated with a switch fabric |
US8880866B2 (en) | 2010-10-15 | 2014-11-04 | Coherent Logix, Incorporated | Method and system for disabling communication paths in a multiprocessor fabric by setting register values to disable the communication paths specified by a configuration |
US8738860B1 (en) | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US8745626B1 (en) | 2012-12-17 | 2014-06-03 | Throughputer, Inc. | Scheduling application instances to configurable processing cores based on application requirements and resource specification |
US8843425B2 (en) | 2011-07-29 | 2014-09-23 | International Business Machines Corporation | Hierarchical routing for two-way information flow and structural plasticity in neural networks |
US8712941B2 (en) | 2011-09-21 | 2014-04-29 | Brain Corporation | Elementary network description for efficient link between neuronal models and neuromorphic systems |
WO2013032753A2 (en) | 2011-08-26 | 2013-03-07 | The Trustees Of Columbia University In The City Of New York | Systems and methods for switched-inductor integrated voltage regulators |
US20140211630A1 (en) | 2011-09-28 | 2014-07-31 | Vincent E. Cavanna | Managing packet flow in a switch faric |
US10078515B2 (en) | 2011-10-03 | 2018-09-18 | International Business Machines Corporation | Tracking operand liveness information in a computer system and performing function based on the liveness information |
US8909690B2 (en) | 2011-12-13 | 2014-12-09 | International Business Machines Corporation | Performing arithmetic operations using both large and small floating point values |
KR101197103B1 (ko) | 2012-03-09 | 2012-11-07 | (주) 지솔루션 | 위성압축영상 분할처리 장치 및 그 방법 |
US9390461B1 (en) | 2012-05-08 | 2016-07-12 | Apple Inc. | Graphics hardware mode controls |
JP2013251715A (ja) | 2012-05-31 | 2013-12-12 | Toshiba Corp | ルータ及びメニーコアシステム |
US9563841B2 (en) * | 2012-07-31 | 2017-02-07 | International Business Machines Corporation | Globally asynchronous and locally synchronous (GALS) neuromorphic network |
US9569279B2 (en) | 2012-07-31 | 2017-02-14 | Nvidia Corporation | Heterogeneous multiprocessor design for power-efficient and area-efficient computing |
US9507746B2 (en) | 2012-10-22 | 2016-11-29 | Intel Corporation | Control messaging in multislot link layer flit |
US9424213B2 (en) | 2012-11-21 | 2016-08-23 | Coherent Logix, Incorporated | Processing system with interspersed processors DMA-FIFO |
US9373073B2 (en) | 2012-12-21 | 2016-06-21 | International Business Machines Corporation | Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a universal substrate of adaptation |
WO2014131707A1 (en) | 2013-02-27 | 2014-09-04 | Nec Europe Ltd. | A method for operating a network |
US9471388B2 (en) | 2013-03-14 | 2016-10-18 | Altera Corporation | Mapping network applications to a hybrid programmable many-core device |
US9086813B2 (en) | 2013-03-15 | 2015-07-21 | Qualcomm Incorporated | Method and apparatus to save and restore system memory management unit (MMU) contexts |
EP2796987A1 (en) | 2013-04-26 | 2014-10-29 | EM Microelectronic-Marin SA | Random number generator |
US9069602B2 (en) | 2013-09-25 | 2015-06-30 | Netronome Systems, Incorporated | Transactional memory that supports put and get ring commands |
FR3011659B1 (fr) | 2013-10-04 | 2015-10-16 | Commissariat Energie Atomique | Circuit electronique, notamment apte a l'implementation d'un reseau de neurones, et systeme neuronal |
US9924490B2 (en) * | 2013-10-09 | 2018-03-20 | International Business Machines Corporation | Scaling multi-core neurosynaptic networks across chip boundaries |
US9563599B2 (en) | 2013-11-04 | 2017-02-07 | Lewis Rhodes Labs, Inc. | Computing architecture for operating on sequential data |
US10044612B2 (en) | 2013-11-06 | 2018-08-07 | Citrix Systems, Inc. | Systems and methods for port allocation |
US9699079B2 (en) | 2013-12-30 | 2017-07-04 | Netspeed Systems | Streaming bridge design with host interfaces and network on chip (NoC) layers |
US9614745B2 (en) | 2014-01-09 | 2017-04-04 | Citrix Systems, Inc. | Systems and methods for cloud-based probing and diagnostics |
JP6721911B2 (ja) | 2014-02-20 | 2020-07-15 | スティルウォーター スーパーコンピューティング,インク. | アフィン従属による単一割当プログラムを実行するための実行エンジン |
US20150242741A1 (en) | 2014-02-21 | 2015-08-27 | Qualcomm Incorporated | In situ neural network co-processing |
US9348557B1 (en) | 2014-02-21 | 2016-05-24 | Altera Corporation | Fused floating point datapath with correct rounding |
US10282465B2 (en) | 2014-02-25 | 2019-05-07 | Intel Corporation | Systems, apparatuses, and methods for deep learning of feature detectors with sparse coding |
US20150324690A1 (en) | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
US10650301B2 (en) | 2014-05-08 | 2020-05-12 | International Business Machines Corporation | Utilizing a distributed and parallel set of neurosynaptic core circuits for neuronal computation and non-neuronal computation |
US9330433B2 (en) | 2014-06-30 | 2016-05-03 | Intel Corporation | Data distribution fabric in scalable GPUs |
US9785565B2 (en) | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
US20160019061A1 (en) | 2014-07-21 | 2016-01-21 | Qualcomm Incorporated | MANAGING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA |
US10528682B2 (en) | 2014-09-04 | 2020-01-07 | Netspeed Systems | Automatic performance characterization of a network-on-chip (NOC) interconnect |
ES2738319T3 (es) * | 2014-09-12 | 2020-01-21 | Microsoft Technology Licensing Llc | Sistema informático para entrenar redes neuronales |
WO2016054441A1 (en) * | 2014-10-01 | 2016-04-07 | Thalchemy Corporation | Efficient and scalable systems for calculating neural network connectivity in an event-driven way |
US10120716B2 (en) | 2014-10-02 | 2018-11-06 | International Business Machines Corporation | Task pooling and work affinity in data processing |
EP3035204B1 (en) | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
US9961019B2 (en) | 2014-12-22 | 2018-05-01 | Intel Corporation | Adaptively switched network-on-chip |
GB2546603B (en) | 2015-01-16 | 2019-05-08 | Imagination Tech Ltd | Arbiter verification |
US9568960B2 (en) | 2015-02-20 | 2017-02-14 | International Business Machines Corporation | Supercomputer using wafer scale integration |
KR20160112186A (ko) * | 2015-03-18 | 2016-09-28 | 삼성전자주식회사 | 뉴럴 네트워크에서 이벤트에 기반한 학습 방법 및 장치 |
US9747218B2 (en) | 2015-03-20 | 2017-08-29 | Mill Computing, Inc. | CPU security mechanisms employing thread-specific protection domains |
US9729460B2 (en) | 2015-04-13 | 2017-08-08 | Arista Networks, Inc. | Method and system for managing port bandwidth in network devices |
FR3035243B1 (fr) | 2015-04-20 | 2018-06-29 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique |
US10325202B2 (en) * | 2015-04-28 | 2019-06-18 | Qualcomm Incorporated | Incorporating top-down information in deep neural networks via the bias term |
US10346170B2 (en) | 2015-05-05 | 2019-07-09 | Intel Corporation | Performing partial register write operations in a processor |
IL238690B (en) | 2015-05-07 | 2019-07-31 | Mellanox Technologies Ltd | Network-based computational accelerator |
US10262259B2 (en) | 2015-05-08 | 2019-04-16 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
US10192162B2 (en) | 2015-05-21 | 2019-01-29 | Google Llc | Vector computation unit in a neural network processor |
US10140572B2 (en) | 2015-06-25 | 2018-11-27 | Microsoft Technology Licensing, Llc | Memory bandwidth management for deep learning applications |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US20160379109A1 (en) | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
US10452995B2 (en) | 2015-06-29 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning classification on hardware accelerators with stacked memory |
US11244225B2 (en) | 2015-07-10 | 2022-02-08 | Samsung Electronics Co., Ltd. | Neural network processor configurable using macro instructions |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
JP6629978B2 (ja) | 2015-09-28 | 2020-01-15 | デパートメント 13, インコーポレイテッドDepartment 13, Inc. | 無人航空機の侵入検出および対策 |
US9817661B2 (en) | 2015-10-07 | 2017-11-14 | Arm Limited | Floating point number rounding |
US10614354B2 (en) | 2015-10-07 | 2020-04-07 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
US10353860B2 (en) | 2015-10-08 | 2019-07-16 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with neural processing units dynamically configurable to process multiple data sizes |
US11165717B2 (en) | 2015-10-26 | 2021-11-02 | Western Digital Technologies, Inc. | Fabric interconnection for memory banks based on network-on-chip methodology |
US10489152B2 (en) | 2016-01-28 | 2019-11-26 | International Business Machines Corporation | Stochastic rounding floating-point add instruction using entropy from a register |
WO2017129325A1 (en) | 2016-01-29 | 2017-08-03 | Fotonation Limited | A convolutional neural network |
KR102420897B1 (ko) | 2016-03-17 | 2022-07-18 | 에스케이하이닉스 주식회사 | 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법 |
US10142258B2 (en) | 2016-04-08 | 2018-11-27 | Advanced Micro Devices, Inc. | Methods and apparatus for processing in a network on chip (NOC) |
US9910673B2 (en) | 2016-04-19 | 2018-03-06 | Xiaolin Wang | Reconfigurable microprocessor hardware architecture |
CN113163562A (zh) | 2016-04-22 | 2021-07-23 | 纳米格有限公司 | 用于连接和控制可配置照明单元的系统和方法 |
GB2549933B (en) | 2016-04-27 | 2018-08-01 | Imagination Tech Ltd | Verification of hardware designs to implement floating point power functions |
CN109328361B (zh) | 2016-06-14 | 2020-03-27 | 多伦多大学管理委员会 | 用于深度神经网络的加速器 |
US10015072B2 (en) | 2016-07-07 | 2018-07-03 | Netscout Systems, Inc. | Consolidation of network test automation tools |
US10621486B2 (en) | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
US11064019B2 (en) | 2016-09-14 | 2021-07-13 | Advanced Micro Devices, Inc. | Dynamic configuration of inter-chip and on-chip networks in cloud computing system |
US10157059B2 (en) | 2016-09-29 | 2018-12-18 | Intel Corporation | Instruction and logic for early underflow detection and rounder bypass |
US10607136B2 (en) | 2017-08-03 | 2020-03-31 | Xcelsis Corporation | Time borrowing between layers of a three dimensional chip stack |
US10991675B2 (en) | 2016-10-10 | 2021-04-27 | Monolithic 3D Inc. | 3D semiconductor device and structure |
US10127043B2 (en) | 2016-10-19 | 2018-11-13 | Rex Computing, Inc. | Implementing conflict-free instructions for concurrent operation on a processor |
US10355975B2 (en) | 2016-10-19 | 2019-07-16 | Rex Computing, Inc. | Latency guaranteed network on chip |
US10700968B2 (en) | 2016-10-19 | 2020-06-30 | Rex Computing, Inc. | Optimized function assignment in a multi-core processor |
US10528321B2 (en) | 2016-12-07 | 2020-01-07 | Microsoft Technology Licensing, Llc | Block floating point for neural network implementations |
US10871964B2 (en) | 2016-12-29 | 2020-12-22 | Qualcomm Incorporated | Architecture for sparse neural network acceleration |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10565492B2 (en) | 2016-12-31 | 2020-02-18 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with segmentable array width rotator |
US10402527B2 (en) | 2017-01-04 | 2019-09-03 | Stmicroelectronics S.R.L. | Reconfigurable interconnect |
US10810492B2 (en) | 2017-01-27 | 2020-10-20 | Hewlett Packard Enterprise Development Lp | Memory side acceleration for deep learning parameter updates |
US10096134B2 (en) | 2017-02-01 | 2018-10-09 | Nvidia Corporation | Data compaction and memory bandwidth reduction for sparse neural networks |
WO2018154494A1 (en) | 2017-02-23 | 2018-08-30 | Cerebras Systems Inc. | Accelerated deep learning |
US10256198B2 (en) | 2017-03-23 | 2019-04-09 | Intel Corporation | Warpage control for microelectronics packages |
ES2930550T3 (es) | 2017-04-07 | 2022-12-16 | Intel Corp | Métodos y aparatos para canalización de ejecución de red de aprendizaje profundo en plataforma multiprocesador |
US10637744B2 (en) | 2017-04-12 | 2020-04-28 | Battelle Memorial Institute | Complementary workflows for identifying one-hop network behavior and multi-hop network dependencies |
WO2018189728A1 (en) | 2017-04-14 | 2018-10-18 | Cerebras Systems Inc. | Floating-point unit stochastic rounding for accelerated deep learning |
WO2018193353A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
EP3607503B1 (en) | 2017-04-17 | 2022-03-09 | Cerebras Systems Inc. | Task activating for accelerated deep learning |
US20180322386A1 (en) * | 2017-05-05 | 2018-11-08 | Intel Corporation | Fine-grain compute communication execution for deep learning frameworks |
US11488008B2 (en) * | 2017-05-05 | 2022-11-01 | Intel Corporation | Hardware implemented point to point communication primitives for machine learning |
CN111149166B (zh) | 2017-07-30 | 2024-01-09 | 纽罗布拉德有限公司 | 基于存储器的分布式处理器架构 |
US10963780B2 (en) | 2017-08-24 | 2021-03-30 | Google Llc | Yield improvements for three-dimensionally stacked neural network accelerators |
KR102452953B1 (ko) | 2017-10-30 | 2022-10-11 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 |
US12086705B2 (en) * | 2017-12-29 | 2024-09-10 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US11373088B2 (en) * | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
US11461579B2 (en) | 2018-02-08 | 2022-10-04 | Western Digital Technologies, Inc. | Configurable neural network engine for convolutional filter sizes |
KR102555057B1 (ko) | 2018-05-09 | 2023-07-12 | 에스케이하이닉스 주식회사 | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 |
US10289816B1 (en) | 2018-06-08 | 2019-05-14 | Gsfm Llc | Methods, systems, and devices for an encrypted and obfuscated algorithm in a computing environment |
US11062202B2 (en) | 2018-07-25 | 2021-07-13 | Cerebras Systems Inc. | Numerical representation for neural networks |
WO2020044152A1 (en) | 2018-08-28 | 2020-03-05 | Cerebras Systems Inc. | Scaled compute fabric for accelerated deep learning |
WO2020044208A1 (en) | 2018-08-29 | 2020-03-05 | Cerebras Systems Inc. | Isa enhancements for accelerated deep learning |
US11328208B2 (en) | 2018-08-29 | 2022-05-10 | Cerebras Systems Inc. | Processor element redundancy for accelerated deep learning |
US10802942B2 (en) | 2018-12-28 | 2020-10-13 | Intel Corporation | Methods and apparatus to detect anomalies of a monitored system |
US11360667B2 (en) | 2019-09-09 | 2022-06-14 | Stmicroelectronics S.R.L. | Tagged memory operated at lower vmin in error tolerant system |
US20230071424A1 (en) | 2019-10-30 | 2023-03-09 | Cerebras Systems Inc. | Placement of compute and memory for accelerated deep learning |
WO2022034542A1 (en) | 2020-08-14 | 2022-02-17 | Cerebras Systems Inc. | Weight sparsity techniques for accelerated deep learning |
-
2018
- 2018-02-23 WO PCT/IB2018/051128 patent/WO2018154494A1/en active Search and Examination
- 2018-02-23 US US16/481,016 patent/US11934945B2/en active Active
- 2018-02-23 US US15/903,340 patent/US10699189B2/en active Active
- 2018-02-23 CA CA3051990A patent/CA3051990C/en active Active
- 2018-02-23 KR KR1020197027495A patent/KR102369209B1/ko active IP Right Grant
- 2018-02-23 CA CA3108151A patent/CA3108151C/en active Active
- 2018-02-23 CN CN202110540433.6A patent/CN113792847B/zh active Active
- 2018-02-23 CN CN201880013504.3A patent/CN110869946B/zh active Active
- 2018-02-23 JP JP2019546879A patent/JP6832050B2/ja active Active
- 2018-02-23 EP EP18756971.0A patent/EP3563307B1/en active Active
-
2020
- 2020-06-24 US US16/911,203 patent/US11580394B2/en active Active
-
2021
- 2021-01-30 JP JP2021014029A patent/JP2021082317A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160379115A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Deep neural network processing on hardware accelerators with stacked memory |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220097161A (ko) * | 2020-12-31 | 2022-07-07 | 주식회사 딥엑스 | 인공신경망을 위한 방법 및 신경 프로세싱 유닛 |
KR20240125422A (ko) * | 2023-02-10 | 2024-08-19 | 주식회사 두다지 | 복수의 프로세싱 유닛들을 사용하여 뉴럴 네트워크 모델을 실행하기 위한 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
CA3108151C (en) | 2024-02-20 |
JP2021082317A (ja) | 2021-05-27 |
CN113792847A (zh) | 2021-12-14 |
JP6832050B2 (ja) | 2021-02-24 |
EP3563307B1 (en) | 2023-04-12 |
US20180314941A1 (en) | 2018-11-01 |
CN110869946B (zh) | 2021-05-11 |
CN110869946A (zh) | 2020-03-06 |
JP2020508532A (ja) | 2020-03-19 |
US11934945B2 (en) | 2024-03-19 |
US20200005142A1 (en) | 2020-01-02 |
US10699189B2 (en) | 2020-06-30 |
CA3108151A1 (en) | 2018-08-30 |
EP3563307A4 (en) | 2020-01-22 |
US20210142167A1 (en) | 2021-05-13 |
US11580394B2 (en) | 2023-02-14 |
CA3051990A1 (en) | 2018-08-30 |
EP3563307A1 (en) | 2019-11-06 |
CN113792847B (zh) | 2024-03-08 |
KR102369209B1 (ko) | 2022-02-28 |
CA3051990C (en) | 2021-03-23 |
WO2018154494A1 (en) | 2018-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102369209B1 (ko) | 가속화된 심층 학습 | |
US20210097376A1 (en) | Backpressure for Accelerated Deep Learning | |
EP3607504B1 (en) | Neuron smearing for accelerated deep learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |