KR102540754B1 - 가상화를 위한 gpu 작업 컨테이너로서의 vmid - Google Patents

가상화를 위한 gpu 작업 컨테이너로서의 vmid Download PDF

Info

Publication number
KR102540754B1
KR102540754B1 KR1020217002976A KR20217002976A KR102540754B1 KR 102540754 B1 KR102540754 B1 KR 102540754B1 KR 1020217002976 A KR1020217002976 A KR 1020217002976A KR 20217002976 A KR20217002976 A KR 20217002976A KR 102540754 B1 KR102540754 B1 KR 102540754B1
Authority
KR
South Korea
Prior art keywords
task
processor
container
implementation
mapping table
Prior art date
Application number
KR1020217002976A
Other languages
English (en)
Other versions
KR20210024636A (ko
Inventor
아니루드 알. 아차리아
마이클 제이. 맨토
렉스 엘든 매크러리
앤서니 아사로
제프리 공시안 쳉
마크 파울러
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
에이티아이 테크놀로지스 유엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드, 에이티아이 테크놀로지스 유엘씨 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20210024636A publication Critical patent/KR20210024636A/ko
Application granted granted Critical
Publication of KR102540754B1 publication Critical patent/KR102540754B1/ko

Links

Images

Classifications

    • 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/54Interprogram communication
    • 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
    • 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/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Abstract

가상 메모리 식별자(VMID) 컨테이너에서 작업을 추상화하기 위한 시스템, 장치 및 방법이 개시된다. 메모리에 연결된 프로세서는 제 1 작업을 포함하는 복수의 동시적 작업을 실행한다. 제 1 동작에 대응하는 제 1 작업의 하나 이상의 명령을 검출하는 것에 응답하여, 프로세서는 제 1 작업을 고유하게 식별하는 데 사용되는 제 1 식별자(ID)를 불러들이고, 여기서 제 1ID는 제 1 작업에 투명하다. 그런 다음 프로세서는 제 1ID를 제 2ID 및/또는 제 3ID에 매핑한다. 프로세서는 적어도 제 1 데이터 구조에 대해 제 1 작업을 식별하기 위해 제 2ID 및/또는 제 3ID를 사용함으로써 제 1 동작을 완료한다. 일 구현에서, 제 1 동작은 메모리 액세스 동작이고 제 1 데이터 구조는 페이지 테이블 세트이다. 또한, 일 구현에서, 제 2ID는 제 1 작업의 제 1 애플리케이션을 식별하고 제 3ID는 제 1 작업의 제 1 운영 체제(OS)를 식별한다.

Description

가상화를 위한 GPU 작업 컨테이너로서의 VMID
본 발명은 가상화를 위한 GPU 작업 컨테이너로서의 VMID에 관한 것이다.
최근에는 단위 전력 당 성능과 현대 GPU의 비용으로 인해 일반적인 계산을 위해 그래픽 처리 장치(GPU)를 사용하려는 욕구가 더욱 보편화되었다.GPU에 대한 계산 능력은 해당 중앙 처리 장치(CPU) 플랫폼의 속도를 초과하는 속도로 성장했다. 모바일 컴퓨팅 시장(예: 노트북, 모바일 스마트 폰, 태블릿) 및 지원 서버/엔터프라이즈 시스템의 폭발과 맞물린 이러한 성장은 원하는 사용자 경험과 일치하는 품질을 달성하는 데 사용되었다. 결과적으로 데이터 병렬 콘텐츠로 워크로드를 실행하기 위해 CPU와 GPU를 결합하여 사용하는 것이 볼륨 기술이 되고 있다.
GPU는 높은 명령 처리량을 달성하기 위해 많은 양의 스레드-레벨 병렬성을 이용한다. 이러한 높은 처리량 덕분에 GPU는 다양한 패러다임에서 필수적인 컴퓨팅 리소스가 되었다. 여러 유형의 컴퓨팅 환경에서 여러 애플리케이션이 단일 처리 장치를 공유한다. 하나 이상의 운영 체제에서 동시에 여러 응용 프로그램을 실행하려면 하드웨어 및 소프트웨어에서 다양한 지원 메커니즘이 필요하다. 한 가지 핵심 메커니즘은 머신에서 실행되는 각 애플리케이션의 어드레스 공간을 관리하고 보호하는 가상 메모리이다. 그러나 최신 GPU는 여러 응용 프로그램의 병렬 실행을 지원하지 않는다. 결과적으로 GPU는 여러 동시 애플리케이션을 실행할 때 높은 성능 오버 헤드를 겪는다.
여기에 설명된 방법 및 메커니즘의 장점은 첨부된 도면과 함께 다음 설명을 참조함으로써 더 잘 이해될 수 있다.
도 1은 컴퓨팅 시스템의 일 구현의 블록도이다.
도 2는 컴퓨팅 시스템의 다른 구현의 블록도이다.
도 3은 GPU의 가상 환경의 일 구현의 블록도를 예시한다.
도 4는 GPU의 일 구현의 블록도를 예시한다.
도 5는 컴퓨팅 파이프라인을 갖는 프로세서의 일 구현의 블록도를 예시한다.
도 6은 가상 메모리 식별자(VMID) 컨테이너에서의 추상화 작업의 일 구현의 블록도를 예시한다.
도 7은 컴퓨팅 시스템의 일 구현의 블록도를 예시한다.
도 8은 컨테이너 ID를 OS또는 VFID에 매핑하기 위한 매핑 테이블의 일 구현을 예시한다.
도 9는 컨테이너 ID를 사용하여 작업을 추상화하는 방법의 일 구현을 예시하는 일반화된 흐름도이다.
도 10은 작업에 대한 컨테이너 ID를 생성하는 스케줄러를 위한 방법의 일 구현을 예시하는 일반화된 흐름도이다.
다음의 설명에서, 여기에 제시된 방법 및 메커니즘에 대한 완전한 이해를 제공하기 위해 수많은 특정 세부 사항이 설명된다. 그러나, 당업자는 이러한 특정 세부 사항없이 다양한 구현이 실행될 수 있음을 인식해야 한다. 일부 예에서, 잘 알려진 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령 및 기술은 여기에 설명된 접근 방식을 모호하게 하는 것을 피하기 위해 상세하게 표시되지 않았다. 예시의 단순성 및 명료성을 위해, 도면에 도시된 요소가 반드시 일정한 비율로 그려진 것은 아니라는 것이 이해될 것이다. 예를 들어, 일부 요소의 치수는 다른 요소에 비해 과장될 수 있다.
가상 메모리 식별자(VMID) 컨테이너에서 작업을 추상화하기 위한 다양한 시스템, 장치 및 방법이 여기에 개시된다. 메모리에 연결된 프로세서는 제 1 작업을 포함하는 복수의 동시 작업을 실행한다. 제 1 동작에 대응하는 제 1 작업의 하나 이상의 명령을 검출하는 것에 응답하여, 프로세서는 제 1 작업을 고유하게 식별하는 데 사용되는 제 1 식별자(ID)를 불러오고, 여기서 제 1ID는 제 1 작업에 투명하다. 그런 다음, 프로세서는 제 1ID를 제 2ID 및/또는 제 3ID에 매핑한다. 프로세서는 적어도 제 1 데이터 구조에 대해 제 1 작업을 식별하기 위해 제 2ID 및/또는 제 3ID를 사용함으로써 제 1 동작을 완료한다. 일 구현에서, 제 1 동작은 메모리 액세스 동작이고 제 1 데이터 구조는 페이지 테이블 세트이다. 또한, 일 구현에서, 제 2ID는 제 1 작업의 제 1 애플리케이션을 식별하고, 제 3ID는 제 1 작업의 제 1 운영 체제(OS)를 식별한다.
이제 도 1을 참조하면, 컴퓨팅 시스템(100)의 일 구현의 블록도가 도시되어있다. 일 구현에서, 컴퓨팅 시스템(100)은 적어도 프로세서(105A-N), 입력/출력(I/O) 인터페이스(120), 버스(125), 메모리 컨트롤러(들)(130), 네트워크 인터페이스 컨트롤러(NIC)(135) 및 메모리 장치(들)(140)를 포함한다. 다른 구현에서, 컴퓨팅 시스템(100)은 다른 구성 요소를 포함하고 및/또는 컴퓨팅 시스템(100)은 상이하게 배열된다. 프로세서(105A-N)는 시스템(100)에 포함된 임의의 수의 프로세서를 나타낸다. 일 구현에서, 프로세서(105A)는 중앙 처리 장치(CPU)와 같은 범용 프로세서이다. 일 구현에서, 프로세서(105N)는 고도의 병렬 아키텍처를 갖는 데이터 병렬 프로세서이다. 데이터 병렬 프로세서에는 그래픽 처리 장치(GPU), 디지털 신호 프로세서(DSP), 현장 프로그래밍 가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC) 등이 포함된다. 일부 구현에서, 프로세서(105A-N)는 다중 데이터 병렬 프로세서를 포함한다.
메모리 컨트롤러(들)(130)는 I/O 인터페이스(120)에 연결된 I/O 장치(미도시) 및 프로세서(105A-N)에 의해 액세스 가능한 임의의 수 및 유형의 메모리 컨트롤러를 나타낸다. 메모리 컨트롤러(들)(130)는 임의의 수 및 유형의 메모리 장치(140)에 연결된다. 메모리 장치(들)(140)는 임의의 수 및 유형의 메모리 장치를 나타낸다. 예를 들어, 메모리 장치(들)(140)의 메모리 유형은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), NAND플래시 메모리, NOR 플래시 메모리, 강유전성 랜덤 액세스 메모리(FeRAM) 등을 포함한다.
I/O 인터페이스(120)는 임의의 수 및 유형의 I/O 인터페이스(예를 들어, 주변 구성 요소 상호 연결(PCI) 버스, PCI-Extended(PCI-X), PCIE(PCIExpress) 버스, 기가비트 이더넷(GBE) 버스, 범용 직렬 버스(USB))를 나타낸다. 다양한 유형의 주변 장치(미도시)가 I/O 인터페이스(120)에 연결된다. 이러한 주변 장치에는 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 기타 유형의 게임 컨트롤러, 미디어 기록 장치, 외부 저장 장치, 네트워크 인터페이스 카드 등이 포함된다(이에 제한되지 않음). 네트워크 인터페이스 컨트롤러(NIC)(135)는 네트워크(145)를 통해 네트워크 메시지를 수신하고 전송한다.
네트워크(145)는 무선 연결, 직접 근거리 통신망(LAN), 대도시 지역 네트워크(MAN), 광역 통신망(WAN), 인트라넷, 인터넷, 케이블 네트워크, 패킷 교환 네트워크, 광섬유 네트워크, 라우터, 스토리지 영역 네트워크 또는 기타 유형의 네트워크를 포함한 모든 유형의 네트워크 또는 네트워크 조합을 나타낸다.LAN의 예로는 이더넷 네트워크, FDDI(FibreDistributed Data Interface) 네트워크 및 토큰 링 네트워크가 있다. 다양한 구현에서, 네트워크(145)는 원격 직접 메모리 액세스(RDMA) 하드웨어 및/또는 소프트웨어, 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 하드웨어 및/또는 소프트웨어, 라우터, 리피터, 스위치, 그리드 및/또는 기타 구성요소를 더 포함한다.
다양한 구현에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩톱, 모바일 장치, 게임 콘솔, 서버, 스트리밍 장치, 웨어러블 장치이거나, 또는 다양한 다른 유형의 컴퓨팅 시스템 또는 장치 중 임의의 것이다. 컴퓨팅 시스템(100)의 구성 요소의 수는 구현마다 다르다는 점에 유의한다. 예를 들어, 다른 구현에서는, 도 1에 도시된 수보다 더 많거나 적은 각 구성 요소가 있다. 다른 구현에서, 컴퓨팅 시스템(100)은도 1에 도시되지 않은 다른 구성 요소를 포함한다는 것을 또한 주목한다. 추가적으로, 다른 구현에서, 컴퓨팅 시스템(100)은 도 1에 도시된 것과 다른 방식으로 구조화된다.
이제 도 2를 살펴보면, 컴퓨팅 시스템(200)의 다른 구현의 블록도가 도시되어있다. 일 구현에서, 시스템(200)은 GPU(205), 시스템 메모리(225) 및 로컬 메모리(230)를 포함한다. 시스템(200)은 또한 도면을 모호하게 하는 것을 피하기 위해 도시되지 않은 다른 구성 요소를 포함한다.GPU(205)는 적어도 명령 프로세서(235), 스케줄링 유닛(250), 컴퓨팅 유닛(255A-N), 메모리 컨트롤러(220), 글로벌 데이터 공유(270), 레벨 1(L1) 캐시(265) 및 레벨 2(L2) 캐시(260)를 포함한다. 도 2에 도시되지 않지만, 일 구현에서, 컴퓨팅 유닛(255A-N)은 또한 각각의 컴퓨팅 유닛(255A-N) 내에 하나 이상의 캐시 및/또는 로컬 메모리를 포함한다. 다른 구현에서, GPU(205)는 다른 구성 요소를 포함하고, 예시된 구성 요소 중 하나 이상을 생략하며, 단지 하나의 인스턴스가 도 2에 도시되어 있더라도 구성 요소의 다중 인스턴스를 갖고, 및/또는 다른 적절한 방식으로 구성된다.
다양한 구현에서, 컴퓨팅 시스템(200)은 임의의 다양한 유형의 소프트웨어 애플리케이션을 실행한다. 일 구현에서, 주어진 소프트웨어 애플리케이션을 실행하는 부분으로서, 컴퓨팅 시스템(200)의 호스트 CPU(도시되지 않음)는 GPU(205)에서 실행될 작업을 시작한다. 명령 프로세서(235)는 호스트 CPU로부터 작업을 수신하고, 컴퓨팅 유닛(255A-N)에서의 스케줄링을 위해 다음을 위해 작업을 스케줄링 유닛(250)에 발행한다. 일 구현에서, 스케줄링 유닛(250)이 컴퓨팅 유닛(255A-N)에서 주어진 작업을 스케줄링할 때, 스케줄링 유닛(250)은 주어진 작업의 가상 메모리(VM) ID와 함께 가상 기능(VF) ID 또는 운영 체제(OS)를 해싱함으로써 주어진 작업에 대한 고유 컨테이너 식별자(ID)를 생성한다. 컴퓨팅 유닛(255A-N)에서 실행되는 작업 내의 스레드는 컴퓨팅 시스템(200) 내부 및 외부의 다양한 데이터 구조에 액세스한다. 스레드가 컴퓨팅 시스템(200) 외부의 데이터 구조에 액세스할 때, 컨테이너 ID는 VFID 및/또는 VMID에 매핑되고, 외부 데이터 구조에 대한 스레드를 식별하는 데 VFID 및/또는 VMID가 사용된다.
이제 도 3을 살펴보면, GPU의 가상 환경(300)의 일 구현의 블록도가 도시된다.GPU는 여러 동시 작업을 지원할 수 있는 대규모 병렬 머신이다.GPU는 다양한 애플리케이션에서 그래픽 및/또는 컴퓨팅 워크로드를 처리하는 데 사용된다. 그래픽 워크로드의 경우 GPU에는 고정 기능 하드웨어와 프로그래밍 가능한 셰이더(shader)를 포함하는 심층 혼합 파이프라인이 포함된다.GPU에 대한 일반적인 워크로드 소스 계층 구조에는 운영 체제(OS) 및 가상 기능(VF)(310A-B), 애플리케이션(308A-N), 큐(306A), 드로오 콜 및 디스패치의 레벨들이 포함된다. 각각의 큐(306A)는 임의의 수의 그래픽 작업(302A) 및/또는 컴퓨팅 작업(304A)을 포함한다. 멀티 태스킹을 지원할 때 GPU에서 동시에 활성화되는 다양한 소스의 여러 워크로드가 있을 수 있다.
GPU에서 다수의 상이한 유형의 동시 애플리케이션을 실행할 때, 각각의 상이한 워크로드는 다양한 기능을 구현하기 위해 워크로드를 식별하고 관리하도록 태그된다. 예를 들어, 동기화 및 재설정 목적으로, 메모리 관리 기술 및 구조 구현, 인터럽트 관리 및 기타 기능 구현을 위해 각기 다른 워크로드에 태그가 지정된다. 한 구현에서, 각각의 상이한 워크로드는 워크로드를 다른 워크로드와 구별하기 위해 컨테이너 ID를 사용하여 식별된다. 일 구현에서, 컨테이너 ID는 OS 또는 VFID 및 VMID의 해시로부터 생성된다. 이를 통해 GPU는 여러 개의 동시 큐, 애플리케이션, 드로오 및 여러 게스트 OS로부터의 디스패치를 지원할 수 있다. 다른 구현에서, 컨테이너 ID는 다른 유형의 함수 및/또는 다른 유형의 값으로부터 생성된다.
여기에 제시된 여러 논의가 GPU의 특성을 식별하지만, 동일한 기술이 병렬 실행 기능을 가진 다른 유형의 프로세서(예를 들어, 멀티 코어 CPU, FPGA, ASIC, DSP)에 적용된다는 것을 이해해야 한다. 따라서, 본 개시 전반에 걸쳐, 기술이 GPU에 의해 수행되거나 구현되는 것으로 기술될 때, 이 기술은 다른 유형의 프로세서에서도 수행될 수 있음을 이해해야 한다.
이제 도 4를 살펴보면, GPU(400)의 일 구현의 블록도가 도시되어있다. 일 구현에서, GPU(400)는 메모리 서브시스템(420)에 연결된 그래픽 파이프라인(410)을 포함한다. 일 구현에서, 그래픽 파이프라인(410)은 각 파이프라인 단계에서 멀티 태스킹 지원을 포함한다. 프런트 엔드(425)는 그래픽 파이프라인(410)으로 전달된, 들어오는 작업을 저장하기 위한 다양한 큐를 포함한다. 지오메트리 엔진(430)은 그래픽 파이프라인(410)에서 실행되는 상이한 작업들에 대한 드로오 콜(draw call) 명령을 사용하여 프리미티브(primitives)의 렌더링을 수행한다. 셰이더 엔진(shader engine)(435)은 그래픽 렌더링에 관련된 다양한 셰이더 단계를 구현한다. 일 구현에서, 픽셀 엔진(440)은 출력 정보를 계산하고 렌더링되는 이미지가 스크린 공간에서 빈 또는 타일의 그리드로 분할된 후에 결과가 출력 표면에 기록되도록 호출된다. 일부 구현에서, 픽셀 엔진(440)은 래스터화된 객체에 걸쳐 보간될 정점 속성의 값을 계산한다. 다른 구현에서, 그래픽 파이프라인(410)은 다른 스테이지 또는 엔진을 포함하고 및/또는 개별 엔진은 다른 유형의 동작을 수행한다.
일반적으로, GPU는 각 단계에서 순서 및 종속성 요구 사항을 처리하기 위해 멀티 태스킹에 대한 파이프라인 지원을 포함한다. 이것은 별도의 작업(예를 들어, 지오메트리 엔진(430) 상의 작업(450A), 셰이더 엔진(435) 상의 작업(450B), 픽셀 엔진(440)상의 작업(450C))을 실행하는 그래픽 파이프라인(410)의 각 단계를 지칭한다. 일 구현에서, 그래픽 파이프라인(410)은 독립적이고 동시적인 그래픽 작업을 지원하도록 구성된다. 이 구현에서는 소스 계층 구조 세부 정보가 GPU의 각 단계에서 가려진다. 그래픽 파이프라인의 독립 및 동시적 그래픽 작업에 대한 지원은 각 작업을 스테이지에서 실행중인 다른 동시 작업과 구분하는 데 사용되는 컨테이너 ID를 사용하여 지원된다.
이제 도 5를 참조하면, 컴퓨팅 파이프라인(505)을 갖는 프로세서(500)의 일 구현의 블록도가 도시된다. 일 구현에서, 프로세서(500)는 메모리 서브시스템(510)에 연결된 적어도 컴퓨팅 파이프라인(505)을 포함한다. 일 구현에서, 프로세서(500)는 GPU이다. 다른 구현에서, 프로세서(500)는 다양한 다른 유형의 프로세싱 유닛(예를 들어, FPGA, ASIC, DSP, 멀티 코어 CPU) 중 임의의 것이다.
컴퓨팅 파이프라인(505)은 셰이더 엔진(520)에 연결된 프런트 엔드(515)를 포함한다. 컴퓨팅 파이프라인(505)은 작업(525A-D)의 동시 실행을 가능하게 하는 수직 및/또는 수평 분할을 포함한다. 예를 들어, 작업(525A)은 하나의 구현에서 셰이더 엔진(520)으로 시작되고, 후속 클럭 사이클에서 다른 작업이 이어진다. 다른 구현에서, 작업(525B-D)은 셰이더 엔진(520)에서 동시에 시작되고 실행된다. 셰이더 엔진(520)은 다중 작업의 동시 실행을 가능하게 하기 위해 이 구현에서 수직으로 분할된다. 수직 분할은 여러 작업의 상태를 유지하고/하거나 동일한 클럭 주기에서 여러 작업에 대해 작동하는, 셰이더 엔진(520)의 처리 장치 및 처리 로직의 능력을 의미한다. 일 구현에서, 개별 작업은 컨테이너 ID를 사용하여 식별되며, 각각의 상이한 작업은 고유한 컨테이너 ID를 갖는다.
일 구현에서, 컴퓨팅 파이프라인(505)의 각 단계는 수직으로 분할된다.예를 들어, 프런트 엔드(515)는 다수의 상이한 작업이 동시에 시작 및 실행될 수 있도록 분할된 큐를 포함한다. 또한, 셰이더 엔진(520)은 다수의 컴퓨팅 작업이 동시에 실행될 수 있도록 수직 파티션을 포함한다. 프런트 엔드(515) 및 셰이더 엔진(520)은 수많은 소스로부터 동시에 워크로드를 실행할 수 있다. 일 구현에서, 컴퓨팅 파이프라인(505)의 각 단계 또는 파티션은 이러한 개별 작업을 실행할 때 작업의 소스 계층 구조를 인식하지 못한다. 이 구현에서, 소스 계층 구조 세부 사항은 프로세서(500)의 경계가 작업에 의해 횡단될 때만 이용된다.
이제 도 6을 참조하면, 가상 메모리 식별자(VMID) 컨테이너에서의 작업 추상화의 일 구현의 블록도가 도시되어 있다. 일 구현에서, VMID(602)는 일반적으로 프로세서에서 실행되는 애플리케이션을 구별하기 위해 메모리 관리 동작에 사용된다. 그러나, 다른 구현에서, 작업 컨테이너 ID(604)는 작업을 실행하는 소스 계층 구조를 추상화하기 위해 VMID(602) 대신에 사용된다. 다양한 구현에서 프로세서는 실행 중에 작업의 소스를 식별할 필요가 없다. 오히려 프로세서는 외부 구성 요소 또는 외부 데이터 구조와 상호 작용할 때 소스를 식별하기만하면 된다. 일 구현에서, 컨테이너 ID(604)는 메모리 데이터 구조를 번들링하는 데 사용된다. 이 구현에서 프로세서는 한 컨테이너 ID가 다른 컨테이너 ID의 메모리 내용에 액세스하는 것을 허용하지 않음으로써 메모리 보호를 제공한다.
일 구현에서, 컨테이너 ID(604)는 하드웨어 메커니즘에 의해 관리되고, 하드웨어 실행 레벨 위의 소프트웨어 계층 구조에 투명하다. 나머지 소프트웨어 계층 구조는 계속해서 기존의 소스 추적 메커니즘을 사용한다. 이러한 기존 메커니즘에는 OSID, 프로세스 ID, 큐 ID 등이 포함된다. 일 구현에서, 작업 태깅 및 소스 계층 구조는 프로세서에서 외부 구성 요소까지의 경계에서만 관련된다. 예를 들어 파이프 종료 및 재설정 작업과 같은 동기화 작업은 작업의 소스를 참조한다. 또한 프로세서 외부의 메모리 트랜잭션은 올바른 메모리 관리 데이터 구조(예: 페이지 테이블)에 매핑하기 위해 작업 소스를 사용한다. 또한 인터럽트 처리는 현재 실행중인 작업 중 인터럽트할 작업을 식별하기 위해 소스별로 추적된다. 또한, PCI-e(Peripheral Component Interconnect Express) 버스-장치-기능 분해능은 가상 또는 물리적 기능의 소스를 결정하기 위해 소스별로 추적된다. 작업의 소스를 추적하기 위해 프로세서의 경계에서 수행되는 다른 유형의 동작들이 가능하며 고려된다.
일 구현에서, 매핑 테이블(608)은 프로세서와 외부 컴포넌트 사이의 각 경계에서 유지된다. 매핑 테이블은 작업의 컨테이너 ID(604)를, 운영 체제(OS) ID 또는 가상 기능(VF) ID(606), 프로세스 ID 등에 매핑한다. 작업의 소스를 식별하기 위해 컨테이너 ID(604)를 사용하면, 동시적 드로오 및 디스패치, 큐, 애플리케이션, 가상 기능 및 OS의 기능들이 프로세서에서 실행될 수 있다. 엔트리(610, 612, 614 및 616)는 매핑 테이블(608) 내의 임의의 수의 엔트리를 나타낸다. 일 구현에서, 매핑 테이블(608)은 16 개의 엔트리를 갖는 반면, 다른 구현에서 매핑 테이블(608)은 다른 수의 엔트리를 포함한다.
이제 도 7을 참조하면, 컴퓨팅 시스템(700)의 일 구현의 블록도가 도시되어있다. 일 구현에서, 컴퓨팅 시스템(700)은 컨테이너 ID를 사용하여 다중 작업 동시 실행 환경에서 작업을 추적한다. 컨테이너 ID를 사용하여 작업을 추적하기 위해, 시스템(700)은 컨테이너 ID를 작업의 소스 계층에 매핑하도록 다중 매핑 테이블(MT)(725A-D)을 포함한다. 각 MT(725A-D)는 임의의 수의 엔트리를 포함하고, 엔트리 수는 구현마다 다르다.
일 구현에서, 시스템(700)은 메모리 서브시스템(730) 및 입력/출력(I/O) 장치(740A-B)에 연결된 시스템 온 칩(SoC)(705)을 포함한다.I/O 장치(740A-B)는 임의의 수 및 유형의 주변 장치를 나타낸다. 다른 구현에서, 시스템(700)은 또한 도면을 모호하게 하는 것을 피하기 위해 도시되지 않은 다른 구성 요소를 포함한다는 점에 유의한다.SoC(705)는 적어도 프로세서 코어(710A-N), I/O 패브릭(715), 메모리 관리 유닛(720) 및 인터럽트 컨트롤러(735)를 포함한다. 일 구현에서, I/O 패브릭(715)은 I/O 장치(740A-B)에 대응하는 매핑 테이블(725A-B)을 포함한다. 또한, MMU(720) 및 인터럽트 제어기(735)는 각각 매핑 테이블(725C-D)을 포함한다. 매핑 테이블(725C)은 적절한 페이지 테이블 세트에 대한 액세스를 가능하게 하기 위해 컨테이너 ID를 작업의 소스 계층 구조에 매핑하는 데 사용되는 반면, 매핑 테이블(725D)은 인터럽트를 전달하기 위해 컨테이너 ID를 대응하는 소스에 매핑하는 데 사용된다. 일 구현에서, 상이한 MT(725A-D)는 동기화되어 각 MT의 엔트리가 다른 MT의 엔트리와 일치한다. 따라서,이 구현에서, 상이한 컨테이너 ID에 대한 새로운 엔트리를 위한 공간을 만들기 위해 기존 엔트리가 주어진 MT(725A-D)에서 제거될 때, 나머지 MT(725A-D)는 주어진 MT(725A-D)와 일치하도록 통지되고 업데이트된다.
이제 도 8을 참조하면, 컨테이너 ID를 OS 또는 VFID에 매핑하기 위한 매핑 테이블(800)의 일 구현이 도시된다. 일 구현에서, 프로세서(예를 들어, 도 2의 GPU(205))는 컨테이너 ID를 OS/VFID 및 VMID에 매핑하기 위한 매핑 테이블(800)의 하나 이상의 사본을 포함한다. 매핑 테이블(800)은 컨테이너 ID 필드(805), OS/VFID 필드(810) 및 VMID 필드(815)를 포함한다. 다른 구현에서, 매핑 테이블(800)은 다른 필드를 포함하고/하거나 상이하게 구성된다. 주어진 작업의 컨테이너 ID는 주어진 작업에 대해 일치하는 OS/VFID 및 VMID를 찾기 위해 매핑 테이블(800)의 조회를 수행하는 데 사용된다.
주어진 데이터 구조에 액세스하거나 외부 컴포넌트와 상호 작용하기 위해 작업의 소스를 식별해야할 때, 프로세서는 지정된 컨테이너 ID를 작업의 OS 또는 VFID 및 VMID로 분석하기 위해 매핑 테이블(800)을 사용한다. 그런 다음 OS 또는 VFID 및/또는 VMID를 사용하여 작업의 소스를 식별하여 특정 유형의 동작을 완료한다. 예를 들어 가상-물리적 어드레스 변환은 주어진 컨테이너 ID에 대한 특정 페이지 테이블 세트에 액세스하여 수행된다. 다른 예에서, 컨테이너 ID를 OS/VFID 및 VMID로 해석하기 위해 매핑 테이블(800)을 사용하여 인터럽트를 전달할 위치를 결정하기 위한 특정 작업이 식별된다.
일 구현에서, 매핑 테이블(800)은 제한된 수의 엔트리를 갖는다. 매핑 테이블(800)이 가득 차고 새로운 작업이 프로세서에서 시작되면, 프로세서는 새로운 작업을 위한 새로운 엔트리를 위한 공간을 만들기 위해 매핑 테이블(800)로부터 기존 엔트리 중 하나를 제거하거나, 중단시키거나, 그 완료를 기다릴 것이다. 일부 구현에서, 매핑 테이블(800)의 다중 복사본은 프로세서에 의해 유지되며, 매핑 테이블(800)의 하나의 사본이 프로세서의 각 경계 지점에 저장된다. 이러한 구현에서 프로세서는 매핑 테이블을 동기화하여 현재 실행중인 작업의 다양한 컨테이너 ID에 대해 동일한 엔트리를 가짐을 보장하게 된다.
이제 도 9를 참조하면, 컨테이너 ID를 사용하여 작업을 추상화하기 위한 방법(900)의 일 구현이 도시된다. 논의의 목적을 위해,이 구현의 단계와도 10의 단계가 순차적으로 보여진다. 그러나, 설명된 방법의 다양한 구현에서, 설명된 요소 중 하나 이상이 도시된 것과 다른 순서로 동시에 수행되거나 완전히 생략된다는 점에 유의한다. 다른 추가 요소도 원하는대로 수행된다. 본 명세서에 설명된 임의의 다양한 시스템 또는 장치는 방법(900)을 구현하도록 구성된다.
프로세서는 제 1 작업 및 하나 이상의 다른 작업을 동시에 실행한다(블록 905). 일 구현에서, 프로세서는 GPU이다. 제 1 작업을 실행하는 동안, 프로세서는 제 1 동작에 대응하는 하나 이상의 명령을 검출한다(블록 910). 일 구현에서, 제 1 동작은 메모리 액세스 동작이다. 다른 구현에서, 제 1 작업은 프로세서 외부의 구성 요소를 대상으로 하는 작업이다. 추가 구현에서, 제 1 동작은 식별될 제 1 작업의 소스를 요구하는 동작이다. 또 다른 구현에서, 제 1 동작은 디스플레이를 위해 하나 이상의 픽셀을 렌더링하는 것을 포함하는 그래픽 동작이다. 이 구현에서, 프로세서는 제 1 동작의 일부로서 디스플레이로 구동하기 위해 하나 이상의 픽셀을 생성한다. 다른 구현에서, 제 1 동작은 다양한 다른 유형의 동작들 중 임의의 것이다.
제 1 동작에 대응하는 제 1 작업의 하나 이상의 명령을 검출하는 것에 응답하여, 프로세서는 제 1 작업을 고유하게 식별하는 제 1 식별자(ID)를 수신하며, 여기서 제 1ID는 제 1 작업의 소스 계층 구조를 식별하지 않는다(블록 915). 즉, 제 1ID는 제 1 작업에 투명하다. 일 구현에서, 제 1ID는 컨테이너 ID이다. 다음으로, 프로세서는 제 1 작업의 소스 계층 구조를 식별하는 제 2ID에 제 1ID를 매핑한다(블록 920). 다른 구현에서, 프로세서는 제 1ID를 제 2ID 및 제 3ID에 매핑하고, 이들은 제 1 작업의 소스 계층 구조를 함께 식별한다. 이 구현에서, 제 2ID는 제 1 작업의 제 1 애플리케이션을 식별하고 제 3ID는 제 1 작업의 제 1 운영 체제(OS)를 식별한다.이 구현에서 소스 계층 구조는 제 1 작업의 애플리케이션, OS 및/또는 가상 기능(VF)을 나타낸다. 이에 비해 제 1ID는 제 1 작업의 소스 계층 구조를 추상화한다.
다음으로, 프로세서는 제 1 작업을 식별하기 위해 제 2ID를 사용하여 제 1 데이터 구조에 대한 액세스를 수행함으로써 제 1 동작을 완료한다(블록 925). 일 구현에서, 제 1 데이터 구조는 가상 대 물리적 어드레스 변환 페이지 테이블의 세트이다. 다른 구현에서, 제 1 데이터 구조는 인터럽트 테이블이다. 블록 925 이후, 방법(900)이 종료된다. 방법(900)은 프로세서에서 동시에 실행되는 다수의 작업에 대해 병렬로 수행될 수 있다는 점에 유의한다. 이러한 여러 작업에는 둘 이상의 서로 다른 게스트 OS의 작업이 포함된다.
이제 도 10을 살펴보면, 작업에 대한 컨테이너 ID를 생성하는 스케줄러에 대한 방법(1000)의 일 구현이 도시되어있다. 프로세서의 스케줄러(예를 들어,도 2의 GPU(205))는 프로세서의 하나 이상의 컴퓨팅 유닛에서 스케줄링될 작업을 수신한다(블록 1005). 스케줄러는 작업과 관련된 가상 기능(VF) ID 및 가상 메모리(VM) ID를 검색한다(블록 1010). 다른 구현에서, 스케줄러는 작업과 연관된 운영 체제(OS) ID를 검색한다. 다음으로, 스케줄러는 작업과 관련된 VFID 및 VMID로부터 작업에 대한 컨테이너 ID를 생성하고, 컨테이너 ID는 작업을 고유하게 식별한다(블록 1015). 다른 구현에서, 스케줄러는 작업과 관련된 OSID 및 VMID로부터 작업에 대한 고유 컨테이너 ID를 생성한다. 일 구현에서, 스케줄러는 VMID로 VFID(또는 OSID)의 해시를 생성함으로써 컨테이너 ID를 생성한다. 그런 다음, 스케줄러는 고유한 컨테이너 ID로 작업에 태그를 지정한다(블록 1020). 즉, 작업은 이제 작업의 VFID, OSID 또는 VMID와 연결되지 않고 고유 컨테이너 ID와 연결된다. 이를 통해 프로세서는 서로 다른 게스트 OS 또는 동일한 OS의 여러 동시 작업을 지원할 수 있다.
다음으로, 스케줄러는 작업이 준비되었다고 결정하는 것에 응답하여 하나 이상의 컴퓨팅 유닛에서 실행하기 위해 작업을 스케줄링한다(블록 1025). 작업 실행 동안, 프로세서는 컨테이너 ID를 VFID 및/또는 VMID에 매핑함으로써 하나 이상의 데이터 구조에 액세스한다(블록 1030). 대안으로, 프로세서는 블록 1030에서 컨테이너 ID를 OSID 및/또는 VMID에 매핑한다. 구현에 따라, 하나 이상의 데이터 구조는 페이지 테이블, 인터럽트 테이블 및/또는 다른 데이터 구조를 포함한다. 블록 1030 이후, 방법 1000이 종료된다. 일 구현에서, 방법(1000)은 프로세서에서 동시에 실행되는 다수의 작업에 대해 병렬로 수행된다는 점에 유의한다. 이러한 여러 작업에는 둘 이상의 서로 다른 게스트 OS의 작업이 포함된다.
다양한 구현에서, 소프트웨어 애플리케이션의 프로그램 명령어는 여기에 설명된 방법 및/또는 메커니즘을 구현하는 데 사용된다. 예를 들어, 범용 또는 특수 목적 프로세서에 의해 실행 가능한 프로그램 명령어가 고려된다. 다양한 구현에서 이러한 프로그램 명령어는 고급 프로그래밍 언어로 표현된다. 다른 구현에서, 프로그램 명령어는 높은 수준의 프로그래밍 언어로부터 바이너리, 중간 또는 다른 형태로 컴파일된다. 또는 하드웨어의 동작 또는 설계를 설명하는 프로그램 명령어가 작성된다. 이러한 프로그램 명령어는 C와 같은 고급 프로그래밍 언어로 표현된다. 또는 Verilog와 같은 하드웨어 설계 언어(HDL)가 사용된다. 다양한 구현에서, 프로그램 명령어는 임의의 다양한 비일시적 컴퓨터 판독 가능 저장 매체에 저장된다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령을 제공하기 위해 사용 중에 컴퓨팅 시스템에 의해 액세스 가능하다. 일반적으로 말해서, 그러한 컴퓨팅 시스템은 프로그램 명령을 실행하도록 구성된 적어도 하나 이상의 메모리 및 하나 이상의 프로세서를 포함한다.
전술한 구현은 구현의 비 제한적인 예일 뿐이라는 것이 강조되어야 한다. 상기 개시 내용이 완전히 이해되면 당업자에게는 수많은 변형 및 수정이 명백해질 것이다. 다음의 청구 범위는 그러한 모든 변형 및 수정을 포함하도록 해석되도록 의도된다.

Claims (20)

  1. 복수의 작업의 프로그램 명령어를 저장하는 메모리 - 상기 복수의 작업은 제 1 작업을 포함함;
    상기 메모리에 결합된 프로세서를 포함하는 시스템에 있어서, 상기 프로세서는:
    제 1 작업과 하나 이상의 다른 작업을 동시에 실행하도록 구성되고,
    제 1 동작에 대응하는 상기 제 1 작업의 하나 이상의 명령어를 검출함에 응답하여:
    제 1 작업을 고유하게 식별하는 제 1 식별자(ID)를 수신하도록 구성되고,
    제 1 ID는 제 1 작업의 소스 계층 구조를 식별하지 않으며;
    제 1 작업의 소스 계층 구조를 식별하는 제 2 ID에 제 1 ID를 매핑하도록 구성되며, 그리고,
    제 1 작업을 식별하기 위해 제 2 ID를 사용하여 제 1 데이터 구조에 대한 액세스를 수행함으로써 제 1 동작을 완료하도록 구성되는, 시스템.
  2. 제 1 항에 있어서, 상기 프로세서는 상기 제 1 ID를 상기 제 2 ID 및 제 3 ID에 매핑하기 위해 매핑 테이블에 액세스하는, 시스템.
  3. 제 2 항에 있어서, 상기 제 2 ID는 제 1 애플리케이션을 식별하고, 상기 제 3 ID는 제 1 운영 체제(OS)를 식별하고, 상기 제 1 애플리케이션 및 상기 제 1 OS는 상기 제 1 작업의 소스 계층 구조를 나타내는 시스템.
  4. 제 3 항에 있어서, 상기 프로세서는 또한,
    제 1 작업과 동시에 제 2 작업을 실행하도록 구성되고, 상기 제 2 작업은 제 1 작업과 상이한 운영 체제의 일부인, 시스템.
  5. 제 1 항에 있어서, 상기 제 1 동작은 메모리 액세스 동작이고, 상기 제 1 데이터 구조는 페이지 테이블의 세트인, 시스템.
  6. 제 1 항에 있어서, 상기 프로세서는:
    프로세서와 프로세서 외부의 각 구성 요소 사이의 각 경계에 매핑 테이블을 유지하도록 구성되고, 그리고
    제 1 ID로 매핑 테이블에 액세스하여 제 2 ID를 불러들이도록 구성되는, 시스템.
  7. 제 1 항에 있어서, 상기 제 1 ID는 컨테이너 ID이고, 상기 프로세서는 제 1 컨테이너 ID를 갖는 작업이 제 2 컨테이너 ID를 갖는 작업의 데이터에 액세스하는 것을 방지하도록 구성되는 시스템.
  8. 제 1 작업과 하나 이상의 다른 작업을 동시에 실행하는 단계;
    제 1 동작에 대응하는 제 1 작업의 하나 이상의 명령어를 검출함에 응답하여:
    상기 제 1 작업을 고유하게 식별하는 제 1 식별자(ID)를 수신하는 단계 - 상기 제 1 ID는 상기 제 1 작업의 소스 계층 구조를 식별하지 않음;
    제 1 작업의 소스 계층 구조를 식별하는 제 2 ID에 제 1 ID를 매핑하는 단계; 및
    제 1 작업을 식별하기 위해 제 2 ID를 사용하여 제 1 데이터 구조에 대한 액세스를 수행함으로써 제 1 동작을 완료하는 단계를 포함하는, 방법.
  9. 제 8 항에 있어서, 상기 제 1 ID를 상기 제 2 ID 및 제 3 ID에 매핑하기 위해 매핑 테이블에 액세스하는 단계를 더 포함하는, 방법.
  10. 제 9 항에 있어서, 상기 제 2 ID는 제 1 애플리케이션을 식별하고, 상기 제 3 ID는 제 1 운영 체제(OS)를 식별하고, 상기 제 1 애플리케이션 및 상기 제 1 OS는 상기 제 1 작업의 소스 계층 구조를 나타내는, 방법.
  11. 제 10 항에 있어서,
    제 1 작업과 동시에 제 2 작업을 실행하는 단계를 더 포함하며, 상기 제 2 작업은 제 1 작업과 상이한 운영 체제의 일부인, 방법.
  12. 제 8 항에 있어서, 상기 제 1 동작은 메모리 액세스 동작이고, 상기 제 1 데이터 구조는 페이지 테이블의 세트인, 방법.
  13. 제 8 항에 있어서, 상기 방법은,
    프로세서와 상기 프로세서 외부의 각 구성 요소 사이의 각 경계에서 매핑 테이블을 유지하는 단계; 및
    제 1 ID로 매핑 테이블에 액세스하여 제 2 ID를 불러오는 단계를 더 포함하는, 방법.
  14. 제 8 항에 있어서, 상기 제 1 ID는 컨테이너 ID이고, 상기 방법은 제 1 컨테이너 ID를 갖는 작업이 제 2 컨테이너 ID를 갖는 작업의 데이터에 액세스하는 것을 방지하는 단계를 더 포함하는, 방법.
  15. 프로세서로서,
    스케줄러 유닛; 및
    복수의 컴퓨팅 유닛을 포함하되,
    상기 프로세서는,
    복수의 컴퓨팅 유닛에서 동시에 실행되도록 제 1 작업 및 하나 이상의 다른 작업을 스케줄링하도록 구성되고;
    제 1 동작에 대응하는 제 1 작업의 하나 이상의 명령을 검출함에 응답하여:
    제 1 작업을 고유하게 식별하는 제 1 식별자(ID)를 수신하도록 구성되고,
    제 1 ID는 제 1 작업의 소스 계층 구조를 식별하지 않으며;
    제 1 작업의 소스 계층 구조를 식별하는 제 2 ID에 제 1 ID를 매핑하도록 구성되며; 그리고,
    제 1 작업을 식별하기 위해 제 2 ID를 사용하여 제 1 데이터 구조에 대한 액세스를 수행하여 제 1 동작을 완료하도록 구성되는, 프로세서
  16. 제 15 항에 있어서, 상기 프로세서는 상기 제 1 ID를 상기 제 2 ID 및 제 3 ID에 매핑하기 위해 매핑 테이블에 액세스하는 프로세서.
  17. 제 16 항에 있어서, 상기 제 2 ID는 제 1 애플리케이션을 식별하고, 상기 제 3 ID는 제 1 운영 체제(OS)를 식별하며, 상기 제 1 애플리케이션 및 상기 제 1 OS는 상기 제 1 작업의 소스 계층 구조를 나타내는, 프로세서.
  18. 제 17 항에 있어서, 상기 프로세서는 또한:
    제 1 작업과 동시에 제 2 작업을 실행하도록 구성되고, 제 2 작업은 제 1 작업과 다른 운영 체제의 일부인, 프로세서.
  19. 제 15 항에 있어서, 상기 제 1 ID는 컨테이너 ID이고, 상기 프로세서는 또한 제 1 컨테이너 ID를 갖는 작업이 제 2 컨테이너 ID를 갖는 작업의 데이터에 액세스하는 것을 방지하도록 구성되는, 프로세서.
  20. 제 15 항에 있어서, 상기 프로세서는 또한:
    프로세서와 프로세서 외부의 각 구성 요소 사이의 각 경계에 매핑 테이블을 유지하도록 구성되고,그리고,
    제 1 ID로 매핑 테이블에 액세스하여 제 2 ID를 불러들이도록 구성되는, 프로세서.
KR1020217002976A 2018-07-31 2019-06-26 가상화를 위한 gpu 작업 컨테이너로서의 vmid KR102540754B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/050,948 US10725822B2 (en) 2018-07-31 2018-07-31 VMID as a GPU task container for virtualization
US16/050,948 2018-07-31
PCT/US2019/039257 WO2020027951A1 (en) 2018-07-31 2019-06-26 Vmid as a gpu task container for virtualization

Publications (2)

Publication Number Publication Date
KR20210024636A KR20210024636A (ko) 2021-03-05
KR102540754B1 true KR102540754B1 (ko) 2023-06-08

Family

ID=67297335

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217002976A KR102540754B1 (ko) 2018-07-31 2019-06-26 가상화를 위한 gpu 작업 컨테이너로서의 vmid

Country Status (6)

Country Link
US (3) US10725822B2 (ko)
EP (1) EP3830702A1 (ko)
JP (1) JP7123235B2 (ko)
KR (1) KR102540754B1 (ko)
CN (1) CN112368688A (ko)
WO (1) WO2020027951A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10725822B2 (en) 2018-07-31 2020-07-28 Advanced Micro Devices, Inc. VMID as a GPU task container for virtualization
US10942775B2 (en) * 2019-03-01 2021-03-09 International Business Machines Corporation Modified central serialization of requests in multiprocessor systems
US11663141B2 (en) 2019-10-11 2023-05-30 Texas Instruments Incorporated Non-stalling, non-blocking translation lookaside buffer invalidation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160092677A1 (en) 2014-09-30 2016-03-31 Amazon Technologies, Inc. Allocation of shared system resources

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4331325B2 (ja) 1999-06-08 2009-09-16 パナソニック株式会社 メモリ管理装置
US9507638B2 (en) 2011-11-08 2016-11-29 Nvidia Corporation Compute work distribution reference counters
US10037228B2 (en) * 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
CN103049334B (zh) * 2012-12-14 2015-09-30 华为技术有限公司 一种任务处理的方法和虚拟机
US9256623B2 (en) 2013-05-08 2016-02-09 Nvidia Corporation System, method, and computer program product for scheduling tasks associated with continuation thread blocks
US9727480B2 (en) 2014-07-21 2017-08-08 Via Alliance Semiconductor Co., Ltd. Efficient address translation caching in a processor that supports a large number of different address spaces
GB2545170B (en) * 2015-12-02 2020-01-08 Imagination Tech Ltd GPU virtualisation
US10365974B2 (en) * 2016-09-16 2019-07-30 Hewlett Packard Enterprise Development Lp Acquisition of object names for portion index objects
GB2563588B (en) * 2017-06-16 2019-06-26 Imagination Tech Ltd Scheduling tasks
US10725822B2 (en) 2018-07-31 2020-07-28 Advanced Micro Devices, Inc. VMID as a GPU task container for virtualization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160092677A1 (en) 2014-09-30 2016-03-31 Amazon Technologies, Inc. Allocation of shared system resources

Also Published As

Publication number Publication date
WO2020027951A1 (en) 2020-02-06
KR20210024636A (ko) 2021-03-05
JP2021533455A (ja) 2021-12-02
US11467870B2 (en) 2022-10-11
JP7123235B2 (ja) 2022-08-22
EP3830702A1 (en) 2021-06-09
US20200042348A1 (en) 2020-02-06
US10725822B2 (en) 2020-07-28
CN112368688A (zh) 2021-02-12
US20230055695A1 (en) 2023-02-23
US20210011760A1 (en) 2021-01-14

Similar Documents

Publication Publication Date Title
KR102540754B1 (ko) 가상화를 위한 gpu 작업 컨테이너로서의 vmid
US11741019B2 (en) Memory pools in a memory model for a unified computing system
US8578129B2 (en) Infrastructure support for accelerated processing device memory paging without operating system integration
KR101091224B1 (ko) 이종 처리 유닛을 위한 중앙집중형 디바이스 가상화 계층
CN109643277B (zh) 用于中介传递和共享存储器页合并的装置和方法
TWI488118B (zh) 處理系統中動態產生任務的傳訊、排序和執行
US8065441B2 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
US10055136B2 (en) Maintaining guest input/output tables in swappable memory
US9569223B2 (en) Mixed shared/non-shared memory transport for virtual machines
US9996494B2 (en) Asynchronous mapping of hot-plugged device associated with virtual machine
US20130135327A1 (en) Saving and Restoring Non-Shader State Using a Command Processor
US20130141446A1 (en) Method and Apparatus for Servicing Page Fault Exceptions
US20130160019A1 (en) Method for Resuming an APD Wavefront in Which a Subset of Elements Have Faulted
WO2013085794A1 (en) Method and apparatus for servicing page fault exceptions

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