KR101240092B1 - 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 - Google Patents
컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 Download PDFInfo
- Publication number
- KR101240092B1 KR101240092B1 KR1020100131675A KR20100131675A KR101240092B1 KR 101240092 B1 KR101240092 B1 KR 101240092B1 KR 1020100131675 A KR1020100131675 A KR 1020100131675A KR 20100131675 A KR20100131675 A KR 20100131675A KR 101240092 B1 KR101240092 B1 KR 101240092B1
- Authority
- KR
- South Korea
- Prior art keywords
- version
- processor
- memory
- shared
- page
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Abstract
컴퓨터 시스템은 컴퓨터 플랫폼 및 입력-출력 장치를 포함할 수 있다. 컴퓨터 플랫폼은 중앙 처리 장치(CPU) 및 그래픽 처리 장치(GPU)를 포함하는 복수의 이종 프로세서 및 적어도 하나의 이종 프로세서의 물리적 전용 메모리 공간 또는 이종 프로세서에 의해 공유되는 물리적 공유 메모리에 의해 지원되는 공유된 가상 메모리를 포함할 수 있다. CPU(생산자)는 공유된 멀티 버전 데이터를 생성할 수 있고 그 공유된 멀티 버전 데이터를 물리적 전용 메모리 공간 또는 물리적 공유 메모리에 저장할 수 있다. GPU(소비자)는 공유된 멀티 버전 데이터를 획득하거나 액세스할 수 있다.
Description
컴퓨터 시스템은 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU) 및 대칭 및 비대칭 프로세서와 같은 이종 프로세서를 지원하는 플랫폼을 포함할 수 있다. 단일 버전의 데이터는 CPU-GPU 플랫폼의 제 1 측(예컨대, CPU)과 연관된 제 1 메모리에 존재할 수 있다. 제 2 측(GPU)은 CPU-GPU 플랫폼의 제 1 측(CPU 측)과 연관된 제 1 메모리에 존재하는 단일 버전 데이터를 호출하도록 인에이블링될 수 있다. 또한, 제 1 측은 제 2 측(GPU 측) 상의 제 2 메모리에 존재하는 단일 버전 데이터를 호출하도록 인에이블링되지 않을 수도 있다. 단일 버전 데이터가 상이한 주소 공간에 저장될 수 있으므로, 기존의 통신 메커니즘은 단일 버전 데이터를 호출하도록 이종 프로세서들(CPU 및 GPU) 사이에 단방향 통신만을 허용할 수 있다.
본 명세서에 설명된 발명은 첨부 도면에 예로써 및 제한하지 않는 것으로 도시된다. 간단하고 명확한 도시를 위해, 도면에 도시된 요소가 반드시 실제 크기대로 도시되는 것은 아니다. 예컨대, 몇몇 요소의 치수는 명확성을 위해 다른 요소에 비해 과장될 수 있다. 또한, 적절하게 고려되는 경우에, 참조 라벨은 대응하거나 유사한 요소를 나타내도록 도면 전체에 걸쳐 반복된다.
도 1은 일 실시예에 따라 CPU 및 GPU와 같은 이종 프로세서들 사이의 가상 메모리 기반 멀티 버전 데이터 공유를 지원할 수 있는 플랫폼(100)을 도시한다.
도 2는 일 실시예에 따라 플랫폼(100)에 의해 수행되는 동작을 도시하는 순서도이다.
도 3은 일 실시예에 따라 CPU 및 GPU와 같은 이종 프로세서들 사이의 가상 메모리 기반 멀티 버전 데이터 공유를 지원하기 위해 플랫폼(100)의 생산자 및 소비자에 의해 수행되는 동작을 도시하는 순서도이다.
도 4는 일 실시예에 따라 공유된 가상 메모리 공간 내의 갱신된 메모리 페이지를 추적하도록 생산자에 의해 수행된 동작을 도시하는 순서도이다.
도 5는 제 1 실시예에 따라 소비자에 의해 획득되는 데 이용가능한 멀티 버전 데이터를 제공하도록 플랫폼(100)의 생산자에 의해 수행된 'diff' 동작을 도시하는 라인도이다.
도 6은 일 실시예에 따라 플랫폼의 이종 프로세서들 사이의 가상 메모리 기반 멀티 버전 데이터의 공유를 지원할 수 있는 플랫폼을 포함할 수 있는 컴퓨터 시스템을 도시한다.
도 2는 일 실시예에 따라 플랫폼(100)에 의해 수행되는 동작을 도시하는 순서도이다.
도 3은 일 실시예에 따라 CPU 및 GPU와 같은 이종 프로세서들 사이의 가상 메모리 기반 멀티 버전 데이터 공유를 지원하기 위해 플랫폼(100)의 생산자 및 소비자에 의해 수행되는 동작을 도시하는 순서도이다.
도 4는 일 실시예에 따라 공유된 가상 메모리 공간 내의 갱신된 메모리 페이지를 추적하도록 생산자에 의해 수행된 동작을 도시하는 순서도이다.
도 5는 제 1 실시예에 따라 소비자에 의해 획득되는 데 이용가능한 멀티 버전 데이터를 제공하도록 플랫폼(100)의 생산자에 의해 수행된 'diff' 동작을 도시하는 라인도이다.
도 6은 일 실시예에 따라 플랫폼의 이종 프로세서들 사이의 가상 메모리 기반 멀티 버전 데이터의 공유를 지원할 수 있는 플랫폼을 포함할 수 있는 컴퓨터 시스템을 도시한다.
후속 설명은 컴퓨터 플랫폼의 이종 프로세서들(예컨대, CPU 및 GPU) 사이의 가상 메모리 기반 멀티 버전 데이터를 공유하는 기술을 설명한다. 후속 설명에서, 로직 구현, 리소스 분할 또는 공유 또는 복제 구현, 시스템 구성요소의 유형 및 상호관계 및 로직 분할 또는 통합 선택과 같은 다수의 특정 세부사항이 본 발명의 보다 완전한 이해를 제공하도록 설명된다. 그러나, 당업자는 본 발명이 그러한 특정 세부사항 없이 실시될 수 있음을 알 것이다. 다른 경우에, 제어 구조, 게이트 레벨 회로 및 완전 소프트웨어 인스트럭션 시퀀스는 본 발명의 불명료하게 하지 않도록 상세히 도시되지 않는다. 당업자는 포함된 설명을 사용하여 과도한 실험 없이도 적합한 기능을 구현할 수 있을 것이다.
명세서에서 "일 실시예", "실시예", "예시적인 실시예"는 설명된 실시예가 특정 특징, 구조 또는 특성을 포함할 수 있음을 나타내지만, 모든 실시예가 반드시 특정 특징, 구조 또는 특성을 포함할 수 있는 것은 아니다. 또한, 그러한 구가 반드시 동일한 실시예를 지칭하는 것은 아니다. 또한, 특정 특징, 구조 또는 특성이 실시예와 관련하여 설명될 때, 명백히 설명되든 아니든 다른 실시예와 관련하여 그러한 특정 특징, 구조 또는 특성에 영향을 주도록 당업자 내에 존재하는 것으로 제출된다.
본 발명의 실시예는 하드웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 본 발명의 실시예는 또한 하나 이상의 프로세서에 의해 판독되고 실행될 수 있는, 기계 판독가능 매체 상에 저장된 인스트럭션으로서 구현될 수 있다. 기계 판독가능 저장 매체는 기계(예컨대, 컴퓨팅 장치)에 의해 판독가능한 형태로 정보를 저장하거나 송신하는 임의의 메커니즘을 포함할 수 있다.
예컨대, 기계 판독가능 저장 매체는 ROM, RAM, 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 장치, 신호의 전기, 광학 형태를 포함할 수 있다. 또한, 펌웨어, 소프트웨어, 루틴 및 인스트럭션은 특정 동작을 수행하는 것으로 본 명세서에 설명될 수 있다. 그러나, 그러한 설명이 단지 편의를 위한 것이고, 그러한 동작이 사실상 컴퓨팅 장치, 프로세서, 제어기 및 펌웨어, 소프트웨어, 루틴 및 인스트럭션을 실행하는 다른 장치로부터 발생함을 알아야 한다.
일 실시예에서, 컴퓨터 플랫폼은 이종 프로세서들(예컨대, CPU 및 GPU) 사이의 가상 메모리 기반 멀티 버전 데이터를 공유하는 하나 이상의 기술을 지원할 수 있다. 일 실시예에서, 공유된 메모리 시맨틱(semantic)은 CPU 또는 GPU에 의해 "논리적으로 커밋"을 공유된 메모리에 저장하는 릴리스 동작 및 CPU 또는 GPU가 공유된 메모리와 "논리적으로 동기화하게 할 수 있는 획득 동작과 같은 프리미티브(primitive)를 제공할 수 있다.
일 실시예에서, 릴리스 동작은 공유된 메모리에서 갱신(또는 변경)될 수 있는 페이지를 추적할 수 있다. 일 실시예에서, 페이지의 이전 버전 및 현재 버전의 'diff' 동작이 수행될 수 있고, 연관된 새로운 버전 번호가 개별 메모리 영역에 저장될 수 있다. 일 실시예에서, 갱신된(또는 변경되거나 더티(dirty)) 페이지의 추적을 인에이블링하도록, 공유된 가상 메모리 페이지는 페이지가 기록되는 동안 생성되는 처리기로의 트래핑을 또한 야기할 수 있는 릴리스 상의 '기록 보호' 모드로 설정될 수 있다. 일 실시예에서, 처리기는 페이지의 백업 카피(트윈(twin) 페이지)를 생성하는 데 사용될 수 있다. 일 실시예에서, 보조 저장장치는 페이지가 갱신되거나 더티함을 나타내도록 위치(또는 특정 비트)를 표시하는 데 사용될 수 있다. 따라서, 생산자(예컨대, CPU) 상에 릴리스되고 소비자(예컨대, GPU) 상에서 획득된 데이터 구조의 경우에, 각각의 버전마다 변경된 바이트만이 전송될 수 있다. 소비자가 특정 버전 번호에서 획득 동작을 수행하는 동안, 저장된 diff는 소비자의 전용 주소 공간으로 병합될 수 있다. 일 실시예에서, 공유된 가상 메모리는 이종 프로세서의 물리적 전용 메모리 공간 또는 이종 프로세서에 의해 공유된 물리적 공유 메모리에 의해 지원될 수 있다.
CPU 및 GPU와 같은 이종 프로세서들 사이에 공유된 멀티 버전 데이터를 제공하는 플랫폼(100)의 실시예가 도 1에 도시된다. 일 실시예에서, 플랫폼(100)은 중앙 처리 장치(CPU)(110), CPU(110)와 연관된 운영 시스템(OS)(112), CPU 전용 공간(115), CPU 컴파일러(118), 공유된 가상 메모리(또는 멀티 버전 공유 메모리)(130), 그래픽 처리 장치(GPU)(180), GPU(180)와 연관된 운영 시스템(OS)(182), GPU 전용 공간(185) 및 GPU 컴파일러(188)를 포함할 수 있다. 일 실시예에서, OS(112)는 CPU(110)와 CPU 전용 공간(115)의 리소스 및 GPU(180)와 GPU 전용 공간(185)의 리소스를 관리할 수 있다. 일 실시예에서, 공유된 가상 메모리(130)를 지원하기 위해, CPU 전용 공간(115) 및 GPU 전용 공간(185)은 멀티 버전 데이터의 카피를 포함할 수 있다. 일 실시예에서, 메모리 일관성을 유지하기 위해, 객체(131)와 같은 메타 데이터가 CPU 전용 공간(115)과 GPU 전용 공간(185)에 저장된 카피를 동기화하는 데 사용될 수 있다. 다른 실시예에서, 멀티 버전 데이터는 공유된 메모리(650)(도 6, 후술됨)와 같은 물리적 공유 메모리에 저장될 수 있다.
일 실시예에서, CPU 컴파일러(118) 및 GPU 컴파일러(188)는 각각 CPU(110) 및 GPU(180)에 연결되거나 다른 플랫폼 또는 컴퓨터 시스템 상에 원격으로 제공될 수 있다. CPU(110)와 연관된 컴파일러(들)(118)는 CPU(110)에 대한 컴파일 코드를 생성할 수 있고, GPU(180)와 연관된 컴파일러(들)(188)는 GPU(180)에 대한 컴파일 코드를 생성할 수 있다.
일 실시예에서, CPU 컴파일러(118) 및 GPU 컴파일러(188)는 객체 지향 언어와 같은 하이 레벨 언어로 사용자에 의해 제공된 객체의 하나 이상의 구성요소 함수를 컴파일함으로써 컴파일 코드를 생성할 수 있다. 일 실시예에서, 컴파일러(118, 188)는 생산자에 의해 공유된 가상 메모리(130)에 의해 지원되고 소비자에 의해 공유된 가상 메모리(130)로부터 획득되도록 공유된 멀티 버전 데이터(132)를 포함할 수 있는 객체(131)를 발생시킬 수 있다. 일 실시예에서, 공유된 가상 메모리(130)에 의해 지원되는 객체(131)는 공유된 멀티 버전 데이터(132) 및 가상 함수 VF 133-A 내지 133-K 및 비 가상 함수 NVF 136-A 내지 136-L과 같은 하나 이상의 구성요소 함수를 포함할 수 있다. 일 실시예에서, CPU(110)와 GPU(180) 사이의 통신은 공유된 객체(131)의 VF(133) 및 NVF(136)와 같은 구성요소 함수에 의해 제공될 수 있다.
공유된 가상 메모리 기반 멀티 버전 데이터를 지원하는 플랫폼(100)의 동작의 실시예가 도 2의 순서도에 도시된다. 블록(210)에서, CPU(110)(생산자)는 공유된 가상 메모리(130)에서 지원될 수 있는 공유된 멀티 버전 데이터(132)와 같은 멀티 버전 데이터를 생성할 수 있다. 일 실시예에서, CPU(110)는 공유된 멀티 버전 데이터(132)를 생성하는 데 VersionDataCommit 프로세스를 사용할 수 있다. 일 실시예에서, CPU(110)는 새로운 버전 번호를 계산할 수 있다. 일 실시예에서, 새로운 버전 번호는 현재의 버전 번호(CuVerNo)를 증분함으로써 생성될 수 있다. 일 실시예에서, 새로운 버전 번호는 (CuVerNo+1)과 같을 수 있다.
일 실시예에서, 현재 버전 번호에 의해 식별된 현재의 페이지가 갱신되면, CPU(110)는 이전 버전 페이지와 현재 버전 페이지 사이의 차이 콘텐츠(diff)를 결정할 수 있다. 일 실시예에서, CPU(110)는 차이 콘텐츠 및 새로운 버전 번호를 포함할 수 있는 diff 노드(또는 갱신된 버전 노드)를 구성할 수 있다. 일 실시예에서, CPU(110)는 diff 노드를 diff 리스트에 삽입할 수 있다. 일 실시예에서, 공유된 멀티 버전 데이터(132)는 이전 버전 페이지, 현재 버전 페이지 및 갱신된 버전 메모리 페이지를 포함하는 페이지들을 포함할 수 있다. 일 실시예에서, 현재 버전 페이지에 대한 갱신은 갱신된 버전 메모리 페이지를 생성할 수 있다. 일 실시예에서, 공유된 멀티 버전 데이터(132)는 생산자(CPU(110))에 의해 생성될 수 있고 소비자(CPU(180))에 의해 액세스될 수 있다.
블록(250)에서, 소비자(GPU(180))는 공유된 가상 메모리(130)에 의해 지원되는 공유된 멀티 버전 데이터(132)를 획득하도록 인에이블링될 수 있다. 일 실시예에서, GPU(180)는 공유된 가상 메모리(130)에 의해 지원되는 공유된 멀티 버전 데이터(132)를 획득하거나 액세스하는 데 VersionDataAcquire 프로세스를 사용할 수 있다. 일 실시예에서, GPU(180)는 현재 버전 페이지에 대한 diff 리스트를 불러올 수 있고 이전 버전 페이지 및 현재 버전 페이지의 콘텐츠를 병합할 수 있다. 일 실시예에서, 병합 동작은 시작 페이지로부터 시작될 수 있고, 시작 페이지의 버전으로부터 버전 번호까지의 diff 리스트의 모든 노드는 버전데이터획득 동작이 지정하는 시작 페이지로 병합될 수 있다. 일 실시예에서, 시작 페이지를 포함하는 이전 버전 페이지로부터 현재 버전 페이지로 병합되는 콘텐츠는 CPU(180)에 의해 액세스되거나 획득될 수 있는 갱신된 버전 메모리 페이지로 병합될 수 있다.
공유된 메모리에 저장된 멀티 버전 데이터의 공유를 지원하는 기능을 수행하는 생산자 및 소비자의 실시예가 도 3의 순서도에 도시된다. 블록(310)에서, CPU(110)(공유된 멀티 버전 데이터 객체(131)의 생산자)는 공유된 가상 메모리(130)에서 갱신된(또는 변경된) 버전 메모리 페이지를 추적할 수 있다.
블록(320)에서, CPU(110)는 갱신된 버전 메모리 페이지를 생성하도록 이전 버전 페이지 및 현재 버전 페이지에 대해 diff 동작을 수행할 수 있다. 일 실시예에서, CPU(110)는 이전 버전 페이지 PVP(137)(버전 번호 = V1) 및 현재 버전 페이지 CBP(138)(버전 번호 = V2)에 대해 'diff' 동작을 수행함으로써 갱신된 버전 페이지 UVP(139)(버전 번호 = V3)를 생성할 수 있다. 일 실시예에서, CPU(110)는 UVP(139)와 연관된 새로운 버전 번호(V3)를 제공할 수 있다.
블록(340)에서, CPU(110)는 diff 동작의 결과(즉, UVP(139) 및 새로운 버전 번호 V3)를 공유된(또는 가상) 메모리 영역에 논리적으로 저장할 수 있으며, 이는 예컨대, CPU 전용 공간(115)에 물리적으로 저장될 수 있다. 블록(360)에서, CPU(110)는 각각의 버전의 변경된 바이트가 GPU(180)에 의해 획득되게 할 수 있다. 일 실시예에서, CPU(110)는 GPU(180)가 전술한 VersionDataAcquire 프로세스를 사용하여 변경된 바이트를 획득하도록 변경된 바이트 및 연관된 버전 번호를 릴리스할 수 있다.
공유된 가상 메모리(130) 내의 갱신된(또는 변경된) 페이지를 추적하는 생산자의 실시예는 도 4의 순서도에 도시된다. 블록(410)에서, CPU(110)(생산자)는 릴리스 상의 '기록-보호' 모드에서 갱신된 버전 메모리 페이지를 공유할 수 있다. 일 실시예에서, '기록 보호' 모드에서 갱신된 버전 메모리 페이지를 공유한 결과로서 갱신된 버전 메모리 페이지가 기록될 수 있는 동안 처리기로의 트래핑이 생성될 수 있다.
블록(450)에서, CPU(110)는 처리기 내의 갱신된 버전 메모리 페이지의 백업 카피를 생성할 수 있다. 일 실시예에서, UVP(139)와 같은 갱신된(또는 변경되거나 더티) 페이지의 추적을 인에이블링하기 위해, CPU(110)는 UVP(139)를 '기록 보호'모드로 설정할 수 있다. 일 실시예에서, CPU(110)는 UVP(139)의 백업 카피(트윈 페이지)를 생성하도록 처리기를 사용할 수 있다.
블록(480)에서, CPU(110)는 갱신된 버전 메모리 페이지가 변경(또는 더티)될 수 있음을 나타내도록 보조 저장장치에 표시할 수 있다. 일 실시예에서, 보조 저장장치에 표시하는 것은 CPU(110)가 갱신된 버전 메모리 페이지가 더티임을 기억할 수 있게 할 수 있다. 일 실시예에서, CPU(110)는 UVP(139)가 갱신되거나 변경되거나 더티 페이지임을 나타내도록 PCI 개구 영역과 같은 보조 저장장치에 위치(또는 특정 비트)를 표시할 수 있다.
릴리스 동작의 적어도 일부로서 diff 동작을 수행하는 CPU(110) 및 획득 동작을 수행하는 GPU(180)의 실시예는 도 5에 도시된다. 일 실시예에서, CPU(110)는 공유된 가상 메모리(130)로 갱신된 버전 메모리 페이지를 논리적으로 커밋하도록 VersionDataCommit() 함수(릴리스 동작의 일부)를 수행할 수 있다. 일 실시예에서, 소비자(GPU(180))는 V2와 같은 버전 번호를 가진 페이지 'i'(540)의 데이터에 액세스하거나 획득할 수 있다. 일 실시예에서, GetDataRelease() 함수를 수행하는 동안, CPU(110)는 페이지 'i'(540) 및 페이지 'i'의 갱신 버전일 수 있는 트윈 페이지(550) 상의 차이 생성기(570)에 의해 표시된 diff 동작을 수행할 수 있다. 일 실시예에서, 페이지 'i'(540)는 현재 버전 페이지의 변경되지 않은 버전을 나타낼 수 있고, 트윈 페이지(550)는 페이지 'i'(540)의 갱신된(또는 변경된) 버전을 나타낼 수 있다.
일 실시예에서, 변경된 바이트만을 포함할 수 있는 차이 생성기(570)에 의해 생성된 결과는 Diff-3 필드(581)에 저장될 수 있다. 일 실시예에서, diff 필드(581)는 GPU(180)가 버전-2(V2)까지 멀티 버전 데이터를 사용하여 생성된 버전-3 데이터를 획득하므로 Diff-3을 포함할 수 있다. 일 실시예에서, V3과 같은 새로운 버전 번호는 버전 식별자 필드(582)에 저장될 수 있다. 일 실시예에서, Diff-3 필드(581) 및 버전 식별자 필드(582) 내의 연관된 새로운 버전 번호(=V3)는 diff 리스트에 삽입될 수 있다.
일 실시예에서, VersionDataAcquire() 프로세스를 수행하는 동안, GPU(180)는 버전 V2까지 페이지 'i'(540)에 대한 diff 리스트를 불러올 수 있다. 일 실시예에서, 버전 V2까지의 페이지 'i'(540)에 대한 diff 리스트(520)는 Diff-1 필드(511), V1과 같은 연관된 버전 번호 필드(512), Diff-2 필드(521) 및 V2와 같은 연관된 버전 번호 필드(522)를 포함할 수 있다. 일 시릿예에서, GPU(180)는 V1과 같은 버전 번호 필드(502)와 연관된 시작 페이지(501)와 diff 리스트(520)를 병합할 수 있다. 일 실시예에서, 병합 동작은 병합 생성기(530)에 의해 표현될 수 있다. 일 실시예에서, 병합 생성기(530)의 최종 출력은 페이지 'i'(540)의 콘텐츠와 병합될 수 있다.
일 실시예에서, 공유된 멀티 버전 데이터 구조는 게임 애플리케이션과 같은 다수의 프로그래밍 필드에서 사용될 수 있다. 일 실시예에서, 공유된 멀티 버전 데이터에 대한 갱신은 코히런스 트래픽을 발생시키지 않으면서 데이터의 새로운 버전을 논리적으로 생성될 수 있다. 코히런스 트래픽을 최적화하는 것 외에, 공유된 멀티 버전 데이터를 사용하는 것은 CPU 및 GPU 측의 상이한 물리적 주소 공간에서 공유된 메모리로의 포인터가 중요하므로 데이터의 명백한 마샬링 및 언마샬링과 같은 시간 소모적 동작을 방지할 수 있다.
또한, 그러한 방안은 CPU(110)와 GPU(180) 사이의 파이프라이닝(pipelining) 데이터를 간단하게 할 수 있다. 일 실시예에서, 사용자는 보통 버그(bug)의 소스인 파이프라인을 유지하고 구현하지 못할 수도 있다. 일 실시예에서, CPU-GPU 플랫폼을 포함하는 공유된 가상 메모리 시스템은 프로그램 능력에 대한 지원을 제공할 수 있고, 멀티 버전화 구조를 공유된 메모리 시스템으로 확장할 수 있다. 일 실시예에서, 후술되는 공유된 멀티 버전 데이터 기술은 이산 및 집적 GPU 구성 양자 모두에서 사용될 수 있으므로, 상이한 GPU 구성에 걸쳐 프로그래밍을 통합시킨다.
공유된 가상 메모리에 저장된 멀티 버전 데이터의 공유를 지원하는 이종 프로세서를 포함하는 컴퓨터 시스템(600)의 실시예는 도 6에 도시된다. 도 6을 참조하면, 컴퓨터 시스템(600)은 단일 인스트럭션 복수 데이터(SIMD) 프로세서 및 그래픽 프로세서 유닛(GPU)(605)을 포함하는 범용 프로세서(또는 CPU)(602)를 포함할 수 있다. 일 실시예에서, CPU(602)는 기계 판독가능 저장 매체(25) 내의 강화 동작을 제공하도록, 다양한 다른 작업 또는 일련의 인스트럭션 저장을 수행하는 것 외에 강화 동작을 수행할 수 있다. 그러나, 일련의 인스트럭션은 또한 CPU 전용 메모리(620) 또는 다른 적합한 저장 매체에 저장될 수 있다. 일 실시예에서, CPU(602)는 CPU 레거시 컴파일러(603) 및 CPU 링커/로더(linker/loader)(604)와 연관될 수 있다. 일 실시예에서, GPU(605)는 GPU 사유 컴파일러(606) 및 GPU 링커/로더(607)와 연관될 수 있다.
개별 그래픽 프로세서 유닛(GPU)(605)이 도 6에 도시되지만, 몇몇 실시예에서, 다른 예로써, 프로세서(602)는 강화 동작을 수행하는 데 사용될 수 있다. 컴퓨터 시스템(600)을 작동시키는 프로세서(602)는 로직(630)에 연결된 하나 이상의 프로세서 코어일 수 있다. 로직(630)은 컴퓨터 시스템(600)에 대한 인터페이스를 제공할 수 있는 하나 이상의 I/O 장치(660)에 연결될 수 있다. 예컨대, 로직(630)은 일 실시예에서 칩셋 로직일 수 있다. 로직(630)은 광학, 자기 또는 반도체 저장장치를 포함하는 임의의 종류의 저장장치일 수 있는 메모리(620)에 연결될 수 있다. 그래픽 프로세서 장치(605)는 프레임 버퍼를 통해 디스플레이(640)에 연결된다.
일 실시예에서 CPU(602)(여기서, 생산자) 및 GPU(605)(여기서, 소비자)는 공유된 메모리(650)에 저장된 멀티 버전 데이터 구조의 공유를 지원할 수 있다. 일 실시예에서, 전술한 바와 같이, CPU(602)는 공유된 멀티 버전 데이터를 생성하고 그 데이터를 공유된 메모리(650)에 저장하도록 VersionDataRelease()와 같은 프로세스 또는 함수를 지원할 수 있다. 다른 실시예에서, 공유된 멀티 버전 데이터는 전용 CPU 메모리(620) 및/또는 전용 GPU 메모리(630)에도 저장될 수 있다. 일 실시예에서, 전술한 바와 같이, GPU(605)(소비자)는 공유된 멀티 버전 데이터를 획득하기 위해 VersionDataAcquire()과 같은 프로세스 또는 함수를 지원할 수 있다.
본 명세서에 설명된 그래픽 처리 기술은 다양한 하드웨어 아키텍처에서 구현될 수 있다. 예컨대, 그래픽 기능은 칩셋 내에 통합될 수 있다. 이와 달리, 이산 그래픽 프로세서가 사용될 수 있다. 또 다른 실시예로서, 그래픽 기능은 멀티 코어 프로세서를 포함하는 범용 프로세서에 의해 또는 기계 판독가능 매체에 저장된 소프트웨어 인스트럭션 세트로서 구현될 수 있다.
110 : 중앙 처리 장치 (CPU) 112 : 운영 시스템 OS
115: CPU 전용 공간 118 : CPU 컴파일러
115: CPU 전용 공간 118 : CPU 컴파일러
Claims (20)
- 컴퓨터 플랫폼에서의 방법에 있어서,
제 1 프로세서를 사용하여 멀티 버전 공유 가상 메모리(multi-version shared virtual memory)에서 공유된 멀티 버전 데이터(shared multi-version data)를 생성하는 단계와,
상기 공유된 멀티 버전 데이터를 상기 제 1 프로세서의 물리적 전용 메모리 공간(physical private memory space)에 저장하는 단계와,
제 2 프로세서를 사용하여 상기 공유된 멀티 버전 데이터를 획득하는 단계를 포함하되,
상기 컴퓨터 플랫폼은 상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 복수의 이종 프로세서를 포함하는
방법.
- 제 1 항에 있어서,
상기 공유된 멀티 버전 데이터를 생성하는 단계는 갱신된 버전 메모리 페이지를 생성하는 단계를 포함하되,
상기 갱신된 버전 메모리 페이지는 현재의 버전 페이지 및 이전 버전 페이지를 사용하여 생성된 차이(difference) 콘텐츠를 포함하는
방법. - 제 2 항에 있어서,
상기 공유된 멀티 버전 데이터를 생성하는 단계는 상기 제 1 프로세서의 물리적 메모리 공간 내의 개별 메모리 위치에 상기 차이 콘텐츠를 저장하는 단계를 포함하는
방법.
- 제 3 항에 있어서,
새로운 버전 번호를 생성하고, 상기 제 1 프로세서의 물리적 메모리 공간 내의 공유 가상 메모리 내의 상기 개별 메모리 위치에 상기 차이 콘텐츠와 함께 상기 새로운 버전 번호를 저장하는 단계를 더 포함하는
방법.
- 제 2 항에 있어서,
상기 공유된 멀티 버전 데이터를 생성하는 단계는 상기 제 1 프로세서의 물리적 메모리 공간 내의 공유 가상 메모리에 저장된 상기 갱신된 버전 메모리 페이지를 추적하는 단계를 포함하는
방법. - 제 5 항에 있어서,
상기 갱신된 버전 메모리 페이지를 추적하는 단계는 릴리스(release) 상의 기록 보호 모드에서 상기 갱신된 버전 메모리 페이지를 공유하는 단계를 포함하는
방법.
- 제 6 항에 있어서,
상기 갱신된 버전 메모리 페이지를 추적하는 단계는 처리기(handler)에서 상기 갱신된 버전 메모리 페이지의 백업 카피(back-up copy)를 생성하는 단계를 포함하되,
상기 처리기는 릴리스 상의 판독 전용 모드에서 상기 갱신된 버전 메모리 페이지를 공유함으로써 생성되는
방법.
- 제 7 항에 있어서,
상기 갱신된 버전 메모리 페이지를 추적하는 단계는 상기 갱신된 버전 메모리 페이지가 변경됨을 나타내도록 보조 저장장치에 표시하는 단계를 포함하는
방법. - 제 1 항에 있어서,
상기 공유된 멀티 버전 데이터를 획득하는 단계는 시작 페이지의 버전으로부터 최근의 버전 번호까지의 diff 리스트의 노드를 상기 시작 페이지로 병합함으로써 제 1 병합 콘텐츠를 생성하는 단계를 포함하는
방법.
- 제 9 항에 있어서,
상기 공유된 멀티 버전 데이터를 획득하기 위해 상기 제 1 병합 콘텐츠를 획득하는 단계를 더 포함하는
방법.
- 컴퓨터 플랫폼에 있어서,
공유된 멀티 버전 데이터를 생성하는 제 1 프로세서와,
공유된 가상 메모리와,
제 2 프로세서―상기 제 2 프로세서는 상기 제 2 프로세서를 사용하여 상기 공유된 멀티 버전 데이터를 획득함―를 포함하되,
상기 제 2 프로세서의 전용 메모리는 상기 공유된 멀티 버전 데이터를 지원하는 상기 공유된 가상 메모리를 저장하는 데 사용되며,
상기 컴퓨터 플랫폼은 상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 복수의 이종 프로세서를 포함하는
컴퓨터 플랫폼.
- 제 11 항에 있어서,
상기 제 1 프로세서는 갱신된 버전 메모리 페이지를 생성하고, 상기 갱신된 버전 메모리 페이지는 현재의 버전 페이지와 이전 버전 페이지를 사용하여 생성된 차이 콘텐츠를 포함하는
컴퓨터 플랫폼.
- 제 12 항에 있어서,
상기 제 1 프로세서는 상기 제 1 프로세서 및 상기 제 2 프로세서에 의해 공유되는 물리적으로 공유된 메모리 내의 개별 메모리 위치에 상기 차이 콘텐츠를 저장하는
컴퓨터 플랫폼.
- 제 13 항에 있어서,
상기 제 1 프로세서는 또한 새로운 버전 번호를 생성하고, 상기 물리적으로 공유된 메모리 내의 상기 개별 메모리 위치에 상기 차이 콘텐츠와 함께 상기 새로운 버전 번호를 저장하는
컴퓨터 플랫폼.
- 제 12 항에 있어서,
상기 제 1 프로세서는 물리적으로 공유된 메모리에 저장된 상기 갱신된 버전 메모리 페이지를 추적하는
컴퓨터 플랫폼.
- 제 15 항에 있어서,
상기 제 1 프로세서는 릴리스 상의 기록 보호 모드에서 상기 갱신된 버전 메모리 페이지를 공유하는
컴퓨터 플랫폼.
- 제 16 항에 있어서,
상기 제 1 프로세서는 처리기에서 상기 갱신된 버전 메모리 페이지의 백업 카피를 생성하고,
상기 처리기는 릴리스 상의 기록 보호 모드에서 상기 갱신된 버전 메모리 페이지를 공유함으로써 생성되는
컴퓨터 플랫폼.
- 제 17 항에 있어서,
상기 제 1 프로세서는 상기 갱신된 버전 메모리 페이지가 변경됨을 나타내도록 보조 저장장치에 표시하는
컴퓨터 플랫폼.
- 제 11 항에 있어서,
상기 제 2 프로세서는 시작 페이지의 버전으로부터 최근의 버전 번호까지의 diff 리스트의 노드를 상기 시작 페이지로 병합함으로써 제 1 병합 콘텐츠를 생성하는
컴퓨터 플랫폼. - 제 19 항에 있어서,
상기 제 2 프로세서는 상기 공유된 멀티 버전 데이터를 획득하기 위해 상기 제 1 병합 콘텐츠를 획득하는
컴퓨터 플랫폼.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/643,803 US8868848B2 (en) | 2009-12-21 | 2009-12-21 | Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform |
US12/643,803 | 2009-12-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110073339A KR20110073339A (ko) | 2011-06-29 |
KR101240092B1 true KR101240092B1 (ko) | 2013-03-06 |
Family
ID=43531604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100131675A KR101240092B1 (ko) | 2009-12-21 | 2010-12-21 | 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8868848B2 (ko) |
KR (1) | KR101240092B1 (ko) |
CN (1) | CN102103567B (ko) |
DE (1) | DE102010051477B4 (ko) |
GB (1) | GB2476360B (ko) |
TW (2) | TWI550412B (ko) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9331869B2 (en) * | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
US9633407B2 (en) | 2011-07-29 | 2017-04-25 | Intel Corporation | CPU/GPU synchronization mechanism |
CN102323917B (zh) * | 2011-09-06 | 2013-05-15 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
US9298607B2 (en) * | 2011-11-22 | 2016-03-29 | Intel Corporation | Access control for non-volatile random access memory across platform agents |
KR101355105B1 (ko) | 2012-01-03 | 2014-01-23 | 서울대학교산학협력단 | 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치 |
US9009419B2 (en) * | 2012-07-31 | 2015-04-14 | Advanced Micro Devices, Inc. | Shared memory space in a unified memory model |
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 |
CN103020149B (zh) * | 2012-11-22 | 2016-01-20 | 用友网络科技股份有限公司 | 共享数据更新装置和共享数据更新方法 |
US10437591B2 (en) * | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
JP2014200075A (ja) * | 2013-03-15 | 2014-10-23 | 株式会社リコー | コンピュータシステム、配信制御システム、配信制御方法、及びプログラム |
US9460481B2 (en) * | 2013-03-25 | 2016-10-04 | Vmware, Inc. | Systems and methods for processing desktop graphics for remote display |
CN104111897B (zh) * | 2013-04-16 | 2017-06-13 | 华为技术有限公司 | 一种数据处理方法、装置及计算机系统 |
US20150170317A1 (en) * | 2013-12-18 | 2015-06-18 | Eric C. Samson | Load Balancing for Consumer-Producer and Concurrent Workloads |
US9372752B2 (en) * | 2013-12-27 | 2016-06-21 | Intel Corporation | Assisted coherent shared memory |
KR102114245B1 (ko) | 2014-04-10 | 2020-06-05 | 삼성전자 주식회사 | 그래픽스 상태 관리 장치 및 방법 |
US9507726B2 (en) | 2014-04-25 | 2016-11-29 | Apple Inc. | GPU shared virtual memory working set management |
US9563571B2 (en) | 2014-04-25 | 2017-02-07 | Apple Inc. | Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management |
CN104281636B (zh) * | 2014-05-05 | 2017-09-08 | 神华集团有限责任公司 | 海量报表数据并发分布式处理方法 |
US9342384B1 (en) * | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
US10019373B2 (en) * | 2014-12-19 | 2018-07-10 | Mediatek Inc. | Memory management method for supporting shared virtual memories with hybrid page table utilization and related machine readable medium |
DE102016106939B4 (de) | 2015-04-17 | 2024-05-02 | Suunto Oy | Eingebettetes Rechengerät |
GB2542988B (en) * | 2015-04-17 | 2019-11-13 | Suunto Oy | Embedded computing device comprising processing units interfaced with a shared information space |
CN105022716A (zh) * | 2015-06-24 | 2015-11-04 | 浪潮电子信息产业股份有限公司 | 一种多数据链路的gpu服务器 |
CN105159610B (zh) * | 2015-09-01 | 2018-03-09 | 浪潮(北京)电子信息产业有限公司 | 大规模数据处理系统及方法 |
US10489881B2 (en) * | 2017-06-30 | 2019-11-26 | H3 Platform Inc. | Direct memory access for co-processor memory |
US11436143B2 (en) * | 2017-12-22 | 2022-09-06 | Alibaba Group Holding Limited | Unified memory organization for neural network processors |
CN109308196B (zh) * | 2018-08-22 | 2020-04-14 | 腾讯科技(深圳)有限公司 | 一种多机型设备复用方法、装置及存储介质 |
KR102158877B1 (ko) * | 2018-12-17 | 2020-09-23 | 성균관대학교 산학협력단 | 그래픽 프로세싱 유닛 상에서 작업을 프로세싱하기 위한 시스템 및 방법 |
US11693837B2 (en) | 2020-09-18 | 2023-07-04 | Databricks, Inc. | Model ML registry and model serving |
US11782835B2 (en) * | 2020-11-30 | 2023-10-10 | Electronics And Telecommunications Research Institute | Host apparatus, heterogeneous system architecture device, and heterogeneous system based on unified virtual memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008158811A (ja) | 2006-12-22 | 2008-07-10 | Toshiba Corp | 情報処理装置および情報処理方法 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5745906A (en) * | 1995-11-14 | 1998-04-28 | Deltatech Research, Inc. | Method and apparatus for merging delta streams to reconstruct a computer file |
US6341339B1 (en) * | 1998-03-26 | 2002-01-22 | Compaq Computer Corporation | Apparatus and method for maintaining data coherence within a cluster of symmetric multiprocessors |
US6457021B1 (en) * | 1998-08-18 | 2002-09-24 | Microsoft Corporation | In-memory database system |
US6574749B1 (en) * | 1999-10-29 | 2003-06-03 | Nortel Networks Limited | Reliable distributed shared memory |
US7437662B1 (en) * | 2001-06-15 | 2008-10-14 | Oracle International Corporation | Representing deltas between XML versions using XSLT |
US7287034B2 (en) * | 2003-05-08 | 2007-10-23 | Oracle International Corporation | On-demand multi-version data dictionary to support distributed applications |
US8509051B2 (en) | 2003-09-02 | 2013-08-13 | Qualcomm Incorporated | Multiplexing and transmission of multiple data streams in a wireless multi-carrier communication system |
US20050071578A1 (en) | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for manipulating data with a plurality of processors |
US7921419B2 (en) * | 2004-05-12 | 2011-04-05 | Oracle International Corporation | Method and mechanism for managing incompatible changes in a distributed system |
US7818513B2 (en) * | 2004-08-10 | 2010-10-19 | Oracle America, Inc. | Coordinating accesses to shared objects using transactional memory mechanisms and non-transactional software mechanisms |
US20060112226A1 (en) * | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
US20070088766A1 (en) * | 2005-10-17 | 2007-04-19 | Oracle International Corporation | Method and system for capturing and storing multiple versions of data item definitions |
US7516301B1 (en) * | 2005-12-16 | 2009-04-07 | Nvidia Corporation | Multiprocessor computing systems with heterogeneous processors |
US7404056B1 (en) * | 2005-12-07 | 2008-07-22 | Nvidia Corporation | Virtual copying scheme for creating multiple versions of state information |
GB0606012D0 (en) * | 2006-03-25 | 2006-05-03 | Zenopia Ltd | Data storage |
US7542977B2 (en) * | 2006-06-29 | 2009-06-02 | Intel Corporation | Transactional memory with automatic object versioning |
US8134566B1 (en) * | 2006-07-28 | 2012-03-13 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
US20080109795A1 (en) * | 2006-11-02 | 2008-05-08 | Nvidia Corporation | C/c++ language extensions for general-purpose graphics processing unit |
US7941791B2 (en) * | 2007-04-13 | 2011-05-10 | Perry Wang | Programming environment for heterogeneous processor resource integration |
US7996359B2 (en) * | 2008-06-16 | 2011-08-09 | International Business Machines Corporation | Managing multi-node multi-version systems |
US8397241B2 (en) | 2008-11-13 | 2013-03-12 | Intel Corporation | Language level support for shared virtual memory |
-
2009
- 2009-12-21 US US12/643,803 patent/US8868848B2/en active Active
-
2010
- 2010-11-09 TW TW103122260A patent/TWI550412B/zh active
- 2010-11-09 TW TW099138519A patent/TWI451270B/zh active
- 2010-11-15 DE DE102010051477.2A patent/DE102010051477B4/de active Active
- 2010-12-07 GB GB1020733.0A patent/GB2476360B/en active Active
- 2010-12-20 CN CN201010601559.1A patent/CN102103567B/zh active Active
- 2010-12-21 KR KR1020100131675A patent/KR101240092B1/ko active IP Right Grant
-
2014
- 2014-10-01 US US14/503,596 patent/US9710396B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008158811A (ja) | 2006-12-22 | 2008-07-10 | Toshiba Corp | 情報処理装置および情報処理方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI451270B (zh) | 2014-09-01 |
DE102010051477B4 (de) | 2023-08-03 |
CN102103567A (zh) | 2011-06-22 |
KR20110073339A (ko) | 2011-06-29 |
DE102010051477A1 (de) | 2011-06-22 |
GB201020733D0 (en) | 2011-01-19 |
US8868848B2 (en) | 2014-10-21 |
US9710396B2 (en) | 2017-07-18 |
CN102103567B (zh) | 2014-06-04 |
TWI550412B (zh) | 2016-09-21 |
GB2476360A (en) | 2011-06-22 |
US20150019825A1 (en) | 2015-01-15 |
US20110153957A1 (en) | 2011-06-23 |
TW201140334A (en) | 2011-11-16 |
TW201512856A (zh) | 2015-04-01 |
GB2476360B (en) | 2012-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101240092B1 (ko) | 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 | |
KR101581796B1 (ko) | 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유 | |
US20140040856A1 (en) | Apparatus, Method and System for Building Software by Composition | |
US20120151495A1 (en) | Sharing data among concurrent tasks | |
US9841958B2 (en) | Extensible data parallel semantics | |
US8650537B2 (en) | Optimizing an object-oriented program by transforming invocations of synthetic accessor methods | |
US20140347371A1 (en) | Graphics processing using dynamic resources | |
CN103999036A (zh) | 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和系统 | |
US9135035B2 (en) | Markup language integration at runtime | |
US8732684B2 (en) | Program conversion apparatus and computer readable medium | |
US10496433B2 (en) | Modification of context saving functions | |
CN103218228B (zh) | 一种安卓设备内置硬盘实现ntfs文件系统的方法及装置 | |
US20070005745A1 (en) | Method for consistent and efficient management of program configuration and customizing data | |
CN105487839A (zh) | 一种面向连续不对界向量数据访问的编译优化方法 | |
KR20220083036A (ko) | 시대 기반 메모리 수집 기법과 포인터 기반 메모리 수집 기법 혼합을 위한 컴퓨터 시스템 및 그의 방법 | |
CN101689136A (zh) | 事务存储器的对象模型 | |
JP5811211B2 (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160127 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170201 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180201 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20190129 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20200129 Year of fee payment: 8 |