KR20160042159A - 통합 메모리 구조를 통한 메모리 공유 - Google Patents

통합 메모리 구조를 통한 메모리 공유 Download PDF

Info

Publication number
KR20160042159A
KR20160042159A KR1020167008492A KR20167008492A KR20160042159A KR 20160042159 A KR20160042159 A KR 20160042159A KR 1020167008492 A KR1020167008492 A KR 1020167008492A KR 20167008492 A KR20167008492 A KR 20167008492A KR 20160042159 A KR20160042159 A KR 20160042159A
Authority
KR
South Korea
Prior art keywords
processor
virtual memory
memory
data
computing device
Prior art date
Application number
KR1020167008492A
Other languages
English (en)
Other versions
KR101721499B1 (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 KR20160042159A publication Critical patent/KR20160042159A/ko
Application granted granted Critical
Publication of KR101721499B1 publication Critical patent/KR101721499B1/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/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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • 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
    • Y02B60/1225
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Image Input (AREA)

Abstract

컴퓨팅 장치의 중앙 처리 장치(CPU)와 그래픽 처리 장치(GPU) 사이에서 메모리를 공유하는 방법 및 시스템이 개시된다. 방법은 물리적 메모리 내에 서피스를 할당하는 단계와, 서피스를 CPU 페이지 테이블 내의 복수의 가상 메모리 어드레스에 매핑하는 단계를 포함한다. 방법은 또한 서피스를 I/O 장치 페이지 테이블 내의 복수의 그래픽 가상 메모리 어드레스에 매핑하는 단계를 포함한다.

Description

통합 메모리 구조를 통한 메모리 공유{MEMORY SHARING VIA A UNIFIED MEMORY ARCHITECTURE}
본 발명은 일반적으로 컴퓨팅 시스템 내의 중앙 처리 장치(CPU)와 입력/출력(I/O) 장치 간의 메모리 공유에 관한 것이다. 더 상세하게는, 본 발명은 CPU와 I/O 장치 간의 물리적 메모리의 공유에 관한 것이다.
현대의 I/O 장치는 많은 중앙 처리 장치(CPUs)의 컴퓨터 처리 능력에 필적하는 컴퓨터 처리 능력을 포함할 수 있다. 결과적으로, CPU에 의해서 전통적으로 수행된 컴퓨터 작업(computational tasks)의 일부는 컴퓨팅 장치의 I/O 장치로 오프로딩(offload)될 수 있다. 예를 들면, 컴퓨팅 장치의 그래픽 처리 장치(GPU)와 같은 I/O 장치는 CPU에 의해서 전통적으로 수행된 일부 작업을 수행할 수 있고, 이에 따라서 CPU의 효율성을 증가시킬 수 있다.
도 1은 실시예에 따라 사용될 수 있는 컴퓨팅 장치의 블록도이다.
도 2(a) 및 도 2(b)는 실시예에 따라서 컴퓨팅 장치의 중앙 처리 장치(CPU)와 그래픽 처리 장치(GPU) 사이에서 메모리를 공유하는 절차를 구현하는데 사용될 수 있는 통합 메모리 구조(a unified memory architecture (UMA))의 개요도이다.
도 3은 실시예에 따라서 컴퓨팅 장치의 CPU와 GPU 사이에서 메모리를 공유하는 방법을 도시하는 프로세스 흐름도이다.
도 4는 실시예에 따라서 컴퓨팅 장치의 CPU와 GPU 간의 공유 메모리를 처리하는 방법을 도시하는 프로세스 흐름도이다.
도 5는 실시예에 따라서 컴퓨팅 장치의 CPU와 GPU 사이에서 메모리를 공유하는 코드를 저장하는 유형의, 비-일시적 컴퓨터-판독 가능한 매체를 도시하는 블록도이다.
도 6은 공유된 물리적 메모리를 구현하는 예시적인 시스템의 블록도이다.
도 7은 도 6의 시스템이 구현될 수 있는 작은 폼 팩터(form factor) 장치의 개요도이다.
본 개시와 도면 전체에서 사용되는 동일한 번호는 유사한 컴포넌트와 특징을 참조하는데 사용된다. 100 시리즈의 숫자는 도 1에 최초로 나타난 특징을 참조하고, 200 시리즈의 숫자는 도 2에 최초로 나타난 특징을 참조한다.
현행 운영체제와 그래픽 인터페이스는 GPU를 CPU와 유사한 자원을 갖는 프로세서로서 관리한다기 보다, 오히려 GPU를 I/O 장치로서 관리한다. GPU를 I/O 장치로서 관리함으로써, CPU 및 GPU는 별도의 물리적 어드레스 도메인을 갖는 물리적 메모리를 갖는다. 컴퓨터 작업을 GPU로 오프로딩할 때, 데이터는 CPU의 물리적 어드레스 도메인으로부터 GPU의 물리적 어드레스 도메인으로 복사된다. GPU가 처리를 마친 이후에, 데이터는 CPU의 물리적 어드레스 도메인으로 다시 복사된다.
전통적으로 CPU에 의해서 수행되는 컴퓨터 작업의 일부를 컴퓨팅 장치의 GPU로 오프로딩하는 것은 CPU의 효율성을 증가시킬 수 있다. 위에 논의된 것처럼, GPU로 작업을 오프로딩하기 위하여, 데이터는 CPU의 물리적 메모리에서 GPU의 물리적 메모리로 이송될 수 있다. 컴퓨터 작업을 GPU로 오프로딩할 때 발생하는 데이터 이송은 GPU로 작업을 오프로딩함으로써 얻게 되는 효율성을 감소시킬 수 있다. 따라서, 본 출원에서 기술되는 실시예는 컴퓨팅 장치의 CPU와 GPU간의 메모리 공유에 관한 것이다. 메모리는 통합 메모리 구조(a unified memory architecture (UMA))를 통해 공유될 수 있다.
다양한 실시예에서, UMA는 CPU와 GPU가 모두 동일한 물리적 메모리를 갖게함으로써 CPU와 GPU 간의 메모리 공유를 제공한다. 따라서, CPU와 GPU의 물리적 메모리 및 대응하는 물리적 어드레스 공간은 하나이며 동일하다. 실시예에서, 물리적 메모리는 CPU와 GPU 사이에서 분할될 수 있다. 또한, 물리적 메모리는 컴퓨팅 장치의 운영 체제에 의해 할당되는 페이징된 시스템 메모리(a paged system memory)일 수 있다. CPU의 가상 메모리 어드레스 공간은 GPU의 그래픽 가상 메모리 어드레스 페이지 및 동일한 물리적 메모리 페이지에 매핑한다. 또한, 일부 실시예에서, CPU 및 GPU는 동일한 다이(die) 상에 물리적으로 배치된다. 따라서, CPU 및 GPU는 데이터를 GPU의 어드레스 공간으로부터 CPU의 어드레스 공간으로 복사하지 않고도 물리적 메모리 내에 포함되는 데이터를 공유할 수 있고, 또는 그 반대로도 가능하다. 이것은 예를 들면, CPU와 GPU 간에 데이터를 공유하는 시간 및 전력 소비를 감소시킴으로써, CPU에서 GPU로 컴퓨터 작업을 오프로딩하는 비용을 줄여줄 수 있다.
다음의 설명과 청구범위에서, 용어 "결합된"과 "연결된"은 그들의 파생어와 함께 사용될 수 있다. 이들 용어는 서로 동의어로 의도되지 않는다는 것이 이해되어야 한다. 오히려, 특정 실시예에서, "연결된"은 둘 이상의 구성요소가 서로 물리적으로 또는 전기적으로 직접 접촉하고 있는 것을 표시하는데 사용될 수 있다. "결합된"은 둘 이상의 구성요소가 물리적으로 또는 전기적으로 직접 접촉하고 있는 것을 의미할 수 있다. 그러나, "결합된"은 또한 둘 이상의 구성요소가 서로 직접 접촉하지는 않지만 서로 협업하거나 상호작용하는 것을 의미할 수 있다.
일부 실시예는 하드웨어, 펌웨어 및 소프트웨어 중의 하나 또는 이들의 조합으로 구현될 수 있다. 일부 실시예는 또한 본 출원에서 설명되는 동작을 수행하는 컴퓨팅 환경에 의해서 읽혀지거나 실행될 수 있는, 머신-판독 가능한 매체에 저장된 명령어로서 구현될 수 있으며, 머신-판독가능한 매체는 머신, 예를 들면 컴퓨터에 의해 판독가능한 형태의 정보를 저장하거나 전송하는 메커니즘을 포함할 수 있다. 예를 들면, 머신-판독가능한 매체는 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치, 또는 전기, 광, 음향이나 기타 다른 형태의 전파되는 신호, 예를 들면, 반송파, 적외선 신호, 디지털 신호, 또는 신호를 전송 및/또는 수신하는 인터페이스를 포함할 수 있다.
일 실시예는 구현예 또는 예이다. 명세서에서 "일 실시예", "하나의 실시예", "일부 실시예", "다양한 실시예", 또는 "다른 실시예"에 대한 참조는 실시예와 연관되어 설명되는 특정 특징, 구조, 또는 특성이 적어도 일부 실시예에 포함되지만, 본 발명의 모든 실시예에 반드시 포함되는 것은 아니라는 것을 의미한다. "일 실시예", "하나의 실시예", "일부 실시예"의 여러 가지 표현이 모두 반드시 동일한 실시예를 참조하는 것은 아니다. 일 실시예로부터의 구성요소 또는 양태는 다른 실시예의 구성요소 또는 양태와 조합될 수 있다.
본 출원에서 설명되고 예시되는 모든 컴포넌트, 특징, 구조, 특성 등이 특정 실시예나 실시예들에 포함될 필요는 없다. 만일 설명이 컴포넌트, 특징, 구조나 특성이 예를 들면 포함 "될 수 있다", "될지도 모른다", "될법하다", 또는 "될 수도 있을 것이다"라고 언급한다면, 그 특정 컴포넌트, 특징, 구조 또는 특성이 포함되는 것이 필수는 아니다. 만일 명세서 또는 청구 범위가 "하나" 또는 "하나의" 구성요소를 지칭한다면, 이는 그 구성요소가 오직 하나만 있다는 것을 의미하는 것은 아니다. 만일 설명이나 청구 범위가 "하나의 추가적인" 구성요소를 지칭한다면, 이는 하나를 초과하는 추가적인 구성요소가 있다는 것을 배제하지 않는다.
비록 일부 실시예는 특정 구현과 관련하여 설명되었지만, 다른 구현이 일부 실시예에 따라서 가능하다는 것이 주목되어야 한다. 또한, 도면에 도시되고 및/또는 본 출원에서 설명되는 회로 구성요소나 다른 특징의 구성 및/또는 순서가 도시되거나 설명된 특정 방법으로 배열될 필요는 없다. 많은 다른 구성이 일부 실시예에 따라서 가능하다.
도면에 도시된 각 시스템에서, 일부 사례의 구성요소들은 표현되는 구성요소가 상이하고 및/또는 유사할 수 있다는 것을 제안하도록 각각 동일한 참조번호나 상이한 참조번호를 가질 수 있다. 그러나, 구성요소는 상이한 구현을 갖고 본 출원에 도시되거나 설명되는 시스템의 일부 또는 전부와 같이 작동할 정도로 충분히 유연하다. 도면에 도시되는 다양한 구성요소는 동일하거나 상이할 수 있다. 어떤 것이 제 1 구성요소로서 지칭되고, 어떤 것이 제 2 구성요소로 지칭될지는 임의적이다.
도 1은 본 실시예에 따라 사용될 수 있는 컴퓨팅 장치(100)의 블록도이다. 컴퓨팅 장치(100)는, 예를 들면, 그 중에서도 랩톱 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 모바일 장치, 또는 서버일 수 있다. 컴퓨터 장치(100)는 저장된 명령어를 실행하도록 적응되는 중앙 처리 장치(CPU)(102)뿐 아니라, CPU(102)에 의해 실행 가능한 명령어를 저장하는 메모리 장치(104)를 포함할 수 있다. CPU(102)는 싱글 코어 프로세서, 멀티-코어 프로세서, 컴퓨팅 클러스터, 또는 임의 개수의 다른 구성들일 수 있다. 뿐만 아니라, 컴퓨팅 장치(100)는 하나를 초과하는 CPU(102)를 포함할 수 있다. CPU(102)에 의해 실행되는 명령어는 또한 메모리 공유 절차(a memory sharing procedure)를 구현하도록 사용될 수 있다.
컴퓨팅 장치(100)는 또한 그래픽 처리 장치(GPU)(104)를 포함할 수 있다. GPU는 컴퓨팅 장치(100) 내의 입력/출력(I/O) 장치이다. I/O 장치는 입력, 출력 또는 그들의 어떠한 조합과도 통신하도록 사용될 수 있다. 도시된 것처럼, CPU(102)는 버스(106)를 통해 GPU(104)에 연결될 수 있다. 그러나, 일부 실시예에서, GPU(104)는 컴퓨팅 장치(100) 내에서 CPU(102)와 동일한 다이 상에 배치된다. 이러한 방식으로, CPU(102) 및 GPU는 버스(106)를 통한 CPU(102) 및 GPU(104)의 연결이 없어질 수 있는 방식으로 물리적으로 연결된다. 또한, 실시예에서, CPU(102) 및 GPU(104)는, 도 2와 관련하여 논의되는 것처럼, 컴퓨팅 장치(100)의 통합 메모리 구조 내에 포함될 수 있다.
GPU(104)는 컴퓨팅 장치(100) 내의 임의 개수의 그래픽 연산(operations)을 수행하도록 구성될 수 있다. 예를 들면, GPU(104)는 그래픽 이미지, 그래픽 프레임, 비디오 또는 그 유사한 것들을 렌더링하거나 조작하도록 구성되어 컴퓨팅 장치(100)의 사용자에게 디스플레이될 수 있다. 일부 실시예에서, GPU(104)는 많은 그래픽 엔진(도시되지 않음)을 포함하고, 각 그래픽 엔진은 특정 그래픽 작업을 수행하거나 또는 특정 유형의 업무량을 실행하도록 구성된다.
컴퓨팅 장치(100)는 또한 메모리 장치(108)를 포함할 수 있다. 메모리 장치(108)는 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 플래시 메모리, 또는 기타 다른 적합한 메모리 시스템을 포함할 수 있다. 예를 들면, 메모리 장치(108)는 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 메모리(108)는 메모리 공유 절차를 구현하는 명령을 실행하도록 구성되는 장치 드라이버(110)를 포함할 수 있다. 장치 드라이버(110)는 소프트웨어, 애플리케이션 프로그램, 또는 애플리케이션 코드 등일 수 있다. 일부 실시예에서, 장치 드라이버(110)는 사용자 모드 드라이버이다.
메모리(108)는 라스트 레벨 캐시(a last level cache (LLC))(114), 레벨2 캐시(116), 및 레벨 1 캐시(118)를 포함하는 멀티-레벨 캐시(112)를 포함한다. 비록 멀티-레벨 캐시(112)가 설명 목적으로 사용되었지만, 어떠한 캐시라도 컴퓨팅 장치(100)에 포함될 수 있다. 멀티-레벨 캐시(112)는 CPU(102)가 자주 사용하는 데이터의 더 작은 서브셋을 저장하는 더 작고, 더 빠른 메모리일 수 있다. 더 큰 데이터 셋은 저장소(120)에 저장될 수 있다. 저장소(120)는 하드 드라이브, 광 드라이브, 썸드라이브(a thumbdrive), 드라이브 어레이, 또는 이들의 임의의 조합과 같은 물리적 메모리이다. 저장소(120)는 원격 저장소 드라이브를 포함할 수 있다. CPU(102)가 저장소(120)에 저장된 데이터에 액세스하는데 걸리는 시간은 CPU(102)가 메모리(104) 내의 멀티-레벨 캐시(112)에 액세스하는데 걸리는 시간보다 상대적으로 더 느릴 수 있다.
일부 실시예에서, LLC(114)는 CPU(102)와 GPU(104) 간에 공유되는 한편, 레벨 2 캐시(116) 및 레벨 1 캐시(118)는 GPU(104)로부터 감추어져 있어서, GPU(104)가 직접 레벨 2 캐시(116) 및 레벨 1 캐시(118)에 있는 데이터에 액세스할 수 없다. 그러나, LLC(114)는 레벨 2 캐시(116) 및 레벨 1 캐시(118)에 저장된 데이터를 읽고 쓸 수 있다. 이에 따라서, GPU(104)가 레벨 2 캐시(116) 또는 레벨 1 캐시(118)에 캐시된 데이터를 요청할 때, LLC(114)는 GPU(104)에 의한 처리를 위하여 레벨 2 캐시(116) 및 레벨 1 캐시(118)로부터 데이터를 검색할 수 있다. 이러한 방식으로 LLC(114)는 컴퓨팅 장치(100) 내에서 데이터 일관성(data coherency)을 보장한다. 본 출원에서 사용된 바와 같이, 일관성은 CPU(102) 및 GPU(104)에 의해 액세스되고 있는 데이터가 동일할 때의 상태를 말한다. 따라서, CPU(102)는 정확한 데이터가 GPU(104)와 공유되도록 하기 위하여 데이터가 LLC(114)와의 일관성을 보장함으로써, 저장 장치(120)로부터의 데이터가 LLC(114), 레벨 2 캐시(116), 및 레벨 1 캐시(118)에서 정확하게 반영되는 것을 보장할 것이다.
또한, 실시예에서, CPU 및 GPU는 어느 레벨의 메모리에도 액세스할 수 있다. 그러나, 메모리의 다른 레벨로부터 온 데이터는 오래된 반면, LLC(114)는 가장 최근의 데이터를 포함한다. 뿐만 아니라, 실시예에서, CPU 및 GPU는 상호 액세스 가능한 저장소 위치를 채택하여 공유 가상 메모리를 수행할 수 있다. 임의의 상호 액세스 가능한 저장소 위치는 메모리 장치(104)의 임의의 영역, 저장소(120)의 임의의 영역, 네트워크화된 저장소 위치, 썸드라이브, 또는 그들의 임의의 조합을 포함할 수 있지만 이것으로 한정되지 않는다.
저장소(120)는 서피스(a surface)(122)를 포함할 뿐만 아니라 또한 컴퓨팅 장치(100)에서 구동하도록 구성되는 몇 개의 애플리케이션(124)이라도 포함한다. 서피스(122)는 장치 드라이브(110)에 의해 할당되는 물리적 메모리의 지정된 부분이다. 서피스는 서피스(122) 내의 물리적 메모리의 콘텐츠에 대해 수행되는 처리에 기초하여 갱신될 수 있다. 실시예에서, 애플리케이션(124)이 CPU(104)에 의해서 실행될 때, 애플리케이션(124)은 서피스가 장치 드라이버(110)에 의해 할당되도록 요청할 수 있다. 또한, CPU(102)에서 구동되는 애플리케이션(124)은 서피스(122)의 바람직한 크기와 특성을 명시함으로써 애플리케이션(124)에 의해 요청된 메모리 할당에 따라서 서피스(122)를 구성할 수 있다. 또한, 서피스 할당은, 예를 들면, 컴퓨팅 장치(100)의 CPU(102)로부터의 입력에 응답하여, 수행될 수 있다. 또한, 실시예에서, 서피스는 LLC 캐셔블(cachable)로서 표시된다. 서피스(122)가 LLC 캐셔블로서 지정됨으로써, 서피스(122) 내의 위치로부터 캐시된 데이터는 LLC(114)에 캐시될 수 있고, 이에 따라서 CPU(102) 및 GPU(104) 모두에 의해서 LLC에서 액세스 가능하게 된다.
메모리 관리 장치(a memory management unit (MMU))(126)는 서피스(122) 내에 저장되는 데이터로의 액세스를 관리하도록 사용될 수 있다. MMU(126)는 CPU(102) 및 GPU(104)의 가상 어드레스 공간을 어드레스 공간의 여러 페이지로 분할할 수 있다. CPU(102) 및 GPU(104)는 각각 그들 자신의 가상 어드레스 공간을 갖는다. 가상 어드레스 공간은 컴퓨팅 시스템 내에서 실행되는 다양한 애플리케이션(124)을 가상 어드레스의 특정 서브셋으로 분리시킴으로써 서피스(122) 내에 간직된 데이터의 보호를 가능하게 한다. 가상 어드레스 공간을 사용함으로써, 하나의 애플리케이션(124)이 다른 애플리케이션(124)의 데이터에 액세스하지 않을 것이다. 따라서, MMU(126)는 CPU 페이지 테이블(128) 및 GPU 페이지 테이블(130)을 포함한다. CPU 페이지 테이블은 서피스(122) 내의 물리적 어드레스 위치에 매핑되는 CPU의 가상 어드레스를 포함한다. 유사하게, GPU 페이지 테이블은 서피스(122) 내의 물리적 어드레스 위치에 매핑되는 GPU의 가상 어드레스를 포함한다. 본 출원에서 설명되는 메모리 공유 절차에서, CPU 페이지 테이블(128)은 CPU 가상 어드레스 공간을 물리적 어드레스 공간으로 매핑하는 것을 포함할 수 있다. 물리적 어드레스 공간은 서피스(122) 내의 물리적 위치에 대응한다. 이와 마찬가지로, GPU 페이지 테이블(130)은 GPU 가상 어드레스 공간을 동일한 가상 어드레스 공간으로 매핑하는 것을 포함할 수 있다.
다양한 실시예에서, CPU 페이지 테이블(128)로부터의 가상 메모리 어드레스 및 GPU 페이지 테이블(130)로부터의 그래픽 가상 메모리 어드레스는 변환 절차를 통해 서피스(122)의 물리적 메모리 페이지에 매핑된다. 변환 절차는 임의의 가상 메모리 어드레스를 대응하는 물리적 어드레스로 전환하도록 사용될 수 있다. 예를 들면, 변환 절차는 페이지 테이블 워크(a page table walk)를 통해서 수행될 수 있으며, 이는 페이지 테이블 내의 가상 메모리 어드레스를 페이지 테이블 내의 물리적 메모리 어드레스로 전환하는 특정 전환 테이블에 기초하여 수행될 수 있다. 또한, 실시예에서, 변환 룩어사이드 버퍼(a translation look-aside buffer)가 CPU 및 GPU의 가상 어드레스를 그들의 각 페이지 테이블 내의 물리적 어드레스 공간으로 변환하는데 사용될 수 있다.
변환 절차가 수행된 이후에, 서피스(122)는 피닝될 수 있다. 서피스를 피닝(pinning)하는 것은 물리적 위치 및 그 대응하는 물리적 어드레스가 변경되지 않도록 서피스를 보호하는 것을 지칭한다. 따라서, 서피스(122)를 피닝하는 것은 가상 어드레스 공간과 물리적 어드레스 공간 간의 "하드(hard)" 매핑을 보장한다. 어드레스 공간들 간의 하드 매핑은 서피스가 피닝된 이후에 변하지 않는 매핑이다. 만일 서피스가 피닝되지 않는다면, 페이지 장애가 발생될 수 있고, 또는 서피스의 물리적 위치가 이동함에 따라 잘못된 데이터가 처리될 수 있다.
실시예에서, 애플리케이션(124)은 CPU(102) 상에서 실행될 수 있으며, 데이터 처리와 같은 연산을 수행하기 위하여, 서피스(122)와 같은, 서피스를 요청할 수 있다. CPU(102)는 연산을 GPU(104)로 핸드오프(handoff)할 수 있다. 페이지 테이블들이 서피스(122)에 매핑되었기 때문에, GPU는 서피스에 액세스함으로써, 데이터를 다른 어드레스 공간으로 복사하지 않고, CPU(102)에 의해 오프로딩된 연산의 즉각적인 실행을 개시할 수 있다. CPU(102)에 의해 연산이 완료될 때, GPU(104)는 연산이 완료되었다고 CPU(122)에 신호할 수 있다. CPU(102)는, 데이터를 본래의 어드레스 공간으로 다시 복사하지 않고, 데이터를 계속해서 처리할 수 있다.
애플리케이션(124)에 의해 요청된 연산이 GPU(104)에 의해 수행될 때, 서피스(122)에 대한 변경이 발생할 수 있다. 본 출원에서 설명되는 메모리 공유 절차에 따르면, 서피스(122)에 대한 그러한 변경은 CPU(102)에게는 완전히 가시적이다. 따라서, 데이터는, GPU(104)에서 CPU(102)로, 또는 그 역으로, 데이터를 복사하지 않고, GPU(104)와 CPU(102) 간에 공유될 수 있다.
CPU(102)는 컴퓨팅 장치(100)를 하나 이상의 I/O 장치(134)에 연결하도록 적응된 입출력(I/O) 장치 인터페이스(132)에 버스(106)를 통해 연결될 수 있다. I/O 장치(134)는, 예를 들면, 키보드 및 포인팅 장치를 포함할 수 있으며, 포인팅 장치는 터치패드나 터치스크린을 포함할 수 있다. I/O 장치(134)는 컴퓨팅 장치(100)의 빌트인(built-in) 컴포넌트이거나, 또는 컴퓨팅 장치(100)의 외부에 연결되는 장치일 수 있다.
CPU(102)는 또한 컴퓨팅 장치(100)를 디스플레이 장치(138)에 연결하도록 적응된 디스플레이 인터페이스(136)에 버스(106)를 통해 링크될 수 있다. 디스플레이 장치(138)는 컴퓨팅 장치(100)의 빌트인(built-in) 컴포넌트인 디스플레이 스크린을 포함할 수 있다. 디스플레이 장치(138)는 또한 그 중에서도, 컴퓨팅 장치(100)의 외부에 연결되는, 컴퓨터 모니터, 텔레비전, 또는 프로젝터일 수 있다.
네트워크 인터페이스 컨트롤러(NIC)(140)는 버스(106)를 통해 컴퓨팅 장치(100)를 네트워크(142)에 연결하도록 적응될 수 있다. 네트워크(142)는 그 중에서도 광역 네트워크(WAN), 근거리 네트워크(LAN), 또는 인터넷일 수 있다.
도 1의 블록도는 컴퓨팅 장치(100)가 도 1에 도시된 모든 컴포넌트를 포함한다고 표시하도록 의도되지 않는다. 또한, 컴퓨팅 장치(100)는, 특정 구현의 세부사항에 따라서, 도 1에 도시되지 않은 몇 개의 애플리케이션이라도 포함할 수 있다.
도 2(a) 및 도 2(b)는 실시예에 따라서 컴퓨팅 장치(100)의 CPU(102)와 GPU(104) 사이에서 메모리를 공유하는 절차를 구현하는데 사용되는 통합 메모리 구조(200)의 개요도이다. 유사하게 번호가 부여된 항목들은 도 1과 관련하여 설명된 바와 같다. UMA(200)는, 예를 들면, 컴퓨팅 장치(100)의 CPU 페이지 테이블(128), GPU 페이지 테이블(130), 및 서피스(122)를 포함할 수 있다.
UMA(200)는, CPU(102)와 GPU(104) 간의 어떠한 유형의 데이터 복사나 데이터 전송을 행하지 않고도, CPU(102)와 GPU(104) 간의 직접적인 메모리 공유를 가능하게 해줄 수 있다. 이것은 CPU(102) 및 GPU(104)가 서피스(122)를 공유하게 해줌으로써 성취될 수 있다. 위에 설명된 바와 같이, 서피스(122)는 물리적 저장 장치의 일부일 수 있다. 서피스는 몇 개의 물리적 메모리 위치(202)라도 포함할 수 있다. 물리적 메모리 위치(202)는 페이징된 메모리 포맷으로 조직화될 수 있고, 이때 페이지는 서피스(122) 내의 물리적 메모리의 고정길이 블록이다.
CPU 페이지 테이블(128)은 많은 CPU 가상 메모리 어드레스(204)를 포함할 수 있으며, GPU 페이지 테이블(130)은 많은 그래픽 가상 메모리 어드레스(206)를 포함할 수 있다. CPU 가상 메모리 어드레스(204)는 CPU 가상 어드레스 공간을 형성하는 한편, 그래픽 가상 메모리 어드레스(206)는 그래픽 가상 어드레스 공간을 형성한다. 각 어드레스 공간은 각 페이지 테이블 내의 물리적 어드레스로 매핑된다. 따라서, 두 CPU 가상 메모리 어드레스(204) 및 그래픽 가상 메모리 어드레스(206)는 CPU 페이지 테이블(128) 및 GPU 페이지 테이블(130) 내의 동일한 집합의 물리적 어드레스(208)에 각기 매핑된다.
물리적 어드레스(208)는 CPU(102) 및 GPU(104)(도1)가 서피스(122) 내의 물리적 위치(202)에 저장된 데이터를 처리하는 것을 가능하게 한다. 다양한 실시예에서, 서피스(122)는, 애플리케이션(124)(도 1)과 같은 애플리케이션에 의해서 액세스되는 특정한 CPU 가상 어드레스(204)에 기초하여 할당된다. 일단 서피스(122)가 할당되면, 도 2에 도시된 것처럼, 각 물리적 어드레스(208)는 CPU 페이지 테이블(128) 내의 대응하는 CPU 가상 어드레스(204)에 매핑된다. GPU 페이지 테이블(130) 내의 그래픽 가상 메모리 어드레스(206)는 CPU 페이지 테이블(128)과 동기화되어, CPU 가상 어드레스 및 GPU 가상 메모리 어드레스가 동일한 집합의 물리적 어드레스(208)에 매핑되도록 할 수 있다. 물리적 어드레스(208)는 서피스(122) 내의 물리적 위치(202)에 대응한다. 따라서, 서피스(122)는 CPU(102)와 GPU(104) 사이에서 직접 공유될 수 있다. 실시예에서, 만일 GPU(104)가 어느 물리적 위치(202)에 위치하는 데이터를 변경한다면, 임의의 데이터 복사나 데이터 마샬링(data marshaling)없이, 이러한 변경은 서피스(122)를 통해 자동으로 CPU(102)에 보이게 된다.
도 2의 개요도는 UMA(200)가 도 2에 도시된 모든 컴포넌트를 포함하는 것이라 표시하는 것으로 의도되지 않는다. 또한, UMA(200)는, 특정 구현의 세부사항에 따라서, 도 2에 도시되지 않은 몇 개의 추가적인 컴포넌트라도 포함할 수 있다.
도 3은 실시예에 따라서 컴퓨팅 장치의 CPU와 GPU 간에 메모리를 공유하는 방법(300)을 도시하는 프로세스 흐름도이다. 다양한 실시예에서, 방법(300)은 데이터를 CPU 메모리에서 GPU 메모리로 복사하지 않고도 CPU와 GPU 사이에서 메모리를 공유하도록 사용된다.
일부 실시예에서, 방법(300)은 CPU(102) 및 GPU(104)가 버스(106)로 연결되는 컴퓨팅 장치(100)와 같은 컴퓨팅 장치에서 실행될 수 있다. 다른 실시예에서, CPU(102) 및 GPU(104)는 도 2와 관련하여 논의되는 UMA(200)와 같은 UMA에 포함될 수 있다. 또한, 방법(300)은 컴퓨팅 장치(100)의 장치 드라이버(126)와 같은 컴퓨팅 장치의 드라이버에 의해서 실행될 수 있다.
방법은 블록(302)에서 물리적 메모리 내에 서피스를 할당하는 것으로 시작한다. 실시예에서, 서피스는 컴퓨팅 장치의 CPU에서 구동하는 애플리케이션으로부터의 입력에 응답하여 컴퓨팅 장치의 물리적 메모리 내에 할당될 수 있다. 또한, 실시예에서, 서피스는 장치 드라이버에 의해 할당될 수 있다. 애플리케이션 또는 장치 드라이버는 CPU 가상 어드레스를 사용하여 CPU로부터 서피스에 액세스할 수 있다. 실시예에서, CPU 가상 어드레스는 컴퓨팅 장치의 운영 체제에 의해서 애플리케이션 또는 장치 드라이버에 제공된다.
블록(304)에서, 서피스 내의 물리적 위치에 대응하는 물리적 어드레스는 CPU 가상 어드레스에 매핑된다. CPU 가상 메모리 어드레스와 물리적 어드레스 간의 매핑은 CPU 페이지 테이블 내에 포함된다. 물리적 메모리 페이지를 가상 메모리 어드레스에 매핑하는 것은 CPU 가상 어드레스를 변환하여 시스템 메모리 내의 대응하는 물리적 메모리 페이지를 결정하는 것을 포함할 수 있다. CPU 가상 어드레스가 물리적 어드레스로 변환될 때, 변환 동안 알게되는 CPU 가상 어드레스와 물리적 어드레스 간의 연관이 로크(lock)된다. 연관을 로크함으로써, CPU 페이지 테이블 내의 물리적 어드레스에 대응하는 서피스의 물리적 위치는 캐시로 페이징될 수 있다. 서피스의 물리적 어드레스가 장치 드라이버에 의해 변경되는 것이 방지되므로, 페이지는 연관이 로크되는 동안 캐시 내에 계속 남아 있을 것이다.
블록(306)에서, GPU 가상 메모리 어드레스는 서피스의 물리적 위치에 매핑된다. 실시예에서, 서피스는 LLC 캐셔블로서 지정된다. 그러한 지정은 서피스의 물리적 위치가 CPU 및 GPU에 의해서 공유되는 LLC 내에 캐시되는 것을 보장한다. 애플리케이션에 의해 사용되는 그래픽 가상 메모리 어드레스는 CPU의 가상 어드레스에 매핑되는 동일한 물리적 어드레스로 변환될 수 있다. 실시예에서, 장치 드라이버는 그래픽 가상 메모리 어드레스의 매핑을 GPU 페이지 테이블 내의 물리적 어드레스로 갱신할 수 있다.
서피스를 GPU 가상 어드레스로 매핑하는 과정은 서피스를 피닝하는 과정을 포함할 수 있다. 서피스를 피닝함으로써, GPU 가상 어드레스와 서피스 간의 매핑이 변경되는 것이 방지된다. 따라서, GPU 가상 어드레스는 물리적 메모리의 변경 없이 동일한 물리적 메모리에 대응할 것이다. 예를 들면, 운영 체제는 할당된 물리적 메모리 위치를 그의 메모리 관리의 일부로서 변경할 수 있다. 그러나, 일단 서피스가 피닝되면, 운영 체제는 서피스의 물리적 메모리 위치를 변경하지 못하게 된다.
도 4는 실시예에 따라서 컴퓨팅 장치의 CPU와 GPU 간의 공유된 메모리를 처리하는 방법(400)을 도시하는 프로세스 흐름도이다.
블록(402)에서, 연산은 CPU에서 GPU로 오프로딩될 수 있다. 이 연산은 애플리케이션(124)(도 1)과 같은 애플리케이션에 의해서 지시받은 대로 GPU로 오프로딩될 수 있다. 또한, CPU 또는 GPU를 제어하기 위하여 사용되는 애플리케이션 프로그래밍 인터페이스(API)가 연산을 CPU에서 GPU로 오프로딩을 지시하도록 사용될 수 있다. 실시예에서, 연산을 CPU에서 GPU로 오프로딩하기 전에, CPU에 의해서 처리되고 있는 서피스 내에 위치하는 데이터는 LLC와 일관되게 만들어진다.
블록(404)에서, GPU는 오프로딩된 연산의 처리를 시작할 수 있다. GPU는 LLC 및 서피스 내의 데이터에 액세스하여 연산을 수행할 수 있다. GPU가, LLC 내에 있지 않지만 CPU의 어느 다른 캐시에 있는, 데이터를 요청하는 이벤트에서, LLC는 GPU에 의한 처리를 위하여 다른 캐시로부터 데이터를 검색할 수 있다.
블록(406)에서, GPU는 연산이 완료되었다고 신호한다. 완료 신호는 호스트로 송신될 수 있다. 실시예에서, 연산이 완료될 때, 장치 드라이버는 CPU와 GPU 간의 연산을 동기화한다. 또한, 실시예에서, 완료 신호는, 예를 들면, 메일박스 쓰기 또는 인터럽트일 수 있다. 완료 신호는 GPU가 서피스 내의 데이터를 수정하는 결과를 가져오는 어떤 계산이나 그래픽 연산을 수행했다는 것을 표시할 수 있다. 완료 이후에, GPU의 출력은 GPU에 의해 처리될 수 있다. 다양한 실시예에서, GPU가 서피스의 임의의 물리적 위치로부터 읽거나 그 곳에 씀으로써 서피스를 처리할 때, 처리는 내부 버퍼와 GPU의 캐시에서 발생할 수 있다. 따라서, 내부 버퍼와 GPU의 캐시 내의 데이터는 GPU 처리가 완료된 이후에 LLC와 일관되게 만들어진다.
도 3 및 도 4의 프로세스 흐름도는 방법(300, 400)의 블록이 어느 특정 순서로 실행되거나, 또는 모든 블록이 모든 사례에 포함된다고 표시하는 것으로 의도되지 않는다. 또한, 특정 구현의 세부사항에 따라서, 몇 개의 블록이라도 방법(300, 400)에 포함될 수 있다. 또한, 본 출원에서 설명되는 방법이 GPU를 포함하지만, 메모리는 또 다른 CPU 또는 직접 메모리 액세스(DMA) 컨트롤러와 같은 I/O 장치들 간에 공유될 수 있다.
도 5는 실시예에 따라서 컴퓨팅 장치의 CPU와 GPU 사이에서 메모리를 공유하는 코드를 저장하는 유형의, 비-일시적 컴퓨터-판독 가능한 매체(500)를 도시하는 블록도이다. 유형의, 비-일시적 컴퓨터-판독 가능한 매체(500)는 컴퓨터 버스(504)를 통해 프로세서(502)에 의해 액세스될 수 있다. 또한, 유형의, 비-일시적 컴퓨터-판독 가능한 매체(500)는 프로세서(502)에게 지시하여 본 출원에서 설명되는 방법을 수행하도록 구성되는 코드를 포함할 수 있다.
본 출원에서 설명되는 다양한 소프트웨어 컴포넌트는, 도 5에 도시된 바와 같이, 유형의, 비-일시적 컴퓨터-판독 가능한 매체(500)에 저장될 수 있다. 예를 들면, 서피스 할당 모듈(506)은 컴퓨팅 장치의 메모리 내에 많은 물리적 메모리 페이지를 포함하는 서피스를 할당하거나 생성하도록 구성될 수 있다. 매핑 모듈(508)은 서피스 내의 물리적 위치를 CPU 어드레스 테이블 및 GPU 어드레스 테이블 내의 가상 메모리 어드레스에 매핑하도록 구성될 수 있다. 또한, 피닝 모듈(510)은 서피스를 피닝하도록 구성되어 서피스 내의 물리적 위치가 변경되지 않도록 할 수 있다.
도 5의 블록도는 유형의, 비-일시적 컴퓨터-판독 가능한 매체(500)가 도 5에 도시된 모든 컴포넌트를 포함하는 것을 나타내는 것으로 의도되지 않는다. 또한, 유형의, 비-일시적 컴퓨터-판독 가능한 매체(500)는 특정 구현의 세부사항에 따라서 도 5에 도시되지 않는 몇 개의 추가적인 컴포넌트라도 포함할 수 있다.
실시예에서, CPU는 CPU 어드레스 공간과 GPU 어드레스 공간 사이의 데이터를 마샬링할 필요는 없다. 뿐만 아니라, CPU는 어떠한 다른 프로세싱 코어들도 CPU가 GPU에 의해 다루어지기를 원하는 특정 데이터 집합에 대하여 작업하지 않도록 하여, 프로세싱 코어들 간의 프로세싱 레이스(procesing races)의 방지를 보장하도록 임무가 주어진 것은 아니다.
도 6은 공유된 물리적 메모리를 구현하는 예시적인 시스템(600)의 블록도이다. 유사한 번호가 부여된 항목들은 도 1, 도 2(a) 및 도 2(b)와 관련하여 설명된 바와 같다. 일부 실시예에서, 시스템(600)은 미디어 시스템이다. 또한, 시스템(600)은 개인용 컴퓨터(PC), 랩톱 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치패드, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, 개인용 디지털 보조기(PDA), 휴대폰, 휴대폰/PDA의 조합, 텔레비전, 스마트 장치(예를 들면, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 장치(MID), 메시징 장치, 데이터 통신 장치, 또는 기타 유사한 것에 통합될 수 있다.
다양한 실시예에서, 시스템(600)은 디스플레이(604)에 결합되는 플랫폼(602)을 포함한다. 플랫폼(602)은, 콘텐츠 서비스 장치(606)나 콘텐츠 전달 장치(들)(608), 또는 기타 유사한 콘텐츠 소스와 같은, 콘텐츠 장치로부터 콘텐츠를 수신할 수 있다. 하나 이상의 네비게이션 특징을 포함하는 네비게이션 컨트롤러(610)는, 예를 들면, 플랫폼(602) 및/또는 디스플레이(604)와 인터랙션하도록 사용될 수 있다. 이들 각 컴포넌트는 아래에서 더 상세하게 설명된다.
플랫폼(602)은 칩셋(612), 중앙 처리 장치(CPU)(102), 메모리 장치(108), 저장 장치(120), 그래픽 서브시스템(614), 애플리케이션(124), 무선 장치(a radio)(616)의 임의의 조합을 포함할 수 있다. 칩셋(612)은 CPU(102), 메모리 장치(108), 저장 장치(120), 그래픽 서브시스템(614), 애플리케이션(124), 무선 장치(614) 간의 상호통신을 제공할 수 있다. 예를 들면, 칩셋(612)은 저장 장치(120)와의 상호통신을 제공할 수 있는 저장소 어댑터(도시되지 않음)를 포함할 수 있다.
CPU(102)는 복합 명령 집합 컴퓨터(CISC) 또는 축소 명령 집합 컴퓨터(RISC) 프로세서, x86 명령 집합 호환 프로세서, 멀티-코어, 또는 기타 다른 마이크로프로세서(들) 또는 중앙 처리 장치(CPU)로서 구현될 수 있다. 일부 실시예에서, CPU(102)는 듀얼-코어 프로세서(들) 또는 듀얼-코어 모바일 프로세서(들) 등을 포함할 수 있다.
메모리 장치(108)는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 RAM(SRAM)과 같은 휘발성 메모리 장치로서 구현될 수 있지만, 이것으로 한정되지 않는다. 저장 장치(120)는 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 내부 저장 장치, 부착형 저장장치, 플래시 메모리 장치, 배터리 백업 SDRAM(동기 DRAM), 및/또는 네트워크 액세스가능한 저장 장치와 같은 비-휘발성 저장 장치로 구현될 수 있지만, 이것으로 한정되지 않는다. 일부 실시예에서, 저장 장치(120)는, 예를 들면, 복수의 하드 드라이브가 포함될 때, 중요한 디지털 미디어에 대한 저장 성능 강화된 보호를 증가시키는 기술을 포함한다.
그래픽 서브시스템(614)은 디스플레이를 위한 스틸(still)이나 비디오와 같은 이미지의 처리를 수행할 수 있다. 그래픽 서브시스템(614)은, 예를 들면, GPU(104), 또는 비주얼 처리 장치(a visual processing unit (VPU))와 같은 그래픽 처리 장치(GPU)를 포함할 수 있다. 아날로그 또는 디지털 인터페이스는 그래픽 서브시스템(614) 및 디스플레이(604)를 통신 가능하게 결합하는데 사용될 수 있다. 예를 들면, 인터페이스는 고선명 멀티 미디어 인터페이스, 디스플레이포트, 무선 HDMI, 및/또는 무선 HD 컴플라이언트(wireless HD compliant) 기술 중의 임의의 기술일 수 있다. 그래픽 서브시스템(614)은 CPU(102) 또는 칩셋(612)에 통합될 수 있다. 대안으로, 그래픽 서브시스템(614)은 칩셋(612)에 통신 가능하게 결합되는 스탠드-얼론(stand-alone) 카드일 수 있다.
본 출원에서 설명되는 그래픽 및/또는 비디오 처리 기술은 다양한 하드웨어 아키텍처로 구현될 수 있다. 예를 들면, 그래픽 및/또는 비디오 기능성이 칩셋(612)에 통합될 수 있다. 대안으로, 별도의 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 실시예로서, 그래픽 및/또는 비디오 기능성은 멀티코어 프로세서를 비롯한 범용 프로세서에 의해 구현될 수 있다. 또 다른 실시예에서, 기능은 소비자 전자 장치 내에 구현될 수 있다.
무선 장치(616)는 다양하고 적합한 무선 통신 기술을 사용하여 신호를 전송하고 수신할 수 있는 하나 이상의 무선 장치를 포함할 수 있다. 이러한 기술은 하나 이상의 무선 네트워크를 거치는 통신을 포함할 수 있다. 예시적인 무선 네트워크는 무선 근거리 네트워크(WLAN), 무선 개인 영역 네트워크(WPAN), 무선 도시지역 네트워크(WMAN), 셀룰러 네트워크, 위성 네트워크, 또는 이와 유사한 것을 포함할 수 있다. 이와 같은 네트워크를 통해 통신할 때, 무선 장치(616)는 하나 이상의 적용가능한 임의 버전의 표준에 따라서 동작할 수 있다.
디스플레이(604)는 텔레비전 타입의 모니터나 디스플레이를 포함할 수 있다. 예를 들면, 디스플레이(604)는 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 텔레비전, 또는 이와 유사한 것을 포함할 수 있다. 디스플레이(604)는 디지털 및/또는 아날로그일 수 있다. 일부 실시예에서, 디스플레이(604)는 홀로그래픽 디스플레이이다. 또한, 디스플레이(604)는 비주얼 프로젝션을 수신하는 투명한 서피스일 수 있다. 그러한 프로젝션은 다양한 형태의 정보, 이미지, 오브젝트, 또는 이와 유사한 것을 전달할 수 있다. 예를 들면, 그러한 프로젝션은 모바일 증강 현실(MAR) 애플리케이션일 수 있다. 하나 이상의 애플리케이션(124)의 제어하에, 플랫폼(602)은 디스플레이(604)에 사용자 인터페이스(618)를 디스플레이할 수 있다.
콘텐츠 서비스 장치(들)(606)는 임의의 국가적, 국제적, 또는 독립적인 서비스에 의하여 호스팅될 수 있고, 이에 따라서, 예를 들면, 인터넷을 통해서 플랫폼(602)에 액세스할 수 있다. 콘텐츠 서비스 장치(들)(606)는 플랫폼(602) 및/또는 디스플레이(604)에 결합될 수 있다. 플랫폼(602) 및/또는 콘텐츠 서비스 장치(들)(606)는 네트워크(142)에 결합되어 미디어 정보를 네트워크(142)로 및 그로부터 전달(송신 및/또는 수신)할 수 있다. 콘텐츠 전달 장치(들)(608)는 또한 플랫폼(602) 및/또는 디스플레이(604)에 결합될 수 있다.
콘텐츠 서비스 장치(들)(606)는 케이블 텔레비전 박스, 개인용 컴퓨터, 네트워크, 전화, 또는 디지털 정보를 전달할 수 있는 인터넷-가능한 장치를 포함할 수 있다. 또한, 콘텐츠 서비스 장치(들)(606)는, 네트워크(142)를 통해, 콘텐츠 제공자와 플랫폼(602) 또는 디스플레이(604) 간에 콘텐츠를 일방향으로 또는 양방향으로 전달할 수 있는 임의의 다른 유사한 장치를 포함할 수 있다. 콘텐츠는 시스템(600) 내의 컴포넌트 및 콘텐츠 제공자 중의 어느 하나로 및 어느 하나로부터 네트워크(142)를 통해 일방향으로 및/또는 양방향으로 전달될 수 있다는 것이 인식될 것이다. 콘텐츠의 예는, 예를 들면, 비디오, 음악, 의료 및 게임 정보 등을 포함하는 미디어 정보를 포함할 수 있다.
콘텐츠 서비스 장치(들)(606)는 미디어 정보, 디지털 정보, 또는 기타 다른 콘텐츠를 포함하는 케이블 텔레비전 프로그래밍과 같은 콘텐츠를 수신할 수 있다. 콘텐츠 제공자의 예는 그 중에서도 케이블이나 위성 텔레비전 또는 무선 장치나 인터넷 콘텐츠 제공자를 포함할 수 있다.
일부 실시예에서, 플랫폼(602)은 하나 이상의 네비게이션 특징을 포함하는 네비게이션 컨트롤러(610)로부터 제어 신호를 수신한다. 네비게이션 컨트롤러(610)의 네비게이션 특징은, 예를 들면, 사용자 인터페이스(618)와 인터랙션하도록 사용될 수 있다. 네비게이션 컨트롤러(610)는 사용자가 공간(예를 들면, 지속적이고 다차원의) 데이터를 컴퓨터에 입력할 수 있게 해주는 컴퓨터 하드웨어 컴포넌트(특히 휴먼 인터페이스 장치)일 수 있는 포인팅 장치일 수 있다. 그래픽 사용자 인터페이스(GUI)와 같은 많은 시스템과 텔레비전 및 모니터는 사용자가 물리적 제스처를 사용하여 데이터를 제어하고 컴퓨터 또는 텔레비전에 제공하게 한다. 물리적 제스처는 얼굴 표정, 얼굴 움직임, 다양한 팔다리의 운동, 몸의 움직임, 몸짓 언어 또는 이들의 임의의 조합을 포함하지만 이것으로 한정되지 않는다. 이러한 물리적 제스처는 명령 또는 지시로 인식되거나 변환될 수 있다.
네비게이션 컨트롤러(610)의 네비게이션 특징의 움직임은 디스플레이(604)에 디스플레이되는 포인터, 커서, 포커스 링, 또는 다른 비주얼 표시자의 움직임에 의해서 디스플레이(604)에 반향될 수 있다. 예를 들면, 애플리케이션(124)의 제어하에, 네비게이션 컨트롤러(610)에 위치하는 네비게이션 특징은 사용자 인터페이스(618)에 디스플레이되는 가상 네비게이션 특징에 매핑될 수 있다. 일부 실시예에서, 네비게이션 컨트롤러(610)는 별도의 컴포넌트가 아니고, 오히려 플랫폼(602) 및/또는 디스플레이(604) 내에 통합될 수 있다.
시스템(600)은, 예를 들면 인에이블 될 때, 사용자가 초기 부팅 이후에 버튼의 터치에 의해서 플랫폼(602)을 즉각적으로 켜거나 끌 수 있도록 하는 기술을 포함하는 드라이버(도시되지 않음)를 포함할 수 있다. 프로그램 로직은 플랫폼(602)이 "꺼졌을" 때, 플랫폼으로 하여금 콘텐츠를 미디어 어댑터나 다른 콘텐츠 서비스 장치(들)(606) 또는 콘텐츠 전달 장치(들)(608)로 스트리밍하게 해줄 수 있다. 또한, 칩셋(612)은, 예를 들면, 5.1 서라운드 사운드 오디오 및/또는 고화질 7.1 서라운드 사운드 오디오를 지원하는 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 드라이버는 통합된 그래픽 플랫폼용의 그래픽 드라이버를 포함할 수 있다. 일부 실시예에서, 그래픽 드라이버는 주변장치 상호연결 익스프레스(a peripheral component interconnect express (PCIe)) 그래픽 카드를 포함할 수 있다.
다양한 실시예에서, 시스템(600)에 도시되는 임의의 하나 이상의 컴포넌트들이 통합될 수 있다. 예를 들면, 플랫폼(602) 및 콘텐츠 서비스 장치(들)(606)가 통합될 수 있고, 플랫폼(602) 및 콘텐츠 전달 장치(들)(608)가 통합될 수 있고, 또는 플랫폼(602), 콘텐츠 서비스 장치(들)(606), 및 콘텐츠 전달 장치(들)(608)가 통합될 수 있다. 일부 실시예에서, 플랫폼(602) 및 디스플레이(604)는 통합된 장치이다. 예를 들면, 디스플레이(604) 및 콘텐츠 서비스 장치(들)(606)가 통합될 수 있고, 또는 디스플레이(604) 및 콘텐츠 전달 장치(들)(608)가 통합될 수 있다.
시스템(600)은 무선 시스템 또는 유선 시스템으로 구현될 수 있다. 무선 시스템으로 구현될 때, 시스템(600)은 하나 이상의 안테나, 송신기, 수신기, 송수신기, 증폭기, 필터, 제어 로직 등과 같은 무선 공유 미디어를 통해 통신하기에 적합한 컴포넌트 및 인터페이스를 포함할 수 있다. 무선 공유 미디어의 예는 RF 스펙트럼과 같은 무선 스펙트럼의 일부를 포함할 수 있다. 무선 시스템으로 구현될 때, 시스템(600)은 입력/출력(I/O) 어댑터, I/O 어댑터를 대응하는 유선 통신 매체와 연결하는 물리적 커넥터, 네트워크 인터페이스 카드(NIC), 디스크 컨트롤러, 비디오 컨트롤러, 오디오 컨트롤러, 또는 그 유사한 것과 같은 유선 통신 미디어를 통해 통신하기에 적합한 컴포넌트 및 인터페이스를 포함할 수 있다. 유선 통신 미디어의 예는 와이어, 케이블, 메탈 리드(metal leads), 인쇄 회로 기판(PCB), 백플레인(backplane), 스위치 패브릭, 반도체 소재, 트위스트-페어 와이어, 동축 케이블, 광섬유, 또는 그 유사한 것을 포함할 수 있다.
플랫폼(602)은 하나 이상의 논리적 또는 물리적 채널을 설정하여 정보를 전달할 수 있다. 정보는 미디어 정보 및 제어 정보를 포함할 수 있다. 미디어 정보는 사용자에게 의도된 콘텐츠를 표현하는 정보를 지칭할 수 있다. 콘텐츠의 예는, 예를 들면, 음성 대화에서 생긴 데이터, 비디오 회의, 스트리밍 비디오, 전자 메일(이메일) 메시지, 음성 메일 메시지, 영숫자 부호, 그래픽, 이미지, 비디오, 텍스트 및 그 유사한 것을 포함할 수 있다. 음성 대화에서 생긴 데이터는, 예를 들면, 연설 정보, 침묵 기간, 배경 잡음, 편안한 잡음(comfort noise), 톤 및 그 유사한 것일 수 있다. 제어 정보는 자동화 시스템 용도의 명령, 지시 또는 제어 단어를 표현하는 임의의 데이터를 지칭할 수 있다. 예를 들면, 제어 정보는 미디어 정보를 시스템을 통해 라우팅하거나, 노드에게 사전에 결정된 방식으로 미디어 정보를 처리하도록 지시하는데 사용될 수 있다. 그러나, 실시예는 도 6에 도시되거나 설명된 구성요소나 맥락으로 한정되지 않는다.
도 7은 도 6의 시스템(600)이 구현될 수 있는 작은 폼 팩터(form factor) 장치(700)의 개요도이다. 동일하게 번호가 부여된 항목들은 도 6과 관련하여 설명된 바와 같다. 일부 실시예에서, 예를 들면, 장치(700)는 무선 성능을 갖는 모바일 컴퓨팅 장치로서 구현된다. 모바일 컴퓨팅 장치는 처리 시스템과, 예를 들면, 하나 이상의 배터리와 같은, 모바일 전력원 또는 전력 공급 장치를 갖는 임의의 장치를 지칭할 수 있다.
전술한 바와 같이, 모바일 컴퓨팅 장치의 예는 개인용 컴퓨터(PC), 랩톱 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치패드, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, 개인용 디지털 보조기(PDA), 휴대폰, 휴대폰/PDA의 조합, 텔레비전, 스마트 장치(예를 들면, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 장치(MID), 메시징 장치, 데이터 통신 장치 및 그 유사한 것을 포함할 수 있다.
모바일 컴퓨팅 장치의 예는 또한, 손목 컴퓨터, 손가락 컴퓨터, 반지 컴퓨터, 안경 컴퓨터, 벨트-클립 컴퓨터, 팔-밴드 컴퓨터, 신발 컴퓨터, 의복 컴퓨터, 또는 임의의 다른 적합한 유형의 착용가능한 컴퓨터와 같이, 사람이 착용할 수 있도록 구성된 컴퓨터를 포함할 수 있다. 예를 들면, 모바일 컴퓨팅 장치는 컴퓨터 애플리케이션뿐만 아니라, 음성 통신 및/또는 데이터 통신을 실행할 수 있는 스마트폰으로서 구현될 수 있다. 비록 일부 실시예가 스마트폰으로서 구현되는 모바일 컴퓨팅 장치를 예를 들어서 설명되었지만, 다른 실시예가 또한 다른 무선 모바일 컴퓨팅 장치를 사용하여 구현될 수 있다는 것이 인식될 수 있다.
도 7에 도시된 것처럼, 장치(700)는 하우징(702), 디스플레이(704), 입력/출력(I/O) 장치(706), 및 안테나(708)를 포함할 수 있다. 장치(700)는 또한 네비게이션 특징(710)을 포함할 수 있다. 디스플레이(704)는 모바일 컴퓨팅 장치에 적합한 정보를 디스플레이하는 임의의 적합한 디스플레이 장치를 포함할 수 있다. I/O 장치(706)는 정보를 모바일 컴퓨팅 장치에 입력하는 임의의 적합한 I/O 장치를 포함할 수 있다. 예를 들면, I/O 장치(706)는 영숫자 키보드, 숫자 키보드, 터치패드, 입력 키, 버튼, 스위치, 로커 스위치(rocker switches), 마이크로폰, 스피커, 음성 인식 장치 및 소프트웨어, 또는 그 유사한 것을 포함할 수 있다. 정보는 또한 마이크로폰의 방식으로 장치(700)에 입력될 수 있다. 그러한 정보는 음성 인식 장치에 의해서 디지털화될 수 있다.
예제 1
컴퓨팅 장치의 중앙 처리 장치(CPU)와 입력/출력(I/O) 장치 간에 메모리를 공유하는 방법이 이곳에서 설명된다. 방법은 물리적 메모리 내에 서피스를 할당하는 단계를 포함한다. 방법은 서피스를 CPU 페이지 테이블 내의 복수의 가상 메모리 어드레스로 매핑하는 단계를 포함한다. 방법은 또한 서피스를 그 서피스에 기초하여 I/O 장치 페이지 테이블 내의 복수의 그래픽 가상 메모리 어드레스에 매핑하는 단계를 포함한다. 방법은 서피스를 피닝하는 단계를 더 포함한다.
메모리는, CPU 메모리로부터 I/O 장치 메모리로 데이터를 복사하지 않고, 서피스를 통해서 CPU와 I/O 장치 사이에 공유될 수 있다. 서피스는 컴퓨팅 장치의 CPU 상에서 구동되는 애플리케이션으로부터의 입력에 응답하여 할당될 수 있다. 또한, 방법은 컴퓨팅 장치의 드라이버에 의해 실행될 수 있다.
CPU 및 I/O 장치의 캐시로부터의 데이터는 CPU와 I/O 장치 사이에 공유되는 라스트 레벨 캐시(LLC)와 일관될 수 있다. 연산은 CPU로부터 I/O 장치로 오프로딩될 수 있으며, 연산은 I/O 장치 내에서 수행될 수 있다. 완료 신호가 CPU로 송신될 수 있으며, 여기서 완료 신호는 I/O 장치가 서피스 내의 데이터 변경을 초래했던 소정의 계산을 수행했다는 표시를 포함한다. 또한, 장치 드라이버는 CPU와 I/O 장치 사이의 데이터의 처리를 동기화할 수 있다.
예제 2
컴퓨팅 장치가 이곳에서 설명된다. 컴퓨팅 장치는 저장된 명령들을 실행하도록 구성되는 중앙 처리 장치(CPU) 및 명령어를 저장하는 저장 장치를 포함한다. 저장 장치는 프로세서 실행 가능한 코드를 포함하며, 프로세서 실행 가능한 코드는 CPU에 의해 실행됨에 따라, 물리적 메모리 내에 서피스를 할당하도록 구성된다. 컴퓨팅 장치는 또한 그래픽 처리 장치(GPU) 및 GPU 페이지 테이블을 포함한다. 서피스는 CPU 페이지 테이블 내의 복수의 가상 메모리 어드레스에 매핑될 수 있다. 서피스는 또한 GPU 페이지 테이블 내의 복수의 가상 메모리 어드레스에 매핑될 수 있다. 컴퓨팅 장치는 서피스를 피닝할 수 있다.
물리적 메모리는, CPU 메모리로부터 GPU 메모리로 데이터를 복사하지 않고, CPU와 GPU 사이에 공유될 수 있다. 또한, CPU 및 GPU는 컴퓨팅 장치 내의 동일한 다이 상에 배치된다. CPU 및 GPU는 라스트 레벨 캐시(LLC)를 공유할 수 있으며, LLC는 CPU 또는 GPU의 임의의 캐시로부터 데이터를 검색할 수 있다. CPU 및 GPU는 통합 메모리 구조(UMA)를 포함할 수 있다.
프로세서 실행 가능한 코드는 컴퓨팅 장치의 CPU에서 수행되는 애플리케이션으로부터의 입력에 응답하여 서피스를 할당하도록 구성될 수 있다. CPU 페이지 테이블 및 GPU 페이지 테이블 내의 복수의 가상 메모리 어드레스는, 가상 어드레스를 물리적 어드레스로 변환함으로서, 서피스 내의 물리적 위치에 매핑될 수 있다. 드라이버는 프로세서 실행 가능한 코드의 실행을 개시하도록 구성될 수 있다. 또한, 컴퓨팅 장치는 무선 장치 및 디스플레이를 포함할 수 있고, 무선 장치 및 디스플레이는 중앙 처리 장치에 적어도 통신 가능하게 결합될 수 있다.
예제 3
저장된 명령어를 갖는 적어도 하나의 머신 판독 가능한 매체가 이곳에서 설명된다. 컴퓨팅 장치에서 실행될 때, 명령어는 컴퓨팅 장치로 하여금 물리적 메모리 내에 서피스를 생성하도록 한다. 명령어는 또한, 컴퓨팅 장치로 하여금 서피스를 많은 CPU 가상 메모리 어드레스에 매핑하도록 하며, 서피스를 많은 GPU 가상 메모리 어드레스에 매핑하도록 한다. 또한 서피스가 피닝될 수 있다.
물리적 메모리는 CPU 메모리 및 GPU 메모리로부터 데이터를 복사하지 않고, CPU와 GPU 사이에 공유될 수 있다. 또한, 명령어는 CPU 및 GPU의 캐시로부터의 데이터가 라스트 레벨 캐시(LLC)와 일관되게 할 수 있다. 게다가, 명령어는 또한 컴퓨팅 장치로 하여금 컴퓨팅 장치의 CPU에서 구동하는 애플리케이션으로부터의 입력에 응답하여 서피스를 할당하게 할 수 있다.
앞서 언급한 예제들의 세부사항은 하나 이상의 실시예 중 어느 실시예에서도 사용될 수 있음은 물론이다. 예를 들면, 전술한 컴퓨팅 장치의 모든 선택적 특징들은 본 출원에서 설명되는 방법 또는 컴퓨터-판독가능한 매체와 관련하여서도 구현될 수 있다. 뿐만 아니라, 비록 흐름도 및/또는 상태도가 본 출원에서 실시예를 설명하기 위하여 사용되었지만, 본 발명은 이러한 다이어그램이나 대응하는 설명에 한정되지 않는다. 예를 들면, 흐름은 각각의 도시된 박스나 상태를 통해서 또는 본 출원에서 예시되거나 설명되는 것과 동일한 순서대로 이동할 필요는 없다.
본 발명은 본 출원에 나열된 특정한 세부사항에 한정되지 않는다. 실제로, 본 개시의 혜택을 받는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 앞서 말한 설명 및 도면으로부터 생기는 많은 다른 변형이 본 발명의 범위에 속한다는 것을 인식할 것이다. 따라서, 다음의 청구범위는 본 발명의 범위를 정의하는 청구범위에 대한 임의의 변경사항을 포함한다.

Claims (20)

  1. 컴퓨팅 장치로서,
    제 1 프로세서와,
    상기 제 1 프로세서에 결합된 제 2 프로세서 - 상기 제 1 프로세서 및 상기 제 2 프로세서는 동일한 다이 상에 있고, 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나는 그래픽 프로세서임 - 를 포함하며,
    상기 제 1 프로세서는 물리적 메모리 내에 서피스(a surface)를 할당하고, 상기 서피스는 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 직접 공유되고, 데이터를 복사하지 않고 상기 서피스상의 데이터가 자동으로 보이게 되고, 상기 제 1 프로세서는 상기 제 1 프로세서의 어드레스 공간 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하고 상기 제 2 프로세서의 어드레스 공간 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하는
    컴퓨팅 장치.
  2. 제 1 항에 있어서,
    상기 제 1 프로세서는 제 1 가상 메모리 어드레스로부터 데이터를 액세스하고 상기 제 2 프로세서는 제 2 가상 메모리 어드레스로부터 데이터를 액세스하고, 상기 제 1 및 제 2 가상 메모리 어드레스는 상기 서피스에 매핑되는
    컴퓨팅 장치.
  3. 제 1 항에 있어서,
    상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나, 또는 상기 제 1 및 제 2 프로세서에 결합된 적어도 하나의 메모리 관리 장치(a memory management unit : MMU)를 더 포함하고, 상기 MMU는 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나, 또는 상기 제 1 및 제 2 프로세서에 대한 가상 메모리 어드레스 세트로의 물리적 메모리 내에 할당된 데이터에 대한 물리적 메모리 어드레스 세트의 매핑을 관리하는
    컴퓨팅 장치.
  4. 제 3 항에 있어서,
    상기 적어도 하나의 MMU는 상기 제 1 프로세서와 연관된 제 1 페이지 테이블 및 상기 제 2 프로세서와 연관된 제 2 페이지 테이블로의 하나 이상의 매핑을 포함하는
    컴퓨팅 장치.
  5. 제 4 항에 있어서,
    상기 제 1 프로세서는 상기 제 1 페이지 테이블 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하고 상기 제 2 페이지 테이블 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하는
    컴퓨팅 장치.
  6. 컴퓨팅 시스템으로서,
    제 1 프로세서와,
    상기 제 1 프로세서에 결합된 제 2 프로세서 - 상기 제 1 프로세서 및 상기 제 2 프로세서는 동일한 다이 상에 있고, 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나는 그래픽 프로세서임 - 와,
    출력 데이터를 디스플레이하는 디스플레이 장치와,
    명령어를 저장하는 저장 장치를 포함하며,
    상기 명령어는 실행될 때, 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나, 또는 상기 제 1 및 제 2 프로세서로 하여금
    물리적 메모리 내에 서피스를 할당하게 하고 - 상기 서피스가 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 직접 공유되고, 데이터를 복사하지 않고 상기 서피스상의 데이터가 자동으로 보이게 됨 -,
    상기 제 1 프로세서의 어드레스 공간 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하게 하고,
    상기 제 2 프로세서의 어드레스 공간 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하게 하는
    컴퓨팅 시스템.
  7. 제 6 항에 있어서,
    상기 제 1 프로세서는 제 1 가상 메모리 어드레스로부터 데이터를 액세스하고 상기 제 2 프로세서는 제 2 가상 메모리 어드레스로부터 데이터를 액세스하고, 상기 제 1 및 제 2 가상 메모리 어드레스는 상기 서피스에 매핑되는
    컴퓨팅 시스템.
  8. 제 6 항에 있어서,
    상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나, 또는 상기 제 1 및 제 2 프로세서에 결합된 적어도 하나의 메모리 관리 장치(MMU)를 더 포함하고, 상기 MMU는 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나, 또는 상기 제 1 및 제 2 프로세서에 대한 가상 메모리 어드레스 세트로의 물리적 메모리 내에 할당된 데이터에 대한 물리적 메모리 어드레스 세트의 매핑을 관리하는
    컴퓨팅 시스템.
  9. 제 8 항에 있어서,
    상기 적어도 하나의 MMU는 상기 제 1 프로세서와 연관된 제 1 페이지 테이블 및 상기 제 2 프로세서와 연관된 제 2 페이지 테이블을 포함하는 메모리로의 하나 이상의 매핑을 포함하는
    컴퓨팅 시스템.
  10. 제 9 항에 있어서,
    상기 저장 장치상의 상기 명령어는 상기 제 1 페이지 테이블 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하고 상기 제 2 페이지 테이블 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하기 위해 상기 제 1 프로세서 또는 상기 제 2 프로세서를 구성하는
    컴퓨팅 시스템.
  11. 컴퓨팅 장치의 복수의 프로세서들 사이의 메모리 공유 방법으로서,
    상기 컴퓨팅 장치와 연관된 메모리 내에 서피스를 할당하는 단계 - 상기 서피스는 상기 컴퓨팅 장치의 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 직접 공유되고, 상기 제 1 프로세서의 메모리로부터 상기 제 2 프로세서의 메모리로 데이터를 복사하지 않고 상기 서피스상의 데이터가 자동으로 보이게 되고, 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나는 그래픽 프로세서임 - 와,
    상기 제 1 프로세서의 어드레스 공간 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하는 단계와,
    상기 제 2 프로세서의 어드레스 공간 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하는 단계를 포함하는
    메모리 공유 방법.
  12. 제 11 항에 있어서,
    상기 제 1 프로세서와 연관된 제 1 페이지 테이블 및 상기 제 2 프로세서와 연관된 제 2 페이지 테이블을 하나 이상의 메모리 관리 장치(MMU)에 매핑하는 단계를 더 포함하는
    메모리 공유 방법.
  13. 제 12 항에 있어서,
    상기 제 1 페이지 테이블 내의 제 1 가상 메모리 어드레스 세트를 물리적 어드레스로 변환하는 단계와,
    상기 제 2 페이지 테이블 내의 제 2 가상 메모리 어드레스 세트를 물리적 어드레스로 변환하는 단계와,
    상기 제 1 가상 메모리 어드레스 세트 및 상기 제 2 가상 메모리 어드레스 세트를 상기 서피스 내의 물리적 어드레스에 매핑하는 단계를 더 포함하는
    메모리 공유 방법.
  14. 제 13 항에 있어서,
    제 1 가상 메모리 어드레스로부터 상기 제 1 프로세서로 데이터를 액세스하는 단계와,
    제 2 가상 메모리 어드레스로부터 상기 제 2 프로세서로 데이터를 액세스하는 단계를 더 포함하며,
    상기 제 1 가상 메모리 어드레스 및 상기 제 2 가상 메모리 어드레스의 각각은 상기 서피스에 매핑되는
    메모리 공유 방법.
  15. 제 11 항 내지 제 14 항 중 어느 한 항에 기재된 방법을 수행하는 수단을 포함하는 데이터 프로세싱 시스템.
  16. 명령어를 저장하는 비일시적 머신 판독 가능한 매체로서, 상기 명령어는 컴퓨팅 장치의 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 제 11 항 내지 제 14 항 중 어느 한 항에 기재된 방법을 수행하게 하는 머신 판독 가능한 매체.
  17. 컴퓨팅 장치로서,
    서피스를 할당하는 수단 - 상기 서피스는 제 1 프로세서와 제 2 프로세서 사이에서 직접 공유되고, 상기 제 1 프로세서의 메모리로부터 상기 제 2 프로세서의 메모리로 데이터를 복사하지 않고 상기 서피스상의 데이터가 자동으로 보이게 되고, 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나는 그래픽 프로세서임 - 과,
    상기 제 1 프로세서의 어드레스 공간 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하는 수단과,
    상기 제 2 프로세서의 어드레스 공간 내의 복수의 가상 메모리 어드레스에 상기 서피스를 매핑하는 수단을 포함하는
    컴퓨팅 장치.
  18. 제 17 항에 있어서,
    상기 제 1 프로세서와 연관된 제 1 페이지 테이블 및 상기 제 2 프로세서와 연관된 제 2 페이지 테이블을 하나 이상의 메모리 관리 장치(MMU)에 매핑하는 수단을 더 포함하는
    컴퓨팅 장치.
  19. 제 18 항에 있어서,
    상기 제 1 페이지 테이블 내의 제 1 가상 메모리 어드레스 세트를 물리적 어드레스로 변환하는 수단과,
    상기 제 2 페이지 테이블 내의 제 2 가상 메모리 어드레스 세트를 물리적 어드레스로 변환하는 수단과,
    상기 제 1 가상 메모리 어드레스 세트 및 상기 제 2 가상 메모리 어드레스 세트를 상기 서피스 내의 물리적 어드레스에 매핑하는 수단을 더 포함하는
    컴퓨팅 장치.
  20. 제 19 항에 있어서,
    제 1 가상 메모리 어드레스로부터 상기 제 1 프로세서로 데이터를 액세스하는 수단과,
    제 2 가상 메모리 어드레스로부터 상기 제 2 프로세서로 데이터를 액세스하는 수단을 더 포함하며,
    상기 제 1 가상 메모리 어드레스 및 상기 제 2 가상 메모리 어드레스의 각각은 상기 서피스에 매핑되는
    컴퓨팅 장치.
KR1020167008492A 2012-08-17 2013-06-13 통합 메모리 구조를 통한 메모리 공유 KR101721499B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/588,453 US9373182B2 (en) 2012-08-17 2012-08-17 Memory sharing via a unified memory architecture
US13/588,453 2012-08-17
PCT/US2013/045657 WO2014028109A2 (en) 2012-08-17 2013-06-13 Memory sharing via a unified memory architecture

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020157001126A Division KR101741598B1 (ko) 2012-08-17 2013-06-13 통합 메모리 구조를 통한 메모리 공유

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023688A Division KR101964917B1 (ko) 2012-08-17 2013-06-13 통합 메모리 구조를 통한 메모리 공유

Publications (2)

Publication Number Publication Date
KR20160042159A true KR20160042159A (ko) 2016-04-18
KR101721499B1 KR101721499B1 (ko) 2017-03-30

Family

ID=50099759

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020157001126A KR101741598B1 (ko) 2012-08-17 2013-06-13 통합 메모리 구조를 통한 메모리 공유
KR1020167023688A KR101964917B1 (ko) 2012-08-17 2013-06-13 통합 메모리 구조를 통한 메모리 공유
KR1020167008492A KR101721499B1 (ko) 2012-08-17 2013-06-13 통합 메모리 구조를 통한 메모리 공유

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020157001126A KR101741598B1 (ko) 2012-08-17 2013-06-13 통합 메모리 구조를 통한 메모리 공유
KR1020167023688A KR101964917B1 (ko) 2012-08-17 2013-06-13 통합 메모리 구조를 통한 메모리 공유

Country Status (6)

Country Link
US (5) US9373182B2 (ko)
JP (4) JP6136033B2 (ko)
KR (3) KR101741598B1 (ko)
CN (5) CN110069421B (ko)
DE (3) DE112013007658B4 (ko)
WO (1) WO2014028109A2 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US10445243B2 (en) 2013-03-14 2019-10-15 Nvidia Corporation Fault buffer for resolving page faults in unified virtual memory system
US9323684B2 (en) * 2014-03-21 2016-04-26 Intel Corporation Dynamic cache and memory allocation for memory subsystems
CN105302765A (zh) * 2014-07-22 2016-02-03 电信科学技术研究院 一种系统级芯片及其内存访问管理方法
US9779471B2 (en) * 2014-10-01 2017-10-03 Qualcomm Incorporated Transparent pixel format converter
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
DE102016106939B4 (de) 2015-04-17 2024-05-02 Suunto Oy Eingebettetes Rechengerät
US10572288B2 (en) * 2015-06-26 2020-02-25 Intel Corporation Apparatus and method for efficient communication between virtual machines
KR102651425B1 (ko) 2016-06-30 2024-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6756177B2 (ja) * 2016-07-20 2020-09-16 コニカミノルタ株式会社 画像形成装置
CN106909515B (zh) * 2017-02-11 2020-09-18 苏州浪潮智能科技有限公司 面向混合主存的多核共享末级缓存管理方法及装置
US10380039B2 (en) 2017-04-07 2019-08-13 Intel Corporation Apparatus and method for memory management in a graphics processing environment
US10725929B2 (en) * 2017-04-10 2020-07-28 Intel Corporation Graphics memory extended with nonvolatile memory
US10872394B2 (en) * 2017-04-27 2020-12-22 Daegu Gyeongbuk Institute Of Science And Technology Frequent pattern mining method and apparatus
CN107391431B (zh) * 2017-06-29 2020-05-05 北京金石智信科技有限公司 一种多个处理器共享访问存储器的方法、装置及系统
US10489881B2 (en) * 2017-06-30 2019-11-26 H3 Platform Inc. Direct memory access for co-processor memory
US11243790B2 (en) * 2017-09-20 2022-02-08 Huawei Technologies Co., Ltd. Re-playable execution optimized for page sharing in a managed runtime environment
US10474568B2 (en) * 2017-09-20 2019-11-12 Huawei Technologies Co., Ltd. Re-playable execution optimized for page sharing in a managed runtime environment
KR102533241B1 (ko) * 2018-01-25 2023-05-16 삼성전자주식회사 적응적으로 캐시 일관성을 제어하도록 구성된 이종 컴퓨팅 시스템
US11461869B2 (en) * 2018-03-14 2022-10-04 Samsung Electronics Co., Ltd. Slab based memory management for machine learning training
CN108459912B (zh) * 2018-04-10 2021-09-17 郑州云海信息技术有限公司 一种末级缓存管理方法及相关装置
CN110377534B (zh) * 2018-04-13 2023-11-17 华为技术有限公司 数据处理方法及装置
JP7017650B2 (ja) 2018-06-12 2022-02-08 華為技術有限公司 メモリ管理の方法、装置、およびシステム
US11157207B2 (en) 2018-07-31 2021-10-26 SK Hynix Inc. Apparatus and method for engaging plural memory system with each other to store data
US11442628B2 (en) 2018-07-31 2022-09-13 SK Hynix Inc. Apparatus and method for engaging a plurality of memory systems with each other
US11249919B2 (en) 2018-07-31 2022-02-15 SK Hynix Inc. Apparatus and method for managing meta data for engagement of plural memory system to store data
CN109547531B (zh) * 2018-10-19 2021-04-09 华为技术有限公司 数据处理的方法、装置和计算设备
KR20200109973A (ko) * 2019-03-15 2020-09-23 에스케이하이닉스 주식회사 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US10698842B1 (en) 2019-04-10 2020-06-30 Xilinx, Inc. Domain assist processor-peer for coherent acceleration
JP2020177073A (ja) 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
US10853263B1 (en) 2019-07-23 2020-12-01 Ati Technologies Ulc Unified kernel virtual address space for heterogeneous computing
US11385941B2 (en) * 2019-07-31 2022-07-12 EMC IP Holding Company, LLC System and method for address space slicing with strong CPU core affinity
US11321068B2 (en) * 2019-09-05 2022-05-03 International Business Machines Corporation Utilizing memory coherency to improve bandwidth performance
US11507527B2 (en) 2019-09-27 2022-11-22 Advanced Micro Devices, Inc. Active bridge chiplet with integrated cache
CN112463714B (zh) * 2020-11-30 2022-12-16 成都海光集成电路设计有限公司 远程直接内存访问方法、异构计算系统及电子设备
CN113190346A (zh) * 2021-03-30 2021-07-30 联想(北京)有限公司 一种内存管理方法、装置及电子设备
CN114691385A (zh) * 2021-12-10 2022-07-01 全球能源互联网研究院有限公司 一种电力异构计算系统
CN115454358B (zh) * 2022-11-09 2023-03-24 摩尔线程智能科技(北京)有限责任公司 数据的存储控制方法及其装置、图像处理系统
CN116185910B (zh) * 2023-04-25 2023-07-11 北京壁仞科技开发有限公司 访问设备内存、管理设备内存的方法、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120037971A (ko) * 2009-07-10 2012-04-20 애플 인크. 블록 기반 불투명 캐시
KR20120060230A (ko) * 2009-09-10 2012-06-11 어드밴스드 마이크로 디바이시즈, 인코포레이티드 메모리 요청들을 처리하기 위한 시스템들 및 방법들

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5421433A (en) 1977-07-18 1979-02-17 Murata Manufacturing Co Conductive silver coating
JPH01291343A (ja) * 1988-05-18 1989-11-22 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置
GB2283596B (en) * 1993-11-01 1998-07-01 Ericsson Ge Mobile Communicat Multiprocessor data memory sharing
JPH08328994A (ja) * 1995-05-30 1996-12-13 Toshiba Corp 情報処理装置
US6104417A (en) 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
FR2806170B1 (fr) 2000-03-07 2003-06-20 Michel Paramythioti Relais optique correcteur d'aberrations pour systeme optique , notamment telescope a miroirs
US6891543B2 (en) 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
JP4446373B2 (ja) * 2003-03-19 2010-04-07 パナソニック株式会社 プロセッサ、データ共有装置
US6981072B2 (en) * 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
US7355601B2 (en) * 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US7441087B2 (en) * 2004-08-17 2008-10-21 Nvidia Corporation System, apparatus and method for issuing predictions from an inventory to access a memory
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
KR100633420B1 (ko) 2004-11-12 2006-10-16 (주)캠퍼스라인 책걸상의 높낮이 조절장치
US7490215B2 (en) 2004-12-22 2009-02-10 Intel Corporation Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7487271B2 (en) * 2005-09-22 2009-02-03 Motorola, Inc. Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system
CN101356510B (zh) * 2005-11-15 2013-04-03 太阳微系统有限公司 当处理器处于低功率状态时可为后台dma装置提供数据的小型高功效高速缓冲存储器
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
JP4208895B2 (ja) * 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US7623134B1 (en) * 2006-06-15 2009-11-24 Nvidia Corporation System and method for hardware-based GPU paging to system memory
US7636800B2 (en) 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8860741B1 (en) * 2006-12-08 2014-10-14 Nvidia Corporation Graphics processor with memory management unit and cache coherent link
US8274520B2 (en) * 2007-06-08 2012-09-25 Apple Inc. Facilitating caching in an image-processing system
US7996628B2 (en) * 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8209493B2 (en) * 2008-03-26 2012-06-26 Intel Corporation Systems and methods for scheduling memory requests during memory throttling
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
CN102216941B (zh) * 2008-08-19 2015-08-12 数字标记公司 用于内容处理的方法和系统
GB2462860B (en) 2008-08-22 2012-05-16 Advanced Risc Mach Ltd Apparatus and method for communicating between a central processing unit and a graphics processing unit
US8531471B2 (en) * 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8412885B2 (en) 2009-11-12 2013-04-02 Intel Corporation Searching a shared cache by using search hints and masked ways
US8868848B2 (en) * 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US8719543B2 (en) 2009-12-29 2014-05-06 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US9128849B2 (en) * 2010-04-13 2015-09-08 Apple Inc. Coherent memory scheme for heterogeneous processors
US8650349B2 (en) * 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US8392628B2 (en) * 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
JP2012037971A (ja) 2010-08-04 2012-02-23 Tdk Corp メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US9189297B2 (en) * 2010-12-14 2015-11-17 Hewlett-Packard Development Company, L.P. Managing shared memory
US20120159090A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Scalable multimedia computer system architecture with qos guarantees
US8806503B2 (en) * 2011-01-24 2014-08-12 Nec Laboratories America, Inc. Method and system for memory aware runtime to support multitenancy in heterogeneous clusters
US9471532B2 (en) * 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
US9430391B2 (en) * 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
US9009419B2 (en) * 2012-07-31 2015-04-14 Advanced Micro Devices, Inc. Shared memory space in a unified memory model
US8938602B2 (en) * 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120037971A (ko) * 2009-07-10 2012-04-20 애플 인크. 블록 기반 불투명 캐시
KR20120060230A (ko) * 2009-09-10 2012-06-11 어드밴스드 마이크로 디바이시즈, 인코포레이티드 메모리 요청들을 처리하기 위한 시스템들 및 방법들

Also Published As

Publication number Publication date
KR101964917B1 (ko) 2019-04-02
JP2016146201A (ja) 2016-08-12
CN110069421A (zh) 2019-07-30
US9373182B2 (en) 2016-06-21
DE112013007658B4 (de) 2023-11-09
KR20150032556A (ko) 2015-03-26
KR101741598B1 (ko) 2017-05-30
JP2017021837A (ja) 2017-01-26
DE112013007741B4 (de) 2023-11-09
CN111522754A (zh) 2020-08-11
US20210286733A1 (en) 2021-09-16
WO2014028109A3 (en) 2014-06-26
US9514559B2 (en) 2016-12-06
CN106021132B (zh) 2020-02-21
DE112013004078T5 (de) 2015-06-25
US20160314077A1 (en) 2016-10-27
KR20160105926A (ko) 2016-09-07
CN111522754B (zh) 2023-12-12
WO2014028109A2 (en) 2014-02-20
US11531623B2 (en) 2022-12-20
CN106021132A (zh) 2016-10-12
JP6330169B2 (ja) 2018-05-30
CN104471540B (zh) 2018-07-10
CN106294214A (zh) 2017-01-04
CN106294214B (zh) 2021-02-09
JP2015524979A (ja) 2015-08-27
US20140049548A1 (en) 2014-02-20
JP6391077B2 (ja) 2018-09-19
US10929304B2 (en) 2021-02-23
DE112013004078B4 (de) 2023-11-09
CN110069421B (zh) 2023-03-14
JP2017208124A (ja) 2017-11-24
JP6478119B2 (ja) 2019-03-06
US20190114267A1 (en) 2019-04-18
KR101721499B1 (ko) 2017-03-30
US10198361B2 (en) 2019-02-05
US20160203580A1 (en) 2016-07-14
CN104471540A (zh) 2015-03-25
JP6136033B2 (ja) 2017-05-31

Similar Documents

Publication Publication Date Title
US11531623B2 (en) Memory sharing via a unified memory architecture
JP6746645B2 (ja) 共有仮想メモリ
US20170004598A1 (en) Memory mapping for a graphics processing unit

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant