KR20220113710A - Gpu 패킷 집계 시스템 - Google Patents
Gpu 패킷 집계 시스템 Download PDFInfo
- Publication number
- KR20220113710A KR20220113710A KR1020227019998A KR20227019998A KR20220113710A KR 20220113710 A KR20220113710 A KR 20220113710A KR 1020227019998 A KR1020227019998 A KR 1020227019998A KR 20227019998 A KR20227019998 A KR 20227019998A KR 20220113710 A KR20220113710 A KR 20220113710A
- Authority
- KR
- South Korea
- Prior art keywords
- packet
- output
- input
- input packet
- response
- Prior art date
Links
- 230000002776 aggregation Effects 0.000 title claims description 15
- 238000004220 aggregation Methods 0.000 title claims description 15
- 230000004044 response Effects 0.000 claims abstract description 63
- 239000000872 buffer Substances 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 25
- 230000009471 action Effects 0.000 claims abstract description 3
- 238000000034 method Methods 0.000 claims description 46
- 238000001514 detection method Methods 0.000 claims description 25
- 230000004931 aggregating effect Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 239000004744 fabric Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17337—Direct connection machines, e.g. completely connected computers, point to point communication networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6255—Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
그래픽 프로세싱 유닛(GPU)(100)은 입력 패킷들(130)로부터 데이터를 자동으로 집계하는 패킷 관리 컴포넌트[104]를 포함한다. 수신된 제1 입력 패킷이 발송 조건을 표시하지 않는다고 결정하는 것에 응답하여, 그리고 생성된 출력 패킷(132)이 출력 크기 임계치보다 작을 것이라고 결정하는 것에 응답하여, 패킷 관리 컴포넌트는 제1 입력 패킷에 대응하는 데이터를 패킷 버퍼에 저장된 제2 입력 패킷에 대응하는 데이터와 합산한다. 수신된 제3 입력 패킷이 발송 조건을 표시한다고 결정하는 것에 응답하여, 패킷 관리 컴포넌트는 집계된 데이터를 출력 패킷으로 컴퓨팅 유닛에 발송하고 발송 조건에 의해 표시된 동작을 수행한다.
Description
프로세서들은 종종 동작들을 병렬로 실행하기 위해 컴퓨팅 유닛(Compute Unit, CU)라고 지칭되는 다수의 모듈들을 사용한다. 예를 들어, 프로세서는 다양한 이미지 프로세싱 또는 다른 범용 프로세싱 애플리케이션들을 수행하기 위해 그래픽 프로세싱 유닛 (GPU)을 이용한다. 이들 동작들의 효율적인 실행을 지원하기 위해, GPU는 동작들을 병렬로 실행하기 위해 다수의 CU들을 포함한다. 그러나, 일부 경우들에서, 이러한 동작들을 수행하는 데 사용되는 데이터의 통신은 프로세서의 전체 효율에 영향을 미친다. 예를 들어, 일부 경우들에서, 그래픽들 및 벡터 프로세싱 동작들을 위한 인덱스들은 버스와 같은 통신 패브릭을 통해 CU들로 발송(send)된다. 일부 상황들에서, 이러한 데이터 전송들을 지원하는 통신 트래픽은 통신 패브릭의 이용가능한 대역폭의 바람직하지 않게 큰 부분을 소비하여, GPU에서의 전체 프로세싱 효율을 감소시킨다.
본 개시는 첨부된 도면을 참조함으로써 당업자에게 더 잘 이해될 수 있고, 많은 특징 및 장점이 명백해질 수 있다. 다른 도면에서 동일한 참조 기호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시예들에 따라 입력 패킷들로부터 데이터를 자동으로 집계(aggregation)하는 하드웨어를 포함하는 그래픽 프로세싱 유닛의 블록도이다.
도 2는 일부 실시예들에 따라 입력 패킷들로부터 데이터를 집계하는 방법을 예시하는 흐름도이다.
도 3은 일부 실시예들에 따른 입력 및 출력 패킷들의 예시적인 타임라인을 프로세싱하는 예시적인 패킷 관리 컴포넌트를 예시하는 블록도이다.
도 4는 일부 실시예들에 따라 입력 패킷들로부터 인덱스들을 집계하고 출력 패킷에서 인덱스들을 발송하는 예시적인 패킷 관리 컴포넌트를 예시하는 블록도이다.
도 1은 일부 실시예들에 따라 입력 패킷들로부터 데이터를 자동으로 집계(aggregation)하는 하드웨어를 포함하는 그래픽 프로세싱 유닛의 블록도이다.
도 2는 일부 실시예들에 따라 입력 패킷들로부터 데이터를 집계하는 방법을 예시하는 흐름도이다.
도 3은 일부 실시예들에 따른 입력 및 출력 패킷들의 예시적인 타임라인을 프로세싱하는 예시적인 패킷 관리 컴포넌트를 예시하는 블록도이다.
도 4는 일부 실시예들에 따라 입력 패킷들로부터 인덱스들을 집계하고 출력 패킷에서 인덱스들을 발송하는 예시적인 패킷 관리 컴포넌트를 예시하는 블록도이다.
본 명세서에서 설명된 바와 같이, 다양한 실시예들에서, 그래픽 프로세싱 유닛(GPU)과 같은 프로세싱 유닛의 패킷 집계 시스템의 패킷 관리 컴포넌트는 출력 웨이브프론트(wavefront)가 출력 크기 임계치보다 작을 것이라는 검출에 응답하여 인입 패킷들(incoming packets)로부터 데이터를 집계한다. 발송 조건(send condition)(예를 들어, 인입 패킷은 콘텍스트 스위치 또는 데이터가 특정 시간 동안 패킷 관리 컴포넌트에 저장되었거나 유지되었음을 표시함) 또는 다른 출력 조건을 검출하는 것에 응답하여, 패킷 관리 컴포넌트는 웨이브프론트로서 집계된 데이터를 출력한다. 결과적으로, 데이터가 집계되지 않는 시스템에 비해 통신 인프라가 더 효율적으로 사용된다. 또한, 일부 경우들에서, 출력 조건들은 입력 패킷들의 수와 소프트웨어 프로세싱으로 인한 시간 지연으로 인해 소프트웨어 시스템들 (예를 들어, 드라이버들)이 적시에 검출하기 어렵다. 설명된 실시예들에서, 설명된 시스템들은 입력 패킷들이 수신됨에 따라 하드웨어 레벨에서 출력 조건들을 검출하기 때문에, 시스템은 소프트웨어 드라이버가 데이터를 집계하는 시스템에 비해, 출력 조건들을 더 쉽게 검출한다.
예시하기 위해, GPU들 및 다른 멀티스레딩된 프로세싱 유닛들은 전형적으로, 다수의 데이터 세트들에 대한 명령어들(instructions) 또는 동작들의 세트들을 동시에 실행하는 다수의 프로세싱 엘리먼트들 (프로세서 코어들 또는 컴퓨팅 유닛들이라고도 지칭됨)을 구현한다. 명령어들 또는 동작들의 세트들은 스레드들(threads)로서 지칭된다. 스레드들에 대한 동작들 및 프로그램 데이터는 패킷들로서 지칭되는 통신들을 통해 명령 프로세서(command processor)에 의해 프로세싱 엘리먼트들로 발송된다. 그래픽 시스템과 같은 일부 실시예들에서, 패킷들은 웨이브프론트들로 지칭되는 그래픽 데이터의 집합(collection)들이다.
일부 경우들에서, 웨이브프론트들 (또는 다른 패킷들)의 통신은 하드웨어 비효율적이다. 예를 들어, 프로그램이 각각 단지 몇 개의 인덱스들(예를 들어, 하나 또는 5개의 인덱스들)을 갖는 많은 수의 웨이브프론트들(예를 들어, 드로우들)을 호출하면, 결과적인 웨이브프론트들 각각은 더 많은 인덱스들을 포함하는 웨이브프론트들을 발송하도록 설계된 통신 인프라구조(예를 들어, 32-와이드 인프라구조 또는 256-와이드 통신 인프라구조)를 비효율적으로 활용할 것이다. 다양한 실시예들에서, 인덱스들은 정점 좌표들의 위치들을 제공하는 사용자에 의해 생성된 값들을 지칭한다. 일부 경우들에서, 인입 패킷은 단일 웨이브프론트에서 통신될 수 있는 것보다 많은 데이터를 포함하지만, 패킷을 기반으로 생성된 마지막 웨이브프론트에 대한 데이터가 통신 인프라구조를 효율적으로 사용하기에는 충분하지 않는다. 또한, 소프트웨어 드라이버가 웨이브프론트 데이터를 집계하기 위해 사용되는 일부 경우들에서, 소프트웨어는 웨이브프론트들의 양으로 인해 출력 조건들 (예를 들어, 레지스터 상태 업데이트들, 파이프라인 플러시들, 또는 콘텍스트 스위치들)을 검출하는 것이 어렵다.
도 1은 일부 실시예들에 따라 입력 패킷들로부터 데이터를 자동으로 집계하는 하드웨어를 포함하는 그래픽 프로세싱 유닛(GPU)(100)의 블록도이다. 예시된 실시예에서, GPU(100)는 명령 프로세서(102), 패킷 관리 컴포넌트(104), 및 컴퓨팅 유닛(106)을 포함한다. 패킷 관리 컴포넌트(104)는 패킷 버퍼(110), 패킷 집계 컴포넌트(112), 및 출력 조건 검출 컴포넌트(114)를 포함한다. 출력 조건 검출 컴포넌트(114)는 발송 조건 검출 컴포넌트(120) 및 타임아웃 검출 컴포넌트(122)를 포함한다. 그러나, 다른 실시예들에서, 다른 구조적 배열들(예를 들어, 추가적인 컴포넌트들 또는 더 적은 컴포넌트들)이 고려된다. 예를 들어, 일부 실시예들에서, 발송 조건 검출 컴포넌트(120)는 타임아웃 검출 컴포넌트(122)를 포함한다. 다른 실시예들에서, 타임아웃 검출 컴포넌트(122)는 출력 조건 검출 컴포넌트(114)와 별도이다. 또한, 명확성을 위해 단일 컴퓨팅 유닛(106)만이 예시되지만, 다양한 실시예들에서, GPU(100)는 복수의 컴퓨팅 유닛들을 포함한다.
일부 실시예들에서, GPU(100)는 데스크탑 또는 랩탑 컴퓨터, 서버, 스마트폰, 태블릿, 게임 콘솔, 또는 다른 전자 디바이스와 같은 디바이스의 일부이다. 디바이스는 다양한 명령들 또는 명령어들(예를 들어, 드로우 명령들)을 GPU(100)에 발송하는 중앙 프로세싱 유닛(CPU)을 포함한다.
예시된 실시예에서, GPU(100)는 다양한 동작들을 실행한다. 이러한 동작에는 프로세싱될 데이터를 호출하는 프로그램 호출이 포함된다. 그 결과, 명령 프로세서 (102)는 다양한 입력 패킷들 (130)을 패킷 관리 컴포넌트 (104)에 발송하고, 여기서 입력 패킷들은 프로그램 호출들에 기초하여 GPU (100)로부터의 명령들의 다양한 세트들을 표시한다. 다양한 실시예들에서, 입력 패킷들(130)은 드로우 인덱스들 또는 발송 조건들의 표시들(예를 들어, 패킷 관리 컴포넌트(104)로 하여금 하나 이상의 컴퓨팅 유닛들로 데이터를 출력하게 할 이벤트들의 표시들)을 포함하는 다양한 유형들의 데이터를 포함한다. 일부 실시예들에서, 입력 패킷들(130)은 일정 기간(period of time)에 걸쳐 순차적으로 발송된다. 패킷 관리 컴포넌트는 입력 패킷들(130)로부터의 데이터에 기초하여 출력 패킷(132)을 생성한다. 출력 패킷이 출력 크기 임계치보다 작은 경우(예를 들어, 입력 패킷이 출력 크기 임계치의 패킷을 생성하는데 사용되는 양보다 적은 데이터를 포함하기 때문에 또는 입력 패킷이 다수의 출력 패킷들이 생성되기에 충분한 데이터를 포함하기 때문에 그리고 최종 출력 패킷이 출력 크기 임계치보다 작을 것이기 때문에), 패킷 관리 컴포넌트(104)는 입력 패킷들(130)의 하나 이상의 입력 패킷들에 대응하는 데이터를 유지 및 집계하고, 집계된 데이터를 출력 패킷(132)으로서 컴퓨팅 유닛(106)과 같은 하나 이상의 컴퓨팅 유닛들로 출력한다. 일부 실시예들에서, 출력 패킷(132)은 복수의 컴퓨팅 유닛들 각각으로 발송되거나 상이한 출력 패킷들이 각각의 컴퓨팅 유닛들로 발송된다. 일부 실시예들에서, 집계된 출력 패킷은 집계된 출력 패킷(예를 들어, 제1 수신된 입력 패킷에 대응하는 다양한 헤더들 및 다른 데이터를 포함함)에 포함된 제1 수신된 입력 패킷인 것처럼 발송된다. 다른 실시예들에서, 집계된 출력 패킷은 그것이 상이한 수신된 입력 패킷인 것처럼 발송되거나, 집계된 출력 패킷은 다수의 수신된 입력 패킷들을 표시하거나, 또는 집계된 출력 패킷은 수신된 입력 패킷들 중 어느 것도 표시하지 않는다.
보다 구체적으로, 입력 패킷들(130) 중 하나 이상을 수신하는 것에 응답하여, 패킷 관리 컴포넌트(104)는 수신된 입력 패킷들을 분석한다. 발송 조건 검출 컴포넌트(120)에 기초하여, 입력 패킷이 발송 조건을 표시하지 않는다는 것을 검출하는 것에 응답하여, 패킷 관리 컴포넌트(104)는 패킷 집계 컴포넌트(112)를 사용하여 패킷 버퍼(110) 내의 입력 패킷에 대응하는 데이터를 집계한다. 예를 들어, 패킷 집계 컴포넌트(112)는 패킷 버퍼(110) 내의 이전에 저장된 데이터와 인입 입력 패킷에 대응하는 데이터를 집계한다. 일부 실시예들에서, 데이터는 전체 입력 패킷이다. 다른 실시예들에서, 데이터는 입력 패킷의 일부, 입력 패킷에 의해 표시된 데이터(예를 들어, 입력 패킷에 의해 표시된 하나 이상의 계산들의 결과로서 생성된 데이터), 또는 양자 모두이다. 발송 조건 검출 컴포넌트(120)를 사용하여, 입력 패킷이 발송 조건을 표시한다는 것을 검출하는 것에 응답하여, 패킷 관리 컴포넌트(104)는 집계된 데이터를 출력 패킷(132) 내의 컴퓨팅 유닛(106)과 같은 하나 이상의 컴퓨팅 유닛으로 발송한다. 따라서, 출력 패킷이 각각의 입력 패킷에 대해 발송되는 시스템에 비해, 더 적은 출력 패킷(132)이 컴퓨팅 유닛(106)으로 발송된다. 일부 실시예들에서, 입력 패킷들(130)은 드로우 명령들의 인덱스들이고, 출력 패킷(132)은 입력 패킷들(130)의 다수의 입력 패킷들에 대응하는 인덱스들을 포함하는 웨이브프론트이다. 일부 실시예들에서, 발송 조건 검출 컴포넌트(120)는 출력 패킷이 출력 크기 임계치보다 작을 것이라는 검출에 응답하여 입력 패킷이 발송 조건을 표시하는지 여부만을 결정한다. 다른 실시예들에서, 발송 조건 검출 컴포넌트(120)는 출력 패킷이 출력 크기 임계치보다 작을 것인지 여부를 검출하는 것과 병렬로 다양한 발송 조건들을 검출한다.
패킷 관리 컴포넌트(104)가 출력 패킷(132)을 컴퓨팅 유닛(106)으로 발송하게 하는 다양한 출력 조건들이 고려된다. 일부 실시예들에서, 출력 조건들은 발송 조건들(예를 들어, 인입 패킷들에 의해 표시된 조건들), 타임아웃 조건들, 및 크기 조건들을 포함한다. 따라서, 출력 조건 검출 컴포넌트(114)는 다양한 출력 조건들을 검출하기 위한 판독 인에이블 로직 및 버퍼들과 같은 다양한 하드웨어를 포함한다. 예시된 실시예에서, 일부 출력 조건들은 입력 패킷들(130)의 입력 패킷에 의해 표시되는 발송 조건들이다. 몇몇 예들을 제공하기 위해, 일부 경우들에서, 입력 패킷의 상태 정보는 레지스터 상태 업데이트(예를 들어, 드로우 토폴로지를 특정하는 패킷, 드로우 워크로드의 분포를 제어하는 패킷, 또는 인덱스 유형의 비트들의 수를 특정하는 패킷) 또는 이벤트(예를 들어, 파이프라인 플러시(pipeline flush)(예를 들어, 부정확한 브랜치 예측으로 인해 파이프라인의 명령어들이 제거되는 프로세스) 또는 컨텍스트 스위치(2개의 애플리케이션들, 태스크들, 또는 프로그램들 사이의 스위치))를 표시한다. 또한, 일부 경우에, 출력 조건은 드로우 소스(draw source)를 변경하는 것(예를 들어, 직접 메모리 액세스로부터 자동 인덱스로 또는 그 반대로), 가상 현실 제어 필드를 변경하는 것, 또는 드로우 사이의 인덱스 크기를 변경하는 것을 포함한다. 그렇지만, 다양한 다른 수단에 의해 검출된 것을 포함하는 다른 출력 조건도 고려된다.
일부 경우들에서, 출력 조건은 타임아웃 검출 컴포넌트(122)의 패킷 스토리지 타이머가 타임아웃 임계치를 초과한다는 것을 표시하는 타임아웃 검출 컴포넌트(122)를 포함한다. 예를 들어, 일부 실시예들에서, 패킷 스토리지 타이머는 적어도 일부 데이터가 패킷 버퍼(110)에 저장된 시간의 양(예를 들어, 가장 오래 저장된 데이터)을 트래킹한다. 타임아웃 임계치를 초과하는 시간의 양(예를 들어, 50 클록 사이클 또는 1 마이크로초)에 응답하여, 타임아웃 검출 컴포넌트(122)는 출력 조건을 표시한다. 경우에 따라 타임아웃 임계치는 사용자가 특정한다. 다른 경우들에서, 타임아웃 임계치는 GPU(100) 상에서 실행되는 애플리케이션과 같은 다른 엔티티에 의해 특정된다.
일부 경우들에서, 패킷 버퍼(110)에 저장되거나 그렇지 않으면 유지되는 데이터는 패킷 관리 컴포넌트(104)와 컴퓨팅 유닛(106) 사이의 통신 인프라구조의 용량을 초과한다. 따라서, 출력 패킷은 통신 인프라구조를 효율적으로 활용할 수 있다. 따라서, 일부 실시예들에서, 출력 조건은 패킷 버퍼(110)에 저장된 집계된 데이터의 양이 출력 크기 임계치를 초과한다고 결정하는 것을 포함한다. 일부 실시예들에서, 출력 크기 임계치는 사용자 특정된다. 일부 실시예들에서, 출력 크기 임계치는 출력 패킷(132)을 컴퓨팅 유닛(106)으로 발송하기 위해 사용되는 통신 인프라구조의 크기에 대응한다. 통신 인프라구조가 32-와이드(wide)인 경우, 패킷 버퍼가 31개 보다 많은 인덱스를 저장하는 것을 검출하는 것은 출력 조건 검출 컴포넌트(114)가 출력 조건이 충족됨을 표시하게 한다.
입력 패킷들(130)의 데이터를 집계하는 다양한 방식들이 고려된다. 예를 들어, 일 실시예에서, 패킷 집계 컴포넌트(112)는 패킷 버퍼(110)가 각각의 구분자들(delimiters)에 의해 분리된 입력 패킷들(130)의 데이터를 저장하게 한다. 다른 예로서, 다른 실시예에서, 입력 패킷들(130)의 데이터를 집계하는 것은 패킷 버퍼(110)에 저장된 헤더 파일을 업데이팅하여 입력 패킷들(130)의 각각의 입력 패킷들에 대응하는 어드레스들을 표시하는 것을 포함한다. 일부 실시예들에서, 입력 패킷들(130)은 그 전체가 패킷 버퍼(110)에 저장되거나 그렇지 않으면 유지된다. 다른 실시예들에서, 입력 패킷들(130)의 일부만이 패킷 버퍼(110)에 저장되거나 그렇지 않으면 유지된다.
따라서, 패킷들(예를 들어, 드로우 인덱스들)이 하드웨어 컴포넌트들에 의해 (예를 들어, 패킷들에 관한 특정 소프트웨어 명령어들 없이) 자동으로 집계되는 시스템이 개시된다. 일부 실시예들에서, 시스템은 소프트웨어 관리 없이 패킷들을 집계한다. 또한, 시스템은 다양한 출력 조건들(예를 들어, 레지스터 상태 업데이트들 및 이벤트들)을 검출하고, 출력 조건들에 응답하여 집계된 패킷들을 발송한다. 자동으로 출력 조건을 검출함으로써, 시스템은 소프트웨어 개입(intervention) 또는 레거시 소프트웨어의 재설계 없이 효율적인 패킷 집계를 지원한다.
도 2는 일부 실시예들에 따라 입력 패킷들로부터 데이터를 집계하는 방법(200)을 예시하는 흐름도이다. 방법(200)은, 일부 실시예들에서, 도 1의 GPU(100)의 패킷 관리 컴포넌트(104)에 의해 구현된다. 일부 실시예들에서, 방법(200)은 컴퓨터 판독가능 스토리지 매체에 의해 저장된 하나 이상의 명령어들에 응답하여 하나 이상의 프로세서들에 의해 개시된다.
202에서, 방법(200)은 명령 프로세서로부터 입력 패킷을 수신하는 단계를 포함한다. 예를 들어, 일부 경우에, 패킷 관리 컴포넌트(104)는 명령 프로세서(102)로부터 입력 패킷(130)을 수신한다.
204에서, 방법(200)은 입력 패킷이 발송 조건을 표시하는지 여부를 결정하는 단계를 포함한다. 예를 들어, 일부 경우들에서, 패킷 관리 컴포넌트 (104)는 수신된 입력 패킷 (130) 이 발송 조건 (예를 들어, 레지스터 상태 업데이트 또는 이벤트)을 (예를 들어, 상태 정보를 통해) 표시하는지 여부를 결정한다. 입력 패킷이 발송 조건을 표시한다고 결정하는 것에 응답하여, 방법(200)은 216으로 진행한다. 입력 패킷이 발송 조건을 표시하지 않는다고 결정하는 것에 응답하여, 방법(200)은 206으로 진행한다.
206에서, 입력 패킷이 발송 조건을 표시하지 않는다고 결정하는 것에 응답하여, 방법(200)은 출력 패킷이 개방되어 있는지 여부를 결정하는 단계를 포함한다. 예를 들어, 일부 경우에, 패킷 관리 컴포넌트(104)는 패킷 버퍼(110)가 개방 출력 패킷을 포함하는지 여부를 결정한다. 출력 패킷이 개방되어 있다고 결정하는 것에 응답하여, 방법(200)은 210으로 진행한다. 출력 패킷이 개방되어 있지 않다고 결정하는 것에 응답하여, 방법(200)은 208로 진행한다.
208에서, 어떠한 출력 패킷도 개방되지 않는다고 결정하는 것에 응답하여, 방법(200)은 새로운 출력 패킷을 생성하는 단계를 포함한다. 예를 들어, 일부 경우에, 패킷 관리 컴포넌트(104)는 패킷 버퍼(110)에 새로운 출력 패킷을 생성한다.
210에서, 출력 패킷이 개방되어 있거나 또는 새로운 출력 패킷을 생성하는 것에 후속하여 결정된 것에 응답하여, 방법(200)은 입력 패킷의 콘텐츠를 출력 패킷에 추가하는 단계를 포함한다. 예를 들어, 일부 경우들에서, 패킷 관리 컴포넌트(104)는 패킷 버퍼(110)에서, 입력 패킷(130)에 대응하는 데이터를 하나 이상의 이전에 저장되거나 그렇지 않으면 보유된 입력 패킷들에 대응하는 데이터와 집계한다. 다른 예로서, 일부 경우에, 패킷 관리 컴포넌트(104)는 입력 패킷(130)에 대응하는 데이터를 패킷 버퍼(110)의 새롭게 생성된 출력 패킷에 추가한다.
단계(212)에서, 입력 패킷 콘텐츠를 출력 패킷에 추가하는 것에 후속하여 또는 인입 입력 패킷의 어떠한 표시도 없는 것에 응답하여, 방법(200)은 타임아웃 조건이 충족되는지 여부를 결정하는 단계를 포함한다. 예를 들어, 일부 경우에, 타임아웃 검출 컴포넌트(122)는 출력 패킷의 적어도 일부가 패킷 버퍼(110)에 저장되었거나 또는 그렇지 않으면 유지된 시간의 양을 표시하는 타임아웃 스토리지 트랙커를 체크한다. 타임아웃 스토리지 트랙커가 타임아웃 임계치를 초과하는 것에 응답하여, 타임아웃 검출 컴포넌트(122)는 타임아웃 조건이 충족되는 것으로 결정한다. 타임아웃 조건이 충족된다는 결정에 응답하여, 방법(200)은 216으로 진행한다. 타임아웃 스토리지 트랙커가 타임아웃 임계치를 초과하지 않는 것에 응답하여, 타임아웃 검출 컴포넌트(122)는 타임아웃 조건이 충족되지 않는다고 결정한다. 타임아웃 조건이 충족되지 않는다고 결정하는 것에 응답하여, 방법(200)은 214로 진행한다. 일부 실시예들에서, 212는 출력 패킷의 크기가 출력 크기 임계치를 초과하는지 여부를 결정하는 것을 더 포함하고, 출력 패킷의 크기가 출력 크기 임계치를 초과한다고 결정하는 것에 응답하여, 216으로 진행한다. 일부 실시예들에서, 출력 패킷의 크기가 출력 크기 임계치를 초과한다고 결정하고, 216으로 진행하는 것은, 예를 들어, 202와 204 사이를 포함하는 방법(200)의 다른 부분들에서 추가적으로 또는 대안적으로 수행된다.
214에서, 타임아웃 조건이 충족되지 않는다고 결정하는 것에 응답하여, 또는 출력 패킷을 발송하고 하나가 표시된다면 발송 조건을 수행하는 것에 응답하여, 방법(200)은 인입 입력 패킷이 표시되는지 여부를 결정하는 단계를 포함한다. 예를 들어, 일부 경우에, 패킷 관리 컴포넌트(104)는 명령 프로세서(102)가 입력 패킷을 발송하고 있는지 여부를 결정한다. 인입 입력 패킷을 검출하는 것에 응답하여, 방법(200)은 202로 진행한다. 입력 패킷을 검출하지 못하는 것에 응답하여, 방법(200)은 212로 진행한다.
216에서, 입력 패킷이 발송 조건을 표시한다고 결정하는 것에 응답하여 또는 타임아웃 조건이 충족된다고 결정하는 것에 응답하여, 방법(200)은 출력 패킷을 컴퓨팅 유닛으로 발송하는 단계를 포함한다. 예를 들어, 일부 경우들에서, 발송 조건을 표시하는 입력 패킷(130)에 응답하여, 패킷 관리 컴포넌트(104)는 출력 패킷을 닫고 출력 패킷(132)으로서 출력 패킷을 컴퓨팅 유닛(106)에 발송한다. 다른 예로서, 일부 경우들에서, 타임아웃 검출 컴포넌트(122)가 타임아웃 조건이 충족됨을 검출하는 것에 응답하여, 패킷 관리 컴포넌트(104)는 출력 패킷을 닫고 출력 패킷(132)으로서 출력 패킷을 컴퓨팅 유닛(106)에 발송한다.
단계(218)에서, 출력 패킷을 컴퓨팅 유닛(106)으로 발송하는 것에 후속하여, 방법(200)은 (예를 들어, 단계(204)에서) 표시된 경우 발송 조건을 수행하는 단계를 포함한다. 예를 들어, 발송 조건을 표시하는 입력 패킷(130)에 응답하여, 패킷 관리 컴포넌트(104)는 출력 패킷(132)을 컴퓨팅 유닛(106)에 발송하고, 그 후 표시된 발송 조건을 수행한다. 따라서, 입력 패킷들로부터 데이터를 집계하는 방법이 도시된다.
도 3은 일부 실시예들에 따라 입력 및 출력 패킷들을 프로세싱하는 예시적인 패킷 관리 컴포넌트를 예시하는 타임라인(300)을 도시하는 블록도이다. 예시된 예에서, 입력 패킷들(302-312 및 316)은 패킷 관리 컴포넌트(예를 들어, 패킷 관리 컴포넌트(104))에서 수신된다. 또한, 이벤트(314)는 패킷 관리 컴포넌트에서 검출된다.
예시하기 위해, 입력 패킷(302)을 수신하는 것에 응답하여, 새로운 출력 패킷이 생성되고 입력 패킷(302)에 의해 표시된 드로우 데이터(드로우1)가 출력 패킷에 추가된다. 입력 패킷들(304 및 306)을 수신하는 것에 응답하여, 입력 패킷들(304 및 306)에 의해 표시된 드로우 데이터(드로우2 및 드로우3)는 입력 패킷(302)에 의해 표시된 드로우 데이터와 집계된다. 입력 패킷(308)은 컨텍스트 스위치(발송 조건)를 표시한다. 예시된 예에서, 입력 패킷(308)은 입력 패킷들(302-306)이 후속하여 수신된 입력 패킷들(310 및 312)과 상이한 컨텍스트에 대응한다는 것을 표시한다. 따라서, 발송 조건을 검출하는 것에 응답하여, 입력 패킷들(302-306)에 의해 표시된 드로우 데이터를 포함하는 출력 패킷이 발송되고 그 후 컨텍스트 스위치가 수행된다. 입력 패킷(310)을 수신하는 것에 응답하여, 새로운 출력 패킷이 생성되고, 입력 패킷(310)에 의해 표시된 드로우 데이터(드로우4)가 출력 패킷에 추가된다. 입력 패킷(312)을 수신하는 것에 응답하여, 입력 패킷(312)에 의해 표시된 드로우 데이터(드로우5)가 출력 패킷에 추가된다. 예시된 예에서, 314에서, 타임아웃 검출 컴포넌트는 패키지 스토리지 타이머가 출력 패킷 내의 데이터의 적어도 일부(예를 들어, 입력 패킷(310)에 의해 표시된 드로우 데이터)가 타임아웃 임계치보다 더 오래 저장되었음을 표시한다는 것을 검출한다. 따라서, 이벤트(314)에서, 타임아웃 조건이 충족되고 입력 패킷들(310 및 312)에 의해 표시된 드로우 데이터를 포함하는 출력 패킷이 발송된다. 입력 패킷(316)을 수신하는 것에 응답하여, 새로운 출력 패킷이 생성되고, 입력 패킷(316)에 의해 표시된 드로우 데이터(드로우6)가 출력 패킷에 추가된다. 따라서, 입력 및 출력 패킷들의 예시적인 타임라인(300)이 예시된다.
도 4는 일부 실시예들에 따른 패킷 버퍼(110)를 포함하는 패킷 관리 컴포넌트(104)를 포함하는 예시적인 GPU(400)를 예시하는 블록도이다. 예에서, 패킷 관리 컴포넌트(104)는 패킷 버퍼(110) 내의 입력 패킷들(402-406)로부터 인덱스들(410-414)을 집계한다. 그 결과, 인덱스들(410-414)은 집계되고 패킷 버퍼(110)에 함께 저장된다. 예에서, 입력 패킷(408)으로부터의 레지스터 상태 업데이트 표시(416)에 응답하여, 패킷 관리 컴포넌트(104)는 출력 패킷(420)에서 인덱스들(410-414)을 발송한다. 일부 실시예들에서, 입력 패킷들(402-408)은 도 1의 입력 패킷들(130)에 대응하고 출력 패킷(420)은 도 1의 출력 패킷(132)에 대응한다.
본 명세서에 개시된 바와 같이, 일부 실시예에서, 방법은 그래픽 프로세싱 유닛 (GPU)의 명령 프로세서로부터 패킷 관리 컴포넌트에 의해, 제 1 세트의 명령들을 표시하는 제 1 입력 패킷을 수신하는 단계; 제1 입력 패킷이 발송 조건을 표시하지 않는다고 결정하는 것에 응답하여, 제1 입력 패킷에 대응하는 데이터를 패킷 관리 컴포넌트의 패킷 버퍼에 저장된 이전에 수신된 패킷 데이터와 자동으로 집계하는 단계를 포함한다. 일 양태에서, 방법은 GPU 로부터 수신된 명령들의 제 2 세트를 표시하는 제 2 입력 패킷을 수신하는 단계; 제2 입력 패킷이 발송 조건을 표시한다고 결정하는 것에 응답하여, 집계된 데이터를 출력 패킷 내의 컴퓨팅 유닛으로 발송하는 단계; 발송 조건에 의해 표시되는 동작을 수행하는 단계를 포함한다. 다른 양태에서, 제 1 입력 패킷은 제 1 복수의 드로우 인덱스들을 포함하고, 이전에 수신된 패킷 데이터는 제 2 복수의 드로우 인덱스들을 포함하고, 집계된 데이터는 제 1 복수의 드로우 인덱스들 및 제 2 복수의 드로우 인덱스들을 포함한다.
일 양태에서, 출력 패킷은 GPU의 컴퓨팅 유닛에 의해 수행될 동작들의 세트를 포함하는 웨이브프론트이다. 다른 양태에서, 제 2 입력 패킷은 레지스터 상태 업데이트, 콘텍스트 스위치, 또는 파이프라인 플러시 중 적어도 하나를 표시한다. 다른 양태에서, 방법은 동작을 수행하는 것에 후속하여, GPU로부터 수신된 명령들의 제3 세트를 표시하는 제3 입력 패킷을 수신하는 단계; 상기 제3 입력 패킷에 대응하는 데이터를 상기 패킷 버퍼에 저장하는 단계; 그리고 타임아웃 조건이 충족되었다는 것을 검출하는 것에 응답하여, 제3 입력 패킷을 제2 출력 패킷으로 컴퓨팅 유닛에 발송하는 단계를 포함한다. 또 다른 양태에서, 방법은 동작을 수행하는 것에 후속하여, GPU로부터 수신된 명령들의 제3 세트를 표시하는 제3 입력 패킷을 수신하는 단계; 상기 제3 입력 패킷에 대응하는 데이터를 상기 패킷 버퍼에 저장하는 단계; 그리고, 패킷 버퍼에 저장된 제 2 집계된 데이터의 양이 출력 크기 임계치를 초과하는 것을 검출하는 것에 응답하여, 제 3 입력 패킷을 제 2 출력 패킷으로 컴퓨팅 유닛에 발송하는 단계를 포함한다. 또 다른 양태에서, 출력 크기 임계치는 사용자 프로그래밍가능하다.
일부 실시예들에서, 그래픽 프로세싱 유닛(GPU)은 GPU로부터 수신된 명령들을 표시하는 입력 패킷들을 발송하도록 구성된 명령 프로세서; 패킷 관리 컴포넌트를 포함하고, 상기 패킷 관리 컴포넌트는 명령 프로세서로부터 수신된 입력 패킷들에 대응하는 데이터를 저장하도록 구성된 패킷 버퍼; 패킷 집계 컴포넌트를 포함하고, 상기 패킷 집계 컴포넌트는 인입 제1 입력 패킷의 상태 정보를 식별하고; 집계 조건을 표시하는 상태 정보에 응답하여, 제1 입력 패킷에 대응하는 데이터를 패킷 버퍼에 저장된 제2 입력 패킷에 대응하는 데이터와 집계하고; 발송 조건을 표시하는 상태 정보에 응답하여, 컴퓨팅 유닛에 의한 프로세싱을 위해 출력 패킷을 발송하도록 구성되고, 여기서 출력 패킷은 패킷 버퍼에 저장된 집계된 데이터를 포함한다. 일 양태에서, 패킷 집계 컴포넌트는 제 2 입력 패킷에 대응하는 데이터의 적어도 일부가 타임아웃 임계치를 초과하여 저장된 시간의 양에 응답하여 출력 패킷이 발송되게 하도록 구성된 타임아웃 검출 컴포넌트를 포함한다. 다른 양태에서, 타임아웃 임계치는 사용자-특정된다.
일 양태에서, 출력 패킷은 웨이브프론트이다. 다른 양태에서, 집계된 데이터는 제 1 입력 패킷의 일부 및 제 2 입력 패킷의 일부를 포함한다. 다른 양태에서, 집계된 데이터는 제 1 입력 패킷 및 제 2 입력 패킷을 포함한다.
일부 실시예들에서, 방법은 명령 프로세서로부터 패킷 관리 컴포넌트에 의해, 그래픽 프로세싱 유닛 (GPU)으로부터 수신된 명령들의 제 1 세트를 표시하는 제 1 입력 패킷을 수신하는 단계; 상기 제1 입력 패킷에 대응하는 데이터를 상기 패킷 관리 컴포넌트의 패킷 버퍼에 저장하는 단계; GPU로부터 수신된 명령들의 제2 세트를 표시하는 제2 입력 패킷을 수신하는 단계; 출력 조건이 충족되지 않았다고 결정하는 것에 응답하여, 제2 입력 패킷에 대응하는 데이터를 제1 입력 패킷에 대응하는 데이터와 자동으로 집계하는 단계; 그리고 출력 조건이 충족되었다는 결정에 응답하여, 집계된 데이터를 하나 이상의 출력 패킷들 내의 하나 이상의 컴퓨팅 유닛들로 발송하는 단계를 포함한다. 일 양태에서, 출력 조건이 충족되었다고 결정하는 것은 패킷 버퍼에 저장된 집계된 데이터의 양이 출력 크기 임계치를 초과한다고 결정하는 것에 응답하여 수행된다.
일 양태에서, 출력 조건이 충족되었다고 결정하는 것은 제 3 입력 패킷이 발송 조건을 표시한다고 결정하는 것을 포함한다. 다른 양태에서, 방법은 제1 입력 패킷을 수신하는 것에 응답하여, 패킷 관리 컴포넌트의 타임아웃 검출 컴포넌트에서, 패킷 스토리지 타이머를 시작하는 단계를 포함한다. 일 양태에서, 출력 조건이 충족되었다고 결정하는 것은 패킷 스토리지 타이머가 타임아웃 임계치를 초과한다고 결정하는 것을 포함한다. 다른 양태에서, 타임아웃 임계치는 사용자-특정된다.
일부 실시예들에서, 컴퓨터 판독 가능 스토리지 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하기 위해 사용하는 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 스토리지 매체 또는 비일시적 스토리지 매체의 조합을 포함한다. 다양한 실시예들에서, 그러한 스토리지 매체는 광학 매체(예를 들어, 콤팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 읽기 전용 메모리(ROM) 또는 플래시 메모리), 또는 MEMS(마이크로 전자기계 시스템) 기반 스토리지 매체를 포함하고 그러나 여기에 제한은 되지 않는다. 일부 실시예들에서, 컴퓨터 판독 가능 스토리지 매체는 컴퓨팅 시스템(예를 들어, 시스템 RAM 또는 ROM)에 임베디드될 수 있고, 컴퓨팅 시스템(예를 들어, 자기 하드 드라이브)에 고정적으로 부착되거나, 컴퓨팅 시스템(예를 들어, 광학 디스크 또는 유니버설 직렬 버스(USB) 기반 플래시 메모리)에 제거 가능하게 부착되거나, 또는 유선 또는 무선 네트워크(예를 들어, 네트워크 액세스 가능 스토리지(NAS))를 통해 컴퓨터 시스템에 결합된다.
일부 실시예들에서, 위에서 설명된 기술들의 특정 양태들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 구현된다. 소프트웨어는 비일시적 컴퓨터 판독가능 스토리지 매체 상에 저장되거나 그렇지 않으면 유형적으로 실시된 하나 이상의 실행가능한 명령어들의 세트들을 포함한다. 일부 실시예들에서, 소프트웨어는 하나 이상의 프로세서들에 의해 실행될 때, 위에서 설명된 기술들의 하나 이상의 양태들을 수행하기 위해 하나 이상의 프로세서들을 조작하는 명령어들 및 특정 데이터를 포함한다. 예를 들어, 일부 경우에, 비일시적 컴퓨터 판독 가능 스토리지 매체는 자기 또는 광학 디스크 스토리지 디바이스, 플래시 메모리(Flash memory), 캐시(cache), 램(RAM) 등과 같은 솔리드 스테이트 스토리지 디바이스 또는 다른 비휘발성 메모리 디바이스 또는 디바이스들 등을 포함한다. 일부 실시예들에서, 비일시적 컴퓨터 판독가능 스토리지 매체 상에 저장된 실행가능한 명령어들은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서들에 의해 해석되거나 다른 방식으로 실행가능한 다른 명령어 포맷이다.
일반적인 설명에서 위에서 설명한 모든 활동 또는 엘리먼트가 요구되지 않으며, 특정 활동 또는 장치의 일부가 요구되지 않으며, 위에서 설명한 것들에 더하여 하나 이상의 추가적인 활동이 수행될 수 있거나, 또는 포함된 엘리먼트들이 요구된다는 점에 유의한다. 또한 활동이 나열되는 순서는 반드시 활동이 수행되는 순서는 아니다. 또한, 구체적인 실시예를 참조하여 개념을 설명하였다. 그러나 통상의 지식을 가진 자라면 아래의 청구항들에 기재된 바와 같이 본 개시의 범위를 벗어나지 않는 범위에서 다양한 수정 및 변경이 가능하다는 것을 알 수 있다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 하며, 이러한 모든 수정은 본 개시의 범위 내에 포함되도록 의도된다.
이점들, 다른 장점들, 및 문제점들에 대한 해결책들이 특정 실시예들과 관련하여 위에서 설명되었다. 그러나, 이점, 장점, 문제에 대한 해결책, 및 어떤 이점, 장점, 또는 해결책이 발생하거나 더 두드러지게 되는 어떤 특징은 청구항들 중 어느 하나 또는 모든 청구항들의 중요한, 요구되는, 또는 필수적인 특징으로 해석되지 않는다. 더욱이, 위에서 개시된 특정 실시예들은 단지 예시적이며, 개시된 주제가 본 명세서의 교시들의 이점을 갖는 당업자들에게 명백하지만 상이한 그러나 동등한 방식들로 수정되고 실시될 수 있다. 이하의 청구항에 기재된 것 이외의, 본 명세서에 기재된 구성 또는 설계의 상세사항에 대한 제한은 의도되지 않는다. 따라서, 위에서 개시된 특정 실시예들은 변경 또는 수정될 수 있고, 이러한 모든 변형들은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구하는 보호범위는 아래의 청구범위에 명시된 바와 같다.
Claims (20)
- 방법에 있어서,
그래픽 프로세싱 유닛(GPU)(100)의 명령 프로세서(102)로부터 패킷 관리 컴포넌트(104)에 의해, 명령들의 제 1 세트를 표시하는 제 1 입력 패킷(404)을 수신하는 단계;
상기 제1 입력 패킷이 발송 조건을 표시하지 않는다고 결정하는 것에 응답하여, 상기 제1 입력 패킷에 대응하는 데이터(412)를 상기 패킷 관리 컴포넌트의 패킷 버퍼(110)에 저장된 이전에 수신된 패킷 데이터(410)와 자동으로 집계하는(aggregating) 단계를 포함하는, 방법. - 제1항에 있어서,
상기 GPU로부터 수신된 명령들의 제2 세트를 표시하는 제2 입력 패킷(416)을 수신하는 단계;
상기 제2 입력 패킷이 발송 조건을 표시한다고 결정하는 것에 응답하여, 상기 집계된 데이터를 출력 패킷 내의 컴퓨팅 유닛으로 발송하는 단계; 및
상기 발송 조건에 의해 표시되는 동작을 수행하는 단계를 더 포함하는, 방법. - 제2항에 있어서, 상기 제 1 입력 패킷은 제 1 복수의 드로우 인덱스들을 포함하고, 상기 이전에 수신된 패킷 데이터는 제 2 복수의 드로우 인덱스들을 포함하고, 상기 집계된 데이터는 상기 제 1 복수의 드로우 인덱스들 및 상기 제 2 복수의 드로우 인덱스들을 포함하는, 방법.
- 제2항 또는 제3항에 있어서, 상기 출력 패킷은 상기 GPU의 상기 컴퓨팅 유닛에 의해 수행될 동작들의 세트를 포함하는 웨이브프론트인, 방법.
- 제2항 내지 제4항 중 어느 한 항에 있어서, 상기 제2 입력 패킷은 레지스터 상태 업데이트, 콘텍스트 스위치, 또는 파이프라인 플러시 중 적어도 하나를 표시하는, 방법.
- 제2항 내지 제5항 중 어느 한 항에 있어서,
상기 동작을 수행하는 것에 후속하여, 상기 GPU로부터 수신된 명령들의 제3 세트를 표시하는 제3 입력 패킷(406)을 수신하는 단계;
상기 제3 입력 패킷에 대응하는 데이터(414)를 상기 패킷 버퍼에 저장하는 단계; 및
타임아웃 조건이 충족되었다는 것을 검출하는 것에 응답하여, 상기 제3 입력 패킷을 제2 출력 패킷으로 컴퓨팅 유닛에 발송하는 단계를 더 포함하는, 방법. - 제2항 내지 제5항 중 어느 한 항에 있어서,
상기 동작을 수행하는 것에 후속하여, 상기 GPU로부터 수신된 명령들의 제3 세트를 표시하는 제3 입력 패킷을 수신하는 단계;
상기 제3 입력 패킷에 대응하는 데이터를 상기 패킷 버퍼에 저장하는 단계; 및
상기 패킷 버퍼에 저장된 제2 집계된 데이터의 양이 출력 크기 임계치를 초과하는 것을 검출하는 것에 응답하여, 상기 제3 입력 패킷을 제2 출력 패킷으로 컴퓨팅 유닛에 발송하는 단계를 더 포함하는, 방법. - 제7항에 있어서, 상기 출력 크기 임계치는 사용자 프로그램 가능한, 방법.
- 그래픽 프로세싱 유닛(GPU)(100)에 있어서,
상기 GPU로부터 수신된 명령들을 표시하는 입력 패킷들(120)을 발송하도록 구성된 명령 프로세서(102);
패킷 관리 컴포넌트(104)를 포함하고, 상기 패킷 관리 컴포넌트는,
상기 명령 프로세서로부터 수신된 상기 입력 패킷에 대응하는 데이터를 저장하도록 구성되는 패킷 버퍼(110);
패킷 집계 컴포넌트(112)를 포함하고, 상기 패킷 집계 컴포넌트(112)는,
인입 제1 입력 패킷의 상태 정보를 식별하고;
집계 조건을 표시하는 상태 정보에 응답하여, 상기 제1 입력 패킷에 대응하는 데이터를 상기 패킷 버퍼에 저장된 제2 입력 패킷에 대응하는 데이터와 집계하고; 및
발송 조건을 표시하는 상태 정보에 응답하여, 컴퓨팅 유닛에 의한 프로세싱을 위해 출력 패킷(132)을 발송하도록 구성되고, 여기서 상기 출력 패킷은 상기 패킷 버퍼에 저장된 집계된 데이터를 포함하는, GPU. - 제9항에 있어서, 상기 패킷 집계 컴포넌트는 상기 제2 입력 패킷에 대응하는 상기 데이터의 적어도 일부가 타임아웃 임계치를 초과하여 저장된 시간의 양에 응답하여 상기 출력 패킷이 발송되게 하도록 구성된 타임아웃 검출 컴포넌트(122)를 포함하는, GPU.
- 제10항에 있어서, 상기 타임아웃 임계치는 사용자-특정되는, GPU.
- 제9항 또는 제10항에 있어서, 상기 출력 패킷은 웨이브프론트인, GPU.
- 제9항 내지 제12항 중 어느 한 항에 있어서, 상기 집계 데이터는 상기 제1 입력 패킷의 일부 및 상기 제2 입력 패킷의 일부를 포함하는, GPU.
- 제9항 내지 제13항 중 어느 한 항에 있어서, 상기 집계 데이터는 상기 제1 입력 패킷 및 상기 제2 입력 패킷을 포함하는, GPU.
- 방법에 있어서,
명령 프로세서(102)로부터 패킷 관리 컴포넌트(104)에 의해, 그래픽 프로세싱 유닛(GPU)(100)으로부터 수신된 명령들의 제1 세트를 표시하는 제1 입력 패킷을 수신하는 단계;
상기 제1 입력 패킷에 대응하는 데이터를 상기 패킷 관리 컴포넌트의 패킷 버퍼(110)에 저장하는 단계;
상기 GPU로부터 수신된 명령들의 제2 세트를 표시하는 제2 입력 패킷을 수신하는 단계;
출력 조건이 충족되지 않았다고 결정하는 것에 응답하여, 상기 제2 입력 패킷에 대응하는 데이터를 상기 제1 입력 패킷에 대응하는 데이터와 자동으로 집계하는 단계; 및
출력 조건이 충족되었다는 결정에 응답하여, 상기 집계된 데이터를 하나 이상의 출력 패킷들 내의 하나 이상의 컴퓨팅 유닛들로 발송하는 단계를 포함하는, 방법. - 제15항에 있어서, 상기 출력 조건이 충족되었다고 결정하는 단계는 상기 패킷 버퍼에 저장된 상기 집계 데이터의 양이 출력 크기 임계치를 초과한다고 결정하는 것에 응답하여 수행되는, 방법.
- 제15항 또는 제16항에 있어서, 상기 출력 조건이 충족되었다고 결정하는 단계는 제3 입력 패킷이 발송 조건을 표시한다고 결정하는 단계를 포함하는, 방법.
- 제15항 내지 제17항 중 어느 한 항에 있어서, 상기 제1 입력 패킷을 수신하는 것에 응답하여, 상기 패킷 관리 컴포넌트의 타임아웃 검출 컴포넌트에서, 패킷 스토리지 타이머를 시작하는 단계를 더 포함하는, 방법.
- 제18항에 있어서, 상기 출력 조건이 충족되었다고 결정하는 단계는 상기 패킷 스토리지 타이머가 타임아웃 임계치를 초과한다고 결정하는 단계를 포함하는, 방법.
- 제19항에 있어서, 상기 타임아웃 임계치는 사용자-특정되는, 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/713,472 | 2019-12-13 | ||
US16/713,472 US11210757B2 (en) | 2019-12-13 | 2019-12-13 | GPU packet aggregation system |
PCT/US2020/063923 WO2021119072A1 (en) | 2019-12-13 | 2020-12-09 | Gpu packet aggregation system |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220113710A true KR20220113710A (ko) | 2022-08-16 |
KR102709341B1 KR102709341B1 (ko) | 2024-09-25 |
Family
ID=76316977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227019998A KR102709341B1 (ko) | 2019-12-13 | 2020-12-09 | Gpu 패킷 집계 시스템 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11210757B2 (ko) |
EP (1) | EP4073639A4 (ko) |
JP (1) | JP7528217B2 (ko) |
KR (1) | KR102709341B1 (ko) |
CN (1) | CN114902181A (ko) |
WO (1) | WO2021119072A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12106112B2 (en) * | 2020-12-03 | 2024-10-01 | Intel Corporation | Methods and apparatus to generate graphics processing unit long instruction traces |
CN113626369B (zh) * | 2021-08-14 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 一种多节点集群环形通信的方法、装置、设备及可读介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020005970A (ko) * | 2000-07-10 | 2002-01-18 | 모리시타 요이찌 | 복수 디코드장치 및 방법 |
US7839876B1 (en) * | 2006-01-25 | 2010-11-23 | Marvell International Ltd. | Packet aggregation |
JP2015502618A (ja) * | 2011-12-14 | 2015-01-22 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | シェーダコアにおけるシェーダリソース割当てのポリシー |
KR20160113916A (ko) * | 2015-03-23 | 2016-10-04 | 삼성전자주식회사 | 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법 |
US20160379336A1 (en) * | 2015-04-01 | 2016-12-29 | Mediatek Inc. | Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus |
KR20190038931A (ko) * | 2016-08-29 | 2019-04-09 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 선호된 프리미티브 배치 비닝 및 분류를 갖는 하이브리드 렌더 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050249231A1 (en) * | 2003-11-25 | 2005-11-10 | Asif Khan | Methods and systems for reliable distribution of media over a network |
US7209139B1 (en) * | 2005-01-07 | 2007-04-24 | Electronic Arts | Efficient rendering of similar objects in a three-dimensional graphics engine |
CN101471826B (zh) * | 2007-12-27 | 2012-12-12 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
US8374986B2 (en) | 2008-05-15 | 2013-02-12 | Exegy Incorporated | Method and system for accelerated stream processing |
JP2010055214A (ja) | 2008-08-26 | 2010-03-11 | Sanyo Electric Co Ltd | データ処理装置 |
KR20130141446A (ko) * | 2010-07-19 | 2013-12-26 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 복수의 프로세싱 유닛들에서 온-칩 메모리를 사용하는 데이터 프로세싱 |
CN102323917B (zh) * | 2011-09-06 | 2013-05-15 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
US20130162661A1 (en) * | 2011-12-21 | 2013-06-27 | Nvidia Corporation | System and method for long running compute using buffers as timeslices |
US9509616B1 (en) * | 2014-11-24 | 2016-11-29 | Amazon Technologies, Inc. | Congestion sensitive path-balancing |
US10320695B2 (en) | 2015-05-29 | 2019-06-11 | Advanced Micro Devices, Inc. | Message aggregation, combining and compression for efficient data communications in GPU-based clusters |
US20170300361A1 (en) * | 2016-04-15 | 2017-10-19 | Intel Corporation | Employing out of order queues for better gpu utilization |
US10572258B2 (en) * | 2017-04-01 | 2020-02-25 | Intel Corporation | Transitionary pre-emption for virtual reality related contexts |
CN110223216B (zh) * | 2019-06-11 | 2023-01-17 | 西安芯瞳半导体技术有限公司 | 一种基于并行plb的数据处理方法、装置及计算机存储介质 |
CN110415161B (zh) * | 2019-07-19 | 2023-06-27 | 龙芯中科(合肥)技术有限公司 | 图形处理方法、装置、设备及存储介质 |
-
2019
- 2019-12-13 US US16/713,472 patent/US11210757B2/en active Active
-
2020
- 2020-12-09 JP JP2022534186A patent/JP7528217B2/ja active Active
- 2020-12-09 KR KR1020227019998A patent/KR102709341B1/ko active IP Right Grant
- 2020-12-09 CN CN202080085569.6A patent/CN114902181A/zh active Pending
- 2020-12-09 WO PCT/US2020/063923 patent/WO2021119072A1/en unknown
- 2020-12-09 EP EP20899498.8A patent/EP4073639A4/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020005970A (ko) * | 2000-07-10 | 2002-01-18 | 모리시타 요이찌 | 복수 디코드장치 및 방법 |
US7839876B1 (en) * | 2006-01-25 | 2010-11-23 | Marvell International Ltd. | Packet aggregation |
JP2015502618A (ja) * | 2011-12-14 | 2015-01-22 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | シェーダコアにおけるシェーダリソース割当てのポリシー |
KR20160113916A (ko) * | 2015-03-23 | 2016-10-04 | 삼성전자주식회사 | 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법 |
US20160379336A1 (en) * | 2015-04-01 | 2016-12-29 | Mediatek Inc. | Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus |
KR20190038931A (ko) * | 2016-08-29 | 2019-04-09 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 선호된 프리미티브 배치 비닝 및 분류를 갖는 하이브리드 렌더 |
Also Published As
Publication number | Publication date |
---|---|
CN114902181A (zh) | 2022-08-12 |
JP2023505783A (ja) | 2023-02-13 |
KR102709341B1 (ko) | 2024-09-25 |
JP7528217B2 (ja) | 2024-08-05 |
EP4073639A4 (en) | 2024-01-10 |
US11210757B2 (en) | 2021-12-28 |
EP4073639A1 (en) | 2022-10-19 |
US20210183004A1 (en) | 2021-06-17 |
WO2021119072A1 (en) | 2021-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10331468B2 (en) | Techniques for routing service chain flow packets between virtual machines | |
JP5977263B2 (ja) | バッファオーバーフロー状態の管理 | |
KR102709341B1 (ko) | Gpu 패킷 집계 시스템 | |
AU2020214661B2 (en) | Handling an input/output store instruction | |
EP3238386B1 (en) | Apparatus and method for routing data in a switch | |
US11411799B2 (en) | Scalable statistics and analytics mechanisms in cloud networking | |
KR101276340B1 (ko) | 병렬 처리 시스템 및 그 방법 | |
US10754783B2 (en) | Techniques to manage cache resource allocations for a processor cache | |
CN103093005A (zh) | 一种遥信数据处理方法和装置 | |
CN103108020A (zh) | 服务协作设备、服务协作方法和计算机可读记录介质 | |
CN106874103B (zh) | 心跳实现方法及装置 | |
CN111338769B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN108021448B (zh) | 一种内核空间的优化方法及装置 | |
CN107122170A (zh) | 一种数据数组的大容量存储方法及装置 | |
CN107506175B (zh) | 一种基于执行效率梯度预测的数据流图拥塞检测方法 | |
US11023274B2 (en) | Method and system for processing data | |
WO2018173300A1 (ja) | I/o制御方法およびi/o制御システム | |
US11977907B2 (en) | Hybrid push and pull event source broker for serverless function scaling | |
CN111160546B (zh) | 一种数据处理系统 | |
JP2013134636A (ja) | 計算機負荷制御方法 | |
US20230283557A1 (en) | Congestion management in controllers | |
CN111143078A (zh) | 一种数据处理方法、装置及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |