KR-20260060963-A - METHOD AND DEVICE FOR VALIDATING SPECULATIVE PHYSICAL ADDRESS
Abstract
전자 장치는, 프로세싱 유닛(processing unit); 메모리 관리 유닛(memory management unit); 및 메모리(memory)를 포함하고, 상기 메모리 관리 유닛은, 상기 프로세싱 유닛으로부터 수신된 대상 가상 주소(target virtual address)에 대한 메모리 액세스 요청에 기초하여, 프로그램 카운터(program counter)별 주소 변환 오프셋을 포함하는 오프셋 테이블을 이용하여 상기 대상 가상 주소를 예측 물리 주소로 변환하고, 상기 프로세싱 유닛은, 상기 메모리 중 상기 예측 물리 주소에 대응하는 메모리 영역에 저장된 임시 데이터에 포함된 검증 가상 주소를 상기 대상 가상 주소와 비교함으로써, 상기 예측 물리 주소를 검증하고, 상기 예측 물리 주소의 검증이 성공한 것에 기초하여, 상기 임시 데이터를 상기 메모리 액세스 요청에 대한 응답(response)으로 획득할 수 있다.
Inventors
- 홍석인
- 박준혁
- 권오상
- 김성욱
- 변광은
- 이용호
Assignees
- 삼성전자주식회사
- 성균관대학교산학협력단
Dates
- Publication Date
- 20260506
- Application Date
- 20241211
- Priority Date
- 20241025
Claims (20)
- 전자 장치에 있어서, 프로세싱 유닛(processing unit); 메모리 관리 유닛(memory management unit); 및 메모리(memory)를 포함하고, 상기 메모리 관리 유닛은, 상기 프로세싱 유닛으로부터 수신된 대상 가상 주소(target virtual address)에 대한 메모리 액세스 요청에 기초하여, 프로그램 카운터(program counter)별 주소 변환 오프셋을 포함하는 오프셋 테이블을 이용하여 상기 대상 가상 주소를 예측 물리 주소로 변환하고, 상기 프로세싱 유닛은, 상기 메모리 중 상기 예측 물리 주소에 대응하는 메모리 영역에 저장된 임시 데이터에 포함된 검증 가상 주소를 상기 대상 가상 주소와 비교함으로써, 상기 예측 물리 주소를 검증하고, 상기 예측 물리 주소의 검증이 성공한 것에 기초하여, 상기 임시 데이터를 상기 메모리 액세스 요청에 대한 응답(response)으로 획득하는, 전자 장치.
- 제1항에 있어서, 상기 프로세싱 유닛은, L1 캐시(level 1 cache)를 더 포함하고, 상기 L1 캐시는, 상기 대상 가상 주소 및 상기 메모리 영역에 저장된 압축된 데이터를 획득하고, 상기 압축된 데이터(compressed data)를 상기 임시 데이터로 압축 해제(decompress)하고, 상기 압축된 데이터 중 상기 검증 가상 주소를 획득하고, 인-캐시 동작(in-cache operation)으로서, 상기 검증 가상 주소 및 상기 대상 가상 주소를 비교하는, 전자 장치.
- 제1항에 있어서, 상기 메모리 관리 유닛은, L1 TLB(level 1 translation lookaside buffer)를 포함하고, 상기 L1 TLB는, 상기 메모리 관리 유닛이 상기 대상 가상 주소를 상기 예측 물리 주소로 변환하기 전에, 상기 메모리 액세스 요청을 획득하고, 상기 메모리 액세스 요청에 기초하여, 상기 대상 가상 주소에 대응하는 페이지 테이블 엔트리를 상기 L1 TLB의 내부 메모리에서 탐색(lookup)하고, 상기 L1 TLB의 상기 내부 메모리가 상기 대상 가상 주소에 대응하는 상기 페이지 테이블 엔트리를 저장하는 것에 기초하여, 상기 페이지 테이블 엔트리에 기초한 유효 물리 주소(valid physical address)를 획득하고, 상기 L1 TLB의 상기 내부 메모리가 상기 대상 가상 주소에 대응하는 상기 페이지 테이블 엔트리를 저장하지 않는 것에 기초하여, 상기 메모리 관리 유닛에게 상기 오프셋 테이블을 이용한 상기 예측 물리 주소의 획득을 요청하는, 전자 장치.
- 제1항에 있어서, 상기 메모리 관리 유닛은, 상기 오프셋 테이블에 포함된 후보 주소 변환 오프셋들 중에서, 상기 메모리 액세스 요청의 대상 프로그램 카운터에 대응하는 대상 주소 변환 오프셋을 결정하고, 상기 대상 가상 주소에 상기 대상 주소 변환 오프셋을 적용한 결과에 기초하여 상기 예측 물리 주소를 획득하는, 전자 장치.
- 제4항에 있어서, 상기 메모리 관리 유닛은, 상기 오프셋 테이블에 포함된 후보 오프셋 테이블 엔트리들 중에서, 상기 대상 프로그램 카운터에 대응하는 오프셋 테이블 엔트리를 결정하고, 상기 결정된 오프셋 테이블 엔트리 중 상기 대상 주소 변환 오프셋에 대한 신뢰도를 나타내는 신뢰도(confidence level)에 기초하여, 상기 대상 주소 변환 오프셋을 이용할지 여부를 결정하고, 상기 대상 주소 변환 오프셋을 이용하는 것을 결정한 것에 기초하여, 상기 대상 주소 변환 오프셋을 이용하여 상기 예측 물리 주소를 획득하는, 전자 장치.
- 제1항에 있어서, 상기 메모리 관리 유닛은, 상기 예측 물리 주소의 획득 또는 검증 중 적어도 하나와 병렬적으로, 페이지 테이블을 이용하여 상기 가상 주소에 대응하는 유효 물리 주소를 획득하는, 전자 장치.
- 제6항에 있어서, 상기 프로세싱 유닛은, 상기 예측 물리 주소의 검증이 실패한 것에 기초하여, 상기 유효 물리 주소에 대응하는 메모리 영역으로부터 유효 데이터를 획득하고, 상기 유효 데이터를 포함하는 응답을 상기 프로세싱 유닛에게 전달하는, 전자 장치.
- 제6항에 있어서, 상기 메모리 관리 유닛은, 상기 예측 물리 주소의 검증이 상기 유효 물리 주소를 획득하는 동작을 완료하기 전에 성공한 것에 기초하여, 상기 유효 물리 주소를 획득하는 동작의 진행을 중단하는, 전자 장치.
- 제1항에 있어서, 상기 프로세싱 유닛은, 상기 획득된 임시 데이터가 상기 검증 가상 주소를 포함하는 것에 기초하여, 상기 검증 가상 주소를 이용하여 상기 예측 물리 주소를 검증하고, 상기 임시 데이터가 상기 검증 가상 주소를 포함하지 않는 것에 기초하여, 상기 검증 가상 주소에 기초한 상기 예측 물리 주소의 검증을 불가능한 것을 결정하는, 전자 장치.
- 제1항에 있어서, 상기 메모리는, 장치 메모리(device memory)를 포함하고, 상기 전자 장치는, 상기 장치 메모리를 위한 메모리 컨트롤러를 더 포함하고, 상기 메모리 컨트롤러는, 주 처리 장치(main processing device)로부터, 데이터 페이지 및 상기 데이터 페이지의 VPN을 포함하는 페이지 정보(page information)를 수신하고, 상기 데이터 페이지를 압축(compress)하고, 상기 압축된 데이터 페이지 및 상기 페이지 정보를, 상기 장치 메모리 중에서, 상기 데이터 페이지에 할당된 메모리 영역에 저장하는, 전자 장치.
- 제10항에 있어서, 상기 메모리 컨트롤러는, 상기 데이터 페이지 중 상기 프로세싱 유닛의 액세스 단위인 데이터 섹터(data sector)에 대하여, 상기 데이터 섹터를 압축하고, 상기 압축된 데이터 섹터 및 상기 페이지 정보를, 상기 장치 메모리 중에서 상기 데이터 섹터에 할당된 메모리 영역에 저장하는, 전자 장치.
- 제11항에 있어서, 상기 메모리 컨트롤러는, 상기 데이터 페이지에 포함된 제1 데이터 섹터 및 제2 데이터 섹터에 대하여, 상기 제1 데이터 섹터를 압축한 결과 획득된 압축된 제1 데이터 섹터를 상기 페이지 정보와 함께 저장하고, 상기 제2 데이터 섹터를 압축한 결과 획득된 압축된 제2 데이터 섹터와 함께 상기 페이지 정보를 저장하는, 전자 장치.
- 제1항에 있어서, 상기 메모리 관리 유닛은, 상기 예측 물리 주소의 검증이 성공한 것에 기초하여, 상기 오프셋 테이블 중 상기 메모리 액세스 요청의 대상 프로그램 카운터에 대응하는 오프셋 테이블 엔트리의 신뢰도를 증가시키는, 전자 장치.
- 제1항에 있어서, 상기 메모리 관리 유닛은, 상기 예측 물리 주소의 검증이 실패한 것에 기초하여, 상기 오프셋 테이블 중 상기 메모리 액세스 요청의 대상 프로그램 카운터에 대응하는 오프셋 테이블 엔트리를, 상기 대상 가상 주소 및 유효 물리 주소 간의 오프셋을 이용하여 변경하는, 전자 장치.
- 제1항에 있어서, 상기 메모리 관리 유닛은, L1 TLB(level 1 translation lookaside buffer)를 포함하고, 상기 L1 TLB는, 상기 예측 물리 주소의 검증이 성공한 것에 기초하여, 상기 예측 물리 주소 및 상기 대상 가상 주소를 포함하는 페이지 테이블 엔트리를 상기 L1 TLB의 내부 메모리에 저장하는, 전자 장치.
- 전자 장치에 의하여 수행되는 방법에 있어서, 상기 전자 장치는, 프로세싱 유닛(processing unit); 메모리 관리 유닛(memory management unit); 및 메모리(memory)를 포함하고, 상기 방법은, 상기 메모리 관리 유닛에 의하여, 상기 프로세싱 유닛으로부터 수신된 대상 가상 주소(target virtual address)에 대한 메모리 액세스 요청에 기초하여, 프로그램 카운터(program counter)별 주소 변환 오프셋을 포함하는 오프셋 테이블을 이용하여 상기 대상 가상 주소를 예측 물리 주소로 변환하는 단계; 상기 프로세싱 유닛에 의하여, 상기 메모리 중 상기 예측 물리 주소에 대응하는 메모리 영역에 저장된 임시 데이터에 포함된 검증 가상 주소를 상기 대상 가상 주소와 비교함으로써, 상기 예측 물리 주소를 검증하는 단계; 상기 프로세싱 유닛에 의하여, 상기 예측 물리 주소의 검증이 성공한 것에 기초하여, 상기 임시 데이터를 상기 메모리 액세스 요청에 대한 응답(response)으로 획득하는 단계를 포함하는, 방법.
- 제16항에 있어서, 상기 프로세싱 유닛은, L1 캐시(level 1 cache)를 더 포함하고, 상기 예측 물리 주소를 검증하는 단계는, 상기 L1 캐시에 의하여, 상기 대상 가상 주소 및 상기 메모리 영역에 저장된 압축된 데이터를 획득하는 단계; 상기 L1 캐시에 의하여, 상기 압축된 데이터(compressed data)를 상기 임시 데이터로 압축 해제(decompress)하는 단계; 상기 압축된 데이터 중 상기 검증 가상 주소를 획득하는 단계; 및 상기 L1 캐시에 의하여, 인-캐시 동작(in-cache operation)으로서, 상기 검증 가상 주소 및 상기 대상 가상 주소를 비교하는 단계를 포함하는, 방법.
- 제16항에 있어서, 상기 메모리 관리 유닛은, L1 TLB(level 1 translation lookaside buffer)를 포함하고, 상기 방법은, 상기 L1 TLB에 의하여, 상기 메모리 관리 유닛이 상기 대상 가상 주소를 상기 예측 물리 주소로 변환하기 전에, 상기 메모리 액세스 요청을 획득하는 단계; 상기 L1 TLB에 의하여, 상기 메모리 액세스 요청에 기초하여, 상기 대상 가상 주소에 대응하는 페이지 테이블 엔트리를 상기 L1 TLB의 내부 메모리에서 탐색(lookup)하는 단계; 상기 L1 TLB에 의하여, 상기 L1 TLB의 상기 내부 메모리가 상기 대상 가상 주소에 대응하는 상기 페이지 테이블 엔트리를 저장하는 것에 기초하여, 상기 페이지 테이블 엔트리에 기초한 유효 물리 주소(valid physical address)를 획득하는 단계; 및 상기 L1 TLB에 의하여, 상기 L1 TLB의 상기 내부 메모리가 상기 대상 가상 주소에 대응하는 상기 페이지 테이블 엔트리를 저장하지 않는 것에 기초하여, 상기 메모리 관리 유닛에게 상기 오프셋 테이블을 이용한 상기 예측 물리 주소의 획득을 요청하는 단계를 포함하는, 방법.
- 제16항에 있어서, 상기 대상 가상 주소를 예측 물리 주소로 변환하는 단계는, 상기 메모리 관리 유닛에 의하여, 상기 오프셋 테이블에 포함된 후보 주소 변환 오프셋들 중에서, 상기 메모리 액세스 요청의 대상 프로그램 카운터에 대응하는 대상 주소 변환 오프셋을 결정하는 단계; 및 상기 메모리 관리 유닛에 의하여, 상기 대상 가상 주소에 상기 대상 주소 변환 오프셋을 적용한 결과에 기초하여 상기 예측 물리 주소를 획득하는 단계를 포함하는, 방법.
- 제19항에 있어서, 상기 대상 가상 주소를 예측 물리 주소로 변환하는 단계는, 상기 메모리 관리 유닛에 의하여, 상기 오프셋 테이블에 포함된 후보 오프셋 테이블 엔트리들 중에서, 상기 대상 프로그램 카운터에 대응하는 오프셋 테이블 엔트리를 결정하는 단계; 상기 메모리 관리 유닛에 의하여, 상기 결정된 오프셋 테이블 엔트리 중 상기 대상 주소 변환 오프셋에 대한 신뢰도를 나타내는 신뢰도(confidence level)에 기초하여, 상기 대상 주소 변환 오프셋을 이용할지 여부를 결정하는 단계; 및 상기 메모리 관리 유닛에 의하여, 상기 대상 주소 변환 오프셋을 이용하는 것을 결정한 것에 기초하여, 상기 대상 주소 변환 오프셋을 이용하여 상기 예측 물리 주소를 획득하는 단계를 포함하는, 방법.
Description
예측 물리 주소를 검증하는 방법 및 장치{METHOD AND DEVICE FOR VALIDATING SPECULATIVE PHYSICAL ADDRESS} 이하, 예측 물리 주소를 검증하는 것에 대하여 개시된다. 주소 변환(address translation)은 컴퓨터 시스템에서 가상 주소(virtual address)를 물리 주소(physical address)로 변환하는 과정으로, 현대 컴퓨팅 환경에서 필수적인 기술이다. 운영 체제는 주소 변환을 통해 응용 프로그램마다 독립적인 메모리 공간을 제공하여 메모리 보호 및 효율적인 자원 관리를 지원할 수 있다. 주소 변환은 페이지 테이블(page table)을 사용하여 수행될 수 있다. 가상 주소는 페이지 번호(virtual page number, VPN)와 페이지 오프셋(page offset)으로 구분될 수 있고, VPN은 페이지 테이블을 통해 대응하는 물리 페이지 번호(physical page number, PPN)로 매핑될 수 있다. TLB(Translation Lookaside Buffer)와 같은 캐시를 활용하여 주소 변환의 속도는 향상될 수 있다. 주소 변환은 CPU, GPU 등 다양한 하드웨어 장치에서 광범위하게 사용되고, 메모리 가상화를 통해 멀티태스킹, 메모리 공유, 그리고 보안을 강화하는 데 중요한 역할을 한다. 전술한 배경기술은 본 개시의 도출과정에서 보유하거나 습득한 것으로서 반드시 본 개시의 출원 전에 일반 공중에 공개된 공지기술이라고 할 수 없다. 도 1은 다양한 실시예들에 따른 이종 컴퓨팅 시스템(heterogeneous computing system)의 예시를 설명하는 도면이다. 도 2는 다양한 실시예들에 따른 전자 장치가 주소 변환을 수행하는 방법의 예시를 설명하는 도면이다. 도 3은 다양한 실시예들에 따른 전자 장치가 예측 물리 주소를 획득하는 동작의 예시를 설명하는 도면이다. 도 4는 다양한 실시예들에 따른 전자 장치의 장치 메모리에 데이터를 저장하는 동작의 예시를 설명한다. 도 5는 다양한 실시예들에 따른 예측 물리 주소를 검증하는 동작의 예시를 설명하는 도면이다. 도 6은 다양한 실시예들에 따른 전자 장치가 예측 물리 주소를 이용하는 경우 및 유효 물리 주소를 이용하는 경우 시간 차이를 설명하는 도면이다. 실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다. 제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다. 도 1은 다양한 실시예들에 따른 이종 컴퓨팅 시스템(heterogeneous computing system)의 예시를 설명하는 도면이다. 일 실시예에 따르면, 이종 컴퓨팅 시스템(100)은, 주 처리 장치(110), 보조 처리 장치(120), 및 인터커넥트(130)(interconnect)를 포함할 수 있다. 주 처리 장치(110)는, 이종 컴퓨팅 시스템(100)의 중앙 제어, 일반적인 연산, 논리적 제어, 및/또는 스케줄링을 포함하는 다양한 연산들을 관리할 수 있다. 주 처리 장치(110)는, 직렬 처리에 최적화되어 복잡한 제어 흐름 및/또는 다중 스레드 관리를 효과적으로 수행할 수 있다. 주 처리 장치(110)는 메모리 관리 및 입출력 제어 등 이종 컴퓨팅 시스템(100) 전반의 리소스를 관리할 수 있다. 예를 들어, 주 처리 장치(110)는, 보조 처리 장치(120)에 작업(예: 어플리케이션의 실행)을 할당하는 역할을 수행한다. 예시적으로, 주 처리 장치(110)는, CPU(central processing unit)을 포함할 수 있다. 보조 처리 장치(120)는, 주 처리 장치(110)와 협력하여 대량의 연산들을 고속으로 수행할 수 있다. 보조 처리 장치(120)는, 병렬 처리가 요구되는 그래픽 연산 및/또는 데이터 집약적 계산을 수행하는 것에 최적화될 수 있다. 예시적으로, 보조 처리 장치(120)는 벡터 및 행렬 연산과 같은 대규모 병렬 연산을 수행함으로써 주 처리 장치(110)의 연산량을 경감할 수 있다. 일 실시예에 따르면, 보조 처리 장치(120)는 그래픽 렌더링, 및/또는 AI 모델 추론 및 학습 등의 특화된 작업에서 주 처리 장치(110)보다 뛰어난 성능을 발휘할 수 있다. 인터커넥트(130)는, 주 처리 장치(110) 및 보조 처리 장치(120) 간의 데이터 전송을 지원할 수 있다. 일 실시예에 따르면, 인터커넥트(130)는, PCI Express(PCIe) 인터페이스 및/또는 NVLink 인터페이스를 포함할 수 있다. PCIe 인터페이스는 범용 고속 직렬 인터페이스의 일종으로, 주 처리 장치(110) 및 보조 처리 장치(120) 간에 비교적 높은 대역폭과 낮은 지연 시간으로 데이터를 전송하는 데 이용될 수 있다. NVLink 인터페이스는 고성능의 보조 처리 장치(120) 및 주 처리 장치(110) 간의 통신을 위해 설계된 인터페이스의 일종으로, PCIe 인터페이스에 비해 더 높은 대역폭을 제공할 수 있다. NVLink 인터페이스는 연산 집약적인 작업에서 성능을 극대화할 수 있다. NVLink 인터페이스는 주 처리 장치(110) 및 보조 처리 장치(120) 간에 높은 데이터 전송 속도를 유지하면서 주 처리 장치(110) 및 보조 처리 장치(120) 간의 데이터 접근을 보다 효율적으로 수행하는 것을 지원할 수 있다. 특히, NVLink 인터페이스는 메모리 공유 및 연산 집약적인 작업에 최적화될 수 있고, 주 처리 장치(110) 및 보조 처리 장치(120) 간의 데이터 전송 병목 현상을 줄이는 데 기여할 수 있다. 본 개시의 다양한 실시예들에서, 주 처리 장치(110)는 CPU로 표현되고, 보조 처리 장치(120)는 GPU로도 표현될 수 있다. 주 처리 장치(110)는, 호스트 장치로 표현되고, 보조 처리 장치(120)는 디바이스 또는 전자 장치로도 표현될 수 있다. 주 처리 장치(110)는, 프로세서로 표현되고, 보조 처리 장치(120)는 가속기(또는 하드웨어 가속기)로도 표현될 수 있다. 주 처리 장치(110)는 메인 프로세서로 표현되고, 보조 처리 장치(120)는 보조 프로세서로도 표현될 수 있다. 일 실시예에 따른 주 처리 장치(110)는, 프로세싱 유닛(111), 메모리(112), 및 드라이버(113)를 포함할 수 있다. 프로세싱 유닛(111)(예: 코어(core))은 이종 컴퓨팅 시스템(100)의 기본적인 연산을 수행할 수 있다. 프로세싱 유닛(111)은 보조 처리 장치(120)와의 상호작용뿐 아니라 이종 컴퓨팅 시스템(100)의 일반적인 연산을 효율적으로 관리할 수 있다. 메모리(112)는, 이종 컴퓨팅 시스템(100)의 작업 데이터를 일시적으로 저장하고 액세스하기 위한 메모리를 포함할 수 있다. 메모리(112)는 주 처리 장치(110)의 작업 수행에 필요한 데이터를 빠르게 제공하며, 보조 처리 장치(120)와의 데이터 교환에서도 데이터 버퍼링 등의 역할을 수행할 수 있다. 드라이버(113)는, 보조 처리 장치(120)의 동작을 제어하는 GPU 드라이버(113)를 포함할 수 있다. 드라이버(113)는 주 처리 장치(110) 및 보조 처리 장치(120) 간의 명령 전송, 메모리 할당, 데이터 교환 등을 관리하는 소프트웨어 구성 요소일 수 있다. 드라이버(113)는, 주 처리 장치(110)가 보조 처리 장치(120)의 리소스를 효과적으로 활용할 수 있도록 지원할 수 있다. 예를 들어, 드라이버(113)는 보조 처리 장치(120)의 상태를 관리하고, 주 처리 장치(110)에서 발생한 보조 처리 장치(120)에 대한 작업 요청을 보조 처리 장치(120)에게 전달하는 역할을 수행할 수 있다. 일 실시예에 따른 보조 처리 장치(120)는, 프로세싱 유닛(121), 메모리 컨트롤러(123), 메모리 관리 유닛(122)(memory management unit), 및 장치 메모리(124)를 포함할 수 있다. 프로세싱 유닛(121)은 하나 이상의 스트리밍 멀티프로세서들(streaming multiprocessors; SMs)을 포함할 수 있다. 각 SM은 다수의 연산 코어들을 포함할 수 있고, 병렬 처리가 필요한 작업을 고속으로 수행할 수 있다. 프로세싱 유닛(121)