KR101240092B1 - 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 - Google Patents

컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 Download PDF

Info

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
Application number
KR1020100131675A
Other languages
English (en)
Other versions
KR20110073339A (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 KR20110073339A publication Critical patent/KR20110073339A/ko
Application granted granted Critical
Publication of KR101240092B1 publication Critical patent/KR101240092B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • 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/657Virtual address space management

Abstract

컴퓨터 시스템은 컴퓨터 플랫폼 및 입력-출력 장치를 포함할 수 있다. 컴퓨터 플랫폼은 중앙 처리 장치(CPU) 및 그래픽 처리 장치(GPU)를 포함하는 복수의 이종 프로세서 및 적어도 하나의 이종 프로세서의 물리적 전용 메모리 공간 또는 이종 프로세서에 의해 공유되는 물리적 공유 메모리에 의해 지원되는 공유된 가상 메모리를 포함할 수 있다. CPU(생산자)는 공유된 멀티 버전 데이터를 생성할 수 있고 그 공유된 멀티 버전 데이터를 물리적 전용 메모리 공간 또는 물리적 공유 메모리에 저장할 수 있다. GPU(소비자)는 공유된 멀티 버전 데이터를 획득하거나 액세스할 수 있다.

Description

컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼{SHARING VIRTUAL MEMORY-BASED MULTI-VERSION DATA BETWEEN THE HETEROGENOUS PROCESSORS OF A COMPUTER PLATFORM}
컴퓨터 시스템은 중앙 처리 장치(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은 일 실시예에 따라 플랫폼의 이종 프로세서들 사이의 가상 메모리 기반 멀티 버전 데이터의 공유를 지원할 수 있는 플랫폼을 포함할 수 있는 컴퓨터 시스템을 도시한다.
후속 설명은 컴퓨터 플랫폼의 이종 프로세서들(예컨대, 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 컴파일러

Claims (20)

  1. 컴퓨터 플랫폼에서의 방법에 있어서,
    제 1 프로세서를 사용하여 멀티 버전 공유 가상 메모리(multi-version shared virtual memory)에서 공유된 멀티 버전 데이터(shared multi-version data)를 생성하는 단계와,
    상기 공유된 멀티 버전 데이터를 상기 제 1 프로세서의 물리적 전용 메모리 공간(physical private memory space)에 저장하는 단계와,
    제 2 프로세서를 사용하여 상기 공유된 멀티 버전 데이터를 획득하는 단계를 포함하되,
    상기 컴퓨터 플랫폼은 상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 복수의 이종 프로세서를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 공유된 멀티 버전 데이터를 생성하는 단계는 갱신된 버전 메모리 페이지를 생성하는 단계를 포함하되,
    상기 갱신된 버전 메모리 페이지는 현재의 버전 페이지 및 이전 버전 페이지를 사용하여 생성된 차이(difference) 콘텐츠를 포함하는
    방법.
  3. 제 2 항에 있어서,
    상기 공유된 멀티 버전 데이터를 생성하는 단계는 상기 제 1 프로세서의 물리적 메모리 공간 내의 개별 메모리 위치에 상기 차이 콘텐츠를 저장하는 단계를 포함하는
    방법.
  4. 제 3 항에 있어서,
    새로운 버전 번호를 생성하고, 상기 제 1 프로세서의 물리적 메모리 공간 내의 공유 가상 메모리 내의 상기 개별 메모리 위치에 상기 차이 콘텐츠와 함께 상기 새로운 버전 번호를 저장하는 단계를 더 포함하는
    방법.
  5. 제 2 항에 있어서,
    상기 공유된 멀티 버전 데이터를 생성하는 단계는 상기 제 1 프로세서의 물리적 메모리 공간 내의 공유 가상 메모리에 저장된 상기 갱신된 버전 메모리 페이지를 추적하는 단계를 포함하는
    방법.
  6. 제 5 항에 있어서,
    상기 갱신된 버전 메모리 페이지를 추적하는 단계는 릴리스(release) 상의 기록 보호 모드에서 상기 갱신된 버전 메모리 페이지를 공유하는 단계를 포함하는
    방법.
  7. 제 6 항에 있어서,
    상기 갱신된 버전 메모리 페이지를 추적하는 단계는 처리기(handler)에서 상기 갱신된 버전 메모리 페이지의 백업 카피(back-up copy)를 생성하는 단계를 포함하되,
    상기 처리기는 릴리스 상의 판독 전용 모드에서 상기 갱신된 버전 메모리 페이지를 공유함으로써 생성되는
    방법.
  8. 제 7 항에 있어서,
    상기 갱신된 버전 메모리 페이지를 추적하는 단계는 상기 갱신된 버전 메모리 페이지가 변경됨을 나타내도록 보조 저장장치에 표시하는 단계를 포함하는
    방법.
  9. 제 1 항에 있어서,
    상기 공유된 멀티 버전 데이터를 획득하는 단계는 시작 페이지의 버전으로부터 최근의 버전 번호까지의 diff 리스트의 노드를 상기 시작 페이지로 병합함으로써 제 1 병합 콘텐츠를 생성하는 단계를 포함하는
    방법.
  10. 제 9 항에 있어서,
    상기 공유된 멀티 버전 데이터를 획득하기 위해 상기 제 1 병합 콘텐츠를 획득하는 단계를 더 포함하는
    방법.
  11. 컴퓨터 플랫폼에 있어서,
    공유된 멀티 버전 데이터를 생성하는 제 1 프로세서와,
    공유된 가상 메모리와,
    제 2 프로세서―상기 제 2 프로세서는 상기 제 2 프로세서를 사용하여 상기 공유된 멀티 버전 데이터를 획득함―를 포함하되,
    상기 제 2 프로세서의 전용 메모리는 상기 공유된 멀티 버전 데이터를 지원하는 상기 공유된 가상 메모리를 저장하는 데 사용되며,
    상기 컴퓨터 플랫폼은 상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 복수의 이종 프로세서를 포함하는
    컴퓨터 플랫폼.
  12. 제 11 항에 있어서,
    상기 제 1 프로세서는 갱신된 버전 메모리 페이지를 생성하고, 상기 갱신된 버전 메모리 페이지는 현재의 버전 페이지와 이전 버전 페이지를 사용하여 생성된 차이 콘텐츠를 포함하는
    컴퓨터 플랫폼.
  13. 제 12 항에 있어서,
    상기 제 1 프로세서는 상기 제 1 프로세서 및 상기 제 2 프로세서에 의해 공유되는 물리적으로 공유된 메모리 내의 개별 메모리 위치에 상기 차이 콘텐츠를 저장하는
    컴퓨터 플랫폼.
  14. 제 13 항에 있어서,
    상기 제 1 프로세서는 또한 새로운 버전 번호를 생성하고, 상기 물리적으로 공유된 메모리 내의 상기 개별 메모리 위치에 상기 차이 콘텐츠와 함께 상기 새로운 버전 번호를 저장하는
    컴퓨터 플랫폼.
  15. 제 12 항에 있어서,
    상기 제 1 프로세서는 물리적으로 공유된 메모리에 저장된 상기 갱신된 버전 메모리 페이지를 추적하는
    컴퓨터 플랫폼.
  16. 제 15 항에 있어서,
    상기 제 1 프로세서는 릴리스 상의 기록 보호 모드에서 상기 갱신된 버전 메모리 페이지를 공유하는
    컴퓨터 플랫폼.

  17. 제 16 항에 있어서,
    상기 제 1 프로세서는 처리기에서 상기 갱신된 버전 메모리 페이지의 백업 카피를 생성하고,
    상기 처리기는 릴리스 상의 기록 보호 모드에서 상기 갱신된 버전 메모리 페이지를 공유함으로써 생성되는
    컴퓨터 플랫폼.
  18. 제 17 항에 있어서,
    상기 제 1 프로세서는 상기 갱신된 버전 메모리 페이지가 변경됨을 나타내도록 보조 저장장치에 표시하는
    컴퓨터 플랫폼.
  19. 제 11 항에 있어서,
    상기 제 2 프로세서는 시작 페이지의 버전으로부터 최근의 버전 번호까지의 diff 리스트의 노드를 상기 시작 페이지로 병합함으로써 제 1 병합 콘텐츠를 생성하는
    컴퓨터 플랫폼.
  20. 제 19 항에 있어서,
    상기 제 2 프로세서는 상기 공유된 멀티 버전 데이터를 획득하기 위해 상기 제 1 병합 콘텐츠를 획득하는
    컴퓨터 플랫폼.
KR1020100131675A 2009-12-21 2010-12-21 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 KR101240092B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008158811A (ja) 2006-12-22 2008-07-10 Toshiba Corp 情報処理装置および情報処理方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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