KR20220035426A - 칩렛-통합 기계 학습 가속기 - Google Patents

칩렛-통합 기계 학습 가속기 Download PDF

Info

Publication number
KR20220035426A
KR20220035426A KR1020227004629A KR20227004629A KR20220035426A KR 20220035426 A KR20220035426 A KR 20220035426A KR 1020227004629 A KR1020227004629 A KR 1020227004629A KR 20227004629 A KR20227004629 A KR 20227004629A KR 20220035426 A KR20220035426 A KR 20220035426A
Authority
KR
South Korea
Prior art keywords
chiplet
machine learning
memory
cache
processing core
Prior art date
Application number
KR1020227004629A
Other languages
English (en)
Inventor
스와프닐 피. 사크하르셰테
앤드류 에스. 포미아노우스키
맥심 브이. 카자코프
비닛 고엘
밀린드 엔. 넴레카
스카일러 조나단 살레
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20220035426A publication Critical patent/KR20220035426A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Neurology (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

기계 학습 동작을 수행하기 위한 기술이 제공된다. 기술은 제1 칩렛의 제1 부분을 캐시로서 구성하는 단계; 제1 부분을 통해 캐싱 동작을 수행하는 단계; 칩렛의 제1 부분의 적어도 제1 하위 부분을 직접 액세스 가능 메모리로서 구성하는 단계; 및 제1 칩렛 내의 기계 학습 가속기에 의해 제1 하위 부분으로 기계 학습 동작을 수행하는 단계를 포함한다.

Description

칩렛-통합 기계 학습 가속기
관련 출원에 대한 상호 참조
본 출원은 미국 가출원 제62/877,241호(출원일: 2019년 7월 22일, 발명의 명칭: "CHIPLET APPROACH FOR COUPLING GPU WITH MACHINE LEARNING ACCELERATION AT HIGH POWER EFFICIENCY")에 대해 우선권을 주장하고, 이는 본 명세서에서 완전히 명시된 것처럼 참조에 의해 본 명세서에 원용된다. 본 출원은 미국 가출원 제62/877,249호(출원일: 2019년 7월 22일, 발명의 명칭: "HIGH BW INTER-CONNECTED CHIPLETS AND GPU FOR HIGH PERFORMANCE GAMING AND MACHINE LEARNING WORKLOADS")에 대해 우선권을 주장하고, 이는 본 명세서에 완전히 명시된 것처럼 참조에 의해 본 명세서에 원용된다. 본 출원은 미국 특허 출원 제16/933,863호(출원일: 2020년 7월 20일, 발명의 명칭: "CHIPLET-INTEGRATED MACHINE LEARNING ACCELERATORS")에 대해 우선권을 주장하고, 이는 본 명세서에서 완전히 명시된 것처럼 참조에 의해 본 명세서에 원용된다.
기계 학습은 빠르게 발전하는 분야이다. 훈련 및 추론과 같은 기계 학습 동작을 위하여 하드웨어에 대한 개선이 지속적으로 이루어지고 있다.
첨부 도면과 함께 예로서 주어진 다음의 설명으로부터 보다 상세한 이해가 얻어질 수 있다:
도 1은 본 개시내용의 하나 이상의 특징이 구현될 수 있는 예시적인 디바이스의 블록도;
도 2는 일례에 따른 도 1의 디바이스의 세부 사항을 예시하는 도면;
도 3은 도 2에 예시되어 있는 그래픽 처리 파이프라인의 추가 세부 사항을 도시하는 블록도;
도 4는 일례에 따른 캐시/기계 학습 가속기 칩렛(chiplet)의 세부 사항을 예시하는 APD의 블록도를 나타낸 도면;
도 5는 일례에 따른 캐시/기계 학습 가속기 칩렛의 세부 사항을 예시하는 도면; 및
도 6은 일례에 따른, 칩렛으로 기계 학습 동작을 수행하기 위한 방법의 흐름도.
기계 학습 동작을 수행하기 위한 기술이 제공된다. 기술은 제1 칩렛의 제1 부분을 캐시로서 구성하는 단계; 제1 부분을 통해 캐싱 동작을 수행하는 단계; 칩렛의 제1 부분의 적어도 제1 하위 부분을 직접 액세스 가능 메모리(directly-accessible memory)로서 구성하는 단계; 및 제1 칩렛 내의 기계 학습 가속기에 의해 제1 하위 부분으로 기계 학습 동작을 수행하는 단계를 포함한다.
도 1은 본 개시내용의 하나 이상의 특징이 구현될 수 있는 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는 예를 들어 컴퓨터, 게임 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 이동 전화, 태블릿 컴퓨터 또는 다른 컴퓨팅 디바이스 중 하나일 수 있지만 이들로 제한되지 않는다. 디바이스(100)는 프로세서(102), 메모리(104), 저장소(106), 하나 이상의 입력 디바이스(108) 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100)는 또한 하나 이상의 입력 드라이버(112) 및 하나 이상의 출력 드라이버(114)를 포함한다. 임의의 입력 드라이버(112)는 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어로서 구현되고, 입력 디바이스(112)를 제어할(예를 들어, 동작을 제어하고, 입력 드라이버(112)로부터 입력을 수신하고, 입력 드라이버에 데이터를 제공할) 목적으로 기능한다. 유사하게, 임의의 출력 드라이버(114)는 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어로서 구현되고, 출력 디바이스를 제어할(예를 들어, 동작을 제어하고, 출력 드라이버(114)로부터 입력을 수신하고, 츨력 드라이버에 데이터를 제공할) 목적으로 기능한다. 디바이스(100)는 도 1에 도시되지 않은 추가 컴포넌트를 포함할 수 있는 것으로 이해된다.
다양한 대안에서, 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 동일한 다이에 위치한 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함하고, 각 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안에서, 메모리(104)는 프로세서(102)와 동일한 다이에 위치되거나 프로세서(102)와 별도로 위치된다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어 랜덤 액세스 메모리(RAM), 동적 RAM 또는 캐시를 포함한다.
스토리지(106)는 고정 또는 제거 가능한 스토리지, 예를 들어, 제한 없이, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광 디스크 또는 플래시 드라이브를 포함한다. 입력 디바이스(108)는 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 인식 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함하지만 이에 제한되지는 않는다. 출력 디바이스(110)는 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 지시등, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함하지만 이에 제한되지는 않는다.
입력 드라이버(112) 및 출력 드라이버(114)는 각각 입력 디바이스(108) 및 출력 디바이스(110)와 인터페이싱하고 구동하도록 구성된 하나 이상의 하드웨어, 소프트웨어 및/또는 펌웨어 컴포넌트를 포함한다. 입력 구동기(112)는 프로세서(102) 및 입력 디바이스(108)와 통신하고, 프로세서(102)가 입력 디바이스(108)로부터 입력을 수신하는 것을 허용한다. 출력 구동기(114)는 프로세서(102) 및 출력 디바이스(110)와 통신하고, 프로세서(102)가 출력을 출력 디바이스(110)로 전송하는 것을 허용한다. 출력 드라이버(114)는 디스플레이 디바이스(118)에 결합된 가속 처리 디바이스("APD")(116)를 포함하고, 디스플레이 디바이스는 일부 예에서 물리적 디스플레이 디바이스 또는 원격 디스플레이 프로토콜을 사용하여 출력을 보여주는 모의 디바이스이다. APD(116)는 계산 명령과 그래픽 렌더링 명령을 프로세서(102)로부터 수용하고, 이 계산 명령과 그래픽 렌더링 명령을 처리하고, 그리고 픽셀 출력을 디스플레이를 위해 디스플레이 디바이스(118)에 제공하도록 구성된다. 아래에 더 상세히 설명되는 바와 같이, APD(116)는 단일 명령 다중 데이터("SIMD") 패러다임에 따라 계산을 수행하도록 구성된 하나 이상의 병렬 처리 유닛을 포함한다. 다양한 기능 또는 다양한 대안의 APD(116)과 함께 수행되는 것으로 설명되고 있지만, 이에 따라, 상기 기능을 부가 적으로 또는 대안 적으로 구동되지 않는 비슷한 기능을 가진 다른 컴퓨팅 장치에 의해 수행되는 APD(116)에 의해 수행되는 것으로 설명 호스트 프로세서(예를 들어, 프로세서(102))와 구성은 디스플레이 장치(118)에 그래픽 출력을 제공한다. 예를 들어, SIMD 패러다임에 따라 태스크를 처리가 수행하는 기능을 수행하도록 구성될 수 있는 프로세싱 시스템은, 본 명세서에 기재된 것으로 생각된다. 대안적으로, SIMD 패러다임에 따라 처리 태스크를 수행하지 않는 컴퓨팅 시스템은 본 명세서에 기술된 기능을 수행하는 것으로 고려된다.
도 2는 일례에 따른 디바이스(100) 및 APD(116)의 세부 사항을 예시한다. 프로세서(102)(도 1)는 운영 체제(120), 드라이버(122) 및 애플리케이션(126)을 실행하고, 대안적으로 또는 추가적으로, 다른 소프트웨어를 실행할 수도 있다. 운영 체제(120)는 하드웨어 자원 관리, 서비스 요청 처리, 프로세스 실행 스케줄링 및 제어, 다른 동작 수행과 같은 디바이스(100)의 다양한 양태를 제어한다. APD 드라이버(122)는 APD(116)의 동작을 제어하고, 그래픽 렌더링 태스크 또는 다른 작업과 같은 태스크를 처리를 위해 APD(116)로 전송한다. APD 드라이버(122)는 또한 APD(116)의 처리 컴포넌트(예컨대, 아래에서 더 구체적으로 설명되는 SIMD 유닛(138))에 의한 실행을 위해 프로그램을 컴파일하는 실시간 컴파일러(just-in-time compiler)를 포함한다.
APD(116)는 병렬 처리를 위해 적합할 수 있는 그래픽 연산 및 비 그래픽 연산과 같은 선택된 기능에 대한 명령 및 프로그램을 실행한다. APD(116)는 프로세서(102)로부터 수신된 명령에 기초하여 픽셀 연산, 기하학적 계산, 및 디스플레이 디바이스(118)에 이미지를 렌더링하는 것과 같은 그래픽 파이프라인 연산을 실행하기 위해 사용될 수 있다. APD(116)는 또한, 프로세서(102)로부터 수신된 명령에 기초하여 비디오, 물리 시뮬레이션, 전산 유체 역학, 또는 다른 작업과 관련된 연산과 같은 그래픽 연산에 직접적으로 관련되지 않은 계산 처리 연산을 실행한다. 몇몇 예에서, 이들 계산 처리 연산은 SIMD 유닛(138) 상의 컴퓨터 셰이더를 실행함으로써 수행된다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)(또는 다른 유닛)의 요청시 연산을 수행하도록 구성된 하나 이상의 SIMD 유닛(138)을 포함하는 계산 유닛(compute unit)(132)을 포함한다. SIMD 패러다임은 다수의 처리 요소가 단일 프로그램 제어 흐름 유닛 및 프로그램 카운터를 공유하고 따라서, 동일한 프로그램을 실행하지만 상이한 데이터로 그 프로그램을 실행할 수 있는 패러다임이다. 하나의 예에서, 각각의 SIMD 유닛(138)은 16개의 레인을 포함하고, 여기서 각각의 레인은 SIMD 유닛(138)의 다른 레인과 동시에 동일한 명령어를 실행하지만 상이한 데이터로 그 명령어를 실행할 수 있다. 모든 레인이 반드시 주어진 명령어를 실행할 필요가 없으면 예측을 통해 레인이 스위칭 오프될 수 있다. 예측은 또한, 분기하는 제어 흐름으로 프로그램을 실행하기 위해 사용될 수 있다. 더 구체적으로, 제어 흐름이 개별적인 레인에 의해 수행된 계산에 기초하는 조건부 분기 또는 다른 명령어를 갖는 프로그램에 대해, 현재 실행되지 않는 제어 흐름 경로에 대응하는 레인의 예측, 및 상이한 제어 흐름 경로의 직렬 실행은 임의의 제어 흐름을 허용한다.
계산 유닛(132)의 기본 실행 유닛은 작업 항목이다. 각각의 작업 항목은 특정한 레인에서 병렬로 실행될 프로그램의 단일 인스턴스화(instantiation)를 표현한다. 작업 항목은 단일 SIMD 처리 유닛(138) 상에서 "웨이브프론트(wavefront)"로서 동시에(또는 부분적으로 동시에 및 부분적으로 순차적으로) 실행될 수 있다. 하나 이상의 웨이브프론트는 동일한 프로그램을 실행하도록 지정된 작업 항목의 컬렉션을 포함하는 "작업 그룹"에 포함된다. 작업 그룹을 구성하는 웨이브프론트의 각각을 실행함으로써 작업 그룹이 실행될 수 있다. 대안적으로, 웨이브프론트는 단일 SIMD 유닛(138) 또는 상이한 SIMD 유닛들(138)에서 실행된다. 웨이브프론트는 단일 SIMD 유닛(138)에서 동시적으로(또는 의사-동시적으로) 실행될 수 있는 가장 큰 작업 항목 모음으로 고려할 수 있다 SIMD 유닛(138)의 레인 수보다 더 큰 웨이브프론트의 경우 "의사-동시" 실행이 발생한다. 이러한 상황에서, 웨이브프론트는 여러 주기에 걸쳐 실행되며 서로 다른 작업 항목 모음이 서로 다른 주기로 실행된다. APD 스케줄러(136)는 계산 유닛(132) 및 SIMD 유닛(138) 상의 다양한 작업 그룹 및 웨이브프론트를 스케줄링하는 것과 관련된 동작을 수행하도록 구성된다.
계산 유닛(132)에 의해 제공되는 병렬성은 픽셀 값 계산, 정점 변환 및 다른 그래픽 연산과 같은 그래픽 관련 연산에 적합하다. 따라서, 일부 사례에서, 프로세서(102)로부터 그래픽 처리 명령을 수용하는 그래픽 파이프라인(134)은 병렬 실행을 위해 계산 작업을 계산 유닛(132)에 제공한다.
계산 유닛(132)은 또한, 그래픽과 관련이 없거나 그래픽 파이프라인(134)의 "정상" 동작의 일부로서 수행되지 않는 계산 작업(예컨대, 그래픽 파이프라인(134)의 동작을 위해 수행된 처리를 보충하기 위해 수행된 맞춤 연산)을 수행하기 위해 사용된다. 프로세서(102)에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는 이러한 계산 작업을 정의하는 프로그램을 실행을 위해 APD(116)로 송신한다.
도 3은 도 2에 예시되어 있는 그래픽 처리 파이프라인(134)의 추가 세부 사항을 보여주는 블록도이다. 그래픽 처리 파이프라인(134)은 그래픽 처리 파이프라인(134)의 특정 기능을 각각 수행하는 스테이지를 포함한다. 각 스테이지는 프로그램 가능한 계산 유닛(132)에서 실행되는 셰이더 프로그램으로서 부분적으로 또는 전체적으로 구현되거나, 계산 유닛(132) 외부의 고정 기능, 프로그래밍 불가능한 하드웨어로서 부분적으로 또는 전체적으로 구현된다.
입력 어셈블러 스테이지(302)는 사용자-충진 버퍼(예를 들어, 애플리케이션(126)과 같은, 프로세서(102)에 의해 실행된 소프트웨어의 요청 시 충진되는 버퍼)로부터 프리미티브 데이터를 판독하고 그리고 이 데이터를 파이프라인의 나머지에 의한 사용을 위해 프리미티브와 어셈블링한다. 입력 어셈블러 스테이지(302)는 사용자-충진 버퍼에 포함된 프리미티브 데이터에 기초하여 상이한 유형의 프리미티브를 생성할 수 있다. 입력 어셈블러 스테이지(302)는 나머지 파이프라인에서 사용하기 위해 조합된 기본요소를 포맷한다.
정점 셰이더 스테이지(304)는 입력 어셈블러 스테이지(302)에 의해 조합된 기본요소의 정점을 처리한다. 정점 셰이더 스테이지(304)는 변환, 스키닝(skinning), 모핑(morphing) 및 정점별 조명과 같은 다양한 정점별 연산을 수행한다. 변환 연산에는 정점의 좌표를 변환하는 다양한 연산이 포함된다. 이러한 연산에는 모델링 변환, 보기 변환, 투영 변환, 원근 분할 및 정점 좌표를 수정하는 뷰포트 변환과 비좌표 속성을 수정하는 다른 연산 중 하나 이상이 포함된다.
정점 셰이더 스테이지(304)는 하나 이상의 계산 유닛(132)에서 실행될 정점 셰이더 프로그램으로서 부분적으로 또는 전체적으로 구현된다. 정점 셰이더 프로그램은 프로세서(102)에 의해 제공되고 컴퓨터 프로그래머에 의해 미리 작성된 프로그램에 기초한다. 드라이버(122)는 이러한 컴퓨터 프로그램을 컴파일하여 계산 유닛(132) 내에서 실행하기에 적절한 포맷을 갖는 정점 셰이더 프로그램을 생성한다.
헐 셰이더 스테이지(hull shader stage)(306), 테셀레이터 스테이지(tessellator stage)(308) 및 도메인 셰이더 스테이지(310)는 테셀레이션을 구현하기 위해 함께 작업하고, 이는 기본요소를 세분함으로써 간단한 기본요소를 더 복잡한 기본요소로 변환한다. 헐 셰이더 스테이지(306)는 입력 기본요소에 기초하여 테셀레이션을 위한 패치를 생성한다. 테셀레이터 스테이지(308)는 패치를 위한 샘플 세트를 생성한다. 도메인 셰이더 스테이지(310)는 패치를 위한 샘플에 대응하는 정점에 대한 정점 위치를 계산한다. 헐 셰이더 스테이지(306) 및 도메인 셰이더 스테이지(310)는 정점 셰이더 스테이지(304)에서와 같이 드라이버(122)에 의해 컴파일되는 계산 유닛(132)에서 실행될 셰이더 프로그램으로서 구현될 수 있다.
지오메트리 셰이더 스테이지(312)는 기본요소별로 정점 연산을 수행한다. 포인트 스프라이트 확장(point sprite expansion), 동적 파티클 시스템 연산, 퍼핀(fur-fin) 생성, 쉐도우 볼륨 생성, 단일 패스 렌더-투-큐브맵(single pass render-to-cubemap), 기본요소별 자료 스와핑, 기본요소별 자료 설정과 같은 연산을 비롯한, 다양한 상이한 유형의 연산이 지오메트리 셰이더 스테이지(312)에 의해 수행될 수 있다. 일부 예에서, 드라이버(122)에 의해 컴파일되고 계산 유닛(132)에서 실행되는 지오메트리 셰이더 프로그램은 지오메트리 셰이더 스테이지(312)에 대한 연산을 수행한다.
래스터라이저 스테이지(314)는 래스터라이저 스테이지(314)로부터 업스트림에 생성된 간단한 기본요소(삼각형)를 수용하고 래스터화한다. 래스터화는 어떤 스크린 픽셀(또는 하위-픽셀 샘플)이 특정한 프리미티브에 의해 덮이는지를 결정하는 것을 수반한다. 래스터화는 고정 기능 하드웨어에 의해 수행된다.
픽셀 셰이더 스테이지(316)는 업스트림에서 생성된 기본요소 및 래스터화 결과에 기초하여 화면 픽셀에 대한 출력 값을 계산한다. 픽셀 셰이더 스테이지(316)는 텍스처 메모리로부터 텍스처를 적용할 수 있다. 픽셀 셰이더 스테이지(316)에 대한 연산은 드라이버(122)에 의해 컴파일되고 계산 유닛(132)에서 실행되는 픽셀 셰이더 프로그램에 의해 수행된다.
출력 병합기 스테이지(318)는 픽셀 셰이더 스테이지(316)로부터의 출력을 수용하고 이러한 출력을 프레임 버퍼로 병합하고, 화면 픽셀에 대한 최종 색상을 결정하기 위해 z-테스트 및 알파 블렌딩과 같은 연산을 수행한다.
그래픽 처리 파이프라인(134)을 포함하고 그래픽 렌더링을 수행할 수 있는 APD(116)의 구현예가 개시된다. 그러나, 본 개시내용의 교시는 그래픽 처리 파이프라인(134)을 포함하지 않거나 또는 이러한 파이프라인을 이용하여 그래픽 렌더링을 수행하지 않는 APD(116)의 구현으로 확장된다.
도 4는 일례에 따른, 캐시/기계 학습 가속기 칩렛(404)의 세부 사항을 예시하는 APD(116)의 블록도를 나타낸다. APD(116)는 도 2와 관련하여 설명된 APD 스케줄러(136) 및 계산 유닛(132)을 포함한다. APD(116)는 또한, APD-캐시 인터페이스(406)을 통해 APD 코어(402)에, 그리고 외부 인터페이스(410)를 통해 다른 메모리(예컨대, 시스템 메모리(104) 또는 APD(116)의 메모리)에 결합되는 하나 이상의 캐시 및 기계 학습 가속기 칩렛(cache-and-machine-learning-accelerator chiplet)(404)을 포함한다. 일부 구현예에서, 하나 이상의 칩렛(404)은 하나 이상의 인트라-칩렛 인터페이스(intra-chiplet interface)(408)를 통해 하나 이상의 다른 칩렛(404)에 연결된다.
캐시/기계 학습 가속기 칩렛(404)은 기계 학습 가속기뿐만 아니라 데이터를 저장하도록 구성된 메모리 모듈을 포함한다. 일부 구현예에서, 기계 학습 가속기는 출력 결과를 제공하기 위해 입력 행렬을 위한 행렬 곱셈을 수행하도록 구성된 행렬 곱셈 회로를 포함한다.
일부 구현예에서, 캐시/기계 학습 가속기 칩렛(404)은 APD 코어(402)와 별개의 물리적 다이이다. 일부 구현예에서, 캐시/기계 학습 가속기 칩렛(404)은 APD 코어(402)를 위해 사용된 제조 프로세스보다 더 큰 규모의 제조 프로세스로 제조된다. 제조 프로세스는 디바이스 특징이 제조되는 규모를 지칭한다. 제조 프로세스는 때때로 당업계에서 "프로세스 노드"로서 지칭된다. 일부 예시적인 제조 프로세스는 10 나노미터("㎚") 프로세스 및 7㎚ 프로세스를 포함한다. APD 코어(402)와 비교하여 칩렛(404)에 대해 더 큰 제조 프로세스 규모를 사용하는 것은 여전히 APD 코어(402)의 고성능을 제공하면서 APD 코어(402)에 비해 더 낮은 비용 및 더 높은 수율로 칩렛(404)이 제조되는 것을 가능하게 한다.
캐시/기계 학습 가속기 칩렛(404)의 메모리 모듈은 APD 코어(402)의 동작을 위한 캐시 메모리로서 사용되는 것과, 기계 학습 가속기의 동작을 위한 입력 피연산자 및 출력 결과를 저장하는 메모리로서 사용되는 것 사이에서 전환 가능하다. 보다 구체적으로, 캐시/기계 학습 가속기 칩렛(404)은 APD 코어(402)에 대한 캐시 메모리로서 동작하는 것과, 예컨대 캐시/기계 학습 가속기 칩렛(404)의 기계 학습 가속기에 의해 액세스될 수 있는 직접 액세스 가능 메모리로서 동작하는 것 사이에서 구성 가능하다. 일부 구현예에서, APD 스케줄러(136) 및 계산 유닛(132) 중 하나 또는 둘 모두는 캐시 또는 직접 액세스 가능 메모리로서 동작하도록 캐시/기계 학습 가속기 칩렛(404) 중 임의의 부분에 지시할 수 있다.
일부 구현예에서, APD 코어(402)는 캐시 계층의 적어도 일부를 형성하는 하나 이상의 캐시 메모리를 포함한다. 메모리 계층은 또한 캐시/기계 학습 가속기 칩렛(404)의 캐시 메모리를 포함한다. 일부 예에서, 캐시/기계 학습 가속기 칩렛(404)의 캐시 메모리는 APD 코어(402)의 캐시 계층의 일부에 대해 레벨 3 캐시로서 작용한다.
일부 구현예에서, 캐시/기계 학습 가속기 칩렛(404)은 또한 APD(116) 또는 시스템 메모리(104)에 전용되는 메모리와 같은 캐시 계층보다 메모리 계층에서 상위에 있는 메모리와 APD 코어(402) 사이의 물리적 인터페이스로서 역할을 한다. 다시 말해서, 캐시/기계 학습 가속기 칩렛(404)은 둘 모두 캐시 계층에서 레벨로서 작용하는 메모리를 포함하고, APD 코어(402)에서의 하위 레벨 및 APD(116)에서의 메모리 또는 시스템 메모리(104)와 같은 상위 레벨을 포함하여 해당 계층의 다른 레벨과 물리적으로 접속한다. 도 4가 "메모리에" 연결되는 외부 인터페이스(410)를 도시하고 있다는 점에 유의한다. 다양한 예에서, 언급된 "메모리"는 APD(116)의 범용(예컨대, 비캐시) 메모리 또는 시스템 메모리(104)이다. 그러므로, 캐시/기계 학습 가속기 칩렛(404)은 APD 코어(402) 내의 캐시 계층의 부분과 메모리 사이의 물리적 인터페이스로서 작용한다.
도 5는 일례에 따른 캐시/기계 학습 가속기 칩렛(404)의 세부 사항을 도시한다. 도시된 바와 같이, 캐시/기계 학습 가속기 칩렛(404)은 복수의 기계 학습 가속기(502) 및 칩렛 메모리(504)를 포함한다. 기계 학습 가속기(502)는 일부 구현예에서 행렬 곱셈 연산을 수행하도록 구성된 하드웨어 회로이다.
행렬 곱셈 연산은 완전히 연결된 계층 또는 합성곱 계층(convolution layer)을 위한 계층 입력으로부터 계층 출력을 생성하는 동작을 수행하는 것과 같은 기계 학습 동작에서 일반적으로 사용된다. 다양한 예에서, APD 스케줄러(136) 또는 계산 유닛(132) 중 하나 또는 둘 모두는 데이터를 칩렛 메모리(504)로 페치하고 결과를 출력하기 위해 페치된 데이터에 대한, 기계 학습 가속기(502)를 통한 행렬 곱셈 연산을 수행하기 위해 캐시/기계 학습 가속기 칩렛(404) 중 어느 하나에 명령을 보낼 수 있다. 다양한 예에서, 캐시/기계 학습 가속기 칩렛(404)은 행렬 곱셈 결과를 칩렛 메모리(504)에 저장한다. 다양한 예에서, 캐시/기계 학습 가속기 칩렛(404)은 결과를 APD 코어(402)와 같은 외부 엔티티, APD(116)의 메모리, 또는 메모리(102)로 전송한다.
일부 예에서, 신경 회로망은 일련의 상호 연결된 계층으로서 구현된다. 각각의 계층은 다른 계층으로부터 또는 신경 회로망에 대한 입력으로부터 하나 이상의 입력을 수신한다. 상이한 계층의 계산이 디바이스(100)의 다른 엔티티에 의해 수행되는 것이 가능하다. 예에서, 캐시/기계 학습 가속기 칩렛(404)은 행렬 곱셈 또는 합성곱 연산을 수행하고, APD 코어(402)(예컨대, 계산 유닛(132))는 활성화, 배치 정규화 또는 다른 연산과 같은 신경 회로망을 구현하기 위해 다른 계산을 수행한다. 일부 예에서, APD 스케줄러(136) 또는 프로세서(102)와 같은 조정자는 신경 회로망을 이용한 훈련 또는 추론을 수행하기 위한 다양한 연산을 수행하도록 이들 상이한 엔티티들에 명령한다. 예컨대, 조정자는 행렬 곱셈을 필요로 하는 계층을 위한 입력 데이터에 대해 행렬 곱셈 연산을 수행하도록 캐시/기계 학습 가속기 칩렛(404)에 지시하고, 이러한 다른 연산을 이용하는 계층을 위한 신경 회로망에 대해 다른 연산을 수행하도록 계산 유닛(132)에 지시한다.
APD 스케줄러(136)는 상이한 계산 유닛(132) 및 캐시/기계 학습 가속기 칩렛(404)에서 동시 실행을 위해 많은 상이한 작업을 스케줄링할 수 있다. 예에서, APD 스케줄러(136)는 계산 유닛(132)에서 실행하기 위한 셰이더 프로그램을 스케줄링할 수 있는 동시에, 캐시/기계 학습 가속기 칩렛(404)에서 실행하기 위한 동작을 스케줄링할 수 있다. 도 5에 도시된 바와 같이, 칩렛 메모리(504)는 캐시(506)로 구성된 메모리와 직접 액세스 가능 메모리(508) 사이에서 구성 가능하다. 보다 구체적으로, 프로세서(102), APD 스케줄러(136), 또는 계산 유닛(132)과 같은 엔티티는 특정 캐시/기계 학습 가속기 칩렛(404)을 위한 칩렛 메모리(504)의 특정 부분이 캐시(506) 또는 직접 액세스 가능 메모리(508)로서 구성되도록 요청한다. 이에 대한 응답하여, 캐시/기계 학습 가속기 칩렛(404)은 요청된 부분을 캐시(506) 또는 직접 액세스 가능 메모리(508)로서 구성하고, 나머지 부분을 캐시(506) 또는 직접 액세스 가능 메모리(508)의 다른 부분으로서 구성한다.
캐시(506)로서 구성된 메모리는 전형적인 캐시 메모리로서 역할을 한다. 구체적으로, 캐시(506)는 APD 코어(402)의 캐시보다 캐시 계층에서 상위 레벨로서 역할을 한다. 예에서, 캐시(506)로서 구성된 메모리는 레벨 3 캐시 메모리로서 역할을 하고, APD 코어(402)는 하나 이상의 레벨 0 캐시, 하나 이상의 레벨 1 캐시, 및 하나 이상의 레벨 2 캐시를 포함한다. 이러한 예에서, 레벨 3 캐시 메모리 서비스는 레벨 2 캐시로부터 누락되고, 하나 이상의 레벨 2 캐시로부터 축출된 캐시 라인을 수신 및 저장하고, APD(116) 내의 메모리 또는 시스템 메모리(104)와 같은 백업 메모리로 캐시 라인을 축출한다. 일부 예에서, 캐시 메모리는 APD(116)의 계산 유닛(132) 내에서 실행되는 셰이더 프로그램을 위한 캐시로서 역할을 한다. 캐시(506)로서 구성된 메모리는 이러한 캐시(506)에 데이터가 배치되도록 기계 학습 가속기(502) 또는 계산 유닛(132)와 같은 실행 유닛이 구체적으로 요청할 수 없다는 점에서 "직접 액세스 가능"하지 않다는 점에 유의한다. 예컨대, 일반적인 메모리를 이용하여, 실행 유닛은 데이터가 해당 일반적인 메모리에서의 주소에 배치되도록 요청할 수 있다. 그러나, 캐시를 이용하여, 데이터는 캐시에서의 누락과 같은 작용에 응답하여 캐시 제어기에 의해 캐시에 배치되고, 실행 유닛은 캐시에 저장된 데이터를 간접적으로만 제어할 수 있다.
대조적으로, 직접 액세스 가능 메모리(508)는 실행 유닛에 의해 직접 액세스 가능하다. "직접 액세스 가능"이라는 용어는 데이터가 직접 액세스 가능 메모리(508)에 저장되거나 또는 이로부터 로딩되도록 APD 스케줄러(136), 계산 유닛(132) 또는 기계 학습 가속기(502)와 같은 실행 유닛이 명시적으로 요청할 수 있다는 것을 의미한다. 일부 구현예에서, 이러한 요청은, 데이터를 저장하거나 데이터를 판독하는 특정 캐시/기계 학습 가속기 칩렛(404)뿐만 아니라 해당 캐시/기계 학습 가속기 칩렛(404) 내에서의 주소를 지정한다. 본 명세서의 다른 곳에서 설명된 바와 같이, 기계 학습 가속기(502)는 동일한 칩렛(404)의 직접 액세스 가능한 메모리(508) 내에서의 데이터를 소비하는 행렬 곱셈과 같은 기계 학습 동작을 수행하고, 동작의 결과를 동일한 칩렛(404)의 직접 액세스 가능한 메모리(508)에 출력할 수 있다.
일부 구현예에서, 칩렛(404)은 칩렛간 연결(408)을 포함한다. 본 명세서의 다른 곳에서 설명된 바와 같이, 칩렛(404)은 다른 소스로부터 데이터를 획득하고, 다른 위치에 데이터를 기록한다. 예에서, 칩렛(404)은 다른 칩렛(404)에 의해 소비되는 출력을 생성하는 동작을 수행한다. 칩렛간 연결(408)을 포함하는 구현예에서, 칩렛(404)은 다른 칩렛(404)으로/으로부터 이러한 데이터를 직접 전송/수신할 수 있다.
본 명세서의 다른 곳에서 설명된 바와 같이, 칩렛(404) 및 APD 코어(402)의 동작은 기계 학습 네트워크의 훈련 또는 추론을 위해 수행된다. 일부 예에서, 그래프 컴파일러(도시되지 않음)는 네트워크의 계층, 각각의 계층의 동작, 각각의 계층에 대한 입력, 및 각각의 계층에 대한 출력을 나타내는 기계 학습 네트워크의 그래프 설명을 컴파일한다. 임의의 계층에 대한 입력은 다른 계층의 출력 또는 네트워크로의 입력일 수 있고, 임의의 계층에 대한 출력은 다른 계층의 입력 또는 네트워크의 출력일 수 있다. 그래프 컴파일러는 칩렛(404)의 기계 학습 가속기(502)에 의해 수행될 동작의 세트, 일부 구현예에서 APD 스케줄러(136)에 의해 수행될 동작의 세트, 및 일부 구현예에서 계산 유닛(132)에 의해 실행되는 셰이더 프로그램의 세트를 생성한다. 일부 구현예에서, 하나 이상의 셰이더 프로그램은 하나 이상의 계층에 대한 동작을 수행하기 위한 명령을 포함한다. 일부 구현예에서, 이러한 셰이더 프로그램 중 일부는 기계 학습 가속기(502)가 이러한 계층에 필요한 행렬 곱셈 연산을 수행하도록 요청하는 명령을 포함하고, 선택적으로 계층으로의 입력을 위한 직접 액세스 가능 메모리(508)로서 구성된 칩렛 메모리(504) 내로 데이터를 전송하는 명령을 포함한다. 일부 구현예에서, 이러한 일부 셰이더 프로그램은 직접 액세스 가능 메모리(508)로부터 다른 칩렛(404)의 직접 액세스 가능 메모리(508) 또는 APD 코어(402) 내의 메모리와 같은 다른 메모리로 데이터를 이동시키기 위한 명령을 포함한다. 일부 구현예에서, APD 스케줄러(136)는 계산 유닛(132) 대신에 또는 이에 추가하여, 칩렛(404)이 기계 학습 가속기 동작을 수행하도록 요청하고 및/또는 칩렛(404)으로부터 또는 칩렛으로 데이터를 판독하거나 기록하는 동작을 수행하기 위한 동작을 수행한다.
일부 구현예에서, 칩렛(404)은 직접 액세스 가능 메모리(508) 내로 데이터를 판독하고 및/또는 직접 액세스 가능 메모리(508)로부터 다른 메모리로 데이터를 저장하도록 구성된 직접 메모리 액세스 엔진을 포함한다. 다양한 대안적 구현예에서, 계산 유닛(132) 또는 APD 스케줄러(136)는 데이터를 판독 및/또는 기록하도록 직접 메모리 액세스 엔진에게 지시한다.
위에서 설명된 바와 같이, 칩렛 메모리(504)는 캐시(506)와 직접 액세스 가능 메모리(508) 사이에서 구성 가능하다. 칩렛 메모리(504)는 제1 부분이 캐시 메모리(506)이도록 구성될 수 있고, 후속적으로 제1 부분의 적어도 일부가 직접 액세스 가능 메모리(508)이도록 구성될 수 있다는 것이 이해되어야 한다. 즉, 캐시 메모리(506)로서 한번 사용되었던 칩렛 메모리(404)는 직접 액세스 가능 메모리(508)로서 용도에 맞춰 변경될 수 있다. 유사하게, 직접 액세스 가능한 메모리(508)로서 한번 사용된 액세스 가능 메모리(404)는 캐시 메모리(506)로서 용도에 맞춰 변경될 수 있다. 또한 캐시로서, 그리고 직접 액세스 가능한 것으로서 구성된 동일한 칩렛(404)의 다른 부분이 동시에 사용될 수 있다는 것이 이해되어야 한다. 예컨대, APD(116)에 대한 캐시 동작을 수행하는 것과 동시에 하나의 칩렛(404)에서 행렬 곱셈과 같은 기계 학습 동작을 수행하는 것이 가능하다.
도 6은 일례에 따른, 칩렛(404)으로 기계 학습 동작을 수행하기 위한 방법(600)의 흐름도이다. 도 1 내지 도 5의 시스템과 관련하여 설명되었을지라도, 당업자는 임의의 기술적으로 실현 가능한 순서로 방법(600)의 단계를 수행하도록 구성된 임의의 시스템이 본 개시내용의 범위 내에 속한다는 것을 이해할 것이다.
방법(600)은 칩렛(404)이 칩렛 메모리(504)의 제1 부분을 캐시(506)로서 구성하는 단계(602)에서 시작한다. 다양한 예에서, 이 구성은 APD 스케줄러(136) 또는 계산 유닛(132)의 요청시에 발생한다.
단계(604)에서, APD(116)는 캐시(506)로서 구성된 제1 부분을 사용하여 캐싱 동작을 수행한다. 캐싱 동작은 APD 코어(402) 내에서의 캐시로부터 축출된 캐시 라인을 저장하는 것, 및 요청 시에 APD 코어(402)에 캐시 라인을 제공하는 것을 포함한다.
단계(606)에서, 칩렛(404)은 칩렛(404)의 제1 부분의 적어도 제1 하위 부분을 직접 액세스 가능 메모리(508)로서 구성한다. 다양한 예에서, 이 구성은 APD 스케줄러(136) 또는 계산 유닛(132)의 요청시에 발생한다. 단계(608)에서, 칩렛(404)은 직접 액세스 가능한 것으로 구성된 칩렛(404)의 제1 부분의 제1 하위 부분으로 기계 학습 동작을 수행한다. 다양한 예에서, 기계 학습 동작을 수행하는 것은 기계 학습 네트워크의 계층에 대한 행렬 곱셈을 수행하여 그 계층에 대한 결과를 획득하는 것을 포함한다. 다양한 예에서, 동작은 또한 데이터를 제1 하위 부분에 저장하고, 제1 하위 부분으로부터 다른 칩렛(404) 및 APD 코어(402)와 같은 칩렛(404) 외부의 엔티티로 데이터를 전송하기 위한 동작을 포함한다.
도면에 예시된 각각의 유닛은 본 명세서에서 설명된 동작을 수행하도록 구성된 하드웨어 회로를 나타내고, 그래픽 처리 파이프라인(300)의 특정 유닛은 프로그래밍 가능하고, 그러므로 프로그램을 실행할 수 있다.
많은 변형이 본 명세서의 개시내용에 기초하여 가능하다는 것을 이해해야 한다. 특징 및 요소가 특정 조합으로 위에서 설명되었을지라도, 각각의 특징 또는 요소는 다른 특징 및 요소 없이 단독으로 또는 다른 특징 및 요소와 다양한 조합으로 또는 이들 없이 사용될 수 있다.
제공된 방법은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적절한 프로세서는 예컨대 범용 프로세서, 특수 목적 프로세서, 기존 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 컨트롤러, 마이크로컨트롤러, 주문형 집적회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 회로, 임의의 다른 유형의 집적 회로(IC) 및/또는 상태 머신을 포함한다. 이러한 프로세서는 처리된 하드웨어 설명 언어(HDL) 명령의 결과 및 넷리스트(컴퓨터 판독 가능 매체에 저장할 수 있는 이러한 명령)를 포함하는 다른 중간 데이터의 결과를 사용하여 제조 프로세스를 구성하는 것에 의해 제조될 수 있다. 이러한 프로세싱의 결과는 본 개시내용의 특징을 구현하는 프로세서를 제조하기 위해 이후 반도체 제조 프로세스에서 사용되는 마스크워크(maskwork)일 수 있다.
본 명세서에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독 가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체의 예는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 자기 광학 미디어, CD-ROM 디스크 및 디지털 다목적 디스크(DVD)와 같은 광학 미디어를 포함한다.

Claims (20)

  1. 방법으로서,
    제1 칩렛(chiplet)의 제1 부분을 캐시로서 구성하는 단계;
    상기 제1 부분을 통해 캐싱 동작을 수행하는 단계;
    상기 칩렛의 제1 부분의 적어도 제1 하위 부분을 직접 액세스 가능 메모리로서 구성하는 단계; 및
    상기 제1 칩렛 내의 기계 학습 가속기에 의해 상기 제1 하위 부분으로 기계 학습 동작을 수행하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 캐싱 동작을 수행하는 단계는 상기 제1 칩렛으로서 별개의 다이 상에 있는 프로세싱 코어를 위해 캐싱 동작을 수행하는 단계를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 프로세싱 코어를 위해 캐싱 동작을 수행하는 단계는 상기 프로세싱 코어의 캐시로부터 축출된 캐시 라인을 저장하는 단계 또는 상기 프로세싱 코어의 캐시에서의 누락에 응답하여 상기 프로세싱 코어에 캐시 라인을 제공하는 단계 중 하나 이상을 포함하는, 방법.
  4. 제1항에 있어서,
    상기 제1 부분을 캐시로서 구성하는 단계 또는 상기 제1 하위 부분을 직접 액세스 가능 메모리로서 구성하는 단계는 상기 제1 칩렛으로서 별개의 다이 상에 있는 프로세싱 코어의 스케줄러 또는 계산 유닛으로부터의 요청에 응답하여 수행되는, 방법.
  5. 제1항에 있어서,
    상기 칩렛과 별개인 프로세서 코어의 요청에 응답하여, 직접 액세스 가능 메모리로서 구성된 상기 제1 하위 부분 내에 데이터를 저장하는 단계를 더 포함하는, 방법.
  6. 제5항에 있어서,
    기계 학습 동작을 수행하는 단계는 입력으로서 데이터를 소비하는 기계 학습 동작을 수행하는 단계를 포함하는, 방법.
  7. 제1항에 있어서, 상기 기계 학습 동작은 행렬 곱셈 연산을 포함하는, 방법.
  8. 제1항에 있어서,
    상기 제1 부분은 상기 제1 칩렛의 내부 메모리의 제1 양의 메모리를 포함하고; 그리고
    상기 방법은 상기 제1 부분을 통한 캐싱 동작을 수행하는 동안, 직접 액세스 가능 메모리로서 구성된 메모리의 제2 부분으로 기계 학습 동작을 수행하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서,
    상기 제1 칩렛이 기계 학습 동작을 수행하도록 요청하는 프로세싱 코어와 물리적으로 별개인 제2 칩렛으로 데이터를 전송하거나 또는 이로부터 데이터를 수신하는 단계를 더 포함하되, 상기 데이터는 상기 제1 칩렛과 제2 칩렛 사이의 직접적인 연결을 통해 전송되거나 또는 수신되어 상기 프로세싱 코어를 통해 흐르지 않는, 방법.
  10. 디바이스로서,
    하나 이상의 기계 학습 가속기; 및
    칩렛 메모리
    를 포함하되, 상기 칩렛 메모리는,
    상기 칩렛 메모리의 제1 부분을 캐시로서 구성하도록;
    상기 제1 부분을 통해 캐싱 동작을 수행하도록;
    상기 칩렛 메모리의 제1 부분의 적어도 제1 하위 부분을 직접 액세스 가능 메모리로서 구성하도록; 그리고
    상기 하나 이상의 기계 학습 가속기의 기계 학습 가속기에 의해 상기 제1 하위 부분으로 기계 학습 동작을 수행하도록
    구성되는, 디바이스.
  11. 제10항에 있어서,
    상기 캐싱 동작을 수행하는 것은 상기 칩렛 메모리로서 별개의 다이 상에 있는 프로세싱 코어를 위해 캐싱 동작을 수행하는 것을 포함하는, 디바이스.
  12. 제11항에 있어서,
    상기 프로세싱 코어를 위해 캐싱 동작을 수행하는 것은 상기 프로세싱 코어의 캐시로부터 축출된 캐시 라인을 저장하는 것 또는 상기 프로세싱 코어의 캐시에서의 누락에 응답하여 상기 프로세싱 코어에 캐시 라인을 제공하는 것 중 하나 이상을 포함하는, 디바이스.
  13. 제10항에 있어서,
    상기 제1 부분을 캐시로서 구성하는 것 또는 상기 제1 하위 부분을 직접 액세스 가능 메모리로서 구성하는 것은 상기 칩렛 메모리로서 별개의 다이 상에 있는 프로세싱 코어의 스케줄러 또는 계산 유닛(compute unit)으로부터의 요청에 응답하여 수행되는, 디바이스.
  14. 제10항에 있어서, 상기 칩렛 메모리는
    상기 칩렛과 별개인 프로세싱 코어의 요청에 응답하여, 직접 액세스 가능 메모리로서 구성된 상기 제1 하위 부분 내에 데이터를 저장하도록 추가로 구성되는, 디바이스.
  15. 제14항에 있어서,
    기계 학습 동작을 수행하는 것은 입력으로서 데이터를 소비하는 기계 학습 동작을 수행하는 것을 포함하는, 디바이스.
  16. 제10항에 있어서, 상기 기계 학습 동작은 행렬 곱셈 연산을 포함하는, 디바이스.
  17. 제10항에 있어서,
    상기 제1 부분은 상기 제1 칩렛의 내부 메모리의 제1 양의 메모리를 포함하고;
    상기 하나 이상의 기계 학습 가속기는 캐싱 동작이 상기 제1 부분을 통해 수행되는 동안, 직접 액세스 가능 메모리로서 구성된 메모리의 제2 부분으로 기계 학습 동작을 수행하도록 구성되는, 디바이스.
  18. 제10항에 있어서, 상기 칩렛 메모리는,
    상기 제1 칩렛이 기계 학습 동작을 수행하도록 요청하는 프로세싱 코어와 물리적으로 별개인 제2 칩렛으로 데이터를 전송하거나 또는 이로부터 데이터를 수신하도록 추가로 구성되며, 상기 데이터는 상기 제1 칩렛과 제2 칩렛 사이의 직접적인 연결을 통해 전송되거나 또는 수신되어 상기 프로세싱 코어를 통해 흐르지 않는, 디바이스.
  19. 디바이스로서,
    제1 칩렛 메모리, 및 하나 이상의 기계 학습 가속기의 제1 세트를 포함하는 제1 칩렛;
    제2 칩렛; 및
    프로세싱 코어
    를 포함하되, 상기 제1 칩렛은,
    상기 제1 칩렛 메모리의 제1 부분을 캐시로서 구성하도록;
    상기 제1 부분을 통해 캐싱 동작을 수행하도록;
    상기 칩렛 메모리의 제1 부분의 적어도 제1 하위 부분을 직접 액세스 가능 메모리로서 구성하도록; 그리고
    상기 하나 이상의 기계 학습 가속기의 기계 학습 가속기에 의해 상기 제1 하위 부분으로 기계 학습 동작을 수행하도록
    구성되는, 디바이스.
  20. 제19항에 있어서,
    상기 캐싱 동작을 수행하는 것은 상기 프로세싱 코어를 위해 캐싱 동작을 수행하는 것을 포함하는, 디바이스.
KR1020227004629A 2019-07-22 2020-07-21 칩렛-통합 기계 학습 가속기 KR20220035426A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962877241P 2019-07-22 2019-07-22
US201962877249P 2019-07-22 2019-07-22
US62/877,241 2019-07-22
US62/877,249 2019-07-22
US16/933,863 2020-07-20
US16/933,863 US20210026686A1 (en) 2019-07-22 2020-07-20 Chiplet-integrated machine learning accelerators
PCT/US2020/042931 WO2021016273A1 (en) 2019-07-22 2020-07-21 Chiplet-integrated machine learning accelerators

Publications (1)

Publication Number Publication Date
KR20220035426A true KR20220035426A (ko) 2022-03-22

Family

ID=74190249

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227004629A KR20220035426A (ko) 2019-07-22 2020-07-21 칩렛-통합 기계 학습 가속기

Country Status (6)

Country Link
US (1) US20210026686A1 (ko)
EP (1) EP4004835A4 (ko)
JP (1) JP2022541461A (ko)
KR (1) KR20220035426A (ko)
CN (1) CN114144797A (ko)
WO (1) WO2021016273A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11429480B2 (en) 2020-08-31 2022-08-30 Micron Technology, Inc. Method of demand scrubbing by placing corrected data in memory-side cache
US20220198318A1 (en) * 2020-12-17 2022-06-23 SiMa Technologies, Inc. Instruction streaming for a machine learning accelerator
US11782757B2 (en) * 2021-05-07 2023-10-10 SiMa Technologies, Inc. Scheduling off-chip memory access for programs with predictable execution
US20230418745A1 (en) * 2022-06-28 2023-12-28 Advanced Micro Devices, Inc. Technique to enable simultaneous use of on-die sram as cache and memory

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798673B2 (en) * 2013-03-14 2017-10-24 Sandisk Technologies Llc Paging enablement of storage translation metadata
KR102219288B1 (ko) * 2013-12-09 2021-02-23 삼성전자 주식회사 캐시 모드 및 메모리 모드 동작을 지원하는 메모리 장치 및 이의 동작 방법
US20190146837A1 (en) * 2014-09-29 2019-05-16 Samsung Electronics Co., Ltd. Distributed real-time computing framework using in-storage processing
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
CN116842306A (zh) * 2016-03-23 2023-10-03 Gsi 科技公司 存储器内矩阵乘法及其在神经网络中的使用
US10817802B2 (en) * 2016-05-07 2020-10-27 Intel Corporation Apparatus for hardware accelerated machine learning
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US11694066B2 (en) * 2017-10-17 2023-07-04 Xilinx, Inc. Machine learning runtime library for neural network acceleration
US10509596B2 (en) * 2017-12-21 2019-12-17 Advanced Micro Devices, Inc. Extreme-bandwidth scalable performance-per-watt GPU architecture
US20190278593A1 (en) * 2018-03-09 2019-09-12 Nvidia Corporation Accelerating linear algebra kernels for any processor architecture
US11347994B2 (en) * 2018-10-15 2022-05-31 Intel Corporation Weight prefetch for in-memory neural network execution
US10691593B1 (en) * 2018-12-19 2020-06-23 Micron Technology, Inc. Predictive data storage hierarchical memory systems and methods
US11176493B2 (en) * 2019-04-29 2021-11-16 Google Llc Virtualizing external memory as local to a machine learning accelerator
US11521116B2 (en) * 2019-06-25 2022-12-06 Nxp Usa, Inc. Self-optimizing multi-core integrated circuit

Also Published As

Publication number Publication date
JP2022541461A (ja) 2022-09-26
WO2021016273A1 (en) 2021-01-28
CN114144797A (zh) 2022-03-04
US20210026686A1 (en) 2021-01-28
EP4004835A1 (en) 2022-06-01
EP4004835A4 (en) 2023-08-23

Similar Documents

Publication Publication Date Title
US20210026686A1 (en) Chiplet-integrated machine learning accelerators
US11004258B2 (en) Combined world-space pipeline shader stages
KR20210153514A (ko) 적응적 슈퍼샘플링을 위한 딥 러닝 기반의 샘플 선택
CN112446815A (zh) 稀疏矩阵乘法加速机制
JP7122396B2 (ja) グラフィックスパイプラインにおけるメモリ使用削減のためのコンパイラ支援技法
US20230289070A1 (en) Efficient memory-semantic networking using scoped memory models
CN113448759A (zh) Gpu应用的高速恢复
CN113450422A (zh) 减少图像中的视觉伪影
US20210374607A1 (en) Stacked dies for machine learning accelerator
US11782838B2 (en) Command processor prefetch techniques
JP7308197B2 (ja) アクセラレーテッド処理デバイスの帯域幅を増加させるための並列データ転送
US10956338B2 (en) Low latency dirty RAM for cache invalidation speed improvement
US11900499B2 (en) Iterative indirect command buffers
US11656877B2 (en) Wavefront selection and execution
US20230297513A1 (en) Cache streaming apparatus and method for deep learning operations
CN111417936B (zh) 用于增加加速处理装置的带宽的并行数据传送
US20220179784A1 (en) Techniques for supporting large frame buffer apertures with better system compatibility
US20240111925A1 (en) Hardware power optimization via e-graph based automatic rtl exploration
JP2023532433A (ja) マルチサンプルアンチエイリアシングのためのロード命令