KR20150038386A - 물리적 메모리의 동적 분할 기술 - Google Patents
물리적 메모리의 동적 분할 기술 Download PDFInfo
- Publication number
- KR20150038386A KR20150038386A KR1020157004992A KR20157004992A KR20150038386A KR 20150038386 A KR20150038386 A KR 20150038386A KR 1020157004992 A KR1020157004992 A KR 1020157004992A KR 20157004992 A KR20157004992 A KR 20157004992A KR 20150038386 A KR20150038386 A KR 20150038386A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- processing unit
- memory space
- partition manager
- allocated
- Prior art date
Links
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Multi Processors (AREA)
Abstract
처리 유닛 사이에 공유된 물리적 메모리의 분할을 재할당하는 다양한 실시예가 여기에 제시된다. 장치와 검퓨터 구현 방법이 시스템 초기화 동안 제 1 처리 유닛에 할당되는 물리적 메모리의 메모리 공간량을 결정할 수 있다. 결정된 메모리 공간량이 확보될 수 있다. 확보된 메모리 공간은 실행시간 동안 제 2 처리 유닛에 할당될 수 있다. 다른 실시예가 설명되고 청구된다.
Description
본 출원은 물리적 메모리를 동적으로 분할하는 기술에 관한 것이다.
컴퓨팅 시스템은 종종 중앙 처리 유닛과 그래픽 처리 유닛 사이에 공유된 메모리를 사용한다. 현재, 컴퓨팅 시스템의 물리적 메모리는 컴퓨팅 시스템의 초기화 시에 할당된다. 예컨대, 메모리의 한 부분이 중앙 처리 유닛에 의한 사용에 정적으로 할당되는 동안 다른 부분이 그래픽 처리 유닛에 의한 사용에 정적으로 할당된다. 메모리가, 예를 들어, 시스템 부트-업과 같은 시스템 초기화 시에 정적으로 할당되기 때문에, 만약 실행시간 동안에 중앙 처리 유닛 또는 그래픽 처리 유닛이 추가적으로 물리적 메모리를 필요로 하는 것이 나중에 결정된다면, 물리적 메모리의 정적인 할당은 실행시간 동안에 변경되는 것이 불가능하므로 이러한 필요를 충족하는 현재 사용가능한 해결책을 사용하는 것이 불가능하다.
사용자의 추가적 메모리 요구를 충족시키는 현재의 해결책은 대개 비효율적으로, 시스템 성능을 저하시키고/시키거나 동시에 실행되는 애플리케이션의 수를 감소시킨다. 따라서, 이러한 및 다른 문제를 해결하는 향상된 기술이 요구된다.
도 1은 제 1 시스템의 블럭도를 도시한다.
도 2는 공유된 물리적 메모리를 재할당하는 일 실시예를 도시한다.
도 3은 제 1 로직 플로우의 일 실시예를 도시한다.
도 4는 제 2 로직 플로우의 일 실시예를 도시한다.
도 5는 시스템 내 통신의 일 실시예를 도시한다.
도 6은 공유된 물리적 메모리를 재할당하는 다른 실시예를 도시한다.
도 7은 제 2 시스템의 일 실시예를 도시한다.
도 8은 통신 구조의 일 실시예를 도시한다.
도 2는 공유된 물리적 메모리를 재할당하는 일 실시예를 도시한다.
도 3은 제 1 로직 플로우의 일 실시예를 도시한다.
도 4는 제 2 로직 플로우의 일 실시예를 도시한다.
도 5는 시스템 내 통신의 일 실시예를 도시한다.
도 6은 공유된 물리적 메모리를 재할당하는 다른 실시예를 도시한다.
도 7은 제 2 시스템의 일 실시예를 도시한다.
도 8은 통신 구조의 일 실시예를 도시한다.
실시예는 일반적으로 실행시간 중 메모리 할당 기술에 관한 것이다. 현재, 정적 메모리 공간은 시스템 초기화 중에만 할당될 수 있다. 시스템 초기화는 컴퓨팅 시스템이 운영체제를 메모리에 로딩하고 컴퓨팅 시스템 상의 기본적인 입출력 시스템만이 재활성화되는 시간 구간을 포함할 수 있다. 시스템 초기화는 컴퓨팅 시스템이 켜지자마자 발생할 수 있으며, 시스템 부트-업 또는 시스템 스타트업으로 칭해질 수 있다. 일단 운영체제가 로딩되면, 시스템 초기화가 완료되고 실행시간이 시작된다. 실행시간은 시스템 초기화가 발행한 후 시스템이 종료되고/되거나 꺼질때까지 계속되는 시간 구간을 포함할 수 있다.
일부 실시예는 특히 실행시간 중에 제 1 처리 유닛에서 제 2 처리 유닛으로 정적 메모리 공간을 동적으로 할당하도록 배치된 메모리 할당 기술에 관한 것이다. 일 실시예에서, 예를 들어, 메모리 분할 관리자가 제 2 처리 유닛이 추가 메모리를 요구한다는 것을 결정할 수 있다. 시스템이 다시 초기화되는 것을 기다리는 대신에, 메모리 분할 관리자는 제 2 처리 유닛에 재할당될 현재 제 1 처리 유닛에 할당된 물리적 메모리 내의 메모리 공간량을 실행시간 동안 결정할 수 있다. 메모리 분할 관리자는 제 2 처리 유닛에 추가 메모리를 할당하기 위해 실행시간 동안에 메모리 공간을 확보할 수 있다. 현재 메모리 할당이 종종 제 1 처리 유닛에는 사용가능하거나 사용되지 않는 정적 메모리 공간이 할당되는 반면에 제 2 처리 유닛은 애플리케이션을 실행하기 위해 추가 메모리를 요구하는 상황일 수 있기 때문에, 여기에 설명된 실시예는 정적 메모리 공간을 제 1 처리 유닛에서 제 2 처리 유닛으로 실행시간 동안에 재할당할 수 있다. 정적 메모리 공간을 처리 유닛에 실행시간 동안에 재할당함으로써, 물리적 메모리의 분배가 시스템 플랫폼을 다시 초기화하는 것과 관련된 지연을 제거하거나 감소함으로써 더욱 효율적인 메모리 할당을 가능하게 할 수 있다.
컴퓨팅 플랫폼은 물리적 메모리를 포함할 수 있다. 물리적 메모리는 하나 이상의 처리 유닛에 의해 공유될 수 있다. 공유된 물리적 메모리는 처리 유닛에 할당된 다수의 메모리 공간으로 분할될 수 있다. 메모리 및 메모리 공간이라는 용어가 본 개시 전체에서 서로 교환가능하도록 사용될 수 있다. 예를 들어, 컴퓨팅 시스템이 그래픽 처리 유닛과 중앙 처리 유닛을 포함한다면, 물리적 메모리 영역은 그래픽 처리 유닛에 할당된 제 1 메모리 공간과 중앙 처리 유닛에 할당된 제 2 메모리 공간으로 분할될 수 있다.
컴퓨팅 플랫폼은 중앙 처리 유닛, 그래픽 처리 유닛, 디지털 신호 처리 유닛 및/또는 네트워크 처리 유닛과 같은 다수의 처리 유닛을 포함할 수 있다. 처리 유닛은 프로세서 회로를 포함할 수 있다. 중앙 처리 유닛과 네트워크 처리 유닛은 기초적인 산술적 및 논리적 동작들을 수행함으로써 명령어를 실행한다. 그래픽 처리 유닛은 디스플레이에 출력될 이미지 생성을 가속화하기 위해 메모리를 조작하거나 변경할 수 있다. 디지털 신호 처리 유닛은 아날로그 정보 신호를 필터링하고 압축함으로써 조작할 수 있다.
처리 유닛은 애플리케이션 또는 운영체제와 같은 하나 이상의 시스템 개체를 실행할 수 있다. 시스템 개체가 처리 유닛 상에서 실행될 때, 시스템 개체는 처리 유닛에 할당된 물리적 메모리 내의 메모리 공간을 사용할 수 있다. 처리 유닛이 할당된 모든 정적 메모리 공간을 현재 사용하는 경우, 처리 유닛은 공유된 물리적 메모리가 실행시간 동안 재분할될 수 없기 때문에 추가 메모리 공간을 할당받을 수 없다.
역사적으로, 각각의 처리 유닛은 별개의 실리콘 다이 상에 배치된 이산적인 물리적 유닛이었다. 이산적인 처리 유닛은 대개 처리 유닛에 직접 부착된 메모리를 포함했다. 결과적으로, 처리 유닛은 서로의 메모리에 대해 전기적 접근을 갖지 못했다. 이처럼, 처리 유닛에 대해 공유된 메모리 자원이 지원되지 않았다.
현재, 처리 유닛은 대게 동일한 실리콘 다이 상에 통합되어 있다. 처리 유닛이 동일한 물리적 공간에 위치함으로써, 처리 유닛은 동일한 물리적 메모리에 대해 전기적 접근을 가지며, 물리적 메모리는 공유된다. 그러나, 처리 유닛이 공유된 물리적 메모리에 대해 접근을 가짐에도 불구하고, 기본적인 입출력 시스템, 운영체제, 삼차원 실행 애플리케이션 및 애플리케이션과 같은, 그러나 이에 한정되는 것은 아닌, 시스템 개체는 여전히 공유된 물리적 메모리가 별개의 물리적 메모리인 것처럼 처리 유닛에 할당된 메모리만을 사용하고 있다. 이처럼, 시스템 초기화 시에 기본적인 입출력 시스템이 각각의 처리 유닛에 대해 특정 양의 메모리를 정의하고, 실행시간 동안에 공유된 물리적인 메모리 할당을 동적으로 재할당할 방법이 없다. 때문에 메모리를 재할당하는 대신에, 처리 유닛은 가상 메모리를 사용하거나 현재의 시스템 개체의 실행을 계속하기 위해서 처리 유닛에 할당된 메모리 공간을 사용하는 시스템 개체를 종료한다.
가상 메모리를 사용하는 현재의 방법은 컴퓨팅 시스템의 성능을 저하시킨다. 처리 유닛을 페이징(paging)하는 것과 같은 다른 방법 또한 시스템의 성능을 저하시킨다. 부가적으로, 처리 유닛 상에 동시에 실행되는 애플리케이션의 수를 줄이는 그러한 방법 또한 상이한 처리 유닛에 할당된 메모리 공간이 사용가능할 수 있기 때문에 비효율적이다.
이러한 여타의 문제점을 해결하기 위해, 실시예는 공유된 물리적 메모리 내의 정적 메모리 공간을 제 1 처리 유닛에서 제 2 처리 유닛으로 실행시간 동안 동적으로 재할당한다. 메모리 분할 관리자가 제 2 처리 유닛으로 재할당될 제 1 처리 유닛에 할당된 물리적 메모리 내의 메모리 공간량을 결정하기 위해 컴퓨팅 시스템에 포함될 수 있다. 메모리 분할 관리자는 제 1 처리 유닛 상에서 현재 실행되는 임의의 시스템 개체가 결정된 메모리 공간량을 제 2 처리 유닛에 재할당하기 전에 완료되는 것을 확인하기 위해서 처리 유닛과 통신할 수 있다. 시스템 개체가 제 1 처리 유닛에 할당된 메모리 공간에서 현재 실행되고 있지 않음을 확인하는 메모리 분할 관리자의 사용 없이, 정적 메모리 공간을 재할당하는 것은 시스템 오류를 초래할 수 있다.
일단 제 1 처리 유닛이 메모리 분할 관리자와 현재 실행중인 시스템 개체가 없다고 통신하면, 메모리 분할 관리자는 실행시간 동안 결정된 정적 메모리 공간량을 확보할 수 있다. 확보된 메모리 공간은 제 2 처리 유닛에 할당될 수 있다. 제 2 처리 유닛의 추가 메모리 요구에 대해 실행시간 동안 동적으로 응답함으로써, 시스템은 공유된 물리적 메모리 내의 메모리 공간을 효율적으로 사용할 수 있다.
따라서, 다양한 실시예가 실행시간 동안의 공유된 물리적 메모리 내의 메모리 공간을 재분할하고 재할당하는 것을 설명한다. 메모리 공간을 재분할하기 위해 메모리 분할 관리자를 사용함으로써, 처리 유닛으로 공유된 메모리를 할당하는 것이 효율적일 수 있다. 예를 들어, 현재 메모리 공간의 할당이 정적이기 때문에, 제 2 처리 유닛이 애플리케이션을 실행하기 위해 추가 메모리 공간을 요구하는 동안 제 1 처리 유닛은 사용가능한 할당된 메모리 공간을 가질 수 있다. 여기에 설명된 실시예에서, 공유된 물리적 메모리 내의 메모리 공간은 실행시간 동안에 제 1 처리 유닛에서 제 2 처리 유닛으로 재할당될 수 있으며, 이것은 전력소비와 성능을 유지하는 가장 효율적인 방법이다.
장치는 프로세서 회로와 프로세서 회로 상에서 동작하는 메모리 분할 관리자를 포함할 수 있다. 메모리 분할 관리자는 물리적 메모리를 제 1 처리 유닛에 할당된 제 1 메모리 공간과 제 2 처리 유닛에 할당된 제 2 메모리 공간으로 재분할할 수 있다. 메모리 분할 관리자는 제 2 처리 유닛에 할당될 제 1 메모리 공간량을 결정하고 실행시간 동안 제 1 메모리 공간을 확보할 수 있다. 메모리 분할 관리자는 인접한 확보된 메모리 공간을 제 2 처리 유닛에 할당할 수 있다.
메모리 분할 관리자는 메모리 분할 관리자 실행 컨텍스트의 요소일 수 있다. 일 실시예에서, 메모리 분할 관리자 실행 컨텍스트는 가상 머신 모니터일 수 있다. 가상 머신 모니터는 컴퓨팅 시스템으로 하여금 복수의 동일한 실행 환경을 지원하는 것을 허용하는 가상 머신 또는 호스트 운영체제를 포함할 수 있다. 다른 실시예에서, 메모리 분할 관리자 실행 컨텍스트는 소프트웨어 요소처럼 중앙 처리 유닛 상에서 실행될 수 있다. 메모리 분할 관리자는 물리적 메모리를 재분할하여 추가 메모리 공간이 처리 유닛에 할당되도록 할 수 있다. 예를 들어, 메모리 분할 관리자는 검출된 시스템의 요구에 기초하여 메모리 할당을 변경하는 동작을 초기화할 수 있다. 대안적으로 또는 부가적으로, 메모리 분할 관리자는 애플리케이션 또는 운영 체제와 같은 시스템 개체로부터 공유된 물리적 메모리 할당을 변경하는 요청에 응답할 수 있다.
여기에 설명된 실시예는 종래의 메모리 할당 기술에 비해 다수의 이점을 제공할 수 있다. 제 1 처리 유닛으로부터 제 2 처리 유닛에 메모리 공간을 재할당함으로써, 공유된 물리적 메모리가 보다 효율적으로 사용될 수 있다. 보다 효율적인 메모리 공간의 사용은 각각의 애플리케이션 및/또는 애플리케이션의 집단적 그룹의 속도를 향상시킬 수 있다. 또한, 보다 효율적인 메모리 공간의 사용은 보다 많은 수의 애플리케이션이 동시에 실행되는 것을 허용할 수 있다. 예를 들어, 처리 유닛 상에서 동시에 실행되고 메모리 공간을 사용하는 애플리케이션의 수는 처리 유닛에서 실행되고 메모리 공간을 사용하는 다른 애플리케이션을 위해 줄어들 필요가 없다. 대신에, 다른 처리 유닛에 할당된 사용가능한 메모리 공간이 실행시간 동안에 재할당될 수 있다. 시스템이 다시 초기화될 때까지 기다리는 대신에 실행시간 동안에 처리 유닛에 메모리를 재할당함으로써, 시스템 성능의 저하를 초래하는 현재의 방법은 불필요해질 수 있다. 가상 메모리를 사용하거나 그래핏 처리 유닛 메모리 자원을 페이징하는 것과 같은 시스템 성능을 저하하는 일부 현재 방법은 사용되지 않을 수 있다. 또한, 실행시간 동안에 메모리 공간을 재할당함으로써, 불필요한 메모리는 시스템이 다시 초기화될 때까지 기다리는 대신에 실행시간 동안 파워다운 됨으로써 전력소비가 감소된다. 감소된 전력 소비는 특히 시스템이 배터리 전력 상에서 동작할 때 유리한데, 이는 배터리의 수명을 연장할 수 있기 때문이다.
이제 도면에 대한 참조가 이루어지며, 동일한 참조번호가 동일한 요소를 지칭하기 위하여 전체적으로 사용된다. 하기의 명세서에서, 설명의 목적으로 많은 구체적 상세가 그에 대한 완전한 이해를 제공하기 위해 제시된다. 그러나, 새로운 실시예가 이러한 구체적 상세 없이도 실행될 수 있음이 분명하다. 다른 예시에서, 잘 알려진 구조나 장치가 그에 대한 설명을 용이하게 하기 위해 블럭도의 형태로 도시된다. 모든 수정, 등가물 및 변형물이 청구된 주제의 사상과 범주 내에 속하도록 의도된다.
도 1은 예시적인 컴퓨팅 플랫폼을 구현하는 시스템(100)을 도시한다. 시스템(100)은 복수의 프로세서 회로를 포함할 수 있다. 복수의 프로세서 회로는 적어도 제 1 처리 유닛과 제 2 처리 유닛을 포함할 수 있다. 복수의 프로세서 회로는 중앙 처리 유닛(120)과 그래픽 처리 유닛(110)으로 나타날 수 있다. 시스템(100)은 공유된 물리적 메모리(125)와 메모리 분할 관리자 실행 컨텍스트(135)를 포함할 수 있다.
그래픽 처리 유닛(110)은 디스플레이에 출력가능한 이미지의 생성을 가속하기위해 메모리를 조작 및 변경할 수 있다. 그래픽 처리 유닛(110)은 빠른 속도로 연산적으로 집중적인 계산을 수행함으로써 컴퓨터 그래픽을 효율적으로 조작할 수 있다. 그래픽 처리 유닛(110)은 큰 블럭의 데이터를 병렬적으로 빠르게 처리한다. 중앙 처리 유닛(120)은 기본적인 산술적 및 논리적 동작을 수행함으로써 명령어를 실행할 수 있다. 비록 도 1에는 도시되지 않았으나, 시스템(100)은 추가적으로 또는 대안적으로 디지털 신호 처리 유닛 및/또는 네트워크 처리 유닛과 같은 처리 유닛을 포함할 수 있으나, 이에 제한되는 것은 아니다.
공유된 물리적 메모리(125)는 처리 유닛에 할당된 메모리 공간을 포함할 수 있다. 예를 들어, 도 1에서, 공유된 물리적 메모리(125)는 그래픽 처리 유닛 부분(126) 및 중앙 처리 유닛 부분(127)에 할당된 메모리 공간을 포함할 수 있다. 도시되지 않았으나, 대안적인 실시예에서, 공유된 물리적 메모리(125)는, 예를 들어,시스템(100) 상의 디지털 신호 처리 유닛 및/또는 네트워크 처리 유닛과 같이 시스템(100)에 의해 구현되는 다른 처리 유닛에 할당된 메모리 공간을 포함할 수 있다.
시스템(100)은 메모리 분할 관리자 실행 컨텍스트(135)를 포함할 수 있다. 메모리 분할 관리자 실행 컨텍스트(135)는 다양한 방식으로 구현될 수 있다. 일 실시예에서, 메모리 분할 관리자 실행 컨텍스트(135)는 가상 머신 모니터로 구현될 수 있다. 가상 머신 모니터로서, 메모리 분할 관리자 실행 컨텍스트(135)는 시스템(100) 상에서 실행되는 다양한 가상 머신을 조직할 수 있다. 예를 들어, 메모리 분할 관리자 실행 컨텍스트(135)는 시스템(100) 상에서 실행되는 운영체제를 변경하는 가상 머신으로 조직할 수 있다. 가상 머신은 프로그램을 물리적 컴퓨팅 장치와 같이 실행하는 컴퓨팅 장치의 소프트웨어적 구현을 포함할 수 있다. 예를 들어, 가상 머신은 운영체제의 실행을 지원할 수 있다. 대안적인 실시예에서, 메모리 분할 관리자 실행 컨텍스트(135)는 소프트웨어 요소로서 중앙 처리 유닛(120) 상에서 실행되도록 구현될 수 있다. 다른 대안적인 실시예에서, 메모리 분할 관리자 실행 컨텍스트(135)는 운영체제, 드라이버 또는 전력 제어 유닛 또는 관리가능 엔진(manageability engine)과 같은 마이크로 컨트롤러 상에서 실행되도록 구현될 수 있다. 또 다른 실시예에서, 메모리 분할 관리자 실행 컨텍스트(135)는 소프트웨어 제어에 노출된 레지스터 인터페이스를 갖는 하드웨어 유닛으로서 실행될 수 있다. 실시예는 위와 같이 제한되는 것은 아니다.
메모리 분할 관리자 실행 컨텍스트(135)는 메모리 분할 관리자(137)를 포함할 수 있다. 메모리 분할 관리자(137)는 물리적 메모리에 대한 재분할 요청에 응답하여 얼마간의 공유된 물리적 메모리(125)를 실행시간 동안 처리 유닛에 할당할 수 있다. 메모리 분할 관리자(137)는 시스템이 검출된 요구에 기초하여 실행시간 동안 물리적 메모리의 메모리 할당을 변경하는 동작을 초기화할 수 있다. 메모리 분할 관리자(137)는 실행시간 동안 공유된 물리적 메모리(125)의 할당을 변경할 것을 요청하는 애플리케이션 또는 운영체제와 같은, 그러나 이에 제한되는 것은 아닌, 시스템 개체(130)의 요청에 응답할 수 있다. 대안적으로 또는 부가적으로, 메모리 분할 관리자(137)는 실행시간 동안 추가 메모리를 획득하기 위한 처리 유닛(110, 120)의 요청에 응답할 수 있다. 메모리 분할 관리자는 중앙 처리 유닛, 그래픽 드라이버, 로직 회로 또는 운영 체제 중 하나 상에서 실행될 수 있다.
시스템(100)은 처리 유닛 상에서 실행되며, 처리 유닛에 할당된 공유된 물리적 메모리(125)의 메모리 공간을 사용하는 하나 이상의 시스템 개체(130)를 포함할 수 있다. 시스템 개체(130)는 애플리케이션, 드라이버 및/또는 운영체제를 포함할 수 있으나 이에 제한되는 것은 아니다. 예를 들어, 시스템 개체(130)는 3차원 게임 및/또는 비디오와 같은 멀티미디어를 생성하거나 업데이트하는데 사용되는 애플리케이션일 수 있다. 애플리케이션은 2차원 텍스처 애플리케이션(texture application), 3차원 텍스처 애플리케이션(texture application), 음향 효과 애플리케이션 및 쉐이딩 애플리케이션(shading application)과 같은, 그러나 이에 제한되는 것은 아닌, 작업 또는 기능을 포함할 수 있다. 대안적으로, 시스템 개체(130)는 Unix® 또는 Windows®과 같은 운영체제를 포함할 수 있다.
시스템(100)은 그래픽 드라이버(140)를 포함할 수 있다. 동작 시에, 시스템 개체(130)는 비디오 컨텐츠의 프레임(들)(155)을 표시하기 위해 그래픽 드라이버(140)를 호출할 수 있다. 그래픽 드라이버(140)는 프레임(155)을 디스플레이(160)에 표시하는 것을 처리할 수 있다. 시스템(100)은 또한 디지털 디스플레이(160)와 통신적으로 연결될 수 있다.
도 2는 공유된 물리적 메모리를 동적으로 재분할하는 실시예를 도시한다. 도 2는 초기 분할된 공유된 물리적 메모리의(201a)와 추후 분할된 공유된 물리적 메모리(201b)를 도시한다. 공유된 물리적 메모리(201a, 201b)는 블럭 셋으로서 도시되고, 블럭은 물리적 메모리 페이지를 나타낸다. 공유된 물리적 메모리(201a)의 초기 분할에서, 제 1 처리 유닛(250)에 할당된 정적 메모리는 제 2 처리 유닛(260)에 할당된 정적 메모리 위에 도시된다. 제 1 처리 유닛(250)에 할당된 정적 메모리는 제 2 처리 유닛(260)에 할당된 정적 메모리에 인접할 수 있다. 예를 들어, 제 1 처리 유닛(250)은 0부터 500 메가바이트까지의 메모리 공간을 포함할 수 있다. 제 2 처리 유닛(260)은 500부터 1000 메가바이트까지의 메모리 공간을 포함할 수 있다. 일 실시예에서, 제 1 처리 유닛(250)은 중앙 처리 유닛(120)을 나타내고 제 2 처리 유닛(260)은 그래픽 처리 유닛(110)을 나타낼 수 있다. 대안적인 실시예에서, 제 1 처리 유닛(250)은 그래픽 처리 유닛(110)을 나타내고 제 2 처리 유닛(260)은 중앙 처리 유닛(120)을 나타낼 수 있다. 또 다른 실시예에서, 제 1 처리 유닛(250)은 네트워크 처리 유닛을 나타내고 제 2 처리 유닛(260)은 중앙 처리 유닛(120)을 나타낼 수 있다. 다른 실시예에서, 제 3 또는 그 이상의 메모리 공간이 다른 처리 유닛에 할당될 수 있다.
공유된 물리적 메모리(201a)는 재분할될 수 있다. 제 1 처리 유닛(250)이 추가 메모리를 요구할 경우, 공유된 물리적 메모리(201a)는 201b에 도시된 바처럼 재분할될 수 있다. 공유된 물리적 메모리(201b)는 공유된 물리적 메모리(201a)와 별개의 상태이며, 시스템은 공유된 물리적 메모리(201a)에 도시된 상태이거나 공유된 물리적 메모리(201b)에 도시된 상태일 수 있다. 공유된 물리적 메모리(201b)에 도시된 상태에서, 제 1 처리 유닛(250) 또는 제 1 처리 유닛(250) 상에서 실행되는 시스템 개체는 추가 메모리 공간을 요청할 수 있다. 메모리 분할 관리자(137)는 현재 제 2 처리 유닛(260)에 할당된 정적 메모리 공간 중에서 제 1 처리 유닛(250)으로 재할당되어야 할 양을 요청할 수 있다.
현재, 정적 메모리 공간은 실행시간 동안에 재할당될 수 없다. 메모리 분할 관리자(137)의 사용 없이는 시스템 오류 없이 정적 메모리를 재할당하는 것이 불가능할 수 있다. 메모리 분할 관리자(137)는 제 1 처리 유닛(250) 및 제 2 처리 유닛(260)과 통신할 수 있다. 이러한 통신은 제 2 처리 유닛(260) 상에서 현재 실행되고 있는 시스템 개체(130)가 완료되어, 제 2 처리 유닛(260)에 현재 할당된 정적 메모리 공간 중에서 제 1 처리 유닛(250)에 요청된 양이 시스템 오류를 초래하지 않으면서도 재할당될 수 있음을 확인할 수 있다.
공유된 메모리 할당(201b)은 제 1 처리 유닛(250) 및 제 2 처리 유닛(260)에 할당된 메모리 공간의 새로이 요구되는 분할을 도시한다. 제 2 처리 유닛(260)으로부터 제 1 처리 유닛(250)으로 할당된 메모리 공간은 인접한 메모리 공간이다. 예를 들어, 제 1 메모리 공간의 128MB가 제 2 처리 유닛(260)으로부터 제 1 처리 유닛(250)으로 재할당되도록 요청될 수 있다. 제 2 처리 유닛(260)의 128MB의 메모리 공간이 제 1 처리 유닛(250)의 메모리 공간에 인접한 128MB의 메모리 공간이다.
도 3은 추가 메모리 요청을 수신한 메모리 분할 관리자(137)의 로직 플로우(300)의 일 실시예를 도시한다. 여기에 포함된 것은 개시된 구조의 새로운 양태를 수행하는 예시적인 방법론을 나타내는 하나 이상의 흐름도이다. 설명을 단순화할 목적으로 하나 이상의 방법론이 흐름도 또는 흐름 도표의 형태로 도시되고 연속되는 동작으로 도시되었으나, 방법론은 순차적 동작으로 제한되어 이해되어서는 안되며, 몇몇 동작은 상이한 순서 및/또는 여기에 도시되고 설명된 다른 동작들과 동시에 발생할 수 있다. 예를 들어, 당업자는 방법론이 대안적으로 상태도와 같은 도면에서 연속되는 상호연관된 상태 또는 이벤트로서 나타날 수 있음을 이해할 것이다. 또한, 방법론에 도시된 모든 동작이 새로운 구현에서 반드시 필요한 것은 아니다.
로직 플로우(300)는 블록(305)에서 처리 유닛에 대한 메모리 공간 요청을 수신할 수 있다. 메모리 분할 관리자 실행 컨텍스트(135)는 공유된 물리적 메모리 재분할 요청을 수신할 수 있다. 요청은 운영체제, 드라이버 또는 애플리케이션과 같은, 그러나 이제 제한되는 것은 아닌, 시스템 개체(130)에서 송신될 수 있다. 시스템 개체(130)는 처리 유닛(110, 120)을 사용하여 실행될 수 있다. 시스템 개체(130)는 처리 유닛(110, 120)에 할당된 공유된 물리적 메모리(125)의 메모리 공간을 사용할 수 있다. 그러나, 처리 유닛(110, 120)에 할당된 공유된 물리적 메모리(125)의 메모리 공간이 다 차있을 수도 있다. 시스템 개체(130)가 처리 유닛(110, 120) 상에서 실행되기 위해서, 시스템 개체(130)는 처리 유닛(110)에 할당될 추가 메모리 공간을 요청할 것이다.
예를 들어, 3차원 애플리케이션이 3차원 애플리케이션을 실행하고 3차원 영상의 텍스처를 저장 또는 유지하기 위해서 그래픽 처리 유닛(110)에 추가적인 물리적 메모리가 요구되는 것을 검출할 수 있다. 그래픽 드라이버(140)는 재분할 요청을 초기화할 수 있다. 그래픽 드라이버(140)는 얼만큼의 물리적 메모리가 그래픽 처리 유닛(110)에 현재 할당되어 있는지 통지될 수 있다. 그래픽 드라이버(140)는 운영체제, 그래픽 처리 유닛(110) 또는 메모리 분할 관리자(137)로부터 통지받을 수 있다. 3차원 애플리케이션이 자원을 생성 또는 파기하고 그래픽 처리 유닛(110)에 할당된 메모리를 소비하는 동작을 수행함에 따라, 그래픽 드라이버는 얼만큼의 메모리가 이러한 동작에 의해 그래픽 처리 유닛 상에서 사용되고 있는지 추적할 수 있다. 그래픽 처리 유닛(110) 상에서 자원을 생성하고 동작을 수행하는 3차원 애플리케이션에 의해 요구되는 메모리 양이 그래픽 처리 유닛(110)에 현재 할당된 물리적 메모리 양을 초과하는 경우, 그래픽 드라이버(140)는 메모리 분할 관리자(137)에 추가적인 물리적 메모리를 요청할 것을 시그널링할 수 있다. 유사하게, 필요한 메모리 양이 그래픽 처리 유닛(110)에 대해 현재 할당된 물리적 메모리의 임계량 이하로 떨어지면, 그래픽 드라이버(140)는 메모리 분할 관리자(137)에 그래픽 처리 유닛(110)이 더 적은 물리적 메모리를 사용할 수 있음을 통지할 수 있다.
드라이버가 공유된 물리적 메모리(125)의 그래픽 처리 유닛 부분(126)이 꽉 찼다고 판정하면, 현재 커맨드 버퍼는 실행을 위해 그래픽 처리 유닛(110)으로 플러시(flush)될 수 있다. 그래픽 처리 유닛(110)은 3차원 애플리케이션이 메모리 분할 관리자(137)에 추가적 메모리 요청을 송신하기 전에 커맨드 버퍼를 성공적으로 실행할 수 있다.
대안적인 실시예에서, 애플리케이션이 추가 메모리를 요청하는 대신에, 운영체제가 추가 메모리를 요청할 수 있다. 운영체제는 애플리케이션의 물리적 메모리에 대한 요구를 모니터하고, 운영체제가 애플리케이션의 필요에 기초하여 메모리 분할 관리자(137)에 물리적 메모리를 재할당할 것을 요청할 수 있다.
또 다른 대안적인 실시예에서, 사용자가 공유된 물리적 메모리(125)의 재할당을 요청할 수 있다. 시스템(100)은 실행시간 동안에 수동 설정 모드를 지원하여 사용자가 시스템(100)에 대해 공유된 물리적 메모리(125)의 선호되는 분할을 특정하도록 할 수 있다. 사용자는 제어 패널, 키보드, 조이스틱 및/또는 터치 스크린과 같은, 그러나 이에 제한되는 것은 아닌, 인터페이스를 통해 공유된 물리적 메모리(125)의 할당을 특정할 수 있다. 한번 특정되면, 메모리 분할 관리자(137)는 사용자의 요청에 따르도록 공유된 물리적 메모리를 재할당하는 요청을 수신할 수 있다. 결과적으로, 사용자는 시스템을 재초기화할 필요없이 기존의 애플리케이션 프로파일 범주에 완전히 동떨어져 애플리케이션을 실행할 수 있다.
예를 들어, 사용자는 중앙 처리 유닛(120)보다 그래픽 처리 유닛(110)의 사용을 선호할 수 있다. 사용자는 선호하는 메모리 할당을 메모리 분할 관리자(137)에 제공하기 위해 입력 장치를 사용할 수 있다. 사용자는 선호하는 메모리 할당을 언제든, 즉, 시스템 초기화 또는 실행시간 동안에 제공할 수 있다. 따라서, 그래픽 처리 유닛(110)이 추가적인 메모리를 요구하는 경우. 메모리 분할 관리자(137)는 그래픽 처리 유닛에 재할당될 사용가능한 메모리 공간을 만들도록하는 요청을 중앙 처리 유닛(120)에 송신할 수 있다.
다른 대안적인 실시예에서, 공유된 물리적 메모리(125) 재할당 요청은 애플리케이션 특정 프로파일에 기초한 것일 수 있다. 시스템(100)의 실행 중인 임의의 시간에 애플리케이션은 시스템 개체(130)로서 로딩될 수 있고, 애플리케이션은 애플리케이션 특정 프로파일을 포함할 수 있다. 애플리케이션 특정 프로파일은 실행시간 동안에 물리적 메모리의 분배 변경을 요청할 수 있다. 메모리 분할 관리자(137)는 애플리케이션 특정 프로파일로부터 공유된 물리적 메모리(125)의 메모리 공간을 재할당하는 요청을 수신할 수 있다.
로직 플로우(300)는 블록(310)에서 공유된 물리적 메모리(125)에 할당되지 않은 메모리 공간이 있는지 판정할 수 있다. 메모리 분할 관리자(137)는 요청을 수신한다. 메모리 분할 관리자(137)는 처리 유닛(110, 120)에 할당할 사용가능한 메모리 공간이 있는지 판정할 수 있다. 메모리 분할 관리자는 공유된 물리적 메모리(125) 내의 할당되지 않은 메모리 공간을 식별함으로써 사용가능한 추가적인 메모리 공간이 있는지 판정할 수 있다.
메모리 분할 관리자(137)가 할당되지 않은 메모리가 있다고 판정하면, 로직 플로우(300)는 블럭(315)에서 할당되지 않은 메모리를 처리 유닛(110, 120)에 할당할 수 있다. 메모리 분할 관리자(137)는 처리 유닛(110, 120)에 관련된 하드웨어 레지스터를 리프로그래밍함(reprogramming)으로써 처리 유닛(110, 120)에 사용가능한 할당되지 않은 메모리 공간을 할당할 수 있다. 예를 들어, 처리 유닛(110, 120)은 사용가능한, 어드레스 가능 물리적 메모리의 셋을 정의하는 메모리 어드레스 범위 레지스터 쌍을 유지할 수 있다. 처리 유닛(110, 120)은 시작 어드레스에 대한 제 1 레지스터와 종료 어드레스에 대한 제 2 레지스터를 포함할 수 있다. 물리적인 메모리 분할이 변경되면, 메모리 분할 관리자(137)는 각각의 영향받는 처리 유닛(110, 120)에 새로운 값을 기록할 수 있다. 일 실시예에서, 새로운 값이 기록된 후, 처리 유닛(110, 120)은 처리 유닛(110, 120) 상에서 실행되는 소프트웨어 요소에 의해 처리되는 이러한 레지스터에 대한 변경의 인터럽트 통지(interrupt notification)를 수신할 수 있다. 소프트웨어 요소는 유효한 어드레스 가능 메모리 공간에 관해 국지적으로(locally) 유지되는 정보를 업데이트할 수 있다. 대안적인 실시예에서, 새로운 값이 기록된 후, 메모리 분할 관리자(137)는 레지스터를 업데이트하고, 소프트웨어 관리자를 통해 영향받은 처리 유닛(110, 120) 상의 소프트웨어 요소에 통지할 수 있다. 또 다른 대안적인 실시예에서, 소프트웨어 요소는 사용가능한 메모리 공간을 유지할 책임이 있고 메모리 공간 할당이 변경되었는지 판정하기 위해 주기적으로 하드웨어 레지스터를 폴링(poll)할 수 있다.
로직 플로우(300)는 블럭(320)에서 할당된 메모리의 양과 위치로 응답할 수 있다. 메모리 분할 관리자(137)는 요청 대상에 처리 유닛(110, 120)에 할당된 메모리 공간의 양으로 응답을 송신할 수 있다. 일 실시예에서, 메모리 분할 관리자(137)는 요청 대상에 비동기적으로 응답을 송신할 수 있다. 메모리 분할 관리자(137)가 공유된 물리적 메모리가 할당되지 않은 메모리 공간을 포함한다고 판정함에 따라, 메모리 분할 관리자(137)는 할당되지 않은 메모리 공간의 전부 또는 일부를 처리 유닛(110, 120)에 할당할 수 있다. 예를 들어, 메모리 분할 관리자(137)는 시스템 개체를 실행하기 위해 처리 유닛(110, 120)에 필요한 최소량의 메모리 공간을 할당할 수 있다. 메모리 분할 관리자(137)에 의해 할당되는 양은 사용자에 의해 요청되고/되거나 시스템 개체를 실행하기에 충분한 양과 동일하다.
대안적으로, 메모리 분할 관리자(137)에 의해 할당된 양은 요청된 양보다 적고/적거나 시스템 개체를 실행하기에 불충분한 양일 수 있다. 메모리 분할 관리자(137)는 다른 처리 유닛으로부터 메모리를 요청할 수 있다. 예를 들어, 메모리 분할 관리자(137)는 할당되지 않은 물리적 메모리 공간이 없다고 판정할 수 있다. 추가적인 메모리가 요구됨에 따라, 로직 플로우(300)는 블럭(335)에서 더 적은 메모리를 사용하는 적어도 하나의 다른 처리 유닛에 요청을 송신할 수 있다. 일 실시예에서, 메모리 분할 관리자(137)는 비동기적 요청을 송신할 수 있다.
선택적인 실시예에서, 로직 플로우(300)는 블럭(325)에서 적어도 하나의 다른 처리 유닛이 그 처리 유닛에 대한 임계량보다 추가 메모리를 현재 사용하는지 판정할 수 있다. 메모리 분할 관리자(137)는 다른 처리 유닛이 그 처리 유닛의 임계량 또는 최소량보다 많은 메모리 공간을 사용 및/또는 할당되었는지 판정할 수 있다. 예를 들어, 메모리 분할 관리자(137)는 처리 유닛에 할당된 공유된 물리적 메모리의 메모리 공간 임계치를 배정할 수 있다. 대안적으로, 임계량은 시스템(100)의 사용자에 의해 배정될 수 있다. 또 다른 대안적인 예시에서, 임계량은 운영체제 또는 애플리케이션 특정 프로파일에 의해 배정될 수 있다. 임계량에 기초하여, 메모리 분할 관리자(137)는 그래픽 처리 유닛(110)과 같은 처리 유닛에 임계량을 초과하는 메모리 공간이 현재 할당되었는지 판정할 수 있다. 결과적으로, 메모리 분할 관리자(137)는 그래픽 처리 유닛(110)에 더 적은 메모리를 사용하도록 요청할 수 있다. 메모리 분할 관리자는 그래픽 처리 유닛(110)에 할당된 메모리 공간을 특정량으로 줄일 것을 요청할 수 있다. 실시예는 상기 예시에 한정되는 것은 아니다.
로직 플로우(300)는 블럭(330)에서 사용가능한 메모리 공간이 없다는 응답을 송신할 수 있다. 예를 들어, 시스템 개체(130)는 추가 메모리 공간 요청을 송신했을 수 있다. 메모리 분할 관리자(137)는 블럭(310)에서 할당되지 않은 메모리 공간이 없거나 할당되지 않는 메모리 공간이 충분하지 않다고 판정할 수 있다. 메모리 분할 관리자(137)는 블럭(325)에서 임계량을 초과하여 사용하는 처리 유닛이 현재 없다고 판정할 수 있다. 결과적으로, 메모리 분할 관리자(137)는 요청에 대해 처리 유닛에 할당할 사용가능한 메모리 공간이 없다고 응답할 수 있다.
로직 플로우(300)는 블럭(335)에서 메모리 공간량을 줄이기 위해서 적어도 하나의 다른 처리 유닛에 비동기적 요청을 송신할 수 있다. 메모리 분할 관리자(137)는 모든 공유된 물리적 메모리(125)가 할당되었다는 블럭(310)에서의 판정에 기초하여 적어도 하나의 다른 처리 유닛에 더 적은 메모리 공간을 사용하도록 비동기적 요청을 송신할 수 있다. 선택적으로, 메모리 분할 관리자(137)는 처리 유닛이 임계량을 초과하여 사용하고 있다는 판정에 기초하여 더 적은 메모리 공간을 사용하도록 처리 유닛에 비동기적 요청을 송신할 수 있다.
로직 플로우(300)는 블럭(340)에서 현재 사용가능한 메모리 공간이 없지만 메모리 공간이 사용가능하게 될 것이라는 응답을 송신할 수 있다. 메모리 분할 관리자(137)는 메모리 공간이 처리 유닛(110, 120)에 할당될 수 있다고 판정되는 경우 요청 대상에 콜백(callback)을 형성할 수 있다. 예를 들어, 메모리 분할 관리자(137)는 처리 유닛의 추가 메모리 공간에 대한 요청을 초기화한 시스템 개체(130)에 응답을 송신할 수 있다. 메모리 분할 관리자(137)는 현재 사용가능한 메모리 공간이 없다고 응답할 수 있지만, 메모리 분할 관리자(137)는 시스템 개체(130)에 언제 메모리 공간이 사용가능해 질지 및/또는 메모리 공간이 사용가능해 질지에 대한 메시지를 비동기적으로 송신할 것이다.
로직 플로우(300)는 블럭(345)에서 적어도 하나의 다른 처리 유닛이 공유된 물리적 메모리 내에 사용가능한 메모리 공간을 만들 수 있는가를 판정할 수 있다. 만약 다른 처리 유닛이 공유된 물리적 메모리(125) 내에 사용가능한 메모리 공간을 만들 수 있다면, 로직 플로우(300)는 블럭(320)에서 할당된 메모리 공간의 양으로 응답할 것이다. 응답은 요청 대상에 메모리 분할 관리자(137)가 처리 유닛(110, 120)에 사용가능한 메모리 공간을 할당한다고 알려줄 수 있다. 새로이 할당된 메모리로 인해, 시스템 개체(130)는 처리 유닛(110, 120) 상에서 실행될 수 있다.
대안적으로, 처리 유닛(110, 120)이 공유된 물리적 메모리 내에 사용가능한 메모리 공간을 만들 수 없으면, 로직 플로우(300)는 블럭(330)에서 사용가능한 메모리 공간이 없다고 응답할 수 있다. 예를 들어, 어떤 처리 유닛(110, 120)도 그 최소 임계량을 초과하여 사용할 수 없다. 이러한 경우에, 시스템은 하나 이상의 처리 유닛이 추가 메모리를 사용하는 이점을 누릴 수 있음에도 불구하고 모든 메모리가 완전히 활용되는 최적의 조건으로 실행될 수 있다.
도 4는 처리 유닛(110, 120)에 할당된 메모리 양이 본 발명의 실시예에 따라 감소되는 로직 플로우(400)의 일 실시예를 도시한다. 로직 플로우(400)는 사용가능한 메모리 공간을 만드는 처리 유닛을 도시한다. 로직 플로우(400)는 여기에 설명되는 하나 이상의 실시예에 의해 실행되는 일부 또는 모든 동작의 표현일 수 있다.
도 4에 도시된 실시예에서, 로직 플로우(400)는 블럭(405)에서 재할당된 메모리 공간량을 결정할 수 있다. 메모리 분할 관리자(137)는 처리 유닛으로부터 수신된 요청에 기초하여 메모리 공간량을 결정할 수 있다. 메모리 분할 관리자(137)는 어떤 처리 유닛에서 언제 할당된 메모리의 결정된 양을 감소해야하는지 식별할 수 있다. 예를 들어, 메모리 분할 관리자(137)는 언제 처리 유닛이 공유된 물리적 메모리(125)의 최소 임계량보다 많은 양을 할당받아야 하는지 식별할 수 있다. 다른 실시예에서, 공유된 물리적 메모리(125)는 추가 메모리에 대한 요청을 수신하고, 애플리케이션 프로파일 또는 사용자 요청에 기초하여 특정 처리 유닛에 할당된 메모리 공간량이 감소되어야하는지 결정할 수 있다.
로직 플로우(400)는 블럭(410)에서 처리 유닛에 의해 활용되는 메모리 공간 감소 요청을 송신할 수 있다. 메모리 분할 관리자(137)는 처리 유닛에 요청을 송신할 수 있다. 대안적으로, 메모리 분할 관리자(137)는 처리 유닛을 관리하는 개체에 요청을 송신할 수 있다. 예를 들어, 만약 메모리 분할 관리자(137)가 그래픽 처리 유닛(110)에 공유된 물리적 메모리(125) 내에서 그에 할당된 메모리 공간을 감소시키도록 요청한다면, 메모리 분할 관리자(137)는 요청을 그래픽 처리 유닛(110)을 관리하는 그래픽 드라이버 또는 운영체제에 송신할 수 있다. 대안적으로, 만약 메모리 분할 관리자(137)가 중앙 처리 유닛(120)에 공유된 물리적 메모리(125) 내에서 그에 할당된 메모리 공간을 감소시키도록 요청한다면, 메모리 분할 관리자(137)는 요청을 중앙 처리 유닛(120)을 관리하는 운영체제에 송신할 수 있다.
메모리 분할 관리자(137)로부터 송신된 요청은 처리 유닛에 할당된 메모리 공간이 감소되어야 할 양을 포함할 수 있다. 일 실시예에서, 메모리 분할 관리자(137)는 처리 유닛(110, 120)에 그 메모리 공간 활용을 도 3의 시스템 개체에 의해 필요한 전체량까지 감소시키도록 요청할 수 있다. 다른 실시예에서, 메모리 분할 관리자(137)는 도 3에서 요청된 메모리 공간의 전체양보다 적은 양을 요청할 수 있다. 예를 들어, 메모리 분할 관리자(137)는 할당되지 않은 메모리 공간으로부터의 일부 메모리 공간을 할당할 수 있다. 대안적으로, 메모리 분할 관리자(137)는 다른 처리 유닛으로부터의 메모리 공간을 할당할 수 있다.
로직 플로우(400)는 블럭(415)에서 처리 유닛(110, 120)에 할당된 메모리 공간이 감소될 것이라는 응답을 수신할 수 있다. 메모리 분할 관리자(137)는 처리 유닛(110, 120)을 관리하는 개체가 공유된 물리적 메모리(125) 내에서 처리 유닛에 할당된 메모리 공간량을 비동기적으로 감소시킬 것이라는 응답을 수신할 수 있다. 처리 유닛(110, 120)을 관리하는 개체는 메모리 공간을 공유된 물리적 메모리(125) 내의 처리 유닛에 할당된 부분(126, 127)의 결정된 양까지 비동기적으로 감소시킬 수 있다.
물리적 메모리 내의 처리 유닛 부분에 사용 가능한 메모리 공간이 충분하지 않은 경우에, 메모리 공간은 도 5에서 논의되는 바와 같이 사용가능하게 될 수 있다. 공유된 물리적 메모리의 처리 유닛의 부분(126, 127) 내에 사용가능한 메모리 공간이 일단 존재하면, 처리 유닛(110, 120)은 메모리 분할 관리자(137)에 공유된 물리적 메모리(125)를 확보하도록 하는 요청을 송신할 수 있다.
로직 플로우(400)는 블럭(420)에서 메모리 공간의 결정된 양을 확보하도록 하는 요청을 수신할 수 있다. 메모리 분할 관리자(137)는 처리 유닛을 관리하는 개체가 요청된 메모리 공간량을 사용가능하게 만든 후 메모리 공간을 확보하도록 하는 요청을 수신할 수 있다. 메모리 분할 관리자(137)는 공유된 물리적 메모리(125)를 재할당하기 위해 사용가능한 메모리 공간을 확보하는 확보 요청을 수신할 수 있다.
로직 플로우(400)는 블럭(425)에서 결정된 메모리 공간량을 확보할 수 있다. 메모리 분할 관리자(137)는 제 2 처리 유닛에 할당된 메모리 공간의 메모리 자원을 제 1 처리 유닛에 할당된 채로 남아있을 사용가능한 메모리 공간에 복사함으로써 결정된 메모리 공간량을 확보할 수 있다. 메모리 자원은 메모 공간 내의 정보 및/또는 메모리 어레이일 수 있다. 제 2 처리 유닛에 할당될 메모리 공간은 메모리 분할 관리자에 의해 요청된 제 1 처리 유닛에 할당된 결정된 메모리 공간량일 수 있다. 결정된 메모리 공간량 내의 메모리 자원은 제 1 처리 유닛에 할당된 채로 남아있을 사용가능한 메모리 공간에 복사될 수 있다. 이러한 재배치는 제 2 처리 유닛에 할당되도록 결정된 메모리 공간량 내의 사용가능한 메모리 공간을 찾을 수 있다.
예를 들어, 시스템 초기화 시에, 0 내지 100MB는 제 1 처리 유닛에 할당되고 100 내지 200MB는 제 2 처리 유닛에 할당될 수 있다. 메모리 분할 관리자는 20MB의 제 1 처리 유닛의 메모리 공간을 제 2 처리 유닛에 재할당하는 요청을 송신할 수 있다. 제 1 처리 유닛은 공유된 물리적 메모리(125)의 제 1 처리 유닛의 부분 내에 사용가능한 메모리를 만들 수 있다. 제 1 처리 유닛의 관리 개체에 의해 사용가능하게된 메모리 공간은 처리 유닛에 할당된 메모리 공간 전체에 걸쳐 위치할 수 있다. 예를 들어, 사용가능해진 20MB의 메모리 공간은 메모리의 0 내지 100MB에 걸쳐 위치할 수 있다. 그러나, 제 1 처리 유닛에서 제 2 처리 유닛으로 20MB의 메모리 공간을 재할당하기 위해, 제 1 처리 유닛 내의 메모리 공간은 제 2 처리 유닛의 메모리 공간에 인접할 필요가 있다. 따라서, 제 1 처리 유닛에서 제 2 처리 유닛으로 20MB를 할당하기 위해서는 80 내지 100MB가 인접한다. 메모리 분할 관리자(137)는 80 내지 100MB 내의 메모리 자원을 0 내지 80MB의 사용가능한 메모리 공간에 복사함으로써 제 1 처리 유닛에 할당된 메모리 공간을 확보할 수 있다.
다른 실시예에서, 메모리 분할 관리자(137)는 물리적인 페이지를 리맵핑(remapping)하여 결정된 메모리 공간량을 확보할 수 있다. 즉, 다른 처리 유닛에 재할당될 메모리 공간 내의 물리적 페이지가 리맵핑된다. 가상 메모리 내의 물리적 공간의 리맵핑은 처리 유닛이 종종 페이징 구조(paging structure)를 통해 가상 주소와 같은 소프트웨어에 의해 사용되는 메모리 주소를 매핑하기 위해 가상 주소 공간을 사용하기 때문에, 하드웨어에 의해 사용되는 실제 메모리 컨텐츠를 배치하기 위한 물리적 주소로 복사하는 것을 불가능하게 한다. 예를 들어, 가상 주소0x50000는 페이지 테이블에 의해 물리적 주소 0xfe804200로 변환된다. 시스템이 가상 머신으로서 실행되는 운영체제로 가상화되는 경우에, 변환의 추가적 레벨이 존재한다. 가상 머신에 의해 보여지는 물리적 주소는 하드웨어에 의해 사용되는 실제 물리적 주소와 일치할 필요가 없다. 변환의 추가적 레이어는 가상 메모리 관리자에 의해 유지된다. 메모리 분할 관리자(137)가 가상 메모리 관리자 내에서 동작하거나 가상 메모리 관리자와 통신할 수 있다면, 메모리 분할 관리자(137)는 가상 머신으로 하여금 0Xfe804200의 물리적 메모리 참조가 0Xfe804200와 상이한 물리적 페이지를 포인트하도록 할 수 있다. 따라서, 처리 유닛이 인접한 메모리 영역을 갖기 위해서 물리적 주소 0Xfe804200가 필요한 경우에, 메모리 분할 관리자(137)는 가상 메모리 관리자의 일부로서 처리 유닛이 물리적 주소 0xfe804200가 사용가능하다는 것을 인지하도록 허용할 수 있고, 이러한 주소는 실제로 어떤 다른 사용가능한 물리적 페이지로 변환된다.
로직 플로우(400)는 블럭(430)에서 확보된 메모리 공간을 재할당할 수 있다. 일단 메모리 분할 관리자(137)가 메모리 공간을 확보하면, 공유된 물리적 메모리(125)는 동적으로 재분할될 수 있다. 메모리 분할 관리자(137)는 결정된 메모리 공간을 다른 처리 유닛에 실행시간 동안 동적으로 할당할 수 있다. 일 실시예에서, 하드웨어 범위 레지스터는 상기 논의된 바와 같이 업데이트될 수 있다. 레지스터는 처리 유닛 간의 액세스 보호를 강화하도록 사용될 수 있다. 가상 메모리 관리자가 상기 논의된 리맵핑을 하는 경우에, 처리 유닛은 전체 물리적 메모리 공간에 대한 전체 범위의 액세스를 가지며, 보안 제어가 가상 메모리 관리자 또는 다른 메커니즘에 의해 강화될 수 있다.
도 5는 메모리 분할 관리자와 처리 유닛 사이의 통신의 일 실시예를 도시한다. 도 5에서, 메모리 분할 관리자(137)는 그래픽 처리 유닛(110)에 할당된 메모리를 감소하기 위해서 그래픽 드라이버(140)와 통신할 수 있다. 그래픽 드라이버(140)는 그래픽 처리 유닛(110)을 관리할 수 있다. 본 명세서의 실시예는 이러한 예시에 한정되는 것은 아니다.
메모리 분할 관리자(137)는 그래픽 드라이버(140)에 그래픽 처리 유닛(110)에 의해 활용되는 메모리 공간을 감소하는 요청(510)을 송신할 수 있다. 그래픽 드라이버(140)는 공유된 물리적 메모리(125) 내의 그래픽 처리 유닛(110)에 할당된 메모리 공간을 감소하는 요청(510)을 수신할 수 있다. 요청은 메모리 공간이 감소되어야 할 양을 포함할 수 있다.
그래픽 드라이버(140)는 메모리 분할 관리자(137)에 그래픽 처리 유닛(110)에 할당된 메모리 공간이 감소될 것임을 표시하는 응답을 할 수 있다. 그래픽 드라이버(140)는 그래픽 처리 유닛(140)에 언제 그래픽 처리 유닛(110)이 현재 작업을 종료할 것인지 결정하는 요청(520)을 송신할 수 있다.
그래픽 처리 유닛(110)은 릴리즈(released)될 필요가 있는 공유된 물리적 메모리(125)의 그래픽 처리 유닛 부분(126)이 더 이상 활성화되지 않을 때까지, 예를 들어, 더 이상 사용되지 않을 때까지 대기할 수 있다. 그래픽 처리 유닛(110)은 시스템(100)이 동기화된 것을 확인하기 위해서 메모리 공간을 감소하기 전에 작업이 완료될 때까지 대기할 수 있다. 동기화를 확인함으로써, 처리 유닛(1210, 120)에 할당된 메모리 공간의 감소는 오류 없이 처리될 수 있다. 결과적으로, 모든 작업이 오류 및/또는 시스템(100)의 동결 없이 완료될 수 있다. 예를 들어, 그래픽 드라이버(140)는 공유된 물리적 메모리(125)의 그래픽 처리 유닛 부분(126)이 감소되기 전에 그래픽 처리 유닛(110)에 의해 수신된 현재 프레임이 모든 활성화된 렌더링 컨텍스트(rendering context)를 렌더링 완료할 때까지 대기할 수 있다.
일단 그래픽 처리 유닛(110)이 작업을 완료하면, 그래픽 처리 유닛(110)은 그래픽 드라이버(140)에 현재 작업이 완료되었다는 통지(525)를 송신할 수 있다. 그래픽 드라이버(140)는 현재 그래픽 처리 유닛(110)에 할당된 공유된 물리적 메모리(125)의 그래픽 처리 유닛 부분(126) 내의 요청된 메모리 공간량을 사용가능하게 만들 수 있다. 메모리 공간은 메모리 자원을 사용되지 않도록 하거나, 자기 또는 하드 디스크와 같은, 그러나 이에 제한되는 것은 아닌, 비휘발성 장기 저장소에 메모리 자원을 복사하거나 메모리 자원을 페이징함으로써 사용가능하게 될 수 있다. 메모리 자원은 메모리 공간 내의 정보 및/또는 메모리 어레이일 수 있다. 예컨대, 그래픽 처리 유닛(110)은 더 이상 사용되지 않고/않거나 더 이상 필요 없는 물리적 메모리 내의 메모리 자원이나 메모리 어레이를 삭제함으로써 메모리 공간을 사용가능하게 만들 수 있다. 대안적인 예시에서, 그래픽 처리 유닛(110)은 메모리 자원을 자기 디스크에 페이징할 수 있다.
일단 메모리 공간이 사용가능하게 되면, 그래픽 드라이버(140)는 메모리 분할 관리자(137)에 그래픽 드라이버(140)에 의해 사용가능하게 된 메모리 공간을 확보하는 요청을 송신할 수 있다. 메모리 분할 관리자는 메모리 공간을 확보하고 공유된 물리적 메모리(125)를 재분할할 수 있다. 메모리 분할 관리자는 요청된 메모리 공간을 확보하고 요청된 메모리 공간량은 도 4에서 논의된 다른 처리 유닛에 할당될 수 있다.
재분할 후에, 그래픽 드라이버(140)는 메모리 공간을 사용가능하게 하기 위해 변위된(displaced) 임의의 메모리 자원을 재배치(535)할 수 있다. 그래픽 드라이버(140)는 메모리 자원을 기존의 방법에 따라 그래픽 처리 유닛(110)에 할당된 메모리 공간에 복사되도록 관리할 수 있다.
도 6은 공유된 물리적 메모리를 동적으로 재분할하는 일 실시예를 도시한다. 공유된 물리적 메모리(601)의 초기 재분할에서, 제 1 처리 유닛에 할당된 메모리 공간은 공유된 물리적 메모리의 제 1 킬로바이트 셋(606)이고, 제 2 처리 유닛에 할당된 메모리 공간은 공유된 물리적 메모리의 제 2 킬로바이트 셋(608)일 수 있다. 예컨대, 제 1 처리 유닛은 중앙 처리 유닛(120)이고, 제 2 처리 유닛은 그래픽 처리 유닛(110)일 수 있다. 본 명세서의 실시예는 이러한 예시에 한정되는 것은 아니다.
공유된 물리적 메모리(602)에서, 메모리 분할 관리자(137)는 중앙 처리 유닛(120)에 대한 추가적인 메모리 요청을 수신할 수 있다. 메모리 분할 관리자(137)는 그래픽 처리 유닛(110)에 할당될 메모리 공간량을 결정할 수 있다. 메모리 분할 관리자(137)는 현재 중앙 처리 유닛(120)에 할당된 제 1 메모리 공간(606)에서 그래픽 처리 유닛(110)으로 재할당될 양을 요청할 수 있다. 공유된 물리적 메모리(602)는 중앙 처리 유닛(120)에 할당된 메모리 공간(606)의 새로이 원하는 분할을 도시한다. 그래픽 처리 유닛(110)은 메모리 공간(608) 할당받을 수 있고 또한 새로이 메모리 공간(615)을 할당받을 수 있다. 공유된 물리적 메모리(602)는 공유된 물리적 메모리의 중앙 처리 유닛 부분(127)으로부터 공유된 물리적 메모리(125)의 그래픽 처리 유닛 부분(126)으로 재할당될 메모리 양(615)을 도시한다. 예컨대, 제 1 메모리 공간(606)의 128MB가 중앙 처리 유닛(120)에서 그래픽 처리 유닛(110)으로 재할당될 수 있다.
공유된 물리적 메모리(603)에서, 중앙 처리 유닛(120)에 할당된 메모리 공간(606)의 물리적 자원이 중앙 처리 유닛(120)에 필요한 메모리 공간량을 줄이기 위해서 가상 메모리에 복사될 수 있다. 일 실시예에서, 중앙 처리 유닛(120)에 할당된 메모리 공간(606)의 물리적 자원은 메모리 어레이, 메모리 정보 및/또는 메모리 컨텐츠를 포함할 수 있다. 공유된 물리적 메모리(125)의 중앙 처리 유닛 부분(127)의 메모리 공간은 그래픽 드라이버(140) 또는 운영체제와 같은 시스템 개체(130)와 같은, 그러나 이제 제한되는 것은 아닌, 중앙 처리 유닛(120)을 관리하는 개체에 의해 사용가능해질 수 있다. 중앙 처리 유닛(120)을 관리하는 개체는 중앙 처리 유닛 부분(127)의 메모리 자원을 중앙 처리 유닛 부분(127)의 메모리 자원이 그래픽 처리 유닛(110)에 재할당되기에 충분한 메모리 공간을 가질 때까지 자기 또는 하드 디스크와 같은, 그러나 이제 제한되는 것은 아닌, 비휘발성 장기 저장소 상의 페이징된 메모리에 복사할 수 있다. 일 실시예에서, 중앙 처리 유닛(120)을 관리하는 개체는 중앙 처리 유닛 부분(127)의 메모리 자원을 중앙 처리 유닛(120)에 접근 가능한 임의 유형의 백업 저장소 장치에 복사할 수 있다. 비휘발성 장기 저장소 또는 백업 저장 장치는 공유된 물리적 메모리(125)보다 크지만 느린 처리 속도를 가질 수 있다.
처리 유닛이 인접한 메모리 공간을 사용하므로, 중앙 처리 유닛(120) 내의 사용가능해진 메모리 공간은 그래픽 처리 유닛(110)에 할당된 메모리 공간에 인접한 메모리 공간(615)으로 만들어질 수 있다. 공유된 물리적 메모리(604)에서, 메모리 분할 관리자(137)는 그래픽 처리 유닛(110)에 할당될 메모리 공간(615)의 메모리 자원을 중앙 처리 유닛(120)에 할당된 채로 남아있을 사용가능한 메모리 공간(606)에 복사할 수 있다. 예컨대, 그래픽 처리 유닛(110)에 재할당될 메모리 공간(615)의 메모리 페이지(620)의 메모리 자원은 중앙 처리 유닛(120)에 할당된 채로 남아있을 메모리 공간(606) 내의 사용가능한 메모리 페이지(610)에 복사될 수 있다. 메모리 페이지(620)의 메모리 자원을 중앙 처리 유닛(120)에 할당된 채로 남아있을 사용가능한 메모리 페이지(610)에 복사함으로써, 그래픽 처리 유닛 부분(126)에 인접한 메모리 공간(615)이 사용가능하게 된다. 일단 메모리 공간(615)이 사용가능한 메모리 공간이 되면, 그래픽 처리 유닛 부분(126)의 일부로 재할당될 수 있다.
공유된 물리적 메모리(605)에서, 그래픽 처리 유닛(110)을 위해 요청된 메모리 공간(615)은 실행시간 동안에 그래픽 처리 유닛(110)에 동적으로 재할당될 수 있다. 메모리 분할 관리자(137)는 실행시간 동안에 메모리 공간(615)을 그래픽 처리 유닛(110)에 동적으로 할당할 수 있다. 그래픽 처리 유닛(110) 및/또는 그래픽 처리 유닛(110)을 관리하는 개체가 요청된 메모리 공간(615)을 포함하는 공유된 물리적 메모리의 그래픽 처리 유닛 부분(126)을 제어할 수 있다.
메모리 공간(615)이 실행시간 동안에 그래픽 처리 유닛(110)에 동적으로 재할당된 후, 비휘발성 장기 저장소 또는 자기 디스크와 같은, 그러나 이에 제한되는 것은 아닌, 저장 장치상의 페이징된 메모리에 저장된 중앙 처리 유닛(120)의 임의의 메모리 자원은 공유된 물리적 메모리(125)의 중장 처리 유닛 부분(127)으로 다시 전송될 수 있다. 일 실시예에서, 메모리 자원은 메모리 자원이 원래 배치되었던 곳과 상이한 중앙 처리 유닛 부분(127)의 메모리 공간의 일부 또는 영역으로 다시 전송될 수 있다. 중앙 처리 유닛(120)을 관리하는 개체는 메모리 자원을 중앙 처리 유닛(120)에 할당된 메모리 공간(606)의 여러 메모리 페이지에 현재의 방법에 따른 온-디맨드(on-demand) 페이징을 통하여 복사할 수 있다. 일 실시예에서, 운영체제와 같은 시스템 개체가 현재의 방법에 따른 메모리 공간을 관리할 수 있다. 현재의 방법은 프로그램의 자원 요청시에 메모리 자원을 주문형 디스크를 위한 물리적 메모리에 복사하는 것을 포함할 수 있으나 이에 한정되는 것은 아니다.
도 7은 본 개시의 도 1의 시스템을 구현하기에 적합한 시스템(700)의 일 실시예를 도시한다. 실시예에서, 시스템(700)은 개인용 컴퓨터(PC), 랩탑 컴퓨터, 울트라 랩탑 컴퓨터, 태블릿, 터치패드, 포터블 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, PDA(personal digital assistant), 휴대 전화, 휴대 전화/PDA 복합기, 텔레비전, 스마트 기기(예를 들어, 스마트 폰, 사마트 태블릿 또는 스마트 텔레비전), 무선 인터넷 장치(MID), 메세징 장치, 데이터 통신 장치 등으로 통합될 수 있다.
다양한 실시예가 하드웨어 요소, 소프트웨어 요소 및 양자의 조합을 사용하여 구현될 수 있다. 하드웨어 요소의 예시로서 프로세서, 마이크로프로세서, 회로, 회로 소자(예를 들어, 트랜지스터, 저항, 캐패시터, 인덕터 등), 집적 회로, 애플리케이션 특정 집적 회로(ASIC), PLD(programmable logic devices), 디지털 신호 프로세서(DSP), FPGA(field programmable gate array), 로직 게이트, 저항, 반도체 장치, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프웨어 요소의 예시로서 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 펑션, 메소드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그래밍 인터페이스, 인스트럭션 셋, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소 및/또는 소프트웨어 요소를 사용할것인지의 결정은 원하는 연산율, 전력 레벨, 내열성, 프로세싱 사이클 버짓(processing cycle budget), 입력 데이터율, 출력 데이터율, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약요소에 따라 다양하다.
실시예에서, 시스템(700)은 디스플레이(720)에 연결된 플랫폼(702)을 포함한다. 플랫폼(702)은 컨텐츠 서비스 장치(들)(730), 컨텐츠 전달 장치(들)(740) 또는 다른 유사한 컨텐츠 소스와 같은 컨텐츠 장치로부터 컨텐츠를 수신할 수 있다. 네비게이션 제어기(750)는, 예를 들어, 플랫폼(702) 및/또는 디스플레이(720)와 상호작용하는데 사용될 수 있는 하나 이상의 네비게이션 요소를 포함할 수 있다. 이러한 요소의 각각은 하기에서 더욱 상세히 설명된다.
실시예에서, 플랫폼(702)은 칩셋(705), 프로세서(들)(710), 메모리(712), 저장소(714), 그래픽 서브시스템(715), 애플리케이션(716) 및 또는 라디오(718)의 임의의 조합을 포함할 수 있다. 칩셋(705)은 프로세서(710), 메모리(712), 저장소(714), 그래픽 서브시스템(715), 애플리케이션(716) 및 또는 라디오(718) 간의 상호통신을 제공할 수 있다. 예를 들어, 칩셋(705)은 저장소(714)와 상호통신 가능한 저장소 어댑터(미도시)를 포함할 수 있다.
프로세서(들)(710)는 CISC(Complex Instruction Set Computer) 또는 RISC(Reduced Instruction Set Computer) 프로세서, 프로세서와 호환가능한 x86 명령 셋, 멀티 코어 또는 임의의 다른 마이크로프로세서 또는 중앙 처리 유닛으로 구현될 수 있다. 실시예에서, 프로세서(들)(710)는 듀얼-코어 프로세서(들) 및 듀얼-코어 모바일 프로세서(들)를 포함할 수 있다.
메모리(712)는 RAM(Random Access Memory), DRAM(Dynamic Random Access Memory) 또는 SRAM(Static RAM)과 같은 휘발성 메모리 장치로 구현될 수 있으나 이에 제한되는 것은 아니다.
저장소(714)는 자기 디스크 드라이브, 광학 디스크 드라이브, 테이프 드라이브, 내부 저장 장치, 부착된 저장 장치, 플래시 메모리, 배터리 백업 SDRAM(synchronous DRAM) 및/또는 네트워크 접근가능 저장 장치와 같은 비휘발성 저장 장치로서 구현될 수 있으나 이에 제한되는 것은 아니다. 실시예에서, 저장소(714)는, 예를 들어, 다수의 하드 드라이브가 포함되는 경우 귀중한 디지털 매체의 보호가 강화된 저장 성능을 향상시킬 수 있는 기술을 포함할 수 있다.
그래픽 서브시스템(715)은 디스플레이될 정지 또는 비디오 영상의 처리를 수행할 수 있다. 그래픽 서브시스템(715)은, 예를 들어, 그래픽 처리 유닛(GPU)(110) 또는 시각 처리 유닛(VPU)일 수 있다. 아날로그 또는 디지털 인터페이스가 그래픽 서브시스템(715)과 디스플레이(720)를 통신가능하도록 연결하는데 사용될 수 있다. 예컨대, 인터페이스는 HDMI(High-Definition Multimedia Interface), 디스플레이 포트(DisplayPort), 무선 HDMI 및/또는 무선 HD 상응 기술 중 임의의 것일 수 있다. 그래픽 서브시스템(715)은 프로세서(710) 또는 칩셋(705)에 통합될 수 있다. 그래픽 서브시스템(715)은 칩셋(705)과 통신가능하게 연결된 독립형 카드일 수 있다.
본 명세서의 그래픽 및/또는 비디오 처리 기술은 다양한 하드웨어 구조로 구현될 수 있다. 예컨대, 그래픽 및/또는 비디오 기능은 칩셋 내에 집적될 수 있다. 대안적으로, 이산 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 실시예로서, 그래픽 및/또는 비디오 기능은 멀티-코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수 있다. 또 다른 실시예에서, 기능은 소비자 가전 장치에 구현될 수 있다.
라디오(718)는 다양한 적정 무선 통신 기술을 사용하여 신호를 송신 및 수신할 수 있는 하나 이상의 라디오를 포함할 수 있다. 예컨대, 라디오는 라디오 수신기를 포함할 수 있다. 그러한 기술은 하나 이상의 무선 네트워크를 통한 통신에 관계될 수 있다. 예시적인 무선 네트워크는 WANs(wireless local area networks), WPANs(wireless personal area networks), WMANs(wireless metropolitan area network), 셀룰러 네트워크 및 위성 네트워크를 포함할 수 있으나 이에 제한되는 것은 아니다. 이러한 네트워크를 통한 통신에서, 라디오(718)는 하나 이상의 임의 버전의 적용 표준에 따라 동작할 수 있다.
실시예에서, 디스플레이(720)는 임의의 텔레비전 유형의 모니터 또는 디스플레이를 포함할 수 있다. 디스플레이(720)는, 예를 들어, 컴퓨터 디스플레이 스크린, 터치스크린, 비디오 모니터, 텔레비전 유사 장치 및/또는 텔레비전을 포함할 수 있다. 디스플레이(720)는 디지털 및/또는 아날로그일 수 있다. 실시예에서, 디스플레이(720)는 홀로그래픽 디스플레이일 수 있다. 또한, 디스플레이(720)는 시각 투사(visual projection)를 수신할 수 있는 투명한 표면일 수 있다. 그러한 투사는 다양한 형식의 정보, 영상 및/또는 객체를 전달할 수 있다. 예를 들어, 그러한 투사는 MAR(mobile augmented reality) 애플리케이션을 위한 시각적 오버레이(overlay)일 수 있다. 하나 이상의 소프트웨어 애플리케이션(716)의 제어 하에, 플랫폼(702)은 디스플레이(720)에 사용자 인터페이스(722)를 표시할 수 있다.
실시예에서, 컨텐츠 서비스 장치(들)(730)는, 예를 들어, 임의의 국내, 국제 및/또는 독립 서비스에 호스팅되어 인터넷을 통해 플랫폼(702)에 접근가능할 수 있다. 컨텐츠 서비스 장치(들)(730)는 플랫폼(702) 및/또는 디스플레이(720)에 연결될 수 있다. 플랫폼(702) 및/또는 컨텐츠 서비스 장치(들)(730)는 네트워크(760)로 및 네트워크(760)로부터 매체 정보를 통신(예를 들어, 송신 및/또는 수신)하기 위해 네트워크(760)에 연결될 수 있다. 컨텐츠 전달 장치(들)(740)는 또한 플랫폼(702) 및/또는 디스플레이(720)에 연결될 수 있다.
실시예에서, 컨텐츠 서비스 장치(들)(730)는 유선 텔레비전 박스, 개인용 컴퓨터, 네트워크, 전화기, 인터넷 활성 장치 또는 디지털 정보 및/또는 컨텐츠를 전달할 수 있는 기기 및 네트워크(760)를 통해 또는 직접 컨텐츠 제공자와 플랫폼(702) 및/또는 디스플레이(720)와 단방향으로 또는 양방향으로 통신할 수 있는 임의의 다른 유사 장치를 포함할 수 있다. 컨텐츠는 네트워크(760)를 통해 시스템(700)의 요소 중 임의의 하나와 컨텐츠 제공자 간에 단방향으로 및/또는 양방향으로 통신할 수 있는 것이 이해될 것이다. 컨텐츠의 예시로서, 예를 들어, 비디오, 음악, 의료 및 게임 정보 등을 포함하는 임의의 매체 정보를 포함할 수 있다.
컨텐츠 서비스 장치(들)(730)는 매체 정보, 디지털 정보 및/또는 다른 컨텐츠를 포함하는 유선 텔레비전 프로그램과 같은 컨텐츠를 수신한다. 컨텐츠 제공자의 예시로서 임의의 유선 또는 위성 텔레비전 또는 라디오 또는 인터넷 컨텐츠 제공자를 포함할 수 있다. 제시된 예시는 발명의 실시예를 한정하도록 의도되지 않는다.
실시예에서, 플랫폼(702)은 하나 이상의 네비게이션 요소를 구비한 네비게이션 제어기(750)로부터 제어 신호를 수신할 수 있다. 제어기(750)의 네비게이션 요소는, 예를 들어, 사용자 인터페이스(722)와 상호작용하기 위해 사용될 수 있다. 실시예에서, 네비게이션 제어기(750)는 사용자로 하여금 공간(예를 들어, 연속적이고 다차원적인) 데이터를 컴퓨터에 입력하는 것을 허용하는 컴퓨터 하드웨어 요소(특히 휴먼 인터페이스 장치)일 수 있는 포인팅 장치일 수 있다. GUI(graphical user interfaces), 텔레비전 및 모니터와 같은 많은 시스템이 사용자로 하여금 신체 동작을 사용하여 컴퓨터 또는 텔레비전에 데이터를 제어 및 제공하는 것을 허용한다.
제어기(750)의 네비게이션 요소의 움직임은 디스플레이에 표시된 포인터, 커서, 포커스 링 또는 다른 시각적 표시자의 움직임에 의해 디스플레이(예를 들어, 디스플레이(720)) 상에 에코된다(echoed). 예컨대, 소프트웨어(716)의 제어 하에, 네비게이션 제어기(750)에 위치하는 네비게이션 요소가, 예를 들어, 사용자 인터페이스(722) 상의 가상 네비게이션 요소에 매핑될 수 있다. 실시예에서, 제어기(750)는 별개의 요소가 아니라 플랫폼(702) 및/또는 디스플레이(720)에 통합될 수 있다. 그러나, 실시예는 본 명세서에 제시된 요소 또는 맥락에 한정되지 않는다.
실시예에서, 드라이버(미도시)는 사용자로 하여금, 예컨대, 활성화되면 시스템 초기화 후에 버튼을 터치함으로써 텔레비전과 같은 플랫폼을 즉각적으로 켜고 끌 수 있게 할 수 있는 기술을 포함할 수 있다. 프로그램 로직이 플랫폼(702)으로 하여금 플랫폼이 꺼지면 컨텐츠를 매체 어댑터 또는 다른 컨텐츠 서비스 장치(들)(730) 또는 컨텐츠 전달 장치(들)(740)로 스트리밍하도록 허용할 수 있다. 부가적으로, 칩셋(705)은, 예를 들어, 5.1 서라운드 음향 오디오 및/또는 고선명 6.1 서라운드 음양 오디오를 위한 하드웨어 및/또는 소프트웨어 지원을 포함할 수 있다. 드라이버는 통합된 그래픽 플랫폼을 위한 그래픽 드라이버를 포함할 수 있다. 실시예에서, 그래픽 드라이버는 PCI(eripheral component interconnect) 익스프레스 그래픽 카드를 포함할 수 있다.
다양한 실시예에서, 시스템(700)에 도시된 임의의 하나 이상의 요소는 통합될 수 있다. 예컨대, 플랫폼(702)과 컨텐츠 서비스 장치(들)(730)가 통합될 수 있거나, 예컨대, 플랫폼(702), 컨텐츠 서비스 장치(들)(730) 및 컨텐츠 전달 장치(들)(740)가 통합될 수 있다. 다양한 실시예에서, 플랫폼(702)과 디스플레이(720)는 통합된 유닛일 수 있다. 예를 들어, 디스플레이(720)와 컨텐츠 서비스 장치(들)(730)가 통합되거나 디스플레이(720)와 컨텐츠 전달 장치(들)(740)가 통합될 수 있다. 이러한 예시는 발명을 한정하도록 의도되지 않는다.
다양한 실시예에서, 시스템(700)은 무선 시스템, 유선 시스템 또는 양자의 조합으로 구현될 수 있다. 무선 시스템으로 구현되는 경우, 시스템(700)은 하나 이상의 안테나, 송신기, 수신기, 송수신기, 증폭기, 필터, 제어 로직 등과 같은 공유된 무선 매체를 통해 통신하기에 적합한 요소 및 인터페이스를 포함할 수 있다. 공유된 무선 매체의 예시로서 RF 스펙트럼 등과 같은 무선 스펙트럼의 일부분을 포함할 수 있다. 유선 시스템으로 구현되는 경우, 시스템(700)은 입출력(I/O) 어댑터, I/O 어댑터를 해당 유선 통신 매체에 연결하는 물리적 커넥터, 네트워크 인터페이스 카드(NIC), 디스크 제어기, 비디오 제어기, 오디오 제어기 등과 같은 유선 통신 매체를 통해 통신하기에 적합한 요소 및 인터페이스를 포함할 수 있다. 유선 통신 매체의 예시로서 와이어, 케이블, 금속 리드, PCB(printed circuit board), 백플레인(backplane), 스위치 패브릭(switch fabric), 반도체 재료, 연선(twisted-pair wire), 동축 케이블(co-axial cable), 광섬유 등을 포함할 수 있다.
플랫폼(702)은 정보 통신을 위한 하나 이상의 논리적 또는 물리적 채널을 설정할 수 있다. 정보는 매체 정보 및 제어 정보를 포함할 수 있다. 매체 정보는 사용자를 위한 컨텐츠를 나타내는 임의의 데이터를 지칭한다. 컨텐츠의 예시로서, 예컨대, 음성 대화, 화상회의, 스트리밍 영상, 전자 메일("이메일") 메시지, 음성 메일 메시지, 문자숫자 기호, 도표, 영상, 비디오, 텍스트 등의 데이터를 포함할 수 있다. 음성 대화의 데이터는 예컨대 발화 정보, 무음 구간, 배경 잡음, 안정 잡음(comfort noise), 톤(tone) 등을 포함할 수 있다. 제어 정보는 명령(commands), 명령(instructions), 자동화 시스템의 제어어를 나타내는 임의의 데이터를 지칭할 수 있다. 예컨대, 제어 정보는 시스템을 통해 매체 정보를 라우팅하거나 노드에 매체 정보를 소정의 방식으로 처리하도록 명령하는데 사용될 수 있다. 그러나, 실시예는 도 7에 도시되거나 설명된 요소 및 맥락에 한정되지 않는다.
도 8은 상기 설명된 다양한 실시예를 구현하기에 적합한 예시적인 통신 구조(800)의 블럭도를 도시한다. 통신 구조(800)는 송신기, 수신기, 송수신기, 라디오, 네트워크 인터페이스, 기저대역 프로세서(baseband processor), 안테나, 증폭기, 필터 등과 같은 다양한 일반적인 통신 요소를 포함한다. 그러나, 실시예는 통신 구조(800)에 의한 구현에 한정되지 않는다.
도 8에 도시된 바와 같이, 통신 구조(800)는 하나 이상의 클라이언트(802)와 서버(804)를 포함한다. 클라이언트(802)와 서버(804)는 각각 하나 이상의 클라이언트 데이터 저장소(808)와 서버 데이터 저장소(810)와 동작가능하게 연결되며, 클라이언트 데이터 저장소(808)와 서버 데이터 저장소(810)는 각각 클라이언트(802) 및 서버(804)에 쿠키 및/또는 관련 상황 정보(contextual information)와 같은 국지적인 정보를 저장할 수 있다.
클라이언트(802)와 서버(804)는 통신 프레임워크(806)를 사용하여 서로 정보를 통신할 수 있다. 통신 프레임워크(806)는 임의의 잘 알려진 통신 기술 및 프로토콜을 구현할 수 있다. 통신 프레임워크(806)는 패킷-교환 네트워크(예를 들어, 인터넷과 같은 공용 네트워크, 기업 인트라넷과 같은 사설 네트워크 등), 회로-교환 네트워크(예를 들어, 공중 전화망) 또는 (적합한 게이트웨이와 변환기를 갖춘) 패킷-교환 네트워크와 회로-교환 네트워크의 조합으로서 구현될 수 있다.
다양한 실시예가 하드웨어 요소, 소프트웨어 요소 및 이들의 조합으로 구현될 수 있다. 하드웨어 요소의 예시로서 프로세서, 마이크로프로세서, 회로, 회로 소자(예를 들어, 트랜지스터, 저항, 캐패시터, 인덕터 등), 집적 회로, 애플리케이션 특정 집적 회로(ASIC), PLD(programmable logic devices), 디지털 신호 프로세서(DSP), FPGA(field programmable gate array), 로직 게이트, 저항, 반도체 장치, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프웨어 요소의 예시로서 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 펑션, 메소드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그래밍 인터페이스, 인스트럭션 셋, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소 및/또는 소프트웨어 요소를 사용할것인지의 결정은 원하는 연산율, 전력 레벨, 내열성, 프로세싱 사이클 버짓(processing cycle budget), 입력 데이터율, 출력 데이터율, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약요소에 따라 다양하다.
일부 실시예는 그 파생물과 더불어 "일 실시예" 또는 "하나의 실시예"라는 표현을 사용하여 설명될 수 있다. 이러한 용어는 실시예와 관련되어 기술된 특정한 특징, 구조 또는 특성이 본 발명의 적어도 일 실시예에 포함됨을 의미한다. 명세서의 다양한 위치에서의 "일 실시예에서" 라는 문구의 출현이, 모두 동일한 실시예를 지칭할 필요는 없다. 또한, 일부 실시예는 그 파생물과 더불어 "연결된" 및 "접합된"이라는 표현을 사용하여 설명될 수 있다. 이러한 용어는 서로의 동의어로서 의도될 필요는 없다. 예컨대, 일부 실시예는 둘 이상의 요소가 서로 물리적 또는 전기적으로 적접 맞닿아 있음을 나타내도록 "접합된" 및/또는 "연결된"의 용어를 사용하여 설명될 수 있다. 그러나, "연결된"이라는 용어는 또한 둘 이상의 요소가 서로 직접 맞닿아 있지는 않으나 서로 협력하여 동작하거나 상호동작함을 의미할 수 있다.
독자는 요약서를 통해 기술적 개시의 속성을 빠르게 확인할 수 있다. 요약서는 청구항의 범위 또는 의미를 제한하도록 해석되는데 사용되어서는 안 된다. 또한, 상기 상세한 설명에서, 다양한 요소들이 개시를 간소화하기 위해 단일 실시예로서 같이 그룹화될 수 있다. 이러한 개시의 방법은 청구된 실시예가 각각의 청구항에 명확히 제시된 것보다 더 많은 요소를 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 하기 청구항이 반영하듯이, 발명의 주제는 개시된 단일 실시예의 모든 요소보다 적은 요소를 포함할 수 있다. 따라서, 하기 청구항은 상세한 설명에 원용되어 청구항 그 자체가 개별적인 실시예가 될 수 있다. 첨부된 청구항에서, "포함하는(including)" 및 "in which"라는 용어는 각각 "포함하는(comprising)" 및 "wherein"의 보통 영어의 등가물로서 사용된다. 아울러, "제 1," "제 2" 및 "제 3" 등의 용어는 단지 라벨로서 사용되는 것일 뿐, 그 대상의 번호 순서를 제안하도록 의도된 것은 아니다.
일부 실시예에서, 컴퓨터 구현 방법은 시스템 초기화 동안 제 1 처리 유닛으로 할당되는 물리적 메모리의 메모리 공간량을 결정하는 단계와, 결정된 메모리 공간량을 확보하는 단계와, 확보된 메모리 공간량을 제 2 처리 유닛에 실행시간 동안에 재할당하는 단계를 포함할 수 있다. 메모리 공간을 제 2 처리 유닛으로 할당하라는 요청이 수신될 수 있다. 메모리가 할당되지 않은 메모리 공간을 포함하는지 판정될 수 있다. 제 1 처리 유닛이 사용가능한 메모리 공간을 포함하는지 판정될 수 있다. 제 1 처리 유닛에 할당된 메모리 공간이 임계치를 초과하는지 판정될 수 있다. 결정된 메모리 공간량의 물리적 페이지가 리매핑(remapping)될 수 있다. 메모리 자원이 제 1 처리 유닛 내에 사용가능한 메모리 공간을 만들기 위해 비휘발성 장기 저장소로 복사될 수 있다. 결정된 메모리 공간량 내의 메모리 자원이 제 1 처리 유닛에 할당된 사용가능한 메모리 공간에 복사될 수 있다. 물리적 메모리를 실행시간 동안에 재할당하는 요청이 물리적 메모리의 할당을 위한 사용자 생성 프로파일, 애플리케이션 특정 프로파일 또는 시스템 개체에 의한 동적 결정에 기초하여 수신될 수 있다. 일 실시예에서, 시스템 개체는 운영체제일 수 있다.
일 실시예에서, 장치는 복수의 처리 유닛과, 제 1 처리 유닛에 할당되는 제 1 메모리 공간과 제 2 처리 유닛에 할당되는 제 2 메모리 공간을 포함하는 물리적 메모리를 재분할하도록 처리 유닛 중 적어도 하나 상에서 동작하는 메모리 분할 관리자를 포함할 수 있다. 메모리 분할 관리자는 제 2 처리 유닛에 재할당될 제 1 메모리 공간의 양을 결정하고, 제 1 메모리 공간의 결정된 양을 제 2 처리 유닛에 실행시간 동안에 재할당하도록 동작할 수 있다. 메모리 분할 관리자는 제 1 메모리 공간의 결정된 양을 확보하도록 동작할 수 있다. 메모리 분할 관리자는 메모리 공간을 제 2 처리 유닛에 할당하는 요청을 수신하도록 동작할 수 있다. 메모리 분할 관리자는 제 1 처리 유닛이 사용가능한 메모리 공간을 포함하는지 판정하도록 동작할 수 있다. 상기 메모리 분할 관리자는 가상 머신 모니터에서 실행될 수 있다. 메모리 분할 관리자는 중앙 처리 유닛, 그래픽 드라이버, 로직 회로 또는 운영 체제 중 하나에서 실행될 수 있다. 메모리 분할 관리자는 제 1 처리 유닛에 할당된 제 1 메모리 공간이 임계치를 초과하는지 판정하도록 동작할 수 있다. 메모리 할당 관리자는 메모리 공간의 결정된 양으로부터 물리적 페이지를 리매핑하도록 동작할 수 있다. 장치는 복수의 처리 유닛 중 적어도 하나와 동작가능하게 연결되는 디지털 디스플레이를 포함할 수 있다.
다양한 실시예에서, 적어도 하나의 머신 판독가능 매체는 컴퓨팅 장치에서 실행되는 것에 응답하여 컴퓨팅 장치로 하여금 제 2 처리 유닛에 재할당될 제 1 처리 유닛에 할당된 물리적 메모리 내의 메모리 공간량을 요청하고, 실행시간 동안에 제 1 처리 유닛에 할당된 물리적 메모리 내에 요청된 메모리 공간량을 확보하고, 확보된 메모리 공간을 제 2 처리 유닛에 재할당하도록 하는 복수의 명령을 포함할 수 있다. 적어도 하나의 머신 판독가능 매체는 컴퓨팅 장치에서 실행되는 것에 응답하여 컴퓨팅 장치로 하여금 물리적 메모리가 할당되지 않은 메모리 공간을 포함하는지 판정하도록 하는 복수의 명령을 포함할 수 있다. 적어도 하나의 머신 판독가능 매체는 컴퓨팅 장치에서 실행되는 것에 응답하여 컴퓨팅 장치로 하여금 제 1 처리 유닛에 할당된 메모리 공간이 임계치를 초과하는지 판정하도록 하는 복수의 명령을 포함할 수 있다. 적어도 하나의 머신 판독가능 매체는 컴퓨팅 장치에서 실행되는 것에 응답하여 컴퓨팅 장치로 하여금 결정된 메모리 공간량의 페이지를 리매핑하도록 하는 복수의 명령을 포함할 수 있다. 적어도 하나의 머신 판독가능 매체는 컴퓨팅 장치에서 실행되는 것에 응답하여 컴퓨팅 장치로 하여금 제 1 처리 유닛 내에 사용가능한 메모리 공간을 만들기 위해 메모리 자원을 비휘발성 장기 저장소로 복사하도록 하는 복수의 명령을 포함할 수 있다.
일부 실시예에서, 시스템은 복수의 처리 유닛과, 복수의 처리 유닛과 동작가능하게 연결된 디지털 디스플레이와, 복수의 처리 유닛 중 적어도 하나 상에서, 제 1 처리 유닛에 할당되는 물리적 메모리 공간 내의 제 1 메모리 공간과 제 2 처리 유닛에 할당되는 물리적 메모리 공간 내의 제 2 메모리 공간을 재분할하는 메모리 분할 관리자를 포함할 수 있다. 메모리 분할 관리자는 제 2 처리 유닛에 할당되는 제 1 메모리 공간의 양을 결정하고, 제 1 메모리 공간의 결정된 양을 확보하고, 제 1 메모리 공간의 확보된 양을 제 2 처리 유닛에 재할당하도록 동작할 수 있다. 시스템은 복수의 처리 유닛의 적어도 하나와 동작가능하게 연결된 라디오 수신기를 포함할 수 있다. 메모리 분할 관리자는 제 1 처리 유닛 내에 사용가능한 메모리 공간을 만들기 위해서 메모리 자원을 비휘발성 장기 메모리에 복사하도록 동작할 수 있다. 메모리 분할 관리자는 제 1 메모리 공간의 결정된 양 내의 메모리 자원을 제 1 처리 유닛에 할당된 사용가능한 메모리 공간에 복사하도록 동작할 수 있다. 시스템은 물리적 메모리 공간 내에 제 3 메모리 공간을 포함할 수 있고, 메모리 분할 관리자는 제 3 처리 유닛에 할당되는 제 3 메모리 공간의 양을 결정하고, 제 3 메모리 공간의 결정된 양을 확보하고, 제 3 메모리 공간의 확보된 양을 상기 제 3 처리 유닛에 재할당하도록 동작할 수 있다.
상기 설명된 바는 개시된 구조의 예시를 포함한다. 모든 요소 및/또는 방법의 가능한 조합을 설명하는 것은 물론 불가능하지만, 당업자는 많은 다른 조합 및 치환이 가능하다는 것을 인식할 것이다. 따라서, 새로운 구조는 첨부된 청구항의 사상 및 범위에 속하는 모든 변경, 수정 및 변형을 포괄하도록 의도된다.
Claims (25)
- 메모리를 할당하는 컴퓨터 구현 방법으로서,
시스템 초기화 동안 제 1 처리 유닛으로 할당되는 물리적 메모리의 메모리 공간량을 결정하는 단계와,
상기 결정된 메모리 공간량을 확보하는(consolidating) 단계와,
상기 확보된 메모리 공간량을 제 2 처리 유닛에 실행시간 동안에 재할당하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 제 2 처리 유닛으로 메모리 공간을 할당하는 요청을 수신하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 물리적 메모리가 할당되지 않은 메모리 공간을 포함하는지 판정하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 제 1 처리 유닛이 사용가능한 메모리 공간을 포함하는지 판정하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 제 1 처리 유닛에 할당된 상기 메모리 공간이 임계치를 초과하는지 판정하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 결정된 메모리 공간량으로부터 물리적 페이지(physical pages)를 리맵핑(remapping)하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 제 1 처리 유닛 내에 사용가능한 메모리 공간을 만들기 위해 메모리 자원을 비휘발성 장기 저장소로 복사하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 결정된 메모리 공간량 내의 메모리 자원을 상기 제 1 처리 유닛에 할당된 사용가능한 메모리 공간에 복사하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
상기 물리적 메모리의 할당을 위한 사용자 생성 프로파일에 기초하여 상기 물리적 메모리를 실행시간 동안에 재할당하는 요청을 수신하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
애플리케이션 특정 프로파일에 기초하여 상기 물리적 메모리를 실행시간 동안에 재할당하는 요청을 수신하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 1 항에 있어서,
시스템 개체에 의한 동적 결정에 기초하여 상기 물리적 메모리를 실행시간 동안에 재할당하는 요청을 수신하는 단계를 포함하는
컴퓨터 구현 방법.
- 컴퓨팅 장치 상에서 실행됨에 응답하여 상기 컴퓨팅 장치로 하여금 제 1 항 내지 제 11 항 중 어느 한 항의 방법을 수행하도록 하는 복수의 명령어를 포함하는
적어도 하나의 머신 판독가능 매체.
- 메모리를 할당하는 장치로서,
복수의 처리 유닛과,
제 1 처리 유닛에 할당되는 제 1 메모리 공간과 제 2 처리 유닛에 할당되는 제 2 메모리 공간을 포함하는 물리적 메모리를 재분할하도록 상기 복수의 처리 유닛 중 적어도 하나 상에서 동작하는 메모리 분할 관리자를 포함하고,
상기 메모리 분할 관리자는
상기 제 2 처리 유닛에 재할당될 상기 제 1 메모리 공간의 양을 결정하고,
상기 제 1 메모리 공간의 결정된 양을 상기 제 2 처리 유닛에 실행시간 동안에 재할당하도록 동작하는
메모리 할당 장치.
- 제 13 항에 있어서,
상기 메모리 분할 관리자는 상기 제 1 메모리 공간의 결정된 양을 확보하도록 동작하는
메모리 할당 장치.
- 제 13 항에 있어서,
상기 메모리 분할 관리자는 메모리 공간을 상기 제 2 처리 유닛에 할당하는 요청을 수신하도록 동작하는
메모리 할당 장치.
- 제 13 항에 있어서,
상기 메모리 분할 관리자는 상기 제 1 처리 유닛이 사용가능한 메모리 공간을 포함하는지 판정하도록 동작하는
메모리 할당 장치.
- 제 13 항에 있어서,
상기 메모리 분할 관리자는 가상 머신 모니터에서 실행되는
메모리 할당 장치.
- 제 13 항에 있어서,
상기 메모리 분할 관리자는 중앙 처리 유닛, 그래픽 드라이버, 로직 회로 또는 운영 체제 중 하나에서 실행되는
메모리 할당 장치.
- 제 13 항에 있어서,
상기 메모리 분할 관리자는 상기 제 1 처리 유닛에 할당된 상기 제 1 메모리 공간이 임계치를 초과하는지 판정하도록 동작하는
메모리 할당 장치.
- 제 13 항에 있어서,
상기 메모리 할당 관리자는 상기 제 1 메모리 공간의 결정된 양으로부터 물리적 페이지를 리맵핑하도록 동작하는
메모리 할당 장치.
- 제 13 항에 있어서,
상기 복수의 처리 유닛 중 적어도 하나와 동작가능하게 연결되는 디지털 디스플레이를 포함하는
메모리 할당 장치.
- 메모리를 할당하는 시스템으로서,
복수의 처리 유닛과,
상기 복수의 처리 유닛 중 적어도 하나와 동작가능하게 연결된 디지털 디스플레이와,
상기 복수의 처리 유닛 중 적어도 하나 상에서, 제 1 처리 유닛에 할당되는 물리적 메모리 공간 내의 제 1 메모리 공간과 제 2 처리 유닛에 할당되는 상기 물리적 메모리 공간 내의 제 2 메모리 공간을 재할당하는 메모리 분할 관리자를 포함하고,
상기 메모리 분할 관리자는
상기 제 2 처리 유닛에 할당되는 상기 제 1 메모리 공간의 양을 결정하고,
상기 제 1 메모리 공간의 결정된 양을 확보하고,
상기 제 1 메모리 공간의 확보된 양을 상기 제 2 처리 유닛에 재할당하도록 동작하는
메모리 할당 시스템.
- 제 22 항에 있어서,
상기 복수의 처리 유닛의 적어도 하나와 동작가능하게 연결된 라디오 수신기를 포함하는
메모리 할당 시스템.
- 제 22 항에 있어서,
상기 메모리 분할 관리자는 상기 제 1 메모리 공간의 결정된 양 내의 메모리 자원을 상기 제 1 처리 유닛에 할당된 사용가능한 메모리 공간에 복사하도록 동작하는
메모리 할당 시스템.
- 제 22 항에 있어서,
상기 물리적 메모리 공간 내에 제 3 메모리 공간을 포함하고,
상기 메모리 분할 관리자는
제 3 처리 유닛에 할당되는 상기 제 3 메모리 공간의 양을 결정하고,
상기 제 3 메모리 공간의 결정된 양을 확보하고,
상기 제 3 메모리 공간의 확보된 양을 상기 제 3 처리 유닛에 재할당하도록 동작하는
메모리 할당 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/628,314 US9274839B2 (en) | 2012-09-27 | 2012-09-27 | Techniques for dynamic physical memory partitioning |
US13/628,314 | 2012-09-27 | ||
PCT/US2013/047649 WO2014051781A1 (en) | 2012-09-27 | 2013-06-25 | Techniques for dynamic physical memory partitioning |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150038386A true KR20150038386A (ko) | 2015-04-08 |
KR101690109B1 KR101690109B1 (ko) | 2016-12-27 |
Family
ID=50340103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157004992A KR101690109B1 (ko) | 2012-09-27 | 2013-06-25 | 물리적 메모리의 동적 분할 기술 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9274839B2 (ko) |
JP (1) | JP6009675B2 (ko) |
KR (1) | KR101690109B1 (ko) |
CN (1) | CN104583979B (ko) |
DE (1) | DE112013003745T5 (ko) |
WO (1) | WO2014051781A1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180045557A (ko) * | 2016-10-26 | 2018-05-04 | 한화테크윈 주식회사 | 메모리 장치 |
KR20200045927A (ko) | 2018-10-23 | 2020-05-06 | 울산과학기술원 | 시스템의 메모리 대역폭을 분할하는 방법 및 장치 |
US10949105B2 (en) | 2019-01-31 | 2021-03-16 | SK Hynix Inc. | Data storage device and operating method of the data storage device |
US10990539B2 (en) | 2019-04-03 | 2021-04-27 | SK Hynix Inc. | Controller, memory system including the same, and method of operating memory system |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10229043B2 (en) * | 2013-07-23 | 2019-03-12 | Intel Business Machines Corporation | Requesting memory spaces and resources using a memory controller |
US9582849B2 (en) | 2013-10-28 | 2017-02-28 | Vmware, Inc. | Method and system to virtualize graphic processing services |
US9582482B1 (en) | 2014-07-11 | 2017-02-28 | Google Inc. | Providing an annotation linking related entities in onscreen content |
US9965559B2 (en) | 2014-08-21 | 2018-05-08 | Google Llc | Providing automatic actions for mobile onscreen content |
CN105701019A (zh) * | 2014-11-25 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 一种内存管理方法以及装置 |
US9977730B2 (en) * | 2015-05-08 | 2018-05-22 | Dell Products, Lp | System and method for optimizing system memory and input/output operations memory |
US10970646B2 (en) | 2015-10-01 | 2021-04-06 | Google Llc | Action suggestions for user-selected content |
US10191672B2 (en) * | 2015-10-16 | 2019-01-29 | Google Llc | Asynchronous copying of data within memory |
US10178527B2 (en) | 2015-10-22 | 2019-01-08 | Google Llc | Personalized entity repository |
US10055390B2 (en) | 2015-11-18 | 2018-08-21 | Google Llc | Simulated hyperlinks on a mobile device based on user intent and a centered selection of text |
JP6629999B2 (ja) * | 2016-04-12 | 2020-01-15 | ガードノックス・サイバー・テクノロジーズ・リミテッドGuardKnox Cyber Technologies Ltd. | セキュアロックダウンを実装するように構成された関連装置を有する特別にプログラムされたコンピューティングシステムおよびその使用方法 |
US10535005B1 (en) | 2016-10-26 | 2020-01-14 | Google Llc | Providing contextual actions for mobile onscreen content |
US11237696B2 (en) | 2016-12-19 | 2022-02-01 | Google Llc | Smart assist for repeated actions |
EP3355188B1 (en) | 2017-01-31 | 2021-08-25 | OpenSynergy GmbH | Instrument display on a car dashboard by checking frames of a gui by a realtime os |
US11016665B2 (en) * | 2018-01-23 | 2021-05-25 | Seagate Technology Llc | Event-based dynamic memory allocation in a data storage device |
TWI722269B (zh) * | 2018-01-26 | 2021-03-21 | 和碩聯合科技股份有限公司 | 韌體更新方法及使用此方法的電子裝置 |
KR102504332B1 (ko) | 2018-02-21 | 2023-02-28 | 삼성전자주식회사 | 서로 이격되어 배치되는 범프 어레이들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치 |
US10678705B2 (en) | 2018-09-13 | 2020-06-09 | Qualcomm Incorporated | External paging and swapping for dynamic modules |
US10868950B2 (en) * | 2018-12-12 | 2020-12-15 | Karl Storz Imaging, Inc. | Systems and methods for operating video medical scopes using a virtual camera control unit |
US11899949B2 (en) * | 2020-07-17 | 2024-02-13 | Dish Network Technologies India Private Limited | Methods and systems for dynamic configuration and effective usage for allocating memory in media presentations or like devices |
US11662922B2 (en) * | 2021-10-18 | 2023-05-30 | Hewlett Packard Enterprise Development Lp | Shared storage allocation among data services |
CN114296658B (zh) * | 2021-12-31 | 2024-06-21 | 深圳市兆珑科技有限公司 | 一种存储空间分配方法、装置、终端设备及存储介质 |
CN114385370B (zh) * | 2022-01-18 | 2022-10-25 | 重庆紫光华山智安科技有限公司 | 内存分配方法、系统、设备及介质 |
KR20240063438A (ko) * | 2022-11-03 | 2024-05-13 | 삼성전자주식회사 | 메모리 장치의 메모리 영역을 동적으로 재설정하는 장치 및 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090204718A1 (en) * | 2008-02-08 | 2009-08-13 | Lawton Kevin P | Using memory equivalency across compute clouds for accelerated virtual memory migration and memory de-duplication |
US20110138147A1 (en) * | 2009-09-30 | 2011-06-09 | Jonathan Knowles | Dynamic reallocation of physical memory responsive to virtual machine events |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4511964A (en) * | 1982-11-12 | 1985-04-16 | Hewlett-Packard Company | Dynamic physical memory mapping and management of independent programming environments |
US6950919B2 (en) * | 2003-03-26 | 2005-09-27 | Hewlett-Packard Development Company, L.P. | Computer system with operating system to dynamically adjust the main memory |
US7822105B2 (en) * | 2003-09-02 | 2010-10-26 | Sirf Technology, Inc. | Cross-correlation removal of carrier wave jamming signals |
US7081897B2 (en) * | 2003-12-24 | 2006-07-25 | Intel Corporation | Unified memory organization for power savings |
US7512745B2 (en) * | 2006-04-28 | 2009-03-31 | International Business Machines Corporation | Method for garbage collection in heterogeneous multiprocessor systems |
US8001354B2 (en) * | 2007-04-27 | 2011-08-16 | International Business Machines Corporation | Implementing dynamic physical memory reallocation |
JP2009037403A (ja) * | 2007-08-01 | 2009-02-19 | Fujitsu Ltd | マルチコアプロセッサにおけるコアメモリの有効活用方法 |
US8156492B2 (en) * | 2007-09-07 | 2012-04-10 | Oracle International Corporation | System and method to improve memory usage in virtual machines running as hypervisor guests |
US8145871B2 (en) * | 2008-06-09 | 2012-03-27 | International Business Machines Corporation | Dynamic allocation of virtual real memory for applications based on monitored usage |
US20100161908A1 (en) | 2008-12-18 | 2010-06-24 | Lsi Corporation | Efficient Memory Allocation Across Multiple Accessing Systems |
US9569349B2 (en) * | 2008-12-19 | 2017-02-14 | Ati Technologies Ulc | Method and apparatus for reallocating memory content |
US8542732B1 (en) | 2008-12-23 | 2013-09-24 | Elemental Technologies, Inc. | Video encoder using GPU |
US8032682B2 (en) * | 2009-07-13 | 2011-10-04 | Oracle America, Inc. | System and method for device resource allocation and re-balance |
US8452932B2 (en) | 2010-01-06 | 2013-05-28 | Storsimple, Inc. | System and method for efficiently creating off-site data volume back-ups |
JP2012059152A (ja) * | 2010-09-10 | 2012-03-22 | Internatl Business Mach Corp <Ibm> | データ処理を行うシステムおよびメモリを割り当てる方法 |
US8463980B2 (en) | 2010-09-30 | 2013-06-11 | Microsoft Corporation | Shared memory between child and parent partitions |
US9152573B2 (en) | 2010-11-16 | 2015-10-06 | Vmware, Inc. | Sharing memory pages having regular expressions within a virtual machine |
US9053053B2 (en) | 2010-11-29 | 2015-06-09 | International Business Machines Corporation | Efficiently determining identical pieces of memory used by virtual machines |
US8463981B2 (en) | 2010-12-08 | 2013-06-11 | Hitachi, Ltd. | Storage apparatus having deduplication unit |
US20120159098A1 (en) | 2010-12-17 | 2012-06-21 | Microsoft Corporation | Garbage collection and hotspots relief for a data deduplication chunk store |
JP5664347B2 (ja) * | 2011-03-04 | 2015-02-04 | ソニー株式会社 | 仮想メモリシステム、仮想メモリの制御方法、およびプログラム |
US8566537B2 (en) | 2011-03-29 | 2013-10-22 | Intel Corporation | Method and apparatus to facilitate shared pointers in a heterogeneous platform |
-
2012
- 2012-09-27 US US13/628,314 patent/US9274839B2/en not_active Expired - Fee Related
-
2013
- 2013-06-25 WO PCT/US2013/047649 patent/WO2014051781A1/en active Application Filing
- 2013-06-25 KR KR1020157004992A patent/KR101690109B1/ko active IP Right Grant
- 2013-06-25 DE DE201311003745 patent/DE112013003745T5/de not_active Withdrawn
- 2013-06-25 CN CN201380044690.4A patent/CN104583979B/zh not_active Expired - Fee Related
- 2013-06-25 JP JP2015529805A patent/JP6009675B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090204718A1 (en) * | 2008-02-08 | 2009-08-13 | Lawton Kevin P | Using memory equivalency across compute clouds for accelerated virtual memory migration and memory de-duplication |
US20110138147A1 (en) * | 2009-09-30 | 2011-06-09 | Jonathan Knowles | Dynamic reallocation of physical memory responsive to virtual machine events |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180045557A (ko) * | 2016-10-26 | 2018-05-04 | 한화테크윈 주식회사 | 메모리 장치 |
KR20200045927A (ko) | 2018-10-23 | 2020-05-06 | 울산과학기술원 | 시스템의 메모리 대역폭을 분할하는 방법 및 장치 |
US11163705B2 (en) | 2018-10-23 | 2021-11-02 | Unist(Ulsan National Institute Of Science And Technology | Method and apparatus for partitioning memory bandwidth of system |
US10949105B2 (en) | 2019-01-31 | 2021-03-16 | SK Hynix Inc. | Data storage device and operating method of the data storage device |
US10990539B2 (en) | 2019-04-03 | 2021-04-27 | SK Hynix Inc. | Controller, memory system including the same, and method of operating memory system |
Also Published As
Publication number | Publication date |
---|---|
US9274839B2 (en) | 2016-03-01 |
JP2015530660A (ja) | 2015-10-15 |
CN104583979B (zh) | 2017-10-24 |
JP6009675B2 (ja) | 2016-10-19 |
CN104583979A (zh) | 2015-04-29 |
DE112013003745T5 (de) | 2015-05-13 |
KR101690109B1 (ko) | 2016-12-27 |
WO2014051781A1 (en) | 2014-04-03 |
US20140089626A1 (en) | 2014-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101690109B1 (ko) | 물리적 메모리의 동적 분할 기술 | |
CN106021132B (zh) | 通过统一存储器架构的存储器共享 | |
US9710874B2 (en) | Mid-primitive graphics execution preemption | |
US9811366B2 (en) | Dynamically using system memory as video memory for virtual graphics processing units | |
EP3195128B1 (en) | Memory management in virtualized environment | |
US10558496B2 (en) | Techniques for accessing a graphical processing unit memory by an application | |
CN100570562C (zh) | 显卡、应用该显卡的虚拟机系统及显示处理方法 | |
US20140026137A1 (en) | Performing scheduling operations for graphics hardware | |
US20110285709A1 (en) | Allocating Resources Based On A Performance Statistic | |
GB2525003A (en) | Data Processing Systems | |
CN107077375B (zh) | 用于多操作系统的显示方法、装置和电子设备 | |
US9478000B2 (en) | Sharing non-page aligned memory | |
EP2778916A2 (en) | Memory mapping for a graphics processing unit | |
WO2018103022A1 (zh) | 帧缓存实现方法、装置、电子设备和计算机程序产品 | |
US9697047B2 (en) | Cooperation of hoarding memory allocators in a multi-process system | |
US20190317716A1 (en) | Video display method, electronic device and computer program product thereof | |
US20150212733A1 (en) | Systems and methods for swapping pinned memory buffers | |
CN117742957B (zh) | 内存分配方法、装置、电子设备和存储介质 | |
CN118503189A (zh) | 一种PCIe设备、地址转换缓存模块分配方法以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |